summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaindropsSys <contact@minteck.org>2023-07-14 17:31:22 +0200
committerRaindropsSys <contact@minteck.org>2023-07-14 17:31:22 +0200
commit02fb749366a6c327fbc026efb54f3ac2111de6b8 (patch)
tree493208631f26421dc8cf2834e496af1dbe823f75
parent69df79a457956821add3f5b7bb4b792e73d7686f (diff)
downloadsignal.js-02fb749366a6c327fbc026efb54f3ac2111de6b8.tar.gz
signal.js-02fb749366a6c327fbc026efb54f3ac2111de6b8.tar.bz2
signal.js-02fb749366a6c327fbc026efb54f3ac2111de6b8.zip
Test
-rw-r--r--.gitignore5
-rw-r--r--.gitmodules3
-rw-r--r--.idea/jsLibraryMappings.xml6
-rw-r--r--README.md10
-rw-r--r--ROADMAP.md15
-rw-r--r--build.js13
-rw-r--r--classes/CLIDispatcher.ts8
-rw-r--r--classes/CLIEvent.ts31
-rw-r--r--classes/Client.ts38
-rw-r--r--classes/DM.ts2
-rw-r--r--classes/DMDataMessage.ts19
-rw-r--r--classes/DMMessage.ts1
-rw-r--r--classes/Group.ts116
-rw-r--r--classes/GroupDataMessage.ts19
-rw-r--r--classes/GroupEditor.ts120
-rw-r--r--classes/GroupMessage.ts1
-rw-r--r--classes/GroupPermissions.ts66
-rw-r--r--classes/QuoteBuilder.ts7
-rw-r--r--classes/QuoteMessage.ts5
-rw-r--r--classes/ReactionTarget.ts2
-rw-r--r--classes/ReceivedMessage.ts1
-rw-r--r--classes/SignalAPIError.ts19
-rw-r--r--classes/SignalCLIError.ts (renamed from classes/SignalError.ts)4
-rw-r--r--classes/User.ts112
-rw-r--r--dist/classes/CLIDispatcher.js6
-rw-r--r--dist/classes/CLIDispatcher.js.map2
-rw-r--r--dist/classes/CLIEvent.js32
-rw-r--r--dist/classes/CLIEvent.js.map2
-rw-r--r--dist/classes/Client.d.ts32
-rw-r--r--dist/classes/Client.js4
-rw-r--r--dist/classes/Client.js.map2
-rw-r--r--dist/classes/DM.d.ts2
-rw-r--r--dist/classes/DM.js.map2
-rw-r--r--dist/classes/DMDataMessage.d.ts3
-rw-r--r--dist/classes/DMDataMessage.js16
-rw-r--r--dist/classes/DMDataMessage.js.map2
-rw-r--r--dist/classes/DMMessage.d.ts1
-rw-r--r--dist/classes/DMMessage.js1
-rw-r--r--dist/classes/DMMessage.js.map2
-rw-r--r--dist/classes/Group.d.ts11
-rw-r--r--dist/classes/Group.js62
-rw-r--r--dist/classes/Group.js.map2
-rw-r--r--dist/classes/GroupDataMessage.d.ts3
-rw-r--r--dist/classes/GroupDataMessage.js16
-rw-r--r--dist/classes/GroupDataMessage.js.map2
-rw-r--r--dist/classes/GroupEditor.d.ts30
-rw-r--r--dist/classes/GroupEditor.js68
-rw-r--r--dist/classes/GroupEditor.js.map1
-rw-r--r--dist/classes/GroupMessage.d.ts1
-rw-r--r--dist/classes/GroupMessage.js1
-rw-r--r--dist/classes/GroupMessage.js.map2
-rw-r--r--dist/classes/GroupPermissions.d.ts13
-rw-r--r--dist/classes/GroupPermissions.js51
-rw-r--r--dist/classes/GroupPermissions.js.map1
-rw-r--r--dist/classes/QuoteBuilder.d.ts4
-rw-r--r--dist/classes/QuoteBuilder.js5
-rw-r--r--dist/classes/QuoteBuilder.js.map2
-rw-r--r--dist/classes/QuoteMessage.d.ts3
-rw-r--r--dist/classes/QuoteMessage.js4
-rw-r--r--dist/classes/QuoteMessage.js.map2
-rw-r--r--dist/classes/ReactionTarget.js2
-rw-r--r--dist/classes/ReactionTarget.js.map2
-rw-r--r--dist/classes/ReceivedMessage.d.ts1
-rw-r--r--dist/classes/ReceivedMessage.js.map2
-rw-r--r--dist/classes/SignalAPIError.d.ts4
-rw-r--r--dist/classes/SignalAPIError.js20
-rw-r--r--dist/classes/SignalAPIError.js.map1
-rw-r--r--dist/classes/SignalCLIError.d.ts5
-rw-r--r--dist/classes/SignalCLIError.js15
-rw-r--r--dist/classes/SignalCLIError.js.map1
-rw-r--r--dist/classes/User.d.ts12
-rw-r--r--dist/classes/User.js63
-rw-r--r--dist/classes/User.js.map2
-rw-r--r--dist/enums/ConfigEnvironment.d.ts5
-rw-r--r--dist/enums/ConfigEnvironment.js10
-rw-r--r--dist/enums/ConfigEnvironment.js.map1
-rw-r--r--dist/enums/ConfigTrustLevel.d.ts5
-rw-r--r--dist/enums/ConfigTrustLevel.js10
-rw-r--r--dist/enums/ConfigTrustLevel.js.map1
-rw-r--r--dist/enums/ConfigVerbosity.d.ts6
-rw-r--r--dist/enums/ConfigVerbosity.js11
-rw-r--r--dist/enums/ConfigVerbosity.js.map1
-rw-r--r--dist/enums/GroupLinkStatus.d.ts5
-rw-r--r--dist/enums/GroupLinkStatus.js10
-rw-r--r--dist/enums/GroupLinkStatus.js.map1
-rw-r--r--dist/enums/GroupPermissionLevel.d.ts4
-rw-r--r--dist/enums/GroupPermissionLevel.js9
-rw-r--r--dist/enums/GroupPermissionLevel.js.map1
-rw-r--r--dist/enums/GroupPermissionName.d.ts5
-rw-r--r--dist/enums/GroupPermissionName.js10
-rw-r--r--dist/enums/GroupPermissionName.js.map1
-rw-r--r--dist/enums/UserDataType.d.ts3
-rw-r--r--dist/enums/UserDataType.js3
-rw-r--r--dist/enums/UserDataType.js.map2
-rw-r--r--dist/index.d.ts74
-rw-r--r--dist/index.js123
-rw-r--r--dist/index.js.map2
-rw-r--r--dist/types/IConfig.d.ts25
-rw-r--r--dist/types/IConfig.js20
-rw-r--r--dist/types/IConfig.js.map2
-rw-r--r--enums/ConfigEnvironment.ts5
-rw-r--r--enums/ConfigTrustLevel.ts5
-rw-r--r--enums/ConfigVerbosity.ts6
-rw-r--r--enums/GroupLinkStatus.ts5
-rw-r--r--enums/GroupPermissionLevel.ts4
-rw-r--r--enums/GroupPermissionName.ts5
-rw-r--r--enums/UserDataType.ts3
-rw-r--r--index.ts79
-rw-r--r--indexgen.js26
l---------node_modules/.bin/marked1
l---------node_modules/.bin/prettier1
l---------node_modules/.bin/typedoc1
-rw-r--r--node_modules/.package-lock.json135
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/LICENSE21
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/README.md104
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/converter/models.d.ts7
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/converter/models.js2
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/converter/navigation-builder.d.ts11
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/converter/navigation-builder.js70
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/converter/url-builder.d.ts21
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/converter/url-builder.js337
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/index.d.ts8
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/index.js40
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/models.d.ts53
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/models.js16
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/options/options-reader.d.ts10
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/options/options-reader.js31
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/options/options.d.ts2
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/options/options.js157
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/renderer/renderer.d.ts7
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/renderer/renderer.js94
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/breadcrumbs.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/breadcrumbs.js32
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/comment.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/comment.js29
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/comment.parts.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/comment.parts.js43
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/hierarchy.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/hierarchy.js32
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.identifier.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.identifier.js42
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.js58
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.name.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.name.js28
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.indexsignature.title.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.indexsignature.title.js19
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.inheritance.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.inheritance.js58
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.js41
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.kind-tag.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.kind-tag.js13
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.reference.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.reference.js14
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.reflection.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.reflection.js47
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.signature.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.signature.identifier.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.signature.identifier.js48
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.signature.js50
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.sources.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.sources.js19
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.title.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.title.js20
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.type-declaration.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.type-declaration.js28
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/members.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/members.js65
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/navigation.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/navigation.js15
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/page.header.d.ts4
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/page.header.js81
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/page.title.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/page.title.js17
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.enum-members.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.enum-members.js51
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.parameters.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.parameters.js75
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.properties.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.properties.js71
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.typeparameters.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.typeparameters.js45
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/toc.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/toc.js76
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.array.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.array.js10
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.conditional.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.conditional.js24
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.declaration.d.ts4
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.declaration.js31
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.function.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.function.js21
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.index-access.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.index-access.js14
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.inferred.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.inferred.js8
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.intersection.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.intersection.js9
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.intrinsic.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.intrinsic.js8
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.literal.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.literal.js10
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.query.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.query.js8
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.reference.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.reference.js29
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.reflection.d.ts4
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.reflection.js19
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.some.d.ts4
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.some.js55
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.tuple.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.tuple.js9
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.type-operator.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.type-operator.js8
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.union.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.union.js9
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.unknown.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.unknown.js8
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/resources.d.ts57
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/resources.js108
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/member.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/member.js19
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/project.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/project.js60
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/readme.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/readme.js14
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/reflection.d.ts3
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/reflection.js22
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/support/constants.d.ts4
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/support/constants.js21
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/support/els.d.ts11
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/support/els.js42
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/support/helpers.d.ts7
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/support/helpers.js46
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/support/utils.d.ts8
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/support/utils.js60
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/theme-render-context.d.ts22
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/theme-render-context.js76
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/theme.d.ts14
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/dist/theme.js76
-rw-r--r--node_modules/@terwer/typedoc-plugin-markdown/package.json49
-rw-r--r--node_modules/ansi-sequence-parser/CHANGELOG.md13
-rw-r--r--node_modules/ansi-sequence-parser/README.md133
-rw-r--r--node_modules/ansi-sequence-parser/dist/index.cjs298
-rw-r--r--node_modules/ansi-sequence-parser/dist/index.d.ts60
-rw-r--r--node_modules/ansi-sequence-parser/dist/index.js267
-rw-r--r--node_modules/ansi-sequence-parser/package.json42
-rw-r--r--node_modules/balanced-match/.github/FUNDING.yml2
-rw-r--r--node_modules/balanced-match/LICENSE.md21
-rw-r--r--node_modules/balanced-match/README.md97
-rw-r--r--node_modules/balanced-match/index.js62
-rw-r--r--node_modules/balanced-match/package.json48
-rw-r--r--node_modules/brace-expansion/.github/FUNDING.yml2
-rw-r--r--node_modules/brace-expansion/LICENSE21
-rw-r--r--node_modules/brace-expansion/README.md135
-rw-r--r--node_modules/brace-expansion/index.js203
-rw-r--r--node_modules/brace-expansion/package.json46
-rw-r--r--node_modules/jsonc-parser/CHANGELOG.md72
-rw-r--r--node_modules/jsonc-parser/LICENSE.md21
-rw-r--r--node_modules/jsonc-parser/README.md361
-rw-r--r--node_modules/jsonc-parser/SECURITY.md41
-rw-r--r--node_modules/jsonc-parser/lib/esm/impl/edit.js185
-rw-r--r--node_modules/jsonc-parser/lib/esm/impl/format.js251
-rw-r--r--node_modules/jsonc-parser/lib/esm/impl/parser.js632
-rw-r--r--node_modules/jsonc-parser/lib/esm/impl/scanner.js443
-rw-r--r--node_modules/jsonc-parser/lib/esm/main.d.ts349
-rw-r--r--node_modules/jsonc-parser/lib/esm/main.js178
-rw-r--r--node_modules/jsonc-parser/lib/umd/impl/edit.js201
-rw-r--r--node_modules/jsonc-parser/lib/umd/impl/format.js265
-rw-r--r--node_modules/jsonc-parser/lib/umd/impl/parser.js655
-rw-r--r--node_modules/jsonc-parser/lib/umd/impl/scanner.js456
-rw-r--r--node_modules/jsonc-parser/lib/umd/main.d.ts349
-rw-r--r--node_modules/jsonc-parser/lib/umd/main.js194
-rw-r--r--node_modules/jsonc-parser/package.json40
-rw-r--r--node_modules/lunr/.eslintrc.json86
-rw-r--r--node_modules/lunr/.npmignore3
-rw-r--r--node_modules/lunr/.travis.yml14
-rw-r--r--node_modules/lunr/CHANGELOG.md270
-rw-r--r--node_modules/lunr/CNAME1
-rw-r--r--node_modules/lunr/CONTRIBUTING.md20
-rw-r--r--node_modules/lunr/LICENSE19
-rw-r--r--node_modules/lunr/Makefile90
-rw-r--r--node_modules/lunr/README.md78
-rw-r--r--node_modules/lunr/VERSION1
-rw-r--r--node_modules/lunr/bower.json11
-rw-r--r--node_modules/lunr/build/bower.json.template11
-rw-r--r--node_modules/lunr/build/component.json.template9
-rw-r--r--node_modules/lunr/build/jsdoc.conf.json11
-rw-r--r--node_modules/lunr/build/package.json.template30
-rwxr-xr-xnode_modules/lunr/build/release.sh79
-rw-r--r--node_modules/lunr/build/wrapper_end29
-rw-r--r--node_modules/lunr/build/wrapper_start8
-rw-r--r--node_modules/lunr/component.json9
-rw-r--r--node_modules/lunr/index.html305
-rw-r--r--node_modules/lunr/lib/builder.js360
-rw-r--r--node_modules/lunr/lib/field_ref.js28
-rw-r--r--node_modules/lunr/lib/idf.js21
-rw-r--r--node_modules/lunr/lib/index.js492
-rw-r--r--node_modules/lunr/lib/lunr.js49
-rw-r--r--node_modules/lunr/lib/match_data.js107
-rw-r--r--node_modules/lunr/lib/pipeline.js267
-rw-r--r--node_modules/lunr/lib/query.js188
-rw-r--r--node_modules/lunr/lib/query_lexer.js209
-rw-r--r--node_modules/lunr/lib/query_parse_error.js8
-rw-r--r--node_modules/lunr/lib/query_parser.js255
-rw-r--r--node_modules/lunr/lib/set.js133
-rw-r--r--node_modules/lunr/lib/stemmer.js223
-rw-r--r--node_modules/lunr/lib/stop_word_filter.js165
-rw-r--r--node_modules/lunr/lib/token.js58
-rw-r--r--node_modules/lunr/lib/token_set.js415
-rw-r--r--node_modules/lunr/lib/token_set_builder.js69
-rw-r--r--node_modules/lunr/lib/tokenizer.js76
-rw-r--r--node_modules/lunr/lib/trimmer.js27
-rw-r--r--node_modules/lunr/lib/utils.js92
-rw-r--r--node_modules/lunr/lib/vector.js196
-rw-r--r--node_modules/lunr/lunr.js3475
-rw-r--r--node_modules/lunr/lunr.min.js6
-rw-r--r--node_modules/lunr/notes47
-rw-r--r--node_modules/lunr/package.json30
-rw-r--r--node_modules/lunr/perf/builder_perf.js30
-rw-r--r--node_modules/lunr/perf/perf_helper.js26
-rw-r--r--node_modules/lunr/perf/pipeline_perf.js43
-rw-r--r--node_modules/lunr/perf/query_parser_perf.js24
-rw-r--r--node_modules/lunr/perf/search_perf.js72
-rw-r--r--node_modules/lunr/perf/stemmer_perf.js7
-rw-r--r--node_modules/lunr/perf/token_set_perf.js42
-rw-r--r--node_modules/lunr/perf/tokenizer_perf.js7
-rw-r--r--node_modules/lunr/perf/vector_perf.js31
-rw-r--r--node_modules/lunr/styles.css133
-rw-r--r--node_modules/lunr/test/builder_test.js225
-rw-r--r--node_modules/lunr/test/env/chai.js6142
-rw-r--r--node_modules/lunr/test/env/index.mustache43
-rw-r--r--node_modules/lunr/test/env/mocha.css326
-rw-r--r--node_modules/lunr/test/env/mocha.js15174
-rw-r--r--node_modules/lunr/test/field_ref_test.js35
-rw-r--r--node_modules/lunr/test/fixtures/stemming_vocab.json1
-rw-r--r--node_modules/lunr/test/index.html58
-rw-r--r--node_modules/lunr/test/match_data_test.js41
-rw-r--r--node_modules/lunr/test/pipeline_test.js280
-rw-r--r--node_modules/lunr/test/query_lexer_test.js573
-rw-r--r--node_modules/lunr/test/query_parser_test.js552
-rw-r--r--node_modules/lunr/test/query_test.js244
-rw-r--r--node_modules/lunr/test/search_test.js1100
-rw-r--r--node_modules/lunr/test/serialization_test.js53
-rw-r--r--node_modules/lunr/test/set_test.js147
-rw-r--r--node_modules/lunr/test/stemmer_test.js26
-rw-r--r--node_modules/lunr/test/stop_word_filter_test.js30
-rw-r--r--node_modules/lunr/test/test_helper.js13
-rw-r--r--node_modules/lunr/test/token_set_test.js327
-rw-r--r--node_modules/lunr/test/token_test.js60
-rw-r--r--node_modules/lunr/test/tokenizer_test.js114
-rw-r--r--node_modules/lunr/test/trimmer_test.js29
-rw-r--r--node_modules/lunr/test/utils_test.js77
-rw-r--r--node_modules/lunr/test/vector_test.js154
-rw-r--r--node_modules/marked/LICENSE.md44
-rw-r--r--node_modules/marked/README.md99
-rwxr-xr-xnode_modules/marked/bin/marked.js217
-rw-r--r--node_modules/marked/lib/marked.cjs2811
-rw-r--r--node_modules/marked/lib/marked.esm.js2887
-rw-r--r--node_modules/marked/lib/marked.umd.js2817
-rw-r--r--node_modules/marked/man/marked.192
-rw-r--r--node_modules/marked/man/marked.1.txt86
-rw-r--r--node_modules/marked/marked.min.js6
-rw-r--r--node_modules/marked/package.json93
-rw-r--r--node_modules/marked/src/Hooks.js26
-rw-r--r--node_modules/marked/src/Lexer.js503
-rw-r--r--node_modules/marked/src/Parser.js286
-rw-r--r--node_modules/marked/src/Renderer.js203
-rw-r--r--node_modules/marked/src/Slugger.js55
-rw-r--r--node_modules/marked/src/TextRenderer.js42
-rw-r--r--node_modules/marked/src/Tokenizer.js794
-rw-r--r--node_modules/marked/src/defaults.js30
-rw-r--r--node_modules/marked/src/helpers.js259
-rw-r--r--node_modules/marked/src/marked.js416
-rw-r--r--node_modules/marked/src/rules.js309
-rw-r--r--node_modules/minimatch/LICENSE15
-rw-r--r--node_modules/minimatch/README.md454
-rw-r--r--node_modules/minimatch/dist/cjs/assert-valid-pattern.d.ts2
-rw-r--r--node_modules/minimatch/dist/cjs/assert-valid-pattern.d.ts.map1
-rw-r--r--node_modules/minimatch/dist/cjs/assert-valid-pattern.js14
-rw-r--r--node_modules/minimatch/dist/cjs/assert-valid-pattern.js.map1
-rw-r--r--node_modules/minimatch/dist/cjs/ast.d.ts19
-rw-r--r--node_modules/minimatch/dist/cjs/ast.d.ts.map1
-rw-r--r--node_modules/minimatch/dist/cjs/ast.js589
-rw-r--r--node_modules/minimatch/dist/cjs/ast.js.map1
-rw-r--r--node_modules/minimatch/dist/cjs/brace-expressions.d.ts8
-rw-r--r--node_modules/minimatch/dist/cjs/brace-expressions.d.ts.map1
-rw-r--r--node_modules/minimatch/dist/cjs/brace-expressions.js152
-rw-r--r--node_modules/minimatch/dist/cjs/brace-expressions.js.map1
-rw-r--r--node_modules/minimatch/dist/cjs/escape.d.ts12
-rw-r--r--node_modules/minimatch/dist/cjs/escape.d.ts.map1
-rw-r--r--node_modules/minimatch/dist/cjs/escape.js22
-rw-r--r--node_modules/minimatch/dist/cjs/escape.js.map1
-rw-r--r--node_modules/minimatch/dist/cjs/index.d.ts94
-rw-r--r--node_modules/minimatch/dist/cjs/index.d.ts.map1
-rw-r--r--node_modules/minimatch/dist/cjs/index.js1011
-rw-r--r--node_modules/minimatch/dist/cjs/index.js.map1
-rw-r--r--node_modules/minimatch/dist/cjs/package.json3
-rw-r--r--node_modules/minimatch/dist/cjs/unescape.d.ts17
-rw-r--r--node_modules/minimatch/dist/cjs/unescape.d.ts.map1
-rw-r--r--node_modules/minimatch/dist/cjs/unescape.js24
-rw-r--r--node_modules/minimatch/dist/cjs/unescape.js.map1
-rw-r--r--node_modules/minimatch/dist/mjs/assert-valid-pattern.d.ts2
-rw-r--r--node_modules/minimatch/dist/mjs/assert-valid-pattern.d.ts.map1
-rw-r--r--node_modules/minimatch/dist/mjs/assert-valid-pattern.js10
-rw-r--r--node_modules/minimatch/dist/mjs/assert-valid-pattern.js.map1
-rw-r--r--node_modules/minimatch/dist/mjs/ast.d.ts19
-rw-r--r--node_modules/minimatch/dist/mjs/ast.d.ts.map1
-rw-r--r--node_modules/minimatch/dist/mjs/ast.js585
-rw-r--r--node_modules/minimatch/dist/mjs/ast.js.map1
-rw-r--r--node_modules/minimatch/dist/mjs/brace-expressions.d.ts8
-rw-r--r--node_modules/minimatch/dist/mjs/brace-expressions.d.ts.map1
-rw-r--r--node_modules/minimatch/dist/mjs/brace-expressions.js148
-rw-r--r--node_modules/minimatch/dist/mjs/brace-expressions.js.map1
-rw-r--r--node_modules/minimatch/dist/mjs/escape.d.ts12
-rw-r--r--node_modules/minimatch/dist/mjs/escape.d.ts.map1
-rw-r--r--node_modules/minimatch/dist/mjs/escape.js18
-rw-r--r--node_modules/minimatch/dist/mjs/escape.js.map1
-rw-r--r--node_modules/minimatch/dist/mjs/index.d.ts94
-rw-r--r--node_modules/minimatch/dist/mjs/index.d.ts.map1
-rw-r--r--node_modules/minimatch/dist/mjs/index.js995
-rw-r--r--node_modules/minimatch/dist/mjs/index.js.map1
-rw-r--r--node_modules/minimatch/dist/mjs/package.json3
-rw-r--r--node_modules/minimatch/dist/mjs/unescape.d.ts17
-rw-r--r--node_modules/minimatch/dist/mjs/unescape.d.ts.map1
-rw-r--r--node_modules/minimatch/dist/mjs/unescape.js20
-rw-r--r--node_modules/minimatch/dist/mjs/unescape.js.map1
-rw-r--r--node_modules/minimatch/package.json86
-rw-r--r--node_modules/prettier/LICENSE7
-rw-r--r--node_modules/prettier/README.md107
-rwxr-xr-xnode_modules/prettier/bin-prettier.js46328
-rw-r--r--node_modules/prettier/doc.js2248
-rw-r--r--node_modules/prettier/index.js44254
-rw-r--r--node_modules/prettier/package.json20
-rw-r--r--node_modules/prettier/parser-angular.js15
-rw-r--r--node_modules/prettier/parser-babylon.js1
-rw-r--r--node_modules/prettier/parser-flow.js1
-rw-r--r--node_modules/prettier/parser-glimmer.js1
-rw-r--r--node_modules/prettier/parser-graphql.js1
-rw-r--r--node_modules/prettier/parser-html.js113
-rw-r--r--node_modules/prettier/parser-markdown.js132
-rw-r--r--node_modules/prettier/parser-postcss.js8
-rw-r--r--node_modules/prettier/parser-typescript.js14
-rw-r--r--node_modules/prettier/parser-yaml.js15
-rw-r--r--node_modules/prettier/standalone.js31825
-rw-r--r--node_modules/prettier/third-party.js5590
-rw-r--r--node_modules/shiki/LICENSE21
-rw-r--r--node_modules/shiki/README.md62
-rw-r--r--node_modules/shiki/dist/index.browser.mjs1
-rw-r--r--node_modules/shiki/dist/index.d.ts345
-rw-r--r--node_modules/shiki/dist/index.esm.js3136
-rw-r--r--node_modules/shiki/dist/index.js3147
-rw-r--r--node_modules/shiki/dist/index.jsdelivr.iife.js1
-rw-r--r--node_modules/shiki/dist/index.unpkg.iife.js1
-rw-r--r--node_modules/shiki/dist/onig.wasmbin0 -> 466610 bytes
-rw-r--r--node_modules/shiki/languages/abap.tmLanguage.json378
-rw-r--r--node_modules/shiki/languages/actionscript-3.tmLanguage.json949
-rw-r--r--node_modules/shiki/languages/ada.tmLanguage.json3871
-rw-r--r--node_modules/shiki/languages/apache.tmLanguage.json562
-rw-r--r--node_modules/shiki/languages/apex.tmLanguage.json3199
-rw-r--r--node_modules/shiki/languages/apl.tmLanguage.json1468
-rw-r--r--node_modules/shiki/languages/applescript.tmLanguage.json1403
-rw-r--r--node_modules/shiki/languages/ara.tmLanguage.json425
-rw-r--r--node_modules/shiki/languages/asm.tmLanguage.json1346
-rw-r--r--node_modules/shiki/languages/astro.tmLanguage.json773
-rw-r--r--node_modules/shiki/languages/awk.tmLanguage.json386
-rw-r--r--node_modules/shiki/languages/ballerina.tmLanguage.json3784
-rw-r--r--node_modules/shiki/languages/bat.tmLanguage.json788
-rw-r--r--node_modules/shiki/languages/beancount.tmLanguage.json829
-rw-r--r--node_modules/shiki/languages/berry.tmLanguage.json123
-rw-r--r--node_modules/shiki/languages/bibtex.tmLanguage.json401
-rw-r--r--node_modules/shiki/languages/bicep.tmLanguage.json236
-rw-r--r--node_modules/shiki/languages/blade.tmLanguage.json3867
-rw-r--r--node_modules/shiki/languages/c.tmLanguage.json3555
-rw-r--r--node_modules/shiki/languages/cadence.tmLanguage.json738
-rw-r--r--node_modules/shiki/languages/clarity.tmLanguage.json875
-rw-r--r--node_modules/shiki/languages/clojure.tmLanguage.json431
-rw-r--r--node_modules/shiki/languages/cmake.tmLanguage.json139
-rw-r--r--node_modules/shiki/languages/cobol.tmLanguage.json1121
-rw-r--r--node_modules/shiki/languages/codeql.tmLanguage.json1485
-rw-r--r--node_modules/shiki/languages/coffee.tmLanguage.json1316
-rw-r--r--node_modules/shiki/languages/cpp-macro.tmLanguage.json9366
-rw-r--r--node_modules/shiki/languages/cpp.tmLanguage.json16474
-rw-r--r--node_modules/shiki/languages/crystal.tmLanguage.json1868
-rw-r--r--node_modules/shiki/languages/csharp.tmLanguage.json4995
-rw-r--r--node_modules/shiki/languages/css.tmLanguage.json1865
-rw-r--r--node_modules/shiki/languages/cue.tmLanguage.json1126
-rw-r--r--node_modules/shiki/languages/cypher.tmLanguage.json349
-rw-r--r--node_modules/shiki/languages/d.tmLanguage.json3195
-rw-r--r--node_modules/shiki/languages/dart.tmLanguage.json528
-rw-r--r--node_modules/shiki/languages/dax.tmLanguage.json185
-rw-r--r--node_modules/shiki/languages/diff.tmLanguage.json160
-rw-r--r--node_modules/shiki/languages/docker.tmLanguage.json102
-rw-r--r--node_modules/shiki/languages/dream-maker.tmLanguage.json636
-rw-r--r--node_modules/shiki/languages/elixir.tmLanguage.json1013
-rw-r--r--node_modules/shiki/languages/elm.tmLanguage.json748
-rw-r--r--node_modules/shiki/languages/erb.tmLanguage.json153
-rw-r--r--node_modules/shiki/languages/erlang.tmLanguage.json1730
-rw-r--r--node_modules/shiki/languages/fish.tmLanguage.json189
-rw-r--r--node_modules/shiki/languages/fsharp.tmLanguage.json1835
-rw-r--r--node_modules/shiki/languages/gdresource.tmLanguage.json326
-rw-r--r--node_modules/shiki/languages/gdscript.tmLanguage.json883
-rw-r--r--node_modules/shiki/languages/gdshader.tmLanguage.json403
-rw-r--r--node_modules/shiki/languages/gherkin.tmLanguage.json132
-rw-r--r--node_modules/shiki/languages/git-commit.tmLanguage.json90
-rw-r--r--node_modules/shiki/languages/git-rebase.tmLanguage.json61
-rw-r--r--node_modules/shiki/languages/glimmer-js.tmLanguage.json98
-rw-r--r--node_modules/shiki/languages/glimmer-ts.tmLanguage.json98
-rw-r--r--node_modules/shiki/languages/glsl.tmLanguage.json58
-rw-r--r--node_modules/shiki/languages/gnuplot.tmLanguage.json887
-rw-r--r--node_modules/shiki/languages/go.tmLanguage.json1017
-rw-r--r--node_modules/shiki/languages/graphql.tmLanguage.json1289
-rw-r--r--node_modules/shiki/languages/groovy.tmLanguage.json1383
-rw-r--r--node_modules/shiki/languages/hack.tmLanguage.json2645
-rw-r--r--node_modules/shiki/languages/haml.tmLanguage.json596
-rw-r--r--node_modules/shiki/languages/handlebars.tmLanguage.json852
-rw-r--r--node_modules/shiki/languages/haskell.tmLanguage.json2428
-rw-r--r--node_modules/shiki/languages/hcl.tmLanguage.json780
-rw-r--r--node_modules/shiki/languages/hjson.tmLanguage.json819
-rw-r--r--node_modules/shiki/languages/hlsl.tmLanguage.json217
-rw-r--r--node_modules/shiki/languages/html.tmLanguage.json2643
-rw-r--r--node_modules/shiki/languages/http.tmLanguage.json297
-rw-r--r--node_modules/shiki/languages/imba.tmLanguage.json2693
-rw-r--r--node_modules/shiki/languages/ini.tmLanguage.json113
-rw-r--r--node_modules/shiki/languages/java.tmLanguage.json1855
-rw-r--r--node_modules/shiki/languages/javascript.tmLanguage.json5921
-rw-r--r--node_modules/shiki/languages/jinja-html.tmLanguage.json16
-rw-r--r--node_modules/shiki/languages/jinja.tmLanguage.json345
-rw-r--r--node_modules/shiki/languages/jison.tmLanguage.json712
-rw-r--r--node_modules/shiki/languages/json.tmLanguage.json213
-rw-r--r--node_modules/shiki/languages/json5.tmLanguage.json241
-rw-r--r--node_modules/shiki/languages/jsonc.tmLanguage.json213
-rw-r--r--node_modules/shiki/languages/jsonl.tmLanguage.json213
-rw-r--r--node_modules/shiki/languages/jsonnet.tmLanguage.json211
-rw-r--r--node_modules/shiki/languages/jssm.tmLanguage.json156
-rw-r--r--node_modules/shiki/languages/jsx.tmLanguage.json5921
-rw-r--r--node_modules/shiki/languages/julia.tmLanguage.json945
-rw-r--r--node_modules/shiki/languages/kotlin.tmLanguage.json531
-rw-r--r--node_modules/shiki/languages/kusto.tmLanguage.json684
-rw-r--r--node_modules/shiki/languages/latex.tmLanguage.json2374
-rw-r--r--node_modules/shiki/languages/less.tmLanguage.json542
-rw-r--r--node_modules/shiki/languages/liquid.tmLanguage.json987
-rw-r--r--node_modules/shiki/languages/lisp.tmLanguage.json117
-rw-r--r--node_modules/shiki/languages/logo.tmLanguage.json56
-rw-r--r--node_modules/shiki/languages/lua.tmLanguage.json942
-rw-r--r--node_modules/shiki/languages/make.tmLanguage.json634
-rw-r--r--node_modules/shiki/languages/markdown.tmLanguage.json3037
-rw-r--r--node_modules/shiki/languages/marko.tmLanguage.json1342
-rw-r--r--node_modules/shiki/languages/matlab.tmLanguage.json1130
-rw-r--r--node_modules/shiki/languages/mdx.tmLanguage.json5627
-rw-r--r--node_modules/shiki/languages/mermaid.tmLanguage.json1343
-rw-r--r--node_modules/shiki/languages/narrat.tmLanguage.json227
-rw-r--r--node_modules/shiki/languages/nextflow.tmLanguage.json299
-rw-r--r--node_modules/shiki/languages/nginx.tmLanguage.json2122
-rw-r--r--node_modules/shiki/languages/nim.tmLanguage.json1521
-rw-r--r--node_modules/shiki/languages/nix.tmLanguage.json1198
-rw-r--r--node_modules/shiki/languages/objective-c.tmLanguage.json3755
-rw-r--r--node_modules/shiki/languages/objective-cpp.tmLanguage.json7247
-rw-r--r--node_modules/shiki/languages/ocaml.tmLanguage.json2961
-rw-r--r--node_modules/shiki/languages/pascal.tmLanguage.json145
-rw-r--r--node_modules/shiki/languages/perl.tmLanguage.json2977
-rw-r--r--node_modules/shiki/languages/php-html.tmLanguage.json98
-rw-r--r--node_modules/shiki/languages/php.tmLanguage.json4030
-rw-r--r--node_modules/shiki/languages/plsql.tmLanguage.json232
-rw-r--r--node_modules/shiki/languages/postcss.tmLanguage.json374
-rw-r--r--node_modules/shiki/languages/powerquery.tmLanguage.json346
-rw-r--r--node_modules/shiki/languages/powershell.tmLanguage.json1029
-rw-r--r--node_modules/shiki/languages/prisma.tmLanguage.json441
-rw-r--r--node_modules/shiki/languages/prolog.tmLanguage.json296
-rw-r--r--node_modules/shiki/languages/proto.tmLanguage.json504
-rw-r--r--node_modules/shiki/languages/pug.tmLanguage.json1038
-rw-r--r--node_modules/shiki/languages/puppet.tmLanguage.json774
-rw-r--r--node_modules/shiki/languages/purescript.tmLanguage.json886
-rw-r--r--node_modules/shiki/languages/python.tmLanguage.json4213
-rw-r--r--node_modules/shiki/languages/r.tmLanguage.json642
-rw-r--r--node_modules/shiki/languages/raku.tmLanguage.json315
-rw-r--r--node_modules/shiki/languages/razor.tmLanguage.json1809
-rw-r--r--node_modules/shiki/languages/reg.tmLanguage.json133
-rw-r--r--node_modules/shiki/languages/rel.tmLanguage.json200
-rw-r--r--node_modules/shiki/languages/riscv.tmLanguage.json294
-rw-r--r--node_modules/shiki/languages/rst.tmLanguage.json740
-rw-r--r--node_modules/shiki/languages/ruby.tmLanguage.json2775
-rw-r--r--node_modules/shiki/languages/rust.tmLanguage.json1170
-rw-r--r--node_modules/shiki/languages/sas.tmLanguage.json301
-rw-r--r--node_modules/shiki/languages/sass.tmLanguage.json615
-rw-r--r--node_modules/shiki/languages/scala.tmLanguage.json1304
-rw-r--r--node_modules/shiki/languages/scheme.tmLanguage.json381
-rw-r--r--node_modules/shiki/languages/scss.tmLanguage.json1879
-rw-r--r--node_modules/shiki/languages/shaderlab.tmLanguage.json204
-rw-r--r--node_modules/shiki/languages/shellscript.tmLanguage.json2009
-rw-r--r--node_modules/shiki/languages/smalltalk.tmLanguage.json239
-rw-r--r--node_modules/shiki/languages/solidity.tmLanguage.json1208
-rw-r--r--node_modules/shiki/languages/sparql.tmLanguage.json40
-rw-r--r--node_modules/shiki/languages/sql.tmLanguage.json635
-rw-r--r--node_modules/shiki/languages/ssh-config.tmLanguage.json84
-rw-r--r--node_modules/shiki/languages/stata.tmLanguage.json3045
-rw-r--r--node_modules/shiki/languages/stylus.tmLanguage.json1202
-rw-r--r--node_modules/shiki/languages/svelte.tmLanguage.json1161
-rw-r--r--node_modules/shiki/languages/swift.tmLanguage.json3303
-rw-r--r--node_modules/shiki/languages/system-verilog.tmLanguage.json1055
-rw-r--r--node_modules/shiki/languages/tasl.tmLanguage.json290
-rw-r--r--node_modules/shiki/languages/tcl.tmLanguage.json290
-rw-r--r--node_modules/shiki/languages/tex.tmLanguage.json296
-rw-r--r--node_modules/shiki/languages/toml.tmLanguage.json430
-rw-r--r--node_modules/shiki/languages/tsx.tmLanguage.json5921
-rw-r--r--node_modules/shiki/languages/turtle.tmLanguage.json257
-rw-r--r--node_modules/shiki/languages/twig.tmLanguage.json1372
-rw-r--r--node_modules/shiki/languages/typescript.tmLanguage.json5672
-rw-r--r--node_modules/shiki/languages/v.tmLanguage.json994
-rw-r--r--node_modules/shiki/languages/vb.tmLanguage.json238
-rw-r--r--node_modules/shiki/languages/verilog.tmLanguage.json303
-rw-r--r--node_modules/shiki/languages/vhdl.tmLanguage.json1436
-rw-r--r--node_modules/shiki/languages/viml.tmLanguage.json441
-rw-r--r--node_modules/shiki/languages/vue-html.tmLanguage.json558
-rw-r--r--node_modules/shiki/languages/vue.tmLanguage.json1237
-rw-r--r--node_modules/shiki/languages/vyper.tmLanguage.json5420
-rw-r--r--node_modules/shiki/languages/wasm.tmLanguage.json830
-rw-r--r--node_modules/shiki/languages/wenyan.tmLanguage.json129
-rw-r--r--node_modules/shiki/languages/wgsl.tmLanguage.json380
-rw-r--r--node_modules/shiki/languages/wolfram.tmLanguage.json2363
-rw-r--r--node_modules/shiki/languages/xml.tmLanguage.json387
-rw-r--r--node_modules/shiki/languages/xsl.tmLanguage.json94
-rw-r--r--node_modules/shiki/languages/yaml.tmLanguage.json621
-rw-r--r--node_modules/shiki/languages/zenscript.tmLanguage.json254
-rw-r--r--node_modules/shiki/package.json47
-rw-r--r--node_modules/shiki/samples/Marko.sample13
-rw-r--r--node_modules/shiki/samples/abap.sample21
-rw-r--r--node_modules/shiki/samples/actionscript-3.sample27
-rw-r--r--node_modules/shiki/samples/ada.sample13
-rw-r--r--node_modules/shiki/samples/apex.sample5
-rw-r--r--node_modules/shiki/samples/applescript.sample19
-rw-r--r--node_modules/shiki/samples/ara.sample29
-rw-r--r--node_modules/shiki/samples/asm.sample18
-rw-r--r--node_modules/shiki/samples/astro.sample16
-rw-r--r--node_modules/shiki/samples/awk.sample25
-rw-r--r--node_modules/shiki/samples/ballerina.sample32
-rw-r--r--node_modules/shiki/samples/bat.sample15
-rw-r--r--node_modules/shiki/samples/beancount.sample9
-rw-r--r--node_modules/shiki/samples/berry.sample60
-rw-r--r--node_modules/shiki/samples/bicep.sample47
-rw-r--r--node_modules/shiki/samples/blade.sample47
-rw-r--r--node_modules/shiki/samples/c.sample52
-rw-r--r--node_modules/shiki/samples/cadence.sample19
-rw-r--r--node_modules/shiki/samples/clarity.sample53
-rw-r--r--node_modules/shiki/samples/clojure.sample14
-rw-r--r--node_modules/shiki/samples/cmake.sample36
-rw-r--r--node_modules/shiki/samples/cobol.sample12
-rw-r--r--node_modules/shiki/samples/codeql.sample104
-rw-r--r--node_modules/shiki/samples/coffee.sample30
-rw-r--r--node_modules/shiki/samples/cpp.sample21
-rw-r--r--node_modules/shiki/samples/crystal.sample43
-rw-r--r--node_modules/shiki/samples/csharp.sample33
-rw-r--r--node_modules/shiki/samples/css.sample19
-rw-r--r--node_modules/shiki/samples/cue.sample108
-rw-r--r--node_modules/shiki/samples/cypher.sample7
-rw-r--r--node_modules/shiki/samples/d.sample18
-rw-r--r--node_modules/shiki/samples/dart.sample32
-rw-r--r--node_modules/shiki/samples/dax.sample19
-rw-r--r--node_modules/shiki/samples/diff.sample28
-rw-r--r--node_modules/shiki/samples/dm.sample77
-rw-r--r--node_modules/shiki/samples/docker.sample19
-rw-r--r--node_modules/shiki/samples/elixir.sample8
-rw-r--r--node_modules/shiki/samples/elm.sample66
-rw-r--r--node_modules/shiki/samples/erb.sample69
-rw-r--r--node_modules/shiki/samples/erlang.sample50
-rw-r--r--node_modules/shiki/samples/fish.sample13
-rw-r--r--node_modules/shiki/samples/fsharp.sample13
-rw-r--r--node_modules/shiki/samples/fsl.sample47
-rw-r--r--node_modules/shiki/samples/gdresource.sample95
-rw-r--r--node_modules/shiki/samples/gdscript.sample57
-rw-r--r--node_modules/shiki/samples/gdshader.sample97
-rw-r--r--node_modules/shiki/samples/gjs.sample18
-rw-r--r--node_modules/shiki/samples/glsl.sample86
-rw-r--r--node_modules/shiki/samples/go.sample18
-rw-r--r--node_modules/shiki/samples/gts.sample7
-rw-r--r--node_modules/shiki/samples/hcl.sample15
-rw-r--r--node_modules/shiki/samples/hjson.sample25
-rw-r--r--node_modules/shiki/samples/html.sample27
-rw-r--r--node_modules/shiki/samples/http.sample16
-rw-r--r--node_modules/shiki/samples/imba.sample55
-rw-r--r--node_modules/shiki/samples/java.sample10
-rw-r--r--node_modules/shiki/samples/javascript.sample26
-rw-r--r--node_modules/shiki/samples/jison.sample61
-rw-r--r--node_modules/shiki/samples/json5.sample41
-rw-r--r--node_modules/shiki/samples/jssm.sample22
-rw-r--r--node_modules/shiki/samples/kotlin.sample149
-rw-r--r--node_modules/shiki/samples/kusto.sample7
-rw-r--r--node_modules/shiki/samples/liquid.sample14
-rw-r--r--node_modules/shiki/samples/narrat.sample92
-rw-r--r--node_modules/shiki/samples/nextflow.sample63
-rw-r--r--node_modules/shiki/samples/powerquery.sample22
-rw-r--r--node_modules/shiki/samples/prisma.sample41
-rw-r--r--node_modules/shiki/samples/proto.sample45
-rw-r--r--node_modules/shiki/samples/python.sample12
-rw-r--r--node_modules/shiki/samples/reg.sample26
-rw-r--r--node_modules/shiki/samples/rel.sample66
-rw-r--r--node_modules/shiki/samples/ruby.sample21
-rw-r--r--node_modules/shiki/samples/sparql.sample8
-rw-r--r--node_modules/shiki/samples/stata.sample30
-rw-r--r--node_modules/shiki/samples/tasl.sample25
-rw-r--r--node_modules/shiki/samples/tsx.sample26
-rw-r--r--node_modules/shiki/samples/turtle.sample16
-rw-r--r--node_modules/shiki/samples/v.sample38
-rw-r--r--node_modules/shiki/samples/vyper.sample11
-rw-r--r--node_modules/shiki/samples/wgsl.sample19
-rw-r--r--node_modules/shiki/samples/wolfram.sample9
-rw-r--r--node_modules/shiki/samples/zenscript.sample44
-rw-r--r--node_modules/shiki/themes/css-variables.json186
-rw-r--r--node_modules/shiki/themes/dark-plus.json570
-rw-r--r--node_modules/shiki/themes/dracula-soft.json1048
-rw-r--r--node_modules/shiki/themes/dracula.json1048
-rw-r--r--node_modules/shiki/themes/github-dark-dimmed.json597
-rw-r--r--node_modules/shiki/themes/github-dark.json501
-rw-r--r--node_modules/shiki/themes/github-light.json497
-rw-r--r--node_modules/shiki/themes/hc_light.json564
-rw-r--r--node_modules/shiki/themes/light-plus.json598
-rw-r--r--node_modules/shiki/themes/material-theme-darker.json814
-rw-r--r--node_modules/shiki/themes/material-theme-lighter.json814
-rw-r--r--node_modules/shiki/themes/material-theme-ocean.json814
-rw-r--r--node_modules/shiki/themes/material-theme-palenight.json814
-rw-r--r--node_modules/shiki/themes/material-theme.json814
-rw-r--r--node_modules/shiki/themes/min-dark.json294
-rw-r--r--node_modules/shiki/themes/min-light.json305
-rw-r--r--node_modules/shiki/themes/monokai.json472
-rw-r--r--node_modules/shiki/themes/nord.json1402
-rw-r--r--node_modules/shiki/themes/one-dark-pro.json2104
-rw-r--r--node_modules/shiki/themes/poimandres.json1218
-rw-r--r--node_modules/shiki/themes/rose-pine-dawn.json675
-rw-r--r--node_modules/shiki/themes/rose-pine-moon.json675
-rw-r--r--node_modules/shiki/themes/rose-pine.json675
-rw-r--r--node_modules/shiki/themes/slack-dark.json564
-rw-r--r--node_modules/shiki/themes/slack-ochin.json475
-rw-r--r--node_modules/shiki/themes/solarized-dark.json391
-rw-r--r--node_modules/shiki/themes/solarized-light.json383
-rw-r--r--node_modules/shiki/themes/vitesse-dark.json1091
-rw-r--r--node_modules/shiki/themes/vitesse-light.json1089
-rw-r--r--node_modules/typedoc/LICENSE201
-rw-r--r--node_modules/typedoc/README.md90
-rwxr-xr-xnode_modules/typedoc/bin/typedoc5
-rw-r--r--node_modules/typedoc/dist/index.d.ts17
-rw-r--r--node_modules/typedoc/dist/index.js81
-rw-r--r--node_modules/typedoc/dist/lib/application-events.d.ts5
-rw-r--r--node_modules/typedoc/dist/lib/application-events.js8
-rw-r--r--node_modules/typedoc/dist/lib/application.d.ts127
-rw-r--r--node_modules/typedoc/dist/lib/application.js452
-rw-r--r--node_modules/typedoc/dist/lib/cli.d.ts1
-rw-r--r--node_modules/typedoc/dist/lib/cli.js125
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/blockLexer.d.ts3
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/blockLexer.js370
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/declarationReference.d.ts40
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/declarationReference.js327
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/declarationReferenceResolver.d.ts3
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/declarationReferenceResolver.js203
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/discovery.d.ts16
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/discovery.js339
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/index.d.ts15
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/index.js155
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/lexer.d.ts17
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/lexer.js13
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/lineLexer.d.ts3
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/lineLexer.js267
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/linkResolver.d.ts17
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/linkResolver.js118
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/parser.d.ts6
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/parser.js355
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/rawLexer.d.ts2
-rw-r--r--node_modules/typedoc/dist/lib/converter/comments/rawLexer.js258
-rw-r--r--node_modules/typedoc/dist/lib/converter/components.d.ts5
-rw-r--r--node_modules/typedoc/dist/lib/converter/components.js8
-rw-r--r--node_modules/typedoc/dist/lib/converter/context.d.ts89
-rw-r--r--node_modules/typedoc/dist/lib/converter/context.js198
-rw-r--r--node_modules/typedoc/dist/lib/converter/convert-expression.d.ts9
-rw-r--r--node_modules/typedoc/dist/lib/converter/convert-expression.js60
-rw-r--r--node_modules/typedoc/dist/lib/converter/converter-events.d.ts11
-rw-r--r--node_modules/typedoc/dist/lib/converter/converter-events.js14
-rw-r--r--node_modules/typedoc/dist/lib/converter/converter.d.ts172
-rw-r--r--node_modules/typedoc/dist/lib/converter/converter.js430
-rw-r--r--node_modules/typedoc/dist/lib/converter/factories/index-signature.d.ts3
-rw-r--r--node_modules/typedoc/dist/lib/converter/factories/index-signature.js33
-rw-r--r--node_modules/typedoc/dist/lib/converter/factories/signature.d.ts7
-rw-r--r--node_modules/typedoc/dist/lib/converter/factories/signature.js238
-rw-r--r--node_modules/typedoc/dist/lib/converter/index.d.ts7
-rw-r--r--node_modules/typedoc/dist/lib/converter/index.js11
-rw-r--r--node_modules/typedoc/dist/lib/converter/jsdoc.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/converter/jsdoc.js116
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/CategoryPlugin.d.ts69
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/CategoryPlugin.js237
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/CommentPlugin.d.ts121
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/CommentPlugin.js483
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/GroupPlugin.d.ts53
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/GroupPlugin.js175
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/ImplementsPlugin.d.ts31
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/ImplementsPlugin.js352
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/InheritDocPlugin.d.ts29
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/InheritDocPlugin.js182
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/LinkResolverPlugin.d.ts13
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/LinkResolverPlugin.js61
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/PackagePlugin.d.ts29
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/PackagePlugin.js146
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/SourcePlugin.d.ts51
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/SourcePlugin.js168
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/TypePlugin.d.ts18
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/TypePlugin.js126
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/index.d.ts9
-rw-r--r--node_modules/typedoc/dist/lib/converter/plugins/index.js21
-rw-r--r--node_modules/typedoc/dist/lib/converter/symbols.d.ts3
-rw-r--r--node_modules/typedoc/dist/lib/converter/symbols.js602
-rw-r--r--node_modules/typedoc/dist/lib/converter/types.d.ts10
-rw-r--r--node_modules/typedoc/dist/lib/converter/types.js683
-rw-r--r--node_modules/typedoc/dist/lib/converter/utils/base-path.d.ts36
-rw-r--r--node_modules/typedoc/dist/lib/converter/utils/base-path.js112
-rw-r--r--node_modules/typedoc/dist/lib/converter/utils/nodes.d.ts6
-rw-r--r--node_modules/typedoc/dist/lib/converter/utils/nodes.js31
-rw-r--r--node_modules/typedoc/dist/lib/converter/utils/reflections.d.ts2
-rw-r--r--node_modules/typedoc/dist/lib/converter/utils/reflections.js21
-rw-r--r--node_modules/typedoc/dist/lib/converter/utils/repository.d.ts41
-rw-r--r--node_modules/typedoc/dist/lib/converter/utils/repository.js140
-rw-r--r--node_modules/typedoc/dist/lib/converter/utils/symbols.d.ts2
-rw-r--r--node_modules/typedoc/dist/lib/converter/utils/symbols.js14
-rw-r--r--node_modules/typedoc/dist/lib/models/ReflectionCategory.d.ts31
-rw-r--r--node_modules/typedoc/dist/lib/models/ReflectionCategory.js51
-rw-r--r--node_modules/typedoc/dist/lib/models/ReflectionGroup.d.ts36
-rw-r--r--node_modules/typedoc/dist/lib/models/ReflectionGroup.js60
-rw-r--r--node_modules/typedoc/dist/lib/models/comments/comment.d.ts152
-rw-r--r--node_modules/typedoc/dist/lib/models/comments/comment.js324
-rw-r--r--node_modules/typedoc/dist/lib/models/comments/index.d.ts2
-rw-r--r--node_modules/typedoc/dist/lib/models/comments/index.js6
-rw-r--r--node_modules/typedoc/dist/lib/models/index.d.ts6
-rw-r--r--node_modules/typedoc/dist/lib/models/index.js22
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/ReflectionSymbolId.d.ts29
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/ReflectionSymbolId.js95
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/abstract.d.ts230
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/abstract.js407
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/container.d.ts30
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/container.js39
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/declaration.d.ts158
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/declaration.js175
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/index.d.ts14
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/index.js30
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/kind.d.ts69
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/kind.js135
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/parameter.d.ts17
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/parameter.js38
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/project.d.ts98
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/project.js246
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/reference.d.ts48
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/reference.js88
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/signature.d.ts46
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/signature.js67
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/type-parameter.d.ts26
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/type-parameter.js40
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/utils.d.ts1
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/utils.js30
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/variant.d.ts18
-rw-r--r--node_modules/typedoc/dist/lib/models/reflections/variant.js2
-rw-r--r--node_modules/typedoc/dist/lib/models/sources/file.d.ts32
-rw-r--r--node_modules/typedoc/dist/lib/models/sources/file.js28
-rw-r--r--node_modules/typedoc/dist/lib/models/sources/index.d.ts1
-rw-r--r--node_modules/typedoc/dist/lib/models/sources/index.js5
-rw-r--r--node_modules/typedoc/dist/lib/models/types.d.ts505
-rw-r--r--node_modules/typedoc/dist/lib/models/types.js1152
-rw-r--r--node_modules/typedoc/dist/lib/output/components.d.ts54
-rw-r--r--node_modules/typedoc/dist/lib/output/components.js89
-rw-r--r--node_modules/typedoc/dist/lib/output/events.d.ts172
-rw-r--r--node_modules/typedoc/dist/lib/output/events.js158
-rw-r--r--node_modules/typedoc/dist/lib/output/index.d.ts8
-rw-r--r--node_modules/typedoc/dist/lib/output/index.js18
-rw-r--r--node_modules/typedoc/dist/lib/output/models/UrlMapping.d.ts9
-rw-r--r--node_modules/typedoc/dist/lib/output/models/UrlMapping.js11
-rw-r--r--node_modules/typedoc/dist/lib/output/plugins/AssetsPlugin.d.ts19
-rw-r--r--node_modules/typedoc/dist/lib/output/plugins/AssetsPlugin.js62
-rw-r--r--node_modules/typedoc/dist/lib/output/plugins/JavascriptIndexPlugin.d.ts20
-rw-r--r--node_modules/typedoc/dist/lib/output/plugins/JavascriptIndexPlugin.js146
-rw-r--r--node_modules/typedoc/dist/lib/output/plugins/index.d.ts3
-rw-r--r--node_modules/typedoc/dist/lib/output/plugins/index.js9
-rw-r--r--node_modules/typedoc/dist/lib/output/renderer.d.ts191
-rw-r--r--node_modules/typedoc/dist/lib/output/renderer.js309
-rw-r--r--node_modules/typedoc/dist/lib/output/theme.d.ts43
-rw-r--r--node_modules/typedoc/dist/lib/output/theme.js32
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/MarkedPlugin.d.ts68
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/MarkedPlugin.js223
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/DefaultTheme.d.ts73
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/DefaultTheme.js236
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/DefaultThemeRenderContext.d.ts62
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/DefaultThemeRenderContext.js104
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/layouts/default.d.ts6
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/layouts/default.js46
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/analytics.d.ts3
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/analytics.js20
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/anchor-icon.d.ts3
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/anchor-icon.js10
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/breadcrumb.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/breadcrumb.js9
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/comment.d.ts6
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/comment.js38
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/footer.d.ts3
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/footer.js13
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/header.d.ts5
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/header.js20
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/hierarchy.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/hierarchy.js17
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/icon.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/icon.js90
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/index.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/index.js43
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/member.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/member.declaration.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/member.declaration.js40
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/member.getterSetter.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/member.getterSetter.js28
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/member.js30
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/member.reference.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/member.reference.js21
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/member.signature.body.d.ts6
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/member.signature.body.js37
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/member.signature.title.d.ts7
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/member.signature.title.js38
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/member.signatures.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/member.signatures.js13
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/member.sources.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/member.sources.js39
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/members.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/members.group.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/members.group.js19
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/members.js15
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/navigation.d.ts10
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/navigation.js164
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/parameter.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/parameter.js79
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/toolbar.d.ts5
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/toolbar.js20
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/type.d.ts5
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/type.js363
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/typeAndParent.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/typeAndParent.js24
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/typeParameters.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/partials/typeParameters.js23
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/templates/index.d.ts5
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/templates/index.js7
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/templates/reflection.d.ts5
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/default/templates/reflection.js51
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/lib.d.ts28
-rw-r--r--node_modules/typedoc/dist/lib/output/themes/lib.js134
-rw-r--r--node_modules/typedoc/dist/lib/serialization/components.d.ts25
-rw-r--r--node_modules/typedoc/dist/lib/serialization/components.js2
-rw-r--r--node_modules/typedoc/dist/lib/serialization/deserializer.d.ts54
-rw-r--r--node_modules/typedoc/dist/lib/serialization/deserializer.js212
-rw-r--r--node_modules/typedoc/dist/lib/serialization/events.d.ts18
-rw-r--r--node_modules/typedoc/dist/lib/serialization/events.js19
-rw-r--r--node_modules/typedoc/dist/lib/serialization/index.d.ts5
-rw-r--r--node_modules/typedoc/dist/lib/serialization/index.js33
-rw-r--r--node_modules/typedoc/dist/lib/serialization/schema.d.ts190
-rw-r--r--node_modules/typedoc/dist/lib/serialization/schema.js31
-rw-r--r--node_modules/typedoc/dist/lib/serialization/serializer.d.ts37
-rw-r--r--node_modules/typedoc/dist/lib/serialization/serializer.js54
-rw-r--r--node_modules/typedoc/dist/lib/utils/array.d.ts50
-rw-r--r--node_modules/typedoc/dist/lib/utils/array.js126
-rw-r--r--node_modules/typedoc/dist/lib/utils/component.d.ts94
-rw-r--r--node_modules/typedoc/dist/lib/utils/component.js169
-rw-r--r--node_modules/typedoc/dist/lib/utils/entry-point.d.ts46
-rw-r--r--node_modules/typedoc/dist/lib/utils/entry-point.js359
-rw-r--r--node_modules/typedoc/dist/lib/utils/enum.d.ts8
-rw-r--r--node_modules/typedoc/dist/lib/utils/enum.js32
-rw-r--r--node_modules/typedoc/dist/lib/utils/events.d.ts123
-rw-r--r--node_modules/typedoc/dist/lib/utils/events.js394
-rw-r--r--node_modules/typedoc/dist/lib/utils/fs.d.ts62
-rw-r--r--node_modules/typedoc/dist/lib/utils/fs.js340
-rw-r--r--node_modules/typedoc/dist/lib/utils/general.d.ts43
-rw-r--r--node_modules/typedoc/dist/lib/utils/general.js55
-rw-r--r--node_modules/typedoc/dist/lib/utils/highlighter.d.ts6
-rw-r--r--node_modules/typedoc/dist/lib/utils/highlighter.js155
-rw-r--r--node_modules/typedoc/dist/lib/utils/hooks.d.ts51
-rw-r--r--node_modules/typedoc/dist/lib/utils/hooks.js96
-rw-r--r--node_modules/typedoc/dist/lib/utils/html-entities.json2233
-rw-r--r--node_modules/typedoc/dist/lib/utils/html.d.ts2
-rw-r--r--node_modules/typedoc/dist/lib/utils/html.js39
-rw-r--r--node_modules/typedoc/dist/lib/utils/index.d.ts23
-rw-r--r--node_modules/typedoc/dist/lib/utils/index.js91
-rw-r--r--node_modules/typedoc/dist/lib/utils/jsx.d.ts47
-rw-r--r--node_modules/typedoc/dist/lib/utils/jsx.elements.d.ts899
-rw-r--r--node_modules/typedoc/dist/lib/utils/jsx.elements.js4
-rw-r--r--node_modules/typedoc/dist/lib/utils/jsx.js146
-rw-r--r--node_modules/typedoc/dist/lib/utils/loggers.d.ts114
-rw-r--r--node_modules/typedoc/dist/lib/utils/loggers.js229
-rw-r--r--node_modules/typedoc/dist/lib/utils/map.d.ts23
-rw-r--r--node_modules/typedoc/dist/lib/utils/map.js70
-rw-r--r--node_modules/typedoc/dist/lib/utils/minimalSourceFile.d.ts7
-rw-r--r--node_modules/typedoc/dist/lib/utils/minimalSourceFile.js36
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/declaration.d.ts387
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/declaration.js329
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/help.d.ts7
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/help.js66
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/index.d.ts5
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/index.js16
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/options.d.ts222
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/options.js302
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/readers/arguments.d.ts13
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/readers/arguments.js97
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/readers/index.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/readers/index.js11
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/readers/package-json.d.ts9
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/readers/package-json.js45
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/readers/tsconfig.d.ts14
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/readers/tsconfig.js187
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/readers/typedoc.d.ts35
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/readers/typedoc.js155
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/sources/index.d.ts1
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/sources/index.js5
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/sources/typedoc.d.ts2
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/sources/typedoc.js711
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/tsdoc-defaults.d.ts6
-rw-r--r--node_modules/typedoc/dist/lib/utils/options/tsdoc-defaults.js57
-rw-r--r--node_modules/typedoc/dist/lib/utils/package-manifest.d.ts36
-rw-r--r--node_modules/typedoc/dist/lib/utils/package-manifest.js230
-rw-r--r--node_modules/typedoc/dist/lib/utils/paths.d.ts16
-rw-r--r--node_modules/typedoc/dist/lib/utils/paths.js41
-rw-r--r--node_modules/typedoc/dist/lib/utils/perf.d.ts3
-rw-r--r--node_modules/typedoc/dist/lib/utils/perf.js66
-rw-r--r--node_modules/typedoc/dist/lib/utils/plugins.d.ts2
-rw-r--r--node_modules/typedoc/dist/lib/utils/plugins.js53
-rw-r--r--node_modules/typedoc/dist/lib/utils/reflections.d.ts5
-rw-r--r--node_modules/typedoc/dist/lib/utils/reflections.js68
-rw-r--r--node_modules/typedoc/dist/lib/utils/sort.d.ts9
-rw-r--r--node_modules/typedoc/dist/lib/utils/sort.js150
-rw-r--r--node_modules/typedoc/dist/lib/utils/tsconfig.d.ts4
-rw-r--r--node_modules/typedoc/dist/lib/utils/tsconfig.js36
-rw-r--r--node_modules/typedoc/dist/lib/utils/tsutils.d.ts3
-rw-r--r--node_modules/typedoc/dist/lib/utils/tsutils.js51
-rw-r--r--node_modules/typedoc/dist/lib/utils/validation.d.ts32
-rw-r--r--node_modules/typedoc/dist/lib/utils/validation.js56
-rw-r--r--node_modules/typedoc/dist/lib/validation/documentation.d.ts3
-rw-r--r--node_modules/typedoc/dist/lib/validation/documentation.js65
-rw-r--r--node_modules/typedoc/dist/lib/validation/exports.d.ts3
-rw-r--r--node_modules/typedoc/dist/lib/validation/exports.js69
-rw-r--r--node_modules/typedoc/dist/lib/validation/links.d.ts3
-rw-r--r--node_modules/typedoc/dist/lib/validation/links.js25
-rw-r--r--node_modules/typedoc/package.json102
-rw-r--r--node_modules/typedoc/static/main.js58
-rw-r--r--node_modules/typedoc/static/style.css1367
-rw-r--r--node_modules/typedoc/tsdoc.json95
-rw-r--r--node_modules/vscode-oniguruma/LICENSE.txt23
-rw-r--r--node_modules/vscode-oniguruma/NOTICES.txt41
-rw-r--r--node_modules/vscode-oniguruma/README.md52
-rw-r--r--node_modules/vscode-oniguruma/SECURITY.md41
-rw-r--r--node_modules/vscode-oniguruma/main.d.ts68
-rw-r--r--node_modules/vscode-oniguruma/package.json35
-rw-r--r--node_modules/vscode-oniguruma/release/main.js1
-rw-r--r--node_modules/vscode-oniguruma/release/onig.wasmbin0 -> 466610 bytes
-rw-r--r--node_modules/vscode-textmate/.gitattributes1
-rw-r--r--node_modules/vscode-textmate/.github/workflows/ci.yml16
-rw-r--r--node_modules/vscode-textmate/.github/workflows/rich-navigation.yml31
-rw-r--r--node_modules/vscode-textmate/.lsifrc.json6
-rw-r--r--node_modules/vscode-textmate/LICENSE.md21
-rw-r--r--node_modules/vscode-textmate/README.md130
-rw-r--r--node_modules/vscode-textmate/SECURITY.md41
-rw-r--r--node_modules/vscode-textmate/package.json40
-rw-r--r--node_modules/vscode-textmate/release/debug.d.ts4
-rw-r--r--node_modules/vscode-textmate/release/encodedTokenAttributes.d.ts31
-rw-r--r--node_modules/vscode-textmate/release/grammar/basicScopesAttributeProvider.d.ts24
-rw-r--r--node_modules/vscode-textmate/release/grammar/grammar.d.ts198
-rw-r--r--node_modules/vscode-textmate/release/grammar/grammarDependencies.d.ts68
-rw-r--r--node_modules/vscode-textmate/release/grammar/index.d.ts1
-rw-r--r--node_modules/vscode-textmate/release/grammar/tokenizeString.d.ts27
-rw-r--r--node_modules/vscode-textmate/release/json.d.ts6
-rw-r--r--node_modules/vscode-textmate/release/main.d.ts141
-rw-r--r--node_modules/vscode-textmate/release/main.js2
-rw-r--r--node_modules/vscode-textmate/release/main.js.map1
-rw-r--r--node_modules/vscode-textmate/release/matcher.d.ts8
-rw-r--r--node_modules/vscode-textmate/release/onigLib.d.ts42
-rw-r--r--node_modules/vscode-textmate/release/parseRawGrammar.d.ts2
-rw-r--r--node_modules/vscode-textmate/release/plist.d.ts5
-rw-r--r--node_modules/vscode-textmate/release/rawGrammar.d.ts48
-rw-r--r--node_modules/vscode-textmate/release/registry.d.ts40
-rw-r--r--node_modules/vscode-textmate/release/rule.d.ts163
-rw-r--r--node_modules/vscode-textmate/release/tests/all.test.d.ts5
-rw-r--r--node_modules/vscode-textmate/release/tests/grammar.test.d.ts1
-rw-r--r--node_modules/vscode-textmate/release/tests/inspect.d.ts1
-rw-r--r--node_modules/vscode-textmate/release/tests/json.test.d.ts1
-rw-r--r--node_modules/vscode-textmate/release/tests/matcher.test.d.ts1
-rw-r--r--node_modules/vscode-textmate/release/tests/onigLibs.d.ts2
-rw-r--r--node_modules/vscode-textmate/release/tests/resolver.d.ts33
-rw-r--r--node_modules/vscode-textmate/release/tests/themeTest.d.ts14
-rw-r--r--node_modules/vscode-textmate/release/tests/themedTokenizer.d.ts6
-rw-r--r--node_modules/vscode-textmate/release/tests/themes.test.d.ts7
-rw-r--r--node_modules/vscode-textmate/release/tests/tokenization.test.d.ts1
-rw-r--r--node_modules/vscode-textmate/release/theme.d.ts119
-rw-r--r--node_modules/vscode-textmate/release/utils.d.ts26
-rw-r--r--package-lock.json147
-rw-r--r--package.json32
-rw-r--r--typedoc.json10
-rw-r--r--types/IConfig.ts28
1092 files changed, 486834 insertions, 181 deletions
diff --git a/.gitignore b/.gitignore
index 631a2c3..a14ed7a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,5 @@
demo
-test.js \ No newline at end of file
+test.js
+package.json.old
+docs
+docs.json \ No newline at end of file
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..cf1d286
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "docs"]
+ path = docs
+ url = https://github.com/RaindropsSys/signal.js-docs.git
diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml
new file mode 100644
index 0000000..d23208f
--- /dev/null
+++ b/.idea/jsLibraryMappings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="JavaScriptLibraryMappings">
+ <includedPredefinedLibrary name="Node.js Core" />
+ </component>
+</project> \ No newline at end of file
diff --git a/README.md b/README.md
index 35f3def..6e673c0 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,16 @@
# Signal.js, an easy-to-use Node.js library for Signal
+> **Warning:** Signal.js is currently a work in progress. Expect breaking changes, missing features, bugs, unexpected behavior and data loss. We do not recommend you use this library in a production environment for the time being.
+
Signal.js makes it easy to create bots or other automated applications for Signal using Node.js, with a fully object-oriented, typed and aims to cover all of Signal's features in the future.
## Installation
-* First, download [signal-cli](https://github.com/AsamK/signal-cli) and install it either in your `$PATH` or in a place where it can be executed.
-* Run `npm install --save git+https://git.equestria.dev/equestria.dev/signal.js.git`
+* Download [signal-cli](https://github.com/AsamK/signal-cli)
+* Install it either in a folder that's in your `$PATH` or in a place where it can be executed.
+* Follow the instructions from the signal-cli documentation to connect to Signal
+ * If you want to link signal-cli to an installation of Signal on your phone (that means using the same phone number): https://github.com/AsamK/signal-cli/wiki/Linking-other-devices-(Provisioning)
+ * If you want to use signal-cli as a primary device (that means you won't be able to use this phone number with Signal on your phone): https://github.com/AsamK/signal-cli/wiki/Quickstart#set-up-an-account
+* Run `npm install --save @equestria.dev/signal.js`
* You are now ready to work with Signal.js
## Getting started
diff --git a/ROADMAP.md b/ROADMAP.md
index 6837372..61bbb0a 100644
--- a/ROADMAP.md
+++ b/ROADMAP.md
@@ -25,15 +25,18 @@
* [x] <s>Deletions</s>
* [x] <s>URL preview</s>
* [x] <s>Mentions</s>
-* [ ] Users
- * [ ] (Un)Blocking
- * [ ] Trusting
- * [ ] Adding
+* [x] <s>Users</s>
+ * [x] <s>(Un)Blocking</s>
+ * [x] <s>Trusting</s>
+ * [x] <s>Adding to contacts</s>
+ * [x] <s>Removing from contacts</s>
+ * [x] <s>Change disappearing messages time</s>
* [ ] Groups
* [ ] Creating
- * [ ] Updating
- * [ ] Leave
+ * [x] <s>Updating</s>
+ * [x] <s>Leave</s>
* [ ] Join (from an invite link)
+ * [x] <s>Change disappearing messages time</s>
* [ ] Profile
* [ ] Avatar
* [ ] Name
diff --git a/build.js b/build.js
new file mode 100644
index 0000000..ff7bb9b
--- /dev/null
+++ b/build.js
@@ -0,0 +1,13 @@
+const fs = require('fs');
+fs.copyFileSync(__dirname + "/package.json", __dirname + "/package.json.old");
+
+let id = require('child_process').execSync("git rev-parse HEAD", { cwd: __dirname }).toString().trim().substring(0, 7);
+
+const pkg = require("./package.json");
+const child_process = require("child_process");
+pkg.version = pkg.version.split("-")[0] + "-dev." + Math.round(new Date().getTime() / 1000).toString() + "-" + id + ".0";
+fs.writeFileSync("./package.json", JSON.stringify(pkg, null, 2));
+
+child_process.execSync("npm publish --tag dev", { cwd: __dirname, stdio: "inherit" });
+fs.copyFileSync(__dirname + "/package.json.old", __dirname + "/package.json");
+fs.unlinkSync(__dirname + "/package.json.old"); \ No newline at end of file
diff --git a/classes/CLIDispatcher.ts b/classes/CLIDispatcher.ts
index 965b989..5a20f3f 100644
--- a/classes/CLIDispatcher.ts
+++ b/classes/CLIDispatcher.ts
@@ -1,10 +1,12 @@
import {ChildProcess} from "child_process";
import {randomUUID, UUID} from "crypto";
import {ICLIRequest} from "../types/ICLIRequest";
+import {SignalCLIError} from "./SignalCLIError";
+import {SignalAPIError} from "./SignalAPIError";
export class CLIDispatcher {
static dispatch(method: string, params: any, proc: ChildProcess): Promise<any> {
- return new Promise((res) => {
+ return new Promise((res, rej) => {
let id: UUID = randomUUID();
let payload: ICLIRequest = {
jsonrpc: "2.0",
@@ -17,6 +19,10 @@ export class CLIDispatcher {
if (raw.toString().trim() === "") return;
let data = JSON.parse(raw.toString());
+ if (data.error) {
+ rej(new SignalAPIError(data.error.message ?? null, data.error.code ?? null));
+ }
+
if (data.id === id) {
res(data);
proc.stdout.removeListener("data", callback);
diff --git a/classes/CLIEvent.ts b/classes/CLIEvent.ts
index e605641..124dcbb 100644
--- a/classes/CLIEvent.ts
+++ b/classes/CLIEvent.ts
@@ -16,6 +16,7 @@ import {DMEditMessage} from "./DMEditMessage";
import {GroupEditMessage} from "./GroupEditMessage";
import {GroupDeleteMessage} from "./GroupDeleteMessage";
import {DMDeleteMessage} from "./DMDeleteMessage";
+import {Group} from "./Group";
/**
* A signal-cli event
@@ -30,7 +31,7 @@ export class CLIEvent {
if (data.params.envelope.typingMessage.groupId) {
let message: GroupTypingMessage = new GroupTypingMessage(
- new User(data.params.envelope, UserDataType.Envelope),
+ new User(data.params.envelope, UserDataType.Envelope, client),
data.params.envelope.typingMessage.action,
data.params.envelope.typingMessage.timestamp,
data.params.envelope.typingMessage.groupId,
@@ -40,7 +41,7 @@ export class CLIEvent {
client.emit("typingMessage", message);
} else {
let message: DMTypingMessage = new DMTypingMessage(
- new User(data.params.envelope, UserDataType.Envelope),
+ new User(data.params.envelope, UserDataType.Envelope, client),
data.params.envelope.typingMessage.action,
data.params.envelope.typingMessage.timestamp,
client
@@ -53,7 +54,7 @@ export class CLIEvent {
if (data.params.envelope.editMessage.dataMessage.groupInfo) {
let message: GroupEditMessage = new GroupEditMessage(
- new User(data.params.envelope, UserDataType.Envelope),
+ new User(data.params.envelope, UserDataType.Envelope, client),
data.params.envelope.editMessage.dataMessage,
data.params.envelope.editMessage.dataMessage.timestamp,
data.params.envelope.editMessage.dataMessage.groupInfo.groupId,
@@ -64,7 +65,7 @@ export class CLIEvent {
client.emit("editMessage", message);
} else {
let message: DMEditMessage = new DMEditMessage(
- new User(data.params.envelope, UserDataType.Envelope),
+ new User(data.params.envelope, UserDataType.Envelope, client),
data.params.envelope.editMessage.dataMessage,
data.params.envelope.editMessage.dataMessage.timestamp,
data.params.envelope.editMessage.targetSentTimestamp,
@@ -76,10 +77,14 @@ export class CLIEvent {
} else if (data.params.envelope.dataMessage) {
if (client.verbose) console.log(data.params.envelope.dataMessage);
- if (data.params.envelope.dataMessage.remoteDelete) {
+ if (data.params.envelope.dataMessage.groupInfo && data.params.envelope.dataMessage.groupInfo.type !== "DELIVER") {
+ if (data.params.envelope.dataMessage.groupInfo.type === "UPDATE") {
+ client.emit("groupUpdate", new Group(data.params.envelope.dataMessage.groupInfo.groupId, client));
+ }
+ } else if (data.params.envelope.dataMessage.remoteDelete) {
if (data.params.envelope.dataMessage.groupInfo) {
let message: GroupDeleteMessage = new GroupDeleteMessage(
- new User(data.params.envelope, UserDataType.Envelope),
+ new User(data.params.envelope, UserDataType.Envelope, client),
data.params.envelope.dataMessage,
data.params.envelope.dataMessage.timestamp,
data.params.envelope.dataMessage.groupInfo.groupId,
@@ -90,7 +95,7 @@ export class CLIEvent {
client.emit("deleteMessage", message);
} else {
let message: DMDeleteMessage = new DMDeleteMessage(
- new User(data.params.envelope, UserDataType.Envelope),
+ new User(data.params.envelope, UserDataType.Envelope, client),
data.params.envelope.dataMessage,
data.params.envelope.dataMessage.timestamp,
client,
@@ -102,7 +107,7 @@ export class CLIEvent {
} else if (data.params.envelope.dataMessage.reaction) {
if (data.params.envelope.dataMessage.groupInfo) {
let message: GroupReactionMessage = new GroupReactionMessage(
- new User(data.params.envelope, UserDataType.Envelope),
+ new User(data.params.envelope, UserDataType.Envelope, client),
data.params.envelope.dataMessage,
data.params.envelope.dataMessage.timestamp,
data.params.envelope.dataMessage.groupInfo.groupId,
@@ -118,7 +123,7 @@ export class CLIEvent {
}
} else {
let message: DMReactionMessage = new DMReactionMessage(
- new User(data.params.envelope, UserDataType.Envelope),
+ new User(data.params.envelope, UserDataType.Envelope, client),
data.params.envelope.dataMessage,
data.params.envelope.dataMessage.timestamp,
client
@@ -138,7 +143,7 @@ export class CLIEvent {
if (data.params.envelope.dataMessage.groupInfo) {
let message: GroupStickerMessage = new GroupStickerMessage(
- new User(data.params.envelope, UserDataType.Envelope),
+ new User(data.params.envelope, UserDataType.Envelope, client),
data.params.envelope.dataMessage,
data.params.envelope.dataMessage.timestamp,
data.params.envelope.dataMessage.groupInfo.groupId,
@@ -148,7 +153,7 @@ export class CLIEvent {
client.emit("sticker", message);
} else {
let message: DMStickerMessage = new DMStickerMessage(
- new User(data.params.envelope, UserDataType.Envelope),
+ new User(data.params.envelope, UserDataType.Envelope, client),
data.params.envelope.dataMessage,
data.params.envelope.dataMessage.timestamp,
client
@@ -160,7 +165,7 @@ export class CLIEvent {
} else {
if (data.params.envelope.dataMessage.groupInfo) {
let message: GroupDataMessage = new GroupDataMessage(
- new User(data.params.envelope, UserDataType.Envelope),
+ new User(data.params.envelope, UserDataType.Envelope, client),
data.params.envelope.dataMessage,
data.params.envelope.dataMessage.timestamp,
data.params.envelope.dataMessage.groupInfo.groupId,
@@ -170,7 +175,7 @@ export class CLIEvent {
client.emit("message", message);
} else {
let message: DMDataMessage = new DMDataMessage(
- new User(data.params.envelope, UserDataType.Envelope),
+ new User(data.params.envelope, UserDataType.Envelope, client),
data.params.envelope.dataMessage,
data.params.envelope.dataMessage.timestamp,
client
diff --git a/classes/Client.ts b/classes/Client.ts
index 548d57f..7a071bf 100644
--- a/classes/Client.ts
+++ b/classes/Client.ts
@@ -2,7 +2,7 @@ import {IConfig} from "../types/IConfig";
import {ChildProcess, spawn} from "child_process";
import {ICLIEvent} from "../types/ICLIEvent";
import {CLIEvent} from "./CLIEvent";
-import {SignalError} from "./SignalError";
+import {SignalCLIError} from "./SignalCLIError";
import {EventEmitter} from "events";
import {DMTypingMessage} from "./DMTypingMessage";
import {GroupTypingMessage} from "./GroupTypingMessage";
@@ -17,17 +17,51 @@ import {DMEditMessage} from "./DMEditMessage";
import {GroupEditMessage} from "./GroupEditMessage";
import {GroupDeleteMessage} from "./GroupDeleteMessage";
import {DMDeleteMessage} from "./DMDeleteMessage";
+import {Group} from "./Group";
export declare interface Client {
+ /**
+ * @event Client#cliEvent
+ */
on(event: "cliEvent", listener: (event: ICLIEvent) => void): this;
+
+ /**
+ * @event Client#typingMessage
+ */
on(event: "typingMessage", listener: (message: GroupTypingMessage|DMTypingMessage) => void): this;
+ /**
+ * @event Client#message
+ */
on(event: "message", listener: (message: GroupDataMessage|DMDataMessage) => void): this;
+ /**
+ * @event Client#editMessage
+ */
on(event: "editMessage", listener: (message: GroupEditMessage|DMEditMessage) => void): this;
+ /**
+ * @event Client#reaction
+ */
on(event: "reaction", listener: (message: GroupReactionMessage|DMReactionMessage) => void): this;
+ /**
+ * @event Client#reactionAdd
+ */
on(event: "reactionAdd", listener: (message: GroupReactionMessage|DMReactionMessage) => void): this;
+ /**
+ * @event Client#reactionRemove
+ */
on(event: "reactionRemove", listener: (message: GroupReactionMessage|DMReactionMessage) => void): this;
+ /**
+ * @event Client#sticker
+ */
on(event: "sticker", listener: (message: GroupStickerMessage|DMStickerMessage) => void): this;
+ /**
+ * @event Client#deleteMessage
+ */
on(event: "deleteMessage", listener: (message: GroupDeleteMessage|DMDeleteMessage) => void): this;
+
+ /**
+ * @event Client#groupUpdate
+ */
+ on(event: "groupUpdate", listener: (group: Group) => void): this;
}
/**
@@ -75,7 +109,7 @@ export class Client extends EventEmitter {
this.process.stderr.on('data', (chunk) => {
if (chunk.toString().trim().startsWith("INFO ")) return;
if (chunk.toString().trim().startsWith("WARN ")) return;
- throw new SignalError(chunk.toString(), command, parameters)
+ throw new SignalCLIError(chunk.toString(), command, parameters)
});
}
} \ No newline at end of file
diff --git a/classes/DM.ts b/classes/DM.ts
index e327b35..d49446e 100644
--- a/classes/DM.ts
+++ b/classes/DM.ts
@@ -12,7 +12,7 @@ export class DM extends Channel {
public number: string;
private client: Client;
- constructor(userId: string, number: string, client: Client) {
+ constructor(userId: string|null, number: string, client: Client) {
super();
this.id = userId;
this.number = number;
diff --git a/classes/DMDataMessage.ts b/classes/DMDataMessage.ts
index b09d458..e7d82e8 100644
--- a/classes/DMDataMessage.ts
+++ b/classes/DMDataMessage.ts
@@ -15,6 +15,9 @@ import {ReceivedURLPreview} from "./ReceivedURLPreview";
import {IChatMessageURLPreview} from "../types/IChatMessageURLPreview";
import {ISentMessageURLPreview} from "../types/ISentMessageURLPreview";
import {IReceivedMessageURLPreview} from "../types/IReceivedMessageURLPreview";
+import {IChatMessageOptions} from "../types/IChatMessageOptions";
+import {SentDataMessage} from "./SentDataMessage";
+import {QuoteBuilder} from "./QuoteBuilder";
/**
* A data message as sent by Signal
@@ -30,10 +33,10 @@ export class DMDataMessage extends DMMessage implements DataMessage {
constructor(user: User, data: any, time: number, client: Client) {
super(user, time, new DM(user.uuid, user.number, client), client, data.expiresInSeconds);
this.content = data.message && data.message.trim().length > 0 ? data.message : null;
- if (data.quote) this.quote = new QuoteMessage(data.quote);
+ if (data.quote) this.quote = new QuoteMessage(data.quote, client);
this.attachments = data.attachments?.map(i => new Attachment(i));
this.formatting = new MessageFormatting(data.message && data.message.trim().length > 0 ? data.message : "", data.textStyles);
- this.mentions = data.mentions?.map(mention => new UserMention(new User(UserDataType.Mention, mention), mention.start, mention.length));
+ this.mentions = data.mentions?.map(mention => new UserMention(new User(UserDataType.MentionOrGroup, mention, client), mention.start, mention.length));
this.previews = data.previews?.map(preview => (new ReceivedURLPreview(preview)).build());
}
@@ -60,4 +63,16 @@ export class DMDataMessage extends DMMessage implements DataMessage {
this.client.process
)
}
+
+ public async reply(text: string, options?: IChatMessageOptions): Promise<SentDataMessage> {
+ if (options) {
+ options.quote = new QuoteBuilder(this.client, this.createdTimestamp, this.author.number, this.content);
+ } else {
+ options = {
+ quote: new QuoteBuilder(this.client, this.createdTimestamp, this.author.number, this.content)
+ }
+ }
+
+ return await this.channel.send(text, options);
+ }
}
diff --git a/classes/DMMessage.ts b/classes/DMMessage.ts
index 5d94769..58aa6ef 100644
--- a/classes/DMMessage.ts
+++ b/classes/DMMessage.ts
@@ -5,6 +5,7 @@ import {Client} from "./Client";
export class DMMessage extends ReceivedMessage {
public channel: DM;
+ public isGroup: boolean = false;
constructor(user: User, time: number, dm: DM, client: Client, expirity?: number) {
super(user, time, dm, client, expirity);
diff --git a/classes/Group.ts b/classes/Group.ts
index cdbf41f..cdee7c7 100644
--- a/classes/Group.ts
+++ b/classes/Group.ts
@@ -4,6 +4,8 @@ import {CLIDispatcher} from "./CLIDispatcher";
import {IChatMessageOptions} from "../types/IChatMessageOptions";
import {SentDataMessage} from "./SentDataMessage";
import {Sticker} from "./Sticker";
+import {GroupEditor} from "./GroupEditor";
+import {User} from "./User";
export class Group extends Channel {
public group: boolean = true;
@@ -83,4 +85,118 @@ export class Group extends Channel {
this.client.process
);
}
+
+ public async setBlocked(blocked: boolean) {
+ let groupData = await CLIDispatcher.dispatch(
+ "listGroups",
+ {},
+ this.client.process
+ );
+
+ if (blocked) {
+ await CLIDispatcher.dispatch(
+ "block",
+ {
+ groupId: this.id,
+ recipient: groupData['result'].filter(i => i.id === this.id)[0].members.map(i => i.number)
+ },
+ this.client.process
+ );
+ } else {
+ await CLIDispatcher.dispatch(
+ "unblock",
+ {
+ groupId: this.id,
+ recipient: groupData['result'].filter(i => i.id === this.id)[0].members.map(i => i.number)
+ },
+ this.client.process
+ );
+ }
+ }
+
+ public async editor() {
+ return new GroupEditor(this, await CLIDispatcher.dispatch(
+ "listGroups",
+ {},
+ this.client.process
+ ), this.client);
+ }
+
+ public async addAdmin(...users: User[]) {
+ await CLIDispatcher.dispatch(
+ "updateGroup",
+ {
+ groupId: this.id,
+ admin: users.map(i => i.number)
+ },
+ this.client.process
+ );
+ }
+
+ public async removeAdmin(...users: User[]) {
+ await CLIDispatcher.dispatch(
+ "updateGroup",
+ {
+ groupId: this.id,
+ removeAdmin: users.map(i => i.number)
+ },
+ this.client.process
+ );
+ }
+
+ public async addMember(...users: User[]) {
+ await CLIDispatcher.dispatch(
+ "updateGroup",
+ {
+ groupId: this.id,
+ member: users.map(i => i.number)
+ },
+ this.client.process
+ );
+ }
+
+ public async removeMember(...users: User[]) {
+ await CLIDispatcher.dispatch(
+ "updateGroup",
+ {
+ groupId: this.id,
+ removeMember: users.map(i => i.number)
+ },
+ this.client.process
+ );
+ }
+
+ public async banMember(...users: User[]) {
+ await CLIDispatcher.dispatch(
+ "updateGroup",
+ {
+ groupId: this.id,
+ ban: users.map(i => i.number)
+ },
+ this.client.process
+ );
+ }
+
+ public async unbanMember(...users: User[]) {
+ await CLIDispatcher.dispatch(
+ "updateGroup",
+ {
+ groupId: this.id,
+ unban: users.map(i => i.number)
+ },
+ this.client.process
+ );
+ }
+
+ public async leave(deleteLocalData: boolean = false, successorAdmins?: User[]) {
+ await CLIDispatcher.dispatch(
+ "quitGroup",
+ {
+ groupId: this.id,
+ admin: successorAdmins?.map(i => i.number),
+ delete: deleteLocalData
+ },
+ this.client.process
+ );
+ }
} \ No newline at end of file
diff --git a/classes/GroupDataMessage.ts b/classes/GroupDataMessage.ts
index ee046b9..3608c6a 100644
--- a/classes/GroupDataMessage.ts
+++ b/classes/GroupDataMessage.ts
@@ -15,6 +15,9 @@ import {UserDataType} from "../enums/UserDataType";
import {IChatMessageURLPreview} from "../types/IChatMessageURLPreview";
import {ReceivedURLPreview} from "./ReceivedURLPreview";
import {IReceivedMessageURLPreview} from "../types/IReceivedMessageURLPreview";
+import {IChatMessageOptions} from "../types/IChatMessageOptions";
+import {SentDataMessage} from "./SentDataMessage";
+import {QuoteBuilder} from "./QuoteBuilder";
/**
* A data message as sent by Signal
@@ -31,10 +34,10 @@ export class GroupDataMessage extends GroupMessage implements DataMessage {
super(user, time, new Group(groupId, client), client, data.expiresInSeconds);
this.client = client;
this.content = data.message && data.message.trim().length > 0 ? data.message : null;
- if (data.quote) this.quote = new QuoteMessage(data.quote);
+ if (data.quote) this.quote = new QuoteMessage(data.quote, client);
this.attachments = data.attachments?.map(i => new Attachment(i));
this.formatting = new MessageFormatting(data.message && data.message.trim().length > 0 ? data.message : "", data.textStyles);
- this.mentions = data.mentions?.map(mention => new UserMention(new User(mention, UserDataType.Mention), mention.start, mention.length));
+ this.mentions = data.mentions?.map(mention => new UserMention(new User(mention, UserDataType.MentionOrGroup, client), mention.start, mention.length));
this.previews = data.previews?.map(preview => (new ReceivedURLPreview(preview)).build());
}
@@ -61,4 +64,16 @@ export class GroupDataMessage extends GroupMessage implements DataMessage {
this.client.process
)
}
+
+ public async reply(text: string, options?: IChatMessageOptions): Promise<SentDataMessage> {
+ if (options) {
+ options.quote = new QuoteBuilder(this.client, this.createdTimestamp, this.author.number, this.content);
+ } else {
+ options = {
+ quote: new QuoteBuilder(this.client, this.createdTimestamp, this.author.number, this.content)
+ }
+ }
+
+ return await this.channel.send(text, options);
+ }
} \ No newline at end of file
diff --git a/classes/GroupEditor.ts b/classes/GroupEditor.ts
new file mode 100644
index 0000000..5fa5c21
--- /dev/null
+++ b/classes/GroupEditor.ts
@@ -0,0 +1,120 @@
+import {Group} from "./Group";
+import {User} from "./User";
+import {GroupPermissions} from "./GroupPermissions";
+import {UserDataType} from "../enums/UserDataType";
+import {Client} from "./Client";
+import {CLIDispatcher} from "./CLIDispatcher";
+import {Attachment} from "./Attachment";
+import {AttachmentBuilder} from "./AttachmentBuilder";
+import {GroupLinkStatus} from "../enums/GroupLinkStatus";
+
+export class GroupEditor {
+ public initiator: Group;
+ public id: string;
+ public name: string;
+ public description?: string;
+ public isMember: boolean;
+ public isBlocked: boolean;
+ public expirationSeconds: number;
+ public members: User[];
+ public pendingMembers: User[];
+ public requestingMembers: User[];
+ public admins: User[];
+ public bannedMembers: User[];
+ public permissions: GroupPermissions;
+ public inviteLink?: string;
+ private client: Client;
+
+ constructor(initiator: Group, data: any, client: Client) {
+ this.initiator = initiator;
+ this.client = client;
+
+ let group = data['result'].filter(i => i.id === this.initiator.id)[0];
+
+ this.id = group.id;
+ this.name = group.name;
+ this.description = group.description ?? null;
+ this.isMember = group.isMember;
+ this.isBlocked = group.isBlocked;
+ this.expirationSeconds = group.messageExpirationTime;
+ this.members = group.members?.map(i => new User(i, UserDataType.MentionOrGroup, client));
+ this.pendingMembers = group.pendingMembers?.map(i => new User(i, UserDataType.MentionOrGroup, client));
+ this.requestingMembers = group.requestingMembers?.map(i => new User(i, UserDataType.MentionOrGroup, client));
+ this.admins = group.admins?.map(i => new User(i, UserDataType.MentionOrGroup, client));
+ this.bannedMembers = group.banned?.map(i => new User(i, UserDataType.MentionOrGroup, client));
+ this.permissions = new GroupPermissions(group, this, client);
+ this.inviteLink = group.groupInviteLink ?? null;
+ }
+
+ public async setName(name: string) {
+ await CLIDispatcher.dispatch(
+ "updateGroup",
+ {
+ groupId: this.id,
+ name: name
+ },
+ this.client.process
+ );
+
+ this.name = name;
+ }
+
+ public async setDescription(description: string) {
+ await CLIDispatcher.dispatch(
+ "updateGroup",
+ {
+ groupId: this.id,
+ description: description
+ },
+ this.client.process
+ );
+
+ this.description = description;
+ }
+
+ public async setAvatar(avatar: AttachmentBuilder) {
+ await CLIDispatcher.dispatch(
+ "updateGroup",
+ {
+ groupId: this.id,
+ avatar: avatar.uri
+ },
+ this.client.process
+ );
+ }
+
+ public async setExpirationSeconds(seconds: number) {
+ await CLIDispatcher.dispatch(
+ "updateGroup",
+ {
+ groupId: this.id,
+ expiration: seconds
+ },
+ this.client.process
+ );
+
+ this.expirationSeconds = seconds;
+ }
+
+ public async resetInviteLink() {
+ await CLIDispatcher.dispatch(
+ "updateGroup",
+ {
+ groupId: this.id,
+ resetLink: true
+ },
+ this.client.process
+ );
+ }
+
+ public async setLinkStatus(status: GroupLinkStatus) {
+ await CLIDispatcher.dispatch(
+ "updateGroup",
+ {
+ groupId: this.id,
+ link: status === "withApproval" ? "enabled-with-approval" : status
+ },
+ this.client.process
+ );
+ }
+} \ No newline at end of file
diff --git a/classes/GroupMessage.ts b/classes/GroupMessage.ts
index 99a88f6..e919963 100644
--- a/classes/GroupMessage.ts
+++ b/classes/GroupMessage.ts
@@ -5,6 +5,7 @@ import {Client} from "./Client";
export class GroupMessage extends ReceivedMessage {
public channel: Group;
+ public isGroup: boolean = true;
constructor(user: User, time: number, group: Group, client: Client, expirity?: number) {
super(user, time, group, client, expirity);
diff --git a/classes/GroupPermissions.ts b/classes/GroupPermissions.ts
new file mode 100644
index 0000000..82ca1e2
--- /dev/null
+++ b/classes/GroupPermissions.ts
@@ -0,0 +1,66 @@
+import {GroupPermissionLevel} from "../enums/GroupPermissionLevel";
+import {Client} from "./Client";
+import {GroupPermissionName} from "../enums/GroupPermissionName";
+import {CLIDispatcher} from "./CLIDispatcher";
+import {GroupEditor} from "./GroupEditor";
+
+export class GroupPermissions {
+ public addMember: GroupPermissionLevel;
+ public editDetails: GroupPermissionLevel;
+ public sendMessage: GroupPermissionLevel;
+ public editor: GroupEditor;
+ private client: Client;
+
+ constructor(groupData: any, editor: GroupEditor, client: Client) {
+ this.editor = editor;
+
+ if (groupData.permissionAddMember === "ONLY_ADMINS") {
+ this.addMember = GroupPermissionLevel.Admins;
+ } else {
+ this.addMember = GroupPermissionLevel.Everyone;
+ }
+
+ if (groupData.permissionEditDetails === "ONLY_ADMINS") {
+ this.editDetails = GroupPermissionLevel.Admins;
+ } else {
+ this.editDetails = GroupPermissionLevel.Everyone;
+ }
+
+ if (groupData.permissionSendMessage === "ONLY_ADMINS") {
+ this.sendMessage = GroupPermissionLevel.Admins;
+ } else {
+ this.sendMessage = GroupPermissionLevel.Everyone;
+ }
+ }
+
+ public async change(permission: GroupPermissionName, level: GroupPermissionLevel) {
+ if (permission === GroupPermissionName.AddMember) {
+ await CLIDispatcher.dispatch(
+ "updateGroup",
+ {
+ group: this.editor.id,
+ setPermissionAddMember: level === "ONLY_ADMINS" ? "only-admins" : "every-member"
+ },
+ this.client.process
+ );
+ } else if (permission === GroupPermissionName.EditDetails) {
+ await CLIDispatcher.dispatch(
+ "updateGroup",
+ {
+ group: this.editor.id,
+ setPermissionEditDetails: level === "ONLY_ADMINS" ? "only-admins" : "every-member"
+ },
+ this.client.process
+ );
+ } else if (permission === GroupPermissionName.SendMessage) {
+ await CLIDispatcher.dispatch(
+ "updateGroup",
+ {
+ group: this.editor.id,
+ setPermissionSendMessages: level === "ONLY_ADMINS" ? "only-admins" : "every-member"
+ },
+ this.client.process
+ );
+ }
+ }
+} \ No newline at end of file
diff --git a/classes/QuoteBuilder.ts b/classes/QuoteBuilder.ts
index e259ac7..7fa62bd 100644
--- a/classes/QuoteBuilder.ts
+++ b/classes/QuoteBuilder.ts
@@ -1,11 +1,14 @@
import {QuoteMessage} from "./QuoteMessage";
+import {Client} from "./Client";
export class QuoteBuilder {
public timestamp: number;
public author: string;
public content?: string;
+ private client: Client;
- constructor(timestamp: number, number: string, text?: string) {
+ constructor(client: Client, timestamp: number, number: string, text?: string) {
+ this.client = client;
this.timestamp = timestamp;
this.author = number;
this.content = text;
@@ -16,6 +19,6 @@ export class QuoteBuilder {
authorNumber: this.author,
id: this.timestamp,
text: this.content
- });
+ }, this.client);
}
} \ No newline at end of file
diff --git a/classes/QuoteMessage.ts b/classes/QuoteMessage.ts
index 7363dd5..142ad23 100644
--- a/classes/QuoteMessage.ts
+++ b/classes/QuoteMessage.ts
@@ -1,6 +1,7 @@
import {User} from "./User";
import {Attachment} from "./Attachment";
import {UserDataType} from "../enums/UserDataType";
+import {Client} from "./Client";
export class QuoteMessage {
public createdAt: Date;
@@ -9,8 +10,8 @@ export class QuoteMessage {
public content?: string;
public attachments?: Attachment[];
- constructor(quoteData: any) {
- this.author = new User(quoteData, UserDataType.Quote);
+ constructor(quoteData: any, client: Client) {
+ this.author = new User(quoteData, UserDataType.Quote, client);
this.content = quoteData.text && quoteData.text.trim().length > 0 ? quoteData.text : null;
this.attachments = quoteData.attachments?.map(i => new Attachment(i));
this.createdTimestamp = quoteData.id;
diff --git a/classes/ReactionTarget.ts b/classes/ReactionTarget.ts
index e845253..5a4803d 100644
--- a/classes/ReactionTarget.ts
+++ b/classes/ReactionTarget.ts
@@ -7,6 +7,6 @@ import {Client} from "./Client";
export class ReactionTarget extends ReceivedMessage {
constructor(data: any, channel: DM|Group, client: Client) {
- super(new User(data.reaction, UserDataType.Reaction), data.reaction.targetSentTimestamp, channel, client, null);
+ super(new User(data.reaction, UserDataType.Reaction, client), data.reaction.targetSentTimestamp, channel, client, null);
}
} \ No newline at end of file
diff --git a/classes/ReceivedMessage.ts b/classes/ReceivedMessage.ts
index 2d6750c..509b06e 100644
--- a/classes/ReceivedMessage.ts
+++ b/classes/ReceivedMessage.ts
@@ -13,6 +13,7 @@ export class ReceivedMessage {
public expiresAt?: Date;
public expiresTimestamp?: number;
public expiresInSeconds?: number;
+ public isGroup: boolean;
constructor(user: User, time: number, channel: DM|Group, client: Client, expirity?: number|null) {
this.client = client;
diff --git a/classes/SignalAPIError.ts b/classes/SignalAPIError.ts
new file mode 100644
index 0000000..fc14b47
--- /dev/null
+++ b/classes/SignalAPIError.ts
@@ -0,0 +1,19 @@
+export class SignalAPIError extends Error {
+ public code: number;
+
+ constructor(message: string, code?: number) {
+ const errorCodes = {
+ '-1': "USER_ERROR",
+ '-3': "IO_ERROR",
+ '-4': "UNTRUSTED_KEY_ERROR"
+ }
+
+ super(message);
+ this.name = "SignalAPIError";
+
+ if (code) {
+ this.code = code;
+ this.message = "[" + (errorCodes[code.toString()] ?? code) + "] " + this.message;
+ }
+ }
+} \ No newline at end of file
diff --git a/classes/SignalError.ts b/classes/SignalCLIError.ts
index a197c12..2865b75 100644
--- a/classes/SignalError.ts
+++ b/classes/SignalCLIError.ts
@@ -1,10 +1,10 @@
-export class SignalError extends Error {
+export class SignalCLIError extends Error {
public executable: string;
public arguments: string[];
constructor(message: string, executable?: string, args?: string[]) {
super(message);
- this.name = "SignalError";
+ this.name = "SignalCLIError";
if (executable) this.executable = executable;
if (args) this.arguments = args;
diff --git a/classes/User.ts b/classes/User.ts
index 9d30a8e..577f951 100644
--- a/classes/User.ts
+++ b/classes/User.ts
@@ -1,12 +1,18 @@
import {UserDataType} from "../enums/UserDataType";
+import {CLIDispatcher} from "./CLIDispatcher";
+import {Client} from "./Client";
+import {DM} from "./DM";
export class User {
public number?: string = null;
public nickName?: string = null;
public uuid?: string = null;
public device?: number = null;
+ private client: Client;
+
+ constructor(data: any, dataType: UserDataType, client: Client) {
+ this.client = client;
- constructor(data: any, dataType: UserDataType) {
if (dataType === UserDataType.Envelope) {
if (data.sourceNumber && typeof data.sourceNumber === "string") this.number = data.sourceNumber;
if (data.sourceName && typeof data.sourceName === "string") this.nickName = data.sourceName;
@@ -18,9 +24,111 @@ export class User {
} else if (dataType === UserDataType.Reaction) {
if (data.targetAuthorNumber && typeof data.targetAuthorNumber === "string") this.number = data.targetAuthorNumber;
if (data.targetAuthorUuid && typeof data.targetAuthorUuid === "string") this.uuid = data.targetAuthorUuid;
- } else if (dataType === UserDataType.Mention) {
+ } else if (dataType === UserDataType.MentionOrGroup) {
if (data.number && typeof data.number === "string") this.number = data.number;
if (data.uuid && typeof data.uuid === "string") this.uuid = data.uuid;
+ } else if (dataType === UserDataType.Number) {
+ if (data && typeof data === "string") this.number = data;
+ }
+ }
+
+ public createDM() {
+ return new DM(this.uuid ?? null, this.number, this.client);
+ }
+
+ public static fromNumber(number: string, client: Client) {
+ return new User(number, UserDataType.Number, client);
+ }
+
+ public async setBlocked(blocked: boolean) {
+ if (blocked) {
+ await CLIDispatcher.dispatch(
+ "block",
+ {
+ recipient: [this.number]
+ },
+ this.client.process
+ );
+ } else {
+ await CLIDispatcher.dispatch(
+ "unblock",
+ {
+ recipient: [this.number]
+ },
+ this.client.process
+ );
+ }
+ }
+
+ public async verify(safetyNumber?: string) {
+ if (safetyNumber) {
+ await CLIDispatcher.dispatch(
+ "trust",
+ {
+ verifiedSafetyNumber: safetyNumber.replaceAll(" ", "").replaceAll("\r\n", "").replaceAll("\n", ""),
+ recipient: [this.number]
+ },
+ this.client.process
+ );
+ } else {
+ await CLIDispatcher.dispatch(
+ "trust",
+ {
+ trustAllKnownKeys: true,
+ recipient: [this.number]
+ },
+ this.client.process
+ );
}
}
+
+ public async addToContacts(name?: string, disappearingMessagesTime?: number) {
+ await CLIDispatcher.dispatch(
+ "updateContact",
+ {
+ name: name,
+ recipient: [this.number]
+ },
+ this.client.process
+ );
+
+ await CLIDispatcher.dispatch(
+ "sendContacts",
+ {},
+ this.client.process
+ );
+ }
+
+ public async removeFromContacts() {
+ await CLIDispatcher.dispatch(
+ "removeContact",
+ {
+ recipient: [this.number]
+ },
+ this.client.process
+ );
+
+ await CLIDispatcher.dispatch(
+ "sendContacts",
+ {},
+ this.client.process
+ );
+ }
+
+ public async setDisappearingMessagesTime(time?: number) {
+ await CLIDispatcher.dispatch(
+ "updateContact",
+ {
+ expiration: time ?? 0,
+ recipient: [this.number]
+ },
+ this.client.process
+ );
+
+ await CLIDispatcher.dispatch(
+ "sendContacts",
+ {},
+ this.client.process
+ );
+ }
} \ No newline at end of file
diff --git a/dist/classes/CLIDispatcher.js b/dist/classes/CLIDispatcher.js
index e7a669d..7510ac5 100644
--- a/dist/classes/CLIDispatcher.js
+++ b/dist/classes/CLIDispatcher.js
@@ -2,9 +2,10 @@
Object.defineProperty(exports, "__esModule", { value: true });
exports.CLIDispatcher = void 0;
const crypto_1 = require("crypto");
+const SignalAPIError_1 = require("./SignalAPIError");
class CLIDispatcher {
static dispatch(method, params, proc) {
- return new Promise((res) => {
+ return new Promise((res, rej) => {
let id = (0, crypto_1.randomUUID)();
let payload = {
jsonrpc: "2.0",
@@ -16,6 +17,9 @@ class CLIDispatcher {
if (raw.toString().trim() === "")
return;
let data = JSON.parse(raw.toString());
+ if (data.error) {
+ rej(new SignalAPIError_1.SignalAPIError(data.error.message ?? null, data.error.code ?? null));
+ }
if (data.id === id) {
res(data);
proc.stdout.removeListener("data", callback);
diff --git a/dist/classes/CLIDispatcher.js.map b/dist/classes/CLIDispatcher.js.map
index d0e562b..3b5e205 100644
--- a/dist/classes/CLIDispatcher.js.map
+++ b/dist/classes/CLIDispatcher.js.map
@@ -1 +1 @@
-{"version":3,"file":"CLIDispatcher.js","sourceRoot":"","sources":["../../classes/CLIDispatcher.ts"],"names":[],"mappings":";;;AACA,mCAAwC;AAGxC,MAAa,aAAa;IACtB,MAAM,CAAC,QAAQ,CAAC,MAAc,EAAE,MAAW,EAAE,IAAkB;QAC3D,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;YACvB,IAAI,EAAE,GAAS,IAAA,mBAAU,GAAE,CAAC;YAC5B,IAAI,OAAO,GAAgB;gBACvB,OAAO,EAAE,KAAK;gBACd,MAAM;gBACN,MAAM;gBACN,EAAE;aACL,CAAA;YAED,IAAI,QAAQ,GAAkB,CAAC,GAAG,EAAQ,EAAE;gBACxC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE;oBAAE,OAAO;gBACzC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAEtC,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;oBAChB,GAAG,CAAC,IAAI,CAAC,CAAC;oBACV,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;iBAChD;YACL,CAAC,CAAA;YAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAzBD,sCAyBC"} \ No newline at end of file
+{"version":3,"file":"CLIDispatcher.js","sourceRoot":"","sources":["../../classes/CLIDispatcher.ts"],"names":[],"mappings":";;;AACA,mCAAwC;AAGxC,qDAAgD;AAEhD,MAAa,aAAa;IACtB,MAAM,CAAC,QAAQ,CAAC,MAAc,EAAE,MAAW,EAAE,IAAkB;QAC3D,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC5B,IAAI,EAAE,GAAS,IAAA,mBAAU,GAAE,CAAC;YAC5B,IAAI,OAAO,GAAgB;gBACvB,OAAO,EAAE,KAAK;gBACd,MAAM;gBACN,MAAM;gBACN,EAAE;aACL,CAAA;YAED,IAAI,QAAQ,GAAkB,CAAC,GAAG,EAAQ,EAAE;gBACxC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE;oBAAE,OAAO;gBACzC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAEtC,IAAI,IAAI,CAAC,KAAK,EAAE;oBACZ,GAAG,CAAC,IAAI,+BAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;iBAChF;gBAED,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;oBAChB,GAAG,CAAC,IAAI,CAAC,CAAC;oBACV,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;iBAChD;YACL,CAAC,CAAA;YAED,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA7BD,sCA6BC"} \ No newline at end of file
diff --git a/dist/classes/CLIEvent.js b/dist/classes/CLIEvent.js
index d2992b7..15660da 100644
--- a/dist/classes/CLIEvent.js
+++ b/dist/classes/CLIEvent.js
@@ -16,6 +16,7 @@ const DMEditMessage_1 = require("./DMEditMessage");
const GroupEditMessage_1 = require("./GroupEditMessage");
const GroupDeleteMessage_1 = require("./GroupDeleteMessage");
const DMDeleteMessage_1 = require("./DMDeleteMessage");
+const Group_1 = require("./Group");
/**
* A signal-cli event
*/
@@ -27,11 +28,11 @@ class CLIEvent {
if (client.verbose)
console.log(data.params.envelope.typingMessage);
if (data.params.envelope.typingMessage.groupId) {
- let message = new GroupTypingMessage_1.GroupTypingMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope), data.params.envelope.typingMessage.action, data.params.envelope.typingMessage.timestamp, data.params.envelope.typingMessage.groupId, client);
+ let message = new GroupTypingMessage_1.GroupTypingMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope, client), data.params.envelope.typingMessage.action, data.params.envelope.typingMessage.timestamp, data.params.envelope.typingMessage.groupId, client);
client.emit("typingMessage", message);
}
else {
- let message = new DMTypingMessage_1.DMTypingMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope), data.params.envelope.typingMessage.action, data.params.envelope.typingMessage.timestamp, client);
+ let message = new DMTypingMessage_1.DMTypingMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope, client), data.params.envelope.typingMessage.action, data.params.envelope.typingMessage.timestamp, client);
client.emit("typingMessage", message);
}
}
@@ -39,30 +40,35 @@ class CLIEvent {
if (client.verbose)
console.log(data.params.envelope.editMessage);
if (data.params.envelope.editMessage.dataMessage.groupInfo) {
- let message = new GroupEditMessage_1.GroupEditMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope), data.params.envelope.editMessage.dataMessage, data.params.envelope.editMessage.dataMessage.timestamp, data.params.envelope.editMessage.dataMessage.groupInfo.groupId, data.params.envelope.editMessage.targetSentTimestamp, client);
+ let message = new GroupEditMessage_1.GroupEditMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope, client), data.params.envelope.editMessage.dataMessage, data.params.envelope.editMessage.dataMessage.timestamp, data.params.envelope.editMessage.dataMessage.groupInfo.groupId, data.params.envelope.editMessage.targetSentTimestamp, client);
client.emit("editMessage", message);
}
else {
- let message = new DMEditMessage_1.DMEditMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope), data.params.envelope.editMessage.dataMessage, data.params.envelope.editMessage.dataMessage.timestamp, data.params.envelope.editMessage.targetSentTimestamp, client);
+ let message = new DMEditMessage_1.DMEditMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope, client), data.params.envelope.editMessage.dataMessage, data.params.envelope.editMessage.dataMessage.timestamp, data.params.envelope.editMessage.targetSentTimestamp, client);
client.emit("editMessage", message);
}
}
else if (data.params.envelope.dataMessage) {
if (client.verbose)
console.log(data.params.envelope.dataMessage);
- if (data.params.envelope.dataMessage.remoteDelete) {
+ if (data.params.envelope.dataMessage.groupInfo && data.params.envelope.dataMessage.groupInfo.type !== "DELIVER") {
+ if (data.params.envelope.dataMessage.groupInfo.type === "UPDATE") {
+ client.emit("groupUpdate", new Group_1.Group(data.params.envelope.dataMessage.groupInfo.groupId, client));
+ }
+ }
+ else if (data.params.envelope.dataMessage.remoteDelete) {
if (data.params.envelope.dataMessage.groupInfo) {
- let message = new GroupDeleteMessage_1.GroupDeleteMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope), data.params.envelope.dataMessage, data.params.envelope.dataMessage.timestamp, data.params.envelope.dataMessage.groupInfo.groupId, client, data.params.envelope.dataMessage.remoteDelete.timestamp);
+ let message = new GroupDeleteMessage_1.GroupDeleteMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope, client), data.params.envelope.dataMessage, data.params.envelope.dataMessage.timestamp, data.params.envelope.dataMessage.groupInfo.groupId, client, data.params.envelope.dataMessage.remoteDelete.timestamp);
client.emit("deleteMessage", message);
}
else {
- let message = new DMDeleteMessage_1.DMDeleteMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope), data.params.envelope.dataMessage, data.params.envelope.dataMessage.timestamp, client, data.params.envelope.dataMessage.remoteDelete.timestamp);
+ let message = new DMDeleteMessage_1.DMDeleteMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope, client), data.params.envelope.dataMessage, data.params.envelope.dataMessage.timestamp, client, data.params.envelope.dataMessage.remoteDelete.timestamp);
client.emit("deleteMessage", message);
}
}
else if (data.params.envelope.dataMessage.reaction) {
if (data.params.envelope.dataMessage.groupInfo) {
- let message = new GroupReactionMessage_1.GroupReactionMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope), data.params.envelope.dataMessage, data.params.envelope.dataMessage.timestamp, data.params.envelope.dataMessage.groupInfo.groupId, client);
+ let message = new GroupReactionMessage_1.GroupReactionMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope, client), data.params.envelope.dataMessage, data.params.envelope.dataMessage.timestamp, data.params.envelope.dataMessage.groupInfo.groupId, client);
client.emit("reaction", message);
if (message.removed) {
client.emit("reactionRemove", message);
@@ -72,7 +78,7 @@ class CLIEvent {
}
}
else {
- let message = new DMReactionMessage_1.DMReactionMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope), data.params.envelope.dataMessage, data.params.envelope.dataMessage.timestamp, client);
+ let message = new DMReactionMessage_1.DMReactionMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope, client), data.params.envelope.dataMessage, data.params.envelope.dataMessage.timestamp, client);
client.emit("reaction", message);
if (message.removed) {
client.emit("reactionRemove", message);
@@ -86,22 +92,22 @@ class CLIEvent {
CLIDispatcher_1.CLIDispatcher.dispatch("listStickerPacks", {}, client.process).then((cliData) => {
client.stickerPacks['list'] = cliData.result;
if (data.params.envelope.dataMessage.groupInfo) {
- let message = new GroupStickerMessage_1.GroupStickerMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope), data.params.envelope.dataMessage, data.params.envelope.dataMessage.timestamp, data.params.envelope.dataMessage.groupInfo.groupId, client);
+ let message = new GroupStickerMessage_1.GroupStickerMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope, client), data.params.envelope.dataMessage, data.params.envelope.dataMessage.timestamp, data.params.envelope.dataMessage.groupInfo.groupId, client);
client.emit("sticker", message);
}
else {
- let message = new DMStickerMessage_1.DMStickerMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope), data.params.envelope.dataMessage, data.params.envelope.dataMessage.timestamp, client);
+ let message = new DMStickerMessage_1.DMStickerMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope, client), data.params.envelope.dataMessage, data.params.envelope.dataMessage.timestamp, client);
client.emit("sticker", message);
}
});
}
else {
if (data.params.envelope.dataMessage.groupInfo) {
- let message = new GroupDataMessage_1.GroupDataMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope), data.params.envelope.dataMessage, data.params.envelope.dataMessage.timestamp, data.params.envelope.dataMessage.groupInfo.groupId, client);
+ let message = new GroupDataMessage_1.GroupDataMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope, client), data.params.envelope.dataMessage, data.params.envelope.dataMessage.timestamp, data.params.envelope.dataMessage.groupInfo.groupId, client);
client.emit("message", message);
}
else {
- let message = new DMDataMessage_1.DMDataMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope), data.params.envelope.dataMessage, data.params.envelope.dataMessage.timestamp, client);
+ let message = new DMDataMessage_1.DMDataMessage(new User_1.User(data.params.envelope, UserDataType_1.UserDataType.Envelope, client), data.params.envelope.dataMessage, data.params.envelope.dataMessage.timestamp, client);
client.emit("message", message);
}
}
diff --git a/dist/classes/CLIEvent.js.map b/dist/classes/CLIEvent.js.map
index 4b9d2e7..c3a3cf8 100644
--- a/dist/classes/CLIEvent.js.map
+++ b/dist/classes/CLIEvent.js.map
@@ -1 +1 @@
-{"version":3,"file":"CLIEvent.js","sourceRoot":"","sources":["../../classes/CLIEvent.ts"],"names":[],"mappings":";;;AAGA,6DAAwD;AACxD,iCAA4B;AAC5B,uDAAkD;AAClD,yDAAoD;AACpD,mDAA8C;AAC9C,wDAAmD;AACnD,2DAAsD;AACtD,iEAA4D;AAC5D,mDAA8C;AAC9C,yDAAoD;AACpD,+DAA0D;AAC1D,mDAA8C;AAC9C,yDAAoD;AACpD,6DAAwD;AACxD,uDAAkD;AAElD;;GAEG;AACH,MAAa,QAAQ;IACjB,MAAM,CAAC,SAAS,CAAC,MAAc,EAAE,IAAe;QAC5C,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE9B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE;gBACpC,IAAI,MAAM,CAAC,OAAO;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAEpE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE;oBAC5C,IAAI,OAAO,GAAuB,IAAI,uCAAkB,CACpD,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,CAAC,EACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,EAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAC1C,MAAM,CACT,CAAC;oBAEF,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;iBACzC;qBAAM;oBACH,IAAI,OAAO,GAAoB,IAAI,iCAAe,CAC9C,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,CAAC,EACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,EAC5C,MAAM,CACT,CAAC;oBAEF,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;iBACzC;aACJ;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;gBACzC,IAAI,MAAM,CAAC,OAAO;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAElE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE;oBACxD,IAAI,OAAO,GAAqB,IAAI,mCAAgB,CAChD,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,CAAC,EACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,EACpD,MAAM,CACT,CAAC;oBAEF,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;iBACvC;qBAAM;oBACH,IAAI,OAAO,GAAkB,IAAI,6BAAa,CAC1C,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,CAAC,EACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,EACpD,MAAM,CACT,CAAC;oBAEF,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;iBACvC;aACJ;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;gBACzC,IAAI,MAAM,CAAC,OAAO;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAElE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE;oBAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE;wBAC5C,IAAI,OAAO,GAAuB,IAAI,uCAAkB,CACpD,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,CAAC,EACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAClD,MAAM,EACN,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAC1D,CAAC;wBAEF,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;qBACzC;yBAAM;wBACH,IAAI,OAAO,GAAoB,IAAI,iCAAe,CAC9C,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,CAAC,EACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAC1C,MAAM,EACN,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAC1D,CAAC;wBAEF,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;qBACzC;iBACJ;qBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE;oBAClD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE;wBAC5C,IAAI,OAAO,GAAyB,IAAI,2CAAoB,CACxD,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,CAAC,EACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAClD,MAAM,CACT,CAAC;wBAEF,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBAEjC,IAAI,OAAO,CAAC,OAAO,EAAE;4BACjB,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;yBAC1C;6BAAM;4BACH,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;yBACvC;qBACJ;yBAAM;wBACH,IAAI,OAAO,GAAsB,IAAI,qCAAiB,CAClD,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,CAAC,EACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAC1C,MAAM,CACT,CAAC;wBAEF,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBAEjC,IAAI,OAAO,CAAC,OAAO,EAAE;4BACjB,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;yBAC1C;6BAAM;4BACH,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;yBACvC;qBACJ;iBACJ;qBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE;oBACjD,6BAAa,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;wBAC5E,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;wBAE7C,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE;4BAC5C,IAAI,OAAO,GAAwB,IAAI,yCAAmB,CACtD,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,CAAC,EACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAClD,MAAM,CACT,CAAC;4BAEF,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;yBACnC;6BAAM;4BACH,IAAI,OAAO,GAAqB,IAAI,mCAAgB,CAChD,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,CAAC,EACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAC1C,MAAM,CACT,CAAC;4BAEF,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;yBACnC;oBACL,CAAC,CAAC,CAAA;iBACL;qBAAM;oBACH,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE;wBAC5C,IAAI,OAAO,GAAqB,IAAI,mCAAgB,CAChD,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,CAAC,EACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAClD,MAAM,CACT,CAAC;wBAEF,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;qBACnC;yBAAM;wBACH,IAAI,OAAO,GAAkB,IAAI,6BAAa,CAC1C,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,CAAC,EACrD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAC1C,MAAM,CACT,CAAC;wBAEF,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;qBACnC;iBACJ;aACJ;SACJ;IACL,CAAC;CACJ;AAlKD,4BAkKC"} \ No newline at end of file
+{"version":3,"file":"CLIEvent.js","sourceRoot":"","sources":["../../classes/CLIEvent.ts"],"names":[],"mappings":";;;AAGA,6DAAwD;AACxD,iCAA4B;AAC5B,uDAAkD;AAClD,yDAAoD;AACpD,mDAA8C;AAC9C,wDAAmD;AACnD,2DAAsD;AACtD,iEAA4D;AAC5D,mDAA8C;AAC9C,yDAAoD;AACpD,+DAA0D;AAC1D,mDAA8C;AAC9C,yDAAoD;AACpD,6DAAwD;AACxD,uDAAkD;AAClD,mCAA8B;AAE9B;;GAEG;AACH,MAAa,QAAQ;IACjB,MAAM,CAAC,SAAS,CAAC,MAAc,EAAE,IAAe;QAC5C,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE9B,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;YAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE;gBACpC,IAAI,MAAM,CAAC,OAAO;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAEpE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE;oBAC5C,IAAI,OAAO,GAAuB,IAAI,uCAAkB,CACpD,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,EAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAC1C,MAAM,CACT,CAAC;oBAEF,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;iBACzC;qBAAM;oBACH,IAAI,OAAO,GAAoB,IAAI,iCAAe,CAC9C,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,MAAM,EACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAS,EAC5C,MAAM,CACT,CAAC;oBAEF,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;iBACzC;aACJ;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;gBACzC,IAAI,MAAM,CAAC,OAAO;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAElE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EAAE;oBACxD,IAAI,OAAO,GAAqB,IAAI,mCAAgB,CAChD,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,EACpD,MAAM,CACT,CAAC;oBAEF,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;iBACvC;qBAAM;oBACH,IAAI,OAAO,GAAkB,IAAI,6BAAa,CAC1C,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,EAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,SAAS,EACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,EACpD,MAAM,CACT,CAAC;oBAEF,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;iBACvC;aACJ;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;gBACzC,IAAI,MAAM,CAAC,OAAO;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBAElE,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE;oBAC7G,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;wBAC9D,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,aAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;qBACrG;iBACJ;qBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,EAAE;oBACtD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE;wBAC5C,IAAI,OAAO,GAAuB,IAAI,uCAAkB,CACpD,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAClD,MAAM,EACN,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAC1D,CAAC;wBAEF,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;qBACzC;yBAAM;wBACH,IAAI,OAAO,GAAoB,IAAI,iCAAe,CAC9C,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAC1C,MAAM,EACN,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAC1D,CAAC;wBAEF,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;qBACzC;iBACJ;qBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE;oBAClD,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE;wBAC5C,IAAI,OAAO,GAAyB,IAAI,2CAAoB,CACxD,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAClD,MAAM,CACT,CAAC;wBAEF,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBAEjC,IAAI,OAAO,CAAC,OAAO,EAAE;4BACjB,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;yBAC1C;6BAAM;4BACH,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;yBACvC;qBACJ;yBAAM;wBACH,IAAI,OAAO,GAAsB,IAAI,qCAAiB,CAClD,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAC1C,MAAM,CACT,CAAC;wBAEF,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;wBAEjC,IAAI,OAAO,CAAC,OAAO,EAAE;4BACjB,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;yBAC1C;6BAAM;4BACH,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;yBACvC;qBACJ;iBACJ;qBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE;oBACjD,6BAAa,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;wBAC5E,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;wBAE7C,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE;4BAC5C,IAAI,OAAO,GAAwB,IAAI,yCAAmB,CACtD,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAClD,MAAM,CACT,CAAC;4BAEF,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;yBACnC;6BAAM;4BACH,IAAI,OAAO,GAAqB,IAAI,mCAAgB,CAChD,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAC1C,MAAM,CACT,CAAC;4BAEF,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;yBACnC;oBACL,CAAC,CAAC,CAAA;iBACL;qBAAM;oBACH,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE;wBAC5C,IAAI,OAAO,GAAqB,IAAI,mCAAgB,CAChD,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,EAClD,MAAM,CACT,CAAC;wBAEF,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;qBACnC;yBAAM;wBACH,IAAI,OAAO,GAAkB,IAAI,6BAAa,CAC1C,IAAI,WAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,EAC1C,MAAM,CACT,CAAC;wBAEF,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;qBACnC;iBACJ;aACJ;SACJ;IACL,CAAC;CACJ;AAtKD,4BAsKC"} \ No newline at end of file
diff --git a/dist/classes/Client.d.ts b/dist/classes/Client.d.ts
index 5e830ad..519f84f 100644
--- a/dist/classes/Client.d.ts
+++ b/dist/classes/Client.d.ts
@@ -17,16 +17,48 @@ import { DMEditMessage } from "./DMEditMessage";
import { GroupEditMessage } from "./GroupEditMessage";
import { GroupDeleteMessage } from "./GroupDeleteMessage";
import { DMDeleteMessage } from "./DMDeleteMessage";
+import { Group } from "./Group";
export declare interface Client {
+ /**
+ * @event Client#cliEvent
+ */
on(event: "cliEvent", listener: (event: ICLIEvent) => void): this;
+ /**
+ * @event Client#typingMessage
+ */
on(event: "typingMessage", listener: (message: GroupTypingMessage | DMTypingMessage) => void): this;
+ /**
+ * @event Client#message
+ */
on(event: "message", listener: (message: GroupDataMessage | DMDataMessage) => void): this;
+ /**
+ * @event Client#editMessage
+ */
on(event: "editMessage", listener: (message: GroupEditMessage | DMEditMessage) => void): this;
+ /**
+ * @event Client#reaction
+ */
on(event: "reaction", listener: (message: GroupReactionMessage | DMReactionMessage) => void): this;
+ /**
+ * @event Client#reactionAdd
+ */
on(event: "reactionAdd", listener: (message: GroupReactionMessage | DMReactionMessage) => void): this;
+ /**
+ * @event Client#reactionRemove
+ */
on(event: "reactionRemove", listener: (message: GroupReactionMessage | DMReactionMessage) => void): this;
+ /**
+ * @event Client#sticker
+ */
on(event: "sticker", listener: (message: GroupStickerMessage | DMStickerMessage) => void): this;
+ /**
+ * @event Client#deleteMessage
+ */
on(event: "deleteMessage", listener: (message: GroupDeleteMessage | DMDeleteMessage) => void): this;
+ /**
+ * @event Client#groupUpdate
+ */
+ on(event: "groupUpdate", listener: (group: Group) => void): this;
}
/**
* The base signal.js client
diff --git a/dist/classes/Client.js b/dist/classes/Client.js
index 77ee09c..07c13dc 100644
--- a/dist/classes/Client.js
+++ b/dist/classes/Client.js
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.Client = void 0;
const child_process_1 = require("child_process");
const CLIEvent_1 = require("./CLIEvent");
-const SignalError_1 = require("./SignalError");
+const SignalCLIError_1 = require("./SignalCLIError");
const events_1 = require("events");
/**
* The base signal.js client
@@ -52,7 +52,7 @@ class Client extends events_1.EventEmitter {
return;
if (chunk.toString().trim().startsWith("WARN "))
return;
- throw new SignalError_1.SignalError(chunk.toString(), command, parameters);
+ throw new SignalCLIError_1.SignalCLIError(chunk.toString(), command, parameters);
});
}
}
diff --git a/dist/classes/Client.js.map b/dist/classes/Client.js.map
index 2ae393b..120a7a5 100644
--- a/dist/classes/Client.js.map
+++ b/dist/classes/Client.js.map
@@ -1 +1 @@
-{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../classes/Client.ts"],"names":[],"mappings":";;;AACA,iDAAkD;AAElD,yCAAoC;AACpC,+CAA0C;AAC1C,mCAAoC;AA2BpC;;GAEG;AACH,MAAa,MAAO,SAAQ,qBAAY;IAKpC,YAAY,MAAe;QACvB,KAAK,EAAE,CAAC;QAJL,iBAAY,GAAgB,EAAE,CAAC;QAC/B,YAAO,GAAY,KAAK,CAAC;QAK5B,IAAI,OAAO,GAAW,MAAM,CAAC,SAAS,IAAI,YAAY,CAAC;QACvD,IAAI,UAAU,GAAa,EAAE,CAAC;QAE9B,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI;YAAE,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhE,IAAI,MAAM,CAAC,QAAQ;YAAE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,MAAM,CAAC,UAAU;YAAE,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACtE,IAAI,MAAM,CAAC,MAAM;YAAE,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YAAE,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACpG,IAAI,MAAM,CAAC,WAAW;YAAE,UAAU,CAAC,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACrF,IAAI,MAAM,CAAC,UAAU;YAAE,UAAU,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACpF,IAAI,MAAM,CAAC,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAE1C,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE3B,IAAI,CAAC,OAAO,GAAG,IAAA,qBAAK,EAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI;YAC9D,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,IAAI;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACrC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEjD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;gBACrC,IAAI,IAAI,GAAc,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACnD,IAAI,MAAM,CAAC,SAAS;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACxC,mBAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aAClC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACrC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,OAAO;YACzD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,OAAO;YACzD,MAAM,IAAI,yBAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;QAChE,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA7CD,wBA6CC"} \ No newline at end of file
+{"version":3,"file":"Client.js","sourceRoot":"","sources":["../../classes/Client.ts"],"names":[],"mappings":";;;AACA,iDAAkD;AAElD,yCAAoC;AACpC,qDAAgD;AAChD,mCAAoC;AA6DpC;;GAEG;AACH,MAAa,MAAO,SAAQ,qBAAY;IAKpC,YAAY,MAAe;QACvB,KAAK,EAAE,CAAC;QAJL,iBAAY,GAAgB,EAAE,CAAC;QAC/B,YAAO,GAAY,KAAK,CAAC;QAK5B,IAAI,OAAO,GAAW,MAAM,CAAC,SAAS,IAAI,YAAY,CAAC;QACvD,IAAI,UAAU,GAAa,EAAE,CAAC;QAE9B,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI;YAAE,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEhE,IAAI,MAAM,CAAC,QAAQ;YAAE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,MAAM,CAAC,UAAU;YAAE,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACtE,IAAI,MAAM,CAAC,MAAM;YAAE,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;YAAE,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACpG,IAAI,MAAM,CAAC,WAAW;YAAE,UAAU,CAAC,IAAI,CAAC,uBAAuB,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QACrF,IAAI,MAAM,CAAC,UAAU;YAAE,UAAU,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QACpF,IAAI,MAAM,CAAC,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAE1C,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7C,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE3B,IAAI,CAAC,OAAO,GAAG,IAAA,qBAAK,EAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI;YAC9D,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,IAAI;SACpB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACrC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAEjD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;gBACrC,IAAI,IAAI,GAAc,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACnD,IAAI,MAAM,CAAC,SAAS;oBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACxC,mBAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;aAClC;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACrC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,OAAO;YACzD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,OAAO;YACzD,MAAM,IAAI,+BAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;QACnE,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AA7CD,wBA6CC"} \ No newline at end of file
diff --git a/dist/classes/DM.d.ts b/dist/classes/DM.d.ts
index 03f84ac..f81d089 100644
--- a/dist/classes/DM.d.ts
+++ b/dist/classes/DM.d.ts
@@ -8,7 +8,7 @@ export declare class DM extends Channel {
id: string;
number: string;
private client;
- constructor(userId: string, number: string, client: Client);
+ constructor(userId: string | null, number: string, client: Client);
send(text: string, options?: IChatMessageOptions): Promise<SentDataMessage>;
setTyping(typing: boolean): Promise<void>;
sendSticker(sticker: Sticker): Promise<void>;
diff --git a/dist/classes/DM.js.map b/dist/classes/DM.js.map
index a3989db..8dd3578 100644
--- a/dist/classes/DM.js.map
+++ b/dist/classes/DM.js.map
@@ -1 +1 @@
-{"version":3,"file":"DM.js","sourceRoot":"","sources":["../../classes/DM.ts"],"names":[],"mappings":";;;AAAA,uCAAkC;AAClC,mDAA8C;AAG9C,uDAAkD;AAIlD,MAAa,EAAG,SAAQ,iBAAO;IAM3B,YAAY,MAAc,EAAE,MAAc,EAAE,MAAc;QACtD,KAAK,EAAE,CAAC;QANL,UAAK,GAAY,KAAK,CAAC;QAO1B,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,OAA6B;QACzD,IAAI,IAAI,GAAG,MAAM,6BAAa,CAAC,QAAQ,CACnC,MAAM,EACN;YACI,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;YACxB,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE;YACvD,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,gBAAgB;YACxD,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM;YAClD,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,OAAO;YAC7C,aAAa,EAAE,OAAO,EAAE,QAAQ;YAChC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG;YACjC,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK;YACrC,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW;YACjD,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK;YACrC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACrE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SAC9D,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC;QACvC,OAAO,IAAI,iCAAe,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAAe;QAClC,MAAM,6BAAa,CAAC,QAAQ,CACxB,YAAY,EACZ;YACI,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,CAAC,MAAM;SAChB,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAgB;QACrC,MAAM,6BAAa,CAAC,QAAQ,CACxB,MAAM,EACN;YACI,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;YACxB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,EAAE;SAC9C,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;CACJ;AA3DD,gBA2DC"} \ No newline at end of file
+{"version":3,"file":"DM.js","sourceRoot":"","sources":["../../classes/DM.ts"],"names":[],"mappings":";;;AAAA,uCAAkC;AAClC,mDAA8C;AAG9C,uDAAkD;AAIlD,MAAa,EAAG,SAAQ,iBAAO;IAM3B,YAAY,MAAmB,EAAE,MAAc,EAAE,MAAc;QAC3D,KAAK,EAAE,CAAC;QANL,UAAK,GAAY,KAAK,CAAC;QAO1B,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,OAA6B;QACzD,IAAI,IAAI,GAAG,MAAM,6BAAa,CAAC,QAAQ,CACnC,MAAM,EACN;YACI,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;YACxB,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE;YACvD,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,gBAAgB;YACxD,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM;YAClD,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,OAAO;YAC7C,aAAa,EAAE,OAAO,EAAE,QAAQ;YAChC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG;YACjC,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK;YACrC,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW;YACjD,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK;YACrC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACrE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SAC9D,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC;QACvC,OAAO,IAAI,iCAAe,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAAe;QAClC,MAAM,6BAAa,CAAC,QAAQ,CACxB,YAAY,EACZ;YACI,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,CAAC,MAAM;SAChB,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAgB;QACrC,MAAM,6BAAa,CAAC,QAAQ,CACxB,MAAM,EACN;YACI,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;YACxB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,EAAE;SAC9C,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;CACJ;AA3DD,gBA2DC"} \ No newline at end of file
diff --git a/dist/classes/DMDataMessage.d.ts b/dist/classes/DMDataMessage.d.ts
index 59752fe..4ce959a 100644
--- a/dist/classes/DMDataMessage.d.ts
+++ b/dist/classes/DMDataMessage.d.ts
@@ -7,6 +7,8 @@ import { QuoteMessage } from "./QuoteMessage";
import { MessageFormatting } from "./MessageFormatting";
import { UserMention } from "./UserMention";
import { IReceivedMessageURLPreview } from "../types/IReceivedMessageURLPreview";
+import { IChatMessageOptions } from "../types/IChatMessageOptions";
+import { SentDataMessage } from "./SentDataMessage";
/**
* A data message as sent by Signal
*/
@@ -20,4 +22,5 @@ export declare class DMDataMessage extends DMMessage implements DataMessage {
constructor(user: User, data: any, time: number, client: Client);
markAsRead(): Promise<void>;
markAsViewed(): Promise<void>;
+ reply(text: string, options?: IChatMessageOptions): Promise<SentDataMessage>;
}
diff --git a/dist/classes/DMDataMessage.js b/dist/classes/DMDataMessage.js
index dd8aecf..56371a0 100644
--- a/dist/classes/DMDataMessage.js
+++ b/dist/classes/DMDataMessage.js
@@ -12,6 +12,7 @@ const MessageFormatting_1 = require("./MessageFormatting");
const UserMention_1 = require("./UserMention");
const UserDataType_1 = require("../enums/UserDataType");
const ReceivedURLPreview_1 = require("./ReceivedURLPreview");
+const QuoteBuilder_1 = require("./QuoteBuilder");
/**
* A data message as sent by Signal
*/
@@ -23,10 +24,10 @@ class DMDataMessage extends DMMessage_1.DMMessage {
this.previews = [];
this.content = data.message && data.message.trim().length > 0 ? data.message : null;
if (data.quote)
- this.quote = new QuoteMessage_1.QuoteMessage(data.quote);
+ this.quote = new QuoteMessage_1.QuoteMessage(data.quote, client);
this.attachments = data.attachments?.map(i => new Attachment_1.Attachment(i));
this.formatting = new MessageFormatting_1.MessageFormatting(data.message && data.message.trim().length > 0 ? data.message : "", data.textStyles);
- this.mentions = data.mentions?.map(mention => new UserMention_1.UserMention(new User_1.User(UserDataType_1.UserDataType.Mention, mention), mention.start, mention.length));
+ this.mentions = data.mentions?.map(mention => new UserMention_1.UserMention(new User_1.User(UserDataType_1.UserDataType.MentionOrGroup, mention, client), mention.start, mention.length));
this.previews = data.previews?.map(preview => (new ReceivedURLPreview_1.ReceivedURLPreview(preview)).build());
}
async markAsRead() {
@@ -43,6 +44,17 @@ class DMDataMessage extends DMMessage_1.DMMessage {
type: MessageReceipt_1.MessageReceipt.Viewed
}, this.client.process);
}
+ async reply(text, options) {
+ if (options) {
+ options.quote = new QuoteBuilder_1.QuoteBuilder(this.client, this.createdTimestamp, this.author.number, this.content);
+ }
+ else {
+ options = {
+ quote: new QuoteBuilder_1.QuoteBuilder(this.client, this.createdTimestamp, this.author.number, this.content)
+ };
+ }
+ return await this.channel.send(text, options);
+ }
}
exports.DMDataMessage = DMDataMessage;
//# sourceMappingURL=DMDataMessage.js.map \ No newline at end of file
diff --git a/dist/classes/DMDataMessage.js.map b/dist/classes/DMDataMessage.js.map
index dba3e47..35ab0c9 100644
--- a/dist/classes/DMDataMessage.js.map
+++ b/dist/classes/DMDataMessage.js.map
@@ -1 +1 @@
-{"version":3,"file":"DMDataMessage.js","sourceRoot":"","sources":["../../classes/DMDataMessage.ts"],"names":[],"mappings":";;;AAAA,iCAA4B;AAC5B,2CAAsC;AACtC,6BAAwB;AAGxB,6CAAwC;AACxC,iDAA4C;AAC5C,mDAA8C;AAC9C,4DAAuD;AACvD,2DAAsD;AAEtD,+CAA0C;AAC1C,wDAAmD;AACnD,6DAAwD;AAKxD;;GAEG;AACH,MAAa,aAAc,SAAQ,qBAAS;IAQxC,YAAY,IAAU,EAAE,IAAS,EAAE,IAAY,EAAE,MAAc;QAC3D,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,OAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAPtF,gBAAW,GAAiB,EAAE,CAAC;QAC/B,aAAQ,GAAkB,EAAE,CAAC;QAC7B,aAAQ,GAAiC,EAAE,CAAC;QAM/C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACpF,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,uBAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7H,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,yBAAW,CAAC,IAAI,WAAI,CAAC,2BAAY,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACvI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,uCAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7F,CAAC;IAEM,KAAK,CAAC,UAAU;QACnB,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC7B,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,IAAI,EAAE,+BAAc,CAAC,IAAI;SAC5B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,YAAY;QACrB,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC7B,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,IAAI,EAAE,+BAAc,CAAC,MAAM;SAC9B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAA;IACL,CAAC;CACJ;AAzCD,sCAyCC"} \ No newline at end of file
+{"version":3,"file":"DMDataMessage.js","sourceRoot":"","sources":["../../classes/DMDataMessage.ts"],"names":[],"mappings":";;;AAAA,iCAA4B;AAC5B,2CAAsC;AACtC,6BAAwB;AAGxB,6CAAwC;AACxC,iDAA4C;AAC5C,mDAA8C;AAC9C,4DAAuD;AACvD,2DAAsD;AAEtD,+CAA0C;AAC1C,wDAAmD;AACnD,6DAAwD;AAMxD,iDAA4C;AAE5C;;GAEG;AACH,MAAa,aAAc,SAAQ,qBAAS;IAQxC,YAAY,IAAU,EAAE,IAAS,EAAE,IAAY,EAAE,MAAc;QAC3D,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,OAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAPtF,gBAAW,GAAiB,EAAE,CAAC;QAC/B,aAAQ,GAAkB,EAAE,CAAC;QAC7B,aAAQ,GAAiC,EAAE,CAAC;QAM/C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACpF,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,uBAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7H,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,yBAAW,CAAC,IAAI,WAAI,CAAC,2BAAY,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACtJ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,uCAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7F,CAAC;IAEM,KAAK,CAAC,UAAU;QACnB,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC7B,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,IAAI,EAAE,+BAAc,CAAC,IAAI;SAC5B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,YAAY;QACrB,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC7B,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,IAAI,EAAE,+BAAc,CAAC,MAAM;SAC9B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,OAA6B;QAC1D,IAAI,OAAO,EAAE;YACT,OAAO,CAAC,KAAK,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SAC1G;aAAM;YACH,OAAO,GAAG;gBACN,KAAK,EAAE,IAAI,2BAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC;aAChG,CAAA;SACJ;QAED,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;CACJ;AArDD,sCAqDC"} \ No newline at end of file
diff --git a/dist/classes/DMMessage.d.ts b/dist/classes/DMMessage.d.ts
index 46fb474..1226cef 100644
--- a/dist/classes/DMMessage.d.ts
+++ b/dist/classes/DMMessage.d.ts
@@ -4,5 +4,6 @@ import { DM } from "./DM";
import { Client } from "./Client";
export declare class DMMessage extends ReceivedMessage {
channel: DM;
+ isGroup: boolean;
constructor(user: User, time: number, dm: DM, client: Client, expirity?: number);
}
diff --git a/dist/classes/DMMessage.js b/dist/classes/DMMessage.js
index ae63b22..8d3a8d6 100644
--- a/dist/classes/DMMessage.js
+++ b/dist/classes/DMMessage.js
@@ -5,6 +5,7 @@ const ReceivedMessage_1 = require("./ReceivedMessage");
class DMMessage extends ReceivedMessage_1.ReceivedMessage {
constructor(user, time, dm, client, expirity) {
super(user, time, dm, client, expirity);
+ this.isGroup = false;
}
}
exports.DMMessage = DMMessage;
diff --git a/dist/classes/DMMessage.js.map b/dist/classes/DMMessage.js.map
index 21fed4c..bf3e4b6 100644
--- a/dist/classes/DMMessage.js.map
+++ b/dist/classes/DMMessage.js.map
@@ -1 +1 @@
-{"version":3,"file":"DMMessage.js","sourceRoot":"","sources":["../../classes/DMMessage.ts"],"names":[],"mappings":";;;AAAA,uDAAkD;AAKlD,MAAa,SAAU,SAAQ,iCAAe;IAG1C,YAAY,IAAU,EAAE,IAAY,EAAE,EAAM,EAAE,MAAc,EAAE,QAAiB;QAC3E,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;CACJ;AAND,8BAMC"} \ No newline at end of file
+{"version":3,"file":"DMMessage.js","sourceRoot":"","sources":["../../classes/DMMessage.ts"],"names":[],"mappings":";;;AAAA,uDAAkD;AAKlD,MAAa,SAAU,SAAQ,iCAAe;IAI1C,YAAY,IAAU,EAAE,IAAY,EAAE,EAAM,EAAE,MAAc,EAAE,QAAiB;QAC3E,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAHrC,YAAO,GAAY,KAAK,CAAC;IAIhC,CAAC;CACJ;AAPD,8BAOC"} \ No newline at end of file
diff --git a/dist/classes/Group.d.ts b/dist/classes/Group.d.ts
index 75d1e55..f415d09 100644
--- a/dist/classes/Group.d.ts
+++ b/dist/classes/Group.d.ts
@@ -3,6 +3,8 @@ import { Client } from "./Client";
import { IChatMessageOptions } from "../types/IChatMessageOptions";
import { SentDataMessage } from "./SentDataMessage";
import { Sticker } from "./Sticker";
+import { GroupEditor } from "./GroupEditor";
+import { User } from "./User";
export declare class Group extends Channel {
group: boolean;
id: string;
@@ -11,4 +13,13 @@ export declare class Group extends Channel {
send(text: string, options?: IChatMessageOptions): Promise<SentDataMessage>;
setTyping(typing: boolean): Promise<void>;
sendSticker(sticker: Sticker): Promise<void>;
+ setBlocked(blocked: boolean): Promise<void>;
+ editor(): Promise<GroupEditor>;
+ addAdmin(...users: User[]): Promise<void>;
+ removeAdmin(...users: User[]): Promise<void>;
+ addMember(...users: User[]): Promise<void>;
+ removeMember(...users: User[]): Promise<void>;
+ banMember(...users: User[]): Promise<void>;
+ unbanMember(...users: User[]): Promise<void>;
+ leave(deleteLocalData?: boolean, successorAdmins?: User[]): Promise<void>;
}
diff --git a/dist/classes/Group.js b/dist/classes/Group.js
index 77aa2c6..af68954 100644
--- a/dist/classes/Group.js
+++ b/dist/classes/Group.js
@@ -4,6 +4,7 @@ exports.Group = void 0;
const Channel_1 = require("./Channel");
const CLIDispatcher_1 = require("./CLIDispatcher");
const SentDataMessage_1 = require("./SentDataMessage");
+const GroupEditor_1 = require("./GroupEditor");
class Group extends Channel_1.Channel {
constructor(groupId, client) {
super();
@@ -48,6 +49,67 @@ class Group extends Channel_1.Channel {
sticker: sticker.pack.id + ":" + sticker.id
}, this.client.process);
}
+ async setBlocked(blocked) {
+ let groupData = await CLIDispatcher_1.CLIDispatcher.dispatch("listGroups", {}, this.client.process);
+ if (blocked) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("block", {
+ groupId: this.id,
+ recipient: groupData['result'].filter(i => i.id === this.id)[0].members.map(i => i.number)
+ }, this.client.process);
+ }
+ else {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("unblock", {
+ groupId: this.id,
+ recipient: groupData['result'].filter(i => i.id === this.id)[0].members.map(i => i.number)
+ }, this.client.process);
+ }
+ }
+ async editor() {
+ return new GroupEditor_1.GroupEditor(this, await CLIDispatcher_1.CLIDispatcher.dispatch("listGroups", {}, this.client.process), this.client);
+ }
+ async addAdmin(...users) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateGroup", {
+ groupId: this.id,
+ admin: users.map(i => i.number)
+ }, this.client.process);
+ }
+ async removeAdmin(...users) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateGroup", {
+ groupId: this.id,
+ removeAdmin: users.map(i => i.number)
+ }, this.client.process);
+ }
+ async addMember(...users) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateGroup", {
+ groupId: this.id,
+ member: users.map(i => i.number)
+ }, this.client.process);
+ }
+ async removeMember(...users) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateGroup", {
+ groupId: this.id,
+ removeMember: users.map(i => i.number)
+ }, this.client.process);
+ }
+ async banMember(...users) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateGroup", {
+ groupId: this.id,
+ ban: users.map(i => i.number)
+ }, this.client.process);
+ }
+ async unbanMember(...users) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateGroup", {
+ groupId: this.id,
+ unban: users.map(i => i.number)
+ }, this.client.process);
+ }
+ async leave(deleteLocalData = false, successorAdmins) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("quitGroup", {
+ groupId: this.id,
+ admin: successorAdmins?.map(i => i.number),
+ delete: deleteLocalData
+ }, this.client.process);
+ }
}
exports.Group = Group;
//# sourceMappingURL=Group.js.map \ No newline at end of file
diff --git a/dist/classes/Group.js.map b/dist/classes/Group.js.map
index 55c73a0..f82cead 100644
--- a/dist/classes/Group.js.map
+++ b/dist/classes/Group.js.map
@@ -1 +1 @@
-{"version":3,"file":"Group.js","sourceRoot":"","sources":["../../classes/Group.ts"],"names":[],"mappings":";;;AAAA,uCAAkC;AAElC,mDAA8C;AAE9C,uDAAkD;AAGlD,MAAa,KAAM,SAAQ,iBAAO;IAK9B,YAAY,OAAe,EAAE,MAAc;QACvC,KAAK,EAAE,CAAC;QALL,UAAK,GAAY,IAAI,CAAC;QAMzB,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,OAA6B;QACzD,IAAI,SAAS,GAAG,MAAM,6BAAa,CAAC,QAAQ,CACxC,YAAY,EACZ,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,IAAI,IAAI,GAAG,MAAM,6BAAa,CAAC,QAAQ,CACnC,MAAM,EACN;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1F,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE;YACvD,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,gBAAgB;YACxD,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM;YAClD,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,OAAO;YAC7C,aAAa,EAAE,OAAO,EAAE,QAAQ;YAChC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG;YACjC,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK;YACrC,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW;YACjD,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK;YACrC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACrE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SAC9D,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC;QACvC,OAAO,IAAI,iCAAe,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAAe;QAClC,IAAI,SAAS,GAAG,MAAM,6BAAa,CAAC,QAAQ,CACxC,YAAY,EACZ,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,MAAM,6BAAa,CAAC,QAAQ,CACxB,YAAY,EACZ;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1F,IAAI,EAAE,CAAC,MAAM;SAChB,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAgB;QACrC,IAAI,SAAS,GAAG,MAAM,6BAAa,CAAC,QAAQ,CACxC,YAAY,EACZ,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,MAAM,6BAAa,CAAC,QAAQ,CACxB,MAAM,EACN;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1F,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,EAAE;SAC9C,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;CACJ;AA9ED,sBA8EC"} \ No newline at end of file
+{"version":3,"file":"Group.js","sourceRoot":"","sources":["../../classes/Group.ts"],"names":[],"mappings":";;;AAAA,uCAAkC;AAElC,mDAA8C;AAE9C,uDAAkD;AAElD,+CAA0C;AAG1C,MAAa,KAAM,SAAQ,iBAAO;IAK9B,YAAY,OAAe,EAAE,MAAc;QACvC,KAAK,EAAE,CAAC;QALL,UAAK,GAAY,IAAI,CAAC;QAMzB,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAEM,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,OAA6B;QACzD,IAAI,SAAS,GAAG,MAAM,6BAAa,CAAC,QAAQ,CACxC,YAAY,EACZ,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,IAAI,IAAI,GAAG,MAAM,6BAAa,CAAC,QAAQ,CACnC,MAAM,EACN;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1F,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE;YACvD,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,gBAAgB;YACxD,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,MAAM,CAAC,MAAM;YAClD,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,OAAO;YAC7C,aAAa,EAAE,OAAO,EAAE,QAAQ;YAChC,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG;YACjC,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK;YACrC,kBAAkB,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW;YACjD,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK;YACrC,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACrE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SAC9D,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC;QACvC,OAAO,IAAI,iCAAe,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAAe;QAClC,IAAI,SAAS,GAAG,MAAM,6BAAa,CAAC,QAAQ,CACxC,YAAY,EACZ,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,MAAM,6BAAa,CAAC,QAAQ,CACxB,YAAY,EACZ;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1F,IAAI,EAAE,CAAC,MAAM;SAChB,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,OAAgB;QACrC,IAAI,SAAS,GAAG,MAAM,6BAAa,CAAC,QAAQ,CACxC,YAAY,EACZ,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,MAAM,6BAAa,CAAC,QAAQ,CACxB,MAAM,EACN;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1F,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC,EAAE;SAC9C,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,OAAgB;QACpC,IAAI,SAAS,GAAG,MAAM,6BAAa,CAAC,QAAQ,CACxC,YAAY,EACZ,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,IAAI,OAAO,EAAE;YACT,MAAM,6BAAa,CAAC,QAAQ,CACxB,OAAO,EACP;gBACI,OAAO,EAAE,IAAI,CAAC,EAAE;gBAChB,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;aAC7F,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;SACL;aAAM;YACH,MAAM,6BAAa,CAAC,QAAQ,CACxB,SAAS,EACT;gBACI,OAAO,EAAE,IAAI,CAAC,EAAE;gBAChB,SAAS,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;aAC7F,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;SACL;IACL,CAAC;IAEM,KAAK,CAAC,MAAM;QACf,OAAO,IAAI,yBAAW,CAAC,IAAI,EAAE,MAAM,6BAAa,CAAC,QAAQ,CACrD,YAAY,EACZ,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAEM,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAa;QAClC,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;SAClC,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,GAAG,KAAa;QACrC,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;SACxC,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,GAAG,KAAa;QACnC,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;SACnC,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,GAAG,KAAa;QACtC,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;SACzC,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,GAAG,KAAa;QACnC,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;SAChC,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,WAAW,CAAC,GAAG,KAAa;QACrC,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;SAClC,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,kBAA2B,KAAK,EAAE,eAAwB;QACzE,MAAM,6BAAa,CAAC,QAAQ,CACxB,WAAW,EACX;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,KAAK,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1C,MAAM,EAAE,eAAe;SAC1B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;CACJ;AAhMD,sBAgMC"} \ No newline at end of file
diff --git a/dist/classes/GroupDataMessage.d.ts b/dist/classes/GroupDataMessage.d.ts
index 21cab06..29cdccb 100644
--- a/dist/classes/GroupDataMessage.d.ts
+++ b/dist/classes/GroupDataMessage.d.ts
@@ -6,6 +6,8 @@ import { QuoteMessage } from "./QuoteMessage";
import { MessageFormatting } from "./MessageFormatting";
import { UserMention } from "./UserMention";
import { IReceivedMessageURLPreview } from "../types/IReceivedMessageURLPreview";
+import { IChatMessageOptions } from "../types/IChatMessageOptions";
+import { SentDataMessage } from "./SentDataMessage";
/**
* A data message as sent by Signal
*/
@@ -19,4 +21,5 @@ export declare class GroupDataMessage extends GroupMessage implements DataMessag
constructor(user: User, data: any, time: number, groupId: string, client: any);
markAsRead(): Promise<void>;
markAsViewed(): Promise<void>;
+ reply(text: string, options?: IChatMessageOptions): Promise<SentDataMessage>;
}
diff --git a/dist/classes/GroupDataMessage.js b/dist/classes/GroupDataMessage.js
index 9f23568..b488883 100644
--- a/dist/classes/GroupDataMessage.js
+++ b/dist/classes/GroupDataMessage.js
@@ -12,6 +12,7 @@ const MessageFormatting_1 = require("./MessageFormatting");
const UserMention_1 = require("./UserMention");
const UserDataType_1 = require("../enums/UserDataType");
const ReceivedURLPreview_1 = require("./ReceivedURLPreview");
+const QuoteBuilder_1 = require("./QuoteBuilder");
/**
* A data message as sent by Signal
*/
@@ -24,10 +25,10 @@ class GroupDataMessage extends GroupMessage_1.GroupMessage {
this.client = client;
this.content = data.message && data.message.trim().length > 0 ? data.message : null;
if (data.quote)
- this.quote = new QuoteMessage_1.QuoteMessage(data.quote);
+ this.quote = new QuoteMessage_1.QuoteMessage(data.quote, client);
this.attachments = data.attachments?.map(i => new Attachment_1.Attachment(i));
this.formatting = new MessageFormatting_1.MessageFormatting(data.message && data.message.trim().length > 0 ? data.message : "", data.textStyles);
- this.mentions = data.mentions?.map(mention => new UserMention_1.UserMention(new User_1.User(mention, UserDataType_1.UserDataType.Mention), mention.start, mention.length));
+ this.mentions = data.mentions?.map(mention => new UserMention_1.UserMention(new User_1.User(mention, UserDataType_1.UserDataType.MentionOrGroup, client), mention.start, mention.length));
this.previews = data.previews?.map(preview => (new ReceivedURLPreview_1.ReceivedURLPreview(preview)).build());
}
async markAsRead() {
@@ -44,6 +45,17 @@ class GroupDataMessage extends GroupMessage_1.GroupMessage {
type: MessageReceipt_1.MessageReceipt.Viewed
}, this.client.process);
}
+ async reply(text, options) {
+ if (options) {
+ options.quote = new QuoteBuilder_1.QuoteBuilder(this.client, this.createdTimestamp, this.author.number, this.content);
+ }
+ else {
+ options = {
+ quote: new QuoteBuilder_1.QuoteBuilder(this.client, this.createdTimestamp, this.author.number, this.content)
+ };
+ }
+ return await this.channel.send(text, options);
+ }
}
exports.GroupDataMessage = GroupDataMessage;
//# sourceMappingURL=GroupDataMessage.js.map \ No newline at end of file
diff --git a/dist/classes/GroupDataMessage.js.map b/dist/classes/GroupDataMessage.js.map
index 96f50b9..bf5513e 100644
--- a/dist/classes/GroupDataMessage.js.map
+++ b/dist/classes/GroupDataMessage.js.map
@@ -1 +1 @@
-{"version":3,"file":"GroupDataMessage.js","sourceRoot":"","sources":["../../classes/GroupDataMessage.ts"],"names":[],"mappings":";;;AAAA,iCAA4B;AAE5B,iDAA4C;AAC5C,mCAA8B;AAG9B,6CAAwC;AACxC,iDAA4C;AAC5C,mDAA8C;AAC9C,4DAAuD;AACvD,2DAAsD;AAEtD,+CAA0C;AAC1C,wDAAmD;AAEnD,6DAAwD;AAGxD;;GAEG;AACH,MAAa,gBAAiB,SAAQ,2BAAY;IAQ9C,YAAY,IAAU,EAAE,IAAS,EAAE,IAAY,EAAE,OAAe,EAAE,MAAM;QACpE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,aAAK,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAP1E,gBAAW,GAAiB,EAAE,CAAC;QAC/B,aAAQ,GAAkB,EAAE,CAAC;QAC7B,aAAQ,GAAiC,EAAE,CAAC;QAM/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACpF,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,uBAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7H,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,yBAAW,CAAC,IAAI,WAAI,CAAC,OAAO,EAAE,2BAAY,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACvI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,uCAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7F,CAAC;IAEM,KAAK,CAAC,UAAU;QACnB,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC7B,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,IAAI,EAAE,+BAAc,CAAC,IAAI;SAC5B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,YAAY;QACrB,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC7B,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,IAAI,EAAE,+BAAc,CAAC,MAAM;SAC9B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAA;IACL,CAAC;CACJ;AA1CD,4CA0CC"} \ No newline at end of file
+{"version":3,"file":"GroupDataMessage.js","sourceRoot":"","sources":["../../classes/GroupDataMessage.ts"],"names":[],"mappings":";;;AAAA,iCAA4B;AAE5B,iDAA4C;AAC5C,mCAA8B;AAG9B,6CAAwC;AACxC,iDAA4C;AAC5C,mDAA8C;AAC9C,4DAAuD;AACvD,2DAAsD;AAEtD,+CAA0C;AAC1C,wDAAmD;AAEnD,6DAAwD;AAIxD,iDAA4C;AAE5C;;GAEG;AACH,MAAa,gBAAiB,SAAQ,2BAAY;IAQ9C,YAAY,IAAU,EAAE,IAAS,EAAE,IAAY,EAAE,OAAe,EAAE,MAAM;QACpE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,aAAK,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAP1E,gBAAW,GAAiB,EAAE,CAAC;QAC/B,aAAQ,GAAkB,EAAE,CAAC;QAC7B,aAAQ,GAAiC,EAAE,CAAC;QAM/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QACpF,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,uBAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7H,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,yBAAW,CAAC,IAAI,WAAI,CAAC,OAAO,EAAE,2BAAY,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QACtJ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,uCAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7F,CAAC;IAEM,KAAK,CAAC,UAAU;QACnB,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC7B,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,IAAI,EAAE,+BAAc,CAAC,IAAI;SAC5B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,YAAY;QACrB,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;YAC7B,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,IAAI,EAAE,+BAAc,CAAC,MAAM;SAC9B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAA;IACL,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,OAA6B;QAC1D,IAAI,OAAO,EAAE;YACT,OAAO,CAAC,KAAK,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SAC1G;aAAM;YACH,OAAO,GAAG;gBACN,KAAK,EAAE,IAAI,2BAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC;aAChG,CAAA;SACJ;QAED,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;CACJ;AAtDD,4CAsDC"} \ No newline at end of file
diff --git a/dist/classes/GroupEditor.d.ts b/dist/classes/GroupEditor.d.ts
new file mode 100644
index 0000000..985d804
--- /dev/null
+++ b/dist/classes/GroupEditor.d.ts
@@ -0,0 +1,30 @@
+import { Group } from "./Group";
+import { User } from "./User";
+import { GroupPermissions } from "./GroupPermissions";
+import { Client } from "./Client";
+import { AttachmentBuilder } from "./AttachmentBuilder";
+import { GroupLinkStatus } from "../enums/GroupLinkStatus";
+export declare class GroupEditor {
+ initiator: Group;
+ id: string;
+ name: string;
+ description?: string;
+ isMember: boolean;
+ isBlocked: boolean;
+ expirationSeconds: number;
+ members: User[];
+ pendingMembers: User[];
+ requestingMembers: User[];
+ admins: User[];
+ bannedMembers: User[];
+ permissions: GroupPermissions;
+ inviteLink?: string;
+ private client;
+ constructor(initiator: Group, data: any, client: Client);
+ setName(name: string): Promise<void>;
+ setDescription(description: string): Promise<void>;
+ setAvatar(avatar: AttachmentBuilder): Promise<void>;
+ setExpirationSeconds(seconds: number): Promise<void>;
+ resetInviteLink(): Promise<void>;
+ setLinkStatus(status: GroupLinkStatus): Promise<void>;
+}
diff --git a/dist/classes/GroupEditor.js b/dist/classes/GroupEditor.js
new file mode 100644
index 0000000..534dc09
--- /dev/null
+++ b/dist/classes/GroupEditor.js
@@ -0,0 +1,68 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.GroupEditor = void 0;
+const User_1 = require("./User");
+const GroupPermissions_1 = require("./GroupPermissions");
+const UserDataType_1 = require("../enums/UserDataType");
+const CLIDispatcher_1 = require("./CLIDispatcher");
+class GroupEditor {
+ constructor(initiator, data, client) {
+ this.initiator = initiator;
+ this.client = client;
+ let group = data['result'].filter(i => i.id === this.initiator.id)[0];
+ this.id = group.id;
+ this.name = group.name;
+ this.description = group.description ?? null;
+ this.isMember = group.isMember;
+ this.isBlocked = group.isBlocked;
+ this.expirationSeconds = group.messageExpirationTime;
+ this.members = group.members?.map(i => new User_1.User(i, UserDataType_1.UserDataType.MentionOrGroup, client));
+ this.pendingMembers = group.pendingMembers?.map(i => new User_1.User(i, UserDataType_1.UserDataType.MentionOrGroup, client));
+ this.requestingMembers = group.requestingMembers?.map(i => new User_1.User(i, UserDataType_1.UserDataType.MentionOrGroup, client));
+ this.admins = group.admins?.map(i => new User_1.User(i, UserDataType_1.UserDataType.MentionOrGroup, client));
+ this.bannedMembers = group.banned?.map(i => new User_1.User(i, UserDataType_1.UserDataType.MentionOrGroup, client));
+ this.permissions = new GroupPermissions_1.GroupPermissions(group, this, client);
+ this.inviteLink = group.groupInviteLink ?? null;
+ }
+ async setName(name) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateGroup", {
+ groupId: this.id,
+ name: name
+ }, this.client.process);
+ this.name = name;
+ }
+ async setDescription(description) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateGroup", {
+ groupId: this.id,
+ description: description
+ }, this.client.process);
+ this.description = description;
+ }
+ async setAvatar(avatar) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateGroup", {
+ groupId: this.id,
+ avatar: avatar.uri
+ }, this.client.process);
+ }
+ async setExpirationSeconds(seconds) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateGroup", {
+ groupId: this.id,
+ expiration: seconds
+ }, this.client.process);
+ this.expirationSeconds = seconds;
+ }
+ async resetInviteLink() {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateGroup", {
+ groupId: this.id,
+ resetLink: true
+ }, this.client.process);
+ }
+ async setLinkStatus(status) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateGroup", {
+ groupId: this.id,
+ link: status === "withApproval" ? "enabled-with-approval" : status
+ }, this.client.process);
+ }
+}
+exports.GroupEditor = GroupEditor;
+//# sourceMappingURL=GroupEditor.js.map \ No newline at end of file
diff --git a/dist/classes/GroupEditor.js.map b/dist/classes/GroupEditor.js.map
new file mode 100644
index 0000000..c327f9f
--- /dev/null
+++ b/dist/classes/GroupEditor.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"GroupEditor.js","sourceRoot":"","sources":["../../classes/GroupEditor.ts"],"names":[],"mappings":";;;AACA,iCAA4B;AAC5B,yDAAoD;AACpD,wDAAmD;AAEnD,mDAA8C;AAK9C,MAAa,WAAW;IAiBpB,YAAY,SAAgB,EAAE,IAAS,EAAE,MAAc;QACnD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,qBAAqB,CAAC;QACrD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,WAAI,CAAC,CAAC,EAAE,2BAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QACzF,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,WAAI,CAAC,CAAC,EAAE,2BAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QACvG,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,WAAI,CAAC,CAAC,EAAE,2BAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QAC7G,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,WAAI,CAAC,CAAC,EAAE,2BAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,WAAI,CAAC,CAAC,EAAE,2BAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9F,IAAI,CAAC,WAAW,GAAG,IAAI,mCAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC;IACpD,CAAC;IAEM,KAAK,CAAC,OAAO,CAAC,IAAY;QAC7B,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,IAAI,EAAE,IAAI;SACb,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,WAAmB;QAC3C,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,WAAW,EAAE,WAAW;SAC3B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACnC,CAAC;IAEM,KAAK,CAAC,SAAS,CAAC,MAAyB;QAC5C,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,MAAM,EAAE,MAAM,CAAC,GAAG;SACrB,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,oBAAoB,CAAC,OAAe;QAC7C,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,UAAU,EAAE,OAAO;SACtB,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;IACrC,CAAC;IAEM,KAAK,CAAC,eAAe;QACxB,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,SAAS,EAAE,IAAI;SAClB,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,MAAuB;QAC9C,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;YACI,OAAO,EAAE,IAAI,CAAC,EAAE;YAChB,IAAI,EAAE,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,MAAM;SACrE,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;CACJ;AA7GD,kCA6GC"} \ No newline at end of file
diff --git a/dist/classes/GroupMessage.d.ts b/dist/classes/GroupMessage.d.ts
index f27a937..f1e4027 100644
--- a/dist/classes/GroupMessage.d.ts
+++ b/dist/classes/GroupMessage.d.ts
@@ -4,5 +4,6 @@ import { Group } from "./Group";
import { Client } from "./Client";
export declare class GroupMessage extends ReceivedMessage {
channel: Group;
+ isGroup: boolean;
constructor(user: User, time: number, group: Group, client: Client, expirity?: number);
}
diff --git a/dist/classes/GroupMessage.js b/dist/classes/GroupMessage.js
index c790b12..142fd33 100644
--- a/dist/classes/GroupMessage.js
+++ b/dist/classes/GroupMessage.js
@@ -5,6 +5,7 @@ const ReceivedMessage_1 = require("./ReceivedMessage");
class GroupMessage extends ReceivedMessage_1.ReceivedMessage {
constructor(user, time, group, client, expirity) {
super(user, time, group, client, expirity);
+ this.isGroup = true;
}
}
exports.GroupMessage = GroupMessage;
diff --git a/dist/classes/GroupMessage.js.map b/dist/classes/GroupMessage.js.map
index ccc35e6..1e4e0f9 100644
--- a/dist/classes/GroupMessage.js.map
+++ b/dist/classes/GroupMessage.js.map
@@ -1 +1 @@
-{"version":3,"file":"GroupMessage.js","sourceRoot":"","sources":["../../classes/GroupMessage.ts"],"names":[],"mappings":";;;AAAA,uDAAkD;AAKlD,MAAa,YAAa,SAAQ,iCAAe;IAG7C,YAAY,IAAU,EAAE,IAAY,EAAE,KAAY,EAAE,MAAc,EAAE,QAAiB;QACjF,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC/C,CAAC;CACJ;AAND,oCAMC"} \ No newline at end of file
+{"version":3,"file":"GroupMessage.js","sourceRoot":"","sources":["../../classes/GroupMessage.ts"],"names":[],"mappings":";;;AAAA,uDAAkD;AAKlD,MAAa,YAAa,SAAQ,iCAAe;IAI7C,YAAY,IAAU,EAAE,IAAY,EAAE,KAAY,EAAE,MAAc,EAAE,QAAiB;QACjF,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAHxC,YAAO,GAAY,IAAI,CAAC;IAI/B,CAAC;CACJ;AAPD,oCAOC"} \ No newline at end of file
diff --git a/dist/classes/GroupPermissions.d.ts b/dist/classes/GroupPermissions.d.ts
new file mode 100644
index 0000000..3ac1a56
--- /dev/null
+++ b/dist/classes/GroupPermissions.d.ts
@@ -0,0 +1,13 @@
+import { GroupPermissionLevel } from "../enums/GroupPermissionLevel";
+import { Client } from "./Client";
+import { GroupPermissionName } from "../enums/GroupPermissionName";
+import { GroupEditor } from "./GroupEditor";
+export declare class GroupPermissions {
+ addMember: GroupPermissionLevel;
+ editDetails: GroupPermissionLevel;
+ sendMessage: GroupPermissionLevel;
+ editor: GroupEditor;
+ private client;
+ constructor(groupData: any, editor: GroupEditor, client: Client);
+ change(permission: GroupPermissionName, level: GroupPermissionLevel): Promise<void>;
+}
diff --git a/dist/classes/GroupPermissions.js b/dist/classes/GroupPermissions.js
new file mode 100644
index 0000000..df342cd
--- /dev/null
+++ b/dist/classes/GroupPermissions.js
@@ -0,0 +1,51 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.GroupPermissions = void 0;
+const GroupPermissionLevel_1 = require("../enums/GroupPermissionLevel");
+const GroupPermissionName_1 = require("../enums/GroupPermissionName");
+const CLIDispatcher_1 = require("./CLIDispatcher");
+class GroupPermissions {
+ constructor(groupData, editor, client) {
+ this.editor = editor;
+ if (groupData.permissionAddMember === "ONLY_ADMINS") {
+ this.addMember = GroupPermissionLevel_1.GroupPermissionLevel.Admins;
+ }
+ else {
+ this.addMember = GroupPermissionLevel_1.GroupPermissionLevel.Everyone;
+ }
+ if (groupData.permissionEditDetails === "ONLY_ADMINS") {
+ this.editDetails = GroupPermissionLevel_1.GroupPermissionLevel.Admins;
+ }
+ else {
+ this.editDetails = GroupPermissionLevel_1.GroupPermissionLevel.Everyone;
+ }
+ if (groupData.permissionSendMessage === "ONLY_ADMINS") {
+ this.sendMessage = GroupPermissionLevel_1.GroupPermissionLevel.Admins;
+ }
+ else {
+ this.sendMessage = GroupPermissionLevel_1.GroupPermissionLevel.Everyone;
+ }
+ }
+ async change(permission, level) {
+ if (permission === GroupPermissionName_1.GroupPermissionName.AddMember) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateGroup", {
+ group: this.editor.id,
+ setPermissionAddMember: level === "ONLY_ADMINS" ? "only-admins" : "every-member"
+ }, this.client.process);
+ }
+ else if (permission === GroupPermissionName_1.GroupPermissionName.EditDetails) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateGroup", {
+ group: this.editor.id,
+ setPermissionEditDetails: level === "ONLY_ADMINS" ? "only-admins" : "every-member"
+ }, this.client.process);
+ }
+ else if (permission === GroupPermissionName_1.GroupPermissionName.SendMessage) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateGroup", {
+ group: this.editor.id,
+ setPermissionSendMessages: level === "ONLY_ADMINS" ? "only-admins" : "every-member"
+ }, this.client.process);
+ }
+ }
+}
+exports.GroupPermissions = GroupPermissions;
+//# sourceMappingURL=GroupPermissions.js.map \ No newline at end of file
diff --git a/dist/classes/GroupPermissions.js.map b/dist/classes/GroupPermissions.js.map
new file mode 100644
index 0000000..2cc42d2
--- /dev/null
+++ b/dist/classes/GroupPermissions.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"GroupPermissions.js","sourceRoot":"","sources":["../../classes/GroupPermissions.ts"],"names":[],"mappings":";;;AAAA,wEAAmE;AAEnE,sEAAiE;AACjE,mDAA8C;AAG9C,MAAa,gBAAgB;IAOzB,YAAY,SAAc,EAAE,MAAmB,EAAE,MAAc;QAC3D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,SAAS,CAAC,mBAAmB,KAAK,aAAa,EAAE;YACjD,IAAI,CAAC,SAAS,GAAG,2CAAoB,CAAC,MAAM,CAAC;SAChD;aAAM;YACH,IAAI,CAAC,SAAS,GAAG,2CAAoB,CAAC,QAAQ,CAAC;SAClD;QAED,IAAI,SAAS,CAAC,qBAAqB,KAAK,aAAa,EAAE;YACnD,IAAI,CAAC,WAAW,GAAG,2CAAoB,CAAC,MAAM,CAAC;SAClD;aAAM;YACH,IAAI,CAAC,WAAW,GAAG,2CAAoB,CAAC,QAAQ,CAAC;SACpD;QAED,IAAI,SAAS,CAAC,qBAAqB,KAAK,aAAa,EAAE;YACnD,IAAI,CAAC,WAAW,GAAG,2CAAoB,CAAC,MAAM,CAAC;SAClD;aAAM;YACH,IAAI,CAAC,WAAW,GAAG,2CAAoB,CAAC,QAAQ,CAAC;SACpD;IACL,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,UAA+B,EAAE,KAA2B;QAC5E,IAAI,UAAU,KAAK,yCAAmB,CAAC,SAAS,EAAE;YAC9C,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;gBACI,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;gBACrB,sBAAsB,EAAE,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;aACnF,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;SACL;aAAM,IAAI,UAAU,KAAK,yCAAmB,CAAC,WAAW,EAAE;YACvD,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;gBACI,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;gBACrB,wBAAwB,EAAE,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;aACrF,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;SACL;aAAM,IAAI,UAAU,KAAK,yCAAmB,CAAC,WAAW,EAAE;YACvD,MAAM,6BAAa,CAAC,QAAQ,CACxB,aAAa,EACb;gBACI,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;gBACrB,yBAAyB,EAAE,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc;aACtF,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;SACL;IACL,CAAC;CACJ;AA3DD,4CA2DC"} \ No newline at end of file
diff --git a/dist/classes/QuoteBuilder.d.ts b/dist/classes/QuoteBuilder.d.ts
index facd561..7d6833f 100644
--- a/dist/classes/QuoteBuilder.d.ts
+++ b/dist/classes/QuoteBuilder.d.ts
@@ -1,8 +1,10 @@
import { QuoteMessage } from "./QuoteMessage";
+import { Client } from "./Client";
export declare class QuoteBuilder {
timestamp: number;
author: string;
content?: string;
- constructor(timestamp: number, number: string, text?: string);
+ private client;
+ constructor(client: Client, timestamp: number, number: string, text?: string);
build(): QuoteMessage;
}
diff --git a/dist/classes/QuoteBuilder.js b/dist/classes/QuoteBuilder.js
index 6307ef8..886d3ae 100644
--- a/dist/classes/QuoteBuilder.js
+++ b/dist/classes/QuoteBuilder.js
@@ -3,7 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.QuoteBuilder = void 0;
const QuoteMessage_1 = require("./QuoteMessage");
class QuoteBuilder {
- constructor(timestamp, number, text) {
+ constructor(client, timestamp, number, text) {
+ this.client = client;
this.timestamp = timestamp;
this.author = number;
this.content = text;
@@ -13,7 +14,7 @@ class QuoteBuilder {
authorNumber: this.author,
id: this.timestamp,
text: this.content
- });
+ }, this.client);
}
}
exports.QuoteBuilder = QuoteBuilder;
diff --git a/dist/classes/QuoteBuilder.js.map b/dist/classes/QuoteBuilder.js.map
index 655aebc..eeb83bb 100644
--- a/dist/classes/QuoteBuilder.js.map
+++ b/dist/classes/QuoteBuilder.js.map
@@ -1 +1 @@
-{"version":3,"file":"QuoteBuilder.js","sourceRoot":"","sources":["../../classes/QuoteBuilder.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAE5C,MAAa,YAAY;IAKrB,YAAY,SAAiB,EAAE,MAAc,EAAE,IAAa;QACxD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IAEM,KAAK;QACR,OAAO,IAAI,2BAAY,CAAC;YACpB,YAAY,EAAE,IAAI,CAAC,MAAM;YACzB,EAAE,EAAE,IAAI,CAAC,SAAS;YAClB,IAAI,EAAE,IAAI,CAAC,OAAO;SACrB,CAAC,CAAC;IACP,CAAC;CACJ;AAlBD,oCAkBC"} \ No newline at end of file
+{"version":3,"file":"QuoteBuilder.js","sourceRoot":"","sources":["../../classes/QuoteBuilder.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAG5C,MAAa,YAAY;IAMrB,YAAY,MAAc,EAAE,SAAiB,EAAE,MAAc,EAAE,IAAa;QACxE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IAEM,KAAK;QACR,OAAO,IAAI,2BAAY,CAAC;YACpB,YAAY,EAAE,IAAI,CAAC,MAAM;YACzB,EAAE,EAAE,IAAI,CAAC,SAAS;YAClB,IAAI,EAAE,IAAI,CAAC,OAAO;SACrB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;CACJ;AApBD,oCAoBC"} \ No newline at end of file
diff --git a/dist/classes/QuoteMessage.d.ts b/dist/classes/QuoteMessage.d.ts
index ae17d98..e8cd5f0 100644
--- a/dist/classes/QuoteMessage.d.ts
+++ b/dist/classes/QuoteMessage.d.ts
@@ -1,10 +1,11 @@
import { User } from "./User";
import { Attachment } from "./Attachment";
+import { Client } from "./Client";
export declare class QuoteMessage {
createdAt: Date;
createdTimestamp: number;
author: User;
content?: string;
attachments?: Attachment[];
- constructor(quoteData: any);
+ constructor(quoteData: any, client: Client);
}
diff --git a/dist/classes/QuoteMessage.js b/dist/classes/QuoteMessage.js
index 41110ea..361c1cd 100644
--- a/dist/classes/QuoteMessage.js
+++ b/dist/classes/QuoteMessage.js
@@ -5,8 +5,8 @@ const User_1 = require("./User");
const Attachment_1 = require("./Attachment");
const UserDataType_1 = require("../enums/UserDataType");
class QuoteMessage {
- constructor(quoteData) {
- this.author = new User_1.User(quoteData, UserDataType_1.UserDataType.Quote);
+ constructor(quoteData, client) {
+ this.author = new User_1.User(quoteData, UserDataType_1.UserDataType.Quote, client);
this.content = quoteData.text && quoteData.text.trim().length > 0 ? quoteData.text : null;
this.attachments = quoteData.attachments?.map(i => new Attachment_1.Attachment(i));
this.createdTimestamp = quoteData.id;
diff --git a/dist/classes/QuoteMessage.js.map b/dist/classes/QuoteMessage.js.map
index 6ade00a..4688775 100644
--- a/dist/classes/QuoteMessage.js.map
+++ b/dist/classes/QuoteMessage.js.map
@@ -1 +1 @@
-{"version":3,"file":"QuoteMessage.js","sourceRoot":"","sources":["../../classes/QuoteMessage.ts"],"names":[],"mappings":";;;AAAA,iCAA4B;AAC5B,6CAAwC;AACxC,wDAAmD;AAEnD,MAAa,YAAY;IAOrB,YAAY,SAAc;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,WAAI,CAAC,SAAS,EAAE,2BAAY,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1F,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,uBAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;CACJ;AAdD,oCAcC"} \ No newline at end of file
+{"version":3,"file":"QuoteMessage.js","sourceRoot":"","sources":["../../classes/QuoteMessage.ts"],"names":[],"mappings":";;;AAAA,iCAA4B;AAC5B,6CAAwC;AACxC,wDAAmD;AAGnD,MAAa,YAAY;IAOrB,YAAY,SAAc,EAAE,MAAc;QACtC,IAAI,CAAC,MAAM,GAAG,IAAI,WAAI,CAAC,SAAS,EAAE,2BAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1F,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,uBAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;CACJ;AAdD,oCAcC"} \ No newline at end of file
diff --git a/dist/classes/ReactionTarget.js b/dist/classes/ReactionTarget.js
index c7ae0fb..7f5adc8 100644
--- a/dist/classes/ReactionTarget.js
+++ b/dist/classes/ReactionTarget.js
@@ -6,7 +6,7 @@ const UserDataType_1 = require("../enums/UserDataType");
const ReceivedMessage_1 = require("./ReceivedMessage");
class ReactionTarget extends ReceivedMessage_1.ReceivedMessage {
constructor(data, channel, client) {
- super(new User_1.User(data.reaction, UserDataType_1.UserDataType.Reaction), data.reaction.targetSentTimestamp, channel, client, null);
+ super(new User_1.User(data.reaction, UserDataType_1.UserDataType.Reaction, client), data.reaction.targetSentTimestamp, channel, client, null);
}
}
exports.ReactionTarget = ReactionTarget;
diff --git a/dist/classes/ReactionTarget.js.map b/dist/classes/ReactionTarget.js.map
index 76e0dc6..7b4329d 100644
--- a/dist/classes/ReactionTarget.js.map
+++ b/dist/classes/ReactionTarget.js.map
@@ -1 +1 @@
-{"version":3,"file":"ReactionTarget.js","sourceRoot":"","sources":["../../classes/ReactionTarget.ts"],"names":[],"mappings":";;;AAAA,iCAA4B;AAC5B,wDAAmD;AACnD,uDAAkD;AAKlD,MAAa,cAAe,SAAQ,iCAAe;IAC/C,YAAY,IAAS,EAAE,OAAiB,EAAE,MAAc;QACpD,KAAK,CAAC,IAAI,WAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACpH,CAAC;CACJ;AAJD,wCAIC"} \ No newline at end of file
+{"version":3,"file":"ReactionTarget.js","sourceRoot":"","sources":["../../classes/ReactionTarget.ts"],"names":[],"mappings":";;;AAAA,iCAA4B;AAC5B,wDAAmD;AACnD,uDAAkD;AAKlD,MAAa,cAAe,SAAQ,iCAAe;IAC/C,YAAY,IAAS,EAAE,OAAiB,EAAE,MAAc;QACpD,KAAK,CAAC,IAAI,WAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,2BAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5H,CAAC;CACJ;AAJD,wCAIC"} \ No newline at end of file
diff --git a/dist/classes/ReceivedMessage.d.ts b/dist/classes/ReceivedMessage.d.ts
index fa2bca5..e4e3729 100644
--- a/dist/classes/ReceivedMessage.d.ts
+++ b/dist/classes/ReceivedMessage.d.ts
@@ -12,5 +12,6 @@ export declare class ReceivedMessage {
expiresAt?: Date;
expiresTimestamp?: number;
expiresInSeconds?: number;
+ isGroup: boolean;
constructor(user: User, time: number, channel: DM | Group, client: Client, expirity?: number | null);
}
diff --git a/dist/classes/ReceivedMessage.js.map b/dist/classes/ReceivedMessage.js.map
index 148953d..32d3a82 100644
--- a/dist/classes/ReceivedMessage.js.map
+++ b/dist/classes/ReceivedMessage.js.map
@@ -1 +1 @@
-{"version":3,"file":"ReceivedMessage.js","sourceRoot":"","sources":["../../classes/ReceivedMessage.ts"],"names":[],"mappings":";;;AAKA,MAAa,eAAe;IAWxB,YAAY,IAAU,EAAE,IAAY,EAAE,OAAiB,EAAE,MAAc,EAAE,QAAsB;QALxF,cAAS,GAAiB,KAAK,CAAC;QAMnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,IAAI,QAAQ,IAAI,QAAQ,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;YACjC,IAAI,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;YACjE,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;SACvE;aAAM,IAAI,QAAQ,KAAK,IAAI,EAAE;YAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;IACL,CAAC;CACJ;AA3BD,0CA2BC"} \ No newline at end of file
+{"version":3,"file":"ReceivedMessage.js","sourceRoot":"","sources":["../../classes/ReceivedMessage.ts"],"names":[],"mappings":";;;AAKA,MAAa,eAAe;IAYxB,YAAY,IAAU,EAAE,IAAY,EAAE,OAAiB,EAAE,MAAc,EAAE,QAAsB;QANxF,cAAS,GAAiB,KAAK,CAAC;QAOnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,IAAI,QAAQ,IAAI,QAAQ,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;YACjC,IAAI,CAAC,gBAAgB,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;YACjE,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;SACvE;aAAM,IAAI,QAAQ,KAAK,IAAI,EAAE;YAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;IACL,CAAC;CACJ;AA5BD,0CA4BC"} \ No newline at end of file
diff --git a/dist/classes/SignalAPIError.d.ts b/dist/classes/SignalAPIError.d.ts
new file mode 100644
index 0000000..c0ce2b6
--- /dev/null
+++ b/dist/classes/SignalAPIError.d.ts
@@ -0,0 +1,4 @@
+export declare class SignalAPIError extends Error {
+ code: number;
+ constructor(message: string, code?: number);
+}
diff --git a/dist/classes/SignalAPIError.js b/dist/classes/SignalAPIError.js
new file mode 100644
index 0000000..170f0e5
--- /dev/null
+++ b/dist/classes/SignalAPIError.js
@@ -0,0 +1,20 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.SignalAPIError = void 0;
+class SignalAPIError extends Error {
+ constructor(message, code) {
+ const errorCodes = {
+ '-1': "USER_ERROR",
+ '-3': "IO_ERROR",
+ '-4': "UNTRUSTED_KEY_ERROR"
+ };
+ super(message);
+ this.name = "SignalAPIError";
+ if (code) {
+ this.code = code;
+ this.message = "[" + (errorCodes[code.toString()] ?? code) + "] " + this.message;
+ }
+ }
+}
+exports.SignalAPIError = SignalAPIError;
+//# sourceMappingURL=SignalAPIError.js.map \ No newline at end of file
diff --git a/dist/classes/SignalAPIError.js.map b/dist/classes/SignalAPIError.js.map
new file mode 100644
index 0000000..9bd0419
--- /dev/null
+++ b/dist/classes/SignalAPIError.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"SignalAPIError.js","sourceRoot":"","sources":["../../classes/SignalAPIError.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAe,SAAQ,KAAK;IAGrC,YAAY,OAAe,EAAE,IAAa;QACtC,MAAM,UAAU,GAAG;YACf,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,qBAAqB;SAC9B,CAAA;QAED,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAE7B,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;SACpF;IACL,CAAC;CACJ;AAlBD,wCAkBC"} \ No newline at end of file
diff --git a/dist/classes/SignalCLIError.d.ts b/dist/classes/SignalCLIError.d.ts
new file mode 100644
index 0000000..b3a6bcb
--- /dev/null
+++ b/dist/classes/SignalCLIError.d.ts
@@ -0,0 +1,5 @@
+export declare class SignalCLIError extends Error {
+ executable: string;
+ arguments: string[];
+ constructor(message: string, executable?: string, args?: string[]);
+}
diff --git a/dist/classes/SignalCLIError.js b/dist/classes/SignalCLIError.js
new file mode 100644
index 0000000..b19d17f
--- /dev/null
+++ b/dist/classes/SignalCLIError.js
@@ -0,0 +1,15 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.SignalCLIError = void 0;
+class SignalCLIError extends Error {
+ constructor(message, executable, args) {
+ super(message);
+ this.name = "SignalCLIError";
+ if (executable)
+ this.executable = executable;
+ if (args)
+ this.arguments = args;
+ }
+}
+exports.SignalCLIError = SignalCLIError;
+//# sourceMappingURL=SignalCLIError.js.map \ No newline at end of file
diff --git a/dist/classes/SignalCLIError.js.map b/dist/classes/SignalCLIError.js.map
new file mode 100644
index 0000000..0ac6fa9
--- /dev/null
+++ b/dist/classes/SignalCLIError.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"SignalCLIError.js","sourceRoot":"","sources":["../../classes/SignalCLIError.ts"],"names":[],"mappings":";;;AAAA,MAAa,cAAe,SAAQ,KAAK;IAIrC,YAAY,OAAe,EAAE,UAAmB,EAAE,IAAe;QAC7D,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAE7B,IAAI,UAAU;YAAE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7C,IAAI,IAAI;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACpC,CAAC;CACJ;AAXD,wCAWC"} \ No newline at end of file
diff --git a/dist/classes/User.d.ts b/dist/classes/User.d.ts
index 41800ba..e6a09a4 100644
--- a/dist/classes/User.d.ts
+++ b/dist/classes/User.d.ts
@@ -1,8 +1,18 @@
import { UserDataType } from "../enums/UserDataType";
+import { Client } from "./Client";
+import { DM } from "./DM";
export declare class User {
number?: string;
nickName?: string;
uuid?: string;
device?: number;
- constructor(data: any, dataType: UserDataType);
+ private client;
+ constructor(data: any, dataType: UserDataType, client: Client);
+ createDM(): DM;
+ static fromNumber(number: string, client: Client): User;
+ setBlocked(blocked: boolean): Promise<void>;
+ verify(safetyNumber?: string): Promise<void>;
+ addToContacts(name?: string, disappearingMessagesTime?: number): Promise<void>;
+ removeFromContacts(): Promise<void>;
+ setDisappearingMessagesTime(time?: number): Promise<void>;
}
diff --git a/dist/classes/User.js b/dist/classes/User.js
index 7bbb1f5..20db534 100644
--- a/dist/classes/User.js
+++ b/dist/classes/User.js
@@ -2,12 +2,15 @@
Object.defineProperty(exports, "__esModule", { value: true });
exports.User = void 0;
const UserDataType_1 = require("../enums/UserDataType");
+const CLIDispatcher_1 = require("./CLIDispatcher");
+const DM_1 = require("./DM");
class User {
- constructor(data, dataType) {
+ constructor(data, dataType, client) {
this.number = null;
this.nickName = null;
this.uuid = null;
this.device = null;
+ this.client = client;
if (dataType === UserDataType_1.UserDataType.Envelope) {
if (data.sourceNumber && typeof data.sourceNumber === "string")
this.number = data.sourceNumber;
@@ -30,12 +33,68 @@ class User {
if (data.targetAuthorUuid && typeof data.targetAuthorUuid === "string")
this.uuid = data.targetAuthorUuid;
}
- else if (dataType === UserDataType_1.UserDataType.Mention) {
+ else if (dataType === UserDataType_1.UserDataType.MentionOrGroup) {
if (data.number && typeof data.number === "string")
this.number = data.number;
if (data.uuid && typeof data.uuid === "string")
this.uuid = data.uuid;
}
+ else if (dataType === UserDataType_1.UserDataType.Number) {
+ if (data && typeof data === "string")
+ this.number = data;
+ }
+ }
+ createDM() {
+ return new DM_1.DM(this.uuid ?? null, this.number, this.client);
+ }
+ static fromNumber(number, client) {
+ return new User(number, UserDataType_1.UserDataType.Number, client);
+ }
+ async setBlocked(blocked) {
+ if (blocked) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("block", {
+ recipient: [this.number]
+ }, this.client.process);
+ }
+ else {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("unblock", {
+ recipient: [this.number]
+ }, this.client.process);
+ }
+ }
+ async verify(safetyNumber) {
+ if (safetyNumber) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("trust", {
+ verifiedSafetyNumber: safetyNumber.replaceAll(" ", "").replaceAll("\r\n", "").replaceAll("\n", ""),
+ recipient: [this.number]
+ }, this.client.process);
+ }
+ else {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("trust", {
+ trustAllKnownKeys: true,
+ recipient: [this.number]
+ }, this.client.process);
+ }
+ }
+ async addToContacts(name, disappearingMessagesTime) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateContact", {
+ name: name,
+ recipient: [this.number]
+ }, this.client.process);
+ await CLIDispatcher_1.CLIDispatcher.dispatch("sendContacts", {}, this.client.process);
+ }
+ async removeFromContacts() {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("removeContact", {
+ recipient: [this.number]
+ }, this.client.process);
+ await CLIDispatcher_1.CLIDispatcher.dispatch("sendContacts", {}, this.client.process);
+ }
+ async setDisappearingMessagesTime(time) {
+ await CLIDispatcher_1.CLIDispatcher.dispatch("updateContact", {
+ expiration: time ?? 0,
+ recipient: [this.number]
+ }, this.client.process);
+ await CLIDispatcher_1.CLIDispatcher.dispatch("sendContacts", {}, this.client.process);
}
}
exports.User = User;
diff --git a/dist/classes/User.js.map b/dist/classes/User.js.map
index 1667a02..d0e5012 100644
--- a/dist/classes/User.js.map
+++ b/dist/classes/User.js.map
@@ -1 +1 @@
-{"version":3,"file":"User.js","sourceRoot":"","sources":["../../classes/User.ts"],"names":[],"mappings":";;;AAAA,wDAAmD;AAEnD,MAAa,IAAI;IAMb,YAAY,IAAS,EAAE,QAAsB;QALtC,WAAM,GAAY,IAAI,CAAC;QACvB,aAAQ,GAAY,IAAI,CAAC;QACzB,SAAI,GAAY,IAAI,CAAC;QACrB,WAAM,GAAY,IAAI,CAAC;QAG1B,IAAI,QAAQ,KAAK,2BAAY,CAAC,QAAQ,EAAE;YACpC,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;YAChG,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;YAC5F,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;YACxF,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;SACnG;aAAM,IAAI,QAAQ,KAAK,2BAAY,CAAC,KAAK,EAAE;YACxC,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;YAChG,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;SAC3F;aAAM,IAAI,QAAQ,KAAK,2BAAY,CAAC,QAAQ,EAAE;YAC3C,IAAI,IAAI,CAAC,kBAAkB,IAAI,OAAO,IAAI,CAAC,kBAAkB,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAClH,IAAI,IAAI,CAAC,gBAAgB,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC;SAC7G;aAAM,IAAI,QAAQ,KAAK,2BAAY,CAAC,OAAO,EAAE;YAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC9E,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SACzE;IACL,CAAC;CACJ;AAvBD,oBAuBC"} \ No newline at end of file
+{"version":3,"file":"User.js","sourceRoot":"","sources":["../../classes/User.ts"],"names":[],"mappings":";;;AAAA,wDAAmD;AACnD,mDAA8C;AAE9C,6BAAwB;AAExB,MAAa,IAAI;IAOb,YAAY,IAAS,EAAE,QAAsB,EAAE,MAAc;QANtD,WAAM,GAAY,IAAI,CAAC;QACvB,aAAQ,GAAY,IAAI,CAAC;QACzB,SAAI,GAAY,IAAI,CAAC;QACrB,WAAM,GAAY,IAAI,CAAC;QAI1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,QAAQ,KAAK,2BAAY,CAAC,QAAQ,EAAE;YACpC,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;YAChG,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;gBAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC;YAC5F,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;YACxF,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;SACnG;aAAM,IAAI,QAAQ,KAAK,2BAAY,CAAC,KAAK,EAAE;YACxC,IAAI,IAAI,CAAC,YAAY,IAAI,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;YAChG,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;SAC3F;aAAM,IAAI,QAAQ,KAAK,2BAAY,CAAC,QAAQ,EAAE;YAC3C,IAAI,IAAI,CAAC,kBAAkB,IAAI,OAAO,IAAI,CAAC,kBAAkB,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;YAClH,IAAI,IAAI,CAAC,gBAAgB,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC;SAC7G;aAAM,IAAI,QAAQ,KAAK,2BAAY,CAAC,cAAc,EAAE;YACjD,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC9E,IAAI,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;gBAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SACzE;aAAM,IAAI,QAAQ,KAAK,2BAAY,CAAC,MAAM,EAAE;YACzC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SAC5D;IACL,CAAC;IAEM,QAAQ;QACX,OAAO,IAAI,OAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,UAAU,CAAC,MAAc,EAAE,MAAc;QACnD,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,2BAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,OAAgB;QACpC,IAAI,OAAO,EAAE;YACT,MAAM,6BAAa,CAAC,QAAQ,CACxB,OAAO,EACP;gBACI,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;aAC3B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;SACL;aAAM;YACH,MAAM,6BAAa,CAAC,QAAQ,CACxB,SAAS,EACT;gBACI,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;aAC3B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;SACL;IACL,CAAC;IAEM,KAAK,CAAC,MAAM,CAAC,YAAqB;QACrC,IAAI,YAAY,EAAE;YACd,MAAM,6BAAa,CAAC,QAAQ,CACxB,OAAO,EACP;gBACI,oBAAoB,EAAE,YAAY,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClG,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;aAC3B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;SACL;aAAM;YACH,MAAM,6BAAa,CAAC,QAAQ,CACxB,OAAO,EACP;gBACI,iBAAiB,EAAE,IAAI;gBACvB,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;aAC3B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;SACL;IACL,CAAC;IAEM,KAAK,CAAC,aAAa,CAAC,IAAa,EAAE,wBAAiC;QACvE,MAAM,6BAAa,CAAC,QAAQ,CACxB,eAAe,EACf;YACI,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;SAC3B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,MAAM,6BAAa,CAAC,QAAQ,CACxB,cAAc,EACd,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,kBAAkB;QAC3B,MAAM,6BAAa,CAAC,QAAQ,CACxB,eAAe,EACf;YACI,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;SAC3B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,MAAM,6BAAa,CAAC,QAAQ,CACxB,cAAc,EACd,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;IAEM,KAAK,CAAC,2BAA2B,CAAC,IAAa;QAClD,MAAM,6BAAa,CAAC,QAAQ,CACxB,eAAe,EACf;YACI,UAAU,EAAE,IAAI,IAAI,CAAC;YACrB,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;SAC3B,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;QAEF,MAAM,6BAAa,CAAC,QAAQ,CACxB,cAAc,EACd,EAAE,EACF,IAAI,CAAC,MAAM,CAAC,OAAO,CACtB,CAAC;IACN,CAAC;CACJ;AAhID,oBAgIC"} \ No newline at end of file
diff --git a/dist/enums/ConfigEnvironment.d.ts b/dist/enums/ConfigEnvironment.d.ts
new file mode 100644
index 0000000..0104b42
--- /dev/null
+++ b/dist/enums/ConfigEnvironment.d.ts
@@ -0,0 +1,5 @@
+export declare enum ConfigEnvironment {
+ Live = "live",
+ Staging = "staging",
+ SandBox = "sandbox"
+}
diff --git a/dist/enums/ConfigEnvironment.js b/dist/enums/ConfigEnvironment.js
new file mode 100644
index 0000000..310b314
--- /dev/null
+++ b/dist/enums/ConfigEnvironment.js
@@ -0,0 +1,10 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ConfigEnvironment = void 0;
+var ConfigEnvironment;
+(function (ConfigEnvironment) {
+ ConfigEnvironment["Live"] = "live";
+ ConfigEnvironment["Staging"] = "staging";
+ ConfigEnvironment["SandBox"] = "sandbox";
+})(ConfigEnvironment || (exports.ConfigEnvironment = ConfigEnvironment = {}));
+//# sourceMappingURL=ConfigEnvironment.js.map \ No newline at end of file
diff --git a/dist/enums/ConfigEnvironment.js.map b/dist/enums/ConfigEnvironment.js.map
new file mode 100644
index 0000000..1ee771b
--- /dev/null
+++ b/dist/enums/ConfigEnvironment.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ConfigEnvironment.js","sourceRoot":"","sources":["../../enums/ConfigEnvironment.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IACzB,kCAAa,CAAA;IACb,wCAAmB,CAAA;IACnB,wCAAmB,CAAA;AACvB,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B"} \ No newline at end of file
diff --git a/dist/enums/ConfigTrustLevel.d.ts b/dist/enums/ConfigTrustLevel.d.ts
new file mode 100644
index 0000000..51900ad
--- /dev/null
+++ b/dist/enums/ConfigTrustLevel.d.ts
@@ -0,0 +1,5 @@
+export declare enum ConfigTrustLevel {
+ All = "always",
+ OnFirstUse = "on-first-use",
+ None = "never"
+}
diff --git a/dist/enums/ConfigTrustLevel.js b/dist/enums/ConfigTrustLevel.js
new file mode 100644
index 0000000..b0e868c
--- /dev/null
+++ b/dist/enums/ConfigTrustLevel.js
@@ -0,0 +1,10 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ConfigTrustLevel = void 0;
+var ConfigTrustLevel;
+(function (ConfigTrustLevel) {
+ ConfigTrustLevel["All"] = "always";
+ ConfigTrustLevel["OnFirstUse"] = "on-first-use";
+ ConfigTrustLevel["None"] = "never";
+})(ConfigTrustLevel || (exports.ConfigTrustLevel = ConfigTrustLevel = {}));
+//# sourceMappingURL=ConfigTrustLevel.js.map \ No newline at end of file
diff --git a/dist/enums/ConfigTrustLevel.js.map b/dist/enums/ConfigTrustLevel.js.map
new file mode 100644
index 0000000..add109a
--- /dev/null
+++ b/dist/enums/ConfigTrustLevel.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ConfigTrustLevel.js","sourceRoot":"","sources":["../../enums/ConfigTrustLevel.ts"],"names":[],"mappings":";;;AAAA,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IACxB,kCAAc,CAAA;IACd,+CAA2B,CAAA;IAC3B,kCAAc,CAAA;AAClB,CAAC,EAJW,gBAAgB,gCAAhB,gBAAgB,QAI3B"} \ No newline at end of file
diff --git a/dist/enums/ConfigVerbosity.d.ts b/dist/enums/ConfigVerbosity.d.ts
new file mode 100644
index 0000000..93edaca
--- /dev/null
+++ b/dist/enums/ConfigVerbosity.d.ts
@@ -0,0 +1,6 @@
+export declare enum ConfigVerbosity {
+ None = 0,
+ Info = 1,
+ Notices = 2,
+ Verbose = 3
+}
diff --git a/dist/enums/ConfigVerbosity.js b/dist/enums/ConfigVerbosity.js
new file mode 100644
index 0000000..9ca196b
--- /dev/null
+++ b/dist/enums/ConfigVerbosity.js
@@ -0,0 +1,11 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ConfigVerbosity = void 0;
+var ConfigVerbosity;
+(function (ConfigVerbosity) {
+ ConfigVerbosity[ConfigVerbosity["None"] = 0] = "None";
+ ConfigVerbosity[ConfigVerbosity["Info"] = 1] = "Info";
+ ConfigVerbosity[ConfigVerbosity["Notices"] = 2] = "Notices";
+ ConfigVerbosity[ConfigVerbosity["Verbose"] = 3] = "Verbose";
+})(ConfigVerbosity || (exports.ConfigVerbosity = ConfigVerbosity = {}));
+//# sourceMappingURL=ConfigVerbosity.js.map \ No newline at end of file
diff --git a/dist/enums/ConfigVerbosity.js.map b/dist/enums/ConfigVerbosity.js.map
new file mode 100644
index 0000000..3a1ccbe
--- /dev/null
+++ b/dist/enums/ConfigVerbosity.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ConfigVerbosity.js","sourceRoot":"","sources":["../../enums/ConfigVerbosity.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAKX;AALD,WAAY,eAAe;IACvB,qDAAI,CAAA;IACJ,qDAAI,CAAA;IACJ,2DAAO,CAAA;IACP,2DAAO,CAAA;AACX,CAAC,EALW,eAAe,+BAAf,eAAe,QAK1B"} \ No newline at end of file
diff --git a/dist/enums/GroupLinkStatus.d.ts b/dist/enums/GroupLinkStatus.d.ts
new file mode 100644
index 0000000..a72cede
--- /dev/null
+++ b/dist/enums/GroupLinkStatus.d.ts
@@ -0,0 +1,5 @@
+export declare enum GroupLinkStatus {
+ Enabled = "enabled",
+ WithApproval = "withApproval",
+ Disabled = "disabled"
+}
diff --git a/dist/enums/GroupLinkStatus.js b/dist/enums/GroupLinkStatus.js
new file mode 100644
index 0000000..05ebf70
--- /dev/null
+++ b/dist/enums/GroupLinkStatus.js
@@ -0,0 +1,10 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.GroupLinkStatus = void 0;
+var GroupLinkStatus;
+(function (GroupLinkStatus) {
+ GroupLinkStatus["Enabled"] = "enabled";
+ GroupLinkStatus["WithApproval"] = "withApproval";
+ GroupLinkStatus["Disabled"] = "disabled";
+})(GroupLinkStatus || (exports.GroupLinkStatus = GroupLinkStatus = {}));
+//# sourceMappingURL=GroupLinkStatus.js.map \ No newline at end of file
diff --git a/dist/enums/GroupLinkStatus.js.map b/dist/enums/GroupLinkStatus.js.map
new file mode 100644
index 0000000..b02dac4
--- /dev/null
+++ b/dist/enums/GroupLinkStatus.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"GroupLinkStatus.js","sourceRoot":"","sources":["../../enums/GroupLinkStatus.ts"],"names":[],"mappings":";;;AAAA,IAAY,eAIX;AAJD,WAAY,eAAe;IACvB,sCAAmB,CAAA;IACnB,gDAA6B,CAAA;IAC7B,wCAAqB,CAAA;AACzB,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B"} \ No newline at end of file
diff --git a/dist/enums/GroupPermissionLevel.d.ts b/dist/enums/GroupPermissionLevel.d.ts
new file mode 100644
index 0000000..23e0bd0
--- /dev/null
+++ b/dist/enums/GroupPermissionLevel.d.ts
@@ -0,0 +1,4 @@
+export declare enum GroupPermissionLevel {
+ Everyone = "EVERY_MEMBER",
+ Admins = "ONLY_ADMINS"
+}
diff --git a/dist/enums/GroupPermissionLevel.js b/dist/enums/GroupPermissionLevel.js
new file mode 100644
index 0000000..adc52f9
--- /dev/null
+++ b/dist/enums/GroupPermissionLevel.js
@@ -0,0 +1,9 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.GroupPermissionLevel = void 0;
+var GroupPermissionLevel;
+(function (GroupPermissionLevel) {
+ GroupPermissionLevel["Everyone"] = "EVERY_MEMBER";
+ GroupPermissionLevel["Admins"] = "ONLY_ADMINS";
+})(GroupPermissionLevel || (exports.GroupPermissionLevel = GroupPermissionLevel = {}));
+//# sourceMappingURL=GroupPermissionLevel.js.map \ No newline at end of file
diff --git a/dist/enums/GroupPermissionLevel.js.map b/dist/enums/GroupPermissionLevel.js.map
new file mode 100644
index 0000000..7b38019
--- /dev/null
+++ b/dist/enums/GroupPermissionLevel.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"GroupPermissionLevel.js","sourceRoot":"","sources":["../../enums/GroupPermissionLevel.ts"],"names":[],"mappings":";;;AAAA,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC5B,iDAAyB,CAAA;IACzB,8CAAsB,CAAA;AAC1B,CAAC,EAHW,oBAAoB,oCAApB,oBAAoB,QAG/B"} \ No newline at end of file
diff --git a/dist/enums/GroupPermissionName.d.ts b/dist/enums/GroupPermissionName.d.ts
new file mode 100644
index 0000000..4962c3e
--- /dev/null
+++ b/dist/enums/GroupPermissionName.d.ts
@@ -0,0 +1,5 @@
+export declare enum GroupPermissionName {
+ AddMember = "addMember",
+ EditDetails = "editDetails",
+ SendMessage = "sendMessage"
+}
diff --git a/dist/enums/GroupPermissionName.js b/dist/enums/GroupPermissionName.js
new file mode 100644
index 0000000..812976c
--- /dev/null
+++ b/dist/enums/GroupPermissionName.js
@@ -0,0 +1,10 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.GroupPermissionName = void 0;
+var GroupPermissionName;
+(function (GroupPermissionName) {
+ GroupPermissionName["AddMember"] = "addMember";
+ GroupPermissionName["EditDetails"] = "editDetails";
+ GroupPermissionName["SendMessage"] = "sendMessage";
+})(GroupPermissionName || (exports.GroupPermissionName = GroupPermissionName = {}));
+//# sourceMappingURL=GroupPermissionName.js.map \ No newline at end of file
diff --git a/dist/enums/GroupPermissionName.js.map b/dist/enums/GroupPermissionName.js.map
new file mode 100644
index 0000000..e72be87
--- /dev/null
+++ b/dist/enums/GroupPermissionName.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"GroupPermissionName.js","sourceRoot":"","sources":["../../enums/GroupPermissionName.ts"],"names":[],"mappings":";;;AAAA,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC3B,8CAAuB,CAAA;IACvB,kDAA2B,CAAA;IAC3B,kDAA2B,CAAA;AAC/B,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B"} \ No newline at end of file
diff --git a/dist/enums/UserDataType.d.ts b/dist/enums/UserDataType.d.ts
index a365f9f..71bdce7 100644
--- a/dist/enums/UserDataType.d.ts
+++ b/dist/enums/UserDataType.d.ts
@@ -2,5 +2,6 @@ export declare enum UserDataType {
Envelope = 0,
Quote = 1,
Reaction = 2,
- Mention = 3
+ MentionOrGroup = 3,
+ Number = 4
}
diff --git a/dist/enums/UserDataType.js b/dist/enums/UserDataType.js
index 0a714c1..78dfd35 100644
--- a/dist/enums/UserDataType.js
+++ b/dist/enums/UserDataType.js
@@ -6,6 +6,7 @@ var UserDataType;
UserDataType[UserDataType["Envelope"] = 0] = "Envelope";
UserDataType[UserDataType["Quote"] = 1] = "Quote";
UserDataType[UserDataType["Reaction"] = 2] = "Reaction";
- UserDataType[UserDataType["Mention"] = 3] = "Mention";
+ UserDataType[UserDataType["MentionOrGroup"] = 3] = "MentionOrGroup";
+ UserDataType[UserDataType["Number"] = 4] = "Number";
})(UserDataType || (exports.UserDataType = UserDataType = {}));
//# sourceMappingURL=UserDataType.js.map \ No newline at end of file
diff --git a/dist/enums/UserDataType.js.map b/dist/enums/UserDataType.js.map
index 8ec88cb..a873b90 100644
--- a/dist/enums/UserDataType.js.map
+++ b/dist/enums/UserDataType.js.map
@@ -1 +1 @@
-{"version":3,"file":"UserDataType.js","sourceRoot":"","sources":["../../enums/UserDataType.ts"],"names":[],"mappings":";;;AAAA,IAAY,YAKX;AALD,WAAY,YAAY;IACpB,uDAAQ,CAAA;IACR,iDAAK,CAAA;IACL,uDAAQ,CAAA;IACR,qDAAO,CAAA;AACX,CAAC,EALW,YAAY,4BAAZ,YAAY,QAKvB"} \ No newline at end of file
+{"version":3,"file":"UserDataType.js","sourceRoot":"","sources":["../../enums/UserDataType.ts"],"names":[],"mappings":";;;AAAA,IAAY,YAMX;AAND,WAAY,YAAY;IACpB,uDAAQ,CAAA;IACR,iDAAK,CAAA;IACL,uDAAQ,CAAA;IACR,mEAAc,CAAA;IACd,mDAAM,CAAA;AACV,CAAC,EANW,YAAY,4BAAZ,YAAY,QAMvB"} \ No newline at end of file
diff --git a/dist/index.d.ts b/dist/index.d.ts
index 3d76003..69dd4e3 100644
--- a/dist/index.d.ts
+++ b/dist/index.d.ts
@@ -1,8 +1,74 @@
-export { Client } from "./classes/Client";
-export { QuoteMessage } from "./classes/QuoteMessage";
-export { QuoteBuilder } from "./classes/QuoteBuilder";
+export { Attachment } from "./classes/Attachment";
export { AttachmentBuilder } from "./classes/AttachmentBuilder";
+export { AttachmentSize } from "./classes/AttachmentSize";
+export { CLIDispatcher } from "./classes/CLIDispatcher";
+export { CLIEvent } from "./classes/CLIEvent";
+export { Channel } from "./classes/Channel";
+export { Client } from "./classes/Client";
+export { DM } from "./classes/DM";
+export { DMDataMessage } from "./classes/DMDataMessage";
+export { DMDeleteMessage } from "./classes/DMDeleteMessage";
+export { DMEditMessage } from "./classes/DMEditMessage";
+export { DMMessage } from "./classes/DMMessage";
+export { DMReactionMessage } from "./classes/DMReactionMessage";
+export { DMStickerMessage } from "./classes/DMStickerMessage";
+export { DMTypingMessage } from "./classes/DMTypingMessage";
+export { DataMessage } from "./classes/DataMessage";
+export { DeleteMessage } from "./classes/DeleteMessage";
+export { EditMessage } from "./classes/EditMessage";
+export { Emoji } from "./classes/Emoji";
+export { Group } from "./classes/Group";
+export { GroupDataMessage } from "./classes/GroupDataMessage";
+export { GroupDeleteMessage } from "./classes/GroupDeleteMessage";
+export { GroupEditMessage } from "./classes/GroupEditMessage";
+export { GroupEditor } from "./classes/GroupEditor";
+export { GroupMessage } from "./classes/GroupMessage";
+export { GroupPermissions } from "./classes/GroupPermissions";
+export { GroupReactionMessage } from "./classes/GroupReactionMessage";
+export { GroupStickerMessage } from "./classes/GroupStickerMessage";
+export { GroupTypingMessage } from "./classes/GroupTypingMessage";
export { MessageFormatting } from "./classes/MessageFormatting";
export { MessageFormattingRule } from "./classes/MessageFormattingRule";
-export { IUserResolvable } from "./types/IUserResolvable";
+export { ObjectCache } from "./classes/ObjectCache";
+export { QuoteBuilder } from "./classes/QuoteBuilder";
+export { QuoteMessage } from "./classes/QuoteMessage";
+export { ReactionMessage } from "./classes/ReactionMessage";
+export { ReactionTarget } from "./classes/ReactionTarget";
+export { ReceivedMessage } from "./classes/ReceivedMessage";
+export { ReceivedURLPreview } from "./classes/ReceivedURLPreview";
+export { SentDataMessage } from "./classes/SentDataMessage";
+export { SentMessage } from "./classes/SentMessage";
+export { SentStickerMessage } from "./classes/SentStickerMessage";
+export { SignalAPIError } from "./classes/SignalAPIError";
+export { SignalCLIError } from "./classes/SignalCLIError";
+export { Sticker } from "./classes/Sticker";
+export { StickerMessage } from "./classes/StickerMessage";
+export { StickerPack } from "./classes/StickerPack";
+export { User } from "./classes/User";
export { UserMention } from "./classes/UserMention";
+export { IAttachmentBuilderData } from "./types/IAttachmentBuilderData";
+export { ICLIEvent } from "./types/ICLIEvent";
+export { ICLIRequest } from "./types/ICLIRequest";
+export { ICLIResponse } from "./types/ICLIResponse";
+export { IChatMessageOptions } from "./types/IChatMessageOptions";
+export { IChatMessageURLPreview } from "./types/IChatMessageURLPreview";
+export { IConfig } from "./types/IConfig";
+export { IDataURI } from "./types/IDataURI";
+export { IFilePath } from "./types/IFilePath";
+export { IMimeType } from "./types/IMimeType";
+export { IReceivedMessageURLPreview } from "./types/IReceivedMessageURLPreview";
+export { ISentMessageURLPreview } from "./types/ISentMessageURLPreview";
+export { ISystemConfig } from "./types/ISystemConfig";
+export { IUserResolvable } from "./types/IUserResolvable";
+export { ConfigEnvironment } from "./enums/ConfigEnvironment";
+export { ConfigTrustLevel } from "./enums/ConfigTrustLevel";
+export { ConfigVerbosity } from "./enums/ConfigVerbosity";
+export { GroupLinkStatus } from "./enums/GroupLinkStatus";
+export { GroupPermissionLevel } from "./enums/GroupPermissionLevel";
+export { GroupPermissionName } from "./enums/GroupPermissionName";
+export { MessageFormattingFormat } from "./enums/MessageFormattingFormat";
+export { MessageFormattingStyle } from "./enums/MessageFormattingStyle";
+export { MessageReceipt } from "./enums/MessageReceipt";
+export { StickerSource } from "./enums/StickerSource";
+export { TypingMessageAction } from "./enums/TypingMessageAction";
+export { UserDataType } from "./enums/UserDataType";
diff --git a/dist/index.js b/dist/index.js
index ae57320..30d6370 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -1,18 +1,127 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-exports.UserMention = exports.MessageFormattingRule = exports.MessageFormatting = exports.AttachmentBuilder = exports.QuoteBuilder = exports.QuoteMessage = exports.Client = void 0;
-var Client_1 = require("./classes/Client");
-Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return Client_1.Client; } });
-var QuoteMessage_1 = require("./classes/QuoteMessage");
-Object.defineProperty(exports, "QuoteMessage", { enumerable: true, get: function () { return QuoteMessage_1.QuoteMessage; } });
-var QuoteBuilder_1 = require("./classes/QuoteBuilder");
-Object.defineProperty(exports, "QuoteBuilder", { enumerable: true, get: function () { return QuoteBuilder_1.QuoteBuilder; } });
+exports.ConfigTrustLevel = exports.ConfigEnvironment = exports.UserMention = exports.User = exports.StickerPack = exports.StickerMessage = exports.Sticker = exports.SignalCLIError = exports.SignalAPIError = exports.SentStickerMessage = exports.SentMessage = exports.SentDataMessage = exports.ReceivedURLPreview = exports.ReceivedMessage = exports.ReactionTarget = exports.ReactionMessage = exports.QuoteMessage = exports.QuoteBuilder = exports.ObjectCache = exports.MessageFormattingRule = exports.MessageFormatting = exports.GroupTypingMessage = exports.GroupStickerMessage = exports.GroupReactionMessage = exports.GroupPermissions = exports.GroupMessage = exports.GroupEditor = exports.GroupEditMessage = exports.GroupDeleteMessage = exports.GroupDataMessage = exports.Group = exports.Emoji = exports.EditMessage = exports.DeleteMessage = exports.DataMessage = exports.DMTypingMessage = exports.DMStickerMessage = exports.DMReactionMessage = exports.DMMessage = exports.DMEditMessage = exports.DMDeleteMessage = exports.DMDataMessage = exports.DM = exports.Client = exports.Channel = exports.CLIEvent = exports.CLIDispatcher = exports.AttachmentSize = exports.AttachmentBuilder = exports.Attachment = void 0;
+exports.UserDataType = exports.TypingMessageAction = exports.StickerSource = exports.MessageReceipt = exports.MessageFormattingStyle = exports.MessageFormattingFormat = exports.GroupPermissionName = exports.GroupPermissionLevel = exports.GroupLinkStatus = exports.ConfigVerbosity = void 0;
+// Classes
+var Attachment_1 = require("./classes/Attachment");
+Object.defineProperty(exports, "Attachment", { enumerable: true, get: function () { return Attachment_1.Attachment; } });
var AttachmentBuilder_1 = require("./classes/AttachmentBuilder");
Object.defineProperty(exports, "AttachmentBuilder", { enumerable: true, get: function () { return AttachmentBuilder_1.AttachmentBuilder; } });
+var AttachmentSize_1 = require("./classes/AttachmentSize");
+Object.defineProperty(exports, "AttachmentSize", { enumerable: true, get: function () { return AttachmentSize_1.AttachmentSize; } });
+var CLIDispatcher_1 = require("./classes/CLIDispatcher");
+Object.defineProperty(exports, "CLIDispatcher", { enumerable: true, get: function () { return CLIDispatcher_1.CLIDispatcher; } });
+var CLIEvent_1 = require("./classes/CLIEvent");
+Object.defineProperty(exports, "CLIEvent", { enumerable: true, get: function () { return CLIEvent_1.CLIEvent; } });
+var Channel_1 = require("./classes/Channel");
+Object.defineProperty(exports, "Channel", { enumerable: true, get: function () { return Channel_1.Channel; } });
+var Client_1 = require("./classes/Client");
+Object.defineProperty(exports, "Client", { enumerable: true, get: function () { return Client_1.Client; } });
+var DM_1 = require("./classes/DM");
+Object.defineProperty(exports, "DM", { enumerable: true, get: function () { return DM_1.DM; } });
+var DMDataMessage_1 = require("./classes/DMDataMessage");
+Object.defineProperty(exports, "DMDataMessage", { enumerable: true, get: function () { return DMDataMessage_1.DMDataMessage; } });
+var DMDeleteMessage_1 = require("./classes/DMDeleteMessage");
+Object.defineProperty(exports, "DMDeleteMessage", { enumerable: true, get: function () { return DMDeleteMessage_1.DMDeleteMessage; } });
+var DMEditMessage_1 = require("./classes/DMEditMessage");
+Object.defineProperty(exports, "DMEditMessage", { enumerable: true, get: function () { return DMEditMessage_1.DMEditMessage; } });
+var DMMessage_1 = require("./classes/DMMessage");
+Object.defineProperty(exports, "DMMessage", { enumerable: true, get: function () { return DMMessage_1.DMMessage; } });
+var DMReactionMessage_1 = require("./classes/DMReactionMessage");
+Object.defineProperty(exports, "DMReactionMessage", { enumerable: true, get: function () { return DMReactionMessage_1.DMReactionMessage; } });
+var DMStickerMessage_1 = require("./classes/DMStickerMessage");
+Object.defineProperty(exports, "DMStickerMessage", { enumerable: true, get: function () { return DMStickerMessage_1.DMStickerMessage; } });
+var DMTypingMessage_1 = require("./classes/DMTypingMessage");
+Object.defineProperty(exports, "DMTypingMessage", { enumerable: true, get: function () { return DMTypingMessage_1.DMTypingMessage; } });
+var DataMessage_1 = require("./classes/DataMessage");
+Object.defineProperty(exports, "DataMessage", { enumerable: true, get: function () { return DataMessage_1.DataMessage; } });
+var DeleteMessage_1 = require("./classes/DeleteMessage");
+Object.defineProperty(exports, "DeleteMessage", { enumerable: true, get: function () { return DeleteMessage_1.DeleteMessage; } });
+var EditMessage_1 = require("./classes/EditMessage");
+Object.defineProperty(exports, "EditMessage", { enumerable: true, get: function () { return EditMessage_1.EditMessage; } });
+var Emoji_1 = require("./classes/Emoji");
+Object.defineProperty(exports, "Emoji", { enumerable: true, get: function () { return Emoji_1.Emoji; } });
+var Group_1 = require("./classes/Group");
+Object.defineProperty(exports, "Group", { enumerable: true, get: function () { return Group_1.Group; } });
+var GroupDataMessage_1 = require("./classes/GroupDataMessage");
+Object.defineProperty(exports, "GroupDataMessage", { enumerable: true, get: function () { return GroupDataMessage_1.GroupDataMessage; } });
+var GroupDeleteMessage_1 = require("./classes/GroupDeleteMessage");
+Object.defineProperty(exports, "GroupDeleteMessage", { enumerable: true, get: function () { return GroupDeleteMessage_1.GroupDeleteMessage; } });
+var GroupEditMessage_1 = require("./classes/GroupEditMessage");
+Object.defineProperty(exports, "GroupEditMessage", { enumerable: true, get: function () { return GroupEditMessage_1.GroupEditMessage; } });
+var GroupEditor_1 = require("./classes/GroupEditor");
+Object.defineProperty(exports, "GroupEditor", { enumerable: true, get: function () { return GroupEditor_1.GroupEditor; } });
+var GroupMessage_1 = require("./classes/GroupMessage");
+Object.defineProperty(exports, "GroupMessage", { enumerable: true, get: function () { return GroupMessage_1.GroupMessage; } });
+var GroupPermissions_1 = require("./classes/GroupPermissions");
+Object.defineProperty(exports, "GroupPermissions", { enumerable: true, get: function () { return GroupPermissions_1.GroupPermissions; } });
+var GroupReactionMessage_1 = require("./classes/GroupReactionMessage");
+Object.defineProperty(exports, "GroupReactionMessage", { enumerable: true, get: function () { return GroupReactionMessage_1.GroupReactionMessage; } });
+var GroupStickerMessage_1 = require("./classes/GroupStickerMessage");
+Object.defineProperty(exports, "GroupStickerMessage", { enumerable: true, get: function () { return GroupStickerMessage_1.GroupStickerMessage; } });
+var GroupTypingMessage_1 = require("./classes/GroupTypingMessage");
+Object.defineProperty(exports, "GroupTypingMessage", { enumerable: true, get: function () { return GroupTypingMessage_1.GroupTypingMessage; } });
var MessageFormatting_1 = require("./classes/MessageFormatting");
Object.defineProperty(exports, "MessageFormatting", { enumerable: true, get: function () { return MessageFormatting_1.MessageFormatting; } });
var MessageFormattingRule_1 = require("./classes/MessageFormattingRule");
Object.defineProperty(exports, "MessageFormattingRule", { enumerable: true, get: function () { return MessageFormattingRule_1.MessageFormattingRule; } });
+var ObjectCache_1 = require("./classes/ObjectCache");
+Object.defineProperty(exports, "ObjectCache", { enumerable: true, get: function () { return ObjectCache_1.ObjectCache; } });
+var QuoteBuilder_1 = require("./classes/QuoteBuilder");
+Object.defineProperty(exports, "QuoteBuilder", { enumerable: true, get: function () { return QuoteBuilder_1.QuoteBuilder; } });
+var QuoteMessage_1 = require("./classes/QuoteMessage");
+Object.defineProperty(exports, "QuoteMessage", { enumerable: true, get: function () { return QuoteMessage_1.QuoteMessage; } });
+var ReactionMessage_1 = require("./classes/ReactionMessage");
+Object.defineProperty(exports, "ReactionMessage", { enumerable: true, get: function () { return ReactionMessage_1.ReactionMessage; } });
+var ReactionTarget_1 = require("./classes/ReactionTarget");
+Object.defineProperty(exports, "ReactionTarget", { enumerable: true, get: function () { return ReactionTarget_1.ReactionTarget; } });
+var ReceivedMessage_1 = require("./classes/ReceivedMessage");
+Object.defineProperty(exports, "ReceivedMessage", { enumerable: true, get: function () { return ReceivedMessage_1.ReceivedMessage; } });
+var ReceivedURLPreview_1 = require("./classes/ReceivedURLPreview");
+Object.defineProperty(exports, "ReceivedURLPreview", { enumerable: true, get: function () { return ReceivedURLPreview_1.ReceivedURLPreview; } });
+var SentDataMessage_1 = require("./classes/SentDataMessage");
+Object.defineProperty(exports, "SentDataMessage", { enumerable: true, get: function () { return SentDataMessage_1.SentDataMessage; } });
+var SentMessage_1 = require("./classes/SentMessage");
+Object.defineProperty(exports, "SentMessage", { enumerable: true, get: function () { return SentMessage_1.SentMessage; } });
+var SentStickerMessage_1 = require("./classes/SentStickerMessage");
+Object.defineProperty(exports, "SentStickerMessage", { enumerable: true, get: function () { return SentStickerMessage_1.SentStickerMessage; } });
+var SignalAPIError_1 = require("./classes/SignalAPIError");
+Object.defineProperty(exports, "SignalAPIError", { enumerable: true, get: function () { return SignalAPIError_1.SignalAPIError; } });
+var SignalCLIError_1 = require("./classes/SignalCLIError");
+Object.defineProperty(exports, "SignalCLIError", { enumerable: true, get: function () { return SignalCLIError_1.SignalCLIError; } });
+var Sticker_1 = require("./classes/Sticker");
+Object.defineProperty(exports, "Sticker", { enumerable: true, get: function () { return Sticker_1.Sticker; } });
+var StickerMessage_1 = require("./classes/StickerMessage");
+Object.defineProperty(exports, "StickerMessage", { enumerable: true, get: function () { return StickerMessage_1.StickerMessage; } });
+var StickerPack_1 = require("./classes/StickerPack");
+Object.defineProperty(exports, "StickerPack", { enumerable: true, get: function () { return StickerPack_1.StickerPack; } });
+var User_1 = require("./classes/User");
+Object.defineProperty(exports, "User", { enumerable: true, get: function () { return User_1.User; } });
var UserMention_1 = require("./classes/UserMention");
Object.defineProperty(exports, "UserMention", { enumerable: true, get: function () { return UserMention_1.UserMention; } });
+// Enums
+var ConfigEnvironment_1 = require("./enums/ConfigEnvironment");
+Object.defineProperty(exports, "ConfigEnvironment", { enumerable: true, get: function () { return ConfigEnvironment_1.ConfigEnvironment; } });
+var ConfigTrustLevel_1 = require("./enums/ConfigTrustLevel");
+Object.defineProperty(exports, "ConfigTrustLevel", { enumerable: true, get: function () { return ConfigTrustLevel_1.ConfigTrustLevel; } });
+var ConfigVerbosity_1 = require("./enums/ConfigVerbosity");
+Object.defineProperty(exports, "ConfigVerbosity", { enumerable: true, get: function () { return ConfigVerbosity_1.ConfigVerbosity; } });
+var GroupLinkStatus_1 = require("./enums/GroupLinkStatus");
+Object.defineProperty(exports, "GroupLinkStatus", { enumerable: true, get: function () { return GroupLinkStatus_1.GroupLinkStatus; } });
+var GroupPermissionLevel_1 = require("./enums/GroupPermissionLevel");
+Object.defineProperty(exports, "GroupPermissionLevel", { enumerable: true, get: function () { return GroupPermissionLevel_1.GroupPermissionLevel; } });
+var GroupPermissionName_1 = require("./enums/GroupPermissionName");
+Object.defineProperty(exports, "GroupPermissionName", { enumerable: true, get: function () { return GroupPermissionName_1.GroupPermissionName; } });
+var MessageFormattingFormat_1 = require("./enums/MessageFormattingFormat");
+Object.defineProperty(exports, "MessageFormattingFormat", { enumerable: true, get: function () { return MessageFormattingFormat_1.MessageFormattingFormat; } });
+var MessageFormattingStyle_1 = require("./enums/MessageFormattingStyle");
+Object.defineProperty(exports, "MessageFormattingStyle", { enumerable: true, get: function () { return MessageFormattingStyle_1.MessageFormattingStyle; } });
+var MessageReceipt_1 = require("./enums/MessageReceipt");
+Object.defineProperty(exports, "MessageReceipt", { enumerable: true, get: function () { return MessageReceipt_1.MessageReceipt; } });
+var StickerSource_1 = require("./enums/StickerSource");
+Object.defineProperty(exports, "StickerSource", { enumerable: true, get: function () { return StickerSource_1.StickerSource; } });
+var TypingMessageAction_1 = require("./enums/TypingMessageAction");
+Object.defineProperty(exports, "TypingMessageAction", { enumerable: true, get: function () { return TypingMessageAction_1.TypingMessageAction; } });
+var UserDataType_1 = require("./enums/UserDataType");
+Object.defineProperty(exports, "UserDataType", { enumerable: true, get: function () { return UserDataType_1.UserDataType; } });
//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/dist/index.js.map b/dist/index.js.map
index 5936a01..2eff009 100644
--- a/dist/index.js.map
+++ b/dist/index.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,2CAAwC;AAAhC,gGAAA,MAAM,OAAA;AACd,uDAAoD;AAA5C,4GAAA,YAAY,OAAA;AACpB,uDAAoD;AAA5C,4GAAA,YAAY,OAAA;AACpB,iEAA8D;AAAtD,sHAAA,iBAAiB,OAAA;AACzB,iEAA8D;AAAtD,sHAAA,iBAAiB,OAAA;AACzB,yEAAsE;AAA9D,8HAAA,qBAAqB,OAAA;AAE7B,qDAAkD;AAA1C,0GAAA,WAAW,OAAA"} \ No newline at end of file
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;AAAA,UAAU;AACV,mDAAgD;AAAxC,wGAAA,UAAU,OAAA;AAClB,iEAA8D;AAAtD,sHAAA,iBAAiB,OAAA;AACzB,2DAAwD;AAAhD,gHAAA,cAAc,OAAA;AACtB,yDAAsD;AAA9C,8GAAA,aAAa,OAAA;AACrB,+CAA4C;AAApC,oGAAA,QAAQ,OAAA;AAChB,6CAA0C;AAAlC,kGAAA,OAAO,OAAA;AACf,2CAAwC;AAAhC,gGAAA,MAAM,OAAA;AACd,mCAAgC;AAAxB,wFAAA,EAAE,OAAA;AACV,yDAAsD;AAA9C,8GAAA,aAAa,OAAA;AACrB,6DAA0D;AAAlD,kHAAA,eAAe,OAAA;AACvB,yDAAsD;AAA9C,8GAAA,aAAa,OAAA;AACrB,iDAA8C;AAAtC,sGAAA,SAAS,OAAA;AACjB,iEAA8D;AAAtD,sHAAA,iBAAiB,OAAA;AACzB,+DAA4D;AAApD,oHAAA,gBAAgB,OAAA;AACxB,6DAA0D;AAAlD,kHAAA,eAAe,OAAA;AACvB,qDAAkD;AAA1C,0GAAA,WAAW,OAAA;AACnB,yDAAsD;AAA9C,8GAAA,aAAa,OAAA;AACrB,qDAAkD;AAA1C,0GAAA,WAAW,OAAA;AACnB,yCAAsC;AAA9B,8FAAA,KAAK,OAAA;AACb,yCAAsC;AAA9B,8FAAA,KAAK,OAAA;AACb,+DAA4D;AAApD,oHAAA,gBAAgB,OAAA;AACxB,mEAAgE;AAAxD,wHAAA,kBAAkB,OAAA;AAC1B,+DAA4D;AAApD,oHAAA,gBAAgB,OAAA;AACxB,qDAAkD;AAA1C,0GAAA,WAAW,OAAA;AACnB,uDAAoD;AAA5C,4GAAA,YAAY,OAAA;AACpB,+DAA4D;AAApD,oHAAA,gBAAgB,OAAA;AACxB,uEAAoE;AAA5D,4HAAA,oBAAoB,OAAA;AAC5B,qEAAkE;AAA1D,0HAAA,mBAAmB,OAAA;AAC3B,mEAAgE;AAAxD,wHAAA,kBAAkB,OAAA;AAC1B,iEAA8D;AAAtD,sHAAA,iBAAiB,OAAA;AACzB,yEAAsE;AAA9D,8HAAA,qBAAqB,OAAA;AAC7B,qDAAkD;AAA1C,0GAAA,WAAW,OAAA;AACnB,uDAAoD;AAA5C,4GAAA,YAAY,OAAA;AACpB,uDAAoD;AAA5C,4GAAA,YAAY,OAAA;AACpB,6DAA0D;AAAlD,kHAAA,eAAe,OAAA;AACvB,2DAAwD;AAAhD,gHAAA,cAAc,OAAA;AACtB,6DAA0D;AAAlD,kHAAA,eAAe,OAAA;AACvB,mEAAgE;AAAxD,wHAAA,kBAAkB,OAAA;AAC1B,6DAA0D;AAAlD,kHAAA,eAAe,OAAA;AACvB,qDAAkD;AAA1C,0GAAA,WAAW,OAAA;AACnB,mEAAgE;AAAxD,wHAAA,kBAAkB,OAAA;AAC1B,2DAAwD;AAAhD,gHAAA,cAAc,OAAA;AACtB,2DAAwD;AAAhD,gHAAA,cAAc,OAAA;AACtB,6CAA0C;AAAlC,kGAAA,OAAO,OAAA;AACf,2DAAwD;AAAhD,gHAAA,cAAc,OAAA;AACtB,qDAAkD;AAA1C,0GAAA,WAAW,OAAA;AACnB,uCAAoC;AAA5B,4FAAA,IAAI,OAAA;AACZ,qDAAkD;AAA1C,0GAAA,WAAW,OAAA;AAkBnB,QAAQ;AACR,+DAA4D;AAApD,sHAAA,iBAAiB,OAAA;AACzB,6DAA0D;AAAlD,oHAAA,gBAAgB,OAAA;AACxB,2DAAwD;AAAhD,kHAAA,eAAe,OAAA;AACvB,2DAAwD;AAAhD,kHAAA,eAAe,OAAA;AACvB,qEAAkE;AAA1D,4HAAA,oBAAoB,OAAA;AAC5B,mEAAgE;AAAxD,0HAAA,mBAAmB,OAAA;AAC3B,2EAAwE;AAAhE,kIAAA,uBAAuB,OAAA;AAC/B,yEAAsE;AAA9D,gIAAA,sBAAsB,OAAA;AAC9B,yDAAsD;AAA9C,gHAAA,cAAc,OAAA;AACtB,uDAAoD;AAA5C,8GAAA,aAAa,OAAA;AACrB,mEAAgE;AAAxD,0HAAA,mBAAmB,OAAA;AAC3B,qDAAkD;AAA1C,4GAAA,YAAY,OAAA"} \ No newline at end of file
diff --git a/dist/types/IConfig.d.ts b/dist/types/IConfig.d.ts
index e7fd91a..cba1b35 100644
--- a/dist/types/IConfig.d.ts
+++ b/dist/types/IConfig.d.ts
@@ -1,4 +1,7 @@
import { ISystemConfig } from "./ISystemConfig";
+import { ConfigTrustLevel } from "../enums/ConfigTrustLevel";
+import { ConfigEnvironment } from "../enums/ConfigEnvironment";
+import { ConfigVerbosity } from "../enums/ConfigVerbosity";
/**
* signal.js configuration options
*/
@@ -33,7 +36,7 @@ export interface IConfig {
*
* `--service-environment` in signal-cli
*/
- environment?: Environment;
+ environment?: ConfigEnvironment;
/**
* A file signal-cli will save logs to
*
@@ -55,31 +58,15 @@ export interface IConfig {
*
* `--verbose` in signal-cli
*/
- verbose?: Verbosity;
+ verbose?: ConfigVerbosity;
/**
* When to trust new identities.
*
* `--trust-new-identities` in signal-cli
*/
- trustLevel?: TrustLevel;
+ trustLevel?: ConfigTrustLevel;
/**
* Advanced parameters for the signal-cli process
*/
system?: ISystemConfig;
}
-export declare enum Environment {
- Live = "live",
- Staging = "staging",
- SandBox = "sandbox"
-}
-export declare enum TrustLevel {
- All = "always",
- OnFirstUse = "on-first-use",
- None = "never"
-}
-export declare enum Verbosity {
- None = 0,
- Info = 1,
- Notices = 2,
- Verbose = 3
-}
diff --git a/dist/types/IConfig.js b/dist/types/IConfig.js
index 8974024..993158e 100644
--- a/dist/types/IConfig.js
+++ b/dist/types/IConfig.js
@@ -1,23 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-exports.Verbosity = exports.TrustLevel = exports.Environment = void 0;
-var Environment;
-(function (Environment) {
- Environment["Live"] = "live";
- Environment["Staging"] = "staging";
- Environment["SandBox"] = "sandbox";
-})(Environment || (exports.Environment = Environment = {}));
-var TrustLevel;
-(function (TrustLevel) {
- TrustLevel["All"] = "always";
- TrustLevel["OnFirstUse"] = "on-first-use";
- TrustLevel["None"] = "never";
-})(TrustLevel || (exports.TrustLevel = TrustLevel = {}));
-var Verbosity;
-(function (Verbosity) {
- Verbosity[Verbosity["None"] = 0] = "None";
- Verbosity[Verbosity["Info"] = 1] = "Info";
- Verbosity[Verbosity["Notices"] = 2] = "Notices";
- Verbosity[Verbosity["Verbose"] = 3] = "Verbose";
-})(Verbosity || (exports.Verbosity = Verbosity = {}));
//# sourceMappingURL=IConfig.js.map \ No newline at end of file
diff --git a/dist/types/IConfig.js.map b/dist/types/IConfig.js.map
index e070e6c..5c2c9be 100644
--- a/dist/types/IConfig.js.map
+++ b/dist/types/IConfig.js.map
@@ -1 +1 @@
-{"version":3,"file":"IConfig.js","sourceRoot":"","sources":["../../types/IConfig.ts"],"names":[],"mappings":";;;AAgFA,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,4BAAa,CAAA;IACb,kCAAmB,CAAA;IACnB,kCAAmB,CAAA;AACvB,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAED,IAAY,UAIX;AAJD,WAAY,UAAU;IAClB,4BAAc,CAAA;IACd,yCAA2B,CAAA;IAC3B,4BAAc,CAAA;AAClB,CAAC,EAJW,UAAU,0BAAV,UAAU,QAIrB;AAED,IAAY,SAKX;AALD,WAAY,SAAS;IACjB,yCAAI,CAAA;IACJ,yCAAI,CAAA;IACJ,+CAAO,CAAA;IACP,+CAAO,CAAA;AACX,CAAC,EALW,SAAS,yBAAT,SAAS,QAKpB"} \ No newline at end of file
+{"version":3,"file":"IConfig.js","sourceRoot":"","sources":["../../types/IConfig.ts"],"names":[],"mappings":""} \ No newline at end of file
diff --git a/enums/ConfigEnvironment.ts b/enums/ConfigEnvironment.ts
new file mode 100644
index 0000000..0e7e9fe
--- /dev/null
+++ b/enums/ConfigEnvironment.ts
@@ -0,0 +1,5 @@
+export enum ConfigEnvironment {
+ Live = "live",
+ Staging = "staging",
+ SandBox = "sandbox"
+} \ No newline at end of file
diff --git a/enums/ConfigTrustLevel.ts b/enums/ConfigTrustLevel.ts
new file mode 100644
index 0000000..68e8749
--- /dev/null
+++ b/enums/ConfigTrustLevel.ts
@@ -0,0 +1,5 @@
+export enum ConfigTrustLevel {
+ All = "always",
+ OnFirstUse = "on-first-use",
+ None = "never"
+} \ No newline at end of file
diff --git a/enums/ConfigVerbosity.ts b/enums/ConfigVerbosity.ts
new file mode 100644
index 0000000..76bf8fd
--- /dev/null
+++ b/enums/ConfigVerbosity.ts
@@ -0,0 +1,6 @@
+export enum ConfigVerbosity {
+ None,
+ Info,
+ Notices,
+ Verbose
+} \ No newline at end of file
diff --git a/enums/GroupLinkStatus.ts b/enums/GroupLinkStatus.ts
new file mode 100644
index 0000000..5b83b80
--- /dev/null
+++ b/enums/GroupLinkStatus.ts
@@ -0,0 +1,5 @@
+export enum GroupLinkStatus {
+ Enabled = "enabled",
+ WithApproval = "withApproval",
+ Disabled = "disabled"
+} \ No newline at end of file
diff --git a/enums/GroupPermissionLevel.ts b/enums/GroupPermissionLevel.ts
new file mode 100644
index 0000000..1dff84b
--- /dev/null
+++ b/enums/GroupPermissionLevel.ts
@@ -0,0 +1,4 @@
+export enum GroupPermissionLevel {
+ Everyone = "EVERY_MEMBER",
+ Admins = "ONLY_ADMINS"
+} \ No newline at end of file
diff --git a/enums/GroupPermissionName.ts b/enums/GroupPermissionName.ts
new file mode 100644
index 0000000..43cdd86
--- /dev/null
+++ b/enums/GroupPermissionName.ts
@@ -0,0 +1,5 @@
+export enum GroupPermissionName {
+ AddMember = "addMember",
+ EditDetails = "editDetails",
+ SendMessage = "sendMessage"
+} \ No newline at end of file
diff --git a/enums/UserDataType.ts b/enums/UserDataType.ts
index 829f9bb..c9c141e 100644
--- a/enums/UserDataType.ts
+++ b/enums/UserDataType.ts
@@ -2,5 +2,6 @@ export enum UserDataType {
Envelope,
Quote,
Reaction,
- Mention
+ MentionOrGroup,
+ Number
} \ No newline at end of file
diff --git a/index.ts b/index.ts
index 84d1cd5..24f09e3 100644
--- a/index.ts
+++ b/index.ts
@@ -1,8 +1,79 @@
-export {Client} from "./classes/Client";
-export {QuoteMessage} from "./classes/QuoteMessage";
-export {QuoteBuilder} from "./classes/QuoteBuilder";
+// Classes
+export {Attachment} from "./classes/Attachment";
export {AttachmentBuilder} from "./classes/AttachmentBuilder";
+export {AttachmentSize} from "./classes/AttachmentSize";
+export {CLIDispatcher} from "./classes/CLIDispatcher";
+export {CLIEvent} from "./classes/CLIEvent";
+export {Channel} from "./classes/Channel";
+export {Client} from "./classes/Client";
+export {DM} from "./classes/DM";
+export {DMDataMessage} from "./classes/DMDataMessage";
+export {DMDeleteMessage} from "./classes/DMDeleteMessage";
+export {DMEditMessage} from "./classes/DMEditMessage";
+export {DMMessage} from "./classes/DMMessage";
+export {DMReactionMessage} from "./classes/DMReactionMessage";
+export {DMStickerMessage} from "./classes/DMStickerMessage";
+export {DMTypingMessage} from "./classes/DMTypingMessage";
+export {DataMessage} from "./classes/DataMessage";
+export {DeleteMessage} from "./classes/DeleteMessage";
+export {EditMessage} from "./classes/EditMessage";
+export {Emoji} from "./classes/Emoji";
+export {Group} from "./classes/Group";
+export {GroupDataMessage} from "./classes/GroupDataMessage";
+export {GroupDeleteMessage} from "./classes/GroupDeleteMessage";
+export {GroupEditMessage} from "./classes/GroupEditMessage";
+export {GroupEditor} from "./classes/GroupEditor";
+export {GroupMessage} from "./classes/GroupMessage";
+export {GroupPermissions} from "./classes/GroupPermissions";
+export {GroupReactionMessage} from "./classes/GroupReactionMessage";
+export {GroupStickerMessage} from "./classes/GroupStickerMessage";
+export {GroupTypingMessage} from "./classes/GroupTypingMessage";
export {MessageFormatting} from "./classes/MessageFormatting";
export {MessageFormattingRule} from "./classes/MessageFormattingRule";
+export {ObjectCache} from "./classes/ObjectCache";
+export {QuoteBuilder} from "./classes/QuoteBuilder";
+export {QuoteMessage} from "./classes/QuoteMessage";
+export {ReactionMessage} from "./classes/ReactionMessage";
+export {ReactionTarget} from "./classes/ReactionTarget";
+export {ReceivedMessage} from "./classes/ReceivedMessage";
+export {ReceivedURLPreview} from "./classes/ReceivedURLPreview";
+export {SentDataMessage} from "./classes/SentDataMessage";
+export {SentMessage} from "./classes/SentMessage";
+export {SentStickerMessage} from "./classes/SentStickerMessage";
+export {SignalAPIError} from "./classes/SignalAPIError";
+export {SignalCLIError} from "./classes/SignalCLIError";
+export {Sticker} from "./classes/Sticker";
+export {StickerMessage} from "./classes/StickerMessage";
+export {StickerPack} from "./classes/StickerPack";
+export {User} from "./classes/User";
+export {UserMention} from "./classes/UserMention";
+
+// Types
+export {IAttachmentBuilderData} from "./types/IAttachmentBuilderData";
+export {ICLIEvent} from "./types/ICLIEvent";
+export {ICLIRequest} from "./types/ICLIRequest";
+export {ICLIResponse} from "./types/ICLIResponse";
+export {IChatMessageOptions} from "./types/IChatMessageOptions";
+export {IChatMessageURLPreview} from "./types/IChatMessageURLPreview";
+export {IConfig} from "./types/IConfig";
+export {IDataURI} from "./types/IDataURI";
+export {IFilePath} from "./types/IFilePath";
+export {IMimeType} from "./types/IMimeType";
+export {IReceivedMessageURLPreview} from "./types/IReceivedMessageURLPreview";
+export {ISentMessageURLPreview} from "./types/ISentMessageURLPreview";
+export {ISystemConfig} from "./types/ISystemConfig";
export {IUserResolvable} from "./types/IUserResolvable";
-export {UserMention} from "./classes/UserMention"; \ No newline at end of file
+
+// Enums
+export {ConfigEnvironment} from "./enums/ConfigEnvironment";
+export {ConfigTrustLevel} from "./enums/ConfigTrustLevel";
+export {ConfigVerbosity} from "./enums/ConfigVerbosity";
+export {GroupLinkStatus} from "./enums/GroupLinkStatus";
+export {GroupPermissionLevel} from "./enums/GroupPermissionLevel";
+export {GroupPermissionName} from "./enums/GroupPermissionName";
+export {MessageFormattingFormat} from "./enums/MessageFormattingFormat";
+export {MessageFormattingStyle} from "./enums/MessageFormattingStyle";
+export {MessageReceipt} from "./enums/MessageReceipt";
+export {StickerSource} from "./enums/StickerSource";
+export {TypingMessageAction} from "./enums/TypingMessageAction";
+export {UserDataType} from "./enums/UserDataType";
diff --git a/indexgen.js b/indexgen.js
new file mode 100644
index 0000000..f2ecae6
--- /dev/null
+++ b/indexgen.js
@@ -0,0 +1,26 @@
+const fs = require('fs');
+const path = require("path");
+
+let classes = fs.readdirSync("./classes").filter(i => i.endsWith(".ts"));
+let types = fs.readdirSync("./types").filter(i => i.endsWith(".ts"));
+let enums = fs.readdirSync("./enums").filter(i => i.endsWith(".ts"));
+
+let index = "// Classes\n";
+
+for (let c of classes) {
+ index += "export {" + path.basename(c, path.extname(c)) + "} from \"./classes/" + path.basename(c, path.extname(c)) + "\";\n";
+}
+
+index += "\n// Types\n";
+
+for (let c of types) {
+ index += "export {" + path.basename(c, path.extname(c)) + "} from \"./types/" + path.basename(c, path.extname(c)) + "\";\n";
+}
+
+index += "\n// Enums\n";
+
+for (let c of enums) {
+ index += "export {" + path.basename(c, path.extname(c)) + "} from \"./enums/" + path.basename(c, path.extname(c)) + "\";\n";
+}
+
+fs.writeFileSync("./index.ts", index); \ No newline at end of file
diff --git a/node_modules/.bin/marked b/node_modules/.bin/marked
new file mode 120000
index 0000000..6827ff3
--- /dev/null
+++ b/node_modules/.bin/marked
@@ -0,0 +1 @@
+../marked/bin/marked.js \ No newline at end of file
diff --git a/node_modules/.bin/prettier b/node_modules/.bin/prettier
new file mode 120000
index 0000000..a478df3
--- /dev/null
+++ b/node_modules/.bin/prettier
@@ -0,0 +1 @@
+../prettier/bin-prettier.js \ No newline at end of file
diff --git a/node_modules/.bin/typedoc b/node_modules/.bin/typedoc
new file mode 120000
index 0000000..8303b02
--- /dev/null
+++ b/node_modules/.bin/typedoc
@@ -0,0 +1 @@
+../typedoc/bin/typedoc \ No newline at end of file
diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
index f9d679d..822897f 100644
--- a/node_modules/.package-lock.json
+++ b/node_modules/.package-lock.json
@@ -1,18 +1,135 @@
{
- "name": "signal.js",
- "version": "0.1.0",
+ "name": "@equestria.dev/signal.js",
+ "version": "0.3.0-beta.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
+ "node_modules/@terwer/typedoc-plugin-markdown": {
+ "version": "4.0.0-next.11",
+ "resolved": "https://registry.npmjs.org/@terwer/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.0.0-next.11.tgz",
+ "integrity": "sha512-YX4VqVSIBHB21Wh5fALNhiErJf35Uvcbd8eMoB6fOpmLLZMnU63BKYssNfVtv8mm5oywC6gqPFBflFg4H9iuOg==",
+ "dev": true,
+ "peerDependencies": {
+ "prettier": ">=1.8.0",
+ "typedoc": ">=0.24.0"
+ }
+ },
"node_modules/@types/node": {
"version": "20.4.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.1.tgz",
- "integrity": "sha512-JIzsAvJeA/5iY6Y/OxZbv1lUcc8dNSE77lb2gnBH+/PJ3lFR1Ccvgwl5JWnHAkNHcRsT0TbpVOsiMKZ1F/yyJg=="
+ "integrity": "sha512-JIzsAvJeA/5iY6Y/OxZbv1lUcc8dNSE77lb2gnBH+/PJ3lFR1Ccvgwl5JWnHAkNHcRsT0TbpVOsiMKZ1F/yyJg==",
+ "dev": true
+ },
+ "node_modules/ansi-sequence-parser": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz",
+ "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==",
+ "dev": true
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
+ "dev": true
+ },
+ "node_modules/lunr": {
+ "version": "2.3.9",
+ "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz",
+ "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==",
+ "dev": true
+ },
+ "node_modules/marked": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz",
+ "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==",
+ "dev": true,
+ "bin": {
+ "marked": "bin/marked.js"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
+ "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/shiki": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.3.tgz",
+ "integrity": "sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==",
+ "dev": true,
+ "dependencies": {
+ "ansi-sequence-parser": "^1.1.0",
+ "jsonc-parser": "^3.2.0",
+ "vscode-oniguruma": "^1.7.0",
+ "vscode-textmate": "^8.0.0"
+ }
+ },
+ "node_modules/typedoc": {
+ "version": "0.24.8",
+ "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.8.tgz",
+ "integrity": "sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==",
+ "dev": true,
+ "dependencies": {
+ "lunr": "^2.3.9",
+ "marked": "^4.3.0",
+ "minimatch": "^9.0.0",
+ "shiki": "^0.14.1"
+ },
+ "bin": {
+ "typedoc": "bin/typedoc"
+ },
+ "engines": {
+ "node": ">= 14.14"
+ },
+ "peerDependencies": {
+ "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x"
+ }
},
"node_modules/typescript": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
"integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
+ "dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -20,6 +137,18 @@
"engines": {
"node": ">=14.17"
}
+ },
+ "node_modules/vscode-oniguruma": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz",
+ "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==",
+ "dev": true
+ },
+ "node_modules/vscode-textmate": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz",
+ "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==",
+ "dev": true
}
}
}
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/LICENSE b/node_modules/@terwer/typedoc-plugin-markdown/LICENSE
new file mode 100644
index 0000000..f0039e4
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2016 Thomas Grey
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/README.md b/node_modules/@terwer/typedoc-plugin-markdown/README.md
new file mode 100644
index 0000000..ec457f3
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/README.md
@@ -0,0 +1,104 @@
+# typedoc-plugin-markdown
+
+A plugin for [TypeDoc](https://typedoc.org) that renders TypeScript API documentation as Markdown.
+
+[![npm](https://img.shields.io/npm/v/typedoc-plugin-markdown.svg)](https://www.npmjs.com/package/typedoc-plugin-markdown)
+[![Build Status](https://github.com/tgreyuk/typedoc-plugin-markdown/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/tgreyuk/typedoc-plugin-markdown/actions/workflows/ci.yml)
+
+## What does it do?
+
+By default, TypeDoc will render API documentation as a webpage, e.g. HTML files.
+
+The plugin replaces the default HTML theme with a built-in Markdown theme and exposes some additional options. This is useful if documentation is required to be included in project README files, Wikis and static site generators.
+
+## Installation
+
+**Please note this pre-release version may contain breaking changes within the same semantic version.**
+
+> [TypeDoc](https://typedoc.org) and [Prettier](https://prettier.io/) are both required peer dependencies.
+
+```bash
+npm install typedoc-plugin-markdown@next --save-dev
+```
+
+## Usage
+
+```bash
+typedoc --plugin typedoc-plugin-markdown
+```
+
+## Options
+
+The following options can be used in addition to relevant [TypeDoc options](https://typedoc.org/options/)
+(please note that TypeDoc options specific to the HTML theme will be ignored).
+
+### File output and content organization
+
+- **`--outputFileStrategy`**<br>
+ Determines how output files are generated. Allowed values `modules` (all symbols hoisted to a single modules file) or `members` (each symbol exported to a seperate file). Default value `members`.
+- **`--entryDocument`**<br>
+ The file name of the entry document. Default value `README.md`.
+- **`--includeFileNumberPrefixes`**<br>
+ Prefixes generated files and folders with number prefixes. This is useful for auto sidebar generation. Defaults to `false`.
+- **`--excludeGroups`**<br>
+ By default members are grouped by kind (eg Classes, Functions etc). This option excludes such groupings so all members are rendered and sorted at the same level. Defaults to `false`.
+
+Please see [File output and content organization](./docs/file-output-options.md) for further documentation.
+
+### UI options
+
+- **`--hidePageHeader`**<br>
+ Do not print the page header. Defaults to `false`.
+- **`--hideBreadcrumbs`**<br>
+ Do not print breadcrumbs. Defaults to `false`.
+- **`--hideInPageTOC`**<br>
+ Do not print in-page index items. Defaults to `false`.
+- **`--hidePageTitle`**<br>
+ Do not print the page title. Defaults to `false`.
+- **`--hideKindTag`**<br>
+ Do not print the kind tag identifiers for symbols. Defaults to `false`.
+- **`--hideHierarchy`**<br>
+ Do not print reflection hierarchy. Defaults to `false`.
+- **`--indexPageTitle`**<br>
+ The title of the main index / modules page. If not set will default to the project name.
+- **`--indentifiersAsCodeBlocks`**<br>
+ Format signature and declaration identifiers in code blocks. Note if `true` references will not be linked. Defaults to `false`.
+- **`--propertiesFormat`**<br>
+ Specify the render style of properties groups for interfaces, classes and type literals. Expected values [`list`, `table`]. Defaults to `list`.
+- **`--enumMembersFormat`**<br>
+ Specify the render style of Enum members. Expected values [`list`, `table`]. Defaults to `list`.
+- **`--typeDeclarationFormat`**<br>
+ Specify the render style for type declaration members. Expected values [`list`, `table`]. Defaults to `list`.
+
+### Utility options
+
+- **`--baseUrl`**<br>
+ Specifies the base url for internal link. If omitted all urls will be relative. Defaults to `.`
+- **`--anchorFormat`**<br>
+ The anchor style to use when linking to internal symbols. Expected values [`lowercase`, `slug`, `none`]. Defaults to `lowercase`.
+- **`--anchorPattern`**<br>
+ The anchor pattern to use when linking to internal symbols. e.g customprefix-{{anchor}}.
+- **`--namedAnchors`**<br>
+ Use HTML named anchor tags for implementations that do not assign header ids. Defaults to `false`.
+
+## Frontmatter
+
+If frontmatter is required for adding further metadata please use [typedoc-plugin-frontmatter](https://github.com/tgreyuk/typedoc-plugin-frontmatter)
+
+## Output formatting (Prettier)
+
+Generated Markdown is now parsed with [Prettier](https://prettier.io/) which is backed by the remark-parse package. Parsing documents with Prettier has several benefits:
+
+- Produces a consistent format.
+- Remove unnecessary escape characters.
+- Formats code blocks inside comment fenced blocks.
+
+Any [prettier configuration](https://prettier.io/docs/en/configuration.html) files discovered will be passed as options to the parser.
+
+## Further Documentation
+
+- [File output options](./docs/file-output-options.md)
+
+## License
+
+[MIT](https://github.com/tgreyuk/typedoc-plugin-markdown/blob/master/LICENSE)
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/models.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/models.d.ts
new file mode 100644
index 0000000..8b76cdd
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/models.d.ts
@@ -0,0 +1,7 @@
+export interface UrlOption {
+ parentUrl?: string;
+ directory?: string | null;
+ forceDirectory?: boolean;
+ directoryPosition: number;
+ pagePosition: number;
+}
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/models.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/models.js
new file mode 100644
index 0000000..c8ad2e5
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/models.js
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/navigation-builder.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/navigation-builder.d.ts
new file mode 100644
index 0000000..62e088b
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/navigation-builder.d.ts
@@ -0,0 +1,11 @@
+import { DeclarationReflection, ProjectReflection, ReflectionGroup } from 'typedoc';
+import { NavigationItem } from '../models';
+import { MarkdownThemeRenderContext } from '../theme-render-context';
+export declare class NavigationBuilder {
+ context: MarkdownThemeRenderContext;
+ navigation: NavigationItem[];
+ constructor(context: MarkdownThemeRenderContext);
+ getNavigation(project: ProjectReflection): NavigationItem[];
+ getGroupChildren(group: ReflectionGroup): any;
+ getChildrenOrGroups(reflection: DeclarationReflection): any;
+}
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/navigation-builder.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/navigation-builder.js
new file mode 100644
index 0000000..10ada5a
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/navigation-builder.js
@@ -0,0 +1,70 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.NavigationBuilder = void 0;
+class NavigationBuilder {
+ constructor(context) {
+ this.context = context;
+ this.navigation = [];
+ }
+ getNavigation(project) {
+ var _a, _b, _c;
+ if ((_a = project.groups) === null || _a === void 0 ? void 0 : _a.length) {
+ (_b = project.groups) === null || _b === void 0 ? void 0 : _b.forEach(() => {
+ var _a;
+ (_a = project.children) === null || _a === void 0 ? void 0 : _a.forEach((child) => {
+ this.navigation.push({
+ title: child.name,
+ url: child.url,
+ children: this.getChildrenOrGroups(child) || [],
+ });
+ });
+ });
+ }
+ else {
+ (_c = project.children) === null || _c === void 0 ? void 0 : _c.forEach((child) => {
+ this.navigation.push({
+ title: child.name,
+ children: this.getChildrenOrGroups(child) || [],
+ });
+ });
+ }
+ return this.navigation;
+ }
+ getGroupChildren(group) {
+ var _a, _b;
+ if (group.categories) {
+ return (_a = group.categories) === null || _a === void 0 ? void 0 : _a.map((category) => {
+ return {
+ title: category.title,
+ children: this.getGroupChildren(category) || [],
+ };
+ });
+ }
+ return (_b = group.children) === null || _b === void 0 ? void 0 : _b.filter((child) => child.hasOwnDocument).map((child) => {
+ return {
+ title: child.name,
+ url: child.url,
+ children: this.getChildrenOrGroups(child) || [],
+ };
+ });
+ }
+ getChildrenOrGroups(reflection) {
+ var _a, _b;
+ if (this.context.getOption('excludeGroups')) {
+ return (_a = reflection.children) === null || _a === void 0 ? void 0 : _a.filter((child) => child.hasOwnDocument).map((child) => {
+ return {
+ title: child.name,
+ url: child.url,
+ children: this.getChildrenOrGroups(child),
+ };
+ });
+ }
+ return (_b = reflection.groups) === null || _b === void 0 ? void 0 : _b.map((group) => {
+ return {
+ title: group.title,
+ children: this.getGroupChildren(group) || [],
+ };
+ });
+ }
+}
+exports.NavigationBuilder = NavigationBuilder;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/url-builder.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/url-builder.d.ts
new file mode 100644
index 0000000..b63a2d7
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/url-builder.d.ts
@@ -0,0 +1,21 @@
+import { DeclarationReflection, PageEvent, ProjectReflection, UrlMapping } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../theme-render-context';
+export declare class UrlBuilder {
+ context: MarkdownThemeRenderContext;
+ urls: UrlMapping[];
+ anchors: string[];
+ constructor(context: MarkdownThemeRenderContext);
+ readmeTemplate: (pageEvent: PageEvent<ProjectReflection>) => string;
+ projectTemplate: (pageEvent: PageEvent<ProjectReflection>) => string;
+ reflectionTemplate: (pageEvent: PageEvent<DeclarationReflection>) => string;
+ memberTemplate: (pageEvent: PageEvent<DeclarationReflection>) => string;
+ getUrls(project: ProjectReflection): UrlMapping[];
+ private buildUrlsFromProject;
+ private buildUrlsFromGroup;
+ private getUrl;
+ private applyAnchorUrl;
+ private getAnchorId;
+ private getPartName;
+ private childrenIncludeNamespaces;
+ private getTemplateMapping;
+}
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/url-builder.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/url-builder.js
new file mode 100644
index 0000000..dd65436
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/converter/url-builder.js
@@ -0,0 +1,337 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.UrlBuilder = void 0;
+const path = __importStar(require("path"));
+const typedoc_1 = require("typedoc");
+const models_1 = require("../models");
+const utils_1 = require("../support/utils");
+class UrlBuilder {
+ constructor(context) {
+ this.context = context;
+ this.urls = [];
+ this.anchors = [];
+ this.readmeTemplate = (pageEvent) => {
+ return this.context.templates.readmeTemplate(pageEvent);
+ };
+ this.projectTemplate = (pageEvent) => {
+ return this.context.templates.projectTemplate(pageEvent);
+ };
+ this.reflectionTemplate = (pageEvent) => {
+ return this.context.templates.reflectionTemplate(pageEvent);
+ };
+ this.memberTemplate = (pageEvent) => {
+ return this.context.templates.memberTemplate(pageEvent);
+ };
+ }
+ getUrls(project) {
+ var _a, _b, _c;
+ const entryDocument = this.context.getOption('entryDocument');
+ const globalsPage = ((_a = this.context.getOption('entryPoints')) === null || _a === void 0 ? void 0 : _a.length) > 1
+ ? this.context.modulesFile
+ : this.context.exportsFile;
+ if (!((_b = this.context.getOption('readme')) === null || _b === void 0 ? void 0 : _b.endsWith('none'))) {
+ project.url = this.getPartName(globalsPage, 1);
+ this.urls.push(new typedoc_1.UrlMapping(this.context.getOption('entryDocument'), project, this.readmeTemplate));
+ this.urls.push(new typedoc_1.UrlMapping(this.getPartName(globalsPage, 1), project, this.projectTemplate));
+ }
+ else {
+ project.url = entryDocument;
+ this.urls.push(new typedoc_1.UrlMapping(entryDocument, project, this.projectTemplate));
+ }
+ if (this.context.getOption('entryPointStrategy') === 'packages') {
+ (_c = project.children) === null || _c === void 0 ? void 0 : _c.forEach((projectChild, projectChildIndex) => {
+ var _a;
+ const startIndex = !((_a = this.context.getOption('readme')) === null || _a === void 0 ? void 0 : _a.endsWith('none'))
+ ? 2
+ : 1;
+ const directoryPosition = projectChildIndex + startIndex;
+ const url = `${this.getPartName(projectChild.name, directoryPosition)}/${Boolean(projectChild.readme)
+ ? this.getPartName(this.context.indexFile, 1)
+ : this.context.indexFile}`;
+ if (projectChild.readme) {
+ this.urls.push(new typedoc_1.UrlMapping(`${path.dirname(url)}/${this.context.readmeFile}`, projectChild, this.readmeTemplate));
+ }
+ this.urls.push(new typedoc_1.UrlMapping(url, projectChild, this.projectTemplate));
+ projectChild.url = url;
+ this.buildUrlsFromProject(projectChild, url);
+ });
+ }
+ else {
+ this.buildUrlsFromProject(project);
+ }
+ return this.urls;
+ }
+ buildUrlsFromProject(project, parentUrl) {
+ var _a, _b;
+ const startIndex = Boolean(project.readme) ? 2 : 1;
+ if (this.context.getOption('excludeGroups')) {
+ (_a = project.children) === null || _a === void 0 ? void 0 : _a.forEach((projectGroupChild, projectGroupChildIndex) => {
+ this.buildUrlsFromGroup(projectGroupChild, {
+ directoryPosition: projectGroupChildIndex + startIndex,
+ pagePosition: projectGroupChildIndex + startIndex,
+ ...(parentUrl && { parentUrl: parentUrl }),
+ });
+ });
+ }
+ else {
+ (_b = project.groups) === null || _b === void 0 ? void 0 : _b.forEach((projectGroup, projectGroupIndex) => {
+ projectGroup.children.forEach((projectGroupChild, projectGroupChildIndex) => {
+ this.buildUrlsFromGroup(projectGroupChild, {
+ directoryPosition: projectGroupIndex + startIndex,
+ pagePosition: projectGroupChildIndex + startIndex,
+ ...(parentUrl && { parentUrl: parentUrl }),
+ });
+ });
+ });
+ }
+ }
+ buildUrlsFromGroup(reflection, options) {
+ var _a, _b;
+ const mapping = this.getTemplateMapping(reflection.kind);
+ if (mapping) {
+ const directory = options.directory || mapping.directory;
+ const url = this.getUrl(reflection, {
+ ...options,
+ directory,
+ });
+ this.urls.push(new typedoc_1.UrlMapping(url, reflection, mapping.template));
+ reflection.url = url;
+ reflection.hasOwnDocument = true;
+ if (this.context.getOption('excludeGroups')) {
+ if (reflection.categories) {
+ reflection.categories.forEach((category, categoryIndex) => {
+ category.children.forEach((categoryChild, categoryChildIndex) => {
+ this.buildUrlsFromGroup(categoryChild, {
+ parentUrl: url,
+ directoryPosition: categoryIndex + 1,
+ directory: category.title,
+ pagePosition: categoryChildIndex + 1,
+ forceDirectory: true,
+ });
+ });
+ });
+ }
+ else {
+ (_a = reflection.children) === null || _a === void 0 ? void 0 : _a.forEach((groupChild, groupChildIndex) => {
+ this.buildUrlsFromGroup(groupChild, {
+ parentUrl: url,
+ directoryPosition: groupChildIndex + 1,
+ directory: null,
+ pagePosition: groupChildIndex + 1,
+ });
+ });
+ }
+ }
+ else {
+ (_b = reflection.groups) === null || _b === void 0 ? void 0 : _b.forEach((group, groupIndex) => {
+ if (group.categories) {
+ group.categories.forEach((category, categoryIndex) => {
+ category.children.forEach((categoryChild, categoryChildIndex) => {
+ const mapping = this.getTemplateMapping(categoryChild.kind);
+ this.buildUrlsFromGroup(categoryChild, {
+ parentUrl: url,
+ directoryPosition: groupIndex + 1,
+ directory: `${mapping === null || mapping === void 0 ? void 0 : mapping.directory}/${this.getPartName(category.title, categoryIndex + 1)}`,
+ pagePosition: categoryChildIndex + 1,
+ });
+ });
+ });
+ }
+ else {
+ group.children.forEach((groupChild, groupChildIndex) => {
+ const mapping = this.getTemplateMapping(groupChild.kind);
+ this.buildUrlsFromGroup(groupChild, {
+ parentUrl: url,
+ directoryPosition: groupIndex + 1,
+ directory: (mapping === null || mapping === void 0 ? void 0 : mapping.directory) || null,
+ pagePosition: groupChildIndex + 1,
+ });
+ });
+ }
+ });
+ }
+ }
+ else if (reflection.parent) {
+ this.applyAnchorUrl(reflection, reflection.parent);
+ }
+ }
+ getUrl(reflection, options) {
+ if (this.context.getOption('flattenOutputFiles')) {
+ const kindAlias = typedoc_1.ReflectionKind.singularString(reflection.kind).split(' ')[0];
+ if (options.parentUrl) {
+ return `${path
+ .dirname(options.parentUrl.split('.').join('/'))
+ .split('/')
+ .join('.')}.${kindAlias}.${reflection.name.replace(/\//, '_')}.md`;
+ }
+ const friendlyName = `${reflection.name.replace(/\//, '_')}.md`;
+ return reflection.kindOf(typedoc_1.ReflectionKind.Module)
+ ? friendlyName
+ : `${kindAlias}.${friendlyName}`;
+ }
+ const alias = reflection.getAlias().replace(/^_/, '');
+ const parentDir = options.parentUrl
+ ? path.dirname(options.parentUrl)
+ : null;
+ const dir = () => {
+ if (reflection.kindOf(typedoc_1.ReflectionKind.Namespace)) {
+ if (!this.context.getOption('excludeGroups')) {
+ return this.getPartName(`${options.directory}/${this.getPartName('namespace.' + alias, options.pagePosition)}`, options.directoryPosition);
+ }
+ return this.getPartName(alias, options.pagePosition);
+ }
+ if (options.directory &&
+ this.context.getOption('excludeGroups') &&
+ !options.forceDirectory) {
+ return null;
+ }
+ return options.directory
+ ? this.getPartName(options.directory, options.directoryPosition)
+ : `${this.getPartName((0, utils_1.slugify)(typedoc_1.ReflectionKind.singularString(reflection.kind)), options.pagePosition)}.${alias}`;
+ };
+ const filename = () => {
+ if (reflection.kindOf([typedoc_1.ReflectionKind.Module, typedoc_1.ReflectionKind.Namespace]) &&
+ this.context.getOption('outputFileStrategy') ===
+ models_1.OutputFileStrategy.Modules &&
+ !this.childrenIncludeNamespaces(reflection)) {
+ return null;
+ }
+ if (reflection.kindOf([typedoc_1.ReflectionKind.Module, typedoc_1.ReflectionKind.Namespace])) {
+ return path.parse(this.context.indexFile).name;
+ }
+ return `${this.getPartName((0, utils_1.slugify)(typedoc_1.ReflectionKind.singularString(reflection.kind)), options.pagePosition)}.${alias}`;
+ };
+ return ([parentDir, dir(), filename()].filter((part) => Boolean(part)).join('/') +
+ '.md');
+ }
+ applyAnchorUrl(reflection, container) {
+ var _a, _b;
+ if (container.url && !reflection.url) {
+ if (!reflection.kindOf(typedoc_1.ReflectionKind.TypeLiteral)) {
+ const anchorPattern = this.context.getOption('anchorPattern');
+ const anchorId = anchorPattern
+ ? anchorPattern.replace('{{anchor}}', this.getAnchorId(reflection))
+ : this.getAnchorId(reflection);
+ const count = (_b = (_a = this.anchors[container.url]) === null || _a === void 0 ? void 0 : _a.filter((id) => id === anchorId)) === null || _b === void 0 ? void 0 : _b.length;
+ const anchor = anchorId + (count > 1 ? '-' + (count - 1).toString() : '');
+ this.anchors.push(anchorId);
+ reflection.url = container.url + '#' + anchor;
+ reflection.anchor = anchor;
+ }
+ reflection.hasOwnDocument = false;
+ }
+ reflection.traverse((child) => {
+ if (child instanceof typedoc_1.DeclarationReflection) {
+ this.applyAnchorUrl(child, container);
+ }
+ });
+ }
+ getAnchorId(reflection) {
+ const anchorFormat = this.context.getOption('anchorFormat');
+ if (anchorFormat.toLowerCase() === 'lowercase') {
+ return reflection.name.toLowerCase();
+ }
+ if (anchorFormat.toLowerCase() === 'slug') {
+ return (0, utils_1.slugify)(reflection.name);
+ }
+ return reflection.name;
+ }
+ getPartName(part, position) {
+ return this.context.getOption('includeFileNumberPrefixes')
+ ? `${String(position).padStart(2, '0')}-${part}`
+ : part;
+ }
+ childrenIncludeNamespaces(reflection) {
+ var _a;
+ return (_a = reflection.children) === null || _a === void 0 ? void 0 : _a.some((child) => child.kindOf(typedoc_1.ReflectionKind.Namespace));
+ }
+ getTemplateMapping(kind) {
+ const getDirectoryName = (reflectionKind) => {
+ const pluralString = typedoc_1.ReflectionKind.pluralString(reflectionKind);
+ return this.context.getOption('includeFileNumberPrefixes')
+ ? pluralString
+ : (0, utils_1.slugify)(pluralString);
+ };
+ const outputFileStrategy = this.context.getOption('outputFileStrategy');
+ const mappings = {
+ [typedoc_1.ReflectionKind.Module]: {
+ template: this.reflectionTemplate,
+ directory: null,
+ kind: typedoc_1.ReflectionKind.Module,
+ },
+ [typedoc_1.ReflectionKind.Namespace]: {
+ template: this.reflectionTemplate,
+ directory: getDirectoryName(typedoc_1.ReflectionKind.Namespace),
+ kind: typedoc_1.ReflectionKind.Namespace,
+ },
+ };
+ if (outputFileStrategy === models_1.OutputFileStrategy.Members) {
+ mappings[typedoc_1.ReflectionKind.Class] = {
+ template: this.reflectionTemplate,
+ directory: getDirectoryName(typedoc_1.ReflectionKind.Class),
+ kind: typedoc_1.ReflectionKind.Class,
+ };
+ }
+ if (outputFileStrategy === models_1.OutputFileStrategy.Members) {
+ mappings[typedoc_1.ReflectionKind.Interface] = {
+ isLeaf: false,
+ template: this.reflectionTemplate,
+ directory: getDirectoryName(typedoc_1.ReflectionKind.Interface),
+ kind: typedoc_1.ReflectionKind.Interface,
+ };
+ }
+ if (outputFileStrategy === models_1.OutputFileStrategy.Members) {
+ mappings[typedoc_1.ReflectionKind.Enum] = {
+ template: this.reflectionTemplate,
+ directory: getDirectoryName(typedoc_1.ReflectionKind.Enum),
+ kind: typedoc_1.ReflectionKind.Enum,
+ };
+ }
+ if (outputFileStrategy === models_1.OutputFileStrategy.Members) {
+ mappings[typedoc_1.ReflectionKind.Function] = {
+ template: this.memberTemplate,
+ directory: getDirectoryName(typedoc_1.ReflectionKind.Function),
+ kind: typedoc_1.ReflectionKind.Function,
+ };
+ }
+ if (outputFileStrategy === models_1.OutputFileStrategy.Members) {
+ mappings[typedoc_1.ReflectionKind.TypeAlias] = {
+ template: this.memberTemplate,
+ directory: getDirectoryName(typedoc_1.ReflectionKind.TypeAlias),
+ kind: typedoc_1.ReflectionKind.TypeAlias,
+ };
+ }
+ if (outputFileStrategy === models_1.OutputFileStrategy.Members) {
+ mappings[typedoc_1.ReflectionKind.Variable] = {
+ template: this.memberTemplate,
+ directory: getDirectoryName(typedoc_1.ReflectionKind.Variable),
+ kind: typedoc_1.ReflectionKind.Variable,
+ };
+ }
+ return mappings[kind];
+ }
+}
+exports.UrlBuilder = UrlBuilder;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/index.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/index.d.ts
new file mode 100644
index 0000000..dc13271
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/index.d.ts
@@ -0,0 +1,8 @@
+import { Application } from "typedoc";
+export declare function load(app: Application): void;
+export * from "./models";
+export * from "./options/options-reader";
+export { MarkdownRendererEvent } from "./renderer/renderer";
+export { partials } from "./resources/resources";
+export { MarkdownTheme } from "./theme";
+export { MarkdownThemeRenderContext } from "./theme-render-context";
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/index.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/index.js
new file mode 100644
index 0000000..9d4a58c
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/index.js
@@ -0,0 +1,40 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.MarkdownThemeRenderContext = exports.MarkdownTheme = exports.partials = exports.MarkdownRendererEvent = exports.load = void 0;
+const options_1 = require("./options/options");
+const renderer_1 = require("./renderer/renderer");
+const theme_1 = require("./theme");
+function load(app) {
+ app.renderer.defineTheme("markdown", theme_1.MarkdownTheme);
+ (0, options_1.declareOptions)(app);
+ Object.defineProperty(app, "generateDocs", { value: renderer_1.generateMarkdown });
+ Object.defineProperty(app.renderer, "render", {
+ value: renderer_1.renderMarkdown,
+ configurable: true,
+ });
+}
+exports.load = load;
+__exportStar(require("./models"), exports);
+__exportStar(require("./options/options-reader"), exports);
+var renderer_2 = require("./renderer/renderer");
+Object.defineProperty(exports, "MarkdownRendererEvent", { enumerable: true, get: function () { return renderer_2.MarkdownRendererEvent; } });
+var resources_1 = require("./resources/resources");
+Object.defineProperty(exports, "partials", { enumerable: true, get: function () { return resources_1.partials; } });
+var theme_2 = require("./theme");
+Object.defineProperty(exports, "MarkdownTheme", { enumerable: true, get: function () { return theme_2.MarkdownTheme; } });
+var theme_render_context_1 = require("./theme-render-context");
+Object.defineProperty(exports, "MarkdownThemeRenderContext", { enumerable: true, get: function () { return theme_render_context_1.MarkdownThemeRenderContext; } });
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/models.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/models.d.ts
new file mode 100644
index 0000000..cdcbb74
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/models.d.ts
@@ -0,0 +1,53 @@
+import { ReflectionKind, TypeDocOptionMap } from 'typedoc';
+export declare const OutputFileStrategy: {
+ readonly Modules: "modules";
+ readonly Members: "members";
+};
+export type OutputFileStrategy = (typeof OutputFileStrategy)[keyof typeof OutputFileStrategy];
+export declare const FormatStyle: {
+ readonly List: "list";
+ readonly Table: "table";
+};
+export type FormatStyle = (typeof FormatStyle)[keyof typeof FormatStyle];
+export declare const AnchorFormat: {
+ readonly Lowercase: "lowercase";
+ readonly Slug: "slug";
+ readonly None: "none";
+};
+export type AnchorFormat = (typeof AnchorFormat)[keyof typeof AnchorFormat];
+export interface TypedocPluginMarkdownOptions extends TypeDocOptionMap {
+ anchorFormat: AnchorFormat;
+ anchorPattern: string;
+ baseUrl: string;
+ entryDocument: string;
+ enumMembersFormat: FormatStyle;
+ excludeGroups: boolean;
+ flattenOutputFiles: boolean;
+ hideBreadcrumbs: boolean;
+ hideInPageTOC: boolean;
+ hideKindTag: boolean;
+ hidePageHeader: boolean;
+ hidePageTitle: boolean;
+ hideHierarchy: boolean;
+ includeFileNumberPrefixes: boolean;
+ indentifiersAsCodeBlocks: boolean;
+ indexPageTitle: string;
+ namedAnchors: boolean;
+ outputFileStrategy: OutputFileStrategy;
+ propertiesFormat: FormatStyle;
+ typeDeclarationFormat: FormatStyle;
+}
+export interface TemplateMapping {
+ directory: string | null;
+ template: any;
+ kind: ReflectionKind;
+}
+export type Collapse = 'object' | 'function' | 'all' | 'none';
+export type FrontmatterGlobals = string | Record<string, string | boolean | number | null>;
+export interface NavigationItem {
+ title: string;
+ url?: string;
+ children?: NavigationItem[];
+ isReadme?: boolean;
+ isGroup?: boolean;
+}
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/models.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/models.js
new file mode 100644
index 0000000..af0bbcc
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/models.js
@@ -0,0 +1,16 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.AnchorFormat = exports.FormatStyle = exports.OutputFileStrategy = void 0;
+exports.OutputFileStrategy = {
+ Modules: 'modules',
+ Members: 'members',
+};
+exports.FormatStyle = {
+ List: 'list',
+ Table: 'table',
+};
+exports.AnchorFormat = {
+ Lowercase: 'lowercase',
+ Slug: 'slug',
+ None: 'none',
+};
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/options/options-reader.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/options/options-reader.d.ts
new file mode 100644
index 0000000..cee0fdd
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/options/options-reader.d.ts
@@ -0,0 +1,10 @@
+import { Options, OptionsReader } from 'typedoc';
+import { TypedocPluginMarkdownOptions } from '../models';
+export declare class MarkdownPluginOptionsReader<T = TypedocPluginMarkdownOptions> implements OptionsReader {
+ options: Partial<TypedocPluginMarkdownOptions>;
+ name: string;
+ order: number;
+ readonly supportsPackages = false;
+ constructor(options: Partial<T>);
+ read(container: Options): void;
+}
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/options/options-reader.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/options/options-reader.js
new file mode 100644
index 0000000..54a32fe
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/options/options-reader.js
@@ -0,0 +1,31 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.MarkdownPluginOptionsReader = void 0;
+class MarkdownPluginOptionsReader {
+ constructor(options) {
+ this.name = 'custom-options';
+ this.order = 1000;
+ this.supportsPackages = false;
+ this.options = options;
+ }
+ read(container) {
+ if (this.options) {
+ Object.entries(this.options).forEach(([key, value]) => {
+ if (key === 'plugin') {
+ const plugins = container.getValue('plugin');
+ const defaultPlugins = value;
+ defaultPlugins.forEach((defaultPlugin) => {
+ if (!plugins.includes(defaultPlugin)) {
+ plugins.push(defaultPlugin);
+ }
+ });
+ container.setValue('plugin', plugins);
+ }
+ else {
+ container.setValue(key, value);
+ }
+ });
+ }
+ }
+}
+exports.MarkdownPluginOptionsReader = MarkdownPluginOptionsReader;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/options/options.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/options/options.d.ts
new file mode 100644
index 0000000..4b2651e
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/options/options.d.ts
@@ -0,0 +1,2 @@
+import { Application } from 'typedoc';
+export declare function declareOptions(app: Application): void;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/options/options.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/options/options.js
new file mode 100644
index 0000000..5d2bbfd
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/options/options.js
@@ -0,0 +1,157 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.declareOptions = void 0;
+const typedoc_1 = require("typedoc");
+const models_1 = require("../models");
+function declareOptions(app) {
+ app.options.addReader(new (class {
+ constructor() {
+ this.name = 'markdown-theme';
+ this.order = 900;
+ this.supportsPackages = false;
+ }
+ read(container) {
+ if (container.getValue('theme') === 'default') {
+ container.setValue('theme', 'markdown');
+ }
+ if (container.getValue('excludeGroups')) {
+ container.setValue('categorizeByGroup', false);
+ }
+ }
+ })());
+ app.options.addDeclaration({
+ name: 'outputFileStrategy',
+ help: 'Determines how files are rendered.',
+ type: typedoc_1.ParameterType.Map,
+ map: models_1.OutputFileStrategy,
+ defaultValue: models_1.OutputFileStrategy.Members,
+ });
+ app.options.addDeclaration({
+ name: 'entryDocument',
+ help: '[Markdown Plugin] The file name of the entry document.',
+ type: typedoc_1.ParameterType.String,
+ defaultValue: 'README.md',
+ });
+ app.options.addDeclaration({
+ name: 'flattenOutputFiles',
+ help: '[Markdown Plugin] Flatten output files without folders.',
+ type: typedoc_1.ParameterType.Boolean,
+ defaultValue: false,
+ });
+ app.options.addDeclaration({
+ name: 'includeFileNumberPrefixes',
+ help: '[Markdown Plugin] Prefixes docs and folders by number prefixes if applicable.',
+ type: typedoc_1.ParameterType.Boolean,
+ defaultValue: false,
+ });
+ app.options.addDeclaration({
+ name: 'excludeGroups',
+ help: '[Markdown Plugin] Groups reflection kinds by headings if applicable e.g Classes, Functions. If set to false all symbols will render on the same level. Defaults to `true`',
+ type: typedoc_1.ParameterType.Boolean,
+ defaultValue: false,
+ });
+ app.options.addDeclaration({
+ name: 'hidePageHeader',
+ help: '[Markdown Plugin] Do not print page header.',
+ type: typedoc_1.ParameterType.Boolean,
+ defaultValue: false,
+ });
+ app.options.addDeclaration({
+ name: 'hidePageTitle',
+ help: '[Markdown Plugin] Do not print page title.',
+ type: typedoc_1.ParameterType.Boolean,
+ defaultValue: false,
+ });
+ app.options.addDeclaration({
+ name: 'hideKindTag',
+ help: '[Markdown Plugin] Do not print the kind tag beneath the page title.',
+ type: typedoc_1.ParameterType.Boolean,
+ defaultValue: false,
+ });
+ app.options.addDeclaration({
+ name: 'hideBreadcrumbs',
+ help: '[Markdown Plugin] Do not print breadcrumbs.',
+ type: typedoc_1.ParameterType.Boolean,
+ defaultValue: false,
+ });
+ app.options.addDeclaration({
+ name: 'hideInPageTOC',
+ help: '[Markdown Plugin] Do not render in-page table of contents items.',
+ type: typedoc_1.ParameterType.Boolean,
+ defaultValue: false,
+ });
+ app.options.addDeclaration({
+ name: 'hideHierarchy',
+ help: '[Markdown Plugin] Do not print reflection hierarchy.',
+ type: typedoc_1.ParameterType.Boolean,
+ defaultValue: false,
+ });
+ app.options.addDeclaration({
+ name: 'indexPageTitle',
+ help: '[Markdown Plugin] The title of the main index / modules page.',
+ type: typedoc_1.ParameterType.String,
+ });
+ app.options.addDeclaration({
+ name: 'indentifiersAsCodeBlocks',
+ help: '[Markdown Plugin] Format signature and declaration identifiers in code blocks.',
+ type: typedoc_1.ParameterType.Boolean,
+ defaultValue: false,
+ });
+ app.options.addDeclaration({
+ name: 'propertiesFormat',
+ help: '[Markdown Plugin] Specify the render style of properties.',
+ type: typedoc_1.ParameterType.Map,
+ map: models_1.FormatStyle,
+ defaultValue: models_1.FormatStyle.List,
+ });
+ app.options.addDeclaration({
+ name: 'enumMembersFormat',
+ help: '[Markdown Plugin] Specify the render style of enum members.',
+ type: typedoc_1.ParameterType.Map,
+ map: models_1.FormatStyle,
+ defaultValue: models_1.FormatStyle.List,
+ });
+ app.options.addDeclaration({
+ name: 'typeDeclarationFormat',
+ help: '[Markdown Plugin] Specify the render style of type declration members.',
+ type: typedoc_1.ParameterType.Map,
+ map: models_1.FormatStyle,
+ defaultValue: models_1.FormatStyle.List,
+ });
+ app.options.addDeclaration({
+ name: 'enableFrontmatter',
+ help: '[Markdown Plugin] Removed (please use typedoc-plugin-fronmatter)',
+ type: typedoc_1.ParameterType.Boolean,
+ defaultValue: false,
+ });
+ app.options.addDeclaration({
+ help: '[Markdown Plugin] Specifies the base url for internal link. If omitted all urls will be relative.',
+ name: 'baseUrl',
+ type: typedoc_1.ParameterType.String,
+ });
+ app.options.addDeclaration({
+ name: 'anchorFormat',
+ help: '[Markdown Plugin] The anchor format to use when linking to internal symbols.',
+ type: typedoc_1.ParameterType.Map,
+ map: models_1.AnchorFormat,
+ defaultValue: models_1.AnchorFormat.Lowercase,
+ });
+ app.options.addDeclaration({
+ name: 'anchorPattern',
+ help: '[Markdown Plugin] The anchor pattern to use when linking to internal symbols. e.g customprefix-{{anchor}}.',
+ type: typedoc_1.ParameterType.String,
+ });
+ app.options.addDeclaration({
+ name: 'namedAnchors',
+ help: '[Markdown Plugin] Use HTML named anchors as fragment identifiers for engines that do not automatically assign header ids. Should be set for Bitbucket Server docs.',
+ type: typedoc_1.ParameterType.Boolean,
+ defaultValue: false,
+ });
+ app.options.addDeclaration({
+ name: 'preserveAnchorCasing',
+ help: '[Markdown Plugin] Preserve anchor casing when generating links.',
+ type: typedoc_1.ParameterType.Boolean,
+ defaultValue: false,
+ });
+}
+exports.declareOptions = declareOptions;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/renderer/renderer.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/renderer/renderer.d.ts
new file mode 100644
index 0000000..88be390
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/renderer/renderer.d.ts
@@ -0,0 +1,7 @@
+import { ProjectReflection, RendererEvent } from 'typedoc';
+import { NavigationItem } from '../models';
+export declare class MarkdownRendererEvent extends RendererEvent {
+ navigation: NavigationItem[];
+}
+export declare function generateMarkdown(project: ProjectReflection, out: string): Promise<void>;
+export declare function renderMarkdown(project: ProjectReflection, outputDirectory: string): Promise<void>;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/renderer/renderer.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/renderer/renderer.js
new file mode 100644
index 0000000..a6f1e26
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/renderer/renderer.js
@@ -0,0 +1,94 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.renderMarkdown = exports.generateMarkdown = exports.MarkdownRendererEvent = void 0;
+const fs = __importStar(require("fs"));
+const path = __importStar(require("path"));
+const typedoc_1 = require("typedoc");
+class MarkdownRendererEvent extends typedoc_1.RendererEvent {
+}
+exports.MarkdownRendererEvent = MarkdownRendererEvent;
+async function generateMarkdown(project, out) {
+ const start = Date.now();
+ out = path.resolve(out);
+ await this.renderer.render(project, out);
+ if (this.logger.hasErrors()) {
+ this.logger.error('Documentation could not be generated due to the errors above.');
+ }
+ else {
+ this.logger.info(`Documentation generated at ${out}`);
+ this.logger.verbose(`Markdown rendering took ${Date.now() - start}ms`);
+ }
+}
+exports.generateMarkdown = generateMarkdown;
+async function renderMarkdown(project, outputDirectory) {
+ var _a, _b;
+ this.renderStartTime = Date.now();
+ if (this.cleanOutputDir) {
+ try {
+ fs.rmSync(outputDirectory, { recursive: true, force: true });
+ }
+ catch (error) {
+ this.application.logger.warn('Could not empty the output directory.');
+ return;
+ }
+ }
+ try {
+ fs.mkdirSync(outputDirectory, { recursive: true });
+ }
+ catch (error) {
+ this.application.l.error(`Could not create output directory ${outputDirectory}.`);
+ return;
+ }
+ if (this.githubPages) {
+ try {
+ const text = 'TypeDoc added this file to prevent GitHub Pages from ' +
+ 'using Jekyll. You can turn off this behavior by setting ' +
+ 'the `githubPages` option to false.';
+ fs.writeFileSync(path.join(outputDirectory, '.nojekyll'), text);
+ }
+ catch (error) {
+ this.application.warn('Could not create .nojekyll file.');
+ return;
+ }
+ }
+ this.prepareTheme();
+ const output = new MarkdownRendererEvent(typedoc_1.RendererEvent.BEGIN, outputDirectory, project);
+ output.urls = this.theme.getUrls(project);
+ output.navigation = this.theme.getNavigation(project);
+ this.trigger(output);
+ await Promise.all(this.preRenderAsyncJobs.map((job) => job(output)));
+ this.preRenderAsyncJobs = [];
+ this.application.logger.verbose(`There are ${(_a = output.urls) === null || _a === void 0 ? void 0 : _a.length} pages to write.`);
+ (_b = output.urls) === null || _b === void 0 ? void 0 : _b.filter((urlMapping) => urlMapping.model instanceof typedoc_1.ProjectReflection ||
+ urlMapping.model instanceof typedoc_1.DeclarationReflection).forEach((urlMapping) => {
+ this.renderDocument(...output.createPageEvent(urlMapping));
+ });
+ await Promise.all(this.postRenderAsyncJobs.map((job) => job(output)));
+ this.postRenderAsyncJobs = [];
+ this.trigger(typedoc_1.RendererEvent.END, output);
+ this.theme = void 0;
+}
+exports.renderMarkdown = renderMarkdown;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/breadcrumbs.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/breadcrumbs.d.ts
new file mode 100644
index 0000000..fa359bc
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/breadcrumbs.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection, PageEvent, ProjectReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function breadcrumbs(context: MarkdownThemeRenderContext, page: PageEvent<ProjectReflection | DeclarationReflection>): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/breadcrumbs.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/breadcrumbs.js
new file mode 100644
index 0000000..a54ee41
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/breadcrumbs.js
@@ -0,0 +1,32 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.breadcrumbs = void 0;
+const els_1 = require("../../support/els");
+const utils_1 = require("../../support/utils");
+function breadcrumbs(context, page) {
+ var _a, _b;
+ const md = [];
+ if (page.url === page.project.url || page.url === context.indexFile) {
+ return '';
+ }
+ md.push((0, els_1.link)(Boolean(page.project.groups)
+ ? context.getOption('entryPoints').length > 1
+ ? 'Modules'
+ : 'Exports'
+ : 'Packages', context.relativeURL(page.project.url)));
+ const breadcrumb = (model) => {
+ var _a;
+ if ((_a = model === null || model === void 0 ? void 0 : model.parent) === null || _a === void 0 ? void 0 : _a.parent) {
+ breadcrumb(model.parent);
+ }
+ md.push((0, els_1.link)(model.name, context.relativeURL(model === null || model === void 0 ? void 0 : model.url)));
+ };
+ const pageName = (0, utils_1.escapeChars)(page.model.name);
+ if (((_b = (_a = page.model) === null || _a === void 0 ? void 0 : _a.parent) === null || _b === void 0 ? void 0 : _b.parent) &&
+ (page.url !== page.project.url || page.url !== context.indexFile)) {
+ breadcrumb(page.model.parent);
+ }
+ md.push(pageName);
+ return md.length > 1 ? `${md.join(' > ')}` : '';
+}
+exports.breadcrumbs = breadcrumbs;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/comment.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/comment.d.ts
new file mode 100644
index 0000000..fc039c5
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/comment.d.ts
@@ -0,0 +1,3 @@
+import { Comment } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function comment(context: MarkdownThemeRenderContext, comment: Comment, headingLevel?: number): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/comment.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/comment.js
new file mode 100644
index 0000000..666aabe
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/comment.js
@@ -0,0 +1,29 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.comment = void 0;
+const els_1 = require("../../support/els");
+const helpers_1 = require("../../support/helpers");
+const utils_1 = require("../../support/utils");
+function comment(context, comment, headingLevel) {
+ var _a, _b;
+ const md = [];
+ if (((_a = comment.summary) === null || _a === void 0 ? void 0 : _a.length) > 0) {
+ md.push(context.partials.commentParts(comment.summary));
+ }
+ if ((_b = comment.blockTags) === null || _b === void 0 ? void 0 : _b.length) {
+ const tags = comment.blockTags
+ .filter((tag) => tag.tag !== '@returns')
+ .map((tag) => {
+ const tagName = (0, helpers_1.getTagName)(tag);
+ const tagText = (0, utils_1.camelToTitleCase)(tagName);
+ const tagMd = [
+ headingLevel ? (0, els_1.heading)(headingLevel, tagText) : (0, els_1.backTicks)(tagText),
+ ];
+ tagMd.push(context.partials.commentParts(tag.content));
+ return tagMd.join('\n\n');
+ });
+ md.push(tags.join('\n\n'));
+ }
+ return (0, utils_1.escapeAngleBrackets)(md.join('\n\n'));
+}
+exports.comment = comment;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/comment.parts.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/comment.parts.d.ts
new file mode 100644
index 0000000..90ebe77
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/comment.parts.d.ts
@@ -0,0 +1,3 @@
+import { CommentDisplayPart } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function commentParts(context: MarkdownThemeRenderContext, parts: CommentDisplayPart[]): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/comment.parts.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/comment.parts.js
new file mode 100644
index 0000000..ce5f81e
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/comment.parts.js
@@ -0,0 +1,43 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.commentParts = void 0;
+function commentParts(context, parts) {
+ const md = [];
+ for (const part of parts) {
+ switch (part.kind) {
+ case 'text':
+ case 'code':
+ md.push(part.text);
+ break;
+ case 'inline-tag':
+ switch (part.tag) {
+ case '@label':
+ case '@inheritdoc':
+ break;
+ case '@link':
+ case '@linkcode':
+ case '@linkplain': {
+ if (part.target) {
+ const url = typeof part.target === 'string'
+ ? part.target
+ : context.relativeURL(part.target.url);
+ const wrap = part.tag === '@linkcode' ? '`' : '';
+ md.push(url ? `[${wrap}${part.text}${wrap}](${url})` : part.text);
+ }
+ else {
+ md.push(part.text);
+ }
+ break;
+ }
+ default:
+ md.push(`{${part.tag} ${part.text}}`);
+ break;
+ }
+ break;
+ default:
+ md.push('');
+ }
+ }
+ return md.join('');
+}
+exports.commentParts = commentParts;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/hierarchy.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/hierarchy.d.ts
new file mode 100644
index 0000000..bd82259
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/hierarchy.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationHierarchy } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function hierarchy(context: MarkdownThemeRenderContext, declarationHierarchy: DeclarationHierarchy): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/hierarchy.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/hierarchy.js
new file mode 100644
index 0000000..f9554ae
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/hierarchy.js
@@ -0,0 +1,32 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.hierarchy = void 0;
+const els_1 = require("../../support/els");
+function hierarchy(context, declarationHierarchy) {
+ const md = [];
+ const parent = !declarationHierarchy.isTarget
+ ? declarationHierarchy.types
+ .map((hierarchyType) => {
+ return getHierarchyType(hierarchyType, declarationHierarchy.isTarget || false, context);
+ })
+ .join('.')
+ : null;
+ if (declarationHierarchy.next) {
+ declarationHierarchy.next.types.forEach((hierarchyType) => {
+ var _a;
+ const line = [];
+ if (parent) {
+ line.push(parent);
+ }
+ line.push(getHierarchyType(hierarchyType, ((_a = declarationHierarchy.next) === null || _a === void 0 ? void 0 : _a.isTarget) || false, context));
+ md.push(line.join('.'));
+ });
+ }
+ return (0, els_1.unorderedList)(md);
+}
+exports.hierarchy = hierarchy;
+function getHierarchyType(hierarchyType, isTarget, context) {
+ return isTarget
+ ? (0, els_1.bold)((0, els_1.backTicks)(hierarchyType.toString()))
+ : context.partials.someType(hierarchyType);
+}
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.d.ts
new file mode 100644
index 0000000..3cb95ac
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function member(context: MarkdownThemeRenderContext, reflection: DeclarationReflection, headingLevel: number): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.d.ts
new file mode 100644
index 0000000..26b70da
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function declarationMember(context: MarkdownThemeRenderContext, declaration: DeclarationReflection, headingLevel: number): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.identifier.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.identifier.d.ts
new file mode 100644
index 0000000..f47d106
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.identifier.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function declarationMemberIdentifier(context: MarkdownThemeRenderContext, reflection: DeclarationReflection): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.identifier.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.identifier.js
new file mode 100644
index 0000000..936f729
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.identifier.js
@@ -0,0 +1,42 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.declarationMemberIdentifier = void 0;
+const typedoc_1 = require("typedoc");
+const els_1 = require("../../support/els");
+const helpers_1 = require("../../support/helpers");
+const utils_1 = require("../../support/utils");
+function declarationMemberIdentifier(context, reflection) {
+ var _a, _b;
+ const md = [];
+ const declarationType = (0, helpers_1.getDeclarationType)(reflection);
+ if (((_a = reflection.flags) === null || _a === void 0 ? void 0 : _a.length) &&
+ !reflection.flags.isRest &&
+ !reflection.flags.isOptional) {
+ md.push(reflection.flags.map((flag) => (0, els_1.backTicks)(flag.toLowerCase())).join(' '));
+ }
+ if (reflection.kindOf(typedoc_1.ReflectionKind.Variable) && !reflection.flags.isConst) {
+ md.push((0, els_1.backTicks)('let'));
+ }
+ if (reflection.flags.isRest) {
+ md.push('...');
+ }
+ const name = [context.partials.declarationMemberName(reflection)];
+ if (reflection.flags.isOptional) {
+ name.push('?');
+ }
+ if (declarationType) {
+ name.push(':');
+ }
+ md.push(name.join(''));
+ if (reflection.typeParameters) {
+ md.push(`\\<${(_b = reflection.typeParameters) === null || _b === void 0 ? void 0 : _b.map((typeParameter) => (0, els_1.backTicks)(typeParameter.name)).join(', ')}\\>`);
+ }
+ if (declarationType) {
+ md.push(`${context.partials.someType(declarationType, 'all')}`);
+ }
+ if (reflection.defaultValue && reflection.defaultValue !== '...') {
+ md.push(` = \`${(0, utils_1.stripLineBreaks)((0, utils_1.stripComments)(reflection.defaultValue))}\``);
+ }
+ return md.join(' ');
+}
+exports.declarationMemberIdentifier = declarationMemberIdentifier;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.js
new file mode 100644
index 0000000..2722114
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.js
@@ -0,0 +1,58 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.declarationMember = void 0;
+const typedoc_1 = require("typedoc");
+const els_1 = require("../../support/els");
+function declarationMember(context, declaration, headingLevel) {
+ var _a, _b, _c, _d, _e, _f, _g;
+ const md = [];
+ const typeDeclaration = (_a = declaration.type) === null || _a === void 0 ? void 0 : _a.declaration;
+ if (context.getOption('indentifiersAsCodeBlocks')) {
+ md.push((0, els_1.codeBlock)(context.partials.declarationMemberIdentifier(declaration)));
+ }
+ else {
+ md.push(`> ${context.partials.declarationMemberIdentifier(declaration)}`);
+ }
+ if (declaration.comment) {
+ md.push(context.partials.comment(declaration.comment, headingLevel));
+ }
+ if (declaration.sources) {
+ md.push(context.partials.sources(declaration));
+ }
+ if (declaration.typeParameters) {
+ md.push((0, els_1.heading)(headingLevel, `Type parameters`));
+ md.push(context.partials.typeParametersTable(declaration.typeParameters));
+ }
+ if (typeDeclaration) {
+ if (typeDeclaration === null || typeDeclaration === void 0 ? void 0 : typeDeclaration.indexSignature) {
+ md.push((0, els_1.heading)(headingLevel, `Index signature`));
+ md.push(context.partials.indexSignatureTitle(typeDeclaration.indexSignature));
+ }
+ if (((_b = typeDeclaration === null || typeDeclaration === void 0 ? void 0 : typeDeclaration.signatures) === null || _b === void 0 ? void 0 : _b.length) ||
+ ((_c = typeDeclaration === null || typeDeclaration === void 0 ? void 0 : typeDeclaration.children) === null || _c === void 0 ? void 0 : _c.length)) {
+ if ((_d = typeDeclaration === null || typeDeclaration === void 0 ? void 0 : typeDeclaration.parent) === null || _d === void 0 ? void 0 : _d.kindOf(typedoc_1.ReflectionKind.Property)) {
+ md.push((0, els_1.heading)(headingLevel, `Type declaration (${(_e = typeDeclaration.parent) === null || _e === void 0 ? void 0 : _e.name})`));
+ }
+ else {
+ md.push((0, els_1.heading)(headingLevel, `Type declaration`));
+ }
+ if ((_f = typeDeclaration === null || typeDeclaration === void 0 ? void 0 : typeDeclaration.signatures) === null || _f === void 0 ? void 0 : _f.length) {
+ typeDeclaration.signatures.forEach((signature) => {
+ var _a;
+ if ((_a = typeDeclaration === null || typeDeclaration === void 0 ? void 0 : typeDeclaration.parent) === null || _a === void 0 ? void 0 : _a.kindOf(typedoc_1.ReflectionKind.Property)) {
+ md.push((0, els_1.blockQuoteBlock)(context.partials.signatureMember(signature, headingLevel + 1)));
+ }
+ else {
+ md.push(context.partials.signatureMember(signature, headingLevel + 1));
+ }
+ });
+ }
+ if ((_g = typeDeclaration === null || typeDeclaration === void 0 ? void 0 : typeDeclaration.children) === null || _g === void 0 ? void 0 : _g.length) {
+ md.push(context.partials.typeDeclarationMember(typeDeclaration, headingLevel + 1));
+ }
+ }
+ }
+ md.push(context.partials.inheritance(declaration, headingLevel));
+ return md.join('\n\n');
+}
+exports.declarationMember = declarationMember;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.name.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.name.d.ts
new file mode 100644
index 0000000..e7f6bcc
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.name.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function declarationMemberName(context: MarkdownThemeRenderContext, declaration: DeclarationReflection, emphasis?: boolean): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.name.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.name.js
new file mode 100644
index 0000000..77c52e5
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.declaration.name.js
@@ -0,0 +1,28 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.declarationMemberName = void 0;
+const els_1 = require("../../support/els");
+const utils_1 = require("../../support/utils");
+function declarationMemberName(context, declaration, emphasis = true) {
+ var _a;
+ if (Boolean(declaration.getSignature || Boolean(declaration.setSignature))) {
+ if (declaration.getSignature) {
+ return `${'get'} ${getName(`${declaration.getSignature.name}()`, emphasis)}`;
+ }
+ else if (declaration.setSignature) {
+ return `${'set'} ${getName(declaration.setSignature.name, emphasis)}(${(_a = declaration.setSignature.parameters) === null || _a === void 0 ? void 0 : _a.map((parameter) => {
+ return parameter.type
+ ? `${parameter.name}: ${context.partials.someType(parameter.type, 'all')}`
+ : '';
+ })})`;
+ }
+ }
+ return getName(declaration.name, emphasis);
+}
+exports.declarationMemberName = declarationMemberName;
+function getName(name, emphasis) {
+ if (emphasis) {
+ return (0, els_1.bold)((0, utils_1.escapeChars)(name));
+ }
+ return (0, utils_1.escapeChars)(name);
+}
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.indexsignature.title.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.indexsignature.title.d.ts
new file mode 100644
index 0000000..c09745d
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.indexsignature.title.d.ts
@@ -0,0 +1,3 @@
+import { SignatureReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function indexSignatureTitle(context: MarkdownThemeRenderContext, signature: SignatureReflection): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.indexsignature.title.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.indexsignature.title.js
new file mode 100644
index 0000000..27f6627
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.indexsignature.title.js
@@ -0,0 +1,19 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.indexSignatureTitle = void 0;
+const els_1 = require("../../support/els");
+function indexSignatureTitle(context, signature) {
+ const md = [''];
+ const params = signature.parameters
+ ? signature.parameters.map((parameter) => {
+ return parameter.type
+ ? `${(0, els_1.backTicks)(parameter.name)}: ${context.partials.someType(parameter.type)}`
+ : '';
+ })
+ : [];
+ if (signature.type) {
+ md.push(`\\[${params.join('')}\\]: ${context.partials.someType(signature.type)}`);
+ }
+ return md.join(' ');
+}
+exports.indexSignatureTitle = indexSignatureTitle;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.inheritance.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.inheritance.d.ts
new file mode 100644
index 0000000..ebaf38b
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.inheritance.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection, SignatureReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function inheritance(context: MarkdownThemeRenderContext, reflection: DeclarationReflection | SignatureReflection, headingLevel: number): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.inheritance.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.inheritance.js
new file mode 100644
index 0000000..babd4c3
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.inheritance.js
@@ -0,0 +1,58 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.inheritance = void 0;
+const typedoc_1 = require("typedoc");
+const els_1 = require("../../support/els");
+const utils_1 = require("../../support/utils");
+function inheritance(context, reflection, headingLevel) {
+ const md = [];
+ if (reflection.implementationOf) {
+ md.push((0, els_1.heading)(headingLevel, 'Implementation of'));
+ md.push(typeAndParent(context, reflection.implementationOf));
+ }
+ if (reflection.inheritedFrom) {
+ md.push((0, els_1.heading)(headingLevel, 'Inherited from'));
+ md.push(typeAndParent(context, reflection.inheritedFrom));
+ }
+ if (reflection.overwrites) {
+ md.push((0, els_1.heading)(headingLevel, 'Overrides'));
+ md.push(typeAndParent(context, reflection.overwrites));
+ }
+ return md.join('\n\n');
+}
+exports.inheritance = inheritance;
+const typeAndParent = (context, props) => {
+ var _a, _b, _c;
+ const getUrl = (name, url) => (0, els_1.link)((0, els_1.backTicks)(name), context.relativeURL(url));
+ if (props) {
+ if ('elementType' in props) {
+ return typeAndParent(context, props.elementType) + '[]';
+ }
+ else {
+ if (props.reflection) {
+ const md = [];
+ if (props.reflection instanceof typedoc_1.SignatureReflection) {
+ if ((_b = (_a = props.reflection.parent) === null || _a === void 0 ? void 0 : _a.parent) === null || _b === void 0 ? void 0 : _b.url) {
+ md.push(getUrl(props.reflection.parent.parent.name, props.reflection.parent.parent.url));
+ if (props.reflection.parent.url) {
+ md.push(getUrl(props.reflection.parent.name, props.reflection.parent.url));
+ }
+ }
+ }
+ else {
+ if ((_c = props.reflection.parent) === null || _c === void 0 ? void 0 : _c.url) {
+ md.push(getUrl(props.reflection.parent.name, props.reflection.parent.url));
+ if (props.reflection.url) {
+ md.push(getUrl(props.reflection.name, props.reflection.url));
+ }
+ }
+ }
+ return md.length > 0 ? md.join('.') : props.name;
+ }
+ else {
+ return (0, utils_1.escapeChars)(props.toString());
+ }
+ }
+ }
+ return 'void';
+};
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.js
new file mode 100644
index 0000000..76ad35b
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.js
@@ -0,0 +1,41 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.member = void 0;
+const typedoc_1 = require("typedoc");
+const els_1 = require("../../support/els");
+function member(context, reflection, headingLevel) {
+ const md = [];
+ if (context.getOption('namedAnchors')) {
+ md.push(`<a id="${reflection.anchor}" name="${reflection.anchor}"></a>`);
+ }
+ if (!reflection.hasOwnDocument) {
+ md.push((0, els_1.heading)(headingLevel, context.partials.memberTitle(reflection)));
+ }
+ if (!context.getOption('hideKindTag')) {
+ md.push(context.partials.memberKindTag(reflection));
+ }
+ if ([
+ typedoc_1.ReflectionKind.Class,
+ typedoc_1.ReflectionKind.Interface,
+ typedoc_1.ReflectionKind.Enum,
+ ].includes(reflection.kind)) {
+ md.push(context.partials.reflectionMember(reflection, headingLevel + 1));
+ }
+ else {
+ if (reflection.signatures) {
+ reflection.signatures.forEach((signature) => {
+ md.push(context.partials.signatureMember(signature, headingLevel + 1));
+ });
+ }
+ else {
+ if (reflection instanceof typedoc_1.ReferenceReflection) {
+ md.push(context.partials.referenceMember(reflection));
+ }
+ if (reflection instanceof typedoc_1.DeclarationReflection) {
+ md.push(context.partials.declarationMember(reflection, headingLevel + 1));
+ }
+ }
+ }
+ return md.join('\n\n');
+}
+exports.member = member;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.kind-tag.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.kind-tag.d.ts
new file mode 100644
index 0000000..702309d
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.kind-tag.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function memberKindTag(context: MarkdownThemeRenderContext, reflection: DeclarationReflection): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.kind-tag.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.kind-tag.js
new file mode 100644
index 0000000..c68d5a8
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.kind-tag.js
@@ -0,0 +1,13 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.memberKindTag = void 0;
+const typedoc_1 = require("typedoc");
+const constants_1 = require("../../support/constants");
+const els_1 = require("../../support/els");
+function memberKindTag(context, reflection) {
+ if (reflection.kindOf(constants_1.SYMBOLS_WITH_DOCUMENTS)) {
+ return (0, els_1.bold)((0, els_1.backTicks)(typedoc_1.ReflectionKind.singularString(reflection.kind)));
+ }
+ return '';
+}
+exports.memberKindTag = memberKindTag;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.reference.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.reference.d.ts
new file mode 100644
index 0000000..94c57a5
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.reference.d.ts
@@ -0,0 +1,3 @@
+import { ReferenceReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function referenceMember(context: MarkdownThemeRenderContext, props: ReferenceReflection): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.reference.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.reference.js
new file mode 100644
index 0000000..264edf0
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.reference.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.referenceMember = void 0;
+function referenceMember(context, props) {
+ const referenced = props.tryGetTargetReflectionDeep();
+ if (!referenced) {
+ return `Re-exports ${props.name}`;
+ }
+ if (props.name === referenced.name) {
+ return `Re-exports [${referenced.name}](${context.urlTo(referenced)})`;
+ }
+ return `Renames and re-exports [${referenced.name}](${context.urlTo(referenced)})`;
+}
+exports.referenceMember = referenceMember;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.reflection.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.reflection.d.ts
new file mode 100644
index 0000000..fd2d2c9
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.reflection.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function reflectionMember(context: MarkdownThemeRenderContext, reflection: DeclarationReflection, headingLevel: number): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.reflection.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.reflection.js
new file mode 100644
index 0000000..9c24925
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.reflection.js
@@ -0,0 +1,47 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.reflectionMember = void 0;
+const typedoc_1 = require("typedoc");
+const els_1 = require("../../support/els");
+function reflectionMember(context, reflection, headingLevel) {
+ var _a;
+ const md = [];
+ if (reflection.comment) {
+ md.push(context.partials.comment(reflection.comment, headingLevel));
+ }
+ if (!reflection.kindOf([
+ typedoc_1.ReflectionKind.Module,
+ typedoc_1.ReflectionKind.Project,
+ typedoc_1.ReflectionKind.Namespace,
+ ]) &&
+ reflection.sources) {
+ md.push(context.partials.sources(reflection));
+ }
+ if (reflection.typeParameters) {
+ md.push((0, els_1.heading)(headingLevel, 'Type parameters'));
+ md.push(context.partials.typeParametersTable(reflection.typeParameters));
+ }
+ if (!context.getOption('hideHierarchy') && ((_a = reflection.typeHierarchy) === null || _a === void 0 ? void 0 : _a.next)) {
+ md.push((0, els_1.heading)(headingLevel, 'Hierarchy'));
+ md.push(context.partials.hierarchy(reflection.typeHierarchy));
+ }
+ if (reflection.implementedTypes) {
+ md.push((0, els_1.heading)(headingLevel, 'Implements'));
+ md.push((0, els_1.unorderedList)(reflection.implementedTypes.map((implementedType) => context.partials.someType(implementedType))));
+ }
+ if ('signatures' in reflection && reflection.signatures) {
+ reflection.signatures.forEach((signature) => {
+ md.push(context.partials.signatureMember(signature, headingLevel));
+ });
+ }
+ if ('indexSignature' in reflection && reflection.indexSignature) {
+ md.push((0, els_1.heading)(headingLevel, 'Indexable'));
+ md.push(context.partials.indexSignatureTitle(reflection.indexSignature));
+ }
+ if (reflection.kindOf([typedoc_1.ReflectionKind.Module, typedoc_1.ReflectionKind.Namespace])) {
+ md.push(context.partials.toc(reflection));
+ }
+ md.push(context.partials.members(reflection, headingLevel));
+ return md.join('\n\n');
+}
+exports.reflectionMember = reflectionMember;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.signature.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.signature.d.ts
new file mode 100644
index 0000000..029a33e
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.signature.d.ts
@@ -0,0 +1,3 @@
+import { SignatureReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function signatureMember(context: MarkdownThemeRenderContext, signature: SignatureReflection, headingLevel: number): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.signature.identifier.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.signature.identifier.d.ts
new file mode 100644
index 0000000..a173783
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.signature.identifier.d.ts
@@ -0,0 +1,3 @@
+import { SignatureReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function signatureMemberIdentifier(context: MarkdownThemeRenderContext, signature: SignatureReflection): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.signature.identifier.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.signature.identifier.js
new file mode 100644
index 0000000..17da1dc
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.signature.identifier.js
@@ -0,0 +1,48 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.signatureMemberIdentifier = void 0;
+const els_1 = require("../../support/els");
+const utils_1 = require("../../support/utils");
+function signatureMemberIdentifier(context, signature) {
+ var _a, _b;
+ const md = [];
+ if (signature.parent && ((_a = signature.parent.flags) === null || _a === void 0 ? void 0 : _a.length) > 0) {
+ md.push(signature.parent.flags.map((flag) => `\`${flag}\``).join(' ') + ' ');
+ }
+ if (!['__call', '__type'].includes(signature.name)) {
+ md.push((0, els_1.bold)((0, utils_1.escapeChars)(signature.name)));
+ }
+ if (signature.typeParameters) {
+ md.push(`\\<${signature.typeParameters
+ .map((typeParameter) => typeParameter.name)
+ .join(', ')}\\>`);
+ }
+ const getParameters = (parameters = []) => {
+ const firstOptionalParamIndex = parameters.findIndex((parameter) => parameter.flags.isOptional);
+ return parameters
+ .map((param, i) => {
+ const paramsmd = [parameters.length > 2 ? '\n ' : ''];
+ if (param.flags.isRest) {
+ paramsmd.push('...');
+ }
+ const paramItem = `${(0, utils_1.escapeChars)(param.name)}${param.flags.isOptional ||
+ (firstOptionalParamIndex !== -1 && i > firstOptionalParamIndex)
+ ? '?'
+ : ''}: ${context.partials.someType(param.type, 'all')}`;
+ paramsmd.push(paramItem);
+ if (param.defaultValue) {
+ paramsmd.push(` = ${(0, els_1.backTicks)(param.defaultValue)}`);
+ }
+ return paramsmd.join('');
+ })
+ .join(`, `);
+ };
+ md.push(signature.parameters && ((_b = signature.parameters) === null || _b === void 0 ? void 0 : _b.length) > 0
+ ? `(${getParameters(signature.parameters)})`
+ : '()');
+ if (signature.type) {
+ md.push(`: ${context.partials.someType(signature.type, 'all')}`);
+ }
+ return md.join('');
+}
+exports.signatureMemberIdentifier = signatureMemberIdentifier;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.signature.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.signature.js
new file mode 100644
index 0000000..1a8b84b
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.signature.js
@@ -0,0 +1,50 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.signatureMember = void 0;
+const els_1 = require("../../support/els");
+function signatureMember(context, signature, headingLevel) {
+ var _a, _b, _c, _d;
+ const md = [];
+ if (context.getOption('indentifiersAsCodeBlocks')) {
+ md.push((0, els_1.codeBlock)(context.partials.signatureMemberIdentifier(signature)));
+ }
+ else {
+ md.push(`> ${context.partials.signatureMemberIdentifier(signature)}`);
+ }
+ if (signature.comment) {
+ md.push(context.partials.comment(signature.comment, headingLevel));
+ }
+ if (signature.sources) {
+ md.push(context.partials.sources(signature));
+ }
+ const typeDeclaration = (_a = signature.type) === null || _a === void 0 ? void 0 : _a.declaration;
+ if ((_b = signature.typeParameters) === null || _b === void 0 ? void 0 : _b.length) {
+ md.push((0, els_1.heading)(headingLevel, 'Type parameters'));
+ md.push(context.partials.typeParametersTable(signature.typeParameters));
+ }
+ if ((_c = signature.parameters) === null || _c === void 0 ? void 0 : _c.length) {
+ md.push((0, els_1.heading)(headingLevel, 'Parameters'));
+ md.push(context.partials.parametersTable(signature.parameters));
+ }
+ if (signature.type) {
+ md.push((0, els_1.heading)(headingLevel, 'Returns'));
+ md.push(context.partials.someType(signature.type, 'all'));
+ if ((_d = signature.comment) === null || _d === void 0 ? void 0 : _d.blockTags.length) {
+ const tags = signature.comment.blockTags
+ .filter((tag) => tag.tag === '@returns')
+ .map((tag) => context.partials.commentParts(tag.content));
+ md.push(tags.join('\n\n'));
+ }
+ if (typeDeclaration === null || typeDeclaration === void 0 ? void 0 : typeDeclaration.signatures) {
+ typeDeclaration.signatures.forEach((signature) => {
+ md.push((0, els_1.blockQuoteBlock)(context.partials.signatureMember(signature, headingLevel + 1)));
+ });
+ }
+ if (typeDeclaration === null || typeDeclaration === void 0 ? void 0 : typeDeclaration.children) {
+ md.push(context.partials.typeDeclarationMember(typeDeclaration, headingLevel + 1));
+ }
+ md.push(context.partials.inheritance(signature, headingLevel));
+ }
+ return md.join('\n\n');
+}
+exports.signatureMember = signatureMember;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.sources.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.sources.d.ts
new file mode 100644
index 0000000..3878499
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.sources.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection, SignatureReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function sources(context: MarkdownThemeRenderContext, reflection: DeclarationReflection | SignatureReflection): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.sources.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.sources.js
new file mode 100644
index 0000000..55a5fd2
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.sources.js
@@ -0,0 +1,19 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.sources = void 0;
+const els_1 = require("../../support/els");
+const utils_1 = require("../../support/utils");
+function sources(context, reflection) {
+ var _a;
+ const md = [(0, els_1.bold)('Source:')];
+ (_a = reflection.sources) === null || _a === void 0 ? void 0 : _a.forEach((source) => {
+ if (source.url) {
+ md.push((0, els_1.link)(`${(0, utils_1.escapeChars)(source.fileName)}:${source.line}`, source.url));
+ }
+ else {
+ md.push(`${(0, utils_1.escapeChars)(source.fileName)}:${source.line}`);
+ }
+ });
+ return md.join(' ');
+}
+exports.sources = sources;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.title.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.title.d.ts
new file mode 100644
index 0000000..17f50f8
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.title.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function memberTitle(context: MarkdownThemeRenderContext, reflection: DeclarationReflection, typeParams?: boolean): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.title.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.title.js
new file mode 100644
index 0000000..4e8c25b
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.title.js
@@ -0,0 +1,20 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.memberTitle = void 0;
+const els_1 = require("../../support/els");
+const utils_1 = require("../../support/utils");
+function memberTitle(context, reflection, typeParams = false) {
+ var _a;
+ const md = [(0, utils_1.escapeChars)(reflection.name)];
+ if ((_a = reflection.signatures) === null || _a === void 0 ? void 0 : _a.length) {
+ md.push('()');
+ }
+ if (typeParams && reflection.typeParameters) {
+ const typeParameters = reflection.typeParameters
+ .map((typeParameter) => typeParameter.name)
+ .join(', ');
+ md.push(`${(0, els_1.backTicks)(`<${typeParameters}>`)}`);
+ }
+ return md.join('');
+}
+exports.memberTitle = memberTitle;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.type-declaration.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.type-declaration.d.ts
new file mode 100644
index 0000000..6687ad2
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.type-declaration.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function typeDeclarationMember(context: MarkdownThemeRenderContext, typeDeclaration: DeclarationReflection, headingLevel: number): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.type-declaration.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.type-declaration.js
new file mode 100644
index 0000000..dc31512
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/member.type-declaration.js
@@ -0,0 +1,28 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.typeDeclarationMember = void 0;
+const typedoc_1 = require("typedoc");
+const models_1 = require("../../models");
+const els_1 = require("../../support/els");
+function typeDeclarationMember(context, typeDeclaration, headingLevel) {
+ var _a;
+ const md = [];
+ if (typeDeclaration.children) {
+ if (context.getOption('typeDeclarationFormat') === models_1.FormatStyle.Table) {
+ md.push(context.partials.propertiesTable(typeDeclaration.children, 'Member'));
+ }
+ else {
+ const list = typeDeclaration.children.map((declarationChild) => {
+ return context.partials.declarationMember(declarationChild, headingLevel);
+ });
+ if ((_a = typeDeclaration === null || typeDeclaration === void 0 ? void 0 : typeDeclaration.parent) === null || _a === void 0 ? void 0 : _a.kindOf(typedoc_1.ReflectionKind.Property)) {
+ md.push((0, els_1.blockQuoteBlock)(list.join('\n')));
+ }
+ else {
+ md.push(list.join('\n'));
+ }
+ }
+ }
+ return md.join('\n');
+}
+exports.typeDeclarationMember = typeDeclarationMember;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/members.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/members.d.ts
new file mode 100644
index 0000000..b041e8d
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/members.d.ts
@@ -0,0 +1,3 @@
+import { ContainerReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function members(context: MarkdownThemeRenderContext, container: ContainerReflection, headingLevel: number): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/members.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/members.js
new file mode 100644
index 0000000..83fbaf5
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/members.js
@@ -0,0 +1,65 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.members = void 0;
+const typedoc_1 = require("typedoc");
+const models_1 = require("../../models");
+const constants_1 = require("../../support/constants");
+const els_1 = require("../../support/els");
+function members(context, container, headingLevel) {
+ var _a, _b, _c;
+ const md = [];
+ const pushCategories = (categories, headingLevel) => {
+ categories === null || categories === void 0 ? void 0 : categories.filter((category) => !category.allChildrenHaveOwnDocument()).forEach((item) => {
+ md.push((0, els_1.heading)(headingLevel, item.title));
+ pushChildren(item.children, headingLevel + 1);
+ });
+ };
+ const pushChildren = (children, memberHeadingLevel) => {
+ children === null || children === void 0 ? void 0 : children.filter((item) => !item.hasOwnDocument).forEach((item) => {
+ md.push(context.partials.member(item, memberHeadingLevel || headingLevel));
+ if (constants_1.SYMBOLS_WITH_DOCUMENTS.includes(item.kind)) {
+ md.push((0, els_1.horizontalRule)());
+ }
+ });
+ };
+ if ((_a = container.categories) === null || _a === void 0 ? void 0 : _a.length) {
+ pushCategories(container.categories, headingLevel);
+ }
+ else {
+ if (context.getOption('excludeGroups') &&
+ container.kindOf([typedoc_1.ReflectionKind.Module, typedoc_1.ReflectionKind.Namespace])) {
+ if ((_b = container.categories) === null || _b === void 0 ? void 0 : _b.length) {
+ pushCategories(container.categories, headingLevel);
+ }
+ else {
+ pushChildren(container.children, headingLevel);
+ }
+ }
+ else {
+ (_c = container.groups) === null || _c === void 0 ? void 0 : _c.filter((group) => !group.allChildrenHaveOwnDocument()).forEach((group) => {
+ if (group.categories) {
+ md.push((0, els_1.heading)(headingLevel, group.title));
+ pushCategories(group.categories, headingLevel + 1);
+ }
+ else {
+ md.push((0, els_1.heading)(headingLevel, group.title));
+ const isPropertiesGroup = group.children.every((child) => child.kindOf(typedoc_1.ReflectionKind.Property));
+ const isEnumGroup = group.children.every((child) => child.kindOf(typedoc_1.ReflectionKind.EnumMember));
+ if (isPropertiesGroup &&
+ context.getOption('propertiesFormat') === models_1.FormatStyle.Table) {
+ md.push(context.partials.propertiesTable(group.children));
+ }
+ else if (isEnumGroup &&
+ context.getOption('enumMembersFormat') === models_1.FormatStyle.Table) {
+ md.push(context.partials.enumMembersTable(group.children));
+ }
+ else {
+ pushChildren(group.children, headingLevel + 1);
+ }
+ }
+ });
+ }
+ }
+ return md.join('\n\n');
+}
+exports.members = members;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/navigation.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/navigation.d.ts
new file mode 100644
index 0000000..870f5d4
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/navigation.d.ts
@@ -0,0 +1,3 @@
+import { NavigationItem } from '../../models';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function navigation(context: MarkdownThemeRenderContext, navigationItems: NavigationItem[]): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/navigation.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/navigation.js
new file mode 100644
index 0000000..159b2cd
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/navigation.js
@@ -0,0 +1,15 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.navigation = void 0;
+function navigation(context, navigationItems) {
+ var _a;
+ const title = ((_a = context.getOption('entryPoints')) === null || _a === void 0 ? void 0 : _a.length) > 1 ? 'Modules' : 'Exports';
+ const md = [`## ${title}\n`];
+ navigationItems.forEach((navigationItem) => {
+ if (navigationItem.url) {
+ md.push(`- [${navigationItem.title}](${context.parseUrl(navigationItem.url)})`);
+ }
+ });
+ return md.join('\n');
+}
+exports.navigation = navigation;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/page.header.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/page.header.d.ts
new file mode 100644
index 0000000..9b249fc
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/page.header.d.ts
@@ -0,0 +1,4 @@
+import { DeclarationReflection, PageEvent, ProjectReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function pageHeader(context: MarkdownThemeRenderContext, page: PageEvent<ProjectReflection | DeclarationReflection>): string;
+export declare function packageHeader(context: MarkdownThemeRenderContext, page: PageEvent<ProjectReflection | DeclarationReflection>): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/page.header.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/page.header.js
new file mode 100644
index 0000000..e506218
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/page.header.js
@@ -0,0 +1,81 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.packageHeader = exports.pageHeader = void 0;
+const path = __importStar(require("path"));
+const typedoc_1 = require("typedoc");
+const els_1 = require("../../support/els");
+const helpers_1 = require("../../support/helpers");
+function pageHeader(context, page) {
+ const isMonoRepo = !Boolean(page.project.groups);
+ if (isMonoRepo) {
+ const packageItem = findPackage(page.model);
+ if (packageItem) {
+ return packageHeader(context, page);
+ }
+ }
+ return projectHeader(context, page);
+}
+exports.pageHeader = pageHeader;
+function projectHeader(context, page) {
+ const projectName = (0, helpers_1.getProjectDisplayName)(page.project, context.getOption('includeVersion'));
+ const hasReadme = !context.getOption('readme').endsWith('none');
+ const md = [
+ `${(0, els_1.link)((0, els_1.bold)(projectName), context.relativeURL(context.getOption('entryDocument')))}`,
+ ];
+ if (hasReadme) {
+ md.push(`(${(0, els_1.link)((0, els_1.bold)(page.project.groups
+ ? context.getOption('entryPoints').length > 1
+ ? 'Modules'
+ : 'Exports'
+ : 'Packages'), context.relativeURL(page.project.url))})`);
+ }
+ return `${md.join(' ')}\n***\n`;
+}
+function packageHeader(context, page) {
+ const packageItem = findPackage(page.model);
+ if (!packageItem) {
+ return '';
+ }
+ const hasReadme = Boolean(packageItem.readme);
+ const readmeUrl = `${path.dirname(packageItem.url)}/${context.readmeFile}`;
+ const md = [
+ `${(0, els_1.link)((0, els_1.bold)(packageItem.name), context.relativeURL(hasReadme ? readmeUrl : packageItem.url))}`,
+ ];
+ if (hasReadme) {
+ md.push(`(${(0, els_1.link)((0, els_1.bold)('Exports'), context.relativeURL(packageItem.url))})`);
+ }
+ return `${md.join(' ')}\n***\n`;
+}
+exports.packageHeader = packageHeader;
+function findPackage(model) {
+ if (model.kindOf(typedoc_1.ReflectionKind.Module)) {
+ return model;
+ }
+ if (model.parent) {
+ return findPackage(model.parent);
+ }
+ return null;
+}
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/page.title.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/page.title.d.ts
new file mode 100644
index 0000000..4f0875a
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/page.title.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection, PageEvent, ProjectReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function pageTitle(context: MarkdownThemeRenderContext, page: PageEvent<DeclarationReflection | ProjectReflection>): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/page.title.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/page.title.js
new file mode 100644
index 0000000..039bd66
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/page.title.js
@@ -0,0 +1,17 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.pageTitle = void 0;
+const helpers_1 = require("../../support/helpers");
+function pageTitle(context, page) {
+ var _a;
+ const md = [];
+ if (((_a = page.model) === null || _a === void 0 ? void 0 : _a.url) === page.project.url) {
+ md.push(context.getOption('indexPageTitle') ||
+ (0, helpers_1.getProjectDisplayName)(page.project, context.getOption('includeVersion')));
+ }
+ else {
+ md.push(context.partials.memberTitle(page.model, true));
+ }
+ return md.join(' ');
+}
+exports.pageTitle = pageTitle;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.enum-members.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.enum-members.d.ts
new file mode 100644
index 0000000..c504628
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.enum-members.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function enumMembersTable(context: MarkdownThemeRenderContext, props: DeclarationReflection[]): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.enum-members.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.enum-members.js
new file mode 100644
index 0000000..7ae18a9
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.enum-members.js
@@ -0,0 +1,51 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.enumMembersTable = void 0;
+const typedoc_1 = require("typedoc");
+const helpers_1 = require("../../support/helpers");
+const utils_1 = require("../../support/utils");
+function enumMembersTable(context, props) {
+ const comments = props.map((param) => { var _a; return !!((_a = param.comment) === null || _a === void 0 ? void 0 : _a.hasVisibleComponent()); });
+ const hasComments = comments.some((value) => Boolean(value));
+ const headers = ['Member', 'Value'];
+ if (hasComments) {
+ headers.push('Description');
+ }
+ const rows = props.map((property) => {
+ const propertyType = (0, helpers_1.getDeclarationType)(property);
+ const row = [];
+ row.push((0, utils_1.escapeChars)(property.name));
+ if (propertyType) {
+ row.push((0, utils_1.stripLineBreaks)(context.partials
+ .someType(propertyType, 'object')
+ .replace(/(?<!\\)\|/g, '\\|')));
+ }
+ if (hasComments) {
+ const comments = getComments(property);
+ if (comments) {
+ row.push((0, utils_1.stripLineBreaks)(context.partials.comment(comments)).replace(/\|/g, '\\|'));
+ }
+ else {
+ row.push('-');
+ }
+ }
+ return `| ${row.join(' | ')} |\n`;
+ });
+ const output = `\n| ${headers.join(' | ')} |\n| ${headers
+ .map(() => ':------')
+ .join(' | ')} |\n${rows.join('')}`;
+ return output;
+}
+exports.enumMembersTable = enumMembersTable;
+function getComments(property) {
+ var _a, _b, _c;
+ if (property.type instanceof typedoc_1.ReflectionType) {
+ if ((_b = (_a = property.type) === null || _a === void 0 ? void 0 : _a.declaration) === null || _b === void 0 ? void 0 : _b.signatures) {
+ return (_c = property.type) === null || _c === void 0 ? void 0 : _c.declaration.signatures[0].comment;
+ }
+ }
+ if (property.signatures) {
+ return property.signatures[0].comment;
+ }
+ return property.comment;
+}
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.parameters.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.parameters.d.ts
new file mode 100644
index 0000000..6c58d4e
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.parameters.d.ts
@@ -0,0 +1,3 @@
+import { ParameterReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function parametersTable(context: MarkdownThemeRenderContext, parameters: ParameterReflection[]): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.parameters.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.parameters.js
new file mode 100644
index 0000000..6393bf5
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.parameters.js
@@ -0,0 +1,75 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.parametersTable = void 0;
+const typedoc_1 = require("typedoc");
+const els_1 = require("../../support/els");
+const helpers_1 = require("../../support/helpers");
+const utils_1 = require("../../support/utils");
+function parametersTable(context, parameters) {
+ const flattenParams = (current) => {
+ var _a, _b, _c;
+ return (_c = (_b = (_a = current.type) === null || _a === void 0 ? void 0 : _a.declaration) === null || _b === void 0 ? void 0 : _b.children) === null || _c === void 0 ? void 0 : _c.reduce((acc, child) => {
+ const childObj = {
+ ...child,
+ name: `${current.name}.${child.name}`,
+ };
+ return parseParams(childObj, acc);
+ }, []);
+ };
+ const parseParams = (current, acc) => {
+ var _a, _b, _c, _d;
+ const shouldFlatten = ((_b = (_a = current.type) === null || _a === void 0 ? void 0 : _a.declaration) === null || _b === void 0 ? void 0 : _b.kind) === typedoc_1.ReflectionKind.TypeLiteral &&
+ ((_d = (_c = current.type) === null || _c === void 0 ? void 0 : _c.declaration) === null || _d === void 0 ? void 0 : _d.children);
+ return shouldFlatten
+ ? [...acc, current, ...flattenParams(current)]
+ : [...acc, current];
+ };
+ const showDefaults = hasDefaultValues(parameters);
+ const comments = parameters.map((param) => { var _a; return !!((_a = param.comment) === null || _a === void 0 ? void 0 : _a.hasVisibleComponent()); });
+ const hasComments = !comments.every((value) => !value);
+ const headers = ['Parameter', 'Type'];
+ if (showDefaults) {
+ headers.push('Default value');
+ }
+ if (hasComments) {
+ headers.push('Description');
+ }
+ const firstOptionalParamIndex = parameters.findIndex((parameter) => parameter.flags.isOptional);
+ const rows = [];
+ parameters.forEach((parameter, i) => {
+ const row = [];
+ const isOptional = parameter.flags.isOptional ||
+ (firstOptionalParamIndex !== -1 && i > firstOptionalParamIndex);
+ const rest = parameter.flags.isRest ? '...' : '';
+ const optional = isOptional ? '?' : '';
+ row.push(`${rest}${(0, utils_1.escapeChars)(parameter.name)}${optional}`);
+ if (parameter.type) {
+ row.push((0, utils_1.stripLineBreaks)(context.partials.someType(parameter.type, 'object')));
+ }
+ if (showDefaults) {
+ row.push(getDefaultValue(parameter));
+ }
+ if (hasComments) {
+ if (parameter.comment) {
+ row.push((0, helpers_1.tableComments)(context.partials.comment(parameter.comment)));
+ }
+ else {
+ row.push('-');
+ }
+ }
+ rows.push(row);
+ });
+ return (0, els_1.table)(headers, rows);
+}
+exports.parametersTable = parametersTable;
+function getDefaultValue(parameter) {
+ return parameter.defaultValue && parameter.defaultValue !== '...'
+ ? (0, utils_1.escapeChars)(parameter.defaultValue)
+ : 'undefined';
+}
+function hasDefaultValues(parameters) {
+ const defaultValues = parameters.map((param) => param.defaultValue !== '{}' &&
+ param.defaultValue !== '...' &&
+ !!param.defaultValue);
+ return !defaultValues.every((value) => !value);
+}
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.properties.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.properties.d.ts
new file mode 100644
index 0000000..2424d8d
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.properties.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function propertiesTable(context: MarkdownThemeRenderContext, props: DeclarationReflection[], nameCol?: string): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.properties.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.properties.js
new file mode 100644
index 0000000..eb81124
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.properties.js
@@ -0,0 +1,71 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.propertiesTable = void 0;
+const typedoc_1 = require("typedoc");
+const els_1 = require("../../support/els");
+const helpers_1 = require("../../support/helpers");
+function propertiesTable(context, props, nameCol = 'Property') {
+ const comments = props.map((param) => { var _a; return !!((_a = param.comment) === null || _a === void 0 ? void 0 : _a.hasVisibleComponent()); });
+ const hasComments = comments.some((value) => Boolean(value));
+ const headers = [nameCol];
+ headers.push('Type');
+ if (hasComments) {
+ headers.push('Description');
+ }
+ const flattenParams = (current) => {
+ var _a, _b, _c;
+ return (_c = (_b = (_a = current.type) === null || _a === void 0 ? void 0 : _a.declaration) === null || _b === void 0 ? void 0 : _b.children) === null || _c === void 0 ? void 0 : _c.reduce((acc, child) => {
+ const childObj = {
+ ...child,
+ name: `${current.name}.${child.name}`,
+ };
+ return parseParams(childObj, acc);
+ }, []);
+ };
+ const parseParams = (current, acc) => {
+ var _a, _b;
+ const shouldFlatten = (_b = (_a = current.type) === null || _a === void 0 ? void 0 : _a.declaration) === null || _b === void 0 ? void 0 : _b.children;
+ return shouldFlatten
+ ? [...acc, current, ...flattenParams(current)]
+ : [...acc, current];
+ };
+ const properties = props.reduce((acc, current) => parseParams(current, acc), []);
+ const rows = [];
+ properties.forEach((property) => {
+ const propertyType = (0, helpers_1.getDeclarationType)(property);
+ const row = [];
+ const nameColumn = [];
+ if (property.flags.length && !property.flags.isOptional) {
+ nameColumn.push(property.flags.map((flag) => (0, els_1.backTicks)(flag.toLowerCase())).join(' '));
+ }
+ nameColumn.push(`${context.partials.declarationMemberName(property, false)}${property.flags.isOptional ? '?' : ''}`);
+ row.push(nameColumn.join(' '));
+ if (propertyType) {
+ row.push(context.partials.someType(propertyType, 'object'));
+ }
+ if (hasComments) {
+ const comments = getComments(property);
+ if (comments) {
+ row.push((0, helpers_1.tableComments)(context.partials.comment(comments)));
+ }
+ else {
+ row.push('-');
+ }
+ }
+ rows.push(row);
+ });
+ return (0, els_1.table)(headers, rows);
+}
+exports.propertiesTable = propertiesTable;
+function getComments(property) {
+ var _a, _b, _c;
+ if (property.type instanceof typedoc_1.ReflectionType) {
+ if ((_b = (_a = property.type) === null || _a === void 0 ? void 0 : _a.declaration) === null || _b === void 0 ? void 0 : _b.signatures) {
+ return (_c = property.type) === null || _c === void 0 ? void 0 : _c.declaration.signatures[0].comment;
+ }
+ }
+ if (property.signatures) {
+ return property.signatures[0].comment;
+ }
+ return property.comment;
+}
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.typeparameters.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.typeparameters.d.ts
new file mode 100644
index 0000000..192a936
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.typeparameters.d.ts
@@ -0,0 +1,3 @@
+import { TypeParameterReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function typeParametersTable(context: MarkdownThemeRenderContext, typeParameters: TypeParameterReflection[]): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.typeparameters.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.typeparameters.js
new file mode 100644
index 0000000..5c4fa84
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/table.typeparameters.js
@@ -0,0 +1,45 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.typeParametersTable = void 0;
+const els_1 = require("../../support/els");
+const helpers_1 = require("../../support/helpers");
+function typeParametersTable(context, typeParameters) {
+ const hasDefault = typeParameters.some((typeParameter) => Boolean(typeParameter.default));
+ const hasComments = typeParameters.some((typeParameter) => Boolean(typeParameter.comment));
+ const headers = ['Parameter'];
+ if (hasDefault) {
+ headers.push('Default');
+ }
+ if (hasComments) {
+ headers.push('Description');
+ }
+ const rows = [];
+ typeParameters === null || typeParameters === void 0 ? void 0 : typeParameters.forEach((typeParameter) => {
+ const row = [];
+ const nameCol = [];
+ nameCol.push(typeParameter.name);
+ if (typeParameter.type) {
+ nameCol.push(`${(0, els_1.italic)('extends')} ${context.partials.someType(typeParameter.type)}`);
+ }
+ row.push(nameCol.join(' '));
+ if (hasDefault) {
+ if (typeParameter.default) {
+ row.push(context.partials.someType(typeParameter.default));
+ }
+ else {
+ row.push('-');
+ }
+ }
+ if (hasComments) {
+ if (typeParameter.comment) {
+ row.push((0, helpers_1.tableComments)(context.partials.comment(typeParameter.comment)));
+ }
+ else {
+ row.push('-');
+ }
+ }
+ rows.push(row);
+ });
+ return (0, els_1.table)(headers, rows);
+}
+exports.typeParametersTable = typeParametersTable;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/toc.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/toc.d.ts
new file mode 100644
index 0000000..6f5994f
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/toc.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection, ProjectReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function toc(context: MarkdownThemeRenderContext, reflection: ProjectReflection | DeclarationReflection): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/toc.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/toc.js
new file mode 100644
index 0000000..19d315e
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/toc.js
@@ -0,0 +1,76 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.toc = void 0;
+const typedoc_1 = require("typedoc");
+const els_1 = require("../../support/els");
+const utils_1 = require("../../support/utils");
+function toc(context, reflection) {
+ var _a, _b, _c;
+ const md = [];
+ const hideInPageTOC = context.getOption('hideInPageTOC');
+ const isVisible = (_a = reflection.groups) === null || _a === void 0 ? void 0 : _a.some((group) => group.allChildrenHaveOwnDocument());
+ if ((!hideInPageTOC && reflection.groups) ||
+ (isVisible && reflection.groups)) {
+ const headingLevel = getIndexHeadingLevel(reflection);
+ const subHeadingLevel = headingLevel + 1;
+ md.push((0, els_1.heading)(headingLevel, 'Index\n'));
+ if ((_b = reflection.categories) === null || _b === void 0 ? void 0 : _b.length) {
+ reflection.categories.forEach((item) => {
+ md.push((0, els_1.heading)(subHeadingLevel, item.title) + '\n');
+ md.push(getGroup(context, item) + '\n');
+ });
+ }
+ else {
+ if (context.getOption('excludeGroups') && reflection.children) {
+ md.push(reflection.children
+ .map((child) => {
+ return getTocItem(context, child);
+ })
+ .join('\n'));
+ }
+ else {
+ (_c = reflection.groups) === null || _c === void 0 ? void 0 : _c.forEach((reflectionGroup) => {
+ if (reflectionGroup.categories) {
+ md.push((0, els_1.heading)(subHeadingLevel, reflectionGroup.title) + '\n');
+ reflectionGroup.categories.forEach((item2) => {
+ md.push((0, els_1.heading)(subHeadingLevel + 1, item2.title) + '\n');
+ md.push(getGroup(context, reflectionGroup) + '\n');
+ });
+ }
+ else {
+ if (!hideInPageTOC ||
+ reflectionGroup.allChildrenHaveOwnDocument()) {
+ md.push((0, els_1.heading)(subHeadingLevel, reflectionGroup.title) + '\n');
+ md.push(getGroup(context, reflectionGroup) + '\n');
+ }
+ }
+ });
+ }
+ }
+ }
+ return md.length > 0 ? md.join('\n') : '';
+}
+exports.toc = toc;
+function getGroup(context, group) {
+ const children = group.children.map((child) => getTocItem(context, child));
+ return children.join('\n');
+}
+function getTocItem(context, reflection) {
+ const showKindTag = !reflection.kindOf(typedoc_1.ReflectionKind.Module) &&
+ !context.getOption('hideKindTag') &&
+ context.getOption('excludeGroups');
+ return `- ${showKindTag
+ ? (0, els_1.backTicks)(Array.from(typedoc_1.ReflectionKind.singularString(reflection.kind))[0]) + ' '
+ : ''}[${(0, utils_1.escapeChars)(reflection.name)}](${context.relativeURL(reflection.url)})`;
+}
+function getIndexHeadingLevel(reflection) {
+ if (reflection.kindOf([
+ typedoc_1.ReflectionKind.Project,
+ typedoc_1.ReflectionKind.Module,
+ typedoc_1.ReflectionKind.Namespace,
+ ]) ||
+ reflection.hasOwnDocument) {
+ return 2;
+ }
+ return 4;
+}
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.array.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.array.d.ts
new file mode 100644
index 0000000..8ba9e97
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.array.d.ts
@@ -0,0 +1,3 @@
+import { ArrayType } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function arrayType(context: MarkdownThemeRenderContext, arrayType: ArrayType): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.array.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.array.js
new file mode 100644
index 0000000..314152c
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.array.js
@@ -0,0 +1,10 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.arrayType = void 0;
+function arrayType(context, arrayType) {
+ const theType = context.partials.someType(arrayType.elementType, 'none');
+ return arrayType.elementType.type === 'union'
+ ? `(${theType})[]`
+ : `${theType}[]`;
+}
+exports.arrayType = arrayType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.conditional.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.conditional.d.ts
new file mode 100644
index 0000000..a97daa8
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.conditional.d.ts
@@ -0,0 +1,3 @@
+import { ConditionalType } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function conditionalType(context: MarkdownThemeRenderContext, conditionalType: ConditionalType): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.conditional.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.conditional.js
new file mode 100644
index 0000000..bce4003
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.conditional.js
@@ -0,0 +1,24 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.conditionalType = void 0;
+const els_1 = require("../../support/els");
+function conditionalType(context, conditionalType) {
+ const md = [];
+ if (conditionalType.checkType) {
+ md.push(context.partials.someType(conditionalType.checkType));
+ }
+ md.push((0, els_1.italic)('extends'));
+ if (conditionalType.extendsType) {
+ md.push(context.partials.someType(conditionalType.extendsType));
+ }
+ md.push('?');
+ if (conditionalType.trueType) {
+ md.push(context.partials.someType(conditionalType.trueType));
+ }
+ md.push(':');
+ if (conditionalType.falseType) {
+ md.push(context.partials.someType(conditionalType.falseType));
+ }
+ return md.join(' ');
+}
+exports.conditionalType = conditionalType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.declaration.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.declaration.d.ts
new file mode 100644
index 0000000..498bee8
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.declaration.d.ts
@@ -0,0 +1,4 @@
+import { DeclarationReflection } from 'typedoc';
+import { Collapse } from '../../models';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function declarationType(context: MarkdownThemeRenderContext, declarationReflection: DeclarationReflection, collapse?: Collapse): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.declaration.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.declaration.js
new file mode 100644
index 0000000..16f9627
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.declaration.js
@@ -0,0 +1,31 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.declarationType = void 0;
+const els_1 = require("../../support/els");
+const helpers_1 = require("../../support/helpers");
+function declarationType(context, declarationReflection, collapse = 'none') {
+ if (collapse === 'object' || collapse === 'all') {
+ return (0, els_1.backTicks)('object');
+ }
+ if (declarationReflection.indexSignature || declarationReflection.children) {
+ let indexSignature = '';
+ const declarationIndexSignature = declarationReflection.indexSignature;
+ if (declarationIndexSignature) {
+ const key = declarationIndexSignature.parameters
+ ? declarationIndexSignature.parameters.map((param) => `\`[${param.name}: ${param.type}]\``)
+ : '';
+ const obj = context.partials.someType(declarationIndexSignature.type);
+ indexSignature = `${key}: ${obj}; `;
+ }
+ const types = declarationReflection.children &&
+ declarationReflection.children.map((obj) => {
+ return `${context.partials.declarationMemberName(obj, false)}: ${context.partials.someType((0, helpers_1.getDeclarationType)(obj))};`;
+ });
+ if (indexSignature) {
+ types === null || types === void 0 ? void 0 : types.unshift(indexSignature);
+ }
+ return types ? `\\{${types.join(' ')}}` : '\\{}';
+ }
+ return '\\{}';
+}
+exports.declarationType = declarationType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.function.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.function.d.ts
new file mode 100644
index 0000000..f9f5f03
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.function.d.ts
@@ -0,0 +1,3 @@
+import { SignatureReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function functionType(context: MarkdownThemeRenderContext, modelSignatures: SignatureReflection[]): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.function.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.function.js
new file mode 100644
index 0000000..d2de78d
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.function.js
@@ -0,0 +1,21 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.functionType = void 0;
+function functionType(context, modelSignatures) {
+ const functions = modelSignatures.map((fn) => {
+ const typeParams = fn.typeParameters
+ ? `\\<${fn.typeParameters
+ .map((typeParameter) => typeParameter.name)
+ .join(', ')}\\>`
+ : [];
+ const params = fn.parameters
+ ? fn.parameters.map((param) => {
+ return `${param.flags.isRest ? '...' : ''}${param.name}${param.flags.isOptional ? '?' : ''}: ${context.partials.someType(param.type)}`;
+ })
+ : [];
+ const returns = context.partials.someType(fn.type);
+ return typeParams + `(${params.join(', ')}) => ${returns}`;
+ });
+ return functions.join('');
+}
+exports.functionType = functionType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.index-access.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.index-access.d.ts
new file mode 100644
index 0000000..1958602
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.index-access.d.ts
@@ -0,0 +1,3 @@
+import { IndexedAccessType } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function indexAccessType(context: MarkdownThemeRenderContext, model: IndexedAccessType): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.index-access.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.index-access.js
new file mode 100644
index 0000000..4a7ae5f
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.index-access.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.indexAccessType = void 0;
+function indexAccessType(context, model) {
+ const md = [];
+ if (model.objectType) {
+ md.push(context.partials.someType(model.objectType));
+ }
+ if (model.indexType) {
+ md.push(`[${context.partials.someType(model.indexType)}]`);
+ }
+ return md.join('');
+}
+exports.indexAccessType = indexAccessType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.inferred.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.inferred.d.ts
new file mode 100644
index 0000000..052bd59
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.inferred.d.ts
@@ -0,0 +1,3 @@
+import { InferredType } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function inferredType(context: MarkdownThemeRenderContext, model: InferredType): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.inferred.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.inferred.js
new file mode 100644
index 0000000..46d5288
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.inferred.js
@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.inferredType = void 0;
+const utils_1 = require("../../support/utils");
+function inferredType(context, model) {
+ return `infer ${(0, utils_1.escapeChars)(model.name)}`;
+}
+exports.inferredType = inferredType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.intersection.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.intersection.d.ts
new file mode 100644
index 0000000..2ab3125
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.intersection.d.ts
@@ -0,0 +1,3 @@
+import { IntersectionType } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function intersectionType(context: MarkdownThemeRenderContext, model: IntersectionType): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.intersection.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.intersection.js
new file mode 100644
index 0000000..5a1637c
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.intersection.js
@@ -0,0 +1,9 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.intersectionType = void 0;
+function intersectionType(context, model) {
+ return model.types
+ .map((intersectionType) => context.partials.someType(intersectionType, 'none'))
+ .join(' & ');
+}
+exports.intersectionType = intersectionType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.intrinsic.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.intrinsic.d.ts
new file mode 100644
index 0000000..9656911
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.intrinsic.d.ts
@@ -0,0 +1,3 @@
+import { IntrinsicType } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function intrinsicType(context: MarkdownThemeRenderContext, model: IntrinsicType): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.intrinsic.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.intrinsic.js
new file mode 100644
index 0000000..09c6fe4
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.intrinsic.js
@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.intrinsicType = void 0;
+const els_1 = require("../../support/els");
+function intrinsicType(context, model) {
+ return (0, els_1.backTicks)(model.name);
+}
+exports.intrinsicType = intrinsicType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.literal.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.literal.d.ts
new file mode 100644
index 0000000..659bc43
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.literal.d.ts
@@ -0,0 +1,3 @@
+import { LiteralType } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function literalType(context: MarkdownThemeRenderContext, literalType: LiteralType): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.literal.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.literal.js
new file mode 100644
index 0000000..26bf615
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.literal.js
@@ -0,0 +1,10 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.literalType = void 0;
+function literalType(context, literalType) {
+ if (typeof literalType.value === 'bigint') {
+ return `\`${literalType.value}n\``;
+ }
+ return `\`\`${JSON.stringify(literalType.value)}\`\``;
+}
+exports.literalType = literalType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.query.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.query.d.ts
new file mode 100644
index 0000000..5321a9d
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.query.d.ts
@@ -0,0 +1,3 @@
+import { QueryType } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function queryType(context: MarkdownThemeRenderContext, queryType: QueryType): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.query.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.query.js
new file mode 100644
index 0000000..8c24453
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.query.js
@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.queryType = void 0;
+const els_1 = require("../../support/els");
+function queryType(context, queryType) {
+ return `${(0, els_1.italic)('typeof')} ${context.partials.someType(queryType.queryType)}`;
+}
+exports.queryType = queryType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.reference.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.reference.d.ts
new file mode 100644
index 0000000..2982648
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.reference.d.ts
@@ -0,0 +1,3 @@
+import { ReferenceType } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function referenceType(context: MarkdownThemeRenderContext, referenceType: ReferenceType): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.reference.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.reference.js
new file mode 100644
index 0000000..2c0a256
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.reference.js
@@ -0,0 +1,29 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.referenceType = void 0;
+const els_1 = require("../../support/els");
+function referenceType(context, referenceType) {
+ var _a;
+ if (referenceType.reflection ||
+ (referenceType.name && referenceType.typeArguments)) {
+ const reflection = [];
+ if ((_a = referenceType.reflection) === null || _a === void 0 ? void 0 : _a.url) {
+ reflection.push(`[${(0, els_1.backTicks)(referenceType.reflection.name)}](${context.relativeURL(referenceType.reflection.url)})`);
+ }
+ else {
+ reflection.push(referenceType.externalUrl
+ ? `[${(0, els_1.backTicks)(referenceType.name)}]( ${referenceType.externalUrl} )`
+ : (0, els_1.backTicks)(referenceType.name));
+ }
+ if (referenceType.typeArguments && referenceType.typeArguments.length > 0) {
+ reflection.push(`\\<${referenceType.typeArguments
+ .map((typeArgument) => context.partials.someType(typeArgument))
+ .join(', ')}\\>`);
+ }
+ return reflection.join('');
+ }
+ return referenceType.externalUrl
+ ? `[${(0, els_1.backTicks)(referenceType.name)}]( ${referenceType.externalUrl} )`
+ : (0, els_1.backTicks)(referenceType.name);
+}
+exports.referenceType = referenceType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.reflection.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.reflection.d.ts
new file mode 100644
index 0000000..9194824
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.reflection.d.ts
@@ -0,0 +1,4 @@
+import { ReflectionType } from 'typedoc';
+import { Collapse } from '../../models';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function reflectionType(context: MarkdownThemeRenderContext, reflectionType: ReflectionType, collapse: Collapse): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.reflection.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.reflection.js
new file mode 100644
index 0000000..60d4d06
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.reflection.js
@@ -0,0 +1,19 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.reflectionType = void 0;
+const typedoc_1 = require("typedoc");
+const els_1 = require("../../support/els");
+function reflectionType(context, reflectionType, collapse) {
+ const root = reflectionType instanceof typedoc_1.ReflectionType
+ ? reflectionType.declaration
+ : reflectionType;
+ if (root.signatures) {
+ return collapse === 'function' || collapse === 'all'
+ ? (0, els_1.backTicks)('Function')
+ : context.partials.functionType(root.signatures);
+ }
+ return (collapse === 'object' && !root.indexSignature) || collapse === 'all'
+ ? (0, els_1.backTicks)('object')
+ : context.partials.declarationType(root);
+}
+exports.reflectionType = reflectionType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.some.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.some.d.ts
new file mode 100644
index 0000000..f19e16e
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.some.d.ts
@@ -0,0 +1,4 @@
+import { SomeType } from 'typedoc';
+import { Collapse } from '../../models';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function someType(context: MarkdownThemeRenderContext, someType: SomeType, collapse?: Collapse): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.some.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.some.js
new file mode 100644
index 0000000..6a6372c
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.some.js
@@ -0,0 +1,55 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.someType = void 0;
+const typedoc_1 = require("typedoc");
+const els_1 = require("../../support/els");
+const utils_1 = require("../../support/utils");
+function someType(context, someType, collapse = 'none') {
+ if (!someType) {
+ return '';
+ }
+ if (someType instanceof typedoc_1.ArrayType) {
+ return '' + context.partials.arrayType(someType);
+ }
+ if (someType instanceof typedoc_1.ConditionalType) {
+ return '' + context.partials.conditionalType(someType);
+ }
+ if (someType instanceof typedoc_1.IndexedAccessType) {
+ return '' + context.partials.indexAccessType(someType);
+ }
+ if (someType instanceof typedoc_1.InferredType) {
+ return '' + context.partials.inferredType(someType);
+ }
+ if (someType instanceof typedoc_1.IntersectionType && someType.types) {
+ return '' + context.partials.intersectionType(someType);
+ }
+ if (someType instanceof typedoc_1.IntrinsicType && someType.name) {
+ return '' + context.partials.intrinsicType(someType);
+ }
+ if (someType instanceof typedoc_1.QueryType) {
+ return '' + context.partials.queryType(someType);
+ }
+ if (someType instanceof typedoc_1.ReferenceType) {
+ return '' + context.partials.referenceType(someType);
+ }
+ if (someType instanceof typedoc_1.ReflectionType) {
+ return '' + context.partials.reflectionType(someType, collapse);
+ }
+ if (someType instanceof typedoc_1.TypeOperatorType) {
+ return '' + context.partials.typeOperatorType(someType);
+ }
+ if (someType instanceof typedoc_1.TupleType && someType.elements) {
+ return '' + context.partials.tupleType(someType);
+ }
+ if (someType instanceof typedoc_1.UnionType && someType.types) {
+ return '' + context.partials.unionType(someType);
+ }
+ if (someType instanceof typedoc_1.UnknownType) {
+ return '' + context.partials.unknownType(someType);
+ }
+ if (someType.toString() == 'null') {
+ return (0, els_1.backTicks)('null');
+ }
+ return (0, utils_1.escapeChars)(someType === null || someType === void 0 ? void 0 : someType.toString());
+}
+exports.someType = someType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.tuple.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.tuple.d.ts
new file mode 100644
index 0000000..3cc6cc6
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.tuple.d.ts
@@ -0,0 +1,3 @@
+import { TupleType } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function tupleType(context: MarkdownThemeRenderContext, tupleType: TupleType): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.tuple.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.tuple.js
new file mode 100644
index 0000000..9bccb5c
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.tuple.js
@@ -0,0 +1,9 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.tupleType = void 0;
+function tupleType(context, tupleType) {
+ return `[${tupleType.elements
+ .map((element) => context.partials.someType(element))
+ .join(', ')}]`;
+}
+exports.tupleType = tupleType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.type-operator.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.type-operator.d.ts
new file mode 100644
index 0000000..2b759d8
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.type-operator.d.ts
@@ -0,0 +1,3 @@
+import { TypeOperatorType } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function typeOperatorType(context: MarkdownThemeRenderContext, model: TypeOperatorType): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.type-operator.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.type-operator.js
new file mode 100644
index 0000000..2af9480
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.type-operator.js
@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.typeOperatorType = void 0;
+const els_1 = require("../../support/els");
+function typeOperatorType(context, model) {
+ return `${(0, els_1.italic)(model.operator)} ${context.partials.someType(model.target)}`;
+}
+exports.typeOperatorType = typeOperatorType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.union.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.union.d.ts
new file mode 100644
index 0000000..0370773
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.union.d.ts
@@ -0,0 +1,3 @@
+import { UnionType } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function unionType(context: MarkdownThemeRenderContext, unionType: UnionType): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.union.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.union.js
new file mode 100644
index 0000000..0cc24d5
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.union.js
@@ -0,0 +1,9 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.unionType = void 0;
+function unionType(context, unionType) {
+ return unionType.types
+ .map((unionType) => context.partials.someType(unionType, 'none'))
+ .join(` \\| `);
+}
+exports.unionType = unionType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.unknown.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.unknown.d.ts
new file mode 100644
index 0000000..3dbac50
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.unknown.d.ts
@@ -0,0 +1,3 @@
+import { UnknownType } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function unknownType(context: MarkdownThemeRenderContext, model: UnknownType): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.unknown.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.unknown.js
new file mode 100644
index 0000000..08c26e0
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/partials/type.unknown.js
@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.unknownType = void 0;
+const els_1 = require("../../support/els");
+function unknownType(context, model) {
+ return (0, els_1.backTicks)(model.name);
+}
+exports.unknownType = unknownType;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/resources.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/resources.d.ts
new file mode 100644
index 0000000..f841c27
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/resources.d.ts
@@ -0,0 +1,57 @@
+import { ArrayType, ConditionalType, ContainerReflection, Comment, CommentDisplayPart, DeclarationHierarchy, DeclarationReflection, InferredType, IntersectionType, IntrinsicType, IndexedAccessType, LiteralType, PageEvent, ParameterReflection, ProjectReflection, QueryType, ReferenceReflection, ReferenceType, ReflectionType, SignatureReflection, SomeType, TupleType, TypeOperatorType, TypeParameterReflection, UnionType, UnknownType } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../theme-render-context';
+import { Collapse, NavigationItem } from '../models';
+export type Templates = {
+ memberTemplate: (page: PageEvent<DeclarationReflection>) => string;
+ projectTemplate: (page: PageEvent<ProjectReflection>) => string;
+ readmeTemplate: (page: PageEvent<DeclarationReflection | ProjectReflection>) => string;
+ reflectionTemplate: (page: PageEvent<DeclarationReflection>) => string;
+};
+export type Partials = {
+ breadcrumbs: (page: PageEvent<DeclarationReflection | ProjectReflection>) => string;
+ commentParts: (parts: CommentDisplayPart[]) => string;
+ comment: (comment: Comment, headingLevel?: number | undefined) => string;
+ hierarchy: (declarationHierarchy: DeclarationHierarchy) => string;
+ declarationMemberIdentifier: (reflection: DeclarationReflection) => string;
+ declarationMemberName: (declaration: DeclarationReflection, emphasis?: boolean) => string;
+ declarationMember: (declaration: DeclarationReflection, headingLevel: number) => string;
+ indexSignatureTitle: (signature: SignatureReflection) => string;
+ inheritance: (reflection: DeclarationReflection | SignatureReflection, headingLevel: number) => string;
+ memberKindTag: (reflection: DeclarationReflection) => string;
+ referenceMember: (props: ReferenceReflection) => string;
+ reflectionMember: (reflection: DeclarationReflection, headingLevel: number) => string;
+ signatureMemberIdentifier: (signature: SignatureReflection) => string;
+ signatureMember: (signature: SignatureReflection, headingLevel: number) => string;
+ sources: (reflection: DeclarationReflection | SignatureReflection) => string;
+ memberTitle: (reflection: DeclarationReflection, typeParams?: boolean) => string;
+ member: (reflection: DeclarationReflection, headingLevel: number) => string;
+ typeDeclarationMember: (typeDeclaration: DeclarationReflection, headingLevel: number) => string;
+ members: (container: ContainerReflection, headingLevel: number) => string;
+ navigation: (navigationItems: NavigationItem[]) => string;
+ pageHeader: (page: PageEvent<DeclarationReflection | ProjectReflection>) => string;
+ pageTitle: (page: PageEvent<DeclarationReflection | ProjectReflection>) => string;
+ enumMembersTable: (props: DeclarationReflection[]) => string;
+ parametersTable: (parameters: ParameterReflection[]) => string;
+ propertiesTable: (props: DeclarationReflection[], nameCol?: string) => string;
+ typeParametersTable: (typeParameters: TypeParameterReflection[]) => string;
+ toc: (reflection: DeclarationReflection | ProjectReflection) => string;
+ arrayType: (arrayType: ArrayType) => string;
+ conditionalType: (conditionalType: ConditionalType) => string;
+ declarationType: (declarationReflection: DeclarationReflection, collapse?: Collapse) => string;
+ functionType: (modelSignatures: SignatureReflection[]) => string;
+ indexAccessType: (model: IndexedAccessType) => string;
+ inferredType: (model: InferredType) => string;
+ intersectionType: (model: IntersectionType) => string;
+ intrinsicType: (model: IntrinsicType) => string;
+ literalType: (literalType: LiteralType) => string;
+ queryType: (queryType: QueryType) => string;
+ referenceType: (referenceType: ReferenceType) => string;
+ reflectionType: (reflectionType: ReflectionType, collapse: Collapse) => string;
+ someType: (someType: SomeType, collapse?: Collapse) => string;
+ tupleType: (tupleType: TupleType) => string;
+ typeOperatorType: (model: TypeOperatorType) => string;
+ unionType: (unionType: UnionType) => string;
+ unknownType: (model: UnknownType) => string;
+};
+export declare const templates: (context: MarkdownThemeRenderContext) => Templates;
+export declare const partials: (context: MarkdownThemeRenderContext) => Partials;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/resources.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/resources.js
new file mode 100644
index 0000000..557c890
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/resources.js
@@ -0,0 +1,108 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.partials = exports.templates = void 0;
+const member_1 = require("./templates/member");
+const project_1 = require("./templates/project");
+const readme_1 = require("./templates/readme");
+const reflection_1 = require("./templates/reflection");
+const breadcrumbs_1 = require("./partials/breadcrumbs");
+const comment_parts_1 = require("./partials/comment.parts");
+const comment_1 = require("./partials/comment");
+const hierarchy_1 = require("./partials/hierarchy");
+const member_declaration_identifier_1 = require("./partials/member.declaration.identifier");
+const member_declaration_name_1 = require("./partials/member.declaration.name");
+const member_declaration_1 = require("./partials/member.declaration");
+const member_indexsignature_title_1 = require("./partials/member.indexsignature.title");
+const member_inheritance_1 = require("./partials/member.inheritance");
+const member_kind_tag_1 = require("./partials/member.kind-tag");
+const member_reference_1 = require("./partials/member.reference");
+const member_reflection_1 = require("./partials/member.reflection");
+const member_signature_identifier_1 = require("./partials/member.signature.identifier");
+const member_signature_1 = require("./partials/member.signature");
+const member_sources_1 = require("./partials/member.sources");
+const member_title_1 = require("./partials/member.title");
+const member_2 = require("./partials/member");
+const member_type_declaration_1 = require("./partials/member.type-declaration");
+const members_1 = require("./partials/members");
+const navigation_1 = require("./partials/navigation");
+const page_header_1 = require("./partials/page.header");
+const page_title_1 = require("./partials/page.title");
+const table_enum_members_1 = require("./partials/table.enum-members");
+const table_parameters_1 = require("./partials/table.parameters");
+const table_properties_1 = require("./partials/table.properties");
+const table_typeparameters_1 = require("./partials/table.typeparameters");
+const toc_1 = require("./partials/toc");
+const type_array_1 = require("./partials/type.array");
+const type_conditional_1 = require("./partials/type.conditional");
+const type_declaration_1 = require("./partials/type.declaration");
+const type_function_1 = require("./partials/type.function");
+const type_index_access_1 = require("./partials/type.index-access");
+const type_inferred_1 = require("./partials/type.inferred");
+const type_intersection_1 = require("./partials/type.intersection");
+const type_intrinsic_1 = require("./partials/type.intrinsic");
+const type_literal_1 = require("./partials/type.literal");
+const type_query_1 = require("./partials/type.query");
+const type_reference_1 = require("./partials/type.reference");
+const type_reflection_1 = require("./partials/type.reflection");
+const type_some_1 = require("./partials/type.some");
+const type_tuple_1 = require("./partials/type.tuple");
+const type_type_operator_1 = require("./partials/type.type-operator");
+const type_union_1 = require("./partials/type.union");
+const type_unknown_1 = require("./partials/type.unknown");
+function bind(fn, first) {
+ return (...r) => fn(first, ...r);
+}
+const templates = (context) => ({
+ memberTemplate: bind(member_1.memberTemplate, context),
+ projectTemplate: bind(project_1.projectTemplate, context),
+ readmeTemplate: bind(readme_1.readmeTemplate, context),
+ reflectionTemplate: bind(reflection_1.reflectionTemplate, context),
+});
+exports.templates = templates;
+const partials = (context) => ({
+ breadcrumbs: bind(breadcrumbs_1.breadcrumbs, context),
+ commentParts: bind(comment_parts_1.commentParts, context),
+ comment: bind(comment_1.comment, context),
+ hierarchy: bind(hierarchy_1.hierarchy, context),
+ declarationMemberIdentifier: bind(member_declaration_identifier_1.declarationMemberIdentifier, context),
+ declarationMemberName: bind(member_declaration_name_1.declarationMemberName, context),
+ declarationMember: bind(member_declaration_1.declarationMember, context),
+ indexSignatureTitle: bind(member_indexsignature_title_1.indexSignatureTitle, context),
+ inheritance: bind(member_inheritance_1.inheritance, context),
+ memberKindTag: bind(member_kind_tag_1.memberKindTag, context),
+ referenceMember: bind(member_reference_1.referenceMember, context),
+ reflectionMember: bind(member_reflection_1.reflectionMember, context),
+ signatureMemberIdentifier: bind(member_signature_identifier_1.signatureMemberIdentifier, context),
+ signatureMember: bind(member_signature_1.signatureMember, context),
+ sources: bind(member_sources_1.sources, context),
+ memberTitle: bind(member_title_1.memberTitle, context),
+ member: bind(member_2.member, context),
+ typeDeclarationMember: bind(member_type_declaration_1.typeDeclarationMember, context),
+ members: bind(members_1.members, context),
+ navigation: bind(navigation_1.navigation, context),
+ pageHeader: bind(page_header_1.pageHeader, context),
+ pageTitle: bind(page_title_1.pageTitle, context),
+ enumMembersTable: bind(table_enum_members_1.enumMembersTable, context),
+ parametersTable: bind(table_parameters_1.parametersTable, context),
+ propertiesTable: bind(table_properties_1.propertiesTable, context),
+ typeParametersTable: bind(table_typeparameters_1.typeParametersTable, context),
+ toc: bind(toc_1.toc, context),
+ arrayType: bind(type_array_1.arrayType, context),
+ conditionalType: bind(type_conditional_1.conditionalType, context),
+ declarationType: bind(type_declaration_1.declarationType, context),
+ functionType: bind(type_function_1.functionType, context),
+ indexAccessType: bind(type_index_access_1.indexAccessType, context),
+ inferredType: bind(type_inferred_1.inferredType, context),
+ intersectionType: bind(type_intersection_1.intersectionType, context),
+ intrinsicType: bind(type_intrinsic_1.intrinsicType, context),
+ literalType: bind(type_literal_1.literalType, context),
+ queryType: bind(type_query_1.queryType, context),
+ referenceType: bind(type_reference_1.referenceType, context),
+ reflectionType: bind(type_reflection_1.reflectionType, context),
+ someType: bind(type_some_1.someType, context),
+ tupleType: bind(type_tuple_1.tupleType, context),
+ typeOperatorType: bind(type_type_operator_1.typeOperatorType, context),
+ unionType: bind(type_union_1.unionType, context),
+ unknownType: bind(type_unknown_1.unknownType, context),
+});
+exports.partials = partials;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/member.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/member.d.ts
new file mode 100644
index 0000000..6418185
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/member.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection, PageEvent } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function memberTemplate(context: MarkdownThemeRenderContext, page: PageEvent<DeclarationReflection>): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/member.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/member.js
new file mode 100644
index 0000000..c3436b6
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/member.js
@@ -0,0 +1,19 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.memberTemplate = void 0;
+const els_1 = require("../../support/els");
+function memberTemplate(context, page) {
+ const md = [];
+ if (!context.getOption('hidePageHeader')) {
+ md.push(context.partials.pageHeader(page));
+ }
+ if (!context.getOption('hideBreadcrumbs')) {
+ md.push(context.partials.breadcrumbs(page));
+ }
+ if (!context.getOption('hidePageTitle')) {
+ md.push((0, els_1.heading)(1, context.partials.pageTitle(page)));
+ }
+ md.push(context.partials.member(page.model, 1));
+ return md.join('\n\n');
+}
+exports.memberTemplate = memberTemplate;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/project.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/project.d.ts
new file mode 100644
index 0000000..83b03ac
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/project.d.ts
@@ -0,0 +1,3 @@
+import { PageEvent, ProjectReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function projectTemplate(context: MarkdownThemeRenderContext, page: PageEvent<ProjectReflection>): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/project.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/project.js
new file mode 100644
index 0000000..f589024
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/project.js
@@ -0,0 +1,60 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.projectTemplate = void 0;
+const path = __importStar(require("path"));
+const els_1 = require("../../support/els");
+const utils_1 = require("../../support/utils");
+function projectTemplate(context, page) {
+ var _a;
+ const md = [];
+ if (!context.getOption('hidePageHeader')) {
+ md.push(context.partials.pageHeader(page));
+ }
+ if (!context.getOption('hideBreadcrumbs')) {
+ md.push(context.partials.breadcrumbs(page));
+ }
+ if (!context.getOption('hidePageTitle')) {
+ md.push((0, els_1.heading)(1, context.partials.pageTitle(page)));
+ }
+ if (page.model.comment) {
+ md.push(context.partials.comment(page.model.comment, 2));
+ }
+ if (page.model.groups) {
+ md.push(context.partials.toc(page.model));
+ }
+ else {
+ md.push((0, els_1.heading)(2, 'Packages'));
+ const packagesList = (_a = page.model.children) === null || _a === void 0 ? void 0 : _a.map((projectPackage) => {
+ return `- [${(0, utils_1.escapeChars)(projectPackage.name)}](${context.relativeURL(Boolean(projectPackage.readme)
+ ? `${path.dirname(projectPackage.url || '')}/${context.readmeFile}`
+ : projectPackage.url)})`;
+ });
+ md.push((packagesList === null || packagesList === void 0 ? void 0 : packagesList.join('\n')) || '');
+ }
+ md.push(context.partials.members(page.model, 2));
+ return md.join('\n\n');
+}
+exports.projectTemplate = projectTemplate;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/readme.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/readme.d.ts
new file mode 100644
index 0000000..7fe190d
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/readme.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection, PageEvent, ProjectReflection } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function readmeTemplate(context: MarkdownThemeRenderContext, page: PageEvent<ProjectReflection | DeclarationReflection>): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/readme.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/readme.js
new file mode 100644
index 0000000..1fda51c
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/readme.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.readmeTemplate = void 0;
+function readmeTemplate(context, page) {
+ const md = [];
+ if (!context.getOption('hidePageHeader')) {
+ md.push(context.partials.pageHeader(page));
+ }
+ if (page.model.readme) {
+ md.push(context.partials.commentParts(page.model.readme));
+ }
+ return md.join('\n\n');
+}
+exports.readmeTemplate = readmeTemplate;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/reflection.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/reflection.d.ts
new file mode 100644
index 0000000..938dbcb
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/reflection.d.ts
@@ -0,0 +1,3 @@
+import { DeclarationReflection, PageEvent } from 'typedoc';
+import { MarkdownThemeRenderContext } from '../../theme-render-context';
+export declare function reflectionTemplate(context: MarkdownThemeRenderContext, page: PageEvent<DeclarationReflection>): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/reflection.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/reflection.js
new file mode 100644
index 0000000..60a987f
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/resources/templates/reflection.js
@@ -0,0 +1,22 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.reflectionTemplate = void 0;
+const els_1 = require("../../support/els");
+function reflectionTemplate(context, page) {
+ const md = [];
+ if (!context.getOption('hidePageHeader')) {
+ md.push(context.partials.pageHeader(page));
+ }
+ if (!context.getOption('hideBreadcrumbs')) {
+ md.push(context.partials.breadcrumbs(page));
+ }
+ if (!context.getOption('hidePageTitle')) {
+ md.push((0, els_1.heading)(1, context.partials.pageTitle(page)));
+ }
+ if (!context.getOption('hideKindTag')) {
+ md.push(context.partials.memberKindTag(page.model));
+ }
+ md.push(context.partials.reflectionMember(page.model, 2));
+ return md.join('\n\n');
+}
+exports.reflectionTemplate = reflectionTemplate;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/support/constants.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/support/constants.d.ts
new file mode 100644
index 0000000..44632f8
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/support/constants.d.ts
@@ -0,0 +1,4 @@
+import { ReflectionKind } from 'typedoc';
+export declare const URL_PREFIX: RegExp;
+export declare const SYMBOLS_WITH_DOCUMENTS: ReflectionKind[];
+export declare const VALID_KINDS_WITH_OWN_FILE: string[];
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/support/constants.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/support/constants.js
new file mode 100644
index 0000000..2e99b3e
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/support/constants.js
@@ -0,0 +1,21 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.VALID_KINDS_WITH_OWN_FILE = exports.SYMBOLS_WITH_DOCUMENTS = exports.URL_PREFIX = void 0;
+const typedoc_1 = require("typedoc");
+exports.URL_PREFIX = /^(http|ftp)s?:\/\//;
+exports.SYMBOLS_WITH_DOCUMENTS = [
+ typedoc_1.ReflectionKind.Class,
+ typedoc_1.ReflectionKind.Interface,
+ typedoc_1.ReflectionKind.Enum,
+ typedoc_1.ReflectionKind.Function,
+ typedoc_1.ReflectionKind.Variable,
+ typedoc_1.ReflectionKind.TypeAlias,
+];
+exports.VALID_KINDS_WITH_OWN_FILE = [
+ typedoc_1.ReflectionKind[typedoc_1.ReflectionKind.Class],
+ typedoc_1.ReflectionKind[typedoc_1.ReflectionKind.Interface],
+ typedoc_1.ReflectionKind[typedoc_1.ReflectionKind.Enum],
+ typedoc_1.ReflectionKind[typedoc_1.ReflectionKind.Function],
+ typedoc_1.ReflectionKind[typedoc_1.ReflectionKind.TypeAlias],
+ typedoc_1.ReflectionKind[typedoc_1.ReflectionKind.Variable],
+];
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/support/els.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/support/els.d.ts
new file mode 100644
index 0000000..2e3c0a1
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/support/els.d.ts
@@ -0,0 +1,11 @@
+export declare const heading: (level: number, text: string) => string;
+export declare const link: (label: string, url: string | null) => string;
+export declare const bold: (text: string) => string;
+export declare const italic: (text: string) => string;
+export declare const backTicks: (text: string) => string;
+export declare const unorderedList: <T>(items: T[]) => string;
+export declare const horizontalRule: () => string;
+export declare const codeBlock: (content: string) => string;
+export declare const table: (headers: string[], rows: string[][]) => string;
+export declare const blockQuoteBlock: (content: string) => string;
+export declare const indentBlock: (content: string) => string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/support/els.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/support/els.js
new file mode 100644
index 0000000..6500e40
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/support/els.js
@@ -0,0 +1,42 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.indentBlock = exports.blockQuoteBlock = exports.table = exports.codeBlock = exports.horizontalRule = exports.unorderedList = exports.backTicks = exports.italic = exports.bold = exports.link = exports.heading = void 0;
+const utils_1 = require("./utils");
+const heading = (level, text) => {
+ level = level > 6 ? 6 : level;
+ return `${[...Array(level)].map(() => '#').join('')} ${text}`;
+};
+exports.heading = heading;
+const link = (label, url) => url ? `[${label}](${url})` : '';
+exports.link = link;
+const bold = (text) => `**${text}**`;
+exports.bold = bold;
+const italic = (text) => `*${text}*`;
+exports.italic = italic;
+const backTicks = (text) => `\`${text}\``;
+exports.backTicks = backTicks;
+const unorderedList = (items) => items.map((item) => `- ${item}`).join('\n');
+exports.unorderedList = unorderedList;
+const horizontalRule = () => '\n\n---';
+exports.horizontalRule = horizontalRule;
+const codeBlock = (content) => '```ts\n' + (0, utils_1.unEscapeChars)(content) + '\n```';
+exports.codeBlock = codeBlock;
+const table = (headers, rows) => `\n| ${headers.join(' | ')} |\n| ${headers
+ .map(() => ':------')
+ .join(' | ')} |\n${rows.map((row) => `| ${row.join(' | ')} |\n`).join('')}`;
+exports.table = table;
+const blockQuoteBlock = (content) => {
+ const lines = content.split('\n');
+ return lines
+ .map((line) => (line.length ? `> ${line.trim()}` : '>'))
+ .join('\n');
+};
+exports.blockQuoteBlock = blockQuoteBlock;
+const indentBlock = (content) => {
+ const lines = content.split('\n');
+ return lines
+ .filter((line) => Boolean(line.length))
+ .map((line) => ` ${line}`)
+ .join('\n');
+};
+exports.indentBlock = indentBlock;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/support/helpers.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/support/helpers.d.ts
new file mode 100644
index 0000000..5d40fb2
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/support/helpers.d.ts
@@ -0,0 +1,7 @@
+import { CommentTag, DeclarationReflection, ProjectReflection } from 'typedoc';
+export declare function getTypeParameters(reflection: DeclarationReflection): string;
+export declare function getFlags(reflection: DeclarationReflection): string | null;
+export declare function tableComments(str: string): string;
+export declare function getTagName(tag: CommentTag): string;
+export declare function getDeclarationType(declaration: DeclarationReflection): import("typedoc").SomeType | undefined;
+export declare function getProjectDisplayName(project: ProjectReflection, includeVersion: boolean): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/support/helpers.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/support/helpers.js
new file mode 100644
index 0000000..0cff53c
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/support/helpers.js
@@ -0,0 +1,46 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getProjectDisplayName = exports.getDeclarationType = exports.getTagName = exports.tableComments = exports.getFlags = exports.getTypeParameters = void 0;
+const els_1 = require("./els");
+const utils_1 = require("./utils");
+function getTypeParameters(reflection) {
+ if (reflection.typeParameters) {
+ const typeParameters = reflection.typeParameters
+ .map((typeParameter) => typeParameter.name)
+ .join(', ');
+ return `\\<${typeParameters}\\>`;
+ }
+ return '';
+}
+exports.getTypeParameters = getTypeParameters;
+function getFlags(reflection) {
+ var _a;
+ if (((_a = reflection.flags) === null || _a === void 0 ? void 0 : _a.length) > 0 && !reflection.flags.isRest) {
+ return reflection.flags.map((flag) => (0, els_1.backTicks)(flag)).join(' ');
+ }
+ return null;
+}
+exports.getFlags = getFlags;
+function tableComments(str) {
+ return (0, utils_1.stripLineBreaks)(str).replace(/\|/g, '\\|');
+}
+exports.tableComments = tableComments;
+function getTagName(tag) {
+ return tag.tag.substring(1);
+}
+exports.getTagName = getTagName;
+function getDeclarationType(declaration) {
+ if (declaration.getSignature) {
+ return declaration.getSignature.type;
+ }
+ if (declaration.setSignature) {
+ return declaration.setSignature.type;
+ }
+ return declaration.type;
+}
+exports.getDeclarationType = getDeclarationType;
+function getProjectDisplayName(project, includeVersion) {
+ const version = includeVersion ? ` - v${project.packageVersion}` : '';
+ return `${project.name}${version}`;
+}
+exports.getProjectDisplayName = getProjectDisplayName;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/support/utils.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/support/utils.d.ts
new file mode 100644
index 0000000..1f83250
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/support/utils.d.ts
@@ -0,0 +1,8 @@
+export declare function escapeChars(str: string): string;
+export declare function escapeAngleBrackets(str: string): string;
+export declare function escapeTableCol(str: string): string;
+export declare function unEscapeChars(str: string): string;
+export declare function stripComments(str: string): string;
+export declare function stripLineBreaks(str: string, includeHTML?: boolean): string;
+export declare function camelToTitleCase(text: string): string;
+export declare function slugify(str: string): string;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/support/utils.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/support/utils.js
new file mode 100644
index 0000000..6c8df82
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/support/utils.js
@@ -0,0 +1,60 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.slugify = exports.camelToTitleCase = exports.stripLineBreaks = exports.stripComments = exports.unEscapeChars = exports.escapeTableCol = exports.escapeAngleBrackets = exports.escapeChars = void 0;
+function escapeChars(str) {
+ return str
+ .replace(/>/g, '\\>')
+ .replace(/</g, '\\<')
+ .replace(/{/g, '\\{')
+ .replace(/_/g, '\\_')
+ .replace(/`/g, '\\`')
+ .replace(/\|/g, '\\|');
+}
+exports.escapeChars = escapeChars;
+function escapeAngleBrackets(str) {
+ return str
+ .replace(/<(?=(?:[^`]*`[^`]*`)*[^`]*$)/gi, '\\<')
+ .replace(/>(?=(?:[^`]*`[^`]*`)*[^`]*$)/gi, '\\>');
+}
+exports.escapeAngleBrackets = escapeAngleBrackets;
+function escapeTableCol(str) {
+ return str.replace(/(?<!\\)\|/g, '\\|');
+}
+exports.escapeTableCol = escapeTableCol;
+function unEscapeChars(str) {
+ return str
+ .replace(/\\</g, '<')
+ .replace(/\\>/g, '>')
+ .replace(/\\_/g, '_')
+ .replace(/\\{/g, '{')
+ .replace(/`/g, '')
+ .replace(/\*/g, '')
+ .replace(/\\\|/g, '|')
+ .replace(/\[([^\[\]]*)\]\((.*?)\)/gm, '$1');
+}
+exports.unEscapeChars = unEscapeChars;
+function stripComments(str) {
+ return str
+ .replace(/(?:\/\*(?:[\s\S]*?)\*\/)|(?:^\s*\/\/(?:.*)$)/g, ' ')
+ .replace(/\n/g, '')
+ .replace(/^\s+|\s+$|(\s)+/g, '$1');
+}
+exports.stripComments = stripComments;
+function stripLineBreaks(str, includeHTML = true) {
+ return str ? str.replace(/\n/g, includeHTML ? '<br />' : ' ').trim() : '';
+}
+exports.stripLineBreaks = stripLineBreaks;
+function camelToTitleCase(text) {
+ return (text.substring(0, 1).toUpperCase() +
+ text.substring(1).replace(/[a-z][A-Z]/g, (x) => `${x[0]} ${x[1]}`));
+}
+exports.camelToTitleCase = camelToTitleCase;
+function slugify(str) {
+ return str
+ .toLowerCase()
+ .trim()
+ .replace(/[^\w\s-]/g, '')
+ .replace(/[\s_-]+/g, '-')
+ .replace(/^-+|-+$/g, '');
+}
+exports.slugify = slugify;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/theme-render-context.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/theme-render-context.d.ts
new file mode 100644
index 0000000..0179d62
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/theme-render-context.d.ts
@@ -0,0 +1,22 @@
+import { Options, Reflection } from 'typedoc';
+import { TypedocPluginMarkdownOptions } from './models';
+import { MarkdownTheme } from './theme';
+export declare class MarkdownThemeRenderContext {
+ theme: MarkdownTheme;
+ options: Options;
+ readmeFile: string;
+ indexFile: string;
+ modulesFile: string;
+ exportsFile: string;
+ private _activeLocation;
+ set activeLocation(activeLocation: string);
+ get activeLocation(): string;
+ constructor(theme: MarkdownTheme, options: Options);
+ getOption<K extends keyof TypedocPluginMarkdownOptions>(name: K): TypedocPluginMarkdownOptions[K];
+ getRelativeUrl(url: string | undefined): string | null;
+ urlTo(reflection: Reflection): string | null;
+ parseUrl(url: string): string;
+ relativeURL(url: string | undefined): string | null;
+ templates: import("./resources/resources").Templates;
+ partials: import("./resources/resources").Partials;
+}
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/theme-render-context.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/theme-render-context.js
new file mode 100644
index 0000000..dc4a994
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/theme-render-context.js
@@ -0,0 +1,76 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.MarkdownThemeRenderContext = void 0;
+const path = __importStar(require("path"));
+const resources_1 = require("./resources/resources");
+const constants_1 = require("./support/constants");
+class MarkdownThemeRenderContext {
+ set activeLocation(activeLocation) {
+ this._activeLocation = activeLocation;
+ }
+ get activeLocation() {
+ return this._activeLocation;
+ }
+ constructor(theme, options) {
+ this.theme = theme;
+ this.options = options;
+ this.readmeFile = 'README.md';
+ this.indexFile = 'index.md';
+ this.modulesFile = 'modules.md';
+ this.exportsFile = 'exports.md';
+ this._activeLocation = '.';
+ this.templates = (0, resources_1.templates)(this);
+ this.partials = (0, resources_1.partials)(this);
+ }
+ getOption(name) {
+ return this.options.getValue(name);
+ }
+ getRelativeUrl(url) {
+ if (!url) {
+ return null;
+ }
+ if (constants_1.URL_PREFIX.test(url)) {
+ return url;
+ }
+ else {
+ if (this.getOption('baseUrl')) {
+ return this.getOption('baseUrl') + url.replace(/\\/g, '/');
+ }
+ const relative = path.relative(path.dirname(this.activeLocation), path.dirname(url));
+ return this.parseUrl(path.join(relative, path.basename(url)).replace(/\\/g, '/'));
+ }
+ }
+ urlTo(reflection) {
+ return this.relativeURL(reflection.url);
+ }
+ parseUrl(url) {
+ return encodeURI(url);
+ }
+ relativeURL(url) {
+ return this.getRelativeUrl(url);
+ }
+}
+exports.MarkdownThemeRenderContext = MarkdownThemeRenderContext;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/theme.d.ts b/node_modules/@terwer/typedoc-plugin-markdown/dist/theme.d.ts
new file mode 100644
index 0000000..ecfe975
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/theme.d.ts
@@ -0,0 +1,14 @@
+import { PageEvent, ProjectReflection, Reflection, RenderTemplate, Renderer, Theme } from 'typedoc';
+import { MarkdownThemeRenderContext } from './theme-render-context';
+export declare class MarkdownTheme extends Theme {
+ private _renderContext;
+ private _prettierOptions;
+ constructor(renderer: Renderer);
+ getRenderContext(): MarkdownThemeRenderContext;
+ getPrettierOptions(): any;
+ resolvePrettierOptions(): any;
+ render(page: PageEvent<Reflection>, template: RenderTemplate<PageEvent<Reflection>>): string;
+ getUrls(project: ProjectReflection): import("typedoc").UrlMapping<any>[];
+ getNavigation(project: ProjectReflection): import("./models").NavigationItem[];
+ protected onBeginPage(page: PageEvent): void;
+}
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/dist/theme.js b/node_modules/@terwer/typedoc-plugin-markdown/dist/theme.js
new file mode 100644
index 0000000..ce2b6f3
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/dist/theme.js
@@ -0,0 +1,76 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.MarkdownTheme = void 0;
+const prettier = __importStar(require("prettier"));
+const typedoc_1 = require("typedoc");
+const navigation_builder_1 = require("./converter/navigation-builder");
+const url_builder_1 = require("./converter/url-builder");
+const theme_render_context_1 = require("./theme-render-context");
+class MarkdownTheme extends typedoc_1.Theme {
+ constructor(renderer) {
+ super(renderer);
+ if (this.application.options.getValue('enableFrontmatter')) {
+ this.application.logger.warn('[typedoc-plugin-markdown] `enableFrontmatter` has been removed. Please use plugin-typedoc-frontmatter instead');
+ }
+ this.listenTo(this.owner, {
+ [typedoc_1.PageEvent.BEGIN]: this.onBeginPage,
+ });
+ }
+ getRenderContext() {
+ if (!this._renderContext) {
+ this._renderContext = new theme_render_context_1.MarkdownThemeRenderContext(this, this.application.options);
+ }
+ return this._renderContext;
+ }
+ getPrettierOptions() {
+ if (!this._prettierOptions) {
+ this._prettierOptions = this.resolvePrettierOptions();
+ }
+ return this._prettierOptions;
+ }
+ resolvePrettierOptions() {
+ const prettierFile = prettier.resolveConfigFile.sync();
+ return prettierFile ? prettier.resolveConfig.sync(prettierFile) : null;
+ }
+ render(page, template) {
+ return prettier.format(template(page), {
+ ...this.getPrettierOptions(),
+ parser: 'markdown',
+ });
+ }
+ getUrls(project) {
+ const urls = new url_builder_1.UrlBuilder(this.getRenderContext()).getUrls(project);
+ return urls;
+ }
+ getNavigation(project) {
+ const navigation = new navigation_builder_1.NavigationBuilder(this.getRenderContext()).getNavigation(project);
+ return navigation;
+ }
+ onBeginPage(page) {
+ this.getRenderContext().activeLocation = page.url;
+ }
+}
+exports.MarkdownTheme = MarkdownTheme;
diff --git a/node_modules/@terwer/typedoc-plugin-markdown/package.json b/node_modules/@terwer/typedoc-plugin-markdown/package.json
new file mode 100644
index 0000000..ad73e71
--- /dev/null
+++ b/node_modules/@terwer/typedoc-plugin-markdown/package.json
@@ -0,0 +1,49 @@
+{
+ "name": "@terwer/typedoc-plugin-markdown",
+ "version": "4.0.0-next.11",
+ "description": "A plugin for TypeDoc that enables TypeScript API documentation to be generated in Markdown.",
+ "main": "dist/index.js",
+ "files": [
+ "dist/"
+ ],
+ "author": "Thomas Grey",
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/tgreyuk/typedoc-plugin-markdown/issues"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/tgreyuk/typedoc-plugin-markdown.git",
+ "directory": "packages/typedoc-plugin-markdown"
+ },
+ "homepage": "https://github.com/tgreyuk/typedoc-plugin-markdown/tree/master/packages/typedoc-plugin-markdown",
+ "keywords": [
+ "markdown",
+ "typescript",
+ "documentation",
+ "api",
+ "typedocplugin",
+ "typedoc"
+ ],
+ "peerDependencies": {
+ "prettier": ">=1.8.0",
+ "typedoc": ">=0.24.0"
+ },
+ "publishConfig": {
+ "access": "public"
+ },
+ "scripts": {
+ "lint": "npm-run-all lint:*",
+ "lint:ts": "eslint ./src --ext .ts",
+ "lint:markdown": "npm run docs && markdownlint ./out/md",
+ "prebuild": "ts-node scripts/build-resources",
+ "build": "rm -rf dist && tsc",
+ "test": "jest --colors --updateSnapshot",
+ "build-and-test": "npm run build && npm run test",
+ "docs": "npm run build && npm-run-all docs:*",
+ "docs:md-1": "typedoc --options ../../stubs/typedoc.1.js --out ./out/md/md-1",
+ "docs:md-2": "typedoc --options ../../stubs/typedoc.2.js --out ./out/md/md-2",
+ "docs:md-3": "typedoc --options ../../stubs/typedoc.3.js --out ./out/md/md-3",
+ "docs:html": "typedoc --options ../../stubs/typedoc.base.js --out ./out/html"
+ }
+} \ No newline at end of file
diff --git a/node_modules/ansi-sequence-parser/CHANGELOG.md b/node_modules/ansi-sequence-parser/CHANGELOG.md
new file mode 100644
index 0000000..15ee7dc
--- /dev/null
+++ b/node_modules/ansi-sequence-parser/CHANGELOG.md
@@ -0,0 +1,13 @@
+# ansi-sequence-parser
+
+## 1.1.0
+
+### Minor Changes
+
+- 57cbaa6: Add default named colors map
+
+## 1.0.0
+
+### Major Changes
+
+- 86719a2: Initial release
diff --git a/node_modules/ansi-sequence-parser/README.md b/node_modules/ansi-sequence-parser/README.md
new file mode 100644
index 0000000..90814a0
--- /dev/null
+++ b/node_modules/ansi-sequence-parser/README.md
@@ -0,0 +1,133 @@
+# `ansi-sequence-parser`
+
+Parse ANSI escape sequences into a readable format for things like generating pretty HTML.
+
+Install with your favourite package manager:
+
+```sh
+pnpm install ansi-sequence-parser
+yarn add ansi-sequence-parser
+npm install ansi-sequence-parser
+```
+
+## Parsing
+
+Token format:
+
+```ts
+interface ParseToken {
+ // The text content of the token
+ value: string;
+ // The foreground color
+ foreground: Color | null;
+ // The background color
+ background: Color | null;
+ // A Set of the applied decorations
+ decorations: Set<DecorationType>;
+}
+```
+
+Parse full input at once:
+
+```ts
+import { parseAnsiSequences } from 'ansi-sequence-parser';
+
+const tokens = parseAnsiSequences(input);
+```
+
+If you want to parse your input in multiple chunks, make sure to create a parser so that you can maintain
+state between chunks:
+
+```ts
+import { createAnsiSequenceParser } from 'ansi-sequence-parser';
+
+const parser = createAnsiSequenceParser();
+
+const tokensByLine = input.split(/\r?\n/).map((line) => parser.parse(line));
+```
+
+## Colors
+
+Colors format:
+
+```ts
+// A named ANSI color, e.g. `magenta` or `brightBlue`
+export interface NamedColor {
+ type: 'named';
+ name: ColorName;
+}
+
+// A color-table lookup
+export interface TableColor {
+ type: 'table';
+ index: number;
+}
+
+// An RGB color
+export interface RgbColor {
+ type: 'rgb';
+ rgb: [number, number, number];
+}
+
+export type Color = NamedColor | TableColor | RgbColor;
+```
+
+In order to interpret all of the above color types as a hex code, you can create a color palette:
+
+```ts
+import { parseAnsiSequences, createColorPalette } from 'ansi-sequence-parser';
+
+const tokens = parseAnsiSequences(input);
+const colorPalette = createColorPalette();
+
+for (const token of tokens) {
+ if (token.foreground) {
+ const foregroundValue = colorPalette.value(token.foreground);
+ }
+ if (token.background) {
+ const backgroundValue = colorPalette.value(token.background);
+ }
+}
+```
+
+You can also specify a custom named colors map:
+
+```ts
+import { parseAnsiSequences, createColorPalette } from 'ansi-sequence-parser';
+
+const tokens = parseAnsiSequences(input);
+const colorPalette = createColorPalette({
+ black: '#000000',
+ red: '#bb0000',
+ green: '#00bb00',
+ yellow: '#bbbb00',
+ blue: '#0000bb',
+ magenta: '#ff00ff',
+ cyan: '#00bbbb',
+ white: '#eeeeee',
+ brightBlack: '#555555',
+ brightRed: '#ff5555',
+ brightGreen: '#00ff00',
+ brightYellow: '#ffff55',
+ brightBlue: '#5555ff',
+ brightMagenta: '#ff55ff',
+ brightCyan: '#55ffff',
+ brightWhite: '#ffffff',
+});
+```
+
+If you want to modify the default named colors map, you can import the `defaultNamedColorsMap`:
+
+```ts
+import {
+ parseAnsiSequences,
+ createColorPalette,
+ defaultNamedColorsMap,
+} from 'ansi-sequence-parser';
+
+const tokens = parseAnsiSequences(input);
+const colorPalette = createColorPalette({
+ ...defaultNamedColorsMap,
+ blue: '#0000cc',
+});
+```
diff --git a/node_modules/ansi-sequence-parser/dist/index.cjs b/node_modules/ansi-sequence-parser/dist/index.cjs
new file mode 100644
index 0000000..6ad1eeb
--- /dev/null
+++ b/node_modules/ansi-sequence-parser/dist/index.cjs
@@ -0,0 +1,298 @@
+var __defProp = Object.defineProperty;
+var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
+var __getOwnPropNames = Object.getOwnPropertyNames;
+var __hasOwnProp = Object.prototype.hasOwnProperty;
+var __export = (target, all) => {
+ for (var name in all)
+ __defProp(target, name, { get: all[name], enumerable: true });
+};
+var __copyProps = (to, from, except, desc) => {
+ if (from && typeof from === "object" || typeof from === "function") {
+ for (let key of __getOwnPropNames(from))
+ if (!__hasOwnProp.call(to, key) && key !== except)
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
+ }
+ return to;
+};
+var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
+
+// src/index.ts
+var src_exports = {};
+__export(src_exports, {
+ createAnsiSequenceParser: () => createAnsiSequenceParser,
+ createColorPalette: () => createColorPalette,
+ decorations: () => decorations,
+ defaultNamedColorsMap: () => defaultNamedColorsMap,
+ namedColors: () => namedColors,
+ parseAnsiSequences: () => parseAnsiSequences
+});
+module.exports = __toCommonJS(src_exports);
+
+// src/colors.ts
+var namedColors = [
+ "black",
+ "red",
+ "green",
+ "yellow",
+ "blue",
+ "magenta",
+ "cyan",
+ "white",
+ "brightBlack",
+ "brightRed",
+ "brightGreen",
+ "brightYellow",
+ "brightBlue",
+ "brightMagenta",
+ "brightCyan",
+ "brightWhite"
+];
+
+// src/decorations.ts
+var decorations = {
+ 1: "bold",
+ 2: "dim",
+ 3: "italic",
+ 4: "underline",
+ 7: "reverse",
+ 9: "strikethrough"
+};
+
+// src/parser.ts
+function findSequence(value, position) {
+ const nextEscape = value.indexOf("\x1B", position);
+ if (nextEscape !== -1) {
+ if (value[nextEscape + 1] === "[") {
+ const nextClose = value.indexOf("m", nextEscape);
+ return {
+ sequence: value.substring(nextEscape + 2, nextClose).split(";"),
+ startPosition: nextEscape,
+ position: nextClose + 1
+ };
+ }
+ }
+ return {
+ position: value.length
+ };
+}
+function parseColor(sequence) {
+ const colorMode = sequence.shift();
+ if (colorMode === "2") {
+ const rgb = sequence.splice(0, 3).map((x) => Number.parseInt(x));
+ if (rgb.length !== 3 || rgb.some((x) => Number.isNaN(x)))
+ return;
+ return {
+ type: "rgb",
+ rgb
+ };
+ } else if (colorMode === "5") {
+ const index = sequence.shift();
+ if (index) {
+ return { type: "table", index: Number(index) };
+ }
+ }
+}
+function parseSequence(sequence) {
+ const commands = [];
+ while (sequence.length > 0) {
+ const code = sequence.shift();
+ if (!code)
+ continue;
+ const codeInt = Number.parseInt(code);
+ if (Number.isNaN(codeInt))
+ continue;
+ if (codeInt === 0) {
+ commands.push({ type: "resetAll" });
+ } else if (codeInt <= 9) {
+ const decoration = decorations[codeInt];
+ if (decoration) {
+ commands.push({
+ type: "setDecoration",
+ value: decorations[codeInt]
+ });
+ }
+ } else if (codeInt <= 29) {
+ const decoration = decorations[codeInt - 20];
+ if (decoration) {
+ commands.push({
+ type: "resetDecoration",
+ value: decoration
+ });
+ }
+ } else if (codeInt <= 37) {
+ commands.push({
+ type: "setForegroundColor",
+ value: { type: "named", name: namedColors[codeInt - 30] }
+ });
+ } else if (codeInt === 38) {
+ const color = parseColor(sequence);
+ if (color) {
+ commands.push({
+ type: "setForegroundColor",
+ value: color
+ });
+ }
+ } else if (codeInt === 39) {
+ commands.push({
+ type: "resetForegroundColor"
+ });
+ } else if (codeInt <= 47) {
+ commands.push({
+ type: "setBackgroundColor",
+ value: { type: "named", name: namedColors[codeInt - 40] }
+ });
+ } else if (codeInt === 48) {
+ const color = parseColor(sequence);
+ if (color) {
+ commands.push({
+ type: "setBackgroundColor",
+ value: color
+ });
+ }
+ } else if (codeInt === 49) {
+ commands.push({
+ type: "resetBackgroundColor"
+ });
+ } else if (codeInt >= 90 && codeInt <= 97) {
+ commands.push({
+ type: "setForegroundColor",
+ value: { type: "named", name: namedColors[codeInt - 90 + 8] }
+ });
+ } else if (codeInt >= 100 && codeInt <= 107) {
+ commands.push({
+ type: "setBackgroundColor",
+ value: { type: "named", name: namedColors[codeInt - 100 + 8] }
+ });
+ }
+ }
+ return commands;
+}
+function createAnsiSequenceParser() {
+ let foreground = null;
+ let background = null;
+ let decorations2 = /* @__PURE__ */ new Set();
+ return {
+ parse(value) {
+ const tokens = [];
+ let position = 0;
+ do {
+ const findResult = findSequence(value, position);
+ const text = findResult.sequence ? value.substring(position, findResult.startPosition) : value.substring(position);
+ if (text.length > 0) {
+ tokens.push({
+ value: text,
+ foreground,
+ background,
+ decorations: new Set(decorations2)
+ });
+ }
+ if (findResult.sequence) {
+ const commands = parseSequence(findResult.sequence);
+ for (const styleToken of commands) {
+ if (styleToken.type === "resetAll") {
+ foreground = null;
+ background = null;
+ decorations2.clear();
+ } else if (styleToken.type === "resetForegroundColor") {
+ foreground = null;
+ } else if (styleToken.type === "resetBackgroundColor") {
+ background = null;
+ } else if (styleToken.type === "resetDecoration") {
+ decorations2.delete(styleToken.value);
+ }
+ }
+ for (const styleToken of commands) {
+ if (styleToken.type === "setForegroundColor") {
+ foreground = styleToken.value;
+ } else if (styleToken.type === "setBackgroundColor") {
+ background = styleToken.value;
+ } else if (styleToken.type === "setDecoration") {
+ decorations2.add(styleToken.value);
+ }
+ }
+ }
+ position = findResult.position;
+ } while (position < value.length);
+ return tokens;
+ }
+ };
+}
+function parseAnsiSequences(value) {
+ return createAnsiSequenceParser().parse(value);
+}
+
+// src/palette.ts
+var defaultNamedColorsMap = {
+ black: "#000000",
+ red: "#bb0000",
+ green: "#00bb00",
+ yellow: "#bbbb00",
+ blue: "#0000bb",
+ magenta: "#ff00ff",
+ cyan: "#00bbbb",
+ white: "#eeeeee",
+ brightBlack: "#555555",
+ brightRed: "#ff5555",
+ brightGreen: "#00ff00",
+ brightYellow: "#ffff55",
+ brightBlue: "#5555ff",
+ brightMagenta: "#ff55ff",
+ brightCyan: "#55ffff",
+ brightWhite: "#ffffff"
+};
+function createColorPalette(namedColorsMap = defaultNamedColorsMap) {
+ function namedColor(name) {
+ return namedColorsMap[name];
+ }
+ function rgbColor(rgb) {
+ return `#${rgb.map((x) => Math.max(0, Math.min(x, 255)).toString(16).padStart(2, "0")).join("")}`;
+ }
+ let colorTable;
+ function getColorTable() {
+ if (colorTable) {
+ return colorTable;
+ }
+ colorTable = [];
+ for (let i = 0; i < namedColors.length; i++) {
+ colorTable.push(namedColor(namedColors[i]));
+ }
+ let levels = [0, 95, 135, 175, 215, 255];
+ for (let r = 0; r < 6; r++) {
+ for (let g = 0; g < 6; g++) {
+ for (let b = 0; b < 6; b++) {
+ colorTable.push(rgbColor([levels[r], levels[g], levels[b]]));
+ }
+ }
+ }
+ let level = 8;
+ for (let i = 0; i < 24; i++, level += 10) {
+ colorTable.push(rgbColor([level, level, level]));
+ }
+ return colorTable;
+ }
+ function tableColor(index) {
+ return getColorTable()[index];
+ }
+ function value(color) {
+ switch (color.type) {
+ case "named":
+ return namedColor(color.name);
+ case "rgb":
+ return rgbColor(color.rgb);
+ case "table":
+ return tableColor(color.index);
+ }
+ }
+ return {
+ value
+ };
+}
+// Annotate the CommonJS export names for ESM import in node:
+0 && (module.exports = {
+ createAnsiSequenceParser,
+ createColorPalette,
+ decorations,
+ defaultNamedColorsMap,
+ namedColors,
+ parseAnsiSequences
+});
diff --git a/node_modules/ansi-sequence-parser/dist/index.d.ts b/node_modules/ansi-sequence-parser/dist/index.d.ts
new file mode 100644
index 0000000..d8a9aa8
--- /dev/null
+++ b/node_modules/ansi-sequence-parser/dist/index.d.ts
@@ -0,0 +1,60 @@
+declare const namedColors: readonly ["black", "red", "green", "yellow", "blue", "magenta", "cyan", "white", "brightBlack", "brightRed", "brightGreen", "brightYellow", "brightBlue", "brightMagenta", "brightCyan", "brightWhite"];
+type ColorName = typeof namedColors[number];
+interface NamedColor {
+ type: 'named';
+ name: ColorName;
+}
+interface TableColor {
+ type: 'table';
+ index: number;
+}
+interface RgbColor {
+ type: 'rgb';
+ rgb: [number, number, number];
+}
+type Color = NamedColor | TableColor | RgbColor;
+
+declare const decorations: {
+ readonly 1: "bold";
+ readonly 2: "dim";
+ readonly 3: "italic";
+ readonly 4: "underline";
+ readonly 7: "reverse";
+ readonly 9: "strikethrough";
+};
+type DecorationType = typeof decorations[keyof typeof decorations];
+
+interface ParseToken {
+ value: string;
+ foreground: Color | null;
+ background: Color | null;
+ decorations: Set<DecorationType>;
+}
+declare function createAnsiSequenceParser(): {
+ parse(value: string): ParseToken[];
+};
+declare function parseAnsiSequences(value: string): ParseToken[];
+
+declare const defaultNamedColorsMap: {
+ readonly black: "#000000";
+ readonly red: "#bb0000";
+ readonly green: "#00bb00";
+ readonly yellow: "#bbbb00";
+ readonly blue: "#0000bb";
+ readonly magenta: "#ff00ff";
+ readonly cyan: "#00bbbb";
+ readonly white: "#eeeeee";
+ readonly brightBlack: "#555555";
+ readonly brightRed: "#ff5555";
+ readonly brightGreen: "#00ff00";
+ readonly brightYellow: "#ffff55";
+ readonly brightBlue: "#5555ff";
+ readonly brightMagenta: "#ff55ff";
+ readonly brightCyan: "#55ffff";
+ readonly brightWhite: "#ffffff";
+};
+declare function createColorPalette(namedColorsMap?: Record<ColorName, string>): {
+ value: (color: Color) => string;
+};
+
+export { Color, ColorName, DecorationType, NamedColor, ParseToken, RgbColor, TableColor, createAnsiSequenceParser, createColorPalette, decorations, defaultNamedColorsMap, namedColors, parseAnsiSequences };
diff --git a/node_modules/ansi-sequence-parser/dist/index.js b/node_modules/ansi-sequence-parser/dist/index.js
new file mode 100644
index 0000000..43b8029
--- /dev/null
+++ b/node_modules/ansi-sequence-parser/dist/index.js
@@ -0,0 +1,267 @@
+// src/colors.ts
+var namedColors = [
+ "black",
+ "red",
+ "green",
+ "yellow",
+ "blue",
+ "magenta",
+ "cyan",
+ "white",
+ "brightBlack",
+ "brightRed",
+ "brightGreen",
+ "brightYellow",
+ "brightBlue",
+ "brightMagenta",
+ "brightCyan",
+ "brightWhite"
+];
+
+// src/decorations.ts
+var decorations = {
+ 1: "bold",
+ 2: "dim",
+ 3: "italic",
+ 4: "underline",
+ 7: "reverse",
+ 9: "strikethrough"
+};
+
+// src/parser.ts
+function findSequence(value, position) {
+ const nextEscape = value.indexOf("\x1B", position);
+ if (nextEscape !== -1) {
+ if (value[nextEscape + 1] === "[") {
+ const nextClose = value.indexOf("m", nextEscape);
+ return {
+ sequence: value.substring(nextEscape + 2, nextClose).split(";"),
+ startPosition: nextEscape,
+ position: nextClose + 1
+ };
+ }
+ }
+ return {
+ position: value.length
+ };
+}
+function parseColor(sequence) {
+ const colorMode = sequence.shift();
+ if (colorMode === "2") {
+ const rgb = sequence.splice(0, 3).map((x) => Number.parseInt(x));
+ if (rgb.length !== 3 || rgb.some((x) => Number.isNaN(x)))
+ return;
+ return {
+ type: "rgb",
+ rgb
+ };
+ } else if (colorMode === "5") {
+ const index = sequence.shift();
+ if (index) {
+ return { type: "table", index: Number(index) };
+ }
+ }
+}
+function parseSequence(sequence) {
+ const commands = [];
+ while (sequence.length > 0) {
+ const code = sequence.shift();
+ if (!code)
+ continue;
+ const codeInt = Number.parseInt(code);
+ if (Number.isNaN(codeInt))
+ continue;
+ if (codeInt === 0) {
+ commands.push({ type: "resetAll" });
+ } else if (codeInt <= 9) {
+ const decoration = decorations[codeInt];
+ if (decoration) {
+ commands.push({
+ type: "setDecoration",
+ value: decorations[codeInt]
+ });
+ }
+ } else if (codeInt <= 29) {
+ const decoration = decorations[codeInt - 20];
+ if (decoration) {
+ commands.push({
+ type: "resetDecoration",
+ value: decoration
+ });
+ }
+ } else if (codeInt <= 37) {
+ commands.push({
+ type: "setForegroundColor",
+ value: { type: "named", name: namedColors[codeInt - 30] }
+ });
+ } else if (codeInt === 38) {
+ const color = parseColor(sequence);
+ if (color) {
+ commands.push({
+ type: "setForegroundColor",
+ value: color
+ });
+ }
+ } else if (codeInt === 39) {
+ commands.push({
+ type: "resetForegroundColor"
+ });
+ } else if (codeInt <= 47) {
+ commands.push({
+ type: "setBackgroundColor",
+ value: { type: "named", name: namedColors[codeInt - 40] }
+ });
+ } else if (codeInt === 48) {
+ const color = parseColor(sequence);
+ if (color) {
+ commands.push({
+ type: "setBackgroundColor",
+ value: color
+ });
+ }
+ } else if (codeInt === 49) {
+ commands.push({
+ type: "resetBackgroundColor"
+ });
+ } else if (codeInt >= 90 && codeInt <= 97) {
+ commands.push({
+ type: "setForegroundColor",
+ value: { type: "named", name: namedColors[codeInt - 90 + 8] }
+ });
+ } else if (codeInt >= 100 && codeInt <= 107) {
+ commands.push({
+ type: "setBackgroundColor",
+ value: { type: "named", name: namedColors[codeInt - 100 + 8] }
+ });
+ }
+ }
+ return commands;
+}
+function createAnsiSequenceParser() {
+ let foreground = null;
+ let background = null;
+ let decorations2 = /* @__PURE__ */ new Set();
+ return {
+ parse(value) {
+ const tokens = [];
+ let position = 0;
+ do {
+ const findResult = findSequence(value, position);
+ const text = findResult.sequence ? value.substring(position, findResult.startPosition) : value.substring(position);
+ if (text.length > 0) {
+ tokens.push({
+ value: text,
+ foreground,
+ background,
+ decorations: new Set(decorations2)
+ });
+ }
+ if (findResult.sequence) {
+ const commands = parseSequence(findResult.sequence);
+ for (const styleToken of commands) {
+ if (styleToken.type === "resetAll") {
+ foreground = null;
+ background = null;
+ decorations2.clear();
+ } else if (styleToken.type === "resetForegroundColor") {
+ foreground = null;
+ } else if (styleToken.type === "resetBackgroundColor") {
+ background = null;
+ } else if (styleToken.type === "resetDecoration") {
+ decorations2.delete(styleToken.value);
+ }
+ }
+ for (const styleToken of commands) {
+ if (styleToken.type === "setForegroundColor") {
+ foreground = styleToken.value;
+ } else if (styleToken.type === "setBackgroundColor") {
+ background = styleToken.value;
+ } else if (styleToken.type === "setDecoration") {
+ decorations2.add(styleToken.value);
+ }
+ }
+ }
+ position = findResult.position;
+ } while (position < value.length);
+ return tokens;
+ }
+ };
+}
+function parseAnsiSequences(value) {
+ return createAnsiSequenceParser().parse(value);
+}
+
+// src/palette.ts
+var defaultNamedColorsMap = {
+ black: "#000000",
+ red: "#bb0000",
+ green: "#00bb00",
+ yellow: "#bbbb00",
+ blue: "#0000bb",
+ magenta: "#ff00ff",
+ cyan: "#00bbbb",
+ white: "#eeeeee",
+ brightBlack: "#555555",
+ brightRed: "#ff5555",
+ brightGreen: "#00ff00",
+ brightYellow: "#ffff55",
+ brightBlue: "#5555ff",
+ brightMagenta: "#ff55ff",
+ brightCyan: "#55ffff",
+ brightWhite: "#ffffff"
+};
+function createColorPalette(namedColorsMap = defaultNamedColorsMap) {
+ function namedColor(name) {
+ return namedColorsMap[name];
+ }
+ function rgbColor(rgb) {
+ return `#${rgb.map((x) => Math.max(0, Math.min(x, 255)).toString(16).padStart(2, "0")).join("")}`;
+ }
+ let colorTable;
+ function getColorTable() {
+ if (colorTable) {
+ return colorTable;
+ }
+ colorTable = [];
+ for (let i = 0; i < namedColors.length; i++) {
+ colorTable.push(namedColor(namedColors[i]));
+ }
+ let levels = [0, 95, 135, 175, 215, 255];
+ for (let r = 0; r < 6; r++) {
+ for (let g = 0; g < 6; g++) {
+ for (let b = 0; b < 6; b++) {
+ colorTable.push(rgbColor([levels[r], levels[g], levels[b]]));
+ }
+ }
+ }
+ let level = 8;
+ for (let i = 0; i < 24; i++, level += 10) {
+ colorTable.push(rgbColor([level, level, level]));
+ }
+ return colorTable;
+ }
+ function tableColor(index) {
+ return getColorTable()[index];
+ }
+ function value(color) {
+ switch (color.type) {
+ case "named":
+ return namedColor(color.name);
+ case "rgb":
+ return rgbColor(color.rgb);
+ case "table":
+ return tableColor(color.index);
+ }
+ }
+ return {
+ value
+ };
+}
+export {
+ createAnsiSequenceParser,
+ createColorPalette,
+ decorations,
+ defaultNamedColorsMap,
+ namedColors,
+ parseAnsiSequences
+};
diff --git a/node_modules/ansi-sequence-parser/package.json b/node_modules/ansi-sequence-parser/package.json
new file mode 100644
index 0000000..9069bfd
--- /dev/null
+++ b/node_modules/ansi-sequence-parser/package.json
@@ -0,0 +1,42 @@
+{
+ "name": "ansi-sequence-parser",
+ "description": "A parser for ANSI escape sequences",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/blake-mealey/ansi-sequence-parser.git"
+ },
+ "homepage": "https://github.com/blake-mealey/ansi-sequence-parser#readme",
+ "version": "1.1.0",
+ "type": "module",
+ "main": "./dist/index.js",
+ "types": "./dist/index.d.ts",
+ "exports": {
+ ".": {
+ "require": "./dist/index.cjs",
+ "import": "./dist/index.js"
+ }
+ },
+ "files": [
+ "dist",
+ "CHANGELOG.md",
+ "README.md"
+ ],
+ "keywords": [
+ "ansi",
+ "sequences",
+ "parser"
+ ],
+ "author": "blake-mealey",
+ "license": "MIT",
+ "devDependencies": {
+ "@changesets/cli": "^2.26.0",
+ "tsup": "^6.5.0",
+ "typescript": "^4.9.4",
+ "vitest": "^0.28.3"
+ },
+ "scripts": {
+ "build": "tsup src/index.ts --format cjs,esm --dts --clean",
+ "test": "vitest",
+ "changeset": "changeset"
+ }
+} \ No newline at end of file
diff --git a/node_modules/balanced-match/.github/FUNDING.yml b/node_modules/balanced-match/.github/FUNDING.yml
new file mode 100644
index 0000000..cea8b16
--- /dev/null
+++ b/node_modules/balanced-match/.github/FUNDING.yml
@@ -0,0 +1,2 @@
+tidelift: "npm/balanced-match"
+patreon: juliangruber
diff --git a/node_modules/balanced-match/LICENSE.md b/node_modules/balanced-match/LICENSE.md
new file mode 100644
index 0000000..2cdc8e4
--- /dev/null
+++ b/node_modules/balanced-match/LICENSE.md
@@ -0,0 +1,21 @@
+(MIT)
+
+Copyright (c) 2013 Julian Gruber &lt;julian@juliangruber.com&gt;
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/balanced-match/README.md b/node_modules/balanced-match/README.md
new file mode 100644
index 0000000..d2a48b6
--- /dev/null
+++ b/node_modules/balanced-match/README.md
@@ -0,0 +1,97 @@
+# balanced-match
+
+Match balanced string pairs, like `{` and `}` or `<b>` and `</b>`. Supports regular expressions as well!
+
+[![build status](https://secure.travis-ci.org/juliangruber/balanced-match.svg)](http://travis-ci.org/juliangruber/balanced-match)
+[![downloads](https://img.shields.io/npm/dm/balanced-match.svg)](https://www.npmjs.org/package/balanced-match)
+
+[![testling badge](https://ci.testling.com/juliangruber/balanced-match.png)](https://ci.testling.com/juliangruber/balanced-match)
+
+## Example
+
+Get the first matching pair of braces:
+
+```js
+var balanced = require('balanced-match');
+
+console.log(balanced('{', '}', 'pre{in{nested}}post'));
+console.log(balanced('{', '}', 'pre{first}between{second}post'));
+console.log(balanced(/\s+\{\s+/, /\s+\}\s+/, 'pre { in{nest} } post'));
+```
+
+The matches are:
+
+```bash
+$ node example.js
+{ start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' }
+{ start: 3,
+ end: 9,
+ pre: 'pre',
+ body: 'first',
+ post: 'between{second}post' }
+{ start: 3, end: 17, pre: 'pre', body: 'in{nest}', post: 'post' }
+```
+
+## API
+
+### var m = balanced(a, b, str)
+
+For the first non-nested matching pair of `a` and `b` in `str`, return an
+object with those keys:
+
+* **start** the index of the first match of `a`
+* **end** the index of the matching `b`
+* **pre** the preamble, `a` and `b` not included
+* **body** the match, `a` and `b` not included
+* **post** the postscript, `a` and `b` not included
+
+If there's no match, `undefined` will be returned.
+
+If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']` and `{a}}` will match `['', 'a', '}']`.
+
+### var r = balanced.range(a, b, str)
+
+For the first non-nested matching pair of `a` and `b` in `str`, return an
+array with indexes: `[ <a index>, <b index> ]`.
+
+If there's no match, `undefined` will be returned.
+
+If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]` and `{a}}` will match `[0, 2]`.
+
+## Installation
+
+With [npm](https://npmjs.org) do:
+
+```bash
+npm install balanced-match
+```
+
+## Security contact information
+
+To report a security vulnerability, please use the
+[Tidelift security contact](https://tidelift.com/security).
+Tidelift will coordinate the fix and disclosure.
+
+## License
+
+(MIT)
+
+Copyright (c) 2013 Julian Gruber &lt;julian@juliangruber.com&gt;
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/balanced-match/index.js b/node_modules/balanced-match/index.js
new file mode 100644
index 0000000..c67a646
--- /dev/null
+++ b/node_modules/balanced-match/index.js
@@ -0,0 +1,62 @@
+'use strict';
+module.exports = balanced;
+function balanced(a, b, str) {
+ if (a instanceof RegExp) a = maybeMatch(a, str);
+ if (b instanceof RegExp) b = maybeMatch(b, str);
+
+ var r = range(a, b, str);
+
+ return r && {
+ start: r[0],
+ end: r[1],
+ pre: str.slice(0, r[0]),
+ body: str.slice(r[0] + a.length, r[1]),
+ post: str.slice(r[1] + b.length)
+ };
+}
+
+function maybeMatch(reg, str) {
+ var m = str.match(reg);
+ return m ? m[0] : null;
+}
+
+balanced.range = range;
+function range(a, b, str) {
+ var begs, beg, left, right, result;
+ var ai = str.indexOf(a);
+ var bi = str.indexOf(b, ai + 1);
+ var i = ai;
+
+ if (ai >= 0 && bi > 0) {
+ if(a===b) {
+ return [ai, bi];
+ }
+ begs = [];
+ left = str.length;
+
+ while (i >= 0 && !result) {
+ if (i == ai) {
+ begs.push(i);
+ ai = str.indexOf(a, i + 1);
+ } else if (begs.length == 1) {
+ result = [ begs.pop(), bi ];
+ } else {
+ beg = begs.pop();
+ if (beg < left) {
+ left = beg;
+ right = bi;
+ }
+
+ bi = str.indexOf(b, i + 1);
+ }
+
+ i = ai < bi && ai >= 0 ? ai : bi;
+ }
+
+ if (begs.length) {
+ result = [ left, right ];
+ }
+ }
+
+ return result;
+}
diff --git a/node_modules/balanced-match/package.json b/node_modules/balanced-match/package.json
new file mode 100644
index 0000000..ce6073e
--- /dev/null
+++ b/node_modules/balanced-match/package.json
@@ -0,0 +1,48 @@
+{
+ "name": "balanced-match",
+ "description": "Match balanced character pairs, like \"{\" and \"}\"",
+ "version": "1.0.2",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/juliangruber/balanced-match.git"
+ },
+ "homepage": "https://github.com/juliangruber/balanced-match",
+ "main": "index.js",
+ "scripts": {
+ "test": "tape test/test.js",
+ "bench": "matcha test/bench.js"
+ },
+ "devDependencies": {
+ "matcha": "^0.7.0",
+ "tape": "^4.6.0"
+ },
+ "keywords": [
+ "match",
+ "regexp",
+ "test",
+ "balanced",
+ "parse"
+ ],
+ "author": {
+ "name": "Julian Gruber",
+ "email": "mail@juliangruber.com",
+ "url": "http://juliangruber.com"
+ },
+ "license": "MIT",
+ "testling": {
+ "files": "test/*.js",
+ "browsers": [
+ "ie/8..latest",
+ "firefox/20..latest",
+ "firefox/nightly",
+ "chrome/25..latest",
+ "chrome/canary",
+ "opera/12..latest",
+ "opera/next",
+ "safari/5.1..latest",
+ "ipad/6.0..latest",
+ "iphone/6.0..latest",
+ "android-browser/4.2..latest"
+ ]
+ }
+}
diff --git a/node_modules/brace-expansion/.github/FUNDING.yml b/node_modules/brace-expansion/.github/FUNDING.yml
new file mode 100644
index 0000000..79d1eaf
--- /dev/null
+++ b/node_modules/brace-expansion/.github/FUNDING.yml
@@ -0,0 +1,2 @@
+tidelift: "npm/brace-expansion"
+patreon: juliangruber
diff --git a/node_modules/brace-expansion/LICENSE b/node_modules/brace-expansion/LICENSE
new file mode 100644
index 0000000..de32266
--- /dev/null
+++ b/node_modules/brace-expansion/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/brace-expansion/README.md b/node_modules/brace-expansion/README.md
new file mode 100644
index 0000000..e55c583
--- /dev/null
+++ b/node_modules/brace-expansion/README.md
@@ -0,0 +1,135 @@
+# brace-expansion
+
+[Brace expansion](https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html),
+as known from sh/bash, in JavaScript.
+
+[![build status](https://secure.travis-ci.org/juliangruber/brace-expansion.svg)](http://travis-ci.org/juliangruber/brace-expansion)
+[![downloads](https://img.shields.io/npm/dm/brace-expansion.svg)](https://www.npmjs.org/package/brace-expansion)
+[![Greenkeeper badge](https://badges.greenkeeper.io/juliangruber/brace-expansion.svg)](https://greenkeeper.io/)
+
+[![testling badge](https://ci.testling.com/juliangruber/brace-expansion.png)](https://ci.testling.com/juliangruber/brace-expansion)
+
+## Example
+
+```js
+var expand = require('brace-expansion');
+
+expand('file-{a,b,c}.jpg')
+// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg']
+
+expand('-v{,,}')
+// => ['-v', '-v', '-v']
+
+expand('file{0..2}.jpg')
+// => ['file0.jpg', 'file1.jpg', 'file2.jpg']
+
+expand('file-{a..c}.jpg')
+// => ['file-a.jpg', 'file-b.jpg', 'file-c.jpg']
+
+expand('file{2..0}.jpg')
+// => ['file2.jpg', 'file1.jpg', 'file0.jpg']
+
+expand('file{0..4..2}.jpg')
+// => ['file0.jpg', 'file2.jpg', 'file4.jpg']
+
+expand('file-{a..e..2}.jpg')
+// => ['file-a.jpg', 'file-c.jpg', 'file-e.jpg']
+
+expand('file{00..10..5}.jpg')
+// => ['file00.jpg', 'file05.jpg', 'file10.jpg']
+
+expand('{{A..C},{a..c}}')
+// => ['A', 'B', 'C', 'a', 'b', 'c']
+
+expand('ppp{,config,oe{,conf}}')
+// => ['ppp', 'pppconfig', 'pppoe', 'pppoeconf']
+```
+
+## API
+
+```js
+var expand = require('brace-expansion');
+```
+
+### var expanded = expand(str)
+
+Return an array of all possible and valid expansions of `str`. If none are
+found, `[str]` is returned.
+
+Valid expansions are:
+
+```js
+/^(.*,)+(.+)?$/
+// {a,b,...}
+```
+
+A comma separated list of options, like `{a,b}` or `{a,{b,c}}` or `{,a,}`.
+
+```js
+/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/
+// {x..y[..incr]}
+```
+
+A numeric sequence from `x` to `y` inclusive, with optional increment.
+If `x` or `y` start with a leading `0`, all the numbers will be padded
+to have equal length. Negative numbers and backwards iteration work too.
+
+```js
+/^-?\d+\.\.-?\d+(\.\.-?\d+)?$/
+// {x..y[..incr]}
+```
+
+An alphabetic sequence from `x` to `y` inclusive, with optional increment.
+`x` and `y` must be exactly one character, and if given, `incr` must be a
+number.
+
+For compatibility reasons, the string `${` is not eligible for brace expansion.
+
+## Installation
+
+With [npm](https://npmjs.org) do:
+
+```bash
+npm install brace-expansion
+```
+
+## Contributors
+
+- [Julian Gruber](https://github.com/juliangruber)
+- [Isaac Z. Schlueter](https://github.com/isaacs)
+
+## Sponsors
+
+This module is proudly supported by my [Sponsors](https://github.com/juliangruber/sponsors)!
+
+Do you want to support modules like this to improve their quality, stability and weigh in on new features? Then please consider donating to my [Patreon](https://www.patreon.com/juliangruber). Not sure how much of my modules you're using? Try [feross/thanks](https://github.com/feross/thanks)!
+
+## Security contact information
+
+To report a security vulnerability, please use the
+[Tidelift security contact](https://tidelift.com/security).
+Tidelift will coordinate the fix and disclosure.
+
+## License
+
+(MIT)
+
+Copyright (c) 2013 Julian Gruber &lt;julian@juliangruber.com&gt;
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/brace-expansion/index.js b/node_modules/brace-expansion/index.js
new file mode 100644
index 0000000..4af9dde
--- /dev/null
+++ b/node_modules/brace-expansion/index.js
@@ -0,0 +1,203 @@
+var balanced = require('balanced-match');
+
+module.exports = expandTop;
+
+var escSlash = '\0SLASH'+Math.random()+'\0';
+var escOpen = '\0OPEN'+Math.random()+'\0';
+var escClose = '\0CLOSE'+Math.random()+'\0';
+var escComma = '\0COMMA'+Math.random()+'\0';
+var escPeriod = '\0PERIOD'+Math.random()+'\0';
+
+function numeric(str) {
+ return parseInt(str, 10) == str
+ ? parseInt(str, 10)
+ : str.charCodeAt(0);
+}
+
+function escapeBraces(str) {
+ return str.split('\\\\').join(escSlash)
+ .split('\\{').join(escOpen)
+ .split('\\}').join(escClose)
+ .split('\\,').join(escComma)
+ .split('\\.').join(escPeriod);
+}
+
+function unescapeBraces(str) {
+ return str.split(escSlash).join('\\')
+ .split(escOpen).join('{')
+ .split(escClose).join('}')
+ .split(escComma).join(',')
+ .split(escPeriod).join('.');
+}
+
+
+// Basically just str.split(","), but handling cases
+// where we have nested braced sections, which should be
+// treated as individual members, like {a,{b,c},d}
+function parseCommaParts(str) {
+ if (!str)
+ return [''];
+
+ var parts = [];
+ var m = balanced('{', '}', str);
+
+ if (!m)
+ return str.split(',');
+
+ var pre = m.pre;
+ var body = m.body;
+ var post = m.post;
+ var p = pre.split(',');
+
+ p[p.length-1] += '{' + body + '}';
+ var postParts = parseCommaParts(post);
+ if (post.length) {
+ p[p.length-1] += postParts.shift();
+ p.push.apply(p, postParts);
+ }
+
+ parts.push.apply(parts, p);
+
+ return parts;
+}
+
+function expandTop(str) {
+ if (!str)
+ return [];
+
+ // I don't know why Bash 4.3 does this, but it does.
+ // Anything starting with {} will have the first two bytes preserved
+ // but *only* at the top level, so {},a}b will not expand to anything,
+ // but a{},b}c will be expanded to [a}c,abc].
+ // One could argue that this is a bug in Bash, but since the goal of
+ // this module is to match Bash's rules, we escape a leading {}
+ if (str.substr(0, 2) === '{}') {
+ str = '\\{\\}' + str.substr(2);
+ }
+
+ return expand(escapeBraces(str), true).map(unescapeBraces);
+}
+
+function embrace(str) {
+ return '{' + str + '}';
+}
+function isPadded(el) {
+ return /^-?0\d/.test(el);
+}
+
+function lte(i, y) {
+ return i <= y;
+}
+function gte(i, y) {
+ return i >= y;
+}
+
+function expand(str, isTop) {
+ var expansions = [];
+
+ var m = balanced('{', '}', str);
+ if (!m) return [str];
+
+ // no need to expand pre, since it is guaranteed to be free of brace-sets
+ var pre = m.pre;
+ var post = m.post.length
+ ? expand(m.post, false)
+ : [''];
+
+ if (/\$$/.test(m.pre)) {
+ for (var k = 0; k < post.length; k++) {
+ var expansion = pre+ '{' + m.body + '}' + post[k];
+ expansions.push(expansion);
+ }
+ } else {
+ var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
+ var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
+ var isSequence = isNumericSequence || isAlphaSequence;
+ var isOptions = m.body.indexOf(',') >= 0;
+ if (!isSequence && !isOptions) {
+ // {a},b}
+ if (m.post.match(/,.*\}/)) {
+ str = m.pre + '{' + m.body + escClose + m.post;
+ return expand(str);
+ }
+ return [str];
+ }
+
+ var n;
+ if (isSequence) {
+ n = m.body.split(/\.\./);
+ } else {
+ n = parseCommaParts(m.body);
+ if (n.length === 1) {
+ // x{{a,b}}y ==> x{a}y x{b}y
+ n = expand(n[0], false).map(embrace);
+ if (n.length === 1) {
+ return post.map(function(p) {
+ return m.pre + n[0] + p;
+ });
+ }
+ }
+ }
+
+ // at this point, n is the parts, and we know it's not a comma set
+ // with a single entry.
+ var N;
+
+ if (isSequence) {
+ var x = numeric(n[0]);
+ var y = numeric(n[1]);
+ var width = Math.max(n[0].length, n[1].length)
+ var incr = n.length == 3
+ ? Math.abs(numeric(n[2]))
+ : 1;
+ var test = lte;
+ var reverse = y < x;
+ if (reverse) {
+ incr *= -1;
+ test = gte;
+ }
+ var pad = n.some(isPadded);
+
+ N = [];
+
+ for (var i = x; test(i, y); i += incr) {
+ var c;
+ if (isAlphaSequence) {
+ c = String.fromCharCode(i);
+ if (c === '\\')
+ c = '';
+ } else {
+ c = String(i);
+ if (pad) {
+ var need = width - c.length;
+ if (need > 0) {
+ var z = new Array(need + 1).join('0');
+ if (i < 0)
+ c = '-' + z + c.slice(1);
+ else
+ c = z + c;
+ }
+ }
+ }
+ N.push(c);
+ }
+ } else {
+ N = [];
+
+ for (var j = 0; j < n.length; j++) {
+ N.push.apply(N, expand(n[j], false));
+ }
+ }
+
+ for (var j = 0; j < N.length; j++) {
+ for (var k = 0; k < post.length; k++) {
+ var expansion = pre + N[j] + post[k];
+ if (!isTop || isSequence || expansion)
+ expansions.push(expansion);
+ }
+ }
+ }
+
+ return expansions;
+}
+
diff --git a/node_modules/brace-expansion/package.json b/node_modules/brace-expansion/package.json
new file mode 100644
index 0000000..7097d41
--- /dev/null
+++ b/node_modules/brace-expansion/package.json
@@ -0,0 +1,46 @@
+{
+ "name": "brace-expansion",
+ "description": "Brace expansion as known from sh/bash",
+ "version": "2.0.1",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/juliangruber/brace-expansion.git"
+ },
+ "homepage": "https://github.com/juliangruber/brace-expansion",
+ "main": "index.js",
+ "scripts": {
+ "test": "tape test/*.js",
+ "gentest": "bash test/generate.sh",
+ "bench": "matcha test/perf/bench.js"
+ },
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ },
+ "devDependencies": {
+ "@c4312/matcha": "^1.3.1",
+ "tape": "^4.6.0"
+ },
+ "keywords": [],
+ "author": {
+ "name": "Julian Gruber",
+ "email": "mail@juliangruber.com",
+ "url": "http://juliangruber.com"
+ },
+ "license": "MIT",
+ "testling": {
+ "files": "test/*.js",
+ "browsers": [
+ "ie/8..latest",
+ "firefox/20..latest",
+ "firefox/nightly",
+ "chrome/25..latest",
+ "chrome/canary",
+ "opera/12..latest",
+ "opera/next",
+ "safari/5.1..latest",
+ "ipad/6.0..latest",
+ "iphone/6.0..latest",
+ "android-browser/4.2..latest"
+ ]
+ }
+}
diff --git a/node_modules/jsonc-parser/CHANGELOG.md b/node_modules/jsonc-parser/CHANGELOG.md
new file mode 100644
index 0000000..b43a083
--- /dev/null
+++ b/node_modules/jsonc-parser/CHANGELOG.md
@@ -0,0 +1,72 @@
+
+3.2.0 2022-08-30
+=================
+- update the version of the bundled Javascript files to `es2020`.
+- include all `const enum` values in the bundled JavaScript files (`ScanError`, `SyntaxKind`, `ParseErrorCode`).
+
+3.1.0 2022-07-07
+==================
+ * added new API `FormattingOptions.keepLines` : It leaves the initial line positions in the formatting.
+
+3.0.0 2020-11-13
+==================
+ * fixed API spec for `parseTree`. Can return `undefine` for empty input.
+ * added new API `FormattingOptions.insertFinalNewline`.
+
+
+2.3.0 2020-07-03
+==================
+ * new API `ModificationOptions.isArrayInsertion`: If `JSONPath` refers to an index of an array and `isArrayInsertion` is `true`, then `modify` will insert a new item at that location instead of overwriting its contents.
+ * `ModificationOptions.formattingOptions` is now optional. If not set, newly inserted content will not be formatted.
+
+
+2.2.0 2019-10-25
+==================
+ * added `ParseOptions.allowEmptyContent`. Default is `false`.
+ * new API `getNodeType`: Returns the type of a value returned by parse.
+ * `parse`: Fix issue with empty property name
+
+2.1.0 2019-03-29
+==================
+ * `JSONScanner` and `JSONVisitor` return lineNumber / character.
+
+2.0.0 2018-04-12
+==================
+ * renamed `Node.columnOffset` to `Node.colonOffset`
+ * new API `getNodePath`: Gets the JSON path of the given JSON DOM node
+ * new API `findNodeAtOffset`: Finds the most inner node at the given offset. If `includeRightBound` is set, also finds nodes that end at the given offset.
+
+1.0.3 2018-03-07
+==================
+ * provide ems modules
+
+1.0.2 2018-03-05
+==================
+ * added the `visit.onComment` API, reported when comments are allowed.
+ * added the `ParseErrorCode.InvalidCommentToken` enum value, reported when comments are disallowed.
+
+1.0.1
+==================
+ * added the `format` API: computes edits to format a JSON document.
+ * added the `modify` API: computes edits to insert, remove or replace a property or value in a JSON document.
+ * added the `allyEdits` API: applies edits to a document
+
+1.0.0
+==================
+ * remove nls dependency (remove `getParseErrorMessage`)
+
+0.4.2 / 2017-05-05
+==================
+ * added `ParseError.offset` & `ParseError.length`
+
+0.4.1 / 2017-04-02
+==================
+ * added `ParseOptions.allowTrailingComma`
+
+0.4.0 / 2017-02-23
+==================
+ * fix for `getLocation`. Now `getLocation` inside an object will always return a property from inside that property. Can be empty string if the object has no properties or if the offset is before a actual property `{ "a": { | }} will return location ['a', ' ']`
+
+0.3.0 / 2017-01-17
+==================
+ * Updating to typescript 2.0 \ No newline at end of file
diff --git a/node_modules/jsonc-parser/LICENSE.md b/node_modules/jsonc-parser/LICENSE.md
new file mode 100644
index 0000000..1c65de1
--- /dev/null
+++ b/node_modules/jsonc-parser/LICENSE.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Microsoft
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/jsonc-parser/README.md b/node_modules/jsonc-parser/README.md
new file mode 100644
index 0000000..7440435
--- /dev/null
+++ b/node_modules/jsonc-parser/README.md
@@ -0,0 +1,361 @@
+# jsonc-parser
+Scanner and parser for JSON with comments.
+
+[![npm Package](https://img.shields.io/npm/v/jsonc-parser.svg?style=flat-square)](https://www.npmjs.org/package/jsonc-parser)
+[![NPM Downloads](https://img.shields.io/npm/dm/jsonc-parser.svg)](https://npmjs.org/package/jsonc-parser)
+[![Build Status](https://travis-ci.org/microsoft/node-jsonc-parser.svg?branch=main)](https://travis-ci.org/Microsoft/node-jsonc-parser)
+
+Why?
+----
+JSONC is JSON with JavaScript style comments. This node module provides a scanner and fault tolerant parser that can process JSONC but is also useful for standard JSON.
+ - the *scanner* tokenizes the input string into tokens and token offsets
+ - the *visit* function implements a 'SAX' style parser with callbacks for the encountered properties and values.
+ - the *parseTree* function computes a hierarchical DOM with offsets representing the encountered properties and values.
+ - the *parse* function evaluates the JavaScript object represented by JSON string in a fault tolerant fashion.
+ - the *getLocation* API returns a location object that describes the property or value located at a given offset in a JSON document.
+ - the *findNodeAtLocation* API finds the node at a given location path in a JSON DOM.
+ - the *format* API computes edits to format a JSON document.
+ - the *modify* API computes edits to insert, remove or replace a property or value in a JSON document.
+ - the *applyEdits* API applies edits to a document.
+
+Installation
+------------
+
+```
+npm install --save jsonc-parser
+```
+
+API
+---
+
+### Scanner:
+```typescript
+
+/**
+ * Creates a JSON scanner on the given text.
+ * If ignoreTrivia is set, whitespaces or comments are ignored.
+ */
+export function createScanner(text: string, ignoreTrivia: boolean = false): JSONScanner;
+
+/**
+ * The scanner object, representing a JSON scanner at a position in the input string.
+ */
+export interface JSONScanner {
+ /**
+ * Sets the scan position to a new offset. A call to 'scan' is needed to get the first token.
+ */
+ setPosition(pos: number): any;
+ /**
+ * Read the next token. Returns the token code.
+ */
+ scan(): SyntaxKind;
+ /**
+ * Returns the zero-based current scan position, which is after the last read token.
+ */
+ getPosition(): number;
+ /**
+ * Returns the last read token.
+ */
+ getToken(): SyntaxKind;
+ /**
+ * Returns the last read token value. The value for strings is the decoded string content. For numbers it's of type number, for boolean it's true or false.
+ */
+ getTokenValue(): string;
+ /**
+ * The zero-based start offset of the last read token.
+ */
+ getTokenOffset(): number;
+ /**
+ * The length of the last read token.
+ */
+ getTokenLength(): number;
+ /**
+ * The zero-based start line number of the last read token.
+ */
+ getTokenStartLine(): number;
+ /**
+ * The zero-based start character (column) of the last read token.
+ */
+ getTokenStartCharacter(): number;
+ /**
+ * An error code of the last scan.
+ */
+ getTokenError(): ScanError;
+}
+```
+
+### Parser:
+```typescript
+
+export interface ParseOptions {
+ disallowComments?: boolean;
+ allowTrailingComma?: boolean;
+ allowEmptyContent?: boolean;
+}
+/**
+ * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ * Therefore always check the errors list to find out if the input was valid.
+ */
+export declare function parse(text: string, errors?: {error: ParseErrorCode;}[], options?: ParseOptions): any;
+
+/**
+ * Parses the given text and invokes the visitor functions for each object, array and literal reached.
+ */
+export declare function visit(text: string, visitor: JSONVisitor, options?: ParseOptions): any;
+
+/**
+ * Visitor called by {@linkcode visit} when parsing JSON.
+ *
+ * The visitor functions have the following common parameters:
+ * - `offset`: Global offset within the JSON document, starting at 0
+ * - `startLine`: Line number, starting at 0
+ * - `startCharacter`: Start character (column) within the current line, starting at 0
+ *
+ * Additionally some functions have a `pathSupplier` parameter which can be used to obtain the
+ * current `JSONPath` within the document.
+ */
+export interface JSONVisitor {
+ /**
+ * Invoked when an open brace is encountered and an object is started. The offset and length represent the location of the open brace.
+ */
+ onObjectBegin?: (offset: number, length: number, startLine: number, startCharacter: number, pathSupplier: () => JSONPath) => void;
+
+ /**
+ * Invoked when a property is encountered. The offset and length represent the location of the property name.
+ * The `JSONPath` created by the `pathSupplier` refers to the enclosing JSON object, it does not include the
+ * property name yet.
+ */
+ onObjectProperty?: (property: string, offset: number, length: number, startLine: number, startCharacter: number, pathSupplier: () => JSONPath) => void;
+ /**
+ * Invoked when a closing brace is encountered and an object is completed. The offset and length represent the location of the closing brace.
+ */
+ onObjectEnd?: (offset: number, length: number, startLine: number, startCharacter: number) => void;
+ /**
+ * Invoked when an open bracket is encountered. The offset and length represent the location of the open bracket.
+ */
+ onArrayBegin?: (offset: number, length: number, startLine: number, startCharacter: number, pathSupplier: () => JSONPath) => void;
+ /**
+ * Invoked when a closing bracket is encountered. The offset and length represent the location of the closing bracket.
+ */
+ onArrayEnd?: (offset: number, length: number, startLine: number, startCharacter: number) => void;
+ /**
+ * Invoked when a literal value is encountered. The offset and length represent the location of the literal value.
+ */
+ onLiteralValue?: (value: any, offset: number, length: number, startLine: number, startCharacter: number, pathSupplier: () => JSONPath) => void;
+ /**
+ * Invoked when a comma or colon separator is encountered. The offset and length represent the location of the separator.
+ */
+ onSeparator?: (character: string, offset: number, length: number, startLine: number, startCharacter: number) => void;
+ /**
+ * When comments are allowed, invoked when a line or block comment is encountered. The offset and length represent the location of the comment.
+ */
+ onComment?: (offset: number, length: number, startLine: number, startCharacter: number) => void;
+ /**
+ * Invoked on an error.
+ */
+ onError?: (error: ParseErrorCode, offset: number, length: number, startLine: number, startCharacter: number) => void;
+}
+
+/**
+ * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ */
+export declare function parseTree(text: string, errors?: ParseError[], options?: ParseOptions): Node | undefined;
+
+export declare type NodeType = "object" | "array" | "property" | "string" | "number" | "boolean" | "null";
+export interface Node {
+ type: NodeType;
+ value?: any;
+ offset: number;
+ length: number;
+ colonOffset?: number;
+ parent?: Node;
+ children?: Node[];
+}
+
+```
+
+### Utilities:
+```typescript
+/**
+ * Takes JSON with JavaScript-style comments and remove
+ * them. Optionally replaces every none-newline character
+ * of comments with a replaceCharacter
+ */
+export declare function stripComments(text: string, replaceCh?: string): string;
+
+/**
+ * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.
+ */
+export declare function getLocation(text: string, position: number): Location;
+
+/**
+ * A {@linkcode JSONPath} segment. Either a string representing an object property name
+ * or a number (starting at 0) for array indices.
+ */
+export declare type Segment = string | number;
+export declare type JSONPath = Segment[];
+export interface Location {
+ /**
+ * The previous property key or literal value (string, number, boolean or null) or undefined.
+ */
+ previousNode?: Node;
+ /**
+ * The path describing the location in the JSON document. The path consists of a sequence strings
+ * representing an object property or numbers for array indices.
+ */
+ path: JSONPath;
+ /**
+ * Matches the locations path against a pattern consisting of strings (for properties) and numbers (for array indices).
+ * '*' will match a single segment, of any property name or index.
+ * '**' will match a sequence of segments or no segment, of any property name or index.
+ */
+ matches: (patterns: JSONPath) => boolean;
+ /**
+ * If set, the location's offset is at a property key.
+ */
+ isAtPropertyKey: boolean;
+}
+
+/**
+ * Finds the node at the given path in a JSON DOM.
+ */
+export function findNodeAtLocation(root: Node, path: JSONPath): Node | undefined;
+
+/**
+ * Finds the most inner node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.
+ */
+export function findNodeAtOffset(root: Node, offset: number, includeRightBound?: boolean) : Node | undefined;
+
+/**
+ * Gets the JSON path of the given JSON DOM node
+ */
+export function getNodePath(node: Node): JSONPath;
+
+/**
+ * Evaluates the JavaScript object of the given JSON DOM node
+ */
+export function getNodeValue(node: Node): any;
+
+/**
+ * Computes the edit operations needed to format a JSON document.
+ *
+ * @param documentText The input text
+ * @param range The range to format or `undefined` to format the full content
+ * @param options The formatting options
+ * @returns The edit operations describing the formatting changes to the original document following the format described in {@linkcode EditResult}.
+ * To apply the edit operations to the input, use {@linkcode applyEdits}.
+ */
+export function format(documentText: string, range: Range, options: FormattingOptions): EditResult;
+
+/**
+ * Computes the edit operations needed to modify a value in the JSON document.
+ *
+ * @param documentText The input text
+ * @param path The path of the value to change. The path represents either to the document root, a property or an array item.
+ * If the path points to an non-existing property or item, it will be created.
+ * @param value The new value for the specified property or item. If the value is undefined,
+ * the property or item will be removed.
+ * @param options Options
+ * @returns The edit operations describing the changes to the original document, following the format described in {@linkcode EditResult}.
+ * To apply the edit operations to the input, use {@linkcode applyEdits}.
+ */
+export function modify(text: string, path: JSONPath, value: any, options: ModificationOptions): EditResult;
+
+/**
+ * Applies edits to an input string.
+ * @param text The input text
+ * @param edits Edit operations following the format described in {@linkcode EditResult}.
+ * @returns The text with the applied edits.
+ * @throws An error if the edit operations are not well-formed as described in {@linkcode EditResult}.
+ */
+export function applyEdits(text: string, edits: EditResult): string;
+
+/**
+ * An edit result describes a textual edit operation. It is the result of a {@linkcode format} and {@linkcode modify} operation.
+ * It consist of one or more edits describing insertions, replacements or removals of text segments.
+ * * The offsets of the edits refer to the original state of the document.
+ * * No two edits change or remove the same range of text in the original document.
+ * * Multiple edits can have the same offset if they are multiple inserts, or an insert followed by a remove or replace.
+ * * The order in the array defines which edit is applied first.
+ * To apply an edit result use {@linkcode applyEdits}.
+ * In general multiple EditResults must not be concatenated because they might impact each other, producing incorrect or malformed JSON data.
+ */
+export type EditResult = Edit[];
+
+/**
+ * Represents a text modification
+ */
+export interface Edit {
+ /**
+ * The start offset of the modification.
+ */
+ offset: number;
+ /**
+ * The length of the modification. Must not be negative. Empty length represents an *insert*.
+ */
+ length: number;
+ /**
+ * The new content. Empty content represents a *remove*.
+ */
+ content: string;
+}
+
+/**
+ * A text range in the document
+*/
+export interface Range {
+ /**
+ * The start offset of the range.
+ */
+ offset: number;
+ /**
+ * The length of the range. Must not be negative.
+ */
+ length: number;
+}
+
+/**
+ * Options used by {@linkcode format} when computing the formatting edit operations
+ */
+export interface FormattingOptions {
+ /**
+ * If indentation is based on spaces (`insertSpaces` = true), then what is the number of spaces that make an indent?
+ */
+ tabSize: number;
+ /**
+ * Is indentation based on spaces?
+ */
+ insertSpaces: boolean;
+ /**
+ * The default 'end of line' character
+ */
+ eol: string;
+}
+
+/**
+ * Options used by {@linkcode modify} when computing the modification edit operations
+ */
+export interface ModificationOptions {
+ /**
+ * Formatting options. If undefined, the newly inserted code will be inserted unformatted.
+ */
+ formattingOptions?: FormattingOptions;
+ /**
+ * Default false. If `JSONPath` refers to an index of an array and `isArrayInsertion` is `true`, then
+ * {@linkcode modify} will insert a new item at that location instead of overwriting its contents.
+ */
+ isArrayInsertion?: boolean;
+ /**
+ * Optional function to define the insertion index given an existing list of properties.
+ */
+ getInsertionIndex?: (properties: string[]) => number;
+}
+```
+
+
+License
+-------
+
+(MIT License)
+
+Copyright 2018, Microsoft
diff --git a/node_modules/jsonc-parser/SECURITY.md b/node_modules/jsonc-parser/SECURITY.md
new file mode 100644
index 0000000..f7b8998
--- /dev/null
+++ b/node_modules/jsonc-parser/SECURITY.md
@@ -0,0 +1,41 @@
+<!-- BEGIN MICROSOFT SECURITY.MD V0.0.5 BLOCK -->
+
+## Security
+
+Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
+
+If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below.
+
+## Reporting Security Issues
+
+**Please do not report security vulnerabilities through public GitHub issues.**
+
+Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
+
+If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
+
+You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
+
+Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
+
+ * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
+ * Full paths of source file(s) related to the manifestation of the issue
+ * The location of the affected source code (tag/branch/commit or direct URL)
+ * Any special configuration required to reproduce the issue
+ * Step-by-step instructions to reproduce the issue
+ * Proof-of-concept or exploit code (if possible)
+ * Impact of the issue, including how an attacker might exploit the issue
+
+This information will help us triage your report more quickly.
+
+If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
+
+## Preferred Languages
+
+We prefer all communications to be in English.
+
+## Policy
+
+Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
+
+<!-- END MICROSOFT SECURITY.MD BLOCK --> \ No newline at end of file
diff --git a/node_modules/jsonc-parser/lib/esm/impl/edit.js b/node_modules/jsonc-parser/lib/esm/impl/edit.js
new file mode 100644
index 0000000..4114d52
--- /dev/null
+++ b/node_modules/jsonc-parser/lib/esm/impl/edit.js
@@ -0,0 +1,185 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+'use strict';
+import { format, isEOL } from './format';
+import { parseTree, findNodeAtLocation } from './parser';
+export function removeProperty(text, path, options) {
+ return setProperty(text, path, void 0, options);
+}
+export function setProperty(text, originalPath, value, options) {
+ const path = originalPath.slice();
+ const errors = [];
+ const root = parseTree(text, errors);
+ let parent = void 0;
+ let lastSegment = void 0;
+ while (path.length > 0) {
+ lastSegment = path.pop();
+ parent = findNodeAtLocation(root, path);
+ if (parent === void 0 && value !== void 0) {
+ if (typeof lastSegment === 'string') {
+ value = { [lastSegment]: value };
+ }
+ else {
+ value = [value];
+ }
+ }
+ else {
+ break;
+ }
+ }
+ if (!parent) {
+ // empty document
+ if (value === void 0) { // delete
+ throw new Error('Can not delete in empty document');
+ }
+ return withFormatting(text, { offset: root ? root.offset : 0, length: root ? root.length : 0, content: JSON.stringify(value) }, options);
+ }
+ else if (parent.type === 'object' && typeof lastSegment === 'string' && Array.isArray(parent.children)) {
+ const existing = findNodeAtLocation(parent, [lastSegment]);
+ if (existing !== void 0) {
+ if (value === void 0) { // delete
+ if (!existing.parent) {
+ throw new Error('Malformed AST');
+ }
+ const propertyIndex = parent.children.indexOf(existing.parent);
+ let removeBegin;
+ let removeEnd = existing.parent.offset + existing.parent.length;
+ if (propertyIndex > 0) {
+ // remove the comma of the previous node
+ let previous = parent.children[propertyIndex - 1];
+ removeBegin = previous.offset + previous.length;
+ }
+ else {
+ removeBegin = parent.offset + 1;
+ if (parent.children.length > 1) {
+ // remove the comma of the next node
+ let next = parent.children[1];
+ removeEnd = next.offset;
+ }
+ }
+ return withFormatting(text, { offset: removeBegin, length: removeEnd - removeBegin, content: '' }, options);
+ }
+ else {
+ // set value of existing property
+ return withFormatting(text, { offset: existing.offset, length: existing.length, content: JSON.stringify(value) }, options);
+ }
+ }
+ else {
+ if (value === void 0) { // delete
+ return []; // property does not exist, nothing to do
+ }
+ const newProperty = `${JSON.stringify(lastSegment)}: ${JSON.stringify(value)}`;
+ const index = options.getInsertionIndex ? options.getInsertionIndex(parent.children.map(p => p.children[0].value)) : parent.children.length;
+ let edit;
+ if (index > 0) {
+ let previous = parent.children[index - 1];
+ edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };
+ }
+ else if (parent.children.length === 0) {
+ edit = { offset: parent.offset + 1, length: 0, content: newProperty };
+ }
+ else {
+ edit = { offset: parent.offset + 1, length: 0, content: newProperty + ',' };
+ }
+ return withFormatting(text, edit, options);
+ }
+ }
+ else if (parent.type === 'array' && typeof lastSegment === 'number' && Array.isArray(parent.children)) {
+ const insertIndex = lastSegment;
+ if (insertIndex === -1) {
+ // Insert
+ const newProperty = `${JSON.stringify(value)}`;
+ let edit;
+ if (parent.children.length === 0) {
+ edit = { offset: parent.offset + 1, length: 0, content: newProperty };
+ }
+ else {
+ const previous = parent.children[parent.children.length - 1];
+ edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };
+ }
+ return withFormatting(text, edit, options);
+ }
+ else if (value === void 0 && parent.children.length >= 0) {
+ // Removal
+ const removalIndex = lastSegment;
+ const toRemove = parent.children[removalIndex];
+ let edit;
+ if (parent.children.length === 1) {
+ // only item
+ edit = { offset: parent.offset + 1, length: parent.length - 2, content: '' };
+ }
+ else if (parent.children.length - 1 === removalIndex) {
+ // last item
+ let previous = parent.children[removalIndex - 1];
+ let offset = previous.offset + previous.length;
+ let parentEndOffset = parent.offset + parent.length;
+ edit = { offset, length: parentEndOffset - 2 - offset, content: '' };
+ }
+ else {
+ edit = { offset: toRemove.offset, length: parent.children[removalIndex + 1].offset - toRemove.offset, content: '' };
+ }
+ return withFormatting(text, edit, options);
+ }
+ else if (value !== void 0) {
+ let edit;
+ const newProperty = `${JSON.stringify(value)}`;
+ if (!options.isArrayInsertion && parent.children.length > lastSegment) {
+ const toModify = parent.children[lastSegment];
+ edit = { offset: toModify.offset, length: toModify.length, content: newProperty };
+ }
+ else if (parent.children.length === 0 || lastSegment === 0) {
+ edit = { offset: parent.offset + 1, length: 0, content: parent.children.length === 0 ? newProperty : newProperty + ',' };
+ }
+ else {
+ const index = lastSegment > parent.children.length ? parent.children.length : lastSegment;
+ const previous = parent.children[index - 1];
+ edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };
+ }
+ return withFormatting(text, edit, options);
+ }
+ else {
+ throw new Error(`Can not ${value === void 0 ? 'remove' : (options.isArrayInsertion ? 'insert' : 'modify')} Array index ${insertIndex} as length is not sufficient`);
+ }
+ }
+ else {
+ throw new Error(`Can not add ${typeof lastSegment !== 'number' ? 'index' : 'property'} to parent of type ${parent.type}`);
+ }
+}
+function withFormatting(text, edit, options) {
+ if (!options.formattingOptions) {
+ return [edit];
+ }
+ // apply the edit
+ let newText = applyEdit(text, edit);
+ // format the new text
+ let begin = edit.offset;
+ let end = edit.offset + edit.content.length;
+ if (edit.length === 0 || edit.content.length === 0) { // insert or remove
+ while (begin > 0 && !isEOL(newText, begin - 1)) {
+ begin--;
+ }
+ while (end < newText.length && !isEOL(newText, end)) {
+ end++;
+ }
+ }
+ const edits = format(newText, { offset: begin, length: end - begin }, { ...options.formattingOptions, keepLines: false });
+ // apply the formatting edits and track the begin and end offsets of the changes
+ for (let i = edits.length - 1; i >= 0; i--) {
+ const edit = edits[i];
+ newText = applyEdit(newText, edit);
+ begin = Math.min(begin, edit.offset);
+ end = Math.max(end, edit.offset + edit.length);
+ end += edit.content.length - edit.length;
+ }
+ // create a single edit with all changes
+ const editLength = text.length - (newText.length - end) - begin;
+ return [{ offset: begin, length: editLength, content: newText.substring(begin, end) }];
+}
+export function applyEdit(text, edit) {
+ return text.substring(0, edit.offset) + edit.content + text.substring(edit.offset + edit.length);
+}
+export function isWS(text, offset) {
+ return '\r\n \t'.indexOf(text.charAt(offset)) !== -1;
+}
diff --git a/node_modules/jsonc-parser/lib/esm/impl/format.js b/node_modules/jsonc-parser/lib/esm/impl/format.js
new file mode 100644
index 0000000..4d9d6ae
--- /dev/null
+++ b/node_modules/jsonc-parser/lib/esm/impl/format.js
@@ -0,0 +1,251 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+'use strict';
+import { createScanner } from './scanner';
+export function format(documentText, range, options) {
+ let initialIndentLevel;
+ let formatText;
+ let formatTextStart;
+ let rangeStart;
+ let rangeEnd;
+ if (range) {
+ rangeStart = range.offset;
+ rangeEnd = rangeStart + range.length;
+ formatTextStart = rangeStart;
+ while (formatTextStart > 0 && !isEOL(documentText, formatTextStart - 1)) {
+ formatTextStart--;
+ }
+ let endOffset = rangeEnd;
+ while (endOffset < documentText.length && !isEOL(documentText, endOffset)) {
+ endOffset++;
+ }
+ formatText = documentText.substring(formatTextStart, endOffset);
+ initialIndentLevel = computeIndentLevel(formatText, options);
+ }
+ else {
+ formatText = documentText;
+ initialIndentLevel = 0;
+ formatTextStart = 0;
+ rangeStart = 0;
+ rangeEnd = documentText.length;
+ }
+ const eol = getEOL(options, documentText);
+ let numberLineBreaks = 0;
+ let indentLevel = 0;
+ let indentValue;
+ if (options.insertSpaces) {
+ indentValue = repeat(' ', options.tabSize || 4);
+ }
+ else {
+ indentValue = '\t';
+ }
+ let scanner = createScanner(formatText, false);
+ let hasError = false;
+ function newLinesAndIndent() {
+ if (numberLineBreaks > 1) {
+ return repeat(eol, numberLineBreaks) + repeat(indentValue, initialIndentLevel + indentLevel);
+ }
+ else {
+ return eol + repeat(indentValue, initialIndentLevel + indentLevel);
+ }
+ }
+ function scanNext() {
+ let token = scanner.scan();
+ numberLineBreaks = 0;
+ while (token === 15 /* SyntaxKind.Trivia */ || token === 14 /* SyntaxKind.LineBreakTrivia */) {
+ if (token === 14 /* SyntaxKind.LineBreakTrivia */ && options.keepLines) {
+ numberLineBreaks += 1;
+ }
+ else if (token === 14 /* SyntaxKind.LineBreakTrivia */) {
+ numberLineBreaks = 1;
+ }
+ token = scanner.scan();
+ }
+ hasError = token === 16 /* SyntaxKind.Unknown */ || scanner.getTokenError() !== 0 /* ScanError.None */;
+ return token;
+ }
+ const editOperations = [];
+ function addEdit(text, startOffset, endOffset) {
+ if (!hasError && (!range || (startOffset < rangeEnd && endOffset > rangeStart)) && documentText.substring(startOffset, endOffset) !== text) {
+ editOperations.push({ offset: startOffset, length: endOffset - startOffset, content: text });
+ }
+ }
+ let firstToken = scanNext();
+ if (options.keepLines && numberLineBreaks > 0) {
+ addEdit(repeat(eol, numberLineBreaks), 0, 0);
+ }
+ if (firstToken !== 17 /* SyntaxKind.EOF */) {
+ let firstTokenStart = scanner.getTokenOffset() + formatTextStart;
+ let initialIndent = repeat(indentValue, initialIndentLevel);
+ addEdit(initialIndent, formatTextStart, firstTokenStart);
+ }
+ while (firstToken !== 17 /* SyntaxKind.EOF */) {
+ let firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart;
+ let secondToken = scanNext();
+ let replaceContent = '';
+ let needsLineBreak = false;
+ while (numberLineBreaks === 0 && (secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */)) {
+ let commentTokenStart = scanner.getTokenOffset() + formatTextStart;
+ addEdit(' ', firstTokenEnd, commentTokenStart);
+ firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart;
+ needsLineBreak = secondToken === 12 /* SyntaxKind.LineCommentTrivia */;
+ replaceContent = needsLineBreak ? newLinesAndIndent() : '';
+ secondToken = scanNext();
+ }
+ if (secondToken === 2 /* SyntaxKind.CloseBraceToken */) {
+ if (firstToken !== 1 /* SyntaxKind.OpenBraceToken */) {
+ indentLevel--;
+ }
+ ;
+ if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 1 /* SyntaxKind.OpenBraceToken */) {
+ replaceContent = newLinesAndIndent();
+ }
+ else if (options.keepLines) {
+ replaceContent = ' ';
+ }
+ }
+ else if (secondToken === 4 /* SyntaxKind.CloseBracketToken */) {
+ if (firstToken !== 3 /* SyntaxKind.OpenBracketToken */) {
+ indentLevel--;
+ }
+ ;
+ if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 3 /* SyntaxKind.OpenBracketToken */) {
+ replaceContent = newLinesAndIndent();
+ }
+ else if (options.keepLines) {
+ replaceContent = ' ';
+ }
+ }
+ else {
+ switch (firstToken) {
+ case 3 /* SyntaxKind.OpenBracketToken */:
+ case 1 /* SyntaxKind.OpenBraceToken */:
+ indentLevel++;
+ if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) {
+ replaceContent = newLinesAndIndent();
+ }
+ else {
+ replaceContent = ' ';
+ }
+ break;
+ case 5 /* SyntaxKind.CommaToken */:
+ if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) {
+ replaceContent = newLinesAndIndent();
+ }
+ else {
+ replaceContent = ' ';
+ }
+ break;
+ case 12 /* SyntaxKind.LineCommentTrivia */:
+ replaceContent = newLinesAndIndent();
+ break;
+ case 13 /* SyntaxKind.BlockCommentTrivia */:
+ if (numberLineBreaks > 0) {
+ replaceContent = newLinesAndIndent();
+ }
+ else if (!needsLineBreak) {
+ replaceContent = ' ';
+ }
+ break;
+ case 6 /* SyntaxKind.ColonToken */:
+ if (options.keepLines && numberLineBreaks > 0) {
+ replaceContent = newLinesAndIndent();
+ }
+ else if (!needsLineBreak) {
+ replaceContent = ' ';
+ }
+ break;
+ case 10 /* SyntaxKind.StringLiteral */:
+ if (options.keepLines && numberLineBreaks > 0) {
+ replaceContent = newLinesAndIndent();
+ }
+ else if (secondToken === 6 /* SyntaxKind.ColonToken */ && !needsLineBreak) {
+ replaceContent = '';
+ }
+ break;
+ case 7 /* SyntaxKind.NullKeyword */:
+ case 8 /* SyntaxKind.TrueKeyword */:
+ case 9 /* SyntaxKind.FalseKeyword */:
+ case 11 /* SyntaxKind.NumericLiteral */:
+ case 2 /* SyntaxKind.CloseBraceToken */:
+ case 4 /* SyntaxKind.CloseBracketToken */:
+ if (options.keepLines && numberLineBreaks > 0) {
+ replaceContent = newLinesAndIndent();
+ }
+ else {
+ if ((secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */) && !needsLineBreak) {
+ replaceContent = ' ';
+ }
+ else if (secondToken !== 5 /* SyntaxKind.CommaToken */ && secondToken !== 17 /* SyntaxKind.EOF */) {
+ hasError = true;
+ }
+ }
+ break;
+ case 16 /* SyntaxKind.Unknown */:
+ hasError = true;
+ break;
+ }
+ if (numberLineBreaks > 0 && (secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */)) {
+ replaceContent = newLinesAndIndent();
+ }
+ }
+ if (secondToken === 17 /* SyntaxKind.EOF */) {
+ if (options.keepLines && numberLineBreaks > 0) {
+ replaceContent = newLinesAndIndent();
+ }
+ else {
+ replaceContent = options.insertFinalNewline ? eol : '';
+ }
+ }
+ const secondTokenStart = scanner.getTokenOffset() + formatTextStart;
+ addEdit(replaceContent, firstTokenEnd, secondTokenStart);
+ firstToken = secondToken;
+ }
+ return editOperations;
+}
+function repeat(s, count) {
+ let result = '';
+ for (let i = 0; i < count; i++) {
+ result += s;
+ }
+ return result;
+}
+function computeIndentLevel(content, options) {
+ let i = 0;
+ let nChars = 0;
+ const tabSize = options.tabSize || 4;
+ while (i < content.length) {
+ let ch = content.charAt(i);
+ if (ch === ' ') {
+ nChars++;
+ }
+ else if (ch === '\t') {
+ nChars += tabSize;
+ }
+ else {
+ break;
+ }
+ i++;
+ }
+ return Math.floor(nChars / tabSize);
+}
+function getEOL(options, text) {
+ for (let i = 0; i < text.length; i++) {
+ const ch = text.charAt(i);
+ if (ch === '\r') {
+ if (i + 1 < text.length && text.charAt(i + 1) === '\n') {
+ return '\r\n';
+ }
+ return '\r';
+ }
+ else if (ch === '\n') {
+ return '\n';
+ }
+ }
+ return (options && options.eol) || '\n';
+}
+export function isEOL(text, offset) {
+ return '\r\n'.indexOf(text.charAt(offset)) !== -1;
+}
diff --git a/node_modules/jsonc-parser/lib/esm/impl/parser.js b/node_modules/jsonc-parser/lib/esm/impl/parser.js
new file mode 100644
index 0000000..ea1ac2e
--- /dev/null
+++ b/node_modules/jsonc-parser/lib/esm/impl/parser.js
@@ -0,0 +1,632 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+'use strict';
+import { createScanner } from './scanner';
+var ParseOptions;
+(function (ParseOptions) {
+ ParseOptions.DEFAULT = {
+ allowTrailingComma: false
+ };
+})(ParseOptions || (ParseOptions = {}));
+/**
+ * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.
+ */
+export function getLocation(text, position) {
+ const segments = []; // strings or numbers
+ const earlyReturnException = new Object();
+ let previousNode = undefined;
+ const previousNodeInst = {
+ value: {},
+ offset: 0,
+ length: 0,
+ type: 'object',
+ parent: undefined
+ };
+ let isAtPropertyKey = false;
+ function setPreviousNode(value, offset, length, type) {
+ previousNodeInst.value = value;
+ previousNodeInst.offset = offset;
+ previousNodeInst.length = length;
+ previousNodeInst.type = type;
+ previousNodeInst.colonOffset = undefined;
+ previousNode = previousNodeInst;
+ }
+ try {
+ visit(text, {
+ onObjectBegin: (offset, length) => {
+ if (position <= offset) {
+ throw earlyReturnException;
+ }
+ previousNode = undefined;
+ isAtPropertyKey = position > offset;
+ segments.push(''); // push a placeholder (will be replaced)
+ },
+ onObjectProperty: (name, offset, length) => {
+ if (position < offset) {
+ throw earlyReturnException;
+ }
+ setPreviousNode(name, offset, length, 'property');
+ segments[segments.length - 1] = name;
+ if (position <= offset + length) {
+ throw earlyReturnException;
+ }
+ },
+ onObjectEnd: (offset, length) => {
+ if (position <= offset) {
+ throw earlyReturnException;
+ }
+ previousNode = undefined;
+ segments.pop();
+ },
+ onArrayBegin: (offset, length) => {
+ if (position <= offset) {
+ throw earlyReturnException;
+ }
+ previousNode = undefined;
+ segments.push(0);
+ },
+ onArrayEnd: (offset, length) => {
+ if (position <= offset) {
+ throw earlyReturnException;
+ }
+ previousNode = undefined;
+ segments.pop();
+ },
+ onLiteralValue: (value, offset, length) => {
+ if (position < offset) {
+ throw earlyReturnException;
+ }
+ setPreviousNode(value, offset, length, getNodeType(value));
+ if (position <= offset + length) {
+ throw earlyReturnException;
+ }
+ },
+ onSeparator: (sep, offset, length) => {
+ if (position <= offset) {
+ throw earlyReturnException;
+ }
+ if (sep === ':' && previousNode && previousNode.type === 'property') {
+ previousNode.colonOffset = offset;
+ isAtPropertyKey = false;
+ previousNode = undefined;
+ }
+ else if (sep === ',') {
+ const last = segments[segments.length - 1];
+ if (typeof last === 'number') {
+ segments[segments.length - 1] = last + 1;
+ }
+ else {
+ isAtPropertyKey = true;
+ segments[segments.length - 1] = '';
+ }
+ previousNode = undefined;
+ }
+ }
+ });
+ }
+ catch (e) {
+ if (e !== earlyReturnException) {
+ throw e;
+ }
+ }
+ return {
+ path: segments,
+ previousNode,
+ isAtPropertyKey,
+ matches: (pattern) => {
+ let k = 0;
+ for (let i = 0; k < pattern.length && i < segments.length; i++) {
+ if (pattern[k] === segments[i] || pattern[k] === '*') {
+ k++;
+ }
+ else if (pattern[k] !== '**') {
+ return false;
+ }
+ }
+ return k === pattern.length;
+ }
+ };
+}
+/**
+ * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ * Therefore always check the errors list to find out if the input was valid.
+ */
+export function parse(text, errors = [], options = ParseOptions.DEFAULT) {
+ let currentProperty = null;
+ let currentParent = [];
+ const previousParents = [];
+ function onValue(value) {
+ if (Array.isArray(currentParent)) {
+ currentParent.push(value);
+ }
+ else if (currentProperty !== null) {
+ currentParent[currentProperty] = value;
+ }
+ }
+ const visitor = {
+ onObjectBegin: () => {
+ const object = {};
+ onValue(object);
+ previousParents.push(currentParent);
+ currentParent = object;
+ currentProperty = null;
+ },
+ onObjectProperty: (name) => {
+ currentProperty = name;
+ },
+ onObjectEnd: () => {
+ currentParent = previousParents.pop();
+ },
+ onArrayBegin: () => {
+ const array = [];
+ onValue(array);
+ previousParents.push(currentParent);
+ currentParent = array;
+ currentProperty = null;
+ },
+ onArrayEnd: () => {
+ currentParent = previousParents.pop();
+ },
+ onLiteralValue: onValue,
+ onError: (error, offset, length) => {
+ errors.push({ error, offset, length });
+ }
+ };
+ visit(text, visitor, options);
+ return currentParent[0];
+}
+/**
+ * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ */
+export function parseTree(text, errors = [], options = ParseOptions.DEFAULT) {
+ let currentParent = { type: 'array', offset: -1, length: -1, children: [], parent: undefined }; // artificial root
+ function ensurePropertyComplete(endOffset) {
+ if (currentParent.type === 'property') {
+ currentParent.length = endOffset - currentParent.offset;
+ currentParent = currentParent.parent;
+ }
+ }
+ function onValue(valueNode) {
+ currentParent.children.push(valueNode);
+ return valueNode;
+ }
+ const visitor = {
+ onObjectBegin: (offset) => {
+ currentParent = onValue({ type: 'object', offset, length: -1, parent: currentParent, children: [] });
+ },
+ onObjectProperty: (name, offset, length) => {
+ currentParent = onValue({ type: 'property', offset, length: -1, parent: currentParent, children: [] });
+ currentParent.children.push({ type: 'string', value: name, offset, length, parent: currentParent });
+ },
+ onObjectEnd: (offset, length) => {
+ ensurePropertyComplete(offset + length); // in case of a missing value for a property: make sure property is complete
+ currentParent.length = offset + length - currentParent.offset;
+ currentParent = currentParent.parent;
+ ensurePropertyComplete(offset + length);
+ },
+ onArrayBegin: (offset, length) => {
+ currentParent = onValue({ type: 'array', offset, length: -1, parent: currentParent, children: [] });
+ },
+ onArrayEnd: (offset, length) => {
+ currentParent.length = offset + length - currentParent.offset;
+ currentParent = currentParent.parent;
+ ensurePropertyComplete(offset + length);
+ },
+ onLiteralValue: (value, offset, length) => {
+ onValue({ type: getNodeType(value), offset, length, parent: currentParent, value });
+ ensurePropertyComplete(offset + length);
+ },
+ onSeparator: (sep, offset, length) => {
+ if (currentParent.type === 'property') {
+ if (sep === ':') {
+ currentParent.colonOffset = offset;
+ }
+ else if (sep === ',') {
+ ensurePropertyComplete(offset);
+ }
+ }
+ },
+ onError: (error, offset, length) => {
+ errors.push({ error, offset, length });
+ }
+ };
+ visit(text, visitor, options);
+ const result = currentParent.children[0];
+ if (result) {
+ delete result.parent;
+ }
+ return result;
+}
+/**
+ * Finds the node at the given path in a JSON DOM.
+ */
+export function findNodeAtLocation(root, path) {
+ if (!root) {
+ return undefined;
+ }
+ let node = root;
+ for (let segment of path) {
+ if (typeof segment === 'string') {
+ if (node.type !== 'object' || !Array.isArray(node.children)) {
+ return undefined;
+ }
+ let found = false;
+ for (const propertyNode of node.children) {
+ if (Array.isArray(propertyNode.children) && propertyNode.children[0].value === segment && propertyNode.children.length === 2) {
+ node = propertyNode.children[1];
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ return undefined;
+ }
+ }
+ else {
+ const index = segment;
+ if (node.type !== 'array' || index < 0 || !Array.isArray(node.children) || index >= node.children.length) {
+ return undefined;
+ }
+ node = node.children[index];
+ }
+ }
+ return node;
+}
+/**
+ * Gets the JSON path of the given JSON DOM node
+ */
+export function getNodePath(node) {
+ if (!node.parent || !node.parent.children) {
+ return [];
+ }
+ const path = getNodePath(node.parent);
+ if (node.parent.type === 'property') {
+ const key = node.parent.children[0].value;
+ path.push(key);
+ }
+ else if (node.parent.type === 'array') {
+ const index = node.parent.children.indexOf(node);
+ if (index !== -1) {
+ path.push(index);
+ }
+ }
+ return path;
+}
+/**
+ * Evaluates the JavaScript object of the given JSON DOM node
+ */
+export function getNodeValue(node) {
+ switch (node.type) {
+ case 'array':
+ return node.children.map(getNodeValue);
+ case 'object':
+ const obj = Object.create(null);
+ for (let prop of node.children) {
+ const valueNode = prop.children[1];
+ if (valueNode) {
+ obj[prop.children[0].value] = getNodeValue(valueNode);
+ }
+ }
+ return obj;
+ case 'null':
+ case 'string':
+ case 'number':
+ case 'boolean':
+ return node.value;
+ default:
+ return undefined;
+ }
+}
+export function contains(node, offset, includeRightBound = false) {
+ return (offset >= node.offset && offset < (node.offset + node.length)) || includeRightBound && (offset === (node.offset + node.length));
+}
+/**
+ * Finds the most inner node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.
+ */
+export function findNodeAtOffset(node, offset, includeRightBound = false) {
+ if (contains(node, offset, includeRightBound)) {
+ const children = node.children;
+ if (Array.isArray(children)) {
+ for (let i = 0; i < children.length && children[i].offset <= offset; i++) {
+ const item = findNodeAtOffset(children[i], offset, includeRightBound);
+ if (item) {
+ return item;
+ }
+ }
+ }
+ return node;
+ }
+ return undefined;
+}
+/**
+ * Parses the given text and invokes the visitor functions for each object, array and literal reached.
+ */
+export function visit(text, visitor, options = ParseOptions.DEFAULT) {
+ const _scanner = createScanner(text, false);
+ // Important: Only pass copies of this to visitor functions to prevent accidental modification, and
+ // to not affect visitor functions which stored a reference to a previous JSONPath
+ const _jsonPath = [];
+ function toNoArgVisit(visitFunction) {
+ return visitFunction ? () => visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;
+ }
+ function toNoArgVisitWithPath(visitFunction) {
+ return visitFunction ? () => visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;
+ }
+ function toOneArgVisit(visitFunction) {
+ return visitFunction ? (arg) => visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;
+ }
+ function toOneArgVisitWithPath(visitFunction) {
+ return visitFunction ? (arg) => visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;
+ }
+ const onObjectBegin = toNoArgVisitWithPath(visitor.onObjectBegin), onObjectProperty = toOneArgVisitWithPath(visitor.onObjectProperty), onObjectEnd = toNoArgVisit(visitor.onObjectEnd), onArrayBegin = toNoArgVisitWithPath(visitor.onArrayBegin), onArrayEnd = toNoArgVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisitWithPath(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError);
+ const disallowComments = options && options.disallowComments;
+ const allowTrailingComma = options && options.allowTrailingComma;
+ function scanNext() {
+ while (true) {
+ const token = _scanner.scan();
+ switch (_scanner.getTokenError()) {
+ case 4 /* ScanError.InvalidUnicode */:
+ handleError(14 /* ParseErrorCode.InvalidUnicode */);
+ break;
+ case 5 /* ScanError.InvalidEscapeCharacter */:
+ handleError(15 /* ParseErrorCode.InvalidEscapeCharacter */);
+ break;
+ case 3 /* ScanError.UnexpectedEndOfNumber */:
+ handleError(13 /* ParseErrorCode.UnexpectedEndOfNumber */);
+ break;
+ case 1 /* ScanError.UnexpectedEndOfComment */:
+ if (!disallowComments) {
+ handleError(11 /* ParseErrorCode.UnexpectedEndOfComment */);
+ }
+ break;
+ case 2 /* ScanError.UnexpectedEndOfString */:
+ handleError(12 /* ParseErrorCode.UnexpectedEndOfString */);
+ break;
+ case 6 /* ScanError.InvalidCharacter */:
+ handleError(16 /* ParseErrorCode.InvalidCharacter */);
+ break;
+ }
+ switch (token) {
+ case 12 /* SyntaxKind.LineCommentTrivia */:
+ case 13 /* SyntaxKind.BlockCommentTrivia */:
+ if (disallowComments) {
+ handleError(10 /* ParseErrorCode.InvalidCommentToken */);
+ }
+ else {
+ onComment();
+ }
+ break;
+ case 16 /* SyntaxKind.Unknown */:
+ handleError(1 /* ParseErrorCode.InvalidSymbol */);
+ break;
+ case 15 /* SyntaxKind.Trivia */:
+ case 14 /* SyntaxKind.LineBreakTrivia */:
+ break;
+ default:
+ return token;
+ }
+ }
+ }
+ function handleError(error, skipUntilAfter = [], skipUntil = []) {
+ onError(error);
+ if (skipUntilAfter.length + skipUntil.length > 0) {
+ let token = _scanner.getToken();
+ while (token !== 17 /* SyntaxKind.EOF */) {
+ if (skipUntilAfter.indexOf(token) !== -1) {
+ scanNext();
+ break;
+ }
+ else if (skipUntil.indexOf(token) !== -1) {
+ break;
+ }
+ token = scanNext();
+ }
+ }
+ }
+ function parseString(isValue) {
+ const value = _scanner.getTokenValue();
+ if (isValue) {
+ onLiteralValue(value);
+ }
+ else {
+ onObjectProperty(value);
+ // add property name afterwards
+ _jsonPath.push(value);
+ }
+ scanNext();
+ return true;
+ }
+ function parseLiteral() {
+ switch (_scanner.getToken()) {
+ case 11 /* SyntaxKind.NumericLiteral */:
+ const tokenValue = _scanner.getTokenValue();
+ let value = Number(tokenValue);
+ if (isNaN(value)) {
+ handleError(2 /* ParseErrorCode.InvalidNumberFormat */);
+ value = 0;
+ }
+ onLiteralValue(value);
+ break;
+ case 7 /* SyntaxKind.NullKeyword */:
+ onLiteralValue(null);
+ break;
+ case 8 /* SyntaxKind.TrueKeyword */:
+ onLiteralValue(true);
+ break;
+ case 9 /* SyntaxKind.FalseKeyword */:
+ onLiteralValue(false);
+ break;
+ default:
+ return false;
+ }
+ scanNext();
+ return true;
+ }
+ function parseProperty() {
+ if (_scanner.getToken() !== 10 /* SyntaxKind.StringLiteral */) {
+ handleError(3 /* ParseErrorCode.PropertyNameExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
+ return false;
+ }
+ parseString(false);
+ if (_scanner.getToken() === 6 /* SyntaxKind.ColonToken */) {
+ onSeparator(':');
+ scanNext(); // consume colon
+ if (!parseValue()) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
+ }
+ }
+ else {
+ handleError(5 /* ParseErrorCode.ColonExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
+ }
+ _jsonPath.pop(); // remove processed property name
+ return true;
+ }
+ function parseObject() {
+ onObjectBegin();
+ scanNext(); // consume open brace
+ let needsComma = false;
+ while (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {
+ if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {
+ if (!needsComma) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
+ }
+ onSeparator(',');
+ scanNext(); // consume comma
+ if (_scanner.getToken() === 2 /* SyntaxKind.CloseBraceToken */ && allowTrailingComma) {
+ break;
+ }
+ }
+ else if (needsComma) {
+ handleError(6 /* ParseErrorCode.CommaExpected */, [], []);
+ }
+ if (!parseProperty()) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
+ }
+ needsComma = true;
+ }
+ onObjectEnd();
+ if (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */) {
+ handleError(7 /* ParseErrorCode.CloseBraceExpected */, [2 /* SyntaxKind.CloseBraceToken */], []);
+ }
+ else {
+ scanNext(); // consume close brace
+ }
+ return true;
+ }
+ function parseArray() {
+ onArrayBegin();
+ scanNext(); // consume open bracket
+ let isFirstElement = true;
+ let needsComma = false;
+ while (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {
+ if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {
+ if (!needsComma) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
+ }
+ onSeparator(',');
+ scanNext(); // consume comma
+ if (_scanner.getToken() === 4 /* SyntaxKind.CloseBracketToken */ && allowTrailingComma) {
+ break;
+ }
+ }
+ else if (needsComma) {
+ handleError(6 /* ParseErrorCode.CommaExpected */, [], []);
+ }
+ if (isFirstElement) {
+ _jsonPath.push(0);
+ isFirstElement = false;
+ }
+ else {
+ _jsonPath[_jsonPath.length - 1]++;
+ }
+ if (!parseValue()) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], [4 /* SyntaxKind.CloseBracketToken */, 5 /* SyntaxKind.CommaToken */]);
+ }
+ needsComma = true;
+ }
+ onArrayEnd();
+ if (!isFirstElement) {
+ _jsonPath.pop(); // remove array index
+ }
+ if (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */) {
+ handleError(8 /* ParseErrorCode.CloseBracketExpected */, [4 /* SyntaxKind.CloseBracketToken */], []);
+ }
+ else {
+ scanNext(); // consume close bracket
+ }
+ return true;
+ }
+ function parseValue() {
+ switch (_scanner.getToken()) {
+ case 3 /* SyntaxKind.OpenBracketToken */:
+ return parseArray();
+ case 1 /* SyntaxKind.OpenBraceToken */:
+ return parseObject();
+ case 10 /* SyntaxKind.StringLiteral */:
+ return parseString(true);
+ default:
+ return parseLiteral();
+ }
+ }
+ scanNext();
+ if (_scanner.getToken() === 17 /* SyntaxKind.EOF */) {
+ if (options.allowEmptyContent) {
+ return true;
+ }
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
+ return false;
+ }
+ if (!parseValue()) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
+ return false;
+ }
+ if (_scanner.getToken() !== 17 /* SyntaxKind.EOF */) {
+ handleError(9 /* ParseErrorCode.EndOfFileExpected */, [], []);
+ }
+ return true;
+}
+/**
+ * Takes JSON with JavaScript-style comments and remove
+ * them. Optionally replaces every none-newline character
+ * of comments with a replaceCharacter
+ */
+export function stripComments(text, replaceCh) {
+ let _scanner = createScanner(text), parts = [], kind, offset = 0, pos;
+ do {
+ pos = _scanner.getPosition();
+ kind = _scanner.scan();
+ switch (kind) {
+ case 12 /* SyntaxKind.LineCommentTrivia */:
+ case 13 /* SyntaxKind.BlockCommentTrivia */:
+ case 17 /* SyntaxKind.EOF */:
+ if (offset !== pos) {
+ parts.push(text.substring(offset, pos));
+ }
+ if (replaceCh !== undefined) {
+ parts.push(_scanner.getTokenValue().replace(/[^\r\n]/g, replaceCh));
+ }
+ offset = _scanner.getPosition();
+ break;
+ }
+ } while (kind !== 17 /* SyntaxKind.EOF */);
+ return parts.join('');
+}
+export function getNodeType(value) {
+ switch (typeof value) {
+ case 'boolean': return 'boolean';
+ case 'number': return 'number';
+ case 'string': return 'string';
+ case 'object': {
+ if (!value) {
+ return 'null';
+ }
+ else if (Array.isArray(value)) {
+ return 'array';
+ }
+ return 'object';
+ }
+ default: return 'null';
+ }
+}
diff --git a/node_modules/jsonc-parser/lib/esm/impl/scanner.js b/node_modules/jsonc-parser/lib/esm/impl/scanner.js
new file mode 100644
index 0000000..e84942c
--- /dev/null
+++ b/node_modules/jsonc-parser/lib/esm/impl/scanner.js
@@ -0,0 +1,443 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+'use strict';
+/**
+ * Creates a JSON scanner on the given text.
+ * If ignoreTrivia is set, whitespaces or comments are ignored.
+ */
+export function createScanner(text, ignoreTrivia = false) {
+ const len = text.length;
+ let pos = 0, value = '', tokenOffset = 0, token = 16 /* SyntaxKind.Unknown */, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0 /* ScanError.None */;
+ function scanHexDigits(count, exact) {
+ let digits = 0;
+ let value = 0;
+ while (digits < count || !exact) {
+ let ch = text.charCodeAt(pos);
+ if (ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */) {
+ value = value * 16 + ch - 48 /* CharacterCodes._0 */;
+ }
+ else if (ch >= 65 /* CharacterCodes.A */ && ch <= 70 /* CharacterCodes.F */) {
+ value = value * 16 + ch - 65 /* CharacterCodes.A */ + 10;
+ }
+ else if (ch >= 97 /* CharacterCodes.a */ && ch <= 102 /* CharacterCodes.f */) {
+ value = value * 16 + ch - 97 /* CharacterCodes.a */ + 10;
+ }
+ else {
+ break;
+ }
+ pos++;
+ digits++;
+ }
+ if (digits < count) {
+ value = -1;
+ }
+ return value;
+ }
+ function setPosition(newPosition) {
+ pos = newPosition;
+ value = '';
+ tokenOffset = 0;
+ token = 16 /* SyntaxKind.Unknown */;
+ scanError = 0 /* ScanError.None */;
+ }
+ function scanNumber() {
+ let start = pos;
+ if (text.charCodeAt(pos) === 48 /* CharacterCodes._0 */) {
+ pos++;
+ }
+ else {
+ pos++;
+ while (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ }
+ }
+ if (pos < text.length && text.charCodeAt(pos) === 46 /* CharacterCodes.dot */) {
+ pos++;
+ if (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ while (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ }
+ }
+ else {
+ scanError = 3 /* ScanError.UnexpectedEndOfNumber */;
+ return text.substring(start, pos);
+ }
+ }
+ let end = pos;
+ if (pos < text.length && (text.charCodeAt(pos) === 69 /* CharacterCodes.E */ || text.charCodeAt(pos) === 101 /* CharacterCodes.e */)) {
+ pos++;
+ if (pos < text.length && text.charCodeAt(pos) === 43 /* CharacterCodes.plus */ || text.charCodeAt(pos) === 45 /* CharacterCodes.minus */) {
+ pos++;
+ }
+ if (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ while (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ }
+ end = pos;
+ }
+ else {
+ scanError = 3 /* ScanError.UnexpectedEndOfNumber */;
+ }
+ }
+ return text.substring(start, end);
+ }
+ function scanString() {
+ let result = '', start = pos;
+ while (true) {
+ if (pos >= len) {
+ result += text.substring(start, pos);
+ scanError = 2 /* ScanError.UnexpectedEndOfString */;
+ break;
+ }
+ const ch = text.charCodeAt(pos);
+ if (ch === 34 /* CharacterCodes.doubleQuote */) {
+ result += text.substring(start, pos);
+ pos++;
+ break;
+ }
+ if (ch === 92 /* CharacterCodes.backslash */) {
+ result += text.substring(start, pos);
+ pos++;
+ if (pos >= len) {
+ scanError = 2 /* ScanError.UnexpectedEndOfString */;
+ break;
+ }
+ const ch2 = text.charCodeAt(pos++);
+ switch (ch2) {
+ case 34 /* CharacterCodes.doubleQuote */:
+ result += '\"';
+ break;
+ case 92 /* CharacterCodes.backslash */:
+ result += '\\';
+ break;
+ case 47 /* CharacterCodes.slash */:
+ result += '/';
+ break;
+ case 98 /* CharacterCodes.b */:
+ result += '\b';
+ break;
+ case 102 /* CharacterCodes.f */:
+ result += '\f';
+ break;
+ case 110 /* CharacterCodes.n */:
+ result += '\n';
+ break;
+ case 114 /* CharacterCodes.r */:
+ result += '\r';
+ break;
+ case 116 /* CharacterCodes.t */:
+ result += '\t';
+ break;
+ case 117 /* CharacterCodes.u */:
+ const ch3 = scanHexDigits(4, true);
+ if (ch3 >= 0) {
+ result += String.fromCharCode(ch3);
+ }
+ else {
+ scanError = 4 /* ScanError.InvalidUnicode */;
+ }
+ break;
+ default:
+ scanError = 5 /* ScanError.InvalidEscapeCharacter */;
+ }
+ start = pos;
+ continue;
+ }
+ if (ch >= 0 && ch <= 0x1f) {
+ if (isLineBreak(ch)) {
+ result += text.substring(start, pos);
+ scanError = 2 /* ScanError.UnexpectedEndOfString */;
+ break;
+ }
+ else {
+ scanError = 6 /* ScanError.InvalidCharacter */;
+ // mark as error but continue with string
+ }
+ }
+ pos++;
+ }
+ return result;
+ }
+ function scanNext() {
+ value = '';
+ scanError = 0 /* ScanError.None */;
+ tokenOffset = pos;
+ lineStartOffset = lineNumber;
+ prevTokenLineStartOffset = tokenLineStartOffset;
+ if (pos >= len) {
+ // at the end
+ tokenOffset = len;
+ return token = 17 /* SyntaxKind.EOF */;
+ }
+ let code = text.charCodeAt(pos);
+ // trivia: whitespace
+ if (isWhiteSpace(code)) {
+ do {
+ pos++;
+ value += String.fromCharCode(code);
+ code = text.charCodeAt(pos);
+ } while (isWhiteSpace(code));
+ return token = 15 /* SyntaxKind.Trivia */;
+ }
+ // trivia: newlines
+ if (isLineBreak(code)) {
+ pos++;
+ value += String.fromCharCode(code);
+ if (code === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {
+ pos++;
+ value += '\n';
+ }
+ lineNumber++;
+ tokenLineStartOffset = pos;
+ return token = 14 /* SyntaxKind.LineBreakTrivia */;
+ }
+ switch (code) {
+ // tokens: []{}:,
+ case 123 /* CharacterCodes.openBrace */:
+ pos++;
+ return token = 1 /* SyntaxKind.OpenBraceToken */;
+ case 125 /* CharacterCodes.closeBrace */:
+ pos++;
+ return token = 2 /* SyntaxKind.CloseBraceToken */;
+ case 91 /* CharacterCodes.openBracket */:
+ pos++;
+ return token = 3 /* SyntaxKind.OpenBracketToken */;
+ case 93 /* CharacterCodes.closeBracket */:
+ pos++;
+ return token = 4 /* SyntaxKind.CloseBracketToken */;
+ case 58 /* CharacterCodes.colon */:
+ pos++;
+ return token = 6 /* SyntaxKind.ColonToken */;
+ case 44 /* CharacterCodes.comma */:
+ pos++;
+ return token = 5 /* SyntaxKind.CommaToken */;
+ // strings
+ case 34 /* CharacterCodes.doubleQuote */:
+ pos++;
+ value = scanString();
+ return token = 10 /* SyntaxKind.StringLiteral */;
+ // comments
+ case 47 /* CharacterCodes.slash */:
+ const start = pos - 1;
+ // Single-line comment
+ if (text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {
+ pos += 2;
+ while (pos < len) {
+ if (isLineBreak(text.charCodeAt(pos))) {
+ break;
+ }
+ pos++;
+ }
+ value = text.substring(start, pos);
+ return token = 12 /* SyntaxKind.LineCommentTrivia */;
+ }
+ // Multi-line comment
+ if (text.charCodeAt(pos + 1) === 42 /* CharacterCodes.asterisk */) {
+ pos += 2;
+ const safeLength = len - 1; // For lookahead.
+ let commentClosed = false;
+ while (pos < safeLength) {
+ const ch = text.charCodeAt(pos);
+ if (ch === 42 /* CharacterCodes.asterisk */ && text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {
+ pos += 2;
+ commentClosed = true;
+ break;
+ }
+ pos++;
+ if (isLineBreak(ch)) {
+ if (ch === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {
+ pos++;
+ }
+ lineNumber++;
+ tokenLineStartOffset = pos;
+ }
+ }
+ if (!commentClosed) {
+ pos++;
+ scanError = 1 /* ScanError.UnexpectedEndOfComment */;
+ }
+ value = text.substring(start, pos);
+ return token = 13 /* SyntaxKind.BlockCommentTrivia */;
+ }
+ // just a single slash
+ value += String.fromCharCode(code);
+ pos++;
+ return token = 16 /* SyntaxKind.Unknown */;
+ // numbers
+ case 45 /* CharacterCodes.minus */:
+ value += String.fromCharCode(code);
+ pos++;
+ if (pos === len || !isDigit(text.charCodeAt(pos))) {
+ return token = 16 /* SyntaxKind.Unknown */;
+ }
+ // found a minus, followed by a number so
+ // we fall through to proceed with scanning
+ // numbers
+ case 48 /* CharacterCodes._0 */:
+ case 49 /* CharacterCodes._1 */:
+ case 50 /* CharacterCodes._2 */:
+ case 51 /* CharacterCodes._3 */:
+ case 52 /* CharacterCodes._4 */:
+ case 53 /* CharacterCodes._5 */:
+ case 54 /* CharacterCodes._6 */:
+ case 55 /* CharacterCodes._7 */:
+ case 56 /* CharacterCodes._8 */:
+ case 57 /* CharacterCodes._9 */:
+ value += scanNumber();
+ return token = 11 /* SyntaxKind.NumericLiteral */;
+ // literals and unknown symbols
+ default:
+ // is a literal? Read the full word.
+ while (pos < len && isUnknownContentCharacter(code)) {
+ pos++;
+ code = text.charCodeAt(pos);
+ }
+ if (tokenOffset !== pos) {
+ value = text.substring(tokenOffset, pos);
+ // keywords: true, false, null
+ switch (value) {
+ case 'true': return token = 8 /* SyntaxKind.TrueKeyword */;
+ case 'false': return token = 9 /* SyntaxKind.FalseKeyword */;
+ case 'null': return token = 7 /* SyntaxKind.NullKeyword */;
+ }
+ return token = 16 /* SyntaxKind.Unknown */;
+ }
+ // some
+ value += String.fromCharCode(code);
+ pos++;
+ return token = 16 /* SyntaxKind.Unknown */;
+ }
+ }
+ function isUnknownContentCharacter(code) {
+ if (isWhiteSpace(code) || isLineBreak(code)) {
+ return false;
+ }
+ switch (code) {
+ case 125 /* CharacterCodes.closeBrace */:
+ case 93 /* CharacterCodes.closeBracket */:
+ case 123 /* CharacterCodes.openBrace */:
+ case 91 /* CharacterCodes.openBracket */:
+ case 34 /* CharacterCodes.doubleQuote */:
+ case 58 /* CharacterCodes.colon */:
+ case 44 /* CharacterCodes.comma */:
+ case 47 /* CharacterCodes.slash */:
+ return false;
+ }
+ return true;
+ }
+ function scanNextNonTrivia() {
+ let result;
+ do {
+ result = scanNext();
+ } while (result >= 12 /* SyntaxKind.LineCommentTrivia */ && result <= 15 /* SyntaxKind.Trivia */);
+ return result;
+ }
+ return {
+ setPosition: setPosition,
+ getPosition: () => pos,
+ scan: ignoreTrivia ? scanNextNonTrivia : scanNext,
+ getToken: () => token,
+ getTokenValue: () => value,
+ getTokenOffset: () => tokenOffset,
+ getTokenLength: () => pos - tokenOffset,
+ getTokenStartLine: () => lineStartOffset,
+ getTokenStartCharacter: () => tokenOffset - prevTokenLineStartOffset,
+ getTokenError: () => scanError,
+ };
+}
+function isWhiteSpace(ch) {
+ return ch === 32 /* CharacterCodes.space */ || ch === 9 /* CharacterCodes.tab */;
+}
+function isLineBreak(ch) {
+ return ch === 10 /* CharacterCodes.lineFeed */ || ch === 13 /* CharacterCodes.carriageReturn */;
+}
+function isDigit(ch) {
+ return ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */;
+}
+var CharacterCodes;
+(function (CharacterCodes) {
+ CharacterCodes[CharacterCodes["lineFeed"] = 10] = "lineFeed";
+ CharacterCodes[CharacterCodes["carriageReturn"] = 13] = "carriageReturn";
+ CharacterCodes[CharacterCodes["space"] = 32] = "space";
+ CharacterCodes[CharacterCodes["_0"] = 48] = "_0";
+ CharacterCodes[CharacterCodes["_1"] = 49] = "_1";
+ CharacterCodes[CharacterCodes["_2"] = 50] = "_2";
+ CharacterCodes[CharacterCodes["_3"] = 51] = "_3";
+ CharacterCodes[CharacterCodes["_4"] = 52] = "_4";
+ CharacterCodes[CharacterCodes["_5"] = 53] = "_5";
+ CharacterCodes[CharacterCodes["_6"] = 54] = "_6";
+ CharacterCodes[CharacterCodes["_7"] = 55] = "_7";
+ CharacterCodes[CharacterCodes["_8"] = 56] = "_8";
+ CharacterCodes[CharacterCodes["_9"] = 57] = "_9";
+ CharacterCodes[CharacterCodes["a"] = 97] = "a";
+ CharacterCodes[CharacterCodes["b"] = 98] = "b";
+ CharacterCodes[CharacterCodes["c"] = 99] = "c";
+ CharacterCodes[CharacterCodes["d"] = 100] = "d";
+ CharacterCodes[CharacterCodes["e"] = 101] = "e";
+ CharacterCodes[CharacterCodes["f"] = 102] = "f";
+ CharacterCodes[CharacterCodes["g"] = 103] = "g";
+ CharacterCodes[CharacterCodes["h"] = 104] = "h";
+ CharacterCodes[CharacterCodes["i"] = 105] = "i";
+ CharacterCodes[CharacterCodes["j"] = 106] = "j";
+ CharacterCodes[CharacterCodes["k"] = 107] = "k";
+ CharacterCodes[CharacterCodes["l"] = 108] = "l";
+ CharacterCodes[CharacterCodes["m"] = 109] = "m";
+ CharacterCodes[CharacterCodes["n"] = 110] = "n";
+ CharacterCodes[CharacterCodes["o"] = 111] = "o";
+ CharacterCodes[CharacterCodes["p"] = 112] = "p";
+ CharacterCodes[CharacterCodes["q"] = 113] = "q";
+ CharacterCodes[CharacterCodes["r"] = 114] = "r";
+ CharacterCodes[CharacterCodes["s"] = 115] = "s";
+ CharacterCodes[CharacterCodes["t"] = 116] = "t";
+ CharacterCodes[CharacterCodes["u"] = 117] = "u";
+ CharacterCodes[CharacterCodes["v"] = 118] = "v";
+ CharacterCodes[CharacterCodes["w"] = 119] = "w";
+ CharacterCodes[CharacterCodes["x"] = 120] = "x";
+ CharacterCodes[CharacterCodes["y"] = 121] = "y";
+ CharacterCodes[CharacterCodes["z"] = 122] = "z";
+ CharacterCodes[CharacterCodes["A"] = 65] = "A";
+ CharacterCodes[CharacterCodes["B"] = 66] = "B";
+ CharacterCodes[CharacterCodes["C"] = 67] = "C";
+ CharacterCodes[CharacterCodes["D"] = 68] = "D";
+ CharacterCodes[CharacterCodes["E"] = 69] = "E";
+ CharacterCodes[CharacterCodes["F"] = 70] = "F";
+ CharacterCodes[CharacterCodes["G"] = 71] = "G";
+ CharacterCodes[CharacterCodes["H"] = 72] = "H";
+ CharacterCodes[CharacterCodes["I"] = 73] = "I";
+ CharacterCodes[CharacterCodes["J"] = 74] = "J";
+ CharacterCodes[CharacterCodes["K"] = 75] = "K";
+ CharacterCodes[CharacterCodes["L"] = 76] = "L";
+ CharacterCodes[CharacterCodes["M"] = 77] = "M";
+ CharacterCodes[CharacterCodes["N"] = 78] = "N";
+ CharacterCodes[CharacterCodes["O"] = 79] = "O";
+ CharacterCodes[CharacterCodes["P"] = 80] = "P";
+ CharacterCodes[CharacterCodes["Q"] = 81] = "Q";
+ CharacterCodes[CharacterCodes["R"] = 82] = "R";
+ CharacterCodes[CharacterCodes["S"] = 83] = "S";
+ CharacterCodes[CharacterCodes["T"] = 84] = "T";
+ CharacterCodes[CharacterCodes["U"] = 85] = "U";
+ CharacterCodes[CharacterCodes["V"] = 86] = "V";
+ CharacterCodes[CharacterCodes["W"] = 87] = "W";
+ CharacterCodes[CharacterCodes["X"] = 88] = "X";
+ CharacterCodes[CharacterCodes["Y"] = 89] = "Y";
+ CharacterCodes[CharacterCodes["Z"] = 90] = "Z";
+ CharacterCodes[CharacterCodes["asterisk"] = 42] = "asterisk";
+ CharacterCodes[CharacterCodes["backslash"] = 92] = "backslash";
+ CharacterCodes[CharacterCodes["closeBrace"] = 125] = "closeBrace";
+ CharacterCodes[CharacterCodes["closeBracket"] = 93] = "closeBracket";
+ CharacterCodes[CharacterCodes["colon"] = 58] = "colon";
+ CharacterCodes[CharacterCodes["comma"] = 44] = "comma";
+ CharacterCodes[CharacterCodes["dot"] = 46] = "dot";
+ CharacterCodes[CharacterCodes["doubleQuote"] = 34] = "doubleQuote";
+ CharacterCodes[CharacterCodes["minus"] = 45] = "minus";
+ CharacterCodes[CharacterCodes["openBrace"] = 123] = "openBrace";
+ CharacterCodes[CharacterCodes["openBracket"] = 91] = "openBracket";
+ CharacterCodes[CharacterCodes["plus"] = 43] = "plus";
+ CharacterCodes[CharacterCodes["slash"] = 47] = "slash";
+ CharacterCodes[CharacterCodes["formFeed"] = 12] = "formFeed";
+ CharacterCodes[CharacterCodes["tab"] = 9] = "tab";
+})(CharacterCodes || (CharacterCodes = {}));
diff --git a/node_modules/jsonc-parser/lib/esm/main.d.ts b/node_modules/jsonc-parser/lib/esm/main.d.ts
new file mode 100644
index 0000000..e8a4540
--- /dev/null
+++ b/node_modules/jsonc-parser/lib/esm/main.d.ts
@@ -0,0 +1,349 @@
+/**
+ * Creates a JSON scanner on the given text.
+ * If ignoreTrivia is set, whitespaces or comments are ignored.
+ */
+export declare const createScanner: (text: string, ignoreTrivia?: boolean) => JSONScanner;
+export declare const enum ScanError {
+ None = 0,
+ UnexpectedEndOfComment = 1,
+ UnexpectedEndOfString = 2,
+ UnexpectedEndOfNumber = 3,
+ InvalidUnicode = 4,
+ InvalidEscapeCharacter = 5,
+ InvalidCharacter = 6
+}
+export declare const enum SyntaxKind {
+ OpenBraceToken = 1,
+ CloseBraceToken = 2,
+ OpenBracketToken = 3,
+ CloseBracketToken = 4,
+ CommaToken = 5,
+ ColonToken = 6,
+ NullKeyword = 7,
+ TrueKeyword = 8,
+ FalseKeyword = 9,
+ StringLiteral = 10,
+ NumericLiteral = 11,
+ LineCommentTrivia = 12,
+ BlockCommentTrivia = 13,
+ LineBreakTrivia = 14,
+ Trivia = 15,
+ Unknown = 16,
+ EOF = 17
+}
+/**
+ * The scanner object, representing a JSON scanner at a position in the input string.
+ */
+export interface JSONScanner {
+ /**
+ * Sets the scan position to a new offset. A call to 'scan' is needed to get the first token.
+ */
+ setPosition(pos: number): void;
+ /**
+ * Read the next token. Returns the token code.
+ */
+ scan(): SyntaxKind;
+ /**
+ * Returns the zero-based current scan position, which is after the last read token.
+ */
+ getPosition(): number;
+ /**
+ * Returns the last read token.
+ */
+ getToken(): SyntaxKind;
+ /**
+ * Returns the last read token value. The value for strings is the decoded string content. For numbers it's of type number, for boolean it's true or false.
+ */
+ getTokenValue(): string;
+ /**
+ * The zero-based start offset of the last read token.
+ */
+ getTokenOffset(): number;
+ /**
+ * The length of the last read token.
+ */
+ getTokenLength(): number;
+ /**
+ * The zero-based start line number of the last read token.
+ */
+ getTokenStartLine(): number;
+ /**
+ * The zero-based start character (column) of the last read token.
+ */
+ getTokenStartCharacter(): number;
+ /**
+ * An error code of the last scan.
+ */
+ getTokenError(): ScanError;
+}
+/**
+ * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.
+ */
+export declare const getLocation: (text: string, position: number) => Location;
+/**
+ * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ * Therefore, always check the errors list to find out if the input was valid.
+ */
+export declare const parse: (text: string, errors?: ParseError[], options?: ParseOptions) => any;
+/**
+ * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ */
+export declare const parseTree: (text: string, errors?: ParseError[], options?: ParseOptions) => Node | undefined;
+/**
+ * Finds the node at the given path in a JSON DOM.
+ */
+export declare const findNodeAtLocation: (root: Node, path: JSONPath) => Node | undefined;
+/**
+ * Finds the innermost node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.
+ */
+export declare const findNodeAtOffset: (root: Node, offset: number, includeRightBound?: boolean) => Node | undefined;
+/**
+ * Gets the JSON path of the given JSON DOM node
+ */
+export declare const getNodePath: (node: Node) => JSONPath;
+/**
+ * Evaluates the JavaScript object of the given JSON DOM node
+ */
+export declare const getNodeValue: (node: Node) => any;
+/**
+ * Parses the given text and invokes the visitor functions for each object, array and literal reached.
+ */
+export declare const visit: (text: string, visitor: JSONVisitor, options?: ParseOptions) => any;
+/**
+ * Takes JSON with JavaScript-style comments and remove
+ * them. Optionally replaces every none-newline character
+ * of comments with a replaceCharacter
+ */
+export declare const stripComments: (text: string, replaceCh?: string) => string;
+export interface ParseError {
+ error: ParseErrorCode;
+ offset: number;
+ length: number;
+}
+export declare const enum ParseErrorCode {
+ InvalidSymbol = 1,
+ InvalidNumberFormat = 2,
+ PropertyNameExpected = 3,
+ ValueExpected = 4,
+ ColonExpected = 5,
+ CommaExpected = 6,
+ CloseBraceExpected = 7,
+ CloseBracketExpected = 8,
+ EndOfFileExpected = 9,
+ InvalidCommentToken = 10,
+ UnexpectedEndOfComment = 11,
+ UnexpectedEndOfString = 12,
+ UnexpectedEndOfNumber = 13,
+ InvalidUnicode = 14,
+ InvalidEscapeCharacter = 15,
+ InvalidCharacter = 16
+}
+export declare function printParseErrorCode(code: ParseErrorCode): "InvalidSymbol" | "InvalidNumberFormat" | "PropertyNameExpected" | "ValueExpected" | "ColonExpected" | "CommaExpected" | "CloseBraceExpected" | "CloseBracketExpected" | "EndOfFileExpected" | "InvalidCommentToken" | "UnexpectedEndOfComment" | "UnexpectedEndOfString" | "UnexpectedEndOfNumber" | "InvalidUnicode" | "InvalidEscapeCharacter" | "InvalidCharacter" | "<unknown ParseErrorCode>";
+export declare type NodeType = 'object' | 'array' | 'property' | 'string' | 'number' | 'boolean' | 'null';
+export interface Node {
+ readonly type: NodeType;
+ readonly value?: any;
+ readonly offset: number;
+ readonly length: number;
+ readonly colonOffset?: number;
+ readonly parent?: Node;
+ readonly children?: Node[];
+}
+/**
+ * A {@linkcode JSONPath} segment. Either a string representing an object property name
+ * or a number (starting at 0) for array indices.
+ */
+export declare type Segment = string | number;
+export declare type JSONPath = Segment[];
+export interface Location {
+ /**
+ * The previous property key or literal value (string, number, boolean or null) or undefined.
+ */
+ previousNode?: Node;
+ /**
+ * The path describing the location in the JSON document. The path consists of a sequence of strings
+ * representing an object property or numbers for array indices.
+ */
+ path: JSONPath;
+ /**
+ * Matches the locations path against a pattern consisting of strings (for properties) and numbers (for array indices).
+ * '*' will match a single segment of any property name or index.
+ * '**' will match a sequence of segments of any property name or index, or no segment.
+ */
+ matches: (patterns: JSONPath) => boolean;
+ /**
+ * If set, the location's offset is at a property key.
+ */
+ isAtPropertyKey: boolean;
+}
+export interface ParseOptions {
+ disallowComments?: boolean;
+ allowTrailingComma?: boolean;
+ allowEmptyContent?: boolean;
+}
+/**
+ * Visitor called by {@linkcode visit} when parsing JSON.
+ *
+ * The visitor functions have the following common parameters:
+ * - `offset`: Global offset within the JSON document, starting at 0
+ * - `startLine`: Line number, starting at 0
+ * - `startCharacter`: Start character (column) within the current line, starting at 0
+ *
+ * Additionally some functions have a `pathSupplier` parameter which can be used to obtain the
+ * current `JSONPath` within the document.
+ */
+export interface JSONVisitor {
+ /**
+ * Invoked when an open brace is encountered and an object is started. The offset and length represent the location of the open brace.
+ */
+ onObjectBegin?: (offset: number, length: number, startLine: number, startCharacter: number, pathSupplier: () => JSONPath) => void;
+ /**
+ * Invoked when a property is encountered. The offset and length represent the location of the property name.
+ * The `JSONPath` created by the `pathSupplier` refers to the enclosing JSON object, it does not include the
+ * property name yet.
+ */
+ onObjectProperty?: (property: string, offset: number, length: number, startLine: number, startCharacter: number, pathSupplier: () => JSONPath) => void;
+ /**
+ * Invoked when a closing brace is encountered and an object is completed. The offset and length represent the location of the closing brace.
+ */
+ onObjectEnd?: (offset: number, length: number, startLine: number, startCharacter: number) => void;
+ /**
+ * Invoked when an open bracket is encountered. The offset and length represent the location of the open bracket.
+ */
+ onArrayBegin?: (offset: number, length: number, startLine: number, startCharacter: number, pathSupplier: () => JSONPath) => void;
+ /**
+ * Invoked when a closing bracket is encountered. The offset and length represent the location of the closing bracket.
+ */
+ onArrayEnd?: (offset: number, length: number, startLine: number, startCharacter: number) => void;
+ /**
+ * Invoked when a literal value is encountered. The offset and length represent the location of the literal value.
+ */
+ onLiteralValue?: (value: any, offset: number, length: number, startLine: number, startCharacter: number, pathSupplier: () => JSONPath) => void;
+ /**
+ * Invoked when a comma or colon separator is encountered. The offset and length represent the location of the separator.
+ */
+ onSeparator?: (character: string, offset: number, length: number, startLine: number, startCharacter: number) => void;
+ /**
+ * When comments are allowed, invoked when a line or block comment is encountered. The offset and length represent the location of the comment.
+ */
+ onComment?: (offset: number, length: number, startLine: number, startCharacter: number) => void;
+ /**
+ * Invoked on an error.
+ */
+ onError?: (error: ParseErrorCode, offset: number, length: number, startLine: number, startCharacter: number) => void;
+}
+/**
+ * An edit result describes a textual edit operation. It is the result of a {@linkcode format} and {@linkcode modify} operation.
+ * It consist of one or more edits describing insertions, replacements or removals of text segments.
+ * * The offsets of the edits refer to the original state of the document.
+ * * No two edits change or remove the same range of text in the original document.
+ * * Multiple edits can have the same offset if they are multiple inserts, or an insert followed by a remove or replace.
+ * * The order in the array defines which edit is applied first.
+ * To apply an edit result use {@linkcode applyEdits}.
+ * In general multiple EditResults must not be concatenated because they might impact each other, producing incorrect or malformed JSON data.
+ */
+export declare type EditResult = Edit[];
+/**
+ * Represents a text modification
+ */
+export interface Edit {
+ /**
+ * The start offset of the modification.
+ */
+ offset: number;
+ /**
+ * The length of the modification. Must not be negative. Empty length represents an *insert*.
+ */
+ length: number;
+ /**
+ * The new content. Empty content represents a *remove*.
+ */
+ content: string;
+}
+/**
+ * A text range in the document
+*/
+export interface Range {
+ /**
+ * The start offset of the range.
+ */
+ offset: number;
+ /**
+ * The length of the range. Must not be negative.
+ */
+ length: number;
+}
+/**
+ * Options used by {@linkcode format} when computing the formatting edit operations
+ */
+export interface FormattingOptions {
+ /**
+ * If indentation is based on spaces (`insertSpaces` = true), the number of spaces that make an indent.
+ */
+ tabSize?: number;
+ /**
+ * Is indentation based on spaces?
+ */
+ insertSpaces?: boolean;
+ /**
+ * The default 'end of line' character. If not set, '\n' is used as default.
+ */
+ eol?: string;
+ /**
+ * If set, will add a new line at the end of the document.
+ */
+ insertFinalNewline?: boolean;
+ /**
+ * If true, will keep line positions as is in the formatting
+ */
+ keepLines?: boolean;
+}
+/**
+ * Computes the edit operations needed to format a JSON document.
+ *
+ * @param documentText The input text
+ * @param range The range to format or `undefined` to format the full content
+ * @param options The formatting options
+ * @returns The edit operations describing the formatting changes to the original document following the format described in {@linkcode EditResult}.
+ * To apply the edit operations to the input, use {@linkcode applyEdits}.
+ */
+export declare function format(documentText: string, range: Range | undefined, options: FormattingOptions): EditResult;
+/**
+ * Options used by {@linkcode modify} when computing the modification edit operations
+ */
+export interface ModificationOptions {
+ /**
+ * Formatting options. If undefined, the newly inserted code will be inserted unformatted.
+ */
+ formattingOptions?: FormattingOptions;
+ /**
+ * Default false. If `JSONPath` refers to an index of an array and `isArrayInsertion` is `true`, then
+ * {@linkcode modify} will insert a new item at that location instead of overwriting its contents.
+ */
+ isArrayInsertion?: boolean;
+ /**
+ * Optional function to define the insertion index given an existing list of properties.
+ */
+ getInsertionIndex?: (properties: string[]) => number;
+}
+/**
+ * Computes the edit operations needed to modify a value in the JSON document.
+ *
+ * @param documentText The input text
+ * @param path The path of the value to change. The path represents either to the document root, a property or an array item.
+ * If the path points to an non-existing property or item, it will be created.
+ * @param value The new value for the specified property or item. If the value is undefined,
+ * the property or item will be removed.
+ * @param options Options
+ * @returns The edit operations describing the changes to the original document, following the format described in {@linkcode EditResult}.
+ * To apply the edit operations to the input, use {@linkcode applyEdits}.
+ */
+export declare function modify(text: string, path: JSONPath, value: any, options: ModificationOptions): EditResult;
+/**
+ * Applies edits to an input string.
+ * @param text The input text
+ * @param edits Edit operations following the format described in {@linkcode EditResult}.
+ * @returns The text with the applied edits.
+ * @throws An error if the edit operations are not well-formed as described in {@linkcode EditResult}.
+ */
+export declare function applyEdits(text: string, edits: EditResult): string;
diff --git a/node_modules/jsonc-parser/lib/esm/main.js b/node_modules/jsonc-parser/lib/esm/main.js
new file mode 100644
index 0000000..18e3cb7
--- /dev/null
+++ b/node_modules/jsonc-parser/lib/esm/main.js
@@ -0,0 +1,178 @@
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+'use strict';
+import * as formatter from './impl/format';
+import * as edit from './impl/edit';
+import * as scanner from './impl/scanner';
+import * as parser from './impl/parser';
+/**
+ * Creates a JSON scanner on the given text.
+ * If ignoreTrivia is set, whitespaces or comments are ignored.
+ */
+export const createScanner = scanner.createScanner;
+export var ScanError;
+(function (ScanError) {
+ ScanError[ScanError["None"] = 0] = "None";
+ ScanError[ScanError["UnexpectedEndOfComment"] = 1] = "UnexpectedEndOfComment";
+ ScanError[ScanError["UnexpectedEndOfString"] = 2] = "UnexpectedEndOfString";
+ ScanError[ScanError["UnexpectedEndOfNumber"] = 3] = "UnexpectedEndOfNumber";
+ ScanError[ScanError["InvalidUnicode"] = 4] = "InvalidUnicode";
+ ScanError[ScanError["InvalidEscapeCharacter"] = 5] = "InvalidEscapeCharacter";
+ ScanError[ScanError["InvalidCharacter"] = 6] = "InvalidCharacter";
+})(ScanError || (ScanError = {}));
+export var SyntaxKind;
+(function (SyntaxKind) {
+ SyntaxKind[SyntaxKind["OpenBraceToken"] = 1] = "OpenBraceToken";
+ SyntaxKind[SyntaxKind["CloseBraceToken"] = 2] = "CloseBraceToken";
+ SyntaxKind[SyntaxKind["OpenBracketToken"] = 3] = "OpenBracketToken";
+ SyntaxKind[SyntaxKind["CloseBracketToken"] = 4] = "CloseBracketToken";
+ SyntaxKind[SyntaxKind["CommaToken"] = 5] = "CommaToken";
+ SyntaxKind[SyntaxKind["ColonToken"] = 6] = "ColonToken";
+ SyntaxKind[SyntaxKind["NullKeyword"] = 7] = "NullKeyword";
+ SyntaxKind[SyntaxKind["TrueKeyword"] = 8] = "TrueKeyword";
+ SyntaxKind[SyntaxKind["FalseKeyword"] = 9] = "FalseKeyword";
+ SyntaxKind[SyntaxKind["StringLiteral"] = 10] = "StringLiteral";
+ SyntaxKind[SyntaxKind["NumericLiteral"] = 11] = "NumericLiteral";
+ SyntaxKind[SyntaxKind["LineCommentTrivia"] = 12] = "LineCommentTrivia";
+ SyntaxKind[SyntaxKind["BlockCommentTrivia"] = 13] = "BlockCommentTrivia";
+ SyntaxKind[SyntaxKind["LineBreakTrivia"] = 14] = "LineBreakTrivia";
+ SyntaxKind[SyntaxKind["Trivia"] = 15] = "Trivia";
+ SyntaxKind[SyntaxKind["Unknown"] = 16] = "Unknown";
+ SyntaxKind[SyntaxKind["EOF"] = 17] = "EOF";
+})(SyntaxKind || (SyntaxKind = {}));
+/**
+ * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.
+ */
+export const getLocation = parser.getLocation;
+/**
+ * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ * Therefore, always check the errors list to find out if the input was valid.
+ */
+export const parse = parser.parse;
+/**
+ * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ */
+export const parseTree = parser.parseTree;
+/**
+ * Finds the node at the given path in a JSON DOM.
+ */
+export const findNodeAtLocation = parser.findNodeAtLocation;
+/**
+ * Finds the innermost node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.
+ */
+export const findNodeAtOffset = parser.findNodeAtOffset;
+/**
+ * Gets the JSON path of the given JSON DOM node
+ */
+export const getNodePath = parser.getNodePath;
+/**
+ * Evaluates the JavaScript object of the given JSON DOM node
+ */
+export const getNodeValue = parser.getNodeValue;
+/**
+ * Parses the given text and invokes the visitor functions for each object, array and literal reached.
+ */
+export const visit = parser.visit;
+/**
+ * Takes JSON with JavaScript-style comments and remove
+ * them. Optionally replaces every none-newline character
+ * of comments with a replaceCharacter
+ */
+export const stripComments = parser.stripComments;
+export var ParseErrorCode;
+(function (ParseErrorCode) {
+ ParseErrorCode[ParseErrorCode["InvalidSymbol"] = 1] = "InvalidSymbol";
+ ParseErrorCode[ParseErrorCode["InvalidNumberFormat"] = 2] = "InvalidNumberFormat";
+ ParseErrorCode[ParseErrorCode["PropertyNameExpected"] = 3] = "PropertyNameExpected";
+ ParseErrorCode[ParseErrorCode["ValueExpected"] = 4] = "ValueExpected";
+ ParseErrorCode[ParseErrorCode["ColonExpected"] = 5] = "ColonExpected";
+ ParseErrorCode[ParseErrorCode["CommaExpected"] = 6] = "CommaExpected";
+ ParseErrorCode[ParseErrorCode["CloseBraceExpected"] = 7] = "CloseBraceExpected";
+ ParseErrorCode[ParseErrorCode["CloseBracketExpected"] = 8] = "CloseBracketExpected";
+ ParseErrorCode[ParseErrorCode["EndOfFileExpected"] = 9] = "EndOfFileExpected";
+ ParseErrorCode[ParseErrorCode["InvalidCommentToken"] = 10] = "InvalidCommentToken";
+ ParseErrorCode[ParseErrorCode["UnexpectedEndOfComment"] = 11] = "UnexpectedEndOfComment";
+ ParseErrorCode[ParseErrorCode["UnexpectedEndOfString"] = 12] = "UnexpectedEndOfString";
+ ParseErrorCode[ParseErrorCode["UnexpectedEndOfNumber"] = 13] = "UnexpectedEndOfNumber";
+ ParseErrorCode[ParseErrorCode["InvalidUnicode"] = 14] = "InvalidUnicode";
+ ParseErrorCode[ParseErrorCode["InvalidEscapeCharacter"] = 15] = "InvalidEscapeCharacter";
+ ParseErrorCode[ParseErrorCode["InvalidCharacter"] = 16] = "InvalidCharacter";
+})(ParseErrorCode || (ParseErrorCode = {}));
+export function printParseErrorCode(code) {
+ switch (code) {
+ case 1 /* ParseErrorCode.InvalidSymbol */: return 'InvalidSymbol';
+ case 2 /* ParseErrorCode.InvalidNumberFormat */: return 'InvalidNumberFormat';
+ case 3 /* ParseErrorCode.PropertyNameExpected */: return 'PropertyNameExpected';
+ case 4 /* ParseErrorCode.ValueExpected */: return 'ValueExpected';
+ case 5 /* ParseErrorCode.ColonExpected */: return 'ColonExpected';
+ case 6 /* ParseErrorCode.CommaExpected */: return 'CommaExpected';
+ case 7 /* ParseErrorCode.CloseBraceExpected */: return 'CloseBraceExpected';
+ case 8 /* ParseErrorCode.CloseBracketExpected */: return 'CloseBracketExpected';
+ case 9 /* ParseErrorCode.EndOfFileExpected */: return 'EndOfFileExpected';
+ case 10 /* ParseErrorCode.InvalidCommentToken */: return 'InvalidCommentToken';
+ case 11 /* ParseErrorCode.UnexpectedEndOfComment */: return 'UnexpectedEndOfComment';
+ case 12 /* ParseErrorCode.UnexpectedEndOfString */: return 'UnexpectedEndOfString';
+ case 13 /* ParseErrorCode.UnexpectedEndOfNumber */: return 'UnexpectedEndOfNumber';
+ case 14 /* ParseErrorCode.InvalidUnicode */: return 'InvalidUnicode';
+ case 15 /* ParseErrorCode.InvalidEscapeCharacter */: return 'InvalidEscapeCharacter';
+ case 16 /* ParseErrorCode.InvalidCharacter */: return 'InvalidCharacter';
+ }
+ return '<unknown ParseErrorCode>';
+}
+/**
+ * Computes the edit operations needed to format a JSON document.
+ *
+ * @param documentText The input text
+ * @param range The range to format or `undefined` to format the full content
+ * @param options The formatting options
+ * @returns The edit operations describing the formatting changes to the original document following the format described in {@linkcode EditResult}.
+ * To apply the edit operations to the input, use {@linkcode applyEdits}.
+ */
+export function format(documentText, range, options) {
+ return formatter.format(documentText, range, options);
+}
+/**
+ * Computes the edit operations needed to modify a value in the JSON document.
+ *
+ * @param documentText The input text
+ * @param path The path of the value to change. The path represents either to the document root, a property or an array item.
+ * If the path points to an non-existing property or item, it will be created.
+ * @param value The new value for the specified property or item. If the value is undefined,
+ * the property or item will be removed.
+ * @param options Options
+ * @returns The edit operations describing the changes to the original document, following the format described in {@linkcode EditResult}.
+ * To apply the edit operations to the input, use {@linkcode applyEdits}.
+ */
+export function modify(text, path, value, options) {
+ return edit.setProperty(text, path, value, options);
+}
+/**
+ * Applies edits to an input string.
+ * @param text The input text
+ * @param edits Edit operations following the format described in {@linkcode EditResult}.
+ * @returns The text with the applied edits.
+ * @throws An error if the edit operations are not well-formed as described in {@linkcode EditResult}.
+ */
+export function applyEdits(text, edits) {
+ let sortedEdits = edits.slice(0).sort((a, b) => {
+ const diff = a.offset - b.offset;
+ if (diff === 0) {
+ return a.length - b.length;
+ }
+ return diff;
+ });
+ let lastModifiedOffset = text.length;
+ for (let i = sortedEdits.length - 1; i >= 0; i--) {
+ let e = sortedEdits[i];
+ if (e.offset + e.length <= lastModifiedOffset) {
+ text = edit.applyEdit(text, e);
+ }
+ else {
+ throw new Error('Overlapping edit');
+ }
+ lastModifiedOffset = e.offset;
+ }
+ return text;
+}
diff --git a/node_modules/jsonc-parser/lib/umd/impl/edit.js b/node_modules/jsonc-parser/lib/umd/impl/edit.js
new file mode 100644
index 0000000..f9aeefe
--- /dev/null
+++ b/node_modules/jsonc-parser/lib/umd/impl/edit.js
@@ -0,0 +1,201 @@
+(function (factory) {
+ if (typeof module === "object" && typeof module.exports === "object") {
+ var v = factory(require, exports);
+ if (v !== undefined) module.exports = v;
+ }
+ else if (typeof define === "function" && define.amd) {
+ define(["require", "exports", "./format", "./parser"], factory);
+ }
+})(function (require, exports) {
+ /*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+ 'use strict';
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.isWS = exports.applyEdit = exports.setProperty = exports.removeProperty = void 0;
+ const format_1 = require("./format");
+ const parser_1 = require("./parser");
+ function removeProperty(text, path, options) {
+ return setProperty(text, path, void 0, options);
+ }
+ exports.removeProperty = removeProperty;
+ function setProperty(text, originalPath, value, options) {
+ const path = originalPath.slice();
+ const errors = [];
+ const root = (0, parser_1.parseTree)(text, errors);
+ let parent = void 0;
+ let lastSegment = void 0;
+ while (path.length > 0) {
+ lastSegment = path.pop();
+ parent = (0, parser_1.findNodeAtLocation)(root, path);
+ if (parent === void 0 && value !== void 0) {
+ if (typeof lastSegment === 'string') {
+ value = { [lastSegment]: value };
+ }
+ else {
+ value = [value];
+ }
+ }
+ else {
+ break;
+ }
+ }
+ if (!parent) {
+ // empty document
+ if (value === void 0) { // delete
+ throw new Error('Can not delete in empty document');
+ }
+ return withFormatting(text, { offset: root ? root.offset : 0, length: root ? root.length : 0, content: JSON.stringify(value) }, options);
+ }
+ else if (parent.type === 'object' && typeof lastSegment === 'string' && Array.isArray(parent.children)) {
+ const existing = (0, parser_1.findNodeAtLocation)(parent, [lastSegment]);
+ if (existing !== void 0) {
+ if (value === void 0) { // delete
+ if (!existing.parent) {
+ throw new Error('Malformed AST');
+ }
+ const propertyIndex = parent.children.indexOf(existing.parent);
+ let removeBegin;
+ let removeEnd = existing.parent.offset + existing.parent.length;
+ if (propertyIndex > 0) {
+ // remove the comma of the previous node
+ let previous = parent.children[propertyIndex - 1];
+ removeBegin = previous.offset + previous.length;
+ }
+ else {
+ removeBegin = parent.offset + 1;
+ if (parent.children.length > 1) {
+ // remove the comma of the next node
+ let next = parent.children[1];
+ removeEnd = next.offset;
+ }
+ }
+ return withFormatting(text, { offset: removeBegin, length: removeEnd - removeBegin, content: '' }, options);
+ }
+ else {
+ // set value of existing property
+ return withFormatting(text, { offset: existing.offset, length: existing.length, content: JSON.stringify(value) }, options);
+ }
+ }
+ else {
+ if (value === void 0) { // delete
+ return []; // property does not exist, nothing to do
+ }
+ const newProperty = `${JSON.stringify(lastSegment)}: ${JSON.stringify(value)}`;
+ const index = options.getInsertionIndex ? options.getInsertionIndex(parent.children.map(p => p.children[0].value)) : parent.children.length;
+ let edit;
+ if (index > 0) {
+ let previous = parent.children[index - 1];
+ edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };
+ }
+ else if (parent.children.length === 0) {
+ edit = { offset: parent.offset + 1, length: 0, content: newProperty };
+ }
+ else {
+ edit = { offset: parent.offset + 1, length: 0, content: newProperty + ',' };
+ }
+ return withFormatting(text, edit, options);
+ }
+ }
+ else if (parent.type === 'array' && typeof lastSegment === 'number' && Array.isArray(parent.children)) {
+ const insertIndex = lastSegment;
+ if (insertIndex === -1) {
+ // Insert
+ const newProperty = `${JSON.stringify(value)}`;
+ let edit;
+ if (parent.children.length === 0) {
+ edit = { offset: parent.offset + 1, length: 0, content: newProperty };
+ }
+ else {
+ const previous = parent.children[parent.children.length - 1];
+ edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };
+ }
+ return withFormatting(text, edit, options);
+ }
+ else if (value === void 0 && parent.children.length >= 0) {
+ // Removal
+ const removalIndex = lastSegment;
+ const toRemove = parent.children[removalIndex];
+ let edit;
+ if (parent.children.length === 1) {
+ // only item
+ edit = { offset: parent.offset + 1, length: parent.length - 2, content: '' };
+ }
+ else if (parent.children.length - 1 === removalIndex) {
+ // last item
+ let previous = parent.children[removalIndex - 1];
+ let offset = previous.offset + previous.length;
+ let parentEndOffset = parent.offset + parent.length;
+ edit = { offset, length: parentEndOffset - 2 - offset, content: '' };
+ }
+ else {
+ edit = { offset: toRemove.offset, length: parent.children[removalIndex + 1].offset - toRemove.offset, content: '' };
+ }
+ return withFormatting(text, edit, options);
+ }
+ else if (value !== void 0) {
+ let edit;
+ const newProperty = `${JSON.stringify(value)}`;
+ if (!options.isArrayInsertion && parent.children.length > lastSegment) {
+ const toModify = parent.children[lastSegment];
+ edit = { offset: toModify.offset, length: toModify.length, content: newProperty };
+ }
+ else if (parent.children.length === 0 || lastSegment === 0) {
+ edit = { offset: parent.offset + 1, length: 0, content: parent.children.length === 0 ? newProperty : newProperty + ',' };
+ }
+ else {
+ const index = lastSegment > parent.children.length ? parent.children.length : lastSegment;
+ const previous = parent.children[index - 1];
+ edit = { offset: previous.offset + previous.length, length: 0, content: ',' + newProperty };
+ }
+ return withFormatting(text, edit, options);
+ }
+ else {
+ throw new Error(`Can not ${value === void 0 ? 'remove' : (options.isArrayInsertion ? 'insert' : 'modify')} Array index ${insertIndex} as length is not sufficient`);
+ }
+ }
+ else {
+ throw new Error(`Can not add ${typeof lastSegment !== 'number' ? 'index' : 'property'} to parent of type ${parent.type}`);
+ }
+ }
+ exports.setProperty = setProperty;
+ function withFormatting(text, edit, options) {
+ if (!options.formattingOptions) {
+ return [edit];
+ }
+ // apply the edit
+ let newText = applyEdit(text, edit);
+ // format the new text
+ let begin = edit.offset;
+ let end = edit.offset + edit.content.length;
+ if (edit.length === 0 || edit.content.length === 0) { // insert or remove
+ while (begin > 0 && !(0, format_1.isEOL)(newText, begin - 1)) {
+ begin--;
+ }
+ while (end < newText.length && !(0, format_1.isEOL)(newText, end)) {
+ end++;
+ }
+ }
+ const edits = (0, format_1.format)(newText, { offset: begin, length: end - begin }, { ...options.formattingOptions, keepLines: false });
+ // apply the formatting edits and track the begin and end offsets of the changes
+ for (let i = edits.length - 1; i >= 0; i--) {
+ const edit = edits[i];
+ newText = applyEdit(newText, edit);
+ begin = Math.min(begin, edit.offset);
+ end = Math.max(end, edit.offset + edit.length);
+ end += edit.content.length - edit.length;
+ }
+ // create a single edit with all changes
+ const editLength = text.length - (newText.length - end) - begin;
+ return [{ offset: begin, length: editLength, content: newText.substring(begin, end) }];
+ }
+ function applyEdit(text, edit) {
+ return text.substring(0, edit.offset) + edit.content + text.substring(edit.offset + edit.length);
+ }
+ exports.applyEdit = applyEdit;
+ function isWS(text, offset) {
+ return '\r\n \t'.indexOf(text.charAt(offset)) !== -1;
+ }
+ exports.isWS = isWS;
+});
diff --git a/node_modules/jsonc-parser/lib/umd/impl/format.js b/node_modules/jsonc-parser/lib/umd/impl/format.js
new file mode 100644
index 0000000..6213c33
--- /dev/null
+++ b/node_modules/jsonc-parser/lib/umd/impl/format.js
@@ -0,0 +1,265 @@
+(function (factory) {
+ if (typeof module === "object" && typeof module.exports === "object") {
+ var v = factory(require, exports);
+ if (v !== undefined) module.exports = v;
+ }
+ else if (typeof define === "function" && define.amd) {
+ define(["require", "exports", "./scanner"], factory);
+ }
+})(function (require, exports) {
+ /*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+ 'use strict';
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.isEOL = exports.format = void 0;
+ const scanner_1 = require("./scanner");
+ function format(documentText, range, options) {
+ let initialIndentLevel;
+ let formatText;
+ let formatTextStart;
+ let rangeStart;
+ let rangeEnd;
+ if (range) {
+ rangeStart = range.offset;
+ rangeEnd = rangeStart + range.length;
+ formatTextStart = rangeStart;
+ while (formatTextStart > 0 && !isEOL(documentText, formatTextStart - 1)) {
+ formatTextStart--;
+ }
+ let endOffset = rangeEnd;
+ while (endOffset < documentText.length && !isEOL(documentText, endOffset)) {
+ endOffset++;
+ }
+ formatText = documentText.substring(formatTextStart, endOffset);
+ initialIndentLevel = computeIndentLevel(formatText, options);
+ }
+ else {
+ formatText = documentText;
+ initialIndentLevel = 0;
+ formatTextStart = 0;
+ rangeStart = 0;
+ rangeEnd = documentText.length;
+ }
+ const eol = getEOL(options, documentText);
+ let numberLineBreaks = 0;
+ let indentLevel = 0;
+ let indentValue;
+ if (options.insertSpaces) {
+ indentValue = repeat(' ', options.tabSize || 4);
+ }
+ else {
+ indentValue = '\t';
+ }
+ let scanner = (0, scanner_1.createScanner)(formatText, false);
+ let hasError = false;
+ function newLinesAndIndent() {
+ if (numberLineBreaks > 1) {
+ return repeat(eol, numberLineBreaks) + repeat(indentValue, initialIndentLevel + indentLevel);
+ }
+ else {
+ return eol + repeat(indentValue, initialIndentLevel + indentLevel);
+ }
+ }
+ function scanNext() {
+ let token = scanner.scan();
+ numberLineBreaks = 0;
+ while (token === 15 /* SyntaxKind.Trivia */ || token === 14 /* SyntaxKind.LineBreakTrivia */) {
+ if (token === 14 /* SyntaxKind.LineBreakTrivia */ && options.keepLines) {
+ numberLineBreaks += 1;
+ }
+ else if (token === 14 /* SyntaxKind.LineBreakTrivia */) {
+ numberLineBreaks = 1;
+ }
+ token = scanner.scan();
+ }
+ hasError = token === 16 /* SyntaxKind.Unknown */ || scanner.getTokenError() !== 0 /* ScanError.None */;
+ return token;
+ }
+ const editOperations = [];
+ function addEdit(text, startOffset, endOffset) {
+ if (!hasError && (!range || (startOffset < rangeEnd && endOffset > rangeStart)) && documentText.substring(startOffset, endOffset) !== text) {
+ editOperations.push({ offset: startOffset, length: endOffset - startOffset, content: text });
+ }
+ }
+ let firstToken = scanNext();
+ if (options.keepLines && numberLineBreaks > 0) {
+ addEdit(repeat(eol, numberLineBreaks), 0, 0);
+ }
+ if (firstToken !== 17 /* SyntaxKind.EOF */) {
+ let firstTokenStart = scanner.getTokenOffset() + formatTextStart;
+ let initialIndent = repeat(indentValue, initialIndentLevel);
+ addEdit(initialIndent, formatTextStart, firstTokenStart);
+ }
+ while (firstToken !== 17 /* SyntaxKind.EOF */) {
+ let firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart;
+ let secondToken = scanNext();
+ let replaceContent = '';
+ let needsLineBreak = false;
+ while (numberLineBreaks === 0 && (secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */)) {
+ let commentTokenStart = scanner.getTokenOffset() + formatTextStart;
+ addEdit(' ', firstTokenEnd, commentTokenStart);
+ firstTokenEnd = scanner.getTokenOffset() + scanner.getTokenLength() + formatTextStart;
+ needsLineBreak = secondToken === 12 /* SyntaxKind.LineCommentTrivia */;
+ replaceContent = needsLineBreak ? newLinesAndIndent() : '';
+ secondToken = scanNext();
+ }
+ if (secondToken === 2 /* SyntaxKind.CloseBraceToken */) {
+ if (firstToken !== 1 /* SyntaxKind.OpenBraceToken */) {
+ indentLevel--;
+ }
+ ;
+ if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 1 /* SyntaxKind.OpenBraceToken */) {
+ replaceContent = newLinesAndIndent();
+ }
+ else if (options.keepLines) {
+ replaceContent = ' ';
+ }
+ }
+ else if (secondToken === 4 /* SyntaxKind.CloseBracketToken */) {
+ if (firstToken !== 3 /* SyntaxKind.OpenBracketToken */) {
+ indentLevel--;
+ }
+ ;
+ if (options.keepLines && numberLineBreaks > 0 || !options.keepLines && firstToken !== 3 /* SyntaxKind.OpenBracketToken */) {
+ replaceContent = newLinesAndIndent();
+ }
+ else if (options.keepLines) {
+ replaceContent = ' ';
+ }
+ }
+ else {
+ switch (firstToken) {
+ case 3 /* SyntaxKind.OpenBracketToken */:
+ case 1 /* SyntaxKind.OpenBraceToken */:
+ indentLevel++;
+ if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) {
+ replaceContent = newLinesAndIndent();
+ }
+ else {
+ replaceContent = ' ';
+ }
+ break;
+ case 5 /* SyntaxKind.CommaToken */:
+ if (options.keepLines && numberLineBreaks > 0 || !options.keepLines) {
+ replaceContent = newLinesAndIndent();
+ }
+ else {
+ replaceContent = ' ';
+ }
+ break;
+ case 12 /* SyntaxKind.LineCommentTrivia */:
+ replaceContent = newLinesAndIndent();
+ break;
+ case 13 /* SyntaxKind.BlockCommentTrivia */:
+ if (numberLineBreaks > 0) {
+ replaceContent = newLinesAndIndent();
+ }
+ else if (!needsLineBreak) {
+ replaceContent = ' ';
+ }
+ break;
+ case 6 /* SyntaxKind.ColonToken */:
+ if (options.keepLines && numberLineBreaks > 0) {
+ replaceContent = newLinesAndIndent();
+ }
+ else if (!needsLineBreak) {
+ replaceContent = ' ';
+ }
+ break;
+ case 10 /* SyntaxKind.StringLiteral */:
+ if (options.keepLines && numberLineBreaks > 0) {
+ replaceContent = newLinesAndIndent();
+ }
+ else if (secondToken === 6 /* SyntaxKind.ColonToken */ && !needsLineBreak) {
+ replaceContent = '';
+ }
+ break;
+ case 7 /* SyntaxKind.NullKeyword */:
+ case 8 /* SyntaxKind.TrueKeyword */:
+ case 9 /* SyntaxKind.FalseKeyword */:
+ case 11 /* SyntaxKind.NumericLiteral */:
+ case 2 /* SyntaxKind.CloseBraceToken */:
+ case 4 /* SyntaxKind.CloseBracketToken */:
+ if (options.keepLines && numberLineBreaks > 0) {
+ replaceContent = newLinesAndIndent();
+ }
+ else {
+ if ((secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */) && !needsLineBreak) {
+ replaceContent = ' ';
+ }
+ else if (secondToken !== 5 /* SyntaxKind.CommaToken */ && secondToken !== 17 /* SyntaxKind.EOF */) {
+ hasError = true;
+ }
+ }
+ break;
+ case 16 /* SyntaxKind.Unknown */:
+ hasError = true;
+ break;
+ }
+ if (numberLineBreaks > 0 && (secondToken === 12 /* SyntaxKind.LineCommentTrivia */ || secondToken === 13 /* SyntaxKind.BlockCommentTrivia */)) {
+ replaceContent = newLinesAndIndent();
+ }
+ }
+ if (secondToken === 17 /* SyntaxKind.EOF */) {
+ if (options.keepLines && numberLineBreaks > 0) {
+ replaceContent = newLinesAndIndent();
+ }
+ else {
+ replaceContent = options.insertFinalNewline ? eol : '';
+ }
+ }
+ const secondTokenStart = scanner.getTokenOffset() + formatTextStart;
+ addEdit(replaceContent, firstTokenEnd, secondTokenStart);
+ firstToken = secondToken;
+ }
+ return editOperations;
+ }
+ exports.format = format;
+ function repeat(s, count) {
+ let result = '';
+ for (let i = 0; i < count; i++) {
+ result += s;
+ }
+ return result;
+ }
+ function computeIndentLevel(content, options) {
+ let i = 0;
+ let nChars = 0;
+ const tabSize = options.tabSize || 4;
+ while (i < content.length) {
+ let ch = content.charAt(i);
+ if (ch === ' ') {
+ nChars++;
+ }
+ else if (ch === '\t') {
+ nChars += tabSize;
+ }
+ else {
+ break;
+ }
+ i++;
+ }
+ return Math.floor(nChars / tabSize);
+ }
+ function getEOL(options, text) {
+ for (let i = 0; i < text.length; i++) {
+ const ch = text.charAt(i);
+ if (ch === '\r') {
+ if (i + 1 < text.length && text.charAt(i + 1) === '\n') {
+ return '\r\n';
+ }
+ return '\r';
+ }
+ else if (ch === '\n') {
+ return '\n';
+ }
+ }
+ return (options && options.eol) || '\n';
+ }
+ function isEOL(text, offset) {
+ return '\r\n'.indexOf(text.charAt(offset)) !== -1;
+ }
+ exports.isEOL = isEOL;
+});
diff --git a/node_modules/jsonc-parser/lib/umd/impl/parser.js b/node_modules/jsonc-parser/lib/umd/impl/parser.js
new file mode 100644
index 0000000..211e1d1
--- /dev/null
+++ b/node_modules/jsonc-parser/lib/umd/impl/parser.js
@@ -0,0 +1,655 @@
+(function (factory) {
+ if (typeof module === "object" && typeof module.exports === "object") {
+ var v = factory(require, exports);
+ if (v !== undefined) module.exports = v;
+ }
+ else if (typeof define === "function" && define.amd) {
+ define(["require", "exports", "./scanner"], factory);
+ }
+})(function (require, exports) {
+ /*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+ 'use strict';
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.getNodeType = exports.stripComments = exports.visit = exports.findNodeAtOffset = exports.contains = exports.getNodeValue = exports.getNodePath = exports.findNodeAtLocation = exports.parseTree = exports.parse = exports.getLocation = void 0;
+ const scanner_1 = require("./scanner");
+ var ParseOptions;
+ (function (ParseOptions) {
+ ParseOptions.DEFAULT = {
+ allowTrailingComma: false
+ };
+ })(ParseOptions || (ParseOptions = {}));
+ /**
+ * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.
+ */
+ function getLocation(text, position) {
+ const segments = []; // strings or numbers
+ const earlyReturnException = new Object();
+ let previousNode = undefined;
+ const previousNodeInst = {
+ value: {},
+ offset: 0,
+ length: 0,
+ type: 'object',
+ parent: undefined
+ };
+ let isAtPropertyKey = false;
+ function setPreviousNode(value, offset, length, type) {
+ previousNodeInst.value = value;
+ previousNodeInst.offset = offset;
+ previousNodeInst.length = length;
+ previousNodeInst.type = type;
+ previousNodeInst.colonOffset = undefined;
+ previousNode = previousNodeInst;
+ }
+ try {
+ visit(text, {
+ onObjectBegin: (offset, length) => {
+ if (position <= offset) {
+ throw earlyReturnException;
+ }
+ previousNode = undefined;
+ isAtPropertyKey = position > offset;
+ segments.push(''); // push a placeholder (will be replaced)
+ },
+ onObjectProperty: (name, offset, length) => {
+ if (position < offset) {
+ throw earlyReturnException;
+ }
+ setPreviousNode(name, offset, length, 'property');
+ segments[segments.length - 1] = name;
+ if (position <= offset + length) {
+ throw earlyReturnException;
+ }
+ },
+ onObjectEnd: (offset, length) => {
+ if (position <= offset) {
+ throw earlyReturnException;
+ }
+ previousNode = undefined;
+ segments.pop();
+ },
+ onArrayBegin: (offset, length) => {
+ if (position <= offset) {
+ throw earlyReturnException;
+ }
+ previousNode = undefined;
+ segments.push(0);
+ },
+ onArrayEnd: (offset, length) => {
+ if (position <= offset) {
+ throw earlyReturnException;
+ }
+ previousNode = undefined;
+ segments.pop();
+ },
+ onLiteralValue: (value, offset, length) => {
+ if (position < offset) {
+ throw earlyReturnException;
+ }
+ setPreviousNode(value, offset, length, getNodeType(value));
+ if (position <= offset + length) {
+ throw earlyReturnException;
+ }
+ },
+ onSeparator: (sep, offset, length) => {
+ if (position <= offset) {
+ throw earlyReturnException;
+ }
+ if (sep === ':' && previousNode && previousNode.type === 'property') {
+ previousNode.colonOffset = offset;
+ isAtPropertyKey = false;
+ previousNode = undefined;
+ }
+ else if (sep === ',') {
+ const last = segments[segments.length - 1];
+ if (typeof last === 'number') {
+ segments[segments.length - 1] = last + 1;
+ }
+ else {
+ isAtPropertyKey = true;
+ segments[segments.length - 1] = '';
+ }
+ previousNode = undefined;
+ }
+ }
+ });
+ }
+ catch (e) {
+ if (e !== earlyReturnException) {
+ throw e;
+ }
+ }
+ return {
+ path: segments,
+ previousNode,
+ isAtPropertyKey,
+ matches: (pattern) => {
+ let k = 0;
+ for (let i = 0; k < pattern.length && i < segments.length; i++) {
+ if (pattern[k] === segments[i] || pattern[k] === '*') {
+ k++;
+ }
+ else if (pattern[k] !== '**') {
+ return false;
+ }
+ }
+ return k === pattern.length;
+ }
+ };
+ }
+ exports.getLocation = getLocation;
+ /**
+ * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ * Therefore always check the errors list to find out if the input was valid.
+ */
+ function parse(text, errors = [], options = ParseOptions.DEFAULT) {
+ let currentProperty = null;
+ let currentParent = [];
+ const previousParents = [];
+ function onValue(value) {
+ if (Array.isArray(currentParent)) {
+ currentParent.push(value);
+ }
+ else if (currentProperty !== null) {
+ currentParent[currentProperty] = value;
+ }
+ }
+ const visitor = {
+ onObjectBegin: () => {
+ const object = {};
+ onValue(object);
+ previousParents.push(currentParent);
+ currentParent = object;
+ currentProperty = null;
+ },
+ onObjectProperty: (name) => {
+ currentProperty = name;
+ },
+ onObjectEnd: () => {
+ currentParent = previousParents.pop();
+ },
+ onArrayBegin: () => {
+ const array = [];
+ onValue(array);
+ previousParents.push(currentParent);
+ currentParent = array;
+ currentProperty = null;
+ },
+ onArrayEnd: () => {
+ currentParent = previousParents.pop();
+ },
+ onLiteralValue: onValue,
+ onError: (error, offset, length) => {
+ errors.push({ error, offset, length });
+ }
+ };
+ visit(text, visitor, options);
+ return currentParent[0];
+ }
+ exports.parse = parse;
+ /**
+ * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ */
+ function parseTree(text, errors = [], options = ParseOptions.DEFAULT) {
+ let currentParent = { type: 'array', offset: -1, length: -1, children: [], parent: undefined }; // artificial root
+ function ensurePropertyComplete(endOffset) {
+ if (currentParent.type === 'property') {
+ currentParent.length = endOffset - currentParent.offset;
+ currentParent = currentParent.parent;
+ }
+ }
+ function onValue(valueNode) {
+ currentParent.children.push(valueNode);
+ return valueNode;
+ }
+ const visitor = {
+ onObjectBegin: (offset) => {
+ currentParent = onValue({ type: 'object', offset, length: -1, parent: currentParent, children: [] });
+ },
+ onObjectProperty: (name, offset, length) => {
+ currentParent = onValue({ type: 'property', offset, length: -1, parent: currentParent, children: [] });
+ currentParent.children.push({ type: 'string', value: name, offset, length, parent: currentParent });
+ },
+ onObjectEnd: (offset, length) => {
+ ensurePropertyComplete(offset + length); // in case of a missing value for a property: make sure property is complete
+ currentParent.length = offset + length - currentParent.offset;
+ currentParent = currentParent.parent;
+ ensurePropertyComplete(offset + length);
+ },
+ onArrayBegin: (offset, length) => {
+ currentParent = onValue({ type: 'array', offset, length: -1, parent: currentParent, children: [] });
+ },
+ onArrayEnd: (offset, length) => {
+ currentParent.length = offset + length - currentParent.offset;
+ currentParent = currentParent.parent;
+ ensurePropertyComplete(offset + length);
+ },
+ onLiteralValue: (value, offset, length) => {
+ onValue({ type: getNodeType(value), offset, length, parent: currentParent, value });
+ ensurePropertyComplete(offset + length);
+ },
+ onSeparator: (sep, offset, length) => {
+ if (currentParent.type === 'property') {
+ if (sep === ':') {
+ currentParent.colonOffset = offset;
+ }
+ else if (sep === ',') {
+ ensurePropertyComplete(offset);
+ }
+ }
+ },
+ onError: (error, offset, length) => {
+ errors.push({ error, offset, length });
+ }
+ };
+ visit(text, visitor, options);
+ const result = currentParent.children[0];
+ if (result) {
+ delete result.parent;
+ }
+ return result;
+ }
+ exports.parseTree = parseTree;
+ /**
+ * Finds the node at the given path in a JSON DOM.
+ */
+ function findNodeAtLocation(root, path) {
+ if (!root) {
+ return undefined;
+ }
+ let node = root;
+ for (let segment of path) {
+ if (typeof segment === 'string') {
+ if (node.type !== 'object' || !Array.isArray(node.children)) {
+ return undefined;
+ }
+ let found = false;
+ for (const propertyNode of node.children) {
+ if (Array.isArray(propertyNode.children) && propertyNode.children[0].value === segment && propertyNode.children.length === 2) {
+ node = propertyNode.children[1];
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ return undefined;
+ }
+ }
+ else {
+ const index = segment;
+ if (node.type !== 'array' || index < 0 || !Array.isArray(node.children) || index >= node.children.length) {
+ return undefined;
+ }
+ node = node.children[index];
+ }
+ }
+ return node;
+ }
+ exports.findNodeAtLocation = findNodeAtLocation;
+ /**
+ * Gets the JSON path of the given JSON DOM node
+ */
+ function getNodePath(node) {
+ if (!node.parent || !node.parent.children) {
+ return [];
+ }
+ const path = getNodePath(node.parent);
+ if (node.parent.type === 'property') {
+ const key = node.parent.children[0].value;
+ path.push(key);
+ }
+ else if (node.parent.type === 'array') {
+ const index = node.parent.children.indexOf(node);
+ if (index !== -1) {
+ path.push(index);
+ }
+ }
+ return path;
+ }
+ exports.getNodePath = getNodePath;
+ /**
+ * Evaluates the JavaScript object of the given JSON DOM node
+ */
+ function getNodeValue(node) {
+ switch (node.type) {
+ case 'array':
+ return node.children.map(getNodeValue);
+ case 'object':
+ const obj = Object.create(null);
+ for (let prop of node.children) {
+ const valueNode = prop.children[1];
+ if (valueNode) {
+ obj[prop.children[0].value] = getNodeValue(valueNode);
+ }
+ }
+ return obj;
+ case 'null':
+ case 'string':
+ case 'number':
+ case 'boolean':
+ return node.value;
+ default:
+ return undefined;
+ }
+ }
+ exports.getNodeValue = getNodeValue;
+ function contains(node, offset, includeRightBound = false) {
+ return (offset >= node.offset && offset < (node.offset + node.length)) || includeRightBound && (offset === (node.offset + node.length));
+ }
+ exports.contains = contains;
+ /**
+ * Finds the most inner node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.
+ */
+ function findNodeAtOffset(node, offset, includeRightBound = false) {
+ if (contains(node, offset, includeRightBound)) {
+ const children = node.children;
+ if (Array.isArray(children)) {
+ for (let i = 0; i < children.length && children[i].offset <= offset; i++) {
+ const item = findNodeAtOffset(children[i], offset, includeRightBound);
+ if (item) {
+ return item;
+ }
+ }
+ }
+ return node;
+ }
+ return undefined;
+ }
+ exports.findNodeAtOffset = findNodeAtOffset;
+ /**
+ * Parses the given text and invokes the visitor functions for each object, array and literal reached.
+ */
+ function visit(text, visitor, options = ParseOptions.DEFAULT) {
+ const _scanner = (0, scanner_1.createScanner)(text, false);
+ // Important: Only pass copies of this to visitor functions to prevent accidental modification, and
+ // to not affect visitor functions which stored a reference to a previous JSONPath
+ const _jsonPath = [];
+ function toNoArgVisit(visitFunction) {
+ return visitFunction ? () => visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;
+ }
+ function toNoArgVisitWithPath(visitFunction) {
+ return visitFunction ? () => visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;
+ }
+ function toOneArgVisit(visitFunction) {
+ return visitFunction ? (arg) => visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;
+ }
+ function toOneArgVisitWithPath(visitFunction) {
+ return visitFunction ? (arg) => visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;
+ }
+ const onObjectBegin = toNoArgVisitWithPath(visitor.onObjectBegin), onObjectProperty = toOneArgVisitWithPath(visitor.onObjectProperty), onObjectEnd = toNoArgVisit(visitor.onObjectEnd), onArrayBegin = toNoArgVisitWithPath(visitor.onArrayBegin), onArrayEnd = toNoArgVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisitWithPath(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError);
+ const disallowComments = options && options.disallowComments;
+ const allowTrailingComma = options && options.allowTrailingComma;
+ function scanNext() {
+ while (true) {
+ const token = _scanner.scan();
+ switch (_scanner.getTokenError()) {
+ case 4 /* ScanError.InvalidUnicode */:
+ handleError(14 /* ParseErrorCode.InvalidUnicode */);
+ break;
+ case 5 /* ScanError.InvalidEscapeCharacter */:
+ handleError(15 /* ParseErrorCode.InvalidEscapeCharacter */);
+ break;
+ case 3 /* ScanError.UnexpectedEndOfNumber */:
+ handleError(13 /* ParseErrorCode.UnexpectedEndOfNumber */);
+ break;
+ case 1 /* ScanError.UnexpectedEndOfComment */:
+ if (!disallowComments) {
+ handleError(11 /* ParseErrorCode.UnexpectedEndOfComment */);
+ }
+ break;
+ case 2 /* ScanError.UnexpectedEndOfString */:
+ handleError(12 /* ParseErrorCode.UnexpectedEndOfString */);
+ break;
+ case 6 /* ScanError.InvalidCharacter */:
+ handleError(16 /* ParseErrorCode.InvalidCharacter */);
+ break;
+ }
+ switch (token) {
+ case 12 /* SyntaxKind.LineCommentTrivia */:
+ case 13 /* SyntaxKind.BlockCommentTrivia */:
+ if (disallowComments) {
+ handleError(10 /* ParseErrorCode.InvalidCommentToken */);
+ }
+ else {
+ onComment();
+ }
+ break;
+ case 16 /* SyntaxKind.Unknown */:
+ handleError(1 /* ParseErrorCode.InvalidSymbol */);
+ break;
+ case 15 /* SyntaxKind.Trivia */:
+ case 14 /* SyntaxKind.LineBreakTrivia */:
+ break;
+ default:
+ return token;
+ }
+ }
+ }
+ function handleError(error, skipUntilAfter = [], skipUntil = []) {
+ onError(error);
+ if (skipUntilAfter.length + skipUntil.length > 0) {
+ let token = _scanner.getToken();
+ while (token !== 17 /* SyntaxKind.EOF */) {
+ if (skipUntilAfter.indexOf(token) !== -1) {
+ scanNext();
+ break;
+ }
+ else if (skipUntil.indexOf(token) !== -1) {
+ break;
+ }
+ token = scanNext();
+ }
+ }
+ }
+ function parseString(isValue) {
+ const value = _scanner.getTokenValue();
+ if (isValue) {
+ onLiteralValue(value);
+ }
+ else {
+ onObjectProperty(value);
+ // add property name afterwards
+ _jsonPath.push(value);
+ }
+ scanNext();
+ return true;
+ }
+ function parseLiteral() {
+ switch (_scanner.getToken()) {
+ case 11 /* SyntaxKind.NumericLiteral */:
+ const tokenValue = _scanner.getTokenValue();
+ let value = Number(tokenValue);
+ if (isNaN(value)) {
+ handleError(2 /* ParseErrorCode.InvalidNumberFormat */);
+ value = 0;
+ }
+ onLiteralValue(value);
+ break;
+ case 7 /* SyntaxKind.NullKeyword */:
+ onLiteralValue(null);
+ break;
+ case 8 /* SyntaxKind.TrueKeyword */:
+ onLiteralValue(true);
+ break;
+ case 9 /* SyntaxKind.FalseKeyword */:
+ onLiteralValue(false);
+ break;
+ default:
+ return false;
+ }
+ scanNext();
+ return true;
+ }
+ function parseProperty() {
+ if (_scanner.getToken() !== 10 /* SyntaxKind.StringLiteral */) {
+ handleError(3 /* ParseErrorCode.PropertyNameExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
+ return false;
+ }
+ parseString(false);
+ if (_scanner.getToken() === 6 /* SyntaxKind.ColonToken */) {
+ onSeparator(':');
+ scanNext(); // consume colon
+ if (!parseValue()) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
+ }
+ }
+ else {
+ handleError(5 /* ParseErrorCode.ColonExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
+ }
+ _jsonPath.pop(); // remove processed property name
+ return true;
+ }
+ function parseObject() {
+ onObjectBegin();
+ scanNext(); // consume open brace
+ let needsComma = false;
+ while (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {
+ if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {
+ if (!needsComma) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
+ }
+ onSeparator(',');
+ scanNext(); // consume comma
+ if (_scanner.getToken() === 2 /* SyntaxKind.CloseBraceToken */ && allowTrailingComma) {
+ break;
+ }
+ }
+ else if (needsComma) {
+ handleError(6 /* ParseErrorCode.CommaExpected */, [], []);
+ }
+ if (!parseProperty()) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
+ }
+ needsComma = true;
+ }
+ onObjectEnd();
+ if (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */) {
+ handleError(7 /* ParseErrorCode.CloseBraceExpected */, [2 /* SyntaxKind.CloseBraceToken */], []);
+ }
+ else {
+ scanNext(); // consume close brace
+ }
+ return true;
+ }
+ function parseArray() {
+ onArrayBegin();
+ scanNext(); // consume open bracket
+ let isFirstElement = true;
+ let needsComma = false;
+ while (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {
+ if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {
+ if (!needsComma) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
+ }
+ onSeparator(',');
+ scanNext(); // consume comma
+ if (_scanner.getToken() === 4 /* SyntaxKind.CloseBracketToken */ && allowTrailingComma) {
+ break;
+ }
+ }
+ else if (needsComma) {
+ handleError(6 /* ParseErrorCode.CommaExpected */, [], []);
+ }
+ if (isFirstElement) {
+ _jsonPath.push(0);
+ isFirstElement = false;
+ }
+ else {
+ _jsonPath[_jsonPath.length - 1]++;
+ }
+ if (!parseValue()) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], [4 /* SyntaxKind.CloseBracketToken */, 5 /* SyntaxKind.CommaToken */]);
+ }
+ needsComma = true;
+ }
+ onArrayEnd();
+ if (!isFirstElement) {
+ _jsonPath.pop(); // remove array index
+ }
+ if (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */) {
+ handleError(8 /* ParseErrorCode.CloseBracketExpected */, [4 /* SyntaxKind.CloseBracketToken */], []);
+ }
+ else {
+ scanNext(); // consume close bracket
+ }
+ return true;
+ }
+ function parseValue() {
+ switch (_scanner.getToken()) {
+ case 3 /* SyntaxKind.OpenBracketToken */:
+ return parseArray();
+ case 1 /* SyntaxKind.OpenBraceToken */:
+ return parseObject();
+ case 10 /* SyntaxKind.StringLiteral */:
+ return parseString(true);
+ default:
+ return parseLiteral();
+ }
+ }
+ scanNext();
+ if (_scanner.getToken() === 17 /* SyntaxKind.EOF */) {
+ if (options.allowEmptyContent) {
+ return true;
+ }
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
+ return false;
+ }
+ if (!parseValue()) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
+ return false;
+ }
+ if (_scanner.getToken() !== 17 /* SyntaxKind.EOF */) {
+ handleError(9 /* ParseErrorCode.EndOfFileExpected */, [], []);
+ }
+ return true;
+ }
+ exports.visit = visit;
+ /**
+ * Takes JSON with JavaScript-style comments and remove
+ * them. Optionally replaces every none-newline character
+ * of comments with a replaceCharacter
+ */
+ function stripComments(text, replaceCh) {
+ let _scanner = (0, scanner_1.createScanner)(text), parts = [], kind, offset = 0, pos;
+ do {
+ pos = _scanner.getPosition();
+ kind = _scanner.scan();
+ switch (kind) {
+ case 12 /* SyntaxKind.LineCommentTrivia */:
+ case 13 /* SyntaxKind.BlockCommentTrivia */:
+ case 17 /* SyntaxKind.EOF */:
+ if (offset !== pos) {
+ parts.push(text.substring(offset, pos));
+ }
+ if (replaceCh !== undefined) {
+ parts.push(_scanner.getTokenValue().replace(/[^\r\n]/g, replaceCh));
+ }
+ offset = _scanner.getPosition();
+ break;
+ }
+ } while (kind !== 17 /* SyntaxKind.EOF */);
+ return parts.join('');
+ }
+ exports.stripComments = stripComments;
+ function getNodeType(value) {
+ switch (typeof value) {
+ case 'boolean': return 'boolean';
+ case 'number': return 'number';
+ case 'string': return 'string';
+ case 'object': {
+ if (!value) {
+ return 'null';
+ }
+ else if (Array.isArray(value)) {
+ return 'array';
+ }
+ return 'object';
+ }
+ default: return 'null';
+ }
+ }
+ exports.getNodeType = getNodeType;
+});
diff --git a/node_modules/jsonc-parser/lib/umd/impl/scanner.js b/node_modules/jsonc-parser/lib/umd/impl/scanner.js
new file mode 100644
index 0000000..ebca65f
--- /dev/null
+++ b/node_modules/jsonc-parser/lib/umd/impl/scanner.js
@@ -0,0 +1,456 @@
+(function (factory) {
+ if (typeof module === "object" && typeof module.exports === "object") {
+ var v = factory(require, exports);
+ if (v !== undefined) module.exports = v;
+ }
+ else if (typeof define === "function" && define.amd) {
+ define(["require", "exports"], factory);
+ }
+})(function (require, exports) {
+ /*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+ 'use strict';
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.createScanner = void 0;
+ /**
+ * Creates a JSON scanner on the given text.
+ * If ignoreTrivia is set, whitespaces or comments are ignored.
+ */
+ function createScanner(text, ignoreTrivia = false) {
+ const len = text.length;
+ let pos = 0, value = '', tokenOffset = 0, token = 16 /* SyntaxKind.Unknown */, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0 /* ScanError.None */;
+ function scanHexDigits(count, exact) {
+ let digits = 0;
+ let value = 0;
+ while (digits < count || !exact) {
+ let ch = text.charCodeAt(pos);
+ if (ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */) {
+ value = value * 16 + ch - 48 /* CharacterCodes._0 */;
+ }
+ else if (ch >= 65 /* CharacterCodes.A */ && ch <= 70 /* CharacterCodes.F */) {
+ value = value * 16 + ch - 65 /* CharacterCodes.A */ + 10;
+ }
+ else if (ch >= 97 /* CharacterCodes.a */ && ch <= 102 /* CharacterCodes.f */) {
+ value = value * 16 + ch - 97 /* CharacterCodes.a */ + 10;
+ }
+ else {
+ break;
+ }
+ pos++;
+ digits++;
+ }
+ if (digits < count) {
+ value = -1;
+ }
+ return value;
+ }
+ function setPosition(newPosition) {
+ pos = newPosition;
+ value = '';
+ tokenOffset = 0;
+ token = 16 /* SyntaxKind.Unknown */;
+ scanError = 0 /* ScanError.None */;
+ }
+ function scanNumber() {
+ let start = pos;
+ if (text.charCodeAt(pos) === 48 /* CharacterCodes._0 */) {
+ pos++;
+ }
+ else {
+ pos++;
+ while (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ }
+ }
+ if (pos < text.length && text.charCodeAt(pos) === 46 /* CharacterCodes.dot */) {
+ pos++;
+ if (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ while (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ }
+ }
+ else {
+ scanError = 3 /* ScanError.UnexpectedEndOfNumber */;
+ return text.substring(start, pos);
+ }
+ }
+ let end = pos;
+ if (pos < text.length && (text.charCodeAt(pos) === 69 /* CharacterCodes.E */ || text.charCodeAt(pos) === 101 /* CharacterCodes.e */)) {
+ pos++;
+ if (pos < text.length && text.charCodeAt(pos) === 43 /* CharacterCodes.plus */ || text.charCodeAt(pos) === 45 /* CharacterCodes.minus */) {
+ pos++;
+ }
+ if (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ while (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ }
+ end = pos;
+ }
+ else {
+ scanError = 3 /* ScanError.UnexpectedEndOfNumber */;
+ }
+ }
+ return text.substring(start, end);
+ }
+ function scanString() {
+ let result = '', start = pos;
+ while (true) {
+ if (pos >= len) {
+ result += text.substring(start, pos);
+ scanError = 2 /* ScanError.UnexpectedEndOfString */;
+ break;
+ }
+ const ch = text.charCodeAt(pos);
+ if (ch === 34 /* CharacterCodes.doubleQuote */) {
+ result += text.substring(start, pos);
+ pos++;
+ break;
+ }
+ if (ch === 92 /* CharacterCodes.backslash */) {
+ result += text.substring(start, pos);
+ pos++;
+ if (pos >= len) {
+ scanError = 2 /* ScanError.UnexpectedEndOfString */;
+ break;
+ }
+ const ch2 = text.charCodeAt(pos++);
+ switch (ch2) {
+ case 34 /* CharacterCodes.doubleQuote */:
+ result += '\"';
+ break;
+ case 92 /* CharacterCodes.backslash */:
+ result += '\\';
+ break;
+ case 47 /* CharacterCodes.slash */:
+ result += '/';
+ break;
+ case 98 /* CharacterCodes.b */:
+ result += '\b';
+ break;
+ case 102 /* CharacterCodes.f */:
+ result += '\f';
+ break;
+ case 110 /* CharacterCodes.n */:
+ result += '\n';
+ break;
+ case 114 /* CharacterCodes.r */:
+ result += '\r';
+ break;
+ case 116 /* CharacterCodes.t */:
+ result += '\t';
+ break;
+ case 117 /* CharacterCodes.u */:
+ const ch3 = scanHexDigits(4, true);
+ if (ch3 >= 0) {
+ result += String.fromCharCode(ch3);
+ }
+ else {
+ scanError = 4 /* ScanError.InvalidUnicode */;
+ }
+ break;
+ default:
+ scanError = 5 /* ScanError.InvalidEscapeCharacter */;
+ }
+ start = pos;
+ continue;
+ }
+ if (ch >= 0 && ch <= 0x1f) {
+ if (isLineBreak(ch)) {
+ result += text.substring(start, pos);
+ scanError = 2 /* ScanError.UnexpectedEndOfString */;
+ break;
+ }
+ else {
+ scanError = 6 /* ScanError.InvalidCharacter */;
+ // mark as error but continue with string
+ }
+ }
+ pos++;
+ }
+ return result;
+ }
+ function scanNext() {
+ value = '';
+ scanError = 0 /* ScanError.None */;
+ tokenOffset = pos;
+ lineStartOffset = lineNumber;
+ prevTokenLineStartOffset = tokenLineStartOffset;
+ if (pos >= len) {
+ // at the end
+ tokenOffset = len;
+ return token = 17 /* SyntaxKind.EOF */;
+ }
+ let code = text.charCodeAt(pos);
+ // trivia: whitespace
+ if (isWhiteSpace(code)) {
+ do {
+ pos++;
+ value += String.fromCharCode(code);
+ code = text.charCodeAt(pos);
+ } while (isWhiteSpace(code));
+ return token = 15 /* SyntaxKind.Trivia */;
+ }
+ // trivia: newlines
+ if (isLineBreak(code)) {
+ pos++;
+ value += String.fromCharCode(code);
+ if (code === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {
+ pos++;
+ value += '\n';
+ }
+ lineNumber++;
+ tokenLineStartOffset = pos;
+ return token = 14 /* SyntaxKind.LineBreakTrivia */;
+ }
+ switch (code) {
+ // tokens: []{}:,
+ case 123 /* CharacterCodes.openBrace */:
+ pos++;
+ return token = 1 /* SyntaxKind.OpenBraceToken */;
+ case 125 /* CharacterCodes.closeBrace */:
+ pos++;
+ return token = 2 /* SyntaxKind.CloseBraceToken */;
+ case 91 /* CharacterCodes.openBracket */:
+ pos++;
+ return token = 3 /* SyntaxKind.OpenBracketToken */;
+ case 93 /* CharacterCodes.closeBracket */:
+ pos++;
+ return token = 4 /* SyntaxKind.CloseBracketToken */;
+ case 58 /* CharacterCodes.colon */:
+ pos++;
+ return token = 6 /* SyntaxKind.ColonToken */;
+ case 44 /* CharacterCodes.comma */:
+ pos++;
+ return token = 5 /* SyntaxKind.CommaToken */;
+ // strings
+ case 34 /* CharacterCodes.doubleQuote */:
+ pos++;
+ value = scanString();
+ return token = 10 /* SyntaxKind.StringLiteral */;
+ // comments
+ case 47 /* CharacterCodes.slash */:
+ const start = pos - 1;
+ // Single-line comment
+ if (text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {
+ pos += 2;
+ while (pos < len) {
+ if (isLineBreak(text.charCodeAt(pos))) {
+ break;
+ }
+ pos++;
+ }
+ value = text.substring(start, pos);
+ return token = 12 /* SyntaxKind.LineCommentTrivia */;
+ }
+ // Multi-line comment
+ if (text.charCodeAt(pos + 1) === 42 /* CharacterCodes.asterisk */) {
+ pos += 2;
+ const safeLength = len - 1; // For lookahead.
+ let commentClosed = false;
+ while (pos < safeLength) {
+ const ch = text.charCodeAt(pos);
+ if (ch === 42 /* CharacterCodes.asterisk */ && text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {
+ pos += 2;
+ commentClosed = true;
+ break;
+ }
+ pos++;
+ if (isLineBreak(ch)) {
+ if (ch === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {
+ pos++;
+ }
+ lineNumber++;
+ tokenLineStartOffset = pos;
+ }
+ }
+ if (!commentClosed) {
+ pos++;
+ scanError = 1 /* ScanError.UnexpectedEndOfComment */;
+ }
+ value = text.substring(start, pos);
+ return token = 13 /* SyntaxKind.BlockCommentTrivia */;
+ }
+ // just a single slash
+ value += String.fromCharCode(code);
+ pos++;
+ return token = 16 /* SyntaxKind.Unknown */;
+ // numbers
+ case 45 /* CharacterCodes.minus */:
+ value += String.fromCharCode(code);
+ pos++;
+ if (pos === len || !isDigit(text.charCodeAt(pos))) {
+ return token = 16 /* SyntaxKind.Unknown */;
+ }
+ // found a minus, followed by a number so
+ // we fall through to proceed with scanning
+ // numbers
+ case 48 /* CharacterCodes._0 */:
+ case 49 /* CharacterCodes._1 */:
+ case 50 /* CharacterCodes._2 */:
+ case 51 /* CharacterCodes._3 */:
+ case 52 /* CharacterCodes._4 */:
+ case 53 /* CharacterCodes._5 */:
+ case 54 /* CharacterCodes._6 */:
+ case 55 /* CharacterCodes._7 */:
+ case 56 /* CharacterCodes._8 */:
+ case 57 /* CharacterCodes._9 */:
+ value += scanNumber();
+ return token = 11 /* SyntaxKind.NumericLiteral */;
+ // literals and unknown symbols
+ default:
+ // is a literal? Read the full word.
+ while (pos < len && isUnknownContentCharacter(code)) {
+ pos++;
+ code = text.charCodeAt(pos);
+ }
+ if (tokenOffset !== pos) {
+ value = text.substring(tokenOffset, pos);
+ // keywords: true, false, null
+ switch (value) {
+ case 'true': return token = 8 /* SyntaxKind.TrueKeyword */;
+ case 'false': return token = 9 /* SyntaxKind.FalseKeyword */;
+ case 'null': return token = 7 /* SyntaxKind.NullKeyword */;
+ }
+ return token = 16 /* SyntaxKind.Unknown */;
+ }
+ // some
+ value += String.fromCharCode(code);
+ pos++;
+ return token = 16 /* SyntaxKind.Unknown */;
+ }
+ }
+ function isUnknownContentCharacter(code) {
+ if (isWhiteSpace(code) || isLineBreak(code)) {
+ return false;
+ }
+ switch (code) {
+ case 125 /* CharacterCodes.closeBrace */:
+ case 93 /* CharacterCodes.closeBracket */:
+ case 123 /* CharacterCodes.openBrace */:
+ case 91 /* CharacterCodes.openBracket */:
+ case 34 /* CharacterCodes.doubleQuote */:
+ case 58 /* CharacterCodes.colon */:
+ case 44 /* CharacterCodes.comma */:
+ case 47 /* CharacterCodes.slash */:
+ return false;
+ }
+ return true;
+ }
+ function scanNextNonTrivia() {
+ let result;
+ do {
+ result = scanNext();
+ } while (result >= 12 /* SyntaxKind.LineCommentTrivia */ && result <= 15 /* SyntaxKind.Trivia */);
+ return result;
+ }
+ return {
+ setPosition: setPosition,
+ getPosition: () => pos,
+ scan: ignoreTrivia ? scanNextNonTrivia : scanNext,
+ getToken: () => token,
+ getTokenValue: () => value,
+ getTokenOffset: () => tokenOffset,
+ getTokenLength: () => pos - tokenOffset,
+ getTokenStartLine: () => lineStartOffset,
+ getTokenStartCharacter: () => tokenOffset - prevTokenLineStartOffset,
+ getTokenError: () => scanError,
+ };
+ }
+ exports.createScanner = createScanner;
+ function isWhiteSpace(ch) {
+ return ch === 32 /* CharacterCodes.space */ || ch === 9 /* CharacterCodes.tab */;
+ }
+ function isLineBreak(ch) {
+ return ch === 10 /* CharacterCodes.lineFeed */ || ch === 13 /* CharacterCodes.carriageReturn */;
+ }
+ function isDigit(ch) {
+ return ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */;
+ }
+ var CharacterCodes;
+ (function (CharacterCodes) {
+ CharacterCodes[CharacterCodes["lineFeed"] = 10] = "lineFeed";
+ CharacterCodes[CharacterCodes["carriageReturn"] = 13] = "carriageReturn";
+ CharacterCodes[CharacterCodes["space"] = 32] = "space";
+ CharacterCodes[CharacterCodes["_0"] = 48] = "_0";
+ CharacterCodes[CharacterCodes["_1"] = 49] = "_1";
+ CharacterCodes[CharacterCodes["_2"] = 50] = "_2";
+ CharacterCodes[CharacterCodes["_3"] = 51] = "_3";
+ CharacterCodes[CharacterCodes["_4"] = 52] = "_4";
+ CharacterCodes[CharacterCodes["_5"] = 53] = "_5";
+ CharacterCodes[CharacterCodes["_6"] = 54] = "_6";
+ CharacterCodes[CharacterCodes["_7"] = 55] = "_7";
+ CharacterCodes[CharacterCodes["_8"] = 56] = "_8";
+ CharacterCodes[CharacterCodes["_9"] = 57] = "_9";
+ CharacterCodes[CharacterCodes["a"] = 97] = "a";
+ CharacterCodes[CharacterCodes["b"] = 98] = "b";
+ CharacterCodes[CharacterCodes["c"] = 99] = "c";
+ CharacterCodes[CharacterCodes["d"] = 100] = "d";
+ CharacterCodes[CharacterCodes["e"] = 101] = "e";
+ CharacterCodes[CharacterCodes["f"] = 102] = "f";
+ CharacterCodes[CharacterCodes["g"] = 103] = "g";
+ CharacterCodes[CharacterCodes["h"] = 104] = "h";
+ CharacterCodes[CharacterCodes["i"] = 105] = "i";
+ CharacterCodes[CharacterCodes["j"] = 106] = "j";
+ CharacterCodes[CharacterCodes["k"] = 107] = "k";
+ CharacterCodes[CharacterCodes["l"] = 108] = "l";
+ CharacterCodes[CharacterCodes["m"] = 109] = "m";
+ CharacterCodes[CharacterCodes["n"] = 110] = "n";
+ CharacterCodes[CharacterCodes["o"] = 111] = "o";
+ CharacterCodes[CharacterCodes["p"] = 112] = "p";
+ CharacterCodes[CharacterCodes["q"] = 113] = "q";
+ CharacterCodes[CharacterCodes["r"] = 114] = "r";
+ CharacterCodes[CharacterCodes["s"] = 115] = "s";
+ CharacterCodes[CharacterCodes["t"] = 116] = "t";
+ CharacterCodes[CharacterCodes["u"] = 117] = "u";
+ CharacterCodes[CharacterCodes["v"] = 118] = "v";
+ CharacterCodes[CharacterCodes["w"] = 119] = "w";
+ CharacterCodes[CharacterCodes["x"] = 120] = "x";
+ CharacterCodes[CharacterCodes["y"] = 121] = "y";
+ CharacterCodes[CharacterCodes["z"] = 122] = "z";
+ CharacterCodes[CharacterCodes["A"] = 65] = "A";
+ CharacterCodes[CharacterCodes["B"] = 66] = "B";
+ CharacterCodes[CharacterCodes["C"] = 67] = "C";
+ CharacterCodes[CharacterCodes["D"] = 68] = "D";
+ CharacterCodes[CharacterCodes["E"] = 69] = "E";
+ CharacterCodes[CharacterCodes["F"] = 70] = "F";
+ CharacterCodes[CharacterCodes["G"] = 71] = "G";
+ CharacterCodes[CharacterCodes["H"] = 72] = "H";
+ CharacterCodes[CharacterCodes["I"] = 73] = "I";
+ CharacterCodes[CharacterCodes["J"] = 74] = "J";
+ CharacterCodes[CharacterCodes["K"] = 75] = "K";
+ CharacterCodes[CharacterCodes["L"] = 76] = "L";
+ CharacterCodes[CharacterCodes["M"] = 77] = "M";
+ CharacterCodes[CharacterCodes["N"] = 78] = "N";
+ CharacterCodes[CharacterCodes["O"] = 79] = "O";
+ CharacterCodes[CharacterCodes["P"] = 80] = "P";
+ CharacterCodes[CharacterCodes["Q"] = 81] = "Q";
+ CharacterCodes[CharacterCodes["R"] = 82] = "R";
+ CharacterCodes[CharacterCodes["S"] = 83] = "S";
+ CharacterCodes[CharacterCodes["T"] = 84] = "T";
+ CharacterCodes[CharacterCodes["U"] = 85] = "U";
+ CharacterCodes[CharacterCodes["V"] = 86] = "V";
+ CharacterCodes[CharacterCodes["W"] = 87] = "W";
+ CharacterCodes[CharacterCodes["X"] = 88] = "X";
+ CharacterCodes[CharacterCodes["Y"] = 89] = "Y";
+ CharacterCodes[CharacterCodes["Z"] = 90] = "Z";
+ CharacterCodes[CharacterCodes["asterisk"] = 42] = "asterisk";
+ CharacterCodes[CharacterCodes["backslash"] = 92] = "backslash";
+ CharacterCodes[CharacterCodes["closeBrace"] = 125] = "closeBrace";
+ CharacterCodes[CharacterCodes["closeBracket"] = 93] = "closeBracket";
+ CharacterCodes[CharacterCodes["colon"] = 58] = "colon";
+ CharacterCodes[CharacterCodes["comma"] = 44] = "comma";
+ CharacterCodes[CharacterCodes["dot"] = 46] = "dot";
+ CharacterCodes[CharacterCodes["doubleQuote"] = 34] = "doubleQuote";
+ CharacterCodes[CharacterCodes["minus"] = 45] = "minus";
+ CharacterCodes[CharacterCodes["openBrace"] = 123] = "openBrace";
+ CharacterCodes[CharacterCodes["openBracket"] = 91] = "openBracket";
+ CharacterCodes[CharacterCodes["plus"] = 43] = "plus";
+ CharacterCodes[CharacterCodes["slash"] = 47] = "slash";
+ CharacterCodes[CharacterCodes["formFeed"] = 12] = "formFeed";
+ CharacterCodes[CharacterCodes["tab"] = 9] = "tab";
+ })(CharacterCodes || (CharacterCodes = {}));
+});
diff --git a/node_modules/jsonc-parser/lib/umd/main.d.ts b/node_modules/jsonc-parser/lib/umd/main.d.ts
new file mode 100644
index 0000000..e8a4540
--- /dev/null
+++ b/node_modules/jsonc-parser/lib/umd/main.d.ts
@@ -0,0 +1,349 @@
+/**
+ * Creates a JSON scanner on the given text.
+ * If ignoreTrivia is set, whitespaces or comments are ignored.
+ */
+export declare const createScanner: (text: string, ignoreTrivia?: boolean) => JSONScanner;
+export declare const enum ScanError {
+ None = 0,
+ UnexpectedEndOfComment = 1,
+ UnexpectedEndOfString = 2,
+ UnexpectedEndOfNumber = 3,
+ InvalidUnicode = 4,
+ InvalidEscapeCharacter = 5,
+ InvalidCharacter = 6
+}
+export declare const enum SyntaxKind {
+ OpenBraceToken = 1,
+ CloseBraceToken = 2,
+ OpenBracketToken = 3,
+ CloseBracketToken = 4,
+ CommaToken = 5,
+ ColonToken = 6,
+ NullKeyword = 7,
+ TrueKeyword = 8,
+ FalseKeyword = 9,
+ StringLiteral = 10,
+ NumericLiteral = 11,
+ LineCommentTrivia = 12,
+ BlockCommentTrivia = 13,
+ LineBreakTrivia = 14,
+ Trivia = 15,
+ Unknown = 16,
+ EOF = 17
+}
+/**
+ * The scanner object, representing a JSON scanner at a position in the input string.
+ */
+export interface JSONScanner {
+ /**
+ * Sets the scan position to a new offset. A call to 'scan' is needed to get the first token.
+ */
+ setPosition(pos: number): void;
+ /**
+ * Read the next token. Returns the token code.
+ */
+ scan(): SyntaxKind;
+ /**
+ * Returns the zero-based current scan position, which is after the last read token.
+ */
+ getPosition(): number;
+ /**
+ * Returns the last read token.
+ */
+ getToken(): SyntaxKind;
+ /**
+ * Returns the last read token value. The value for strings is the decoded string content. For numbers it's of type number, for boolean it's true or false.
+ */
+ getTokenValue(): string;
+ /**
+ * The zero-based start offset of the last read token.
+ */
+ getTokenOffset(): number;
+ /**
+ * The length of the last read token.
+ */
+ getTokenLength(): number;
+ /**
+ * The zero-based start line number of the last read token.
+ */
+ getTokenStartLine(): number;
+ /**
+ * The zero-based start character (column) of the last read token.
+ */
+ getTokenStartCharacter(): number;
+ /**
+ * An error code of the last scan.
+ */
+ getTokenError(): ScanError;
+}
+/**
+ * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.
+ */
+export declare const getLocation: (text: string, position: number) => Location;
+/**
+ * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ * Therefore, always check the errors list to find out if the input was valid.
+ */
+export declare const parse: (text: string, errors?: ParseError[], options?: ParseOptions) => any;
+/**
+ * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ */
+export declare const parseTree: (text: string, errors?: ParseError[], options?: ParseOptions) => Node | undefined;
+/**
+ * Finds the node at the given path in a JSON DOM.
+ */
+export declare const findNodeAtLocation: (root: Node, path: JSONPath) => Node | undefined;
+/**
+ * Finds the innermost node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.
+ */
+export declare const findNodeAtOffset: (root: Node, offset: number, includeRightBound?: boolean) => Node | undefined;
+/**
+ * Gets the JSON path of the given JSON DOM node
+ */
+export declare const getNodePath: (node: Node) => JSONPath;
+/**
+ * Evaluates the JavaScript object of the given JSON DOM node
+ */
+export declare const getNodeValue: (node: Node) => any;
+/**
+ * Parses the given text and invokes the visitor functions for each object, array and literal reached.
+ */
+export declare const visit: (text: string, visitor: JSONVisitor, options?: ParseOptions) => any;
+/**
+ * Takes JSON with JavaScript-style comments and remove
+ * them. Optionally replaces every none-newline character
+ * of comments with a replaceCharacter
+ */
+export declare const stripComments: (text: string, replaceCh?: string) => string;
+export interface ParseError {
+ error: ParseErrorCode;
+ offset: number;
+ length: number;
+}
+export declare const enum ParseErrorCode {
+ InvalidSymbol = 1,
+ InvalidNumberFormat = 2,
+ PropertyNameExpected = 3,
+ ValueExpected = 4,
+ ColonExpected = 5,
+ CommaExpected = 6,
+ CloseBraceExpected = 7,
+ CloseBracketExpected = 8,
+ EndOfFileExpected = 9,
+ InvalidCommentToken = 10,
+ UnexpectedEndOfComment = 11,
+ UnexpectedEndOfString = 12,
+ UnexpectedEndOfNumber = 13,
+ InvalidUnicode = 14,
+ InvalidEscapeCharacter = 15,
+ InvalidCharacter = 16
+}
+export declare function printParseErrorCode(code: ParseErrorCode): "InvalidSymbol" | "InvalidNumberFormat" | "PropertyNameExpected" | "ValueExpected" | "ColonExpected" | "CommaExpected" | "CloseBraceExpected" | "CloseBracketExpected" | "EndOfFileExpected" | "InvalidCommentToken" | "UnexpectedEndOfComment" | "UnexpectedEndOfString" | "UnexpectedEndOfNumber" | "InvalidUnicode" | "InvalidEscapeCharacter" | "InvalidCharacter" | "<unknown ParseErrorCode>";
+export declare type NodeType = 'object' | 'array' | 'property' | 'string' | 'number' | 'boolean' | 'null';
+export interface Node {
+ readonly type: NodeType;
+ readonly value?: any;
+ readonly offset: number;
+ readonly length: number;
+ readonly colonOffset?: number;
+ readonly parent?: Node;
+ readonly children?: Node[];
+}
+/**
+ * A {@linkcode JSONPath} segment. Either a string representing an object property name
+ * or a number (starting at 0) for array indices.
+ */
+export declare type Segment = string | number;
+export declare type JSONPath = Segment[];
+export interface Location {
+ /**
+ * The previous property key or literal value (string, number, boolean or null) or undefined.
+ */
+ previousNode?: Node;
+ /**
+ * The path describing the location in the JSON document. The path consists of a sequence of strings
+ * representing an object property or numbers for array indices.
+ */
+ path: JSONPath;
+ /**
+ * Matches the locations path against a pattern consisting of strings (for properties) and numbers (for array indices).
+ * '*' will match a single segment of any property name or index.
+ * '**' will match a sequence of segments of any property name or index, or no segment.
+ */
+ matches: (patterns: JSONPath) => boolean;
+ /**
+ * If set, the location's offset is at a property key.
+ */
+ isAtPropertyKey: boolean;
+}
+export interface ParseOptions {
+ disallowComments?: boolean;
+ allowTrailingComma?: boolean;
+ allowEmptyContent?: boolean;
+}
+/**
+ * Visitor called by {@linkcode visit} when parsing JSON.
+ *
+ * The visitor functions have the following common parameters:
+ * - `offset`: Global offset within the JSON document, starting at 0
+ * - `startLine`: Line number, starting at 0
+ * - `startCharacter`: Start character (column) within the current line, starting at 0
+ *
+ * Additionally some functions have a `pathSupplier` parameter which can be used to obtain the
+ * current `JSONPath` within the document.
+ */
+export interface JSONVisitor {
+ /**
+ * Invoked when an open brace is encountered and an object is started. The offset and length represent the location of the open brace.
+ */
+ onObjectBegin?: (offset: number, length: number, startLine: number, startCharacter: number, pathSupplier: () => JSONPath) => void;
+ /**
+ * Invoked when a property is encountered. The offset and length represent the location of the property name.
+ * The `JSONPath` created by the `pathSupplier` refers to the enclosing JSON object, it does not include the
+ * property name yet.
+ */
+ onObjectProperty?: (property: string, offset: number, length: number, startLine: number, startCharacter: number, pathSupplier: () => JSONPath) => void;
+ /**
+ * Invoked when a closing brace is encountered and an object is completed. The offset and length represent the location of the closing brace.
+ */
+ onObjectEnd?: (offset: number, length: number, startLine: number, startCharacter: number) => void;
+ /**
+ * Invoked when an open bracket is encountered. The offset and length represent the location of the open bracket.
+ */
+ onArrayBegin?: (offset: number, length: number, startLine: number, startCharacter: number, pathSupplier: () => JSONPath) => void;
+ /**
+ * Invoked when a closing bracket is encountered. The offset and length represent the location of the closing bracket.
+ */
+ onArrayEnd?: (offset: number, length: number, startLine: number, startCharacter: number) => void;
+ /**
+ * Invoked when a literal value is encountered. The offset and length represent the location of the literal value.
+ */
+ onLiteralValue?: (value: any, offset: number, length: number, startLine: number, startCharacter: number, pathSupplier: () => JSONPath) => void;
+ /**
+ * Invoked when a comma or colon separator is encountered. The offset and length represent the location of the separator.
+ */
+ onSeparator?: (character: string, offset: number, length: number, startLine: number, startCharacter: number) => void;
+ /**
+ * When comments are allowed, invoked when a line or block comment is encountered. The offset and length represent the location of the comment.
+ */
+ onComment?: (offset: number, length: number, startLine: number, startCharacter: number) => void;
+ /**
+ * Invoked on an error.
+ */
+ onError?: (error: ParseErrorCode, offset: number, length: number, startLine: number, startCharacter: number) => void;
+}
+/**
+ * An edit result describes a textual edit operation. It is the result of a {@linkcode format} and {@linkcode modify} operation.
+ * It consist of one or more edits describing insertions, replacements or removals of text segments.
+ * * The offsets of the edits refer to the original state of the document.
+ * * No two edits change or remove the same range of text in the original document.
+ * * Multiple edits can have the same offset if they are multiple inserts, or an insert followed by a remove or replace.
+ * * The order in the array defines which edit is applied first.
+ * To apply an edit result use {@linkcode applyEdits}.
+ * In general multiple EditResults must not be concatenated because they might impact each other, producing incorrect or malformed JSON data.
+ */
+export declare type EditResult = Edit[];
+/**
+ * Represents a text modification
+ */
+export interface Edit {
+ /**
+ * The start offset of the modification.
+ */
+ offset: number;
+ /**
+ * The length of the modification. Must not be negative. Empty length represents an *insert*.
+ */
+ length: number;
+ /**
+ * The new content. Empty content represents a *remove*.
+ */
+ content: string;
+}
+/**
+ * A text range in the document
+*/
+export interface Range {
+ /**
+ * The start offset of the range.
+ */
+ offset: number;
+ /**
+ * The length of the range. Must not be negative.
+ */
+ length: number;
+}
+/**
+ * Options used by {@linkcode format} when computing the formatting edit operations
+ */
+export interface FormattingOptions {
+ /**
+ * If indentation is based on spaces (`insertSpaces` = true), the number of spaces that make an indent.
+ */
+ tabSize?: number;
+ /**
+ * Is indentation based on spaces?
+ */
+ insertSpaces?: boolean;
+ /**
+ * The default 'end of line' character. If not set, '\n' is used as default.
+ */
+ eol?: string;
+ /**
+ * If set, will add a new line at the end of the document.
+ */
+ insertFinalNewline?: boolean;
+ /**
+ * If true, will keep line positions as is in the formatting
+ */
+ keepLines?: boolean;
+}
+/**
+ * Computes the edit operations needed to format a JSON document.
+ *
+ * @param documentText The input text
+ * @param range The range to format or `undefined` to format the full content
+ * @param options The formatting options
+ * @returns The edit operations describing the formatting changes to the original document following the format described in {@linkcode EditResult}.
+ * To apply the edit operations to the input, use {@linkcode applyEdits}.
+ */
+export declare function format(documentText: string, range: Range | undefined, options: FormattingOptions): EditResult;
+/**
+ * Options used by {@linkcode modify} when computing the modification edit operations
+ */
+export interface ModificationOptions {
+ /**
+ * Formatting options. If undefined, the newly inserted code will be inserted unformatted.
+ */
+ formattingOptions?: FormattingOptions;
+ /**
+ * Default false. If `JSONPath` refers to an index of an array and `isArrayInsertion` is `true`, then
+ * {@linkcode modify} will insert a new item at that location instead of overwriting its contents.
+ */
+ isArrayInsertion?: boolean;
+ /**
+ * Optional function to define the insertion index given an existing list of properties.
+ */
+ getInsertionIndex?: (properties: string[]) => number;
+}
+/**
+ * Computes the edit operations needed to modify a value in the JSON document.
+ *
+ * @param documentText The input text
+ * @param path The path of the value to change. The path represents either to the document root, a property or an array item.
+ * If the path points to an non-existing property or item, it will be created.
+ * @param value The new value for the specified property or item. If the value is undefined,
+ * the property or item will be removed.
+ * @param options Options
+ * @returns The edit operations describing the changes to the original document, following the format described in {@linkcode EditResult}.
+ * To apply the edit operations to the input, use {@linkcode applyEdits}.
+ */
+export declare function modify(text: string, path: JSONPath, value: any, options: ModificationOptions): EditResult;
+/**
+ * Applies edits to an input string.
+ * @param text The input text
+ * @param edits Edit operations following the format described in {@linkcode EditResult}.
+ * @returns The text with the applied edits.
+ * @throws An error if the edit operations are not well-formed as described in {@linkcode EditResult}.
+ */
+export declare function applyEdits(text: string, edits: EditResult): string;
diff --git a/node_modules/jsonc-parser/lib/umd/main.js b/node_modules/jsonc-parser/lib/umd/main.js
new file mode 100644
index 0000000..174bb12
--- /dev/null
+++ b/node_modules/jsonc-parser/lib/umd/main.js
@@ -0,0 +1,194 @@
+(function (factory) {
+ if (typeof module === "object" && typeof module.exports === "object") {
+ var v = factory(require, exports);
+ if (v !== undefined) module.exports = v;
+ }
+ else if (typeof define === "function" && define.amd) {
+ define(["require", "exports", "./impl/format", "./impl/edit", "./impl/scanner", "./impl/parser"], factory);
+ }
+})(function (require, exports) {
+ /*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+ 'use strict';
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.applyEdits = exports.modify = exports.format = exports.printParseErrorCode = exports.ParseErrorCode = exports.stripComments = exports.visit = exports.getNodeValue = exports.getNodePath = exports.findNodeAtOffset = exports.findNodeAtLocation = exports.parseTree = exports.parse = exports.getLocation = exports.SyntaxKind = exports.ScanError = exports.createScanner = void 0;
+ const formatter = require("./impl/format");
+ const edit = require("./impl/edit");
+ const scanner = require("./impl/scanner");
+ const parser = require("./impl/parser");
+ /**
+ * Creates a JSON scanner on the given text.
+ * If ignoreTrivia is set, whitespaces or comments are ignored.
+ */
+ exports.createScanner = scanner.createScanner;
+ var ScanError;
+ (function (ScanError) {
+ ScanError[ScanError["None"] = 0] = "None";
+ ScanError[ScanError["UnexpectedEndOfComment"] = 1] = "UnexpectedEndOfComment";
+ ScanError[ScanError["UnexpectedEndOfString"] = 2] = "UnexpectedEndOfString";
+ ScanError[ScanError["UnexpectedEndOfNumber"] = 3] = "UnexpectedEndOfNumber";
+ ScanError[ScanError["InvalidUnicode"] = 4] = "InvalidUnicode";
+ ScanError[ScanError["InvalidEscapeCharacter"] = 5] = "InvalidEscapeCharacter";
+ ScanError[ScanError["InvalidCharacter"] = 6] = "InvalidCharacter";
+ })(ScanError = exports.ScanError || (exports.ScanError = {}));
+ var SyntaxKind;
+ (function (SyntaxKind) {
+ SyntaxKind[SyntaxKind["OpenBraceToken"] = 1] = "OpenBraceToken";
+ SyntaxKind[SyntaxKind["CloseBraceToken"] = 2] = "CloseBraceToken";
+ SyntaxKind[SyntaxKind["OpenBracketToken"] = 3] = "OpenBracketToken";
+ SyntaxKind[SyntaxKind["CloseBracketToken"] = 4] = "CloseBracketToken";
+ SyntaxKind[SyntaxKind["CommaToken"] = 5] = "CommaToken";
+ SyntaxKind[SyntaxKind["ColonToken"] = 6] = "ColonToken";
+ SyntaxKind[SyntaxKind["NullKeyword"] = 7] = "NullKeyword";
+ SyntaxKind[SyntaxKind["TrueKeyword"] = 8] = "TrueKeyword";
+ SyntaxKind[SyntaxKind["FalseKeyword"] = 9] = "FalseKeyword";
+ SyntaxKind[SyntaxKind["StringLiteral"] = 10] = "StringLiteral";
+ SyntaxKind[SyntaxKind["NumericLiteral"] = 11] = "NumericLiteral";
+ SyntaxKind[SyntaxKind["LineCommentTrivia"] = 12] = "LineCommentTrivia";
+ SyntaxKind[SyntaxKind["BlockCommentTrivia"] = 13] = "BlockCommentTrivia";
+ SyntaxKind[SyntaxKind["LineBreakTrivia"] = 14] = "LineBreakTrivia";
+ SyntaxKind[SyntaxKind["Trivia"] = 15] = "Trivia";
+ SyntaxKind[SyntaxKind["Unknown"] = 16] = "Unknown";
+ SyntaxKind[SyntaxKind["EOF"] = 17] = "EOF";
+ })(SyntaxKind = exports.SyntaxKind || (exports.SyntaxKind = {}));
+ /**
+ * For a given offset, evaluate the location in the JSON document. Each segment in the location path is either a property name or an array index.
+ */
+ exports.getLocation = parser.getLocation;
+ /**
+ * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ * Therefore, always check the errors list to find out if the input was valid.
+ */
+ exports.parse = parser.parse;
+ /**
+ * Parses the given text and returns a tree representation the JSON content. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ */
+ exports.parseTree = parser.parseTree;
+ /**
+ * Finds the node at the given path in a JSON DOM.
+ */
+ exports.findNodeAtLocation = parser.findNodeAtLocation;
+ /**
+ * Finds the innermost node at the given offset. If includeRightBound is set, also finds nodes that end at the given offset.
+ */
+ exports.findNodeAtOffset = parser.findNodeAtOffset;
+ /**
+ * Gets the JSON path of the given JSON DOM node
+ */
+ exports.getNodePath = parser.getNodePath;
+ /**
+ * Evaluates the JavaScript object of the given JSON DOM node
+ */
+ exports.getNodeValue = parser.getNodeValue;
+ /**
+ * Parses the given text and invokes the visitor functions for each object, array and literal reached.
+ */
+ exports.visit = parser.visit;
+ /**
+ * Takes JSON with JavaScript-style comments and remove
+ * them. Optionally replaces every none-newline character
+ * of comments with a replaceCharacter
+ */
+ exports.stripComments = parser.stripComments;
+ var ParseErrorCode;
+ (function (ParseErrorCode) {
+ ParseErrorCode[ParseErrorCode["InvalidSymbol"] = 1] = "InvalidSymbol";
+ ParseErrorCode[ParseErrorCode["InvalidNumberFormat"] = 2] = "InvalidNumberFormat";
+ ParseErrorCode[ParseErrorCode["PropertyNameExpected"] = 3] = "PropertyNameExpected";
+ ParseErrorCode[ParseErrorCode["ValueExpected"] = 4] = "ValueExpected";
+ ParseErrorCode[ParseErrorCode["ColonExpected"] = 5] = "ColonExpected";
+ ParseErrorCode[ParseErrorCode["CommaExpected"] = 6] = "CommaExpected";
+ ParseErrorCode[ParseErrorCode["CloseBraceExpected"] = 7] = "CloseBraceExpected";
+ ParseErrorCode[ParseErrorCode["CloseBracketExpected"] = 8] = "CloseBracketExpected";
+ ParseErrorCode[ParseErrorCode["EndOfFileExpected"] = 9] = "EndOfFileExpected";
+ ParseErrorCode[ParseErrorCode["InvalidCommentToken"] = 10] = "InvalidCommentToken";
+ ParseErrorCode[ParseErrorCode["UnexpectedEndOfComment"] = 11] = "UnexpectedEndOfComment";
+ ParseErrorCode[ParseErrorCode["UnexpectedEndOfString"] = 12] = "UnexpectedEndOfString";
+ ParseErrorCode[ParseErrorCode["UnexpectedEndOfNumber"] = 13] = "UnexpectedEndOfNumber";
+ ParseErrorCode[ParseErrorCode["InvalidUnicode"] = 14] = "InvalidUnicode";
+ ParseErrorCode[ParseErrorCode["InvalidEscapeCharacter"] = 15] = "InvalidEscapeCharacter";
+ ParseErrorCode[ParseErrorCode["InvalidCharacter"] = 16] = "InvalidCharacter";
+ })(ParseErrorCode = exports.ParseErrorCode || (exports.ParseErrorCode = {}));
+ function printParseErrorCode(code) {
+ switch (code) {
+ case 1 /* ParseErrorCode.InvalidSymbol */: return 'InvalidSymbol';
+ case 2 /* ParseErrorCode.InvalidNumberFormat */: return 'InvalidNumberFormat';
+ case 3 /* ParseErrorCode.PropertyNameExpected */: return 'PropertyNameExpected';
+ case 4 /* ParseErrorCode.ValueExpected */: return 'ValueExpected';
+ case 5 /* ParseErrorCode.ColonExpected */: return 'ColonExpected';
+ case 6 /* ParseErrorCode.CommaExpected */: return 'CommaExpected';
+ case 7 /* ParseErrorCode.CloseBraceExpected */: return 'CloseBraceExpected';
+ case 8 /* ParseErrorCode.CloseBracketExpected */: return 'CloseBracketExpected';
+ case 9 /* ParseErrorCode.EndOfFileExpected */: return 'EndOfFileExpected';
+ case 10 /* ParseErrorCode.InvalidCommentToken */: return 'InvalidCommentToken';
+ case 11 /* ParseErrorCode.UnexpectedEndOfComment */: return 'UnexpectedEndOfComment';
+ case 12 /* ParseErrorCode.UnexpectedEndOfString */: return 'UnexpectedEndOfString';
+ case 13 /* ParseErrorCode.UnexpectedEndOfNumber */: return 'UnexpectedEndOfNumber';
+ case 14 /* ParseErrorCode.InvalidUnicode */: return 'InvalidUnicode';
+ case 15 /* ParseErrorCode.InvalidEscapeCharacter */: return 'InvalidEscapeCharacter';
+ case 16 /* ParseErrorCode.InvalidCharacter */: return 'InvalidCharacter';
+ }
+ return '<unknown ParseErrorCode>';
+ }
+ exports.printParseErrorCode = printParseErrorCode;
+ /**
+ * Computes the edit operations needed to format a JSON document.
+ *
+ * @param documentText The input text
+ * @param range The range to format or `undefined` to format the full content
+ * @param options The formatting options
+ * @returns The edit operations describing the formatting changes to the original document following the format described in {@linkcode EditResult}.
+ * To apply the edit operations to the input, use {@linkcode applyEdits}.
+ */
+ function format(documentText, range, options) {
+ return formatter.format(documentText, range, options);
+ }
+ exports.format = format;
+ /**
+ * Computes the edit operations needed to modify a value in the JSON document.
+ *
+ * @param documentText The input text
+ * @param path The path of the value to change. The path represents either to the document root, a property or an array item.
+ * If the path points to an non-existing property or item, it will be created.
+ * @param value The new value for the specified property or item. If the value is undefined,
+ * the property or item will be removed.
+ * @param options Options
+ * @returns The edit operations describing the changes to the original document, following the format described in {@linkcode EditResult}.
+ * To apply the edit operations to the input, use {@linkcode applyEdits}.
+ */
+ function modify(text, path, value, options) {
+ return edit.setProperty(text, path, value, options);
+ }
+ exports.modify = modify;
+ /**
+ * Applies edits to an input string.
+ * @param text The input text
+ * @param edits Edit operations following the format described in {@linkcode EditResult}.
+ * @returns The text with the applied edits.
+ * @throws An error if the edit operations are not well-formed as described in {@linkcode EditResult}.
+ */
+ function applyEdits(text, edits) {
+ let sortedEdits = edits.slice(0).sort((a, b) => {
+ const diff = a.offset - b.offset;
+ if (diff === 0) {
+ return a.length - b.length;
+ }
+ return diff;
+ });
+ let lastModifiedOffset = text.length;
+ for (let i = sortedEdits.length - 1; i >= 0; i--) {
+ let e = sortedEdits[i];
+ if (e.offset + e.length <= lastModifiedOffset) {
+ text = edit.applyEdit(text, e);
+ }
+ else {
+ throw new Error('Overlapping edit');
+ }
+ lastModifiedOffset = e.offset;
+ }
+ return text;
+ }
+ exports.applyEdits = applyEdits;
+});
diff --git a/node_modules/jsonc-parser/package.json b/node_modules/jsonc-parser/package.json
new file mode 100644
index 0000000..448d814
--- /dev/null
+++ b/node_modules/jsonc-parser/package.json
@@ -0,0 +1,40 @@
+{
+ "name": "jsonc-parser",
+ "version": "3.2.0",
+ "description": "Scanner and parser for JSON with comments.",
+ "main": "./lib/umd/main.js",
+ "typings": "./lib/umd/main.d.ts",
+ "module": "./lib/esm/main.js",
+ "author": "Microsoft Corporation",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/microsoft/node-jsonc-parser"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/microsoft/node-jsonc-parser/issues"
+ },
+ "devDependencies": {
+ "mocha": "^10.0.0",
+ "typescript": "^4.8.2",
+ "@types/node": "^16.x",
+ "@types/mocha": "^9.1.1",
+ "@typescript-eslint/eslint-plugin": "^5.36.0",
+ "@typescript-eslint/parser": "^5.36.0",
+ "eslint": "^8.23.0",
+ "rimraf": "^3.0.2"
+ },
+ "scripts": {
+ "prepublishOnly": "npm run clean && npm run compile-esm && npm run test && npm run remove-sourcemap-refs",
+ "postpublish": "node ./build/post-publish.js",
+ "compile": "tsc -p ./src && npm run lint",
+ "compile-esm": "tsc -p ./src/tsconfig.esm.json",
+ "remove-sourcemap-refs": "node ./build/remove-sourcemap-refs.js",
+ "clean": "rimraf lib",
+ "watch": "tsc -w -p ./src",
+ "test": "npm run compile && mocha ./lib/umd/test",
+ "lint": "eslint src/**/*.ts",
+ "preversion": "npm test",
+ "postversion": "git push && git push --tags"
+ }
+}
diff --git a/node_modules/lunr/.eslintrc.json b/node_modules/lunr/.eslintrc.json
new file mode 100644
index 0000000..c0aef7f
--- /dev/null
+++ b/node_modules/lunr/.eslintrc.json
@@ -0,0 +1,86 @@
+{
+ "env": {
+ "browser": true,
+ "node": true
+ },
+
+ "globals": {
+ "lunr": true
+ },
+
+ "extends": "eslint:recommended",
+
+ "plugins": [
+ "spellcheck"
+ ],
+
+ "rules": {
+ "spellcheck/spell-checker": [1,
+ {
+ "lang": "en_GB",
+ "skipWords": [
+ "lunr", "val", "param", "idx", "utils", "namespace", "eslint", "latin",
+ "str", "len", "sqrt", "wildcard", "concat", "metadata", "fn", "params",
+ "lexeme", "lex", "pos", "typedef", "wildcards", "lexemes", "fns", "stemmer",
+ "attrs", "tf", "idf", "lookups", "whitelist", "whitelisted", "tokenizer",
+ "whitespace", "automata", "i", "obj", "anymore", "lexer", "var", "refs",
+ "serializable", "tis", "twas", "int", "args", "unshift", "plugins", "upsert",
+ "upserting", "readonly", "baz", "tokenization", "lunrjs", "com", "olivernn",
+ "github", "js"
+ ]
+ }
+ ],
+
+ "no-constant-condition": [
+ "error",
+ { "checkLoops": false }
+ ],
+
+ "no-redeclare": "off",
+
+ "dot-location": [
+ "error",
+ "property"
+ ],
+
+ "no-alert": "error",
+ "no-caller": "error",
+ "no-eval": "error",
+ "no-implied-eval": "error",
+ "no-extend-native": "error",
+ "no-implicit-globals": "error",
+ "no-multi-spaces": "error",
+ "array-bracket-spacing": "error",
+ "block-spacing": "error",
+
+ "brace-style": [
+ "error",
+ "1tbs",
+ { "allowSingleLine": true }
+ ],
+
+ "camelcase": "error",
+ "comma-dangle": "error",
+ "comma-spacing": "error",
+ "comma-style": "error",
+ "computed-property-spacing": "error",
+ "func-style": "error",
+
+ "indent": [
+ "error",
+ 2,
+ { "VariableDeclarator": 2, "SwitchCase": 1 }
+ ],
+
+ "key-spacing": "error",
+ "keyword-spacing": "error",
+ "linebreak-style": "error",
+ "new-cap": "error",
+ "no-trailing-spaces": "error",
+ "no-whitespace-before-property": "error",
+ "semi": ["error", "never"],
+ "space-before-function-paren": ["error", "always"],
+ "space-in-parens": "error",
+ "space-infix-ops": "error"
+ }
+}
diff --git a/node_modules/lunr/.npmignore b/node_modules/lunr/.npmignore
new file mode 100644
index 0000000..dee8632
--- /dev/null
+++ b/node_modules/lunr/.npmignore
@@ -0,0 +1,3 @@
+/node_modules
+docs/
+test/env/file_list.json
diff --git a/node_modules/lunr/.travis.yml b/node_modules/lunr/.travis.yml
new file mode 100644
index 0000000..106e641
--- /dev/null
+++ b/node_modules/lunr/.travis.yml
@@ -0,0 +1,14 @@
+language: node_js
+node_js:
+ - "node"
+ - "6"
+ - "5"
+ - "4"
+script: "make"
+addons:
+ artifacts:
+ branch: master
+ paths:
+ - ./docs
+ target_paths: /docs
+
diff --git a/node_modules/lunr/CHANGELOG.md b/node_modules/lunr/CHANGELOG.md
new file mode 100644
index 0000000..e2a7ca6
--- /dev/null
+++ b/node_modules/lunr/CHANGELOG.md
@@ -0,0 +1,270 @@
+# Changelog
+
+## 2.3.9
+
+* Fix bug [#469](https://github.com/olivernn/lunr.js/issues/469) where a union with a complete set returned a non-complete set. Thanks [Bertrand Le Roy](https://github.com/bleroy) for reporting and fixing.
+
+## 2.3.8
+
+* Fix bug [#422](https://github.com/olivernn/lunr.js/issues/422) where a pipline function that returned null was not skipping the token as described in the documentation. Thanks [Stephen Cleary](https://github.com/StephenCleary) and [Rob Hoelz](https://github.com/hoelzro) for reporting and investigating.
+
+## 2.3.7
+
+* Fix bug [#417](https://github.com/olivernn/lunr.js/issues/417) where leading white space would cause token position metadata to be reported incorrectly. Thanks [Rob Hoelz](https://github.com/hoelzro) for the fix.
+
+## 2.3.6
+
+* Fix bug [#390](https://github.com/olivernn/lunr.js/issues/390) with fuzzy matching that meant deletions at the end of a word would not match. Thanks [Luca Ongaro](https://github.com/lucaong) for reporting.
+
+## 2.3.5
+
+* Fix bug [#375](https://github.com/olivernn/lunr.js/issues/375) with fuzzy matching that meant insertions at the end of a word would not match. Thanks [Luca Ongaro](https://github.com/lucaong) for reporting and to [Rob Hoelz](https://github.com/hoelzro) for providing a fix.
+* Switch to using `Array.isArray` when checking for results from pipeline functions to support `vm.runInContext`, [#381](https://github.com/olivernn/lunr.js/pull/381) thanks [Rob Hoelz](https://github.com/hoelzro).
+
+## 2.3.4
+
+* Ensure that [inverted index is prototype-less](https://github.com/olivernn/lunr.js/pull/378) after serialization, thanks [Rob Hoelz](https://github.com/hoelzro).
+
+## 2.3.3
+
+* Fig bugs [#270](https://github.com/olivernn/lunr.js/issues/270) and [#368](https://github.com/olivernn/lunr.js/issues/368), some wildcard searches over long tokens could be extremely slow, potentially pinning the current thread indefinitely. Thanks [Kyle Spearrin](https://github.com/kspearrin) and [Mohamed Eltuhamy](https://github.com/meltuhamy) for reporting.
+
+## 2.3.2
+
+* Fix bug [#369](https://github.com/olivernn/lunr.js/issues/369) in parsing queries that include either a boost or edit distance modifier followed by a presence modifier on a subsequent term. Thanks [mtdjr](https://github.com/mtdjr) for reporting.
+
+## 2.3.1
+
+* Add workaround for inconsistent browser behaviour [#279](https://github.com/olivernn/lunr.js/issues/279), thanks [Luca Ongaro](https://github.com/lucaong).
+* Fix bug in intersect/union of `lunr.Set` [#360](https://github.com/olivernn/lunr.js/issues/360), thanks [Brandon Bethke](https://github.com/brandon-bethke-neudesic) for reporting.
+
+## 2.3.0
+
+* Add support for build time field and document boosts.
+* Add support for indexing nested document fields using field extractors.
+* Prevent usage of problematic characters in field names, thanks [Stephane Mankowski](https://github.com/miraks31).
+* Fix bug when using an array of tokens in a single query term, thanks [Michael Manukyan](https://github.com/mike1808).
+
+## 2.2.1
+
+* Fix bug [#344](https://github.com/olivernn/lunr.js/issues/344) in logic for required terms in multiple fields, thanks [Stephane Mankowski](https://github.com/miraks31).
+* Upgrade mocha and fix some test snafus.
+
+## 2.2.0
+
+* Add support for queries with term presence, e.g. required terms and prohibited terms.
+* Add support for using the output of `lunr.tokenizer` directly with `lunr.Query#term`.
+* Add field name metadata to tokens in build and search pipelines.
+* Fix documentation for `lunr.Index` constructor, thanks [Michael Manukyan](https://github.com/mike1808).
+
+## 2.1.6
+
+* Improve pipeline performance for large fields [#329](https://github.com/olivernn/lunr.js/pull/329), thanks [andymcm](https://github.com/andymcm).
+
+## 2.1.5
+
+* Fix bug [#320](https://github.com/olivernn/lunr.js/issues/320) which caused result metadata to be nested under search term instead of field name. Thanks [Jonny Gerig Meyer](https://github.com/jgerigmeyer) for reporting and fixing.
+
+## 2.1.4
+
+* Cache inverse document calculation during build to improve build performance.
+* Introduce new method for combining term metadata at search time.
+* Improve performance of searches with duplicate search terms.
+* Tweaks to build process.
+
+## 2.1.3
+
+* Remove private tag from `lunr.Builder#build`, it should be public, thanks [Sean Tan](https://github.com/seantanly).
+
+## 2.1.2
+
+* Fix bug [#282](https://github.com/olivernn/lunr.js/issues/282) which caused metadata stored in the index to be mutated during search, thanks [Andrew Aldridge](https://github.com/i80and).
+
+## 2.1.1
+
+* Fix bug [#280](https://github.com/olivernn/lunr.js/issues/280) in builder where an object with prototype was being used as a Map, thanks [Pete Bacon Darwin](https://github.com/petebacondarwin).
+
+## 2.1.0
+
+* Improve handling of term boosts across multiple fields [#263](https://github.com/olivernn/lunr.js/issues/263)
+* Enable escaping of special characters when performing a search [#271](https://github.com/olivernn/lunr.js/issues/271)
+* Add ability to programatically include leading and trailing wildcards when performing a query.
+
+## 2.0.4
+
+* Fix bug in IDF calculation that meant the weight for common words was not correctly calculated.
+
+## 2.0.3
+
+* Fix bug [#256](https://github.com/olivernn/lunr.js/issues/256) where duplicate query terms could cause a 'duplicate index' error when building the query vector. Thanks [Bjorn Svensson](https://github.com/bsvensson), [Jason Feng](https://github.com/IYCI), and [et1421](https://github.com/et1421) for reporting and confirming the issue.
+
+## 2.0.2
+
+* Fix bug [#255](https://github.com/olivernn/lunr.js/issues/255) where search queries used a different separator than the tokeniser causing some terms to not be searchable. Thanks [Wes Cossick](https://github.com/WesCossick) for reporting.
+* Reduce precision of term scores stored in document vectors to reduce the size of serialised indexes by ~15%, thanks [Qvatra](https://github.com/Qvatra) for the idea.
+
+## 2.0.1
+
+* Fix regression [#254](https://github.com/olivernn/lunr.js/issues/254) where documents containing terms that match properties from Object.prototype cause errors during indexing. Thanks [VonFry](https://github.com/VonFry) for reporting.
+
+## 2.0.0
+
+* Indexes are now immutable, this allows for more space efficient indexes, more advanced searching and better performance.
+* Text processing can now attach metadata to tokens the enter the index, this opens up the possibility of highlighting search terms in results.
+* More advanced searching including search time field boosts, search by field, fuzzy matching and leading and trailing wildcards.
+
+## 1.0.0
+
+* Deprecate incorrectly spelled lunr.tokenizer.separator.
+* No other changes, but bumping to 1.0.0 because it's overdue, and the interfaces are pretty stable now. It also paves the way for 2.0.0...
+
+## 0.7.2
+
+* Fix bug when loading a serialised tokeniser [#226](https://github.com/olivernn/lunr.js/issues/226), thanks [Alex Turpin](https://github.com/alexturpin) for reporting the issue.
+* Learn how to spell separator [#223](https://github.com/olivernn/lunr.js/pull/223), thanks [peterennis](https://github.com/peterennis) for helping me learn to spell.
+
+## 0.7.1
+
+* Correctly set the license using the @license doc tag [#217](https://github.com/olivernn/lunr.js/issues/217), thanks [Carlos Araya](https://github.com/caraya).
+
+## 0.7.0
+
+* Make tokenizer a property of the index, allowing for different indexes to use different tokenizers [#205](https://github.com/olivernn/lunr.js/pull/205) and [#21](https://github.com/olivernn/lunr.js/issues/21).
+* Fix bug that prevented very large documents from being indexed [#203](https://github.com/olivernn/lunr.js/pull/203), thanks [Daniel Grießhaber](https://github.com/dangrie158).
+* Performance improvements when adding documents to the index [#208](https://github.com/olivernn/lunr.js/pull/208), thanks [Dougal Matthews](https://github.com/d0ugal).
+
+## 0.6.0
+
+* Ensure document ref property type is preserved when returning results [#117](https://github.com/olivernn/lunr.js/issues/117), thanks [Kyle Kirby](https://github.com/kkirby).
+* Introduce `lunr.generateStopWordFilter` for generating a stop word filter from a provided list of stop words.
+* Replace array-like string access with ES3 compatible `String.prototype.charAt` [#186](https://github.com/olivernn/lunr.js/pull/186), thanks [jkellerer](https://github.com/jkellerer).
+* Move empty string filtering from `lunr.trimmer` to `lunr.Pipeline.prototype.run` so that empty tokens do not enter the index, regardless of the trimmer being used [#178](https://github.com/olivernn/lunr.js/issues/178), [#177](https://github.com/olivernn/lunr.js/issues/177) and [#174](https://github.com/olivernn/lunr.js/issues/174)
+* Allow tokenization of arrays with null and non string elements [#172](https://github.com/olivernn/lunr.js/issues/172).
+* Parameterize the seperator used by `lunr.tokenizer`, fixes [#102](https://github.com/olivernn/lunr.js/issues/102).
+
+## 0.5.12
+
+* Implement `lunr.stopWordFilter` with an object instead of using `lunr.SortedSet` [#170](https://github.com/olivernn/lunr.js/pull/170), resulting in a performance boost for the text processing pipeline, thanks to [Brian Vaughn](https://github.com/bvaughn).
+* Ensure that `lunr.trimmer` does not introduce empty tokens into the index, [#166](https://github.com/olivernn/lunr.js/pull/166), thanks to [janeisklar](https://github.com/janeisklar)
+
+## 0.5.11
+
+* Fix [bug](https://github.com/olivernn/lunr.js/issues/162) when using the unminified build of lunr in some project builds, thanks [Alessio Michelini](https://github.com/darkmavis1980)
+
+## 0.5.10
+
+* Fix bug in IDF calculation, thanks to [weixsong](https://github.com/weixsong) for discovering the issue.
+* Documentation fixes [#111](https://github.com/olivernn/lunr.js/pull/111) thanks [Chris Van](https://github.com/cvan).
+* Remove version from bower.json as it is not needed [#160](https://github.com/olivernn/lunr.js/pull/160), thanks [Kevin Kirsche](https://github.com/kkirsche)
+* Fix link to augment.js on the home page [#159](https://github.com/olivernn/lunr.js/issues/159), thanks [Gábor Nádai](https://github.com/mefiblogger)
+
+## 0.5.9
+
+* Remove recursion from SortedSet#indexOf and SortedSet#locationFor to gain small performance gains in Index#search and Index#add
+* Fix incorrect handling of non existant functions when adding/removing from a Pipeline [#146](https://github.com/olivernn/lunr.js/issues/146) thanks to [weixsong](https://github.com/weixsong)
+
+## 0.5.8
+
+* Fix typo when referencing Martin Porter's home page http://tartarus.org/~martin/ [#132](https://github.com/olivernn/lunr.js/pull/132) thanks [James Aylett](https://github.com/jaylett)
+* Performance improvement for tokenizer [#139](https://github.com/olivernn/lunr.js/pull/139) thanks [Arun Srinivasan](https://github.com/satchmorun)
+* Fix vector magnitude caching bug :flushed: [#142](https://github.com/olivernn/lunr.js/pull/142) thanks [Richard Poole](https://github.com/richardpoole)
+* Fix vector insertion bug that prevented lesser ordered nodes to be inserted into a vector [#143](https://github.com/olivernn/lunr.js/pull/143) thanks [Richard Poole](https://github.com/richardpoole)
+* Fix inefficient use of arguments in SortedSet add method, thanks to [Max Nordlund](https://github.com/maxnordlund).
+* Fix deprecated use of path.exists in test server [#141](https://github.com/olivernn/lunr.js/pull/141) thanks [wei song](https://github.com/weixsong)
+
+## 0.5.7
+
+* Performance improvement for stemmer [#124](https://github.com/olivernn/lunr.js/pull/124) thanks [Tony Jacobs](https://github.com/tony-jacobs)
+
+## 0.5.6
+
+* Performance improvement when add documents to the index [#114](https://github.com/olivernn/lunr.js/pull/114) thanks [Alex Holmes](https://github.com/alex2)
+
+## 0.5.5
+
+* Fix bug in tokenizer introduced in 0.5.4 [#101](https://github.com/olivernn/lunr.js/pull/101) thanks [Nolan Lawson](https://github.com/nolanlawson)
+
+## 0.5.4
+
+* Tokenizer also splits on hyphens [#98](https://github.com/olivernn/lunr.js/pull/98/files) thanks [Nolan Lawson](https://github.com/nolanlawson)
+
+## 0.5.3
+
+* Correctly stem words ending with the letter 'y' [#84](https://github.com/olivernn/lunr.js/pull/84) thanks [Mihai Valentin](https://github.com/MihaiValentin)
+* Improve build tools and dev dependency installation [#78](https://github.com/olivernn/lunr.js/pull/78) thanks [Ben Pickles](https://github.com/benpickles)
+
+## 0.5.2
+
+* Use npm they said, it'll be easy they said.
+
+## 0.5.1
+
+* Because [npm issues](https://github.com/olivernn/lunr.js/issues/77) :(
+
+## 0.5.0
+
+* Add plugin support to enable i18n and other extensions to lunr.
+* Add AMD support [#72](https://github.com/olivernn/lunr.js/issues/72) thanks [lnwdr](https://github.com/lnwdr).
+* lunr.Vector now implemented using linked lists for better performance especially in indexes with large numbers of unique tokens.
+* Build system clean up.
+
+## 0.4.5
+
+* Fix performance regression introduced in 0.4.4 by fixing #64.
+
+## 0.4.4
+
+* Fix bug [#64](https://github.com/olivernn/lunr.js/issues/64) idf cache should handle tokens with the same name as object properties, thanks [gitgrimbo](https://github.com/gitgrimbo).
+* Intersperse source files with a semicolon as part of the build process, fixes [#61](https://github.com/olivernn/lunr.js/issues/61), thanks [shyndman](https://github.com/shyndman).
+
+## 0.4.3
+
+* Fix bug [#49](https://github.com/olivernn/lunr.js/issues/49) tokenizer should handle null and undefined as arguments, thanks [jona](https://github.com/jona).
+
+## 0.4.2
+
+* Fix bug [#47](https://github.com/olivernn/lunr.js/issues/47) tokenizer converts its input to a string before trying to split it into tokens, thanks [mikhailkozlov](https://github.com/mikhailkozlov).
+
+## 0.4.1
+
+* Fix bug [#41](https://github.com/olivernn/lunr.js/issues/41) that caused issues when indexing mixed case tags, thanks [Aptary](https://github.com/Aptary)
+
+## 0.4.0
+
+* Add index mutation events ('add', 'update' and 'remove').
+* Performance improvements to searching.
+* Penalise non-exact matches so exact matches are better ranked than expanded matches.
+
+## 0.3.3
+
+* Fix bug [#32](https://github.com/olivernn/lunr.js/pull/32) which prevented lunr being used where a `console` object is not present, thanks [Tony Marklove](https://github.com/jjbananas) and [wyuenho](https://github.com/wyuenho)
+
+## 0.3.2
+
+* Fix bug [#27](https://github.com/olivernn/lunr.js/pull/27) when trying to calculate tf with empty fields, thanks [Gambhiro](https://github.com/gambhiro)
+
+## 0.3.1
+
+* Fix bug [#24](https://github.com/olivernn/lunr.js/pull/24) that caused an error when trying to remove a non-existant document from the index, thanks [Jesús Leganés Combarro](https://github.com/piranna)
+
+## 0.3.0
+
+* Implement [JSON serialisation](https://github.com/olivernn/lunr.js/pull/14), allows indexes to be loaded and dumped, thanks [ssured](https://github.com/ssured).
+* Performance improvements to searching and indexing.
+* Fix bug [#15](https://github.com/olivernn/lunr.js/pull/15) with tokeniser that added stray empty white space to the index, thanks [ssured](https://github.com/ssured).
+
+## 0.2.3
+
+* Fix issue with searching for a term not in the index [#12](https://github.com/olivernn/lunr.js/issues/12), thanks [mcnerthney](https://github.com/mcnerthney) and [makoto](https://github.com/makoto)
+
+## 0.2.2
+
+* Boost exact term matches so they are better ranked than expanded term matches, fixes [#10](https://github.com/olivernn/lunr.js/issues/10), thanks [ssured](https://github.com/ssured)
+
+## 0.2.1
+
+* Changes to the build process.
+* Add component.json and package.json
+* Add phantomjs test runner
+* Remove redundant attributes
+* Many [spelling corrections](https://github.com/olivernn/lunr.js/pull/8), thanks [Pascal Borreli](https://github.com/pborreli)
diff --git a/node_modules/lunr/CNAME b/node_modules/lunr/CNAME
new file mode 100644
index 0000000..d162cd8
--- /dev/null
+++ b/node_modules/lunr/CNAME
@@ -0,0 +1 @@
+lunrjs.com
diff --git a/node_modules/lunr/CONTRIBUTING.md b/node_modules/lunr/CONTRIBUTING.md
new file mode 100644
index 0000000..2f4441f
--- /dev/null
+++ b/node_modules/lunr/CONTRIBUTING.md
@@ -0,0 +1,20 @@
+Contributions are very welcome. To make the process as easy as possible please follow these steps:
+
+* Open an issue detailing the bug you've found, or the feature you wish to add. Simplified working examples using something like [jsFiddle](http://jsfiddle.net) make it easier to diagnose your problem.
+* Add tests for your code (so I don't accidentally break it in the future).
+* Don't change version numbers or make new builds as part of your changes.
+* Don't change the built versions of the library; only make changes to code in the `lib` directory.
+
+# Developer Dependencies
+
+A JavaScript runtime is required for building the library.
+
+Run the tests (using PhantomJS):
+
+ make test
+
+The tests can also be run in the browser by starting the test server:
+
+ make server
+
+This will start a server on port 3000, the tests are then available at `/test`.
diff --git a/node_modules/lunr/LICENSE b/node_modules/lunr/LICENSE
new file mode 100644
index 0000000..e6e4e21
--- /dev/null
+++ b/node_modules/lunr/LICENSE
@@ -0,0 +1,19 @@
+Copyright (C) 2013 by Oliver Nightingale
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/node_modules/lunr/Makefile b/node_modules/lunr/Makefile
new file mode 100644
index 0000000..37c7ce7
--- /dev/null
+++ b/node_modules/lunr/Makefile
@@ -0,0 +1,90 @@
+
+SRC = lib/lunr.js \
+ lib/utils.js \
+ lib/field_ref.js \
+ lib/set.js \
+ lib/idf.js \
+ lib/token.js \
+ lib/tokenizer.js \
+ lib/pipeline.js \
+ lib/vector.js \
+ lib/stemmer.js \
+ lib/stop_word_filter.js \
+ lib/trimmer.js \
+ lib/token_set.js \
+ lib/token_set_builder.js \
+ lib/index.js \
+ lib/builder.js \
+ lib/match_data.js \
+ lib/query.js \
+ lib/query_parse_error.js \
+ lib/query_lexer.js \
+ lib/query_parser.js \
+
+YEAR = $(shell date +%Y)
+VERSION = $(shell cat VERSION)
+
+NODE ?= $(shell which node)
+NPM ?= $(shell which npm)
+UGLIFYJS ?= ./node_modules/.bin/uglifyjs
+MOCHA ?= ./node_modules/.bin/mocha
+MUSTACHE ?= ./node_modules/.bin/mustache
+ESLINT ?= ./node_modules/.bin/eslint
+JSDOC ?= ./node_modules/.bin/jsdoc
+NODE_STATIC ?= ./node_modules/.bin/static
+
+all: test lint docs
+release: lunr.js lunr.min.js bower.json package.json component.json docs
+
+lunr.js: $(SRC)
+ cat build/wrapper_start $^ build/wrapper_end | \
+ sed "s/@YEAR/${YEAR}/" | \
+ sed "s/@VERSION/${VERSION}/" > $@
+
+lunr.min.js: lunr.js
+ ${UGLIFYJS} --compress --mangle --comments < $< > $@
+
+%.json: build/%.json.template
+ cat $< | sed "s/@VERSION/${VERSION}/" > $@
+
+size: lunr.min.js
+ @gzip -c lunr.min.js | wc -c
+
+server: test/index.html
+ ${NODE_STATIC} -a 0.0.0.0 -H '{"Cache-Control": "no-cache, must-revalidate"}'
+
+lint: $(SRC)
+ ${ESLINT} $^
+
+perf/*_perf.js:
+ ${NODE} -r ./perf/perf_helper.js $@
+
+benchmark: perf/*_perf.js
+
+test: node_modules lunr.js
+ ${MOCHA} test/*.js -u tdd -r test/test_helper.js -R dot -C
+
+test/inspect: node_modules lunr.js
+ ${MOCHA} test/*.js -u tdd -r test/test_helper.js -R dot -C --inspect-brk=0.0.0.0:9292
+
+test/env/file_list.json: $(wildcard test/*test.js)
+ ${NODE} -p 'JSON.stringify({test_files: process.argv.slice(1)})' $^ > $@
+
+test/index.html: test/env/file_list.json test/env/index.mustache
+ ${MUSTACHE} $^ > $@
+
+docs: $(SRC)
+ ${JSDOC} -R README.md -d docs -c build/jsdoc.conf.json $^
+
+clean:
+ rm -f lunr{.min,}.js
+ rm -rf docs
+ rm *.json
+
+reset:
+ git checkout lunr.* *.json
+
+node_modules: package.json
+ ${NPM} -s install
+
+.PHONY: test clean docs reset perf/*_perf.js test/inspect
diff --git a/node_modules/lunr/README.md b/node_modules/lunr/README.md
new file mode 100644
index 0000000..ea7ace6
--- /dev/null
+++ b/node_modules/lunr/README.md
@@ -0,0 +1,78 @@
+# Lunr.js
+
+[![Join the chat at https://gitter.im/olivernn/lunr.js](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/olivernn/lunr.js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+
+[![Build Status](https://travis-ci.org/olivernn/lunr.js.svg?branch=master)](https://travis-ci.org/olivernn/lunr.js)
+
+A bit like Solr, but much smaller and not as bright.
+
+## Example
+
+A very simple search index can be created using the following:
+
+```javascript
+var idx = lunr(function () {
+ this.field('title')
+ this.field('body')
+
+ this.add({
+ "title": "Twelfth-Night",
+ "body": "If music be the food of love, play on: Give me excess of it…",
+ "author": "William Shakespeare",
+ "id": "1"
+ })
+})
+```
+
+Then searching is as simple as:
+
+```javascript
+idx.search("love")
+```
+
+This returns a list of matching documents with a score of how closely they match the search query as well as any associated metadata about the match:
+
+```javascript
+[
+ {
+ "ref": "1",
+ "score": 0.3535533905932737,
+ "matchData": {
+ "metadata": {
+ "love": {
+ "body": {}
+ }
+ }
+ }
+ }
+]
+```
+
+[API documentation](https://lunrjs.com/docs/index.html) is available, as well as a [full working example](https://olivernn.github.io/moonwalkers/).
+
+## Description
+
+Lunr.js is a small, full-text search library for use in the browser. It indexes JSON documents and provides a simple search interface for retrieving documents that best match text queries.
+
+## Why
+
+For web applications with all their data already sitting in the client, it makes sense to be able to search that data on the client too. It saves adding extra, compacted services on the server. A local search index will be quicker, there is no network overhead, and will remain available and usable even without a network connection.
+
+## Installation
+
+Simply include the lunr.js source file in the page that you want to use it. Lunr.js is supported in all modern browsers.
+
+Alternatively an npm package is also available `npm install lunr`.
+
+Browsers that do not support ES5 will require a JavaScript shim for Lunr to work. You can either use [Augment.js](https://github.com/olivernn/augment.js), [ES5-Shim](https://github.com/kriskowal/es5-shim) or any library that patches old browsers to provide an ES5 compatible JavaScript environment.
+
+## Features
+
+* Full text search support for 14 languages
+* Boost terms at query time or boost entire documents at index time
+* Scope searches to specific fields
+* Fuzzy term matching with wildcards or edit distance
+
+## Contributing
+
+See the [`CONTRIBUTING.md` file](CONTRIBUTING.md).
diff --git a/node_modules/lunr/VERSION b/node_modules/lunr/VERSION
new file mode 100644
index 0000000..d63fa57
--- /dev/null
+++ b/node_modules/lunr/VERSION
@@ -0,0 +1 @@
+2.3.9 \ No newline at end of file
diff --git a/node_modules/lunr/bower.json b/node_modules/lunr/bower.json
new file mode 100644
index 0000000..16d6d24
--- /dev/null
+++ b/node_modules/lunr/bower.json
@@ -0,0 +1,11 @@
+{
+ "name": "lunr.js",
+ "version": "2.3.9",
+ "main": "lunr.js",
+ "ignore": [
+ "tests/",
+ "perf/",
+ "build/",
+ "docs/"
+ ]
+}
diff --git a/node_modules/lunr/build/bower.json.template b/node_modules/lunr/build/bower.json.template
new file mode 100644
index 0000000..311256c
--- /dev/null
+++ b/node_modules/lunr/build/bower.json.template
@@ -0,0 +1,11 @@
+{
+ "name": "lunr.js",
+ "version": "@VERSION",
+ "main": "lunr.js",
+ "ignore": [
+ "tests/",
+ "perf/",
+ "build/",
+ "docs/"
+ ]
+}
diff --git a/node_modules/lunr/build/component.json.template b/node_modules/lunr/build/component.json.template
new file mode 100644
index 0000000..b0a0449
--- /dev/null
+++ b/node_modules/lunr/build/component.json.template
@@ -0,0 +1,9 @@
+{
+ "name": "lunr",
+ "repo": "olivernn/lunr.js",
+ "version": "@VERSION",
+ "description": "Simple full-text search in your browser.",
+ "license": "MIT",
+ "main": "lunr.js",
+ "scripts": ["lunr.js"]
+}
diff --git a/node_modules/lunr/build/jsdoc.conf.json b/node_modules/lunr/build/jsdoc.conf.json
new file mode 100644
index 0000000..63f7576
--- /dev/null
+++ b/node_modules/lunr/build/jsdoc.conf.json
@@ -0,0 +1,11 @@
+{
+ "plugins": ["plugins/markdown"],
+ "destination": "docs",
+ "readme": "README.md",
+ "templates": {
+ "default": {
+ "useLongnameInNav": true
+ }
+ }
+}
+
diff --git a/node_modules/lunr/build/package.json.template b/node_modules/lunr/build/package.json.template
new file mode 100644
index 0000000..4919e46
--- /dev/null
+++ b/node_modules/lunr/build/package.json.template
@@ -0,0 +1,30 @@
+{
+ "name": "lunr",
+ "description": "Simple full-text search in your browser.",
+ "version": "@VERSION",
+ "author": "Oliver Nightingale",
+ "keywords": ["search"],
+ "homepage": "https://lunrjs.com",
+ "bugs": "https://github.com/olivernn/lunr.js/issues",
+ "main": "lunr.js",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/olivernn/lunr.js.git"
+ },
+ "devDependencies": {
+ "benchmark": "2.1.x",
+ "chai": "3.5.x",
+ "eslint-plugin-spellcheck": "0.0.8",
+ "eslint": "3.4.x",
+ "jsdoc": "3.5.x",
+ "mocha": "3.3.x",
+ "mustache": "2.2.x",
+ "node-static": "0.7.x",
+ "uglify-js": "2.6.x",
+ "word-list": "1.0.x"
+ },
+ "scripts": {
+ "test": "make test"
+ }
+}
diff --git a/node_modules/lunr/build/release.sh b/node_modules/lunr/build/release.sh
new file mode 100755
index 0000000..86c85f8
--- /dev/null
+++ b/node_modules/lunr/build/release.sh
@@ -0,0 +1,79 @@
+#!/usr/bin/env bash
+
+file_has_changed () {
+ if [ ! -f $1 ]; then
+ return 1
+ fi
+
+ for f in `git ls-files --modified`; do
+ [[ "$f" == "$1" ]] && return 0
+ done
+
+ return 1
+}
+
+version_is_unique () {
+ for v in `git tag -l`; do
+ [[ "$v" == "v$1" ]] && return 1
+ done
+
+ return 0
+}
+
+on_master_branch () {
+ [[ $(git symbolic-ref --short -q HEAD) == "master" ]] && return 0
+ return 1
+}
+
+version=$(cat VERSION)
+previous_version=$(git describe --abbrev=0)
+
+if ! on_master_branch; then
+ echo -e "\033[0;31mRefusing to release from non master branch.\033[0m"
+ exit 1
+fi
+
+if ! file_has_changed "VERSION"; then
+ echo -e "\033[0;31mRefusing to release because VERSION has not changed.\033[0m"
+ exit 1
+fi
+
+if ! file_has_changed "CHANGELOG.md"; then
+ echo -e "\033[0;31mRefusing to release because CHANGELOG.md has not been updated.\033[0m"
+ exit 1
+fi
+
+if ! file_has_changed "package.json"; then
+ echo -e "\033[0;31mRefusing to release because package.json has not been updated.\033[0m"
+ exit 1
+fi
+
+if ! version_is_unique $version; then
+ echo -e "\033[0;31mRefusing to release because VERSION is not unique.\033[0m"
+ exit 1
+fi
+
+echo -e "\033[1mAbout to release v$version with the following changes:\033[0m"
+git log --date=short --pretty=format:"%ad %h%x09%an%x09%s" $previous_version..HEAD
+
+echo
+
+echo -e "\033[1mThe following files will be part of the release commit:\033[0m"
+git ls-files --modified
+
+echo
+
+read -e -p "Are you sure you want to release? " -n 1 -r
+echo
+if [[ $REPLY =~ ^[Yy]$ ]]; then
+ echo -e "\033[0;32mReleasing...\033[0m"
+ echo
+ git commit -a -m "Build version $version"
+ git tag -a v$version -m "Version $version"
+ git push origin master
+ git push --tags
+
+ npm publish
+else
+ echo -e "\033[0;31mCancelling...\033[0m"
+fi
diff --git a/node_modules/lunr/build/wrapper_end b/node_modules/lunr/build/wrapper_end
new file mode 100644
index 0000000..380dd45
--- /dev/null
+++ b/node_modules/lunr/build/wrapper_end
@@ -0,0 +1,29 @@
+
+ /**
+ * export the module via AMD, CommonJS or as a browser global
+ * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js
+ */
+ ;(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module.
+ define(factory)
+ } else if (typeof exports === 'object') {
+ /**
+ * Node. Does not work with strict CommonJS, but
+ * only CommonJS-like enviroments that support module.exports,
+ * like Node.
+ */
+ module.exports = factory()
+ } else {
+ // Browser globals (root is window)
+ root.lunr = factory()
+ }
+ }(this, function () {
+ /**
+ * Just return a value to define the module export.
+ * This example returns an object, but the module
+ * can return a function as the exported value.
+ */
+ return lunr
+ }))
+})();
diff --git a/node_modules/lunr/build/wrapper_start b/node_modules/lunr/build/wrapper_start
new file mode 100644
index 0000000..0102ac4
--- /dev/null
+++ b/node_modules/lunr/build/wrapper_start
@@ -0,0 +1,8 @@
+/**
+ * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - @VERSION
+ * Copyright (C) @YEAR Oliver Nightingale
+ * @license MIT
+ */
+
+;(function(){
+
diff --git a/node_modules/lunr/component.json b/node_modules/lunr/component.json
new file mode 100644
index 0000000..418b729
--- /dev/null
+++ b/node_modules/lunr/component.json
@@ -0,0 +1,9 @@
+{
+ "name": "lunr",
+ "repo": "olivernn/lunr.js",
+ "version": "2.3.9",
+ "description": "Simple full-text search in your browser.",
+ "license": "MIT",
+ "main": "lunr.js",
+ "scripts": ["lunr.js"]
+}
diff --git a/node_modules/lunr/index.html b/node_modules/lunr/index.html
new file mode 100644
index 0000000..0c55ecf
--- /dev/null
+++ b/node_modules/lunr/index.html
@@ -0,0 +1,305 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>lunr.js - A bit like Solr, but much smaller and not as bright</title>
+ <link rel="stylesheet" href="/styles.css" type="text/css">
+ <script type="text/javascript" src="/lunr.min.js">
+ </script>
+ <script type="text/javascript">
+
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-25695442-4']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
+ })();
+
+ </script>
+</head>
+<body>
+ <div class='wrap'>
+ <header>
+ <h1>lunr<span>.js</span></h1>
+ <h2>Simple full-text search in your browser</h2>
+ </header>
+
+ <nav>
+ <ul>
+ <li><a href="/docs">Docs</a></li>
+ <li><a href="/example">Examples</a></li>
+ <li><a href="http://github.com/olivernn/lunr.js">Code</a></li>
+ </ul>
+ </nav>
+
+ <section class="columns">
+ <article>
+ <header>
+ <h3>Get Started</h3>
+ </header>
+
+ <p>Open your browser's <a id="developer-tools" target="_blank">developer tools</a> on this page to follow along.</p>
+
+ <p>Set up an index for your notes:</p>
+ <pre>
+ var index = lunr(function () {
+ this.field('title', {boost: 10})
+ this.field('body')
+ this.ref('id')
+ })</pre>
+
+ <p>Add documents to your index</p>
+ <pre>
+ index.add({
+ id: 1,
+ title: 'Foo',
+ body: 'Foo foo foo!'
+ })
+
+ index.add({
+ id: 2,
+ title: 'Bar',
+ body: 'Bar bar bar!'
+ })</pre>
+
+ <p>Search your documents</p>
+ <pre>
+ index.search('foo')</pre>
+ </article>
+
+ <article>
+ <header>
+ <h3>About</h3>
+ </header>
+
+ <p>lunr.js is a simple full text search engine for your client side applications. It is designed to be small, yet full featured, enabling you to provide a great search experience without the need for external, server side, search services.</p>
+
+ <p>lunr.js has no external dependencies, although it does require a modern browser with ES5 support. In older browsers you can use an ES5 shim, such as <a href="https://olivernn.github.io/augment.js/">augment.js</a>, to provide any missing JavaScript functionality.</p>
+ </article>
+
+ <article class="download">
+ <header>
+ <h3>Download</h3>
+ </header>
+
+ <ul>
+ <li><a href="https://raw.github.com/olivernn/lunr.js/master/lunr.js">lunr.js</a> - uncompressed</li>
+ <li><a href="https://raw.github.com/olivernn/lunr.js/master/lunr.min.js">lunr.min.js</a> - minified</li>
+ </ul>
+ </article>
+ </section>
+
+ <section>
+ <article>
+ <header>
+ <h3>Pipeline</h3>
+ </header>
+
+ <p>Every document and search query that enters lunr is passed through a text <a href="/docs#Pipeline">processing pipeline</a>. The pipeline is simply a stack of functions that perform some processing on the text. Pipeline functions act on the text one token at a time, and what they return is passed to the next function in the pipeline.</p>
+
+ <p>By default lunr adds a <a href="/docs#stopWordFilter">stop word filter</a> and <a href="/docs#stemmer">stemmer</a> to the pipeline. You can also add your own processors or remove the default ones depending on your requirements. The stemmer currently used is an English language stemmer, which could be replaced with a non-English language stemmer if required, or a <a href="http://en.wikipedia.org/wiki/Metaphone">Metaphoning</a> processor could be added.</p>
+
+
+ <pre>
+ var index = lunr(function () {
+ this.pipeline.add(function (token, tokenIndex, tokens) {
+ // text processing in here
+ })
+
+ this.pipeline.after(lunr.stopWordFilter, function (token, tokenIndex, tokens) {
+ // text processing in here
+ })
+ })
+ </pre>
+
+ <p>Functions in the pipeline are called with three arguments: the current token being processed; the index of that token in the array of tokens, and the whole list of tokens part of the document being processed. This enables simple unigram processing of tokens as well as more sophisticated n-gram processing.</p>
+
+ <p>The function should return the processed version of the text, which will in turn be passed to the next function in the pipeline. Returning <code>undefined</code> will prevent any further processing of the token, and that token will not make it to the index.</p>
+ </article>
+ </section>
+
+ <section class="columns">
+ <article>
+ <header>
+ <h3>Tokenization</h3>
+ </header>
+
+ <p>Tokenization is how lunr converts documents and searches into individual tokens, ready to be run through the text processing pipeline and entered or looked up in the index.</p>
+
+ <p>The default tokenizer included with lunr is designed to handle general english text well, although application, or language specific tokenizers can be used instead.</p>
+ </article>
+
+ <article>
+ <header>
+ <h3>Stemming</h3>
+ </header>
+
+ <p>Stemming increases the recall of the search index by reducing related words down to their stem, so that non-exact search terms still match relevant documents. For example 'search', 'searching' and 'searched' all get reduced to the stem 'search'.</p>
+
+ <p>lunr automatically includes a stemmer based on <a href="http://tartarus.org/martin/PorterStemmer/">Martin Porter's</a> algorithms.</p>
+ </article>
+
+ <article>
+ <header>
+ <h3>Stop words</h3>
+ </header>
+
+ <p>Stop words are words that are very common and are not useful in differentiating between documents. These are automatically removed by lunr. This helps to reduce the size of the index and improve search speed and accuracy.</p>
+
+ <p>The default stop word filter contains a large list of very common words in English. For best results a corpus specific stop word filter can also be added to the pipeline. The search algorithm already penalises more common words, but preventing them from entering the index at all can be very beneficial for both space and speed performance.</p>
+ </article>
+
+ </section>
+ <footer>
+ <ul>
+ <li>Code by <a href="http://twitter.com/olivernn">Oliver Nightingale</a></li>
+ <li><a href="http://github.com/olivernn/lunr.js">Code</a></li>
+ <li><a href="/docs">Documentation</a></li>
+ <li><a href="http://github.com/olivernn/lunr.js/issues">Issues</a></li>
+ </ul>
+ </footer>
+ </div>
+
+ <script>
+ (function (ua) {
+ // some _really_ basic browser sniffing to choose the right dev tools link.
+
+ var consoleSrc,
+ CHROME = /Chrome/,
+ CHROMIUM = /Chromium/,
+ FIREFOX = /Firefox/,
+ MSIE = /MSIE/
+ OPERA = /(OPR|Opera)/,
+ SAFARI = /Safari/,
+ SEAMONKEY = /Seamonkey/
+
+ switch (true) {
+ case FIREFOX.test(ua) && !SEAMONKEY.test(ua):
+ // firefox
+ consoleSrc = "https://developer.mozilla.org/en-US/docs/Tools/Web_Console"
+ break
+
+ case CHROME.test(ua):
+ // chrome
+ consoleSrc = "https://developer.chrome.com/devtools"
+ break
+
+ case SAFARI.test(ua) && !CHROME.test(ua) && !CHROMIUM.test(ua):
+ // safari
+ consoleSrc = "https://developer.apple.com/library/safari/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/GettingStarted/GettingStarted.html#//apple_ref/doc/uid/TP40007874-CH2-SW1"
+ break
+
+ case OPERA.test(ua):
+ // opera
+ consoleSrc = "http://www.opera.com/dragonfly/"
+ break
+
+ case MSIE.test(ua):
+ // IE
+ consoleSrc = "http://msdn.microsoft.com/en-us/library/ie/hh673541(v=vs.85).aspx"
+ break
+ }
+
+ if (consoleSrc) document.getElementById('developer-tools').href = consoleSrc
+ })(navigator.userAgent)
+ </script>
+
+ <script>
+ (function (hijs) {
+ //
+ // hijs - JavaScript Syntax Highlighter
+ //
+ // Copyright (c) 2010 Alexis Sellier
+ //
+
+ // All elements which match this will be syntax highlighted.
+ var selector = hijs || 'pre';
+
+ var keywords = ('var function if else for while break switch case do new null in with void '
+ +'continue delete return this true false throw catch typeof with instanceof').split(' '),
+ special = ('eval window document undefined NaN Infinity parseInt parseFloat '
+ +'encodeURI decodeURI encodeURIComponent decodeURIComponent').split(' ');
+
+ // Syntax definition
+ // The key becomes the class name of the <span>
+ // around the matched block of code.
+ var syntax = [
+ ['comment', /(\/\*(?:[^*\n]|\*+[^\/*])*\*+\/)/g],
+ ['comment', /(\/\/[^\n]*)/g],
+ ['string' , /("(?:(?!")[^\\\n]|\\.)*"|'(?:(?!')[^\\\n]|\\.)*')/g],
+ ['regexp' , /(\/.+\/[mgi]*)(?!\s*\w)/g],
+ ['class' , /\b([A-Z][a-zA-Z]+)\b/g],
+ ['number' , /\b([0-9]+(?:\.[0-9]+)?)\b/g],
+ ['keyword', new(RegExp)('\\b(' + keywords.join('|') + ')\\b', 'g')],
+ ['special', new(RegExp)('\\b(' + special.join('|') + ')\\b', 'g')]
+ ];
+ var nodes, table = {};
+
+ if (/^[a-z]+$/.test(selector)) {
+ nodes = document.getElementsByTagName(selector);
+ } else if (/^\.[\w-]+$/.test(selector)) {
+ nodes = document.getElementsByClassName(selector.slice(1));
+ } else if (document.querySelectorAll) {
+ nodes = document.querySelectorAll(selector);
+ } else {
+ nodes = [];
+ }
+
+ for (var i = 0, children; i < nodes.length; i++) {
+ children = nodes[i].childNodes;
+
+ for (var j = 0, str; j < children.length; j++) {
+ code = children[j];
+
+ if (code.length >= 0) { // It's a text node
+ // Don't highlight command-line snippets
+ if (! /^\$/.test(code.nodeValue.trim())) {
+ syntax.forEach(function (s) {
+ var k = s[0], v = s[1];
+ code.nodeValue = code.nodeValue.replace(v, function (_, m) {
+ return '\u00ab' + encode(k) + '\u00b7'
+ + encode(m) +
+ '\u00b7' + encode(k) + '\u00bb';
+ });
+ });
+ }
+ }
+ }
+ }
+ for (var i = 0; i < nodes.length; i++) {
+ nodes[i].innerHTML =
+ nodes[i].innerHTML.replace(/\u00ab(.+?)\u00b7(.+?)\u00b7\1\u00bb/g, function (_, name, value) {
+ value = value.replace(/\u00ab[^\u00b7]+\u00b7/g, '').replace(/\u00b7[^\u00bb]+\u00bb/g, '');
+ return '<span class="' + decode(name) + '">' + escape(decode(value)) + '</span>';
+ });
+ }
+
+ function escape(str) {
+ return str.replace(/</g, '&lt;').replace(/>/g, '&gt;');
+ }
+
+ // Encode ASCII characters to, and from Braille
+ function encode (str, encoded) {
+ table[encoded = str.split('').map(function (s) {
+ if (s.charCodeAt(0) > 127) { return s }
+ return String.fromCharCode(s.charCodeAt(0) + 0x2800);
+ }).join('')] = str;
+ return encoded;
+ }
+ function decode (str) {
+ if (str in table) {
+ return table[str];
+ } else {
+ return str.trim().split('').map(function (s) {
+ if (s.charCodeAt(0) - 0x2800 > 127) { return s }
+ return String.fromCharCode(s.charCodeAt(0) - 0x2800);
+ }).join('');
+ }
+ }
+
+ })(window.hijs);
+ </script>
+</body>
+</html>
diff --git a/node_modules/lunr/lib/builder.js b/node_modules/lunr/lib/builder.js
new file mode 100644
index 0000000..a06ebc9
--- /dev/null
+++ b/node_modules/lunr/lib/builder.js
@@ -0,0 +1,360 @@
+/*!
+ * lunr.Builder
+ * Copyright (C) @YEAR Oliver Nightingale
+ */
+
+/**
+ * lunr.Builder performs indexing on a set of documents and
+ * returns instances of lunr.Index ready for querying.
+ *
+ * All configuration of the index is done via the builder, the
+ * fields to index, the document reference, the text processing
+ * pipeline and document scoring parameters are all set on the
+ * builder before indexing.
+ *
+ * @constructor
+ * @property {string} _ref - Internal reference to the document reference field.
+ * @property {string[]} _fields - Internal reference to the document fields to index.
+ * @property {object} invertedIndex - The inverted index maps terms to document fields.
+ * @property {object} documentTermFrequencies - Keeps track of document term frequencies.
+ * @property {object} documentLengths - Keeps track of the length of documents added to the index.
+ * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.
+ * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.
+ * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.
+ * @property {number} documentCount - Keeps track of the total number of documents indexed.
+ * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.
+ * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.
+ * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.
+ * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.
+ */
+lunr.Builder = function () {
+ this._ref = "id"
+ this._fields = Object.create(null)
+ this._documents = Object.create(null)
+ this.invertedIndex = Object.create(null)
+ this.fieldTermFrequencies = {}
+ this.fieldLengths = {}
+ this.tokenizer = lunr.tokenizer
+ this.pipeline = new lunr.Pipeline
+ this.searchPipeline = new lunr.Pipeline
+ this.documentCount = 0
+ this._b = 0.75
+ this._k1 = 1.2
+ this.termIndex = 0
+ this.metadataWhitelist = []
+}
+
+/**
+ * Sets the document field used as the document reference. Every document must have this field.
+ * The type of this field in the document should be a string, if it is not a string it will be
+ * coerced into a string by calling toString.
+ *
+ * The default ref is 'id'.
+ *
+ * The ref should _not_ be changed during indexing, it should be set before any documents are
+ * added to the index. Changing it during indexing can lead to inconsistent results.
+ *
+ * @param {string} ref - The name of the reference field in the document.
+ */
+lunr.Builder.prototype.ref = function (ref) {
+ this._ref = ref
+}
+
+/**
+ * A function that is used to extract a field from a document.
+ *
+ * Lunr expects a field to be at the top level of a document, if however the field
+ * is deeply nested within a document an extractor function can be used to extract
+ * the right field for indexing.
+ *
+ * @callback fieldExtractor
+ * @param {object} doc - The document being added to the index.
+ * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.
+ * @example <caption>Extracting a nested field</caption>
+ * function (doc) { return doc.nested.field }
+ */
+
+/**
+ * Adds a field to the list of document fields that will be indexed. Every document being
+ * indexed should have this field. Null values for this field in indexed documents will
+ * not cause errors but will limit the chance of that document being retrieved by searches.
+ *
+ * All fields should be added before adding documents to the index. Adding fields after
+ * a document has been indexed will have no effect on already indexed documents.
+ *
+ * Fields can be boosted at build time. This allows terms within that field to have more
+ * importance when ranking search results. Use a field boost to specify that matches within
+ * one field are more important than other fields.
+ *
+ * @param {string} fieldName - The name of a field to index in all documents.
+ * @param {object} attributes - Optional attributes associated with this field.
+ * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.
+ * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.
+ * @throws {RangeError} fieldName cannot contain unsupported characters '/'
+ */
+lunr.Builder.prototype.field = function (fieldName, attributes) {
+ if (/\//.test(fieldName)) {
+ throw new RangeError ("Field '" + fieldName + "' contains illegal character '/'")
+ }
+
+ this._fields[fieldName] = attributes || {}
+}
+
+/**
+ * A parameter to tune the amount of field length normalisation that is applied when
+ * calculating relevance scores. A value of 0 will completely disable any normalisation
+ * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b
+ * will be clamped to the range 0 - 1.
+ *
+ * @param {number} number - The value to set for this tuning parameter.
+ */
+lunr.Builder.prototype.b = function (number) {
+ if (number < 0) {
+ this._b = 0
+ } else if (number > 1) {
+ this._b = 1
+ } else {
+ this._b = number
+ }
+}
+
+/**
+ * A parameter that controls the speed at which a rise in term frequency results in term
+ * frequency saturation. The default value is 1.2. Setting this to a higher value will give
+ * slower saturation levels, a lower value will result in quicker saturation.
+ *
+ * @param {number} number - The value to set for this tuning parameter.
+ */
+lunr.Builder.prototype.k1 = function (number) {
+ this._k1 = number
+}
+
+/**
+ * Adds a document to the index.
+ *
+ * Before adding fields to the index the index should have been fully setup, with the document
+ * ref and all fields to index already having been specified.
+ *
+ * The document must have a field name as specified by the ref (by default this is 'id') and
+ * it should have all fields defined for indexing, though null or undefined values will not
+ * cause errors.
+ *
+ * Entire documents can be boosted at build time. Applying a boost to a document indicates that
+ * this document should rank higher in search results than other documents.
+ *
+ * @param {object} doc - The document to add to the index.
+ * @param {object} attributes - Optional attributes associated with this document.
+ * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.
+ */
+lunr.Builder.prototype.add = function (doc, attributes) {
+ var docRef = doc[this._ref],
+ fields = Object.keys(this._fields)
+
+ this._documents[docRef] = attributes || {}
+ this.documentCount += 1
+
+ for (var i = 0; i < fields.length; i++) {
+ var fieldName = fields[i],
+ extractor = this._fields[fieldName].extractor,
+ field = extractor ? extractor(doc) : doc[fieldName],
+ tokens = this.tokenizer(field, {
+ fields: [fieldName]
+ }),
+ terms = this.pipeline.run(tokens),
+ fieldRef = new lunr.FieldRef (docRef, fieldName),
+ fieldTerms = Object.create(null)
+
+ this.fieldTermFrequencies[fieldRef] = fieldTerms
+ this.fieldLengths[fieldRef] = 0
+
+ // store the length of this field for this document
+ this.fieldLengths[fieldRef] += terms.length
+
+ // calculate term frequencies for this field
+ for (var j = 0; j < terms.length; j++) {
+ var term = terms[j]
+
+ if (fieldTerms[term] == undefined) {
+ fieldTerms[term] = 0
+ }
+
+ fieldTerms[term] += 1
+
+ // add to inverted index
+ // create an initial posting if one doesn't exist
+ if (this.invertedIndex[term] == undefined) {
+ var posting = Object.create(null)
+ posting["_index"] = this.termIndex
+ this.termIndex += 1
+
+ for (var k = 0; k < fields.length; k++) {
+ posting[fields[k]] = Object.create(null)
+ }
+
+ this.invertedIndex[term] = posting
+ }
+
+ // add an entry for this term/fieldName/docRef to the invertedIndex
+ if (this.invertedIndex[term][fieldName][docRef] == undefined) {
+ this.invertedIndex[term][fieldName][docRef] = Object.create(null)
+ }
+
+ // store all whitelisted metadata about this token in the
+ // inverted index
+ for (var l = 0; l < this.metadataWhitelist.length; l++) {
+ var metadataKey = this.metadataWhitelist[l],
+ metadata = term.metadata[metadataKey]
+
+ if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {
+ this.invertedIndex[term][fieldName][docRef][metadataKey] = []
+ }
+
+ this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata)
+ }
+ }
+
+ }
+}
+
+/**
+ * Calculates the average document length for this index
+ *
+ * @private
+ */
+lunr.Builder.prototype.calculateAverageFieldLengths = function () {
+
+ var fieldRefs = Object.keys(this.fieldLengths),
+ numberOfFields = fieldRefs.length,
+ accumulator = {},
+ documentsWithField = {}
+
+ for (var i = 0; i < numberOfFields; i++) {
+ var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),
+ field = fieldRef.fieldName
+
+ documentsWithField[field] || (documentsWithField[field] = 0)
+ documentsWithField[field] += 1
+
+ accumulator[field] || (accumulator[field] = 0)
+ accumulator[field] += this.fieldLengths[fieldRef]
+ }
+
+ var fields = Object.keys(this._fields)
+
+ for (var i = 0; i < fields.length; i++) {
+ var fieldName = fields[i]
+ accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName]
+ }
+
+ this.averageFieldLength = accumulator
+}
+
+/**
+ * Builds a vector space model of every document using lunr.Vector
+ *
+ * @private
+ */
+lunr.Builder.prototype.createFieldVectors = function () {
+ var fieldVectors = {},
+ fieldRefs = Object.keys(this.fieldTermFrequencies),
+ fieldRefsLength = fieldRefs.length,
+ termIdfCache = Object.create(null)
+
+ for (var i = 0; i < fieldRefsLength; i++) {
+ var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),
+ fieldName = fieldRef.fieldName,
+ fieldLength = this.fieldLengths[fieldRef],
+ fieldVector = new lunr.Vector,
+ termFrequencies = this.fieldTermFrequencies[fieldRef],
+ terms = Object.keys(termFrequencies),
+ termsLength = terms.length
+
+
+ var fieldBoost = this._fields[fieldName].boost || 1,
+ docBoost = this._documents[fieldRef.docRef].boost || 1
+
+ for (var j = 0; j < termsLength; j++) {
+ var term = terms[j],
+ tf = termFrequencies[term],
+ termIndex = this.invertedIndex[term]._index,
+ idf, score, scoreWithPrecision
+
+ if (termIdfCache[term] === undefined) {
+ idf = lunr.idf(this.invertedIndex[term], this.documentCount)
+ termIdfCache[term] = idf
+ } else {
+ idf = termIdfCache[term]
+ }
+
+ score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf)
+ score *= fieldBoost
+ score *= docBoost
+ scoreWithPrecision = Math.round(score * 1000) / 1000
+ // Converts 1.23456789 to 1.234.
+ // Reducing the precision so that the vectors take up less
+ // space when serialised. Doing it now so that they behave
+ // the same before and after serialisation. Also, this is
+ // the fastest approach to reducing a number's precision in
+ // JavaScript.
+
+ fieldVector.insert(termIndex, scoreWithPrecision)
+ }
+
+ fieldVectors[fieldRef] = fieldVector
+ }
+
+ this.fieldVectors = fieldVectors
+}
+
+/**
+ * Creates a token set of all tokens in the index using lunr.TokenSet
+ *
+ * @private
+ */
+lunr.Builder.prototype.createTokenSet = function () {
+ this.tokenSet = lunr.TokenSet.fromArray(
+ Object.keys(this.invertedIndex).sort()
+ )
+}
+
+/**
+ * Builds the index, creating an instance of lunr.Index.
+ *
+ * This completes the indexing process and should only be called
+ * once all documents have been added to the index.
+ *
+ * @returns {lunr.Index}
+ */
+lunr.Builder.prototype.build = function () {
+ this.calculateAverageFieldLengths()
+ this.createFieldVectors()
+ this.createTokenSet()
+
+ return new lunr.Index({
+ invertedIndex: this.invertedIndex,
+ fieldVectors: this.fieldVectors,
+ tokenSet: this.tokenSet,
+ fields: Object.keys(this._fields),
+ pipeline: this.searchPipeline
+ })
+}
+
+/**
+ * Applies a plugin to the index builder.
+ *
+ * A plugin is a function that is called with the index builder as its context.
+ * Plugins can be used to customise or extend the behaviour of the index
+ * in some way. A plugin is just a function, that encapsulated the custom
+ * behaviour that should be applied when building the index.
+ *
+ * The plugin function will be called with the index builder as its argument, additional
+ * arguments can also be passed when calling use. The function will be called
+ * with the index builder as its context.
+ *
+ * @param {Function} plugin The plugin to apply.
+ */
+lunr.Builder.prototype.use = function (fn) {
+ var args = Array.prototype.slice.call(arguments, 1)
+ args.unshift(this)
+ fn.apply(this, args)
+}
diff --git a/node_modules/lunr/lib/field_ref.js b/node_modules/lunr/lib/field_ref.js
new file mode 100644
index 0000000..c31f118
--- /dev/null
+++ b/node_modules/lunr/lib/field_ref.js
@@ -0,0 +1,28 @@
+lunr.FieldRef = function (docRef, fieldName, stringValue) {
+ this.docRef = docRef
+ this.fieldName = fieldName
+ this._stringValue = stringValue
+}
+
+lunr.FieldRef.joiner = "/"
+
+lunr.FieldRef.fromString = function (s) {
+ var n = s.indexOf(lunr.FieldRef.joiner)
+
+ if (n === -1) {
+ throw "malformed field ref string"
+ }
+
+ var fieldRef = s.slice(0, n),
+ docRef = s.slice(n + 1)
+
+ return new lunr.FieldRef (docRef, fieldRef, s)
+}
+
+lunr.FieldRef.prototype.toString = function () {
+ if (this._stringValue == undefined) {
+ this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef
+ }
+
+ return this._stringValue
+}
diff --git a/node_modules/lunr/lib/idf.js b/node_modules/lunr/lib/idf.js
new file mode 100644
index 0000000..7f1d43c
--- /dev/null
+++ b/node_modules/lunr/lib/idf.js
@@ -0,0 +1,21 @@
+/**
+ * A function to calculate the inverse document frequency for
+ * a posting. This is shared between the builder and the index
+ *
+ * @private
+ * @param {object} posting - The posting for a given term
+ * @param {number} documentCount - The total number of documents.
+ */
+lunr.idf = function (posting, documentCount) {
+ var documentsWithTerm = 0
+
+ for (var fieldName in posting) {
+ if (fieldName == '_index') continue // Ignore the term index, its not a field
+ documentsWithTerm += Object.keys(posting[fieldName]).length
+ }
+
+ var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5)
+
+ return Math.log(1 + Math.abs(x))
+}
+
diff --git a/node_modules/lunr/lib/index.js b/node_modules/lunr/lib/index.js
new file mode 100644
index 0000000..5d96567
--- /dev/null
+++ b/node_modules/lunr/lib/index.js
@@ -0,0 +1,492 @@
+/*!
+ * lunr.Index
+ * Copyright (C) @YEAR Oliver Nightingale
+ */
+
+/**
+ * An index contains the built index of all documents and provides a query interface
+ * to the index.
+ *
+ * Usually instances of lunr.Index will not be created using this constructor, instead
+ * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be
+ * used to load previously built and serialized indexes.
+ *
+ * @constructor
+ * @param {Object} attrs - The attributes of the built search index.
+ * @param {Object} attrs.invertedIndex - An index of term/field to document reference.
+ * @param {Object<string, lunr.Vector>} attrs.fieldVectors - Field vectors
+ * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.
+ * @param {string[]} attrs.fields - The names of indexed document fields.
+ * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.
+ */
+lunr.Index = function (attrs) {
+ this.invertedIndex = attrs.invertedIndex
+ this.fieldVectors = attrs.fieldVectors
+ this.tokenSet = attrs.tokenSet
+ this.fields = attrs.fields
+ this.pipeline = attrs.pipeline
+}
+
+/**
+ * A result contains details of a document matching a search query.
+ * @typedef {Object} lunr.Index~Result
+ * @property {string} ref - The reference of the document this result represents.
+ * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.
+ * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.
+ */
+
+/**
+ * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple
+ * query language which itself is parsed into an instance of lunr.Query.
+ *
+ * For programmatically building queries it is advised to directly use lunr.Query, the query language
+ * is best used for human entered text rather than program generated text.
+ *
+ * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported
+ * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'
+ * or 'world', though those that contain both will rank higher in the results.
+ *
+ * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can
+ * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding
+ * wildcards will increase the number of documents that will be found but can also have a negative
+ * impact on query performance, especially with wildcards at the beginning of a term.
+ *
+ * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term
+ * hello in the title field will match this query. Using a field not present in the index will lead
+ * to an error being thrown.
+ *
+ * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term
+ * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported
+ * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.
+ * Avoid large values for edit distance to improve query performance.
+ *
+ * Each term also supports a presence modifier. By default a term's presence in document is optional, however
+ * this can be changed to either required or prohibited. For a term's presence to be required in a document the
+ * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and
+ * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not
+ * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.
+ *
+ * To escape special characters the backslash character '\' can be used, this allows searches to include
+ * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead
+ * of attempting to apply a boost of 2 to the search term "foo".
+ *
+ * @typedef {string} lunr.Index~QueryString
+ * @example <caption>Simple single term query</caption>
+ * hello
+ * @example <caption>Multiple term query</caption>
+ * hello world
+ * @example <caption>term scoped to a field</caption>
+ * title:hello
+ * @example <caption>term with a boost of 10</caption>
+ * hello^10
+ * @example <caption>term with an edit distance of 2</caption>
+ * hello~2
+ * @example <caption>terms with presence modifiers</caption>
+ * -foo +bar baz
+ */
+
+/**
+ * Performs a search against the index using lunr query syntax.
+ *
+ * Results will be returned sorted by their score, the most relevant results
+ * will be returned first. For details on how the score is calculated, please see
+ * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.
+ *
+ * For more programmatic querying use lunr.Index#query.
+ *
+ * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.
+ * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.
+ * @returns {lunr.Index~Result[]}
+ */
+lunr.Index.prototype.search = function (queryString) {
+ return this.query(function (query) {
+ var parser = new lunr.QueryParser(queryString, query)
+ parser.parse()
+ })
+}
+
+/**
+ * A query builder callback provides a query object to be used to express
+ * the query to perform on the index.
+ *
+ * @callback lunr.Index~queryBuilder
+ * @param {lunr.Query} query - The query object to build up.
+ * @this lunr.Query
+ */
+
+/**
+ * Performs a query against the index using the yielded lunr.Query object.
+ *
+ * If performing programmatic queries against the index, this method is preferred
+ * over lunr.Index#search so as to avoid the additional query parsing overhead.
+ *
+ * A query object is yielded to the supplied function which should be used to
+ * express the query to be run against the index.
+ *
+ * Note that although this function takes a callback parameter it is _not_ an
+ * asynchronous operation, the callback is just yielded a query object to be
+ * customized.
+ *
+ * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.
+ * @returns {lunr.Index~Result[]}
+ */
+lunr.Index.prototype.query = function (fn) {
+ // for each query clause
+ // * process terms
+ // * expand terms from token set
+ // * find matching documents and metadata
+ // * get document vectors
+ // * score documents
+
+ var query = new lunr.Query(this.fields),
+ matchingFields = Object.create(null),
+ queryVectors = Object.create(null),
+ termFieldCache = Object.create(null),
+ requiredMatches = Object.create(null),
+ prohibitedMatches = Object.create(null)
+
+ /*
+ * To support field level boosts a query vector is created per
+ * field. An empty vector is eagerly created to support negated
+ * queries.
+ */
+ for (var i = 0; i < this.fields.length; i++) {
+ queryVectors[this.fields[i]] = new lunr.Vector
+ }
+
+ fn.call(query, query)
+
+ for (var i = 0; i < query.clauses.length; i++) {
+ /*
+ * Unless the pipeline has been disabled for this term, which is
+ * the case for terms with wildcards, we need to pass the clause
+ * term through the search pipeline. A pipeline returns an array
+ * of processed terms. Pipeline functions may expand the passed
+ * term, which means we may end up performing multiple index lookups
+ * for a single query term.
+ */
+ var clause = query.clauses[i],
+ terms = null,
+ clauseMatches = lunr.Set.empty
+
+ if (clause.usePipeline) {
+ terms = this.pipeline.runString(clause.term, {
+ fields: clause.fields
+ })
+ } else {
+ terms = [clause.term]
+ }
+
+ for (var m = 0; m < terms.length; m++) {
+ var term = terms[m]
+
+ /*
+ * Each term returned from the pipeline needs to use the same query
+ * clause object, e.g. the same boost and or edit distance. The
+ * simplest way to do this is to re-use the clause object but mutate
+ * its term property.
+ */
+ clause.term = term
+
+ /*
+ * From the term in the clause we create a token set which will then
+ * be used to intersect the indexes token set to get a list of terms
+ * to lookup in the inverted index
+ */
+ var termTokenSet = lunr.TokenSet.fromClause(clause),
+ expandedTerms = this.tokenSet.intersect(termTokenSet).toArray()
+
+ /*
+ * If a term marked as required does not exist in the tokenSet it is
+ * impossible for the search to return any matches. We set all the field
+ * scoped required matches set to empty and stop examining any further
+ * clauses.
+ */
+ if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {
+ for (var k = 0; k < clause.fields.length; k++) {
+ var field = clause.fields[k]
+ requiredMatches[field] = lunr.Set.empty
+ }
+
+ break
+ }
+
+ for (var j = 0; j < expandedTerms.length; j++) {
+ /*
+ * For each term get the posting and termIndex, this is required for
+ * building the query vector.
+ */
+ var expandedTerm = expandedTerms[j],
+ posting = this.invertedIndex[expandedTerm],
+ termIndex = posting._index
+
+ for (var k = 0; k < clause.fields.length; k++) {
+ /*
+ * For each field that this query term is scoped by (by default
+ * all fields are in scope) we need to get all the document refs
+ * that have this term in that field.
+ *
+ * The posting is the entry in the invertedIndex for the matching
+ * term from above.
+ */
+ var field = clause.fields[k],
+ fieldPosting = posting[field],
+ matchingDocumentRefs = Object.keys(fieldPosting),
+ termField = expandedTerm + "/" + field,
+ matchingDocumentsSet = new lunr.Set(matchingDocumentRefs)
+
+ /*
+ * if the presence of this term is required ensure that the matching
+ * documents are added to the set of required matches for this clause.
+ *
+ */
+ if (clause.presence == lunr.Query.presence.REQUIRED) {
+ clauseMatches = clauseMatches.union(matchingDocumentsSet)
+
+ if (requiredMatches[field] === undefined) {
+ requiredMatches[field] = lunr.Set.complete
+ }
+ }
+
+ /*
+ * if the presence of this term is prohibited ensure that the matching
+ * documents are added to the set of prohibited matches for this field,
+ * creating that set if it does not yet exist.
+ */
+ if (clause.presence == lunr.Query.presence.PROHIBITED) {
+ if (prohibitedMatches[field] === undefined) {
+ prohibitedMatches[field] = lunr.Set.empty
+ }
+
+ prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet)
+
+ /*
+ * Prohibited matches should not be part of the query vector used for
+ * similarity scoring and no metadata should be extracted so we continue
+ * to the next field
+ */
+ continue
+ }
+
+ /*
+ * The query field vector is populated using the termIndex found for
+ * the term and a unit value with the appropriate boost applied.
+ * Using upsert because there could already be an entry in the vector
+ * for the term we are working with. In that case we just add the scores
+ * together.
+ */
+ queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b })
+
+ /**
+ * If we've already seen this term, field combo then we've already collected
+ * the matching documents and metadata, no need to go through all that again
+ */
+ if (termFieldCache[termField]) {
+ continue
+ }
+
+ for (var l = 0; l < matchingDocumentRefs.length; l++) {
+ /*
+ * All metadata for this term/field/document triple
+ * are then extracted and collected into an instance
+ * of lunr.MatchData ready to be returned in the query
+ * results
+ */
+ var matchingDocumentRef = matchingDocumentRefs[l],
+ matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field),
+ metadata = fieldPosting[matchingDocumentRef],
+ fieldMatch
+
+ if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {
+ matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata)
+ } else {
+ fieldMatch.add(expandedTerm, field, metadata)
+ }
+
+ }
+
+ termFieldCache[termField] = true
+ }
+ }
+ }
+
+ /**
+ * If the presence was required we need to update the requiredMatches field sets.
+ * We do this after all fields for the term have collected their matches because
+ * the clause terms presence is required in _any_ of the fields not _all_ of the
+ * fields.
+ */
+ if (clause.presence === lunr.Query.presence.REQUIRED) {
+ for (var k = 0; k < clause.fields.length; k++) {
+ var field = clause.fields[k]
+ requiredMatches[field] = requiredMatches[field].intersect(clauseMatches)
+ }
+ }
+ }
+
+ /**
+ * Need to combine the field scoped required and prohibited
+ * matching documents into a global set of required and prohibited
+ * matches
+ */
+ var allRequiredMatches = lunr.Set.complete,
+ allProhibitedMatches = lunr.Set.empty
+
+ for (var i = 0; i < this.fields.length; i++) {
+ var field = this.fields[i]
+
+ if (requiredMatches[field]) {
+ allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field])
+ }
+
+ if (prohibitedMatches[field]) {
+ allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field])
+ }
+ }
+
+ var matchingFieldRefs = Object.keys(matchingFields),
+ results = [],
+ matches = Object.create(null)
+
+ /*
+ * If the query is negated (contains only prohibited terms)
+ * we need to get _all_ fieldRefs currently existing in the
+ * index. This is only done when we know that the query is
+ * entirely prohibited terms to avoid any cost of getting all
+ * fieldRefs unnecessarily.
+ *
+ * Additionally, blank MatchData must be created to correctly
+ * populate the results.
+ */
+ if (query.isNegated()) {
+ matchingFieldRefs = Object.keys(this.fieldVectors)
+
+ for (var i = 0; i < matchingFieldRefs.length; i++) {
+ var matchingFieldRef = matchingFieldRefs[i]
+ var fieldRef = lunr.FieldRef.fromString(matchingFieldRef)
+ matchingFields[matchingFieldRef] = new lunr.MatchData
+ }
+ }
+
+ for (var i = 0; i < matchingFieldRefs.length; i++) {
+ /*
+ * Currently we have document fields that match the query, but we
+ * need to return documents. The matchData and scores are combined
+ * from multiple fields belonging to the same document.
+ *
+ * Scores are calculated by field, using the query vectors created
+ * above, and combined into a final document score using addition.
+ */
+ var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),
+ docRef = fieldRef.docRef
+
+ if (!allRequiredMatches.contains(docRef)) {
+ continue
+ }
+
+ if (allProhibitedMatches.contains(docRef)) {
+ continue
+ }
+
+ var fieldVector = this.fieldVectors[fieldRef],
+ score = queryVectors[fieldRef.fieldName].similarity(fieldVector),
+ docMatch
+
+ if ((docMatch = matches[docRef]) !== undefined) {
+ docMatch.score += score
+ docMatch.matchData.combine(matchingFields[fieldRef])
+ } else {
+ var match = {
+ ref: docRef,
+ score: score,
+ matchData: matchingFields[fieldRef]
+ }
+ matches[docRef] = match
+ results.push(match)
+ }
+ }
+
+ /*
+ * Sort the results objects by score, highest first.
+ */
+ return results.sort(function (a, b) {
+ return b.score - a.score
+ })
+}
+
+/**
+ * Prepares the index for JSON serialization.
+ *
+ * The schema for this JSON blob will be described in a
+ * separate JSON schema file.
+ *
+ * @returns {Object}
+ */
+lunr.Index.prototype.toJSON = function () {
+ var invertedIndex = Object.keys(this.invertedIndex)
+ .sort()
+ .map(function (term) {
+ return [term, this.invertedIndex[term]]
+ }, this)
+
+ var fieldVectors = Object.keys(this.fieldVectors)
+ .map(function (ref) {
+ return [ref, this.fieldVectors[ref].toJSON()]
+ }, this)
+
+ return {
+ version: lunr.version,
+ fields: this.fields,
+ fieldVectors: fieldVectors,
+ invertedIndex: invertedIndex,
+ pipeline: this.pipeline.toJSON()
+ }
+}
+
+/**
+ * Loads a previously serialized lunr.Index
+ *
+ * @param {Object} serializedIndex - A previously serialized lunr.Index
+ * @returns {lunr.Index}
+ */
+lunr.Index.load = function (serializedIndex) {
+ var attrs = {},
+ fieldVectors = {},
+ serializedVectors = serializedIndex.fieldVectors,
+ invertedIndex = Object.create(null),
+ serializedInvertedIndex = serializedIndex.invertedIndex,
+ tokenSetBuilder = new lunr.TokenSet.Builder,
+ pipeline = lunr.Pipeline.load(serializedIndex.pipeline)
+
+ if (serializedIndex.version != lunr.version) {
+ lunr.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + lunr.version + "' does not match serialized index '" + serializedIndex.version + "'")
+ }
+
+ for (var i = 0; i < serializedVectors.length; i++) {
+ var tuple = serializedVectors[i],
+ ref = tuple[0],
+ elements = tuple[1]
+
+ fieldVectors[ref] = new lunr.Vector(elements)
+ }
+
+ for (var i = 0; i < serializedInvertedIndex.length; i++) {
+ var tuple = serializedInvertedIndex[i],
+ term = tuple[0],
+ posting = tuple[1]
+
+ tokenSetBuilder.insert(term)
+ invertedIndex[term] = posting
+ }
+
+ tokenSetBuilder.finish()
+
+ attrs.fields = serializedIndex.fields
+
+ attrs.fieldVectors = fieldVectors
+ attrs.invertedIndex = invertedIndex
+ attrs.tokenSet = tokenSetBuilder.root
+ attrs.pipeline = pipeline
+
+ return new lunr.Index(attrs)
+}
diff --git a/node_modules/lunr/lib/lunr.js b/node_modules/lunr/lib/lunr.js
new file mode 100644
index 0000000..9c451e6
--- /dev/null
+++ b/node_modules/lunr/lib/lunr.js
@@ -0,0 +1,49 @@
+/**
+ * A convenience function for configuring and constructing
+ * a new lunr Index.
+ *
+ * A lunr.Builder instance is created and the pipeline setup
+ * with a trimmer, stop word filter and stemmer.
+ *
+ * This builder object is yielded to the configuration function
+ * that is passed as a parameter, allowing the list of fields
+ * and other builder parameters to be customised.
+ *
+ * All documents _must_ be added within the passed config function.
+ *
+ * @example
+ * var idx = lunr(function () {
+ * this.field('title')
+ * this.field('body')
+ * this.ref('id')
+ *
+ * documents.forEach(function (doc) {
+ * this.add(doc)
+ * }, this)
+ * })
+ *
+ * @see {@link lunr.Builder}
+ * @see {@link lunr.Pipeline}
+ * @see {@link lunr.trimmer}
+ * @see {@link lunr.stopWordFilter}
+ * @see {@link lunr.stemmer}
+ * @namespace {function} lunr
+ */
+var lunr = function (config) {
+ var builder = new lunr.Builder
+
+ builder.pipeline.add(
+ lunr.trimmer,
+ lunr.stopWordFilter,
+ lunr.stemmer
+ )
+
+ builder.searchPipeline.add(
+ lunr.stemmer
+ )
+
+ config.call(builder, builder)
+ return builder.build()
+}
+
+lunr.version = "@VERSION"
diff --git a/node_modules/lunr/lib/match_data.js b/node_modules/lunr/lib/match_data.js
new file mode 100644
index 0000000..3014ab9
--- /dev/null
+++ b/node_modules/lunr/lib/match_data.js
@@ -0,0 +1,107 @@
+/**
+ * Contains and collects metadata about a matching document.
+ * A single instance of lunr.MatchData is returned as part of every
+ * lunr.Index~Result.
+ *
+ * @constructor
+ * @param {string} term - The term this match data is associated with
+ * @param {string} field - The field in which the term was found
+ * @param {object} metadata - The metadata recorded about this term in this field
+ * @property {object} metadata - A cloned collection of metadata associated with this document.
+ * @see {@link lunr.Index~Result}
+ */
+lunr.MatchData = function (term, field, metadata) {
+ var clonedMetadata = Object.create(null),
+ metadataKeys = Object.keys(metadata || {})
+
+ // Cloning the metadata to prevent the original
+ // being mutated during match data combination.
+ // Metadata is kept in an array within the inverted
+ // index so cloning the data can be done with
+ // Array#slice
+ for (var i = 0; i < metadataKeys.length; i++) {
+ var key = metadataKeys[i]
+ clonedMetadata[key] = metadata[key].slice()
+ }
+
+ this.metadata = Object.create(null)
+
+ if (term !== undefined) {
+ this.metadata[term] = Object.create(null)
+ this.metadata[term][field] = clonedMetadata
+ }
+}
+
+/**
+ * An instance of lunr.MatchData will be created for every term that matches a
+ * document. However only one instance is required in a lunr.Index~Result. This
+ * method combines metadata from another instance of lunr.MatchData with this
+ * objects metadata.
+ *
+ * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.
+ * @see {@link lunr.Index~Result}
+ */
+lunr.MatchData.prototype.combine = function (otherMatchData) {
+ var terms = Object.keys(otherMatchData.metadata)
+
+ for (var i = 0; i < terms.length; i++) {
+ var term = terms[i],
+ fields = Object.keys(otherMatchData.metadata[term])
+
+ if (this.metadata[term] == undefined) {
+ this.metadata[term] = Object.create(null)
+ }
+
+ for (var j = 0; j < fields.length; j++) {
+ var field = fields[j],
+ keys = Object.keys(otherMatchData.metadata[term][field])
+
+ if (this.metadata[term][field] == undefined) {
+ this.metadata[term][field] = Object.create(null)
+ }
+
+ for (var k = 0; k < keys.length; k++) {
+ var key = keys[k]
+
+ if (this.metadata[term][field][key] == undefined) {
+ this.metadata[term][field][key] = otherMatchData.metadata[term][field][key]
+ } else {
+ this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key])
+ }
+
+ }
+ }
+ }
+}
+
+/**
+ * Add metadata for a term/field pair to this instance of match data.
+ *
+ * @param {string} term - The term this match data is associated with
+ * @param {string} field - The field in which the term was found
+ * @param {object} metadata - The metadata recorded about this term in this field
+ */
+lunr.MatchData.prototype.add = function (term, field, metadata) {
+ if (!(term in this.metadata)) {
+ this.metadata[term] = Object.create(null)
+ this.metadata[term][field] = metadata
+ return
+ }
+
+ if (!(field in this.metadata[term])) {
+ this.metadata[term][field] = metadata
+ return
+ }
+
+ var metadataKeys = Object.keys(metadata)
+
+ for (var i = 0; i < metadataKeys.length; i++) {
+ var key = metadataKeys[i]
+
+ if (key in this.metadata[term][field]) {
+ this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key])
+ } else {
+ this.metadata[term][field][key] = metadata[key]
+ }
+ }
+}
diff --git a/node_modules/lunr/lib/pipeline.js b/node_modules/lunr/lib/pipeline.js
new file mode 100644
index 0000000..e665483
--- /dev/null
+++ b/node_modules/lunr/lib/pipeline.js
@@ -0,0 +1,267 @@
+/*!
+ * lunr.Pipeline
+ * Copyright (C) @YEAR Oliver Nightingale
+ */
+
+/**
+ * lunr.Pipelines maintain an ordered list of functions to be applied to all
+ * tokens in documents entering the search index and queries being ran against
+ * the index.
+ *
+ * An instance of lunr.Index created with the lunr shortcut will contain a
+ * pipeline with a stop word filter and an English language stemmer. Extra
+ * functions can be added before or after either of these functions or these
+ * default functions can be removed.
+ *
+ * When run the pipeline will call each function in turn, passing a token, the
+ * index of that token in the original list of all tokens and finally a list of
+ * all the original tokens.
+ *
+ * The output of functions in the pipeline will be passed to the next function
+ * in the pipeline. To exclude a token from entering the index the function
+ * should return undefined, the rest of the pipeline will not be called with
+ * this token.
+ *
+ * For serialisation of pipelines to work, all functions used in an instance of
+ * a pipeline should be registered with lunr.Pipeline. Registered functions can
+ * then be loaded. If trying to load a serialised pipeline that uses functions
+ * that are not registered an error will be thrown.
+ *
+ * If not planning on serialising the pipeline then registering pipeline functions
+ * is not necessary.
+ *
+ * @constructor
+ */
+lunr.Pipeline = function () {
+ this._stack = []
+}
+
+lunr.Pipeline.registeredFunctions = Object.create(null)
+
+/**
+ * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token
+ * string as well as all known metadata. A pipeline function can mutate the token string
+ * or mutate (or add) metadata for a given token.
+ *
+ * A pipeline function can indicate that the passed token should be discarded by returning
+ * null, undefined or an empty string. This token will not be passed to any downstream pipeline
+ * functions and will not be added to the index.
+ *
+ * Multiple tokens can be returned by returning an array of tokens. Each token will be passed
+ * to any downstream pipeline functions and all will returned tokens will be added to the index.
+ *
+ * Any number of pipeline functions may be chained together using a lunr.Pipeline.
+ *
+ * @interface lunr.PipelineFunction
+ * @param {lunr.Token} token - A token from the document being processed.
+ * @param {number} i - The index of this token in the complete list of tokens for this document/field.
+ * @param {lunr.Token[]} tokens - All tokens for this document/field.
+ * @returns {(?lunr.Token|lunr.Token[])}
+ */
+
+/**
+ * Register a function with the pipeline.
+ *
+ * Functions that are used in the pipeline should be registered if the pipeline
+ * needs to be serialised, or a serialised pipeline needs to be loaded.
+ *
+ * Registering a function does not add it to a pipeline, functions must still be
+ * added to instances of the pipeline for them to be used when running a pipeline.
+ *
+ * @param {lunr.PipelineFunction} fn - The function to check for.
+ * @param {String} label - The label to register this function with
+ */
+lunr.Pipeline.registerFunction = function (fn, label) {
+ if (label in this.registeredFunctions) {
+ lunr.utils.warn('Overwriting existing registered function: ' + label)
+ }
+
+ fn.label = label
+ lunr.Pipeline.registeredFunctions[fn.label] = fn
+}
+
+/**
+ * Warns if the function is not registered as a Pipeline function.
+ *
+ * @param {lunr.PipelineFunction} fn - The function to check for.
+ * @private
+ */
+lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {
+ var isRegistered = fn.label && (fn.label in this.registeredFunctions)
+
+ if (!isRegistered) {
+ lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\n', fn)
+ }
+}
+
+/**
+ * Loads a previously serialised pipeline.
+ *
+ * All functions to be loaded must already be registered with lunr.Pipeline.
+ * If any function from the serialised data has not been registered then an
+ * error will be thrown.
+ *
+ * @param {Object} serialised - The serialised pipeline to load.
+ * @returns {lunr.Pipeline}
+ */
+lunr.Pipeline.load = function (serialised) {
+ var pipeline = new lunr.Pipeline
+
+ serialised.forEach(function (fnName) {
+ var fn = lunr.Pipeline.registeredFunctions[fnName]
+
+ if (fn) {
+ pipeline.add(fn)
+ } else {
+ throw new Error('Cannot load unregistered function: ' + fnName)
+ }
+ })
+
+ return pipeline
+}
+
+/**
+ * Adds new functions to the end of the pipeline.
+ *
+ * Logs a warning if the function has not been registered.
+ *
+ * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.
+ */
+lunr.Pipeline.prototype.add = function () {
+ var fns = Array.prototype.slice.call(arguments)
+
+ fns.forEach(function (fn) {
+ lunr.Pipeline.warnIfFunctionNotRegistered(fn)
+ this._stack.push(fn)
+ }, this)
+}
+
+/**
+ * Adds a single function after a function that already exists in the
+ * pipeline.
+ *
+ * Logs a warning if the function has not been registered.
+ *
+ * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.
+ * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.
+ */
+lunr.Pipeline.prototype.after = function (existingFn, newFn) {
+ lunr.Pipeline.warnIfFunctionNotRegistered(newFn)
+
+ var pos = this._stack.indexOf(existingFn)
+ if (pos == -1) {
+ throw new Error('Cannot find existingFn')
+ }
+
+ pos = pos + 1
+ this._stack.splice(pos, 0, newFn)
+}
+
+/**
+ * Adds a single function before a function that already exists in the
+ * pipeline.
+ *
+ * Logs a warning if the function has not been registered.
+ *
+ * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.
+ * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.
+ */
+lunr.Pipeline.prototype.before = function (existingFn, newFn) {
+ lunr.Pipeline.warnIfFunctionNotRegistered(newFn)
+
+ var pos = this._stack.indexOf(existingFn)
+ if (pos == -1) {
+ throw new Error('Cannot find existingFn')
+ }
+
+ this._stack.splice(pos, 0, newFn)
+}
+
+/**
+ * Removes a function from the pipeline.
+ *
+ * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.
+ */
+lunr.Pipeline.prototype.remove = function (fn) {
+ var pos = this._stack.indexOf(fn)
+ if (pos == -1) {
+ return
+ }
+
+ this._stack.splice(pos, 1)
+}
+
+/**
+ * Runs the current list of functions that make up the pipeline against the
+ * passed tokens.
+ *
+ * @param {Array} tokens The tokens to run through the pipeline.
+ * @returns {Array}
+ */
+lunr.Pipeline.prototype.run = function (tokens) {
+ var stackLength = this._stack.length
+
+ for (var i = 0; i < stackLength; i++) {
+ var fn = this._stack[i]
+ var memo = []
+
+ for (var j = 0; j < tokens.length; j++) {
+ var result = fn(tokens[j], j, tokens)
+
+ if (result === null || result === void 0 || result === '') continue
+
+ if (Array.isArray(result)) {
+ for (var k = 0; k < result.length; k++) {
+ memo.push(result[k])
+ }
+ } else {
+ memo.push(result)
+ }
+ }
+
+ tokens = memo
+ }
+
+ return tokens
+}
+
+/**
+ * Convenience method for passing a string through a pipeline and getting
+ * strings out. This method takes care of wrapping the passed string in a
+ * token and mapping the resulting tokens back to strings.
+ *
+ * @param {string} str - The string to pass through the pipeline.
+ * @param {?object} metadata - Optional metadata to associate with the token
+ * passed to the pipeline.
+ * @returns {string[]}
+ */
+lunr.Pipeline.prototype.runString = function (str, metadata) {
+ var token = new lunr.Token (str, metadata)
+
+ return this.run([token]).map(function (t) {
+ return t.toString()
+ })
+}
+
+/**
+ * Resets the pipeline by removing any existing processors.
+ *
+ */
+lunr.Pipeline.prototype.reset = function () {
+ this._stack = []
+}
+
+/**
+ * Returns a representation of the pipeline ready for serialisation.
+ *
+ * Logs a warning if the function has not been registered.
+ *
+ * @returns {Array}
+ */
+lunr.Pipeline.prototype.toJSON = function () {
+ return this._stack.map(function (fn) {
+ lunr.Pipeline.warnIfFunctionNotRegistered(fn)
+
+ return fn.label
+ })
+}
diff --git a/node_modules/lunr/lib/query.js b/node_modules/lunr/lib/query.js
new file mode 100644
index 0000000..0f3ece8
--- /dev/null
+++ b/node_modules/lunr/lib/query.js
@@ -0,0 +1,188 @@
+/**
+ * A lunr.Query provides a programmatic way of defining queries to be performed
+ * against a {@link lunr.Index}.
+ *
+ * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method
+ * so the query object is pre-initialized with the right index fields.
+ *
+ * @constructor
+ * @property {lunr.Query~Clause[]} clauses - An array of query clauses.
+ * @property {string[]} allFields - An array of all available fields in a lunr.Index.
+ */
+lunr.Query = function (allFields) {
+ this.clauses = []
+ this.allFields = allFields
+}
+
+/**
+ * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.
+ *
+ * This allows wildcards to be added to the beginning and end of a term without having to manually do any string
+ * concatenation.
+ *
+ * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.
+ *
+ * @constant
+ * @default
+ * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour
+ * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists
+ * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists
+ * @see lunr.Query~Clause
+ * @see lunr.Query#clause
+ * @see lunr.Query#term
+ * @example <caption>query term with trailing wildcard</caption>
+ * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })
+ * @example <caption>query term with leading and trailing wildcard</caption>
+ * query.term('foo', {
+ * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING
+ * })
+ */
+
+lunr.Query.wildcard = new String ("*")
+lunr.Query.wildcard.NONE = 0
+lunr.Query.wildcard.LEADING = 1
+lunr.Query.wildcard.TRAILING = 2
+
+/**
+ * Constants for indicating what kind of presence a term must have in matching documents.
+ *
+ * @constant
+ * @enum {number}
+ * @see lunr.Query~Clause
+ * @see lunr.Query#clause
+ * @see lunr.Query#term
+ * @example <caption>query term with required presence</caption>
+ * query.term('foo', { presence: lunr.Query.presence.REQUIRED })
+ */
+lunr.Query.presence = {
+ /**
+ * Term's presence in a document is optional, this is the default value.
+ */
+ OPTIONAL: 1,
+
+ /**
+ * Term's presence in a document is required, documents that do not contain
+ * this term will not be returned.
+ */
+ REQUIRED: 2,
+
+ /**
+ * Term's presence in a document is prohibited, documents that do contain
+ * this term will not be returned.
+ */
+ PROHIBITED: 3
+}
+
+/**
+ * A single clause in a {@link lunr.Query} contains a term and details on how to
+ * match that term against a {@link lunr.Index}.
+ *
+ * @typedef {Object} lunr.Query~Clause
+ * @property {string[]} fields - The fields in an index this clause should be matched against.
+ * @property {number} [boost=1] - Any boost that should be applied when matching this clause.
+ * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.
+ * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.
+ * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.
+ * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.
+ */
+
+/**
+ * Adds a {@link lunr.Query~Clause} to this query.
+ *
+ * Unless the clause contains the fields to be matched all fields will be matched. In addition
+ * a default boost of 1 is applied to the clause.
+ *
+ * @param {lunr.Query~Clause} clause - The clause to add to this query.
+ * @see lunr.Query~Clause
+ * @returns {lunr.Query}
+ */
+lunr.Query.prototype.clause = function (clause) {
+ if (!('fields' in clause)) {
+ clause.fields = this.allFields
+ }
+
+ if (!('boost' in clause)) {
+ clause.boost = 1
+ }
+
+ if (!('usePipeline' in clause)) {
+ clause.usePipeline = true
+ }
+
+ if (!('wildcard' in clause)) {
+ clause.wildcard = lunr.Query.wildcard.NONE
+ }
+
+ if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) {
+ clause.term = "*" + clause.term
+ }
+
+ if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) {
+ clause.term = "" + clause.term + "*"
+ }
+
+ if (!('presence' in clause)) {
+ clause.presence = lunr.Query.presence.OPTIONAL
+ }
+
+ this.clauses.push(clause)
+
+ return this
+}
+
+/**
+ * A negated query is one in which every clause has a presence of
+ * prohibited. These queries require some special processing to return
+ * the expected results.
+ *
+ * @returns boolean
+ */
+lunr.Query.prototype.isNegated = function () {
+ for (var i = 0; i < this.clauses.length; i++) {
+ if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {
+ return false
+ }
+ }
+
+ return true
+}
+
+/**
+ * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}
+ * to the list of clauses that make up this query.
+ *
+ * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion
+ * to a token or token-like string should be done before calling this method.
+ *
+ * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an
+ * array, each term in the array will share the same options.
+ *
+ * @param {object|object[]} term - The term(s) to add to the query.
+ * @param {object} [options] - Any additional properties to add to the query clause.
+ * @returns {lunr.Query}
+ * @see lunr.Query#clause
+ * @see lunr.Query~Clause
+ * @example <caption>adding a single term to a query</caption>
+ * query.term("foo")
+ * @example <caption>adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard</caption>
+ * query.term("foo", {
+ * fields: ["title"],
+ * boost: 10,
+ * wildcard: lunr.Query.wildcard.TRAILING
+ * })
+ * @example <caption>using lunr.tokenizer to convert a string to tokens before using them as terms</caption>
+ * query.term(lunr.tokenizer("foo bar"))
+ */
+lunr.Query.prototype.term = function (term, options) {
+ if (Array.isArray(term)) {
+ term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this)
+ return this
+ }
+
+ var clause = options || {}
+ clause.term = term.toString()
+
+ this.clause(clause)
+
+ return this
+}
diff --git a/node_modules/lunr/lib/query_lexer.js b/node_modules/lunr/lib/query_lexer.js
new file mode 100644
index 0000000..80346f2
--- /dev/null
+++ b/node_modules/lunr/lib/query_lexer.js
@@ -0,0 +1,209 @@
+lunr.QueryLexer = function (str) {
+ this.lexemes = []
+ this.str = str
+ this.length = str.length
+ this.pos = 0
+ this.start = 0
+ this.escapeCharPositions = []
+}
+
+lunr.QueryLexer.prototype.run = function () {
+ var state = lunr.QueryLexer.lexText
+
+ while (state) {
+ state = state(this)
+ }
+}
+
+lunr.QueryLexer.prototype.sliceString = function () {
+ var subSlices = [],
+ sliceStart = this.start,
+ sliceEnd = this.pos
+
+ for (var i = 0; i < this.escapeCharPositions.length; i++) {
+ sliceEnd = this.escapeCharPositions[i]
+ subSlices.push(this.str.slice(sliceStart, sliceEnd))
+ sliceStart = sliceEnd + 1
+ }
+
+ subSlices.push(this.str.slice(sliceStart, this.pos))
+ this.escapeCharPositions.length = 0
+
+ return subSlices.join('')
+}
+
+lunr.QueryLexer.prototype.emit = function (type) {
+ this.lexemes.push({
+ type: type,
+ str: this.sliceString(),
+ start: this.start,
+ end: this.pos
+ })
+
+ this.start = this.pos
+}
+
+lunr.QueryLexer.prototype.escapeCharacter = function () {
+ this.escapeCharPositions.push(this.pos - 1)
+ this.pos += 1
+}
+
+lunr.QueryLexer.prototype.next = function () {
+ if (this.pos >= this.length) {
+ return lunr.QueryLexer.EOS
+ }
+
+ var char = this.str.charAt(this.pos)
+ this.pos += 1
+ return char
+}
+
+lunr.QueryLexer.prototype.width = function () {
+ return this.pos - this.start
+}
+
+lunr.QueryLexer.prototype.ignore = function () {
+ if (this.start == this.pos) {
+ this.pos += 1
+ }
+
+ this.start = this.pos
+}
+
+lunr.QueryLexer.prototype.backup = function () {
+ this.pos -= 1
+}
+
+lunr.QueryLexer.prototype.acceptDigitRun = function () {
+ var char, charCode
+
+ do {
+ char = this.next()
+ charCode = char.charCodeAt(0)
+ } while (charCode > 47 && charCode < 58)
+
+ if (char != lunr.QueryLexer.EOS) {
+ this.backup()
+ }
+}
+
+lunr.QueryLexer.prototype.more = function () {
+ return this.pos < this.length
+}
+
+lunr.QueryLexer.EOS = 'EOS'
+lunr.QueryLexer.FIELD = 'FIELD'
+lunr.QueryLexer.TERM = 'TERM'
+lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'
+lunr.QueryLexer.BOOST = 'BOOST'
+lunr.QueryLexer.PRESENCE = 'PRESENCE'
+
+lunr.QueryLexer.lexField = function (lexer) {
+ lexer.backup()
+ lexer.emit(lunr.QueryLexer.FIELD)
+ lexer.ignore()
+ return lunr.QueryLexer.lexText
+}
+
+lunr.QueryLexer.lexTerm = function (lexer) {
+ if (lexer.width() > 1) {
+ lexer.backup()
+ lexer.emit(lunr.QueryLexer.TERM)
+ }
+
+ lexer.ignore()
+
+ if (lexer.more()) {
+ return lunr.QueryLexer.lexText
+ }
+}
+
+lunr.QueryLexer.lexEditDistance = function (lexer) {
+ lexer.ignore()
+ lexer.acceptDigitRun()
+ lexer.emit(lunr.QueryLexer.EDIT_DISTANCE)
+ return lunr.QueryLexer.lexText
+}
+
+lunr.QueryLexer.lexBoost = function (lexer) {
+ lexer.ignore()
+ lexer.acceptDigitRun()
+ lexer.emit(lunr.QueryLexer.BOOST)
+ return lunr.QueryLexer.lexText
+}
+
+lunr.QueryLexer.lexEOS = function (lexer) {
+ if (lexer.width() > 0) {
+ lexer.emit(lunr.QueryLexer.TERM)
+ }
+}
+
+// This matches the separator used when tokenising fields
+// within a document. These should match otherwise it is
+// not possible to search for some tokens within a document.
+//
+// It is possible for the user to change the separator on the
+// tokenizer so it _might_ clash with any other of the special
+// characters already used within the search string, e.g. :.
+//
+// This means that it is possible to change the separator in
+// such a way that makes some words unsearchable using a search
+// string.
+lunr.QueryLexer.termSeparator = lunr.tokenizer.separator
+
+lunr.QueryLexer.lexText = function (lexer) {
+ while (true) {
+ var char = lexer.next()
+
+ if (char == lunr.QueryLexer.EOS) {
+ return lunr.QueryLexer.lexEOS
+ }
+
+ // Escape character is '\'
+ if (char.charCodeAt(0) == 92) {
+ lexer.escapeCharacter()
+ continue
+ }
+
+ if (char == ":") {
+ return lunr.QueryLexer.lexField
+ }
+
+ if (char == "~") {
+ lexer.backup()
+ if (lexer.width() > 0) {
+ lexer.emit(lunr.QueryLexer.TERM)
+ }
+ return lunr.QueryLexer.lexEditDistance
+ }
+
+ if (char == "^") {
+ lexer.backup()
+ if (lexer.width() > 0) {
+ lexer.emit(lunr.QueryLexer.TERM)
+ }
+ return lunr.QueryLexer.lexBoost
+ }
+
+ // "+" indicates term presence is required
+ // checking for length to ensure that only
+ // leading "+" are considered
+ if (char == "+" && lexer.width() === 1) {
+ lexer.emit(lunr.QueryLexer.PRESENCE)
+ return lunr.QueryLexer.lexText
+ }
+
+ // "-" indicates term presence is prohibited
+ // checking for length to ensure that only
+ // leading "-" are considered
+ if (char == "-" && lexer.width() === 1) {
+ lexer.emit(lunr.QueryLexer.PRESENCE)
+ return lunr.QueryLexer.lexText
+ }
+
+ if (char.match(lunr.QueryLexer.termSeparator)) {
+ return lunr.QueryLexer.lexTerm
+ }
+ }
+}
+
diff --git a/node_modules/lunr/lib/query_parse_error.js b/node_modules/lunr/lib/query_parse_error.js
new file mode 100644
index 0000000..a5e1bfd
--- /dev/null
+++ b/node_modules/lunr/lib/query_parse_error.js
@@ -0,0 +1,8 @@
+lunr.QueryParseError = function (message, start, end) {
+ this.name = "QueryParseError"
+ this.message = message
+ this.start = start
+ this.end = end
+}
+
+lunr.QueryParseError.prototype = new Error
diff --git a/node_modules/lunr/lib/query_parser.js b/node_modules/lunr/lib/query_parser.js
new file mode 100644
index 0000000..eea4b63
--- /dev/null
+++ b/node_modules/lunr/lib/query_parser.js
@@ -0,0 +1,255 @@
+lunr.QueryParser = function (str, query) {
+ this.lexer = new lunr.QueryLexer (str)
+ this.query = query
+ this.currentClause = {}
+ this.lexemeIdx = 0
+}
+
+lunr.QueryParser.prototype.parse = function () {
+ this.lexer.run()
+ this.lexemes = this.lexer.lexemes
+
+ var state = lunr.QueryParser.parseClause
+
+ while (state) {
+ state = state(this)
+ }
+
+ return this.query
+}
+
+lunr.QueryParser.prototype.peekLexeme = function () {
+ return this.lexemes[this.lexemeIdx]
+}
+
+lunr.QueryParser.prototype.consumeLexeme = function () {
+ var lexeme = this.peekLexeme()
+ this.lexemeIdx += 1
+ return lexeme
+}
+
+lunr.QueryParser.prototype.nextClause = function () {
+ var completedClause = this.currentClause
+ this.query.clause(completedClause)
+ this.currentClause = {}
+}
+
+lunr.QueryParser.parseClause = function (parser) {
+ var lexeme = parser.peekLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ switch (lexeme.type) {
+ case lunr.QueryLexer.PRESENCE:
+ return lunr.QueryParser.parsePresence
+ case lunr.QueryLexer.FIELD:
+ return lunr.QueryParser.parseField
+ case lunr.QueryLexer.TERM:
+ return lunr.QueryParser.parseTerm
+ default:
+ var errorMessage = "expected either a field or a term, found " + lexeme.type
+
+ if (lexeme.str.length >= 1) {
+ errorMessage += " with value '" + lexeme.str + "'"
+ }
+
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+}
+
+lunr.QueryParser.parsePresence = function (parser) {
+ var lexeme = parser.consumeLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ switch (lexeme.str) {
+ case "-":
+ parser.currentClause.presence = lunr.Query.presence.PROHIBITED
+ break
+ case "+":
+ parser.currentClause.presence = lunr.Query.presence.REQUIRED
+ break
+ default:
+ var errorMessage = "unrecognised presence operator'" + lexeme.str + "'"
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+
+ var nextLexeme = parser.peekLexeme()
+
+ if (nextLexeme == undefined) {
+ var errorMessage = "expecting term or field, found nothing"
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+
+ switch (nextLexeme.type) {
+ case lunr.QueryLexer.FIELD:
+ return lunr.QueryParser.parseField
+ case lunr.QueryLexer.TERM:
+ return lunr.QueryParser.parseTerm
+ default:
+ var errorMessage = "expecting term or field, found '" + nextLexeme.type + "'"
+ throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)
+ }
+}
+
+lunr.QueryParser.parseField = function (parser) {
+ var lexeme = parser.consumeLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ if (parser.query.allFields.indexOf(lexeme.str) == -1) {
+ var possibleFields = parser.query.allFields.map(function (f) { return "'" + f + "'" }).join(', '),
+ errorMessage = "unrecognised field '" + lexeme.str + "', possible fields: " + possibleFields
+
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+
+ parser.currentClause.fields = [lexeme.str]
+
+ var nextLexeme = parser.peekLexeme()
+
+ if (nextLexeme == undefined) {
+ var errorMessage = "expecting term, found nothing"
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+
+ switch (nextLexeme.type) {
+ case lunr.QueryLexer.TERM:
+ return lunr.QueryParser.parseTerm
+ default:
+ var errorMessage = "expecting term, found '" + nextLexeme.type + "'"
+ throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)
+ }
+}
+
+lunr.QueryParser.parseTerm = function (parser) {
+ var lexeme = parser.consumeLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ parser.currentClause.term = lexeme.str.toLowerCase()
+
+ if (lexeme.str.indexOf("*") != -1) {
+ parser.currentClause.usePipeline = false
+ }
+
+ var nextLexeme = parser.peekLexeme()
+
+ if (nextLexeme == undefined) {
+ parser.nextClause()
+ return
+ }
+
+ switch (nextLexeme.type) {
+ case lunr.QueryLexer.TERM:
+ parser.nextClause()
+ return lunr.QueryParser.parseTerm
+ case lunr.QueryLexer.FIELD:
+ parser.nextClause()
+ return lunr.QueryParser.parseField
+ case lunr.QueryLexer.EDIT_DISTANCE:
+ return lunr.QueryParser.parseEditDistance
+ case lunr.QueryLexer.BOOST:
+ return lunr.QueryParser.parseBoost
+ case lunr.QueryLexer.PRESENCE:
+ parser.nextClause()
+ return lunr.QueryParser.parsePresence
+ default:
+ var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'"
+ throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)
+ }
+}
+
+lunr.QueryParser.parseEditDistance = function (parser) {
+ var lexeme = parser.consumeLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ var editDistance = parseInt(lexeme.str, 10)
+
+ if (isNaN(editDistance)) {
+ var errorMessage = "edit distance must be numeric"
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+
+ parser.currentClause.editDistance = editDistance
+
+ var nextLexeme = parser.peekLexeme()
+
+ if (nextLexeme == undefined) {
+ parser.nextClause()
+ return
+ }
+
+ switch (nextLexeme.type) {
+ case lunr.QueryLexer.TERM:
+ parser.nextClause()
+ return lunr.QueryParser.parseTerm
+ case lunr.QueryLexer.FIELD:
+ parser.nextClause()
+ return lunr.QueryParser.parseField
+ case lunr.QueryLexer.EDIT_DISTANCE:
+ return lunr.QueryParser.parseEditDistance
+ case lunr.QueryLexer.BOOST:
+ return lunr.QueryParser.parseBoost
+ case lunr.QueryLexer.PRESENCE:
+ parser.nextClause()
+ return lunr.QueryParser.parsePresence
+ default:
+ var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'"
+ throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)
+ }
+}
+
+lunr.QueryParser.parseBoost = function (parser) {
+ var lexeme = parser.consumeLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ var boost = parseInt(lexeme.str, 10)
+
+ if (isNaN(boost)) {
+ var errorMessage = "boost must be numeric"
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+
+ parser.currentClause.boost = boost
+
+ var nextLexeme = parser.peekLexeme()
+
+ if (nextLexeme == undefined) {
+ parser.nextClause()
+ return
+ }
+
+ switch (nextLexeme.type) {
+ case lunr.QueryLexer.TERM:
+ parser.nextClause()
+ return lunr.QueryParser.parseTerm
+ case lunr.QueryLexer.FIELD:
+ parser.nextClause()
+ return lunr.QueryParser.parseField
+ case lunr.QueryLexer.EDIT_DISTANCE:
+ return lunr.QueryParser.parseEditDistance
+ case lunr.QueryLexer.BOOST:
+ return lunr.QueryParser.parseBoost
+ case lunr.QueryLexer.PRESENCE:
+ parser.nextClause()
+ return lunr.QueryParser.parsePresence
+ default:
+ var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'"
+ throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)
+ }
+}
diff --git a/node_modules/lunr/lib/set.js b/node_modules/lunr/lib/set.js
new file mode 100644
index 0000000..a046cb0
--- /dev/null
+++ b/node_modules/lunr/lib/set.js
@@ -0,0 +1,133 @@
+/*!
+ * lunr.Set
+ * Copyright (C) @YEAR Oliver Nightingale
+ */
+
+/**
+ * A lunr set.
+ *
+ * @constructor
+ */
+lunr.Set = function (elements) {
+ this.elements = Object.create(null)
+
+ if (elements) {
+ this.length = elements.length
+
+ for (var i = 0; i < this.length; i++) {
+ this.elements[elements[i]] = true
+ }
+ } else {
+ this.length = 0
+ }
+}
+
+/**
+ * A complete set that contains all elements.
+ *
+ * @static
+ * @readonly
+ * @type {lunr.Set}
+ */
+lunr.Set.complete = {
+ intersect: function (other) {
+ return other
+ },
+
+ union: function () {
+ return this
+ },
+
+ contains: function () {
+ return true
+ }
+}
+
+/**
+ * An empty set that contains no elements.
+ *
+ * @static
+ * @readonly
+ * @type {lunr.Set}
+ */
+lunr.Set.empty = {
+ intersect: function () {
+ return this
+ },
+
+ union: function (other) {
+ return other
+ },
+
+ contains: function () {
+ return false
+ }
+}
+
+/**
+ * Returns true if this set contains the specified object.
+ *
+ * @param {object} object - Object whose presence in this set is to be tested.
+ * @returns {boolean} - True if this set contains the specified object.
+ */
+lunr.Set.prototype.contains = function (object) {
+ return !!this.elements[object]
+}
+
+/**
+ * Returns a new set containing only the elements that are present in both
+ * this set and the specified set.
+ *
+ * @param {lunr.Set} other - set to intersect with this set.
+ * @returns {lunr.Set} a new set that is the intersection of this and the specified set.
+ */
+
+lunr.Set.prototype.intersect = function (other) {
+ var a, b, elements, intersection = []
+
+ if (other === lunr.Set.complete) {
+ return this
+ }
+
+ if (other === lunr.Set.empty) {
+ return other
+ }
+
+ if (this.length < other.length) {
+ a = this
+ b = other
+ } else {
+ a = other
+ b = this
+ }
+
+ elements = Object.keys(a.elements)
+
+ for (var i = 0; i < elements.length; i++) {
+ var element = elements[i]
+ if (element in b.elements) {
+ intersection.push(element)
+ }
+ }
+
+ return new lunr.Set (intersection)
+}
+
+/**
+ * Returns a new set combining the elements of this and the specified set.
+ *
+ * @param {lunr.Set} other - set to union with this set.
+ * @return {lunr.Set} a new set that is the union of this and the specified set.
+ */
+
+lunr.Set.prototype.union = function (other) {
+ if (other === lunr.Set.complete) {
+ return lunr.Set.complete
+ }
+
+ if (other === lunr.Set.empty) {
+ return this
+ }
+
+ return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)))
+}
diff --git a/node_modules/lunr/lib/stemmer.js b/node_modules/lunr/lib/stemmer.js
new file mode 100644
index 0000000..05dc42e
--- /dev/null
+++ b/node_modules/lunr/lib/stemmer.js
@@ -0,0 +1,223 @@
+/* eslint-disable */
+/*!
+ * lunr.stemmer
+ * Copyright (C) @YEAR Oliver Nightingale
+ * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt
+ */
+
+/**
+ * lunr.stemmer is an english language stemmer, this is a JavaScript
+ * implementation of the PorterStemmer taken from http://tartarus.org/~martin
+ *
+ * @static
+ * @implements {lunr.PipelineFunction}
+ * @param {lunr.Token} token - The string to stem
+ * @returns {lunr.Token}
+ * @see {@link lunr.Pipeline}
+ * @function
+ */
+lunr.stemmer = (function(){
+ var step2list = {
+ "ational" : "ate",
+ "tional" : "tion",
+ "enci" : "ence",
+ "anci" : "ance",
+ "izer" : "ize",
+ "bli" : "ble",
+ "alli" : "al",
+ "entli" : "ent",
+ "eli" : "e",
+ "ousli" : "ous",
+ "ization" : "ize",
+ "ation" : "ate",
+ "ator" : "ate",
+ "alism" : "al",
+ "iveness" : "ive",
+ "fulness" : "ful",
+ "ousness" : "ous",
+ "aliti" : "al",
+ "iviti" : "ive",
+ "biliti" : "ble",
+ "logi" : "log"
+ },
+
+ step3list = {
+ "icate" : "ic",
+ "ative" : "",
+ "alize" : "al",
+ "iciti" : "ic",
+ "ical" : "ic",
+ "ful" : "",
+ "ness" : ""
+ },
+
+ c = "[^aeiou]", // consonant
+ v = "[aeiouy]", // vowel
+ C = c + "[^aeiouy]*", // consonant sequence
+ V = v + "[aeiou]*", // vowel sequence
+
+ mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0
+ meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1
+ mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1
+ s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ var re_mgr0 = new RegExp(mgr0);
+ var re_mgr1 = new RegExp(mgr1);
+ var re_meq1 = new RegExp(meq1);
+ var re_s_v = new RegExp(s_v);
+
+ var re_1a = /^(.+?)(ss|i)es$/;
+ var re2_1a = /^(.+?)([^s])s$/;
+ var re_1b = /^(.+?)eed$/;
+ var re2_1b = /^(.+?)(ed|ing)$/;
+ var re_1b_2 = /.$/;
+ var re2_1b_2 = /(at|bl|iz)$/;
+ var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$");
+ var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+
+ var re_1c = /^(.+?[^aeiou])y$/;
+ var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+
+ var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+
+ var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+ var re2_4 = /^(.+?)(s|t)(ion)$/;
+
+ var re_5 = /^(.+?)e$/;
+ var re_5_1 = /ll$/;
+ var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+
+ var porterStemmer = function porterStemmer(w) {
+ var stem,
+ suffix,
+ firstch,
+ re,
+ re2,
+ re3,
+ re4;
+
+ if (w.length < 3) { return w; }
+
+ firstch = w.substr(0,1);
+ if (firstch == "y") {
+ w = firstch.toUpperCase() + w.substr(1);
+ }
+
+ // Step 1a
+ re = re_1a
+ re2 = re2_1a;
+
+ if (re.test(w)) { w = w.replace(re,"$1$2"); }
+ else if (re2.test(w)) { w = w.replace(re2,"$1$2"); }
+
+ // Step 1b
+ re = re_1b;
+ re2 = re2_1b;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = re_mgr0;
+ if (re.test(fp[1])) {
+ re = re_1b_2;
+ w = w.replace(re,"");
+ }
+ } else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = re_s_v;
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = re2_1b_2;
+ re3 = re3_1b_2;
+ re4 = re4_1b_2;
+ if (re2.test(w)) { w = w + "e"; }
+ else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,""); }
+ else if (re4.test(w)) { w = w + "e"; }
+ }
+ }
+
+ // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)
+ re = re_1c;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem + "i";
+ }
+
+ // Step 2
+ re = re_2;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = re_mgr0;
+ if (re.test(stem)) {
+ w = stem + step2list[suffix];
+ }
+ }
+
+ // Step 3
+ re = re_3;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = re_mgr0;
+ if (re.test(stem)) {
+ w = stem + step3list[suffix];
+ }
+ }
+
+ // Step 4
+ re = re_4;
+ re2 = re2_4;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = re_mgr1;
+ if (re.test(stem)) {
+ w = stem;
+ }
+ } else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = re_mgr1;
+ if (re2.test(stem)) {
+ w = stem;
+ }
+ }
+
+ // Step 5
+ re = re_5;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = re_mgr1;
+ re2 = re_meq1;
+ re3 = re3_5;
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {
+ w = stem;
+ }
+ }
+
+ re = re_5_1;
+ re2 = re_mgr1;
+ if (re.test(w) && re2.test(w)) {
+ re = re_1b_2;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+
+ if (firstch == "y") {
+ w = firstch.toLowerCase() + w.substr(1);
+ }
+
+ return w;
+ };
+
+ return function (token) {
+ return token.update(porterStemmer);
+ }
+})();
+
+lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')
diff --git a/node_modules/lunr/lib/stop_word_filter.js b/node_modules/lunr/lib/stop_word_filter.js
new file mode 100644
index 0000000..1827455
--- /dev/null
+++ b/node_modules/lunr/lib/stop_word_filter.js
@@ -0,0 +1,165 @@
+/*!
+ * lunr.stopWordFilter
+ * Copyright (C) @YEAR Oliver Nightingale
+ */
+
+/**
+ * lunr.generateStopWordFilter builds a stopWordFilter function from the provided
+ * list of stop words.
+ *
+ * The built in lunr.stopWordFilter is built using this generator and can be used
+ * to generate custom stopWordFilters for applications or non English languages.
+ *
+ * @function
+ * @param {Array} token The token to pass through the filter
+ * @returns {lunr.PipelineFunction}
+ * @see lunr.Pipeline
+ * @see lunr.stopWordFilter
+ */
+lunr.generateStopWordFilter = function (stopWords) {
+ var words = stopWords.reduce(function (memo, stopWord) {
+ memo[stopWord] = stopWord
+ return memo
+ }, {})
+
+ return function (token) {
+ if (token && words[token.toString()] !== token.toString()) return token
+ }
+}
+
+/**
+ * lunr.stopWordFilter is an English language stop word list filter, any words
+ * contained in the list will not be passed through the filter.
+ *
+ * This is intended to be used in the Pipeline. If the token does not pass the
+ * filter then undefined will be returned.
+ *
+ * @function
+ * @implements {lunr.PipelineFunction}
+ * @params {lunr.Token} token - A token to check for being a stop word.
+ * @returns {lunr.Token}
+ * @see {@link lunr.Pipeline}
+ */
+lunr.stopWordFilter = lunr.generateStopWordFilter([
+ 'a',
+ 'able',
+ 'about',
+ 'across',
+ 'after',
+ 'all',
+ 'almost',
+ 'also',
+ 'am',
+ 'among',
+ 'an',
+ 'and',
+ 'any',
+ 'are',
+ 'as',
+ 'at',
+ 'be',
+ 'because',
+ 'been',
+ 'but',
+ 'by',
+ 'can',
+ 'cannot',
+ 'could',
+ 'dear',
+ 'did',
+ 'do',
+ 'does',
+ 'either',
+ 'else',
+ 'ever',
+ 'every',
+ 'for',
+ 'from',
+ 'get',
+ 'got',
+ 'had',
+ 'has',
+ 'have',
+ 'he',
+ 'her',
+ 'hers',
+ 'him',
+ 'his',
+ 'how',
+ 'however',
+ 'i',
+ 'if',
+ 'in',
+ 'into',
+ 'is',
+ 'it',
+ 'its',
+ 'just',
+ 'least',
+ 'let',
+ 'like',
+ 'likely',
+ 'may',
+ 'me',
+ 'might',
+ 'most',
+ 'must',
+ 'my',
+ 'neither',
+ 'no',
+ 'nor',
+ 'not',
+ 'of',
+ 'off',
+ 'often',
+ 'on',
+ 'only',
+ 'or',
+ 'other',
+ 'our',
+ 'own',
+ 'rather',
+ 'said',
+ 'say',
+ 'says',
+ 'she',
+ 'should',
+ 'since',
+ 'so',
+ 'some',
+ 'than',
+ 'that',
+ 'the',
+ 'their',
+ 'them',
+ 'then',
+ 'there',
+ 'these',
+ 'they',
+ 'this',
+ 'tis',
+ 'to',
+ 'too',
+ 'twas',
+ 'us',
+ 'wants',
+ 'was',
+ 'we',
+ 'were',
+ 'what',
+ 'when',
+ 'where',
+ 'which',
+ 'while',
+ 'who',
+ 'whom',
+ 'why',
+ 'will',
+ 'with',
+ 'would',
+ 'yet',
+ 'you',
+ 'your'
+])
+
+lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')
diff --git a/node_modules/lunr/lib/token.js b/node_modules/lunr/lib/token.js
new file mode 100644
index 0000000..1dda31f
--- /dev/null
+++ b/node_modules/lunr/lib/token.js
@@ -0,0 +1,58 @@
+/**
+ * A token wraps a string representation of a token
+ * as it is passed through the text processing pipeline.
+ *
+ * @constructor
+ * @param {string} [str=''] - The string token being wrapped.
+ * @param {object} [metadata={}] - Metadata associated with this token.
+ */
+lunr.Token = function (str, metadata) {
+ this.str = str || ""
+ this.metadata = metadata || {}
+}
+
+/**
+ * Returns the token string that is being wrapped by this object.
+ *
+ * @returns {string}
+ */
+lunr.Token.prototype.toString = function () {
+ return this.str
+}
+
+/**
+ * A token update function is used when updating or optionally
+ * when cloning a token.
+ *
+ * @callback lunr.Token~updateFunction
+ * @param {string} str - The string representation of the token.
+ * @param {Object} metadata - All metadata associated with this token.
+ */
+
+/**
+ * Applies the given function to the wrapped string token.
+ *
+ * @example
+ * token.update(function (str, metadata) {
+ * return str.toUpperCase()
+ * })
+ *
+ * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.
+ * @returns {lunr.Token}
+ */
+lunr.Token.prototype.update = function (fn) {
+ this.str = fn(this.str, this.metadata)
+ return this
+}
+
+/**
+ * Creates a clone of this token. Optionally a function can be
+ * applied to the cloned token.
+ *
+ * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.
+ * @returns {lunr.Token}
+ */
+lunr.Token.prototype.clone = function (fn) {
+ fn = fn || function (s) { return s }
+ return new lunr.Token (fn(this.str, this.metadata), this.metadata)
+}
diff --git a/node_modules/lunr/lib/token_set.js b/node_modules/lunr/lib/token_set.js
new file mode 100644
index 0000000..29bbb68
--- /dev/null
+++ b/node_modules/lunr/lib/token_set.js
@@ -0,0 +1,415 @@
+/*!
+ * lunr.TokenSet
+ * Copyright (C) @YEAR Oliver Nightingale
+ */
+
+/**
+ * A token set is used to store the unique list of all tokens
+ * within an index. Token sets are also used to represent an
+ * incoming query to the index, this query token set and index
+ * token set are then intersected to find which tokens to look
+ * up in the inverted index.
+ *
+ * A token set can hold multiple tokens, as in the case of the
+ * index token set, or it can hold a single token as in the
+ * case of a simple query token set.
+ *
+ * Additionally token sets are used to perform wildcard matching.
+ * Leading, contained and trailing wildcards are supported, and
+ * from this edit distance matching can also be provided.
+ *
+ * Token sets are implemented as a minimal finite state automata,
+ * where both common prefixes and suffixes are shared between tokens.
+ * This helps to reduce the space used for storing the token set.
+ *
+ * @constructor
+ */
+lunr.TokenSet = function () {
+ this.final = false
+ this.edges = {}
+ this.id = lunr.TokenSet._nextId
+ lunr.TokenSet._nextId += 1
+}
+
+/**
+ * Keeps track of the next, auto increment, identifier to assign
+ * to a new tokenSet.
+ *
+ * TokenSets require a unique identifier to be correctly minimised.
+ *
+ * @private
+ */
+lunr.TokenSet._nextId = 1
+
+/**
+ * Creates a TokenSet instance from the given sorted array of words.
+ *
+ * @param {String[]} arr - A sorted array of strings to create the set from.
+ * @returns {lunr.TokenSet}
+ * @throws Will throw an error if the input array is not sorted.
+ */
+lunr.TokenSet.fromArray = function (arr) {
+ var builder = new lunr.TokenSet.Builder
+
+ for (var i = 0, len = arr.length; i < len; i++) {
+ builder.insert(arr[i])
+ }
+
+ builder.finish()
+ return builder.root
+}
+
+/**
+ * Creates a token set from a query clause.
+ *
+ * @private
+ * @param {Object} clause - A single clause from lunr.Query.
+ * @param {string} clause.term - The query clause term.
+ * @param {number} [clause.editDistance] - The optional edit distance for the term.
+ * @returns {lunr.TokenSet}
+ */
+lunr.TokenSet.fromClause = function (clause) {
+ if ('editDistance' in clause) {
+ return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance)
+ } else {
+ return lunr.TokenSet.fromString(clause.term)
+ }
+}
+
+/**
+ * Creates a token set representing a single string with a specified
+ * edit distance.
+ *
+ * Insertions, deletions, substitutions and transpositions are each
+ * treated as an edit distance of 1.
+ *
+ * Increasing the allowed edit distance will have a dramatic impact
+ * on the performance of both creating and intersecting these TokenSets.
+ * It is advised to keep the edit distance less than 3.
+ *
+ * @param {string} str - The string to create the token set from.
+ * @param {number} editDistance - The allowed edit distance to match.
+ * @returns {lunr.Vector}
+ */
+lunr.TokenSet.fromFuzzyString = function (str, editDistance) {
+ var root = new lunr.TokenSet
+
+ var stack = [{
+ node: root,
+ editsRemaining: editDistance,
+ str: str
+ }]
+
+ while (stack.length) {
+ var frame = stack.pop()
+
+ // no edit
+ if (frame.str.length > 0) {
+ var char = frame.str.charAt(0),
+ noEditNode
+
+ if (char in frame.node.edges) {
+ noEditNode = frame.node.edges[char]
+ } else {
+ noEditNode = new lunr.TokenSet
+ frame.node.edges[char] = noEditNode
+ }
+
+ if (frame.str.length == 1) {
+ noEditNode.final = true
+ }
+
+ stack.push({
+ node: noEditNode,
+ editsRemaining: frame.editsRemaining,
+ str: frame.str.slice(1)
+ })
+ }
+
+ if (frame.editsRemaining == 0) {
+ continue
+ }
+
+ // insertion
+ if ("*" in frame.node.edges) {
+ var insertionNode = frame.node.edges["*"]
+ } else {
+ var insertionNode = new lunr.TokenSet
+ frame.node.edges["*"] = insertionNode
+ }
+
+ if (frame.str.length == 0) {
+ insertionNode.final = true
+ }
+
+ stack.push({
+ node: insertionNode,
+ editsRemaining: frame.editsRemaining - 1,
+ str: frame.str
+ })
+
+ // deletion
+ // can only do a deletion if we have enough edits remaining
+ // and if there are characters left to delete in the string
+ if (frame.str.length > 1) {
+ stack.push({
+ node: frame.node,
+ editsRemaining: frame.editsRemaining - 1,
+ str: frame.str.slice(1)
+ })
+ }
+
+ // deletion
+ // just removing the last character from the str
+ if (frame.str.length == 1) {
+ frame.node.final = true
+ }
+
+ // substitution
+ // can only do a substitution if we have enough edits remaining
+ // and if there are characters left to substitute
+ if (frame.str.length >= 1) {
+ if ("*" in frame.node.edges) {
+ var substitutionNode = frame.node.edges["*"]
+ } else {
+ var substitutionNode = new lunr.TokenSet
+ frame.node.edges["*"] = substitutionNode
+ }
+
+ if (frame.str.length == 1) {
+ substitutionNode.final = true
+ }
+
+ stack.push({
+ node: substitutionNode,
+ editsRemaining: frame.editsRemaining - 1,
+ str: frame.str.slice(1)
+ })
+ }
+
+ // transposition
+ // can only do a transposition if there are edits remaining
+ // and there are enough characters to transpose
+ if (frame.str.length > 1) {
+ var charA = frame.str.charAt(0),
+ charB = frame.str.charAt(1),
+ transposeNode
+
+ if (charB in frame.node.edges) {
+ transposeNode = frame.node.edges[charB]
+ } else {
+ transposeNode = new lunr.TokenSet
+ frame.node.edges[charB] = transposeNode
+ }
+
+ if (frame.str.length == 1) {
+ transposeNode.final = true
+ }
+
+ stack.push({
+ node: transposeNode,
+ editsRemaining: frame.editsRemaining - 1,
+ str: charA + frame.str.slice(2)
+ })
+ }
+ }
+
+ return root
+}
+
+/**
+ * Creates a TokenSet from a string.
+ *
+ * The string may contain one or more wildcard characters (*)
+ * that will allow wildcard matching when intersecting with
+ * another TokenSet.
+ *
+ * @param {string} str - The string to create a TokenSet from.
+ * @returns {lunr.TokenSet}
+ */
+lunr.TokenSet.fromString = function (str) {
+ var node = new lunr.TokenSet,
+ root = node
+
+ /*
+ * Iterates through all characters within the passed string
+ * appending a node for each character.
+ *
+ * When a wildcard character is found then a self
+ * referencing edge is introduced to continually match
+ * any number of any characters.
+ */
+ for (var i = 0, len = str.length; i < len; i++) {
+ var char = str[i],
+ final = (i == len - 1)
+
+ if (char == "*") {
+ node.edges[char] = node
+ node.final = final
+
+ } else {
+ var next = new lunr.TokenSet
+ next.final = final
+
+ node.edges[char] = next
+ node = next
+ }
+ }
+
+ return root
+}
+
+/**
+ * Converts this TokenSet into an array of strings
+ * contained within the TokenSet.
+ *
+ * This is not intended to be used on a TokenSet that
+ * contains wildcards, in these cases the results are
+ * undefined and are likely to cause an infinite loop.
+ *
+ * @returns {string[]}
+ */
+lunr.TokenSet.prototype.toArray = function () {
+ var words = []
+
+ var stack = [{
+ prefix: "",
+ node: this
+ }]
+
+ while (stack.length) {
+ var frame = stack.pop(),
+ edges = Object.keys(frame.node.edges),
+ len = edges.length
+
+ if (frame.node.final) {
+ /* In Safari, at this point the prefix is sometimes corrupted, see:
+ * https://github.com/olivernn/lunr.js/issues/279 Calling any
+ * String.prototype method forces Safari to "cast" this string to what
+ * it's supposed to be, fixing the bug. */
+ frame.prefix.charAt(0)
+ words.push(frame.prefix)
+ }
+
+ for (var i = 0; i < len; i++) {
+ var edge = edges[i]
+
+ stack.push({
+ prefix: frame.prefix.concat(edge),
+ node: frame.node.edges[edge]
+ })
+ }
+ }
+
+ return words
+}
+
+/**
+ * Generates a string representation of a TokenSet.
+ *
+ * This is intended to allow TokenSets to be used as keys
+ * in objects, largely to aid the construction and minimisation
+ * of a TokenSet. As such it is not designed to be a human
+ * friendly representation of the TokenSet.
+ *
+ * @returns {string}
+ */
+lunr.TokenSet.prototype.toString = function () {
+ // NOTE: Using Object.keys here as this.edges is very likely
+ // to enter 'hash-mode' with many keys being added
+ //
+ // avoiding a for-in loop here as it leads to the function
+ // being de-optimised (at least in V8). From some simple
+ // benchmarks the performance is comparable, but allowing
+ // V8 to optimize may mean easy performance wins in the future.
+
+ if (this._str) {
+ return this._str
+ }
+
+ var str = this.final ? '1' : '0',
+ labels = Object.keys(this.edges).sort(),
+ len = labels.length
+
+ for (var i = 0; i < len; i++) {
+ var label = labels[i],
+ node = this.edges[label]
+
+ str = str + label + node.id
+ }
+
+ return str
+}
+
+/**
+ * Returns a new TokenSet that is the intersection of
+ * this TokenSet and the passed TokenSet.
+ *
+ * This intersection will take into account any wildcards
+ * contained within the TokenSet.
+ *
+ * @param {lunr.TokenSet} b - An other TokenSet to intersect with.
+ * @returns {lunr.TokenSet}
+ */
+lunr.TokenSet.prototype.intersect = function (b) {
+ var output = new lunr.TokenSet,
+ frame = undefined
+
+ var stack = [{
+ qNode: b,
+ output: output,
+ node: this
+ }]
+
+ while (stack.length) {
+ frame = stack.pop()
+
+ // NOTE: As with the #toString method, we are using
+ // Object.keys and a for loop instead of a for-in loop
+ // as both of these objects enter 'hash' mode, causing
+ // the function to be de-optimised in V8
+ var qEdges = Object.keys(frame.qNode.edges),
+ qLen = qEdges.length,
+ nEdges = Object.keys(frame.node.edges),
+ nLen = nEdges.length
+
+ for (var q = 0; q < qLen; q++) {
+ var qEdge = qEdges[q]
+
+ for (var n = 0; n < nLen; n++) {
+ var nEdge = nEdges[n]
+
+ if (nEdge == qEdge || qEdge == '*') {
+ var node = frame.node.edges[nEdge],
+ qNode = frame.qNode.edges[qEdge],
+ final = node.final && qNode.final,
+ next = undefined
+
+ if (nEdge in frame.output.edges) {
+ // an edge already exists for this character
+ // no need to create a new node, just set the finality
+ // bit unless this node is already final
+ next = frame.output.edges[nEdge]
+ next.final = next.final || final
+
+ } else {
+ // no edge exists yet, must create one
+ // set the finality bit and insert it
+ // into the output
+ next = new lunr.TokenSet
+ next.final = final
+ frame.output.edges[nEdge] = next
+ }
+
+ stack.push({
+ qNode: qNode,
+ output: next,
+ node: node
+ })
+ }
+ }
+ }
+ }
+
+ return output
+}
diff --git a/node_modules/lunr/lib/token_set_builder.js b/node_modules/lunr/lib/token_set_builder.js
new file mode 100644
index 0000000..59ba703
--- /dev/null
+++ b/node_modules/lunr/lib/token_set_builder.js
@@ -0,0 +1,69 @@
+lunr.TokenSet.Builder = function () {
+ this.previousWord = ""
+ this.root = new lunr.TokenSet
+ this.uncheckedNodes = []
+ this.minimizedNodes = {}
+}
+
+lunr.TokenSet.Builder.prototype.insert = function (word) {
+ var node,
+ commonPrefix = 0
+
+ if (word < this.previousWord) {
+ throw new Error ("Out of order word insertion")
+ }
+
+ for (var i = 0; i < word.length && i < this.previousWord.length; i++) {
+ if (word[i] != this.previousWord[i]) break
+ commonPrefix++
+ }
+
+ this.minimize(commonPrefix)
+
+ if (this.uncheckedNodes.length == 0) {
+ node = this.root
+ } else {
+ node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child
+ }
+
+ for (var i = commonPrefix; i < word.length; i++) {
+ var nextNode = new lunr.TokenSet,
+ char = word[i]
+
+ node.edges[char] = nextNode
+
+ this.uncheckedNodes.push({
+ parent: node,
+ char: char,
+ child: nextNode
+ })
+
+ node = nextNode
+ }
+
+ node.final = true
+ this.previousWord = word
+}
+
+lunr.TokenSet.Builder.prototype.finish = function () {
+ this.minimize(0)
+}
+
+lunr.TokenSet.Builder.prototype.minimize = function (downTo) {
+ for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {
+ var node = this.uncheckedNodes[i],
+ childKey = node.child.toString()
+
+ if (childKey in this.minimizedNodes) {
+ node.parent.edges[node.char] = this.minimizedNodes[childKey]
+ } else {
+ // Cache the key for this node since
+ // we know it can't change anymore
+ node.child._str = childKey
+
+ this.minimizedNodes[childKey] = node.child
+ }
+
+ this.uncheckedNodes.pop()
+ }
+}
diff --git a/node_modules/lunr/lib/tokenizer.js b/node_modules/lunr/lib/tokenizer.js
new file mode 100644
index 0000000..619bac0
--- /dev/null
+++ b/node_modules/lunr/lib/tokenizer.js
@@ -0,0 +1,76 @@
+/*!
+ * lunr.tokenizer
+ * Copyright (C) @YEAR Oliver Nightingale
+ */
+
+/**
+ * A function for splitting a string into tokens ready to be inserted into
+ * the search index. Uses `lunr.tokenizer.separator` to split strings, change
+ * the value of this property to change how strings are split into tokens.
+ *
+ * This tokenizer will convert its parameter to a string by calling `toString` and
+ * then will split this string on the character in `lunr.tokenizer.separator`.
+ * Arrays will have their elements converted to strings and wrapped in a lunr.Token.
+ *
+ * Optional metadata can be passed to the tokenizer, this metadata will be cloned and
+ * added as metadata to every token that is created from the object to be tokenized.
+ *
+ * @static
+ * @param {?(string|object|object[])} obj - The object to convert into tokens
+ * @param {?object} metadata - Optional metadata to associate with every token
+ * @returns {lunr.Token[]}
+ * @see {@link lunr.Pipeline}
+ */
+lunr.tokenizer = function (obj, metadata) {
+ if (obj == null || obj == undefined) {
+ return []
+ }
+
+ if (Array.isArray(obj)) {
+ return obj.map(function (t) {
+ return new lunr.Token(
+ lunr.utils.asString(t).toLowerCase(),
+ lunr.utils.clone(metadata)
+ )
+ })
+ }
+
+ var str = obj.toString().toLowerCase(),
+ len = str.length,
+ tokens = []
+
+ for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {
+ var char = str.charAt(sliceEnd),
+ sliceLength = sliceEnd - sliceStart
+
+ if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) {
+
+ if (sliceLength > 0) {
+ var tokenMetadata = lunr.utils.clone(metadata) || {}
+ tokenMetadata["position"] = [sliceStart, sliceLength]
+ tokenMetadata["index"] = tokens.length
+
+ tokens.push(
+ new lunr.Token (
+ str.slice(sliceStart, sliceEnd),
+ tokenMetadata
+ )
+ )
+ }
+
+ sliceStart = sliceEnd + 1
+ }
+
+ }
+
+ return tokens
+}
+
+/**
+ * The separator used to split a string into tokens. Override this property to change the behaviour of
+ * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.
+ *
+ * @static
+ * @see lunr.tokenizer
+ */
+lunr.tokenizer.separator = /[\s\-]+/
diff --git a/node_modules/lunr/lib/trimmer.js b/node_modules/lunr/lib/trimmer.js
new file mode 100644
index 0000000..87390f1
--- /dev/null
+++ b/node_modules/lunr/lib/trimmer.js
@@ -0,0 +1,27 @@
+/*!
+ * lunr.trimmer
+ * Copyright (C) @YEAR Oliver Nightingale
+ */
+
+/**
+ * lunr.trimmer is a pipeline function for trimming non word
+ * characters from the beginning and end of tokens before they
+ * enter the index.
+ *
+ * This implementation may not work correctly for non latin
+ * characters and should either be removed or adapted for use
+ * with languages with non-latin characters.
+ *
+ * @static
+ * @implements {lunr.PipelineFunction}
+ * @param {lunr.Token} token The token to pass through the filter
+ * @returns {lunr.Token}
+ * @see lunr.Pipeline
+ */
+lunr.trimmer = function (token) {
+ return token.update(function (s) {
+ return s.replace(/^\W+/, '').replace(/\W+$/, '')
+ })
+}
+
+lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')
diff --git a/node_modules/lunr/lib/utils.js b/node_modules/lunr/lib/utils.js
new file mode 100644
index 0000000..20ddf3c
--- /dev/null
+++ b/node_modules/lunr/lib/utils.js
@@ -0,0 +1,92 @@
+/*!
+ * lunr.utils
+ * Copyright (C) @YEAR Oliver Nightingale
+ */
+
+/**
+ * A namespace containing utils for the rest of the lunr library
+ * @namespace lunr.utils
+ */
+lunr.utils = {}
+
+/**
+ * Print a warning message to the console.
+ *
+ * @param {String} message The message to be printed.
+ * @memberOf lunr.utils
+ * @function
+ */
+lunr.utils.warn = (function (global) {
+ /* eslint-disable no-console */
+ return function (message) {
+ if (global.console && console.warn) {
+ console.warn(message)
+ }
+ }
+ /* eslint-enable no-console */
+})(this)
+
+/**
+ * Convert an object to a string.
+ *
+ * In the case of `null` and `undefined` the function returns
+ * the empty string, in all other cases the result of calling
+ * `toString` on the passed object is returned.
+ *
+ * @param {Any} obj The object to convert to a string.
+ * @return {String} string representation of the passed object.
+ * @memberOf lunr.utils
+ */
+lunr.utils.asString = function (obj) {
+ if (obj === void 0 || obj === null) {
+ return ""
+ } else {
+ return obj.toString()
+ }
+}
+
+/**
+ * Clones an object.
+ *
+ * Will create a copy of an existing object such that any mutations
+ * on the copy cannot affect the original.
+ *
+ * Only shallow objects are supported, passing a nested object to this
+ * function will cause a TypeError.
+ *
+ * Objects with primitives, and arrays of primitives are supported.
+ *
+ * @param {Object} obj The object to clone.
+ * @return {Object} a clone of the passed object.
+ * @throws {TypeError} when a nested object is passed.
+ * @memberOf Utils
+ */
+lunr.utils.clone = function (obj) {
+ if (obj === null || obj === undefined) {
+ return obj
+ }
+
+ var clone = Object.create(null),
+ keys = Object.keys(obj)
+
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i],
+ val = obj[key]
+
+ if (Array.isArray(val)) {
+ clone[key] = val.slice()
+ continue
+ }
+
+ if (typeof val === 'string' ||
+ typeof val === 'number' ||
+ typeof val === 'boolean') {
+ clone[key] = val
+ continue
+ }
+
+ throw new TypeError("clone is not deep and does not support nested objects")
+ }
+
+ return clone
+}
diff --git a/node_modules/lunr/lib/vector.js b/node_modules/lunr/lib/vector.js
new file mode 100644
index 0000000..7779d57
--- /dev/null
+++ b/node_modules/lunr/lib/vector.js
@@ -0,0 +1,196 @@
+/*!
+ * lunr.Vector
+ * Copyright (C) @YEAR Oliver Nightingale
+ */
+
+/**
+ * A vector is used to construct the vector space of documents and queries. These
+ * vectors support operations to determine the similarity between two documents or
+ * a document and a query.
+ *
+ * Normally no parameters are required for initializing a vector, but in the case of
+ * loading a previously dumped vector the raw elements can be provided to the constructor.
+ *
+ * For performance reasons vectors are implemented with a flat array, where an elements
+ * index is immediately followed by its value. E.g. [index, value, index, value]. This
+ * allows the underlying array to be as sparse as possible and still offer decent
+ * performance when being used for vector calculations.
+ *
+ * @constructor
+ * @param {Number[]} [elements] - The flat list of element index and element value pairs.
+ */
+lunr.Vector = function (elements) {
+ this._magnitude = 0
+ this.elements = elements || []
+}
+
+
+/**
+ * Calculates the position within the vector to insert a given index.
+ *
+ * This is used internally by insert and upsert. If there are duplicate indexes then
+ * the position is returned as if the value for that index were to be updated, but it
+ * is the callers responsibility to check whether there is a duplicate at that index
+ *
+ * @param {Number} insertIdx - The index at which the element should be inserted.
+ * @returns {Number}
+ */
+lunr.Vector.prototype.positionForIndex = function (index) {
+ // For an empty vector the tuple can be inserted at the beginning
+ if (this.elements.length == 0) {
+ return 0
+ }
+
+ var start = 0,
+ end = this.elements.length / 2,
+ sliceLength = end - start,
+ pivotPoint = Math.floor(sliceLength / 2),
+ pivotIndex = this.elements[pivotPoint * 2]
+
+ while (sliceLength > 1) {
+ if (pivotIndex < index) {
+ start = pivotPoint
+ }
+
+ if (pivotIndex > index) {
+ end = pivotPoint
+ }
+
+ if (pivotIndex == index) {
+ break
+ }
+
+ sliceLength = end - start
+ pivotPoint = start + Math.floor(sliceLength / 2)
+ pivotIndex = this.elements[pivotPoint * 2]
+ }
+
+ if (pivotIndex == index) {
+ return pivotPoint * 2
+ }
+
+ if (pivotIndex > index) {
+ return pivotPoint * 2
+ }
+
+ if (pivotIndex < index) {
+ return (pivotPoint + 1) * 2
+ }
+}
+
+/**
+ * Inserts an element at an index within the vector.
+ *
+ * Does not allow duplicates, will throw an error if there is already an entry
+ * for this index.
+ *
+ * @param {Number} insertIdx - The index at which the element should be inserted.
+ * @param {Number} val - The value to be inserted into the vector.
+ */
+lunr.Vector.prototype.insert = function (insertIdx, val) {
+ this.upsert(insertIdx, val, function () {
+ throw "duplicate index"
+ })
+}
+
+/**
+ * Inserts or updates an existing index within the vector.
+ *
+ * @param {Number} insertIdx - The index at which the element should be inserted.
+ * @param {Number} val - The value to be inserted into the vector.
+ * @param {function} fn - A function that is called for updates, the existing value and the
+ * requested value are passed as arguments
+ */
+lunr.Vector.prototype.upsert = function (insertIdx, val, fn) {
+ this._magnitude = 0
+ var position = this.positionForIndex(insertIdx)
+
+ if (this.elements[position] == insertIdx) {
+ this.elements[position + 1] = fn(this.elements[position + 1], val)
+ } else {
+ this.elements.splice(position, 0, insertIdx, val)
+ }
+}
+
+/**
+ * Calculates the magnitude of this vector.
+ *
+ * @returns {Number}
+ */
+lunr.Vector.prototype.magnitude = function () {
+ if (this._magnitude) return this._magnitude
+
+ var sumOfSquares = 0,
+ elementsLength = this.elements.length
+
+ for (var i = 1; i < elementsLength; i += 2) {
+ var val = this.elements[i]
+ sumOfSquares += val * val
+ }
+
+ return this._magnitude = Math.sqrt(sumOfSquares)
+}
+
+/**
+ * Calculates the dot product of this vector and another vector.
+ *
+ * @param {lunr.Vector} otherVector - The vector to compute the dot product with.
+ * @returns {Number}
+ */
+lunr.Vector.prototype.dot = function (otherVector) {
+ var dotProduct = 0,
+ a = this.elements, b = otherVector.elements,
+ aLen = a.length, bLen = b.length,
+ aVal = 0, bVal = 0,
+ i = 0, j = 0
+
+ while (i < aLen && j < bLen) {
+ aVal = a[i], bVal = b[j]
+ if (aVal < bVal) {
+ i += 2
+ } else if (aVal > bVal) {
+ j += 2
+ } else if (aVal == bVal) {
+ dotProduct += a[i + 1] * b[j + 1]
+ i += 2
+ j += 2
+ }
+ }
+
+ return dotProduct
+}
+
+/**
+ * Calculates the similarity between this vector and another vector.
+ *
+ * @param {lunr.Vector} otherVector - The other vector to calculate the
+ * similarity with.
+ * @returns {Number}
+ */
+lunr.Vector.prototype.similarity = function (otherVector) {
+ return this.dot(otherVector) / this.magnitude() || 0
+}
+
+/**
+ * Converts the vector to an array of the elements within the vector.
+ *
+ * @returns {Number[]}
+ */
+lunr.Vector.prototype.toArray = function () {
+ var output = new Array (this.elements.length / 2)
+
+ for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {
+ output[j] = this.elements[i]
+ }
+
+ return output
+}
+
+/**
+ * A JSON serializable representation of the vector.
+ *
+ * @returns {Number[]}
+ */
+lunr.Vector.prototype.toJSON = function () {
+ return this.elements
+}
diff --git a/node_modules/lunr/lunr.js b/node_modules/lunr/lunr.js
new file mode 100644
index 0000000..6aa370f
--- /dev/null
+++ b/node_modules/lunr/lunr.js
@@ -0,0 +1,3475 @@
+/**
+ * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9
+ * Copyright (C) 2020 Oliver Nightingale
+ * @license MIT
+ */
+
+;(function(){
+
+/**
+ * A convenience function for configuring and constructing
+ * a new lunr Index.
+ *
+ * A lunr.Builder instance is created and the pipeline setup
+ * with a trimmer, stop word filter and stemmer.
+ *
+ * This builder object is yielded to the configuration function
+ * that is passed as a parameter, allowing the list of fields
+ * and other builder parameters to be customised.
+ *
+ * All documents _must_ be added within the passed config function.
+ *
+ * @example
+ * var idx = lunr(function () {
+ * this.field('title')
+ * this.field('body')
+ * this.ref('id')
+ *
+ * documents.forEach(function (doc) {
+ * this.add(doc)
+ * }, this)
+ * })
+ *
+ * @see {@link lunr.Builder}
+ * @see {@link lunr.Pipeline}
+ * @see {@link lunr.trimmer}
+ * @see {@link lunr.stopWordFilter}
+ * @see {@link lunr.stemmer}
+ * @namespace {function} lunr
+ */
+var lunr = function (config) {
+ var builder = new lunr.Builder
+
+ builder.pipeline.add(
+ lunr.trimmer,
+ lunr.stopWordFilter,
+ lunr.stemmer
+ )
+
+ builder.searchPipeline.add(
+ lunr.stemmer
+ )
+
+ config.call(builder, builder)
+ return builder.build()
+}
+
+lunr.version = "2.3.9"
+/*!
+ * lunr.utils
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * A namespace containing utils for the rest of the lunr library
+ * @namespace lunr.utils
+ */
+lunr.utils = {}
+
+/**
+ * Print a warning message to the console.
+ *
+ * @param {String} message The message to be printed.
+ * @memberOf lunr.utils
+ * @function
+ */
+lunr.utils.warn = (function (global) {
+ /* eslint-disable no-console */
+ return function (message) {
+ if (global.console && console.warn) {
+ console.warn(message)
+ }
+ }
+ /* eslint-enable no-console */
+})(this)
+
+/**
+ * Convert an object to a string.
+ *
+ * In the case of `null` and `undefined` the function returns
+ * the empty string, in all other cases the result of calling
+ * `toString` on the passed object is returned.
+ *
+ * @param {Any} obj The object to convert to a string.
+ * @return {String} string representation of the passed object.
+ * @memberOf lunr.utils
+ */
+lunr.utils.asString = function (obj) {
+ if (obj === void 0 || obj === null) {
+ return ""
+ } else {
+ return obj.toString()
+ }
+}
+
+/**
+ * Clones an object.
+ *
+ * Will create a copy of an existing object such that any mutations
+ * on the copy cannot affect the original.
+ *
+ * Only shallow objects are supported, passing a nested object to this
+ * function will cause a TypeError.
+ *
+ * Objects with primitives, and arrays of primitives are supported.
+ *
+ * @param {Object} obj The object to clone.
+ * @return {Object} a clone of the passed object.
+ * @throws {TypeError} when a nested object is passed.
+ * @memberOf Utils
+ */
+lunr.utils.clone = function (obj) {
+ if (obj === null || obj === undefined) {
+ return obj
+ }
+
+ var clone = Object.create(null),
+ keys = Object.keys(obj)
+
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i],
+ val = obj[key]
+
+ if (Array.isArray(val)) {
+ clone[key] = val.slice()
+ continue
+ }
+
+ if (typeof val === 'string' ||
+ typeof val === 'number' ||
+ typeof val === 'boolean') {
+ clone[key] = val
+ continue
+ }
+
+ throw new TypeError("clone is not deep and does not support nested objects")
+ }
+
+ return clone
+}
+lunr.FieldRef = function (docRef, fieldName, stringValue) {
+ this.docRef = docRef
+ this.fieldName = fieldName
+ this._stringValue = stringValue
+}
+
+lunr.FieldRef.joiner = "/"
+
+lunr.FieldRef.fromString = function (s) {
+ var n = s.indexOf(lunr.FieldRef.joiner)
+
+ if (n === -1) {
+ throw "malformed field ref string"
+ }
+
+ var fieldRef = s.slice(0, n),
+ docRef = s.slice(n + 1)
+
+ return new lunr.FieldRef (docRef, fieldRef, s)
+}
+
+lunr.FieldRef.prototype.toString = function () {
+ if (this._stringValue == undefined) {
+ this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef
+ }
+
+ return this._stringValue
+}
+/*!
+ * lunr.Set
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * A lunr set.
+ *
+ * @constructor
+ */
+lunr.Set = function (elements) {
+ this.elements = Object.create(null)
+
+ if (elements) {
+ this.length = elements.length
+
+ for (var i = 0; i < this.length; i++) {
+ this.elements[elements[i]] = true
+ }
+ } else {
+ this.length = 0
+ }
+}
+
+/**
+ * A complete set that contains all elements.
+ *
+ * @static
+ * @readonly
+ * @type {lunr.Set}
+ */
+lunr.Set.complete = {
+ intersect: function (other) {
+ return other
+ },
+
+ union: function () {
+ return this
+ },
+
+ contains: function () {
+ return true
+ }
+}
+
+/**
+ * An empty set that contains no elements.
+ *
+ * @static
+ * @readonly
+ * @type {lunr.Set}
+ */
+lunr.Set.empty = {
+ intersect: function () {
+ return this
+ },
+
+ union: function (other) {
+ return other
+ },
+
+ contains: function () {
+ return false
+ }
+}
+
+/**
+ * Returns true if this set contains the specified object.
+ *
+ * @param {object} object - Object whose presence in this set is to be tested.
+ * @returns {boolean} - True if this set contains the specified object.
+ */
+lunr.Set.prototype.contains = function (object) {
+ return !!this.elements[object]
+}
+
+/**
+ * Returns a new set containing only the elements that are present in both
+ * this set and the specified set.
+ *
+ * @param {lunr.Set} other - set to intersect with this set.
+ * @returns {lunr.Set} a new set that is the intersection of this and the specified set.
+ */
+
+lunr.Set.prototype.intersect = function (other) {
+ var a, b, elements, intersection = []
+
+ if (other === lunr.Set.complete) {
+ return this
+ }
+
+ if (other === lunr.Set.empty) {
+ return other
+ }
+
+ if (this.length < other.length) {
+ a = this
+ b = other
+ } else {
+ a = other
+ b = this
+ }
+
+ elements = Object.keys(a.elements)
+
+ for (var i = 0; i < elements.length; i++) {
+ var element = elements[i]
+ if (element in b.elements) {
+ intersection.push(element)
+ }
+ }
+
+ return new lunr.Set (intersection)
+}
+
+/**
+ * Returns a new set combining the elements of this and the specified set.
+ *
+ * @param {lunr.Set} other - set to union with this set.
+ * @return {lunr.Set} a new set that is the union of this and the specified set.
+ */
+
+lunr.Set.prototype.union = function (other) {
+ if (other === lunr.Set.complete) {
+ return lunr.Set.complete
+ }
+
+ if (other === lunr.Set.empty) {
+ return this
+ }
+
+ return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)))
+}
+/**
+ * A function to calculate the inverse document frequency for
+ * a posting. This is shared between the builder and the index
+ *
+ * @private
+ * @param {object} posting - The posting for a given term
+ * @param {number} documentCount - The total number of documents.
+ */
+lunr.idf = function (posting, documentCount) {
+ var documentsWithTerm = 0
+
+ for (var fieldName in posting) {
+ if (fieldName == '_index') continue // Ignore the term index, its not a field
+ documentsWithTerm += Object.keys(posting[fieldName]).length
+ }
+
+ var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5)
+
+ return Math.log(1 + Math.abs(x))
+}
+
+/**
+ * A token wraps a string representation of a token
+ * as it is passed through the text processing pipeline.
+ *
+ * @constructor
+ * @param {string} [str=''] - The string token being wrapped.
+ * @param {object} [metadata={}] - Metadata associated with this token.
+ */
+lunr.Token = function (str, metadata) {
+ this.str = str || ""
+ this.metadata = metadata || {}
+}
+
+/**
+ * Returns the token string that is being wrapped by this object.
+ *
+ * @returns {string}
+ */
+lunr.Token.prototype.toString = function () {
+ return this.str
+}
+
+/**
+ * A token update function is used when updating or optionally
+ * when cloning a token.
+ *
+ * @callback lunr.Token~updateFunction
+ * @param {string} str - The string representation of the token.
+ * @param {Object} metadata - All metadata associated with this token.
+ */
+
+/**
+ * Applies the given function to the wrapped string token.
+ *
+ * @example
+ * token.update(function (str, metadata) {
+ * return str.toUpperCase()
+ * })
+ *
+ * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.
+ * @returns {lunr.Token}
+ */
+lunr.Token.prototype.update = function (fn) {
+ this.str = fn(this.str, this.metadata)
+ return this
+}
+
+/**
+ * Creates a clone of this token. Optionally a function can be
+ * applied to the cloned token.
+ *
+ * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.
+ * @returns {lunr.Token}
+ */
+lunr.Token.prototype.clone = function (fn) {
+ fn = fn || function (s) { return s }
+ return new lunr.Token (fn(this.str, this.metadata), this.metadata)
+}
+/*!
+ * lunr.tokenizer
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * A function for splitting a string into tokens ready to be inserted into
+ * the search index. Uses `lunr.tokenizer.separator` to split strings, change
+ * the value of this property to change how strings are split into tokens.
+ *
+ * This tokenizer will convert its parameter to a string by calling `toString` and
+ * then will split this string on the character in `lunr.tokenizer.separator`.
+ * Arrays will have their elements converted to strings and wrapped in a lunr.Token.
+ *
+ * Optional metadata can be passed to the tokenizer, this metadata will be cloned and
+ * added as metadata to every token that is created from the object to be tokenized.
+ *
+ * @static
+ * @param {?(string|object|object[])} obj - The object to convert into tokens
+ * @param {?object} metadata - Optional metadata to associate with every token
+ * @returns {lunr.Token[]}
+ * @see {@link lunr.Pipeline}
+ */
+lunr.tokenizer = function (obj, metadata) {
+ if (obj == null || obj == undefined) {
+ return []
+ }
+
+ if (Array.isArray(obj)) {
+ return obj.map(function (t) {
+ return new lunr.Token(
+ lunr.utils.asString(t).toLowerCase(),
+ lunr.utils.clone(metadata)
+ )
+ })
+ }
+
+ var str = obj.toString().toLowerCase(),
+ len = str.length,
+ tokens = []
+
+ for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {
+ var char = str.charAt(sliceEnd),
+ sliceLength = sliceEnd - sliceStart
+
+ if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) {
+
+ if (sliceLength > 0) {
+ var tokenMetadata = lunr.utils.clone(metadata) || {}
+ tokenMetadata["position"] = [sliceStart, sliceLength]
+ tokenMetadata["index"] = tokens.length
+
+ tokens.push(
+ new lunr.Token (
+ str.slice(sliceStart, sliceEnd),
+ tokenMetadata
+ )
+ )
+ }
+
+ sliceStart = sliceEnd + 1
+ }
+
+ }
+
+ return tokens
+}
+
+/**
+ * The separator used to split a string into tokens. Override this property to change the behaviour of
+ * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.
+ *
+ * @static
+ * @see lunr.tokenizer
+ */
+lunr.tokenizer.separator = /[\s\-]+/
+/*!
+ * lunr.Pipeline
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * lunr.Pipelines maintain an ordered list of functions to be applied to all
+ * tokens in documents entering the search index and queries being ran against
+ * the index.
+ *
+ * An instance of lunr.Index created with the lunr shortcut will contain a
+ * pipeline with a stop word filter and an English language stemmer. Extra
+ * functions can be added before or after either of these functions or these
+ * default functions can be removed.
+ *
+ * When run the pipeline will call each function in turn, passing a token, the
+ * index of that token in the original list of all tokens and finally a list of
+ * all the original tokens.
+ *
+ * The output of functions in the pipeline will be passed to the next function
+ * in the pipeline. To exclude a token from entering the index the function
+ * should return undefined, the rest of the pipeline will not be called with
+ * this token.
+ *
+ * For serialisation of pipelines to work, all functions used in an instance of
+ * a pipeline should be registered with lunr.Pipeline. Registered functions can
+ * then be loaded. If trying to load a serialised pipeline that uses functions
+ * that are not registered an error will be thrown.
+ *
+ * If not planning on serialising the pipeline then registering pipeline functions
+ * is not necessary.
+ *
+ * @constructor
+ */
+lunr.Pipeline = function () {
+ this._stack = []
+}
+
+lunr.Pipeline.registeredFunctions = Object.create(null)
+
+/**
+ * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token
+ * string as well as all known metadata. A pipeline function can mutate the token string
+ * or mutate (or add) metadata for a given token.
+ *
+ * A pipeline function can indicate that the passed token should be discarded by returning
+ * null, undefined or an empty string. This token will not be passed to any downstream pipeline
+ * functions and will not be added to the index.
+ *
+ * Multiple tokens can be returned by returning an array of tokens. Each token will be passed
+ * to any downstream pipeline functions and all will returned tokens will be added to the index.
+ *
+ * Any number of pipeline functions may be chained together using a lunr.Pipeline.
+ *
+ * @interface lunr.PipelineFunction
+ * @param {lunr.Token} token - A token from the document being processed.
+ * @param {number} i - The index of this token in the complete list of tokens for this document/field.
+ * @param {lunr.Token[]} tokens - All tokens for this document/field.
+ * @returns {(?lunr.Token|lunr.Token[])}
+ */
+
+/**
+ * Register a function with the pipeline.
+ *
+ * Functions that are used in the pipeline should be registered if the pipeline
+ * needs to be serialised, or a serialised pipeline needs to be loaded.
+ *
+ * Registering a function does not add it to a pipeline, functions must still be
+ * added to instances of the pipeline for them to be used when running a pipeline.
+ *
+ * @param {lunr.PipelineFunction} fn - The function to check for.
+ * @param {String} label - The label to register this function with
+ */
+lunr.Pipeline.registerFunction = function (fn, label) {
+ if (label in this.registeredFunctions) {
+ lunr.utils.warn('Overwriting existing registered function: ' + label)
+ }
+
+ fn.label = label
+ lunr.Pipeline.registeredFunctions[fn.label] = fn
+}
+
+/**
+ * Warns if the function is not registered as a Pipeline function.
+ *
+ * @param {lunr.PipelineFunction} fn - The function to check for.
+ * @private
+ */
+lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {
+ var isRegistered = fn.label && (fn.label in this.registeredFunctions)
+
+ if (!isRegistered) {
+ lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\n', fn)
+ }
+}
+
+/**
+ * Loads a previously serialised pipeline.
+ *
+ * All functions to be loaded must already be registered with lunr.Pipeline.
+ * If any function from the serialised data has not been registered then an
+ * error will be thrown.
+ *
+ * @param {Object} serialised - The serialised pipeline to load.
+ * @returns {lunr.Pipeline}
+ */
+lunr.Pipeline.load = function (serialised) {
+ var pipeline = new lunr.Pipeline
+
+ serialised.forEach(function (fnName) {
+ var fn = lunr.Pipeline.registeredFunctions[fnName]
+
+ if (fn) {
+ pipeline.add(fn)
+ } else {
+ throw new Error('Cannot load unregistered function: ' + fnName)
+ }
+ })
+
+ return pipeline
+}
+
+/**
+ * Adds new functions to the end of the pipeline.
+ *
+ * Logs a warning if the function has not been registered.
+ *
+ * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.
+ */
+lunr.Pipeline.prototype.add = function () {
+ var fns = Array.prototype.slice.call(arguments)
+
+ fns.forEach(function (fn) {
+ lunr.Pipeline.warnIfFunctionNotRegistered(fn)
+ this._stack.push(fn)
+ }, this)
+}
+
+/**
+ * Adds a single function after a function that already exists in the
+ * pipeline.
+ *
+ * Logs a warning if the function has not been registered.
+ *
+ * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.
+ * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.
+ */
+lunr.Pipeline.prototype.after = function (existingFn, newFn) {
+ lunr.Pipeline.warnIfFunctionNotRegistered(newFn)
+
+ var pos = this._stack.indexOf(existingFn)
+ if (pos == -1) {
+ throw new Error('Cannot find existingFn')
+ }
+
+ pos = pos + 1
+ this._stack.splice(pos, 0, newFn)
+}
+
+/**
+ * Adds a single function before a function that already exists in the
+ * pipeline.
+ *
+ * Logs a warning if the function has not been registered.
+ *
+ * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.
+ * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.
+ */
+lunr.Pipeline.prototype.before = function (existingFn, newFn) {
+ lunr.Pipeline.warnIfFunctionNotRegistered(newFn)
+
+ var pos = this._stack.indexOf(existingFn)
+ if (pos == -1) {
+ throw new Error('Cannot find existingFn')
+ }
+
+ this._stack.splice(pos, 0, newFn)
+}
+
+/**
+ * Removes a function from the pipeline.
+ *
+ * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.
+ */
+lunr.Pipeline.prototype.remove = function (fn) {
+ var pos = this._stack.indexOf(fn)
+ if (pos == -1) {
+ return
+ }
+
+ this._stack.splice(pos, 1)
+}
+
+/**
+ * Runs the current list of functions that make up the pipeline against the
+ * passed tokens.
+ *
+ * @param {Array} tokens The tokens to run through the pipeline.
+ * @returns {Array}
+ */
+lunr.Pipeline.prototype.run = function (tokens) {
+ var stackLength = this._stack.length
+
+ for (var i = 0; i < stackLength; i++) {
+ var fn = this._stack[i]
+ var memo = []
+
+ for (var j = 0; j < tokens.length; j++) {
+ var result = fn(tokens[j], j, tokens)
+
+ if (result === null || result === void 0 || result === '') continue
+
+ if (Array.isArray(result)) {
+ for (var k = 0; k < result.length; k++) {
+ memo.push(result[k])
+ }
+ } else {
+ memo.push(result)
+ }
+ }
+
+ tokens = memo
+ }
+
+ return tokens
+}
+
+/**
+ * Convenience method for passing a string through a pipeline and getting
+ * strings out. This method takes care of wrapping the passed string in a
+ * token and mapping the resulting tokens back to strings.
+ *
+ * @param {string} str - The string to pass through the pipeline.
+ * @param {?object} metadata - Optional metadata to associate with the token
+ * passed to the pipeline.
+ * @returns {string[]}
+ */
+lunr.Pipeline.prototype.runString = function (str, metadata) {
+ var token = new lunr.Token (str, metadata)
+
+ return this.run([token]).map(function (t) {
+ return t.toString()
+ })
+}
+
+/**
+ * Resets the pipeline by removing any existing processors.
+ *
+ */
+lunr.Pipeline.prototype.reset = function () {
+ this._stack = []
+}
+
+/**
+ * Returns a representation of the pipeline ready for serialisation.
+ *
+ * Logs a warning if the function has not been registered.
+ *
+ * @returns {Array}
+ */
+lunr.Pipeline.prototype.toJSON = function () {
+ return this._stack.map(function (fn) {
+ lunr.Pipeline.warnIfFunctionNotRegistered(fn)
+
+ return fn.label
+ })
+}
+/*!
+ * lunr.Vector
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * A vector is used to construct the vector space of documents and queries. These
+ * vectors support operations to determine the similarity between two documents or
+ * a document and a query.
+ *
+ * Normally no parameters are required for initializing a vector, but in the case of
+ * loading a previously dumped vector the raw elements can be provided to the constructor.
+ *
+ * For performance reasons vectors are implemented with a flat array, where an elements
+ * index is immediately followed by its value. E.g. [index, value, index, value]. This
+ * allows the underlying array to be as sparse as possible and still offer decent
+ * performance when being used for vector calculations.
+ *
+ * @constructor
+ * @param {Number[]} [elements] - The flat list of element index and element value pairs.
+ */
+lunr.Vector = function (elements) {
+ this._magnitude = 0
+ this.elements = elements || []
+}
+
+
+/**
+ * Calculates the position within the vector to insert a given index.
+ *
+ * This is used internally by insert and upsert. If there are duplicate indexes then
+ * the position is returned as if the value for that index were to be updated, but it
+ * is the callers responsibility to check whether there is a duplicate at that index
+ *
+ * @param {Number} insertIdx - The index at which the element should be inserted.
+ * @returns {Number}
+ */
+lunr.Vector.prototype.positionForIndex = function (index) {
+ // For an empty vector the tuple can be inserted at the beginning
+ if (this.elements.length == 0) {
+ return 0
+ }
+
+ var start = 0,
+ end = this.elements.length / 2,
+ sliceLength = end - start,
+ pivotPoint = Math.floor(sliceLength / 2),
+ pivotIndex = this.elements[pivotPoint * 2]
+
+ while (sliceLength > 1) {
+ if (pivotIndex < index) {
+ start = pivotPoint
+ }
+
+ if (pivotIndex > index) {
+ end = pivotPoint
+ }
+
+ if (pivotIndex == index) {
+ break
+ }
+
+ sliceLength = end - start
+ pivotPoint = start + Math.floor(sliceLength / 2)
+ pivotIndex = this.elements[pivotPoint * 2]
+ }
+
+ if (pivotIndex == index) {
+ return pivotPoint * 2
+ }
+
+ if (pivotIndex > index) {
+ return pivotPoint * 2
+ }
+
+ if (pivotIndex < index) {
+ return (pivotPoint + 1) * 2
+ }
+}
+
+/**
+ * Inserts an element at an index within the vector.
+ *
+ * Does not allow duplicates, will throw an error if there is already an entry
+ * for this index.
+ *
+ * @param {Number} insertIdx - The index at which the element should be inserted.
+ * @param {Number} val - The value to be inserted into the vector.
+ */
+lunr.Vector.prototype.insert = function (insertIdx, val) {
+ this.upsert(insertIdx, val, function () {
+ throw "duplicate index"
+ })
+}
+
+/**
+ * Inserts or updates an existing index within the vector.
+ *
+ * @param {Number} insertIdx - The index at which the element should be inserted.
+ * @param {Number} val - The value to be inserted into the vector.
+ * @param {function} fn - A function that is called for updates, the existing value and the
+ * requested value are passed as arguments
+ */
+lunr.Vector.prototype.upsert = function (insertIdx, val, fn) {
+ this._magnitude = 0
+ var position = this.positionForIndex(insertIdx)
+
+ if (this.elements[position] == insertIdx) {
+ this.elements[position + 1] = fn(this.elements[position + 1], val)
+ } else {
+ this.elements.splice(position, 0, insertIdx, val)
+ }
+}
+
+/**
+ * Calculates the magnitude of this vector.
+ *
+ * @returns {Number}
+ */
+lunr.Vector.prototype.magnitude = function () {
+ if (this._magnitude) return this._magnitude
+
+ var sumOfSquares = 0,
+ elementsLength = this.elements.length
+
+ for (var i = 1; i < elementsLength; i += 2) {
+ var val = this.elements[i]
+ sumOfSquares += val * val
+ }
+
+ return this._magnitude = Math.sqrt(sumOfSquares)
+}
+
+/**
+ * Calculates the dot product of this vector and another vector.
+ *
+ * @param {lunr.Vector} otherVector - The vector to compute the dot product with.
+ * @returns {Number}
+ */
+lunr.Vector.prototype.dot = function (otherVector) {
+ var dotProduct = 0,
+ a = this.elements, b = otherVector.elements,
+ aLen = a.length, bLen = b.length,
+ aVal = 0, bVal = 0,
+ i = 0, j = 0
+
+ while (i < aLen && j < bLen) {
+ aVal = a[i], bVal = b[j]
+ if (aVal < bVal) {
+ i += 2
+ } else if (aVal > bVal) {
+ j += 2
+ } else if (aVal == bVal) {
+ dotProduct += a[i + 1] * b[j + 1]
+ i += 2
+ j += 2
+ }
+ }
+
+ return dotProduct
+}
+
+/**
+ * Calculates the similarity between this vector and another vector.
+ *
+ * @param {lunr.Vector} otherVector - The other vector to calculate the
+ * similarity with.
+ * @returns {Number}
+ */
+lunr.Vector.prototype.similarity = function (otherVector) {
+ return this.dot(otherVector) / this.magnitude() || 0
+}
+
+/**
+ * Converts the vector to an array of the elements within the vector.
+ *
+ * @returns {Number[]}
+ */
+lunr.Vector.prototype.toArray = function () {
+ var output = new Array (this.elements.length / 2)
+
+ for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {
+ output[j] = this.elements[i]
+ }
+
+ return output
+}
+
+/**
+ * A JSON serializable representation of the vector.
+ *
+ * @returns {Number[]}
+ */
+lunr.Vector.prototype.toJSON = function () {
+ return this.elements
+}
+/* eslint-disable */
+/*!
+ * lunr.stemmer
+ * Copyright (C) 2020 Oliver Nightingale
+ * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt
+ */
+
+/**
+ * lunr.stemmer is an english language stemmer, this is a JavaScript
+ * implementation of the PorterStemmer taken from http://tartarus.org/~martin
+ *
+ * @static
+ * @implements {lunr.PipelineFunction}
+ * @param {lunr.Token} token - The string to stem
+ * @returns {lunr.Token}
+ * @see {@link lunr.Pipeline}
+ * @function
+ */
+lunr.stemmer = (function(){
+ var step2list = {
+ "ational" : "ate",
+ "tional" : "tion",
+ "enci" : "ence",
+ "anci" : "ance",
+ "izer" : "ize",
+ "bli" : "ble",
+ "alli" : "al",
+ "entli" : "ent",
+ "eli" : "e",
+ "ousli" : "ous",
+ "ization" : "ize",
+ "ation" : "ate",
+ "ator" : "ate",
+ "alism" : "al",
+ "iveness" : "ive",
+ "fulness" : "ful",
+ "ousness" : "ous",
+ "aliti" : "al",
+ "iviti" : "ive",
+ "biliti" : "ble",
+ "logi" : "log"
+ },
+
+ step3list = {
+ "icate" : "ic",
+ "ative" : "",
+ "alize" : "al",
+ "iciti" : "ic",
+ "ical" : "ic",
+ "ful" : "",
+ "ness" : ""
+ },
+
+ c = "[^aeiou]", // consonant
+ v = "[aeiouy]", // vowel
+ C = c + "[^aeiouy]*", // consonant sequence
+ V = v + "[aeiou]*", // vowel sequence
+
+ mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0
+ meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1
+ mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1
+ s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ var re_mgr0 = new RegExp(mgr0);
+ var re_mgr1 = new RegExp(mgr1);
+ var re_meq1 = new RegExp(meq1);
+ var re_s_v = new RegExp(s_v);
+
+ var re_1a = /^(.+?)(ss|i)es$/;
+ var re2_1a = /^(.+?)([^s])s$/;
+ var re_1b = /^(.+?)eed$/;
+ var re2_1b = /^(.+?)(ed|ing)$/;
+ var re_1b_2 = /.$/;
+ var re2_1b_2 = /(at|bl|iz)$/;
+ var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$");
+ var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+
+ var re_1c = /^(.+?[^aeiou])y$/;
+ var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+
+ var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+
+ var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+ var re2_4 = /^(.+?)(s|t)(ion)$/;
+
+ var re_5 = /^(.+?)e$/;
+ var re_5_1 = /ll$/;
+ var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+
+ var porterStemmer = function porterStemmer(w) {
+ var stem,
+ suffix,
+ firstch,
+ re,
+ re2,
+ re3,
+ re4;
+
+ if (w.length < 3) { return w; }
+
+ firstch = w.substr(0,1);
+ if (firstch == "y") {
+ w = firstch.toUpperCase() + w.substr(1);
+ }
+
+ // Step 1a
+ re = re_1a
+ re2 = re2_1a;
+
+ if (re.test(w)) { w = w.replace(re,"$1$2"); }
+ else if (re2.test(w)) { w = w.replace(re2,"$1$2"); }
+
+ // Step 1b
+ re = re_1b;
+ re2 = re2_1b;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = re_mgr0;
+ if (re.test(fp[1])) {
+ re = re_1b_2;
+ w = w.replace(re,"");
+ }
+ } else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = re_s_v;
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = re2_1b_2;
+ re3 = re3_1b_2;
+ re4 = re4_1b_2;
+ if (re2.test(w)) { w = w + "e"; }
+ else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,""); }
+ else if (re4.test(w)) { w = w + "e"; }
+ }
+ }
+
+ // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)
+ re = re_1c;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem + "i";
+ }
+
+ // Step 2
+ re = re_2;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = re_mgr0;
+ if (re.test(stem)) {
+ w = stem + step2list[suffix];
+ }
+ }
+
+ // Step 3
+ re = re_3;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = re_mgr0;
+ if (re.test(stem)) {
+ w = stem + step3list[suffix];
+ }
+ }
+
+ // Step 4
+ re = re_4;
+ re2 = re2_4;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = re_mgr1;
+ if (re.test(stem)) {
+ w = stem;
+ }
+ } else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = re_mgr1;
+ if (re2.test(stem)) {
+ w = stem;
+ }
+ }
+
+ // Step 5
+ re = re_5;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = re_mgr1;
+ re2 = re_meq1;
+ re3 = re3_5;
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {
+ w = stem;
+ }
+ }
+
+ re = re_5_1;
+ re2 = re_mgr1;
+ if (re.test(w) && re2.test(w)) {
+ re = re_1b_2;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+
+ if (firstch == "y") {
+ w = firstch.toLowerCase() + w.substr(1);
+ }
+
+ return w;
+ };
+
+ return function (token) {
+ return token.update(porterStemmer);
+ }
+})();
+
+lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')
+/*!
+ * lunr.stopWordFilter
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * lunr.generateStopWordFilter builds a stopWordFilter function from the provided
+ * list of stop words.
+ *
+ * The built in lunr.stopWordFilter is built using this generator and can be used
+ * to generate custom stopWordFilters for applications or non English languages.
+ *
+ * @function
+ * @param {Array} token The token to pass through the filter
+ * @returns {lunr.PipelineFunction}
+ * @see lunr.Pipeline
+ * @see lunr.stopWordFilter
+ */
+lunr.generateStopWordFilter = function (stopWords) {
+ var words = stopWords.reduce(function (memo, stopWord) {
+ memo[stopWord] = stopWord
+ return memo
+ }, {})
+
+ return function (token) {
+ if (token && words[token.toString()] !== token.toString()) return token
+ }
+}
+
+/**
+ * lunr.stopWordFilter is an English language stop word list filter, any words
+ * contained in the list will not be passed through the filter.
+ *
+ * This is intended to be used in the Pipeline. If the token does not pass the
+ * filter then undefined will be returned.
+ *
+ * @function
+ * @implements {lunr.PipelineFunction}
+ * @params {lunr.Token} token - A token to check for being a stop word.
+ * @returns {lunr.Token}
+ * @see {@link lunr.Pipeline}
+ */
+lunr.stopWordFilter = lunr.generateStopWordFilter([
+ 'a',
+ 'able',
+ 'about',
+ 'across',
+ 'after',
+ 'all',
+ 'almost',
+ 'also',
+ 'am',
+ 'among',
+ 'an',
+ 'and',
+ 'any',
+ 'are',
+ 'as',
+ 'at',
+ 'be',
+ 'because',
+ 'been',
+ 'but',
+ 'by',
+ 'can',
+ 'cannot',
+ 'could',
+ 'dear',
+ 'did',
+ 'do',
+ 'does',
+ 'either',
+ 'else',
+ 'ever',
+ 'every',
+ 'for',
+ 'from',
+ 'get',
+ 'got',
+ 'had',
+ 'has',
+ 'have',
+ 'he',
+ 'her',
+ 'hers',
+ 'him',
+ 'his',
+ 'how',
+ 'however',
+ 'i',
+ 'if',
+ 'in',
+ 'into',
+ 'is',
+ 'it',
+ 'its',
+ 'just',
+ 'least',
+ 'let',
+ 'like',
+ 'likely',
+ 'may',
+ 'me',
+ 'might',
+ 'most',
+ 'must',
+ 'my',
+ 'neither',
+ 'no',
+ 'nor',
+ 'not',
+ 'of',
+ 'off',
+ 'often',
+ 'on',
+ 'only',
+ 'or',
+ 'other',
+ 'our',
+ 'own',
+ 'rather',
+ 'said',
+ 'say',
+ 'says',
+ 'she',
+ 'should',
+ 'since',
+ 'so',
+ 'some',
+ 'than',
+ 'that',
+ 'the',
+ 'their',
+ 'them',
+ 'then',
+ 'there',
+ 'these',
+ 'they',
+ 'this',
+ 'tis',
+ 'to',
+ 'too',
+ 'twas',
+ 'us',
+ 'wants',
+ 'was',
+ 'we',
+ 'were',
+ 'what',
+ 'when',
+ 'where',
+ 'which',
+ 'while',
+ 'who',
+ 'whom',
+ 'why',
+ 'will',
+ 'with',
+ 'would',
+ 'yet',
+ 'you',
+ 'your'
+])
+
+lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')
+/*!
+ * lunr.trimmer
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * lunr.trimmer is a pipeline function for trimming non word
+ * characters from the beginning and end of tokens before they
+ * enter the index.
+ *
+ * This implementation may not work correctly for non latin
+ * characters and should either be removed or adapted for use
+ * with languages with non-latin characters.
+ *
+ * @static
+ * @implements {lunr.PipelineFunction}
+ * @param {lunr.Token} token The token to pass through the filter
+ * @returns {lunr.Token}
+ * @see lunr.Pipeline
+ */
+lunr.trimmer = function (token) {
+ return token.update(function (s) {
+ return s.replace(/^\W+/, '').replace(/\W+$/, '')
+ })
+}
+
+lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')
+/*!
+ * lunr.TokenSet
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * A token set is used to store the unique list of all tokens
+ * within an index. Token sets are also used to represent an
+ * incoming query to the index, this query token set and index
+ * token set are then intersected to find which tokens to look
+ * up in the inverted index.
+ *
+ * A token set can hold multiple tokens, as in the case of the
+ * index token set, or it can hold a single token as in the
+ * case of a simple query token set.
+ *
+ * Additionally token sets are used to perform wildcard matching.
+ * Leading, contained and trailing wildcards are supported, and
+ * from this edit distance matching can also be provided.
+ *
+ * Token sets are implemented as a minimal finite state automata,
+ * where both common prefixes and suffixes are shared between tokens.
+ * This helps to reduce the space used for storing the token set.
+ *
+ * @constructor
+ */
+lunr.TokenSet = function () {
+ this.final = false
+ this.edges = {}
+ this.id = lunr.TokenSet._nextId
+ lunr.TokenSet._nextId += 1
+}
+
+/**
+ * Keeps track of the next, auto increment, identifier to assign
+ * to a new tokenSet.
+ *
+ * TokenSets require a unique identifier to be correctly minimised.
+ *
+ * @private
+ */
+lunr.TokenSet._nextId = 1
+
+/**
+ * Creates a TokenSet instance from the given sorted array of words.
+ *
+ * @param {String[]} arr - A sorted array of strings to create the set from.
+ * @returns {lunr.TokenSet}
+ * @throws Will throw an error if the input array is not sorted.
+ */
+lunr.TokenSet.fromArray = function (arr) {
+ var builder = new lunr.TokenSet.Builder
+
+ for (var i = 0, len = arr.length; i < len; i++) {
+ builder.insert(arr[i])
+ }
+
+ builder.finish()
+ return builder.root
+}
+
+/**
+ * Creates a token set from a query clause.
+ *
+ * @private
+ * @param {Object} clause - A single clause from lunr.Query.
+ * @param {string} clause.term - The query clause term.
+ * @param {number} [clause.editDistance] - The optional edit distance for the term.
+ * @returns {lunr.TokenSet}
+ */
+lunr.TokenSet.fromClause = function (clause) {
+ if ('editDistance' in clause) {
+ return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance)
+ } else {
+ return lunr.TokenSet.fromString(clause.term)
+ }
+}
+
+/**
+ * Creates a token set representing a single string with a specified
+ * edit distance.
+ *
+ * Insertions, deletions, substitutions and transpositions are each
+ * treated as an edit distance of 1.
+ *
+ * Increasing the allowed edit distance will have a dramatic impact
+ * on the performance of both creating and intersecting these TokenSets.
+ * It is advised to keep the edit distance less than 3.
+ *
+ * @param {string} str - The string to create the token set from.
+ * @param {number} editDistance - The allowed edit distance to match.
+ * @returns {lunr.Vector}
+ */
+lunr.TokenSet.fromFuzzyString = function (str, editDistance) {
+ var root = new lunr.TokenSet
+
+ var stack = [{
+ node: root,
+ editsRemaining: editDistance,
+ str: str
+ }]
+
+ while (stack.length) {
+ var frame = stack.pop()
+
+ // no edit
+ if (frame.str.length > 0) {
+ var char = frame.str.charAt(0),
+ noEditNode
+
+ if (char in frame.node.edges) {
+ noEditNode = frame.node.edges[char]
+ } else {
+ noEditNode = new lunr.TokenSet
+ frame.node.edges[char] = noEditNode
+ }
+
+ if (frame.str.length == 1) {
+ noEditNode.final = true
+ }
+
+ stack.push({
+ node: noEditNode,
+ editsRemaining: frame.editsRemaining,
+ str: frame.str.slice(1)
+ })
+ }
+
+ if (frame.editsRemaining == 0) {
+ continue
+ }
+
+ // insertion
+ if ("*" in frame.node.edges) {
+ var insertionNode = frame.node.edges["*"]
+ } else {
+ var insertionNode = new lunr.TokenSet
+ frame.node.edges["*"] = insertionNode
+ }
+
+ if (frame.str.length == 0) {
+ insertionNode.final = true
+ }
+
+ stack.push({
+ node: insertionNode,
+ editsRemaining: frame.editsRemaining - 1,
+ str: frame.str
+ })
+
+ // deletion
+ // can only do a deletion if we have enough edits remaining
+ // and if there are characters left to delete in the string
+ if (frame.str.length > 1) {
+ stack.push({
+ node: frame.node,
+ editsRemaining: frame.editsRemaining - 1,
+ str: frame.str.slice(1)
+ })
+ }
+
+ // deletion
+ // just removing the last character from the str
+ if (frame.str.length == 1) {
+ frame.node.final = true
+ }
+
+ // substitution
+ // can only do a substitution if we have enough edits remaining
+ // and if there are characters left to substitute
+ if (frame.str.length >= 1) {
+ if ("*" in frame.node.edges) {
+ var substitutionNode = frame.node.edges["*"]
+ } else {
+ var substitutionNode = new lunr.TokenSet
+ frame.node.edges["*"] = substitutionNode
+ }
+
+ if (frame.str.length == 1) {
+ substitutionNode.final = true
+ }
+
+ stack.push({
+ node: substitutionNode,
+ editsRemaining: frame.editsRemaining - 1,
+ str: frame.str.slice(1)
+ })
+ }
+
+ // transposition
+ // can only do a transposition if there are edits remaining
+ // and there are enough characters to transpose
+ if (frame.str.length > 1) {
+ var charA = frame.str.charAt(0),
+ charB = frame.str.charAt(1),
+ transposeNode
+
+ if (charB in frame.node.edges) {
+ transposeNode = frame.node.edges[charB]
+ } else {
+ transposeNode = new lunr.TokenSet
+ frame.node.edges[charB] = transposeNode
+ }
+
+ if (frame.str.length == 1) {
+ transposeNode.final = true
+ }
+
+ stack.push({
+ node: transposeNode,
+ editsRemaining: frame.editsRemaining - 1,
+ str: charA + frame.str.slice(2)
+ })
+ }
+ }
+
+ return root
+}
+
+/**
+ * Creates a TokenSet from a string.
+ *
+ * The string may contain one or more wildcard characters (*)
+ * that will allow wildcard matching when intersecting with
+ * another TokenSet.
+ *
+ * @param {string} str - The string to create a TokenSet from.
+ * @returns {lunr.TokenSet}
+ */
+lunr.TokenSet.fromString = function (str) {
+ var node = new lunr.TokenSet,
+ root = node
+
+ /*
+ * Iterates through all characters within the passed string
+ * appending a node for each character.
+ *
+ * When a wildcard character is found then a self
+ * referencing edge is introduced to continually match
+ * any number of any characters.
+ */
+ for (var i = 0, len = str.length; i < len; i++) {
+ var char = str[i],
+ final = (i == len - 1)
+
+ if (char == "*") {
+ node.edges[char] = node
+ node.final = final
+
+ } else {
+ var next = new lunr.TokenSet
+ next.final = final
+
+ node.edges[char] = next
+ node = next
+ }
+ }
+
+ return root
+}
+
+/**
+ * Converts this TokenSet into an array of strings
+ * contained within the TokenSet.
+ *
+ * This is not intended to be used on a TokenSet that
+ * contains wildcards, in these cases the results are
+ * undefined and are likely to cause an infinite loop.
+ *
+ * @returns {string[]}
+ */
+lunr.TokenSet.prototype.toArray = function () {
+ var words = []
+
+ var stack = [{
+ prefix: "",
+ node: this
+ }]
+
+ while (stack.length) {
+ var frame = stack.pop(),
+ edges = Object.keys(frame.node.edges),
+ len = edges.length
+
+ if (frame.node.final) {
+ /* In Safari, at this point the prefix is sometimes corrupted, see:
+ * https://github.com/olivernn/lunr.js/issues/279 Calling any
+ * String.prototype method forces Safari to "cast" this string to what
+ * it's supposed to be, fixing the bug. */
+ frame.prefix.charAt(0)
+ words.push(frame.prefix)
+ }
+
+ for (var i = 0; i < len; i++) {
+ var edge = edges[i]
+
+ stack.push({
+ prefix: frame.prefix.concat(edge),
+ node: frame.node.edges[edge]
+ })
+ }
+ }
+
+ return words
+}
+
+/**
+ * Generates a string representation of a TokenSet.
+ *
+ * This is intended to allow TokenSets to be used as keys
+ * in objects, largely to aid the construction and minimisation
+ * of a TokenSet. As such it is not designed to be a human
+ * friendly representation of the TokenSet.
+ *
+ * @returns {string}
+ */
+lunr.TokenSet.prototype.toString = function () {
+ // NOTE: Using Object.keys here as this.edges is very likely
+ // to enter 'hash-mode' with many keys being added
+ //
+ // avoiding a for-in loop here as it leads to the function
+ // being de-optimised (at least in V8). From some simple
+ // benchmarks the performance is comparable, but allowing
+ // V8 to optimize may mean easy performance wins in the future.
+
+ if (this._str) {
+ return this._str
+ }
+
+ var str = this.final ? '1' : '0',
+ labels = Object.keys(this.edges).sort(),
+ len = labels.length
+
+ for (var i = 0; i < len; i++) {
+ var label = labels[i],
+ node = this.edges[label]
+
+ str = str + label + node.id
+ }
+
+ return str
+}
+
+/**
+ * Returns a new TokenSet that is the intersection of
+ * this TokenSet and the passed TokenSet.
+ *
+ * This intersection will take into account any wildcards
+ * contained within the TokenSet.
+ *
+ * @param {lunr.TokenSet} b - An other TokenSet to intersect with.
+ * @returns {lunr.TokenSet}
+ */
+lunr.TokenSet.prototype.intersect = function (b) {
+ var output = new lunr.TokenSet,
+ frame = undefined
+
+ var stack = [{
+ qNode: b,
+ output: output,
+ node: this
+ }]
+
+ while (stack.length) {
+ frame = stack.pop()
+
+ // NOTE: As with the #toString method, we are using
+ // Object.keys and a for loop instead of a for-in loop
+ // as both of these objects enter 'hash' mode, causing
+ // the function to be de-optimised in V8
+ var qEdges = Object.keys(frame.qNode.edges),
+ qLen = qEdges.length,
+ nEdges = Object.keys(frame.node.edges),
+ nLen = nEdges.length
+
+ for (var q = 0; q < qLen; q++) {
+ var qEdge = qEdges[q]
+
+ for (var n = 0; n < nLen; n++) {
+ var nEdge = nEdges[n]
+
+ if (nEdge == qEdge || qEdge == '*') {
+ var node = frame.node.edges[nEdge],
+ qNode = frame.qNode.edges[qEdge],
+ final = node.final && qNode.final,
+ next = undefined
+
+ if (nEdge in frame.output.edges) {
+ // an edge already exists for this character
+ // no need to create a new node, just set the finality
+ // bit unless this node is already final
+ next = frame.output.edges[nEdge]
+ next.final = next.final || final
+
+ } else {
+ // no edge exists yet, must create one
+ // set the finality bit and insert it
+ // into the output
+ next = new lunr.TokenSet
+ next.final = final
+ frame.output.edges[nEdge] = next
+ }
+
+ stack.push({
+ qNode: qNode,
+ output: next,
+ node: node
+ })
+ }
+ }
+ }
+ }
+
+ return output
+}
+lunr.TokenSet.Builder = function () {
+ this.previousWord = ""
+ this.root = new lunr.TokenSet
+ this.uncheckedNodes = []
+ this.minimizedNodes = {}
+}
+
+lunr.TokenSet.Builder.prototype.insert = function (word) {
+ var node,
+ commonPrefix = 0
+
+ if (word < this.previousWord) {
+ throw new Error ("Out of order word insertion")
+ }
+
+ for (var i = 0; i < word.length && i < this.previousWord.length; i++) {
+ if (word[i] != this.previousWord[i]) break
+ commonPrefix++
+ }
+
+ this.minimize(commonPrefix)
+
+ if (this.uncheckedNodes.length == 0) {
+ node = this.root
+ } else {
+ node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child
+ }
+
+ for (var i = commonPrefix; i < word.length; i++) {
+ var nextNode = new lunr.TokenSet,
+ char = word[i]
+
+ node.edges[char] = nextNode
+
+ this.uncheckedNodes.push({
+ parent: node,
+ char: char,
+ child: nextNode
+ })
+
+ node = nextNode
+ }
+
+ node.final = true
+ this.previousWord = word
+}
+
+lunr.TokenSet.Builder.prototype.finish = function () {
+ this.minimize(0)
+}
+
+lunr.TokenSet.Builder.prototype.minimize = function (downTo) {
+ for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {
+ var node = this.uncheckedNodes[i],
+ childKey = node.child.toString()
+
+ if (childKey in this.minimizedNodes) {
+ node.parent.edges[node.char] = this.minimizedNodes[childKey]
+ } else {
+ // Cache the key for this node since
+ // we know it can't change anymore
+ node.child._str = childKey
+
+ this.minimizedNodes[childKey] = node.child
+ }
+
+ this.uncheckedNodes.pop()
+ }
+}
+/*!
+ * lunr.Index
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * An index contains the built index of all documents and provides a query interface
+ * to the index.
+ *
+ * Usually instances of lunr.Index will not be created using this constructor, instead
+ * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be
+ * used to load previously built and serialized indexes.
+ *
+ * @constructor
+ * @param {Object} attrs - The attributes of the built search index.
+ * @param {Object} attrs.invertedIndex - An index of term/field to document reference.
+ * @param {Object<string, lunr.Vector>} attrs.fieldVectors - Field vectors
+ * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.
+ * @param {string[]} attrs.fields - The names of indexed document fields.
+ * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.
+ */
+lunr.Index = function (attrs) {
+ this.invertedIndex = attrs.invertedIndex
+ this.fieldVectors = attrs.fieldVectors
+ this.tokenSet = attrs.tokenSet
+ this.fields = attrs.fields
+ this.pipeline = attrs.pipeline
+}
+
+/**
+ * A result contains details of a document matching a search query.
+ * @typedef {Object} lunr.Index~Result
+ * @property {string} ref - The reference of the document this result represents.
+ * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.
+ * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.
+ */
+
+/**
+ * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple
+ * query language which itself is parsed into an instance of lunr.Query.
+ *
+ * For programmatically building queries it is advised to directly use lunr.Query, the query language
+ * is best used for human entered text rather than program generated text.
+ *
+ * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported
+ * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'
+ * or 'world', though those that contain both will rank higher in the results.
+ *
+ * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can
+ * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding
+ * wildcards will increase the number of documents that will be found but can also have a negative
+ * impact on query performance, especially with wildcards at the beginning of a term.
+ *
+ * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term
+ * hello in the title field will match this query. Using a field not present in the index will lead
+ * to an error being thrown.
+ *
+ * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term
+ * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported
+ * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.
+ * Avoid large values for edit distance to improve query performance.
+ *
+ * Each term also supports a presence modifier. By default a term's presence in document is optional, however
+ * this can be changed to either required or prohibited. For a term's presence to be required in a document the
+ * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and
+ * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not
+ * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.
+ *
+ * To escape special characters the backslash character '\' can be used, this allows searches to include
+ * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead
+ * of attempting to apply a boost of 2 to the search term "foo".
+ *
+ * @typedef {string} lunr.Index~QueryString
+ * @example <caption>Simple single term query</caption>
+ * hello
+ * @example <caption>Multiple term query</caption>
+ * hello world
+ * @example <caption>term scoped to a field</caption>
+ * title:hello
+ * @example <caption>term with a boost of 10</caption>
+ * hello^10
+ * @example <caption>term with an edit distance of 2</caption>
+ * hello~2
+ * @example <caption>terms with presence modifiers</caption>
+ * -foo +bar baz
+ */
+
+/**
+ * Performs a search against the index using lunr query syntax.
+ *
+ * Results will be returned sorted by their score, the most relevant results
+ * will be returned first. For details on how the score is calculated, please see
+ * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.
+ *
+ * For more programmatic querying use lunr.Index#query.
+ *
+ * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.
+ * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.
+ * @returns {lunr.Index~Result[]}
+ */
+lunr.Index.prototype.search = function (queryString) {
+ return this.query(function (query) {
+ var parser = new lunr.QueryParser(queryString, query)
+ parser.parse()
+ })
+}
+
+/**
+ * A query builder callback provides a query object to be used to express
+ * the query to perform on the index.
+ *
+ * @callback lunr.Index~queryBuilder
+ * @param {lunr.Query} query - The query object to build up.
+ * @this lunr.Query
+ */
+
+/**
+ * Performs a query against the index using the yielded lunr.Query object.
+ *
+ * If performing programmatic queries against the index, this method is preferred
+ * over lunr.Index#search so as to avoid the additional query parsing overhead.
+ *
+ * A query object is yielded to the supplied function which should be used to
+ * express the query to be run against the index.
+ *
+ * Note that although this function takes a callback parameter it is _not_ an
+ * asynchronous operation, the callback is just yielded a query object to be
+ * customized.
+ *
+ * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.
+ * @returns {lunr.Index~Result[]}
+ */
+lunr.Index.prototype.query = function (fn) {
+ // for each query clause
+ // * process terms
+ // * expand terms from token set
+ // * find matching documents and metadata
+ // * get document vectors
+ // * score documents
+
+ var query = new lunr.Query(this.fields),
+ matchingFields = Object.create(null),
+ queryVectors = Object.create(null),
+ termFieldCache = Object.create(null),
+ requiredMatches = Object.create(null),
+ prohibitedMatches = Object.create(null)
+
+ /*
+ * To support field level boosts a query vector is created per
+ * field. An empty vector is eagerly created to support negated
+ * queries.
+ */
+ for (var i = 0; i < this.fields.length; i++) {
+ queryVectors[this.fields[i]] = new lunr.Vector
+ }
+
+ fn.call(query, query)
+
+ for (var i = 0; i < query.clauses.length; i++) {
+ /*
+ * Unless the pipeline has been disabled for this term, which is
+ * the case for terms with wildcards, we need to pass the clause
+ * term through the search pipeline. A pipeline returns an array
+ * of processed terms. Pipeline functions may expand the passed
+ * term, which means we may end up performing multiple index lookups
+ * for a single query term.
+ */
+ var clause = query.clauses[i],
+ terms = null,
+ clauseMatches = lunr.Set.empty
+
+ if (clause.usePipeline) {
+ terms = this.pipeline.runString(clause.term, {
+ fields: clause.fields
+ })
+ } else {
+ terms = [clause.term]
+ }
+
+ for (var m = 0; m < terms.length; m++) {
+ var term = terms[m]
+
+ /*
+ * Each term returned from the pipeline needs to use the same query
+ * clause object, e.g. the same boost and or edit distance. The
+ * simplest way to do this is to re-use the clause object but mutate
+ * its term property.
+ */
+ clause.term = term
+
+ /*
+ * From the term in the clause we create a token set which will then
+ * be used to intersect the indexes token set to get a list of terms
+ * to lookup in the inverted index
+ */
+ var termTokenSet = lunr.TokenSet.fromClause(clause),
+ expandedTerms = this.tokenSet.intersect(termTokenSet).toArray()
+
+ /*
+ * If a term marked as required does not exist in the tokenSet it is
+ * impossible for the search to return any matches. We set all the field
+ * scoped required matches set to empty and stop examining any further
+ * clauses.
+ */
+ if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {
+ for (var k = 0; k < clause.fields.length; k++) {
+ var field = clause.fields[k]
+ requiredMatches[field] = lunr.Set.empty
+ }
+
+ break
+ }
+
+ for (var j = 0; j < expandedTerms.length; j++) {
+ /*
+ * For each term get the posting and termIndex, this is required for
+ * building the query vector.
+ */
+ var expandedTerm = expandedTerms[j],
+ posting = this.invertedIndex[expandedTerm],
+ termIndex = posting._index
+
+ for (var k = 0; k < clause.fields.length; k++) {
+ /*
+ * For each field that this query term is scoped by (by default
+ * all fields are in scope) we need to get all the document refs
+ * that have this term in that field.
+ *
+ * The posting is the entry in the invertedIndex for the matching
+ * term from above.
+ */
+ var field = clause.fields[k],
+ fieldPosting = posting[field],
+ matchingDocumentRefs = Object.keys(fieldPosting),
+ termField = expandedTerm + "/" + field,
+ matchingDocumentsSet = new lunr.Set(matchingDocumentRefs)
+
+ /*
+ * if the presence of this term is required ensure that the matching
+ * documents are added to the set of required matches for this clause.
+ *
+ */
+ if (clause.presence == lunr.Query.presence.REQUIRED) {
+ clauseMatches = clauseMatches.union(matchingDocumentsSet)
+
+ if (requiredMatches[field] === undefined) {
+ requiredMatches[field] = lunr.Set.complete
+ }
+ }
+
+ /*
+ * if the presence of this term is prohibited ensure that the matching
+ * documents are added to the set of prohibited matches for this field,
+ * creating that set if it does not yet exist.
+ */
+ if (clause.presence == lunr.Query.presence.PROHIBITED) {
+ if (prohibitedMatches[field] === undefined) {
+ prohibitedMatches[field] = lunr.Set.empty
+ }
+
+ prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet)
+
+ /*
+ * Prohibited matches should not be part of the query vector used for
+ * similarity scoring and no metadata should be extracted so we continue
+ * to the next field
+ */
+ continue
+ }
+
+ /*
+ * The query field vector is populated using the termIndex found for
+ * the term and a unit value with the appropriate boost applied.
+ * Using upsert because there could already be an entry in the vector
+ * for the term we are working with. In that case we just add the scores
+ * together.
+ */
+ queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b })
+
+ /**
+ * If we've already seen this term, field combo then we've already collected
+ * the matching documents and metadata, no need to go through all that again
+ */
+ if (termFieldCache[termField]) {
+ continue
+ }
+
+ for (var l = 0; l < matchingDocumentRefs.length; l++) {
+ /*
+ * All metadata for this term/field/document triple
+ * are then extracted and collected into an instance
+ * of lunr.MatchData ready to be returned in the query
+ * results
+ */
+ var matchingDocumentRef = matchingDocumentRefs[l],
+ matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field),
+ metadata = fieldPosting[matchingDocumentRef],
+ fieldMatch
+
+ if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {
+ matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata)
+ } else {
+ fieldMatch.add(expandedTerm, field, metadata)
+ }
+
+ }
+
+ termFieldCache[termField] = true
+ }
+ }
+ }
+
+ /**
+ * If the presence was required we need to update the requiredMatches field sets.
+ * We do this after all fields for the term have collected their matches because
+ * the clause terms presence is required in _any_ of the fields not _all_ of the
+ * fields.
+ */
+ if (clause.presence === lunr.Query.presence.REQUIRED) {
+ for (var k = 0; k < clause.fields.length; k++) {
+ var field = clause.fields[k]
+ requiredMatches[field] = requiredMatches[field].intersect(clauseMatches)
+ }
+ }
+ }
+
+ /**
+ * Need to combine the field scoped required and prohibited
+ * matching documents into a global set of required and prohibited
+ * matches
+ */
+ var allRequiredMatches = lunr.Set.complete,
+ allProhibitedMatches = lunr.Set.empty
+
+ for (var i = 0; i < this.fields.length; i++) {
+ var field = this.fields[i]
+
+ if (requiredMatches[field]) {
+ allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field])
+ }
+
+ if (prohibitedMatches[field]) {
+ allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field])
+ }
+ }
+
+ var matchingFieldRefs = Object.keys(matchingFields),
+ results = [],
+ matches = Object.create(null)
+
+ /*
+ * If the query is negated (contains only prohibited terms)
+ * we need to get _all_ fieldRefs currently existing in the
+ * index. This is only done when we know that the query is
+ * entirely prohibited terms to avoid any cost of getting all
+ * fieldRefs unnecessarily.
+ *
+ * Additionally, blank MatchData must be created to correctly
+ * populate the results.
+ */
+ if (query.isNegated()) {
+ matchingFieldRefs = Object.keys(this.fieldVectors)
+
+ for (var i = 0; i < matchingFieldRefs.length; i++) {
+ var matchingFieldRef = matchingFieldRefs[i]
+ var fieldRef = lunr.FieldRef.fromString(matchingFieldRef)
+ matchingFields[matchingFieldRef] = new lunr.MatchData
+ }
+ }
+
+ for (var i = 0; i < matchingFieldRefs.length; i++) {
+ /*
+ * Currently we have document fields that match the query, but we
+ * need to return documents. The matchData and scores are combined
+ * from multiple fields belonging to the same document.
+ *
+ * Scores are calculated by field, using the query vectors created
+ * above, and combined into a final document score using addition.
+ */
+ var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),
+ docRef = fieldRef.docRef
+
+ if (!allRequiredMatches.contains(docRef)) {
+ continue
+ }
+
+ if (allProhibitedMatches.contains(docRef)) {
+ continue
+ }
+
+ var fieldVector = this.fieldVectors[fieldRef],
+ score = queryVectors[fieldRef.fieldName].similarity(fieldVector),
+ docMatch
+
+ if ((docMatch = matches[docRef]) !== undefined) {
+ docMatch.score += score
+ docMatch.matchData.combine(matchingFields[fieldRef])
+ } else {
+ var match = {
+ ref: docRef,
+ score: score,
+ matchData: matchingFields[fieldRef]
+ }
+ matches[docRef] = match
+ results.push(match)
+ }
+ }
+
+ /*
+ * Sort the results objects by score, highest first.
+ */
+ return results.sort(function (a, b) {
+ return b.score - a.score
+ })
+}
+
+/**
+ * Prepares the index for JSON serialization.
+ *
+ * The schema for this JSON blob will be described in a
+ * separate JSON schema file.
+ *
+ * @returns {Object}
+ */
+lunr.Index.prototype.toJSON = function () {
+ var invertedIndex = Object.keys(this.invertedIndex)
+ .sort()
+ .map(function (term) {
+ return [term, this.invertedIndex[term]]
+ }, this)
+
+ var fieldVectors = Object.keys(this.fieldVectors)
+ .map(function (ref) {
+ return [ref, this.fieldVectors[ref].toJSON()]
+ }, this)
+
+ return {
+ version: lunr.version,
+ fields: this.fields,
+ fieldVectors: fieldVectors,
+ invertedIndex: invertedIndex,
+ pipeline: this.pipeline.toJSON()
+ }
+}
+
+/**
+ * Loads a previously serialized lunr.Index
+ *
+ * @param {Object} serializedIndex - A previously serialized lunr.Index
+ * @returns {lunr.Index}
+ */
+lunr.Index.load = function (serializedIndex) {
+ var attrs = {},
+ fieldVectors = {},
+ serializedVectors = serializedIndex.fieldVectors,
+ invertedIndex = Object.create(null),
+ serializedInvertedIndex = serializedIndex.invertedIndex,
+ tokenSetBuilder = new lunr.TokenSet.Builder,
+ pipeline = lunr.Pipeline.load(serializedIndex.pipeline)
+
+ if (serializedIndex.version != lunr.version) {
+ lunr.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + lunr.version + "' does not match serialized index '" + serializedIndex.version + "'")
+ }
+
+ for (var i = 0; i < serializedVectors.length; i++) {
+ var tuple = serializedVectors[i],
+ ref = tuple[0],
+ elements = tuple[1]
+
+ fieldVectors[ref] = new lunr.Vector(elements)
+ }
+
+ for (var i = 0; i < serializedInvertedIndex.length; i++) {
+ var tuple = serializedInvertedIndex[i],
+ term = tuple[0],
+ posting = tuple[1]
+
+ tokenSetBuilder.insert(term)
+ invertedIndex[term] = posting
+ }
+
+ tokenSetBuilder.finish()
+
+ attrs.fields = serializedIndex.fields
+
+ attrs.fieldVectors = fieldVectors
+ attrs.invertedIndex = invertedIndex
+ attrs.tokenSet = tokenSetBuilder.root
+ attrs.pipeline = pipeline
+
+ return new lunr.Index(attrs)
+}
+/*!
+ * lunr.Builder
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * lunr.Builder performs indexing on a set of documents and
+ * returns instances of lunr.Index ready for querying.
+ *
+ * All configuration of the index is done via the builder, the
+ * fields to index, the document reference, the text processing
+ * pipeline and document scoring parameters are all set on the
+ * builder before indexing.
+ *
+ * @constructor
+ * @property {string} _ref - Internal reference to the document reference field.
+ * @property {string[]} _fields - Internal reference to the document fields to index.
+ * @property {object} invertedIndex - The inverted index maps terms to document fields.
+ * @property {object} documentTermFrequencies - Keeps track of document term frequencies.
+ * @property {object} documentLengths - Keeps track of the length of documents added to the index.
+ * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.
+ * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.
+ * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.
+ * @property {number} documentCount - Keeps track of the total number of documents indexed.
+ * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.
+ * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.
+ * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.
+ * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.
+ */
+lunr.Builder = function () {
+ this._ref = "id"
+ this._fields = Object.create(null)
+ this._documents = Object.create(null)
+ this.invertedIndex = Object.create(null)
+ this.fieldTermFrequencies = {}
+ this.fieldLengths = {}
+ this.tokenizer = lunr.tokenizer
+ this.pipeline = new lunr.Pipeline
+ this.searchPipeline = new lunr.Pipeline
+ this.documentCount = 0
+ this._b = 0.75
+ this._k1 = 1.2
+ this.termIndex = 0
+ this.metadataWhitelist = []
+}
+
+/**
+ * Sets the document field used as the document reference. Every document must have this field.
+ * The type of this field in the document should be a string, if it is not a string it will be
+ * coerced into a string by calling toString.
+ *
+ * The default ref is 'id'.
+ *
+ * The ref should _not_ be changed during indexing, it should be set before any documents are
+ * added to the index. Changing it during indexing can lead to inconsistent results.
+ *
+ * @param {string} ref - The name of the reference field in the document.
+ */
+lunr.Builder.prototype.ref = function (ref) {
+ this._ref = ref
+}
+
+/**
+ * A function that is used to extract a field from a document.
+ *
+ * Lunr expects a field to be at the top level of a document, if however the field
+ * is deeply nested within a document an extractor function can be used to extract
+ * the right field for indexing.
+ *
+ * @callback fieldExtractor
+ * @param {object} doc - The document being added to the index.
+ * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.
+ * @example <caption>Extracting a nested field</caption>
+ * function (doc) { return doc.nested.field }
+ */
+
+/**
+ * Adds a field to the list of document fields that will be indexed. Every document being
+ * indexed should have this field. Null values for this field in indexed documents will
+ * not cause errors but will limit the chance of that document being retrieved by searches.
+ *
+ * All fields should be added before adding documents to the index. Adding fields after
+ * a document has been indexed will have no effect on already indexed documents.
+ *
+ * Fields can be boosted at build time. This allows terms within that field to have more
+ * importance when ranking search results. Use a field boost to specify that matches within
+ * one field are more important than other fields.
+ *
+ * @param {string} fieldName - The name of a field to index in all documents.
+ * @param {object} attributes - Optional attributes associated with this field.
+ * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.
+ * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.
+ * @throws {RangeError} fieldName cannot contain unsupported characters '/'
+ */
+lunr.Builder.prototype.field = function (fieldName, attributes) {
+ if (/\//.test(fieldName)) {
+ throw new RangeError ("Field '" + fieldName + "' contains illegal character '/'")
+ }
+
+ this._fields[fieldName] = attributes || {}
+}
+
+/**
+ * A parameter to tune the amount of field length normalisation that is applied when
+ * calculating relevance scores. A value of 0 will completely disable any normalisation
+ * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b
+ * will be clamped to the range 0 - 1.
+ *
+ * @param {number} number - The value to set for this tuning parameter.
+ */
+lunr.Builder.prototype.b = function (number) {
+ if (number < 0) {
+ this._b = 0
+ } else if (number > 1) {
+ this._b = 1
+ } else {
+ this._b = number
+ }
+}
+
+/**
+ * A parameter that controls the speed at which a rise in term frequency results in term
+ * frequency saturation. The default value is 1.2. Setting this to a higher value will give
+ * slower saturation levels, a lower value will result in quicker saturation.
+ *
+ * @param {number} number - The value to set for this tuning parameter.
+ */
+lunr.Builder.prototype.k1 = function (number) {
+ this._k1 = number
+}
+
+/**
+ * Adds a document to the index.
+ *
+ * Before adding fields to the index the index should have been fully setup, with the document
+ * ref and all fields to index already having been specified.
+ *
+ * The document must have a field name as specified by the ref (by default this is 'id') and
+ * it should have all fields defined for indexing, though null or undefined values will not
+ * cause errors.
+ *
+ * Entire documents can be boosted at build time. Applying a boost to a document indicates that
+ * this document should rank higher in search results than other documents.
+ *
+ * @param {object} doc - The document to add to the index.
+ * @param {object} attributes - Optional attributes associated with this document.
+ * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.
+ */
+lunr.Builder.prototype.add = function (doc, attributes) {
+ var docRef = doc[this._ref],
+ fields = Object.keys(this._fields)
+
+ this._documents[docRef] = attributes || {}
+ this.documentCount += 1
+
+ for (var i = 0; i < fields.length; i++) {
+ var fieldName = fields[i],
+ extractor = this._fields[fieldName].extractor,
+ field = extractor ? extractor(doc) : doc[fieldName],
+ tokens = this.tokenizer(field, {
+ fields: [fieldName]
+ }),
+ terms = this.pipeline.run(tokens),
+ fieldRef = new lunr.FieldRef (docRef, fieldName),
+ fieldTerms = Object.create(null)
+
+ this.fieldTermFrequencies[fieldRef] = fieldTerms
+ this.fieldLengths[fieldRef] = 0
+
+ // store the length of this field for this document
+ this.fieldLengths[fieldRef] += terms.length
+
+ // calculate term frequencies for this field
+ for (var j = 0; j < terms.length; j++) {
+ var term = terms[j]
+
+ if (fieldTerms[term] == undefined) {
+ fieldTerms[term] = 0
+ }
+
+ fieldTerms[term] += 1
+
+ // add to inverted index
+ // create an initial posting if one doesn't exist
+ if (this.invertedIndex[term] == undefined) {
+ var posting = Object.create(null)
+ posting["_index"] = this.termIndex
+ this.termIndex += 1
+
+ for (var k = 0; k < fields.length; k++) {
+ posting[fields[k]] = Object.create(null)
+ }
+
+ this.invertedIndex[term] = posting
+ }
+
+ // add an entry for this term/fieldName/docRef to the invertedIndex
+ if (this.invertedIndex[term][fieldName][docRef] == undefined) {
+ this.invertedIndex[term][fieldName][docRef] = Object.create(null)
+ }
+
+ // store all whitelisted metadata about this token in the
+ // inverted index
+ for (var l = 0; l < this.metadataWhitelist.length; l++) {
+ var metadataKey = this.metadataWhitelist[l],
+ metadata = term.metadata[metadataKey]
+
+ if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {
+ this.invertedIndex[term][fieldName][docRef][metadataKey] = []
+ }
+
+ this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata)
+ }
+ }
+
+ }
+}
+
+/**
+ * Calculates the average document length for this index
+ *
+ * @private
+ */
+lunr.Builder.prototype.calculateAverageFieldLengths = function () {
+
+ var fieldRefs = Object.keys(this.fieldLengths),
+ numberOfFields = fieldRefs.length,
+ accumulator = {},
+ documentsWithField = {}
+
+ for (var i = 0; i < numberOfFields; i++) {
+ var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),
+ field = fieldRef.fieldName
+
+ documentsWithField[field] || (documentsWithField[field] = 0)
+ documentsWithField[field] += 1
+
+ accumulator[field] || (accumulator[field] = 0)
+ accumulator[field] += this.fieldLengths[fieldRef]
+ }
+
+ var fields = Object.keys(this._fields)
+
+ for (var i = 0; i < fields.length; i++) {
+ var fieldName = fields[i]
+ accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName]
+ }
+
+ this.averageFieldLength = accumulator
+}
+
+/**
+ * Builds a vector space model of every document using lunr.Vector
+ *
+ * @private
+ */
+lunr.Builder.prototype.createFieldVectors = function () {
+ var fieldVectors = {},
+ fieldRefs = Object.keys(this.fieldTermFrequencies),
+ fieldRefsLength = fieldRefs.length,
+ termIdfCache = Object.create(null)
+
+ for (var i = 0; i < fieldRefsLength; i++) {
+ var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),
+ fieldName = fieldRef.fieldName,
+ fieldLength = this.fieldLengths[fieldRef],
+ fieldVector = new lunr.Vector,
+ termFrequencies = this.fieldTermFrequencies[fieldRef],
+ terms = Object.keys(termFrequencies),
+ termsLength = terms.length
+
+
+ var fieldBoost = this._fields[fieldName].boost || 1,
+ docBoost = this._documents[fieldRef.docRef].boost || 1
+
+ for (var j = 0; j < termsLength; j++) {
+ var term = terms[j],
+ tf = termFrequencies[term],
+ termIndex = this.invertedIndex[term]._index,
+ idf, score, scoreWithPrecision
+
+ if (termIdfCache[term] === undefined) {
+ idf = lunr.idf(this.invertedIndex[term], this.documentCount)
+ termIdfCache[term] = idf
+ } else {
+ idf = termIdfCache[term]
+ }
+
+ score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf)
+ score *= fieldBoost
+ score *= docBoost
+ scoreWithPrecision = Math.round(score * 1000) / 1000
+ // Converts 1.23456789 to 1.234.
+ // Reducing the precision so that the vectors take up less
+ // space when serialised. Doing it now so that they behave
+ // the same before and after serialisation. Also, this is
+ // the fastest approach to reducing a number's precision in
+ // JavaScript.
+
+ fieldVector.insert(termIndex, scoreWithPrecision)
+ }
+
+ fieldVectors[fieldRef] = fieldVector
+ }
+
+ this.fieldVectors = fieldVectors
+}
+
+/**
+ * Creates a token set of all tokens in the index using lunr.TokenSet
+ *
+ * @private
+ */
+lunr.Builder.prototype.createTokenSet = function () {
+ this.tokenSet = lunr.TokenSet.fromArray(
+ Object.keys(this.invertedIndex).sort()
+ )
+}
+
+/**
+ * Builds the index, creating an instance of lunr.Index.
+ *
+ * This completes the indexing process and should only be called
+ * once all documents have been added to the index.
+ *
+ * @returns {lunr.Index}
+ */
+lunr.Builder.prototype.build = function () {
+ this.calculateAverageFieldLengths()
+ this.createFieldVectors()
+ this.createTokenSet()
+
+ return new lunr.Index({
+ invertedIndex: this.invertedIndex,
+ fieldVectors: this.fieldVectors,
+ tokenSet: this.tokenSet,
+ fields: Object.keys(this._fields),
+ pipeline: this.searchPipeline
+ })
+}
+
+/**
+ * Applies a plugin to the index builder.
+ *
+ * A plugin is a function that is called with the index builder as its context.
+ * Plugins can be used to customise or extend the behaviour of the index
+ * in some way. A plugin is just a function, that encapsulated the custom
+ * behaviour that should be applied when building the index.
+ *
+ * The plugin function will be called with the index builder as its argument, additional
+ * arguments can also be passed when calling use. The function will be called
+ * with the index builder as its context.
+ *
+ * @param {Function} plugin The plugin to apply.
+ */
+lunr.Builder.prototype.use = function (fn) {
+ var args = Array.prototype.slice.call(arguments, 1)
+ args.unshift(this)
+ fn.apply(this, args)
+}
+/**
+ * Contains and collects metadata about a matching document.
+ * A single instance of lunr.MatchData is returned as part of every
+ * lunr.Index~Result.
+ *
+ * @constructor
+ * @param {string} term - The term this match data is associated with
+ * @param {string} field - The field in which the term was found
+ * @param {object} metadata - The metadata recorded about this term in this field
+ * @property {object} metadata - A cloned collection of metadata associated with this document.
+ * @see {@link lunr.Index~Result}
+ */
+lunr.MatchData = function (term, field, metadata) {
+ var clonedMetadata = Object.create(null),
+ metadataKeys = Object.keys(metadata || {})
+
+ // Cloning the metadata to prevent the original
+ // being mutated during match data combination.
+ // Metadata is kept in an array within the inverted
+ // index so cloning the data can be done with
+ // Array#slice
+ for (var i = 0; i < metadataKeys.length; i++) {
+ var key = metadataKeys[i]
+ clonedMetadata[key] = metadata[key].slice()
+ }
+
+ this.metadata = Object.create(null)
+
+ if (term !== undefined) {
+ this.metadata[term] = Object.create(null)
+ this.metadata[term][field] = clonedMetadata
+ }
+}
+
+/**
+ * An instance of lunr.MatchData will be created for every term that matches a
+ * document. However only one instance is required in a lunr.Index~Result. This
+ * method combines metadata from another instance of lunr.MatchData with this
+ * objects metadata.
+ *
+ * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.
+ * @see {@link lunr.Index~Result}
+ */
+lunr.MatchData.prototype.combine = function (otherMatchData) {
+ var terms = Object.keys(otherMatchData.metadata)
+
+ for (var i = 0; i < terms.length; i++) {
+ var term = terms[i],
+ fields = Object.keys(otherMatchData.metadata[term])
+
+ if (this.metadata[term] == undefined) {
+ this.metadata[term] = Object.create(null)
+ }
+
+ for (var j = 0; j < fields.length; j++) {
+ var field = fields[j],
+ keys = Object.keys(otherMatchData.metadata[term][field])
+
+ if (this.metadata[term][field] == undefined) {
+ this.metadata[term][field] = Object.create(null)
+ }
+
+ for (var k = 0; k < keys.length; k++) {
+ var key = keys[k]
+
+ if (this.metadata[term][field][key] == undefined) {
+ this.metadata[term][field][key] = otherMatchData.metadata[term][field][key]
+ } else {
+ this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key])
+ }
+
+ }
+ }
+ }
+}
+
+/**
+ * Add metadata for a term/field pair to this instance of match data.
+ *
+ * @param {string} term - The term this match data is associated with
+ * @param {string} field - The field in which the term was found
+ * @param {object} metadata - The metadata recorded about this term in this field
+ */
+lunr.MatchData.prototype.add = function (term, field, metadata) {
+ if (!(term in this.metadata)) {
+ this.metadata[term] = Object.create(null)
+ this.metadata[term][field] = metadata
+ return
+ }
+
+ if (!(field in this.metadata[term])) {
+ this.metadata[term][field] = metadata
+ return
+ }
+
+ var metadataKeys = Object.keys(metadata)
+
+ for (var i = 0; i < metadataKeys.length; i++) {
+ var key = metadataKeys[i]
+
+ if (key in this.metadata[term][field]) {
+ this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key])
+ } else {
+ this.metadata[term][field][key] = metadata[key]
+ }
+ }
+}
+/**
+ * A lunr.Query provides a programmatic way of defining queries to be performed
+ * against a {@link lunr.Index}.
+ *
+ * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method
+ * so the query object is pre-initialized with the right index fields.
+ *
+ * @constructor
+ * @property {lunr.Query~Clause[]} clauses - An array of query clauses.
+ * @property {string[]} allFields - An array of all available fields in a lunr.Index.
+ */
+lunr.Query = function (allFields) {
+ this.clauses = []
+ this.allFields = allFields
+}
+
+/**
+ * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.
+ *
+ * This allows wildcards to be added to the beginning and end of a term without having to manually do any string
+ * concatenation.
+ *
+ * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.
+ *
+ * @constant
+ * @default
+ * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour
+ * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists
+ * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists
+ * @see lunr.Query~Clause
+ * @see lunr.Query#clause
+ * @see lunr.Query#term
+ * @example <caption>query term with trailing wildcard</caption>
+ * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })
+ * @example <caption>query term with leading and trailing wildcard</caption>
+ * query.term('foo', {
+ * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING
+ * })
+ */
+
+lunr.Query.wildcard = new String ("*")
+lunr.Query.wildcard.NONE = 0
+lunr.Query.wildcard.LEADING = 1
+lunr.Query.wildcard.TRAILING = 2
+
+/**
+ * Constants for indicating what kind of presence a term must have in matching documents.
+ *
+ * @constant
+ * @enum {number}
+ * @see lunr.Query~Clause
+ * @see lunr.Query#clause
+ * @see lunr.Query#term
+ * @example <caption>query term with required presence</caption>
+ * query.term('foo', { presence: lunr.Query.presence.REQUIRED })
+ */
+lunr.Query.presence = {
+ /**
+ * Term's presence in a document is optional, this is the default value.
+ */
+ OPTIONAL: 1,
+
+ /**
+ * Term's presence in a document is required, documents that do not contain
+ * this term will not be returned.
+ */
+ REQUIRED: 2,
+
+ /**
+ * Term's presence in a document is prohibited, documents that do contain
+ * this term will not be returned.
+ */
+ PROHIBITED: 3
+}
+
+/**
+ * A single clause in a {@link lunr.Query} contains a term and details on how to
+ * match that term against a {@link lunr.Index}.
+ *
+ * @typedef {Object} lunr.Query~Clause
+ * @property {string[]} fields - The fields in an index this clause should be matched against.
+ * @property {number} [boost=1] - Any boost that should be applied when matching this clause.
+ * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.
+ * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.
+ * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.
+ * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.
+ */
+
+/**
+ * Adds a {@link lunr.Query~Clause} to this query.
+ *
+ * Unless the clause contains the fields to be matched all fields will be matched. In addition
+ * a default boost of 1 is applied to the clause.
+ *
+ * @param {lunr.Query~Clause} clause - The clause to add to this query.
+ * @see lunr.Query~Clause
+ * @returns {lunr.Query}
+ */
+lunr.Query.prototype.clause = function (clause) {
+ if (!('fields' in clause)) {
+ clause.fields = this.allFields
+ }
+
+ if (!('boost' in clause)) {
+ clause.boost = 1
+ }
+
+ if (!('usePipeline' in clause)) {
+ clause.usePipeline = true
+ }
+
+ if (!('wildcard' in clause)) {
+ clause.wildcard = lunr.Query.wildcard.NONE
+ }
+
+ if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) {
+ clause.term = "*" + clause.term
+ }
+
+ if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) {
+ clause.term = "" + clause.term + "*"
+ }
+
+ if (!('presence' in clause)) {
+ clause.presence = lunr.Query.presence.OPTIONAL
+ }
+
+ this.clauses.push(clause)
+
+ return this
+}
+
+/**
+ * A negated query is one in which every clause has a presence of
+ * prohibited. These queries require some special processing to return
+ * the expected results.
+ *
+ * @returns boolean
+ */
+lunr.Query.prototype.isNegated = function () {
+ for (var i = 0; i < this.clauses.length; i++) {
+ if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {
+ return false
+ }
+ }
+
+ return true
+}
+
+/**
+ * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}
+ * to the list of clauses that make up this query.
+ *
+ * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion
+ * to a token or token-like string should be done before calling this method.
+ *
+ * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an
+ * array, each term in the array will share the same options.
+ *
+ * @param {object|object[]} term - The term(s) to add to the query.
+ * @param {object} [options] - Any additional properties to add to the query clause.
+ * @returns {lunr.Query}
+ * @see lunr.Query#clause
+ * @see lunr.Query~Clause
+ * @example <caption>adding a single term to a query</caption>
+ * query.term("foo")
+ * @example <caption>adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard</caption>
+ * query.term("foo", {
+ * fields: ["title"],
+ * boost: 10,
+ * wildcard: lunr.Query.wildcard.TRAILING
+ * })
+ * @example <caption>using lunr.tokenizer to convert a string to tokens before using them as terms</caption>
+ * query.term(lunr.tokenizer("foo bar"))
+ */
+lunr.Query.prototype.term = function (term, options) {
+ if (Array.isArray(term)) {
+ term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this)
+ return this
+ }
+
+ var clause = options || {}
+ clause.term = term.toString()
+
+ this.clause(clause)
+
+ return this
+}
+lunr.QueryParseError = function (message, start, end) {
+ this.name = "QueryParseError"
+ this.message = message
+ this.start = start
+ this.end = end
+}
+
+lunr.QueryParseError.prototype = new Error
+lunr.QueryLexer = function (str) {
+ this.lexemes = []
+ this.str = str
+ this.length = str.length
+ this.pos = 0
+ this.start = 0
+ this.escapeCharPositions = []
+}
+
+lunr.QueryLexer.prototype.run = function () {
+ var state = lunr.QueryLexer.lexText
+
+ while (state) {
+ state = state(this)
+ }
+}
+
+lunr.QueryLexer.prototype.sliceString = function () {
+ var subSlices = [],
+ sliceStart = this.start,
+ sliceEnd = this.pos
+
+ for (var i = 0; i < this.escapeCharPositions.length; i++) {
+ sliceEnd = this.escapeCharPositions[i]
+ subSlices.push(this.str.slice(sliceStart, sliceEnd))
+ sliceStart = sliceEnd + 1
+ }
+
+ subSlices.push(this.str.slice(sliceStart, this.pos))
+ this.escapeCharPositions.length = 0
+
+ return subSlices.join('')
+}
+
+lunr.QueryLexer.prototype.emit = function (type) {
+ this.lexemes.push({
+ type: type,
+ str: this.sliceString(),
+ start: this.start,
+ end: this.pos
+ })
+
+ this.start = this.pos
+}
+
+lunr.QueryLexer.prototype.escapeCharacter = function () {
+ this.escapeCharPositions.push(this.pos - 1)
+ this.pos += 1
+}
+
+lunr.QueryLexer.prototype.next = function () {
+ if (this.pos >= this.length) {
+ return lunr.QueryLexer.EOS
+ }
+
+ var char = this.str.charAt(this.pos)
+ this.pos += 1
+ return char
+}
+
+lunr.QueryLexer.prototype.width = function () {
+ return this.pos - this.start
+}
+
+lunr.QueryLexer.prototype.ignore = function () {
+ if (this.start == this.pos) {
+ this.pos += 1
+ }
+
+ this.start = this.pos
+}
+
+lunr.QueryLexer.prototype.backup = function () {
+ this.pos -= 1
+}
+
+lunr.QueryLexer.prototype.acceptDigitRun = function () {
+ var char, charCode
+
+ do {
+ char = this.next()
+ charCode = char.charCodeAt(0)
+ } while (charCode > 47 && charCode < 58)
+
+ if (char != lunr.QueryLexer.EOS) {
+ this.backup()
+ }
+}
+
+lunr.QueryLexer.prototype.more = function () {
+ return this.pos < this.length
+}
+
+lunr.QueryLexer.EOS = 'EOS'
+lunr.QueryLexer.FIELD = 'FIELD'
+lunr.QueryLexer.TERM = 'TERM'
+lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'
+lunr.QueryLexer.BOOST = 'BOOST'
+lunr.QueryLexer.PRESENCE = 'PRESENCE'
+
+lunr.QueryLexer.lexField = function (lexer) {
+ lexer.backup()
+ lexer.emit(lunr.QueryLexer.FIELD)
+ lexer.ignore()
+ return lunr.QueryLexer.lexText
+}
+
+lunr.QueryLexer.lexTerm = function (lexer) {
+ if (lexer.width() > 1) {
+ lexer.backup()
+ lexer.emit(lunr.QueryLexer.TERM)
+ }
+
+ lexer.ignore()
+
+ if (lexer.more()) {
+ return lunr.QueryLexer.lexText
+ }
+}
+
+lunr.QueryLexer.lexEditDistance = function (lexer) {
+ lexer.ignore()
+ lexer.acceptDigitRun()
+ lexer.emit(lunr.QueryLexer.EDIT_DISTANCE)
+ return lunr.QueryLexer.lexText
+}
+
+lunr.QueryLexer.lexBoost = function (lexer) {
+ lexer.ignore()
+ lexer.acceptDigitRun()
+ lexer.emit(lunr.QueryLexer.BOOST)
+ return lunr.QueryLexer.lexText
+}
+
+lunr.QueryLexer.lexEOS = function (lexer) {
+ if (lexer.width() > 0) {
+ lexer.emit(lunr.QueryLexer.TERM)
+ }
+}
+
+// This matches the separator used when tokenising fields
+// within a document. These should match otherwise it is
+// not possible to search for some tokens within a document.
+//
+// It is possible for the user to change the separator on the
+// tokenizer so it _might_ clash with any other of the special
+// characters already used within the search string, e.g. :.
+//
+// This means that it is possible to change the separator in
+// such a way that makes some words unsearchable using a search
+// string.
+lunr.QueryLexer.termSeparator = lunr.tokenizer.separator
+
+lunr.QueryLexer.lexText = function (lexer) {
+ while (true) {
+ var char = lexer.next()
+
+ if (char == lunr.QueryLexer.EOS) {
+ return lunr.QueryLexer.lexEOS
+ }
+
+ // Escape character is '\'
+ if (char.charCodeAt(0) == 92) {
+ lexer.escapeCharacter()
+ continue
+ }
+
+ if (char == ":") {
+ return lunr.QueryLexer.lexField
+ }
+
+ if (char == "~") {
+ lexer.backup()
+ if (lexer.width() > 0) {
+ lexer.emit(lunr.QueryLexer.TERM)
+ }
+ return lunr.QueryLexer.lexEditDistance
+ }
+
+ if (char == "^") {
+ lexer.backup()
+ if (lexer.width() > 0) {
+ lexer.emit(lunr.QueryLexer.TERM)
+ }
+ return lunr.QueryLexer.lexBoost
+ }
+
+ // "+" indicates term presence is required
+ // checking for length to ensure that only
+ // leading "+" are considered
+ if (char == "+" && lexer.width() === 1) {
+ lexer.emit(lunr.QueryLexer.PRESENCE)
+ return lunr.QueryLexer.lexText
+ }
+
+ // "-" indicates term presence is prohibited
+ // checking for length to ensure that only
+ // leading "-" are considered
+ if (char == "-" && lexer.width() === 1) {
+ lexer.emit(lunr.QueryLexer.PRESENCE)
+ return lunr.QueryLexer.lexText
+ }
+
+ if (char.match(lunr.QueryLexer.termSeparator)) {
+ return lunr.QueryLexer.lexTerm
+ }
+ }
+}
+
+lunr.QueryParser = function (str, query) {
+ this.lexer = new lunr.QueryLexer (str)
+ this.query = query
+ this.currentClause = {}
+ this.lexemeIdx = 0
+}
+
+lunr.QueryParser.prototype.parse = function () {
+ this.lexer.run()
+ this.lexemes = this.lexer.lexemes
+
+ var state = lunr.QueryParser.parseClause
+
+ while (state) {
+ state = state(this)
+ }
+
+ return this.query
+}
+
+lunr.QueryParser.prototype.peekLexeme = function () {
+ return this.lexemes[this.lexemeIdx]
+}
+
+lunr.QueryParser.prototype.consumeLexeme = function () {
+ var lexeme = this.peekLexeme()
+ this.lexemeIdx += 1
+ return lexeme
+}
+
+lunr.QueryParser.prototype.nextClause = function () {
+ var completedClause = this.currentClause
+ this.query.clause(completedClause)
+ this.currentClause = {}
+}
+
+lunr.QueryParser.parseClause = function (parser) {
+ var lexeme = parser.peekLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ switch (lexeme.type) {
+ case lunr.QueryLexer.PRESENCE:
+ return lunr.QueryParser.parsePresence
+ case lunr.QueryLexer.FIELD:
+ return lunr.QueryParser.parseField
+ case lunr.QueryLexer.TERM:
+ return lunr.QueryParser.parseTerm
+ default:
+ var errorMessage = "expected either a field or a term, found " + lexeme.type
+
+ if (lexeme.str.length >= 1) {
+ errorMessage += " with value '" + lexeme.str + "'"
+ }
+
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+}
+
+lunr.QueryParser.parsePresence = function (parser) {
+ var lexeme = parser.consumeLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ switch (lexeme.str) {
+ case "-":
+ parser.currentClause.presence = lunr.Query.presence.PROHIBITED
+ break
+ case "+":
+ parser.currentClause.presence = lunr.Query.presence.REQUIRED
+ break
+ default:
+ var errorMessage = "unrecognised presence operator'" + lexeme.str + "'"
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+
+ var nextLexeme = parser.peekLexeme()
+
+ if (nextLexeme == undefined) {
+ var errorMessage = "expecting term or field, found nothing"
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+
+ switch (nextLexeme.type) {
+ case lunr.QueryLexer.FIELD:
+ return lunr.QueryParser.parseField
+ case lunr.QueryLexer.TERM:
+ return lunr.QueryParser.parseTerm
+ default:
+ var errorMessage = "expecting term or field, found '" + nextLexeme.type + "'"
+ throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)
+ }
+}
+
+lunr.QueryParser.parseField = function (parser) {
+ var lexeme = parser.consumeLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ if (parser.query.allFields.indexOf(lexeme.str) == -1) {
+ var possibleFields = parser.query.allFields.map(function (f) { return "'" + f + "'" }).join(', '),
+ errorMessage = "unrecognised field '" + lexeme.str + "', possible fields: " + possibleFields
+
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+
+ parser.currentClause.fields = [lexeme.str]
+
+ var nextLexeme = parser.peekLexeme()
+
+ if (nextLexeme == undefined) {
+ var errorMessage = "expecting term, found nothing"
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+
+ switch (nextLexeme.type) {
+ case lunr.QueryLexer.TERM:
+ return lunr.QueryParser.parseTerm
+ default:
+ var errorMessage = "expecting term, found '" + nextLexeme.type + "'"
+ throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)
+ }
+}
+
+lunr.QueryParser.parseTerm = function (parser) {
+ var lexeme = parser.consumeLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ parser.currentClause.term = lexeme.str.toLowerCase()
+
+ if (lexeme.str.indexOf("*") != -1) {
+ parser.currentClause.usePipeline = false
+ }
+
+ var nextLexeme = parser.peekLexeme()
+
+ if (nextLexeme == undefined) {
+ parser.nextClause()
+ return
+ }
+
+ switch (nextLexeme.type) {
+ case lunr.QueryLexer.TERM:
+ parser.nextClause()
+ return lunr.QueryParser.parseTerm
+ case lunr.QueryLexer.FIELD:
+ parser.nextClause()
+ return lunr.QueryParser.parseField
+ case lunr.QueryLexer.EDIT_DISTANCE:
+ return lunr.QueryParser.parseEditDistance
+ case lunr.QueryLexer.BOOST:
+ return lunr.QueryParser.parseBoost
+ case lunr.QueryLexer.PRESENCE:
+ parser.nextClause()
+ return lunr.QueryParser.parsePresence
+ default:
+ var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'"
+ throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)
+ }
+}
+
+lunr.QueryParser.parseEditDistance = function (parser) {
+ var lexeme = parser.consumeLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ var editDistance = parseInt(lexeme.str, 10)
+
+ if (isNaN(editDistance)) {
+ var errorMessage = "edit distance must be numeric"
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+
+ parser.currentClause.editDistance = editDistance
+
+ var nextLexeme = parser.peekLexeme()
+
+ if (nextLexeme == undefined) {
+ parser.nextClause()
+ return
+ }
+
+ switch (nextLexeme.type) {
+ case lunr.QueryLexer.TERM:
+ parser.nextClause()
+ return lunr.QueryParser.parseTerm
+ case lunr.QueryLexer.FIELD:
+ parser.nextClause()
+ return lunr.QueryParser.parseField
+ case lunr.QueryLexer.EDIT_DISTANCE:
+ return lunr.QueryParser.parseEditDistance
+ case lunr.QueryLexer.BOOST:
+ return lunr.QueryParser.parseBoost
+ case lunr.QueryLexer.PRESENCE:
+ parser.nextClause()
+ return lunr.QueryParser.parsePresence
+ default:
+ var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'"
+ throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)
+ }
+}
+
+lunr.QueryParser.parseBoost = function (parser) {
+ var lexeme = parser.consumeLexeme()
+
+ if (lexeme == undefined) {
+ return
+ }
+
+ var boost = parseInt(lexeme.str, 10)
+
+ if (isNaN(boost)) {
+ var errorMessage = "boost must be numeric"
+ throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)
+ }
+
+ parser.currentClause.boost = boost
+
+ var nextLexeme = parser.peekLexeme()
+
+ if (nextLexeme == undefined) {
+ parser.nextClause()
+ return
+ }
+
+ switch (nextLexeme.type) {
+ case lunr.QueryLexer.TERM:
+ parser.nextClause()
+ return lunr.QueryParser.parseTerm
+ case lunr.QueryLexer.FIELD:
+ parser.nextClause()
+ return lunr.QueryParser.parseField
+ case lunr.QueryLexer.EDIT_DISTANCE:
+ return lunr.QueryParser.parseEditDistance
+ case lunr.QueryLexer.BOOST:
+ return lunr.QueryParser.parseBoost
+ case lunr.QueryLexer.PRESENCE:
+ parser.nextClause()
+ return lunr.QueryParser.parsePresence
+ default:
+ var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'"
+ throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)
+ }
+}
+
+ /**
+ * export the module via AMD, CommonJS or as a browser global
+ * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js
+ */
+ ;(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module.
+ define(factory)
+ } else if (typeof exports === 'object') {
+ /**
+ * Node. Does not work with strict CommonJS, but
+ * only CommonJS-like enviroments that support module.exports,
+ * like Node.
+ */
+ module.exports = factory()
+ } else {
+ // Browser globals (root is window)
+ root.lunr = factory()
+ }
+ }(this, function () {
+ /**
+ * Just return a value to define the module export.
+ * This example returns an object, but the module
+ * can return a function as the exported value.
+ */
+ return lunr
+ }))
+})();
diff --git a/node_modules/lunr/lunr.min.js b/node_modules/lunr/lunr.min.js
new file mode 100644
index 0000000..cdc94cd
--- /dev/null
+++ b/node_modules/lunr/lunr.min.js
@@ -0,0 +1,6 @@
+/**
+ * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9
+ * Copyright (C) 2020 Oliver Nightingale
+ * @license MIT
+ */
+!function(){var e=function(t){var r=new e.Builder;return r.pipeline.add(e.trimmer,e.stopWordFilter,e.stemmer),r.searchPipeline.add(e.stemmer),t.call(r,r),r.build()};e.version="2.3.9",e.utils={},e.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),e.utils.asString=function(e){return void 0===e||null===e?"":e.toString()},e.utils.clone=function(e){if(null===e||void 0===e)return e;for(var t=Object.create(null),r=Object.keys(e),i=0;i<r.length;i++){var n=r[i],s=e[n];if(Array.isArray(s))t[n]=s.slice();else{if("string"!=typeof s&&"number"!=typeof s&&"boolean"!=typeof s)throw new TypeError("clone is not deep and does not support nested objects");t[n]=s}}return t},e.FieldRef=function(e,t,r){this.docRef=e,this.fieldName=t,this._stringValue=r},e.FieldRef.joiner="/",e.FieldRef.fromString=function(t){var r=t.indexOf(e.FieldRef.joiner);if(r===-1)throw"malformed field ref string";var i=t.slice(0,r),n=t.slice(r+1);return new e.FieldRef(n,i,t)},e.FieldRef.prototype.toString=function(){return void 0==this._stringValue&&(this._stringValue=this.fieldName+e.FieldRef.joiner+this.docRef),this._stringValue},e.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},e.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},e.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},e.Set.prototype.contains=function(e){return!!this.elements[e]},e.Set.prototype.intersect=function(t){var r,i,n,s=[];if(t===e.Set.complete)return this;if(t===e.Set.empty)return t;this.length<t.length?(r=this,i=t):(r=t,i=this),n=Object.keys(r.elements);for(var o=0;o<n.length;o++){var a=n[o];a in i.elements&&s.push(a)}return new e.Set(s)},e.Set.prototype.union=function(t){return t===e.Set.complete?e.Set.complete:t===e.Set.empty?this:new e.Set(Object.keys(this.elements).concat(Object.keys(t.elements)))},e.idf=function(e,t){var r=0;for(var i in e)"_index"!=i&&(r+=Object.keys(e[i]).length);var n=(t-r+.5)/(r+.5);return Math.log(1+Math.abs(n))},e.Token=function(e,t){this.str=e||"",this.metadata=t||{}},e.Token.prototype.toString=function(){return this.str},e.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},e.Token.prototype.clone=function(t){return t=t||function(e){return e},new e.Token(t(this.str,this.metadata),this.metadata)},e.tokenizer=function(t,r){if(null==t||void 0==t)return[];if(Array.isArray(t))return t.map(function(t){return new e.Token(e.utils.asString(t).toLowerCase(),e.utils.clone(r))});for(var i=t.toString().toLowerCase(),n=i.length,s=[],o=0,a=0;o<=n;o++){var u=i.charAt(o),l=o-a;if(u.match(e.tokenizer.separator)||o==n){if(l>0){var c=e.utils.clone(r)||{};c.position=[a,l],c.index=s.length,s.push(new e.Token(i.slice(a,o),c))}a=o+1}}return s},e.tokenizer.separator=/[\s\-]+/,e.Pipeline=function(){this._stack=[]},e.Pipeline.registeredFunctions=Object.create(null),e.Pipeline.registerFunction=function(t,r){r in this.registeredFunctions&&e.utils.warn("Overwriting existing registered function: "+r),t.label=r,e.Pipeline.registeredFunctions[t.label]=t},e.Pipeline.warnIfFunctionNotRegistered=function(t){var r=t.label&&t.label in this.registeredFunctions;r||e.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",t)},e.Pipeline.load=function(t){var r=new e.Pipeline;return t.forEach(function(t){var i=e.Pipeline.registeredFunctions[t];if(!i)throw new Error("Cannot load unregistered function: "+t);r.add(i)}),r},e.Pipeline.prototype.add=function(){var t=Array.prototype.slice.call(arguments);t.forEach(function(t){e.Pipeline.warnIfFunctionNotRegistered(t),this._stack.push(t)},this)},e.Pipeline.prototype.after=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");i+=1,this._stack.splice(i,0,r)},e.Pipeline.prototype.before=function(t,r){e.Pipeline.warnIfFunctionNotRegistered(r);var i=this._stack.indexOf(t);if(i==-1)throw new Error("Cannot find existingFn");this._stack.splice(i,0,r)},e.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);t!=-1&&this._stack.splice(t,1)},e.Pipeline.prototype.run=function(e){for(var t=this._stack.length,r=0;r<t;r++){for(var i=this._stack[r],n=[],s=0;s<e.length;s++){var o=i(e[s],s,e);if(null!==o&&void 0!==o&&""!==o)if(Array.isArray(o))for(var a=0;a<o.length;a++)n.push(o[a]);else n.push(o)}e=n}return e},e.Pipeline.prototype.runString=function(t,r){var i=new e.Token(t,r);return this.run([i]).map(function(e){return e.toString()})},e.Pipeline.prototype.reset=function(){this._stack=[]},e.Pipeline.prototype.toJSON=function(){return this._stack.map(function(t){return e.Pipeline.warnIfFunctionNotRegistered(t),t.label})},e.Vector=function(e){this._magnitude=0,this.elements=e||[]},e.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,r=this.elements.length/2,i=r-t,n=Math.floor(i/2),s=this.elements[2*n];i>1&&(s<e&&(t=n),s>e&&(r=n),s!=e);)i=r-t,n=t+Math.floor(i/2),s=this.elements[2*n];return s==e?2*n:s>e?2*n:s<e?2*(n+1):void 0},e.Vector.prototype.insert=function(e,t){this.upsert(e,t,function(){throw"duplicate index"})},e.Vector.prototype.upsert=function(e,t,r){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=r(this.elements[i+1],t):this.elements.splice(i,0,e,t)},e.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,r=1;r<t;r+=2){var i=this.elements[r];e+=i*i}return this._magnitude=Math.sqrt(e)},e.Vector.prototype.dot=function(e){for(var t=0,r=this.elements,i=e.elements,n=r.length,s=i.length,o=0,a=0,u=0,l=0;u<n&&l<s;)o=r[u],a=i[l],o<a?u+=2:o>a?l+=2:o==a&&(t+=r[u+1]*i[l+1],u+=2,l+=2);return t},e.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},e.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,r=0;t<this.elements.length;t+=2,r++)e[r]=this.elements[t];return e},e.Vector.prototype.toJSON=function(){return this.elements},e.stemmer=function(){var e={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},t={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},r="[^aeiou]",i="[aeiouy]",n=r+"[^aeiouy]*",s=i+"[aeiou]*",o="^("+n+")?"+s+n,a="^("+n+")?"+s+n+"("+s+")?$",u="^("+n+")?"+s+n+s+n,l="^("+n+")?"+i,c=new RegExp(o),h=new RegExp(u),d=new RegExp(a),f=new RegExp(l),p=/^(.+?)(ss|i)es$/,y=/^(.+?)([^s])s$/,m=/^(.+?)eed$/,v=/^(.+?)(ed|ing)$/,g=/.$/,x=/(at|bl|iz)$/,w=new RegExp("([^aeiouylsz])\\1$"),Q=new RegExp("^"+n+i+"[^aeiouwxy]$"),k=/^(.+?[^aeiou])y$/,S=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,E=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,L=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,b=/^(.+?)(s|t)(ion)$/,P=/^(.+?)e$/,T=/ll$/,O=new RegExp("^"+n+i+"[^aeiouwxy]$"),I=function(r){var i,n,s,o,a,u,l;if(r.length<3)return r;if(s=r.substr(0,1),"y"==s&&(r=s.toUpperCase()+r.substr(1)),o=p,a=y,o.test(r)?r=r.replace(o,"$1$2"):a.test(r)&&(r=r.replace(a,"$1$2")),o=m,a=v,o.test(r)){var I=o.exec(r);o=c,o.test(I[1])&&(o=g,r=r.replace(o,""))}else if(a.test(r)){var I=a.exec(r);i=I[1],a=f,a.test(i)&&(r=i,a=x,u=w,l=Q,a.test(r)?r+="e":u.test(r)?(o=g,r=r.replace(o,"")):l.test(r)&&(r+="e"))}if(o=k,o.test(r)){var I=o.exec(r);i=I[1],r=i+"i"}if(o=S,o.test(r)){var I=o.exec(r);i=I[1],n=I[2],o=c,o.test(i)&&(r=i+e[n])}if(o=E,o.test(r)){var I=o.exec(r);i=I[1],n=I[2],o=c,o.test(i)&&(r=i+t[n])}if(o=L,a=b,o.test(r)){var I=o.exec(r);i=I[1],o=h,o.test(i)&&(r=i)}else if(a.test(r)){var I=a.exec(r);i=I[1]+I[2],a=h,a.test(i)&&(r=i)}if(o=P,o.test(r)){var I=o.exec(r);i=I[1],o=h,a=d,u=O,(o.test(i)||a.test(i)&&!u.test(i))&&(r=i)}return o=T,a=h,o.test(r)&&a.test(r)&&(o=g,r=r.replace(o,"")),"y"==s&&(r=s.toLowerCase()+r.substr(1)),r};return function(e){return e.update(I)}}(),e.Pipeline.registerFunction(e.stemmer,"stemmer"),e.generateStopWordFilter=function(e){var t=e.reduce(function(e,t){return e[t]=t,e},{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},e.stopWordFilter=e.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),e.Pipeline.registerFunction(e.stopWordFilter,"stopWordFilter"),e.trimmer=function(e){return e.update(function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")})},e.Pipeline.registerFunction(e.trimmer,"trimmer"),e.TokenSet=function(){this["final"]=!1,this.edges={},this.id=e.TokenSet._nextId,e.TokenSet._nextId+=1},e.TokenSet._nextId=1,e.TokenSet.fromArray=function(t){for(var r=new e.TokenSet.Builder,i=0,n=t.length;i<n;i++)r.insert(t[i]);return r.finish(),r.root},e.TokenSet.fromClause=function(t){return"editDistance"in t?e.TokenSet.fromFuzzyString(t.term,t.editDistance):e.TokenSet.fromString(t.term)},e.TokenSet.fromFuzzyString=function(t,r){for(var i=new e.TokenSet,n=[{node:i,editsRemaining:r,str:t}];n.length;){var s=n.pop();if(s.str.length>0){var o,a=s.str.charAt(0);a in s.node.edges?o=s.node.edges[a]:(o=new e.TokenSet,s.node.edges[a]=o),1==s.str.length&&(o["final"]=!0),n.push({node:o,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(0!=s.editsRemaining){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new e.TokenSet;s.node.edges["*"]=u}if(0==s.str.length&&(u["final"]=!0),n.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&n.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),1==s.str.length&&(s.node["final"]=!0),s.str.length>=1){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new e.TokenSet;s.node.edges["*"]=l}1==s.str.length&&(l["final"]=!0),n.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var c,h=s.str.charAt(0),d=s.str.charAt(1);d in s.node.edges?c=s.node.edges[d]:(c=new e.TokenSet,s.node.edges[d]=c),1==s.str.length&&(c["final"]=!0),n.push({node:c,editsRemaining:s.editsRemaining-1,str:h+s.str.slice(2)})}}}return i},e.TokenSet.fromString=function(t){for(var r=new e.TokenSet,i=r,n=0,s=t.length;n<s;n++){var o=t[n],a=n==s-1;if("*"==o)r.edges[o]=r,r["final"]=a;else{var u=new e.TokenSet;u["final"]=a,r.edges[o]=u,r=u}}return i},e.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var r=t.pop(),i=Object.keys(r.node.edges),n=i.length;r.node["final"]&&(r.prefix.charAt(0),e.push(r.prefix));for(var s=0;s<n;s++){var o=i[s];t.push({prefix:r.prefix.concat(o),node:r.node.edges[o]})}}return e},e.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this["final"]?"1":"0",t=Object.keys(this.edges).sort(),r=t.length,i=0;i<r;i++){var n=t[i],s=this.edges[n];e=e+n+s.id}return e},e.TokenSet.prototype.intersect=function(t){for(var r=new e.TokenSet,i=void 0,n=[{qNode:t,output:r,node:this}];n.length;){i=n.pop();for(var s=Object.keys(i.qNode.edges),o=s.length,a=Object.keys(i.node.edges),u=a.length,l=0;l<o;l++)for(var c=s[l],h=0;h<u;h++){var d=a[h];if(d==c||"*"==c){var f=i.node.edges[d],p=i.qNode.edges[c],y=f["final"]&&p["final"],m=void 0;d in i.output.edges?(m=i.output.edges[d],m["final"]=m["final"]||y):(m=new e.TokenSet,m["final"]=y,i.output.edges[d]=m),n.push({qNode:p,output:m,node:f})}}}return r},e.TokenSet.Builder=function(){this.previousWord="",this.root=new e.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},e.TokenSet.Builder.prototype.insert=function(t){var r,i=0;if(t<this.previousWord)throw new Error("Out of order word insertion");for(var n=0;n<t.length&&n<this.previousWord.length&&t[n]==this.previousWord[n];n++)i++;this.minimize(i),r=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(var n=i;n<t.length;n++){var s=new e.TokenSet,o=t[n];r.edges[o]=s,this.uncheckedNodes.push({parent:r,"char":o,child:s}),r=s}r["final"]=!0,this.previousWord=t},e.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},e.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;t>=e;t--){var r=this.uncheckedNodes[t],i=r.child.toString();i in this.minimizedNodes?r.parent.edges[r["char"]]=this.minimizedNodes[i]:(r.child._str=i,this.minimizedNodes[i]=r.child),this.uncheckedNodes.pop()}},e.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},e.Index.prototype.search=function(t){return this.query(function(r){var i=new e.QueryParser(t,r);i.parse()})},e.Index.prototype.query=function(t){for(var r=new e.Query(this.fields),i=Object.create(null),n=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),u=0;u<this.fields.length;u++)n[this.fields[u]]=new e.Vector;t.call(r,r);for(var u=0;u<r.clauses.length;u++){var l=r.clauses[u],c=null,h=e.Set.empty;c=l.usePipeline?this.pipeline.runString(l.term,{fields:l.fields}):[l.term];for(var d=0;d<c.length;d++){var f=c[d];l.term=f;var p=e.TokenSet.fromClause(l),y=this.tokenSet.intersect(p).toArray();if(0===y.length&&l.presence===e.Query.presence.REQUIRED){for(var m=0;m<l.fields.length;m++){var v=l.fields[m];o[v]=e.Set.empty}break}for(var g=0;g<y.length;g++)for(var x=y[g],w=this.invertedIndex[x],Q=w._index,m=0;m<l.fields.length;m++){var v=l.fields[m],k=w[v],S=Object.keys(k),E=x+"/"+v,L=new e.Set(S);if(l.presence==e.Query.presence.REQUIRED&&(h=h.union(L),void 0===o[v]&&(o[v]=e.Set.complete)),l.presence!=e.Query.presence.PROHIBITED){if(n[v].upsert(Q,l.boost,function(e,t){return e+t}),!s[E]){for(var b=0;b<S.length;b++){var P,T=S[b],O=new e.FieldRef(T,v),I=k[T];void 0===(P=i[O])?i[O]=new e.MatchData(x,v,I):P.add(x,v,I)}s[E]=!0}}else void 0===a[v]&&(a[v]=e.Set.empty),a[v]=a[v].union(L)}}if(l.presence===e.Query.presence.REQUIRED)for(var m=0;m<l.fields.length;m++){var v=l.fields[m];o[v]=o[v].intersect(h)}}for(var R=e.Set.complete,F=e.Set.empty,u=0;u<this.fields.length;u++){var v=this.fields[u];o[v]&&(R=R.intersect(o[v])),a[v]&&(F=F.union(a[v]))}var C=Object.keys(i),N=[],_=Object.create(null);if(r.isNegated()){C=Object.keys(this.fieldVectors);for(var u=0;u<C.length;u++){var O=C[u],j=e.FieldRef.fromString(O);i[O]=new e.MatchData}}for(var u=0;u<C.length;u++){var j=e.FieldRef.fromString(C[u]),D=j.docRef;if(R.contains(D)&&!F.contains(D)){var A,B=this.fieldVectors[j],V=n[j.fieldName].similarity(B);if(void 0!==(A=_[D]))A.score+=V,A.matchData.combine(i[j]);else{var z={ref:D,score:V,matchData:i[j]};_[D]=z,N.push(z)}}}return N.sort(function(e,t){return t.score-e.score})},e.Index.prototype.toJSON=function(){var t=Object.keys(this.invertedIndex).sort().map(function(e){return[e,this.invertedIndex[e]]},this),r=Object.keys(this.fieldVectors).map(function(e){return[e,this.fieldVectors[e].toJSON()]},this);return{version:e.version,fields:this.fields,fieldVectors:r,invertedIndex:t,pipeline:this.pipeline.toJSON()}},e.Index.load=function(t){var r={},i={},n=t.fieldVectors,s=Object.create(null),o=t.invertedIndex,a=new e.TokenSet.Builder,u=e.Pipeline.load(t.pipeline);t.version!=e.version&&e.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+e.version+"' does not match serialized index '"+t.version+"'");for(var l=0;l<n.length;l++){var c=n[l],h=c[0],d=c[1];i[h]=new e.Vector(d)}for(var l=0;l<o.length;l++){var c=o[l],f=c[0],p=c[1];a.insert(f),s[f]=p}return a.finish(),r.fields=t.fields,r.fieldVectors=i,r.invertedIndex=s,r.tokenSet=a.root,r.pipeline=u,new e.Index(r)},e.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=e.tokenizer,this.pipeline=new e.Pipeline,this.searchPipeline=new e.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},e.Builder.prototype.ref=function(e){this._ref=e},e.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},e.Builder.prototype.b=function(e){e<0?this._b=0:e>1?this._b=1:this._b=e},e.Builder.prototype.k1=function(e){this._k1=e},e.Builder.prototype.add=function(t,r){var i=t[this._ref],n=Object.keys(this._fields);this._documents[i]=r||{},this.documentCount+=1;for(var s=0;s<n.length;s++){var o=n[s],a=this._fields[o].extractor,u=a?a(t):t[o],l=this.tokenizer(u,{fields:[o]}),c=this.pipeline.run(l),h=new e.FieldRef(i,o),d=Object.create(null);this.fieldTermFrequencies[h]=d,this.fieldLengths[h]=0,this.fieldLengths[h]+=c.length;for(var f=0;f<c.length;f++){var p=c[f];if(void 0==d[p]&&(d[p]=0),d[p]+=1,void 0==this.invertedIndex[p]){var y=Object.create(null);y._index=this.termIndex,this.termIndex+=1;for(var m=0;m<n.length;m++)y[n[m]]=Object.create(null);this.invertedIndex[p]=y}void 0==this.invertedIndex[p][o][i]&&(this.invertedIndex[p][o][i]=Object.create(null));for(var v=0;v<this.metadataWhitelist.length;v++){var g=this.metadataWhitelist[v],x=p.metadata[g];void 0==this.invertedIndex[p][o][i][g]&&(this.invertedIndex[p][o][i][g]=[]),this.invertedIndex[p][o][i][g].push(x)}}}},e.Builder.prototype.calculateAverageFieldLengths=function(){for(var t=Object.keys(this.fieldLengths),r=t.length,i={},n={},s=0;s<r;s++){var o=e.FieldRef.fromString(t[s]),a=o.fieldName;n[a]||(n[a]=0),n[a]+=1,i[a]||(i[a]=0),i[a]+=this.fieldLengths[o]}for(var u=Object.keys(this._fields),s=0;s<u.length;s++){var l=u[s];i[l]=i[l]/n[l]}this.averageFieldLength=i},e.Builder.prototype.createFieldVectors=function(){for(var t={},r=Object.keys(this.fieldTermFrequencies),i=r.length,n=Object.create(null),s=0;s<i;s++){for(var o=e.FieldRef.fromString(r[s]),a=o.fieldName,u=this.fieldLengths[o],l=new e.Vector,c=this.fieldTermFrequencies[o],h=Object.keys(c),d=h.length,f=this._fields[a].boost||1,p=this._documents[o.docRef].boost||1,y=0;y<d;y++){var m,v,g,x=h[y],w=c[x],Q=this.invertedIndex[x]._index;void 0===n[x]?(m=e.idf(this.invertedIndex[x],this.documentCount),n[x]=m):m=n[x],v=m*((this._k1+1)*w)/(this._k1*(1-this._b+this._b*(u/this.averageFieldLength[a]))+w),v*=f,v*=p,g=Math.round(1e3*v)/1e3,l.insert(Q,g)}t[o]=l}this.fieldVectors=t},e.Builder.prototype.createTokenSet=function(){this.tokenSet=e.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},e.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new e.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},e.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},e.MatchData=function(e,t,r){for(var i=Object.create(null),n=Object.keys(r||{}),s=0;s<n.length;s++){var o=n[s];i[o]=r[o].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=i)},e.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),r=0;r<t.length;r++){var i=t[r],n=Object.keys(e.metadata[i]);void 0==this.metadata[i]&&(this.metadata[i]=Object.create(null));for(var s=0;s<n.length;s++){var o=n[s],a=Object.keys(e.metadata[i][o]);void 0==this.metadata[i][o]&&(this.metadata[i][o]=Object.create(null));for(var u=0;u<a.length;u++){var l=a[u];void 0==this.metadata[i][o][l]?this.metadata[i][o][l]=e.metadata[i][o][l]:this.metadata[i][o][l]=this.metadata[i][o][l].concat(e.metadata[i][o][l])}}}},e.MatchData.prototype.add=function(e,t,r){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=r);if(!(t in this.metadata[e]))return void(this.metadata[e][t]=r);for(var i=Object.keys(r),n=0;n<i.length;n++){var s=i[n];s in this.metadata[e][t]?this.metadata[e][t][s]=this.metadata[e][t][s].concat(r[s]):this.metadata[e][t][s]=r[s]}},e.Query=function(e){this.clauses=[],this.allFields=e},e.Query.wildcard=new String("*"),e.Query.wildcard.NONE=0,e.Query.wildcard.LEADING=1,e.Query.wildcard.TRAILING=2,e.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},e.Query.prototype.clause=function(t){return"fields"in t||(t.fields=this.allFields),"boost"in t||(t.boost=1),"usePipeline"in t||(t.usePipeline=!0),"wildcard"in t||(t.wildcard=e.Query.wildcard.NONE),t.wildcard&e.Query.wildcard.LEADING&&t.term.charAt(0)!=e.Query.wildcard&&(t.term="*"+t.term),t.wildcard&e.Query.wildcard.TRAILING&&t.term.slice(-1)!=e.Query.wildcard&&(t.term=""+t.term+"*"),"presence"in t||(t.presence=e.Query.presence.OPTIONAL),this.clauses.push(t),this},e.Query.prototype.isNegated=function(){for(var t=0;t<this.clauses.length;t++)if(this.clauses[t].presence!=e.Query.presence.PROHIBITED)return!1;return!0},e.Query.prototype.term=function(t,r){if(Array.isArray(t))return t.forEach(function(t){this.term(t,e.utils.clone(r))},this),this;var i=r||{};return i.term=t.toString(),this.clause(i),this},e.QueryParseError=function(e,t,r){this.name="QueryParseError",this.message=e,this.start=t,this.end=r},e.QueryParseError.prototype=new Error,e.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},e.QueryLexer.prototype.run=function(){for(var t=e.QueryLexer.lexText;t;)t=t(this)},e.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,r=this.pos,i=0;i<this.escapeCharPositions.length;i++)r=this.escapeCharPositions[i],e.push(this.str.slice(t,r)),t=r+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},e.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},e.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},e.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return e.QueryLexer.EOS;var t=this.str.charAt(this.pos);return this.pos+=1,t},e.QueryLexer.prototype.width=function(){return this.pos-this.start},e.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},e.QueryLexer.prototype.backup=function(){this.pos-=1},e.QueryLexer.prototype.acceptDigitRun=function(){var t,r;do t=this.next(),r=t.charCodeAt(0);while(r>47&&r<58);t!=e.QueryLexer.EOS&&this.backup()},e.QueryLexer.prototype.more=function(){return this.pos<this.length},e.QueryLexer.EOS="EOS",e.QueryLexer.FIELD="FIELD",e.QueryLexer.TERM="TERM",e.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",e.QueryLexer.BOOST="BOOST",e.QueryLexer.PRESENCE="PRESENCE",e.QueryLexer.lexField=function(t){return t.backup(),t.emit(e.QueryLexer.FIELD),t.ignore(),e.QueryLexer.lexText},e.QueryLexer.lexTerm=function(t){if(t.width()>1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}();
diff --git a/node_modules/lunr/notes b/node_modules/lunr/notes
new file mode 100644
index 0000000..4407f79
--- /dev/null
+++ b/node_modules/lunr/notes
@@ -0,0 +1,47 @@
+1 - "Mr. Green killed Colonel Mustard in the study with the candlestick. Mr. Green is not a very nice fellow."
+2 - "Professor Plumb has a green plant in his study."
+3 - "Miss Scarlett watered Professor Plumb's green plant while he was away from his office last week."
+
+l1 = 19
+l2 = 9
+l3 = 16
+
+q1 - "green"
+q1 = [0.0, 0.71]
+
+1 = [0.0, 0.0747]
+2 = [0.0, 0.1555]
+3 = [0.0, 0.0875]
+
+green : total count = 4, idf = 0.71
+mr : total count = 2, idf = 1.40
+the : total count = 2, idf = 1.40
+plant : total count = 2, idf = 1.40
+
+q2 = "Mr. Green"
+q2 = [1.4, 0.71]
+
+1 = [0.147, 0.0747]
+2 = [0, 0.1555]
+3 = [0, 0.0875]
+
+q3 = "the green plant"
+q3 = [0.5, 0.25, 0.5]
+
+1 = [1, 0.5, 0]
+2 = [0, 0.25, 0.5]
+3 = [0, 0.25, 0.5]
+
+Inverse Index as a trie
+values are {docId: score} where score is the sum of tf across fields, with multipliers applied
+when querying calculate the idf and multiply it by the tf
+
+for a multi term query generate a vector using the idf
+find all the documents that match both queries, and generate a tf*idf
+
+word: {
+ totalCount: 123,
+ docs:
+}
+
+
diff --git a/node_modules/lunr/package.json b/node_modules/lunr/package.json
new file mode 100644
index 0000000..1fe2b80
--- /dev/null
+++ b/node_modules/lunr/package.json
@@ -0,0 +1,30 @@
+{
+ "name": "lunr",
+ "description": "Simple full-text search in your browser.",
+ "version": "2.3.9",
+ "author": "Oliver Nightingale",
+ "keywords": ["search"],
+ "homepage": "https://lunrjs.com",
+ "bugs": "https://github.com/olivernn/lunr.js/issues",
+ "main": "lunr.js",
+ "license": "MIT",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/olivernn/lunr.js.git"
+ },
+ "devDependencies": {
+ "benchmark": "2.1.x",
+ "chai": "3.5.x",
+ "eslint-plugin-spellcheck": "0.0.8",
+ "eslint": "3.4.x",
+ "jsdoc": "3.5.x",
+ "mocha": "3.3.x",
+ "mustache": "2.2.x",
+ "node-static": "0.7.x",
+ "uglify-js": "2.6.x",
+ "word-list": "1.0.x"
+ },
+ "scripts": {
+ "test": "make test"
+ }
+}
diff --git a/node_modules/lunr/perf/builder_perf.js b/node_modules/lunr/perf/builder_perf.js
new file mode 100644
index 0000000..a848e35
--- /dev/null
+++ b/node_modules/lunr/perf/builder_perf.js
@@ -0,0 +1,30 @@
+suite('lunr.Builder', function () {
+ var documents = [{
+ id: 'a',
+ title: 'Mr. Green kills Colonel Mustard',
+ body: 'Mr. Green killed Colonel Mustard in the study with the candlestick. Mr. Green is not a very nice fellow.',
+ wordCount: 19
+ },{
+ id: 'b',
+ title: 'Plumb waters plant',
+ body: 'Professor Plumb has a green plant in his study',
+ wordCount: 9
+ },{
+ id: 'c',
+ title: 'Scarlett helps Professor',
+ body: 'Miss Scarlett watered Professor Plumbs green plant while he was away from his office last week.',
+ wordCount: 16
+ }]
+
+ this.add('build', function () {
+ lunr(function () {
+ this.ref('id')
+ this.field('title')
+ this.field('body')
+
+ documents.forEach(function (doc) {
+ this.add(doc)
+ }, this)
+ })
+ })
+})
diff --git a/node_modules/lunr/perf/perf_helper.js b/node_modules/lunr/perf/perf_helper.js
new file mode 100644
index 0000000..4285249
--- /dev/null
+++ b/node_modules/lunr/perf/perf_helper.js
@@ -0,0 +1,26 @@
+var lunr = require('../lunr.js'),
+ Benchmark = require('benchmark'),
+ wordList = require('word-list'),
+ fs = require('fs')
+
+var suite = function (name, fn) {
+ var s = new Benchmark.Suite(name, {
+ onStart: function (e) { console.log(e.currentTarget.name) },
+ onCycle: function (e) { console.log(" " + String(e.target)) },
+ onError: function (e) { console.error(e.target.error) }
+ })
+
+ fn.call(s, s)
+
+ s.run()
+}
+
+var words = fs.readFileSync(wordList, 'utf-8')
+ .split('\n')
+ .slice(0, 1000)
+ .sort()
+
+global.lunr = lunr
+global.Benchmark = Benchmark
+global.suite = suite
+global.words = words
diff --git a/node_modules/lunr/perf/pipeline_perf.js b/node_modules/lunr/perf/pipeline_perf.js
new file mode 100644
index 0000000..b3e95fa
--- /dev/null
+++ b/node_modules/lunr/perf/pipeline_perf.js
@@ -0,0 +1,43 @@
+suite('lunr.Pipeline', function () {
+ var tokenToToken = function(token) {
+ return token
+ }
+
+ var tokenToTokenArray = function(token) {
+ return [token, token]
+ }
+
+ var buildTokens = function(count) {
+ return words.slice(0, count).map(function(word) {
+ return new lunr.Token(word)
+ })
+ }
+
+ lunr.Pipeline.registerFunction(tokenToToken, 'tokenToToken')
+ lunr.Pipeline.registerFunction(tokenToTokenArray, 'tokenToTokenArray')
+
+ var fewTokens = buildTokens(50);
+ var manyTokens = buildTokens(1000)
+
+ var tokenToTokenPipeline = new lunr.Pipeline
+ tokenToTokenPipeline.add(tokenToToken)
+
+ var tokenToTokenArrayPipeline = new lunr.Pipeline
+ tokenToTokenArrayPipeline.add(tokenToTokenArray)
+
+ this.add('few tokens, token -> token', function () {
+ tokenToTokenPipeline.run(fewTokens)
+ })
+
+ this.add('many tokens, token -> token', function () {
+ tokenToTokenPipeline.run(manyTokens)
+ })
+
+ this.add('few tokens, token -> token array', function () {
+ tokenToTokenArrayPipeline.run(fewTokens)
+ })
+
+ this.add('many tokens, token -> token array', function () {
+ tokenToTokenArrayPipeline.run(manyTokens)
+ })
+})
diff --git a/node_modules/lunr/perf/query_parser_perf.js b/node_modules/lunr/perf/query_parser_perf.js
new file mode 100644
index 0000000..3b75a86
--- /dev/null
+++ b/node_modules/lunr/perf/query_parser_perf.js
@@ -0,0 +1,24 @@
+suite('lunr.QueryParser', function () {
+ var parse = function (q) {
+ var query = new lunr.Query (['title', 'body']),
+ parser = new lunr.QueryParser(q, query)
+
+ parser.parse()
+ }
+
+ this.add('simple', function () {
+ parse('foo bar')
+ })
+
+ this.add('field', function () {
+ parse('title:foo bar')
+ })
+
+ this.add('modifier', function () {
+ parse('foo~2 bar')
+ })
+
+ this.add('complex', function () {
+ parse('title:foo~2^6 bar')
+ })
+})
diff --git a/node_modules/lunr/perf/search_perf.js b/node_modules/lunr/perf/search_perf.js
new file mode 100644
index 0000000..b320a04
--- /dev/null
+++ b/node_modules/lunr/perf/search_perf.js
@@ -0,0 +1,72 @@
+suite('search', function () {
+ var documents = [{
+ id: 'a',
+ title: 'Mr. Green kills Colonel Mustard',
+ body: 'Mr. Green killed Colonel Mustard in the study with the candlestick. Mr. Green is not a very nice fellow.',
+ wordCount: 19
+ },{
+ id: 'b',
+ title: 'Plumb waters plant',
+ body: 'Professor Plumb has a green plant in his study',
+ wordCount: 9
+ },{
+ id: 'c',
+ title: 'Scarlett helps Professor',
+ body: 'Miss Scarlett watered Professor Plumbs green plant while he was away from his office last week.',
+ wordCount: 16
+ }]
+
+ var idx = lunr(function () {
+ this.ref('id')
+ this.field('title')
+ this.field('body')
+
+ documents.forEach(function (doc) {
+ this.add(doc)
+ }, this)
+ })
+
+ this.add('single term', function () {
+ idx.search('green')
+ })
+
+ this.add('multi term', function () {
+ idx.search('green plant')
+ })
+
+ this.add('trailing wildcard', function () {
+ idx.search('pl*')
+ })
+
+ this.add('leading wildcard', function () {
+ idx.search('*ant')
+ })
+
+ this.add('contained wildcard', function () {
+ idx.search('p*t')
+ })
+
+ this.add('with field', function () {
+ idx.search('title:plant')
+ })
+
+ this.add('edit distance', function () {
+ idx.search('plint~2')
+ })
+
+ this.add('typeahead', function () {
+ idx.query(function (q) {
+ q.term("pl", { boost: 100, usePipeline: true })
+ q.term("pl", { boost: 10, usePipeline: false, wildcard: lunr.Query.wildcard.TRAILING })
+ q.term("pl", { boost: 1, editDistance: 1 })
+ })
+ })
+
+ this.add('negated query', function () {
+ idx.search('-plant')
+ })
+
+ this.add('required term', function () {
+ idx.search('green +plant')
+ })
+})
diff --git a/node_modules/lunr/perf/stemmer_perf.js b/node_modules/lunr/perf/stemmer_perf.js
new file mode 100644
index 0000000..3490543
--- /dev/null
+++ b/node_modules/lunr/perf/stemmer_perf.js
@@ -0,0 +1,7 @@
+suite('lunr.stemmer', function () {
+ this.add('#call', function () {
+ for (var i = 0; i < words.length; i++) {
+ lunr.stemmer(new lunr.Token (words[i]))
+ }
+ })
+})
diff --git a/node_modules/lunr/perf/token_set_perf.js b/node_modules/lunr/perf/token_set_perf.js
new file mode 100644
index 0000000..ef0f60a
--- /dev/null
+++ b/node_modules/lunr/perf/token_set_perf.js
@@ -0,0 +1,42 @@
+suite('lunr.TokenSet', function () {
+ var tokenSet = lunr.TokenSet.fromArray([
+ 'january', 'february', 'march', 'april',
+ 'may', 'june', 'july', 'august',
+ 'september', 'october', 'november', 'december'
+ ].sort())
+
+ var noWildcard = lunr.TokenSet.fromString('september')
+ var withWildcard = lunr.TokenSet.fromString('*ber')
+
+ this.add('.fromArray', function () {
+ lunr.TokenSet.fromArray(words)
+ })
+
+ this.add('.fromString (no wildcard)', function () {
+ lunr.TokenSet.fromString('javascript')
+ })
+
+ this.add('.fromString (with wildcard)', function () {
+ lunr.TokenSet.fromString('java*cript')
+ })
+
+ this.add('.fromFuzzyString', function () {
+ lunr.TokenSet.fromFuzzyString('javascript', 2)
+ })
+
+ this.add('#toArray', function () {
+ tokenSet.toArray()
+ })
+
+ this.add('#toString', function () {
+ tokenSet.toString()
+ })
+
+ this.add('#intersect (no wildcard)', function () {
+ tokenSet.intersect(noWildcard)
+ })
+
+ this.add('#intersect (with wildcard)', function () {
+ tokenSet.intersect(withWildcard)
+ })
+})
diff --git a/node_modules/lunr/perf/tokenizer_perf.js b/node_modules/lunr/perf/tokenizer_perf.js
new file mode 100644
index 0000000..3890d0d
--- /dev/null
+++ b/node_modules/lunr/perf/tokenizer_perf.js
@@ -0,0 +1,7 @@
+suite('lunr.tokenizer', function () {
+ var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"
+
+ this.add('#call', function () {
+ lunr.tokenizer(lorem)
+ })
+})
diff --git a/node_modules/lunr/perf/vector_perf.js b/node_modules/lunr/perf/vector_perf.js
new file mode 100644
index 0000000..181cdba
--- /dev/null
+++ b/node_modules/lunr/perf/vector_perf.js
@@ -0,0 +1,31 @@
+suite('lunr.Vector', function () {
+ var index, val
+
+ var v1 = new lunr.Vector,
+ v2 = new lunr.Vector
+
+ for (var i = 0; i < 1000; i++) {
+ index = Math.floor(i + Math.random() * 100)
+ val = Math.random() * 100
+ v1.insert(i, val)
+ }
+
+ for (var i = 0; i < 1000; i++) {
+ index = Math.floor(i + Math.random() * 100)
+ val = Math.random() * 100
+ v2.insert(i, val)
+ }
+
+ this.add('magnitude', function () {
+ v1.magnitude()
+ })
+
+ this.add('dot', function () {
+ v1.dot(v2)
+ })
+
+ this.add('similarity', function () {
+ v1.similarity(v2)
+ })
+
+})
diff --git a/node_modules/lunr/styles.css b/node_modules/lunr/styles.css
new file mode 100644
index 0000000..758bc29
--- /dev/null
+++ b/node_modules/lunr/styles.css
@@ -0,0 +1,133 @@
+body {
+ background-color: #081f28;
+ color: #708284;
+ font-family: 'Helvetica Neue', Helvetica, sans-serif;
+ font-size: 18px;
+}
+
+h1 {
+ margin: 0;
+ padding: 0;
+ font-size: 4em;
+}
+
+a {
+ color: #2076c7;
+ text-decoration: none;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+h2 {
+ font-weight: normal;
+ font-size: 1.2em;
+}
+
+h3 {
+ font-size: 2.6em;
+ margin: 0;
+}
+
+h1, h2 {
+ margin: 0;
+}
+
+header span {
+ font-size: 0.5em;
+ font-weight: normal;
+}
+
+nav ul {
+ margin: 0;
+ padding: 6px 0 0 3px;
+}
+
+nav li {
+ list-style: none;
+ display: inline;
+ padding-right: 12px;
+ font-weight: bold;
+ font-size: 0.9em;
+}
+
+footer ul {
+ list-style: none;
+ padding: 12px 0;
+}
+
+footer ul li {
+ float: left;
+ margin-right: 40px;
+ font-size: 0.8em;
+ font-weight: bold;
+}
+
+.wrap {
+ width: 960px;
+ margin: 20px auto 0 auto;
+}
+
+header {
+ border-top: 4px solid #708284;
+ padding: 4px 0 12px 0;
+}
+
+article header {
+ border-top: 2px solid #708284;
+}
+
+pre {
+ border-radius: 2px;
+ background-color: #03262f;
+ padding: 6px 0;
+ color: #819090;
+}
+
+p {
+ line-height: 1.4em;
+}
+
+section {
+ margin-top: 40px;
+}
+
+section.columns {
+ -webkit-column-count: 2;
+ -webkit-column-gap: 50px;
+ -webkit-hyphens: auto;
+ min-height: 720px;
+ font-size: 18px;
+}
+
+.download ul {
+ list-style: none;
+ padding: 0;
+}
+
+.download li {
+ font-size: 1.2em;
+}
+
+pre .keyword, pre .special {
+ font-weight: bold;
+ color: #2076c7
+}
+
+pre .string, pre .regexp {
+ color: #728a06
+}
+
+pre .class {
+ color: #A57707;
+}
+
+pre .number {
+ color: #D11c24
+}
+
+pre .comment {
+ color: grey;
+ font-style: italic;
+}
diff --git a/node_modules/lunr/test/builder_test.js b/node_modules/lunr/test/builder_test.js
new file mode 100644
index 0000000..15afda0
--- /dev/null
+++ b/node_modules/lunr/test/builder_test.js
@@ -0,0 +1,225 @@
+suite('lunr.Builder', function () {
+ suite('#add', function () {
+ setup(function () {
+ this.builder = new lunr.Builder
+ })
+
+ test('field contains terms that clash with object prototype', function () {
+ this.builder.field('title')
+ this.builder.add({ id: 'id', title: 'constructor'})
+
+ assert.deepProperty(this.builder.invertedIndex, 'constructor.title.id')
+ assert.deepEqual(this.builder.invertedIndex.constructor.title.id, {})
+
+ assert.equal(this.builder.fieldTermFrequencies['title/id'].constructor, 1)
+ })
+
+ test('field name clashes with object prototype', function () {
+ this.builder.field('constructor')
+ this.builder.add({ id: 'id', constructor: 'constructor'})
+
+ assert.deepProperty(this.builder.invertedIndex, 'constructor.constructor.id')
+ assert.deepEqual(this.builder.invertedIndex.constructor.constructor.id, {})
+ })
+
+ test('document ref clashes with object prototype', function () {
+ this.builder.field('title')
+ this.builder.add({ id: 'constructor', title: 'word'})
+
+ assert.deepProperty(this.builder.invertedIndex, 'word.title.constructor')
+ assert.deepEqual(this.builder.invertedIndex.word.title.constructor, {})
+ })
+
+ test('token metadata clashes with object prototype', function () {
+ var pipelineFunction = function (t) {
+ t.metadata['constructor'] = 'foo'
+ return t
+ }
+
+ lunr.Pipeline.registerFunction(pipelineFunction, 'test')
+ this.builder.pipeline.add(pipelineFunction)
+
+ // the registeredFunctions object is global, this is to prevent
+ // polluting any other tests.
+ delete lunr.Pipeline.registeredFunctions.test
+
+ this.builder.metadataWhitelist.push('constructor')
+
+ this.builder.field('title')
+ this.builder.add({ id: 'id', title: 'word'})
+ assert.deepProperty(this.builder.invertedIndex, 'word.title.id.constructor')
+ assert.deepEqual(this.builder.invertedIndex.word.title.id.constructor, ['foo'])
+ })
+
+ test('extracting nested properties from a document', function () {
+ var extractor = function (d) { return d.person.name }
+
+ this.builder.field('name', {
+ extractor: extractor
+ })
+
+ this.builder.add({
+ id: 'id',
+ person: {
+ name: 'bob'
+ }
+ })
+
+ assert.deepProperty(this.builder.invertedIndex, 'bob.name.id')
+ })
+ })
+
+ suite('#field', function () {
+ test('defining fields to index', function () {
+ var builder = new lunr.Builder
+ builder.field('foo')
+ assert.property(builder._fields, 'foo')
+ })
+
+ test('field with illegal characters', function () {
+ var builder = new lunr.Builder
+ assert.throws(function () {
+ builder.field('foo/bar')
+ })
+ })
+ })
+
+ suite('#ref', function () {
+ test('default reference', function () {
+ var builder = new lunr.Builder
+ assert.equal('id', builder._ref)
+ })
+
+ test('defining a reference field', function () {
+ var builder = new lunr.Builder
+ builder.ref('foo')
+ assert.equal('foo', builder._ref)
+ })
+ })
+
+ suite('#b', function () {
+ test('default value', function () {
+ var builder = new lunr.Builder
+ assert.equal(0.75, builder._b)
+ })
+
+ test('values less than zero', function () {
+ var builder = new lunr.Builder
+ builder.b(-1)
+ assert.equal(0, builder._b)
+ })
+
+ test('values higher than one', function () {
+ var builder = new lunr.Builder
+ builder.b(1.5)
+ assert.equal(1, builder._b)
+ })
+
+ test('value within range', function () {
+ var builder = new lunr.Builder
+ builder.b(0.5)
+ assert.equal(0.5, builder._b)
+ })
+ })
+
+ suite('#k1', function () {
+ test('default value', function () {
+ var builder = new lunr.Builder
+ assert.equal(1.2, builder._k1)
+ })
+
+ test('values less than zero', function () {
+ var builder = new lunr.Builder
+ builder.k1(1.6)
+ assert.equal(1.6, builder._k1)
+ })
+ })
+
+ suite('#use', function () {
+ setup(function () {
+ this.builder = new lunr.Builder
+ })
+
+ test('calls plugin function', function () {
+ var wasCalled = false,
+ plugin = function () { wasCalled = true }
+
+ this.builder.use(plugin)
+ assert.isTrue(wasCalled)
+ })
+
+ test('sets context to the builder instance', function () {
+ var context = null,
+ plugin = function () { context = this }
+
+ this.builder.use(plugin)
+ assert.equal(context, this.builder)
+ })
+
+ test('passes builder as first argument', function () {
+ var arg = null,
+ plugin = function (a) { arg = a }
+
+ this.builder.use(plugin)
+ assert.equal(arg, this.builder)
+ })
+
+ test('forwards arguments to the plugin', function () {
+ var args = null,
+ plugin = function () { args = [].slice.call(arguments) }
+
+ this.builder.use(plugin, 1, 2, 3)
+ assert.deepEqual(args, [this.builder, 1, 2, 3])
+ })
+ })
+
+ suite('#build', function () {
+ setup(function () {
+ var builder = new lunr.Builder,
+ doc = { id: 'id', title: 'test', body: 'missing' }
+
+ builder.ref('id')
+ builder.field('title')
+ builder.add(doc)
+ builder.build()
+
+ this.builder = builder
+ })
+
+ test('adds tokens to invertedIndex', function () {
+ assert.deepProperty(this.builder.invertedIndex, 'test.title.id')
+ })
+
+ test('builds a vector space of the document fields', function () {
+ assert.property(this.builder.fieldVectors, 'title/id')
+ assert.instanceOf(this.builder.fieldVectors['title/id'], lunr.Vector)
+ })
+
+ test('skips fields not defined for indexing', function () {
+ assert.notProperty(this.builder.invertedIndex, 'missing')
+ })
+
+ test('builds a token set for the corpus', function () {
+ var needle = lunr.TokenSet.fromString('test')
+ assert.include(this.builder.tokenSet.intersect(needle).toArray(), 'test')
+ })
+
+ test('calculates document count', function () {
+ assert.equal(1, this.builder.documentCount)
+ })
+
+ test('calculates average field length', function () {
+ assert.equal(1, this.builder.averageFieldLength['title'])
+ })
+
+ test('index returned', function () {
+ var builder = new lunr.Builder,
+ doc = { id: 'id', title: 'test', body: 'missing' }
+
+ builder.ref('id')
+ builder.field('title')
+ builder.add(doc)
+ assert.instanceOf(builder.build(), lunr.Index)
+ })
+ })
+})
diff --git a/node_modules/lunr/test/env/chai.js b/node_modules/lunr/test/env/chai.js
new file mode 100644
index 0000000..1d30296
--- /dev/null
+++ b/node_modules/lunr/test/env/chai.js
@@ -0,0 +1,6142 @@
+(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.chai = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
+module.exports = require('./lib/chai');
+
+},{"./lib/chai":2}],2:[function(require,module,exports){
+/*!
+ * chai
+ * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+var used = []
+ , exports = module.exports = {};
+
+/*!
+ * Chai version
+ */
+
+exports.version = '3.5.0';
+
+/*!
+ * Assertion Error
+ */
+
+exports.AssertionError = require('assertion-error');
+
+/*!
+ * Utils for plugins (not exported)
+ */
+
+var util = require('./chai/utils');
+
+/**
+ * # .use(function)
+ *
+ * Provides a way to extend the internals of Chai
+ *
+ * @param {Function}
+ * @returns {this} for chaining
+ * @api public
+ */
+
+exports.use = function (fn) {
+ if (!~used.indexOf(fn)) {
+ fn(this, util);
+ used.push(fn);
+ }
+
+ return this;
+};
+
+/*!
+ * Utility Functions
+ */
+
+exports.util = util;
+
+/*!
+ * Configuration
+ */
+
+var config = require('./chai/config');
+exports.config = config;
+
+/*!
+ * Primary `Assertion` prototype
+ */
+
+var assertion = require('./chai/assertion');
+exports.use(assertion);
+
+/*!
+ * Core Assertions
+ */
+
+var core = require('./chai/core/assertions');
+exports.use(core);
+
+/*!
+ * Expect interface
+ */
+
+var expect = require('./chai/interface/expect');
+exports.use(expect);
+
+/*!
+ * Should interface
+ */
+
+var should = require('./chai/interface/should');
+exports.use(should);
+
+/*!
+ * Assert interface
+ */
+
+var assert = require('./chai/interface/assert');
+exports.use(assert);
+
+},{"./chai/assertion":3,"./chai/config":4,"./chai/core/assertions":5,"./chai/interface/assert":6,"./chai/interface/expect":7,"./chai/interface/should":8,"./chai/utils":22,"assertion-error":30}],3:[function(require,module,exports){
+/*!
+ * chai
+ * http://chaijs.com
+ * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+var config = require('./config');
+
+module.exports = function (_chai, util) {
+ /*!
+ * Module dependencies.
+ */
+
+ var AssertionError = _chai.AssertionError
+ , flag = util.flag;
+
+ /*!
+ * Module export.
+ */
+
+ _chai.Assertion = Assertion;
+
+ /*!
+ * Assertion Constructor
+ *
+ * Creates object for chaining.
+ *
+ * @api private
+ */
+
+ function Assertion (obj, msg, stack) {
+ flag(this, 'ssfi', stack || arguments.callee);
+ flag(this, 'object', obj);
+ flag(this, 'message', msg);
+ }
+
+ Object.defineProperty(Assertion, 'includeStack', {
+ get: function() {
+ console.warn('Assertion.includeStack is deprecated, use chai.config.includeStack instead.');
+ return config.includeStack;
+ },
+ set: function(value) {
+ console.warn('Assertion.includeStack is deprecated, use chai.config.includeStack instead.');
+ config.includeStack = value;
+ }
+ });
+
+ Object.defineProperty(Assertion, 'showDiff', {
+ get: function() {
+ console.warn('Assertion.showDiff is deprecated, use chai.config.showDiff instead.');
+ return config.showDiff;
+ },
+ set: function(value) {
+ console.warn('Assertion.showDiff is deprecated, use chai.config.showDiff instead.');
+ config.showDiff = value;
+ }
+ });
+
+ Assertion.addProperty = function (name, fn) {
+ util.addProperty(this.prototype, name, fn);
+ };
+
+ Assertion.addMethod = function (name, fn) {
+ util.addMethod(this.prototype, name, fn);
+ };
+
+ Assertion.addChainableMethod = function (name, fn, chainingBehavior) {
+ util.addChainableMethod(this.prototype, name, fn, chainingBehavior);
+ };
+
+ Assertion.overwriteProperty = function (name, fn) {
+ util.overwriteProperty(this.prototype, name, fn);
+ };
+
+ Assertion.overwriteMethod = function (name, fn) {
+ util.overwriteMethod(this.prototype, name, fn);
+ };
+
+ Assertion.overwriteChainableMethod = function (name, fn, chainingBehavior) {
+ util.overwriteChainableMethod(this.prototype, name, fn, chainingBehavior);
+ };
+
+ /**
+ * ### .assert(expression, message, negateMessage, expected, actual, showDiff)
+ *
+ * Executes an expression and check expectations. Throws AssertionError for reporting if test doesn't pass.
+ *
+ * @name assert
+ * @param {Philosophical} expression to be tested
+ * @param {String|Function} message or function that returns message to display if expression fails
+ * @param {String|Function} negatedMessage or function that returns negatedMessage to display if negated expression fails
+ * @param {Mixed} expected value (remember to check for negation)
+ * @param {Mixed} actual (optional) will default to `this.obj`
+ * @param {Boolean} showDiff (optional) when set to `true`, assert will display a diff in addition to the message if expression fails
+ * @api private
+ */
+
+ Assertion.prototype.assert = function (expr, msg, negateMsg, expected, _actual, showDiff) {
+ var ok = util.test(this, arguments);
+ if (true !== showDiff) showDiff = false;
+ if (true !== config.showDiff) showDiff = false;
+
+ if (!ok) {
+ var msg = util.getMessage(this, arguments)
+ , actual = util.getActual(this, arguments);
+ throw new AssertionError(msg, {
+ actual: actual
+ , expected: expected
+ , showDiff: showDiff
+ }, (config.includeStack) ? this.assert : flag(this, 'ssfi'));
+ }
+ };
+
+ /*!
+ * ### ._obj
+ *
+ * Quick reference to stored `actual` value for plugin developers.
+ *
+ * @api private
+ */
+
+ Object.defineProperty(Assertion.prototype, '_obj',
+ { get: function () {
+ return flag(this, 'object');
+ }
+ , set: function (val) {
+ flag(this, 'object', val);
+ }
+ });
+};
+
+},{"./config":4}],4:[function(require,module,exports){
+module.exports = {
+
+ /**
+ * ### config.includeStack
+ *
+ * User configurable property, influences whether stack trace
+ * is included in Assertion error message. Default of false
+ * suppresses stack trace in the error message.
+ *
+ * chai.config.includeStack = true; // enable stack on error
+ *
+ * @param {Boolean}
+ * @api public
+ */
+
+ includeStack: false,
+
+ /**
+ * ### config.showDiff
+ *
+ * User configurable property, influences whether or not
+ * the `showDiff` flag should be included in the thrown
+ * AssertionErrors. `false` will always be `false`; `true`
+ * will be true when the assertion has requested a diff
+ * be shown.
+ *
+ * @param {Boolean}
+ * @api public
+ */
+
+ showDiff: true,
+
+ /**
+ * ### config.truncateThreshold
+ *
+ * User configurable property, sets length threshold for actual and
+ * expected values in assertion errors. If this threshold is exceeded, for
+ * example for large data structures, the value is replaced with something
+ * like `[ Array(3) ]` or `{ Object (prop1, prop2) }`.
+ *
+ * Set it to zero if you want to disable truncating altogether.
+ *
+ * This is especially userful when doing assertions on arrays: having this
+ * set to a reasonable large value makes the failure messages readily
+ * inspectable.
+ *
+ * chai.config.truncateThreshold = 0; // disable truncating
+ *
+ * @param {Number}
+ * @api public
+ */
+
+ truncateThreshold: 40
+
+};
+
+},{}],5:[function(require,module,exports){
+/*!
+ * chai
+ * http://chaijs.com
+ * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+module.exports = function (chai, _) {
+ var Assertion = chai.Assertion
+ , toString = Object.prototype.toString
+ , flag = _.flag;
+
+ /**
+ * ### Language Chains
+ *
+ * The following are provided as chainable getters to
+ * improve the readability of your assertions. They
+ * do not provide testing capabilities unless they
+ * have been overwritten by a plugin.
+ *
+ * **Chains**
+ *
+ * - to
+ * - be
+ * - been
+ * - is
+ * - that
+ * - which
+ * - and
+ * - has
+ * - have
+ * - with
+ * - at
+ * - of
+ * - same
+ *
+ * @name language chains
+ * @namespace BDD
+ * @api public
+ */
+
+ [ 'to', 'be', 'been'
+ , 'is', 'and', 'has', 'have'
+ , 'with', 'that', 'which', 'at'
+ , 'of', 'same' ].forEach(function (chain) {
+ Assertion.addProperty(chain, function () {
+ return this;
+ });
+ });
+
+ /**
+ * ### .not
+ *
+ * Negates any of assertions following in the chain.
+ *
+ * expect(foo).to.not.equal('bar');
+ * expect(goodFn).to.not.throw(Error);
+ * expect({ foo: 'baz' }).to.have.property('foo')
+ * .and.not.equal('bar');
+ *
+ * @name not
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addProperty('not', function () {
+ flag(this, 'negate', true);
+ });
+
+ /**
+ * ### .deep
+ *
+ * Sets the `deep` flag, later used by the `equal` and
+ * `property` assertions.
+ *
+ * expect(foo).to.deep.equal({ bar: 'baz' });
+ * expect({ foo: { bar: { baz: 'quux' } } })
+ * .to.have.deep.property('foo.bar.baz', 'quux');
+ *
+ * `.deep.property` special characters can be escaped
+ * by adding two slashes before the `.` or `[]`.
+ *
+ * var deepCss = { '.link': { '[target]': 42 }};
+ * expect(deepCss).to.have.deep.property('\\.link.\\[target\\]', 42);
+ *
+ * @name deep
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addProperty('deep', function () {
+ flag(this, 'deep', true);
+ });
+
+ /**
+ * ### .any
+ *
+ * Sets the `any` flag, (opposite of the `all` flag)
+ * later used in the `keys` assertion.
+ *
+ * expect(foo).to.have.any.keys('bar', 'baz');
+ *
+ * @name any
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addProperty('any', function () {
+ flag(this, 'any', true);
+ flag(this, 'all', false)
+ });
+
+
+ /**
+ * ### .all
+ *
+ * Sets the `all` flag (opposite of the `any` flag)
+ * later used by the `keys` assertion.
+ *
+ * expect(foo).to.have.all.keys('bar', 'baz');
+ *
+ * @name all
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addProperty('all', function () {
+ flag(this, 'all', true);
+ flag(this, 'any', false);
+ });
+
+ /**
+ * ### .a(type)
+ *
+ * The `a` and `an` assertions are aliases that can be
+ * used either as language chains or to assert a value's
+ * type.
+ *
+ * // typeof
+ * expect('test').to.be.a('string');
+ * expect({ foo: 'bar' }).to.be.an('object');
+ * expect(null).to.be.a('null');
+ * expect(undefined).to.be.an('undefined');
+ * expect(new Error).to.be.an('error');
+ * expect(new Promise).to.be.a('promise');
+ * expect(new Float32Array()).to.be.a('float32array');
+ * expect(Symbol()).to.be.a('symbol');
+ *
+ * // es6 overrides
+ * expect({[Symbol.toStringTag]:()=>'foo'}).to.be.a('foo');
+ *
+ * // language chain
+ * expect(foo).to.be.an.instanceof(Foo);
+ *
+ * @name a
+ * @alias an
+ * @param {String} type
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function an (type, msg) {
+ if (msg) flag(this, 'message', msg);
+ type = type.toLowerCase();
+ var obj = flag(this, 'object')
+ , article = ~[ 'a', 'e', 'i', 'o', 'u' ].indexOf(type.charAt(0)) ? 'an ' : 'a ';
+
+ this.assert(
+ type === _.type(obj)
+ , 'expected #{this} to be ' + article + type
+ , 'expected #{this} not to be ' + article + type
+ );
+ }
+
+ Assertion.addChainableMethod('an', an);
+ Assertion.addChainableMethod('a', an);
+
+ /**
+ * ### .include(value)
+ *
+ * The `include` and `contain` assertions can be used as either property
+ * based language chains or as methods to assert the inclusion of an object
+ * in an array or a substring in a string. When used as language chains,
+ * they toggle the `contains` flag for the `keys` assertion.
+ *
+ * expect([1,2,3]).to.include(2);
+ * expect('foobar').to.contain('foo');
+ * expect({ foo: 'bar', hello: 'universe' }).to.include.keys('foo');
+ *
+ * @name include
+ * @alias contain
+ * @alias includes
+ * @alias contains
+ * @param {Object|String|Number} obj
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function includeChainingBehavior () {
+ flag(this, 'contains', true);
+ }
+
+ function include (val, msg) {
+ _.expectTypes(this, ['array', 'object', 'string']);
+
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object');
+ var expected = false;
+
+ if (_.type(obj) === 'array' && _.type(val) === 'object') {
+ for (var i in obj) {
+ if (_.eql(obj[i], val)) {
+ expected = true;
+ break;
+ }
+ }
+ } else if (_.type(val) === 'object') {
+ if (!flag(this, 'negate')) {
+ for (var k in val) new Assertion(obj).property(k, val[k]);
+ return;
+ }
+ var subset = {};
+ for (var k in val) subset[k] = obj[k];
+ expected = _.eql(subset, val);
+ } else {
+ expected = (obj != undefined) && ~obj.indexOf(val);
+ }
+ this.assert(
+ expected
+ , 'expected #{this} to include ' + _.inspect(val)
+ , 'expected #{this} to not include ' + _.inspect(val));
+ }
+
+ Assertion.addChainableMethod('include', include, includeChainingBehavior);
+ Assertion.addChainableMethod('contain', include, includeChainingBehavior);
+ Assertion.addChainableMethod('contains', include, includeChainingBehavior);
+ Assertion.addChainableMethod('includes', include, includeChainingBehavior);
+
+ /**
+ * ### .ok
+ *
+ * Asserts that the target is truthy.
+ *
+ * expect('everything').to.be.ok;
+ * expect(1).to.be.ok;
+ * expect(false).to.not.be.ok;
+ * expect(undefined).to.not.be.ok;
+ * expect(null).to.not.be.ok;
+ *
+ * @name ok
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addProperty('ok', function () {
+ this.assert(
+ flag(this, 'object')
+ , 'expected #{this} to be truthy'
+ , 'expected #{this} to be falsy');
+ });
+
+ /**
+ * ### .true
+ *
+ * Asserts that the target is `true`.
+ *
+ * expect(true).to.be.true;
+ * expect(1).to.not.be.true;
+ *
+ * @name true
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addProperty('true', function () {
+ this.assert(
+ true === flag(this, 'object')
+ , 'expected #{this} to be true'
+ , 'expected #{this} to be false'
+ , this.negate ? false : true
+ );
+ });
+
+ /**
+ * ### .false
+ *
+ * Asserts that the target is `false`.
+ *
+ * expect(false).to.be.false;
+ * expect(0).to.not.be.false;
+ *
+ * @name false
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addProperty('false', function () {
+ this.assert(
+ false === flag(this, 'object')
+ , 'expected #{this} to be false'
+ , 'expected #{this} to be true'
+ , this.negate ? true : false
+ );
+ });
+
+ /**
+ * ### .null
+ *
+ * Asserts that the target is `null`.
+ *
+ * expect(null).to.be.null;
+ * expect(undefined).to.not.be.null;
+ *
+ * @name null
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addProperty('null', function () {
+ this.assert(
+ null === flag(this, 'object')
+ , 'expected #{this} to be null'
+ , 'expected #{this} not to be null'
+ );
+ });
+
+ /**
+ * ### .undefined
+ *
+ * Asserts that the target is `undefined`.
+ *
+ * expect(undefined).to.be.undefined;
+ * expect(null).to.not.be.undefined;
+ *
+ * @name undefined
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addProperty('undefined', function () {
+ this.assert(
+ undefined === flag(this, 'object')
+ , 'expected #{this} to be undefined'
+ , 'expected #{this} not to be undefined'
+ );
+ });
+
+ /**
+ * ### .NaN
+ * Asserts that the target is `NaN`.
+ *
+ * expect('foo').to.be.NaN;
+ * expect(4).not.to.be.NaN;
+ *
+ * @name NaN
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addProperty('NaN', function () {
+ this.assert(
+ isNaN(flag(this, 'object'))
+ , 'expected #{this} to be NaN'
+ , 'expected #{this} not to be NaN'
+ );
+ });
+
+ /**
+ * ### .exist
+ *
+ * Asserts that the target is neither `null` nor `undefined`.
+ *
+ * var foo = 'hi'
+ * , bar = null
+ * , baz;
+ *
+ * expect(foo).to.exist;
+ * expect(bar).to.not.exist;
+ * expect(baz).to.not.exist;
+ *
+ * @name exist
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addProperty('exist', function () {
+ this.assert(
+ null != flag(this, 'object')
+ , 'expected #{this} to exist'
+ , 'expected #{this} to not exist'
+ );
+ });
+
+
+ /**
+ * ### .empty
+ *
+ * Asserts that the target's length is `0`. For arrays and strings, it checks
+ * the `length` property. For objects, it gets the count of
+ * enumerable keys.
+ *
+ * expect([]).to.be.empty;
+ * expect('').to.be.empty;
+ * expect({}).to.be.empty;
+ *
+ * @name empty
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addProperty('empty', function () {
+ var obj = flag(this, 'object')
+ , expected = obj;
+
+ if (Array.isArray(obj) || 'string' === typeof object) {
+ expected = obj.length;
+ } else if (typeof obj === 'object') {
+ expected = Object.keys(obj).length;
+ }
+
+ this.assert(
+ !expected
+ , 'expected #{this} to be empty'
+ , 'expected #{this} not to be empty'
+ );
+ });
+
+ /**
+ * ### .arguments
+ *
+ * Asserts that the target is an arguments object.
+ *
+ * function test () {
+ * expect(arguments).to.be.arguments;
+ * }
+ *
+ * @name arguments
+ * @alias Arguments
+ * @namespace BDD
+ * @api public
+ */
+
+ function checkArguments () {
+ var obj = flag(this, 'object')
+ , type = Object.prototype.toString.call(obj);
+ this.assert(
+ '[object Arguments]' === type
+ , 'expected #{this} to be arguments but got ' + type
+ , 'expected #{this} to not be arguments'
+ );
+ }
+
+ Assertion.addProperty('arguments', checkArguments);
+ Assertion.addProperty('Arguments', checkArguments);
+
+ /**
+ * ### .equal(value)
+ *
+ * Asserts that the target is strictly equal (`===`) to `value`.
+ * Alternately, if the `deep` flag is set, asserts that
+ * the target is deeply equal to `value`.
+ *
+ * expect('hello').to.equal('hello');
+ * expect(42).to.equal(42);
+ * expect(1).to.not.equal(true);
+ * expect({ foo: 'bar' }).to.not.equal({ foo: 'bar' });
+ * expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' });
+ *
+ * @name equal
+ * @alias equals
+ * @alias eq
+ * @alias deep.equal
+ * @param {Mixed} value
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function assertEqual (val, msg) {
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object');
+ if (flag(this, 'deep')) {
+ return this.eql(val);
+ } else {
+ this.assert(
+ val === obj
+ , 'expected #{this} to equal #{exp}'
+ , 'expected #{this} to not equal #{exp}'
+ , val
+ , this._obj
+ , true
+ );
+ }
+ }
+
+ Assertion.addMethod('equal', assertEqual);
+ Assertion.addMethod('equals', assertEqual);
+ Assertion.addMethod('eq', assertEqual);
+
+ /**
+ * ### .eql(value)
+ *
+ * Asserts that the target is deeply equal to `value`.
+ *
+ * expect({ foo: 'bar' }).to.eql({ foo: 'bar' });
+ * expect([ 1, 2, 3 ]).to.eql([ 1, 2, 3 ]);
+ *
+ * @name eql
+ * @alias eqls
+ * @param {Mixed} value
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function assertEql(obj, msg) {
+ if (msg) flag(this, 'message', msg);
+ this.assert(
+ _.eql(obj, flag(this, 'object'))
+ , 'expected #{this} to deeply equal #{exp}'
+ , 'expected #{this} to not deeply equal #{exp}'
+ , obj
+ , this._obj
+ , true
+ );
+ }
+
+ Assertion.addMethod('eql', assertEql);
+ Assertion.addMethod('eqls', assertEql);
+
+ /**
+ * ### .above(value)
+ *
+ * Asserts that the target is greater than `value`.
+ *
+ * expect(10).to.be.above(5);
+ *
+ * Can also be used in conjunction with `length` to
+ * assert a minimum length. The benefit being a
+ * more informative error message than if the length
+ * was supplied directly.
+ *
+ * expect('foo').to.have.length.above(2);
+ * expect([ 1, 2, 3 ]).to.have.length.above(2);
+ *
+ * @name above
+ * @alias gt
+ * @alias greaterThan
+ * @param {Number} value
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function assertAbove (n, msg) {
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object');
+ if (flag(this, 'doLength')) {
+ new Assertion(obj, msg).to.have.property('length');
+ var len = obj.length;
+ this.assert(
+ len > n
+ , 'expected #{this} to have a length above #{exp} but got #{act}'
+ , 'expected #{this} to not have a length above #{exp}'
+ , n
+ , len
+ );
+ } else {
+ this.assert(
+ obj > n
+ , 'expected #{this} to be above ' + n
+ , 'expected #{this} to be at most ' + n
+ );
+ }
+ }
+
+ Assertion.addMethod('above', assertAbove);
+ Assertion.addMethod('gt', assertAbove);
+ Assertion.addMethod('greaterThan', assertAbove);
+
+ /**
+ * ### .least(value)
+ *
+ * Asserts that the target is greater than or equal to `value`.
+ *
+ * expect(10).to.be.at.least(10);
+ *
+ * Can also be used in conjunction with `length` to
+ * assert a minimum length. The benefit being a
+ * more informative error message than if the length
+ * was supplied directly.
+ *
+ * expect('foo').to.have.length.of.at.least(2);
+ * expect([ 1, 2, 3 ]).to.have.length.of.at.least(3);
+ *
+ * @name least
+ * @alias gte
+ * @param {Number} value
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function assertLeast (n, msg) {
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object');
+ if (flag(this, 'doLength')) {
+ new Assertion(obj, msg).to.have.property('length');
+ var len = obj.length;
+ this.assert(
+ len >= n
+ , 'expected #{this} to have a length at least #{exp} but got #{act}'
+ , 'expected #{this} to have a length below #{exp}'
+ , n
+ , len
+ );
+ } else {
+ this.assert(
+ obj >= n
+ , 'expected #{this} to be at least ' + n
+ , 'expected #{this} to be below ' + n
+ );
+ }
+ }
+
+ Assertion.addMethod('least', assertLeast);
+ Assertion.addMethod('gte', assertLeast);
+
+ /**
+ * ### .below(value)
+ *
+ * Asserts that the target is less than `value`.
+ *
+ * expect(5).to.be.below(10);
+ *
+ * Can also be used in conjunction with `length` to
+ * assert a maximum length. The benefit being a
+ * more informative error message than if the length
+ * was supplied directly.
+ *
+ * expect('foo').to.have.length.below(4);
+ * expect([ 1, 2, 3 ]).to.have.length.below(4);
+ *
+ * @name below
+ * @alias lt
+ * @alias lessThan
+ * @param {Number} value
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function assertBelow (n, msg) {
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object');
+ if (flag(this, 'doLength')) {
+ new Assertion(obj, msg).to.have.property('length');
+ var len = obj.length;
+ this.assert(
+ len < n
+ , 'expected #{this} to have a length below #{exp} but got #{act}'
+ , 'expected #{this} to not have a length below #{exp}'
+ , n
+ , len
+ );
+ } else {
+ this.assert(
+ obj < n
+ , 'expected #{this} to be below ' + n
+ , 'expected #{this} to be at least ' + n
+ );
+ }
+ }
+
+ Assertion.addMethod('below', assertBelow);
+ Assertion.addMethod('lt', assertBelow);
+ Assertion.addMethod('lessThan', assertBelow);
+
+ /**
+ * ### .most(value)
+ *
+ * Asserts that the target is less than or equal to `value`.
+ *
+ * expect(5).to.be.at.most(5);
+ *
+ * Can also be used in conjunction with `length` to
+ * assert a maximum length. The benefit being a
+ * more informative error message than if the length
+ * was supplied directly.
+ *
+ * expect('foo').to.have.length.of.at.most(4);
+ * expect([ 1, 2, 3 ]).to.have.length.of.at.most(3);
+ *
+ * @name most
+ * @alias lte
+ * @param {Number} value
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function assertMost (n, msg) {
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object');
+ if (flag(this, 'doLength')) {
+ new Assertion(obj, msg).to.have.property('length');
+ var len = obj.length;
+ this.assert(
+ len <= n
+ , 'expected #{this} to have a length at most #{exp} but got #{act}'
+ , 'expected #{this} to have a length above #{exp}'
+ , n
+ , len
+ );
+ } else {
+ this.assert(
+ obj <= n
+ , 'expected #{this} to be at most ' + n
+ , 'expected #{this} to be above ' + n
+ );
+ }
+ }
+
+ Assertion.addMethod('most', assertMost);
+ Assertion.addMethod('lte', assertMost);
+
+ /**
+ * ### .within(start, finish)
+ *
+ * Asserts that the target is within a range.
+ *
+ * expect(7).to.be.within(5,10);
+ *
+ * Can also be used in conjunction with `length` to
+ * assert a length range. The benefit being a
+ * more informative error message than if the length
+ * was supplied directly.
+ *
+ * expect('foo').to.have.length.within(2,4);
+ * expect([ 1, 2, 3 ]).to.have.length.within(2,4);
+ *
+ * @name within
+ * @param {Number} start lowerbound inclusive
+ * @param {Number} finish upperbound inclusive
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addMethod('within', function (start, finish, msg) {
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object')
+ , range = start + '..' + finish;
+ if (flag(this, 'doLength')) {
+ new Assertion(obj, msg).to.have.property('length');
+ var len = obj.length;
+ this.assert(
+ len >= start && len <= finish
+ , 'expected #{this} to have a length within ' + range
+ , 'expected #{this} to not have a length within ' + range
+ );
+ } else {
+ this.assert(
+ obj >= start && obj <= finish
+ , 'expected #{this} to be within ' + range
+ , 'expected #{this} to not be within ' + range
+ );
+ }
+ });
+
+ /**
+ * ### .instanceof(constructor)
+ *
+ * Asserts that the target is an instance of `constructor`.
+ *
+ * var Tea = function (name) { this.name = name; }
+ * , Chai = new Tea('chai');
+ *
+ * expect(Chai).to.be.an.instanceof(Tea);
+ * expect([ 1, 2, 3 ]).to.be.instanceof(Array);
+ *
+ * @name instanceof
+ * @param {Constructor} constructor
+ * @param {String} message _optional_
+ * @alias instanceOf
+ * @namespace BDD
+ * @api public
+ */
+
+ function assertInstanceOf (constructor, msg) {
+ if (msg) flag(this, 'message', msg);
+ var name = _.getName(constructor);
+ this.assert(
+ flag(this, 'object') instanceof constructor
+ , 'expected #{this} to be an instance of ' + name
+ , 'expected #{this} to not be an instance of ' + name
+ );
+ };
+
+ Assertion.addMethod('instanceof', assertInstanceOf);
+ Assertion.addMethod('instanceOf', assertInstanceOf);
+
+ /**
+ * ### .property(name, [value])
+ *
+ * Asserts that the target has a property `name`, optionally asserting that
+ * the value of that property is strictly equal to `value`.
+ * If the `deep` flag is set, you can use dot- and bracket-notation for deep
+ * references into objects and arrays.
+ *
+ * // simple referencing
+ * var obj = { foo: 'bar' };
+ * expect(obj).to.have.property('foo');
+ * expect(obj).to.have.property('foo', 'bar');
+ *
+ * // deep referencing
+ * var deepObj = {
+ * green: { tea: 'matcha' }
+ * , teas: [ 'chai', 'matcha', { tea: 'konacha' } ]
+ * };
+ *
+ * expect(deepObj).to.have.deep.property('green.tea', 'matcha');
+ * expect(deepObj).to.have.deep.property('teas[1]', 'matcha');
+ * expect(deepObj).to.have.deep.property('teas[2].tea', 'konacha');
+ *
+ * You can also use an array as the starting point of a `deep.property`
+ * assertion, or traverse nested arrays.
+ *
+ * var arr = [
+ * [ 'chai', 'matcha', 'konacha' ]
+ * , [ { tea: 'chai' }
+ * , { tea: 'matcha' }
+ * , { tea: 'konacha' } ]
+ * ];
+ *
+ * expect(arr).to.have.deep.property('[0][1]', 'matcha');
+ * expect(arr).to.have.deep.property('[1][2].tea', 'konacha');
+ *
+ * Furthermore, `property` changes the subject of the assertion
+ * to be the value of that property from the original object. This
+ * permits for further chainable assertions on that property.
+ *
+ * expect(obj).to.have.property('foo')
+ * .that.is.a('string');
+ * expect(deepObj).to.have.property('green')
+ * .that.is.an('object')
+ * .that.deep.equals({ tea: 'matcha' });
+ * expect(deepObj).to.have.property('teas')
+ * .that.is.an('array')
+ * .with.deep.property('[2]')
+ * .that.deep.equals({ tea: 'konacha' });
+ *
+ * Note that dots and bracket in `name` must be backslash-escaped when
+ * the `deep` flag is set, while they must NOT be escaped when the `deep`
+ * flag is not set.
+ *
+ * // simple referencing
+ * var css = { '.link[target]': 42 };
+ * expect(css).to.have.property('.link[target]', 42);
+ *
+ * // deep referencing
+ * var deepCss = { '.link': { '[target]': 42 }};
+ * expect(deepCss).to.have.deep.property('\\.link.\\[target\\]', 42);
+ *
+ * @name property
+ * @alias deep.property
+ * @param {String} name
+ * @param {Mixed} value (optional)
+ * @param {String} message _optional_
+ * @returns value of property for chaining
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addMethod('property', function (name, val, msg) {
+ if (msg) flag(this, 'message', msg);
+
+ var isDeep = !!flag(this, 'deep')
+ , descriptor = isDeep ? 'deep property ' : 'property '
+ , negate = flag(this, 'negate')
+ , obj = flag(this, 'object')
+ , pathInfo = isDeep ? _.getPathInfo(name, obj) : null
+ , hasProperty = isDeep
+ ? pathInfo.exists
+ : _.hasProperty(name, obj)
+ , value = isDeep
+ ? pathInfo.value
+ : obj[name];
+
+ if (negate && arguments.length > 1) {
+ if (undefined === value) {
+ msg = (msg != null) ? msg + ': ' : '';
+ throw new Error(msg + _.inspect(obj) + ' has no ' + descriptor + _.inspect(name));
+ }
+ } else {
+ this.assert(
+ hasProperty
+ , 'expected #{this} to have a ' + descriptor + _.inspect(name)
+ , 'expected #{this} to not have ' + descriptor + _.inspect(name));
+ }
+
+ if (arguments.length > 1) {
+ this.assert(
+ val === value
+ , 'expected #{this} to have a ' + descriptor + _.inspect(name) + ' of #{exp}, but got #{act}'
+ , 'expected #{this} to not have a ' + descriptor + _.inspect(name) + ' of #{act}'
+ , val
+ , value
+ );
+ }
+
+ flag(this, 'object', value);
+ });
+
+
+ /**
+ * ### .ownProperty(name)
+ *
+ * Asserts that the target has an own property `name`.
+ *
+ * expect('test').to.have.ownProperty('length');
+ *
+ * @name ownProperty
+ * @alias haveOwnProperty
+ * @param {String} name
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function assertOwnProperty (name, msg) {
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object');
+ this.assert(
+ obj.hasOwnProperty(name)
+ , 'expected #{this} to have own property ' + _.inspect(name)
+ , 'expected #{this} to not have own property ' + _.inspect(name)
+ );
+ }
+
+ Assertion.addMethod('ownProperty', assertOwnProperty);
+ Assertion.addMethod('haveOwnProperty', assertOwnProperty);
+
+ /**
+ * ### .ownPropertyDescriptor(name[, descriptor[, message]])
+ *
+ * Asserts that the target has an own property descriptor `name`, that optionally matches `descriptor`.
+ *
+ * expect('test').to.have.ownPropertyDescriptor('length');
+ * expect('test').to.have.ownPropertyDescriptor('length', { enumerable: false, configurable: false, writable: false, value: 4 });
+ * expect('test').not.to.have.ownPropertyDescriptor('length', { enumerable: false, configurable: false, writable: false, value: 3 });
+ * expect('test').ownPropertyDescriptor('length').to.have.property('enumerable', false);
+ * expect('test').ownPropertyDescriptor('length').to.have.keys('value');
+ *
+ * @name ownPropertyDescriptor
+ * @alias haveOwnPropertyDescriptor
+ * @param {String} name
+ * @param {Object} descriptor _optional_
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function assertOwnPropertyDescriptor (name, descriptor, msg) {
+ if (typeof descriptor === 'string') {
+ msg = descriptor;
+ descriptor = null;
+ }
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object');
+ var actualDescriptor = Object.getOwnPropertyDescriptor(Object(obj), name);
+ if (actualDescriptor && descriptor) {
+ this.assert(
+ _.eql(descriptor, actualDescriptor)
+ , 'expected the own property descriptor for ' + _.inspect(name) + ' on #{this} to match ' + _.inspect(descriptor) + ', got ' + _.inspect(actualDescriptor)
+ , 'expected the own property descriptor for ' + _.inspect(name) + ' on #{this} to not match ' + _.inspect(descriptor)
+ , descriptor
+ , actualDescriptor
+ , true
+ );
+ } else {
+ this.assert(
+ actualDescriptor
+ , 'expected #{this} to have an own property descriptor for ' + _.inspect(name)
+ , 'expected #{this} to not have an own property descriptor for ' + _.inspect(name)
+ );
+ }
+ flag(this, 'object', actualDescriptor);
+ }
+
+ Assertion.addMethod('ownPropertyDescriptor', assertOwnPropertyDescriptor);
+ Assertion.addMethod('haveOwnPropertyDescriptor', assertOwnPropertyDescriptor);
+
+ /**
+ * ### .length
+ *
+ * Sets the `doLength` flag later used as a chain precursor to a value
+ * comparison for the `length` property.
+ *
+ * expect('foo').to.have.length.above(2);
+ * expect([ 1, 2, 3 ]).to.have.length.above(2);
+ * expect('foo').to.have.length.below(4);
+ * expect([ 1, 2, 3 ]).to.have.length.below(4);
+ * expect('foo').to.have.length.within(2,4);
+ * expect([ 1, 2, 3 ]).to.have.length.within(2,4);
+ *
+ * *Deprecation notice:* Using `length` as an assertion will be deprecated
+ * in version 2.4.0 and removed in 3.0.0. Code using the old style of
+ * asserting for `length` property value using `length(value)` should be
+ * switched to use `lengthOf(value)` instead.
+ *
+ * @name length
+ * @namespace BDD
+ * @api public
+ */
+
+ /**
+ * ### .lengthOf(value[, message])
+ *
+ * Asserts that the target's `length` property has
+ * the expected value.
+ *
+ * expect([ 1, 2, 3]).to.have.lengthOf(3);
+ * expect('foobar').to.have.lengthOf(6);
+ *
+ * @name lengthOf
+ * @param {Number} length
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function assertLengthChain () {
+ flag(this, 'doLength', true);
+ }
+
+ function assertLength (n, msg) {
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object');
+ new Assertion(obj, msg).to.have.property('length');
+ var len = obj.length;
+
+ this.assert(
+ len == n
+ , 'expected #{this} to have a length of #{exp} but got #{act}'
+ , 'expected #{this} to not have a length of #{act}'
+ , n
+ , len
+ );
+ }
+
+ Assertion.addChainableMethod('length', assertLength, assertLengthChain);
+ Assertion.addMethod('lengthOf', assertLength);
+
+ /**
+ * ### .match(regexp)
+ *
+ * Asserts that the target matches a regular expression.
+ *
+ * expect('foobar').to.match(/^foo/);
+ *
+ * @name match
+ * @alias matches
+ * @param {RegExp} RegularExpression
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+ function assertMatch(re, msg) {
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object');
+ this.assert(
+ re.exec(obj)
+ , 'expected #{this} to match ' + re
+ , 'expected #{this} not to match ' + re
+ );
+ }
+
+ Assertion.addMethod('match', assertMatch);
+ Assertion.addMethod('matches', assertMatch);
+
+ /**
+ * ### .string(string)
+ *
+ * Asserts that the string target contains another string.
+ *
+ * expect('foobar').to.have.string('bar');
+ *
+ * @name string
+ * @param {String} string
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addMethod('string', function (str, msg) {
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object');
+ new Assertion(obj, msg).is.a('string');
+
+ this.assert(
+ ~obj.indexOf(str)
+ , 'expected #{this} to contain ' + _.inspect(str)
+ , 'expected #{this} to not contain ' + _.inspect(str)
+ );
+ });
+
+
+ /**
+ * ### .keys(key1, [key2], [...])
+ *
+ * Asserts that the target contains any or all of the passed-in keys.
+ * Use in combination with `any`, `all`, `contains`, or `have` will affect
+ * what will pass.
+ *
+ * When used in conjunction with `any`, at least one key that is passed
+ * in must exist in the target object. This is regardless whether or not
+ * the `have` or `contain` qualifiers are used. Note, either `any` or `all`
+ * should be used in the assertion. If neither are used, the assertion is
+ * defaulted to `all`.
+ *
+ * When both `all` and `contain` are used, the target object must have at
+ * least all of the passed-in keys but may have more keys not listed.
+ *
+ * When both `all` and `have` are used, the target object must both contain
+ * all of the passed-in keys AND the number of keys in the target object must
+ * match the number of keys passed in (in other words, a target object must
+ * have all and only all of the passed-in keys).
+ *
+ * expect({ foo: 1, bar: 2 }).to.have.any.keys('foo', 'baz');
+ * expect({ foo: 1, bar: 2 }).to.have.any.keys('foo');
+ * expect({ foo: 1, bar: 2 }).to.contain.any.keys('bar', 'baz');
+ * expect({ foo: 1, bar: 2 }).to.contain.any.keys(['foo']);
+ * expect({ foo: 1, bar: 2 }).to.contain.any.keys({'foo': 6});
+ * expect({ foo: 1, bar: 2 }).to.have.all.keys(['bar', 'foo']);
+ * expect({ foo: 1, bar: 2 }).to.have.all.keys({'bar': 6, 'foo': 7});
+ * expect({ foo: 1, bar: 2, baz: 3 }).to.contain.all.keys(['bar', 'foo']);
+ * expect({ foo: 1, bar: 2, baz: 3 }).to.contain.all.keys({'bar': 6});
+ *
+ *
+ * @name keys
+ * @alias key
+ * @param {...String|Array|Object} keys
+ * @namespace BDD
+ * @api public
+ */
+
+ function assertKeys (keys) {
+ var obj = flag(this, 'object')
+ , str
+ , ok = true
+ , mixedArgsMsg = 'keys must be given single argument of Array|Object|String, or multiple String arguments';
+
+ switch (_.type(keys)) {
+ case "array":
+ if (arguments.length > 1) throw (new Error(mixedArgsMsg));
+ break;
+ case "object":
+ if (arguments.length > 1) throw (new Error(mixedArgsMsg));
+ keys = Object.keys(keys);
+ break;
+ default:
+ keys = Array.prototype.slice.call(arguments);
+ }
+
+ if (!keys.length) throw new Error('keys required');
+
+ var actual = Object.keys(obj)
+ , expected = keys
+ , len = keys.length
+ , any = flag(this, 'any')
+ , all = flag(this, 'all');
+
+ if (!any && !all) {
+ all = true;
+ }
+
+ // Has any
+ if (any) {
+ var intersection = expected.filter(function(key) {
+ return ~actual.indexOf(key);
+ });
+ ok = intersection.length > 0;
+ }
+
+ // Has all
+ if (all) {
+ ok = keys.every(function(key){
+ return ~actual.indexOf(key);
+ });
+ if (!flag(this, 'negate') && !flag(this, 'contains')) {
+ ok = ok && keys.length == actual.length;
+ }
+ }
+
+ // Key string
+ if (len > 1) {
+ keys = keys.map(function(key){
+ return _.inspect(key);
+ });
+ var last = keys.pop();
+ if (all) {
+ str = keys.join(', ') + ', and ' + last;
+ }
+ if (any) {
+ str = keys.join(', ') + ', or ' + last;
+ }
+ } else {
+ str = _.inspect(keys[0]);
+ }
+
+ // Form
+ str = (len > 1 ? 'keys ' : 'key ') + str;
+
+ // Have / include
+ str = (flag(this, 'contains') ? 'contain ' : 'have ') + str;
+
+ // Assertion
+ this.assert(
+ ok
+ , 'expected #{this} to ' + str
+ , 'expected #{this} to not ' + str
+ , expected.slice(0).sort()
+ , actual.sort()
+ , true
+ );
+ }
+
+ Assertion.addMethod('keys', assertKeys);
+ Assertion.addMethod('key', assertKeys);
+
+ /**
+ * ### .throw(constructor)
+ *
+ * Asserts that the function target will throw a specific error, or specific type of error
+ * (as determined using `instanceof`), optionally with a RegExp or string inclusion test
+ * for the error's message.
+ *
+ * var err = new ReferenceError('This is a bad function.');
+ * var fn = function () { throw err; }
+ * expect(fn).to.throw(ReferenceError);
+ * expect(fn).to.throw(Error);
+ * expect(fn).to.throw(/bad function/);
+ * expect(fn).to.not.throw('good function');
+ * expect(fn).to.throw(ReferenceError, /bad function/);
+ * expect(fn).to.throw(err);
+ *
+ * Please note that when a throw expectation is negated, it will check each
+ * parameter independently, starting with error constructor type. The appropriate way
+ * to check for the existence of a type of error but for a message that does not match
+ * is to use `and`.
+ *
+ * expect(fn).to.throw(ReferenceError)
+ * .and.not.throw(/good function/);
+ *
+ * @name throw
+ * @alias throws
+ * @alias Throw
+ * @param {ErrorConstructor} constructor
+ * @param {String|RegExp} expected error message
+ * @param {String} message _optional_
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types
+ * @returns error for chaining (null if no error)
+ * @namespace BDD
+ * @api public
+ */
+
+ function assertThrows (constructor, errMsg, msg) {
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object');
+ new Assertion(obj, msg).is.a('function');
+
+ var thrown = false
+ , desiredError = null
+ , name = null
+ , thrownError = null;
+
+ if (arguments.length === 0) {
+ errMsg = null;
+ constructor = null;
+ } else if (constructor && (constructor instanceof RegExp || 'string' === typeof constructor)) {
+ errMsg = constructor;
+ constructor = null;
+ } else if (constructor && constructor instanceof Error) {
+ desiredError = constructor;
+ constructor = null;
+ errMsg = null;
+ } else if (typeof constructor === 'function') {
+ name = constructor.prototype.name;
+ if (!name || (name === 'Error' && constructor !== Error)) {
+ name = constructor.name || (new constructor()).name;
+ }
+ } else {
+ constructor = null;
+ }
+
+ try {
+ obj();
+ } catch (err) {
+ // first, check desired error
+ if (desiredError) {
+ this.assert(
+ err === desiredError
+ , 'expected #{this} to throw #{exp} but #{act} was thrown'
+ , 'expected #{this} to not throw #{exp}'
+ , (desiredError instanceof Error ? desiredError.toString() : desiredError)
+ , (err instanceof Error ? err.toString() : err)
+ );
+
+ flag(this, 'object', err);
+ return this;
+ }
+
+ // next, check constructor
+ if (constructor) {
+ this.assert(
+ err instanceof constructor
+ , 'expected #{this} to throw #{exp} but #{act} was thrown'
+ , 'expected #{this} to not throw #{exp} but #{act} was thrown'
+ , name
+ , (err instanceof Error ? err.toString() : err)
+ );
+
+ if (!errMsg) {
+ flag(this, 'object', err);
+ return this;
+ }
+ }
+
+ // next, check message
+ var message = 'error' === _.type(err) && "message" in err
+ ? err.message
+ : '' + err;
+
+ if ((message != null) && errMsg && errMsg instanceof RegExp) {
+ this.assert(
+ errMsg.exec(message)
+ , 'expected #{this} to throw error matching #{exp} but got #{act}'
+ , 'expected #{this} to throw error not matching #{exp}'
+ , errMsg
+ , message
+ );
+
+ flag(this, 'object', err);
+ return this;
+ } else if ((message != null) && errMsg && 'string' === typeof errMsg) {
+ this.assert(
+ ~message.indexOf(errMsg)
+ , 'expected #{this} to throw error including #{exp} but got #{act}'
+ , 'expected #{this} to throw error not including #{act}'
+ , errMsg
+ , message
+ );
+
+ flag(this, 'object', err);
+ return this;
+ } else {
+ thrown = true;
+ thrownError = err;
+ }
+ }
+
+ var actuallyGot = ''
+ , expectedThrown = name !== null
+ ? name
+ : desiredError
+ ? '#{exp}' //_.inspect(desiredError)
+ : 'an error';
+
+ if (thrown) {
+ actuallyGot = ' but #{act} was thrown'
+ }
+
+ this.assert(
+ thrown === true
+ , 'expected #{this} to throw ' + expectedThrown + actuallyGot
+ , 'expected #{this} to not throw ' + expectedThrown + actuallyGot
+ , (desiredError instanceof Error ? desiredError.toString() : desiredError)
+ , (thrownError instanceof Error ? thrownError.toString() : thrownError)
+ );
+
+ flag(this, 'object', thrownError);
+ };
+
+ Assertion.addMethod('throw', assertThrows);
+ Assertion.addMethod('throws', assertThrows);
+ Assertion.addMethod('Throw', assertThrows);
+
+ /**
+ * ### .respondTo(method)
+ *
+ * Asserts that the object or class target will respond to a method.
+ *
+ * Klass.prototype.bar = function(){};
+ * expect(Klass).to.respondTo('bar');
+ * expect(obj).to.respondTo('bar');
+ *
+ * To check if a constructor will respond to a static function,
+ * set the `itself` flag.
+ *
+ * Klass.baz = function(){};
+ * expect(Klass).itself.to.respondTo('baz');
+ *
+ * @name respondTo
+ * @alias respondsTo
+ * @param {String} method
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function respondTo (method, msg) {
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object')
+ , itself = flag(this, 'itself')
+ , context = ('function' === _.type(obj) && !itself)
+ ? obj.prototype[method]
+ : obj[method];
+
+ this.assert(
+ 'function' === typeof context
+ , 'expected #{this} to respond to ' + _.inspect(method)
+ , 'expected #{this} to not respond to ' + _.inspect(method)
+ );
+ }
+
+ Assertion.addMethod('respondTo', respondTo);
+ Assertion.addMethod('respondsTo', respondTo);
+
+ /**
+ * ### .itself
+ *
+ * Sets the `itself` flag, later used by the `respondTo` assertion.
+ *
+ * function Foo() {}
+ * Foo.bar = function() {}
+ * Foo.prototype.baz = function() {}
+ *
+ * expect(Foo).itself.to.respondTo('bar');
+ * expect(Foo).itself.not.to.respondTo('baz');
+ *
+ * @name itself
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addProperty('itself', function () {
+ flag(this, 'itself', true);
+ });
+
+ /**
+ * ### .satisfy(method)
+ *
+ * Asserts that the target passes a given truth test.
+ *
+ * expect(1).to.satisfy(function(num) { return num > 0; });
+ *
+ * @name satisfy
+ * @alias satisfies
+ * @param {Function} matcher
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function satisfy (matcher, msg) {
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object');
+ var result = matcher(obj);
+ this.assert(
+ result
+ , 'expected #{this} to satisfy ' + _.objDisplay(matcher)
+ , 'expected #{this} to not satisfy' + _.objDisplay(matcher)
+ , this.negate ? false : true
+ , result
+ );
+ }
+
+ Assertion.addMethod('satisfy', satisfy);
+ Assertion.addMethod('satisfies', satisfy);
+
+ /**
+ * ### .closeTo(expected, delta)
+ *
+ * Asserts that the target is equal `expected`, to within a +/- `delta` range.
+ *
+ * expect(1.5).to.be.closeTo(1, 0.5);
+ *
+ * @name closeTo
+ * @alias approximately
+ * @param {Number} expected
+ * @param {Number} delta
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function closeTo(expected, delta, msg) {
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object');
+
+ new Assertion(obj, msg).is.a('number');
+ if (_.type(expected) !== 'number' || _.type(delta) !== 'number') {
+ throw new Error('the arguments to closeTo or approximately must be numbers');
+ }
+
+ this.assert(
+ Math.abs(obj - expected) <= delta
+ , 'expected #{this} to be close to ' + expected + ' +/- ' + delta
+ , 'expected #{this} not to be close to ' + expected + ' +/- ' + delta
+ );
+ }
+
+ Assertion.addMethod('closeTo', closeTo);
+ Assertion.addMethod('approximately', closeTo);
+
+ function isSubsetOf(subset, superset, cmp) {
+ return subset.every(function(elem) {
+ if (!cmp) return superset.indexOf(elem) !== -1;
+
+ return superset.some(function(elem2) {
+ return cmp(elem, elem2);
+ });
+ })
+ }
+
+ /**
+ * ### .members(set)
+ *
+ * Asserts that the target is a superset of `set`,
+ * or that the target and `set` have the same strictly-equal (===) members.
+ * Alternately, if the `deep` flag is set, set members are compared for deep
+ * equality.
+ *
+ * expect([1, 2, 3]).to.include.members([3, 2]);
+ * expect([1, 2, 3]).to.not.include.members([3, 2, 8]);
+ *
+ * expect([4, 2]).to.have.members([2, 4]);
+ * expect([5, 2]).to.not.have.members([5, 2, 1]);
+ *
+ * expect([{ id: 1 }]).to.deep.include.members([{ id: 1 }]);
+ *
+ * @name members
+ * @param {Array} set
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addMethod('members', function (subset, msg) {
+ if (msg) flag(this, 'message', msg);
+ var obj = flag(this, 'object');
+
+ new Assertion(obj).to.be.an('array');
+ new Assertion(subset).to.be.an('array');
+
+ var cmp = flag(this, 'deep') ? _.eql : undefined;
+
+ if (flag(this, 'contains')) {
+ return this.assert(
+ isSubsetOf(subset, obj, cmp)
+ , 'expected #{this} to be a superset of #{act}'
+ , 'expected #{this} to not be a superset of #{act}'
+ , obj
+ , subset
+ );
+ }
+
+ this.assert(
+ isSubsetOf(obj, subset, cmp) && isSubsetOf(subset, obj, cmp)
+ , 'expected #{this} to have the same members as #{act}'
+ , 'expected #{this} to not have the same members as #{act}'
+ , obj
+ , subset
+ );
+ });
+
+ /**
+ * ### .oneOf(list)
+ *
+ * Assert that a value appears somewhere in the top level of array `list`.
+ *
+ * expect('a').to.be.oneOf(['a', 'b', 'c']);
+ * expect(9).to.not.be.oneOf(['z']);
+ * expect([3]).to.not.be.oneOf([1, 2, [3]]);
+ *
+ * var three = [3];
+ * // for object-types, contents are not compared
+ * expect(three).to.not.be.oneOf([1, 2, [3]]);
+ * // comparing references works
+ * expect(three).to.be.oneOf([1, 2, three]);
+ *
+ * @name oneOf
+ * @param {Array<*>} list
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function oneOf (list, msg) {
+ if (msg) flag(this, 'message', msg);
+ var expected = flag(this, 'object');
+ new Assertion(list).to.be.an('array');
+
+ this.assert(
+ list.indexOf(expected) > -1
+ , 'expected #{this} to be one of #{exp}'
+ , 'expected #{this} to not be one of #{exp}'
+ , list
+ , expected
+ );
+ }
+
+ Assertion.addMethod('oneOf', oneOf);
+
+
+ /**
+ * ### .change(function)
+ *
+ * Asserts that a function changes an object property
+ *
+ * var obj = { val: 10 };
+ * var fn = function() { obj.val += 3 };
+ * var noChangeFn = function() { return 'foo' + 'bar'; }
+ * expect(fn).to.change(obj, 'val');
+ * expect(noChangeFn).to.not.change(obj, 'val')
+ *
+ * @name change
+ * @alias changes
+ * @alias Change
+ * @param {String} object
+ * @param {String} property name
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function assertChanges (object, prop, msg) {
+ if (msg) flag(this, 'message', msg);
+ var fn = flag(this, 'object');
+ new Assertion(object, msg).to.have.property(prop);
+ new Assertion(fn).is.a('function');
+
+ var initial = object[prop];
+ fn();
+
+ this.assert(
+ initial !== object[prop]
+ , 'expected .' + prop + ' to change'
+ , 'expected .' + prop + ' to not change'
+ );
+ }
+
+ Assertion.addChainableMethod('change', assertChanges);
+ Assertion.addChainableMethod('changes', assertChanges);
+
+ /**
+ * ### .increase(function)
+ *
+ * Asserts that a function increases an object property
+ *
+ * var obj = { val: 10 };
+ * var fn = function() { obj.val = 15 };
+ * expect(fn).to.increase(obj, 'val');
+ *
+ * @name increase
+ * @alias increases
+ * @alias Increase
+ * @param {String} object
+ * @param {String} property name
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function assertIncreases (object, prop, msg) {
+ if (msg) flag(this, 'message', msg);
+ var fn = flag(this, 'object');
+ new Assertion(object, msg).to.have.property(prop);
+ new Assertion(fn).is.a('function');
+
+ var initial = object[prop];
+ fn();
+
+ this.assert(
+ object[prop] - initial > 0
+ , 'expected .' + prop + ' to increase'
+ , 'expected .' + prop + ' to not increase'
+ );
+ }
+
+ Assertion.addChainableMethod('increase', assertIncreases);
+ Assertion.addChainableMethod('increases', assertIncreases);
+
+ /**
+ * ### .decrease(function)
+ *
+ * Asserts that a function decreases an object property
+ *
+ * var obj = { val: 10 };
+ * var fn = function() { obj.val = 5 };
+ * expect(fn).to.decrease(obj, 'val');
+ *
+ * @name decrease
+ * @alias decreases
+ * @alias Decrease
+ * @param {String} object
+ * @param {String} property name
+ * @param {String} message _optional_
+ * @namespace BDD
+ * @api public
+ */
+
+ function assertDecreases (object, prop, msg) {
+ if (msg) flag(this, 'message', msg);
+ var fn = flag(this, 'object');
+ new Assertion(object, msg).to.have.property(prop);
+ new Assertion(fn).is.a('function');
+
+ var initial = object[prop];
+ fn();
+
+ this.assert(
+ object[prop] - initial < 0
+ , 'expected .' + prop + ' to decrease'
+ , 'expected .' + prop + ' to not decrease'
+ );
+ }
+
+ Assertion.addChainableMethod('decrease', assertDecreases);
+ Assertion.addChainableMethod('decreases', assertDecreases);
+
+ /**
+ * ### .extensible
+ *
+ * Asserts that the target is extensible (can have new properties added to
+ * it).
+ *
+ * var nonExtensibleObject = Object.preventExtensions({});
+ * var sealedObject = Object.seal({});
+ * var frozenObject = Object.freeze({});
+ *
+ * expect({}).to.be.extensible;
+ * expect(nonExtensibleObject).to.not.be.extensible;
+ * expect(sealedObject).to.not.be.extensible;
+ * expect(frozenObject).to.not.be.extensible;
+ *
+ * @name extensible
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addProperty('extensible', function() {
+ var obj = flag(this, 'object');
+
+ // In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError.
+ // In ES6, a non-object argument will be treated as if it was a non-extensible ordinary object, simply return false.
+ // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible
+ // The following provides ES6 behavior when a TypeError is thrown under ES5.
+
+ var isExtensible;
+
+ try {
+ isExtensible = Object.isExtensible(obj);
+ } catch (err) {
+ if (err instanceof TypeError) isExtensible = false;
+ else throw err;
+ }
+
+ this.assert(
+ isExtensible
+ , 'expected #{this} to be extensible'
+ , 'expected #{this} to not be extensible'
+ );
+ });
+
+ /**
+ * ### .sealed
+ *
+ * Asserts that the target is sealed (cannot have new properties added to it
+ * and its existing properties cannot be removed).
+ *
+ * var sealedObject = Object.seal({});
+ * var frozenObject = Object.freeze({});
+ *
+ * expect(sealedObject).to.be.sealed;
+ * expect(frozenObject).to.be.sealed;
+ * expect({}).to.not.be.sealed;
+ *
+ * @name sealed
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addProperty('sealed', function() {
+ var obj = flag(this, 'object');
+
+ // In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError.
+ // In ES6, a non-object argument will be treated as if it was a sealed ordinary object, simply return true.
+ // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed
+ // The following provides ES6 behavior when a TypeError is thrown under ES5.
+
+ var isSealed;
+
+ try {
+ isSealed = Object.isSealed(obj);
+ } catch (err) {
+ if (err instanceof TypeError) isSealed = true;
+ else throw err;
+ }
+
+ this.assert(
+ isSealed
+ , 'expected #{this} to be sealed'
+ , 'expected #{this} to not be sealed'
+ );
+ });
+
+ /**
+ * ### .frozen
+ *
+ * Asserts that the target is frozen (cannot have new properties added to it
+ * and its existing properties cannot be modified).
+ *
+ * var frozenObject = Object.freeze({});
+ *
+ * expect(frozenObject).to.be.frozen;
+ * expect({}).to.not.be.frozen;
+ *
+ * @name frozen
+ * @namespace BDD
+ * @api public
+ */
+
+ Assertion.addProperty('frozen', function() {
+ var obj = flag(this, 'object');
+
+ // In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError.
+ // In ES6, a non-object argument will be treated as if it was a frozen ordinary object, simply return true.
+ // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen
+ // The following provides ES6 behavior when a TypeError is thrown under ES5.
+
+ var isFrozen;
+
+ try {
+ isFrozen = Object.isFrozen(obj);
+ } catch (err) {
+ if (err instanceof TypeError) isFrozen = true;
+ else throw err;
+ }
+
+ this.assert(
+ isFrozen
+ , 'expected #{this} to be frozen'
+ , 'expected #{this} to not be frozen'
+ );
+ });
+};
+
+},{}],6:[function(require,module,exports){
+/*!
+ * chai
+ * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+
+module.exports = function (chai, util) {
+
+ /*!
+ * Chai dependencies.
+ */
+
+ var Assertion = chai.Assertion
+ , flag = util.flag;
+
+ /*!
+ * Module export.
+ */
+
+ /**
+ * ### assert(expression, message)
+ *
+ * Write your own test expressions.
+ *
+ * assert('foo' !== 'bar', 'foo is not bar');
+ * assert(Array.isArray([]), 'empty arrays are arrays');
+ *
+ * @param {Mixed} expression to test for truthiness
+ * @param {String} message to display on error
+ * @name assert
+ * @namespace Assert
+ * @api public
+ */
+
+ var assert = chai.assert = function (express, errmsg) {
+ var test = new Assertion(null, null, chai.assert);
+ test.assert(
+ express
+ , errmsg
+ , '[ negation message unavailable ]'
+ );
+ };
+
+ /**
+ * ### .fail(actual, expected, [message], [operator])
+ *
+ * Throw a failure. Node.js `assert` module-compatible.
+ *
+ * @name fail
+ * @param {Mixed} actual
+ * @param {Mixed} expected
+ * @param {String} message
+ * @param {String} operator
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.fail = function (actual, expected, message, operator) {
+ message = message || 'assert.fail()';
+ throw new chai.AssertionError(message, {
+ actual: actual
+ , expected: expected
+ , operator: operator
+ }, assert.fail);
+ };
+
+ /**
+ * ### .isOk(object, [message])
+ *
+ * Asserts that `object` is truthy.
+ *
+ * assert.isOk('everything', 'everything is ok');
+ * assert.isOk(false, 'this will fail');
+ *
+ * @name isOk
+ * @alias ok
+ * @param {Mixed} object to test
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isOk = function (val, msg) {
+ new Assertion(val, msg).is.ok;
+ };
+
+ /**
+ * ### .isNotOk(object, [message])
+ *
+ * Asserts that `object` is falsy.
+ *
+ * assert.isNotOk('everything', 'this will fail');
+ * assert.isNotOk(false, 'this will pass');
+ *
+ * @name isNotOk
+ * @alias notOk
+ * @param {Mixed} object to test
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isNotOk = function (val, msg) {
+ new Assertion(val, msg).is.not.ok;
+ };
+
+ /**
+ * ### .equal(actual, expected, [message])
+ *
+ * Asserts non-strict equality (`==`) of `actual` and `expected`.
+ *
+ * assert.equal(3, '3', '== coerces values to strings');
+ *
+ * @name equal
+ * @param {Mixed} actual
+ * @param {Mixed} expected
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.equal = function (act, exp, msg) {
+ var test = new Assertion(act, msg, assert.equal);
+
+ test.assert(
+ exp == flag(test, 'object')
+ , 'expected #{this} to equal #{exp}'
+ , 'expected #{this} to not equal #{act}'
+ , exp
+ , act
+ );
+ };
+
+ /**
+ * ### .notEqual(actual, expected, [message])
+ *
+ * Asserts non-strict inequality (`!=`) of `actual` and `expected`.
+ *
+ * assert.notEqual(3, 4, 'these numbers are not equal');
+ *
+ * @name notEqual
+ * @param {Mixed} actual
+ * @param {Mixed} expected
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.notEqual = function (act, exp, msg) {
+ var test = new Assertion(act, msg, assert.notEqual);
+
+ test.assert(
+ exp != flag(test, 'object')
+ , 'expected #{this} to not equal #{exp}'
+ , 'expected #{this} to equal #{act}'
+ , exp
+ , act
+ );
+ };
+
+ /**
+ * ### .strictEqual(actual, expected, [message])
+ *
+ * Asserts strict equality (`===`) of `actual` and `expected`.
+ *
+ * assert.strictEqual(true, true, 'these booleans are strictly equal');
+ *
+ * @name strictEqual
+ * @param {Mixed} actual
+ * @param {Mixed} expected
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.strictEqual = function (act, exp, msg) {
+ new Assertion(act, msg).to.equal(exp);
+ };
+
+ /**
+ * ### .notStrictEqual(actual, expected, [message])
+ *
+ * Asserts strict inequality (`!==`) of `actual` and `expected`.
+ *
+ * assert.notStrictEqual(3, '3', 'no coercion for strict equality');
+ *
+ * @name notStrictEqual
+ * @param {Mixed} actual
+ * @param {Mixed} expected
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.notStrictEqual = function (act, exp, msg) {
+ new Assertion(act, msg).to.not.equal(exp);
+ };
+
+ /**
+ * ### .deepEqual(actual, expected, [message])
+ *
+ * Asserts that `actual` is deeply equal to `expected`.
+ *
+ * assert.deepEqual({ tea: 'green' }, { tea: 'green' });
+ *
+ * @name deepEqual
+ * @param {Mixed} actual
+ * @param {Mixed} expected
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.deepEqual = function (act, exp, msg) {
+ new Assertion(act, msg).to.eql(exp);
+ };
+
+ /**
+ * ### .notDeepEqual(actual, expected, [message])
+ *
+ * Assert that `actual` is not deeply equal to `expected`.
+ *
+ * assert.notDeepEqual({ tea: 'green' }, { tea: 'jasmine' });
+ *
+ * @name notDeepEqual
+ * @param {Mixed} actual
+ * @param {Mixed} expected
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.notDeepEqual = function (act, exp, msg) {
+ new Assertion(act, msg).to.not.eql(exp);
+ };
+
+ /**
+ * ### .isAbove(valueToCheck, valueToBeAbove, [message])
+ *
+ * Asserts `valueToCheck` is strictly greater than (>) `valueToBeAbove`
+ *
+ * assert.isAbove(5, 2, '5 is strictly greater than 2');
+ *
+ * @name isAbove
+ * @param {Mixed} valueToCheck
+ * @param {Mixed} valueToBeAbove
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isAbove = function (val, abv, msg) {
+ new Assertion(val, msg).to.be.above(abv);
+ };
+
+ /**
+ * ### .isAtLeast(valueToCheck, valueToBeAtLeast, [message])
+ *
+ * Asserts `valueToCheck` is greater than or equal to (>=) `valueToBeAtLeast`
+ *
+ * assert.isAtLeast(5, 2, '5 is greater or equal to 2');
+ * assert.isAtLeast(3, 3, '3 is greater or equal to 3');
+ *
+ * @name isAtLeast
+ * @param {Mixed} valueToCheck
+ * @param {Mixed} valueToBeAtLeast
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isAtLeast = function (val, atlst, msg) {
+ new Assertion(val, msg).to.be.least(atlst);
+ };
+
+ /**
+ * ### .isBelow(valueToCheck, valueToBeBelow, [message])
+ *
+ * Asserts `valueToCheck` is strictly less than (<) `valueToBeBelow`
+ *
+ * assert.isBelow(3, 6, '3 is strictly less than 6');
+ *
+ * @name isBelow
+ * @param {Mixed} valueToCheck
+ * @param {Mixed} valueToBeBelow
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isBelow = function (val, blw, msg) {
+ new Assertion(val, msg).to.be.below(blw);
+ };
+
+ /**
+ * ### .isAtMost(valueToCheck, valueToBeAtMost, [message])
+ *
+ * Asserts `valueToCheck` is less than or equal to (<=) `valueToBeAtMost`
+ *
+ * assert.isAtMost(3, 6, '3 is less than or equal to 6');
+ * assert.isAtMost(4, 4, '4 is less than or equal to 4');
+ *
+ * @name isAtMost
+ * @param {Mixed} valueToCheck
+ * @param {Mixed} valueToBeAtMost
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isAtMost = function (val, atmst, msg) {
+ new Assertion(val, msg).to.be.most(atmst);
+ };
+
+ /**
+ * ### .isTrue(value, [message])
+ *
+ * Asserts that `value` is true.
+ *
+ * var teaServed = true;
+ * assert.isTrue(teaServed, 'the tea has been served');
+ *
+ * @name isTrue
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isTrue = function (val, msg) {
+ new Assertion(val, msg).is['true'];
+ };
+
+ /**
+ * ### .isNotTrue(value, [message])
+ *
+ * Asserts that `value` is not true.
+ *
+ * var tea = 'tasty chai';
+ * assert.isNotTrue(tea, 'great, time for tea!');
+ *
+ * @name isNotTrue
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isNotTrue = function (val, msg) {
+ new Assertion(val, msg).to.not.equal(true);
+ };
+
+ /**
+ * ### .isFalse(value, [message])
+ *
+ * Asserts that `value` is false.
+ *
+ * var teaServed = false;
+ * assert.isFalse(teaServed, 'no tea yet? hmm...');
+ *
+ * @name isFalse
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isFalse = function (val, msg) {
+ new Assertion(val, msg).is['false'];
+ };
+
+ /**
+ * ### .isNotFalse(value, [message])
+ *
+ * Asserts that `value` is not false.
+ *
+ * var tea = 'tasty chai';
+ * assert.isNotFalse(tea, 'great, time for tea!');
+ *
+ * @name isNotFalse
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isNotFalse = function (val, msg) {
+ new Assertion(val, msg).to.not.equal(false);
+ };
+
+ /**
+ * ### .isNull(value, [message])
+ *
+ * Asserts that `value` is null.
+ *
+ * assert.isNull(err, 'there was no error');
+ *
+ * @name isNull
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isNull = function (val, msg) {
+ new Assertion(val, msg).to.equal(null);
+ };
+
+ /**
+ * ### .isNotNull(value, [message])
+ *
+ * Asserts that `value` is not null.
+ *
+ * var tea = 'tasty chai';
+ * assert.isNotNull(tea, 'great, time for tea!');
+ *
+ * @name isNotNull
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isNotNull = function (val, msg) {
+ new Assertion(val, msg).to.not.equal(null);
+ };
+
+ /**
+ * ### .isNaN
+ * Asserts that value is NaN
+ *
+ * assert.isNaN('foo', 'foo is NaN');
+ *
+ * @name isNaN
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isNaN = function (val, msg) {
+ new Assertion(val, msg).to.be.NaN;
+ };
+
+ /**
+ * ### .isNotNaN
+ * Asserts that value is not NaN
+ *
+ * assert.isNotNaN(4, '4 is not NaN');
+ *
+ * @name isNotNaN
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+ assert.isNotNaN = function (val, msg) {
+ new Assertion(val, msg).not.to.be.NaN;
+ };
+
+ /**
+ * ### .isUndefined(value, [message])
+ *
+ * Asserts that `value` is `undefined`.
+ *
+ * var tea;
+ * assert.isUndefined(tea, 'no tea defined');
+ *
+ * @name isUndefined
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isUndefined = function (val, msg) {
+ new Assertion(val, msg).to.equal(undefined);
+ };
+
+ /**
+ * ### .isDefined(value, [message])
+ *
+ * Asserts that `value` is not `undefined`.
+ *
+ * var tea = 'cup of chai';
+ * assert.isDefined(tea, 'tea has been defined');
+ *
+ * @name isDefined
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isDefined = function (val, msg) {
+ new Assertion(val, msg).to.not.equal(undefined);
+ };
+
+ /**
+ * ### .isFunction(value, [message])
+ *
+ * Asserts that `value` is a function.
+ *
+ * function serveTea() { return 'cup of tea'; };
+ * assert.isFunction(serveTea, 'great, we can have tea now');
+ *
+ * @name isFunction
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isFunction = function (val, msg) {
+ new Assertion(val, msg).to.be.a('function');
+ };
+
+ /**
+ * ### .isNotFunction(value, [message])
+ *
+ * Asserts that `value` is _not_ a function.
+ *
+ * var serveTea = [ 'heat', 'pour', 'sip' ];
+ * assert.isNotFunction(serveTea, 'great, we have listed the steps');
+ *
+ * @name isNotFunction
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isNotFunction = function (val, msg) {
+ new Assertion(val, msg).to.not.be.a('function');
+ };
+
+ /**
+ * ### .isObject(value, [message])
+ *
+ * Asserts that `value` is an object of type 'Object' (as revealed by `Object.prototype.toString`).
+ * _The assertion does not match subclassed objects._
+ *
+ * var selection = { name: 'Chai', serve: 'with spices' };
+ * assert.isObject(selection, 'tea selection is an object');
+ *
+ * @name isObject
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isObject = function (val, msg) {
+ new Assertion(val, msg).to.be.a('object');
+ };
+
+ /**
+ * ### .isNotObject(value, [message])
+ *
+ * Asserts that `value` is _not_ an object of type 'Object' (as revealed by `Object.prototype.toString`).
+ *
+ * var selection = 'chai'
+ * assert.isNotObject(selection, 'tea selection is not an object');
+ * assert.isNotObject(null, 'null is not an object');
+ *
+ * @name isNotObject
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isNotObject = function (val, msg) {
+ new Assertion(val, msg).to.not.be.a('object');
+ };
+
+ /**
+ * ### .isArray(value, [message])
+ *
+ * Asserts that `value` is an array.
+ *
+ * var menu = [ 'green', 'chai', 'oolong' ];
+ * assert.isArray(menu, 'what kind of tea do we want?');
+ *
+ * @name isArray
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isArray = function (val, msg) {
+ new Assertion(val, msg).to.be.an('array');
+ };
+
+ /**
+ * ### .isNotArray(value, [message])
+ *
+ * Asserts that `value` is _not_ an array.
+ *
+ * var menu = 'green|chai|oolong';
+ * assert.isNotArray(menu, 'what kind of tea do we want?');
+ *
+ * @name isNotArray
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isNotArray = function (val, msg) {
+ new Assertion(val, msg).to.not.be.an('array');
+ };
+
+ /**
+ * ### .isString(value, [message])
+ *
+ * Asserts that `value` is a string.
+ *
+ * var teaOrder = 'chai';
+ * assert.isString(teaOrder, 'order placed');
+ *
+ * @name isString
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isString = function (val, msg) {
+ new Assertion(val, msg).to.be.a('string');
+ };
+
+ /**
+ * ### .isNotString(value, [message])
+ *
+ * Asserts that `value` is _not_ a string.
+ *
+ * var teaOrder = 4;
+ * assert.isNotString(teaOrder, 'order placed');
+ *
+ * @name isNotString
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isNotString = function (val, msg) {
+ new Assertion(val, msg).to.not.be.a('string');
+ };
+
+ /**
+ * ### .isNumber(value, [message])
+ *
+ * Asserts that `value` is a number.
+ *
+ * var cups = 2;
+ * assert.isNumber(cups, 'how many cups');
+ *
+ * @name isNumber
+ * @param {Number} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isNumber = function (val, msg) {
+ new Assertion(val, msg).to.be.a('number');
+ };
+
+ /**
+ * ### .isNotNumber(value, [message])
+ *
+ * Asserts that `value` is _not_ a number.
+ *
+ * var cups = '2 cups please';
+ * assert.isNotNumber(cups, 'how many cups');
+ *
+ * @name isNotNumber
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isNotNumber = function (val, msg) {
+ new Assertion(val, msg).to.not.be.a('number');
+ };
+
+ /**
+ * ### .isBoolean(value, [message])
+ *
+ * Asserts that `value` is a boolean.
+ *
+ * var teaReady = true
+ * , teaServed = false;
+ *
+ * assert.isBoolean(teaReady, 'is the tea ready');
+ * assert.isBoolean(teaServed, 'has tea been served');
+ *
+ * @name isBoolean
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isBoolean = function (val, msg) {
+ new Assertion(val, msg).to.be.a('boolean');
+ };
+
+ /**
+ * ### .isNotBoolean(value, [message])
+ *
+ * Asserts that `value` is _not_ a boolean.
+ *
+ * var teaReady = 'yep'
+ * , teaServed = 'nope';
+ *
+ * assert.isNotBoolean(teaReady, 'is the tea ready');
+ * assert.isNotBoolean(teaServed, 'has tea been served');
+ *
+ * @name isNotBoolean
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isNotBoolean = function (val, msg) {
+ new Assertion(val, msg).to.not.be.a('boolean');
+ };
+
+ /**
+ * ### .typeOf(value, name, [message])
+ *
+ * Asserts that `value`'s type is `name`, as determined by
+ * `Object.prototype.toString`.
+ *
+ * assert.typeOf({ tea: 'chai' }, 'object', 'we have an object');
+ * assert.typeOf(['chai', 'jasmine'], 'array', 'we have an array');
+ * assert.typeOf('tea', 'string', 'we have a string');
+ * assert.typeOf(/tea/, 'regexp', 'we have a regular expression');
+ * assert.typeOf(null, 'null', 'we have a null');
+ * assert.typeOf(undefined, 'undefined', 'we have an undefined');
+ *
+ * @name typeOf
+ * @param {Mixed} value
+ * @param {String} name
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.typeOf = function (val, type, msg) {
+ new Assertion(val, msg).to.be.a(type);
+ };
+
+ /**
+ * ### .notTypeOf(value, name, [message])
+ *
+ * Asserts that `value`'s type is _not_ `name`, as determined by
+ * `Object.prototype.toString`.
+ *
+ * assert.notTypeOf('tea', 'number', 'strings are not numbers');
+ *
+ * @name notTypeOf
+ * @param {Mixed} value
+ * @param {String} typeof name
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.notTypeOf = function (val, type, msg) {
+ new Assertion(val, msg).to.not.be.a(type);
+ };
+
+ /**
+ * ### .instanceOf(object, constructor, [message])
+ *
+ * Asserts that `value` is an instance of `constructor`.
+ *
+ * var Tea = function (name) { this.name = name; }
+ * , chai = new Tea('chai');
+ *
+ * assert.instanceOf(chai, Tea, 'chai is an instance of tea');
+ *
+ * @name instanceOf
+ * @param {Object} object
+ * @param {Constructor} constructor
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.instanceOf = function (val, type, msg) {
+ new Assertion(val, msg).to.be.instanceOf(type);
+ };
+
+ /**
+ * ### .notInstanceOf(object, constructor, [message])
+ *
+ * Asserts `value` is not an instance of `constructor`.
+ *
+ * var Tea = function (name) { this.name = name; }
+ * , chai = new String('chai');
+ *
+ * assert.notInstanceOf(chai, Tea, 'chai is not an instance of tea');
+ *
+ * @name notInstanceOf
+ * @param {Object} object
+ * @param {Constructor} constructor
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.notInstanceOf = function (val, type, msg) {
+ new Assertion(val, msg).to.not.be.instanceOf(type);
+ };
+
+ /**
+ * ### .include(haystack, needle, [message])
+ *
+ * Asserts that `haystack` includes `needle`. Works
+ * for strings and arrays.
+ *
+ * assert.include('foobar', 'bar', 'foobar contains string "bar"');
+ * assert.include([ 1, 2, 3 ], 3, 'array contains value');
+ *
+ * @name include
+ * @param {Array|String} haystack
+ * @param {Mixed} needle
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.include = function (exp, inc, msg) {
+ new Assertion(exp, msg, assert.include).include(inc);
+ };
+
+ /**
+ * ### .notInclude(haystack, needle, [message])
+ *
+ * Asserts that `haystack` does not include `needle`. Works
+ * for strings and arrays.
+ *
+ * assert.notInclude('foobar', 'baz', 'string not include substring');
+ * assert.notInclude([ 1, 2, 3 ], 4, 'array not include contain value');
+ *
+ * @name notInclude
+ * @param {Array|String} haystack
+ * @param {Mixed} needle
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.notInclude = function (exp, inc, msg) {
+ new Assertion(exp, msg, assert.notInclude).not.include(inc);
+ };
+
+ /**
+ * ### .match(value, regexp, [message])
+ *
+ * Asserts that `value` matches the regular expression `regexp`.
+ *
+ * assert.match('foobar', /^foo/, 'regexp matches');
+ *
+ * @name match
+ * @param {Mixed} value
+ * @param {RegExp} regexp
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.match = function (exp, re, msg) {
+ new Assertion(exp, msg).to.match(re);
+ };
+
+ /**
+ * ### .notMatch(value, regexp, [message])
+ *
+ * Asserts that `value` does not match the regular expression `regexp`.
+ *
+ * assert.notMatch('foobar', /^foo/, 'regexp does not match');
+ *
+ * @name notMatch
+ * @param {Mixed} value
+ * @param {RegExp} regexp
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.notMatch = function (exp, re, msg) {
+ new Assertion(exp, msg).to.not.match(re);
+ };
+
+ /**
+ * ### .property(object, property, [message])
+ *
+ * Asserts that `object` has a property named by `property`.
+ *
+ * assert.property({ tea: { green: 'matcha' }}, 'tea');
+ *
+ * @name property
+ * @param {Object} object
+ * @param {String} property
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.property = function (obj, prop, msg) {
+ new Assertion(obj, msg).to.have.property(prop);
+ };
+
+ /**
+ * ### .notProperty(object, property, [message])
+ *
+ * Asserts that `object` does _not_ have a property named by `property`.
+ *
+ * assert.notProperty({ tea: { green: 'matcha' }}, 'coffee');
+ *
+ * @name notProperty
+ * @param {Object} object
+ * @param {String} property
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.notProperty = function (obj, prop, msg) {
+ new Assertion(obj, msg).to.not.have.property(prop);
+ };
+
+ /**
+ * ### .deepProperty(object, property, [message])
+ *
+ * Asserts that `object` has a property named by `property`, which can be a
+ * string using dot- and bracket-notation for deep reference.
+ *
+ * assert.deepProperty({ tea: { green: 'matcha' }}, 'tea.green');
+ *
+ * @name deepProperty
+ * @param {Object} object
+ * @param {String} property
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.deepProperty = function (obj, prop, msg) {
+ new Assertion(obj, msg).to.have.deep.property(prop);
+ };
+
+ /**
+ * ### .notDeepProperty(object, property, [message])
+ *
+ * Asserts that `object` does _not_ have a property named by `property`, which
+ * can be a string using dot- and bracket-notation for deep reference.
+ *
+ * assert.notDeepProperty({ tea: { green: 'matcha' }}, 'tea.oolong');
+ *
+ * @name notDeepProperty
+ * @param {Object} object
+ * @param {String} property
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.notDeepProperty = function (obj, prop, msg) {
+ new Assertion(obj, msg).to.not.have.deep.property(prop);
+ };
+
+ /**
+ * ### .propertyVal(object, property, value, [message])
+ *
+ * Asserts that `object` has a property named by `property` with value given
+ * by `value`.
+ *
+ * assert.propertyVal({ tea: 'is good' }, 'tea', 'is good');
+ *
+ * @name propertyVal
+ * @param {Object} object
+ * @param {String} property
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.propertyVal = function (obj, prop, val, msg) {
+ new Assertion(obj, msg).to.have.property(prop, val);
+ };
+
+ /**
+ * ### .propertyNotVal(object, property, value, [message])
+ *
+ * Asserts that `object` has a property named by `property`, but with a value
+ * different from that given by `value`.
+ *
+ * assert.propertyNotVal({ tea: 'is good' }, 'tea', 'is bad');
+ *
+ * @name propertyNotVal
+ * @param {Object} object
+ * @param {String} property
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.propertyNotVal = function (obj, prop, val, msg) {
+ new Assertion(obj, msg).to.not.have.property(prop, val);
+ };
+
+ /**
+ * ### .deepPropertyVal(object, property, value, [message])
+ *
+ * Asserts that `object` has a property named by `property` with value given
+ * by `value`. `property` can use dot- and bracket-notation for deep
+ * reference.
+ *
+ * assert.deepPropertyVal({ tea: { green: 'matcha' }}, 'tea.green', 'matcha');
+ *
+ * @name deepPropertyVal
+ * @param {Object} object
+ * @param {String} property
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.deepPropertyVal = function (obj, prop, val, msg) {
+ new Assertion(obj, msg).to.have.deep.property(prop, val);
+ };
+
+ /**
+ * ### .deepPropertyNotVal(object, property, value, [message])
+ *
+ * Asserts that `object` has a property named by `property`, but with a value
+ * different from that given by `value`. `property` can use dot- and
+ * bracket-notation for deep reference.
+ *
+ * assert.deepPropertyNotVal({ tea: { green: 'matcha' }}, 'tea.green', 'konacha');
+ *
+ * @name deepPropertyNotVal
+ * @param {Object} object
+ * @param {String} property
+ * @param {Mixed} value
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.deepPropertyNotVal = function (obj, prop, val, msg) {
+ new Assertion(obj, msg).to.not.have.deep.property(prop, val);
+ };
+
+ /**
+ * ### .lengthOf(object, length, [message])
+ *
+ * Asserts that `object` has a `length` property with the expected value.
+ *
+ * assert.lengthOf([1,2,3], 3, 'array has length of 3');
+ * assert.lengthOf('foobar', 6, 'string has length of 6');
+ *
+ * @name lengthOf
+ * @param {Mixed} object
+ * @param {Number} length
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.lengthOf = function (exp, len, msg) {
+ new Assertion(exp, msg).to.have.length(len);
+ };
+
+ /**
+ * ### .throws(function, [constructor/string/regexp], [string/regexp], [message])
+ *
+ * Asserts that `function` will throw an error that is an instance of
+ * `constructor`, or alternately that it will throw an error with message
+ * matching `regexp`.
+ *
+ * assert.throws(fn, 'function throws a reference error');
+ * assert.throws(fn, /function throws a reference error/);
+ * assert.throws(fn, ReferenceError);
+ * assert.throws(fn, ReferenceError, 'function throws a reference error');
+ * assert.throws(fn, ReferenceError, /function throws a reference error/);
+ *
+ * @name throws
+ * @alias throw
+ * @alias Throw
+ * @param {Function} function
+ * @param {ErrorConstructor} constructor
+ * @param {RegExp} regexp
+ * @param {String} message
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.throws = function (fn, errt, errs, msg) {
+ if ('string' === typeof errt || errt instanceof RegExp) {
+ errs = errt;
+ errt = null;
+ }
+
+ var assertErr = new Assertion(fn, msg).to.throw(errt, errs);
+ return flag(assertErr, 'object');
+ };
+
+ /**
+ * ### .doesNotThrow(function, [constructor/regexp], [message])
+ *
+ * Asserts that `function` will _not_ throw an error that is an instance of
+ * `constructor`, or alternately that it will not throw an error with message
+ * matching `regexp`.
+ *
+ * assert.doesNotThrow(fn, Error, 'function does not throw');
+ *
+ * @name doesNotThrow
+ * @param {Function} function
+ * @param {ErrorConstructor} constructor
+ * @param {RegExp} regexp
+ * @param {String} message
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.doesNotThrow = function (fn, type, msg) {
+ if ('string' === typeof type) {
+ msg = type;
+ type = null;
+ }
+
+ new Assertion(fn, msg).to.not.Throw(type);
+ };
+
+ /**
+ * ### .operator(val1, operator, val2, [message])
+ *
+ * Compares two values using `operator`.
+ *
+ * assert.operator(1, '<', 2, 'everything is ok');
+ * assert.operator(1, '>', 2, 'this will fail');
+ *
+ * @name operator
+ * @param {Mixed} val1
+ * @param {String} operator
+ * @param {Mixed} val2
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.operator = function (val, operator, val2, msg) {
+ var ok;
+ switch(operator) {
+ case '==':
+ ok = val == val2;
+ break;
+ case '===':
+ ok = val === val2;
+ break;
+ case '>':
+ ok = val > val2;
+ break;
+ case '>=':
+ ok = val >= val2;
+ break;
+ case '<':
+ ok = val < val2;
+ break;
+ case '<=':
+ ok = val <= val2;
+ break;
+ case '!=':
+ ok = val != val2;
+ break;
+ case '!==':
+ ok = val !== val2;
+ break;
+ default:
+ throw new Error('Invalid operator "' + operator + '"');
+ }
+ var test = new Assertion(ok, msg);
+ test.assert(
+ true === flag(test, 'object')
+ , 'expected ' + util.inspect(val) + ' to be ' + operator + ' ' + util.inspect(val2)
+ , 'expected ' + util.inspect(val) + ' to not be ' + operator + ' ' + util.inspect(val2) );
+ };
+
+ /**
+ * ### .closeTo(actual, expected, delta, [message])
+ *
+ * Asserts that the target is equal `expected`, to within a +/- `delta` range.
+ *
+ * assert.closeTo(1.5, 1, 0.5, 'numbers are close');
+ *
+ * @name closeTo
+ * @param {Number} actual
+ * @param {Number} expected
+ * @param {Number} delta
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.closeTo = function (act, exp, delta, msg) {
+ new Assertion(act, msg).to.be.closeTo(exp, delta);
+ };
+
+ /**
+ * ### .approximately(actual, expected, delta, [message])
+ *
+ * Asserts that the target is equal `expected`, to within a +/- `delta` range.
+ *
+ * assert.approximately(1.5, 1, 0.5, 'numbers are close');
+ *
+ * @name approximately
+ * @param {Number} actual
+ * @param {Number} expected
+ * @param {Number} delta
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.approximately = function (act, exp, delta, msg) {
+ new Assertion(act, msg).to.be.approximately(exp, delta);
+ };
+
+ /**
+ * ### .sameMembers(set1, set2, [message])
+ *
+ * Asserts that `set1` and `set2` have the same members.
+ * Order is not taken into account.
+ *
+ * assert.sameMembers([ 1, 2, 3 ], [ 2, 1, 3 ], 'same members');
+ *
+ * @name sameMembers
+ * @param {Array} set1
+ * @param {Array} set2
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.sameMembers = function (set1, set2, msg) {
+ new Assertion(set1, msg).to.have.same.members(set2);
+ }
+
+ /**
+ * ### .sameDeepMembers(set1, set2, [message])
+ *
+ * Asserts that `set1` and `set2` have the same members - using a deep equality checking.
+ * Order is not taken into account.
+ *
+ * assert.sameDeepMembers([ {b: 3}, {a: 2}, {c: 5} ], [ {c: 5}, {b: 3}, {a: 2} ], 'same deep members');
+ *
+ * @name sameDeepMembers
+ * @param {Array} set1
+ * @param {Array} set2
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.sameDeepMembers = function (set1, set2, msg) {
+ new Assertion(set1, msg).to.have.same.deep.members(set2);
+ }
+
+ /**
+ * ### .includeMembers(superset, subset, [message])
+ *
+ * Asserts that `subset` is included in `superset`.
+ * Order is not taken into account.
+ *
+ * assert.includeMembers([ 1, 2, 3 ], [ 2, 1 ], 'include members');
+ *
+ * @name includeMembers
+ * @param {Array} superset
+ * @param {Array} subset
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.includeMembers = function (superset, subset, msg) {
+ new Assertion(superset, msg).to.include.members(subset);
+ }
+
+ /**
+ * ### .includeDeepMembers(superset, subset, [message])
+ *
+ * Asserts that `subset` is included in `superset` - using deep equality checking.
+ * Order is not taken into account.
+ * Duplicates are ignored.
+ *
+ * assert.includeDeepMembers([ {a: 1}, {b: 2}, {c: 3} ], [ {b: 2}, {a: 1}, {b: 2} ], 'include deep members');
+ *
+ * @name includeDeepMembers
+ * @param {Array} superset
+ * @param {Array} subset
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.includeDeepMembers = function (superset, subset, msg) {
+ new Assertion(superset, msg).to.include.deep.members(subset);
+ }
+
+ /**
+ * ### .oneOf(inList, list, [message])
+ *
+ * Asserts that non-object, non-array value `inList` appears in the flat array `list`.
+ *
+ * assert.oneOf(1, [ 2, 1 ], 'Not found in list');
+ *
+ * @name oneOf
+ * @param {*} inList
+ * @param {Array<*>} list
+ * @param {String} message
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.oneOf = function (inList, list, msg) {
+ new Assertion(inList, msg).to.be.oneOf(list);
+ }
+
+ /**
+ * ### .changes(function, object, property)
+ *
+ * Asserts that a function changes the value of a property
+ *
+ * var obj = { val: 10 };
+ * var fn = function() { obj.val = 22 };
+ * assert.changes(fn, obj, 'val');
+ *
+ * @name changes
+ * @param {Function} modifier function
+ * @param {Object} object
+ * @param {String} property name
+ * @param {String} message _optional_
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.changes = function (fn, obj, prop) {
+ new Assertion(fn).to.change(obj, prop);
+ }
+
+ /**
+ * ### .doesNotChange(function, object, property)
+ *
+ * Asserts that a function does not changes the value of a property
+ *
+ * var obj = { val: 10 };
+ * var fn = function() { console.log('foo'); };
+ * assert.doesNotChange(fn, obj, 'val');
+ *
+ * @name doesNotChange
+ * @param {Function} modifier function
+ * @param {Object} object
+ * @param {String} property name
+ * @param {String} message _optional_
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.doesNotChange = function (fn, obj, prop) {
+ new Assertion(fn).to.not.change(obj, prop);
+ }
+
+ /**
+ * ### .increases(function, object, property)
+ *
+ * Asserts that a function increases an object property
+ *
+ * var obj = { val: 10 };
+ * var fn = function() { obj.val = 13 };
+ * assert.increases(fn, obj, 'val');
+ *
+ * @name increases
+ * @param {Function} modifier function
+ * @param {Object} object
+ * @param {String} property name
+ * @param {String} message _optional_
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.increases = function (fn, obj, prop) {
+ new Assertion(fn).to.increase(obj, prop);
+ }
+
+ /**
+ * ### .doesNotIncrease(function, object, property)
+ *
+ * Asserts that a function does not increase object property
+ *
+ * var obj = { val: 10 };
+ * var fn = function() { obj.val = 8 };
+ * assert.doesNotIncrease(fn, obj, 'val');
+ *
+ * @name doesNotIncrease
+ * @param {Function} modifier function
+ * @param {Object} object
+ * @param {String} property name
+ * @param {String} message _optional_
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.doesNotIncrease = function (fn, obj, prop) {
+ new Assertion(fn).to.not.increase(obj, prop);
+ }
+
+ /**
+ * ### .decreases(function, object, property)
+ *
+ * Asserts that a function decreases an object property
+ *
+ * var obj = { val: 10 };
+ * var fn = function() { obj.val = 5 };
+ * assert.decreases(fn, obj, 'val');
+ *
+ * @name decreases
+ * @param {Function} modifier function
+ * @param {Object} object
+ * @param {String} property name
+ * @param {String} message _optional_
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.decreases = function (fn, obj, prop) {
+ new Assertion(fn).to.decrease(obj, prop);
+ }
+
+ /**
+ * ### .doesNotDecrease(function, object, property)
+ *
+ * Asserts that a function does not decreases an object property
+ *
+ * var obj = { val: 10 };
+ * var fn = function() { obj.val = 15 };
+ * assert.doesNotDecrease(fn, obj, 'val');
+ *
+ * @name doesNotDecrease
+ * @param {Function} modifier function
+ * @param {Object} object
+ * @param {String} property name
+ * @param {String} message _optional_
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.doesNotDecrease = function (fn, obj, prop) {
+ new Assertion(fn).to.not.decrease(obj, prop);
+ }
+
+ /*!
+ * ### .ifError(object)
+ *
+ * Asserts if value is not a false value, and throws if it is a true value.
+ * This is added to allow for chai to be a drop-in replacement for Node's
+ * assert class.
+ *
+ * var err = new Error('I am a custom error');
+ * assert.ifError(err); // Rethrows err!
+ *
+ * @name ifError
+ * @param {Object} object
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.ifError = function (val) {
+ if (val) {
+ throw(val);
+ }
+ };
+
+ /**
+ * ### .isExtensible(object)
+ *
+ * Asserts that `object` is extensible (can have new properties added to it).
+ *
+ * assert.isExtensible({});
+ *
+ * @name isExtensible
+ * @alias extensible
+ * @param {Object} object
+ * @param {String} message _optional_
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isExtensible = function (obj, msg) {
+ new Assertion(obj, msg).to.be.extensible;
+ };
+
+ /**
+ * ### .isNotExtensible(object)
+ *
+ * Asserts that `object` is _not_ extensible.
+ *
+ * var nonExtensibleObject = Object.preventExtensions({});
+ * var sealedObject = Object.seal({});
+ * var frozenObject = Object.freese({});
+ *
+ * assert.isNotExtensible(nonExtensibleObject);
+ * assert.isNotExtensible(sealedObject);
+ * assert.isNotExtensible(frozenObject);
+ *
+ * @name isNotExtensible
+ * @alias notExtensible
+ * @param {Object} object
+ * @param {String} message _optional_
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isNotExtensible = function (obj, msg) {
+ new Assertion(obj, msg).to.not.be.extensible;
+ };
+
+ /**
+ * ### .isSealed(object)
+ *
+ * Asserts that `object` is sealed (cannot have new properties added to it
+ * and its existing properties cannot be removed).
+ *
+ * var sealedObject = Object.seal({});
+ * var frozenObject = Object.seal({});
+ *
+ * assert.isSealed(sealedObject);
+ * assert.isSealed(frozenObject);
+ *
+ * @name isSealed
+ * @alias sealed
+ * @param {Object} object
+ * @param {String} message _optional_
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isSealed = function (obj, msg) {
+ new Assertion(obj, msg).to.be.sealed;
+ };
+
+ /**
+ * ### .isNotSealed(object)
+ *
+ * Asserts that `object` is _not_ sealed.
+ *
+ * assert.isNotSealed({});
+ *
+ * @name isNotSealed
+ * @alias notSealed
+ * @param {Object} object
+ * @param {String} message _optional_
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isNotSealed = function (obj, msg) {
+ new Assertion(obj, msg).to.not.be.sealed;
+ };
+
+ /**
+ * ### .isFrozen(object)
+ *
+ * Asserts that `object` is frozen (cannot have new properties added to it
+ * and its existing properties cannot be modified).
+ *
+ * var frozenObject = Object.freeze({});
+ * assert.frozen(frozenObject);
+ *
+ * @name isFrozen
+ * @alias frozen
+ * @param {Object} object
+ * @param {String} message _optional_
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isFrozen = function (obj, msg) {
+ new Assertion(obj, msg).to.be.frozen;
+ };
+
+ /**
+ * ### .isNotFrozen(object)
+ *
+ * Asserts that `object` is _not_ frozen.
+ *
+ * assert.isNotFrozen({});
+ *
+ * @name isNotFrozen
+ * @alias notFrozen
+ * @param {Object} object
+ * @param {String} message _optional_
+ * @namespace Assert
+ * @api public
+ */
+
+ assert.isNotFrozen = function (obj, msg) {
+ new Assertion(obj, msg).to.not.be.frozen;
+ };
+
+ /*!
+ * Aliases.
+ */
+
+ (function alias(name, as){
+ assert[as] = assert[name];
+ return alias;
+ })
+ ('isOk', 'ok')
+ ('isNotOk', 'notOk')
+ ('throws', 'throw')
+ ('throws', 'Throw')
+ ('isExtensible', 'extensible')
+ ('isNotExtensible', 'notExtensible')
+ ('isSealed', 'sealed')
+ ('isNotSealed', 'notSealed')
+ ('isFrozen', 'frozen')
+ ('isNotFrozen', 'notFrozen');
+};
+
+},{}],7:[function(require,module,exports){
+/*!
+ * chai
+ * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+module.exports = function (chai, util) {
+ chai.expect = function (val, message) {
+ return new chai.Assertion(val, message);
+ };
+
+ /**
+ * ### .fail(actual, expected, [message], [operator])
+ *
+ * Throw a failure.
+ *
+ * @name fail
+ * @param {Mixed} actual
+ * @param {Mixed} expected
+ * @param {String} message
+ * @param {String} operator
+ * @namespace Expect
+ * @api public
+ */
+
+ chai.expect.fail = function (actual, expected, message, operator) {
+ message = message || 'expect.fail()';
+ throw new chai.AssertionError(message, {
+ actual: actual
+ , expected: expected
+ , operator: operator
+ }, chai.expect.fail);
+ };
+};
+
+},{}],8:[function(require,module,exports){
+/*!
+ * chai
+ * Copyright(c) 2011-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+module.exports = function (chai, util) {
+ var Assertion = chai.Assertion;
+
+ function loadShould () {
+ // explicitly define this method as function as to have it's name to include as `ssfi`
+ function shouldGetter() {
+ if (this instanceof String || this instanceof Number || this instanceof Boolean ) {
+ return new Assertion(this.valueOf(), null, shouldGetter);
+ }
+ return new Assertion(this, null, shouldGetter);
+ }
+ function shouldSetter(value) {
+ // See https://github.com/chaijs/chai/issues/86: this makes
+ // `whatever.should = someValue` actually set `someValue`, which is
+ // especially useful for `global.should = require('chai').should()`.
+ //
+ // Note that we have to use [[DefineProperty]] instead of [[Put]]
+ // since otherwise we would trigger this very setter!
+ Object.defineProperty(this, 'should', {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ }
+ // modify Object.prototype to have `should`
+ Object.defineProperty(Object.prototype, 'should', {
+ set: shouldSetter
+ , get: shouldGetter
+ , configurable: true
+ });
+
+ var should = {};
+
+ /**
+ * ### .fail(actual, expected, [message], [operator])
+ *
+ * Throw a failure.
+ *
+ * @name fail
+ * @param {Mixed} actual
+ * @param {Mixed} expected
+ * @param {String} message
+ * @param {String} operator
+ * @namespace Should
+ * @api public
+ */
+
+ should.fail = function (actual, expected, message, operator) {
+ message = message || 'should.fail()';
+ throw new chai.AssertionError(message, {
+ actual: actual
+ , expected: expected
+ , operator: operator
+ }, should.fail);
+ };
+
+ /**
+ * ### .equal(actual, expected, [message])
+ *
+ * Asserts non-strict equality (`==`) of `actual` and `expected`.
+ *
+ * should.equal(3, '3', '== coerces values to strings');
+ *
+ * @name equal
+ * @param {Mixed} actual
+ * @param {Mixed} expected
+ * @param {String} message
+ * @namespace Should
+ * @api public
+ */
+
+ should.equal = function (val1, val2, msg) {
+ new Assertion(val1, msg).to.equal(val2);
+ };
+
+ /**
+ * ### .throw(function, [constructor/string/regexp], [string/regexp], [message])
+ *
+ * Asserts that `function` will throw an error that is an instance of
+ * `constructor`, or alternately that it will throw an error with message
+ * matching `regexp`.
+ *
+ * should.throw(fn, 'function throws a reference error');
+ * should.throw(fn, /function throws a reference error/);
+ * should.throw(fn, ReferenceError);
+ * should.throw(fn, ReferenceError, 'function throws a reference error');
+ * should.throw(fn, ReferenceError, /function throws a reference error/);
+ *
+ * @name throw
+ * @alias Throw
+ * @param {Function} function
+ * @param {ErrorConstructor} constructor
+ * @param {RegExp} regexp
+ * @param {String} message
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types
+ * @namespace Should
+ * @api public
+ */
+
+ should.Throw = function (fn, errt, errs, msg) {
+ new Assertion(fn, msg).to.Throw(errt, errs);
+ };
+
+ /**
+ * ### .exist
+ *
+ * Asserts that the target is neither `null` nor `undefined`.
+ *
+ * var foo = 'hi';
+ *
+ * should.exist(foo, 'foo exists');
+ *
+ * @name exist
+ * @namespace Should
+ * @api public
+ */
+
+ should.exist = function (val, msg) {
+ new Assertion(val, msg).to.exist;
+ }
+
+ // negation
+ should.not = {}
+
+ /**
+ * ### .not.equal(actual, expected, [message])
+ *
+ * Asserts non-strict inequality (`!=`) of `actual` and `expected`.
+ *
+ * should.not.equal(3, 4, 'these numbers are not equal');
+ *
+ * @name not.equal
+ * @param {Mixed} actual
+ * @param {Mixed} expected
+ * @param {String} message
+ * @namespace Should
+ * @api public
+ */
+
+ should.not.equal = function (val1, val2, msg) {
+ new Assertion(val1, msg).to.not.equal(val2);
+ };
+
+ /**
+ * ### .throw(function, [constructor/regexp], [message])
+ *
+ * Asserts that `function` will _not_ throw an error that is an instance of
+ * `constructor`, or alternately that it will not throw an error with message
+ * matching `regexp`.
+ *
+ * should.not.throw(fn, Error, 'function does not throw');
+ *
+ * @name not.throw
+ * @alias not.Throw
+ * @param {Function} function
+ * @param {ErrorConstructor} constructor
+ * @param {RegExp} regexp
+ * @param {String} message
+ * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types
+ * @namespace Should
+ * @api public
+ */
+
+ should.not.Throw = function (fn, errt, errs, msg) {
+ new Assertion(fn, msg).to.not.Throw(errt, errs);
+ };
+
+ /**
+ * ### .not.exist
+ *
+ * Asserts that the target is neither `null` nor `undefined`.
+ *
+ * var bar = null;
+ *
+ * should.not.exist(bar, 'bar does not exist');
+ *
+ * @name not.exist
+ * @namespace Should
+ * @api public
+ */
+
+ should.not.exist = function (val, msg) {
+ new Assertion(val, msg).to.not.exist;
+ }
+
+ should['throw'] = should['Throw'];
+ should.not['throw'] = should.not['Throw'];
+
+ return should;
+ };
+
+ chai.should = loadShould;
+ chai.Should = loadShould;
+};
+
+},{}],9:[function(require,module,exports){
+/*!
+ * Chai - addChainingMethod utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/*!
+ * Module dependencies
+ */
+
+var transferFlags = require('./transferFlags');
+var flag = require('./flag');
+var config = require('../config');
+
+/*!
+ * Module variables
+ */
+
+// Check whether `__proto__` is supported
+var hasProtoSupport = '__proto__' in Object;
+
+// Without `__proto__` support, this module will need to add properties to a function.
+// However, some Function.prototype methods cannot be overwritten,
+// and there seems no easy cross-platform way to detect them (@see chaijs/chai/issues/69).
+var excludeNames = /^(?:length|name|arguments|caller)$/;
+
+// Cache `Function` properties
+var call = Function.prototype.call,
+ apply = Function.prototype.apply;
+
+/**
+ * ### addChainableMethod (ctx, name, method, chainingBehavior)
+ *
+ * Adds a method to an object, such that the method can also be chained.
+ *
+ * utils.addChainableMethod(chai.Assertion.prototype, 'foo', function (str) {
+ * var obj = utils.flag(this, 'object');
+ * new chai.Assertion(obj).to.be.equal(str);
+ * });
+ *
+ * Can also be accessed directly from `chai.Assertion`.
+ *
+ * chai.Assertion.addChainableMethod('foo', fn, chainingBehavior);
+ *
+ * The result can then be used as both a method assertion, executing both `method` and
+ * `chainingBehavior`, or as a language chain, which only executes `chainingBehavior`.
+ *
+ * expect(fooStr).to.be.foo('bar');
+ * expect(fooStr).to.be.foo.equal('foo');
+ *
+ * @param {Object} ctx object to which the method is added
+ * @param {String} name of method to add
+ * @param {Function} method function to be used for `name`, when called
+ * @param {Function} chainingBehavior function to be called every time the property is accessed
+ * @namespace Utils
+ * @name addChainableMethod
+ * @api public
+ */
+
+module.exports = function (ctx, name, method, chainingBehavior) {
+ if (typeof chainingBehavior !== 'function') {
+ chainingBehavior = function () { };
+ }
+
+ var chainableBehavior = {
+ method: method
+ , chainingBehavior: chainingBehavior
+ };
+
+ // save the methods so we can overwrite them later, if we need to.
+ if (!ctx.__methods) {
+ ctx.__methods = {};
+ }
+ ctx.__methods[name] = chainableBehavior;
+
+ Object.defineProperty(ctx, name,
+ { get: function () {
+ chainableBehavior.chainingBehavior.call(this);
+
+ var assert = function assert() {
+ var old_ssfi = flag(this, 'ssfi');
+ if (old_ssfi && config.includeStack === false)
+ flag(this, 'ssfi', assert);
+ var result = chainableBehavior.method.apply(this, arguments);
+ return result === undefined ? this : result;
+ };
+
+ // Use `__proto__` if available
+ if (hasProtoSupport) {
+ // Inherit all properties from the object by replacing the `Function` prototype
+ var prototype = assert.__proto__ = Object.create(this);
+ // Restore the `call` and `apply` methods from `Function`
+ prototype.call = call;
+ prototype.apply = apply;
+ }
+ // Otherwise, redefine all properties (slow!)
+ else {
+ var asserterNames = Object.getOwnPropertyNames(ctx);
+ asserterNames.forEach(function (asserterName) {
+ if (!excludeNames.test(asserterName)) {
+ var pd = Object.getOwnPropertyDescriptor(ctx, asserterName);
+ Object.defineProperty(assert, asserterName, pd);
+ }
+ });
+ }
+
+ transferFlags(this, assert);
+ return assert;
+ }
+ , configurable: true
+ });
+};
+
+},{"../config":4,"./flag":13,"./transferFlags":29}],10:[function(require,module,exports){
+/*!
+ * Chai - addMethod utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+var config = require('../config');
+
+/**
+ * ### .addMethod (ctx, name, method)
+ *
+ * Adds a method to the prototype of an object.
+ *
+ * utils.addMethod(chai.Assertion.prototype, 'foo', function (str) {
+ * var obj = utils.flag(this, 'object');
+ * new chai.Assertion(obj).to.be.equal(str);
+ * });
+ *
+ * Can also be accessed directly from `chai.Assertion`.
+ *
+ * chai.Assertion.addMethod('foo', fn);
+ *
+ * Then can be used as any other assertion.
+ *
+ * expect(fooStr).to.be.foo('bar');
+ *
+ * @param {Object} ctx object to which the method is added
+ * @param {String} name of method to add
+ * @param {Function} method function to be used for name
+ * @namespace Utils
+ * @name addMethod
+ * @api public
+ */
+var flag = require('./flag');
+
+module.exports = function (ctx, name, method) {
+ ctx[name] = function () {
+ var old_ssfi = flag(this, 'ssfi');
+ if (old_ssfi && config.includeStack === false)
+ flag(this, 'ssfi', ctx[name]);
+ var result = method.apply(this, arguments);
+ return result === undefined ? this : result;
+ };
+};
+
+},{"../config":4,"./flag":13}],11:[function(require,module,exports){
+/*!
+ * Chai - addProperty utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+var config = require('../config');
+var flag = require('./flag');
+
+/**
+ * ### addProperty (ctx, name, getter)
+ *
+ * Adds a property to the prototype of an object.
+ *
+ * utils.addProperty(chai.Assertion.prototype, 'foo', function () {
+ * var obj = utils.flag(this, 'object');
+ * new chai.Assertion(obj).to.be.instanceof(Foo);
+ * });
+ *
+ * Can also be accessed directly from `chai.Assertion`.
+ *
+ * chai.Assertion.addProperty('foo', fn);
+ *
+ * Then can be used as any other assertion.
+ *
+ * expect(myFoo).to.be.foo;
+ *
+ * @param {Object} ctx object to which the property is added
+ * @param {String} name of property to add
+ * @param {Function} getter function to be used for name
+ * @namespace Utils
+ * @name addProperty
+ * @api public
+ */
+
+module.exports = function (ctx, name, getter) {
+ Object.defineProperty(ctx, name,
+ { get: function addProperty() {
+ var old_ssfi = flag(this, 'ssfi');
+ if (old_ssfi && config.includeStack === false)
+ flag(this, 'ssfi', addProperty);
+
+ var result = getter.call(this);
+ return result === undefined ? this : result;
+ }
+ , configurable: true
+ });
+};
+
+},{"../config":4,"./flag":13}],12:[function(require,module,exports){
+/*!
+ * Chai - expectTypes utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/**
+ * ### expectTypes(obj, types)
+ *
+ * Ensures that the object being tested against is of a valid type.
+ *
+ * utils.expectTypes(this, ['array', 'object', 'string']);
+ *
+ * @param {Mixed} obj constructed Assertion
+ * @param {Array} type A list of allowed types for this assertion
+ * @namespace Utils
+ * @name expectTypes
+ * @api public
+ */
+
+var AssertionError = require('assertion-error');
+var flag = require('./flag');
+var type = require('type-detect');
+
+module.exports = function (obj, types) {
+ var obj = flag(obj, 'object');
+ types = types.map(function (t) { return t.toLowerCase(); });
+ types.sort();
+
+ // Transforms ['lorem', 'ipsum'] into 'a lirum, or an ipsum'
+ var str = types.map(function (t, index) {
+ var art = ~[ 'a', 'e', 'i', 'o', 'u' ].indexOf(t.charAt(0)) ? 'an' : 'a';
+ var or = types.length > 1 && index === types.length - 1 ? 'or ' : '';
+ return or + art + ' ' + t;
+ }).join(', ');
+
+ if (!types.some(function (expected) { return type(obj) === expected; })) {
+ throw new AssertionError(
+ 'object tested must be ' + str + ', but ' + type(obj) + ' given'
+ );
+ }
+};
+
+},{"./flag":13,"assertion-error":30,"type-detect":35}],13:[function(require,module,exports){
+/*!
+ * Chai - flag utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/**
+ * ### flag(object, key, [value])
+ *
+ * Get or set a flag value on an object. If a
+ * value is provided it will be set, else it will
+ * return the currently set value or `undefined` if
+ * the value is not set.
+ *
+ * utils.flag(this, 'foo', 'bar'); // setter
+ * utils.flag(this, 'foo'); // getter, returns `bar`
+ *
+ * @param {Object} object constructed Assertion
+ * @param {String} key
+ * @param {Mixed} value (optional)
+ * @namespace Utils
+ * @name flag
+ * @api private
+ */
+
+module.exports = function (obj, key, value) {
+ var flags = obj.__flags || (obj.__flags = Object.create(null));
+ if (arguments.length === 3) {
+ flags[key] = value;
+ } else {
+ return flags[key];
+ }
+};
+
+},{}],14:[function(require,module,exports){
+/*!
+ * Chai - getActual utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/**
+ * # getActual(object, [actual])
+ *
+ * Returns the `actual` value for an Assertion
+ *
+ * @param {Object} object (constructed Assertion)
+ * @param {Arguments} chai.Assertion.prototype.assert arguments
+ * @namespace Utils
+ * @name getActual
+ */
+
+module.exports = function (obj, args) {
+ return args.length > 4 ? args[4] : obj._obj;
+};
+
+},{}],15:[function(require,module,exports){
+/*!
+ * Chai - getEnumerableProperties utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/**
+ * ### .getEnumerableProperties(object)
+ *
+ * This allows the retrieval of enumerable property names of an object,
+ * inherited or not.
+ *
+ * @param {Object} object
+ * @returns {Array}
+ * @namespace Utils
+ * @name getEnumerableProperties
+ * @api public
+ */
+
+module.exports = function getEnumerableProperties(object) {
+ var result = [];
+ for (var name in object) {
+ result.push(name);
+ }
+ return result;
+};
+
+},{}],16:[function(require,module,exports){
+/*!
+ * Chai - message composition utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/*!
+ * Module dependancies
+ */
+
+var flag = require('./flag')
+ , getActual = require('./getActual')
+ , inspect = require('./inspect')
+ , objDisplay = require('./objDisplay');
+
+/**
+ * ### .getMessage(object, message, negateMessage)
+ *
+ * Construct the error message based on flags
+ * and template tags. Template tags will return
+ * a stringified inspection of the object referenced.
+ *
+ * Message template tags:
+ * - `#{this}` current asserted object
+ * - `#{act}` actual value
+ * - `#{exp}` expected value
+ *
+ * @param {Object} object (constructed Assertion)
+ * @param {Arguments} chai.Assertion.prototype.assert arguments
+ * @namespace Utils
+ * @name getMessage
+ * @api public
+ */
+
+module.exports = function (obj, args) {
+ var negate = flag(obj, 'negate')
+ , val = flag(obj, 'object')
+ , expected = args[3]
+ , actual = getActual(obj, args)
+ , msg = negate ? args[2] : args[1]
+ , flagMsg = flag(obj, 'message');
+
+ if(typeof msg === "function") msg = msg();
+ msg = msg || '';
+ msg = msg
+ .replace(/#\{this\}/g, function () { return objDisplay(val); })
+ .replace(/#\{act\}/g, function () { return objDisplay(actual); })
+ .replace(/#\{exp\}/g, function () { return objDisplay(expected); });
+
+ return flagMsg ? flagMsg + ': ' + msg : msg;
+};
+
+},{"./flag":13,"./getActual":14,"./inspect":23,"./objDisplay":24}],17:[function(require,module,exports){
+/*!
+ * Chai - getName utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/**
+ * # getName(func)
+ *
+ * Gets the name of a function, in a cross-browser way.
+ *
+ * @param {Function} a function (usually a constructor)
+ * @namespace Utils
+ * @name getName
+ */
+
+module.exports = function (func) {
+ if (func.name) return func.name;
+
+ var match = /^\s?function ([^(]*)\(/.exec(func);
+ return match && match[1] ? match[1] : "";
+};
+
+},{}],18:[function(require,module,exports){
+/*!
+ * Chai - getPathInfo utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+var hasProperty = require('./hasProperty');
+
+/**
+ * ### .getPathInfo(path, object)
+ *
+ * This allows the retrieval of property info in an
+ * object given a string path.
+ *
+ * The path info consists of an object with the
+ * following properties:
+ *
+ * * parent - The parent object of the property referenced by `path`
+ * * name - The name of the final property, a number if it was an array indexer
+ * * value - The value of the property, if it exists, otherwise `undefined`
+ * * exists - Whether the property exists or not
+ *
+ * @param {String} path
+ * @param {Object} object
+ * @returns {Object} info
+ * @namespace Utils
+ * @name getPathInfo
+ * @api public
+ */
+
+module.exports = function getPathInfo(path, obj) {
+ var parsed = parsePath(path),
+ last = parsed[parsed.length - 1];
+
+ var info = {
+ parent: parsed.length > 1 ? _getPathValue(parsed, obj, parsed.length - 1) : obj,
+ name: last.p || last.i,
+ value: _getPathValue(parsed, obj)
+ };
+ info.exists = hasProperty(info.name, info.parent);
+
+ return info;
+};
+
+
+/*!
+ * ## parsePath(path)
+ *
+ * Helper function used to parse string object
+ * paths. Use in conjunction with `_getPathValue`.
+ *
+ * var parsed = parsePath('myobject.property.subprop');
+ *
+ * ### Paths:
+ *
+ * * Can be as near infinitely deep and nested
+ * * Arrays are also valid using the formal `myobject.document[3].property`.
+ * * Literal dots and brackets (not delimiter) must be backslash-escaped.
+ *
+ * @param {String} path
+ * @returns {Object} parsed
+ * @api private
+ */
+
+function parsePath (path) {
+ var str = path.replace(/([^\\])\[/g, '$1.[')
+ , parts = str.match(/(\\\.|[^.]+?)+/g);
+ return parts.map(function (value) {
+ var re = /^\[(\d+)\]$/
+ , mArr = re.exec(value);
+ if (mArr) return { i: parseFloat(mArr[1]) };
+ else return { p: value.replace(/\\([.\[\]])/g, '$1') };
+ });
+}
+
+
+/*!
+ * ## _getPathValue(parsed, obj)
+ *
+ * Helper companion function for `.parsePath` that returns
+ * the value located at the parsed address.
+ *
+ * var value = getPathValue(parsed, obj);
+ *
+ * @param {Object} parsed definition from `parsePath`.
+ * @param {Object} object to search against
+ * @param {Number} object to search against
+ * @returns {Object|Undefined} value
+ * @api private
+ */
+
+function _getPathValue (parsed, obj, index) {
+ var tmp = obj
+ , res;
+
+ index = (index === undefined ? parsed.length : index);
+
+ for (var i = 0, l = index; i < l; i++) {
+ var part = parsed[i];
+ if (tmp) {
+ if ('undefined' !== typeof part.p)
+ tmp = tmp[part.p];
+ else if ('undefined' !== typeof part.i)
+ tmp = tmp[part.i];
+ if (i == (l - 1)) res = tmp;
+ } else {
+ res = undefined;
+ }
+ }
+ return res;
+}
+
+},{"./hasProperty":21}],19:[function(require,module,exports){
+/*!
+ * Chai - getPathValue utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * @see https://github.com/logicalparadox/filtr
+ * MIT Licensed
+ */
+
+var getPathInfo = require('./getPathInfo');
+
+/**
+ * ### .getPathValue(path, object)
+ *
+ * This allows the retrieval of values in an
+ * object given a string path.
+ *
+ * var obj = {
+ * prop1: {
+ * arr: ['a', 'b', 'c']
+ * , str: 'Hello'
+ * }
+ * , prop2: {
+ * arr: [ { nested: 'Universe' } ]
+ * , str: 'Hello again!'
+ * }
+ * }
+ *
+ * The following would be the results.
+ *
+ * getPathValue('prop1.str', obj); // Hello
+ * getPathValue('prop1.att[2]', obj); // b
+ * getPathValue('prop2.arr[0].nested', obj); // Universe
+ *
+ * @param {String} path
+ * @param {Object} object
+ * @returns {Object} value or `undefined`
+ * @namespace Utils
+ * @name getPathValue
+ * @api public
+ */
+module.exports = function(path, obj) {
+ var info = getPathInfo(path, obj);
+ return info.value;
+};
+
+},{"./getPathInfo":18}],20:[function(require,module,exports){
+/*!
+ * Chai - getProperties utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/**
+ * ### .getProperties(object)
+ *
+ * This allows the retrieval of property names of an object, enumerable or not,
+ * inherited or not.
+ *
+ * @param {Object} object
+ * @returns {Array}
+ * @namespace Utils
+ * @name getProperties
+ * @api public
+ */
+
+module.exports = function getProperties(object) {
+ var result = Object.getOwnPropertyNames(object);
+
+ function addProperty(property) {
+ if (result.indexOf(property) === -1) {
+ result.push(property);
+ }
+ }
+
+ var proto = Object.getPrototypeOf(object);
+ while (proto !== null) {
+ Object.getOwnPropertyNames(proto).forEach(addProperty);
+ proto = Object.getPrototypeOf(proto);
+ }
+
+ return result;
+};
+
+},{}],21:[function(require,module,exports){
+/*!
+ * Chai - hasProperty utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+var type = require('type-detect');
+
+/**
+ * ### .hasProperty(object, name)
+ *
+ * This allows checking whether an object has
+ * named property or numeric array index.
+ *
+ * Basically does the same thing as the `in`
+ * operator but works properly with natives
+ * and null/undefined values.
+ *
+ * var obj = {
+ * arr: ['a', 'b', 'c']
+ * , str: 'Hello'
+ * }
+ *
+ * The following would be the results.
+ *
+ * hasProperty('str', obj); // true
+ * hasProperty('constructor', obj); // true
+ * hasProperty('bar', obj); // false
+ *
+ * hasProperty('length', obj.str); // true
+ * hasProperty(1, obj.str); // true
+ * hasProperty(5, obj.str); // false
+ *
+ * hasProperty('length', obj.arr); // true
+ * hasProperty(2, obj.arr); // true
+ * hasProperty(3, obj.arr); // false
+ *
+ * @param {Objuect} object
+ * @param {String|Number} name
+ * @returns {Boolean} whether it exists
+ * @namespace Utils
+ * @name getPathInfo
+ * @api public
+ */
+
+var literals = {
+ 'number': Number
+ , 'string': String
+};
+
+module.exports = function hasProperty(name, obj) {
+ var ot = type(obj);
+
+ // Bad Object, obviously no props at all
+ if(ot === 'null' || ot === 'undefined')
+ return false;
+
+ // The `in` operator does not work with certain literals
+ // box these before the check
+ if(literals[ot] && typeof obj !== 'object')
+ obj = new literals[ot](obj);
+
+ return name in obj;
+};
+
+},{"type-detect":35}],22:[function(require,module,exports){
+/*!
+ * chai
+ * Copyright(c) 2011 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/*!
+ * Main exports
+ */
+
+var exports = module.exports = {};
+
+/*!
+ * test utility
+ */
+
+exports.test = require('./test');
+
+/*!
+ * type utility
+ */
+
+exports.type = require('type-detect');
+
+/*!
+ * expectTypes utility
+ */
+exports.expectTypes = require('./expectTypes');
+
+/*!
+ * message utility
+ */
+
+exports.getMessage = require('./getMessage');
+
+/*!
+ * actual utility
+ */
+
+exports.getActual = require('./getActual');
+
+/*!
+ * Inspect util
+ */
+
+exports.inspect = require('./inspect');
+
+/*!
+ * Object Display util
+ */
+
+exports.objDisplay = require('./objDisplay');
+
+/*!
+ * Flag utility
+ */
+
+exports.flag = require('./flag');
+
+/*!
+ * Flag transferring utility
+ */
+
+exports.transferFlags = require('./transferFlags');
+
+/*!
+ * Deep equal utility
+ */
+
+exports.eql = require('deep-eql');
+
+/*!
+ * Deep path value
+ */
+
+exports.getPathValue = require('./getPathValue');
+
+/*!
+ * Deep path info
+ */
+
+exports.getPathInfo = require('./getPathInfo');
+
+/*!
+ * Check if a property exists
+ */
+
+exports.hasProperty = require('./hasProperty');
+
+/*!
+ * Function name
+ */
+
+exports.getName = require('./getName');
+
+/*!
+ * add Property
+ */
+
+exports.addProperty = require('./addProperty');
+
+/*!
+ * add Method
+ */
+
+exports.addMethod = require('./addMethod');
+
+/*!
+ * overwrite Property
+ */
+
+exports.overwriteProperty = require('./overwriteProperty');
+
+/*!
+ * overwrite Method
+ */
+
+exports.overwriteMethod = require('./overwriteMethod');
+
+/*!
+ * Add a chainable method
+ */
+
+exports.addChainableMethod = require('./addChainableMethod');
+
+/*!
+ * Overwrite chainable method
+ */
+
+exports.overwriteChainableMethod = require('./overwriteChainableMethod');
+
+},{"./addChainableMethod":9,"./addMethod":10,"./addProperty":11,"./expectTypes":12,"./flag":13,"./getActual":14,"./getMessage":16,"./getName":17,"./getPathInfo":18,"./getPathValue":19,"./hasProperty":21,"./inspect":23,"./objDisplay":24,"./overwriteChainableMethod":25,"./overwriteMethod":26,"./overwriteProperty":27,"./test":28,"./transferFlags":29,"deep-eql":31,"type-detect":35}],23:[function(require,module,exports){
+// This is (almost) directly from Node.js utils
+// https://github.com/joyent/node/blob/f8c335d0caf47f16d31413f89aa28eda3878e3aa/lib/util.js
+
+var getName = require('./getName');
+var getProperties = require('./getProperties');
+var getEnumerableProperties = require('./getEnumerableProperties');
+
+module.exports = inspect;
+
+/**
+ * Echos the value of a value. Trys to print the value out
+ * in the best way possible given the different types.
+ *
+ * @param {Object} obj The object to print out.
+ * @param {Boolean} showHidden Flag that shows hidden (not enumerable)
+ * properties of objects.
+ * @param {Number} depth Depth in which to descend in object. Default is 2.
+ * @param {Boolean} colors Flag to turn on ANSI escape codes to color the
+ * output. Default is false (no coloring).
+ * @namespace Utils
+ * @name inspect
+ */
+function inspect(obj, showHidden, depth, colors) {
+ var ctx = {
+ showHidden: showHidden,
+ seen: [],
+ stylize: function (str) { return str; }
+ };
+ return formatValue(ctx, obj, (typeof depth === 'undefined' ? 2 : depth));
+}
+
+// Returns true if object is a DOM element.
+var isDOMElement = function (object) {
+ if (typeof HTMLElement === 'object') {
+ return object instanceof HTMLElement;
+ } else {
+ return object &&
+ typeof object === 'object' &&
+ object.nodeType === 1 &&
+ typeof object.nodeName === 'string';
+ }
+};
+
+function formatValue(ctx, value, recurseTimes) {
+ // Provide a hook for user-specified inspect functions.
+ // Check that value is an object with an inspect function on it
+ if (value && typeof value.inspect === 'function' &&
+ // Filter out the util module, it's inspect function is special
+ value.inspect !== exports.inspect &&
+ // Also filter out any prototype objects using the circular check.
+ !(value.constructor && value.constructor.prototype === value)) {
+ var ret = value.inspect(recurseTimes);
+ if (typeof ret !== 'string') {
+ ret = formatValue(ctx, ret, recurseTimes);
+ }
+ return ret;
+ }
+
+ // Primitive types cannot have properties
+ var primitive = formatPrimitive(ctx, value);
+ if (primitive) {
+ return primitive;
+ }
+
+ // If this is a DOM element, try to get the outer HTML.
+ if (isDOMElement(value)) {
+ if ('outerHTML' in value) {
+ return value.outerHTML;
+ // This value does not have an outerHTML attribute,
+ // it could still be an XML element
+ } else {
+ // Attempt to serialize it
+ try {
+ if (document.xmlVersion) {
+ var xmlSerializer = new XMLSerializer();
+ return xmlSerializer.serializeToString(value);
+ } else {
+ // Firefox 11- do not support outerHTML
+ // It does, however, support innerHTML
+ // Use the following to render the element
+ var ns = "http://www.w3.org/1999/xhtml";
+ var container = document.createElementNS(ns, '_');
+
+ container.appendChild(value.cloneNode(false));
+ html = container.innerHTML
+ .replace('><', '>' + value.innerHTML + '<');
+ container.innerHTML = '';
+ return html;
+ }
+ } catch (err) {
+ // This could be a non-native DOM implementation,
+ // continue with the normal flow:
+ // printing the element as if it is an object.
+ }
+ }
+ }
+
+ // Look up the keys of the object.
+ var visibleKeys = getEnumerableProperties(value);
+ var keys = ctx.showHidden ? getProperties(value) : visibleKeys;
+
+ // Some type of object without properties can be shortcutted.
+ // In IE, errors have a single `stack` property, or if they are vanilla `Error`,
+ // a `stack` plus `description` property; ignore those for consistency.
+ if (keys.length === 0 || (isError(value) && (
+ (keys.length === 1 && keys[0] === 'stack') ||
+ (keys.length === 2 && keys[0] === 'description' && keys[1] === 'stack')
+ ))) {
+ if (typeof value === 'function') {
+ var name = getName(value);
+ var nameSuffix = name ? ': ' + name : '';
+ return ctx.stylize('[Function' + nameSuffix + ']', 'special');
+ }
+ if (isRegExp(value)) {
+ return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
+ }
+ if (isDate(value)) {
+ return ctx.stylize(Date.prototype.toUTCString.call(value), 'date');
+ }
+ if (isError(value)) {
+ return formatError(value);
+ }
+ }
+
+ var base = '', array = false, braces = ['{', '}'];
+
+ // Make Array say that they are Array
+ if (isArray(value)) {
+ array = true;
+ braces = ['[', ']'];
+ }
+
+ // Make functions say that they are functions
+ if (typeof value === 'function') {
+ var name = getName(value);
+ var nameSuffix = name ? ': ' + name : '';
+ base = ' [Function' + nameSuffix + ']';
+ }
+
+ // Make RegExps say that they are RegExps
+ if (isRegExp(value)) {
+ base = ' ' + RegExp.prototype.toString.call(value);
+ }
+
+ // Make dates with properties first say the date
+ if (isDate(value)) {
+ base = ' ' + Date.prototype.toUTCString.call(value);
+ }
+
+ // Make error with message first say the error
+ if (isError(value)) {
+ return formatError(value);
+ }
+
+ if (keys.length === 0 && (!array || value.length == 0)) {
+ return braces[0] + base + braces[1];
+ }
+
+ if (recurseTimes < 0) {
+ if (isRegExp(value)) {
+ return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
+ } else {
+ return ctx.stylize('[Object]', 'special');
+ }
+ }
+
+ ctx.seen.push(value);
+
+ var output;
+ if (array) {
+ output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
+ } else {
+ output = keys.map(function(key) {
+ return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
+ });
+ }
+
+ ctx.seen.pop();
+
+ return reduceToSingleString(output, base, braces);
+}
+
+
+function formatPrimitive(ctx, value) {
+ switch (typeof value) {
+ case 'undefined':
+ return ctx.stylize('undefined', 'undefined');
+
+ case 'string':
+ var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
+ .replace(/'/g, "\\'")
+ .replace(/\\"/g, '"') + '\'';
+ return ctx.stylize(simple, 'string');
+
+ case 'number':
+ if (value === 0 && (1/value) === -Infinity) {
+ return ctx.stylize('-0', 'number');
+ }
+ return ctx.stylize('' + value, 'number');
+
+ case 'boolean':
+ return ctx.stylize('' + value, 'boolean');
+ }
+ // For some reason typeof null is "object", so special case here.
+ if (value === null) {
+ return ctx.stylize('null', 'null');
+ }
+}
+
+
+function formatError(value) {
+ return '[' + Error.prototype.toString.call(value) + ']';
+}
+
+
+function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
+ var output = [];
+ for (var i = 0, l = value.length; i < l; ++i) {
+ if (Object.prototype.hasOwnProperty.call(value, String(i))) {
+ output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
+ String(i), true));
+ } else {
+ output.push('');
+ }
+ }
+ keys.forEach(function(key) {
+ if (!key.match(/^\d+$/)) {
+ output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
+ key, true));
+ }
+ });
+ return output;
+}
+
+
+function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
+ var name, str;
+ if (value.__lookupGetter__) {
+ if (value.__lookupGetter__(key)) {
+ if (value.__lookupSetter__(key)) {
+ str = ctx.stylize('[Getter/Setter]', 'special');
+ } else {
+ str = ctx.stylize('[Getter]', 'special');
+ }
+ } else {
+ if (value.__lookupSetter__(key)) {
+ str = ctx.stylize('[Setter]', 'special');
+ }
+ }
+ }
+ if (visibleKeys.indexOf(key) < 0) {
+ name = '[' + key + ']';
+ }
+ if (!str) {
+ if (ctx.seen.indexOf(value[key]) < 0) {
+ if (recurseTimes === null) {
+ str = formatValue(ctx, value[key], null);
+ } else {
+ str = formatValue(ctx, value[key], recurseTimes - 1);
+ }
+ if (str.indexOf('\n') > -1) {
+ if (array) {
+ str = str.split('\n').map(function(line) {
+ return ' ' + line;
+ }).join('\n').substr(2);
+ } else {
+ str = '\n' + str.split('\n').map(function(line) {
+ return ' ' + line;
+ }).join('\n');
+ }
+ }
+ } else {
+ str = ctx.stylize('[Circular]', 'special');
+ }
+ }
+ if (typeof name === 'undefined') {
+ if (array && key.match(/^\d+$/)) {
+ return str;
+ }
+ name = JSON.stringify('' + key);
+ if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
+ name = name.substr(1, name.length - 2);
+ name = ctx.stylize(name, 'name');
+ } else {
+ name = name.replace(/'/g, "\\'")
+ .replace(/\\"/g, '"')
+ .replace(/(^"|"$)/g, "'");
+ name = ctx.stylize(name, 'string');
+ }
+ }
+
+ return name + ': ' + str;
+}
+
+
+function reduceToSingleString(output, base, braces) {
+ var numLinesEst = 0;
+ var length = output.reduce(function(prev, cur) {
+ numLinesEst++;
+ if (cur.indexOf('\n') >= 0) numLinesEst++;
+ return prev + cur.length + 1;
+ }, 0);
+
+ if (length > 60) {
+ return braces[0] +
+ (base === '' ? '' : base + '\n ') +
+ ' ' +
+ output.join(',\n ') +
+ ' ' +
+ braces[1];
+ }
+
+ return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
+}
+
+function isArray(ar) {
+ return Array.isArray(ar) ||
+ (typeof ar === 'object' && objectToString(ar) === '[object Array]');
+}
+
+function isRegExp(re) {
+ return typeof re === 'object' && objectToString(re) === '[object RegExp]';
+}
+
+function isDate(d) {
+ return typeof d === 'object' && objectToString(d) === '[object Date]';
+}
+
+function isError(e) {
+ return typeof e === 'object' && objectToString(e) === '[object Error]';
+}
+
+function objectToString(o) {
+ return Object.prototype.toString.call(o);
+}
+
+},{"./getEnumerableProperties":15,"./getName":17,"./getProperties":20}],24:[function(require,module,exports){
+/*!
+ * Chai - flag utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/*!
+ * Module dependancies
+ */
+
+var inspect = require('./inspect');
+var config = require('../config');
+
+/**
+ * ### .objDisplay (object)
+ *
+ * Determines if an object or an array matches
+ * criteria to be inspected in-line for error
+ * messages or should be truncated.
+ *
+ * @param {Mixed} javascript object to inspect
+ * @name objDisplay
+ * @namespace Utils
+ * @api public
+ */
+
+module.exports = function (obj) {
+ var str = inspect(obj)
+ , type = Object.prototype.toString.call(obj);
+
+ if (config.truncateThreshold && str.length >= config.truncateThreshold) {
+ if (type === '[object Function]') {
+ return !obj.name || obj.name === ''
+ ? '[Function]'
+ : '[Function: ' + obj.name + ']';
+ } else if (type === '[object Array]') {
+ return '[ Array(' + obj.length + ') ]';
+ } else if (type === '[object Object]') {
+ var keys = Object.keys(obj)
+ , kstr = keys.length > 2
+ ? keys.splice(0, 2).join(', ') + ', ...'
+ : keys.join(', ');
+ return '{ Object (' + kstr + ') }';
+ } else {
+ return str;
+ }
+ } else {
+ return str;
+ }
+};
+
+},{"../config":4,"./inspect":23}],25:[function(require,module,exports){
+/*!
+ * Chai - overwriteChainableMethod utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/**
+ * ### overwriteChainableMethod (ctx, name, method, chainingBehavior)
+ *
+ * Overwites an already existing chainable method
+ * and provides access to the previous function or
+ * property. Must return functions to be used for
+ * name.
+ *
+ * utils.overwriteChainableMethod(chai.Assertion.prototype, 'length',
+ * function (_super) {
+ * }
+ * , function (_super) {
+ * }
+ * );
+ *
+ * Can also be accessed directly from `chai.Assertion`.
+ *
+ * chai.Assertion.overwriteChainableMethod('foo', fn, fn);
+ *
+ * Then can be used as any other assertion.
+ *
+ * expect(myFoo).to.have.length(3);
+ * expect(myFoo).to.have.length.above(3);
+ *
+ * @param {Object} ctx object whose method / property is to be overwritten
+ * @param {String} name of method / property to overwrite
+ * @param {Function} method function that returns a function to be used for name
+ * @param {Function} chainingBehavior function that returns a function to be used for property
+ * @namespace Utils
+ * @name overwriteChainableMethod
+ * @api public
+ */
+
+module.exports = function (ctx, name, method, chainingBehavior) {
+ var chainableBehavior = ctx.__methods[name];
+
+ var _chainingBehavior = chainableBehavior.chainingBehavior;
+ chainableBehavior.chainingBehavior = function () {
+ var result = chainingBehavior(_chainingBehavior).call(this);
+ return result === undefined ? this : result;
+ };
+
+ var _method = chainableBehavior.method;
+ chainableBehavior.method = function () {
+ var result = method(_method).apply(this, arguments);
+ return result === undefined ? this : result;
+ };
+};
+
+},{}],26:[function(require,module,exports){
+/*!
+ * Chai - overwriteMethod utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/**
+ * ### overwriteMethod (ctx, name, fn)
+ *
+ * Overwites an already existing method and provides
+ * access to previous function. Must return function
+ * to be used for name.
+ *
+ * utils.overwriteMethod(chai.Assertion.prototype, 'equal', function (_super) {
+ * return function (str) {
+ * var obj = utils.flag(this, 'object');
+ * if (obj instanceof Foo) {
+ * new chai.Assertion(obj.value).to.equal(str);
+ * } else {
+ * _super.apply(this, arguments);
+ * }
+ * }
+ * });
+ *
+ * Can also be accessed directly from `chai.Assertion`.
+ *
+ * chai.Assertion.overwriteMethod('foo', fn);
+ *
+ * Then can be used as any other assertion.
+ *
+ * expect(myFoo).to.equal('bar');
+ *
+ * @param {Object} ctx object whose method is to be overwritten
+ * @param {String} name of method to overwrite
+ * @param {Function} method function that returns a function to be used for name
+ * @namespace Utils
+ * @name overwriteMethod
+ * @api public
+ */
+
+module.exports = function (ctx, name, method) {
+ var _method = ctx[name]
+ , _super = function () { return this; };
+
+ if (_method && 'function' === typeof _method)
+ _super = _method;
+
+ ctx[name] = function () {
+ var result = method(_super).apply(this, arguments);
+ return result === undefined ? this : result;
+ }
+};
+
+},{}],27:[function(require,module,exports){
+/*!
+ * Chai - overwriteProperty utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/**
+ * ### overwriteProperty (ctx, name, fn)
+ *
+ * Overwites an already existing property getter and provides
+ * access to previous value. Must return function to use as getter.
+ *
+ * utils.overwriteProperty(chai.Assertion.prototype, 'ok', function (_super) {
+ * return function () {
+ * var obj = utils.flag(this, 'object');
+ * if (obj instanceof Foo) {
+ * new chai.Assertion(obj.name).to.equal('bar');
+ * } else {
+ * _super.call(this);
+ * }
+ * }
+ * });
+ *
+ *
+ * Can also be accessed directly from `chai.Assertion`.
+ *
+ * chai.Assertion.overwriteProperty('foo', fn);
+ *
+ * Then can be used as any other assertion.
+ *
+ * expect(myFoo).to.be.ok;
+ *
+ * @param {Object} ctx object whose property is to be overwritten
+ * @param {String} name of property to overwrite
+ * @param {Function} getter function that returns a getter function to be used for name
+ * @namespace Utils
+ * @name overwriteProperty
+ * @api public
+ */
+
+module.exports = function (ctx, name, getter) {
+ var _get = Object.getOwnPropertyDescriptor(ctx, name)
+ , _super = function () {};
+
+ if (_get && 'function' === typeof _get.get)
+ _super = _get.get
+
+ Object.defineProperty(ctx, name,
+ { get: function () {
+ var result = getter(_super).call(this);
+ return result === undefined ? this : result;
+ }
+ , configurable: true
+ });
+};
+
+},{}],28:[function(require,module,exports){
+/*!
+ * Chai - test utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/*!
+ * Module dependancies
+ */
+
+var flag = require('./flag');
+
+/**
+ * # test(object, expression)
+ *
+ * Test and object for expression.
+ *
+ * @param {Object} object (constructed Assertion)
+ * @param {Arguments} chai.Assertion.prototype.assert arguments
+ * @namespace Utils
+ * @name test
+ */
+
+module.exports = function (obj, args) {
+ var negate = flag(obj, 'negate')
+ , expr = args[0];
+ return negate ? !expr : expr;
+};
+
+},{"./flag":13}],29:[function(require,module,exports){
+/*!
+ * Chai - transferFlags utility
+ * Copyright(c) 2012-2014 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/**
+ * ### transferFlags(assertion, object, includeAll = true)
+ *
+ * Transfer all the flags for `assertion` to `object`. If
+ * `includeAll` is set to `false`, then the base Chai
+ * assertion flags (namely `object`, `ssfi`, and `message`)
+ * will not be transferred.
+ *
+ *
+ * var newAssertion = new Assertion();
+ * utils.transferFlags(assertion, newAssertion);
+ *
+ * var anotherAsseriton = new Assertion(myObj);
+ * utils.transferFlags(assertion, anotherAssertion, false);
+ *
+ * @param {Assertion} assertion the assertion to transfer the flags from
+ * @param {Object} object the object to transfer the flags to; usually a new assertion
+ * @param {Boolean} includeAll
+ * @namespace Utils
+ * @name transferFlags
+ * @api private
+ */
+
+module.exports = function (assertion, object, includeAll) {
+ var flags = assertion.__flags || (assertion.__flags = Object.create(null));
+
+ if (!object.__flags) {
+ object.__flags = Object.create(null);
+ }
+
+ includeAll = arguments.length === 3 ? includeAll : true;
+
+ for (var flag in flags) {
+ if (includeAll ||
+ (flag !== 'object' && flag !== 'ssfi' && flag != 'message')) {
+ object.__flags[flag] = flags[flag];
+ }
+ }
+};
+
+},{}],30:[function(require,module,exports){
+/*!
+ * assertion-error
+ * Copyright(c) 2013 Jake Luer <jake@qualiancy.com>
+ * MIT Licensed
+ */
+
+/*!
+ * Return a function that will copy properties from
+ * one object to another excluding any originally
+ * listed. Returned function will create a new `{}`.
+ *
+ * @param {String} excluded properties ...
+ * @return {Function}
+ */
+
+function exclude () {
+ var excludes = [].slice.call(arguments);
+
+ function excludeProps (res, obj) {
+ Object.keys(obj).forEach(function (key) {
+ if (!~excludes.indexOf(key)) res[key] = obj[key];
+ });
+ }
+
+ return function extendExclude () {
+ var args = [].slice.call(arguments)
+ , i = 0
+ , res = {};
+
+ for (; i < args.length; i++) {
+ excludeProps(res, args[i]);
+ }
+
+ return res;
+ };
+};
+
+/*!
+ * Primary Exports
+ */
+
+module.exports = AssertionError;
+
+/**
+ * ### AssertionError
+ *
+ * An extension of the JavaScript `Error` constructor for
+ * assertion and validation scenarios.
+ *
+ * @param {String} message
+ * @param {Object} properties to include (optional)
+ * @param {callee} start stack function (optional)
+ */
+
+function AssertionError (message, _props, ssf) {
+ var extend = exclude('name', 'message', 'stack', 'constructor', 'toJSON')
+ , props = extend(_props || {});
+
+ // default values
+ this.message = message || 'Unspecified AssertionError';
+ this.showDiff = false;
+
+ // copy from properties
+ for (var key in props) {
+ this[key] = props[key];
+ }
+
+ // capture stack trace
+ ssf = ssf || arguments.callee;
+ if (ssf && Error.captureStackTrace) {
+ Error.captureStackTrace(this, ssf);
+ } else {
+ this.stack = new Error().stack;
+ }
+}
+
+/*!
+ * Inherit from Error.prototype
+ */
+
+AssertionError.prototype = Object.create(Error.prototype);
+
+/*!
+ * Statically set name
+ */
+
+AssertionError.prototype.name = 'AssertionError';
+
+/*!
+ * Ensure correct constructor
+ */
+
+AssertionError.prototype.constructor = AssertionError;
+
+/**
+ * Allow errors to be converted to JSON for static transfer.
+ *
+ * @param {Boolean} include stack (default: `true`)
+ * @return {Object} object that can be `JSON.stringify`
+ */
+
+AssertionError.prototype.toJSON = function (stack) {
+ var extend = exclude('constructor', 'toJSON', 'stack')
+ , props = extend({ name: this.name }, this);
+
+ // include stack if exists and not turned off
+ if (false !== stack && this.stack) {
+ props.stack = this.stack;
+ }
+
+ return props;
+};
+
+},{}],31:[function(require,module,exports){
+module.exports = require('./lib/eql');
+
+},{"./lib/eql":32}],32:[function(require,module,exports){
+/*!
+ * deep-eql
+ * Copyright(c) 2013 Jake Luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/*!
+ * Module dependencies
+ */
+
+var type = require('type-detect');
+
+/*!
+ * Buffer.isBuffer browser shim
+ */
+
+var Buffer;
+try { Buffer = require('buffer').Buffer; }
+catch(ex) {
+ Buffer = {};
+ Buffer.isBuffer = function() { return false; }
+}
+
+/*!
+ * Primary Export
+ */
+
+module.exports = deepEqual;
+
+/**
+ * Assert super-strict (egal) equality between
+ * two objects of any type.
+ *
+ * @param {Mixed} a
+ * @param {Mixed} b
+ * @param {Array} memoised (optional)
+ * @return {Boolean} equal match
+ */
+
+function deepEqual(a, b, m) {
+ if (sameValue(a, b)) {
+ return true;
+ } else if ('date' === type(a)) {
+ return dateEqual(a, b);
+ } else if ('regexp' === type(a)) {
+ return regexpEqual(a, b);
+ } else if (Buffer.isBuffer(a)) {
+ return bufferEqual(a, b);
+ } else if ('arguments' === type(a)) {
+ return argumentsEqual(a, b, m);
+ } else if (!typeEqual(a, b)) {
+ return false;
+ } else if (('object' !== type(a) && 'object' !== type(b))
+ && ('array' !== type(a) && 'array' !== type(b))) {
+ return sameValue(a, b);
+ } else {
+ return objectEqual(a, b, m);
+ }
+}
+
+/*!
+ * Strict (egal) equality test. Ensures that NaN always
+ * equals NaN and `-0` does not equal `+0`.
+ *
+ * @param {Mixed} a
+ * @param {Mixed} b
+ * @return {Boolean} equal match
+ */
+
+function sameValue(a, b) {
+ if (a === b) return a !== 0 || 1 / a === 1 / b;
+ return a !== a && b !== b;
+}
+
+/*!
+ * Compare the types of two given objects and
+ * return if they are equal. Note that an Array
+ * has a type of `array` (not `object`) and arguments
+ * have a type of `arguments` (not `array`/`object`).
+ *
+ * @param {Mixed} a
+ * @param {Mixed} b
+ * @return {Boolean} result
+ */
+
+function typeEqual(a, b) {
+ return type(a) === type(b);
+}
+
+/*!
+ * Compare two Date objects by asserting that
+ * the time values are equal using `saveValue`.
+ *
+ * @param {Date} a
+ * @param {Date} b
+ * @return {Boolean} result
+ */
+
+function dateEqual(a, b) {
+ if ('date' !== type(b)) return false;
+ return sameValue(a.getTime(), b.getTime());
+}
+
+/*!
+ * Compare two regular expressions by converting them
+ * to string and checking for `sameValue`.
+ *
+ * @param {RegExp} a
+ * @param {RegExp} b
+ * @return {Boolean} result
+ */
+
+function regexpEqual(a, b) {
+ if ('regexp' !== type(b)) return false;
+ return sameValue(a.toString(), b.toString());
+}
+
+/*!
+ * Assert deep equality of two `arguments` objects.
+ * Unfortunately, these must be sliced to arrays
+ * prior to test to ensure no bad behavior.
+ *
+ * @param {Arguments} a
+ * @param {Arguments} b
+ * @param {Array} memoize (optional)
+ * @return {Boolean} result
+ */
+
+function argumentsEqual(a, b, m) {
+ if ('arguments' !== type(b)) return false;
+ a = [].slice.call(a);
+ b = [].slice.call(b);
+ return deepEqual(a, b, m);
+}
+
+/*!
+ * Get enumerable properties of a given object.
+ *
+ * @param {Object} a
+ * @return {Array} property names
+ */
+
+function enumerable(a) {
+ var res = [];
+ for (var key in a) res.push(key);
+ return res;
+}
+
+/*!
+ * Simple equality for flat iterable objects
+ * such as Arrays or Node.js buffers.
+ *
+ * @param {Iterable} a
+ * @param {Iterable} b
+ * @return {Boolean} result
+ */
+
+function iterableEqual(a, b) {
+ if (a.length !== b.length) return false;
+
+ var i = 0;
+ var match = true;
+
+ for (; i < a.length; i++) {
+ if (a[i] !== b[i]) {
+ match = false;
+ break;
+ }
+ }
+
+ return match;
+}
+
+/*!
+ * Extension to `iterableEqual` specifically
+ * for Node.js Buffers.
+ *
+ * @param {Buffer} a
+ * @param {Mixed} b
+ * @return {Boolean} result
+ */
+
+function bufferEqual(a, b) {
+ if (!Buffer.isBuffer(b)) return false;
+ return iterableEqual(a, b);
+}
+
+/*!
+ * Block for `objectEqual` ensuring non-existing
+ * values don't get in.
+ *
+ * @param {Mixed} object
+ * @return {Boolean} result
+ */
+
+function isValue(a) {
+ return a !== null && a !== undefined;
+}
+
+/*!
+ * Recursively check the equality of two objects.
+ * Once basic sameness has been established it will
+ * defer to `deepEqual` for each enumerable key
+ * in the object.
+ *
+ * @param {Mixed} a
+ * @param {Mixed} b
+ * @return {Boolean} result
+ */
+
+function objectEqual(a, b, m) {
+ if (!isValue(a) || !isValue(b)) {
+ return false;
+ }
+
+ if (a.prototype !== b.prototype) {
+ return false;
+ }
+
+ var i;
+ if (m) {
+ for (i = 0; i < m.length; i++) {
+ if ((m[i][0] === a && m[i][1] === b)
+ || (m[i][0] === b && m[i][1] === a)) {
+ return true;
+ }
+ }
+ } else {
+ m = [];
+ }
+
+ try {
+ var ka = enumerable(a);
+ var kb = enumerable(b);
+ } catch (ex) {
+ return false;
+ }
+
+ ka.sort();
+ kb.sort();
+
+ if (!iterableEqual(ka, kb)) {
+ return false;
+ }
+
+ m.push([ a, b ]);
+
+ var key;
+ for (i = ka.length - 1; i >= 0; i--) {
+ key = ka[i];
+ if (!deepEqual(a[key], b[key], m)) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+},{"buffer":undefined,"type-detect":33}],33:[function(require,module,exports){
+module.exports = require('./lib/type');
+
+},{"./lib/type":34}],34:[function(require,module,exports){
+/*!
+ * type-detect
+ * Copyright(c) 2013 jake luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/*!
+ * Primary Exports
+ */
+
+var exports = module.exports = getType;
+
+/*!
+ * Detectable javascript natives
+ */
+
+var natives = {
+ '[object Array]': 'array'
+ , '[object RegExp]': 'regexp'
+ , '[object Function]': 'function'
+ , '[object Arguments]': 'arguments'
+ , '[object Date]': 'date'
+};
+
+/**
+ * ### typeOf (obj)
+ *
+ * Use several different techniques to determine
+ * the type of object being tested.
+ *
+ *
+ * @param {Mixed} object
+ * @return {String} object type
+ * @api public
+ */
+
+function getType (obj) {
+ var str = Object.prototype.toString.call(obj);
+ if (natives[str]) return natives[str];
+ if (obj === null) return 'null';
+ if (obj === undefined) return 'undefined';
+ if (obj === Object(obj)) return 'object';
+ return typeof obj;
+}
+
+exports.Library = Library;
+
+/**
+ * ### Library
+ *
+ * Create a repository for custom type detection.
+ *
+ * ```js
+ * var lib = new type.Library;
+ * ```
+ *
+ */
+
+function Library () {
+ this.tests = {};
+}
+
+/**
+ * #### .of (obj)
+ *
+ * Expose replacement `typeof` detection to the library.
+ *
+ * ```js
+ * if ('string' === lib.of('hello world')) {
+ * // ...
+ * }
+ * ```
+ *
+ * @param {Mixed} object to test
+ * @return {String} type
+ */
+
+Library.prototype.of = getType;
+
+/**
+ * #### .define (type, test)
+ *
+ * Add a test to for the `.test()` assertion.
+ *
+ * Can be defined as a regular expression:
+ *
+ * ```js
+ * lib.define('int', /^[0-9]+$/);
+ * ```
+ *
+ * ... or as a function:
+ *
+ * ```js
+ * lib.define('bln', function (obj) {
+ * if ('boolean' === lib.of(obj)) return true;
+ * var blns = [ 'yes', 'no', 'true', 'false', 1, 0 ];
+ * if ('string' === lib.of(obj)) obj = obj.toLowerCase();
+ * return !! ~blns.indexOf(obj);
+ * });
+ * ```
+ *
+ * @param {String} type
+ * @param {RegExp|Function} test
+ * @api public
+ */
+
+Library.prototype.define = function (type, test) {
+ if (arguments.length === 1) return this.tests[type];
+ this.tests[type] = test;
+ return this;
+};
+
+/**
+ * #### .test (obj, test)
+ *
+ * Assert that an object is of type. Will first
+ * check natives, and if that does not pass it will
+ * use the user defined custom tests.
+ *
+ * ```js
+ * assert(lib.test('1', 'int'));
+ * assert(lib.test('yes', 'bln'));
+ * ```
+ *
+ * @param {Mixed} object
+ * @param {String} type
+ * @return {Boolean} result
+ * @api public
+ */
+
+Library.prototype.test = function (obj, type) {
+ if (type === getType(obj)) return true;
+ var test = this.tests[type];
+
+ if (test && 'regexp' === getType(test)) {
+ return test.test(obj);
+ } else if (test && 'function' === getType(test)) {
+ return test(obj);
+ } else {
+ throw new ReferenceError('Type test "' + type + '" not defined or invalid.');
+ }
+};
+
+},{}],35:[function(require,module,exports){
+arguments[4][33][0].apply(exports,arguments)
+},{"./lib/type":36,"dup":33}],36:[function(require,module,exports){
+/*!
+ * type-detect
+ * Copyright(c) 2013 jake luer <jake@alogicalparadox.com>
+ * MIT Licensed
+ */
+
+/*!
+ * Primary Exports
+ */
+
+var exports = module.exports = getType;
+
+/**
+ * ### typeOf (obj)
+ *
+ * Use several different techniques to determine
+ * the type of object being tested.
+ *
+ *
+ * @param {Mixed} object
+ * @return {String} object type
+ * @api public
+ */
+var objectTypeRegexp = /^\[object (.*)\]$/;
+
+function getType(obj) {
+ var type = Object.prototype.toString.call(obj).match(objectTypeRegexp)[1].toLowerCase();
+ // Let "new String('')" return 'object'
+ if (typeof Promise === 'function' && obj instanceof Promise) return 'promise';
+ // PhantomJS has type "DOMWindow" for null
+ if (obj === null) return 'null';
+ // PhantomJS has type "DOMWindow" for undefined
+ if (obj === undefined) return 'undefined';
+ return type;
+}
+
+exports.Library = Library;
+
+/**
+ * ### Library
+ *
+ * Create a repository for custom type detection.
+ *
+ * ```js
+ * var lib = new type.Library;
+ * ```
+ *
+ */
+
+function Library() {
+ if (!(this instanceof Library)) return new Library();
+ this.tests = {};
+}
+
+/**
+ * #### .of (obj)
+ *
+ * Expose replacement `typeof` detection to the library.
+ *
+ * ```js
+ * if ('string' === lib.of('hello world')) {
+ * // ...
+ * }
+ * ```
+ *
+ * @param {Mixed} object to test
+ * @return {String} type
+ */
+
+Library.prototype.of = getType;
+
+/**
+ * #### .define (type, test)
+ *
+ * Add a test to for the `.test()` assertion.
+ *
+ * Can be defined as a regular expression:
+ *
+ * ```js
+ * lib.define('int', /^[0-9]+$/);
+ * ```
+ *
+ * ... or as a function:
+ *
+ * ```js
+ * lib.define('bln', function (obj) {
+ * if ('boolean' === lib.of(obj)) return true;
+ * var blns = [ 'yes', 'no', 'true', 'false', 1, 0 ];
+ * if ('string' === lib.of(obj)) obj = obj.toLowerCase();
+ * return !! ~blns.indexOf(obj);
+ * });
+ * ```
+ *
+ * @param {String} type
+ * @param {RegExp|Function} test
+ * @api public
+ */
+
+Library.prototype.define = function(type, test) {
+ if (arguments.length === 1) return this.tests[type];
+ this.tests[type] = test;
+ return this;
+};
+
+/**
+ * #### .test (obj, test)
+ *
+ * Assert that an object is of type. Will first
+ * check natives, and if that does not pass it will
+ * use the user defined custom tests.
+ *
+ * ```js
+ * assert(lib.test('1', 'int'));
+ * assert(lib.test('yes', 'bln'));
+ * ```
+ *
+ * @param {Mixed} object
+ * @param {String} type
+ * @return {Boolean} result
+ * @api public
+ */
+
+Library.prototype.test = function(obj, type) {
+ if (type === getType(obj)) return true;
+ var test = this.tests[type];
+
+ if (test && 'regexp' === getType(test)) {
+ return test.test(obj);
+ } else if (test && 'function' === getType(test)) {
+ return test(obj);
+ } else {
+ throw new ReferenceError('Type test "' + type + '" not defined or invalid.');
+ }
+};
+
+},{}]},{},[1])(1)
+}); \ No newline at end of file
diff --git a/node_modules/lunr/test/env/index.mustache b/node_modules/lunr/test/env/index.mustache
new file mode 100644
index 0000000..c6f1e1b
--- /dev/null
+++ b/node_modules/lunr/test/env/index.mustache
@@ -0,0 +1,43 @@
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Mocha Tests</title>
+ <link href="/test/env/mocha.css" rel="stylesheet" />
+</head>
+<body>
+ <div id="mocha"></div>
+
+ <script src="/test/env/mocha.js"></script>
+ <script src="/test/env/chai.js"></script>
+ <script src="/lunr.js"></script>
+
+ <script>
+ mocha.setup('tdd')
+ window.assert = chai.assert
+
+ window.withFixture = function (name, fn) {
+ var fixturePath = '/test/fixtures/' + name,
+ xhr = new XMLHttpRequest
+
+ xhr.addEventListener('load', function () {
+ if (this.status != 200) {
+ fn('non 200 response')
+ } else {
+ fn(null, this.responseText)
+ }
+ })
+
+ xhr.open('GET', fixturePath)
+ xhr.send()
+ }
+ </script>
+ {{#test_files}}
+ <script src="/{{{.}}}"></script>
+ {{/test_files}}
+ <script>
+ mocha.checkLeaks();
+ mocha.globals(['lunr']);
+ mocha.run();
+ </script>
+</body>
+</html>
diff --git a/node_modules/lunr/test/env/mocha.css b/node_modules/lunr/test/env/mocha.css
new file mode 100644
index 0000000..ec96b00
--- /dev/null
+++ b/node_modules/lunr/test/env/mocha.css
@@ -0,0 +1,326 @@
+@charset "utf-8";
+
+body {
+ margin:0;
+}
+
+#mocha {
+ font: 20px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif;
+ margin: 60px 50px;
+}
+
+#mocha ul,
+#mocha li {
+ margin: 0;
+ padding: 0;
+}
+
+#mocha ul {
+ list-style: none;
+}
+
+#mocha h1,
+#mocha h2 {
+ margin: 0;
+}
+
+#mocha h1 {
+ margin-top: 15px;
+ font-size: 1em;
+ font-weight: 200;
+}
+
+#mocha h1 a {
+ text-decoration: none;
+ color: inherit;
+}
+
+#mocha h1 a:hover {
+ text-decoration: underline;
+}
+
+#mocha .suite .suite h1 {
+ margin-top: 0;
+ font-size: .8em;
+}
+
+#mocha .hidden {
+ display: none;
+}
+
+#mocha h2 {
+ font-size: 12px;
+ font-weight: normal;
+ cursor: pointer;
+}
+
+#mocha .suite {
+ margin-left: 15px;
+}
+
+#mocha .test {
+ margin-left: 15px;
+ overflow: hidden;
+}
+
+#mocha .test.pending:hover h2::after {
+ content: '(pending)';
+ font-family: arial, sans-serif;
+}
+
+#mocha .test.pass.medium .duration {
+ background: #c09853;
+}
+
+#mocha .test.pass.slow .duration {
+ background: #b94a48;
+}
+
+#mocha .test.pass::before {
+ content: '✓';
+ font-size: 12px;
+ display: block;
+ float: left;
+ margin-right: 5px;
+ color: #00d6b2;
+}
+
+#mocha .test.pass .duration {
+ font-size: 9px;
+ margin-left: 5px;
+ padding: 2px 5px;
+ color: #fff;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
+ -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.2);
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ -ms-border-radius: 5px;
+ -o-border-radius: 5px;
+ border-radius: 5px;
+}
+
+#mocha .test.pass.fast .duration {
+ display: none;
+}
+
+#mocha .test.pending {
+ color: #0b97c4;
+}
+
+#mocha .test.pending::before {
+ content: '◦';
+ color: #0b97c4;
+}
+
+#mocha .test.fail {
+ color: #c00;
+}
+
+#mocha .test.fail pre {
+ color: black;
+}
+
+#mocha .test.fail::before {
+ content: '✖';
+ font-size: 12px;
+ display: block;
+ float: left;
+ margin-right: 5px;
+ color: #c00;
+}
+
+#mocha .test pre.error {
+ color: #c00;
+ max-height: 300px;
+ overflow: auto;
+}
+
+#mocha .test .html-error {
+ overflow: auto;
+ color: black;
+ line-height: 1.5;
+ display: block;
+ float: left;
+ clear: left;
+ font: 12px/1.5 monaco, monospace;
+ margin: 5px;
+ padding: 15px;
+ border: 1px solid #eee;
+ max-width: 85%; /*(1)*/
+ max-width: -webkit-calc(100% - 42px);
+ max-width: -moz-calc(100% - 42px);
+ max-width: calc(100% - 42px); /*(2)*/
+ max-height: 300px;
+ word-wrap: break-word;
+ border-bottom-color: #ddd;
+ -webkit-box-shadow: 0 1px 3px #eee;
+ -moz-box-shadow: 0 1px 3px #eee;
+ box-shadow: 0 1px 3px #eee;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+
+#mocha .test .html-error pre.error {
+ border: none;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+ border-radius: 0;
+ -webkit-box-shadow: 0;
+ -moz-box-shadow: 0;
+ box-shadow: 0;
+ padding: 0;
+ margin: 0;
+ margin-top: 18px;
+ max-height: none;
+}
+
+/**
+ * (1): approximate for browsers not supporting calc
+ * (2): 42 = 2*15 + 2*10 + 2*1 (padding + margin + border)
+ * ^^ seriously
+ */
+#mocha .test pre {
+ display: block;
+ float: left;
+ clear: left;
+ font: 12px/1.5 monaco, monospace;
+ margin: 5px;
+ padding: 15px;
+ border: 1px solid #eee;
+ max-width: 85%; /*(1)*/
+ max-width: -webkit-calc(100% - 42px);
+ max-width: -moz-calc(100% - 42px);
+ max-width: calc(100% - 42px); /*(2)*/
+ word-wrap: break-word;
+ border-bottom-color: #ddd;
+ -webkit-box-shadow: 0 1px 3px #eee;
+ -moz-box-shadow: 0 1px 3px #eee;
+ box-shadow: 0 1px 3px #eee;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ border-radius: 3px;
+}
+
+#mocha .test h2 {
+ position: relative;
+}
+
+#mocha .test a.replay {
+ position: absolute;
+ top: 3px;
+ right: 0;
+ text-decoration: none;
+ vertical-align: middle;
+ display: block;
+ width: 15px;
+ height: 15px;
+ line-height: 15px;
+ text-align: center;
+ background: #eee;
+ font-size: 15px;
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+ -webkit-transition:opacity 200ms;
+ -moz-transition:opacity 200ms;
+ -o-transition:opacity 200ms;
+ transition: opacity 200ms;
+ opacity: 0.3;
+ color: #888;
+}
+
+#mocha .test:hover a.replay {
+ opacity: 1;
+}
+
+#mocha-report.pass .test.fail {
+ display: none;
+}
+
+#mocha-report.fail .test.pass {
+ display: none;
+}
+
+#mocha-report.pending .test.pass,
+#mocha-report.pending .test.fail {
+ display: none;
+}
+#mocha-report.pending .test.pass.pending {
+ display: block;
+}
+
+#mocha-error {
+ color: #c00;
+ font-size: 1.5em;
+ font-weight: 100;
+ letter-spacing: 1px;
+}
+
+#mocha-stats {
+ position: fixed;
+ top: 15px;
+ right: 10px;
+ font-size: 12px;
+ margin: 0;
+ color: #888;
+ z-index: 1;
+}
+
+#mocha-stats .progress {
+ float: right;
+ padding-top: 0;
+
+ /**
+ * Set safe initial values, so mochas .progress does not inherit these
+ * properties from Bootstrap .progress (which causes .progress height to
+ * equal line height set in Bootstrap).
+ */
+ height: auto;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+ background-color: initial;
+}
+
+#mocha-stats em {
+ color: black;
+}
+
+#mocha-stats a {
+ text-decoration: none;
+ color: inherit;
+}
+
+#mocha-stats a:hover {
+ border-bottom: 1px solid #eee;
+}
+
+#mocha-stats li {
+ display: inline-block;
+ margin: 0 5px;
+ list-style: none;
+ padding-top: 11px;
+}
+
+#mocha-stats canvas {
+ width: 40px;
+ height: 40px;
+}
+
+#mocha code .comment { color: #ddd; }
+#mocha code .init { color: #2f6fad; }
+#mocha code .string { color: #5890ad; }
+#mocha code .keyword { color: #8a6343; }
+#mocha code .number { color: #2f6fad; }
+
+@media screen and (max-device-width: 480px) {
+ #mocha {
+ margin: 60px 0px;
+ }
+
+ #mocha #stats {
+ position: absolute;
+ }
+}
diff --git a/node_modules/lunr/test/env/mocha.js b/node_modules/lunr/test/env/mocha.js
new file mode 100644
index 0000000..c9224e3
--- /dev/null
+++ b/node_modules/lunr/test/env/mocha.js
@@ -0,0 +1,15174 @@
+(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
+(function (process,global){
+/**
+ * Shim process.stdout.
+ */
+
+process.stdout = require('browser-stdout')();
+
+var Mocha = require('./lib/mocha');
+
+/**
+ * Create a Mocha instance.
+ *
+ * @return {undefined}
+ */
+
+var mocha = new Mocha({ reporter: 'html' });
+
+/**
+ * Save timer references to avoid Sinon interfering (see GH-237).
+ */
+
+var Date = global.Date;
+var setTimeout = global.setTimeout;
+var setInterval = global.setInterval;
+var clearTimeout = global.clearTimeout;
+var clearInterval = global.clearInterval;
+
+var uncaughtExceptionHandlers = [];
+
+var originalOnerrorHandler = global.onerror;
+
+/**
+ * Remove uncaughtException listener.
+ * Revert to original onerror handler if previously defined.
+ */
+
+process.removeListener = function(e, fn){
+ if ('uncaughtException' == e) {
+ if (originalOnerrorHandler) {
+ global.onerror = originalOnerrorHandler;
+ } else {
+ global.onerror = function() {};
+ }
+ var i = Mocha.utils.indexOf(uncaughtExceptionHandlers, fn);
+ if (i != -1) { uncaughtExceptionHandlers.splice(i, 1); }
+ }
+};
+
+/**
+ * Implements uncaughtException listener.
+ */
+
+process.on = function(e, fn){
+ if ('uncaughtException' == e) {
+ global.onerror = function(err, url, line){
+ fn(new Error(err + ' (' + url + ':' + line + ')'));
+ return !mocha.allowUncaught;
+ };
+ uncaughtExceptionHandlers.push(fn);
+ }
+};
+
+// The BDD UI is registered by default, but no UI will be functional in the
+// browser without an explicit call to the overridden `mocha.ui` (see below).
+// Ensure that this default UI does not expose its methods to the global scope.
+mocha.suite.removeAllListeners('pre-require');
+
+var immediateQueue = []
+ , immediateTimeout;
+
+function timeslice() {
+ var immediateStart = new Date().getTime();
+ while (immediateQueue.length && (new Date().getTime() - immediateStart) < 100) {
+ immediateQueue.shift()();
+ }
+ if (immediateQueue.length) {
+ immediateTimeout = setTimeout(timeslice, 0);
+ } else {
+ immediateTimeout = null;
+ }
+}
+
+/**
+ * High-performance override of Runner.immediately.
+ */
+
+Mocha.Runner.immediately = function(callback) {
+ immediateQueue.push(callback);
+ if (!immediateTimeout) {
+ immediateTimeout = setTimeout(timeslice, 0);
+ }
+};
+
+/**
+ * Function to allow assertion libraries to throw errors directly into mocha.
+ * This is useful when running tests in a browser because window.onerror will
+ * only receive the 'message' attribute of the Error.
+ */
+mocha.throwError = function(err) {
+ Mocha.utils.forEach(uncaughtExceptionHandlers, function (fn) {
+ fn(err);
+ });
+ throw err;
+};
+
+/**
+ * Override ui to ensure that the ui functions are initialized.
+ * Normally this would happen in Mocha.prototype.loadFiles.
+ */
+
+mocha.ui = function(ui){
+ Mocha.prototype.ui.call(this, ui);
+ this.suite.emit('pre-require', global, null, this);
+ return this;
+};
+
+/**
+ * Setup mocha with the given setting options.
+ */
+
+mocha.setup = function(opts){
+ if ('string' == typeof opts) opts = { ui: opts };
+ for (var opt in opts) this[opt](opts[opt]);
+ return this;
+};
+
+/**
+ * Run mocha, returning the Runner.
+ */
+
+mocha.run = function(fn){
+ var options = mocha.options;
+ mocha.globals('location');
+
+ var query = Mocha.utils.parseQuery(global.location.search || '');
+ if (query.grep) mocha.grep(query.grep);
+ if (query.fgrep) mocha.fgrep(query.fgrep);
+ if (query.invert) mocha.invert();
+
+ return Mocha.prototype.run.call(mocha, function(err){
+ // The DOM Document is not available in Web Workers.
+ var document = global.document;
+ if (document && document.getElementById('mocha') && options.noHighlighting !== true) {
+ Mocha.utils.highlightTags('code');
+ }
+ if (fn) fn(err);
+ });
+};
+
+/**
+ * Expose the process shim.
+ * https://github.com/mochajs/mocha/pull/916
+ */
+
+Mocha.process = process;
+
+/**
+ * Expose mocha.
+ */
+
+global.Mocha = Mocha;
+global.mocha = mocha;
+
+// this allows test/acceptance/required-tokens.js to pass; thus,
+// you can now do `const describe = require('mocha').describe` in a
+// browser context (assuming browserification). should fix #880
+module.exports = global;
+
+}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"./lib/mocha":14,"_process":67,"browser-stdout":41}],2:[function(require,module,exports){
+/* eslint-disable no-unused-vars */
+module.exports = function(type) {
+ return function() {};
+};
+
+},{}],3:[function(require,module,exports){
+/**
+ * Module exports.
+ */
+
+exports.EventEmitter = EventEmitter;
+
+/**
+ * Object#toString reference.
+ */
+var objToString = Object.prototype.toString;
+
+/**
+ * Check if a value is an array.
+ *
+ * @api private
+ * @param {*} val The value to test.
+ * @return {boolean} true if the value is an array, otherwise false.
+ */
+function isArray(val) {
+ return objToString.call(val) === '[object Array]';
+}
+
+/**
+ * Event emitter constructor.
+ *
+ * @api public
+ */
+function EventEmitter() {}
+
+/**
+ * Add a listener.
+ *
+ * @api public
+ * @param {string} name Event name.
+ * @param {Function} fn Event handler.
+ * @return {EventEmitter} Emitter instance.
+ */
+EventEmitter.prototype.on = function(name, fn) {
+ if (!this.$events) {
+ this.$events = {};
+ }
+
+ if (!this.$events[name]) {
+ this.$events[name] = fn;
+ } else if (isArray(this.$events[name])) {
+ this.$events[name].push(fn);
+ } else {
+ this.$events[name] = [this.$events[name], fn];
+ }
+
+ return this;
+};
+
+EventEmitter.prototype.addListener = EventEmitter.prototype.on;
+
+/**
+ * Adds a volatile listener.
+ *
+ * @api public
+ * @param {string} name Event name.
+ * @param {Function} fn Event handler.
+ * @return {EventEmitter} Emitter instance.
+ */
+EventEmitter.prototype.once = function(name, fn) {
+ var self = this;
+
+ function on() {
+ self.removeListener(name, on);
+ fn.apply(this, arguments);
+ }
+
+ on.listener = fn;
+ this.on(name, on);
+
+ return this;
+};
+
+/**
+ * Remove a listener.
+ *
+ * @api public
+ * @param {string} name Event name.
+ * @param {Function} fn Event handler.
+ * @return {EventEmitter} Emitter instance.
+ */
+EventEmitter.prototype.removeListener = function(name, fn) {
+ if (this.$events && this.$events[name]) {
+ var list = this.$events[name];
+
+ if (isArray(list)) {
+ var pos = -1;
+
+ for (var i = 0, l = list.length; i < l; i++) {
+ if (list[i] === fn || (list[i].listener && list[i].listener === fn)) {
+ pos = i;
+ break;
+ }
+ }
+
+ if (pos < 0) {
+ return this;
+ }
+
+ list.splice(pos, 1);
+
+ if (!list.length) {
+ delete this.$events[name];
+ }
+ } else if (list === fn || (list.listener && list.listener === fn)) {
+ delete this.$events[name];
+ }
+ }
+
+ return this;
+};
+
+/**
+ * Remove all listeners for an event.
+ *
+ * @api public
+ * @param {string} name Event name.
+ * @return {EventEmitter} Emitter instance.
+ */
+EventEmitter.prototype.removeAllListeners = function(name) {
+ if (name === undefined) {
+ this.$events = {};
+ return this;
+ }
+
+ if (this.$events && this.$events[name]) {
+ this.$events[name] = null;
+ }
+
+ return this;
+};
+
+/**
+ * Get all listeners for a given event.
+ *
+ * @api public
+ * @param {string} name Event name.
+ * @return {EventEmitter} Emitter instance.
+ */
+EventEmitter.prototype.listeners = function(name) {
+ if (!this.$events) {
+ this.$events = {};
+ }
+
+ if (!this.$events[name]) {
+ this.$events[name] = [];
+ }
+
+ if (!isArray(this.$events[name])) {
+ this.$events[name] = [this.$events[name]];
+ }
+
+ return this.$events[name];
+};
+
+/**
+ * Emit an event.
+ *
+ * @api public
+ * @param {string} name Event name.
+ * @return {boolean} true if at least one handler was invoked, else false.
+ */
+EventEmitter.prototype.emit = function(name) {
+ if (!this.$events) {
+ return false;
+ }
+
+ var handler = this.$events[name];
+
+ if (!handler) {
+ return false;
+ }
+
+ var args = Array.prototype.slice.call(arguments, 1);
+
+ if (typeof handler === 'function') {
+ handler.apply(this, args);
+ } else if (isArray(handler)) {
+ var listeners = handler.slice();
+
+ for (var i = 0, l = listeners.length; i < l; i++) {
+ listeners[i].apply(this, args);
+ }
+ } else {
+ return false;
+ }
+
+ return true;
+};
+
+},{}],4:[function(require,module,exports){
+/**
+ * Expose `Progress`.
+ */
+
+module.exports = Progress;
+
+/**
+ * Initialize a new `Progress` indicator.
+ */
+function Progress() {
+ this.percent = 0;
+ this.size(0);
+ this.fontSize(11);
+ this.font('helvetica, arial, sans-serif');
+}
+
+/**
+ * Set progress size to `size`.
+ *
+ * @api public
+ * @param {number} size
+ * @return {Progress} Progress instance.
+ */
+Progress.prototype.size = function(size) {
+ this._size = size;
+ return this;
+};
+
+/**
+ * Set text to `text`.
+ *
+ * @api public
+ * @param {string} text
+ * @return {Progress} Progress instance.
+ */
+Progress.prototype.text = function(text) {
+ this._text = text;
+ return this;
+};
+
+/**
+ * Set font size to `size`.
+ *
+ * @api public
+ * @param {number} size
+ * @return {Progress} Progress instance.
+ */
+Progress.prototype.fontSize = function(size) {
+ this._fontSize = size;
+ return this;
+};
+
+/**
+ * Set font to `family`.
+ *
+ * @param {string} family
+ * @return {Progress} Progress instance.
+ */
+Progress.prototype.font = function(family) {
+ this._font = family;
+ return this;
+};
+
+/**
+ * Update percentage to `n`.
+ *
+ * @param {number} n
+ * @return {Progress} Progress instance.
+ */
+Progress.prototype.update = function(n) {
+ this.percent = n;
+ return this;
+};
+
+/**
+ * Draw on `ctx`.
+ *
+ * @param {CanvasRenderingContext2d} ctx
+ * @return {Progress} Progress instance.
+ */
+Progress.prototype.draw = function(ctx) {
+ try {
+ var percent = Math.min(this.percent, 100);
+ var size = this._size;
+ var half = size / 2;
+ var x = half;
+ var y = half;
+ var rad = half - 1;
+ var fontSize = this._fontSize;
+
+ ctx.font = fontSize + 'px ' + this._font;
+
+ var angle = Math.PI * 2 * (percent / 100);
+ ctx.clearRect(0, 0, size, size);
+
+ // outer circle
+ ctx.strokeStyle = '#9f9f9f';
+ ctx.beginPath();
+ ctx.arc(x, y, rad, 0, angle, false);
+ ctx.stroke();
+
+ // inner circle
+ ctx.strokeStyle = '#eee';
+ ctx.beginPath();
+ ctx.arc(x, y, rad - 1, 0, angle, true);
+ ctx.stroke();
+
+ // text
+ var text = this._text || (percent | 0) + '%';
+ var w = ctx.measureText(text).width;
+
+ ctx.fillText(text, x - w / 2 + 1, y + fontSize / 2 - 1);
+ } catch (err) {
+ // don't fail if we can't render progress
+ }
+ return this;
+};
+
+},{}],5:[function(require,module,exports){
+(function (global){
+exports.isatty = function isatty() {
+ return true;
+};
+
+exports.getWindowSize = function getWindowSize() {
+ if ('innerHeight' in global) {
+ return [global.innerHeight, global.innerWidth];
+ }
+ // In a Web Worker, the DOM Window is not available.
+ return [640, 480];
+};
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}],6:[function(require,module,exports){
+/**
+ * Module dependencies.
+ */
+
+var JSON = require('json3');
+
+/**
+ * Expose `Context`.
+ */
+
+module.exports = Context;
+
+/**
+ * Initialize a new `Context`.
+ *
+ * @api private
+ */
+function Context() {}
+
+/**
+ * Set or get the context `Runnable` to `runnable`.
+ *
+ * @api private
+ * @param {Runnable} runnable
+ * @return {Context}
+ */
+Context.prototype.runnable = function(runnable) {
+ if (!arguments.length) {
+ return this._runnable;
+ }
+ this.test = this._runnable = runnable;
+ return this;
+};
+
+/**
+ * Set test timeout `ms`.
+ *
+ * @api private
+ * @param {number} ms
+ * @return {Context} self
+ */
+Context.prototype.timeout = function(ms) {
+ if (!arguments.length) {
+ return this.runnable().timeout();
+ }
+ this.runnable().timeout(ms);
+ return this;
+};
+
+/**
+ * Set test timeout `enabled`.
+ *
+ * @api private
+ * @param {boolean} enabled
+ * @return {Context} self
+ */
+Context.prototype.enableTimeouts = function(enabled) {
+ this.runnable().enableTimeouts(enabled);
+ return this;
+};
+
+/**
+ * Set test slowness threshold `ms`.
+ *
+ * @api private
+ * @param {number} ms
+ * @return {Context} self
+ */
+Context.prototype.slow = function(ms) {
+ this.runnable().slow(ms);
+ return this;
+};
+
+/**
+ * Mark a test as skipped.
+ *
+ * @api private
+ * @return {Context} self
+ */
+Context.prototype.skip = function() {
+ this.runnable().skip();
+ return this;
+};
+
+/**
+ * Allow a number of retries on failed tests
+ *
+ * @api private
+ * @param {number} n
+ * @return {Context} self
+ */
+Context.prototype.retries = function(n) {
+ if (!arguments.length) {
+ return this.runnable().retries();
+ }
+ this.runnable().retries(n);
+ return this;
+};
+
+/**
+ * Inspect the context void of `._runnable`.
+ *
+ * @api private
+ * @return {string}
+ */
+Context.prototype.inspect = function() {
+ return JSON.stringify(this, function(key, val) {
+ return key === 'runnable' || key === 'test' ? undefined : val;
+ }, 2);
+};
+
+},{"json3":54}],7:[function(require,module,exports){
+/**
+ * Module dependencies.
+ */
+
+var Runnable = require('./runnable');
+var inherits = require('./utils').inherits;
+
+/**
+ * Expose `Hook`.
+ */
+
+module.exports = Hook;
+
+/**
+ * Initialize a new `Hook` with the given `title` and callback `fn`.
+ *
+ * @param {String} title
+ * @param {Function} fn
+ * @api private
+ */
+function Hook(title, fn) {
+ Runnable.call(this, title, fn);
+ this.type = 'hook';
+}
+
+/**
+ * Inherit from `Runnable.prototype`.
+ */
+inherits(Hook, Runnable);
+
+/**
+ * Get or set the test `err`.
+ *
+ * @param {Error} err
+ * @return {Error}
+ * @api public
+ */
+Hook.prototype.error = function(err) {
+ if (!arguments.length) {
+ err = this._error;
+ this._error = null;
+ return err;
+ }
+
+ this._error = err;
+};
+
+},{"./runnable":33,"./utils":38}],8:[function(require,module,exports){
+/**
+ * Module dependencies.
+ */
+
+var Test = require('../test');
+
+/**
+ * BDD-style interface:
+ *
+ * describe('Array', function() {
+ * describe('#indexOf()', function() {
+ * it('should return -1 when not present', function() {
+ * // ...
+ * });
+ *
+ * it('should return the index when present', function() {
+ * // ...
+ * });
+ * });
+ * });
+ *
+ * @param {Suite} suite Root suite.
+ */
+module.exports = function(suite) {
+ var suites = [suite];
+
+ suite.on('pre-require', function(context, file, mocha) {
+ var common = require('./common')(suites, context, mocha);
+
+ context.before = common.before;
+ context.after = common.after;
+ context.beforeEach = common.beforeEach;
+ context.afterEach = common.afterEach;
+ context.run = mocha.options.delay && common.runWithSuite(suite);
+ /**
+ * Describe a "suite" with the given `title`
+ * and callback `fn` containing nested suites
+ * and/or tests.
+ */
+
+ context.describe = context.context = function(title, fn) {
+ return common.suite.create({
+ title: title,
+ file: file,
+ fn: fn
+ });
+ };
+
+ /**
+ * Pending describe.
+ */
+
+ context.xdescribe = context.xcontext = context.describe.skip = function(title, fn) {
+ return common.suite.skip({
+ title: title,
+ file: file,
+ fn: fn
+ });
+ };
+
+ /**
+ * Exclusive suite.
+ */
+
+ context.describe.only = function(title, fn) {
+ return common.suite.only({
+ title: title,
+ file: file,
+ fn: fn
+ });
+ };
+
+ /**
+ * Describe a specification or test-case
+ * with the given `title` and callback `fn`
+ * acting as a thunk.
+ */
+
+ context.it = context.specify = function(title, fn) {
+ var suite = suites[0];
+ if (suite.isPending()) {
+ fn = null;
+ }
+ var test = new Test(title, fn);
+ test.file = file;
+ suite.addTest(test);
+ return test;
+ };
+
+ /**
+ * Exclusive test-case.
+ */
+
+ context.it.only = function(title, fn) {
+ return common.test.only(mocha, context.it(title, fn));
+ };
+
+ /**
+ * Pending test case.
+ */
+
+ context.xit = context.xspecify = context.it.skip = function(title) {
+ context.it(title);
+ };
+
+ /**
+ * Number of attempts to retry.
+ */
+ context.it.retries = function(n) {
+ context.retries(n);
+ };
+ });
+};
+
+},{"../test":36,"./common":9}],9:[function(require,module,exports){
+'use strict';
+
+var Suite = require('../suite');
+
+/**
+ * Functions common to more than one interface.
+ *
+ * @param {Suite[]} suites
+ * @param {Context} context
+ * @param {Mocha} mocha
+ * @return {Object} An object containing common functions.
+ */
+module.exports = function(suites, context, mocha) {
+ return {
+ /**
+ * This is only present if flag --delay is passed into Mocha. It triggers
+ * root suite execution.
+ *
+ * @param {Suite} suite The root wuite.
+ * @return {Function} A function which runs the root suite
+ */
+ runWithSuite: function runWithSuite(suite) {
+ return function run() {
+ suite.run();
+ };
+ },
+
+ /**
+ * Execute before running tests.
+ *
+ * @param {string} name
+ * @param {Function} fn
+ */
+ before: function(name, fn) {
+ suites[0].beforeAll(name, fn);
+ },
+
+ /**
+ * Execute after running tests.
+ *
+ * @param {string} name
+ * @param {Function} fn
+ */
+ after: function(name, fn) {
+ suites[0].afterAll(name, fn);
+ },
+
+ /**
+ * Execute before each test case.
+ *
+ * @param {string} name
+ * @param {Function} fn
+ */
+ beforeEach: function(name, fn) {
+ suites[0].beforeEach(name, fn);
+ },
+
+ /**
+ * Execute after each test case.
+ *
+ * @param {string} name
+ * @param {Function} fn
+ */
+ afterEach: function(name, fn) {
+ suites[0].afterEach(name, fn);
+ },
+
+ suite: {
+ /**
+ * Create an exclusive Suite; convenience function
+ * See docstring for create() below.
+ *
+ * @param {Object} opts
+ * @returns {Suite}
+ */
+ only: function only(opts) {
+ mocha.options.hasOnly = true;
+ opts.isOnly = true;
+ return this.create(opts);
+ },
+
+ /**
+ * Create a Suite, but skip it; convenience function
+ * See docstring for create() below.
+ *
+ * @param {Object} opts
+ * @returns {Suite}
+ */
+ skip: function skip(opts) {
+ opts.pending = true;
+ return this.create(opts);
+ },
+
+ /**
+ * Creates a suite.
+ * @param {Object} opts Options
+ * @param {string} opts.title Title of Suite
+ * @param {Function} [opts.fn] Suite Function (not always applicable)
+ * @param {boolean} [opts.pending] Is Suite pending?
+ * @param {string} [opts.file] Filepath where this Suite resides
+ * @param {boolean} [opts.isOnly] Is Suite exclusive?
+ * @returns {Suite}
+ */
+ create: function create(opts) {
+ var suite = Suite.create(suites[0], opts.title);
+ suite.pending = Boolean(opts.pending);
+ suite.file = opts.file;
+ suites.unshift(suite);
+ if (opts.isOnly) {
+ suite.parent._onlySuites = suite.parent._onlySuites.concat(suite);
+ mocha.options.hasOnly = true;
+ }
+ if (typeof opts.fn === 'function') {
+ opts.fn.call(suite);
+ suites.shift();
+ }
+
+ return suite;
+ }
+ },
+
+ test: {
+
+ /**
+ * Exclusive test-case.
+ *
+ * @param {Object} mocha
+ * @param {Function} test
+ * @returns {*}
+ */
+ only: function(mocha, test) {
+ test.parent._onlyTests = test.parent._onlyTests.concat(test);
+ mocha.options.hasOnly = true;
+ return test;
+ },
+
+ /**
+ * Pending test case.
+ *
+ * @param {string} title
+ */
+ skip: function(title) {
+ context.test(title);
+ },
+
+ /**
+ * Number of retry attempts
+ *
+ * @param {number} n
+ */
+ retries: function(n) {
+ context.retries(n);
+ }
+ }
+ };
+};
+
+},{"../suite":35}],10:[function(require,module,exports){
+/**
+ * Module dependencies.
+ */
+
+var Suite = require('../suite');
+var Test = require('../test');
+
+/**
+ * Exports-style (as Node.js module) interface:
+ *
+ * exports.Array = {
+ * '#indexOf()': {
+ * 'should return -1 when the value is not present': function() {
+ *
+ * },
+ *
+ * 'should return the correct index when the value is present': function() {
+ *
+ * }
+ * }
+ * };
+ *
+ * @param {Suite} suite Root suite.
+ */
+module.exports = function(suite) {
+ var suites = [suite];
+
+ suite.on('require', visit);
+
+ function visit(obj, file) {
+ var suite;
+ for (var key in obj) {
+ if (typeof obj[key] === 'function') {
+ var fn = obj[key];
+ switch (key) {
+ case 'before':
+ suites[0].beforeAll(fn);
+ break;
+ case 'after':
+ suites[0].afterAll(fn);
+ break;
+ case 'beforeEach':
+ suites[0].beforeEach(fn);
+ break;
+ case 'afterEach':
+ suites[0].afterEach(fn);
+ break;
+ default:
+ var test = new Test(key, fn);
+ test.file = file;
+ suites[0].addTest(test);
+ }
+ } else {
+ suite = Suite.create(suites[0], key);
+ suites.unshift(suite);
+ visit(obj[key], file);
+ suites.shift();
+ }
+ }
+ }
+};
+
+},{"../suite":35,"../test":36}],11:[function(require,module,exports){
+exports.bdd = require('./bdd');
+exports.tdd = require('./tdd');
+exports.qunit = require('./qunit');
+exports.exports = require('./exports');
+
+},{"./bdd":8,"./exports":10,"./qunit":12,"./tdd":13}],12:[function(require,module,exports){
+/**
+ * Module dependencies.
+ */
+
+var Test = require('../test');
+
+/**
+ * QUnit-style interface:
+ *
+ * suite('Array');
+ *
+ * test('#length', function() {
+ * var arr = [1,2,3];
+ * ok(arr.length == 3);
+ * });
+ *
+ * test('#indexOf()', function() {
+ * var arr = [1,2,3];
+ * ok(arr.indexOf(1) == 0);
+ * ok(arr.indexOf(2) == 1);
+ * ok(arr.indexOf(3) == 2);
+ * });
+ *
+ * suite('String');
+ *
+ * test('#length', function() {
+ * ok('foo'.length == 3);
+ * });
+ *
+ * @param {Suite} suite Root suite.
+ */
+module.exports = function(suite) {
+ var suites = [suite];
+
+ suite.on('pre-require', function(context, file, mocha) {
+ var common = require('./common')(suites, context, mocha);
+
+ context.before = common.before;
+ context.after = common.after;
+ context.beforeEach = common.beforeEach;
+ context.afterEach = common.afterEach;
+ context.run = mocha.options.delay && common.runWithSuite(suite);
+ /**
+ * Describe a "suite" with the given `title`.
+ */
+
+ context.suite = function(title) {
+ if (suites.length > 1) {
+ suites.shift();
+ }
+ return common.suite.create({
+ title: title,
+ file: file
+ });
+ };
+
+ /**
+ * Exclusive Suite.
+ */
+
+ context.suite.only = function(title) {
+ if (suites.length > 1) {
+ suites.shift();
+ }
+ return common.suite.only({
+ title: title,
+ file: file
+ });
+ };
+
+ /**
+ * Describe a specification or test-case
+ * with the given `title` and callback `fn`
+ * acting as a thunk.
+ */
+
+ context.test = function(title, fn) {
+ var test = new Test(title, fn);
+ test.file = file;
+ suites[0].addTest(test);
+ return test;
+ };
+
+ /**
+ * Exclusive test-case.
+ */
+
+ context.test.only = function(title, fn) {
+ return common.test.only(mocha, context.test(title, fn));
+ };
+
+ context.test.skip = common.test.skip;
+ context.test.retries = common.test.retries;
+ });
+};
+
+},{"../test":36,"./common":9}],13:[function(require,module,exports){
+/**
+ * Module dependencies.
+ */
+
+var Test = require('../test');
+
+/**
+ * TDD-style interface:
+ *
+ * suite('Array', function() {
+ * suite('#indexOf()', function() {
+ * suiteSetup(function() {
+ *
+ * });
+ *
+ * test('should return -1 when not present', function() {
+ *
+ * });
+ *
+ * test('should return the index when present', function() {
+ *
+ * });
+ *
+ * suiteTeardown(function() {
+ *
+ * });
+ * });
+ * });
+ *
+ * @param {Suite} suite Root suite.
+ */
+module.exports = function(suite) {
+ var suites = [suite];
+
+ suite.on('pre-require', function(context, file, mocha) {
+ var common = require('./common')(suites, context, mocha);
+
+ context.setup = common.beforeEach;
+ context.teardown = common.afterEach;
+ context.suiteSetup = common.before;
+ context.suiteTeardown = common.after;
+ context.run = mocha.options.delay && common.runWithSuite(suite);
+
+ /**
+ * Describe a "suite" with the given `title` and callback `fn` containing
+ * nested suites and/or tests.
+ */
+ context.suite = function(title, fn) {
+ return common.suite.create({
+ title: title,
+ file: file,
+ fn: fn
+ });
+ };
+
+ /**
+ * Pending suite.
+ */
+ context.suite.skip = function(title, fn) {
+ return common.suite.skip({
+ title: title,
+ file: file,
+ fn: fn
+ });
+ };
+
+ /**
+ * Exclusive test-case.
+ */
+ context.suite.only = function(title, fn) {
+ return common.suite.only({
+ title: title,
+ file: file,
+ fn: fn
+ });
+ };
+
+ /**
+ * Describe a specification or test-case with the given `title` and
+ * callback `fn` acting as a thunk.
+ */
+ context.test = function(title, fn) {
+ var suite = suites[0];
+ if (suite.isPending()) {
+ fn = null;
+ }
+ var test = new Test(title, fn);
+ test.file = file;
+ suite.addTest(test);
+ return test;
+ };
+
+ /**
+ * Exclusive test-case.
+ */
+
+ context.test.only = function(title, fn) {
+ return common.test.only(mocha, context.test(title, fn));
+ };
+
+ context.test.skip = common.test.skip;
+ context.test.retries = common.test.retries;
+ });
+};
+
+},{"../test":36,"./common":9}],14:[function(require,module,exports){
+(function (process,global,__dirname){
+/*!
+ * mocha
+ * Copyright(c) 2011 TJ Holowaychuk <tj@vision-media.ca>
+ * MIT Licensed
+ */
+
+/**
+ * Module dependencies.
+ */
+
+var escapeRe = require('escape-string-regexp');
+var path = require('path');
+var reporters = require('./reporters');
+var utils = require('./utils');
+
+/**
+ * Expose `Mocha`.
+ */
+
+exports = module.exports = Mocha;
+
+/**
+ * To require local UIs and reporters when running in node.
+ */
+
+if (!process.browser) {
+ var cwd = process.cwd();
+ module.paths.push(cwd, path.join(cwd, 'node_modules'));
+}
+
+/**
+ * Expose internals.
+ */
+
+exports.utils = utils;
+exports.interfaces = require('./interfaces');
+exports.reporters = reporters;
+exports.Runnable = require('./runnable');
+exports.Context = require('./context');
+exports.Runner = require('./runner');
+exports.Suite = require('./suite');
+exports.Hook = require('./hook');
+exports.Test = require('./test');
+
+/**
+ * Return image `name` path.
+ *
+ * @api private
+ * @param {string} name
+ * @return {string}
+ */
+function image(name) {
+ return path.join(__dirname, '../images', name + '.png');
+}
+
+/**
+ * Set up mocha with `options`.
+ *
+ * Options:
+ *
+ * - `ui` name "bdd", "tdd", "exports" etc
+ * - `reporter` reporter instance, defaults to `mocha.reporters.spec`
+ * - `globals` array of accepted globals
+ * - `timeout` timeout in milliseconds
+ * - `retries` number of times to retry failed tests
+ * - `bail` bail on the first test failure
+ * - `slow` milliseconds to wait before considering a test slow
+ * - `ignoreLeaks` ignore global leaks
+ * - `fullTrace` display the full stack-trace on failing
+ * - `grep` string or regexp to filter tests with
+ *
+ * @param {Object} options
+ * @api public
+ */
+function Mocha(options) {
+ options = options || {};
+ this.files = [];
+ this.options = options;
+ if (options.grep) {
+ this.grep(new RegExp(options.grep));
+ }
+ if (options.fgrep) {
+ this.fgrep(options.fgrep);
+ }
+ this.suite = new exports.Suite('', new exports.Context());
+ this.ui(options.ui);
+ this.bail(options.bail);
+ this.reporter(options.reporter, options.reporterOptions);
+ if (typeof options.timeout !== 'undefined' && options.timeout !== null) {
+ this.timeout(options.timeout);
+ }
+ if (typeof options.retries !== 'undefined' && options.retries !== null) {
+ this.retries(options.retries);
+ }
+ this.useColors(options.useColors);
+ if (options.enableTimeouts !== null) {
+ this.enableTimeouts(options.enableTimeouts);
+ }
+ if (options.slow) {
+ this.slow(options.slow);
+ }
+}
+
+/**
+ * Enable or disable bailing on the first failure.
+ *
+ * @api public
+ * @param {boolean} [bail]
+ */
+Mocha.prototype.bail = function(bail) {
+ if (!arguments.length) {
+ bail = true;
+ }
+ this.suite.bail(bail);
+ return this;
+};
+
+/**
+ * Add test `file`.
+ *
+ * @api public
+ * @param {string} file
+ */
+Mocha.prototype.addFile = function(file) {
+ this.files.push(file);
+ return this;
+};
+
+/**
+ * Set reporter to `reporter`, defaults to "spec".
+ *
+ * @param {String|Function} reporter name or constructor
+ * @param {Object} reporterOptions optional options
+ * @api public
+ * @param {string|Function} reporter name or constructor
+ * @param {Object} reporterOptions optional options
+ */
+Mocha.prototype.reporter = function(reporter, reporterOptions) {
+ if (typeof reporter === 'function') {
+ this._reporter = reporter;
+ } else {
+ reporter = reporter || 'spec';
+ var _reporter;
+ // Try to load a built-in reporter.
+ if (reporters[reporter]) {
+ _reporter = reporters[reporter];
+ }
+ // Try to load reporters from process.cwd() and node_modules
+ if (!_reporter) {
+ try {
+ _reporter = require(reporter);
+ } catch (err) {
+ err.message.indexOf('Cannot find module') !== -1
+ ? console.warn('"' + reporter + '" reporter not found')
+ : console.warn('"' + reporter + '" reporter blew up with error:\n' + err.stack);
+ }
+ }
+ if (!_reporter && reporter === 'teamcity') {
+ console.warn('The Teamcity reporter was moved to a package named '
+ + 'mocha-teamcity-reporter '
+ + '(https://npmjs.org/package/mocha-teamcity-reporter).');
+ }
+ if (!_reporter) {
+ throw new Error('invalid reporter "' + reporter + '"');
+ }
+ this._reporter = _reporter;
+ }
+ this.options.reporterOptions = reporterOptions;
+ return this;
+};
+
+/**
+ * Set test UI `name`, defaults to "bdd".
+ *
+ * @api public
+ * @param {string} bdd
+ */
+Mocha.prototype.ui = function(name) {
+ name = name || 'bdd';
+ this._ui = exports.interfaces[name];
+ if (!this._ui) {
+ try {
+ this._ui = require(name);
+ } catch (err) {
+ throw new Error('invalid interface "' + name + '"');
+ }
+ }
+ this._ui = this._ui(this.suite);
+
+ this.suite.on('pre-require', function(context) {
+ exports.afterEach = context.afterEach || context.teardown;
+ exports.after = context.after || context.suiteTeardown;
+ exports.beforeEach = context.beforeEach || context.setup;
+ exports.before = context.before || context.suiteSetup;
+ exports.describe = context.describe || context.suite;
+ exports.it = context.it || context.test;
+ exports.setup = context.setup || context.beforeEach;
+ exports.suiteSetup = context.suiteSetup || context.before;
+ exports.suiteTeardown = context.suiteTeardown || context.after;
+ exports.suite = context.suite || context.describe;
+ exports.teardown = context.teardown || context.afterEach;
+ exports.test = context.test || context.it;
+ exports.run = context.run;
+ });
+
+ return this;
+};
+
+/**
+ * Load registered files.
+ *
+ * @api private
+ */
+Mocha.prototype.loadFiles = function(fn) {
+ var self = this;
+ var suite = this.suite;
+ this.files.forEach(function(file) {
+ file = path.resolve(file);
+ suite.emit('pre-require', global, file, self);
+ suite.emit('require', require(file), file, self);
+ suite.emit('post-require', global, file, self);
+ });
+ fn && fn();
+};
+
+/**
+ * Enable growl support.
+ *
+ * @api private
+ */
+Mocha.prototype._growl = function(runner, reporter) {
+ var notify = require('growl');
+
+ runner.on('end', function() {
+ var stats = reporter.stats;
+ if (stats.failures) {
+ var msg = stats.failures + ' of ' + runner.total + ' tests failed';
+ notify(msg, { name: 'mocha', title: 'Failed', image: image('error') });
+ } else {
+ notify(stats.passes + ' tests passed in ' + stats.duration + 'ms', {
+ name: 'mocha',
+ title: 'Passed',
+ image: image('ok')
+ });
+ }
+ });
+};
+
+/**
+ * Escape string and add it to grep as a regexp.
+ *
+ * @api public
+ * @param str
+ * @returns {Mocha}
+ */
+Mocha.prototype.fgrep = function(str) {
+ return this.grep(new RegExp(escapeRe(str)));
+};
+
+/**
+ * Add regexp to grep, if `re` is a string it is escaped.
+ *
+ * @param {RegExp|String} re
+ * @return {Mocha}
+ * @api public
+ * @param {RegExp|string} re
+ * @return {Mocha}
+ */
+Mocha.prototype.grep = function(re) {
+ if (utils.isString(re)) {
+ // extract args if it's regex-like, i.e: [string, pattern, flag]
+ var arg = re.match(/^\/(.*)\/(g|i|)$|.*/);
+ this.options.grep = new RegExp(arg[1] || arg[0], arg[2]);
+ } else {
+ this.options.grep = re;
+ }
+ return this;
+};
+/**
+ * Invert `.grep()` matches.
+ *
+ * @return {Mocha}
+ * @api public
+ */
+Mocha.prototype.invert = function() {
+ this.options.invert = true;
+ return this;
+};
+
+/**
+ * Ignore global leaks.
+ *
+ * @param {Boolean} ignore
+ * @return {Mocha}
+ * @api public
+ * @param {boolean} ignore
+ * @return {Mocha}
+ */
+Mocha.prototype.ignoreLeaks = function(ignore) {
+ this.options.ignoreLeaks = Boolean(ignore);
+ return this;
+};
+
+/**
+ * Enable global leak checking.
+ *
+ * @return {Mocha}
+ * @api public
+ */
+Mocha.prototype.checkLeaks = function() {
+ this.options.ignoreLeaks = false;
+ return this;
+};
+
+/**
+ * Display long stack-trace on failing
+ *
+ * @return {Mocha}
+ * @api public
+ */
+Mocha.prototype.fullTrace = function() {
+ this.options.fullStackTrace = true;
+ return this;
+};
+
+/**
+ * Enable growl support.
+ *
+ * @return {Mocha}
+ * @api public
+ */
+Mocha.prototype.growl = function() {
+ this.options.growl = true;
+ return this;
+};
+
+/**
+ * Ignore `globals` array or string.
+ *
+ * @param {Array|String} globals
+ * @return {Mocha}
+ * @api public
+ * @param {Array|string} globals
+ * @return {Mocha}
+ */
+Mocha.prototype.globals = function(globals) {
+ this.options.globals = (this.options.globals || []).concat(globals);
+ return this;
+};
+
+/**
+ * Emit color output.
+ *
+ * @param {Boolean} colors
+ * @return {Mocha}
+ * @api public
+ * @param {boolean} colors
+ * @return {Mocha}
+ */
+Mocha.prototype.useColors = function(colors) {
+ if (colors !== undefined) {
+ this.options.useColors = colors;
+ }
+ return this;
+};
+
+/**
+ * Use inline diffs rather than +/-.
+ *
+ * @param {Boolean} inlineDiffs
+ * @return {Mocha}
+ * @api public
+ * @param {boolean} inlineDiffs
+ * @return {Mocha}
+ */
+Mocha.prototype.useInlineDiffs = function(inlineDiffs) {
+ this.options.useInlineDiffs = inlineDiffs !== undefined && inlineDiffs;
+ return this;
+};
+
+/**
+ * Set the timeout in milliseconds.
+ *
+ * @param {Number} timeout
+ * @return {Mocha}
+ * @api public
+ * @param {number} timeout
+ * @return {Mocha}
+ */
+Mocha.prototype.timeout = function(timeout) {
+ this.suite.timeout(timeout);
+ return this;
+};
+
+/**
+ * Set the number of times to retry failed tests.
+ *
+ * @param {Number} retry times
+ * @return {Mocha}
+ * @api public
+ */
+Mocha.prototype.retries = function(n) {
+ this.suite.retries(n);
+ return this;
+};
+
+/**
+ * Set slowness threshold in milliseconds.
+ *
+ * @param {Number} slow
+ * @return {Mocha}
+ * @api public
+ * @param {number} slow
+ * @return {Mocha}
+ */
+Mocha.prototype.slow = function(slow) {
+ this.suite.slow(slow);
+ return this;
+};
+
+/**
+ * Enable timeouts.
+ *
+ * @param {Boolean} enabled
+ * @return {Mocha}
+ * @api public
+ * @param {boolean} enabled
+ * @return {Mocha}
+ */
+Mocha.prototype.enableTimeouts = function(enabled) {
+ this.suite.enableTimeouts(arguments.length && enabled !== undefined ? enabled : true);
+ return this;
+};
+
+/**
+ * Makes all tests async (accepting a callback)
+ *
+ * @return {Mocha}
+ * @api public
+ */
+Mocha.prototype.asyncOnly = function() {
+ this.options.asyncOnly = true;
+ return this;
+};
+
+/**
+ * Disable syntax highlighting (in browser).
+ *
+ * @api public
+ */
+Mocha.prototype.noHighlighting = function() {
+ this.options.noHighlighting = true;
+ return this;
+};
+
+/**
+ * Enable uncaught errors to propagate (in browser).
+ *
+ * @return {Mocha}
+ * @api public
+ */
+Mocha.prototype.allowUncaught = function() {
+ this.options.allowUncaught = true;
+ return this;
+};
+
+/**
+ * Delay root suite execution.
+ * @returns {Mocha}
+ */
+Mocha.prototype.delay = function delay() {
+ this.options.delay = true;
+ return this;
+};
+
+/**
+ * Run tests and invoke `fn()` when complete.
+ *
+ * @api public
+ * @param {Function} fn
+ * @return {Runner}
+ */
+Mocha.prototype.run = function(fn) {
+ if (this.files.length) {
+ this.loadFiles();
+ }
+ var suite = this.suite;
+ var options = this.options;
+ options.files = this.files;
+ var runner = new exports.Runner(suite, options.delay);
+ var reporter = new this._reporter(runner, options);
+ runner.ignoreLeaks = options.ignoreLeaks !== false;
+ runner.fullStackTrace = options.fullStackTrace;
+ runner.hasOnly = options.hasOnly;
+ runner.asyncOnly = options.asyncOnly;
+ runner.allowUncaught = options.allowUncaught;
+ if (options.grep) {
+ runner.grep(options.grep, options.invert);
+ }
+ if (options.globals) {
+ runner.globals(options.globals);
+ }
+ if (options.growl) {
+ this._growl(runner, reporter);
+ }
+ if (options.useColors !== undefined) {
+ exports.reporters.Base.useColors = options.useColors;
+ }
+ exports.reporters.Base.inlineDiffs = options.useInlineDiffs;
+
+ function done(failures) {
+ if (reporter.done) {
+ reporter.done(failures, fn);
+ } else {
+ fn && fn(failures);
+ }
+ }
+
+ return runner.run(done);
+};
+
+}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},"/lib")
+},{"./context":6,"./hook":7,"./interfaces":11,"./reporters":21,"./runnable":33,"./runner":34,"./suite":35,"./test":36,"./utils":38,"_process":67,"escape-string-regexp":47,"growl":49,"path":42}],15:[function(require,module,exports){
+/**
+ * Helpers.
+ */
+
+var s = 1000;
+var m = s * 60;
+var h = m * 60;
+var d = h * 24;
+var y = d * 365.25;
+
+/**
+ * Parse or format the given `val`.
+ *
+ * Options:
+ *
+ * - `long` verbose formatting [false]
+ *
+ * @api public
+ * @param {string|number} val
+ * @param {Object} options
+ * @return {string|number}
+ */
+module.exports = function(val, options) {
+ options = options || {};
+ if (typeof val === 'string') {
+ return parse(val);
+ }
+ // https://github.com/mochajs/mocha/pull/1035
+ return options['long'] ? longFormat(val) : shortFormat(val);
+};
+
+/**
+ * Parse the given `str` and return milliseconds.
+ *
+ * @api private
+ * @param {string} str
+ * @return {number}
+ */
+function parse(str) {
+ var match = (/^((?:\d+)?\.?\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i).exec(str);
+ if (!match) {
+ return;
+ }
+ var n = parseFloat(match[1]);
+ var type = (match[2] || 'ms').toLowerCase();
+ switch (type) {
+ case 'years':
+ case 'year':
+ case 'y':
+ return n * y;
+ case 'days':
+ case 'day':
+ case 'd':
+ return n * d;
+ case 'hours':
+ case 'hour':
+ case 'h':
+ return n * h;
+ case 'minutes':
+ case 'minute':
+ case 'm':
+ return n * m;
+ case 'seconds':
+ case 'second':
+ case 's':
+ return n * s;
+ case 'ms':
+ return n;
+ default:
+ // No default case
+ }
+}
+
+/**
+ * Short format for `ms`.
+ *
+ * @api private
+ * @param {number} ms
+ * @return {string}
+ */
+function shortFormat(ms) {
+ if (ms >= d) {
+ return Math.round(ms / d) + 'd';
+ }
+ if (ms >= h) {
+ return Math.round(ms / h) + 'h';
+ }
+ if (ms >= m) {
+ return Math.round(ms / m) + 'm';
+ }
+ if (ms >= s) {
+ return Math.round(ms / s) + 's';
+ }
+ return ms + 'ms';
+}
+
+/**
+ * Long format for `ms`.
+ *
+ * @api private
+ * @param {number} ms
+ * @return {string}
+ */
+function longFormat(ms) {
+ return plural(ms, d, 'day')
+ || plural(ms, h, 'hour')
+ || plural(ms, m, 'minute')
+ || plural(ms, s, 'second')
+ || ms + ' ms';
+}
+
+/**
+ * Pluralization helper.
+ *
+ * @api private
+ * @param {number} ms
+ * @param {number} n
+ * @param {string} name
+ */
+function plural(ms, n, name) {
+ if (ms < n) {
+ return;
+ }
+ if (ms < n * 1.5) {
+ return Math.floor(ms / n) + ' ' + name;
+ }
+ return Math.ceil(ms / n) + ' ' + name + 's';
+}
+
+},{}],16:[function(require,module,exports){
+
+/**
+ * Expose `Pending`.
+ */
+
+module.exports = Pending;
+
+/**
+ * Initialize a new `Pending` error with the given message.
+ *
+ * @param {string} message
+ */
+function Pending(message) {
+ this.message = message;
+}
+
+},{}],17:[function(require,module,exports){
+(function (process,global){
+/**
+ * Module dependencies.
+ */
+
+var tty = require('tty');
+var diff = require('diff');
+var ms = require('../ms');
+var utils = require('../utils');
+var supportsColor = process.browser ? null : require('supports-color');
+
+/**
+ * Expose `Base`.
+ */
+
+exports = module.exports = Base;
+
+/**
+ * Save timer references to avoid Sinon interfering.
+ * See: https://github.com/mochajs/mocha/issues/237
+ */
+
+/* eslint-disable no-unused-vars, no-native-reassign */
+var Date = global.Date;
+var setTimeout = global.setTimeout;
+var setInterval = global.setInterval;
+var clearTimeout = global.clearTimeout;
+var clearInterval = global.clearInterval;
+/* eslint-enable no-unused-vars, no-native-reassign */
+
+/**
+ * Check if both stdio streams are associated with a tty.
+ */
+
+var isatty = tty.isatty(1) && tty.isatty(2);
+
+/**
+ * Enable coloring by default, except in the browser interface.
+ */
+
+exports.useColors = !process.browser && (supportsColor || (process.env.MOCHA_COLORS !== undefined));
+
+/**
+ * Inline diffs instead of +/-
+ */
+
+exports.inlineDiffs = false;
+
+/**
+ * Default color map.
+ */
+
+exports.colors = {
+ pass: 90,
+ fail: 31,
+ 'bright pass': 92,
+ 'bright fail': 91,
+ 'bright yellow': 93,
+ pending: 36,
+ suite: 0,
+ 'error title': 0,
+ 'error message': 31,
+ 'error stack': 90,
+ checkmark: 32,
+ fast: 90,
+ medium: 33,
+ slow: 31,
+ green: 32,
+ light: 90,
+ 'diff gutter': 90,
+ 'diff added': 32,
+ 'diff removed': 31
+};
+
+/**
+ * Default symbol map.
+ */
+
+exports.symbols = {
+ ok: '✓',
+ err: '✖',
+ dot: '․',
+ comma: ',',
+ bang: '!'
+};
+
+// With node.js on Windows: use symbols available in terminal default fonts
+if (process.platform === 'win32') {
+ exports.symbols.ok = '\u221A';
+ exports.symbols.err = '\u00D7';
+ exports.symbols.dot = '.';
+}
+
+/**
+ * Color `str` with the given `type`,
+ * allowing colors to be disabled,
+ * as well as user-defined color
+ * schemes.
+ *
+ * @param {string} type
+ * @param {string} str
+ * @return {string}
+ * @api private
+ */
+var color = exports.color = function(type, str) {
+ if (!exports.useColors) {
+ return String(str);
+ }
+ return '\u001b[' + exports.colors[type] + 'm' + str + '\u001b[0m';
+};
+
+/**
+ * Expose term window size, with some defaults for when stderr is not a tty.
+ */
+
+exports.window = {
+ width: 75
+};
+
+if (isatty) {
+ exports.window.width = process.stdout.getWindowSize
+ ? process.stdout.getWindowSize(1)[0]
+ : tty.getWindowSize()[1];
+}
+
+/**
+ * Expose some basic cursor interactions that are common among reporters.
+ */
+
+exports.cursor = {
+ hide: function() {
+ isatty && process.stdout.write('\u001b[?25l');
+ },
+
+ show: function() {
+ isatty && process.stdout.write('\u001b[?25h');
+ },
+
+ deleteLine: function() {
+ isatty && process.stdout.write('\u001b[2K');
+ },
+
+ beginningOfLine: function() {
+ isatty && process.stdout.write('\u001b[0G');
+ },
+
+ CR: function() {
+ if (isatty) {
+ exports.cursor.deleteLine();
+ exports.cursor.beginningOfLine();
+ } else {
+ process.stdout.write('\r');
+ }
+ }
+};
+
+/**
+ * Outut the given `failures` as a list.
+ *
+ * @param {Array} failures
+ * @api public
+ */
+
+exports.list = function(failures) {
+ console.log();
+ failures.forEach(function(test, i) {
+ // format
+ var fmt = color('error title', ' %s) %s:\n')
+ + color('error message', ' %s')
+ + color('error stack', '\n%s\n');
+
+ // msg
+ var msg;
+ var err = test.err;
+ var message;
+ if (err.message && typeof err.message.toString === 'function') {
+ message = err.message + '';
+ } else if (typeof err.inspect === 'function') {
+ message = err.inspect() + '';
+ } else {
+ message = '';
+ }
+ var stack = err.stack || message;
+ var index = message ? stack.indexOf(message) : -1;
+ var actual = err.actual;
+ var expected = err.expected;
+ var escape = true;
+
+ if (index === -1) {
+ msg = message;
+ } else {
+ index += message.length;
+ msg = stack.slice(0, index);
+ // remove msg from stack
+ stack = stack.slice(index + 1);
+ }
+
+ // uncaught
+ if (err.uncaught) {
+ msg = 'Uncaught ' + msg;
+ }
+ // explicitly show diff
+ if (err.showDiff !== false && sameType(actual, expected) && expected !== undefined) {
+ escape = false;
+ if (!(utils.isString(actual) && utils.isString(expected))) {
+ err.actual = actual = utils.stringify(actual);
+ err.expected = expected = utils.stringify(expected);
+ }
+
+ fmt = color('error title', ' %s) %s:\n%s') + color('error stack', '\n%s\n');
+ var match = message.match(/^([^:]+): expected/);
+ msg = '\n ' + color('error message', match ? match[1] : msg);
+
+ if (exports.inlineDiffs) {
+ msg += inlineDiff(err, escape);
+ } else {
+ msg += unifiedDiff(err, escape);
+ }
+ }
+
+ // indent stack trace
+ stack = stack.replace(/^/gm, ' ');
+
+ console.log(fmt, (i + 1), test.fullTitle(), msg, stack);
+ });
+};
+
+/**
+ * Initialize a new `Base` reporter.
+ *
+ * All other reporters generally
+ * inherit from this reporter, providing
+ * stats such as test duration, number
+ * of tests passed / failed etc.
+ *
+ * @param {Runner} runner
+ * @api public
+ */
+
+function Base(runner) {
+ var stats = this.stats = { suites: 0, tests: 0, passes: 0, pending: 0, failures: 0 };
+ var failures = this.failures = [];
+
+ if (!runner) {
+ return;
+ }
+ this.runner = runner;
+
+ runner.stats = stats;
+
+ runner.on('start', function() {
+ stats.start = new Date();
+ });
+
+ runner.on('suite', function(suite) {
+ stats.suites = stats.suites || 0;
+ suite.root || stats.suites++;
+ });
+
+ runner.on('test end', function() {
+ stats.tests = stats.tests || 0;
+ stats.tests++;
+ });
+
+ runner.on('pass', function(test) {
+ stats.passes = stats.passes || 0;
+
+ if (test.duration > test.slow()) {
+ test.speed = 'slow';
+ } else if (test.duration > test.slow() / 2) {
+ test.speed = 'medium';
+ } else {
+ test.speed = 'fast';
+ }
+
+ stats.passes++;
+ });
+
+ runner.on('fail', function(test, err) {
+ stats.failures = stats.failures || 0;
+ stats.failures++;
+ test.err = err;
+ failures.push(test);
+ });
+
+ runner.on('end', function() {
+ stats.end = new Date();
+ stats.duration = new Date() - stats.start;
+ });
+
+ runner.on('pending', function() {
+ stats.pending++;
+ });
+}
+
+/**
+ * Output common epilogue used by many of
+ * the bundled reporters.
+ *
+ * @api public
+ */
+Base.prototype.epilogue = function() {
+ var stats = this.stats;
+ var fmt;
+
+ console.log();
+
+ // passes
+ fmt = color('bright pass', ' ')
+ + color('green', ' %d passing')
+ + color('light', ' (%s)');
+
+ console.log(fmt,
+ stats.passes || 0,
+ ms(stats.duration));
+
+ // pending
+ if (stats.pending) {
+ fmt = color('pending', ' ')
+ + color('pending', ' %d pending');
+
+ console.log(fmt, stats.pending);
+ }
+
+ // failures
+ if (stats.failures) {
+ fmt = color('fail', ' %d failing');
+
+ console.log(fmt, stats.failures);
+
+ Base.list(this.failures);
+ console.log();
+ }
+
+ console.log();
+};
+
+/**
+ * Pad the given `str` to `len`.
+ *
+ * @api private
+ * @param {string} str
+ * @param {string} len
+ * @return {string}
+ */
+function pad(str, len) {
+ str = String(str);
+ return Array(len - str.length + 1).join(' ') + str;
+}
+
+/**
+ * Returns an inline diff between 2 strings with coloured ANSI output
+ *
+ * @api private
+ * @param {Error} err with actual/expected
+ * @param {boolean} escape
+ * @return {string} Diff
+ */
+function inlineDiff(err, escape) {
+ var msg = errorDiff(err, 'WordsWithSpace', escape);
+
+ // linenos
+ var lines = msg.split('\n');
+ if (lines.length > 4) {
+ var width = String(lines.length).length;
+ msg = lines.map(function(str, i) {
+ return pad(++i, width) + ' |' + ' ' + str;
+ }).join('\n');
+ }
+
+ // legend
+ msg = '\n'
+ + color('diff removed', 'actual')
+ + ' '
+ + color('diff added', 'expected')
+ + '\n\n'
+ + msg
+ + '\n';
+
+ // indent
+ msg = msg.replace(/^/gm, ' ');
+ return msg;
+}
+
+/**
+ * Returns a unified diff between two strings.
+ *
+ * @api private
+ * @param {Error} err with actual/expected
+ * @param {boolean} escape
+ * @return {string} The diff.
+ */
+function unifiedDiff(err, escape) {
+ var indent = ' ';
+ function cleanUp(line) {
+ if (escape) {
+ line = escapeInvisibles(line);
+ }
+ if (line[0] === '+') {
+ return indent + colorLines('diff added', line);
+ }
+ if (line[0] === '-') {
+ return indent + colorLines('diff removed', line);
+ }
+ if (line.match(/\@\@/)) {
+ return null;
+ }
+ if (line.match(/\\ No newline/)) {
+ return null;
+ }
+ return indent + line;
+ }
+ function notBlank(line) {
+ return typeof line !== 'undefined' && line !== null;
+ }
+ var msg = diff.createPatch('string', err.actual, err.expected);
+ var lines = msg.split('\n').splice(4);
+ return '\n '
+ + colorLines('diff added', '+ expected') + ' '
+ + colorLines('diff removed', '- actual')
+ + '\n\n'
+ + lines.map(cleanUp).filter(notBlank).join('\n');
+}
+
+/**
+ * Return a character diff for `err`.
+ *
+ * @api private
+ * @param {Error} err
+ * @param {string} type
+ * @param {boolean} escape
+ * @return {string}
+ */
+function errorDiff(err, type, escape) {
+ var actual = escape ? escapeInvisibles(err.actual) : err.actual;
+ var expected = escape ? escapeInvisibles(err.expected) : err.expected;
+ return diff['diff' + type](actual, expected).map(function(str) {
+ if (str.added) {
+ return colorLines('diff added', str.value);
+ }
+ if (str.removed) {
+ return colorLines('diff removed', str.value);
+ }
+ return str.value;
+ }).join('');
+}
+
+/**
+ * Returns a string with all invisible characters in plain text
+ *
+ * @api private
+ * @param {string} line
+ * @return {string}
+ */
+function escapeInvisibles(line) {
+ return line.replace(/\t/g, '<tab>')
+ .replace(/\r/g, '<CR>')
+ .replace(/\n/g, '<LF>\n');
+}
+
+/**
+ * Color lines for `str`, using the color `name`.
+ *
+ * @api private
+ * @param {string} name
+ * @param {string} str
+ * @return {string}
+ */
+function colorLines(name, str) {
+ return str.split('\n').map(function(str) {
+ return color(name, str);
+ }).join('\n');
+}
+
+/**
+ * Object#toString reference.
+ */
+var objToString = Object.prototype.toString;
+
+/**
+ * Check that a / b have the same type.
+ *
+ * @api private
+ * @param {Object} a
+ * @param {Object} b
+ * @return {boolean}
+ */
+function sameType(a, b) {
+ return objToString.call(a) === objToString.call(b);
+}
+
+}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"../ms":15,"../utils":38,"_process":67,"diff":46,"supports-color":42,"tty":5}],18:[function(require,module,exports){
+/**
+ * Module dependencies.
+ */
+
+var Base = require('./base');
+var utils = require('../utils');
+
+/**
+ * Expose `Doc`.
+ */
+
+exports = module.exports = Doc;
+
+/**
+ * Initialize a new `Doc` reporter.
+ *
+ * @param {Runner} runner
+ * @api public
+ */
+function Doc(runner) {
+ Base.call(this, runner);
+
+ var indents = 2;
+
+ function indent() {
+ return Array(indents).join(' ');
+ }
+
+ runner.on('suite', function(suite) {
+ if (suite.root) {
+ return;
+ }
+ ++indents;
+ console.log('%s<section class="suite">', indent());
+ ++indents;
+ console.log('%s<h1>%s</h1>', indent(), utils.escape(suite.title));
+ console.log('%s<dl>', indent());
+ });
+
+ runner.on('suite end', function(suite) {
+ if (suite.root) {
+ return;
+ }
+ console.log('%s</dl>', indent());
+ --indents;
+ console.log('%s</section>', indent());
+ --indents;
+ });
+
+ runner.on('pass', function(test) {
+ console.log('%s <dt>%s</dt>', indent(), utils.escape(test.title));
+ var code = utils.escape(utils.clean(test.body));
+ console.log('%s <dd><pre><code>%s</code></pre></dd>', indent(), code);
+ });
+
+ runner.on('fail', function(test, err) {
+ console.log('%s <dt class="error">%s</dt>', indent(), utils.escape(test.title));
+ var code = utils.escape(utils.clean(test.body));
+ console.log('%s <dd class="error"><pre><code>%s</code></pre></dd>', indent(), code);
+ console.log('%s <dd class="error">%s</dd>', indent(), utils.escape(err));
+ });
+}
+
+},{"../utils":38,"./base":17}],19:[function(require,module,exports){
+(function (process){
+/**
+ * Module dependencies.
+ */
+
+var Base = require('./base');
+var inherits = require('../utils').inherits;
+var color = Base.color;
+
+/**
+ * Expose `Dot`.
+ */
+
+exports = module.exports = Dot;
+
+/**
+ * Initialize a new `Dot` matrix test reporter.
+ *
+ * @api public
+ * @param {Runner} runner
+ */
+function Dot(runner) {
+ Base.call(this, runner);
+
+ var self = this;
+ var width = Base.window.width * .75 | 0;
+ var n = -1;
+
+ runner.on('start', function() {
+ process.stdout.write('\n');
+ });
+
+ runner.on('pending', function() {
+ if (++n % width === 0) {
+ process.stdout.write('\n ');
+ }
+ process.stdout.write(color('pending', Base.symbols.comma));
+ });
+
+ runner.on('pass', function(test) {
+ if (++n % width === 0) {
+ process.stdout.write('\n ');
+ }
+ if (test.speed === 'slow') {
+ process.stdout.write(color('bright yellow', Base.symbols.dot));
+ } else {
+ process.stdout.write(color(test.speed, Base.symbols.dot));
+ }
+ });
+
+ runner.on('fail', function() {
+ if (++n % width === 0) {
+ process.stdout.write('\n ');
+ }
+ process.stdout.write(color('fail', Base.symbols.bang));
+ });
+
+ runner.on('end', function() {
+ console.log();
+ self.epilogue();
+ });
+}
+
+/**
+ * Inherit from `Base.prototype`.
+ */
+inherits(Dot, Base);
+
+}).call(this,require('_process'))
+},{"../utils":38,"./base":17,"_process":67}],20:[function(require,module,exports){
+(function (global){
+/* eslint-env browser */
+
+/**
+ * Module dependencies.
+ */
+
+var Base = require('./base');
+var utils = require('../utils');
+var Progress = require('../browser/progress');
+var escapeRe = require('escape-string-regexp');
+var escape = utils.escape;
+
+/**
+ * Save timer references to avoid Sinon interfering (see GH-237).
+ */
+
+/* eslint-disable no-unused-vars, no-native-reassign */
+var Date = global.Date;
+var setTimeout = global.setTimeout;
+var setInterval = global.setInterval;
+var clearTimeout = global.clearTimeout;
+var clearInterval = global.clearInterval;
+/* eslint-enable no-unused-vars, no-native-reassign */
+
+/**
+ * Expose `HTML`.
+ */
+
+exports = module.exports = HTML;
+
+/**
+ * Stats template.
+ */
+
+var statsTemplate = '<ul id="mocha-stats">'
+ + '<li class="progress"><canvas width="40" height="40"></canvas></li>'
+ + '<li class="passes"><a href="javascript:void(0);">passes:</a> <em>0</em></li>'
+ + '<li class="failures"><a href="javascript:void(0);">failures:</a> <em>0</em></li>'
+ + '<li class="duration">duration: <em>0</em>s</li>'
+ + '</ul>';
+
+/**
+ * Initialize a new `HTML` reporter.
+ *
+ * @api public
+ * @param {Runner} runner
+ */
+function HTML(runner) {
+ Base.call(this, runner);
+
+ var self = this;
+ var stats = this.stats;
+ var stat = fragment(statsTemplate);
+ var items = stat.getElementsByTagName('li');
+ var passes = items[1].getElementsByTagName('em')[0];
+ var passesLink = items[1].getElementsByTagName('a')[0];
+ var failures = items[2].getElementsByTagName('em')[0];
+ var failuresLink = items[2].getElementsByTagName('a')[0];
+ var duration = items[3].getElementsByTagName('em')[0];
+ var canvas = stat.getElementsByTagName('canvas')[0];
+ var report = fragment('<ul id="mocha-report"></ul>');
+ var stack = [report];
+ var progress;
+ var ctx;
+ var root = document.getElementById('mocha');
+
+ if (canvas.getContext) {
+ var ratio = window.devicePixelRatio || 1;
+ canvas.style.width = canvas.width;
+ canvas.style.height = canvas.height;
+ canvas.width *= ratio;
+ canvas.height *= ratio;
+ ctx = canvas.getContext('2d');
+ ctx.scale(ratio, ratio);
+ progress = new Progress();
+ }
+
+ if (!root) {
+ return error('#mocha div missing, add it to your document');
+ }
+
+ // pass toggle
+ on(passesLink, 'click', function(evt) {
+ evt.preventDefault();
+ unhide();
+ var name = (/pass/).test(report.className) ? '' : ' pass';
+ report.className = report.className.replace(/fail|pass/g, '') + name;
+ if (report.className.trim()) {
+ hideSuitesWithout('test pass');
+ }
+ });
+
+ // failure toggle
+ on(failuresLink, 'click', function(evt) {
+ evt.preventDefault();
+ unhide();
+ var name = (/fail/).test(report.className) ? '' : ' fail';
+ report.className = report.className.replace(/fail|pass/g, '') + name;
+ if (report.className.trim()) {
+ hideSuitesWithout('test fail');
+ }
+ });
+
+ root.appendChild(stat);
+ root.appendChild(report);
+
+ if (progress) {
+ progress.size(40);
+ }
+
+ runner.on('suite', function(suite) {
+ if (suite.root) {
+ return;
+ }
+
+ // suite
+ var url = self.suiteURL(suite);
+ var el = fragment('<li class="suite"><h1><a href="%s">%s</a></h1></li>', url, escape(suite.title));
+
+ // container
+ stack[0].appendChild(el);
+ stack.unshift(document.createElement('ul'));
+ el.appendChild(stack[0]);
+ });
+
+ runner.on('suite end', function(suite) {
+ if (suite.root) {
+ updateStats();
+ return;
+ }
+ stack.shift();
+ });
+
+ runner.on('pass', function(test) {
+ var url = self.testURL(test);
+ var markup = '<li class="test pass %e"><h2>%e<span class="duration">%ems</span> '
+ + '<a href="%s" class="replay">‣</a></h2></li>';
+ var el = fragment(markup, test.speed, test.title, test.duration, url);
+ self.addCodeToggle(el, test.body);
+ appendToStack(el);
+ updateStats();
+ });
+
+ runner.on('fail', function(test) {
+ var el = fragment('<li class="test fail"><h2>%e <a href="%e" class="replay">‣</a></h2></li>',
+ test.title, self.testURL(test));
+ var stackString; // Note: Includes leading newline
+ var message = test.err.toString();
+
+ // <=IE7 stringifies to [Object Error]. Since it can be overloaded, we
+ // check for the result of the stringifying.
+ if (message === '[object Error]') {
+ message = test.err.message;
+ }
+
+ if (test.err.stack) {
+ var indexOfMessage = test.err.stack.indexOf(test.err.message);
+ if (indexOfMessage === -1) {
+ stackString = test.err.stack;
+ } else {
+ stackString = test.err.stack.substr(test.err.message.length + indexOfMessage);
+ }
+ } else if (test.err.sourceURL && test.err.line !== undefined) {
+ // Safari doesn't give you a stack. Let's at least provide a source line.
+ stackString = '\n(' + test.err.sourceURL + ':' + test.err.line + ')';
+ }
+
+ stackString = stackString || '';
+
+ if (test.err.htmlMessage && stackString) {
+ el.appendChild(fragment('<div class="html-error">%s\n<pre class="error">%e</pre></div>',
+ test.err.htmlMessage, stackString));
+ } else if (test.err.htmlMessage) {
+ el.appendChild(fragment('<div class="html-error">%s</div>', test.err.htmlMessage));
+ } else {
+ el.appendChild(fragment('<pre class="error">%e%e</pre>', message, stackString));
+ }
+
+ self.addCodeToggle(el, test.body);
+ appendToStack(el);
+ updateStats();
+ });
+
+ runner.on('pending', function(test) {
+ var el = fragment('<li class="test pass pending"><h2>%e</h2></li>', test.title);
+ appendToStack(el);
+ updateStats();
+ });
+
+ function appendToStack(el) {
+ // Don't call .appendChild if #mocha-report was already .shift()'ed off the stack.
+ if (stack[0]) {
+ stack[0].appendChild(el);
+ }
+ }
+
+ function updateStats() {
+ // TODO: add to stats
+ var percent = stats.tests / runner.total * 100 | 0;
+ if (progress) {
+ progress.update(percent).draw(ctx);
+ }
+
+ // update stats
+ var ms = new Date() - stats.start;
+ text(passes, stats.passes);
+ text(failures, stats.failures);
+ text(duration, (ms / 1000).toFixed(2));
+ }
+}
+
+/**
+ * Makes a URL, preserving querystring ("search") parameters.
+ *
+ * @param {string} s
+ * @return {string} A new URL.
+ */
+function makeUrl(s) {
+ var search = window.location.search;
+
+ // Remove previous grep query parameter if present
+ if (search) {
+ search = search.replace(/[?&]grep=[^&\s]*/g, '').replace(/^&/, '?');
+ }
+
+ return window.location.pathname + (search ? search + '&' : '?') + 'grep=' + encodeURIComponent(escapeRe(s));
+}
+
+/**
+ * Provide suite URL.
+ *
+ * @param {Object} [suite]
+ */
+HTML.prototype.suiteURL = function(suite) {
+ return makeUrl(suite.fullTitle());
+};
+
+/**
+ * Provide test URL.
+ *
+ * @param {Object} [test]
+ */
+HTML.prototype.testURL = function(test) {
+ return makeUrl(test.fullTitle());
+};
+
+/**
+ * Adds code toggle functionality for the provided test's list element.
+ *
+ * @param {HTMLLIElement} el
+ * @param {string} contents
+ */
+HTML.prototype.addCodeToggle = function(el, contents) {
+ var h2 = el.getElementsByTagName('h2')[0];
+
+ on(h2, 'click', function() {
+ pre.style.display = pre.style.display === 'none' ? 'block' : 'none';
+ });
+
+ var pre = fragment('<pre><code>%e</code></pre>', utils.clean(contents));
+ el.appendChild(pre);
+ pre.style.display = 'none';
+};
+
+/**
+ * Display error `msg`.
+ *
+ * @param {string} msg
+ */
+function error(msg) {
+ document.body.appendChild(fragment('<div id="mocha-error">%s</div>', msg));
+}
+
+/**
+ * Return a DOM fragment from `html`.
+ *
+ * @param {string} html
+ */
+function fragment(html) {
+ var args = arguments;
+ var div = document.createElement('div');
+ var i = 1;
+
+ div.innerHTML = html.replace(/%([se])/g, function(_, type) {
+ switch (type) {
+ case 's': return String(args[i++]);
+ case 'e': return escape(args[i++]);
+ // no default
+ }
+ });
+
+ return div.firstChild;
+}
+
+/**
+ * Check for suites that do not have elements
+ * with `classname`, and hide them.
+ *
+ * @param {text} classname
+ */
+function hideSuitesWithout(classname) {
+ var suites = document.getElementsByClassName('suite');
+ for (var i = 0; i < suites.length; i++) {
+ var els = suites[i].getElementsByClassName(classname);
+ if (!els.length) {
+ suites[i].className += ' hidden';
+ }
+ }
+}
+
+/**
+ * Unhide .hidden suites.
+ */
+function unhide() {
+ var els = document.getElementsByClassName('suite hidden');
+ for (var i = 0; i < els.length; ++i) {
+ els[i].className = els[i].className.replace('suite hidden', 'suite');
+ }
+}
+
+/**
+ * Set an element's text contents.
+ *
+ * @param {HTMLElement} el
+ * @param {string} contents
+ */
+function text(el, contents) {
+ if (el.textContent) {
+ el.textContent = contents;
+ } else {
+ el.innerText = contents;
+ }
+}
+
+/**
+ * Listen on `event` with callback `fn`.
+ */
+function on(el, event, fn) {
+ if (el.addEventListener) {
+ el.addEventListener(event, fn, false);
+ } else {
+ el.attachEvent('on' + event, fn);
+ }
+}
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"../browser/progress":4,"../utils":38,"./base":17,"escape-string-regexp":47}],21:[function(require,module,exports){
+// Alias exports to a their normalized format Mocha#reporter to prevent a need
+// for dynamic (try/catch) requires, which Browserify doesn't handle.
+exports.Base = exports.base = require('./base');
+exports.Dot = exports.dot = require('./dot');
+exports.Doc = exports.doc = require('./doc');
+exports.TAP = exports.tap = require('./tap');
+exports.JSON = exports.json = require('./json');
+exports.HTML = exports.html = require('./html');
+exports.List = exports.list = require('./list');
+exports.Min = exports.min = require('./min');
+exports.Spec = exports.spec = require('./spec');
+exports.Nyan = exports.nyan = require('./nyan');
+exports.XUnit = exports.xunit = require('./xunit');
+exports.Markdown = exports.markdown = require('./markdown');
+exports.Progress = exports.progress = require('./progress');
+exports.Landing = exports.landing = require('./landing');
+exports.JSONStream = exports['json-stream'] = require('./json-stream');
+
+},{"./base":17,"./doc":18,"./dot":19,"./html":20,"./json":23,"./json-stream":22,"./landing":24,"./list":25,"./markdown":26,"./min":27,"./nyan":28,"./progress":29,"./spec":30,"./tap":31,"./xunit":32}],22:[function(require,module,exports){
+(function (process){
+/**
+ * Module dependencies.
+ */
+
+var Base = require('./base');
+var JSON = require('json3');
+
+/**
+ * Expose `List`.
+ */
+
+exports = module.exports = List;
+
+/**
+ * Initialize a new `List` test reporter.
+ *
+ * @api public
+ * @param {Runner} runner
+ */
+function List(runner) {
+ Base.call(this, runner);
+
+ var self = this;
+ var total = runner.total;
+
+ runner.on('start', function() {
+ console.log(JSON.stringify(['start', { total: total }]));
+ });
+
+ runner.on('pass', function(test) {
+ console.log(JSON.stringify(['pass', clean(test)]));
+ });
+
+ runner.on('fail', function(test, err) {
+ test = clean(test);
+ test.err = err.message;
+ test.stack = err.stack || null;
+ console.log(JSON.stringify(['fail', test]));
+ });
+
+ runner.on('end', function() {
+ process.stdout.write(JSON.stringify(['end', self.stats]));
+ });
+}
+
+/**
+ * Return a plain-object representation of `test`
+ * free of cyclic properties etc.
+ *
+ * @api private
+ * @param {Object} test
+ * @return {Object}
+ */
+function clean(test) {
+ return {
+ title: test.title,
+ fullTitle: test.fullTitle(),
+ duration: test.duration,
+ currentRetry: test.currentRetry()
+ };
+}
+
+}).call(this,require('_process'))
+},{"./base":17,"_process":67,"json3":54}],23:[function(require,module,exports){
+(function (process){
+/**
+ * Module dependencies.
+ */
+
+var Base = require('./base');
+
+/**
+ * Expose `JSON`.
+ */
+
+exports = module.exports = JSONReporter;
+
+/**
+ * Initialize a new `JSON` reporter.
+ *
+ * @api public
+ * @param {Runner} runner
+ */
+function JSONReporter(runner) {
+ Base.call(this, runner);
+
+ var self = this;
+ var tests = [];
+ var pending = [];
+ var failures = [];
+ var passes = [];
+
+ runner.on('test end', function(test) {
+ tests.push(test);
+ });
+
+ runner.on('pass', function(test) {
+ passes.push(test);
+ });
+
+ runner.on('fail', function(test) {
+ failures.push(test);
+ });
+
+ runner.on('pending', function(test) {
+ pending.push(test);
+ });
+
+ runner.on('end', function() {
+ var obj = {
+ stats: self.stats,
+ tests: tests.map(clean),
+ pending: pending.map(clean),
+ failures: failures.map(clean),
+ passes: passes.map(clean)
+ };
+
+ runner.testResults = obj;
+
+ process.stdout.write(JSON.stringify(obj, null, 2));
+ });
+}
+
+/**
+ * Return a plain-object representation of `test`
+ * free of cyclic properties etc.
+ *
+ * @api private
+ * @param {Object} test
+ * @return {Object}
+ */
+function clean(test) {
+ return {
+ title: test.title,
+ fullTitle: test.fullTitle(),
+ duration: test.duration,
+ currentRetry: test.currentRetry(),
+ err: errorJSON(test.err || {})
+ };
+}
+
+/**
+ * Transform `error` into a JSON object.
+ *
+ * @api private
+ * @param {Error} err
+ * @return {Object}
+ */
+function errorJSON(err) {
+ var res = {};
+ Object.getOwnPropertyNames(err).forEach(function(key) {
+ res[key] = err[key];
+ }, err);
+ return res;
+}
+
+}).call(this,require('_process'))
+},{"./base":17,"_process":67}],24:[function(require,module,exports){
+(function (process){
+/**
+ * Module dependencies.
+ */
+
+var Base = require('./base');
+var inherits = require('../utils').inherits;
+var cursor = Base.cursor;
+var color = Base.color;
+
+/**
+ * Expose `Landing`.
+ */
+
+exports = module.exports = Landing;
+
+/**
+ * Airplane color.
+ */
+
+Base.colors.plane = 0;
+
+/**
+ * Airplane crash color.
+ */
+
+Base.colors['plane crash'] = 31;
+
+/**
+ * Runway color.
+ */
+
+Base.colors.runway = 90;
+
+/**
+ * Initialize a new `Landing` reporter.
+ *
+ * @api public
+ * @param {Runner} runner
+ */
+function Landing(runner) {
+ Base.call(this, runner);
+
+ var self = this;
+ var width = Base.window.width * .75 | 0;
+ var total = runner.total;
+ var stream = process.stdout;
+ var plane = color('plane', '✈');
+ var crashed = -1;
+ var n = 0;
+
+ function runway() {
+ var buf = Array(width).join('-');
+ return ' ' + color('runway', buf);
+ }
+
+ runner.on('start', function() {
+ stream.write('\n\n\n ');
+ cursor.hide();
+ });
+
+ runner.on('test end', function(test) {
+ // check if the plane crashed
+ var col = crashed === -1 ? width * ++n / total | 0 : crashed;
+
+ // show the crash
+ if (test.state === 'failed') {
+ plane = color('plane crash', '✈');
+ crashed = col;
+ }
+
+ // render landing strip
+ stream.write('\u001b[' + (width + 1) + 'D\u001b[2A');
+ stream.write(runway());
+ stream.write('\n ');
+ stream.write(color('runway', Array(col).join('⋅')));
+ stream.write(plane);
+ stream.write(color('runway', Array(width - col).join('⋅') + '\n'));
+ stream.write(runway());
+ stream.write('\u001b[0m');
+ });
+
+ runner.on('end', function() {
+ cursor.show();
+ console.log();
+ self.epilogue();
+ });
+}
+
+/**
+ * Inherit from `Base.prototype`.
+ */
+inherits(Landing, Base);
+
+}).call(this,require('_process'))
+},{"../utils":38,"./base":17,"_process":67}],25:[function(require,module,exports){
+(function (process){
+/**
+ * Module dependencies.
+ */
+
+var Base = require('./base');
+var inherits = require('../utils').inherits;
+var color = Base.color;
+var cursor = Base.cursor;
+
+/**
+ * Expose `List`.
+ */
+
+exports = module.exports = List;
+
+/**
+ * Initialize a new `List` test reporter.
+ *
+ * @api public
+ * @param {Runner} runner
+ */
+function List(runner) {
+ Base.call(this, runner);
+
+ var self = this;
+ var n = 0;
+
+ runner.on('start', function() {
+ console.log();
+ });
+
+ runner.on('test', function(test) {
+ process.stdout.write(color('pass', ' ' + test.fullTitle() + ': '));
+ });
+
+ runner.on('pending', function(test) {
+ var fmt = color('checkmark', ' -')
+ + color('pending', ' %s');
+ console.log(fmt, test.fullTitle());
+ });
+
+ runner.on('pass', function(test) {
+ var fmt = color('checkmark', ' ' + Base.symbols.dot)
+ + color('pass', ' %s: ')
+ + color(test.speed, '%dms');
+ cursor.CR();
+ console.log(fmt, test.fullTitle(), test.duration);
+ });
+
+ runner.on('fail', function(test) {
+ cursor.CR();
+ console.log(color('fail', ' %d) %s'), ++n, test.fullTitle());
+ });
+
+ runner.on('end', self.epilogue.bind(self));
+}
+
+/**
+ * Inherit from `Base.prototype`.
+ */
+inherits(List, Base);
+
+}).call(this,require('_process'))
+},{"../utils":38,"./base":17,"_process":67}],26:[function(require,module,exports){
+(function (process){
+/**
+ * Module dependencies.
+ */
+
+var Base = require('./base');
+var utils = require('../utils');
+
+/**
+ * Constants
+ */
+
+var SUITE_PREFIX = '$';
+
+/**
+ * Expose `Markdown`.
+ */
+
+exports = module.exports = Markdown;
+
+/**
+ * Initialize a new `Markdown` reporter.
+ *
+ * @api public
+ * @param {Runner} runner
+ */
+function Markdown(runner) {
+ Base.call(this, runner);
+
+ var level = 0;
+ var buf = '';
+
+ function title(str) {
+ return Array(level).join('#') + ' ' + str;
+ }
+
+ function mapTOC(suite, obj) {
+ var ret = obj;
+ var key = SUITE_PREFIX + suite.title;
+
+ obj = obj[key] = obj[key] || { suite: suite };
+ suite.suites.forEach(function(suite) {
+ mapTOC(suite, obj);
+ });
+
+ return ret;
+ }
+
+ function stringifyTOC(obj, level) {
+ ++level;
+ var buf = '';
+ var link;
+ for (var key in obj) {
+ if (key === 'suite') {
+ continue;
+ }
+ if (key !== SUITE_PREFIX) {
+ link = ' - [' + key.substring(1) + ']';
+ link += '(#' + utils.slug(obj[key].suite.fullTitle()) + ')\n';
+ buf += Array(level).join(' ') + link;
+ }
+ buf += stringifyTOC(obj[key], level);
+ }
+ return buf;
+ }
+
+ function generateTOC(suite) {
+ var obj = mapTOC(suite, {});
+ return stringifyTOC(obj, 0);
+ }
+
+ generateTOC(runner.suite);
+
+ runner.on('suite', function(suite) {
+ ++level;
+ var slug = utils.slug(suite.fullTitle());
+ buf += '<a name="' + slug + '"></a>' + '\n';
+ buf += title(suite.title) + '\n';
+ });
+
+ runner.on('suite end', function() {
+ --level;
+ });
+
+ runner.on('pass', function(test) {
+ var code = utils.clean(test.body);
+ buf += test.title + '.\n';
+ buf += '\n```js\n';
+ buf += code + '\n';
+ buf += '```\n\n';
+ });
+
+ runner.on('end', function() {
+ process.stdout.write('# TOC\n');
+ process.stdout.write(generateTOC(runner.suite));
+ process.stdout.write(buf);
+ });
+}
+
+}).call(this,require('_process'))
+},{"../utils":38,"./base":17,"_process":67}],27:[function(require,module,exports){
+(function (process){
+/**
+ * Module dependencies.
+ */
+
+var Base = require('./base');
+var inherits = require('../utils').inherits;
+
+/**
+ * Expose `Min`.
+ */
+
+exports = module.exports = Min;
+
+/**
+ * Initialize a new `Min` minimal test reporter (best used with --watch).
+ *
+ * @api public
+ * @param {Runner} runner
+ */
+function Min(runner) {
+ Base.call(this, runner);
+
+ runner.on('start', function() {
+ // clear screen
+ process.stdout.write('\u001b[2J');
+ // set cursor position
+ process.stdout.write('\u001b[1;3H');
+ });
+
+ runner.on('end', this.epilogue.bind(this));
+}
+
+/**
+ * Inherit from `Base.prototype`.
+ */
+inherits(Min, Base);
+
+}).call(this,require('_process'))
+},{"../utils":38,"./base":17,"_process":67}],28:[function(require,module,exports){
+(function (process){
+/**
+ * Module dependencies.
+ */
+
+var Base = require('./base');
+var inherits = require('../utils').inherits;
+
+/**
+ * Expose `Dot`.
+ */
+
+exports = module.exports = NyanCat;
+
+/**
+ * Initialize a new `Dot` matrix test reporter.
+ *
+ * @param {Runner} runner
+ * @api public
+ */
+
+function NyanCat(runner) {
+ Base.call(this, runner);
+
+ var self = this;
+ var width = Base.window.width * .75 | 0;
+ var nyanCatWidth = this.nyanCatWidth = 11;
+
+ this.colorIndex = 0;
+ this.numberOfLines = 4;
+ this.rainbowColors = self.generateColors();
+ this.scoreboardWidth = 5;
+ this.tick = 0;
+ this.trajectories = [[], [], [], []];
+ this.trajectoryWidthMax = (width - nyanCatWidth);
+
+ runner.on('start', function() {
+ Base.cursor.hide();
+ self.draw();
+ });
+
+ runner.on('pending', function() {
+ self.draw();
+ });
+
+ runner.on('pass', function() {
+ self.draw();
+ });
+
+ runner.on('fail', function() {
+ self.draw();
+ });
+
+ runner.on('end', function() {
+ Base.cursor.show();
+ for (var i = 0; i < self.numberOfLines; i++) {
+ write('\n');
+ }
+ self.epilogue();
+ });
+}
+
+/**
+ * Inherit from `Base.prototype`.
+ */
+inherits(NyanCat, Base);
+
+/**
+ * Draw the nyan cat
+ *
+ * @api private
+ */
+
+NyanCat.prototype.draw = function() {
+ this.appendRainbow();
+ this.drawScoreboard();
+ this.drawRainbow();
+ this.drawNyanCat();
+ this.tick = !this.tick;
+};
+
+/**
+ * Draw the "scoreboard" showing the number
+ * of passes, failures and pending tests.
+ *
+ * @api private
+ */
+
+NyanCat.prototype.drawScoreboard = function() {
+ var stats = this.stats;
+
+ function draw(type, n) {
+ write(' ');
+ write(Base.color(type, n));
+ write('\n');
+ }
+
+ draw('green', stats.passes);
+ draw('fail', stats.failures);
+ draw('pending', stats.pending);
+ write('\n');
+
+ this.cursorUp(this.numberOfLines);
+};
+
+/**
+ * Append the rainbow.
+ *
+ * @api private
+ */
+
+NyanCat.prototype.appendRainbow = function() {
+ var segment = this.tick ? '_' : '-';
+ var rainbowified = this.rainbowify(segment);
+
+ for (var index = 0; index < this.numberOfLines; index++) {
+ var trajectory = this.trajectories[index];
+ if (trajectory.length >= this.trajectoryWidthMax) {
+ trajectory.shift();
+ }
+ trajectory.push(rainbowified);
+ }
+};
+
+/**
+ * Draw the rainbow.
+ *
+ * @api private
+ */
+
+NyanCat.prototype.drawRainbow = function() {
+ var self = this;
+
+ this.trajectories.forEach(function(line) {
+ write('\u001b[' + self.scoreboardWidth + 'C');
+ write(line.join(''));
+ write('\n');
+ });
+
+ this.cursorUp(this.numberOfLines);
+};
+
+/**
+ * Draw the nyan cat
+ *
+ * @api private
+ */
+NyanCat.prototype.drawNyanCat = function() {
+ var self = this;
+ var startWidth = this.scoreboardWidth + this.trajectories[0].length;
+ var dist = '\u001b[' + startWidth + 'C';
+ var padding = '';
+
+ write(dist);
+ write('_,------,');
+ write('\n');
+
+ write(dist);
+ padding = self.tick ? ' ' : ' ';
+ write('_|' + padding + '/\\_/\\ ');
+ write('\n');
+
+ write(dist);
+ padding = self.tick ? '_' : '__';
+ var tail = self.tick ? '~' : '^';
+ write(tail + '|' + padding + this.face() + ' ');
+ write('\n');
+
+ write(dist);
+ padding = self.tick ? ' ' : ' ';
+ write(padding + '"" "" ');
+ write('\n');
+
+ this.cursorUp(this.numberOfLines);
+};
+
+/**
+ * Draw nyan cat face.
+ *
+ * @api private
+ * @return {string}
+ */
+
+NyanCat.prototype.face = function() {
+ var stats = this.stats;
+ if (stats.failures) {
+ return '( x .x)';
+ } else if (stats.pending) {
+ return '( o .o)';
+ } else if (stats.passes) {
+ return '( ^ .^)';
+ }
+ return '( - .-)';
+};
+
+/**
+ * Move cursor up `n`.
+ *
+ * @api private
+ * @param {number} n
+ */
+
+NyanCat.prototype.cursorUp = function(n) {
+ write('\u001b[' + n + 'A');
+};
+
+/**
+ * Move cursor down `n`.
+ *
+ * @api private
+ * @param {number} n
+ */
+
+NyanCat.prototype.cursorDown = function(n) {
+ write('\u001b[' + n + 'B');
+};
+
+/**
+ * Generate rainbow colors.
+ *
+ * @api private
+ * @return {Array}
+ */
+NyanCat.prototype.generateColors = function() {
+ var colors = [];
+
+ for (var i = 0; i < (6 * 7); i++) {
+ var pi3 = Math.floor(Math.PI / 3);
+ var n = (i * (1.0 / 6));
+ var r = Math.floor(3 * Math.sin(n) + 3);
+ var g = Math.floor(3 * Math.sin(n + 2 * pi3) + 3);
+ var b = Math.floor(3 * Math.sin(n + 4 * pi3) + 3);
+ colors.push(36 * r + 6 * g + b + 16);
+ }
+
+ return colors;
+};
+
+/**
+ * Apply rainbow to the given `str`.
+ *
+ * @api private
+ * @param {string} str
+ * @return {string}
+ */
+NyanCat.prototype.rainbowify = function(str) {
+ if (!Base.useColors) {
+ return str;
+ }
+ var color = this.rainbowColors[this.colorIndex % this.rainbowColors.length];
+ this.colorIndex += 1;
+ return '\u001b[38;5;' + color + 'm' + str + '\u001b[0m';
+};
+
+/**
+ * Stdout helper.
+ *
+ * @param {string} string A message to write to stdout.
+ */
+function write(string) {
+ process.stdout.write(string);
+}
+
+}).call(this,require('_process'))
+},{"../utils":38,"./base":17,"_process":67}],29:[function(require,module,exports){
+(function (process){
+/**
+ * Module dependencies.
+ */
+
+var Base = require('./base');
+var inherits = require('../utils').inherits;
+var color = Base.color;
+var cursor = Base.cursor;
+
+/**
+ * Expose `Progress`.
+ */
+
+exports = module.exports = Progress;
+
+/**
+ * General progress bar color.
+ */
+
+Base.colors.progress = 90;
+
+/**
+ * Initialize a new `Progress` bar test reporter.
+ *
+ * @api public
+ * @param {Runner} runner
+ * @param {Object} options
+ */
+function Progress(runner, options) {
+ Base.call(this, runner);
+
+ var self = this;
+ var width = Base.window.width * .50 | 0;
+ var total = runner.total;
+ var complete = 0;
+ var lastN = -1;
+
+ // default chars
+ options = options || {};
+ options.open = options.open || '[';
+ options.complete = options.complete || '▬';
+ options.incomplete = options.incomplete || Base.symbols.dot;
+ options.close = options.close || ']';
+ options.verbose = false;
+
+ // tests started
+ runner.on('start', function() {
+ console.log();
+ cursor.hide();
+ });
+
+ // tests complete
+ runner.on('test end', function() {
+ complete++;
+
+ var percent = complete / total;
+ var n = width * percent | 0;
+ var i = width - n;
+
+ if (n === lastN && !options.verbose) {
+ // Don't re-render the line if it hasn't changed
+ return;
+ }
+ lastN = n;
+
+ cursor.CR();
+ process.stdout.write('\u001b[J');
+ process.stdout.write(color('progress', ' ' + options.open));
+ process.stdout.write(Array(n).join(options.complete));
+ process.stdout.write(Array(i).join(options.incomplete));
+ process.stdout.write(color('progress', options.close));
+ if (options.verbose) {
+ process.stdout.write(color('progress', ' ' + complete + ' of ' + total));
+ }
+ });
+
+ // tests are complete, output some stats
+ // and the failures if any
+ runner.on('end', function() {
+ cursor.show();
+ console.log();
+ self.epilogue();
+ });
+}
+
+/**
+ * Inherit from `Base.prototype`.
+ */
+inherits(Progress, Base);
+
+}).call(this,require('_process'))
+},{"../utils":38,"./base":17,"_process":67}],30:[function(require,module,exports){
+/**
+ * Module dependencies.
+ */
+
+var Base = require('./base');
+var inherits = require('../utils').inherits;
+var color = Base.color;
+
+/**
+ * Expose `Spec`.
+ */
+
+exports = module.exports = Spec;
+
+/**
+ * Initialize a new `Spec` test reporter.
+ *
+ * @api public
+ * @param {Runner} runner
+ */
+function Spec(runner) {
+ Base.call(this, runner);
+
+ var self = this;
+ var indents = 0;
+ var n = 0;
+
+ function indent() {
+ return Array(indents).join(' ');
+ }
+
+ runner.on('start', function() {
+ console.log();
+ });
+
+ runner.on('suite', function(suite) {
+ ++indents;
+ console.log(color('suite', '%s%s'), indent(), suite.title);
+ });
+
+ runner.on('suite end', function() {
+ --indents;
+ if (indents === 1) {
+ console.log();
+ }
+ });
+
+ runner.on('pending', function(test) {
+ var fmt = indent() + color('pending', ' - %s');
+ console.log(fmt, test.title);
+ });
+
+ runner.on('pass', function(test) {
+ var fmt;
+ if (test.speed === 'fast') {
+ fmt = indent()
+ + color('checkmark', ' ' + Base.symbols.ok)
+ + color('pass', ' %s');
+ console.log(fmt, test.title);
+ } else {
+ fmt = indent()
+ + color('checkmark', ' ' + Base.symbols.ok)
+ + color('pass', ' %s')
+ + color(test.speed, ' (%dms)');
+ console.log(fmt, test.title, test.duration);
+ }
+ });
+
+ runner.on('fail', function(test) {
+ console.log(indent() + color('fail', ' %d) %s'), ++n, test.title);
+ });
+
+ runner.on('end', self.epilogue.bind(self));
+}
+
+/**
+ * Inherit from `Base.prototype`.
+ */
+inherits(Spec, Base);
+
+},{"../utils":38,"./base":17}],31:[function(require,module,exports){
+/**
+ * Module dependencies.
+ */
+
+var Base = require('./base');
+
+/**
+ * Expose `TAP`.
+ */
+
+exports = module.exports = TAP;
+
+/**
+ * Initialize a new `TAP` reporter.
+ *
+ * @api public
+ * @param {Runner} runner
+ */
+function TAP(runner) {
+ Base.call(this, runner);
+
+ var n = 1;
+ var passes = 0;
+ var failures = 0;
+
+ runner.on('start', function() {
+ var total = runner.grepTotal(runner.suite);
+ console.log('%d..%d', 1, total);
+ });
+
+ runner.on('test end', function() {
+ ++n;
+ });
+
+ runner.on('pending', function(test) {
+ console.log('ok %d %s # SKIP -', n, title(test));
+ });
+
+ runner.on('pass', function(test) {
+ passes++;
+ console.log('ok %d %s', n, title(test));
+ });
+
+ runner.on('fail', function(test, err) {
+ failures++;
+ console.log('not ok %d %s', n, title(test));
+ if (err.stack) {
+ console.log(err.stack.replace(/^/gm, ' '));
+ }
+ });
+
+ runner.on('end', function() {
+ console.log('# tests ' + (passes + failures));
+ console.log('# pass ' + passes);
+ console.log('# fail ' + failures);
+ });
+}
+
+/**
+ * Return a TAP-safe title of `test`
+ *
+ * @api private
+ * @param {Object} test
+ * @return {String}
+ */
+function title(test) {
+ return test.fullTitle().replace(/#/g, '');
+}
+
+},{"./base":17}],32:[function(require,module,exports){
+(function (process,global){
+/**
+ * Module dependencies.
+ */
+
+var Base = require('./base');
+var utils = require('../utils');
+var inherits = utils.inherits;
+var fs = require('fs');
+var escape = utils.escape;
+var mkdirp = require('mkdirp');
+var path = require('path');
+
+/**
+ * Save timer references to avoid Sinon interfering (see GH-237).
+ */
+
+/* eslint-disable no-unused-vars, no-native-reassign */
+var Date = global.Date;
+var setTimeout = global.setTimeout;
+var setInterval = global.setInterval;
+var clearTimeout = global.clearTimeout;
+var clearInterval = global.clearInterval;
+/* eslint-enable no-unused-vars, no-native-reassign */
+
+/**
+ * Expose `XUnit`.
+ */
+
+exports = module.exports = XUnit;
+
+/**
+ * Initialize a new `XUnit` reporter.
+ *
+ * @api public
+ * @param {Runner} runner
+ */
+function XUnit(runner, options) {
+ Base.call(this, runner);
+
+ var stats = this.stats;
+ var tests = [];
+ var self = this;
+
+ if (options.reporterOptions && options.reporterOptions.output) {
+ if (!fs.createWriteStream) {
+ throw new Error('file output not supported in browser');
+ }
+ mkdirp.sync(path.dirname(options.reporterOptions.output));
+ self.fileStream = fs.createWriteStream(options.reporterOptions.output);
+ }
+
+ runner.on('pending', function(test) {
+ tests.push(test);
+ });
+
+ runner.on('pass', function(test) {
+ tests.push(test);
+ });
+
+ runner.on('fail', function(test) {
+ tests.push(test);
+ });
+
+ runner.on('end', function() {
+ self.write(tag('testsuite', {
+ name: 'Mocha Tests',
+ tests: stats.tests,
+ failures: stats.failures,
+ errors: stats.failures,
+ skipped: stats.tests - stats.failures - stats.passes,
+ timestamp: (new Date()).toUTCString(),
+ time: (stats.duration / 1000) || 0
+ }, false));
+
+ tests.forEach(function(t) {
+ self.test(t);
+ });
+
+ self.write('</testsuite>');
+ });
+}
+
+/**
+ * Inherit from `Base.prototype`.
+ */
+inherits(XUnit, Base);
+
+/**
+ * Override done to close the stream (if it's a file).
+ *
+ * @param failures
+ * @param {Function} fn
+ */
+XUnit.prototype.done = function(failures, fn) {
+ if (this.fileStream) {
+ this.fileStream.end(function() {
+ fn(failures);
+ });
+ } else {
+ fn(failures);
+ }
+};
+
+/**
+ * Write out the given line.
+ *
+ * @param {string} line
+ */
+XUnit.prototype.write = function(line) {
+ if (this.fileStream) {
+ this.fileStream.write(line + '\n');
+ } else if (typeof process === 'object' && process.stdout) {
+ process.stdout.write(line + '\n');
+ } else {
+ console.log(line);
+ }
+};
+
+/**
+ * Output tag for the given `test.`
+ *
+ * @param {Test} test
+ */
+XUnit.prototype.test = function(test) {
+ var attrs = {
+ classname: test.parent.fullTitle(),
+ name: test.title,
+ time: (test.duration / 1000) || 0
+ };
+
+ if (test.state === 'failed') {
+ var err = test.err;
+ this.write(tag('testcase', attrs, false, tag('failure', {}, false, escape(err.message) + '\n' + escape(err.stack))));
+ } else if (test.isPending()) {
+ this.write(tag('testcase', attrs, false, tag('skipped', {}, true)));
+ } else {
+ this.write(tag('testcase', attrs, true));
+ }
+};
+
+/**
+ * HTML tag helper.
+ *
+ * @param name
+ * @param attrs
+ * @param close
+ * @param content
+ * @return {string}
+ */
+function tag(name, attrs, close, content) {
+ var end = close ? '/>' : '>';
+ var pairs = [];
+ var tag;
+
+ for (var key in attrs) {
+ if (Object.prototype.hasOwnProperty.call(attrs, key)) {
+ pairs.push(key + '="' + escape(attrs[key]) + '"');
+ }
+ }
+
+ tag = '<' + name + (pairs.length ? ' ' + pairs.join(' ') : '') + end;
+ if (content) {
+ tag += content + '</' + name + end;
+ }
+ return tag;
+}
+
+}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"../utils":38,"./base":17,"_process":67,"fs":42,"mkdirp":64,"path":42}],33:[function(require,module,exports){
+(function (global){
+/**
+ * Module dependencies.
+ */
+
+var EventEmitter = require('events').EventEmitter;
+var JSON = require('json3');
+var Pending = require('./pending');
+var debug = require('debug')('mocha:runnable');
+var milliseconds = require('./ms');
+var utils = require('./utils');
+var create = require('lodash.create');
+
+/**
+ * Save timer references to avoid Sinon interfering (see GH-237).
+ */
+
+/* eslint-disable no-unused-vars, no-native-reassign */
+var Date = global.Date;
+var setTimeout = global.setTimeout;
+var setInterval = global.setInterval;
+var clearTimeout = global.clearTimeout;
+var clearInterval = global.clearInterval;
+/* eslint-enable no-unused-vars, no-native-reassign */
+
+/**
+ * Object#toString().
+ */
+
+var toString = Object.prototype.toString;
+
+/**
+ * Expose `Runnable`.
+ */
+
+module.exports = Runnable;
+
+/**
+ * Initialize a new `Runnable` with the given `title` and callback `fn`.
+ *
+ * @param {String} title
+ * @param {Function} fn
+ * @api private
+ * @param {string} title
+ * @param {Function} fn
+ */
+function Runnable(title, fn) {
+ this.title = title;
+ this.fn = fn;
+ this.body = (fn || '').toString();
+ this.async = fn && fn.length;
+ this.sync = !this.async;
+ this._timeout = 2000;
+ this._slow = 75;
+ this._enableTimeouts = true;
+ this.timedOut = false;
+ this._trace = new Error('done() called multiple times');
+ this._retries = -1;
+ this._currentRetry = 0;
+ this.pending = false;
+}
+
+/**
+ * Inherit from `EventEmitter.prototype`.
+ */
+Runnable.prototype = create(EventEmitter.prototype, {
+ constructor: Runnable
+});
+
+/**
+ * Set & get timeout `ms`.
+ *
+ * @api private
+ * @param {number|string} ms
+ * @return {Runnable|number} ms or Runnable instance.
+ */
+Runnable.prototype.timeout = function(ms) {
+ if (!arguments.length) {
+ return this._timeout;
+ }
+ // see #1652 for reasoning
+ if (ms === 0 || ms > Math.pow(2, 31)) {
+ this._enableTimeouts = false;
+ }
+ if (typeof ms === 'string') {
+ ms = milliseconds(ms);
+ }
+ debug('timeout %d', ms);
+ this._timeout = ms;
+ if (this.timer) {
+ this.resetTimeout();
+ }
+ return this;
+};
+
+/**
+ * Set & get slow `ms`.
+ *
+ * @api private
+ * @param {number|string} ms
+ * @return {Runnable|number} ms or Runnable instance.
+ */
+Runnable.prototype.slow = function(ms) {
+ if (typeof ms === 'undefined') {
+ return this._slow;
+ }
+ if (typeof ms === 'string') {
+ ms = milliseconds(ms);
+ }
+ debug('timeout %d', ms);
+ this._slow = ms;
+ return this;
+};
+
+/**
+ * Set and get whether timeout is `enabled`.
+ *
+ * @api private
+ * @param {boolean} enabled
+ * @return {Runnable|boolean} enabled or Runnable instance.
+ */
+Runnable.prototype.enableTimeouts = function(enabled) {
+ if (!arguments.length) {
+ return this._enableTimeouts;
+ }
+ debug('enableTimeouts %s', enabled);
+ this._enableTimeouts = enabled;
+ return this;
+};
+
+/**
+ * Halt and mark as pending.
+ *
+ * @api public
+ */
+Runnable.prototype.skip = function() {
+ throw new Pending();
+};
+
+/**
+ * Check if this runnable or its parent suite is marked as pending.
+ *
+ * @api private
+ */
+Runnable.prototype.isPending = function() {
+ return this.pending || (this.parent && this.parent.isPending());
+};
+
+/**
+ * Set number of retries.
+ *
+ * @api private
+ */
+Runnable.prototype.retries = function(n) {
+ if (!arguments.length) {
+ return this._retries;
+ }
+ this._retries = n;
+};
+
+/**
+ * Get current retry
+ *
+ * @api private
+ */
+Runnable.prototype.currentRetry = function(n) {
+ if (!arguments.length) {
+ return this._currentRetry;
+ }
+ this._currentRetry = n;
+};
+
+/**
+ * Return the full title generated by recursively concatenating the parent's
+ * full title.
+ *
+ * @api public
+ * @return {string}
+ */
+Runnable.prototype.fullTitle = function() {
+ return this.parent.fullTitle() + ' ' + this.title;
+};
+
+/**
+ * Clear the timeout.
+ *
+ * @api private
+ */
+Runnable.prototype.clearTimeout = function() {
+ clearTimeout(this.timer);
+};
+
+/**
+ * Inspect the runnable void of private properties.
+ *
+ * @api private
+ * @return {string}
+ */
+Runnable.prototype.inspect = function() {
+ return JSON.stringify(this, function(key, val) {
+ if (key[0] === '_') {
+ return;
+ }
+ if (key === 'parent') {
+ return '#<Suite>';
+ }
+ if (key === 'ctx') {
+ return '#<Context>';
+ }
+ return val;
+ }, 2);
+};
+
+/**
+ * Reset the timeout.
+ *
+ * @api private
+ */
+Runnable.prototype.resetTimeout = function() {
+ var self = this;
+ var ms = this.timeout() || 1e9;
+
+ if (!this._enableTimeouts) {
+ return;
+ }
+ this.clearTimeout();
+ this.timer = setTimeout(function() {
+ if (!self._enableTimeouts) {
+ return;
+ }
+ self.callback(new Error('timeout of ' + ms + 'ms exceeded. Ensure the done() callback is being called in this test.'));
+ self.timedOut = true;
+ }, ms);
+};
+
+/**
+ * Whitelist a list of globals for this test run.
+ *
+ * @api private
+ * @param {string[]} globals
+ */
+Runnable.prototype.globals = function(globals) {
+ if (!arguments.length) {
+ return this._allowedGlobals;
+ }
+ this._allowedGlobals = globals;
+};
+
+/**
+ * Run the test and invoke `fn(err)`.
+ *
+ * @param {Function} fn
+ * @api private
+ */
+Runnable.prototype.run = function(fn) {
+ var self = this;
+ var start = new Date();
+ var ctx = this.ctx;
+ var finished;
+ var emitted;
+
+ // Sometimes the ctx exists, but it is not runnable
+ if (ctx && ctx.runnable) {
+ ctx.runnable(this);
+ }
+
+ // called multiple times
+ function multiple(err) {
+ if (emitted) {
+ return;
+ }
+ emitted = true;
+ self.emit('error', err || new Error('done() called multiple times; stacktrace may be inaccurate'));
+ }
+
+ // finished
+ function done(err) {
+ var ms = self.timeout();
+ if (self.timedOut) {
+ return;
+ }
+ if (finished) {
+ return multiple(err || self._trace);
+ }
+
+ self.clearTimeout();
+ self.duration = new Date() - start;
+ finished = true;
+ if (!err && self.duration > ms && self._enableTimeouts) {
+ err = new Error('timeout of ' + ms + 'ms exceeded. Ensure the done() callback is being called in this test.');
+ }
+ fn(err);
+ }
+
+ // for .resetTimeout()
+ this.callback = done;
+
+ // explicit async with `done` argument
+ if (this.async) {
+ this.resetTimeout();
+
+ if (this.allowUncaught) {
+ return callFnAsync(this.fn);
+ }
+ try {
+ // allows skip() to be used in an explicit async context
+ this.skip = function() {
+ done(new Pending());
+ };
+ callFnAsync(this.fn);
+ } catch (err) {
+ done(utils.getError(err));
+ }
+ return;
+ }
+
+ if (this.allowUncaught) {
+ callFn(this.fn);
+ done();
+ return;
+ }
+
+ // sync or promise-returning
+ try {
+ if (this.isPending()) {
+ done();
+ } else {
+ callFn(this.fn);
+ }
+ } catch (err) {
+ done(utils.getError(err));
+ }
+
+ function callFn(fn) {
+ var result = fn.call(ctx);
+ if (result && typeof result.then === 'function') {
+ self.resetTimeout();
+ result
+ .then(function() {
+ done();
+ // Return null so libraries like bluebird do not warn about
+ // subsequently constructed Promises.
+ return null;
+ },
+ function(reason) {
+ done(reason || new Error('Promise rejected with no or falsy reason'));
+ });
+ } else {
+ if (self.asyncOnly) {
+ return done(new Error('--async-only option in use without declaring `done()` or returning a promise'));
+ }
+
+ done();
+ }
+ }
+
+ function callFnAsync(fn) {
+ var result = fn.call(ctx, function(err) {
+ if (err instanceof Error || toString.call(err) === '[object Error]') {
+ return done(err);
+ }
+ if (err) {
+ if (Object.prototype.toString.call(err) === '[object Object]') {
+ return done(new Error('done() invoked with non-Error: '
+ + JSON.stringify(err)));
+ }
+ return done(new Error('done() invoked with non-Error: ' + err));
+ }
+ if (result && utils.isPromise(result)) {
+ return done(new Error('Resolution method is overspecified. Specify a callback *or* return a Promise; not both.'));
+ }
+
+ done();
+ });
+ }
+};
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"./ms":15,"./pending":16,"./utils":38,"debug":2,"events":3,"json3":54,"lodash.create":60}],34:[function(require,module,exports){
+(function (process,global){
+/**
+ * Module dependencies.
+ */
+
+var EventEmitter = require('events').EventEmitter;
+var Pending = require('./pending');
+var utils = require('./utils');
+var inherits = utils.inherits;
+var debug = require('debug')('mocha:runner');
+var Runnable = require('./runnable');
+var filter = utils.filter;
+var indexOf = utils.indexOf;
+var some = utils.some;
+var keys = utils.keys;
+var stackFilter = utils.stackTraceFilter();
+var stringify = utils.stringify;
+var type = utils.type;
+var undefinedError = utils.undefinedError;
+var isArray = utils.isArray;
+
+/**
+ * Non-enumerable globals.
+ */
+
+var globals = [
+ 'setTimeout',
+ 'clearTimeout',
+ 'setInterval',
+ 'clearInterval',
+ 'XMLHttpRequest',
+ 'Date',
+ 'setImmediate',
+ 'clearImmediate'
+];
+
+/**
+ * Expose `Runner`.
+ */
+
+module.exports = Runner;
+
+/**
+ * Initialize a `Runner` for the given `suite`.
+ *
+ * Events:
+ *
+ * - `start` execution started
+ * - `end` execution complete
+ * - `suite` (suite) test suite execution started
+ * - `suite end` (suite) all tests (and sub-suites) have finished
+ * - `test` (test) test execution started
+ * - `test end` (test) test completed
+ * - `hook` (hook) hook execution started
+ * - `hook end` (hook) hook complete
+ * - `pass` (test) test passed
+ * - `fail` (test, err) test failed
+ * - `pending` (test) test pending
+ *
+ * @api public
+ * @param {Suite} suite Root suite
+ * @param {boolean} [delay] Whether or not to delay execution of root suite
+ * until ready.
+ */
+function Runner(suite, delay) {
+ var self = this;
+ this._globals = [];
+ this._abort = false;
+ this._delay = delay;
+ this.suite = suite;
+ this.started = false;
+ this.total = suite.total();
+ this.failures = 0;
+ this.on('test end', function(test) {
+ self.checkGlobals(test);
+ });
+ this.on('hook end', function(hook) {
+ self.checkGlobals(hook);
+ });
+ this._defaultGrep = /.*/;
+ this.grep(this._defaultGrep);
+ this.globals(this.globalProps().concat(extraGlobals()));
+}
+
+/**
+ * Wrapper for setImmediate, process.nextTick, or browser polyfill.
+ *
+ * @param {Function} fn
+ * @api private
+ */
+Runner.immediately = global.setImmediate || process.nextTick;
+
+/**
+ * Inherit from `EventEmitter.prototype`.
+ */
+inherits(Runner, EventEmitter);
+
+/**
+ * Run tests with full titles matching `re`. Updates runner.total
+ * with number of tests matched.
+ *
+ * @param {RegExp} re
+ * @param {Boolean} invert
+ * @return {Runner} for chaining
+ * @api public
+ * @param {RegExp} re
+ * @param {boolean} invert
+ * @return {Runner} Runner instance.
+ */
+Runner.prototype.grep = function(re, invert) {
+ debug('grep %s', re);
+ this._grep = re;
+ this._invert = invert;
+ this.total = this.grepTotal(this.suite);
+ return this;
+};
+
+/**
+ * Returns the number of tests matching the grep search for the
+ * given suite.
+ *
+ * @param {Suite} suite
+ * @return {Number}
+ * @api public
+ * @param {Suite} suite
+ * @return {number}
+ */
+Runner.prototype.grepTotal = function(suite) {
+ var self = this;
+ var total = 0;
+
+ suite.eachTest(function(test) {
+ var match = self._grep.test(test.fullTitle());
+ if (self._invert) {
+ match = !match;
+ }
+ if (match) {
+ total++;
+ }
+ });
+
+ return total;
+};
+
+/**
+ * Return a list of global properties.
+ *
+ * @return {Array}
+ * @api private
+ */
+Runner.prototype.globalProps = function() {
+ var props = keys(global);
+
+ // non-enumerables
+ for (var i = 0; i < globals.length; ++i) {
+ if (~indexOf(props, globals[i])) {
+ continue;
+ }
+ props.push(globals[i]);
+ }
+
+ return props;
+};
+
+/**
+ * Allow the given `arr` of globals.
+ *
+ * @param {Array} arr
+ * @return {Runner} for chaining
+ * @api public
+ * @param {Array} arr
+ * @return {Runner} Runner instance.
+ */
+Runner.prototype.globals = function(arr) {
+ if (!arguments.length) {
+ return this._globals;
+ }
+ debug('globals %j', arr);
+ this._globals = this._globals.concat(arr);
+ return this;
+};
+
+/**
+ * Check for global variable leaks.
+ *
+ * @api private
+ */
+Runner.prototype.checkGlobals = function(test) {
+ if (this.ignoreLeaks) {
+ return;
+ }
+ var ok = this._globals;
+
+ var globals = this.globalProps();
+ var leaks;
+
+ if (test) {
+ ok = ok.concat(test._allowedGlobals || []);
+ }
+
+ if (this.prevGlobalsLength === globals.length) {
+ return;
+ }
+ this.prevGlobalsLength = globals.length;
+
+ leaks = filterLeaks(ok, globals);
+ this._globals = this._globals.concat(leaks);
+
+ if (leaks.length > 1) {
+ this.fail(test, new Error('global leaks detected: ' + leaks.join(', ') + ''));
+ } else if (leaks.length) {
+ this.fail(test, new Error('global leak detected: ' + leaks[0]));
+ }
+};
+
+/**
+ * Fail the given `test`.
+ *
+ * @api private
+ * @param {Test} test
+ * @param {Error} err
+ */
+Runner.prototype.fail = function(test, err) {
+ ++this.failures;
+ test.state = 'failed';
+
+ if (!(err instanceof Error || err && typeof err.message === 'string')) {
+ err = new Error('the ' + type(err) + ' ' + stringify(err) + ' was thrown, throw an Error :)');
+ }
+
+ err.stack = (this.fullStackTrace || !err.stack)
+ ? err.stack
+ : stackFilter(err.stack);
+
+ this.emit('fail', test, err);
+};
+
+/**
+ * Fail the given `hook` with `err`.
+ *
+ * Hook failures work in the following pattern:
+ * - If bail, then exit
+ * - Failed `before` hook skips all tests in a suite and subsuites,
+ * but jumps to corresponding `after` hook
+ * - Failed `before each` hook skips remaining tests in a
+ * suite and jumps to corresponding `after each` hook,
+ * which is run only once
+ * - Failed `after` hook does not alter
+ * execution order
+ * - Failed `after each` hook skips remaining tests in a
+ * suite and subsuites, but executes other `after each`
+ * hooks
+ *
+ * @api private
+ * @param {Hook} hook
+ * @param {Error} err
+ */
+Runner.prototype.failHook = function(hook, err) {
+ if (hook.ctx && hook.ctx.currentTest) {
+ hook.originalTitle = hook.originalTitle || hook.title;
+ hook.title = hook.originalTitle + ' for "' + hook.ctx.currentTest.title + '"';
+ }
+
+ this.fail(hook, err);
+ if (this.suite.bail()) {
+ this.emit('end');
+ }
+};
+
+/**
+ * Run hook `name` callbacks and then invoke `fn()`.
+ *
+ * @api private
+ * @param {string} name
+ * @param {Function} fn
+ */
+
+Runner.prototype.hook = function(name, fn) {
+ var suite = this.suite;
+ var hooks = suite['_' + name];
+ var self = this;
+
+ function next(i) {
+ var hook = hooks[i];
+ if (!hook) {
+ return fn();
+ }
+ self.currentRunnable = hook;
+
+ hook.ctx.currentTest = self.test;
+
+ self.emit('hook', hook);
+
+ if (!hook.listeners('error').length) {
+ hook.on('error', function(err) {
+ self.failHook(hook, err);
+ });
+ }
+
+ hook.run(function(err) {
+ var testError = hook.error();
+ if (testError) {
+ self.fail(self.test, testError);
+ }
+ if (err) {
+ if (err instanceof Pending) {
+ if (name === 'beforeEach' || name === 'afterEach') {
+ self.test.pending = true;
+ } else {
+ suite.tests.forEach(function(test) {
+ test.pending = true;
+ });
+ }
+ } else {
+ self.failHook(hook, err);
+
+ // stop executing hooks, notify callee of hook err
+ return fn(err);
+ }
+ }
+ self.emit('hook end', hook);
+ delete hook.ctx.currentTest;
+ next(++i);
+ });
+ }
+
+ Runner.immediately(function() {
+ next(0);
+ });
+};
+
+/**
+ * Run hook `name` for the given array of `suites`
+ * in order, and callback `fn(err, errSuite)`.
+ *
+ * @api private
+ * @param {string} name
+ * @param {Array} suites
+ * @param {Function} fn
+ */
+Runner.prototype.hooks = function(name, suites, fn) {
+ var self = this;
+ var orig = this.suite;
+
+ function next(suite) {
+ self.suite = suite;
+
+ if (!suite) {
+ self.suite = orig;
+ return fn();
+ }
+
+ self.hook(name, function(err) {
+ if (err) {
+ var errSuite = self.suite;
+ self.suite = orig;
+ return fn(err, errSuite);
+ }
+
+ next(suites.pop());
+ });
+ }
+
+ next(suites.pop());
+};
+
+/**
+ * Run hooks from the top level down.
+ *
+ * @param {String} name
+ * @param {Function} fn
+ * @api private
+ */
+Runner.prototype.hookUp = function(name, fn) {
+ var suites = [this.suite].concat(this.parents()).reverse();
+ this.hooks(name, suites, fn);
+};
+
+/**
+ * Run hooks from the bottom up.
+ *
+ * @param {String} name
+ * @param {Function} fn
+ * @api private
+ */
+Runner.prototype.hookDown = function(name, fn) {
+ var suites = [this.suite].concat(this.parents());
+ this.hooks(name, suites, fn);
+};
+
+/**
+ * Return an array of parent Suites from
+ * closest to furthest.
+ *
+ * @return {Array}
+ * @api private
+ */
+Runner.prototype.parents = function() {
+ var suite = this.suite;
+ var suites = [];
+ while (suite.parent) {
+ suite = suite.parent;
+ suites.push(suite);
+ }
+ return suites;
+};
+
+/**
+ * Run the current test and callback `fn(err)`.
+ *
+ * @param {Function} fn
+ * @api private
+ */
+Runner.prototype.runTest = function(fn) {
+ var self = this;
+ var test = this.test;
+
+ if (this.asyncOnly) {
+ test.asyncOnly = true;
+ }
+
+ if (this.allowUncaught) {
+ test.allowUncaught = true;
+ return test.run(fn);
+ }
+ try {
+ test.on('error', function(err) {
+ self.fail(test, err);
+ });
+ test.run(fn);
+ } catch (err) {
+ fn(err);
+ }
+};
+
+/**
+ * Run tests in the given `suite` and invoke the callback `fn()` when complete.
+ *
+ * @api private
+ * @param {Suite} suite
+ * @param {Function} fn
+ */
+Runner.prototype.runTests = function(suite, fn) {
+ var self = this;
+ var tests = suite.tests.slice();
+ var test;
+
+ function hookErr(_, errSuite, after) {
+ // before/after Each hook for errSuite failed:
+ var orig = self.suite;
+
+ // for failed 'after each' hook start from errSuite parent,
+ // otherwise start from errSuite itself
+ self.suite = after ? errSuite.parent : errSuite;
+
+ if (self.suite) {
+ // call hookUp afterEach
+ self.hookUp('afterEach', function(err2, errSuite2) {
+ self.suite = orig;
+ // some hooks may fail even now
+ if (err2) {
+ return hookErr(err2, errSuite2, true);
+ }
+ // report error suite
+ fn(errSuite);
+ });
+ } else {
+ // there is no need calling other 'after each' hooks
+ self.suite = orig;
+ fn(errSuite);
+ }
+ }
+
+ function next(err, errSuite) {
+ // if we bail after first err
+ if (self.failures && suite._bail) {
+ return fn();
+ }
+
+ if (self._abort) {
+ return fn();
+ }
+
+ if (err) {
+ return hookErr(err, errSuite, true);
+ }
+
+ // next test
+ test = tests.shift();
+
+ // all done
+ if (!test) {
+ return fn();
+ }
+
+ // grep
+ var match = self._grep.test(test.fullTitle());
+ if (self._invert) {
+ match = !match;
+ }
+ if (!match) {
+ // Run immediately only if we have defined a grep. When we
+ // define a grep — It can cause maximum callstack error if
+ // the grep is doing a large recursive loop by neglecting
+ // all tests. The run immediately function also comes with
+ // a performance cost. So we don't want to run immediately
+ // if we run the whole test suite, because running the whole
+ // test suite don't do any immediate recursive loops. Thus,
+ // allowing a JS runtime to breathe.
+ if (self._grep !== self._defaultGrep) {
+ Runner.immediately(next);
+ } else {
+ next();
+ }
+ return;
+ }
+
+ if (test.isPending()) {
+ self.emit('pending', test);
+ self.emit('test end', test);
+ return next();
+ }
+
+ // execute test and hook(s)
+ self.emit('test', self.test = test);
+ self.hookDown('beforeEach', function(err, errSuite) {
+ if (test.isPending()) {
+ self.emit('pending', test);
+ self.emit('test end', test);
+ return next();
+ }
+ if (err) {
+ return hookErr(err, errSuite, false);
+ }
+ self.currentRunnable = self.test;
+ self.runTest(function(err) {
+ test = self.test;
+ if (err) {
+ var retry = test.currentRetry();
+ if (err instanceof Pending) {
+ test.pending = true;
+ self.emit('pending', test);
+ } else if (retry < test.retries()) {
+ var clonedTest = test.clone();
+ clonedTest.currentRetry(retry + 1);
+ tests.unshift(clonedTest);
+
+ // Early return + hook trigger so that it doesn't
+ // increment the count wrong
+ return self.hookUp('afterEach', next);
+ } else {
+ self.fail(test, err);
+ }
+ self.emit('test end', test);
+
+ if (err instanceof Pending) {
+ return next();
+ }
+
+ return self.hookUp('afterEach', next);
+ }
+
+ test.state = 'passed';
+ self.emit('pass', test);
+ self.emit('test end', test);
+ self.hookUp('afterEach', next);
+ });
+ });
+ }
+
+ this.next = next;
+ this.hookErr = hookErr;
+ next();
+};
+
+/**
+ * Run the given `suite` and invoke the callback `fn()` when complete.
+ *
+ * @api private
+ * @param {Suite} suite
+ * @param {Function} fn
+ */
+Runner.prototype.runSuite = function(suite, fn) {
+ var i = 0;
+ var self = this;
+ var total = this.grepTotal(suite);
+ var afterAllHookCalled = false;
+
+ debug('run suite %s', suite.fullTitle());
+
+ if (!total || (self.failures && suite._bail)) {
+ return fn();
+ }
+
+ this.emit('suite', this.suite = suite);
+
+ function next(errSuite) {
+ if (errSuite) {
+ // current suite failed on a hook from errSuite
+ if (errSuite === suite) {
+ // if errSuite is current suite
+ // continue to the next sibling suite
+ return done();
+ }
+ // errSuite is among the parents of current suite
+ // stop execution of errSuite and all sub-suites
+ return done(errSuite);
+ }
+
+ if (self._abort) {
+ return done();
+ }
+
+ var curr = suite.suites[i++];
+ if (!curr) {
+ return done();
+ }
+
+ // Avoid grep neglecting large number of tests causing a
+ // huge recursive loop and thus a maximum call stack error.
+ // See comment in `this.runTests()` for more information.
+ if (self._grep !== self._defaultGrep) {
+ Runner.immediately(function() {
+ self.runSuite(curr, next);
+ });
+ } else {
+ self.runSuite(curr, next);
+ }
+ }
+
+ function done(errSuite) {
+ self.suite = suite;
+ self.nextSuite = next;
+
+ if (afterAllHookCalled) {
+ fn(errSuite);
+ } else {
+ // mark that the afterAll block has been called once
+ // and so can be skipped if there is an error in it.
+ afterAllHookCalled = true;
+
+ // remove reference to test
+ delete self.test;
+
+ self.hook('afterAll', function() {
+ self.emit('suite end', suite);
+ fn(errSuite);
+ });
+ }
+ }
+
+ this.nextSuite = next;
+
+ this.hook('beforeAll', function(err) {
+ if (err) {
+ return done();
+ }
+ self.runTests(suite, next);
+ });
+};
+
+/**
+ * Handle uncaught exceptions.
+ *
+ * @param {Error} err
+ * @api private
+ */
+Runner.prototype.uncaught = function(err) {
+ if (err) {
+ debug('uncaught exception %s', err !== function() {
+ return this;
+ }.call(err) ? err : (err.message || err));
+ } else {
+ debug('uncaught undefined exception');
+ err = undefinedError();
+ }
+ err.uncaught = true;
+
+ var runnable = this.currentRunnable;
+
+ if (!runnable) {
+ runnable = new Runnable('Uncaught error outside test suite');
+ runnable.parent = this.suite;
+
+ if (this.started) {
+ this.fail(runnable, err);
+ } else {
+ // Can't recover from this failure
+ this.emit('start');
+ this.fail(runnable, err);
+ this.emit('end');
+ }
+
+ return;
+ }
+
+ runnable.clearTimeout();
+
+ // Ignore errors if complete
+ if (runnable.state) {
+ return;
+ }
+ this.fail(runnable, err);
+
+ // recover from test
+ if (runnable.type === 'test') {
+ this.emit('test end', runnable);
+ this.hookUp('afterEach', this.next);
+ return;
+ }
+
+ // recover from hooks
+ if (runnable.type === 'hook') {
+ var errSuite = this.suite;
+ // if hook failure is in afterEach block
+ if (runnable.fullTitle().indexOf('after each') > -1) {
+ return this.hookErr(err, errSuite, true);
+ }
+ // if hook failure is in beforeEach block
+ if (runnable.fullTitle().indexOf('before each') > -1) {
+ return this.hookErr(err, errSuite, false);
+ }
+ // if hook failure is in after or before blocks
+ return this.nextSuite(errSuite);
+ }
+
+ // bail
+ this.emit('end');
+};
+
+/**
+ * Cleans up the references to all the deferred functions
+ * (before/after/beforeEach/afterEach) and tests of a Suite.
+ * These must be deleted otherwise a memory leak can happen,
+ * as those functions may reference variables from closures,
+ * thus those variables can never be garbage collected as long
+ * as the deferred functions exist.
+ *
+ * @param {Suite} suite
+ */
+function cleanSuiteReferences(suite) {
+ function cleanArrReferences(arr) {
+ for (var i = 0; i < arr.length; i++) {
+ delete arr[i].fn;
+ }
+ }
+
+ if (isArray(suite._beforeAll)) {
+ cleanArrReferences(suite._beforeAll);
+ }
+
+ if (isArray(suite._beforeEach)) {
+ cleanArrReferences(suite._beforeEach);
+ }
+
+ if (isArray(suite._afterAll)) {
+ cleanArrReferences(suite._afterAll);
+ }
+
+ if (isArray(suite._afterEach)) {
+ cleanArrReferences(suite._afterEach);
+ }
+
+ for (var i = 0; i < suite.tests.length; i++) {
+ delete suite.tests[i].fn;
+ }
+}
+
+/**
+ * Run the root suite and invoke `fn(failures)`
+ * on completion.
+ *
+ * @param {Function} fn
+ * @return {Runner} for chaining
+ * @api public
+ * @param {Function} fn
+ * @return {Runner} Runner instance.
+ */
+Runner.prototype.run = function(fn) {
+ var self = this;
+ var rootSuite = this.suite;
+
+ // If there is an `only` filter
+ if (this.hasOnly) {
+ filterOnly(rootSuite);
+ }
+
+ fn = fn || function() {};
+
+ function uncaught(err) {
+ self.uncaught(err);
+ }
+
+ function start() {
+ self.started = true;
+ self.emit('start');
+ self.runSuite(rootSuite, function() {
+ debug('finished running');
+ self.emit('end');
+ });
+ }
+
+ debug('start');
+
+ // references cleanup to avoid memory leaks
+ this.on('suite end', cleanSuiteReferences);
+
+ // callback
+ this.on('end', function() {
+ debug('end');
+ process.removeListener('uncaughtException', uncaught);
+ fn(self.failures);
+ });
+
+ // uncaught exception
+ process.on('uncaughtException', uncaught);
+
+ if (this._delay) {
+ // for reporters, I guess.
+ // might be nice to debounce some dots while we wait.
+ this.emit('waiting', rootSuite);
+ rootSuite.once('run', start);
+ } else {
+ start();
+ }
+
+ return this;
+};
+
+/**
+ * Cleanly abort execution.
+ *
+ * @api public
+ * @return {Runner} Runner instance.
+ */
+Runner.prototype.abort = function() {
+ debug('aborting');
+ this._abort = true;
+
+ return this;
+};
+
+/**
+ * Filter suites based on `isOnly` logic.
+ *
+ * @param {Array} suite
+ * @returns {Boolean}
+ * @api private
+ */
+function filterOnly(suite) {
+ if (suite._onlyTests.length) {
+ // If the suite contains `only` tests, run those and ignore any nested suites.
+ suite.tests = suite._onlyTests;
+ suite.suites = [];
+ } else {
+ // Otherwise, do not run any of the tests in this suite.
+ suite.tests = [];
+ suite._onlySuites.forEach(function(onlySuite) {
+ // If there are other `only` tests/suites nested in the current `only` suite, then filter that `only` suite.
+ // Otherwise, all of the tests on this `only` suite should be run, so don't filter it.
+ if (hasOnly(onlySuite)) {
+ filterOnly(onlySuite);
+ }
+ });
+ // Run the `only` suites, as well as any other suites that have `only` tests/suites as descendants.
+ suite.suites = filter(suite.suites, function(childSuite) {
+ return indexOf(suite._onlySuites, childSuite) !== -1 || filterOnly(childSuite);
+ });
+ }
+ // Keep the suite only if there is something to run
+ return suite.tests.length || suite.suites.length;
+}
+
+/**
+ * Determines whether a suite has an `only` test or suite as a descendant.
+ *
+ * @param {Array} suite
+ * @returns {Boolean}
+ * @api private
+ */
+function hasOnly(suite) {
+ return suite._onlyTests.length || suite._onlySuites.length || some(suite.suites, hasOnly);
+}
+
+/**
+ * Filter leaks with the given globals flagged as `ok`.
+ *
+ * @api private
+ * @param {Array} ok
+ * @param {Array} globals
+ * @return {Array}
+ */
+function filterLeaks(ok, globals) {
+ return filter(globals, function(key) {
+ // Firefox and Chrome exposes iframes as index inside the window object
+ if (/^d+/.test(key)) {
+ return false;
+ }
+
+ // in firefox
+ // if runner runs in an iframe, this iframe's window.getInterface method
+ // not init at first it is assigned in some seconds
+ if (global.navigator && (/^getInterface/).test(key)) {
+ return false;
+ }
+
+ // an iframe could be approached by window[iframeIndex]
+ // in ie6,7,8 and opera, iframeIndex is enumerable, this could cause leak
+ if (global.navigator && (/^\d+/).test(key)) {
+ return false;
+ }
+
+ // Opera and IE expose global variables for HTML element IDs (issue #243)
+ if (/^mocha-/.test(key)) {
+ return false;
+ }
+
+ var matched = filter(ok, function(ok) {
+ if (~ok.indexOf('*')) {
+ return key.indexOf(ok.split('*')[0]) === 0;
+ }
+ return key === ok;
+ });
+ return !matched.length && (!global.navigator || key !== 'onerror');
+ });
+}
+
+/**
+ * Array of globals dependent on the environment.
+ *
+ * @return {Array}
+ * @api private
+ */
+function extraGlobals() {
+ if (typeof process === 'object' && typeof process.version === 'string') {
+ var parts = process.version.split('.');
+ var nodeVersion = utils.reduce(parts, function(a, v) {
+ return a << 8 | v;
+ });
+
+ // 'errno' was renamed to process._errno in v0.9.11.
+
+ if (nodeVersion < 0x00090B) {
+ return ['errno'];
+ }
+ }
+
+ return [];
+}
+
+}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"./pending":16,"./runnable":33,"./utils":38,"_process":67,"debug":2,"events":3}],35:[function(require,module,exports){
+/**
+ * Module dependencies.
+ */
+
+var EventEmitter = require('events').EventEmitter;
+var Hook = require('./hook');
+var utils = require('./utils');
+var inherits = utils.inherits;
+var debug = require('debug')('mocha:suite');
+var milliseconds = require('./ms');
+
+/**
+ * Expose `Suite`.
+ */
+
+exports = module.exports = Suite;
+
+/**
+ * Create a new `Suite` with the given `title` and parent `Suite`. When a suite
+ * with the same title is already present, that suite is returned to provide
+ * nicer reporter and more flexible meta-testing.
+ *
+ * @api public
+ * @param {Suite} parent
+ * @param {string} title
+ * @return {Suite}
+ */
+exports.create = function(parent, title) {
+ var suite = new Suite(title, parent.ctx);
+ suite.parent = parent;
+ title = suite.fullTitle();
+ parent.addSuite(suite);
+ return suite;
+};
+
+/**
+ * Initialize a new `Suite` with the given `title` and `ctx`.
+ *
+ * @api private
+ * @param {string} title
+ * @param {Context} parentContext
+ */
+function Suite(title, parentContext) {
+ if (!utils.isString(title)) {
+ throw new Error('Suite `title` should be a "string" but "' + typeof title + '" was given instead.');
+ }
+ this.title = title;
+ function Context() {}
+ Context.prototype = parentContext;
+ this.ctx = new Context();
+ this.suites = [];
+ this.tests = [];
+ this.pending = false;
+ this._beforeEach = [];
+ this._beforeAll = [];
+ this._afterEach = [];
+ this._afterAll = [];
+ this.root = !title;
+ this._timeout = 2000;
+ this._enableTimeouts = true;
+ this._slow = 75;
+ this._bail = false;
+ this._retries = -1;
+ this._onlyTests = [];
+ this._onlySuites = [];
+ this.delayed = false;
+}
+
+/**
+ * Inherit from `EventEmitter.prototype`.
+ */
+inherits(Suite, EventEmitter);
+
+/**
+ * Return a clone of this `Suite`.
+ *
+ * @api private
+ * @return {Suite}
+ */
+Suite.prototype.clone = function() {
+ var suite = new Suite(this.title);
+ debug('clone');
+ suite.ctx = this.ctx;
+ suite.timeout(this.timeout());
+ suite.retries(this.retries());
+ suite.enableTimeouts(this.enableTimeouts());
+ suite.slow(this.slow());
+ suite.bail(this.bail());
+ return suite;
+};
+
+/**
+ * Set timeout `ms` or short-hand such as "2s".
+ *
+ * @api private
+ * @param {number|string} ms
+ * @return {Suite|number} for chaining
+ */
+Suite.prototype.timeout = function(ms) {
+ if (!arguments.length) {
+ return this._timeout;
+ }
+ if (ms.toString() === '0') {
+ this._enableTimeouts = false;
+ }
+ if (typeof ms === 'string') {
+ ms = milliseconds(ms);
+ }
+ debug('timeout %d', ms);
+ this._timeout = parseInt(ms, 10);
+ return this;
+};
+
+/**
+ * Set number of times to retry a failed test.
+ *
+ * @api private
+ * @param {number|string} n
+ * @return {Suite|number} for chaining
+ */
+Suite.prototype.retries = function(n) {
+ if (!arguments.length) {
+ return this._retries;
+ }
+ debug('retries %d', n);
+ this._retries = parseInt(n, 10) || 0;
+ return this;
+};
+
+/**
+ * Set timeout to `enabled`.
+ *
+ * @api private
+ * @param {boolean} enabled
+ * @return {Suite|boolean} self or enabled
+ */
+Suite.prototype.enableTimeouts = function(enabled) {
+ if (!arguments.length) {
+ return this._enableTimeouts;
+ }
+ debug('enableTimeouts %s', enabled);
+ this._enableTimeouts = enabled;
+ return this;
+};
+
+/**
+ * Set slow `ms` or short-hand such as "2s".
+ *
+ * @api private
+ * @param {number|string} ms
+ * @return {Suite|number} for chaining
+ */
+Suite.prototype.slow = function(ms) {
+ if (!arguments.length) {
+ return this._slow;
+ }
+ if (typeof ms === 'string') {
+ ms = milliseconds(ms);
+ }
+ debug('slow %d', ms);
+ this._slow = ms;
+ return this;
+};
+
+/**
+ * Sets whether to bail after first error.
+ *
+ * @api private
+ * @param {boolean} bail
+ * @return {Suite|number} for chaining
+ */
+Suite.prototype.bail = function(bail) {
+ if (!arguments.length) {
+ return this._bail;
+ }
+ debug('bail %s', bail);
+ this._bail = bail;
+ return this;
+};
+
+/**
+ * Check if this suite or its parent suite is marked as pending.
+ *
+ * @api private
+ */
+Suite.prototype.isPending = function() {
+ return this.pending || (this.parent && this.parent.isPending());
+};
+
+/**
+ * Run `fn(test[, done])` before running tests.
+ *
+ * @api private
+ * @param {string} title
+ * @param {Function} fn
+ * @return {Suite} for chaining
+ */
+Suite.prototype.beforeAll = function(title, fn) {
+ if (this.isPending()) {
+ return this;
+ }
+ if (typeof title === 'function') {
+ fn = title;
+ title = fn.name;
+ }
+ title = '"before all" hook' + (title ? ': ' + title : '');
+
+ var hook = new Hook(title, fn);
+ hook.parent = this;
+ hook.timeout(this.timeout());
+ hook.retries(this.retries());
+ hook.enableTimeouts(this.enableTimeouts());
+ hook.slow(this.slow());
+ hook.ctx = this.ctx;
+ this._beforeAll.push(hook);
+ this.emit('beforeAll', hook);
+ return this;
+};
+
+/**
+ * Run `fn(test[, done])` after running tests.
+ *
+ * @api private
+ * @param {string} title
+ * @param {Function} fn
+ * @return {Suite} for chaining
+ */
+Suite.prototype.afterAll = function(title, fn) {
+ if (this.isPending()) {
+ return this;
+ }
+ if (typeof title === 'function') {
+ fn = title;
+ title = fn.name;
+ }
+ title = '"after all" hook' + (title ? ': ' + title : '');
+
+ var hook = new Hook(title, fn);
+ hook.parent = this;
+ hook.timeout(this.timeout());
+ hook.retries(this.retries());
+ hook.enableTimeouts(this.enableTimeouts());
+ hook.slow(this.slow());
+ hook.ctx = this.ctx;
+ this._afterAll.push(hook);
+ this.emit('afterAll', hook);
+ return this;
+};
+
+/**
+ * Run `fn(test[, done])` before each test case.
+ *
+ * @api private
+ * @param {string} title
+ * @param {Function} fn
+ * @return {Suite} for chaining
+ */
+Suite.prototype.beforeEach = function(title, fn) {
+ if (this.isPending()) {
+ return this;
+ }
+ if (typeof title === 'function') {
+ fn = title;
+ title = fn.name;
+ }
+ title = '"before each" hook' + (title ? ': ' + title : '');
+
+ var hook = new Hook(title, fn);
+ hook.parent = this;
+ hook.timeout(this.timeout());
+ hook.retries(this.retries());
+ hook.enableTimeouts(this.enableTimeouts());
+ hook.slow(this.slow());
+ hook.ctx = this.ctx;
+ this._beforeEach.push(hook);
+ this.emit('beforeEach', hook);
+ return this;
+};
+
+/**
+ * Run `fn(test[, done])` after each test case.
+ *
+ * @api private
+ * @param {string} title
+ * @param {Function} fn
+ * @return {Suite} for chaining
+ */
+Suite.prototype.afterEach = function(title, fn) {
+ if (this.isPending()) {
+ return this;
+ }
+ if (typeof title === 'function') {
+ fn = title;
+ title = fn.name;
+ }
+ title = '"after each" hook' + (title ? ': ' + title : '');
+
+ var hook = new Hook(title, fn);
+ hook.parent = this;
+ hook.timeout(this.timeout());
+ hook.retries(this.retries());
+ hook.enableTimeouts(this.enableTimeouts());
+ hook.slow(this.slow());
+ hook.ctx = this.ctx;
+ this._afterEach.push(hook);
+ this.emit('afterEach', hook);
+ return this;
+};
+
+/**
+ * Add a test `suite`.
+ *
+ * @api private
+ * @param {Suite} suite
+ * @return {Suite} for chaining
+ */
+Suite.prototype.addSuite = function(suite) {
+ suite.parent = this;
+ suite.timeout(this.timeout());
+ suite.retries(this.retries());
+ suite.enableTimeouts(this.enableTimeouts());
+ suite.slow(this.slow());
+ suite.bail(this.bail());
+ this.suites.push(suite);
+ this.emit('suite', suite);
+ return this;
+};
+
+/**
+ * Add a `test` to this suite.
+ *
+ * @api private
+ * @param {Test} test
+ * @return {Suite} for chaining
+ */
+Suite.prototype.addTest = function(test) {
+ test.parent = this;
+ test.timeout(this.timeout());
+ test.retries(this.retries());
+ test.enableTimeouts(this.enableTimeouts());
+ test.slow(this.slow());
+ test.ctx = this.ctx;
+ this.tests.push(test);
+ this.emit('test', test);
+ return this;
+};
+
+/**
+ * Return the full title generated by recursively concatenating the parent's
+ * full title.
+ *
+ * @api public
+ * @return {string}
+ */
+Suite.prototype.fullTitle = function() {
+ if (this.parent) {
+ var full = this.parent.fullTitle();
+ if (full) {
+ return full + ' ' + this.title;
+ }
+ }
+ return this.title;
+};
+
+/**
+ * Return the total number of tests.
+ *
+ * @api public
+ * @return {number}
+ */
+Suite.prototype.total = function() {
+ return utils.reduce(this.suites, function(sum, suite) {
+ return sum + suite.total();
+ }, 0) + this.tests.length;
+};
+
+/**
+ * Iterates through each suite recursively to find all tests. Applies a
+ * function in the format `fn(test)`.
+ *
+ * @api private
+ * @param {Function} fn
+ * @return {Suite}
+ */
+Suite.prototype.eachTest = function(fn) {
+ utils.forEach(this.tests, fn);
+ utils.forEach(this.suites, function(suite) {
+ suite.eachTest(fn);
+ });
+ return this;
+};
+
+/**
+ * This will run the root suite if we happen to be running in delayed mode.
+ */
+Suite.prototype.run = function run() {
+ if (this.root) {
+ this.emit('run');
+ }
+};
+
+},{"./hook":7,"./ms":15,"./utils":38,"debug":2,"events":3}],36:[function(require,module,exports){
+/**
+ * Module dependencies.
+ */
+
+var Runnable = require('./runnable');
+var create = require('lodash.create');
+var isString = require('./utils').isString;
+
+/**
+ * Expose `Test`.
+ */
+
+module.exports = Test;
+
+/**
+ * Initialize a new `Test` with the given `title` and callback `fn`.
+ *
+ * @api private
+ * @param {String} title
+ * @param {Function} fn
+ */
+function Test(title, fn) {
+ if (!isString(title)) {
+ throw new Error('Test `title` should be a "string" but "' + typeof title + '" was given instead.');
+ }
+ Runnable.call(this, title, fn);
+ this.pending = !fn;
+ this.type = 'test';
+}
+
+/**
+ * Inherit from `Runnable.prototype`.
+ */
+Test.prototype = create(Runnable.prototype, {
+ constructor: Test
+});
+
+Test.prototype.clone = function() {
+ var test = new Test(this.title, this.fn);
+ test.timeout(this.timeout());
+ test.slow(this.slow());
+ test.enableTimeouts(this.enableTimeouts());
+ test.retries(this.retries());
+ test.currentRetry(this.currentRetry());
+ test.globals(this.globals());
+ test.parent = this.parent;
+ test.file = this.file;
+ test.ctx = this.ctx;
+ return test;
+};
+
+},{"./runnable":33,"./utils":38,"lodash.create":60}],37:[function(require,module,exports){
+'use strict';
+
+/**
+ * Pad a `number` with a ten's place zero.
+ *
+ * @param {number} number
+ * @return {string}
+ */
+function pad(number) {
+ var n = number.toString();
+ return n.length === 1 ? '0' + n : n;
+}
+
+/**
+ * Turn a `date` into an ISO string.
+ *
+ * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString
+ *
+ * @param {Date} date
+ * @return {string}
+ */
+function toISOString(date) {
+ return date.getUTCFullYear()
+ + '-' + pad(date.getUTCMonth() + 1)
+ + '-' + pad(date.getUTCDate())
+ + 'T' + pad(date.getUTCHours())
+ + ':' + pad(date.getUTCMinutes())
+ + ':' + pad(date.getUTCSeconds())
+ + '.' + String((date.getUTCMilliseconds()/1000).toFixed(3)).slice(2, 5)
+ + 'Z';
+}
+
+/*
+ * Exports.
+ */
+
+module.exports = toISOString;
+
+},{}],38:[function(require,module,exports){
+(function (process,Buffer){
+/* eslint-env browser */
+
+/**
+ * Module dependencies.
+ */
+
+var JSON = require('json3');
+var basename = require('path').basename;
+var debug = require('debug')('mocha:watch');
+var exists = require('fs').existsSync || require('path').existsSync;
+var glob = require('glob');
+var join = require('path').join;
+var readdirSync = require('fs').readdirSync;
+var statSync = require('fs').statSync;
+var watchFile = require('fs').watchFile;
+var toISOString = require('./to-iso-string');
+
+/**
+ * Ignored directories.
+ */
+
+var ignore = ['node_modules', '.git'];
+
+exports.inherits = require('util').inherits;
+
+/**
+ * Escape special characters in the given string of html.
+ *
+ * @api private
+ * @param {string} html
+ * @return {string}
+ */
+exports.escape = function(html) {
+ return String(html)
+ .replace(/&/g, '&amp;')
+ .replace(/"/g, '&quot;')
+ .replace(/</g, '&lt;')
+ .replace(/>/g, '&gt;');
+};
+
+/**
+ * Array#forEach (<=IE8)
+ *
+ * @api private
+ * @param {Array} arr
+ * @param {Function} fn
+ * @param {Object} scope
+ */
+exports.forEach = function(arr, fn, scope) {
+ for (var i = 0, l = arr.length; i < l; i++) {
+ fn.call(scope, arr[i], i);
+ }
+};
+
+/**
+ * Test if the given obj is type of string.
+ *
+ * @api private
+ * @param {Object} obj
+ * @return {boolean}
+ */
+exports.isString = function(obj) {
+ return typeof obj === 'string';
+};
+
+/**
+ * Array#map (<=IE8)
+ *
+ * @api private
+ * @param {Array} arr
+ * @param {Function} fn
+ * @param {Object} scope
+ * @return {Array}
+ */
+exports.map = function(arr, fn, scope) {
+ var result = [];
+ for (var i = 0, l = arr.length; i < l; i++) {
+ result.push(fn.call(scope, arr[i], i, arr));
+ }
+ return result;
+};
+
+/**
+ * Array#indexOf (<=IE8)
+ *
+ * @api private
+ * @param {Array} arr
+ * @param {Object} obj to find index of
+ * @param {number} start
+ * @return {number}
+ */
+exports.indexOf = function(arr, obj, start) {
+ for (var i = start || 0, l = arr.length; i < l; i++) {
+ if (arr[i] === obj) {
+ return i;
+ }
+ }
+ return -1;
+};
+
+/**
+ * Array#reduce (<=IE8)
+ *
+ * @api private
+ * @param {Array} arr
+ * @param {Function} fn
+ * @param {Object} val Initial value.
+ * @return {*}
+ */
+exports.reduce = function(arr, fn, val) {
+ var rval = val;
+
+ for (var i = 0, l = arr.length; i < l; i++) {
+ rval = fn(rval, arr[i], i, arr);
+ }
+
+ return rval;
+};
+
+/**
+ * Array#filter (<=IE8)
+ *
+ * @api private
+ * @param {Array} arr
+ * @param {Function} fn
+ * @return {Array}
+ */
+exports.filter = function(arr, fn) {
+ var ret = [];
+
+ for (var i = 0, l = arr.length; i < l; i++) {
+ var val = arr[i];
+ if (fn(val, i, arr)) {
+ ret.push(val);
+ }
+ }
+
+ return ret;
+};
+
+/**
+ * Array#some (<=IE8)
+ *
+ * @api private
+ * @param {Array} arr
+ * @param {Function} fn
+ * @return {Array}
+ */
+exports.some = function(arr, fn) {
+ for (var i = 0, l = arr.length; i < l; i++) {
+ if (fn(arr[i])) {
+ return true;
+ }
+ }
+ return false;
+};
+
+/**
+ * Object.keys (<=IE8)
+ *
+ * @api private
+ * @param {Object} obj
+ * @return {Array} keys
+ */
+exports.keys = typeof Object.keys === 'function' ? Object.keys : function(obj) {
+ var keys = [];
+ var has = Object.prototype.hasOwnProperty; // for `window` on <=IE8
+
+ for (var key in obj) {
+ if (has.call(obj, key)) {
+ keys.push(key);
+ }
+ }
+
+ return keys;
+};
+
+/**
+ * Watch the given `files` for changes
+ * and invoke `fn(file)` on modification.
+ *
+ * @api private
+ * @param {Array} files
+ * @param {Function} fn
+ */
+exports.watch = function(files, fn) {
+ var options = { interval: 100 };
+ files.forEach(function(file) {
+ debug('file %s', file);
+ watchFile(file, options, function(curr, prev) {
+ if (prev.mtime < curr.mtime) {
+ fn(file);
+ }
+ });
+ });
+};
+
+/**
+ * Array.isArray (<=IE8)
+ *
+ * @api private
+ * @param {Object} obj
+ * @return {Boolean}
+ */
+var isArray = typeof Array.isArray === 'function' ? Array.isArray : function(obj) {
+ return Object.prototype.toString.call(obj) === '[object Array]';
+};
+
+exports.isArray = isArray;
+
+/**
+ * Buffer.prototype.toJSON polyfill.
+ *
+ * @type {Function}
+ */
+if (typeof Buffer !== 'undefined' && Buffer.prototype) {
+ Buffer.prototype.toJSON = Buffer.prototype.toJSON || function() {
+ return Array.prototype.slice.call(this, 0);
+ };
+}
+
+/**
+ * Ignored files.
+ *
+ * @api private
+ * @param {string} path
+ * @return {boolean}
+ */
+function ignored(path) {
+ return !~ignore.indexOf(path);
+}
+
+/**
+ * Lookup files in the given `dir`.
+ *
+ * @api private
+ * @param {string} dir
+ * @param {string[]} [ext=['.js']]
+ * @param {Array} [ret=[]]
+ * @return {Array}
+ */
+exports.files = function(dir, ext, ret) {
+ ret = ret || [];
+ ext = ext || ['js'];
+
+ var re = new RegExp('\\.(' + ext.join('|') + ')$');
+
+ readdirSync(dir)
+ .filter(ignored)
+ .forEach(function(path) {
+ path = join(dir, path);
+ if (statSync(path).isDirectory()) {
+ exports.files(path, ext, ret);
+ } else if (path.match(re)) {
+ ret.push(path);
+ }
+ });
+
+ return ret;
+};
+
+/**
+ * Compute a slug from the given `str`.
+ *
+ * @api private
+ * @param {string} str
+ * @return {string}
+ */
+exports.slug = function(str) {
+ return str
+ .toLowerCase()
+ .replace(/ +/g, '-')
+ .replace(/[^-\w]/g, '');
+};
+
+/**
+ * Strip the function definition from `str`, and re-indent for pre whitespace.
+ *
+ * @param {string} str
+ * @return {string}
+ */
+exports.clean = function(str) {
+ str = str
+ .replace(/\r\n?|[\n\u2028\u2029]/g, '\n').replace(/^\uFEFF/, '')
+ // (traditional)-> space/name parameters body (lambda)-> parameters body multi-statement/single keep body content
+ .replace(/^function(?:\s*|\s+[^(]*)\([^)]*\)\s*\{((?:.|\n)*?)\s*\}$|^\([^)]*\)\s*=>\s*(?:\{((?:.|\n)*?)\s*\}|((?:.|\n)*))$/, '$1$2$3');
+
+ var spaces = str.match(/^\n?( *)/)[1].length;
+ var tabs = str.match(/^\n?(\t*)/)[1].length;
+ var re = new RegExp('^\n?' + (tabs ? '\t' : ' ') + '{' + (tabs ? tabs : spaces) + '}', 'gm');
+
+ str = str.replace(re, '');
+
+ return exports.trim(str);
+};
+
+/**
+ * Trim the given `str`.
+ *
+ * @api private
+ * @param {string} str
+ * @return {string}
+ */
+exports.trim = function(str) {
+ return str.replace(/^\s+|\s+$/g, '');
+};
+
+/**
+ * Parse the given `qs`.
+ *
+ * @api private
+ * @param {string} qs
+ * @return {Object}
+ */
+exports.parseQuery = function(qs) {
+ return exports.reduce(qs.replace('?', '').split('&'), function(obj, pair) {
+ var i = pair.indexOf('=');
+ var key = pair.slice(0, i);
+ var val = pair.slice(++i);
+
+ obj[key] = decodeURIComponent(val);
+ return obj;
+ }, {});
+};
+
+/**
+ * Highlight the given string of `js`.
+ *
+ * @api private
+ * @param {string} js
+ * @return {string}
+ */
+function highlight(js) {
+ return js
+ .replace(/</g, '&lt;')
+ .replace(/>/g, '&gt;')
+ .replace(/\/\/(.*)/gm, '<span class="comment">//$1</span>')
+ .replace(/('.*?')/gm, '<span class="string">$1</span>')
+ .replace(/(\d+\.\d+)/gm, '<span class="number">$1</span>')
+ .replace(/(\d+)/gm, '<span class="number">$1</span>')
+ .replace(/\bnew[ \t]+(\w+)/gm, '<span class="keyword">new</span> <span class="init">$1</span>')
+ .replace(/\b(function|new|throw|return|var|if|else)\b/gm, '<span class="keyword">$1</span>');
+}
+
+/**
+ * Highlight the contents of tag `name`.
+ *
+ * @api private
+ * @param {string} name
+ */
+exports.highlightTags = function(name) {
+ var code = document.getElementById('mocha').getElementsByTagName(name);
+ for (var i = 0, len = code.length; i < len; ++i) {
+ code[i].innerHTML = highlight(code[i].innerHTML);
+ }
+};
+
+/**
+ * If a value could have properties, and has none, this function is called,
+ * which returns a string representation of the empty value.
+ *
+ * Functions w/ no properties return `'[Function]'`
+ * Arrays w/ length === 0 return `'[]'`
+ * Objects w/ no properties return `'{}'`
+ * All else: return result of `value.toString()`
+ *
+ * @api private
+ * @param {*} value The value to inspect.
+ * @param {string} [type] The type of the value, if known.
+ * @returns {string}
+ */
+function emptyRepresentation(value, type) {
+ type = type || exports.type(value);
+
+ switch (type) {
+ case 'function':
+ return '[Function]';
+ case 'object':
+ return '{}';
+ case 'array':
+ return '[]';
+ default:
+ return value.toString();
+ }
+}
+
+/**
+ * Takes some variable and asks `Object.prototype.toString()` what it thinks it
+ * is.
+ *
+ * @api private
+ * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString
+ * @param {*} value The value to test.
+ * @returns {string}
+ * @example
+ * type({}) // 'object'
+ * type([]) // 'array'
+ * type(1) // 'number'
+ * type(false) // 'boolean'
+ * type(Infinity) // 'number'
+ * type(null) // 'null'
+ * type(new Date()) // 'date'
+ * type(/foo/) // 'regexp'
+ * type('type') // 'string'
+ * type(global) // 'global'
+ */
+exports.type = function type(value) {
+ if (value === undefined) {
+ return 'undefined';
+ } else if (value === null) {
+ return 'null';
+ } else if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) {
+ return 'buffer';
+ }
+ return Object.prototype.toString.call(value)
+ .replace(/^\[.+\s(.+?)\]$/, '$1')
+ .toLowerCase();
+};
+
+/**
+ * Stringify `value`. Different behavior depending on type of value:
+ *
+ * - If `value` is undefined or null, return `'[undefined]'` or `'[null]'`, respectively.
+ * - If `value` is not an object, function or array, return result of `value.toString()` wrapped in double-quotes.
+ * - If `value` is an *empty* object, function, or array, return result of function
+ * {@link emptyRepresentation}.
+ * - If `value` has properties, call {@link exports.canonicalize} on it, then return result of
+ * JSON.stringify().
+ *
+ * @api private
+ * @see exports.type
+ * @param {*} value
+ * @return {string}
+ */
+exports.stringify = function(value) {
+ var type = exports.type(value);
+
+ if (!~exports.indexOf(['object', 'array', 'function'], type)) {
+ if (type !== 'buffer') {
+ return jsonStringify(value);
+ }
+ var json = value.toJSON();
+ // Based on the toJSON result
+ return jsonStringify(json.data && json.type ? json.data : json, 2)
+ .replace(/,(\n|$)/g, '$1');
+ }
+
+ for (var prop in value) {
+ if (Object.prototype.hasOwnProperty.call(value, prop)) {
+ return jsonStringify(exports.canonicalize(value), 2).replace(/,(\n|$)/g, '$1');
+ }
+ }
+
+ return emptyRepresentation(value, type);
+};
+
+/**
+ * like JSON.stringify but more sense.
+ *
+ * @api private
+ * @param {Object} object
+ * @param {number=} spaces
+ * @param {number=} depth
+ * @returns {*}
+ */
+function jsonStringify(object, spaces, depth) {
+ if (typeof spaces === 'undefined') {
+ // primitive types
+ return _stringify(object);
+ }
+
+ depth = depth || 1;
+ var space = spaces * depth;
+ var str = isArray(object) ? '[' : '{';
+ var end = isArray(object) ? ']' : '}';
+ var length = typeof object.length === 'number' ? object.length : exports.keys(object).length;
+ // `.repeat()` polyfill
+ function repeat(s, n) {
+ return new Array(n).join(s);
+ }
+
+ function _stringify(val) {
+ switch (exports.type(val)) {
+ case 'null':
+ case 'undefined':
+ val = '[' + val + ']';
+ break;
+ case 'array':
+ case 'object':
+ val = jsonStringify(val, spaces, depth + 1);
+ break;
+ case 'boolean':
+ case 'regexp':
+ case 'symbol':
+ case 'number':
+ val = val === 0 && (1 / val) === -Infinity // `-0`
+ ? '-0'
+ : val.toString();
+ break;
+ case 'date':
+ var sDate;
+ if (isNaN(val.getTime())) { // Invalid date
+ sDate = val.toString();
+ } else {
+ sDate = val.toISOString ? val.toISOString() : toISOString(val);
+ }
+ val = '[Date: ' + sDate + ']';
+ break;
+ case 'buffer':
+ var json = val.toJSON();
+ // Based on the toJSON result
+ json = json.data && json.type ? json.data : json;
+ val = '[Buffer: ' + jsonStringify(json, 2, depth + 1) + ']';
+ break;
+ default:
+ val = (val === '[Function]' || val === '[Circular]')
+ ? val
+ : JSON.stringify(val); // string
+ }
+ return val;
+ }
+
+ for (var i in object) {
+ if (!Object.prototype.hasOwnProperty.call(object, i)) {
+ continue; // not my business
+ }
+ --length;
+ str += '\n ' + repeat(' ', space)
+ + (isArray(object) ? '' : '"' + i + '": ') // key
+ + _stringify(object[i]) // value
+ + (length ? ',' : ''); // comma
+ }
+
+ return str
+ // [], {}
+ + (str.length !== 1 ? '\n' + repeat(' ', --space) + end : end);
+}
+
+/**
+ * Test if a value is a buffer.
+ *
+ * @api private
+ * @param {*} value The value to test.
+ * @return {boolean} True if `value` is a buffer, otherwise false
+ */
+exports.isBuffer = function(value) {
+ return typeof Buffer !== 'undefined' && Buffer.isBuffer(value);
+};
+
+/**
+ * Return a new Thing that has the keys in sorted order. Recursive.
+ *
+ * If the Thing...
+ * - has already been seen, return string `'[Circular]'`
+ * - is `undefined`, return string `'[undefined]'`
+ * - is `null`, return value `null`
+ * - is some other primitive, return the value
+ * - is not a primitive or an `Array`, `Object`, or `Function`, return the value of the Thing's `toString()` method
+ * - is a non-empty `Array`, `Object`, or `Function`, return the result of calling this function again.
+ * - is an empty `Array`, `Object`, or `Function`, return the result of calling `emptyRepresentation()`
+ *
+ * @api private
+ * @see {@link exports.stringify}
+ * @param {*} value Thing to inspect. May or may not have properties.
+ * @param {Array} [stack=[]] Stack of seen values
+ * @return {(Object|Array|Function|string|undefined)}
+ */
+exports.canonicalize = function(value, stack) {
+ var canonicalizedObj;
+ /* eslint-disable no-unused-vars */
+ var prop;
+ /* eslint-enable no-unused-vars */
+ var type = exports.type(value);
+ function withStack(value, fn) {
+ stack.push(value);
+ fn();
+ stack.pop();
+ }
+
+ stack = stack || [];
+
+ if (exports.indexOf(stack, value) !== -1) {
+ return '[Circular]';
+ }
+
+ switch (type) {
+ case 'undefined':
+ case 'buffer':
+ case 'null':
+ canonicalizedObj = value;
+ break;
+ case 'array':
+ withStack(value, function() {
+ canonicalizedObj = exports.map(value, function(item) {
+ return exports.canonicalize(item, stack);
+ });
+ });
+ break;
+ case 'function':
+ /* eslint-disable guard-for-in */
+ for (prop in value) {
+ canonicalizedObj = {};
+ break;
+ }
+ /* eslint-enable guard-for-in */
+ if (!canonicalizedObj) {
+ canonicalizedObj = emptyRepresentation(value, type);
+ break;
+ }
+ /* falls through */
+ case 'object':
+ canonicalizedObj = canonicalizedObj || {};
+ withStack(value, function() {
+ exports.forEach(exports.keys(value).sort(), function(key) {
+ canonicalizedObj[key] = exports.canonicalize(value[key], stack);
+ });
+ });
+ break;
+ case 'date':
+ case 'number':
+ case 'regexp':
+ case 'boolean':
+ case 'symbol':
+ canonicalizedObj = value;
+ break;
+ default:
+ canonicalizedObj = value + '';
+ }
+
+ return canonicalizedObj;
+};
+
+/**
+ * Lookup file names at the given `path`.
+ *
+ * @api public
+ * @param {string} path Base path to start searching from.
+ * @param {string[]} extensions File extensions to look for.
+ * @param {boolean} recursive Whether or not to recurse into subdirectories.
+ * @return {string[]} An array of paths.
+ */
+exports.lookupFiles = function lookupFiles(path, extensions, recursive) {
+ var files = [];
+ var re = new RegExp('\\.(' + extensions.join('|') + ')$');
+
+ if (!exists(path)) {
+ if (exists(path + '.js')) {
+ path += '.js';
+ } else {
+ files = glob.sync(path);
+ if (!files.length) {
+ throw new Error("cannot resolve path (or pattern) '" + path + "'");
+ }
+ return files;
+ }
+ }
+
+ try {
+ var stat = statSync(path);
+ if (stat.isFile()) {
+ return path;
+ }
+ } catch (err) {
+ // ignore error
+ return;
+ }
+
+ readdirSync(path).forEach(function(file) {
+ file = join(path, file);
+ try {
+ var stat = statSync(file);
+ if (stat.isDirectory()) {
+ if (recursive) {
+ files = files.concat(lookupFiles(file, extensions, recursive));
+ }
+ return;
+ }
+ } catch (err) {
+ // ignore error
+ return;
+ }
+ if (!stat.isFile() || !re.test(file) || basename(file)[0] === '.') {
+ return;
+ }
+ files.push(file);
+ });
+
+ return files;
+};
+
+/**
+ * Generate an undefined error with a message warning the user.
+ *
+ * @return {Error}
+ */
+
+exports.undefinedError = function() {
+ return new Error('Caught undefined error, did you throw without specifying what?');
+};
+
+/**
+ * Generate an undefined error if `err` is not defined.
+ *
+ * @param {Error} err
+ * @return {Error}
+ */
+
+exports.getError = function(err) {
+ return err || exports.undefinedError();
+};
+
+/**
+ * @summary
+ * This Filter based on `mocha-clean` module.(see: `github.com/rstacruz/mocha-clean`)
+ * @description
+ * When invoking this function you get a filter function that get the Error.stack as an input,
+ * and return a prettify output.
+ * (i.e: strip Mocha and internal node functions from stack trace).
+ * @returns {Function}
+ */
+exports.stackTraceFilter = function() {
+ // TODO: Replace with `process.browser`
+ var slash = '/';
+ var is = typeof document === 'undefined' ? { node: true } : { browser: true };
+ var cwd = is.node
+ ? process.cwd() + slash
+ : (typeof location === 'undefined' ? window.location : location).href.replace(/\/[^\/]*$/, '/');
+
+ function isMochaInternal(line) {
+ return (~line.indexOf('node_modules' + slash + 'mocha' + slash))
+ || (~line.indexOf('components' + slash + 'mochajs' + slash))
+ || (~line.indexOf('components' + slash + 'mocha' + slash))
+ || (~line.indexOf(slash + 'mocha.js'));
+ }
+
+ function isNodeInternal(line) {
+ return (~line.indexOf('(timers.js:'))
+ || (~line.indexOf('(events.js:'))
+ || (~line.indexOf('(node.js:'))
+ || (~line.indexOf('(module.js:'))
+ || (~line.indexOf('GeneratorFunctionPrototype.next (native)'))
+ || false;
+ }
+
+ return function(stack) {
+ stack = stack.split('\n');
+
+ stack = exports.reduce(stack, function(list, line) {
+ if (isMochaInternal(line)) {
+ return list;
+ }
+
+ if (is.node && isNodeInternal(line)) {
+ return list;
+ }
+
+ // Clean up cwd(absolute)
+ if (/\(?.+:\d+:\d+\)?$/.test(line)) {
+ line = line.replace(cwd, '');
+ }
+
+ list.push(line);
+ return list;
+ }, []);
+
+ return stack.join('\n');
+ };
+};
+
+/**
+ * Crude, but effective.
+ * @api
+ * @param {*} value
+ * @returns {boolean} Whether or not `value` is a Promise
+ */
+exports.isPromise = function isPromise(value) {
+ return typeof value === 'object' && typeof value.then === 'function';
+};
+
+}).call(this,require('_process'),require("buffer").Buffer)
+},{"./to-iso-string":37,"_process":67,"buffer":44,"debug":2,"fs":42,"glob":42,"json3":54,"path":42,"util":82}],39:[function(require,module,exports){
+'use strict'
+
+exports.toByteArray = toByteArray
+exports.fromByteArray = fromByteArray
+
+var lookup = []
+var revLookup = []
+var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
+
+function init () {
+ var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
+ for (var i = 0, len = code.length; i < len; ++i) {
+ lookup[i] = code[i]
+ revLookup[code.charCodeAt(i)] = i
+ }
+
+ revLookup['-'.charCodeAt(0)] = 62
+ revLookup['_'.charCodeAt(0)] = 63
+}
+
+init()
+
+function toByteArray (b64) {
+ var i, j, l, tmp, placeHolders, arr
+ var len = b64.length
+
+ if (len % 4 > 0) {
+ throw new Error('Invalid string. Length must be a multiple of 4')
+ }
+
+ // the number of equal signs (place holders)
+ // if there are two placeholders, than the two characters before it
+ // represent one byte
+ // if there is only one, then the three characters before it represent 2 bytes
+ // this is just a cheap hack to not do indexOf twice
+ placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0
+
+ // base64 is 4/3 + up to two characters of the original data
+ arr = new Arr(len * 3 / 4 - placeHolders)
+
+ // if there are placeholders, only get up to the last complete 4 chars
+ l = placeHolders > 0 ? len - 4 : len
+
+ var L = 0
+
+ for (i = 0, j = 0; i < l; i += 4, j += 3) {
+ tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]
+ arr[L++] = (tmp >> 16) & 0xFF
+ arr[L++] = (tmp >> 8) & 0xFF
+ arr[L++] = tmp & 0xFF
+ }
+
+ if (placeHolders === 2) {
+ tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)
+ arr[L++] = tmp & 0xFF
+ } else if (placeHolders === 1) {
+ tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)
+ arr[L++] = (tmp >> 8) & 0xFF
+ arr[L++] = tmp & 0xFF
+ }
+
+ return arr
+}
+
+function tripletToBase64 (num) {
+ return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
+}
+
+function encodeChunk (uint8, start, end) {
+ var tmp
+ var output = []
+ for (var i = start; i < end; i += 3) {
+ tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
+ output.push(tripletToBase64(tmp))
+ }
+ return output.join('')
+}
+
+function fromByteArray (uint8) {
+ var tmp
+ var len = uint8.length
+ var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
+ var output = ''
+ var parts = []
+ var maxChunkLength = 16383 // must be multiple of 3
+
+ // go through the array every three bytes, we'll deal with trailing stuff later
+ for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
+ parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
+ }
+
+ // pad the end with zeros, but make sure to not forget the extra bytes
+ if (extraBytes === 1) {
+ tmp = uint8[len - 1]
+ output += lookup[tmp >> 2]
+ output += lookup[(tmp << 4) & 0x3F]
+ output += '=='
+ } else if (extraBytes === 2) {
+ tmp = (uint8[len - 2] << 8) + (uint8[len - 1])
+ output += lookup[tmp >> 10]
+ output += lookup[(tmp >> 4) & 0x3F]
+ output += lookup[(tmp << 2) & 0x3F]
+ output += '='
+ }
+
+ parts.push(output)
+
+ return parts.join('')
+}
+
+},{}],40:[function(require,module,exports){
+
+},{}],41:[function(require,module,exports){
+(function (process){
+var WritableStream = require('stream').Writable
+var inherits = require('util').inherits
+
+module.exports = BrowserStdout
+
+
+inherits(BrowserStdout, WritableStream)
+
+function BrowserStdout(opts) {
+ if (!(this instanceof BrowserStdout)) return new BrowserStdout(opts)
+
+ opts = opts || {}
+ WritableStream.call(this, opts)
+ this.label = (opts.label !== undefined) ? opts.label : 'stdout'
+}
+
+BrowserStdout.prototype._write = function(chunks, encoding, cb) {
+ var output = chunks.toString ? chunks.toString() : chunks
+ if (this.label === false) {
+ console.log(output)
+ } else {
+ console.log(this.label+':', output)
+ }
+ process.nextTick(cb)
+}
+
+}).call(this,require('_process'))
+},{"_process":67,"stream":78,"util":82}],42:[function(require,module,exports){
+arguments[4][40][0].apply(exports,arguments)
+},{"dup":40}],43:[function(require,module,exports){
+(function (global){
+'use strict';
+
+var buffer = require('buffer');
+var Buffer = buffer.Buffer;
+var SlowBuffer = buffer.SlowBuffer;
+var MAX_LEN = buffer.kMaxLength || 2147483647;
+exports.alloc = function alloc(size, fill, encoding) {
+ if (typeof Buffer.alloc === 'function') {
+ return Buffer.alloc(size, fill, encoding);
+ }
+ if (typeof encoding === 'number') {
+ throw new TypeError('encoding must not be number');
+ }
+ if (typeof size !== 'number') {
+ throw new TypeError('size must be a number');
+ }
+ if (size > MAX_LEN) {
+ throw new RangeError('size is too large');
+ }
+ var enc = encoding;
+ var _fill = fill;
+ if (_fill === undefined) {
+ enc = undefined;
+ _fill = 0;
+ }
+ var buf = new Buffer(size);
+ if (typeof _fill === 'string') {
+ var fillBuf = new Buffer(_fill, enc);
+ var flen = fillBuf.length;
+ var i = -1;
+ while (++i < size) {
+ buf[i] = fillBuf[i % flen];
+ }
+ } else {
+ buf.fill(_fill);
+ }
+ return buf;
+}
+exports.allocUnsafe = function allocUnsafe(size) {
+ if (typeof Buffer.allocUnsafe === 'function') {
+ return Buffer.allocUnsafe(size);
+ }
+ if (typeof size !== 'number') {
+ throw new TypeError('size must be a number');
+ }
+ if (size > MAX_LEN) {
+ throw new RangeError('size is too large');
+ }
+ return new Buffer(size);
+}
+exports.from = function from(value, encodingOrOffset, length) {
+ if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
+ return Buffer.from(value, encodingOrOffset, length);
+ }
+ if (typeof value === 'number') {
+ throw new TypeError('"value" argument must not be a number');
+ }
+ if (typeof value === 'string') {
+ return new Buffer(value, encodingOrOffset);
+ }
+ if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
+ var offset = encodingOrOffset;
+ if (arguments.length === 1) {
+ return new Buffer(value);
+ }
+ if (typeof offset === 'undefined') {
+ offset = 0;
+ }
+ var len = length;
+ if (typeof len === 'undefined') {
+ len = value.byteLength - offset;
+ }
+ if (offset >= value.byteLength) {
+ throw new RangeError('\'offset\' is out of bounds');
+ }
+ if (len > value.byteLength - offset) {
+ throw new RangeError('\'length\' is out of bounds');
+ }
+ return new Buffer(value.slice(offset, offset + len));
+ }
+ if (Buffer.isBuffer(value)) {
+ var out = new Buffer(value.length);
+ value.copy(out, 0, 0, value.length);
+ return out;
+ }
+ if (value) {
+ if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
+ return new Buffer(value);
+ }
+ if (value.type === 'Buffer' && Array.isArray(value.data)) {
+ return new Buffer(value.data);
+ }
+ }
+
+ throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
+}
+exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
+ if (typeof Buffer.allocUnsafeSlow === 'function') {
+ return Buffer.allocUnsafeSlow(size);
+ }
+ if (typeof size !== 'number') {
+ throw new TypeError('size must be a number');
+ }
+ if (size >= MAX_LEN) {
+ throw new RangeError('size is too large');
+ }
+ return new SlowBuffer(size);
+}
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"buffer":44}],44:[function(require,module,exports){
+(function (global){
+/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
+ * @license MIT
+ */
+/* eslint-disable no-proto */
+
+'use strict'
+
+var base64 = require('base64-js')
+var ieee754 = require('ieee754')
+var isArray = require('isarray')
+
+exports.Buffer = Buffer
+exports.SlowBuffer = SlowBuffer
+exports.INSPECT_MAX_BYTES = 50
+
+/**
+ * If `Buffer.TYPED_ARRAY_SUPPORT`:
+ * === true Use Uint8Array implementation (fastest)
+ * === false Use Object implementation (most compatible, even IE6)
+ *
+ * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
+ * Opera 11.6+, iOS 4.2+.
+ *
+ * Due to various browser bugs, sometimes the Object implementation will be used even
+ * when the browser supports typed arrays.
+ *
+ * Note:
+ *
+ * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
+ * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
+ *
+ * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
+ *
+ * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
+ * incorrect length in some situations.
+
+ * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
+ * get the Object implementation, which is slower but behaves correctly.
+ */
+Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
+ ? global.TYPED_ARRAY_SUPPORT
+ : typedArraySupport()
+
+/*
+ * Export kMaxLength after typed array support is determined.
+ */
+exports.kMaxLength = kMaxLength()
+
+function typedArraySupport () {
+ try {
+ var arr = new Uint8Array(1)
+ arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }}
+ return arr.foo() === 42 && // typed array instances can be augmented
+ typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
+ arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
+ } catch (e) {
+ return false
+ }
+}
+
+function kMaxLength () {
+ return Buffer.TYPED_ARRAY_SUPPORT
+ ? 0x7fffffff
+ : 0x3fffffff
+}
+
+function createBuffer (that, length) {
+ if (kMaxLength() < length) {
+ throw new RangeError('Invalid typed array length')
+ }
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ // Return an augmented `Uint8Array` instance, for best performance
+ that = new Uint8Array(length)
+ that.__proto__ = Buffer.prototype
+ } else {
+ // Fallback: Return an object instance of the Buffer class
+ if (that === null) {
+ that = new Buffer(length)
+ }
+ that.length = length
+ }
+
+ return that
+}
+
+/**
+ * The Buffer constructor returns instances of `Uint8Array` that have their
+ * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
+ * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
+ * and the `Uint8Array` methods. Square bracket notation works as expected -- it
+ * returns a single octet.
+ *
+ * The `Uint8Array` prototype remains unmodified.
+ */
+
+function Buffer (arg, encodingOrOffset, length) {
+ if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
+ return new Buffer(arg, encodingOrOffset, length)
+ }
+
+ // Common case.
+ if (typeof arg === 'number') {
+ if (typeof encodingOrOffset === 'string') {
+ throw new Error(
+ 'If encoding is specified then the first argument must be a string'
+ )
+ }
+ return allocUnsafe(this, arg)
+ }
+ return from(this, arg, encodingOrOffset, length)
+}
+
+Buffer.poolSize = 8192 // not used by this implementation
+
+// TODO: Legacy, not needed anymore. Remove in next major version.
+Buffer._augment = function (arr) {
+ arr.__proto__ = Buffer.prototype
+ return arr
+}
+
+function from (that, value, encodingOrOffset, length) {
+ if (typeof value === 'number') {
+ throw new TypeError('"value" argument must not be a number')
+ }
+
+ if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
+ return fromArrayBuffer(that, value, encodingOrOffset, length)
+ }
+
+ if (typeof value === 'string') {
+ return fromString(that, value, encodingOrOffset)
+ }
+
+ return fromObject(that, value)
+}
+
+/**
+ * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
+ * if value is a number.
+ * Buffer.from(str[, encoding])
+ * Buffer.from(array)
+ * Buffer.from(buffer)
+ * Buffer.from(arrayBuffer[, byteOffset[, length]])
+ **/
+Buffer.from = function (value, encodingOrOffset, length) {
+ return from(null, value, encodingOrOffset, length)
+}
+
+if (Buffer.TYPED_ARRAY_SUPPORT) {
+ Buffer.prototype.__proto__ = Uint8Array.prototype
+ Buffer.__proto__ = Uint8Array
+ if (typeof Symbol !== 'undefined' && Symbol.species &&
+ Buffer[Symbol.species] === Buffer) {
+ // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
+ Object.defineProperty(Buffer, Symbol.species, {
+ value: null,
+ configurable: true
+ })
+ }
+}
+
+function assertSize (size) {
+ if (typeof size !== 'number') {
+ throw new TypeError('"size" argument must be a number')
+ }
+}
+
+function alloc (that, size, fill, encoding) {
+ assertSize(size)
+ if (size <= 0) {
+ return createBuffer(that, size)
+ }
+ if (fill !== undefined) {
+ // Only pay attention to encoding if it's a string. This
+ // prevents accidentally sending in a number that would
+ // be interpretted as a start offset.
+ return typeof encoding === 'string'
+ ? createBuffer(that, size).fill(fill, encoding)
+ : createBuffer(that, size).fill(fill)
+ }
+ return createBuffer(that, size)
+}
+
+/**
+ * Creates a new filled Buffer instance.
+ * alloc(size[, fill[, encoding]])
+ **/
+Buffer.alloc = function (size, fill, encoding) {
+ return alloc(null, size, fill, encoding)
+}
+
+function allocUnsafe (that, size) {
+ assertSize(size)
+ that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)
+ if (!Buffer.TYPED_ARRAY_SUPPORT) {
+ for (var i = 0; i < size; ++i) {
+ that[i] = 0
+ }
+ }
+ return that
+}
+
+/**
+ * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
+ * */
+Buffer.allocUnsafe = function (size) {
+ return allocUnsafe(null, size)
+}
+/**
+ * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
+ */
+Buffer.allocUnsafeSlow = function (size) {
+ return allocUnsafe(null, size)
+}
+
+function fromString (that, string, encoding) {
+ if (typeof encoding !== 'string' || encoding === '') {
+ encoding = 'utf8'
+ }
+
+ if (!Buffer.isEncoding(encoding)) {
+ throw new TypeError('"encoding" must be a valid string encoding')
+ }
+
+ var length = byteLength(string, encoding) | 0
+ that = createBuffer(that, length)
+
+ that.write(string, encoding)
+ return that
+}
+
+function fromArrayLike (that, array) {
+ var length = checked(array.length) | 0
+ that = createBuffer(that, length)
+ for (var i = 0; i < length; i += 1) {
+ that[i] = array[i] & 255
+ }
+ return that
+}
+
+function fromArrayBuffer (that, array, byteOffset, length) {
+ array.byteLength // this throws if `array` is not a valid ArrayBuffer
+
+ if (byteOffset < 0 || array.byteLength < byteOffset) {
+ throw new RangeError('\'offset\' is out of bounds')
+ }
+
+ if (array.byteLength < byteOffset + (length || 0)) {
+ throw new RangeError('\'length\' is out of bounds')
+ }
+
+ if (length === undefined) {
+ array = new Uint8Array(array, byteOffset)
+ } else {
+ array = new Uint8Array(array, byteOffset, length)
+ }
+
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ // Return an augmented `Uint8Array` instance, for best performance
+ that = array
+ that.__proto__ = Buffer.prototype
+ } else {
+ // Fallback: Return an object instance of the Buffer class
+ that = fromArrayLike(that, array)
+ }
+ return that
+}
+
+function fromObject (that, obj) {
+ if (Buffer.isBuffer(obj)) {
+ var len = checked(obj.length) | 0
+ that = createBuffer(that, len)
+
+ if (that.length === 0) {
+ return that
+ }
+
+ obj.copy(that, 0, 0, len)
+ return that
+ }
+
+ if (obj) {
+ if ((typeof ArrayBuffer !== 'undefined' &&
+ obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
+ if (typeof obj.length !== 'number' || isnan(obj.length)) {
+ return createBuffer(that, 0)
+ }
+ return fromArrayLike(that, obj)
+ }
+
+ if (obj.type === 'Buffer' && isArray(obj.data)) {
+ return fromArrayLike(that, obj.data)
+ }
+ }
+
+ throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
+}
+
+function checked (length) {
+ // Note: cannot use `length < kMaxLength` here because that fails when
+ // length is NaN (which is otherwise coerced to zero.)
+ if (length >= kMaxLength()) {
+ throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
+ 'size: 0x' + kMaxLength().toString(16) + ' bytes')
+ }
+ return length | 0
+}
+
+function SlowBuffer (length) {
+ if (+length != length) { // eslint-disable-line eqeqeq
+ length = 0
+ }
+ return Buffer.alloc(+length)
+}
+
+Buffer.isBuffer = function isBuffer (b) {
+ return !!(b != null && b._isBuffer)
+}
+
+Buffer.compare = function compare (a, b) {
+ if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
+ throw new TypeError('Arguments must be Buffers')
+ }
+
+ if (a === b) return 0
+
+ var x = a.length
+ var y = b.length
+
+ for (var i = 0, len = Math.min(x, y); i < len; ++i) {
+ if (a[i] !== b[i]) {
+ x = a[i]
+ y = b[i]
+ break
+ }
+ }
+
+ if (x < y) return -1
+ if (y < x) return 1
+ return 0
+}
+
+Buffer.isEncoding = function isEncoding (encoding) {
+ switch (String(encoding).toLowerCase()) {
+ case 'hex':
+ case 'utf8':
+ case 'utf-8':
+ case 'ascii':
+ case 'binary':
+ case 'base64':
+ case 'raw':
+ case 'ucs2':
+ case 'ucs-2':
+ case 'utf16le':
+ case 'utf-16le':
+ return true
+ default:
+ return false
+ }
+}
+
+Buffer.concat = function concat (list, length) {
+ if (!isArray(list)) {
+ throw new TypeError('"list" argument must be an Array of Buffers')
+ }
+
+ if (list.length === 0) {
+ return Buffer.alloc(0)
+ }
+
+ var i
+ if (length === undefined) {
+ length = 0
+ for (i = 0; i < list.length; ++i) {
+ length += list[i].length
+ }
+ }
+
+ var buffer = Buffer.allocUnsafe(length)
+ var pos = 0
+ for (i = 0; i < list.length; ++i) {
+ var buf = list[i]
+ if (!Buffer.isBuffer(buf)) {
+ throw new TypeError('"list" argument must be an Array of Buffers')
+ }
+ buf.copy(buffer, pos)
+ pos += buf.length
+ }
+ return buffer
+}
+
+function byteLength (string, encoding) {
+ if (Buffer.isBuffer(string)) {
+ return string.length
+ }
+ if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
+ (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
+ return string.byteLength
+ }
+ if (typeof string !== 'string') {
+ string = '' + string
+ }
+
+ var len = string.length
+ if (len === 0) return 0
+
+ // Use a for loop to avoid recursion
+ var loweredCase = false
+ for (;;) {
+ switch (encoding) {
+ case 'ascii':
+ case 'binary':
+ case 'raw':
+ case 'raws':
+ return len
+ case 'utf8':
+ case 'utf-8':
+ case undefined:
+ return utf8ToBytes(string).length
+ case 'ucs2':
+ case 'ucs-2':
+ case 'utf16le':
+ case 'utf-16le':
+ return len * 2
+ case 'hex':
+ return len >>> 1
+ case 'base64':
+ return base64ToBytes(string).length
+ default:
+ if (loweredCase) return utf8ToBytes(string).length // assume utf8
+ encoding = ('' + encoding).toLowerCase()
+ loweredCase = true
+ }
+ }
+}
+Buffer.byteLength = byteLength
+
+function slowToString (encoding, start, end) {
+ var loweredCase = false
+
+ // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
+ // property of a typed array.
+
+ // This behaves neither like String nor Uint8Array in that we set start/end
+ // to their upper/lower bounds if the value passed is out of range.
+ // undefined is handled specially as per ECMA-262 6th Edition,
+ // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
+ if (start === undefined || start < 0) {
+ start = 0
+ }
+ // Return early if start > this.length. Done here to prevent potential uint32
+ // coercion fail below.
+ if (start > this.length) {
+ return ''
+ }
+
+ if (end === undefined || end > this.length) {
+ end = this.length
+ }
+
+ if (end <= 0) {
+ return ''
+ }
+
+ // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
+ end >>>= 0
+ start >>>= 0
+
+ if (end <= start) {
+ return ''
+ }
+
+ if (!encoding) encoding = 'utf8'
+
+ while (true) {
+ switch (encoding) {
+ case 'hex':
+ return hexSlice(this, start, end)
+
+ case 'utf8':
+ case 'utf-8':
+ return utf8Slice(this, start, end)
+
+ case 'ascii':
+ return asciiSlice(this, start, end)
+
+ case 'binary':
+ return binarySlice(this, start, end)
+
+ case 'base64':
+ return base64Slice(this, start, end)
+
+ case 'ucs2':
+ case 'ucs-2':
+ case 'utf16le':
+ case 'utf-16le':
+ return utf16leSlice(this, start, end)
+
+ default:
+ if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
+ encoding = (encoding + '').toLowerCase()
+ loweredCase = true
+ }
+ }
+}
+
+// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
+// Buffer instances.
+Buffer.prototype._isBuffer = true
+
+function swap (b, n, m) {
+ var i = b[n]
+ b[n] = b[m]
+ b[m] = i
+}
+
+Buffer.prototype.swap16 = function swap16 () {
+ var len = this.length
+ if (len % 2 !== 0) {
+ throw new RangeError('Buffer size must be a multiple of 16-bits')
+ }
+ for (var i = 0; i < len; i += 2) {
+ swap(this, i, i + 1)
+ }
+ return this
+}
+
+Buffer.prototype.swap32 = function swap32 () {
+ var len = this.length
+ if (len % 4 !== 0) {
+ throw new RangeError('Buffer size must be a multiple of 32-bits')
+ }
+ for (var i = 0; i < len; i += 4) {
+ swap(this, i, i + 3)
+ swap(this, i + 1, i + 2)
+ }
+ return this
+}
+
+Buffer.prototype.toString = function toString () {
+ var length = this.length | 0
+ if (length === 0) return ''
+ if (arguments.length === 0) return utf8Slice(this, 0, length)
+ return slowToString.apply(this, arguments)
+}
+
+Buffer.prototype.equals = function equals (b) {
+ if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
+ if (this === b) return true
+ return Buffer.compare(this, b) === 0
+}
+
+Buffer.prototype.inspect = function inspect () {
+ var str = ''
+ var max = exports.INSPECT_MAX_BYTES
+ if (this.length > 0) {
+ str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
+ if (this.length > max) str += ' ... '
+ }
+ return '<Buffer ' + str + '>'
+}
+
+Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
+ if (!Buffer.isBuffer(target)) {
+ throw new TypeError('Argument must be a Buffer')
+ }
+
+ if (start === undefined) {
+ start = 0
+ }
+ if (end === undefined) {
+ end = target ? target.length : 0
+ }
+ if (thisStart === undefined) {
+ thisStart = 0
+ }
+ if (thisEnd === undefined) {
+ thisEnd = this.length
+ }
+
+ if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
+ throw new RangeError('out of range index')
+ }
+
+ if (thisStart >= thisEnd && start >= end) {
+ return 0
+ }
+ if (thisStart >= thisEnd) {
+ return -1
+ }
+ if (start >= end) {
+ return 1
+ }
+
+ start >>>= 0
+ end >>>= 0
+ thisStart >>>= 0
+ thisEnd >>>= 0
+
+ if (this === target) return 0
+
+ var x = thisEnd - thisStart
+ var y = end - start
+ var len = Math.min(x, y)
+
+ var thisCopy = this.slice(thisStart, thisEnd)
+ var targetCopy = target.slice(start, end)
+
+ for (var i = 0; i < len; ++i) {
+ if (thisCopy[i] !== targetCopy[i]) {
+ x = thisCopy[i]
+ y = targetCopy[i]
+ break
+ }
+ }
+
+ if (x < y) return -1
+ if (y < x) return 1
+ return 0
+}
+
+function arrayIndexOf (arr, val, byteOffset, encoding) {
+ var indexSize = 1
+ var arrLength = arr.length
+ var valLength = val.length
+
+ if (encoding !== undefined) {
+ encoding = String(encoding).toLowerCase()
+ if (encoding === 'ucs2' || encoding === 'ucs-2' ||
+ encoding === 'utf16le' || encoding === 'utf-16le') {
+ if (arr.length < 2 || val.length < 2) {
+ return -1
+ }
+ indexSize = 2
+ arrLength /= 2
+ valLength /= 2
+ byteOffset /= 2
+ }
+ }
+
+ function read (buf, i) {
+ if (indexSize === 1) {
+ return buf[i]
+ } else {
+ return buf.readUInt16BE(i * indexSize)
+ }
+ }
+
+ var foundIndex = -1
+ for (var i = byteOffset; i < arrLength; ++i) {
+ if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
+ if (foundIndex === -1) foundIndex = i
+ if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
+ } else {
+ if (foundIndex !== -1) i -= i - foundIndex
+ foundIndex = -1
+ }
+ }
+
+ return -1
+}
+
+Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
+ if (typeof byteOffset === 'string') {
+ encoding = byteOffset
+ byteOffset = 0
+ } else if (byteOffset > 0x7fffffff) {
+ byteOffset = 0x7fffffff
+ } else if (byteOffset < -0x80000000) {
+ byteOffset = -0x80000000
+ }
+ byteOffset >>= 0
+
+ if (this.length === 0) return -1
+ if (byteOffset >= this.length) return -1
+
+ // Negative offsets start from the end of the buffer
+ if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)
+
+ if (typeof val === 'string') {
+ val = Buffer.from(val, encoding)
+ }
+
+ if (Buffer.isBuffer(val)) {
+ // special case: looking for empty string/buffer always fails
+ if (val.length === 0) {
+ return -1
+ }
+ return arrayIndexOf(this, val, byteOffset, encoding)
+ }
+ if (typeof val === 'number') {
+ if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {
+ return Uint8Array.prototype.indexOf.call(this, val, byteOffset)
+ }
+ return arrayIndexOf(this, [ val ], byteOffset, encoding)
+ }
+
+ throw new TypeError('val must be string, number or Buffer')
+}
+
+Buffer.prototype.includes = function includes (val, byteOffset, encoding) {
+ return this.indexOf(val, byteOffset, encoding) !== -1
+}
+
+function hexWrite (buf, string, offset, length) {
+ offset = Number(offset) || 0
+ var remaining = buf.length - offset
+ if (!length) {
+ length = remaining
+ } else {
+ length = Number(length)
+ if (length > remaining) {
+ length = remaining
+ }
+ }
+
+ // must be an even number of digits
+ var strLen = string.length
+ if (strLen % 2 !== 0) throw new Error('Invalid hex string')
+
+ if (length > strLen / 2) {
+ length = strLen / 2
+ }
+ for (var i = 0; i < length; ++i) {
+ var parsed = parseInt(string.substr(i * 2, 2), 16)
+ if (isNaN(parsed)) return i
+ buf[offset + i] = parsed
+ }
+ return i
+}
+
+function utf8Write (buf, string, offset, length) {
+ return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
+}
+
+function asciiWrite (buf, string, offset, length) {
+ return blitBuffer(asciiToBytes(string), buf, offset, length)
+}
+
+function binaryWrite (buf, string, offset, length) {
+ return asciiWrite(buf, string, offset, length)
+}
+
+function base64Write (buf, string, offset, length) {
+ return blitBuffer(base64ToBytes(string), buf, offset, length)
+}
+
+function ucs2Write (buf, string, offset, length) {
+ return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
+}
+
+Buffer.prototype.write = function write (string, offset, length, encoding) {
+ // Buffer#write(string)
+ if (offset === undefined) {
+ encoding = 'utf8'
+ length = this.length
+ offset = 0
+ // Buffer#write(string, encoding)
+ } else if (length === undefined && typeof offset === 'string') {
+ encoding = offset
+ length = this.length
+ offset = 0
+ // Buffer#write(string, offset[, length][, encoding])
+ } else if (isFinite(offset)) {
+ offset = offset | 0
+ if (isFinite(length)) {
+ length = length | 0
+ if (encoding === undefined) encoding = 'utf8'
+ } else {
+ encoding = length
+ length = undefined
+ }
+ // legacy write(string, encoding, offset, length) - remove in v0.13
+ } else {
+ throw new Error(
+ 'Buffer.write(string, encoding, offset[, length]) is no longer supported'
+ )
+ }
+
+ var remaining = this.length - offset
+ if (length === undefined || length > remaining) length = remaining
+
+ if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
+ throw new RangeError('Attempt to write outside buffer bounds')
+ }
+
+ if (!encoding) encoding = 'utf8'
+
+ var loweredCase = false
+ for (;;) {
+ switch (encoding) {
+ case 'hex':
+ return hexWrite(this, string, offset, length)
+
+ case 'utf8':
+ case 'utf-8':
+ return utf8Write(this, string, offset, length)
+
+ case 'ascii':
+ return asciiWrite(this, string, offset, length)
+
+ case 'binary':
+ return binaryWrite(this, string, offset, length)
+
+ case 'base64':
+ // Warning: maxLength not taken into account in base64Write
+ return base64Write(this, string, offset, length)
+
+ case 'ucs2':
+ case 'ucs-2':
+ case 'utf16le':
+ case 'utf-16le':
+ return ucs2Write(this, string, offset, length)
+
+ default:
+ if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
+ encoding = ('' + encoding).toLowerCase()
+ loweredCase = true
+ }
+ }
+}
+
+Buffer.prototype.toJSON = function toJSON () {
+ return {
+ type: 'Buffer',
+ data: Array.prototype.slice.call(this._arr || this, 0)
+ }
+}
+
+function base64Slice (buf, start, end) {
+ if (start === 0 && end === buf.length) {
+ return base64.fromByteArray(buf)
+ } else {
+ return base64.fromByteArray(buf.slice(start, end))
+ }
+}
+
+function utf8Slice (buf, start, end) {
+ end = Math.min(buf.length, end)
+ var res = []
+
+ var i = start
+ while (i < end) {
+ var firstByte = buf[i]
+ var codePoint = null
+ var bytesPerSequence = (firstByte > 0xEF) ? 4
+ : (firstByte > 0xDF) ? 3
+ : (firstByte > 0xBF) ? 2
+ : 1
+
+ if (i + bytesPerSequence <= end) {
+ var secondByte, thirdByte, fourthByte, tempCodePoint
+
+ switch (bytesPerSequence) {
+ case 1:
+ if (firstByte < 0x80) {
+ codePoint = firstByte
+ }
+ break
+ case 2:
+ secondByte = buf[i + 1]
+ if ((secondByte & 0xC0) === 0x80) {
+ tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
+ if (tempCodePoint > 0x7F) {
+ codePoint = tempCodePoint
+ }
+ }
+ break
+ case 3:
+ secondByte = buf[i + 1]
+ thirdByte = buf[i + 2]
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
+ tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
+ if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
+ codePoint = tempCodePoint
+ }
+ }
+ break
+ case 4:
+ secondByte = buf[i + 1]
+ thirdByte = buf[i + 2]
+ fourthByte = buf[i + 3]
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
+ tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
+ if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
+ codePoint = tempCodePoint
+ }
+ }
+ }
+ }
+
+ if (codePoint === null) {
+ // we did not generate a valid codePoint so insert a
+ // replacement char (U+FFFD) and advance only 1 byte
+ codePoint = 0xFFFD
+ bytesPerSequence = 1
+ } else if (codePoint > 0xFFFF) {
+ // encode to utf16 (surrogate pair dance)
+ codePoint -= 0x10000
+ res.push(codePoint >>> 10 & 0x3FF | 0xD800)
+ codePoint = 0xDC00 | codePoint & 0x3FF
+ }
+
+ res.push(codePoint)
+ i += bytesPerSequence
+ }
+
+ return decodeCodePointsArray(res)
+}
+
+// Based on http://stackoverflow.com/a/22747272/680742, the browser with
+// the lowest limit is Chrome, with 0x10000 args.
+// We go 1 magnitude less, for safety
+var MAX_ARGUMENTS_LENGTH = 0x1000
+
+function decodeCodePointsArray (codePoints) {
+ var len = codePoints.length
+ if (len <= MAX_ARGUMENTS_LENGTH) {
+ return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
+ }
+
+ // Decode in chunks to avoid "call stack size exceeded".
+ var res = ''
+ var i = 0
+ while (i < len) {
+ res += String.fromCharCode.apply(
+ String,
+ codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
+ )
+ }
+ return res
+}
+
+function asciiSlice (buf, start, end) {
+ var ret = ''
+ end = Math.min(buf.length, end)
+
+ for (var i = start; i < end; ++i) {
+ ret += String.fromCharCode(buf[i] & 0x7F)
+ }
+ return ret
+}
+
+function binarySlice (buf, start, end) {
+ var ret = ''
+ end = Math.min(buf.length, end)
+
+ for (var i = start; i < end; ++i) {
+ ret += String.fromCharCode(buf[i])
+ }
+ return ret
+}
+
+function hexSlice (buf, start, end) {
+ var len = buf.length
+
+ if (!start || start < 0) start = 0
+ if (!end || end < 0 || end > len) end = len
+
+ var out = ''
+ for (var i = start; i < end; ++i) {
+ out += toHex(buf[i])
+ }
+ return out
+}
+
+function utf16leSlice (buf, start, end) {
+ var bytes = buf.slice(start, end)
+ var res = ''
+ for (var i = 0; i < bytes.length; i += 2) {
+ res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
+ }
+ return res
+}
+
+Buffer.prototype.slice = function slice (start, end) {
+ var len = this.length
+ start = ~~start
+ end = end === undefined ? len : ~~end
+
+ if (start < 0) {
+ start += len
+ if (start < 0) start = 0
+ } else if (start > len) {
+ start = len
+ }
+
+ if (end < 0) {
+ end += len
+ if (end < 0) end = 0
+ } else if (end > len) {
+ end = len
+ }
+
+ if (end < start) end = start
+
+ var newBuf
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ newBuf = this.subarray(start, end)
+ newBuf.__proto__ = Buffer.prototype
+ } else {
+ var sliceLen = end - start
+ newBuf = new Buffer(sliceLen, undefined)
+ for (var i = 0; i < sliceLen; ++i) {
+ newBuf[i] = this[i + start]
+ }
+ }
+
+ return newBuf
+}
+
+/*
+ * Need to make sure that buffer isn't trying to write out of bounds.
+ */
+function checkOffset (offset, ext, length) {
+ if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
+ if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
+}
+
+Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+ var val = this[offset]
+ var mul = 1
+ var i = 0
+ while (++i < byteLength && (mul *= 0x100)) {
+ val += this[offset + i] * mul
+ }
+
+ return val
+}
+
+Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) {
+ checkOffset(offset, byteLength, this.length)
+ }
+
+ var val = this[offset + --byteLength]
+ var mul = 1
+ while (byteLength > 0 && (mul *= 0x100)) {
+ val += this[offset + --byteLength] * mul
+ }
+
+ return val
+}
+
+Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 1, this.length)
+ return this[offset]
+}
+
+Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 2, this.length)
+ return this[offset] | (this[offset + 1] << 8)
+}
+
+Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 2, this.length)
+ return (this[offset] << 8) | this[offset + 1]
+}
+
+Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+
+ return ((this[offset]) |
+ (this[offset + 1] << 8) |
+ (this[offset + 2] << 16)) +
+ (this[offset + 3] * 0x1000000)
+}
+
+Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+
+ return (this[offset] * 0x1000000) +
+ ((this[offset + 1] << 16) |
+ (this[offset + 2] << 8) |
+ this[offset + 3])
+}
+
+Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+ var val = this[offset]
+ var mul = 1
+ var i = 0
+ while (++i < byteLength && (mul *= 0x100)) {
+ val += this[offset + i] * mul
+ }
+ mul *= 0x80
+
+ if (val >= mul) val -= Math.pow(2, 8 * byteLength)
+
+ return val
+}
+
+Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+ var i = byteLength
+ var mul = 1
+ var val = this[offset + --i]
+ while (i > 0 && (mul *= 0x100)) {
+ val += this[offset + --i] * mul
+ }
+ mul *= 0x80
+
+ if (val >= mul) val -= Math.pow(2, 8 * byteLength)
+
+ return val
+}
+
+Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 1, this.length)
+ if (!(this[offset] & 0x80)) return (this[offset])
+ return ((0xff - this[offset] + 1) * -1)
+}
+
+Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 2, this.length)
+ var val = this[offset] | (this[offset + 1] << 8)
+ return (val & 0x8000) ? val | 0xFFFF0000 : val
+}
+
+Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 2, this.length)
+ var val = this[offset + 1] | (this[offset] << 8)
+ return (val & 0x8000) ? val | 0xFFFF0000 : val
+}
+
+Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+
+ return (this[offset]) |
+ (this[offset + 1] << 8) |
+ (this[offset + 2] << 16) |
+ (this[offset + 3] << 24)
+}
+
+Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+
+ return (this[offset] << 24) |
+ (this[offset + 1] << 16) |
+ (this[offset + 2] << 8) |
+ (this[offset + 3])
+}
+
+Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+ return ieee754.read(this, offset, true, 23, 4)
+}
+
+Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+ return ieee754.read(this, offset, false, 23, 4)
+}
+
+Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 8, this.length)
+ return ieee754.read(this, offset, true, 52, 8)
+}
+
+Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 8, this.length)
+ return ieee754.read(this, offset, false, 52, 8)
+}
+
+function checkInt (buf, value, offset, ext, max, min) {
+ if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
+ if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
+ if (offset + ext > buf.length) throw new RangeError('Index out of range')
+}
+
+Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
+ value = +value
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) {
+ var maxBytes = Math.pow(2, 8 * byteLength) - 1
+ checkInt(this, value, offset, byteLength, maxBytes, 0)
+ }
+
+ var mul = 1
+ var i = 0
+ this[offset] = value & 0xFF
+ while (++i < byteLength && (mul *= 0x100)) {
+ this[offset + i] = (value / mul) & 0xFF
+ }
+
+ return offset + byteLength
+}
+
+Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
+ value = +value
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) {
+ var maxBytes = Math.pow(2, 8 * byteLength) - 1
+ checkInt(this, value, offset, byteLength, maxBytes, 0)
+ }
+
+ var i = byteLength - 1
+ var mul = 1
+ this[offset + i] = value & 0xFF
+ while (--i >= 0 && (mul *= 0x100)) {
+ this[offset + i] = (value / mul) & 0xFF
+ }
+
+ return offset + byteLength
+}
+
+Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
+ if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
+ this[offset] = (value & 0xff)
+ return offset + 1
+}
+
+function objectWriteUInt16 (buf, value, offset, littleEndian) {
+ if (value < 0) value = 0xffff + value + 1
+ for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
+ buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
+ (littleEndian ? i : 1 - i) * 8
+ }
+}
+
+Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value & 0xff)
+ this[offset + 1] = (value >>> 8)
+ } else {
+ objectWriteUInt16(this, value, offset, true)
+ }
+ return offset + 2
+}
+
+Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value >>> 8)
+ this[offset + 1] = (value & 0xff)
+ } else {
+ objectWriteUInt16(this, value, offset, false)
+ }
+ return offset + 2
+}
+
+function objectWriteUInt32 (buf, value, offset, littleEndian) {
+ if (value < 0) value = 0xffffffff + value + 1
+ for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
+ buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
+ }
+}
+
+Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset + 3] = (value >>> 24)
+ this[offset + 2] = (value >>> 16)
+ this[offset + 1] = (value >>> 8)
+ this[offset] = (value & 0xff)
+ } else {
+ objectWriteUInt32(this, value, offset, true)
+ }
+ return offset + 4
+}
+
+Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value >>> 24)
+ this[offset + 1] = (value >>> 16)
+ this[offset + 2] = (value >>> 8)
+ this[offset + 3] = (value & 0xff)
+ } else {
+ objectWriteUInt32(this, value, offset, false)
+ }
+ return offset + 4
+}
+
+Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) {
+ var limit = Math.pow(2, 8 * byteLength - 1)
+
+ checkInt(this, value, offset, byteLength, limit - 1, -limit)
+ }
+
+ var i = 0
+ var mul = 1
+ var sub = 0
+ this[offset] = value & 0xFF
+ while (++i < byteLength && (mul *= 0x100)) {
+ if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
+ sub = 1
+ }
+ this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
+ }
+
+ return offset + byteLength
+}
+
+Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) {
+ var limit = Math.pow(2, 8 * byteLength - 1)
+
+ checkInt(this, value, offset, byteLength, limit - 1, -limit)
+ }
+
+ var i = byteLength - 1
+ var mul = 1
+ var sub = 0
+ this[offset + i] = value & 0xFF
+ while (--i >= 0 && (mul *= 0x100)) {
+ if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
+ sub = 1
+ }
+ this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
+ }
+
+ return offset + byteLength
+}
+
+Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
+ if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
+ if (value < 0) value = 0xff + value + 1
+ this[offset] = (value & 0xff)
+ return offset + 1
+}
+
+Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value & 0xff)
+ this[offset + 1] = (value >>> 8)
+ } else {
+ objectWriteUInt16(this, value, offset, true)
+ }
+ return offset + 2
+}
+
+Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value >>> 8)
+ this[offset + 1] = (value & 0xff)
+ } else {
+ objectWriteUInt16(this, value, offset, false)
+ }
+ return offset + 2
+}
+
+Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value & 0xff)
+ this[offset + 1] = (value >>> 8)
+ this[offset + 2] = (value >>> 16)
+ this[offset + 3] = (value >>> 24)
+ } else {
+ objectWriteUInt32(this, value, offset, true)
+ }
+ return offset + 4
+}
+
+Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
+ if (value < 0) value = 0xffffffff + value + 1
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value >>> 24)
+ this[offset + 1] = (value >>> 16)
+ this[offset + 2] = (value >>> 8)
+ this[offset + 3] = (value & 0xff)
+ } else {
+ objectWriteUInt32(this, value, offset, false)
+ }
+ return offset + 4
+}
+
+function checkIEEE754 (buf, value, offset, ext, max, min) {
+ if (offset + ext > buf.length) throw new RangeError('Index out of range')
+ if (offset < 0) throw new RangeError('Index out of range')
+}
+
+function writeFloat (buf, value, offset, littleEndian, noAssert) {
+ if (!noAssert) {
+ checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
+ }
+ ieee754.write(buf, value, offset, littleEndian, 23, 4)
+ return offset + 4
+}
+
+Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
+ return writeFloat(this, value, offset, true, noAssert)
+}
+
+Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
+ return writeFloat(this, value, offset, false, noAssert)
+}
+
+function writeDouble (buf, value, offset, littleEndian, noAssert) {
+ if (!noAssert) {
+ checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
+ }
+ ieee754.write(buf, value, offset, littleEndian, 52, 8)
+ return offset + 8
+}
+
+Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
+ return writeDouble(this, value, offset, true, noAssert)
+}
+
+Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
+ return writeDouble(this, value, offset, false, noAssert)
+}
+
+// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
+Buffer.prototype.copy = function copy (target, targetStart, start, end) {
+ if (!start) start = 0
+ if (!end && end !== 0) end = this.length
+ if (targetStart >= target.length) targetStart = target.length
+ if (!targetStart) targetStart = 0
+ if (end > 0 && end < start) end = start
+
+ // Copy 0 bytes; we're done
+ if (end === start) return 0
+ if (target.length === 0 || this.length === 0) return 0
+
+ // Fatal error conditions
+ if (targetStart < 0) {
+ throw new RangeError('targetStart out of bounds')
+ }
+ if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
+ if (end < 0) throw new RangeError('sourceEnd out of bounds')
+
+ // Are we oob?
+ if (end > this.length) end = this.length
+ if (target.length - targetStart < end - start) {
+ end = target.length - targetStart + start
+ }
+
+ var len = end - start
+ var i
+
+ if (this === target && start < targetStart && targetStart < end) {
+ // descending copy from end
+ for (i = len - 1; i >= 0; --i) {
+ target[i + targetStart] = this[i + start]
+ }
+ } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
+ // ascending copy from start
+ for (i = 0; i < len; ++i) {
+ target[i + targetStart] = this[i + start]
+ }
+ } else {
+ Uint8Array.prototype.set.call(
+ target,
+ this.subarray(start, start + len),
+ targetStart
+ )
+ }
+
+ return len
+}
+
+// Usage:
+// buffer.fill(number[, offset[, end]])
+// buffer.fill(buffer[, offset[, end]])
+// buffer.fill(string[, offset[, end]][, encoding])
+Buffer.prototype.fill = function fill (val, start, end, encoding) {
+ // Handle string cases:
+ if (typeof val === 'string') {
+ if (typeof start === 'string') {
+ encoding = start
+ start = 0
+ end = this.length
+ } else if (typeof end === 'string') {
+ encoding = end
+ end = this.length
+ }
+ if (val.length === 1) {
+ var code = val.charCodeAt(0)
+ if (code < 256) {
+ val = code
+ }
+ }
+ if (encoding !== undefined && typeof encoding !== 'string') {
+ throw new TypeError('encoding must be a string')
+ }
+ if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
+ throw new TypeError('Unknown encoding: ' + encoding)
+ }
+ } else if (typeof val === 'number') {
+ val = val & 255
+ }
+
+ // Invalid ranges are not set to a default, so can range check early.
+ if (start < 0 || this.length < start || this.length < end) {
+ throw new RangeError('Out of range index')
+ }
+
+ if (end <= start) {
+ return this
+ }
+
+ start = start >>> 0
+ end = end === undefined ? this.length : end >>> 0
+
+ if (!val) val = 0
+
+ var i
+ if (typeof val === 'number') {
+ for (i = start; i < end; ++i) {
+ this[i] = val
+ }
+ } else {
+ var bytes = Buffer.isBuffer(val)
+ ? val
+ : utf8ToBytes(new Buffer(val, encoding).toString())
+ var len = bytes.length
+ for (i = 0; i < end - start; ++i) {
+ this[i + start] = bytes[i % len]
+ }
+ }
+
+ return this
+}
+
+// HELPER FUNCTIONS
+// ================
+
+var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
+
+function base64clean (str) {
+ // Node strips out invalid characters like \n and \t from the string, base64-js does not
+ str = stringtrim(str).replace(INVALID_BASE64_RE, '')
+ // Node converts strings with length < 2 to ''
+ if (str.length < 2) return ''
+ // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
+ while (str.length % 4 !== 0) {
+ str = str + '='
+ }
+ return str
+}
+
+function stringtrim (str) {
+ if (str.trim) return str.trim()
+ return str.replace(/^\s+|\s+$/g, '')
+}
+
+function toHex (n) {
+ if (n < 16) return '0' + n.toString(16)
+ return n.toString(16)
+}
+
+function utf8ToBytes (string, units) {
+ units = units || Infinity
+ var codePoint
+ var length = string.length
+ var leadSurrogate = null
+ var bytes = []
+
+ for (var i = 0; i < length; ++i) {
+ codePoint = string.charCodeAt(i)
+
+ // is surrogate component
+ if (codePoint > 0xD7FF && codePoint < 0xE000) {
+ // last char was a lead
+ if (!leadSurrogate) {
+ // no lead yet
+ if (codePoint > 0xDBFF) {
+ // unexpected trail
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+ continue
+ } else if (i + 1 === length) {
+ // unpaired lead
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+ continue
+ }
+
+ // valid lead
+ leadSurrogate = codePoint
+
+ continue
+ }
+
+ // 2 leads in a row
+ if (codePoint < 0xDC00) {
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+ leadSurrogate = codePoint
+ continue
+ }
+
+ // valid surrogate pair
+ codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
+ } else if (leadSurrogate) {
+ // valid bmp char, but last char was a lead
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+ }
+
+ leadSurrogate = null
+
+ // encode utf8
+ if (codePoint < 0x80) {
+ if ((units -= 1) < 0) break
+ bytes.push(codePoint)
+ } else if (codePoint < 0x800) {
+ if ((units -= 2) < 0) break
+ bytes.push(
+ codePoint >> 0x6 | 0xC0,
+ codePoint & 0x3F | 0x80
+ )
+ } else if (codePoint < 0x10000) {
+ if ((units -= 3) < 0) break
+ bytes.push(
+ codePoint >> 0xC | 0xE0,
+ codePoint >> 0x6 & 0x3F | 0x80,
+ codePoint & 0x3F | 0x80
+ )
+ } else if (codePoint < 0x110000) {
+ if ((units -= 4) < 0) break
+ bytes.push(
+ codePoint >> 0x12 | 0xF0,
+ codePoint >> 0xC & 0x3F | 0x80,
+ codePoint >> 0x6 & 0x3F | 0x80,
+ codePoint & 0x3F | 0x80
+ )
+ } else {
+ throw new Error('Invalid code point')
+ }
+ }
+
+ return bytes
+}
+
+function asciiToBytes (str) {
+ var byteArray = []
+ for (var i = 0; i < str.length; ++i) {
+ // Node's code seems to be doing this and not & 0x7F..
+ byteArray.push(str.charCodeAt(i) & 0xFF)
+ }
+ return byteArray
+}
+
+function utf16leToBytes (str, units) {
+ var c, hi, lo
+ var byteArray = []
+ for (var i = 0; i < str.length; ++i) {
+ if ((units -= 2) < 0) break
+
+ c = str.charCodeAt(i)
+ hi = c >> 8
+ lo = c % 256
+ byteArray.push(lo)
+ byteArray.push(hi)
+ }
+
+ return byteArray
+}
+
+function base64ToBytes (str) {
+ return base64.toByteArray(base64clean(str))
+}
+
+function blitBuffer (src, dst, offset, length) {
+ for (var i = 0; i < length; ++i) {
+ if ((i + offset >= dst.length) || (i >= src.length)) break
+ dst[i + offset] = src[i]
+ }
+ return i
+}
+
+function isnan (val) {
+ return val !== val // eslint-disable-line no-self-compare
+}
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"base64-js":39,"ieee754":50,"isarray":53}],45:[function(require,module,exports){
+(function (Buffer){
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+// NOTE: These type checking functions intentionally don't use `instanceof`
+// because it is fragile and can be easily faked with `Object.create()`.
+
+function isArray(arg) {
+ if (Array.isArray) {
+ return Array.isArray(arg);
+ }
+ return objectToString(arg) === '[object Array]';
+}
+exports.isArray = isArray;
+
+function isBoolean(arg) {
+ return typeof arg === 'boolean';
+}
+exports.isBoolean = isBoolean;
+
+function isNull(arg) {
+ return arg === null;
+}
+exports.isNull = isNull;
+
+function isNullOrUndefined(arg) {
+ return arg == null;
+}
+exports.isNullOrUndefined = isNullOrUndefined;
+
+function isNumber(arg) {
+ return typeof arg === 'number';
+}
+exports.isNumber = isNumber;
+
+function isString(arg) {
+ return typeof arg === 'string';
+}
+exports.isString = isString;
+
+function isSymbol(arg) {
+ return typeof arg === 'symbol';
+}
+exports.isSymbol = isSymbol;
+
+function isUndefined(arg) {
+ return arg === void 0;
+}
+exports.isUndefined = isUndefined;
+
+function isRegExp(re) {
+ return objectToString(re) === '[object RegExp]';
+}
+exports.isRegExp = isRegExp;
+
+function isObject(arg) {
+ return typeof arg === 'object' && arg !== null;
+}
+exports.isObject = isObject;
+
+function isDate(d) {
+ return objectToString(d) === '[object Date]';
+}
+exports.isDate = isDate;
+
+function isError(e) {
+ return (objectToString(e) === '[object Error]' || e instanceof Error);
+}
+exports.isError = isError;
+
+function isFunction(arg) {
+ return typeof arg === 'function';
+}
+exports.isFunction = isFunction;
+
+function isPrimitive(arg) {
+ return arg === null ||
+ typeof arg === 'boolean' ||
+ typeof arg === 'number' ||
+ typeof arg === 'string' ||
+ typeof arg === 'symbol' || // ES6 symbol
+ typeof arg === 'undefined';
+}
+exports.isPrimitive = isPrimitive;
+
+exports.isBuffer = Buffer.isBuffer;
+
+function objectToString(o) {
+ return Object.prototype.toString.call(o);
+}
+
+}).call(this,{"isBuffer":require("../../is-buffer/index.js")})
+},{"../../is-buffer/index.js":52}],46:[function(require,module,exports){
+/* See LICENSE file for terms of use */
+
+/*
+ * Text diff implementation.
+ *
+ * This library supports the following APIS:
+ * JsDiff.diffChars: Character by character diff
+ * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace
+ * JsDiff.diffLines: Line based diff
+ *
+ * JsDiff.diffCss: Diff targeted at CSS content
+ *
+ * These methods are based on the implementation proposed in
+ * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986).
+ * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927
+ */
+(function(global, undefined) {
+ var objectPrototypeToString = Object.prototype.toString;
+
+ /*istanbul ignore next*/
+ function map(arr, mapper, that) {
+ if (Array.prototype.map) {
+ return Array.prototype.map.call(arr, mapper, that);
+ }
+
+ var other = new Array(arr.length);
+
+ for (var i = 0, n = arr.length; i < n; i++) {
+ other[i] = mapper.call(that, arr[i], i, arr);
+ }
+ return other;
+ }
+ function clonePath(path) {
+ return { newPos: path.newPos, components: path.components.slice(0) };
+ }
+ function removeEmpty(array) {
+ var ret = [];
+ for (var i = 0; i < array.length; i++) {
+ if (array[i]) {
+ ret.push(array[i]);
+ }
+ }
+ return ret;
+ }
+ function escapeHTML(s) {
+ var n = s;
+ n = n.replace(/&/g, '&amp;');
+ n = n.replace(/</g, '&lt;');
+ n = n.replace(/>/g, '&gt;');
+ n = n.replace(/"/g, '&quot;');
+
+ return n;
+ }
+
+ // This function handles the presence of circular references by bailing out when encountering an
+ // object that is already on the "stack" of items being processed.
+ function canonicalize(obj, stack, replacementStack) {
+ stack = stack || [];
+ replacementStack = replacementStack || [];
+
+ var i;
+
+ for (i = 0; i < stack.length; i += 1) {
+ if (stack[i] === obj) {
+ return replacementStack[i];
+ }
+ }
+
+ var canonicalizedObj;
+
+ if ('[object Array]' === objectPrototypeToString.call(obj)) {
+ stack.push(obj);
+ canonicalizedObj = new Array(obj.length);
+ replacementStack.push(canonicalizedObj);
+ for (i = 0; i < obj.length; i += 1) {
+ canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack);
+ }
+ stack.pop();
+ replacementStack.pop();
+ } else if (typeof obj === 'object' && obj !== null) {
+ stack.push(obj);
+ canonicalizedObj = {};
+ replacementStack.push(canonicalizedObj);
+ var sortedKeys = [],
+ key;
+ for (key in obj) {
+ sortedKeys.push(key);
+ }
+ sortedKeys.sort();
+ for (i = 0; i < sortedKeys.length; i += 1) {
+ key = sortedKeys[i];
+ canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack);
+ }
+ stack.pop();
+ replacementStack.pop();
+ } else {
+ canonicalizedObj = obj;
+ }
+ return canonicalizedObj;
+ }
+
+ function buildValues(components, newString, oldString, useLongestToken) {
+ var componentPos = 0,
+ componentLen = components.length,
+ newPos = 0,
+ oldPos = 0;
+
+ for (; componentPos < componentLen; componentPos++) {
+ var component = components[componentPos];
+ if (!component.removed) {
+ if (!component.added && useLongestToken) {
+ var value = newString.slice(newPos, newPos + component.count);
+ value = map(value, function(value, i) {
+ var oldValue = oldString[oldPos + i];
+ return oldValue.length > value.length ? oldValue : value;
+ });
+
+ component.value = value.join('');
+ } else {
+ component.value = newString.slice(newPos, newPos + component.count).join('');
+ }
+ newPos += component.count;
+
+ // Common case
+ if (!component.added) {
+ oldPos += component.count;
+ }
+ } else {
+ component.value = oldString.slice(oldPos, oldPos + component.count).join('');
+ oldPos += component.count;
+
+ // Reverse add and remove so removes are output first to match common convention
+ // The diffing algorithm is tied to add then remove output and this is the simplest
+ // route to get the desired output with minimal overhead.
+ if (componentPos && components[componentPos - 1].added) {
+ var tmp = components[componentPos - 1];
+ components[componentPos - 1] = components[componentPos];
+ components[componentPos] = tmp;
+ }
+ }
+ }
+
+ return components;
+ }
+
+ function Diff(ignoreWhitespace) {
+ this.ignoreWhitespace = ignoreWhitespace;
+ }
+ Diff.prototype = {
+ diff: function(oldString, newString, callback) {
+ var self = this;
+
+ function done(value) {
+ if (callback) {
+ setTimeout(function() { callback(undefined, value); }, 0);
+ return true;
+ } else {
+ return value;
+ }
+ }
+
+ // Handle the identity case (this is due to unrolling editLength == 0
+ if (newString === oldString) {
+ return done([{ value: newString }]);
+ }
+ if (!newString) {
+ return done([{ value: oldString, removed: true }]);
+ }
+ if (!oldString) {
+ return done([{ value: newString, added: true }]);
+ }
+
+ newString = this.tokenize(newString);
+ oldString = this.tokenize(oldString);
+
+ var newLen = newString.length, oldLen = oldString.length;
+ var editLength = 1;
+ var maxEditLength = newLen + oldLen;
+ var bestPath = [{ newPos: -1, components: [] }];
+
+ // Seed editLength = 0, i.e. the content starts with the same values
+ var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
+ if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
+ // Identity per the equality and tokenizer
+ return done([{value: newString.join('')}]);
+ }
+
+ // Main worker method. checks all permutations of a given edit length for acceptance.
+ function execEditLength() {
+ for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
+ var basePath;
+ var addPath = bestPath[diagonalPath - 1],
+ removePath = bestPath[diagonalPath + 1],
+ oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
+ if (addPath) {
+ // No one else is going to attempt to use this value, clear it
+ bestPath[diagonalPath - 1] = undefined;
+ }
+
+ var canAdd = addPath && addPath.newPos + 1 < newLen,
+ canRemove = removePath && 0 <= oldPos && oldPos < oldLen;
+ if (!canAdd && !canRemove) {
+ // If this path is a terminal then prune
+ bestPath[diagonalPath] = undefined;
+ continue;
+ }
+
+ // Select the diagonal that we want to branch from. We select the prior
+ // path whose position in the new string is the farthest from the origin
+ // and does not pass the bounds of the diff graph
+ if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) {
+ basePath = clonePath(removePath);
+ self.pushComponent(basePath.components, undefined, true);
+ } else {
+ basePath = addPath; // No need to clone, we've pulled it from the list
+ basePath.newPos++;
+ self.pushComponent(basePath.components, true, undefined);
+ }
+
+ oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath);
+
+ // If we have hit the end of both strings, then we are done
+ if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
+ return done(buildValues(basePath.components, newString, oldString, self.useLongestToken));
+ } else {
+ // Otherwise track this path as a potential candidate and continue.
+ bestPath[diagonalPath] = basePath;
+ }
+ }
+
+ editLength++;
+ }
+
+ // Performs the length of edit iteration. Is a bit fugly as this has to support the
+ // sync and async mode which is never fun. Loops over execEditLength until a value
+ // is produced.
+ if (callback) {
+ (function exec() {
+ setTimeout(function() {
+ // This should not happen, but we want to be safe.
+ /*istanbul ignore next */
+ if (editLength > maxEditLength) {
+ return callback();
+ }
+
+ if (!execEditLength()) {
+ exec();
+ }
+ }, 0);
+ }());
+ } else {
+ while (editLength <= maxEditLength) {
+ var ret = execEditLength();
+ if (ret) {
+ return ret;
+ }
+ }
+ }
+ },
+
+ pushComponent: function(components, added, removed) {
+ var last = components[components.length - 1];
+ if (last && last.added === added && last.removed === removed) {
+ // We need to clone here as the component clone operation is just
+ // as shallow array clone
+ components[components.length - 1] = {count: last.count + 1, added: added, removed: removed };
+ } else {
+ components.push({count: 1, added: added, removed: removed });
+ }
+ },
+ extractCommon: function(basePath, newString, oldString, diagonalPath) {
+ var newLen = newString.length,
+ oldLen = oldString.length,
+ newPos = basePath.newPos,
+ oldPos = newPos - diagonalPath,
+
+ commonCount = 0;
+ while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
+ newPos++;
+ oldPos++;
+ commonCount++;
+ }
+
+ if (commonCount) {
+ basePath.components.push({count: commonCount});
+ }
+
+ basePath.newPos = newPos;
+ return oldPos;
+ },
+
+ equals: function(left, right) {
+ var reWhitespace = /\S/;
+ return left === right || (this.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right));
+ },
+ tokenize: function(value) {
+ return value.split('');
+ }
+ };
+
+ var CharDiff = new Diff();
+
+ var WordDiff = new Diff(true);
+ var WordWithSpaceDiff = new Diff();
+ WordDiff.tokenize = WordWithSpaceDiff.tokenize = function(value) {
+ return removeEmpty(value.split(/(\s+|\b)/));
+ };
+
+ var CssDiff = new Diff(true);
+ CssDiff.tokenize = function(value) {
+ return removeEmpty(value.split(/([{}:;,]|\s+)/));
+ };
+
+ var LineDiff = new Diff();
+
+ var TrimmedLineDiff = new Diff();
+ TrimmedLineDiff.ignoreTrim = true;
+
+ LineDiff.tokenize = TrimmedLineDiff.tokenize = function(value) {
+ var retLines = [],
+ lines = value.split(/^/m);
+ for (var i = 0; i < lines.length; i++) {
+ var line = lines[i],
+ lastLine = lines[i - 1],
+ lastLineLastChar = lastLine && lastLine[lastLine.length - 1];
+
+ // Merge lines that may contain windows new lines
+ if (line === '\n' && lastLineLastChar === '\r') {
+ retLines[retLines.length - 1] = retLines[retLines.length - 1].slice(0, -1) + '\r\n';
+ } else {
+ if (this.ignoreTrim) {
+ line = line.trim();
+ // add a newline unless this is the last line.
+ if (i < lines.length - 1) {
+ line += '\n';
+ }
+ }
+ retLines.push(line);
+ }
+ }
+
+ return retLines;
+ };
+
+ var PatchDiff = new Diff();
+ PatchDiff.tokenize = function(value) {
+ var ret = [],
+ linesAndNewlines = value.split(/(\n|\r\n)/);
+
+ // Ignore the final empty token that occurs if the string ends with a new line
+ if (!linesAndNewlines[linesAndNewlines.length - 1]) {
+ linesAndNewlines.pop();
+ }
+
+ // Merge the content and line separators into single tokens
+ for (var i = 0; i < linesAndNewlines.length; i++) {
+ var line = linesAndNewlines[i];
+
+ if (i % 2) {
+ ret[ret.length - 1] += line;
+ } else {
+ ret.push(line);
+ }
+ }
+ return ret;
+ };
+
+ var SentenceDiff = new Diff();
+ SentenceDiff.tokenize = function(value) {
+ return removeEmpty(value.split(/(\S.+?[.!?])(?=\s+|$)/));
+ };
+
+ var JsonDiff = new Diff();
+ // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a
+ // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:
+ JsonDiff.useLongestToken = true;
+ JsonDiff.tokenize = LineDiff.tokenize;
+ JsonDiff.equals = function(left, right) {
+ return LineDiff.equals(left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'));
+ };
+
+ var JsDiff = {
+ Diff: Diff,
+
+ diffChars: function(oldStr, newStr, callback) { return CharDiff.diff(oldStr, newStr, callback); },
+ diffWords: function(oldStr, newStr, callback) { return WordDiff.diff(oldStr, newStr, callback); },
+ diffWordsWithSpace: function(oldStr, newStr, callback) { return WordWithSpaceDiff.diff(oldStr, newStr, callback); },
+ diffLines: function(oldStr, newStr, callback) { return LineDiff.diff(oldStr, newStr, callback); },
+ diffTrimmedLines: function(oldStr, newStr, callback) { return TrimmedLineDiff.diff(oldStr, newStr, callback); },
+
+ diffSentences: function(oldStr, newStr, callback) { return SentenceDiff.diff(oldStr, newStr, callback); },
+
+ diffCss: function(oldStr, newStr, callback) { return CssDiff.diff(oldStr, newStr, callback); },
+ diffJson: function(oldObj, newObj, callback) {
+ return JsonDiff.diff(
+ typeof oldObj === 'string' ? oldObj : JSON.stringify(canonicalize(oldObj), undefined, ' '),
+ typeof newObj === 'string' ? newObj : JSON.stringify(canonicalize(newObj), undefined, ' '),
+ callback
+ );
+ },
+
+ createTwoFilesPatch: function(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader) {
+ var ret = [];
+
+ if (oldFileName == newFileName) {
+ ret.push('Index: ' + oldFileName);
+ }
+ ret.push('===================================================================');
+ ret.push('--- ' + oldFileName + (typeof oldHeader === 'undefined' ? '' : '\t' + oldHeader));
+ ret.push('+++ ' + newFileName + (typeof newHeader === 'undefined' ? '' : '\t' + newHeader));
+
+ var diff = PatchDiff.diff(oldStr, newStr);
+ diff.push({value: '', lines: []}); // Append an empty value to make cleanup easier
+
+ // Formats a given set of lines for printing as context lines in a patch
+ function contextLines(lines) {
+ return map(lines, function(entry) { return ' ' + entry; });
+ }
+
+ // Outputs the no newline at end of file warning if needed
+ function eofNL(curRange, i, current) {
+ var last = diff[diff.length - 2],
+ isLast = i === diff.length - 2,
+ isLastOfType = i === diff.length - 3 && current.added !== last.added;
+
+ // Figure out if this is the last line for the given file and missing NL
+ if (!(/\n$/.test(current.value)) && (isLast || isLastOfType)) {
+ curRange.push('\\ No newline at end of file');
+ }
+ }
+
+ var oldRangeStart = 0, newRangeStart = 0, curRange = [],
+ oldLine = 1, newLine = 1;
+ for (var i = 0; i < diff.length; i++) {
+ var current = diff[i],
+ lines = current.lines || current.value.replace(/\n$/, '').split('\n');
+ current.lines = lines;
+
+ if (current.added || current.removed) {
+ // If we have previous context, start with that
+ if (!oldRangeStart) {
+ var prev = diff[i - 1];
+ oldRangeStart = oldLine;
+ newRangeStart = newLine;
+
+ if (prev) {
+ curRange = contextLines(prev.lines.slice(-4));
+ oldRangeStart -= curRange.length;
+ newRangeStart -= curRange.length;
+ }
+ }
+
+ // Output our changes
+ curRange.push.apply(curRange, map(lines, function(entry) {
+ return (current.added ? '+' : '-') + entry;
+ }));
+ eofNL(curRange, i, current);
+
+ // Track the updated file position
+ if (current.added) {
+ newLine += lines.length;
+ } else {
+ oldLine += lines.length;
+ }
+ } else {
+ // Identical context lines. Track line changes
+ if (oldRangeStart) {
+ // Close out any changes that have been output (or join overlapping)
+ if (lines.length <= 8 && i < diff.length - 2) {
+ // Overlapping
+ curRange.push.apply(curRange, contextLines(lines));
+ } else {
+ // end the range and output
+ var contextSize = Math.min(lines.length, 4);
+ ret.push(
+ '@@ -' + oldRangeStart + ',' + (oldLine - oldRangeStart + contextSize)
+ + ' +' + newRangeStart + ',' + (newLine - newRangeStart + contextSize)
+ + ' @@');
+ ret.push.apply(ret, curRange);
+ ret.push.apply(ret, contextLines(lines.slice(0, contextSize)));
+ if (lines.length <= 4) {
+ eofNL(ret, i, current);
+ }
+
+ oldRangeStart = 0;
+ newRangeStart = 0;
+ curRange = [];
+ }
+ }
+ oldLine += lines.length;
+ newLine += lines.length;
+ }
+ }
+
+ return ret.join('\n') + '\n';
+ },
+
+ createPatch: function(fileName, oldStr, newStr, oldHeader, newHeader) {
+ return JsDiff.createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader);
+ },
+
+ applyPatch: function(oldStr, uniDiff) {
+ var diffstr = uniDiff.split('\n'),
+ hunks = [],
+ i = 0,
+ remEOFNL = false,
+ addEOFNL = false;
+
+ // Skip to the first change hunk
+ while (i < diffstr.length && !(/^@@/.test(diffstr[i]))) {
+ i++;
+ }
+
+ // Parse the unified diff
+ for (; i < diffstr.length; i++) {
+ if (diffstr[i][0] === '@') {
+ var chnukHeader = diffstr[i].split(/@@ -(\d+),(\d+) \+(\d+),(\d+) @@/);
+ hunks.unshift({
+ start: chnukHeader[3],
+ oldlength: +chnukHeader[2],
+ removed: [],
+ newlength: chnukHeader[4],
+ added: []
+ });
+ } else if (diffstr[i][0] === '+') {
+ hunks[0].added.push(diffstr[i].substr(1));
+ } else if (diffstr[i][0] === '-') {
+ hunks[0].removed.push(diffstr[i].substr(1));
+ } else if (diffstr[i][0] === ' ') {
+ hunks[0].added.push(diffstr[i].substr(1));
+ hunks[0].removed.push(diffstr[i].substr(1));
+ } else if (diffstr[i][0] === '\\') {
+ if (diffstr[i - 1][0] === '+') {
+ remEOFNL = true;
+ } else if (diffstr[i - 1][0] === '-') {
+ addEOFNL = true;
+ }
+ }
+ }
+
+ // Apply the diff to the input
+ var lines = oldStr.split('\n');
+ for (i = hunks.length - 1; i >= 0; i--) {
+ var hunk = hunks[i];
+ // Sanity check the input string. Bail if we don't match.
+ for (var j = 0; j < hunk.oldlength; j++) {
+ if (lines[hunk.start - 1 + j] !== hunk.removed[j]) {
+ return false;
+ }
+ }
+ Array.prototype.splice.apply(lines, [hunk.start - 1, hunk.oldlength].concat(hunk.added));
+ }
+
+ // Handle EOFNL insertion/removal
+ if (remEOFNL) {
+ while (!lines[lines.length - 1]) {
+ lines.pop();
+ }
+ } else if (addEOFNL) {
+ lines.push('');
+ }
+ return lines.join('\n');
+ },
+
+ convertChangesToXML: function(changes) {
+ var ret = [];
+ for (var i = 0; i < changes.length; i++) {
+ var change = changes[i];
+ if (change.added) {
+ ret.push('<ins>');
+ } else if (change.removed) {
+ ret.push('<del>');
+ }
+
+ ret.push(escapeHTML(change.value));
+
+ if (change.added) {
+ ret.push('</ins>');
+ } else if (change.removed) {
+ ret.push('</del>');
+ }
+ }
+ return ret.join('');
+ },
+
+ // See: http://code.google.com/p/google-diff-match-patch/wiki/API
+ convertChangesToDMP: function(changes) {
+ var ret = [],
+ change,
+ operation;
+ for (var i = 0; i < changes.length; i++) {
+ change = changes[i];
+ if (change.added) {
+ operation = 1;
+ } else if (change.removed) {
+ operation = -1;
+ } else {
+ operation = 0;
+ }
+
+ ret.push([operation, change.value]);
+ }
+ return ret;
+ },
+
+ canonicalize: canonicalize
+ };
+
+ /*istanbul ignore next */
+ /*global module */
+ if (typeof module !== 'undefined' && module.exports) {
+ module.exports = JsDiff;
+ } else if (false) {
+ /*global define */
+ define([], function() { return JsDiff; });
+ } else if (typeof global.JsDiff === 'undefined') {
+ global.JsDiff = JsDiff;
+ }
+}(this));
+
+},{}],47:[function(require,module,exports){
+'use strict';
+
+var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
+
+module.exports = function (str) {
+ if (typeof str !== 'string') {
+ throw new TypeError('Expected a string');
+ }
+
+ return str.replace(matchOperatorsRe, '\\$&');
+};
+
+},{}],48:[function(require,module,exports){
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+function EventEmitter() {
+ this._events = this._events || {};
+ this._maxListeners = this._maxListeners || undefined;
+}
+module.exports = EventEmitter;
+
+// Backwards-compat with node 0.10.x
+EventEmitter.EventEmitter = EventEmitter;
+
+EventEmitter.prototype._events = undefined;
+EventEmitter.prototype._maxListeners = undefined;
+
+// By default EventEmitters will print a warning if more than 10 listeners are
+// added to it. This is a useful default which helps finding memory leaks.
+EventEmitter.defaultMaxListeners = 10;
+
+// Obviously not all Emitters should be limited to 10. This function allows
+// that to be increased. Set to zero for unlimited.
+EventEmitter.prototype.setMaxListeners = function(n) {
+ if (!isNumber(n) || n < 0 || isNaN(n))
+ throw TypeError('n must be a positive number');
+ this._maxListeners = n;
+ return this;
+};
+
+EventEmitter.prototype.emit = function(type) {
+ var er, handler, len, args, i, listeners;
+
+ if (!this._events)
+ this._events = {};
+
+ // If there is no 'error' event listener then throw.
+ if (type === 'error') {
+ if (!this._events.error ||
+ (isObject(this._events.error) && !this._events.error.length)) {
+ er = arguments[1];
+ if (er instanceof Error) {
+ throw er; // Unhandled 'error' event
+ } else {
+ // At least give some kind of context to the user
+ var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
+ err.context = er;
+ throw err;
+ }
+ }
+ }
+
+ handler = this._events[type];
+
+ if (isUndefined(handler))
+ return false;
+
+ if (isFunction(handler)) {
+ switch (arguments.length) {
+ // fast cases
+ case 1:
+ handler.call(this);
+ break;
+ case 2:
+ handler.call(this, arguments[1]);
+ break;
+ case 3:
+ handler.call(this, arguments[1], arguments[2]);
+ break;
+ // slower
+ default:
+ args = Array.prototype.slice.call(arguments, 1);
+ handler.apply(this, args);
+ }
+ } else if (isObject(handler)) {
+ args = Array.prototype.slice.call(arguments, 1);
+ listeners = handler.slice();
+ len = listeners.length;
+ for (i = 0; i < len; i++)
+ listeners[i].apply(this, args);
+ }
+
+ return true;
+};
+
+EventEmitter.prototype.addListener = function(type, listener) {
+ var m;
+
+ if (!isFunction(listener))
+ throw TypeError('listener must be a function');
+
+ if (!this._events)
+ this._events = {};
+
+ // To avoid recursion in the case that type === "newListener"! Before
+ // adding it to the listeners, first emit "newListener".
+ if (this._events.newListener)
+ this.emit('newListener', type,
+ isFunction(listener.listener) ?
+ listener.listener : listener);
+
+ if (!this._events[type])
+ // Optimize the case of one listener. Don't need the extra array object.
+ this._events[type] = listener;
+ else if (isObject(this._events[type]))
+ // If we've already got an array, just append.
+ this._events[type].push(listener);
+ else
+ // Adding the second element, need to change to array.
+ this._events[type] = [this._events[type], listener];
+
+ // Check for listener leak
+ if (isObject(this._events[type]) && !this._events[type].warned) {
+ if (!isUndefined(this._maxListeners)) {
+ m = this._maxListeners;
+ } else {
+ m = EventEmitter.defaultMaxListeners;
+ }
+
+ if (m && m > 0 && this._events[type].length > m) {
+ this._events[type].warned = true;
+ console.error('(node) warning: possible EventEmitter memory ' +
+ 'leak detected. %d listeners added. ' +
+ 'Use emitter.setMaxListeners() to increase limit.',
+ this._events[type].length);
+ if (typeof console.trace === 'function') {
+ // not supported in IE 10
+ console.trace();
+ }
+ }
+ }
+
+ return this;
+};
+
+EventEmitter.prototype.on = EventEmitter.prototype.addListener;
+
+EventEmitter.prototype.once = function(type, listener) {
+ if (!isFunction(listener))
+ throw TypeError('listener must be a function');
+
+ var fired = false;
+
+ function g() {
+ this.removeListener(type, g);
+
+ if (!fired) {
+ fired = true;
+ listener.apply(this, arguments);
+ }
+ }
+
+ g.listener = listener;
+ this.on(type, g);
+
+ return this;
+};
+
+// emits a 'removeListener' event iff the listener was removed
+EventEmitter.prototype.removeListener = function(type, listener) {
+ var list, position, length, i;
+
+ if (!isFunction(listener))
+ throw TypeError('listener must be a function');
+
+ if (!this._events || !this._events[type])
+ return this;
+
+ list = this._events[type];
+ length = list.length;
+ position = -1;
+
+ if (list === listener ||
+ (isFunction(list.listener) && list.listener === listener)) {
+ delete this._events[type];
+ if (this._events.removeListener)
+ this.emit('removeListener', type, listener);
+
+ } else if (isObject(list)) {
+ for (i = length; i-- > 0;) {
+ if (list[i] === listener ||
+ (list[i].listener && list[i].listener === listener)) {
+ position = i;
+ break;
+ }
+ }
+
+ if (position < 0)
+ return this;
+
+ if (list.length === 1) {
+ list.length = 0;
+ delete this._events[type];
+ } else {
+ list.splice(position, 1);
+ }
+
+ if (this._events.removeListener)
+ this.emit('removeListener', type, listener);
+ }
+
+ return this;
+};
+
+EventEmitter.prototype.removeAllListeners = function(type) {
+ var key, listeners;
+
+ if (!this._events)
+ return this;
+
+ // not listening for removeListener, no need to emit
+ if (!this._events.removeListener) {
+ if (arguments.length === 0)
+ this._events = {};
+ else if (this._events[type])
+ delete this._events[type];
+ return this;
+ }
+
+ // emit removeListener for all listeners on all events
+ if (arguments.length === 0) {
+ for (key in this._events) {
+ if (key === 'removeListener') continue;
+ this.removeAllListeners(key);
+ }
+ this.removeAllListeners('removeListener');
+ this._events = {};
+ return this;
+ }
+
+ listeners = this._events[type];
+
+ if (isFunction(listeners)) {
+ this.removeListener(type, listeners);
+ } else if (listeners) {
+ // LIFO order
+ while (listeners.length)
+ this.removeListener(type, listeners[listeners.length - 1]);
+ }
+ delete this._events[type];
+
+ return this;
+};
+
+EventEmitter.prototype.listeners = function(type) {
+ var ret;
+ if (!this._events || !this._events[type])
+ ret = [];
+ else if (isFunction(this._events[type]))
+ ret = [this._events[type]];
+ else
+ ret = this._events[type].slice();
+ return ret;
+};
+
+EventEmitter.prototype.listenerCount = function(type) {
+ if (this._events) {
+ var evlistener = this._events[type];
+
+ if (isFunction(evlistener))
+ return 1;
+ else if (evlistener)
+ return evlistener.length;
+ }
+ return 0;
+};
+
+EventEmitter.listenerCount = function(emitter, type) {
+ return emitter.listenerCount(type);
+};
+
+function isFunction(arg) {
+ return typeof arg === 'function';
+}
+
+function isNumber(arg) {
+ return typeof arg === 'number';
+}
+
+function isObject(arg) {
+ return typeof arg === 'object' && arg !== null;
+}
+
+function isUndefined(arg) {
+ return arg === void 0;
+}
+
+},{}],49:[function(require,module,exports){
+(function (process){
+// Growl - Copyright TJ Holowaychuk <tj@vision-media.ca> (MIT Licensed)
+
+/**
+ * Module dependencies.
+ */
+
+var exec = require('child_process').exec
+ , fs = require('fs')
+ , path = require('path')
+ , exists = fs.existsSync || path.existsSync
+ , os = require('os')
+ , quote = JSON.stringify
+ , cmd;
+
+function which(name) {
+ var paths = process.env.PATH.split(':');
+ var loc;
+
+ for (var i = 0, len = paths.length; i < len; ++i) {
+ loc = path.join(paths[i], name);
+ if (exists(loc)) return loc;
+ }
+}
+
+switch(os.type()) {
+ case 'Darwin':
+ if (which('terminal-notifier')) {
+ cmd = {
+ type: "Darwin-NotificationCenter"
+ , pkg: "terminal-notifier"
+ , msg: '-message'
+ , title: '-title'
+ , subtitle: '-subtitle'
+ , icon: '-appIcon'
+ , sound: '-sound'
+ , url: '-open'
+ , priority: {
+ cmd: '-execute'
+ , range: []
+ }
+ };
+ } else {
+ cmd = {
+ type: "Darwin-Growl"
+ , pkg: "growlnotify"
+ , msg: '-m'
+ , sticky: '--sticky'
+ , priority: {
+ cmd: '--priority'
+ , range: [
+ -2
+ , -1
+ , 0
+ , 1
+ , 2
+ , "Very Low"
+ , "Moderate"
+ , "Normal"
+ , "High"
+ , "Emergency"
+ ]
+ }
+ };
+ }
+ break;
+ case 'Linux':
+ if (which('growl')) {
+ cmd = {
+ type: "Linux-Growl"
+ , pkg: "growl"
+ , msg: '-m'
+ , title: '-title'
+ , subtitle: '-subtitle'
+ , host: {
+ cmd: '-H'
+ , hostname: '192.168.33.1'
+ }
+ };
+ } else {
+ cmd = {
+ type: "Linux"
+ , pkg: "notify-send"
+ , msg: ''
+ , sticky: '-t 0'
+ , icon: '-i'
+ , priority: {
+ cmd: '-u'
+ , range: [
+ "low"
+ , "normal"
+ , "critical"
+ ]
+ }
+ };
+ }
+ break;
+ case 'Windows_NT':
+ cmd = {
+ type: "Windows"
+ , pkg: "growlnotify"
+ , msg: ''
+ , sticky: '/s:true'
+ , title: '/t:'
+ , icon: '/i:'
+ , url: '/cu:'
+ , priority: {
+ cmd: '/p:'
+ , range: [
+ -2
+ , -1
+ , 0
+ , 1
+ , 2
+ ]
+ }
+ };
+ break;
+}
+
+/**
+ * Expose `growl`.
+ */
+
+exports = module.exports = growl;
+
+/**
+ * Node-growl version.
+ */
+
+exports.version = '1.4.1'
+
+/**
+ * Send growl notification _msg_ with _options_.
+ *
+ * Options:
+ *
+ * - title Notification title
+ * - sticky Make the notification stick (defaults to false)
+ * - priority Specify an int or named key (default is 0)
+ * - name Application name (defaults to growlnotify)
+ * - sound Sound efect ( in OSx defined in preferences -> sound -> effects) * works only in OSX > 10.8x
+ * - image
+ * - path to an icon sets --iconpath
+ * - path to an image sets --image
+ * - capitalized word sets --appIcon
+ * - filename uses extname as --icon
+ * - otherwise treated as --icon
+ *
+ * Examples:
+ *
+ * growl('New email')
+ * growl('5 new emails', { title: 'Thunderbird' })
+ * growl('5 new emails', { title: 'Thunderbird', sound: 'Purr' })
+ * growl('Email sent', function(){
+ * // ... notification sent
+ * })
+ *
+ * @param {string} msg
+ * @param {object} options
+ * @param {function} fn
+ * @api public
+ */
+
+function growl(msg, options, fn) {
+ var image
+ , args
+ , options = options || {}
+ , fn = fn || function(){};
+
+ if (options.exec) {
+ cmd = {
+ type: "Custom"
+ , pkg: options.exec
+ , range: []
+ };
+ }
+
+ // noop
+ if (!cmd) return fn(new Error('growl not supported on this platform'));
+ args = [cmd.pkg];
+
+ // image
+ if (image = options.image) {
+ switch(cmd.type) {
+ case 'Darwin-Growl':
+ var flag, ext = path.extname(image).substr(1)
+ flag = flag || ext == 'icns' && 'iconpath'
+ flag = flag || /^[A-Z]/.test(image) && 'appIcon'
+ flag = flag || /^png|gif|jpe?g$/.test(ext) && 'image'
+ flag = flag || ext && (image = ext) && 'icon'
+ flag = flag || 'icon'
+ args.push('--' + flag, quote(image))
+ break;
+ case 'Darwin-NotificationCenter':
+ args.push(cmd.icon, quote(image));
+ break;
+ case 'Linux':
+ args.push(cmd.icon, quote(image));
+ // libnotify defaults to sticky, set a hint for transient notifications
+ if (!options.sticky) args.push('--hint=int:transient:1');
+ break;
+ case 'Windows':
+ args.push(cmd.icon + quote(image));
+ break;
+ }
+ }
+
+ // sticky
+ if (options.sticky) args.push(cmd.sticky);
+
+ // priority
+ if (options.priority) {
+ var priority = options.priority + '';
+ var checkindexOf = cmd.priority.range.indexOf(priority);
+ if (~cmd.priority.range.indexOf(priority)) {
+ args.push(cmd.priority, options.priority);
+ }
+ }
+
+ //sound
+ if(options.sound && cmd.type === 'Darwin-NotificationCenter'){
+ args.push(cmd.sound, options.sound)
+ }
+
+ // name
+ if (options.name && cmd.type === "Darwin-Growl") {
+ args.push('--name', options.name);
+ }
+
+ switch(cmd.type) {
+ case 'Darwin-Growl':
+ args.push(cmd.msg);
+ args.push(quote(msg).replace(/\\n/g, '\n'));
+ if (options.title) args.push(quote(options.title));
+ break;
+ case 'Darwin-NotificationCenter':
+ args.push(cmd.msg);
+ var stringifiedMsg = quote(msg);
+ var escapedMsg = stringifiedMsg.replace(/\\n/g, '\n');
+ args.push(escapedMsg);
+ if (options.title) {
+ args.push(cmd.title);
+ args.push(quote(options.title));
+ }
+ if (options.subtitle) {
+ args.push(cmd.subtitle);
+ args.push(quote(options.subtitle));
+ }
+ if (options.url) {
+ args.push(cmd.url);
+ args.push(quote(options.url));
+ }
+ break;
+ case 'Linux-Growl':
+ args.push(cmd.msg);
+ args.push(quote(msg).replace(/\\n/g, '\n'));
+ if (options.title) args.push(quote(options.title));
+ if (cmd.host) {
+ args.push(cmd.host.cmd, cmd.host.hostname)
+ }
+ break;
+ case 'Linux':
+ if (options.title) {
+ args.push(quote(options.title));
+ args.push(cmd.msg);
+ args.push(quote(msg).replace(/\\n/g, '\n'));
+ } else {
+ args.push(quote(msg).replace(/\\n/g, '\n'));
+ }
+ break;
+ case 'Windows':
+ args.push(quote(msg).replace(/\\n/g, '\n'));
+ if (options.title) args.push(cmd.title + quote(options.title));
+ if (options.url) args.push(cmd.url + quote(options.url));
+ break;
+ case 'Custom':
+ args[0] = (function(origCommand) {
+ var message = options.title
+ ? options.title + ': ' + msg
+ : msg;
+ var command = origCommand.replace(/(^|[^%])%s/g, '$1' + quote(message));
+ if (command === origCommand) args.push(quote(message));
+ return command;
+ })(args[0]);
+ break;
+ }
+
+ // execute
+ exec(args.join(' '), fn);
+};
+
+}).call(this,require('_process'))
+},{"_process":67,"child_process":42,"fs":42,"os":65,"path":42}],50:[function(require,module,exports){
+exports.read = function (buffer, offset, isLE, mLen, nBytes) {
+ var e, m
+ var eLen = nBytes * 8 - mLen - 1
+ var eMax = (1 << eLen) - 1
+ var eBias = eMax >> 1
+ var nBits = -7
+ var i = isLE ? (nBytes - 1) : 0
+ var d = isLE ? -1 : 1
+ var s = buffer[offset + i]
+
+ i += d
+
+ e = s & ((1 << (-nBits)) - 1)
+ s >>= (-nBits)
+ nBits += eLen
+ for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
+
+ m = e & ((1 << (-nBits)) - 1)
+ e >>= (-nBits)
+ nBits += mLen
+ for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
+
+ if (e === 0) {
+ e = 1 - eBias
+ } else if (e === eMax) {
+ return m ? NaN : ((s ? -1 : 1) * Infinity)
+ } else {
+ m = m + Math.pow(2, mLen)
+ e = e - eBias
+ }
+ return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
+}
+
+exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
+ var e, m, c
+ var eLen = nBytes * 8 - mLen - 1
+ var eMax = (1 << eLen) - 1
+ var eBias = eMax >> 1
+ var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)
+ var i = isLE ? 0 : (nBytes - 1)
+ var d = isLE ? 1 : -1
+ var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0
+
+ value = Math.abs(value)
+
+ if (isNaN(value) || value === Infinity) {
+ m = isNaN(value) ? 1 : 0
+ e = eMax
+ } else {
+ e = Math.floor(Math.log(value) / Math.LN2)
+ if (value * (c = Math.pow(2, -e)) < 1) {
+ e--
+ c *= 2
+ }
+ if (e + eBias >= 1) {
+ value += rt / c
+ } else {
+ value += rt * Math.pow(2, 1 - eBias)
+ }
+ if (value * c >= 2) {
+ e++
+ c /= 2
+ }
+
+ if (e + eBias >= eMax) {
+ m = 0
+ e = eMax
+ } else if (e + eBias >= 1) {
+ m = (value * c - 1) * Math.pow(2, mLen)
+ e = e + eBias
+ } else {
+ m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)
+ e = 0
+ }
+ }
+
+ for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
+
+ e = (e << mLen) | m
+ eLen += mLen
+ for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
+
+ buffer[offset + i - d] |= s * 128
+}
+
+},{}],51:[function(require,module,exports){
+if (typeof Object.create === 'function') {
+ // implementation from standard node.js 'util' module
+ module.exports = function inherits(ctor, superCtor) {
+ ctor.super_ = superCtor
+ ctor.prototype = Object.create(superCtor.prototype, {
+ constructor: {
+ value: ctor,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ };
+} else {
+ // old school shim for old browsers
+ module.exports = function inherits(ctor, superCtor) {
+ ctor.super_ = superCtor
+ var TempCtor = function () {}
+ TempCtor.prototype = superCtor.prototype
+ ctor.prototype = new TempCtor()
+ ctor.prototype.constructor = ctor
+ }
+}
+
+},{}],52:[function(require,module,exports){
+/**
+ * Determine if an object is Buffer
+ *
+ * Author: Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
+ * License: MIT
+ *
+ * `npm install is-buffer`
+ */
+
+module.exports = function (obj) {
+ return !!(obj != null &&
+ (obj._isBuffer || // For Safari 5-7 (missing Object.prototype.constructor)
+ (obj.constructor &&
+ typeof obj.constructor.isBuffer === 'function' &&
+ obj.constructor.isBuffer(obj))
+ ))
+}
+
+},{}],53:[function(require,module,exports){
+var toString = {}.toString;
+
+module.exports = Array.isArray || function (arr) {
+ return toString.call(arr) == '[object Array]';
+};
+
+},{}],54:[function(require,module,exports){
+(function (global){
+/*! JSON v3.3.2 | http://bestiejs.github.io/json3 | Copyright 2012-2014, Kit Cambridge | http://kit.mit-license.org */
+;(function () {
+ // Detect the `define` function exposed by asynchronous module loaders. The
+ // strict `define` check is necessary for compatibility with `r.js`.
+ var isLoader = false;
+
+ // A set of types used to distinguish objects from primitives.
+ var objectTypes = {
+ "function": true,
+ "object": true
+ };
+
+ // Detect the `exports` object exposed by CommonJS implementations.
+ var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports;
+
+ // Use the `global` object exposed by Node (including Browserify via
+ // `insert-module-globals`), Narwhal, and Ringo as the default context,
+ // and the `window` object in browsers. Rhino exports a `global` function
+ // instead.
+ var root = objectTypes[typeof window] && window || this,
+ freeGlobal = freeExports && objectTypes[typeof module] && module && !module.nodeType && typeof global == "object" && global;
+
+ if (freeGlobal && (freeGlobal["global"] === freeGlobal || freeGlobal["window"] === freeGlobal || freeGlobal["self"] === freeGlobal)) {
+ root = freeGlobal;
+ }
+
+ // Public: Initializes JSON 3 using the given `context` object, attaching the
+ // `stringify` and `parse` functions to the specified `exports` object.
+ function runInContext(context, exports) {
+ context || (context = root["Object"]());
+ exports || (exports = root["Object"]());
+
+ // Native constructor aliases.
+ var Number = context["Number"] || root["Number"],
+ String = context["String"] || root["String"],
+ Object = context["Object"] || root["Object"],
+ Date = context["Date"] || root["Date"],
+ SyntaxError = context["SyntaxError"] || root["SyntaxError"],
+ TypeError = context["TypeError"] || root["TypeError"],
+ Math = context["Math"] || root["Math"],
+ nativeJSON = context["JSON"] || root["JSON"];
+
+ // Delegate to the native `stringify` and `parse` implementations.
+ if (typeof nativeJSON == "object" && nativeJSON) {
+ exports.stringify = nativeJSON.stringify;
+ exports.parse = nativeJSON.parse;
+ }
+
+ // Convenience aliases.
+ var objectProto = Object.prototype,
+ getClass = objectProto.toString,
+ isProperty, forEach, undef;
+
+ // Test the `Date#getUTC*` methods. Based on work by @Yaffle.
+ var isExtended = new Date(-3509827334573292);
+ try {
+ // The `getUTCFullYear`, `Month`, and `Date` methods return nonsensical
+ // results for certain dates in Opera >= 10.53.
+ isExtended = isExtended.getUTCFullYear() == -109252 && isExtended.getUTCMonth() === 0 && isExtended.getUTCDate() === 1 &&
+ // Safari < 2.0.2 stores the internal millisecond time value correctly,
+ // but clips the values returned by the date methods to the range of
+ // signed 32-bit integers ([-2 ** 31, 2 ** 31 - 1]).
+ isExtended.getUTCHours() == 10 && isExtended.getUTCMinutes() == 37 && isExtended.getUTCSeconds() == 6 && isExtended.getUTCMilliseconds() == 708;
+ } catch (exception) {}
+
+ // Internal: Determines whether the native `JSON.stringify` and `parse`
+ // implementations are spec-compliant. Based on work by Ken Snyder.
+ function has(name) {
+ if (has[name] !== undef) {
+ // Return cached feature test result.
+ return has[name];
+ }
+ var isSupported;
+ if (name == "bug-string-char-index") {
+ // IE <= 7 doesn't support accessing string characters using square
+ // bracket notation. IE 8 only supports this for primitives.
+ isSupported = "a"[0] != "a";
+ } else if (name == "json") {
+ // Indicates whether both `JSON.stringify` and `JSON.parse` are
+ // supported.
+ isSupported = has("json-stringify") && has("json-parse");
+ } else {
+ var value, serialized = '{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}';
+ // Test `JSON.stringify`.
+ if (name == "json-stringify") {
+ var stringify = exports.stringify, stringifySupported = typeof stringify == "function" && isExtended;
+ if (stringifySupported) {
+ // A test function object with a custom `toJSON` method.
+ (value = function () {
+ return 1;
+ }).toJSON = value;
+ try {
+ stringifySupported =
+ // Firefox 3.1b1 and b2 serialize string, number, and boolean
+ // primitives as object literals.
+ stringify(0) === "0" &&
+ // FF 3.1b1, b2, and JSON 2 serialize wrapped primitives as object
+ // literals.
+ stringify(new Number()) === "0" &&
+ stringify(new String()) == '""' &&
+ // FF 3.1b1, 2 throw an error if the value is `null`, `undefined`, or
+ // does not define a canonical JSON representation (this applies to
+ // objects with `toJSON` properties as well, *unless* they are nested
+ // within an object or array).
+ stringify(getClass) === undef &&
+ // IE 8 serializes `undefined` as `"undefined"`. Safari <= 5.1.7 and
+ // FF 3.1b3 pass this test.
+ stringify(undef) === undef &&
+ // Safari <= 5.1.7 and FF 3.1b3 throw `Error`s and `TypeError`s,
+ // respectively, if the value is omitted entirely.
+ stringify() === undef &&
+ // FF 3.1b1, 2 throw an error if the given value is not a number,
+ // string, array, object, Boolean, or `null` literal. This applies to
+ // objects with custom `toJSON` methods as well, unless they are nested
+ // inside object or array literals. YUI 3.0.0b1 ignores custom `toJSON`
+ // methods entirely.
+ stringify(value) === "1" &&
+ stringify([value]) == "[1]" &&
+ // Prototype <= 1.6.1 serializes `[undefined]` as `"[]"` instead of
+ // `"[null]"`.
+ stringify([undef]) == "[null]" &&
+ // YUI 3.0.0b1 fails to serialize `null` literals.
+ stringify(null) == "null" &&
+ // FF 3.1b1, 2 halts serialization if an array contains a function:
+ // `[1, true, getClass, 1]` serializes as "[1,true,],". FF 3.1b3
+ // elides non-JSON values from objects and arrays, unless they
+ // define custom `toJSON` methods.
+ stringify([undef, getClass, null]) == "[null,null,null]" &&
+ // Simple serialization test. FF 3.1b1 uses Unicode escape sequences
+ // where character escape codes are expected (e.g., `\b` => `\u0008`).
+ stringify({ "a": [value, true, false, null, "\x00\b\n\f\r\t"] }) == serialized &&
+ // FF 3.1b1 and b2 ignore the `filter` and `width` arguments.
+ stringify(null, value) === "1" &&
+ stringify([1, 2], null, 1) == "[\n 1,\n 2\n]" &&
+ // JSON 2, Prototype <= 1.7, and older WebKit builds incorrectly
+ // serialize extended years.
+ stringify(new Date(-8.64e15)) == '"-271821-04-20T00:00:00.000Z"' &&
+ // The milliseconds are optional in ES 5, but required in 5.1.
+ stringify(new Date(8.64e15)) == '"+275760-09-13T00:00:00.000Z"' &&
+ // Firefox <= 11.0 incorrectly serializes years prior to 0 as negative
+ // four-digit years instead of six-digit years. Credits: @Yaffle.
+ stringify(new Date(-621987552e5)) == '"-000001-01-01T00:00:00.000Z"' &&
+ // Safari <= 5.1.5 and Opera >= 10.53 incorrectly serialize millisecond
+ // values less than 1000. Credits: @Yaffle.
+ stringify(new Date(-1)) == '"1969-12-31T23:59:59.999Z"';
+ } catch (exception) {
+ stringifySupported = false;
+ }
+ }
+ isSupported = stringifySupported;
+ }
+ // Test `JSON.parse`.
+ if (name == "json-parse") {
+ var parse = exports.parse;
+ if (typeof parse == "function") {
+ try {
+ // FF 3.1b1, b2 will throw an exception if a bare literal is provided.
+ // Conforming implementations should also coerce the initial argument to
+ // a string prior to parsing.
+ if (parse("0") === 0 && !parse(false)) {
+ // Simple parsing test.
+ value = parse(serialized);
+ var parseSupported = value["a"].length == 5 && value["a"][0] === 1;
+ if (parseSupported) {
+ try {
+ // Safari <= 5.1.2 and FF 3.1b1 allow unescaped tabs in strings.
+ parseSupported = !parse('"\t"');
+ } catch (exception) {}
+ if (parseSupported) {
+ try {
+ // FF 4.0 and 4.0.1 allow leading `+` signs and leading
+ // decimal points. FF 4.0, 4.0.1, and IE 9-10 also allow
+ // certain octal literals.
+ parseSupported = parse("01") !== 1;
+ } catch (exception) {}
+ }
+ if (parseSupported) {
+ try {
+ // FF 4.0, 4.0.1, and Rhino 1.7R3-R4 allow trailing decimal
+ // points. These environments, along with FF 3.1b1 and 2,
+ // also allow trailing commas in JSON objects and arrays.
+ parseSupported = parse("1.") !== 1;
+ } catch (exception) {}
+ }
+ }
+ }
+ } catch (exception) {
+ parseSupported = false;
+ }
+ }
+ isSupported = parseSupported;
+ }
+ }
+ return has[name] = !!isSupported;
+ }
+
+ if (!has("json")) {
+ // Common `[[Class]]` name aliases.
+ var functionClass = "[object Function]",
+ dateClass = "[object Date]",
+ numberClass = "[object Number]",
+ stringClass = "[object String]",
+ arrayClass = "[object Array]",
+ booleanClass = "[object Boolean]";
+
+ // Detect incomplete support for accessing string characters by index.
+ var charIndexBuggy = has("bug-string-char-index");
+
+ // Define additional utility methods if the `Date` methods are buggy.
+ if (!isExtended) {
+ var floor = Math.floor;
+ // A mapping between the months of the year and the number of days between
+ // January 1st and the first of the respective month.
+ var Months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];
+ // Internal: Calculates the number of days between the Unix epoch and the
+ // first day of the given month.
+ var getDay = function (year, month) {
+ return Months[month] + 365 * (year - 1970) + floor((year - 1969 + (month = +(month > 1))) / 4) - floor((year - 1901 + month) / 100) + floor((year - 1601 + month) / 400);
+ };
+ }
+
+ // Internal: Determines if a property is a direct property of the given
+ // object. Delegates to the native `Object#hasOwnProperty` method.
+ if (!(isProperty = objectProto.hasOwnProperty)) {
+ isProperty = function (property) {
+ var members = {}, constructor;
+ if ((members.__proto__ = null, members.__proto__ = {
+ // The *proto* property cannot be set multiple times in recent
+ // versions of Firefox and SeaMonkey.
+ "toString": 1
+ }, members).toString != getClass) {
+ // Safari <= 2.0.3 doesn't implement `Object#hasOwnProperty`, but
+ // supports the mutable *proto* property.
+ isProperty = function (property) {
+ // Capture and break the object's prototype chain (see section 8.6.2
+ // of the ES 5.1 spec). The parenthesized expression prevents an
+ // unsafe transformation by the Closure Compiler.
+ var original = this.__proto__, result = property in (this.__proto__ = null, this);
+ // Restore the original prototype chain.
+ this.__proto__ = original;
+ return result;
+ };
+ } else {
+ // Capture a reference to the top-level `Object` constructor.
+ constructor = members.constructor;
+ // Use the `constructor` property to simulate `Object#hasOwnProperty` in
+ // other environments.
+ isProperty = function (property) {
+ var parent = (this.constructor || constructor).prototype;
+ return property in this && !(property in parent && this[property] === parent[property]);
+ };
+ }
+ members = null;
+ return isProperty.call(this, property);
+ };
+ }
+
+ // Internal: Normalizes the `for...in` iteration algorithm across
+ // environments. Each enumerated key is yielded to a `callback` function.
+ forEach = function (object, callback) {
+ var size = 0, Properties, members, property;
+
+ // Tests for bugs in the current environment's `for...in` algorithm. The
+ // `valueOf` property inherits the non-enumerable flag from
+ // `Object.prototype` in older versions of IE, Netscape, and Mozilla.
+ (Properties = function () {
+ this.valueOf = 0;
+ }).prototype.valueOf = 0;
+
+ // Iterate over a new instance of the `Properties` class.
+ members = new Properties();
+ for (property in members) {
+ // Ignore all properties inherited from `Object.prototype`.
+ if (isProperty.call(members, property)) {
+ size++;
+ }
+ }
+ Properties = members = null;
+
+ // Normalize the iteration algorithm.
+ if (!size) {
+ // A list of non-enumerable properties inherited from `Object.prototype`.
+ members = ["valueOf", "toString", "toLocaleString", "propertyIsEnumerable", "isPrototypeOf", "hasOwnProperty", "constructor"];
+ // IE <= 8, Mozilla 1.0, and Netscape 6.2 ignore shadowed non-enumerable
+ // properties.
+ forEach = function (object, callback) {
+ var isFunction = getClass.call(object) == functionClass, property, length;
+ var hasProperty = !isFunction && typeof object.constructor != "function" && objectTypes[typeof object.hasOwnProperty] && object.hasOwnProperty || isProperty;
+ for (property in object) {
+ // Gecko <= 1.0 enumerates the `prototype` property of functions under
+ // certain conditions; IE does not.
+ if (!(isFunction && property == "prototype") && hasProperty.call(object, property)) {
+ callback(property);
+ }
+ }
+ // Manually invoke the callback for each non-enumerable property.
+ for (length = members.length; property = members[--length]; hasProperty.call(object, property) && callback(property));
+ };
+ } else if (size == 2) {
+ // Safari <= 2.0.4 enumerates shadowed properties twice.
+ forEach = function (object, callback) {
+ // Create a set of iterated properties.
+ var members = {}, isFunction = getClass.call(object) == functionClass, property;
+ for (property in object) {
+ // Store each property name to prevent double enumeration. The
+ // `prototype` property of functions is not enumerated due to cross-
+ // environment inconsistencies.
+ if (!(isFunction && property == "prototype") && !isProperty.call(members, property) && (members[property] = 1) && isProperty.call(object, property)) {
+ callback(property);
+ }
+ }
+ };
+ } else {
+ // No bugs detected; use the standard `for...in` algorithm.
+ forEach = function (object, callback) {
+ var isFunction = getClass.call(object) == functionClass, property, isConstructor;
+ for (property in object) {
+ if (!(isFunction && property == "prototype") && isProperty.call(object, property) && !(isConstructor = property === "constructor")) {
+ callback(property);
+ }
+ }
+ // Manually invoke the callback for the `constructor` property due to
+ // cross-environment inconsistencies.
+ if (isConstructor || isProperty.call(object, (property = "constructor"))) {
+ callback(property);
+ }
+ };
+ }
+ return forEach(object, callback);
+ };
+
+ // Public: Serializes a JavaScript `value` as a JSON string. The optional
+ // `filter` argument may specify either a function that alters how object and
+ // array members are serialized, or an array of strings and numbers that
+ // indicates which properties should be serialized. The optional `width`
+ // argument may be either a string or number that specifies the indentation
+ // level of the output.
+ if (!has("json-stringify")) {
+ // Internal: A map of control characters and their escaped equivalents.
+ var Escapes = {
+ 92: "\\\\",
+ 34: '\\"',
+ 8: "\\b",
+ 12: "\\f",
+ 10: "\\n",
+ 13: "\\r",
+ 9: "\\t"
+ };
+
+ // Internal: Converts `value` into a zero-padded string such that its
+ // length is at least equal to `width`. The `width` must be <= 6.
+ var leadingZeroes = "000000";
+ var toPaddedString = function (width, value) {
+ // The `|| 0` expression is necessary to work around a bug in
+ // Opera <= 7.54u2 where `0 == -0`, but `String(-0) !== "0"`.
+ return (leadingZeroes + (value || 0)).slice(-width);
+ };
+
+ // Internal: Double-quotes a string `value`, replacing all ASCII control
+ // characters (characters with code unit values between 0 and 31) with
+ // their escaped equivalents. This is an implementation of the
+ // `Quote(value)` operation defined in ES 5.1 section 15.12.3.
+ var unicodePrefix = "\\u00";
+ var quote = function (value) {
+ var result = '"', index = 0, length = value.length, useCharIndex = !charIndexBuggy || length > 10;
+ var symbols = useCharIndex && (charIndexBuggy ? value.split("") : value);
+ for (; index < length; index++) {
+ var charCode = value.charCodeAt(index);
+ // If the character is a control character, append its Unicode or
+ // shorthand escape sequence; otherwise, append the character as-is.
+ switch (charCode) {
+ case 8: case 9: case 10: case 12: case 13: case 34: case 92:
+ result += Escapes[charCode];
+ break;
+ default:
+ if (charCode < 32) {
+ result += unicodePrefix + toPaddedString(2, charCode.toString(16));
+ break;
+ }
+ result += useCharIndex ? symbols[index] : value.charAt(index);
+ }
+ }
+ return result + '"';
+ };
+
+ // Internal: Recursively serializes an object. Implements the
+ // `Str(key, holder)`, `JO(value)`, and `JA(value)` operations.
+ var serialize = function (property, object, callback, properties, whitespace, indentation, stack) {
+ var value, className, year, month, date, time, hours, minutes, seconds, milliseconds, results, element, index, length, prefix, result;
+ try {
+ // Necessary for host object support.
+ value = object[property];
+ } catch (exception) {}
+ if (typeof value == "object" && value) {
+ className = getClass.call(value);
+ if (className == dateClass && !isProperty.call(value, "toJSON")) {
+ if (value > -1 / 0 && value < 1 / 0) {
+ // Dates are serialized according to the `Date#toJSON` method
+ // specified in ES 5.1 section 15.9.5.44. See section 15.9.1.15
+ // for the ISO 8601 date time string format.
+ if (getDay) {
+ // Manually compute the year, month, date, hours, minutes,
+ // seconds, and milliseconds if the `getUTC*` methods are
+ // buggy. Adapted from @Yaffle's `date-shim` project.
+ date = floor(value / 864e5);
+ for (year = floor(date / 365.2425) + 1970 - 1; getDay(year + 1, 0) <= date; year++);
+ for (month = floor((date - getDay(year, 0)) / 30.42); getDay(year, month + 1) <= date; month++);
+ date = 1 + date - getDay(year, month);
+ // The `time` value specifies the time within the day (see ES
+ // 5.1 section 15.9.1.2). The formula `(A % B + B) % B` is used
+ // to compute `A modulo B`, as the `%` operator does not
+ // correspond to the `modulo` operation for negative numbers.
+ time = (value % 864e5 + 864e5) % 864e5;
+ // The hours, minutes, seconds, and milliseconds are obtained by
+ // decomposing the time within the day. See section 15.9.1.10.
+ hours = floor(time / 36e5) % 24;
+ minutes = floor(time / 6e4) % 60;
+ seconds = floor(time / 1e3) % 60;
+ milliseconds = time % 1e3;
+ } else {
+ year = value.getUTCFullYear();
+ month = value.getUTCMonth();
+ date = value.getUTCDate();
+ hours = value.getUTCHours();
+ minutes = value.getUTCMinutes();
+ seconds = value.getUTCSeconds();
+ milliseconds = value.getUTCMilliseconds();
+ }
+ // Serialize extended years correctly.
+ value = (year <= 0 || year >= 1e4 ? (year < 0 ? "-" : "+") + toPaddedString(6, year < 0 ? -year : year) : toPaddedString(4, year)) +
+ "-" + toPaddedString(2, month + 1) + "-" + toPaddedString(2, date) +
+ // Months, dates, hours, minutes, and seconds should have two
+ // digits; milliseconds should have three.
+ "T" + toPaddedString(2, hours) + ":" + toPaddedString(2, minutes) + ":" + toPaddedString(2, seconds) +
+ // Milliseconds are optional in ES 5.0, but required in 5.1.
+ "." + toPaddedString(3, milliseconds) + "Z";
+ } else {
+ value = null;
+ }
+ } else if (typeof value.toJSON == "function" && ((className != numberClass && className != stringClass && className != arrayClass) || isProperty.call(value, "toJSON"))) {
+ // Prototype <= 1.6.1 adds non-standard `toJSON` methods to the
+ // `Number`, `String`, `Date`, and `Array` prototypes. JSON 3
+ // ignores all `toJSON` methods on these objects unless they are
+ // defined directly on an instance.
+ value = value.toJSON(property);
+ }
+ }
+ if (callback) {
+ // If a replacement function was provided, call it to obtain the value
+ // for serialization.
+ value = callback.call(object, property, value);
+ }
+ if (value === null) {
+ return "null";
+ }
+ className = getClass.call(value);
+ if (className == booleanClass) {
+ // Booleans are represented literally.
+ return "" + value;
+ } else if (className == numberClass) {
+ // JSON numbers must be finite. `Infinity` and `NaN` are serialized as
+ // `"null"`.
+ return value > -1 / 0 && value < 1 / 0 ? "" + value : "null";
+ } else if (className == stringClass) {
+ // Strings are double-quoted and escaped.
+ return quote("" + value);
+ }
+ // Recursively serialize objects and arrays.
+ if (typeof value == "object") {
+ // Check for cyclic structures. This is a linear search; performance
+ // is inversely proportional to the number of unique nested objects.
+ for (length = stack.length; length--;) {
+ if (stack[length] === value) {
+ // Cyclic structures cannot be serialized by `JSON.stringify`.
+ throw TypeError();
+ }
+ }
+ // Add the object to the stack of traversed objects.
+ stack.push(value);
+ results = [];
+ // Save the current indentation level and indent one additional level.
+ prefix = indentation;
+ indentation += whitespace;
+ if (className == arrayClass) {
+ // Recursively serialize array elements.
+ for (index = 0, length = value.length; index < length; index++) {
+ element = serialize(index, value, callback, properties, whitespace, indentation, stack);
+ results.push(element === undef ? "null" : element);
+ }
+ result = results.length ? (whitespace ? "[\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "]" : ("[" + results.join(",") + "]")) : "[]";
+ } else {
+ // Recursively serialize object members. Members are selected from
+ // either a user-specified list of property names, or the object
+ // itself.
+ forEach(properties || value, function (property) {
+ var element = serialize(property, value, callback, properties, whitespace, indentation, stack);
+ if (element !== undef) {
+ // According to ES 5.1 section 15.12.3: "If `gap` {whitespace}
+ // is not the empty string, let `member` {quote(property) + ":"}
+ // be the concatenation of `member` and the `space` character."
+ // The "`space` character" refers to the literal space
+ // character, not the `space` {width} argument provided to
+ // `JSON.stringify`.
+ results.push(quote(property) + ":" + (whitespace ? " " : "") + element);
+ }
+ });
+ result = results.length ? (whitespace ? "{\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "}" : ("{" + results.join(",") + "}")) : "{}";
+ }
+ // Remove the object from the traversed object stack.
+ stack.pop();
+ return result;
+ }
+ };
+
+ // Public: `JSON.stringify`. See ES 5.1 section 15.12.3.
+ exports.stringify = function (source, filter, width) {
+ var whitespace, callback, properties, className;
+ if (objectTypes[typeof filter] && filter) {
+ if ((className = getClass.call(filter)) == functionClass) {
+ callback = filter;
+ } else if (className == arrayClass) {
+ // Convert the property names array into a makeshift set.
+ properties = {};
+ for (var index = 0, length = filter.length, value; index < length; value = filter[index++], ((className = getClass.call(value)), className == stringClass || className == numberClass) && (properties[value] = 1));
+ }
+ }
+ if (width) {
+ if ((className = getClass.call(width)) == numberClass) {
+ // Convert the `width` to an integer and create a string containing
+ // `width` number of space characters.
+ if ((width -= width % 1) > 0) {
+ for (whitespace = "", width > 10 && (width = 10); whitespace.length < width; whitespace += " ");
+ }
+ } else if (className == stringClass) {
+ whitespace = width.length <= 10 ? width : width.slice(0, 10);
+ }
+ }
+ // Opera <= 7.54u2 discards the values associated with empty string keys
+ // (`""`) only if they are used directly within an object member list
+ // (e.g., `!("" in { "": 1})`).
+ return serialize("", (value = {}, value[""] = source, value), callback, properties, whitespace, "", []);
+ };
+ }
+
+ // Public: Parses a JSON source string.
+ if (!has("json-parse")) {
+ var fromCharCode = String.fromCharCode;
+
+ // Internal: A map of escaped control characters and their unescaped
+ // equivalents.
+ var Unescapes = {
+ 92: "\\",
+ 34: '"',
+ 47: "/",
+ 98: "\b",
+ 116: "\t",
+ 110: "\n",
+ 102: "\f",
+ 114: "\r"
+ };
+
+ // Internal: Stores the parser state.
+ var Index, Source;
+
+ // Internal: Resets the parser state and throws a `SyntaxError`.
+ var abort = function () {
+ Index = Source = null;
+ throw SyntaxError();
+ };
+
+ // Internal: Returns the next token, or `"$"` if the parser has reached
+ // the end of the source string. A token may be a string, number, `null`
+ // literal, or Boolean literal.
+ var lex = function () {
+ var source = Source, length = source.length, value, begin, position, isSigned, charCode;
+ while (Index < length) {
+ charCode = source.charCodeAt(Index);
+ switch (charCode) {
+ case 9: case 10: case 13: case 32:
+ // Skip whitespace tokens, including tabs, carriage returns, line
+ // feeds, and space characters.
+ Index++;
+ break;
+ case 123: case 125: case 91: case 93: case 58: case 44:
+ // Parse a punctuator token (`{`, `}`, `[`, `]`, `:`, or `,`) at
+ // the current position.
+ value = charIndexBuggy ? source.charAt(Index) : source[Index];
+ Index++;
+ return value;
+ case 34:
+ // `"` delimits a JSON string; advance to the next character and
+ // begin parsing the string. String tokens are prefixed with the
+ // sentinel `@` character to distinguish them from punctuators and
+ // end-of-string tokens.
+ for (value = "@", Index++; Index < length;) {
+ charCode = source.charCodeAt(Index);
+ if (charCode < 32) {
+ // Unescaped ASCII control characters (those with a code unit
+ // less than the space character) are not permitted.
+ abort();
+ } else if (charCode == 92) {
+ // A reverse solidus (`\`) marks the beginning of an escaped
+ // control character (including `"`, `\`, and `/`) or Unicode
+ // escape sequence.
+ charCode = source.charCodeAt(++Index);
+ switch (charCode) {
+ case 92: case 34: case 47: case 98: case 116: case 110: case 102: case 114:
+ // Revive escaped control characters.
+ value += Unescapes[charCode];
+ Index++;
+ break;
+ case 117:
+ // `\u` marks the beginning of a Unicode escape sequence.
+ // Advance to the first character and validate the
+ // four-digit code point.
+ begin = ++Index;
+ for (position = Index + 4; Index < position; Index++) {
+ charCode = source.charCodeAt(Index);
+ // A valid sequence comprises four hexdigits (case-
+ // insensitive) that form a single hexadecimal value.
+ if (!(charCode >= 48 && charCode <= 57 || charCode >= 97 && charCode <= 102 || charCode >= 65 && charCode <= 70)) {
+ // Invalid Unicode escape sequence.
+ abort();
+ }
+ }
+ // Revive the escaped character.
+ value += fromCharCode("0x" + source.slice(begin, Index));
+ break;
+ default:
+ // Invalid escape sequence.
+ abort();
+ }
+ } else {
+ if (charCode == 34) {
+ // An unescaped double-quote character marks the end of the
+ // string.
+ break;
+ }
+ charCode = source.charCodeAt(Index);
+ begin = Index;
+ // Optimize for the common case where a string is valid.
+ while (charCode >= 32 && charCode != 92 && charCode != 34) {
+ charCode = source.charCodeAt(++Index);
+ }
+ // Append the string as-is.
+ value += source.slice(begin, Index);
+ }
+ }
+ if (source.charCodeAt(Index) == 34) {
+ // Advance to the next character and return the revived string.
+ Index++;
+ return value;
+ }
+ // Unterminated string.
+ abort();
+ default:
+ // Parse numbers and literals.
+ begin = Index;
+ // Advance past the negative sign, if one is specified.
+ if (charCode == 45) {
+ isSigned = true;
+ charCode = source.charCodeAt(++Index);
+ }
+ // Parse an integer or floating-point value.
+ if (charCode >= 48 && charCode <= 57) {
+ // Leading zeroes are interpreted as octal literals.
+ if (charCode == 48 && ((charCode = source.charCodeAt(Index + 1)), charCode >= 48 && charCode <= 57)) {
+ // Illegal octal literal.
+ abort();
+ }
+ isSigned = false;
+ // Parse the integer component.
+ for (; Index < length && ((charCode = source.charCodeAt(Index)), charCode >= 48 && charCode <= 57); Index++);
+ // Floats cannot contain a leading decimal point; however, this
+ // case is already accounted for by the parser.
+ if (source.charCodeAt(Index) == 46) {
+ position = ++Index;
+ // Parse the decimal component.
+ for (; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++);
+ if (position == Index) {
+ // Illegal trailing decimal.
+ abort();
+ }
+ Index = position;
+ }
+ // Parse exponents. The `e` denoting the exponent is
+ // case-insensitive.
+ charCode = source.charCodeAt(Index);
+ if (charCode == 101 || charCode == 69) {
+ charCode = source.charCodeAt(++Index);
+ // Skip past the sign following the exponent, if one is
+ // specified.
+ if (charCode == 43 || charCode == 45) {
+ Index++;
+ }
+ // Parse the exponential component.
+ for (position = Index; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++);
+ if (position == Index) {
+ // Illegal empty exponent.
+ abort();
+ }
+ Index = position;
+ }
+ // Coerce the parsed value to a JavaScript number.
+ return +source.slice(begin, Index);
+ }
+ // A negative sign may only precede numbers.
+ if (isSigned) {
+ abort();
+ }
+ // `true`, `false`, and `null` literals.
+ if (source.slice(Index, Index + 4) == "true") {
+ Index += 4;
+ return true;
+ } else if (source.slice(Index, Index + 5) == "false") {
+ Index += 5;
+ return false;
+ } else if (source.slice(Index, Index + 4) == "null") {
+ Index += 4;
+ return null;
+ }
+ // Unrecognized token.
+ abort();
+ }
+ }
+ // Return the sentinel `$` character if the parser has reached the end
+ // of the source string.
+ return "$";
+ };
+
+ // Internal: Parses a JSON `value` token.
+ var get = function (value) {
+ var results, hasMembers;
+ if (value == "$") {
+ // Unexpected end of input.
+ abort();
+ }
+ if (typeof value == "string") {
+ if ((charIndexBuggy ? value.charAt(0) : value[0]) == "@") {
+ // Remove the sentinel `@` character.
+ return value.slice(1);
+ }
+ // Parse object and array literals.
+ if (value == "[") {
+ // Parses a JSON array, returning a new JavaScript array.
+ results = [];
+ for (;; hasMembers || (hasMembers = true)) {
+ value = lex();
+ // A closing square bracket marks the end of the array literal.
+ if (value == "]") {
+ break;
+ }
+ // If the array literal contains elements, the current token
+ // should be a comma separating the previous element from the
+ // next.
+ if (hasMembers) {
+ if (value == ",") {
+ value = lex();
+ if (value == "]") {
+ // Unexpected trailing `,` in array literal.
+ abort();
+ }
+ } else {
+ // A `,` must separate each array element.
+ abort();
+ }
+ }
+ // Elisions and leading commas are not permitted.
+ if (value == ",") {
+ abort();
+ }
+ results.push(get(value));
+ }
+ return results;
+ } else if (value == "{") {
+ // Parses a JSON object, returning a new JavaScript object.
+ results = {};
+ for (;; hasMembers || (hasMembers = true)) {
+ value = lex();
+ // A closing curly brace marks the end of the object literal.
+ if (value == "}") {
+ break;
+ }
+ // If the object literal contains members, the current token
+ // should be a comma separator.
+ if (hasMembers) {
+ if (value == ",") {
+ value = lex();
+ if (value == "}") {
+ // Unexpected trailing `,` in object literal.
+ abort();
+ }
+ } else {
+ // A `,` must separate each object member.
+ abort();
+ }
+ }
+ // Leading commas are not permitted, object property names must be
+ // double-quoted strings, and a `:` must separate each property
+ // name and value.
+ if (value == "," || typeof value != "string" || (charIndexBuggy ? value.charAt(0) : value[0]) != "@" || lex() != ":") {
+ abort();
+ }
+ results[value.slice(1)] = get(lex());
+ }
+ return results;
+ }
+ // Unexpected token encountered.
+ abort();
+ }
+ return value;
+ };
+
+ // Internal: Updates a traversed object member.
+ var update = function (source, property, callback) {
+ var element = walk(source, property, callback);
+ if (element === undef) {
+ delete source[property];
+ } else {
+ source[property] = element;
+ }
+ };
+
+ // Internal: Recursively traverses a parsed JSON object, invoking the
+ // `callback` function for each value. This is an implementation of the
+ // `Walk(holder, name)` operation defined in ES 5.1 section 15.12.2.
+ var walk = function (source, property, callback) {
+ var value = source[property], length;
+ if (typeof value == "object" && value) {
+ // `forEach` can't be used to traverse an array in Opera <= 8.54
+ // because its `Object#hasOwnProperty` implementation returns `false`
+ // for array indices (e.g., `![1, 2, 3].hasOwnProperty("0")`).
+ if (getClass.call(value) == arrayClass) {
+ for (length = value.length; length--;) {
+ update(value, length, callback);
+ }
+ } else {
+ forEach(value, function (property) {
+ update(value, property, callback);
+ });
+ }
+ }
+ return callback.call(source, property, value);
+ };
+
+ // Public: `JSON.parse`. See ES 5.1 section 15.12.2.
+ exports.parse = function (source, callback) {
+ var result, value;
+ Index = 0;
+ Source = "" + source;
+ result = get(lex());
+ // If a JSON string contains multiple tokens, it is invalid.
+ if (lex() != "$") {
+ abort();
+ }
+ // Reset the parser state.
+ Index = Source = null;
+ return callback && getClass.call(callback) == functionClass ? walk((value = {}, value[""] = result, value), "", callback) : result;
+ };
+ }
+ }
+
+ exports["runInContext"] = runInContext;
+ return exports;
+ }
+
+ if (freeExports && !isLoader) {
+ // Export for CommonJS environments.
+ runInContext(root, freeExports);
+ } else {
+ // Export for web browsers and JavaScript engines.
+ var nativeJSON = root.JSON,
+ previousJSON = root["JSON3"],
+ isRestored = false;
+
+ var JSON3 = runInContext(root, (root["JSON3"] = {
+ // Public: Restores the original value of the global `JSON` object and
+ // returns a reference to the `JSON3` object.
+ "noConflict": function () {
+ if (!isRestored) {
+ isRestored = true;
+ root.JSON = nativeJSON;
+ root["JSON3"] = previousJSON;
+ nativeJSON = previousJSON = null;
+ }
+ return JSON3;
+ }
+ }));
+
+ root.JSON = {
+ "parse": JSON3.parse,
+ "stringify": JSON3.stringify
+ };
+ }
+
+ // Export for asynchronous module loaders.
+ if (isLoader) {
+ define(function () {
+ return JSON3;
+ });
+ }
+}).call(this);
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}],55:[function(require,module,exports){
+/**
+ * lodash 3.2.0 (Custom Build) <https://lodash.com/>
+ * Build: `lodash modern modularize exports="npm" -o ./`
+ * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ * Available under MIT license <https://lodash.com/license>
+ */
+var baseCopy = require('lodash._basecopy'),
+ keys = require('lodash.keys');
+
+/**
+ * The base implementation of `_.assign` without support for argument juggling,
+ * multiple sources, and `customizer` functions.
+ *
+ * @private
+ * @param {Object} object The destination object.
+ * @param {Object} source The source object.
+ * @returns {Object} Returns `object`.
+ */
+function baseAssign(object, source) {
+ return source == null
+ ? object
+ : baseCopy(source, keys(source), object);
+}
+
+module.exports = baseAssign;
+
+},{"lodash._basecopy":56,"lodash.keys":63}],56:[function(require,module,exports){
+/**
+ * lodash 3.0.1 (Custom Build) <https://lodash.com/>
+ * Build: `lodash modern modularize exports="npm" -o ./`
+ * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ * Available under MIT license <https://lodash.com/license>
+ */
+
+/**
+ * Copies properties of `source` to `object`.
+ *
+ * @private
+ * @param {Object} source The object to copy properties from.
+ * @param {Array} props The property names to copy.
+ * @param {Object} [object={}] The object to copy properties to.
+ * @returns {Object} Returns `object`.
+ */
+function baseCopy(source, props, object) {
+ object || (object = {});
+
+ var index = -1,
+ length = props.length;
+
+ while (++index < length) {
+ var key = props[index];
+ object[key] = source[key];
+ }
+ return object;
+}
+
+module.exports = baseCopy;
+
+},{}],57:[function(require,module,exports){
+/**
+ * lodash 3.0.3 (Custom Build) <https://lodash.com/>
+ * Build: `lodash modern modularize exports="npm" -o ./`
+ * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ * Available under MIT license <https://lodash.com/license>
+ */
+
+/**
+ * The base implementation of `_.create` without support for assigning
+ * properties to the created object.
+ *
+ * @private
+ * @param {Object} prototype The object to inherit from.
+ * @returns {Object} Returns the new object.
+ */
+var baseCreate = (function() {
+ function object() {}
+ return function(prototype) {
+ if (isObject(prototype)) {
+ object.prototype = prototype;
+ var result = new object;
+ object.prototype = undefined;
+ }
+ return result || {};
+ };
+}());
+
+/**
+ * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
+ * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(1);
+ * // => false
+ */
+function isObject(value) {
+ // Avoid a V8 JIT bug in Chrome 19-20.
+ // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
+ var type = typeof value;
+ return !!value && (type == 'object' || type == 'function');
+}
+
+module.exports = baseCreate;
+
+},{}],58:[function(require,module,exports){
+/**
+ * lodash 3.9.1 (Custom Build) <https://lodash.com/>
+ * Build: `lodash modern modularize exports="npm" -o ./`
+ * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ * Available under MIT license <https://lodash.com/license>
+ */
+
+/** `Object#toString` result references. */
+var funcTag = '[object Function]';
+
+/** Used to detect host constructors (Safari > 5). */
+var reIsHostCtor = /^\[object .+?Constructor\]$/;
+
+/**
+ * Checks if `value` is object-like.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ */
+function isObjectLike(value) {
+ return !!value && typeof value == 'object';
+}
+
+/** Used for native method references. */
+var objectProto = Object.prototype;
+
+/** Used to resolve the decompiled source of functions. */
+var fnToString = Function.prototype.toString;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objToString = objectProto.toString;
+
+/** Used to detect if a method is native. */
+var reIsNative = RegExp('^' +
+ fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&')
+ .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
+);
+
+/**
+ * Gets the native function at `key` of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {string} key The key of the method to get.
+ * @returns {*} Returns the function if it's native, else `undefined`.
+ */
+function getNative(object, key) {
+ var value = object == null ? undefined : object[key];
+ return isNative(value) ? value : undefined;
+}
+
+/**
+ * Checks if `value` is classified as a `Function` object.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+ * @example
+ *
+ * _.isFunction(_);
+ * // => true
+ *
+ * _.isFunction(/abc/);
+ * // => false
+ */
+function isFunction(value) {
+ // The use of `Object#toString` avoids issues with the `typeof` operator
+ // in older versions of Chrome and Safari which return 'function' for regexes
+ // and Safari 8 equivalents which return 'object' for typed array constructors.
+ return isObject(value) && objToString.call(value) == funcTag;
+}
+
+/**
+ * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
+ * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(1);
+ * // => false
+ */
+function isObject(value) {
+ // Avoid a V8 JIT bug in Chrome 19-20.
+ // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
+ var type = typeof value;
+ return !!value && (type == 'object' || type == 'function');
+}
+
+/**
+ * Checks if `value` is a native function.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
+ * @example
+ *
+ * _.isNative(Array.prototype.push);
+ * // => true
+ *
+ * _.isNative(_);
+ * // => false
+ */
+function isNative(value) {
+ if (value == null) {
+ return false;
+ }
+ if (isFunction(value)) {
+ return reIsNative.test(fnToString.call(value));
+ }
+ return isObjectLike(value) && reIsHostCtor.test(value);
+}
+
+module.exports = getNative;
+
+},{}],59:[function(require,module,exports){
+/**
+ * lodash 3.0.9 (Custom Build) <https://lodash.com/>
+ * Build: `lodash modern modularize exports="npm" -o ./`
+ * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ * Available under MIT license <https://lodash.com/license>
+ */
+
+/** Used to detect unsigned integer values. */
+var reIsUint = /^\d+$/;
+
+/**
+ * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer)
+ * of an array-like value.
+ */
+var MAX_SAFE_INTEGER = 9007199254740991;
+
+/**
+ * The base implementation of `_.property` without support for deep paths.
+ *
+ * @private
+ * @param {string} key The key of the property to get.
+ * @returns {Function} Returns the new function.
+ */
+function baseProperty(key) {
+ return function(object) {
+ return object == null ? undefined : object[key];
+ };
+}
+
+/**
+ * Gets the "length" property value of `object`.
+ *
+ * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
+ * that affects Safari on at least iOS 8.1-8.3 ARM64.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {*} Returns the "length" value.
+ */
+var getLength = baseProperty('length');
+
+/**
+ * Checks if `value` is array-like.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
+ */
+function isArrayLike(value) {
+ return value != null && isLength(getLength(value));
+}
+
+/**
+ * Checks if `value` is a valid array-like index.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
+ */
+function isIndex(value, length) {
+ value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;
+ length = length == null ? MAX_SAFE_INTEGER : length;
+ return value > -1 && value % 1 == 0 && value < length;
+}
+
+/**
+ * Checks if the provided arguments are from an iteratee call.
+ *
+ * @private
+ * @param {*} value The potential iteratee value argument.
+ * @param {*} index The potential iteratee index or key argument.
+ * @param {*} object The potential iteratee object argument.
+ * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`.
+ */
+function isIterateeCall(value, index, object) {
+ if (!isObject(object)) {
+ return false;
+ }
+ var type = typeof index;
+ if (type == 'number'
+ ? (isArrayLike(object) && isIndex(index, object.length))
+ : (type == 'string' && index in object)) {
+ var other = object[index];
+ return value === value ? (value === other) : (other !== other);
+ }
+ return false;
+}
+
+/**
+ * Checks if `value` is a valid array-like length.
+ *
+ * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength).
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
+ */
+function isLength(value) {
+ return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+}
+
+/**
+ * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
+ * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(1);
+ * // => false
+ */
+function isObject(value) {
+ // Avoid a V8 JIT bug in Chrome 19-20.
+ // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
+ var type = typeof value;
+ return !!value && (type == 'object' || type == 'function');
+}
+
+module.exports = isIterateeCall;
+
+},{}],60:[function(require,module,exports){
+/**
+ * lodash 3.1.1 (Custom Build) <https://lodash.com/>
+ * Build: `lodash modern modularize exports="npm" -o ./`
+ * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ * Available under MIT license <https://lodash.com/license>
+ */
+var baseAssign = require('lodash._baseassign'),
+ baseCreate = require('lodash._basecreate'),
+ isIterateeCall = require('lodash._isiterateecall');
+
+/**
+ * Creates an object that inherits from the given `prototype` object. If a
+ * `properties` object is provided its own enumerable properties are assigned
+ * to the created object.
+ *
+ * @static
+ * @memberOf _
+ * @category Object
+ * @param {Object} prototype The object to inherit from.
+ * @param {Object} [properties] The properties to assign to the object.
+ * @param- {Object} [guard] Enables use as a callback for functions like `_.map`.
+ * @returns {Object} Returns the new object.
+ * @example
+ *
+ * function Shape() {
+ * this.x = 0;
+ * this.y = 0;
+ * }
+ *
+ * function Circle() {
+ * Shape.call(this);
+ * }
+ *
+ * Circle.prototype = _.create(Shape.prototype, {
+ * 'constructor': Circle
+ * });
+ *
+ * var circle = new Circle;
+ * circle instanceof Circle;
+ * // => true
+ *
+ * circle instanceof Shape;
+ * // => true
+ */
+function create(prototype, properties, guard) {
+ var result = baseCreate(prototype);
+ if (guard && isIterateeCall(prototype, properties, guard)) {
+ properties = undefined;
+ }
+ return properties ? baseAssign(result, properties) : result;
+}
+
+module.exports = create;
+
+},{"lodash._baseassign":55,"lodash._basecreate":57,"lodash._isiterateecall":59}],61:[function(require,module,exports){
+/**
+ * lodash 3.0.8 (Custom Build) <https://lodash.com/>
+ * Build: `lodash modularize exports="npm" -o ./`
+ * Copyright 2012-2016 The Dojo Foundation <http://dojofoundation.org/>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ * Available under MIT license <https://lodash.com/license>
+ */
+
+/** Used as references for various `Number` constants. */
+var MAX_SAFE_INTEGER = 9007199254740991;
+
+/** `Object#toString` result references. */
+var argsTag = '[object Arguments]',
+ funcTag = '[object Function]',
+ genTag = '[object GeneratorFunction]';
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objectToString = objectProto.toString;
+
+/** Built-in value references. */
+var propertyIsEnumerable = objectProto.propertyIsEnumerable;
+
+/**
+ * The base implementation of `_.property` without support for deep paths.
+ *
+ * @private
+ * @param {string} key The key of the property to get.
+ * @returns {Function} Returns the new function.
+ */
+function baseProperty(key) {
+ return function(object) {
+ return object == null ? undefined : object[key];
+ };
+}
+
+/**
+ * Gets the "length" property value of `object`.
+ *
+ * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
+ * that affects Safari on at least iOS 8.1-8.3 ARM64.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {*} Returns the "length" value.
+ */
+var getLength = baseProperty('length');
+
+/**
+ * Checks if `value` is likely an `arguments` object.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+ * @example
+ *
+ * _.isArguments(function() { return arguments; }());
+ * // => true
+ *
+ * _.isArguments([1, 2, 3]);
+ * // => false
+ */
+function isArguments(value) {
+ // Safari 8.1 incorrectly makes `arguments.callee` enumerable in strict mode.
+ return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&
+ (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
+}
+
+/**
+ * Checks if `value` is array-like. A value is considered array-like if it's
+ * not a function and has a `value.length` that's an integer greater than or
+ * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
+ * @example
+ *
+ * _.isArrayLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isArrayLike(document.body.children);
+ * // => true
+ *
+ * _.isArrayLike('abc');
+ * // => true
+ *
+ * _.isArrayLike(_.noop);
+ * // => false
+ */
+function isArrayLike(value) {
+ return value != null && isLength(getLength(value)) && !isFunction(value);
+}
+
+/**
+ * This method is like `_.isArrayLike` except that it also checks if `value`
+ * is an object.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an array-like object, else `false`.
+ * @example
+ *
+ * _.isArrayLikeObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isArrayLikeObject(document.body.children);
+ * // => true
+ *
+ * _.isArrayLikeObject('abc');
+ * // => false
+ *
+ * _.isArrayLikeObject(_.noop);
+ * // => false
+ */
+function isArrayLikeObject(value) {
+ return isObjectLike(value) && isArrayLike(value);
+}
+
+/**
+ * Checks if `value` is classified as a `Function` object.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+ * @example
+ *
+ * _.isFunction(_);
+ * // => true
+ *
+ * _.isFunction(/abc/);
+ * // => false
+ */
+function isFunction(value) {
+ // The use of `Object#toString` avoids issues with the `typeof` operator
+ // in Safari 8 which returns 'object' for typed array and weak map constructors,
+ // and PhantomJS 1.9 which returns 'function' for `NodeList` instances.
+ var tag = isObject(value) ? objectToString.call(value) : '';
+ return tag == funcTag || tag == genTag;
+}
+
+/**
+ * Checks if `value` is a valid array-like length.
+ *
+ * **Note:** This function is loosely based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
+ * @example
+ *
+ * _.isLength(3);
+ * // => true
+ *
+ * _.isLength(Number.MIN_VALUE);
+ * // => false
+ *
+ * _.isLength(Infinity);
+ * // => false
+ *
+ * _.isLength('3');
+ * // => false
+ */
+function isLength(value) {
+ return typeof value == 'number' &&
+ value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+}
+
+/**
+ * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
+ * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(_.noop);
+ * // => true
+ *
+ * _.isObject(null);
+ * // => false
+ */
+function isObject(value) {
+ var type = typeof value;
+ return !!value && (type == 'object' || type == 'function');
+}
+
+/**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+function isObjectLike(value) {
+ return !!value && typeof value == 'object';
+}
+
+module.exports = isArguments;
+
+},{}],62:[function(require,module,exports){
+/**
+ * lodash 3.0.4 (Custom Build) <https://lodash.com/>
+ * Build: `lodash modern modularize exports="npm" -o ./`
+ * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ * Available under MIT license <https://lodash.com/license>
+ */
+
+/** `Object#toString` result references. */
+var arrayTag = '[object Array]',
+ funcTag = '[object Function]';
+
+/** Used to detect host constructors (Safari > 5). */
+var reIsHostCtor = /^\[object .+?Constructor\]$/;
+
+/**
+ * Checks if `value` is object-like.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ */
+function isObjectLike(value) {
+ return !!value && typeof value == 'object';
+}
+
+/** Used for native method references. */
+var objectProto = Object.prototype;
+
+/** Used to resolve the decompiled source of functions. */
+var fnToString = Function.prototype.toString;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var objToString = objectProto.toString;
+
+/** Used to detect if a method is native. */
+var reIsNative = RegExp('^' +
+ fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&')
+ .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'
+);
+
+/* Native method references for those with the same name as other `lodash` methods. */
+var nativeIsArray = getNative(Array, 'isArray');
+
+/**
+ * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)
+ * of an array-like value.
+ */
+var MAX_SAFE_INTEGER = 9007199254740991;
+
+/**
+ * Gets the native function at `key` of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {string} key The key of the method to get.
+ * @returns {*} Returns the function if it's native, else `undefined`.
+ */
+function getNative(object, key) {
+ var value = object == null ? undefined : object[key];
+ return isNative(value) ? value : undefined;
+}
+
+/**
+ * Checks if `value` is a valid array-like length.
+ *
+ * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
+ */
+function isLength(value) {
+ return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+}
+
+/**
+ * Checks if `value` is classified as an `Array` object.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+ * @example
+ *
+ * _.isArray([1, 2, 3]);
+ * // => true
+ *
+ * _.isArray(function() { return arguments; }());
+ * // => false
+ */
+var isArray = nativeIsArray || function(value) {
+ return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag;
+};
+
+/**
+ * Checks if `value` is classified as a `Function` object.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`.
+ * @example
+ *
+ * _.isFunction(_);
+ * // => true
+ *
+ * _.isFunction(/abc/);
+ * // => false
+ */
+function isFunction(value) {
+ // The use of `Object#toString` avoids issues with the `typeof` operator
+ // in older versions of Chrome and Safari which return 'function' for regexes
+ // and Safari 8 equivalents which return 'object' for typed array constructors.
+ return isObject(value) && objToString.call(value) == funcTag;
+}
+
+/**
+ * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
+ * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(1);
+ * // => false
+ */
+function isObject(value) {
+ // Avoid a V8 JIT bug in Chrome 19-20.
+ // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
+ var type = typeof value;
+ return !!value && (type == 'object' || type == 'function');
+}
+
+/**
+ * Checks if `value` is a native function.
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a native function, else `false`.
+ * @example
+ *
+ * _.isNative(Array.prototype.push);
+ * // => true
+ *
+ * _.isNative(_);
+ * // => false
+ */
+function isNative(value) {
+ if (value == null) {
+ return false;
+ }
+ if (isFunction(value)) {
+ return reIsNative.test(fnToString.call(value));
+ }
+ return isObjectLike(value) && reIsHostCtor.test(value);
+}
+
+module.exports = isArray;
+
+},{}],63:[function(require,module,exports){
+/**
+ * lodash 3.1.2 (Custom Build) <https://lodash.com/>
+ * Build: `lodash modern modularize exports="npm" -o ./`
+ * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ * Available under MIT license <https://lodash.com/license>
+ */
+var getNative = require('lodash._getnative'),
+ isArguments = require('lodash.isarguments'),
+ isArray = require('lodash.isarray');
+
+/** Used to detect unsigned integer values. */
+var reIsUint = /^\d+$/;
+
+/** Used for native method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var hasOwnProperty = objectProto.hasOwnProperty;
+
+/* Native method references for those with the same name as other `lodash` methods. */
+var nativeKeys = getNative(Object, 'keys');
+
+/**
+ * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer)
+ * of an array-like value.
+ */
+var MAX_SAFE_INTEGER = 9007199254740991;
+
+/**
+ * The base implementation of `_.property` without support for deep paths.
+ *
+ * @private
+ * @param {string} key The key of the property to get.
+ * @returns {Function} Returns the new function.
+ */
+function baseProperty(key) {
+ return function(object) {
+ return object == null ? undefined : object[key];
+ };
+}
+
+/**
+ * Gets the "length" property value of `object`.
+ *
+ * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792)
+ * that affects Safari on at least iOS 8.1-8.3 ARM64.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {*} Returns the "length" value.
+ */
+var getLength = baseProperty('length');
+
+/**
+ * Checks if `value` is array-like.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
+ */
+function isArrayLike(value) {
+ return value != null && isLength(getLength(value));
+}
+
+/**
+ * Checks if `value` is a valid array-like index.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
+ */
+function isIndex(value, length) {
+ value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1;
+ length = length == null ? MAX_SAFE_INTEGER : length;
+ return value > -1 && value % 1 == 0 && value < length;
+}
+
+/**
+ * Checks if `value` is a valid array-like length.
+ *
+ * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength).
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
+ */
+function isLength(value) {
+ return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+}
+
+/**
+ * A fallback implementation of `Object.keys` which creates an array of the
+ * own enumerable property names of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ */
+function shimKeys(object) {
+ var props = keysIn(object),
+ propsLength = props.length,
+ length = propsLength && object.length;
+
+ var allowIndexes = !!length && isLength(length) &&
+ (isArray(object) || isArguments(object));
+
+ var index = -1,
+ result = [];
+
+ while (++index < propsLength) {
+ var key = props[index];
+ if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) {
+ result.push(key);
+ }
+ }
+ return result;
+}
+
+/**
+ * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`.
+ * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(1);
+ * // => false
+ */
+function isObject(value) {
+ // Avoid a V8 JIT bug in Chrome 19-20.
+ // See https://code.google.com/p/v8/issues/detail?id=2291 for more details.
+ var type = typeof value;
+ return !!value && (type == 'object' || type == 'function');
+}
+
+/**
+ * Creates an array of the own enumerable property names of `object`.
+ *
+ * **Note:** Non-object values are coerced to objects. See the
+ * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys)
+ * for more details.
+ *
+ * @static
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ * @example
+ *
+ * function Foo() {
+ * this.a = 1;
+ * this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.keys(new Foo);
+ * // => ['a', 'b'] (iteration order is not guaranteed)
+ *
+ * _.keys('hi');
+ * // => ['0', '1']
+ */
+var keys = !nativeKeys ? shimKeys : function(object) {
+ var Ctor = object == null ? undefined : object.constructor;
+ if ((typeof Ctor == 'function' && Ctor.prototype === object) ||
+ (typeof object != 'function' && isArrayLike(object))) {
+ return shimKeys(object);
+ }
+ return isObject(object) ? nativeKeys(object) : [];
+};
+
+/**
+ * Creates an array of the own and inherited enumerable property names of `object`.
+ *
+ * **Note:** Non-object values are coerced to objects.
+ *
+ * @static
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ * @example
+ *
+ * function Foo() {
+ * this.a = 1;
+ * this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.keysIn(new Foo);
+ * // => ['a', 'b', 'c'] (iteration order is not guaranteed)
+ */
+function keysIn(object) {
+ if (object == null) {
+ return [];
+ }
+ if (!isObject(object)) {
+ object = Object(object);
+ }
+ var length = object.length;
+ length = (length && isLength(length) &&
+ (isArray(object) || isArguments(object)) && length) || 0;
+
+ var Ctor = object.constructor,
+ index = -1,
+ isProto = typeof Ctor == 'function' && Ctor.prototype === object,
+ result = Array(length),
+ skipIndexes = length > 0;
+
+ while (++index < length) {
+ result[index] = (index + '');
+ }
+ for (var key in object) {
+ if (!(skipIndexes && isIndex(key, length)) &&
+ !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {
+ result.push(key);
+ }
+ }
+ return result;
+}
+
+module.exports = keys;
+
+},{"lodash._getnative":58,"lodash.isarguments":61,"lodash.isarray":62}],64:[function(require,module,exports){
+(function (process){
+var path = require('path');
+var fs = require('fs');
+var _0777 = parseInt('0777', 8);
+
+module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;
+
+function mkdirP (p, opts, f, made) {
+ if (typeof opts === 'function') {
+ f = opts;
+ opts = {};
+ }
+ else if (!opts || typeof opts !== 'object') {
+ opts = { mode: opts };
+ }
+
+ var mode = opts.mode;
+ var xfs = opts.fs || fs;
+
+ if (mode === undefined) {
+ mode = _0777 & (~process.umask());
+ }
+ if (!made) made = null;
+
+ var cb = f || function () {};
+ p = path.resolve(p);
+
+ xfs.mkdir(p, mode, function (er) {
+ if (!er) {
+ made = made || p;
+ return cb(null, made);
+ }
+ switch (er.code) {
+ case 'ENOENT':
+ mkdirP(path.dirname(p), opts, function (er, made) {
+ if (er) cb(er, made);
+ else mkdirP(p, opts, cb, made);
+ });
+ break;
+
+ // In the case of any other error, just see if there's a dir
+ // there already. If so, then hooray! If not, then something
+ // is borked.
+ default:
+ xfs.stat(p, function (er2, stat) {
+ // if the stat fails, then that's super weird.
+ // let the original error be the failure reason.
+ if (er2 || !stat.isDirectory()) cb(er, made)
+ else cb(null, made);
+ });
+ break;
+ }
+ });
+}
+
+mkdirP.sync = function sync (p, opts, made) {
+ if (!opts || typeof opts !== 'object') {
+ opts = { mode: opts };
+ }
+
+ var mode = opts.mode;
+ var xfs = opts.fs || fs;
+
+ if (mode === undefined) {
+ mode = _0777 & (~process.umask());
+ }
+ if (!made) made = null;
+
+ p = path.resolve(p);
+
+ try {
+ xfs.mkdirSync(p, mode);
+ made = made || p;
+ }
+ catch (err0) {
+ switch (err0.code) {
+ case 'ENOENT' :
+ made = sync(path.dirname(p), opts, made);
+ sync(p, opts, made);
+ break;
+
+ // In the case of any other error, just see if there's a dir
+ // there already. If so, then hooray! If not, then something
+ // is borked.
+ default:
+ var stat;
+ try {
+ stat = xfs.statSync(p);
+ }
+ catch (err1) {
+ throw err0;
+ }
+ if (!stat.isDirectory()) throw err0;
+ break;
+ }
+ }
+
+ return made;
+};
+
+}).call(this,require('_process'))
+},{"_process":67,"fs":42,"path":42}],65:[function(require,module,exports){
+exports.endianness = function () { return 'LE' };
+
+exports.hostname = function () {
+ if (typeof location !== 'undefined') {
+ return location.hostname
+ }
+ else return '';
+};
+
+exports.loadavg = function () { return [] };
+
+exports.uptime = function () { return 0 };
+
+exports.freemem = function () {
+ return Number.MAX_VALUE;
+};
+
+exports.totalmem = function () {
+ return Number.MAX_VALUE;
+};
+
+exports.cpus = function () { return [] };
+
+exports.type = function () { return 'Browser' };
+
+exports.release = function () {
+ if (typeof navigator !== 'undefined') {
+ return navigator.appVersion;
+ }
+ return '';
+};
+
+exports.networkInterfaces
+= exports.getNetworkInterfaces
+= function () { return {} };
+
+exports.arch = function () { return 'javascript' };
+
+exports.platform = function () { return 'browser' };
+
+exports.tmpdir = exports.tmpDir = function () {
+ return '/tmp';
+};
+
+exports.EOL = '\n';
+
+},{}],66:[function(require,module,exports){
+(function (process){
+'use strict';
+
+if (!process.version ||
+ process.version.indexOf('v0.') === 0 ||
+ process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
+ module.exports = nextTick;
+} else {
+ module.exports = process.nextTick;
+}
+
+function nextTick(fn, arg1, arg2, arg3) {
+ if (typeof fn !== 'function') {
+ throw new TypeError('"callback" argument must be a function');
+ }
+ var len = arguments.length;
+ var args, i;
+ switch (len) {
+ case 0:
+ case 1:
+ return process.nextTick(fn);
+ case 2:
+ return process.nextTick(function afterTickOne() {
+ fn.call(null, arg1);
+ });
+ case 3:
+ return process.nextTick(function afterTickTwo() {
+ fn.call(null, arg1, arg2);
+ });
+ case 4:
+ return process.nextTick(function afterTickThree() {
+ fn.call(null, arg1, arg2, arg3);
+ });
+ default:
+ args = new Array(len - 1);
+ i = 0;
+ while (i < args.length) {
+ args[i++] = arguments[i];
+ }
+ return process.nextTick(function afterTick() {
+ fn.apply(null, args);
+ });
+ }
+}
+
+}).call(this,require('_process'))
+},{"_process":67}],67:[function(require,module,exports){
+// shim for using process in browser
+
+var process = module.exports = {};
+
+// cached from whatever global is present so that test runners that stub it
+// don't break things. But we need to wrap it in a try catch in case it is
+// wrapped in strict mode code which doesn't define any globals. It's inside a
+// function because try/catches deoptimize in certain engines.
+
+var cachedSetTimeout;
+var cachedClearTimeout;
+
+(function () {
+ try {
+ cachedSetTimeout = setTimeout;
+ } catch (e) {
+ cachedSetTimeout = function () {
+ throw new Error('setTimeout is not defined');
+ }
+ }
+ try {
+ cachedClearTimeout = clearTimeout;
+ } catch (e) {
+ cachedClearTimeout = function () {
+ throw new Error('clearTimeout is not defined');
+ }
+ }
+} ())
+var queue = [];
+var draining = false;
+var currentQueue;
+var queueIndex = -1;
+
+function cleanUpNextTick() {
+ if (!draining || !currentQueue) {
+ return;
+ }
+ draining = false;
+ if (currentQueue.length) {
+ queue = currentQueue.concat(queue);
+ } else {
+ queueIndex = -1;
+ }
+ if (queue.length) {
+ drainQueue();
+ }
+}
+
+function drainQueue() {
+ if (draining) {
+ return;
+ }
+ var timeout = cachedSetTimeout(cleanUpNextTick);
+ draining = true;
+
+ var len = queue.length;
+ while(len) {
+ currentQueue = queue;
+ queue = [];
+ while (++queueIndex < len) {
+ if (currentQueue) {
+ currentQueue[queueIndex].run();
+ }
+ }
+ queueIndex = -1;
+ len = queue.length;
+ }
+ currentQueue = null;
+ draining = false;
+ cachedClearTimeout(timeout);
+}
+
+process.nextTick = function (fun) {
+ var args = new Array(arguments.length - 1);
+ if (arguments.length > 1) {
+ for (var i = 1; i < arguments.length; i++) {
+ args[i - 1] = arguments[i];
+ }
+ }
+ queue.push(new Item(fun, args));
+ if (queue.length === 1 && !draining) {
+ cachedSetTimeout(drainQueue, 0);
+ }
+};
+
+// v8 likes predictible objects
+function Item(fun, array) {
+ this.fun = fun;
+ this.array = array;
+}
+Item.prototype.run = function () {
+ this.fun.apply(null, this.array);
+};
+process.title = 'browser';
+process.browser = true;
+process.env = {};
+process.argv = [];
+process.version = ''; // empty string to avoid regexp issues
+process.versions = {};
+
+function noop() {}
+
+process.on = noop;
+process.addListener = noop;
+process.once = noop;
+process.off = noop;
+process.removeListener = noop;
+process.removeAllListeners = noop;
+process.emit = noop;
+
+process.binding = function (name) {
+ throw new Error('process.binding is not supported');
+};
+
+process.cwd = function () { return '/' };
+process.chdir = function (dir) {
+ throw new Error('process.chdir is not supported');
+};
+process.umask = function() { return 0; };
+
+},{}],68:[function(require,module,exports){
+module.exports = require("./lib/_stream_duplex.js")
+
+},{"./lib/_stream_duplex.js":69}],69:[function(require,module,exports){
+// a duplex stream is just a stream that is both readable and writable.
+// Since JS doesn't have multiple prototypal inheritance, this class
+// prototypally inherits from Readable, and then parasitically from
+// Writable.
+
+'use strict';
+
+/*<replacement>*/
+
+var objectKeys = Object.keys || function (obj) {
+ var keys = [];
+ for (var key in obj) {
+ keys.push(key);
+ }return keys;
+};
+/*</replacement>*/
+
+module.exports = Duplex;
+
+/*<replacement>*/
+var processNextTick = require('process-nextick-args');
+/*</replacement>*/
+
+/*<replacement>*/
+var util = require('core-util-is');
+util.inherits = require('inherits');
+/*</replacement>*/
+
+var Readable = require('./_stream_readable');
+var Writable = require('./_stream_writable');
+
+util.inherits(Duplex, Readable);
+
+var keys = objectKeys(Writable.prototype);
+for (var v = 0; v < keys.length; v++) {
+ var method = keys[v];
+ if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
+}
+
+function Duplex(options) {
+ if (!(this instanceof Duplex)) return new Duplex(options);
+
+ Readable.call(this, options);
+ Writable.call(this, options);
+
+ if (options && options.readable === false) this.readable = false;
+
+ if (options && options.writable === false) this.writable = false;
+
+ this.allowHalfOpen = true;
+ if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
+
+ this.once('end', onend);
+}
+
+// the no-half-open enforcer
+function onend() {
+ // if we allow half-open state, or if the writable side ended,
+ // then we're ok.
+ if (this.allowHalfOpen || this._writableState.ended) return;
+
+ // no more data can be written.
+ // But allow more writes to happen in this tick.
+ processNextTick(onEndNT, this);
+}
+
+function onEndNT(self) {
+ self.end();
+}
+
+function forEach(xs, f) {
+ for (var i = 0, l = xs.length; i < l; i++) {
+ f(xs[i], i);
+ }
+}
+},{"./_stream_readable":71,"./_stream_writable":73,"core-util-is":45,"inherits":51,"process-nextick-args":66}],70:[function(require,module,exports){
+// a passthrough stream.
+// basically just the most minimal sort of Transform stream.
+// Every written chunk gets output as-is.
+
+'use strict';
+
+module.exports = PassThrough;
+
+var Transform = require('./_stream_transform');
+
+/*<replacement>*/
+var util = require('core-util-is');
+util.inherits = require('inherits');
+/*</replacement>*/
+
+util.inherits(PassThrough, Transform);
+
+function PassThrough(options) {
+ if (!(this instanceof PassThrough)) return new PassThrough(options);
+
+ Transform.call(this, options);
+}
+
+PassThrough.prototype._transform = function (chunk, encoding, cb) {
+ cb(null, chunk);
+};
+},{"./_stream_transform":72,"core-util-is":45,"inherits":51}],71:[function(require,module,exports){
+(function (process){
+'use strict';
+
+module.exports = Readable;
+
+/*<replacement>*/
+var processNextTick = require('process-nextick-args');
+/*</replacement>*/
+
+/*<replacement>*/
+var isArray = require('isarray');
+/*</replacement>*/
+
+Readable.ReadableState = ReadableState;
+
+/*<replacement>*/
+var EE = require('events').EventEmitter;
+
+var EElistenerCount = function (emitter, type) {
+ return emitter.listeners(type).length;
+};
+/*</replacement>*/
+
+/*<replacement>*/
+var Stream;
+(function () {
+ try {
+ Stream = require('st' + 'ream');
+ } catch (_) {} finally {
+ if (!Stream) Stream = require('events').EventEmitter;
+ }
+})();
+/*</replacement>*/
+
+var Buffer = require('buffer').Buffer;
+/*<replacement>*/
+var bufferShim = require('buffer-shims');
+/*</replacement>*/
+
+/*<replacement>*/
+var util = require('core-util-is');
+util.inherits = require('inherits');
+/*</replacement>*/
+
+/*<replacement>*/
+var debugUtil = require('util');
+var debug = void 0;
+if (debugUtil && debugUtil.debuglog) {
+ debug = debugUtil.debuglog('stream');
+} else {
+ debug = function () {};
+}
+/*</replacement>*/
+
+var StringDecoder;
+
+util.inherits(Readable, Stream);
+
+var hasPrependListener = typeof EE.prototype.prependListener === 'function';
+
+function prependListener(emitter, event, fn) {
+ if (hasPrependListener) return emitter.prependListener(event, fn);
+
+ // This is a brutally ugly hack to make sure that our error handler
+ // is attached before any userland ones. NEVER DO THIS. This is here
+ // only because this code needs to continue to work with older versions
+ // of Node.js that do not include the prependListener() method. The goal
+ // is to eventually remove this hack.
+ if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
+}
+
+var Duplex;
+function ReadableState(options, stream) {
+ Duplex = Duplex || require('./_stream_duplex');
+
+ options = options || {};
+
+ // object stream flag. Used to make read(n) ignore n and to
+ // make all the buffer merging and length checks go away
+ this.objectMode = !!options.objectMode;
+
+ if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
+
+ // the point at which it stops calling _read() to fill the buffer
+ // Note: 0 is a valid value, means "don't call _read preemptively ever"
+ var hwm = options.highWaterMark;
+ var defaultHwm = this.objectMode ? 16 : 16 * 1024;
+ this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
+
+ // cast to ints.
+ this.highWaterMark = ~ ~this.highWaterMark;
+
+ this.buffer = [];
+ this.length = 0;
+ this.pipes = null;
+ this.pipesCount = 0;
+ this.flowing = null;
+ this.ended = false;
+ this.endEmitted = false;
+ this.reading = false;
+
+ // a flag to be able to tell if the onwrite cb is called immediately,
+ // or on a later tick. We set this to true at first, because any
+ // actions that shouldn't happen until "later" should generally also
+ // not happen before the first write call.
+ this.sync = true;
+
+ // whenever we return null, then we set a flag to say
+ // that we're awaiting a 'readable' event emission.
+ this.needReadable = false;
+ this.emittedReadable = false;
+ this.readableListening = false;
+ this.resumeScheduled = false;
+
+ // Crypto is kind of old and crusty. Historically, its default string
+ // encoding is 'binary' so we have to make this configurable.
+ // Everything else in the universe uses 'utf8', though.
+ this.defaultEncoding = options.defaultEncoding || 'utf8';
+
+ // when piping, we only care about 'readable' events that happen
+ // after read()ing all the bytes and not getting any pushback.
+ this.ranOut = false;
+
+ // the number of writers that are awaiting a drain event in .pipe()s
+ this.awaitDrain = 0;
+
+ // if true, a maybeReadMore has been scheduled
+ this.readingMore = false;
+
+ this.decoder = null;
+ this.encoding = null;
+ if (options.encoding) {
+ if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
+ this.decoder = new StringDecoder(options.encoding);
+ this.encoding = options.encoding;
+ }
+}
+
+var Duplex;
+function Readable(options) {
+ Duplex = Duplex || require('./_stream_duplex');
+
+ if (!(this instanceof Readable)) return new Readable(options);
+
+ this._readableState = new ReadableState(options, this);
+
+ // legacy
+ this.readable = true;
+
+ if (options && typeof options.read === 'function') this._read = options.read;
+
+ Stream.call(this);
+}
+
+// Manually shove something into the read() buffer.
+// This returns true if the highWaterMark has not been hit yet,
+// similar to how Writable.write() returns true if you should
+// write() some more.
+Readable.prototype.push = function (chunk, encoding) {
+ var state = this._readableState;
+
+ if (!state.objectMode && typeof chunk === 'string') {
+ encoding = encoding || state.defaultEncoding;
+ if (encoding !== state.encoding) {
+ chunk = bufferShim.from(chunk, encoding);
+ encoding = '';
+ }
+ }
+
+ return readableAddChunk(this, state, chunk, encoding, false);
+};
+
+// Unshift should *always* be something directly out of read()
+Readable.prototype.unshift = function (chunk) {
+ var state = this._readableState;
+ return readableAddChunk(this, state, chunk, '', true);
+};
+
+Readable.prototype.isPaused = function () {
+ return this._readableState.flowing === false;
+};
+
+function readableAddChunk(stream, state, chunk, encoding, addToFront) {
+ var er = chunkInvalid(state, chunk);
+ if (er) {
+ stream.emit('error', er);
+ } else if (chunk === null) {
+ state.reading = false;
+ onEofChunk(stream, state);
+ } else if (state.objectMode || chunk && chunk.length > 0) {
+ if (state.ended && !addToFront) {
+ var e = new Error('stream.push() after EOF');
+ stream.emit('error', e);
+ } else if (state.endEmitted && addToFront) {
+ var _e = new Error('stream.unshift() after end event');
+ stream.emit('error', _e);
+ } else {
+ var skipAdd;
+ if (state.decoder && !addToFront && !encoding) {
+ chunk = state.decoder.write(chunk);
+ skipAdd = !state.objectMode && chunk.length === 0;
+ }
+
+ if (!addToFront) state.reading = false;
+
+ // Don't add to the buffer if we've decoded to an empty string chunk and
+ // we're not in object mode
+ if (!skipAdd) {
+ // if we want the data now, just emit it.
+ if (state.flowing && state.length === 0 && !state.sync) {
+ stream.emit('data', chunk);
+ stream.read(0);
+ } else {
+ // update the buffer info.
+ state.length += state.objectMode ? 1 : chunk.length;
+ if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
+
+ if (state.needReadable) emitReadable(stream);
+ }
+ }
+
+ maybeReadMore(stream, state);
+ }
+ } else if (!addToFront) {
+ state.reading = false;
+ }
+
+ return needMoreData(state);
+}
+
+// if it's past the high water mark, we can push in some more.
+// Also, if we have no data yet, we can stand some
+// more bytes. This is to work around cases where hwm=0,
+// such as the repl. Also, if the push() triggered a
+// readable event, and the user called read(largeNumber) such that
+// needReadable was set, then we ought to push more, so that another
+// 'readable' event will be triggered.
+function needMoreData(state) {
+ return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
+}
+
+// backwards compatibility.
+Readable.prototype.setEncoding = function (enc) {
+ if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;
+ this._readableState.decoder = new StringDecoder(enc);
+ this._readableState.encoding = enc;
+ return this;
+};
+
+// Don't raise the hwm > 8MB
+var MAX_HWM = 0x800000;
+function computeNewHighWaterMark(n) {
+ if (n >= MAX_HWM) {
+ n = MAX_HWM;
+ } else {
+ // Get the next highest power of 2
+ n--;
+ n |= n >>> 1;
+ n |= n >>> 2;
+ n |= n >>> 4;
+ n |= n >>> 8;
+ n |= n >>> 16;
+ n++;
+ }
+ return n;
+}
+
+function howMuchToRead(n, state) {
+ if (state.length === 0 && state.ended) return 0;
+
+ if (state.objectMode) return n === 0 ? 0 : 1;
+
+ if (n === null || isNaN(n)) {
+ // only flow one buffer at a time
+ if (state.flowing && state.buffer.length) return state.buffer[0].length;else return state.length;
+ }
+
+ if (n <= 0) return 0;
+
+ // If we're asking for more than the target buffer level,
+ // then raise the water mark. Bump up to the next highest
+ // power of 2, to prevent increasing it excessively in tiny
+ // amounts.
+ if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
+
+ // don't have that much. return null, unless we've ended.
+ if (n > state.length) {
+ if (!state.ended) {
+ state.needReadable = true;
+ return 0;
+ } else {
+ return state.length;
+ }
+ }
+
+ return n;
+}
+
+// you can override either this method, or the async _read(n) below.
+Readable.prototype.read = function (n) {
+ debug('read', n);
+ var state = this._readableState;
+ var nOrig = n;
+
+ if (typeof n !== 'number' || n > 0) state.emittedReadable = false;
+
+ // if we're doing read(0) to trigger a readable event, but we
+ // already have a bunch of data in the buffer, then just trigger
+ // the 'readable' event and move on.
+ if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
+ debug('read: emitReadable', state.length, state.ended);
+ if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
+ return null;
+ }
+
+ n = howMuchToRead(n, state);
+
+ // if we've ended, and we're now clear, then finish it up.
+ if (n === 0 && state.ended) {
+ if (state.length === 0) endReadable(this);
+ return null;
+ }
+
+ // All the actual chunk generation logic needs to be
+ // *below* the call to _read. The reason is that in certain
+ // synthetic stream cases, such as passthrough streams, _read
+ // may be a completely synchronous operation which may change
+ // the state of the read buffer, providing enough data when
+ // before there was *not* enough.
+ //
+ // So, the steps are:
+ // 1. Figure out what the state of things will be after we do
+ // a read from the buffer.
+ //
+ // 2. If that resulting state will trigger a _read, then call _read.
+ // Note that this may be asynchronous, or synchronous. Yes, it is
+ // deeply ugly to write APIs this way, but that still doesn't mean
+ // that the Readable class should behave improperly, as streams are
+ // designed to be sync/async agnostic.
+ // Take note if the _read call is sync or async (ie, if the read call
+ // has returned yet), so that we know whether or not it's safe to emit
+ // 'readable' etc.
+ //
+ // 3. Actually pull the requested chunks out of the buffer and return.
+
+ // if we need a readable event, then we need to do some reading.
+ var doRead = state.needReadable;
+ debug('need readable', doRead);
+
+ // if we currently have less than the highWaterMark, then also read some
+ if (state.length === 0 || state.length - n < state.highWaterMark) {
+ doRead = true;
+ debug('length less than watermark', doRead);
+ }
+
+ // however, if we've ended, then there's no point, and if we're already
+ // reading, then it's unnecessary.
+ if (state.ended || state.reading) {
+ doRead = false;
+ debug('reading or ended', doRead);
+ }
+
+ if (doRead) {
+ debug('do read');
+ state.reading = true;
+ state.sync = true;
+ // if the length is currently zero, then we *need* a readable event.
+ if (state.length === 0) state.needReadable = true;
+ // call internal read method
+ this._read(state.highWaterMark);
+ state.sync = false;
+ }
+
+ // If _read pushed data synchronously, then `reading` will be false,
+ // and we need to re-evaluate how much data we can return to the user.
+ if (doRead && !state.reading) n = howMuchToRead(nOrig, state);
+
+ var ret;
+ if (n > 0) ret = fromList(n, state);else ret = null;
+
+ if (ret === null) {
+ state.needReadable = true;
+ n = 0;
+ }
+
+ state.length -= n;
+
+ // If we have nothing in the buffer, then we want to know
+ // as soon as we *do* get something into the buffer.
+ if (state.length === 0 && !state.ended) state.needReadable = true;
+
+ // If we tried to read() past the EOF, then emit end on the next tick.
+ if (nOrig !== n && state.ended && state.length === 0) endReadable(this);
+
+ if (ret !== null) this.emit('data', ret);
+
+ return ret;
+};
+
+function chunkInvalid(state, chunk) {
+ var er = null;
+ if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
+ er = new TypeError('Invalid non-string/buffer chunk');
+ }
+ return er;
+}
+
+function onEofChunk(stream, state) {
+ if (state.ended) return;
+ if (state.decoder) {
+ var chunk = state.decoder.end();
+ if (chunk && chunk.length) {
+ state.buffer.push(chunk);
+ state.length += state.objectMode ? 1 : chunk.length;
+ }
+ }
+ state.ended = true;
+
+ // emit 'readable' now to make sure it gets picked up.
+ emitReadable(stream);
+}
+
+// Don't emit readable right away in sync mode, because this can trigger
+// another read() call => stack overflow. This way, it might trigger
+// a nextTick recursion warning, but that's not so bad.
+function emitReadable(stream) {
+ var state = stream._readableState;
+ state.needReadable = false;
+ if (!state.emittedReadable) {
+ debug('emitReadable', state.flowing);
+ state.emittedReadable = true;
+ if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
+ }
+}
+
+function emitReadable_(stream) {
+ debug('emit readable');
+ stream.emit('readable');
+ flow(stream);
+}
+
+// at this point, the user has presumably seen the 'readable' event,
+// and called read() to consume some data. that may have triggered
+// in turn another _read(n) call, in which case reading = true if
+// it's in progress.
+// However, if we're not ended, or reading, and the length < hwm,
+// then go ahead and try to read some more preemptively.
+function maybeReadMore(stream, state) {
+ if (!state.readingMore) {
+ state.readingMore = true;
+ processNextTick(maybeReadMore_, stream, state);
+ }
+}
+
+function maybeReadMore_(stream, state) {
+ var len = state.length;
+ while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
+ debug('maybeReadMore read 0');
+ stream.read(0);
+ if (len === state.length)
+ // didn't get any data, stop spinning.
+ break;else len = state.length;
+ }
+ state.readingMore = false;
+}
+
+// abstract method. to be overridden in specific implementation classes.
+// call cb(er, data) where data is <= n in length.
+// for virtual (non-string, non-buffer) streams, "length" is somewhat
+// arbitrary, and perhaps not very meaningful.
+Readable.prototype._read = function (n) {
+ this.emit('error', new Error('not implemented'));
+};
+
+Readable.prototype.pipe = function (dest, pipeOpts) {
+ var src = this;
+ var state = this._readableState;
+
+ switch (state.pipesCount) {
+ case 0:
+ state.pipes = dest;
+ break;
+ case 1:
+ state.pipes = [state.pipes, dest];
+ break;
+ default:
+ state.pipes.push(dest);
+ break;
+ }
+ state.pipesCount += 1;
+ debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
+
+ var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
+
+ var endFn = doEnd ? onend : cleanup;
+ if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
+
+ dest.on('unpipe', onunpipe);
+ function onunpipe(readable) {
+ debug('onunpipe');
+ if (readable === src) {
+ cleanup();
+ }
+ }
+
+ function onend() {
+ debug('onend');
+ dest.end();
+ }
+
+ // when the dest drains, it reduces the awaitDrain counter
+ // on the source. This would be more elegant with a .once()
+ // handler in flow(), but adding and removing repeatedly is
+ // too slow.
+ var ondrain = pipeOnDrain(src);
+ dest.on('drain', ondrain);
+
+ var cleanedUp = false;
+ function cleanup() {
+ debug('cleanup');
+ // cleanup event handlers once the pipe is broken
+ dest.removeListener('close', onclose);
+ dest.removeListener('finish', onfinish);
+ dest.removeListener('drain', ondrain);
+ dest.removeListener('error', onerror);
+ dest.removeListener('unpipe', onunpipe);
+ src.removeListener('end', onend);
+ src.removeListener('end', cleanup);
+ src.removeListener('data', ondata);
+
+ cleanedUp = true;
+
+ // if the reader is waiting for a drain event from this
+ // specific writer, then it would cause it to never start
+ // flowing again.
+ // So, if this is awaiting a drain, then we just call it now.
+ // If we don't know, then assume that we are waiting for one.
+ if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
+ }
+
+ src.on('data', ondata);
+ function ondata(chunk) {
+ debug('ondata');
+ var ret = dest.write(chunk);
+ if (false === ret) {
+ // If the user unpiped during `dest.write()`, it is possible
+ // to get stuck in a permanently paused state if that write
+ // also returned false.
+ // => Check whether `dest` is still a piping destination.
+ if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
+ debug('false write response, pause', src._readableState.awaitDrain);
+ src._readableState.awaitDrain++;
+ }
+ src.pause();
+ }
+ }
+
+ // if the dest has an error, then stop piping into it.
+ // however, don't suppress the throwing behavior for this.
+ function onerror(er) {
+ debug('onerror', er);
+ unpipe();
+ dest.removeListener('error', onerror);
+ if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
+ }
+
+ // Make sure our error handler is attached before userland ones.
+ prependListener(dest, 'error', onerror);
+
+ // Both close and finish should trigger unpipe, but only once.
+ function onclose() {
+ dest.removeListener('finish', onfinish);
+ unpipe();
+ }
+ dest.once('close', onclose);
+ function onfinish() {
+ debug('onfinish');
+ dest.removeListener('close', onclose);
+ unpipe();
+ }
+ dest.once('finish', onfinish);
+
+ function unpipe() {
+ debug('unpipe');
+ src.unpipe(dest);
+ }
+
+ // tell the dest that it's being piped to
+ dest.emit('pipe', src);
+
+ // start the flow if it hasn't been started already.
+ if (!state.flowing) {
+ debug('pipe resume');
+ src.resume();
+ }
+
+ return dest;
+};
+
+function pipeOnDrain(src) {
+ return function () {
+ var state = src._readableState;
+ debug('pipeOnDrain', state.awaitDrain);
+ if (state.awaitDrain) state.awaitDrain--;
+ if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
+ state.flowing = true;
+ flow(src);
+ }
+ };
+}
+
+Readable.prototype.unpipe = function (dest) {
+ var state = this._readableState;
+
+ // if we're not piping anywhere, then do nothing.
+ if (state.pipesCount === 0) return this;
+
+ // just one destination. most common case.
+ if (state.pipesCount === 1) {
+ // passed in one, but it's not the right one.
+ if (dest && dest !== state.pipes) return this;
+
+ if (!dest) dest = state.pipes;
+
+ // got a match.
+ state.pipes = null;
+ state.pipesCount = 0;
+ state.flowing = false;
+ if (dest) dest.emit('unpipe', this);
+ return this;
+ }
+
+ // slow case. multiple pipe destinations.
+
+ if (!dest) {
+ // remove all.
+ var dests = state.pipes;
+ var len = state.pipesCount;
+ state.pipes = null;
+ state.pipesCount = 0;
+ state.flowing = false;
+
+ for (var _i = 0; _i < len; _i++) {
+ dests[_i].emit('unpipe', this);
+ }return this;
+ }
+
+ // try to find the right one.
+ var i = indexOf(state.pipes, dest);
+ if (i === -1) return this;
+
+ state.pipes.splice(i, 1);
+ state.pipesCount -= 1;
+ if (state.pipesCount === 1) state.pipes = state.pipes[0];
+
+ dest.emit('unpipe', this);
+
+ return this;
+};
+
+// set up data events if they are asked for
+// Ensure readable listeners eventually get something
+Readable.prototype.on = function (ev, fn) {
+ var res = Stream.prototype.on.call(this, ev, fn);
+
+ // If listening to data, and it has not explicitly been paused,
+ // then call resume to start the flow of data on the next tick.
+ if (ev === 'data' && false !== this._readableState.flowing) {
+ this.resume();
+ }
+
+ if (ev === 'readable' && !this._readableState.endEmitted) {
+ var state = this._readableState;
+ if (!state.readableListening) {
+ state.readableListening = true;
+ state.emittedReadable = false;
+ state.needReadable = true;
+ if (!state.reading) {
+ processNextTick(nReadingNextTick, this);
+ } else if (state.length) {
+ emitReadable(this, state);
+ }
+ }
+ }
+
+ return res;
+};
+Readable.prototype.addListener = Readable.prototype.on;
+
+function nReadingNextTick(self) {
+ debug('readable nexttick read 0');
+ self.read(0);
+}
+
+// pause() and resume() are remnants of the legacy readable stream API
+// If the user uses them, then switch into old mode.
+Readable.prototype.resume = function () {
+ var state = this._readableState;
+ if (!state.flowing) {
+ debug('resume');
+ state.flowing = true;
+ resume(this, state);
+ }
+ return this;
+};
+
+function resume(stream, state) {
+ if (!state.resumeScheduled) {
+ state.resumeScheduled = true;
+ processNextTick(resume_, stream, state);
+ }
+}
+
+function resume_(stream, state) {
+ if (!state.reading) {
+ debug('resume read 0');
+ stream.read(0);
+ }
+
+ state.resumeScheduled = false;
+ stream.emit('resume');
+ flow(stream);
+ if (state.flowing && !state.reading) stream.read(0);
+}
+
+Readable.prototype.pause = function () {
+ debug('call pause flowing=%j', this._readableState.flowing);
+ if (false !== this._readableState.flowing) {
+ debug('pause');
+ this._readableState.flowing = false;
+ this.emit('pause');
+ }
+ return this;
+};
+
+function flow(stream) {
+ var state = stream._readableState;
+ debug('flow', state.flowing);
+ if (state.flowing) {
+ do {
+ var chunk = stream.read();
+ } while (null !== chunk && state.flowing);
+ }
+}
+
+// wrap an old-style stream as the async data source.
+// This is *not* part of the readable stream interface.
+// It is an ugly unfortunate mess of history.
+Readable.prototype.wrap = function (stream) {
+ var state = this._readableState;
+ var paused = false;
+
+ var self = this;
+ stream.on('end', function () {
+ debug('wrapped end');
+ if (state.decoder && !state.ended) {
+ var chunk = state.decoder.end();
+ if (chunk && chunk.length) self.push(chunk);
+ }
+
+ self.push(null);
+ });
+
+ stream.on('data', function (chunk) {
+ debug('wrapped data');
+ if (state.decoder) chunk = state.decoder.write(chunk);
+
+ // don't skip over falsy values in objectMode
+ if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
+
+ var ret = self.push(chunk);
+ if (!ret) {
+ paused = true;
+ stream.pause();
+ }
+ });
+
+ // proxy all the other methods.
+ // important when wrapping filters and duplexes.
+ for (var i in stream) {
+ if (this[i] === undefined && typeof stream[i] === 'function') {
+ this[i] = function (method) {
+ return function () {
+ return stream[method].apply(stream, arguments);
+ };
+ }(i);
+ }
+ }
+
+ // proxy certain important events.
+ var events = ['error', 'close', 'destroy', 'pause', 'resume'];
+ forEach(events, function (ev) {
+ stream.on(ev, self.emit.bind(self, ev));
+ });
+
+ // when we try to consume some more bytes, simply unpause the
+ // underlying stream.
+ self._read = function (n) {
+ debug('wrapped _read', n);
+ if (paused) {
+ paused = false;
+ stream.resume();
+ }
+ };
+
+ return self;
+};
+
+// exposed for testing purposes only.
+Readable._fromList = fromList;
+
+// Pluck off n bytes from an array of buffers.
+// Length is the combined lengths of all the buffers in the list.
+function fromList(n, state) {
+ var list = state.buffer;
+ var length = state.length;
+ var stringMode = !!state.decoder;
+ var objectMode = !!state.objectMode;
+ var ret;
+
+ // nothing in the list, definitely empty.
+ if (list.length === 0) return null;
+
+ if (length === 0) ret = null;else if (objectMode) ret = list.shift();else if (!n || n >= length) {
+ // read it all, truncate the array.
+ if (stringMode) ret = list.join('');else if (list.length === 1) ret = list[0];else ret = Buffer.concat(list, length);
+ list.length = 0;
+ } else {
+ // read just some of it.
+ if (n < list[0].length) {
+ // just take a part of the first list item.
+ // slice is the same for buffers and strings.
+ var buf = list[0];
+ ret = buf.slice(0, n);
+ list[0] = buf.slice(n);
+ } else if (n === list[0].length) {
+ // first list is a perfect match
+ ret = list.shift();
+ } else {
+ // complex case.
+ // we have enough to cover it, but it spans past the first buffer.
+ if (stringMode) ret = '';else ret = bufferShim.allocUnsafe(n);
+
+ var c = 0;
+ for (var i = 0, l = list.length; i < l && c < n; i++) {
+ var _buf = list[0];
+ var cpy = Math.min(n - c, _buf.length);
+
+ if (stringMode) ret += _buf.slice(0, cpy);else _buf.copy(ret, c, 0, cpy);
+
+ if (cpy < _buf.length) list[0] = _buf.slice(cpy);else list.shift();
+
+ c += cpy;
+ }
+ }
+ }
+
+ return ret;
+}
+
+function endReadable(stream) {
+ var state = stream._readableState;
+
+ // If we get here before consuming all the bytes, then that is a
+ // bug in node. Should never happen.
+ if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
+
+ if (!state.endEmitted) {
+ state.ended = true;
+ processNextTick(endReadableNT, state, stream);
+ }
+}
+
+function endReadableNT(state, stream) {
+ // Check that we didn't get one last unshift.
+ if (!state.endEmitted && state.length === 0) {
+ state.endEmitted = true;
+ stream.readable = false;
+ stream.emit('end');
+ }
+}
+
+function forEach(xs, f) {
+ for (var i = 0, l = xs.length; i < l; i++) {
+ f(xs[i], i);
+ }
+}
+
+function indexOf(xs, x) {
+ for (var i = 0, l = xs.length; i < l; i++) {
+ if (xs[i] === x) return i;
+ }
+ return -1;
+}
+}).call(this,require('_process'))
+},{"./_stream_duplex":69,"_process":67,"buffer":44,"buffer-shims":43,"core-util-is":45,"events":48,"inherits":51,"isarray":53,"process-nextick-args":66,"string_decoder/":79,"util":40}],72:[function(require,module,exports){
+// a transform stream is a readable/writable stream where you do
+// something with the data. Sometimes it's called a "filter",
+// but that's not a great name for it, since that implies a thing where
+// some bits pass through, and others are simply ignored. (That would
+// be a valid example of a transform, of course.)
+//
+// While the output is causally related to the input, it's not a
+// necessarily symmetric or synchronous transformation. For example,
+// a zlib stream might take multiple plain-text writes(), and then
+// emit a single compressed chunk some time in the future.
+//
+// Here's how this works:
+//
+// The Transform stream has all the aspects of the readable and writable
+// stream classes. When you write(chunk), that calls _write(chunk,cb)
+// internally, and returns false if there's a lot of pending writes
+// buffered up. When you call read(), that calls _read(n) until
+// there's enough pending readable data buffered up.
+//
+// In a transform stream, the written data is placed in a buffer. When
+// _read(n) is called, it transforms the queued up data, calling the
+// buffered _write cb's as it consumes chunks. If consuming a single
+// written chunk would result in multiple output chunks, then the first
+// outputted bit calls the readcb, and subsequent chunks just go into
+// the read buffer, and will cause it to emit 'readable' if necessary.
+//
+// This way, back-pressure is actually determined by the reading side,
+// since _read has to be called to start processing a new chunk. However,
+// a pathological inflate type of transform can cause excessive buffering
+// here. For example, imagine a stream where every byte of input is
+// interpreted as an integer from 0-255, and then results in that many
+// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
+// 1kb of data being output. In this case, you could write a very small
+// amount of input, and end up with a very large amount of output. In
+// such a pathological inflating mechanism, there'd be no way to tell
+// the system to stop doing the transform. A single 4MB write could
+// cause the system to run out of memory.
+//
+// However, even in such a pathological case, only a single written chunk
+// would be consumed, and then the rest would wait (un-transformed) until
+// the results of the previous transformed chunk were consumed.
+
+'use strict';
+
+module.exports = Transform;
+
+var Duplex = require('./_stream_duplex');
+
+/*<replacement>*/
+var util = require('core-util-is');
+util.inherits = require('inherits');
+/*</replacement>*/
+
+util.inherits(Transform, Duplex);
+
+function TransformState(stream) {
+ this.afterTransform = function (er, data) {
+ return afterTransform(stream, er, data);
+ };
+
+ this.needTransform = false;
+ this.transforming = false;
+ this.writecb = null;
+ this.writechunk = null;
+ this.writeencoding = null;
+}
+
+function afterTransform(stream, er, data) {
+ var ts = stream._transformState;
+ ts.transforming = false;
+
+ var cb = ts.writecb;
+
+ if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
+
+ ts.writechunk = null;
+ ts.writecb = null;
+
+ if (data !== null && data !== undefined) stream.push(data);
+
+ cb(er);
+
+ var rs = stream._readableState;
+ rs.reading = false;
+ if (rs.needReadable || rs.length < rs.highWaterMark) {
+ stream._read(rs.highWaterMark);
+ }
+}
+
+function Transform(options) {
+ if (!(this instanceof Transform)) return new Transform(options);
+
+ Duplex.call(this, options);
+
+ this._transformState = new TransformState(this);
+
+ // when the writable side finishes, then flush out anything remaining.
+ var stream = this;
+
+ // start out asking for a readable event once data is transformed.
+ this._readableState.needReadable = true;
+
+ // we have implemented the _read method, and done the other things
+ // that Readable wants before the first _read call, so unset the
+ // sync guard flag.
+ this._readableState.sync = false;
+
+ if (options) {
+ if (typeof options.transform === 'function') this._transform = options.transform;
+
+ if (typeof options.flush === 'function') this._flush = options.flush;
+ }
+
+ this.once('prefinish', function () {
+ if (typeof this._flush === 'function') this._flush(function (er) {
+ done(stream, er);
+ });else done(stream);
+ });
+}
+
+Transform.prototype.push = function (chunk, encoding) {
+ this._transformState.needTransform = false;
+ return Duplex.prototype.push.call(this, chunk, encoding);
+};
+
+// This is the part where you do stuff!
+// override this function in implementation classes.
+// 'chunk' is an input chunk.
+//
+// Call `push(newChunk)` to pass along transformed output
+// to the readable side. You may call 'push' zero or more times.
+//
+// Call `cb(err)` when you are done with this chunk. If you pass
+// an error, then that'll put the hurt on the whole operation. If you
+// never call cb(), then you'll never get another chunk.
+Transform.prototype._transform = function (chunk, encoding, cb) {
+ throw new Error('Not implemented');
+};
+
+Transform.prototype._write = function (chunk, encoding, cb) {
+ var ts = this._transformState;
+ ts.writecb = cb;
+ ts.writechunk = chunk;
+ ts.writeencoding = encoding;
+ if (!ts.transforming) {
+ var rs = this._readableState;
+ if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
+ }
+};
+
+// Doesn't matter what the args are here.
+// _transform does all the work.
+// That we got here means that the readable side wants more data.
+Transform.prototype._read = function (n) {
+ var ts = this._transformState;
+
+ if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
+ ts.transforming = true;
+ this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
+ } else {
+ // mark that we need a transform, so that any data that comes in
+ // will get processed, now that we've asked for it.
+ ts.needTransform = true;
+ }
+};
+
+function done(stream, er) {
+ if (er) return stream.emit('error', er);
+
+ // if there's nothing in the write buffer, then that means
+ // that nothing more will ever be provided
+ var ws = stream._writableState;
+ var ts = stream._transformState;
+
+ if (ws.length) throw new Error('Calling transform done when ws.length != 0');
+
+ if (ts.transforming) throw new Error('Calling transform done when still transforming');
+
+ return stream.push(null);
+}
+},{"./_stream_duplex":69,"core-util-is":45,"inherits":51}],73:[function(require,module,exports){
+(function (process){
+// A bit simpler than readable streams.
+// Implement an async ._write(chunk, encoding, cb), and it'll handle all
+// the drain event emission and buffering.
+
+'use strict';
+
+module.exports = Writable;
+
+/*<replacement>*/
+var processNextTick = require('process-nextick-args');
+/*</replacement>*/
+
+/*<replacement>*/
+var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
+/*</replacement>*/
+
+Writable.WritableState = WritableState;
+
+/*<replacement>*/
+var util = require('core-util-is');
+util.inherits = require('inherits');
+/*</replacement>*/
+
+/*<replacement>*/
+var internalUtil = {
+ deprecate: require('util-deprecate')
+};
+/*</replacement>*/
+
+/*<replacement>*/
+var Stream;
+(function () {
+ try {
+ Stream = require('st' + 'ream');
+ } catch (_) {} finally {
+ if (!Stream) Stream = require('events').EventEmitter;
+ }
+})();
+/*</replacement>*/
+
+var Buffer = require('buffer').Buffer;
+/*<replacement>*/
+var bufferShim = require('buffer-shims');
+/*</replacement>*/
+
+util.inherits(Writable, Stream);
+
+function nop() {}
+
+function WriteReq(chunk, encoding, cb) {
+ this.chunk = chunk;
+ this.encoding = encoding;
+ this.callback = cb;
+ this.next = null;
+}
+
+var Duplex;
+function WritableState(options, stream) {
+ Duplex = Duplex || require('./_stream_duplex');
+
+ options = options || {};
+
+ // object stream flag to indicate whether or not this stream
+ // contains buffers or objects.
+ this.objectMode = !!options.objectMode;
+
+ if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
+
+ // the point at which write() starts returning false
+ // Note: 0 is a valid value, means that we always return false if
+ // the entire buffer is not flushed immediately on write()
+ var hwm = options.highWaterMark;
+ var defaultHwm = this.objectMode ? 16 : 16 * 1024;
+ this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
+
+ // cast to ints.
+ this.highWaterMark = ~ ~this.highWaterMark;
+
+ this.needDrain = false;
+ // at the start of calling end()
+ this.ending = false;
+ // when end() has been called, and returned
+ this.ended = false;
+ // when 'finish' is emitted
+ this.finished = false;
+
+ // should we decode strings into buffers before passing to _write?
+ // this is here so that some node-core streams can optimize string
+ // handling at a lower level.
+ var noDecode = options.decodeStrings === false;
+ this.decodeStrings = !noDecode;
+
+ // Crypto is kind of old and crusty. Historically, its default string
+ // encoding is 'binary' so we have to make this configurable.
+ // Everything else in the universe uses 'utf8', though.
+ this.defaultEncoding = options.defaultEncoding || 'utf8';
+
+ // not an actual buffer we keep track of, but a measurement
+ // of how much we're waiting to get pushed to some underlying
+ // socket or file.
+ this.length = 0;
+
+ // a flag to see when we're in the middle of a write.
+ this.writing = false;
+
+ // when true all writes will be buffered until .uncork() call
+ this.corked = 0;
+
+ // a flag to be able to tell if the onwrite cb is called immediately,
+ // or on a later tick. We set this to true at first, because any
+ // actions that shouldn't happen until "later" should generally also
+ // not happen before the first write call.
+ this.sync = true;
+
+ // a flag to know if we're processing previously buffered items, which
+ // may call the _write() callback in the same tick, so that we don't
+ // end up in an overlapped onwrite situation.
+ this.bufferProcessing = false;
+
+ // the callback that's passed to _write(chunk,cb)
+ this.onwrite = function (er) {
+ onwrite(stream, er);
+ };
+
+ // the callback that the user supplies to write(chunk,encoding,cb)
+ this.writecb = null;
+
+ // the amount that is being written when _write is called.
+ this.writelen = 0;
+
+ this.bufferedRequest = null;
+ this.lastBufferedRequest = null;
+
+ // number of pending user-supplied write callbacks
+ // this must be 0 before 'finish' can be emitted
+ this.pendingcb = 0;
+
+ // emit prefinish if the only thing we're waiting for is _write cbs
+ // This is relevant for synchronous Transform streams
+ this.prefinished = false;
+
+ // True if the error was already emitted and should not be thrown again
+ this.errorEmitted = false;
+
+ // count buffered requests
+ this.bufferedRequestCount = 0;
+
+ // allocate the first CorkedRequest, there is always
+ // one allocated and free to use, and we maintain at most two
+ this.corkedRequestsFree = new CorkedRequest(this);
+}
+
+WritableState.prototype.getBuffer = function writableStateGetBuffer() {
+ var current = this.bufferedRequest;
+ var out = [];
+ while (current) {
+ out.push(current);
+ current = current.next;
+ }
+ return out;
+};
+
+(function () {
+ try {
+ Object.defineProperty(WritableState.prototype, 'buffer', {
+ get: internalUtil.deprecate(function () {
+ return this.getBuffer();
+ }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
+ });
+ } catch (_) {}
+})();
+
+var Duplex;
+function Writable(options) {
+ Duplex = Duplex || require('./_stream_duplex');
+
+ // Writable ctor is applied to Duplexes, though they're not
+ // instanceof Writable, they're instanceof Readable.
+ if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options);
+
+ this._writableState = new WritableState(options, this);
+
+ // legacy.
+ this.writable = true;
+
+ if (options) {
+ if (typeof options.write === 'function') this._write = options.write;
+
+ if (typeof options.writev === 'function') this._writev = options.writev;
+ }
+
+ Stream.call(this);
+}
+
+// Otherwise people can pipe Writable streams, which is just wrong.
+Writable.prototype.pipe = function () {
+ this.emit('error', new Error('Cannot pipe, not readable'));
+};
+
+function writeAfterEnd(stream, cb) {
+ var er = new Error('write after end');
+ // TODO: defer error events consistently everywhere, not just the cb
+ stream.emit('error', er);
+ processNextTick(cb, er);
+}
+
+// If we get something that is not a buffer, string, null, or undefined,
+// and we're not in objectMode, then that's an error.
+// Otherwise stream chunks are all considered to be of length=1, and the
+// watermarks determine how many objects to keep in the buffer, rather than
+// how many bytes or characters.
+function validChunk(stream, state, chunk, cb) {
+ var valid = true;
+ var er = false;
+ // Always throw error if a null is written
+ // if we are not in object mode then throw
+ // if it is not a buffer, string, or undefined.
+ if (chunk === null) {
+ er = new TypeError('May not write null values to stream');
+ } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
+ er = new TypeError('Invalid non-string/buffer chunk');
+ }
+ if (er) {
+ stream.emit('error', er);
+ processNextTick(cb, er);
+ valid = false;
+ }
+ return valid;
+}
+
+Writable.prototype.write = function (chunk, encoding, cb) {
+ var state = this._writableState;
+ var ret = false;
+
+ if (typeof encoding === 'function') {
+ cb = encoding;
+ encoding = null;
+ }
+
+ if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
+
+ if (typeof cb !== 'function') cb = nop;
+
+ if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
+ state.pendingcb++;
+ ret = writeOrBuffer(this, state, chunk, encoding, cb);
+ }
+
+ return ret;
+};
+
+Writable.prototype.cork = function () {
+ var state = this._writableState;
+
+ state.corked++;
+};
+
+Writable.prototype.uncork = function () {
+ var state = this._writableState;
+
+ if (state.corked) {
+ state.corked--;
+
+ if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
+ }
+};
+
+Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
+ // node::ParseEncoding() requires lower case.
+ if (typeof encoding === 'string') encoding = encoding.toLowerCase();
+ if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
+ this._writableState.defaultEncoding = encoding;
+ return this;
+};
+
+function decodeChunk(state, chunk, encoding) {
+ if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
+ chunk = bufferShim.from(chunk, encoding);
+ }
+ return chunk;
+}
+
+// if we're already writing something, then just put this
+// in the queue, and wait our turn. Otherwise, call _write
+// If we return false, then we need a drain event, so set that flag.
+function writeOrBuffer(stream, state, chunk, encoding, cb) {
+ chunk = decodeChunk(state, chunk, encoding);
+
+ if (Buffer.isBuffer(chunk)) encoding = 'buffer';
+ var len = state.objectMode ? 1 : chunk.length;
+
+ state.length += len;
+
+ var ret = state.length < state.highWaterMark;
+ // we must ensure that previous needDrain will not be reset to false.
+ if (!ret) state.needDrain = true;
+
+ if (state.writing || state.corked) {
+ var last = state.lastBufferedRequest;
+ state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
+ if (last) {
+ last.next = state.lastBufferedRequest;
+ } else {
+ state.bufferedRequest = state.lastBufferedRequest;
+ }
+ state.bufferedRequestCount += 1;
+ } else {
+ doWrite(stream, state, false, len, chunk, encoding, cb);
+ }
+
+ return ret;
+}
+
+function doWrite(stream, state, writev, len, chunk, encoding, cb) {
+ state.writelen = len;
+ state.writecb = cb;
+ state.writing = true;
+ state.sync = true;
+ if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
+ state.sync = false;
+}
+
+function onwriteError(stream, state, sync, er, cb) {
+ --state.pendingcb;
+ if (sync) processNextTick(cb, er);else cb(er);
+
+ stream._writableState.errorEmitted = true;
+ stream.emit('error', er);
+}
+
+function onwriteStateUpdate(state) {
+ state.writing = false;
+ state.writecb = null;
+ state.length -= state.writelen;
+ state.writelen = 0;
+}
+
+function onwrite(stream, er) {
+ var state = stream._writableState;
+ var sync = state.sync;
+ var cb = state.writecb;
+
+ onwriteStateUpdate(state);
+
+ if (er) onwriteError(stream, state, sync, er, cb);else {
+ // Check if we're actually ready to finish, but don't emit yet
+ var finished = needFinish(state);
+
+ if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
+ clearBuffer(stream, state);
+ }
+
+ if (sync) {
+ /*<replacement>*/
+ asyncWrite(afterWrite, stream, state, finished, cb);
+ /*</replacement>*/
+ } else {
+ afterWrite(stream, state, finished, cb);
+ }
+ }
+}
+
+function afterWrite(stream, state, finished, cb) {
+ if (!finished) onwriteDrain(stream, state);
+ state.pendingcb--;
+ cb();
+ finishMaybe(stream, state);
+}
+
+// Must force callback to be called on nextTick, so that we don't
+// emit 'drain' before the write() consumer gets the 'false' return
+// value, and has a chance to attach a 'drain' listener.
+function onwriteDrain(stream, state) {
+ if (state.length === 0 && state.needDrain) {
+ state.needDrain = false;
+ stream.emit('drain');
+ }
+}
+
+// if there's something in the buffer waiting, then process it
+function clearBuffer(stream, state) {
+ state.bufferProcessing = true;
+ var entry = state.bufferedRequest;
+
+ if (stream._writev && entry && entry.next) {
+ // Fast case, write everything using _writev()
+ var l = state.bufferedRequestCount;
+ var buffer = new Array(l);
+ var holder = state.corkedRequestsFree;
+ holder.entry = entry;
+
+ var count = 0;
+ while (entry) {
+ buffer[count] = entry;
+ entry = entry.next;
+ count += 1;
+ }
+
+ doWrite(stream, state, true, state.length, buffer, '', holder.finish);
+
+ // doWrite is almost always async, defer these to save a bit of time
+ // as the hot path ends with doWrite
+ state.pendingcb++;
+ state.lastBufferedRequest = null;
+ if (holder.next) {
+ state.corkedRequestsFree = holder.next;
+ holder.next = null;
+ } else {
+ state.corkedRequestsFree = new CorkedRequest(state);
+ }
+ } else {
+ // Slow case, write chunks one-by-one
+ while (entry) {
+ var chunk = entry.chunk;
+ var encoding = entry.encoding;
+ var cb = entry.callback;
+ var len = state.objectMode ? 1 : chunk.length;
+
+ doWrite(stream, state, false, len, chunk, encoding, cb);
+ entry = entry.next;
+ // if we didn't call the onwrite immediately, then
+ // it means that we need to wait until it does.
+ // also, that means that the chunk and cb are currently
+ // being processed, so move the buffer counter past them.
+ if (state.writing) {
+ break;
+ }
+ }
+
+ if (entry === null) state.lastBufferedRequest = null;
+ }
+
+ state.bufferedRequestCount = 0;
+ state.bufferedRequest = entry;
+ state.bufferProcessing = false;
+}
+
+Writable.prototype._write = function (chunk, encoding, cb) {
+ cb(new Error('not implemented'));
+};
+
+Writable.prototype._writev = null;
+
+Writable.prototype.end = function (chunk, encoding, cb) {
+ var state = this._writableState;
+
+ if (typeof chunk === 'function') {
+ cb = chunk;
+ chunk = null;
+ encoding = null;
+ } else if (typeof encoding === 'function') {
+ cb = encoding;
+ encoding = null;
+ }
+
+ if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
+
+ // .end() fully uncorks
+ if (state.corked) {
+ state.corked = 1;
+ this.uncork();
+ }
+
+ // ignore unnecessary end() calls.
+ if (!state.ending && !state.finished) endWritable(this, state, cb);
+};
+
+function needFinish(state) {
+ return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
+}
+
+function prefinish(stream, state) {
+ if (!state.prefinished) {
+ state.prefinished = true;
+ stream.emit('prefinish');
+ }
+}
+
+function finishMaybe(stream, state) {
+ var need = needFinish(state);
+ if (need) {
+ if (state.pendingcb === 0) {
+ prefinish(stream, state);
+ state.finished = true;
+ stream.emit('finish');
+ } else {
+ prefinish(stream, state);
+ }
+ }
+ return need;
+}
+
+function endWritable(stream, state, cb) {
+ state.ending = true;
+ finishMaybe(stream, state);
+ if (cb) {
+ if (state.finished) processNextTick(cb);else stream.once('finish', cb);
+ }
+ state.ended = true;
+ stream.writable = false;
+}
+
+// It seems a linked list but it is not
+// there will be only 2 of these for each stream
+function CorkedRequest(state) {
+ var _this = this;
+
+ this.next = null;
+ this.entry = null;
+
+ this.finish = function (err) {
+ var entry = _this.entry;
+ _this.entry = null;
+ while (entry) {
+ var cb = entry.callback;
+ state.pendingcb--;
+ cb(err);
+ entry = entry.next;
+ }
+ if (state.corkedRequestsFree) {
+ state.corkedRequestsFree.next = _this;
+ } else {
+ state.corkedRequestsFree = _this;
+ }
+ };
+}
+}).call(this,require('_process'))
+},{"./_stream_duplex":69,"_process":67,"buffer":44,"buffer-shims":43,"core-util-is":45,"events":48,"inherits":51,"process-nextick-args":66,"util-deprecate":80}],74:[function(require,module,exports){
+module.exports = require("./lib/_stream_passthrough.js")
+
+},{"./lib/_stream_passthrough.js":70}],75:[function(require,module,exports){
+(function (process){
+var Stream = (function (){
+ try {
+ return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify
+ } catch(_){}
+}());
+exports = module.exports = require('./lib/_stream_readable.js');
+exports.Stream = Stream || exports;
+exports.Readable = exports;
+exports.Writable = require('./lib/_stream_writable.js');
+exports.Duplex = require('./lib/_stream_duplex.js');
+exports.Transform = require('./lib/_stream_transform.js');
+exports.PassThrough = require('./lib/_stream_passthrough.js');
+
+if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
+ module.exports = Stream;
+}
+
+}).call(this,require('_process'))
+},{"./lib/_stream_duplex.js":69,"./lib/_stream_passthrough.js":70,"./lib/_stream_readable.js":71,"./lib/_stream_transform.js":72,"./lib/_stream_writable.js":73,"_process":67}],76:[function(require,module,exports){
+module.exports = require("./lib/_stream_transform.js")
+
+},{"./lib/_stream_transform.js":72}],77:[function(require,module,exports){
+module.exports = require("./lib/_stream_writable.js")
+
+},{"./lib/_stream_writable.js":73}],78:[function(require,module,exports){
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+module.exports = Stream;
+
+var EE = require('events').EventEmitter;
+var inherits = require('inherits');
+
+inherits(Stream, EE);
+Stream.Readable = require('readable-stream/readable.js');
+Stream.Writable = require('readable-stream/writable.js');
+Stream.Duplex = require('readable-stream/duplex.js');
+Stream.Transform = require('readable-stream/transform.js');
+Stream.PassThrough = require('readable-stream/passthrough.js');
+
+// Backwards-compat with node 0.4.x
+Stream.Stream = Stream;
+
+
+
+// old-style streams. Note that the pipe method (the only relevant
+// part of this class) is overridden in the Readable class.
+
+function Stream() {
+ EE.call(this);
+}
+
+Stream.prototype.pipe = function(dest, options) {
+ var source = this;
+
+ function ondata(chunk) {
+ if (dest.writable) {
+ if (false === dest.write(chunk) && source.pause) {
+ source.pause();
+ }
+ }
+ }
+
+ source.on('data', ondata);
+
+ function ondrain() {
+ if (source.readable && source.resume) {
+ source.resume();
+ }
+ }
+
+ dest.on('drain', ondrain);
+
+ // If the 'end' option is not supplied, dest.end() will be called when
+ // source gets the 'end' or 'close' events. Only dest.end() once.
+ if (!dest._isStdio && (!options || options.end !== false)) {
+ source.on('end', onend);
+ source.on('close', onclose);
+ }
+
+ var didOnEnd = false;
+ function onend() {
+ if (didOnEnd) return;
+ didOnEnd = true;
+
+ dest.end();
+ }
+
+
+ function onclose() {
+ if (didOnEnd) return;
+ didOnEnd = true;
+
+ if (typeof dest.destroy === 'function') dest.destroy();
+ }
+
+ // don't leave dangling pipes when there are errors.
+ function onerror(er) {
+ cleanup();
+ if (EE.listenerCount(this, 'error') === 0) {
+ throw er; // Unhandled stream error in pipe.
+ }
+ }
+
+ source.on('error', onerror);
+ dest.on('error', onerror);
+
+ // remove all the event listeners that were added.
+ function cleanup() {
+ source.removeListener('data', ondata);
+ dest.removeListener('drain', ondrain);
+
+ source.removeListener('end', onend);
+ source.removeListener('close', onclose);
+
+ source.removeListener('error', onerror);
+ dest.removeListener('error', onerror);
+
+ source.removeListener('end', cleanup);
+ source.removeListener('close', cleanup);
+
+ dest.removeListener('close', cleanup);
+ }
+
+ source.on('end', cleanup);
+ source.on('close', cleanup);
+
+ dest.on('close', cleanup);
+
+ dest.emit('pipe', source);
+
+ // Allow for unix-like usage: A.pipe(B).pipe(C)
+ return dest;
+};
+
+},{"events":48,"inherits":51,"readable-stream/duplex.js":68,"readable-stream/passthrough.js":74,"readable-stream/readable.js":75,"readable-stream/transform.js":76,"readable-stream/writable.js":77}],79:[function(require,module,exports){
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+var Buffer = require('buffer').Buffer;
+
+var isBufferEncoding = Buffer.isEncoding
+ || function(encoding) {
+ switch (encoding && encoding.toLowerCase()) {
+ case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;
+ default: return false;
+ }
+ }
+
+
+function assertEncoding(encoding) {
+ if (encoding && !isBufferEncoding(encoding)) {
+ throw new Error('Unknown encoding: ' + encoding);
+ }
+}
+
+// StringDecoder provides an interface for efficiently splitting a series of
+// buffers into a series of JS strings without breaking apart multi-byte
+// characters. CESU-8 is handled as part of the UTF-8 encoding.
+//
+// @TODO Handling all encodings inside a single object makes it very difficult
+// to reason about this code, so it should be split up in the future.
+// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
+// points as used by CESU-8.
+var StringDecoder = exports.StringDecoder = function(encoding) {
+ this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
+ assertEncoding(encoding);
+ switch (this.encoding) {
+ case 'utf8':
+ // CESU-8 represents each of Surrogate Pair by 3-bytes
+ this.surrogateSize = 3;
+ break;
+ case 'ucs2':
+ case 'utf16le':
+ // UTF-16 represents each of Surrogate Pair by 2-bytes
+ this.surrogateSize = 2;
+ this.detectIncompleteChar = utf16DetectIncompleteChar;
+ break;
+ case 'base64':
+ // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
+ this.surrogateSize = 3;
+ this.detectIncompleteChar = base64DetectIncompleteChar;
+ break;
+ default:
+ this.write = passThroughWrite;
+ return;
+ }
+
+ // Enough space to store all bytes of a single character. UTF-8 needs 4
+ // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
+ this.charBuffer = new Buffer(6);
+ // Number of bytes received for the current incomplete multi-byte character.
+ this.charReceived = 0;
+ // Number of bytes expected for the current incomplete multi-byte character.
+ this.charLength = 0;
+};
+
+
+// write decodes the given buffer and returns it as JS string that is
+// guaranteed to not contain any partial multi-byte characters. Any partial
+// character found at the end of the buffer is buffered up, and will be
+// returned when calling write again with the remaining bytes.
+//
+// Note: Converting a Buffer containing an orphan surrogate to a String
+// currently works, but converting a String to a Buffer (via `new Buffer`, or
+// Buffer#write) will replace incomplete surrogates with the unicode
+// replacement character. See https://codereview.chromium.org/121173009/ .
+StringDecoder.prototype.write = function(buffer) {
+ var charStr = '';
+ // if our last write ended with an incomplete multibyte character
+ while (this.charLength) {
+ // determine how many remaining bytes this buffer has to offer for this char
+ var available = (buffer.length >= this.charLength - this.charReceived) ?
+ this.charLength - this.charReceived :
+ buffer.length;
+
+ // add the new bytes to the char buffer
+ buffer.copy(this.charBuffer, this.charReceived, 0, available);
+ this.charReceived += available;
+
+ if (this.charReceived < this.charLength) {
+ // still not enough chars in this buffer? wait for more ...
+ return '';
+ }
+
+ // remove bytes belonging to the current character from the buffer
+ buffer = buffer.slice(available, buffer.length);
+
+ // get the character that was split
+ charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
+
+ // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
+ var charCode = charStr.charCodeAt(charStr.length - 1);
+ if (charCode >= 0xD800 && charCode <= 0xDBFF) {
+ this.charLength += this.surrogateSize;
+ charStr = '';
+ continue;
+ }
+ this.charReceived = this.charLength = 0;
+
+ // if there are no more bytes in this buffer, just emit our char
+ if (buffer.length === 0) {
+ return charStr;
+ }
+ break;
+ }
+
+ // determine and set charLength / charReceived
+ this.detectIncompleteChar(buffer);
+
+ var end = buffer.length;
+ if (this.charLength) {
+ // buffer the incomplete character bytes we got
+ buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
+ end -= this.charReceived;
+ }
+
+ charStr += buffer.toString(this.encoding, 0, end);
+
+ var end = charStr.length - 1;
+ var charCode = charStr.charCodeAt(end);
+ // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
+ if (charCode >= 0xD800 && charCode <= 0xDBFF) {
+ var size = this.surrogateSize;
+ this.charLength += size;
+ this.charReceived += size;
+ this.charBuffer.copy(this.charBuffer, size, 0, size);
+ buffer.copy(this.charBuffer, 0, 0, size);
+ return charStr.substring(0, end);
+ }
+
+ // or just emit the charStr
+ return charStr;
+};
+
+// detectIncompleteChar determines if there is an incomplete UTF-8 character at
+// the end of the given buffer. If so, it sets this.charLength to the byte
+// length that character, and sets this.charReceived to the number of bytes
+// that are available for this character.
+StringDecoder.prototype.detectIncompleteChar = function(buffer) {
+ // determine how many bytes we have to check at the end of this buffer
+ var i = (buffer.length >= 3) ? 3 : buffer.length;
+
+ // Figure out if one of the last i bytes of our buffer announces an
+ // incomplete char.
+ for (; i > 0; i--) {
+ var c = buffer[buffer.length - i];
+
+ // See http://en.wikipedia.org/wiki/UTF-8#Description
+
+ // 110XXXXX
+ if (i == 1 && c >> 5 == 0x06) {
+ this.charLength = 2;
+ break;
+ }
+
+ // 1110XXXX
+ if (i <= 2 && c >> 4 == 0x0E) {
+ this.charLength = 3;
+ break;
+ }
+
+ // 11110XXX
+ if (i <= 3 && c >> 3 == 0x1E) {
+ this.charLength = 4;
+ break;
+ }
+ }
+ this.charReceived = i;
+};
+
+StringDecoder.prototype.end = function(buffer) {
+ var res = '';
+ if (buffer && buffer.length)
+ res = this.write(buffer);
+
+ if (this.charReceived) {
+ var cr = this.charReceived;
+ var buf = this.charBuffer;
+ var enc = this.encoding;
+ res += buf.slice(0, cr).toString(enc);
+ }
+
+ return res;
+};
+
+function passThroughWrite(buffer) {
+ return buffer.toString(this.encoding);
+}
+
+function utf16DetectIncompleteChar(buffer) {
+ this.charReceived = buffer.length % 2;
+ this.charLength = this.charReceived ? 2 : 0;
+}
+
+function base64DetectIncompleteChar(buffer) {
+ this.charReceived = buffer.length % 3;
+ this.charLength = this.charReceived ? 3 : 0;
+}
+
+},{"buffer":44}],80:[function(require,module,exports){
+(function (global){
+
+/**
+ * Module exports.
+ */
+
+module.exports = deprecate;
+
+/**
+ * Mark that a method should not be used.
+ * Returns a modified function which warns once by default.
+ *
+ * If `localStorage.noDeprecation = true` is set, then it is a no-op.
+ *
+ * If `localStorage.throwDeprecation = true` is set, then deprecated functions
+ * will throw an Error when invoked.
+ *
+ * If `localStorage.traceDeprecation = true` is set, then deprecated functions
+ * will invoke `console.trace()` instead of `console.error()`.
+ *
+ * @param {Function} fn - the function to deprecate
+ * @param {String} msg - the string to print to the console when `fn` is invoked
+ * @returns {Function} a new "deprecated" version of `fn`
+ * @api public
+ */
+
+function deprecate (fn, msg) {
+ if (config('noDeprecation')) {
+ return fn;
+ }
+
+ var warned = false;
+ function deprecated() {
+ if (!warned) {
+ if (config('throwDeprecation')) {
+ throw new Error(msg);
+ } else if (config('traceDeprecation')) {
+ console.trace(msg);
+ } else {
+ console.warn(msg);
+ }
+ warned = true;
+ }
+ return fn.apply(this, arguments);
+ }
+
+ return deprecated;
+}
+
+/**
+ * Checks `localStorage` for boolean values for the given `name`.
+ *
+ * @param {String} name
+ * @returns {Boolean}
+ * @api private
+ */
+
+function config (name) {
+ // accessing global.localStorage can trigger a DOMException in sandboxed iframes
+ try {
+ if (!global.localStorage) return false;
+ } catch (_) {
+ return false;
+ }
+ var val = global.localStorage[name];
+ if (null == val) return false;
+ return String(val).toLowerCase() === 'true';
+}
+
+}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{}],81:[function(require,module,exports){
+module.exports = function isBuffer(arg) {
+ return arg && typeof arg === 'object'
+ && typeof arg.copy === 'function'
+ && typeof arg.fill === 'function'
+ && typeof arg.readUInt8 === 'function';
+}
+},{}],82:[function(require,module,exports){
+(function (process,global){
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+var formatRegExp = /%[sdj%]/g;
+exports.format = function(f) {
+ if (!isString(f)) {
+ var objects = [];
+ for (var i = 0; i < arguments.length; i++) {
+ objects.push(inspect(arguments[i]));
+ }
+ return objects.join(' ');
+ }
+
+ var i = 1;
+ var args = arguments;
+ var len = args.length;
+ var str = String(f).replace(formatRegExp, function(x) {
+ if (x === '%%') return '%';
+ if (i >= len) return x;
+ switch (x) {
+ case '%s': return String(args[i++]);
+ case '%d': return Number(args[i++]);
+ case '%j':
+ try {
+ return JSON.stringify(args[i++]);
+ } catch (_) {
+ return '[Circular]';
+ }
+ default:
+ return x;
+ }
+ });
+ for (var x = args[i]; i < len; x = args[++i]) {
+ if (isNull(x) || !isObject(x)) {
+ str += ' ' + x;
+ } else {
+ str += ' ' + inspect(x);
+ }
+ }
+ return str;
+};
+
+
+// Mark that a method should not be used.
+// Returns a modified function which warns once by default.
+// If --no-deprecation is set, then it is a no-op.
+exports.deprecate = function(fn, msg) {
+ // Allow for deprecating things in the process of starting up.
+ if (isUndefined(global.process)) {
+ return function() {
+ return exports.deprecate(fn, msg).apply(this, arguments);
+ };
+ }
+
+ if (process.noDeprecation === true) {
+ return fn;
+ }
+
+ var warned = false;
+ function deprecated() {
+ if (!warned) {
+ if (process.throwDeprecation) {
+ throw new Error(msg);
+ } else if (process.traceDeprecation) {
+ console.trace(msg);
+ } else {
+ console.error(msg);
+ }
+ warned = true;
+ }
+ return fn.apply(this, arguments);
+ }
+
+ return deprecated;
+};
+
+
+var debugs = {};
+var debugEnviron;
+exports.debuglog = function(set) {
+ if (isUndefined(debugEnviron))
+ debugEnviron = process.env.NODE_DEBUG || '';
+ set = set.toUpperCase();
+ if (!debugs[set]) {
+ if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
+ var pid = process.pid;
+ debugs[set] = function() {
+ var msg = exports.format.apply(exports, arguments);
+ console.error('%s %d: %s', set, pid, msg);
+ };
+ } else {
+ debugs[set] = function() {};
+ }
+ }
+ return debugs[set];
+};
+
+
+/**
+ * Echos the value of a value. Trys to print the value out
+ * in the best way possible given the different types.
+ *
+ * @param {Object} obj The object to print out.
+ * @param {Object} opts Optional options object that alters the output.
+ */
+/* legacy: obj, showHidden, depth, colors*/
+function inspect(obj, opts) {
+ // default options
+ var ctx = {
+ seen: [],
+ stylize: stylizeNoColor
+ };
+ // legacy...
+ if (arguments.length >= 3) ctx.depth = arguments[2];
+ if (arguments.length >= 4) ctx.colors = arguments[3];
+ if (isBoolean(opts)) {
+ // legacy...
+ ctx.showHidden = opts;
+ } else if (opts) {
+ // got an "options" object
+ exports._extend(ctx, opts);
+ }
+ // set default options
+ if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
+ if (isUndefined(ctx.depth)) ctx.depth = 2;
+ if (isUndefined(ctx.colors)) ctx.colors = false;
+ if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
+ if (ctx.colors) ctx.stylize = stylizeWithColor;
+ return formatValue(ctx, obj, ctx.depth);
+}
+exports.inspect = inspect;
+
+
+// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
+inspect.colors = {
+ 'bold' : [1, 22],
+ 'italic' : [3, 23],
+ 'underline' : [4, 24],
+ 'inverse' : [7, 27],
+ 'white' : [37, 39],
+ 'grey' : [90, 39],
+ 'black' : [30, 39],
+ 'blue' : [34, 39],
+ 'cyan' : [36, 39],
+ 'green' : [32, 39],
+ 'magenta' : [35, 39],
+ 'red' : [31, 39],
+ 'yellow' : [33, 39]
+};
+
+// Don't use 'blue' not visible on cmd.exe
+inspect.styles = {
+ 'special': 'cyan',
+ 'number': 'yellow',
+ 'boolean': 'yellow',
+ 'undefined': 'grey',
+ 'null': 'bold',
+ 'string': 'green',
+ 'date': 'magenta',
+ // "name": intentionally not styling
+ 'regexp': 'red'
+};
+
+
+function stylizeWithColor(str, styleType) {
+ var style = inspect.styles[styleType];
+
+ if (style) {
+ return '\u001b[' + inspect.colors[style][0] + 'm' + str +
+ '\u001b[' + inspect.colors[style][1] + 'm';
+ } else {
+ return str;
+ }
+}
+
+
+function stylizeNoColor(str, styleType) {
+ return str;
+}
+
+
+function arrayToHash(array) {
+ var hash = {};
+
+ array.forEach(function(val, idx) {
+ hash[val] = true;
+ });
+
+ return hash;
+}
+
+
+function formatValue(ctx, value, recurseTimes) {
+ // Provide a hook for user-specified inspect functions.
+ // Check that value is an object with an inspect function on it
+ if (ctx.customInspect &&
+ value &&
+ isFunction(value.inspect) &&
+ // Filter out the util module, it's inspect function is special
+ value.inspect !== exports.inspect &&
+ // Also filter out any prototype objects using the circular check.
+ !(value.constructor && value.constructor.prototype === value)) {
+ var ret = value.inspect(recurseTimes, ctx);
+ if (!isString(ret)) {
+ ret = formatValue(ctx, ret, recurseTimes);
+ }
+ return ret;
+ }
+
+ // Primitive types cannot have properties
+ var primitive = formatPrimitive(ctx, value);
+ if (primitive) {
+ return primitive;
+ }
+
+ // Look up the keys of the object.
+ var keys = Object.keys(value);
+ var visibleKeys = arrayToHash(keys);
+
+ if (ctx.showHidden) {
+ keys = Object.getOwnPropertyNames(value);
+ }
+
+ // IE doesn't make error fields non-enumerable
+ // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
+ if (isError(value)
+ && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
+ return formatError(value);
+ }
+
+ // Some type of object without properties can be shortcutted.
+ if (keys.length === 0) {
+ if (isFunction(value)) {
+ var name = value.name ? ': ' + value.name : '';
+ return ctx.stylize('[Function' + name + ']', 'special');
+ }
+ if (isRegExp(value)) {
+ return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
+ }
+ if (isDate(value)) {
+ return ctx.stylize(Date.prototype.toString.call(value), 'date');
+ }
+ if (isError(value)) {
+ return formatError(value);
+ }
+ }
+
+ var base = '', array = false, braces = ['{', '}'];
+
+ // Make Array say that they are Array
+ if (isArray(value)) {
+ array = true;
+ braces = ['[', ']'];
+ }
+
+ // Make functions say that they are functions
+ if (isFunction(value)) {
+ var n = value.name ? ': ' + value.name : '';
+ base = ' [Function' + n + ']';
+ }
+
+ // Make RegExps say that they are RegExps
+ if (isRegExp(value)) {
+ base = ' ' + RegExp.prototype.toString.call(value);
+ }
+
+ // Make dates with properties first say the date
+ if (isDate(value)) {
+ base = ' ' + Date.prototype.toUTCString.call(value);
+ }
+
+ // Make error with message first say the error
+ if (isError(value)) {
+ base = ' ' + formatError(value);
+ }
+
+ if (keys.length === 0 && (!array || value.length == 0)) {
+ return braces[0] + base + braces[1];
+ }
+
+ if (recurseTimes < 0) {
+ if (isRegExp(value)) {
+ return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
+ } else {
+ return ctx.stylize('[Object]', 'special');
+ }
+ }
+
+ ctx.seen.push(value);
+
+ var output;
+ if (array) {
+ output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
+ } else {
+ output = keys.map(function(key) {
+ return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
+ });
+ }
+
+ ctx.seen.pop();
+
+ return reduceToSingleString(output, base, braces);
+}
+
+
+function formatPrimitive(ctx, value) {
+ if (isUndefined(value))
+ return ctx.stylize('undefined', 'undefined');
+ if (isString(value)) {
+ var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
+ .replace(/'/g, "\\'")
+ .replace(/\\"/g, '"') + '\'';
+ return ctx.stylize(simple, 'string');
+ }
+ if (isNumber(value))
+ return ctx.stylize('' + value, 'number');
+ if (isBoolean(value))
+ return ctx.stylize('' + value, 'boolean');
+ // For some reason typeof null is "object", so special case here.
+ if (isNull(value))
+ return ctx.stylize('null', 'null');
+}
+
+
+function formatError(value) {
+ return '[' + Error.prototype.toString.call(value) + ']';
+}
+
+
+function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
+ var output = [];
+ for (var i = 0, l = value.length; i < l; ++i) {
+ if (hasOwnProperty(value, String(i))) {
+ output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
+ String(i), true));
+ } else {
+ output.push('');
+ }
+ }
+ keys.forEach(function(key) {
+ if (!key.match(/^\d+$/)) {
+ output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
+ key, true));
+ }
+ });
+ return output;
+}
+
+
+function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
+ var name, str, desc;
+ desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
+ if (desc.get) {
+ if (desc.set) {
+ str = ctx.stylize('[Getter/Setter]', 'special');
+ } else {
+ str = ctx.stylize('[Getter]', 'special');
+ }
+ } else {
+ if (desc.set) {
+ str = ctx.stylize('[Setter]', 'special');
+ }
+ }
+ if (!hasOwnProperty(visibleKeys, key)) {
+ name = '[' + key + ']';
+ }
+ if (!str) {
+ if (ctx.seen.indexOf(desc.value) < 0) {
+ if (isNull(recurseTimes)) {
+ str = formatValue(ctx, desc.value, null);
+ } else {
+ str = formatValue(ctx, desc.value, recurseTimes - 1);
+ }
+ if (str.indexOf('\n') > -1) {
+ if (array) {
+ str = str.split('\n').map(function(line) {
+ return ' ' + line;
+ }).join('\n').substr(2);
+ } else {
+ str = '\n' + str.split('\n').map(function(line) {
+ return ' ' + line;
+ }).join('\n');
+ }
+ }
+ } else {
+ str = ctx.stylize('[Circular]', 'special');
+ }
+ }
+ if (isUndefined(name)) {
+ if (array && key.match(/^\d+$/)) {
+ return str;
+ }
+ name = JSON.stringify('' + key);
+ if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
+ name = name.substr(1, name.length - 2);
+ name = ctx.stylize(name, 'name');
+ } else {
+ name = name.replace(/'/g, "\\'")
+ .replace(/\\"/g, '"')
+ .replace(/(^"|"$)/g, "'");
+ name = ctx.stylize(name, 'string');
+ }
+ }
+
+ return name + ': ' + str;
+}
+
+
+function reduceToSingleString(output, base, braces) {
+ var numLinesEst = 0;
+ var length = output.reduce(function(prev, cur) {
+ numLinesEst++;
+ if (cur.indexOf('\n') >= 0) numLinesEst++;
+ return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
+ }, 0);
+
+ if (length > 60) {
+ return braces[0] +
+ (base === '' ? '' : base + '\n ') +
+ ' ' +
+ output.join(',\n ') +
+ ' ' +
+ braces[1];
+ }
+
+ return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
+}
+
+
+// NOTE: These type checking functions intentionally don't use `instanceof`
+// because it is fragile and can be easily faked with `Object.create()`.
+function isArray(ar) {
+ return Array.isArray(ar);
+}
+exports.isArray = isArray;
+
+function isBoolean(arg) {
+ return typeof arg === 'boolean';
+}
+exports.isBoolean = isBoolean;
+
+function isNull(arg) {
+ return arg === null;
+}
+exports.isNull = isNull;
+
+function isNullOrUndefined(arg) {
+ return arg == null;
+}
+exports.isNullOrUndefined = isNullOrUndefined;
+
+function isNumber(arg) {
+ return typeof arg === 'number';
+}
+exports.isNumber = isNumber;
+
+function isString(arg) {
+ return typeof arg === 'string';
+}
+exports.isString = isString;
+
+function isSymbol(arg) {
+ return typeof arg === 'symbol';
+}
+exports.isSymbol = isSymbol;
+
+function isUndefined(arg) {
+ return arg === void 0;
+}
+exports.isUndefined = isUndefined;
+
+function isRegExp(re) {
+ return isObject(re) && objectToString(re) === '[object RegExp]';
+}
+exports.isRegExp = isRegExp;
+
+function isObject(arg) {
+ return typeof arg === 'object' && arg !== null;
+}
+exports.isObject = isObject;
+
+function isDate(d) {
+ return isObject(d) && objectToString(d) === '[object Date]';
+}
+exports.isDate = isDate;
+
+function isError(e) {
+ return isObject(e) &&
+ (objectToString(e) === '[object Error]' || e instanceof Error);
+}
+exports.isError = isError;
+
+function isFunction(arg) {
+ return typeof arg === 'function';
+}
+exports.isFunction = isFunction;
+
+function isPrimitive(arg) {
+ return arg === null ||
+ typeof arg === 'boolean' ||
+ typeof arg === 'number' ||
+ typeof arg === 'string' ||
+ typeof arg === 'symbol' || // ES6 symbol
+ typeof arg === 'undefined';
+}
+exports.isPrimitive = isPrimitive;
+
+exports.isBuffer = require('./support/isBuffer');
+
+function objectToString(o) {
+ return Object.prototype.toString.call(o);
+}
+
+
+function pad(n) {
+ return n < 10 ? '0' + n.toString(10) : n.toString(10);
+}
+
+
+var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
+ 'Oct', 'Nov', 'Dec'];
+
+// 26 Feb 16:19:34
+function timestamp() {
+ var d = new Date();
+ var time = [pad(d.getHours()),
+ pad(d.getMinutes()),
+ pad(d.getSeconds())].join(':');
+ return [d.getDate(), months[d.getMonth()], time].join(' ');
+}
+
+
+// log is just a thin wrapper to console.log that prepends a timestamp
+exports.log = function() {
+ console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
+};
+
+
+/**
+ * Inherit the prototype methods from one constructor into another.
+ *
+ * The Function.prototype.inherits from lang.js rewritten as a standalone
+ * function (not on Function.prototype). NOTE: If this file is to be loaded
+ * during bootstrapping this function needs to be rewritten using some native
+ * functions as prototype setup using normal JavaScript does not work as
+ * expected during bootstrapping (see mirror.js in r114903).
+ *
+ * @param {function} ctor Constructor function which needs to inherit the
+ * prototype.
+ * @param {function} superCtor Constructor function to inherit prototype from.
+ */
+exports.inherits = require('inherits');
+
+exports._extend = function(origin, add) {
+ // Don't do anything if add isn't an object
+ if (!add || !isObject(add)) return origin;
+
+ var keys = Object.keys(add);
+ var i = keys.length;
+ while (i--) {
+ origin[keys[i]] = add[keys[i]];
+ }
+ return origin;
+};
+
+function hasOwnProperty(obj, prop) {
+ return Object.prototype.hasOwnProperty.call(obj, prop);
+}
+
+}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
+},{"./support/isBuffer":81,"_process":67,"inherits":51}]},{},[1]);
diff --git a/node_modules/lunr/test/field_ref_test.js b/node_modules/lunr/test/field_ref_test.js
new file mode 100644
index 0000000..ef44e06
--- /dev/null
+++ b/node_modules/lunr/test/field_ref_test.js
@@ -0,0 +1,35 @@
+suite('lunr.FieldRef', function () {
+ suite('#toString', function () {
+ test('combines document ref and field name', function () {
+ var fieldName = "title",
+ documentRef = "123",
+ fieldRef = new lunr.FieldRef (documentRef, fieldName)
+
+ assert.equal(fieldRef.toString(), "title/123")
+ })
+ })
+
+ suite('.fromString', function () {
+ test('splits string into parts', function () {
+ var fieldRef = lunr.FieldRef.fromString("title/123")
+
+ assert.equal(fieldRef.fieldName, "title")
+ assert.equal(fieldRef.docRef, "123")
+ })
+
+ test('docRef contains join character', function () {
+ var fieldRef = lunr.FieldRef.fromString("title/http://example.com/123")
+
+ assert.equal(fieldRef.fieldName, "title")
+ assert.equal(fieldRef.docRef, "http://example.com/123")
+ })
+
+ test('string does not contain join character', function () {
+ var s = "docRefOnly"
+
+ assert.throws(function () {
+ lunr.FieldRef.fromString(s)
+ })
+ })
+ })
+})
diff --git a/node_modules/lunr/test/fixtures/stemming_vocab.json b/node_modules/lunr/test/fixtures/stemming_vocab.json
new file mode 100644
index 0000000..2b7bdf5
--- /dev/null
+++ b/node_modules/lunr/test/fixtures/stemming_vocab.json
@@ -0,0 +1 @@
+{"consign":"consign","consigned":"consign","consigning":"consign","consignment":"consign","consist":"consist","consisted":"consist","consistency":"consist","consistent":"consist","consistently":"consist","consisting":"consist","consists":"consist","consolation":"consol","consolations":"consol","consolatory":"consolatori","console":"consol","consoled":"consol","consoles":"consol","consolidate":"consolid","consolidated":"consolid","consolidating":"consolid","consoling":"consol","consols":"consol","consonant":"conson","consort":"consort","consorted":"consort","consorting":"consort","conspicuous":"conspicu","conspicuously":"conspicu","conspiracy":"conspiraci","conspirator":"conspir","conspirators":"conspir","conspire":"conspir","conspired":"conspir","conspiring":"conspir","constable":"constabl","constables":"constabl","constance":"constanc","constancy":"constanc","constant":"constant","knack":"knack","knackeries":"knackeri","knacks":"knack","knag":"knag","knave":"knave","knaves":"knave","knavish":"knavish","kneaded":"knead","kneading":"knead","knee":"knee","kneel":"kneel","kneeled":"kneel","kneeling":"kneel","kneels":"kneel","knees":"knee","knell":"knell","knelt":"knelt","knew":"knew","knick":"knick","knif":"knif","knife":"knife","knight":"knight","knights":"knight","knit":"knit","knits":"knit","knitted":"knit","knitting":"knit","knives":"knive","knob":"knob","knobs":"knob","knock":"knock","knocked":"knock","knocker":"knocker","knockers":"knocker","knocking":"knock","knocks":"knock","knopp":"knopp","knot":"knot","knots":"knot","lay":"lay","try":"tri"}
diff --git a/node_modules/lunr/test/index.html b/node_modules/lunr/test/index.html
new file mode 100644
index 0000000..cbba1a1
--- /dev/null
+++ b/node_modules/lunr/test/index.html
@@ -0,0 +1,58 @@
+<html>
+<head>
+ <meta charset="utf-8">
+ <title>Mocha Tests</title>
+ <link href="/test/env/mocha.css" rel="stylesheet" />
+</head>
+<body>
+ <div id="mocha"></div>
+
+ <script src="/test/env/mocha.js"></script>
+ <script src="/test/env/chai.js"></script>
+ <script src="/lunr.js"></script>
+
+ <script>
+ mocha.setup('tdd')
+ window.assert = chai.assert
+
+ window.withFixture = function (name, fn) {
+ var fixturePath = '/test/fixtures/' + name,
+ xhr = new XMLHttpRequest
+
+ xhr.addEventListener('load', function () {
+ if (this.status != 200) {
+ fn('non 200 response')
+ } else {
+ fn(null, this.responseText)
+ }
+ })
+
+ xhr.open('GET', fixturePath)
+ xhr.send()
+ }
+ </script>
+ <script src="/test/builder_test.js"></script>
+ <script src="/test/field_ref_test.js"></script>
+ <script src="/test/match_data_test.js"></script>
+ <script src="/test/pipeline_test.js"></script>
+ <script src="/test/query_lexer_test.js"></script>
+ <script src="/test/query_parser_test.js"></script>
+ <script src="/test/query_test.js"></script>
+ <script src="/test/search_test.js"></script>
+ <script src="/test/serialization_test.js"></script>
+ <script src="/test/set_test.js"></script>
+ <script src="/test/stemmer_test.js"></script>
+ <script src="/test/stop_word_filter_test.js"></script>
+ <script src="/test/token_set_test.js"></script>
+ <script src="/test/token_test.js"></script>
+ <script src="/test/tokenizer_test.js"></script>
+ <script src="/test/trimmer_test.js"></script>
+ <script src="/test/utils_test.js"></script>
+ <script src="/test/vector_test.js"></script>
+ <script>
+ mocha.checkLeaks();
+ mocha.globals(['lunr']);
+ mocha.run();
+ </script>
+</body>
+</html>
diff --git a/node_modules/lunr/test/match_data_test.js b/node_modules/lunr/test/match_data_test.js
new file mode 100644
index 0000000..d4c0c04
--- /dev/null
+++ b/node_modules/lunr/test/match_data_test.js
@@ -0,0 +1,41 @@
+suite('lunr.MatchData', function () {
+ suite('#combine', function () {
+ setup(function () {
+ this.match = new lunr.MatchData('foo', 'title', {
+ position: [1]
+ })
+
+ this.match.combine(new lunr.MatchData('bar', 'title', {
+ position: [2]
+ }))
+
+ this.match.combine(new lunr.MatchData('baz', 'body', {
+ position: [3]
+ }))
+
+ this.match.combine(new lunr.MatchData('baz', 'body', {
+ position: [4]
+ }))
+ })
+
+ test('#terms', function () {
+ assert.sameMembers(['foo', 'bar', 'baz'], Object.keys(this.match.metadata))
+ })
+
+ test('#metadata', function () {
+ assert.deepEqual(this.match.metadata.foo.title.position, [1])
+ assert.deepEqual(this.match.metadata.bar.title.position, [2])
+ assert.deepEqual(this.match.metadata.baz.body.position, [3, 4])
+ })
+
+ test('does not mutate source data', function () {
+ var metadata = { foo: [1] },
+ matchData1 = new lunr.MatchData('foo', 'title', metadata),
+ matchData2 = new lunr.MatchData('foo', 'title', metadata)
+
+ matchData1.combine(matchData2)
+
+ assert.deepEqual(metadata.foo, [1])
+ })
+ })
+})
diff --git a/node_modules/lunr/test/pipeline_test.js b/node_modules/lunr/test/pipeline_test.js
new file mode 100644
index 0000000..f080bf9
--- /dev/null
+++ b/node_modules/lunr/test/pipeline_test.js
@@ -0,0 +1,280 @@
+suite('lunr.Pipeline', function () {
+ var noop = function () {}
+
+ setup(function () {
+ this.existingRegisteredFunctions = lunr.Pipeline.registeredFunctions
+ this.existingWarnIfFunctionNotRegistered = lunr.Pipeline.warnIfFunctionNotRegistered
+
+ lunr.Pipeline.registeredFunctions = {}
+ lunr.Pipeline.warnIfFunctionNotRegistered = noop
+
+ this.pipeline = new lunr.Pipeline
+ })
+
+ teardown(function () {
+ lunr.Pipeline.registeredFunctions = this.existingRegisteredFunctions
+ lunr.Pipeline.warnIfFunctionNotRegistered = this.existingWarnIfFunctionNotRegistered
+ })
+
+ suite('#add', function () {
+ test('add function to pipeline', function () {
+ this.pipeline.add(noop)
+ assert.equal(1, this.pipeline._stack.length)
+ })
+
+ test('add multiple functions to the pipeline', function () {
+ this.pipeline.add(noop, noop)
+ assert.equal(2, this.pipeline._stack.length)
+ })
+ })
+
+ suite('#remove', function () {
+ test('function exists in pipeline', function () {
+ this.pipeline.add(noop)
+ assert.equal(1, this.pipeline._stack.length)
+ this.pipeline.remove(noop)
+ assert.equal(0, this.pipeline._stack.length)
+ })
+
+ test('function does not exist in pipeline', function () {
+ var fn = function () {}
+ this.pipeline.add(noop)
+ assert.equal(1, this.pipeline._stack.length)
+ this.pipeline.remove(fn)
+ assert.equal(1, this.pipeline._stack.length)
+ })
+ })
+
+ suite('#before', function () {
+ var fn = function () {}
+
+ test('other function exists', function () {
+ this.pipeline.add(noop)
+ this.pipeline.before(noop, fn)
+
+ assert.deepEqual([fn, noop], this.pipeline._stack)
+ })
+
+ test('other function does not exist', function () {
+ var action = function () {
+ this.pipeline.before(noop, fn)
+ }
+
+ assert.throws(action.bind(this))
+ assert.equal(0, this.pipeline._stack.length)
+ })
+ })
+
+ suite('#after', function () {
+ var fn = function () {}
+
+ test('other function exists', function () {
+ this.pipeline.add(noop)
+ this.pipeline.after(noop, fn)
+
+ assert.deepEqual([noop, fn], this.pipeline._stack)
+ })
+
+ test('other function does not exist', function () {
+ var action = function () {
+ this.pipeline.after(noop, fn)
+ }
+
+ assert.throws(action.bind(this))
+ assert.equal(0, this.pipeline._stack.length)
+ })
+ })
+
+ suite('#run', function () {
+ test('calling each function for each token', function () {
+ var count1 = 0, count2 = 0,
+ fn1 = function (t) { count1++; return t },
+ fn2 = function (t) { count2++; return t }
+
+ this.pipeline.add(fn1, fn2)
+ this.pipeline.run([1,2,3])
+
+ assert.equal(3, count1)
+ assert.equal(3, count2)
+ })
+
+ test('passes token to pipeline function', function () {
+ this.pipeline.add(function (token) {
+ assert.equal('foo', token)
+ })
+
+ this.pipeline.run(['foo'])
+ })
+
+ test('passes index to pipeline function', function () {
+ this.pipeline.add(function (_, index) {
+ assert.equal(0, index)
+ })
+
+ this.pipeline.run(['foo'])
+ })
+
+ test('passes entire token array to pipeline function', function () {
+ this.pipeline.add(function (_, _, tokens) {
+ assert.deepEqual(['foo'], tokens)
+ })
+
+ this.pipeline.run(['foo'])
+ })
+
+ test('passes output of one function as input to the next', function () {
+ this.pipeline.add(function (t) {
+ return t.toUpperCase()
+ })
+
+ this.pipeline.add(function (t) {
+ assert.equal('FOO', t)
+ })
+
+ this.pipeline.run(['foo'])
+ })
+
+ test('returns the results of the last function', function () {
+ this.pipeline.add(function (t) {
+ return t.toUpperCase()
+ })
+
+ assert.deepEqual(['FOO'], this.pipeline.run(['foo']))
+ })
+
+ test('filters out null, undefined and empty string values', function () {
+ var tokens = [],
+ output
+
+ // only pass on tokens for even token indexes
+ // return null for 'foo'
+ // return undefined for 'bar'
+ // return '' for 'baz'
+ this.pipeline.add(function (t, i) {
+ if (i == 4) {
+ return null
+ } else if (i == 5) {
+ return ''
+ } if (i % 2) {
+ return t
+ } else {
+ return undefined
+ }
+ })
+
+ this.pipeline.add(function (t) {
+ tokens.push(t)
+ return t
+ })
+
+ output = this.pipeline.run(['a', 'b', 'c', 'd', 'foo', 'bar', 'baz'])
+
+ assert.sameMembers(['b', 'd'], tokens)
+ assert.sameMembers(['b', 'd'], output)
+ })
+
+ suite('expanding tokens', function () {
+ test('passed to output', function () {
+ this.pipeline.add(function (t) {
+ return [t, t.toUpperCase()]
+ })
+
+ assert.sameMembers(["foo", "FOO"], this.pipeline.run(['foo']))
+ })
+
+ test('not passed to same function', function () {
+ var received = []
+
+ this.pipeline.add(function (t) {
+ received.push(t)
+ return [t, t.toUpperCase()]
+ })
+
+ this.pipeline.run(['foo'])
+
+ assert.sameMembers(['foo'], received)
+ })
+
+ test('passed to the next pipeline function', function () {
+ var received = []
+
+ this.pipeline.add(function (t) {
+ return [t, t.toUpperCase()]
+ })
+
+ this.pipeline.add(function (t) {
+ received.push(t)
+ })
+
+ this.pipeline.run(['foo'])
+
+ assert.sameMembers(['foo', 'FOO'], received)
+ })
+ })
+ })
+
+ suite('#toJSON', function () {
+ test('returns an array of registered function labels', function () {
+ var fn = function () {}
+
+ lunr.Pipeline.registerFunction(fn, 'fn')
+
+ this.pipeline.add(fn)
+
+ assert.sameMembers(['fn'], this.pipeline.toJSON())
+ })
+ })
+
+ suite('.registerFunction', function () {
+ setup(function () {
+ this.fn = function () {}
+ })
+
+ test('adds a label property to the function', function () {
+ lunr.Pipeline.registerFunction(this.fn, 'fn')
+
+ assert.equal('fn', this.fn.label)
+ })
+
+ test('adds function to the list of registered functions', function () {
+ lunr.Pipeline.registerFunction(this.fn, 'fn')
+
+ assert.equal(this.fn, lunr.Pipeline.registeredFunctions['fn'])
+ })
+ })
+
+ suite('.load', function () {
+ test('with registered functions', function () {
+ var fn = function () {},
+ serializedPipeline = ['fn'],
+ pipeline
+
+ lunr.Pipeline.registerFunction(fn, 'fn')
+
+ pipeline = lunr.Pipeline.load(serializedPipeline)
+
+ assert.equal(1, pipeline._stack.length)
+ assert.equal(fn, pipeline._stack[0])
+ })
+
+ test('with unregisterd functions', function () {
+ var serializedPipeline = ['fn']
+
+ assert.throws(function () {
+ lunr.Pipeline.load(serializedPipeline)
+ })
+ })
+ })
+
+ suite('#reset', function () {
+ test('empties the stack', function () {
+ this.pipeline.add(function () {})
+
+ assert.equal(1, this.pipeline._stack.length)
+
+ this.pipeline.reset()
+
+ assert.equal(0, this.pipeline._stack.length)
+ })
+ })
+})
diff --git a/node_modules/lunr/test/query_lexer_test.js b/node_modules/lunr/test/query_lexer_test.js
new file mode 100644
index 0000000..d12cff6
--- /dev/null
+++ b/node_modules/lunr/test/query_lexer_test.js
@@ -0,0 +1,573 @@
+suite('lunr.QueryLexer', function () {
+ suite('#run', function () {
+
+ var lex = function (str) {
+ var lexer = new lunr.QueryLexer(str)
+ lexer.run()
+ return lexer
+ }
+
+ suite('single term', function () {
+ setup(function () {
+ this.lexer = lex('foo')
+ })
+
+ test('produces 1 lexeme', function () {
+ assert.lengthOf(this.lexer.lexemes, 1)
+ })
+
+ suite('lexeme', function () {
+ setup(function () {
+ this.lexeme = this.lexer.lexemes[0]
+ })
+
+ test('#type', function () {
+ assert.equal(lunr.QueryLexer.TERM, this.lexeme.type)
+ })
+
+ test('#str', function () {
+ assert.equal('foo', this.lexeme.str)
+ })
+
+ test('#start', function () {
+ assert.equal(0, this.lexeme.start)
+ })
+
+ test('#end', function () {
+ assert.equal(3, this.lexeme.end)
+ })
+ })
+ })
+
+ // embedded hyphens should not be confused with
+ // presence operators
+ suite('single term with hyphen', function () {
+ setup(function () {
+ this.lexer = lex('foo-bar')
+ })
+
+ test('produces 2 lexeme', function () {
+ assert.lengthOf(this.lexer.lexemes, 2)
+ })
+
+ suite('lexeme', function () {
+ setup(function () {
+ this.fooLexeme = this.lexer.lexemes[0]
+ this.barLexeme = this.lexer.lexemes[1]
+ })
+
+ test('#type', function () {
+ assert.equal(lunr.QueryLexer.TERM, this.fooLexeme.type)
+ assert.equal(lunr.QueryLexer.TERM, this.barLexeme.type)
+ })
+
+ test('#str', function () {
+ assert.equal('foo', this.fooLexeme.str)
+ assert.equal('bar', this.barLexeme.str)
+ })
+
+ test('#start', function () {
+ assert.equal(0, this.fooLexeme.start)
+ assert.equal(4, this.barLexeme.start)
+ })
+
+ test('#end', function () {
+ assert.equal(3, this.fooLexeme.end)
+ assert.equal(7, this.barLexeme.end)
+ })
+ })
+ })
+
+ suite('term escape char', function () {
+ setup(function () {
+ this.lexer = lex("foo\\:bar")
+ })
+
+ test('produces 1 lexeme', function () {
+ assert.lengthOf(this.lexer.lexemes, 1)
+ })
+
+ suite('lexeme', function () {
+ setup(function () {
+ this.lexeme = this.lexer.lexemes[0]
+ })
+
+ test('#type', function () {
+ assert.equal(lunr.QueryLexer.TERM, this.lexeme.type)
+ })
+
+ test('#str', function () {
+ assert.equal('foo:bar', this.lexeme.str)
+ })
+
+ test('#start', function () {
+ assert.equal(0, this.lexeme.start)
+ })
+
+ test('#end', function () {
+ assert.equal(8, this.lexeme.end)
+ })
+ })
+ })
+
+ suite('multiple terms', function () {
+ setup(function () {
+ this.lexer = lex('foo bar')
+ })
+
+ test('produces 2 lexems', function () {
+ assert.lengthOf(this.lexer.lexemes, 2)
+ })
+
+ suite('lexemes', function () {
+ setup(function () {
+ this.fooLexeme = this.lexer.lexemes[0]
+ this.barLexeme = this.lexer.lexemes[1]
+ })
+
+ test('#type', function () {
+ assert.equal(lunr.QueryLexer.TERM, this.fooLexeme.type)
+ assert.equal(lunr.QueryLexer.TERM, this.barLexeme.type)
+ })
+
+ test('#str', function () {
+ assert.equal('foo', this.fooLexeme.str)
+ assert.equal('bar', this.barLexeme.str)
+ })
+
+ test('#start', function () {
+ assert.equal(0, this.fooLexeme.start)
+ assert.equal(4, this.barLexeme.start)
+ })
+
+ test('#end', function () {
+ assert.equal(3, this.fooLexeme.end)
+ assert.equal(7, this.barLexeme.end)
+ })
+ })
+ })
+
+ suite('multiple terms with presence', function () {
+ setup(function () {
+ this.lexer = lex('+foo +bar')
+ })
+
+ test('produces 2 lexems', function () {
+ assert.lengthOf(this.lexer.lexemes, 4)
+ })
+
+ suite('lexemes', function () {
+ setup(function () {
+ this.fooPresenceLexeme = this.lexer.lexemes[0]
+ this.fooTermLexeme = this.lexer.lexemes[1]
+
+ this.barPresenceLexeme = this.lexer.lexemes[2]
+ this.barTermLexeme = this.lexer.lexemes[3]
+ })
+
+ test('#type', function () {
+ assert.equal(lunr.QueryLexer.TERM, this.fooTermLexeme.type)
+ assert.equal(lunr.QueryLexer.TERM, this.barTermLexeme.type)
+
+ assert.equal(lunr.QueryLexer.PRESENCE, this.fooPresenceLexeme.type)
+ assert.equal(lunr.QueryLexer.PRESENCE, this.barPresenceLexeme.type)
+ })
+
+ test('#str', function () {
+ assert.equal('foo', this.fooTermLexeme.str)
+ assert.equal('bar', this.barTermLexeme.str)
+
+ assert.equal('+', this.fooPresenceLexeme.str)
+ assert.equal('+', this.barPresenceLexeme.str)
+ })
+ })
+ })
+
+ suite('multiple terms with presence and fuzz', function () {
+ setup(function () {
+ this.lexer = lex('+foo~1 +bar')
+ })
+
+ test('produces n lexemes', function () {
+ assert.lengthOf(this.lexer.lexemes, 5)
+ })
+
+ suite('lexemes', function () {
+ setup(function () {
+ this.fooPresenceLexeme = this.lexer.lexemes[0]
+ this.fooTermLexeme = this.lexer.lexemes[1]
+ this.fooFuzzLexeme = this.lexer.lexemes[2]
+ this.barPresenceLexeme = this.lexer.lexemes[3]
+ this.barTermLexeme = this.lexer.lexemes[4]
+ })
+
+ test('#type', function () {
+ assert.equal(lunr.QueryLexer.PRESENCE, this.fooPresenceLexeme.type)
+ assert.equal(lunr.QueryLexer.TERM, this.fooTermLexeme.type)
+ assert.equal(lunr.QueryLexer.EDIT_DISTANCE, this.fooFuzzLexeme.type)
+ assert.equal(lunr.QueryLexer.PRESENCE, this.barPresenceLexeme.type)
+ assert.equal(lunr.QueryLexer.TERM, this.barTermLexeme.type)
+ })
+ })
+ })
+
+ suite('separator length > 1', function () {
+ setup(function () {
+ this.lexer = lex('foo bar')
+ })
+
+ test('produces 2 lexems', function () {
+ assert.lengthOf(this.lexer.lexemes, 2)
+ })
+
+ suite('lexemes', function () {
+ setup(function () {
+ this.fooLexeme = this.lexer.lexemes[0]
+ this.barLexeme = this.lexer.lexemes[1]
+ })
+
+ test('#type', function () {
+ assert.equal(lunr.QueryLexer.TERM, this.fooLexeme.type)
+ assert.equal(lunr.QueryLexer.TERM, this.barLexeme.type)
+ })
+
+ test('#str', function () {
+ assert.equal('foo', this.fooLexeme.str)
+ assert.equal('bar', this.barLexeme.str)
+ })
+
+ test('#start', function () {
+ assert.equal(0, this.fooLexeme.start)
+ assert.equal(7, this.barLexeme.start)
+ })
+
+ test('#end', function () {
+ assert.equal(3, this.fooLexeme.end)
+ assert.equal(10, this.barLexeme.end)
+ })
+ })
+ })
+
+ suite('hyphen (-) considered a seperator', function () {
+ setup(function () {
+ this.lexer = lex('foo-bar')
+ })
+
+ test('produces 1 lexeme', function () {
+ assert.lengthOf(this.lexer.lexemes, 2)
+ })
+ })
+
+ suite('term with field', function () {
+ setup(function () {
+ this.lexer = lex('title:foo')
+ })
+
+ test('produces 2 lexems', function () {
+ assert.lengthOf(this.lexer.lexemes, 2)
+ })
+
+ suite('lexemes', function () {
+ setup(function () {
+ this.fieldLexeme = this.lexer.lexemes[0]
+ this.termLexeme = this.lexer.lexemes[1]
+ })
+
+ test('#type', function () {
+ assert.equal(lunr.QueryLexer.FIELD, this.fieldLexeme.type)
+ assert.equal(lunr.QueryLexer.TERM, this.termLexeme.type)
+ })
+
+ test('#str', function () {
+ assert.equal('title', this.fieldLexeme.str)
+ assert.equal('foo', this.termLexeme.str)
+ })
+
+ test('#start', function () {
+ assert.equal(0, this.fieldLexeme.start)
+ assert.equal(6, this.termLexeme.start)
+ })
+
+ test('#end', function () {
+ assert.equal(5, this.fieldLexeme.end)
+ assert.equal(9, this.termLexeme.end)
+ })
+ })
+ })
+
+ suite('term with field with escape char', function () {
+ setup(function () {
+ this.lexer = lex("ti\\:tle:foo")
+ })
+
+ test('produces 1 lexeme', function () {
+ assert.lengthOf(this.lexer.lexemes, 2)
+ })
+
+ suite('lexeme', function () {
+ setup(function () {
+ this.fieldLexeme = this.lexer.lexemes[0]
+ this.termLexeme = this.lexer.lexemes[1]
+ })
+
+ test('#type', function () {
+ assert.equal(lunr.QueryLexer.FIELD, this.fieldLexeme.type)
+ assert.equal(lunr.QueryLexer.TERM, this.termLexeme.type)
+ })
+
+ test('#str', function () {
+ assert.equal('ti:tle', this.fieldLexeme.str)
+ assert.equal('foo', this.termLexeme.str)
+ })
+
+ test('#start', function () {
+ assert.equal(0, this.fieldLexeme.start)
+ assert.equal(8, this.termLexeme.start)
+ })
+
+ test('#end', function () {
+ assert.equal(7, this.fieldLexeme.end)
+ assert.equal(11, this.termLexeme.end)
+ })
+ })
+ })
+
+ suite('term with presence required', function () {
+ setup(function () {
+ this.lexer = lex('+foo')
+ })
+
+ test('produces 2 lexemes', function () {
+ assert.lengthOf(this.lexer.lexemes, 2)
+ })
+
+ suite('lexemes', function () {
+ setup(function () {
+ this.presenceLexeme = this.lexer.lexemes[0]
+ this.termLexeme = this.lexer.lexemes[1]
+ })
+
+ test('#type', function () {
+ assert.equal(lunr.QueryLexer.PRESENCE, this.presenceLexeme.type)
+ assert.equal(lunr.QueryLexer.TERM, this.termLexeme.type)
+ })
+
+ test('#str', function () {
+ assert.equal('+', this.presenceLexeme.str)
+ assert.equal('foo', this.termLexeme.str)
+ })
+
+ test('#start', function () {
+ assert.equal(1, this.termLexeme.start)
+ assert.equal(0, this.presenceLexeme.start)
+ })
+
+ test('#end', function () {
+ assert.equal(4, this.termLexeme.end)
+ assert.equal(1, this.presenceLexeme.end)
+ })
+ })
+ })
+
+ suite('term with field with presence required', function () {
+ setup(function () {
+ this.lexer = lex('+title:foo')
+ })
+
+ test('produces 3 lexemes', function () {
+ assert.lengthOf(this.lexer.lexemes, 3)
+ })
+
+ suite('lexemes', function () {
+ setup(function () {
+ this.presenceLexeme = this.lexer.lexemes[0]
+ this.fieldLexeme = this.lexer.lexemes[1]
+ this.termLexeme = this.lexer.lexemes[2]
+ })
+
+ test('#type', function () {
+ assert.equal(lunr.QueryLexer.PRESENCE, this.presenceLexeme.type)
+ assert.equal(lunr.QueryLexer.FIELD, this.fieldLexeme.type)
+ assert.equal(lunr.QueryLexer.TERM, this.termLexeme.type)
+ })
+
+ test('#str', function () {
+ assert.equal('+', this.presenceLexeme.str)
+ assert.equal('title', this.fieldLexeme.str)
+ assert.equal('foo', this.termLexeme.str)
+ })
+
+ test('#start', function () {
+ assert.equal(0, this.presenceLexeme.start)
+ assert.equal(1, this.fieldLexeme.start)
+ assert.equal(7, this.termLexeme.start)
+ })
+
+ test('#end', function () {
+ assert.equal(1, this.presenceLexeme.end)
+ assert.equal(6, this.fieldLexeme.end)
+ assert.equal(10, this.termLexeme.end)
+ })
+ })
+ })
+
+ suite('term with presence prohibited', function () {
+ setup(function () {
+ this.lexer = lex('-foo')
+ })
+
+ test('produces 2 lexemes', function () {
+ assert.lengthOf(this.lexer.lexemes, 2)
+ })
+
+ suite('lexemes', function () {
+ setup(function () {
+ this.presenceLexeme = this.lexer.lexemes[0]
+ this.termLexeme = this.lexer.lexemes[1]
+ })
+
+ test('#type', function () {
+ assert.equal(lunr.QueryLexer.PRESENCE, this.presenceLexeme.type)
+ assert.equal(lunr.QueryLexer.TERM, this.termLexeme.type)
+ })
+
+ test('#str', function () {
+ assert.equal('-', this.presenceLexeme.str)
+ assert.equal('foo', this.termLexeme.str)
+ })
+
+ test('#start', function () {
+ assert.equal(1, this.termLexeme.start)
+ assert.equal(0, this.presenceLexeme.start)
+ })
+
+ test('#end', function () {
+ assert.equal(4, this.termLexeme.end)
+ assert.equal(1, this.presenceLexeme.end)
+ })
+ })
+ })
+
+ suite('term with edit distance', function () {
+ setup(function () {
+ this.lexer = lex('foo~2')
+ })
+
+ test('produces 2 lexems', function () {
+ assert.lengthOf(this.lexer.lexemes, 2)
+ })
+
+ suite('lexemes', function () {
+ setup(function () {
+ this.termLexeme = this.lexer.lexemes[0]
+ this.editDistanceLexeme = this.lexer.lexemes[1]
+ })
+
+ test('#type', function () {
+ assert.equal(lunr.QueryLexer.TERM, this.termLexeme.type)
+ assert.equal(lunr.QueryLexer.EDIT_DISTANCE, this.editDistanceLexeme.type)
+ })
+
+ test('#str', function () {
+ assert.equal('foo', this.termLexeme.str)
+ assert.equal('2', this.editDistanceLexeme.str)
+ })
+
+ test('#start', function () {
+ assert.equal(0, this.termLexeme.start)
+ assert.equal(4, this.editDistanceLexeme.start)
+ })
+
+ test('#end', function () {
+ assert.equal(3, this.termLexeme.end)
+ assert.equal(5, this.editDistanceLexeme.end)
+ })
+ })
+ })
+
+ suite('term with boost', function () {
+ setup(function () {
+ this.lexer = lex('foo^10')
+ })
+
+ test('produces 2 lexems', function () {
+ assert.lengthOf(this.lexer.lexemes, 2)
+ })
+
+ suite('lexemes', function () {
+ setup(function () {
+ this.termLexeme = this.lexer.lexemes[0]
+ this.boostLexeme = this.lexer.lexemes[1]
+ })
+
+ test('#type', function () {
+ assert.equal(lunr.QueryLexer.TERM, this.termLexeme.type)
+ assert.equal(lunr.QueryLexer.BOOST, this.boostLexeme.type)
+ })
+
+ test('#str', function () {
+ assert.equal('foo', this.termLexeme.str)
+ assert.equal('10', this.boostLexeme.str)
+ })
+
+ test('#start', function () {
+ assert.equal(0, this.termLexeme.start)
+ assert.equal(4, this.boostLexeme.start)
+ })
+
+ test('#end', function () {
+ assert.equal(3, this.termLexeme.end)
+ assert.equal(6, this.boostLexeme.end)
+ })
+ })
+ })
+
+ suite('term with field, boost and edit distance', function () {
+ setup(function () {
+ this.lexer = lex('title:foo^10~5')
+ })
+
+ test('produces 4 lexems', function () {
+ assert.lengthOf(this.lexer.lexemes, 4)
+ })
+
+ suite('lexemes', function () {
+ setup(function () {
+ this.fieldLexeme = this.lexer.lexemes[0]
+ this.termLexeme = this.lexer.lexemes[1]
+ this.boostLexeme = this.lexer.lexemes[2]
+ this.editDistanceLexeme = this.lexer.lexemes[3]
+ })
+
+ test('#type', function () {
+ assert.equal(lunr.QueryLexer.FIELD, this.fieldLexeme.type)
+ assert.equal(lunr.QueryLexer.TERM, this.termLexeme.type)
+ assert.equal(lunr.QueryLexer.BOOST, this.boostLexeme.type)
+ assert.equal(lunr.QueryLexer.EDIT_DISTANCE, this.editDistanceLexeme.type)
+ })
+
+ test('#str', function () {
+ assert.equal('title', this.fieldLexeme.str)
+ assert.equal('foo', this.termLexeme.str)
+ assert.equal('10', this.boostLexeme.str)
+ assert.equal('5', this.editDistanceLexeme.str)
+ })
+
+ test('#start', function () {
+ assert.equal(0, this.fieldLexeme.start)
+ assert.equal(6, this.termLexeme.start)
+ assert.equal(10, this.boostLexeme.start)
+ assert.equal(13, this.editDistanceLexeme.start)
+ })
+
+ test('#end', function () {
+ assert.equal(5, this.fieldLexeme.end)
+ assert.equal(9, this.termLexeme.end)
+ assert.equal(12, this.boostLexeme.end)
+ assert.equal(14, this.editDistanceLexeme.end)
+ })
+ })
+ })
+
+ })
+})
diff --git a/node_modules/lunr/test/query_parser_test.js b/node_modules/lunr/test/query_parser_test.js
new file mode 100644
index 0000000..a17ca1a
--- /dev/null
+++ b/node_modules/lunr/test/query_parser_test.js
@@ -0,0 +1,552 @@
+suite('lunr.QueryParser', function () {
+ var parse = function (q) {
+ var query = new lunr.Query (['title', 'body']),
+ parser = new lunr.QueryParser(q, query)
+
+ parser.parse()
+
+ return query.clauses
+ }
+
+ suite('#parse', function () {
+ suite('single term', function () {
+ setup(function () {
+ this.clauses = parse('foo')
+ })
+
+ test('has 1 clause', function () {
+ assert.lengthOf(this.clauses, 1)
+ })
+
+ suite('clauses', function () {
+ setup(function () {
+ this.clause = this.clauses[0]
+ })
+
+ test('term', function () {
+ assert.equal('foo', this.clause.term)
+ })
+
+ test('fields', function () {
+ assert.sameMembers(['title', 'body'], this.clause.fields)
+ })
+
+ test('presence', function () {
+ assert.equal(lunr.Query.presence.OPTIONAL, this.clause.presence)
+ })
+
+ test('usePipeline', function () {
+ assert.ok(this.clause.usePipeline)
+ })
+ })
+ })
+
+ suite('single term, uppercase', function () {
+ setup(function () {
+ this.clauses = parse('FOO')
+ })
+
+ test('has 1 clause', function () {
+ assert.lengthOf(this.clauses, 1)
+ })
+
+ suite('clauses', function () {
+ setup(function () {
+ this.clause = this.clauses[0]
+ })
+
+ test('term', function () {
+ assert.equal('foo', this.clause.term)
+ })
+
+ test('fields', function () {
+ assert.sameMembers(['title', 'body'], this.clause.fields)
+ })
+
+ test('usePipeline', function () {
+ assert.ok(this.clause.usePipeline)
+ })
+ })
+ })
+
+ suite('single term with wildcard', function () {
+ setup(function () {
+ this.clauses = parse('fo*')
+ })
+
+ test('has 1 clause', function () {
+ assert.lengthOf(this.clauses, 1)
+ })
+
+ suite('clauses', function () {
+ setup(function () {
+ this.clause = this.clauses[0]
+ })
+
+ test('#term', function () {
+ assert.equal('fo*', this.clause.term)
+ })
+
+ test('#usePipeline', function () {
+ assert.ok(!this.clause.usePipeline)
+ })
+ })
+ })
+
+ suite('multiple terms', function () {
+ setup(function () {
+ this.clauses = parse('foo bar')
+ })
+
+ test('has 2 clause', function () {
+ assert.lengthOf(this.clauses, 2)
+ })
+
+ suite('clauses', function () {
+ test('#term', function () {
+ assert.equal('foo', this.clauses[0].term)
+ assert.equal('bar', this.clauses[1].term)
+ })
+ })
+ })
+
+ suite('multiple terms with presence', function () {
+ setup(function () {
+ this.clauses = parse('+foo +bar')
+ })
+
+ test('has 2 clause', function () {
+ assert.lengthOf(this.clauses, 2)
+ })
+ })
+
+ suite('edit distance followed by presence', function () {
+ setup(function () {
+ this.clauses = parse('foo~10 +bar')
+ })
+
+ test('has 2 clause', function () {
+ assert.lengthOf(this.clauses, 2)
+ })
+
+ suite('clauses', function () {
+ setup(function () {
+ this.fooClause = this.clauses[0]
+ this.barClause = this.clauses[1]
+ })
+
+ test('#term', function () {
+ assert.equal('foo', this.fooClause.term)
+ assert.equal('bar', this.barClause.term)
+ })
+
+ test('#presence', function () {
+ assert.equal(lunr.Query.presence.OPTIONAL, this.fooClause.presence)
+ assert.equal(lunr.Query.presence.REQUIRED, this.barClause.presence)
+ })
+
+ test('#editDistance', function () {
+ assert.equal(10, this.fooClause.editDistance)
+ // It feels dirty asserting that something is undefined
+ // but there is no Optional so this is what we are reduced to
+ assert.isUndefined(this.barClause.editDistance)
+ })
+ })
+ })
+
+ suite('boost followed by presence', function () {
+ setup(function () {
+ this.clauses = parse('foo^10 +bar')
+ })
+
+ test('has 2 clause', function () {
+ assert.lengthOf(this.clauses, 2)
+ })
+
+ suite('clauses', function () {
+ setup(function () {
+ this.fooClause = this.clauses[0]
+ this.barClause = this.clauses[1]
+ })
+
+ test('#term', function () {
+ assert.equal('foo', this.fooClause.term)
+ assert.equal('bar', this.barClause.term)
+ })
+
+ test('#presence', function () {
+ assert.equal(lunr.Query.presence.OPTIONAL, this.fooClause.presence)
+ assert.equal(lunr.Query.presence.REQUIRED, this.barClause.presence)
+ })
+
+ test('#boost', function () {
+ assert.equal(10, this.fooClause.boost)
+ assert.equal(1, this.barClause.boost)
+ })
+ })
+ })
+
+ suite('field without a term', function () {
+ test('fails with lunr.QueryParseError', function () {
+ assert.throws(function () { parse('title:') }, lunr.QueryParseError)
+ })
+ })
+
+ suite('unknown field', function () {
+ test('fails with lunr.QueryParseError', function () {
+ assert.throws(function () { parse('unknown:foo') }, lunr.QueryParseError)
+ })
+ })
+
+ suite('term with field', function () {
+ setup(function () {
+ this.clauses = parse('title:foo')
+ })
+
+ test('has 1 clause', function () {
+ assert.lengthOf(this.clauses, 1)
+ })
+
+ test('clause contains only scoped field', function () {
+ assert.sameMembers(this.clauses[0].fields, ['title'])
+ })
+ })
+
+ suite('uppercase field with uppercase term', function () {
+ setup(function () {
+ // Using a different query to the rest of the tests
+ // so that only this test has to worry about an upcase field name
+ var query = new lunr.Query (['TITLE']),
+ parser = new lunr.QueryParser("TITLE:FOO", query)
+
+ parser.parse()
+
+ this.clauses = query.clauses
+ })
+
+ test('has 1 clause', function () {
+ assert.lengthOf(this.clauses, 1)
+ })
+
+ test('clause contains downcased term', function () {
+ assert.equal(this.clauses[0].term, 'foo')
+ })
+
+ test('clause contains only scoped field', function () {
+ assert.sameMembers(this.clauses[0].fields, ['TITLE'])
+ })
+ })
+
+ suite('multiple terms scoped to different fields', function () {
+ setup(function () {
+ this.clauses = parse('title:foo body:bar')
+ })
+
+ test('has 2 clauses', function () {
+ assert.lengthOf(this.clauses, 2)
+ })
+
+ test('fields', function () {
+ assert.sameMembers(['title'], this.clauses[0].fields)
+ assert.sameMembers(['body'], this.clauses[1].fields)
+ })
+
+ test('terms', function () {
+ assert.equal('foo', this.clauses[0].term)
+ assert.equal('bar', this.clauses[1].term)
+ })
+ })
+
+ suite('single term with edit distance', function () {
+ setup(function () {
+ this.clauses = parse('foo~2')
+ })
+
+ test('has 1 clause', function () {
+ assert.lengthOf(this.clauses, 1)
+ })
+
+ test('term', function () {
+ assert.equal('foo', this.clauses[0].term)
+ })
+
+ test('editDistance', function () {
+ assert.equal(2, this.clauses[0].editDistance)
+ })
+
+ test('fields', function () {
+ assert.sameMembers(['title', 'body'], this.clauses[0].fields)
+ })
+ })
+
+ suite('multiple terms with edit distance', function () {
+ setup(function () {
+ this.clauses = parse('foo~2 bar~3')
+ })
+
+ test('has 2 clauses', function () {
+ assert.lengthOf(this.clauses, 2)
+ })
+
+ test('term', function () {
+ assert.equal('foo', this.clauses[0].term)
+ assert.equal('bar', this.clauses[1].term)
+ })
+
+ test('editDistance', function () {
+ assert.equal(2, this.clauses[0].editDistance)
+ assert.equal(3, this.clauses[1].editDistance)
+ })
+
+ test('fields', function () {
+ assert.sameMembers(['title', 'body'], this.clauses[0].fields)
+ assert.sameMembers(['title', 'body'], this.clauses[1].fields)
+ })
+ })
+
+ suite('single term scoped to field with edit distance', function () {
+ setup(function () {
+ this.clauses = parse('title:foo~2')
+ })
+
+ test('has 1 clause', function () {
+ assert.lengthOf(this.clauses, 1)
+ })
+
+ test('term', function () {
+ assert.equal('foo', this.clauses[0].term)
+ })
+
+ test('editDistance', function () {
+ assert.equal(2, this.clauses[0].editDistance)
+ })
+
+ test('fields', function () {
+ assert.sameMembers(['title'], this.clauses[0].fields)
+ })
+ })
+
+ suite('non-numeric edit distance', function () {
+ test('throws lunr.QueryParseError', function () {
+ assert.throws(function () { parse('foo~a') }, lunr.QueryParseError)
+ })
+ })
+
+ suite('edit distance without a term', function () {
+ test('throws lunr.QueryParseError', function () {
+ assert.throws(function () { parse('~2') }, lunr.QueryParseError)
+ })
+ })
+
+ suite('single term with boost', function () {
+ setup(function () {
+ this.clauses = parse('foo^2')
+ })
+
+ test('has 1 clause', function () {
+ assert.lengthOf(this.clauses, 1)
+ })
+
+ test('term', function () {
+ assert.equal('foo', this.clauses[0].term)
+ })
+
+ test('boost', function () {
+ assert.equal(2, this.clauses[0].boost)
+ })
+
+ test('fields', function () {
+ assert.sameMembers(['title', 'body'], this.clauses[0].fields)
+ })
+ })
+
+ suite('non-numeric boost', function () {
+ test('throws lunr.QueryParseError', function () {
+ assert.throws(function () { parse('foo^a') }, lunr.QueryParseError)
+ })
+ })
+
+ suite('boost without a term', function () {
+ test('throws lunr.QueryParseError', function () {
+ assert.throws(function () { parse('^2') }, lunr.QueryParseError)
+ })
+ })
+
+ suite('multiple terms with boost', function () {
+ setup(function () {
+ this.clauses = parse('foo^2 bar^3')
+ })
+
+ test('has 2 clauses', function () {
+ assert.lengthOf(this.clauses, 2)
+ })
+
+ test('term', function () {
+ assert.equal('foo', this.clauses[0].term)
+ assert.equal('bar', this.clauses[1].term)
+ })
+
+ test('boost', function () {
+ assert.equal(2, this.clauses[0].boost)
+ assert.equal(3, this.clauses[1].boost)
+ })
+
+ test('fields', function () {
+ assert.sameMembers(['title', 'body'], this.clauses[0].fields)
+ assert.sameMembers(['title', 'body'], this.clauses[1].fields)
+ })
+ })
+
+ suite('term scoped by field with boost', function () {
+ setup(function () {
+ this.clauses = parse('title:foo^2')
+ })
+
+ test('has 1 clause', function () {
+ assert.lengthOf(this.clauses, 1)
+ })
+
+ test('term', function () {
+ assert.equal('foo', this.clauses[0].term)
+ })
+
+ test('boost', function () {
+ assert.equal(2, this.clauses[0].boost)
+ })
+
+ test('fields', function () {
+ assert.sameMembers(['title'], this.clauses[0].fields)
+ })
+ })
+
+ suite('term with presence required', function () {
+ setup(function () {
+ this.clauses = parse('+foo')
+ })
+
+ test('has 1 clauses', function () {
+ assert.lengthOf(this.clauses, 1)
+ })
+
+ test('term', function () {
+ assert.equal('foo', this.clauses[0].term)
+ })
+
+ test('boost', function () {
+ assert.equal(1, this.clauses[0].boost)
+ })
+
+ test('fields', function () {
+ assert.sameMembers(['title', 'body'], this.clauses[0].fields)
+ })
+
+ test('presence', function () {
+ assert.equal(lunr.Query.presence.REQUIRED, this.clauses[0].presence)
+ })
+ })
+
+ suite('term with presence prohibited', function () {
+ setup(function () {
+ this.clauses = parse('-foo')
+ })
+
+ test('has 1 clauses', function () {
+ assert.lengthOf(this.clauses, 1)
+ })
+
+ test('term', function () {
+ assert.equal('foo', this.clauses[0].term)
+ })
+
+ test('boost', function () {
+ assert.equal(1, this.clauses[0].boost)
+ })
+
+ test('fields', function () {
+ assert.sameMembers(['title', 'body'], this.clauses[0].fields)
+ })
+
+ test('presence', function () {
+ assert.equal(lunr.Query.presence.PROHIBITED, this.clauses[0].presence)
+ })
+ })
+
+ suite('term scoped by field with presence required', function () {
+ setup(function () {
+ this.clauses = parse('+title:foo')
+ })
+
+ test('has 1 clauses', function () {
+ assert.lengthOf(this.clauses, 1)
+ })
+
+ test('term', function () {
+ assert.equal('foo', this.clauses[0].term)
+ })
+
+ test('boost', function () {
+ assert.equal(1, this.clauses[0].boost)
+ })
+
+ test('fields', function () {
+ assert.sameMembers(['title'], this.clauses[0].fields)
+ })
+
+ test('presence', function () {
+ assert.equal(lunr.Query.presence.REQUIRED, this.clauses[0].presence)
+ })
+ })
+
+ suite('term scoped by field with presence prohibited', function () {
+ setup(function () {
+ this.clauses = parse('-title:foo')
+ })
+
+ test('has 1 clauses', function () {
+ assert.lengthOf(this.clauses, 1)
+ })
+
+ test('term', function () {
+ assert.equal('foo', this.clauses[0].term)
+ })
+
+ test('boost', function () {
+ assert.equal(1, this.clauses[0].boost)
+ })
+
+ test('fields', function () {
+ assert.sameMembers(['title'], this.clauses[0].fields)
+ })
+
+ test('presence', function () {
+ assert.equal(lunr.Query.presence.PROHIBITED, this.clauses[0].presence)
+ })
+ })
+ })
+
+ suite('term with boost and edit distance', function () {
+ setup(function () {
+ this.clauses = parse('foo^2~3')
+ })
+
+ test('has 1 clause', function () {
+ assert.lengthOf(this.clauses, 1)
+ })
+
+ test('term', function () {
+ assert.equal('foo', this.clauses[0].term)
+ })
+
+ test('editDistance', function () {
+ assert.equal(3, this.clauses[0].editDistance)
+ })
+
+ test('boost', function () {
+ assert.equal(2, this.clauses[0].boost)
+ })
+
+ test('fields', function () {
+ assert.sameMembers(['title', 'body'], this.clauses[0].fields)
+ })
+ })
+})
diff --git a/node_modules/lunr/test/query_test.js b/node_modules/lunr/test/query_test.js
new file mode 100644
index 0000000..a47b110
--- /dev/null
+++ b/node_modules/lunr/test/query_test.js
@@ -0,0 +1,244 @@
+suite('lunr.Query', function () {
+ var allFields = ['title', 'body']
+
+ suite('#term', function () {
+ setup(function () {
+ this.query = new lunr.Query (allFields)
+ })
+
+ suite('single string term', function () {
+ setup(function () {
+ this.query.term('foo')
+ })
+
+ test('adds a single clause', function () {
+ assert.equal(this.query.clauses.length, 1)
+ })
+
+ test('clause has the correct term', function () {
+ assert.equal(this.query.clauses[0].term, 'foo')
+ })
+ })
+
+ suite('single token term', function () {
+ setup(function () {
+ this.query.term(new lunr.Token('foo'))
+ })
+
+ test('adds a single clause', function () {
+ assert.equal(this.query.clauses.length, 1)
+ })
+
+ test('clause has the correct term', function () {
+ assert.equal(this.query.clauses[0].term, 'foo')
+ })
+ })
+
+ suite('multiple string terms', function () {
+ setup(function () {
+ this.query.term(['foo', 'bar'])
+ })
+
+ test('adds a single clause', function () {
+ assert.equal(this.query.clauses.length, 2)
+ })
+
+ test('clause has the correct term', function () {
+ var terms = this.query.clauses.map(function (c) { return c.term })
+ assert.sameMembers(terms, ['foo', 'bar'])
+ })
+ })
+
+ suite('multiple string terms with options', function () {
+ setup(function () {
+ this.query.term(['foo', 'bar'], { usePipeline: false })
+ })
+
+ test('clause has the correct term', function () {
+ var terms = this.query.clauses.map(function (c) { return c.term })
+ assert.sameMembers(terms, ['foo', 'bar'])
+ })
+ })
+
+ suite('multiple token terms', function () {
+ setup(function () {
+ this.query.term(lunr.tokenizer('foo bar'))
+ })
+
+ test('adds a single clause', function () {
+ assert.equal(this.query.clauses.length, 2)
+ })
+
+ test('clause has the correct term', function () {
+ var terms = this.query.clauses.map(function (c) { return c.term })
+ assert.sameMembers(terms, ['foo', 'bar'])
+ })
+ })
+ })
+
+ suite('#clause', function () {
+ setup(function () {
+ this.query = new lunr.Query (allFields)
+ })
+
+ suite('defaults', function () {
+ setup(function () {
+ this.query.clause({term: 'foo'})
+ this.clause = this.query.clauses[0]
+ })
+
+ test('fields', function () {
+ assert.sameMembers(this.clause.fields, allFields)
+ })
+
+ test('boost', function () {
+ assert.equal(this.clause.boost, 1)
+ })
+
+ test('usePipeline', function () {
+ assert.isTrue(this.clause.usePipeline)
+ })
+ })
+
+ suite('specified', function () {
+ setup(function () {
+ this.query.clause({
+ term: 'foo',
+ boost: 10,
+ fields: ['title'],
+ usePipeline: false
+ })
+
+ this.clause = this.query.clauses[0]
+ })
+
+ test('fields', function () {
+ assert.sameMembers(this.clause.fields, ['title'])
+ })
+
+ test('boost', function () {
+ assert.equal(this.clause.boost, 10)
+ })
+
+ test('usePipeline', function () {
+ assert.isFalse(this.clause.usePipeline)
+ })
+ })
+
+ suite('wildcards', function () {
+ suite('none', function () {
+ setup(function () {
+ this.query.clause({
+ term: 'foo',
+ wildcard: lunr.Query.wildcard.NONE
+ })
+
+ this.clause = this.query.clauses[0]
+ })
+
+ test('no wildcard', function () {
+ assert.equal(this.clause.term, 'foo')
+ })
+ })
+
+ suite('leading', function () {
+ setup(function () {
+ this.query.clause({
+ term: 'foo',
+ wildcard: lunr.Query.wildcard.LEADING
+ })
+
+ this.clause = this.query.clauses[0]
+ })
+
+ test('adds wildcard', function () {
+ assert.equal(this.clause.term, '*foo')
+ })
+ })
+
+ suite('trailing', function () {
+ setup(function () {
+ this.query.clause({
+ term: 'foo',
+ wildcard: lunr.Query.wildcard.TRAILING
+ })
+
+ this.clause = this.query.clauses[0]
+ })
+
+ test('adds wildcard', function () {
+ assert.equal(this.clause.term, 'foo*')
+ })
+ })
+
+ suite('leading and trailing', function () {
+ setup(function () {
+ this.query.clause({
+ term: 'foo',
+ wildcard: lunr.Query.wildcard.TRAILING | lunr.Query.wildcard.LEADING
+ })
+
+ this.clause = this.query.clauses[0]
+ })
+
+ test('adds wildcards', function () {
+ assert.equal(this.clause.term, '*foo*')
+ })
+ })
+
+ suite('existing', function () {
+ setup(function () {
+ this.query.clause({
+ term: '*foo*',
+ wildcard: lunr.Query.wildcard.TRAILING | lunr.Query.wildcard.LEADING
+ })
+
+ this.clause = this.query.clauses[0]
+ })
+
+ test('no additional wildcards', function () {
+ assert.equal(this.clause.term, '*foo*')
+ })
+ })
+ })
+ })
+
+ suite('#isNegated', function () {
+ setup(function () {
+ this.query = new lunr.Query (allFields)
+ })
+
+ suite('all prohibited', function () {
+ setup(function () {
+ this.query.term('foo', { presence: lunr.Query.presence.PROHIBITED })
+ this.query.term('bar', { presence: lunr.Query.presence.PROHIBITED })
+ })
+
+ test('is negated', function () {
+ assert.isTrue(this.query.isNegated())
+ })
+ })
+
+ suite('some prohibited', function () {
+ setup(function () {
+ this.query.term('foo', { presence: lunr.Query.presence.PROHIBITED })
+ this.query.term('bar', { presence: lunr.Query.presence.REQUIRED })
+ })
+
+ test('is negated', function () {
+ assert.isFalse(this.query.isNegated())
+ })
+ })
+
+ suite('none prohibited', function () {
+ setup(function () {
+ this.query.term('foo', { presence: lunr.Query.presence.OPTIONAL })
+ this.query.term('bar', { presence: lunr.Query.presence.REQUIRED })
+ })
+
+ test('is negated', function () {
+ assert.isFalse(this.query.isNegated())
+ })
+ })
+ })
+})
diff --git a/node_modules/lunr/test/search_test.js b/node_modules/lunr/test/search_test.js
new file mode 100644
index 0000000..a652fe9
--- /dev/null
+++ b/node_modules/lunr/test/search_test.js
@@ -0,0 +1,1100 @@
+suite('search', function () {
+ setup(function () {
+ this.documents = [{
+ id: 'a',
+ title: 'Mr. Green kills Colonel Mustard',
+ body: 'Mr. Green killed Colonel Mustard in the study with the candlestick. Mr. Green is not a very nice fellow.',
+ wordCount: 19
+ },{
+ id: 'b',
+ title: 'Plumb waters plant',
+ body: 'Professor Plumb has a green plant in his study',
+ wordCount: 9
+ },{
+ id: 'c',
+ title: 'Scarlett helps Professor',
+ body: 'Miss Scarlett watered Professor Plumbs green plant while he was away from his office last week.',
+ wordCount: 16
+ }]
+ })
+
+ suite('with build-time field boosts', function () {
+ setup(function () {
+ var self = this
+
+ this.idx = lunr(function () {
+ this.ref('id')
+ this.field('title')
+ this.field('body', { boost: 10 })
+
+ self.documents.forEach(function (document) {
+ this.add(document)
+ }, this)
+ })
+ })
+
+ suite('no query boosts', function () {
+ var assertions = function () {
+ test('document b ranks highest', function () {
+ assert.equal('b', this.results[0].ref)
+ })
+ }
+
+ suite('#search', function () {
+ setup(function () {
+ this.results = this.idx.search('professor')
+ })
+
+ assertions()
+ })
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('professor')
+ })
+ })
+
+ assertions()
+ })
+ })
+ })
+
+ suite('with build-time document boost', function () {
+ setup(function () {
+ var self = this
+
+ this.idx = lunr(function () {
+ this.ref('id')
+ this.field('title')
+ this.field('body')
+
+ self.documents.forEach(function (document) {
+ var boost = document.id == 'c' ? 10 : 1
+ this.add(document, { boost: boost })
+ }, this)
+ })
+ })
+
+ suite('no query boost', function () {
+ var assertions = function () {
+ test('document c ranks highest', function () {
+ assert.equal('c', this.results[0].ref)
+ })
+ }
+
+ suite('#search', function () {
+ setup(function () {
+ this.results = this.idx.search('plumb')
+ })
+
+ assertions()
+ })
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('plumb')
+ })
+ })
+
+ assertions()
+ })
+ })
+
+ suite('with query boost', function () {
+ var assertions = function () {
+ test('document b ranks highest', function () {
+ assert.equal('b', this.results[0].ref)
+ })
+ }
+
+ suite('#search', function () {
+ setup(function () {
+ this.results = this.idx.search('green study^10')
+ })
+
+ assertions()
+ })
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('green')
+ q.term('study', { boost: 10 })
+ })
+ })
+
+ assertions()
+ })
+ })
+ })
+
+ suite('without build-time boosts', function () {
+ setup(function () {
+ var self = this
+
+ this.idx = lunr(function () {
+ this.ref('id')
+ this.field('title')
+ this.field('body')
+
+ self.documents.forEach(function (document) {
+ this.add(document)
+ }, this)
+ })
+ })
+
+ suite('single term search', function () {
+ suite('one match', function () {
+ var assertions = function () {
+ test('one result returned', function () {
+ assert.lengthOf(this.results, 1)
+ })
+
+ test('document c matches', function () {
+ assert.equal('c', this.results[0].ref)
+ })
+
+ test('matching term', function () {
+ assert.sameMembers(['scarlett'], Object.keys(this.results[0].matchData.metadata))
+ })
+ }
+
+ suite('#seach', function () {
+ setup(function () {
+ this.results = this.idx.search('scarlett')
+ })
+
+ assertions()
+ })
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('scarlett')
+ })
+ })
+
+ assertions()
+ })
+ })
+
+ suite('no match', function () {
+ setup(function () {
+ this.results = this.idx.search('foo')
+ })
+
+ test('no matches', function () {
+ assert.lengthOf(this.results, 0)
+ })
+ })
+
+ suite('multiple matches', function () {
+ setup(function () {
+ this.results = this.idx.search('plant')
+ })
+
+ test('has two matches', function () {
+ assert.lengthOf(this.results, 2)
+ })
+
+ test('sorted by relevance', function () {
+ assert.equal('b', this.results[0].ref)
+ assert.equal('c', this.results[1].ref)
+ })
+ })
+
+ suite('pipeline processing', function () {
+ // study would be stemmed to studi, tokens
+ // are stemmed by default on index and must
+ // also be stemmed on search to match
+ suite('enabled (default)', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.clause({term: 'study', usePipeline: true})
+ })
+ })
+
+ test('has two matches', function () {
+ assert.lengthOf(this.results, 2)
+ })
+
+ test('sorted by relevance', function () {
+ assert.equal('b', this.results[0].ref)
+ assert.equal('a', this.results[1].ref)
+ })
+ })
+
+ suite('disabled', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.clause({term: 'study', usePipeline: false})
+ })
+ })
+
+ test('no matches', function () {
+ assert.lengthOf(this.results, 0)
+ })
+ })
+ })
+ })
+
+ suite('multiple terms', function () {
+ suite('all terms match', function () {
+ setup(function () {
+ this.results = this.idx.search('fellow candlestick')
+ })
+
+ test('has one match', function () {
+ assert.lengthOf(this.results, 1)
+ })
+
+ test('correct document returned', function () {
+ assert.equal('a', this.results[0].ref)
+ })
+
+ test('matched terms returned', function () {
+ assert.sameMembers(['fellow', 'candlestick'], Object.keys(this.results[0].matchData.metadata))
+ assert.sameMembers(['body'], Object.keys(this.results[0].matchData.metadata['fellow']));
+ assert.sameMembers(['body'], Object.keys(this.results[0].matchData.metadata['candlestick']));
+ })
+ })
+
+ suite('one term matches', function () {
+ setup(function () {
+ this.results = this.idx.search('week foo')
+ })
+
+ test('has one match', function () {
+ assert.lengthOf(this.results, 1)
+ })
+
+ test('correct document returned', function () {
+ assert.equal('c', this.results[0].ref)
+ })
+
+ test('only matching terms returned', function () {
+ assert.sameMembers(['week'], Object.keys(this.results[0].matchData.metadata))
+ })
+ })
+
+ suite('duplicate query terms', function () {
+ // https://github.com/olivernn/lunr.js/issues/256
+ // previously this would throw a duplicate index error
+ // because the query vector already contained an entry
+ // for the term 'fellow'
+ test('no errors', function () {
+ var idx = this.idx
+ assert.doesNotThrow(function () {
+ idx.search('fellow candlestick foo bar green plant fellow')
+ })
+ })
+ })
+
+ suite('documents with all terms score higher', function () {
+ setup(function () {
+ this.results = this.idx.search('candlestick green')
+ })
+
+ test('has three matches', function () {
+ assert.lengthOf(this.results, 3)
+ })
+
+ test('correct documents returned', function () {
+ var matchingDocuments = this.results.map(function (r) {
+ return r.ref
+ })
+ assert.sameMembers(['a', 'b', 'c'], matchingDocuments)
+ })
+
+ test('documents with all terms score highest', function () {
+ assert.equal('a', this.results[0].ref)
+ })
+
+ test('matching terms are returned', function () {
+ assert.sameMembers(['candlestick', 'green'], Object.keys(this.results[0].matchData.metadata))
+ assert.sameMembers(['green'], Object.keys(this.results[1].matchData.metadata))
+ assert.sameMembers(['green'], Object.keys(this.results[2].matchData.metadata))
+ })
+ })
+
+ suite('no terms match', function () {
+ setup(function () {
+ this.results = this.idx.search('foo bar')
+ })
+
+ test('no matches', function () {
+ assert.lengthOf(this.results, 0)
+ })
+ })
+
+ suite('corpus terms are stemmed', function () {
+ setup(function () {
+ this.results = this.idx.search('water')
+ })
+
+ test('matches two documents', function () {
+ assert.lengthOf(this.results, 2)
+ })
+
+ test('matches correct documents', function () {
+ var matchingDocuments = this.results.map(function (r) {
+ return r.ref
+ })
+ assert.sameMembers(['b', 'c'], matchingDocuments)
+ })
+ })
+
+ suite('field scoped terms', function () {
+ suite('only matches on scoped field', function () {
+ setup(function () {
+ this.results = this.idx.search('title:plant')
+ })
+
+ test('one result returned', function () {
+ assert.lengthOf(this.results, 1)
+ })
+
+ test('returns the correct document', function () {
+ assert.equal('b', this.results[0].ref)
+ })
+
+ test('match data', function () {
+ assert.sameMembers(['plant'], Object.keys(this.results[0].matchData.metadata))
+ })
+ })
+
+ suite('no matching terms', function () {
+ setup(function () {
+ this.results = this.idx.search('title:candlestick')
+ })
+
+ test('no results returned', function () {
+ assert.lengthOf(this.results, 0)
+ })
+ })
+ })
+
+ suite('wildcard matching', function () {
+ suite('trailing wildcard', function () {
+ suite('no matches', function () {
+ setup(function () {
+ this.results = this.idx.search('fo*')
+ })
+
+ test('no results returned', function () {
+ assert.lengthOf(this.results, 0)
+ })
+ })
+
+ suite('one match', function () {
+ setup(function () {
+ this.results = this.idx.search('candle*')
+ })
+
+ test('one result returned', function () {
+ assert.lengthOf(this.results, 1)
+ })
+
+ test('correct document matched', function () {
+ assert.equal('a', this.results[0].ref)
+ })
+
+ test('matching terms returned', function () {
+ assert.sameMembers(['candlestick'], Object.keys(this.results[0].matchData.metadata))
+ })
+ })
+
+ suite('multiple terms match', function () {
+ setup(function () {
+ this.results = this.idx.search('pl*')
+ })
+
+ test('two results returned', function () {
+ assert.lengthOf(this.results, 2)
+ })
+
+ test('correct documents matched', function () {
+ var matchingDocuments = this.results.map(function (r) {
+ return r.ref
+ })
+ assert.sameMembers(['b', 'c'], matchingDocuments)
+ })
+
+ test('matching terms returned', function () {
+ assert.sameMembers(['plumb', 'plant'], Object.keys(this.results[0].matchData.metadata))
+ assert.sameMembers(['plumb', 'plant'], Object.keys(this.results[1].matchData.metadata))
+ })
+ })
+ })
+ })
+ })
+
+ suite('wildcard matching', function () {
+ suite('trailing wildcard', function () {
+ suite('no matches found', function () {
+ setup(function () {
+ this.results = this.idx.search('fo*')
+ })
+
+ test('no results returned', function () {
+ assert.lengthOf(this.results, 0)
+ })
+ })
+
+ suite('results found', function () {
+ setup(function () {
+ this.results = this.idx.search('pl*')
+ })
+
+ test('two results returned', function () {
+ assert.lengthOf(this.results, 2)
+ })
+
+ test('matching documents returned', function () {
+ assert.equal('b', this.results[0].ref)
+ assert.equal('c', this.results[1].ref)
+ })
+
+ test('matching terms returned', function () {
+ assert.sameMembers(['plant', 'plumb'], Object.keys(this.results[0].matchData.metadata))
+ assert.sameMembers(['plant', 'plumb'], Object.keys(this.results[1].matchData.metadata))
+ })
+ })
+ })
+
+ suite('leading wildcard', function () {
+ suite('no results found', function () {
+ setup(function () {
+ this.results = this.idx.search('*oo')
+ })
+
+ test('no results found', function () {
+ assert.lengthOf(this.results, 0)
+ })
+ })
+
+ suite('results found', function () {
+ setup(function () {
+ this.results = this.idx.search('*ant')
+ })
+
+ test('two results found', function () {
+ assert.lengthOf(this.results, 2)
+ })
+
+ test('matching documents returned', function () {
+ assert.equal('b', this.results[0].ref)
+ assert.equal('c', this.results[1].ref)
+ })
+
+ test('matching terms returned', function () {
+ assert.sameMembers(['plant'], Object.keys(this.results[0].matchData.metadata))
+ assert.sameMembers(['plant'], Object.keys(this.results[1].matchData.metadata))
+ })
+ })
+ })
+
+ suite('contained wildcard', function () {
+ suite('no results found', function () {
+ setup(function () {
+ this.results = this.idx.search('f*o')
+ })
+
+ test('no results found', function () {
+ assert.lengthOf(this.results, 0)
+ })
+ })
+
+ suite('results found', function () {
+ setup(function () {
+ this.results = this.idx.search('pl*nt')
+ })
+
+ test('two results found', function () {
+ assert.lengthOf(this.results, 2)
+ })
+
+ test('matching documents returned', function () {
+ assert.equal('b', this.results[0].ref)
+ assert.equal('c', this.results[1].ref)
+ })
+
+ test('matching terms returned', function () {
+ assert.sameMembers(['plant'], Object.keys(this.results[0].matchData.metadata))
+ assert.sameMembers(['plant'], Object.keys(this.results[1].matchData.metadata))
+ })
+ })
+ })
+ })
+
+ suite('edit distance', function () {
+ suite('no results found', function () {
+ setup(function () {
+ this.results = this.idx.search('foo~1')
+ })
+
+ test('no results returned', function () {
+ assert.lengthOf(this.results, 0)
+ })
+ })
+
+ suite('results found', function () {
+ setup(function () {
+ this.results = this.idx.search('plont~1')
+ })
+
+ test('two results found', function () {
+ assert.lengthOf(this.results, 2)
+ })
+
+ test('matching documents returned', function () {
+ assert.equal('b', this.results[0].ref)
+ assert.equal('c', this.results[1].ref)
+ })
+
+ test('matching terms returned', function () {
+ assert.sameMembers(['plant'], Object.keys(this.results[0].matchData.metadata))
+ assert.sameMembers(['plant'], Object.keys(this.results[1].matchData.metadata))
+ })
+ })
+ })
+
+ suite('searching by field', function () {
+ suite('unknown field', function () {
+ test('throws lunr.QueryParseError', function () {
+ assert.throws(function () {
+ this.idx.search('unknown-field:plant')
+ }.bind(this), lunr.QueryParseError)
+ })
+ })
+
+ suite('no results found', function () {
+ setup(function () {
+ this.results = this.idx.search('title:candlestick')
+ })
+
+ test('no results found', function () {
+ assert.lengthOf(this.results, 0)
+ })
+ })
+
+ suite('results found', function () {
+ setup(function () {
+ this.results = this.idx.search('title:plant')
+ })
+
+ test('one results found', function () {
+ assert.lengthOf(this.results, 1)
+ })
+
+ test('matching documents returned', function () {
+ assert.equal('b', this.results[0].ref)
+ })
+
+ test('matching terms returned', function () {
+ assert.sameMembers(['plant'], Object.keys(this.results[0].matchData.metadata))
+ })
+ })
+ })
+
+ suite('term boosts', function () {
+ suite('no results found', function () {
+ setup(function () {
+ this.results = this.idx.search('foo^10')
+ })
+
+ test('no results found', function () {
+ assert.lengthOf(this.results, 0)
+ })
+ })
+
+ suite('results found', function () {
+ setup(function () {
+ this.results = this.idx.search('scarlett candlestick^5')
+ })
+
+ test('two results found', function () {
+ assert.lengthOf(this.results, 2)
+ })
+
+ test('matching documents returned', function () {
+ assert.equal('a', this.results[0].ref)
+ assert.equal('c', this.results[1].ref)
+ })
+
+ test('matching terms returned', function () {
+ assert.sameMembers(['candlestick'], Object.keys(this.results[0].matchData.metadata))
+ assert.sameMembers(['scarlett'], Object.keys(this.results[1].matchData.metadata))
+ })
+ })
+ })
+
+ suite('typeahead style search', function () {
+ suite('no results found', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term("xyz", { boost: 100, usePipeline: true })
+ q.term("xyz", { boost: 10, usePipeline: false, wildcard: lunr.Query.wildcard.TRAILING })
+ q.term("xyz", { boost: 1, editDistance: 1 })
+ })
+ })
+
+ test('no results found', function () {
+ assert.lengthOf(this.results, 0)
+ })
+ })
+
+ suite('results found', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term("pl", { boost: 100, usePipeline: true })
+ q.term("pl", { boost: 10, usePipeline: false, wildcard: lunr.Query.wildcard.TRAILING })
+ q.term("pl", { boost: 1, editDistance: 1 })
+ })
+ })
+
+ test('two results found', function () {
+ assert.lengthOf(this.results, 2)
+ })
+
+ test('matching documents returned', function () {
+ assert.equal('b', this.results[0].ref)
+ assert.equal('c', this.results[1].ref)
+ })
+
+ test('matching terms returned', function () {
+ assert.sameMembers(['plumb', 'plant'], Object.keys(this.results[0].matchData.metadata))
+ assert.sameMembers(['plumb', 'plant'], Object.keys(this.results[1].matchData.metadata))
+ })
+ })
+ })
+
+ suite('term presence', function () {
+ suite('prohibited', function () {
+ suite('match', function () {
+ var assertions = function () {
+ test('two results found', function () {
+ assert.lengthOf(this.results, 2)
+ })
+
+ test('matching documents returned', function () {
+ assert.equal('b', this.results[0].ref)
+ assert.equal('c', this.results[1].ref)
+ })
+
+ test('matching terms returned', function () {
+ assert.sameMembers(['green'], Object.keys(this.results[0].matchData.metadata))
+ assert.sameMembers(['green'], Object.keys(this.results[1].matchData.metadata))
+ })
+ }
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('candlestick', { presence: lunr.Query.presence.PROHIBITED })
+ q.term('green', { presence: lunr.Query.presence.OPTIONAL })
+ })
+ })
+
+ assertions()
+ })
+
+ suite('#search', function () {
+ setup(function () {
+ this.results = this.idx.search('-candlestick green')
+ })
+
+ assertions()
+ })
+ })
+
+ suite('no match', function () {
+ var assertions = function () {
+ test('no matches', function () {
+ assert.lengthOf(this.results, 0)
+ })
+ }
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('green', { presence: lunr.Query.presence.PROHIBITED })
+ })
+ })
+
+ assertions()
+ })
+
+ suite('#search', function () {
+ setup(function () {
+ this.results = this.idx.search('-green')
+ })
+
+ assertions()
+ })
+ })
+
+ suite('negated query no match', function () {
+ var assertions = function () {
+ test('all documents returned', function () {
+ assert.lengthOf(this.results, 3)
+ })
+
+ test('all results have same score', function () {
+ assert.isTrue(this.results.every(function (r) { return r.score === 0 }))
+ })
+ }
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('qwertyuiop', { presence: lunr.Query.presence.PROHIBITED })
+ })
+ })
+
+ assertions()
+ })
+
+ suite('#search', function () {
+ setup(function () {
+ this.results = this.idx.search("-qwertyuiop")
+ })
+
+ assertions()
+ })
+ })
+
+ suite('negated query some match', function () {
+ var assertions = function () {
+ test('all documents returned', function () {
+ assert.lengthOf(this.results, 1)
+ })
+
+ test('all results have same score', function () {
+ assert.isTrue(this.results.every(function (r) { return r.score === 0 }))
+ })
+
+ test('matching documents returned', function () {
+ assert.equal('a', this.results[0].ref)
+ })
+ }
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('plant', { presence: lunr.Query.presence.PROHIBITED })
+ })
+ })
+
+ assertions()
+ })
+
+ suite('#search', function () {
+ setup(function () {
+ this.results = this.idx.search("-plant")
+ })
+
+ assertions()
+ })
+ })
+
+ suite('field match', function () {
+ var assertions = function () {
+ test('one result found', function () {
+ assert.lengthOf(this.results, 1)
+ })
+
+ test('matching documents returned', function () {
+ assert.equal('c', this.results[0].ref)
+ })
+
+ test('matching terms returned', function () {
+ assert.sameMembers(['plumb'], Object.keys(this.results[0].matchData.metadata))
+ })
+ }
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('plant', { presence: lunr.Query.presence.PROHIBITED, fields: ['title'] })
+ q.term('plumb', { presence: lunr.Query.presence.OPTIONAL })
+ })
+ })
+
+ assertions()
+ })
+
+ suite('#search', function () {
+ setup(function () {
+ this.results = this.idx.search('-title:plant plumb')
+ })
+
+ assertions()
+ })
+ })
+ })
+
+ suite('required', function () {
+ suite('match', function () {
+ var assertions = function () {
+ test('one result found', function () {
+ assert.lengthOf(this.results, 1)
+ })
+
+ test('matching documents returned', function () {
+ assert.equal('a', this.results[0].ref)
+ })
+
+ test('matching terms returned', function () {
+ assert.sameMembers(['candlestick', 'green'], Object.keys(this.results[0].matchData.metadata))
+ })
+ }
+
+ suite('#search', function () {
+ setup(function () {
+ this.results = this.idx.search("+candlestick green")
+ })
+
+ assertions()
+ })
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('candlestick', { presence: lunr.Query.presence.REQUIRED })
+ q.term('green', { presence: lunr.Query.presence.OPTIONAL })
+ })
+ })
+
+ assertions()
+ })
+ })
+
+ suite('no match', function () {
+ var assertions = function () {
+ test('no matches', function () {
+ assert.lengthOf(this.results, 0)
+ })
+ }
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('mustard', { presence: lunr.Query.presence.REQUIRED })
+ q.term('plant', { presence: lunr.Query.presence.REQUIRED })
+ })
+ })
+
+ assertions()
+ })
+
+ suite('#search', function () {
+ setup(function () {
+ this.results = this.idx.search('+mustard +plant')
+ })
+
+ assertions()
+ })
+ })
+
+ suite('no matching term', function () {
+ var assertions = function () {
+ test('no matches', function () {
+ assert.lengthOf(this.results, 0)
+ })
+ }
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('qwertyuiop', { presence: lunr.Query.presence.REQUIRED })
+ q.term('green', { presence: lunr.Query.presence.OPTIONAL })
+ })
+ })
+
+ assertions()
+ })
+
+ suite('#search', function () {
+ setup(function () {
+ this.results = this.idx.search('+qwertyuiop green')
+ })
+
+ assertions()
+ })
+ })
+
+ suite('field match', function () {
+ var assertions = function () {
+ test('one result found', function () {
+ assert.lengthOf(this.results, 1)
+ })
+
+ test('matching documents returned', function () {
+ assert.equal('b', this.results[0].ref)
+ })
+
+ test('matching terms returned', function () {
+ assert.sameMembers(['plant', 'green'], Object.keys(this.results[0].matchData.metadata))
+ })
+ }
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('plant', { presence: lunr.Query.presence.REQUIRED, fields: ['title'] })
+ q.term('green', { presence: lunr.Query.presence.OPTIONAL })
+ })
+ })
+
+ assertions()
+ })
+
+ suite('#search', function () {
+ setup(function () {
+ this.results = this.idx.search('+title:plant green')
+ })
+
+ assertions()
+ })
+ })
+
+ suite('field and non field match', function () {
+ var assertions = function () {
+ test('one result found', function () {
+ assert.lengthOf(this.results, 1)
+ })
+
+ test('matching documents returned', function () {
+ assert.equal('b', this.results[0].ref)
+ })
+
+ test('matching terms returned', function () {
+ assert.sameMembers(['plant', 'green'], Object.keys(this.results[0].matchData.metadata))
+ })
+ }
+
+ suite('#search', function () {
+ setup(function () {
+ this.results = this.idx.search('+title:plant +green')
+ })
+
+ assertions()
+ })
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('plant', { fields: ['title'], presence: lunr.Query.presence.REQUIRED })
+ q.term('green', { presence: lunr.Query.presence.REQUIRED })
+ })
+ })
+
+ assertions()
+ })
+ })
+
+ suite('different fields', function () {
+ var assertions = function () {
+ test('one result found', function () {
+ assert.lengthOf(this.results, 1)
+ })
+
+ test('matching documents returned', function () {
+ assert.equal('b', this.results[0].ref)
+ })
+
+ test('matching terms returned', function () {
+ assert.sameMembers(['studi', 'plant'], Object.keys(this.results[0].matchData.metadata))
+ })
+ }
+
+ suite('#search', function () {
+ setup(function () {
+ this.results = this.idx.search('+title:plant +body:study')
+ })
+
+ assertions()
+ })
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('plant', { fields: ['title'], presence: lunr.Query.presence.REQUIRED })
+ q.term('study', { fields: ['body'], presence: lunr.Query.presence.REQUIRED })
+ })
+ })
+
+ assertions()
+ })
+ })
+
+ suite('different fields one without match', function () {
+ var assertions = function () {
+ test('no matches', function () {
+ assert.lengthOf(this.results, 0)
+ })
+ }
+
+ suite('#search', function () {
+ setup(function () {
+ this.results = this.idx.search('+title:plant +body:qwertyuiop')
+ })
+
+ assertions()
+ })
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('plant', { fields: ['title'], presence: lunr.Query.presence.REQUIRED })
+ q.term('qwertyuiop', { fields: ['body'], presence: lunr.Query.presence.REQUIRED })
+ })
+ })
+
+ assertions()
+ })
+ })
+ })
+
+ suite('combined', function () {
+ var assertions = function () {
+ test('one result found', function () {
+ assert.lengthOf(this.results, 1)
+ })
+
+ test('matching documents returned', function () {
+ assert.equal('b', this.results[0].ref)
+ })
+
+ test('matching terms returned', function () {
+ assert.sameMembers(['plant', 'green'], Object.keys(this.results[0].matchData.metadata))
+ })
+ }
+
+ suite('#query', function () {
+ setup(function () {
+ this.results = this.idx.query(function (q) {
+ q.term('plant', { presence: lunr.Query.presence.REQUIRED })
+ q.term('green', { presence: lunr.Query.presence.OPTIONAL })
+ q.term('office', { presence: lunr.Query.presence.PROHIBITED })
+ })
+ })
+
+ assertions()
+ })
+
+ suite('#search', function () {
+ setup(function () {
+ this.results = this.idx.search('+plant green -office')
+ })
+
+ assertions()
+ })
+
+ })
+ })
+ })
+})
diff --git a/node_modules/lunr/test/serialization_test.js b/node_modules/lunr/test/serialization_test.js
new file mode 100644
index 0000000..2e31295
--- /dev/null
+++ b/node_modules/lunr/test/serialization_test.js
@@ -0,0 +1,53 @@
+suite('serialization', function () {
+ setup(function () {
+ var documents = [{
+ id: 'a',
+ title: 'Mr. Green kills Colonel Mustard',
+ body: 'Mr. Green killed Colonel Mustard in the study with the candlestick. Mr. Green is not a very nice fellow.',
+ wordCount: 19
+ },{
+ id: 'b',
+ title: 'Plumb waters plant',
+ body: 'Professor Plumb has a green plant in his study',
+ wordCount: 9
+ },{
+ id: 'c',
+ title: 'Scarlett helps Professor',
+ body: 'Miss Scarlett watered Professor Plumbs green plant while he was away from his office last week.',
+ wordCount: 16
+ },{
+ id: 'd',
+ title: 'All about JavaScript',
+ body: 'JavaScript objects have a special __proto__ property',
+ wordCount: 7
+ }]
+
+ this.idx = lunr(function () {
+ this.ref('id')
+ this.field('title')
+ this.field('body')
+
+ documents.forEach(function (document) {
+ this.add(document)
+ }, this)
+ })
+
+ this.serializedIdx = JSON.stringify(this.idx)
+ this.loadedIdx = lunr.Index.load(JSON.parse(this.serializedIdx))
+ })
+
+ test('search', function () {
+ var idxResults = this.idx.search('green'),
+ serializedResults = this.loadedIdx.search('green')
+
+ assert.deepEqual(idxResults, serializedResults)
+ })
+
+ test('__proto__ double serialization', function () {
+ var doubleLoadedIdx = lunr.Index.load(JSON.parse(JSON.stringify(this.loadedIdx))),
+ idxResults = this.idx.search('__proto__'),
+ doubleSerializedResults = doubleLoadedIdx.search('__proto__')
+
+ assert.deepEqual(idxResults, doubleSerializedResults)
+ })
+})
diff --git a/node_modules/lunr/test/set_test.js b/node_modules/lunr/test/set_test.js
new file mode 100644
index 0000000..a65657a
--- /dev/null
+++ b/node_modules/lunr/test/set_test.js
@@ -0,0 +1,147 @@
+suite('lunr.Set', function () {
+ suite('#contains', function () {
+ suite('complete set', function () {
+ test('returns true', function () {
+ assert.isOk(lunr.Set.complete.contains('foo'))
+ })
+ })
+
+ suite('empty set', function () {
+ test('returns false', function () {
+ assert.isNotOk(lunr.Set.empty.contains('foo'))
+ })
+ })
+
+ suite('populated set', function () {
+ setup(function () {
+ this.set = new lunr.Set (['foo'])
+ })
+
+ test('element contained in set', function () {
+ assert.isOk(this.set.contains('foo'))
+ })
+
+ test('element not contained in set', function () {
+ assert.isNotOk(this.set.contains('bar'))
+ })
+ })
+ })
+
+ suite('#union', function () {
+ setup(function () {
+ this.set = new lunr.Set(['foo'])
+ })
+
+ suite('complete set', function () {
+ test('union is complete', function () {
+ var result = lunr.Set.complete.union(this.set)
+ assert.isOk(result.contains('foo'))
+ assert.isOk(result.contains('bar'))
+ })
+ })
+
+ suite('empty set', function () {
+ test('contains element', function () {
+ var result = lunr.Set.empty.union(this.set)
+ assert.isOk(result.contains('foo'))
+ assert.isNotOk(result.contains('bar'))
+ })
+ })
+
+ suite('populated set', function () {
+ suite('with other populated set', function () {
+ test('contains both elements', function () {
+ var target = new lunr.Set (['bar'])
+ var result = target.union(this.set)
+
+ assert.isOk(result.contains('foo'))
+ assert.isOk(result.contains('bar'))
+ assert.isNotOk(result.contains('baz'))
+ })
+ })
+
+ suite('with empty set', function () {
+ test('contains all elements', function () {
+ var target = new lunr.Set (['bar'])
+ var result = target.union(lunr.Set.empty)
+
+ assert.isOk(result.contains('bar'))
+ assert.isNotOk(result.contains('baz'))
+ })
+ })
+
+ suite('with complete set', function () {
+ test('contains all elements', function () {
+ var target = new lunr.Set (['bar'])
+ var result = target.union(lunr.Set.complete)
+
+ assert.isOk(result.contains('foo'))
+ assert.isOk(result.contains('bar'))
+ assert.isOk(result.contains('baz'))
+ })
+ })
+ })
+ })
+
+ suite('#intersect', function () {
+ setup(function () {
+ this.set = new lunr.Set(['foo'])
+ })
+
+ suite('complete set', function () {
+ test('contains element', function () {
+ var result = lunr.Set.complete.intersect(this.set)
+ assert.isOk(result.contains('foo'))
+ assert.isNotOk(result.contains('bar'))
+ })
+ })
+
+ suite('empty set', function () {
+ test('does not contain element', function () {
+ var result = lunr.Set.empty.intersect(this.set)
+ assert.isNotOk(result.contains('foo'))
+ })
+ })
+
+ suite('populated set', function () {
+ suite('no intersection', function () {
+ test('does not contain intersection elements', function () {
+ var target = new lunr.Set (['bar'])
+ var result = target.intersect(this.set)
+
+ assert.isNotOk(result.contains('foo'))
+ assert.isNotOk(result.contains('bar'))
+ })
+ })
+
+ suite('intersection', function () {
+ test('contains intersection elements', function () {
+ var target = new lunr.Set (['foo', 'bar'])
+ var result = target.intersect(this.set)
+
+ assert.isOk(result.contains('foo'))
+ assert.isNotOk(result.contains('bar'))
+ })
+ })
+
+ suite('with empty set', function () {
+ test('returns empty set', function () {
+ var target = new lunr.Set(['foo']),
+ result = target.intersect(lunr.Set.empty)
+
+ assert.isNotOk(result.contains('foo'))
+ })
+ })
+
+ suite('with complete set', function () {
+ test('returns populated set', function () {
+ var target = new lunr.Set(['foo']),
+ result = target.intersect(lunr.Set.complete)
+
+ assert.isOk(result.contains('foo'))
+ assert.isNotOk(result.contains('bar'))
+ })
+ })
+ })
+ })
+})
diff --git a/node_modules/lunr/test/stemmer_test.js b/node_modules/lunr/test/stemmer_test.js
new file mode 100644
index 0000000..2c9723f
--- /dev/null
+++ b/node_modules/lunr/test/stemmer_test.js
@@ -0,0 +1,26 @@
+suite('lunr.stemmer', function () {
+ test('reduces words to their stem', function (done) {
+ withFixture('stemming_vocab.json', function (err, fixture) {
+ if (err != null) {
+ throw err
+ }
+
+ var testData = JSON.parse(fixture)
+
+ Object.keys(testData).forEach(function (word) {
+ var expected = testData[word],
+ token = new lunr.Token(word),
+ result = lunr.stemmer(token).toString()
+
+ assert.equal(expected, result)
+ })
+
+ done()
+ })
+ })
+
+ test('is a registered pipeline function', function () {
+ assert.equal('stemmer', lunr.stemmer.label)
+ assert.equal(lunr.stemmer, lunr.Pipeline.registeredFunctions['stemmer'])
+ })
+})
diff --git a/node_modules/lunr/test/stop_word_filter_test.js b/node_modules/lunr/test/stop_word_filter_test.js
new file mode 100644
index 0000000..d16e51b
--- /dev/null
+++ b/node_modules/lunr/test/stop_word_filter_test.js
@@ -0,0 +1,30 @@
+suite('lunr.stopWordFilter', function () {
+ test('filters stop words', function () {
+ var stopWords = ['the', 'and', 'but', 'than', 'when']
+
+ stopWords.forEach(function (word) {
+ assert.isUndefined(lunr.stopWordFilter(word))
+ })
+ })
+
+ test('ignores non stop words', function () {
+ var nonStopWords = ['interesting', 'words', 'pass', 'through']
+
+ nonStopWords.forEach(function (word) {
+ assert.equal(word, lunr.stopWordFilter(word))
+ })
+ })
+
+ test('ignores properties of Object.prototype', function () {
+ var nonStopWords = ['constructor', 'hasOwnProperty', 'toString', 'valueOf']
+
+ nonStopWords.forEach(function (word) {
+ assert.equal(word, lunr.stopWordFilter(word))
+ })
+ })
+
+ test('is a registered pipeline function', function () {
+ assert.equal('stopWordFilter', lunr.stopWordFilter.label)
+ assert.equal(lunr.stopWordFilter, lunr.Pipeline.registeredFunctions['stopWordFilter'])
+ })
+})
diff --git a/node_modules/lunr/test/test_helper.js b/node_modules/lunr/test/test_helper.js
new file mode 100644
index 0000000..5beb3e3
--- /dev/null
+++ b/node_modules/lunr/test/test_helper.js
@@ -0,0 +1,13 @@
+var lunr = require('../lunr.js'),
+ assert = require('chai').assert,
+ fs = require('fs'),
+ path = require('path')
+
+var withFixture = function (name, fn) {
+ var fixturePath = path.join('test', 'fixtures', name)
+ fs.readFile(fixturePath, fn)
+}
+
+global.lunr = lunr
+global.assert = assert
+global.withFixture = withFixture
diff --git a/node_modules/lunr/test/token_set_test.js b/node_modules/lunr/test/token_set_test.js
new file mode 100644
index 0000000..c2f45b6
--- /dev/null
+++ b/node_modules/lunr/test/token_set_test.js
@@ -0,0 +1,327 @@
+suite('lunr.TokenSet', function () {
+ suite('#toString', function () {
+ test('includes node finality', function () {
+ var nonFinal = new lunr.TokenSet,
+ final = new lunr.TokenSet,
+ otherFinal = new lunr.TokenSet
+
+ final.final = true
+ otherFinal.final = true
+
+ assert.notEqual(nonFinal.toString(), final.toString())
+ assert.equal(otherFinal.toString(), final.toString())
+ })
+
+ test('includes all edges', function () {
+ var zeroEdges = new lunr.TokenSet,
+ oneEdge = new lunr.TokenSet,
+ twoEdges = new lunr.TokenSet
+
+ oneEdge.edges['a'] = 1
+ twoEdges.edges['a'] = 1
+ twoEdges.edges['b'] = 1
+
+ assert.notEqual(zeroEdges.toString(), oneEdge.toString())
+ assert.notEqual(twoEdges.toString(), oneEdge.toString())
+ assert.notEqual(twoEdges.toString(), zeroEdges.toString())
+ })
+
+ test('includes edge id', function () {
+ var childA = new lunr.TokenSet,
+ childB = new lunr.TokenSet,
+ parentA = new lunr.TokenSet,
+ parentB = new lunr.TokenSet,
+ parentC = new lunr.TokenSet
+
+ parentA.edges['a'] = childA
+ parentB.edges['a'] = childB
+ parentC.edges['a'] = childB
+
+ assert.equal(parentB.toString(), parentC.toString())
+ assert.notEqual(parentA.toString(), parentC.toString())
+ assert.notEqual(parentA.toString(), parentB.toString())
+ })
+ })
+
+ suite('.fromString', function () {
+ test('without wildcard', function () {
+ lunr.TokenSet._nextId = 1
+ var x = lunr.TokenSet.fromString('a')
+
+ assert.equal(x.toString(), '0a2')
+ assert.isOk(x.edges['a'].final)
+ })
+
+ test('with trailing wildcard', function () {
+ var x = lunr.TokenSet.fromString('a*'),
+ wild = x.edges['a'].edges['*']
+
+ // a state reached by a wildcard has
+ // an edge with a wildcard to itself.
+ // the resulting automota is
+ // non-determenistic
+ assert.equal(wild, wild.edges['*'])
+ assert.isOk(wild.final)
+ })
+ })
+
+ suite('.fromArray', function () {
+ test('with unsorted array', function () {
+ assert.throws(function () {
+ lunr.TokenSet.fromArray(['z', 'a'])
+ })
+ })
+
+ test('with sorted array', function () {
+ var tokenSet = lunr.TokenSet.fromArray(['a', 'z'])
+
+ assert.deepEqual(['a', 'z'], tokenSet.toArray().sort())
+ })
+
+ test('is minimal', function () {
+ var tokenSet = lunr.TokenSet.fromArray(['ac', 'dc']),
+ acNode = tokenSet.edges['a'].edges['c'],
+ dcNode = tokenSet.edges['d'].edges['c']
+
+ assert.deepEqual(acNode, dcNode)
+ })
+ })
+
+ suite('#toArray', function () {
+ test('includes all words', function () {
+ var words = ['bat', 'cat'],
+ tokenSet = lunr.TokenSet.fromArray(words)
+
+ assert.sameMembers(words, tokenSet.toArray())
+ })
+
+ test('includes single words', function () {
+ var word = 'bat',
+ tokenSet = lunr.TokenSet.fromString(word)
+
+ assert.sameMembers([word], tokenSet.toArray())
+ })
+ })
+
+ suite('#intersect', function () {
+ test('no intersection', function () {
+ var x = lunr.TokenSet.fromString('cat'),
+ y = lunr.TokenSet.fromString('bar'),
+ z = x.intersect(y)
+
+ assert.equal(0, z.toArray().length)
+ })
+
+ test('simple intersection', function () {
+ var x = lunr.TokenSet.fromString('cat'),
+ y = lunr.TokenSet.fromString('cat'),
+ z = x.intersect(y)
+
+ assert.sameMembers(['cat'], z.toArray())
+ })
+
+ test('trailing wildcard intersection', function () {
+ var x = lunr.TokenSet.fromString('cat'),
+ y = lunr.TokenSet.fromString('c*'),
+ z = x.intersect(y)
+
+ assert.sameMembers(['cat'], z.toArray())
+ })
+
+ test('trailing wildcard no intersection', function () {
+ var x = lunr.TokenSet.fromString('cat'),
+ y = lunr.TokenSet.fromString('b*'),
+ z = x.intersect(y)
+
+ assert.equal(0, z.toArray().length)
+ })
+
+ test('leading wildcard intersection', function () {
+ var x = lunr.TokenSet.fromString('cat'),
+ y = lunr.TokenSet.fromString('*t'),
+ z = x.intersect(y)
+
+ assert.sameMembers(['cat'], z.toArray())
+ })
+
+ test('leading wildcard backtracking intersection', function () {
+ var x = lunr.TokenSet.fromString('aaacbab'),
+ y = lunr.TokenSet.fromString('*ab'),
+ z = x.intersect(y)
+
+ assert.sameMembers(['aaacbab'], z.toArray())
+ })
+
+ test('leading wildcard no intersection', function () {
+ var x = lunr.TokenSet.fromString('cat'),
+ y = lunr.TokenSet.fromString('*r'),
+ z = x.intersect(y)
+
+ assert.equal(0, z.toArray().length)
+ })
+
+ test('leading wildcard backtracking no intersection', function () {
+ var x = lunr.TokenSet.fromString('aaabdcbc'),
+ y = lunr.TokenSet.fromString('*abc'),
+ z = x.intersect(y)
+
+ assert.equal(0, z.toArray().length)
+ })
+
+ test('contained wildcard intersection', function () {
+ var x = lunr.TokenSet.fromString('foo'),
+ y = lunr.TokenSet.fromString('f*o'),
+ z = x.intersect(y)
+
+ assert.sameMembers(['foo'], z.toArray())
+ })
+
+ test('contained wildcard backtracking intersection', function () {
+ var x = lunr.TokenSet.fromString('ababc'),
+ y = lunr.TokenSet.fromString('a*bc'),
+ z = x.intersect(y)
+
+ assert.sameMembers(['ababc'], z.toArray())
+ })
+
+ test('contained wildcard no intersection', function () {
+ var x = lunr.TokenSet.fromString('foo'),
+ y = lunr.TokenSet.fromString('b*r'),
+ z = x.intersect(y)
+
+ assert.equal(0, z.toArray().length)
+ })
+
+ test('contained wildcard backtracking no intersection', function () {
+ var x = lunr.TokenSet.fromString('ababc'),
+ y = lunr.TokenSet.fromString('a*ac'),
+ z = x.intersect(y)
+
+ assert.equal(0, z.toArray().length)
+ })
+
+ test('wildcard matches zero or more characters', function () {
+ var x = lunr.TokenSet.fromString('foo'),
+ y = lunr.TokenSet.fromString('foo*'),
+ z = x.intersect(y)
+
+ assert.sameMembers(['foo'], z.toArray())
+ })
+
+ // This test is intended to prevent 'bugs' that have lead to these
+ // kind of intersections taking a _very_ long time. The assertion
+ // is not of interest, just that the test does not timeout.
+ test('catastrophic backtracking with leading characters', function () {
+ var x = lunr.TokenSet.fromString('fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'),
+ y = lunr.TokenSet.fromString('*ff'),
+ z = x.intersect(y)
+
+ assert.equal(1, z.toArray().length)
+ })
+
+ test('leading and trailing backtracking intersection', function () {
+ var x = lunr.TokenSet.fromString('acbaabab'),
+ y = lunr.TokenSet.fromString('*ab*'),
+ z = x.intersect(y)
+
+ assert.sameMembers(['acbaabab'], z.toArray())
+ })
+
+ test('multiple contained wildcard backtracking', function () {
+ var x = lunr.TokenSet.fromString('acbaabab'),
+ y = lunr.TokenSet.fromString('a*ba*b'),
+ z = x.intersect(y)
+
+ assert.sameMembers(['acbaabab'], z.toArray())
+ })
+
+ test('intersect with fuzzy string substitution', function () {
+ var x1 = lunr.TokenSet.fromString('bar'),
+ x2 = lunr.TokenSet.fromString('cur'),
+ x3 = lunr.TokenSet.fromString('cat'),
+ x4 = lunr.TokenSet.fromString('car'),
+ x5 = lunr.TokenSet.fromString('foo'),
+ y = lunr.TokenSet.fromFuzzyString('car', 1)
+
+ assert.sameMembers(x1.intersect(y).toArray(), ["bar"])
+ assert.sameMembers(x2.intersect(y).toArray(), ["cur"])
+ assert.sameMembers(x3.intersect(y).toArray(), ["cat"])
+ assert.sameMembers(x4.intersect(y).toArray(), ["car"])
+ assert.equal(x5.intersect(y).toArray().length, 0)
+ })
+
+ test('intersect with fuzzy string deletion', function () {
+ var x1 = lunr.TokenSet.fromString('ar'),
+ x2 = lunr.TokenSet.fromString('br'),
+ x3 = lunr.TokenSet.fromString('ba'),
+ x4 = lunr.TokenSet.fromString('bar'),
+ x5 = lunr.TokenSet.fromString('foo'),
+ y = lunr.TokenSet.fromFuzzyString('bar', 1)
+
+ assert.sameMembers(x1.intersect(y).toArray(), ["ar"])
+ assert.sameMembers(x2.intersect(y).toArray(), ["br"])
+ assert.sameMembers(x3.intersect(y).toArray(), ["ba"])
+ assert.sameMembers(x4.intersect(y).toArray(), ["bar"])
+ assert.equal(x5.intersect(y).toArray().length, 0)
+ })
+
+ test('intersect with fuzzy string insertion', function () {
+ var x1 = lunr.TokenSet.fromString('bbar'),
+ x2 = lunr.TokenSet.fromString('baar'),
+ x3 = lunr.TokenSet.fromString('barr'),
+ x4 = lunr.TokenSet.fromString('bar'),
+ x5 = lunr.TokenSet.fromString('ba'),
+ x6 = lunr.TokenSet.fromString('foo'),
+ x7 = lunr.TokenSet.fromString('bara'),
+ y = lunr.TokenSet.fromFuzzyString('bar', 1)
+
+ assert.sameMembers(x1.intersect(y).toArray(), ["bbar"])
+ assert.sameMembers(x2.intersect(y).toArray(), ["baar"])
+ assert.sameMembers(x3.intersect(y).toArray(), ["barr"])
+ assert.sameMembers(x4.intersect(y).toArray(), ["bar"])
+ assert.sameMembers(x5.intersect(y).toArray(), ["ba"])
+ assert.equal(x6.intersect(y).toArray().length, 0)
+ assert.sameMembers(x7.intersect(y).toArray(), ["bara"])
+ })
+
+ test('intersect with fuzzy string transpose', function () {
+ var x1 = lunr.TokenSet.fromString('abr'),
+ x2 = lunr.TokenSet.fromString('bra'),
+ x3 = lunr.TokenSet.fromString('foo'),
+ y = lunr.TokenSet.fromFuzzyString('bar', 1)
+
+ assert.sameMembers(x1.intersect(y).toArray(), ["abr"])
+ assert.sameMembers(x2.intersect(y).toArray(), ["bra"])
+ assert.equal(x3.intersect(y).toArray().length, 0)
+ })
+
+ test('fuzzy string insertion', function () {
+ var x = lunr.TokenSet.fromString('abcxx'),
+ y = lunr.TokenSet.fromFuzzyString('abc', 2)
+
+ assert.sameMembers(x.intersect(y).toArray(), ['abcxx'])
+ })
+
+ test('fuzzy string substitution', function () {
+ var x = lunr.TokenSet.fromString('axx'),
+ y = lunr.TokenSet.fromFuzzyString('abc', 2)
+
+ assert.sameMembers(x.intersect(y).toArray(), ['axx'])
+ })
+
+ test('fuzzy string deletion', function () {
+ var x = lunr.TokenSet.fromString('a'),
+ y = lunr.TokenSet.fromFuzzyString('abc', 2)
+
+ assert.sameMembers(x.intersect(y).toArray(), ['a'])
+ })
+
+ test('fuzzy string transpose', function () {
+ var x = lunr.TokenSet.fromString('bca'),
+ y = lunr.TokenSet.fromFuzzyString('abc', 2)
+
+ assert.sameMembers(x.intersect(y).toArray(), ['bca'])
+ })
+
+ })
+})
diff --git a/node_modules/lunr/test/token_test.js b/node_modules/lunr/test/token_test.js
new file mode 100644
index 0000000..caf739b
--- /dev/null
+++ b/node_modules/lunr/test/token_test.js
@@ -0,0 +1,60 @@
+suite('lunr.Token', function () {
+ suite('#toString', function () {
+ test('converts the token to a string', function () {
+ var token = new lunr.Token('foo')
+ assert.equal('foo', token.toString())
+ })
+ })
+
+ suite('#metadata', function () {
+ test('can attach arbitrary metadata', function () {
+ var token = new lunr.Token('foo', { length: 3 })
+ assert.equal(3, token.metadata.length)
+ })
+ })
+
+ suite('#update', function () {
+ test('can update the token value', function () {
+ var token = new lunr.Token('foo')
+
+ token.update(function (s) {
+ return s.toUpperCase()
+ })
+
+ assert.equal('FOO', token.toString())
+ })
+
+ test('metadata is yielded when updating', function () {
+ var metadata = { bar: true },
+ token = new lunr.Token('foo', metadata),
+ yieldedMetadata
+
+ token.update(function (_, md) {
+ yieldedMetadata = md
+ })
+
+ assert.equal(metadata, yieldedMetadata)
+ })
+ })
+
+ suite('#clone', function () {
+ var token = new lunr.Token('foo', { bar: true })
+
+ test('clones value', function () {
+ assert.equal(token.toString(), token.clone().toString())
+ })
+
+ test('clones metadata', function () {
+ assert.equal(token.metadata, token.clone().metadata)
+ })
+
+ test('clone and modify', function () {
+ var clone = token.clone(function (s) {
+ return s.toUpperCase()
+ })
+
+ assert.equal('FOO', clone.toString())
+ assert.equal(token.metadata, clone.metadata)
+ })
+ })
+})
diff --git a/node_modules/lunr/test/tokenizer_test.js b/node_modules/lunr/test/tokenizer_test.js
new file mode 100644
index 0000000..acb619a
--- /dev/null
+++ b/node_modules/lunr/test/tokenizer_test.js
@@ -0,0 +1,114 @@
+suite('lunr.tokenizer', function () {
+ var toString = function (o) { return o.toString() }
+
+ test('splitting into tokens', function () {
+ var tokens = lunr.tokenizer('foo bar baz')
+ .map(toString)
+
+ assert.sameMembers(['foo', 'bar', 'baz'], tokens)
+ })
+
+ test('downcases tokens', function () {
+ var tokens = lunr.tokenizer('Foo BAR BAZ')
+ .map(toString)
+
+ assert.sameMembers(['foo', 'bar', 'baz'], tokens)
+ })
+
+ test('array of strings', function () {
+ var tokens = lunr.tokenizer(['foo', 'bar', 'baz'])
+ .map(toString)
+
+ assert.sameMembers(['foo', 'bar', 'baz'], tokens)
+ })
+
+ test('undefined is converted to empty string', function () {
+ var tokens = lunr.tokenizer(['foo', undefined, 'baz'])
+ .map(toString)
+
+ assert.sameMembers(['foo', '', 'baz'], tokens)
+ })
+
+ test('null is converted to empty string', function () {
+ var tokens = lunr.tokenizer(['foo', null, 'baz'])
+ .map(toString)
+
+ assert.sameMembers(['foo', '', 'baz'], tokens)
+ })
+
+ test('multiple white space is stripped', function () {
+ var tokens = lunr.tokenizer(' foo bar baz ')
+ .map(toString)
+
+ assert.sameMembers(['foo', 'bar', 'baz'], tokens)
+ })
+
+ test('handling null-like arguments', function () {
+ assert.lengthOf(lunr.tokenizer(), 0)
+ assert.lengthOf(lunr.tokenizer(undefined), 0)
+ assert.lengthOf(lunr.tokenizer(null), 0)
+ })
+
+ test('converting a date to tokens', function () {
+ var date = new Date(Date.UTC(2013, 0, 1, 12))
+
+ // NOTE: slicing here to prevent asserting on parts
+ // of the date that might be affected by the timezone
+ // the test is running in.
+ assert.sameMembers(['tue', 'jan', '01', '2013'], lunr.tokenizer(date).slice(0, 4).map(toString))
+ })
+
+ test('converting a number to tokens', function () {
+ assert.equal('41', lunr.tokenizer(41).map(toString))
+ })
+
+ test('converting a boolean to tokens', function () {
+ assert.equal('false', lunr.tokenizer(false).map(toString))
+ })
+
+ test('converting an object to tokens', function () {
+ var obj = {
+ toString: function () { return 'custom object' }
+ }
+
+ assert.sameMembers(lunr.tokenizer(obj).map(toString), ['custom', 'object'])
+ })
+
+ test('splits strings with hyphens', function () {
+ assert.sameMembers(lunr.tokenizer('foo-bar').map(toString), ['foo', 'bar'])
+ })
+
+ test('splits strings with hyphens and spaces', function () {
+ assert.sameMembers(lunr.tokenizer('foo - bar').map(toString), ['foo', 'bar'])
+ })
+
+ test('tracking the token index', function () {
+ var tokens = lunr.tokenizer('foo bar')
+ assert.equal(tokens[0].metadata.index, 0)
+ assert.equal(tokens[1].metadata.index, 1)
+ })
+
+ test('tracking the token position', function () {
+ var tokens = lunr.tokenizer('foo bar')
+ assert.deepEqual(tokens[0].metadata.position, [0, 3])
+ assert.deepEqual(tokens[1].metadata.position, [4, 3])
+ })
+
+ test('tracking the token position with additional left-hand whitespace', function () {
+ var tokens = lunr.tokenizer(' foo bar')
+ assert.deepEqual(tokens[0].metadata.position, [1, 3])
+ assert.deepEqual(tokens[1].metadata.position, [5, 3])
+ })
+
+ test('tracking the token position with additional right-hand whitespace', function () {
+ var tokens = lunr.tokenizer('foo bar ')
+ assert.deepEqual(tokens[0].metadata.position, [0, 3])
+ assert.deepEqual(tokens[1].metadata.position, [4, 3])
+ })
+
+ test('providing additional metadata', function () {
+ var tokens = lunr.tokenizer('foo bar', { 'hurp': 'durp' })
+ assert.deepEqual(tokens[0].metadata.hurp, 'durp')
+ assert.deepEqual(tokens[1].metadata.hurp, 'durp')
+ })
+})
diff --git a/node_modules/lunr/test/trimmer_test.js b/node_modules/lunr/test/trimmer_test.js
new file mode 100644
index 0000000..2f87d59
--- /dev/null
+++ b/node_modules/lunr/test/trimmer_test.js
@@ -0,0 +1,29 @@
+suite('lunr.trimmer', function () {
+ test('latin characters', function () {
+ var token = new lunr.Token ('hello')
+ assert.equal(lunr.trimmer(token).toString(), token.toString())
+ })
+
+ suite('punctuation', function () {
+ var trimmerTest = function (description, str, expected) {
+ test(description, function () {
+ var token = new lunr.Token(str),
+ trimmed = lunr.trimmer(token).toString()
+
+ assert.equal(expected, trimmed)
+ })
+ }
+
+ trimmerTest('full stop', 'hello.', 'hello')
+ trimmerTest('inner apostrophe', "it's", "it's")
+ trimmerTest('trailing apostrophe', "james'", 'james')
+ trimmerTest('exclamation mark', 'stop!', 'stop')
+ trimmerTest('comma', 'first,', 'first')
+ trimmerTest('brackets', '[tag]', 'tag')
+ })
+
+ test('is a registered pipeline function', function () {
+ assert.equal(lunr.trimmer.label, 'trimmer')
+ assert.equal(lunr.Pipeline.registeredFunctions['trimmer'], lunr.trimmer)
+ })
+})
diff --git a/node_modules/lunr/test/utils_test.js b/node_modules/lunr/test/utils_test.js
new file mode 100644
index 0000000..f6bc7e5
--- /dev/null
+++ b/node_modules/lunr/test/utils_test.js
@@ -0,0 +1,77 @@
+suite('lunr.utils', function () {
+ suite('#clone', function () {
+ var subject = function (obj) {
+ setup(function () {
+ this.obj = obj
+ this.clone = lunr.utils.clone(obj)
+ })
+ }
+
+ suite('handles null', function () {
+ subject(null)
+
+ test('returns null', function () {
+ assert.equal(null, this.clone)
+ assert.equal(this.obj, this.clone)
+ })
+ })
+
+ suite('handles undefined', function () {
+ subject(undefined)
+
+ test('returns null', function () {
+ assert.equal(undefined, this.clone)
+ assert.equal(this.obj, this.clone)
+ })
+ })
+
+ suite('object with primatives', function () {
+ subject({
+ number: 1,
+ string: 'foo',
+ bool: true
+ })
+
+ test('clones number correctly', function () {
+ assert.equal(this.obj.number, this.clone.number)
+ })
+
+ test('clones string correctly', function () {
+ assert.equal(this.obj.string, this.clone.string)
+ })
+
+ test('clones bool correctly', function () {
+ assert.equal(this.obj.bool, this.clone.bool)
+ })
+ })
+
+ suite('object with array property', function () {
+ subject({
+ array: [1, 2, 3]
+ })
+
+ test('clones array correctly', function () {
+ assert.deepEqual(this.obj.array, this.clone.array)
+ })
+
+ test('mutations on clone do not affect orginial', function () {
+ this.clone.array.push(4)
+ assert.notDeepEqual(this.obj.array, this.clone.array)
+ assert.equal(this.obj.array.length, 3)
+ assert.equal(this.clone.array.length, 4)
+ })
+ })
+
+ suite('nested object', function () {
+ test('throws type error', function () {
+ assert.throws(function () {
+ lunr.utils.clone({
+ 'foo': {
+ 'bar': 1
+ }
+ })
+ }, TypeError)
+ })
+ })
+ })
+})
diff --git a/node_modules/lunr/test/vector_test.js b/node_modules/lunr/test/vector_test.js
new file mode 100644
index 0000000..9628ccf
--- /dev/null
+++ b/node_modules/lunr/test/vector_test.js
@@ -0,0 +1,154 @@
+suite('lunr.Vector', function () {
+ var vectorFromArgs = function () {
+ var vector = new lunr.Vector
+
+ Array.prototype.slice.call(arguments)
+ .forEach(function (el, i) {
+ vector.insert(i, el)
+ })
+
+ return vector
+ }
+
+ suite('#magnitude', function () {
+ test('calculates magnitude of a vector', function () {
+ var vector = vectorFromArgs(4,5,6)
+ assert.equal(Math.sqrt(77), vector.magnitude())
+ })
+ })
+
+ suite('#dot', function () {
+ test('calculates dot product of two vectors', function () {
+ var v1 = vectorFromArgs(1, 3, -5),
+ v2 = vectorFromArgs(4, -2, -1)
+
+ assert.equal(3, v1.dot(v2))
+ })
+ })
+
+ suite('#similarity', function () {
+ test('calculates the similarity between two vectors', function () {
+ var v1 = vectorFromArgs(1, 3, -5),
+ v2 = vectorFromArgs(4, -2, -1)
+
+ assert.approximately(v1.similarity(v2), 0.5, 0.01)
+ })
+
+ test('empty vector', function () {
+ var vEmpty = new lunr.Vector,
+ v1 = vectorFromArgs(1)
+
+ assert.equal(0, vEmpty.similarity(v1))
+ assert.equal(0, v1.similarity(vEmpty))
+ })
+
+ test('non-overlapping vector', function () {
+ var v1 = new lunr.Vector([1, 1]),
+ v2 = new lunr.Vector([2, 1])
+
+ assert.equal(0, v1.similarity(v2))
+ assert.equal(0, v2.similarity(v1))
+ })
+ })
+
+ suite('#insert', function () {
+ test('invalidates magnitude cache', function () {
+ var vector = vectorFromArgs(4,5,6)
+
+ assert.equal(Math.sqrt(77), vector.magnitude())
+
+ vector.insert(3, 7)
+
+ assert.equal(Math.sqrt(126), vector.magnitude())
+ })
+
+ test('keeps items in index specified order', function () {
+ var vector = new lunr.Vector
+
+ vector.insert(2, 4)
+ vector.insert(1, 5)
+ vector.insert(0, 6)
+
+ assert.deepEqual([6,5,4], vector.toArray())
+ })
+
+ test('fails when duplicate entry', function () {
+ var vector = vectorFromArgs(4, 5, 6)
+ assert.throws(function () { vector.insert(0, 44) })
+ })
+ })
+
+ suite('#upsert', function () {
+ test('invalidates magnitude cache', function () {
+ var vector = vectorFromArgs(4,5,6)
+
+ assert.equal(Math.sqrt(77), vector.magnitude())
+
+ vector.upsert(3, 7)
+
+ assert.equal(Math.sqrt(126), vector.magnitude())
+ })
+
+ test('keeps items in index specified order', function () {
+ var vector = new lunr.Vector
+
+ vector.upsert(2, 4)
+ vector.upsert(1, 5)
+ vector.upsert(0, 6)
+
+ assert.deepEqual([6,5,4], vector.toArray())
+ })
+
+ test('calls fn for value on duplicate', function () {
+ var vector = vectorFromArgs(4, 5, 6)
+ vector.upsert(0, 4, function (current, passed) { return current + passed })
+ assert.deepEqual([8, 5, 6], vector.toArray())
+ })
+ })
+
+ suite('#positionForIndex', function () {
+ var vector = new lunr.Vector ([
+ 1, 'a',
+ 2, 'b',
+ 4, 'c',
+ 7, 'd',
+ 11, 'e'
+ ])
+
+ test('at the beginning', function () {
+ assert.equal(0, vector.positionForIndex(0))
+ })
+
+ test('at the end', function () {
+ assert.equal(10, vector.positionForIndex(20))
+ })
+
+ test('consecutive', function () {
+ assert.equal(4, vector.positionForIndex(3))
+ })
+
+ test('non-consecutive gap after', function () {
+ assert.equal(6, vector.positionForIndex(5))
+ })
+
+ test('non-consecutive gap before', function () {
+ assert.equal(6, vector.positionForIndex(6))
+ })
+
+ test('non-consecutive gave before and after', function () {
+ assert.equal(8, vector.positionForIndex(9))
+ })
+
+ test('duplicate at the beginning', function () {
+ assert.equal(0, vector.positionForIndex(1))
+ })
+
+ test('duplicate at the end', function () {
+ assert.equal(8, vector.positionForIndex(11))
+ })
+
+ test('duplicate consecutive', function () {
+ assert.equal(4, vector.positionForIndex(4))
+ })
+ })
+})
diff --git a/node_modules/marked/LICENSE.md b/node_modules/marked/LICENSE.md
new file mode 100644
index 0000000..4bd2d4a
--- /dev/null
+++ b/node_modules/marked/LICENSE.md
@@ -0,0 +1,44 @@
+# License information
+
+## Contribution License Agreement
+
+If you contribute code to this project, you are implicitly allowing your code
+to be distributed under the MIT license. You are also implicitly verifying that
+all code is your original work. `</legalese>`
+
+## Marked
+
+Copyright (c) 2018+, MarkedJS (https://github.com/markedjs/)
+Copyright (c) 2011-2018, Christopher Jeffrey (https://github.com/chjj/)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+## Markdown
+
+Copyright © 2004, John Gruber
+http://daringfireball.net/
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+* Neither the name “Markdown” nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
+
+This software is provided by the copyright holders and contributors “as is” and any express or implied warranties, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose are disclaimed. In no event shall the copyright owner or contributors be liable for any direct, indirect, incidental, special, exemplary, or consequential damages (including, but not limited to, procurement of substitute goods or services; loss of use, data, or profits; or business interruption) however caused and on any theory of liability, whether in contract, strict liability, or tort (including negligence or otherwise) arising in any way out of the use of this software, even if advised of the possibility of such damage.
diff --git a/node_modules/marked/README.md b/node_modules/marked/README.md
new file mode 100644
index 0000000..59017f6
--- /dev/null
+++ b/node_modules/marked/README.md
@@ -0,0 +1,99 @@
+<a href="https://marked.js.org">
+ <img width="60px" height="60px" src="https://marked.js.org/img/logo-black.svg" align="right" />
+</a>
+
+# Marked
+
+[![npm](https://badgen.net/npm/v/marked)](https://www.npmjs.com/package/marked)
+[![gzip size](https://badgen.net/badgesize/gzip/https://cdn.jsdelivr.net/npm/marked/marked.min.js)](https://cdn.jsdelivr.net/npm/marked/marked.min.js)
+[![install size](https://badgen.net/packagephobia/install/marked)](https://packagephobia.now.sh/result?p=marked)
+[![downloads](https://badgen.net/npm/dt/marked)](https://www.npmjs.com/package/marked)
+[![github actions](https://github.com/markedjs/marked/workflows/Tests/badge.svg)](https://github.com/markedjs/marked/actions)
+[![snyk](https://snyk.io/test/npm/marked/badge.svg)](https://snyk.io/test/npm/marked)
+
+- ⚡ built for speed
+- ⬇️ low-level compiler for parsing markdown without caching or blocking for long periods of time
+- ⚖️ light-weight while implementing all markdown features from the supported flavors & specifications
+- 🌐 works in a browser, on a server, or from a command line interface (CLI)
+
+## Demo
+
+Checkout the [demo page](https://marked.js.org/demo/) to see marked in action ⛹️
+
+## Docs
+
+Our [documentation pages](https://marked.js.org) are also rendered using marked 💯
+
+Also read about:
+
+* [Options](https://marked.js.org/#/USING_ADVANCED.md)
+* [Extensibility](https://marked.js.org/#/USING_PRO.md)
+
+## Compatibility
+
+**Node.js:** Only [current and LTS](https://nodejs.org/en/about/releases/) Node.js versions are supported. End of life Node.js versions may become incompatible with Marked at any point in time.
+
+**Browser:** Not IE11 :)
+
+## Installation
+
+**CLI:**
+
+```sh
+npm install -g marked
+```
+
+**In-browser:**
+
+```sh
+npm install marked
+npm install @types/marked # For TypeScript projects
+```
+
+## Usage
+
+### Warning: 🚨 Marked does not [sanitize](https://marked.js.org/#/USING_ADVANCED.md#options) the output HTML. Please use a sanitize library, like [DOMPurify](https://github.com/cure53/DOMPurify) (recommended), [sanitize-html](https://github.com/apostrophecms/sanitize-html) or [insane](https://github.com/bevacqua/insane) on the *output* HTML! 🚨
+
+```
+DOMPurify.sanitize(marked.parse(`<img src="x" onerror="alert('not happening')">`));
+```
+
+**CLI**
+
+``` bash
+# Example with stdin input
+$ marked -o hello.html
+hello world
+^D
+$ cat hello.html
+<p>hello world</p>
+```
+
+```bash
+# Print all options
+$ marked --help
+```
+
+**Browser**
+
+```html
+<!doctype html>
+<html>
+<head>
+ <meta charset="utf-8"/>
+ <title>Marked in the browser</title>
+</head>
+<body>
+ <div id="content"></div>
+ <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
+ <script>
+ document.getElementById('content').innerHTML =
+ marked.parse('# Marked in the browser\n\nRendered by **marked**.');
+ </script>
+</body>
+</html>
+```
+
+## License
+
+Copyright (c) 2011-2022, Christopher Jeffrey. (MIT License)
diff --git a/node_modules/marked/bin/marked.js b/node_modules/marked/bin/marked.js
new file mode 100755
index 0000000..5031246
--- /dev/null
+++ b/node_modules/marked/bin/marked.js
@@ -0,0 +1,217 @@
+#!/usr/bin/env node
+
+/**
+ * Marked CLI
+ * Copyright (c) 2011-2013, Christopher Jeffrey (MIT License)
+ */
+
+import { promises } from 'fs';
+import { marked } from '../lib/marked.esm.js';
+
+const { readFile, writeFile } = promises;
+
+/**
+ * Man Page
+ */
+
+async function help() {
+ const { spawn } = await import('child_process');
+
+ const options = {
+ cwd: process.cwd(),
+ env: process.env,
+ setsid: false,
+ stdio: 'inherit'
+ };
+
+ const { dirname, resolve } = await import('path');
+ const { fileURLToPath } = await import('url');
+ const __dirname = dirname(fileURLToPath(import.meta.url));
+ const helpText = await readFile(resolve(__dirname, '../man/marked.1.txt'), 'utf8');
+
+ // eslint-disable-next-line promise/param-names
+ await new Promise(res => {
+ spawn('man', [resolve(__dirname, '../man/marked.1')], options)
+ .on('error', () => {
+ console.log(helpText);
+ })
+ .on('close', res);
+ });
+}
+
+async function version() {
+ const { createRequire } = await import('module');
+ const require = createRequire(import.meta.url);
+ const pkg = require('../package.json');
+ console.log(pkg.version);
+}
+
+/**
+ * Main
+ */
+
+async function main(argv) {
+ const files = [];
+ const options = {};
+ let input;
+ let output;
+ let string;
+ let arg;
+ let tokens;
+ let opt;
+
+ function getarg() {
+ let arg = argv.shift();
+
+ if (arg.indexOf('--') === 0) {
+ // e.g. --opt
+ arg = arg.split('=');
+ if (arg.length > 1) {
+ // e.g. --opt=val
+ argv.unshift(arg.slice(1).join('='));
+ }
+ arg = arg[0];
+ } else if (arg[0] === '-') {
+ if (arg.length > 2) {
+ // e.g. -abc
+ argv = arg.substring(1).split('').map(function(ch) {
+ return '-' + ch;
+ }).concat(argv);
+ arg = argv.shift();
+ } else {
+ // e.g. -a
+ }
+ } else {
+ // e.g. foo
+ }
+
+ return arg;
+ }
+
+ while (argv.length) {
+ arg = getarg();
+ switch (arg) {
+ case '-o':
+ case '--output':
+ output = argv.shift();
+ break;
+ case '-i':
+ case '--input':
+ input = argv.shift();
+ break;
+ case '-s':
+ case '--string':
+ string = argv.shift();
+ break;
+ case '-t':
+ case '--tokens':
+ tokens = true;
+ break;
+ case '-h':
+ case '--help':
+ return await help();
+ case '-v':
+ case '--version':
+ return await version();
+ default:
+ if (arg.indexOf('--') === 0) {
+ opt = camelize(arg.replace(/^--(no-)?/, ''));
+ if (!marked.defaults.hasOwnProperty(opt)) {
+ continue;
+ }
+ if (arg.indexOf('--no-') === 0) {
+ options[opt] = typeof marked.defaults[opt] !== 'boolean'
+ ? null
+ : false;
+ } else {
+ options[opt] = typeof marked.defaults[opt] !== 'boolean'
+ ? argv.shift()
+ : true;
+ }
+ } else {
+ files.push(arg);
+ }
+ break;
+ }
+ }
+
+ async function getData() {
+ if (!input) {
+ if (files.length <= 2) {
+ if (string) {
+ return string;
+ }
+ return await getStdin();
+ }
+ input = files.pop();
+ }
+ return await readFile(input, 'utf8');
+ }
+
+ const data = await getData();
+
+ const html = tokens
+ ? JSON.stringify(marked.lexer(data, options), null, 2)
+ : marked(data, options);
+
+ if (output) {
+ return await writeFile(output, html);
+ }
+
+ process.stdout.write(html + '\n');
+}
+
+/**
+ * Helpers
+ */
+
+function getStdin() {
+ return new Promise((resolve, reject) => {
+ const stdin = process.stdin;
+ let buff = '';
+
+ stdin.setEncoding('utf8');
+
+ stdin.on('data', function(data) {
+ buff += data;
+ });
+
+ stdin.on('error', function(err) {
+ reject(err);
+ });
+
+ stdin.on('end', function() {
+ resolve(buff);
+ });
+
+ stdin.resume();
+ });
+}
+
+/**
+ * @param {string} text
+ */
+function camelize(text) {
+ return text.replace(/(\w)-(\w)/g, function(_, a, b) {
+ return a + b.toUpperCase();
+ });
+}
+
+function handleError(err) {
+ if (err.code === 'ENOENT') {
+ console.error('marked: output to ' + err.path + ': No such directory');
+ return process.exit(1);
+ }
+ throw err;
+}
+
+/**
+ * Expose / Entry Point
+ */
+
+process.title = 'marked';
+main(process.argv.slice()).then(code => {
+ process.exit(code || 0);
+}).catch(err => {
+ handleError(err);
+});
diff --git a/node_modules/marked/lib/marked.cjs b/node_modules/marked/lib/marked.cjs
new file mode 100644
index 0000000..2e60f25
--- /dev/null
+++ b/node_modules/marked/lib/marked.cjs
@@ -0,0 +1,2811 @@
+/**
+ * marked v4.3.0 - a markdown parser
+ * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)
+ * https://github.com/markedjs/marked
+ */
+
+/**
+ * DO NOT EDIT THIS FILE
+ * The code in this file is generated from files in ./src/
+ */
+
+'use strict';
+
+function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
+ }
+}
+function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ Object.defineProperty(Constructor, "prototype", {
+ writable: false
+ });
+ return Constructor;
+}
+function _extends() {
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+ return target;
+ };
+ return _extends.apply(this, arguments);
+}
+function _unsupportedIterableToArray(o, minLen) {
+ if (!o) return;
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
+ var n = Object.prototype.toString.call(o).slice(8, -1);
+ if (n === "Object" && o.constructor) n = o.constructor.name;
+ if (n === "Map" || n === "Set") return Array.from(o);
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
+}
+function _arrayLikeToArray(arr, len) {
+ if (len == null || len > arr.length) len = arr.length;
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
+ return arr2;
+}
+function _createForOfIteratorHelperLoose(o, allowArrayLike) {
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
+ if (it) return (it = it.call(o)).next.bind(it);
+ if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
+ if (it) o = it;
+ var i = 0;
+ return function () {
+ if (i >= o.length) return {
+ done: true
+ };
+ return {
+ done: false,
+ value: o[i++]
+ };
+ };
+ }
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+}
+function _toPrimitive(input, hint) {
+ if (typeof input !== "object" || input === null) return input;
+ var prim = input[Symbol.toPrimitive];
+ if (prim !== undefined) {
+ var res = prim.call(input, hint || "default");
+ if (typeof res !== "object") return res;
+ throw new TypeError("@@toPrimitive must return a primitive value.");
+ }
+ return (hint === "string" ? String : Number)(input);
+}
+function _toPropertyKey(arg) {
+ var key = _toPrimitive(arg, "string");
+ return typeof key === "symbol" ? key : String(key);
+}
+
+function getDefaults() {
+ return {
+ async: false,
+ baseUrl: null,
+ breaks: false,
+ extensions: null,
+ gfm: true,
+ headerIds: true,
+ headerPrefix: '',
+ highlight: null,
+ hooks: null,
+ langPrefix: 'language-',
+ mangle: true,
+ pedantic: false,
+ renderer: null,
+ sanitize: false,
+ sanitizer: null,
+ silent: false,
+ smartypants: false,
+ tokenizer: null,
+ walkTokens: null,
+ xhtml: false
+ };
+}
+exports.defaults = getDefaults();
+function changeDefaults(newDefaults) {
+ exports.defaults = newDefaults;
+}
+
+/**
+ * Helpers
+ */
+var escapeTest = /[&<>"']/;
+var escapeReplace = new RegExp(escapeTest.source, 'g');
+var escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/;
+var escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');
+var escapeReplacements = {
+ '&': '&amp;',
+ '<': '&lt;',
+ '>': '&gt;',
+ '"': '&quot;',
+ "'": '&#39;'
+};
+var getEscapeReplacement = function getEscapeReplacement(ch) {
+ return escapeReplacements[ch];
+};
+function escape(html, encode) {
+ if (encode) {
+ if (escapeTest.test(html)) {
+ return html.replace(escapeReplace, getEscapeReplacement);
+ }
+ } else {
+ if (escapeTestNoEncode.test(html)) {
+ return html.replace(escapeReplaceNoEncode, getEscapeReplacement);
+ }
+ }
+ return html;
+}
+var unescapeTest = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;
+
+/**
+ * @param {string} html
+ */
+function unescape(html) {
+ // explicitly match decimal, hex, and named HTML entities
+ return html.replace(unescapeTest, function (_, n) {
+ n = n.toLowerCase();
+ if (n === 'colon') return ':';
+ if (n.charAt(0) === '#') {
+ return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));
+ }
+ return '';
+ });
+}
+var caret = /(^|[^\[])\^/g;
+
+/**
+ * @param {string | RegExp} regex
+ * @param {string} opt
+ */
+function edit(regex, opt) {
+ regex = typeof regex === 'string' ? regex : regex.source;
+ opt = opt || '';
+ var obj = {
+ replace: function replace(name, val) {
+ val = val.source || val;
+ val = val.replace(caret, '$1');
+ regex = regex.replace(name, val);
+ return obj;
+ },
+ getRegex: function getRegex() {
+ return new RegExp(regex, opt);
+ }
+ };
+ return obj;
+}
+var nonWordAndColonTest = /[^\w:]/g;
+var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;
+
+/**
+ * @param {boolean} sanitize
+ * @param {string} base
+ * @param {string} href
+ */
+function cleanUrl(sanitize, base, href) {
+ if (sanitize) {
+ var prot;
+ try {
+ prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, '').toLowerCase();
+ } catch (e) {
+ return null;
+ }
+ if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {
+ return null;
+ }
+ }
+ if (base && !originIndependentUrl.test(href)) {
+ href = resolveUrl(base, href);
+ }
+ try {
+ href = encodeURI(href).replace(/%25/g, '%');
+ } catch (e) {
+ return null;
+ }
+ return href;
+}
+var baseUrls = {};
+var justDomain = /^[^:]+:\/*[^/]*$/;
+var protocol = /^([^:]+:)[\s\S]*$/;
+var domain = /^([^:]+:\/*[^/]*)[\s\S]*$/;
+
+/**
+ * @param {string} base
+ * @param {string} href
+ */
+function resolveUrl(base, href) {
+ if (!baseUrls[' ' + base]) {
+ // we can ignore everything in base after the last slash of its path component,
+ // but we might need to add _that_
+ // https://tools.ietf.org/html/rfc3986#section-3
+ if (justDomain.test(base)) {
+ baseUrls[' ' + base] = base + '/';
+ } else {
+ baseUrls[' ' + base] = rtrim(base, '/', true);
+ }
+ }
+ base = baseUrls[' ' + base];
+ var relativeBase = base.indexOf(':') === -1;
+ if (href.substring(0, 2) === '//') {
+ if (relativeBase) {
+ return href;
+ }
+ return base.replace(protocol, '$1') + href;
+ } else if (href.charAt(0) === '/') {
+ if (relativeBase) {
+ return href;
+ }
+ return base.replace(domain, '$1') + href;
+ } else {
+ return base + href;
+ }
+}
+var noopTest = {
+ exec: function noopTest() {}
+};
+function splitCells(tableRow, count) {
+ // ensure that every cell-delimiting pipe has a space
+ // before it to distinguish it from an escaped pipe
+ var row = tableRow.replace(/\|/g, function (match, offset, str) {
+ var escaped = false,
+ curr = offset;
+ while (--curr >= 0 && str[curr] === '\\') {
+ escaped = !escaped;
+ }
+ if (escaped) {
+ // odd number of slashes means | is escaped
+ // so we leave it alone
+ return '|';
+ } else {
+ // add space before unescaped |
+ return ' |';
+ }
+ }),
+ cells = row.split(/ \|/);
+ var i = 0;
+
+ // First/last cell in a row cannot be empty if it has no leading/trailing pipe
+ if (!cells[0].trim()) {
+ cells.shift();
+ }
+ if (cells.length > 0 && !cells[cells.length - 1].trim()) {
+ cells.pop();
+ }
+ if (cells.length > count) {
+ cells.splice(count);
+ } else {
+ while (cells.length < count) {
+ cells.push('');
+ }
+ }
+ for (; i < cells.length; i++) {
+ // leading or trailing whitespace is ignored per the gfm spec
+ cells[i] = cells[i].trim().replace(/\\\|/g, '|');
+ }
+ return cells;
+}
+
+/**
+ * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').
+ * /c*$/ is vulnerable to REDOS.
+ *
+ * @param {string} str
+ * @param {string} c
+ * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.
+ */
+function rtrim(str, c, invert) {
+ var l = str.length;
+ if (l === 0) {
+ return '';
+ }
+
+ // Length of suffix matching the invert condition.
+ var suffLen = 0;
+
+ // Step left until we fail to match the invert condition.
+ while (suffLen < l) {
+ var currChar = str.charAt(l - suffLen - 1);
+ if (currChar === c && !invert) {
+ suffLen++;
+ } else if (currChar !== c && invert) {
+ suffLen++;
+ } else {
+ break;
+ }
+ }
+ return str.slice(0, l - suffLen);
+}
+function findClosingBracket(str, b) {
+ if (str.indexOf(b[1]) === -1) {
+ return -1;
+ }
+ var l = str.length;
+ var level = 0,
+ i = 0;
+ for (; i < l; i++) {
+ if (str[i] === '\\') {
+ i++;
+ } else if (str[i] === b[0]) {
+ level++;
+ } else if (str[i] === b[1]) {
+ level--;
+ if (level < 0) {
+ return i;
+ }
+ }
+ }
+ return -1;
+}
+function checkSanitizeDeprecation(opt) {
+ if (opt && opt.sanitize && !opt.silent) {
+ console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');
+ }
+}
+
+// copied from https://stackoverflow.com/a/5450113/806777
+/**
+ * @param {string} pattern
+ * @param {number} count
+ */
+function repeatString(pattern, count) {
+ if (count < 1) {
+ return '';
+ }
+ var result = '';
+ while (count > 1) {
+ if (count & 1) {
+ result += pattern;
+ }
+ count >>= 1;
+ pattern += pattern;
+ }
+ return result + pattern;
+}
+
+function outputLink(cap, link, raw, lexer) {
+ var href = link.href;
+ var title = link.title ? escape(link.title) : null;
+ var text = cap[1].replace(/\\([\[\]])/g, '$1');
+ if (cap[0].charAt(0) !== '!') {
+ lexer.state.inLink = true;
+ var token = {
+ type: 'link',
+ raw: raw,
+ href: href,
+ title: title,
+ text: text,
+ tokens: lexer.inlineTokens(text)
+ };
+ lexer.state.inLink = false;
+ return token;
+ }
+ return {
+ type: 'image',
+ raw: raw,
+ href: href,
+ title: title,
+ text: escape(text)
+ };
+}
+function indentCodeCompensation(raw, text) {
+ var matchIndentToCode = raw.match(/^(\s+)(?:```)/);
+ if (matchIndentToCode === null) {
+ return text;
+ }
+ var indentToCode = matchIndentToCode[1];
+ return text.split('\n').map(function (node) {
+ var matchIndentInNode = node.match(/^\s+/);
+ if (matchIndentInNode === null) {
+ return node;
+ }
+ var indentInNode = matchIndentInNode[0];
+ if (indentInNode.length >= indentToCode.length) {
+ return node.slice(indentToCode.length);
+ }
+ return node;
+ }).join('\n');
+}
+
+/**
+ * Tokenizer
+ */
+var Tokenizer = /*#__PURE__*/function () {
+ function Tokenizer(options) {
+ this.options = options || exports.defaults;
+ }
+ var _proto = Tokenizer.prototype;
+ _proto.space = function space(src) {
+ var cap = this.rules.block.newline.exec(src);
+ if (cap && cap[0].length > 0) {
+ return {
+ type: 'space',
+ raw: cap[0]
+ };
+ }
+ };
+ _proto.code = function code(src) {
+ var cap = this.rules.block.code.exec(src);
+ if (cap) {
+ var text = cap[0].replace(/^ {1,4}/gm, '');
+ return {
+ type: 'code',
+ raw: cap[0],
+ codeBlockStyle: 'indented',
+ text: !this.options.pedantic ? rtrim(text, '\n') : text
+ };
+ }
+ };
+ _proto.fences = function fences(src) {
+ var cap = this.rules.block.fences.exec(src);
+ if (cap) {
+ var raw = cap[0];
+ var text = indentCodeCompensation(raw, cap[3] || '');
+ return {
+ type: 'code',
+ raw: raw,
+ lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],
+ text: text
+ };
+ }
+ };
+ _proto.heading = function heading(src) {
+ var cap = this.rules.block.heading.exec(src);
+ if (cap) {
+ var text = cap[2].trim();
+
+ // remove trailing #s
+ if (/#$/.test(text)) {
+ var trimmed = rtrim(text, '#');
+ if (this.options.pedantic) {
+ text = trimmed.trim();
+ } else if (!trimmed || / $/.test(trimmed)) {
+ // CommonMark requires space before trailing #s
+ text = trimmed.trim();
+ }
+ }
+ return {
+ type: 'heading',
+ raw: cap[0],
+ depth: cap[1].length,
+ text: text,
+ tokens: this.lexer.inline(text)
+ };
+ }
+ };
+ _proto.hr = function hr(src) {
+ var cap = this.rules.block.hr.exec(src);
+ if (cap) {
+ return {
+ type: 'hr',
+ raw: cap[0]
+ };
+ }
+ };
+ _proto.blockquote = function blockquote(src) {
+ var cap = this.rules.block.blockquote.exec(src);
+ if (cap) {
+ var text = cap[0].replace(/^ *>[ \t]?/gm, '');
+ var top = this.lexer.state.top;
+ this.lexer.state.top = true;
+ var tokens = this.lexer.blockTokens(text);
+ this.lexer.state.top = top;
+ return {
+ type: 'blockquote',
+ raw: cap[0],
+ tokens: tokens,
+ text: text
+ };
+ }
+ };
+ _proto.list = function list(src) {
+ var cap = this.rules.block.list.exec(src);
+ if (cap) {
+ var raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;
+ var bull = cap[1].trim();
+ var isordered = bull.length > 1;
+ var list = {
+ type: 'list',
+ raw: '',
+ ordered: isordered,
+ start: isordered ? +bull.slice(0, -1) : '',
+ loose: false,
+ items: []
+ };
+ bull = isordered ? "\\d{1,9}\\" + bull.slice(-1) : "\\" + bull;
+ if (this.options.pedantic) {
+ bull = isordered ? bull : '[*+-]';
+ }
+
+ // Get next list item
+ var itemRegex = new RegExp("^( {0,3}" + bull + ")((?:[\t ][^\\n]*)?(?:\\n|$))");
+
+ // Check if current bullet point can start a new List Item
+ while (src) {
+ endEarly = false;
+ if (!(cap = itemRegex.exec(src))) {
+ break;
+ }
+ if (this.rules.block.hr.test(src)) {
+ // End list if bullet was actually HR (possibly move into itemRegex?)
+ break;
+ }
+ raw = cap[0];
+ src = src.substring(raw.length);
+ line = cap[2].split('\n', 1)[0].replace(/^\t+/, function (t) {
+ return ' '.repeat(3 * t.length);
+ });
+ nextLine = src.split('\n', 1)[0];
+ if (this.options.pedantic) {
+ indent = 2;
+ itemContents = line.trimLeft();
+ } else {
+ indent = cap[2].search(/[^ ]/); // Find first non-space char
+ indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent
+ itemContents = line.slice(indent);
+ indent += cap[1].length;
+ }
+ blankLine = false;
+ if (!line && /^ *$/.test(nextLine)) {
+ // Items begin with at most one blank line
+ raw += nextLine + '\n';
+ src = src.substring(nextLine.length + 1);
+ endEarly = true;
+ }
+ if (!endEarly) {
+ var nextBulletRegex = new RegExp("^ {0," + Math.min(3, indent - 1) + "}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))");
+ var hrRegex = new RegExp("^ {0," + Math.min(3, indent - 1) + "}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)");
+ var fencesBeginRegex = new RegExp("^ {0," + Math.min(3, indent - 1) + "}(?:```|~~~)");
+ var headingBeginRegex = new RegExp("^ {0," + Math.min(3, indent - 1) + "}#");
+
+ // Check if following lines should be included in List Item
+ while (src) {
+ rawLine = src.split('\n', 1)[0];
+ nextLine = rawLine;
+
+ // Re-align to follow commonmark nesting rules
+ if (this.options.pedantic) {
+ nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');
+ }
+
+ // End list item if found code fences
+ if (fencesBeginRegex.test(nextLine)) {
+ break;
+ }
+
+ // End list item if found start of new heading
+ if (headingBeginRegex.test(nextLine)) {
+ break;
+ }
+
+ // End list item if found start of new bullet
+ if (nextBulletRegex.test(nextLine)) {
+ break;
+ }
+
+ // Horizontal rule found
+ if (hrRegex.test(src)) {
+ break;
+ }
+ if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) {
+ // Dedent if possible
+ itemContents += '\n' + nextLine.slice(indent);
+ } else {
+ // not enough indentation
+ if (blankLine) {
+ break;
+ }
+
+ // paragraph continuation unless last line was a different block level element
+ if (line.search(/[^ ]/) >= 4) {
+ // indented code block
+ break;
+ }
+ if (fencesBeginRegex.test(line)) {
+ break;
+ }
+ if (headingBeginRegex.test(line)) {
+ break;
+ }
+ if (hrRegex.test(line)) {
+ break;
+ }
+ itemContents += '\n' + nextLine;
+ }
+ if (!blankLine && !nextLine.trim()) {
+ // Check if current line is blank
+ blankLine = true;
+ }
+ raw += rawLine + '\n';
+ src = src.substring(rawLine.length + 1);
+ line = nextLine.slice(indent);
+ }
+ }
+ if (!list.loose) {
+ // If the previous item ended with a blank line, the list is loose
+ if (endsWithBlankLine) {
+ list.loose = true;
+ } else if (/\n *\n *$/.test(raw)) {
+ endsWithBlankLine = true;
+ }
+ }
+
+ // Check for task list items
+ if (this.options.gfm) {
+ istask = /^\[[ xX]\] /.exec(itemContents);
+ if (istask) {
+ ischecked = istask[0] !== '[ ] ';
+ itemContents = itemContents.replace(/^\[[ xX]\] +/, '');
+ }
+ }
+ list.items.push({
+ type: 'list_item',
+ raw: raw,
+ task: !!istask,
+ checked: ischecked,
+ loose: false,
+ text: itemContents
+ });
+ list.raw += raw;
+ }
+
+ // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic
+ list.items[list.items.length - 1].raw = raw.trimRight();
+ list.items[list.items.length - 1].text = itemContents.trimRight();
+ list.raw = list.raw.trimRight();
+ var l = list.items.length;
+
+ // Item child tokens handled here at end because we needed to have the final item to trim it first
+ for (i = 0; i < l; i++) {
+ this.lexer.state.top = false;
+ list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);
+ if (!list.loose) {
+ // Check if list should be loose
+ var spacers = list.items[i].tokens.filter(function (t) {
+ return t.type === 'space';
+ });
+ var hasMultipleLineBreaks = spacers.length > 0 && spacers.some(function (t) {
+ return /\n.*\n/.test(t.raw);
+ });
+ list.loose = hasMultipleLineBreaks;
+ }
+ }
+
+ // Set all items to loose if list is loose
+ if (list.loose) {
+ for (i = 0; i < l; i++) {
+ list.items[i].loose = true;
+ }
+ }
+ return list;
+ }
+ };
+ _proto.html = function html(src) {
+ var cap = this.rules.block.html.exec(src);
+ if (cap) {
+ var token = {
+ type: 'html',
+ raw: cap[0],
+ pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
+ text: cap[0]
+ };
+ if (this.options.sanitize) {
+ var text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);
+ token.type = 'paragraph';
+ token.text = text;
+ token.tokens = this.lexer.inline(text);
+ }
+ return token;
+ }
+ };
+ _proto.def = function def(src) {
+ var cap = this.rules.block.def.exec(src);
+ if (cap) {
+ var tag = cap[1].toLowerCase().replace(/\s+/g, ' ');
+ var href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';
+ var title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];
+ return {
+ type: 'def',
+ tag: tag,
+ raw: cap[0],
+ href: href,
+ title: title
+ };
+ }
+ };
+ _proto.table = function table(src) {
+ var cap = this.rules.block.table.exec(src);
+ if (cap) {
+ var item = {
+ type: 'table',
+ header: splitCells(cap[1]).map(function (c) {
+ return {
+ text: c
+ };
+ }),
+ align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
+ rows: cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, '').split('\n') : []
+ };
+ if (item.header.length === item.align.length) {
+ item.raw = cap[0];
+ var l = item.align.length;
+ var i, j, k, row;
+ for (i = 0; i < l; i++) {
+ if (/^ *-+: *$/.test(item.align[i])) {
+ item.align[i] = 'right';
+ } else if (/^ *:-+: *$/.test(item.align[i])) {
+ item.align[i] = 'center';
+ } else if (/^ *:-+ *$/.test(item.align[i])) {
+ item.align[i] = 'left';
+ } else {
+ item.align[i] = null;
+ }
+ }
+ l = item.rows.length;
+ for (i = 0; i < l; i++) {
+ item.rows[i] = splitCells(item.rows[i], item.header.length).map(function (c) {
+ return {
+ text: c
+ };
+ });
+ }
+
+ // parse child tokens inside headers and cells
+
+ // header child tokens
+ l = item.header.length;
+ for (j = 0; j < l; j++) {
+ item.header[j].tokens = this.lexer.inline(item.header[j].text);
+ }
+
+ // cell child tokens
+ l = item.rows.length;
+ for (j = 0; j < l; j++) {
+ row = item.rows[j];
+ for (k = 0; k < row.length; k++) {
+ row[k].tokens = this.lexer.inline(row[k].text);
+ }
+ }
+ return item;
+ }
+ }
+ };
+ _proto.lheading = function lheading(src) {
+ var cap = this.rules.block.lheading.exec(src);
+ if (cap) {
+ return {
+ type: 'heading',
+ raw: cap[0],
+ depth: cap[2].charAt(0) === '=' ? 1 : 2,
+ text: cap[1],
+ tokens: this.lexer.inline(cap[1])
+ };
+ }
+ };
+ _proto.paragraph = function paragraph(src) {
+ var cap = this.rules.block.paragraph.exec(src);
+ if (cap) {
+ var text = cap[1].charAt(cap[1].length - 1) === '\n' ? cap[1].slice(0, -1) : cap[1];
+ return {
+ type: 'paragraph',
+ raw: cap[0],
+ text: text,
+ tokens: this.lexer.inline(text)
+ };
+ }
+ };
+ _proto.text = function text(src) {
+ var cap = this.rules.block.text.exec(src);
+ if (cap) {
+ return {
+ type: 'text',
+ raw: cap[0],
+ text: cap[0],
+ tokens: this.lexer.inline(cap[0])
+ };
+ }
+ };
+ _proto.escape = function escape$1(src) {
+ var cap = this.rules.inline.escape.exec(src);
+ if (cap) {
+ return {
+ type: 'escape',
+ raw: cap[0],
+ text: escape(cap[1])
+ };
+ }
+ };
+ _proto.tag = function tag(src) {
+ var cap = this.rules.inline.tag.exec(src);
+ if (cap) {
+ if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {
+ this.lexer.state.inLink = true;
+ } else if (this.lexer.state.inLink && /^<\/a>/i.test(cap[0])) {
+ this.lexer.state.inLink = false;
+ }
+ if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
+ this.lexer.state.inRawBlock = true;
+ } else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
+ this.lexer.state.inRawBlock = false;
+ }
+ return {
+ type: this.options.sanitize ? 'text' : 'html',
+ raw: cap[0],
+ inLink: this.lexer.state.inLink,
+ inRawBlock: this.lexer.state.inRawBlock,
+ text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]
+ };
+ }
+ };
+ _proto.link = function link(src) {
+ var cap = this.rules.inline.link.exec(src);
+ if (cap) {
+ var trimmedUrl = cap[2].trim();
+ if (!this.options.pedantic && /^</.test(trimmedUrl)) {
+ // commonmark requires matching angle brackets
+ if (!/>$/.test(trimmedUrl)) {
+ return;
+ }
+
+ // ending angle bracket cannot be escaped
+ var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\');
+ if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {
+ return;
+ }
+ } else {
+ // find closing parenthesis
+ var lastParenIndex = findClosingBracket(cap[2], '()');
+ if (lastParenIndex > -1) {
+ var start = cap[0].indexOf('!') === 0 ? 5 : 4;
+ var linkLen = start + cap[1].length + lastParenIndex;
+ cap[2] = cap[2].substring(0, lastParenIndex);
+ cap[0] = cap[0].substring(0, linkLen).trim();
+ cap[3] = '';
+ }
+ }
+ var href = cap[2];
+ var title = '';
+ if (this.options.pedantic) {
+ // split pedantic href and title
+ var link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href);
+ if (link) {
+ href = link[1];
+ title = link[3];
+ }
+ } else {
+ title = cap[3] ? cap[3].slice(1, -1) : '';
+ }
+ href = href.trim();
+ if (/^</.test(href)) {
+ if (this.options.pedantic && !/>$/.test(trimmedUrl)) {
+ // pedantic allows starting angle bracket without ending angle bracket
+ href = href.slice(1);
+ } else {
+ href = href.slice(1, -1);
+ }
+ }
+ return outputLink(cap, {
+ href: href ? href.replace(this.rules.inline._escapes, '$1') : href,
+ title: title ? title.replace(this.rules.inline._escapes, '$1') : title
+ }, cap[0], this.lexer);
+ }
+ };
+ _proto.reflink = function reflink(src, links) {
+ var cap;
+ if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {
+ var link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
+ link = links[link.toLowerCase()];
+ if (!link) {
+ var text = cap[0].charAt(0);
+ return {
+ type: 'text',
+ raw: text,
+ text: text
+ };
+ }
+ return outputLink(cap, link, cap[0], this.lexer);
+ }
+ };
+ _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {
+ if (prevChar === void 0) {
+ prevChar = '';
+ }
+ var match = this.rules.inline.emStrong.lDelim.exec(src);
+ if (!match) return;
+
+ // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well
+ if (match[3] && prevChar.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/)) return;
+ var nextChar = match[1] || match[2] || '';
+ if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {
+ var lLength = match[0].length - 1;
+ var rDelim,
+ rLength,
+ delimTotal = lLength,
+ midDelimTotal = 0;
+ var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;
+ endReg.lastIndex = 0;
+
+ // Clip maskedSrc to same section of string as src (move to lexer?)
+ maskedSrc = maskedSrc.slice(-1 * src.length + lLength);
+ while ((match = endReg.exec(maskedSrc)) != null) {
+ rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];
+ if (!rDelim) continue; // skip single * in __abc*abc__
+
+ rLength = rDelim.length;
+ if (match[3] || match[4]) {
+ // found another Left Delim
+ delimTotal += rLength;
+ continue;
+ } else if (match[5] || match[6]) {
+ // either Left or Right Delim
+ if (lLength % 3 && !((lLength + rLength) % 3)) {
+ midDelimTotal += rLength;
+ continue; // CommonMark Emphasis Rules 9-10
+ }
+ }
+
+ delimTotal -= rLength;
+ if (delimTotal > 0) continue; // Haven't found enough closing delimiters
+
+ // Remove extra characters. *a*** -> *a*
+ rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);
+ var raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength);
+
+ // Create `em` if smallest delimiter has odd char count. *a***
+ if (Math.min(lLength, rLength) % 2) {
+ var _text = raw.slice(1, -1);
+ return {
+ type: 'em',
+ raw: raw,
+ text: _text,
+ tokens: this.lexer.inlineTokens(_text)
+ };
+ }
+
+ // Create 'strong' if smallest delimiter has even char count. **a***
+ var text = raw.slice(2, -2);
+ return {
+ type: 'strong',
+ raw: raw,
+ text: text,
+ tokens: this.lexer.inlineTokens(text)
+ };
+ }
+ }
+ };
+ _proto.codespan = function codespan(src) {
+ var cap = this.rules.inline.code.exec(src);
+ if (cap) {
+ var text = cap[2].replace(/\n/g, ' ');
+ var hasNonSpaceChars = /[^ ]/.test(text);
+ var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);
+ if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {
+ text = text.substring(1, text.length - 1);
+ }
+ text = escape(text, true);
+ return {
+ type: 'codespan',
+ raw: cap[0],
+ text: text
+ };
+ }
+ };
+ _proto.br = function br(src) {
+ var cap = this.rules.inline.br.exec(src);
+ if (cap) {
+ return {
+ type: 'br',
+ raw: cap[0]
+ };
+ }
+ };
+ _proto.del = function del(src) {
+ var cap = this.rules.inline.del.exec(src);
+ if (cap) {
+ return {
+ type: 'del',
+ raw: cap[0],
+ text: cap[2],
+ tokens: this.lexer.inlineTokens(cap[2])
+ };
+ }
+ };
+ _proto.autolink = function autolink(src, mangle) {
+ var cap = this.rules.inline.autolink.exec(src);
+ if (cap) {
+ var text, href;
+ if (cap[2] === '@') {
+ text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);
+ href = 'mailto:' + text;
+ } else {
+ text = escape(cap[1]);
+ href = text;
+ }
+ return {
+ type: 'link',
+ raw: cap[0],
+ text: text,
+ href: href,
+ tokens: [{
+ type: 'text',
+ raw: text,
+ text: text
+ }]
+ };
+ }
+ };
+ _proto.url = function url(src, mangle) {
+ var cap;
+ if (cap = this.rules.inline.url.exec(src)) {
+ var text, href;
+ if (cap[2] === '@') {
+ text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);
+ href = 'mailto:' + text;
+ } else {
+ // do extended autolink path validation
+ var prevCapZero;
+ do {
+ prevCapZero = cap[0];
+ cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];
+ } while (prevCapZero !== cap[0]);
+ text = escape(cap[0]);
+ if (cap[1] === 'www.') {
+ href = 'http://' + cap[0];
+ } else {
+ href = cap[0];
+ }
+ }
+ return {
+ type: 'link',
+ raw: cap[0],
+ text: text,
+ href: href,
+ tokens: [{
+ type: 'text',
+ raw: text,
+ text: text
+ }]
+ };
+ }
+ };
+ _proto.inlineText = function inlineText(src, smartypants) {
+ var cap = this.rules.inline.text.exec(src);
+ if (cap) {
+ var text;
+ if (this.lexer.state.inRawBlock) {
+ text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];
+ } else {
+ text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);
+ }
+ return {
+ type: 'text',
+ raw: cap[0],
+ text: text
+ };
+ }
+ };
+ return Tokenizer;
+}();
+
+/**
+ * Block-Level Grammar
+ */
+var block = {
+ newline: /^(?: *(?:\n|$))+/,
+ code: /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,
+ fences: /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,
+ hr: /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,
+ heading: /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,
+ blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,
+ list: /^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,
+ html: '^ {0,3}(?:' // optional indentation
+ + '<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)' // (1)
+ + '|comment[^\\n]*(\\n+|$)' // (2)
+ + '|<\\?[\\s\\S]*?(?:\\?>\\n*|$)' // (3)
+ + '|<![A-Z][\\s\\S]*?(?:>\\n*|$)' // (4)
+ + '|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)' // (5)
+ + '|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (6)
+ + '|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) open tag
+ + '|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) closing tag
+ + ')',
+ def: /^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,
+ table: noopTest,
+ lheading: /^((?:.|\n(?!\n))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,
+ // regex template, placeholders will be replaced according to different paragraph
+ // interruption rules of commonmark and the original markdown spec:
+ _paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,
+ text: /^[^\n]+/
+};
+block._label = /(?!\s*\])(?:\\.|[^\[\]\\])+/;
+block._title = /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;
+block.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex();
+block.bullet = /(?:[*+-]|\d{1,9}[.)])/;
+block.listItemStart = edit(/^( *)(bull) */).replace('bull', block.bullet).getRegex();
+block.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))').replace('def', '\\n+(?=' + block.def.source + ')').getRegex();
+block._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';
+block._comment = /<!--(?!-?>)[\s\S]*?(?:-->|$)/;
+block.html = edit(block.html, 'i').replace('comment', block._comment).replace('tag', block._tag).replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();
+block.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs
+.replace('|table', '').replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt
+.replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks
+.getRegex();
+block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();
+
+/**
+ * Normal Block Grammar
+ */
+
+block.normal = _extends({}, block);
+
+/**
+ * GFM Block Grammar
+ */
+
+block.gfm = _extends({}, block.normal, {
+ table: '^ *([^\\n ].*\\|.*)\\n' // Header
+ + ' {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?' // Align
+ + '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)' // Cells
+});
+
+block.gfm.table = edit(block.gfm.table).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt
+.replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks
+.getRegex();
+block.gfm.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs
+.replace('table', block.gfm.table) // interrupt paragraphs with table
+.replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt
+.replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks
+.getRegex();
+/**
+ * Pedantic grammar (original John Gruber's loose markdown specification)
+ */
+
+block.pedantic = _extends({}, block.normal, {
+ html: edit('^ *(?:comment *(?:\\n|\\s*$)' + '|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)' // closed tag
+ + '|<tag(?:"[^"]*"|\'[^\']*\'|\\s[^\'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))').replace('comment', block._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b').getRegex(),
+ def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,
+ heading: /^(#{1,6})(.*)(?:\n+|$)/,
+ fences: noopTest,
+ // fences not supported
+ lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,
+ paragraph: edit(block.normal._paragraph).replace('hr', block.hr).replace('heading', ' *#{1,6} *[^\n]').replace('lheading', block.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()
+});
+
+/**
+ * Inline-Level Grammar
+ */
+var inline = {
+ escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,
+ autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/,
+ url: noopTest,
+ tag: '^comment' + '|^</[a-zA-Z][\\w:-]*\\s*>' // self-closing tag
+ + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag
+ + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. <?php ?>
+ + '|^<![a-zA-Z]+\\s[\\s\\S]*?>' // declaration, e.g. <!DOCTYPE html>
+ + '|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>',
+ // CDATA section
+ link: /^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,
+ reflink: /^!?\[(label)\]\[(ref)\]/,
+ nolink: /^!?\[(ref)\](?:\[\])?/,
+ reflinkSearch: 'reflink|nolink(?!\\()',
+ emStrong: {
+ lDelim: /^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,
+ // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.
+ // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a
+ rDelimAst: /^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,
+ rDelimUnd: /^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/ // ^- Not allowed for _
+ },
+
+ code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,
+ br: /^( {2,}|\\)\n(?!\s*$)/,
+ del: noopTest,
+ text: /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,
+ punctuation: /^([\spunctuation])/
+};
+
+// list of punctuation marks from CommonMark spec
+// without * and _ to handle the different emphasis markers * and _
+inline._punctuation = '!"#$%&\'()+\\-.,/:;<=>?@\\[\\]`^{|}~';
+inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();
+
+// sequences em should skip over [title](link), `code`, <html>
+inline.blockSkip = /\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g;
+// lookbehind is not available on Safari as of version 16
+// inline.escapedEmSt = /(?<=(?:^|[^\\)(?:\\[^])*)\\[*_]/g;
+inline.escapedEmSt = /(?:^|[^\\])(?:\\\\)*\\[*_]/g;
+inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();
+inline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();
+inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();
+inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();
+inline._escapes = /\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;
+inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
+inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;
+inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();
+inline._attribute = /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;
+inline.tag = edit(inline.tag).replace('comment', inline._comment).replace('attribute', inline._attribute).getRegex();
+inline._label = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/;
+inline._href = /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/;
+inline._title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;
+inline.link = edit(inline.link).replace('label', inline._label).replace('href', inline._href).replace('title', inline._title).getRegex();
+inline.reflink = edit(inline.reflink).replace('label', inline._label).replace('ref', block._label).getRegex();
+inline.nolink = edit(inline.nolink).replace('ref', block._label).getRegex();
+inline.reflinkSearch = edit(inline.reflinkSearch, 'g').replace('reflink', inline.reflink).replace('nolink', inline.nolink).getRegex();
+
+/**
+ * Normal Inline Grammar
+ */
+
+inline.normal = _extends({}, inline);
+
+/**
+ * Pedantic Inline Grammar
+ */
+
+inline.pedantic = _extends({}, inline.normal, {
+ strong: {
+ start: /^__|\*\*/,
+ middle: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
+ endAst: /\*\*(?!\*)/g,
+ endUnd: /__(?!_)/g
+ },
+ em: {
+ start: /^_|\*/,
+ middle: /^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,
+ endAst: /\*(?!\*)/g,
+ endUnd: /_(?!_)/g
+ },
+ link: edit(/^!?\[(label)\]\((.*?)\)/).replace('label', inline._label).getRegex(),
+ reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace('label', inline._label).getRegex()
+});
+
+/**
+ * GFM Inline Grammar
+ */
+
+inline.gfm = _extends({}, inline.normal, {
+ escape: edit(inline.escape).replace('])', '~|])').getRegex(),
+ _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,
+ url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,
+ _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,
+ del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,
+ text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/
+});
+inline.gfm.url = edit(inline.gfm.url, 'i').replace('email', inline.gfm._extended_email).getRegex();
+/**
+ * GFM + Line Breaks Inline Grammar
+ */
+
+inline.breaks = _extends({}, inline.gfm, {
+ br: edit(inline.br).replace('{2,}', '*').getRegex(),
+ text: edit(inline.gfm.text).replace('\\b_', '\\b_| {2,}\\n').replace(/\{2,\}/g, '*').getRegex()
+});
+
+/**
+ * smartypants text replacement
+ * @param {string} text
+ */
+function smartypants(text) {
+ return text
+ // em-dashes
+ .replace(/---/g, "\u2014")
+ // en-dashes
+ .replace(/--/g, "\u2013")
+ // opening singles
+ .replace(/(^|[-\u2014/(\[{"\s])'/g, "$1\u2018")
+ // closing singles & apostrophes
+ .replace(/'/g, "\u2019")
+ // opening doubles
+ .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, "$1\u201C")
+ // closing doubles
+ .replace(/"/g, "\u201D")
+ // ellipses
+ .replace(/\.{3}/g, "\u2026");
+}
+
+/**
+ * mangle email addresses
+ * @param {string} text
+ */
+function mangle(text) {
+ var out = '',
+ i,
+ ch;
+ var l = text.length;
+ for (i = 0; i < l; i++) {
+ ch = text.charCodeAt(i);
+ if (Math.random() > 0.5) {
+ ch = 'x' + ch.toString(16);
+ }
+ out += '&#' + ch + ';';
+ }
+ return out;
+}
+
+/**
+ * Block Lexer
+ */
+var Lexer = /*#__PURE__*/function () {
+ function Lexer(options) {
+ this.tokens = [];
+ this.tokens.links = Object.create(null);
+ this.options = options || exports.defaults;
+ this.options.tokenizer = this.options.tokenizer || new Tokenizer();
+ this.tokenizer = this.options.tokenizer;
+ this.tokenizer.options = this.options;
+ this.tokenizer.lexer = this;
+ this.inlineQueue = [];
+ this.state = {
+ inLink: false,
+ inRawBlock: false,
+ top: true
+ };
+ var rules = {
+ block: block.normal,
+ inline: inline.normal
+ };
+ if (this.options.pedantic) {
+ rules.block = block.pedantic;
+ rules.inline = inline.pedantic;
+ } else if (this.options.gfm) {
+ rules.block = block.gfm;
+ if (this.options.breaks) {
+ rules.inline = inline.breaks;
+ } else {
+ rules.inline = inline.gfm;
+ }
+ }
+ this.tokenizer.rules = rules;
+ }
+
+ /**
+ * Expose Rules
+ */
+ /**
+ * Static Lex Method
+ */
+ Lexer.lex = function lex(src, options) {
+ var lexer = new Lexer(options);
+ return lexer.lex(src);
+ }
+
+ /**
+ * Static Lex Inline Method
+ */;
+ Lexer.lexInline = function lexInline(src, options) {
+ var lexer = new Lexer(options);
+ return lexer.inlineTokens(src);
+ }
+
+ /**
+ * Preprocessing
+ */;
+ var _proto = Lexer.prototype;
+ _proto.lex = function lex(src) {
+ src = src.replace(/\r\n|\r/g, '\n');
+ this.blockTokens(src, this.tokens);
+ var next;
+ while (next = this.inlineQueue.shift()) {
+ this.inlineTokens(next.src, next.tokens);
+ }
+ return this.tokens;
+ }
+
+ /**
+ * Lexing
+ */;
+ _proto.blockTokens = function blockTokens(src, tokens) {
+ var _this = this;
+ if (tokens === void 0) {
+ tokens = [];
+ }
+ if (this.options.pedantic) {
+ src = src.replace(/\t/g, ' ').replace(/^ +$/gm, '');
+ } else {
+ src = src.replace(/^( *)(\t+)/gm, function (_, leading, tabs) {
+ return leading + ' '.repeat(tabs.length);
+ });
+ }
+ var token, lastToken, cutSrc, lastParagraphClipped;
+ while (src) {
+ if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {
+ if (token = extTokenizer.call({
+ lexer: _this
+ }, src, tokens)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ return true;
+ }
+ return false;
+ })) {
+ continue;
+ }
+
+ // newline
+ if (token = this.tokenizer.space(src)) {
+ src = src.substring(token.raw.length);
+ if (token.raw.length === 1 && tokens.length > 0) {
+ // if there's a single \n as a spacer, it's terminating the last line,
+ // so move it there so that we don't get unecessary paragraph tags
+ tokens[tokens.length - 1].raw += '\n';
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ // code
+ if (token = this.tokenizer.code(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ // An indented code block cannot interrupt a paragraph.
+ if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
+ lastToken.raw += '\n' + token.raw;
+ lastToken.text += '\n' + token.text;
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ // fences
+ if (token = this.tokenizer.fences(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // heading
+ if (token = this.tokenizer.heading(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // hr
+ if (token = this.tokenizer.hr(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // blockquote
+ if (token = this.tokenizer.blockquote(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // list
+ if (token = this.tokenizer.list(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // html
+ if (token = this.tokenizer.html(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // def
+ if (token = this.tokenizer.def(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
+ lastToken.raw += '\n' + token.raw;
+ lastToken.text += '\n' + token.raw;
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
+ } else if (!this.tokens.links[token.tag]) {
+ this.tokens.links[token.tag] = {
+ href: token.href,
+ title: token.title
+ };
+ }
+ continue;
+ }
+
+ // table (gfm)
+ if (token = this.tokenizer.table(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // lheading
+ if (token = this.tokenizer.lheading(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // top-level paragraph
+ // prevent paragraph consuming extensions by clipping 'src' to extension start
+ cutSrc = src;
+ if (this.options.extensions && this.options.extensions.startBlock) {
+ (function () {
+ var startIndex = Infinity;
+ var tempSrc = src.slice(1);
+ var tempStart = void 0;
+ _this.options.extensions.startBlock.forEach(function (getStartIndex) {
+ tempStart = getStartIndex.call({
+ lexer: this
+ }, tempSrc);
+ if (typeof tempStart === 'number' && tempStart >= 0) {
+ startIndex = Math.min(startIndex, tempStart);
+ }
+ });
+ if (startIndex < Infinity && startIndex >= 0) {
+ cutSrc = src.substring(0, startIndex + 1);
+ }
+ })();
+ }
+ if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {
+ lastToken = tokens[tokens.length - 1];
+ if (lastParagraphClipped && lastToken.type === 'paragraph') {
+ lastToken.raw += '\n' + token.raw;
+ lastToken.text += '\n' + token.text;
+ this.inlineQueue.pop();
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
+ } else {
+ tokens.push(token);
+ }
+ lastParagraphClipped = cutSrc.length !== src.length;
+ src = src.substring(token.raw.length);
+ continue;
+ }
+
+ // text
+ if (token = this.tokenizer.text(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && lastToken.type === 'text') {
+ lastToken.raw += '\n' + token.raw;
+ lastToken.text += '\n' + token.text;
+ this.inlineQueue.pop();
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+ if (src) {
+ var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
+ if (this.options.silent) {
+ console.error(errMsg);
+ break;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+ this.state.top = true;
+ return tokens;
+ };
+ _proto.inline = function inline(src, tokens) {
+ if (tokens === void 0) {
+ tokens = [];
+ }
+ this.inlineQueue.push({
+ src: src,
+ tokens: tokens
+ });
+ return tokens;
+ }
+
+ /**
+ * Lexing/Compiling
+ */;
+ _proto.inlineTokens = function inlineTokens(src, tokens) {
+ var _this2 = this;
+ if (tokens === void 0) {
+ tokens = [];
+ }
+ var token, lastToken, cutSrc;
+
+ // String with links masked to avoid interference with em and strong
+ var maskedSrc = src;
+ var match;
+ var keepPrevChar, prevChar;
+
+ // Mask out reflinks
+ if (this.tokens.links) {
+ var links = Object.keys(this.tokens.links);
+ if (links.length > 0) {
+ while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {
+ if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {
+ maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);
+ }
+ }
+ }
+ }
+ // Mask out other blocks
+ while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {
+ maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
+ }
+
+ // Mask out escaped em & strong delimiters
+ while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {
+ maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);
+ this.tokenizer.rules.inline.escapedEmSt.lastIndex--;
+ }
+ while (src) {
+ if (!keepPrevChar) {
+ prevChar = '';
+ }
+ keepPrevChar = false;
+
+ // extensions
+ if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {
+ if (token = extTokenizer.call({
+ lexer: _this2
+ }, src, tokens)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ return true;
+ }
+ return false;
+ })) {
+ continue;
+ }
+
+ // escape
+ if (token = this.tokenizer.escape(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // tag
+ if (token = this.tokenizer.tag(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && token.type === 'text' && lastToken.type === 'text') {
+ lastToken.raw += token.raw;
+ lastToken.text += token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ // link
+ if (token = this.tokenizer.link(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // reflink, nolink
+ if (token = this.tokenizer.reflink(src, this.tokens.links)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && token.type === 'text' && lastToken.type === 'text') {
+ lastToken.raw += token.raw;
+ lastToken.text += token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ // em & strong
+ if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // code
+ if (token = this.tokenizer.codespan(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // br
+ if (token = this.tokenizer.br(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // del (gfm)
+ if (token = this.tokenizer.del(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // autolink
+ if (token = this.tokenizer.autolink(src, mangle)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // url (gfm)
+ if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // text
+ // prevent inlineText consuming extensions by clipping 'src' to extension start
+ cutSrc = src;
+ if (this.options.extensions && this.options.extensions.startInline) {
+ (function () {
+ var startIndex = Infinity;
+ var tempSrc = src.slice(1);
+ var tempStart = void 0;
+ _this2.options.extensions.startInline.forEach(function (getStartIndex) {
+ tempStart = getStartIndex.call({
+ lexer: this
+ }, tempSrc);
+ if (typeof tempStart === 'number' && tempStart >= 0) {
+ startIndex = Math.min(startIndex, tempStart);
+ }
+ });
+ if (startIndex < Infinity && startIndex >= 0) {
+ cutSrc = src.substring(0, startIndex + 1);
+ }
+ })();
+ }
+ if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {
+ src = src.substring(token.raw.length);
+ if (token.raw.slice(-1) !== '_') {
+ // Track prevChar before string of ____ started
+ prevChar = token.raw.slice(-1);
+ }
+ keepPrevChar = true;
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && lastToken.type === 'text') {
+ lastToken.raw += token.raw;
+ lastToken.text += token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+ if (src) {
+ var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
+ if (this.options.silent) {
+ console.error(errMsg);
+ break;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+ return tokens;
+ };
+ _createClass(Lexer, null, [{
+ key: "rules",
+ get: function get() {
+ return {
+ block: block,
+ inline: inline
+ };
+ }
+ }]);
+ return Lexer;
+}();
+
+/**
+ * Renderer
+ */
+var Renderer = /*#__PURE__*/function () {
+ function Renderer(options) {
+ this.options = options || exports.defaults;
+ }
+ var _proto = Renderer.prototype;
+ _proto.code = function code(_code, infostring, escaped) {
+ var lang = (infostring || '').match(/\S*/)[0];
+ if (this.options.highlight) {
+ var out = this.options.highlight(_code, lang);
+ if (out != null && out !== _code) {
+ escaped = true;
+ _code = out;
+ }
+ }
+ _code = _code.replace(/\n$/, '') + '\n';
+ if (!lang) {
+ return '<pre><code>' + (escaped ? _code : escape(_code, true)) + '</code></pre>\n';
+ }
+ return '<pre><code class="' + this.options.langPrefix + escape(lang) + '">' + (escaped ? _code : escape(_code, true)) + '</code></pre>\n';
+ }
+
+ /**
+ * @param {string} quote
+ */;
+ _proto.blockquote = function blockquote(quote) {
+ return "<blockquote>\n" + quote + "</blockquote>\n";
+ };
+ _proto.html = function html(_html) {
+ return _html;
+ }
+
+ /**
+ * @param {string} text
+ * @param {string} level
+ * @param {string} raw
+ * @param {any} slugger
+ */;
+ _proto.heading = function heading(text, level, raw, slugger) {
+ if (this.options.headerIds) {
+ var id = this.options.headerPrefix + slugger.slug(raw);
+ return "<h" + level + " id=\"" + id + "\">" + text + "</h" + level + ">\n";
+ }
+
+ // ignore IDs
+ return "<h" + level + ">" + text + "</h" + level + ">\n";
+ };
+ _proto.hr = function hr() {
+ return this.options.xhtml ? '<hr/>\n' : '<hr>\n';
+ };
+ _proto.list = function list(body, ordered, start) {
+ var type = ordered ? 'ol' : 'ul',
+ startatt = ordered && start !== 1 ? ' start="' + start + '"' : '';
+ return '<' + type + startatt + '>\n' + body + '</' + type + '>\n';
+ }
+
+ /**
+ * @param {string} text
+ */;
+ _proto.listitem = function listitem(text) {
+ return "<li>" + text + "</li>\n";
+ };
+ _proto.checkbox = function checkbox(checked) {
+ return '<input ' + (checked ? 'checked="" ' : '') + 'disabled="" type="checkbox"' + (this.options.xhtml ? ' /' : '') + '> ';
+ }
+
+ /**
+ * @param {string} text
+ */;
+ _proto.paragraph = function paragraph(text) {
+ return "<p>" + text + "</p>\n";
+ }
+
+ /**
+ * @param {string} header
+ * @param {string} body
+ */;
+ _proto.table = function table(header, body) {
+ if (body) body = "<tbody>" + body + "</tbody>";
+ return '<table>\n' + '<thead>\n' + header + '</thead>\n' + body + '</table>\n';
+ }
+
+ /**
+ * @param {string} content
+ */;
+ _proto.tablerow = function tablerow(content) {
+ return "<tr>\n" + content + "</tr>\n";
+ };
+ _proto.tablecell = function tablecell(content, flags) {
+ var type = flags.header ? 'th' : 'td';
+ var tag = flags.align ? "<" + type + " align=\"" + flags.align + "\">" : "<" + type + ">";
+ return tag + content + ("</" + type + ">\n");
+ }
+
+ /**
+ * span level renderer
+ * @param {string} text
+ */;
+ _proto.strong = function strong(text) {
+ return "<strong>" + text + "</strong>";
+ }
+
+ /**
+ * @param {string} text
+ */;
+ _proto.em = function em(text) {
+ return "<em>" + text + "</em>";
+ }
+
+ /**
+ * @param {string} text
+ */;
+ _proto.codespan = function codespan(text) {
+ return "<code>" + text + "</code>";
+ };
+ _proto.br = function br() {
+ return this.options.xhtml ? '<br/>' : '<br>';
+ }
+
+ /**
+ * @param {string} text
+ */;
+ _proto.del = function del(text) {
+ return "<del>" + text + "</del>";
+ }
+
+ /**
+ * @param {string} href
+ * @param {string} title
+ * @param {string} text
+ */;
+ _proto.link = function link(href, title, text) {
+ href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
+ if (href === null) {
+ return text;
+ }
+ var out = '<a href="' + href + '"';
+ if (title) {
+ out += ' title="' + title + '"';
+ }
+ out += '>' + text + '</a>';
+ return out;
+ }
+
+ /**
+ * @param {string} href
+ * @param {string} title
+ * @param {string} text
+ */;
+ _proto.image = function image(href, title, text) {
+ href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
+ if (href === null) {
+ return text;
+ }
+ var out = "<img src=\"" + href + "\" alt=\"" + text + "\"";
+ if (title) {
+ out += " title=\"" + title + "\"";
+ }
+ out += this.options.xhtml ? '/>' : '>';
+ return out;
+ };
+ _proto.text = function text(_text) {
+ return _text;
+ };
+ return Renderer;
+}();
+
+/**
+ * TextRenderer
+ * returns only the textual part of the token
+ */
+var TextRenderer = /*#__PURE__*/function () {
+ function TextRenderer() {}
+ var _proto = TextRenderer.prototype;
+ // no need for block level renderers
+ _proto.strong = function strong(text) {
+ return text;
+ };
+ _proto.em = function em(text) {
+ return text;
+ };
+ _proto.codespan = function codespan(text) {
+ return text;
+ };
+ _proto.del = function del(text) {
+ return text;
+ };
+ _proto.html = function html(text) {
+ return text;
+ };
+ _proto.text = function text(_text) {
+ return _text;
+ };
+ _proto.link = function link(href, title, text) {
+ return '' + text;
+ };
+ _proto.image = function image(href, title, text) {
+ return '' + text;
+ };
+ _proto.br = function br() {
+ return '';
+ };
+ return TextRenderer;
+}();
+
+/**
+ * Slugger generates header id
+ */
+var Slugger = /*#__PURE__*/function () {
+ function Slugger() {
+ this.seen = {};
+ }
+
+ /**
+ * @param {string} value
+ */
+ var _proto = Slugger.prototype;
+ _proto.serialize = function serialize(value) {
+ return value.toLowerCase().trim()
+ // remove html tags
+ .replace(/<[!\/a-z].*?>/ig, '')
+ // remove unwanted chars
+ .replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g, '').replace(/\s/g, '-');
+ }
+
+ /**
+ * Finds the next safe (unique) slug to use
+ * @param {string} originalSlug
+ * @param {boolean} isDryRun
+ */;
+ _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {
+ var slug = originalSlug;
+ var occurenceAccumulator = 0;
+ if (this.seen.hasOwnProperty(slug)) {
+ occurenceAccumulator = this.seen[originalSlug];
+ do {
+ occurenceAccumulator++;
+ slug = originalSlug + '-' + occurenceAccumulator;
+ } while (this.seen.hasOwnProperty(slug));
+ }
+ if (!isDryRun) {
+ this.seen[originalSlug] = occurenceAccumulator;
+ this.seen[slug] = 0;
+ }
+ return slug;
+ }
+
+ /**
+ * Convert string to unique id
+ * @param {object} [options]
+ * @param {boolean} [options.dryrun] Generates the next unique slug without
+ * updating the internal accumulator.
+ */;
+ _proto.slug = function slug(value, options) {
+ if (options === void 0) {
+ options = {};
+ }
+ var slug = this.serialize(value);
+ return this.getNextSafeSlug(slug, options.dryrun);
+ };
+ return Slugger;
+}();
+
+/**
+ * Parsing & Compiling
+ */
+var Parser = /*#__PURE__*/function () {
+ function Parser(options) {
+ this.options = options || exports.defaults;
+ this.options.renderer = this.options.renderer || new Renderer();
+ this.renderer = this.options.renderer;
+ this.renderer.options = this.options;
+ this.textRenderer = new TextRenderer();
+ this.slugger = new Slugger();
+ }
+
+ /**
+ * Static Parse Method
+ */
+ Parser.parse = function parse(tokens, options) {
+ var parser = new Parser(options);
+ return parser.parse(tokens);
+ }
+
+ /**
+ * Static Parse Inline Method
+ */;
+ Parser.parseInline = function parseInline(tokens, options) {
+ var parser = new Parser(options);
+ return parser.parseInline(tokens);
+ }
+
+ /**
+ * Parse Loop
+ */;
+ var _proto = Parser.prototype;
+ _proto.parse = function parse(tokens, top) {
+ if (top === void 0) {
+ top = true;
+ }
+ var out = '',
+ i,
+ j,
+ k,
+ l2,
+ l3,
+ row,
+ cell,
+ header,
+ body,
+ token,
+ ordered,
+ start,
+ loose,
+ itemBody,
+ item,
+ checked,
+ task,
+ checkbox,
+ ret;
+ var l = tokens.length;
+ for (i = 0; i < l; i++) {
+ token = tokens[i];
+
+ // Run any renderer extensions
+ if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
+ ret = this.options.extensions.renderers[token.type].call({
+ parser: this
+ }, token);
+ if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {
+ out += ret || '';
+ continue;
+ }
+ }
+ switch (token.type) {
+ case 'space':
+ {
+ continue;
+ }
+ case 'hr':
+ {
+ out += this.renderer.hr();
+ continue;
+ }
+ case 'heading':
+ {
+ out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);
+ continue;
+ }
+ case 'code':
+ {
+ out += this.renderer.code(token.text, token.lang, token.escaped);
+ continue;
+ }
+ case 'table':
+ {
+ header = '';
+
+ // header
+ cell = '';
+ l2 = token.header.length;
+ for (j = 0; j < l2; j++) {
+ cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {
+ header: true,
+ align: token.align[j]
+ });
+ }
+ header += this.renderer.tablerow(cell);
+ body = '';
+ l2 = token.rows.length;
+ for (j = 0; j < l2; j++) {
+ row = token.rows[j];
+ cell = '';
+ l3 = row.length;
+ for (k = 0; k < l3; k++) {
+ cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {
+ header: false,
+ align: token.align[k]
+ });
+ }
+ body += this.renderer.tablerow(cell);
+ }
+ out += this.renderer.table(header, body);
+ continue;
+ }
+ case 'blockquote':
+ {
+ body = this.parse(token.tokens);
+ out += this.renderer.blockquote(body);
+ continue;
+ }
+ case 'list':
+ {
+ ordered = token.ordered;
+ start = token.start;
+ loose = token.loose;
+ l2 = token.items.length;
+ body = '';
+ for (j = 0; j < l2; j++) {
+ item = token.items[j];
+ checked = item.checked;
+ task = item.task;
+ itemBody = '';
+ if (item.task) {
+ checkbox = this.renderer.checkbox(checked);
+ if (loose) {
+ if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {
+ item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;
+ if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {
+ item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;
+ }
+ } else {
+ item.tokens.unshift({
+ type: 'text',
+ text: checkbox
+ });
+ }
+ } else {
+ itemBody += checkbox;
+ }
+ }
+ itemBody += this.parse(item.tokens, loose);
+ body += this.renderer.listitem(itemBody, task, checked);
+ }
+ out += this.renderer.list(body, ordered, start);
+ continue;
+ }
+ case 'html':
+ {
+ // TODO parse inline content if parameter markdown=1
+ out += this.renderer.html(token.text);
+ continue;
+ }
+ case 'paragraph':
+ {
+ out += this.renderer.paragraph(this.parseInline(token.tokens));
+ continue;
+ }
+ case 'text':
+ {
+ body = token.tokens ? this.parseInline(token.tokens) : token.text;
+ while (i + 1 < l && tokens[i + 1].type === 'text') {
+ token = tokens[++i];
+ body += '\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);
+ }
+ out += top ? this.renderer.paragraph(body) : body;
+ continue;
+ }
+ default:
+ {
+ var errMsg = 'Token with "' + token.type + '" type was not found.';
+ if (this.options.silent) {
+ console.error(errMsg);
+ return;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+ }
+ return out;
+ }
+
+ /**
+ * Parse Inline Tokens
+ */;
+ _proto.parseInline = function parseInline(tokens, renderer) {
+ renderer = renderer || this.renderer;
+ var out = '',
+ i,
+ token,
+ ret;
+ var l = tokens.length;
+ for (i = 0; i < l; i++) {
+ token = tokens[i];
+
+ // Run any renderer extensions
+ if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
+ ret = this.options.extensions.renderers[token.type].call({
+ parser: this
+ }, token);
+ if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {
+ out += ret || '';
+ continue;
+ }
+ }
+ switch (token.type) {
+ case 'escape':
+ {
+ out += renderer.text(token.text);
+ break;
+ }
+ case 'html':
+ {
+ out += renderer.html(token.text);
+ break;
+ }
+ case 'link':
+ {
+ out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case 'image':
+ {
+ out += renderer.image(token.href, token.title, token.text);
+ break;
+ }
+ case 'strong':
+ {
+ out += renderer.strong(this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case 'em':
+ {
+ out += renderer.em(this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case 'codespan':
+ {
+ out += renderer.codespan(token.text);
+ break;
+ }
+ case 'br':
+ {
+ out += renderer.br();
+ break;
+ }
+ case 'del':
+ {
+ out += renderer.del(this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case 'text':
+ {
+ out += renderer.text(token.text);
+ break;
+ }
+ default:
+ {
+ var errMsg = 'Token with "' + token.type + '" type was not found.';
+ if (this.options.silent) {
+ console.error(errMsg);
+ return;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+ }
+ return out;
+ };
+ return Parser;
+}();
+
+var Hooks = /*#__PURE__*/function () {
+ function Hooks(options) {
+ this.options = options || exports.defaults;
+ }
+ var _proto = Hooks.prototype;
+ /**
+ * Process markdown before marked
+ */
+ _proto.preprocess = function preprocess(markdown) {
+ return markdown;
+ }
+
+ /**
+ * Process HTML after marked is finished
+ */;
+ _proto.postprocess = function postprocess(html) {
+ return html;
+ };
+ return Hooks;
+}();
+Hooks.passThroughHooks = new Set(['preprocess', 'postprocess']);
+
+function onError(silent, async, callback) {
+ return function (e) {
+ e.message += '\nPlease report this to https://github.com/markedjs/marked.';
+ if (silent) {
+ var msg = '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
+ if (async) {
+ return Promise.resolve(msg);
+ }
+ if (callback) {
+ callback(null, msg);
+ return;
+ }
+ return msg;
+ }
+ if (async) {
+ return Promise.reject(e);
+ }
+ if (callback) {
+ callback(e);
+ return;
+ }
+ throw e;
+ };
+}
+function parseMarkdown(lexer, parser) {
+ return function (src, opt, callback) {
+ if (typeof opt === 'function') {
+ callback = opt;
+ opt = null;
+ }
+ var origOpt = _extends({}, opt);
+ opt = _extends({}, marked.defaults, origOpt);
+ var throwError = onError(opt.silent, opt.async, callback);
+
+ // throw error in case of non string input
+ if (typeof src === 'undefined' || src === null) {
+ return throwError(new Error('marked(): input parameter is undefined or null'));
+ }
+ if (typeof src !== 'string') {
+ return throwError(new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected'));
+ }
+ checkSanitizeDeprecation(opt);
+ if (opt.hooks) {
+ opt.hooks.options = opt;
+ }
+ if (callback) {
+ var highlight = opt.highlight;
+ var tokens;
+ try {
+ if (opt.hooks) {
+ src = opt.hooks.preprocess(src);
+ }
+ tokens = lexer(src, opt);
+ } catch (e) {
+ return throwError(e);
+ }
+ var done = function done(err) {
+ var out;
+ if (!err) {
+ try {
+ if (opt.walkTokens) {
+ marked.walkTokens(tokens, opt.walkTokens);
+ }
+ out = parser(tokens, opt);
+ if (opt.hooks) {
+ out = opt.hooks.postprocess(out);
+ }
+ } catch (e) {
+ err = e;
+ }
+ }
+ opt.highlight = highlight;
+ return err ? throwError(err) : callback(null, out);
+ };
+ if (!highlight || highlight.length < 3) {
+ return done();
+ }
+ delete opt.highlight;
+ if (!tokens.length) return done();
+ var pending = 0;
+ marked.walkTokens(tokens, function (token) {
+ if (token.type === 'code') {
+ pending++;
+ setTimeout(function () {
+ highlight(token.text, token.lang, function (err, code) {
+ if (err) {
+ return done(err);
+ }
+ if (code != null && code !== token.text) {
+ token.text = code;
+ token.escaped = true;
+ }
+ pending--;
+ if (pending === 0) {
+ done();
+ }
+ });
+ }, 0);
+ }
+ });
+ if (pending === 0) {
+ done();
+ }
+ return;
+ }
+ if (opt.async) {
+ return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then(function (src) {
+ return lexer(src, opt);
+ }).then(function (tokens) {
+ return opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(function () {
+ return tokens;
+ }) : tokens;
+ }).then(function (tokens) {
+ return parser(tokens, opt);
+ }).then(function (html) {
+ return opt.hooks ? opt.hooks.postprocess(html) : html;
+ })["catch"](throwError);
+ }
+ try {
+ if (opt.hooks) {
+ src = opt.hooks.preprocess(src);
+ }
+ var _tokens = lexer(src, opt);
+ if (opt.walkTokens) {
+ marked.walkTokens(_tokens, opt.walkTokens);
+ }
+ var html = parser(_tokens, opt);
+ if (opt.hooks) {
+ html = opt.hooks.postprocess(html);
+ }
+ return html;
+ } catch (e) {
+ return throwError(e);
+ }
+ };
+}
+
+/**
+ * Marked
+ */
+function marked(src, opt, callback) {
+ return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);
+}
+
+/**
+ * Options
+ */
+
+marked.options = marked.setOptions = function (opt) {
+ marked.defaults = _extends({}, marked.defaults, opt);
+ changeDefaults(marked.defaults);
+ return marked;
+};
+marked.getDefaults = getDefaults;
+marked.defaults = exports.defaults;
+
+/**
+ * Use Extension
+ */
+
+marked.use = function () {
+ var extensions = marked.defaults.extensions || {
+ renderers: {},
+ childTokens: {}
+ };
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+ args.forEach(function (pack) {
+ // copy options to new object
+ var opts = _extends({}, pack);
+
+ // set async to true if it was set to true before
+ opts.async = marked.defaults.async || opts.async || false;
+
+ // ==-- Parse "addon" extensions --== //
+ if (pack.extensions) {
+ pack.extensions.forEach(function (ext) {
+ if (!ext.name) {
+ throw new Error('extension name required');
+ }
+ if (ext.renderer) {
+ // Renderer extensions
+ var prevRenderer = extensions.renderers[ext.name];
+ if (prevRenderer) {
+ // Replace extension with func to run new extension but fall back if false
+ extensions.renderers[ext.name] = function () {
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+ args[_key2] = arguments[_key2];
+ }
+ var ret = ext.renderer.apply(this, args);
+ if (ret === false) {
+ ret = prevRenderer.apply(this, args);
+ }
+ return ret;
+ };
+ } else {
+ extensions.renderers[ext.name] = ext.renderer;
+ }
+ }
+ if (ext.tokenizer) {
+ // Tokenizer Extensions
+ if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {
+ throw new Error("extension level must be 'block' or 'inline'");
+ }
+ if (extensions[ext.level]) {
+ extensions[ext.level].unshift(ext.tokenizer);
+ } else {
+ extensions[ext.level] = [ext.tokenizer];
+ }
+ if (ext.start) {
+ // Function to check for start of token
+ if (ext.level === 'block') {
+ if (extensions.startBlock) {
+ extensions.startBlock.push(ext.start);
+ } else {
+ extensions.startBlock = [ext.start];
+ }
+ } else if (ext.level === 'inline') {
+ if (extensions.startInline) {
+ extensions.startInline.push(ext.start);
+ } else {
+ extensions.startInline = [ext.start];
+ }
+ }
+ }
+ }
+ if (ext.childTokens) {
+ // Child tokens to be visited by walkTokens
+ extensions.childTokens[ext.name] = ext.childTokens;
+ }
+ });
+ opts.extensions = extensions;
+ }
+
+ // ==-- Parse "overwrite" extensions --== //
+ if (pack.renderer) {
+ (function () {
+ var renderer = marked.defaults.renderer || new Renderer();
+ var _loop = function _loop(prop) {
+ var prevRenderer = renderer[prop];
+ // Replace renderer with func to run extension, but fall back if false
+ renderer[prop] = function () {
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
+ args[_key3] = arguments[_key3];
+ }
+ var ret = pack.renderer[prop].apply(renderer, args);
+ if (ret === false) {
+ ret = prevRenderer.apply(renderer, args);
+ }
+ return ret;
+ };
+ };
+ for (var prop in pack.renderer) {
+ _loop(prop);
+ }
+ opts.renderer = renderer;
+ })();
+ }
+ if (pack.tokenizer) {
+ (function () {
+ var tokenizer = marked.defaults.tokenizer || new Tokenizer();
+ var _loop2 = function _loop2(prop) {
+ var prevTokenizer = tokenizer[prop];
+ // Replace tokenizer with func to run extension, but fall back if false
+ tokenizer[prop] = function () {
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
+ args[_key4] = arguments[_key4];
+ }
+ var ret = pack.tokenizer[prop].apply(tokenizer, args);
+ if (ret === false) {
+ ret = prevTokenizer.apply(tokenizer, args);
+ }
+ return ret;
+ };
+ };
+ for (var prop in pack.tokenizer) {
+ _loop2(prop);
+ }
+ opts.tokenizer = tokenizer;
+ })();
+ }
+
+ // ==-- Parse Hooks extensions --== //
+ if (pack.hooks) {
+ (function () {
+ var hooks = marked.defaults.hooks || new Hooks();
+ var _loop3 = function _loop3(prop) {
+ var prevHook = hooks[prop];
+ if (Hooks.passThroughHooks.has(prop)) {
+ hooks[prop] = function (arg) {
+ if (marked.defaults.async) {
+ return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then(function (ret) {
+ return prevHook.call(hooks, ret);
+ });
+ }
+ var ret = pack.hooks[prop].call(hooks, arg);
+ return prevHook.call(hooks, ret);
+ };
+ } else {
+ hooks[prop] = function () {
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
+ args[_key5] = arguments[_key5];
+ }
+ var ret = pack.hooks[prop].apply(hooks, args);
+ if (ret === false) {
+ ret = prevHook.apply(hooks, args);
+ }
+ return ret;
+ };
+ }
+ };
+ for (var prop in pack.hooks) {
+ _loop3(prop);
+ }
+ opts.hooks = hooks;
+ })();
+ }
+
+ // ==-- Parse WalkTokens extensions --== //
+ if (pack.walkTokens) {
+ var _walkTokens = marked.defaults.walkTokens;
+ opts.walkTokens = function (token) {
+ var values = [];
+ values.push(pack.walkTokens.call(this, token));
+ if (_walkTokens) {
+ values = values.concat(_walkTokens.call(this, token));
+ }
+ return values;
+ };
+ }
+ marked.setOptions(opts);
+ });
+};
+
+/**
+ * Run callback for every token
+ */
+
+marked.walkTokens = function (tokens, callback) {
+ var values = [];
+ var _loop4 = function _loop4() {
+ var token = _step.value;
+ values = values.concat(callback.call(marked, token));
+ switch (token.type) {
+ case 'table':
+ {
+ for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {
+ var cell = _step2.value;
+ values = values.concat(marked.walkTokens(cell.tokens, callback));
+ }
+ for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {
+ var row = _step3.value;
+ for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {
+ var _cell = _step4.value;
+ values = values.concat(marked.walkTokens(_cell.tokens, callback));
+ }
+ }
+ break;
+ }
+ case 'list':
+ {
+ values = values.concat(marked.walkTokens(token.items, callback));
+ break;
+ }
+ default:
+ {
+ if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {
+ // Walk any extensions
+ marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {
+ values = values.concat(marked.walkTokens(token[childTokens], callback));
+ });
+ } else if (token.tokens) {
+ values = values.concat(marked.walkTokens(token.tokens, callback));
+ }
+ }
+ }
+ };
+ for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
+ _loop4();
+ }
+ return values;
+};
+
+/**
+ * Parse Inline
+ * @param {string} src
+ */
+marked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);
+
+/**
+ * Expose
+ */
+marked.Parser = Parser;
+marked.parser = Parser.parse;
+marked.Renderer = Renderer;
+marked.TextRenderer = TextRenderer;
+marked.Lexer = Lexer;
+marked.lexer = Lexer.lex;
+marked.Tokenizer = Tokenizer;
+marked.Slugger = Slugger;
+marked.Hooks = Hooks;
+marked.parse = marked;
+var options = marked.options;
+var setOptions = marked.setOptions;
+var use = marked.use;
+var walkTokens = marked.walkTokens;
+var parseInline = marked.parseInline;
+var parse = marked;
+var parser = Parser.parse;
+var lexer = Lexer.lex;
+
+exports.Hooks = Hooks;
+exports.Lexer = Lexer;
+exports.Parser = Parser;
+exports.Renderer = Renderer;
+exports.Slugger = Slugger;
+exports.TextRenderer = TextRenderer;
+exports.Tokenizer = Tokenizer;
+exports.getDefaults = getDefaults;
+exports.lexer = lexer;
+exports.marked = marked;
+exports.options = options;
+exports.parse = parse;
+exports.parseInline = parseInline;
+exports.parser = parser;
+exports.setOptions = setOptions;
+exports.use = use;
+exports.walkTokens = walkTokens;
diff --git a/node_modules/marked/lib/marked.esm.js b/node_modules/marked/lib/marked.esm.js
new file mode 100644
index 0000000..78f87f1
--- /dev/null
+++ b/node_modules/marked/lib/marked.esm.js
@@ -0,0 +1,2887 @@
+/**
+ * marked v4.3.0 - a markdown parser
+ * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)
+ * https://github.com/markedjs/marked
+ */
+
+/**
+ * DO NOT EDIT THIS FILE
+ * The code in this file is generated from files in ./src/
+ */
+
+function getDefaults() {
+ return {
+ async: false,
+ baseUrl: null,
+ breaks: false,
+ extensions: null,
+ gfm: true,
+ headerIds: true,
+ headerPrefix: '',
+ highlight: null,
+ hooks: null,
+ langPrefix: 'language-',
+ mangle: true,
+ pedantic: false,
+ renderer: null,
+ sanitize: false,
+ sanitizer: null,
+ silent: false,
+ smartypants: false,
+ tokenizer: null,
+ walkTokens: null,
+ xhtml: false
+ };
+}
+
+let defaults = getDefaults();
+
+function changeDefaults(newDefaults) {
+ defaults = newDefaults;
+}
+
+/**
+ * Helpers
+ */
+const escapeTest = /[&<>"']/;
+const escapeReplace = new RegExp(escapeTest.source, 'g');
+const escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/;
+const escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');
+const escapeReplacements = {
+ '&': '&amp;',
+ '<': '&lt;',
+ '>': '&gt;',
+ '"': '&quot;',
+ "'": '&#39;'
+};
+const getEscapeReplacement = (ch) => escapeReplacements[ch];
+function escape(html, encode) {
+ if (encode) {
+ if (escapeTest.test(html)) {
+ return html.replace(escapeReplace, getEscapeReplacement);
+ }
+ } else {
+ if (escapeTestNoEncode.test(html)) {
+ return html.replace(escapeReplaceNoEncode, getEscapeReplacement);
+ }
+ }
+
+ return html;
+}
+
+const unescapeTest = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;
+
+/**
+ * @param {string} html
+ */
+function unescape(html) {
+ // explicitly match decimal, hex, and named HTML entities
+ return html.replace(unescapeTest, (_, n) => {
+ n = n.toLowerCase();
+ if (n === 'colon') return ':';
+ if (n.charAt(0) === '#') {
+ return n.charAt(1) === 'x'
+ ? String.fromCharCode(parseInt(n.substring(2), 16))
+ : String.fromCharCode(+n.substring(1));
+ }
+ return '';
+ });
+}
+
+const caret = /(^|[^\[])\^/g;
+
+/**
+ * @param {string | RegExp} regex
+ * @param {string} opt
+ */
+function edit(regex, opt) {
+ regex = typeof regex === 'string' ? regex : regex.source;
+ opt = opt || '';
+ const obj = {
+ replace: (name, val) => {
+ val = val.source || val;
+ val = val.replace(caret, '$1');
+ regex = regex.replace(name, val);
+ return obj;
+ },
+ getRegex: () => {
+ return new RegExp(regex, opt);
+ }
+ };
+ return obj;
+}
+
+const nonWordAndColonTest = /[^\w:]/g;
+const originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;
+
+/**
+ * @param {boolean} sanitize
+ * @param {string} base
+ * @param {string} href
+ */
+function cleanUrl(sanitize, base, href) {
+ if (sanitize) {
+ let prot;
+ try {
+ prot = decodeURIComponent(unescape(href))
+ .replace(nonWordAndColonTest, '')
+ .toLowerCase();
+ } catch (e) {
+ return null;
+ }
+ if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {
+ return null;
+ }
+ }
+ if (base && !originIndependentUrl.test(href)) {
+ href = resolveUrl(base, href);
+ }
+ try {
+ href = encodeURI(href).replace(/%25/g, '%');
+ } catch (e) {
+ return null;
+ }
+ return href;
+}
+
+const baseUrls = {};
+const justDomain = /^[^:]+:\/*[^/]*$/;
+const protocol = /^([^:]+:)[\s\S]*$/;
+const domain = /^([^:]+:\/*[^/]*)[\s\S]*$/;
+
+/**
+ * @param {string} base
+ * @param {string} href
+ */
+function resolveUrl(base, href) {
+ if (!baseUrls[' ' + base]) {
+ // we can ignore everything in base after the last slash of its path component,
+ // but we might need to add _that_
+ // https://tools.ietf.org/html/rfc3986#section-3
+ if (justDomain.test(base)) {
+ baseUrls[' ' + base] = base + '/';
+ } else {
+ baseUrls[' ' + base] = rtrim(base, '/', true);
+ }
+ }
+ base = baseUrls[' ' + base];
+ const relativeBase = base.indexOf(':') === -1;
+
+ if (href.substring(0, 2) === '//') {
+ if (relativeBase) {
+ return href;
+ }
+ return base.replace(protocol, '$1') + href;
+ } else if (href.charAt(0) === '/') {
+ if (relativeBase) {
+ return href;
+ }
+ return base.replace(domain, '$1') + href;
+ } else {
+ return base + href;
+ }
+}
+
+const noopTest = { exec: function noopTest() {} };
+
+function splitCells(tableRow, count) {
+ // ensure that every cell-delimiting pipe has a space
+ // before it to distinguish it from an escaped pipe
+ const row = tableRow.replace(/\|/g, (match, offset, str) => {
+ let escaped = false,
+ curr = offset;
+ while (--curr >= 0 && str[curr] === '\\') escaped = !escaped;
+ if (escaped) {
+ // odd number of slashes means | is escaped
+ // so we leave it alone
+ return '|';
+ } else {
+ // add space before unescaped |
+ return ' |';
+ }
+ }),
+ cells = row.split(/ \|/);
+ let i = 0;
+
+ // First/last cell in a row cannot be empty if it has no leading/trailing pipe
+ if (!cells[0].trim()) { cells.shift(); }
+ if (cells.length > 0 && !cells[cells.length - 1].trim()) { cells.pop(); }
+
+ if (cells.length > count) {
+ cells.splice(count);
+ } else {
+ while (cells.length < count) cells.push('');
+ }
+
+ for (; i < cells.length; i++) {
+ // leading or trailing whitespace is ignored per the gfm spec
+ cells[i] = cells[i].trim().replace(/\\\|/g, '|');
+ }
+ return cells;
+}
+
+/**
+ * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').
+ * /c*$/ is vulnerable to REDOS.
+ *
+ * @param {string} str
+ * @param {string} c
+ * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.
+ */
+function rtrim(str, c, invert) {
+ const l = str.length;
+ if (l === 0) {
+ return '';
+ }
+
+ // Length of suffix matching the invert condition.
+ let suffLen = 0;
+
+ // Step left until we fail to match the invert condition.
+ while (suffLen < l) {
+ const currChar = str.charAt(l - suffLen - 1);
+ if (currChar === c && !invert) {
+ suffLen++;
+ } else if (currChar !== c && invert) {
+ suffLen++;
+ } else {
+ break;
+ }
+ }
+
+ return str.slice(0, l - suffLen);
+}
+
+function findClosingBracket(str, b) {
+ if (str.indexOf(b[1]) === -1) {
+ return -1;
+ }
+ const l = str.length;
+ let level = 0,
+ i = 0;
+ for (; i < l; i++) {
+ if (str[i] === '\\') {
+ i++;
+ } else if (str[i] === b[0]) {
+ level++;
+ } else if (str[i] === b[1]) {
+ level--;
+ if (level < 0) {
+ return i;
+ }
+ }
+ }
+ return -1;
+}
+
+function checkSanitizeDeprecation(opt) {
+ if (opt && opt.sanitize && !opt.silent) {
+ console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');
+ }
+}
+
+// copied from https://stackoverflow.com/a/5450113/806777
+/**
+ * @param {string} pattern
+ * @param {number} count
+ */
+function repeatString(pattern, count) {
+ if (count < 1) {
+ return '';
+ }
+ let result = '';
+ while (count > 1) {
+ if (count & 1) {
+ result += pattern;
+ }
+ count >>= 1;
+ pattern += pattern;
+ }
+ return result + pattern;
+}
+
+function outputLink(cap, link, raw, lexer) {
+ const href = link.href;
+ const title = link.title ? escape(link.title) : null;
+ const text = cap[1].replace(/\\([\[\]])/g, '$1');
+
+ if (cap[0].charAt(0) !== '!') {
+ lexer.state.inLink = true;
+ const token = {
+ type: 'link',
+ raw,
+ href,
+ title,
+ text,
+ tokens: lexer.inlineTokens(text)
+ };
+ lexer.state.inLink = false;
+ return token;
+ }
+ return {
+ type: 'image',
+ raw,
+ href,
+ title,
+ text: escape(text)
+ };
+}
+
+function indentCodeCompensation(raw, text) {
+ const matchIndentToCode = raw.match(/^(\s+)(?:```)/);
+
+ if (matchIndentToCode === null) {
+ return text;
+ }
+
+ const indentToCode = matchIndentToCode[1];
+
+ return text
+ .split('\n')
+ .map(node => {
+ const matchIndentInNode = node.match(/^\s+/);
+ if (matchIndentInNode === null) {
+ return node;
+ }
+
+ const [indentInNode] = matchIndentInNode;
+
+ if (indentInNode.length >= indentToCode.length) {
+ return node.slice(indentToCode.length);
+ }
+
+ return node;
+ })
+ .join('\n');
+}
+
+/**
+ * Tokenizer
+ */
+class Tokenizer {
+ constructor(options) {
+ this.options = options || defaults;
+ }
+
+ space(src) {
+ const cap = this.rules.block.newline.exec(src);
+ if (cap && cap[0].length > 0) {
+ return {
+ type: 'space',
+ raw: cap[0]
+ };
+ }
+ }
+
+ code(src) {
+ const cap = this.rules.block.code.exec(src);
+ if (cap) {
+ const text = cap[0].replace(/^ {1,4}/gm, '');
+ return {
+ type: 'code',
+ raw: cap[0],
+ codeBlockStyle: 'indented',
+ text: !this.options.pedantic
+ ? rtrim(text, '\n')
+ : text
+ };
+ }
+ }
+
+ fences(src) {
+ const cap = this.rules.block.fences.exec(src);
+ if (cap) {
+ const raw = cap[0];
+ const text = indentCodeCompensation(raw, cap[3] || '');
+
+ return {
+ type: 'code',
+ raw,
+ lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],
+ text
+ };
+ }
+ }
+
+ heading(src) {
+ const cap = this.rules.block.heading.exec(src);
+ if (cap) {
+ let text = cap[2].trim();
+
+ // remove trailing #s
+ if (/#$/.test(text)) {
+ const trimmed = rtrim(text, '#');
+ if (this.options.pedantic) {
+ text = trimmed.trim();
+ } else if (!trimmed || / $/.test(trimmed)) {
+ // CommonMark requires space before trailing #s
+ text = trimmed.trim();
+ }
+ }
+
+ return {
+ type: 'heading',
+ raw: cap[0],
+ depth: cap[1].length,
+ text,
+ tokens: this.lexer.inline(text)
+ };
+ }
+ }
+
+ hr(src) {
+ const cap = this.rules.block.hr.exec(src);
+ if (cap) {
+ return {
+ type: 'hr',
+ raw: cap[0]
+ };
+ }
+ }
+
+ blockquote(src) {
+ const cap = this.rules.block.blockquote.exec(src);
+ if (cap) {
+ const text = cap[0].replace(/^ *>[ \t]?/gm, '');
+ const top = this.lexer.state.top;
+ this.lexer.state.top = true;
+ const tokens = this.lexer.blockTokens(text);
+ this.lexer.state.top = top;
+ return {
+ type: 'blockquote',
+ raw: cap[0],
+ tokens,
+ text
+ };
+ }
+ }
+
+ list(src) {
+ let cap = this.rules.block.list.exec(src);
+ if (cap) {
+ let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,
+ line, nextLine, rawLine, itemContents, endEarly;
+
+ let bull = cap[1].trim();
+ const isordered = bull.length > 1;
+
+ const list = {
+ type: 'list',
+ raw: '',
+ ordered: isordered,
+ start: isordered ? +bull.slice(0, -1) : '',
+ loose: false,
+ items: []
+ };
+
+ bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`;
+
+ if (this.options.pedantic) {
+ bull = isordered ? bull : '[*+-]';
+ }
+
+ // Get next list item
+ const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`);
+
+ // Check if current bullet point can start a new List Item
+ while (src) {
+ endEarly = false;
+ if (!(cap = itemRegex.exec(src))) {
+ break;
+ }
+
+ if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)
+ break;
+ }
+
+ raw = cap[0];
+ src = src.substring(raw.length);
+
+ line = cap[2].split('\n', 1)[0].replace(/^\t+/, (t) => ' '.repeat(3 * t.length));
+ nextLine = src.split('\n', 1)[0];
+
+ if (this.options.pedantic) {
+ indent = 2;
+ itemContents = line.trimLeft();
+ } else {
+ indent = cap[2].search(/[^ ]/); // Find first non-space char
+ indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent
+ itemContents = line.slice(indent);
+ indent += cap[1].length;
+ }
+
+ blankLine = false;
+
+ if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line
+ raw += nextLine + '\n';
+ src = src.substring(nextLine.length + 1);
+ endEarly = true;
+ }
+
+ if (!endEarly) {
+ const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`);
+ const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`);
+ const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`);
+ const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);
+
+ // Check if following lines should be included in List Item
+ while (src) {
+ rawLine = src.split('\n', 1)[0];
+ nextLine = rawLine;
+
+ // Re-align to follow commonmark nesting rules
+ if (this.options.pedantic) {
+ nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');
+ }
+
+ // End list item if found code fences
+ if (fencesBeginRegex.test(nextLine)) {
+ break;
+ }
+
+ // End list item if found start of new heading
+ if (headingBeginRegex.test(nextLine)) {
+ break;
+ }
+
+ // End list item if found start of new bullet
+ if (nextBulletRegex.test(nextLine)) {
+ break;
+ }
+
+ // Horizontal rule found
+ if (hrRegex.test(src)) {
+ break;
+ }
+
+ if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible
+ itemContents += '\n' + nextLine.slice(indent);
+ } else {
+ // not enough indentation
+ if (blankLine) {
+ break;
+ }
+
+ // paragraph continuation unless last line was a different block level element
+ if (line.search(/[^ ]/) >= 4) { // indented code block
+ break;
+ }
+ if (fencesBeginRegex.test(line)) {
+ break;
+ }
+ if (headingBeginRegex.test(line)) {
+ break;
+ }
+ if (hrRegex.test(line)) {
+ break;
+ }
+
+ itemContents += '\n' + nextLine;
+ }
+
+ if (!blankLine && !nextLine.trim()) { // Check if current line is blank
+ blankLine = true;
+ }
+
+ raw += rawLine + '\n';
+ src = src.substring(rawLine.length + 1);
+ line = nextLine.slice(indent);
+ }
+ }
+
+ if (!list.loose) {
+ // If the previous item ended with a blank line, the list is loose
+ if (endsWithBlankLine) {
+ list.loose = true;
+ } else if (/\n *\n *$/.test(raw)) {
+ endsWithBlankLine = true;
+ }
+ }
+
+ // Check for task list items
+ if (this.options.gfm) {
+ istask = /^\[[ xX]\] /.exec(itemContents);
+ if (istask) {
+ ischecked = istask[0] !== '[ ] ';
+ itemContents = itemContents.replace(/^\[[ xX]\] +/, '');
+ }
+ }
+
+ list.items.push({
+ type: 'list_item',
+ raw,
+ task: !!istask,
+ checked: ischecked,
+ loose: false,
+ text: itemContents
+ });
+
+ list.raw += raw;
+ }
+
+ // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic
+ list.items[list.items.length - 1].raw = raw.trimRight();
+ list.items[list.items.length - 1].text = itemContents.trimRight();
+ list.raw = list.raw.trimRight();
+
+ const l = list.items.length;
+
+ // Item child tokens handled here at end because we needed to have the final item to trim it first
+ for (i = 0; i < l; i++) {
+ this.lexer.state.top = false;
+ list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);
+
+ if (!list.loose) {
+ // Check if list should be loose
+ const spacers = list.items[i].tokens.filter(t => t.type === 'space');
+ const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\n.*\n/.test(t.raw));
+
+ list.loose = hasMultipleLineBreaks;
+ }
+ }
+
+ // Set all items to loose if list is loose
+ if (list.loose) {
+ for (i = 0; i < l; i++) {
+ list.items[i].loose = true;
+ }
+ }
+
+ return list;
+ }
+ }
+
+ html(src) {
+ const cap = this.rules.block.html.exec(src);
+ if (cap) {
+ const token = {
+ type: 'html',
+ raw: cap[0],
+ pre: !this.options.sanitizer
+ && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
+ text: cap[0]
+ };
+ if (this.options.sanitize) {
+ const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);
+ token.type = 'paragraph';
+ token.text = text;
+ token.tokens = this.lexer.inline(text);
+ }
+ return token;
+ }
+ }
+
+ def(src) {
+ const cap = this.rules.block.def.exec(src);
+ if (cap) {
+ const tag = cap[1].toLowerCase().replace(/\s+/g, ' ');
+ const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';
+ const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];
+ return {
+ type: 'def',
+ tag,
+ raw: cap[0],
+ href,
+ title
+ };
+ }
+ }
+
+ table(src) {
+ const cap = this.rules.block.table.exec(src);
+ if (cap) {
+ const item = {
+ type: 'table',
+ header: splitCells(cap[1]).map(c => { return { text: c }; }),
+ align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
+ rows: cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, '').split('\n') : []
+ };
+
+ if (item.header.length === item.align.length) {
+ item.raw = cap[0];
+
+ let l = item.align.length;
+ let i, j, k, row;
+ for (i = 0; i < l; i++) {
+ if (/^ *-+: *$/.test(item.align[i])) {
+ item.align[i] = 'right';
+ } else if (/^ *:-+: *$/.test(item.align[i])) {
+ item.align[i] = 'center';
+ } else if (/^ *:-+ *$/.test(item.align[i])) {
+ item.align[i] = 'left';
+ } else {
+ item.align[i] = null;
+ }
+ }
+
+ l = item.rows.length;
+ for (i = 0; i < l; i++) {
+ item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => { return { text: c }; });
+ }
+
+ // parse child tokens inside headers and cells
+
+ // header child tokens
+ l = item.header.length;
+ for (j = 0; j < l; j++) {
+ item.header[j].tokens = this.lexer.inline(item.header[j].text);
+ }
+
+ // cell child tokens
+ l = item.rows.length;
+ for (j = 0; j < l; j++) {
+ row = item.rows[j];
+ for (k = 0; k < row.length; k++) {
+ row[k].tokens = this.lexer.inline(row[k].text);
+ }
+ }
+
+ return item;
+ }
+ }
+ }
+
+ lheading(src) {
+ const cap = this.rules.block.lheading.exec(src);
+ if (cap) {
+ return {
+ type: 'heading',
+ raw: cap[0],
+ depth: cap[2].charAt(0) === '=' ? 1 : 2,
+ text: cap[1],
+ tokens: this.lexer.inline(cap[1])
+ };
+ }
+ }
+
+ paragraph(src) {
+ const cap = this.rules.block.paragraph.exec(src);
+ if (cap) {
+ const text = cap[1].charAt(cap[1].length - 1) === '\n'
+ ? cap[1].slice(0, -1)
+ : cap[1];
+ return {
+ type: 'paragraph',
+ raw: cap[0],
+ text,
+ tokens: this.lexer.inline(text)
+ };
+ }
+ }
+
+ text(src) {
+ const cap = this.rules.block.text.exec(src);
+ if (cap) {
+ return {
+ type: 'text',
+ raw: cap[0],
+ text: cap[0],
+ tokens: this.lexer.inline(cap[0])
+ };
+ }
+ }
+
+ escape(src) {
+ const cap = this.rules.inline.escape.exec(src);
+ if (cap) {
+ return {
+ type: 'escape',
+ raw: cap[0],
+ text: escape(cap[1])
+ };
+ }
+ }
+
+ tag(src) {
+ const cap = this.rules.inline.tag.exec(src);
+ if (cap) {
+ if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {
+ this.lexer.state.inLink = true;
+ } else if (this.lexer.state.inLink && /^<\/a>/i.test(cap[0])) {
+ this.lexer.state.inLink = false;
+ }
+ if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
+ this.lexer.state.inRawBlock = true;
+ } else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
+ this.lexer.state.inRawBlock = false;
+ }
+
+ return {
+ type: this.options.sanitize
+ ? 'text'
+ : 'html',
+ raw: cap[0],
+ inLink: this.lexer.state.inLink,
+ inRawBlock: this.lexer.state.inRawBlock,
+ text: this.options.sanitize
+ ? (this.options.sanitizer
+ ? this.options.sanitizer(cap[0])
+ : escape(cap[0]))
+ : cap[0]
+ };
+ }
+ }
+
+ link(src) {
+ const cap = this.rules.inline.link.exec(src);
+ if (cap) {
+ const trimmedUrl = cap[2].trim();
+ if (!this.options.pedantic && /^</.test(trimmedUrl)) {
+ // commonmark requires matching angle brackets
+ if (!(/>$/.test(trimmedUrl))) {
+ return;
+ }
+
+ // ending angle bracket cannot be escaped
+ const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\');
+ if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {
+ return;
+ }
+ } else {
+ // find closing parenthesis
+ const lastParenIndex = findClosingBracket(cap[2], '()');
+ if (lastParenIndex > -1) {
+ const start = cap[0].indexOf('!') === 0 ? 5 : 4;
+ const linkLen = start + cap[1].length + lastParenIndex;
+ cap[2] = cap[2].substring(0, lastParenIndex);
+ cap[0] = cap[0].substring(0, linkLen).trim();
+ cap[3] = '';
+ }
+ }
+ let href = cap[2];
+ let title = '';
+ if (this.options.pedantic) {
+ // split pedantic href and title
+ const link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href);
+
+ if (link) {
+ href = link[1];
+ title = link[3];
+ }
+ } else {
+ title = cap[3] ? cap[3].slice(1, -1) : '';
+ }
+
+ href = href.trim();
+ if (/^</.test(href)) {
+ if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {
+ // pedantic allows starting angle bracket without ending angle bracket
+ href = href.slice(1);
+ } else {
+ href = href.slice(1, -1);
+ }
+ }
+ return outputLink(cap, {
+ href: href ? href.replace(this.rules.inline._escapes, '$1') : href,
+ title: title ? title.replace(this.rules.inline._escapes, '$1') : title
+ }, cap[0], this.lexer);
+ }
+ }
+
+ reflink(src, links) {
+ let cap;
+ if ((cap = this.rules.inline.reflink.exec(src))
+ || (cap = this.rules.inline.nolink.exec(src))) {
+ let link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
+ link = links[link.toLowerCase()];
+ if (!link) {
+ const text = cap[0].charAt(0);
+ return {
+ type: 'text',
+ raw: text,
+ text
+ };
+ }
+ return outputLink(cap, link, cap[0], this.lexer);
+ }
+ }
+
+ emStrong(src, maskedSrc, prevChar = '') {
+ let match = this.rules.inline.emStrong.lDelim.exec(src);
+ if (!match) return;
+
+ // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well
+ if (match[3] && prevChar.match(/[\p{L}\p{N}]/u)) return;
+
+ const nextChar = match[1] || match[2] || '';
+
+ if (!nextChar || (nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar)))) {
+ const lLength = match[0].length - 1;
+ let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;
+
+ const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;
+ endReg.lastIndex = 0;
+
+ // Clip maskedSrc to same section of string as src (move to lexer?)
+ maskedSrc = maskedSrc.slice(-1 * src.length + lLength);
+
+ while ((match = endReg.exec(maskedSrc)) != null) {
+ rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];
+
+ if (!rDelim) continue; // skip single * in __abc*abc__
+
+ rLength = rDelim.length;
+
+ if (match[3] || match[4]) { // found another Left Delim
+ delimTotal += rLength;
+ continue;
+ } else if (match[5] || match[6]) { // either Left or Right Delim
+ if (lLength % 3 && !((lLength + rLength) % 3)) {
+ midDelimTotal += rLength;
+ continue; // CommonMark Emphasis Rules 9-10
+ }
+ }
+
+ delimTotal -= rLength;
+
+ if (delimTotal > 0) continue; // Haven't found enough closing delimiters
+
+ // Remove extra characters. *a*** -> *a*
+ rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);
+
+ const raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength);
+
+ // Create `em` if smallest delimiter has odd char count. *a***
+ if (Math.min(lLength, rLength) % 2) {
+ const text = raw.slice(1, -1);
+ return {
+ type: 'em',
+ raw,
+ text,
+ tokens: this.lexer.inlineTokens(text)
+ };
+ }
+
+ // Create 'strong' if smallest delimiter has even char count. **a***
+ const text = raw.slice(2, -2);
+ return {
+ type: 'strong',
+ raw,
+ text,
+ tokens: this.lexer.inlineTokens(text)
+ };
+ }
+ }
+ }
+
+ codespan(src) {
+ const cap = this.rules.inline.code.exec(src);
+ if (cap) {
+ let text = cap[2].replace(/\n/g, ' ');
+ const hasNonSpaceChars = /[^ ]/.test(text);
+ const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);
+ if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {
+ text = text.substring(1, text.length - 1);
+ }
+ text = escape(text, true);
+ return {
+ type: 'codespan',
+ raw: cap[0],
+ text
+ };
+ }
+ }
+
+ br(src) {
+ const cap = this.rules.inline.br.exec(src);
+ if (cap) {
+ return {
+ type: 'br',
+ raw: cap[0]
+ };
+ }
+ }
+
+ del(src) {
+ const cap = this.rules.inline.del.exec(src);
+ if (cap) {
+ return {
+ type: 'del',
+ raw: cap[0],
+ text: cap[2],
+ tokens: this.lexer.inlineTokens(cap[2])
+ };
+ }
+ }
+
+ autolink(src, mangle) {
+ const cap = this.rules.inline.autolink.exec(src);
+ if (cap) {
+ let text, href;
+ if (cap[2] === '@') {
+ text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);
+ href = 'mailto:' + text;
+ } else {
+ text = escape(cap[1]);
+ href = text;
+ }
+
+ return {
+ type: 'link',
+ raw: cap[0],
+ text,
+ href,
+ tokens: [
+ {
+ type: 'text',
+ raw: text,
+ text
+ }
+ ]
+ };
+ }
+ }
+
+ url(src, mangle) {
+ let cap;
+ if (cap = this.rules.inline.url.exec(src)) {
+ let text, href;
+ if (cap[2] === '@') {
+ text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);
+ href = 'mailto:' + text;
+ } else {
+ // do extended autolink path validation
+ let prevCapZero;
+ do {
+ prevCapZero = cap[0];
+ cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];
+ } while (prevCapZero !== cap[0]);
+ text = escape(cap[0]);
+ if (cap[1] === 'www.') {
+ href = 'http://' + cap[0];
+ } else {
+ href = cap[0];
+ }
+ }
+ return {
+ type: 'link',
+ raw: cap[0],
+ text,
+ href,
+ tokens: [
+ {
+ type: 'text',
+ raw: text,
+ text
+ }
+ ]
+ };
+ }
+ }
+
+ inlineText(src, smartypants) {
+ const cap = this.rules.inline.text.exec(src);
+ if (cap) {
+ let text;
+ if (this.lexer.state.inRawBlock) {
+ text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];
+ } else {
+ text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);
+ }
+ return {
+ type: 'text',
+ raw: cap[0],
+ text
+ };
+ }
+ }
+}
+
+/**
+ * Block-Level Grammar
+ */
+const block = {
+ newline: /^(?: *(?:\n|$))+/,
+ code: /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,
+ fences: /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,
+ hr: /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,
+ heading: /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,
+ blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,
+ list: /^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,
+ html: '^ {0,3}(?:' // optional indentation
+ + '<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)' // (1)
+ + '|comment[^\\n]*(\\n+|$)' // (2)
+ + '|<\\?[\\s\\S]*?(?:\\?>\\n*|$)' // (3)
+ + '|<![A-Z][\\s\\S]*?(?:>\\n*|$)' // (4)
+ + '|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)' // (5)
+ + '|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (6)
+ + '|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) open tag
+ + '|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) closing tag
+ + ')',
+ def: /^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,
+ table: noopTest,
+ lheading: /^((?:.|\n(?!\n))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,
+ // regex template, placeholders will be replaced according to different paragraph
+ // interruption rules of commonmark and the original markdown spec:
+ _paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,
+ text: /^[^\n]+/
+};
+
+block._label = /(?!\s*\])(?:\\.|[^\[\]\\])+/;
+block._title = /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;
+block.def = edit(block.def)
+ .replace('label', block._label)
+ .replace('title', block._title)
+ .getRegex();
+
+block.bullet = /(?:[*+-]|\d{1,9}[.)])/;
+block.listItemStart = edit(/^( *)(bull) */)
+ .replace('bull', block.bullet)
+ .getRegex();
+
+block.list = edit(block.list)
+ .replace(/bull/g, block.bullet)
+ .replace('hr', '\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))')
+ .replace('def', '\\n+(?=' + block.def.source + ')')
+ .getRegex();
+
+block._tag = 'address|article|aside|base|basefont|blockquote|body|caption'
+ + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'
+ + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'
+ + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'
+ + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'
+ + '|track|ul';
+block._comment = /<!--(?!-?>)[\s\S]*?(?:-->|$)/;
+block.html = edit(block.html, 'i')
+ .replace('comment', block._comment)
+ .replace('tag', block._tag)
+ .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/)
+ .getRegex();
+
+block.paragraph = edit(block._paragraph)
+ .replace('hr', block.hr)
+ .replace('heading', ' {0,3}#{1,6} ')
+ .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs
+ .replace('|table', '')
+ .replace('blockquote', ' {0,3}>')
+ .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n')
+ .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt
+ .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)')
+ .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks
+ .getRegex();
+
+block.blockquote = edit(block.blockquote)
+ .replace('paragraph', block.paragraph)
+ .getRegex();
+
+/**
+ * Normal Block Grammar
+ */
+
+block.normal = { ...block };
+
+/**
+ * GFM Block Grammar
+ */
+
+block.gfm = {
+ ...block.normal,
+ table: '^ *([^\\n ].*\\|.*)\\n' // Header
+ + ' {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?' // Align
+ + '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)' // Cells
+};
+
+block.gfm.table = edit(block.gfm.table)
+ .replace('hr', block.hr)
+ .replace('heading', ' {0,3}#{1,6} ')
+ .replace('blockquote', ' {0,3}>')
+ .replace('code', ' {4}[^\\n]')
+ .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n')
+ .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt
+ .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)')
+ .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks
+ .getRegex();
+
+block.gfm.paragraph = edit(block._paragraph)
+ .replace('hr', block.hr)
+ .replace('heading', ' {0,3}#{1,6} ')
+ .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs
+ .replace('table', block.gfm.table) // interrupt paragraphs with table
+ .replace('blockquote', ' {0,3}>')
+ .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n')
+ .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt
+ .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)')
+ .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks
+ .getRegex();
+/**
+ * Pedantic grammar (original John Gruber's loose markdown specification)
+ */
+
+block.pedantic = {
+ ...block.normal,
+ html: edit(
+ '^ *(?:comment *(?:\\n|\\s*$)'
+ + '|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)' // closed tag
+ + '|<tag(?:"[^"]*"|\'[^\']*\'|\\s[^\'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))')
+ .replace('comment', block._comment)
+ .replace(/tag/g, '(?!(?:'
+ + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'
+ + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'
+ + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b')
+ .getRegex(),
+ def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,
+ heading: /^(#{1,6})(.*)(?:\n+|$)/,
+ fences: noopTest, // fences not supported
+ lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,
+ paragraph: edit(block.normal._paragraph)
+ .replace('hr', block.hr)
+ .replace('heading', ' *#{1,6} *[^\n]')
+ .replace('lheading', block.lheading)
+ .replace('blockquote', ' {0,3}>')
+ .replace('|fences', '')
+ .replace('|list', '')
+ .replace('|html', '')
+ .getRegex()
+};
+
+/**
+ * Inline-Level Grammar
+ */
+const inline = {
+ escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,
+ autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/,
+ url: noopTest,
+ tag: '^comment'
+ + '|^</[a-zA-Z][\\w:-]*\\s*>' // self-closing tag
+ + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag
+ + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. <?php ?>
+ + '|^<![a-zA-Z]+\\s[\\s\\S]*?>' // declaration, e.g. <!DOCTYPE html>
+ + '|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>', // CDATA section
+ link: /^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,
+ reflink: /^!?\[(label)\]\[(ref)\]/,
+ nolink: /^!?\[(ref)\](?:\[\])?/,
+ reflinkSearch: 'reflink|nolink(?!\\()',
+ emStrong: {
+ lDelim: /^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,
+ // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.
+ // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a
+ rDelimAst: /^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,
+ rDelimUnd: /^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/ // ^- Not allowed for _
+ },
+ code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,
+ br: /^( {2,}|\\)\n(?!\s*$)/,
+ del: noopTest,
+ text: /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,
+ punctuation: /^([\spunctuation])/
+};
+
+// list of punctuation marks from CommonMark spec
+// without * and _ to handle the different emphasis markers * and _
+inline._punctuation = '!"#$%&\'()+\\-.,/:;<=>?@\\[\\]`^{|}~';
+inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();
+
+// sequences em should skip over [title](link), `code`, <html>
+inline.blockSkip = /\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g;
+// lookbehind is not available on Safari as of version 16
+// inline.escapedEmSt = /(?<=(?:^|[^\\)(?:\\[^])*)\\[*_]/g;
+inline.escapedEmSt = /(?:^|[^\\])(?:\\\\)*\\[*_]/g;
+
+inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();
+
+inline.emStrong.lDelim = edit(inline.emStrong.lDelim)
+ .replace(/punct/g, inline._punctuation)
+ .getRegex();
+
+inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g')
+ .replace(/punct/g, inline._punctuation)
+ .getRegex();
+
+inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g')
+ .replace(/punct/g, inline._punctuation)
+ .getRegex();
+
+inline._escapes = /\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;
+
+inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
+inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;
+inline.autolink = edit(inline.autolink)
+ .replace('scheme', inline._scheme)
+ .replace('email', inline._email)
+ .getRegex();
+
+inline._attribute = /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;
+
+inline.tag = edit(inline.tag)
+ .replace('comment', inline._comment)
+ .replace('attribute', inline._attribute)
+ .getRegex();
+
+inline._label = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/;
+inline._href = /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/;
+inline._title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;
+
+inline.link = edit(inline.link)
+ .replace('label', inline._label)
+ .replace('href', inline._href)
+ .replace('title', inline._title)
+ .getRegex();
+
+inline.reflink = edit(inline.reflink)
+ .replace('label', inline._label)
+ .replace('ref', block._label)
+ .getRegex();
+
+inline.nolink = edit(inline.nolink)
+ .replace('ref', block._label)
+ .getRegex();
+
+inline.reflinkSearch = edit(inline.reflinkSearch, 'g')
+ .replace('reflink', inline.reflink)
+ .replace('nolink', inline.nolink)
+ .getRegex();
+
+/**
+ * Normal Inline Grammar
+ */
+
+inline.normal = { ...inline };
+
+/**
+ * Pedantic Inline Grammar
+ */
+
+inline.pedantic = {
+ ...inline.normal,
+ strong: {
+ start: /^__|\*\*/,
+ middle: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
+ endAst: /\*\*(?!\*)/g,
+ endUnd: /__(?!_)/g
+ },
+ em: {
+ start: /^_|\*/,
+ middle: /^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,
+ endAst: /\*(?!\*)/g,
+ endUnd: /_(?!_)/g
+ },
+ link: edit(/^!?\[(label)\]\((.*?)\)/)
+ .replace('label', inline._label)
+ .getRegex(),
+ reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/)
+ .replace('label', inline._label)
+ .getRegex()
+};
+
+/**
+ * GFM Inline Grammar
+ */
+
+inline.gfm = {
+ ...inline.normal,
+ escape: edit(inline.escape).replace('])', '~|])').getRegex(),
+ _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,
+ url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,
+ _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,
+ del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,
+ text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/
+};
+
+inline.gfm.url = edit(inline.gfm.url, 'i')
+ .replace('email', inline.gfm._extended_email)
+ .getRegex();
+/**
+ * GFM + Line Breaks Inline Grammar
+ */
+
+inline.breaks = {
+ ...inline.gfm,
+ br: edit(inline.br).replace('{2,}', '*').getRegex(),
+ text: edit(inline.gfm.text)
+ .replace('\\b_', '\\b_| {2,}\\n')
+ .replace(/\{2,\}/g, '*')
+ .getRegex()
+};
+
+/**
+ * smartypants text replacement
+ * @param {string} text
+ */
+function smartypants(text) {
+ return text
+ // em-dashes
+ .replace(/---/g, '\u2014')
+ // en-dashes
+ .replace(/--/g, '\u2013')
+ // opening singles
+ .replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018')
+ // closing singles & apostrophes
+ .replace(/'/g, '\u2019')
+ // opening doubles
+ .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c')
+ // closing doubles
+ .replace(/"/g, '\u201d')
+ // ellipses
+ .replace(/\.{3}/g, '\u2026');
+}
+
+/**
+ * mangle email addresses
+ * @param {string} text
+ */
+function mangle(text) {
+ let out = '',
+ i,
+ ch;
+
+ const l = text.length;
+ for (i = 0; i < l; i++) {
+ ch = text.charCodeAt(i);
+ if (Math.random() > 0.5) {
+ ch = 'x' + ch.toString(16);
+ }
+ out += '&#' + ch + ';';
+ }
+
+ return out;
+}
+
+/**
+ * Block Lexer
+ */
+class Lexer {
+ constructor(options) {
+ this.tokens = [];
+ this.tokens.links = Object.create(null);
+ this.options = options || defaults;
+ this.options.tokenizer = this.options.tokenizer || new Tokenizer();
+ this.tokenizer = this.options.tokenizer;
+ this.tokenizer.options = this.options;
+ this.tokenizer.lexer = this;
+ this.inlineQueue = [];
+ this.state = {
+ inLink: false,
+ inRawBlock: false,
+ top: true
+ };
+
+ const rules = {
+ block: block.normal,
+ inline: inline.normal
+ };
+
+ if (this.options.pedantic) {
+ rules.block = block.pedantic;
+ rules.inline = inline.pedantic;
+ } else if (this.options.gfm) {
+ rules.block = block.gfm;
+ if (this.options.breaks) {
+ rules.inline = inline.breaks;
+ } else {
+ rules.inline = inline.gfm;
+ }
+ }
+ this.tokenizer.rules = rules;
+ }
+
+ /**
+ * Expose Rules
+ */
+ static get rules() {
+ return {
+ block,
+ inline
+ };
+ }
+
+ /**
+ * Static Lex Method
+ */
+ static lex(src, options) {
+ const lexer = new Lexer(options);
+ return lexer.lex(src);
+ }
+
+ /**
+ * Static Lex Inline Method
+ */
+ static lexInline(src, options) {
+ const lexer = new Lexer(options);
+ return lexer.inlineTokens(src);
+ }
+
+ /**
+ * Preprocessing
+ */
+ lex(src) {
+ src = src
+ .replace(/\r\n|\r/g, '\n');
+
+ this.blockTokens(src, this.tokens);
+
+ let next;
+ while (next = this.inlineQueue.shift()) {
+ this.inlineTokens(next.src, next.tokens);
+ }
+
+ return this.tokens;
+ }
+
+ /**
+ * Lexing
+ */
+ blockTokens(src, tokens = []) {
+ if (this.options.pedantic) {
+ src = src.replace(/\t/g, ' ').replace(/^ +$/gm, '');
+ } else {
+ src = src.replace(/^( *)(\t+)/gm, (_, leading, tabs) => {
+ return leading + ' '.repeat(tabs.length);
+ });
+ }
+
+ let token, lastToken, cutSrc, lastParagraphClipped;
+
+ while (src) {
+ if (this.options.extensions
+ && this.options.extensions.block
+ && this.options.extensions.block.some((extTokenizer) => {
+ if (token = extTokenizer.call({ lexer: this }, src, tokens)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ return true;
+ }
+ return false;
+ })) {
+ continue;
+ }
+
+ // newline
+ if (token = this.tokenizer.space(src)) {
+ src = src.substring(token.raw.length);
+ if (token.raw.length === 1 && tokens.length > 0) {
+ // if there's a single \n as a spacer, it's terminating the last line,
+ // so move it there so that we don't get unecessary paragraph tags
+ tokens[tokens.length - 1].raw += '\n';
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ // code
+ if (token = this.tokenizer.code(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ // An indented code block cannot interrupt a paragraph.
+ if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
+ lastToken.raw += '\n' + token.raw;
+ lastToken.text += '\n' + token.text;
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ // fences
+ if (token = this.tokenizer.fences(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // heading
+ if (token = this.tokenizer.heading(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // hr
+ if (token = this.tokenizer.hr(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // blockquote
+ if (token = this.tokenizer.blockquote(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // list
+ if (token = this.tokenizer.list(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // html
+ if (token = this.tokenizer.html(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // def
+ if (token = this.tokenizer.def(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
+ lastToken.raw += '\n' + token.raw;
+ lastToken.text += '\n' + token.raw;
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
+ } else if (!this.tokens.links[token.tag]) {
+ this.tokens.links[token.tag] = {
+ href: token.href,
+ title: token.title
+ };
+ }
+ continue;
+ }
+
+ // table (gfm)
+ if (token = this.tokenizer.table(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // lheading
+ if (token = this.tokenizer.lheading(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // top-level paragraph
+ // prevent paragraph consuming extensions by clipping 'src' to extension start
+ cutSrc = src;
+ if (this.options.extensions && this.options.extensions.startBlock) {
+ let startIndex = Infinity;
+ const tempSrc = src.slice(1);
+ let tempStart;
+ this.options.extensions.startBlock.forEach(function(getStartIndex) {
+ tempStart = getStartIndex.call({ lexer: this }, tempSrc);
+ if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }
+ });
+ if (startIndex < Infinity && startIndex >= 0) {
+ cutSrc = src.substring(0, startIndex + 1);
+ }
+ }
+ if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {
+ lastToken = tokens[tokens.length - 1];
+ if (lastParagraphClipped && lastToken.type === 'paragraph') {
+ lastToken.raw += '\n' + token.raw;
+ lastToken.text += '\n' + token.text;
+ this.inlineQueue.pop();
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
+ } else {
+ tokens.push(token);
+ }
+ lastParagraphClipped = (cutSrc.length !== src.length);
+ src = src.substring(token.raw.length);
+ continue;
+ }
+
+ // text
+ if (token = this.tokenizer.text(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && lastToken.type === 'text') {
+ lastToken.raw += '\n' + token.raw;
+ lastToken.text += '\n' + token.text;
+ this.inlineQueue.pop();
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ if (src) {
+ const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
+ if (this.options.silent) {
+ console.error(errMsg);
+ break;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+
+ this.state.top = true;
+ return tokens;
+ }
+
+ inline(src, tokens = []) {
+ this.inlineQueue.push({ src, tokens });
+ return tokens;
+ }
+
+ /**
+ * Lexing/Compiling
+ */
+ inlineTokens(src, tokens = []) {
+ let token, lastToken, cutSrc;
+
+ // String with links masked to avoid interference with em and strong
+ let maskedSrc = src;
+ let match;
+ let keepPrevChar, prevChar;
+
+ // Mask out reflinks
+ if (this.tokens.links) {
+ const links = Object.keys(this.tokens.links);
+ if (links.length > 0) {
+ while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {
+ if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {
+ maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);
+ }
+ }
+ }
+ }
+ // Mask out other blocks
+ while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {
+ maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
+ }
+
+ // Mask out escaped em & strong delimiters
+ while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {
+ maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);
+ this.tokenizer.rules.inline.escapedEmSt.lastIndex--;
+ }
+
+ while (src) {
+ if (!keepPrevChar) {
+ prevChar = '';
+ }
+ keepPrevChar = false;
+
+ // extensions
+ if (this.options.extensions
+ && this.options.extensions.inline
+ && this.options.extensions.inline.some((extTokenizer) => {
+ if (token = extTokenizer.call({ lexer: this }, src, tokens)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ return true;
+ }
+ return false;
+ })) {
+ continue;
+ }
+
+ // escape
+ if (token = this.tokenizer.escape(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // tag
+ if (token = this.tokenizer.tag(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && token.type === 'text' && lastToken.type === 'text') {
+ lastToken.raw += token.raw;
+ lastToken.text += token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ // link
+ if (token = this.tokenizer.link(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // reflink, nolink
+ if (token = this.tokenizer.reflink(src, this.tokens.links)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && token.type === 'text' && lastToken.type === 'text') {
+ lastToken.raw += token.raw;
+ lastToken.text += token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ // em & strong
+ if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // code
+ if (token = this.tokenizer.codespan(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // br
+ if (token = this.tokenizer.br(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // del (gfm)
+ if (token = this.tokenizer.del(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // autolink
+ if (token = this.tokenizer.autolink(src, mangle)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // url (gfm)
+ if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // text
+ // prevent inlineText consuming extensions by clipping 'src' to extension start
+ cutSrc = src;
+ if (this.options.extensions && this.options.extensions.startInline) {
+ let startIndex = Infinity;
+ const tempSrc = src.slice(1);
+ let tempStart;
+ this.options.extensions.startInline.forEach(function(getStartIndex) {
+ tempStart = getStartIndex.call({ lexer: this }, tempSrc);
+ if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }
+ });
+ if (startIndex < Infinity && startIndex >= 0) {
+ cutSrc = src.substring(0, startIndex + 1);
+ }
+ }
+ if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {
+ src = src.substring(token.raw.length);
+ if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started
+ prevChar = token.raw.slice(-1);
+ }
+ keepPrevChar = true;
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && lastToken.type === 'text') {
+ lastToken.raw += token.raw;
+ lastToken.text += token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ if (src) {
+ const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
+ if (this.options.silent) {
+ console.error(errMsg);
+ break;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+
+ return tokens;
+ }
+}
+
+/**
+ * Renderer
+ */
+class Renderer {
+ constructor(options) {
+ this.options = options || defaults;
+ }
+
+ code(code, infostring, escaped) {
+ const lang = (infostring || '').match(/\S*/)[0];
+ if (this.options.highlight) {
+ const out = this.options.highlight(code, lang);
+ if (out != null && out !== code) {
+ escaped = true;
+ code = out;
+ }
+ }
+
+ code = code.replace(/\n$/, '') + '\n';
+
+ if (!lang) {
+ return '<pre><code>'
+ + (escaped ? code : escape(code, true))
+ + '</code></pre>\n';
+ }
+
+ return '<pre><code class="'
+ + this.options.langPrefix
+ + escape(lang)
+ + '">'
+ + (escaped ? code : escape(code, true))
+ + '</code></pre>\n';
+ }
+
+ /**
+ * @param {string} quote
+ */
+ blockquote(quote) {
+ return `<blockquote>\n${quote}</blockquote>\n`;
+ }
+
+ html(html) {
+ return html;
+ }
+
+ /**
+ * @param {string} text
+ * @param {string} level
+ * @param {string} raw
+ * @param {any} slugger
+ */
+ heading(text, level, raw, slugger) {
+ if (this.options.headerIds) {
+ const id = this.options.headerPrefix + slugger.slug(raw);
+ return `<h${level} id="${id}">${text}</h${level}>\n`;
+ }
+
+ // ignore IDs
+ return `<h${level}>${text}</h${level}>\n`;
+ }
+
+ hr() {
+ return this.options.xhtml ? '<hr/>\n' : '<hr>\n';
+ }
+
+ list(body, ordered, start) {
+ const type = ordered ? 'ol' : 'ul',
+ startatt = (ordered && start !== 1) ? (' start="' + start + '"') : '';
+ return '<' + type + startatt + '>\n' + body + '</' + type + '>\n';
+ }
+
+ /**
+ * @param {string} text
+ */
+ listitem(text) {
+ return `<li>${text}</li>\n`;
+ }
+
+ checkbox(checked) {
+ return '<input '
+ + (checked ? 'checked="" ' : '')
+ + 'disabled="" type="checkbox"'
+ + (this.options.xhtml ? ' /' : '')
+ + '> ';
+ }
+
+ /**
+ * @param {string} text
+ */
+ paragraph(text) {
+ return `<p>${text}</p>\n`;
+ }
+
+ /**
+ * @param {string} header
+ * @param {string} body
+ */
+ table(header, body) {
+ if (body) body = `<tbody>${body}</tbody>`;
+
+ return '<table>\n'
+ + '<thead>\n'
+ + header
+ + '</thead>\n'
+ + body
+ + '</table>\n';
+ }
+
+ /**
+ * @param {string} content
+ */
+ tablerow(content) {
+ return `<tr>\n${content}</tr>\n`;
+ }
+
+ tablecell(content, flags) {
+ const type = flags.header ? 'th' : 'td';
+ const tag = flags.align
+ ? `<${type} align="${flags.align}">`
+ : `<${type}>`;
+ return tag + content + `</${type}>\n`;
+ }
+
+ /**
+ * span level renderer
+ * @param {string} text
+ */
+ strong(text) {
+ return `<strong>${text}</strong>`;
+ }
+
+ /**
+ * @param {string} text
+ */
+ em(text) {
+ return `<em>${text}</em>`;
+ }
+
+ /**
+ * @param {string} text
+ */
+ codespan(text) {
+ return `<code>${text}</code>`;
+ }
+
+ br() {
+ return this.options.xhtml ? '<br/>' : '<br>';
+ }
+
+ /**
+ * @param {string} text
+ */
+ del(text) {
+ return `<del>${text}</del>`;
+ }
+
+ /**
+ * @param {string} href
+ * @param {string} title
+ * @param {string} text
+ */
+ link(href, title, text) {
+ href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
+ if (href === null) {
+ return text;
+ }
+ let out = '<a href="' + href + '"';
+ if (title) {
+ out += ' title="' + title + '"';
+ }
+ out += '>' + text + '</a>';
+ return out;
+ }
+
+ /**
+ * @param {string} href
+ * @param {string} title
+ * @param {string} text
+ */
+ image(href, title, text) {
+ href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
+ if (href === null) {
+ return text;
+ }
+
+ let out = `<img src="${href}" alt="${text}"`;
+ if (title) {
+ out += ` title="${title}"`;
+ }
+ out += this.options.xhtml ? '/>' : '>';
+ return out;
+ }
+
+ text(text) {
+ return text;
+ }
+}
+
+/**
+ * TextRenderer
+ * returns only the textual part of the token
+ */
+class TextRenderer {
+ // no need for block level renderers
+ strong(text) {
+ return text;
+ }
+
+ em(text) {
+ return text;
+ }
+
+ codespan(text) {
+ return text;
+ }
+
+ del(text) {
+ return text;
+ }
+
+ html(text) {
+ return text;
+ }
+
+ text(text) {
+ return text;
+ }
+
+ link(href, title, text) {
+ return '' + text;
+ }
+
+ image(href, title, text) {
+ return '' + text;
+ }
+
+ br() {
+ return '';
+ }
+}
+
+/**
+ * Slugger generates header id
+ */
+class Slugger {
+ constructor() {
+ this.seen = {};
+ }
+
+ /**
+ * @param {string} value
+ */
+ serialize(value) {
+ return value
+ .toLowerCase()
+ .trim()
+ // remove html tags
+ .replace(/<[!\/a-z].*?>/ig, '')
+ // remove unwanted chars
+ .replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g, '')
+ .replace(/\s/g, '-');
+ }
+
+ /**
+ * Finds the next safe (unique) slug to use
+ * @param {string} originalSlug
+ * @param {boolean} isDryRun
+ */
+ getNextSafeSlug(originalSlug, isDryRun) {
+ let slug = originalSlug;
+ let occurenceAccumulator = 0;
+ if (this.seen.hasOwnProperty(slug)) {
+ occurenceAccumulator = this.seen[originalSlug];
+ do {
+ occurenceAccumulator++;
+ slug = originalSlug + '-' + occurenceAccumulator;
+ } while (this.seen.hasOwnProperty(slug));
+ }
+ if (!isDryRun) {
+ this.seen[originalSlug] = occurenceAccumulator;
+ this.seen[slug] = 0;
+ }
+ return slug;
+ }
+
+ /**
+ * Convert string to unique id
+ * @param {object} [options]
+ * @param {boolean} [options.dryrun] Generates the next unique slug without
+ * updating the internal accumulator.
+ */
+ slug(value, options = {}) {
+ const slug = this.serialize(value);
+ return this.getNextSafeSlug(slug, options.dryrun);
+ }
+}
+
+/**
+ * Parsing & Compiling
+ */
+class Parser {
+ constructor(options) {
+ this.options = options || defaults;
+ this.options.renderer = this.options.renderer || new Renderer();
+ this.renderer = this.options.renderer;
+ this.renderer.options = this.options;
+ this.textRenderer = new TextRenderer();
+ this.slugger = new Slugger();
+ }
+
+ /**
+ * Static Parse Method
+ */
+ static parse(tokens, options) {
+ const parser = new Parser(options);
+ return parser.parse(tokens);
+ }
+
+ /**
+ * Static Parse Inline Method
+ */
+ static parseInline(tokens, options) {
+ const parser = new Parser(options);
+ return parser.parseInline(tokens);
+ }
+
+ /**
+ * Parse Loop
+ */
+ parse(tokens, top = true) {
+ let out = '',
+ i,
+ j,
+ k,
+ l2,
+ l3,
+ row,
+ cell,
+ header,
+ body,
+ token,
+ ordered,
+ start,
+ loose,
+ itemBody,
+ item,
+ checked,
+ task,
+ checkbox,
+ ret;
+
+ const l = tokens.length;
+ for (i = 0; i < l; i++) {
+ token = tokens[i];
+
+ // Run any renderer extensions
+ if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
+ ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);
+ if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {
+ out += ret || '';
+ continue;
+ }
+ }
+
+ switch (token.type) {
+ case 'space': {
+ continue;
+ }
+ case 'hr': {
+ out += this.renderer.hr();
+ continue;
+ }
+ case 'heading': {
+ out += this.renderer.heading(
+ this.parseInline(token.tokens),
+ token.depth,
+ unescape(this.parseInline(token.tokens, this.textRenderer)),
+ this.slugger);
+ continue;
+ }
+ case 'code': {
+ out += this.renderer.code(token.text,
+ token.lang,
+ token.escaped);
+ continue;
+ }
+ case 'table': {
+ header = '';
+
+ // header
+ cell = '';
+ l2 = token.header.length;
+ for (j = 0; j < l2; j++) {
+ cell += this.renderer.tablecell(
+ this.parseInline(token.header[j].tokens),
+ { header: true, align: token.align[j] }
+ );
+ }
+ header += this.renderer.tablerow(cell);
+
+ body = '';
+ l2 = token.rows.length;
+ for (j = 0; j < l2; j++) {
+ row = token.rows[j];
+
+ cell = '';
+ l3 = row.length;
+ for (k = 0; k < l3; k++) {
+ cell += this.renderer.tablecell(
+ this.parseInline(row[k].tokens),
+ { header: false, align: token.align[k] }
+ );
+ }
+
+ body += this.renderer.tablerow(cell);
+ }
+ out += this.renderer.table(header, body);
+ continue;
+ }
+ case 'blockquote': {
+ body = this.parse(token.tokens);
+ out += this.renderer.blockquote(body);
+ continue;
+ }
+ case 'list': {
+ ordered = token.ordered;
+ start = token.start;
+ loose = token.loose;
+ l2 = token.items.length;
+
+ body = '';
+ for (j = 0; j < l2; j++) {
+ item = token.items[j];
+ checked = item.checked;
+ task = item.task;
+
+ itemBody = '';
+ if (item.task) {
+ checkbox = this.renderer.checkbox(checked);
+ if (loose) {
+ if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {
+ item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;
+ if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {
+ item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;
+ }
+ } else {
+ item.tokens.unshift({
+ type: 'text',
+ text: checkbox
+ });
+ }
+ } else {
+ itemBody += checkbox;
+ }
+ }
+
+ itemBody += this.parse(item.tokens, loose);
+ body += this.renderer.listitem(itemBody, task, checked);
+ }
+
+ out += this.renderer.list(body, ordered, start);
+ continue;
+ }
+ case 'html': {
+ // TODO parse inline content if parameter markdown=1
+ out += this.renderer.html(token.text);
+ continue;
+ }
+ case 'paragraph': {
+ out += this.renderer.paragraph(this.parseInline(token.tokens));
+ continue;
+ }
+ case 'text': {
+ body = token.tokens ? this.parseInline(token.tokens) : token.text;
+ while (i + 1 < l && tokens[i + 1].type === 'text') {
+ token = tokens[++i];
+ body += '\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);
+ }
+ out += top ? this.renderer.paragraph(body) : body;
+ continue;
+ }
+
+ default: {
+ const errMsg = 'Token with "' + token.type + '" type was not found.';
+ if (this.options.silent) {
+ console.error(errMsg);
+ return;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+ }
+
+ return out;
+ }
+
+ /**
+ * Parse Inline Tokens
+ */
+ parseInline(tokens, renderer) {
+ renderer = renderer || this.renderer;
+ let out = '',
+ i,
+ token,
+ ret;
+
+ const l = tokens.length;
+ for (i = 0; i < l; i++) {
+ token = tokens[i];
+
+ // Run any renderer extensions
+ if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
+ ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);
+ if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {
+ out += ret || '';
+ continue;
+ }
+ }
+
+ switch (token.type) {
+ case 'escape': {
+ out += renderer.text(token.text);
+ break;
+ }
+ case 'html': {
+ out += renderer.html(token.text);
+ break;
+ }
+ case 'link': {
+ out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case 'image': {
+ out += renderer.image(token.href, token.title, token.text);
+ break;
+ }
+ case 'strong': {
+ out += renderer.strong(this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case 'em': {
+ out += renderer.em(this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case 'codespan': {
+ out += renderer.codespan(token.text);
+ break;
+ }
+ case 'br': {
+ out += renderer.br();
+ break;
+ }
+ case 'del': {
+ out += renderer.del(this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case 'text': {
+ out += renderer.text(token.text);
+ break;
+ }
+ default: {
+ const errMsg = 'Token with "' + token.type + '" type was not found.';
+ if (this.options.silent) {
+ console.error(errMsg);
+ return;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+ }
+ return out;
+ }
+}
+
+class Hooks {
+ constructor(options) {
+ this.options = options || defaults;
+ }
+
+ static passThroughHooks = new Set([
+ 'preprocess',
+ 'postprocess'
+ ]);
+
+ /**
+ * Process markdown before marked
+ */
+ preprocess(markdown) {
+ return markdown;
+ }
+
+ /**
+ * Process HTML after marked is finished
+ */
+ postprocess(html) {
+ return html;
+ }
+}
+
+function onError(silent, async, callback) {
+ return (e) => {
+ e.message += '\nPlease report this to https://github.com/markedjs/marked.';
+
+ if (silent) {
+ const msg = '<p>An error occurred:</p><pre>'
+ + escape(e.message + '', true)
+ + '</pre>';
+ if (async) {
+ return Promise.resolve(msg);
+ }
+ if (callback) {
+ callback(null, msg);
+ return;
+ }
+ return msg;
+ }
+
+ if (async) {
+ return Promise.reject(e);
+ }
+ if (callback) {
+ callback(e);
+ return;
+ }
+ throw e;
+ };
+}
+
+function parseMarkdown(lexer, parser) {
+ return (src, opt, callback) => {
+ if (typeof opt === 'function') {
+ callback = opt;
+ opt = null;
+ }
+
+ const origOpt = { ...opt };
+ opt = { ...marked.defaults, ...origOpt };
+ const throwError = onError(opt.silent, opt.async, callback);
+
+ // throw error in case of non string input
+ if (typeof src === 'undefined' || src === null) {
+ return throwError(new Error('marked(): input parameter is undefined or null'));
+ }
+ if (typeof src !== 'string') {
+ return throwError(new Error('marked(): input parameter is of type '
+ + Object.prototype.toString.call(src) + ', string expected'));
+ }
+
+ checkSanitizeDeprecation(opt);
+
+ if (opt.hooks) {
+ opt.hooks.options = opt;
+ }
+
+ if (callback) {
+ const highlight = opt.highlight;
+ let tokens;
+
+ try {
+ if (opt.hooks) {
+ src = opt.hooks.preprocess(src);
+ }
+ tokens = lexer(src, opt);
+ } catch (e) {
+ return throwError(e);
+ }
+
+ const done = function(err) {
+ let out;
+
+ if (!err) {
+ try {
+ if (opt.walkTokens) {
+ marked.walkTokens(tokens, opt.walkTokens);
+ }
+ out = parser(tokens, opt);
+ if (opt.hooks) {
+ out = opt.hooks.postprocess(out);
+ }
+ } catch (e) {
+ err = e;
+ }
+ }
+
+ opt.highlight = highlight;
+
+ return err
+ ? throwError(err)
+ : callback(null, out);
+ };
+
+ if (!highlight || highlight.length < 3) {
+ return done();
+ }
+
+ delete opt.highlight;
+
+ if (!tokens.length) return done();
+
+ let pending = 0;
+ marked.walkTokens(tokens, function(token) {
+ if (token.type === 'code') {
+ pending++;
+ setTimeout(() => {
+ highlight(token.text, token.lang, function(err, code) {
+ if (err) {
+ return done(err);
+ }
+ if (code != null && code !== token.text) {
+ token.text = code;
+ token.escaped = true;
+ }
+
+ pending--;
+ if (pending === 0) {
+ done();
+ }
+ });
+ }, 0);
+ }
+ });
+
+ if (pending === 0) {
+ done();
+ }
+
+ return;
+ }
+
+ if (opt.async) {
+ return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)
+ .then(src => lexer(src, opt))
+ .then(tokens => opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)
+ .then(tokens => parser(tokens, opt))
+ .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)
+ .catch(throwError);
+ }
+
+ try {
+ if (opt.hooks) {
+ src = opt.hooks.preprocess(src);
+ }
+ const tokens = lexer(src, opt);
+ if (opt.walkTokens) {
+ marked.walkTokens(tokens, opt.walkTokens);
+ }
+ let html = parser(tokens, opt);
+ if (opt.hooks) {
+ html = opt.hooks.postprocess(html);
+ }
+ return html;
+ } catch (e) {
+ return throwError(e);
+ }
+ };
+}
+
+/**
+ * Marked
+ */
+function marked(src, opt, callback) {
+ return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);
+}
+
+/**
+ * Options
+ */
+
+marked.options =
+marked.setOptions = function(opt) {
+ marked.defaults = { ...marked.defaults, ...opt };
+ changeDefaults(marked.defaults);
+ return marked;
+};
+
+marked.getDefaults = getDefaults;
+
+marked.defaults = defaults;
+
+/**
+ * Use Extension
+ */
+
+marked.use = function(...args) {
+ const extensions = marked.defaults.extensions || { renderers: {}, childTokens: {} };
+
+ args.forEach((pack) => {
+ // copy options to new object
+ const opts = { ...pack };
+
+ // set async to true if it was set to true before
+ opts.async = marked.defaults.async || opts.async || false;
+
+ // ==-- Parse "addon" extensions --== //
+ if (pack.extensions) {
+ pack.extensions.forEach((ext) => {
+ if (!ext.name) {
+ throw new Error('extension name required');
+ }
+ if (ext.renderer) { // Renderer extensions
+ const prevRenderer = extensions.renderers[ext.name];
+ if (prevRenderer) {
+ // Replace extension with func to run new extension but fall back if false
+ extensions.renderers[ext.name] = function(...args) {
+ let ret = ext.renderer.apply(this, args);
+ if (ret === false) {
+ ret = prevRenderer.apply(this, args);
+ }
+ return ret;
+ };
+ } else {
+ extensions.renderers[ext.name] = ext.renderer;
+ }
+ }
+ if (ext.tokenizer) { // Tokenizer Extensions
+ if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {
+ throw new Error("extension level must be 'block' or 'inline'");
+ }
+ if (extensions[ext.level]) {
+ extensions[ext.level].unshift(ext.tokenizer);
+ } else {
+ extensions[ext.level] = [ext.tokenizer];
+ }
+ if (ext.start) { // Function to check for start of token
+ if (ext.level === 'block') {
+ if (extensions.startBlock) {
+ extensions.startBlock.push(ext.start);
+ } else {
+ extensions.startBlock = [ext.start];
+ }
+ } else if (ext.level === 'inline') {
+ if (extensions.startInline) {
+ extensions.startInline.push(ext.start);
+ } else {
+ extensions.startInline = [ext.start];
+ }
+ }
+ }
+ }
+ if (ext.childTokens) { // Child tokens to be visited by walkTokens
+ extensions.childTokens[ext.name] = ext.childTokens;
+ }
+ });
+ opts.extensions = extensions;
+ }
+
+ // ==-- Parse "overwrite" extensions --== //
+ if (pack.renderer) {
+ const renderer = marked.defaults.renderer || new Renderer();
+ for (const prop in pack.renderer) {
+ const prevRenderer = renderer[prop];
+ // Replace renderer with func to run extension, but fall back if false
+ renderer[prop] = (...args) => {
+ let ret = pack.renderer[prop].apply(renderer, args);
+ if (ret === false) {
+ ret = prevRenderer.apply(renderer, args);
+ }
+ return ret;
+ };
+ }
+ opts.renderer = renderer;
+ }
+ if (pack.tokenizer) {
+ const tokenizer = marked.defaults.tokenizer || new Tokenizer();
+ for (const prop in pack.tokenizer) {
+ const prevTokenizer = tokenizer[prop];
+ // Replace tokenizer with func to run extension, but fall back if false
+ tokenizer[prop] = (...args) => {
+ let ret = pack.tokenizer[prop].apply(tokenizer, args);
+ if (ret === false) {
+ ret = prevTokenizer.apply(tokenizer, args);
+ }
+ return ret;
+ };
+ }
+ opts.tokenizer = tokenizer;
+ }
+
+ // ==-- Parse Hooks extensions --== //
+ if (pack.hooks) {
+ const hooks = marked.defaults.hooks || new Hooks();
+ for (const prop in pack.hooks) {
+ const prevHook = hooks[prop];
+ if (Hooks.passThroughHooks.has(prop)) {
+ hooks[prop] = (arg) => {
+ if (marked.defaults.async) {
+ return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then(ret => {
+ return prevHook.call(hooks, ret);
+ });
+ }
+
+ const ret = pack.hooks[prop].call(hooks, arg);
+ return prevHook.call(hooks, ret);
+ };
+ } else {
+ hooks[prop] = (...args) => {
+ let ret = pack.hooks[prop].apply(hooks, args);
+ if (ret === false) {
+ ret = prevHook.apply(hooks, args);
+ }
+ return ret;
+ };
+ }
+ }
+ opts.hooks = hooks;
+ }
+
+ // ==-- Parse WalkTokens extensions --== //
+ if (pack.walkTokens) {
+ const walkTokens = marked.defaults.walkTokens;
+ opts.walkTokens = function(token) {
+ let values = [];
+ values.push(pack.walkTokens.call(this, token));
+ if (walkTokens) {
+ values = values.concat(walkTokens.call(this, token));
+ }
+ return values;
+ };
+ }
+
+ marked.setOptions(opts);
+ });
+};
+
+/**
+ * Run callback for every token
+ */
+
+marked.walkTokens = function(tokens, callback) {
+ let values = [];
+ for (const token of tokens) {
+ values = values.concat(callback.call(marked, token));
+ switch (token.type) {
+ case 'table': {
+ for (const cell of token.header) {
+ values = values.concat(marked.walkTokens(cell.tokens, callback));
+ }
+ for (const row of token.rows) {
+ for (const cell of row) {
+ values = values.concat(marked.walkTokens(cell.tokens, callback));
+ }
+ }
+ break;
+ }
+ case 'list': {
+ values = values.concat(marked.walkTokens(token.items, callback));
+ break;
+ }
+ default: {
+ if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) { // Walk any extensions
+ marked.defaults.extensions.childTokens[token.type].forEach(function(childTokens) {
+ values = values.concat(marked.walkTokens(token[childTokens], callback));
+ });
+ } else if (token.tokens) {
+ values = values.concat(marked.walkTokens(token.tokens, callback));
+ }
+ }
+ }
+ }
+ return values;
+};
+
+/**
+ * Parse Inline
+ * @param {string} src
+ */
+marked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);
+
+/**
+ * Expose
+ */
+marked.Parser = Parser;
+marked.parser = Parser.parse;
+marked.Renderer = Renderer;
+marked.TextRenderer = TextRenderer;
+marked.Lexer = Lexer;
+marked.lexer = Lexer.lex;
+marked.Tokenizer = Tokenizer;
+marked.Slugger = Slugger;
+marked.Hooks = Hooks;
+marked.parse = marked;
+
+const options = marked.options;
+const setOptions = marked.setOptions;
+const use = marked.use;
+const walkTokens = marked.walkTokens;
+const parseInline = marked.parseInline;
+const parse = marked;
+const parser = Parser.parse;
+const lexer = Lexer.lex;
+
+export { Hooks, Lexer, Parser, Renderer, Slugger, TextRenderer, Tokenizer, defaults, getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };
diff --git a/node_modules/marked/lib/marked.umd.js b/node_modules/marked/lib/marked.umd.js
new file mode 100644
index 0000000..29a6c5c
--- /dev/null
+++ b/node_modules/marked/lib/marked.umd.js
@@ -0,0 +1,2817 @@
+/**
+ * marked v4.3.0 - a markdown parser
+ * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)
+ * https://github.com/markedjs/marked
+ */
+
+/**
+ * DO NOT EDIT THIS FILE
+ * The code in this file is generated from files in ./src/
+ */
+
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.marked = {}));
+})(this, (function (exports) { 'use strict';
+
+ function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
+ }
+ }
+ function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ Object.defineProperty(Constructor, "prototype", {
+ writable: false
+ });
+ return Constructor;
+ }
+ function _extends() {
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+ return target;
+ };
+ return _extends.apply(this, arguments);
+ }
+ function _unsupportedIterableToArray(o, minLen) {
+ if (!o) return;
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
+ var n = Object.prototype.toString.call(o).slice(8, -1);
+ if (n === "Object" && o.constructor) n = o.constructor.name;
+ if (n === "Map" || n === "Set") return Array.from(o);
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
+ }
+ function _arrayLikeToArray(arr, len) {
+ if (len == null || len > arr.length) len = arr.length;
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
+ return arr2;
+ }
+ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
+ if (it) return (it = it.call(o)).next.bind(it);
+ if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
+ if (it) o = it;
+ var i = 0;
+ return function () {
+ if (i >= o.length) return {
+ done: true
+ };
+ return {
+ done: false,
+ value: o[i++]
+ };
+ };
+ }
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
+ }
+ function _toPrimitive(input, hint) {
+ if (typeof input !== "object" || input === null) return input;
+ var prim = input[Symbol.toPrimitive];
+ if (prim !== undefined) {
+ var res = prim.call(input, hint || "default");
+ if (typeof res !== "object") return res;
+ throw new TypeError("@@toPrimitive must return a primitive value.");
+ }
+ return (hint === "string" ? String : Number)(input);
+ }
+ function _toPropertyKey(arg) {
+ var key = _toPrimitive(arg, "string");
+ return typeof key === "symbol" ? key : String(key);
+ }
+
+ function getDefaults() {
+ return {
+ async: false,
+ baseUrl: null,
+ breaks: false,
+ extensions: null,
+ gfm: true,
+ headerIds: true,
+ headerPrefix: '',
+ highlight: null,
+ hooks: null,
+ langPrefix: 'language-',
+ mangle: true,
+ pedantic: false,
+ renderer: null,
+ sanitize: false,
+ sanitizer: null,
+ silent: false,
+ smartypants: false,
+ tokenizer: null,
+ walkTokens: null,
+ xhtml: false
+ };
+ }
+ exports.defaults = getDefaults();
+ function changeDefaults(newDefaults) {
+ exports.defaults = newDefaults;
+ }
+
+ /**
+ * Helpers
+ */
+ var escapeTest = /[&<>"']/;
+ var escapeReplace = new RegExp(escapeTest.source, 'g');
+ var escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/;
+ var escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');
+ var escapeReplacements = {
+ '&': '&amp;',
+ '<': '&lt;',
+ '>': '&gt;',
+ '"': '&quot;',
+ "'": '&#39;'
+ };
+ var getEscapeReplacement = function getEscapeReplacement(ch) {
+ return escapeReplacements[ch];
+ };
+ function escape(html, encode) {
+ if (encode) {
+ if (escapeTest.test(html)) {
+ return html.replace(escapeReplace, getEscapeReplacement);
+ }
+ } else {
+ if (escapeTestNoEncode.test(html)) {
+ return html.replace(escapeReplaceNoEncode, getEscapeReplacement);
+ }
+ }
+ return html;
+ }
+ var unescapeTest = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;
+
+ /**
+ * @param {string} html
+ */
+ function unescape(html) {
+ // explicitly match decimal, hex, and named HTML entities
+ return html.replace(unescapeTest, function (_, n) {
+ n = n.toLowerCase();
+ if (n === 'colon') return ':';
+ if (n.charAt(0) === '#') {
+ return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1));
+ }
+ return '';
+ });
+ }
+ var caret = /(^|[^\[])\^/g;
+
+ /**
+ * @param {string | RegExp} regex
+ * @param {string} opt
+ */
+ function edit(regex, opt) {
+ regex = typeof regex === 'string' ? regex : regex.source;
+ opt = opt || '';
+ var obj = {
+ replace: function replace(name, val) {
+ val = val.source || val;
+ val = val.replace(caret, '$1');
+ regex = regex.replace(name, val);
+ return obj;
+ },
+ getRegex: function getRegex() {
+ return new RegExp(regex, opt);
+ }
+ };
+ return obj;
+ }
+ var nonWordAndColonTest = /[^\w:]/g;
+ var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;
+
+ /**
+ * @param {boolean} sanitize
+ * @param {string} base
+ * @param {string} href
+ */
+ function cleanUrl(sanitize, base, href) {
+ if (sanitize) {
+ var prot;
+ try {
+ prot = decodeURIComponent(unescape(href)).replace(nonWordAndColonTest, '').toLowerCase();
+ } catch (e) {
+ return null;
+ }
+ if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {
+ return null;
+ }
+ }
+ if (base && !originIndependentUrl.test(href)) {
+ href = resolveUrl(base, href);
+ }
+ try {
+ href = encodeURI(href).replace(/%25/g, '%');
+ } catch (e) {
+ return null;
+ }
+ return href;
+ }
+ var baseUrls = {};
+ var justDomain = /^[^:]+:\/*[^/]*$/;
+ var protocol = /^([^:]+:)[\s\S]*$/;
+ var domain = /^([^:]+:\/*[^/]*)[\s\S]*$/;
+
+ /**
+ * @param {string} base
+ * @param {string} href
+ */
+ function resolveUrl(base, href) {
+ if (!baseUrls[' ' + base]) {
+ // we can ignore everything in base after the last slash of its path component,
+ // but we might need to add _that_
+ // https://tools.ietf.org/html/rfc3986#section-3
+ if (justDomain.test(base)) {
+ baseUrls[' ' + base] = base + '/';
+ } else {
+ baseUrls[' ' + base] = rtrim(base, '/', true);
+ }
+ }
+ base = baseUrls[' ' + base];
+ var relativeBase = base.indexOf(':') === -1;
+ if (href.substring(0, 2) === '//') {
+ if (relativeBase) {
+ return href;
+ }
+ return base.replace(protocol, '$1') + href;
+ } else if (href.charAt(0) === '/') {
+ if (relativeBase) {
+ return href;
+ }
+ return base.replace(domain, '$1') + href;
+ } else {
+ return base + href;
+ }
+ }
+ var noopTest = {
+ exec: function noopTest() {}
+ };
+ function splitCells(tableRow, count) {
+ // ensure that every cell-delimiting pipe has a space
+ // before it to distinguish it from an escaped pipe
+ var row = tableRow.replace(/\|/g, function (match, offset, str) {
+ var escaped = false,
+ curr = offset;
+ while (--curr >= 0 && str[curr] === '\\') {
+ escaped = !escaped;
+ }
+ if (escaped) {
+ // odd number of slashes means | is escaped
+ // so we leave it alone
+ return '|';
+ } else {
+ // add space before unescaped |
+ return ' |';
+ }
+ }),
+ cells = row.split(/ \|/);
+ var i = 0;
+
+ // First/last cell in a row cannot be empty if it has no leading/trailing pipe
+ if (!cells[0].trim()) {
+ cells.shift();
+ }
+ if (cells.length > 0 && !cells[cells.length - 1].trim()) {
+ cells.pop();
+ }
+ if (cells.length > count) {
+ cells.splice(count);
+ } else {
+ while (cells.length < count) {
+ cells.push('');
+ }
+ }
+ for (; i < cells.length; i++) {
+ // leading or trailing whitespace is ignored per the gfm spec
+ cells[i] = cells[i].trim().replace(/\\\|/g, '|');
+ }
+ return cells;
+ }
+
+ /**
+ * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').
+ * /c*$/ is vulnerable to REDOS.
+ *
+ * @param {string} str
+ * @param {string} c
+ * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.
+ */
+ function rtrim(str, c, invert) {
+ var l = str.length;
+ if (l === 0) {
+ return '';
+ }
+
+ // Length of suffix matching the invert condition.
+ var suffLen = 0;
+
+ // Step left until we fail to match the invert condition.
+ while (suffLen < l) {
+ var currChar = str.charAt(l - suffLen - 1);
+ if (currChar === c && !invert) {
+ suffLen++;
+ } else if (currChar !== c && invert) {
+ suffLen++;
+ } else {
+ break;
+ }
+ }
+ return str.slice(0, l - suffLen);
+ }
+ function findClosingBracket(str, b) {
+ if (str.indexOf(b[1]) === -1) {
+ return -1;
+ }
+ var l = str.length;
+ var level = 0,
+ i = 0;
+ for (; i < l; i++) {
+ if (str[i] === '\\') {
+ i++;
+ } else if (str[i] === b[0]) {
+ level++;
+ } else if (str[i] === b[1]) {
+ level--;
+ if (level < 0) {
+ return i;
+ }
+ }
+ }
+ return -1;
+ }
+ function checkSanitizeDeprecation(opt) {
+ if (opt && opt.sanitize && !opt.silent) {
+ console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');
+ }
+ }
+
+ // copied from https://stackoverflow.com/a/5450113/806777
+ /**
+ * @param {string} pattern
+ * @param {number} count
+ */
+ function repeatString(pattern, count) {
+ if (count < 1) {
+ return '';
+ }
+ var result = '';
+ while (count > 1) {
+ if (count & 1) {
+ result += pattern;
+ }
+ count >>= 1;
+ pattern += pattern;
+ }
+ return result + pattern;
+ }
+
+ function outputLink(cap, link, raw, lexer) {
+ var href = link.href;
+ var title = link.title ? escape(link.title) : null;
+ var text = cap[1].replace(/\\([\[\]])/g, '$1');
+ if (cap[0].charAt(0) !== '!') {
+ lexer.state.inLink = true;
+ var token = {
+ type: 'link',
+ raw: raw,
+ href: href,
+ title: title,
+ text: text,
+ tokens: lexer.inlineTokens(text)
+ };
+ lexer.state.inLink = false;
+ return token;
+ }
+ return {
+ type: 'image',
+ raw: raw,
+ href: href,
+ title: title,
+ text: escape(text)
+ };
+ }
+ function indentCodeCompensation(raw, text) {
+ var matchIndentToCode = raw.match(/^(\s+)(?:```)/);
+ if (matchIndentToCode === null) {
+ return text;
+ }
+ var indentToCode = matchIndentToCode[1];
+ return text.split('\n').map(function (node) {
+ var matchIndentInNode = node.match(/^\s+/);
+ if (matchIndentInNode === null) {
+ return node;
+ }
+ var indentInNode = matchIndentInNode[0];
+ if (indentInNode.length >= indentToCode.length) {
+ return node.slice(indentToCode.length);
+ }
+ return node;
+ }).join('\n');
+ }
+
+ /**
+ * Tokenizer
+ */
+ var Tokenizer = /*#__PURE__*/function () {
+ function Tokenizer(options) {
+ this.options = options || exports.defaults;
+ }
+ var _proto = Tokenizer.prototype;
+ _proto.space = function space(src) {
+ var cap = this.rules.block.newline.exec(src);
+ if (cap && cap[0].length > 0) {
+ return {
+ type: 'space',
+ raw: cap[0]
+ };
+ }
+ };
+ _proto.code = function code(src) {
+ var cap = this.rules.block.code.exec(src);
+ if (cap) {
+ var text = cap[0].replace(/^ {1,4}/gm, '');
+ return {
+ type: 'code',
+ raw: cap[0],
+ codeBlockStyle: 'indented',
+ text: !this.options.pedantic ? rtrim(text, '\n') : text
+ };
+ }
+ };
+ _proto.fences = function fences(src) {
+ var cap = this.rules.block.fences.exec(src);
+ if (cap) {
+ var raw = cap[0];
+ var text = indentCodeCompensation(raw, cap[3] || '');
+ return {
+ type: 'code',
+ raw: raw,
+ lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],
+ text: text
+ };
+ }
+ };
+ _proto.heading = function heading(src) {
+ var cap = this.rules.block.heading.exec(src);
+ if (cap) {
+ var text = cap[2].trim();
+
+ // remove trailing #s
+ if (/#$/.test(text)) {
+ var trimmed = rtrim(text, '#');
+ if (this.options.pedantic) {
+ text = trimmed.trim();
+ } else if (!trimmed || / $/.test(trimmed)) {
+ // CommonMark requires space before trailing #s
+ text = trimmed.trim();
+ }
+ }
+ return {
+ type: 'heading',
+ raw: cap[0],
+ depth: cap[1].length,
+ text: text,
+ tokens: this.lexer.inline(text)
+ };
+ }
+ };
+ _proto.hr = function hr(src) {
+ var cap = this.rules.block.hr.exec(src);
+ if (cap) {
+ return {
+ type: 'hr',
+ raw: cap[0]
+ };
+ }
+ };
+ _proto.blockquote = function blockquote(src) {
+ var cap = this.rules.block.blockquote.exec(src);
+ if (cap) {
+ var text = cap[0].replace(/^ *>[ \t]?/gm, '');
+ var top = this.lexer.state.top;
+ this.lexer.state.top = true;
+ var tokens = this.lexer.blockTokens(text);
+ this.lexer.state.top = top;
+ return {
+ type: 'blockquote',
+ raw: cap[0],
+ tokens: tokens,
+ text: text
+ };
+ }
+ };
+ _proto.list = function list(src) {
+ var cap = this.rules.block.list.exec(src);
+ if (cap) {
+ var raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine, line, nextLine, rawLine, itemContents, endEarly;
+ var bull = cap[1].trim();
+ var isordered = bull.length > 1;
+ var list = {
+ type: 'list',
+ raw: '',
+ ordered: isordered,
+ start: isordered ? +bull.slice(0, -1) : '',
+ loose: false,
+ items: []
+ };
+ bull = isordered ? "\\d{1,9}\\" + bull.slice(-1) : "\\" + bull;
+ if (this.options.pedantic) {
+ bull = isordered ? bull : '[*+-]';
+ }
+
+ // Get next list item
+ var itemRegex = new RegExp("^( {0,3}" + bull + ")((?:[\t ][^\\n]*)?(?:\\n|$))");
+
+ // Check if current bullet point can start a new List Item
+ while (src) {
+ endEarly = false;
+ if (!(cap = itemRegex.exec(src))) {
+ break;
+ }
+ if (this.rules.block.hr.test(src)) {
+ // End list if bullet was actually HR (possibly move into itemRegex?)
+ break;
+ }
+ raw = cap[0];
+ src = src.substring(raw.length);
+ line = cap[2].split('\n', 1)[0].replace(/^\t+/, function (t) {
+ return ' '.repeat(3 * t.length);
+ });
+ nextLine = src.split('\n', 1)[0];
+ if (this.options.pedantic) {
+ indent = 2;
+ itemContents = line.trimLeft();
+ } else {
+ indent = cap[2].search(/[^ ]/); // Find first non-space char
+ indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent
+ itemContents = line.slice(indent);
+ indent += cap[1].length;
+ }
+ blankLine = false;
+ if (!line && /^ *$/.test(nextLine)) {
+ // Items begin with at most one blank line
+ raw += nextLine + '\n';
+ src = src.substring(nextLine.length + 1);
+ endEarly = true;
+ }
+ if (!endEarly) {
+ var nextBulletRegex = new RegExp("^ {0," + Math.min(3, indent - 1) + "}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))");
+ var hrRegex = new RegExp("^ {0," + Math.min(3, indent - 1) + "}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)");
+ var fencesBeginRegex = new RegExp("^ {0," + Math.min(3, indent - 1) + "}(?:```|~~~)");
+ var headingBeginRegex = new RegExp("^ {0," + Math.min(3, indent - 1) + "}#");
+
+ // Check if following lines should be included in List Item
+ while (src) {
+ rawLine = src.split('\n', 1)[0];
+ nextLine = rawLine;
+
+ // Re-align to follow commonmark nesting rules
+ if (this.options.pedantic) {
+ nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');
+ }
+
+ // End list item if found code fences
+ if (fencesBeginRegex.test(nextLine)) {
+ break;
+ }
+
+ // End list item if found start of new heading
+ if (headingBeginRegex.test(nextLine)) {
+ break;
+ }
+
+ // End list item if found start of new bullet
+ if (nextBulletRegex.test(nextLine)) {
+ break;
+ }
+
+ // Horizontal rule found
+ if (hrRegex.test(src)) {
+ break;
+ }
+ if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) {
+ // Dedent if possible
+ itemContents += '\n' + nextLine.slice(indent);
+ } else {
+ // not enough indentation
+ if (blankLine) {
+ break;
+ }
+
+ // paragraph continuation unless last line was a different block level element
+ if (line.search(/[^ ]/) >= 4) {
+ // indented code block
+ break;
+ }
+ if (fencesBeginRegex.test(line)) {
+ break;
+ }
+ if (headingBeginRegex.test(line)) {
+ break;
+ }
+ if (hrRegex.test(line)) {
+ break;
+ }
+ itemContents += '\n' + nextLine;
+ }
+ if (!blankLine && !nextLine.trim()) {
+ // Check if current line is blank
+ blankLine = true;
+ }
+ raw += rawLine + '\n';
+ src = src.substring(rawLine.length + 1);
+ line = nextLine.slice(indent);
+ }
+ }
+ if (!list.loose) {
+ // If the previous item ended with a blank line, the list is loose
+ if (endsWithBlankLine) {
+ list.loose = true;
+ } else if (/\n *\n *$/.test(raw)) {
+ endsWithBlankLine = true;
+ }
+ }
+
+ // Check for task list items
+ if (this.options.gfm) {
+ istask = /^\[[ xX]\] /.exec(itemContents);
+ if (istask) {
+ ischecked = istask[0] !== '[ ] ';
+ itemContents = itemContents.replace(/^\[[ xX]\] +/, '');
+ }
+ }
+ list.items.push({
+ type: 'list_item',
+ raw: raw,
+ task: !!istask,
+ checked: ischecked,
+ loose: false,
+ text: itemContents
+ });
+ list.raw += raw;
+ }
+
+ // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic
+ list.items[list.items.length - 1].raw = raw.trimRight();
+ list.items[list.items.length - 1].text = itemContents.trimRight();
+ list.raw = list.raw.trimRight();
+ var l = list.items.length;
+
+ // Item child tokens handled here at end because we needed to have the final item to trim it first
+ for (i = 0; i < l; i++) {
+ this.lexer.state.top = false;
+ list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);
+ if (!list.loose) {
+ // Check if list should be loose
+ var spacers = list.items[i].tokens.filter(function (t) {
+ return t.type === 'space';
+ });
+ var hasMultipleLineBreaks = spacers.length > 0 && spacers.some(function (t) {
+ return /\n.*\n/.test(t.raw);
+ });
+ list.loose = hasMultipleLineBreaks;
+ }
+ }
+
+ // Set all items to loose if list is loose
+ if (list.loose) {
+ for (i = 0; i < l; i++) {
+ list.items[i].loose = true;
+ }
+ }
+ return list;
+ }
+ };
+ _proto.html = function html(src) {
+ var cap = this.rules.block.html.exec(src);
+ if (cap) {
+ var token = {
+ type: 'html',
+ raw: cap[0],
+ pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
+ text: cap[0]
+ };
+ if (this.options.sanitize) {
+ var text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);
+ token.type = 'paragraph';
+ token.text = text;
+ token.tokens = this.lexer.inline(text);
+ }
+ return token;
+ }
+ };
+ _proto.def = function def(src) {
+ var cap = this.rules.block.def.exec(src);
+ if (cap) {
+ var tag = cap[1].toLowerCase().replace(/\s+/g, ' ');
+ var href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';
+ var title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];
+ return {
+ type: 'def',
+ tag: tag,
+ raw: cap[0],
+ href: href,
+ title: title
+ };
+ }
+ };
+ _proto.table = function table(src) {
+ var cap = this.rules.block.table.exec(src);
+ if (cap) {
+ var item = {
+ type: 'table',
+ header: splitCells(cap[1]).map(function (c) {
+ return {
+ text: c
+ };
+ }),
+ align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
+ rows: cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, '').split('\n') : []
+ };
+ if (item.header.length === item.align.length) {
+ item.raw = cap[0];
+ var l = item.align.length;
+ var i, j, k, row;
+ for (i = 0; i < l; i++) {
+ if (/^ *-+: *$/.test(item.align[i])) {
+ item.align[i] = 'right';
+ } else if (/^ *:-+: *$/.test(item.align[i])) {
+ item.align[i] = 'center';
+ } else if (/^ *:-+ *$/.test(item.align[i])) {
+ item.align[i] = 'left';
+ } else {
+ item.align[i] = null;
+ }
+ }
+ l = item.rows.length;
+ for (i = 0; i < l; i++) {
+ item.rows[i] = splitCells(item.rows[i], item.header.length).map(function (c) {
+ return {
+ text: c
+ };
+ });
+ }
+
+ // parse child tokens inside headers and cells
+
+ // header child tokens
+ l = item.header.length;
+ for (j = 0; j < l; j++) {
+ item.header[j].tokens = this.lexer.inline(item.header[j].text);
+ }
+
+ // cell child tokens
+ l = item.rows.length;
+ for (j = 0; j < l; j++) {
+ row = item.rows[j];
+ for (k = 0; k < row.length; k++) {
+ row[k].tokens = this.lexer.inline(row[k].text);
+ }
+ }
+ return item;
+ }
+ }
+ };
+ _proto.lheading = function lheading(src) {
+ var cap = this.rules.block.lheading.exec(src);
+ if (cap) {
+ return {
+ type: 'heading',
+ raw: cap[0],
+ depth: cap[2].charAt(0) === '=' ? 1 : 2,
+ text: cap[1],
+ tokens: this.lexer.inline(cap[1])
+ };
+ }
+ };
+ _proto.paragraph = function paragraph(src) {
+ var cap = this.rules.block.paragraph.exec(src);
+ if (cap) {
+ var text = cap[1].charAt(cap[1].length - 1) === '\n' ? cap[1].slice(0, -1) : cap[1];
+ return {
+ type: 'paragraph',
+ raw: cap[0],
+ text: text,
+ tokens: this.lexer.inline(text)
+ };
+ }
+ };
+ _proto.text = function text(src) {
+ var cap = this.rules.block.text.exec(src);
+ if (cap) {
+ return {
+ type: 'text',
+ raw: cap[0],
+ text: cap[0],
+ tokens: this.lexer.inline(cap[0])
+ };
+ }
+ };
+ _proto.escape = function escape$1(src) {
+ var cap = this.rules.inline.escape.exec(src);
+ if (cap) {
+ return {
+ type: 'escape',
+ raw: cap[0],
+ text: escape(cap[1])
+ };
+ }
+ };
+ _proto.tag = function tag(src) {
+ var cap = this.rules.inline.tag.exec(src);
+ if (cap) {
+ if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {
+ this.lexer.state.inLink = true;
+ } else if (this.lexer.state.inLink && /^<\/a>/i.test(cap[0])) {
+ this.lexer.state.inLink = false;
+ }
+ if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
+ this.lexer.state.inRawBlock = true;
+ } else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
+ this.lexer.state.inRawBlock = false;
+ }
+ return {
+ type: this.options.sanitize ? 'text' : 'html',
+ raw: cap[0],
+ inLink: this.lexer.state.inLink,
+ inRawBlock: this.lexer.state.inRawBlock,
+ text: this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]
+ };
+ }
+ };
+ _proto.link = function link(src) {
+ var cap = this.rules.inline.link.exec(src);
+ if (cap) {
+ var trimmedUrl = cap[2].trim();
+ if (!this.options.pedantic && /^</.test(trimmedUrl)) {
+ // commonmark requires matching angle brackets
+ if (!/>$/.test(trimmedUrl)) {
+ return;
+ }
+
+ // ending angle bracket cannot be escaped
+ var rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\');
+ if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {
+ return;
+ }
+ } else {
+ // find closing parenthesis
+ var lastParenIndex = findClosingBracket(cap[2], '()');
+ if (lastParenIndex > -1) {
+ var start = cap[0].indexOf('!') === 0 ? 5 : 4;
+ var linkLen = start + cap[1].length + lastParenIndex;
+ cap[2] = cap[2].substring(0, lastParenIndex);
+ cap[0] = cap[0].substring(0, linkLen).trim();
+ cap[3] = '';
+ }
+ }
+ var href = cap[2];
+ var title = '';
+ if (this.options.pedantic) {
+ // split pedantic href and title
+ var link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href);
+ if (link) {
+ href = link[1];
+ title = link[3];
+ }
+ } else {
+ title = cap[3] ? cap[3].slice(1, -1) : '';
+ }
+ href = href.trim();
+ if (/^</.test(href)) {
+ if (this.options.pedantic && !/>$/.test(trimmedUrl)) {
+ // pedantic allows starting angle bracket without ending angle bracket
+ href = href.slice(1);
+ } else {
+ href = href.slice(1, -1);
+ }
+ }
+ return outputLink(cap, {
+ href: href ? href.replace(this.rules.inline._escapes, '$1') : href,
+ title: title ? title.replace(this.rules.inline._escapes, '$1') : title
+ }, cap[0], this.lexer);
+ }
+ };
+ _proto.reflink = function reflink(src, links) {
+ var cap;
+ if ((cap = this.rules.inline.reflink.exec(src)) || (cap = this.rules.inline.nolink.exec(src))) {
+ var link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
+ link = links[link.toLowerCase()];
+ if (!link) {
+ var text = cap[0].charAt(0);
+ return {
+ type: 'text',
+ raw: text,
+ text: text
+ };
+ }
+ return outputLink(cap, link, cap[0], this.lexer);
+ }
+ };
+ _proto.emStrong = function emStrong(src, maskedSrc, prevChar) {
+ if (prevChar === void 0) {
+ prevChar = '';
+ }
+ var match = this.rules.inline.emStrong.lDelim.exec(src);
+ if (!match) return;
+
+ // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well
+ if (match[3] && prevChar.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/)) return;
+ var nextChar = match[1] || match[2] || '';
+ if (!nextChar || nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar))) {
+ var lLength = match[0].length - 1;
+ var rDelim,
+ rLength,
+ delimTotal = lLength,
+ midDelimTotal = 0;
+ var endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;
+ endReg.lastIndex = 0;
+
+ // Clip maskedSrc to same section of string as src (move to lexer?)
+ maskedSrc = maskedSrc.slice(-1 * src.length + lLength);
+ while ((match = endReg.exec(maskedSrc)) != null) {
+ rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];
+ if (!rDelim) continue; // skip single * in __abc*abc__
+
+ rLength = rDelim.length;
+ if (match[3] || match[4]) {
+ // found another Left Delim
+ delimTotal += rLength;
+ continue;
+ } else if (match[5] || match[6]) {
+ // either Left or Right Delim
+ if (lLength % 3 && !((lLength + rLength) % 3)) {
+ midDelimTotal += rLength;
+ continue; // CommonMark Emphasis Rules 9-10
+ }
+ }
+
+ delimTotal -= rLength;
+ if (delimTotal > 0) continue; // Haven't found enough closing delimiters
+
+ // Remove extra characters. *a*** -> *a*
+ rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);
+ var raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength);
+
+ // Create `em` if smallest delimiter has odd char count. *a***
+ if (Math.min(lLength, rLength) % 2) {
+ var _text = raw.slice(1, -1);
+ return {
+ type: 'em',
+ raw: raw,
+ text: _text,
+ tokens: this.lexer.inlineTokens(_text)
+ };
+ }
+
+ // Create 'strong' if smallest delimiter has even char count. **a***
+ var text = raw.slice(2, -2);
+ return {
+ type: 'strong',
+ raw: raw,
+ text: text,
+ tokens: this.lexer.inlineTokens(text)
+ };
+ }
+ }
+ };
+ _proto.codespan = function codespan(src) {
+ var cap = this.rules.inline.code.exec(src);
+ if (cap) {
+ var text = cap[2].replace(/\n/g, ' ');
+ var hasNonSpaceChars = /[^ ]/.test(text);
+ var hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);
+ if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {
+ text = text.substring(1, text.length - 1);
+ }
+ text = escape(text, true);
+ return {
+ type: 'codespan',
+ raw: cap[0],
+ text: text
+ };
+ }
+ };
+ _proto.br = function br(src) {
+ var cap = this.rules.inline.br.exec(src);
+ if (cap) {
+ return {
+ type: 'br',
+ raw: cap[0]
+ };
+ }
+ };
+ _proto.del = function del(src) {
+ var cap = this.rules.inline.del.exec(src);
+ if (cap) {
+ return {
+ type: 'del',
+ raw: cap[0],
+ text: cap[2],
+ tokens: this.lexer.inlineTokens(cap[2])
+ };
+ }
+ };
+ _proto.autolink = function autolink(src, mangle) {
+ var cap = this.rules.inline.autolink.exec(src);
+ if (cap) {
+ var text, href;
+ if (cap[2] === '@') {
+ text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);
+ href = 'mailto:' + text;
+ } else {
+ text = escape(cap[1]);
+ href = text;
+ }
+ return {
+ type: 'link',
+ raw: cap[0],
+ text: text,
+ href: href,
+ tokens: [{
+ type: 'text',
+ raw: text,
+ text: text
+ }]
+ };
+ }
+ };
+ _proto.url = function url(src, mangle) {
+ var cap;
+ if (cap = this.rules.inline.url.exec(src)) {
+ var text, href;
+ if (cap[2] === '@') {
+ text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);
+ href = 'mailto:' + text;
+ } else {
+ // do extended autolink path validation
+ var prevCapZero;
+ do {
+ prevCapZero = cap[0];
+ cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];
+ } while (prevCapZero !== cap[0]);
+ text = escape(cap[0]);
+ if (cap[1] === 'www.') {
+ href = 'http://' + cap[0];
+ } else {
+ href = cap[0];
+ }
+ }
+ return {
+ type: 'link',
+ raw: cap[0],
+ text: text,
+ href: href,
+ tokens: [{
+ type: 'text',
+ raw: text,
+ text: text
+ }]
+ };
+ }
+ };
+ _proto.inlineText = function inlineText(src, smartypants) {
+ var cap = this.rules.inline.text.exec(src);
+ if (cap) {
+ var text;
+ if (this.lexer.state.inRawBlock) {
+ text = this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0];
+ } else {
+ text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);
+ }
+ return {
+ type: 'text',
+ raw: cap[0],
+ text: text
+ };
+ }
+ };
+ return Tokenizer;
+ }();
+
+ /**
+ * Block-Level Grammar
+ */
+ var block = {
+ newline: /^(?: *(?:\n|$))+/,
+ code: /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,
+ fences: /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,
+ hr: /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,
+ heading: /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,
+ blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,
+ list: /^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,
+ html: '^ {0,3}(?:' // optional indentation
+ + '<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)' // (1)
+ + '|comment[^\\n]*(\\n+|$)' // (2)
+ + '|<\\?[\\s\\S]*?(?:\\?>\\n*|$)' // (3)
+ + '|<![A-Z][\\s\\S]*?(?:>\\n*|$)' // (4)
+ + '|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)' // (5)
+ + '|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (6)
+ + '|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) open tag
+ + '|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) closing tag
+ + ')',
+ def: /^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,
+ table: noopTest,
+ lheading: /^((?:.|\n(?!\n))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,
+ // regex template, placeholders will be replaced according to different paragraph
+ // interruption rules of commonmark and the original markdown spec:
+ _paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,
+ text: /^[^\n]+/
+ };
+ block._label = /(?!\s*\])(?:\\.|[^\[\]\\])+/;
+ block._title = /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;
+ block.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex();
+ block.bullet = /(?:[*+-]|\d{1,9}[.)])/;
+ block.listItemStart = edit(/^( *)(bull) */).replace('bull', block.bullet).getRegex();
+ block.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))').replace('def', '\\n+(?=' + block.def.source + ')').getRegex();
+ block._tag = 'address|article|aside|base|basefont|blockquote|body|caption' + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption' + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe' + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option' + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr' + '|track|ul';
+ block._comment = /<!--(?!-?>)[\s\S]*?(?:-->|$)/;
+ block.html = edit(block.html, 'i').replace('comment', block._comment).replace('tag', block._tag).replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex();
+ block.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs
+ .replace('|table', '').replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt
+ .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks
+ .getRegex();
+ block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex();
+
+ /**
+ * Normal Block Grammar
+ */
+
+ block.normal = _extends({}, block);
+
+ /**
+ * GFM Block Grammar
+ */
+
+ block.gfm = _extends({}, block.normal, {
+ table: '^ *([^\\n ].*\\|.*)\\n' // Header
+ + ' {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?' // Align
+ + '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)' // Cells
+ });
+
+ block.gfm.table = edit(block.gfm.table).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('blockquote', ' {0,3}>').replace('code', ' {4}[^\\n]').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt
+ .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // tables can be interrupted by type (6) html blocks
+ .getRegex();
+ block.gfm.paragraph = edit(block._paragraph).replace('hr', block.hr).replace('heading', ' {0,3}#{1,6} ').replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs
+ .replace('table', block.gfm.table) // interrupt paragraphs with table
+ .replace('blockquote', ' {0,3}>').replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n').replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt
+ .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)').replace('tag', block._tag) // pars can be interrupted by type (6) html blocks
+ .getRegex();
+ /**
+ * Pedantic grammar (original John Gruber's loose markdown specification)
+ */
+
+ block.pedantic = _extends({}, block.normal, {
+ html: edit('^ *(?:comment *(?:\\n|\\s*$)' + '|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)' // closed tag
+ + '|<tag(?:"[^"]*"|\'[^\']*\'|\\s[^\'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))').replace('comment', block._comment).replace(/tag/g, '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub' + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)' + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b').getRegex(),
+ def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,
+ heading: /^(#{1,6})(.*)(?:\n+|$)/,
+ fences: noopTest,
+ // fences not supported
+ lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,
+ paragraph: edit(block.normal._paragraph).replace('hr', block.hr).replace('heading', ' *#{1,6} *[^\n]').replace('lheading', block.lheading).replace('blockquote', ' {0,3}>').replace('|fences', '').replace('|list', '').replace('|html', '').getRegex()
+ });
+
+ /**
+ * Inline-Level Grammar
+ */
+ var inline = {
+ escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,
+ autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/,
+ url: noopTest,
+ tag: '^comment' + '|^</[a-zA-Z][\\w:-]*\\s*>' // self-closing tag
+ + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag
+ + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. <?php ?>
+ + '|^<![a-zA-Z]+\\s[\\s\\S]*?>' // declaration, e.g. <!DOCTYPE html>
+ + '|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>',
+ // CDATA section
+ link: /^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,
+ reflink: /^!?\[(label)\]\[(ref)\]/,
+ nolink: /^!?\[(ref)\](?:\[\])?/,
+ reflinkSearch: 'reflink|nolink(?!\\()',
+ emStrong: {
+ lDelim: /^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,
+ // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.
+ // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a
+ rDelimAst: /^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,
+ rDelimUnd: /^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/ // ^- Not allowed for _
+ },
+
+ code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,
+ br: /^( {2,}|\\)\n(?!\s*$)/,
+ del: noopTest,
+ text: /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,
+ punctuation: /^([\spunctuation])/
+ };
+
+ // list of punctuation marks from CommonMark spec
+ // without * and _ to handle the different emphasis markers * and _
+ inline._punctuation = '!"#$%&\'()+\\-.,/:;<=>?@\\[\\]`^{|}~';
+ inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();
+
+ // sequences em should skip over [title](link), `code`, <html>
+ inline.blockSkip = /\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g;
+ // lookbehind is not available on Safari as of version 16
+ // inline.escapedEmSt = /(?<=(?:^|[^\\)(?:\\[^])*)\\[*_]/g;
+ inline.escapedEmSt = /(?:^|[^\\])(?:\\\\)*\\[*_]/g;
+ inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();
+ inline.emStrong.lDelim = edit(inline.emStrong.lDelim).replace(/punct/g, inline._punctuation).getRegex();
+ inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g').replace(/punct/g, inline._punctuation).getRegex();
+ inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g').replace(/punct/g, inline._punctuation).getRegex();
+ inline._escapes = /\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;
+ inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
+ inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;
+ inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex();
+ inline._attribute = /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;
+ inline.tag = edit(inline.tag).replace('comment', inline._comment).replace('attribute', inline._attribute).getRegex();
+ inline._label = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/;
+ inline._href = /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/;
+ inline._title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;
+ inline.link = edit(inline.link).replace('label', inline._label).replace('href', inline._href).replace('title', inline._title).getRegex();
+ inline.reflink = edit(inline.reflink).replace('label', inline._label).replace('ref', block._label).getRegex();
+ inline.nolink = edit(inline.nolink).replace('ref', block._label).getRegex();
+ inline.reflinkSearch = edit(inline.reflinkSearch, 'g').replace('reflink', inline.reflink).replace('nolink', inline.nolink).getRegex();
+
+ /**
+ * Normal Inline Grammar
+ */
+
+ inline.normal = _extends({}, inline);
+
+ /**
+ * Pedantic Inline Grammar
+ */
+
+ inline.pedantic = _extends({}, inline.normal, {
+ strong: {
+ start: /^__|\*\*/,
+ middle: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
+ endAst: /\*\*(?!\*)/g,
+ endUnd: /__(?!_)/g
+ },
+ em: {
+ start: /^_|\*/,
+ middle: /^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,
+ endAst: /\*(?!\*)/g,
+ endUnd: /_(?!_)/g
+ },
+ link: edit(/^!?\[(label)\]\((.*?)\)/).replace('label', inline._label).getRegex(),
+ reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace('label', inline._label).getRegex()
+ });
+
+ /**
+ * GFM Inline Grammar
+ */
+
+ inline.gfm = _extends({}, inline.normal, {
+ escape: edit(inline.escape).replace('])', '~|])').getRegex(),
+ _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,
+ url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,
+ _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,
+ del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,
+ text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/
+ });
+ inline.gfm.url = edit(inline.gfm.url, 'i').replace('email', inline.gfm._extended_email).getRegex();
+ /**
+ * GFM + Line Breaks Inline Grammar
+ */
+
+ inline.breaks = _extends({}, inline.gfm, {
+ br: edit(inline.br).replace('{2,}', '*').getRegex(),
+ text: edit(inline.gfm.text).replace('\\b_', '\\b_| {2,}\\n').replace(/\{2,\}/g, '*').getRegex()
+ });
+
+ /**
+ * smartypants text replacement
+ * @param {string} text
+ */
+ function smartypants(text) {
+ return text
+ // em-dashes
+ .replace(/---/g, "\u2014")
+ // en-dashes
+ .replace(/--/g, "\u2013")
+ // opening singles
+ .replace(/(^|[-\u2014/(\[{"\s])'/g, "$1\u2018")
+ // closing singles & apostrophes
+ .replace(/'/g, "\u2019")
+ // opening doubles
+ .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, "$1\u201C")
+ // closing doubles
+ .replace(/"/g, "\u201D")
+ // ellipses
+ .replace(/\.{3}/g, "\u2026");
+ }
+
+ /**
+ * mangle email addresses
+ * @param {string} text
+ */
+ function mangle(text) {
+ var out = '',
+ i,
+ ch;
+ var l = text.length;
+ for (i = 0; i < l; i++) {
+ ch = text.charCodeAt(i);
+ if (Math.random() > 0.5) {
+ ch = 'x' + ch.toString(16);
+ }
+ out += '&#' + ch + ';';
+ }
+ return out;
+ }
+
+ /**
+ * Block Lexer
+ */
+ var Lexer = /*#__PURE__*/function () {
+ function Lexer(options) {
+ this.tokens = [];
+ this.tokens.links = Object.create(null);
+ this.options = options || exports.defaults;
+ this.options.tokenizer = this.options.tokenizer || new Tokenizer();
+ this.tokenizer = this.options.tokenizer;
+ this.tokenizer.options = this.options;
+ this.tokenizer.lexer = this;
+ this.inlineQueue = [];
+ this.state = {
+ inLink: false,
+ inRawBlock: false,
+ top: true
+ };
+ var rules = {
+ block: block.normal,
+ inline: inline.normal
+ };
+ if (this.options.pedantic) {
+ rules.block = block.pedantic;
+ rules.inline = inline.pedantic;
+ } else if (this.options.gfm) {
+ rules.block = block.gfm;
+ if (this.options.breaks) {
+ rules.inline = inline.breaks;
+ } else {
+ rules.inline = inline.gfm;
+ }
+ }
+ this.tokenizer.rules = rules;
+ }
+
+ /**
+ * Expose Rules
+ */
+ /**
+ * Static Lex Method
+ */
+ Lexer.lex = function lex(src, options) {
+ var lexer = new Lexer(options);
+ return lexer.lex(src);
+ }
+
+ /**
+ * Static Lex Inline Method
+ */;
+ Lexer.lexInline = function lexInline(src, options) {
+ var lexer = new Lexer(options);
+ return lexer.inlineTokens(src);
+ }
+
+ /**
+ * Preprocessing
+ */;
+ var _proto = Lexer.prototype;
+ _proto.lex = function lex(src) {
+ src = src.replace(/\r\n|\r/g, '\n');
+ this.blockTokens(src, this.tokens);
+ var next;
+ while (next = this.inlineQueue.shift()) {
+ this.inlineTokens(next.src, next.tokens);
+ }
+ return this.tokens;
+ }
+
+ /**
+ * Lexing
+ */;
+ _proto.blockTokens = function blockTokens(src, tokens) {
+ var _this = this;
+ if (tokens === void 0) {
+ tokens = [];
+ }
+ if (this.options.pedantic) {
+ src = src.replace(/\t/g, ' ').replace(/^ +$/gm, '');
+ } else {
+ src = src.replace(/^( *)(\t+)/gm, function (_, leading, tabs) {
+ return leading + ' '.repeat(tabs.length);
+ });
+ }
+ var token, lastToken, cutSrc, lastParagraphClipped;
+ while (src) {
+ if (this.options.extensions && this.options.extensions.block && this.options.extensions.block.some(function (extTokenizer) {
+ if (token = extTokenizer.call({
+ lexer: _this
+ }, src, tokens)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ return true;
+ }
+ return false;
+ })) {
+ continue;
+ }
+
+ // newline
+ if (token = this.tokenizer.space(src)) {
+ src = src.substring(token.raw.length);
+ if (token.raw.length === 1 && tokens.length > 0) {
+ // if there's a single \n as a spacer, it's terminating the last line,
+ // so move it there so that we don't get unecessary paragraph tags
+ tokens[tokens.length - 1].raw += '\n';
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ // code
+ if (token = this.tokenizer.code(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ // An indented code block cannot interrupt a paragraph.
+ if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
+ lastToken.raw += '\n' + token.raw;
+ lastToken.text += '\n' + token.text;
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ // fences
+ if (token = this.tokenizer.fences(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // heading
+ if (token = this.tokenizer.heading(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // hr
+ if (token = this.tokenizer.hr(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // blockquote
+ if (token = this.tokenizer.blockquote(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // list
+ if (token = this.tokenizer.list(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // html
+ if (token = this.tokenizer.html(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // def
+ if (token = this.tokenizer.def(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
+ lastToken.raw += '\n' + token.raw;
+ lastToken.text += '\n' + token.raw;
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
+ } else if (!this.tokens.links[token.tag]) {
+ this.tokens.links[token.tag] = {
+ href: token.href,
+ title: token.title
+ };
+ }
+ continue;
+ }
+
+ // table (gfm)
+ if (token = this.tokenizer.table(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // lheading
+ if (token = this.tokenizer.lheading(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // top-level paragraph
+ // prevent paragraph consuming extensions by clipping 'src' to extension start
+ cutSrc = src;
+ if (this.options.extensions && this.options.extensions.startBlock) {
+ (function () {
+ var startIndex = Infinity;
+ var tempSrc = src.slice(1);
+ var tempStart = void 0;
+ _this.options.extensions.startBlock.forEach(function (getStartIndex) {
+ tempStart = getStartIndex.call({
+ lexer: this
+ }, tempSrc);
+ if (typeof tempStart === 'number' && tempStart >= 0) {
+ startIndex = Math.min(startIndex, tempStart);
+ }
+ });
+ if (startIndex < Infinity && startIndex >= 0) {
+ cutSrc = src.substring(0, startIndex + 1);
+ }
+ })();
+ }
+ if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {
+ lastToken = tokens[tokens.length - 1];
+ if (lastParagraphClipped && lastToken.type === 'paragraph') {
+ lastToken.raw += '\n' + token.raw;
+ lastToken.text += '\n' + token.text;
+ this.inlineQueue.pop();
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
+ } else {
+ tokens.push(token);
+ }
+ lastParagraphClipped = cutSrc.length !== src.length;
+ src = src.substring(token.raw.length);
+ continue;
+ }
+
+ // text
+ if (token = this.tokenizer.text(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && lastToken.type === 'text') {
+ lastToken.raw += '\n' + token.raw;
+ lastToken.text += '\n' + token.text;
+ this.inlineQueue.pop();
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+ if (src) {
+ var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
+ if (this.options.silent) {
+ console.error(errMsg);
+ break;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+ this.state.top = true;
+ return tokens;
+ };
+ _proto.inline = function inline(src, tokens) {
+ if (tokens === void 0) {
+ tokens = [];
+ }
+ this.inlineQueue.push({
+ src: src,
+ tokens: tokens
+ });
+ return tokens;
+ }
+
+ /**
+ * Lexing/Compiling
+ */;
+ _proto.inlineTokens = function inlineTokens(src, tokens) {
+ var _this2 = this;
+ if (tokens === void 0) {
+ tokens = [];
+ }
+ var token, lastToken, cutSrc;
+
+ // String with links masked to avoid interference with em and strong
+ var maskedSrc = src;
+ var match;
+ var keepPrevChar, prevChar;
+
+ // Mask out reflinks
+ if (this.tokens.links) {
+ var links = Object.keys(this.tokens.links);
+ if (links.length > 0) {
+ while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {
+ if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {
+ maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);
+ }
+ }
+ }
+ }
+ // Mask out other blocks
+ while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {
+ maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
+ }
+
+ // Mask out escaped em & strong delimiters
+ while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {
+ maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);
+ this.tokenizer.rules.inline.escapedEmSt.lastIndex--;
+ }
+ while (src) {
+ if (!keepPrevChar) {
+ prevChar = '';
+ }
+ keepPrevChar = false;
+
+ // extensions
+ if (this.options.extensions && this.options.extensions.inline && this.options.extensions.inline.some(function (extTokenizer) {
+ if (token = extTokenizer.call({
+ lexer: _this2
+ }, src, tokens)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ return true;
+ }
+ return false;
+ })) {
+ continue;
+ }
+
+ // escape
+ if (token = this.tokenizer.escape(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // tag
+ if (token = this.tokenizer.tag(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && token.type === 'text' && lastToken.type === 'text') {
+ lastToken.raw += token.raw;
+ lastToken.text += token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ // link
+ if (token = this.tokenizer.link(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // reflink, nolink
+ if (token = this.tokenizer.reflink(src, this.tokens.links)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && token.type === 'text' && lastToken.type === 'text') {
+ lastToken.raw += token.raw;
+ lastToken.text += token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ // em & strong
+ if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // code
+ if (token = this.tokenizer.codespan(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // br
+ if (token = this.tokenizer.br(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // del (gfm)
+ if (token = this.tokenizer.del(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // autolink
+ if (token = this.tokenizer.autolink(src, mangle)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // url (gfm)
+ if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // text
+ // prevent inlineText consuming extensions by clipping 'src' to extension start
+ cutSrc = src;
+ if (this.options.extensions && this.options.extensions.startInline) {
+ (function () {
+ var startIndex = Infinity;
+ var tempSrc = src.slice(1);
+ var tempStart = void 0;
+ _this2.options.extensions.startInline.forEach(function (getStartIndex) {
+ tempStart = getStartIndex.call({
+ lexer: this
+ }, tempSrc);
+ if (typeof tempStart === 'number' && tempStart >= 0) {
+ startIndex = Math.min(startIndex, tempStart);
+ }
+ });
+ if (startIndex < Infinity && startIndex >= 0) {
+ cutSrc = src.substring(0, startIndex + 1);
+ }
+ })();
+ }
+ if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {
+ src = src.substring(token.raw.length);
+ if (token.raw.slice(-1) !== '_') {
+ // Track prevChar before string of ____ started
+ prevChar = token.raw.slice(-1);
+ }
+ keepPrevChar = true;
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && lastToken.type === 'text') {
+ lastToken.raw += token.raw;
+ lastToken.text += token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+ if (src) {
+ var errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
+ if (this.options.silent) {
+ console.error(errMsg);
+ break;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+ return tokens;
+ };
+ _createClass(Lexer, null, [{
+ key: "rules",
+ get: function get() {
+ return {
+ block: block,
+ inline: inline
+ };
+ }
+ }]);
+ return Lexer;
+ }();
+
+ /**
+ * Renderer
+ */
+ var Renderer = /*#__PURE__*/function () {
+ function Renderer(options) {
+ this.options = options || exports.defaults;
+ }
+ var _proto = Renderer.prototype;
+ _proto.code = function code(_code, infostring, escaped) {
+ var lang = (infostring || '').match(/\S*/)[0];
+ if (this.options.highlight) {
+ var out = this.options.highlight(_code, lang);
+ if (out != null && out !== _code) {
+ escaped = true;
+ _code = out;
+ }
+ }
+ _code = _code.replace(/\n$/, '') + '\n';
+ if (!lang) {
+ return '<pre><code>' + (escaped ? _code : escape(_code, true)) + '</code></pre>\n';
+ }
+ return '<pre><code class="' + this.options.langPrefix + escape(lang) + '">' + (escaped ? _code : escape(_code, true)) + '</code></pre>\n';
+ }
+
+ /**
+ * @param {string} quote
+ */;
+ _proto.blockquote = function blockquote(quote) {
+ return "<blockquote>\n" + quote + "</blockquote>\n";
+ };
+ _proto.html = function html(_html) {
+ return _html;
+ }
+
+ /**
+ * @param {string} text
+ * @param {string} level
+ * @param {string} raw
+ * @param {any} slugger
+ */;
+ _proto.heading = function heading(text, level, raw, slugger) {
+ if (this.options.headerIds) {
+ var id = this.options.headerPrefix + slugger.slug(raw);
+ return "<h" + level + " id=\"" + id + "\">" + text + "</h" + level + ">\n";
+ }
+
+ // ignore IDs
+ return "<h" + level + ">" + text + "</h" + level + ">\n";
+ };
+ _proto.hr = function hr() {
+ return this.options.xhtml ? '<hr/>\n' : '<hr>\n';
+ };
+ _proto.list = function list(body, ordered, start) {
+ var type = ordered ? 'ol' : 'ul',
+ startatt = ordered && start !== 1 ? ' start="' + start + '"' : '';
+ return '<' + type + startatt + '>\n' + body + '</' + type + '>\n';
+ }
+
+ /**
+ * @param {string} text
+ */;
+ _proto.listitem = function listitem(text) {
+ return "<li>" + text + "</li>\n";
+ };
+ _proto.checkbox = function checkbox(checked) {
+ return '<input ' + (checked ? 'checked="" ' : '') + 'disabled="" type="checkbox"' + (this.options.xhtml ? ' /' : '') + '> ';
+ }
+
+ /**
+ * @param {string} text
+ */;
+ _proto.paragraph = function paragraph(text) {
+ return "<p>" + text + "</p>\n";
+ }
+
+ /**
+ * @param {string} header
+ * @param {string} body
+ */;
+ _proto.table = function table(header, body) {
+ if (body) body = "<tbody>" + body + "</tbody>";
+ return '<table>\n' + '<thead>\n' + header + '</thead>\n' + body + '</table>\n';
+ }
+
+ /**
+ * @param {string} content
+ */;
+ _proto.tablerow = function tablerow(content) {
+ return "<tr>\n" + content + "</tr>\n";
+ };
+ _proto.tablecell = function tablecell(content, flags) {
+ var type = flags.header ? 'th' : 'td';
+ var tag = flags.align ? "<" + type + " align=\"" + flags.align + "\">" : "<" + type + ">";
+ return tag + content + ("</" + type + ">\n");
+ }
+
+ /**
+ * span level renderer
+ * @param {string} text
+ */;
+ _proto.strong = function strong(text) {
+ return "<strong>" + text + "</strong>";
+ }
+
+ /**
+ * @param {string} text
+ */;
+ _proto.em = function em(text) {
+ return "<em>" + text + "</em>";
+ }
+
+ /**
+ * @param {string} text
+ */;
+ _proto.codespan = function codespan(text) {
+ return "<code>" + text + "</code>";
+ };
+ _proto.br = function br() {
+ return this.options.xhtml ? '<br/>' : '<br>';
+ }
+
+ /**
+ * @param {string} text
+ */;
+ _proto.del = function del(text) {
+ return "<del>" + text + "</del>";
+ }
+
+ /**
+ * @param {string} href
+ * @param {string} title
+ * @param {string} text
+ */;
+ _proto.link = function link(href, title, text) {
+ href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
+ if (href === null) {
+ return text;
+ }
+ var out = '<a href="' + href + '"';
+ if (title) {
+ out += ' title="' + title + '"';
+ }
+ out += '>' + text + '</a>';
+ return out;
+ }
+
+ /**
+ * @param {string} href
+ * @param {string} title
+ * @param {string} text
+ */;
+ _proto.image = function image(href, title, text) {
+ href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
+ if (href === null) {
+ return text;
+ }
+ var out = "<img src=\"" + href + "\" alt=\"" + text + "\"";
+ if (title) {
+ out += " title=\"" + title + "\"";
+ }
+ out += this.options.xhtml ? '/>' : '>';
+ return out;
+ };
+ _proto.text = function text(_text) {
+ return _text;
+ };
+ return Renderer;
+ }();
+
+ /**
+ * TextRenderer
+ * returns only the textual part of the token
+ */
+ var TextRenderer = /*#__PURE__*/function () {
+ function TextRenderer() {}
+ var _proto = TextRenderer.prototype;
+ // no need for block level renderers
+ _proto.strong = function strong(text) {
+ return text;
+ };
+ _proto.em = function em(text) {
+ return text;
+ };
+ _proto.codespan = function codespan(text) {
+ return text;
+ };
+ _proto.del = function del(text) {
+ return text;
+ };
+ _proto.html = function html(text) {
+ return text;
+ };
+ _proto.text = function text(_text) {
+ return _text;
+ };
+ _proto.link = function link(href, title, text) {
+ return '' + text;
+ };
+ _proto.image = function image(href, title, text) {
+ return '' + text;
+ };
+ _proto.br = function br() {
+ return '';
+ };
+ return TextRenderer;
+ }();
+
+ /**
+ * Slugger generates header id
+ */
+ var Slugger = /*#__PURE__*/function () {
+ function Slugger() {
+ this.seen = {};
+ }
+
+ /**
+ * @param {string} value
+ */
+ var _proto = Slugger.prototype;
+ _proto.serialize = function serialize(value) {
+ return value.toLowerCase().trim()
+ // remove html tags
+ .replace(/<[!\/a-z].*?>/ig, '')
+ // remove unwanted chars
+ .replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g, '').replace(/\s/g, '-');
+ }
+
+ /**
+ * Finds the next safe (unique) slug to use
+ * @param {string} originalSlug
+ * @param {boolean} isDryRun
+ */;
+ _proto.getNextSafeSlug = function getNextSafeSlug(originalSlug, isDryRun) {
+ var slug = originalSlug;
+ var occurenceAccumulator = 0;
+ if (this.seen.hasOwnProperty(slug)) {
+ occurenceAccumulator = this.seen[originalSlug];
+ do {
+ occurenceAccumulator++;
+ slug = originalSlug + '-' + occurenceAccumulator;
+ } while (this.seen.hasOwnProperty(slug));
+ }
+ if (!isDryRun) {
+ this.seen[originalSlug] = occurenceAccumulator;
+ this.seen[slug] = 0;
+ }
+ return slug;
+ }
+
+ /**
+ * Convert string to unique id
+ * @param {object} [options]
+ * @param {boolean} [options.dryrun] Generates the next unique slug without
+ * updating the internal accumulator.
+ */;
+ _proto.slug = function slug(value, options) {
+ if (options === void 0) {
+ options = {};
+ }
+ var slug = this.serialize(value);
+ return this.getNextSafeSlug(slug, options.dryrun);
+ };
+ return Slugger;
+ }();
+
+ /**
+ * Parsing & Compiling
+ */
+ var Parser = /*#__PURE__*/function () {
+ function Parser(options) {
+ this.options = options || exports.defaults;
+ this.options.renderer = this.options.renderer || new Renderer();
+ this.renderer = this.options.renderer;
+ this.renderer.options = this.options;
+ this.textRenderer = new TextRenderer();
+ this.slugger = new Slugger();
+ }
+
+ /**
+ * Static Parse Method
+ */
+ Parser.parse = function parse(tokens, options) {
+ var parser = new Parser(options);
+ return parser.parse(tokens);
+ }
+
+ /**
+ * Static Parse Inline Method
+ */;
+ Parser.parseInline = function parseInline(tokens, options) {
+ var parser = new Parser(options);
+ return parser.parseInline(tokens);
+ }
+
+ /**
+ * Parse Loop
+ */;
+ var _proto = Parser.prototype;
+ _proto.parse = function parse(tokens, top) {
+ if (top === void 0) {
+ top = true;
+ }
+ var out = '',
+ i,
+ j,
+ k,
+ l2,
+ l3,
+ row,
+ cell,
+ header,
+ body,
+ token,
+ ordered,
+ start,
+ loose,
+ itemBody,
+ item,
+ checked,
+ task,
+ checkbox,
+ ret;
+ var l = tokens.length;
+ for (i = 0; i < l; i++) {
+ token = tokens[i];
+
+ // Run any renderer extensions
+ if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
+ ret = this.options.extensions.renderers[token.type].call({
+ parser: this
+ }, token);
+ if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {
+ out += ret || '';
+ continue;
+ }
+ }
+ switch (token.type) {
+ case 'space':
+ {
+ continue;
+ }
+ case 'hr':
+ {
+ out += this.renderer.hr();
+ continue;
+ }
+ case 'heading':
+ {
+ out += this.renderer.heading(this.parseInline(token.tokens), token.depth, unescape(this.parseInline(token.tokens, this.textRenderer)), this.slugger);
+ continue;
+ }
+ case 'code':
+ {
+ out += this.renderer.code(token.text, token.lang, token.escaped);
+ continue;
+ }
+ case 'table':
+ {
+ header = '';
+
+ // header
+ cell = '';
+ l2 = token.header.length;
+ for (j = 0; j < l2; j++) {
+ cell += this.renderer.tablecell(this.parseInline(token.header[j].tokens), {
+ header: true,
+ align: token.align[j]
+ });
+ }
+ header += this.renderer.tablerow(cell);
+ body = '';
+ l2 = token.rows.length;
+ for (j = 0; j < l2; j++) {
+ row = token.rows[j];
+ cell = '';
+ l3 = row.length;
+ for (k = 0; k < l3; k++) {
+ cell += this.renderer.tablecell(this.parseInline(row[k].tokens), {
+ header: false,
+ align: token.align[k]
+ });
+ }
+ body += this.renderer.tablerow(cell);
+ }
+ out += this.renderer.table(header, body);
+ continue;
+ }
+ case 'blockquote':
+ {
+ body = this.parse(token.tokens);
+ out += this.renderer.blockquote(body);
+ continue;
+ }
+ case 'list':
+ {
+ ordered = token.ordered;
+ start = token.start;
+ loose = token.loose;
+ l2 = token.items.length;
+ body = '';
+ for (j = 0; j < l2; j++) {
+ item = token.items[j];
+ checked = item.checked;
+ task = item.task;
+ itemBody = '';
+ if (item.task) {
+ checkbox = this.renderer.checkbox(checked);
+ if (loose) {
+ if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {
+ item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;
+ if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {
+ item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;
+ }
+ } else {
+ item.tokens.unshift({
+ type: 'text',
+ text: checkbox
+ });
+ }
+ } else {
+ itemBody += checkbox;
+ }
+ }
+ itemBody += this.parse(item.tokens, loose);
+ body += this.renderer.listitem(itemBody, task, checked);
+ }
+ out += this.renderer.list(body, ordered, start);
+ continue;
+ }
+ case 'html':
+ {
+ // TODO parse inline content if parameter markdown=1
+ out += this.renderer.html(token.text);
+ continue;
+ }
+ case 'paragraph':
+ {
+ out += this.renderer.paragraph(this.parseInline(token.tokens));
+ continue;
+ }
+ case 'text':
+ {
+ body = token.tokens ? this.parseInline(token.tokens) : token.text;
+ while (i + 1 < l && tokens[i + 1].type === 'text') {
+ token = tokens[++i];
+ body += '\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);
+ }
+ out += top ? this.renderer.paragraph(body) : body;
+ continue;
+ }
+ default:
+ {
+ var errMsg = 'Token with "' + token.type + '" type was not found.';
+ if (this.options.silent) {
+ console.error(errMsg);
+ return;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+ }
+ return out;
+ }
+
+ /**
+ * Parse Inline Tokens
+ */;
+ _proto.parseInline = function parseInline(tokens, renderer) {
+ renderer = renderer || this.renderer;
+ var out = '',
+ i,
+ token,
+ ret;
+ var l = tokens.length;
+ for (i = 0; i < l; i++) {
+ token = tokens[i];
+
+ // Run any renderer extensions
+ if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
+ ret = this.options.extensions.renderers[token.type].call({
+ parser: this
+ }, token);
+ if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {
+ out += ret || '';
+ continue;
+ }
+ }
+ switch (token.type) {
+ case 'escape':
+ {
+ out += renderer.text(token.text);
+ break;
+ }
+ case 'html':
+ {
+ out += renderer.html(token.text);
+ break;
+ }
+ case 'link':
+ {
+ out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case 'image':
+ {
+ out += renderer.image(token.href, token.title, token.text);
+ break;
+ }
+ case 'strong':
+ {
+ out += renderer.strong(this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case 'em':
+ {
+ out += renderer.em(this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case 'codespan':
+ {
+ out += renderer.codespan(token.text);
+ break;
+ }
+ case 'br':
+ {
+ out += renderer.br();
+ break;
+ }
+ case 'del':
+ {
+ out += renderer.del(this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case 'text':
+ {
+ out += renderer.text(token.text);
+ break;
+ }
+ default:
+ {
+ var errMsg = 'Token with "' + token.type + '" type was not found.';
+ if (this.options.silent) {
+ console.error(errMsg);
+ return;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+ }
+ return out;
+ };
+ return Parser;
+ }();
+
+ var Hooks = /*#__PURE__*/function () {
+ function Hooks(options) {
+ this.options = options || exports.defaults;
+ }
+ var _proto = Hooks.prototype;
+ /**
+ * Process markdown before marked
+ */
+ _proto.preprocess = function preprocess(markdown) {
+ return markdown;
+ }
+
+ /**
+ * Process HTML after marked is finished
+ */;
+ _proto.postprocess = function postprocess(html) {
+ return html;
+ };
+ return Hooks;
+ }();
+ Hooks.passThroughHooks = new Set(['preprocess', 'postprocess']);
+
+ function onError(silent, async, callback) {
+ return function (e) {
+ e.message += '\nPlease report this to https://github.com/markedjs/marked.';
+ if (silent) {
+ var msg = '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>';
+ if (async) {
+ return Promise.resolve(msg);
+ }
+ if (callback) {
+ callback(null, msg);
+ return;
+ }
+ return msg;
+ }
+ if (async) {
+ return Promise.reject(e);
+ }
+ if (callback) {
+ callback(e);
+ return;
+ }
+ throw e;
+ };
+ }
+ function parseMarkdown(lexer, parser) {
+ return function (src, opt, callback) {
+ if (typeof opt === 'function') {
+ callback = opt;
+ opt = null;
+ }
+ var origOpt = _extends({}, opt);
+ opt = _extends({}, marked.defaults, origOpt);
+ var throwError = onError(opt.silent, opt.async, callback);
+
+ // throw error in case of non string input
+ if (typeof src === 'undefined' || src === null) {
+ return throwError(new Error('marked(): input parameter is undefined or null'));
+ }
+ if (typeof src !== 'string') {
+ return throwError(new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected'));
+ }
+ checkSanitizeDeprecation(opt);
+ if (opt.hooks) {
+ opt.hooks.options = opt;
+ }
+ if (callback) {
+ var highlight = opt.highlight;
+ var tokens;
+ try {
+ if (opt.hooks) {
+ src = opt.hooks.preprocess(src);
+ }
+ tokens = lexer(src, opt);
+ } catch (e) {
+ return throwError(e);
+ }
+ var done = function done(err) {
+ var out;
+ if (!err) {
+ try {
+ if (opt.walkTokens) {
+ marked.walkTokens(tokens, opt.walkTokens);
+ }
+ out = parser(tokens, opt);
+ if (opt.hooks) {
+ out = opt.hooks.postprocess(out);
+ }
+ } catch (e) {
+ err = e;
+ }
+ }
+ opt.highlight = highlight;
+ return err ? throwError(err) : callback(null, out);
+ };
+ if (!highlight || highlight.length < 3) {
+ return done();
+ }
+ delete opt.highlight;
+ if (!tokens.length) return done();
+ var pending = 0;
+ marked.walkTokens(tokens, function (token) {
+ if (token.type === 'code') {
+ pending++;
+ setTimeout(function () {
+ highlight(token.text, token.lang, function (err, code) {
+ if (err) {
+ return done(err);
+ }
+ if (code != null && code !== token.text) {
+ token.text = code;
+ token.escaped = true;
+ }
+ pending--;
+ if (pending === 0) {
+ done();
+ }
+ });
+ }, 0);
+ }
+ });
+ if (pending === 0) {
+ done();
+ }
+ return;
+ }
+ if (opt.async) {
+ return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src).then(function (src) {
+ return lexer(src, opt);
+ }).then(function (tokens) {
+ return opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(function () {
+ return tokens;
+ }) : tokens;
+ }).then(function (tokens) {
+ return parser(tokens, opt);
+ }).then(function (html) {
+ return opt.hooks ? opt.hooks.postprocess(html) : html;
+ })["catch"](throwError);
+ }
+ try {
+ if (opt.hooks) {
+ src = opt.hooks.preprocess(src);
+ }
+ var _tokens = lexer(src, opt);
+ if (opt.walkTokens) {
+ marked.walkTokens(_tokens, opt.walkTokens);
+ }
+ var html = parser(_tokens, opt);
+ if (opt.hooks) {
+ html = opt.hooks.postprocess(html);
+ }
+ return html;
+ } catch (e) {
+ return throwError(e);
+ }
+ };
+ }
+
+ /**
+ * Marked
+ */
+ function marked(src, opt, callback) {
+ return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);
+ }
+
+ /**
+ * Options
+ */
+
+ marked.options = marked.setOptions = function (opt) {
+ marked.defaults = _extends({}, marked.defaults, opt);
+ changeDefaults(marked.defaults);
+ return marked;
+ };
+ marked.getDefaults = getDefaults;
+ marked.defaults = exports.defaults;
+
+ /**
+ * Use Extension
+ */
+
+ marked.use = function () {
+ var extensions = marked.defaults.extensions || {
+ renderers: {},
+ childTokens: {}
+ };
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+ args.forEach(function (pack) {
+ // copy options to new object
+ var opts = _extends({}, pack);
+
+ // set async to true if it was set to true before
+ opts.async = marked.defaults.async || opts.async || false;
+
+ // ==-- Parse "addon" extensions --== //
+ if (pack.extensions) {
+ pack.extensions.forEach(function (ext) {
+ if (!ext.name) {
+ throw new Error('extension name required');
+ }
+ if (ext.renderer) {
+ // Renderer extensions
+ var prevRenderer = extensions.renderers[ext.name];
+ if (prevRenderer) {
+ // Replace extension with func to run new extension but fall back if false
+ extensions.renderers[ext.name] = function () {
+ for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+ args[_key2] = arguments[_key2];
+ }
+ var ret = ext.renderer.apply(this, args);
+ if (ret === false) {
+ ret = prevRenderer.apply(this, args);
+ }
+ return ret;
+ };
+ } else {
+ extensions.renderers[ext.name] = ext.renderer;
+ }
+ }
+ if (ext.tokenizer) {
+ // Tokenizer Extensions
+ if (!ext.level || ext.level !== 'block' && ext.level !== 'inline') {
+ throw new Error("extension level must be 'block' or 'inline'");
+ }
+ if (extensions[ext.level]) {
+ extensions[ext.level].unshift(ext.tokenizer);
+ } else {
+ extensions[ext.level] = [ext.tokenizer];
+ }
+ if (ext.start) {
+ // Function to check for start of token
+ if (ext.level === 'block') {
+ if (extensions.startBlock) {
+ extensions.startBlock.push(ext.start);
+ } else {
+ extensions.startBlock = [ext.start];
+ }
+ } else if (ext.level === 'inline') {
+ if (extensions.startInline) {
+ extensions.startInline.push(ext.start);
+ } else {
+ extensions.startInline = [ext.start];
+ }
+ }
+ }
+ }
+ if (ext.childTokens) {
+ // Child tokens to be visited by walkTokens
+ extensions.childTokens[ext.name] = ext.childTokens;
+ }
+ });
+ opts.extensions = extensions;
+ }
+
+ // ==-- Parse "overwrite" extensions --== //
+ if (pack.renderer) {
+ (function () {
+ var renderer = marked.defaults.renderer || new Renderer();
+ var _loop = function _loop(prop) {
+ var prevRenderer = renderer[prop];
+ // Replace renderer with func to run extension, but fall back if false
+ renderer[prop] = function () {
+ for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
+ args[_key3] = arguments[_key3];
+ }
+ var ret = pack.renderer[prop].apply(renderer, args);
+ if (ret === false) {
+ ret = prevRenderer.apply(renderer, args);
+ }
+ return ret;
+ };
+ };
+ for (var prop in pack.renderer) {
+ _loop(prop);
+ }
+ opts.renderer = renderer;
+ })();
+ }
+ if (pack.tokenizer) {
+ (function () {
+ var tokenizer = marked.defaults.tokenizer || new Tokenizer();
+ var _loop2 = function _loop2(prop) {
+ var prevTokenizer = tokenizer[prop];
+ // Replace tokenizer with func to run extension, but fall back if false
+ tokenizer[prop] = function () {
+ for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
+ args[_key4] = arguments[_key4];
+ }
+ var ret = pack.tokenizer[prop].apply(tokenizer, args);
+ if (ret === false) {
+ ret = prevTokenizer.apply(tokenizer, args);
+ }
+ return ret;
+ };
+ };
+ for (var prop in pack.tokenizer) {
+ _loop2(prop);
+ }
+ opts.tokenizer = tokenizer;
+ })();
+ }
+
+ // ==-- Parse Hooks extensions --== //
+ if (pack.hooks) {
+ (function () {
+ var hooks = marked.defaults.hooks || new Hooks();
+ var _loop3 = function _loop3(prop) {
+ var prevHook = hooks[prop];
+ if (Hooks.passThroughHooks.has(prop)) {
+ hooks[prop] = function (arg) {
+ if (marked.defaults.async) {
+ return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then(function (ret) {
+ return prevHook.call(hooks, ret);
+ });
+ }
+ var ret = pack.hooks[prop].call(hooks, arg);
+ return prevHook.call(hooks, ret);
+ };
+ } else {
+ hooks[prop] = function () {
+ for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
+ args[_key5] = arguments[_key5];
+ }
+ var ret = pack.hooks[prop].apply(hooks, args);
+ if (ret === false) {
+ ret = prevHook.apply(hooks, args);
+ }
+ return ret;
+ };
+ }
+ };
+ for (var prop in pack.hooks) {
+ _loop3(prop);
+ }
+ opts.hooks = hooks;
+ })();
+ }
+
+ // ==-- Parse WalkTokens extensions --== //
+ if (pack.walkTokens) {
+ var _walkTokens = marked.defaults.walkTokens;
+ opts.walkTokens = function (token) {
+ var values = [];
+ values.push(pack.walkTokens.call(this, token));
+ if (_walkTokens) {
+ values = values.concat(_walkTokens.call(this, token));
+ }
+ return values;
+ };
+ }
+ marked.setOptions(opts);
+ });
+ };
+
+ /**
+ * Run callback for every token
+ */
+
+ marked.walkTokens = function (tokens, callback) {
+ var values = [];
+ var _loop4 = function _loop4() {
+ var token = _step.value;
+ values = values.concat(callback.call(marked, token));
+ switch (token.type) {
+ case 'table':
+ {
+ for (var _iterator2 = _createForOfIteratorHelperLoose(token.header), _step2; !(_step2 = _iterator2()).done;) {
+ var cell = _step2.value;
+ values = values.concat(marked.walkTokens(cell.tokens, callback));
+ }
+ for (var _iterator3 = _createForOfIteratorHelperLoose(token.rows), _step3; !(_step3 = _iterator3()).done;) {
+ var row = _step3.value;
+ for (var _iterator4 = _createForOfIteratorHelperLoose(row), _step4; !(_step4 = _iterator4()).done;) {
+ var _cell = _step4.value;
+ values = values.concat(marked.walkTokens(_cell.tokens, callback));
+ }
+ }
+ break;
+ }
+ case 'list':
+ {
+ values = values.concat(marked.walkTokens(token.items, callback));
+ break;
+ }
+ default:
+ {
+ if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) {
+ // Walk any extensions
+ marked.defaults.extensions.childTokens[token.type].forEach(function (childTokens) {
+ values = values.concat(marked.walkTokens(token[childTokens], callback));
+ });
+ } else if (token.tokens) {
+ values = values.concat(marked.walkTokens(token.tokens, callback));
+ }
+ }
+ }
+ };
+ for (var _iterator = _createForOfIteratorHelperLoose(tokens), _step; !(_step = _iterator()).done;) {
+ _loop4();
+ }
+ return values;
+ };
+
+ /**
+ * Parse Inline
+ * @param {string} src
+ */
+ marked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);
+
+ /**
+ * Expose
+ */
+ marked.Parser = Parser;
+ marked.parser = Parser.parse;
+ marked.Renderer = Renderer;
+ marked.TextRenderer = TextRenderer;
+ marked.Lexer = Lexer;
+ marked.lexer = Lexer.lex;
+ marked.Tokenizer = Tokenizer;
+ marked.Slugger = Slugger;
+ marked.Hooks = Hooks;
+ marked.parse = marked;
+ var options = marked.options;
+ var setOptions = marked.setOptions;
+ var use = marked.use;
+ var walkTokens = marked.walkTokens;
+ var parseInline = marked.parseInline;
+ var parse = marked;
+ var parser = Parser.parse;
+ var lexer = Lexer.lex;
+
+ exports.Hooks = Hooks;
+ exports.Lexer = Lexer;
+ exports.Parser = Parser;
+ exports.Renderer = Renderer;
+ exports.Slugger = Slugger;
+ exports.TextRenderer = TextRenderer;
+ exports.Tokenizer = Tokenizer;
+ exports.getDefaults = getDefaults;
+ exports.lexer = lexer;
+ exports.marked = marked;
+ exports.options = options;
+ exports.parse = parse;
+ exports.parseInline = parseInline;
+ exports.parser = parser;
+ exports.setOptions = setOptions;
+ exports.use = use;
+ exports.walkTokens = walkTokens;
+
+}));
diff --git a/node_modules/marked/man/marked.1 b/node_modules/marked/man/marked.1
new file mode 100644
index 0000000..4dd24fd
--- /dev/null
+++ b/node_modules/marked/man/marked.1
@@ -0,0 +1,92 @@
+.ds q \N'34'
+.TH marked 1
+
+.SH NAME
+marked \- a javascript markdown parser
+
+.SH SYNOPSIS
+.B marked
+[\-o \fI<output>\fP] [\-i \fI<input>\fP] [\-s \fI<string>\fP] [\-\-help]
+[\-\-tokens] [\-\-pedantic] [\-\-gfm]
+[\-\-breaks] [\-\-sanitize]
+[\-\-smart\-lists] [\-\-lang\-prefix \fI<prefix>\fP]
+[\-\-no\-etc...] [\-\-silent] [\fIfilename\fP]
+
+.SH DESCRIPTION
+.B marked
+is a full-featured javascript markdown parser, built for speed.
+It also includes multiple GFM features.
+
+.SH EXAMPLES
+.TP
+cat in.md | marked > out.html
+.TP
+echo "hello *world*" | marked
+.TP
+marked \-o out.html \-i in.md \-\-gfm
+.TP
+marked \-\-output="hello world.html" \-i in.md \-\-no-breaks
+
+.SH OPTIONS
+.TP
+.BI \-o,\ \-\-output\ [\fIoutput\fP]
+Specify file output. If none is specified, write to stdout.
+.TP
+.BI \-i,\ \-\-input\ [\fIinput\fP]
+Specify file input, otherwise use last argument as input file.
+If no input file is specified, read from stdin.
+.TP
+.BI \-s,\ \-\-string\ [\fIstring\fP]
+Specify string input instead of a file.
+.TP
+.BI \-t,\ \-\-tokens
+Output a token stream instead of html.
+.TP
+.BI \-\-pedantic
+Conform to obscure parts of markdown.pl as much as possible.
+Don't fix original markdown bugs.
+.TP
+.BI \-\-gfm
+Enable github flavored markdown.
+.TP
+.BI \-\-breaks
+Enable GFM line breaks. Only works with the gfm option.
+.TP
+.BI \-\-sanitize
+Sanitize output. Ignore any HTML input.
+.TP
+.BI \-\-smart\-lists
+Use smarter list behavior than the original markdown.
+.TP
+.BI \-\-lang\-prefix\ [\fIprefix\fP]
+Set the prefix for code block classes.
+.TP
+.BI \-\-mangle
+Mangle email addresses.
+.TP
+.BI \-\-no\-sanitize,\ \-no-etc...
+The inverse of any of the marked options above.
+.TP
+.BI \-\-silent
+Silence error output.
+.TP
+.BI \-h,\ \-\-help
+Display help information.
+
+.SH CONFIGURATION
+For configuring and running programmatically.
+
+.B Example
+
+ import { marked } from 'marked';
+ marked('*foo*', { gfm: true });
+
+.SH BUGS
+Please report any bugs to https://github.com/markedjs/marked.
+
+.SH LICENSE
+Copyright (c) 2011-2014, Christopher Jeffrey (MIT License).
+
+.SH "SEE ALSO"
+.BR markdown(1),
+.BR node.js(1)
diff --git a/node_modules/marked/man/marked.1.txt b/node_modules/marked/man/marked.1.txt
new file mode 100644
index 0000000..1a6816b
--- /dev/null
+++ b/node_modules/marked/man/marked.1.txt
@@ -0,0 +1,86 @@
+marked(1) General Commands Manual marked(1)
+
+NAME
+ marked - a javascript markdown parser
+
+SYNOPSIS
+ marked [-o <output>] [-i <input>] [-s <string>] [--help] [--tokens]
+ [--pedantic] [--gfm] [--breaks] [--sanitize] [--smart-lists]
+ [--lang-prefix <prefix>] [--no-etc...] [--silent] [filename]
+
+
+DESCRIPTION
+ marked is a full-featured javascript markdown parser, built for speed.
+ It also includes multiple GFM features.
+
+EXAMPLES
+ cat in.md | marked > out.html
+
+ echo "hello *world*" | marked
+
+ marked -o out.html -i in.md --gfm
+
+ marked --output="hello world.html" -i in.md --no-breaks
+
+OPTIONS
+ -o, --output [output]
+ Specify file output. If none is specified, write to stdout.
+
+ -i, --input [input]
+ Specify file input, otherwise use last argument as input file.
+ If no input file is specified, read from stdin.
+
+ -s, --string [string]
+ Specify string input instead of a file.
+
+ -t, --tokens
+ Output a token stream instead of html.
+
+ --pedantic
+ Conform to obscure parts of markdown.pl as much as possible.
+ Don't fix original markdown bugs.
+
+ --gfm Enable github flavored markdown.
+
+ --breaks
+ Enable GFM line breaks. Only works with the gfm option.
+
+ --sanitize
+ Sanitize output. Ignore any HTML input.
+
+ --smart-lists
+ Use smarter list behavior than the original markdown.
+
+ --lang-prefix [prefix]
+ Set the prefix for code block classes.
+
+ --mangle
+ Mangle email addresses.
+
+ --no-sanitize, -no-etc...
+ The inverse of any of the marked options above.
+
+ --silent
+ Silence error output.
+
+ -h, --help
+ Display help information.
+
+CONFIGURATION
+ For configuring and running programmatically.
+
+ Example
+
+ import { marked } from 'marked';
+ marked('*foo*', { gfm: true });
+
+BUGS
+ Please report any bugs to https://github.com/markedjs/marked.
+
+LICENSE
+ Copyright (c) 2011-2014, Christopher Jeffrey (MIT License).
+
+SEE ALSO
+ markdown(1), node.js(1)
+
+ marked(1)
diff --git a/node_modules/marked/marked.min.js b/node_modules/marked/marked.min.js
new file mode 100644
index 0000000..9402998
--- /dev/null
+++ b/node_modules/marked/marked.min.js
@@ -0,0 +1,6 @@
+/**
+ * marked v4.3.0 - a markdown parser
+ * Copyright (c) 2011-2023, Christopher Jeffrey. (MIT Licensed)
+ * https://github.com/markedjs/marked
+ */
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).marked={})}(this,function(r){"use strict";function i(e,t){for(var u=0;u<t.length;u++){var n=t[u];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,function(e){e=function(e,t){if("object"!=typeof e||null===e)return e;var u=e[Symbol.toPrimitive];if(void 0===u)return("string"===t?String:Number)(e);u=u.call(e,t||"default");if("object"!=typeof u)return u;throw new TypeError("@@toPrimitive must return a primitive value.")}(e,"string");return"symbol"==typeof e?e:String(e)}(n.key),n)}}function F(){return(F=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var u,n=arguments[t];for(u in n)Object.prototype.hasOwnProperty.call(n,u)&&(e[u]=n[u])}return e}).apply(this,arguments)}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var u=0,n=new Array(t);u<t;u++)n[u]=e[u];return n}function D(e,t){var u,n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return(n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){var u;if(e)return"string"==typeof e?s(e,t):"Map"===(u="Object"===(u=Object.prototype.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:u)||"Set"===u?Array.from(e):"Arguments"===u||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(u)?s(e,t):void 0}(e))||t&&e&&"number"==typeof e.length)return n&&(e=n),u=0,function(){return u>=e.length?{done:!0}:{done:!1,value:e[u++]}};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function e(){return{async:!1,baseUrl:null,breaks:!1,extensions:null,gfm:!0,headerIds:!0,headerPrefix:"",highlight:null,hooks:null,langPrefix:"language-",mangle:!0,pedantic:!1,renderer:null,sanitize:!1,sanitizer:null,silent:!1,smartypants:!1,tokenizer:null,walkTokens:null,xhtml:!1}}r.defaults=e();function u(e){return t[e]}var n=/[&<>"']/,l=new RegExp(n.source,"g"),o=/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,a=new RegExp(o.source,"g"),t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function A(e,t){if(t){if(n.test(e))return e.replace(l,u)}else if(o.test(e))return e.replace(a,u);return e}var c=/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/gi;function x(e){return e.replace(c,function(e,t){return"colon"===(t=t.toLowerCase())?":":"#"===t.charAt(0)?"x"===t.charAt(1)?String.fromCharCode(parseInt(t.substring(2),16)):String.fromCharCode(+t.substring(1)):""})}var h=/(^|[^\[])\^/g;function p(u,e){u="string"==typeof u?u:u.source,e=e||"";var n={replace:function(e,t){return t=(t=t.source||t).replace(h,"$1"),u=u.replace(e,t),n},getRegex:function(){return new RegExp(u,e)}};return n}var Z=/[^\w:]/g,O=/^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;function f(e,t,u){if(e){try{n=decodeURIComponent(x(u)).replace(Z,"").toLowerCase()}catch(e){return null}if(0===n.indexOf("javascript:")||0===n.indexOf("vbscript:")||0===n.indexOf("data:"))return null}var n;t&&!O.test(u)&&(e=u,g[" "+(n=t)]||(q.test(n)?g[" "+n]=n+"/":g[" "+n]=C(n,"/",!0)),t=-1===(n=g[" "+n]).indexOf(":"),u="//"===e.substring(0,2)?t?e:n.replace(j,"$1")+e:"/"===e.charAt(0)?t?e:n.replace(P,"$1")+e:n+e);try{u=encodeURI(u).replace(/%25/g,"%")}catch(e){return null}return u}var g={},q=/^[^:]+:\/*[^/]*$/,j=/^([^:]+:)[\s\S]*$/,P=/^([^:]+:\/*[^/]*)[\s\S]*$/;var k={exec:function(){}};function d(e,t){var u=e.replace(/\|/g,function(e,t,u){for(var n=!1,r=t;0<=--r&&"\\"===u[r];)n=!n;return n?"|":" |"}).split(/ \|/),n=0;if(u[0].trim()||u.shift(),0<u.length&&!u[u.length-1].trim()&&u.pop(),u.length>t)u.splice(t);else for(;u.length<t;)u.push("");for(;n<u.length;n++)u[n]=u[n].trim().replace(/\\\|/g,"|");return u}function C(e,t,u){var n=e.length;if(0===n)return"";for(var r=0;r<n;){var i=e.charAt(n-r-1);if((i!==t||u)&&(i===t||!u))break;r++}return e.slice(0,n-r)}function E(e,t){if(t<1)return"";for(var u="";1<t;)1&t&&(u+=e),t>>=1,e+=e;return u+e}function m(e,t,u,n){var r=t.href,t=t.title?A(t.title):null,i=e[1].replace(/\\([\[\]])/g,"$1");return"!"!==e[0].charAt(0)?(n.state.inLink=!0,e={type:"link",raw:u,href:r,title:t,text:i,tokens:n.inlineTokens(i)},n.state.inLink=!1,e):{type:"image",raw:u,href:r,title:t,text:A(i)}}var b=function(){function e(e){this.options=e||r.defaults}var t=e.prototype;return t.space=function(e){e=this.rules.block.newline.exec(e);if(e&&0<e[0].length)return{type:"space",raw:e[0]}},t.code=function(e){var t,e=this.rules.block.code.exec(e);if(e)return t=e[0].replace(/^ {1,4}/gm,""),{type:"code",raw:e[0],codeBlockStyle:"indented",text:this.options.pedantic?t:C(t,"\n")}},t.fences=function(e){var t,u,n,r,e=this.rules.block.fences.exec(e);if(e)return t=e[0],u=t,n=e[3]||"",u=null===(u=t.match(/^(\s+)(?:```)/))?n:(r=u[1],n.split("\n").map(function(e){var t=e.match(/^\s+/);return null!==t&&t[0].length>=r.length?e.slice(r.length):e}).join("\n")),{type:"code",raw:t,lang:e[2]&&e[2].trim().replace(this.rules.inline._escapes,"$1"),text:u}},t.heading=function(e){var t,u,e=this.rules.block.heading.exec(e);if(e)return t=e[2].trim(),/#$/.test(t)&&(u=C(t,"#"),!this.options.pedantic&&u&&!/ $/.test(u)||(t=u.trim())),{type:"heading",raw:e[0],depth:e[1].length,text:t,tokens:this.lexer.inline(t)}},t.hr=function(e){e=this.rules.block.hr.exec(e);if(e)return{type:"hr",raw:e[0]}},t.blockquote=function(e){var t,u,n,e=this.rules.block.blockquote.exec(e);if(e)return t=e[0].replace(/^ *>[ \t]?/gm,""),u=this.lexer.state.top,this.lexer.state.top=!0,n=this.lexer.blockTokens(t),this.lexer.state.top=u,{type:"blockquote",raw:e[0],tokens:n,text:t}},t.list=function(e){var t=this.rules.block.list.exec(e);if(t){var u,n,r,i,s,l,o,a,D,c,h,p=1<(g=t[1].trim()).length,f={type:"list",raw:"",ordered:p,start:p?+g.slice(0,-1):"",loose:!1,items:[]},g=p?"\\d{1,9}\\"+g.slice(-1):"\\"+g;this.options.pedantic&&(g=p?g:"[*+-]");for(var F=new RegExp("^( {0,3}"+g+")((?:[\t ][^\\n]*)?(?:\\n|$))");e&&(h=!1,t=F.exec(e))&&!this.rules.block.hr.test(e);){if(u=t[0],e=e.substring(u.length),o=t[2].split("\n",1)[0].replace(/^\t+/,function(e){return" ".repeat(3*e.length)}),a=e.split("\n",1)[0],this.options.pedantic?(i=2,c=o.trimLeft()):(i=t[2].search(/[^ ]/),c=o.slice(i=4<i?1:i),i+=t[1].length),s=!1,!o&&/^ *$/.test(a)&&(u+=a+"\n",e=e.substring(a.length+1),h=!0),!h)for(var A=new RegExp("^ {0,"+Math.min(3,i-1)+"}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))"),k=new RegExp("^ {0,"+Math.min(3,i-1)+"}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)"),d=new RegExp("^ {0,"+Math.min(3,i-1)+"}(?:```|~~~)"),C=new RegExp("^ {0,"+Math.min(3,i-1)+"}#");e&&(a=D=e.split("\n",1)[0],this.options.pedantic&&(a=a.replace(/^ {1,4}(?=( {4})*[^ ])/g," ")),!d.test(a))&&!C.test(a)&&!A.test(a)&&!k.test(e);){if(a.search(/[^ ]/)>=i||!a.trim())c+="\n"+a.slice(i);else{if(s)break;if(4<=o.search(/[^ ]/))break;if(d.test(o))break;if(C.test(o))break;if(k.test(o))break;c+="\n"+a}s||a.trim()||(s=!0),u+=D+"\n",e=e.substring(D.length+1),o=a.slice(i)}f.loose||(l?f.loose=!0:/\n *\n *$/.test(u)&&(l=!0)),this.options.gfm&&(n=/^\[[ xX]\] /.exec(c))&&(r="[ ] "!==n[0],c=c.replace(/^\[[ xX]\] +/,"")),f.items.push({type:"list_item",raw:u,task:!!n,checked:r,loose:!1,text:c}),f.raw+=u}f.items[f.items.length-1].raw=u.trimRight(),f.items[f.items.length-1].text=c.trimRight(),f.raw=f.raw.trimRight();for(var E,x=f.items.length,m=0;m<x;m++)this.lexer.state.top=!1,f.items[m].tokens=this.lexer.blockTokens(f.items[m].text,[]),f.loose||(E=0<(E=f.items[m].tokens.filter(function(e){return"space"===e.type})).length&&E.some(function(e){return/\n.*\n/.test(e.raw)}),f.loose=E);if(f.loose)for(m=0;m<x;m++)f.items[m].loose=!0;return f}},t.html=function(e){var t,e=this.rules.block.html.exec(e);if(e)return t={type:"html",raw:e[0],pre:!this.options.sanitizer&&("pre"===e[1]||"script"===e[1]||"style"===e[1]),text:e[0]},this.options.sanitize&&(e=this.options.sanitizer?this.options.sanitizer(e[0]):A(e[0]),t.type="paragraph",t.text=e,t.tokens=this.lexer.inline(e)),t},t.def=function(e){var t,u,n,e=this.rules.block.def.exec(e);if(e)return t=e[1].toLowerCase().replace(/\s+/g," "),u=e[2]?e[2].replace(/^<(.*)>$/,"$1").replace(this.rules.inline._escapes,"$1"):"",n=e[3]&&e[3].substring(1,e[3].length-1).replace(this.rules.inline._escapes,"$1"),{type:"def",tag:t,raw:e[0],href:u,title:n}},t.table=function(e){e=this.rules.block.table.exec(e);if(e){var t={type:"table",header:d(e[1]).map(function(e){return{text:e}}),align:e[2].replace(/^ *|\| *$/g,"").split(/ *\| */),rows:e[3]&&e[3].trim()?e[3].replace(/\n[ \t]*$/,"").split("\n"):[]};if(t.header.length===t.align.length){t.raw=e[0];for(var u,n,r,i=t.align.length,s=0;s<i;s++)/^ *-+: *$/.test(t.align[s])?t.align[s]="right":/^ *:-+: *$/.test(t.align[s])?t.align[s]="center":/^ *:-+ *$/.test(t.align[s])?t.align[s]="left":t.align[s]=null;for(i=t.rows.length,s=0;s<i;s++)t.rows[s]=d(t.rows[s],t.header.length).map(function(e){return{text:e}});for(i=t.header.length,u=0;u<i;u++)t.header[u].tokens=this.lexer.inline(t.header[u].text);for(i=t.rows.length,u=0;u<i;u++)for(r=t.rows[u],n=0;n<r.length;n++)r[n].tokens=this.lexer.inline(r[n].text);return t}}},t.lheading=function(e){e=this.rules.block.lheading.exec(e);if(e)return{type:"heading",raw:e[0],depth:"="===e[2].charAt(0)?1:2,text:e[1],tokens:this.lexer.inline(e[1])}},t.paragraph=function(e){var t,e=this.rules.block.paragraph.exec(e);if(e)return t="\n"===e[1].charAt(e[1].length-1)?e[1].slice(0,-1):e[1],{type:"paragraph",raw:e[0],text:t,tokens:this.lexer.inline(t)}},t.text=function(e){e=this.rules.block.text.exec(e);if(e)return{type:"text",raw:e[0],text:e[0],tokens:this.lexer.inline(e[0])}},t.escape=function(e){e=this.rules.inline.escape.exec(e);if(e)return{type:"escape",raw:e[0],text:A(e[1])}},t.tag=function(e){e=this.rules.inline.tag.exec(e);if(e)return!this.lexer.state.inLink&&/^<a /i.test(e[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&/^<\/a>/i.test(e[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&/^<(pre|code|kbd|script)(\s|>)/i.test(e[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&/^<\/(pre|code|kbd|script)(\s|>)/i.test(e[0])&&(this.lexer.state.inRawBlock=!1),{type:this.options.sanitize?"text":"html",raw:e[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,text:this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):A(e[0]):e[0]}},t.link=function(e){e=this.rules.inline.link.exec(e);if(e){var t=e[2].trim();if(!this.options.pedantic&&/^</.test(t)){if(!/>$/.test(t))return;var u=C(t.slice(0,-1),"\\");if((t.length-u.length)%2==0)return}else{u=function(e,t){if(-1!==e.indexOf(t[1]))for(var u=e.length,n=0,r=0;r<u;r++)if("\\"===e[r])r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&--n<0)return r;return-1}(e[2],"()");-1<u&&(r=(0===e[0].indexOf("!")?5:4)+e[1].length+u,e[2]=e[2].substring(0,u),e[0]=e[0].substring(0,r).trim(),e[3]="")}var n,u=e[2],r="";return this.options.pedantic?(n=/^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(u))&&(u=n[1],r=n[3]):r=e[3]?e[3].slice(1,-1):"",u=u.trim(),m(e,{href:(u=/^</.test(u)?this.options.pedantic&&!/>$/.test(t)?u.slice(1):u.slice(1,-1):u)&&u.replace(this.rules.inline._escapes,"$1"),title:r&&r.replace(this.rules.inline._escapes,"$1")},e[0],this.lexer)}},t.reflink=function(e,t){var u;if(u=(u=this.rules.inline.reflink.exec(e))||this.rules.inline.nolink.exec(e))return(e=t[(e=(u[2]||u[1]).replace(/\s+/g," ")).toLowerCase()])?m(u,e,u[0],this.lexer):{type:"text",raw:t=u[0].charAt(0),text:t}},t.emStrong=function(e,t,u){void 0===u&&(u="");var n=this.rules.inline.emStrong.lDelim.exec(e);if(n&&(!n[3]||!u.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDEE0-\uDEF2\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD81C-\uD820\uD822\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879\uD880-\uD883][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE96\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3]|\uD821[\uDC00-\uDFF7]|\uD823[\uDC00-\uDCD5\uDD00-\uDD08]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD50-\uDD52\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD834[\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E]|\uD838[\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF38\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A])/))){var r=n[1]||n[2]||"";if(!r||""===u||this.rules.inline.punctuation.exec(u)){var i=n[0].length-1,s=i,l=0,o="*"===n[0][0]?this.rules.inline.emStrong.rDelimAst:this.rules.inline.emStrong.rDelimUnd;for(o.lastIndex=0,t=t.slice(-1*e.length+i);null!=(n=o.exec(t));){var a,D=n[1]||n[2]||n[3]||n[4]||n[5]||n[6];if(D)if(a=D.length,n[3]||n[4])s+=a;else if((n[5]||n[6])&&i%3&&!((i+a)%3))l+=a;else if(!(0<(s-=a)))return a=Math.min(a,a+s+l),D=e.slice(0,i+n.index+(n[0].length-D.length)+a),Math.min(i,a)%2?(a=D.slice(1,-1),{type:"em",raw:D,text:a,tokens:this.lexer.inlineTokens(a)}):(a=D.slice(2,-2),{type:"strong",raw:D,text:a,tokens:this.lexer.inlineTokens(a)})}}}},t.codespan=function(e){var t,u,n,e=this.rules.inline.code.exec(e);if(e)return n=e[2].replace(/\n/g," "),t=/[^ ]/.test(n),u=/^ /.test(n)&&/ $/.test(n),n=A(n=t&&u?n.substring(1,n.length-1):n,!0),{type:"codespan",raw:e[0],text:n}},t.br=function(e){e=this.rules.inline.br.exec(e);if(e)return{type:"br",raw:e[0]}},t.del=function(e){e=this.rules.inline.del.exec(e);if(e)return{type:"del",raw:e[0],text:e[2],tokens:this.lexer.inlineTokens(e[2])}},t.autolink=function(e,t){var u,e=this.rules.inline.autolink.exec(e);if(e)return t="@"===e[2]?"mailto:"+(u=A(this.options.mangle?t(e[1]):e[1])):u=A(e[1]),{type:"link",raw:e[0],text:u,href:t,tokens:[{type:"text",raw:u,text:u}]}},t.url=function(e,t){var u,n,r,i;if(u=this.rules.inline.url.exec(e)){if("@"===u[2])r="mailto:"+(n=A(this.options.mangle?t(u[0]):u[0]));else{for(;i=u[0],u[0]=this.rules.inline._backpedal.exec(u[0])[0],i!==u[0];);n=A(u[0]),r="www."===u[1]?"http://"+u[0]:u[0]}return{type:"link",raw:u[0],text:n,href:r,tokens:[{type:"text",raw:n,text:n}]}}},t.inlineText=function(e,t){e=this.rules.inline.text.exec(e);if(e)return t=this.lexer.state.inRawBlock?this.options.sanitize?this.options.sanitizer?this.options.sanitizer(e[0]):A(e[0]):e[0]:A(this.options.smartypants?t(e[0]):e[0]),{type:"text",raw:e[0],text:t}},e}(),B={newline:/^(?: *(?:\n|$))+/,code:/^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,fences:/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,hr:/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,heading:/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,blockquote:/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,list:/^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,html:"^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$))",def:/^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,table:k,lheading:/^((?:.|\n(?!\n))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,_paragraph:/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,text:/^[^\n]+/,_label:/(?!\s*\])(?:\\.|[^\[\]\\])+/,_title:/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/},w=(B.def=p(B.def).replace("label",B._label).replace("title",B._title).getRegex(),B.bullet=/(?:[*+-]|\d{1,9}[.)])/,B.listItemStart=p(/^( *)(bull) */).replace("bull",B.bullet).getRegex(),B.list=p(B.list).replace(/bull/g,B.bullet).replace("hr","\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))").replace("def","\\n+(?="+B.def.source+")").getRegex(),B._tag="address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul",B._comment=/<!--(?!-?>)[\s\S]*?(?:-->|$)/,B.html=p(B.html,"i").replace("comment",B._comment).replace("tag",B._tag).replace("attribute",/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),B.paragraph=p(B._paragraph).replace("hr",B.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("|table","").replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",B._tag).getRegex(),B.blockquote=p(B.blockquote).replace("paragraph",B.paragraph).getRegex(),B.normal=F({},B),B.gfm=F({},B.normal,{table:"^ *([^\\n ].*\\|.*)\\n {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)"}),B.gfm.table=p(B.gfm.table).replace("hr",B.hr).replace("heading"," {0,3}#{1,6} ").replace("blockquote"," {0,3}>").replace("code"," {4}[^\\n]").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",B._tag).getRegex(),B.gfm.paragraph=p(B._paragraph).replace("hr",B.hr).replace("heading"," {0,3}#{1,6} ").replace("|lheading","").replace("table",B.gfm.table).replace("blockquote"," {0,3}>").replace("fences"," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace("list"," {0,3}(?:[*+-]|1[.)]) ").replace("html","</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)").replace("tag",B._tag).getRegex(),B.pedantic=F({},B.normal,{html:p("^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\s[^'\"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))").replace("comment",B._comment).replace(/tag/g,"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b").getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:k,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:p(B.normal._paragraph).replace("hr",B.hr).replace("heading"," *#{1,6} *[^\n]").replace("lheading",B.lheading).replace("blockquote"," {0,3}>").replace("|fences","").replace("|list","").replace("|html","").getRegex()}),{escape:/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,autolink:/^<(scheme:[^\s\x00-\x1f<>]*|email)>/,url:k,tag:"^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>",link:/^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,reflink:/^!?\[(label)\]\[(ref)\]/,nolink:/^!?\[(ref)\](?:\[\])?/,reflinkSearch:"reflink|nolink(?!\\()",emStrong:{lDelim:/^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,rDelimAst:/^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,rDelimUnd:/^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/},code:/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,br:/^( {2,}|\\)\n(?!\s*$)/,del:k,text:/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,punctuation:/^([\spunctuation])/});function L(e){return e.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…")}function y(e){for(var t,u="",n=e.length,r=0;r<n;r++)t=e.charCodeAt(r),u+="&#"+(t=.5<Math.random()?"x"+t.toString(16):t)+";";return u}w._punctuation="!\"#$%&'()+\\-.,/:;<=>?@\\[\\]`^{|}~",w.punctuation=p(w.punctuation).replace(/punctuation/g,w._punctuation).getRegex(),w.blockSkip=/\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g,w.escapedEmSt=/(?:^|[^\\])(?:\\\\)*\\[*_]/g,w._comment=p(B._comment).replace("(?:--\x3e|$)","--\x3e").getRegex(),w.emStrong.lDelim=p(w.emStrong.lDelim).replace(/punct/g,w._punctuation).getRegex(),w.emStrong.rDelimAst=p(w.emStrong.rDelimAst,"g").replace(/punct/g,w._punctuation).getRegex(),w.emStrong.rDelimUnd=p(w.emStrong.rDelimUnd,"g").replace(/punct/g,w._punctuation).getRegex(),w._escapes=/\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g,w._scheme=/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/,w._email=/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/,w.autolink=p(w.autolink).replace("scheme",w._scheme).replace("email",w._email).getRegex(),w._attribute=/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/,w.tag=p(w.tag).replace("comment",w._comment).replace("attribute",w._attribute).getRegex(),w._label=/(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/,w._href=/<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/,w._title=/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/,w.link=p(w.link).replace("label",w._label).replace("href",w._href).replace("title",w._title).getRegex(),w.reflink=p(w.reflink).replace("label",w._label).replace("ref",B._label).getRegex(),w.nolink=p(w.nolink).replace("ref",B._label).getRegex(),w.reflinkSearch=p(w.reflinkSearch,"g").replace("reflink",w.reflink).replace("nolink",w.nolink).getRegex(),w.normal=F({},w),w.pedantic=F({},w.normal,{strong:{start:/^__|\*\*/,middle:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,endAst:/\*\*(?!\*)/g,endUnd:/__(?!_)/g},em:{start:/^_|\*/,middle:/^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,endAst:/\*(?!\*)/g,endUnd:/_(?!_)/g},link:p(/^!?\[(label)\]\((.*?)\)/).replace("label",w._label).getRegex(),reflink:p(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace("label",w._label).getRegex()}),w.gfm=F({},w.normal,{escape:p(w.escape).replace("])","~|])").getRegex(),_extended_email:/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,url:/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/}),w.gfm.url=p(w.gfm.url,"i").replace("email",w.gfm._extended_email).getRegex(),w.breaks=F({},w.gfm,{br:p(w.br).replace("{2,}","*").getRegex(),text:p(w.gfm.text).replace("\\b_","\\b_| {2,}\\n").replace(/\{2,\}/g,"*").getRegex()});var v=function(){function u(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||r.defaults,this.options.tokenizer=this.options.tokenizer||new b,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,(this.tokenizer.lexer=this).inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};e={block:B.normal,inline:w.normal};this.options.pedantic?(e.block=B.pedantic,e.inline=w.pedantic):this.options.gfm&&(e.block=B.gfm,this.options.breaks?e.inline=w.breaks:e.inline=w.gfm),this.tokenizer.rules=e}u.lex=function(e,t){return new u(t).lex(e)},u.lexInline=function(e,t){return new u(t).inlineTokens(e)};var e,t,n=u.prototype;return n.lex=function(e){var t;for(e=e.replace(/\r\n|\r/g,"\n"),this.blockTokens(e,this.tokens);t=this.inlineQueue.shift();)this.inlineTokens(t.src,t.tokens);return this.tokens},n.blockTokens=function(r,t){var u,e,i,n,s=this;for(void 0===t&&(t=[]),r=this.options.pedantic?r.replace(/\t/g," ").replace(/^ +$/gm,""):r.replace(/^( *)(\t+)/gm,function(e,t,u){return t+" ".repeat(u.length)});r;)if(!(this.options.extensions&&this.options.extensions.block&&this.options.extensions.block.some(function(e){return!!(u=e.call({lexer:s},r,t))&&(r=r.substring(u.raw.length),t.push(u),!0)})))if(u=this.tokenizer.space(r))r=r.substring(u.raw.length),1===u.raw.length&&0<t.length?t[t.length-1].raw+="\n":t.push(u);else if(u=this.tokenizer.code(r))r=r.substring(u.raw.length),!(e=t[t.length-1])||"paragraph"!==e.type&&"text"!==e.type?t.push(u):(e.raw+="\n"+u.raw,e.text+="\n"+u.text,this.inlineQueue[this.inlineQueue.length-1].src=e.text);else if(u=this.tokenizer.fences(r))r=r.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.heading(r))r=r.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.hr(r))r=r.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.blockquote(r))r=r.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.list(r))r=r.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.html(r))r=r.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.def(r))r=r.substring(u.raw.length),!(e=t[t.length-1])||"paragraph"!==e.type&&"text"!==e.type?this.tokens.links[u.tag]||(this.tokens.links[u.tag]={href:u.href,title:u.title}):(e.raw+="\n"+u.raw,e.text+="\n"+u.raw,this.inlineQueue[this.inlineQueue.length-1].src=e.text);else if(u=this.tokenizer.table(r))r=r.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.lheading(r))r=r.substring(u.raw.length),t.push(u);else if(i=r,this.options.extensions&&this.options.extensions.startBlock&&!function(){var t=1/0,u=r.slice(1),n=void 0;s.options.extensions.startBlock.forEach(function(e){"number"==typeof(n=e.call({lexer:this},u))&&0<=n&&(t=Math.min(t,n))}),t<1/0&&0<=t&&(i=r.substring(0,t+1))}(),this.state.top&&(u=this.tokenizer.paragraph(i)))e=t[t.length-1],n&&"paragraph"===e.type?(e.raw+="\n"+u.raw,e.text+="\n"+u.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=e.text):t.push(u),n=i.length!==r.length,r=r.substring(u.raw.length);else if(u=this.tokenizer.text(r))r=r.substring(u.raw.length),(e=t[t.length-1])&&"text"===e.type?(e.raw+="\n"+u.raw,e.text+="\n"+u.text,this.inlineQueue.pop(),this.inlineQueue[this.inlineQueue.length-1].src=e.text):t.push(u);else if(r){var l="Infinite loop on byte: "+r.charCodeAt(0);if(this.options.silent){console.error(l);break}throw new Error(l)}return this.state.top=!0,t},n.inline=function(e,t){return this.inlineQueue.push({src:e,tokens:t=void 0===t?[]:t}),t},n.inlineTokens=function(r,t){var u,e,i,n,s,l,o=this,a=(void 0===t&&(t=[]),r);if(this.tokens.links){var D=Object.keys(this.tokens.links);if(0<D.length)for(;null!=(n=this.tokenizer.rules.inline.reflinkSearch.exec(a));)D.includes(n[0].slice(n[0].lastIndexOf("[")+1,-1))&&(a=a.slice(0,n.index)+"["+E("a",n[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;null!=(n=this.tokenizer.rules.inline.blockSkip.exec(a));)a=a.slice(0,n.index)+"["+E("a",n[0].length-2)+"]"+a.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);for(;null!=(n=this.tokenizer.rules.inline.escapedEmSt.exec(a));)a=a.slice(0,n.index+n[0].length-2)+"++"+a.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex),this.tokenizer.rules.inline.escapedEmSt.lastIndex--;for(;r;)if(s||(l=""),s=!1,!(this.options.extensions&&this.options.extensions.inline&&this.options.extensions.inline.some(function(e){return!!(u=e.call({lexer:o},r,t))&&(r=r.substring(u.raw.length),t.push(u),!0)})))if(u=this.tokenizer.escape(r))r=r.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.tag(r))r=r.substring(u.raw.length),(e=t[t.length-1])&&"text"===u.type&&"text"===e.type?(e.raw+=u.raw,e.text+=u.text):t.push(u);else if(u=this.tokenizer.link(r))r=r.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.reflink(r,this.tokens.links))r=r.substring(u.raw.length),(e=t[t.length-1])&&"text"===u.type&&"text"===e.type?(e.raw+=u.raw,e.text+=u.text):t.push(u);else if(u=this.tokenizer.emStrong(r,a,l))r=r.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.codespan(r))r=r.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.br(r))r=r.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.del(r))r=r.substring(u.raw.length),t.push(u);else if(u=this.tokenizer.autolink(r,y))r=r.substring(u.raw.length),t.push(u);else if(!this.state.inLink&&(u=this.tokenizer.url(r,y)))r=r.substring(u.raw.length),t.push(u);else if(i=r,this.options.extensions&&this.options.extensions.startInline&&!function(){var t=1/0,u=r.slice(1),n=void 0;o.options.extensions.startInline.forEach(function(e){"number"==typeof(n=e.call({lexer:this},u))&&0<=n&&(t=Math.min(t,n))}),t<1/0&&0<=t&&(i=r.substring(0,t+1))}(),u=this.tokenizer.inlineText(i,L))r=r.substring(u.raw.length),"_"!==u.raw.slice(-1)&&(l=u.raw.slice(-1)),s=!0,(e=t[t.length-1])&&"text"===e.type?(e.raw+=u.raw,e.text+=u.text):t.push(u);else if(r){var c="Infinite loop on byte: "+r.charCodeAt(0);if(this.options.silent){console.error(c);break}throw new Error(c)}return t},n=u,t=[{key:"rules",get:function(){return{block:B,inline:w}}}],(e=null)&&i(n.prototype,e),t&&i(n,t),Object.defineProperty(n,"prototype",{writable:!1}),u}(),_=function(){function e(e){this.options=e||r.defaults}var t=e.prototype;return t.code=function(e,t,u){var n,t=(t||"").match(/\S*/)[0];return this.options.highlight&&null!=(n=this.options.highlight(e,t))&&n!==e&&(u=!0,e=n),e=e.replace(/\n$/,"")+"\n",t?'<pre><code class="'+this.options.langPrefix+A(t)+'">'+(u?e:A(e,!0))+"</code></pre>\n":"<pre><code>"+(u?e:A(e,!0))+"</code></pre>\n"},t.blockquote=function(e){return"<blockquote>\n"+e+"</blockquote>\n"},t.html=function(e){return e},t.heading=function(e,t,u,n){return this.options.headerIds?"<h"+t+' id="'+(this.options.headerPrefix+n.slug(u))+'">'+e+"</h"+t+">\n":"<h"+t+">"+e+"</h"+t+">\n"},t.hr=function(){return this.options.xhtml?"<hr/>\n":"<hr>\n"},t.list=function(e,t,u){var n=t?"ol":"ul";return"<"+n+(t&&1!==u?' start="'+u+'"':"")+">\n"+e+"</"+n+">\n"},t.listitem=function(e){return"<li>"+e+"</li>\n"},t.checkbox=function(e){return"<input "+(e?'checked="" ':"")+'disabled="" type="checkbox"'+(this.options.xhtml?" /":"")+"> "},t.paragraph=function(e){return"<p>"+e+"</p>\n"},t.table=function(e,t){return"<table>\n<thead>\n"+e+"</thead>\n"+(t=t&&"<tbody>"+t+"</tbody>")+"</table>\n"},t.tablerow=function(e){return"<tr>\n"+e+"</tr>\n"},t.tablecell=function(e,t){var u=t.header?"th":"td";return(t.align?"<"+u+' align="'+t.align+'">':"<"+u+">")+e+"</"+u+">\n"},t.strong=function(e){return"<strong>"+e+"</strong>"},t.em=function(e){return"<em>"+e+"</em>"},t.codespan=function(e){return"<code>"+e+"</code>"},t.br=function(){return this.options.xhtml?"<br/>":"<br>"},t.del=function(e){return"<del>"+e+"</del>"},t.link=function(e,t,u){return null===(e=f(this.options.sanitize,this.options.baseUrl,e))?u:(e='<a href="'+e+'"',t&&(e+=' title="'+t+'"'),e+">"+u+"</a>")},t.image=function(e,t,u){return null===(e=f(this.options.sanitize,this.options.baseUrl,e))?u:(e='<img src="'+e+'" alt="'+u+'"',t&&(e+=' title="'+t+'"'),e+(this.options.xhtml?"/>":">"))},t.text=function(e){return e},e}(),z=function(){function e(){}var t=e.prototype;return t.strong=function(e){return e},t.em=function(e){return e},t.codespan=function(e){return e},t.del=function(e){return e},t.html=function(e){return e},t.text=function(e){return e},t.link=function(e,t,u){return""+u},t.image=function(e,t,u){return""+u},t.br=function(){return""},e}(),$=function(){function e(){this.seen={}}var t=e.prototype;return t.serialize=function(e){return e.toLowerCase().trim().replace(/<[!\/a-z].*?>/gi,"").replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g,"").replace(/\s/g,"-")},t.getNextSafeSlug=function(e,t){var u=e,n=0;if(this.seen.hasOwnProperty(u))for(n=this.seen[e];u=e+"-"+ ++n,this.seen.hasOwnProperty(u););return t||(this.seen[e]=n,this.seen[u]=0),u},t.slug=function(e,t){void 0===t&&(t={});e=this.serialize(e);return this.getNextSafeSlug(e,t.dryrun)},e}(),S=function(){function u(e){this.options=e||r.defaults,this.options.renderer=this.options.renderer||new _,this.renderer=this.options.renderer,this.renderer.options=this.options,this.textRenderer=new z,this.slugger=new $}u.parse=function(e,t){return new u(t).parse(e)},u.parseInline=function(e,t){return new u(t).parseInline(e)};var e=u.prototype;return e.parse=function(e,t){void 0===t&&(t=!0);for(var u,n,r,i,s,l,o,a,D,c,h,p,f,g,F,A,k="",d=e.length,C=0;C<d;C++)if(a=e[C],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[a.type]&&(!1!==(A=this.options.extensions.renderers[a.type].call({parser:this},a))||!["space","hr","heading","code","table","blockquote","list","html","paragraph","text"].includes(a.type)))k+=A||"";else switch(a.type){case"space":continue;case"hr":k+=this.renderer.hr();continue;case"heading":k+=this.renderer.heading(this.parseInline(a.tokens),a.depth,x(this.parseInline(a.tokens,this.textRenderer)),this.slugger);continue;case"code":k+=this.renderer.code(a.text,a.lang,a.escaped);continue;case"table":for(l=D="",r=a.header.length,u=0;u<r;u++)l+=this.renderer.tablecell(this.parseInline(a.header[u].tokens),{header:!0,align:a.align[u]});for(D+=this.renderer.tablerow(l),o="",r=a.rows.length,u=0;u<r;u++){for(l="",i=(s=a.rows[u]).length,n=0;n<i;n++)l+=this.renderer.tablecell(this.parseInline(s[n].tokens),{header:!1,align:a.align[n]});o+=this.renderer.tablerow(l)}k+=this.renderer.table(D,o);continue;case"blockquote":o=this.parse(a.tokens),k+=this.renderer.blockquote(o);continue;case"list":for(D=a.ordered,E=a.start,c=a.loose,r=a.items.length,o="",u=0;u<r;u++)f=(p=a.items[u]).checked,g=p.task,h="",p.task&&(F=this.renderer.checkbox(f),c?0<p.tokens.length&&"paragraph"===p.tokens[0].type?(p.tokens[0].text=F+" "+p.tokens[0].text,p.tokens[0].tokens&&0<p.tokens[0].tokens.length&&"text"===p.tokens[0].tokens[0].type&&(p.tokens[0].tokens[0].text=F+" "+p.tokens[0].tokens[0].text)):p.tokens.unshift({type:"text",text:F}):h+=F),h+=this.parse(p.tokens,c),o+=this.renderer.listitem(h,g,f);k+=this.renderer.list(o,D,E);continue;case"html":k+=this.renderer.html(a.text);continue;case"paragraph":k+=this.renderer.paragraph(this.parseInline(a.tokens));continue;case"text":for(o=a.tokens?this.parseInline(a.tokens):a.text;C+1<d&&"text"===e[C+1].type;)o+="\n"+((a=e[++C]).tokens?this.parseInline(a.tokens):a.text);k+=t?this.renderer.paragraph(o):o;continue;default:var E='Token with "'+a.type+'" type was not found.';if(this.options.silent)return void console.error(E);throw new Error(E)}return k},e.parseInline=function(e,t){t=t||this.renderer;for(var u,n,r="",i=e.length,s=0;s<i;s++)if(u=e[s],this.options.extensions&&this.options.extensions.renderers&&this.options.extensions.renderers[u.type]&&(!1!==(n=this.options.extensions.renderers[u.type].call({parser:this},u))||!["escape","html","link","image","strong","em","codespan","br","del","text"].includes(u.type)))r+=n||"";else switch(u.type){case"escape":r+=t.text(u.text);break;case"html":r+=t.html(u.text);break;case"link":r+=t.link(u.href,u.title,this.parseInline(u.tokens,t));break;case"image":r+=t.image(u.href,u.title,u.text);break;case"strong":r+=t.strong(this.parseInline(u.tokens,t));break;case"em":r+=t.em(this.parseInline(u.tokens,t));break;case"codespan":r+=t.codespan(u.text);break;case"br":r+=t.br();break;case"del":r+=t.del(this.parseInline(u.tokens,t));break;case"text":r+=t.text(u.text);break;default:var l='Token with "'+u.type+'" type was not found.';if(this.options.silent)return void console.error(l);throw new Error(l)}return r},u}(),T=function(){function e(e){this.options=e||r.defaults}var t=e.prototype;return t.preprocess=function(e){return e},t.postprocess=function(e){return e},e}();function R(f,g){return function(e,u,n){"function"==typeof u&&(n=u,u=null);var r,i,s,t=F({},u),l=(u=F({},I.defaults,t),r=u.silent,i=u.async,s=n,function(e){var t;if(e.message+="\nPlease report this to https://github.com/markedjs/marked.",r)return t="<p>An error occurred:</p><pre>"+A(e.message+"",!0)+"</pre>",i?Promise.resolve(t):s?void s(null,t):t;if(i)return Promise.reject(e);if(!s)throw e;s(e)});if(null==e)return l(new Error("marked(): input parameter is undefined or null"));if("string"!=typeof e)return l(new Error("marked(): input parameter is of type "+Object.prototype.toString.call(e)+", string expected"));if((t=u)&&t.sanitize&&!t.silent&&console.warn("marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options"),u.hooks&&(u.hooks.options=u),n){var o,a=u.highlight;try{u.hooks&&(e=u.hooks.preprocess(e)),o=f(e,u)}catch(e){return l(e)}var D,c=function(t){var e;if(!t)try{u.walkTokens&&I.walkTokens(o,u.walkTokens),e=g(o,u),u.hooks&&(e=u.hooks.postprocess(e))}catch(e){t=e}return u.highlight=a,t?l(t):n(null,e)};return!a||a.length<3?c():(delete u.highlight,o.length?(D=0,I.walkTokens(o,function(u){"code"===u.type&&(D++,setTimeout(function(){a(u.text,u.lang,function(e,t){if(e)return c(e);null!=t&&t!==u.text&&(u.text=t,u.escaped=!0),0===--D&&c()})},0))}),void(0===D&&c())):c())}if(u.async)return Promise.resolve(u.hooks?u.hooks.preprocess(e):e).then(function(e){return f(e,u)}).then(function(e){return u.walkTokens?Promise.all(I.walkTokens(e,u.walkTokens)).then(function(){return e}):e}).then(function(e){return g(e,u)}).then(function(e){return u.hooks?u.hooks.postprocess(e):e}).catch(l);try{u.hooks&&(e=u.hooks.preprocess(e));var h=f(e,u),p=(u.walkTokens&&I.walkTokens(h,u.walkTokens),g(h,u));return p=u.hooks?u.hooks.postprocess(p):p}catch(e){return l(e)}}}function I(e,t,u){return R(v.lex,S.parse)(e,t,u)}T.passThroughHooks=new Set(["preprocess","postprocess"]),I.options=I.setOptions=function(e){return I.defaults=F({},I.defaults,e),e=I.defaults,r.defaults=e,I},I.getDefaults=e,I.defaults=r.defaults,I.use=function(){for(var D=I.defaults.extensions||{renderers:{},childTokens:{}},e=arguments.length,t=new Array(e),u=0;u<e;u++)t[u]=arguments[u];t.forEach(function(s){var u,e=F({},s);if(e.async=I.defaults.async||e.async||!1,s.extensions&&(s.extensions.forEach(function(r){if(!r.name)throw new Error("extension name required");var i;if(r.renderer&&(i=D.renderers[r.name],D.renderers[r.name]=i?function(){for(var e=arguments.length,t=new Array(e),u=0;u<e;u++)t[u]=arguments[u];var n=r.renderer.apply(this,t);return n=!1===n?i.apply(this,t):n}:r.renderer),r.tokenizer){if(!r.level||"block"!==r.level&&"inline"!==r.level)throw new Error("extension level must be 'block' or 'inline'");D[r.level]?D[r.level].unshift(r.tokenizer):D[r.level]=[r.tokenizer],r.start&&("block"===r.level?D.startBlock?D.startBlock.push(r.start):D.startBlock=[r.start]:"inline"===r.level&&(D.startInline?D.startInline.push(r.start):D.startInline=[r.start]))}r.childTokens&&(D.childTokens[r.name]=r.childTokens)}),e.extensions=D),s.renderer){var t,l=I.defaults.renderer||new _;for(t in s.renderer)!function(r){var i=l[r];l[r]=function(){for(var e=arguments.length,t=new Array(e),u=0;u<e;u++)t[u]=arguments[u];var n=s.renderer[r].apply(l,t);return n=!1===n?i.apply(l,t):n}}(t);e.renderer=l}if(s.tokenizer){var n,o=I.defaults.tokenizer||new b;for(n in s.tokenizer)!function(r){var i=o[r];o[r]=function(){for(var e=arguments.length,t=new Array(e),u=0;u<e;u++)t[u]=arguments[u];var n=s.tokenizer[r].apply(o,t);return n=!1===n?i.apply(o,t):n}}(n);e.tokenizer=o}if(s.hooks){var r,a=I.defaults.hooks||new T;for(r in s.hooks)!function(r){var i=a[r];T.passThroughHooks.has(r)?a[r]=function(e){return I.defaults.async?Promise.resolve(s.hooks[r].call(a,e)).then(function(e){return i.call(a,e)}):(e=s.hooks[r].call(a,e),i.call(a,e))}:a[r]=function(){for(var e=arguments.length,t=new Array(e),u=0;u<e;u++)t[u]=arguments[u];var n=s.hooks[r].apply(a,t);return n=!1===n?i.apply(a,t):n}}(r);e.hooks=a}s.walkTokens&&(u=I.defaults.walkTokens,e.walkTokens=function(e){var t=[];return t.push(s.walkTokens.call(this,e)),t=u?t.concat(u.call(this,e)):t}),I.setOptions(e)})},I.walkTokens=function(e,l){for(var o,a=[],t=D(e);!(o=t()).done;)!function(){var t=o.value;switch(a=a.concat(l.call(I,t)),t.type){case"table":for(var e=D(t.header);!(u=e()).done;){var u=u.value;a=a.concat(I.walkTokens(u.tokens,l))}for(var n,r=D(t.rows);!(n=r()).done;)for(var i=D(n.value);!(s=i()).done;){var s=s.value;a=a.concat(I.walkTokens(s.tokens,l))}break;case"list":a=a.concat(I.walkTokens(t.items,l));break;default:I.defaults.extensions&&I.defaults.extensions.childTokens&&I.defaults.extensions.childTokens[t.type]?I.defaults.extensions.childTokens[t.type].forEach(function(e){a=a.concat(I.walkTokens(t[e],l))}):t.tokens&&(a=a.concat(I.walkTokens(t.tokens,l)))}}();return a},I.parseInline=R(v.lexInline,S.parseInline),I.Parser=S,I.parser=S.parse,I.Renderer=_,I.TextRenderer=z,I.Lexer=v,I.lexer=v.lex,I.Tokenizer=b,I.Slugger=$,I.Hooks=T;var k=(I.parse=I).options,Q=I.setOptions,U=I.use,M=I.walkTokens,N=I.parseInline,H=I,X=S.parse,G=v.lex;r.Hooks=T,r.Lexer=v,r.Parser=S,r.Renderer=_,r.Slugger=$,r.TextRenderer=z,r.Tokenizer=b,r.getDefaults=e,r.lexer=G,r.marked=I,r.options=k,r.parse=H,r.parseInline=N,r.parser=X,r.setOptions=Q,r.use=U,r.walkTokens=M}); \ No newline at end of file
diff --git a/node_modules/marked/package.json b/node_modules/marked/package.json
new file mode 100644
index 0000000..848fd13
--- /dev/null
+++ b/node_modules/marked/package.json
@@ -0,0 +1,93 @@
+{
+ "name": "marked",
+ "description": "A markdown parser built for speed",
+ "author": "Christopher Jeffrey",
+ "version": "4.3.0",
+ "type": "module",
+ "main": "./lib/marked.cjs",
+ "module": "./lib/marked.esm.js",
+ "browser": "./lib/marked.umd.js",
+ "bin": {
+ "marked": "bin/marked.js"
+ },
+ "man": "./man/marked.1",
+ "files": [
+ "bin/",
+ "lib/",
+ "src/",
+ "man/",
+ "marked.min.js"
+ ],
+ "exports": {
+ ".": {
+ "import": "./lib/marked.esm.js",
+ "default": "./lib/marked.cjs"
+ },
+ "./bin/marked": "./bin/marked.js",
+ "./package.json": "./package.json"
+ },
+ "repository": "git://github.com/markedjs/marked.git",
+ "homepage": "https://marked.js.org",
+ "bugs": {
+ "url": "http://github.com/markedjs/marked/issues"
+ },
+ "license": "MIT",
+ "keywords": [
+ "markdown",
+ "markup",
+ "html"
+ ],
+ "tags": [
+ "markdown",
+ "markup",
+ "html"
+ ],
+ "devDependencies": {
+ "@babel/core": "^7.21.3",
+ "@babel/preset-env": "^7.20.2",
+ "@markedjs/html-differ": "^4.0.2",
+ "@rollup/plugin-babel": "^6.0.3",
+ "@semantic-release/commit-analyzer": "^9.0.2",
+ "@semantic-release/git": "^10.0.1",
+ "@semantic-release/github": "^8.0.7",
+ "@semantic-release/npm": "^9.0.2",
+ "@semantic-release/release-notes-generator": "^10.0.3",
+ "cheerio": "^1.0.0-rc.12",
+ "commonmark": "0.30.0",
+ "eslint": "^8.36.0",
+ "eslint-config-standard": "^17.0.0",
+ "eslint-plugin-import": "^2.27.5",
+ "eslint-plugin-n": "^15.6.1",
+ "eslint-plugin-promise": "^6.1.1",
+ "front-matter": "^4.0.2",
+ "highlight.js": "^11.7.0",
+ "jasmine": "^4.6.0",
+ "markdown-it": "13.0.1",
+ "node-fetch": "^3.3.1",
+ "rollup": "^3.20.0",
+ "semantic-release": "^20.1.3",
+ "titleize": "^3.0.0",
+ "uglify-js": "^3.17.4",
+ "vuln-regex-detector": "^1.3.0"
+ },
+ "scripts": {
+ "test": "jasmine --config=jasmine.json",
+ "test:all": "npm test && npm run test:lint",
+ "test:unit": "npm test -- test/unit/**/*-spec.js",
+ "test:specs": "npm test -- test/specs/**/*-spec.js",
+ "test:lint": "eslint .",
+ "test:redos": "node test/vuln-regex.js",
+ "test:update": "node test/update-specs.js",
+ "rules": "node test/rules.js",
+ "bench": "npm run rollup && node test/bench.js",
+ "lint": "eslint --fix .",
+ "build:reset": "git checkout upstream/master lib/marked.cjs lib/marked.umd.js lib/marked.esm.js marked.min.js",
+ "build": "npm run rollup && npm run minify",
+ "build:docs": "node build-docs.js",
+ "rollup": "rollup -c rollup.config.js",
+ "minify": "uglifyjs lib/marked.umd.js -cm --comments /Copyright/ -o marked.min.js"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+}
diff --git a/node_modules/marked/src/Hooks.js b/node_modules/marked/src/Hooks.js
new file mode 100644
index 0000000..af4bb2f
--- /dev/null
+++ b/node_modules/marked/src/Hooks.js
@@ -0,0 +1,26 @@
+import { defaults } from './defaults.js';
+
+export class Hooks {
+ constructor(options) {
+ this.options = options || defaults;
+ }
+
+ static passThroughHooks = new Set([
+ 'preprocess',
+ 'postprocess'
+ ]);
+
+ /**
+ * Process markdown before marked
+ */
+ preprocess(markdown) {
+ return markdown;
+ }
+
+ /**
+ * Process HTML after marked is finished
+ */
+ postprocess(html) {
+ return html;
+ }
+}
diff --git a/node_modules/marked/src/Lexer.js b/node_modules/marked/src/Lexer.js
new file mode 100644
index 0000000..acb0fc2
--- /dev/null
+++ b/node_modules/marked/src/Lexer.js
@@ -0,0 +1,503 @@
+import { Tokenizer } from './Tokenizer.js';
+import { defaults } from './defaults.js';
+import { block, inline } from './rules.js';
+import { repeatString } from './helpers.js';
+
+/**
+ * smartypants text replacement
+ * @param {string} text
+ */
+function smartypants(text) {
+ return text
+ // em-dashes
+ .replace(/---/g, '\u2014')
+ // en-dashes
+ .replace(/--/g, '\u2013')
+ // opening singles
+ .replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018')
+ // closing singles & apostrophes
+ .replace(/'/g, '\u2019')
+ // opening doubles
+ .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c')
+ // closing doubles
+ .replace(/"/g, '\u201d')
+ // ellipses
+ .replace(/\.{3}/g, '\u2026');
+}
+
+/**
+ * mangle email addresses
+ * @param {string} text
+ */
+function mangle(text) {
+ let out = '',
+ i,
+ ch;
+
+ const l = text.length;
+ for (i = 0; i < l; i++) {
+ ch = text.charCodeAt(i);
+ if (Math.random() > 0.5) {
+ ch = 'x' + ch.toString(16);
+ }
+ out += '&#' + ch + ';';
+ }
+
+ return out;
+}
+
+/**
+ * Block Lexer
+ */
+export class Lexer {
+ constructor(options) {
+ this.tokens = [];
+ this.tokens.links = Object.create(null);
+ this.options = options || defaults;
+ this.options.tokenizer = this.options.tokenizer || new Tokenizer();
+ this.tokenizer = this.options.tokenizer;
+ this.tokenizer.options = this.options;
+ this.tokenizer.lexer = this;
+ this.inlineQueue = [];
+ this.state = {
+ inLink: false,
+ inRawBlock: false,
+ top: true
+ };
+
+ const rules = {
+ block: block.normal,
+ inline: inline.normal
+ };
+
+ if (this.options.pedantic) {
+ rules.block = block.pedantic;
+ rules.inline = inline.pedantic;
+ } else if (this.options.gfm) {
+ rules.block = block.gfm;
+ if (this.options.breaks) {
+ rules.inline = inline.breaks;
+ } else {
+ rules.inline = inline.gfm;
+ }
+ }
+ this.tokenizer.rules = rules;
+ }
+
+ /**
+ * Expose Rules
+ */
+ static get rules() {
+ return {
+ block,
+ inline
+ };
+ }
+
+ /**
+ * Static Lex Method
+ */
+ static lex(src, options) {
+ const lexer = new Lexer(options);
+ return lexer.lex(src);
+ }
+
+ /**
+ * Static Lex Inline Method
+ */
+ static lexInline(src, options) {
+ const lexer = new Lexer(options);
+ return lexer.inlineTokens(src);
+ }
+
+ /**
+ * Preprocessing
+ */
+ lex(src) {
+ src = src
+ .replace(/\r\n|\r/g, '\n');
+
+ this.blockTokens(src, this.tokens);
+
+ let next;
+ while (next = this.inlineQueue.shift()) {
+ this.inlineTokens(next.src, next.tokens);
+ }
+
+ return this.tokens;
+ }
+
+ /**
+ * Lexing
+ */
+ blockTokens(src, tokens = []) {
+ if (this.options.pedantic) {
+ src = src.replace(/\t/g, ' ').replace(/^ +$/gm, '');
+ } else {
+ src = src.replace(/^( *)(\t+)/gm, (_, leading, tabs) => {
+ return leading + ' '.repeat(tabs.length);
+ });
+ }
+
+ let token, lastToken, cutSrc, lastParagraphClipped;
+
+ while (src) {
+ if (this.options.extensions
+ && this.options.extensions.block
+ && this.options.extensions.block.some((extTokenizer) => {
+ if (token = extTokenizer.call({ lexer: this }, src, tokens)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ return true;
+ }
+ return false;
+ })) {
+ continue;
+ }
+
+ // newline
+ if (token = this.tokenizer.space(src)) {
+ src = src.substring(token.raw.length);
+ if (token.raw.length === 1 && tokens.length > 0) {
+ // if there's a single \n as a spacer, it's terminating the last line,
+ // so move it there so that we don't get unecessary paragraph tags
+ tokens[tokens.length - 1].raw += '\n';
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ // code
+ if (token = this.tokenizer.code(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ // An indented code block cannot interrupt a paragraph.
+ if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
+ lastToken.raw += '\n' + token.raw;
+ lastToken.text += '\n' + token.text;
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ // fences
+ if (token = this.tokenizer.fences(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // heading
+ if (token = this.tokenizer.heading(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // hr
+ if (token = this.tokenizer.hr(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // blockquote
+ if (token = this.tokenizer.blockquote(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // list
+ if (token = this.tokenizer.list(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // html
+ if (token = this.tokenizer.html(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // def
+ if (token = this.tokenizer.def(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {
+ lastToken.raw += '\n' + token.raw;
+ lastToken.text += '\n' + token.raw;
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
+ } else if (!this.tokens.links[token.tag]) {
+ this.tokens.links[token.tag] = {
+ href: token.href,
+ title: token.title
+ };
+ }
+ continue;
+ }
+
+ // table (gfm)
+ if (token = this.tokenizer.table(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // lheading
+ if (token = this.tokenizer.lheading(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // top-level paragraph
+ // prevent paragraph consuming extensions by clipping 'src' to extension start
+ cutSrc = src;
+ if (this.options.extensions && this.options.extensions.startBlock) {
+ let startIndex = Infinity;
+ const tempSrc = src.slice(1);
+ let tempStart;
+ this.options.extensions.startBlock.forEach(function(getStartIndex) {
+ tempStart = getStartIndex.call({ lexer: this }, tempSrc);
+ if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }
+ });
+ if (startIndex < Infinity && startIndex >= 0) {
+ cutSrc = src.substring(0, startIndex + 1);
+ }
+ }
+ if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {
+ lastToken = tokens[tokens.length - 1];
+ if (lastParagraphClipped && lastToken.type === 'paragraph') {
+ lastToken.raw += '\n' + token.raw;
+ lastToken.text += '\n' + token.text;
+ this.inlineQueue.pop();
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
+ } else {
+ tokens.push(token);
+ }
+ lastParagraphClipped = (cutSrc.length !== src.length);
+ src = src.substring(token.raw.length);
+ continue;
+ }
+
+ // text
+ if (token = this.tokenizer.text(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && lastToken.type === 'text') {
+ lastToken.raw += '\n' + token.raw;
+ lastToken.text += '\n' + token.text;
+ this.inlineQueue.pop();
+ this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ if (src) {
+ const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
+ if (this.options.silent) {
+ console.error(errMsg);
+ break;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+
+ this.state.top = true;
+ return tokens;
+ }
+
+ inline(src, tokens = []) {
+ this.inlineQueue.push({ src, tokens });
+ return tokens;
+ }
+
+ /**
+ * Lexing/Compiling
+ */
+ inlineTokens(src, tokens = []) {
+ let token, lastToken, cutSrc;
+
+ // String with links masked to avoid interference with em and strong
+ let maskedSrc = src;
+ let match;
+ let keepPrevChar, prevChar;
+
+ // Mask out reflinks
+ if (this.tokens.links) {
+ const links = Object.keys(this.tokens.links);
+ if (links.length > 0) {
+ while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {
+ if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {
+ maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);
+ }
+ }
+ }
+ }
+ // Mask out other blocks
+ while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {
+ maskedSrc = maskedSrc.slice(0, match.index) + '[' + repeatString('a', match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);
+ }
+
+ // Mask out escaped em & strong delimiters
+ while ((match = this.tokenizer.rules.inline.escapedEmSt.exec(maskedSrc)) != null) {
+ maskedSrc = maskedSrc.slice(0, match.index + match[0].length - 2) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.escapedEmSt.lastIndex);
+ this.tokenizer.rules.inline.escapedEmSt.lastIndex--;
+ }
+
+ while (src) {
+ if (!keepPrevChar) {
+ prevChar = '';
+ }
+ keepPrevChar = false;
+
+ // extensions
+ if (this.options.extensions
+ && this.options.extensions.inline
+ && this.options.extensions.inline.some((extTokenizer) => {
+ if (token = extTokenizer.call({ lexer: this }, src, tokens)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ return true;
+ }
+ return false;
+ })) {
+ continue;
+ }
+
+ // escape
+ if (token = this.tokenizer.escape(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // tag
+ if (token = this.tokenizer.tag(src)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && token.type === 'text' && lastToken.type === 'text') {
+ lastToken.raw += token.raw;
+ lastToken.text += token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ // link
+ if (token = this.tokenizer.link(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // reflink, nolink
+ if (token = this.tokenizer.reflink(src, this.tokens.links)) {
+ src = src.substring(token.raw.length);
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && token.type === 'text' && lastToken.type === 'text') {
+ lastToken.raw += token.raw;
+ lastToken.text += token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ // em & strong
+ if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // code
+ if (token = this.tokenizer.codespan(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // br
+ if (token = this.tokenizer.br(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // del (gfm)
+ if (token = this.tokenizer.del(src)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // autolink
+ if (token = this.tokenizer.autolink(src, mangle)) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // url (gfm)
+ if (!this.state.inLink && (token = this.tokenizer.url(src, mangle))) {
+ src = src.substring(token.raw.length);
+ tokens.push(token);
+ continue;
+ }
+
+ // text
+ // prevent inlineText consuming extensions by clipping 'src' to extension start
+ cutSrc = src;
+ if (this.options.extensions && this.options.extensions.startInline) {
+ let startIndex = Infinity;
+ const tempSrc = src.slice(1);
+ let tempStart;
+ this.options.extensions.startInline.forEach(function(getStartIndex) {
+ tempStart = getStartIndex.call({ lexer: this }, tempSrc);
+ if (typeof tempStart === 'number' && tempStart >= 0) { startIndex = Math.min(startIndex, tempStart); }
+ });
+ if (startIndex < Infinity && startIndex >= 0) {
+ cutSrc = src.substring(0, startIndex + 1);
+ }
+ }
+ if (token = this.tokenizer.inlineText(cutSrc, smartypants)) {
+ src = src.substring(token.raw.length);
+ if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started
+ prevChar = token.raw.slice(-1);
+ }
+ keepPrevChar = true;
+ lastToken = tokens[tokens.length - 1];
+ if (lastToken && lastToken.type === 'text') {
+ lastToken.raw += token.raw;
+ lastToken.text += token.text;
+ } else {
+ tokens.push(token);
+ }
+ continue;
+ }
+
+ if (src) {
+ const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);
+ if (this.options.silent) {
+ console.error(errMsg);
+ break;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+
+ return tokens;
+ }
+}
diff --git a/node_modules/marked/src/Parser.js b/node_modules/marked/src/Parser.js
new file mode 100644
index 0000000..a22a2bc
--- /dev/null
+++ b/node_modules/marked/src/Parser.js
@@ -0,0 +1,286 @@
+import { Renderer } from './Renderer.js';
+import { TextRenderer } from './TextRenderer.js';
+import { Slugger } from './Slugger.js';
+import { defaults } from './defaults.js';
+import {
+ unescape
+} from './helpers.js';
+
+/**
+ * Parsing & Compiling
+ */
+export class Parser {
+ constructor(options) {
+ this.options = options || defaults;
+ this.options.renderer = this.options.renderer || new Renderer();
+ this.renderer = this.options.renderer;
+ this.renderer.options = this.options;
+ this.textRenderer = new TextRenderer();
+ this.slugger = new Slugger();
+ }
+
+ /**
+ * Static Parse Method
+ */
+ static parse(tokens, options) {
+ const parser = new Parser(options);
+ return parser.parse(tokens);
+ }
+
+ /**
+ * Static Parse Inline Method
+ */
+ static parseInline(tokens, options) {
+ const parser = new Parser(options);
+ return parser.parseInline(tokens);
+ }
+
+ /**
+ * Parse Loop
+ */
+ parse(tokens, top = true) {
+ let out = '',
+ i,
+ j,
+ k,
+ l2,
+ l3,
+ row,
+ cell,
+ header,
+ body,
+ token,
+ ordered,
+ start,
+ loose,
+ itemBody,
+ item,
+ checked,
+ task,
+ checkbox,
+ ret;
+
+ const l = tokens.length;
+ for (i = 0; i < l; i++) {
+ token = tokens[i];
+
+ // Run any renderer extensions
+ if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
+ ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);
+ if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(token.type)) {
+ out += ret || '';
+ continue;
+ }
+ }
+
+ switch (token.type) {
+ case 'space': {
+ continue;
+ }
+ case 'hr': {
+ out += this.renderer.hr();
+ continue;
+ }
+ case 'heading': {
+ out += this.renderer.heading(
+ this.parseInline(token.tokens),
+ token.depth,
+ unescape(this.parseInline(token.tokens, this.textRenderer)),
+ this.slugger);
+ continue;
+ }
+ case 'code': {
+ out += this.renderer.code(token.text,
+ token.lang,
+ token.escaped);
+ continue;
+ }
+ case 'table': {
+ header = '';
+
+ // header
+ cell = '';
+ l2 = token.header.length;
+ for (j = 0; j < l2; j++) {
+ cell += this.renderer.tablecell(
+ this.parseInline(token.header[j].tokens),
+ { header: true, align: token.align[j] }
+ );
+ }
+ header += this.renderer.tablerow(cell);
+
+ body = '';
+ l2 = token.rows.length;
+ for (j = 0; j < l2; j++) {
+ row = token.rows[j];
+
+ cell = '';
+ l3 = row.length;
+ for (k = 0; k < l3; k++) {
+ cell += this.renderer.tablecell(
+ this.parseInline(row[k].tokens),
+ { header: false, align: token.align[k] }
+ );
+ }
+
+ body += this.renderer.tablerow(cell);
+ }
+ out += this.renderer.table(header, body);
+ continue;
+ }
+ case 'blockquote': {
+ body = this.parse(token.tokens);
+ out += this.renderer.blockquote(body);
+ continue;
+ }
+ case 'list': {
+ ordered = token.ordered;
+ start = token.start;
+ loose = token.loose;
+ l2 = token.items.length;
+
+ body = '';
+ for (j = 0; j < l2; j++) {
+ item = token.items[j];
+ checked = item.checked;
+ task = item.task;
+
+ itemBody = '';
+ if (item.task) {
+ checkbox = this.renderer.checkbox(checked);
+ if (loose) {
+ if (item.tokens.length > 0 && item.tokens[0].type === 'paragraph') {
+ item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;
+ if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {
+ item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;
+ }
+ } else {
+ item.tokens.unshift({
+ type: 'text',
+ text: checkbox
+ });
+ }
+ } else {
+ itemBody += checkbox;
+ }
+ }
+
+ itemBody += this.parse(item.tokens, loose);
+ body += this.renderer.listitem(itemBody, task, checked);
+ }
+
+ out += this.renderer.list(body, ordered, start);
+ continue;
+ }
+ case 'html': {
+ // TODO parse inline content if parameter markdown=1
+ out += this.renderer.html(token.text);
+ continue;
+ }
+ case 'paragraph': {
+ out += this.renderer.paragraph(this.parseInline(token.tokens));
+ continue;
+ }
+ case 'text': {
+ body = token.tokens ? this.parseInline(token.tokens) : token.text;
+ while (i + 1 < l && tokens[i + 1].type === 'text') {
+ token = tokens[++i];
+ body += '\n' + (token.tokens ? this.parseInline(token.tokens) : token.text);
+ }
+ out += top ? this.renderer.paragraph(body) : body;
+ continue;
+ }
+
+ default: {
+ const errMsg = 'Token with "' + token.type + '" type was not found.';
+ if (this.options.silent) {
+ console.error(errMsg);
+ return;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+ }
+
+ return out;
+ }
+
+ /**
+ * Parse Inline Tokens
+ */
+ parseInline(tokens, renderer) {
+ renderer = renderer || this.renderer;
+ let out = '',
+ i,
+ token,
+ ret;
+
+ const l = tokens.length;
+ for (i = 0; i < l; i++) {
+ token = tokens[i];
+
+ // Run any renderer extensions
+ if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {
+ ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);
+ if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {
+ out += ret || '';
+ continue;
+ }
+ }
+
+ switch (token.type) {
+ case 'escape': {
+ out += renderer.text(token.text);
+ break;
+ }
+ case 'html': {
+ out += renderer.html(token.text);
+ break;
+ }
+ case 'link': {
+ out += renderer.link(token.href, token.title, this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case 'image': {
+ out += renderer.image(token.href, token.title, token.text);
+ break;
+ }
+ case 'strong': {
+ out += renderer.strong(this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case 'em': {
+ out += renderer.em(this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case 'codespan': {
+ out += renderer.codespan(token.text);
+ break;
+ }
+ case 'br': {
+ out += renderer.br();
+ break;
+ }
+ case 'del': {
+ out += renderer.del(this.parseInline(token.tokens, renderer));
+ break;
+ }
+ case 'text': {
+ out += renderer.text(token.text);
+ break;
+ }
+ default: {
+ const errMsg = 'Token with "' + token.type + '" type was not found.';
+ if (this.options.silent) {
+ console.error(errMsg);
+ return;
+ } else {
+ throw new Error(errMsg);
+ }
+ }
+ }
+ }
+ return out;
+ }
+}
diff --git a/node_modules/marked/src/Renderer.js b/node_modules/marked/src/Renderer.js
new file mode 100644
index 0000000..5fe915d
--- /dev/null
+++ b/node_modules/marked/src/Renderer.js
@@ -0,0 +1,203 @@
+import { defaults } from './defaults.js';
+import {
+ cleanUrl,
+ escape
+} from './helpers.js';
+
+/**
+ * Renderer
+ */
+export class Renderer {
+ constructor(options) {
+ this.options = options || defaults;
+ }
+
+ code(code, infostring, escaped) {
+ const lang = (infostring || '').match(/\S*/)[0];
+ if (this.options.highlight) {
+ const out = this.options.highlight(code, lang);
+ if (out != null && out !== code) {
+ escaped = true;
+ code = out;
+ }
+ }
+
+ code = code.replace(/\n$/, '') + '\n';
+
+ if (!lang) {
+ return '<pre><code>'
+ + (escaped ? code : escape(code, true))
+ + '</code></pre>\n';
+ }
+
+ return '<pre><code class="'
+ + this.options.langPrefix
+ + escape(lang)
+ + '">'
+ + (escaped ? code : escape(code, true))
+ + '</code></pre>\n';
+ }
+
+ /**
+ * @param {string} quote
+ */
+ blockquote(quote) {
+ return `<blockquote>\n${quote}</blockquote>\n`;
+ }
+
+ html(html) {
+ return html;
+ }
+
+ /**
+ * @param {string} text
+ * @param {string} level
+ * @param {string} raw
+ * @param {any} slugger
+ */
+ heading(text, level, raw, slugger) {
+ if (this.options.headerIds) {
+ const id = this.options.headerPrefix + slugger.slug(raw);
+ return `<h${level} id="${id}">${text}</h${level}>\n`;
+ }
+
+ // ignore IDs
+ return `<h${level}>${text}</h${level}>\n`;
+ }
+
+ hr() {
+ return this.options.xhtml ? '<hr/>\n' : '<hr>\n';
+ }
+
+ list(body, ordered, start) {
+ const type = ordered ? 'ol' : 'ul',
+ startatt = (ordered && start !== 1) ? (' start="' + start + '"') : '';
+ return '<' + type + startatt + '>\n' + body + '</' + type + '>\n';
+ }
+
+ /**
+ * @param {string} text
+ */
+ listitem(text) {
+ return `<li>${text}</li>\n`;
+ }
+
+ checkbox(checked) {
+ return '<input '
+ + (checked ? 'checked="" ' : '')
+ + 'disabled="" type="checkbox"'
+ + (this.options.xhtml ? ' /' : '')
+ + '> ';
+ }
+
+ /**
+ * @param {string} text
+ */
+ paragraph(text) {
+ return `<p>${text}</p>\n`;
+ }
+
+ /**
+ * @param {string} header
+ * @param {string} body
+ */
+ table(header, body) {
+ if (body) body = `<tbody>${body}</tbody>`;
+
+ return '<table>\n'
+ + '<thead>\n'
+ + header
+ + '</thead>\n'
+ + body
+ + '</table>\n';
+ }
+
+ /**
+ * @param {string} content
+ */
+ tablerow(content) {
+ return `<tr>\n${content}</tr>\n`;
+ }
+
+ tablecell(content, flags) {
+ const type = flags.header ? 'th' : 'td';
+ const tag = flags.align
+ ? `<${type} align="${flags.align}">`
+ : `<${type}>`;
+ return tag + content + `</${type}>\n`;
+ }
+
+ /**
+ * span level renderer
+ * @param {string} text
+ */
+ strong(text) {
+ return `<strong>${text}</strong>`;
+ }
+
+ /**
+ * @param {string} text
+ */
+ em(text) {
+ return `<em>${text}</em>`;
+ }
+
+ /**
+ * @param {string} text
+ */
+ codespan(text) {
+ return `<code>${text}</code>`;
+ }
+
+ br() {
+ return this.options.xhtml ? '<br/>' : '<br>';
+ }
+
+ /**
+ * @param {string} text
+ */
+ del(text) {
+ return `<del>${text}</del>`;
+ }
+
+ /**
+ * @param {string} href
+ * @param {string} title
+ * @param {string} text
+ */
+ link(href, title, text) {
+ href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
+ if (href === null) {
+ return text;
+ }
+ let out = '<a href="' + href + '"';
+ if (title) {
+ out += ' title="' + title + '"';
+ }
+ out += '>' + text + '</a>';
+ return out;
+ }
+
+ /**
+ * @param {string} href
+ * @param {string} title
+ * @param {string} text
+ */
+ image(href, title, text) {
+ href = cleanUrl(this.options.sanitize, this.options.baseUrl, href);
+ if (href === null) {
+ return text;
+ }
+
+ let out = `<img src="${href}" alt="${text}"`;
+ if (title) {
+ out += ` title="${title}"`;
+ }
+ out += this.options.xhtml ? '/>' : '>';
+ return out;
+ }
+
+ text(text) {
+ return text;
+ }
+}
diff --git a/node_modules/marked/src/Slugger.js b/node_modules/marked/src/Slugger.js
new file mode 100644
index 0000000..a0b68f5
--- /dev/null
+++ b/node_modules/marked/src/Slugger.js
@@ -0,0 +1,55 @@
+/**
+ * Slugger generates header id
+ */
+export class Slugger {
+ constructor() {
+ this.seen = {};
+ }
+
+ /**
+ * @param {string} value
+ */
+ serialize(value) {
+ return value
+ .toLowerCase()
+ .trim()
+ // remove html tags
+ .replace(/<[!\/a-z].*?>/ig, '')
+ // remove unwanted chars
+ .replace(/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,./:;<=>?@[\]^`{|}~]/g, '')
+ .replace(/\s/g, '-');
+ }
+
+ /**
+ * Finds the next safe (unique) slug to use
+ * @param {string} originalSlug
+ * @param {boolean} isDryRun
+ */
+ getNextSafeSlug(originalSlug, isDryRun) {
+ let slug = originalSlug;
+ let occurenceAccumulator = 0;
+ if (this.seen.hasOwnProperty(slug)) {
+ occurenceAccumulator = this.seen[originalSlug];
+ do {
+ occurenceAccumulator++;
+ slug = originalSlug + '-' + occurenceAccumulator;
+ } while (this.seen.hasOwnProperty(slug));
+ }
+ if (!isDryRun) {
+ this.seen[originalSlug] = occurenceAccumulator;
+ this.seen[slug] = 0;
+ }
+ return slug;
+ }
+
+ /**
+ * Convert string to unique id
+ * @param {object} [options]
+ * @param {boolean} [options.dryrun] Generates the next unique slug without
+ * updating the internal accumulator.
+ */
+ slug(value, options = {}) {
+ const slug = this.serialize(value);
+ return this.getNextSafeSlug(slug, options.dryrun);
+ }
+}
diff --git a/node_modules/marked/src/TextRenderer.js b/node_modules/marked/src/TextRenderer.js
new file mode 100644
index 0000000..4d6e08f
--- /dev/null
+++ b/node_modules/marked/src/TextRenderer.js
@@ -0,0 +1,42 @@
+/**
+ * TextRenderer
+ * returns only the textual part of the token
+ */
+export class TextRenderer {
+ // no need for block level renderers
+ strong(text) {
+ return text;
+ }
+
+ em(text) {
+ return text;
+ }
+
+ codespan(text) {
+ return text;
+ }
+
+ del(text) {
+ return text;
+ }
+
+ html(text) {
+ return text;
+ }
+
+ text(text) {
+ return text;
+ }
+
+ link(href, title, text) {
+ return '' + text;
+ }
+
+ image(href, title, text) {
+ return '' + text;
+ }
+
+ br() {
+ return '';
+ }
+}
diff --git a/node_modules/marked/src/Tokenizer.js b/node_modules/marked/src/Tokenizer.js
new file mode 100644
index 0000000..9e2866f
--- /dev/null
+++ b/node_modules/marked/src/Tokenizer.js
@@ -0,0 +1,794 @@
+import { defaults } from './defaults.js';
+import {
+ rtrim,
+ splitCells,
+ escape,
+ findClosingBracket
+} from './helpers.js';
+
+function outputLink(cap, link, raw, lexer) {
+ const href = link.href;
+ const title = link.title ? escape(link.title) : null;
+ const text = cap[1].replace(/\\([\[\]])/g, '$1');
+
+ if (cap[0].charAt(0) !== '!') {
+ lexer.state.inLink = true;
+ const token = {
+ type: 'link',
+ raw,
+ href,
+ title,
+ text,
+ tokens: lexer.inlineTokens(text)
+ };
+ lexer.state.inLink = false;
+ return token;
+ }
+ return {
+ type: 'image',
+ raw,
+ href,
+ title,
+ text: escape(text)
+ };
+}
+
+function indentCodeCompensation(raw, text) {
+ const matchIndentToCode = raw.match(/^(\s+)(?:```)/);
+
+ if (matchIndentToCode === null) {
+ return text;
+ }
+
+ const indentToCode = matchIndentToCode[1];
+
+ return text
+ .split('\n')
+ .map(node => {
+ const matchIndentInNode = node.match(/^\s+/);
+ if (matchIndentInNode === null) {
+ return node;
+ }
+
+ const [indentInNode] = matchIndentInNode;
+
+ if (indentInNode.length >= indentToCode.length) {
+ return node.slice(indentToCode.length);
+ }
+
+ return node;
+ })
+ .join('\n');
+}
+
+/**
+ * Tokenizer
+ */
+export class Tokenizer {
+ constructor(options) {
+ this.options = options || defaults;
+ }
+
+ space(src) {
+ const cap = this.rules.block.newline.exec(src);
+ if (cap && cap[0].length > 0) {
+ return {
+ type: 'space',
+ raw: cap[0]
+ };
+ }
+ }
+
+ code(src) {
+ const cap = this.rules.block.code.exec(src);
+ if (cap) {
+ const text = cap[0].replace(/^ {1,4}/gm, '');
+ return {
+ type: 'code',
+ raw: cap[0],
+ codeBlockStyle: 'indented',
+ text: !this.options.pedantic
+ ? rtrim(text, '\n')
+ : text
+ };
+ }
+ }
+
+ fences(src) {
+ const cap = this.rules.block.fences.exec(src);
+ if (cap) {
+ const raw = cap[0];
+ const text = indentCodeCompensation(raw, cap[3] || '');
+
+ return {
+ type: 'code',
+ raw,
+ lang: cap[2] ? cap[2].trim().replace(this.rules.inline._escapes, '$1') : cap[2],
+ text
+ };
+ }
+ }
+
+ heading(src) {
+ const cap = this.rules.block.heading.exec(src);
+ if (cap) {
+ let text = cap[2].trim();
+
+ // remove trailing #s
+ if (/#$/.test(text)) {
+ const trimmed = rtrim(text, '#');
+ if (this.options.pedantic) {
+ text = trimmed.trim();
+ } else if (!trimmed || / $/.test(trimmed)) {
+ // CommonMark requires space before trailing #s
+ text = trimmed.trim();
+ }
+ }
+
+ return {
+ type: 'heading',
+ raw: cap[0],
+ depth: cap[1].length,
+ text,
+ tokens: this.lexer.inline(text)
+ };
+ }
+ }
+
+ hr(src) {
+ const cap = this.rules.block.hr.exec(src);
+ if (cap) {
+ return {
+ type: 'hr',
+ raw: cap[0]
+ };
+ }
+ }
+
+ blockquote(src) {
+ const cap = this.rules.block.blockquote.exec(src);
+ if (cap) {
+ const text = cap[0].replace(/^ *>[ \t]?/gm, '');
+ const top = this.lexer.state.top;
+ this.lexer.state.top = true;
+ const tokens = this.lexer.blockTokens(text);
+ this.lexer.state.top = top;
+ return {
+ type: 'blockquote',
+ raw: cap[0],
+ tokens,
+ text
+ };
+ }
+ }
+
+ list(src) {
+ let cap = this.rules.block.list.exec(src);
+ if (cap) {
+ let raw, istask, ischecked, indent, i, blankLine, endsWithBlankLine,
+ line, nextLine, rawLine, itemContents, endEarly;
+
+ let bull = cap[1].trim();
+ const isordered = bull.length > 1;
+
+ const list = {
+ type: 'list',
+ raw: '',
+ ordered: isordered,
+ start: isordered ? +bull.slice(0, -1) : '',
+ loose: false,
+ items: []
+ };
+
+ bull = isordered ? `\\d{1,9}\\${bull.slice(-1)}` : `\\${bull}`;
+
+ if (this.options.pedantic) {
+ bull = isordered ? bull : '[*+-]';
+ }
+
+ // Get next list item
+ const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\t ][^\\n]*)?(?:\\n|$))`);
+
+ // Check if current bullet point can start a new List Item
+ while (src) {
+ endEarly = false;
+ if (!(cap = itemRegex.exec(src))) {
+ break;
+ }
+
+ if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)
+ break;
+ }
+
+ raw = cap[0];
+ src = src.substring(raw.length);
+
+ line = cap[2].split('\n', 1)[0].replace(/^\t+/, (t) => ' '.repeat(3 * t.length));
+ nextLine = src.split('\n', 1)[0];
+
+ if (this.options.pedantic) {
+ indent = 2;
+ itemContents = line.trimLeft();
+ } else {
+ indent = cap[2].search(/[^ ]/); // Find first non-space char
+ indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent
+ itemContents = line.slice(indent);
+ indent += cap[1].length;
+ }
+
+ blankLine = false;
+
+ if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line
+ raw += nextLine + '\n';
+ src = src.substring(nextLine.length + 1);
+ endEarly = true;
+ }
+
+ if (!endEarly) {
+ const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ \t][^\\n]*)?(?:\\n|$))`);
+ const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`);
+ const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\`\`\`|~~~)`);
+ const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);
+
+ // Check if following lines should be included in List Item
+ while (src) {
+ rawLine = src.split('\n', 1)[0];
+ nextLine = rawLine;
+
+ // Re-align to follow commonmark nesting rules
+ if (this.options.pedantic) {
+ nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');
+ }
+
+ // End list item if found code fences
+ if (fencesBeginRegex.test(nextLine)) {
+ break;
+ }
+
+ // End list item if found start of new heading
+ if (headingBeginRegex.test(nextLine)) {
+ break;
+ }
+
+ // End list item if found start of new bullet
+ if (nextBulletRegex.test(nextLine)) {
+ break;
+ }
+
+ // Horizontal rule found
+ if (hrRegex.test(src)) {
+ break;
+ }
+
+ if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible
+ itemContents += '\n' + nextLine.slice(indent);
+ } else {
+ // not enough indentation
+ if (blankLine) {
+ break;
+ }
+
+ // paragraph continuation unless last line was a different block level element
+ if (line.search(/[^ ]/) >= 4) { // indented code block
+ break;
+ }
+ if (fencesBeginRegex.test(line)) {
+ break;
+ }
+ if (headingBeginRegex.test(line)) {
+ break;
+ }
+ if (hrRegex.test(line)) {
+ break;
+ }
+
+ itemContents += '\n' + nextLine;
+ }
+
+ if (!blankLine && !nextLine.trim()) { // Check if current line is blank
+ blankLine = true;
+ }
+
+ raw += rawLine + '\n';
+ src = src.substring(rawLine.length + 1);
+ line = nextLine.slice(indent);
+ }
+ }
+
+ if (!list.loose) {
+ // If the previous item ended with a blank line, the list is loose
+ if (endsWithBlankLine) {
+ list.loose = true;
+ } else if (/\n *\n *$/.test(raw)) {
+ endsWithBlankLine = true;
+ }
+ }
+
+ // Check for task list items
+ if (this.options.gfm) {
+ istask = /^\[[ xX]\] /.exec(itemContents);
+ if (istask) {
+ ischecked = istask[0] !== '[ ] ';
+ itemContents = itemContents.replace(/^\[[ xX]\] +/, '');
+ }
+ }
+
+ list.items.push({
+ type: 'list_item',
+ raw,
+ task: !!istask,
+ checked: ischecked,
+ loose: false,
+ text: itemContents
+ });
+
+ list.raw += raw;
+ }
+
+ // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic
+ list.items[list.items.length - 1].raw = raw.trimRight();
+ list.items[list.items.length - 1].text = itemContents.trimRight();
+ list.raw = list.raw.trimRight();
+
+ const l = list.items.length;
+
+ // Item child tokens handled here at end because we needed to have the final item to trim it first
+ for (i = 0; i < l; i++) {
+ this.lexer.state.top = false;
+ list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);
+
+ if (!list.loose) {
+ // Check if list should be loose
+ const spacers = list.items[i].tokens.filter(t => t.type === 'space');
+ const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\n.*\n/.test(t.raw));
+
+ list.loose = hasMultipleLineBreaks;
+ }
+ }
+
+ // Set all items to loose if list is loose
+ if (list.loose) {
+ for (i = 0; i < l; i++) {
+ list.items[i].loose = true;
+ }
+ }
+
+ return list;
+ }
+ }
+
+ html(src) {
+ const cap = this.rules.block.html.exec(src);
+ if (cap) {
+ const token = {
+ type: 'html',
+ raw: cap[0],
+ pre: !this.options.sanitizer
+ && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
+ text: cap[0]
+ };
+ if (this.options.sanitize) {
+ const text = this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]);
+ token.type = 'paragraph';
+ token.text = text;
+ token.tokens = this.lexer.inline(text);
+ }
+ return token;
+ }
+ }
+
+ def(src) {
+ const cap = this.rules.block.def.exec(src);
+ if (cap) {
+ const tag = cap[1].toLowerCase().replace(/\s+/g, ' ');
+ const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline._escapes, '$1') : '';
+ const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline._escapes, '$1') : cap[3];
+ return {
+ type: 'def',
+ tag,
+ raw: cap[0],
+ href,
+ title
+ };
+ }
+ }
+
+ table(src) {
+ const cap = this.rules.block.table.exec(src);
+ if (cap) {
+ const item = {
+ type: 'table',
+ header: splitCells(cap[1]).map(c => { return { text: c }; }),
+ align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
+ rows: cap[3] && cap[3].trim() ? cap[3].replace(/\n[ \t]*$/, '').split('\n') : []
+ };
+
+ if (item.header.length === item.align.length) {
+ item.raw = cap[0];
+
+ let l = item.align.length;
+ let i, j, k, row;
+ for (i = 0; i < l; i++) {
+ if (/^ *-+: *$/.test(item.align[i])) {
+ item.align[i] = 'right';
+ } else if (/^ *:-+: *$/.test(item.align[i])) {
+ item.align[i] = 'center';
+ } else if (/^ *:-+ *$/.test(item.align[i])) {
+ item.align[i] = 'left';
+ } else {
+ item.align[i] = null;
+ }
+ }
+
+ l = item.rows.length;
+ for (i = 0; i < l; i++) {
+ item.rows[i] = splitCells(item.rows[i], item.header.length).map(c => { return { text: c }; });
+ }
+
+ // parse child tokens inside headers and cells
+
+ // header child tokens
+ l = item.header.length;
+ for (j = 0; j < l; j++) {
+ item.header[j].tokens = this.lexer.inline(item.header[j].text);
+ }
+
+ // cell child tokens
+ l = item.rows.length;
+ for (j = 0; j < l; j++) {
+ row = item.rows[j];
+ for (k = 0; k < row.length; k++) {
+ row[k].tokens = this.lexer.inline(row[k].text);
+ }
+ }
+
+ return item;
+ }
+ }
+ }
+
+ lheading(src) {
+ const cap = this.rules.block.lheading.exec(src);
+ if (cap) {
+ return {
+ type: 'heading',
+ raw: cap[0],
+ depth: cap[2].charAt(0) === '=' ? 1 : 2,
+ text: cap[1],
+ tokens: this.lexer.inline(cap[1])
+ };
+ }
+ }
+
+ paragraph(src) {
+ const cap = this.rules.block.paragraph.exec(src);
+ if (cap) {
+ const text = cap[1].charAt(cap[1].length - 1) === '\n'
+ ? cap[1].slice(0, -1)
+ : cap[1];
+ return {
+ type: 'paragraph',
+ raw: cap[0],
+ text,
+ tokens: this.lexer.inline(text)
+ };
+ }
+ }
+
+ text(src) {
+ const cap = this.rules.block.text.exec(src);
+ if (cap) {
+ return {
+ type: 'text',
+ raw: cap[0],
+ text: cap[0],
+ tokens: this.lexer.inline(cap[0])
+ };
+ }
+ }
+
+ escape(src) {
+ const cap = this.rules.inline.escape.exec(src);
+ if (cap) {
+ return {
+ type: 'escape',
+ raw: cap[0],
+ text: escape(cap[1])
+ };
+ }
+ }
+
+ tag(src) {
+ const cap = this.rules.inline.tag.exec(src);
+ if (cap) {
+ if (!this.lexer.state.inLink && /^<a /i.test(cap[0])) {
+ this.lexer.state.inLink = true;
+ } else if (this.lexer.state.inLink && /^<\/a>/i.test(cap[0])) {
+ this.lexer.state.inLink = false;
+ }
+ if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
+ this.lexer.state.inRawBlock = true;
+ } else if (this.lexer.state.inRawBlock && /^<\/(pre|code|kbd|script)(\s|>)/i.test(cap[0])) {
+ this.lexer.state.inRawBlock = false;
+ }
+
+ return {
+ type: this.options.sanitize
+ ? 'text'
+ : 'html',
+ raw: cap[0],
+ inLink: this.lexer.state.inLink,
+ inRawBlock: this.lexer.state.inRawBlock,
+ text: this.options.sanitize
+ ? (this.options.sanitizer
+ ? this.options.sanitizer(cap[0])
+ : escape(cap[0]))
+ : cap[0]
+ };
+ }
+ }
+
+ link(src) {
+ const cap = this.rules.inline.link.exec(src);
+ if (cap) {
+ const trimmedUrl = cap[2].trim();
+ if (!this.options.pedantic && /^</.test(trimmedUrl)) {
+ // commonmark requires matching angle brackets
+ if (!(/>$/.test(trimmedUrl))) {
+ return;
+ }
+
+ // ending angle bracket cannot be escaped
+ const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\');
+ if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {
+ return;
+ }
+ } else {
+ // find closing parenthesis
+ const lastParenIndex = findClosingBracket(cap[2], '()');
+ if (lastParenIndex > -1) {
+ const start = cap[0].indexOf('!') === 0 ? 5 : 4;
+ const linkLen = start + cap[1].length + lastParenIndex;
+ cap[2] = cap[2].substring(0, lastParenIndex);
+ cap[0] = cap[0].substring(0, linkLen).trim();
+ cap[3] = '';
+ }
+ }
+ let href = cap[2];
+ let title = '';
+ if (this.options.pedantic) {
+ // split pedantic href and title
+ const link = /^([^'"]*[^\s])\s+(['"])(.*)\2/.exec(href);
+
+ if (link) {
+ href = link[1];
+ title = link[3];
+ }
+ } else {
+ title = cap[3] ? cap[3].slice(1, -1) : '';
+ }
+
+ href = href.trim();
+ if (/^</.test(href)) {
+ if (this.options.pedantic && !(/>$/.test(trimmedUrl))) {
+ // pedantic allows starting angle bracket without ending angle bracket
+ href = href.slice(1);
+ } else {
+ href = href.slice(1, -1);
+ }
+ }
+ return outputLink(cap, {
+ href: href ? href.replace(this.rules.inline._escapes, '$1') : href,
+ title: title ? title.replace(this.rules.inline._escapes, '$1') : title
+ }, cap[0], this.lexer);
+ }
+ }
+
+ reflink(src, links) {
+ let cap;
+ if ((cap = this.rules.inline.reflink.exec(src))
+ || (cap = this.rules.inline.nolink.exec(src))) {
+ let link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
+ link = links[link.toLowerCase()];
+ if (!link) {
+ const text = cap[0].charAt(0);
+ return {
+ type: 'text',
+ raw: text,
+ text
+ };
+ }
+ return outputLink(cap, link, cap[0], this.lexer);
+ }
+ }
+
+ emStrong(src, maskedSrc, prevChar = '') {
+ let match = this.rules.inline.emStrong.lDelim.exec(src);
+ if (!match) return;
+
+ // _ can't be between two alphanumerics. \p{L}\p{N} includes non-english alphabet/numbers as well
+ if (match[3] && prevChar.match(/[\p{L}\p{N}]/u)) return;
+
+ const nextChar = match[1] || match[2] || '';
+
+ if (!nextChar || (nextChar && (prevChar === '' || this.rules.inline.punctuation.exec(prevChar)))) {
+ const lLength = match[0].length - 1;
+ let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;
+
+ const endReg = match[0][0] === '*' ? this.rules.inline.emStrong.rDelimAst : this.rules.inline.emStrong.rDelimUnd;
+ endReg.lastIndex = 0;
+
+ // Clip maskedSrc to same section of string as src (move to lexer?)
+ maskedSrc = maskedSrc.slice(-1 * src.length + lLength);
+
+ while ((match = endReg.exec(maskedSrc)) != null) {
+ rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];
+
+ if (!rDelim) continue; // skip single * in __abc*abc__
+
+ rLength = rDelim.length;
+
+ if (match[3] || match[4]) { // found another Left Delim
+ delimTotal += rLength;
+ continue;
+ } else if (match[5] || match[6]) { // either Left or Right Delim
+ if (lLength % 3 && !((lLength + rLength) % 3)) {
+ midDelimTotal += rLength;
+ continue; // CommonMark Emphasis Rules 9-10
+ }
+ }
+
+ delimTotal -= rLength;
+
+ if (delimTotal > 0) continue; // Haven't found enough closing delimiters
+
+ // Remove extra characters. *a*** -> *a*
+ rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);
+
+ const raw = src.slice(0, lLength + match.index + (match[0].length - rDelim.length) + rLength);
+
+ // Create `em` if smallest delimiter has odd char count. *a***
+ if (Math.min(lLength, rLength) % 2) {
+ const text = raw.slice(1, -1);
+ return {
+ type: 'em',
+ raw,
+ text,
+ tokens: this.lexer.inlineTokens(text)
+ };
+ }
+
+ // Create 'strong' if smallest delimiter has even char count. **a***
+ const text = raw.slice(2, -2);
+ return {
+ type: 'strong',
+ raw,
+ text,
+ tokens: this.lexer.inlineTokens(text)
+ };
+ }
+ }
+ }
+
+ codespan(src) {
+ const cap = this.rules.inline.code.exec(src);
+ if (cap) {
+ let text = cap[2].replace(/\n/g, ' ');
+ const hasNonSpaceChars = /[^ ]/.test(text);
+ const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);
+ if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {
+ text = text.substring(1, text.length - 1);
+ }
+ text = escape(text, true);
+ return {
+ type: 'codespan',
+ raw: cap[0],
+ text
+ };
+ }
+ }
+
+ br(src) {
+ const cap = this.rules.inline.br.exec(src);
+ if (cap) {
+ return {
+ type: 'br',
+ raw: cap[0]
+ };
+ }
+ }
+
+ del(src) {
+ const cap = this.rules.inline.del.exec(src);
+ if (cap) {
+ return {
+ type: 'del',
+ raw: cap[0],
+ text: cap[2],
+ tokens: this.lexer.inlineTokens(cap[2])
+ };
+ }
+ }
+
+ autolink(src, mangle) {
+ const cap = this.rules.inline.autolink.exec(src);
+ if (cap) {
+ let text, href;
+ if (cap[2] === '@') {
+ text = escape(this.options.mangle ? mangle(cap[1]) : cap[1]);
+ href = 'mailto:' + text;
+ } else {
+ text = escape(cap[1]);
+ href = text;
+ }
+
+ return {
+ type: 'link',
+ raw: cap[0],
+ text,
+ href,
+ tokens: [
+ {
+ type: 'text',
+ raw: text,
+ text
+ }
+ ]
+ };
+ }
+ }
+
+ url(src, mangle) {
+ let cap;
+ if (cap = this.rules.inline.url.exec(src)) {
+ let text, href;
+ if (cap[2] === '@') {
+ text = escape(this.options.mangle ? mangle(cap[0]) : cap[0]);
+ href = 'mailto:' + text;
+ } else {
+ // do extended autolink path validation
+ let prevCapZero;
+ do {
+ prevCapZero = cap[0];
+ cap[0] = this.rules.inline._backpedal.exec(cap[0])[0];
+ } while (prevCapZero !== cap[0]);
+ text = escape(cap[0]);
+ if (cap[1] === 'www.') {
+ href = 'http://' + cap[0];
+ } else {
+ href = cap[0];
+ }
+ }
+ return {
+ type: 'link',
+ raw: cap[0],
+ text,
+ href,
+ tokens: [
+ {
+ type: 'text',
+ raw: text,
+ text
+ }
+ ]
+ };
+ }
+ }
+
+ inlineText(src, smartypants) {
+ const cap = this.rules.inline.text.exec(src);
+ if (cap) {
+ let text;
+ if (this.lexer.state.inRawBlock) {
+ text = this.options.sanitize ? (this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0])) : cap[0];
+ } else {
+ text = escape(this.options.smartypants ? smartypants(cap[0]) : cap[0]);
+ }
+ return {
+ type: 'text',
+ raw: cap[0],
+ text
+ };
+ }
+ }
+}
diff --git a/node_modules/marked/src/defaults.js b/node_modules/marked/src/defaults.js
new file mode 100644
index 0000000..bce0ea4
--- /dev/null
+++ b/node_modules/marked/src/defaults.js
@@ -0,0 +1,30 @@
+export function getDefaults() {
+ return {
+ async: false,
+ baseUrl: null,
+ breaks: false,
+ extensions: null,
+ gfm: true,
+ headerIds: true,
+ headerPrefix: '',
+ highlight: null,
+ hooks: null,
+ langPrefix: 'language-',
+ mangle: true,
+ pedantic: false,
+ renderer: null,
+ sanitize: false,
+ sanitizer: null,
+ silent: false,
+ smartypants: false,
+ tokenizer: null,
+ walkTokens: null,
+ xhtml: false
+ };
+}
+
+export let defaults = getDefaults();
+
+export function changeDefaults(newDefaults) {
+ defaults = newDefaults;
+}
diff --git a/node_modules/marked/src/helpers.js b/node_modules/marked/src/helpers.js
new file mode 100644
index 0000000..df7b0bb
--- /dev/null
+++ b/node_modules/marked/src/helpers.js
@@ -0,0 +1,259 @@
+/**
+ * Helpers
+ */
+const escapeTest = /[&<>"']/;
+const escapeReplace = new RegExp(escapeTest.source, 'g');
+const escapeTestNoEncode = /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/;
+const escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');
+const escapeReplacements = {
+ '&': '&amp;',
+ '<': '&lt;',
+ '>': '&gt;',
+ '"': '&quot;',
+ "'": '&#39;'
+};
+const getEscapeReplacement = (ch) => escapeReplacements[ch];
+export function escape(html, encode) {
+ if (encode) {
+ if (escapeTest.test(html)) {
+ return html.replace(escapeReplace, getEscapeReplacement);
+ }
+ } else {
+ if (escapeTestNoEncode.test(html)) {
+ return html.replace(escapeReplaceNoEncode, getEscapeReplacement);
+ }
+ }
+
+ return html;
+}
+
+const unescapeTest = /&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig;
+
+/**
+ * @param {string} html
+ */
+export function unescape(html) {
+ // explicitly match decimal, hex, and named HTML entities
+ return html.replace(unescapeTest, (_, n) => {
+ n = n.toLowerCase();
+ if (n === 'colon') return ':';
+ if (n.charAt(0) === '#') {
+ return n.charAt(1) === 'x'
+ ? String.fromCharCode(parseInt(n.substring(2), 16))
+ : String.fromCharCode(+n.substring(1));
+ }
+ return '';
+ });
+}
+
+const caret = /(^|[^\[])\^/g;
+
+/**
+ * @param {string | RegExp} regex
+ * @param {string} opt
+ */
+export function edit(regex, opt) {
+ regex = typeof regex === 'string' ? regex : regex.source;
+ opt = opt || '';
+ const obj = {
+ replace: (name, val) => {
+ val = val.source || val;
+ val = val.replace(caret, '$1');
+ regex = regex.replace(name, val);
+ return obj;
+ },
+ getRegex: () => {
+ return new RegExp(regex, opt);
+ }
+ };
+ return obj;
+}
+
+const nonWordAndColonTest = /[^\w:]/g;
+const originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;
+
+/**
+ * @param {boolean} sanitize
+ * @param {string} base
+ * @param {string} href
+ */
+export function cleanUrl(sanitize, base, href) {
+ if (sanitize) {
+ let prot;
+ try {
+ prot = decodeURIComponent(unescape(href))
+ .replace(nonWordAndColonTest, '')
+ .toLowerCase();
+ } catch (e) {
+ return null;
+ }
+ if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {
+ return null;
+ }
+ }
+ if (base && !originIndependentUrl.test(href)) {
+ href = resolveUrl(base, href);
+ }
+ try {
+ href = encodeURI(href).replace(/%25/g, '%');
+ } catch (e) {
+ return null;
+ }
+ return href;
+}
+
+const baseUrls = {};
+const justDomain = /^[^:]+:\/*[^/]*$/;
+const protocol = /^([^:]+:)[\s\S]*$/;
+const domain = /^([^:]+:\/*[^/]*)[\s\S]*$/;
+
+/**
+ * @param {string} base
+ * @param {string} href
+ */
+export function resolveUrl(base, href) {
+ if (!baseUrls[' ' + base]) {
+ // we can ignore everything in base after the last slash of its path component,
+ // but we might need to add _that_
+ // https://tools.ietf.org/html/rfc3986#section-3
+ if (justDomain.test(base)) {
+ baseUrls[' ' + base] = base + '/';
+ } else {
+ baseUrls[' ' + base] = rtrim(base, '/', true);
+ }
+ }
+ base = baseUrls[' ' + base];
+ const relativeBase = base.indexOf(':') === -1;
+
+ if (href.substring(0, 2) === '//') {
+ if (relativeBase) {
+ return href;
+ }
+ return base.replace(protocol, '$1') + href;
+ } else if (href.charAt(0) === '/') {
+ if (relativeBase) {
+ return href;
+ }
+ return base.replace(domain, '$1') + href;
+ } else {
+ return base + href;
+ }
+}
+
+export const noopTest = { exec: function noopTest() {} };
+
+export function splitCells(tableRow, count) {
+ // ensure that every cell-delimiting pipe has a space
+ // before it to distinguish it from an escaped pipe
+ const row = tableRow.replace(/\|/g, (match, offset, str) => {
+ let escaped = false,
+ curr = offset;
+ while (--curr >= 0 && str[curr] === '\\') escaped = !escaped;
+ if (escaped) {
+ // odd number of slashes means | is escaped
+ // so we leave it alone
+ return '|';
+ } else {
+ // add space before unescaped |
+ return ' |';
+ }
+ }),
+ cells = row.split(/ \|/);
+ let i = 0;
+
+ // First/last cell in a row cannot be empty if it has no leading/trailing pipe
+ if (!cells[0].trim()) { cells.shift(); }
+ if (cells.length > 0 && !cells[cells.length - 1].trim()) { cells.pop(); }
+
+ if (cells.length > count) {
+ cells.splice(count);
+ } else {
+ while (cells.length < count) cells.push('');
+ }
+
+ for (; i < cells.length; i++) {
+ // leading or trailing whitespace is ignored per the gfm spec
+ cells[i] = cells[i].trim().replace(/\\\|/g, '|');
+ }
+ return cells;
+}
+
+/**
+ * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').
+ * /c*$/ is vulnerable to REDOS.
+ *
+ * @param {string} str
+ * @param {string} c
+ * @param {boolean} invert Remove suffix of non-c chars instead. Default falsey.
+ */
+export function rtrim(str, c, invert) {
+ const l = str.length;
+ if (l === 0) {
+ return '';
+ }
+
+ // Length of suffix matching the invert condition.
+ let suffLen = 0;
+
+ // Step left until we fail to match the invert condition.
+ while (suffLen < l) {
+ const currChar = str.charAt(l - suffLen - 1);
+ if (currChar === c && !invert) {
+ suffLen++;
+ } else if (currChar !== c && invert) {
+ suffLen++;
+ } else {
+ break;
+ }
+ }
+
+ return str.slice(0, l - suffLen);
+}
+
+export function findClosingBracket(str, b) {
+ if (str.indexOf(b[1]) === -1) {
+ return -1;
+ }
+ const l = str.length;
+ let level = 0,
+ i = 0;
+ for (; i < l; i++) {
+ if (str[i] === '\\') {
+ i++;
+ } else if (str[i] === b[0]) {
+ level++;
+ } else if (str[i] === b[1]) {
+ level--;
+ if (level < 0) {
+ return i;
+ }
+ }
+ }
+ return -1;
+}
+
+export function checkSanitizeDeprecation(opt) {
+ if (opt && opt.sanitize && !opt.silent) {
+ console.warn('marked(): sanitize and sanitizer parameters are deprecated since version 0.7.0, should not be used and will be removed in the future. Read more here: https://marked.js.org/#/USING_ADVANCED.md#options');
+ }
+}
+
+// copied from https://stackoverflow.com/a/5450113/806777
+/**
+ * @param {string} pattern
+ * @param {number} count
+ */
+export function repeatString(pattern, count) {
+ if (count < 1) {
+ return '';
+ }
+ let result = '';
+ while (count > 1) {
+ if (count & 1) {
+ result += pattern;
+ }
+ count >>= 1;
+ pattern += pattern;
+ }
+ return result + pattern;
+}
diff --git a/node_modules/marked/src/marked.js b/node_modules/marked/src/marked.js
new file mode 100644
index 0000000..36ec040
--- /dev/null
+++ b/node_modules/marked/src/marked.js
@@ -0,0 +1,416 @@
+import { Lexer } from './Lexer.js';
+import { Parser } from './Parser.js';
+import { Tokenizer } from './Tokenizer.js';
+import { Renderer } from './Renderer.js';
+import { TextRenderer } from './TextRenderer.js';
+import { Slugger } from './Slugger.js';
+import { Hooks } from './Hooks.js';
+import {
+ checkSanitizeDeprecation,
+ escape
+} from './helpers.js';
+import {
+ getDefaults,
+ changeDefaults,
+ defaults
+} from './defaults.js';
+
+function onError(silent, async, callback) {
+ return (e) => {
+ e.message += '\nPlease report this to https://github.com/markedjs/marked.';
+
+ if (silent) {
+ const msg = '<p>An error occurred:</p><pre>'
+ + escape(e.message + '', true)
+ + '</pre>';
+ if (async) {
+ return Promise.resolve(msg);
+ }
+ if (callback) {
+ callback(null, msg);
+ return;
+ }
+ return msg;
+ }
+
+ if (async) {
+ return Promise.reject(e);
+ }
+ if (callback) {
+ callback(e);
+ return;
+ }
+ throw e;
+ };
+}
+
+function parseMarkdown(lexer, parser) {
+ return (src, opt, callback) => {
+ if (typeof opt === 'function') {
+ callback = opt;
+ opt = null;
+ }
+
+ const origOpt = { ...opt };
+ opt = { ...marked.defaults, ...origOpt };
+ const throwError = onError(opt.silent, opt.async, callback);
+
+ // throw error in case of non string input
+ if (typeof src === 'undefined' || src === null) {
+ return throwError(new Error('marked(): input parameter is undefined or null'));
+ }
+ if (typeof src !== 'string') {
+ return throwError(new Error('marked(): input parameter is of type '
+ + Object.prototype.toString.call(src) + ', string expected'));
+ }
+
+ checkSanitizeDeprecation(opt);
+
+ if (opt.hooks) {
+ opt.hooks.options = opt;
+ }
+
+ if (callback) {
+ const highlight = opt.highlight;
+ let tokens;
+
+ try {
+ if (opt.hooks) {
+ src = opt.hooks.preprocess(src);
+ }
+ tokens = lexer(src, opt);
+ } catch (e) {
+ return throwError(e);
+ }
+
+ const done = function(err) {
+ let out;
+
+ if (!err) {
+ try {
+ if (opt.walkTokens) {
+ marked.walkTokens(tokens, opt.walkTokens);
+ }
+ out = parser(tokens, opt);
+ if (opt.hooks) {
+ out = opt.hooks.postprocess(out);
+ }
+ } catch (e) {
+ err = e;
+ }
+ }
+
+ opt.highlight = highlight;
+
+ return err
+ ? throwError(err)
+ : callback(null, out);
+ };
+
+ if (!highlight || highlight.length < 3) {
+ return done();
+ }
+
+ delete opt.highlight;
+
+ if (!tokens.length) return done();
+
+ let pending = 0;
+ marked.walkTokens(tokens, function(token) {
+ if (token.type === 'code') {
+ pending++;
+ setTimeout(() => {
+ highlight(token.text, token.lang, function(err, code) {
+ if (err) {
+ return done(err);
+ }
+ if (code != null && code !== token.text) {
+ token.text = code;
+ token.escaped = true;
+ }
+
+ pending--;
+ if (pending === 0) {
+ done();
+ }
+ });
+ }, 0);
+ }
+ });
+
+ if (pending === 0) {
+ done();
+ }
+
+ return;
+ }
+
+ if (opt.async) {
+ return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)
+ .then(src => lexer(src, opt))
+ .then(tokens => opt.walkTokens ? Promise.all(marked.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)
+ .then(tokens => parser(tokens, opt))
+ .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)
+ .catch(throwError);
+ }
+
+ try {
+ if (opt.hooks) {
+ src = opt.hooks.preprocess(src);
+ }
+ const tokens = lexer(src, opt);
+ if (opt.walkTokens) {
+ marked.walkTokens(tokens, opt.walkTokens);
+ }
+ let html = parser(tokens, opt);
+ if (opt.hooks) {
+ html = opt.hooks.postprocess(html);
+ }
+ return html;
+ } catch (e) {
+ return throwError(e);
+ }
+ };
+}
+
+/**
+ * Marked
+ */
+export function marked(src, opt, callback) {
+ return parseMarkdown(Lexer.lex, Parser.parse)(src, opt, callback);
+}
+
+/**
+ * Options
+ */
+
+marked.options =
+marked.setOptions = function(opt) {
+ marked.defaults = { ...marked.defaults, ...opt };
+ changeDefaults(marked.defaults);
+ return marked;
+};
+
+marked.getDefaults = getDefaults;
+
+marked.defaults = defaults;
+
+/**
+ * Use Extension
+ */
+
+marked.use = function(...args) {
+ const extensions = marked.defaults.extensions || { renderers: {}, childTokens: {} };
+
+ args.forEach((pack) => {
+ // copy options to new object
+ const opts = { ...pack };
+
+ // set async to true if it was set to true before
+ opts.async = marked.defaults.async || opts.async || false;
+
+ // ==-- Parse "addon" extensions --== //
+ if (pack.extensions) {
+ pack.extensions.forEach((ext) => {
+ if (!ext.name) {
+ throw new Error('extension name required');
+ }
+ if (ext.renderer) { // Renderer extensions
+ const prevRenderer = extensions.renderers[ext.name];
+ if (prevRenderer) {
+ // Replace extension with func to run new extension but fall back if false
+ extensions.renderers[ext.name] = function(...args) {
+ let ret = ext.renderer.apply(this, args);
+ if (ret === false) {
+ ret = prevRenderer.apply(this, args);
+ }
+ return ret;
+ };
+ } else {
+ extensions.renderers[ext.name] = ext.renderer;
+ }
+ }
+ if (ext.tokenizer) { // Tokenizer Extensions
+ if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {
+ throw new Error("extension level must be 'block' or 'inline'");
+ }
+ if (extensions[ext.level]) {
+ extensions[ext.level].unshift(ext.tokenizer);
+ } else {
+ extensions[ext.level] = [ext.tokenizer];
+ }
+ if (ext.start) { // Function to check for start of token
+ if (ext.level === 'block') {
+ if (extensions.startBlock) {
+ extensions.startBlock.push(ext.start);
+ } else {
+ extensions.startBlock = [ext.start];
+ }
+ } else if (ext.level === 'inline') {
+ if (extensions.startInline) {
+ extensions.startInline.push(ext.start);
+ } else {
+ extensions.startInline = [ext.start];
+ }
+ }
+ }
+ }
+ if (ext.childTokens) { // Child tokens to be visited by walkTokens
+ extensions.childTokens[ext.name] = ext.childTokens;
+ }
+ });
+ opts.extensions = extensions;
+ }
+
+ // ==-- Parse "overwrite" extensions --== //
+ if (pack.renderer) {
+ const renderer = marked.defaults.renderer || new Renderer();
+ for (const prop in pack.renderer) {
+ const prevRenderer = renderer[prop];
+ // Replace renderer with func to run extension, but fall back if false
+ renderer[prop] = (...args) => {
+ let ret = pack.renderer[prop].apply(renderer, args);
+ if (ret === false) {
+ ret = prevRenderer.apply(renderer, args);
+ }
+ return ret;
+ };
+ }
+ opts.renderer = renderer;
+ }
+ if (pack.tokenizer) {
+ const tokenizer = marked.defaults.tokenizer || new Tokenizer();
+ for (const prop in pack.tokenizer) {
+ const prevTokenizer = tokenizer[prop];
+ // Replace tokenizer with func to run extension, but fall back if false
+ tokenizer[prop] = (...args) => {
+ let ret = pack.tokenizer[prop].apply(tokenizer, args);
+ if (ret === false) {
+ ret = prevTokenizer.apply(tokenizer, args);
+ }
+ return ret;
+ };
+ }
+ opts.tokenizer = tokenizer;
+ }
+
+ // ==-- Parse Hooks extensions --== //
+ if (pack.hooks) {
+ const hooks = marked.defaults.hooks || new Hooks();
+ for (const prop in pack.hooks) {
+ const prevHook = hooks[prop];
+ if (Hooks.passThroughHooks.has(prop)) {
+ hooks[prop] = (arg) => {
+ if (marked.defaults.async) {
+ return Promise.resolve(pack.hooks[prop].call(hooks, arg)).then(ret => {
+ return prevHook.call(hooks, ret);
+ });
+ }
+
+ const ret = pack.hooks[prop].call(hooks, arg);
+ return prevHook.call(hooks, ret);
+ };
+ } else {
+ hooks[prop] = (...args) => {
+ let ret = pack.hooks[prop].apply(hooks, args);
+ if (ret === false) {
+ ret = prevHook.apply(hooks, args);
+ }
+ return ret;
+ };
+ }
+ }
+ opts.hooks = hooks;
+ }
+
+ // ==-- Parse WalkTokens extensions --== //
+ if (pack.walkTokens) {
+ const walkTokens = marked.defaults.walkTokens;
+ opts.walkTokens = function(token) {
+ let values = [];
+ values.push(pack.walkTokens.call(this, token));
+ if (walkTokens) {
+ values = values.concat(walkTokens.call(this, token));
+ }
+ return values;
+ };
+ }
+
+ marked.setOptions(opts);
+ });
+};
+
+/**
+ * Run callback for every token
+ */
+
+marked.walkTokens = function(tokens, callback) {
+ let values = [];
+ for (const token of tokens) {
+ values = values.concat(callback.call(marked, token));
+ switch (token.type) {
+ case 'table': {
+ for (const cell of token.header) {
+ values = values.concat(marked.walkTokens(cell.tokens, callback));
+ }
+ for (const row of token.rows) {
+ for (const cell of row) {
+ values = values.concat(marked.walkTokens(cell.tokens, callback));
+ }
+ }
+ break;
+ }
+ case 'list': {
+ values = values.concat(marked.walkTokens(token.items, callback));
+ break;
+ }
+ default: {
+ if (marked.defaults.extensions && marked.defaults.extensions.childTokens && marked.defaults.extensions.childTokens[token.type]) { // Walk any extensions
+ marked.defaults.extensions.childTokens[token.type].forEach(function(childTokens) {
+ values = values.concat(marked.walkTokens(token[childTokens], callback));
+ });
+ } else if (token.tokens) {
+ values = values.concat(marked.walkTokens(token.tokens, callback));
+ }
+ }
+ }
+ }
+ return values;
+};
+
+/**
+ * Parse Inline
+ * @param {string} src
+ */
+marked.parseInline = parseMarkdown(Lexer.lexInline, Parser.parseInline);
+
+/**
+ * Expose
+ */
+marked.Parser = Parser;
+marked.parser = Parser.parse;
+marked.Renderer = Renderer;
+marked.TextRenderer = TextRenderer;
+marked.Lexer = Lexer;
+marked.lexer = Lexer.lex;
+marked.Tokenizer = Tokenizer;
+marked.Slugger = Slugger;
+marked.Hooks = Hooks;
+marked.parse = marked;
+
+export const options = marked.options;
+export const setOptions = marked.setOptions;
+export const use = marked.use;
+export const walkTokens = marked.walkTokens;
+export const parseInline = marked.parseInline;
+export const parse = marked;
+export const parser = Parser.parse;
+export const lexer = Lexer.lex;
+export { defaults, getDefaults } from './defaults.js';
+export { Lexer } from './Lexer.js';
+export { Parser } from './Parser.js';
+export { Tokenizer } from './Tokenizer.js';
+export { Renderer } from './Renderer.js';
+export { TextRenderer } from './TextRenderer.js';
+export { Slugger } from './Slugger.js';
+export { Hooks } from './Hooks.js';
diff --git a/node_modules/marked/src/rules.js b/node_modules/marked/src/rules.js
new file mode 100644
index 0000000..322825b
--- /dev/null
+++ b/node_modules/marked/src/rules.js
@@ -0,0 +1,309 @@
+import {
+ noopTest,
+ edit
+} from './helpers.js';
+
+/**
+ * Block-Level Grammar
+ */
+export const block = {
+ newline: /^(?: *(?:\n|$))+/,
+ code: /^( {4}[^\n]+(?:\n(?: *(?:\n|$))*)?)+/,
+ fences: /^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,
+ hr: /^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,
+ heading: /^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,
+ blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/,
+ list: /^( {0,3}bull)([ \t][^\n]+?)?(?:\n|$)/,
+ html: '^ {0,3}(?:' // optional indentation
+ + '<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)' // (1)
+ + '|comment[^\\n]*(\\n+|$)' // (2)
+ + '|<\\?[\\s\\S]*?(?:\\?>\\n*|$)' // (3)
+ + '|<![A-Z][\\s\\S]*?(?:>\\n*|$)' // (4)
+ + '|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)' // (5)
+ + '|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (6)
+ + '|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) open tag
+ + '|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n *)+\\n|$)' // (7) closing tag
+ + ')',
+ def: /^ {0,3}\[(label)\]: *(?:\n *)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n *)?| *\n *)(title))? *(?:\n+|$)/,
+ table: noopTest,
+ lheading: /^((?:.|\n(?!\n))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,
+ // regex template, placeholders will be replaced according to different paragraph
+ // interruption rules of commonmark and the original markdown spec:
+ _paragraph: /^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,
+ text: /^[^\n]+/
+};
+
+block._label = /(?!\s*\])(?:\\.|[^\[\]\\])+/;
+block._title = /(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/;
+block.def = edit(block.def)
+ .replace('label', block._label)
+ .replace('title', block._title)
+ .getRegex();
+
+block.bullet = /(?:[*+-]|\d{1,9}[.)])/;
+block.listItemStart = edit(/^( *)(bull) */)
+ .replace('bull', block.bullet)
+ .getRegex();
+
+block.list = edit(block.list)
+ .replace(/bull/g, block.bullet)
+ .replace('hr', '\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))')
+ .replace('def', '\\n+(?=' + block.def.source + ')')
+ .getRegex();
+
+block._tag = 'address|article|aside|base|basefont|blockquote|body|caption'
+ + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'
+ + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'
+ + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'
+ + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'
+ + '|track|ul';
+block._comment = /<!--(?!-?>)[\s\S]*?(?:-->|$)/;
+block.html = edit(block.html, 'i')
+ .replace('comment', block._comment)
+ .replace('tag', block._tag)
+ .replace('attribute', / +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/)
+ .getRegex();
+
+block.paragraph = edit(block._paragraph)
+ .replace('hr', block.hr)
+ .replace('heading', ' {0,3}#{1,6} ')
+ .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs
+ .replace('|table', '')
+ .replace('blockquote', ' {0,3}>')
+ .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n')
+ .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt
+ .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)')
+ .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks
+ .getRegex();
+
+block.blockquote = edit(block.blockquote)
+ .replace('paragraph', block.paragraph)
+ .getRegex();
+
+/**
+ * Normal Block Grammar
+ */
+
+block.normal = { ...block };
+
+/**
+ * GFM Block Grammar
+ */
+
+block.gfm = {
+ ...block.normal,
+ table: '^ *([^\\n ].*\\|.*)\\n' // Header
+ + ' {0,3}(?:\\| *)?(:?-+:? *(?:\\| *:?-+:? *)*)(?:\\| *)?' // Align
+ + '(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)' // Cells
+};
+
+block.gfm.table = edit(block.gfm.table)
+ .replace('hr', block.hr)
+ .replace('heading', ' {0,3}#{1,6} ')
+ .replace('blockquote', ' {0,3}>')
+ .replace('code', ' {4}[^\\n]')
+ .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n')
+ .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt
+ .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)')
+ .replace('tag', block._tag) // tables can be interrupted by type (6) html blocks
+ .getRegex();
+
+block.gfm.paragraph = edit(block._paragraph)
+ .replace('hr', block.hr)
+ .replace('heading', ' {0,3}#{1,6} ')
+ .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs
+ .replace('table', block.gfm.table) // interrupt paragraphs with table
+ .replace('blockquote', ' {0,3}>')
+ .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n')
+ .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt
+ .replace('html', '</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)')
+ .replace('tag', block._tag) // pars can be interrupted by type (6) html blocks
+ .getRegex();
+/**
+ * Pedantic grammar (original John Gruber's loose markdown specification)
+ */
+
+block.pedantic = {
+ ...block.normal,
+ html: edit(
+ '^ *(?:comment *(?:\\n|\\s*$)'
+ + '|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)' // closed tag
+ + '|<tag(?:"[^"]*"|\'[^\']*\'|\\s[^\'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))')
+ .replace('comment', block._comment)
+ .replace(/tag/g, '(?!(?:'
+ + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'
+ + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'
+ + '\\b)\\w+(?!:|[^\\w\\s@]*@)\\b')
+ .getRegex(),
+ def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,
+ heading: /^(#{1,6})(.*)(?:\n+|$)/,
+ fences: noopTest, // fences not supported
+ lheading: /^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,
+ paragraph: edit(block.normal._paragraph)
+ .replace('hr', block.hr)
+ .replace('heading', ' *#{1,6} *[^\n]')
+ .replace('lheading', block.lheading)
+ .replace('blockquote', ' {0,3}>')
+ .replace('|fences', '')
+ .replace('|list', '')
+ .replace('|html', '')
+ .getRegex()
+};
+
+/**
+ * Inline-Level Grammar
+ */
+export const inline = {
+ escape: /^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,
+ autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/,
+ url: noopTest,
+ tag: '^comment'
+ + '|^</[a-zA-Z][\\w:-]*\\s*>' // self-closing tag
+ + '|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>' // open tag
+ + '|^<\\?[\\s\\S]*?\\?>' // processing instruction, e.g. <?php ?>
+ + '|^<![a-zA-Z]+\\s[\\s\\S]*?>' // declaration, e.g. <!DOCTYPE html>
+ + '|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>', // CDATA section
+ link: /^!?\[(label)\]\(\s*(href)(?:\s+(title))?\s*\)/,
+ reflink: /^!?\[(label)\]\[(ref)\]/,
+ nolink: /^!?\[(ref)\](?:\[\])?/,
+ reflinkSearch: 'reflink|nolink(?!\\()',
+ emStrong: {
+ lDelim: /^(?:\*+(?:([punct_])|[^\s*]))|^_+(?:([punct*])|([^\s_]))/,
+ // (1) and (2) can only be a Right Delimiter. (3) and (4) can only be Left. (5) and (6) can be either Left or Right.
+ // () Skip orphan inside strong () Consume to delim (1) #*** (2) a***#, a*** (3) #***a, ***a (4) ***# (5) #***# (6) a***a
+ rDelimAst: /^(?:[^_*\\]|\\.)*?\_\_(?:[^_*\\]|\\.)*?\*(?:[^_*\\]|\\.)*?(?=\_\_)|(?:[^*\\]|\\.)+(?=[^*])|[punct_](\*+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\*+)(?=[punct_\s]|$)|[punct_\s](\*+)(?=[^punct*_\s])|[\s](\*+)(?=[punct_])|[punct_](\*+)(?=[punct_])|(?:[^punct*_\s\\]|\\.)(\*+)(?=[^punct*_\s])/,
+ rDelimUnd: /^(?:[^_*\\]|\\.)*?\*\*(?:[^_*\\]|\\.)*?\_(?:[^_*\\]|\\.)*?(?=\*\*)|(?:[^_\\]|\\.)+(?=[^_])|[punct*](\_+)(?=[\s]|$)|(?:[^punct*_\s\\]|\\.)(\_+)(?=[punct*\s]|$)|[punct*\s](\_+)(?=[^punct*_\s])|[\s](\_+)(?=[punct*])|[punct*](\_+)(?=[punct*])/ // ^- Not allowed for _
+ },
+ code: /^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,
+ br: /^( {2,}|\\)\n(?!\s*$)/,
+ del: noopTest,
+ text: /^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,
+ punctuation: /^([\spunctuation])/
+};
+
+// list of punctuation marks from CommonMark spec
+// without * and _ to handle the different emphasis markers * and _
+inline._punctuation = '!"#$%&\'()+\\-.,/:;<=>?@\\[\\]`^{|}~';
+inline.punctuation = edit(inline.punctuation).replace(/punctuation/g, inline._punctuation).getRegex();
+
+// sequences em should skip over [title](link), `code`, <html>
+inline.blockSkip = /\[[^\]]*?\]\([^\)]*?\)|`[^`]*?`|<[^>]*?>/g;
+// lookbehind is not available on Safari as of version 16
+// inline.escapedEmSt = /(?<=(?:^|[^\\)(?:\\[^])*)\\[*_]/g;
+inline.escapedEmSt = /(?:^|[^\\])(?:\\\\)*\\[*_]/g;
+
+inline._comment = edit(block._comment).replace('(?:-->|$)', '-->').getRegex();
+
+inline.emStrong.lDelim = edit(inline.emStrong.lDelim)
+ .replace(/punct/g, inline._punctuation)
+ .getRegex();
+
+inline.emStrong.rDelimAst = edit(inline.emStrong.rDelimAst, 'g')
+ .replace(/punct/g, inline._punctuation)
+ .getRegex();
+
+inline.emStrong.rDelimUnd = edit(inline.emStrong.rDelimUnd, 'g')
+ .replace(/punct/g, inline._punctuation)
+ .getRegex();
+
+inline._escapes = /\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/g;
+
+inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/;
+inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/;
+inline.autolink = edit(inline.autolink)
+ .replace('scheme', inline._scheme)
+ .replace('email', inline._email)
+ .getRegex();
+
+inline._attribute = /\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/;
+
+inline.tag = edit(inline.tag)
+ .replace('comment', inline._comment)
+ .replace('attribute', inline._attribute)
+ .getRegex();
+
+inline._label = /(?:\[(?:\\.|[^\[\]\\])*\]|\\.|`[^`]*`|[^\[\]\\`])*?/;
+inline._href = /<(?:\\.|[^\n<>\\])+>|[^\s\x00-\x1f]*/;
+inline._title = /"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/;
+
+inline.link = edit(inline.link)
+ .replace('label', inline._label)
+ .replace('href', inline._href)
+ .replace('title', inline._title)
+ .getRegex();
+
+inline.reflink = edit(inline.reflink)
+ .replace('label', inline._label)
+ .replace('ref', block._label)
+ .getRegex();
+
+inline.nolink = edit(inline.nolink)
+ .replace('ref', block._label)
+ .getRegex();
+
+inline.reflinkSearch = edit(inline.reflinkSearch, 'g')
+ .replace('reflink', inline.reflink)
+ .replace('nolink', inline.nolink)
+ .getRegex();
+
+/**
+ * Normal Inline Grammar
+ */
+
+inline.normal = { ...inline };
+
+/**
+ * Pedantic Inline Grammar
+ */
+
+inline.pedantic = {
+ ...inline.normal,
+ strong: {
+ start: /^__|\*\*/,
+ middle: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
+ endAst: /\*\*(?!\*)/g,
+ endUnd: /__(?!_)/g
+ },
+ em: {
+ start: /^_|\*/,
+ middle: /^()\*(?=\S)([\s\S]*?\S)\*(?!\*)|^_(?=\S)([\s\S]*?\S)_(?!_)/,
+ endAst: /\*(?!\*)/g,
+ endUnd: /_(?!_)/g
+ },
+ link: edit(/^!?\[(label)\]\((.*?)\)/)
+ .replace('label', inline._label)
+ .getRegex(),
+ reflink: edit(/^!?\[(label)\]\s*\[([^\]]*)\]/)
+ .replace('label', inline._label)
+ .getRegex()
+};
+
+/**
+ * GFM Inline Grammar
+ */
+
+inline.gfm = {
+ ...inline.normal,
+ escape: edit(inline.escape).replace('])', '~|])').getRegex(),
+ _extended_email: /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/,
+ url: /^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/,
+ _backpedal: /(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,
+ del: /^(~~?)(?=[^\s~])([\s\S]*?[^\s~])\1(?=[^~]|$)/,
+ text: /^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|https?:\/\/|ftp:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/
+};
+
+inline.gfm.url = edit(inline.gfm.url, 'i')
+ .replace('email', inline.gfm._extended_email)
+ .getRegex();
+/**
+ * GFM + Line Breaks Inline Grammar
+ */
+
+inline.breaks = {
+ ...inline.gfm,
+ br: edit(inline.br).replace('{2,}', '*').getRegex(),
+ text: edit(inline.gfm.text)
+ .replace('\\b_', '\\b_| {2,}\\n')
+ .replace(/\{2,\}/g, '*')
+ .getRegex()
+};
diff --git a/node_modules/minimatch/LICENSE b/node_modules/minimatch/LICENSE
new file mode 100644
index 0000000..1493534
--- /dev/null
+++ b/node_modules/minimatch/LICENSE
@@ -0,0 +1,15 @@
+The ISC License
+
+Copyright (c) 2011-2023 Isaac Z. Schlueter and Contributors
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
+IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/node_modules/minimatch/README.md b/node_modules/minimatch/README.md
new file mode 100644
index 0000000..2241bab
--- /dev/null
+++ b/node_modules/minimatch/README.md
@@ -0,0 +1,454 @@
+# minimatch
+
+A minimal matching utility.
+
+This is the matching library used internally by npm.
+
+It works by converting glob expressions into JavaScript `RegExp`
+objects.
+
+## Usage
+
+```js
+// hybrid module, load with require() or import
+import { minimatch } from 'minimatch'
+// or:
+const { minimatch } = require('minimatch')
+
+minimatch('bar.foo', '*.foo') // true!
+minimatch('bar.foo', '*.bar') // false!
+minimatch('bar.foo', '*.+(bar|foo)', { debug: true }) // true, and noisy!
+```
+
+## Features
+
+Supports these glob features:
+
+- Brace Expansion
+- Extended glob matching
+- "Globstar" `**` matching
+- [Posix character
+ classes](https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html),
+ like `[[:alpha:]]`, supporting the full range of Unicode
+ characters. For example, `[[:alpha:]]` will match against
+ `'é'`, though `[a-zA-Z]` will not. Collating symbol and set
+ matching is not supported, so `[[=e=]]` will _not_ match `'é'`
+ and `[[.ch.]]` will not match `'ch'` in locales where `ch` is
+ considered a single character.
+
+See:
+
+- `man sh`
+- `man bash` [Pattern
+ Matching](https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html)
+- `man 3 fnmatch`
+- `man 5 gitignore`
+
+## Windows
+
+**Please only use forward-slashes in glob expressions.**
+
+Though windows uses either `/` or `\` as its path separator, only `/`
+characters are used by this glob implementation. You must use
+forward-slashes **only** in glob expressions. Back-slashes in patterns
+will always be interpreted as escape characters, not path separators.
+
+Note that `\` or `/` _will_ be interpreted as path separators in paths on
+Windows, and will match against `/` in glob expressions.
+
+So just always use `/` in patterns.
+
+### UNC Paths
+
+On Windows, UNC paths like `//?/c:/...` or
+`//ComputerName/Share/...` are handled specially.
+
+- Patterns starting with a double-slash followed by some
+ non-slash characters will preserve their double-slash. As a
+ result, a pattern like `//*` will match `//x`, but not `/x`.
+- Patterns staring with `//?/<drive letter>:` will _not_ treat
+ the `?` as a wildcard character. Instead, it will be treated
+ as a normal string.
+- Patterns starting with `//?/<drive letter>:/...` will match
+ file paths starting with `<drive letter>:/...`, and vice versa,
+ as if the `//?/` was not present. This behavior only is
+ present when the drive letters are a case-insensitive match to
+ one another. The remaining portions of the path/pattern are
+ compared case sensitively, unless `nocase:true` is set.
+
+Note that specifying a UNC path using `\` characters as path
+separators is always allowed in the file path argument, but only
+allowed in the pattern argument when `windowsPathsNoEscape: true`
+is set in the options.
+
+## Minimatch Class
+
+Create a minimatch object by instantiating the `minimatch.Minimatch` class.
+
+```javascript
+var Minimatch = require('minimatch').Minimatch
+var mm = new Minimatch(pattern, options)
+```
+
+### Properties
+
+- `pattern` The original pattern the minimatch object represents.
+- `options` The options supplied to the constructor.
+- `set` A 2-dimensional array of regexp or string expressions.
+ Each row in the
+ array corresponds to a brace-expanded pattern. Each item in the row
+ corresponds to a single path-part. For example, the pattern
+ `{a,b/c}/d` would expand to a set of patterns like:
+
+ [ [ a, d ]
+ , [ b, c, d ] ]
+
+ If a portion of the pattern doesn't have any "magic" in it
+ (that is, it's something like `"foo"` rather than `fo*o?`), then it
+ will be left as a string rather than converted to a regular
+ expression.
+
+- `regexp` Created by the `makeRe` method. A single regular expression
+ expressing the entire pattern. This is useful in cases where you wish
+ to use the pattern somewhat like `fnmatch(3)` with `FNM_PATH` enabled.
+- `negate` True if the pattern is negated.
+- `comment` True if the pattern is a comment.
+- `empty` True if the pattern is `""`.
+
+### Methods
+
+- `makeRe()` Generate the `regexp` member if necessary, and return it.
+ Will return `false` if the pattern is invalid.
+- `match(fname)` Return true if the filename matches the pattern, or
+ false otherwise.
+- `matchOne(fileArray, patternArray, partial)` Take a `/`-split
+ filename, and match it against a single row in the `regExpSet`. This
+ method is mainly for internal use, but is exposed so that it can be
+ used by a glob-walker that needs to avoid excessive filesystem calls.
+- `hasMagic()` Returns true if the parsed pattern contains any
+ magic characters. Returns false if all comparator parts are
+ string literals. If the `magicalBraces` option is set on the
+ constructor, then it will consider brace expansions which are
+ not otherwise magical to be magic. If not set, then a pattern
+ like `a{b,c}d` will return `false`, because neither `abd` nor
+ `acd` contain any special glob characters.
+
+ This does **not** mean that the pattern string can be used as a
+ literal filename, as it may contain magic glob characters that
+ are escaped. For example, the pattern `\\*` or `[*]` would not
+ be considered to have magic, as the matching portion parses to
+ the literal string `'*'` and would match a path named `'*'`,
+ not `'\\*'` or `'[*]'`. The `minimatch.unescape()` method may
+ be used to remove escape characters.
+
+All other methods are internal, and will be called as necessary.
+
+### minimatch(path, pattern, options)
+
+Main export. Tests a path against the pattern using the options.
+
+```javascript
+var isJS = minimatch(file, '*.js', { matchBase: true })
+```
+
+### minimatch.filter(pattern, options)
+
+Returns a function that tests its
+supplied argument, suitable for use with `Array.filter`. Example:
+
+```javascript
+var javascripts = fileList.filter(minimatch.filter('*.js', { matchBase: true }))
+```
+
+### minimatch.escape(pattern, options = {})
+
+Escape all magic characters in a glob pattern, so that it will
+only ever match literal strings
+
+If the `windowsPathsNoEscape` option is used, then characters are
+escaped by wrapping in `[]`, because a magic character wrapped in
+a character class can only be satisfied by that exact character.
+
+Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot
+be escaped or unescaped.
+
+### minimatch.unescape(pattern, options = {})
+
+Un-escape a glob string that may contain some escaped characters.
+
+If the `windowsPathsNoEscape` option is used, then square-brace
+escapes are removed, but not backslash escapes. For example, it
+will turn the string `'[*]'` into `*`, but it will not turn
+`'\\*'` into `'*'`, because `\` is a path separator in
+`windowsPathsNoEscape` mode.
+
+When `windowsPathsNoEscape` is not set, then both brace escapes
+and backslash escapes are removed.
+
+Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot
+be escaped or unescaped.
+
+### minimatch.match(list, pattern, options)
+
+Match against the list of
+files, in the style of fnmatch or glob. If nothing is matched, and
+options.nonull is set, then return a list containing the pattern itself.
+
+```javascript
+var javascripts = minimatch.match(fileList, '*.js', { matchBase: true })
+```
+
+### minimatch.makeRe(pattern, options)
+
+Make a regular expression object from the pattern.
+
+## Options
+
+All options are `false` by default.
+
+### debug
+
+Dump a ton of stuff to stderr.
+
+### nobrace
+
+Do not expand `{a,b}` and `{1..3}` brace sets.
+
+### noglobstar
+
+Disable `**` matching against multiple folder names.
+
+### dot
+
+Allow patterns to match filenames starting with a period, even if
+the pattern does not explicitly have a period in that spot.
+
+Note that by default, `a/**/b` will **not** match `a/.d/b`, unless `dot`
+is set.
+
+### noext
+
+Disable "extglob" style patterns like `+(a|b)`.
+
+### nocase
+
+Perform a case-insensitive match.
+
+### nocaseMagicOnly
+
+When used with `{nocase: true}`, create regular expressions that
+are case-insensitive, but leave string match portions untouched.
+Has no effect when used without `{nocase: true}`
+
+Useful when some other form of case-insensitive matching is used,
+or if the original string representation is useful in some other
+way.
+
+### nonull
+
+When a match is not found by `minimatch.match`, return a list containing
+the pattern itself if this option is set. When not set, an empty list
+is returned if there are no matches.
+
+### magicalBraces
+
+This only affects the results of the `Minimatch.hasMagic` method.
+
+If the pattern contains brace expansions, such as `a{b,c}d`, but
+no other magic characters, then the `Minimatch.hasMagic()` method
+will return `false` by default. When this option set, it will
+return `true` for brace expansion as well as other magic glob
+characters.
+
+### matchBase
+
+If set, then patterns without slashes will be matched
+against the basename of the path if it contains slashes. For example,
+`a?b` would match the path `/xyz/123/acb`, but not `/xyz/acb/123`.
+
+### nocomment
+
+Suppress the behavior of treating `#` at the start of a pattern as a
+comment.
+
+### nonegate
+
+Suppress the behavior of treating a leading `!` character as negation.
+
+### flipNegate
+
+Returns from negate expressions the same as if they were not negated.
+(Ie, true on a hit, false on a miss.)
+
+### partial
+
+Compare a partial path to a pattern. As long as the parts of the path that
+are present are not contradicted by the pattern, it will be treated as a
+match. This is useful in applications where you're walking through a
+folder structure, and don't yet have the full path, but want to ensure that
+you do not walk down paths that can never be a match.
+
+For example,
+
+```js
+minimatch('/a/b', '/a/*/c/d', { partial: true }) // true, might be /a/b/c/d
+minimatch('/a/b', '/**/d', { partial: true }) // true, might be /a/b/.../d
+minimatch('/x/y/z', '/a/**/z', { partial: true }) // false, because x !== a
+```
+
+### windowsPathsNoEscape
+
+Use `\\` as a path separator _only_, and _never_ as an escape
+character. If set, all `\\` characters are replaced with `/` in
+the pattern. Note that this makes it **impossible** to match
+against paths containing literal glob pattern characters, but
+allows matching with patterns constructed using `path.join()` and
+`path.resolve()` on Windows platforms, mimicking the (buggy!)
+behavior of earlier versions on Windows. Please use with
+caution, and be mindful of [the caveat about Windows
+paths](#windows).
+
+For legacy reasons, this is also set if
+`options.allowWindowsEscape` is set to the exact value `false`.
+
+### windowsNoMagicRoot
+
+When a pattern starts with a UNC path or drive letter, and in
+`nocase:true` mode, do not convert the root portions of the
+pattern into a case-insensitive regular expression, and instead
+leave them as strings.
+
+This is the default when the platform is `win32` and
+`nocase:true` is set.
+
+### preserveMultipleSlashes
+
+By default, multiple `/` characters (other than the leading `//`
+in a UNC path, see "UNC Paths" above) are treated as a single
+`/`.
+
+That is, a pattern like `a///b` will match the file path `a/b`.
+
+Set `preserveMultipleSlashes: true` to suppress this behavior.
+
+### optimizationLevel
+
+A number indicating the level of optimization that should be done
+to the pattern prior to parsing and using it for matches.
+
+Globstar parts `**` are always converted to `*` when `noglobstar`
+is set, and multiple adjascent `**` parts are converted into a
+single `**` (ie, `a/**/**/b` will be treated as `a/**/b`, as this
+is equivalent in all cases).
+
+- `0` - Make no further changes. In this mode, `.` and `..` are
+ maintained in the pattern, meaning that they must also appear
+ in the same position in the test path string. Eg, a pattern
+ like `a/*/../c` will match the string `a/b/../c` but not the
+ string `a/c`.
+- `1` - (default) Remove cases where a double-dot `..` follows a
+ pattern portion that is not `**`, `.`, `..`, or empty `''`. For
+ example, the pattern `./a/b/../*` is converted to `./a/*`, and
+ so it will match the path string `./a/c`, but not the path
+ string `./a/b/../c`. Dots and empty path portions in the
+ pattern are preserved.
+- `2` (or higher) - Much more aggressive optimizations, suitable
+ for use with file-walking cases:
+
+ - Remove cases where a double-dot `..` follows a pattern
+ portion that is not `**`, `.`, or empty `''`. Remove empty
+ and `.` portions of the pattern, where safe to do so (ie,
+ anywhere other than the last position, the first position, or
+ the second position in a pattern starting with `/`, as this
+ may indicate a UNC path on Windows).
+ - Convert patterns containing `<pre>/**/../<p>/<rest>` into the
+ equivalent `<pre>/{..,**}/<p>/<rest>`, where `<p>` is a
+ a pattern portion other than `.`, `..`, `**`, or empty
+ `''`.
+ - Dedupe patterns where a `**` portion is present in one and
+ omitted in another, and it is not the final path portion, and
+ they are otherwise equivalent. So `{a/**/b,a/b}` becomes
+ `a/**/b`, because `**` matches against an empty path portion.
+ - Dedupe patterns where a `*` portion is present in one, and a
+ non-dot pattern other than `**`, `.`, `..`, or `''` is in the
+ same position in the other. So `a/{*,x}/b` becomes `a/*/b`,
+ because `*` can match against `x`.
+
+ While these optimizations improve the performance of
+ file-walking use cases such as [glob](http://npm.im/glob) (ie,
+ the reason this module exists), there are cases where it will
+ fail to match a literal string that would have been matched in
+ optimization level 1 or 0.
+
+ Specifically, while the `Minimatch.match()` method will
+ optimize the file path string in the same ways, resulting in
+ the same matches, it will fail when tested with the regular
+ expression provided by `Minimatch.makeRe()`, unless the path
+ string is first processed with
+ `minimatch.levelTwoFileOptimize()` or similar.
+
+### platform
+
+When set to `win32`, this will trigger all windows-specific
+behaviors (special handling for UNC paths, and treating `\` as
+separators in file paths for comparison.)
+
+Defaults to the value of `process.platform`.
+
+## Comparisons to other fnmatch/glob implementations
+
+While strict compliance with the existing standards is a
+worthwhile goal, some discrepancies exist between minimatch and
+other implementations. Some are intentional, and some are
+unavoidable.
+
+If the pattern starts with a `!` character, then it is negated. Set the
+`nonegate` flag to suppress this behavior, and treat leading `!`
+characters normally. This is perhaps relevant if you wish to start the
+pattern with a negative extglob pattern like `!(a|B)`. Multiple `!`
+characters at the start of a pattern will negate the pattern multiple
+times.
+
+If a pattern starts with `#`, then it is treated as a comment, and
+will not match anything. Use `\#` to match a literal `#` at the
+start of a line, or set the `nocomment` flag to suppress this behavior.
+
+The double-star character `**` is supported by default, unless the
+`noglobstar` flag is set. This is supported in the manner of bsdglob
+and bash 4.1, where `**` only has special significance if it is the only
+thing in a path part. That is, `a/**/b` will match `a/x/y/b`, but
+`a/**b` will not.
+
+If an escaped pattern has no matches, and the `nonull` flag is set,
+then minimatch.match returns the pattern as-provided, rather than
+interpreting the character escapes. For example,
+`minimatch.match([], "\\*a\\?")` will return `"\\*a\\?"` rather than
+`"*a?"`. This is akin to setting the `nullglob` option in bash, except
+that it does not resolve escaped pattern characters.
+
+If brace expansion is not disabled, then it is performed before any
+other interpretation of the glob pattern. Thus, a pattern like
+`+(a|{b),c)}`, which would not be valid in bash or zsh, is expanded
+**first** into the set of `+(a|b)` and `+(a|c)`, and those patterns are
+checked for validity. Since those two are valid, matching proceeds.
+
+Negated extglob patterns are handled as closely as possible to
+Bash semantics, but there are some cases with negative extglobs
+which are exceedingly difficult to express in a JavaScript
+regular expression. In particular the negated pattern
+`<start>!(<pattern>*|)*` will in bash match anything that does
+not start with `<start><pattern>`. However,
+`<start>!(<pattern>*)*` _will_ match paths starting with
+`<start><pattern>`, because the empty string can match against
+the negated portion. In this library, `<start>!(<pattern>*|)*`
+will _not_ match any pattern starting with `<start>`, due to a
+difference in precisely which patterns are considered "greedy" in
+Regular Expressions vs bash path expansion. This may be fixable,
+but not without incurring some complexity and performance costs,
+and the trade-off seems to not be worth pursuing.
+
+Note that `fnmatch(3)` in libc is an extremely naive string comparison
+matcher, which does not do anything special for slashes. This library is
+designed to be used in glob searching and file walkers, and so it does do
+special things with `/`. Thus, `foo*` will not match `foo/bar` in this
+library, even though it would in `fnmatch(3)`.
diff --git a/node_modules/minimatch/dist/cjs/assert-valid-pattern.d.ts b/node_modules/minimatch/dist/cjs/assert-valid-pattern.d.ts
new file mode 100644
index 0000000..8e318b2
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/assert-valid-pattern.d.ts
@@ -0,0 +1,2 @@
+export declare const assertValidPattern: (pattern: any) => void;
+//# sourceMappingURL=assert-valid-pattern.d.ts.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/assert-valid-pattern.d.ts.map b/node_modules/minimatch/dist/cjs/assert-valid-pattern.d.ts.map
new file mode 100644
index 0000000..c61c031
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/assert-valid-pattern.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"assert-valid-pattern.d.ts","sourceRoot":"","sources":["../../src/assert-valid-pattern.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,kBAAkB,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAUlD,CAAA"} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/assert-valid-pattern.js b/node_modules/minimatch/dist/cjs/assert-valid-pattern.js
new file mode 100644
index 0000000..5fc86bb
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/assert-valid-pattern.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.assertValidPattern = void 0;
+const MAX_PATTERN_LENGTH = 1024 * 64;
+const assertValidPattern = (pattern) => {
+ if (typeof pattern !== 'string') {
+ throw new TypeError('invalid pattern');
+ }
+ if (pattern.length > MAX_PATTERN_LENGTH) {
+ throw new TypeError('pattern is too long');
+ }
+};
+exports.assertValidPattern = assertValidPattern;
+//# sourceMappingURL=assert-valid-pattern.js.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/assert-valid-pattern.js.map b/node_modules/minimatch/dist/cjs/assert-valid-pattern.js.map
new file mode 100644
index 0000000..d43215c
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/assert-valid-pattern.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"assert-valid-pattern.js","sourceRoot":"","sources":["../../src/assert-valid-pattern.ts"],"names":[],"mappings":";;;AAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAA;AAC7B,MAAM,kBAAkB,GAA2B,CACxD,OAAY,EACe,EAAE;IAC7B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAA;KACvC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,kBAAkB,EAAE;QACvC,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAA;KAC3C;AACH,CAAC,CAAA;AAVY,QAAA,kBAAkB,sBAU9B","sourcesContent":["const MAX_PATTERN_LENGTH = 1024 * 64\nexport const assertValidPattern: (pattern: any) => void = (\n pattern: any\n): asserts pattern is string => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern')\n }\n\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long')\n }\n}\n"]} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/ast.d.ts b/node_modules/minimatch/dist/cjs/ast.d.ts
new file mode 100644
index 0000000..e08641b
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/ast.d.ts
@@ -0,0 +1,19 @@
+import { MinimatchOptions, MMRegExp } from './index.js';
+export type ExtglobType = '!' | '?' | '+' | '*' | '@';
+export declare class AST {
+ #private;
+ type: ExtglobType | null;
+ constructor(type: ExtglobType | null, parent?: AST, options?: MinimatchOptions);
+ get hasMagic(): boolean | undefined;
+ toString(): string;
+ push(...parts: (string | AST)[]): void;
+ toJSON(): any[];
+ isStart(): boolean;
+ isEnd(): boolean;
+ copyIn(part: AST | string): void;
+ clone(parent: AST): AST;
+ static fromGlob(pattern: string, options?: MinimatchOptions): AST;
+ toMMPattern(): MMRegExp | string;
+ toRegExpSource(allowDot?: boolean): [re: string, body: string, hasMagic: boolean, uflag: boolean];
+}
+//# sourceMappingURL=ast.d.ts.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/ast.d.ts.map b/node_modules/minimatch/dist/cjs/ast.d.ts.map
new file mode 100644
index 0000000..5486a68
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/ast.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAwCvD,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAkCrD,qBAAa,GAAG;;IACd,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;gBAiBtB,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,GAAE,gBAAqB;IAahC,IAAI,QAAQ,IAAI,OAAO,GAAG,SAAS,CAUlC;IAGD,QAAQ,IAAI,MAAM;IA+ClB,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;IAY/B,MAAM;IAgBN,OAAO,IAAI,OAAO;IAgBlB,KAAK,IAAI,OAAO;IAYhB,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;IAKzB,KAAK,CAAC,MAAM,EAAE,GAAG;IAsIjB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAQ/D,WAAW,IAAI,QAAQ,GAAG,MAAM;IAgGhC,cAAc,CACZ,QAAQ,CAAC,EAAE,OAAO,GACjB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;CAiMjE"} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/ast.js b/node_modules/minimatch/dist/cjs/ast.js
new file mode 100644
index 0000000..a98ae79
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/ast.js
@@ -0,0 +1,589 @@
+"use strict";
+// parse a single path portion
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.AST = void 0;
+const brace_expressions_js_1 = require("./brace-expressions.js");
+const unescape_js_1 = require("./unescape.js");
+const types = new Set(['!', '?', '+', '*', '@']);
+const isExtglobType = (c) => types.has(c);
+// Patterns that get prepended to bind to the start of either the
+// entire string, or just a single path portion, to prevent dots
+// and/or traversal patterns, when needed.
+// Exts don't need the ^ or / bit, because the root binds that already.
+const startNoTraversal = '(?!(?:^|/)\\.\\.?(?:$|/))';
+const startNoDot = '(?!\\.)';
+// characters that indicate a start of pattern needs the "no dots" bit,
+// because a dot *might* be matched. ( is not in the list, because in
+// the case of a child extglob, it will handle the prevention itself.
+const addPatternStart = new Set(['[', '.']);
+// cases where traversal is A-OK, no dot prevention needed
+const justDots = new Set(['..', '.']);
+const reSpecials = new Set('().*{}+?[]^$\\!');
+const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
+// any single thing other than /
+const qmark = '[^/]';
+// * => any number of characters
+const star = qmark + '*?';
+// use + when we need to ensure that *something* matches, because the * is
+// the only thing in the path portion.
+const starNoEmpty = qmark + '+?';
+// remove the \ chars that we added if we end up doing a nonmagic compare
+// const deslash = (s: string) => s.replace(/\\(.)/g, '$1')
+class AST {
+ type;
+ #root;
+ #hasMagic;
+ #uflag = false;
+ #parts = [];
+ #parent;
+ #parentIndex;
+ #negs;
+ #filledNegs = false;
+ #options;
+ #toString;
+ // set to true if it's an extglob with no children
+ // (which really means one child of '')
+ #emptyExt = false;
+ constructor(type, parent, options = {}) {
+ this.type = type;
+ // extglobs are inherently magical
+ if (type)
+ this.#hasMagic = true;
+ this.#parent = parent;
+ this.#root = this.#parent ? this.#parent.#root : this;
+ this.#options = this.#root === this ? options : this.#root.#options;
+ this.#negs = this.#root === this ? [] : this.#root.#negs;
+ if (type === '!' && !this.#root.#filledNegs)
+ this.#negs.push(this);
+ this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;
+ }
+ get hasMagic() {
+ /* c8 ignore start */
+ if (this.#hasMagic !== undefined)
+ return this.#hasMagic;
+ /* c8 ignore stop */
+ for (const p of this.#parts) {
+ if (typeof p === 'string')
+ continue;
+ if (p.type || p.hasMagic)
+ return (this.#hasMagic = true);
+ }
+ // note: will be undefined until we generate the regexp src and find out
+ return this.#hasMagic;
+ }
+ // reconstructs the pattern
+ toString() {
+ if (this.#toString !== undefined)
+ return this.#toString;
+ if (!this.type) {
+ return (this.#toString = this.#parts.map(p => String(p)).join(''));
+ }
+ else {
+ return (this.#toString =
+ this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');
+ }
+ }
+ #fillNegs() {
+ /* c8 ignore start */
+ if (this !== this.#root)
+ throw new Error('should only call on root');
+ if (this.#filledNegs)
+ return this;
+ /* c8 ignore stop */
+ // call toString() once to fill this out
+ this.toString();
+ this.#filledNegs = true;
+ let n;
+ while ((n = this.#negs.pop())) {
+ if (n.type !== '!')
+ continue;
+ // walk up the tree, appending everthing that comes AFTER parentIndex
+ let p = n;
+ let pp = p.#parent;
+ while (pp) {
+ for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {
+ for (const part of n.#parts) {
+ /* c8 ignore start */
+ if (typeof part === 'string') {
+ throw new Error('string part in extglob AST??');
+ }
+ /* c8 ignore stop */
+ part.copyIn(pp.#parts[i]);
+ }
+ }
+ p = pp;
+ pp = p.#parent;
+ }
+ }
+ return this;
+ }
+ push(...parts) {
+ for (const p of parts) {
+ if (p === '')
+ continue;
+ /* c8 ignore start */
+ if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {
+ throw new Error('invalid part: ' + p);
+ }
+ /* c8 ignore stop */
+ this.#parts.push(p);
+ }
+ }
+ toJSON() {
+ const ret = this.type === null
+ ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))
+ : [this.type, ...this.#parts.map(p => p.toJSON())];
+ if (this.isStart() && !this.type)
+ ret.unshift([]);
+ if (this.isEnd() &&
+ (this === this.#root ||
+ (this.#root.#filledNegs && this.#parent?.type === '!'))) {
+ ret.push({});
+ }
+ return ret;
+ }
+ isStart() {
+ if (this.#root === this)
+ return true;
+ // if (this.type) return !!this.#parent?.isStart()
+ if (!this.#parent?.isStart())
+ return false;
+ if (this.#parentIndex === 0)
+ return true;
+ // if everything AHEAD of this is a negation, then it's still the "start"
+ const p = this.#parent;
+ for (let i = 0; i < this.#parentIndex; i++) {
+ const pp = p.#parts[i];
+ if (!(pp instanceof AST && pp.type === '!')) {
+ return false;
+ }
+ }
+ return true;
+ }
+ isEnd() {
+ if (this.#root === this)
+ return true;
+ if (this.#parent?.type === '!')
+ return true;
+ if (!this.#parent?.isEnd())
+ return false;
+ if (!this.type)
+ return this.#parent?.isEnd();
+ // if not root, it'll always have a parent
+ /* c8 ignore start */
+ const pl = this.#parent ? this.#parent.#parts.length : 0;
+ /* c8 ignore stop */
+ return this.#parentIndex === pl - 1;
+ }
+ copyIn(part) {
+ if (typeof part === 'string')
+ this.push(part);
+ else
+ this.push(part.clone(this));
+ }
+ clone(parent) {
+ const c = new AST(this.type, parent);
+ for (const p of this.#parts) {
+ c.copyIn(p);
+ }
+ return c;
+ }
+ static #parseAST(str, ast, pos, opt) {
+ let escaping = false;
+ let inBrace = false;
+ let braceStart = -1;
+ let braceNeg = false;
+ if (ast.type === null) {
+ // outside of a extglob, append until we find a start
+ let i = pos;
+ let acc = '';
+ while (i < str.length) {
+ const c = str.charAt(i++);
+ // still accumulate escapes at this point, but we do ignore
+ // starts that are escaped
+ if (escaping || c === '\\') {
+ escaping = !escaping;
+ acc += c;
+ continue;
+ }
+ if (inBrace) {
+ if (i === braceStart + 1) {
+ if (c === '^' || c === '!') {
+ braceNeg = true;
+ }
+ }
+ else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {
+ inBrace = false;
+ }
+ acc += c;
+ continue;
+ }
+ else if (c === '[') {
+ inBrace = true;
+ braceStart = i;
+ braceNeg = false;
+ acc += c;
+ continue;
+ }
+ if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {
+ ast.push(acc);
+ acc = '';
+ const ext = new AST(c, ast);
+ i = AST.#parseAST(str, ext, i, opt);
+ ast.push(ext);
+ continue;
+ }
+ acc += c;
+ }
+ ast.push(acc);
+ return i;
+ }
+ // some kind of extglob, pos is at the (
+ // find the next | or )
+ let i = pos + 1;
+ let part = new AST(null, ast);
+ const parts = [];
+ let acc = '';
+ while (i < str.length) {
+ const c = str.charAt(i++);
+ // still accumulate escapes at this point, but we do ignore
+ // starts that are escaped
+ if (escaping || c === '\\') {
+ escaping = !escaping;
+ acc += c;
+ continue;
+ }
+ if (inBrace) {
+ if (i === braceStart + 1) {
+ if (c === '^' || c === '!') {
+ braceNeg = true;
+ }
+ }
+ else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {
+ inBrace = false;
+ }
+ acc += c;
+ continue;
+ }
+ else if (c === '[') {
+ inBrace = true;
+ braceStart = i;
+ braceNeg = false;
+ acc += c;
+ continue;
+ }
+ if (isExtglobType(c) && str.charAt(i) === '(') {
+ part.push(acc);
+ acc = '';
+ const ext = new AST(c, part);
+ part.push(ext);
+ i = AST.#parseAST(str, ext, i, opt);
+ continue;
+ }
+ if (c === '|') {
+ part.push(acc);
+ acc = '';
+ parts.push(part);
+ part = new AST(null, ast);
+ continue;
+ }
+ if (c === ')') {
+ if (acc === '' && ast.#parts.length === 0) {
+ ast.#emptyExt = true;
+ }
+ part.push(acc);
+ acc = '';
+ ast.push(...parts, part);
+ return i;
+ }
+ acc += c;
+ }
+ // unfinished extglob
+ // if we got here, it was a malformed extglob! not an extglob, but
+ // maybe something else in there.
+ ast.type = null;
+ ast.#hasMagic = undefined;
+ ast.#parts = [str.substring(pos - 1)];
+ return i;
+ }
+ static fromGlob(pattern, options = {}) {
+ const ast = new AST(null, undefined, options);
+ AST.#parseAST(pattern, ast, 0, options);
+ return ast;
+ }
+ // returns the regular expression if there's magic, or the unescaped
+ // string if not.
+ toMMPattern() {
+ // should only be called on root
+ /* c8 ignore start */
+ if (this !== this.#root)
+ return this.#root.toMMPattern();
+ /* c8 ignore stop */
+ const glob = this.toString();
+ const [re, body, hasMagic, uflag] = this.toRegExpSource();
+ // if we're in nocase mode, and not nocaseMagicOnly, then we do
+ // still need a regular expression if we have to case-insensitively
+ // match capital/lowercase characters.
+ const anyMagic = hasMagic ||
+ this.#hasMagic ||
+ (this.#options.nocase &&
+ !this.#options.nocaseMagicOnly &&
+ glob.toUpperCase() !== glob.toLowerCase());
+ if (!anyMagic) {
+ return body;
+ }
+ const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');
+ return Object.assign(new RegExp(`^${re}$`, flags), {
+ _src: re,
+ _glob: glob,
+ });
+ }
+ // returns the string match, the regexp source, whether there's magic
+ // in the regexp (so a regular expression is required) and whether or
+ // not the uflag is needed for the regular expression (for posix classes)
+ // TODO: instead of injecting the start/end at this point, just return
+ // the BODY of the regexp, along with the start/end portions suitable
+ // for binding the start/end in either a joined full-path makeRe context
+ // (where we bind to (^|/), or a standalone matchPart context (where
+ // we bind to ^, and not /). Otherwise slashes get duped!
+ //
+ // In part-matching mode, the start is:
+ // - if not isStart: nothing
+ // - if traversal possible, but not allowed: ^(?!\.\.?$)
+ // - if dots allowed or not possible: ^
+ // - if dots possible and not allowed: ^(?!\.)
+ // end is:
+ // - if not isEnd(): nothing
+ // - else: $
+ //
+ // In full-path matching mode, we put the slash at the START of the
+ // pattern, so start is:
+ // - if first pattern: same as part-matching mode
+ // - if not isStart(): nothing
+ // - if traversal possible, but not allowed: /(?!\.\.?(?:$|/))
+ // - if dots allowed or not possible: /
+ // - if dots possible and not allowed: /(?!\.)
+ // end is:
+ // - if last pattern, same as part-matching mode
+ // - else nothing
+ //
+ // Always put the (?:$|/) on negated tails, though, because that has to be
+ // there to bind the end of the negated pattern portion, and it's easier to
+ // just stick it in now rather than try to inject it later in the middle of
+ // the pattern.
+ //
+ // We can just always return the same end, and leave it up to the caller
+ // to know whether it's going to be used joined or in parts.
+ // And, if the start is adjusted slightly, can do the same there:
+ // - if not isStart: nothing
+ // - if traversal possible, but not allowed: (?:/|^)(?!\.\.?$)
+ // - if dots allowed or not possible: (?:/|^)
+ // - if dots possible and not allowed: (?:/|^)(?!\.)
+ //
+ // But it's better to have a simpler binding without a conditional, for
+ // performance, so probably better to return both start options.
+ //
+ // Then the caller just ignores the end if it's not the first pattern,
+ // and the start always gets applied.
+ //
+ // But that's always going to be $ if it's the ending pattern, or nothing,
+ // so the caller can just attach $ at the end of the pattern when building.
+ //
+ // So the todo is:
+ // - better detect what kind of start is needed
+ // - return both flavors of starting pattern
+ // - attach $ at the end of the pattern when creating the actual RegExp
+ //
+ // Ah, but wait, no, that all only applies to the root when the first pattern
+ // is not an extglob. If the first pattern IS an extglob, then we need all
+ // that dot prevention biz to live in the extglob portions, because eg
+ // +(*|.x*) can match .xy but not .yx.
+ //
+ // So, return the two flavors if it's #root and the first child is not an
+ // AST, otherwise leave it to the child AST to handle it, and there,
+ // use the (?:^|/) style of start binding.
+ //
+ // Even simplified further:
+ // - Since the start for a join is eg /(?!\.) and the start for a part
+ // is ^(?!\.), we can just prepend (?!\.) to the pattern (either root
+ // or start or whatever) and prepend ^ or / at the Regexp construction.
+ toRegExpSource(allowDot) {
+ const dot = allowDot ?? !!this.#options.dot;
+ if (this.#root === this)
+ this.#fillNegs();
+ if (!this.type) {
+ const noEmpty = this.isStart() && this.isEnd();
+ const src = this.#parts
+ .map(p => {
+ const [re, _, hasMagic, uflag] = typeof p === 'string'
+ ? AST.#parseGlob(p, this.#hasMagic, noEmpty)
+ : p.toRegExpSource(allowDot);
+ this.#hasMagic = this.#hasMagic || hasMagic;
+ this.#uflag = this.#uflag || uflag;
+ return re;
+ })
+ .join('');
+ let start = '';
+ if (this.isStart()) {
+ if (typeof this.#parts[0] === 'string') {
+ // this is the string that will match the start of the pattern,
+ // so we need to protect against dots and such.
+ // '.' and '..' cannot match unless the pattern is that exactly,
+ // even if it starts with . or dot:true is set.
+ const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);
+ if (!dotTravAllowed) {
+ const aps = addPatternStart;
+ // check if we have a possibility of matching . or ..,
+ // and prevent that.
+ const needNoTrav =
+ // dots are allowed, and the pattern starts with [ or .
+ (dot && aps.has(src.charAt(0))) ||
+ // the pattern starts with \., and then [ or .
+ (src.startsWith('\\.') && aps.has(src.charAt(2))) ||
+ // the pattern starts with \.\., and then [ or .
+ (src.startsWith('\\.\\.') && aps.has(src.charAt(4)));
+ // no need to prevent dots if it can't match a dot, or if a
+ // sub-pattern will be preventing it anyway.
+ const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));
+ start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';
+ }
+ }
+ }
+ // append the "end of path portion" pattern to negation tails
+ let end = '';
+ if (this.isEnd() &&
+ this.#root.#filledNegs &&
+ this.#parent?.type === '!') {
+ end = '(?:$|\\/)';
+ }
+ const final = start + src + end;
+ return [
+ final,
+ (0, unescape_js_1.unescape)(src),
+ (this.#hasMagic = !!this.#hasMagic),
+ this.#uflag,
+ ];
+ }
+ // We need to calculate the body *twice* if it's a repeat pattern
+ // at the start, once in nodot mode, then again in dot mode, so a
+ // pattern like *(?) can match 'x.y'
+ const repeated = this.type === '*' || this.type === '+';
+ // some kind of extglob
+ const start = this.type === '!' ? '(?:(?!(?:' : '(?:';
+ let body = this.#partsToRegExp(dot);
+ if (this.isStart() && this.isEnd() && !body && this.type !== '!') {
+ // invalid extglob, has to at least be *something* present, if it's
+ // the entire path portion.
+ const s = this.toString();
+ this.#parts = [s];
+ this.type = null;
+ this.#hasMagic = undefined;
+ return [s, (0, unescape_js_1.unescape)(this.toString()), false, false];
+ }
+ // XXX abstract out this map method
+ let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot
+ ? ''
+ : this.#partsToRegExp(true);
+ if (bodyDotAllowed === body) {
+ bodyDotAllowed = '';
+ }
+ if (bodyDotAllowed) {
+ body = `(?:${body})(?:${bodyDotAllowed})*?`;
+ }
+ // an empty !() is exactly equivalent to a starNoEmpty
+ let final = '';
+ if (this.type === '!' && this.#emptyExt) {
+ final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;
+ }
+ else {
+ const close = this.type === '!'
+ ? // !() must match something,but !(x) can match ''
+ '))' +
+ (this.isStart() && !dot && !allowDot ? startNoDot : '') +
+ star +
+ ')'
+ : this.type === '@'
+ ? ')'
+ : this.type === '?'
+ ? ')?'
+ : this.type === '+' && bodyDotAllowed
+ ? ')'
+ : this.type === '*' && bodyDotAllowed
+ ? `)?`
+ : `)${this.type}`;
+ final = start + body + close;
+ }
+ return [
+ final,
+ (0, unescape_js_1.unescape)(body),
+ (this.#hasMagic = !!this.#hasMagic),
+ this.#uflag,
+ ];
+ }
+ #partsToRegExp(dot) {
+ return this.#parts
+ .map(p => {
+ // extglob ASTs should only contain parent ASTs
+ /* c8 ignore start */
+ if (typeof p === 'string') {
+ throw new Error('string type in extglob ast??');
+ }
+ /* c8 ignore stop */
+ // can ignore hasMagic, because extglobs are already always magic
+ const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);
+ this.#uflag = this.#uflag || uflag;
+ return re;
+ })
+ .filter(p => !(this.isStart() && this.isEnd()) || !!p)
+ .join('|');
+ }
+ static #parseGlob(glob, hasMagic, noEmpty = false) {
+ let escaping = false;
+ let re = '';
+ let uflag = false;
+ for (let i = 0; i < glob.length; i++) {
+ const c = glob.charAt(i);
+ if (escaping) {
+ escaping = false;
+ re += (reSpecials.has(c) ? '\\' : '') + c;
+ continue;
+ }
+ if (c === '\\') {
+ if (i === glob.length - 1) {
+ re += '\\\\';
+ }
+ else {
+ escaping = true;
+ }
+ continue;
+ }
+ if (c === '[') {
+ const [src, needUflag, consumed, magic] = (0, brace_expressions_js_1.parseClass)(glob, i);
+ if (consumed) {
+ re += src;
+ uflag = uflag || needUflag;
+ i += consumed - 1;
+ hasMagic = hasMagic || magic;
+ continue;
+ }
+ }
+ if (c === '*') {
+ if (noEmpty && glob === '*')
+ re += starNoEmpty;
+ else
+ re += star;
+ hasMagic = true;
+ continue;
+ }
+ if (c === '?') {
+ re += qmark;
+ hasMagic = true;
+ continue;
+ }
+ re += regExpEscape(c);
+ }
+ return [re, (0, unescape_js_1.unescape)(glob), !!hasMagic, uflag];
+ }
+}
+exports.AST = AST;
+//# sourceMappingURL=ast.js.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/ast.js.map b/node_modules/minimatch/dist/cjs/ast.js.map
new file mode 100644
index 0000000..89b84ac
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/ast.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":";AAAA,8BAA8B;;;AAE9B,iEAAmD;AAEnD,+CAAwC;AAwCxC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAC7D,MAAM,aAAa,GAAG,CAAC,CAAS,EAAoB,EAAE,CACpD,KAAK,CAAC,GAAG,CAAC,CAAgB,CAAC,CAAA;AAE7B,iEAAiE;AACjE,gEAAgE;AAChE,0CAA0C;AAC1C,uEAAuE;AACvE,MAAM,gBAAgB,GAAG,2BAA2B,CAAA;AACpD,MAAM,UAAU,GAAG,SAAS,CAAA;AAE5B,uEAAuE;AACvE,qEAAqE;AACrE,qEAAqE;AACrE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAC3C,0DAA0D;AAC1D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;AACrC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAA;AAC7C,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CACjC,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;AAE/C,gCAAgC;AAChC,MAAM,KAAK,GAAG,MAAM,CAAA;AAEpB,gCAAgC;AAChC,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAA;AACzB,0EAA0E;AAC1E,sCAAsC;AACtC,MAAM,WAAW,GAAG,KAAK,GAAG,IAAI,CAAA;AAEhC,yEAAyE;AACzE,2DAA2D;AAE3D,MAAa,GAAG;IACd,IAAI,CAAoB;IACf,KAAK,CAAK;IAEnB,SAAS,CAAU;IACnB,MAAM,GAAY,KAAK,CAAA;IACvB,MAAM,GAAqB,EAAE,CAAA;IACpB,OAAO,CAAM;IACb,YAAY,CAAQ;IAC7B,KAAK,CAAO;IACZ,WAAW,GAAY,KAAK,CAAA;IAC5B,QAAQ,CAAkB;IAC1B,SAAS,CAAS;IAClB,kDAAkD;IAClD,uCAAuC;IACvC,SAAS,GAAY,KAAK,CAAA;IAE1B,YACE,IAAwB,EACxB,MAAY,EACZ,UAA4B,EAAE;QAE9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,kCAAkC;QAClC,IAAI,IAAI;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;QACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA;QACnE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;QACxD,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACnE,CAAC;IAED,IAAI,QAAQ;QACV,qBAAqB;QACrB,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAA;QACvD,oBAAoB;QACpB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;YAC3B,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,SAAQ;YACnC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;SACzD;QACD,wEAAwE;QACxE,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED,2BAA2B;IAC3B,QAAQ;QACN,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAA;QACvD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;SACnE;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,SAAS;gBACpB,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA;SACrE;IACH,CAAC;IAED,SAAS;QACP,qBAAqB;QACrB,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QACpE,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAA;QACjC,oBAAoB;QAEpB,wCAAwC;QACxC,IAAI,CAAC,QAAQ,EAAE,CAAA;QACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;QACvB,IAAI,CAAkB,CAAA;QACtB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE;YAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG;gBAAE,SAAQ;YAC5B,qEAAqE;YACrE,IAAI,CAAC,GAAoB,CAAC,CAAA;YAC1B,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAA;YAClB,OAAO,EAAE,EAAE;gBACT,KACE,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,CAAC,EAC1B,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAChC,CAAC,EAAE,EACH;oBACA,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE;wBAC3B,qBAAqB;wBACrB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;4BAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;yBAChD;wBACD,oBAAoB;wBACpB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;qBAC1B;iBACF;gBACD,CAAC,GAAG,EAAE,CAAA;gBACN,EAAE,GAAG,CAAC,CAAC,OAAO,CAAA;aACf;SACF;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,GAAG,KAAuB;QAC7B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACrB,IAAI,CAAC,KAAK,EAAE;gBAAE,SAAQ;YACtB,qBAAqB;YACrB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE;gBACtE,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAA;aACtC;YACD,oBAAoB;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SACpB;IACH,CAAC;IAED,MAAM;QACJ,MAAM,GAAG,GACP,IAAI,CAAC,IAAI,KAAK,IAAI;YAChB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAC/D,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACjD,IACE,IAAI,CAAC,KAAK,EAAE;YACZ,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK;gBAClB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,EACzD;YACA,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;SACb;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QACpC,kDAAkD;QAClD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;YAAE,OAAO,KAAK,CAAA;QAC1C,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QACxC,yEAAyE;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAA;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACtB,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;gBAC3C,OAAO,KAAK,CAAA;aACb;SACF;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QACpC,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,GAAG;YAAE,OAAO,IAAI,CAAA;QAC3C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;YAAE,OAAO,KAAK,CAAA;QACxC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;QAC5C,0CAA0C;QAC1C,qBAAqB;QACrB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACxD,oBAAoB;QACpB,OAAO,IAAI,CAAC,YAAY,KAAK,EAAE,GAAG,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,CAAC,IAAkB;QACvB,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;;YACxC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,MAAW;QACf,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACpC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;YAC3B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;SACZ;QACD,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,CAAC,SAAS,CACd,GAAW,EACX,GAAQ,EACR,GAAW,EACX,GAAqB;QAErB,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,IAAI,UAAU,GAAG,CAAC,CAAC,CAAA;QACnB,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE;YACrB,qDAAqD;YACrD,IAAI,CAAC,GAAG,GAAG,CAAA;YACX,IAAI,GAAG,GAAG,EAAE,CAAA;YACZ,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE;gBACrB,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAA;gBACzB,2DAA2D;gBAC3D,0BAA0B;gBAC1B,IAAI,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;oBAC1B,QAAQ,GAAG,CAAC,QAAQ,CAAA;oBACpB,GAAG,IAAI,CAAC,CAAA;oBACR,SAAQ;iBACT;gBAED,IAAI,OAAO,EAAE;oBACX,IAAI,CAAC,KAAK,UAAU,GAAG,CAAC,EAAE;wBACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE;4BAC1B,QAAQ,GAAG,IAAI,CAAA;yBAChB;qBACF;yBAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,GAAG,CAAC,IAAI,QAAQ,CAAC,EAAE;wBAC3D,OAAO,GAAG,KAAK,CAAA;qBAChB;oBACD,GAAG,IAAI,CAAC,CAAA;oBACR,SAAQ;iBACT;qBAAM,IAAI,CAAC,KAAK,GAAG,EAAE;oBACpB,OAAO,GAAG,IAAI,CAAA;oBACd,UAAU,GAAG,CAAC,CAAA;oBACd,QAAQ,GAAG,KAAK,CAAA;oBAChB,GAAG,IAAI,CAAC,CAAA;oBACR,SAAQ;iBACT;gBAED,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;oBAC3D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBACb,GAAG,GAAG,EAAE,CAAA;oBACR,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;oBAC3B,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;oBACnC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBACb,SAAQ;iBACT;gBACD,GAAG,IAAI,CAAC,CAAA;aACT;YACD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACb,OAAO,CAAC,CAAA;SACT;QAED,wCAAwC;QACxC,uBAAuB;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;QACf,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC7B,MAAM,KAAK,GAAU,EAAE,CAAA;QACvB,IAAI,GAAG,GAAG,EAAE,CAAA;QACZ,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE;YACrB,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAA;YACzB,2DAA2D;YAC3D,0BAA0B;YAC1B,IAAI,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;gBAC1B,QAAQ,GAAG,CAAC,QAAQ,CAAA;gBACpB,GAAG,IAAI,CAAC,CAAA;gBACR,SAAQ;aACT;YAED,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,KAAK,UAAU,GAAG,CAAC,EAAE;oBACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE;wBAC1B,QAAQ,GAAG,IAAI,CAAA;qBAChB;iBACF;qBAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,GAAG,CAAC,IAAI,QAAQ,CAAC,EAAE;oBAC3D,OAAO,GAAG,KAAK,CAAA;iBAChB;gBACD,GAAG,IAAI,CAAC,CAAA;gBACR,SAAQ;aACT;iBAAM,IAAI,CAAC,KAAK,GAAG,EAAE;gBACpB,OAAO,GAAG,IAAI,CAAA;gBACd,UAAU,GAAG,CAAC,CAAA;gBACd,QAAQ,GAAG,KAAK,CAAA;gBAChB,GAAG,IAAI,CAAC,CAAA;gBACR,SAAQ;aACT;YAED,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,GAAG,GAAG,EAAE,CAAA;gBACR,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;gBAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;gBACnC,SAAQ;aACT;YACD,IAAI,CAAC,KAAK,GAAG,EAAE;gBACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,GAAG,GAAG,EAAE,CAAA;gBACR,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAChB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBACzB,SAAQ;aACT;YACD,IAAI,CAAC,KAAK,GAAG,EAAE;gBACb,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBACzC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAA;iBACrB;gBACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,GAAG,GAAG,EAAE,CAAA;gBACR,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAA;gBACxB,OAAO,CAAC,CAAA;aACT;YACD,GAAG,IAAI,CAAC,CAAA;SACT;QAED,qBAAqB;QACrB,kEAAkE;QAClE,iCAAiC;QACjC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;QACf,GAAG,CAAC,SAAS,GAAG,SAAS,CAAA;QACzB,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACrC,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,OAAe,EAAE,UAA4B,EAAE;QAC7D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAC7C,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;QACvC,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,oEAAoE;IACpE,iBAAiB;IACjB,WAAW;QACT,gCAAgC;QAChC,qBAAqB;QACrB,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;QACxD,oBAAoB;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC5B,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QACzD,+DAA+D;QAC/D,mEAAmE;QACnE,sCAAsC;QACtC,MAAM,QAAQ,GACZ,QAAQ;YACR,IAAI,CAAC,SAAS;YACd,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;gBACnB,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe;gBAC9B,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAC9C,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO,IAAI,CAAA;SACZ;QAED,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACpE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE;YACjD,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,IAAI;SACZ,CAAC,CAAA;IACJ,CAAC;IAED,qEAAqE;IACrE,qEAAqE;IACrE,yEAAyE;IACzE,sEAAsE;IACtE,qEAAqE;IACrE,wEAAwE;IACxE,oEAAoE;IACpE,0DAA0D;IAC1D,EAAE;IACF,uCAAuC;IACvC,4BAA4B;IAC5B,wDAAwD;IACxD,uCAAuC;IACvC,8CAA8C;IAC9C,UAAU;IACV,4BAA4B;IAC5B,YAAY;IACZ,EAAE;IACF,mEAAmE;IACnE,wBAAwB;IACxB,iDAAiD;IACjD,8BAA8B;IAC9B,8DAA8D;IAC9D,uCAAuC;IACvC,8CAA8C;IAC9C,UAAU;IACV,gDAAgD;IAChD,iBAAiB;IACjB,EAAE;IACF,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,eAAe;IACf,EAAE;IACF,wEAAwE;IACxE,4DAA4D;IAC5D,iEAAiE;IACjE,4BAA4B;IAC5B,8DAA8D;IAC9D,6CAA6C;IAC7C,oDAAoD;IACpD,EAAE;IACF,uEAAuE;IACvE,gEAAgE;IAChE,EAAE;IACF,sEAAsE;IACtE,qCAAqC;IACrC,EAAE;IACF,0EAA0E;IAC1E,2EAA2E;IAC3E,EAAE;IACF,kBAAkB;IAClB,+CAA+C;IAC/C,4CAA4C;IAC5C,uEAAuE;IACvE,EAAE;IACF,6EAA6E;IAC7E,0EAA0E;IAC1E,sEAAsE;IACtE,sCAAsC;IACtC,EAAE;IACF,yEAAyE;IACzE,oEAAoE;IACpE,0CAA0C;IAC1C,EAAE;IACF,2BAA2B;IAC3B,sEAAsE;IACtE,qEAAqE;IACrE,uEAAuE;IACvE,cAAc,CACZ,QAAkB;QAElB,MAAM,GAAG,GAAG,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAA;QAC3C,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,IAAI,CAAC,SAAS,EAAE,CAAA;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAA;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM;iBACpB,GAAG,CAAC,CAAC,CAAC,EAAE;gBACP,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,GAC5B,OAAO,CAAC,KAAK,QAAQ;oBACnB,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;oBAC5C,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;gBAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAA;gBAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAA;gBAClC,OAAO,EAAE,CAAA;YACX,CAAC,CAAC;iBACD,IAAI,CAAC,EAAE,CAAC,CAAA;YAEX,IAAI,KAAK,GAAG,EAAE,CAAA;YACd,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;gBAClB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;oBACtC,+DAA+D;oBAC/D,+CAA+C;oBAE/C,gEAAgE;oBAChE,+CAA+C;oBAC/C,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC1D,IAAI,CAAC,cAAc,EAAE;wBACnB,MAAM,GAAG,GAAG,eAAe,CAAA;wBAC3B,sDAAsD;wBACtD,oBAAoB;wBACpB,MAAM,UAAU;wBACd,uDAAuD;wBACvD,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC/B,8CAA8C;4BAC9C,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;4BACjD,gDAAgD;4BAChD,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;wBACtD,2DAA2D;wBAC3D,4CAA4C;wBAC5C,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;wBAE7D,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;qBACpE;iBACF;aACF;YAED,6DAA6D;YAC7D,IAAI,GAAG,GAAG,EAAE,CAAA;YACZ,IACE,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,KAAK,CAAC,WAAW;gBACtB,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,GAAG,EAC1B;gBACA,GAAG,GAAG,WAAW,CAAA;aAClB;YACD,MAAM,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,CAAA;YAC/B,OAAO;gBACL,KAAK;gBACL,IAAA,sBAAQ,EAAC,GAAG,CAAC;gBACb,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnC,IAAI,CAAC,MAAM;aACZ,CAAA;SACF;QAED,iEAAiE;QACjE,iEAAiE;QACjE,oCAAoC;QAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAA;QACvD,uBAAuB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAA;QACrD,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;QAEnC,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE;YAChE,mEAAmE;YACnE,2BAA2B;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;YACzB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;YACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;YAChB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;YAC1B,OAAO,CAAC,CAAC,EAAE,IAAA,sBAAQ,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;SACpD;QAED,mCAAmC;QACnC,IAAI,cAAc,GAChB,CAAC,QAAQ,IAAI,QAAQ,IAAI,GAAG,IAAI,CAAC,UAAU;YACzC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAI,cAAc,KAAK,IAAI,EAAE;YAC3B,cAAc,GAAG,EAAE,CAAA;SACpB;QACD,IAAI,cAAc,EAAE;YAClB,IAAI,GAAG,MAAM,IAAI,OAAO,cAAc,KAAK,CAAA;SAC5C;QAED,sDAAsD;QACtD,IAAI,KAAK,GAAG,EAAE,CAAA;QACd,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE;YACvC,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAA;SACjE;aAAM;YACL,MAAM,KAAK,GACT,IAAI,CAAC,IAAI,KAAK,GAAG;gBACf,CAAC,CAAC,iDAAiD;oBACjD,IAAI;wBACJ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;wBACvD,IAAI;wBACJ,GAAG;gBACL,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG;oBACnB,CAAC,CAAC,GAAG;oBACL,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG;wBACnB,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,cAAc;4BACrC,CAAC,CAAC,GAAG;4BACL,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,cAAc;gCACrC,CAAC,CAAC,IAAI;gCACN,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA;YACrB,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAA;SAC7B;QACD,OAAO;YACL,KAAK;YACL,IAAA,sBAAQ,EAAC,IAAI,CAAC;YACd,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YACnC,IAAI,CAAC,MAAM;SACZ,CAAA;IACH,CAAC;IAED,cAAc,CAAC,GAAY;QACzB,OAAO,IAAI,CAAC,MAAM;aACf,GAAG,CAAC,CAAC,CAAC,EAAE;YACP,+CAA+C;YAC/C,qBAAqB;YACrB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;gBACzB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;aAChD;YACD,oBAAoB;YACpB,iEAAiE;YACjE,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;YACvD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAA;YAClC,OAAO,EAAE,CAAA;QACX,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACrD,IAAI,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IAED,MAAM,CAAC,UAAU,CACf,IAAY,EACZ,QAA6B,EAC7B,UAAmB,KAAK;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,EAAE,GAAG,EAAE,CAAA;QACX,IAAI,KAAK,GAAG,KAAK,CAAA;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACxB,IAAI,QAAQ,EAAE;gBACZ,QAAQ,GAAG,KAAK,CAAA;gBAChB,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;gBACzC,SAAQ;aACT;YACD,IAAI,CAAC,KAAK,IAAI,EAAE;gBACd,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBACzB,EAAE,IAAI,MAAM,CAAA;iBACb;qBAAM;oBACL,QAAQ,GAAG,IAAI,CAAA;iBAChB;gBACD,SAAQ;aACT;YACD,IAAI,CAAC,KAAK,GAAG,EAAE;gBACb,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,IAAA,iCAAU,EAAC,IAAI,EAAE,CAAC,CAAC,CAAA;gBAC7D,IAAI,QAAQ,EAAE;oBACZ,EAAE,IAAI,GAAG,CAAA;oBACT,KAAK,GAAG,KAAK,IAAI,SAAS,CAAA;oBAC1B,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAA;oBACjB,QAAQ,GAAG,QAAQ,IAAI,KAAK,CAAA;oBAC5B,SAAQ;iBACT;aACF;YACD,IAAI,CAAC,KAAK,GAAG,EAAE;gBACb,IAAI,OAAO,IAAI,IAAI,KAAK,GAAG;oBAAE,EAAE,IAAI,WAAW,CAAA;;oBACzC,EAAE,IAAI,IAAI,CAAA;gBACf,QAAQ,GAAG,IAAI,CAAA;gBACf,SAAQ;aACT;YACD,IAAI,CAAC,KAAK,GAAG,EAAE;gBACb,EAAE,IAAI,KAAK,CAAA;gBACX,QAAQ,GAAG,IAAI,CAAA;gBACf,SAAQ;aACT;YACD,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,CAAA;SACtB;QACD,OAAO,CAAC,EAAE,EAAE,IAAA,sBAAQ,EAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;CACF;AA3kBD,kBA2kBC","sourcesContent":["// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n// 1 2 3 4 5 6 1 2 3 46 5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n// v----- .* because there's more following,\n// v v otherwise, .+ because it must be\n// v v *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n// copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set<ExtglobType>(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string): c is ExtglobType =>\n types.has(c as ExtglobType)\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nexport class AST {\n type: ExtglobType | null\n readonly #root: AST\n\n #hasMagic?: boolean\n #uflag: boolean = false\n #parts: (string | AST)[] = []\n readonly #parent?: AST\n readonly #parentIndex: number\n #negs: AST[]\n #filledNegs: boolean = false\n #options: MinimatchOptions\n #toString?: string\n // set to true if it's an extglob with no children\n // (which really means one child of '')\n #emptyExt: boolean = false\n\n constructor(\n type: ExtglobType | null,\n parent?: AST,\n options: MinimatchOptions = {}\n ) {\n this.type = type\n // extglobs are inherently magical\n if (type) this.#hasMagic = true\n this.#parent = parent\n this.#root = this.#parent ? this.#parent.#root : this\n this.#options = this.#root === this ? options : this.#root.#options\n this.#negs = this.#root === this ? [] : this.#root.#negs\n if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n }\n\n get hasMagic(): boolean | undefined {\n /* c8 ignore start */\n if (this.#hasMagic !== undefined) return this.#hasMagic\n /* c8 ignore stop */\n for (const p of this.#parts) {\n if (typeof p === 'string') continue\n if (p.type || p.hasMagic) return (this.#hasMagic = true)\n }\n // note: will be undefined until we generate the regexp src and find out\n return this.#hasMagic\n }\n\n // reconstructs the pattern\n toString(): string {\n if (this.#toString !== undefined) return this.#toString\n if (!this.type) {\n return (this.#toString = this.#parts.map(p => String(p)).join(''))\n } else {\n return (this.#toString =\n this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')')\n }\n }\n\n #fillNegs() {\n /* c8 ignore start */\n if (this !== this.#root) throw new Error('should only call on root')\n if (this.#filledNegs) return this\n /* c8 ignore stop */\n\n // call toString() once to fill this out\n this.toString()\n this.#filledNegs = true\n let n: AST | undefined\n while ((n = this.#negs.pop())) {\n if (n.type !== '!') continue\n // walk up the tree, appending everthing that comes AFTER parentIndex\n let p: AST | undefined = n\n let pp = p.#parent\n while (pp) {\n for (\n let i = p.#parentIndex + 1;\n !pp.type && i < pp.#parts.length;\n i++\n ) {\n for (const part of n.#parts) {\n /* c8 ignore start */\n if (typeof part === 'string') {\n throw new Error('string part in extglob AST??')\n }\n /* c8 ignore stop */\n part.copyIn(pp.#parts[i])\n }\n }\n p = pp\n pp = p.#parent\n }\n }\n return this\n }\n\n push(...parts: (string | AST)[]) {\n for (const p of parts) {\n if (p === '') continue\n /* c8 ignore start */\n if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {\n throw new Error('invalid part: ' + p)\n }\n /* c8 ignore stop */\n this.#parts.push(p)\n }\n }\n\n toJSON() {\n const ret: any[] =\n this.type === null\n ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n if (this.isStart() && !this.type) ret.unshift([])\n if (\n this.isEnd() &&\n (this === this.#root ||\n (this.#root.#filledNegs && this.#parent?.type === '!'))\n ) {\n ret.push({})\n }\n return ret\n }\n\n isStart(): boolean {\n if (this.#root === this) return true\n // if (this.type) return !!this.#parent?.isStart()\n if (!this.#parent?.isStart()) return false\n if (this.#parentIndex === 0) return true\n // if everything AHEAD of this is a negation, then it's still the \"start\"\n const p = this.#parent\n for (let i = 0; i < this.#parentIndex; i++) {\n const pp = p.#parts[i]\n if (!(pp instanceof AST && pp.type === '!')) {\n return false\n }\n }\n return true\n }\n\n isEnd(): boolean {\n if (this.#root === this) return true\n if (this.#parent?.type === '!') return true\n if (!this.#parent?.isEnd()) return false\n if (!this.type) return this.#parent?.isEnd()\n // if not root, it'll always have a parent\n /* c8 ignore start */\n const pl = this.#parent ? this.#parent.#parts.length : 0\n /* c8 ignore stop */\n return this.#parentIndex === pl - 1\n }\n\n copyIn(part: AST | string) {\n if (typeof part === 'string') this.push(part)\n else this.push(part.clone(this))\n }\n\n clone(parent: AST) {\n const c = new AST(this.type, parent)\n for (const p of this.#parts) {\n c.copyIn(p)\n }\n return c\n }\n\n static #parseAST(\n str: string,\n ast: AST,\n pos: number,\n opt: MinimatchOptions\n ): number {\n let escaping = false\n let inBrace = false\n let braceStart = -1\n let braceNeg = false\n if (ast.type === null) {\n // outside of a extglob, append until we find a start\n let i = pos\n let acc = ''\n while (i < str.length) {\n const c = str.charAt(i++)\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping\n acc += c\n continue\n }\n\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true\n }\n } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false\n }\n acc += c\n continue\n } else if (c === '[') {\n inBrace = true\n braceStart = i\n braceNeg = false\n acc += c\n continue\n }\n\n if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n ast.push(acc)\n acc = ''\n const ext = new AST(c, ast)\n i = AST.#parseAST(str, ext, i, opt)\n ast.push(ext)\n continue\n }\n acc += c\n }\n ast.push(acc)\n return i\n }\n\n // some kind of extglob, pos is at the (\n // find the next | or )\n let i = pos + 1\n let part = new AST(null, ast)\n const parts: AST[] = []\n let acc = ''\n while (i < str.length) {\n const c = str.charAt(i++)\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping\n acc += c\n continue\n }\n\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true\n }\n } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false\n }\n acc += c\n continue\n } else if (c === '[') {\n inBrace = true\n braceStart = i\n braceNeg = false\n acc += c\n continue\n }\n\n if (isExtglobType(c) && str.charAt(i) === '(') {\n part.push(acc)\n acc = ''\n const ext = new AST(c, part)\n part.push(ext)\n i = AST.#parseAST(str, ext, i, opt)\n continue\n }\n if (c === '|') {\n part.push(acc)\n acc = ''\n parts.push(part)\n part = new AST(null, ast)\n continue\n }\n if (c === ')') {\n if (acc === '' && ast.#parts.length === 0) {\n ast.#emptyExt = true\n }\n part.push(acc)\n acc = ''\n ast.push(...parts, part)\n return i\n }\n acc += c\n }\n\n // unfinished extglob\n // if we got here, it was a malformed extglob! not an extglob, but\n // maybe something else in there.\n ast.type = null\n ast.#hasMagic = undefined\n ast.#parts = [str.substring(pos - 1)]\n return i\n }\n\n static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n const ast = new AST(null, undefined, options)\n AST.#parseAST(pattern, ast, 0, options)\n return ast\n }\n\n // returns the regular expression if there's magic, or the unescaped\n // string if not.\n toMMPattern(): MMRegExp | string {\n // should only be called on root\n /* c8 ignore start */\n if (this !== this.#root) return this.#root.toMMPattern()\n /* c8 ignore stop */\n const glob = this.toString()\n const [re, body, hasMagic, uflag] = this.toRegExpSource()\n // if we're in nocase mode, and not nocaseMagicOnly, then we do\n // still need a regular expression if we have to case-insensitively\n // match capital/lowercase characters.\n const anyMagic =\n hasMagic ||\n this.#hasMagic ||\n (this.#options.nocase &&\n !this.#options.nocaseMagicOnly &&\n glob.toUpperCase() !== glob.toLowerCase())\n if (!anyMagic) {\n return body\n }\n\n const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n return Object.assign(new RegExp(`^${re}$`, flags), {\n _src: re,\n _glob: glob,\n })\n }\n\n // returns the string match, the regexp source, whether there's magic\n // in the regexp (so a regular expression is required) and whether or\n // not the uflag is needed for the regular expression (for posix classes)\n // TODO: instead of injecting the start/end at this point, just return\n // the BODY of the regexp, along with the start/end portions suitable\n // for binding the start/end in either a joined full-path makeRe context\n // (where we bind to (^|/), or a standalone matchPart context (where\n // we bind to ^, and not /). Otherwise slashes get duped!\n //\n // In part-matching mode, the start is:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n // - if dots allowed or not possible: ^\n // - if dots possible and not allowed: ^(?!\\.)\n // end is:\n // - if not isEnd(): nothing\n // - else: $\n //\n // In full-path matching mode, we put the slash at the START of the\n // pattern, so start is:\n // - if first pattern: same as part-matching mode\n // - if not isStart(): nothing\n // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n // - if dots allowed or not possible: /\n // - if dots possible and not allowed: /(?!\\.)\n // end is:\n // - if last pattern, same as part-matching mode\n // - else nothing\n //\n // Always put the (?:$|/) on negated tails, though, because that has to be\n // there to bind the end of the negated pattern portion, and it's easier to\n // just stick it in now rather than try to inject it later in the middle of\n // the pattern.\n //\n // We can just always return the same end, and leave it up to the caller\n // to know whether it's going to be used joined or in parts.\n // And, if the start is adjusted slightly, can do the same there:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n // - if dots allowed or not possible: (?:/|^)\n // - if dots possible and not allowed: (?:/|^)(?!\\.)\n //\n // But it's better to have a simpler binding without a conditional, for\n // performance, so probably better to return both start options.\n //\n // Then the caller just ignores the end if it's not the first pattern,\n // and the start always gets applied.\n //\n // But that's always going to be $ if it's the ending pattern, or nothing,\n // so the caller can just attach $ at the end of the pattern when building.\n //\n // So the todo is:\n // - better detect what kind of start is needed\n // - return both flavors of starting pattern\n // - attach $ at the end of the pattern when creating the actual RegExp\n //\n // Ah, but wait, no, that all only applies to the root when the first pattern\n // is not an extglob. If the first pattern IS an extglob, then we need all\n // that dot prevention biz to live in the extglob portions, because eg\n // +(*|.x*) can match .xy but not .yx.\n //\n // So, return the two flavors if it's #root and the first child is not an\n // AST, otherwise leave it to the child AST to handle it, and there,\n // use the (?:^|/) style of start binding.\n //\n // Even simplified further:\n // - Since the start for a join is eg /(?!\\.) and the start for a part\n // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n // or start or whatever) and prepend ^ or / at the Regexp construction.\n toRegExpSource(\n allowDot?: boolean\n ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n const dot = allowDot ?? !!this.#options.dot\n if (this.#root === this) this.#fillNegs()\n if (!this.type) {\n const noEmpty = this.isStart() && this.isEnd()\n const src = this.#parts\n .map(p => {\n const [re, _, hasMagic, uflag] =\n typeof p === 'string'\n ? AST.#parseGlob(p, this.#hasMagic, noEmpty)\n : p.toRegExpSource(allowDot)\n this.#hasMagic = this.#hasMagic || hasMagic\n this.#uflag = this.#uflag || uflag\n return re\n })\n .join('')\n\n let start = ''\n if (this.isStart()) {\n if (typeof this.#parts[0] === 'string') {\n // this is the string that will match the start of the pattern,\n // so we need to protect against dots and such.\n\n // '.' and '..' cannot match unless the pattern is that exactly,\n // even if it starts with . or dot:true is set.\n const dotTravAllowed =\n this.#parts.length === 1 && justDots.has(this.#parts[0])\n if (!dotTravAllowed) {\n const aps = addPatternStart\n // check if we have a possibility of matching . or ..,\n // and prevent that.\n const needNoTrav =\n // dots are allowed, and the pattern starts with [ or .\n (dot && aps.has(src.charAt(0))) ||\n // the pattern starts with \\., and then [ or .\n (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n // the pattern starts with \\.\\., and then [ or .\n (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n // no need to prevent dots if it can't match a dot, or if a\n // sub-pattern will be preventing it anyway.\n const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : ''\n }\n }\n }\n\n // append the \"end of path portion\" pattern to negation tails\n let end = ''\n if (\n this.isEnd() &&\n this.#root.#filledNegs &&\n this.#parent?.type === '!'\n ) {\n end = '(?:$|\\\\/)'\n }\n const final = start + src + end\n return [\n final,\n unescape(src),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ]\n }\n\n // We need to calculate the body *twice* if it's a repeat pattern\n // at the start, once in nodot mode, then again in dot mode, so a\n // pattern like *(?) can match 'x.y'\n\n const repeated = this.type === '*' || this.type === '+'\n // some kind of extglob\n const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n let body = this.#partsToRegExp(dot)\n\n if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n // invalid extglob, has to at least be *something* present, if it's\n // the entire path portion.\n const s = this.toString()\n this.#parts = [s]\n this.type = null\n this.#hasMagic = undefined\n return [s, unescape(this.toString()), false, false]\n }\n\n // XXX abstract out this map method\n let bodyDotAllowed =\n !repeated || allowDot || dot || !startNoDot\n ? ''\n : this.#partsToRegExp(true)\n if (bodyDotAllowed === body) {\n bodyDotAllowed = ''\n }\n if (bodyDotAllowed) {\n body = `(?:${body})(?:${bodyDotAllowed})*?`\n }\n\n // an empty !() is exactly equivalent to a starNoEmpty\n let final = ''\n if (this.type === '!' && this.#emptyExt) {\n final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n } else {\n const close =\n this.type === '!'\n ? // !() must match something,but !(x) can match ''\n '))' +\n (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n star +\n ')'\n : this.type === '@'\n ? ')'\n : this.type === '?'\n ? ')?'\n : this.type === '+' && bodyDotAllowed\n ? ')'\n : this.type === '*' && bodyDotAllowed\n ? `)?`\n : `)${this.type}`\n final = start + body + close\n }\n return [\n final,\n unescape(body),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ]\n }\n\n #partsToRegExp(dot: boolean) {\n return this.#parts\n .map(p => {\n // extglob ASTs should only contain parent ASTs\n /* c8 ignore start */\n if (typeof p === 'string') {\n throw new Error('string type in extglob ast??')\n }\n /* c8 ignore stop */\n // can ignore hasMagic, because extglobs are already always magic\n const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n this.#uflag = this.#uflag || uflag\n return re\n })\n .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n .join('|')\n }\n\n static #parseGlob(\n glob: string,\n hasMagic: boolean | undefined,\n noEmpty: boolean = false\n ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n let escaping = false\n let re = ''\n let uflag = false\n for (let i = 0; i < glob.length; i++) {\n const c = glob.charAt(i)\n if (escaping) {\n escaping = false\n re += (reSpecials.has(c) ? '\\\\' : '') + c\n continue\n }\n if (c === '\\\\') {\n if (i === glob.length - 1) {\n re += '\\\\\\\\'\n } else {\n escaping = true\n }\n continue\n }\n if (c === '[') {\n const [src, needUflag, consumed, magic] = parseClass(glob, i)\n if (consumed) {\n re += src\n uflag = uflag || needUflag\n i += consumed - 1\n hasMagic = hasMagic || magic\n continue\n }\n }\n if (c === '*') {\n if (noEmpty && glob === '*') re += starNoEmpty\n else re += star\n hasMagic = true\n continue\n }\n if (c === '?') {\n re += qmark\n hasMagic = true\n continue\n }\n re += regExpEscape(c)\n }\n return [re, unescape(glob), !!hasMagic, uflag]\n }\n}\n"]} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/brace-expressions.d.ts b/node_modules/minimatch/dist/cjs/brace-expressions.d.ts
new file mode 100644
index 0000000..b1572de
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/brace-expressions.d.ts
@@ -0,0 +1,8 @@
+export type ParseClassResult = [
+ src: string,
+ uFlag: boolean,
+ consumed: number,
+ hasMagic: boolean
+];
+export declare const parseClass: (glob: string, position: number) => ParseClassResult;
+//# sourceMappingURL=brace-expressions.d.ts.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/brace-expressions.d.ts.map b/node_modules/minimatch/dist/cjs/brace-expressions.d.ts.map
new file mode 100644
index 0000000..d394964
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/brace-expressions.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"brace-expressions.d.ts","sourceRoot":"","sources":["../../src/brace-expressions.ts"],"names":[],"mappings":"AA+BA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,OAAO;CAClB,CAAA;AAQD,eAAO,MAAM,UAAU,SACf,MAAM,YACF,MAAM,qBA8HjB,CAAA"} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/brace-expressions.js b/node_modules/minimatch/dist/cjs/brace-expressions.js
new file mode 100644
index 0000000..0e13eef
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/brace-expressions.js
@@ -0,0 +1,152 @@
+"use strict";
+// translate the various posix character classes into unicode properties
+// this works across all unicode locales
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.parseClass = void 0;
+// { <posix class>: [<translation>, /u flag required, negated]
+const posixClasses = {
+ '[:alnum:]': ['\\p{L}\\p{Nl}\\p{Nd}', true],
+ '[:alpha:]': ['\\p{L}\\p{Nl}', true],
+ '[:ascii:]': ['\\x' + '00-\\x' + '7f', false],
+ '[:blank:]': ['\\p{Zs}\\t', true],
+ '[:cntrl:]': ['\\p{Cc}', true],
+ '[:digit:]': ['\\p{Nd}', true],
+ '[:graph:]': ['\\p{Z}\\p{C}', true, true],
+ '[:lower:]': ['\\p{Ll}', true],
+ '[:print:]': ['\\p{C}', true],
+ '[:punct:]': ['\\p{P}', true],
+ '[:space:]': ['\\p{Z}\\t\\r\\n\\v\\f', true],
+ '[:upper:]': ['\\p{Lu}', true],
+ '[:word:]': ['\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}', true],
+ '[:xdigit:]': ['A-Fa-f0-9', false],
+};
+// only need to escape a few things inside of brace expressions
+// escapes: [ \ ] -
+const braceEscape = (s) => s.replace(/[[\]\\-]/g, '\\$&');
+// escape all regexp magic characters
+const regexpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
+// everything has already been escaped, we just have to join
+const rangesToString = (ranges) => ranges.join('');
+// takes a glob string at a posix brace expression, and returns
+// an equivalent regular expression source, and boolean indicating
+// whether the /u flag needs to be applied, and the number of chars
+// consumed to parse the character class.
+// This also removes out of order ranges, and returns ($.) if the
+// entire class just no good.
+const parseClass = (glob, position) => {
+ const pos = position;
+ /* c8 ignore start */
+ if (glob.charAt(pos) !== '[') {
+ throw new Error('not in a brace expression');
+ }
+ /* c8 ignore stop */
+ const ranges = [];
+ const negs = [];
+ let i = pos + 1;
+ let sawStart = false;
+ let uflag = false;
+ let escaping = false;
+ let negate = false;
+ let endPos = pos;
+ let rangeStart = '';
+ WHILE: while (i < glob.length) {
+ const c = glob.charAt(i);
+ if ((c === '!' || c === '^') && i === pos + 1) {
+ negate = true;
+ i++;
+ continue;
+ }
+ if (c === ']' && sawStart && !escaping) {
+ endPos = i + 1;
+ break;
+ }
+ sawStart = true;
+ if (c === '\\') {
+ if (!escaping) {
+ escaping = true;
+ i++;
+ continue;
+ }
+ // escaped \ char, fall through and treat like normal char
+ }
+ if (c === '[' && !escaping) {
+ // either a posix class, a collation equivalent, or just a [
+ for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {
+ if (glob.startsWith(cls, i)) {
+ // invalid, [a-[] is fine, but not [a-[:alpha]]
+ if (rangeStart) {
+ return ['$.', false, glob.length - pos, true];
+ }
+ i += cls.length;
+ if (neg)
+ negs.push(unip);
+ else
+ ranges.push(unip);
+ uflag = uflag || u;
+ continue WHILE;
+ }
+ }
+ }
+ // now it's just a normal character, effectively
+ escaping = false;
+ if (rangeStart) {
+ // throw this range away if it's not valid, but others
+ // can still match.
+ if (c > rangeStart) {
+ ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));
+ }
+ else if (c === rangeStart) {
+ ranges.push(braceEscape(c));
+ }
+ rangeStart = '';
+ i++;
+ continue;
+ }
+ // now might be the start of a range.
+ // can be either c-d or c-] or c<more...>] or c] at this point
+ if (glob.startsWith('-]', i + 1)) {
+ ranges.push(braceEscape(c + '-'));
+ i += 2;
+ continue;
+ }
+ if (glob.startsWith('-', i + 1)) {
+ rangeStart = c;
+ i += 2;
+ continue;
+ }
+ // not the start of a range, just a single character
+ ranges.push(braceEscape(c));
+ i++;
+ }
+ if (endPos < i) {
+ // didn't see the end of the class, not a valid class,
+ // but might still be valid as a literal match.
+ return ['', false, 0, false];
+ }
+ // if we got no ranges and no negates, then we have a range that
+ // cannot possibly match anything, and that poisons the whole glob
+ if (!ranges.length && !negs.length) {
+ return ['$.', false, glob.length - pos, true];
+ }
+ // if we got one positive range, and it's a single character, then that's
+ // not actually a magic pattern, it's just that one literal character.
+ // we should not treat that as "magic", we should just return the literal
+ // character. [_] is a perfectly valid way to escape glob magic chars.
+ if (negs.length === 0 &&
+ ranges.length === 1 &&
+ /^\\?.$/.test(ranges[0]) &&
+ !negate) {
+ const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];
+ return [regexpEscape(r), false, endPos - pos, false];
+ }
+ const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';
+ const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';
+ const comb = ranges.length && negs.length
+ ? '(' + sranges + '|' + snegs + ')'
+ : ranges.length
+ ? sranges
+ : snegs;
+ return [comb, uflag, endPos - pos, true];
+};
+exports.parseClass = parseClass;
+//# sourceMappingURL=brace-expressions.js.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/brace-expressions.js.map b/node_modules/minimatch/dist/cjs/brace-expressions.js.map
new file mode 100644
index 0000000..86b0475
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/brace-expressions.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"brace-expressions.js","sourceRoot":"","sources":["../../src/brace-expressions.ts"],"names":[],"mappings":";AAAA,wEAAwE;AACxE,wCAAwC;;;AAExC,8DAA8D;AAC9D,MAAM,YAAY,GAA0D;IAC1E,WAAW,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAAC;IAC3C,WAAW,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC;IACpC,WAAW,EAAE,CAAC,KAAK,GAAG,QAAQ,GAAG,IAAI,EAAE,KAAK,CAAC;IAC7C,WAAW,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;IACjC,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IAC9B,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IAC9B,WAAW,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC;IACzC,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IAC9B,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;IAC7B,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;IAC7B,WAAW,EAAE,CAAC,uBAAuB,EAAE,IAAI,CAAC;IAC5C,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IAC9B,UAAU,EAAE,CAAC,6BAA6B,EAAE,IAAI,CAAC;IACjD,YAAY,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;CACnC,CAAA;AAED,+DAA+D;AAC/D,mBAAmB;AACnB,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;AACjE,qCAAqC;AACrC,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CACjC,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;AAE/C,4DAA4D;AAC5D,MAAM,cAAc,GAAG,CAAC,MAAgB,EAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AASpE,+DAA+D;AAC/D,kEAAkE;AAClE,mEAAmE;AACnE,yCAAyC;AACzC,iEAAiE;AACjE,6BAA6B;AACtB,MAAM,UAAU,GAAG,CACxB,IAAY,EACZ,QAAgB,EACE,EAAE;IACpB,MAAM,GAAG,GAAG,QAAQ,CAAA;IACpB,qBAAqB;IACrB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;KAC7C;IACD,oBAAoB;IACpB,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,IAAI,GAAa,EAAE,CAAA;IAEzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;IACf,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,KAAK,GAAG,KAAK,CAAA;IACjB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,MAAM,GAAG,GAAG,CAAA;IAChB,IAAI,UAAU,GAAG,EAAE,CAAA;IACnB,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACxB,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE;YAC7C,MAAM,GAAG,IAAI,CAAA;YACb,CAAC,EAAE,CAAA;YACH,SAAQ;SACT;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACtC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAA;YACd,MAAK;SACN;QAED,QAAQ,GAAG,IAAI,CAAA;QACf,IAAI,CAAC,KAAK,IAAI,EAAE;YACd,IAAI,CAAC,QAAQ,EAAE;gBACb,QAAQ,GAAG,IAAI,CAAA;gBACf,CAAC,EAAE,CAAA;gBACH,SAAQ;aACT;YACD,0DAA0D;SAC3D;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC1B,4DAA4D;YAC5D,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;gBAChE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;oBAC3B,+CAA+C;oBAC/C,IAAI,UAAU,EAAE;wBACd,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,CAAA;qBAC9C;oBACD,CAAC,IAAI,GAAG,CAAC,MAAM,CAAA;oBACf,IAAI,GAAG;wBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;;wBACnB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACtB,KAAK,GAAG,KAAK,IAAI,CAAC,CAAA;oBAClB,SAAS,KAAK,CAAA;iBACf;aACF;SACF;QAED,gDAAgD;QAChD,QAAQ,GAAG,KAAK,CAAA;QAChB,IAAI,UAAU,EAAE;YACd,sDAAsD;YACtD,mBAAmB;YACnB,IAAI,CAAC,GAAG,UAAU,EAAE;gBAClB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;aAC5D;iBAAM,IAAI,CAAC,KAAK,UAAU,EAAE;gBAC3B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;aAC5B;YACD,UAAU,GAAG,EAAE,CAAA;YACf,CAAC,EAAE,CAAA;YACH,SAAQ;SACT;QAED,qCAAqC;QACrC,8DAA8D;QAC9D,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;YAChC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;YACjC,CAAC,IAAI,CAAC,CAAA;YACN,SAAQ;SACT;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;YAC/B,UAAU,GAAG,CAAC,CAAA;YACd,CAAC,IAAI,CAAC,CAAA;YACN,SAAQ;SACT;QAED,oDAAoD;QACpD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3B,CAAC,EAAE,CAAA;KACJ;IAED,IAAI,MAAM,GAAG,CAAC,EAAE;QACd,sDAAsD;QACtD,+CAA+C;QAC/C,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;KAC7B;IAED,gEAAgE;IAChE,kEAAkE;IAClE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QAClC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,CAAA;KAC9C;IAED,yEAAyE;IACzE,sEAAsE;IACtE,yEAAyE;IACzE,sEAAsE;IACtE,IACE,IAAI,CAAC,MAAM,KAAK,CAAC;QACjB,MAAM,CAAC,MAAM,KAAK,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC,MAAM,EACP;QACA,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAClE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,CAAC,CAAA;KACrD;IAED,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,GAAG,CAAA;IACxE,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA;IACpE,MAAM,IAAI,GACR,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;QAC1B,CAAC,CAAC,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG;QACnC,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,KAAK,CAAA;IAEX,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,CAAA;AAC1C,CAAC,CAAA;AAhIY,QAAA,UAAU,cAgItB","sourcesContent":["// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n\n// { <posix class>: [<translation>, /u flag required, negated]\nconst posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } = {\n '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n '[:cntrl:]': ['\\\\p{Cc}', true],\n '[:digit:]': ['\\\\p{Nd}', true],\n '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n '[:lower:]': ['\\\\p{Ll}', true],\n '[:print:]': ['\\\\p{C}', true],\n '[:punct:]': ['\\\\p{P}', true],\n '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n '[:upper:]': ['\\\\p{Lu}', true],\n '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n '[:xdigit:]': ['A-Fa-f0-9', false],\n}\n\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s: string) => s.replace(/[[\\]\\\\-]/g, '\\\\$&')\n// escape all regexp magic characters\nconst regexpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges: string[]): string => ranges.join('')\n\nexport type ParseClassResult = [\n src: string,\n uFlag: boolean,\n consumed: number,\n hasMagic: boolean\n]\n\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (\n glob: string,\n position: number\n): ParseClassResult => {\n const pos = position\n /* c8 ignore start */\n if (glob.charAt(pos) !== '[') {\n throw new Error('not in a brace expression')\n }\n /* c8 ignore stop */\n const ranges: string[] = []\n const negs: string[] = []\n\n let i = pos + 1\n let sawStart = false\n let uflag = false\n let escaping = false\n let negate = false\n let endPos = pos\n let rangeStart = ''\n WHILE: while (i < glob.length) {\n const c = glob.charAt(i)\n if ((c === '!' || c === '^') && i === pos + 1) {\n negate = true\n i++\n continue\n }\n\n if (c === ']' && sawStart && !escaping) {\n endPos = i + 1\n break\n }\n\n sawStart = true\n if (c === '\\\\') {\n if (!escaping) {\n escaping = true\n i++\n continue\n }\n // escaped \\ char, fall through and treat like normal char\n }\n if (c === '[' && !escaping) {\n // either a posix class, a collation equivalent, or just a [\n for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n if (glob.startsWith(cls, i)) {\n // invalid, [a-[] is fine, but not [a-[:alpha]]\n if (rangeStart) {\n return ['$.', false, glob.length - pos, true]\n }\n i += cls.length\n if (neg) negs.push(unip)\n else ranges.push(unip)\n uflag = uflag || u\n continue WHILE\n }\n }\n }\n\n // now it's just a normal character, effectively\n escaping = false\n if (rangeStart) {\n // throw this range away if it's not valid, but others\n // can still match.\n if (c > rangeStart) {\n ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c))\n } else if (c === rangeStart) {\n ranges.push(braceEscape(c))\n }\n rangeStart = ''\n i++\n continue\n }\n\n // now might be the start of a range.\n // can be either c-d or c-] or c<more...>] or c] at this point\n if (glob.startsWith('-]', i + 1)) {\n ranges.push(braceEscape(c + '-'))\n i += 2\n continue\n }\n if (glob.startsWith('-', i + 1)) {\n rangeStart = c\n i += 2\n continue\n }\n\n // not the start of a range, just a single character\n ranges.push(braceEscape(c))\n i++\n }\n\n if (endPos < i) {\n // didn't see the end of the class, not a valid class,\n // but might still be valid as a literal match.\n return ['', false, 0, false]\n }\n\n // if we got no ranges and no negates, then we have a range that\n // cannot possibly match anything, and that poisons the whole glob\n if (!ranges.length && !negs.length) {\n return ['$.', false, glob.length - pos, true]\n }\n\n // if we got one positive range, and it's a single character, then that's\n // not actually a magic pattern, it's just that one literal character.\n // we should not treat that as \"magic\", we should just return the literal\n // character. [_] is a perfectly valid way to escape glob magic chars.\n if (\n negs.length === 0 &&\n ranges.length === 1 &&\n /^\\\\?.$/.test(ranges[0]) &&\n !negate\n ) {\n const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]\n return [regexpEscape(r), false, endPos - pos, false]\n }\n\n const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'\n const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'\n const comb =\n ranges.length && negs.length\n ? '(' + sranges + '|' + snegs + ')'\n : ranges.length\n ? sranges\n : snegs\n\n return [comb, uflag, endPos - pos, true]\n}\n"]} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/escape.d.ts b/node_modules/minimatch/dist/cjs/escape.d.ts
new file mode 100644
index 0000000..dc3e316
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/escape.d.ts
@@ -0,0 +1,12 @@
+import { MinimatchOptions } from './index.js';
+/**
+ * Escape all magic characters in a glob pattern.
+ *
+ * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}
+ * option is used, then characters are escaped by wrapping in `[]`, because
+ * a magic character wrapped in a character class can only be satisfied by
+ * that exact character. In this mode, `\` is _not_ escaped, because it is
+ * not interpreted as a magic character, but instead as a path separator.
+ */
+export declare const escape: (s: string, { windowsPathsNoEscape, }?: Pick<MinimatchOptions, 'windowsPathsNoEscape'>) => string;
+//# sourceMappingURL=escape.d.ts.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/escape.d.ts.map b/node_modules/minimatch/dist/cjs/escape.d.ts.map
new file mode 100644
index 0000000..0779dae
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/escape.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["../../src/escape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,MACd,MAAM,8BAGN,KAAK,gBAAgB,EAAE,sBAAsB,CAAC,WAQlD,CAAA"} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/escape.js b/node_modules/minimatch/dist/cjs/escape.js
new file mode 100644
index 0000000..02a4f8a
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/escape.js
@@ -0,0 +1,22 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.escape = void 0;
+/**
+ * Escape all magic characters in a glob pattern.
+ *
+ * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}
+ * option is used, then characters are escaped by wrapping in `[]`, because
+ * a magic character wrapped in a character class can only be satisfied by
+ * that exact character. In this mode, `\` is _not_ escaped, because it is
+ * not interpreted as a magic character, but instead as a path separator.
+ */
+const escape = (s, { windowsPathsNoEscape = false, } = {}) => {
+ // don't need to escape +@! because we escape the parens
+ // that make those magic, and escaping ! as [!] isn't valid,
+ // because [!]] is a valid glob class meaning not ']'.
+ return windowsPathsNoEscape
+ ? s.replace(/[?*()[\]]/g, '[$&]')
+ : s.replace(/[?*()[\]\\]/g, '\\$&');
+};
+exports.escape = escape;
+//# sourceMappingURL=escape.js.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/escape.js.map b/node_modules/minimatch/dist/cjs/escape.js.map
new file mode 100644
index 0000000..264b2ea
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/escape.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"escape.js","sourceRoot":"","sources":["../../src/escape.ts"],"names":[],"mappings":";;;AACA;;;;;;;;GAQG;AACI,MAAM,MAAM,GAAG,CACpB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,MACsB,EAAE,EACtD,EAAE;IACF,wDAAwD;IACxD,4DAA4D;IAC5D,sDAAsD;IACtD,OAAO,oBAAoB;QACzB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;QACjC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;AACvC,CAAC,CAAA;AAZY,QAAA,MAAM,UAYlB","sourcesContent":["import { MinimatchOptions } from './index.js'\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character. In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (\n s: string,\n {\n windowsPathsNoEscape = false,\n }: Pick<MinimatchOptions, 'windowsPathsNoEscape'> = {}\n) => {\n // don't need to escape +@! because we escape the parens\n // that make those magic, and escaping ! as [!] isn't valid,\n // because [!]] is a valid glob class meaning not ']'.\n return windowsPathsNoEscape\n ? s.replace(/[?*()[\\]]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n"]} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/index.d.ts b/node_modules/minimatch/dist/cjs/index.d.ts
new file mode 100644
index 0000000..41d16a9
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/index.d.ts
@@ -0,0 +1,94 @@
+import { AST } from './ast.js';
+type Platform = 'aix' | 'android' | 'darwin' | 'freebsd' | 'haiku' | 'linux' | 'openbsd' | 'sunos' | 'win32' | 'cygwin' | 'netbsd';
+export interface MinimatchOptions {
+ nobrace?: boolean;
+ nocomment?: boolean;
+ nonegate?: boolean;
+ debug?: boolean;
+ noglobstar?: boolean;
+ noext?: boolean;
+ nonull?: boolean;
+ windowsPathsNoEscape?: boolean;
+ allowWindowsEscape?: boolean;
+ partial?: boolean;
+ dot?: boolean;
+ nocase?: boolean;
+ nocaseMagicOnly?: boolean;
+ magicalBraces?: boolean;
+ matchBase?: boolean;
+ flipNegate?: boolean;
+ preserveMultipleSlashes?: boolean;
+ optimizationLevel?: number;
+ platform?: Platform;
+ windowsNoMagicRoot?: boolean;
+}
+export declare const minimatch: {
+ (p: string, pattern: string, options?: MinimatchOptions): boolean;
+ sep: Sep;
+ GLOBSTAR: typeof GLOBSTAR;
+ filter: (pattern: string, options?: MinimatchOptions) => (p: string) => boolean;
+ defaults: (def: MinimatchOptions) => typeof minimatch;
+ braceExpand: (pattern: string, options?: MinimatchOptions) => string[];
+ makeRe: (pattern: string, options?: MinimatchOptions) => false | MMRegExp;
+ match: (list: string[], pattern: string, options?: MinimatchOptions) => string[];
+ AST: typeof AST;
+ Minimatch: typeof Minimatch;
+ escape: (s: string, { windowsPathsNoEscape, }?: Pick<MinimatchOptions, "windowsPathsNoEscape">) => string;
+ unescape: (s: string, { windowsPathsNoEscape, }?: Pick<MinimatchOptions, "windowsPathsNoEscape">) => string;
+};
+type Sep = '\\' | '/';
+export declare const sep: Sep;
+export declare const GLOBSTAR: unique symbol;
+export declare const filter: (pattern: string, options?: MinimatchOptions) => (p: string) => boolean;
+export declare const defaults: (def: MinimatchOptions) => typeof minimatch;
+export declare const braceExpand: (pattern: string, options?: MinimatchOptions) => string[];
+export declare const makeRe: (pattern: string, options?: MinimatchOptions) => false | MMRegExp;
+export declare const match: (list: string[], pattern: string, options?: MinimatchOptions) => string[];
+export type MMRegExp = RegExp & {
+ _src?: string;
+ _glob?: string;
+};
+export type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR;
+export type ParseReturn = ParseReturnFiltered | false;
+export declare class Minimatch {
+ options: MinimatchOptions;
+ set: ParseReturnFiltered[][];
+ pattern: string;
+ windowsPathsNoEscape: boolean;
+ nonegate: boolean;
+ negate: boolean;
+ comment: boolean;
+ empty: boolean;
+ preserveMultipleSlashes: boolean;
+ partial: boolean;
+ globSet: string[];
+ globParts: string[][];
+ nocase: boolean;
+ isWindows: boolean;
+ platform: Platform;
+ windowsNoMagicRoot: boolean;
+ regexp: false | null | MMRegExp;
+ constructor(pattern: string, options?: MinimatchOptions);
+ hasMagic(): boolean;
+ debug(..._: any[]): void;
+ make(): void;
+ preprocess(globParts: string[][]): string[][];
+ adjascentGlobstarOptimize(globParts: string[][]): string[][];
+ levelOneOptimize(globParts: string[][]): string[][];
+ levelTwoFileOptimize(parts: string | string[]): string[];
+ firstPhasePreProcess(globParts: string[][]): string[][];
+ secondPhasePreProcess(globParts: string[][]): string[][];
+ partsMatch(a: string[], b: string[], emptyGSMatch?: boolean): false | string[];
+ parseNegate(): void;
+ matchOne(file: string[], pattern: ParseReturn[], partial?: boolean): boolean;
+ braceExpand(): string[];
+ parse(pattern: string): ParseReturn;
+ makeRe(): false | MMRegExp;
+ slashSplit(p: string): string[];
+ match(f: string, partial?: boolean): boolean;
+ static defaults(def: MinimatchOptions): typeof Minimatch;
+}
+export { AST } from './ast.js';
+export { escape } from './escape.js';
+export { unescape } from './unescape.js';
+//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/index.d.ts.map b/node_modules/minimatch/dist/cjs/index.d.ts.map
new file mode 100644
index 0000000..7a14a44
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAe,MAAM,UAAU,CAAA;AAI3C,KAAK,QAAQ,GACT,KAAK,GACL,SAAS,GACT,QAAQ,GACR,SAAS,GACT,OAAO,GACP,OAAO,GACP,SAAS,GACT,OAAO,GACP,OAAO,GACP,QAAQ,GACR,QAAQ,CAAA;AAEZ,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED,eAAO,MAAM,SAAS;QACjB,MAAM,WACA,MAAM,YACN,gBAAgB;;;sBAuGf,MAAM,YAAW,gBAAgB,SACvC,MAAM;oBAOkB,gBAAgB,KAAG,gBAAgB;2BA6EtD,MAAM,YACN,gBAAgB;sBA2BK,MAAM,YAAW,gBAAgB;kBAKzD,MAAM,EAAE,WACL,MAAM,YACN,gBAAgB;;;;;CArN1B,CAAA;AA+DD,KAAK,GAAG,GAAG,IAAI,GAAG,GAAG,CAAA;AAOrB,eAAO,MAAM,GAAG,KAAgE,CAAA;AAGhF,eAAO,MAAM,QAAQ,eAAwB,CAAA;AAmB7C,eAAO,MAAM,MAAM,YACP,MAAM,YAAW,gBAAgB,SACvC,MAAM,YACsB,CAAA;AAMlC,eAAO,MAAM,QAAQ,QAAS,gBAAgB,KAAG,gBA+DhD,CAAA;AAaD,eAAO,MAAM,WAAW,YACb,MAAM,YACN,gBAAgB,aAY1B,CAAA;AAeD,eAAO,MAAM,MAAM,YAAa,MAAM,YAAW,gBAAgB,qBACvB,CAAA;AAG1C,eAAO,MAAM,KAAK,SACV,MAAM,EAAE,WACL,MAAM,YACN,gBAAgB,aAQ1B,CAAA;AAQD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,QAAQ,CAAA;AACrE,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,KAAK,CAAA;AAErD,qBAAa,SAAS;IACpB,OAAO,EAAE,gBAAgB,CAAA;IACzB,GAAG,EAAE,mBAAmB,EAAE,EAAE,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IAEf,oBAAoB,EAAE,OAAO,CAAA;IAC7B,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,uBAAuB,EAAE,OAAO,CAAA;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,EAAE,MAAM,EAAE,EAAE,CAAA;IACrB,MAAM,EAAE,OAAO,CAAA;IAEf,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,kBAAkB,EAAE,OAAO,CAAA;IAE3B,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAA;gBACnB,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAkC3D,QAAQ,IAAI,OAAO;IAYnB,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;IAEjB,IAAI;IA0FJ,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;IA6BhC,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;IAiB/C,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;IAoBtC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IA6D7C,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;IA0F1C,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE;IAgBxD,UAAU,CACR,CAAC,EAAE,MAAM,EAAE,EACX,CAAC,EAAE,MAAM,EAAE,EACX,YAAY,GAAE,OAAe,GAC5B,KAAK,GAAG,MAAM,EAAE;IA+CnB,WAAW;IAqBX,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,GAAE,OAAe;IAiNzE,WAAW;IAIX,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IA6CnC,MAAM;IAsFN,UAAU,CAAC,CAAC,EAAE,MAAM;IAepB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,UAAe;IAiEvC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,gBAAgB;CAGtC;AAED,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA"} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/index.js b/node_modules/minimatch/dist/cjs/index.js
new file mode 100644
index 0000000..d70e681
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/index.js
@@ -0,0 +1,1011 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.unescape = exports.escape = exports.AST = exports.Minimatch = exports.match = exports.makeRe = exports.braceExpand = exports.defaults = exports.filter = exports.GLOBSTAR = exports.sep = exports.minimatch = void 0;
+const brace_expansion_1 = __importDefault(require("brace-expansion"));
+const assert_valid_pattern_js_1 = require("./assert-valid-pattern.js");
+const ast_js_1 = require("./ast.js");
+const escape_js_1 = require("./escape.js");
+const unescape_js_1 = require("./unescape.js");
+const minimatch = (p, pattern, options = {}) => {
+ (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
+ // shortcut: comments match nothing.
+ if (!options.nocomment && pattern.charAt(0) === '#') {
+ return false;
+ }
+ return new Minimatch(pattern, options).match(p);
+};
+exports.minimatch = minimatch;
+// Optimized checking for the most common glob patterns.
+const starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/;
+const starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);
+const starDotExtTestDot = (ext) => (f) => f.endsWith(ext);
+const starDotExtTestNocase = (ext) => {
+ ext = ext.toLowerCase();
+ return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);
+};
+const starDotExtTestNocaseDot = (ext) => {
+ ext = ext.toLowerCase();
+ return (f) => f.toLowerCase().endsWith(ext);
+};
+const starDotStarRE = /^\*+\.\*+$/;
+const starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');
+const starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');
+const dotStarRE = /^\.\*+$/;
+const dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');
+const starRE = /^\*+$/;
+const starTest = (f) => f.length !== 0 && !f.startsWith('.');
+const starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';
+const qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/;
+const qmarksTestNocase = ([$0, ext = '']) => {
+ const noext = qmarksTestNoExt([$0]);
+ if (!ext)
+ return noext;
+ ext = ext.toLowerCase();
+ return (f) => noext(f) && f.toLowerCase().endsWith(ext);
+};
+const qmarksTestNocaseDot = ([$0, ext = '']) => {
+ const noext = qmarksTestNoExtDot([$0]);
+ if (!ext)
+ return noext;
+ ext = ext.toLowerCase();
+ return (f) => noext(f) && f.toLowerCase().endsWith(ext);
+};
+const qmarksTestDot = ([$0, ext = '']) => {
+ const noext = qmarksTestNoExtDot([$0]);
+ return !ext ? noext : (f) => noext(f) && f.endsWith(ext);
+};
+const qmarksTest = ([$0, ext = '']) => {
+ const noext = qmarksTestNoExt([$0]);
+ return !ext ? noext : (f) => noext(f) && f.endsWith(ext);
+};
+const qmarksTestNoExt = ([$0]) => {
+ const len = $0.length;
+ return (f) => f.length === len && !f.startsWith('.');
+};
+const qmarksTestNoExtDot = ([$0]) => {
+ const len = $0.length;
+ return (f) => f.length === len && f !== '.' && f !== '..';
+};
+/* c8 ignore start */
+const defaultPlatform = (typeof process === 'object' && process
+ ? (typeof process.env === 'object' &&
+ process.env &&
+ process.env.__MINIMATCH_TESTING_PLATFORM__) ||
+ process.platform
+ : 'posix');
+const path = {
+ win32: { sep: '\\' },
+ posix: { sep: '/' },
+};
+/* c8 ignore stop */
+exports.sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;
+exports.minimatch.sep = exports.sep;
+exports.GLOBSTAR = Symbol('globstar **');
+exports.minimatch.GLOBSTAR = exports.GLOBSTAR;
+// any single thing other than /
+// don't need to escape / when using new RegExp()
+const qmark = '[^/]';
+// * => any number of characters
+const star = qmark + '*?';
+// ** when dots are allowed. Anything goes, except .. and .
+// not (^ or / followed by one or two dots followed by $ or /),
+// followed by anything, any number of times.
+const twoStarDot = '(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?';
+// not a ^ or / followed by a dot,
+// followed by anything, any number of times.
+const twoStarNoDot = '(?:(?!(?:\\/|^)\\.).)*?';
+const filter = (pattern, options = {}) => (p) => (0, exports.minimatch)(p, pattern, options);
+exports.filter = filter;
+exports.minimatch.filter = exports.filter;
+const ext = (a, b = {}) => Object.assign({}, a, b);
+const defaults = (def) => {
+ if (!def || typeof def !== 'object' || !Object.keys(def).length) {
+ return exports.minimatch;
+ }
+ const orig = exports.minimatch;
+ const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));
+ return Object.assign(m, {
+ Minimatch: class Minimatch extends orig.Minimatch {
+ constructor(pattern, options = {}) {
+ super(pattern, ext(def, options));
+ }
+ static defaults(options) {
+ return orig.defaults(ext(def, options)).Minimatch;
+ }
+ },
+ AST: class AST extends orig.AST {
+ /* c8 ignore start */
+ constructor(type, parent, options = {}) {
+ super(type, parent, ext(def, options));
+ }
+ /* c8 ignore stop */
+ static fromGlob(pattern, options = {}) {
+ return orig.AST.fromGlob(pattern, ext(def, options));
+ }
+ },
+ unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),
+ escape: (s, options = {}) => orig.escape(s, ext(def, options)),
+ filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),
+ defaults: (options) => orig.defaults(ext(def, options)),
+ makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),
+ braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),
+ match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),
+ sep: orig.sep,
+ GLOBSTAR: exports.GLOBSTAR,
+ });
+};
+exports.defaults = defaults;
+exports.minimatch.defaults = exports.defaults;
+// Brace expansion:
+// a{b,c}d -> abd acd
+// a{b,}c -> abc ac
+// a{0..3}d -> a0d a1d a2d a3d
+// a{b,c{d,e}f}g -> abg acdfg acefg
+// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
+//
+// Invalid sets are not expanded.
+// a{2..}b -> a{2..}b
+// a{b}c -> a{b}c
+const braceExpand = (pattern, options = {}) => {
+ (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
+ // Thanks to Yeting Li <https://github.com/yetingli> for
+ // improving this regexp to avoid a ReDOS vulnerability.
+ if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) {
+ // shortcut. no need to expand.
+ return [pattern];
+ }
+ return (0, brace_expansion_1.default)(pattern);
+};
+exports.braceExpand = braceExpand;
+exports.minimatch.braceExpand = exports.braceExpand;
+// parse a component of the expanded set.
+// At this point, no pattern may contain "/" in it
+// so we're going to return a 2d array, where each entry is the full
+// pattern, split on '/', and then turned into a regular expression.
+// A regexp is made at the end which joins each array with an
+// escaped /, and another full one which joins each regexp with |.
+//
+// Following the lead of Bash 4.1, note that "**" only has special meaning
+// when it is the *only* thing in a path portion. Otherwise, any series
+// of * is equivalent to a single *. Globstar behavior is enabled by
+// default, and can be disabled by setting options.noglobstar.
+const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();
+exports.makeRe = makeRe;
+exports.minimatch.makeRe = exports.makeRe;
+const match = (list, pattern, options = {}) => {
+ const mm = new Minimatch(pattern, options);
+ list = list.filter(f => mm.match(f));
+ if (mm.options.nonull && !list.length) {
+ list.push(pattern);
+ }
+ return list;
+};
+exports.match = match;
+exports.minimatch.match = exports.match;
+// replace stuff like \* with *
+const globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/;
+const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
+class Minimatch {
+ options;
+ set;
+ pattern;
+ windowsPathsNoEscape;
+ nonegate;
+ negate;
+ comment;
+ empty;
+ preserveMultipleSlashes;
+ partial;
+ globSet;
+ globParts;
+ nocase;
+ isWindows;
+ platform;
+ windowsNoMagicRoot;
+ regexp;
+ constructor(pattern, options = {}) {
+ (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
+ options = options || {};
+ this.options = options;
+ this.pattern = pattern;
+ this.platform = options.platform || defaultPlatform;
+ this.isWindows = this.platform === 'win32';
+ this.windowsPathsNoEscape =
+ !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;
+ if (this.windowsPathsNoEscape) {
+ this.pattern = this.pattern.replace(/\\/g, '/');
+ }
+ this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;
+ this.regexp = null;
+ this.negate = false;
+ this.nonegate = !!options.nonegate;
+ this.comment = false;
+ this.empty = false;
+ this.partial = !!options.partial;
+ this.nocase = !!this.options.nocase;
+ this.windowsNoMagicRoot =
+ options.windowsNoMagicRoot !== undefined
+ ? options.windowsNoMagicRoot
+ : !!(this.isWindows && this.nocase);
+ this.globSet = [];
+ this.globParts = [];
+ this.set = [];
+ // make the set of regexps etc.
+ this.make();
+ }
+ hasMagic() {
+ if (this.options.magicalBraces && this.set.length > 1) {
+ return true;
+ }
+ for (const pattern of this.set) {
+ for (const part of pattern) {
+ if (typeof part !== 'string')
+ return true;
+ }
+ }
+ return false;
+ }
+ debug(..._) { }
+ make() {
+ const pattern = this.pattern;
+ const options = this.options;
+ // empty patterns and comments match nothing.
+ if (!options.nocomment && pattern.charAt(0) === '#') {
+ this.comment = true;
+ return;
+ }
+ if (!pattern) {
+ this.empty = true;
+ return;
+ }
+ // step 1: figure out negation, etc.
+ this.parseNegate();
+ // step 2: expand braces
+ this.globSet = [...new Set(this.braceExpand())];
+ if (options.debug) {
+ this.debug = (...args) => console.error(...args);
+ }
+ this.debug(this.pattern, this.globSet);
+ // step 3: now we have a set, so turn each one into a series of
+ // path-portion matching patterns.
+ // These will be regexps, except in the case of "**", which is
+ // set to the GLOBSTAR object for globstar behavior,
+ // and will not contain any / characters
+ //
+ // First, we preprocess to make the glob pattern sets a bit simpler
+ // and deduped. There are some perf-killing patterns that can cause
+ // problems with a glob walk, but we can simplify them down a bit.
+ const rawGlobParts = this.globSet.map(s => this.slashSplit(s));
+ this.globParts = this.preprocess(rawGlobParts);
+ this.debug(this.pattern, this.globParts);
+ // glob --> regexps
+ let set = this.globParts.map((s, _, __) => {
+ if (this.isWindows && this.windowsNoMagicRoot) {
+ // check if it's a drive or unc path.
+ const isUNC = s[0] === '' &&
+ s[1] === '' &&
+ (s[2] === '?' || !globMagic.test(s[2])) &&
+ !globMagic.test(s[3]);
+ const isDrive = /^[a-z]:/i.test(s[0]);
+ if (isUNC) {
+ return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];
+ }
+ else if (isDrive) {
+ return [s[0], ...s.slice(1).map(ss => this.parse(ss))];
+ }
+ }
+ return s.map(ss => this.parse(ss));
+ });
+ this.debug(this.pattern, set);
+ // filter out everything that didn't compile properly.
+ this.set = set.filter(s => s.indexOf(false) === -1);
+ // do not treat the ? in UNC paths as magic
+ if (this.isWindows) {
+ for (let i = 0; i < this.set.length; i++) {
+ const p = this.set[i];
+ if (p[0] === '' &&
+ p[1] === '' &&
+ this.globParts[i][2] === '?' &&
+ typeof p[3] === 'string' &&
+ /^[a-z]:$/i.test(p[3])) {
+ p[2] = '?';
+ }
+ }
+ }
+ this.debug(this.pattern, this.set);
+ }
+ // various transforms to equivalent pattern sets that are
+ // faster to process in a filesystem walk. The goal is to
+ // eliminate what we can, and push all ** patterns as far
+ // to the right as possible, even if it increases the number
+ // of patterns that we have to process.
+ preprocess(globParts) {
+ // if we're not in globstar mode, then turn all ** into *
+ if (this.options.noglobstar) {
+ for (let i = 0; i < globParts.length; i++) {
+ for (let j = 0; j < globParts[i].length; j++) {
+ if (globParts[i][j] === '**') {
+ globParts[i][j] = '*';
+ }
+ }
+ }
+ }
+ const { optimizationLevel = 1 } = this.options;
+ if (optimizationLevel >= 2) {
+ // aggressive optimization for the purpose of fs walking
+ globParts = this.firstPhasePreProcess(globParts);
+ globParts = this.secondPhasePreProcess(globParts);
+ }
+ else if (optimizationLevel >= 1) {
+ // just basic optimizations to remove some .. parts
+ globParts = this.levelOneOptimize(globParts);
+ }
+ else {
+ globParts = this.adjascentGlobstarOptimize(globParts);
+ }
+ return globParts;
+ }
+ // just get rid of adjascent ** portions
+ adjascentGlobstarOptimize(globParts) {
+ return globParts.map(parts => {
+ let gs = -1;
+ while (-1 !== (gs = parts.indexOf('**', gs + 1))) {
+ let i = gs;
+ while (parts[i + 1] === '**') {
+ i++;
+ }
+ if (i !== gs) {
+ parts.splice(gs, i - gs);
+ }
+ }
+ return parts;
+ });
+ }
+ // get rid of adjascent ** and resolve .. portions
+ levelOneOptimize(globParts) {
+ return globParts.map(parts => {
+ parts = parts.reduce((set, part) => {
+ const prev = set[set.length - 1];
+ if (part === '**' && prev === '**') {
+ return set;
+ }
+ if (part === '..') {
+ if (prev && prev !== '..' && prev !== '.' && prev !== '**') {
+ set.pop();
+ return set;
+ }
+ }
+ set.push(part);
+ return set;
+ }, []);
+ return parts.length === 0 ? [''] : parts;
+ });
+ }
+ levelTwoFileOptimize(parts) {
+ if (!Array.isArray(parts)) {
+ parts = this.slashSplit(parts);
+ }
+ let didSomething = false;
+ do {
+ didSomething = false;
+ // <pre>/<e>/<rest> -> <pre>/<rest>
+ if (!this.preserveMultipleSlashes) {
+ for (let i = 1; i < parts.length - 1; i++) {
+ const p = parts[i];
+ // don't squeeze out UNC patterns
+ if (i === 1 && p === '' && parts[0] === '')
+ continue;
+ if (p === '.' || p === '') {
+ didSomething = true;
+ parts.splice(i, 1);
+ i--;
+ }
+ }
+ if (parts[0] === '.' &&
+ parts.length === 2 &&
+ (parts[1] === '.' || parts[1] === '')) {
+ didSomething = true;
+ parts.pop();
+ }
+ }
+ // <pre>/<p>/../<rest> -> <pre>/<rest>
+ let dd = 0;
+ while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
+ const p = parts[dd - 1];
+ if (p && p !== '.' && p !== '..' && p !== '**') {
+ didSomething = true;
+ parts.splice(dd - 1, 2);
+ dd -= 2;
+ }
+ }
+ } while (didSomething);
+ return parts.length === 0 ? [''] : parts;
+ }
+ // First phase: single-pattern processing
+ // <pre> is 1 or more portions
+ // <rest> is 1 or more portions
+ // <p> is any portion other than ., .., '', or **
+ // <e> is . or ''
+ //
+ // **/.. is *brutal* for filesystem walking performance, because
+ // it effectively resets the recursive walk each time it occurs,
+ // and ** cannot be reduced out by a .. pattern part like a regexp
+ // or most strings (other than .., ., and '') can be.
+ //
+ // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}
+ // <pre>/<e>/<rest> -> <pre>/<rest>
+ // <pre>/<p>/../<rest> -> <pre>/<rest>
+ // **/**/<rest> -> **/<rest>
+ //
+ // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow
+ // this WOULD be allowed if ** did follow symlinks, or * didn't
+ firstPhasePreProcess(globParts) {
+ let didSomething = false;
+ do {
+ didSomething = false;
+ // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}
+ for (let parts of globParts) {
+ let gs = -1;
+ while (-1 !== (gs = parts.indexOf('**', gs + 1))) {
+ let gss = gs;
+ while (parts[gss + 1] === '**') {
+ // <pre>/**/**/<rest> -> <pre>/**/<rest>
+ gss++;
+ }
+ // eg, if gs is 2 and gss is 4, that means we have 3 **
+ // parts, and can remove 2 of them.
+ if (gss > gs) {
+ parts.splice(gs + 1, gss - gs);
+ }
+ let next = parts[gs + 1];
+ const p = parts[gs + 2];
+ const p2 = parts[gs + 3];
+ if (next !== '..')
+ continue;
+ if (!p ||
+ p === '.' ||
+ p === '..' ||
+ !p2 ||
+ p2 === '.' ||
+ p2 === '..') {
+ continue;
+ }
+ didSomething = true;
+ // edit parts in place, and push the new one
+ parts.splice(gs, 1);
+ const other = parts.slice(0);
+ other[gs] = '**';
+ globParts.push(other);
+ gs--;
+ }
+ // <pre>/<e>/<rest> -> <pre>/<rest>
+ if (!this.preserveMultipleSlashes) {
+ for (let i = 1; i < parts.length - 1; i++) {
+ const p = parts[i];
+ // don't squeeze out UNC patterns
+ if (i === 1 && p === '' && parts[0] === '')
+ continue;
+ if (p === '.' || p === '') {
+ didSomething = true;
+ parts.splice(i, 1);
+ i--;
+ }
+ }
+ if (parts[0] === '.' &&
+ parts.length === 2 &&
+ (parts[1] === '.' || parts[1] === '')) {
+ didSomething = true;
+ parts.pop();
+ }
+ }
+ // <pre>/<p>/../<rest> -> <pre>/<rest>
+ let dd = 0;
+ while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
+ const p = parts[dd - 1];
+ if (p && p !== '.' && p !== '..' && p !== '**') {
+ didSomething = true;
+ const needDot = dd === 1 && parts[dd + 1] === '**';
+ const splin = needDot ? ['.'] : [];
+ parts.splice(dd - 1, 2, ...splin);
+ if (parts.length === 0)
+ parts.push('');
+ dd -= 2;
+ }
+ }
+ }
+ } while (didSomething);
+ return globParts;
+ }
+ // second phase: multi-pattern dedupes
+ // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest>
+ // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest>
+ // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest>
+ //
+ // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest>
+ // ^-- not valid because ** doens't follow symlinks
+ secondPhasePreProcess(globParts) {
+ for (let i = 0; i < globParts.length - 1; i++) {
+ for (let j = i + 1; j < globParts.length; j++) {
+ const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);
+ if (!matched)
+ continue;
+ globParts[i] = matched;
+ globParts[j] = [];
+ }
+ }
+ return globParts.filter(gs => gs.length);
+ }
+ partsMatch(a, b, emptyGSMatch = false) {
+ let ai = 0;
+ let bi = 0;
+ let result = [];
+ let which = '';
+ while (ai < a.length && bi < b.length) {
+ if (a[ai] === b[bi]) {
+ result.push(which === 'b' ? b[bi] : a[ai]);
+ ai++;
+ bi++;
+ }
+ else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {
+ result.push(a[ai]);
+ ai++;
+ }
+ else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {
+ result.push(b[bi]);
+ bi++;
+ }
+ else if (a[ai] === '*' &&
+ b[bi] &&
+ (this.options.dot || !b[bi].startsWith('.')) &&
+ b[bi] !== '**') {
+ if (which === 'b')
+ return false;
+ which = 'a';
+ result.push(a[ai]);
+ ai++;
+ bi++;
+ }
+ else if (b[bi] === '*' &&
+ a[ai] &&
+ (this.options.dot || !a[ai].startsWith('.')) &&
+ a[ai] !== '**') {
+ if (which === 'a')
+ return false;
+ which = 'b';
+ result.push(b[bi]);
+ ai++;
+ bi++;
+ }
+ else {
+ return false;
+ }
+ }
+ // if we fall out of the loop, it means they two are identical
+ // as long as their lengths match
+ return a.length === b.length && result;
+ }
+ parseNegate() {
+ if (this.nonegate)
+ return;
+ const pattern = this.pattern;
+ let negate = false;
+ let negateOffset = 0;
+ for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {
+ negate = !negate;
+ negateOffset++;
+ }
+ if (negateOffset)
+ this.pattern = pattern.slice(negateOffset);
+ this.negate = negate;
+ }
+ // set partial to true to test if, for example,
+ // "/a/b" matches the start of "/*/b/*/d"
+ // Partial means, if you run out of file before you run
+ // out of pattern, then that's fine, as long as all
+ // the parts match.
+ matchOne(file, pattern, partial = false) {
+ const options = this.options;
+ // UNC paths like //?/X:/... can match X:/... and vice versa
+ // Drive letters in absolute drive or unc paths are always compared
+ // case-insensitively.
+ if (this.isWindows) {
+ const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);
+ const fileUNC = !fileDrive &&
+ file[0] === '' &&
+ file[1] === '' &&
+ file[2] === '?' &&
+ /^[a-z]:$/i.test(file[3]);
+ const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);
+ const patternUNC = !patternDrive &&
+ pattern[0] === '' &&
+ pattern[1] === '' &&
+ pattern[2] === '?' &&
+ typeof pattern[3] === 'string' &&
+ /^[a-z]:$/i.test(pattern[3]);
+ const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;
+ const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;
+ if (typeof fdi === 'number' && typeof pdi === 'number') {
+ const [fd, pd] = [file[fdi], pattern[pdi]];
+ if (fd.toLowerCase() === pd.toLowerCase()) {
+ pattern[pdi] = fd;
+ if (pdi > fdi) {
+ pattern = pattern.slice(pdi);
+ }
+ else if (fdi > pdi) {
+ file = file.slice(fdi);
+ }
+ }
+ }
+ }
+ // resolve and reduce . and .. portions in the file as well.
+ // dont' need to do the second phase, because it's only one string[]
+ const { optimizationLevel = 1 } = this.options;
+ if (optimizationLevel >= 2) {
+ file = this.levelTwoFileOptimize(file);
+ }
+ this.debug('matchOne', this, { file, pattern });
+ this.debug('matchOne', file.length, pattern.length);
+ for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
+ this.debug('matchOne loop');
+ var p = pattern[pi];
+ var f = file[fi];
+ this.debug(pattern, p, f);
+ // should be impossible.
+ // some invalid regexp stuff in the set.
+ /* c8 ignore start */
+ if (p === false) {
+ return false;
+ }
+ /* c8 ignore stop */
+ if (p === exports.GLOBSTAR) {
+ this.debug('GLOBSTAR', [pattern, p, f]);
+ // "**"
+ // a/**/b/**/c would match the following:
+ // a/b/x/y/z/c
+ // a/x/y/z/b/c
+ // a/b/x/b/x/c
+ // a/b/c
+ // To do this, take the rest of the pattern after
+ // the **, and see if it would match the file remainder.
+ // If so, return success.
+ // If not, the ** "swallows" a segment, and try again.
+ // This is recursively awful.
+ //
+ // a/**/b/**/c matching a/b/x/y/z/c
+ // - a matches a
+ // - doublestar
+ // - matchOne(b/x/y/z/c, b/**/c)
+ // - b matches b
+ // - doublestar
+ // - matchOne(x/y/z/c, c) -> no
+ // - matchOne(y/z/c, c) -> no
+ // - matchOne(z/c, c) -> no
+ // - matchOne(c, c) yes, hit
+ var fr = fi;
+ var pr = pi + 1;
+ if (pr === pl) {
+ this.debug('** at the end');
+ // a ** at the end will just swallow the rest.
+ // We have found a match.
+ // however, it will not swallow /.x, unless
+ // options.dot is set.
+ // . and .. are *never* matched by **, for explosively
+ // exponential reasons.
+ for (; fi < fl; fi++) {
+ if (file[fi] === '.' ||
+ file[fi] === '..' ||
+ (!options.dot && file[fi].charAt(0) === '.'))
+ return false;
+ }
+ return true;
+ }
+ // ok, let's see if we can swallow whatever we can.
+ while (fr < fl) {
+ var swallowee = file[fr];
+ this.debug('\nglobstar while', file, fr, pattern, pr, swallowee);
+ // XXX remove this slice. Just pass the start index.
+ if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
+ this.debug('globstar found match!', fr, fl, swallowee);
+ // found a match.
+ return true;
+ }
+ else {
+ // can't swallow "." or ".." ever.
+ // can only swallow ".foo" when explicitly asked.
+ if (swallowee === '.' ||
+ swallowee === '..' ||
+ (!options.dot && swallowee.charAt(0) === '.')) {
+ this.debug('dot detected!', file, fr, pattern, pr);
+ break;
+ }
+ // ** swallows a segment, and continue.
+ this.debug('globstar swallow a segment, and continue');
+ fr++;
+ }
+ }
+ // no match was found.
+ // However, in partial mode, we can't say this is necessarily over.
+ /* c8 ignore start */
+ if (partial) {
+ // ran out of file
+ this.debug('\n>>> no match, partial?', file, fr, pattern, pr);
+ if (fr === fl) {
+ return true;
+ }
+ }
+ /* c8 ignore stop */
+ return false;
+ }
+ // something other than **
+ // non-magic patterns just have to match exactly
+ // patterns with magic have been turned into regexps.
+ let hit;
+ if (typeof p === 'string') {
+ hit = f === p;
+ this.debug('string match', p, f, hit);
+ }
+ else {
+ hit = p.test(f);
+ this.debug('pattern match', p, f, hit);
+ }
+ if (!hit)
+ return false;
+ }
+ // Note: ending in / means that we'll get a final ""
+ // at the end of the pattern. This can only match a
+ // corresponding "" at the end of the file.
+ // If the file ends in /, then it can only match a
+ // a pattern that ends in /, unless the pattern just
+ // doesn't have any more for it. But, a/b/ should *not*
+ // match "a/b/*", even though "" matches against the
+ // [^/]*? pattern, except in partial mode, where it might
+ // simply not be reached yet.
+ // However, a/b/ should still satisfy a/*
+ // now either we fell off the end of the pattern, or we're done.
+ if (fi === fl && pi === pl) {
+ // ran out of pattern and filename at the same time.
+ // an exact hit!
+ return true;
+ }
+ else if (fi === fl) {
+ // ran out of file, but still had pattern left.
+ // this is ok if we're doing the match as part of
+ // a glob fs traversal.
+ return partial;
+ }
+ else if (pi === pl) {
+ // ran out of pattern, still have file left.
+ // this is only acceptable if we're on the very last
+ // empty segment of a file with a trailing slash.
+ // a/* should match a/b/
+ return fi === fl - 1 && file[fi] === '';
+ /* c8 ignore start */
+ }
+ else {
+ // should be unreachable.
+ throw new Error('wtf?');
+ }
+ /* c8 ignore stop */
+ }
+ braceExpand() {
+ return (0, exports.braceExpand)(this.pattern, this.options);
+ }
+ parse(pattern) {
+ (0, assert_valid_pattern_js_1.assertValidPattern)(pattern);
+ const options = this.options;
+ // shortcuts
+ if (pattern === '**')
+ return exports.GLOBSTAR;
+ if (pattern === '')
+ return '';
+ // far and away, the most common glob pattern parts are
+ // *, *.*, and *.<ext> Add a fast check method for those.
+ let m;
+ let fastTest = null;
+ if ((m = pattern.match(starRE))) {
+ fastTest = options.dot ? starTestDot : starTest;
+ }
+ else if ((m = pattern.match(starDotExtRE))) {
+ fastTest = (options.nocase
+ ? options.dot
+ ? starDotExtTestNocaseDot
+ : starDotExtTestNocase
+ : options.dot
+ ? starDotExtTestDot
+ : starDotExtTest)(m[1]);
+ }
+ else if ((m = pattern.match(qmarksRE))) {
+ fastTest = (options.nocase
+ ? options.dot
+ ? qmarksTestNocaseDot
+ : qmarksTestNocase
+ : options.dot
+ ? qmarksTestDot
+ : qmarksTest)(m);
+ }
+ else if ((m = pattern.match(starDotStarRE))) {
+ fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
+ }
+ else if ((m = pattern.match(dotStarRE))) {
+ fastTest = dotStarTest;
+ }
+ const re = ast_js_1.AST.fromGlob(pattern, this.options).toMMPattern();
+ return fastTest ? Object.assign(re, { test: fastTest }) : re;
+ }
+ makeRe() {
+ if (this.regexp || this.regexp === false)
+ return this.regexp;
+ // at this point, this.set is a 2d array of partial
+ // pattern strings, or "**".
+ //
+ // It's better to use .match(). This function shouldn't
+ // be used, really, but it's pretty convenient sometimes,
+ // when you just want to work with a regex.
+ const set = this.set;
+ if (!set.length) {
+ this.regexp = false;
+ return this.regexp;
+ }
+ const options = this.options;
+ const twoStar = options.noglobstar
+ ? star
+ : options.dot
+ ? twoStarDot
+ : twoStarNoDot;
+ const flags = new Set(options.nocase ? ['i'] : []);
+ // regexpify non-globstar patterns
+ // if ** is only item, then we just do one twoStar
+ // if ** is first, and there are more, prepend (\/|twoStar\/)? to next
+ // if ** is last, append (\/twoStar|) to previous
+ // if ** is in the middle, append (\/|\/twoStar\/) to previous
+ // then filter out GLOBSTAR symbols
+ let re = set
+ .map(pattern => {
+ const pp = pattern.map(p => {
+ if (p instanceof RegExp) {
+ for (const f of p.flags.split(''))
+ flags.add(f);
+ }
+ return typeof p === 'string'
+ ? regExpEscape(p)
+ : p === exports.GLOBSTAR
+ ? exports.GLOBSTAR
+ : p._src;
+ });
+ pp.forEach((p, i) => {
+ const next = pp[i + 1];
+ const prev = pp[i - 1];
+ if (p !== exports.GLOBSTAR || prev === exports.GLOBSTAR) {
+ return;
+ }
+ if (prev === undefined) {
+ if (next !== undefined && next !== exports.GLOBSTAR) {
+ pp[i + 1] = '(?:\\/|' + twoStar + '\\/)?' + next;
+ }
+ else {
+ pp[i] = twoStar;
+ }
+ }
+ else if (next === undefined) {
+ pp[i - 1] = prev + '(?:\\/|' + twoStar + ')?';
+ }
+ else if (next !== exports.GLOBSTAR) {
+ pp[i - 1] = prev + '(?:\\/|\\/' + twoStar + '\\/)' + next;
+ pp[i + 1] = exports.GLOBSTAR;
+ }
+ });
+ return pp.filter(p => p !== exports.GLOBSTAR).join('/');
+ })
+ .join('|');
+ // need to wrap in parens if we had more than one thing with |,
+ // otherwise only the first will be anchored to ^ and the last to $
+ const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];
+ // must match entire pattern
+ // ending in a * or ** will make it less strict.
+ re = '^' + open + re + close + '$';
+ // can match anything, as long as it's not this.
+ if (this.negate)
+ re = '^(?!' + re + ').+$';
+ try {
+ this.regexp = new RegExp(re, [...flags].join(''));
+ /* c8 ignore start */
+ }
+ catch (ex) {
+ // should be impossible
+ this.regexp = false;
+ }
+ /* c8 ignore stop */
+ return this.regexp;
+ }
+ slashSplit(p) {
+ // if p starts with // on windows, we preserve that
+ // so that UNC paths aren't broken. Otherwise, any number of
+ // / characters are coalesced into one, unless
+ // preserveMultipleSlashes is set to true.
+ if (this.preserveMultipleSlashes) {
+ return p.split('/');
+ }
+ else if (this.isWindows && /^\/\/[^\/]+/.test(p)) {
+ // add an extra '' for the one we lose
+ return ['', ...p.split(/\/+/)];
+ }
+ else {
+ return p.split(/\/+/);
+ }
+ }
+ match(f, partial = this.partial) {
+ this.debug('match', f, this.pattern);
+ // short-circuit in the case of busted things.
+ // comments, etc.
+ if (this.comment) {
+ return false;
+ }
+ if (this.empty) {
+ return f === '';
+ }
+ if (f === '/' && partial) {
+ return true;
+ }
+ const options = this.options;
+ // windows: need to use /, not \
+ if (this.isWindows) {
+ f = f.split('\\').join('/');
+ }
+ // treat the test path as a set of pathparts.
+ const ff = this.slashSplit(f);
+ this.debug(this.pattern, 'split', ff);
+ // just ONE of the pattern sets in this.set needs to match
+ // in order for it to be valid. If negating, then just one
+ // match means that we have failed.
+ // Either way, return on the first hit.
+ const set = this.set;
+ this.debug(this.pattern, 'set', set);
+ // Find the basename of the path by looking for the last non-empty segment
+ let filename = ff[ff.length - 1];
+ if (!filename) {
+ for (let i = ff.length - 2; !filename && i >= 0; i--) {
+ filename = ff[i];
+ }
+ }
+ for (let i = 0; i < set.length; i++) {
+ const pattern = set[i];
+ let file = ff;
+ if (options.matchBase && pattern.length === 1) {
+ file = [filename];
+ }
+ const hit = this.matchOne(file, pattern, partial);
+ if (hit) {
+ if (options.flipNegate) {
+ return true;
+ }
+ return !this.negate;
+ }
+ }
+ // didn't get any hits. this is success if it's a negative
+ // pattern, failure otherwise.
+ if (options.flipNegate) {
+ return false;
+ }
+ return this.negate;
+ }
+ static defaults(def) {
+ return exports.minimatch.defaults(def).Minimatch;
+ }
+}
+exports.Minimatch = Minimatch;
+/* c8 ignore start */
+var ast_js_2 = require("./ast.js");
+Object.defineProperty(exports, "AST", { enumerable: true, get: function () { return ast_js_2.AST; } });
+var escape_js_2 = require("./escape.js");
+Object.defineProperty(exports, "escape", { enumerable: true, get: function () { return escape_js_2.escape; } });
+var unescape_js_2 = require("./unescape.js");
+Object.defineProperty(exports, "unescape", { enumerable: true, get: function () { return unescape_js_2.unescape; } });
+/* c8 ignore stop */
+exports.minimatch.AST = ast_js_1.AST;
+exports.minimatch.Minimatch = Minimatch;
+exports.minimatch.escape = escape_js_1.escape;
+exports.minimatch.unescape = unescape_js_1.unescape;
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/index.js.map b/node_modules/minimatch/dist/cjs/index.js.map
new file mode 100644
index 0000000..50574a2
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,sEAAoC;AACpC,uEAA8D;AAC9D,qCAA2C;AAC3C,2CAAoC;AACpC,+CAAwC;AAsCjC,MAAM,SAAS,GAAG,CACvB,CAAS,EACT,OAAe,EACf,UAA4B,EAAE,EAC9B,EAAE;IACF,IAAA,4CAAkB,EAAC,OAAO,CAAC,CAAA;IAE3B,oCAAoC;IACpC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QACnD,OAAO,KAAK,CAAA;KACb;IAED,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACjD,CAAC,CAAA;AAbY,QAAA,SAAS,aAarB;AAED,wDAAwD;AACxD,MAAM,YAAY,GAAG,uBAAuB,CAAA;AAC5C,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,EAAE,CACpD,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACvC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACzE,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,EAAE;IAC3C,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC3E,CAAC,CAAA;AACD,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAE,EAAE;IAC9C,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACrD,CAAC,CAAA;AACD,MAAM,aAAa,GAAG,YAAY,CAAA;AAClC,MAAM,eAAe,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC5E,MAAM,kBAAkB,GAAG,CAAC,CAAS,EAAE,EAAE,CACvC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC5C,MAAM,SAAS,GAAG,SAAS,CAAA;AAC3B,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC/E,MAAM,MAAM,GAAG,OAAO,CAAA;AACtB,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AACpE,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAA;AAC5E,MAAM,QAAQ,GAAG,wBAAwB,CAAA;AACzC,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAmB,EAAE,EAAE;IAC5D,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACnC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IACtB,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACjE,CAAC,CAAA;AACD,MAAM,mBAAmB,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAmB,EAAE,EAAE;IAC/D,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IACtB,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACjE,CAAC,CAAA;AACD,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAmB,EAAE,EAAE;IACzD,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAClE,CAAC,CAAA;AACD,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAmB,EAAE,EAAE;IACtD,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACnC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAClE,CAAC,CAAA;AACD,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,CAAmB,EAAE,EAAE;IACjD,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAA;IACrB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC9D,CAAC,CAAA;AACD,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAmB,EAAE,EAAE;IACpD,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAA;IACrB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAA;AACnE,CAAC,CAAA;AAED,qBAAqB;AACrB,MAAM,eAAe,GAAa,CAChC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO;IACpC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;QAC9B,OAAO,CAAC,GAAG;QACX,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;QAC7C,OAAO,CAAC,QAAQ;IAClB,CAAC,CAAC,OAAO,CACA,CAAA;AAEb,MAAM,IAAI,GAAkC;IAC1C,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;IACpB,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;CACpB,CAAA;AACD,oBAAoB;AAEP,QAAA,GAAG,GAAG,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAA;AAChF,iBAAS,CAAC,GAAG,GAAG,WAAG,CAAA;AAEN,QAAA,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;AAC7C,iBAAS,CAAC,QAAQ,GAAG,gBAAQ,CAAA;AAE7B,gCAAgC;AAChC,iDAAiD;AACjD,MAAM,KAAK,GAAG,MAAM,CAAA;AAEpB,gCAAgC;AAChC,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAA;AAEzB,4DAA4D;AAC5D,+DAA+D;AAC/D,6CAA6C;AAC7C,MAAM,UAAU,GAAG,yCAAyC,CAAA;AAE5D,kCAAkC;AAClC,6CAA6C;AAC7C,MAAM,YAAY,GAAG,yBAAyB,CAAA;AAEvC,MAAM,MAAM,GACjB,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CACpD,CAAC,CAAS,EAAE,EAAE,CACZ,IAAA,iBAAS,EAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAHrB,QAAA,MAAM,UAGe;AAClC,iBAAS,CAAC,MAAM,GAAG,cAAM,CAAA;AAEzB,MAAM,GAAG,GAAG,CAAC,CAAmB,EAAE,IAAsB,EAAE,EAAE,EAAE,CAC5D,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAElB,MAAM,QAAQ,GAAG,CAAC,GAAqB,EAAoB,EAAE;IAClE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;QAC/D,OAAO,iBAAS,CAAA;KACjB;IAED,MAAM,IAAI,GAAG,iBAAS,CAAA;IAEtB,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CACvE,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;IAErC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;QACtB,SAAS,EAAE,MAAM,SAAU,SAAQ,IAAI,CAAC,SAAS;YAC/C,YAAY,OAAe,EAAE,UAA4B,EAAE;gBACzD,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;YACnC,CAAC;YACD,MAAM,CAAC,QAAQ,CAAC,OAAyB;gBACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;YACnD,CAAC;SACF;QAED,GAAG,EAAE,MAAM,GAAI,SAAQ,IAAI,CAAC,GAAG;YAC7B,qBAAqB;YACrB,YACE,IAAwB,EACxB,MAAY,EACZ,UAA4B,EAAE;gBAE9B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;YACxC,CAAC;YACD,oBAAoB;YAEpB,MAAM,CAAC,QAAQ,CAAC,OAAe,EAAE,UAA4B,EAAE;gBAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;YACtD,CAAC;SACF;QAED,QAAQ,EAAE,CACR,CAAS,EACT,UAA0D,EAAE,EAC5D,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAExC,MAAM,EAAE,CACN,CAAS,EACT,UAA0D,EAAE,EAC5D,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEtC,MAAM,EAAE,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEzC,QAAQ,EAAE,CAAC,OAAyB,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEzE,MAAM,EAAE,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEzC,WAAW,EAAE,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CAC/D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE9C,KAAK,EAAE,CAAC,IAAc,EAAE,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CACzE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE9C,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,QAAQ,EAAE,gBAA2B;KACtC,CAAC,CAAA;AACJ,CAAC,CAAA;AA/DY,QAAA,QAAQ,YA+DpB;AACD,iBAAS,CAAC,QAAQ,GAAG,gBAAQ,CAAA;AAE7B,mBAAmB;AACnB,qBAAqB;AACrB,mBAAmB;AACnB,8BAA8B;AAC9B,mCAAmC;AACnC,2CAA2C;AAC3C,EAAE;AACF,iCAAiC;AACjC,qBAAqB;AACrB,iBAAiB;AACV,MAAM,WAAW,GAAG,CACzB,OAAe,EACf,UAA4B,EAAE,EAC9B,EAAE;IACF,IAAA,4CAAkB,EAAC,OAAO,CAAC,CAAA;IAE3B,wDAAwD;IACxD,wDAAwD;IACxD,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACxD,+BAA+B;QAC/B,OAAO,CAAC,OAAO,CAAC,CAAA;KACjB;IAED,OAAO,IAAA,yBAAM,EAAC,OAAO,CAAC,CAAA;AACxB,CAAC,CAAA;AAdY,QAAA,WAAW,eAcvB;AACD,iBAAS,CAAC,WAAW,GAAG,mBAAW,CAAA;AAEnC,yCAAyC;AACzC,kDAAkD;AAClD,oEAAoE;AACpE,oEAAoE;AACpE,6DAA6D;AAC7D,kEAAkE;AAClE,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AACxE,qEAAqE;AACrE,8DAA8D;AAEvD,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CACxE,IAAI,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;AAD7B,QAAA,MAAM,UACuB;AAC1C,iBAAS,CAAC,MAAM,GAAG,cAAM,CAAA;AAElB,MAAM,KAAK,GAAG,CACnB,IAAc,EACd,OAAe,EACf,UAA4B,EAAE,EAC9B,EAAE;IACF,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC1C,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACpC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KACnB;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAXY,QAAA,KAAK,SAWjB;AACD,iBAAS,CAAC,KAAK,GAAG,aAAK,CAAA;AAEvB,+BAA+B;AAC/B,MAAM,SAAS,GAAG,yBAAyB,CAAA;AAC3C,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CACjC,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;AAU/C,MAAa,SAAS;IACpB,OAAO,CAAkB;IACzB,GAAG,CAAyB;IAC5B,OAAO,CAAQ;IAEf,oBAAoB,CAAS;IAC7B,QAAQ,CAAS;IACjB,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,KAAK,CAAS;IACd,uBAAuB,CAAS;IAChC,OAAO,CAAS;IAChB,OAAO,CAAU;IACjB,SAAS,CAAY;IACrB,MAAM,CAAS;IAEf,SAAS,CAAS;IAClB,QAAQ,CAAU;IAClB,kBAAkB,CAAS;IAE3B,MAAM,CAAyB;IAC/B,YAAY,OAAe,EAAE,UAA4B,EAAE;QACzD,IAAA,4CAAkB,EAAC,OAAO,CAAC,CAAA;QAE3B,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAA;QACnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAA;QAC1C,IAAI,CAAC,oBAAoB;YACvB,CAAC,CAAC,OAAO,CAAC,oBAAoB,IAAI,OAAO,CAAC,kBAAkB,KAAK,KAAK,CAAA;QACxE,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;SAChD;QACD,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAA;QAChE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAA;QAClC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;QAChC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;QACnC,IAAI,CAAC,kBAAkB;YACrB,OAAO,CAAC,kBAAkB,KAAK,SAAS;gBACtC,CAAC,CAAC,OAAO,CAAC,kBAAkB;gBAC5B,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;QAEvC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACjB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;QACnB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QAEb,+BAA+B;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YACrD,OAAO,IAAI,CAAA;SACZ;QACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE;YAC9B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;gBAC1B,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,OAAO,IAAI,CAAA;aAC1C;SACF;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CAAQ,IAAG,CAAC;IAErB,IAAI;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,6CAA6C;QAC7C,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;YACnB,OAAM;SACP;QAED,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;YACjB,OAAM;SACP;QAED,oCAAoC;QACpC,IAAI,CAAC,WAAW,EAAE,CAAA;QAElB,wBAAwB;QACxB,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;QAE/C,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;SACxD;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAEtC,+DAA+D;QAC/D,kCAAkC;QAClC,8DAA8D;QAC9D,oDAAoD;QACpD,wCAAwC;QACxC,EAAE;QACF,mEAAmE;QACnE,oEAAoE;QACpE,kEAAkE;QAClE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAExC,mBAAmB;QACnB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;YACxC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC7C,qCAAqC;gBACrC,MAAM,KAAK,GACT,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;oBACX,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;oBACX,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACvB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACrC,IAAI,KAAK,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;iBACnE;qBAAM,IAAI,OAAO,EAAE;oBAClB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;iBACvD;aACF;YACD,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAE7B,sDAAsD;QACtD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CACnB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CACF,CAAA;QAE5B,2CAA2C;QAC3C,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBACrB,IACE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;oBACX,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;oBACX,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;oBAC5B,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;oBACxB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtB;oBACA,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;iBACX;aACF;SACF;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IAED,yDAAyD;IACzD,0DAA0D;IAC1D,yDAAyD;IACzD,4DAA4D;IAC5D,uCAAuC;IACvC,UAAU,CAAC,SAAqB;QAC9B,yDAAyD;QACzD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC5C,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;wBAC5B,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;qBACtB;iBACF;aACF;SACF;QAED,MAAM,EAAE,iBAAiB,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAE9C,IAAI,iBAAiB,IAAI,CAAC,EAAE;YAC1B,wDAAwD;YACxD,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;YAChD,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAA;SAClD;aAAM,IAAI,iBAAiB,IAAI,CAAC,EAAE;YACjC,mDAAmD;YACnD,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;SAC7C;aAAM;YACL,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA;SACtD;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,wCAAwC;IACxC,yBAAyB,CAAC,SAAqB;QAC7C,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC3B,IAAI,EAAE,GAAW,CAAC,CAAC,CAAA;YACnB,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;gBAChD,IAAI,CAAC,GAAG,EAAE,CAAA;gBACV,OAAO,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;oBAC5B,CAAC,EAAE,CAAA;iBACJ;gBACD,IAAI,CAAC,KAAK,EAAE,EAAE;oBACZ,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;iBACzB;aACF;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,kDAAkD;IAClD,gBAAgB,CAAC,SAAqB;QACpC,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC3B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAa,EAAE,IAAI,EAAE,EAAE;gBAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;gBAChC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;oBAClC,OAAO,GAAG,CAAA;iBACX;gBACD,IAAI,IAAI,KAAK,IAAI,EAAE;oBACjB,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE;wBAC1D,GAAG,CAAC,GAAG,EAAE,CAAA;wBACT,OAAO,GAAG,CAAA;qBACX;iBACF;gBACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACd,OAAO,GAAG,CAAA;YACZ,CAAC,EAAE,EAAE,CAAC,CAAA;YACN,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC1C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,oBAAoB,CAAC,KAAwB;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;SAC/B;QACD,IAAI,YAAY,GAAY,KAAK,CAAA;QACjC,GAAG;YACD,YAAY,GAAG,KAAK,CAAA;YACpB,mCAAmC;YACnC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBACzC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;oBAClB,iCAAiC;oBACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE;wBAAE,SAAQ;oBACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE;wBACzB,YAAY,GAAG,IAAI,CAAA;wBACnB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;wBAClB,CAAC,EAAE,CAAA;qBACJ;iBACF;gBACD,IACE,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;oBAChB,KAAK,CAAC,MAAM,KAAK,CAAC;oBAClB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EACrC;oBACA,YAAY,GAAG,IAAI,CAAA;oBACnB,KAAK,CAAC,GAAG,EAAE,CAAA;iBACZ;aACF;YAED,sCAAsC;YACtC,IAAI,EAAE,GAAW,CAAC,CAAA;YAClB,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;gBAChD,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;gBACvB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;oBAC9C,YAAY,GAAG,IAAI,CAAA;oBACnB,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;oBACvB,EAAE,IAAI,CAAC,CAAA;iBACR;aACF;SACF,QAAQ,YAAY,EAAC;QACtB,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAC1C,CAAC;IAED,yCAAyC;IACzC,8BAA8B;IAC9B,+BAA+B;IAC/B,iDAAiD;IACjD,iBAAiB;IACjB,EAAE;IACF,gEAAgE;IAChE,gEAAgE;IAChE,kEAAkE;IAClE,qDAAqD;IACrD,EAAE;IACF,kFAAkF;IAClF,mCAAmC;IACnC,sCAAsC;IACtC,4BAA4B;IAC5B,EAAE;IACF,qEAAqE;IACrE,+DAA+D;IAC/D,oBAAoB,CAAC,SAAqB;QACxC,IAAI,YAAY,GAAG,KAAK,CAAA;QACxB,GAAG;YACD,YAAY,GAAG,KAAK,CAAA;YACpB,kFAAkF;YAClF,KAAK,IAAI,KAAK,IAAI,SAAS,EAAE;gBAC3B,IAAI,EAAE,GAAW,CAAC,CAAC,CAAA;gBACnB,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;oBAChD,IAAI,GAAG,GAAW,EAAE,CAAA;oBACpB,OAAO,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;wBAC9B,wCAAwC;wBACxC,GAAG,EAAE,CAAA;qBACN;oBACD,uDAAuD;oBACvD,mCAAmC;oBACnC,IAAI,GAAG,GAAG,EAAE,EAAE;wBACZ,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAA;qBAC/B;oBAED,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;oBACxB,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;oBACvB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;oBACxB,IAAI,IAAI,KAAK,IAAI;wBAAE,SAAQ;oBAC3B,IACE,CAAC,CAAC;wBACF,CAAC,KAAK,GAAG;wBACT,CAAC,KAAK,IAAI;wBACV,CAAC,EAAE;wBACH,EAAE,KAAK,GAAG;wBACV,EAAE,KAAK,IAAI,EACX;wBACA,SAAQ;qBACT;oBACD,YAAY,GAAG,IAAI,CAAA;oBACnB,4CAA4C;oBAC5C,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;oBACnB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;oBAC5B,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;oBAChB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBACrB,EAAE,EAAE,CAAA;iBACL;gBAED,mCAAmC;gBACnC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;oBACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;wBACzC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;wBAClB,iCAAiC;wBACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE;4BAAE,SAAQ;wBACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE;4BACzB,YAAY,GAAG,IAAI,CAAA;4BACnB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;4BAClB,CAAC,EAAE,CAAA;yBACJ;qBACF;oBACD,IACE,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;wBAChB,KAAK,CAAC,MAAM,KAAK,CAAC;wBAClB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EACrC;wBACA,YAAY,GAAG,IAAI,CAAA;wBACnB,KAAK,CAAC,GAAG,EAAE,CAAA;qBACZ;iBACF;gBAED,sCAAsC;gBACtC,IAAI,EAAE,GAAW,CAAC,CAAA;gBAClB,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;oBAChD,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;oBACvB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;wBAC9C,YAAY,GAAG,IAAI,CAAA;wBACnB,MAAM,OAAO,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,CAAA;wBAClD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;wBAClC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAA;wBACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;4BAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;wBACtC,EAAE,IAAI,CAAC,CAAA;qBACR;iBACF;aACF;SACF,QAAQ,YAAY,EAAC;QAEtB,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,sCAAsC;IACtC,sDAAsD;IACtD,8CAA8C;IAC9C,oDAAoD;IACpD,EAAE;IACF,2DAA2D;IAC3D,mDAAmD;IACnD,qBAAqB,CAAC,SAAqB;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAC7B,SAAS,CAAC,CAAC,CAAC,EACZ,SAAS,CAAC,CAAC,CAAC,EACZ,CAAC,IAAI,CAAC,uBAAuB,CAC9B,CAAA;gBACD,IAAI,CAAC,OAAO;oBAAE,SAAQ;gBACtB,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;gBACtB,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;aAClB;SACF;QACD,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;IAC1C,CAAC;IAED,UAAU,CACR,CAAW,EACX,CAAW,EACX,eAAwB,KAAK;QAE7B,IAAI,EAAE,GAAG,CAAC,CAAA;QACV,IAAI,EAAE,GAAG,CAAC,CAAA;QACV,IAAI,MAAM,GAAa,EAAE,CAAA;QACzB,IAAI,KAAK,GAAW,EAAE,CAAA;QACtB,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE;YACrC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;gBACnB,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC1C,EAAE,EAAE,CAAA;gBACJ,EAAE,EAAE,CAAA;aACL;iBAAM,IAAI,YAAY,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;gBAChE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAClB,EAAE,EAAE,CAAA;aACL;iBAAM,IAAI,YAAY,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;gBAChE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAClB,EAAE,EAAE,CAAA;aACL;iBAAM,IACL,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG;gBACb,CAAC,CAAC,EAAE,CAAC;gBACL,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC5C,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EACd;gBACA,IAAI,KAAK,KAAK,GAAG;oBAAE,OAAO,KAAK,CAAA;gBAC/B,KAAK,GAAG,GAAG,CAAA;gBACX,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAClB,EAAE,EAAE,CAAA;gBACJ,EAAE,EAAE,CAAA;aACL;iBAAM,IACL,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG;gBACb,CAAC,CAAC,EAAE,CAAC;gBACL,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC5C,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EACd;gBACA,IAAI,KAAK,KAAK,GAAG;oBAAE,OAAO,KAAK,CAAA;gBAC/B,KAAK,GAAG,GAAG,CAAA;gBACX,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAClB,EAAE,EAAE,CAAA;gBACJ,EAAE,EAAE,CAAA;aACL;iBAAM;gBACL,OAAO,KAAK,CAAA;aACb;SACF;QACD,8DAA8D;QAC9D,iCAAiC;QACjC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,MAAM,CAAA;IACxC,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAM;QAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,IAAI,YAAY,GAAG,CAAC,CAAA;QAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE;YACpE,MAAM,GAAG,CAAC,MAAM,CAAA;YAChB,YAAY,EAAE,CAAA;SACf;QAED,IAAI,YAAY;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAC5D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,+CAA+C;IAC/C,yCAAyC;IACzC,uDAAuD;IACvD,mDAAmD;IACnD,mBAAmB;IACnB,QAAQ,CAAC,IAAc,EAAE,OAAsB,EAAE,UAAmB,KAAK;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,4DAA4D;QAC5D,mEAAmE;QACnE,sBAAsB;QACtB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1E,MAAM,OAAO,GACX,CAAC,SAAS;gBACV,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gBACf,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAE3B,MAAM,YAAY,GAChB,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YAChE,MAAM,UAAU,GACd,CAAC,YAAY;gBACb,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;gBACjB,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;gBACjB,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;gBAClB,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ;gBAC9B,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YAE9B,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YACnD,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YACzD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;gBACtD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAW,CAAC,CAAA;gBACtE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE;oBACzC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;oBACjB,IAAI,GAAG,GAAG,GAAG,EAAE;wBACb,OAAO,GAAG,OAAO,CAAC,KAAK,CAAE,GAAG,CAAC,CAAA;qBAC9B;yBAAM,IAAI,GAAG,GAAG,GAAG,EAAE;wBACpB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;qBACvB;iBACF;aACF;SACF;QAED,4DAA4D;QAC5D,oEAAoE;QACpE,MAAM,EAAE,iBAAiB,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAC9C,IAAI,iBAAiB,IAAI,CAAC,EAAE;YAC1B,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;SACvC;QAED,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QAC/C,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAEnD,KACE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EACzD,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAClB,EAAE,EAAE,EAAE,EAAE,EAAE,EACV;YACA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;YAC3B,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAA;YACnB,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;YAEhB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YAEzB,wBAAwB;YACxB,wCAAwC;YACxC,qBAAqB;YACrB,IAAI,CAAC,KAAK,KAAK,EAAE;gBACf,OAAO,KAAK,CAAA;aACb;YACD,oBAAoB;YAEpB,IAAI,CAAC,KAAK,gBAAQ,EAAE;gBAClB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBAEvC,OAAO;gBACP,yCAAyC;gBACzC,cAAc;gBACd,cAAc;gBACd,cAAc;gBACd,QAAQ;gBACR,iDAAiD;gBACjD,wDAAwD;gBACxD,yBAAyB;gBACzB,sDAAsD;gBACtD,6BAA6B;gBAC7B,EAAE;gBACF,mCAAmC;gBACnC,gBAAgB;gBAChB,eAAe;gBACf,kCAAkC;gBAClC,oBAAoB;gBACpB,mBAAmB;gBACnB,qCAAqC;gBACrC,mCAAmC;gBACnC,iCAAiC;gBACjC,kCAAkC;gBAClC,IAAI,EAAE,GAAG,EAAE,CAAA;gBACX,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;gBACf,IAAI,EAAE,KAAK,EAAE,EAAE;oBACb,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;oBAC3B,8CAA8C;oBAC9C,yBAAyB;oBACzB,2CAA2C;oBAC3C,sBAAsB;oBACtB,sDAAsD;oBACtD,uBAAuB;oBACvB,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;wBACpB,IACE,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG;4BAChB,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI;4BACjB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;4BAE5C,OAAO,KAAK,CAAA;qBACf;oBACD,OAAO,IAAI,CAAA;iBACZ;gBAED,mDAAmD;gBACnD,OAAO,EAAE,GAAG,EAAE,EAAE;oBACd,IAAI,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;oBAExB,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;oBAEhE,qDAAqD;oBACrD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE;wBAC7D,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;wBACtD,iBAAiB;wBACjB,OAAO,IAAI,CAAA;qBACZ;yBAAM;wBACL,kCAAkC;wBAClC,iDAAiD;wBACjD,IACE,SAAS,KAAK,GAAG;4BACjB,SAAS,KAAK,IAAI;4BAClB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAC7C;4BACA,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;4BAClD,MAAK;yBACN;wBAED,uCAAuC;wBACvC,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAA;wBACtD,EAAE,EAAE,CAAA;qBACL;iBACF;gBAED,sBAAsB;gBACtB,mEAAmE;gBACnE,qBAAqB;gBACrB,IAAI,OAAO,EAAE;oBACX,kBAAkB;oBAClB,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;oBAC7D,IAAI,EAAE,KAAK,EAAE,EAAE;wBACb,OAAO,IAAI,CAAA;qBACZ;iBACF;gBACD,oBAAoB;gBACpB,OAAO,KAAK,CAAA;aACb;YAED,0BAA0B;YAC1B,gDAAgD;YAChD,qDAAqD;YACrD,IAAI,GAAY,CAAA;YAChB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;gBACzB,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;gBACb,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;aACtC;iBAAM;gBACL,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACf,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;aACvC;YAED,IAAI,CAAC,GAAG;gBAAE,OAAO,KAAK,CAAA;SACvB;QAED,oDAAoD;QACpD,oDAAoD;QACpD,2CAA2C;QAC3C,kDAAkD;QAClD,oDAAoD;QACpD,uDAAuD;QACvD,oDAAoD;QACpD,yDAAyD;QACzD,6BAA6B;QAC7B,yCAAyC;QAEzC,gEAAgE;QAChE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YAC1B,oDAAoD;YACpD,gBAAgB;YAChB,OAAO,IAAI,CAAA;SACZ;aAAM,IAAI,EAAE,KAAK,EAAE,EAAE;YACpB,+CAA+C;YAC/C,iDAAiD;YACjD,uBAAuB;YACvB,OAAO,OAAO,CAAA;SACf;aAAM,IAAI,EAAE,KAAK,EAAE,EAAE;YACpB,4CAA4C;YAC5C,oDAAoD;YACpD,iDAAiD;YACjD,wBAAwB;YACxB,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;YAEvC,qBAAqB;SACtB;aAAM;YACL,yBAAyB;YACzB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAA;SACxB;QACD,oBAAoB;IACtB,CAAC;IAED,WAAW;QACT,OAAO,IAAA,mBAAW,EAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,IAAA,4CAAkB,EAAC,OAAO,CAAC,CAAA;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,YAAY;QACZ,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,gBAAQ,CAAA;QACrC,IAAI,OAAO,KAAK,EAAE;YAAE,OAAO,EAAE,CAAA;QAE7B,uDAAuD;QACvD,0DAA0D;QAC1D,IAAI,CAA0B,CAAA;QAC9B,IAAI,QAAQ,GAAoC,IAAI,CAAA;QACpD,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;YAC/B,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAA;SAChD;aAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE;YAC5C,QAAQ,GAAG,CACT,OAAO,CAAC,MAAM;gBACZ,CAAC,CAAC,OAAO,CAAC,GAAG;oBACX,CAAC,CAAC,uBAAuB;oBACzB,CAAC,CAAC,oBAAoB;gBACxB,CAAC,CAAC,OAAO,CAAC,GAAG;oBACb,CAAC,CAAC,iBAAiB;oBACnB,CAAC,CAAC,cAAc,CACnB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;SACR;aAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;YACxC,QAAQ,GAAG,CACT,OAAO,CAAC,MAAM;gBACZ,CAAC,CAAC,OAAO,CAAC,GAAG;oBACX,CAAC,CAAC,mBAAmB;oBACrB,CAAC,CAAC,gBAAgB;gBACpB,CAAC,CAAC,OAAO,CAAC,GAAG;oBACb,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,UAAU,CACf,CAAC,CAAC,CAAC,CAAA;SACL;aAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE;YAC7C,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,CAAA;SAC9D;aAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE;YACzC,QAAQ,GAAG,WAAW,CAAA;SACvB;QAED,MAAM,EAAE,GAAG,YAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5D,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9D,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC,MAAM,CAAA;QAE5D,mDAAmD;QACnD,4BAA4B;QAC5B,EAAE;QACF,wDAAwD;QACxD,yDAAyD;QACzD,2CAA2C;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QAEpB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;YACnB,OAAO,IAAI,CAAC,MAAM,CAAA;SACnB;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU;YAChC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,CAAC,GAAG;gBACb,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,YAAY,CAAA;QAChB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAElD,kCAAkC;QAClC,kDAAkD;QAClD,sEAAsE;QACtE,iDAAiD;QACjD,8DAA8D;QAC9D,mCAAmC;QACnC,IAAI,EAAE,GAAG,GAAG;aACT,GAAG,CAAC,OAAO,CAAC,EAAE;YACb,MAAM,EAAE,GAAiC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACvD,IAAI,CAAC,YAAY,MAAM,EAAE;oBACvB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;wBAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;iBAChD;gBACD,OAAO,OAAO,CAAC,KAAK,QAAQ;oBAC1B,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;oBACjB,CAAC,CAAC,CAAC,KAAK,gBAAQ;wBAChB,CAAC,CAAC,gBAAQ;wBACV,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YACZ,CAAC,CAAiC,CAAA;YAClC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACtB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACtB,IAAI,CAAC,KAAK,gBAAQ,IAAI,IAAI,KAAK,gBAAQ,EAAE;oBACvC,OAAM;iBACP;gBACD,IAAI,IAAI,KAAK,SAAS,EAAE;oBACtB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,gBAAQ,EAAE;wBAC3C,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,CAAA;qBACjD;yBAAM;wBACL,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;qBAChB;iBACF;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE;oBAC7B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAA;iBAC9C;qBAAM,IAAI,IAAI,KAAK,gBAAQ,EAAE;oBAC5B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;oBACzD,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,gBAAQ,CAAA;iBACrB;YACH,CAAC,CAAC,CAAA;YACF,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,gBAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjD,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAA;QAEZ,+DAA+D;QAC/D,mEAAmE;QACnE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAC9D,4BAA4B;QAC5B,gDAAgD;QAChD,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,CAAA;QAElC,gDAAgD;QAChD,IAAI,IAAI,CAAC,MAAM;YAAE,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,CAAA;QAE1C,IAAI;YACF,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YACjD,qBAAqB;SACtB;QAAC,OAAO,EAAE,EAAE;YACX,uBAAuB;YACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;SACpB;QACD,oBAAoB;QACpB,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,UAAU,CAAC,CAAS;QAClB,mDAAmD;QACnD,6DAA6D;QAC7D,8CAA8C;QAC9C,0CAA0C;QAC1C,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;SACpB;aAAM,IAAI,IAAI,CAAC,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAClD,sCAAsC;YACtC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;SAC/B;aAAM;YACL,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;SACtB;IACH,CAAC;IAED,KAAK,CAAC,CAAS,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO;QACrC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACpC,8CAA8C;QAC9C,iBAAiB;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,KAAK,CAAA;SACb;QACD,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,EAAE,CAAA;SAChB;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,EAAE;YACxB,OAAO,IAAI,CAAA;SACZ;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,gCAAgC;QAChC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SAC5B;QAED,6CAA6C;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;QAErC,0DAA0D;QAC1D,2DAA2D;QAC3D,mCAAmC;QACnC,uCAAuC;QAEvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QAEpC,0EAA0E;QAC1E,IAAI,QAAQ,GAAW,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACxC,IAAI,CAAC,QAAQ,EAAE;YACb,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpD,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;aACjB;SACF;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;YACtB,IAAI,IAAI,GAAG,EAAE,CAAA;YACb,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7C,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;aAClB;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YACjD,IAAI,GAAG,EAAE;gBACP,IAAI,OAAO,CAAC,UAAU,EAAE;oBACtB,OAAO,IAAI,CAAA;iBACZ;gBACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;aACpB;SACF;QAED,2DAA2D;QAC3D,8BAA8B;QAC9B,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,OAAO,KAAK,CAAA;SACb;QACD,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAqB;QACnC,OAAO,iBAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,CAAA;IAC1C,CAAC;CACF;AA33BD,8BA23BC;AACD,qBAAqB;AACrB,mCAA8B;AAArB,6FAAA,GAAG,OAAA;AACZ,yCAAoC;AAA3B,mGAAA,MAAM,OAAA;AACf,6CAAwC;AAA/B,uGAAA,QAAQ,OAAA;AACjB,oBAAoB;AACpB,iBAAS,CAAC,GAAG,GAAG,YAAG,CAAA;AACnB,iBAAS,CAAC,SAAS,GAAG,SAAS,CAAA;AAC/B,iBAAS,CAAC,MAAM,GAAG,kBAAM,CAAA;AACzB,iBAAS,CAAC,QAAQ,GAAG,sBAAQ,CAAA","sourcesContent":["import expand from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { AST, ExtglobType } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\ntype Platform =\n | 'aix'\n | 'android'\n | 'darwin'\n | 'freebsd'\n | 'haiku'\n | 'linux'\n | 'openbsd'\n | 'sunos'\n | 'win32'\n | 'cygwin'\n | 'netbsd'\n\nexport interface MinimatchOptions {\n nobrace?: boolean\n nocomment?: boolean\n nonegate?: boolean\n debug?: boolean\n noglobstar?: boolean\n noext?: boolean\n nonull?: boolean\n windowsPathsNoEscape?: boolean\n allowWindowsEscape?: boolean\n partial?: boolean\n dot?: boolean\n nocase?: boolean\n nocaseMagicOnly?: boolean\n magicalBraces?: boolean\n matchBase?: boolean\n flipNegate?: boolean\n preserveMultipleSlashes?: boolean\n optimizationLevel?: number\n platform?: Platform\n windowsNoMagicRoot?: boolean\n}\n\nexport const minimatch = (\n p: string,\n pattern: string,\n options: MinimatchOptions = {}\n) => {\n assertValidPattern(pattern)\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n ext = ext.toLowerCase()\n return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n ext = ext.toLowerCase()\n return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) => !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) => f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) => f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExt([$0])\n if (!ext) return noext\n ext = ext.toLowerCase()\n return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExtDot([$0])\n if (!ext) return noext\n ext = ext.toLowerCase()\n return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExtDot([$0])\n return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExt([$0])\n return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n const len = $0.length\n return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n const len = $0.length\n return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n typeof process === 'object' && process\n ? (typeof process.env === 'object' &&\n process.env &&\n process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n process.platform\n : 'posix'\n) as Platform\ntype Sep = '\\\\' | '/'\nconst path: { [k: string]: { sep: Sep } } = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n (pattern: string, options: MinimatchOptions = {}) =>\n (p: string) =>\n minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch\n }\n\n const orig = minimatch\n\n const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n orig(p, pattern, ext(def, options))\n\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern: string, options: MinimatchOptions = {}) {\n super(pattern, ext(def, options))\n }\n static defaults(options: MinimatchOptions) {\n return orig.defaults(ext(def, options)).Minimatch\n }\n },\n\n AST: class AST extends orig.AST {\n /* c8 ignore start */\n constructor(\n type: ExtglobType | null,\n parent?: AST,\n options: MinimatchOptions = {}\n ) {\n super(type, parent, ext(def, options))\n }\n /* c8 ignore stop */\n\n static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n return orig.AST.fromGlob(pattern, ext(def, options))\n }\n },\n\n unescape: (\n s: string,\n options: Pick<MinimatchOptions, 'windowsPathsNoEscape'> = {}\n ) => orig.unescape(s, ext(def, options)),\n\n escape: (\n s: string,\n options: Pick<MinimatchOptions, 'windowsPathsNoEscape'> = {}\n ) => orig.escape(s, ext(def, options)),\n\n filter: (pattern: string, options: MinimatchOptions = {}) =>\n orig.filter(pattern, ext(def, options)),\n\n defaults: (options: MinimatchOptions) => orig.defaults(ext(def, options)),\n\n makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n orig.makeRe(pattern, ext(def, options)),\n\n braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n orig.braceExpand(pattern, ext(def, options)),\n\n match: (list: string[], pattern: string, options: MinimatchOptions = {}) =>\n orig.match(list, pattern, ext(def, options)),\n\n sep: orig.sep,\n GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n pattern: string,\n options: MinimatchOptions = {}\n) => {\n assertValidPattern(pattern)\n\n // Thanks to Yeting Li <https://github.com/yetingli> for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n list: string[],\n pattern: string,\n options: MinimatchOptions = {}\n) => {\n const mm = new Minimatch(pattern, options)\n list = list.filter(f => mm.match(f))\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n _src?: string\n _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n options: MinimatchOptions\n set: ParseReturnFiltered[][]\n pattern: string\n\n windowsPathsNoEscape: boolean\n nonegate: boolean\n negate: boolean\n comment: boolean\n empty: boolean\n preserveMultipleSlashes: boolean\n partial: boolean\n globSet: string[]\n globParts: string[][]\n nocase: boolean\n\n isWindows: boolean\n platform: Platform\n windowsNoMagicRoot: boolean\n\n regexp: false | null | MMRegExp\n constructor(pattern: string, options: MinimatchOptions = {}) {\n assertValidPattern(pattern)\n\n options = options || {}\n this.options = options\n this.pattern = pattern\n this.platform = options.platform || defaultPlatform\n this.isWindows = this.platform === 'win32'\n this.windowsPathsNoEscape =\n !!options.windowsPathsNoEscape || options.allowWindowsEscape === false\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/')\n }\n this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n this.regexp = null\n this.negate = false\n this.nonegate = !!options.nonegate\n this.comment = false\n this.empty = false\n this.partial = !!options.partial\n this.nocase = !!this.options.nocase\n this.windowsNoMagicRoot =\n options.windowsNoMagicRoot !== undefined\n ? options.windowsNoMagicRoot\n : !!(this.isWindows && this.nocase)\n\n this.globSet = []\n this.globParts = []\n this.set = []\n\n // make the set of regexps etc.\n this.make()\n }\n\n hasMagic(): boolean {\n if (this.options.magicalBraces && this.set.length > 1) {\n return true\n }\n for (const pattern of this.set) {\n for (const part of pattern) {\n if (typeof part !== 'string') return true\n }\n }\n return false\n }\n\n debug(..._: any[]) {}\n\n make() {\n const pattern = this.pattern\n const options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())]\n\n if (options.debug) {\n this.debug = (...args: any[]) => console.error(...args)\n }\n\n this.debug(this.pattern, this.globSet)\n\n // step 3: now we have a set, so turn each one into a series of\n // path-portion matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n //\n // First, we preprocess to make the glob pattern sets a bit simpler\n // and deduped. There are some perf-killing patterns that can cause\n // problems with a glob walk, but we can simplify them down a bit.\n const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n this.globParts = this.preprocess(rawGlobParts)\n this.debug(this.pattern, this.globParts)\n\n // glob --> regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC =\n s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3])\n const isDrive = /^[a-z]:/i.test(s[0])\n if (isUNC) {\n return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))]\n } else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n }\n }\n return s.map(ss => this.parse(ss))\n })\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n this.set = set.filter(\n s => s.indexOf(false) === -1\n ) as ParseReturnFiltered[][]\n\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i]\n if (\n p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])\n ) {\n p[2] = '?'\n }\n }\n }\n\n this.debug(this.pattern, this.set)\n }\n\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts: string[][]) {\n // if we're not in globstar mode, then turn all ** into *\n if (this.options.noglobstar) {\n for (let i = 0; i < globParts.length; i++) {\n for (let j = 0; j < globParts[i].length; j++) {\n if (globParts[i][j] === '**') {\n globParts[i][j] = '*'\n }\n }\n }\n }\n\n const { optimizationLevel = 1 } = this.options\n\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts)\n globParts = this.secondPhasePreProcess(globParts)\n } else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts)\n } else {\n globParts = this.adjascentGlobstarOptimize(globParts)\n }\n\n return globParts\n }\n\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs\n while (parts[i + 1] === '**') {\n i++\n }\n if (i !== gs) {\n parts.splice(gs, i - gs)\n }\n }\n return parts\n })\n }\n\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n parts = parts.reduce((set: string[], part) => {\n const prev = set[set.length - 1]\n if (part === '**' && prev === '**') {\n return set\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop()\n return set\n }\n }\n set.push(part)\n return set\n }, [])\n return parts.length === 0 ? [''] : parts\n })\n }\n\n levelTwoFileOptimize(parts: string | string[]) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts)\n }\n let didSomething: boolean = false\n do {\n didSomething = false\n // <pre>/<e>/<rest> -> <pre>/<rest>\n if (!this.preserveMultipleSlashes) {\n for (let i = 1; i < parts.length - 1; i++) {\n const p = parts[i]\n // don't squeeze out UNC patterns\n if (i === 1 && p === '' && parts[0] === '') continue\n if (p === '.' || p === '') {\n didSomething = true\n parts.splice(i, 1)\n i--\n }\n }\n if (\n parts[0] === '.' &&\n parts.length === 2 &&\n (parts[1] === '.' || parts[1] === '')\n ) {\n didSomething = true\n parts.pop()\n }\n }\n\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n let dd: number = 0\n while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n const p = parts[dd - 1]\n if (p && p !== '.' && p !== '..' && p !== '**') {\n didSomething = true\n parts.splice(dd - 1, 2)\n dd -= 2\n }\n }\n } while (didSomething)\n return parts.length === 0 ? [''] : parts\n }\n\n // First phase: single-pattern processing\n // <pre> is 1 or more portions\n // <rest> is 1 or more portions\n // <p> is any portion other than ., .., '', or **\n // <e> is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n // <pre>/<e>/<rest> -> <pre>/<rest>\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n // **/**/<rest> -> **/<rest>\n //\n // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow\n // this WOULD be allowed if ** did follow symlinks, or * didn't\n firstPhasePreProcess(globParts: string[][]) {\n let didSomething = false\n do {\n didSomething = false\n // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n // <pre>/**/**/<rest> -> <pre>/**/<rest>\n gss++\n }\n // eg, if gs is 2 and gss is 4, that means we have 3 **\n // parts, and can remove 2 of them.\n if (gss > gs) {\n parts.splice(gs + 1, gss - gs)\n }\n\n let next = parts[gs + 1]\n const p = parts[gs + 2]\n const p2 = parts[gs + 3]\n if (next !== '..') continue\n if (\n !p ||\n p === '.' ||\n p === '..' ||\n !p2 ||\n p2 === '.' ||\n p2 === '..'\n ) {\n continue\n }\n didSomething = true\n // edit parts in place, and push the new one\n parts.splice(gs, 1)\n const other = parts.slice(0)\n other[gs] = '**'\n globParts.push(other)\n gs--\n }\n\n // <pre>/<e>/<rest> -> <pre>/<rest>\n if (!this.preserveMultipleSlashes) {\n for (let i = 1; i < parts.length - 1; i++) {\n const p = parts[i]\n // don't squeeze out UNC patterns\n if (i === 1 && p === '' && parts[0] === '') continue\n if (p === '.' || p === '') {\n didSomething = true\n parts.splice(i, 1)\n i--\n }\n }\n if (\n parts[0] === '.' &&\n parts.length === 2 &&\n (parts[1] === '.' || parts[1] === '')\n ) {\n didSomething = true\n parts.pop()\n }\n }\n\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n let dd: number = 0\n while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n const p = parts[dd - 1]\n if (p && p !== '.' && p !== '..' && p !== '**') {\n didSomething = true\n const needDot = dd === 1 && parts[dd + 1] === '**'\n const splin = needDot ? ['.'] : []\n parts.splice(dd - 1, 2, ...splin)\n if (parts.length === 0) parts.push('')\n dd -= 2\n }\n }\n }\n } while (didSomething)\n\n return globParts\n }\n\n // second phase: multi-pattern dedupes\n // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest>\n // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest>\n // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest>\n //\n // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest>\n // ^-- not valid because ** doens't follow symlinks\n secondPhasePreProcess(globParts: string[][]): string[][] {\n for (let i = 0; i < globParts.length - 1; i++) {\n for (let j = i + 1; j < globParts.length; j++) {\n const matched = this.partsMatch(\n globParts[i],\n globParts[j],\n !this.preserveMultipleSlashes\n )\n if (!matched) continue\n globParts[i] = matched\n globParts[j] = []\n }\n }\n return globParts.filter(gs => gs.length)\n }\n\n partsMatch(\n a: string[],\n b: string[],\n emptyGSMatch: boolean = false\n ): false | string[] {\n let ai = 0\n let bi = 0\n let result: string[] = []\n let which: string = ''\n while (ai < a.length && bi < b.length) {\n if (a[ai] === b[bi]) {\n result.push(which === 'b' ? b[bi] : a[ai])\n ai++\n bi++\n } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n result.push(a[ai])\n ai++\n } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n result.push(b[bi])\n bi++\n } else if (\n a[ai] === '*' &&\n b[bi] &&\n (this.options.dot || !b[bi].startsWith('.')) &&\n b[bi] !== '**'\n ) {\n if (which === 'b') return false\n which = 'a'\n result.push(a[ai])\n ai++\n bi++\n } else if (\n b[bi] === '*' &&\n a[ai] &&\n (this.options.dot || !a[ai].startsWith('.')) &&\n a[ai] !== '**'\n ) {\n if (which === 'a') return false\n which = 'b'\n result.push(b[bi])\n ai++\n bi++\n } else {\n return false\n }\n }\n // if we fall out of the loop, it means they two are identical\n // as long as their lengths match\n return a.length === b.length && result\n }\n\n parseNegate() {\n if (this.nonegate) return\n\n const pattern = this.pattern\n let negate = false\n let negateOffset = 0\n\n for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.slice(negateOffset)\n this.negate = negate\n }\n\n // set partial to true to test if, for example,\n // \"/a/b\" matches the start of \"/*/b/*/d\"\n // Partial means, if you run out of file before you run\n // out of pattern, then that's fine, as long as all\n // the parts match.\n matchOne(file: string[], pattern: ParseReturn[], partial: boolean = false) {\n const options = this.options\n\n // UNC paths like //?/X:/... can match X:/... and vice versa\n // Drive letters in absolute drive or unc paths are always compared\n // case-insensitively.\n if (this.isWindows) {\n const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n const fileUNC =\n !fileDrive &&\n file[0] === '' &&\n file[1] === '' &&\n file[2] === '?' &&\n /^[a-z]:$/i.test(file[3])\n\n const patternDrive =\n typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n const patternUNC =\n !patternDrive &&\n pattern[0] === '' &&\n pattern[1] === '' &&\n pattern[2] === '?' &&\n typeof pattern[3] === 'string' &&\n /^[a-z]:$/i.test(pattern[3])\n\n const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined\n const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined\n if (typeof fdi === 'number' && typeof pdi === 'number') {\n const [fd, pd]: [string, string] = [file[fdi], pattern[pdi] as string]\n if (fd.toLowerCase() === pd.toLowerCase()) {\n pattern[pdi] = fd\n if (pdi > fdi) {\n pattern = pattern.slice( pdi)\n } else if (fdi > pdi) {\n file = file.slice(fdi)\n }\n }\n }\n }\n\n // resolve and reduce . and .. portions in the file as well.\n // dont' need to do the second phase, because it's only one string[]\n const { optimizationLevel = 1 } = this.options\n if (optimizationLevel >= 2) {\n file = this.levelTwoFileOptimize(file)\n }\n\n this.debug('matchOne', this, { file, pattern })\n this.debug('matchOne', file.length, pattern.length)\n\n for (\n var fi = 0, pi = 0, fl = file.length, pl = pattern.length;\n fi < fl && pi < pl;\n fi++, pi++\n ) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n /* c8 ignore start */\n if (p === false) {\n return false\n }\n /* c8 ignore stop */\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (\n file[fi] === '.' ||\n file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')\n )\n return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (\n swallowee === '.' ||\n swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')\n ) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n /* c8 ignore start */\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) {\n return true\n }\n }\n /* c8 ignore stop */\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n let hit: boolean\n if (typeof p === 'string') {\n hit = f === p\n this.debug('string match', p, f, hit)\n } else {\n hit = p.test(f)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n return fi === fl - 1 && file[fi] === ''\n\n /* c8 ignore start */\n } else {\n // should be unreachable.\n throw new Error('wtf?')\n }\n /* c8 ignore stop */\n }\n\n braceExpand() {\n return braceExpand(this.pattern, this.options)\n }\n\n parse(pattern: string): ParseReturn {\n assertValidPattern(pattern)\n\n const options = this.options\n\n // shortcuts\n if (pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n // far and away, the most common glob pattern parts are\n // *, *.*, and *.<ext> Add a fast check method for those.\n let m: RegExpMatchArray | null\n let fastTest: null | ((f: string) => boolean) = null\n if ((m = pattern.match(starRE))) {\n fastTest = options.dot ? starTestDot : starTest\n } else if ((m = pattern.match(starDotExtRE))) {\n fastTest = (\n options.nocase\n ? options.dot\n ? starDotExtTestNocaseDot\n : starDotExtTestNocase\n : options.dot\n ? starDotExtTestDot\n : starDotExtTest\n )(m[1])\n } else if ((m = pattern.match(qmarksRE))) {\n fastTest = (\n options.nocase\n ? options.dot\n ? qmarksTestNocaseDot\n : qmarksTestNocase\n : options.dot\n ? qmarksTestDot\n : qmarksTest\n )(m)\n } else if ((m = pattern.match(starDotStarRE))) {\n fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n } else if ((m = pattern.match(dotStarRE))) {\n fastTest = dotStarTest\n }\n\n const re = AST.fromGlob(pattern, this.options).toMMPattern()\n return fastTest ? Object.assign(re, { test: fastTest }) : re\n }\n\n makeRe() {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n const set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n const options = this.options\n\n const twoStar = options.noglobstar\n ? star\n : options.dot\n ? twoStarDot\n : twoStarNoDot\n const flags = new Set(options.nocase ? ['i'] : [])\n\n // regexpify non-globstar patterns\n // if ** is only item, then we just do one twoStar\n // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n // if ** is last, append (\\/twoStar|) to previous\n // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n // then filter out GLOBSTAR symbols\n let re = set\n .map(pattern => {\n const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n if (p instanceof RegExp) {\n for (const f of p.flags.split('')) flags.add(f)\n }\n return typeof p === 'string'\n ? regExpEscape(p)\n : p === GLOBSTAR\n ? GLOBSTAR\n : p._src\n }) as (string | typeof GLOBSTAR)[]\n pp.forEach((p, i) => {\n const next = pp[i + 1]\n const prev = pp[i - 1]\n if (p !== GLOBSTAR || prev === GLOBSTAR) {\n return\n }\n if (prev === undefined) {\n if (next !== undefined && next !== GLOBSTAR) {\n pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n } else {\n pp[i] = twoStar\n }\n } else if (next === undefined) {\n pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?'\n } else if (next !== GLOBSTAR) {\n pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n pp[i + 1] = GLOBSTAR\n }\n })\n return pp.filter(p => p !== GLOBSTAR).join('/')\n })\n .join('|')\n\n // need to wrap in parens if we had more than one thing with |,\n // otherwise only the first will be anchored to ^ and the last to $\n const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^' + open + re + close + '$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').+$'\n\n try {\n this.regexp = new RegExp(re, [...flags].join(''))\n /* c8 ignore start */\n } catch (ex) {\n // should be impossible\n this.regexp = false\n }\n /* c8 ignore stop */\n return this.regexp\n }\n\n slashSplit(p: string) {\n // if p starts with // on windows, we preserve that\n // so that UNC paths aren't broken. Otherwise, any number of\n // / characters are coalesced into one, unless\n // preserveMultipleSlashes is set to true.\n if (this.preserveMultipleSlashes) {\n return p.split('/')\n } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n // add an extra '' for the one we lose\n return ['', ...p.split(/\\/+/)]\n } else {\n return p.split(/\\/+/)\n }\n }\n\n match(f: string, partial = this.partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) {\n return false\n }\n if (this.empty) {\n return f === ''\n }\n\n if (f === '/' && partial) {\n return true\n }\n\n const options = this.options\n\n // windows: need to use /, not \\\n if (this.isWindows) {\n f = f.split('\\\\').join('/')\n }\n\n // treat the test path as a set of pathparts.\n const ff = this.slashSplit(f)\n this.debug(this.pattern, 'split', ff)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n const set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n let filename: string = ff[ff.length - 1]\n if (!filename) {\n for (let i = ff.length - 2; !filename && i >= 0; i--) {\n filename = ff[i]\n }\n }\n\n for (let i = 0; i < set.length; i++) {\n const pattern = set[i]\n let file = ff\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n const hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) {\n return true\n }\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) {\n return false\n }\n return this.negate\n }\n\n static defaults(def: MinimatchOptions) {\n return minimatch.defaults(def).Minimatch\n }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n"]} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/package.json b/node_modules/minimatch/dist/cjs/package.json
new file mode 100644
index 0000000..5bbefff
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/package.json
@@ -0,0 +1,3 @@
+{
+ "type": "commonjs"
+}
diff --git a/node_modules/minimatch/dist/cjs/unescape.d.ts b/node_modules/minimatch/dist/cjs/unescape.d.ts
new file mode 100644
index 0000000..23a7b38
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/unescape.d.ts
@@ -0,0 +1,17 @@
+import { MinimatchOptions } from './index.js';
+/**
+ * Un-escape a string that has been escaped with {@link escape}.
+ *
+ * If the {@link windowsPathsNoEscape} option is used, then square-brace
+ * escapes are removed, but not backslash escapes. For example, it will turn
+ * the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`,
+ * becuase `\` is a path separator in `windowsPathsNoEscape` mode.
+ *
+ * When `windowsPathsNoEscape` is not set, then both brace escapes and
+ * backslash escapes are removed.
+ *
+ * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped
+ * or unescaped.
+ */
+export declare const unescape: (s: string, { windowsPathsNoEscape, }?: Pick<MinimatchOptions, 'windowsPathsNoEscape'>) => string;
+//# sourceMappingURL=unescape.d.ts.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/unescape.d.ts.map b/node_modules/minimatch/dist/cjs/unescape.d.ts.map
new file mode 100644
index 0000000..7ace070
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/unescape.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"unescape.d.ts","sourceRoot":"","sources":["../../src/unescape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,QAAQ,MAChB,MAAM,8BAGN,KAAK,gBAAgB,EAAE,sBAAsB,CAAC,WAKlD,CAAA"} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/unescape.js b/node_modules/minimatch/dist/cjs/unescape.js
new file mode 100644
index 0000000..47c36bc
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/unescape.js
@@ -0,0 +1,24 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.unescape = void 0;
+/**
+ * Un-escape a string that has been escaped with {@link escape}.
+ *
+ * If the {@link windowsPathsNoEscape} option is used, then square-brace
+ * escapes are removed, but not backslash escapes. For example, it will turn
+ * the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`,
+ * becuase `\` is a path separator in `windowsPathsNoEscape` mode.
+ *
+ * When `windowsPathsNoEscape` is not set, then both brace escapes and
+ * backslash escapes are removed.
+ *
+ * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped
+ * or unescaped.
+ */
+const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {
+ return windowsPathsNoEscape
+ ? s.replace(/\[([^\/\\])\]/g, '$1')
+ : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2').replace(/\\([^\/])/g, '$1');
+};
+exports.unescape = unescape;
+//# sourceMappingURL=unescape.js.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/cjs/unescape.js.map b/node_modules/minimatch/dist/cjs/unescape.js.map
new file mode 100644
index 0000000..353d3aa
--- /dev/null
+++ b/node_modules/minimatch/dist/cjs/unescape.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"unescape.js","sourceRoot":"","sources":["../../src/unescape.ts"],"names":[],"mappings":";;;AACA;;;;;;;;;;;;;GAaG;AACI,MAAM,QAAQ,GAAG,CACtB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,MACsB,EAAE,EACtD,EAAE;IACF,OAAO,oBAAoB;QACzB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;QACnC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AAChF,CAAC,CAAA;AATY,QAAA,QAAQ,YASpB","sourcesContent":["import { MinimatchOptions } from './index.js'\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes. For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (\n s: string,\n {\n windowsPathsNoEscape = false,\n }: Pick<MinimatchOptions, 'windowsPathsNoEscape'> = {}\n) => {\n return windowsPathsNoEscape\n ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1')\n}\n"]} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/assert-valid-pattern.d.ts b/node_modules/minimatch/dist/mjs/assert-valid-pattern.d.ts
new file mode 100644
index 0000000..8e318b2
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/assert-valid-pattern.d.ts
@@ -0,0 +1,2 @@
+export declare const assertValidPattern: (pattern: any) => void;
+//# sourceMappingURL=assert-valid-pattern.d.ts.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/assert-valid-pattern.d.ts.map b/node_modules/minimatch/dist/mjs/assert-valid-pattern.d.ts.map
new file mode 100644
index 0000000..c61c031
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/assert-valid-pattern.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"assert-valid-pattern.d.ts","sourceRoot":"","sources":["../../src/assert-valid-pattern.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,kBAAkB,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAUlD,CAAA"} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/assert-valid-pattern.js b/node_modules/minimatch/dist/mjs/assert-valid-pattern.js
new file mode 100644
index 0000000..7b534fc
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/assert-valid-pattern.js
@@ -0,0 +1,10 @@
+const MAX_PATTERN_LENGTH = 1024 * 64;
+export const assertValidPattern = (pattern) => {
+ if (typeof pattern !== 'string') {
+ throw new TypeError('invalid pattern');
+ }
+ if (pattern.length > MAX_PATTERN_LENGTH) {
+ throw new TypeError('pattern is too long');
+ }
+};
+//# sourceMappingURL=assert-valid-pattern.js.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/assert-valid-pattern.js.map b/node_modules/minimatch/dist/mjs/assert-valid-pattern.js.map
new file mode 100644
index 0000000..b1a5a0b
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/assert-valid-pattern.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"assert-valid-pattern.js","sourceRoot":"","sources":["../../src/assert-valid-pattern.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAE,CAAA;AACpC,MAAM,CAAC,MAAM,kBAAkB,GAA2B,CACxD,OAAY,EACe,EAAE;IAC7B,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,MAAM,IAAI,SAAS,CAAC,iBAAiB,CAAC,CAAA;KACvC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,kBAAkB,EAAE;QACvC,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAA;KAC3C;AACH,CAAC,CAAA","sourcesContent":["const MAX_PATTERN_LENGTH = 1024 * 64\nexport const assertValidPattern: (pattern: any) => void = (\n pattern: any\n): asserts pattern is string => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern')\n }\n\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long')\n }\n}\n"]} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/ast.d.ts b/node_modules/minimatch/dist/mjs/ast.d.ts
new file mode 100644
index 0000000..e08641b
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/ast.d.ts
@@ -0,0 +1,19 @@
+import { MinimatchOptions, MMRegExp } from './index.js';
+export type ExtglobType = '!' | '?' | '+' | '*' | '@';
+export declare class AST {
+ #private;
+ type: ExtglobType | null;
+ constructor(type: ExtglobType | null, parent?: AST, options?: MinimatchOptions);
+ get hasMagic(): boolean | undefined;
+ toString(): string;
+ push(...parts: (string | AST)[]): void;
+ toJSON(): any[];
+ isStart(): boolean;
+ isEnd(): boolean;
+ copyIn(part: AST | string): void;
+ clone(parent: AST): AST;
+ static fromGlob(pattern: string, options?: MinimatchOptions): AST;
+ toMMPattern(): MMRegExp | string;
+ toRegExpSource(allowDot?: boolean): [re: string, body: string, hasMagic: boolean, uflag: boolean];
+}
+//# sourceMappingURL=ast.d.ts.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/ast.d.ts.map b/node_modules/minimatch/dist/mjs/ast.d.ts.map
new file mode 100644
index 0000000..5486a68
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/ast.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAwCvD,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAkCrD,qBAAa,GAAG;;IACd,IAAI,EAAE,WAAW,GAAG,IAAI,CAAA;gBAiBtB,IAAI,EAAE,WAAW,GAAG,IAAI,EACxB,MAAM,CAAC,EAAE,GAAG,EACZ,OAAO,GAAE,gBAAqB;IAahC,IAAI,QAAQ,IAAI,OAAO,GAAG,SAAS,CAUlC;IAGD,QAAQ,IAAI,MAAM;IA+ClB,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE;IAY/B,MAAM;IAgBN,OAAO,IAAI,OAAO;IAgBlB,KAAK,IAAI,OAAO;IAYhB,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM;IAKzB,KAAK,CAAC,MAAM,EAAE,GAAG;IAsIjB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAQ/D,WAAW,IAAI,QAAQ,GAAG,MAAM;IAgGhC,cAAc,CACZ,QAAQ,CAAC,EAAE,OAAO,GACjB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;CAiMjE"} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/ast.js b/node_modules/minimatch/dist/mjs/ast.js
new file mode 100644
index 0000000..9f9835e
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/ast.js
@@ -0,0 +1,585 @@
+// parse a single path portion
+import { parseClass } from './brace-expressions.js';
+import { unescape } from './unescape.js';
+const types = new Set(['!', '?', '+', '*', '@']);
+const isExtglobType = (c) => types.has(c);
+// Patterns that get prepended to bind to the start of either the
+// entire string, or just a single path portion, to prevent dots
+// and/or traversal patterns, when needed.
+// Exts don't need the ^ or / bit, because the root binds that already.
+const startNoTraversal = '(?!(?:^|/)\\.\\.?(?:$|/))';
+const startNoDot = '(?!\\.)';
+// characters that indicate a start of pattern needs the "no dots" bit,
+// because a dot *might* be matched. ( is not in the list, because in
+// the case of a child extglob, it will handle the prevention itself.
+const addPatternStart = new Set(['[', '.']);
+// cases where traversal is A-OK, no dot prevention needed
+const justDots = new Set(['..', '.']);
+const reSpecials = new Set('().*{}+?[]^$\\!');
+const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
+// any single thing other than /
+const qmark = '[^/]';
+// * => any number of characters
+const star = qmark + '*?';
+// use + when we need to ensure that *something* matches, because the * is
+// the only thing in the path portion.
+const starNoEmpty = qmark + '+?';
+// remove the \ chars that we added if we end up doing a nonmagic compare
+// const deslash = (s: string) => s.replace(/\\(.)/g, '$1')
+export class AST {
+ type;
+ #root;
+ #hasMagic;
+ #uflag = false;
+ #parts = [];
+ #parent;
+ #parentIndex;
+ #negs;
+ #filledNegs = false;
+ #options;
+ #toString;
+ // set to true if it's an extglob with no children
+ // (which really means one child of '')
+ #emptyExt = false;
+ constructor(type, parent, options = {}) {
+ this.type = type;
+ // extglobs are inherently magical
+ if (type)
+ this.#hasMagic = true;
+ this.#parent = parent;
+ this.#root = this.#parent ? this.#parent.#root : this;
+ this.#options = this.#root === this ? options : this.#root.#options;
+ this.#negs = this.#root === this ? [] : this.#root.#negs;
+ if (type === '!' && !this.#root.#filledNegs)
+ this.#negs.push(this);
+ this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;
+ }
+ get hasMagic() {
+ /* c8 ignore start */
+ if (this.#hasMagic !== undefined)
+ return this.#hasMagic;
+ /* c8 ignore stop */
+ for (const p of this.#parts) {
+ if (typeof p === 'string')
+ continue;
+ if (p.type || p.hasMagic)
+ return (this.#hasMagic = true);
+ }
+ // note: will be undefined until we generate the regexp src and find out
+ return this.#hasMagic;
+ }
+ // reconstructs the pattern
+ toString() {
+ if (this.#toString !== undefined)
+ return this.#toString;
+ if (!this.type) {
+ return (this.#toString = this.#parts.map(p => String(p)).join(''));
+ }
+ else {
+ return (this.#toString =
+ this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')');
+ }
+ }
+ #fillNegs() {
+ /* c8 ignore start */
+ if (this !== this.#root)
+ throw new Error('should only call on root');
+ if (this.#filledNegs)
+ return this;
+ /* c8 ignore stop */
+ // call toString() once to fill this out
+ this.toString();
+ this.#filledNegs = true;
+ let n;
+ while ((n = this.#negs.pop())) {
+ if (n.type !== '!')
+ continue;
+ // walk up the tree, appending everthing that comes AFTER parentIndex
+ let p = n;
+ let pp = p.#parent;
+ while (pp) {
+ for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {
+ for (const part of n.#parts) {
+ /* c8 ignore start */
+ if (typeof part === 'string') {
+ throw new Error('string part in extglob AST??');
+ }
+ /* c8 ignore stop */
+ part.copyIn(pp.#parts[i]);
+ }
+ }
+ p = pp;
+ pp = p.#parent;
+ }
+ }
+ return this;
+ }
+ push(...parts) {
+ for (const p of parts) {
+ if (p === '')
+ continue;
+ /* c8 ignore start */
+ if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {
+ throw new Error('invalid part: ' + p);
+ }
+ /* c8 ignore stop */
+ this.#parts.push(p);
+ }
+ }
+ toJSON() {
+ const ret = this.type === null
+ ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))
+ : [this.type, ...this.#parts.map(p => p.toJSON())];
+ if (this.isStart() && !this.type)
+ ret.unshift([]);
+ if (this.isEnd() &&
+ (this === this.#root ||
+ (this.#root.#filledNegs && this.#parent?.type === '!'))) {
+ ret.push({});
+ }
+ return ret;
+ }
+ isStart() {
+ if (this.#root === this)
+ return true;
+ // if (this.type) return !!this.#parent?.isStart()
+ if (!this.#parent?.isStart())
+ return false;
+ if (this.#parentIndex === 0)
+ return true;
+ // if everything AHEAD of this is a negation, then it's still the "start"
+ const p = this.#parent;
+ for (let i = 0; i < this.#parentIndex; i++) {
+ const pp = p.#parts[i];
+ if (!(pp instanceof AST && pp.type === '!')) {
+ return false;
+ }
+ }
+ return true;
+ }
+ isEnd() {
+ if (this.#root === this)
+ return true;
+ if (this.#parent?.type === '!')
+ return true;
+ if (!this.#parent?.isEnd())
+ return false;
+ if (!this.type)
+ return this.#parent?.isEnd();
+ // if not root, it'll always have a parent
+ /* c8 ignore start */
+ const pl = this.#parent ? this.#parent.#parts.length : 0;
+ /* c8 ignore stop */
+ return this.#parentIndex === pl - 1;
+ }
+ copyIn(part) {
+ if (typeof part === 'string')
+ this.push(part);
+ else
+ this.push(part.clone(this));
+ }
+ clone(parent) {
+ const c = new AST(this.type, parent);
+ for (const p of this.#parts) {
+ c.copyIn(p);
+ }
+ return c;
+ }
+ static #parseAST(str, ast, pos, opt) {
+ let escaping = false;
+ let inBrace = false;
+ let braceStart = -1;
+ let braceNeg = false;
+ if (ast.type === null) {
+ // outside of a extglob, append until we find a start
+ let i = pos;
+ let acc = '';
+ while (i < str.length) {
+ const c = str.charAt(i++);
+ // still accumulate escapes at this point, but we do ignore
+ // starts that are escaped
+ if (escaping || c === '\\') {
+ escaping = !escaping;
+ acc += c;
+ continue;
+ }
+ if (inBrace) {
+ if (i === braceStart + 1) {
+ if (c === '^' || c === '!') {
+ braceNeg = true;
+ }
+ }
+ else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {
+ inBrace = false;
+ }
+ acc += c;
+ continue;
+ }
+ else if (c === '[') {
+ inBrace = true;
+ braceStart = i;
+ braceNeg = false;
+ acc += c;
+ continue;
+ }
+ if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {
+ ast.push(acc);
+ acc = '';
+ const ext = new AST(c, ast);
+ i = AST.#parseAST(str, ext, i, opt);
+ ast.push(ext);
+ continue;
+ }
+ acc += c;
+ }
+ ast.push(acc);
+ return i;
+ }
+ // some kind of extglob, pos is at the (
+ // find the next | or )
+ let i = pos + 1;
+ let part = new AST(null, ast);
+ const parts = [];
+ let acc = '';
+ while (i < str.length) {
+ const c = str.charAt(i++);
+ // still accumulate escapes at this point, but we do ignore
+ // starts that are escaped
+ if (escaping || c === '\\') {
+ escaping = !escaping;
+ acc += c;
+ continue;
+ }
+ if (inBrace) {
+ if (i === braceStart + 1) {
+ if (c === '^' || c === '!') {
+ braceNeg = true;
+ }
+ }
+ else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {
+ inBrace = false;
+ }
+ acc += c;
+ continue;
+ }
+ else if (c === '[') {
+ inBrace = true;
+ braceStart = i;
+ braceNeg = false;
+ acc += c;
+ continue;
+ }
+ if (isExtglobType(c) && str.charAt(i) === '(') {
+ part.push(acc);
+ acc = '';
+ const ext = new AST(c, part);
+ part.push(ext);
+ i = AST.#parseAST(str, ext, i, opt);
+ continue;
+ }
+ if (c === '|') {
+ part.push(acc);
+ acc = '';
+ parts.push(part);
+ part = new AST(null, ast);
+ continue;
+ }
+ if (c === ')') {
+ if (acc === '' && ast.#parts.length === 0) {
+ ast.#emptyExt = true;
+ }
+ part.push(acc);
+ acc = '';
+ ast.push(...parts, part);
+ return i;
+ }
+ acc += c;
+ }
+ // unfinished extglob
+ // if we got here, it was a malformed extglob! not an extglob, but
+ // maybe something else in there.
+ ast.type = null;
+ ast.#hasMagic = undefined;
+ ast.#parts = [str.substring(pos - 1)];
+ return i;
+ }
+ static fromGlob(pattern, options = {}) {
+ const ast = new AST(null, undefined, options);
+ AST.#parseAST(pattern, ast, 0, options);
+ return ast;
+ }
+ // returns the regular expression if there's magic, or the unescaped
+ // string if not.
+ toMMPattern() {
+ // should only be called on root
+ /* c8 ignore start */
+ if (this !== this.#root)
+ return this.#root.toMMPattern();
+ /* c8 ignore stop */
+ const glob = this.toString();
+ const [re, body, hasMagic, uflag] = this.toRegExpSource();
+ // if we're in nocase mode, and not nocaseMagicOnly, then we do
+ // still need a regular expression if we have to case-insensitively
+ // match capital/lowercase characters.
+ const anyMagic = hasMagic ||
+ this.#hasMagic ||
+ (this.#options.nocase &&
+ !this.#options.nocaseMagicOnly &&
+ glob.toUpperCase() !== glob.toLowerCase());
+ if (!anyMagic) {
+ return body;
+ }
+ const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');
+ return Object.assign(new RegExp(`^${re}$`, flags), {
+ _src: re,
+ _glob: glob,
+ });
+ }
+ // returns the string match, the regexp source, whether there's magic
+ // in the regexp (so a regular expression is required) and whether or
+ // not the uflag is needed for the regular expression (for posix classes)
+ // TODO: instead of injecting the start/end at this point, just return
+ // the BODY of the regexp, along with the start/end portions suitable
+ // for binding the start/end in either a joined full-path makeRe context
+ // (where we bind to (^|/), or a standalone matchPart context (where
+ // we bind to ^, and not /). Otherwise slashes get duped!
+ //
+ // In part-matching mode, the start is:
+ // - if not isStart: nothing
+ // - if traversal possible, but not allowed: ^(?!\.\.?$)
+ // - if dots allowed or not possible: ^
+ // - if dots possible and not allowed: ^(?!\.)
+ // end is:
+ // - if not isEnd(): nothing
+ // - else: $
+ //
+ // In full-path matching mode, we put the slash at the START of the
+ // pattern, so start is:
+ // - if first pattern: same as part-matching mode
+ // - if not isStart(): nothing
+ // - if traversal possible, but not allowed: /(?!\.\.?(?:$|/))
+ // - if dots allowed or not possible: /
+ // - if dots possible and not allowed: /(?!\.)
+ // end is:
+ // - if last pattern, same as part-matching mode
+ // - else nothing
+ //
+ // Always put the (?:$|/) on negated tails, though, because that has to be
+ // there to bind the end of the negated pattern portion, and it's easier to
+ // just stick it in now rather than try to inject it later in the middle of
+ // the pattern.
+ //
+ // We can just always return the same end, and leave it up to the caller
+ // to know whether it's going to be used joined or in parts.
+ // And, if the start is adjusted slightly, can do the same there:
+ // - if not isStart: nothing
+ // - if traversal possible, but not allowed: (?:/|^)(?!\.\.?$)
+ // - if dots allowed or not possible: (?:/|^)
+ // - if dots possible and not allowed: (?:/|^)(?!\.)
+ //
+ // But it's better to have a simpler binding without a conditional, for
+ // performance, so probably better to return both start options.
+ //
+ // Then the caller just ignores the end if it's not the first pattern,
+ // and the start always gets applied.
+ //
+ // But that's always going to be $ if it's the ending pattern, or nothing,
+ // so the caller can just attach $ at the end of the pattern when building.
+ //
+ // So the todo is:
+ // - better detect what kind of start is needed
+ // - return both flavors of starting pattern
+ // - attach $ at the end of the pattern when creating the actual RegExp
+ //
+ // Ah, but wait, no, that all only applies to the root when the first pattern
+ // is not an extglob. If the first pattern IS an extglob, then we need all
+ // that dot prevention biz to live in the extglob portions, because eg
+ // +(*|.x*) can match .xy but not .yx.
+ //
+ // So, return the two flavors if it's #root and the first child is not an
+ // AST, otherwise leave it to the child AST to handle it, and there,
+ // use the (?:^|/) style of start binding.
+ //
+ // Even simplified further:
+ // - Since the start for a join is eg /(?!\.) and the start for a part
+ // is ^(?!\.), we can just prepend (?!\.) to the pattern (either root
+ // or start or whatever) and prepend ^ or / at the Regexp construction.
+ toRegExpSource(allowDot) {
+ const dot = allowDot ?? !!this.#options.dot;
+ if (this.#root === this)
+ this.#fillNegs();
+ if (!this.type) {
+ const noEmpty = this.isStart() && this.isEnd();
+ const src = this.#parts
+ .map(p => {
+ const [re, _, hasMagic, uflag] = typeof p === 'string'
+ ? AST.#parseGlob(p, this.#hasMagic, noEmpty)
+ : p.toRegExpSource(allowDot);
+ this.#hasMagic = this.#hasMagic || hasMagic;
+ this.#uflag = this.#uflag || uflag;
+ return re;
+ })
+ .join('');
+ let start = '';
+ if (this.isStart()) {
+ if (typeof this.#parts[0] === 'string') {
+ // this is the string that will match the start of the pattern,
+ // so we need to protect against dots and such.
+ // '.' and '..' cannot match unless the pattern is that exactly,
+ // even if it starts with . or dot:true is set.
+ const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);
+ if (!dotTravAllowed) {
+ const aps = addPatternStart;
+ // check if we have a possibility of matching . or ..,
+ // and prevent that.
+ const needNoTrav =
+ // dots are allowed, and the pattern starts with [ or .
+ (dot && aps.has(src.charAt(0))) ||
+ // the pattern starts with \., and then [ or .
+ (src.startsWith('\\.') && aps.has(src.charAt(2))) ||
+ // the pattern starts with \.\., and then [ or .
+ (src.startsWith('\\.\\.') && aps.has(src.charAt(4)));
+ // no need to prevent dots if it can't match a dot, or if a
+ // sub-pattern will be preventing it anyway.
+ const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));
+ start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : '';
+ }
+ }
+ }
+ // append the "end of path portion" pattern to negation tails
+ let end = '';
+ if (this.isEnd() &&
+ this.#root.#filledNegs &&
+ this.#parent?.type === '!') {
+ end = '(?:$|\\/)';
+ }
+ const final = start + src + end;
+ return [
+ final,
+ unescape(src),
+ (this.#hasMagic = !!this.#hasMagic),
+ this.#uflag,
+ ];
+ }
+ // We need to calculate the body *twice* if it's a repeat pattern
+ // at the start, once in nodot mode, then again in dot mode, so a
+ // pattern like *(?) can match 'x.y'
+ const repeated = this.type === '*' || this.type === '+';
+ // some kind of extglob
+ const start = this.type === '!' ? '(?:(?!(?:' : '(?:';
+ let body = this.#partsToRegExp(dot);
+ if (this.isStart() && this.isEnd() && !body && this.type !== '!') {
+ // invalid extglob, has to at least be *something* present, if it's
+ // the entire path portion.
+ const s = this.toString();
+ this.#parts = [s];
+ this.type = null;
+ this.#hasMagic = undefined;
+ return [s, unescape(this.toString()), false, false];
+ }
+ // XXX abstract out this map method
+ let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot
+ ? ''
+ : this.#partsToRegExp(true);
+ if (bodyDotAllowed === body) {
+ bodyDotAllowed = '';
+ }
+ if (bodyDotAllowed) {
+ body = `(?:${body})(?:${bodyDotAllowed})*?`;
+ }
+ // an empty !() is exactly equivalent to a starNoEmpty
+ let final = '';
+ if (this.type === '!' && this.#emptyExt) {
+ final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;
+ }
+ else {
+ const close = this.type === '!'
+ ? // !() must match something,but !(x) can match ''
+ '))' +
+ (this.isStart() && !dot && !allowDot ? startNoDot : '') +
+ star +
+ ')'
+ : this.type === '@'
+ ? ')'
+ : this.type === '?'
+ ? ')?'
+ : this.type === '+' && bodyDotAllowed
+ ? ')'
+ : this.type === '*' && bodyDotAllowed
+ ? `)?`
+ : `)${this.type}`;
+ final = start + body + close;
+ }
+ return [
+ final,
+ unescape(body),
+ (this.#hasMagic = !!this.#hasMagic),
+ this.#uflag,
+ ];
+ }
+ #partsToRegExp(dot) {
+ return this.#parts
+ .map(p => {
+ // extglob ASTs should only contain parent ASTs
+ /* c8 ignore start */
+ if (typeof p === 'string') {
+ throw new Error('string type in extglob ast??');
+ }
+ /* c8 ignore stop */
+ // can ignore hasMagic, because extglobs are already always magic
+ const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);
+ this.#uflag = this.#uflag || uflag;
+ return re;
+ })
+ .filter(p => !(this.isStart() && this.isEnd()) || !!p)
+ .join('|');
+ }
+ static #parseGlob(glob, hasMagic, noEmpty = false) {
+ let escaping = false;
+ let re = '';
+ let uflag = false;
+ for (let i = 0; i < glob.length; i++) {
+ const c = glob.charAt(i);
+ if (escaping) {
+ escaping = false;
+ re += (reSpecials.has(c) ? '\\' : '') + c;
+ continue;
+ }
+ if (c === '\\') {
+ if (i === glob.length - 1) {
+ re += '\\\\';
+ }
+ else {
+ escaping = true;
+ }
+ continue;
+ }
+ if (c === '[') {
+ const [src, needUflag, consumed, magic] = parseClass(glob, i);
+ if (consumed) {
+ re += src;
+ uflag = uflag || needUflag;
+ i += consumed - 1;
+ hasMagic = hasMagic || magic;
+ continue;
+ }
+ }
+ if (c === '*') {
+ if (noEmpty && glob === '*')
+ re += starNoEmpty;
+ else
+ re += star;
+ hasMagic = true;
+ continue;
+ }
+ if (c === '?') {
+ re += qmark;
+ hasMagic = true;
+ continue;
+ }
+ re += regExpEscape(c);
+ }
+ return [re, unescape(glob), !!hasMagic, uflag];
+ }
+}
+//# sourceMappingURL=ast.js.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/ast.js.map b/node_modules/minimatch/dist/mjs/ast.js.map
new file mode 100644
index 0000000..5ddff36
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/ast.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/ast.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAwCxC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAC7D,MAAM,aAAa,GAAG,CAAC,CAAS,EAAoB,EAAE,CACpD,KAAK,CAAC,GAAG,CAAC,CAAgB,CAAC,CAAA;AAE7B,iEAAiE;AACjE,gEAAgE;AAChE,0CAA0C;AAC1C,uEAAuE;AACvE,MAAM,gBAAgB,GAAG,2BAA2B,CAAA;AACpD,MAAM,UAAU,GAAG,SAAS,CAAA;AAE5B,uEAAuE;AACvE,qEAAqE;AACrE,qEAAqE;AACrE,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;AAC3C,0DAA0D;AAC1D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;AACrC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAA;AAC7C,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CACjC,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;AAE/C,gCAAgC;AAChC,MAAM,KAAK,GAAG,MAAM,CAAA;AAEpB,gCAAgC;AAChC,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAA;AACzB,0EAA0E;AAC1E,sCAAsC;AACtC,MAAM,WAAW,GAAG,KAAK,GAAG,IAAI,CAAA;AAEhC,yEAAyE;AACzE,2DAA2D;AAE3D,MAAM,OAAO,GAAG;IACd,IAAI,CAAoB;IACf,KAAK,CAAK;IAEnB,SAAS,CAAU;IACnB,MAAM,GAAY,KAAK,CAAA;IACvB,MAAM,GAAqB,EAAE,CAAA;IACpB,OAAO,CAAM;IACb,YAAY,CAAQ;IAC7B,KAAK,CAAO;IACZ,WAAW,GAAY,KAAK,CAAA;IAC5B,QAAQ,CAAkB;IAC1B,SAAS,CAAS;IAClB,kDAAkD;IAClD,uCAAuC;IACvC,SAAS,GAAY,KAAK,CAAA;IAE1B,YACE,IAAwB,EACxB,MAAY,EACZ,UAA4B,EAAE;QAE9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,kCAAkC;QAClC,IAAI,IAAI;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QAC/B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;QACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAA;QACnE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;QACxD,IAAI,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAClE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACnE,CAAC;IAED,IAAI,QAAQ;QACV,qBAAqB;QACrB,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAA;QACvD,oBAAoB;QACpB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;YAC3B,IAAI,OAAO,CAAC,KAAK,QAAQ;gBAAE,SAAQ;YACnC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ;gBAAE,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;SACzD;QACD,wEAAwE;QACxE,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED,2BAA2B;IAC3B,QAAQ;QACN,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS,CAAA;QACvD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;SACnE;aAAM;YACL,OAAO,CAAC,IAAI,CAAC,SAAS;gBACpB,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA;SACrE;IACH,CAAC;IAED,SAAS;QACP,qBAAqB;QACrB,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;QACpE,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAA;QACjC,oBAAoB;QAEpB,wCAAwC;QACxC,IAAI,CAAC,QAAQ,EAAE,CAAA;QACf,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;QACvB,IAAI,CAAkB,CAAA;QACtB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE;YAC7B,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG;gBAAE,SAAQ;YAC5B,qEAAqE;YACrE,IAAI,CAAC,GAAoB,CAAC,CAAA;YAC1B,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAA;YAClB,OAAO,EAAE,EAAE;gBACT,KACE,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,CAAC,EAC1B,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,EAChC,CAAC,EAAE,EACH;oBACA,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,MAAM,EAAE;wBAC3B,qBAAqB;wBACrB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;4BAC5B,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;yBAChD;wBACD,oBAAoB;wBACpB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;qBAC1B;iBACF;gBACD,CAAC,GAAG,EAAE,CAAA;gBACN,EAAE,GAAG,CAAC,CAAC,OAAO,CAAA;aACf;SACF;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,GAAG,KAAuB;QAC7B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;YACrB,IAAI,CAAC,KAAK,EAAE;gBAAE,SAAQ;YACtB,qBAAqB;YACrB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE;gBACtE,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAA;aACtC;YACD,oBAAoB;YACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;SACpB;IACH,CAAC;IAED,MAAM;QACJ,MAAM,GAAG,GACP,IAAI,CAAC,IAAI,KAAK,IAAI;YAChB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QAC/D,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACjD,IACE,IAAI,CAAC,KAAK,EAAE;YACZ,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK;gBAClB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,EACzD;YACA,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;SACb;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QACpC,kDAAkD;QAClD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE;YAAE,OAAO,KAAK,CAAA;QAC1C,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC;YAAE,OAAO,IAAI,CAAA;QACxC,yEAAyE;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAA;QACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,EAAE,EAAE;YAC1C,MAAM,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACtB,IAAI,CAAC,CAAC,EAAE,YAAY,GAAG,IAAI,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;gBAC3C,OAAO,KAAK,CAAA;aACb;SACF;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QACpC,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,GAAG;YAAE,OAAO,IAAI,CAAA;QAC3C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;YAAE,OAAO,KAAK,CAAA;QACxC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;QAC5C,0CAA0C;QAC1C,qBAAqB;QACrB,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QACxD,oBAAoB;QACpB,OAAO,IAAI,CAAC,YAAY,KAAK,EAAE,GAAG,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,CAAC,IAAkB;QACvB,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;;YACxC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;IAClC,CAAC;IAED,KAAK,CAAC,MAAW;QACf,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACpC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;YAC3B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;SACZ;QACD,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,CAAC,SAAS,CACd,GAAW,EACX,GAAQ,EACR,GAAW,EACX,GAAqB;QAErB,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,IAAI,UAAU,GAAG,CAAC,CAAC,CAAA;QACnB,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE;YACrB,qDAAqD;YACrD,IAAI,CAAC,GAAG,GAAG,CAAA;YACX,IAAI,GAAG,GAAG,EAAE,CAAA;YACZ,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE;gBACrB,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAA;gBACzB,2DAA2D;gBAC3D,0BAA0B;gBAC1B,IAAI,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;oBAC1B,QAAQ,GAAG,CAAC,QAAQ,CAAA;oBACpB,GAAG,IAAI,CAAC,CAAA;oBACR,SAAQ;iBACT;gBAED,IAAI,OAAO,EAAE;oBACX,IAAI,CAAC,KAAK,UAAU,GAAG,CAAC,EAAE;wBACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE;4BAC1B,QAAQ,GAAG,IAAI,CAAA;yBAChB;qBACF;yBAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,GAAG,CAAC,IAAI,QAAQ,CAAC,EAAE;wBAC3D,OAAO,GAAG,KAAK,CAAA;qBAChB;oBACD,GAAG,IAAI,CAAC,CAAA;oBACR,SAAQ;iBACT;qBAAM,IAAI,CAAC,KAAK,GAAG,EAAE;oBACpB,OAAO,GAAG,IAAI,CAAA;oBACd,UAAU,GAAG,CAAC,CAAA;oBACd,QAAQ,GAAG,KAAK,CAAA;oBAChB,GAAG,IAAI,CAAC,CAAA;oBACR,SAAQ;iBACT;gBAED,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;oBAC3D,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBACb,GAAG,GAAG,EAAE,CAAA;oBACR,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;oBAC3B,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;oBACnC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;oBACb,SAAQ;iBACT;gBACD,GAAG,IAAI,CAAC,CAAA;aACT;YACD,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACb,OAAO,CAAC,CAAA;SACT;QAED,wCAAwC;QACxC,uBAAuB;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;QACf,IAAI,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC7B,MAAM,KAAK,GAAU,EAAE,CAAA;QACvB,IAAI,GAAG,GAAG,EAAE,CAAA;QACZ,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE;YACrB,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAA;YACzB,2DAA2D;YAC3D,0BAA0B;YAC1B,IAAI,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE;gBAC1B,QAAQ,GAAG,CAAC,QAAQ,CAAA;gBACpB,GAAG,IAAI,CAAC,CAAA;gBACR,SAAQ;aACT;YAED,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,KAAK,UAAU,GAAG,CAAC,EAAE;oBACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE;wBAC1B,QAAQ,GAAG,IAAI,CAAA;qBAChB;iBACF;qBAAM,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,GAAG,CAAC,IAAI,QAAQ,CAAC,EAAE;oBAC3D,OAAO,GAAG,KAAK,CAAA;iBAChB;gBACD,GAAG,IAAI,CAAC,CAAA;gBACR,SAAQ;aACT;iBAAM,IAAI,CAAC,KAAK,GAAG,EAAE;gBACpB,OAAO,GAAG,IAAI,CAAA;gBACd,UAAU,GAAG,CAAC,CAAA;gBACd,QAAQ,GAAG,KAAK,CAAA;gBAChB,GAAG,IAAI,CAAC,CAAA;gBACR,SAAQ;aACT;YAED,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,GAAG,GAAG,EAAE,CAAA;gBACR,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;gBAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,CAAC,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;gBACnC,SAAQ;aACT;YACD,IAAI,CAAC,KAAK,GAAG,EAAE;gBACb,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,GAAG,GAAG,EAAE,CAAA;gBACR,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBAChB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;gBACzB,SAAQ;aACT;YACD,IAAI,CAAC,KAAK,GAAG,EAAE;gBACb,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;oBACzC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAA;iBACrB;gBACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBACd,GAAG,GAAG,EAAE,CAAA;gBACR,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAA;gBACxB,OAAO,CAAC,CAAA;aACT;YACD,GAAG,IAAI,CAAC,CAAA;SACT;QAED,qBAAqB;QACrB,kEAAkE;QAClE,iCAAiC;QACjC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAA;QACf,GAAG,CAAC,SAAS,GAAG,SAAS,CAAA;QACzB,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACrC,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,OAAe,EAAE,UAA4B,EAAE;QAC7D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;QAC7C,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,CAAA;QACvC,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,oEAAoE;IACpE,iBAAiB;IACjB,WAAW;QACT,gCAAgC;QAChC,qBAAqB;QACrB,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAA;QACxD,oBAAoB;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QAC5B,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QACzD,+DAA+D;QAC/D,mEAAmE;QACnE,sCAAsC;QACtC,MAAM,QAAQ,GACZ,QAAQ;YACR,IAAI,CAAC,SAAS;YACd,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM;gBACnB,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe;gBAC9B,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QAC9C,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO,IAAI,CAAA;SACZ;QAED,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACpE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE;YACjD,IAAI,EAAE,EAAE;YACR,KAAK,EAAE,IAAI;SACZ,CAAC,CAAA;IACJ,CAAC;IAED,qEAAqE;IACrE,qEAAqE;IACrE,yEAAyE;IACzE,sEAAsE;IACtE,qEAAqE;IACrE,wEAAwE;IACxE,oEAAoE;IACpE,0DAA0D;IAC1D,EAAE;IACF,uCAAuC;IACvC,4BAA4B;IAC5B,wDAAwD;IACxD,uCAAuC;IACvC,8CAA8C;IAC9C,UAAU;IACV,4BAA4B;IAC5B,YAAY;IACZ,EAAE;IACF,mEAAmE;IACnE,wBAAwB;IACxB,iDAAiD;IACjD,8BAA8B;IAC9B,8DAA8D;IAC9D,uCAAuC;IACvC,8CAA8C;IAC9C,UAAU;IACV,gDAAgD;IAChD,iBAAiB;IACjB,EAAE;IACF,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,eAAe;IACf,EAAE;IACF,wEAAwE;IACxE,4DAA4D;IAC5D,iEAAiE;IACjE,4BAA4B;IAC5B,8DAA8D;IAC9D,6CAA6C;IAC7C,oDAAoD;IACpD,EAAE;IACF,uEAAuE;IACvE,gEAAgE;IAChE,EAAE;IACF,sEAAsE;IACtE,qCAAqC;IACrC,EAAE;IACF,0EAA0E;IAC1E,2EAA2E;IAC3E,EAAE;IACF,kBAAkB;IAClB,+CAA+C;IAC/C,4CAA4C;IAC5C,uEAAuE;IACvE,EAAE;IACF,6EAA6E;IAC7E,0EAA0E;IAC1E,sEAAsE;IACtE,sCAAsC;IACtC,EAAE;IACF,yEAAyE;IACzE,oEAAoE;IACpE,0CAA0C;IAC1C,EAAE;IACF,2BAA2B;IAC3B,sEAAsE;IACtE,qEAAqE;IACrE,uEAAuE;IACvE,cAAc,CACZ,QAAkB;QAElB,MAAM,GAAG,GAAG,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAA;QAC3C,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,IAAI,CAAC,SAAS,EAAE,CAAA;QACzC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAA;YAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM;iBACpB,GAAG,CAAC,CAAC,CAAC,EAAE;gBACP,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,GAC5B,OAAO,CAAC,KAAK,QAAQ;oBACnB,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;oBAC5C,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;gBAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAA;gBAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAA;gBAClC,OAAO,EAAE,CAAA;YACX,CAAC,CAAC;iBACD,IAAI,CAAC,EAAE,CAAC,CAAA;YAEX,IAAI,KAAK,GAAG,EAAE,CAAA;YACd,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;gBAClB,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;oBACtC,+DAA+D;oBAC/D,+CAA+C;oBAE/C,gEAAgE;oBAChE,+CAA+C;oBAC/C,MAAM,cAAc,GAClB,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;oBAC1D,IAAI,CAAC,cAAc,EAAE;wBACnB,MAAM,GAAG,GAAG,eAAe,CAAA;wBAC3B,sDAAsD;wBACtD,oBAAoB;wBACpB,MAAM,UAAU;wBACd,uDAAuD;wBACvD,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC/B,8CAA8C;4BAC9C,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;4BACjD,gDAAgD;4BAChD,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;wBACtD,2DAA2D;wBAC3D,4CAA4C;wBAC5C,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;wBAE7D,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAA;qBACpE;iBACF;aACF;YAED,6DAA6D;YAC7D,IAAI,GAAG,GAAG,EAAE,CAAA;YACZ,IACE,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,KAAK,CAAC,WAAW;gBACtB,IAAI,CAAC,OAAO,EAAE,IAAI,KAAK,GAAG,EAC1B;gBACA,GAAG,GAAG,WAAW,CAAA;aAClB;YACD,MAAM,KAAK,GAAG,KAAK,GAAG,GAAG,GAAG,GAAG,CAAA;YAC/B,OAAO;gBACL,KAAK;gBACL,QAAQ,CAAC,GAAG,CAAC;gBACb,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;gBACnC,IAAI,CAAC,MAAM;aACZ,CAAA;SACF;QAED,iEAAiE;QACjE,iEAAiE;QACjE,oCAAoC;QAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAA;QACvD,uBAAuB;QACvB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAA;QACrD,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;QAEnC,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE;YAChE,mEAAmE;YACnE,2BAA2B;YAC3B,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;YACzB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;YACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;YAChB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;YAC1B,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;SACpD;QAED,mCAAmC;QACnC,IAAI,cAAc,GAChB,CAAC,QAAQ,IAAI,QAAQ,IAAI,GAAG,IAAI,CAAC,UAAU;YACzC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAI,cAAc,KAAK,IAAI,EAAE;YAC3B,cAAc,GAAG,EAAE,CAAA;SACpB;QACD,IAAI,cAAc,EAAE;YAClB,IAAI,GAAG,MAAM,IAAI,OAAO,cAAc,KAAK,CAAA;SAC5C;QAED,sDAAsD;QACtD,IAAI,KAAK,GAAG,EAAE,CAAA;QACd,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE;YACvC,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAA;SACjE;aAAM;YACL,MAAM,KAAK,GACT,IAAI,CAAC,IAAI,KAAK,GAAG;gBACf,CAAC,CAAC,iDAAiD;oBACjD,IAAI;wBACJ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;wBACvD,IAAI;wBACJ,GAAG;gBACL,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG;oBACnB,CAAC,CAAC,GAAG;oBACL,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG;wBACnB,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,cAAc;4BACrC,CAAC,CAAC,GAAG;4BACL,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,cAAc;gCACrC,CAAC,CAAC,IAAI;gCACN,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAA;YACrB,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAA;SAC7B;QACD,OAAO;YACL,KAAK;YACL,QAAQ,CAAC,IAAI,CAAC;YACd,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YACnC,IAAI,CAAC,MAAM;SACZ,CAAA;IACH,CAAC;IAED,cAAc,CAAC,GAAY;QACzB,OAAO,IAAI,CAAC,MAAM;aACf,GAAG,CAAC,CAAC,CAAC,EAAE;YACP,+CAA+C;YAC/C,qBAAqB;YACrB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;gBACzB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;aAChD;YACD,oBAAoB;YACpB,iEAAiE;YACjE,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAA;YACvD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAA;YAClC,OAAO,EAAE,CAAA;QACX,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aACrD,IAAI,CAAC,GAAG,CAAC,CAAA;IACd,CAAC;IAED,MAAM,CAAC,UAAU,CACf,IAAY,EACZ,QAA6B,EAC7B,UAAmB,KAAK;QAExB,IAAI,QAAQ,GAAG,KAAK,CAAA;QACpB,IAAI,EAAE,GAAG,EAAE,CAAA;QACX,IAAI,KAAK,GAAG,KAAK,CAAA;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACxB,IAAI,QAAQ,EAAE;gBACZ,QAAQ,GAAG,KAAK,CAAA;gBAChB,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;gBACzC,SAAQ;aACT;YACD,IAAI,CAAC,KAAK,IAAI,EAAE;gBACd,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBACzB,EAAE,IAAI,MAAM,CAAA;iBACb;qBAAM;oBACL,QAAQ,GAAG,IAAI,CAAA;iBAChB;gBACD,SAAQ;aACT;YACD,IAAI,CAAC,KAAK,GAAG,EAAE;gBACb,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;gBAC7D,IAAI,QAAQ,EAAE;oBACZ,EAAE,IAAI,GAAG,CAAA;oBACT,KAAK,GAAG,KAAK,IAAI,SAAS,CAAA;oBAC1B,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAA;oBACjB,QAAQ,GAAG,QAAQ,IAAI,KAAK,CAAA;oBAC5B,SAAQ;iBACT;aACF;YACD,IAAI,CAAC,KAAK,GAAG,EAAE;gBACb,IAAI,OAAO,IAAI,IAAI,KAAK,GAAG;oBAAE,EAAE,IAAI,WAAW,CAAA;;oBACzC,EAAE,IAAI,IAAI,CAAA;gBACf,QAAQ,GAAG,IAAI,CAAA;gBACf,SAAQ;aACT;YACD,IAAI,CAAC,KAAK,GAAG,EAAE;gBACb,EAAE,IAAI,KAAK,CAAA;gBACX,QAAQ,GAAG,IAAI,CAAA;gBACf,SAAQ;aACT;YACD,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,CAAA;SACtB;QACD,OAAO,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IAChD,CAAC;CACF","sourcesContent":["// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n// 1 2 3 4 5 6 1 2 3 46 5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n// v----- .* because there's more following,\n// v v otherwise, .+ because it must be\n// v v *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n// copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set<ExtglobType>(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string): c is ExtglobType =>\n types.has(c as ExtglobType)\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nexport class AST {\n type: ExtglobType | null\n readonly #root: AST\n\n #hasMagic?: boolean\n #uflag: boolean = false\n #parts: (string | AST)[] = []\n readonly #parent?: AST\n readonly #parentIndex: number\n #negs: AST[]\n #filledNegs: boolean = false\n #options: MinimatchOptions\n #toString?: string\n // set to true if it's an extglob with no children\n // (which really means one child of '')\n #emptyExt: boolean = false\n\n constructor(\n type: ExtglobType | null,\n parent?: AST,\n options: MinimatchOptions = {}\n ) {\n this.type = type\n // extglobs are inherently magical\n if (type) this.#hasMagic = true\n this.#parent = parent\n this.#root = this.#parent ? this.#parent.#root : this\n this.#options = this.#root === this ? options : this.#root.#options\n this.#negs = this.#root === this ? [] : this.#root.#negs\n if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n }\n\n get hasMagic(): boolean | undefined {\n /* c8 ignore start */\n if (this.#hasMagic !== undefined) return this.#hasMagic\n /* c8 ignore stop */\n for (const p of this.#parts) {\n if (typeof p === 'string') continue\n if (p.type || p.hasMagic) return (this.#hasMagic = true)\n }\n // note: will be undefined until we generate the regexp src and find out\n return this.#hasMagic\n }\n\n // reconstructs the pattern\n toString(): string {\n if (this.#toString !== undefined) return this.#toString\n if (!this.type) {\n return (this.#toString = this.#parts.map(p => String(p)).join(''))\n } else {\n return (this.#toString =\n this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')')\n }\n }\n\n #fillNegs() {\n /* c8 ignore start */\n if (this !== this.#root) throw new Error('should only call on root')\n if (this.#filledNegs) return this\n /* c8 ignore stop */\n\n // call toString() once to fill this out\n this.toString()\n this.#filledNegs = true\n let n: AST | undefined\n while ((n = this.#negs.pop())) {\n if (n.type !== '!') continue\n // walk up the tree, appending everthing that comes AFTER parentIndex\n let p: AST | undefined = n\n let pp = p.#parent\n while (pp) {\n for (\n let i = p.#parentIndex + 1;\n !pp.type && i < pp.#parts.length;\n i++\n ) {\n for (const part of n.#parts) {\n /* c8 ignore start */\n if (typeof part === 'string') {\n throw new Error('string part in extglob AST??')\n }\n /* c8 ignore stop */\n part.copyIn(pp.#parts[i])\n }\n }\n p = pp\n pp = p.#parent\n }\n }\n return this\n }\n\n push(...parts: (string | AST)[]) {\n for (const p of parts) {\n if (p === '') continue\n /* c8 ignore start */\n if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {\n throw new Error('invalid part: ' + p)\n }\n /* c8 ignore stop */\n this.#parts.push(p)\n }\n }\n\n toJSON() {\n const ret: any[] =\n this.type === null\n ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n if (this.isStart() && !this.type) ret.unshift([])\n if (\n this.isEnd() &&\n (this === this.#root ||\n (this.#root.#filledNegs && this.#parent?.type === '!'))\n ) {\n ret.push({})\n }\n return ret\n }\n\n isStart(): boolean {\n if (this.#root === this) return true\n // if (this.type) return !!this.#parent?.isStart()\n if (!this.#parent?.isStart()) return false\n if (this.#parentIndex === 0) return true\n // if everything AHEAD of this is a negation, then it's still the \"start\"\n const p = this.#parent\n for (let i = 0; i < this.#parentIndex; i++) {\n const pp = p.#parts[i]\n if (!(pp instanceof AST && pp.type === '!')) {\n return false\n }\n }\n return true\n }\n\n isEnd(): boolean {\n if (this.#root === this) return true\n if (this.#parent?.type === '!') return true\n if (!this.#parent?.isEnd()) return false\n if (!this.type) return this.#parent?.isEnd()\n // if not root, it'll always have a parent\n /* c8 ignore start */\n const pl = this.#parent ? this.#parent.#parts.length : 0\n /* c8 ignore stop */\n return this.#parentIndex === pl - 1\n }\n\n copyIn(part: AST | string) {\n if (typeof part === 'string') this.push(part)\n else this.push(part.clone(this))\n }\n\n clone(parent: AST) {\n const c = new AST(this.type, parent)\n for (const p of this.#parts) {\n c.copyIn(p)\n }\n return c\n }\n\n static #parseAST(\n str: string,\n ast: AST,\n pos: number,\n opt: MinimatchOptions\n ): number {\n let escaping = false\n let inBrace = false\n let braceStart = -1\n let braceNeg = false\n if (ast.type === null) {\n // outside of a extglob, append until we find a start\n let i = pos\n let acc = ''\n while (i < str.length) {\n const c = str.charAt(i++)\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping\n acc += c\n continue\n }\n\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true\n }\n } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false\n }\n acc += c\n continue\n } else if (c === '[') {\n inBrace = true\n braceStart = i\n braceNeg = false\n acc += c\n continue\n }\n\n if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n ast.push(acc)\n acc = ''\n const ext = new AST(c, ast)\n i = AST.#parseAST(str, ext, i, opt)\n ast.push(ext)\n continue\n }\n acc += c\n }\n ast.push(acc)\n return i\n }\n\n // some kind of extglob, pos is at the (\n // find the next | or )\n let i = pos + 1\n let part = new AST(null, ast)\n const parts: AST[] = []\n let acc = ''\n while (i < str.length) {\n const c = str.charAt(i++)\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping\n acc += c\n continue\n }\n\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true\n }\n } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false\n }\n acc += c\n continue\n } else if (c === '[') {\n inBrace = true\n braceStart = i\n braceNeg = false\n acc += c\n continue\n }\n\n if (isExtglobType(c) && str.charAt(i) === '(') {\n part.push(acc)\n acc = ''\n const ext = new AST(c, part)\n part.push(ext)\n i = AST.#parseAST(str, ext, i, opt)\n continue\n }\n if (c === '|') {\n part.push(acc)\n acc = ''\n parts.push(part)\n part = new AST(null, ast)\n continue\n }\n if (c === ')') {\n if (acc === '' && ast.#parts.length === 0) {\n ast.#emptyExt = true\n }\n part.push(acc)\n acc = ''\n ast.push(...parts, part)\n return i\n }\n acc += c\n }\n\n // unfinished extglob\n // if we got here, it was a malformed extglob! not an extglob, but\n // maybe something else in there.\n ast.type = null\n ast.#hasMagic = undefined\n ast.#parts = [str.substring(pos - 1)]\n return i\n }\n\n static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n const ast = new AST(null, undefined, options)\n AST.#parseAST(pattern, ast, 0, options)\n return ast\n }\n\n // returns the regular expression if there's magic, or the unescaped\n // string if not.\n toMMPattern(): MMRegExp | string {\n // should only be called on root\n /* c8 ignore start */\n if (this !== this.#root) return this.#root.toMMPattern()\n /* c8 ignore stop */\n const glob = this.toString()\n const [re, body, hasMagic, uflag] = this.toRegExpSource()\n // if we're in nocase mode, and not nocaseMagicOnly, then we do\n // still need a regular expression if we have to case-insensitively\n // match capital/lowercase characters.\n const anyMagic =\n hasMagic ||\n this.#hasMagic ||\n (this.#options.nocase &&\n !this.#options.nocaseMagicOnly &&\n glob.toUpperCase() !== glob.toLowerCase())\n if (!anyMagic) {\n return body\n }\n\n const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n return Object.assign(new RegExp(`^${re}$`, flags), {\n _src: re,\n _glob: glob,\n })\n }\n\n // returns the string match, the regexp source, whether there's magic\n // in the regexp (so a regular expression is required) and whether or\n // not the uflag is needed for the regular expression (for posix classes)\n // TODO: instead of injecting the start/end at this point, just return\n // the BODY of the regexp, along with the start/end portions suitable\n // for binding the start/end in either a joined full-path makeRe context\n // (where we bind to (^|/), or a standalone matchPart context (where\n // we bind to ^, and not /). Otherwise slashes get duped!\n //\n // In part-matching mode, the start is:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n // - if dots allowed or not possible: ^\n // - if dots possible and not allowed: ^(?!\\.)\n // end is:\n // - if not isEnd(): nothing\n // - else: $\n //\n // In full-path matching mode, we put the slash at the START of the\n // pattern, so start is:\n // - if first pattern: same as part-matching mode\n // - if not isStart(): nothing\n // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n // - if dots allowed or not possible: /\n // - if dots possible and not allowed: /(?!\\.)\n // end is:\n // - if last pattern, same as part-matching mode\n // - else nothing\n //\n // Always put the (?:$|/) on negated tails, though, because that has to be\n // there to bind the end of the negated pattern portion, and it's easier to\n // just stick it in now rather than try to inject it later in the middle of\n // the pattern.\n //\n // We can just always return the same end, and leave it up to the caller\n // to know whether it's going to be used joined or in parts.\n // And, if the start is adjusted slightly, can do the same there:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n // - if dots allowed or not possible: (?:/|^)\n // - if dots possible and not allowed: (?:/|^)(?!\\.)\n //\n // But it's better to have a simpler binding without a conditional, for\n // performance, so probably better to return both start options.\n //\n // Then the caller just ignores the end if it's not the first pattern,\n // and the start always gets applied.\n //\n // But that's always going to be $ if it's the ending pattern, or nothing,\n // so the caller can just attach $ at the end of the pattern when building.\n //\n // So the todo is:\n // - better detect what kind of start is needed\n // - return both flavors of starting pattern\n // - attach $ at the end of the pattern when creating the actual RegExp\n //\n // Ah, but wait, no, that all only applies to the root when the first pattern\n // is not an extglob. If the first pattern IS an extglob, then we need all\n // that dot prevention biz to live in the extglob portions, because eg\n // +(*|.x*) can match .xy but not .yx.\n //\n // So, return the two flavors if it's #root and the first child is not an\n // AST, otherwise leave it to the child AST to handle it, and there,\n // use the (?:^|/) style of start binding.\n //\n // Even simplified further:\n // - Since the start for a join is eg /(?!\\.) and the start for a part\n // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n // or start or whatever) and prepend ^ or / at the Regexp construction.\n toRegExpSource(\n allowDot?: boolean\n ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n const dot = allowDot ?? !!this.#options.dot\n if (this.#root === this) this.#fillNegs()\n if (!this.type) {\n const noEmpty = this.isStart() && this.isEnd()\n const src = this.#parts\n .map(p => {\n const [re, _, hasMagic, uflag] =\n typeof p === 'string'\n ? AST.#parseGlob(p, this.#hasMagic, noEmpty)\n : p.toRegExpSource(allowDot)\n this.#hasMagic = this.#hasMagic || hasMagic\n this.#uflag = this.#uflag || uflag\n return re\n })\n .join('')\n\n let start = ''\n if (this.isStart()) {\n if (typeof this.#parts[0] === 'string') {\n // this is the string that will match the start of the pattern,\n // so we need to protect against dots and such.\n\n // '.' and '..' cannot match unless the pattern is that exactly,\n // even if it starts with . or dot:true is set.\n const dotTravAllowed =\n this.#parts.length === 1 && justDots.has(this.#parts[0])\n if (!dotTravAllowed) {\n const aps = addPatternStart\n // check if we have a possibility of matching . or ..,\n // and prevent that.\n const needNoTrav =\n // dots are allowed, and the pattern starts with [ or .\n (dot && aps.has(src.charAt(0))) ||\n // the pattern starts with \\., and then [ or .\n (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n // the pattern starts with \\.\\., and then [ or .\n (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n // no need to prevent dots if it can't match a dot, or if a\n // sub-pattern will be preventing it anyway.\n const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : ''\n }\n }\n }\n\n // append the \"end of path portion\" pattern to negation tails\n let end = ''\n if (\n this.isEnd() &&\n this.#root.#filledNegs &&\n this.#parent?.type === '!'\n ) {\n end = '(?:$|\\\\/)'\n }\n const final = start + src + end\n return [\n final,\n unescape(src),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ]\n }\n\n // We need to calculate the body *twice* if it's a repeat pattern\n // at the start, once in nodot mode, then again in dot mode, so a\n // pattern like *(?) can match 'x.y'\n\n const repeated = this.type === '*' || this.type === '+'\n // some kind of extglob\n const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n let body = this.#partsToRegExp(dot)\n\n if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n // invalid extglob, has to at least be *something* present, if it's\n // the entire path portion.\n const s = this.toString()\n this.#parts = [s]\n this.type = null\n this.#hasMagic = undefined\n return [s, unescape(this.toString()), false, false]\n }\n\n // XXX abstract out this map method\n let bodyDotAllowed =\n !repeated || allowDot || dot || !startNoDot\n ? ''\n : this.#partsToRegExp(true)\n if (bodyDotAllowed === body) {\n bodyDotAllowed = ''\n }\n if (bodyDotAllowed) {\n body = `(?:${body})(?:${bodyDotAllowed})*?`\n }\n\n // an empty !() is exactly equivalent to a starNoEmpty\n let final = ''\n if (this.type === '!' && this.#emptyExt) {\n final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n } else {\n const close =\n this.type === '!'\n ? // !() must match something,but !(x) can match ''\n '))' +\n (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n star +\n ')'\n : this.type === '@'\n ? ')'\n : this.type === '?'\n ? ')?'\n : this.type === '+' && bodyDotAllowed\n ? ')'\n : this.type === '*' && bodyDotAllowed\n ? `)?`\n : `)${this.type}`\n final = start + body + close\n }\n return [\n final,\n unescape(body),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ]\n }\n\n #partsToRegExp(dot: boolean) {\n return this.#parts\n .map(p => {\n // extglob ASTs should only contain parent ASTs\n /* c8 ignore start */\n if (typeof p === 'string') {\n throw new Error('string type in extglob ast??')\n }\n /* c8 ignore stop */\n // can ignore hasMagic, because extglobs are already always magic\n const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n this.#uflag = this.#uflag || uflag\n return re\n })\n .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n .join('|')\n }\n\n static #parseGlob(\n glob: string,\n hasMagic: boolean | undefined,\n noEmpty: boolean = false\n ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n let escaping = false\n let re = ''\n let uflag = false\n for (let i = 0; i < glob.length; i++) {\n const c = glob.charAt(i)\n if (escaping) {\n escaping = false\n re += (reSpecials.has(c) ? '\\\\' : '') + c\n continue\n }\n if (c === '\\\\') {\n if (i === glob.length - 1) {\n re += '\\\\\\\\'\n } else {\n escaping = true\n }\n continue\n }\n if (c === '[') {\n const [src, needUflag, consumed, magic] = parseClass(glob, i)\n if (consumed) {\n re += src\n uflag = uflag || needUflag\n i += consumed - 1\n hasMagic = hasMagic || magic\n continue\n }\n }\n if (c === '*') {\n if (noEmpty && glob === '*') re += starNoEmpty\n else re += star\n hasMagic = true\n continue\n }\n if (c === '?') {\n re += qmark\n hasMagic = true\n continue\n }\n re += regExpEscape(c)\n }\n return [re, unescape(glob), !!hasMagic, uflag]\n }\n}\n"]} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/brace-expressions.d.ts b/node_modules/minimatch/dist/mjs/brace-expressions.d.ts
new file mode 100644
index 0000000..b1572de
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/brace-expressions.d.ts
@@ -0,0 +1,8 @@
+export type ParseClassResult = [
+ src: string,
+ uFlag: boolean,
+ consumed: number,
+ hasMagic: boolean
+];
+export declare const parseClass: (glob: string, position: number) => ParseClassResult;
+//# sourceMappingURL=brace-expressions.d.ts.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/brace-expressions.d.ts.map b/node_modules/minimatch/dist/mjs/brace-expressions.d.ts.map
new file mode 100644
index 0000000..d394964
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/brace-expressions.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"brace-expressions.d.ts","sourceRoot":"","sources":["../../src/brace-expressions.ts"],"names":[],"mappings":"AA+BA,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,OAAO;CAClB,CAAA;AAQD,eAAO,MAAM,UAAU,SACf,MAAM,YACF,MAAM,qBA8HjB,CAAA"} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/brace-expressions.js b/node_modules/minimatch/dist/mjs/brace-expressions.js
new file mode 100644
index 0000000..c629d6a
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/brace-expressions.js
@@ -0,0 +1,148 @@
+// translate the various posix character classes into unicode properties
+// this works across all unicode locales
+// { <posix class>: [<translation>, /u flag required, negated]
+const posixClasses = {
+ '[:alnum:]': ['\\p{L}\\p{Nl}\\p{Nd}', true],
+ '[:alpha:]': ['\\p{L}\\p{Nl}', true],
+ '[:ascii:]': ['\\x' + '00-\\x' + '7f', false],
+ '[:blank:]': ['\\p{Zs}\\t', true],
+ '[:cntrl:]': ['\\p{Cc}', true],
+ '[:digit:]': ['\\p{Nd}', true],
+ '[:graph:]': ['\\p{Z}\\p{C}', true, true],
+ '[:lower:]': ['\\p{Ll}', true],
+ '[:print:]': ['\\p{C}', true],
+ '[:punct:]': ['\\p{P}', true],
+ '[:space:]': ['\\p{Z}\\t\\r\\n\\v\\f', true],
+ '[:upper:]': ['\\p{Lu}', true],
+ '[:word:]': ['\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}', true],
+ '[:xdigit:]': ['A-Fa-f0-9', false],
+};
+// only need to escape a few things inside of brace expressions
+// escapes: [ \ ] -
+const braceEscape = (s) => s.replace(/[[\]\\-]/g, '\\$&');
+// escape all regexp magic characters
+const regexpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
+// everything has already been escaped, we just have to join
+const rangesToString = (ranges) => ranges.join('');
+// takes a glob string at a posix brace expression, and returns
+// an equivalent regular expression source, and boolean indicating
+// whether the /u flag needs to be applied, and the number of chars
+// consumed to parse the character class.
+// This also removes out of order ranges, and returns ($.) if the
+// entire class just no good.
+export const parseClass = (glob, position) => {
+ const pos = position;
+ /* c8 ignore start */
+ if (glob.charAt(pos) !== '[') {
+ throw new Error('not in a brace expression');
+ }
+ /* c8 ignore stop */
+ const ranges = [];
+ const negs = [];
+ let i = pos + 1;
+ let sawStart = false;
+ let uflag = false;
+ let escaping = false;
+ let negate = false;
+ let endPos = pos;
+ let rangeStart = '';
+ WHILE: while (i < glob.length) {
+ const c = glob.charAt(i);
+ if ((c === '!' || c === '^') && i === pos + 1) {
+ negate = true;
+ i++;
+ continue;
+ }
+ if (c === ']' && sawStart && !escaping) {
+ endPos = i + 1;
+ break;
+ }
+ sawStart = true;
+ if (c === '\\') {
+ if (!escaping) {
+ escaping = true;
+ i++;
+ continue;
+ }
+ // escaped \ char, fall through and treat like normal char
+ }
+ if (c === '[' && !escaping) {
+ // either a posix class, a collation equivalent, or just a [
+ for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {
+ if (glob.startsWith(cls, i)) {
+ // invalid, [a-[] is fine, but not [a-[:alpha]]
+ if (rangeStart) {
+ return ['$.', false, glob.length - pos, true];
+ }
+ i += cls.length;
+ if (neg)
+ negs.push(unip);
+ else
+ ranges.push(unip);
+ uflag = uflag || u;
+ continue WHILE;
+ }
+ }
+ }
+ // now it's just a normal character, effectively
+ escaping = false;
+ if (rangeStart) {
+ // throw this range away if it's not valid, but others
+ // can still match.
+ if (c > rangeStart) {
+ ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));
+ }
+ else if (c === rangeStart) {
+ ranges.push(braceEscape(c));
+ }
+ rangeStart = '';
+ i++;
+ continue;
+ }
+ // now might be the start of a range.
+ // can be either c-d or c-] or c<more...>] or c] at this point
+ if (glob.startsWith('-]', i + 1)) {
+ ranges.push(braceEscape(c + '-'));
+ i += 2;
+ continue;
+ }
+ if (glob.startsWith('-', i + 1)) {
+ rangeStart = c;
+ i += 2;
+ continue;
+ }
+ // not the start of a range, just a single character
+ ranges.push(braceEscape(c));
+ i++;
+ }
+ if (endPos < i) {
+ // didn't see the end of the class, not a valid class,
+ // but might still be valid as a literal match.
+ return ['', false, 0, false];
+ }
+ // if we got no ranges and no negates, then we have a range that
+ // cannot possibly match anything, and that poisons the whole glob
+ if (!ranges.length && !negs.length) {
+ return ['$.', false, glob.length - pos, true];
+ }
+ // if we got one positive range, and it's a single character, then that's
+ // not actually a magic pattern, it's just that one literal character.
+ // we should not treat that as "magic", we should just return the literal
+ // character. [_] is a perfectly valid way to escape glob magic chars.
+ if (negs.length === 0 &&
+ ranges.length === 1 &&
+ /^\\?.$/.test(ranges[0]) &&
+ !negate) {
+ const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];
+ return [regexpEscape(r), false, endPos - pos, false];
+ }
+ const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';
+ const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';
+ const comb = ranges.length && negs.length
+ ? '(' + sranges + '|' + snegs + ')'
+ : ranges.length
+ ? sranges
+ : snegs;
+ return [comb, uflag, endPos - pos, true];
+};
+//# sourceMappingURL=brace-expressions.js.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/brace-expressions.js.map b/node_modules/minimatch/dist/mjs/brace-expressions.js.map
new file mode 100644
index 0000000..cdba30d
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/brace-expressions.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"brace-expressions.js","sourceRoot":"","sources":["../../src/brace-expressions.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,wCAAwC;AAExC,8DAA8D;AAC9D,MAAM,YAAY,GAA0D;IAC1E,WAAW,EAAE,CAAC,sBAAsB,EAAE,IAAI,CAAC;IAC3C,WAAW,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC;IACpC,WAAW,EAAE,CAAC,KAAK,GAAG,QAAQ,GAAG,IAAI,EAAE,KAAK,CAAC;IAC7C,WAAW,EAAE,CAAC,YAAY,EAAE,IAAI,CAAC;IACjC,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IAC9B,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IAC9B,WAAW,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC;IACzC,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IAC9B,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;IAC7B,WAAW,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;IAC7B,WAAW,EAAE,CAAC,uBAAuB,EAAE,IAAI,CAAC;IAC5C,WAAW,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IAC9B,UAAU,EAAE,CAAC,6BAA6B,EAAE,IAAI,CAAC;IACjD,YAAY,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC;CACnC,CAAA;AAED,+DAA+D;AAC/D,mBAAmB;AACnB,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;AACjE,qCAAqC;AACrC,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CACjC,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;AAE/C,4DAA4D;AAC5D,MAAM,cAAc,GAAG,CAAC,MAAgB,EAAU,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AASpE,+DAA+D;AAC/D,kEAAkE;AAClE,mEAAmE;AACnE,yCAAyC;AACzC,iEAAiE;AACjE,6BAA6B;AAC7B,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,IAAY,EACZ,QAAgB,EACE,EAAE;IACpB,MAAM,GAAG,GAAG,QAAQ,CAAA;IACpB,qBAAqB;IACrB,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;KAC7C;IACD,oBAAoB;IACpB,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,MAAM,IAAI,GAAa,EAAE,CAAA;IAEzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;IACf,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,KAAK,GAAG,KAAK,CAAA;IACjB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,MAAM,GAAG,GAAG,CAAA;IAChB,IAAI,UAAU,GAAG,EAAE,CAAA;IACnB,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QACxB,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE;YAC7C,MAAM,GAAG,IAAI,CAAA;YACb,CAAC,EAAE,CAAA;YACH,SAAQ;SACT;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACtC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAA;YACd,MAAK;SACN;QAED,QAAQ,GAAG,IAAI,CAAA;QACf,IAAI,CAAC,KAAK,IAAI,EAAE;YACd,IAAI,CAAC,QAAQ,EAAE;gBACb,QAAQ,GAAG,IAAI,CAAA;gBACf,CAAC,EAAE,CAAA;gBACH,SAAQ;aACT;YACD,0DAA0D;SAC3D;QACD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE;YAC1B,4DAA4D;YAC5D,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE;gBAChE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE;oBAC3B,+CAA+C;oBAC/C,IAAI,UAAU,EAAE;wBACd,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,CAAA;qBAC9C;oBACD,CAAC,IAAI,GAAG,CAAC,MAAM,CAAA;oBACf,IAAI,GAAG;wBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;;wBACnB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACtB,KAAK,GAAG,KAAK,IAAI,CAAC,CAAA;oBAClB,SAAS,KAAK,CAAA;iBACf;aACF;SACF;QAED,gDAAgD;QAChD,QAAQ,GAAG,KAAK,CAAA;QAChB,IAAI,UAAU,EAAE;YACd,sDAAsD;YACtD,mBAAmB;YACnB,IAAI,CAAC,GAAG,UAAU,EAAE;gBAClB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;aAC5D;iBAAM,IAAI,CAAC,KAAK,UAAU,EAAE;gBAC3B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;aAC5B;YACD,UAAU,GAAG,EAAE,CAAA;YACf,CAAC,EAAE,CAAA;YACH,SAAQ;SACT;QAED,qCAAqC;QACrC,8DAA8D;QAC9D,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;YAChC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;YACjC,CAAC,IAAI,CAAC,CAAA;YACN,SAAQ;SACT;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE;YAC/B,UAAU,GAAG,CAAC,CAAA;YACd,CAAC,IAAI,CAAC,CAAA;YACN,SAAQ;SACT;QAED,oDAAoD;QACpD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3B,CAAC,EAAE,CAAA;KACJ;IAED,IAAI,MAAM,GAAG,CAAC,EAAE;QACd,sDAAsD;QACtD,+CAA+C;QAC/C,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAA;KAC7B;IAED,gEAAgE;IAChE,kEAAkE;IAClE,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QAClC,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,CAAA;KAC9C;IAED,yEAAyE;IACzE,sEAAsE;IACtE,yEAAyE;IACzE,sEAAsE;IACtE,IACE,IAAI,CAAC,MAAM,KAAK,CAAC;QACjB,MAAM,CAAC,MAAM,KAAK,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC,MAAM,EACP;QACA,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;QAClE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,CAAC,CAAA;KACrD;IAED,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,GAAG,GAAG,CAAA;IACxE,MAAM,KAAK,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA;IACpE,MAAM,IAAI,GACR,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM;QAC1B,CAAC,CAAC,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG;QACnC,CAAC,CAAC,MAAM,CAAC,MAAM;YACf,CAAC,CAAC,OAAO;YACT,CAAC,CAAC,KAAK,CAAA;IAEX,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,IAAI,CAAC,CAAA;AAC1C,CAAC,CAAA","sourcesContent":["// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n\n// { <posix class>: [<translation>, /u flag required, negated]\nconst posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } = {\n '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n '[:cntrl:]': ['\\\\p{Cc}', true],\n '[:digit:]': ['\\\\p{Nd}', true],\n '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n '[:lower:]': ['\\\\p{Ll}', true],\n '[:print:]': ['\\\\p{C}', true],\n '[:punct:]': ['\\\\p{P}', true],\n '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n '[:upper:]': ['\\\\p{Lu}', true],\n '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n '[:xdigit:]': ['A-Fa-f0-9', false],\n}\n\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s: string) => s.replace(/[[\\]\\\\-]/g, '\\\\$&')\n// escape all regexp magic characters\nconst regexpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges: string[]): string => ranges.join('')\n\nexport type ParseClassResult = [\n src: string,\n uFlag: boolean,\n consumed: number,\n hasMagic: boolean\n]\n\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (\n glob: string,\n position: number\n): ParseClassResult => {\n const pos = position\n /* c8 ignore start */\n if (glob.charAt(pos) !== '[') {\n throw new Error('not in a brace expression')\n }\n /* c8 ignore stop */\n const ranges: string[] = []\n const negs: string[] = []\n\n let i = pos + 1\n let sawStart = false\n let uflag = false\n let escaping = false\n let negate = false\n let endPos = pos\n let rangeStart = ''\n WHILE: while (i < glob.length) {\n const c = glob.charAt(i)\n if ((c === '!' || c === '^') && i === pos + 1) {\n negate = true\n i++\n continue\n }\n\n if (c === ']' && sawStart && !escaping) {\n endPos = i + 1\n break\n }\n\n sawStart = true\n if (c === '\\\\') {\n if (!escaping) {\n escaping = true\n i++\n continue\n }\n // escaped \\ char, fall through and treat like normal char\n }\n if (c === '[' && !escaping) {\n // either a posix class, a collation equivalent, or just a [\n for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n if (glob.startsWith(cls, i)) {\n // invalid, [a-[] is fine, but not [a-[:alpha]]\n if (rangeStart) {\n return ['$.', false, glob.length - pos, true]\n }\n i += cls.length\n if (neg) negs.push(unip)\n else ranges.push(unip)\n uflag = uflag || u\n continue WHILE\n }\n }\n }\n\n // now it's just a normal character, effectively\n escaping = false\n if (rangeStart) {\n // throw this range away if it's not valid, but others\n // can still match.\n if (c > rangeStart) {\n ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c))\n } else if (c === rangeStart) {\n ranges.push(braceEscape(c))\n }\n rangeStart = ''\n i++\n continue\n }\n\n // now might be the start of a range.\n // can be either c-d or c-] or c<more...>] or c] at this point\n if (glob.startsWith('-]', i + 1)) {\n ranges.push(braceEscape(c + '-'))\n i += 2\n continue\n }\n if (glob.startsWith('-', i + 1)) {\n rangeStart = c\n i += 2\n continue\n }\n\n // not the start of a range, just a single character\n ranges.push(braceEscape(c))\n i++\n }\n\n if (endPos < i) {\n // didn't see the end of the class, not a valid class,\n // but might still be valid as a literal match.\n return ['', false, 0, false]\n }\n\n // if we got no ranges and no negates, then we have a range that\n // cannot possibly match anything, and that poisons the whole glob\n if (!ranges.length && !negs.length) {\n return ['$.', false, glob.length - pos, true]\n }\n\n // if we got one positive range, and it's a single character, then that's\n // not actually a magic pattern, it's just that one literal character.\n // we should not treat that as \"magic\", we should just return the literal\n // character. [_] is a perfectly valid way to escape glob magic chars.\n if (\n negs.length === 0 &&\n ranges.length === 1 &&\n /^\\\\?.$/.test(ranges[0]) &&\n !negate\n ) {\n const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]\n return [regexpEscape(r), false, endPos - pos, false]\n }\n\n const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'\n const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'\n const comb =\n ranges.length && negs.length\n ? '(' + sranges + '|' + snegs + ')'\n : ranges.length\n ? sranges\n : snegs\n\n return [comb, uflag, endPos - pos, true]\n}\n"]} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/escape.d.ts b/node_modules/minimatch/dist/mjs/escape.d.ts
new file mode 100644
index 0000000..dc3e316
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/escape.d.ts
@@ -0,0 +1,12 @@
+import { MinimatchOptions } from './index.js';
+/**
+ * Escape all magic characters in a glob pattern.
+ *
+ * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}
+ * option is used, then characters are escaped by wrapping in `[]`, because
+ * a magic character wrapped in a character class can only be satisfied by
+ * that exact character. In this mode, `\` is _not_ escaped, because it is
+ * not interpreted as a magic character, but instead as a path separator.
+ */
+export declare const escape: (s: string, { windowsPathsNoEscape, }?: Pick<MinimatchOptions, 'windowsPathsNoEscape'>) => string;
+//# sourceMappingURL=escape.d.ts.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/escape.d.ts.map b/node_modules/minimatch/dist/mjs/escape.d.ts.map
new file mode 100644
index 0000000..0779dae
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/escape.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"escape.d.ts","sourceRoot":"","sources":["../../src/escape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C;;;;;;;;GAQG;AACH,eAAO,MAAM,MAAM,MACd,MAAM,8BAGN,KAAK,gBAAgB,EAAE,sBAAsB,CAAC,WAQlD,CAAA"} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/escape.js b/node_modules/minimatch/dist/mjs/escape.js
new file mode 100644
index 0000000..16f7c8c
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/escape.js
@@ -0,0 +1,18 @@
+/**
+ * Escape all magic characters in a glob pattern.
+ *
+ * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}
+ * option is used, then characters are escaped by wrapping in `[]`, because
+ * a magic character wrapped in a character class can only be satisfied by
+ * that exact character. In this mode, `\` is _not_ escaped, because it is
+ * not interpreted as a magic character, but instead as a path separator.
+ */
+export const escape = (s, { windowsPathsNoEscape = false, } = {}) => {
+ // don't need to escape +@! because we escape the parens
+ // that make those magic, and escaping ! as [!] isn't valid,
+ // because [!]] is a valid glob class meaning not ']'.
+ return windowsPathsNoEscape
+ ? s.replace(/[?*()[\]]/g, '[$&]')
+ : s.replace(/[?*()[\]\\]/g, '\\$&');
+};
+//# sourceMappingURL=escape.js.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/escape.js.map b/node_modules/minimatch/dist/mjs/escape.js.map
new file mode 100644
index 0000000..170fd1a
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/escape.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"escape.js","sourceRoot":"","sources":["../../src/escape.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CACpB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,MACsB,EAAE,EACtD,EAAE;IACF,wDAAwD;IACxD,4DAA4D;IAC5D,sDAAsD;IACtD,OAAO,oBAAoB;QACzB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;QACjC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAA;AACvC,CAAC,CAAA","sourcesContent":["import { MinimatchOptions } from './index.js'\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character. In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (\n s: string,\n {\n windowsPathsNoEscape = false,\n }: Pick<MinimatchOptions, 'windowsPathsNoEscape'> = {}\n) => {\n // don't need to escape +@! because we escape the parens\n // that make those magic, and escaping ! as [!] isn't valid,\n // because [!]] is a valid glob class meaning not ']'.\n return windowsPathsNoEscape\n ? s.replace(/[?*()[\\]]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n"]} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/index.d.ts b/node_modules/minimatch/dist/mjs/index.d.ts
new file mode 100644
index 0000000..41d16a9
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/index.d.ts
@@ -0,0 +1,94 @@
+import { AST } from './ast.js';
+type Platform = 'aix' | 'android' | 'darwin' | 'freebsd' | 'haiku' | 'linux' | 'openbsd' | 'sunos' | 'win32' | 'cygwin' | 'netbsd';
+export interface MinimatchOptions {
+ nobrace?: boolean;
+ nocomment?: boolean;
+ nonegate?: boolean;
+ debug?: boolean;
+ noglobstar?: boolean;
+ noext?: boolean;
+ nonull?: boolean;
+ windowsPathsNoEscape?: boolean;
+ allowWindowsEscape?: boolean;
+ partial?: boolean;
+ dot?: boolean;
+ nocase?: boolean;
+ nocaseMagicOnly?: boolean;
+ magicalBraces?: boolean;
+ matchBase?: boolean;
+ flipNegate?: boolean;
+ preserveMultipleSlashes?: boolean;
+ optimizationLevel?: number;
+ platform?: Platform;
+ windowsNoMagicRoot?: boolean;
+}
+export declare const minimatch: {
+ (p: string, pattern: string, options?: MinimatchOptions): boolean;
+ sep: Sep;
+ GLOBSTAR: typeof GLOBSTAR;
+ filter: (pattern: string, options?: MinimatchOptions) => (p: string) => boolean;
+ defaults: (def: MinimatchOptions) => typeof minimatch;
+ braceExpand: (pattern: string, options?: MinimatchOptions) => string[];
+ makeRe: (pattern: string, options?: MinimatchOptions) => false | MMRegExp;
+ match: (list: string[], pattern: string, options?: MinimatchOptions) => string[];
+ AST: typeof AST;
+ Minimatch: typeof Minimatch;
+ escape: (s: string, { windowsPathsNoEscape, }?: Pick<MinimatchOptions, "windowsPathsNoEscape">) => string;
+ unescape: (s: string, { windowsPathsNoEscape, }?: Pick<MinimatchOptions, "windowsPathsNoEscape">) => string;
+};
+type Sep = '\\' | '/';
+export declare const sep: Sep;
+export declare const GLOBSTAR: unique symbol;
+export declare const filter: (pattern: string, options?: MinimatchOptions) => (p: string) => boolean;
+export declare const defaults: (def: MinimatchOptions) => typeof minimatch;
+export declare const braceExpand: (pattern: string, options?: MinimatchOptions) => string[];
+export declare const makeRe: (pattern: string, options?: MinimatchOptions) => false | MMRegExp;
+export declare const match: (list: string[], pattern: string, options?: MinimatchOptions) => string[];
+export type MMRegExp = RegExp & {
+ _src?: string;
+ _glob?: string;
+};
+export type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR;
+export type ParseReturn = ParseReturnFiltered | false;
+export declare class Minimatch {
+ options: MinimatchOptions;
+ set: ParseReturnFiltered[][];
+ pattern: string;
+ windowsPathsNoEscape: boolean;
+ nonegate: boolean;
+ negate: boolean;
+ comment: boolean;
+ empty: boolean;
+ preserveMultipleSlashes: boolean;
+ partial: boolean;
+ globSet: string[];
+ globParts: string[][];
+ nocase: boolean;
+ isWindows: boolean;
+ platform: Platform;
+ windowsNoMagicRoot: boolean;
+ regexp: false | null | MMRegExp;
+ constructor(pattern: string, options?: MinimatchOptions);
+ hasMagic(): boolean;
+ debug(..._: any[]): void;
+ make(): void;
+ preprocess(globParts: string[][]): string[][];
+ adjascentGlobstarOptimize(globParts: string[][]): string[][];
+ levelOneOptimize(globParts: string[][]): string[][];
+ levelTwoFileOptimize(parts: string | string[]): string[];
+ firstPhasePreProcess(globParts: string[][]): string[][];
+ secondPhasePreProcess(globParts: string[][]): string[][];
+ partsMatch(a: string[], b: string[], emptyGSMatch?: boolean): false | string[];
+ parseNegate(): void;
+ matchOne(file: string[], pattern: ParseReturn[], partial?: boolean): boolean;
+ braceExpand(): string[];
+ parse(pattern: string): ParseReturn;
+ makeRe(): false | MMRegExp;
+ slashSplit(p: string): string[];
+ match(f: string, partial?: boolean): boolean;
+ static defaults(def: MinimatchOptions): typeof Minimatch;
+}
+export { AST } from './ast.js';
+export { escape } from './escape.js';
+export { unescape } from './unescape.js';
+//# sourceMappingURL=index.d.ts.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/index.d.ts.map b/node_modules/minimatch/dist/mjs/index.d.ts.map
new file mode 100644
index 0000000..7a14a44
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/index.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAe,MAAM,UAAU,CAAA;AAI3C,KAAK,QAAQ,GACT,KAAK,GACL,SAAS,GACT,QAAQ,GACR,SAAS,GACT,OAAO,GACP,OAAO,GACP,SAAS,GACT,OAAO,GACP,OAAO,GACP,QAAQ,GACR,QAAQ,CAAA;AAEZ,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAED,eAAO,MAAM,SAAS;QACjB,MAAM,WACA,MAAM,YACN,gBAAgB;;;sBAuGf,MAAM,YAAW,gBAAgB,SACvC,MAAM;oBAOkB,gBAAgB,KAAG,gBAAgB;2BA6EtD,MAAM,YACN,gBAAgB;sBA2BK,MAAM,YAAW,gBAAgB;kBAKzD,MAAM,EAAE,WACL,MAAM,YACN,gBAAgB;;;;;CArN1B,CAAA;AA+DD,KAAK,GAAG,GAAG,IAAI,GAAG,GAAG,CAAA;AAOrB,eAAO,MAAM,GAAG,KAAgE,CAAA;AAGhF,eAAO,MAAM,QAAQ,eAAwB,CAAA;AAmB7C,eAAO,MAAM,MAAM,YACP,MAAM,YAAW,gBAAgB,SACvC,MAAM,YACsB,CAAA;AAMlC,eAAO,MAAM,QAAQ,QAAS,gBAAgB,KAAG,gBA+DhD,CAAA;AAaD,eAAO,MAAM,WAAW,YACb,MAAM,YACN,gBAAgB,aAY1B,CAAA;AAeD,eAAO,MAAM,MAAM,YAAa,MAAM,YAAW,gBAAgB,qBACvB,CAAA;AAG1C,eAAO,MAAM,KAAK,SACV,MAAM,EAAE,WACL,MAAM,YACN,gBAAgB,aAQ1B,CAAA;AAQD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,QAAQ,CAAA;AACrE,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,KAAK,CAAA;AAErD,qBAAa,SAAS;IACpB,OAAO,EAAE,gBAAgB,CAAA;IACzB,GAAG,EAAE,mBAAmB,EAAE,EAAE,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IAEf,oBAAoB,EAAE,OAAO,CAAA;IAC7B,QAAQ,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,OAAO,CAAA;IACd,uBAAuB,EAAE,OAAO,CAAA;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,SAAS,EAAE,MAAM,EAAE,EAAE,CAAA;IACrB,MAAM,EAAE,OAAO,CAAA;IAEf,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAA;IAClB,kBAAkB,EAAE,OAAO,CAAA;IAE3B,MAAM,EAAE,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAA;gBACnB,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB;IAkC3D,QAAQ,IAAI,OAAO;IAYnB,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE;IAEjB,IAAI;IA0FJ,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;IA6BhC,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;IAiB/C,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;IAoBtC,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IA6D7C,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;IA0F1C,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE;IAgBxD,UAAU,CACR,CAAC,EAAE,MAAM,EAAE,EACX,CAAC,EAAE,MAAM,EAAE,EACX,YAAY,GAAE,OAAe,GAC5B,KAAK,GAAG,MAAM,EAAE;IA+CnB,WAAW;IAqBX,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,GAAE,OAAe;IAiNzE,WAAW;IAIX,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW;IA6CnC,MAAM;IAsFN,UAAU,CAAC,CAAC,EAAE,MAAM;IAepB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,UAAe;IAiEvC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,gBAAgB;CAGtC;AAED,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA"} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/index.js b/node_modules/minimatch/dist/mjs/index.js
new file mode 100644
index 0000000..831b6a6
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/index.js
@@ -0,0 +1,995 @@
+import expand from 'brace-expansion';
+import { assertValidPattern } from './assert-valid-pattern.js';
+import { AST } from './ast.js';
+import { escape } from './escape.js';
+import { unescape } from './unescape.js';
+export const minimatch = (p, pattern, options = {}) => {
+ assertValidPattern(pattern);
+ // shortcut: comments match nothing.
+ if (!options.nocomment && pattern.charAt(0) === '#') {
+ return false;
+ }
+ return new Minimatch(pattern, options).match(p);
+};
+// Optimized checking for the most common glob patterns.
+const starDotExtRE = /^\*+([^+@!?\*\[\(]*)$/;
+const starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);
+const starDotExtTestDot = (ext) => (f) => f.endsWith(ext);
+const starDotExtTestNocase = (ext) => {
+ ext = ext.toLowerCase();
+ return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);
+};
+const starDotExtTestNocaseDot = (ext) => {
+ ext = ext.toLowerCase();
+ return (f) => f.toLowerCase().endsWith(ext);
+};
+const starDotStarRE = /^\*+\.\*+$/;
+const starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');
+const starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');
+const dotStarRE = /^\.\*+$/;
+const dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');
+const starRE = /^\*+$/;
+const starTest = (f) => f.length !== 0 && !f.startsWith('.');
+const starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';
+const qmarksRE = /^\?+([^+@!?\*\[\(]*)?$/;
+const qmarksTestNocase = ([$0, ext = '']) => {
+ const noext = qmarksTestNoExt([$0]);
+ if (!ext)
+ return noext;
+ ext = ext.toLowerCase();
+ return (f) => noext(f) && f.toLowerCase().endsWith(ext);
+};
+const qmarksTestNocaseDot = ([$0, ext = '']) => {
+ const noext = qmarksTestNoExtDot([$0]);
+ if (!ext)
+ return noext;
+ ext = ext.toLowerCase();
+ return (f) => noext(f) && f.toLowerCase().endsWith(ext);
+};
+const qmarksTestDot = ([$0, ext = '']) => {
+ const noext = qmarksTestNoExtDot([$0]);
+ return !ext ? noext : (f) => noext(f) && f.endsWith(ext);
+};
+const qmarksTest = ([$0, ext = '']) => {
+ const noext = qmarksTestNoExt([$0]);
+ return !ext ? noext : (f) => noext(f) && f.endsWith(ext);
+};
+const qmarksTestNoExt = ([$0]) => {
+ const len = $0.length;
+ return (f) => f.length === len && !f.startsWith('.');
+};
+const qmarksTestNoExtDot = ([$0]) => {
+ const len = $0.length;
+ return (f) => f.length === len && f !== '.' && f !== '..';
+};
+/* c8 ignore start */
+const defaultPlatform = (typeof process === 'object' && process
+ ? (typeof process.env === 'object' &&
+ process.env &&
+ process.env.__MINIMATCH_TESTING_PLATFORM__) ||
+ process.platform
+ : 'posix');
+const path = {
+ win32: { sep: '\\' },
+ posix: { sep: '/' },
+};
+/* c8 ignore stop */
+export const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;
+minimatch.sep = sep;
+export const GLOBSTAR = Symbol('globstar **');
+minimatch.GLOBSTAR = GLOBSTAR;
+// any single thing other than /
+// don't need to escape / when using new RegExp()
+const qmark = '[^/]';
+// * => any number of characters
+const star = qmark + '*?';
+// ** when dots are allowed. Anything goes, except .. and .
+// not (^ or / followed by one or two dots followed by $ or /),
+// followed by anything, any number of times.
+const twoStarDot = '(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?';
+// not a ^ or / followed by a dot,
+// followed by anything, any number of times.
+const twoStarNoDot = '(?:(?!(?:\\/|^)\\.).)*?';
+export const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);
+minimatch.filter = filter;
+const ext = (a, b = {}) => Object.assign({}, a, b);
+export const defaults = (def) => {
+ if (!def || typeof def !== 'object' || !Object.keys(def).length) {
+ return minimatch;
+ }
+ const orig = minimatch;
+ const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));
+ return Object.assign(m, {
+ Minimatch: class Minimatch extends orig.Minimatch {
+ constructor(pattern, options = {}) {
+ super(pattern, ext(def, options));
+ }
+ static defaults(options) {
+ return orig.defaults(ext(def, options)).Minimatch;
+ }
+ },
+ AST: class AST extends orig.AST {
+ /* c8 ignore start */
+ constructor(type, parent, options = {}) {
+ super(type, parent, ext(def, options));
+ }
+ /* c8 ignore stop */
+ static fromGlob(pattern, options = {}) {
+ return orig.AST.fromGlob(pattern, ext(def, options));
+ }
+ },
+ unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),
+ escape: (s, options = {}) => orig.escape(s, ext(def, options)),
+ filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),
+ defaults: (options) => orig.defaults(ext(def, options)),
+ makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),
+ braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),
+ match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),
+ sep: orig.sep,
+ GLOBSTAR: GLOBSTAR,
+ });
+};
+minimatch.defaults = defaults;
+// Brace expansion:
+// a{b,c}d -> abd acd
+// a{b,}c -> abc ac
+// a{0..3}d -> a0d a1d a2d a3d
+// a{b,c{d,e}f}g -> abg acdfg acefg
+// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
+//
+// Invalid sets are not expanded.
+// a{2..}b -> a{2..}b
+// a{b}c -> a{b}c
+export const braceExpand = (pattern, options = {}) => {
+ assertValidPattern(pattern);
+ // Thanks to Yeting Li <https://github.com/yetingli> for
+ // improving this regexp to avoid a ReDOS vulnerability.
+ if (options.nobrace || !/\{(?:(?!\{).)*\}/.test(pattern)) {
+ // shortcut. no need to expand.
+ return [pattern];
+ }
+ return expand(pattern);
+};
+minimatch.braceExpand = braceExpand;
+// parse a component of the expanded set.
+// At this point, no pattern may contain "/" in it
+// so we're going to return a 2d array, where each entry is the full
+// pattern, split on '/', and then turned into a regular expression.
+// A regexp is made at the end which joins each array with an
+// escaped /, and another full one which joins each regexp with |.
+//
+// Following the lead of Bash 4.1, note that "**" only has special meaning
+// when it is the *only* thing in a path portion. Otherwise, any series
+// of * is equivalent to a single *. Globstar behavior is enabled by
+// default, and can be disabled by setting options.noglobstar.
+export const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();
+minimatch.makeRe = makeRe;
+export const match = (list, pattern, options = {}) => {
+ const mm = new Minimatch(pattern, options);
+ list = list.filter(f => mm.match(f));
+ if (mm.options.nonull && !list.length) {
+ list.push(pattern);
+ }
+ return list;
+};
+minimatch.match = match;
+// replace stuff like \* with *
+const globMagic = /[?*]|[+@!]\(.*?\)|\[|\]/;
+const regExpEscape = (s) => s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
+export class Minimatch {
+ options;
+ set;
+ pattern;
+ windowsPathsNoEscape;
+ nonegate;
+ negate;
+ comment;
+ empty;
+ preserveMultipleSlashes;
+ partial;
+ globSet;
+ globParts;
+ nocase;
+ isWindows;
+ platform;
+ windowsNoMagicRoot;
+ regexp;
+ constructor(pattern, options = {}) {
+ assertValidPattern(pattern);
+ options = options || {};
+ this.options = options;
+ this.pattern = pattern;
+ this.platform = options.platform || defaultPlatform;
+ this.isWindows = this.platform === 'win32';
+ this.windowsPathsNoEscape =
+ !!options.windowsPathsNoEscape || options.allowWindowsEscape === false;
+ if (this.windowsPathsNoEscape) {
+ this.pattern = this.pattern.replace(/\\/g, '/');
+ }
+ this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;
+ this.regexp = null;
+ this.negate = false;
+ this.nonegate = !!options.nonegate;
+ this.comment = false;
+ this.empty = false;
+ this.partial = !!options.partial;
+ this.nocase = !!this.options.nocase;
+ this.windowsNoMagicRoot =
+ options.windowsNoMagicRoot !== undefined
+ ? options.windowsNoMagicRoot
+ : !!(this.isWindows && this.nocase);
+ this.globSet = [];
+ this.globParts = [];
+ this.set = [];
+ // make the set of regexps etc.
+ this.make();
+ }
+ hasMagic() {
+ if (this.options.magicalBraces && this.set.length > 1) {
+ return true;
+ }
+ for (const pattern of this.set) {
+ for (const part of pattern) {
+ if (typeof part !== 'string')
+ return true;
+ }
+ }
+ return false;
+ }
+ debug(..._) { }
+ make() {
+ const pattern = this.pattern;
+ const options = this.options;
+ // empty patterns and comments match nothing.
+ if (!options.nocomment && pattern.charAt(0) === '#') {
+ this.comment = true;
+ return;
+ }
+ if (!pattern) {
+ this.empty = true;
+ return;
+ }
+ // step 1: figure out negation, etc.
+ this.parseNegate();
+ // step 2: expand braces
+ this.globSet = [...new Set(this.braceExpand())];
+ if (options.debug) {
+ this.debug = (...args) => console.error(...args);
+ }
+ this.debug(this.pattern, this.globSet);
+ // step 3: now we have a set, so turn each one into a series of
+ // path-portion matching patterns.
+ // These will be regexps, except in the case of "**", which is
+ // set to the GLOBSTAR object for globstar behavior,
+ // and will not contain any / characters
+ //
+ // First, we preprocess to make the glob pattern sets a bit simpler
+ // and deduped. There are some perf-killing patterns that can cause
+ // problems with a glob walk, but we can simplify them down a bit.
+ const rawGlobParts = this.globSet.map(s => this.slashSplit(s));
+ this.globParts = this.preprocess(rawGlobParts);
+ this.debug(this.pattern, this.globParts);
+ // glob --> regexps
+ let set = this.globParts.map((s, _, __) => {
+ if (this.isWindows && this.windowsNoMagicRoot) {
+ // check if it's a drive or unc path.
+ const isUNC = s[0] === '' &&
+ s[1] === '' &&
+ (s[2] === '?' || !globMagic.test(s[2])) &&
+ !globMagic.test(s[3]);
+ const isDrive = /^[a-z]:/i.test(s[0]);
+ if (isUNC) {
+ return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))];
+ }
+ else if (isDrive) {
+ return [s[0], ...s.slice(1).map(ss => this.parse(ss))];
+ }
+ }
+ return s.map(ss => this.parse(ss));
+ });
+ this.debug(this.pattern, set);
+ // filter out everything that didn't compile properly.
+ this.set = set.filter(s => s.indexOf(false) === -1);
+ // do not treat the ? in UNC paths as magic
+ if (this.isWindows) {
+ for (let i = 0; i < this.set.length; i++) {
+ const p = this.set[i];
+ if (p[0] === '' &&
+ p[1] === '' &&
+ this.globParts[i][2] === '?' &&
+ typeof p[3] === 'string' &&
+ /^[a-z]:$/i.test(p[3])) {
+ p[2] = '?';
+ }
+ }
+ }
+ this.debug(this.pattern, this.set);
+ }
+ // various transforms to equivalent pattern sets that are
+ // faster to process in a filesystem walk. The goal is to
+ // eliminate what we can, and push all ** patterns as far
+ // to the right as possible, even if it increases the number
+ // of patterns that we have to process.
+ preprocess(globParts) {
+ // if we're not in globstar mode, then turn all ** into *
+ if (this.options.noglobstar) {
+ for (let i = 0; i < globParts.length; i++) {
+ for (let j = 0; j < globParts[i].length; j++) {
+ if (globParts[i][j] === '**') {
+ globParts[i][j] = '*';
+ }
+ }
+ }
+ }
+ const { optimizationLevel = 1 } = this.options;
+ if (optimizationLevel >= 2) {
+ // aggressive optimization for the purpose of fs walking
+ globParts = this.firstPhasePreProcess(globParts);
+ globParts = this.secondPhasePreProcess(globParts);
+ }
+ else if (optimizationLevel >= 1) {
+ // just basic optimizations to remove some .. parts
+ globParts = this.levelOneOptimize(globParts);
+ }
+ else {
+ globParts = this.adjascentGlobstarOptimize(globParts);
+ }
+ return globParts;
+ }
+ // just get rid of adjascent ** portions
+ adjascentGlobstarOptimize(globParts) {
+ return globParts.map(parts => {
+ let gs = -1;
+ while (-1 !== (gs = parts.indexOf('**', gs + 1))) {
+ let i = gs;
+ while (parts[i + 1] === '**') {
+ i++;
+ }
+ if (i !== gs) {
+ parts.splice(gs, i - gs);
+ }
+ }
+ return parts;
+ });
+ }
+ // get rid of adjascent ** and resolve .. portions
+ levelOneOptimize(globParts) {
+ return globParts.map(parts => {
+ parts = parts.reduce((set, part) => {
+ const prev = set[set.length - 1];
+ if (part === '**' && prev === '**') {
+ return set;
+ }
+ if (part === '..') {
+ if (prev && prev !== '..' && prev !== '.' && prev !== '**') {
+ set.pop();
+ return set;
+ }
+ }
+ set.push(part);
+ return set;
+ }, []);
+ return parts.length === 0 ? [''] : parts;
+ });
+ }
+ levelTwoFileOptimize(parts) {
+ if (!Array.isArray(parts)) {
+ parts = this.slashSplit(parts);
+ }
+ let didSomething = false;
+ do {
+ didSomething = false;
+ // <pre>/<e>/<rest> -> <pre>/<rest>
+ if (!this.preserveMultipleSlashes) {
+ for (let i = 1; i < parts.length - 1; i++) {
+ const p = parts[i];
+ // don't squeeze out UNC patterns
+ if (i === 1 && p === '' && parts[0] === '')
+ continue;
+ if (p === '.' || p === '') {
+ didSomething = true;
+ parts.splice(i, 1);
+ i--;
+ }
+ }
+ if (parts[0] === '.' &&
+ parts.length === 2 &&
+ (parts[1] === '.' || parts[1] === '')) {
+ didSomething = true;
+ parts.pop();
+ }
+ }
+ // <pre>/<p>/../<rest> -> <pre>/<rest>
+ let dd = 0;
+ while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
+ const p = parts[dd - 1];
+ if (p && p !== '.' && p !== '..' && p !== '**') {
+ didSomething = true;
+ parts.splice(dd - 1, 2);
+ dd -= 2;
+ }
+ }
+ } while (didSomething);
+ return parts.length === 0 ? [''] : parts;
+ }
+ // First phase: single-pattern processing
+ // <pre> is 1 or more portions
+ // <rest> is 1 or more portions
+ // <p> is any portion other than ., .., '', or **
+ // <e> is . or ''
+ //
+ // **/.. is *brutal* for filesystem walking performance, because
+ // it effectively resets the recursive walk each time it occurs,
+ // and ** cannot be reduced out by a .. pattern part like a regexp
+ // or most strings (other than .., ., and '') can be.
+ //
+ // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}
+ // <pre>/<e>/<rest> -> <pre>/<rest>
+ // <pre>/<p>/../<rest> -> <pre>/<rest>
+ // **/**/<rest> -> **/<rest>
+ //
+ // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow
+ // this WOULD be allowed if ** did follow symlinks, or * didn't
+ firstPhasePreProcess(globParts) {
+ let didSomething = false;
+ do {
+ didSomething = false;
+ // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}
+ for (let parts of globParts) {
+ let gs = -1;
+ while (-1 !== (gs = parts.indexOf('**', gs + 1))) {
+ let gss = gs;
+ while (parts[gss + 1] === '**') {
+ // <pre>/**/**/<rest> -> <pre>/**/<rest>
+ gss++;
+ }
+ // eg, if gs is 2 and gss is 4, that means we have 3 **
+ // parts, and can remove 2 of them.
+ if (gss > gs) {
+ parts.splice(gs + 1, gss - gs);
+ }
+ let next = parts[gs + 1];
+ const p = parts[gs + 2];
+ const p2 = parts[gs + 3];
+ if (next !== '..')
+ continue;
+ if (!p ||
+ p === '.' ||
+ p === '..' ||
+ !p2 ||
+ p2 === '.' ||
+ p2 === '..') {
+ continue;
+ }
+ didSomething = true;
+ // edit parts in place, and push the new one
+ parts.splice(gs, 1);
+ const other = parts.slice(0);
+ other[gs] = '**';
+ globParts.push(other);
+ gs--;
+ }
+ // <pre>/<e>/<rest> -> <pre>/<rest>
+ if (!this.preserveMultipleSlashes) {
+ for (let i = 1; i < parts.length - 1; i++) {
+ const p = parts[i];
+ // don't squeeze out UNC patterns
+ if (i === 1 && p === '' && parts[0] === '')
+ continue;
+ if (p === '.' || p === '') {
+ didSomething = true;
+ parts.splice(i, 1);
+ i--;
+ }
+ }
+ if (parts[0] === '.' &&
+ parts.length === 2 &&
+ (parts[1] === '.' || parts[1] === '')) {
+ didSomething = true;
+ parts.pop();
+ }
+ }
+ // <pre>/<p>/../<rest> -> <pre>/<rest>
+ let dd = 0;
+ while (-1 !== (dd = parts.indexOf('..', dd + 1))) {
+ const p = parts[dd - 1];
+ if (p && p !== '.' && p !== '..' && p !== '**') {
+ didSomething = true;
+ const needDot = dd === 1 && parts[dd + 1] === '**';
+ const splin = needDot ? ['.'] : [];
+ parts.splice(dd - 1, 2, ...splin);
+ if (parts.length === 0)
+ parts.push('');
+ dd -= 2;
+ }
+ }
+ }
+ } while (didSomething);
+ return globParts;
+ }
+ // second phase: multi-pattern dedupes
+ // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest>
+ // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest>
+ // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest>
+ //
+ // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest>
+ // ^-- not valid because ** doens't follow symlinks
+ secondPhasePreProcess(globParts) {
+ for (let i = 0; i < globParts.length - 1; i++) {
+ for (let j = i + 1; j < globParts.length; j++) {
+ const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);
+ if (!matched)
+ continue;
+ globParts[i] = matched;
+ globParts[j] = [];
+ }
+ }
+ return globParts.filter(gs => gs.length);
+ }
+ partsMatch(a, b, emptyGSMatch = false) {
+ let ai = 0;
+ let bi = 0;
+ let result = [];
+ let which = '';
+ while (ai < a.length && bi < b.length) {
+ if (a[ai] === b[bi]) {
+ result.push(which === 'b' ? b[bi] : a[ai]);
+ ai++;
+ bi++;
+ }
+ else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {
+ result.push(a[ai]);
+ ai++;
+ }
+ else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {
+ result.push(b[bi]);
+ bi++;
+ }
+ else if (a[ai] === '*' &&
+ b[bi] &&
+ (this.options.dot || !b[bi].startsWith('.')) &&
+ b[bi] !== '**') {
+ if (which === 'b')
+ return false;
+ which = 'a';
+ result.push(a[ai]);
+ ai++;
+ bi++;
+ }
+ else if (b[bi] === '*' &&
+ a[ai] &&
+ (this.options.dot || !a[ai].startsWith('.')) &&
+ a[ai] !== '**') {
+ if (which === 'a')
+ return false;
+ which = 'b';
+ result.push(b[bi]);
+ ai++;
+ bi++;
+ }
+ else {
+ return false;
+ }
+ }
+ // if we fall out of the loop, it means they two are identical
+ // as long as their lengths match
+ return a.length === b.length && result;
+ }
+ parseNegate() {
+ if (this.nonegate)
+ return;
+ const pattern = this.pattern;
+ let negate = false;
+ let negateOffset = 0;
+ for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {
+ negate = !negate;
+ negateOffset++;
+ }
+ if (negateOffset)
+ this.pattern = pattern.slice(negateOffset);
+ this.negate = negate;
+ }
+ // set partial to true to test if, for example,
+ // "/a/b" matches the start of "/*/b/*/d"
+ // Partial means, if you run out of file before you run
+ // out of pattern, then that's fine, as long as all
+ // the parts match.
+ matchOne(file, pattern, partial = false) {
+ const options = this.options;
+ // UNC paths like //?/X:/... can match X:/... and vice versa
+ // Drive letters in absolute drive or unc paths are always compared
+ // case-insensitively.
+ if (this.isWindows) {
+ const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);
+ const fileUNC = !fileDrive &&
+ file[0] === '' &&
+ file[1] === '' &&
+ file[2] === '?' &&
+ /^[a-z]:$/i.test(file[3]);
+ const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);
+ const patternUNC = !patternDrive &&
+ pattern[0] === '' &&
+ pattern[1] === '' &&
+ pattern[2] === '?' &&
+ typeof pattern[3] === 'string' &&
+ /^[a-z]:$/i.test(pattern[3]);
+ const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined;
+ const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined;
+ if (typeof fdi === 'number' && typeof pdi === 'number') {
+ const [fd, pd] = [file[fdi], pattern[pdi]];
+ if (fd.toLowerCase() === pd.toLowerCase()) {
+ pattern[pdi] = fd;
+ if (pdi > fdi) {
+ pattern = pattern.slice(pdi);
+ }
+ else if (fdi > pdi) {
+ file = file.slice(fdi);
+ }
+ }
+ }
+ }
+ // resolve and reduce . and .. portions in the file as well.
+ // dont' need to do the second phase, because it's only one string[]
+ const { optimizationLevel = 1 } = this.options;
+ if (optimizationLevel >= 2) {
+ file = this.levelTwoFileOptimize(file);
+ }
+ this.debug('matchOne', this, { file, pattern });
+ this.debug('matchOne', file.length, pattern.length);
+ for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
+ this.debug('matchOne loop');
+ var p = pattern[pi];
+ var f = file[fi];
+ this.debug(pattern, p, f);
+ // should be impossible.
+ // some invalid regexp stuff in the set.
+ /* c8 ignore start */
+ if (p === false) {
+ return false;
+ }
+ /* c8 ignore stop */
+ if (p === GLOBSTAR) {
+ this.debug('GLOBSTAR', [pattern, p, f]);
+ // "**"
+ // a/**/b/**/c would match the following:
+ // a/b/x/y/z/c
+ // a/x/y/z/b/c
+ // a/b/x/b/x/c
+ // a/b/c
+ // To do this, take the rest of the pattern after
+ // the **, and see if it would match the file remainder.
+ // If so, return success.
+ // If not, the ** "swallows" a segment, and try again.
+ // This is recursively awful.
+ //
+ // a/**/b/**/c matching a/b/x/y/z/c
+ // - a matches a
+ // - doublestar
+ // - matchOne(b/x/y/z/c, b/**/c)
+ // - b matches b
+ // - doublestar
+ // - matchOne(x/y/z/c, c) -> no
+ // - matchOne(y/z/c, c) -> no
+ // - matchOne(z/c, c) -> no
+ // - matchOne(c, c) yes, hit
+ var fr = fi;
+ var pr = pi + 1;
+ if (pr === pl) {
+ this.debug('** at the end');
+ // a ** at the end will just swallow the rest.
+ // We have found a match.
+ // however, it will not swallow /.x, unless
+ // options.dot is set.
+ // . and .. are *never* matched by **, for explosively
+ // exponential reasons.
+ for (; fi < fl; fi++) {
+ if (file[fi] === '.' ||
+ file[fi] === '..' ||
+ (!options.dot && file[fi].charAt(0) === '.'))
+ return false;
+ }
+ return true;
+ }
+ // ok, let's see if we can swallow whatever we can.
+ while (fr < fl) {
+ var swallowee = file[fr];
+ this.debug('\nglobstar while', file, fr, pattern, pr, swallowee);
+ // XXX remove this slice. Just pass the start index.
+ if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
+ this.debug('globstar found match!', fr, fl, swallowee);
+ // found a match.
+ return true;
+ }
+ else {
+ // can't swallow "." or ".." ever.
+ // can only swallow ".foo" when explicitly asked.
+ if (swallowee === '.' ||
+ swallowee === '..' ||
+ (!options.dot && swallowee.charAt(0) === '.')) {
+ this.debug('dot detected!', file, fr, pattern, pr);
+ break;
+ }
+ // ** swallows a segment, and continue.
+ this.debug('globstar swallow a segment, and continue');
+ fr++;
+ }
+ }
+ // no match was found.
+ // However, in partial mode, we can't say this is necessarily over.
+ /* c8 ignore start */
+ if (partial) {
+ // ran out of file
+ this.debug('\n>>> no match, partial?', file, fr, pattern, pr);
+ if (fr === fl) {
+ return true;
+ }
+ }
+ /* c8 ignore stop */
+ return false;
+ }
+ // something other than **
+ // non-magic patterns just have to match exactly
+ // patterns with magic have been turned into regexps.
+ let hit;
+ if (typeof p === 'string') {
+ hit = f === p;
+ this.debug('string match', p, f, hit);
+ }
+ else {
+ hit = p.test(f);
+ this.debug('pattern match', p, f, hit);
+ }
+ if (!hit)
+ return false;
+ }
+ // Note: ending in / means that we'll get a final ""
+ // at the end of the pattern. This can only match a
+ // corresponding "" at the end of the file.
+ // If the file ends in /, then it can only match a
+ // a pattern that ends in /, unless the pattern just
+ // doesn't have any more for it. But, a/b/ should *not*
+ // match "a/b/*", even though "" matches against the
+ // [^/]*? pattern, except in partial mode, where it might
+ // simply not be reached yet.
+ // However, a/b/ should still satisfy a/*
+ // now either we fell off the end of the pattern, or we're done.
+ if (fi === fl && pi === pl) {
+ // ran out of pattern and filename at the same time.
+ // an exact hit!
+ return true;
+ }
+ else if (fi === fl) {
+ // ran out of file, but still had pattern left.
+ // this is ok if we're doing the match as part of
+ // a glob fs traversal.
+ return partial;
+ }
+ else if (pi === pl) {
+ // ran out of pattern, still have file left.
+ // this is only acceptable if we're on the very last
+ // empty segment of a file with a trailing slash.
+ // a/* should match a/b/
+ return fi === fl - 1 && file[fi] === '';
+ /* c8 ignore start */
+ }
+ else {
+ // should be unreachable.
+ throw new Error('wtf?');
+ }
+ /* c8 ignore stop */
+ }
+ braceExpand() {
+ return braceExpand(this.pattern, this.options);
+ }
+ parse(pattern) {
+ assertValidPattern(pattern);
+ const options = this.options;
+ // shortcuts
+ if (pattern === '**')
+ return GLOBSTAR;
+ if (pattern === '')
+ return '';
+ // far and away, the most common glob pattern parts are
+ // *, *.*, and *.<ext> Add a fast check method for those.
+ let m;
+ let fastTest = null;
+ if ((m = pattern.match(starRE))) {
+ fastTest = options.dot ? starTestDot : starTest;
+ }
+ else if ((m = pattern.match(starDotExtRE))) {
+ fastTest = (options.nocase
+ ? options.dot
+ ? starDotExtTestNocaseDot
+ : starDotExtTestNocase
+ : options.dot
+ ? starDotExtTestDot
+ : starDotExtTest)(m[1]);
+ }
+ else if ((m = pattern.match(qmarksRE))) {
+ fastTest = (options.nocase
+ ? options.dot
+ ? qmarksTestNocaseDot
+ : qmarksTestNocase
+ : options.dot
+ ? qmarksTestDot
+ : qmarksTest)(m);
+ }
+ else if ((m = pattern.match(starDotStarRE))) {
+ fastTest = options.dot ? starDotStarTestDot : starDotStarTest;
+ }
+ else if ((m = pattern.match(dotStarRE))) {
+ fastTest = dotStarTest;
+ }
+ const re = AST.fromGlob(pattern, this.options).toMMPattern();
+ return fastTest ? Object.assign(re, { test: fastTest }) : re;
+ }
+ makeRe() {
+ if (this.regexp || this.regexp === false)
+ return this.regexp;
+ // at this point, this.set is a 2d array of partial
+ // pattern strings, or "**".
+ //
+ // It's better to use .match(). This function shouldn't
+ // be used, really, but it's pretty convenient sometimes,
+ // when you just want to work with a regex.
+ const set = this.set;
+ if (!set.length) {
+ this.regexp = false;
+ return this.regexp;
+ }
+ const options = this.options;
+ const twoStar = options.noglobstar
+ ? star
+ : options.dot
+ ? twoStarDot
+ : twoStarNoDot;
+ const flags = new Set(options.nocase ? ['i'] : []);
+ // regexpify non-globstar patterns
+ // if ** is only item, then we just do one twoStar
+ // if ** is first, and there are more, prepend (\/|twoStar\/)? to next
+ // if ** is last, append (\/twoStar|) to previous
+ // if ** is in the middle, append (\/|\/twoStar\/) to previous
+ // then filter out GLOBSTAR symbols
+ let re = set
+ .map(pattern => {
+ const pp = pattern.map(p => {
+ if (p instanceof RegExp) {
+ for (const f of p.flags.split(''))
+ flags.add(f);
+ }
+ return typeof p === 'string'
+ ? regExpEscape(p)
+ : p === GLOBSTAR
+ ? GLOBSTAR
+ : p._src;
+ });
+ pp.forEach((p, i) => {
+ const next = pp[i + 1];
+ const prev = pp[i - 1];
+ if (p !== GLOBSTAR || prev === GLOBSTAR) {
+ return;
+ }
+ if (prev === undefined) {
+ if (next !== undefined && next !== GLOBSTAR) {
+ pp[i + 1] = '(?:\\/|' + twoStar + '\\/)?' + next;
+ }
+ else {
+ pp[i] = twoStar;
+ }
+ }
+ else if (next === undefined) {
+ pp[i - 1] = prev + '(?:\\/|' + twoStar + ')?';
+ }
+ else if (next !== GLOBSTAR) {
+ pp[i - 1] = prev + '(?:\\/|\\/' + twoStar + '\\/)' + next;
+ pp[i + 1] = GLOBSTAR;
+ }
+ });
+ return pp.filter(p => p !== GLOBSTAR).join('/');
+ })
+ .join('|');
+ // need to wrap in parens if we had more than one thing with |,
+ // otherwise only the first will be anchored to ^ and the last to $
+ const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];
+ // must match entire pattern
+ // ending in a * or ** will make it less strict.
+ re = '^' + open + re + close + '$';
+ // can match anything, as long as it's not this.
+ if (this.negate)
+ re = '^(?!' + re + ').+$';
+ try {
+ this.regexp = new RegExp(re, [...flags].join(''));
+ /* c8 ignore start */
+ }
+ catch (ex) {
+ // should be impossible
+ this.regexp = false;
+ }
+ /* c8 ignore stop */
+ return this.regexp;
+ }
+ slashSplit(p) {
+ // if p starts with // on windows, we preserve that
+ // so that UNC paths aren't broken. Otherwise, any number of
+ // / characters are coalesced into one, unless
+ // preserveMultipleSlashes is set to true.
+ if (this.preserveMultipleSlashes) {
+ return p.split('/');
+ }
+ else if (this.isWindows && /^\/\/[^\/]+/.test(p)) {
+ // add an extra '' for the one we lose
+ return ['', ...p.split(/\/+/)];
+ }
+ else {
+ return p.split(/\/+/);
+ }
+ }
+ match(f, partial = this.partial) {
+ this.debug('match', f, this.pattern);
+ // short-circuit in the case of busted things.
+ // comments, etc.
+ if (this.comment) {
+ return false;
+ }
+ if (this.empty) {
+ return f === '';
+ }
+ if (f === '/' && partial) {
+ return true;
+ }
+ const options = this.options;
+ // windows: need to use /, not \
+ if (this.isWindows) {
+ f = f.split('\\').join('/');
+ }
+ // treat the test path as a set of pathparts.
+ const ff = this.slashSplit(f);
+ this.debug(this.pattern, 'split', ff);
+ // just ONE of the pattern sets in this.set needs to match
+ // in order for it to be valid. If negating, then just one
+ // match means that we have failed.
+ // Either way, return on the first hit.
+ const set = this.set;
+ this.debug(this.pattern, 'set', set);
+ // Find the basename of the path by looking for the last non-empty segment
+ let filename = ff[ff.length - 1];
+ if (!filename) {
+ for (let i = ff.length - 2; !filename && i >= 0; i--) {
+ filename = ff[i];
+ }
+ }
+ for (let i = 0; i < set.length; i++) {
+ const pattern = set[i];
+ let file = ff;
+ if (options.matchBase && pattern.length === 1) {
+ file = [filename];
+ }
+ const hit = this.matchOne(file, pattern, partial);
+ if (hit) {
+ if (options.flipNegate) {
+ return true;
+ }
+ return !this.negate;
+ }
+ }
+ // didn't get any hits. this is success if it's a negative
+ // pattern, failure otherwise.
+ if (options.flipNegate) {
+ return false;
+ }
+ return this.negate;
+ }
+ static defaults(def) {
+ return minimatch.defaults(def).Minimatch;
+ }
+}
+/* c8 ignore start */
+export { AST } from './ast.js';
+export { escape } from './escape.js';
+export { unescape } from './unescape.js';
+/* c8 ignore stop */
+minimatch.AST = AST;
+minimatch.Minimatch = Minimatch;
+minimatch.escape = escape;
+minimatch.unescape = unescape;
+//# sourceMappingURL=index.js.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/index.js.map b/node_modules/minimatch/dist/mjs/index.js.map
new file mode 100644
index 0000000..9a11ea7
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/index.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAA;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,GAAG,EAAe,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAsCxC,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,CAAS,EACT,OAAe,EACf,UAA4B,EAAE,EAC9B,EAAE;IACF,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAE3B,oCAAoC;IACpC,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QACnD,OAAO,KAAK,CAAA;KACb;IAED,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACjD,CAAC,CAAA;AAED,wDAAwD;AACxD,MAAM,YAAY,GAAG,uBAAuB,CAAA;AAC5C,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,EAAE,CACpD,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACvC,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACzE,MAAM,oBAAoB,GAAG,CAAC,GAAW,EAAE,EAAE;IAC3C,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC3E,CAAC,CAAA;AACD,MAAM,uBAAuB,GAAG,CAAC,GAAW,EAAE,EAAE;IAC9C,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACrD,CAAC,CAAA;AACD,MAAM,aAAa,GAAG,YAAY,CAAA;AAClC,MAAM,eAAe,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC5E,MAAM,kBAAkB,GAAG,CAAC,CAAS,EAAE,EAAE,CACvC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAC5C,MAAM,SAAS,GAAG,SAAS,CAAA;AAC3B,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC/E,MAAM,MAAM,GAAG,OAAO,CAAA;AACtB,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AACpE,MAAM,WAAW,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAA;AAC5E,MAAM,QAAQ,GAAG,wBAAwB,CAAA;AACzC,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAmB,EAAE,EAAE;IAC5D,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACnC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IACtB,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACjE,CAAC,CAAA;AACD,MAAM,mBAAmB,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAmB,EAAE,EAAE;IAC/D,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAA;IACtB,GAAG,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACvB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AACjE,CAAC,CAAA;AACD,MAAM,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAmB,EAAE,EAAE;IACzD,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAClE,CAAC,CAAA;AACD,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,CAAmB,EAAE,EAAE;IACtD,MAAM,KAAK,GAAG,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACnC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;AAClE,CAAC,CAAA;AACD,MAAM,eAAe,GAAG,CAAC,CAAC,EAAE,CAAmB,EAAE,EAAE;IACjD,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAA;IACrB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;AAC9D,CAAC,CAAA;AACD,MAAM,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAmB,EAAE,EAAE;IACpD,MAAM,GAAG,GAAG,EAAE,CAAC,MAAM,CAAA;IACrB,OAAO,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,CAAA;AACnE,CAAC,CAAA;AAED,qBAAqB;AACrB,MAAM,eAAe,GAAa,CAChC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO;IACpC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;QAC9B,OAAO,CAAC,GAAG;QACX,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC;QAC7C,OAAO,CAAC,QAAQ;IAClB,CAAC,CAAC,OAAO,CACA,CAAA;AAEb,MAAM,IAAI,GAAkC;IAC1C,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;IACpB,KAAK,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;CACpB,CAAA;AACD,oBAAoB;AAEpB,MAAM,CAAC,MAAM,GAAG,GAAG,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAA;AAChF,SAAS,CAAC,GAAG,GAAG,GAAG,CAAA;AAEnB,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;AAC7C,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAA;AAE7B,gCAAgC;AAChC,iDAAiD;AACjD,MAAM,KAAK,GAAG,MAAM,CAAA;AAEpB,gCAAgC;AAChC,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAA;AAEzB,4DAA4D;AAC5D,+DAA+D;AAC/D,6CAA6C;AAC7C,MAAM,UAAU,GAAG,yCAAyC,CAAA;AAE5D,kCAAkC;AAClC,6CAA6C;AAC7C,MAAM,YAAY,GAAG,yBAAyB,CAAA;AAE9C,MAAM,CAAC,MAAM,MAAM,GACjB,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CACpD,CAAC,CAAS,EAAE,EAAE,CACZ,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAClC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAA;AAEzB,MAAM,GAAG,GAAG,CAAC,CAAmB,EAAE,IAAsB,EAAE,EAAE,EAAE,CAC5D,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;AAEzB,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAqB,EAAoB,EAAE;IAClE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE;QAC/D,OAAO,SAAS,CAAA;KACjB;IAED,MAAM,IAAI,GAAG,SAAS,CAAA;IAEtB,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CACvE,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;IAErC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;QACtB,SAAS,EAAE,MAAM,SAAU,SAAQ,IAAI,CAAC,SAAS;YAC/C,YAAY,OAAe,EAAE,UAA4B,EAAE;gBACzD,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;YACnC,CAAC;YACD,MAAM,CAAC,QAAQ,CAAC,OAAyB;gBACvC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;YACnD,CAAC;SACF;QAED,GAAG,EAAE,MAAM,GAAI,SAAQ,IAAI,CAAC,GAAG;YAC7B,qBAAqB;YACrB,YACE,IAAwB,EACxB,MAAY,EACZ,UAA4B,EAAE;gBAE9B,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;YACxC,CAAC;YACD,oBAAoB;YAEpB,MAAM,CAAC,QAAQ,CAAC,OAAe,EAAE,UAA4B,EAAE;gBAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAA;YACtD,CAAC;SACF;QAED,QAAQ,EAAE,CACR,CAAS,EACT,UAA0D,EAAE,EAC5D,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAExC,MAAM,EAAE,CACN,CAAS,EACT,UAA0D,EAAE,EAC5D,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEtC,MAAM,EAAE,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEzC,QAAQ,EAAE,CAAC,OAAyB,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEzE,MAAM,EAAE,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAEzC,WAAW,EAAE,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CAC/D,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE9C,KAAK,EAAE,CAAC,IAAc,EAAE,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CACzE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE9C,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,QAAQ,EAAE,QAA2B;KACtC,CAAC,CAAA;AACJ,CAAC,CAAA;AACD,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAA;AAE7B,mBAAmB;AACnB,qBAAqB;AACrB,mBAAmB;AACnB,8BAA8B;AAC9B,mCAAmC;AACnC,2CAA2C;AAC3C,EAAE;AACF,iCAAiC;AACjC,qBAAqB;AACrB,iBAAiB;AACjB,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,OAAe,EACf,UAA4B,EAAE,EAC9B,EAAE;IACF,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAE3B,wDAAwD;IACxD,wDAAwD;IACxD,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;QACxD,+BAA+B;QAC/B,OAAO,CAAC,OAAO,CAAC,CAAA;KACjB;IAED,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;AACxB,CAAC,CAAA;AACD,SAAS,CAAC,WAAW,GAAG,WAAW,CAAA;AAEnC,yCAAyC;AACzC,kDAAkD;AAClD,oEAAoE;AACpE,oEAAoE;AACpE,6DAA6D;AAC7D,kEAAkE;AAClE,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AACxE,qEAAqE;AACrE,8DAA8D;AAE9D,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAe,EAAE,UAA4B,EAAE,EAAE,EAAE,CACxE,IAAI,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAA;AAC1C,SAAS,CAAC,MAAM,GAAG,MAAM,CAAA;AAEzB,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,IAAc,EACd,OAAe,EACf,UAA4B,EAAE,EAC9B,EAAE;IACF,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC1C,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACpC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KACnB;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AACD,SAAS,CAAC,KAAK,GAAG,KAAK,CAAA;AAEvB,+BAA+B;AAC/B,MAAM,SAAS,GAAG,yBAAyB,CAAA;AAC3C,MAAM,YAAY,GAAG,CAAC,CAAS,EAAE,EAAE,CACjC,CAAC,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAA;AAU/C,MAAM,OAAO,SAAS;IACpB,OAAO,CAAkB;IACzB,GAAG,CAAyB;IAC5B,OAAO,CAAQ;IAEf,oBAAoB,CAAS;IAC7B,QAAQ,CAAS;IACjB,MAAM,CAAS;IACf,OAAO,CAAS;IAChB,KAAK,CAAS;IACd,uBAAuB,CAAS;IAChC,OAAO,CAAS;IAChB,OAAO,CAAU;IACjB,SAAS,CAAY;IACrB,MAAM,CAAS;IAEf,SAAS,CAAS;IAClB,QAAQ,CAAU;IAClB,kBAAkB,CAAS;IAE3B,MAAM,CAAyB;IAC/B,YAAY,OAAe,EAAE,UAA4B,EAAE;QACzD,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAE3B,OAAO,GAAG,OAAO,IAAI,EAAE,CAAA;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,eAAe,CAAA;QACnD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAA;QAC1C,IAAI,CAAC,oBAAoB;YACvB,CAAC,CAAC,OAAO,CAAC,oBAAoB,IAAI,OAAO,CAAC,kBAAkB,KAAK,KAAK,CAAA;QACxE,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;SAChD;QACD,IAAI,CAAC,uBAAuB,GAAG,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAA;QAChE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;QACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAA;QAClC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,CAAA;QAChC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;QACnC,IAAI,CAAC,kBAAkB;YACrB,OAAO,CAAC,kBAAkB,KAAK,SAAS;gBACtC,CAAC,CAAC,OAAO,CAAC,kBAAkB;gBAC5B,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;QAEvC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;QACjB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA;QACnB,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QAEb,+BAA+B;QAC/B,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YACrD,OAAO,IAAI,CAAA;SACZ;QACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE;YAC9B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE;gBAC1B,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,OAAO,IAAI,CAAA;aAC1C;SACF;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,GAAG,CAAQ,IAAG,CAAC;IAErB,IAAI;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,6CAA6C;QAC7C,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;YACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAA;YACnB,OAAM;SACP;QAED,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;YACjB,OAAM;SACP;QAED,oCAAoC;QACpC,IAAI,CAAC,WAAW,EAAE,CAAA;QAElB,wBAAwB;QACxB,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;QAE/C,IAAI,OAAO,CAAC,KAAK,EAAE;YACjB,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;SACxD;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QAEtC,+DAA+D;QAC/D,kCAAkC;QAClC,8DAA8D;QAC9D,oDAAoD;QACpD,wCAAwC;QACxC,EAAE;QACF,mEAAmE;QACnE,oEAAoE;QACpE,kEAAkE;QAClE,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;QAC9C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;QAExC,mBAAmB;QACnB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE;YACxC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC7C,qCAAqC;gBACrC,MAAM,KAAK,GACT,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;oBACX,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;oBACX,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACvB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACrC,IAAI,KAAK,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;iBACnE;qBAAM,IAAI,OAAO,EAAE;oBAClB,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;iBACvD;aACF;YACD,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QACpC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;QAE7B,sDAAsD;QACtD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CACnB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CACF,CAAA;QAE5B,2CAA2C;QAC3C,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBACrB,IACE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;oBACX,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE;oBACX,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG;oBAC5B,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;oBACxB,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtB;oBACA,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;iBACX;aACF;SACF;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IACpC,CAAC;IAED,yDAAyD;IACzD,0DAA0D;IAC1D,yDAAyD;IACzD,4DAA4D;IAC5D,uCAAuC;IACvC,UAAU,CAAC,SAAqB;QAC9B,yDAAyD;QACzD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC5C,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;wBAC5B,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;qBACtB;iBACF;aACF;SACF;QAED,MAAM,EAAE,iBAAiB,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAE9C,IAAI,iBAAiB,IAAI,CAAC,EAAE;YAC1B,wDAAwD;YACxD,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;YAChD,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAA;SAClD;aAAM,IAAI,iBAAiB,IAAI,CAAC,EAAE;YACjC,mDAAmD;YACnD,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAA;SAC7C;aAAM;YACL,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA;SACtD;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,wCAAwC;IACxC,yBAAyB,CAAC,SAAqB;QAC7C,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC3B,IAAI,EAAE,GAAW,CAAC,CAAC,CAAA;YACnB,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;gBAChD,IAAI,CAAC,GAAG,EAAE,CAAA;gBACV,OAAO,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;oBAC5B,CAAC,EAAE,CAAA;iBACJ;gBACD,IAAI,CAAC,KAAK,EAAE,EAAE;oBACZ,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;iBACzB;aACF;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,kDAAkD;IAClD,gBAAgB,CAAC,SAAqB;QACpC,OAAO,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC3B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAa,EAAE,IAAI,EAAE,EAAE;gBAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;gBAChC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE;oBAClC,OAAO,GAAG,CAAA;iBACX;gBACD,IAAI,IAAI,KAAK,IAAI,EAAE;oBACjB,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE;wBAC1D,GAAG,CAAC,GAAG,EAAE,CAAA;wBACT,OAAO,GAAG,CAAA;qBACX;iBACF;gBACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACd,OAAO,GAAG,CAAA;YACZ,CAAC,EAAE,EAAE,CAAC,CAAA;YACN,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;QAC1C,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,oBAAoB,CAAC,KAAwB;QAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACzB,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;SAC/B;QACD,IAAI,YAAY,GAAY,KAAK,CAAA;QACjC,GAAG;YACD,YAAY,GAAG,KAAK,CAAA;YACpB,mCAAmC;YACnC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;oBACzC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;oBAClB,iCAAiC;oBACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE;wBAAE,SAAQ;oBACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE;wBACzB,YAAY,GAAG,IAAI,CAAA;wBACnB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;wBAClB,CAAC,EAAE,CAAA;qBACJ;iBACF;gBACD,IACE,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;oBAChB,KAAK,CAAC,MAAM,KAAK,CAAC;oBAClB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EACrC;oBACA,YAAY,GAAG,IAAI,CAAA;oBACnB,KAAK,CAAC,GAAG,EAAE,CAAA;iBACZ;aACF;YAED,sCAAsC;YACtC,IAAI,EAAE,GAAW,CAAC,CAAA;YAClB,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;gBAChD,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;gBACvB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;oBAC9C,YAAY,GAAG,IAAI,CAAA;oBACnB,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;oBACvB,EAAE,IAAI,CAAC,CAAA;iBACR;aACF;SACF,QAAQ,YAAY,EAAC;QACtB,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAC1C,CAAC;IAED,yCAAyC;IACzC,8BAA8B;IAC9B,+BAA+B;IAC/B,iDAAiD;IACjD,iBAAiB;IACjB,EAAE;IACF,gEAAgE;IAChE,gEAAgE;IAChE,kEAAkE;IAClE,qDAAqD;IACrD,EAAE;IACF,kFAAkF;IAClF,mCAAmC;IACnC,sCAAsC;IACtC,4BAA4B;IAC5B,EAAE;IACF,qEAAqE;IACrE,+DAA+D;IAC/D,oBAAoB,CAAC,SAAqB;QACxC,IAAI,YAAY,GAAG,KAAK,CAAA;QACxB,GAAG;YACD,YAAY,GAAG,KAAK,CAAA;YACpB,kFAAkF;YAClF,KAAK,IAAI,KAAK,IAAI,SAAS,EAAE;gBAC3B,IAAI,EAAE,GAAW,CAAC,CAAC,CAAA;gBACnB,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;oBAChD,IAAI,GAAG,GAAW,EAAE,CAAA;oBACpB,OAAO,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE;wBAC9B,wCAAwC;wBACxC,GAAG,EAAE,CAAA;qBACN;oBACD,uDAAuD;oBACvD,mCAAmC;oBACnC,IAAI,GAAG,GAAG,EAAE,EAAE;wBACZ,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,EAAE,CAAC,CAAA;qBAC/B;oBAED,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;oBACxB,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;oBACvB,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;oBACxB,IAAI,IAAI,KAAK,IAAI;wBAAE,SAAQ;oBAC3B,IACE,CAAC,CAAC;wBACF,CAAC,KAAK,GAAG;wBACT,CAAC,KAAK,IAAI;wBACV,CAAC,EAAE;wBACH,EAAE,KAAK,GAAG;wBACV,EAAE,KAAK,IAAI,EACX;wBACA,SAAQ;qBACT;oBACD,YAAY,GAAG,IAAI,CAAA;oBACnB,4CAA4C;oBAC5C,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;oBACnB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;oBAC5B,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAA;oBAChB,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBACrB,EAAE,EAAE,CAAA;iBACL;gBAED,mCAAmC;gBACnC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;oBACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;wBACzC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;wBAClB,iCAAiC;wBACjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE;4BAAE,SAAQ;wBACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE;4BACzB,YAAY,GAAG,IAAI,CAAA;4BACnB,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;4BAClB,CAAC,EAAE,CAAA;yBACJ;qBACF;oBACD,IACE,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;wBAChB,KAAK,CAAC,MAAM,KAAK,CAAC;wBAClB,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EACrC;wBACA,YAAY,GAAG,IAAI,CAAA;wBACnB,KAAK,CAAC,GAAG,EAAE,CAAA;qBACZ;iBACF;gBAED,sCAAsC;gBACtC,IAAI,EAAE,GAAW,CAAC,CAAA;gBAClB,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;oBAChD,MAAM,CAAC,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;oBACvB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE;wBAC9C,YAAY,GAAG,IAAI,CAAA;wBACnB,MAAM,OAAO,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,IAAI,CAAA;wBAClD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;wBAClC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAA;wBACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;4BAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;wBACtC,EAAE,IAAI,CAAC,CAAA;qBACR;iBACF;aACF;SACF,QAAQ,YAAY,EAAC;QAEtB,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,sCAAsC;IACtC,sDAAsD;IACtD,8CAA8C;IAC9C,oDAAoD;IACpD,EAAE;IACF,2DAA2D;IAC3D,mDAAmD;IACnD,qBAAqB,CAAC,SAAqB;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;YAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAC7B,SAAS,CAAC,CAAC,CAAC,EACZ,SAAS,CAAC,CAAC,CAAC,EACZ,CAAC,IAAI,CAAC,uBAAuB,CAC9B,CAAA;gBACD,IAAI,CAAC,OAAO;oBAAE,SAAQ;gBACtB,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;gBACtB,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAA;aAClB;SACF;QACD,OAAO,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;IAC1C,CAAC;IAED,UAAU,CACR,CAAW,EACX,CAAW,EACX,eAAwB,KAAK;QAE7B,IAAI,EAAE,GAAG,CAAC,CAAA;QACV,IAAI,EAAE,GAAG,CAAC,CAAA;QACV,IAAI,MAAM,GAAa,EAAE,CAAA;QACzB,IAAI,KAAK,GAAW,EAAE,CAAA;QACtB,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE;YACrC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE;gBACnB,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC1C,EAAE,EAAE,CAAA;gBACJ,EAAE,EAAE,CAAA;aACL;iBAAM,IAAI,YAAY,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;gBAChE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAClB,EAAE,EAAE,CAAA;aACL;iBAAM,IAAI,YAAY,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE;gBAChE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAClB,EAAE,EAAE,CAAA;aACL;iBAAM,IACL,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG;gBACb,CAAC,CAAC,EAAE,CAAC;gBACL,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC5C,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EACd;gBACA,IAAI,KAAK,KAAK,GAAG;oBAAE,OAAO,KAAK,CAAA;gBAC/B,KAAK,GAAG,GAAG,CAAA;gBACX,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAClB,EAAE,EAAE,CAAA;gBACJ,EAAE,EAAE,CAAA;aACL;iBAAM,IACL,CAAC,CAAC,EAAE,CAAC,KAAK,GAAG;gBACb,CAAC,CAAC,EAAE,CAAC;gBACL,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC5C,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,EACd;gBACA,IAAI,KAAK,KAAK,GAAG;oBAAE,OAAO,KAAK,CAAA;gBAC/B,KAAK,GAAG,GAAG,CAAA;gBACX,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAClB,EAAE,EAAE,CAAA;gBACJ,EAAE,EAAE,CAAA;aACL;iBAAM;gBACL,OAAO,KAAK,CAAA;aACb;SACF;QACD,8DAA8D;QAC9D,iCAAiC;QACjC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,MAAM,CAAA;IACxC,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAM;QAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAA;QAClB,IAAI,YAAY,GAAG,CAAC,CAAA;QAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE;YACpE,MAAM,GAAG,CAAC,MAAM,CAAA;YAChB,YAAY,EAAE,CAAA;SACf;QAED,IAAI,YAAY;YAAE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QAC5D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;IAED,+CAA+C;IAC/C,yCAAyC;IACzC,uDAAuD;IACvD,mDAAmD;IACnD,mBAAmB;IACnB,QAAQ,CAAC,IAAc,EAAE,OAAsB,EAAE,UAAmB,KAAK;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,4DAA4D;QAC5D,mEAAmE;QACnE,sBAAsB;QACtB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1E,MAAM,OAAO,GACX,CAAC,SAAS;gBACV,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,CAAC,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gBACf,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;YAE3B,MAAM,YAAY,GAChB,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YAChE,MAAM,UAAU,GACd,CAAC,YAAY;gBACb,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;gBACjB,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE;gBACjB,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG;gBAClB,OAAO,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ;gBAC9B,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YAE9B,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YACnD,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YACzD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;gBACtD,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GAAG,CAAW,CAAC,CAAA;gBACtE,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,WAAW,EAAE,EAAE;oBACzC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAA;oBACjB,IAAI,GAAG,GAAG,GAAG,EAAE;wBACb,OAAO,GAAG,OAAO,CAAC,KAAK,CAAE,GAAG,CAAC,CAAA;qBAC9B;yBAAM,IAAI,GAAG,GAAG,GAAG,EAAE;wBACpB,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;qBACvB;iBACF;aACF;SACF;QAED,4DAA4D;QAC5D,oEAAoE;QACpE,MAAM,EAAE,iBAAiB,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QAC9C,IAAI,iBAAiB,IAAI,CAAC,EAAE;YAC1B,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;SACvC;QAED,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QAC/C,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAEnD,KACE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EACzD,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAClB,EAAE,EAAE,EAAE,EAAE,EAAE,EACV;YACA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;YAC3B,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,CAAA;YACnB,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;YAEhB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;YAEzB,wBAAwB;YACxB,wCAAwC;YACxC,qBAAqB;YACrB,IAAI,CAAC,KAAK,KAAK,EAAE;gBACf,OAAO,KAAK,CAAA;aACb;YACD,oBAAoB;YAEpB,IAAI,CAAC,KAAK,QAAQ,EAAE;gBAClB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBAEvC,OAAO;gBACP,yCAAyC;gBACzC,cAAc;gBACd,cAAc;gBACd,cAAc;gBACd,QAAQ;gBACR,iDAAiD;gBACjD,wDAAwD;gBACxD,yBAAyB;gBACzB,sDAAsD;gBACtD,6BAA6B;gBAC7B,EAAE;gBACF,mCAAmC;gBACnC,gBAAgB;gBAChB,eAAe;gBACf,kCAAkC;gBAClC,oBAAoB;gBACpB,mBAAmB;gBACnB,qCAAqC;gBACrC,mCAAmC;gBACnC,iCAAiC;gBACjC,kCAAkC;gBAClC,IAAI,EAAE,GAAG,EAAE,CAAA;gBACX,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;gBACf,IAAI,EAAE,KAAK,EAAE,EAAE;oBACb,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;oBAC3B,8CAA8C;oBAC9C,yBAAyB;oBACzB,2CAA2C;oBAC3C,sBAAsB;oBACtB,sDAAsD;oBACtD,uBAAuB;oBACvB,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE;wBACpB,IACE,IAAI,CAAC,EAAE,CAAC,KAAK,GAAG;4BAChB,IAAI,CAAC,EAAE,CAAC,KAAK,IAAI;4BACjB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;4BAE5C,OAAO,KAAK,CAAA;qBACf;oBACD,OAAO,IAAI,CAAA;iBACZ;gBAED,mDAAmD;gBACnD,OAAO,EAAE,GAAG,EAAE,EAAE;oBACd,IAAI,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;oBAExB,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;oBAEhE,qDAAqD;oBACrD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE;wBAC7D,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,CAAC,CAAA;wBACtD,iBAAiB;wBACjB,OAAO,IAAI,CAAA;qBACZ;yBAAM;wBACL,kCAAkC;wBAClC,iDAAiD;wBACjD,IACE,SAAS,KAAK,GAAG;4BACjB,SAAS,KAAK,IAAI;4BAClB,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,EAC7C;4BACA,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;4BAClD,MAAK;yBACN;wBAED,uCAAuC;wBACvC,IAAI,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAA;wBACtD,EAAE,EAAE,CAAA;qBACL;iBACF;gBAED,sBAAsB;gBACtB,mEAAmE;gBACnE,qBAAqB;gBACrB,IAAI,OAAO,EAAE;oBACX,kBAAkB;oBAClB,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;oBAC7D,IAAI,EAAE,KAAK,EAAE,EAAE;wBACb,OAAO,IAAI,CAAA;qBACZ;iBACF;gBACD,oBAAoB;gBACpB,OAAO,KAAK,CAAA;aACb;YAED,0BAA0B;YAC1B,gDAAgD;YAChD,qDAAqD;YACrD,IAAI,GAAY,CAAA;YAChB,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE;gBACzB,GAAG,GAAG,CAAC,KAAK,CAAC,CAAA;gBACb,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;aACtC;iBAAM;gBACL,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACf,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;aACvC;YAED,IAAI,CAAC,GAAG;gBAAE,OAAO,KAAK,CAAA;SACvB;QAED,oDAAoD;QACpD,oDAAoD;QACpD,2CAA2C;QAC3C,kDAAkD;QAClD,oDAAoD;QACpD,uDAAuD;QACvD,oDAAoD;QACpD,yDAAyD;QACzD,6BAA6B;QAC7B,yCAAyC;QAEzC,gEAAgE;QAChE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YAC1B,oDAAoD;YACpD,gBAAgB;YAChB,OAAO,IAAI,CAAA;SACZ;aAAM,IAAI,EAAE,KAAK,EAAE,EAAE;YACpB,+CAA+C;YAC/C,iDAAiD;YACjD,uBAAuB;YACvB,OAAO,OAAO,CAAA;SACf;aAAM,IAAI,EAAE,KAAK,EAAE,EAAE;YACpB,4CAA4C;YAC5C,oDAAoD;YACpD,iDAAiD;YACjD,wBAAwB;YACxB,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;YAEvC,qBAAqB;SACtB;aAAM;YACL,yBAAyB;YACzB,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAA;SACxB;QACD,oBAAoB;IACtB,CAAC;IAED,WAAW;QACT,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,kBAAkB,CAAC,OAAO,CAAC,CAAA;QAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,YAAY;QACZ,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,QAAQ,CAAA;QACrC,IAAI,OAAO,KAAK,EAAE;YAAE,OAAO,EAAE,CAAA;QAE7B,uDAAuD;QACvD,0DAA0D;QAC1D,IAAI,CAA0B,CAAA;QAC9B,IAAI,QAAQ,GAAoC,IAAI,CAAA;QACpD,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE;YAC/B,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAA;SAChD;aAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE;YAC5C,QAAQ,GAAG,CACT,OAAO,CAAC,MAAM;gBACZ,CAAC,CAAC,OAAO,CAAC,GAAG;oBACX,CAAC,CAAC,uBAAuB;oBACzB,CAAC,CAAC,oBAAoB;gBACxB,CAAC,CAAC,OAAO,CAAC,GAAG;oBACb,CAAC,CAAC,iBAAiB;oBACnB,CAAC,CAAC,cAAc,CACnB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;SACR;aAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;YACxC,QAAQ,GAAG,CACT,OAAO,CAAC,MAAM;gBACZ,CAAC,CAAC,OAAO,CAAC,GAAG;oBACX,CAAC,CAAC,mBAAmB;oBACrB,CAAC,CAAC,gBAAgB;gBACpB,CAAC,CAAC,OAAO,CAAC,GAAG;oBACb,CAAC,CAAC,aAAa;oBACf,CAAC,CAAC,UAAU,CACf,CAAC,CAAC,CAAC,CAAA;SACL;aAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE;YAC7C,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,CAAA;SAC9D;aAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE;YACzC,QAAQ,GAAG,WAAW,CAAA;SACvB;QAED,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAA;QAC5D,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9D,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC,MAAM,CAAA;QAE5D,mDAAmD;QACnD,4BAA4B;QAC5B,EAAE;QACF,wDAAwD;QACxD,yDAAyD;QACzD,2CAA2C;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QAEpB,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;YACnB,OAAO,IAAI,CAAC,MAAM,CAAA;SACnB;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU;YAChC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,CAAC,GAAG;gBACb,CAAC,CAAC,UAAU;gBACZ,CAAC,CAAC,YAAY,CAAA;QAChB,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAElD,kCAAkC;QAClC,kDAAkD;QAClD,sEAAsE;QACtE,iDAAiD;QACjD,8DAA8D;QAC9D,mCAAmC;QACnC,IAAI,EAAE,GAAG,GAAG;aACT,GAAG,CAAC,OAAO,CAAC,EAAE;YACb,MAAM,EAAE,GAAiC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACvD,IAAI,CAAC,YAAY,MAAM,EAAE;oBACvB,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;wBAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;iBAChD;gBACD,OAAO,OAAO,CAAC,KAAK,QAAQ;oBAC1B,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;oBACjB,CAAC,CAAC,CAAC,KAAK,QAAQ;wBAChB,CAAC,CAAC,QAAQ;wBACV,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YACZ,CAAC,CAAiC,CAAA;YAClC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACtB,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACtB,IAAI,CAAC,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,EAAE;oBACvC,OAAM;iBACP;gBACD,IAAI,IAAI,KAAK,SAAS,EAAE;oBACtB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,QAAQ,EAAE;wBAC3C,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,IAAI,CAAA;qBACjD;yBAAM;wBACL,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;qBAChB;iBACF;qBAAM,IAAI,IAAI,KAAK,SAAS,EAAE;oBAC7B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAA;iBAC9C;qBAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;oBAC5B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,YAAY,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAAA;oBACzD,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAA;iBACrB;YACH,CAAC,CAAC,CAAA;YACF,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjD,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAA;QAEZ,+DAA+D;QAC/D,mEAAmE;QACnE,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAC9D,4BAA4B;QAC5B,gDAAgD;QAChD,EAAE,GAAG,GAAG,GAAG,IAAI,GAAG,EAAE,GAAG,KAAK,GAAG,GAAG,CAAA;QAElC,gDAAgD;QAChD,IAAI,IAAI,CAAC,MAAM;YAAE,EAAE,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,CAAA;QAE1C,IAAI;YACF,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;YACjD,qBAAqB;SACtB;QAAC,OAAO,EAAE,EAAE;YACX,uBAAuB;YACvB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAA;SACpB;QACD,oBAAoB;QACpB,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,UAAU,CAAC,CAAS;QAClB,mDAAmD;QACnD,6DAA6D;QAC7D,8CAA8C;QAC9C,0CAA0C;QAC1C,IAAI,IAAI,CAAC,uBAAuB,EAAE;YAChC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;SACpB;aAAM,IAAI,IAAI,CAAC,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAClD,sCAAsC;YACtC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;SAC/B;aAAM;YACL,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;SACtB;IACH,CAAC;IAED,KAAK,CAAC,CAAS,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO;QACrC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;QACpC,8CAA8C;QAC9C,iBAAiB;QACjB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO,KAAK,CAAA;SACb;QACD,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,EAAE,CAAA;SAChB;QAED,IAAI,CAAC,KAAK,GAAG,IAAI,OAAO,EAAE;YACxB,OAAO,IAAI,CAAA;SACZ;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QAE5B,gCAAgC;QAChC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SAC5B;QAED,6CAA6C;QAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;QAErC,0DAA0D;QAC1D,2DAA2D;QAC3D,mCAAmC;QACnC,uCAAuC;QAEvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;QACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QAEpC,0EAA0E;QAC1E,IAAI,QAAQ,GAAW,EAAE,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACxC,IAAI,CAAC,QAAQ,EAAE;YACb,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpD,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,CAAA;aACjB;SACF;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;YACtB,IAAI,IAAI,GAAG,EAAE,CAAA;YACb,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC7C,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAA;aAClB;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;YACjD,IAAI,GAAG,EAAE;gBACP,IAAI,OAAO,CAAC,UAAU,EAAE;oBACtB,OAAO,IAAI,CAAA;iBACZ;gBACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;aACpB;SACF;QAED,2DAA2D;QAC3D,8BAA8B;QAC9B,IAAI,OAAO,CAAC,UAAU,EAAE;YACtB,OAAO,KAAK,CAAA;SACb;QACD,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,GAAqB;QACnC,OAAO,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,CAAA;IAC1C,CAAC;CACF;AACD,qBAAqB;AACrB,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,oBAAoB;AACpB,SAAS,CAAC,GAAG,GAAG,GAAG,CAAA;AACnB,SAAS,CAAC,SAAS,GAAG,SAAS,CAAA;AAC/B,SAAS,CAAC,MAAM,GAAG,MAAM,CAAA;AACzB,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAA","sourcesContent":["import expand from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { AST, ExtglobType } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\ntype Platform =\n | 'aix'\n | 'android'\n | 'darwin'\n | 'freebsd'\n | 'haiku'\n | 'linux'\n | 'openbsd'\n | 'sunos'\n | 'win32'\n | 'cygwin'\n | 'netbsd'\n\nexport interface MinimatchOptions {\n nobrace?: boolean\n nocomment?: boolean\n nonegate?: boolean\n debug?: boolean\n noglobstar?: boolean\n noext?: boolean\n nonull?: boolean\n windowsPathsNoEscape?: boolean\n allowWindowsEscape?: boolean\n partial?: boolean\n dot?: boolean\n nocase?: boolean\n nocaseMagicOnly?: boolean\n magicalBraces?: boolean\n matchBase?: boolean\n flipNegate?: boolean\n preserveMultipleSlashes?: boolean\n optimizationLevel?: number\n platform?: Platform\n windowsNoMagicRoot?: boolean\n}\n\nexport const minimatch = (\n p: string,\n pattern: string,\n options: MinimatchOptions = {}\n) => {\n assertValidPattern(pattern)\n\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false\n }\n\n return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n ext = ext.toLowerCase()\n return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n ext = ext.toLowerCase()\n return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) => !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) => f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) => f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExt([$0])\n if (!ext) return noext\n ext = ext.toLowerCase()\n return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExtDot([$0])\n if (!ext) return noext\n ext = ext.toLowerCase()\n return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExtDot([$0])\n return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n const noext = qmarksTestNoExt([$0])\n return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n const len = $0.length\n return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n const len = $0.length\n return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n typeof process === 'object' && process\n ? (typeof process.env === 'object' &&\n process.env &&\n process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n process.platform\n : 'posix'\n) as Platform\ntype Sep = '\\\\' | '/'\nconst path: { [k: string]: { sep: Sep } } = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n (pattern: string, options: MinimatchOptions = {}) =>\n (p: string) =>\n minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch\n }\n\n const orig = minimatch\n\n const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n orig(p, pattern, ext(def, options))\n\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern: string, options: MinimatchOptions = {}) {\n super(pattern, ext(def, options))\n }\n static defaults(options: MinimatchOptions) {\n return orig.defaults(ext(def, options)).Minimatch\n }\n },\n\n AST: class AST extends orig.AST {\n /* c8 ignore start */\n constructor(\n type: ExtglobType | null,\n parent?: AST,\n options: MinimatchOptions = {}\n ) {\n super(type, parent, ext(def, options))\n }\n /* c8 ignore stop */\n\n static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n return orig.AST.fromGlob(pattern, ext(def, options))\n }\n },\n\n unescape: (\n s: string,\n options: Pick<MinimatchOptions, 'windowsPathsNoEscape'> = {}\n ) => orig.unescape(s, ext(def, options)),\n\n escape: (\n s: string,\n options: Pick<MinimatchOptions, 'windowsPathsNoEscape'> = {}\n ) => orig.escape(s, ext(def, options)),\n\n filter: (pattern: string, options: MinimatchOptions = {}) =>\n orig.filter(pattern, ext(def, options)),\n\n defaults: (options: MinimatchOptions) => orig.defaults(ext(def, options)),\n\n makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n orig.makeRe(pattern, ext(def, options)),\n\n braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n orig.braceExpand(pattern, ext(def, options)),\n\n match: (list: string[], pattern: string, options: MinimatchOptions = {}) =>\n orig.match(list, pattern, ext(def, options)),\n\n sep: orig.sep,\n GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n pattern: string,\n options: MinimatchOptions = {}\n) => {\n assertValidPattern(pattern)\n\n // Thanks to Yeting Li <https://github.com/yetingli> for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern]\n }\n\n return expand(pattern)\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n list: string[],\n pattern: string,\n options: MinimatchOptions = {}\n) => {\n const mm = new Minimatch(pattern, options)\n list = list.filter(f => mm.match(f))\n if (mm.options.nonull && !list.length) {\n list.push(pattern)\n }\n return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n _src?: string\n _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n options: MinimatchOptions\n set: ParseReturnFiltered[][]\n pattern: string\n\n windowsPathsNoEscape: boolean\n nonegate: boolean\n negate: boolean\n comment: boolean\n empty: boolean\n preserveMultipleSlashes: boolean\n partial: boolean\n globSet: string[]\n globParts: string[][]\n nocase: boolean\n\n isWindows: boolean\n platform: Platform\n windowsNoMagicRoot: boolean\n\n regexp: false | null | MMRegExp\n constructor(pattern: string, options: MinimatchOptions = {}) {\n assertValidPattern(pattern)\n\n options = options || {}\n this.options = options\n this.pattern = pattern\n this.platform = options.platform || defaultPlatform\n this.isWindows = this.platform === 'win32'\n this.windowsPathsNoEscape =\n !!options.windowsPathsNoEscape || options.allowWindowsEscape === false\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/')\n }\n this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n this.regexp = null\n this.negate = false\n this.nonegate = !!options.nonegate\n this.comment = false\n this.empty = false\n this.partial = !!options.partial\n this.nocase = !!this.options.nocase\n this.windowsNoMagicRoot =\n options.windowsNoMagicRoot !== undefined\n ? options.windowsNoMagicRoot\n : !!(this.isWindows && this.nocase)\n\n this.globSet = []\n this.globParts = []\n this.set = []\n\n // make the set of regexps etc.\n this.make()\n }\n\n hasMagic(): boolean {\n if (this.options.magicalBraces && this.set.length > 1) {\n return true\n }\n for (const pattern of this.set) {\n for (const part of pattern) {\n if (typeof part !== 'string') return true\n }\n }\n return false\n }\n\n debug(..._: any[]) {}\n\n make() {\n const pattern = this.pattern\n const options = this.options\n\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true\n return\n }\n\n if (!pattern) {\n this.empty = true\n return\n }\n\n // step 1: figure out negation, etc.\n this.parseNegate()\n\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())]\n\n if (options.debug) {\n this.debug = (...args: any[]) => console.error(...args)\n }\n\n this.debug(this.pattern, this.globSet)\n\n // step 3: now we have a set, so turn each one into a series of\n // path-portion matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n //\n // First, we preprocess to make the glob pattern sets a bit simpler\n // and deduped. There are some perf-killing patterns that can cause\n // problems with a glob walk, but we can simplify them down a bit.\n const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n this.globParts = this.preprocess(rawGlobParts)\n this.debug(this.pattern, this.globParts)\n\n // glob --> regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC =\n s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3])\n const isDrive = /^[a-z]:/i.test(s[0])\n if (isUNC) {\n return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))]\n } else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n }\n }\n return s.map(ss => this.parse(ss))\n })\n\n this.debug(this.pattern, set)\n\n // filter out everything that didn't compile properly.\n this.set = set.filter(\n s => s.indexOf(false) === -1\n ) as ParseReturnFiltered[][]\n\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i]\n if (\n p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])\n ) {\n p[2] = '?'\n }\n }\n }\n\n this.debug(this.pattern, this.set)\n }\n\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts: string[][]) {\n // if we're not in globstar mode, then turn all ** into *\n if (this.options.noglobstar) {\n for (let i = 0; i < globParts.length; i++) {\n for (let j = 0; j < globParts[i].length; j++) {\n if (globParts[i][j] === '**') {\n globParts[i][j] = '*'\n }\n }\n }\n }\n\n const { optimizationLevel = 1 } = this.options\n\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts)\n globParts = this.secondPhasePreProcess(globParts)\n } else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts)\n } else {\n globParts = this.adjascentGlobstarOptimize(globParts)\n }\n\n return globParts\n }\n\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs\n while (parts[i + 1] === '**') {\n i++\n }\n if (i !== gs) {\n parts.splice(gs, i - gs)\n }\n }\n return parts\n })\n }\n\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts: string[][]) {\n return globParts.map(parts => {\n parts = parts.reduce((set: string[], part) => {\n const prev = set[set.length - 1]\n if (part === '**' && prev === '**') {\n return set\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop()\n return set\n }\n }\n set.push(part)\n return set\n }, [])\n return parts.length === 0 ? [''] : parts\n })\n }\n\n levelTwoFileOptimize(parts: string | string[]) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts)\n }\n let didSomething: boolean = false\n do {\n didSomething = false\n // <pre>/<e>/<rest> -> <pre>/<rest>\n if (!this.preserveMultipleSlashes) {\n for (let i = 1; i < parts.length - 1; i++) {\n const p = parts[i]\n // don't squeeze out UNC patterns\n if (i === 1 && p === '' && parts[0] === '') continue\n if (p === '.' || p === '') {\n didSomething = true\n parts.splice(i, 1)\n i--\n }\n }\n if (\n parts[0] === '.' &&\n parts.length === 2 &&\n (parts[1] === '.' || parts[1] === '')\n ) {\n didSomething = true\n parts.pop()\n }\n }\n\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n let dd: number = 0\n while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n const p = parts[dd - 1]\n if (p && p !== '.' && p !== '..' && p !== '**') {\n didSomething = true\n parts.splice(dd - 1, 2)\n dd -= 2\n }\n }\n } while (didSomething)\n return parts.length === 0 ? [''] : parts\n }\n\n // First phase: single-pattern processing\n // <pre> is 1 or more portions\n // <rest> is 1 or more portions\n // <p> is any portion other than ., .., '', or **\n // <e> is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n // <pre>/<e>/<rest> -> <pre>/<rest>\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n // **/**/<rest> -> **/<rest>\n //\n // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow\n // this WOULD be allowed if ** did follow symlinks, or * didn't\n firstPhasePreProcess(globParts: string[][]) {\n let didSomething = false\n do {\n didSomething = false\n // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n for (let parts of globParts) {\n let gs: number = -1\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss: number = gs\n while (parts[gss + 1] === '**') {\n // <pre>/**/**/<rest> -> <pre>/**/<rest>\n gss++\n }\n // eg, if gs is 2 and gss is 4, that means we have 3 **\n // parts, and can remove 2 of them.\n if (gss > gs) {\n parts.splice(gs + 1, gss - gs)\n }\n\n let next = parts[gs + 1]\n const p = parts[gs + 2]\n const p2 = parts[gs + 3]\n if (next !== '..') continue\n if (\n !p ||\n p === '.' ||\n p === '..' ||\n !p2 ||\n p2 === '.' ||\n p2 === '..'\n ) {\n continue\n }\n didSomething = true\n // edit parts in place, and push the new one\n parts.splice(gs, 1)\n const other = parts.slice(0)\n other[gs] = '**'\n globParts.push(other)\n gs--\n }\n\n // <pre>/<e>/<rest> -> <pre>/<rest>\n if (!this.preserveMultipleSlashes) {\n for (let i = 1; i < parts.length - 1; i++) {\n const p = parts[i]\n // don't squeeze out UNC patterns\n if (i === 1 && p === '' && parts[0] === '') continue\n if (p === '.' || p === '') {\n didSomething = true\n parts.splice(i, 1)\n i--\n }\n }\n if (\n parts[0] === '.' &&\n parts.length === 2 &&\n (parts[1] === '.' || parts[1] === '')\n ) {\n didSomething = true\n parts.pop()\n }\n }\n\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n let dd: number = 0\n while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n const p = parts[dd - 1]\n if (p && p !== '.' && p !== '..' && p !== '**') {\n didSomething = true\n const needDot = dd === 1 && parts[dd + 1] === '**'\n const splin = needDot ? ['.'] : []\n parts.splice(dd - 1, 2, ...splin)\n if (parts.length === 0) parts.push('')\n dd -= 2\n }\n }\n }\n } while (didSomething)\n\n return globParts\n }\n\n // second phase: multi-pattern dedupes\n // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest>\n // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest>\n // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest>\n //\n // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest>\n // ^-- not valid because ** doens't follow symlinks\n secondPhasePreProcess(globParts: string[][]): string[][] {\n for (let i = 0; i < globParts.length - 1; i++) {\n for (let j = i + 1; j < globParts.length; j++) {\n const matched = this.partsMatch(\n globParts[i],\n globParts[j],\n !this.preserveMultipleSlashes\n )\n if (!matched) continue\n globParts[i] = matched\n globParts[j] = []\n }\n }\n return globParts.filter(gs => gs.length)\n }\n\n partsMatch(\n a: string[],\n b: string[],\n emptyGSMatch: boolean = false\n ): false | string[] {\n let ai = 0\n let bi = 0\n let result: string[] = []\n let which: string = ''\n while (ai < a.length && bi < b.length) {\n if (a[ai] === b[bi]) {\n result.push(which === 'b' ? b[bi] : a[ai])\n ai++\n bi++\n } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n result.push(a[ai])\n ai++\n } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n result.push(b[bi])\n bi++\n } else if (\n a[ai] === '*' &&\n b[bi] &&\n (this.options.dot || !b[bi].startsWith('.')) &&\n b[bi] !== '**'\n ) {\n if (which === 'b') return false\n which = 'a'\n result.push(a[ai])\n ai++\n bi++\n } else if (\n b[bi] === '*' &&\n a[ai] &&\n (this.options.dot || !a[ai].startsWith('.')) &&\n a[ai] !== '**'\n ) {\n if (which === 'a') return false\n which = 'b'\n result.push(b[bi])\n ai++\n bi++\n } else {\n return false\n }\n }\n // if we fall out of the loop, it means they two are identical\n // as long as their lengths match\n return a.length === b.length && result\n }\n\n parseNegate() {\n if (this.nonegate) return\n\n const pattern = this.pattern\n let negate = false\n let negateOffset = 0\n\n for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n negate = !negate\n negateOffset++\n }\n\n if (negateOffset) this.pattern = pattern.slice(negateOffset)\n this.negate = negate\n }\n\n // set partial to true to test if, for example,\n // \"/a/b\" matches the start of \"/*/b/*/d\"\n // Partial means, if you run out of file before you run\n // out of pattern, then that's fine, as long as all\n // the parts match.\n matchOne(file: string[], pattern: ParseReturn[], partial: boolean = false) {\n const options = this.options\n\n // UNC paths like //?/X:/... can match X:/... and vice versa\n // Drive letters in absolute drive or unc paths are always compared\n // case-insensitively.\n if (this.isWindows) {\n const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n const fileUNC =\n !fileDrive &&\n file[0] === '' &&\n file[1] === '' &&\n file[2] === '?' &&\n /^[a-z]:$/i.test(file[3])\n\n const patternDrive =\n typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n const patternUNC =\n !patternDrive &&\n pattern[0] === '' &&\n pattern[1] === '' &&\n pattern[2] === '?' &&\n typeof pattern[3] === 'string' &&\n /^[a-z]:$/i.test(pattern[3])\n\n const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined\n const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined\n if (typeof fdi === 'number' && typeof pdi === 'number') {\n const [fd, pd]: [string, string] = [file[fdi], pattern[pdi] as string]\n if (fd.toLowerCase() === pd.toLowerCase()) {\n pattern[pdi] = fd\n if (pdi > fdi) {\n pattern = pattern.slice( pdi)\n } else if (fdi > pdi) {\n file = file.slice(fdi)\n }\n }\n }\n }\n\n // resolve and reduce . and .. portions in the file as well.\n // dont' need to do the second phase, because it's only one string[]\n const { optimizationLevel = 1 } = this.options\n if (optimizationLevel >= 2) {\n file = this.levelTwoFileOptimize(file)\n }\n\n this.debug('matchOne', this, { file, pattern })\n this.debug('matchOne', file.length, pattern.length)\n\n for (\n var fi = 0, pi = 0, fl = file.length, pl = pattern.length;\n fi < fl && pi < pl;\n fi++, pi++\n ) {\n this.debug('matchOne loop')\n var p = pattern[pi]\n var f = file[fi]\n\n this.debug(pattern, p, f)\n\n // should be impossible.\n // some invalid regexp stuff in the set.\n /* c8 ignore start */\n if (p === false) {\n return false\n }\n /* c8 ignore stop */\n\n if (p === GLOBSTAR) {\n this.debug('GLOBSTAR', [pattern, p, f])\n\n // \"**\"\n // a/**/b/**/c would match the following:\n // a/b/x/y/z/c\n // a/x/y/z/b/c\n // a/b/x/b/x/c\n // a/b/c\n // To do this, take the rest of the pattern after\n // the **, and see if it would match the file remainder.\n // If so, return success.\n // If not, the ** \"swallows\" a segment, and try again.\n // This is recursively awful.\n //\n // a/**/b/**/c matching a/b/x/y/z/c\n // - a matches a\n // - doublestar\n // - matchOne(b/x/y/z/c, b/**/c)\n // - b matches b\n // - doublestar\n // - matchOne(x/y/z/c, c) -> no\n // - matchOne(y/z/c, c) -> no\n // - matchOne(z/c, c) -> no\n // - matchOne(c, c) yes, hit\n var fr = fi\n var pr = pi + 1\n if (pr === pl) {\n this.debug('** at the end')\n // a ** at the end will just swallow the rest.\n // We have found a match.\n // however, it will not swallow /.x, unless\n // options.dot is set.\n // . and .. are *never* matched by **, for explosively\n // exponential reasons.\n for (; fi < fl; fi++) {\n if (\n file[fi] === '.' ||\n file[fi] === '..' ||\n (!options.dot && file[fi].charAt(0) === '.')\n )\n return false\n }\n return true\n }\n\n // ok, let's see if we can swallow whatever we can.\n while (fr < fl) {\n var swallowee = file[fr]\n\n this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n // XXX remove this slice. Just pass the start index.\n if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n this.debug('globstar found match!', fr, fl, swallowee)\n // found a match.\n return true\n } else {\n // can't swallow \".\" or \"..\" ever.\n // can only swallow \".foo\" when explicitly asked.\n if (\n swallowee === '.' ||\n swallowee === '..' ||\n (!options.dot && swallowee.charAt(0) === '.')\n ) {\n this.debug('dot detected!', file, fr, pattern, pr)\n break\n }\n\n // ** swallows a segment, and continue.\n this.debug('globstar swallow a segment, and continue')\n fr++\n }\n }\n\n // no match was found.\n // However, in partial mode, we can't say this is necessarily over.\n /* c8 ignore start */\n if (partial) {\n // ran out of file\n this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n if (fr === fl) {\n return true\n }\n }\n /* c8 ignore stop */\n return false\n }\n\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n let hit: boolean\n if (typeof p === 'string') {\n hit = f === p\n this.debug('string match', p, f, hit)\n } else {\n hit = p.test(f)\n this.debug('pattern match', p, f, hit)\n }\n\n if (!hit) return false\n }\n\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true\n } else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial\n } else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n return fi === fl - 1 && file[fi] === ''\n\n /* c8 ignore start */\n } else {\n // should be unreachable.\n throw new Error('wtf?')\n }\n /* c8 ignore stop */\n }\n\n braceExpand() {\n return braceExpand(this.pattern, this.options)\n }\n\n parse(pattern: string): ParseReturn {\n assertValidPattern(pattern)\n\n const options = this.options\n\n // shortcuts\n if (pattern === '**') return GLOBSTAR\n if (pattern === '') return ''\n\n // far and away, the most common glob pattern parts are\n // *, *.*, and *.<ext> Add a fast check method for those.\n let m: RegExpMatchArray | null\n let fastTest: null | ((f: string) => boolean) = null\n if ((m = pattern.match(starRE))) {\n fastTest = options.dot ? starTestDot : starTest\n } else if ((m = pattern.match(starDotExtRE))) {\n fastTest = (\n options.nocase\n ? options.dot\n ? starDotExtTestNocaseDot\n : starDotExtTestNocase\n : options.dot\n ? starDotExtTestDot\n : starDotExtTest\n )(m[1])\n } else if ((m = pattern.match(qmarksRE))) {\n fastTest = (\n options.nocase\n ? options.dot\n ? qmarksTestNocaseDot\n : qmarksTestNocase\n : options.dot\n ? qmarksTestDot\n : qmarksTest\n )(m)\n } else if ((m = pattern.match(starDotStarRE))) {\n fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n } else if ((m = pattern.match(dotStarRE))) {\n fastTest = dotStarTest\n }\n\n const re = AST.fromGlob(pattern, this.options).toMMPattern()\n return fastTest ? Object.assign(re, { test: fastTest }) : re\n }\n\n makeRe() {\n if (this.regexp || this.regexp === false) return this.regexp\n\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n const set = this.set\n\n if (!set.length) {\n this.regexp = false\n return this.regexp\n }\n const options = this.options\n\n const twoStar = options.noglobstar\n ? star\n : options.dot\n ? twoStarDot\n : twoStarNoDot\n const flags = new Set(options.nocase ? ['i'] : [])\n\n // regexpify non-globstar patterns\n // if ** is only item, then we just do one twoStar\n // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n // if ** is last, append (\\/twoStar|) to previous\n // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n // then filter out GLOBSTAR symbols\n let re = set\n .map(pattern => {\n const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n if (p instanceof RegExp) {\n for (const f of p.flags.split('')) flags.add(f)\n }\n return typeof p === 'string'\n ? regExpEscape(p)\n : p === GLOBSTAR\n ? GLOBSTAR\n : p._src\n }) as (string | typeof GLOBSTAR)[]\n pp.forEach((p, i) => {\n const next = pp[i + 1]\n const prev = pp[i - 1]\n if (p !== GLOBSTAR || prev === GLOBSTAR) {\n return\n }\n if (prev === undefined) {\n if (next !== undefined && next !== GLOBSTAR) {\n pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n } else {\n pp[i] = twoStar\n }\n } else if (next === undefined) {\n pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?'\n } else if (next !== GLOBSTAR) {\n pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n pp[i + 1] = GLOBSTAR\n }\n })\n return pp.filter(p => p !== GLOBSTAR).join('/')\n })\n .join('|')\n\n // need to wrap in parens if we had more than one thing with |,\n // otherwise only the first will be anchored to ^ and the last to $\n const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^' + open + re + close + '$'\n\n // can match anything, as long as it's not this.\n if (this.negate) re = '^(?!' + re + ').+$'\n\n try {\n this.regexp = new RegExp(re, [...flags].join(''))\n /* c8 ignore start */\n } catch (ex) {\n // should be impossible\n this.regexp = false\n }\n /* c8 ignore stop */\n return this.regexp\n }\n\n slashSplit(p: string) {\n // if p starts with // on windows, we preserve that\n // so that UNC paths aren't broken. Otherwise, any number of\n // / characters are coalesced into one, unless\n // preserveMultipleSlashes is set to true.\n if (this.preserveMultipleSlashes) {\n return p.split('/')\n } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n // add an extra '' for the one we lose\n return ['', ...p.split(/\\/+/)]\n } else {\n return p.split(/\\/+/)\n }\n }\n\n match(f: string, partial = this.partial) {\n this.debug('match', f, this.pattern)\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) {\n return false\n }\n if (this.empty) {\n return f === ''\n }\n\n if (f === '/' && partial) {\n return true\n }\n\n const options = this.options\n\n // windows: need to use /, not \\\n if (this.isWindows) {\n f = f.split('\\\\').join('/')\n }\n\n // treat the test path as a set of pathparts.\n const ff = this.slashSplit(f)\n this.debug(this.pattern, 'split', ff)\n\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n\n const set = this.set\n this.debug(this.pattern, 'set', set)\n\n // Find the basename of the path by looking for the last non-empty segment\n let filename: string = ff[ff.length - 1]\n if (!filename) {\n for (let i = ff.length - 2; !filename && i >= 0; i--) {\n filename = ff[i]\n }\n }\n\n for (let i = 0; i < set.length; i++) {\n const pattern = set[i]\n let file = ff\n if (options.matchBase && pattern.length === 1) {\n file = [filename]\n }\n const hit = this.matchOne(file, pattern, partial)\n if (hit) {\n if (options.flipNegate) {\n return true\n }\n return !this.negate\n }\n }\n\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) {\n return false\n }\n return this.negate\n }\n\n static defaults(def: MinimatchOptions) {\n return minimatch.defaults(def).Minimatch\n }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n"]} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/package.json b/node_modules/minimatch/dist/mjs/package.json
new file mode 100644
index 0000000..3dbc1ca
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/package.json
@@ -0,0 +1,3 @@
+{
+ "type": "module"
+}
diff --git a/node_modules/minimatch/dist/mjs/unescape.d.ts b/node_modules/minimatch/dist/mjs/unescape.d.ts
new file mode 100644
index 0000000..23a7b38
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/unescape.d.ts
@@ -0,0 +1,17 @@
+import { MinimatchOptions } from './index.js';
+/**
+ * Un-escape a string that has been escaped with {@link escape}.
+ *
+ * If the {@link windowsPathsNoEscape} option is used, then square-brace
+ * escapes are removed, but not backslash escapes. For example, it will turn
+ * the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`,
+ * becuase `\` is a path separator in `windowsPathsNoEscape` mode.
+ *
+ * When `windowsPathsNoEscape` is not set, then both brace escapes and
+ * backslash escapes are removed.
+ *
+ * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped
+ * or unescaped.
+ */
+export declare const unescape: (s: string, { windowsPathsNoEscape, }?: Pick<MinimatchOptions, 'windowsPathsNoEscape'>) => string;
+//# sourceMappingURL=unescape.d.ts.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/unescape.d.ts.map b/node_modules/minimatch/dist/mjs/unescape.d.ts.map
new file mode 100644
index 0000000..7ace070
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/unescape.d.ts.map
@@ -0,0 +1 @@
+{"version":3,"file":"unescape.d.ts","sourceRoot":"","sources":["../../src/unescape.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAC7C;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,QAAQ,MAChB,MAAM,8BAGN,KAAK,gBAAgB,EAAE,sBAAsB,CAAC,WAKlD,CAAA"} \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/unescape.js b/node_modules/minimatch/dist/mjs/unescape.js
new file mode 100644
index 0000000..0faf9a2
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/unescape.js
@@ -0,0 +1,20 @@
+/**
+ * Un-escape a string that has been escaped with {@link escape}.
+ *
+ * If the {@link windowsPathsNoEscape} option is used, then square-brace
+ * escapes are removed, but not backslash escapes. For example, it will turn
+ * the string `'[*]'` into `*`, but it will not turn `'\\*'` into `'*'`,
+ * becuase `\` is a path separator in `windowsPathsNoEscape` mode.
+ *
+ * When `windowsPathsNoEscape` is not set, then both brace escapes and
+ * backslash escapes are removed.
+ *
+ * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped
+ * or unescaped.
+ */
+export const unescape = (s, { windowsPathsNoEscape = false, } = {}) => {
+ return windowsPathsNoEscape
+ ? s.replace(/\[([^\/\\])\]/g, '$1')
+ : s.replace(/((?!\\).|^)\[([^\/\\])\]/g, '$1$2').replace(/\\([^\/])/g, '$1');
+};
+//# sourceMappingURL=unescape.js.map \ No newline at end of file
diff --git a/node_modules/minimatch/dist/mjs/unescape.js.map b/node_modules/minimatch/dist/mjs/unescape.js.map
new file mode 100644
index 0000000..eb146c2
--- /dev/null
+++ b/node_modules/minimatch/dist/mjs/unescape.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"unescape.js","sourceRoot":"","sources":["../../src/unescape.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,CAAS,EACT,EACE,oBAAoB,GAAG,KAAK,MACsB,EAAE,EACtD,EAAE;IACF,OAAO,oBAAoB;QACzB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;QACnC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;AAChF,CAAC,CAAA","sourcesContent":["import { MinimatchOptions } from './index.js'\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes. For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (\n s: string,\n {\n windowsPathsNoEscape = false,\n }: Pick<MinimatchOptions, 'windowsPathsNoEscape'> = {}\n) => {\n return windowsPathsNoEscape\n ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1')\n}\n"]} \ No newline at end of file
diff --git a/node_modules/minimatch/package.json b/node_modules/minimatch/package.json
new file mode 100644
index 0000000..061c3b9
--- /dev/null
+++ b/node_modules/minimatch/package.json
@@ -0,0 +1,86 @@
+{
+ "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me)",
+ "name": "minimatch",
+ "description": "a glob matcher in javascript",
+ "version": "9.0.3",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/isaacs/minimatch.git"
+ },
+ "main": "./dist/cjs/index.js",
+ "module": "./dist/mjs/index.js",
+ "types": "./dist/cjs/index.d.ts",
+ "exports": {
+ ".": {
+ "import": {
+ "types": "./dist/mjs/index.d.ts",
+ "default": "./dist/mjs/index.js"
+ },
+ "require": {
+ "types": "./dist/cjs/index.d.ts",
+ "default": "./dist/cjs/index.js"
+ }
+ }
+ },
+ "files": [
+ "dist"
+ ],
+ "scripts": {
+ "preversion": "npm test",
+ "postversion": "npm publish",
+ "prepublishOnly": "git push origin --follow-tags",
+ "preprepare": "rm -rf dist",
+ "prepare": "tsc -p tsconfig.json && tsc -p tsconfig-esm.json",
+ "postprepare": "bash fixup.sh",
+ "pretest": "npm run prepare",
+ "presnap": "npm run prepare",
+ "test": "c8 tap",
+ "snap": "c8 tap",
+ "format": "prettier --write . --loglevel warn",
+ "benchmark": "node benchmark/index.js",
+ "typedoc": "typedoc --tsconfig tsconfig-esm.json ./src/*.ts"
+ },
+ "prettier": {
+ "semi": false,
+ "printWidth": 80,
+ "tabWidth": 2,
+ "useTabs": false,
+ "singleQuote": true,
+ "jsxSingleQuote": false,
+ "bracketSameLine": true,
+ "arrowParens": "avoid",
+ "endOfLine": "lf"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "devDependencies": {
+ "@types/brace-expansion": "^1.1.0",
+ "@types/node": "^18.15.11",
+ "@types/tap": "^15.0.8",
+ "c8": "^7.12.0",
+ "eslint-config-prettier": "^8.6.0",
+ "mkdirp": "1",
+ "prettier": "^2.8.2",
+ "tap": "^16.3.7",
+ "ts-node": "^10.9.1",
+ "typedoc": "^0.23.21",
+ "typescript": "^4.9.3"
+ },
+ "tap": {
+ "coverage": false,
+ "node-arg": [
+ "--no-warnings",
+ "--loader",
+ "ts-node/esm"
+ ],
+ "ts": false
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "license": "ISC"
+}
diff --git a/node_modules/prettier/LICENSE b/node_modules/prettier/LICENSE
new file mode 100644
index 0000000..5767e34
--- /dev/null
+++ b/node_modules/prettier/LICENSE
@@ -0,0 +1,7 @@
+Copyright © James Long and contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/node_modules/prettier/README.md b/node_modules/prettier/README.md
new file mode 100644
index 0000000..dda2636
--- /dev/null
+++ b/node_modules/prettier/README.md
@@ -0,0 +1,107 @@
+![Prettier Banner](https://raw.githubusercontent.com/prettier/prettier-logo/master/images/prettier-banner-light.png)
+
+<h2 align="center">Opinionated Code Formatter</h2>
+
+<p align="center">
+ <em>
+ JavaScript
+ · TypeScript
+ · Flow
+ · JSX
+ · JSON
+ </em>
+ <br />
+ <em>
+ CSS
+ · SCSS
+ · Less
+ </em>
+ <br />
+ <em>
+ HTML
+ · Vue
+ · Angular
+ </em>
+ <br />
+ <em>
+ GraphQL
+ · Markdown
+ · YAML
+ </em>
+ <br />
+ <em>
+ <a href="https://prettier.io/docs/en/plugins.html">
+ Your favorite language?
+ </a>
+ </em>
+</p>
+
+<p align="center">
+ <a href="https://dev.azure.com/prettier/prettier/_build/latest?definitionId=5">
+ <img alt="Azure Pipelines Build Status" src="https://img.shields.io/azure-devops/build/prettier/79013671-677c-4846-a6d8-3050d40e21c0/5.svg?style=flat-square&label=build&branchName=master"></a>
+ <a href="https://codecov.io/gh/prettier/prettier">
+ <img alt="Codecov Coverage Status" src="https://img.shields.io/codecov/c/github/prettier/prettier.svg?style=flat-square"></a>
+ <a href="https://twitter.com/acdlite/status/974390255393505280">
+ <img alt="Blazing Fast" src="https://img.shields.io/badge/speed-blazing%20%F0%9F%94%A5-brightgreen.svg?style=flat-square"></a>
+ <br/>
+ <a href="https://www.npmjs.com/package/prettier">
+ <img alt="npm version" src="https://img.shields.io/npm/v/prettier.svg?style=flat-square"></a>
+ <a href="https://www.npmjs.com/package/prettier">
+ <img alt="weekly downloads from npm" src="https://img.shields.io/npm/dw/prettier.svg?style=flat-square"></a>
+ <a href="#badge">
+ <img alt="code style: prettier" src="https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square"></a>
+ <a href="https://gitter.im/jlongster/prettier">
+ <img alt="Chat on Gitter" src="https://img.shields.io/gitter/room/jlongster/prettier.svg?style=flat-square"></a>
+ <a href="https://twitter.com/PrettierCode">
+ <img alt="Follow Prettier on Twitter" src="https://img.shields.io/twitter/follow/prettiercode.svg?label=follow+prettier&style=flat-square"></a>
+</p>
+
+## Intro
+
+Prettier is an opinionated code formatter. It enforces a consistent style by parsing your code and re-printing it with its own rules that take the maximum line length into account, wrapping code when necessary.
+
+### Input
+
+<!-- prettier-ignore -->
+```js
+foo(reallyLongArg(), omgSoManyParameters(), IShouldRefactorThis(), isThereSeriouslyAnotherOne());
+```
+
+### Output
+
+```js
+foo(
+ reallyLongArg(),
+ omgSoManyParameters(),
+ IShouldRefactorThis(),
+ isThereSeriouslyAnotherOne()
+);
+```
+
+Prettier can be run [in your editor](http://prettier.io/docs/en/editors.html) on-save, in a [pre-commit hook](https://prettier.io/docs/en/precommit.html), or in [CI environments](https://prettier.io/docs/en/cli.html#list-different) to ensure your codebase has a consistent style without devs ever having to post a nit-picky comment on a code review ever again!
+
+---
+
+**[Documentation](https://prettier.io/docs/en/)**
+
+<!-- prettier-ignore -->
+[Install](https://prettier.io/docs/en/install.html) ·
+[Options](https://prettier.io/docs/en/options.html) ·
+[CLI](https://prettier.io/docs/en/cli.html) ·
+[API](https://prettier.io/docs/en/api.html)
+
+**[Playground](https://prettier.io/playground/)**
+
+---
+
+## Badge
+
+Show the world you're using _Prettier_ → [![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
+
+```md
+[![code style: prettier](https://img.shields.io/badge/code_style-prettier-ff69b4.svg?style=flat-square)](https://github.com/prettier/prettier)
+```
+
+## Contributing
+
+See [CONTRIBUTING.md](CONTRIBUTING.md).
diff --git a/node_modules/prettier/bin-prettier.js b/node_modules/prettier/bin-prettier.js
new file mode 100755
index 0000000..ee54d65
--- /dev/null
+++ b/node_modules/prettier/bin-prettier.js
@@ -0,0 +1,46328 @@
+#!/usr/bin/env node
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var fs$1 = _interopDefault(require('fs'));
+var os$1 = _interopDefault(require('os'));
+var path$2 = _interopDefault(require('path'));
+var assert$1 = _interopDefault(require('assert'));
+var util$3 = _interopDefault(require('util'));
+var events$1 = _interopDefault(require('events'));
+var readline$1 = _interopDefault(require('readline'));
+
+var name = "prettier";
+var version = "1.19.1";
+var description = "Prettier is an opinionated code formatter";
+var bin = {
+ prettier: "./bin/prettier.js"
+};
+var repository = "prettier/prettier";
+var homepage = "https://prettier.io";
+var author = "James Long";
+var license = "MIT";
+var main = "./index.js";
+var engines = {
+ node: ">=8"
+};
+var dependencies = {
+ "@angular/compiler": "8.2.13",
+ "@babel/code-frame": "7.5.5",
+ "@babel/parser": "7.7.3",
+ "@glimmer/syntax": "0.41.0",
+ "@iarna/toml": "2.2.3",
+ "@typescript-eslint/typescript-estree": "2.6.1",
+ "angular-estree-parser": "1.1.5",
+ "angular-html-parser": "1.3.0",
+ camelcase: "5.3.1",
+ chalk: "2.4.2",
+ "cjk-regex": "2.0.0",
+ cosmiconfig: "5.2.1",
+ dashify: "2.0.0",
+ dedent: "0.7.0",
+ diff: "4.0.1",
+ editorconfig: "0.15.3",
+ "editorconfig-to-prettier": "0.1.1",
+ "escape-string-regexp": "1.0.5",
+ esutils: "2.0.3",
+ "find-parent-dir": "0.3.0",
+ "find-project-root": "1.1.1",
+ "flow-parser": "0.111.3",
+ "get-stream": "4.1.0",
+ globby: "6.1.0",
+ graphql: "14.5.8",
+ "html-element-attributes": "2.2.0",
+ "html-styles": "1.0.0",
+ "html-tag-names": "1.1.4",
+ ignore: "4.0.6",
+ "is-ci": "2.0.0",
+ "jest-docblock": "24.9.0",
+ "json-stable-stringify": "1.0.1",
+ leven: "3.1.0",
+ "lines-and-columns": "1.1.6",
+ "linguist-languages": "7.6.0",
+ "lodash.uniqby": "4.7.0",
+ mem: "5.1.1",
+ minimatch: "3.0.4",
+ minimist: "1.2.0",
+ "n-readlines": "1.0.0",
+ "normalize-path": "3.0.0",
+ "parse-srcset": "ikatyang/parse-srcset#54eb9c1cb21db5c62b4d0e275d7249516df6f0ee",
+ "postcss-less": "2.0.0",
+ "postcss-media-query-parser": "0.2.3",
+ "postcss-scss": "2.0.0",
+ "postcss-selector-parser": "2.2.3",
+ "postcss-values-parser": "1.5.0",
+ "regexp-util": "1.2.2",
+ "remark-math": "1.0.6",
+ "remark-parse": "5.0.0",
+ resolve: "1.12.0",
+ semver: "6.3.0",
+ "string-width": "4.1.0",
+ typescript: "3.7.2",
+ "unicode-regex": "3.0.0",
+ unified: "8.4.1",
+ vnopts: "1.0.2",
+ "yaml-unist-parser": "1.1.1"
+};
+var devDependencies = {
+ "@babel/core": "7.7.2",
+ "@babel/preset-env": "7.7.1",
+ "@rollup/plugin-alias": "2.2.0",
+ "@rollup/plugin-replace": "2.2.1",
+ "babel-loader": "8.0.6",
+ benchmark: "2.1.4",
+ "builtin-modules": "3.1.0",
+ codecov: "3.6.1",
+ "cross-env": "6.0.3",
+ eslint: "6.6.0",
+ "eslint-config-prettier": "6.5.0",
+ "eslint-formatter-friendly": "7.0.0",
+ "eslint-plugin-import": "2.18.2",
+ "eslint-plugin-prettier": "3.1.1",
+ "eslint-plugin-react": "7.16.0",
+ execa: "3.2.0",
+ jest: "23.3.0",
+ "jest-junit": "9.0.0",
+ "jest-snapshot-serializer-ansi": "1.0.0",
+ "jest-snapshot-serializer-raw": "1.1.0",
+ "jest-watch-typeahead": "0.4.0",
+ mkdirp: "0.5.1",
+ prettier: "1.19.0",
+ prettylint: "1.0.0",
+ rimraf: "3.0.0",
+ rollup: "1.26.3",
+ "rollup-plugin-babel": "4.3.3",
+ "rollup-plugin-commonjs": "10.1.0",
+ "rollup-plugin-json": "4.0.0",
+ "rollup-plugin-node-globals": "1.4.0",
+ "rollup-plugin-node-resolve": "5.2.0",
+ "rollup-plugin-terser": "5.1.2",
+ shelljs: "0.8.3",
+ "snapshot-diff": "0.4.0",
+ "strip-ansi": "5.2.0",
+ "synchronous-promise": "2.0.10",
+ tempy: "0.2.1",
+ "terser-webpack-plugin": "2.2.1",
+ webpack: "4.41.2"
+};
+var scripts = {
+ prepublishOnly: "echo \"Error: must publish from dist/\" && exit 1",
+ "prepare-release": "yarn && yarn build && yarn test:dist",
+ test: "jest",
+ "test:dist": "node ./scripts/test-dist.js",
+ "test-integration": "jest tests_integration",
+ "perf-repeat": "yarn && yarn build && cross-env NODE_ENV=production node ./dist/bin-prettier.js --debug-repeat ${PERF_REPEAT:-1000} --loglevel debug ${PERF_FILE:-./index.js} > /dev/null",
+ "perf-repeat-inspect": "yarn && yarn build && cross-env NODE_ENV=production node --inspect-brk ./dist/bin-prettier.js --debug-repeat ${PERF_REPEAT:-1000} --loglevel debug ${PERF_FILE:-./index.js} > /dev/null",
+ "perf-benchmark": "yarn && yarn build && cross-env NODE_ENV=production node ./dist/bin-prettier.js --debug-benchmark --loglevel debug ${PERF_FILE:-./index.js} > /dev/null",
+ "check-types": "tsc",
+ lint: "cross-env EFF_NO_LINK_RULES=true eslint . --format friendly",
+ "lint-docs": "prettylint {.,docs,website,website/blog}/*.md",
+ "lint-dist": "eslint --no-eslintrc --no-ignore --env=browser \"dist/!(bin-prettier|index|third-party).js\"",
+ build: "node --max-old-space-size=3072 ./scripts/build/build.js",
+ "build-docs": "node ./scripts/build-docs.js",
+ "check-deps": "node ./scripts/check-deps.js",
+ spellcheck: "npx -p cspell@4.0.31 cspell {bin,scripts,src}/**/*.js {docs,website/blog,changelog_unreleased}/**/*.md"
+};
+var _package = {
+ name: name,
+ version: version,
+ description: description,
+ bin: bin,
+ repository: repository,
+ homepage: homepage,
+ author: author,
+ license: license,
+ main: main,
+ engines: engines,
+ dependencies: dependencies,
+ devDependencies: devDependencies,
+ scripts: scripts
+};
+
+var _package$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name,
+ version: version,
+ description: description,
+ bin: bin,
+ repository: repository,
+ homepage: homepage,
+ author: author,
+ license: license,
+ main: main,
+ engines: engines,
+ dependencies: dependencies,
+ devDependencies: devDependencies,
+ scripts: scripts,
+ 'default': _package
+});
+
+function Diff() {}
+
+Diff.prototype = {
+ diff: function diff(oldString, newString) {
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+ var callback = options.callback;
+
+ if (typeof options === 'function') {
+ callback = options;
+ options = {};
+ }
+
+ this.options = options;
+ var self = this;
+
+ function done(value) {
+ if (callback) {
+ setTimeout(function () {
+ callback(undefined, value);
+ }, 0);
+ return true;
+ } else {
+ return value;
+ }
+ } // Allow subclasses to massage the input prior to running
+
+
+ oldString = this.castInput(oldString);
+ newString = this.castInput(newString);
+ oldString = this.removeEmpty(this.tokenize(oldString));
+ newString = this.removeEmpty(this.tokenize(newString));
+ var newLen = newString.length,
+ oldLen = oldString.length;
+ var editLength = 1;
+ var maxEditLength = newLen + oldLen;
+ var bestPath = [{
+ newPos: -1,
+ components: []
+ }]; // Seed editLength = 0, i.e. the content starts with the same values
+
+ var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
+
+ if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
+ // Identity per the equality and tokenizer
+ return done([{
+ value: this.join(newString),
+ count: newString.length
+ }]);
+ } // Main worker method. checks all permutations of a given edit length for acceptance.
+
+
+ function execEditLength() {
+ for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
+ var basePath = void 0;
+
+ var addPath = bestPath[diagonalPath - 1],
+ removePath = bestPath[diagonalPath + 1],
+ _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
+
+ if (addPath) {
+ // No one else is going to attempt to use this value, clear it
+ bestPath[diagonalPath - 1] = undefined;
+ }
+
+ var canAdd = addPath && addPath.newPos + 1 < newLen,
+ canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;
+
+ if (!canAdd && !canRemove) {
+ // If this path is a terminal then prune
+ bestPath[diagonalPath] = undefined;
+ continue;
+ } // Select the diagonal that we want to branch from. We select the prior
+ // path whose position in the new string is the farthest from the origin
+ // and does not pass the bounds of the diff graph
+
+
+ if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {
+ basePath = clonePath(removePath);
+ self.pushComponent(basePath.components, undefined, true);
+ } else {
+ basePath = addPath; // No need to clone, we've pulled it from the list
+
+ basePath.newPos++;
+ self.pushComponent(basePath.components, true, undefined);
+ }
+
+ _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done
+
+ if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {
+ return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));
+ } else {
+ // Otherwise track this path as a potential candidate and continue.
+ bestPath[diagonalPath] = basePath;
+ }
+ }
+
+ editLength++;
+ } // Performs the length of edit iteration. Is a bit fugly as this has to support the
+ // sync and async mode which is never fun. Loops over execEditLength until a value
+ // is produced.
+
+
+ if (callback) {
+ (function exec() {
+ setTimeout(function () {
+ // This should not happen, but we want to be safe.
+
+ /* istanbul ignore next */
+ if (editLength > maxEditLength) {
+ return callback();
+ }
+
+ if (!execEditLength()) {
+ exec();
+ }
+ }, 0);
+ })();
+ } else {
+ while (editLength <= maxEditLength) {
+ var ret = execEditLength();
+
+ if (ret) {
+ return ret;
+ }
+ }
+ }
+ },
+ pushComponent: function pushComponent(components, added, removed) {
+ var last = components[components.length - 1];
+
+ if (last && last.added === added && last.removed === removed) {
+ // We need to clone here as the component clone operation is just
+ // as shallow array clone
+ components[components.length - 1] = {
+ count: last.count + 1,
+ added: added,
+ removed: removed
+ };
+ } else {
+ components.push({
+ count: 1,
+ added: added,
+ removed: removed
+ });
+ }
+ },
+ extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {
+ var newLen = newString.length,
+ oldLen = oldString.length,
+ newPos = basePath.newPos,
+ oldPos = newPos - diagonalPath,
+ commonCount = 0;
+
+ while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
+ newPos++;
+ oldPos++;
+ commonCount++;
+ }
+
+ if (commonCount) {
+ basePath.components.push({
+ count: commonCount
+ });
+ }
+
+ basePath.newPos = newPos;
+ return oldPos;
+ },
+ equals: function equals(left, right) {
+ if (this.options.comparator) {
+ return this.options.comparator(left, right);
+ } else {
+ return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();
+ }
+ },
+ removeEmpty: function removeEmpty(array) {
+ var ret = [];
+
+ for (var i = 0; i < array.length; i++) {
+ if (array[i]) {
+ ret.push(array[i]);
+ }
+ }
+
+ return ret;
+ },
+ castInput: function castInput(value) {
+ return value;
+ },
+ tokenize: function tokenize(value) {
+ return value.split('');
+ },
+ join: function join(chars) {
+ return chars.join('');
+ }
+};
+
+function buildValues(diff, components, newString, oldString, useLongestToken) {
+ var componentPos = 0,
+ componentLen = components.length,
+ newPos = 0,
+ oldPos = 0;
+
+ for (; componentPos < componentLen; componentPos++) {
+ var component = components[componentPos];
+
+ if (!component.removed) {
+ if (!component.added && useLongestToken) {
+ var value = newString.slice(newPos, newPos + component.count);
+ value = value.map(function (value, i) {
+ var oldValue = oldString[oldPos + i];
+ return oldValue.length > value.length ? oldValue : value;
+ });
+ component.value = diff.join(value);
+ } else {
+ component.value = diff.join(newString.slice(newPos, newPos + component.count));
+ }
+
+ newPos += component.count; // Common case
+
+ if (!component.added) {
+ oldPos += component.count;
+ }
+ } else {
+ component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));
+ oldPos += component.count; // Reverse add and remove so removes are output first to match common convention
+ // The diffing algorithm is tied to add then remove output and this is the simplest
+ // route to get the desired output with minimal overhead.
+
+ if (componentPos && components[componentPos - 1].added) {
+ var tmp = components[componentPos - 1];
+ components[componentPos - 1] = components[componentPos];
+ components[componentPos] = tmp;
+ }
+ }
+ } // Special case handle for when one terminal is ignored (i.e. whitespace).
+ // For this case we merge the terminal into the prior string and drop the change.
+ // This is only available for string mode.
+
+
+ var lastComponent = components[componentLen - 1];
+
+ if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {
+ components[componentLen - 2].value += lastComponent.value;
+ components.pop();
+ }
+
+ return components;
+}
+
+function clonePath(path) {
+ return {
+ newPos: path.newPos,
+ components: path.components.slice(0)
+ };
+}
+
+var characterDiff = new Diff();
+
+function diffChars(oldStr, newStr, options) {
+ return characterDiff.diff(oldStr, newStr, options);
+}
+
+function generateOptions(options, defaults) {
+ if (typeof options === 'function') {
+ defaults.callback = options;
+ } else if (options) {
+ for (var name in options) {
+ /* istanbul ignore else */
+ if (options.hasOwnProperty(name)) {
+ defaults[name] = options[name];
+ }
+ }
+ }
+
+ return defaults;
+} //
+// Ranges and exceptions:
+// Latin-1 Supplement, 0080–00FF
+// - U+00D7 × Multiplication sign
+// - U+00F7 ÷ Division sign
+// Latin Extended-A, 0100–017F
+// Latin Extended-B, 0180–024F
+// IPA Extensions, 0250–02AF
+// Spacing Modifier Letters, 02B0–02FF
+// - U+02C7 ˇ &#711; Caron
+// - U+02D8 ˘ &#728; Breve
+// - U+02D9 ˙ &#729; Dot Above
+// - U+02DA ˚ &#730; Ring Above
+// - U+02DB ˛ &#731; Ogonek
+// - U+02DC ˜ &#732; Small Tilde
+// - U+02DD ˝ &#733; Double Acute Accent
+// Latin Extended Additional, 1E00–1EFF
+
+
+var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/;
+var reWhitespace = /\S/;
+var wordDiff = new Diff();
+
+wordDiff.equals = function (left, right) {
+ if (this.options.ignoreCase) {
+ left = left.toLowerCase();
+ right = right.toLowerCase();
+ }
+
+ return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);
+};
+
+wordDiff.tokenize = function (value) {
+ var tokens = value.split(/(\s+|[()[\]{}'"]|\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.
+
+ for (var i = 0; i < tokens.length - 1; i++) {
+ // If we have an empty string in the next field and we have only word chars before and after, merge
+ if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {
+ tokens[i] += tokens[i + 2];
+ tokens.splice(i + 1, 2);
+ i--;
+ }
+ }
+
+ return tokens;
+};
+
+function diffWords(oldStr, newStr, options) {
+ options = generateOptions(options, {
+ ignoreWhitespace: true
+ });
+ return wordDiff.diff(oldStr, newStr, options);
+}
+
+function diffWordsWithSpace(oldStr, newStr, options) {
+ return wordDiff.diff(oldStr, newStr, options);
+}
+
+var lineDiff = new Diff();
+
+lineDiff.tokenize = function (value) {
+ var retLines = [],
+ linesAndNewlines = value.split(/(\n|\r\n)/); // Ignore the final empty token that occurs if the string ends with a new line
+
+ if (!linesAndNewlines[linesAndNewlines.length - 1]) {
+ linesAndNewlines.pop();
+ } // Merge the content and line separators into single tokens
+
+
+ for (var i = 0; i < linesAndNewlines.length; i++) {
+ var line = linesAndNewlines[i];
+
+ if (i % 2 && !this.options.newlineIsToken) {
+ retLines[retLines.length - 1] += line;
+ } else {
+ if (this.options.ignoreWhitespace) {
+ line = line.trim();
+ }
+
+ retLines.push(line);
+ }
+ }
+
+ return retLines;
+};
+
+function diffLines(oldStr, newStr, callback) {
+ return lineDiff.diff(oldStr, newStr, callback);
+}
+
+function diffTrimmedLines(oldStr, newStr, callback) {
+ var options = generateOptions(callback, {
+ ignoreWhitespace: true
+ });
+ return lineDiff.diff(oldStr, newStr, options);
+}
+
+var sentenceDiff = new Diff();
+
+sentenceDiff.tokenize = function (value) {
+ return value.split(/(\S.+?[.!?])(?=\s+|$)/);
+};
+
+function diffSentences(oldStr, newStr, callback) {
+ return sentenceDiff.diff(oldStr, newStr, callback);
+}
+
+var cssDiff = new Diff();
+
+cssDiff.tokenize = function (value) {
+ return value.split(/([{}:;,]|\s+)/);
+};
+
+function diffCss(oldStr, newStr, callback) {
+ return cssDiff.diff(oldStr, newStr, callback);
+}
+
+function _typeof(obj) {
+ if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+ _typeof = function _typeof(obj) {
+ return typeof obj;
+ };
+ } else {
+ _typeof = function _typeof(obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+ }
+
+ return _typeof(obj);
+}
+
+function _toConsumableArray(arr) {
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
+}
+
+function _arrayWithoutHoles(arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
+ arr2[i] = arr[i];
+ }
+
+ return arr2;
+ }
+}
+
+function _iterableToArray(iter) {
+ if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
+}
+
+function _nonIterableSpread() {
+ throw new TypeError("Invalid attempt to spread non-iterable instance");
+}
+
+var objectPrototypeToString = Object.prototype.toString;
+var jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a
+// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:
+
+jsonDiff.useLongestToken = true;
+jsonDiff.tokenize = lineDiff.tokenize;
+
+jsonDiff.castInput = function (value) {
+ var _this$options = this.options,
+ undefinedReplacement = _this$options.undefinedReplacement,
+ _this$options$stringi = _this$options.stringifyReplacer,
+ stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) {
+ return typeof v === 'undefined' ? undefinedReplacement : v;
+ } : _this$options$stringi;
+ return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' ');
+};
+
+jsonDiff.equals = function (left, right) {
+ return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'));
+};
+
+function diffJson(oldObj, newObj, options) {
+ return jsonDiff.diff(oldObj, newObj, options);
+} // This function handles the presence of circular references by bailing out when encountering an
+// object that is already on the "stack" of items being processed. Accepts an optional replacer
+
+
+function canonicalize(obj, stack, replacementStack, replacer, key) {
+ stack = stack || [];
+ replacementStack = replacementStack || [];
+
+ if (replacer) {
+ obj = replacer(key, obj);
+ }
+
+ var i;
+
+ for (i = 0; i < stack.length; i += 1) {
+ if (stack[i] === obj) {
+ return replacementStack[i];
+ }
+ }
+
+ var canonicalizedObj;
+
+ if ('[object Array]' === objectPrototypeToString.call(obj)) {
+ stack.push(obj);
+ canonicalizedObj = new Array(obj.length);
+ replacementStack.push(canonicalizedObj);
+
+ for (i = 0; i < obj.length; i += 1) {
+ canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);
+ }
+
+ stack.pop();
+ replacementStack.pop();
+ return canonicalizedObj;
+ }
+
+ if (obj && obj.toJSON) {
+ obj = obj.toJSON();
+ }
+
+ if (_typeof(obj) === 'object' && obj !== null) {
+ stack.push(obj);
+ canonicalizedObj = {};
+ replacementStack.push(canonicalizedObj);
+
+ var sortedKeys = [],
+ _key;
+
+ for (_key in obj) {
+ /* istanbul ignore else */
+ if (obj.hasOwnProperty(_key)) {
+ sortedKeys.push(_key);
+ }
+ }
+
+ sortedKeys.sort();
+
+ for (i = 0; i < sortedKeys.length; i += 1) {
+ _key = sortedKeys[i];
+ canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);
+ }
+
+ stack.pop();
+ replacementStack.pop();
+ } else {
+ canonicalizedObj = obj;
+ }
+
+ return canonicalizedObj;
+}
+
+var arrayDiff = new Diff();
+
+arrayDiff.tokenize = function (value) {
+ return value.slice();
+};
+
+arrayDiff.join = arrayDiff.removeEmpty = function (value) {
+ return value;
+};
+
+function diffArrays(oldArr, newArr, callback) {
+ return arrayDiff.diff(oldArr, newArr, callback);
+}
+
+function parsePatch(uniDiff) {
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+ var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/),
+ delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [],
+ list = [],
+ i = 0;
+
+ function parseIndex() {
+ var index = {};
+ list.push(index); // Parse diff metadata
+
+ while (i < diffstr.length) {
+ var line = diffstr[i]; // File header found, end parsing diff metadata
+
+ if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) {
+ break;
+ } // Diff index
+
+
+ var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line);
+
+ if (header) {
+ index.index = header[1];
+ }
+
+ i++;
+ } // Parse file headers if they are defined. Unified diff requires them, but
+ // there's no technical issues to have an isolated hunk without file header
+
+
+ parseFileHeader(index);
+ parseFileHeader(index); // Parse hunks
+
+ index.hunks = [];
+
+ while (i < diffstr.length) {
+ var _line = diffstr[i];
+
+ if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) {
+ break;
+ } else if (/^@@/.test(_line)) {
+ index.hunks.push(parseHunk());
+ } else if (_line && options.strict) {
+ // Ignore unexpected content unless in strict mode
+ throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));
+ } else {
+ i++;
+ }
+ }
+ } // Parses the --- and +++ headers, if none are found, no lines
+ // are consumed.
+
+
+ function parseFileHeader(index) {
+ var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]);
+
+ if (fileHeader) {
+ var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';
+ var data = fileHeader[2].split('\t', 2);
+ var fileName = data[0].replace(/\\\\/g, '\\');
+
+ if (/^".*"$/.test(fileName)) {
+ fileName = fileName.substr(1, fileName.length - 2);
+ }
+
+ index[keyPrefix + 'FileName'] = fileName;
+ index[keyPrefix + 'Header'] = (data[1] || '').trim();
+ i++;
+ }
+ } // Parses a hunk
+ // This assumes that we are at the start of a hunk.
+
+
+ function parseHunk() {
+ var chunkHeaderIndex = i,
+ chunkHeaderLine = diffstr[i++],
+ chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
+ var hunk = {
+ oldStart: +chunkHeader[1],
+ oldLines: +chunkHeader[2] || 1,
+ newStart: +chunkHeader[3],
+ newLines: +chunkHeader[4] || 1,
+ lines: [],
+ linedelimiters: []
+ };
+ var addCount = 0,
+ removeCount = 0;
+
+ for (; i < diffstr.length; i++) {
+ // Lines starting with '---' could be mistaken for the "remove line" operation
+ // But they could be the header for the next file. Therefore prune such cases out.
+ if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {
+ break;
+ }
+
+ var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];
+
+ if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') {
+ hunk.lines.push(diffstr[i]);
+ hunk.linedelimiters.push(delimiters[i] || '\n');
+
+ if (operation === '+') {
+ addCount++;
+ } else if (operation === '-') {
+ removeCount++;
+ } else if (operation === ' ') {
+ addCount++;
+ removeCount++;
+ }
+ } else {
+ break;
+ }
+ } // Handle the empty block count case
+
+
+ if (!addCount && hunk.newLines === 1) {
+ hunk.newLines = 0;
+ }
+
+ if (!removeCount && hunk.oldLines === 1) {
+ hunk.oldLines = 0;
+ } // Perform optional sanity checking
+
+
+ if (options.strict) {
+ if (addCount !== hunk.newLines) {
+ throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
+ }
+
+ if (removeCount !== hunk.oldLines) {
+ throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
+ }
+ }
+
+ return hunk;
+ }
+
+ while (i < diffstr.length) {
+ parseIndex();
+ }
+
+ return list;
+} // Iterator that traverses in the range of [min, max], stepping
+// by distance from a given start position. I.e. for [0, 4], with
+// start of 2, this will iterate 2, 3, 1, 4, 0.
+
+
+function distanceIterator(start, minLine, maxLine) {
+ var wantForward = true,
+ backwardExhausted = false,
+ forwardExhausted = false,
+ localOffset = 1;
+ return function iterator() {
+ if (wantForward && !forwardExhausted) {
+ if (backwardExhausted) {
+ localOffset++;
+ } else {
+ wantForward = false;
+ } // Check if trying to fit beyond text length, and if not, check it fits
+ // after offset location (or desired location on first iteration)
+
+
+ if (start + localOffset <= maxLine) {
+ return localOffset;
+ }
+
+ forwardExhausted = true;
+ }
+
+ if (!backwardExhausted) {
+ if (!forwardExhausted) {
+ wantForward = true;
+ } // Check if trying to fit before text beginning, and if not, check it fits
+ // before offset location
+
+
+ if (minLine <= start - localOffset) {
+ return -localOffset++;
+ }
+
+ backwardExhausted = true;
+ return iterator();
+ } // We tried to fit hunk before text beginning and beyond text length, then
+ // hunk can't fit on the text. Return undefined
+
+ };
+}
+
+function applyPatch(source, uniDiff) {
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+
+ if (typeof uniDiff === 'string') {
+ uniDiff = parsePatch(uniDiff);
+ }
+
+ if (Array.isArray(uniDiff)) {
+ if (uniDiff.length > 1) {
+ throw new Error('applyPatch only works with a single input.');
+ }
+
+ uniDiff = uniDiff[0];
+ } // Apply the diff to the input
+
+
+ var lines = source.split(/\r\n|[\n\v\f\r\x85]/),
+ delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [],
+ hunks = uniDiff.hunks,
+ compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) {
+ return line === patchContent;
+ },
+ errorCount = 0,
+ fuzzFactor = options.fuzzFactor || 0,
+ minLine = 0,
+ offset = 0,
+ removeEOFNL,
+ addEOFNL;
+ /**
+ * Checks if the hunk exactly fits on the provided location
+ */
+
+
+ function hunkFits(hunk, toPos) {
+ for (var j = 0; j < hunk.lines.length; j++) {
+ var line = hunk.lines[j],
+ operation = line.length > 0 ? line[0] : ' ',
+ content = line.length > 0 ? line.substr(1) : line;
+
+ if (operation === ' ' || operation === '-') {
+ // Context sanity check
+ if (!compareLine(toPos + 1, lines[toPos], operation, content)) {
+ errorCount++;
+
+ if (errorCount > fuzzFactor) {
+ return false;
+ }
+ }
+
+ toPos++;
+ }
+ }
+
+ return true;
+ } // Search best fit offsets for each hunk based on the previous ones
+
+
+ for (var i = 0; i < hunks.length; i++) {
+ var hunk = hunks[i],
+ maxLine = lines.length - hunk.oldLines,
+ localOffset = 0,
+ toPos = offset + hunk.oldStart - 1;
+ var iterator = distanceIterator(toPos, minLine, maxLine);
+
+ for (; localOffset !== undefined; localOffset = iterator()) {
+ if (hunkFits(hunk, toPos + localOffset)) {
+ hunk.offset = offset += localOffset;
+ break;
+ }
+ }
+
+ if (localOffset === undefined) {
+ return false;
+ } // Set lower text limit to end of the current hunk, so next ones don't try
+ // to fit over already patched text
+
+
+ minLine = hunk.offset + hunk.oldStart + hunk.oldLines;
+ } // Apply patch hunks
+
+
+ var diffOffset = 0;
+
+ for (var _i = 0; _i < hunks.length; _i++) {
+ var _hunk = hunks[_i],
+ _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;
+
+ diffOffset += _hunk.newLines - _hunk.oldLines;
+
+ if (_toPos < 0) {
+ // Creating a new file
+ _toPos = 0;
+ }
+
+ for (var j = 0; j < _hunk.lines.length; j++) {
+ var line = _hunk.lines[j],
+ operation = line.length > 0 ? line[0] : ' ',
+ content = line.length > 0 ? line.substr(1) : line,
+ delimiter = _hunk.linedelimiters[j];
+
+ if (operation === ' ') {
+ _toPos++;
+ } else if (operation === '-') {
+ lines.splice(_toPos, 1);
+ delimiters.splice(_toPos, 1);
+ /* istanbul ignore else */
+ } else if (operation === '+') {
+ lines.splice(_toPos, 0, content);
+ delimiters.splice(_toPos, 0, delimiter);
+ _toPos++;
+ } else if (operation === '\\') {
+ var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;
+
+ if (previousOperation === '+') {
+ removeEOFNL = true;
+ } else if (previousOperation === '-') {
+ addEOFNL = true;
+ }
+ }
+ }
+ } // Handle EOFNL insertion/removal
+
+
+ if (removeEOFNL) {
+ while (!lines[lines.length - 1]) {
+ lines.pop();
+ delimiters.pop();
+ }
+ } else if (addEOFNL) {
+ lines.push('');
+ delimiters.push('\n');
+ }
+
+ for (var _k = 0; _k < lines.length - 1; _k++) {
+ lines[_k] = lines[_k] + delimiters[_k];
+ }
+
+ return lines.join('');
+} // Wrapper that supports multiple file patches via callbacks.
+
+
+function applyPatches(uniDiff, options) {
+ if (typeof uniDiff === 'string') {
+ uniDiff = parsePatch(uniDiff);
+ }
+
+ var currentIndex = 0;
+
+ function processIndex() {
+ var index = uniDiff[currentIndex++];
+
+ if (!index) {
+ return options.complete();
+ }
+
+ options.loadFile(index, function (err, data) {
+ if (err) {
+ return options.complete(err);
+ }
+
+ var updatedContent = applyPatch(data, index, options);
+ options.patched(index, updatedContent, function (err) {
+ if (err) {
+ return options.complete(err);
+ }
+
+ processIndex();
+ });
+ });
+ }
+
+ processIndex();
+}
+
+function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
+ if (!options) {
+ options = {};
+ }
+
+ if (typeof options.context === 'undefined') {
+ options.context = 4;
+ }
+
+ var diff = diffLines(oldStr, newStr, options);
+ diff.push({
+ value: '',
+ lines: []
+ }); // Append an empty value to make cleanup easier
+
+ function contextLines(lines) {
+ return lines.map(function (entry) {
+ return ' ' + entry;
+ });
+ }
+
+ var hunks = [];
+ var oldRangeStart = 0,
+ newRangeStart = 0,
+ curRange = [],
+ oldLine = 1,
+ newLine = 1;
+
+ var _loop = function _loop(i) {
+ var current = diff[i],
+ lines = current.lines || current.value.replace(/\n$/, '').split('\n');
+ current.lines = lines;
+
+ if (current.added || current.removed) {
+ var _curRange; // If we have previous context, start with that
+
+
+ if (!oldRangeStart) {
+ var prev = diff[i - 1];
+ oldRangeStart = oldLine;
+ newRangeStart = newLine;
+
+ if (prev) {
+ curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];
+ oldRangeStart -= curRange.length;
+ newRangeStart -= curRange.length;
+ }
+ } // Output our changes
+
+
+ (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) {
+ return (current.added ? '+' : '-') + entry;
+ }))); // Track the updated file position
+
+
+ if (current.added) {
+ newLine += lines.length;
+ } else {
+ oldLine += lines.length;
+ }
+ } else {
+ // Identical context lines. Track line changes
+ if (oldRangeStart) {
+ // Close out any changes that have been output (or join overlapping)
+ if (lines.length <= options.context * 2 && i < diff.length - 2) {
+ var _curRange2; // Overlapping
+
+
+ (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines)));
+ } else {
+ var _curRange3; // end the range and output
+
+
+ var contextSize = Math.min(lines.length, options.context);
+
+ (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize))));
+
+ var hunk = {
+ oldStart: oldRangeStart,
+ oldLines: oldLine - oldRangeStart + contextSize,
+ newStart: newRangeStart,
+ newLines: newLine - newRangeStart + contextSize,
+ lines: curRange
+ };
+
+ if (i >= diff.length - 2 && lines.length <= options.context) {
+ // EOF is inside this hunk
+ var oldEOFNewline = /\n$/.test(oldStr);
+ var newEOFNewline = /\n$/.test(newStr);
+ var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;
+
+ if (!oldEOFNewline && noNlBeforeAdds) {
+ // special case: old has no eol and no trailing context; no-nl can end up before adds
+ curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file');
+ }
+
+ if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {
+ curRange.push('\\ No newline at end of file');
+ }
+ }
+
+ hunks.push(hunk);
+ oldRangeStart = 0;
+ newRangeStart = 0;
+ curRange = [];
+ }
+ }
+
+ oldLine += lines.length;
+ newLine += lines.length;
+ }
+ };
+
+ for (var i = 0; i < diff.length; i++) {
+ _loop(i);
+ }
+
+ return {
+ oldFileName: oldFileName,
+ newFileName: newFileName,
+ oldHeader: oldHeader,
+ newHeader: newHeader,
+ hunks: hunks
+ };
+}
+
+function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
+ var diff = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);
+ var ret = [];
+
+ if (oldFileName == newFileName) {
+ ret.push('Index: ' + oldFileName);
+ }
+
+ ret.push('===================================================================');
+ ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader));
+ ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader));
+
+ for (var i = 0; i < diff.hunks.length; i++) {
+ var hunk = diff.hunks[i];
+ ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');
+ ret.push.apply(ret, hunk.lines);
+ }
+
+ return ret.join('\n') + '\n';
+}
+
+function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {
+ return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);
+}
+
+function arrayEqual(a, b) {
+ if (a.length !== b.length) {
+ return false;
+ }
+
+ return arrayStartsWith(a, b);
+}
+
+function arrayStartsWith(array, start) {
+ if (start.length > array.length) {
+ return false;
+ }
+
+ for (var i = 0; i < start.length; i++) {
+ if (start[i] !== array[i]) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+function calcLineCount(hunk) {
+ var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines),
+ oldLines = _calcOldNewLineCount.oldLines,
+ newLines = _calcOldNewLineCount.newLines;
+
+ if (oldLines !== undefined) {
+ hunk.oldLines = oldLines;
+ } else {
+ delete hunk.oldLines;
+ }
+
+ if (newLines !== undefined) {
+ hunk.newLines = newLines;
+ } else {
+ delete hunk.newLines;
+ }
+}
+
+function merge(mine, theirs, base) {
+ mine = loadPatch(mine, base);
+ theirs = loadPatch(theirs, base);
+ var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.
+ // Leaving sanity checks on this to the API consumer that may know more about the
+ // meaning in their own context.
+
+ if (mine.index || theirs.index) {
+ ret.index = mine.index || theirs.index;
+ }
+
+ if (mine.newFileName || theirs.newFileName) {
+ if (!fileNameChanged(mine)) {
+ // No header or no change in ours, use theirs (and ours if theirs does not exist)
+ ret.oldFileName = theirs.oldFileName || mine.oldFileName;
+ ret.newFileName = theirs.newFileName || mine.newFileName;
+ ret.oldHeader = theirs.oldHeader || mine.oldHeader;
+ ret.newHeader = theirs.newHeader || mine.newHeader;
+ } else if (!fileNameChanged(theirs)) {
+ // No header or no change in theirs, use ours
+ ret.oldFileName = mine.oldFileName;
+ ret.newFileName = mine.newFileName;
+ ret.oldHeader = mine.oldHeader;
+ ret.newHeader = mine.newHeader;
+ } else {
+ // Both changed... figure it out
+ ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);
+ ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);
+ ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);
+ ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);
+ }
+ }
+
+ ret.hunks = [];
+ var mineIndex = 0,
+ theirsIndex = 0,
+ mineOffset = 0,
+ theirsOffset = 0;
+
+ while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {
+ var mineCurrent = mine.hunks[mineIndex] || {
+ oldStart: Infinity
+ },
+ theirsCurrent = theirs.hunks[theirsIndex] || {
+ oldStart: Infinity
+ };
+
+ if (hunkBefore(mineCurrent, theirsCurrent)) {
+ // This patch does not overlap with any of the others, yay.
+ ret.hunks.push(cloneHunk(mineCurrent, mineOffset));
+ mineIndex++;
+ theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;
+ } else if (hunkBefore(theirsCurrent, mineCurrent)) {
+ // This patch does not overlap with any of the others, yay.
+ ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));
+ theirsIndex++;
+ mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;
+ } else {
+ // Overlap, merge as best we can
+ var mergedHunk = {
+ oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),
+ oldLines: 0,
+ newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),
+ newLines: 0,
+ lines: []
+ };
+ mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);
+ theirsIndex++;
+ mineIndex++;
+ ret.hunks.push(mergedHunk);
+ }
+ }
+
+ return ret;
+}
+
+function loadPatch(param, base) {
+ if (typeof param === 'string') {
+ if (/^@@/m.test(param) || /^Index:/m.test(param)) {
+ return parsePatch(param)[0];
+ }
+
+ if (!base) {
+ throw new Error('Must provide a base reference or pass in a patch');
+ }
+
+ return structuredPatch(undefined, undefined, base, param);
+ }
+
+ return param;
+}
+
+function fileNameChanged(patch) {
+ return patch.newFileName && patch.newFileName !== patch.oldFileName;
+}
+
+function selectField(index, mine, theirs) {
+ if (mine === theirs) {
+ return mine;
+ } else {
+ index.conflict = true;
+ return {
+ mine: mine,
+ theirs: theirs
+ };
+ }
+}
+
+function hunkBefore(test, check) {
+ return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;
+}
+
+function cloneHunk(hunk, offset) {
+ return {
+ oldStart: hunk.oldStart,
+ oldLines: hunk.oldLines,
+ newStart: hunk.newStart + offset,
+ newLines: hunk.newLines,
+ lines: hunk.lines
+ };
+}
+
+function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {
+ // This will generally result in a conflicted hunk, but there are cases where the context
+ // is the only overlap where we can successfully merge the content here.
+ var mine = {
+ offset: mineOffset,
+ lines: mineLines,
+ index: 0
+ },
+ their = {
+ offset: theirOffset,
+ lines: theirLines,
+ index: 0
+ }; // Handle any leading content
+
+ insertLeading(hunk, mine, their);
+ insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.
+
+ while (mine.index < mine.lines.length && their.index < their.lines.length) {
+ var mineCurrent = mine.lines[mine.index],
+ theirCurrent = their.lines[their.index];
+
+ if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {
+ // Both modified ...
+ mutualChange(hunk, mine, their);
+ } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {
+ var _hunk$lines; // Mine inserted
+
+
+ (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine)));
+ } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {
+ var _hunk$lines2; // Theirs inserted
+
+
+ (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their)));
+ } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {
+ // Mine removed or edited
+ removal(hunk, mine, their);
+ } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {
+ // Their removed or edited
+ removal(hunk, their, mine, true);
+ } else if (mineCurrent === theirCurrent) {
+ // Context identity
+ hunk.lines.push(mineCurrent);
+ mine.index++;
+ their.index++;
+ } else {
+ // Context mismatch
+ conflict(hunk, collectChange(mine), collectChange(their));
+ }
+ } // Now push anything that may be remaining
+
+
+ insertTrailing(hunk, mine);
+ insertTrailing(hunk, their);
+ calcLineCount(hunk);
+}
+
+function mutualChange(hunk, mine, their) {
+ var myChanges = collectChange(mine),
+ theirChanges = collectChange(their);
+
+ if (allRemoves(myChanges) && allRemoves(theirChanges)) {
+ // Special case for remove changes that are supersets of one another
+ if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {
+ var _hunk$lines3;
+
+ (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges));
+
+ return;
+ } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {
+ var _hunk$lines4;
+
+ (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges));
+
+ return;
+ }
+ } else if (arrayEqual(myChanges, theirChanges)) {
+ var _hunk$lines5;
+
+ (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges));
+
+ return;
+ }
+
+ conflict(hunk, myChanges, theirChanges);
+}
+
+function removal(hunk, mine, their, swap) {
+ var myChanges = collectChange(mine),
+ theirChanges = collectContext(their, myChanges);
+
+ if (theirChanges.merged) {
+ var _hunk$lines6;
+
+ (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged));
+ } else {
+ conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);
+ }
+}
+
+function conflict(hunk, mine, their) {
+ hunk.conflict = true;
+ hunk.lines.push({
+ conflict: true,
+ mine: mine,
+ theirs: their
+ });
+}
+
+function insertLeading(hunk, insert, their) {
+ while (insert.offset < their.offset && insert.index < insert.lines.length) {
+ var line = insert.lines[insert.index++];
+ hunk.lines.push(line);
+ insert.offset++;
+ }
+}
+
+function insertTrailing(hunk, insert) {
+ while (insert.index < insert.lines.length) {
+ var line = insert.lines[insert.index++];
+ hunk.lines.push(line);
+ }
+}
+
+function collectChange(state) {
+ var ret = [],
+ operation = state.lines[state.index][0];
+
+ while (state.index < state.lines.length) {
+ var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one "atomic" modify change.
+
+ if (operation === '-' && line[0] === '+') {
+ operation = '+';
+ }
+
+ if (operation === line[0]) {
+ ret.push(line);
+ state.index++;
+ } else {
+ break;
+ }
+ }
+
+ return ret;
+}
+
+function collectContext(state, matchChanges) {
+ var changes = [],
+ merged = [],
+ matchIndex = 0,
+ contextChanges = false,
+ conflicted = false;
+
+ while (matchIndex < matchChanges.length && state.index < state.lines.length) {
+ var change = state.lines[state.index],
+ match = matchChanges[matchIndex]; // Once we've hit our add, then we are done
+
+ if (match[0] === '+') {
+ break;
+ }
+
+ contextChanges = contextChanges || change[0] !== ' ';
+ merged.push(match);
+ matchIndex++; // Consume any additions in the other block as a conflict to attempt
+ // to pull in the remaining context after this
+
+ if (change[0] === '+') {
+ conflicted = true;
+
+ while (change[0] === '+') {
+ changes.push(change);
+ change = state.lines[++state.index];
+ }
+ }
+
+ if (match.substr(1) === change.substr(1)) {
+ changes.push(change);
+ state.index++;
+ } else {
+ conflicted = true;
+ }
+ }
+
+ if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {
+ conflicted = true;
+ }
+
+ if (conflicted) {
+ return changes;
+ }
+
+ while (matchIndex < matchChanges.length) {
+ merged.push(matchChanges[matchIndex++]);
+ }
+
+ return {
+ merged: merged,
+ changes: changes
+ };
+}
+
+function allRemoves(changes) {
+ return changes.reduce(function (prev, change) {
+ return prev && change[0] === '-';
+ }, true);
+}
+
+function skipRemoveSuperset(state, removeChanges, delta) {
+ for (var i = 0; i < delta; i++) {
+ var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);
+
+ if (state.lines[state.index + i] !== ' ' + changeContent) {
+ return false;
+ }
+ }
+
+ state.index += delta;
+ return true;
+}
+
+function calcOldNewLineCount(lines) {
+ var oldLines = 0;
+ var newLines = 0;
+ lines.forEach(function (line) {
+ if (typeof line !== 'string') {
+ var myCount = calcOldNewLineCount(line.mine);
+ var theirCount = calcOldNewLineCount(line.theirs);
+
+ if (oldLines !== undefined) {
+ if (myCount.oldLines === theirCount.oldLines) {
+ oldLines += myCount.oldLines;
+ } else {
+ oldLines = undefined;
+ }
+ }
+
+ if (newLines !== undefined) {
+ if (myCount.newLines === theirCount.newLines) {
+ newLines += myCount.newLines;
+ } else {
+ newLines = undefined;
+ }
+ }
+ } else {
+ if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {
+ newLines++;
+ }
+
+ if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {
+ oldLines++;
+ }
+ }
+ });
+ return {
+ oldLines: oldLines,
+ newLines: newLines
+ };
+} // See: http://code.google.com/p/google-diff-match-patch/wiki/API
+
+
+function convertChangesToDMP(changes) {
+ var ret = [],
+ change,
+ operation;
+
+ for (var i = 0; i < changes.length; i++) {
+ change = changes[i];
+
+ if (change.added) {
+ operation = 1;
+ } else if (change.removed) {
+ operation = -1;
+ } else {
+ operation = 0;
+ }
+
+ ret.push([operation, change.value]);
+ }
+
+ return ret;
+}
+
+function convertChangesToXML(changes) {
+ var ret = [];
+
+ for (var i = 0; i < changes.length; i++) {
+ var change = changes[i];
+
+ if (change.added) {
+ ret.push('<ins>');
+ } else if (change.removed) {
+ ret.push('<del>');
+ }
+
+ ret.push(escapeHTML(change.value));
+
+ if (change.added) {
+ ret.push('</ins>');
+ } else if (change.removed) {
+ ret.push('</del>');
+ }
+ }
+
+ return ret.join('');
+}
+
+function escapeHTML(s) {
+ var n = s;
+ n = n.replace(/&/g, '&amp;');
+ n = n.replace(/</g, '&lt;');
+ n = n.replace(/>/g, '&gt;');
+ n = n.replace(/"/g, '&quot;');
+ return n;
+}
+
+var index_es6 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ Diff: Diff,
+ diffChars: diffChars,
+ diffWords: diffWords,
+ diffWordsWithSpace: diffWordsWithSpace,
+ diffLines: diffLines,
+ diffTrimmedLines: diffTrimmedLines,
+ diffSentences: diffSentences,
+ diffCss: diffCss,
+ diffJson: diffJson,
+ diffArrays: diffArrays,
+ structuredPatch: structuredPatch,
+ createTwoFilesPatch: createTwoFilesPatch,
+ createPatch: createPatch,
+ applyPatch: applyPatch,
+ applyPatches: applyPatches,
+ parsePatch: parsePatch,
+ merge: merge,
+ convertChangesToDMP: convertChangesToDMP,
+ convertChangesToXML: convertChangesToXML,
+ canonicalize: canonicalize
+});
+
+/*!
+ * normalize-path <https://github.com/jonschlinkert/normalize-path>
+ *
+ * Copyright (c) 2014-2018, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+var normalizePath = function normalizePath(path, stripTrailing) {
+ if (typeof path !== 'string') {
+ throw new TypeError('expected path to be a string');
+ }
+
+ if (path === '\\' || path === '/') return '/';
+ var len = path.length;
+ if (len <= 1) return path; // ensure that win32 namespaces has two leading slashes, so that the path is
+ // handled properly by the win32 version of path.parse() after being normalized
+ // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces
+
+ var prefix = '';
+
+ if (len > 4 && path[3] === '\\') {
+ var ch = path[2];
+
+ if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\') {
+ path = path.slice(2);
+ prefix = '//';
+ }
+ }
+
+ var segs = path.split(/[/\\]+/);
+
+ if (stripTrailing !== false && segs[segs.length - 1] === '') {
+ segs.pop();
+ }
+
+ return prefix + segs.join('/');
+};
+
+function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+}
+
+function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+}
+
+function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ return Constructor;
+}
+
+function _inherits(subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) _setPrototypeOf(subClass, superClass);
+}
+
+function _getPrototypeOf(o) {
+ _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
+ return o.__proto__ || Object.getPrototypeOf(o);
+ };
+ return _getPrototypeOf(o);
+}
+
+function _setPrototypeOf(o, p) {
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
+ o.__proto__ = p;
+ return o;
+ };
+
+ return _setPrototypeOf(o, p);
+}
+
+function isNativeReflectConstruct() {
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+ if (Reflect.construct.sham) return false;
+ if (typeof Proxy === "function") return true;
+
+ try {
+ Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
+ return true;
+ } catch (e) {
+ return false;
+ }
+}
+
+function _construct(Parent, args, Class) {
+ if (isNativeReflectConstruct()) {
+ _construct = Reflect.construct;
+ } else {
+ _construct = function _construct(Parent, args, Class) {
+ var a = [null];
+ a.push.apply(a, args);
+ var Constructor = Function.bind.apply(Parent, a);
+ var instance = new Constructor();
+ if (Class) _setPrototypeOf(instance, Class.prototype);
+ return instance;
+ };
+ }
+
+ return _construct.apply(null, arguments);
+}
+
+function _isNativeFunction(fn) {
+ return Function.toString.call(fn).indexOf("[native code]") !== -1;
+}
+
+function _wrapNativeSuper(Class) {
+ var _cache = typeof Map === "function" ? new Map() : undefined;
+
+ _wrapNativeSuper = function _wrapNativeSuper(Class) {
+ if (Class === null || !_isNativeFunction(Class)) return Class;
+
+ if (typeof Class !== "function") {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+
+ if (typeof _cache !== "undefined") {
+ if (_cache.has(Class)) return _cache.get(Class);
+
+ _cache.set(Class, Wrapper);
+ }
+
+ function Wrapper() {
+ return _construct(Class, arguments, _getPrototypeOf(this).constructor);
+ }
+
+ Wrapper.prototype = Object.create(Class.prototype, {
+ constructor: {
+ value: Wrapper,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ return _setPrototypeOf(Wrapper, Class);
+ };
+
+ return _wrapNativeSuper(Class);
+}
+
+function _assertThisInitialized(self) {
+ if (self === void 0) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+
+ return self;
+}
+
+function _possibleConstructorReturn(self, call) {
+ if (call && (typeof call === "object" || typeof call === "function")) {
+ return call;
+ }
+
+ return _assertThisInitialized(self);
+}
+
+function _superPropBase(object, property) {
+ while (!Object.prototype.hasOwnProperty.call(object, property)) {
+ object = _getPrototypeOf(object);
+ if (object === null) break;
+ }
+
+ return object;
+}
+
+function _get(target, property, receiver) {
+ if (typeof Reflect !== "undefined" && Reflect.get) {
+ _get = Reflect.get;
+ } else {
+ _get = function _get(target, property, receiver) {
+ var base = _superPropBase(target, property);
+
+ if (!base) return;
+ var desc = Object.getOwnPropertyDescriptor(base, property);
+
+ if (desc.get) {
+ return desc.get.call(receiver);
+ }
+
+ return desc.value;
+ };
+ }
+
+ return _get(target, property, receiver || target);
+}
+
+function _slicedToArray(arr, i) {
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
+}
+
+function _toConsumableArray$1(arr) {
+ return _arrayWithoutHoles$1(arr) || _iterableToArray$1(arr) || _nonIterableSpread$1();
+}
+
+function _arrayWithoutHoles$1(arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
+
+ return arr2;
+ }
+}
+
+function _arrayWithHoles(arr) {
+ if (Array.isArray(arr)) return arr;
+}
+
+function _iterableToArray$1(iter) {
+ if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
+}
+
+function _iterableToArrayLimit(arr, i) {
+ if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
+ return;
+ }
+
+ var _arr = [];
+ var _n = true;
+ var _d = false;
+ var _e = undefined;
+
+ try {
+ for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
+ _arr.push(_s.value);
+
+ if (i && _arr.length === i) break;
+ }
+ } catch (err) {
+ _d = true;
+ _e = err;
+ } finally {
+ try {
+ if (!_n && _i["return"] != null) _i["return"]();
+ } finally {
+ if (_d) throw _e;
+ }
+ }
+
+ return _arr;
+}
+
+function _nonIterableSpread$1() {
+ throw new TypeError("Invalid attempt to spread non-iterable instance");
+}
+
+function _nonIterableRest() {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance");
+}
+
+/**
+ * @class
+ */
+
+
+var LineByLine =
+/*#__PURE__*/
+function () {
+ function LineByLine(file, options) {
+ _classCallCheck(this, LineByLine);
+
+ options = options || {};
+ if (!options.readChunk) options.readChunk = 1024;
+
+ if (!options.newLineCharacter) {
+ options.newLineCharacter = 0x0a; //linux line ending
+ } else {
+ options.newLineCharacter = options.newLineCharacter.charCodeAt(0);
+ }
+
+ if (typeof file === 'number') {
+ this.fd = file;
+ } else {
+ this.fd = fs$1.openSync(file, 'r');
+ }
+
+ this.options = options;
+ this.newLineCharacter = options.newLineCharacter;
+ this.reset();
+ }
+
+ _createClass(LineByLine, [{
+ key: "_searchInBuffer",
+ value: function _searchInBuffer(buffer, hexNeedle) {
+ var found = -1;
+
+ for (var i = 0; i <= buffer.length; i++) {
+ var b_byte = buffer[i];
+
+ if (b_byte === hexNeedle) {
+ found = i;
+ break;
+ }
+ }
+
+ return found;
+ }
+ }, {
+ key: "reset",
+ value: function reset() {
+ this.eofReached = false;
+ this.linesCache = [];
+ this.fdPosition = 0;
+ }
+ }, {
+ key: "close",
+ value: function close() {
+ fs$1.closeSync(this.fd);
+ this.fd = null;
+ }
+ }, {
+ key: "_extractLines",
+ value: function _extractLines(buffer) {
+ var line;
+ var lines = [];
+ var bufferPosition = 0;
+ var lastNewLineBufferPosition = 0;
+
+ while (true) {
+ var bufferPositionValue = buffer[bufferPosition++];
+
+ if (bufferPositionValue === this.newLineCharacter) {
+ line = buffer.slice(lastNewLineBufferPosition, bufferPosition);
+ lines.push(line);
+ lastNewLineBufferPosition = bufferPosition;
+ } else if (!bufferPositionValue) {
+ break;
+ }
+ }
+
+ var leftovers = buffer.slice(lastNewLineBufferPosition, bufferPosition);
+
+ if (leftovers.length) {
+ lines.push(leftovers);
+ }
+
+ return lines;
+ }
+ }, {
+ key: "_readChunk",
+ value: function _readChunk(lineLeftovers) {
+ var totalBytesRead = 0;
+ var bytesRead;
+ var buffers = [];
+
+ do {
+ var readBuffer = new Buffer(this.options.readChunk);
+ bytesRead = fs$1.readSync(this.fd, readBuffer, 0, this.options.readChunk, this.fdPosition);
+ totalBytesRead = totalBytesRead + bytesRead;
+ this.fdPosition = this.fdPosition + bytesRead;
+ buffers.push(readBuffer);
+ } while (bytesRead && this._searchInBuffer(buffers[buffers.length - 1], this.options.newLineCharacter) === -1);
+
+ var bufferData = Buffer.concat(buffers);
+
+ if (bytesRead < this.options.readChunk) {
+ this.eofReached = true;
+ bufferData = bufferData.slice(0, totalBytesRead);
+ }
+
+ if (totalBytesRead) {
+ this.linesCache = this._extractLines(bufferData);
+
+ if (lineLeftovers) {
+ this.linesCache[0] = Buffer.concat([lineLeftovers, this.linesCache[0]]);
+ }
+ }
+
+ return totalBytesRead;
+ }
+ }, {
+ key: "next",
+ value: function next() {
+ if (!this.fd) return false;
+ var line = false;
+
+ if (this.eofReached && this.linesCache.length === 0) {
+ return line;
+ }
+
+ var bytesRead;
+
+ if (!this.linesCache.length) {
+ bytesRead = this._readChunk();
+ }
+
+ if (this.linesCache.length) {
+ line = this.linesCache.shift();
+ var lastLineCharacter = line[line.length - 1];
+
+ if (lastLineCharacter !== 0x0a) {
+ bytesRead = this._readChunk(line);
+
+ if (bytesRead) {
+ line = this.linesCache.shift();
+ }
+ }
+ }
+
+ if (this.eofReached && this.linesCache.length === 0) {
+ this.close();
+ }
+
+ if (line && line[line.length - 1] === this.newLineCharacter) {
+ line = line.slice(0, line.length - 1);
+ }
+
+ return line;
+ }
+ }]);
+
+ return LineByLine;
+}();
+
+var readlines = LineByLine;
+
+var ConfigError =
+/*#__PURE__*/
+function (_Error) {
+ _inherits(ConfigError, _Error);
+
+ function ConfigError() {
+ _classCallCheck(this, ConfigError);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(ConfigError).apply(this, arguments));
+ }
+
+ return ConfigError;
+}(_wrapNativeSuper(Error));
+
+var DebugError =
+/*#__PURE__*/
+function (_Error2) {
+ _inherits(DebugError, _Error2);
+
+ function DebugError() {
+ _classCallCheck(this, DebugError);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(DebugError).apply(this, arguments));
+ }
+
+ return DebugError;
+}(_wrapNativeSuper(Error));
+
+var UndefinedParserError =
+/*#__PURE__*/
+function (_Error3) {
+ _inherits(UndefinedParserError, _Error3);
+
+ function UndefinedParserError() {
+ _classCallCheck(this, UndefinedParserError);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(UndefinedParserError).apply(this, arguments));
+ }
+
+ return UndefinedParserError;
+}(_wrapNativeSuper(Error));
+
+var errors = {
+ ConfigError,
+ DebugError,
+ UndefinedParserError
+};
+
+function unwrapExports (x) {
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
+}
+
+function createCommonjsModule(fn, module) {
+ return module = { exports: {} }, fn(module, module.exports), module.exports;
+}
+
+function getCjsExportFromNamespace (n) {
+ return n && n['default'] || n;
+}
+
+var semver = createCommonjsModule(function (module, exports) {
+ exports = module.exports = SemVer;
+ var debug;
+ /* istanbul ignore next */
+
+ if (typeof process === 'object' && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
+ debug = function debug() {
+ var args = Array.prototype.slice.call(arguments, 0);
+ args.unshift('SEMVER');
+ console.log.apply(console, args);
+ };
+ } else {
+ debug = function debug() {};
+ } // Note: this is the semver.org version of the spec that it implements
+ // Not necessarily the package version of this code.
+
+
+ exports.SEMVER_SPEC_VERSION = '2.0.0';
+ var MAX_LENGTH = 256;
+ var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+ /* istanbul ignore next */
+ 9007199254740991; // Max safe segment length for coercion.
+
+ var MAX_SAFE_COMPONENT_LENGTH = 16; // The actual regexps go on exports.re
+
+ var re = exports.re = [];
+ var src = exports.src = [];
+ var t = exports.tokens = {};
+ var R = 0;
+
+ function tok(n) {
+ t[n] = R++;
+ } // The following Regular Expressions can be used for tokenizing,
+ // validating, and parsing SemVer version strings.
+ // ## Numeric Identifier
+ // A single `0`, or a non-zero digit followed by zero or more digits.
+
+
+ tok('NUMERICIDENTIFIER');
+ src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*';
+ tok('NUMERICIDENTIFIERLOOSE');
+ src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'; // ## Non-numeric Identifier
+ // Zero or more digits, followed by a letter or hyphen, and then zero or
+ // more letters, digits, or hyphens.
+
+ tok('NONNUMERICIDENTIFIER');
+ src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'; // ## Main Version
+ // Three dot-separated numeric identifiers.
+
+ tok('MAINVERSION');
+ src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')';
+ tok('MAINVERSIONLOOSE');
+ src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'; // ## Pre-release Version Identifier
+ // A numeric identifier, or a non-numeric identifier.
+
+ tok('PRERELEASEIDENTIFIER');
+ src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + '|' + src[t.NONNUMERICIDENTIFIER] + ')';
+ tok('PRERELEASEIDENTIFIERLOOSE');
+ src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + '|' + src[t.NONNUMERICIDENTIFIER] + ')'; // ## Pre-release Version
+ // Hyphen, followed by one or more dot-separated pre-release version
+ // identifiers.
+
+ tok('PRERELEASE');
+ src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))';
+ tok('PRERELEASELOOSE');
+ src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'; // ## Build Metadata Identifier
+ // Any combination of digits, letters, or hyphens.
+
+ tok('BUILDIDENTIFIER');
+ src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'; // ## Build Metadata
+ // Plus sign, followed by one or more period-separated build metadata
+ // identifiers.
+
+ tok('BUILD');
+ src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))'; // ## Full Version String
+ // A main version, followed optionally by a pre-release version and
+ // build metadata.
+ // Note that the only major, minor, patch, and pre-release sections of
+ // the version string are capturing groups. The build metadata is not a
+ // capturing group, because it should not ever be used in version
+ // comparison.
+
+ tok('FULL');
+ tok('FULLPLAIN');
+ src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + src[t.PRERELEASE] + '?' + src[t.BUILD] + '?';
+ src[t.FULL] = '^' + src[t.FULLPLAIN] + '$'; // like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+ // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+ // common in the npm registry.
+
+ tok('LOOSEPLAIN');
+ src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + src[t.PRERELEASELOOSE] + '?' + src[t.BUILD] + '?';
+ tok('LOOSE');
+ src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$';
+ tok('GTLT');
+ src[t.GTLT] = '((?:<|>)?=?)'; // Something like "2.*" or "1.2.x".
+ // Note that "x.x" is a valid xRange identifer, meaning "any version"
+ // Only the first item is strictly required.
+
+ tok('XRANGEIDENTIFIERLOOSE');
+ src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*';
+ tok('XRANGEIDENTIFIER');
+ src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*';
+ tok('XRANGEPLAIN');
+ src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:' + src[t.PRERELEASE] + ')?' + src[t.BUILD] + '?' + ')?)?';
+ tok('XRANGEPLAINLOOSE');
+ src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:' + src[t.PRERELEASELOOSE] + ')?' + src[t.BUILD] + '?' + ')?)?';
+ tok('XRANGE');
+ src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$';
+ tok('XRANGELOOSE');
+ src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$'; // Coercion.
+ // Extract anything that could conceivably be a part of a valid semver
+
+ tok('COERCE');
+ src[t.COERCE] = '(^|[^\\d])' + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:$|[^\\d])';
+ tok('COERCERTL');
+ re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g'); // Tilde ranges.
+ // Meaning is "reasonably at or greater than"
+
+ tok('LONETILDE');
+ src[t.LONETILDE] = '(?:~>?)';
+ tok('TILDETRIM');
+ src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+';
+ re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g');
+ var tildeTrimReplace = '$1~';
+ tok('TILDE');
+ src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$';
+ tok('TILDELOOSE');
+ src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'; // Caret ranges.
+ // Meaning is "at least and backwards compatible with"
+
+ tok('LONECARET');
+ src[t.LONECARET] = '(?:\\^)';
+ tok('CARETTRIM');
+ src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+';
+ re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g');
+ var caretTrimReplace = '$1^';
+ tok('CARET');
+ src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$';
+ tok('CARETLOOSE');
+ src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'; // A simple gt/lt/eq thing, or just "" to indicate "any version"
+
+ tok('COMPARATORLOOSE');
+ src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$';
+ tok('COMPARATOR');
+ src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$'; // An expression to strip any whitespace between the gtlt and the thing
+ // it modifies, so that `> 1.2.3` ==> `>1.2.3`
+
+ tok('COMPARATORTRIM');
+ src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'; // this one has to use the /g flag
+
+ re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g');
+ var comparatorTrimReplace = '$1$2$3'; // Something like `1.2.3 - 1.2.4`
+ // Note that these all use the loose form, because they'll be
+ // checked against either the strict or loose comparator form
+ // later.
+
+ tok('HYPHENRANGE');
+ src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAIN] + ')' + '\\s*$';
+ tok('HYPHENRANGELOOSE');
+ src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s*$'; // Star ranges basically just allow anything at all.
+
+ tok('STAR');
+ src[t.STAR] = '(<|>)?=?\\s*\\*'; // Compile to actual regexp objects.
+ // All are flag-free, unless they were created above with a flag.
+
+ for (var i = 0; i < R; i++) {
+ debug(i, src[i]);
+
+ if (!re[i]) {
+ re[i] = new RegExp(src[i]);
+ }
+ }
+
+ exports.parse = parse;
+
+ function parse(version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ if (version instanceof SemVer) {
+ return version;
+ }
+
+ if (typeof version !== 'string') {
+ return null;
+ }
+
+ if (version.length > MAX_LENGTH) {
+ return null;
+ }
+
+ var r = options.loose ? re[t.LOOSE] : re[t.FULL];
+
+ if (!r.test(version)) {
+ return null;
+ }
+
+ try {
+ return new SemVer(version, options);
+ } catch (er) {
+ return null;
+ }
+ }
+
+ exports.valid = valid;
+
+ function valid(version, options) {
+ var v = parse(version, options);
+ return v ? v.version : null;
+ }
+
+ exports.clean = clean;
+
+ function clean(version, options) {
+ var s = parse(version.trim().replace(/^[=v]+/, ''), options);
+ return s ? s.version : null;
+ }
+
+ exports.SemVer = SemVer;
+
+ function SemVer(version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ if (version instanceof SemVer) {
+ if (version.loose === options.loose) {
+ return version;
+ } else {
+ version = version.version;
+ }
+ } else if (typeof version !== 'string') {
+ throw new TypeError('Invalid Version: ' + version);
+ }
+
+ if (version.length > MAX_LENGTH) {
+ throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters');
+ }
+
+ if (!(this instanceof SemVer)) {
+ return new SemVer(version, options);
+ }
+
+ debug('SemVer', version, options);
+ this.options = options;
+ this.loose = !!options.loose;
+ var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);
+
+ if (!m) {
+ throw new TypeError('Invalid Version: ' + version);
+ }
+
+ this.raw = version; // these are actually numbers
+
+ this.major = +m[1];
+ this.minor = +m[2];
+ this.patch = +m[3];
+
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError('Invalid major version');
+ }
+
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError('Invalid minor version');
+ }
+
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError('Invalid patch version');
+ } // numberify any prerelease numeric ids
+
+
+ if (!m[4]) {
+ this.prerelease = [];
+ } else {
+ this.prerelease = m[4].split('.').map(function (id) {
+ if (/^[0-9]+$/.test(id)) {
+ var num = +id;
+
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
+ return num;
+ }
+ }
+
+ return id;
+ });
+ }
+
+ this.build = m[5] ? m[5].split('.') : [];
+ this.format();
+ }
+
+ SemVer.prototype.format = function () {
+ this.version = this.major + '.' + this.minor + '.' + this.patch;
+
+ if (this.prerelease.length) {
+ this.version += '-' + this.prerelease.join('.');
+ }
+
+ return this.version;
+ };
+
+ SemVer.prototype.toString = function () {
+ return this.version;
+ };
+
+ SemVer.prototype.compare = function (other) {
+ debug('SemVer.compare', this.version, this.options, other);
+
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ }
+
+ return this.compareMain(other) || this.comparePre(other);
+ };
+
+ SemVer.prototype.compareMain = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ }
+
+ return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
+ };
+
+ SemVer.prototype.comparePre = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ } // NOT having a prerelease is > having one
+
+
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1;
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1;
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0;
+ }
+
+ var i = 0;
+
+ do {
+ var a = this.prerelease[i];
+ var b = other.prerelease[i];
+ debug('prerelease compare', i, a, b);
+
+ if (a === undefined && b === undefined) {
+ return 0;
+ } else if (b === undefined) {
+ return 1;
+ } else if (a === undefined) {
+ return -1;
+ } else if (a === b) {
+ continue;
+ } else {
+ return compareIdentifiers(a, b);
+ }
+ } while (++i);
+ };
+
+ SemVer.prototype.compareBuild = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ }
+
+ var i = 0;
+
+ do {
+ var a = this.build[i];
+ var b = other.build[i];
+ debug('prerelease compare', i, a, b);
+
+ if (a === undefined && b === undefined) {
+ return 0;
+ } else if (b === undefined) {
+ return 1;
+ } else if (a === undefined) {
+ return -1;
+ } else if (a === b) {
+ continue;
+ } else {
+ return compareIdentifiers(a, b);
+ }
+ } while (++i);
+ }; // preminor will bump the version up to the next minor release, and immediately
+ // down to pre-release. premajor and prepatch work the same way.
+
+
+ SemVer.prototype.inc = function (release, identifier) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor = 0;
+ this.major++;
+ this.inc('pre', identifier);
+ break;
+
+ case 'preminor':
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor++;
+ this.inc('pre', identifier);
+ break;
+
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0;
+ this.inc('patch', identifier);
+ this.inc('pre', identifier);
+ break;
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+
+ case 'prerelease':
+ if (this.prerelease.length === 0) {
+ this.inc('patch', identifier);
+ }
+
+ this.inc('pre', identifier);
+ break;
+
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
+ this.major++;
+ }
+
+ this.minor = 0;
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++;
+ }
+
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) {
+ this.patch++;
+ }
+
+ this.prerelease = [];
+ break;
+ // This probably shouldn't be used publicly.
+ // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+
+ case 'pre':
+ if (this.prerelease.length === 0) {
+ this.prerelease = [0];
+ } else {
+ var i = this.prerelease.length;
+
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++;
+ i = -2;
+ }
+ }
+
+ if (i === -1) {
+ // didn't increment anything
+ this.prerelease.push(0);
+ }
+ }
+
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ if (this.prerelease[0] === identifier) {
+ if (isNaN(this.prerelease[1])) {
+ this.prerelease = [identifier, 0];
+ }
+ } else {
+ this.prerelease = [identifier, 0];
+ }
+ }
+
+ break;
+
+ default:
+ throw new Error('invalid increment argument: ' + release);
+ }
+
+ this.format();
+ this.raw = this.version;
+ return this;
+ };
+
+ exports.inc = inc;
+
+ function inc(version, release, loose, identifier) {
+ if (typeof loose === 'string') {
+ identifier = loose;
+ loose = undefined;
+ }
+
+ try {
+ return new SemVer(version, loose).inc(release, identifier).version;
+ } catch (er) {
+ return null;
+ }
+ }
+
+ exports.diff = diff;
+
+ function diff(version1, version2) {
+ if (eq(version1, version2)) {
+ return null;
+ } else {
+ var v1 = parse(version1);
+ var v2 = parse(version2);
+ var prefix = '';
+
+ if (v1.prerelease.length || v2.prerelease.length) {
+ prefix = 'pre';
+ var defaultResult = 'prerelease';
+ }
+
+ for (var key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return prefix + key;
+ }
+ }
+ }
+
+ return defaultResult; // may be undefined
+ }
+ }
+
+ exports.compareIdentifiers = compareIdentifiers;
+ var numeric = /^[0-9]+$/;
+
+ function compareIdentifiers(a, b) {
+ var anum = numeric.test(a);
+ var bnum = numeric.test(b);
+
+ if (anum && bnum) {
+ a = +a;
+ b = +b;
+ }
+
+ return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
+ }
+
+ exports.rcompareIdentifiers = rcompareIdentifiers;
+
+ function rcompareIdentifiers(a, b) {
+ return compareIdentifiers(b, a);
+ }
+
+ exports.major = major;
+
+ function major(a, loose) {
+ return new SemVer(a, loose).major;
+ }
+
+ exports.minor = minor;
+
+ function minor(a, loose) {
+ return new SemVer(a, loose).minor;
+ }
+
+ exports.patch = patch;
+
+ function patch(a, loose) {
+ return new SemVer(a, loose).patch;
+ }
+
+ exports.compare = compare;
+
+ function compare(a, b, loose) {
+ return new SemVer(a, loose).compare(new SemVer(b, loose));
+ }
+
+ exports.compareLoose = compareLoose;
+
+ function compareLoose(a, b) {
+ return compare(a, b, true);
+ }
+
+ exports.compareBuild = compareBuild;
+
+ function compareBuild(a, b, loose) {
+ var versionA = new SemVer(a, loose);
+ var versionB = new SemVer(b, loose);
+ return versionA.compare(versionB) || versionA.compareBuild(versionB);
+ }
+
+ exports.rcompare = rcompare;
+
+ function rcompare(a, b, loose) {
+ return compare(b, a, loose);
+ }
+
+ exports.sort = sort;
+
+ function sort(list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compareBuild(a, b, loose);
+ });
+ }
+
+ exports.rsort = rsort;
+
+ function rsort(list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compareBuild(b, a, loose);
+ });
+ }
+
+ exports.gt = gt;
+
+ function gt(a, b, loose) {
+ return compare(a, b, loose) > 0;
+ }
+
+ exports.lt = lt;
+
+ function lt(a, b, loose) {
+ return compare(a, b, loose) < 0;
+ }
+
+ exports.eq = eq;
+
+ function eq(a, b, loose) {
+ return compare(a, b, loose) === 0;
+ }
+
+ exports.neq = neq;
+
+ function neq(a, b, loose) {
+ return compare(a, b, loose) !== 0;
+ }
+
+ exports.gte = gte;
+
+ function gte(a, b, loose) {
+ return compare(a, b, loose) >= 0;
+ }
+
+ exports.lte = lte;
+
+ function lte(a, b, loose) {
+ return compare(a, b, loose) <= 0;
+ }
+
+ exports.cmp = cmp;
+
+ function cmp(a, op, b, loose) {
+ switch (op) {
+ case '===':
+ if (typeof a === 'object') a = a.version;
+ if (typeof b === 'object') b = b.version;
+ return a === b;
+
+ case '!==':
+ if (typeof a === 'object') a = a.version;
+ if (typeof b === 'object') b = b.version;
+ return a !== b;
+
+ case '':
+ case '=':
+ case '==':
+ return eq(a, b, loose);
+
+ case '!=':
+ return neq(a, b, loose);
+
+ case '>':
+ return gt(a, b, loose);
+
+ case '>=':
+ return gte(a, b, loose);
+
+ case '<':
+ return lt(a, b, loose);
+
+ case '<=':
+ return lte(a, b, loose);
+
+ default:
+ throw new TypeError('Invalid operator: ' + op);
+ }
+ }
+
+ exports.Comparator = Comparator;
+
+ function Comparator(comp, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ if (comp instanceof Comparator) {
+ if (comp.loose === !!options.loose) {
+ return comp;
+ } else {
+ comp = comp.value;
+ }
+ }
+
+ if (!(this instanceof Comparator)) {
+ return new Comparator(comp, options);
+ }
+
+ debug('comparator', comp, options);
+ this.options = options;
+ this.loose = !!options.loose;
+ this.parse(comp);
+
+ if (this.semver === ANY) {
+ this.value = '';
+ } else {
+ this.value = this.operator + this.semver.version;
+ }
+
+ debug('comp', this);
+ }
+
+ var ANY = {};
+
+ Comparator.prototype.parse = function (comp) {
+ var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
+ var m = comp.match(r);
+
+ if (!m) {
+ throw new TypeError('Invalid comparator: ' + comp);
+ }
+
+ this.operator = m[1] !== undefined ? m[1] : '';
+
+ if (this.operator === '=') {
+ this.operator = '';
+ } // if it literally is just '>' or '' then allow anything.
+
+
+ if (!m[2]) {
+ this.semver = ANY;
+ } else {
+ this.semver = new SemVer(m[2], this.options.loose);
+ }
+ };
+
+ Comparator.prototype.toString = function () {
+ return this.value;
+ };
+
+ Comparator.prototype.test = function (version) {
+ debug('Comparator.test', version, this.options.loose);
+
+ if (this.semver === ANY || version === ANY) {
+ return true;
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options);
+ } catch (er) {
+ return false;
+ }
+ }
+
+ return cmp(version, this.operator, this.semver, this.options);
+ };
+
+ Comparator.prototype.intersects = function (comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required');
+ }
+
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ var rangeTmp;
+
+ if (this.operator === '') {
+ if (this.value === '') {
+ return true;
+ }
+
+ rangeTmp = new Range(comp.value, options);
+ return satisfies(this.value, rangeTmp, options);
+ } else if (comp.operator === '') {
+ if (comp.value === '') {
+ return true;
+ }
+
+ rangeTmp = new Range(this.value, options);
+ return satisfies(comp.semver, rangeTmp, options);
+ }
+
+ var sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>');
+ var sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<');
+ var sameSemVer = this.semver.version === comp.semver.version;
+ var differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<=');
+ var oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<');
+ var oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>');
+ return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
+ };
+
+ exports.Range = Range;
+
+ function Range(range, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ if (range instanceof Range) {
+ if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
+ return range;
+ } else {
+ return new Range(range.raw, options);
+ }
+ }
+
+ if (range instanceof Comparator) {
+ return new Range(range.value, options);
+ }
+
+ if (!(this instanceof Range)) {
+ return new Range(range, options);
+ }
+
+ this.options = options;
+ this.loose = !!options.loose;
+ this.includePrerelease = !!options.includePrerelease; // First, split based on boolean or ||
+
+ this.raw = range;
+ this.set = range.split(/\s*\|\|\s*/).map(function (range) {
+ return this.parseRange(range.trim());
+ }, this).filter(function (c) {
+ // throw out any that are not relevant for whatever reason
+ return c.length;
+ });
+
+ if (!this.set.length) {
+ throw new TypeError('Invalid SemVer Range: ' + range);
+ }
+
+ this.format();
+ }
+
+ Range.prototype.format = function () {
+ this.range = this.set.map(function (comps) {
+ return comps.join(' ').trim();
+ }).join('||').trim();
+ return this.range;
+ };
+
+ Range.prototype.toString = function () {
+ return this.range;
+ };
+
+ Range.prototype.parseRange = function (range) {
+ var loose = this.options.loose;
+ range = range.trim(); // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+
+ var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
+ range = range.replace(hr, hyphenReplace);
+ debug('hyphen replace', range); // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+
+ range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
+ debug('comparator trim', range, re[t.COMPARATORTRIM]); // `~ 1.2.3` => `~1.2.3`
+
+ range = range.replace(re[t.TILDETRIM], tildeTrimReplace); // `^ 1.2.3` => `^1.2.3`
+
+ range = range.replace(re[t.CARETTRIM], caretTrimReplace); // normalize spaces
+
+ range = range.split(/\s+/).join(' '); // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
+
+ var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
+ var set = range.split(' ').map(function (comp) {
+ return parseComparator(comp, this.options);
+ }, this).join(' ').split(/\s+/);
+
+ if (this.options.loose) {
+ // in loose mode, throw out any that are not valid comparators
+ set = set.filter(function (comp) {
+ return !!comp.match(compRe);
+ });
+ }
+
+ set = set.map(function (comp) {
+ return new Comparator(comp, this.options);
+ }, this);
+ return set;
+ };
+
+ Range.prototype.intersects = function (range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required');
+ }
+
+ return this.set.some(function (thisComparators) {
+ return isSatisfiable(thisComparators, options) && range.set.some(function (rangeComparators) {
+ return isSatisfiable(rangeComparators, options) && thisComparators.every(function (thisComparator) {
+ return rangeComparators.every(function (rangeComparator) {
+ return thisComparator.intersects(rangeComparator, options);
+ });
+ });
+ });
+ });
+ }; // take a set of comparators and determine whether there
+ // exists a version which can satisfy it
+
+
+ function isSatisfiable(comparators, options) {
+ var result = true;
+ var remainingComparators = comparators.slice();
+ var testComparator = remainingComparators.pop();
+
+ while (result && remainingComparators.length) {
+ result = remainingComparators.every(function (otherComparator) {
+ return testComparator.intersects(otherComparator, options);
+ });
+ testComparator = remainingComparators.pop();
+ }
+
+ return result;
+ } // Mostly just for testing and legacy API reasons
+
+
+ exports.toComparators = toComparators;
+
+ function toComparators(range, options) {
+ return new Range(range, options).set.map(function (comp) {
+ return comp.map(function (c) {
+ return c.value;
+ }).join(' ').trim().split(' ');
+ });
+ } // comprised of xranges, tildes, stars, and gtlt's at this point.
+ // already replaced the hyphen ranges
+ // turn into a set of JUST comparators.
+
+
+ function parseComparator(comp, options) {
+ debug('comp', comp, options);
+ comp = replaceCarets(comp, options);
+ debug('caret', comp);
+ comp = replaceTildes(comp, options);
+ debug('tildes', comp);
+ comp = replaceXRanges(comp, options);
+ debug('xrange', comp);
+ comp = replaceStars(comp, options);
+ debug('stars', comp);
+ return comp;
+ }
+
+ function isX(id) {
+ return !id || id.toLowerCase() === 'x' || id === '*';
+ } // ~, ~> --> * (any, kinda silly)
+ // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
+ // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
+ // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
+ // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
+ // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
+
+
+ function replaceTildes(comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceTilde(comp, options);
+ }).join(' ');
+ }
+
+ function replaceTilde(comp, options) {
+ var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('tilde', comp, _, M, m, p, pr);
+ var ret;
+
+ if (isX(M)) {
+ ret = '';
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
+ } else if (isX(p)) {
+ // ~1.2 == >=1.2.0 <1.3.0
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
+ } else if (pr) {
+ debug('replaceTilde pr', pr);
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
+ } else {
+ // ~1.2.3 == >=1.2.3 <1.3.0
+ ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
+ }
+
+ debug('tilde return', ret);
+ return ret;
+ });
+ } // ^ --> * (any, kinda silly)
+ // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
+ // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
+ // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
+ // ^1.2.3 --> >=1.2.3 <2.0.0
+ // ^1.2.0 --> >=1.2.0 <2.0.0
+
+
+ function replaceCarets(comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceCaret(comp, options);
+ }).join(' ');
+ }
+
+ function replaceCaret(comp, options) {
+ debug('caret', comp, options);
+ var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('caret', comp, _, M, m, p, pr);
+ var ret;
+
+ if (isX(M)) {
+ ret = '';
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
+ } else if (isX(p)) {
+ if (M === '0') {
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
+ } else {
+ ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';
+ }
+ } else if (pr) {
+ debug('replaceCaret pr', pr);
+
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + m + '.' + (+p + 1);
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + (+M + 1) + '.0.0';
+ }
+ } else {
+ debug('no pr');
+
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + m + '.' + (+p + 1);
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + ' <' + (+M + 1) + '.0.0';
+ }
+ }
+
+ debug('caret return', ret);
+ return ret;
+ });
+ }
+
+ function replaceXRanges(comp, options) {
+ debug('replaceXRanges', comp, options);
+ return comp.split(/\s+/).map(function (comp) {
+ return replaceXRange(comp, options);
+ }).join(' ');
+ }
+
+ function replaceXRange(comp, options) {
+ comp = comp.trim();
+ var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
+ return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
+ debug('xRange', comp, ret, gtlt, M, m, p, pr);
+ var xM = isX(M);
+ var xm = xM || isX(m);
+ var xp = xm || isX(p);
+ var anyX = xp;
+
+ if (gtlt === '=' && anyX) {
+ gtlt = '';
+ } // if we're including prereleases in the match, then we need
+ // to fix this to -0, the lowest possible prerelease value
+
+
+ pr = options.includePrerelease ? '-0' : '';
+
+ if (xM) {
+ if (gtlt === '>' || gtlt === '<') {
+ // nothing is allowed
+ ret = '<0.0.0-0';
+ } else {
+ // nothing is forbidden
+ ret = '*';
+ }
+ } else if (gtlt && anyX) {
+ // we know patch is an x, because we have any x at all.
+ // replace X with 0
+ if (xm) {
+ m = 0;
+ }
+
+ p = 0;
+
+ if (gtlt === '>') {
+ // >1 => >=2.0.0
+ // >1.2 => >=1.3.0
+ // >1.2.3 => >= 1.2.4
+ gtlt = '>=';
+
+ if (xm) {
+ M = +M + 1;
+ m = 0;
+ p = 0;
+ } else {
+ m = +m + 1;
+ p = 0;
+ }
+ } else if (gtlt === '<=') {
+ // <=0.7.x is actually <0.8.0, since any 0.7.x should
+ // pass. Similarly, <=7.x is actually <8.0.0, etc.
+ gtlt = '<';
+
+ if (xm) {
+ M = +M + 1;
+ } else {
+ m = +m + 1;
+ }
+ }
+
+ ret = gtlt + M + '.' + m + '.' + p + pr;
+ } else if (xm) {
+ ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr;
+ } else if (xp) {
+ ret = '>=' + M + '.' + m + '.0' + pr + ' <' + M + '.' + (+m + 1) + '.0' + pr;
+ }
+
+ debug('xRange return', ret);
+ return ret;
+ });
+ } // Because * is AND-ed with everything else in the comparator,
+ // and '' means "any version", just remove the *s entirely.
+
+
+ function replaceStars(comp, options) {
+ debug('replaceStars', comp, options); // Looseness is ignored here. star is always as loose as it gets!
+
+ return comp.trim().replace(re[t.STAR], '');
+ } // This function is passed to string.replace(re[t.HYPHENRANGE])
+ // M, m, patch, prerelease, build
+ // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+ // 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
+ // 1.2 - 3.4 => >=1.2.0 <3.5.0
+
+
+ function hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {
+ if (isX(fM)) {
+ from = '';
+ } else if (isX(fm)) {
+ from = '>=' + fM + '.0.0';
+ } else if (isX(fp)) {
+ from = '>=' + fM + '.' + fm + '.0';
+ } else {
+ from = '>=' + from;
+ }
+
+ if (isX(tM)) {
+ to = '';
+ } else if (isX(tm)) {
+ to = '<' + (+tM + 1) + '.0.0';
+ } else if (isX(tp)) {
+ to = '<' + tM + '.' + (+tm + 1) + '.0';
+ } else if (tpr) {
+ to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;
+ } else {
+ to = '<=' + to;
+ }
+
+ return (from + ' ' + to).trim();
+ } // if ANY of the sets match ALL of its comparators, then pass
+
+
+ Range.prototype.test = function (version) {
+ if (!version) {
+ return false;
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options);
+ } catch (er) {
+ return false;
+ }
+ }
+
+ for (var i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) {
+ return true;
+ }
+ }
+
+ return false;
+ };
+
+ function testSet(set, version, options) {
+ for (var i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) {
+ return false;
+ }
+ }
+
+ if (version.prerelease.length && !options.includePrerelease) {
+ // Find the set of versions that are allowed to have prereleases
+ // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+ // That should allow `1.2.3-pr.2` to pass.
+ // However, `1.2.4-alpha.notready` should NOT be allowed,
+ // even though it's within the range set by the comparators.
+ for (i = 0; i < set.length; i++) {
+ debug(set[i].semver);
+
+ if (set[i].semver === ANY) {
+ continue;
+ }
+
+ if (set[i].semver.prerelease.length > 0) {
+ var allowed = set[i].semver;
+
+ if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {
+ return true;
+ }
+ }
+ } // Version has a -pre, but it's not one of the ones we like.
+
+
+ return false;
+ }
+
+ return true;
+ }
+
+ exports.satisfies = satisfies;
+
+ function satisfies(version, range, options) {
+ try {
+ range = new Range(range, options);
+ } catch (er) {
+ return false;
+ }
+
+ return range.test(version);
+ }
+
+ exports.maxSatisfying = maxSatisfying;
+
+ function maxSatisfying(versions, range, options) {
+ var max = null;
+ var maxSV = null;
+
+ try {
+ var rangeObj = new Range(range, options);
+ } catch (er) {
+ return null;
+ }
+
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!max || maxSV.compare(v) === -1) {
+ // compare(max, v, true)
+ max = v;
+ maxSV = new SemVer(max, options);
+ }
+ }
+ });
+ return max;
+ }
+
+ exports.minSatisfying = minSatisfying;
+
+ function minSatisfying(versions, range, options) {
+ var min = null;
+ var minSV = null;
+
+ try {
+ var rangeObj = new Range(range, options);
+ } catch (er) {
+ return null;
+ }
+
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!min || minSV.compare(v) === 1) {
+ // compare(min, v, true)
+ min = v;
+ minSV = new SemVer(min, options);
+ }
+ }
+ });
+ return min;
+ }
+
+ exports.minVersion = minVersion;
+
+ function minVersion(range, loose) {
+ range = new Range(range, loose);
+ var minver = new SemVer('0.0.0');
+
+ if (range.test(minver)) {
+ return minver;
+ }
+
+ minver = new SemVer('0.0.0-0');
+
+ if (range.test(minver)) {
+ return minver;
+ }
+
+ minver = null;
+
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i];
+ comparators.forEach(function (comparator) {
+ // Clone to avoid manipulating the comparator's semver object.
+ var compver = new SemVer(comparator.semver.version);
+
+ switch (comparator.operator) {
+ case '>':
+ if (compver.prerelease.length === 0) {
+ compver.patch++;
+ } else {
+ compver.prerelease.push(0);
+ }
+
+ compver.raw = compver.format();
+
+ /* fallthrough */
+
+ case '':
+ case '>=':
+ if (!minver || gt(minver, compver)) {
+ minver = compver;
+ }
+
+ break;
+
+ case '<':
+ case '<=':
+ /* Ignore maximum versions */
+ break;
+
+ /* istanbul ignore next */
+
+ default:
+ throw new Error('Unexpected operation: ' + comparator.operator);
+ }
+ });
+ }
+
+ if (minver && range.test(minver)) {
+ return minver;
+ }
+
+ return null;
+ }
+
+ exports.validRange = validRange;
+
+ function validRange(range, options) {
+ try {
+ // Return '*' instead of '' so that truthiness works.
+ // This will throw if it's invalid anyway
+ return new Range(range, options).range || '*';
+ } catch (er) {
+ return null;
+ }
+ } // Determine if version is less than all the versions possible in the range
+
+
+ exports.ltr = ltr;
+
+ function ltr(version, range, options) {
+ return outside(version, range, '<', options);
+ } // Determine if version is greater than all the versions possible in the range.
+
+
+ exports.gtr = gtr;
+
+ function gtr(version, range, options) {
+ return outside(version, range, '>', options);
+ }
+
+ exports.outside = outside;
+
+ function outside(version, range, hilo, options) {
+ version = new SemVer(version, options);
+ range = new Range(range, options);
+ var gtfn, ltefn, ltfn, comp, ecomp;
+
+ switch (hilo) {
+ case '>':
+ gtfn = gt;
+ ltefn = lte;
+ ltfn = lt;
+ comp = '>';
+ ecomp = '>=';
+ break;
+
+ case '<':
+ gtfn = lt;
+ ltefn = gte;
+ ltfn = gt;
+ comp = '<';
+ ecomp = '<=';
+ break;
+
+ default:
+ throw new TypeError('Must provide a hilo val of "<" or ">"');
+ } // If it satisifes the range it is not outside
+
+
+ if (satisfies(version, range, options)) {
+ return false;
+ } // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
+
+
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i];
+ var high = null;
+ var low = null;
+ comparators.forEach(function (comparator) {
+ if (comparator.semver === ANY) {
+ comparator = new Comparator('>=0.0.0');
+ }
+
+ high = high || comparator;
+ low = low || comparator;
+
+ if (gtfn(comparator.semver, high.semver, options)) {
+ high = comparator;
+ } else if (ltfn(comparator.semver, low.semver, options)) {
+ low = comparator;
+ }
+ }); // If the edge version comparator has a operator then our version
+ // isn't outside it
+
+ if (high.operator === comp || high.operator === ecomp) {
+ return false;
+ } // If the lowest version comparator has an operator and our version
+ // is less than it then it isn't higher than the range
+
+
+ if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
+ return false;
+ } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ exports.prerelease = prerelease;
+
+ function prerelease(version, options) {
+ var parsed = parse(version, options);
+ return parsed && parsed.prerelease.length ? parsed.prerelease : null;
+ }
+
+ exports.intersects = intersects;
+
+ function intersects(r1, r2, options) {
+ r1 = new Range(r1, options);
+ r2 = new Range(r2, options);
+ return r1.intersects(r2);
+ }
+
+ exports.coerce = coerce;
+
+ function coerce(version, options) {
+ if (version instanceof SemVer) {
+ return version;
+ }
+
+ if (typeof version === 'number') {
+ version = String(version);
+ }
+
+ if (typeof version !== 'string') {
+ return null;
+ }
+
+ options = options || {};
+ var match = null;
+
+ if (!options.rtl) {
+ match = version.match(re[t.COERCE]);
+ } else {
+ // Find the right-most coercible string that does not share
+ // a terminus with a more left-ward coercible string.
+ // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
+ //
+ // Walk through the string checking with a /g regexp
+ // Manually set the index so as to pick up overlapping matches.
+ // Stop when we get a match that ends at the string end, since no
+ // coercible string can be more right-ward without the same terminus.
+ var next;
+
+ while ((next = re[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) {
+ if (!match || next.index + next[0].length !== match.index + match[0].length) {
+ match = next;
+ }
+
+ re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
+ } // leave it in a clean state
+
+
+ re[t.COERCERTL].lastIndex = -1;
+ }
+
+ if (match === null) {
+ return null;
+ }
+
+ return parse(match[2] + '.' + (match[3] || '0') + '.' + (match[4] || '0'), options);
+ }
+});
+var semver_1 = semver.SEMVER_SPEC_VERSION;
+var semver_2 = semver.re;
+var semver_3 = semver.src;
+var semver_4 = semver.tokens;
+var semver_5 = semver.parse;
+var semver_6 = semver.valid;
+var semver_7 = semver.clean;
+var semver_8 = semver.SemVer;
+var semver_9 = semver.inc;
+var semver_10 = semver.diff;
+var semver_11 = semver.compareIdentifiers;
+var semver_12 = semver.rcompareIdentifiers;
+var semver_13 = semver.major;
+var semver_14 = semver.minor;
+var semver_15 = semver.patch;
+var semver_16 = semver.compare;
+var semver_17 = semver.compareLoose;
+var semver_18 = semver.compareBuild;
+var semver_19 = semver.rcompare;
+var semver_20 = semver.sort;
+var semver_21 = semver.rsort;
+var semver_22 = semver.gt;
+var semver_23 = semver.lt;
+var semver_24 = semver.eq;
+var semver_25 = semver.neq;
+var semver_26 = semver.gte;
+var semver_27 = semver.lte;
+var semver_28 = semver.cmp;
+var semver_29 = semver.Comparator;
+var semver_30 = semver.Range;
+var semver_31 = semver.toComparators;
+var semver_32 = semver.satisfies;
+var semver_33 = semver.maxSatisfying;
+var semver_34 = semver.minSatisfying;
+var semver_35 = semver.minVersion;
+var semver_36 = semver.validRange;
+var semver_37 = semver.ltr;
+var semver_38 = semver.gtr;
+var semver_39 = semver.outside;
+var semver_40 = semver.prerelease;
+var semver_41 = semver.intersects;
+var semver_42 = semver.coerce;
+
+var arrayify = function arrayify(object, keyName) {
+ return Object.keys(object).reduce(function (array, key) {
+ return array.concat(Object.assign({
+ [keyName]: key
+ }, object[key]));
+ }, []);
+};
+
+var dedent_1 = createCommonjsModule(function (module) {
+
+ function dedent(strings) {
+ var raw = void 0;
+
+ if (typeof strings === "string") {
+ // dedent can be used as a plain function
+ raw = [strings];
+ } else {
+ raw = strings.raw;
+ } // first, perform interpolation
+
+
+ var result = "";
+
+ for (var i = 0; i < raw.length; i++) {
+ result += raw[i]. // join lines when there is a suppressed newline
+ replace(/\\\n[ \t]*/g, ""). // handle escaped backticks
+ replace(/\\`/g, "`");
+
+ if (i < (arguments.length <= 1 ? 0 : arguments.length - 1)) {
+ result += arguments.length <= i + 1 ? undefined : arguments[i + 1];
+ }
+ } // now strip indentation
+
+
+ var lines = result.split("\n");
+ var mindent = null;
+ lines.forEach(function (l) {
+ var m = l.match(/^(\s+)\S+/);
+
+ if (m) {
+ var indent = m[1].length;
+
+ if (!mindent) {
+ // this is the first indented line
+ mindent = indent;
+ } else {
+ mindent = Math.min(mindent, indent);
+ }
+ }
+ });
+
+ if (mindent !== null) {
+ result = lines.map(function (l) {
+ return l[0] === " " ? l.slice(mindent) : l;
+ }).join("\n");
+ } // dedent eats leading and trailing whitespace too
+
+
+ result = result.trim(); // handle escaped newlines at the end to ensure they don't get stripped too
+
+ return result.replace(/\\n/g, "\n");
+ }
+
+ {
+ module.exports = dedent;
+ }
+});
+
+var CATEGORY_CONFIG = "Config";
+var CATEGORY_EDITOR = "Editor";
+var CATEGORY_FORMAT = "Format";
+var CATEGORY_OTHER = "Other";
+var CATEGORY_OUTPUT = "Output";
+var CATEGORY_GLOBAL = "Global";
+var CATEGORY_SPECIAL = "Special";
+/**
+ * @typedef {Object} OptionInfo
+ * @property {string} [since] - available since version
+ * @property {string} category
+ * @property {'int' | 'boolean' | 'choice' | 'path'} type
+ * @property {boolean} [array] - indicate it's an array of the specified type
+ * @property {OptionValueInfo} [default]
+ * @property {OptionRangeInfo} [range] - for type int
+ * @property {string} description
+ * @property {string} [deprecated] - deprecated since version
+ * @property {OptionRedirectInfo} [redirect] - redirect deprecated option
+ * @property {(value: any) => boolean} [exception]
+ * @property {OptionChoiceInfo[]} [choices] - for type choice
+ * @property {string} [cliName]
+ * @property {string} [cliCategory]
+ * @property {string} [cliDescription]
+ *
+ * @typedef {number | boolean | string} OptionValue
+ * @typedef {OptionValue | [{ value: OptionValue[] }] | Array<{ since: string, value: OptionValue}>} OptionValueInfo
+ *
+ * @typedef {Object} OptionRedirectInfo
+ * @property {string} option
+ * @property {OptionValue} value
+ *
+ * @typedef {Object} OptionRangeInfo
+ * @property {number} start - recommended range start
+ * @property {number} end - recommended range end
+ * @property {number} step - recommended range step
+ *
+ * @typedef {Object} OptionChoiceInfo
+ * @property {boolean | string} value - boolean for the option that is originally boolean type
+ * @property {string} description
+ * @property {string} [since] - undefined if available since the first version of the option
+ * @property {string} [deprecated] - deprecated since version
+ * @property {OptionValueInfo} [redirect] - redirect deprecated value
+ */
+
+/** @type {{ [name: string]: OptionInfo }} */
+
+var options = {
+ cursorOffset: {
+ since: "1.4.0",
+ category: CATEGORY_SPECIAL,
+ type: "int",
+ default: -1,
+ range: {
+ start: -1,
+ end: Infinity,
+ step: 1
+ },
+ description: dedent_1`
+ Print (to stderr) where a cursor at the given position would move to after formatting.
+ This option cannot be used with --range-start and --range-end.
+ `,
+ cliCategory: CATEGORY_EDITOR
+ },
+ endOfLine: {
+ since: "1.15.0",
+ category: CATEGORY_GLOBAL,
+ type: "choice",
+ default: "auto",
+ description: "Which end of line characters to apply.",
+ choices: [{
+ value: "auto",
+ description: dedent_1`
+ Maintain existing
+ (mixed values within one file are normalised by looking at what's used after the first line)
+ `
+ }, {
+ value: "lf",
+ description: "Line Feed only (\\n), common on Linux and macOS as well as inside git repos"
+ }, {
+ value: "crlf",
+ description: "Carriage Return + Line Feed characters (\\r\\n), common on Windows"
+ }, {
+ value: "cr",
+ description: "Carriage Return character only (\\r), used very rarely"
+ }]
+ },
+ filepath: {
+ since: "1.4.0",
+ category: CATEGORY_SPECIAL,
+ type: "path",
+ description: "Specify the input filepath. This will be used to do parser inference.",
+ cliName: "stdin-filepath",
+ cliCategory: CATEGORY_OTHER,
+ cliDescription: "Path to the file to pretend that stdin comes from."
+ },
+ insertPragma: {
+ since: "1.8.0",
+ category: CATEGORY_SPECIAL,
+ type: "boolean",
+ default: false,
+ description: "Insert @format pragma into file's first docblock comment.",
+ cliCategory: CATEGORY_OTHER
+ },
+ parser: {
+ since: "0.0.10",
+ category: CATEGORY_GLOBAL,
+ type: "choice",
+ default: [{
+ since: "0.0.10",
+ value: "babylon"
+ }, {
+ since: "1.13.0",
+ value: undefined
+ }],
+ description: "Which parser to use.",
+ exception: function exception(value) {
+ return typeof value === "string" || typeof value === "function";
+ },
+ choices: [{
+ value: "flow",
+ description: "Flow"
+ }, {
+ value: "babylon",
+ description: "JavaScript",
+ deprecated: "1.16.0",
+ redirect: "babel"
+ }, {
+ value: "babel",
+ since: "1.16.0",
+ description: "JavaScript"
+ }, {
+ value: "babel-flow",
+ since: "1.16.0",
+ description: "Flow"
+ }, {
+ value: "typescript",
+ since: "1.4.0",
+ description: "TypeScript"
+ }, {
+ value: "css",
+ since: "1.7.1",
+ description: "CSS"
+ }, {
+ value: "postcss",
+ since: "1.4.0",
+ description: "CSS/Less/SCSS",
+ deprecated: "1.7.1",
+ redirect: "css"
+ }, {
+ value: "less",
+ since: "1.7.1",
+ description: "Less"
+ }, {
+ value: "scss",
+ since: "1.7.1",
+ description: "SCSS"
+ }, {
+ value: "json",
+ since: "1.5.0",
+ description: "JSON"
+ }, {
+ value: "json5",
+ since: "1.13.0",
+ description: "JSON5"
+ }, {
+ value: "json-stringify",
+ since: "1.13.0",
+ description: "JSON.stringify"
+ }, {
+ value: "graphql",
+ since: "1.5.0",
+ description: "GraphQL"
+ }, {
+ value: "markdown",
+ since: "1.8.0",
+ description: "Markdown"
+ }, {
+ value: "mdx",
+ since: "1.15.0",
+ description: "MDX"
+ }, {
+ value: "vue",
+ since: "1.10.0",
+ description: "Vue"
+ }, {
+ value: "yaml",
+ since: "1.14.0",
+ description: "YAML"
+ }, {
+ value: "glimmer",
+ since: null,
+ description: "Handlebars"
+ }, {
+ value: "html",
+ since: "1.15.0",
+ description: "HTML"
+ }, {
+ value: "angular",
+ since: "1.15.0",
+ description: "Angular"
+ }, {
+ value: "lwc",
+ since: "1.17.0",
+ description: "Lightning Web Components"
+ }]
+ },
+ plugins: {
+ since: "1.10.0",
+ type: "path",
+ array: true,
+ default: [{
+ value: []
+ }],
+ category: CATEGORY_GLOBAL,
+ description: "Add a plugin. Multiple plugins can be passed as separate `--plugin`s.",
+ exception: function exception(value) {
+ return typeof value === "string" || typeof value === "object";
+ },
+ cliName: "plugin",
+ cliCategory: CATEGORY_CONFIG
+ },
+ pluginSearchDirs: {
+ since: "1.13.0",
+ type: "path",
+ array: true,
+ default: [{
+ value: []
+ }],
+ category: CATEGORY_GLOBAL,
+ description: dedent_1`
+ Custom directory that contains prettier plugins in node_modules subdirectory.
+ Overrides default behavior when plugins are searched relatively to the location of Prettier.
+ Multiple values are accepted.
+ `,
+ exception: function exception(value) {
+ return typeof value === "string" || typeof value === "object";
+ },
+ cliName: "plugin-search-dir",
+ cliCategory: CATEGORY_CONFIG
+ },
+ printWidth: {
+ since: "0.0.0",
+ category: CATEGORY_GLOBAL,
+ type: "int",
+ default: 80,
+ description: "The line length where Prettier will try wrap.",
+ range: {
+ start: 0,
+ end: Infinity,
+ step: 1
+ }
+ },
+ rangeEnd: {
+ since: "1.4.0",
+ category: CATEGORY_SPECIAL,
+ type: "int",
+ default: Infinity,
+ range: {
+ start: 0,
+ end: Infinity,
+ step: 1
+ },
+ description: dedent_1`
+ Format code ending at a given character offset (exclusive).
+ The range will extend forwards to the end of the selected statement.
+ This option cannot be used with --cursor-offset.
+ `,
+ cliCategory: CATEGORY_EDITOR
+ },
+ rangeStart: {
+ since: "1.4.0",
+ category: CATEGORY_SPECIAL,
+ type: "int",
+ default: 0,
+ range: {
+ start: 0,
+ end: Infinity,
+ step: 1
+ },
+ description: dedent_1`
+ Format code starting at a given character offset.
+ The range will extend backwards to the start of the first line containing the selected statement.
+ This option cannot be used with --cursor-offset.
+ `,
+ cliCategory: CATEGORY_EDITOR
+ },
+ requirePragma: {
+ since: "1.7.0",
+ category: CATEGORY_SPECIAL,
+ type: "boolean",
+ default: false,
+ description: dedent_1`
+ Require either '@prettier' or '@format' to be present in the file's first docblock comment
+ in order for it to be formatted.
+ `,
+ cliCategory: CATEGORY_OTHER
+ },
+ tabWidth: {
+ type: "int",
+ category: CATEGORY_GLOBAL,
+ default: 2,
+ description: "Number of spaces per indentation level.",
+ range: {
+ start: 0,
+ end: Infinity,
+ step: 1
+ }
+ },
+ useFlowParser: {
+ since: "0.0.0",
+ category: CATEGORY_GLOBAL,
+ type: "boolean",
+ default: [{
+ since: "0.0.0",
+ value: false
+ }, {
+ since: "1.15.0",
+ value: undefined
+ }],
+ deprecated: "0.0.10",
+ description: "Use flow parser.",
+ redirect: {
+ option: "parser",
+ value: "flow"
+ },
+ cliName: "flow-parser"
+ },
+ useTabs: {
+ since: "1.0.0",
+ category: CATEGORY_GLOBAL,
+ type: "boolean",
+ default: false,
+ description: "Indent with tabs instead of spaces."
+ }
+};
+var coreOptions = {
+ CATEGORY_CONFIG,
+ CATEGORY_EDITOR,
+ CATEGORY_FORMAT,
+ CATEGORY_OTHER,
+ CATEGORY_OUTPUT,
+ CATEGORY_GLOBAL,
+ CATEGORY_SPECIAL,
+ options
+};
+
+var require$$0 = getCjsExportFromNamespace(_package$1);
+
+var currentVersion = require$$0.version;
+var coreOptions$1 = coreOptions.options;
+
+function getSupportInfo(version, opts) {
+ opts = Object.assign({
+ plugins: [],
+ showUnreleased: false,
+ showDeprecated: false,
+ showInternal: false
+ }, opts);
+
+ if (!version) {
+ // pre-release version is smaller than the normal version in semver,
+ // we need to treat it as the normal one so as to test new features.
+ version = currentVersion.split("-", 1)[0];
+ }
+
+ var plugins = opts.plugins;
+ var options = arrayify(Object.assign(plugins.reduce(function (currentOptions, plugin) {
+ return Object.assign(currentOptions, plugin.options);
+ }, {}), coreOptions$1), "name").sort(function (a, b) {
+ return a.name === b.name ? 0 : a.name < b.name ? -1 : 1;
+ }).filter(filterSince).filter(filterDeprecated).map(mapDeprecated).map(mapInternal).map(function (option) {
+ var newOption = Object.assign({}, option);
+
+ if (Array.isArray(newOption.default)) {
+ newOption.default = newOption.default.length === 1 ? newOption.default[0].value : newOption.default.filter(filterSince).sort(function (info1, info2) {
+ return semver.compare(info2.since, info1.since);
+ })[0].value;
+ }
+
+ if (Array.isArray(newOption.choices)) {
+ newOption.choices = newOption.choices.filter(filterSince).filter(filterDeprecated).map(mapDeprecated);
+ }
+
+ return newOption;
+ }).map(function (option) {
+ var filteredPlugins = plugins.filter(function (plugin) {
+ return plugin.defaultOptions && plugin.defaultOptions[option.name] !== undefined;
+ });
+ var pluginDefaults = filteredPlugins.reduce(function (reduced, plugin) {
+ reduced[plugin.name] = plugin.defaultOptions[option.name];
+ return reduced;
+ }, {});
+ return Object.assign(option, {
+ pluginDefaults
+ });
+ });
+ var usePostCssParser = semver.lt(version, "1.7.1");
+ var useBabylonParser = semver.lt(version, "1.16.0");
+ var languages = plugins.reduce(function (all, plugin) {
+ return all.concat(plugin.languages || []);
+ }, []).filter(filterSince).map(function (language) {
+ // Prevent breaking changes
+ if (language.name === "Markdown") {
+ return Object.assign({}, language, {
+ parsers: ["markdown"]
+ });
+ }
+
+ if (language.name === "TypeScript") {
+ return Object.assign({}, language, {
+ parsers: ["typescript"]
+ });
+ } // "babylon" was renamed to "babel" in 1.16.0
+
+
+ if (useBabylonParser && language.parsers.indexOf("babel") !== -1) {
+ return Object.assign({}, language, {
+ parsers: language.parsers.map(function (parser) {
+ return parser === "babel" ? "babylon" : parser;
+ })
+ });
+ }
+
+ if (usePostCssParser && (language.name === "CSS" || language.group === "CSS")) {
+ return Object.assign({}, language, {
+ parsers: ["postcss"]
+ });
+ }
+
+ return language;
+ });
+ return {
+ languages,
+ options
+ };
+
+ function filterSince(object) {
+ return opts.showUnreleased || !("since" in object) || object.since && semver.gte(version, object.since);
+ }
+
+ function filterDeprecated(object) {
+ return opts.showDeprecated || !("deprecated" in object) || object.deprecated && semver.lt(version, object.deprecated);
+ }
+
+ function mapDeprecated(object) {
+ if (!object.deprecated || opts.showDeprecated) {
+ return object;
+ }
+
+ var newObject = Object.assign({}, object);
+ delete newObject.deprecated;
+ delete newObject.redirect;
+ return newObject;
+ }
+
+ function mapInternal(object) {
+ if (opts.showInternal) {
+ return object;
+ }
+
+ var newObject = Object.assign({}, object);
+ delete newObject.cliName;
+ delete newObject.cliCategory;
+ delete newObject.cliDescription;
+ return newObject;
+ }
+}
+
+var support = {
+ getSupportInfo
+};
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at http://www.apache.org/licenses/LICENSE-2.0
+
+THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+MERCHANTABLITY OR NON-INFRINGEMENT.
+
+See the Apache Version 2.0 License for specific language governing permissions
+and limitations under the License.
+***************************************************************************** */
+
+/* global Reflect, Promise */
+var _extendStatics = function extendStatics(d, b) {
+ _extendStatics = Object.setPrototypeOf || {
+ __proto__: []
+ } instanceof Array && function (d, b) {
+ d.__proto__ = b;
+ } || function (d, b) {
+ for (var p in b) {
+ if (b.hasOwnProperty(p)) d[p] = b[p];
+ }
+ };
+
+ return _extendStatics(d, b);
+};
+
+function __extends(d, b) {
+ _extendStatics(d, b);
+
+ function __() {
+ this.constructor = d;
+ }
+
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+}
+
+var _assign = function __assign() {
+ _assign = Object.assign || function __assign(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+
+ for (var p in s) {
+ if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+ }
+ }
+
+ return t;
+ };
+
+ return _assign.apply(this, arguments);
+};
+function __rest(s, e) {
+ var t = {};
+
+ for (var p in s) {
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
+ }
+
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
+ }
+ return t;
+}
+function __decorate(decorators, target, key, desc) {
+ var c = arguments.length,
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
+ d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
+ if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ }
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+}
+function __param(paramIndex, decorator) {
+ return function (target, key) {
+ decorator(target, key, paramIndex);
+ };
+}
+function __metadata(metadataKey, metadataValue) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+}
+function __awaiter(thisArg, _arguments, P, generator) {
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) {
+ try {
+ step(generator.next(value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function rejected(value) {
+ try {
+ step(generator["throw"](value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function step(result) {
+ result.done ? resolve(result.value) : new P(function (resolve) {
+ resolve(result.value);
+ }).then(fulfilled, rejected);
+ }
+
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+}
+function __generator(thisArg, body) {
+ var _ = {
+ label: 0,
+ sent: function sent() {
+ if (t[0] & 1) throw t[1];
+ return t[1];
+ },
+ trys: [],
+ ops: []
+ },
+ f,
+ y,
+ t,
+ g;
+ return g = {
+ next: verb(0),
+ "throw": verb(1),
+ "return": verb(2)
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
+ return this;
+ }), g;
+
+ function verb(n) {
+ return function (v) {
+ return step([n, v]);
+ };
+ }
+
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+
+ while (_) {
+ try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+
+ switch (op[0]) {
+ case 0:
+ case 1:
+ t = op;
+ break;
+
+ case 4:
+ _.label++;
+ return {
+ value: op[1],
+ done: false
+ };
+
+ case 5:
+ _.label++;
+ y = op[1];
+ op = [0];
+ continue;
+
+ case 7:
+ op = _.ops.pop();
+
+ _.trys.pop();
+
+ continue;
+
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
+ _ = 0;
+ continue;
+ }
+
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
+ _.label = op[1];
+ break;
+ }
+
+ if (op[0] === 6 && _.label < t[1]) {
+ _.label = t[1];
+ t = op;
+ break;
+ }
+
+ if (t && _.label < t[2]) {
+ _.label = t[2];
+
+ _.ops.push(op);
+
+ break;
+ }
+
+ if (t[2]) _.ops.pop();
+
+ _.trys.pop();
+
+ continue;
+ }
+
+ op = body.call(thisArg, _);
+ } catch (e) {
+ op = [6, e];
+ y = 0;
+ } finally {
+ f = t = 0;
+ }
+ }
+
+ if (op[0] & 5) throw op[1];
+ return {
+ value: op[0] ? op[1] : void 0,
+ done: true
+ };
+ }
+}
+function __exportStar(m, exports) {
+ for (var p in m) {
+ if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+}
+function __values(o) {
+ var m = typeof Symbol === "function" && o[Symbol.iterator],
+ i = 0;
+ if (m) return m.call(o);
+ return {
+ next: function next() {
+ if (o && i >= o.length) o = void 0;
+ return {
+ value: o && o[i++],
+ done: !o
+ };
+ }
+ };
+}
+function __read(o, n) {
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
+ if (!m) return o;
+ var i = m.call(o),
+ r,
+ ar = [],
+ e;
+
+ try {
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {
+ ar.push(r.value);
+ }
+ } catch (error) {
+ e = {
+ error: error
+ };
+ } finally {
+ try {
+ if (r && !r.done && (m = i["return"])) m.call(i);
+ } finally {
+ if (e) throw e.error;
+ }
+ }
+
+ return ar;
+}
+function __spread() {
+ for (var ar = [], i = 0; i < arguments.length; i++) {
+ ar = ar.concat(__read(arguments[i]));
+ }
+
+ return ar;
+}
+function __spreadArrays() {
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) {
+ s += arguments[i].length;
+ }
+
+ for (var r = Array(s), k = 0, i = 0; i < il; i++) {
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {
+ r[k] = a[j];
+ }
+ }
+
+ return r;
+}
+function __await(v) {
+ return this instanceof __await ? (this.v = v, this) : new __await(v);
+}
+function __asyncGenerator(thisArg, _arguments, generator) {
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+ var g = generator.apply(thisArg, _arguments || []),
+ i,
+ q = [];
+ return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () {
+ return this;
+ }, i;
+
+ function verb(n) {
+ if (g[n]) i[n] = function (v) {
+ return new Promise(function (a, b) {
+ q.push([n, v, a, b]) > 1 || resume(n, v);
+ });
+ };
+ }
+
+ function resume(n, v) {
+ try {
+ step(g[n](v));
+ } catch (e) {
+ settle(q[0][3], e);
+ }
+ }
+
+ function step(r) {
+ r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
+ }
+
+ function fulfill(value) {
+ resume("next", value);
+ }
+
+ function reject(value) {
+ resume("throw", value);
+ }
+
+ function settle(f, v) {
+ if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);
+ }
+}
+function __asyncDelegator(o) {
+ var i, p;
+ return i = {}, verb("next"), verb("throw", function (e) {
+ throw e;
+ }), verb("return"), i[Symbol.iterator] = function () {
+ return this;
+ }, i;
+
+ function verb(n, f) {
+ i[n] = o[n] ? function (v) {
+ return (p = !p) ? {
+ value: __await(o[n](v)),
+ done: n === "return"
+ } : f ? f(v) : v;
+ } : f;
+ }
+}
+function __asyncValues(o) {
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+ var m = o[Symbol.asyncIterator],
+ i;
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () {
+ return this;
+ }, i);
+
+ function verb(n) {
+ i[n] = o[n] && function (v) {
+ return new Promise(function (resolve, reject) {
+ v = o[n](v), settle(resolve, reject, v.done, v.value);
+ });
+ };
+ }
+
+ function settle(resolve, reject, d, v) {
+ Promise.resolve(v).then(function (v) {
+ resolve({
+ value: v,
+ done: d
+ });
+ }, reject);
+ }
+}
+function __makeTemplateObject(cooked, raw) {
+ if (Object.defineProperty) {
+ Object.defineProperty(cooked, "raw", {
+ value: raw
+ });
+ } else {
+ cooked.raw = raw;
+ }
+
+ return cooked;
+}
+function __importStar(mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) {
+ if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+ }
+ result.default = mod;
+ return result;
+}
+function __importDefault(mod) {
+ return mod && mod.__esModule ? mod : {
+ default: mod
+ };
+}
+
+var tslib_es6 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ __extends: __extends,
+ get __assign () { return _assign; },
+ __rest: __rest,
+ __decorate: __decorate,
+ __param: __param,
+ __metadata: __metadata,
+ __awaiter: __awaiter,
+ __generator: __generator,
+ __exportStar: __exportStar,
+ __values: __values,
+ __read: __read,
+ __spread: __spread,
+ __spreadArrays: __spreadArrays,
+ __await: __await,
+ __asyncGenerator: __asyncGenerator,
+ __asyncDelegator: __asyncDelegator,
+ __asyncValues: __asyncValues,
+ __makeTemplateObject: __makeTemplateObject,
+ __importStar: __importStar,
+ __importDefault: __importDefault
+});
+
+var api = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.apiDescriptor = {
+ key: function key(_key) {
+ return /^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(_key) ? _key : JSON.stringify(_key);
+ },
+
+ value(value) {
+ if (value === null || typeof value !== 'object') {
+ return JSON.stringify(value);
+ }
+
+ if (Array.isArray(value)) {
+ return `[${value.map(function (subValue) {
+ return exports.apiDescriptor.value(subValue);
+ }).join(', ')}]`;
+ }
+
+ var keys = Object.keys(value);
+ return keys.length === 0 ? '{}' : `{ ${keys.map(function (key) {
+ return `${exports.apiDescriptor.key(key)}: ${exports.apiDescriptor.value(value[key])}`;
+ }).join(', ')} }`;
+ },
+
+ pair: function pair(_ref) {
+ var key = _ref.key,
+ value = _ref.value;
+ return exports.apiDescriptor.value({
+ [key]: value
+ });
+ }
+ };
+});
+unwrapExports(api);
+var api_1 = api.apiDescriptor;
+
+var tslib_1 = getCjsExportFromNamespace(tslib_es6);
+
+var descriptors = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_1.__exportStar(api, exports);
+});
+unwrapExports(descriptors);
+
+var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
+
+var escapeStringRegexp = function escapeStringRegexp(str) {
+ if (typeof str !== 'string') {
+ throw new TypeError('Expected a string');
+ }
+
+ return str.replace(matchOperatorsRe, '\\$&');
+};
+
+var colorName = {
+ "aliceblue": [240, 248, 255],
+ "antiquewhite": [250, 235, 215],
+ "aqua": [0, 255, 255],
+ "aquamarine": [127, 255, 212],
+ "azure": [240, 255, 255],
+ "beige": [245, 245, 220],
+ "bisque": [255, 228, 196],
+ "black": [0, 0, 0],
+ "blanchedalmond": [255, 235, 205],
+ "blue": [0, 0, 255],
+ "blueviolet": [138, 43, 226],
+ "brown": [165, 42, 42],
+ "burlywood": [222, 184, 135],
+ "cadetblue": [95, 158, 160],
+ "chartreuse": [127, 255, 0],
+ "chocolate": [210, 105, 30],
+ "coral": [255, 127, 80],
+ "cornflowerblue": [100, 149, 237],
+ "cornsilk": [255, 248, 220],
+ "crimson": [220, 20, 60],
+ "cyan": [0, 255, 255],
+ "darkblue": [0, 0, 139],
+ "darkcyan": [0, 139, 139],
+ "darkgoldenrod": [184, 134, 11],
+ "darkgray": [169, 169, 169],
+ "darkgreen": [0, 100, 0],
+ "darkgrey": [169, 169, 169],
+ "darkkhaki": [189, 183, 107],
+ "darkmagenta": [139, 0, 139],
+ "darkolivegreen": [85, 107, 47],
+ "darkorange": [255, 140, 0],
+ "darkorchid": [153, 50, 204],
+ "darkred": [139, 0, 0],
+ "darksalmon": [233, 150, 122],
+ "darkseagreen": [143, 188, 143],
+ "darkslateblue": [72, 61, 139],
+ "darkslategray": [47, 79, 79],
+ "darkslategrey": [47, 79, 79],
+ "darkturquoise": [0, 206, 209],
+ "darkviolet": [148, 0, 211],
+ "deeppink": [255, 20, 147],
+ "deepskyblue": [0, 191, 255],
+ "dimgray": [105, 105, 105],
+ "dimgrey": [105, 105, 105],
+ "dodgerblue": [30, 144, 255],
+ "firebrick": [178, 34, 34],
+ "floralwhite": [255, 250, 240],
+ "forestgreen": [34, 139, 34],
+ "fuchsia": [255, 0, 255],
+ "gainsboro": [220, 220, 220],
+ "ghostwhite": [248, 248, 255],
+ "gold": [255, 215, 0],
+ "goldenrod": [218, 165, 32],
+ "gray": [128, 128, 128],
+ "green": [0, 128, 0],
+ "greenyellow": [173, 255, 47],
+ "grey": [128, 128, 128],
+ "honeydew": [240, 255, 240],
+ "hotpink": [255, 105, 180],
+ "indianred": [205, 92, 92],
+ "indigo": [75, 0, 130],
+ "ivory": [255, 255, 240],
+ "khaki": [240, 230, 140],
+ "lavender": [230, 230, 250],
+ "lavenderblush": [255, 240, 245],
+ "lawngreen": [124, 252, 0],
+ "lemonchiffon": [255, 250, 205],
+ "lightblue": [173, 216, 230],
+ "lightcoral": [240, 128, 128],
+ "lightcyan": [224, 255, 255],
+ "lightgoldenrodyellow": [250, 250, 210],
+ "lightgray": [211, 211, 211],
+ "lightgreen": [144, 238, 144],
+ "lightgrey": [211, 211, 211],
+ "lightpink": [255, 182, 193],
+ "lightsalmon": [255, 160, 122],
+ "lightseagreen": [32, 178, 170],
+ "lightskyblue": [135, 206, 250],
+ "lightslategray": [119, 136, 153],
+ "lightslategrey": [119, 136, 153],
+ "lightsteelblue": [176, 196, 222],
+ "lightyellow": [255, 255, 224],
+ "lime": [0, 255, 0],
+ "limegreen": [50, 205, 50],
+ "linen": [250, 240, 230],
+ "magenta": [255, 0, 255],
+ "maroon": [128, 0, 0],
+ "mediumaquamarine": [102, 205, 170],
+ "mediumblue": [0, 0, 205],
+ "mediumorchid": [186, 85, 211],
+ "mediumpurple": [147, 112, 219],
+ "mediumseagreen": [60, 179, 113],
+ "mediumslateblue": [123, 104, 238],
+ "mediumspringgreen": [0, 250, 154],
+ "mediumturquoise": [72, 209, 204],
+ "mediumvioletred": [199, 21, 133],
+ "midnightblue": [25, 25, 112],
+ "mintcream": [245, 255, 250],
+ "mistyrose": [255, 228, 225],
+ "moccasin": [255, 228, 181],
+ "navajowhite": [255, 222, 173],
+ "navy": [0, 0, 128],
+ "oldlace": [253, 245, 230],
+ "olive": [128, 128, 0],
+ "olivedrab": [107, 142, 35],
+ "orange": [255, 165, 0],
+ "orangered": [255, 69, 0],
+ "orchid": [218, 112, 214],
+ "palegoldenrod": [238, 232, 170],
+ "palegreen": [152, 251, 152],
+ "paleturquoise": [175, 238, 238],
+ "palevioletred": [219, 112, 147],
+ "papayawhip": [255, 239, 213],
+ "peachpuff": [255, 218, 185],
+ "peru": [205, 133, 63],
+ "pink": [255, 192, 203],
+ "plum": [221, 160, 221],
+ "powderblue": [176, 224, 230],
+ "purple": [128, 0, 128],
+ "rebeccapurple": [102, 51, 153],
+ "red": [255, 0, 0],
+ "rosybrown": [188, 143, 143],
+ "royalblue": [65, 105, 225],
+ "saddlebrown": [139, 69, 19],
+ "salmon": [250, 128, 114],
+ "sandybrown": [244, 164, 96],
+ "seagreen": [46, 139, 87],
+ "seashell": [255, 245, 238],
+ "sienna": [160, 82, 45],
+ "silver": [192, 192, 192],
+ "skyblue": [135, 206, 235],
+ "slateblue": [106, 90, 205],
+ "slategray": [112, 128, 144],
+ "slategrey": [112, 128, 144],
+ "snow": [255, 250, 250],
+ "springgreen": [0, 255, 127],
+ "steelblue": [70, 130, 180],
+ "tan": [210, 180, 140],
+ "teal": [0, 128, 128],
+ "thistle": [216, 191, 216],
+ "tomato": [255, 99, 71],
+ "turquoise": [64, 224, 208],
+ "violet": [238, 130, 238],
+ "wheat": [245, 222, 179],
+ "white": [255, 255, 255],
+ "whitesmoke": [245, 245, 245],
+ "yellow": [255, 255, 0],
+ "yellowgreen": [154, 205, 50]
+};
+
+var conversions = createCommonjsModule(function (module) {
+ /* MIT license */
+ // NOTE: conversions should only return primitive values (i.e. arrays, or
+ // values that give correct `typeof` results).
+ // do not use box values types (i.e. Number(), String(), etc.)
+ var reverseKeywords = {};
+
+ for (var key in colorName) {
+ if (colorName.hasOwnProperty(key)) {
+ reverseKeywords[colorName[key]] = key;
+ }
+ }
+
+ var convert = module.exports = {
+ rgb: {
+ channels: 3,
+ labels: 'rgb'
+ },
+ hsl: {
+ channels: 3,
+ labels: 'hsl'
+ },
+ hsv: {
+ channels: 3,
+ labels: 'hsv'
+ },
+ hwb: {
+ channels: 3,
+ labels: 'hwb'
+ },
+ cmyk: {
+ channels: 4,
+ labels: 'cmyk'
+ },
+ xyz: {
+ channels: 3,
+ labels: 'xyz'
+ },
+ lab: {
+ channels: 3,
+ labels: 'lab'
+ },
+ lch: {
+ channels: 3,
+ labels: 'lch'
+ },
+ hex: {
+ channels: 1,
+ labels: ['hex']
+ },
+ keyword: {
+ channels: 1,
+ labels: ['keyword']
+ },
+ ansi16: {
+ channels: 1,
+ labels: ['ansi16']
+ },
+ ansi256: {
+ channels: 1,
+ labels: ['ansi256']
+ },
+ hcg: {
+ channels: 3,
+ labels: ['h', 'c', 'g']
+ },
+ apple: {
+ channels: 3,
+ labels: ['r16', 'g16', 'b16']
+ },
+ gray: {
+ channels: 1,
+ labels: ['gray']
+ }
+ }; // hide .channels and .labels properties
+
+ for (var model in convert) {
+ if (convert.hasOwnProperty(model)) {
+ if (!('channels' in convert[model])) {
+ throw new Error('missing channels property: ' + model);
+ }
+
+ if (!('labels' in convert[model])) {
+ throw new Error('missing channel labels property: ' + model);
+ }
+
+ if (convert[model].labels.length !== convert[model].channels) {
+ throw new Error('channel and label counts mismatch: ' + model);
+ }
+
+ var channels = convert[model].channels;
+ var labels = convert[model].labels;
+ delete convert[model].channels;
+ delete convert[model].labels;
+ Object.defineProperty(convert[model], 'channels', {
+ value: channels
+ });
+ Object.defineProperty(convert[model], 'labels', {
+ value: labels
+ });
+ }
+ }
+
+ convert.rgb.hsl = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var min = Math.min(r, g, b);
+ var max = Math.max(r, g, b);
+ var delta = max - min;
+ var h;
+ var s;
+ var l;
+
+ if (max === min) {
+ h = 0;
+ } else if (r === max) {
+ h = (g - b) / delta;
+ } else if (g === max) {
+ h = 2 + (b - r) / delta;
+ } else if (b === max) {
+ h = 4 + (r - g) / delta;
+ }
+
+ h = Math.min(h * 60, 360);
+
+ if (h < 0) {
+ h += 360;
+ }
+
+ l = (min + max) / 2;
+
+ if (max === min) {
+ s = 0;
+ } else if (l <= 0.5) {
+ s = delta / (max + min);
+ } else {
+ s = delta / (2 - max - min);
+ }
+
+ return [h, s * 100, l * 100];
+ };
+
+ convert.rgb.hsv = function (rgb) {
+ var r = rgb[0];
+ var g = rgb[1];
+ var b = rgb[2];
+ var min = Math.min(r, g, b);
+ var max = Math.max(r, g, b);
+ var delta = max - min;
+ var h;
+ var s;
+ var v;
+
+ if (max === 0) {
+ s = 0;
+ } else {
+ s = delta / max * 1000 / 10;
+ }
+
+ if (max === min) {
+ h = 0;
+ } else if (r === max) {
+ h = (g - b) / delta;
+ } else if (g === max) {
+ h = 2 + (b - r) / delta;
+ } else if (b === max) {
+ h = 4 + (r - g) / delta;
+ }
+
+ h = Math.min(h * 60, 360);
+
+ if (h < 0) {
+ h += 360;
+ }
+
+ v = max / 255 * 1000 / 10;
+ return [h, s, v];
+ };
+
+ convert.rgb.hwb = function (rgb) {
+ var r = rgb[0];
+ var g = rgb[1];
+ var b = rgb[2];
+ var h = convert.rgb.hsl(rgb)[0];
+ var w = 1 / 255 * Math.min(r, Math.min(g, b));
+ b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
+ return [h, w * 100, b * 100];
+ };
+
+ convert.rgb.cmyk = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var c;
+ var m;
+ var y;
+ var k;
+ k = Math.min(1 - r, 1 - g, 1 - b);
+ c = (1 - r - k) / (1 - k) || 0;
+ m = (1 - g - k) / (1 - k) || 0;
+ y = (1 - b - k) / (1 - k) || 0;
+ return [c * 100, m * 100, y * 100, k * 100];
+ };
+ /**
+ * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
+ * */
+
+
+ function comparativeDistance(x, y) {
+ return Math.pow(x[0] - y[0], 2) + Math.pow(x[1] - y[1], 2) + Math.pow(x[2] - y[2], 2);
+ }
+
+ convert.rgb.keyword = function (rgb) {
+ var reversed = reverseKeywords[rgb];
+
+ if (reversed) {
+ return reversed;
+ }
+
+ var currentClosestDistance = Infinity;
+ var currentClosestKeyword;
+
+ for (var keyword in colorName) {
+ if (colorName.hasOwnProperty(keyword)) {
+ var value = colorName[keyword]; // Compute comparative distance
+
+ var distance = comparativeDistance(rgb, value); // Check if its less, if so set as closest
+
+ if (distance < currentClosestDistance) {
+ currentClosestDistance = distance;
+ currentClosestKeyword = keyword;
+ }
+ }
+ }
+
+ return currentClosestKeyword;
+ };
+
+ convert.keyword.rgb = function (keyword) {
+ return colorName[keyword];
+ };
+
+ convert.rgb.xyz = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255; // assume sRGB
+
+ r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;
+ g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;
+ b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;
+ var x = r * 0.4124 + g * 0.3576 + b * 0.1805;
+ var y = r * 0.2126 + g * 0.7152 + b * 0.0722;
+ var z = r * 0.0193 + g * 0.1192 + b * 0.9505;
+ return [x * 100, y * 100, z * 100];
+ };
+
+ convert.rgb.lab = function (rgb) {
+ var xyz = convert.rgb.xyz(rgb);
+ var x = xyz[0];
+ var y = xyz[1];
+ var z = xyz[2];
+ var l;
+ var a;
+ var b;
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
+ x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;
+ y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;
+ z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;
+ l = 116 * y - 16;
+ a = 500 * (x - y);
+ b = 200 * (y - z);
+ return [l, a, b];
+ };
+
+ convert.hsl.rgb = function (hsl) {
+ var h = hsl[0] / 360;
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var t1;
+ var t2;
+ var t3;
+ var rgb;
+ var val;
+
+ if (s === 0) {
+ val = l * 255;
+ return [val, val, val];
+ }
+
+ if (l < 0.5) {
+ t2 = l * (1 + s);
+ } else {
+ t2 = l + s - l * s;
+ }
+
+ t1 = 2 * l - t2;
+ rgb = [0, 0, 0];
+
+ for (var i = 0; i < 3; i++) {
+ t3 = h + 1 / 3 * -(i - 1);
+
+ if (t3 < 0) {
+ t3++;
+ }
+
+ if (t3 > 1) {
+ t3--;
+ }
+
+ if (6 * t3 < 1) {
+ val = t1 + (t2 - t1) * 6 * t3;
+ } else if (2 * t3 < 1) {
+ val = t2;
+ } else if (3 * t3 < 2) {
+ val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
+ } else {
+ val = t1;
+ }
+
+ rgb[i] = val * 255;
+ }
+
+ return rgb;
+ };
+
+ convert.hsl.hsv = function (hsl) {
+ var h = hsl[0];
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var smin = s;
+ var lmin = Math.max(l, 0.01);
+ var sv;
+ var v;
+ l *= 2;
+ s *= l <= 1 ? l : 2 - l;
+ smin *= lmin <= 1 ? lmin : 2 - lmin;
+ v = (l + s) / 2;
+ sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);
+ return [h, sv * 100, v * 100];
+ };
+
+ convert.hsv.rgb = function (hsv) {
+ var h = hsv[0] / 60;
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+ var hi = Math.floor(h) % 6;
+ var f = h - Math.floor(h);
+ var p = 255 * v * (1 - s);
+ var q = 255 * v * (1 - s * f);
+ var t = 255 * v * (1 - s * (1 - f));
+ v *= 255;
+
+ switch (hi) {
+ case 0:
+ return [v, t, p];
+
+ case 1:
+ return [q, v, p];
+
+ case 2:
+ return [p, v, t];
+
+ case 3:
+ return [p, q, v];
+
+ case 4:
+ return [t, p, v];
+
+ case 5:
+ return [v, p, q];
+ }
+ };
+
+ convert.hsv.hsl = function (hsv) {
+ var h = hsv[0];
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+ var vmin = Math.max(v, 0.01);
+ var lmin;
+ var sl;
+ var l;
+ l = (2 - s) * v;
+ lmin = (2 - s) * vmin;
+ sl = s * vmin;
+ sl /= lmin <= 1 ? lmin : 2 - lmin;
+ sl = sl || 0;
+ l /= 2;
+ return [h, sl * 100, l * 100];
+ }; // http://dev.w3.org/csswg/css-color/#hwb-to-rgb
+
+
+ convert.hwb.rgb = function (hwb) {
+ var h = hwb[0] / 360;
+ var wh = hwb[1] / 100;
+ var bl = hwb[2] / 100;
+ var ratio = wh + bl;
+ var i;
+ var v;
+ var f;
+ var n; // wh + bl cant be > 1
+
+ if (ratio > 1) {
+ wh /= ratio;
+ bl /= ratio;
+ }
+
+ i = Math.floor(6 * h);
+ v = 1 - bl;
+ f = 6 * h - i;
+
+ if ((i & 0x01) !== 0) {
+ f = 1 - f;
+ }
+
+ n = wh + f * (v - wh); // linear interpolation
+
+ var r;
+ var g;
+ var b;
+
+ switch (i) {
+ default:
+ case 6:
+ case 0:
+ r = v;
+ g = n;
+ b = wh;
+ break;
+
+ case 1:
+ r = n;
+ g = v;
+ b = wh;
+ break;
+
+ case 2:
+ r = wh;
+ g = v;
+ b = n;
+ break;
+
+ case 3:
+ r = wh;
+ g = n;
+ b = v;
+ break;
+
+ case 4:
+ r = n;
+ g = wh;
+ b = v;
+ break;
+
+ case 5:
+ r = v;
+ g = wh;
+ b = n;
+ break;
+ }
+
+ return [r * 255, g * 255, b * 255];
+ };
+
+ convert.cmyk.rgb = function (cmyk) {
+ var c = cmyk[0] / 100;
+ var m = cmyk[1] / 100;
+ var y = cmyk[2] / 100;
+ var k = cmyk[3] / 100;
+ var r;
+ var g;
+ var b;
+ r = 1 - Math.min(1, c * (1 - k) + k);
+ g = 1 - Math.min(1, m * (1 - k) + k);
+ b = 1 - Math.min(1, y * (1 - k) + k);
+ return [r * 255, g * 255, b * 255];
+ };
+
+ convert.xyz.rgb = function (xyz) {
+ var x = xyz[0] / 100;
+ var y = xyz[1] / 100;
+ var z = xyz[2] / 100;
+ var r;
+ var g;
+ var b;
+ r = x * 3.2406 + y * -1.5372 + z * -0.4986;
+ g = x * -0.9689 + y * 1.8758 + z * 0.0415;
+ b = x * 0.0557 + y * -0.2040 + z * 1.0570; // assume sRGB
+
+ r = r > 0.0031308 ? 1.055 * Math.pow(r, 1.0 / 2.4) - 0.055 : r * 12.92;
+ g = g > 0.0031308 ? 1.055 * Math.pow(g, 1.0 / 2.4) - 0.055 : g * 12.92;
+ b = b > 0.0031308 ? 1.055 * Math.pow(b, 1.0 / 2.4) - 0.055 : b * 12.92;
+ r = Math.min(Math.max(0, r), 1);
+ g = Math.min(Math.max(0, g), 1);
+ b = Math.min(Math.max(0, b), 1);
+ return [r * 255, g * 255, b * 255];
+ };
+
+ convert.xyz.lab = function (xyz) {
+ var x = xyz[0];
+ var y = xyz[1];
+ var z = xyz[2];
+ var l;
+ var a;
+ var b;
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
+ x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;
+ y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;
+ z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;
+ l = 116 * y - 16;
+ a = 500 * (x - y);
+ b = 200 * (y - z);
+ return [l, a, b];
+ };
+
+ convert.lab.xyz = function (lab) {
+ var l = lab[0];
+ var a = lab[1];
+ var b = lab[2];
+ var x;
+ var y;
+ var z;
+ y = (l + 16) / 116;
+ x = a / 500 + y;
+ z = y - b / 200;
+ var y2 = Math.pow(y, 3);
+ var x2 = Math.pow(x, 3);
+ var z2 = Math.pow(z, 3);
+ y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
+ x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
+ z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
+ x *= 95.047;
+ y *= 100;
+ z *= 108.883;
+ return [x, y, z];
+ };
+
+ convert.lab.lch = function (lab) {
+ var l = lab[0];
+ var a = lab[1];
+ var b = lab[2];
+ var hr;
+ var h;
+ var c;
+ hr = Math.atan2(b, a);
+ h = hr * 360 / 2 / Math.PI;
+
+ if (h < 0) {
+ h += 360;
+ }
+
+ c = Math.sqrt(a * a + b * b);
+ return [l, c, h];
+ };
+
+ convert.lch.lab = function (lch) {
+ var l = lch[0];
+ var c = lch[1];
+ var h = lch[2];
+ var a;
+ var b;
+ var hr;
+ hr = h / 360 * 2 * Math.PI;
+ a = c * Math.cos(hr);
+ b = c * Math.sin(hr);
+ return [l, a, b];
+ };
+
+ convert.rgb.ansi16 = function (args) {
+ var r = args[0];
+ var g = args[1];
+ var b = args[2];
+ var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization
+
+ value = Math.round(value / 50);
+
+ if (value === 0) {
+ return 30;
+ }
+
+ var ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));
+
+ if (value === 2) {
+ ansi += 60;
+ }
+
+ return ansi;
+ };
+
+ convert.hsv.ansi16 = function (args) {
+ // optimization here; we already know the value and don't need to get
+ // it converted for us.
+ return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);
+ };
+
+ convert.rgb.ansi256 = function (args) {
+ var r = args[0];
+ var g = args[1];
+ var b = args[2]; // we use the extended greyscale palette here, with the exception of
+ // black and white. normal palette only has 4 greyscale shades.
+
+ if (r === g && g === b) {
+ if (r < 8) {
+ return 16;
+ }
+
+ if (r > 248) {
+ return 231;
+ }
+
+ return Math.round((r - 8) / 247 * 24) + 232;
+ }
+
+ var ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);
+ return ansi;
+ };
+
+ convert.ansi16.rgb = function (args) {
+ var color = args % 10; // handle greyscale
+
+ if (color === 0 || color === 7) {
+ if (args > 50) {
+ color += 3.5;
+ }
+
+ color = color / 10.5 * 255;
+ return [color, color, color];
+ }
+
+ var mult = (~~(args > 50) + 1) * 0.5;
+ var r = (color & 1) * mult * 255;
+ var g = (color >> 1 & 1) * mult * 255;
+ var b = (color >> 2 & 1) * mult * 255;
+ return [r, g, b];
+ };
+
+ convert.ansi256.rgb = function (args) {
+ // handle greyscale
+ if (args >= 232) {
+ var c = (args - 232) * 10 + 8;
+ return [c, c, c];
+ }
+
+ args -= 16;
+ var rem;
+ var r = Math.floor(args / 36) / 5 * 255;
+ var g = Math.floor((rem = args % 36) / 6) / 5 * 255;
+ var b = rem % 6 / 5 * 255;
+ return [r, g, b];
+ };
+
+ convert.rgb.hex = function (args) {
+ var integer = ((Math.round(args[0]) & 0xFF) << 16) + ((Math.round(args[1]) & 0xFF) << 8) + (Math.round(args[2]) & 0xFF);
+ var string = integer.toString(16).toUpperCase();
+ return '000000'.substring(string.length) + string;
+ };
+
+ convert.hex.rgb = function (args) {
+ var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
+
+ if (!match) {
+ return [0, 0, 0];
+ }
+
+ var colorString = match[0];
+
+ if (match[0].length === 3) {
+ colorString = colorString.split('').map(function (char) {
+ return char + char;
+ }).join('');
+ }
+
+ var integer = parseInt(colorString, 16);
+ var r = integer >> 16 & 0xFF;
+ var g = integer >> 8 & 0xFF;
+ var b = integer & 0xFF;
+ return [r, g, b];
+ };
+
+ convert.rgb.hcg = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var max = Math.max(Math.max(r, g), b);
+ var min = Math.min(Math.min(r, g), b);
+ var chroma = max - min;
+ var grayscale;
+ var hue;
+
+ if (chroma < 1) {
+ grayscale = min / (1 - chroma);
+ } else {
+ grayscale = 0;
+ }
+
+ if (chroma <= 0) {
+ hue = 0;
+ } else if (max === r) {
+ hue = (g - b) / chroma % 6;
+ } else if (max === g) {
+ hue = 2 + (b - r) / chroma;
+ } else {
+ hue = 4 + (r - g) / chroma + 4;
+ }
+
+ hue /= 6;
+ hue %= 1;
+ return [hue * 360, chroma * 100, grayscale * 100];
+ };
+
+ convert.hsl.hcg = function (hsl) {
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var c = 1;
+ var f = 0;
+
+ if (l < 0.5) {
+ c = 2.0 * s * l;
+ } else {
+ c = 2.0 * s * (1.0 - l);
+ }
+
+ if (c < 1.0) {
+ f = (l - 0.5 * c) / (1.0 - c);
+ }
+
+ return [hsl[0], c * 100, f * 100];
+ };
+
+ convert.hsv.hcg = function (hsv) {
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+ var c = s * v;
+ var f = 0;
+
+ if (c < 1.0) {
+ f = (v - c) / (1 - c);
+ }
+
+ return [hsv[0], c * 100, f * 100];
+ };
+
+ convert.hcg.rgb = function (hcg) {
+ var h = hcg[0] / 360;
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+
+ if (c === 0.0) {
+ return [g * 255, g * 255, g * 255];
+ }
+
+ var pure = [0, 0, 0];
+ var hi = h % 1 * 6;
+ var v = hi % 1;
+ var w = 1 - v;
+ var mg = 0;
+
+ switch (Math.floor(hi)) {
+ case 0:
+ pure[0] = 1;
+ pure[1] = v;
+ pure[2] = 0;
+ break;
+
+ case 1:
+ pure[0] = w;
+ pure[1] = 1;
+ pure[2] = 0;
+ break;
+
+ case 2:
+ pure[0] = 0;
+ pure[1] = 1;
+ pure[2] = v;
+ break;
+
+ case 3:
+ pure[0] = 0;
+ pure[1] = w;
+ pure[2] = 1;
+ break;
+
+ case 4:
+ pure[0] = v;
+ pure[1] = 0;
+ pure[2] = 1;
+ break;
+
+ default:
+ pure[0] = 1;
+ pure[1] = 0;
+ pure[2] = w;
+ }
+
+ mg = (1.0 - c) * g;
+ return [(c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255];
+ };
+
+ convert.hcg.hsv = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+ var v = c + g * (1.0 - c);
+ var f = 0;
+
+ if (v > 0.0) {
+ f = c / v;
+ }
+
+ return [hcg[0], f * 100, v * 100];
+ };
+
+ convert.hcg.hsl = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+ var l = g * (1.0 - c) + 0.5 * c;
+ var s = 0;
+
+ if (l > 0.0 && l < 0.5) {
+ s = c / (2 * l);
+ } else if (l >= 0.5 && l < 1.0) {
+ s = c / (2 * (1 - l));
+ }
+
+ return [hcg[0], s * 100, l * 100];
+ };
+
+ convert.hcg.hwb = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+ var v = c + g * (1.0 - c);
+ return [hcg[0], (v - c) * 100, (1 - v) * 100];
+ };
+
+ convert.hwb.hcg = function (hwb) {
+ var w = hwb[1] / 100;
+ var b = hwb[2] / 100;
+ var v = 1 - b;
+ var c = v - w;
+ var g = 0;
+
+ if (c < 1) {
+ g = (v - c) / (1 - c);
+ }
+
+ return [hwb[0], c * 100, g * 100];
+ };
+
+ convert.apple.rgb = function (apple) {
+ return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];
+ };
+
+ convert.rgb.apple = function (rgb) {
+ return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];
+ };
+
+ convert.gray.rgb = function (args) {
+ return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
+ };
+
+ convert.gray.hsl = convert.gray.hsv = function (args) {
+ return [0, 0, args[0]];
+ };
+
+ convert.gray.hwb = function (gray) {
+ return [0, 100, gray[0]];
+ };
+
+ convert.gray.cmyk = function (gray) {
+ return [0, 0, 0, gray[0]];
+ };
+
+ convert.gray.lab = function (gray) {
+ return [gray[0], 0, 0];
+ };
+
+ convert.gray.hex = function (gray) {
+ var val = Math.round(gray[0] / 100 * 255) & 0xFF;
+ var integer = (val << 16) + (val << 8) + val;
+ var string = integer.toString(16).toUpperCase();
+ return '000000'.substring(string.length) + string;
+ };
+
+ convert.rgb.gray = function (rgb) {
+ var val = (rgb[0] + rgb[1] + rgb[2]) / 3;
+ return [val / 255 * 100];
+ };
+});
+var conversions_1 = conversions.rgb;
+var conversions_2 = conversions.hsl;
+var conversions_3 = conversions.hsv;
+var conversions_4 = conversions.hwb;
+var conversions_5 = conversions.cmyk;
+var conversions_6 = conversions.xyz;
+var conversions_7 = conversions.lab;
+var conversions_8 = conversions.lch;
+var conversions_9 = conversions.hex;
+var conversions_10 = conversions.keyword;
+var conversions_11 = conversions.ansi16;
+var conversions_12 = conversions.ansi256;
+var conversions_13 = conversions.hcg;
+var conversions_14 = conversions.apple;
+var conversions_15 = conversions.gray;
+
+/*
+ this function routes a model to all other models.
+
+ all functions that are routed have a property `.conversion` attached
+ to the returned synthetic function. This property is an array
+ of strings, each with the steps in between the 'from' and 'to'
+ color models (inclusive).
+
+ conversions that are not possible simply are not included.
+*/
+// https://jsperf.com/object-keys-vs-for-in-with-closure/3
+
+var models = Object.keys(conversions);
+
+function buildGraph() {
+ var graph = {};
+
+ for (var len = models.length, i = 0; i < len; i++) {
+ graph[models[i]] = {
+ // http://jsperf.com/1-vs-infinity
+ // micro-opt, but this is simple.
+ distance: -1,
+ parent: null
+ };
+ }
+
+ return graph;
+} // https://en.wikipedia.org/wiki/Breadth-first_search
+
+
+function deriveBFS(fromModel) {
+ var graph = buildGraph();
+ var queue = [fromModel]; // unshift -> queue -> pop
+
+ graph[fromModel].distance = 0;
+
+ while (queue.length) {
+ var current = queue.pop();
+ var adjacents = Object.keys(conversions[current]);
+
+ for (var len = adjacents.length, i = 0; i < len; i++) {
+ var adjacent = adjacents[i];
+ var node = graph[adjacent];
+
+ if (node.distance === -1) {
+ node.distance = graph[current].distance + 1;
+ node.parent = current;
+ queue.unshift(adjacent);
+ }
+ }
+ }
+
+ return graph;
+}
+
+function link(from, to) {
+ return function (args) {
+ return to(from(args));
+ };
+}
+
+function wrapConversion(toModel, graph) {
+ var path = [graph[toModel].parent, toModel];
+ var fn = conversions[graph[toModel].parent][toModel];
+ var cur = graph[toModel].parent;
+
+ while (graph[cur].parent) {
+ path.unshift(graph[cur].parent);
+ fn = link(conversions[graph[cur].parent][cur], fn);
+ cur = graph[cur].parent;
+ }
+
+ fn.conversion = path;
+ return fn;
+}
+
+var route = function route(fromModel) {
+ var graph = deriveBFS(fromModel);
+ var conversion = {};
+ var models = Object.keys(graph);
+
+ for (var len = models.length, i = 0; i < len; i++) {
+ var toModel = models[i];
+ var node = graph[toModel];
+
+ if (node.parent === null) {
+ // no possible conversion, or this node is the source model.
+ continue;
+ }
+
+ conversion[toModel] = wrapConversion(toModel, graph);
+ }
+
+ return conversion;
+};
+
+var convert = {};
+var models$1 = Object.keys(conversions);
+
+function wrapRaw(fn) {
+ var wrappedFn = function wrappedFn(args) {
+ if (args === undefined || args === null) {
+ return args;
+ }
+
+ if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ }
+
+ return fn(args);
+ }; // preserve .conversion property if there is one
+
+
+ if ('conversion' in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
+
+ return wrappedFn;
+}
+
+function wrapRounded(fn) {
+ var wrappedFn = function wrappedFn(args) {
+ if (args === undefined || args === null) {
+ return args;
+ }
+
+ if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ }
+
+ var result = fn(args); // we're assuming the result is an array here.
+ // see notice in conversions.js; don't use box types
+ // in conversion functions.
+
+ if (typeof result === 'object') {
+ for (var len = result.length, i = 0; i < len; i++) {
+ result[i] = Math.round(result[i]);
+ }
+ }
+
+ return result;
+ }; // preserve .conversion property if there is one
+
+
+ if ('conversion' in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
+
+ return wrappedFn;
+}
+
+models$1.forEach(function (fromModel) {
+ convert[fromModel] = {};
+ Object.defineProperty(convert[fromModel], 'channels', {
+ value: conversions[fromModel].channels
+ });
+ Object.defineProperty(convert[fromModel], 'labels', {
+ value: conversions[fromModel].labels
+ });
+ var routes = route(fromModel);
+ var routeModels = Object.keys(routes);
+ routeModels.forEach(function (toModel) {
+ var fn = routes[toModel];
+ convert[fromModel][toModel] = wrapRounded(fn);
+ convert[fromModel][toModel].raw = wrapRaw(fn);
+ });
+});
+var colorConvert = convert;
+
+var ansiStyles = createCommonjsModule(function (module) {
+
+ var wrapAnsi16 = function wrapAnsi16(fn, offset) {
+ return function () {
+ var code = fn.apply(colorConvert, arguments);
+ return `\u001B[${code + offset}m`;
+ };
+ };
+
+ var wrapAnsi256 = function wrapAnsi256(fn, offset) {
+ return function () {
+ var code = fn.apply(colorConvert, arguments);
+ return `\u001B[${38 + offset};5;${code}m`;
+ };
+ };
+
+ var wrapAnsi16m = function wrapAnsi16m(fn, offset) {
+ return function () {
+ var rgb = fn.apply(colorConvert, arguments);
+ return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
+ };
+ };
+
+ function assembleStyles() {
+ var codes = new Map();
+ var styles = {
+ modifier: {
+ reset: [0, 0],
+ // 21 isn't widely supported and 22 does the same thing
+ bold: [1, 22],
+ dim: [2, 22],
+ italic: [3, 23],
+ underline: [4, 24],
+ inverse: [7, 27],
+ hidden: [8, 28],
+ strikethrough: [9, 29]
+ },
+ color: {
+ black: [30, 39],
+ red: [31, 39],
+ green: [32, 39],
+ yellow: [33, 39],
+ blue: [34, 39],
+ magenta: [35, 39],
+ cyan: [36, 39],
+ white: [37, 39],
+ gray: [90, 39],
+ // Bright color
+ redBright: [91, 39],
+ greenBright: [92, 39],
+ yellowBright: [93, 39],
+ blueBright: [94, 39],
+ magentaBright: [95, 39],
+ cyanBright: [96, 39],
+ whiteBright: [97, 39]
+ },
+ bgColor: {
+ bgBlack: [40, 49],
+ bgRed: [41, 49],
+ bgGreen: [42, 49],
+ bgYellow: [43, 49],
+ bgBlue: [44, 49],
+ bgMagenta: [45, 49],
+ bgCyan: [46, 49],
+ bgWhite: [47, 49],
+ // Bright color
+ bgBlackBright: [100, 49],
+ bgRedBright: [101, 49],
+ bgGreenBright: [102, 49],
+ bgYellowBright: [103, 49],
+ bgBlueBright: [104, 49],
+ bgMagentaBright: [105, 49],
+ bgCyanBright: [106, 49],
+ bgWhiteBright: [107, 49]
+ }
+ }; // Fix humans
+
+ styles.color.grey = styles.color.gray;
+
+ for (var _i = 0, _Object$keys = Object.keys(styles); _i < _Object$keys.length; _i++) {
+ var groupName = _Object$keys[_i];
+ var group = styles[groupName];
+
+ for (var _i3 = 0, _Object$keys3 = Object.keys(group); _i3 < _Object$keys3.length; _i3++) {
+ var styleName = _Object$keys3[_i3];
+ var style = group[styleName];
+ styles[styleName] = {
+ open: `\u001B[${style[0]}m`,
+ close: `\u001B[${style[1]}m`
+ };
+ group[styleName] = styles[styleName];
+ codes.set(style[0], style[1]);
+ }
+
+ Object.defineProperty(styles, groupName, {
+ value: group,
+ enumerable: false
+ });
+ Object.defineProperty(styles, 'codes', {
+ value: codes,
+ enumerable: false
+ });
+ }
+
+ var ansi2ansi = function ansi2ansi(n) {
+ return n;
+ };
+
+ var rgb2rgb = function rgb2rgb(r, g, b) {
+ return [r, g, b];
+ };
+
+ styles.color.close = '\u001B[39m';
+ styles.bgColor.close = '\u001B[49m';
+ styles.color.ansi = {
+ ansi: wrapAnsi16(ansi2ansi, 0)
+ };
+ styles.color.ansi256 = {
+ ansi256: wrapAnsi256(ansi2ansi, 0)
+ };
+ styles.color.ansi16m = {
+ rgb: wrapAnsi16m(rgb2rgb, 0)
+ };
+ styles.bgColor.ansi = {
+ ansi: wrapAnsi16(ansi2ansi, 10)
+ };
+ styles.bgColor.ansi256 = {
+ ansi256: wrapAnsi256(ansi2ansi, 10)
+ };
+ styles.bgColor.ansi16m = {
+ rgb: wrapAnsi16m(rgb2rgb, 10)
+ };
+
+ for (var _i2 = 0, _Object$keys2 = Object.keys(colorConvert); _i2 < _Object$keys2.length; _i2++) {
+ var key = _Object$keys2[_i2];
+
+ if (typeof colorConvert[key] !== 'object') {
+ continue;
+ }
+
+ var suite = colorConvert[key];
+
+ if (key === 'ansi16') {
+ key = 'ansi';
+ }
+
+ if ('ansi16' in suite) {
+ styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);
+ styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);
+ }
+
+ if ('ansi256' in suite) {
+ styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);
+ styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);
+ }
+
+ if ('rgb' in suite) {
+ styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);
+ styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);
+ }
+ }
+
+ return styles;
+ } // Make the export immutable
+
+
+ Object.defineProperty(module, 'exports', {
+ enumerable: true,
+ get: assembleStyles
+ });
+});
+
+var hasFlag = function hasFlag(flag, argv) {
+ argv = argv || process.argv;
+ var prefix = flag.startsWith('-') ? '' : flag.length === 1 ? '-' : '--';
+ var pos = argv.indexOf(prefix + flag);
+ var terminatorPos = argv.indexOf('--');
+ return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);
+};
+
+var env = process.env;
+var forceColor;
+
+if (hasFlag('no-color') || hasFlag('no-colors') || hasFlag('color=false')) {
+ forceColor = false;
+} else if (hasFlag('color') || hasFlag('colors') || hasFlag('color=true') || hasFlag('color=always')) {
+ forceColor = true;
+}
+
+if ('FORCE_COLOR' in env) {
+ forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;
+}
+
+function translateLevel(level) {
+ if (level === 0) {
+ return false;
+ }
+
+ return {
+ level,
+ hasBasic: true,
+ has256: level >= 2,
+ has16m: level >= 3
+ };
+}
+
+function supportsColor(stream) {
+ if (forceColor === false) {
+ return 0;
+ }
+
+ if (hasFlag('color=16m') || hasFlag('color=full') || hasFlag('color=truecolor')) {
+ return 3;
+ }
+
+ if (hasFlag('color=256')) {
+ return 2;
+ }
+
+ if (stream && !stream.isTTY && forceColor !== true) {
+ return 0;
+ }
+
+ var min = forceColor ? 1 : 0;
+
+ if (process.platform === 'win32') {
+ // Node.js 7.5.0 is the first version of Node.js to include a patch to
+ // libuv that enables 256 color output on Windows. Anything earlier and it
+ // won't work. However, here we target Node.js 8 at minimum as it is an LTS
+ // release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows
+ // release that supports 256 colors. Windows 10 build 14931 is the first release
+ // that supports 16m/TrueColor.
+ var osRelease = os$1.release().split('.');
+
+ if (Number(process.versions.node.split('.')[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
+ return Number(osRelease[2]) >= 14931 ? 3 : 2;
+ }
+
+ return 1;
+ }
+
+ if ('CI' in env) {
+ if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(function (sign) {
+ return sign in env;
+ }) || env.CI_NAME === 'codeship') {
+ return 1;
+ }
+
+ return min;
+ }
+
+ if ('TEAMCITY_VERSION' in env) {
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
+ }
+
+ if (env.COLORTERM === 'truecolor') {
+ return 3;
+ }
+
+ if ('TERM_PROGRAM' in env) {
+ var version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);
+
+ switch (env.TERM_PROGRAM) {
+ case 'iTerm.app':
+ return version >= 3 ? 3 : 2;
+
+ case 'Apple_Terminal':
+ return 2;
+ // No default
+ }
+ }
+
+ if (/-256(color)?$/i.test(env.TERM)) {
+ return 2;
+ }
+
+ if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
+ return 1;
+ }
+
+ if ('COLORTERM' in env) {
+ return 1;
+ }
+
+ if (env.TERM === 'dumb') {
+ return min;
+ }
+
+ return min;
+}
+
+function getSupportLevel(stream) {
+ var level = supportsColor(stream);
+ return translateLevel(level);
+}
+
+var supportsColor_1 = {
+ supportsColor: getSupportLevel,
+ stdout: getSupportLevel(process.stdout),
+ stderr: getSupportLevel(process.stderr)
+};
+
+var TEMPLATE_REGEX = /(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi;
+var STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g;
+var STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/;
+var ESCAPE_REGEX = /\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi;
+var ESCAPES = new Map([['n', '\n'], ['r', '\r'], ['t', '\t'], ['b', '\b'], ['f', '\f'], ['v', '\v'], ['0', '\0'], ['\\', '\\'], ['e', '\u001B'], ['a', '\u0007']]);
+
+function unescape(c) {
+ if (c[0] === 'u' && c.length === 5 || c[0] === 'x' && c.length === 3) {
+ return String.fromCharCode(parseInt(c.slice(1), 16));
+ }
+
+ return ESCAPES.get(c) || c;
+}
+
+function parseArguments(name, args) {
+ var results = [];
+ var chunks = args.trim().split(/\s*,\s*/g);
+ var matches;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = chunks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var chunk = _step.value;
+
+ if (!isNaN(chunk)) {
+ results.push(Number(chunk));
+ } else if (matches = chunk.match(STRING_REGEX)) {
+ results.push(matches[2].replace(ESCAPE_REGEX, function (m, escape, chr) {
+ return escape ? unescape(escape) : chr;
+ }));
+ } else {
+ throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return results;
+}
+
+function parseStyle(style) {
+ STYLE_REGEX.lastIndex = 0;
+ var results = [];
+ var matches;
+
+ while ((matches = STYLE_REGEX.exec(style)) !== null) {
+ var name = matches[1];
+
+ if (matches[2]) {
+ var args = parseArguments(name, matches[2]);
+ results.push([name].concat(args));
+ } else {
+ results.push([name]);
+ }
+ }
+
+ return results;
+}
+
+function buildStyle(chalk, styles) {
+ var enabled = {};
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = styles[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var layer = _step2.value;
+ var _iteratorNormalCompletion3 = true;
+ var _didIteratorError3 = false;
+ var _iteratorError3 = undefined;
+
+ try {
+ for (var _iterator3 = layer.styles[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
+ var style = _step3.value;
+ enabled[style[0]] = layer.inverse ? null : style.slice(1);
+ }
+ } catch (err) {
+ _didIteratorError3 = true;
+ _iteratorError3 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
+ _iterator3.return();
+ }
+ } finally {
+ if (_didIteratorError3) {
+ throw _iteratorError3;
+ }
+ }
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ var current = chalk;
+
+ for (var _i = 0, _Object$keys = Object.keys(enabled); _i < _Object$keys.length; _i++) {
+ var styleName = _Object$keys[_i];
+
+ if (Array.isArray(enabled[styleName])) {
+ if (!(styleName in current)) {
+ throw new Error(`Unknown Chalk style: ${styleName}`);
+ }
+
+ if (enabled[styleName].length > 0) {
+ current = current[styleName].apply(current, enabled[styleName]);
+ } else {
+ current = current[styleName];
+ }
+ }
+ }
+
+ return current;
+}
+
+var templates = function templates(chalk, tmp) {
+ var styles = [];
+ var chunks = [];
+ var chunk = []; // eslint-disable-next-line max-params
+
+ tmp.replace(TEMPLATE_REGEX, function (m, escapeChar, inverse, style, close, chr) {
+ if (escapeChar) {
+ chunk.push(unescape(escapeChar));
+ } else if (style) {
+ var str = chunk.join('');
+ chunk = [];
+ chunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));
+ styles.push({
+ inverse,
+ styles: parseStyle(style)
+ });
+ } else if (close) {
+ if (styles.length === 0) {
+ throw new Error('Found extraneous } in Chalk template literal');
+ }
+
+ chunks.push(buildStyle(chalk, styles)(chunk.join('')));
+ chunk = [];
+ styles.pop();
+ } else {
+ chunk.push(chr);
+ }
+ });
+ chunks.push(chunk.join(''));
+
+ if (styles.length > 0) {
+ var errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`;
+ throw new Error(errMsg);
+ }
+
+ return chunks.join('');
+};
+
+var chalk = createCommonjsModule(function (module) {
+
+ var stdoutColor = supportsColor_1.stdout;
+ var isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); // `supportsColor.level` → `ansiStyles.color[name]` mapping
+
+ var levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m']; // `color-convert` models to exclude from the Chalk API due to conflicts and such
+
+ var skipModels = new Set(['gray']);
+ var styles = Object.create(null);
+
+ function applyOptions(obj, options) {
+ options = options || {}; // Detect level if not set manually
+
+ var scLevel = stdoutColor ? stdoutColor.level : 0;
+ obj.level = options.level === undefined ? scLevel : options.level;
+ obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;
+ }
+
+ function Chalk(options) {
+ // We check for this.template here since calling `chalk.constructor()`
+ // by itself will have a `this` of a previously constructed chalk object
+ if (!this || !(this instanceof Chalk) || this.template) {
+ var _chalk = {};
+ applyOptions(_chalk, options);
+
+ _chalk.template = function () {
+ var args = [].slice.call(arguments);
+ return chalkTag.apply(null, [_chalk.template].concat(args));
+ };
+
+ Object.setPrototypeOf(_chalk, Chalk.prototype);
+ Object.setPrototypeOf(_chalk.template, _chalk);
+ _chalk.template.constructor = Chalk;
+ return _chalk.template;
+ }
+
+ applyOptions(this, options);
+ } // Use bright blue on Windows as the normal blue color is illegible
+
+
+ if (isSimpleWindowsTerm) {
+ ansiStyles.blue.open = '\u001B[94m';
+ }
+
+ var _loop = function _loop() {
+ var key = _Object$keys[_i];
+ ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
+ styles[key] = {
+ get() {
+ var codes = ansiStyles[key];
+ return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);
+ }
+
+ };
+ };
+
+ for (var _i = 0, _Object$keys = Object.keys(ansiStyles); _i < _Object$keys.length; _i++) {
+ _loop();
+ }
+
+ styles.visible = {
+ get() {
+ return build.call(this, this._styles || [], true, 'visible');
+ }
+
+ };
+ ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');
+
+ var _loop2 = function _loop2() {
+ var model = _Object$keys2[_i2];
+
+ if (skipModels.has(model)) {
+ return "continue";
+ }
+
+ styles[model] = {
+ get() {
+ var level = this.level;
+ return function () {
+ var open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);
+ var codes = {
+ open,
+ close: ansiStyles.color.close,
+ closeRe: ansiStyles.color.closeRe
+ };
+ return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
+ };
+ }
+
+ };
+ };
+
+ for (var _i2 = 0, _Object$keys2 = Object.keys(ansiStyles.color.ansi); _i2 < _Object$keys2.length; _i2++) {
+ var _ret = _loop2();
+
+ if (_ret === "continue") continue;
+ }
+
+ ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');
+
+ var _loop3 = function _loop3() {
+ var model = _Object$keys3[_i3];
+
+ if (skipModels.has(model)) {
+ return "continue";
+ }
+
+ var bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);
+ styles[bgModel] = {
+ get() {
+ var level = this.level;
+ return function () {
+ var open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);
+ var codes = {
+ open,
+ close: ansiStyles.bgColor.close,
+ closeRe: ansiStyles.bgColor.closeRe
+ };
+ return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
+ };
+ }
+
+ };
+ };
+
+ for (var _i3 = 0, _Object$keys3 = Object.keys(ansiStyles.bgColor.ansi); _i3 < _Object$keys3.length; _i3++) {
+ var _ret2 = _loop3();
+
+ if (_ret2 === "continue") continue;
+ }
+
+ var proto = Object.defineProperties(function () {}, styles);
+
+ function build(_styles, _empty, key) {
+ var builder = function builder() {
+ return applyStyle.apply(builder, arguments);
+ };
+
+ builder._styles = _styles;
+ builder._empty = _empty;
+ var self = this;
+ Object.defineProperty(builder, 'level', {
+ enumerable: true,
+
+ get() {
+ return self.level;
+ },
+
+ set(level) {
+ self.level = level;
+ }
+
+ });
+ Object.defineProperty(builder, 'enabled', {
+ enumerable: true,
+
+ get() {
+ return self.enabled;
+ },
+
+ set(enabled) {
+ self.enabled = enabled;
+ }
+
+ }); // See below for fix regarding invisible grey/dim combination on Windows
+
+ builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey'; // `__proto__` is used because we must return a function, but there is
+ // no way to create a function with a different prototype
+
+ builder.__proto__ = proto; // eslint-disable-line no-proto
+
+ return builder;
+ }
+
+ function applyStyle() {
+ // Support varags, but simply cast to string in case there's only one arg
+ var args = arguments;
+ var argsLen = args.length;
+ var str = String(arguments[0]);
+
+ if (argsLen === 0) {
+ return '';
+ }
+
+ if (argsLen > 1) {
+ // Don't slice `arguments`, it prevents V8 optimizations
+ for (var a = 1; a < argsLen; a++) {
+ str += ' ' + args[a];
+ }
+ }
+
+ if (!this.enabled || this.level <= 0 || !str) {
+ return this._empty ? '' : str;
+ } // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,
+ // see https://github.com/chalk/chalk/issues/58
+ // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.
+
+
+ var originalDim = ansiStyles.dim.open;
+
+ if (isSimpleWindowsTerm && this.hasGrey) {
+ ansiStyles.dim.open = '';
+ }
+
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = this._styles.slice().reverse()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var code = _step.value;
+ // Replace any instances already present with a re-opening code
+ // otherwise only the part of the string until said closing code
+ // will be colored, and the rest will simply be 'plain'.
+ str = code.open + str.replace(code.closeRe, code.open) + code.close; // Close the styling before a linebreak and reopen
+ // after next line to fix a bleed issue on macOS
+ // https://github.com/chalk/chalk/pull/92
+
+ str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`);
+ } // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue
+
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ ansiStyles.dim.open = originalDim;
+ return str;
+ }
+
+ function chalkTag(chalk, strings) {
+ if (!Array.isArray(strings)) {
+ // If chalk() was called by itself or with a string,
+ // return the string itself as a string.
+ return [].slice.call(arguments, 1).join(' ');
+ }
+
+ var args = [].slice.call(arguments, 2);
+ var parts = [strings.raw[0]];
+
+ for (var i = 1; i < strings.length; i++) {
+ parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&'));
+ parts.push(String(strings.raw[i]));
+ }
+
+ return templates(chalk, parts.join(''));
+ }
+
+ Object.defineProperties(Chalk.prototype, styles);
+ module.exports = Chalk(); // eslint-disable-line new-cap
+
+ module.exports.supportsColor = stdoutColor;
+ module.exports.default = module.exports; // For TypeScript
+});
+var chalk_1 = chalk.supportsColor;
+
+var common = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ exports.commonDeprecatedHandler = function (keyOrPair, redirectTo, _ref) {
+ var descriptor = _ref.descriptor;
+ var messages = [`${chalk.default.yellow(typeof keyOrPair === 'string' ? descriptor.key(keyOrPair) : descriptor.pair(keyOrPair))} is deprecated`];
+
+ if (redirectTo) {
+ messages.push(`we now treat it as ${chalk.default.blue(typeof redirectTo === 'string' ? descriptor.key(redirectTo) : descriptor.pair(redirectTo))}`);
+ }
+
+ return messages.join('; ') + '.';
+ };
+});
+unwrapExports(common);
+var common_1 = common.commonDeprecatedHandler;
+
+var deprecated = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_1.__exportStar(common, exports);
+});
+unwrapExports(deprecated);
+
+var common$1 = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ exports.commonInvalidHandler = function (key, value, utils) {
+ return [`Invalid ${chalk.default.red(utils.descriptor.key(key))} value.`, `Expected ${chalk.default.blue(utils.schemas[key].expected(utils))},`, `but received ${chalk.default.red(utils.descriptor.value(value))}.`].join(' ');
+ };
+});
+unwrapExports(common$1);
+var common_1$1 = common$1.commonInvalidHandler;
+
+var invalid = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_1.__exportStar(common$1, exports);
+});
+unwrapExports(invalid);
+
+/* eslint-disable no-nested-ternary */
+
+var arr = [];
+var charCodeCache = [];
+
+var leven = function leven(a, b) {
+ if (a === b) {
+ return 0;
+ }
+
+ var swap = a; // Swapping the strings if `a` is longer than `b` so we know which one is the
+ // shortest & which one is the longest
+
+ if (a.length > b.length) {
+ a = b;
+ b = swap;
+ }
+
+ var aLen = a.length;
+ var bLen = b.length;
+
+ if (aLen === 0) {
+ return bLen;
+ }
+
+ if (bLen === 0) {
+ return aLen;
+ } // Performing suffix trimming:
+ // We can linearly drop suffix common to both strings since they
+ // don't increase distance at all
+ // Note: `~-` is the bitwise way to perform a `- 1` operation
+
+
+ while (aLen > 0 && a.charCodeAt(~-aLen) === b.charCodeAt(~-bLen)) {
+ aLen--;
+ bLen--;
+ }
+
+ if (aLen === 0) {
+ return bLen;
+ } // Performing prefix trimming
+ // We can linearly drop prefix common to both strings since they
+ // don't increase distance at all
+
+
+ var start = 0;
+
+ while (start < aLen && a.charCodeAt(start) === b.charCodeAt(start)) {
+ start++;
+ }
+
+ aLen -= start;
+ bLen -= start;
+
+ if (aLen === 0) {
+ return bLen;
+ }
+
+ var bCharCode;
+ var ret;
+ var tmp;
+ var tmp2;
+ var i = 0;
+ var j = 0;
+
+ while (i < aLen) {
+ charCodeCache[start + i] = a.charCodeAt(start + i);
+ arr[i] = ++i;
+ }
+
+ while (j < bLen) {
+ bCharCode = b.charCodeAt(start + j);
+ tmp = j++;
+ ret = j;
+
+ for (i = 0; i < aLen; i++) {
+ tmp2 = bCharCode === charCodeCache[start + i] ? tmp : tmp + 1;
+ tmp = arr[i];
+ ret = arr[i] = tmp > ret ? tmp2 > ret ? ret + 1 : tmp2 : tmp2 > tmp ? tmp + 1 : tmp2;
+ }
+ }
+
+ return ret;
+};
+
+var leven_1 = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ exports.levenUnknownHandler = function (key, value, _ref) {
+ var descriptor = _ref.descriptor,
+ logger = _ref.logger,
+ schemas = _ref.schemas;
+ var messages = [`Ignored unknown option ${chalk.default.yellow(descriptor.pair({
+ key,
+ value
+ }))}.`];
+ var suggestion = Object.keys(schemas).sort().find(function (knownKey) {
+ return leven(key, knownKey) < 3;
+ });
+
+ if (suggestion) {
+ messages.push(`Did you mean ${chalk.default.blue(descriptor.key(suggestion))}?`);
+ }
+
+ logger.warn(messages.join(' '));
+ };
+});
+unwrapExports(leven_1);
+var leven_2 = leven_1.levenUnknownHandler;
+
+var unknown = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_1.__exportStar(leven_1, exports);
+});
+unwrapExports(unknown);
+
+var handlers = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_1.__exportStar(deprecated, exports);
+
+ tslib_1.__exportStar(invalid, exports);
+
+ tslib_1.__exportStar(unknown, exports);
+});
+unwrapExports(handlers);
+
+var schema = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ var HANDLER_KEYS = ['default', 'expected', 'validate', 'deprecated', 'forward', 'redirect', 'overlap', 'preprocess', 'postprocess'];
+
+ function createSchema(SchemaConstructor, parameters) {
+ var schema = new SchemaConstructor(parameters);
+ var subSchema = Object.create(schema);
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = HANDLER_KEYS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var handlerKey = _step.value;
+
+ if (handlerKey in parameters) {
+ subSchema[handlerKey] = normalizeHandler(parameters[handlerKey], schema, Schema.prototype[handlerKey].length);
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return subSchema;
+ }
+
+ exports.createSchema = createSchema;
+
+ var Schema =
+ /*#__PURE__*/
+ function () {
+ function Schema(parameters) {
+ _classCallCheck(this, Schema);
+
+ this.name = parameters.name;
+ }
+
+ _createClass(Schema, [{
+ key: "default",
+ value: function _default(_utils) {
+ return undefined;
+ } // istanbul ignore next: this is actually an abstract method but we need a placeholder to get `function.length`
+
+ }, {
+ key: "expected",
+ value: function expected(_utils) {
+ return 'nothing';
+ } // istanbul ignore next: this is actually an abstract method but we need a placeholder to get `function.length`
+
+ }, {
+ key: "validate",
+ value: function validate(_value, _utils) {
+ return false;
+ }
+ }, {
+ key: "deprecated",
+ value: function deprecated(_value, _utils) {
+ return false;
+ }
+ }, {
+ key: "forward",
+ value: function forward(_value, _utils) {
+ return undefined;
+ }
+ }, {
+ key: "redirect",
+ value: function redirect(_value, _utils) {
+ return undefined;
+ }
+ }, {
+ key: "overlap",
+ value: function overlap(currentValue, _newValue, _utils) {
+ return currentValue;
+ }
+ }, {
+ key: "preprocess",
+ value: function preprocess(value, _utils) {
+ return value;
+ }
+ }, {
+ key: "postprocess",
+ value: function postprocess(value, _utils) {
+ return value;
+ }
+ }], [{
+ key: "create",
+ value: function create(parameters) {
+ // @ts-ignore: https://github.com/Microsoft/TypeScript/issues/5863
+ return createSchema(this, parameters);
+ }
+ }]);
+
+ return Schema;
+ }();
+
+ exports.Schema = Schema;
+
+ function normalizeHandler(handler, superSchema, handlerArgumentsLength) {
+ return typeof handler === 'function' ? function () {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ return handler.apply(void 0, _toConsumableArray$1(args.slice(0, handlerArgumentsLength - 1)).concat([superSchema], _toConsumableArray$1(args.slice(handlerArgumentsLength - 1))));
+ } : function () {
+ return handler;
+ };
+ }
+});
+unwrapExports(schema);
+var schema_1 = schema.createSchema;
+var schema_2 = schema.Schema;
+
+var alias = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var AliasSchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(AliasSchema, _schema_1$Schema);
+
+ function AliasSchema(parameters) {
+ var _this;
+
+ _classCallCheck(this, AliasSchema);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(AliasSchema).call(this, parameters));
+ _this._sourceName = parameters.sourceName;
+ return _this;
+ }
+
+ _createClass(AliasSchema, [{
+ key: "expected",
+ value: function expected(utils) {
+ return utils.schemas[this._sourceName].expected(utils);
+ }
+ }, {
+ key: "validate",
+ value: function validate(value, utils) {
+ return utils.schemas[this._sourceName].validate(value, utils);
+ }
+ }, {
+ key: "redirect",
+ value: function redirect(_value, _utils) {
+ return this._sourceName;
+ }
+ }]);
+
+ return AliasSchema;
+ }(schema.Schema);
+
+ exports.AliasSchema = AliasSchema;
+});
+unwrapExports(alias);
+var alias_1 = alias.AliasSchema;
+
+var any = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var AnySchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(AnySchema, _schema_1$Schema);
+
+ function AnySchema() {
+ _classCallCheck(this, AnySchema);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(AnySchema).apply(this, arguments));
+ }
+
+ _createClass(AnySchema, [{
+ key: "expected",
+ value: function expected() {
+ return 'anything';
+ }
+ }, {
+ key: "validate",
+ value: function validate() {
+ return true;
+ }
+ }]);
+
+ return AnySchema;
+ }(schema.Schema);
+
+ exports.AnySchema = AnySchema;
+});
+unwrapExports(any);
+var any_1 = any.AnySchema;
+
+var array = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var ArraySchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(ArraySchema, _schema_1$Schema);
+
+ function ArraySchema(_a) {
+ var _this;
+
+ _classCallCheck(this, ArraySchema);
+
+ var valueSchema = _a.valueSchema,
+ _a$name = _a.name,
+ name = _a$name === void 0 ? valueSchema.name : _a$name,
+ handlers = tslib_1.__rest(_a, ["valueSchema", "name"]);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(ArraySchema).call(this, Object.assign({}, handlers, {
+ name
+ })));
+ _this._valueSchema = valueSchema;
+ return _this;
+ }
+
+ _createClass(ArraySchema, [{
+ key: "expected",
+ value: function expected(utils) {
+ return `an array of ${this._valueSchema.expected(utils)}`;
+ }
+ }, {
+ key: "validate",
+ value: function validate(value, utils) {
+ if (!Array.isArray(value)) {
+ return false;
+ }
+
+ var invalidValues = [];
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = value[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var subValue = _step.value;
+ var subValidateResult = utils.normalizeValidateResult(this._valueSchema.validate(subValue, utils), subValue);
+
+ if (subValidateResult !== true) {
+ invalidValues.push(subValidateResult.value);
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return invalidValues.length === 0 ? true : {
+ value: invalidValues
+ };
+ }
+ }, {
+ key: "deprecated",
+ value: function deprecated(value, utils) {
+ var deprecatedResult = [];
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = value[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var subValue = _step2.value;
+ var subDeprecatedResult = utils.normalizeDeprecatedResult(this._valueSchema.deprecated(subValue, utils), subValue);
+
+ if (subDeprecatedResult !== false) {
+ deprecatedResult.push.apply(deprecatedResult, _toConsumableArray$1(subDeprecatedResult.map(function (_ref) {
+ var deprecatedValue = _ref.value;
+ return {
+ value: [deprecatedValue]
+ };
+ })));
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return deprecatedResult;
+ }
+ }, {
+ key: "forward",
+ value: function forward(value, utils) {
+ var forwardResult = [];
+ var _iteratorNormalCompletion3 = true;
+ var _didIteratorError3 = false;
+ var _iteratorError3 = undefined;
+
+ try {
+ for (var _iterator3 = value[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
+ var subValue = _step3.value;
+ var subForwardResult = utils.normalizeForwardResult(this._valueSchema.forward(subValue, utils), subValue);
+ forwardResult.push.apply(forwardResult, _toConsumableArray$1(subForwardResult.map(wrapTransferResult)));
+ }
+ } catch (err) {
+ _didIteratorError3 = true;
+ _iteratorError3 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
+ _iterator3.return();
+ }
+ } finally {
+ if (_didIteratorError3) {
+ throw _iteratorError3;
+ }
+ }
+ }
+
+ return forwardResult;
+ }
+ }, {
+ key: "redirect",
+ value: function redirect(value, utils) {
+ var remain = [];
+ var redirect = [];
+ var _iteratorNormalCompletion4 = true;
+ var _didIteratorError4 = false;
+ var _iteratorError4 = undefined;
+
+ try {
+ for (var _iterator4 = value[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
+ var subValue = _step4.value;
+ var subRedirectResult = utils.normalizeRedirectResult(this._valueSchema.redirect(subValue, utils), subValue);
+
+ if ('remain' in subRedirectResult) {
+ remain.push(subRedirectResult.remain);
+ }
+
+ redirect.push.apply(redirect, _toConsumableArray$1(subRedirectResult.redirect.map(wrapTransferResult)));
+ }
+ } catch (err) {
+ _didIteratorError4 = true;
+ _iteratorError4 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
+ _iterator4.return();
+ }
+ } finally {
+ if (_didIteratorError4) {
+ throw _iteratorError4;
+ }
+ }
+ }
+
+ return remain.length === 0 ? {
+ redirect
+ } : {
+ redirect,
+ remain
+ };
+ }
+ }, {
+ key: "overlap",
+ value: function overlap(currentValue, newValue) {
+ return currentValue.concat(newValue);
+ }
+ }]);
+
+ return ArraySchema;
+ }(schema.Schema);
+
+ exports.ArraySchema = ArraySchema;
+
+ function wrapTransferResult(_ref2) {
+ var from = _ref2.from,
+ to = _ref2.to;
+ return {
+ from: [from],
+ to
+ };
+ }
+});
+unwrapExports(array);
+var array_1 = array.ArraySchema;
+
+var boolean_1 = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var BooleanSchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(BooleanSchema, _schema_1$Schema);
+
+ function BooleanSchema() {
+ _classCallCheck(this, BooleanSchema);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(BooleanSchema).apply(this, arguments));
+ }
+
+ _createClass(BooleanSchema, [{
+ key: "expected",
+ value: function expected() {
+ return 'true or false';
+ }
+ }, {
+ key: "validate",
+ value: function validate(value) {
+ return typeof value === 'boolean';
+ }
+ }]);
+
+ return BooleanSchema;
+ }(schema.Schema);
+
+ exports.BooleanSchema = BooleanSchema;
+});
+unwrapExports(boolean_1);
+var boolean_2 = boolean_1.BooleanSchema;
+
+var utils = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ function recordFromArray(array, mainKey) {
+ var record = Object.create(null);
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = array[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var value = _step.value;
+ var key = value[mainKey]; // istanbul ignore next
+
+ if (record[key]) {
+ throw new Error(`Duplicate ${mainKey} ${JSON.stringify(key)}`);
+ } // @ts-ignore
+
+
+ record[key] = value;
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return record;
+ }
+
+ exports.recordFromArray = recordFromArray;
+
+ function mapFromArray(array, mainKey) {
+ var map = new Map();
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = array[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var value = _step2.value;
+ var key = value[mainKey]; // istanbul ignore next
+
+ if (map.has(key)) {
+ throw new Error(`Duplicate ${mainKey} ${JSON.stringify(key)}`);
+ }
+
+ map.set(key, value);
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return map;
+ }
+
+ exports.mapFromArray = mapFromArray;
+
+ function createAutoChecklist() {
+ var map = Object.create(null);
+ return function (id) {
+ var idString = JSON.stringify(id);
+
+ if (map[idString]) {
+ return true;
+ }
+
+ map[idString] = true;
+ return false;
+ };
+ }
+
+ exports.createAutoChecklist = createAutoChecklist;
+
+ function partition(array, predicate) {
+ var trueArray = [];
+ var falseArray = [];
+ var _iteratorNormalCompletion3 = true;
+ var _didIteratorError3 = false;
+ var _iteratorError3 = undefined;
+
+ try {
+ for (var _iterator3 = array[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
+ var value = _step3.value;
+
+ if (predicate(value)) {
+ trueArray.push(value);
+ } else {
+ falseArray.push(value);
+ }
+ }
+ } catch (err) {
+ _didIteratorError3 = true;
+ _iteratorError3 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
+ _iterator3.return();
+ }
+ } finally {
+ if (_didIteratorError3) {
+ throw _iteratorError3;
+ }
+ }
+ }
+
+ return [trueArray, falseArray];
+ }
+
+ exports.partition = partition;
+
+ function isInt(value) {
+ return value === Math.floor(value);
+ }
+
+ exports.isInt = isInt;
+
+ function comparePrimitive(a, b) {
+ if (a === b) {
+ return 0;
+ }
+
+ var typeofA = typeof a;
+ var typeofB = typeof b;
+ var orders = ['undefined', 'object', 'boolean', 'number', 'string'];
+
+ if (typeofA !== typeofB) {
+ return orders.indexOf(typeofA) - orders.indexOf(typeofB);
+ }
+
+ if (typeofA !== 'string') {
+ return Number(a) - Number(b);
+ }
+
+ return a.localeCompare(b);
+ }
+
+ exports.comparePrimitive = comparePrimitive;
+
+ function normalizeDefaultResult(result) {
+ return result === undefined ? {} : result;
+ }
+
+ exports.normalizeDefaultResult = normalizeDefaultResult;
+
+ function normalizeValidateResult(result, value) {
+ return result === true ? true : result === false ? {
+ value
+ } : result;
+ }
+
+ exports.normalizeValidateResult = normalizeValidateResult;
+
+ function normalizeDeprecatedResult(result, value) {
+ var doNotNormalizeTrue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+ return result === false ? false : result === true ? doNotNormalizeTrue ? true : [{
+ value
+ }] : 'value' in result ? [result] : result.length === 0 ? false : result;
+ }
+
+ exports.normalizeDeprecatedResult = normalizeDeprecatedResult;
+
+ function normalizeTransferResult(result, value) {
+ return typeof result === 'string' || 'key' in result ? {
+ from: value,
+ to: result
+ } : 'from' in result ? {
+ from: result.from,
+ to: result.to
+ } : {
+ from: value,
+ to: result.to
+ };
+ }
+
+ exports.normalizeTransferResult = normalizeTransferResult;
+
+ function normalizeForwardResult(result, value) {
+ return result === undefined ? [] : Array.isArray(result) ? result.map(function (transferResult) {
+ return normalizeTransferResult(transferResult, value);
+ }) : [normalizeTransferResult(result, value)];
+ }
+
+ exports.normalizeForwardResult = normalizeForwardResult;
+
+ function normalizeRedirectResult(result, value) {
+ var redirect = normalizeForwardResult(typeof result === 'object' && 'redirect' in result ? result.redirect : result, value);
+ return redirect.length === 0 ? {
+ remain: value,
+ redirect
+ } : typeof result === 'object' && 'remain' in result ? {
+ remain: result.remain,
+ redirect
+ } : {
+ redirect
+ };
+ }
+
+ exports.normalizeRedirectResult = normalizeRedirectResult;
+});
+unwrapExports(utils);
+var utils_1 = utils.recordFromArray;
+var utils_2 = utils.mapFromArray;
+var utils_3 = utils.createAutoChecklist;
+var utils_4 = utils.partition;
+var utils_5 = utils.isInt;
+var utils_6 = utils.comparePrimitive;
+var utils_7 = utils.normalizeDefaultResult;
+var utils_8 = utils.normalizeValidateResult;
+var utils_9 = utils.normalizeDeprecatedResult;
+var utils_10 = utils.normalizeTransferResult;
+var utils_11 = utils.normalizeForwardResult;
+var utils_12 = utils.normalizeRedirectResult;
+
+var choice = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var ChoiceSchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(ChoiceSchema, _schema_1$Schema);
+
+ function ChoiceSchema(parameters) {
+ var _this;
+
+ _classCallCheck(this, ChoiceSchema);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(ChoiceSchema).call(this, parameters));
+ _this._choices = utils.mapFromArray(parameters.choices.map(function (choice) {
+ return choice && typeof choice === 'object' ? choice : {
+ value: choice
+ };
+ }), 'value');
+ return _this;
+ }
+
+ _createClass(ChoiceSchema, [{
+ key: "expected",
+ value: function expected(_ref) {
+ var _this2 = this;
+
+ var descriptor = _ref.descriptor;
+ var choiceValues = Array.from(this._choices.keys()).map(function (value) {
+ return _this2._choices.get(value);
+ }).filter(function (choiceInfo) {
+ return !choiceInfo.deprecated;
+ }).map(function (choiceInfo) {
+ return choiceInfo.value;
+ }).sort(utils.comparePrimitive).map(descriptor.value);
+ var head = choiceValues.slice(0, -2);
+ var tail = choiceValues.slice(-2);
+ return head.concat(tail.join(' or ')).join(', ');
+ }
+ }, {
+ key: "validate",
+ value: function validate(value) {
+ return this._choices.has(value);
+ }
+ }, {
+ key: "deprecated",
+ value: function deprecated(value) {
+ var choiceInfo = this._choices.get(value);
+
+ return choiceInfo && choiceInfo.deprecated ? {
+ value
+ } : false;
+ }
+ }, {
+ key: "forward",
+ value: function forward(value) {
+ var choiceInfo = this._choices.get(value);
+
+ return choiceInfo ? choiceInfo.forward : undefined;
+ }
+ }, {
+ key: "redirect",
+ value: function redirect(value) {
+ var choiceInfo = this._choices.get(value);
+
+ return choiceInfo ? choiceInfo.redirect : undefined;
+ }
+ }]);
+
+ return ChoiceSchema;
+ }(schema.Schema);
+
+ exports.ChoiceSchema = ChoiceSchema;
+});
+unwrapExports(choice);
+var choice_1 = choice.ChoiceSchema;
+
+var number = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var NumberSchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(NumberSchema, _schema_1$Schema);
+
+ function NumberSchema() {
+ _classCallCheck(this, NumberSchema);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(NumberSchema).apply(this, arguments));
+ }
+
+ _createClass(NumberSchema, [{
+ key: "expected",
+ value: function expected() {
+ return 'a number';
+ }
+ }, {
+ key: "validate",
+ value: function validate(value, _utils) {
+ return typeof value === 'number';
+ }
+ }]);
+
+ return NumberSchema;
+ }(schema.Schema);
+
+ exports.NumberSchema = NumberSchema;
+});
+unwrapExports(number);
+var number_1 = number.NumberSchema;
+
+var integer = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var IntegerSchema =
+ /*#__PURE__*/
+ function (_number_1$NumberSchem) {
+ _inherits(IntegerSchema, _number_1$NumberSchem);
+
+ function IntegerSchema() {
+ _classCallCheck(this, IntegerSchema);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(IntegerSchema).apply(this, arguments));
+ }
+
+ _createClass(IntegerSchema, [{
+ key: "expected",
+ value: function expected() {
+ return 'an integer';
+ }
+ }, {
+ key: "validate",
+ value: function validate(value, utils$1) {
+ return utils$1.normalizeValidateResult(_get(_getPrototypeOf(IntegerSchema.prototype), "validate", this).call(this, value, utils$1), value) === true && utils.isInt(value);
+ }
+ }]);
+
+ return IntegerSchema;
+ }(number.NumberSchema);
+
+ exports.IntegerSchema = IntegerSchema;
+});
+unwrapExports(integer);
+var integer_1 = integer.IntegerSchema;
+
+var string = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var StringSchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(StringSchema, _schema_1$Schema);
+
+ function StringSchema() {
+ _classCallCheck(this, StringSchema);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(StringSchema).apply(this, arguments));
+ }
+
+ _createClass(StringSchema, [{
+ key: "expected",
+ value: function expected() {
+ return 'a string';
+ }
+ }, {
+ key: "validate",
+ value: function validate(value) {
+ return typeof value === 'string';
+ }
+ }]);
+
+ return StringSchema;
+ }(schema.Schema);
+
+ exports.StringSchema = StringSchema;
+});
+unwrapExports(string);
+var string_1 = string.StringSchema;
+
+var schemas = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_1.__exportStar(alias, exports);
+
+ tslib_1.__exportStar(any, exports);
+
+ tslib_1.__exportStar(array, exports);
+
+ tslib_1.__exportStar(boolean_1, exports);
+
+ tslib_1.__exportStar(choice, exports);
+
+ tslib_1.__exportStar(integer, exports);
+
+ tslib_1.__exportStar(number, exports);
+
+ tslib_1.__exportStar(string, exports);
+});
+unwrapExports(schemas);
+
+var defaults = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.defaultDescriptor = api.apiDescriptor;
+ exports.defaultUnknownHandler = leven_1.levenUnknownHandler;
+ exports.defaultInvalidHandler = invalid.commonInvalidHandler;
+ exports.defaultDeprecatedHandler = common.commonDeprecatedHandler;
+});
+unwrapExports(defaults);
+var defaults_1 = defaults.defaultDescriptor;
+var defaults_2 = defaults.defaultUnknownHandler;
+var defaults_3 = defaults.defaultInvalidHandler;
+var defaults_4 = defaults.defaultDeprecatedHandler;
+
+var normalize = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ exports.normalize = function (options, schemas, opts) {
+ return new Normalizer(schemas, opts).normalize(options);
+ };
+
+ var Normalizer =
+ /*#__PURE__*/
+ function () {
+ function Normalizer(schemas, opts) {
+ _classCallCheck(this, Normalizer);
+
+ // istanbul ignore next
+ var _ref = opts || {},
+ _ref$logger = _ref.logger,
+ logger = _ref$logger === void 0 ? console : _ref$logger,
+ _ref$descriptor = _ref.descriptor,
+ descriptor = _ref$descriptor === void 0 ? defaults.defaultDescriptor : _ref$descriptor,
+ _ref$unknown = _ref.unknown,
+ unknown = _ref$unknown === void 0 ? defaults.defaultUnknownHandler : _ref$unknown,
+ _ref$invalid = _ref.invalid,
+ invalid = _ref$invalid === void 0 ? defaults.defaultInvalidHandler : _ref$invalid,
+ _ref$deprecated = _ref.deprecated,
+ deprecated = _ref$deprecated === void 0 ? defaults.defaultDeprecatedHandler : _ref$deprecated;
+
+ this._utils = {
+ descriptor,
+ logger:
+ /* istanbul ignore next */
+ logger || {
+ warn: function warn() {}
+ },
+ schemas: utils.recordFromArray(schemas, 'name'),
+ normalizeDefaultResult: utils.normalizeDefaultResult,
+ normalizeDeprecatedResult: utils.normalizeDeprecatedResult,
+ normalizeForwardResult: utils.normalizeForwardResult,
+ normalizeRedirectResult: utils.normalizeRedirectResult,
+ normalizeValidateResult: utils.normalizeValidateResult
+ };
+ this._unknownHandler = unknown;
+ this._invalidHandler = invalid;
+ this._deprecatedHandler = deprecated;
+ this.cleanHistory();
+ }
+
+ _createClass(Normalizer, [{
+ key: "cleanHistory",
+ value: function cleanHistory() {
+ this._hasDeprecationWarned = utils.createAutoChecklist();
+ }
+ }, {
+ key: "normalize",
+ value: function normalize(options) {
+ var _this = this;
+
+ var normalized = {};
+ var restOptionsArray = [options];
+
+ var applyNormalization = function applyNormalization() {
+ while (restOptionsArray.length !== 0) {
+ var currentOptions = restOptionsArray.shift();
+
+ var transferredOptionsArray = _this._applyNormalization(currentOptions, normalized);
+
+ restOptionsArray.push.apply(restOptionsArray, _toConsumableArray$1(transferredOptionsArray));
+ }
+ };
+
+ applyNormalization();
+
+ for (var _i = 0, _Object$keys = Object.keys(this._utils.schemas); _i < _Object$keys.length; _i++) {
+ var key = _Object$keys[_i];
+ var schema = this._utils.schemas[key];
+
+ if (!(key in normalized)) {
+ var defaultResult = utils.normalizeDefaultResult(schema.default(this._utils));
+
+ if ('value' in defaultResult) {
+ restOptionsArray.push({
+ [key]: defaultResult.value
+ });
+ }
+ }
+ }
+
+ applyNormalization();
+
+ for (var _i2 = 0, _Object$keys2 = Object.keys(this._utils.schemas); _i2 < _Object$keys2.length; _i2++) {
+ var _key = _Object$keys2[_i2];
+ var _schema = this._utils.schemas[_key];
+
+ if (_key in normalized) {
+ normalized[_key] = _schema.postprocess(normalized[_key], this._utils);
+ }
+ }
+
+ return normalized;
+ }
+ }, {
+ key: "_applyNormalization",
+ value: function _applyNormalization(options, normalized) {
+ var _this2 = this;
+
+ var transferredOptionsArray = [];
+
+ var _utils_1$partition = utils.partition(Object.keys(options), function (key) {
+ return key in _this2._utils.schemas;
+ }),
+ _utils_1$partition2 = _slicedToArray(_utils_1$partition, 2),
+ knownOptionNames = _utils_1$partition2[0],
+ unknownOptionNames = _utils_1$partition2[1];
+
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ var _loop = function _loop() {
+ var key = _step.value;
+ var schema = _this2._utils.schemas[key];
+ var value = schema.preprocess(options[key], _this2._utils);
+ var validateResult = utils.normalizeValidateResult(schema.validate(value, _this2._utils), value);
+
+ if (validateResult !== true) {
+ var invalidValue = validateResult.value;
+
+ var errorMessageOrError = _this2._invalidHandler(key, invalidValue, _this2._utils);
+
+ throw typeof errorMessageOrError === 'string' ? new Error(errorMessageOrError) :
+ /* istanbul ignore next*/
+ errorMessageOrError;
+ }
+
+ var appendTransferredOptions = function appendTransferredOptions(_ref2) {
+ var from = _ref2.from,
+ to = _ref2.to;
+ transferredOptionsArray.push(typeof to === 'string' ? {
+ [to]: from
+ } : {
+ [to.key]: to.value
+ });
+ };
+
+ var warnDeprecated = function warnDeprecated(_ref3) {
+ var currentValue = _ref3.value,
+ redirectTo = _ref3.redirectTo;
+ var deprecatedResult = utils.normalizeDeprecatedResult(schema.deprecated(currentValue, _this2._utils), value,
+ /* doNotNormalizeTrue */
+ true);
+
+ if (deprecatedResult === false) {
+ return;
+ }
+
+ if (deprecatedResult === true) {
+ if (!_this2._hasDeprecationWarned(key)) {
+ _this2._utils.logger.warn(_this2._deprecatedHandler(key, redirectTo, _this2._utils));
+ }
+ } else {
+ var _iteratorNormalCompletion3 = true;
+ var _didIteratorError3 = false;
+ var _iteratorError3 = undefined;
+
+ try {
+ for (var _iterator3 = deprecatedResult[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
+ var deprecatedValue = _step3.value.value;
+ var pair = {
+ key,
+ value: deprecatedValue
+ };
+
+ if (!_this2._hasDeprecationWarned(pair)) {
+ var redirectToPair = typeof redirectTo === 'string' ? {
+ key: redirectTo,
+ value: deprecatedValue
+ } : redirectTo;
+
+ _this2._utils.logger.warn(_this2._deprecatedHandler(pair, redirectToPair, _this2._utils));
+ }
+ }
+ } catch (err) {
+ _didIteratorError3 = true;
+ _iteratorError3 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
+ _iterator3.return();
+ }
+ } finally {
+ if (_didIteratorError3) {
+ throw _iteratorError3;
+ }
+ }
+ }
+ }
+ };
+
+ var forwardResult = utils.normalizeForwardResult(schema.forward(value, _this2._utils), value);
+ forwardResult.forEach(appendTransferredOptions);
+ var redirectResult = utils.normalizeRedirectResult(schema.redirect(value, _this2._utils), value);
+ redirectResult.redirect.forEach(appendTransferredOptions);
+
+ if ('remain' in redirectResult) {
+ var remainingValue = redirectResult.remain;
+ normalized[key] = key in normalized ? schema.overlap(normalized[key], remainingValue, _this2._utils) : remainingValue;
+ warnDeprecated({
+ value: remainingValue
+ });
+ }
+
+ var _iteratorNormalCompletion4 = true;
+ var _didIteratorError4 = false;
+ var _iteratorError4 = undefined;
+
+ try {
+ for (var _iterator4 = redirectResult.redirect[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
+ var _step4$value = _step4.value,
+ from = _step4$value.from,
+ to = _step4$value.to;
+ warnDeprecated({
+ value: from,
+ redirectTo: to
+ });
+ }
+ } catch (err) {
+ _didIteratorError4 = true;
+ _iteratorError4 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
+ _iterator4.return();
+ }
+ } finally {
+ if (_didIteratorError4) {
+ throw _iteratorError4;
+ }
+ }
+ }
+ };
+
+ for (var _iterator = knownOptionNames[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ _loop();
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = unknownOptionNames[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var key = _step2.value;
+ var value = options[key];
+
+ var unknownResult = this._unknownHandler(key, value, this._utils);
+
+ if (unknownResult) {
+ for (var _i3 = 0, _Object$keys3 = Object.keys(unknownResult); _i3 < _Object$keys3.length; _i3++) {
+ var unknownKey = _Object$keys3[_i3];
+ var unknownOption = {
+ [unknownKey]: unknownResult[unknownKey]
+ };
+
+ if (unknownKey in this._utils.schemas) {
+ transferredOptionsArray.push(unknownOption);
+ } else {
+ Object.assign(normalized, unknownOption);
+ }
+ }
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return transferredOptionsArray;
+ }
+ }]);
+
+ return Normalizer;
+ }();
+
+ exports.Normalizer = Normalizer;
+});
+unwrapExports(normalize);
+var normalize_1 = normalize.normalize;
+var normalize_2 = normalize.Normalizer;
+
+var lib = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_1.__exportStar(descriptors, exports);
+
+ tslib_1.__exportStar(handlers, exports);
+
+ tslib_1.__exportStar(schemas, exports);
+
+ tslib_1.__exportStar(normalize, exports);
+
+ tslib_1.__exportStar(schema, exports);
+});
+unwrapExports(lib);
+
+var array$1 = [];
+var charCodeCache$1 = [];
+
+var leven$1 = function leven(left, right) {
+ if (left === right) {
+ return 0;
+ }
+
+ var swap = left; // Swapping the strings if `a` is longer than `b` so we know which one is the
+ // shortest & which one is the longest
+
+ if (left.length > right.length) {
+ left = right;
+ right = swap;
+ }
+
+ var leftLength = left.length;
+ var rightLength = right.length; // Performing suffix trimming:
+ // We can linearly drop suffix common to both strings since they
+ // don't increase distance at all
+ // Note: `~-` is the bitwise way to perform a `- 1` operation
+
+ while (leftLength > 0 && left.charCodeAt(~-leftLength) === right.charCodeAt(~-rightLength)) {
+ leftLength--;
+ rightLength--;
+ } // Performing prefix trimming
+ // We can linearly drop prefix common to both strings since they
+ // don't increase distance at all
+
+
+ var start = 0;
+
+ while (start < leftLength && left.charCodeAt(start) === right.charCodeAt(start)) {
+ start++;
+ }
+
+ leftLength -= start;
+ rightLength -= start;
+
+ if (leftLength === 0) {
+ return rightLength;
+ }
+
+ var bCharCode;
+ var result;
+ var temp;
+ var temp2;
+ var i = 0;
+ var j = 0;
+
+ while (i < leftLength) {
+ charCodeCache$1[i] = left.charCodeAt(start + i);
+ array$1[i] = ++i;
+ }
+
+ while (j < rightLength) {
+ bCharCode = right.charCodeAt(start + j);
+ temp = j++;
+ result = j;
+
+ for (i = 0; i < leftLength; i++) {
+ temp2 = bCharCode === charCodeCache$1[i] ? temp : temp + 1;
+ temp = array$1[i]; // eslint-disable-next-line no-multi-assign
+
+ result = array$1[i] = temp > result ? temp2 > result ? result + 1 : temp2 : temp2 > temp ? temp + 1 : temp2;
+ }
+ }
+
+ return result;
+};
+
+var leven_1$1 = leven$1; // TODO: Remove this for the next major release
+
+var default_1 = leven$1;
+leven_1$1.default = default_1;
+
+var cliDescriptor = {
+ key: function key(_key) {
+ return _key.length === 1 ? `-${_key}` : `--${_key}`;
+ },
+ value: function value(_value) {
+ return lib.apiDescriptor.value(_value);
+ },
+ pair: function pair(_ref) {
+ var key = _ref.key,
+ value = _ref.value;
+ return value === false ? `--no-${key}` : value === true ? cliDescriptor.key(key) : value === "" ? `${cliDescriptor.key(key)} without an argument` : `${cliDescriptor.key(key)}=${value}`;
+ }
+};
+
+var FlagSchema =
+/*#__PURE__*/
+function (_vnopts$ChoiceSchema) {
+ _inherits(FlagSchema, _vnopts$ChoiceSchema);
+
+ function FlagSchema(_ref2) {
+ var _this;
+
+ var name = _ref2.name,
+ flags = _ref2.flags;
+
+ _classCallCheck(this, FlagSchema);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(FlagSchema).call(this, {
+ name,
+ choices: flags
+ }));
+ _this._flags = flags.slice().sort();
+ return _this;
+ }
+
+ _createClass(FlagSchema, [{
+ key: "preprocess",
+ value: function preprocess(value, utils) {
+ if (typeof value === "string" && value.length !== 0 && this._flags.indexOf(value) === -1) {
+ var suggestion = this._flags.find(function (flag) {
+ return leven_1$1(flag, value) < 3;
+ });
+
+ if (suggestion) {
+ utils.logger.warn([`Unknown flag ${chalk.yellow(utils.descriptor.value(value))},`, `did you mean ${chalk.blue(utils.descriptor.value(suggestion))}?`].join(" "));
+ return suggestion;
+ }
+ }
+
+ return value;
+ }
+ }, {
+ key: "expected",
+ value: function expected() {
+ return "a flag";
+ }
+ }]);
+
+ return FlagSchema;
+}(lib.ChoiceSchema);
+
+var hasDeprecationWarned;
+
+function normalizeOptions(options, optionInfos) {
+ var _ref3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
+ logger = _ref3.logger,
+ _ref3$isCLI = _ref3.isCLI,
+ isCLI = _ref3$isCLI === void 0 ? false : _ref3$isCLI,
+ _ref3$passThrough = _ref3.passThrough,
+ passThrough = _ref3$passThrough === void 0 ? false : _ref3$passThrough;
+
+ var unknown = !passThrough ? lib.levenUnknownHandler : Array.isArray(passThrough) ? function (key, value) {
+ return passThrough.indexOf(key) === -1 ? undefined : {
+ [key]: value
+ };
+ } : function (key, value) {
+ return {
+ [key]: value
+ };
+ };
+ var descriptor = isCLI ? cliDescriptor : lib.apiDescriptor;
+ var schemas = optionInfosToSchemas(optionInfos, {
+ isCLI
+ });
+ var normalizer = new lib.Normalizer(schemas, {
+ logger,
+ unknown,
+ descriptor
+ });
+ var shouldSuppressDuplicateDeprecationWarnings = logger !== false;
+
+ if (shouldSuppressDuplicateDeprecationWarnings && hasDeprecationWarned) {
+ normalizer._hasDeprecationWarned = hasDeprecationWarned;
+ }
+
+ var normalized = normalizer.normalize(options);
+
+ if (shouldSuppressDuplicateDeprecationWarnings) {
+ hasDeprecationWarned = normalizer._hasDeprecationWarned;
+ }
+
+ return normalized;
+}
+
+function optionInfosToSchemas(optionInfos, _ref4) {
+ var isCLI = _ref4.isCLI;
+ var schemas = [];
+
+ if (isCLI) {
+ schemas.push(lib.AnySchema.create({
+ name: "_"
+ }));
+ }
+
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = optionInfos[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var optionInfo = _step.value;
+ schemas.push(optionInfoToSchema(optionInfo, {
+ isCLI,
+ optionInfos
+ }));
+
+ if (optionInfo.alias && isCLI) {
+ schemas.push(lib.AliasSchema.create({
+ name: optionInfo.alias,
+ sourceName: optionInfo.name
+ }));
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return schemas;
+}
+
+function optionInfoToSchema(optionInfo, _ref5) {
+ var isCLI = _ref5.isCLI,
+ optionInfos = _ref5.optionInfos;
+ var SchemaConstructor;
+ var parameters = {
+ name: optionInfo.name
+ };
+ var handlers = {};
+
+ switch (optionInfo.type) {
+ case "int":
+ SchemaConstructor = lib.IntegerSchema;
+
+ if (isCLI) {
+ parameters.preprocess = function (value) {
+ return Number(value);
+ };
+ }
+
+ break;
+
+ case "string":
+ SchemaConstructor = lib.StringSchema;
+ break;
+
+ case "choice":
+ SchemaConstructor = lib.ChoiceSchema;
+ parameters.choices = optionInfo.choices.map(function (choiceInfo) {
+ return typeof choiceInfo === "object" && choiceInfo.redirect ? Object.assign({}, choiceInfo, {
+ redirect: {
+ to: {
+ key: optionInfo.name,
+ value: choiceInfo.redirect
+ }
+ }
+ }) : choiceInfo;
+ });
+ break;
+
+ case "boolean":
+ SchemaConstructor = lib.BooleanSchema;
+ break;
+
+ case "flag":
+ SchemaConstructor = FlagSchema;
+ parameters.flags = optionInfos.map(function (optionInfo) {
+ return [].concat(optionInfo.alias || [], optionInfo.description ? optionInfo.name : [], optionInfo.oppositeDescription ? `no-${optionInfo.name}` : []);
+ }).reduce(function (a, b) {
+ return a.concat(b);
+ }, []);
+ break;
+
+ case "path":
+ SchemaConstructor = lib.StringSchema;
+ break;
+
+ default:
+ throw new Error(`Unexpected type ${optionInfo.type}`);
+ }
+
+ if (optionInfo.exception) {
+ parameters.validate = function (value, schema, utils) {
+ return optionInfo.exception(value) || schema.validate(value, utils);
+ };
+ } else {
+ parameters.validate = function (value, schema, utils) {
+ return value === undefined || schema.validate(value, utils);
+ };
+ }
+
+ if (optionInfo.redirect) {
+ handlers.redirect = function (value) {
+ return !value ? undefined : {
+ to: {
+ key: optionInfo.redirect.option,
+ value: optionInfo.redirect.value
+ }
+ };
+ };
+ }
+
+ if (optionInfo.deprecated) {
+ handlers.deprecated = true;
+ } // allow CLI overriding, e.g., prettier package.json --tab-width 1 --tab-width 2
+
+
+ if (isCLI && !optionInfo.array) {
+ var originalPreprocess = parameters.preprocess || function (x) {
+ return x;
+ };
+
+ parameters.preprocess = function (value, schema, utils) {
+ return schema.preprocess(originalPreprocess(Array.isArray(value) ? value[value.length - 1] : value), utils);
+ };
+ }
+
+ return optionInfo.array ? lib.ArraySchema.create(Object.assign(isCLI ? {
+ preprocess: function preprocess(v) {
+ return [].concat(v);
+ }
+ } : {}, handlers, {
+ valueSchema: SchemaConstructor.create(parameters)
+ })) : SchemaConstructor.create(Object.assign({}, parameters, handlers));
+}
+
+function normalizeApiOptions(options, optionInfos, opts) {
+ return normalizeOptions(options, optionInfos, opts);
+}
+
+function normalizeCliOptions(options, optionInfos, opts) {
+ return normalizeOptions(options, optionInfos, Object.assign({
+ isCLI: true
+ }, opts));
+}
+
+var optionsNormalizer = {
+ normalizeApiOptions,
+ normalizeCliOptions
+};
+
+var getLast = function getLast(arr) {
+ return arr.length > 0 ? arr[arr.length - 1] : null;
+};
+
+function locStart(node, opts) {
+ opts = opts || {}; // Handle nodes with decorators. They should start at the first decorator
+
+ if (!opts.ignoreDecorators && node.declaration && node.declaration.decorators && node.declaration.decorators.length > 0) {
+ return locStart(node.declaration.decorators[0]);
+ }
+
+ if (!opts.ignoreDecorators && node.decorators && node.decorators.length > 0) {
+ return locStart(node.decorators[0]);
+ }
+
+ if (node.__location) {
+ return node.__location.startOffset;
+ }
+
+ if (node.range) {
+ return node.range[0];
+ }
+
+ if (typeof node.start === "number") {
+ return node.start;
+ }
+
+ if (node.loc) {
+ return node.loc.start;
+ }
+
+ return null;
+}
+
+function locEnd(node) {
+ var endNode = node.nodes && getLast(node.nodes);
+
+ if (endNode && node.source && !node.source.end) {
+ node = endNode;
+ }
+
+ if (node.__location) {
+ return node.__location.endOffset;
+ }
+
+ var loc = node.range ? node.range[1] : typeof node.end === "number" ? node.end : null;
+
+ if (node.typeAnnotation) {
+ return Math.max(loc, locEnd(node.typeAnnotation));
+ }
+
+ if (node.loc && !loc) {
+ return node.loc.end;
+ }
+
+ return loc;
+}
+
+var loc = {
+ locStart,
+ locEnd
+};
+
+var jsTokens = createCommonjsModule(function (module, exports) {
+ // Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell
+ // License: MIT. (See LICENSE.)
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ }); // This regex comes from regex.coffee, and is inserted here by generate-index.js
+ // (run `npm run build`).
+
+ exports.default = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g;
+
+ exports.matchToToken = function (match) {
+ var token = {
+ type: "invalid",
+ value: match[0],
+ closed: undefined
+ };
+ if (match[1]) token.type = "string", token.closed = !!(match[3] || match[4]);else if (match[5]) token.type = "comment";else if (match[6]) token.type = "comment", token.closed = !!match[7];else if (match[8]) token.type = "regex";else if (match[9]) token.type = "number";else if (match[10]) token.type = "name";else if (match[11]) token.type = "punctuator";else if (match[12]) token.type = "whitespace";
+ return token;
+ };
+});
+unwrapExports(jsTokens);
+var jsTokens_1 = jsTokens.matchToToken;
+
+var ast = createCommonjsModule(function (module) {
+ /*
+ Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ (function () {
+
+ function isExpression(node) {
+ if (node == null) {
+ return false;
+ }
+
+ switch (node.type) {
+ case 'ArrayExpression':
+ case 'AssignmentExpression':
+ case 'BinaryExpression':
+ case 'CallExpression':
+ case 'ConditionalExpression':
+ case 'FunctionExpression':
+ case 'Identifier':
+ case 'Literal':
+ case 'LogicalExpression':
+ case 'MemberExpression':
+ case 'NewExpression':
+ case 'ObjectExpression':
+ case 'SequenceExpression':
+ case 'ThisExpression':
+ case 'UnaryExpression':
+ case 'UpdateExpression':
+ return true;
+ }
+
+ return false;
+ }
+
+ function isIterationStatement(node) {
+ if (node == null) {
+ return false;
+ }
+
+ switch (node.type) {
+ case 'DoWhileStatement':
+ case 'ForInStatement':
+ case 'ForStatement':
+ case 'WhileStatement':
+ return true;
+ }
+
+ return false;
+ }
+
+ function isStatement(node) {
+ if (node == null) {
+ return false;
+ }
+
+ switch (node.type) {
+ case 'BlockStatement':
+ case 'BreakStatement':
+ case 'ContinueStatement':
+ case 'DebuggerStatement':
+ case 'DoWhileStatement':
+ case 'EmptyStatement':
+ case 'ExpressionStatement':
+ case 'ForInStatement':
+ case 'ForStatement':
+ case 'IfStatement':
+ case 'LabeledStatement':
+ case 'ReturnStatement':
+ case 'SwitchStatement':
+ case 'ThrowStatement':
+ case 'TryStatement':
+ case 'VariableDeclaration':
+ case 'WhileStatement':
+ case 'WithStatement':
+ return true;
+ }
+
+ return false;
+ }
+
+ function isSourceElement(node) {
+ return isStatement(node) || node != null && node.type === 'FunctionDeclaration';
+ }
+
+ function trailingStatement(node) {
+ switch (node.type) {
+ case 'IfStatement':
+ if (node.alternate != null) {
+ return node.alternate;
+ }
+
+ return node.consequent;
+
+ case 'LabeledStatement':
+ case 'ForStatement':
+ case 'ForInStatement':
+ case 'WhileStatement':
+ case 'WithStatement':
+ return node.body;
+ }
+
+ return null;
+ }
+
+ function isProblematicIfStatement(node) {
+ var current;
+
+ if (node.type !== 'IfStatement') {
+ return false;
+ }
+
+ if (node.alternate == null) {
+ return false;
+ }
+
+ current = node.consequent;
+
+ do {
+ if (current.type === 'IfStatement') {
+ if (current.alternate == null) {
+ return true;
+ }
+ }
+
+ current = trailingStatement(current);
+ } while (current);
+
+ return false;
+ }
+
+ module.exports = {
+ isExpression: isExpression,
+ isStatement: isStatement,
+ isIterationStatement: isIterationStatement,
+ isSourceElement: isSourceElement,
+ isProblematicIfStatement: isProblematicIfStatement,
+ trailingStatement: trailingStatement
+ };
+ })();
+ /* vim: set sw=4 ts=4 et tw=80 : */
+
+});
+var ast_1 = ast.isExpression;
+var ast_2 = ast.isStatement;
+var ast_3 = ast.isIterationStatement;
+var ast_4 = ast.isSourceElement;
+var ast_5 = ast.isProblematicIfStatement;
+var ast_6 = ast.trailingStatement;
+
+var code = createCommonjsModule(function (module) {
+ /*
+ Copyright (C) 2013-2014 Yusuke Suzuki <utatane.tea@gmail.com>
+ Copyright (C) 2014 Ivan Nikulin <ifaaan@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ (function () {
+
+ var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch; // See `tools/generate-identifier-regex.js`.
+
+ ES5Regex = {
+ // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierStart:
+ NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,
+ // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierPart:
+ NonAsciiIdentifierPart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/
+ };
+ ES6Regex = {
+ // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierStart:
+ NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/,
+ // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierPart:
+ NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/
+ };
+
+ function isDecimalDigit(ch) {
+ return 0x30 <= ch && ch <= 0x39; // 0..9
+ }
+
+ function isHexDigit(ch) {
+ return 0x30 <= ch && ch <= 0x39 || // 0..9
+ 0x61 <= ch && ch <= 0x66 || // a..f
+ 0x41 <= ch && ch <= 0x46; // A..F
+ }
+
+ function isOctalDigit(ch) {
+ return ch >= 0x30 && ch <= 0x37; // 0..7
+ } // 7.2 White Space
+
+
+ NON_ASCII_WHITESPACES = [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF];
+
+ function isWhiteSpace(ch) {
+ return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0;
+ } // 7.3 Line Terminators
+
+
+ function isLineTerminator(ch) {
+ return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;
+ } // 7.6 Identifier Names and Identifiers
+
+
+ function fromCodePoint(cp) {
+ if (cp <= 0xFFFF) {
+ return String.fromCharCode(cp);
+ }
+
+ var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800);
+ var cu2 = String.fromCharCode((cp - 0x10000) % 0x400 + 0xDC00);
+ return cu1 + cu2;
+ }
+
+ IDENTIFIER_START = new Array(0x80);
+
+ for (ch = 0; ch < 0x80; ++ch) {
+ IDENTIFIER_START[ch] = ch >= 0x61 && ch <= 0x7A || // a..z
+ ch >= 0x41 && ch <= 0x5A || // A..Z
+ ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore)
+ }
+
+ IDENTIFIER_PART = new Array(0x80);
+
+ for (ch = 0; ch < 0x80; ++ch) {
+ IDENTIFIER_PART[ch] = ch >= 0x61 && ch <= 0x7A || // a..z
+ ch >= 0x41 && ch <= 0x5A || // A..Z
+ ch >= 0x30 && ch <= 0x39 || // 0..9
+ ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore)
+ }
+
+ function isIdentifierStartES5(ch) {
+ return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));
+ }
+
+ function isIdentifierPartES5(ch) {
+ return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));
+ }
+
+ function isIdentifierStartES6(ch) {
+ return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));
+ }
+
+ function isIdentifierPartES6(ch) {
+ return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));
+ }
+
+ module.exports = {
+ isDecimalDigit: isDecimalDigit,
+ isHexDigit: isHexDigit,
+ isOctalDigit: isOctalDigit,
+ isWhiteSpace: isWhiteSpace,
+ isLineTerminator: isLineTerminator,
+ isIdentifierStartES5: isIdentifierStartES5,
+ isIdentifierPartES5: isIdentifierPartES5,
+ isIdentifierStartES6: isIdentifierStartES6,
+ isIdentifierPartES6: isIdentifierPartES6
+ };
+ })();
+ /* vim: set sw=4 ts=4 et tw=80 : */
+
+});
+var code_1 = code.isDecimalDigit;
+var code_2 = code.isHexDigit;
+var code_3 = code.isOctalDigit;
+var code_4 = code.isWhiteSpace;
+var code_5 = code.isLineTerminator;
+var code_6 = code.isIdentifierStartES5;
+var code_7 = code.isIdentifierPartES5;
+var code_8 = code.isIdentifierStartES6;
+var code_9 = code.isIdentifierPartES6;
+
+var keyword = createCommonjsModule(function (module) {
+ /*
+ Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ (function () {
+
+ var code$1 = code;
+
+ function isStrictModeReservedWordES6(id) {
+ switch (id) {
+ case 'implements':
+ case 'interface':
+ case 'package':
+ case 'private':
+ case 'protected':
+ case 'public':
+ case 'static':
+ case 'let':
+ return true;
+
+ default:
+ return false;
+ }
+ }
+
+ function isKeywordES5(id, strict) {
+ // yield should not be treated as keyword under non-strict mode.
+ if (!strict && id === 'yield') {
+ return false;
+ }
+
+ return isKeywordES6(id, strict);
+ }
+
+ function isKeywordES6(id, strict) {
+ if (strict && isStrictModeReservedWordES6(id)) {
+ return true;
+ }
+
+ switch (id.length) {
+ case 2:
+ return id === 'if' || id === 'in' || id === 'do';
+
+ case 3:
+ return id === 'var' || id === 'for' || id === 'new' || id === 'try';
+
+ case 4:
+ return id === 'this' || id === 'else' || id === 'case' || id === 'void' || id === 'with' || id === 'enum';
+
+ case 5:
+ return id === 'while' || id === 'break' || id === 'catch' || id === 'throw' || id === 'const' || id === 'yield' || id === 'class' || id === 'super';
+
+ case 6:
+ return id === 'return' || id === 'typeof' || id === 'delete' || id === 'switch' || id === 'export' || id === 'import';
+
+ case 7:
+ return id === 'default' || id === 'finally' || id === 'extends';
+
+ case 8:
+ return id === 'function' || id === 'continue' || id === 'debugger';
+
+ case 10:
+ return id === 'instanceof';
+
+ default:
+ return false;
+ }
+ }
+
+ function isReservedWordES5(id, strict) {
+ return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict);
+ }
+
+ function isReservedWordES6(id, strict) {
+ return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict);
+ }
+
+ function isRestrictedWord(id) {
+ return id === 'eval' || id === 'arguments';
+ }
+
+ function isIdentifierNameES5(id) {
+ var i, iz, ch;
+
+ if (id.length === 0) {
+ return false;
+ }
+
+ ch = id.charCodeAt(0);
+
+ if (!code$1.isIdentifierStartES5(ch)) {
+ return false;
+ }
+
+ for (i = 1, iz = id.length; i < iz; ++i) {
+ ch = id.charCodeAt(i);
+
+ if (!code$1.isIdentifierPartES5(ch)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ function decodeUtf16(lead, trail) {
+ return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;
+ }
+
+ function isIdentifierNameES6(id) {
+ var i, iz, ch, lowCh, check;
+
+ if (id.length === 0) {
+ return false;
+ }
+
+ check = code$1.isIdentifierStartES6;
+
+ for (i = 0, iz = id.length; i < iz; ++i) {
+ ch = id.charCodeAt(i);
+
+ if (0xD800 <= ch && ch <= 0xDBFF) {
+ ++i;
+
+ if (i >= iz) {
+ return false;
+ }
+
+ lowCh = id.charCodeAt(i);
+
+ if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) {
+ return false;
+ }
+
+ ch = decodeUtf16(ch, lowCh);
+ }
+
+ if (!check(ch)) {
+ return false;
+ }
+
+ check = code$1.isIdentifierPartES6;
+ }
+
+ return true;
+ }
+
+ function isIdentifierES5(id, strict) {
+ return isIdentifierNameES5(id) && !isReservedWordES5(id, strict);
+ }
+
+ function isIdentifierES6(id, strict) {
+ return isIdentifierNameES6(id) && !isReservedWordES6(id, strict);
+ }
+
+ module.exports = {
+ isKeywordES5: isKeywordES5,
+ isKeywordES6: isKeywordES6,
+ isReservedWordES5: isReservedWordES5,
+ isReservedWordES6: isReservedWordES6,
+ isRestrictedWord: isRestrictedWord,
+ isIdentifierNameES5: isIdentifierNameES5,
+ isIdentifierNameES6: isIdentifierNameES6,
+ isIdentifierES5: isIdentifierES5,
+ isIdentifierES6: isIdentifierES6
+ };
+ })();
+ /* vim: set sw=4 ts=4 et tw=80 : */
+
+});
+var keyword_1 = keyword.isKeywordES5;
+var keyword_2 = keyword.isKeywordES6;
+var keyword_3 = keyword.isReservedWordES5;
+var keyword_4 = keyword.isReservedWordES6;
+var keyword_5 = keyword.isRestrictedWord;
+var keyword_6 = keyword.isIdentifierNameES5;
+var keyword_7 = keyword.isIdentifierNameES6;
+var keyword_8 = keyword.isIdentifierES5;
+var keyword_9 = keyword.isIdentifierES6;
+
+var utils$1 = createCommonjsModule(function (module, exports) {
+ /*
+ Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ (function () {
+
+ exports.ast = ast;
+ exports.code = code;
+ exports.keyword = keyword;
+ })();
+ /* vim: set sw=4 ts=4 et tw=80 : */
+
+});
+var utils_1$1 = utils$1.ast;
+var utils_2$1 = utils$1.code;
+var utils_3$1 = utils$1.keyword;
+
+var lib$1 = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.shouldHighlight = shouldHighlight;
+ exports.getChalk = getChalk;
+ exports.default = highlight;
+
+ function _jsTokens() {
+ var data = _interopRequireWildcard(jsTokens);
+
+ _jsTokens = function _jsTokens() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _esutils() {
+ var data = _interopRequireDefault(utils$1);
+
+ _esutils = function _esutils() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _chalk() {
+ var data = _interopRequireDefault(chalk);
+
+ _chalk = function _chalk() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _interopRequireWildcard(obj) {
+ if (obj && obj.__esModule) {
+ return obj;
+ } else {
+ var newObj = {};
+
+ if (obj != null) {
+ for (var key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
+
+ if (desc.get || desc.set) {
+ Object.defineProperty(newObj, key, desc);
+ } else {
+ newObj[key] = obj[key];
+ }
+ }
+ }
+ }
+
+ newObj.default = obj;
+ return newObj;
+ }
+ }
+
+ function getDefs(chalk) {
+ return {
+ keyword: chalk.cyan,
+ capitalized: chalk.yellow,
+ jsx_tag: chalk.yellow,
+ punctuator: chalk.yellow,
+ number: chalk.magenta,
+ string: chalk.green,
+ regex: chalk.magenta,
+ comment: chalk.grey,
+ invalid: chalk.white.bgRed.bold
+ };
+ }
+
+ var NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
+ var JSX_TAG = /^[a-z][\w-]*$/i;
+ var BRACKET = /^[()[\]{}]$/;
+
+ function getTokenType(match) {
+ var _match$slice = match.slice(-2),
+ _match$slice2 = _slicedToArray(_match$slice, 2),
+ offset = _match$slice2[0],
+ text = _match$slice2[1];
+
+ var token = (0, _jsTokens().matchToToken)(match);
+
+ if (token.type === "name") {
+ if (_esutils().default.keyword.isReservedWordES6(token.value)) {
+ return "keyword";
+ }
+
+ if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.substr(offset - 2, 2) == "</")) {
+ return "jsx_tag";
+ }
+
+ if (token.value[0] !== token.value[0].toLowerCase()) {
+ return "capitalized";
+ }
+ }
+
+ if (token.type === "punctuator" && BRACKET.test(token.value)) {
+ return "bracket";
+ }
+
+ if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
+ return "punctuator";
+ }
+
+ return token.type;
+ }
+
+ function highlightTokens(defs, text) {
+ return text.replace(_jsTokens().default, function () {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ var type = getTokenType(args);
+ var colorize = defs[type];
+
+ if (colorize) {
+ return args[0].split(NEWLINE).map(function (str) {
+ return colorize(str);
+ }).join("\n");
+ } else {
+ return args[0];
+ }
+ });
+ }
+
+ function shouldHighlight(options) {
+ return _chalk().default.supportsColor || options.forceColor;
+ }
+
+ function getChalk(options) {
+ var chalk = _chalk().default;
+
+ if (options.forceColor) {
+ chalk = new (_chalk().default.constructor)({
+ enabled: true,
+ level: 1
+ });
+ }
+
+ return chalk;
+ }
+
+ function highlight(code) {
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ if (shouldHighlight(options)) {
+ var chalk = getChalk(options);
+ var defs = getDefs(chalk);
+ return highlightTokens(defs, code);
+ } else {
+ return code;
+ }
+ }
+});
+unwrapExports(lib$1);
+var lib_1 = lib$1.shouldHighlight;
+var lib_2 = lib$1.getChalk;
+
+var lib$2 = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.codeFrameColumns = codeFrameColumns;
+ exports.default = _default;
+
+ function _highlight() {
+ var data = _interopRequireWildcard(lib$1);
+
+ _highlight = function _highlight() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _interopRequireWildcard(obj) {
+ if (obj && obj.__esModule) {
+ return obj;
+ } else {
+ var newObj = {};
+
+ if (obj != null) {
+ for (var key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
+
+ if (desc.get || desc.set) {
+ Object.defineProperty(newObj, key, desc);
+ } else {
+ newObj[key] = obj[key];
+ }
+ }
+ }
+ }
+
+ newObj.default = obj;
+ return newObj;
+ }
+ }
+
+ var deprecationWarningShown = false;
+
+ function getDefs(chalk) {
+ return {
+ gutter: chalk.grey,
+ marker: chalk.red.bold,
+ message: chalk.red.bold
+ };
+ }
+
+ var NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
+
+ function getMarkerLines(loc, source, opts) {
+ var startLoc = Object.assign({
+ column: 0,
+ line: -1
+ }, loc.start);
+ var endLoc = Object.assign({}, startLoc, loc.end);
+
+ var _ref = opts || {},
+ _ref$linesAbove = _ref.linesAbove,
+ linesAbove = _ref$linesAbove === void 0 ? 2 : _ref$linesAbove,
+ _ref$linesBelow = _ref.linesBelow,
+ linesBelow = _ref$linesBelow === void 0 ? 3 : _ref$linesBelow;
+
+ var startLine = startLoc.line;
+ var startColumn = startLoc.column;
+ var endLine = endLoc.line;
+ var endColumn = endLoc.column;
+ var start = Math.max(startLine - (linesAbove + 1), 0);
+ var end = Math.min(source.length, endLine + linesBelow);
+
+ if (startLine === -1) {
+ start = 0;
+ }
+
+ if (endLine === -1) {
+ end = source.length;
+ }
+
+ var lineDiff = endLine - startLine;
+ var markerLines = {};
+
+ if (lineDiff) {
+ for (var i = 0; i <= lineDiff; i++) {
+ var lineNumber = i + startLine;
+
+ if (!startColumn) {
+ markerLines[lineNumber] = true;
+ } else if (i === 0) {
+ var sourceLength = source[lineNumber - 1].length;
+ markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
+ } else if (i === lineDiff) {
+ markerLines[lineNumber] = [0, endColumn];
+ } else {
+ var _sourceLength = source[lineNumber - i].length;
+ markerLines[lineNumber] = [0, _sourceLength];
+ }
+ }
+ } else {
+ if (startColumn === endColumn) {
+ if (startColumn) {
+ markerLines[startLine] = [startColumn, 0];
+ } else {
+ markerLines[startLine] = true;
+ }
+ } else {
+ markerLines[startLine] = [startColumn, endColumn - startColumn];
+ }
+ }
+
+ return {
+ start,
+ end,
+ markerLines
+ };
+ }
+
+ function codeFrameColumns(rawLines, loc) {
+ var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+ var highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight().shouldHighlight)(opts);
+ var chalk = (0, _highlight().getChalk)(opts);
+ var defs = getDefs(chalk);
+
+ var maybeHighlight = function maybeHighlight(chalkFn, string) {
+ return highlighted ? chalkFn(string) : string;
+ };
+
+ var lines = rawLines.split(NEWLINE);
+
+ var _getMarkerLines = getMarkerLines(loc, lines, opts),
+ start = _getMarkerLines.start,
+ end = _getMarkerLines.end,
+ markerLines = _getMarkerLines.markerLines;
+
+ var hasColumns = loc.start && typeof loc.start.column === "number";
+ var numberMaxWidth = String(end).length;
+ var highlightedLines = highlighted ? (0, _highlight().default)(rawLines, opts) : rawLines;
+ var frame = highlightedLines.split(NEWLINE).slice(start, end).map(function (line, index) {
+ var number = start + 1 + index;
+ var paddedNumber = ` ${number}`.slice(-numberMaxWidth);
+ var gutter = ` ${paddedNumber} | `;
+ var hasMarker = markerLines[number];
+ var lastMarkerLine = !markerLines[number + 1];
+
+ if (hasMarker) {
+ var markerLine = "";
+
+ if (Array.isArray(hasMarker)) {
+ var markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
+ var numberOfMarkers = hasMarker[1] || 1;
+ markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join("");
+
+ if (lastMarkerLine && opts.message) {
+ markerLine += " " + maybeHighlight(defs.message, opts.message);
+ }
+ }
+
+ return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line, markerLine].join("");
+ } else {
+ return ` ${maybeHighlight(defs.gutter, gutter)}${line}`;
+ }
+ }).join("\n");
+
+ if (opts.message && !hasColumns) {
+ frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`;
+ }
+
+ if (highlighted) {
+ return chalk.reset(frame);
+ } else {
+ return frame;
+ }
+ }
+
+ function _default(rawLines, lineNumber, colNumber) {
+ var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
+
+ if (!deprecationWarningShown) {
+ deprecationWarningShown = true;
+ var message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";
+
+ if (process.emitWarning) {
+ process.emitWarning(message, "DeprecationWarning");
+ } else {
+ var deprecationError = new Error(message);
+ deprecationError.name = "DeprecationWarning";
+ console.warn(new Error(message));
+ }
+ }
+
+ colNumber = Math.max(colNumber, 0);
+ var location = {
+ start: {
+ column: colNumber,
+ line: lineNumber
+ }
+ };
+ return codeFrameColumns(rawLines, location, opts);
+ }
+});
+unwrapExports(lib$2);
+var lib_1$1 = lib$2.codeFrameColumns;
+
+var ConfigError$1 = errors.ConfigError;
+var locStart$1 = loc.locStart,
+ locEnd$1 = loc.locEnd; // Use defineProperties()/getOwnPropertyDescriptor() to prevent
+// triggering the parsers getters.
+
+var ownNames = Object.getOwnPropertyNames;
+var ownDescriptor = Object.getOwnPropertyDescriptor;
+
+function getParsers(options) {
+ var parsers = {};
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = options.plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var plugin = _step.value;
+
+ if (!plugin.parsers) {
+ continue;
+ }
+
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = ownNames(plugin.parsers)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var name = _step2.value;
+ Object.defineProperty(parsers, name, ownDescriptor(plugin.parsers, name));
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return parsers;
+}
+
+function resolveParser(opts, parsers) {
+ parsers = parsers || getParsers(opts);
+
+ if (typeof opts.parser === "function") {
+ // Custom parser API always works with JavaScript.
+ return {
+ parse: opts.parser,
+ astFormat: "estree",
+ locStart: locStart$1,
+ locEnd: locEnd$1
+ };
+ }
+
+ if (typeof opts.parser === "string") {
+ if (Object.prototype.hasOwnProperty.call(parsers, opts.parser)) {
+ return parsers[opts.parser];
+ }
+ /* istanbul ignore next */
+
+
+ {
+ try {
+ return {
+ parse: require(path$2.resolve(process.cwd(), opts.parser)),
+ astFormat: "estree",
+ locStart: locStart$1,
+ locEnd: locEnd$1
+ };
+ } catch (err) {
+ /* istanbul ignore next */
+ throw new ConfigError$1(`Couldn't resolve parser "${opts.parser}"`);
+ }
+ }
+ }
+}
+
+function parse(text, opts) {
+ var parsers = getParsers(opts); // Create a new object {parserName: parseFn}. Uses defineProperty() to only call
+ // the parsers getters when actually calling the parser `parse` function.
+
+ var parsersForCustomParserApi = Object.keys(parsers).reduce(function (object, parserName) {
+ return Object.defineProperty(object, parserName, {
+ enumerable: true,
+
+ get() {
+ return parsers[parserName].parse;
+ }
+
+ });
+ }, {});
+ var parser = resolveParser(opts, parsers);
+
+ try {
+ if (parser.preprocess) {
+ text = parser.preprocess(text, opts);
+ }
+
+ return {
+ text,
+ ast: parser.parse(text, parsersForCustomParserApi, opts)
+ };
+ } catch (error) {
+ var loc = error.loc;
+
+ if (loc) {
+ var codeFrame = lib$2;
+ error.codeFrame = codeFrame.codeFrameColumns(text, loc, {
+ highlightCode: true
+ });
+ error.message += "\n" + error.codeFrame;
+ throw error;
+ }
+ /* istanbul ignore next */
+
+
+ throw error.stack;
+ }
+}
+
+var parser = {
+ parse,
+ resolveParser
+};
+
+var UndefinedParserError$1 = errors.UndefinedParserError;
+var getSupportInfo$1 = support.getSupportInfo;
+var resolveParser$1 = parser.resolveParser;
+var hiddenDefaults = {
+ astFormat: "estree",
+ printer: {},
+ originalText: undefined,
+ locStart: null,
+ locEnd: null
+}; // Copy options and fill in default values.
+
+function normalize$1(options, opts) {
+ opts = opts || {};
+ var rawOptions = Object.assign({}, options);
+ var supportOptions = getSupportInfo$1(null, {
+ plugins: options.plugins,
+ showUnreleased: true,
+ showDeprecated: true
+ }).options;
+ var defaults = supportOptions.reduce(function (reduced, optionInfo) {
+ return optionInfo.default !== undefined ? Object.assign(reduced, {
+ [optionInfo.name]: optionInfo.default
+ }) : reduced;
+ }, Object.assign({}, hiddenDefaults));
+
+ if (!rawOptions.parser) {
+ if (!rawOptions.filepath) {
+ var logger = opts.logger || console;
+ logger.warn("No parser and no filepath given, using 'babel' the parser now " + "but this will throw an error in the future. " + "Please specify a parser or a filepath so one can be inferred.");
+ rawOptions.parser = "babel";
+ } else {
+ rawOptions.parser = inferParser(rawOptions.filepath, rawOptions.plugins);
+
+ if (!rawOptions.parser) {
+ throw new UndefinedParserError$1(`No parser could be inferred for file: ${rawOptions.filepath}`);
+ }
+ }
+ }
+
+ var parser = resolveParser$1(optionsNormalizer.normalizeApiOptions(rawOptions, [supportOptions.find(function (x) {
+ return x.name === "parser";
+ })], {
+ passThrough: true,
+ logger: false
+ }));
+ rawOptions.astFormat = parser.astFormat;
+ rawOptions.locEnd = parser.locEnd;
+ rawOptions.locStart = parser.locStart;
+ var plugin = getPlugin(rawOptions);
+ rawOptions.printer = plugin.printers[rawOptions.astFormat];
+ var pluginDefaults = supportOptions.filter(function (optionInfo) {
+ return optionInfo.pluginDefaults && optionInfo.pluginDefaults[plugin.name] !== undefined;
+ }).reduce(function (reduced, optionInfo) {
+ return Object.assign(reduced, {
+ [optionInfo.name]: optionInfo.pluginDefaults[plugin.name]
+ });
+ }, {});
+ var mixedDefaults = Object.assign({}, defaults, pluginDefaults);
+ Object.keys(mixedDefaults).forEach(function (k) {
+ if (rawOptions[k] == null) {
+ rawOptions[k] = mixedDefaults[k];
+ }
+ });
+
+ if (rawOptions.parser === "json") {
+ rawOptions.trailingComma = "none";
+ }
+
+ return optionsNormalizer.normalizeApiOptions(rawOptions, supportOptions, Object.assign({
+ passThrough: Object.keys(hiddenDefaults)
+ }, opts));
+}
+
+function getPlugin(options) {
+ var astFormat = options.astFormat;
+
+ if (!astFormat) {
+ throw new Error("getPlugin() requires astFormat to be set");
+ }
+
+ var printerPlugin = options.plugins.find(function (plugin) {
+ return plugin.printers && plugin.printers[astFormat];
+ });
+
+ if (!printerPlugin) {
+ throw new Error(`Couldn't find plugin for AST format "${astFormat}"`);
+ }
+
+ return printerPlugin;
+}
+
+function getInterpreter(filepath) {
+ if (typeof filepath !== "string") {
+ return "";
+ }
+
+ var fd;
+
+ try {
+ fd = fs$1.openSync(filepath, "r");
+ } catch (err) {
+ return "";
+ }
+
+ try {
+ var liner = new readlines(fd);
+ var firstLine = liner.next().toString("utf8"); // #!/bin/env node, #!/usr/bin/env node
+
+ var m1 = firstLine.match(/^#!\/(?:usr\/)?bin\/env\s+(\S+)/);
+
+ if (m1) {
+ return m1[1];
+ } // #!/bin/node, #!/usr/bin/node, #!/usr/local/bin/node
+
+
+ var m2 = firstLine.match(/^#!\/(?:usr\/(?:local\/)?)?bin\/(\S+)/);
+
+ if (m2) {
+ return m2[1];
+ }
+
+ return "";
+ } catch (err) {
+ // There are some weird cases where paths are missing, causing Jest
+ // failures. It's unclear what these correspond to in the real world.
+ return "";
+ } finally {
+ try {
+ // There are some weird cases where paths are missing, causing Jest
+ // failures. It's unclear what these correspond to in the real world.
+ fs$1.closeSync(fd);
+ } catch (err) {// nop
+ }
+ }
+}
+
+function inferParser(filepath, plugins) {
+ var filepathParts = normalizePath(filepath).split("/");
+ var filename = filepathParts[filepathParts.length - 1].toLowerCase(); // If the file has no extension, we can try to infer the language from the
+ // interpreter in the shebang line, if any; but since this requires FS access,
+ // do it last.
+
+ var language = getSupportInfo$1(null, {
+ plugins
+ }).languages.find(function (language) {
+ return language.since !== null && (language.extensions && language.extensions.some(function (extension) {
+ return filename.endsWith(extension);
+ }) || language.filenames && language.filenames.find(function (name) {
+ return name.toLowerCase() === filename;
+ }) || filename.indexOf(".") === -1 && language.interpreters && language.interpreters.indexOf(getInterpreter(filepath)) !== -1);
+ });
+ return language && language.parsers[0];
+}
+
+var options$1 = {
+ normalize: normalize$1,
+ hiddenDefaults,
+ inferParser
+};
+
+function massageAST(ast, options, parent) {
+ if (Array.isArray(ast)) {
+ return ast.map(function (e) {
+ return massageAST(e, options, parent);
+ }).filter(function (e) {
+ return e;
+ });
+ }
+
+ if (!ast || typeof ast !== "object") {
+ return ast;
+ }
+
+ var newObj = {};
+
+ for (var _i = 0, _Object$keys = Object.keys(ast); _i < _Object$keys.length; _i++) {
+ var key = _Object$keys[_i];
+
+ if (typeof ast[key] !== "function") {
+ newObj[key] = massageAST(ast[key], options, ast);
+ }
+ }
+
+ if (options.printer.massageAstNode) {
+ var result = options.printer.massageAstNode(ast, newObj, parent);
+
+ if (result === null) {
+ return undefined;
+ }
+
+ if (result) {
+ return result;
+ }
+ }
+
+ return newObj;
+}
+
+var massageAst = massageAST;
+
+/**
+ * @param {Doc[]} parts
+ * @returns Doc
+ */
+
+
+function concat(parts) {
+ // access the internals of a document directly.
+ // if(parts.length === 1) {
+ // // If it's a single document, no need to concat it.
+ // return parts[0];
+ // }
+
+
+ return {
+ type: "concat",
+ parts
+ };
+}
+/**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+function indent(contents) {
+
+ return {
+ type: "indent",
+ contents
+ };
+}
+/**
+ * @param {number} n
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+function align(n, contents) {
+
+ return {
+ type: "align",
+ contents,
+ n
+ };
+}
+/**
+ * @param {Doc} contents
+ * @param {object} [opts] - TBD ???
+ * @returns Doc
+ */
+
+
+function group(contents, opts) {
+ opts = opts || {};
+
+ return {
+ type: "group",
+ id: opts.id,
+ contents: contents,
+ break: !!opts.shouldBreak,
+ expandedStates: opts.expandedStates
+ };
+}
+/**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+function dedentToRoot(contents) {
+ return align(-Infinity, contents);
+}
+/**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+function markAsRoot(contents) {
+ // @ts-ignore - TBD ???:
+ return align({
+ type: "root"
+ }, contents);
+}
+/**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+function dedent(contents) {
+ return align(-1, contents);
+}
+/**
+ * @param {Doc[]} states
+ * @param {object} [opts] - TBD ???
+ * @returns Doc
+ */
+
+
+function conditionalGroup(states, opts) {
+ return group(states[0], Object.assign(opts || {}, {
+ expandedStates: states
+ }));
+}
+/**
+ * @param {Doc[]} parts
+ * @returns Doc
+ */
+
+
+function fill(parts) {
+
+ return {
+ type: "fill",
+ parts
+ };
+}
+/**
+ * @param {Doc} [breakContents]
+ * @param {Doc} [flatContents]
+ * @param {object} [opts] - TBD ???
+ * @returns Doc
+ */
+
+
+function ifBreak(breakContents, flatContents, opts) {
+ opts = opts || {};
+
+ return {
+ type: "if-break",
+ breakContents,
+ flatContents,
+ groupId: opts.groupId
+ };
+}
+/**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+function lineSuffix(contents) {
+
+ return {
+ type: "line-suffix",
+ contents
+ };
+}
+
+var lineSuffixBoundary = {
+ type: "line-suffix-boundary"
+};
+var breakParent = {
+ type: "break-parent"
+};
+var trim = {
+ type: "trim"
+};
+var line = {
+ type: "line"
+};
+var softline = {
+ type: "line",
+ soft: true
+};
+var hardline = concat([{
+ type: "line",
+ hard: true
+}, breakParent]);
+var literalline = concat([{
+ type: "line",
+ hard: true,
+ literal: true
+}, breakParent]);
+var cursor = {
+ type: "cursor",
+ placeholder: Symbol("cursor")
+};
+/**
+ * @param {Doc} sep
+ * @param {Doc[]} arr
+ * @returns Doc
+ */
+
+function join(sep, arr) {
+ var res = [];
+
+ for (var i = 0; i < arr.length; i++) {
+ if (i !== 0) {
+ res.push(sep);
+ }
+
+ res.push(arr[i]);
+ }
+
+ return concat(res);
+}
+/**
+ * @param {Doc} doc
+ * @param {number} size
+ * @param {number} tabWidth
+ */
+
+
+function addAlignmentToDoc(doc, size, tabWidth) {
+ var aligned = doc;
+
+ if (size > 0) {
+ // Use indent to add tabs for all the levels of tabs we need
+ for (var i = 0; i < Math.floor(size / tabWidth); ++i) {
+ aligned = indent(aligned);
+ } // Use align for all the spaces that are needed
+
+
+ aligned = align(size % tabWidth, aligned); // size is absolute from 0 and not relative to the current
+ // indentation, so we use -Infinity to reset the indentation to 0
+
+ aligned = align(-Infinity, aligned);
+ }
+
+ return aligned;
+}
+
+var docBuilders = {
+ concat,
+ join,
+ line,
+ softline,
+ hardline,
+ literalline,
+ group,
+ conditionalGroup,
+ fill,
+ lineSuffix,
+ lineSuffixBoundary,
+ cursor,
+ breakParent,
+ ifBreak,
+ trim,
+ indent,
+ align,
+ addAlignmentToDoc,
+ markAsRoot,
+ dedentToRoot,
+ dedent
+};
+
+var ansiRegex = function ansiRegex(options) {
+ options = Object.assign({
+ onlyFirst: false
+ }, options);
+ var pattern = ['[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)', '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'].join('|');
+ return new RegExp(pattern, options.onlyFirst ? undefined : 'g');
+};
+
+var stripAnsi = function stripAnsi(string) {
+ return typeof string === 'string' ? string.replace(ansiRegex(), '') : string;
+};
+
+var stripAnsi_1 = stripAnsi;
+var default_1$1 = stripAnsi;
+stripAnsi_1.default = default_1$1;
+
+/* eslint-disable yoda */
+
+var isFullwidthCodePoint = function isFullwidthCodePoint(codePoint) {
+ if (Number.isNaN(codePoint)) {
+ return false;
+ } // Code points are derived from:
+ // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
+
+
+ if (codePoint >= 0x1100 && (codePoint <= 0x115F || // Hangul Jamo
+ codePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET
+ codePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET
+ // CJK Radicals Supplement .. Enclosed CJK Letters and Months
+ 0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F || // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
+ 0x3250 <= codePoint && codePoint <= 0x4DBF || // CJK Unified Ideographs .. Yi Radicals
+ 0x4E00 <= codePoint && codePoint <= 0xA4C6 || // Hangul Jamo Extended-A
+ 0xA960 <= codePoint && codePoint <= 0xA97C || // Hangul Syllables
+ 0xAC00 <= codePoint && codePoint <= 0xD7A3 || // CJK Compatibility Ideographs
+ 0xF900 <= codePoint && codePoint <= 0xFAFF || // Vertical Forms
+ 0xFE10 <= codePoint && codePoint <= 0xFE19 || // CJK Compatibility Forms .. Small Form Variants
+ 0xFE30 <= codePoint && codePoint <= 0xFE6B || // Halfwidth and Fullwidth Forms
+ 0xFF01 <= codePoint && codePoint <= 0xFF60 || 0xFFE0 <= codePoint && codePoint <= 0xFFE6 || // Kana Supplement
+ 0x1B000 <= codePoint && codePoint <= 0x1B001 || // Enclosed Ideographic Supplement
+ 0x1F200 <= codePoint && codePoint <= 0x1F251 || // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
+ 0x20000 <= codePoint && codePoint <= 0x3FFFD)) {
+ return true;
+ }
+
+ return false;
+};
+
+var isFullwidthCodePoint_1 = isFullwidthCodePoint;
+var default_1$2 = isFullwidthCodePoint;
+isFullwidthCodePoint_1.default = default_1$2;
+
+var emojiRegex = function emojiRegex() {
+ // https://mths.be/emoji
+ return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
+};
+
+var stringWidth = function stringWidth(string) {
+ string = string.replace(emojiRegex(), ' ');
+
+ if (typeof string !== 'string' || string.length === 0) {
+ return 0;
+ }
+
+ string = stripAnsi_1(string);
+ var width = 0;
+
+ for (var i = 0; i < string.length; i++) {
+ var code = string.codePointAt(i); // Ignore control characters
+
+ if (code <= 0x1F || code >= 0x7F && code <= 0x9F) {
+ continue;
+ } // Ignore combining characters
+
+
+ if (code >= 0x300 && code <= 0x36F) {
+ continue;
+ } // Surrogates
+
+
+ if (code > 0xFFFF) {
+ i++;
+ }
+
+ width += isFullwidthCodePoint_1(code) ? 2 : 1;
+ }
+
+ return width;
+};
+
+var stringWidth_1 = stringWidth; // TODO: remove this in the next major version
+
+var default_1$3 = stringWidth;
+stringWidth_1.default = default_1$3;
+
+var notAsciiRegex = /[^\x20-\x7F]/;
+
+function isExportDeclaration(node) {
+ if (node) {
+ switch (node.type) {
+ case "ExportDefaultDeclaration":
+ case "ExportDefaultSpecifier":
+ case "DeclareExportDeclaration":
+ case "ExportNamedDeclaration":
+ case "ExportAllDeclaration":
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function getParentExportDeclaration(path) {
+ var parentNode = path.getParentNode();
+
+ if (path.getName() === "declaration" && isExportDeclaration(parentNode)) {
+ return parentNode;
+ }
+
+ return null;
+}
+
+function getPenultimate(arr) {
+ if (arr.length > 1) {
+ return arr[arr.length - 2];
+ }
+
+ return null;
+}
+/**
+ * @typedef {{backwards?: boolean}} SkipOptions
+ */
+
+/**
+ * @param {string | RegExp} chars
+ * @returns {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+
+function skip(chars) {
+ return function (text, index, opts) {
+ var backwards = opts && opts.backwards; // Allow `skip` functions to be threaded together without having
+ // to check for failures (did someone say monads?).
+
+ if (index === false) {
+ return false;
+ }
+
+ var length = text.length;
+ var cursor = index;
+
+ while (cursor >= 0 && cursor < length) {
+ var c = text.charAt(cursor);
+
+ if (chars instanceof RegExp) {
+ if (!chars.test(c)) {
+ return cursor;
+ }
+ } else if (chars.indexOf(c) === -1) {
+ return cursor;
+ }
+
+ backwards ? cursor-- : cursor++;
+ }
+
+ if (cursor === -1 || cursor === length) {
+ // If we reached the beginning or end of the file, return the
+ // out-of-bounds cursor. It's up to the caller to handle this
+ // correctly. We don't want to indicate `false` though if it
+ // actually skipped valid characters.
+ return cursor;
+ }
+
+ return false;
+ };
+}
+/**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+
+var skipWhitespace = skip(/\s/);
+/**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+var skipSpaces = skip(" \t");
+/**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+var skipToLineEnd = skip(",; \t");
+/**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+var skipEverythingButNewLine = skip(/[^\r\n]/);
+/**
+ * @param {string} text
+ * @param {number | false} index
+ * @returns {number | false}
+ */
+
+function skipInlineComment(text, index) {
+ if (index === false) {
+ return false;
+ }
+
+ if (text.charAt(index) === "/" && text.charAt(index + 1) === "*") {
+ for (var i = index + 2; i < text.length; ++i) {
+ if (text.charAt(i) === "*" && text.charAt(i + 1) === "/") {
+ return i + 2;
+ }
+ }
+ }
+
+ return index;
+}
+/**
+ * @param {string} text
+ * @param {number | false} index
+ * @returns {number | false}
+ */
+
+
+function skipTrailingComment(text, index) {
+ if (index === false) {
+ return false;
+ }
+
+ if (text.charAt(index) === "/" && text.charAt(index + 1) === "/") {
+ return skipEverythingButNewLine(text, index);
+ }
+
+ return index;
+} // This one doesn't use the above helper function because it wants to
+// test \r\n in order and `skip` doesn't support ordering and we only
+// want to skip one newline. It's simple to implement.
+
+/**
+ * @param {string} text
+ * @param {number | false} index
+ * @param {SkipOptions=} opts
+ * @returns {number | false}
+ */
+
+
+function skipNewline(text, index, opts) {
+ var backwards = opts && opts.backwards;
+
+ if (index === false) {
+ return false;
+ }
+
+ var atIndex = text.charAt(index);
+
+ if (backwards) {
+ if (text.charAt(index - 1) === "\r" && atIndex === "\n") {
+ return index - 2;
+ }
+
+ if (atIndex === "\n" || atIndex === "\r" || atIndex === "\u2028" || atIndex === "\u2029") {
+ return index - 1;
+ }
+ } else {
+ if (atIndex === "\r" && text.charAt(index + 1) === "\n") {
+ return index + 2;
+ }
+
+ if (atIndex === "\n" || atIndex === "\r" || atIndex === "\u2028" || atIndex === "\u2029") {
+ return index + 1;
+ }
+ }
+
+ return index;
+}
+/**
+ * @param {string} text
+ * @param {number} index
+ * @param {SkipOptions=} opts
+ * @returns {boolean}
+ */
+
+
+function hasNewline(text, index, opts) {
+ opts = opts || {};
+ var idx = skipSpaces(text, opts.backwards ? index - 1 : index, opts);
+ var idx2 = skipNewline(text, idx, opts);
+ return idx !== idx2;
+}
+/**
+ * @param {string} text
+ * @param {number} start
+ * @param {number} end
+ * @returns {boolean}
+ */
+
+
+function hasNewlineInRange(text, start, end) {
+ for (var i = start; i < end; ++i) {
+ if (text.charAt(i) === "\n") {
+ return true;
+ }
+ }
+
+ return false;
+} // Note: this function doesn't ignore leading comments unlike isNextLineEmpty
+
+/**
+ * @template N
+ * @param {string} text
+ * @param {N} node
+ * @param {(node: N) => number} locStart
+ */
+
+
+function isPreviousLineEmpty(text, node, locStart) {
+ /** @type {number | false} */
+ var idx = locStart(node) - 1;
+ idx = skipSpaces(text, idx, {
+ backwards: true
+ });
+ idx = skipNewline(text, idx, {
+ backwards: true
+ });
+ idx = skipSpaces(text, idx, {
+ backwards: true
+ });
+ var idx2 = skipNewline(text, idx, {
+ backwards: true
+ });
+ return idx !== idx2;
+}
+/**
+ * @param {string} text
+ * @param {number} index
+ * @returns {boolean}
+ */
+
+
+function isNextLineEmptyAfterIndex(text, index) {
+ /** @type {number | false} */
+ var oldIdx = null;
+ /** @type {number | false} */
+
+ var idx = index;
+
+ while (idx !== oldIdx) {
+ // We need to skip all the potential trailing inline comments
+ oldIdx = idx;
+ idx = skipToLineEnd(text, idx);
+ idx = skipInlineComment(text, idx);
+ idx = skipSpaces(text, idx);
+ }
+
+ idx = skipTrailingComment(text, idx);
+ idx = skipNewline(text, idx);
+ return idx !== false && hasNewline(text, idx);
+}
+/**
+ * @template N
+ * @param {string} text
+ * @param {N} node
+ * @param {(node: N) => number} locEnd
+ * @returns {boolean}
+ */
+
+
+function isNextLineEmpty(text, node, locEnd) {
+ return isNextLineEmptyAfterIndex(text, locEnd(node));
+}
+/**
+ * @param {string} text
+ * @param {number} idx
+ * @returns {number | false}
+ */
+
+
+function getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, idx) {
+ /** @type {number | false} */
+ var oldIdx = null;
+ /** @type {number | false} */
+
+ var nextIdx = idx;
+
+ while (nextIdx !== oldIdx) {
+ oldIdx = nextIdx;
+ nextIdx = skipSpaces(text, nextIdx);
+ nextIdx = skipInlineComment(text, nextIdx);
+ nextIdx = skipTrailingComment(text, nextIdx);
+ nextIdx = skipNewline(text, nextIdx);
+ }
+
+ return nextIdx;
+}
+/**
+ * @template N
+ * @param {string} text
+ * @param {N} node
+ * @param {(node: N) => number} locEnd
+ * @returns {number | false}
+ */
+
+
+function getNextNonSpaceNonCommentCharacterIndex(text, node, locEnd) {
+ return getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, locEnd(node));
+}
+/**
+ * @template N
+ * @param {string} text
+ * @param {N} node
+ * @param {(node: N) => number} locEnd
+ * @returns {string}
+ */
+
+
+function getNextNonSpaceNonCommentCharacter(text, node, locEnd) {
+ return text.charAt( // @ts-ignore => TBD: can return false, should we define a fallback?
+ getNextNonSpaceNonCommentCharacterIndex(text, node, locEnd));
+}
+/**
+ * @param {string} text
+ * @param {number} index
+ * @param {SkipOptions=} opts
+ * @returns {boolean}
+ */
+
+
+function hasSpaces(text, index, opts) {
+ opts = opts || {};
+ var idx = skipSpaces(text, opts.backwards ? index - 1 : index, opts);
+ return idx !== index;
+}
+/**
+ * @param {{range?: [number, number], start?: number}} node
+ * @param {number} index
+ */
+
+
+function setLocStart(node, index) {
+ if (node.range) {
+ node.range[0] = index;
+ } else {
+ node.start = index;
+ }
+}
+/**
+ * @param {{range?: [number, number], end?: number}} node
+ * @param {number} index
+ */
+
+
+function setLocEnd(node, index) {
+ if (node.range) {
+ node.range[1] = index;
+ } else {
+ node.end = index;
+ }
+}
+
+var PRECEDENCE = {};
+[["|>"], ["??"], ["||"], ["&&"], ["|"], ["^"], ["&"], ["==", "===", "!=", "!=="], ["<", ">", "<=", ">=", "in", "instanceof"], [">>", "<<", ">>>"], ["+", "-"], ["*", "/", "%"], ["**"]].forEach(function (tier, i) {
+ tier.forEach(function (op) {
+ PRECEDENCE[op] = i;
+ });
+});
+
+function getPrecedence(op) {
+ return PRECEDENCE[op];
+}
+
+var equalityOperators = {
+ "==": true,
+ "!=": true,
+ "===": true,
+ "!==": true
+};
+var multiplicativeOperators = {
+ "*": true,
+ "/": true,
+ "%": true
+};
+var bitshiftOperators = {
+ ">>": true,
+ ">>>": true,
+ "<<": true
+};
+
+function shouldFlatten(parentOp, nodeOp) {
+ if (getPrecedence(nodeOp) !== getPrecedence(parentOp)) {
+ return false;
+ } // ** is right-associative
+ // x ** y ** z --> x ** (y ** z)
+
+
+ if (parentOp === "**") {
+ return false;
+ } // x == y == z --> (x == y) == z
+
+
+ if (equalityOperators[parentOp] && equalityOperators[nodeOp]) {
+ return false;
+ } // x * y % z --> (x * y) % z
+
+
+ if (nodeOp === "%" && multiplicativeOperators[parentOp] || parentOp === "%" && multiplicativeOperators[nodeOp]) {
+ return false;
+ } // x * y / z --> (x * y) / z
+ // x / y * z --> (x / y) * z
+
+
+ if (nodeOp !== parentOp && multiplicativeOperators[nodeOp] && multiplicativeOperators[parentOp]) {
+ return false;
+ } // x << y << z --> (x << y) << z
+
+
+ if (bitshiftOperators[parentOp] && bitshiftOperators[nodeOp]) {
+ return false;
+ }
+
+ return true;
+}
+
+function isBitwiseOperator(operator) {
+ return !!bitshiftOperators[operator] || operator === "|" || operator === "^" || operator === "&";
+} // Tests if an expression starts with `{`, or (if forbidFunctionClassAndDoExpr
+// holds) `function`, `class`, or `do {}`. Will be overzealous if there's
+// already necessary grouping parentheses.
+
+
+function startsWithNoLookaheadToken(node, forbidFunctionClassAndDoExpr) {
+ node = getLeftMost(node);
+
+ switch (node.type) {
+ case "FunctionExpression":
+ case "ClassExpression":
+ case "DoExpression":
+ return forbidFunctionClassAndDoExpr;
+
+ case "ObjectExpression":
+ return true;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return startsWithNoLookaheadToken(node.object, forbidFunctionClassAndDoExpr);
+
+ case "TaggedTemplateExpression":
+ if (node.tag.type === "FunctionExpression") {
+ // IIFEs are always already parenthesized
+ return false;
+ }
+
+ return startsWithNoLookaheadToken(node.tag, forbidFunctionClassAndDoExpr);
+
+ case "CallExpression":
+ case "OptionalCallExpression":
+ if (node.callee.type === "FunctionExpression") {
+ // IIFEs are always already parenthesized
+ return false;
+ }
+
+ return startsWithNoLookaheadToken(node.callee, forbidFunctionClassAndDoExpr);
+
+ case "ConditionalExpression":
+ return startsWithNoLookaheadToken(node.test, forbidFunctionClassAndDoExpr);
+
+ case "UpdateExpression":
+ return !node.prefix && startsWithNoLookaheadToken(node.argument, forbidFunctionClassAndDoExpr);
+
+ case "BindExpression":
+ return node.object && startsWithNoLookaheadToken(node.object, forbidFunctionClassAndDoExpr);
+
+ case "SequenceExpression":
+ return startsWithNoLookaheadToken(node.expressions[0], forbidFunctionClassAndDoExpr);
+
+ case "TSAsExpression":
+ return startsWithNoLookaheadToken(node.expression, forbidFunctionClassAndDoExpr);
+
+ default:
+ return false;
+ }
+}
+
+function getLeftMost(node) {
+ if (node.left) {
+ return getLeftMost(node.left);
+ }
+
+ return node;
+}
+/**
+ * @param {string} value
+ * @param {number} tabWidth
+ * @param {number=} startIndex
+ * @returns {number}
+ */
+
+
+function getAlignmentSize(value, tabWidth, startIndex) {
+ startIndex = startIndex || 0;
+ var size = 0;
+
+ for (var i = startIndex; i < value.length; ++i) {
+ if (value[i] === "\t") {
+ // Tabs behave in a way that they are aligned to the nearest
+ // multiple of tabWidth:
+ // 0 -> 4, 1 -> 4, 2 -> 4, 3 -> 4
+ // 4 -> 8, 5 -> 8, 6 -> 8, 7 -> 8 ...
+ size = size + tabWidth - size % tabWidth;
+ } else {
+ size++;
+ }
+ }
+
+ return size;
+}
+/**
+ * @param {string} value
+ * @param {number} tabWidth
+ * @returns {number}
+ */
+
+
+function getIndentSize(value, tabWidth) {
+ var lastNewlineIndex = value.lastIndexOf("\n");
+
+ if (lastNewlineIndex === -1) {
+ return 0;
+ }
+
+ return getAlignmentSize( // All the leading whitespaces
+ value.slice(lastNewlineIndex + 1).match(/^[ \t]*/)[0], tabWidth);
+}
+/**
+ * @typedef {'"' | "'"} Quote
+ */
+
+/**
+ *
+ * @param {string} raw
+ * @param {Quote} preferredQuote
+ * @returns {Quote}
+ */
+
+
+function getPreferredQuote(raw, preferredQuote) {
+ // `rawContent` is the string exactly like it appeared in the input source
+ // code, without its enclosing quotes.
+ var rawContent = raw.slice(1, -1);
+ /** @type {{ quote: '"', regex: RegExp }} */
+
+ var double = {
+ quote: '"',
+ regex: /"/g
+ };
+ /** @type {{ quote: "'", regex: RegExp }} */
+
+ var single = {
+ quote: "'",
+ regex: /'/g
+ };
+ var preferred = preferredQuote === "'" ? single : double;
+ var alternate = preferred === single ? double : single;
+ var result = preferred.quote; // If `rawContent` contains at least one of the quote preferred for enclosing
+ // the string, we might want to enclose with the alternate quote instead, to
+ // minimize the number of escaped quotes.
+
+ if (rawContent.includes(preferred.quote) || rawContent.includes(alternate.quote)) {
+ var numPreferredQuotes = (rawContent.match(preferred.regex) || []).length;
+ var numAlternateQuotes = (rawContent.match(alternate.regex) || []).length;
+ result = numPreferredQuotes > numAlternateQuotes ? alternate.quote : preferred.quote;
+ }
+
+ return result;
+}
+
+function printString(raw, options, isDirectiveLiteral) {
+ // `rawContent` is the string exactly like it appeared in the input source
+ // code, without its enclosing quotes.
+ var rawContent = raw.slice(1, -1); // Check for the alternate quote, to determine if we're allowed to swap
+ // the quotes on a DirectiveLiteral.
+
+ var canChangeDirectiveQuotes = !rawContent.includes('"') && !rawContent.includes("'");
+ /** @type {Quote} */
+
+ var enclosingQuote = options.parser === "json" ? '"' : options.__isInHtmlAttribute ? "'" : getPreferredQuote(raw, options.singleQuote ? "'" : '"'); // Directives are exact code unit sequences, which means that you can't
+ // change the escape sequences they use.
+ // See https://github.com/prettier/prettier/issues/1555
+ // and https://tc39.github.io/ecma262/#directive-prologue
+
+ if (isDirectiveLiteral) {
+ if (canChangeDirectiveQuotes) {
+ return enclosingQuote + rawContent + enclosingQuote;
+ }
+
+ return raw;
+ } // It might sound unnecessary to use `makeString` even if the string already
+ // is enclosed with `enclosingQuote`, but it isn't. The string could contain
+ // unnecessary escapes (such as in `"\'"`). Always using `makeString` makes
+ // sure that we consistently output the minimum amount of escaped quotes.
+
+
+ return makeString(rawContent, enclosingQuote, !(options.parser === "css" || options.parser === "less" || options.parser === "scss" || options.embeddedInHtml));
+}
+/**
+ * @param {string} rawContent
+ * @param {Quote} enclosingQuote
+ * @param {boolean=} unescapeUnnecessaryEscapes
+ * @returns {string}
+ */
+
+
+function makeString(rawContent, enclosingQuote, unescapeUnnecessaryEscapes) {
+ var otherQuote = enclosingQuote === '"' ? "'" : '"'; // Matches _any_ escape and unescaped quotes (both single and double).
+
+ var regex = /\\([\s\S])|(['"])/g; // Escape and unescape single and double quotes as needed to be able to
+ // enclose `rawContent` with `enclosingQuote`.
+
+ var newContent = rawContent.replace(regex, function (match, escaped, quote) {
+ // If we matched an escape, and the escaped character is a quote of the
+ // other type than we intend to enclose the string with, there's no need for
+ // it to be escaped, so return it _without_ the backslash.
+ if (escaped === otherQuote) {
+ return escaped;
+ } // If we matched an unescaped quote and it is of the _same_ type as we
+ // intend to enclose the string with, it must be escaped, so return it with
+ // a backslash.
+
+
+ if (quote === enclosingQuote) {
+ return "\\" + quote;
+ }
+
+ if (quote) {
+ return quote;
+ } // Unescape any unnecessarily escaped character.
+ // Adapted from https://github.com/eslint/eslint/blob/de0b4ad7bd820ade41b1f606008bea68683dc11a/lib/rules/no-useless-escape.js#L27
+
+
+ return unescapeUnnecessaryEscapes && /^[^\\nrvtbfux\r\n\u2028\u2029"'0-7]$/.test(escaped) ? escaped : "\\" + escaped;
+ });
+ return enclosingQuote + newContent + enclosingQuote;
+}
+
+function printNumber(rawNumber) {
+ return rawNumber.toLowerCase() // Remove unnecessary plus and zeroes from scientific notation.
+ .replace(/^([+-]?[\d.]+e)(?:\+|(-))?0*(\d)/, "$1$2$3") // Remove unnecessary scientific notation (1e0).
+ .replace(/^([+-]?[\d.]+)e[+-]?0+$/, "$1") // Make sure numbers always start with a digit.
+ .replace(/^([+-])?\./, "$10.") // Remove extraneous trailing decimal zeroes.
+ .replace(/(\.\d+?)0+(?=e|$)/, "$1") // Remove trailing dot.
+ .replace(/\.(?=e|$)/, "");
+}
+/**
+ * @param {string} str
+ * @param {string} target
+ * @returns {number}
+ */
+
+
+function getMaxContinuousCount(str, target) {
+ var results = str.match(new RegExp(`(${escapeStringRegexp(target)})+`, "g"));
+
+ if (results === null) {
+ return 0;
+ }
+
+ return results.reduce(function (maxCount, result) {
+ return Math.max(maxCount, result.length / target.length);
+ }, 0);
+}
+
+function getMinNotPresentContinuousCount(str, target) {
+ var matches = str.match(new RegExp(`(${escapeStringRegexp(target)})+`, "g"));
+
+ if (matches === null) {
+ return 0;
+ }
+
+ var countPresent = new Map();
+ var max = 0;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = matches[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var match = _step.value;
+ var count = match.length / target.length;
+ countPresent.set(count, true);
+
+ if (count > max) {
+ max = count;
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ for (var i = 1; i < max; i++) {
+ if (!countPresent.get(i)) {
+ return i;
+ }
+ }
+
+ return max + 1;
+}
+/**
+ * @param {string} text
+ * @returns {number}
+ */
+
+
+function getStringWidth(text) {
+ if (!text) {
+ return 0;
+ } // shortcut to avoid needless string `RegExp`s, replacements, and allocations within `string-width`
+
+
+ if (!notAsciiRegex.test(text)) {
+ return text.length;
+ }
+
+ return stringWidth_1(text);
+}
+
+function hasIgnoreComment(path) {
+ var node = path.getValue();
+ return hasNodeIgnoreComment(node);
+}
+
+function hasNodeIgnoreComment(node) {
+ return node && node.comments && node.comments.length > 0 && node.comments.some(function (comment) {
+ return comment.value.trim() === "prettier-ignore";
+ });
+}
+
+function matchAncestorTypes(path, types, index) {
+ index = index || 0;
+ types = types.slice();
+
+ while (types.length) {
+ var parent = path.getParentNode(index);
+ var type = types.shift();
+
+ if (!parent || parent.type !== type) {
+ return false;
+ }
+
+ index++;
+ }
+
+ return true;
+}
+
+function addCommentHelper(node, comment) {
+ var comments = node.comments || (node.comments = []);
+ comments.push(comment);
+ comment.printed = false; // For some reason, TypeScript parses `// x` inside of JSXText as a comment
+ // We already "print" it via the raw text, we don't need to re-print it as a
+ // comment
+
+ if (node.type === "JSXText") {
+ comment.printed = true;
+ }
+}
+
+function addLeadingComment(node, comment) {
+ comment.leading = true;
+ comment.trailing = false;
+ addCommentHelper(node, comment);
+}
+
+function addDanglingComment(node, comment) {
+ comment.leading = false;
+ comment.trailing = false;
+ addCommentHelper(node, comment);
+}
+
+function addTrailingComment(node, comment) {
+ comment.leading = false;
+ comment.trailing = true;
+ addCommentHelper(node, comment);
+}
+
+function isWithinParentArrayProperty(path, propertyName) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+
+ if (parent == null) {
+ return false;
+ }
+
+ if (!Array.isArray(parent[propertyName])) {
+ return false;
+ }
+
+ var key = path.getName();
+ return parent[propertyName][key] === node;
+}
+
+function replaceEndOfLineWith(text, replacement) {
+ var parts = [];
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = text.split("\n")[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var part = _step2.value;
+
+ if (parts.length !== 0) {
+ parts.push(replacement);
+ }
+
+ parts.push(part);
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return parts;
+}
+
+var util = {
+ replaceEndOfLineWith,
+ getStringWidth,
+ getMaxContinuousCount,
+ getMinNotPresentContinuousCount,
+ getPrecedence,
+ shouldFlatten,
+ isBitwiseOperator,
+ isExportDeclaration,
+ getParentExportDeclaration,
+ getPenultimate,
+ getLast,
+ getNextNonSpaceNonCommentCharacterIndexWithStartIndex,
+ getNextNonSpaceNonCommentCharacterIndex,
+ getNextNonSpaceNonCommentCharacter,
+ skip,
+ skipWhitespace,
+ skipSpaces,
+ skipToLineEnd,
+ skipEverythingButNewLine,
+ skipInlineComment,
+ skipTrailingComment,
+ skipNewline,
+ isNextLineEmptyAfterIndex,
+ isNextLineEmpty,
+ isPreviousLineEmpty,
+ hasNewline,
+ hasNewlineInRange,
+ hasSpaces,
+ setLocStart,
+ setLocEnd,
+ startsWithNoLookaheadToken,
+ getAlignmentSize,
+ getIndentSize,
+ getPreferredQuote,
+ printString,
+ printNumber,
+ hasIgnoreComment,
+ hasNodeIgnoreComment,
+ makeString,
+ matchAncestorTypes,
+ addLeadingComment,
+ addDanglingComment,
+ addTrailingComment,
+ isWithinParentArrayProperty
+};
+
+function guessEndOfLine(text) {
+ var index = text.indexOf("\r");
+
+ if (index >= 0) {
+ return text.charAt(index + 1) === "\n" ? "crlf" : "cr";
+ }
+
+ return "lf";
+}
+
+function convertEndOfLineToChars(value) {
+ switch (value) {
+ case "cr":
+ return "\r";
+
+ case "crlf":
+ return "\r\n";
+
+ default:
+ return "\n";
+ }
+}
+
+var endOfLine = {
+ guessEndOfLine,
+ convertEndOfLineToChars
+};
+
+var getStringWidth$1 = util.getStringWidth;
+var convertEndOfLineToChars$1 = endOfLine.convertEndOfLineToChars;
+var concat$1 = docBuilders.concat,
+ fill$1 = docBuilders.fill,
+ cursor$1 = docBuilders.cursor;
+/** @type {Record<symbol, typeof MODE_BREAK | typeof MODE_FLAT>} */
+
+var groupModeMap;
+var MODE_BREAK = 1;
+var MODE_FLAT = 2;
+
+function rootIndent() {
+ return {
+ value: "",
+ length: 0,
+ queue: []
+ };
+}
+
+function makeIndent(ind, options) {
+ return generateInd(ind, {
+ type: "indent"
+ }, options);
+}
+
+function makeAlign(ind, n, options) {
+ return n === -Infinity ? ind.root || rootIndent() : n < 0 ? generateInd(ind, {
+ type: "dedent"
+ }, options) : !n ? ind : n.type === "root" ? Object.assign({}, ind, {
+ root: ind
+ }) : typeof n === "string" ? generateInd(ind, {
+ type: "stringAlign",
+ n
+ }, options) : generateInd(ind, {
+ type: "numberAlign",
+ n
+ }, options);
+}
+
+function generateInd(ind, newPart, options) {
+ var queue = newPart.type === "dedent" ? ind.queue.slice(0, -1) : ind.queue.concat(newPart);
+ var value = "";
+ var length = 0;
+ var lastTabs = 0;
+ var lastSpaces = 0;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = queue[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var part = _step.value;
+
+ switch (part.type) {
+ case "indent":
+ flush();
+
+ if (options.useTabs) {
+ addTabs(1);
+ } else {
+ addSpaces(options.tabWidth);
+ }
+
+ break;
+
+ case "stringAlign":
+ flush();
+ value += part.n;
+ length += part.n.length;
+ break;
+
+ case "numberAlign":
+ lastTabs += 1;
+ lastSpaces += part.n;
+ break;
+
+ /* istanbul ignore next */
+
+ default:
+ throw new Error(`Unexpected type '${part.type}'`);
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ flushSpaces();
+ return Object.assign({}, ind, {
+ value,
+ length,
+ queue
+ });
+
+ function addTabs(count) {
+ value += "\t".repeat(count);
+ length += options.tabWidth * count;
+ }
+
+ function addSpaces(count) {
+ value += " ".repeat(count);
+ length += count;
+ }
+
+ function flush() {
+ if (options.useTabs) {
+ flushTabs();
+ } else {
+ flushSpaces();
+ }
+ }
+
+ function flushTabs() {
+ if (lastTabs > 0) {
+ addTabs(lastTabs);
+ }
+
+ resetLast();
+ }
+
+ function flushSpaces() {
+ if (lastSpaces > 0) {
+ addSpaces(lastSpaces);
+ }
+
+ resetLast();
+ }
+
+ function resetLast() {
+ lastTabs = 0;
+ lastSpaces = 0;
+ }
+}
+
+function trim$1(out) {
+ if (out.length === 0) {
+ return 0;
+ }
+
+ var trimCount = 0; // Trim whitespace at the end of line
+
+ while (out.length > 0 && typeof out[out.length - 1] === "string" && out[out.length - 1].match(/^[ \t]*$/)) {
+ trimCount += out.pop().length;
+ }
+
+ if (out.length && typeof out[out.length - 1] === "string") {
+ var trimmed = out[out.length - 1].replace(/[ \t]*$/, "");
+ trimCount += out[out.length - 1].length - trimmed.length;
+ out[out.length - 1] = trimmed;
+ }
+
+ return trimCount;
+}
+
+function fits(next, restCommands, width, options, mustBeFlat) {
+ var restIdx = restCommands.length;
+ var cmds = [next]; // `out` is only used for width counting because `trim` requires to look
+ // backwards for space characters.
+
+ var out = [];
+
+ while (width >= 0) {
+ if (cmds.length === 0) {
+ if (restIdx === 0) {
+ return true;
+ }
+
+ cmds.push(restCommands[restIdx - 1]);
+ restIdx--;
+ continue;
+ }
+
+ var x = cmds.pop();
+ var ind = x[0];
+ var mode = x[1];
+ var doc = x[2];
+
+ if (typeof doc === "string") {
+ out.push(doc);
+ width -= getStringWidth$1(doc);
+ } else {
+ switch (doc.type) {
+ case "concat":
+ for (var i = doc.parts.length - 1; i >= 0; i--) {
+ cmds.push([ind, mode, doc.parts[i]]);
+ }
+
+ break;
+
+ case "indent":
+ cmds.push([makeIndent(ind, options), mode, doc.contents]);
+ break;
+
+ case "align":
+ cmds.push([makeAlign(ind, doc.n, options), mode, doc.contents]);
+ break;
+
+ case "trim":
+ width += trim$1(out);
+ break;
+
+ case "group":
+ if (mustBeFlat && doc.break) {
+ return false;
+ }
+
+ cmds.push([ind, doc.break ? MODE_BREAK : mode, doc.contents]);
+
+ if (doc.id) {
+ groupModeMap[doc.id] = cmds[cmds.length - 1][1];
+ }
+
+ break;
+
+ case "fill":
+ for (var _i = doc.parts.length - 1; _i >= 0; _i--) {
+ cmds.push([ind, mode, doc.parts[_i]]);
+ }
+
+ break;
+
+ case "if-break":
+ {
+ var groupMode = doc.groupId ? groupModeMap[doc.groupId] : mode;
+
+ if (groupMode === MODE_BREAK) {
+ if (doc.breakContents) {
+ cmds.push([ind, mode, doc.breakContents]);
+ }
+ }
+
+ if (groupMode === MODE_FLAT) {
+ if (doc.flatContents) {
+ cmds.push([ind, mode, doc.flatContents]);
+ }
+ }
+
+ break;
+ }
+
+ case "line":
+ switch (mode) {
+ // fallthrough
+ case MODE_FLAT:
+ if (!doc.hard) {
+ if (!doc.soft) {
+ out.push(" ");
+ width -= 1;
+ }
+
+ break;
+ }
+
+ return true;
+
+ case MODE_BREAK:
+ return true;
+ }
+
+ break;
+ }
+ }
+ }
+
+ return false;
+}
+
+function printDocToString(doc, options) {
+ groupModeMap = {};
+ var width = options.printWidth;
+ var newLine = convertEndOfLineToChars$1(options.endOfLine);
+ var pos = 0; // cmds is basically a stack. We've turned a recursive call into a
+ // while loop which is much faster. The while loop below adds new
+ // cmds to the array instead of recursively calling `print`.
+
+ var cmds = [[rootIndent(), MODE_BREAK, doc]];
+ var out = [];
+ var shouldRemeasure = false;
+ var lineSuffix = [];
+
+ while (cmds.length !== 0) {
+ var x = cmds.pop();
+ var ind = x[0];
+ var mode = x[1];
+ var _doc = x[2];
+
+ if (typeof _doc === "string") {
+ out.push(_doc);
+ pos += getStringWidth$1(_doc);
+ } else {
+ switch (_doc.type) {
+ case "cursor":
+ out.push(cursor$1.placeholder);
+ break;
+
+ case "concat":
+ for (var i = _doc.parts.length - 1; i >= 0; i--) {
+ cmds.push([ind, mode, _doc.parts[i]]);
+ }
+
+ break;
+
+ case "indent":
+ cmds.push([makeIndent(ind, options), mode, _doc.contents]);
+ break;
+
+ case "align":
+ cmds.push([makeAlign(ind, _doc.n, options), mode, _doc.contents]);
+ break;
+
+ case "trim":
+ pos -= trim$1(out);
+ break;
+
+ case "group":
+ switch (mode) {
+ case MODE_FLAT:
+ if (!shouldRemeasure) {
+ cmds.push([ind, _doc.break ? MODE_BREAK : MODE_FLAT, _doc.contents]);
+ break;
+ }
+
+ // fallthrough
+
+ case MODE_BREAK:
+ {
+ shouldRemeasure = false;
+ var next = [ind, MODE_FLAT, _doc.contents];
+ var rem = width - pos;
+
+ if (!_doc.break && fits(next, cmds, rem, options)) {
+ cmds.push(next);
+ } else {
+ // Expanded states are a rare case where a document
+ // can manually provide multiple representations of
+ // itself. It provides an array of documents
+ // going from the least expanded (most flattened)
+ // representation first to the most expanded. If a
+ // group has these, we need to manually go through
+ // these states and find the first one that fits.
+ if (_doc.expandedStates) {
+ var mostExpanded = _doc.expandedStates[_doc.expandedStates.length - 1];
+
+ if (_doc.break) {
+ cmds.push([ind, MODE_BREAK, mostExpanded]);
+ break;
+ } else {
+ for (var _i2 = 1; _i2 < _doc.expandedStates.length + 1; _i2++) {
+ if (_i2 >= _doc.expandedStates.length) {
+ cmds.push([ind, MODE_BREAK, mostExpanded]);
+ break;
+ } else {
+ var state = _doc.expandedStates[_i2];
+ var cmd = [ind, MODE_FLAT, state];
+
+ if (fits(cmd, cmds, rem, options)) {
+ cmds.push(cmd);
+ break;
+ }
+ }
+ }
+ }
+ } else {
+ cmds.push([ind, MODE_BREAK, _doc.contents]);
+ }
+ }
+
+ break;
+ }
+ }
+
+ if (_doc.id) {
+ groupModeMap[_doc.id] = cmds[cmds.length - 1][1];
+ }
+
+ break;
+ // Fills each line with as much code as possible before moving to a new
+ // line with the same indentation.
+ //
+ // Expects doc.parts to be an array of alternating content and
+ // whitespace. The whitespace contains the linebreaks.
+ //
+ // For example:
+ // ["I", line, "love", line, "monkeys"]
+ // or
+ // [{ type: group, ... }, softline, { type: group, ... }]
+ //
+ // It uses this parts structure to handle three main layout cases:
+ // * The first two content items fit on the same line without
+ // breaking
+ // -> output the first content item and the whitespace "flat".
+ // * Only the first content item fits on the line without breaking
+ // -> output the first content item "flat" and the whitespace with
+ // "break".
+ // * Neither content item fits on the line without breaking
+ // -> output the first content item and the whitespace with "break".
+
+ case "fill":
+ {
+ var _rem = width - pos;
+
+ var parts = _doc.parts;
+
+ if (parts.length === 0) {
+ break;
+ }
+
+ var content = parts[0];
+ var contentFlatCmd = [ind, MODE_FLAT, content];
+ var contentBreakCmd = [ind, MODE_BREAK, content];
+ var contentFits = fits(contentFlatCmd, [], _rem, options, true);
+
+ if (parts.length === 1) {
+ if (contentFits) {
+ cmds.push(contentFlatCmd);
+ } else {
+ cmds.push(contentBreakCmd);
+ }
+
+ break;
+ }
+
+ var whitespace = parts[1];
+ var whitespaceFlatCmd = [ind, MODE_FLAT, whitespace];
+ var whitespaceBreakCmd = [ind, MODE_BREAK, whitespace];
+
+ if (parts.length === 2) {
+ if (contentFits) {
+ cmds.push(whitespaceFlatCmd);
+ cmds.push(contentFlatCmd);
+ } else {
+ cmds.push(whitespaceBreakCmd);
+ cmds.push(contentBreakCmd);
+ }
+
+ break;
+ } // At this point we've handled the first pair (context, separator)
+ // and will create a new fill doc for the rest of the content.
+ // Ideally we wouldn't mutate the array here but coping all the
+ // elements to a new array would make this algorithm quadratic,
+ // which is unusable for large arrays (e.g. large texts in JSX).
+
+
+ parts.splice(0, 2);
+ var remainingCmd = [ind, mode, fill$1(parts)];
+ var secondContent = parts[0];
+ var firstAndSecondContentFlatCmd = [ind, MODE_FLAT, concat$1([content, whitespace, secondContent])];
+ var firstAndSecondContentFits = fits(firstAndSecondContentFlatCmd, [], _rem, options, true);
+
+ if (firstAndSecondContentFits) {
+ cmds.push(remainingCmd);
+ cmds.push(whitespaceFlatCmd);
+ cmds.push(contentFlatCmd);
+ } else if (contentFits) {
+ cmds.push(remainingCmd);
+ cmds.push(whitespaceBreakCmd);
+ cmds.push(contentFlatCmd);
+ } else {
+ cmds.push(remainingCmd);
+ cmds.push(whitespaceBreakCmd);
+ cmds.push(contentBreakCmd);
+ }
+
+ break;
+ }
+
+ case "if-break":
+ {
+ var groupMode = _doc.groupId ? groupModeMap[_doc.groupId] : mode;
+
+ if (groupMode === MODE_BREAK) {
+ if (_doc.breakContents) {
+ cmds.push([ind, mode, _doc.breakContents]);
+ }
+ }
+
+ if (groupMode === MODE_FLAT) {
+ if (_doc.flatContents) {
+ cmds.push([ind, mode, _doc.flatContents]);
+ }
+ }
+
+ break;
+ }
+
+ case "line-suffix":
+ lineSuffix.push([ind, mode, _doc.contents]);
+ break;
+
+ case "line-suffix-boundary":
+ if (lineSuffix.length > 0) {
+ cmds.push([ind, mode, {
+ type: "line",
+ hard: true
+ }]);
+ }
+
+ break;
+
+ case "line":
+ switch (mode) {
+ case MODE_FLAT:
+ if (!_doc.hard) {
+ if (!_doc.soft) {
+ out.push(" ");
+ pos += 1;
+ }
+
+ break;
+ } else {
+ // This line was forced into the output even if we
+ // were in flattened mode, so we need to tell the next
+ // group that no matter what, it needs to remeasure
+ // because the previous measurement didn't accurately
+ // capture the entire expression (this is necessary
+ // for nested groups)
+ shouldRemeasure = true;
+ }
+
+ // fallthrough
+
+ case MODE_BREAK:
+ if (lineSuffix.length) {
+ cmds.push([ind, mode, _doc]);
+ [].push.apply(cmds, lineSuffix.reverse());
+ lineSuffix = [];
+ break;
+ }
+
+ if (_doc.literal) {
+ if (ind.root) {
+ out.push(newLine, ind.root.value);
+ pos = ind.root.length;
+ } else {
+ out.push(newLine);
+ pos = 0;
+ }
+ } else {
+ pos -= trim$1(out);
+ out.push(newLine + ind.value);
+ pos = ind.length;
+ }
+
+ break;
+ }
+
+ break;
+ }
+ }
+ }
+
+ var cursorPlaceholderIndex = out.indexOf(cursor$1.placeholder);
+
+ if (cursorPlaceholderIndex !== -1) {
+ var otherCursorPlaceholderIndex = out.indexOf(cursor$1.placeholder, cursorPlaceholderIndex + 1);
+ var beforeCursor = out.slice(0, cursorPlaceholderIndex).join("");
+ var aroundCursor = out.slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex).join("");
+ var afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join("");
+ return {
+ formatted: beforeCursor + aroundCursor + afterCursor,
+ cursorNodeStart: beforeCursor.length,
+ cursorNodeText: aroundCursor
+ };
+ }
+
+ return {
+ formatted: out.join("")
+ };
+}
+
+var docPrinter = {
+ printDocToString
+};
+
+var traverseDocOnExitStackMarker = {};
+
+function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) {
+ var docsStack = [doc];
+
+ while (docsStack.length !== 0) {
+ var _doc = docsStack.pop();
+
+ if (_doc === traverseDocOnExitStackMarker) {
+ onExit(docsStack.pop());
+ continue;
+ }
+
+ var shouldRecurse = true;
+
+ if (onEnter) {
+ if (onEnter(_doc) === false) {
+ shouldRecurse = false;
+ }
+ }
+
+ if (onExit) {
+ docsStack.push(_doc);
+ docsStack.push(traverseDocOnExitStackMarker);
+ }
+
+ if (shouldRecurse) {
+ // When there are multiple parts to process,
+ // the parts need to be pushed onto the stack in reverse order,
+ // so that they are processed in the original order
+ // when the stack is popped.
+ if (_doc.type === "concat" || _doc.type === "fill") {
+ for (var ic = _doc.parts.length, i = ic - 1; i >= 0; --i) {
+ docsStack.push(_doc.parts[i]);
+ }
+ } else if (_doc.type === "if-break") {
+ if (_doc.flatContents) {
+ docsStack.push(_doc.flatContents);
+ }
+
+ if (_doc.breakContents) {
+ docsStack.push(_doc.breakContents);
+ }
+ } else if (_doc.type === "group" && _doc.expandedStates) {
+ if (shouldTraverseConditionalGroups) {
+ for (var _ic = _doc.expandedStates.length, _i = _ic - 1; _i >= 0; --_i) {
+ docsStack.push(_doc.expandedStates[_i]);
+ }
+ } else {
+ docsStack.push(_doc.contents);
+ }
+ } else if (_doc.contents) {
+ docsStack.push(_doc.contents);
+ }
+ }
+ }
+}
+
+function mapDoc(doc, cb) {
+ if (doc.type === "concat" || doc.type === "fill") {
+ var parts = doc.parts.map(function (part) {
+ return mapDoc(part, cb);
+ });
+ return cb(Object.assign({}, doc, {
+ parts
+ }));
+ } else if (doc.type === "if-break") {
+ var breakContents = doc.breakContents && mapDoc(doc.breakContents, cb);
+ var flatContents = doc.flatContents && mapDoc(doc.flatContents, cb);
+ return cb(Object.assign({}, doc, {
+ breakContents,
+ flatContents
+ }));
+ } else if (doc.contents) {
+ var contents = mapDoc(doc.contents, cb);
+ return cb(Object.assign({}, doc, {
+ contents
+ }));
+ }
+
+ return cb(doc);
+}
+
+function findInDoc(doc, fn, defaultValue) {
+ var result = defaultValue;
+ var hasStopped = false;
+
+ function findInDocOnEnterFn(doc) {
+ var maybeResult = fn(doc);
+
+ if (maybeResult !== undefined) {
+ hasStopped = true;
+ result = maybeResult;
+ }
+
+ if (hasStopped) {
+ return false;
+ }
+ }
+
+ traverseDoc(doc, findInDocOnEnterFn);
+ return result;
+}
+
+function isEmpty(n) {
+ return typeof n === "string" && n.length === 0;
+}
+
+function isLineNextFn(doc) {
+ if (typeof doc === "string") {
+ return false;
+ }
+
+ if (doc.type === "line") {
+ return true;
+ }
+}
+
+function isLineNext(doc) {
+ return findInDoc(doc, isLineNextFn, false);
+}
+
+function willBreakFn(doc) {
+ if (doc.type === "group" && doc.break) {
+ return true;
+ }
+
+ if (doc.type === "line" && doc.hard) {
+ return true;
+ }
+
+ if (doc.type === "break-parent") {
+ return true;
+ }
+}
+
+function willBreak(doc) {
+ return findInDoc(doc, willBreakFn, false);
+}
+
+function breakParentGroup(groupStack) {
+ if (groupStack.length > 0) {
+ var parentGroup = groupStack[groupStack.length - 1]; // Breaks are not propagated through conditional groups because
+ // the user is expected to manually handle what breaks.
+
+ if (!parentGroup.expandedStates) {
+ parentGroup.break = true;
+ }
+ }
+
+ return null;
+}
+
+function propagateBreaks(doc) {
+ var alreadyVisitedSet = new Set();
+ var groupStack = [];
+
+ function propagateBreaksOnEnterFn(doc) {
+ if (doc.type === "break-parent") {
+ breakParentGroup(groupStack);
+ }
+
+ if (doc.type === "group") {
+ groupStack.push(doc);
+
+ if (alreadyVisitedSet.has(doc)) {
+ return false;
+ }
+
+ alreadyVisitedSet.add(doc);
+ }
+ }
+
+ function propagateBreaksOnExitFn(doc) {
+ if (doc.type === "group") {
+ var group = groupStack.pop();
+
+ if (group.break) {
+ breakParentGroup(groupStack);
+ }
+ }
+ }
+
+ traverseDoc(doc, propagateBreaksOnEnterFn, propagateBreaksOnExitFn,
+ /* shouldTraverseConditionalGroups */
+ true);
+}
+
+function removeLinesFn(doc) {
+ // Force this doc into flat mode by statically converting all
+ // lines into spaces (or soft lines into nothing). Hard lines
+ // should still output because there's too great of a chance
+ // of breaking existing assumptions otherwise.
+ if (doc.type === "line" && !doc.hard) {
+ return doc.soft ? "" : " ";
+ } else if (doc.type === "if-break") {
+ return doc.flatContents || "";
+ }
+
+ return doc;
+}
+
+function removeLines(doc) {
+ return mapDoc(doc, removeLinesFn);
+}
+
+function stripTrailingHardline(doc) {
+ // HACK remove ending hardline, original PR: #1984
+ if (doc.type === "concat" && doc.parts.length !== 0) {
+ var lastPart = doc.parts[doc.parts.length - 1];
+
+ if (lastPart.type === "concat") {
+ if (lastPart.parts.length === 2 && lastPart.parts[0].hard && lastPart.parts[1].type === "break-parent") {
+ return {
+ type: "concat",
+ parts: doc.parts.slice(0, -1)
+ };
+ }
+
+ return {
+ type: "concat",
+ parts: doc.parts.slice(0, -1).concat(stripTrailingHardline(lastPart))
+ };
+ }
+ }
+
+ return doc;
+}
+
+var docUtils = {
+ isEmpty,
+ willBreak,
+ isLineNext,
+ traverseDoc,
+ findInDoc,
+ mapDoc,
+ propagateBreaks,
+ removeLines,
+ stripTrailingHardline
+};
+
+function flattenDoc(doc) {
+ if (doc.type === "concat") {
+ var res = [];
+
+ for (var i = 0; i < doc.parts.length; ++i) {
+ var doc2 = doc.parts[i];
+
+ if (typeof doc2 !== "string" && doc2.type === "concat") {
+ [].push.apply(res, flattenDoc(doc2).parts);
+ } else {
+ var flattened = flattenDoc(doc2);
+
+ if (flattened !== "") {
+ res.push(flattened);
+ }
+ }
+ }
+
+ return Object.assign({}, doc, {
+ parts: res
+ });
+ } else if (doc.type === "if-break") {
+ return Object.assign({}, doc, {
+ breakContents: doc.breakContents != null ? flattenDoc(doc.breakContents) : null,
+ flatContents: doc.flatContents != null ? flattenDoc(doc.flatContents) : null
+ });
+ } else if (doc.type === "group") {
+ return Object.assign({}, doc, {
+ contents: flattenDoc(doc.contents),
+ expandedStates: doc.expandedStates ? doc.expandedStates.map(flattenDoc) : doc.expandedStates
+ });
+ } else if (doc.contents) {
+ return Object.assign({}, doc, {
+ contents: flattenDoc(doc.contents)
+ });
+ }
+
+ return doc;
+}
+
+function printDoc(doc) {
+ if (typeof doc === "string") {
+ return JSON.stringify(doc);
+ }
+
+ if (doc.type === "line") {
+ if (doc.literal) {
+ return "literalline";
+ }
+
+ if (doc.hard) {
+ return "hardline";
+ }
+
+ if (doc.soft) {
+ return "softline";
+ }
+
+ return "line";
+ }
+
+ if (doc.type === "break-parent") {
+ return "breakParent";
+ }
+
+ if (doc.type === "trim") {
+ return "trim";
+ }
+
+ if (doc.type === "concat") {
+ return "[" + doc.parts.map(printDoc).join(", ") + "]";
+ }
+
+ if (doc.type === "indent") {
+ return "indent(" + printDoc(doc.contents) + ")";
+ }
+
+ if (doc.type === "align") {
+ return doc.n === -Infinity ? "dedentToRoot(" + printDoc(doc.contents) + ")" : doc.n < 0 ? "dedent(" + printDoc(doc.contents) + ")" : doc.n.type === "root" ? "markAsRoot(" + printDoc(doc.contents) + ")" : "align(" + JSON.stringify(doc.n) + ", " + printDoc(doc.contents) + ")";
+ }
+
+ if (doc.type === "if-break") {
+ return "ifBreak(" + printDoc(doc.breakContents) + (doc.flatContents ? ", " + printDoc(doc.flatContents) : "") + ")";
+ }
+
+ if (doc.type === "group") {
+ if (doc.expandedStates) {
+ return "conditionalGroup(" + "[" + doc.expandedStates.map(printDoc).join(",") + "])";
+ }
+
+ return (doc.break ? "wrappedGroup" : "group") + "(" + printDoc(doc.contents) + ")";
+ }
+
+ if (doc.type === "fill") {
+ return "fill" + "(" + doc.parts.map(printDoc).join(", ") + ")";
+ }
+
+ if (doc.type === "line-suffix") {
+ return "lineSuffix(" + printDoc(doc.contents) + ")";
+ }
+
+ if (doc.type === "line-suffix-boundary") {
+ return "lineSuffixBoundary";
+ }
+
+ throw new Error("Unknown doc type " + doc.type);
+}
+
+var docDebug = {
+ printDocToDebug: function printDocToDebug(doc) {
+ return printDoc(flattenDoc(doc));
+ }
+};
+
+var doc = {
+ builders: docBuilders,
+ printer: docPrinter,
+ utils: docUtils,
+ debug: docDebug
+};
+
+var mapDoc$1 = doc.utils.mapDoc;
+
+function isNextLineEmpty$1(text, node, options) {
+ return util.isNextLineEmpty(text, node, options.locEnd);
+}
+
+function isPreviousLineEmpty$1(text, node, options) {
+ return util.isPreviousLineEmpty(text, node, options.locStart);
+}
+
+function getNextNonSpaceNonCommentCharacterIndex$1(text, node, options) {
+ return util.getNextNonSpaceNonCommentCharacterIndex(text, node, options.locEnd);
+}
+
+var utilShared = {
+ getMaxContinuousCount: util.getMaxContinuousCount,
+ getStringWidth: util.getStringWidth,
+ getAlignmentSize: util.getAlignmentSize,
+ getIndentSize: util.getIndentSize,
+ skip: util.skip,
+ skipWhitespace: util.skipWhitespace,
+ skipSpaces: util.skipSpaces,
+ skipNewline: util.skipNewline,
+ skipToLineEnd: util.skipToLineEnd,
+ skipEverythingButNewLine: util.skipEverythingButNewLine,
+ skipInlineComment: util.skipInlineComment,
+ skipTrailingComment: util.skipTrailingComment,
+ hasNewline: util.hasNewline,
+ hasNewlineInRange: util.hasNewlineInRange,
+ hasSpaces: util.hasSpaces,
+ isNextLineEmpty: isNextLineEmpty$1,
+ isNextLineEmptyAfterIndex: util.isNextLineEmptyAfterIndex,
+ isPreviousLineEmpty: isPreviousLineEmpty$1,
+ getNextNonSpaceNonCommentCharacterIndex: getNextNonSpaceNonCommentCharacterIndex$1,
+ mapDoc: mapDoc$1,
+ // TODO: remove in 2.0, we already exposed it in docUtils
+ makeString: util.makeString,
+ addLeadingComment: util.addLeadingComment,
+ addDanglingComment: util.addDanglingComment,
+ addTrailingComment: util.addTrailingComment
+};
+
+var _require$$0$builders = doc.builders,
+ concat$2 = _require$$0$builders.concat,
+ hardline$1 = _require$$0$builders.hardline,
+ breakParent$1 = _require$$0$builders.breakParent,
+ indent$1 = _require$$0$builders.indent,
+ lineSuffix$1 = _require$$0$builders.lineSuffix,
+ join$1 = _require$$0$builders.join,
+ cursor$2 = _require$$0$builders.cursor;
+var hasNewline$1 = util.hasNewline,
+ skipNewline$1 = util.skipNewline,
+ isPreviousLineEmpty$2 = util.isPreviousLineEmpty;
+var addLeadingComment$1 = utilShared.addLeadingComment,
+ addDanglingComment$1 = utilShared.addDanglingComment,
+ addTrailingComment$1 = utilShared.addTrailingComment;
+var childNodesCacheKey = Symbol("child-nodes");
+
+function getSortedChildNodes(node, options, resultArray) {
+ if (!node) {
+ return;
+ }
+
+ var printer = options.printer,
+ locStart = options.locStart,
+ locEnd = options.locEnd;
+
+ if (resultArray) {
+ if (node && printer.canAttachComment && printer.canAttachComment(node)) {
+ // This reverse insertion sort almost always takes constant
+ // time because we almost always (maybe always?) append the
+ // nodes in order anyway.
+ var i;
+
+ for (i = resultArray.length - 1; i >= 0; --i) {
+ if (locStart(resultArray[i]) <= locStart(node) && locEnd(resultArray[i]) <= locEnd(node)) {
+ break;
+ }
+ }
+
+ resultArray.splice(i + 1, 0, node);
+ return;
+ }
+ } else if (node[childNodesCacheKey]) {
+ return node[childNodesCacheKey];
+ }
+
+ var childNodes;
+
+ if (printer.getCommentChildNodes) {
+ childNodes = printer.getCommentChildNodes(node);
+ } else if (node && typeof node === "object") {
+ childNodes = Object.keys(node).filter(function (n) {
+ return n !== "enclosingNode" && n !== "precedingNode" && n !== "followingNode";
+ }).map(function (n) {
+ return node[n];
+ });
+ }
+
+ if (!childNodes) {
+ return;
+ }
+
+ if (!resultArray) {
+ Object.defineProperty(node, childNodesCacheKey, {
+ value: resultArray = [],
+ enumerable: false
+ });
+ }
+
+ childNodes.forEach(function (childNode) {
+ getSortedChildNodes(childNode, options, resultArray);
+ });
+ return resultArray;
+} // As efficiently as possible, decorate the comment object with
+// .precedingNode, .enclosingNode, and/or .followingNode properties, at
+// least one of which is guaranteed to be defined.
+
+
+function decorateComment(node, comment, options) {
+ var locStart = options.locStart,
+ locEnd = options.locEnd;
+ var childNodes = getSortedChildNodes(node, options);
+ var precedingNode;
+ var followingNode; // Time to dust off the old binary search robes and wizard hat.
+
+ var left = 0;
+ var right = childNodes.length;
+
+ while (left < right) {
+ var middle = left + right >> 1;
+ var child = childNodes[middle];
+
+ if (locStart(child) - locStart(comment) <= 0 && locEnd(comment) - locEnd(child) <= 0) {
+ // The comment is completely contained by this child node.
+ comment.enclosingNode = child;
+ decorateComment(child, comment, options);
+ return; // Abandon the binary search at this level.
+ }
+
+ if (locEnd(child) - locStart(comment) <= 0) {
+ // This child node falls completely before the comment.
+ // Because we will never consider this node or any nodes
+ // before it again, this node must be the closest preceding
+ // node we have encountered so far.
+ precedingNode = child;
+ left = middle + 1;
+ continue;
+ }
+
+ if (locEnd(comment) - locStart(child) <= 0) {
+ // This child node falls completely after the comment.
+ // Because we will never consider this node or any nodes after
+ // it again, this node must be the closest following node we
+ // have encountered so far.
+ followingNode = child;
+ right = middle;
+ continue;
+ }
+ /* istanbul ignore next */
+
+
+ throw new Error("Comment location overlaps with node location");
+ } // We don't want comments inside of different expressions inside of the same
+ // template literal to move to another expression.
+
+
+ if (comment.enclosingNode && comment.enclosingNode.type === "TemplateLiteral") {
+ var quasis = comment.enclosingNode.quasis;
+ var commentIndex = findExpressionIndexForComment(quasis, comment, options);
+
+ if (precedingNode && findExpressionIndexForComment(quasis, precedingNode, options) !== commentIndex) {
+ precedingNode = null;
+ }
+
+ if (followingNode && findExpressionIndexForComment(quasis, followingNode, options) !== commentIndex) {
+ followingNode = null;
+ }
+ }
+
+ if (precedingNode) {
+ comment.precedingNode = precedingNode;
+ }
+
+ if (followingNode) {
+ comment.followingNode = followingNode;
+ }
+}
+
+function attach(comments, ast, text, options) {
+ if (!Array.isArray(comments)) {
+ return;
+ }
+
+ var tiesToBreak = [];
+ var locStart = options.locStart,
+ locEnd = options.locEnd;
+ comments.forEach(function (comment, i) {
+ if (options.parser === "json" || options.parser === "json5" || options.parser === "__js_expression" || options.parser === "__vue_expression") {
+ if (locStart(comment) - locStart(ast) <= 0) {
+ addLeadingComment$1(ast, comment);
+ return;
+ }
+
+ if (locEnd(comment) - locEnd(ast) >= 0) {
+ addTrailingComment$1(ast, comment);
+ return;
+ }
+ }
+
+ decorateComment(ast, comment, options);
+ var precedingNode = comment.precedingNode,
+ enclosingNode = comment.enclosingNode,
+ followingNode = comment.followingNode;
+ var pluginHandleOwnLineComment = options.printer.handleComments && options.printer.handleComments.ownLine ? options.printer.handleComments.ownLine : function () {
+ return false;
+ };
+ var pluginHandleEndOfLineComment = options.printer.handleComments && options.printer.handleComments.endOfLine ? options.printer.handleComments.endOfLine : function () {
+ return false;
+ };
+ var pluginHandleRemainingComment = options.printer.handleComments && options.printer.handleComments.remaining ? options.printer.handleComments.remaining : function () {
+ return false;
+ };
+ var isLastComment = comments.length - 1 === i;
+
+ if (hasNewline$1(text, locStart(comment), {
+ backwards: true
+ })) {
+ // If a comment exists on its own line, prefer a leading comment.
+ // We also need to check if it's the first line of the file.
+ if (pluginHandleOwnLineComment(comment, text, options, ast, isLastComment)) ; else if (followingNode) {
+ // Always a leading comment.
+ addLeadingComment$1(followingNode, comment);
+ } else if (precedingNode) {
+ addTrailingComment$1(precedingNode, comment);
+ } else if (enclosingNode) {
+ addDanglingComment$1(enclosingNode, comment);
+ } else {
+ // There are no nodes, let's attach it to the root of the ast
+
+ /* istanbul ignore next */
+ addDanglingComment$1(ast, comment);
+ }
+ } else if (hasNewline$1(text, locEnd(comment))) {
+ if (pluginHandleEndOfLineComment(comment, text, options, ast, isLastComment)) ; else if (precedingNode) {
+ // There is content before this comment on the same line, but
+ // none after it, so prefer a trailing comment of the previous node.
+ addTrailingComment$1(precedingNode, comment);
+ } else if (followingNode) {
+ addLeadingComment$1(followingNode, comment);
+ } else if (enclosingNode) {
+ addDanglingComment$1(enclosingNode, comment);
+ } else {
+ // There are no nodes, let's attach it to the root of the ast
+
+ /* istanbul ignore next */
+ addDanglingComment$1(ast, comment);
+ }
+ } else {
+ if (pluginHandleRemainingComment(comment, text, options, ast, isLastComment)) ; else if (precedingNode && followingNode) {
+ // Otherwise, text exists both before and after the comment on
+ // the same line. If there is both a preceding and following
+ // node, use a tie-breaking algorithm to determine if it should
+ // be attached to the next or previous node. In the last case,
+ // simply attach the right node;
+ var tieCount = tiesToBreak.length;
+
+ if (tieCount > 0) {
+ var lastTie = tiesToBreak[tieCount - 1];
+
+ if (lastTie.followingNode !== comment.followingNode) {
+ breakTies(tiesToBreak, text, options);
+ }
+ }
+
+ tiesToBreak.push(comment);
+ } else if (precedingNode) {
+ addTrailingComment$1(precedingNode, comment);
+ } else if (followingNode) {
+ addLeadingComment$1(followingNode, comment);
+ } else if (enclosingNode) {
+ addDanglingComment$1(enclosingNode, comment);
+ } else {
+ // There are no nodes, let's attach it to the root of the ast
+
+ /* istanbul ignore next */
+ addDanglingComment$1(ast, comment);
+ }
+ }
+ });
+ breakTies(tiesToBreak, text, options);
+ comments.forEach(function (comment) {
+ // These node references were useful for breaking ties, but we
+ // don't need them anymore, and they create cycles in the AST that
+ // may lead to infinite recursion if we don't delete them here.
+ delete comment.precedingNode;
+ delete comment.enclosingNode;
+ delete comment.followingNode;
+ });
+}
+
+function breakTies(tiesToBreak, text, options) {
+ var tieCount = tiesToBreak.length;
+
+ if (tieCount === 0) {
+ return;
+ }
+
+ var _tiesToBreak$ = tiesToBreak[0],
+ precedingNode = _tiesToBreak$.precedingNode,
+ followingNode = _tiesToBreak$.followingNode;
+ var gapEndPos = options.locStart(followingNode); // Iterate backwards through tiesToBreak, examining the gaps
+ // between the tied comments. In order to qualify as leading, a
+ // comment must be separated from followingNode by an unbroken series of
+ // gaps (or other comments). Gaps should only contain whitespace or open
+ // parentheses.
+
+ var indexOfFirstLeadingComment;
+
+ for (indexOfFirstLeadingComment = tieCount; indexOfFirstLeadingComment > 0; --indexOfFirstLeadingComment) {
+ var comment = tiesToBreak[indexOfFirstLeadingComment - 1];
+ assert$1.strictEqual(comment.precedingNode, precedingNode);
+ assert$1.strictEqual(comment.followingNode, followingNode);
+ var gap = text.slice(options.locEnd(comment), gapEndPos);
+
+ if (/^[\s(]*$/.test(gap)) {
+ gapEndPos = options.locStart(comment);
+ } else {
+ // The gap string contained something other than whitespace or open
+ // parentheses.
+ break;
+ }
+ }
+
+ tiesToBreak.forEach(function (comment, i) {
+ if (i < indexOfFirstLeadingComment) {
+ addTrailingComment$1(precedingNode, comment);
+ } else {
+ addLeadingComment$1(followingNode, comment);
+ }
+ });
+ tiesToBreak.length = 0;
+}
+
+function printComment(commentPath, options) {
+ var comment = commentPath.getValue();
+ comment.printed = true;
+ return options.printer.printComment(commentPath, options);
+}
+
+function findExpressionIndexForComment(quasis, comment, options) {
+ var startPos = options.locStart(comment) - 1;
+
+ for (var i = 1; i < quasis.length; ++i) {
+ if (startPos < getQuasiRange(quasis[i]).start) {
+ return i - 1;
+ }
+ } // We haven't found it, it probably means that some of the locations are off.
+ // Let's just return the first one.
+
+ /* istanbul ignore next */
+
+
+ return 0;
+}
+
+function getQuasiRange(expr) {
+ if (expr.start !== undefined) {
+ // Babel
+ return {
+ start: expr.start,
+ end: expr.end
+ };
+ } // Flow
+
+
+ return {
+ start: expr.range[0],
+ end: expr.range[1]
+ };
+}
+
+function printLeadingComment(commentPath, print, options) {
+ var comment = commentPath.getValue();
+ var contents = printComment(commentPath, options);
+
+ if (!contents) {
+ return "";
+ }
+
+ var isBlock = options.printer.isBlockComment && options.printer.isBlockComment(comment); // Leading block comments should see if they need to stay on the
+ // same line or not.
+
+ if (isBlock) {
+ return concat$2([contents, hasNewline$1(options.originalText, options.locEnd(comment)) ? hardline$1 : " "]);
+ }
+
+ return concat$2([contents, hardline$1]);
+}
+
+function printTrailingComment(commentPath, print, options) {
+ var comment = commentPath.getValue();
+ var contents = printComment(commentPath, options);
+
+ if (!contents) {
+ return "";
+ }
+
+ var isBlock = options.printer.isBlockComment && options.printer.isBlockComment(comment); // We don't want the line to break
+ // when the parentParentNode is a ClassDeclaration/-Expression
+ // And the parentNode is in the superClass property
+
+ var parentNode = commentPath.getNode(1);
+ var parentParentNode = commentPath.getNode(2);
+ var isParentSuperClass = parentParentNode && (parentParentNode.type === "ClassDeclaration" || parentParentNode.type === "ClassExpression") && parentParentNode.superClass === parentNode;
+
+ if (hasNewline$1(options.originalText, options.locStart(comment), {
+ backwards: true
+ })) {
+ // This allows comments at the end of nested structures:
+ // {
+ // x: 1,
+ // y: 2
+ // // A comment
+ // }
+ // Those kinds of comments are almost always leading comments, but
+ // here it doesn't go "outside" the block and turns it into a
+ // trailing comment for `2`. We can simulate the above by checking
+ // if this a comment on its own line; normal trailing comments are
+ // always at the end of another expression.
+ var isLineBeforeEmpty = isPreviousLineEmpty$2(options.originalText, comment, options.locStart);
+ return lineSuffix$1(concat$2([hardline$1, isLineBeforeEmpty ? hardline$1 : "", contents]));
+ } else if (isBlock || isParentSuperClass) {
+ // Trailing block comments never need a newline
+ return concat$2([" ", contents]);
+ }
+
+ return concat$2([lineSuffix$1(concat$2([" ", contents])), !isBlock ? breakParent$1 : ""]);
+}
+
+function printDanglingComments(path, options, sameIndent, filter) {
+ var parts = [];
+ var node = path.getValue();
+
+ if (!node || !node.comments) {
+ return "";
+ }
+
+ path.each(function (commentPath) {
+ var comment = commentPath.getValue();
+
+ if (comment && !comment.leading && !comment.trailing && (!filter || filter(comment))) {
+ parts.push(printComment(commentPath, options));
+ }
+ }, "comments");
+
+ if (parts.length === 0) {
+ return "";
+ }
+
+ if (sameIndent) {
+ return join$1(hardline$1, parts);
+ }
+
+ return indent$1(concat$2([hardline$1, join$1(hardline$1, parts)]));
+}
+
+function prependCursorPlaceholder(path, options, printed) {
+ if (path.getNode() === options.cursorNode && path.getValue()) {
+ return concat$2([cursor$2, printed, cursor$2]);
+ }
+
+ return printed;
+}
+
+function printComments(path, print, options, needsSemi) {
+ var value = path.getValue();
+ var printed = print(path);
+ var comments = value && value.comments;
+
+ if (!comments || comments.length === 0) {
+ return prependCursorPlaceholder(path, options, printed);
+ }
+
+ var leadingParts = [];
+ var trailingParts = [needsSemi ? ";" : "", printed];
+ path.each(function (commentPath) {
+ var comment = commentPath.getValue();
+ var leading = comment.leading,
+ trailing = comment.trailing;
+
+ if (leading) {
+ var contents = printLeadingComment(commentPath, print, options);
+
+ if (!contents) {
+ return;
+ }
+
+ leadingParts.push(contents);
+ var text = options.originalText;
+ var index = skipNewline$1(text, options.locEnd(comment));
+
+ if (index !== false && hasNewline$1(text, index)) {
+ leadingParts.push(hardline$1);
+ }
+ } else if (trailing) {
+ trailingParts.push(printTrailingComment(commentPath, print, options));
+ }
+ }, "comments");
+ return prependCursorPlaceholder(path, options, concat$2(leadingParts.concat(trailingParts)));
+}
+
+var comments = {
+ attach,
+ printComments,
+ printDanglingComments,
+ getSortedChildNodes
+};
+
+function FastPath(value) {
+ assert$1.ok(this instanceof FastPath);
+ this.stack = [value];
+} // The name of the current property is always the penultimate element of
+// this.stack, and always a String.
+
+
+FastPath.prototype.getName = function getName() {
+ var s = this.stack;
+ var len = s.length;
+
+ if (len > 1) {
+ return s[len - 2];
+ } // Since the name is always a string, null is a safe sentinel value to
+ // return if we do not know the name of the (root) value.
+
+ /* istanbul ignore next */
+
+
+ return null;
+}; // The value of the current property is always the final element of
+// this.stack.
+
+
+FastPath.prototype.getValue = function getValue() {
+ var s = this.stack;
+ return s[s.length - 1];
+};
+
+function getNodeHelper(path, count) {
+ var stackIndex = getNodeStackIndexHelper(path.stack, count);
+ return stackIndex === -1 ? null : path.stack[stackIndex];
+}
+
+function getNodeStackIndexHelper(stack, count) {
+ for (var i = stack.length - 1; i >= 0; i -= 2) {
+ var value = stack[i];
+
+ if (value && !Array.isArray(value) && --count < 0) {
+ return i;
+ }
+ }
+
+ return -1;
+}
+
+FastPath.prototype.getNode = function getNode(count) {
+ return getNodeHelper(this, ~~count);
+};
+
+FastPath.prototype.getParentNode = function getParentNode(count) {
+ return getNodeHelper(this, ~~count + 1);
+}; // Temporarily push properties named by string arguments given after the
+// callback function onto this.stack, then call the callback with a
+// reference to this (modified) FastPath object. Note that the stack will
+// be restored to its original state after the callback is finished, so it
+// is probably a mistake to retain a reference to the path.
+
+
+FastPath.prototype.call = function call(callback
+/*, name1, name2, ... */
+) {
+ var s = this.stack;
+ var origLen = s.length;
+ var value = s[origLen - 1];
+ var argc = arguments.length;
+
+ for (var i = 1; i < argc; ++i) {
+ var name = arguments[i];
+ value = value[name];
+ s.push(name, value);
+ }
+
+ var result = callback(this);
+ s.length = origLen;
+ return result;
+};
+
+FastPath.prototype.callParent = function callParent(callback, count) {
+ var stackIndex = getNodeStackIndexHelper(this.stack, ~~count + 1);
+ var parentValues = this.stack.splice(stackIndex + 1);
+ var result = callback(this);
+ Array.prototype.push.apply(this.stack, parentValues);
+ return result;
+}; // Similar to FastPath.prototype.call, except that the value obtained by
+// accessing this.getValue()[name1][name2]... should be array-like. The
+// callback will be called with a reference to this path object for each
+// element of the array.
+
+
+FastPath.prototype.each = function each(callback
+/*, name1, name2, ... */
+) {
+ var s = this.stack;
+ var origLen = s.length;
+ var value = s[origLen - 1];
+ var argc = arguments.length;
+
+ for (var i = 1; i < argc; ++i) {
+ var name = arguments[i];
+ value = value[name];
+ s.push(name, value);
+ }
+
+ for (var _i = 0; _i < value.length; ++_i) {
+ if (_i in value) {
+ s.push(_i, value[_i]); // If the callback needs to know the value of i, call
+ // path.getName(), assuming path is the parameter name.
+
+ callback(this);
+ s.length -= 2;
+ }
+ }
+
+ s.length = origLen;
+}; // Similar to FastPath.prototype.each, except that the results of the
+// callback function invocations are stored in an array and returned at
+// the end of the iteration.
+
+
+FastPath.prototype.map = function map(callback
+/*, name1, name2, ... */
+) {
+ var s = this.stack;
+ var origLen = s.length;
+ var value = s[origLen - 1];
+ var argc = arguments.length;
+
+ for (var i = 1; i < argc; ++i) {
+ var name = arguments[i];
+ value = value[name];
+ s.push(name, value);
+ }
+
+ var result = new Array(value.length);
+
+ for (var _i2 = 0; _i2 < value.length; ++_i2) {
+ if (_i2 in value) {
+ s.push(_i2, value[_i2]);
+ result[_i2] = callback(this, _i2);
+ s.length -= 2;
+ }
+ }
+
+ s.length = origLen;
+ return result;
+};
+
+var fastPath = FastPath;
+
+var normalize$2 = options$1.normalize;
+
+function printSubtree(path, print, options, printAstToDoc) {
+ if (options.printer.embed) {
+ return options.printer.embed(path, print, function (text, partialNextOptions) {
+ return textToDoc(text, partialNextOptions, options, printAstToDoc);
+ }, options);
+ }
+}
+
+function textToDoc(text, partialNextOptions, parentOptions, printAstToDoc) {
+ var nextOptions = normalize$2(Object.assign({}, parentOptions, partialNextOptions, {
+ parentParser: parentOptions.parser,
+ embeddedInHtml: !!(parentOptions.embeddedInHtml || parentOptions.parser === "html" || parentOptions.parser === "vue" || parentOptions.parser === "angular" || parentOptions.parser === "lwc"),
+ originalText: text
+ }), {
+ passThrough: true
+ });
+ var result = parser.parse(text, nextOptions);
+ var ast = result.ast;
+ text = result.text;
+ var astComments = ast.comments;
+ delete ast.comments;
+ comments.attach(astComments, ast, text, nextOptions);
+ return printAstToDoc(ast, nextOptions);
+}
+
+var multiparser = {
+ printSubtree
+};
+
+var doc$1 = doc;
+var docBuilders$1 = doc$1.builders;
+var concat$3 = docBuilders$1.concat;
+var hardline$2 = docBuilders$1.hardline;
+var addAlignmentToDoc$1 = docBuilders$1.addAlignmentToDoc;
+var docUtils$1 = doc$1.utils;
+/**
+ * Takes an abstract syntax tree (AST) and recursively converts it to a
+ * document (series of printing primitives).
+ *
+ * This is done by descending down the AST recursively. The recursion
+ * involves two functions that call each other:
+ *
+ * 1. printGenerically(), which is defined as an inner function here.
+ * It basically takes care of node caching.
+ * 2. callPluginPrintFunction(), which checks for some options, and
+ * ultimately calls the print() function provided by the plugin.
+ *
+ * The plugin function will call printGenerically() again for child nodes
+ * of the current node, which will do its housekeeping, then call the
+ * plugin function again, and so on.
+ *
+ * All the while, these functions pass a "path" variable around, which
+ * is a stack-like data structure (FastPath) that maintains the current
+ * state of the recursion. It is called "path", because it represents
+ * the path to the current node through the Abstract Syntax Tree.
+ */
+
+function printAstToDoc(ast, options) {
+ var alignmentSize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+ var printer = options.printer;
+
+ if (printer.preprocess) {
+ ast = printer.preprocess(ast, options);
+ }
+
+ var cache = new Map();
+
+ function printGenerically(path, args) {
+ var node = path.getValue();
+ var shouldCache = node && typeof node === "object" && args === undefined;
+
+ if (shouldCache && cache.has(node)) {
+ return cache.get(node);
+ } // We let JSXElement print its comments itself because it adds () around
+ // UnionTypeAnnotation has to align the child without the comments
+
+
+ var res;
+
+ if (printer.willPrintOwnComments && printer.willPrintOwnComments(path, options)) {
+ res = callPluginPrintFunction(path, options, printGenerically, args);
+ } else {
+ // printComments will call the plugin print function and check for
+ // comments to print
+ res = comments.printComments(path, function (p) {
+ return callPluginPrintFunction(p, options, printGenerically, args);
+ }, options, args && args.needsSemi);
+ }
+
+ if (shouldCache) {
+ cache.set(node, res);
+ }
+
+ return res;
+ }
+
+ var doc = printGenerically(new fastPath(ast));
+
+ if (alignmentSize > 0) {
+ // Add a hardline to make the indents take effect
+ // It should be removed in index.js format()
+ doc = addAlignmentToDoc$1(concat$3([hardline$2, doc]), alignmentSize, options.tabWidth);
+ }
+
+ docUtils$1.propagateBreaks(doc);
+ return doc;
+}
+
+function callPluginPrintFunction(path, options, printPath, args) {
+ assert$1.ok(path instanceof fastPath);
+ var node = path.getValue();
+ var printer = options.printer; // Escape hatch
+
+ if (printer.hasPrettierIgnore && printer.hasPrettierIgnore(path)) {
+ return options.originalText.slice(options.locStart(node), options.locEnd(node));
+ }
+
+ if (node) {
+ try {
+ // Potentially switch to a different parser
+ var sub = multiparser.printSubtree(path, printPath, options, printAstToDoc);
+
+ if (sub) {
+ return sub;
+ }
+ } catch (error) {
+ /* istanbul ignore if */
+ if (process.env.PRETTIER_DEBUG) {
+ throw error;
+ } // Continue with current parser
+
+ }
+ }
+
+ return printer.print(path, options, printPath, args);
+}
+
+var astToDoc = printAstToDoc;
+
+function findSiblingAncestors(startNodeAndParents, endNodeAndParents, opts) {
+ var resultStartNode = startNodeAndParents.node;
+ var resultEndNode = endNodeAndParents.node;
+
+ if (resultStartNode === resultEndNode) {
+ return {
+ startNode: resultStartNode,
+ endNode: resultEndNode
+ };
+ }
+
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = endNodeAndParents.parentNodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var endParent = _step.value;
+
+ if (endParent.type !== "Program" && endParent.type !== "File" && opts.locStart(endParent) >= opts.locStart(startNodeAndParents.node)) {
+ resultEndNode = endParent;
+ } else {
+ break;
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = startNodeAndParents.parentNodes[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var startParent = _step2.value;
+
+ if (startParent.type !== "Program" && startParent.type !== "File" && opts.locEnd(startParent) <= opts.locEnd(endNodeAndParents.node)) {
+ resultStartNode = startParent;
+ } else {
+ break;
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return {
+ startNode: resultStartNode,
+ endNode: resultEndNode
+ };
+}
+
+function findNodeAtOffset(node, offset, options, predicate, parentNodes) {
+ predicate = predicate || function () {
+ return true;
+ };
+
+ parentNodes = parentNodes || [];
+ var start = options.locStart(node, options.locStart);
+ var end = options.locEnd(node, options.locEnd);
+
+ if (start <= offset && offset <= end) {
+ var _iteratorNormalCompletion3 = true;
+ var _didIteratorError3 = false;
+ var _iteratorError3 = undefined;
+
+ try {
+ for (var _iterator3 = comments.getSortedChildNodes(node, options)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
+ var childNode = _step3.value;
+ var childResult = findNodeAtOffset(childNode, offset, options, predicate, [node].concat(parentNodes));
+
+ if (childResult) {
+ return childResult;
+ }
+ }
+ } catch (err) {
+ _didIteratorError3 = true;
+ _iteratorError3 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
+ _iterator3.return();
+ }
+ } finally {
+ if (_didIteratorError3) {
+ throw _iteratorError3;
+ }
+ }
+ }
+
+ if (predicate(node)) {
+ return {
+ node: node,
+ parentNodes: parentNodes
+ };
+ }
+ }
+} // See https://www.ecma-international.org/ecma-262/5.1/#sec-A.5
+
+
+function isSourceElement(opts, node) {
+ if (node == null) {
+ return false;
+ } // JS and JS like to avoid repetitions
+
+
+ var jsSourceElements = ["FunctionDeclaration", "BlockStatement", "BreakStatement", "ContinueStatement", "DebuggerStatement", "DoWhileStatement", "EmptyStatement", "ExpressionStatement", "ForInStatement", "ForStatement", "IfStatement", "LabeledStatement", "ReturnStatement", "SwitchStatement", "ThrowStatement", "TryStatement", "VariableDeclaration", "WhileStatement", "WithStatement", "ClassDeclaration", // ES 2015
+ "ImportDeclaration", // Module
+ "ExportDefaultDeclaration", // Module
+ "ExportNamedDeclaration", // Module
+ "ExportAllDeclaration", // Module
+ "TypeAlias", // Flow
+ "InterfaceDeclaration", // Flow, TypeScript
+ "TypeAliasDeclaration", // TypeScript
+ "ExportAssignment", // TypeScript
+ "ExportDeclaration" // TypeScript
+ ];
+ var jsonSourceElements = ["ObjectExpression", "ArrayExpression", "StringLiteral", "NumericLiteral", "BooleanLiteral", "NullLiteral"];
+ var graphqlSourceElements = ["OperationDefinition", "FragmentDefinition", "VariableDefinition", "TypeExtensionDefinition", "ObjectTypeDefinition", "FieldDefinition", "DirectiveDefinition", "EnumTypeDefinition", "EnumValueDefinition", "InputValueDefinition", "InputObjectTypeDefinition", "SchemaDefinition", "OperationTypeDefinition", "InterfaceTypeDefinition", "UnionTypeDefinition", "ScalarTypeDefinition"];
+
+ switch (opts.parser) {
+ case "flow":
+ case "babel":
+ case "typescript":
+ return jsSourceElements.indexOf(node.type) > -1;
+
+ case "json":
+ return jsonSourceElements.indexOf(node.type) > -1;
+
+ case "graphql":
+ return graphqlSourceElements.indexOf(node.kind) > -1;
+
+ case "vue":
+ return node.tag !== "root";
+ }
+
+ return false;
+}
+
+function calculateRange(text, opts, ast) {
+ // Contract the range so that it has non-whitespace characters at its endpoints.
+ // This ensures we can format a range that doesn't end on a node.
+ var rangeStringOrig = text.slice(opts.rangeStart, opts.rangeEnd);
+ var startNonWhitespace = Math.max(opts.rangeStart + rangeStringOrig.search(/\S/), opts.rangeStart);
+ var endNonWhitespace;
+
+ for (endNonWhitespace = opts.rangeEnd; endNonWhitespace > opts.rangeStart; --endNonWhitespace) {
+ if (text[endNonWhitespace - 1].match(/\S/)) {
+ break;
+ }
+ }
+
+ var startNodeAndParents = findNodeAtOffset(ast, startNonWhitespace, opts, function (node) {
+ return isSourceElement(opts, node);
+ });
+ var endNodeAndParents = findNodeAtOffset(ast, endNonWhitespace, opts, function (node) {
+ return isSourceElement(opts, node);
+ });
+
+ if (!startNodeAndParents || !endNodeAndParents) {
+ return {
+ rangeStart: 0,
+ rangeEnd: 0
+ };
+ }
+
+ var siblingAncestors = findSiblingAncestors(startNodeAndParents, endNodeAndParents, opts);
+ var startNode = siblingAncestors.startNode,
+ endNode = siblingAncestors.endNode;
+ var rangeStart = Math.min(opts.locStart(startNode, opts.locStart), opts.locStart(endNode, opts.locStart));
+ var rangeEnd = Math.max(opts.locEnd(startNode, opts.locEnd), opts.locEnd(endNode, opts.locEnd));
+ return {
+ rangeStart: rangeStart,
+ rangeEnd: rangeEnd
+ };
+}
+
+var rangeUtil = {
+ calculateRange,
+ findNodeAtOffset
+};
+
+var require$$0$1 = getCjsExportFromNamespace(index_es6);
+
+var normalizeOptions$1 = options$1.normalize;
+var guessEndOfLine$1 = endOfLine.guessEndOfLine,
+ convertEndOfLineToChars$2 = endOfLine.convertEndOfLineToChars;
+var mapDoc$2 = doc.utils.mapDoc,
+ printDocToString$1 = doc.printer.printDocToString,
+ printDocToDebug = doc.debug.printDocToDebug;
+var UTF8BOM = 0xfeff;
+var CURSOR = Symbol("cursor");
+var PLACEHOLDERS = {
+ cursorOffset: "<<<PRETTIER_CURSOR>>>",
+ rangeStart: "<<<PRETTIER_RANGE_START>>>",
+ rangeEnd: "<<<PRETTIER_RANGE_END>>>"
+};
+
+function ensureAllCommentsPrinted(astComments) {
+ if (!astComments) {
+ return;
+ }
+
+ for (var i = 0; i < astComments.length; ++i) {
+ if (astComments[i].value.trim() === "prettier-ignore") {
+ // If there's a prettier-ignore, we're not printing that sub-tree so we
+ // don't know if the comments was printed or not.
+ return;
+ }
+ }
+
+ astComments.forEach(function (comment) {
+ if (!comment.printed) {
+ throw new Error('Comment "' + comment.value.trim() + '" was not printed. Please report this error!');
+ }
+
+ delete comment.printed;
+ });
+}
+
+function attachComments(text, ast, opts) {
+ var astComments = ast.comments;
+
+ if (astComments) {
+ delete ast.comments;
+ comments.attach(astComments, ast, text, opts);
+ }
+
+ ast.tokens = [];
+ opts.originalText = opts.parser === "yaml" ? text : text.trimRight();
+ return astComments;
+}
+
+function coreFormat(text, opts, addAlignmentSize) {
+ if (!text || !text.trim().length) {
+ return {
+ formatted: "",
+ cursorOffset: 0
+ };
+ }
+
+ addAlignmentSize = addAlignmentSize || 0;
+ var parsed = parser.parse(text, opts);
+ var ast = parsed.ast;
+ text = parsed.text;
+
+ if (opts.cursorOffset >= 0) {
+ var nodeResult = rangeUtil.findNodeAtOffset(ast, opts.cursorOffset, opts);
+
+ if (nodeResult && nodeResult.node) {
+ opts.cursorNode = nodeResult.node;
+ }
+ }
+
+ var astComments = attachComments(text, ast, opts);
+ var doc = astToDoc(ast, opts, addAlignmentSize);
+ var eol = convertEndOfLineToChars$2(opts.endOfLine);
+ var result = printDocToString$1(opts.endOfLine === "lf" ? doc : mapDoc$2(doc, function (currentDoc) {
+ return typeof currentDoc === "string" && currentDoc.indexOf("\n") !== -1 ? currentDoc.replace(/\n/g, eol) : currentDoc;
+ }), opts);
+ ensureAllCommentsPrinted(astComments); // Remove extra leading indentation as well as the added indentation after last newline
+
+ if (addAlignmentSize > 0) {
+ var trimmed = result.formatted.trim();
+
+ if (result.cursorNodeStart !== undefined) {
+ result.cursorNodeStart -= result.formatted.indexOf(trimmed);
+ }
+
+ result.formatted = trimmed + convertEndOfLineToChars$2(opts.endOfLine);
+ }
+
+ if (opts.cursorOffset >= 0) {
+ var oldCursorNodeStart;
+ var oldCursorNodeText;
+ var cursorOffsetRelativeToOldCursorNode;
+ var newCursorNodeStart;
+ var newCursorNodeText;
+
+ if (opts.cursorNode && result.cursorNodeText) {
+ oldCursorNodeStart = opts.locStart(opts.cursorNode);
+ oldCursorNodeText = text.slice(oldCursorNodeStart, opts.locEnd(opts.cursorNode));
+ cursorOffsetRelativeToOldCursorNode = opts.cursorOffset - oldCursorNodeStart;
+ newCursorNodeStart = result.cursorNodeStart;
+ newCursorNodeText = result.cursorNodeText;
+ } else {
+ oldCursorNodeStart = 0;
+ oldCursorNodeText = text;
+ cursorOffsetRelativeToOldCursorNode = opts.cursorOffset;
+ newCursorNodeStart = 0;
+ newCursorNodeText = result.formatted;
+ }
+
+ if (oldCursorNodeText === newCursorNodeText) {
+ return {
+ formatted: result.formatted,
+ cursorOffset: newCursorNodeStart + cursorOffsetRelativeToOldCursorNode
+ };
+ } // diff old and new cursor node texts, with a special cursor
+ // symbol inserted to find out where it moves to
+
+
+ var oldCursorNodeCharArray = oldCursorNodeText.split("");
+ oldCursorNodeCharArray.splice(cursorOffsetRelativeToOldCursorNode, 0, CURSOR);
+ var newCursorNodeCharArray = newCursorNodeText.split("");
+ var cursorNodeDiff = require$$0$1.diffArrays(oldCursorNodeCharArray, newCursorNodeCharArray);
+ var cursorOffset = newCursorNodeStart;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = cursorNodeDiff[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var entry = _step.value;
+
+ if (entry.removed) {
+ if (entry.value.indexOf(CURSOR) > -1) {
+ break;
+ }
+ } else {
+ cursorOffset += entry.count;
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return {
+ formatted: result.formatted,
+ cursorOffset
+ };
+ }
+
+ return {
+ formatted: result.formatted
+ };
+}
+
+function formatRange(text, opts) {
+ var parsed = parser.parse(text, opts);
+ var ast = parsed.ast;
+ text = parsed.text;
+ var range = rangeUtil.calculateRange(text, opts, ast);
+ var rangeStart = range.rangeStart;
+ var rangeEnd = range.rangeEnd;
+ var rangeString = text.slice(rangeStart, rangeEnd); // Try to extend the range backwards to the beginning of the line.
+ // This is so we can detect indentation correctly and restore it.
+ // Use `Math.min` since `lastIndexOf` returns 0 when `rangeStart` is 0
+
+ var rangeStart2 = Math.min(rangeStart, text.lastIndexOf("\n", rangeStart) + 1);
+ var indentString = text.slice(rangeStart2, rangeStart);
+ var alignmentSize = util.getAlignmentSize(indentString, opts.tabWidth);
+ var rangeResult = coreFormat(rangeString, Object.assign({}, opts, {
+ rangeStart: 0,
+ rangeEnd: Infinity,
+ // track the cursor offset only if it's within our range
+ cursorOffset: opts.cursorOffset >= rangeStart && opts.cursorOffset < rangeEnd ? opts.cursorOffset - rangeStart : -1
+ }), alignmentSize); // Since the range contracts to avoid trailing whitespace,
+ // we need to remove the newline that was inserted by the `format` call.
+
+ var rangeTrimmed = rangeResult.formatted.trimRight();
+ var rangeLeft = text.slice(0, rangeStart);
+ var rangeRight = text.slice(rangeEnd);
+ var cursorOffset = opts.cursorOffset;
+
+ if (opts.cursorOffset >= rangeEnd) {
+ // handle the case where the cursor was past the end of the range
+ cursorOffset = opts.cursorOffset - rangeEnd + (rangeStart + rangeTrimmed.length);
+ } else if (rangeResult.cursorOffset !== undefined) {
+ // handle the case where the cursor was in the range
+ cursorOffset = rangeResult.cursorOffset + rangeStart;
+ } // keep the cursor as it was if it was before the start of the range
+
+
+ var formatted;
+
+ if (opts.endOfLine === "lf") {
+ formatted = rangeLeft + rangeTrimmed + rangeRight;
+ } else {
+ var eol = convertEndOfLineToChars$2(opts.endOfLine);
+
+ if (cursorOffset >= 0) {
+ var parts = [rangeLeft, rangeTrimmed, rangeRight];
+ var partIndex = 0;
+ var partOffset = cursorOffset;
+
+ while (partIndex < parts.length) {
+ var part = parts[partIndex];
+
+ if (partOffset < part.length) {
+ parts[partIndex] = parts[partIndex].slice(0, partOffset) + PLACEHOLDERS.cursorOffset + parts[partIndex].slice(partOffset);
+ break;
+ }
+
+ partIndex++;
+ partOffset -= part.length;
+ }
+
+ var newRangeLeft = parts[0],
+ newRangeTrimmed = parts[1],
+ newRangeRight = parts[2];
+ formatted = (newRangeLeft.replace(/\n/g, eol) + newRangeTrimmed + newRangeRight.replace(/\n/g, eol)).replace(PLACEHOLDERS.cursorOffset, function (_, index) {
+ cursorOffset = index;
+ return "";
+ });
+ } else {
+ formatted = rangeLeft.replace(/\n/g, eol) + rangeTrimmed + rangeRight.replace(/\n/g, eol);
+ }
+ }
+
+ return {
+ formatted,
+ cursorOffset
+ };
+}
+
+function format(text, opts) {
+ var selectedParser = parser.resolveParser(opts);
+ var hasPragma = !selectedParser.hasPragma || selectedParser.hasPragma(text);
+
+ if (opts.requirePragma && !hasPragma) {
+ return {
+ formatted: text
+ };
+ }
+
+ if (opts.endOfLine === "auto") {
+ opts.endOfLine = guessEndOfLine$1(text);
+ }
+
+ var hasCursor = opts.cursorOffset >= 0;
+ var hasRangeStart = opts.rangeStart > 0;
+ var hasRangeEnd = opts.rangeEnd < text.length; // get rid of CR/CRLF parsing
+
+ if (text.indexOf("\r") !== -1) {
+ var offsetKeys = [hasCursor && "cursorOffset", hasRangeStart && "rangeStart", hasRangeEnd && "rangeEnd"].filter(Boolean).sort(function (aKey, bKey) {
+ return opts[aKey] - opts[bKey];
+ });
+
+ for (var i = offsetKeys.length - 1; i >= 0; i--) {
+ var key = offsetKeys[i];
+ text = text.slice(0, opts[key]) + PLACEHOLDERS[key] + text.slice(opts[key]);
+ }
+
+ text = text.replace(/\r\n?/g, "\n");
+
+ var _loop = function _loop(_i) {
+ var key = offsetKeys[_i];
+ text = text.replace(PLACEHOLDERS[key], function (_, index) {
+ opts[key] = index;
+ return "";
+ });
+ };
+
+ for (var _i = 0; _i < offsetKeys.length; _i++) {
+ _loop(_i);
+ }
+ }
+
+ var hasUnicodeBOM = text.charCodeAt(0) === UTF8BOM;
+
+ if (hasUnicodeBOM) {
+ text = text.substring(1);
+
+ if (hasCursor) {
+ opts.cursorOffset++;
+ }
+
+ if (hasRangeStart) {
+ opts.rangeStart++;
+ }
+
+ if (hasRangeEnd) {
+ opts.rangeEnd++;
+ }
+ }
+
+ if (!hasCursor) {
+ opts.cursorOffset = -1;
+ }
+
+ if (opts.rangeStart < 0) {
+ opts.rangeStart = 0;
+ }
+
+ if (opts.rangeEnd > text.length) {
+ opts.rangeEnd = text.length;
+ }
+
+ var result = hasRangeStart || hasRangeEnd ? formatRange(text, opts) : coreFormat(opts.insertPragma && opts.printer.insertPragma && !hasPragma ? opts.printer.insertPragma(text) : text, opts);
+
+ if (hasUnicodeBOM) {
+ result.formatted = String.fromCharCode(UTF8BOM) + result.formatted;
+
+ if (hasCursor) {
+ result.cursorOffset++;
+ }
+ }
+
+ return result;
+}
+
+var core = {
+ formatWithCursor(text, opts) {
+ opts = normalizeOptions$1(opts);
+ return format(text, opts);
+ },
+
+ parse(text, opts, massage) {
+ opts = normalizeOptions$1(opts);
+
+ if (text.indexOf("\r") !== -1) {
+ text = text.replace(/\r\n?/g, "\n");
+ }
+
+ var parsed = parser.parse(text, opts);
+
+ if (massage) {
+ parsed.ast = massageAst(parsed.ast, opts);
+ }
+
+ return parsed;
+ },
+
+ formatAST(ast, opts) {
+ opts = normalizeOptions$1(opts);
+ var doc = astToDoc(ast, opts);
+ return printDocToString$1(doc, opts);
+ },
+
+ // Doesn't handle shebang for now
+ formatDoc(doc, opts) {
+ var debug = printDocToDebug(doc);
+ opts = normalizeOptions$1(Object.assign({}, opts, {
+ parser: "babel"
+ }));
+ return format(debug, opts).formatted;
+ },
+
+ printToDoc(text, opts) {
+ opts = normalizeOptions$1(opts);
+ var parsed = parser.parse(text, opts);
+ var ast = parsed.ast;
+ text = parsed.text;
+ attachComments(text, ast, opts);
+ return astToDoc(ast, opts);
+ },
+
+ printDocToString(doc, opts) {
+ return printDocToString$1(doc, normalizeOptions$1(opts));
+ }
+
+};
+
+// A simple implementation of make-array
+function make_array(subject) {
+ return Array.isArray(subject) ? subject : [subject];
+}
+
+var REGEX_BLANK_LINE = /^\s+$/;
+var REGEX_LEADING_EXCAPED_EXCLAMATION = /^\\!/;
+var REGEX_LEADING_EXCAPED_HASH = /^\\#/;
+var SLASH = '/';
+var KEY_IGNORE = typeof Symbol !== 'undefined' ? Symbol.for('node-ignore')
+/* istanbul ignore next */
+: 'node-ignore';
+
+var define = function define(object, key, value) {
+ return Object.defineProperty(object, key, {
+ value
+ });
+};
+
+var REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g; // Sanitize the range of a regular expression
+// The cases are complicated, see test cases for details
+
+var sanitizeRange = function sanitizeRange(range) {
+ return range.replace(REGEX_REGEXP_RANGE, function (match, from, to) {
+ return from.charCodeAt(0) <= to.charCodeAt(0) ? match // Invalid range (out of order) which is ok for gitignore rules but
+ // fatal for JavaScript regular expression, so eliminate it.
+ : '';
+ });
+}; // > If the pattern ends with a slash,
+// > it is removed for the purpose of the following description,
+// > but it would only find a match with a directory.
+// > In other words, foo/ will match a directory foo and paths underneath it,
+// > but will not match a regular file or a symbolic link foo
+// > (this is consistent with the way how pathspec works in general in Git).
+// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'
+// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call
+// you could use option `mark: true` with `glob`
+// '`foo/`' should not continue with the '`..`'
+
+
+var DEFAULT_REPLACER_PREFIX = [// > Trailing spaces are ignored unless they are quoted with backslash ("\")
+[// (a\ ) -> (a )
+// (a ) -> (a)
+// (a \ ) -> (a )
+/\\?\s+$/, function (match) {
+ return match.indexOf('\\') === 0 ? ' ' : '';
+}], // replace (\ ) with ' '
+[/\\\s/g, function () {
+ return ' ';
+}], // Escape metacharacters
+// which is written down by users but means special for regular expressions.
+// > There are 12 characters with special meanings:
+// > - the backslash \,
+// > - the caret ^,
+// > - the dollar sign $,
+// > - the period or dot .,
+// > - the vertical bar or pipe symbol |,
+// > - the question mark ?,
+// > - the asterisk or star *,
+// > - the plus sign +,
+// > - the opening parenthesis (,
+// > - the closing parenthesis ),
+// > - and the opening square bracket [,
+// > - the opening curly brace {,
+// > These special characters are often called "metacharacters".
+[/[\\^$.|*+(){]/g, function (match) {
+ return `\\${match}`;
+}], [// > [abc] matches any character inside the brackets
+// > (in this case a, b, or c);
+/\[([^\]/]*)($|\])/g, function (match, p1, p2) {
+ return p2 === ']' ? `[${sanitizeRange(p1)}]` : `\\${match}`;
+}], [// > a question mark (?) matches a single character
+/(?!\\)\?/g, function () {
+ return '[^/]';
+}], // leading slash
+[// > A leading slash matches the beginning of the pathname.
+// > For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".
+// A leading slash matches the beginning of the pathname
+/^\//, function () {
+ return '^';
+}], // replace special metacharacter slash after the leading slash
+[/\//g, function () {
+ return '\\/';
+}], [// > A leading "**" followed by a slash means match in all directories.
+// > For example, "**/foo" matches file or directory "foo" anywhere,
+// > the same as pattern "foo".
+// > "**/foo/bar" matches file or directory "bar" anywhere that is directly
+// > under directory "foo".
+// Notice that the '*'s have been replaced as '\\*'
+/^\^*\\\*\\\*\\\//, // '**/foo' <-> 'foo'
+function () {
+ return '^(?:.*\\/)?';
+}]];
+var DEFAULT_REPLACER_SUFFIX = [// starting
+[// there will be no leading '/'
+// (which has been replaced by section "leading slash")
+// If starts with '**', adding a '^' to the regular expression also works
+/^(?=[^^])/, function startingReplacer() {
+ return !/\/(?!$)/.test(this) // > If the pattern does not contain a slash /,
+ // > Git treats it as a shell glob pattern
+ // Actually, if there is only a trailing slash,
+ // git also treats it as a shell glob pattern
+ ? '(?:^|\\/)' // > Otherwise, Git treats the pattern as a shell glob suitable for
+ // > consumption by fnmatch(3)
+ : '^';
+}], // two globstars
+[// Use lookahead assertions so that we could match more than one `'/**'`
+/\\\/\\\*\\\*(?=\\\/|$)/g, // Zero, one or several directories
+// should not use '*', or it will be replaced by the next replacer
+// Check if it is not the last `'/**'`
+function (match, index, str) {
+ return index + 6 < str.length // case: /**/
+ // > A slash followed by two consecutive asterisks then a slash matches
+ // > zero or more directories.
+ // > For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on.
+ // '/**/'
+ ? '(?:\\/[^\\/]+)*' // case: /**
+ // > A trailing `"/**"` matches everything inside.
+ // #21: everything inside but it should not include the current folder
+ : '\\/.+';
+}], // intermediate wildcards
+[// Never replace escaped '*'
+// ignore rule '\*' will match the path '*'
+// 'abc.*/' -> go
+// 'abc.*' -> skip this rule
+/(^|[^\\]+)\\\*(?=.+)/g, // '*.js' matches '.js'
+// '*.js' doesn't match 'abc'
+function (match, p1) {
+ return `${p1}[^\\/]*`;
+}], // trailing wildcard
+[/(\^|\\\/)?\\\*$/, function (match, p1) {
+ var prefix = p1 // '\^':
+ // '/*' does not match ''
+ // '/*' does not match everything
+ // '\\\/':
+ // 'abc/*' does not match 'abc/'
+ ? `${p1}[^/]+` // 'a*' matches 'a'
+ // 'a*' matches 'aa'
+ : '[^/]*';
+ return `${prefix}(?=$|\\/$)`;
+}], [// unescape
+/\\\\\\/g, function () {
+ return '\\';
+}]];
+var POSITIVE_REPLACERS = [].concat(DEFAULT_REPLACER_PREFIX, [// 'f'
+// matches
+// - /f(end)
+// - /f/
+// - (start)f(end)
+// - (start)f/
+// doesn't match
+// - oof
+// - foo
+// pseudo:
+// -> (^|/)f(/|$)
+// ending
+[// 'js' will not match 'js.'
+// 'ab' will not match 'abc'
+/(?:[^*/])$/, // 'js*' will not match 'a.js'
+// 'js/' will not match 'a.js'
+// 'js' will match 'a.js' and 'a.js/'
+function (match) {
+ return `${match}(?=$|\\/)`;
+}]], DEFAULT_REPLACER_SUFFIX);
+var NEGATIVE_REPLACERS = [].concat(DEFAULT_REPLACER_PREFIX, [// #24, #38
+// The MISSING rule of [gitignore docs](https://git-scm.com/docs/gitignore)
+// A negative pattern without a trailing wildcard should not
+// re-include the things inside that directory.
+// eg:
+// ['node_modules/*', '!node_modules']
+// should ignore `node_modules/a.js`
+[/(?:[^*])$/, function (match) {
+ return `${match}(?=$|\\/$)`;
+}]], DEFAULT_REPLACER_SUFFIX); // A simple cache, because an ignore rule only has only one certain meaning
+
+var cache = Object.create(null); // @param {pattern}
+
+var make_regex = function make_regex(pattern, negative, ignorecase) {
+ var r = cache[pattern];
+
+ if (r) {
+ return r;
+ }
+
+ var replacers = negative ? NEGATIVE_REPLACERS : POSITIVE_REPLACERS;
+ var source = replacers.reduce(function (prev, current) {
+ return prev.replace(current[0], current[1].bind(pattern));
+ }, pattern);
+ return cache[pattern] = ignorecase ? new RegExp(source, 'i') : new RegExp(source);
+}; // > A blank line matches no files, so it can serve as a separator for readability.
+
+
+var checkPattern = function checkPattern(pattern) {
+ return pattern && typeof pattern === 'string' && !REGEX_BLANK_LINE.test(pattern) // > A line starting with # serves as a comment.
+ && pattern.indexOf('#') !== 0;
+};
+
+var createRule = function createRule(pattern, ignorecase) {
+ var origin = pattern;
+ var negative = false; // > An optional prefix "!" which negates the pattern;
+
+ if (pattern.indexOf('!') === 0) {
+ negative = true;
+ pattern = pattern.substr(1);
+ }
+
+ pattern = pattern // > Put a backslash ("\") in front of the first "!" for patterns that
+ // > begin with a literal "!", for example, `"\!important!.txt"`.
+ .replace(REGEX_LEADING_EXCAPED_EXCLAMATION, '!') // > Put a backslash ("\") in front of the first hash for patterns that
+ // > begin with a hash.
+ .replace(REGEX_LEADING_EXCAPED_HASH, '#');
+ var regex = make_regex(pattern, negative, ignorecase);
+ return {
+ origin,
+ pattern,
+ negative,
+ regex
+ };
+};
+
+var IgnoreBase =
+/*#__PURE__*/
+function () {
+ function IgnoreBase() {
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
+ _ref$ignorecase = _ref.ignorecase,
+ ignorecase = _ref$ignorecase === void 0 ? true : _ref$ignorecase;
+
+ _classCallCheck(this, IgnoreBase);
+
+ this._rules = [];
+ this._ignorecase = ignorecase;
+ define(this, KEY_IGNORE, true);
+
+ this._initCache();
+ }
+
+ _createClass(IgnoreBase, [{
+ key: "_initCache",
+ value: function _initCache() {
+ this._cache = Object.create(null);
+ } // @param {Array.<string>|string|Ignore} pattern
+
+ }, {
+ key: "add",
+ value: function add(pattern) {
+ this._added = false;
+
+ if (typeof pattern === 'string') {
+ pattern = pattern.split(/\r?\n/g);
+ }
+
+ make_array(pattern).forEach(this._addPattern, this); // Some rules have just added to the ignore,
+ // making the behavior changed.
+
+ if (this._added) {
+ this._initCache();
+ }
+
+ return this;
+ } // legacy
+
+ }, {
+ key: "addPattern",
+ value: function addPattern(pattern) {
+ return this.add(pattern);
+ }
+ }, {
+ key: "_addPattern",
+ value: function _addPattern(pattern) {
+ // #32
+ if (pattern && pattern[KEY_IGNORE]) {
+ this._rules = this._rules.concat(pattern._rules);
+ this._added = true;
+ return;
+ }
+
+ if (checkPattern(pattern)) {
+ var rule = createRule(pattern, this._ignorecase);
+ this._added = true;
+
+ this._rules.push(rule);
+ }
+ }
+ }, {
+ key: "filter",
+ value: function filter(paths) {
+ var _this = this;
+
+ return make_array(paths).filter(function (path) {
+ return _this._filter(path);
+ });
+ }
+ }, {
+ key: "createFilter",
+ value: function createFilter() {
+ var _this2 = this;
+
+ return function (path) {
+ return _this2._filter(path);
+ };
+ }
+ }, {
+ key: "ignores",
+ value: function ignores(path) {
+ return !this._filter(path);
+ } // @returns `Boolean` true if the `path` is NOT ignored
+
+ }, {
+ key: "_filter",
+ value: function _filter(path, slices) {
+ if (!path) {
+ return false;
+ }
+
+ if (path in this._cache) {
+ return this._cache[path];
+ }
+
+ if (!slices) {
+ // path/to/a.js
+ // ['path', 'to', 'a.js']
+ slices = path.split(SLASH);
+ }
+
+ slices.pop();
+ return this._cache[path] = slices.length // > It is not possible to re-include a file if a parent directory of
+ // > that file is excluded.
+ // If the path contains a parent directory, check the parent first
+ ? this._filter(slices.join(SLASH) + SLASH, slices) && this._test(path) // Or only test the path
+ : this._test(path);
+ } // @returns {Boolean} true if a file is NOT ignored
+
+ }, {
+ key: "_test",
+ value: function _test(path) {
+ // Explicitly define variable type by setting matched to `0`
+ var matched = 0;
+
+ this._rules.forEach(function (rule) {
+ // if matched = true, then we only test negative rules
+ // if matched = false, then we test non-negative rules
+ if (!(matched ^ rule.negative)) {
+ matched = rule.negative ^ rule.regex.test(path);
+ }
+ });
+
+ return !matched;
+ }
+ }]);
+
+ return IgnoreBase;
+}(); // Windows
+// --------------------------------------------------------------
+
+/* istanbul ignore if */
+
+
+if ( // Detect `process` so that it can run in browsers.
+typeof process !== 'undefined' && (process.env && process.env.IGNORE_TEST_WIN32 || process.platform === 'win32')) {
+ var filter = IgnoreBase.prototype._filter;
+ /* eslint no-control-regex: "off" */
+
+ var make_posix = function make_posix(str) {
+ return /^\\\\\?\\/.test(str) || /[^\x00-\x80]+/.test(str) ? str : str.replace(/\\/g, '/');
+ };
+
+ IgnoreBase.prototype._filter = function filterWin32(path, slices) {
+ path = make_posix(path);
+ return filter.call(this, path, slices);
+ };
+}
+
+var ignore = function ignore(options) {
+ return new IgnoreBase(options);
+};
+
+/**
+ * @param {string} filename
+ * @returns {Promise<null | string>}
+ */
+
+
+function getFileContentOrNull(filename) {
+ return new Promise(function (resolve, reject) {
+ fs$1.readFile(filename, "utf8", function (error, data) {
+ if (error && error.code !== "ENOENT") {
+ reject(createError(filename, error));
+ } else {
+ resolve(error ? null : data);
+ }
+ });
+ });
+}
+/**
+ * @param {string} filename
+ * @returns {null | string}
+ */
+
+
+getFileContentOrNull.sync = function (filename) {
+ try {
+ return fs$1.readFileSync(filename, "utf8");
+ } catch (error) {
+ if (error && error.code === "ENOENT") {
+ return null;
+ }
+
+ throw createError(filename, error);
+ }
+};
+
+function createError(filename, error) {
+ return new Error(`Unable to read ${filename}: ${error.message}`);
+}
+
+var getFileContentOrNull_1 = getFileContentOrNull;
+
+/**
+ * @param {undefined | string} ignorePath
+ * @param {undefined | boolean} withNodeModules
+ */
+
+
+function createIgnorer(ignorePath, withNodeModules) {
+ return (!ignorePath ? Promise.resolve(null) : getFileContentOrNull_1(path$2.resolve(ignorePath))).then(function (ignoreContent) {
+ return _createIgnorer(ignoreContent, withNodeModules);
+ });
+}
+/**
+ * @param {undefined | string} ignorePath
+ * @param {undefined | boolean} withNodeModules
+ */
+
+
+createIgnorer.sync = function (ignorePath, withNodeModules) {
+ var ignoreContent = !ignorePath ? null : getFileContentOrNull_1.sync(path$2.resolve(ignorePath));
+ return _createIgnorer(ignoreContent, withNodeModules);
+};
+/**
+ * @param {null | string} ignoreContent
+ * @param {undefined | boolean} withNodeModules
+ */
+
+
+function _createIgnorer(ignoreContent, withNodeModules) {
+ var ignorer = ignore().add(ignoreContent || "");
+
+ if (!withNodeModules) {
+ ignorer.add("node_modules");
+ }
+
+ return ignorer;
+}
+
+var createIgnorer_1 = createIgnorer;
+
+var thirdParty = require("./third-party");
+
+var concatMap = function concatMap(xs, fn) {
+ var res = [];
+
+ for (var i = 0; i < xs.length; i++) {
+ var x = fn(xs[i], i);
+ if (isArray(x)) res.push.apply(res, x);else res.push(x);
+ }
+
+ return res;
+};
+
+var isArray = Array.isArray || function (xs) {
+ return Object.prototype.toString.call(xs) === '[object Array]';
+};
+
+var balancedMatch = balanced;
+
+function balanced(a, b, str) {
+ if (a instanceof RegExp) a = maybeMatch(a, str);
+ if (b instanceof RegExp) b = maybeMatch(b, str);
+ var r = range(a, b, str);
+ return r && {
+ start: r[0],
+ end: r[1],
+ pre: str.slice(0, r[0]),
+ body: str.slice(r[0] + a.length, r[1]),
+ post: str.slice(r[1] + b.length)
+ };
+}
+
+function maybeMatch(reg, str) {
+ var m = str.match(reg);
+ return m ? m[0] : null;
+}
+
+balanced.range = range;
+
+function range(a, b, str) {
+ var begs, beg, left, right, result;
+ var ai = str.indexOf(a);
+ var bi = str.indexOf(b, ai + 1);
+ var i = ai;
+
+ if (ai >= 0 && bi > 0) {
+ begs = [];
+ left = str.length;
+
+ while (i >= 0 && !result) {
+ if (i == ai) {
+ begs.push(i);
+ ai = str.indexOf(a, i + 1);
+ } else if (begs.length == 1) {
+ result = [begs.pop(), bi];
+ } else {
+ beg = begs.pop();
+
+ if (beg < left) {
+ left = beg;
+ right = bi;
+ }
+
+ bi = str.indexOf(b, i + 1);
+ }
+
+ i = ai < bi && ai >= 0 ? ai : bi;
+ }
+
+ if (begs.length) {
+ result = [left, right];
+ }
+ }
+
+ return result;
+}
+
+var braceExpansion = expandTop;
+var escSlash = '\0SLASH' + Math.random() + '\0';
+var escOpen = '\0OPEN' + Math.random() + '\0';
+var escClose = '\0CLOSE' + Math.random() + '\0';
+var escComma = '\0COMMA' + Math.random() + '\0';
+var escPeriod = '\0PERIOD' + Math.random() + '\0';
+
+function numeric(str) {
+ return parseInt(str, 10) == str ? parseInt(str, 10) : str.charCodeAt(0);
+}
+
+function escapeBraces(str) {
+ return str.split('\\\\').join(escSlash).split('\\{').join(escOpen).split('\\}').join(escClose).split('\\,').join(escComma).split('\\.').join(escPeriod);
+}
+
+function unescapeBraces(str) {
+ return str.split(escSlash).join('\\').split(escOpen).join('{').split(escClose).join('}').split(escComma).join(',').split(escPeriod).join('.');
+} // Basically just str.split(","), but handling cases
+// where we have nested braced sections, which should be
+// treated as individual members, like {a,{b,c},d}
+
+
+function parseCommaParts(str) {
+ if (!str) return [''];
+ var parts = [];
+ var m = balancedMatch('{', '}', str);
+ if (!m) return str.split(',');
+ var pre = m.pre;
+ var body = m.body;
+ var post = m.post;
+ var p = pre.split(',');
+ p[p.length - 1] += '{' + body + '}';
+ var postParts = parseCommaParts(post);
+
+ if (post.length) {
+ p[p.length - 1] += postParts.shift();
+ p.push.apply(p, postParts);
+ }
+
+ parts.push.apply(parts, p);
+ return parts;
+}
+
+function expandTop(str) {
+ if (!str) return []; // I don't know why Bash 4.3 does this, but it does.
+ // Anything starting with {} will have the first two bytes preserved
+ // but *only* at the top level, so {},a}b will not expand to anything,
+ // but a{},b}c will be expanded to [a}c,abc].
+ // One could argue that this is a bug in Bash, but since the goal of
+ // this module is to match Bash's rules, we escape a leading {}
+
+ if (str.substr(0, 2) === '{}') {
+ str = '\\{\\}' + str.substr(2);
+ }
+
+ return expand(escapeBraces(str), true).map(unescapeBraces);
+}
+
+function embrace(str) {
+ return '{' + str + '}';
+}
+
+function isPadded(el) {
+ return /^-?0\d/.test(el);
+}
+
+function lte(i, y) {
+ return i <= y;
+}
+
+function gte(i, y) {
+ return i >= y;
+}
+
+function expand(str, isTop) {
+ var expansions = [];
+ var m = balancedMatch('{', '}', str);
+ if (!m || /\$$/.test(m.pre)) return [str];
+ var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
+ var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
+ var isSequence = isNumericSequence || isAlphaSequence;
+ var isOptions = m.body.indexOf(',') >= 0;
+
+ if (!isSequence && !isOptions) {
+ // {a},b}
+ if (m.post.match(/,.*\}/)) {
+ str = m.pre + '{' + m.body + escClose + m.post;
+ return expand(str);
+ }
+
+ return [str];
+ }
+
+ var n;
+
+ if (isSequence) {
+ n = m.body.split(/\.\./);
+ } else {
+ n = parseCommaParts(m.body);
+
+ if (n.length === 1) {
+ // x{{a,b}}y ==> x{a}y x{b}y
+ n = expand(n[0], false).map(embrace);
+
+ if (n.length === 1) {
+ var post = m.post.length ? expand(m.post, false) : [''];
+ return post.map(function (p) {
+ return m.pre + n[0] + p;
+ });
+ }
+ }
+ } // at this point, n is the parts, and we know it's not a comma set
+ // with a single entry.
+ // no need to expand pre, since it is guaranteed to be free of brace-sets
+
+
+ var pre = m.pre;
+ var post = m.post.length ? expand(m.post, false) : [''];
+ var N;
+
+ if (isSequence) {
+ var x = numeric(n[0]);
+ var y = numeric(n[1]);
+ var width = Math.max(n[0].length, n[1].length);
+ var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1;
+ var test = lte;
+ var reverse = y < x;
+
+ if (reverse) {
+ incr *= -1;
+ test = gte;
+ }
+
+ var pad = n.some(isPadded);
+ N = [];
+
+ for (var i = x; test(i, y); i += incr) {
+ var c;
+
+ if (isAlphaSequence) {
+ c = String.fromCharCode(i);
+ if (c === '\\') c = '';
+ } else {
+ c = String(i);
+
+ if (pad) {
+ var need = width - c.length;
+
+ if (need > 0) {
+ var z = new Array(need + 1).join('0');
+ if (i < 0) c = '-' + z + c.slice(1);else c = z + c;
+ }
+ }
+ }
+
+ N.push(c);
+ }
+ } else {
+ N = concatMap(n, function (el) {
+ return expand(el, false);
+ });
+ }
+
+ for (var j = 0; j < N.length; j++) {
+ for (var k = 0; k < post.length; k++) {
+ var expansion = pre + N[j] + post[k];
+ if (!isTop || isSequence || expansion) expansions.push(expansion);
+ }
+ }
+
+ return expansions;
+}
+
+var minimatch_1 = minimatch;
+minimatch.Minimatch = Minimatch;
+var path = {
+ sep: '/'
+};
+
+try {
+ path = path$2;
+} catch (er) {}
+
+var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {};
+var plTypes = {
+ '!': {
+ open: '(?:(?!(?:',
+ close: '))[^/]*?)'
+ },
+ '?': {
+ open: '(?:',
+ close: ')?'
+ },
+ '+': {
+ open: '(?:',
+ close: ')+'
+ },
+ '*': {
+ open: '(?:',
+ close: ')*'
+ },
+ '@': {
+ open: '(?:',
+ close: ')'
+ }
+}; // any single thing other than /
+// don't need to escape / when using new RegExp()
+
+var qmark = '[^/]'; // * => any number of characters
+
+var star = qmark + '*?'; // ** when dots are allowed. Anything goes, except .. and .
+// not (^ or / followed by one or two dots followed by $ or /),
+// followed by anything, any number of times.
+
+var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?'; // not a ^ or / followed by a dot,
+// followed by anything, any number of times.
+
+var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?'; // characters that need to be escaped in RegExp.
+
+var reSpecials = charSet('().*{}+?[]^$\\!'); // "abc" -> { a:true, b:true, c:true }
+
+function charSet(s) {
+ return s.split('').reduce(function (set, c) {
+ set[c] = true;
+ return set;
+ }, {});
+} // normalizes slashes.
+
+
+var slashSplit = /\/+/;
+minimatch.filter = filter$1;
+
+function filter$1(pattern, options) {
+ options = options || {};
+ return function (p, i, list) {
+ return minimatch(p, pattern, options);
+ };
+}
+
+function ext(a, b) {
+ a = a || {};
+ b = b || {};
+ var t = {};
+ Object.keys(b).forEach(function (k) {
+ t[k] = b[k];
+ });
+ Object.keys(a).forEach(function (k) {
+ t[k] = a[k];
+ });
+ return t;
+}
+
+minimatch.defaults = function (def) {
+ if (!def || !Object.keys(def).length) return minimatch;
+ var orig = minimatch;
+
+ var m = function minimatch(p, pattern, options) {
+ return orig.minimatch(p, pattern, ext(def, options));
+ };
+
+ m.Minimatch = function Minimatch(pattern, options) {
+ return new orig.Minimatch(pattern, ext(def, options));
+ };
+
+ return m;
+};
+
+Minimatch.defaults = function (def) {
+ if (!def || !Object.keys(def).length) return Minimatch;
+ return minimatch.defaults(def).Minimatch;
+};
+
+function minimatch(p, pattern, options) {
+ if (typeof pattern !== 'string') {
+ throw new TypeError('glob pattern string required');
+ }
+
+ if (!options) options = {}; // shortcut: comments match nothing.
+
+ if (!options.nocomment && pattern.charAt(0) === '#') {
+ return false;
+ } // "" only matches ""
+
+
+ if (pattern.trim() === '') return p === '';
+ return new Minimatch(pattern, options).match(p);
+}
+
+function Minimatch(pattern, options) {
+ if (!(this instanceof Minimatch)) {
+ return new Minimatch(pattern, options);
+ }
+
+ if (typeof pattern !== 'string') {
+ throw new TypeError('glob pattern string required');
+ }
+
+ if (!options) options = {};
+ pattern = pattern.trim(); // windows support: need to use /, not \
+
+ if (path.sep !== '/') {
+ pattern = pattern.split(path.sep).join('/');
+ }
+
+ this.options = options;
+ this.set = [];
+ this.pattern = pattern;
+ this.regexp = null;
+ this.negate = false;
+ this.comment = false;
+ this.empty = false; // make the set of regexps etc.
+
+ this.make();
+}
+
+Minimatch.prototype.debug = function () {};
+
+Minimatch.prototype.make = make;
+
+function make() {
+ // don't do it more than once.
+ if (this._made) return;
+ var pattern = this.pattern;
+ var options = this.options; // empty patterns and comments match nothing.
+
+ if (!options.nocomment && pattern.charAt(0) === '#') {
+ this.comment = true;
+ return;
+ }
+
+ if (!pattern) {
+ this.empty = true;
+ return;
+ } // step 1: figure out negation, etc.
+
+
+ this.parseNegate(); // step 2: expand braces
+
+ var set = this.globSet = this.braceExpand();
+ if (options.debug) this.debug = console.error;
+ this.debug(this.pattern, set); // step 3: now we have a set, so turn each one into a series of path-portion
+ // matching patterns.
+ // These will be regexps, except in the case of "**", which is
+ // set to the GLOBSTAR object for globstar behavior,
+ // and will not contain any / characters
+
+ set = this.globParts = set.map(function (s) {
+ return s.split(slashSplit);
+ });
+ this.debug(this.pattern, set); // glob --> regexps
+
+ set = set.map(function (s, si, set) {
+ return s.map(this.parse, this);
+ }, this);
+ this.debug(this.pattern, set); // filter out everything that didn't compile properly.
+
+ set = set.filter(function (s) {
+ return s.indexOf(false) === -1;
+ });
+ this.debug(this.pattern, set);
+ this.set = set;
+}
+
+Minimatch.prototype.parseNegate = parseNegate;
+
+function parseNegate() {
+ var pattern = this.pattern;
+ var negate = false;
+ var options = this.options;
+ var negateOffset = 0;
+ if (options.nonegate) return;
+
+ for (var i = 0, l = pattern.length; i < l && pattern.charAt(i) === '!'; i++) {
+ negate = !negate;
+ negateOffset++;
+ }
+
+ if (negateOffset) this.pattern = pattern.substr(negateOffset);
+ this.negate = negate;
+} // Brace expansion:
+// a{b,c}d -> abd acd
+// a{b,}c -> abc ac
+// a{0..3}d -> a0d a1d a2d a3d
+// a{b,c{d,e}f}g -> abg acdfg acefg
+// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
+//
+// Invalid sets are not expanded.
+// a{2..}b -> a{2..}b
+// a{b}c -> a{b}c
+
+
+minimatch.braceExpand = function (pattern, options) {
+ return braceExpand(pattern, options);
+};
+
+Minimatch.prototype.braceExpand = braceExpand;
+
+function braceExpand(pattern, options) {
+ if (!options) {
+ if (this instanceof Minimatch) {
+ options = this.options;
+ } else {
+ options = {};
+ }
+ }
+
+ pattern = typeof pattern === 'undefined' ? this.pattern : pattern;
+
+ if (typeof pattern === 'undefined') {
+ throw new TypeError('undefined pattern');
+ }
+
+ if (options.nobrace || !pattern.match(/\{.*\}/)) {
+ // shortcut. no need to expand.
+ return [pattern];
+ }
+
+ return braceExpansion(pattern);
+} // parse a component of the expanded set.
+// At this point, no pattern may contain "/" in it
+// so we're going to return a 2d array, where each entry is the full
+// pattern, split on '/', and then turned into a regular expression.
+// A regexp is made at the end which joins each array with an
+// escaped /, and another full one which joins each regexp with |.
+//
+// Following the lead of Bash 4.1, note that "**" only has special meaning
+// when it is the *only* thing in a path portion. Otherwise, any series
+// of * is equivalent to a single *. Globstar behavior is enabled by
+// default, and can be disabled by setting options.noglobstar.
+
+
+Minimatch.prototype.parse = parse$1;
+var SUBPARSE = {};
+
+function parse$1(pattern, isSub) {
+ if (pattern.length > 1024 * 64) {
+ throw new TypeError('pattern is too long');
+ }
+
+ var options = this.options; // shortcuts
+
+ if (!options.noglobstar && pattern === '**') return GLOBSTAR;
+ if (pattern === '') return '';
+ var re = '';
+ var hasMagic = !!options.nocase;
+ var escaping = false; // ? => one single character
+
+ var patternListStack = [];
+ var negativeLists = [];
+ var stateChar;
+ var inClass = false;
+ var reClassStart = -1;
+ var classStart = -1; // . and .. never match anything that doesn't start with .,
+ // even when options.dot is set.
+
+ var patternStart = pattern.charAt(0) === '.' ? '' // anything
+ // not (start or / followed by . or .. followed by / or end)
+ : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' : '(?!\\.)';
+ var self = this;
+
+ function clearStateChar() {
+ if (stateChar) {
+ // we had some state-tracking character
+ // that wasn't consumed by this pass.
+ switch (stateChar) {
+ case '*':
+ re += star;
+ hasMagic = true;
+ break;
+
+ case '?':
+ re += qmark;
+ hasMagic = true;
+ break;
+
+ default:
+ re += '\\' + stateChar;
+ break;
+ }
+
+ self.debug('clearStateChar %j %j', stateChar, re);
+ stateChar = false;
+ }
+ }
+
+ for (var i = 0, len = pattern.length, c; i < len && (c = pattern.charAt(i)); i++) {
+ this.debug('%s\t%s %s %j', pattern, i, re, c); // skip over any that are escaped.
+
+ if (escaping && reSpecials[c]) {
+ re += '\\' + c;
+ escaping = false;
+ continue;
+ }
+
+ switch (c) {
+ case '/':
+ // completely not allowed, even escaped.
+ // Should already be path-split by now.
+ return false;
+
+ case '\\':
+ clearStateChar();
+ escaping = true;
+ continue;
+ // the various stateChar values
+ // for the "extglob" stuff.
+
+ case '?':
+ case '*':
+ case '+':
+ case '@':
+ case '!':
+ this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c); // all of those are literals inside a class, except that
+ // the glob [!a] means [^a] in regexp
+
+ if (inClass) {
+ this.debug(' in class');
+ if (c === '!' && i === classStart + 1) c = '^';
+ re += c;
+ continue;
+ } // if we already have a stateChar, then it means
+ // that there was something like ** or +? in there.
+ // Handle the stateChar, then proceed with this one.
+
+
+ self.debug('call clearStateChar %j', stateChar);
+ clearStateChar();
+ stateChar = c; // if extglob is disabled, then +(asdf|foo) isn't a thing.
+ // just clear the statechar *now*, rather than even diving into
+ // the patternList stuff.
+
+ if (options.noext) clearStateChar();
+ continue;
+
+ case '(':
+ if (inClass) {
+ re += '(';
+ continue;
+ }
+
+ if (!stateChar) {
+ re += '\\(';
+ continue;
+ }
+
+ patternListStack.push({
+ type: stateChar,
+ start: i - 1,
+ reStart: re.length,
+ open: plTypes[stateChar].open,
+ close: plTypes[stateChar].close
+ }); // negation is (?:(?!js)[^/]*)
+
+ re += stateChar === '!' ? '(?:(?!(?:' : '(?:';
+ this.debug('plType %j %j', stateChar, re);
+ stateChar = false;
+ continue;
+
+ case ')':
+ if (inClass || !patternListStack.length) {
+ re += '\\)';
+ continue;
+ }
+
+ clearStateChar();
+ hasMagic = true;
+ var pl = patternListStack.pop(); // negation is (?:(?!js)[^/]*)
+ // The others are (?:<pattern>)<type>
+
+ re += pl.close;
+
+ if (pl.type === '!') {
+ negativeLists.push(pl);
+ }
+
+ pl.reEnd = re.length;
+ continue;
+
+ case '|':
+ if (inClass || !patternListStack.length || escaping) {
+ re += '\\|';
+ escaping = false;
+ continue;
+ }
+
+ clearStateChar();
+ re += '|';
+ continue;
+ // these are mostly the same in regexp and glob
+
+ case '[':
+ // swallow any state-tracking char before the [
+ clearStateChar();
+
+ if (inClass) {
+ re += '\\' + c;
+ continue;
+ }
+
+ inClass = true;
+ classStart = i;
+ reClassStart = re.length;
+ re += c;
+ continue;
+
+ case ']':
+ // a right bracket shall lose its special
+ // meaning and represent itself in
+ // a bracket expression if it occurs
+ // first in the list. -- POSIX.2 2.8.3.2
+ if (i === classStart + 1 || !inClass) {
+ re += '\\' + c;
+ escaping = false;
+ continue;
+ } // handle the case where we left a class open.
+ // "[z-a]" is valid, equivalent to "\[z-a\]"
+
+
+ if (inClass) {
+ // split where the last [ was, make sure we don't have
+ // an invalid re. if so, re-walk the contents of the
+ // would-be class to re-translate any characters that
+ // were passed through as-is
+ // TODO: It would probably be faster to determine this
+ // without a try/catch and a new RegExp, but it's tricky
+ // to do safely. For now, this is safe and works.
+ var cs = pattern.substring(classStart + 1, i);
+
+ try {
+ RegExp('[' + cs + ']');
+ } catch (er) {
+ // not a valid class!
+ var sp = this.parse(cs, SUBPARSE);
+ re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]';
+ hasMagic = hasMagic || sp[1];
+ inClass = false;
+ continue;
+ }
+ } // finish up the class.
+
+
+ hasMagic = true;
+ inClass = false;
+ re += c;
+ continue;
+
+ default:
+ // swallow any state char that wasn't consumed
+ clearStateChar();
+
+ if (escaping) {
+ // no need
+ escaping = false;
+ } else if (reSpecials[c] && !(c === '^' && inClass)) {
+ re += '\\';
+ }
+
+ re += c;
+ } // switch
+
+ } // for
+ // handle the case where we left a class open.
+ // "[abc" is valid, equivalent to "\[abc"
+
+
+ if (inClass) {
+ // split where the last [ was, and escape it
+ // this is a huge pita. We now have to re-walk
+ // the contents of the would-be class to re-translate
+ // any characters that were passed through as-is
+ cs = pattern.substr(classStart + 1);
+ sp = this.parse(cs, SUBPARSE);
+ re = re.substr(0, reClassStart) + '\\[' + sp[0];
+ hasMagic = hasMagic || sp[1];
+ } // handle the case where we had a +( thing at the *end*
+ // of the pattern.
+ // each pattern list stack adds 3 chars, and we need to go through
+ // and escape any | chars that were passed through as-is for the regexp.
+ // Go through and escape them, taking care not to double-escape any
+ // | chars that were already escaped.
+
+
+ for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
+ var tail = re.slice(pl.reStart + pl.open.length);
+ this.debug('setting tail', re, pl); // maybe some even number of \, then maybe 1 \, followed by a |
+
+ tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) {
+ if (!$2) {
+ // the | isn't already escaped, so escape it.
+ $2 = '\\';
+ } // need to escape all those slashes *again*, without escaping the
+ // one that we need for escaping the | character. As it works out,
+ // escaping an even number of slashes can be done by simply repeating
+ // it exactly after itself. That's why this trick works.
+ //
+ // I am sorry that you have to see this.
+
+
+ return $1 + $1 + $2 + '|';
+ });
+ this.debug('tail=%j\n %s', tail, tail, pl, re);
+ var t = pl.type === '*' ? star : pl.type === '?' ? qmark : '\\' + pl.type;
+ hasMagic = true;
+ re = re.slice(0, pl.reStart) + t + '\\(' + tail;
+ } // handle trailing things that only matter at the very end.
+
+
+ clearStateChar();
+
+ if (escaping) {
+ // trailing \\
+ re += '\\\\';
+ } // only need to apply the nodot start if the re starts with
+ // something that could conceivably capture a dot
+
+
+ var addPatternStart = false;
+
+ switch (re.charAt(0)) {
+ case '.':
+ case '[':
+ case '(':
+ addPatternStart = true;
+ } // Hack to work around lack of negative lookbehind in JS
+ // A pattern like: *.!(x).!(y|z) needs to ensure that a name
+ // like 'a.xyz.yz' doesn't match. So, the first negative
+ // lookahead, has to look ALL the way ahead, to the end of
+ // the pattern.
+
+
+ for (var n = negativeLists.length - 1; n > -1; n--) {
+ var nl = negativeLists[n];
+ var nlBefore = re.slice(0, nl.reStart);
+ var nlFirst = re.slice(nl.reStart, nl.reEnd - 8);
+ var nlLast = re.slice(nl.reEnd - 8, nl.reEnd);
+ var nlAfter = re.slice(nl.reEnd);
+ nlLast += nlAfter; // Handle nested stuff like *(*.js|!(*.json)), where open parens
+ // mean that we should *not* include the ) in the bit that is considered
+ // "after" the negated section.
+
+ var openParensBefore = nlBefore.split('(').length - 1;
+ var cleanAfter = nlAfter;
+
+ for (i = 0; i < openParensBefore; i++) {
+ cleanAfter = cleanAfter.replace(/\)[+*?]?/, '');
+ }
+
+ nlAfter = cleanAfter;
+ var dollar = '';
+
+ if (nlAfter === '' && isSub !== SUBPARSE) {
+ dollar = '$';
+ }
+
+ var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast;
+ re = newRe;
+ } // if the re is not "" at this point, then we need to make sure
+ // it doesn't match against an empty path part.
+ // Otherwise a/* will match a/, which it should not.
+
+
+ if (re !== '' && hasMagic) {
+ re = '(?=.)' + re;
+ }
+
+ if (addPatternStart) {
+ re = patternStart + re;
+ } // parsing just a piece of a larger pattern.
+
+
+ if (isSub === SUBPARSE) {
+ return [re, hasMagic];
+ } // skip the regexp for non-magical patterns
+ // unescape anything in it, though, so that it'll be
+ // an exact match against a file etc.
+
+
+ if (!hasMagic) {
+ return globUnescape(pattern);
+ }
+
+ var flags = options.nocase ? 'i' : '';
+
+ try {
+ var regExp = new RegExp('^' + re + '$', flags);
+ } catch (er) {
+ // If it was an invalid regular expression, then it can't match
+ // anything. This trick looks for a character after the end of
+ // the string, which is of course impossible, except in multi-line
+ // mode, but it's not a /m regex.
+ return new RegExp('$.');
+ }
+
+ regExp._glob = pattern;
+ regExp._src = re;
+ return regExp;
+}
+
+minimatch.makeRe = function (pattern, options) {
+ return new Minimatch(pattern, options || {}).makeRe();
+};
+
+Minimatch.prototype.makeRe = makeRe;
+
+function makeRe() {
+ if (this.regexp || this.regexp === false) return this.regexp; // at this point, this.set is a 2d array of partial
+ // pattern strings, or "**".
+ //
+ // It's better to use .match(). This function shouldn't
+ // be used, really, but it's pretty convenient sometimes,
+ // when you just want to work with a regex.
+
+ var set = this.set;
+
+ if (!set.length) {
+ this.regexp = false;
+ return this.regexp;
+ }
+
+ var options = this.options;
+ var twoStar = options.noglobstar ? star : options.dot ? twoStarDot : twoStarNoDot;
+ var flags = options.nocase ? 'i' : '';
+ var re = set.map(function (pattern) {
+ return pattern.map(function (p) {
+ return p === GLOBSTAR ? twoStar : typeof p === 'string' ? regExpEscape(p) : p._src;
+ }).join('\\\/');
+ }).join('|'); // must match entire pattern
+ // ending in a * or ** will make it less strict.
+
+ re = '^(?:' + re + ')$'; // can match anything, as long as it's not this.
+
+ if (this.negate) re = '^(?!' + re + ').*$';
+
+ try {
+ this.regexp = new RegExp(re, flags);
+ } catch (ex) {
+ this.regexp = false;
+ }
+
+ return this.regexp;
+}
+
+minimatch.match = function (list, pattern, options) {
+ options = options || {};
+ var mm = new Minimatch(pattern, options);
+ list = list.filter(function (f) {
+ return mm.match(f);
+ });
+
+ if (mm.options.nonull && !list.length) {
+ list.push(pattern);
+ }
+
+ return list;
+};
+
+Minimatch.prototype.match = match;
+
+function match(f, partial) {
+ this.debug('match', f, this.pattern); // short-circuit in the case of busted things.
+ // comments, etc.
+
+ if (this.comment) return false;
+ if (this.empty) return f === '';
+ if (f === '/' && partial) return true;
+ var options = this.options; // windows: need to use /, not \
+
+ if (path.sep !== '/') {
+ f = f.split(path.sep).join('/');
+ } // treat the test path as a set of pathparts.
+
+
+ f = f.split(slashSplit);
+ this.debug(this.pattern, 'split', f); // just ONE of the pattern sets in this.set needs to match
+ // in order for it to be valid. If negating, then just one
+ // match means that we have failed.
+ // Either way, return on the first hit.
+
+ var set = this.set;
+ this.debug(this.pattern, 'set', set); // Find the basename of the path by looking for the last non-empty segment
+
+ var filename;
+ var i;
+
+ for (i = f.length - 1; i >= 0; i--) {
+ filename = f[i];
+ if (filename) break;
+ }
+
+ for (i = 0; i < set.length; i++) {
+ var pattern = set[i];
+ var file = f;
+
+ if (options.matchBase && pattern.length === 1) {
+ file = [filename];
+ }
+
+ var hit = this.matchOne(file, pattern, partial);
+
+ if (hit) {
+ if (options.flipNegate) return true;
+ return !this.negate;
+ }
+ } // didn't get any hits. this is success if it's a negative
+ // pattern, failure otherwise.
+
+
+ if (options.flipNegate) return false;
+ return this.negate;
+} // set partial to true to test if, for example,
+// "/a/b" matches the start of "/*/b/*/d"
+// Partial means, if you run out of file before you run
+// out of pattern, then that's fine, as long as all
+// the parts match.
+
+
+Minimatch.prototype.matchOne = function (file, pattern, partial) {
+ var options = this.options;
+ this.debug('matchOne', {
+ 'this': this,
+ file: file,
+ pattern: pattern
+ });
+ this.debug('matchOne', file.length, pattern.length);
+
+ for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
+ this.debug('matchOne loop');
+ var p = pattern[pi];
+ var f = file[fi];
+ this.debug(pattern, p, f); // should be impossible.
+ // some invalid regexp stuff in the set.
+
+ if (p === false) return false;
+
+ if (p === GLOBSTAR) {
+ this.debug('GLOBSTAR', [pattern, p, f]); // "**"
+ // a/**/b/**/c would match the following:
+ // a/b/x/y/z/c
+ // a/x/y/z/b/c
+ // a/b/x/b/x/c
+ // a/b/c
+ // To do this, take the rest of the pattern after
+ // the **, and see if it would match the file remainder.
+ // If so, return success.
+ // If not, the ** "swallows" a segment, and try again.
+ // This is recursively awful.
+ //
+ // a/**/b/**/c matching a/b/x/y/z/c
+ // - a matches a
+ // - doublestar
+ // - matchOne(b/x/y/z/c, b/**/c)
+ // - b matches b
+ // - doublestar
+ // - matchOne(x/y/z/c, c) -> no
+ // - matchOne(y/z/c, c) -> no
+ // - matchOne(z/c, c) -> no
+ // - matchOne(c, c) yes, hit
+
+ var fr = fi;
+ var pr = pi + 1;
+
+ if (pr === pl) {
+ this.debug('** at the end'); // a ** at the end will just swallow the rest.
+ // We have found a match.
+ // however, it will not swallow /.x, unless
+ // options.dot is set.
+ // . and .. are *never* matched by **, for explosively
+ // exponential reasons.
+
+ for (; fi < fl; fi++) {
+ if (file[fi] === '.' || file[fi] === '..' || !options.dot && file[fi].charAt(0) === '.') return false;
+ }
+
+ return true;
+ } // ok, let's see if we can swallow whatever we can.
+
+
+ while (fr < fl) {
+ var swallowee = file[fr];
+ this.debug('\nglobstar while', file, fr, pattern, pr, swallowee); // XXX remove this slice. Just pass the start index.
+
+ if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
+ this.debug('globstar found match!', fr, fl, swallowee); // found a match.
+
+ return true;
+ } else {
+ // can't swallow "." or ".." ever.
+ // can only swallow ".foo" when explicitly asked.
+ if (swallowee === '.' || swallowee === '..' || !options.dot && swallowee.charAt(0) === '.') {
+ this.debug('dot detected!', file, fr, pattern, pr);
+ break;
+ } // ** swallows a segment, and continue.
+
+
+ this.debug('globstar swallow a segment, and continue');
+ fr++;
+ }
+ } // no match was found.
+ // However, in partial mode, we can't say this is necessarily over.
+ // If there's more *pattern* left, then
+
+
+ if (partial) {
+ // ran out of file
+ this.debug('\n>>> no match, partial?', file, fr, pattern, pr);
+ if (fr === fl) return true;
+ }
+
+ return false;
+ } // something other than **
+ // non-magic patterns just have to match exactly
+ // patterns with magic have been turned into regexps.
+
+
+ var hit;
+
+ if (typeof p === 'string') {
+ if (options.nocase) {
+ hit = f.toLowerCase() === p.toLowerCase();
+ } else {
+ hit = f === p;
+ }
+
+ this.debug('string match', p, f, hit);
+ } else {
+ hit = f.match(p);
+ this.debug('pattern match', p, f, hit);
+ }
+
+ if (!hit) return false;
+ } // Note: ending in / means that we'll get a final ""
+ // at the end of the pattern. This can only match a
+ // corresponding "" at the end of the file.
+ // If the file ends in /, then it can only match a
+ // a pattern that ends in /, unless the pattern just
+ // doesn't have any more for it. But, a/b/ should *not*
+ // match "a/b/*", even though "" matches against the
+ // [^/]*? pattern, except in partial mode, where it might
+ // simply not be reached yet.
+ // However, a/b/ should still satisfy a/*
+ // now either we fell off the end of the pattern, or we're done.
+
+
+ if (fi === fl && pi === pl) {
+ // ran out of pattern and filename at the same time.
+ // an exact hit!
+ return true;
+ } else if (fi === fl) {
+ // ran out of file, but still had pattern left.
+ // this is ok if we're doing the match as part of
+ // a glob fs traversal.
+ return partial;
+ } else if (pi === pl) {
+ // ran out of pattern, still have file left.
+ // this is only acceptable if we're on the very last
+ // empty segment of a file with a trailing slash.
+ // a/* should match a/b/
+ var emptyFileEnd = fi === fl - 1 && file[fi] === '';
+ return emptyFileEnd;
+ } // should be unreachable.
+
+
+ throw new Error('wtf?');
+}; // replace stuff like \* with *
+
+
+function globUnescape(s) {
+ return s.replace(/\\(.)/g, '$1');
+}
+
+function regExpEscape(s) {
+ return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
+}
+
+var assert = true;
+var async_hooks = ">= 8";
+var buffer_ieee754 = "< 0.9.7";
+var buffer = true;
+var child_process = true;
+var cluster = true;
+var console$1 = true;
+var constants = true;
+var crypto = true;
+var _debug_agent = ">= 1 && < 8";
+var _debugger = "< 8";
+var dgram = true;
+var dns = true;
+var domain = true;
+var events = true;
+var freelist = "< 6";
+var fs = true;
+var _http_agent = ">= 0.11.1";
+var _http_client = ">= 0.11.1";
+var _http_common = ">= 0.11.1";
+var _http_incoming = ">= 0.11.1";
+var _http_outgoing = ">= 0.11.1";
+var _http_server = ">= 0.11.1";
+var http = true;
+var http2 = ">= 8.8";
+var https = true;
+var inspector = ">= 8.0.0";
+var _linklist = "< 8";
+var module$1 = true;
+var net = true;
+var os = true;
+var path$1 = true;
+var perf_hooks = ">= 8.5";
+var process$1 = ">= 1";
+var punycode = true;
+var querystring = true;
+var readline = true;
+var repl = true;
+var smalloc = ">= 0.11.5 && < 3";
+var _stream_duplex = ">= 0.9.4";
+var _stream_transform = ">= 0.9.4";
+var _stream_wrap = ">= 1.4.1";
+var _stream_passthrough = ">= 0.9.4";
+var _stream_readable = ">= 0.9.4";
+var _stream_writable = ">= 0.9.4";
+var stream = true;
+var string_decoder = true;
+var sys = true;
+var timers = true;
+var _tls_common = ">= 0.11.13";
+var _tls_legacy = ">= 0.11.3 && < 10";
+var _tls_wrap = ">= 0.11.3";
+var tls = true;
+var trace_events = ">= 10";
+var tty = true;
+var url = true;
+var util$1 = true;
+var v8 = ">= 1";
+var vm = true;
+var worker_threads = ">= 11.7";
+var zlib = true;
+var core$1 = {
+ assert: assert,
+ async_hooks: async_hooks,
+ buffer_ieee754: buffer_ieee754,
+ buffer: buffer,
+ child_process: child_process,
+ cluster: cluster,
+ console: console$1,
+ constants: constants,
+ crypto: crypto,
+ _debug_agent: _debug_agent,
+ _debugger: _debugger,
+ dgram: dgram,
+ dns: dns,
+ domain: domain,
+ events: events,
+ freelist: freelist,
+ fs: fs,
+ "fs/promises": ">= 10 && < 10.1",
+ _http_agent: _http_agent,
+ _http_client: _http_client,
+ _http_common: _http_common,
+ _http_incoming: _http_incoming,
+ _http_outgoing: _http_outgoing,
+ _http_server: _http_server,
+ http: http,
+ http2: http2,
+ https: https,
+ inspector: inspector,
+ _linklist: _linklist,
+ module: module$1,
+ net: net,
+ "node-inspect/lib/_inspect": ">= 7.6.0 && < 12",
+ "node-inspect/lib/internal/inspect_client": ">= 7.6.0 && < 12",
+ "node-inspect/lib/internal/inspect_repl": ">= 7.6.0 && < 12",
+ os: os,
+ path: path$1,
+ perf_hooks: perf_hooks,
+ process: process$1,
+ punycode: punycode,
+ querystring: querystring,
+ readline: readline,
+ repl: repl,
+ smalloc: smalloc,
+ _stream_duplex: _stream_duplex,
+ _stream_transform: _stream_transform,
+ _stream_wrap: _stream_wrap,
+ _stream_passthrough: _stream_passthrough,
+ _stream_readable: _stream_readable,
+ _stream_writable: _stream_writable,
+ stream: stream,
+ string_decoder: string_decoder,
+ sys: sys,
+ timers: timers,
+ _tls_common: _tls_common,
+ _tls_legacy: _tls_legacy,
+ _tls_wrap: _tls_wrap,
+ tls: tls,
+ trace_events: trace_events,
+ tty: tty,
+ url: url,
+ util: util$1,
+ "v8/tools/arguments": ">= 10 && < 12",
+ "v8/tools/codemap": [
+ ">= 4.4.0 && < 5",
+ ">= 5.2.0 && < 12"
+],
+ "v8/tools/consarray": [
+ ">= 4.4.0 && < 5",
+ ">= 5.2.0 && < 12"
+],
+ "v8/tools/csvparser": [
+ ">= 4.4.0 && < 5",
+ ">= 5.2.0 && < 12"
+],
+ "v8/tools/logreader": [
+ ">= 4.4.0 && < 5",
+ ">= 5.2.0 && < 12"
+],
+ "v8/tools/profile_view": [
+ ">= 4.4.0 && < 5",
+ ">= 5.2.0 && < 12"
+],
+ "v8/tools/splaytree": [
+ ">= 4.4.0 && < 5",
+ ">= 5.2.0 && < 12"
+],
+ v8: v8,
+ vm: vm,
+ worker_threads: worker_threads,
+ zlib: zlib
+};
+
+var core$2 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ assert: assert,
+ async_hooks: async_hooks,
+ buffer_ieee754: buffer_ieee754,
+ buffer: buffer,
+ child_process: child_process,
+ cluster: cluster,
+ console: console$1,
+ constants: constants,
+ crypto: crypto,
+ _debug_agent: _debug_agent,
+ _debugger: _debugger,
+ dgram: dgram,
+ dns: dns,
+ domain: domain,
+ events: events,
+ freelist: freelist,
+ fs: fs,
+ _http_agent: _http_agent,
+ _http_client: _http_client,
+ _http_common: _http_common,
+ _http_incoming: _http_incoming,
+ _http_outgoing: _http_outgoing,
+ _http_server: _http_server,
+ http: http,
+ http2: http2,
+ https: https,
+ inspector: inspector,
+ _linklist: _linklist,
+ module: module$1,
+ net: net,
+ os: os,
+ path: path$1,
+ perf_hooks: perf_hooks,
+ process: process$1,
+ punycode: punycode,
+ querystring: querystring,
+ readline: readline,
+ repl: repl,
+ smalloc: smalloc,
+ _stream_duplex: _stream_duplex,
+ _stream_transform: _stream_transform,
+ _stream_wrap: _stream_wrap,
+ _stream_passthrough: _stream_passthrough,
+ _stream_readable: _stream_readable,
+ _stream_writable: _stream_writable,
+ stream: stream,
+ string_decoder: string_decoder,
+ sys: sys,
+ timers: timers,
+ _tls_common: _tls_common,
+ _tls_legacy: _tls_legacy,
+ _tls_wrap: _tls_wrap,
+ tls: tls,
+ trace_events: trace_events,
+ tty: tty,
+ url: url,
+ util: util$1,
+ v8: v8,
+ vm: vm,
+ worker_threads: worker_threads,
+ zlib: zlib,
+ 'default': core$1
+});
+
+var data = getCjsExportFromNamespace(core$2);
+
+var current = process.versions && process.versions.node && process.versions.node.split('.') || [];
+
+function specifierIncluded(specifier) {
+ var parts = specifier.split(' ');
+ var op = parts.length > 1 ? parts[0] : '=';
+ var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.');
+
+ for (var i = 0; i < 3; ++i) {
+ var cur = Number(current[i] || 0);
+ var ver = Number(versionParts[i] || 0);
+
+ if (cur === ver) {
+ continue; // eslint-disable-line no-restricted-syntax, no-continue
+ }
+
+ if (op === '<') {
+ return cur < ver;
+ } else if (op === '>=') {
+ return cur >= ver;
+ } else {
+ return false;
+ }
+ }
+
+ return op === '>=';
+}
+
+function matchesRange(range) {
+ var specifiers = range.split(/ ?&& ?/);
+
+ if (specifiers.length === 0) {
+ return false;
+ }
+
+ for (var i = 0; i < specifiers.length; ++i) {
+ if (!specifierIncluded(specifiers[i])) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+function versionIncluded(specifierValue) {
+ if (typeof specifierValue === 'boolean') {
+ return specifierValue;
+ }
+
+ if (specifierValue && typeof specifierValue === 'object') {
+ for (var i = 0; i < specifierValue.length; ++i) {
+ if (matchesRange(specifierValue[i])) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ return matchesRange(specifierValue);
+}
+
+var core$3 = {};
+
+for (var mod in data) {
+ // eslint-disable-line no-restricted-syntax
+ if (Object.prototype.hasOwnProperty.call(data, mod)) {
+ core$3[mod] = versionIncluded(data[mod]);
+ }
+}
+
+var core_1 = core$3;
+
+var caller = function caller() {
+ // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
+ var origPrepareStackTrace = Error.prepareStackTrace;
+
+ Error.prepareStackTrace = function (_, stack) {
+ return stack;
+ };
+
+ var stack = new Error().stack;
+ Error.prepareStackTrace = origPrepareStackTrace;
+ return stack[2].getFileName();
+};
+
+var pathParse = createCommonjsModule(function (module) {
+
+ var isWindows = process.platform === 'win32'; // Regex to split a windows path into three parts: [*, device, slash,
+ // tail] windows-only
+
+ var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; // Regex to split the tail part of the above into [*, dir, basename, ext]
+
+ var splitTailRe = /^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/;
+ var win32 = {}; // Function to split a filename into [root, dir, basename, ext]
+
+ function win32SplitPath(filename) {
+ // Separate device+slash from tail
+ var result = splitDeviceRe.exec(filename),
+ device = (result[1] || '') + (result[2] || ''),
+ tail = result[3] || ''; // Split the tail into dir, basename and extension
+
+ var result2 = splitTailRe.exec(tail),
+ dir = result2[1],
+ basename = result2[2],
+ ext = result2[3];
+ return [device, dir, basename, ext];
+ }
+
+ win32.parse = function (pathString) {
+ if (typeof pathString !== 'string') {
+ throw new TypeError("Parameter 'pathString' must be a string, not " + typeof pathString);
+ }
+
+ var allParts = win32SplitPath(pathString);
+
+ if (!allParts || allParts.length !== 4) {
+ throw new TypeError("Invalid path '" + pathString + "'");
+ }
+
+ return {
+ root: allParts[0],
+ dir: allParts[0] + allParts[1].slice(0, -1),
+ base: allParts[2],
+ ext: allParts[3],
+ name: allParts[2].slice(0, allParts[2].length - allParts[3].length)
+ };
+ }; // Split a filename into [root, dir, basename, ext], unix version
+ // 'root' is just a slash, or nothing.
+
+
+ var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
+ var posix = {};
+
+ function posixSplitPath(filename) {
+ return splitPathRe.exec(filename).slice(1);
+ }
+
+ posix.parse = function (pathString) {
+ if (typeof pathString !== 'string') {
+ throw new TypeError("Parameter 'pathString' must be a string, not " + typeof pathString);
+ }
+
+ var allParts = posixSplitPath(pathString);
+
+ if (!allParts || allParts.length !== 4) {
+ throw new TypeError("Invalid path '" + pathString + "'");
+ }
+
+ allParts[1] = allParts[1] || '';
+ allParts[2] = allParts[2] || '';
+ allParts[3] = allParts[3] || '';
+ return {
+ root: allParts[0],
+ dir: allParts[0] + allParts[1].slice(0, -1),
+ base: allParts[2],
+ ext: allParts[3],
+ name: allParts[2].slice(0, allParts[2].length - allParts[3].length)
+ };
+ };
+
+ if (isWindows) module.exports = win32.parse;else
+ /* posix */
+ module.exports = posix.parse;
+ module.exports.posix = posix.parse;
+ module.exports.win32 = win32.parse;
+});
+var pathParse_1 = pathParse.posix;
+var pathParse_2 = pathParse.win32;
+
+var parse$2 = path$2.parse || pathParse;
+
+var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) {
+ var prefix = '/';
+
+ if (/^([A-Za-z]:)/.test(absoluteStart)) {
+ prefix = '';
+ } else if (/^\\\\/.test(absoluteStart)) {
+ prefix = '\\\\';
+ }
+
+ var paths = [absoluteStart];
+ var parsed = parse$2(absoluteStart);
+
+ while (parsed.dir !== paths[paths.length - 1]) {
+ paths.push(parsed.dir);
+ parsed = parse$2(parsed.dir);
+ }
+
+ return paths.reduce(function (dirs, aPath) {
+ return dirs.concat(modules.map(function (moduleDir) {
+ return path$2.resolve(prefix, aPath, moduleDir);
+ }));
+ }, []);
+};
+
+var nodeModulesPaths = function nodeModulesPaths(start, opts, request) {
+ var modules = opts && opts.moduleDirectory ? [].concat(opts.moduleDirectory) : ['node_modules'];
+
+ if (opts && typeof opts.paths === 'function') {
+ return opts.paths(request, start, function () {
+ return getNodeModulesDirs(start, modules);
+ }, opts);
+ }
+
+ var dirs = getNodeModulesDirs(start, modules);
+ return opts && opts.paths ? dirs.concat(opts.paths) : dirs;
+};
+
+var normalizeOptions$2 = function normalizeOptions(x, opts) {
+ /**
+ * This file is purposefully a passthrough. It's expected that third-party
+ * environments will override it at runtime in order to inject special logic
+ * into `resolve` (by manipulating the options). One such example is the PnP
+ * code path in Yarn.
+ */
+ return opts || {};
+};
+
+var defaultIsFile = function isFile(file, cb) {
+ fs$1.stat(file, function (err, stat) {
+ if (!err) {
+ return cb(null, stat.isFile() || stat.isFIFO());
+ }
+
+ if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
+ return cb(err);
+ });
+};
+
+var defaultIsDir = function isDirectory(dir, cb) {
+ fs$1.stat(dir, function (err, stat) {
+ if (!err) {
+ return cb(null, stat.isDirectory());
+ }
+
+ if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
+ return cb(err);
+ });
+};
+
+var maybeUnwrapSymlink = function maybeUnwrapSymlink(x, opts, cb) {
+ if (opts && opts.preserveSymlinks === false) {
+ fs$1.realpath(x, function (realPathErr, realPath) {
+ if (realPathErr && realPathErr.code !== 'ENOENT') cb(realPathErr);else cb(null, realPathErr ? x : realPath);
+ });
+ } else {
+ cb(null, x);
+ }
+};
+
+var async = function resolve(x, options, callback) {
+ var cb = callback;
+ var opts = options;
+
+ if (typeof options === 'function') {
+ cb = opts;
+ opts = {};
+ }
+
+ if (typeof x !== 'string') {
+ var err = new TypeError('Path must be a string.');
+ return process.nextTick(function () {
+ cb(err);
+ });
+ }
+
+ opts = normalizeOptions$2(x, opts);
+ var isFile = opts.isFile || defaultIsFile;
+ var isDirectory = opts.isDirectory || defaultIsDir;
+ var readFile = opts.readFile || fs$1.readFile;
+ var extensions = opts.extensions || ['.js'];
+ var basedir = opts.basedir || path$2.dirname(caller());
+ var parent = opts.filename || basedir;
+ opts.paths = opts.paths || []; // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
+
+ var absoluteStart = path$2.resolve(basedir);
+ maybeUnwrapSymlink(absoluteStart, opts, function (err, realStart) {
+ if (err) cb(err);else init(realStart);
+ });
+ var res;
+
+ function init(basedir) {
+ if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(x)) {
+ res = path$2.resolve(basedir, x);
+ if (x === '..' || x.slice(-1) === '/') res += '/';
+
+ if (/\/$/.test(x) && res === basedir) {
+ loadAsDirectory(res, opts.package, onfile);
+ } else loadAsFile(res, opts.package, onfile);
+ } else loadNodeModules(x, basedir, function (err, n, pkg) {
+ if (err) cb(err);else if (core_1[x]) return cb(null, x);else if (n) {
+ return maybeUnwrapSymlink(n, opts, function (err, realN) {
+ if (err) {
+ cb(err);
+ } else {
+ cb(null, realN, pkg);
+ }
+ });
+ } else {
+ var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
+ moduleError.code = 'MODULE_NOT_FOUND';
+ cb(moduleError);
+ }
+ });
+ }
+
+ function onfile(err, m, pkg) {
+ if (err) cb(err);else if (m) cb(null, m, pkg);else loadAsDirectory(res, function (err, d, pkg) {
+ if (err) cb(err);else if (d) {
+ maybeUnwrapSymlink(d, opts, function (err, realD) {
+ if (err) {
+ cb(err);
+ } else {
+ cb(null, realD, pkg);
+ }
+ });
+ } else {
+ var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
+ moduleError.code = 'MODULE_NOT_FOUND';
+ cb(moduleError);
+ }
+ });
+ }
+
+ function loadAsFile(x, thePackage, callback) {
+ var loadAsFilePackage = thePackage;
+ var cb = callback;
+
+ if (typeof loadAsFilePackage === 'function') {
+ cb = loadAsFilePackage;
+ loadAsFilePackage = undefined;
+ }
+
+ var exts = [''].concat(extensions);
+ load(exts, x, loadAsFilePackage);
+
+ function load(exts, x, loadPackage) {
+ if (exts.length === 0) return cb(null, undefined, loadPackage);
+ var file = x + exts[0];
+ var pkg = loadPackage;
+ if (pkg) onpkg(null, pkg);else loadpkg(path$2.dirname(file), onpkg);
+
+ function onpkg(err, pkg_, dir) {
+ pkg = pkg_;
+ if (err) return cb(err);
+
+ if (dir && pkg && opts.pathFilter) {
+ var rfile = path$2.relative(dir, file);
+ var rel = rfile.slice(0, rfile.length - exts[0].length);
+ var r = opts.pathFilter(pkg, x, rel);
+ if (r) return load([''].concat(extensions.slice()), path$2.resolve(dir, r), pkg);
+ }
+
+ isFile(file, onex);
+ }
+
+ function onex(err, ex) {
+ if (err) return cb(err);
+ if (ex) return cb(null, file, pkg);
+ load(exts.slice(1), x, pkg);
+ }
+ }
+ }
+
+ function loadpkg(dir, cb) {
+ if (dir === '' || dir === '/') return cb(null);
+
+ if (process.platform === 'win32' && /^\w:[/\\]*$/.test(dir)) {
+ return cb(null);
+ }
+
+ if (/[/\\]node_modules[/\\]*$/.test(dir)) return cb(null);
+ var pkgfile = path$2.join(dir, 'package.json');
+ isFile(pkgfile, function (err, ex) {
+ // on err, ex is false
+ if (!ex) return loadpkg(path$2.dirname(dir), cb);
+ readFile(pkgfile, function (err, body) {
+ if (err) cb(err);
+
+ try {
+ var pkg = JSON.parse(body);
+ } catch (jsonErr) {}
+
+ if (pkg && opts.packageFilter) {
+ pkg = opts.packageFilter(pkg, pkgfile);
+ }
+
+ cb(null, pkg, dir);
+ });
+ });
+ }
+
+ function loadAsDirectory(x, loadAsDirectoryPackage, callback) {
+ var cb = callback;
+ var fpkg = loadAsDirectoryPackage;
+
+ if (typeof fpkg === 'function') {
+ cb = fpkg;
+ fpkg = opts.package;
+ }
+
+ var pkgfile = path$2.join(x, 'package.json');
+ isFile(pkgfile, function (err, ex) {
+ if (err) return cb(err);
+ if (!ex) return loadAsFile(path$2.join(x, 'index'), fpkg, cb);
+ readFile(pkgfile, function (err, body) {
+ if (err) return cb(err);
+
+ try {
+ var pkg = JSON.parse(body);
+ } catch (jsonErr) {}
+
+ if (opts.packageFilter) {
+ pkg = opts.packageFilter(pkg, pkgfile);
+ }
+
+ if (pkg.main) {
+ if (typeof pkg.main !== 'string') {
+ var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string');
+ mainError.code = 'INVALID_PACKAGE_MAIN';
+ return cb(mainError);
+ }
+
+ if (pkg.main === '.' || pkg.main === './') {
+ pkg.main = 'index';
+ }
+
+ loadAsFile(path$2.resolve(x, pkg.main), pkg, function (err, m, pkg) {
+ if (err) return cb(err);
+ if (m) return cb(null, m, pkg);
+ if (!pkg) return loadAsFile(path$2.join(x, 'index'), pkg, cb);
+ var dir = path$2.resolve(x, pkg.main);
+ loadAsDirectory(dir, pkg, function (err, n, pkg) {
+ if (err) return cb(err);
+ if (n) return cb(null, n, pkg);
+ loadAsFile(path$2.join(x, 'index'), pkg, cb);
+ });
+ });
+ return;
+ }
+
+ loadAsFile(path$2.join(x, '/index'), pkg, cb);
+ });
+ });
+ }
+
+ function processDirs(cb, dirs) {
+ if (dirs.length === 0) return cb(null, undefined);
+ var dir = dirs[0];
+ isDirectory(dir, isdir);
+
+ function isdir(err, isdir) {
+ if (err) return cb(err);
+ if (!isdir) return processDirs(cb, dirs.slice(1));
+ var file = path$2.join(dir, x);
+ loadAsFile(file, opts.package, onfile);
+ }
+
+ function onfile(err, m, pkg) {
+ if (err) return cb(err);
+ if (m) return cb(null, m, pkg);
+ loadAsDirectory(path$2.join(dir, x), opts.package, ondir);
+ }
+
+ function ondir(err, n, pkg) {
+ if (err) return cb(err);
+ if (n) return cb(null, n, pkg);
+ processDirs(cb, dirs.slice(1));
+ }
+ }
+
+ function loadNodeModules(x, start, cb) {
+ processDirs(cb, nodeModulesPaths(start, opts, x));
+ }
+};
+
+var defaultIsFile$1 = function isFile(file) {
+ try {
+ var stat = fs$1.statSync(file);
+ } catch (e) {
+ if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
+ throw e;
+ }
+
+ return stat.isFile() || stat.isFIFO();
+};
+
+var defaultIsDir$1 = function isDirectory(dir) {
+ try {
+ var stat = fs$1.statSync(dir);
+ } catch (e) {
+ if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
+ throw e;
+ }
+
+ return stat.isDirectory();
+};
+
+var maybeUnwrapSymlink$1 = function maybeUnwrapSymlink(x, opts) {
+ if (opts && opts.preserveSymlinks === false) {
+ try {
+ return fs$1.realpathSync(x);
+ } catch (realPathErr) {
+ if (realPathErr.code !== 'ENOENT') {
+ throw realPathErr;
+ }
+ }
+ }
+
+ return x;
+};
+
+var sync = function sync(x, options) {
+ if (typeof x !== 'string') {
+ throw new TypeError('Path must be a string.');
+ }
+
+ var opts = normalizeOptions$2(x, options);
+ var isFile = opts.isFile || defaultIsFile$1;
+ var readFileSync = opts.readFileSync || fs$1.readFileSync;
+ var isDirectory = opts.isDirectory || defaultIsDir$1;
+ var extensions = opts.extensions || ['.js'];
+ var basedir = opts.basedir || path$2.dirname(caller());
+ var parent = opts.filename || basedir;
+ opts.paths = opts.paths || []; // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
+
+ var absoluteStart = maybeUnwrapSymlink$1(path$2.resolve(basedir), opts);
+
+ if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(x)) {
+ var res = path$2.resolve(absoluteStart, x);
+ if (x === '..' || x.slice(-1) === '/') res += '/';
+ var m = loadAsFileSync(res) || loadAsDirectorySync(res);
+ if (m) return maybeUnwrapSymlink$1(m, opts);
+ } else if (core_1[x]) {
+ return x;
+ } else {
+ var n = loadNodeModulesSync(x, absoluteStart);
+ if (n) return maybeUnwrapSymlink$1(n, opts);
+ }
+
+ if (core_1[x]) return x;
+ var err = new Error("Cannot find module '" + x + "' from '" + parent + "'");
+ err.code = 'MODULE_NOT_FOUND';
+ throw err;
+
+ function loadAsFileSync(x) {
+ var pkg = loadpkg(path$2.dirname(x));
+
+ if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) {
+ var rfile = path$2.relative(pkg.dir, x);
+ var r = opts.pathFilter(pkg.pkg, x, rfile);
+
+ if (r) {
+ x = path$2.resolve(pkg.dir, r); // eslint-disable-line no-param-reassign
+ }
+ }
+
+ if (isFile(x)) {
+ return x;
+ }
+
+ for (var i = 0; i < extensions.length; i++) {
+ var file = x + extensions[i];
+
+ if (isFile(file)) {
+ return file;
+ }
+ }
+ }
+
+ function loadpkg(dir) {
+ if (dir === '' || dir === '/') return;
+
+ if (process.platform === 'win32' && /^\w:[/\\]*$/.test(dir)) {
+ return;
+ }
+
+ if (/[/\\]node_modules[/\\]*$/.test(dir)) return;
+ var pkgfile = path$2.join(dir, 'package.json');
+
+ if (!isFile(pkgfile)) {
+ return loadpkg(path$2.dirname(dir));
+ }
+
+ var body = readFileSync(pkgfile);
+
+ try {
+ var pkg = JSON.parse(body);
+ } catch (jsonErr) {}
+
+ if (pkg && opts.packageFilter) {
+ pkg = opts.packageFilter(pkg, dir);
+ }
+
+ return {
+ pkg: pkg,
+ dir: dir
+ };
+ }
+
+ function loadAsDirectorySync(x) {
+ var pkgfile = path$2.join(x, '/package.json');
+
+ if (isFile(pkgfile)) {
+ try {
+ var body = readFileSync(pkgfile, 'UTF8');
+ var pkg = JSON.parse(body);
+ } catch (e) {}
+
+ if (opts.packageFilter) {
+ pkg = opts.packageFilter(pkg, x);
+ }
+
+ if (pkg.main) {
+ if (typeof pkg.main !== 'string') {
+ var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string');
+ mainError.code = 'INVALID_PACKAGE_MAIN';
+ throw mainError;
+ }
+
+ if (pkg.main === '.' || pkg.main === './') {
+ pkg.main = 'index';
+ }
+
+ try {
+ var m = loadAsFileSync(path$2.resolve(x, pkg.main));
+ if (m) return m;
+ var n = loadAsDirectorySync(path$2.resolve(x, pkg.main));
+ if (n) return n;
+ } catch (e) {}
+ }
+ }
+
+ return loadAsFileSync(path$2.join(x, '/index'));
+ }
+
+ function loadNodeModulesSync(x, start) {
+ var dirs = nodeModulesPaths(start, opts, x);
+
+ for (var i = 0; i < dirs.length; i++) {
+ var dir = dirs[i];
+
+ if (isDirectory(dir)) {
+ var m = loadAsFileSync(path$2.join(dir, '/', x));
+ if (m) return m;
+ var n = loadAsDirectorySync(path$2.join(dir, '/', x));
+ if (n) return n;
+ }
+ }
+ }
+};
+
+var resolve = createCommonjsModule(function (module, exports) {
+ async.core = core_1;
+
+ async.isCore = function isCore(x) {
+ return core_1[x];
+ };
+
+ async.sync = sync;
+ module.exports = async;
+});
+
+var mimicFn = function mimicFn(to, from) {
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = Reflect.ownKeys(from)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var prop = _step.value;
+ Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop));
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return to;
+};
+
+var mimicFn_1 = mimicFn; // TODO: Remove this for the next major release
+
+var default_1$4 = mimicFn;
+mimicFn_1.default = default_1$4;
+
+var isPromise = function isPromise(input) {
+ return input instanceof Promise || input !== null && typeof input === 'object' && typeof input.then === 'function' && typeof input.catch === 'function';
+};
+
+var pIsPromise = isPromise; // TODO: Remove this for the next major release
+
+var default_1$5 = isPromise;
+pIsPromise.default = default_1$5;
+
+var pDefer = function pDefer() {
+ var ret = {};
+ ret.promise = new Promise(function (resolve, reject) {
+ ret.resolve = resolve;
+ ret.reject = reject;
+ });
+ return ret;
+};
+
+var dist = createCommonjsModule(function (module, exports) {
+
+ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) {
+ try {
+ step(generator.next(value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function rejected(value) {
+ try {
+ step(generator["throw"](value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function step(result) {
+ result.done ? resolve(result.value) : new P(function (resolve) {
+ resolve(result.value);
+ }).then(fulfilled, rejected);
+ }
+
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ };
+
+ var __importDefault = this && this.__importDefault || function (mod) {
+ return mod && mod.__esModule ? mod : {
+ "default": mod
+ };
+ };
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var p_defer_1 = __importDefault(pDefer);
+
+ function mapAgeCleaner(map) {
+ var _this = this;
+
+ var property = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'maxAge';
+ var processingKey;
+ var processingTimer;
+ var processingDeferred;
+
+ var cleanup = function cleanup() {
+ return __awaiter(_this, void 0, void 0,
+ /*#__PURE__*/
+ regeneratorRuntime.mark(function _callee2() {
+ var _this2 = this;
+
+ var setupTimer, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, entry;
+
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
+ while (1) {
+ switch (_context2.prev = _context2.next) {
+ case 0:
+ if (!(processingKey !== undefined)) {
+ _context2.next = 2;
+ break;
+ }
+
+ return _context2.abrupt("return");
+
+ case 2:
+ setupTimer = function setupTimer(item) {
+ return __awaiter(_this2, void 0, void 0,
+ /*#__PURE__*/
+ regeneratorRuntime.mark(function _callee() {
+ var delay;
+ return regeneratorRuntime.wrap(function _callee$(_context) {
+ while (1) {
+ switch (_context.prev = _context.next) {
+ case 0:
+ processingDeferred = p_defer_1.default();
+ delay = item[1][property] - Date.now();
+
+ if (!(delay <= 0)) {
+ _context.next = 6;
+ break;
+ }
+
+ // Remove the item immediately if the delay is equal to or below 0
+ map.delete(item[0]);
+ processingDeferred.resolve();
+ return _context.abrupt("return");
+
+ case 6:
+ // Keep track of the current processed key
+ processingKey = item[0];
+ processingTimer = setTimeout(function () {
+ // Remove the item when the timeout fires
+ map.delete(item[0]);
+
+ if (processingDeferred) {
+ processingDeferred.resolve();
+ }
+ }, delay); // tslint:disable-next-line:strict-type-predicates
+
+ if (typeof processingTimer.unref === 'function') {
+ // Don't hold up the process from exiting
+ processingTimer.unref();
+ }
+
+ return _context.abrupt("return", processingDeferred.promise);
+
+ case 10:
+ case "end":
+ return _context.stop();
+ }
+ }
+ }, _callee);
+ }));
+ };
+
+ _context2.prev = 3;
+ _iteratorNormalCompletion = true;
+ _didIteratorError = false;
+ _iteratorError = undefined;
+ _context2.prev = 7;
+ _iterator = map[Symbol.iterator]();
+
+ case 9:
+ if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
+ _context2.next = 16;
+ break;
+ }
+
+ entry = _step.value;
+ _context2.next = 13;
+ return setupTimer(entry);
+
+ case 13:
+ _iteratorNormalCompletion = true;
+ _context2.next = 9;
+ break;
+
+ case 16:
+ _context2.next = 22;
+ break;
+
+ case 18:
+ _context2.prev = 18;
+ _context2.t0 = _context2["catch"](7);
+ _didIteratorError = true;
+ _iteratorError = _context2.t0;
+
+ case 22:
+ _context2.prev = 22;
+ _context2.prev = 23;
+
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+
+ case 25:
+ _context2.prev = 25;
+
+ if (!_didIteratorError) {
+ _context2.next = 28;
+ break;
+ }
+
+ throw _iteratorError;
+
+ case 28:
+ return _context2.finish(25);
+
+ case 29:
+ return _context2.finish(22);
+
+ case 30:
+ _context2.next = 34;
+ break;
+
+ case 32:
+ _context2.prev = 32;
+ _context2.t1 = _context2["catch"](3);
+
+ case 34:
+ processingKey = undefined;
+
+ case 35:
+ case "end":
+ return _context2.stop();
+ }
+ }
+ }, _callee2, null, [[3, 32], [7, 18, 22, 30], [23,, 25, 29]]);
+ }));
+ };
+
+ var reset = function reset() {
+ processingKey = undefined;
+
+ if (processingTimer !== undefined) {
+ clearTimeout(processingTimer);
+ processingTimer = undefined;
+ }
+
+ if (processingDeferred !== undefined) {
+ // tslint:disable-line:early-exit
+ processingDeferred.reject(undefined);
+ processingDeferred = undefined;
+ }
+ };
+
+ var originalSet = map.set.bind(map);
+
+ map.set = function (key, value) {
+ if (map.has(key)) {
+ // If the key already exist, remove it so we can add it back at the end of the map.
+ map.delete(key);
+ } // Call the original `map.set`
+
+
+ var result = originalSet(key, value); // If we are already processing a key and the key added is the current processed key, stop processing it
+
+ if (processingKey && processingKey === key) {
+ reset();
+ } // Always run the cleanup method in case it wasn't started yet
+
+
+ cleanup(); // tslint:disable-line:no-floating-promises
+
+ return result;
+ };
+
+ cleanup(); // tslint:disable-line:no-floating-promises
+
+ return map;
+ }
+
+ exports.default = mapAgeCleaner; // Add support for CJS
+
+ module.exports = mapAgeCleaner;
+ module.exports.default = mapAgeCleaner;
+});
+unwrapExports(dist);
+
+var cacheStore = new WeakMap();
+
+var defaultCacheKey = function defaultCacheKey() {
+ for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {
+ arguments_[_key] = arguments[_key];
+ }
+
+ if (arguments_.length === 0) {
+ return '__defaultKey';
+ }
+
+ if (arguments_.length === 1) {
+ var firstArgument = arguments_[0];
+ var isObject = typeof firstArgument === 'object' && firstArgument !== null;
+ var isPrimitive = !isObject;
+
+ if (isPrimitive) {
+ return firstArgument;
+ }
+ }
+
+ return JSON.stringify(arguments_);
+};
+
+var mem = function mem(fn) {
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+ _ref$cacheKey = _ref.cacheKey,
+ cacheKey = _ref$cacheKey === void 0 ? defaultCacheKey : _ref$cacheKey,
+ _ref$cache = _ref.cache,
+ cache = _ref$cache === void 0 ? new Map() : _ref$cache,
+ _ref$cachePromiseReje = _ref.cachePromiseRejection,
+ cachePromiseRejection = _ref$cachePromiseReje === void 0 ? true : _ref$cachePromiseReje,
+ maxAge = _ref.maxAge;
+
+ if (typeof maxAge === 'number') {
+ dist(cache);
+ }
+
+ var memoized = function memoized() {
+ for (var _len2 = arguments.length, arguments_ = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+ arguments_[_key2] = arguments[_key2];
+ }
+
+ var key = cacheKey.apply(void 0, arguments_);
+
+ if (cache.has(key)) {
+ return cache.get(key).data;
+ }
+
+ var cacheItem = fn.apply(this, arguments_);
+ cache.set(key, {
+ data: cacheItem,
+ maxAge: maxAge ? Date.now() + maxAge : Infinity
+ });
+
+ if (pIsPromise(cacheItem) && cachePromiseRejection === false) {
+ cacheItem.catch(function () {
+ return cache.delete(key);
+ });
+ }
+
+ return cacheItem;
+ };
+
+ try {
+ // The below call will throw in some host environments
+ // See https://github.com/sindresorhus/mimic-fn/issues/10
+ mimicFn_1(memoized, fn);
+ } catch (_) {}
+
+ cacheStore.set(memoized, cache);
+ return memoized;
+};
+
+var mem_1 = mem;
+
+var clear = function clear(fn) {
+ var cache = cacheStore.get(fn);
+
+ if (cache && typeof cache.clear === 'function') {
+ cache.clear();
+ }
+};
+mem_1.clear = clear;
+
+var semver$1 = createCommonjsModule(function (module, exports) {
+ exports = module.exports = SemVer; // The debug function is excluded entirely from the minified version.
+
+ /* nomin */
+
+ var debug;
+ /* nomin */
+
+ if (typeof process === 'object' &&
+ /* nomin */
+ process.env &&
+ /* nomin */
+ process.env.NODE_DEBUG &&
+ /* nomin */
+ /\bsemver\b/i.test(process.env.NODE_DEBUG))
+ /* nomin */
+ debug = function debug() {
+ /* nomin */
+ var args = Array.prototype.slice.call(arguments, 0);
+ /* nomin */
+
+ args.unshift('SEMVER');
+ /* nomin */
+
+ console.log.apply(console, args);
+ /* nomin */
+ };
+ /* nomin */
+ else
+ /* nomin */
+ debug = function debug() {}; // Note: this is the semver.org version of the spec that it implements
+ // Not necessarily the package version of this code.
+
+ exports.SEMVER_SPEC_VERSION = '2.0.0';
+ var MAX_LENGTH = 256;
+ var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; // Max safe segment length for coercion.
+
+ var MAX_SAFE_COMPONENT_LENGTH = 16; // The actual regexps go on exports.re
+
+ var re = exports.re = [];
+ var src = exports.src = [];
+ var R = 0; // The following Regular Expressions can be used for tokenizing,
+ // validating, and parsing SemVer version strings.
+ // ## Numeric Identifier
+ // A single `0`, or a non-zero digit followed by zero or more digits.
+
+ var NUMERICIDENTIFIER = R++;
+ src[NUMERICIDENTIFIER] = '0|[1-9]\\d*';
+ var NUMERICIDENTIFIERLOOSE = R++;
+ src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'; // ## Non-numeric Identifier
+ // Zero or more digits, followed by a letter or hyphen, and then zero or
+ // more letters, digits, or hyphens.
+
+ var NONNUMERICIDENTIFIER = R++;
+ src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'; // ## Main Version
+ // Three dot-separated numeric identifiers.
+
+ var MAINVERSION = R++;
+ src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' + '(' + src[NUMERICIDENTIFIER] + ')\\.' + '(' + src[NUMERICIDENTIFIER] + ')';
+ var MAINVERSIONLOOSE = R++;
+ src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[NUMERICIDENTIFIERLOOSE] + ')'; // ## Pre-release Version Identifier
+ // A numeric identifier, or a non-numeric identifier.
+
+ var PRERELEASEIDENTIFIER = R++;
+ src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + '|' + src[NONNUMERICIDENTIFIER] + ')';
+ var PRERELEASEIDENTIFIERLOOSE = R++;
+ src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + '|' + src[NONNUMERICIDENTIFIER] + ')'; // ## Pre-release Version
+ // Hyphen, followed by one or more dot-separated pre-release version
+ // identifiers.
+
+ var PRERELEASE = R++;
+ src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))';
+ var PRERELEASELOOSE = R++;
+ src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'; // ## Build Metadata Identifier
+ // Any combination of digits, letters, or hyphens.
+
+ var BUILDIDENTIFIER = R++;
+ src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'; // ## Build Metadata
+ // Plus sign, followed by one or more period-separated build metadata
+ // identifiers.
+
+ var BUILD = R++;
+ src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] + '(?:\\.' + src[BUILDIDENTIFIER] + ')*))'; // ## Full Version String
+ // A main version, followed optionally by a pre-release version and
+ // build metadata.
+ // Note that the only major, minor, patch, and pre-release sections of
+ // the version string are capturing groups. The build metadata is not a
+ // capturing group, because it should not ever be used in version
+ // comparison.
+
+ var FULL = R++;
+ var FULLPLAIN = 'v?' + src[MAINVERSION] + src[PRERELEASE] + '?' + src[BUILD] + '?';
+ src[FULL] = '^' + FULLPLAIN + '$'; // like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+ // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+ // common in the npm registry.
+
+ var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] + src[PRERELEASELOOSE] + '?' + src[BUILD] + '?';
+ var LOOSE = R++;
+ src[LOOSE] = '^' + LOOSEPLAIN + '$';
+ var GTLT = R++;
+ src[GTLT] = '((?:<|>)?=?)'; // Something like "2.*" or "1.2.x".
+ // Note that "x.x" is a valid xRange identifer, meaning "any version"
+ // Only the first item is strictly required.
+
+ var XRANGEIDENTIFIERLOOSE = R++;
+ src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*';
+ var XRANGEIDENTIFIER = R++;
+ src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*';
+ var XRANGEPLAIN = R++;
+ src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + '(?:' + src[PRERELEASE] + ')?' + src[BUILD] + '?' + ')?)?';
+ var XRANGEPLAINLOOSE = R++;
+ src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:' + src[PRERELEASELOOSE] + ')?' + src[BUILD] + '?' + ')?)?';
+ var XRANGE = R++;
+ src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$';
+ var XRANGELOOSE = R++;
+ src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'; // Coercion.
+ // Extract anything that could conceivably be a part of a valid semver
+
+ var COERCE = R++;
+ src[COERCE] = '(?:^|[^\\d])' + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:$|[^\\d])'; // Tilde ranges.
+ // Meaning is "reasonably at or greater than"
+
+ var LONETILDE = R++;
+ src[LONETILDE] = '(?:~>?)';
+ var TILDETRIM = R++;
+ src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+';
+ re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g');
+ var tildeTrimReplace = '$1~';
+ var TILDE = R++;
+ src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$';
+ var TILDELOOSE = R++;
+ src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'; // Caret ranges.
+ // Meaning is "at least and backwards compatible with"
+
+ var LONECARET = R++;
+ src[LONECARET] = '(?:\\^)';
+ var CARETTRIM = R++;
+ src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+';
+ re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g');
+ var caretTrimReplace = '$1^';
+ var CARET = R++;
+ src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$';
+ var CARETLOOSE = R++;
+ src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'; // A simple gt/lt/eq thing, or just "" to indicate "any version"
+
+ var COMPARATORLOOSE = R++;
+ src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$';
+ var COMPARATOR = R++;
+ src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$'; // An expression to strip any whitespace between the gtlt and the thing
+ // it modifies, so that `> 1.2.3` ==> `>1.2.3`
+
+ var COMPARATORTRIM = R++;
+ src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] + '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'; // this one has to use the /g flag
+
+ re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g');
+ var comparatorTrimReplace = '$1$2$3'; // Something like `1.2.3 - 1.2.4`
+ // Note that these all use the loose form, because they'll be
+ // checked against either the strict or loose comparator form
+ // later.
+
+ var HYPHENRANGE = R++;
+ src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' + '\\s+-\\s+' + '(' + src[XRANGEPLAIN] + ')' + '\\s*$';
+ var HYPHENRANGELOOSE = R++;
+ src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' + '\\s+-\\s+' + '(' + src[XRANGEPLAINLOOSE] + ')' + '\\s*$'; // Star ranges basically just allow anything at all.
+
+ var STAR = R++;
+ src[STAR] = '(<|>)?=?\\s*\\*'; // Compile to actual regexp objects.
+ // All are flag-free, unless they were created above with a flag.
+
+ for (var i = 0; i < R; i++) {
+ debug(i, src[i]);
+ if (!re[i]) re[i] = new RegExp(src[i]);
+ }
+
+ exports.parse = parse;
+
+ function parse(version, options) {
+ if (!options || typeof options !== 'object') options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ if (version instanceof SemVer) return version;
+ if (typeof version !== 'string') return null;
+ if (version.length > MAX_LENGTH) return null;
+ var r = options.loose ? re[LOOSE] : re[FULL];
+ if (!r.test(version)) return null;
+
+ try {
+ return new SemVer(version, options);
+ } catch (er) {
+ return null;
+ }
+ }
+
+ exports.valid = valid;
+
+ function valid(version, options) {
+ var v = parse(version, options);
+ return v ? v.version : null;
+ }
+
+ exports.clean = clean;
+
+ function clean(version, options) {
+ var s = parse(version.trim().replace(/^[=v]+/, ''), options);
+ return s ? s.version : null;
+ }
+
+ exports.SemVer = SemVer;
+
+ function SemVer(version, options) {
+ if (!options || typeof options !== 'object') options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+
+ if (version instanceof SemVer) {
+ if (version.loose === options.loose) return version;else version = version.version;
+ } else if (typeof version !== 'string') {
+ throw new TypeError('Invalid Version: ' + version);
+ }
+
+ if (version.length > MAX_LENGTH) throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters');
+ if (!(this instanceof SemVer)) return new SemVer(version, options);
+ debug('SemVer', version, options);
+ this.options = options;
+ this.loose = !!options.loose;
+ var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL]);
+ if (!m) throw new TypeError('Invalid Version: ' + version);
+ this.raw = version; // these are actually numbers
+
+ this.major = +m[1];
+ this.minor = +m[2];
+ this.patch = +m[3];
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) throw new TypeError('Invalid major version');
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) throw new TypeError('Invalid minor version');
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) throw new TypeError('Invalid patch version'); // numberify any prerelease numeric ids
+
+ if (!m[4]) this.prerelease = [];else this.prerelease = m[4].split('.').map(function (id) {
+ if (/^[0-9]+$/.test(id)) {
+ var num = +id;
+ if (num >= 0 && num < MAX_SAFE_INTEGER) return num;
+ }
+
+ return id;
+ });
+ this.build = m[5] ? m[5].split('.') : [];
+ this.format();
+ }
+
+ SemVer.prototype.format = function () {
+ this.version = this.major + '.' + this.minor + '.' + this.patch;
+ if (this.prerelease.length) this.version += '-' + this.prerelease.join('.');
+ return this.version;
+ };
+
+ SemVer.prototype.toString = function () {
+ return this.version;
+ };
+
+ SemVer.prototype.compare = function (other) {
+ debug('SemVer.compare', this.version, this.options, other);
+ if (!(other instanceof SemVer)) other = new SemVer(other, this.options);
+ return this.compareMain(other) || this.comparePre(other);
+ };
+
+ SemVer.prototype.compareMain = function (other) {
+ if (!(other instanceof SemVer)) other = new SemVer(other, this.options);
+ return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
+ };
+
+ SemVer.prototype.comparePre = function (other) {
+ if (!(other instanceof SemVer)) other = new SemVer(other, this.options); // NOT having a prerelease is > having one
+
+ if (this.prerelease.length && !other.prerelease.length) return -1;else if (!this.prerelease.length && other.prerelease.length) return 1;else if (!this.prerelease.length && !other.prerelease.length) return 0;
+ var i = 0;
+
+ do {
+ var a = this.prerelease[i];
+ var b = other.prerelease[i];
+ debug('prerelease compare', i, a, b);
+ if (a === undefined && b === undefined) return 0;else if (b === undefined) return 1;else if (a === undefined) return -1;else if (a === b) continue;else return compareIdentifiers(a, b);
+ } while (++i);
+ }; // preminor will bump the version up to the next minor release, and immediately
+ // down to pre-release. premajor and prepatch work the same way.
+
+
+ SemVer.prototype.inc = function (release, identifier) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor = 0;
+ this.major++;
+ this.inc('pre', identifier);
+ break;
+
+ case 'preminor':
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor++;
+ this.inc('pre', identifier);
+ break;
+
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0;
+ this.inc('patch', identifier);
+ this.inc('pre', identifier);
+ break;
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+
+ case 'prerelease':
+ if (this.prerelease.length === 0) this.inc('patch', identifier);
+ this.inc('pre', identifier);
+ break;
+
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) this.major++;
+ this.minor = 0;
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) this.minor++;
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) this.patch++;
+ this.prerelease = [];
+ break;
+ // This probably shouldn't be used publicly.
+ // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+
+ case 'pre':
+ if (this.prerelease.length === 0) this.prerelease = [0];else {
+ var i = this.prerelease.length;
+
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++;
+ i = -2;
+ }
+ }
+
+ if (i === -1) // didn't increment anything
+ this.prerelease.push(0);
+ }
+
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ if (this.prerelease[0] === identifier) {
+ if (isNaN(this.prerelease[1])) this.prerelease = [identifier, 0];
+ } else this.prerelease = [identifier, 0];
+ }
+
+ break;
+
+ default:
+ throw new Error('invalid increment argument: ' + release);
+ }
+
+ this.format();
+ this.raw = this.version;
+ return this;
+ };
+
+ exports.inc = inc;
+
+ function inc(version, release, loose, identifier) {
+ if (typeof loose === 'string') {
+ identifier = loose;
+ loose = undefined;
+ }
+
+ try {
+ return new SemVer(version, loose).inc(release, identifier).version;
+ } catch (er) {
+ return null;
+ }
+ }
+
+ exports.diff = diff;
+
+ function diff(version1, version2) {
+ if (eq(version1, version2)) {
+ return null;
+ } else {
+ var v1 = parse(version1);
+ var v2 = parse(version2);
+
+ if (v1.prerelease.length || v2.prerelease.length) {
+ for (var key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return 'pre' + key;
+ }
+ }
+ }
+
+ return 'prerelease';
+ }
+
+ for (var key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return key;
+ }
+ }
+ }
+ }
+ }
+
+ exports.compareIdentifiers = compareIdentifiers;
+ var numeric = /^[0-9]+$/;
+
+ function compareIdentifiers(a, b) {
+ var anum = numeric.test(a);
+ var bnum = numeric.test(b);
+
+ if (anum && bnum) {
+ a = +a;
+ b = +b;
+ }
+
+ return anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : a > b ? 1 : 0;
+ }
+
+ exports.rcompareIdentifiers = rcompareIdentifiers;
+
+ function rcompareIdentifiers(a, b) {
+ return compareIdentifiers(b, a);
+ }
+
+ exports.major = major;
+
+ function major(a, loose) {
+ return new SemVer(a, loose).major;
+ }
+
+ exports.minor = minor;
+
+ function minor(a, loose) {
+ return new SemVer(a, loose).minor;
+ }
+
+ exports.patch = patch;
+
+ function patch(a, loose) {
+ return new SemVer(a, loose).patch;
+ }
+
+ exports.compare = compare;
+
+ function compare(a, b, loose) {
+ return new SemVer(a, loose).compare(new SemVer(b, loose));
+ }
+
+ exports.compareLoose = compareLoose;
+
+ function compareLoose(a, b) {
+ return compare(a, b, true);
+ }
+
+ exports.rcompare = rcompare;
+
+ function rcompare(a, b, loose) {
+ return compare(b, a, loose);
+ }
+
+ exports.sort = sort;
+
+ function sort(list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compare(a, b, loose);
+ });
+ }
+
+ exports.rsort = rsort;
+
+ function rsort(list, loose) {
+ return list.sort(function (a, b) {
+ return exports.rcompare(a, b, loose);
+ });
+ }
+
+ exports.gt = gt;
+
+ function gt(a, b, loose) {
+ return compare(a, b, loose) > 0;
+ }
+
+ exports.lt = lt;
+
+ function lt(a, b, loose) {
+ return compare(a, b, loose) < 0;
+ }
+
+ exports.eq = eq;
+
+ function eq(a, b, loose) {
+ return compare(a, b, loose) === 0;
+ }
+
+ exports.neq = neq;
+
+ function neq(a, b, loose) {
+ return compare(a, b, loose) !== 0;
+ }
+
+ exports.gte = gte;
+
+ function gte(a, b, loose) {
+ return compare(a, b, loose) >= 0;
+ }
+
+ exports.lte = lte;
+
+ function lte(a, b, loose) {
+ return compare(a, b, loose) <= 0;
+ }
+
+ exports.cmp = cmp;
+
+ function cmp(a, op, b, loose) {
+ var ret;
+
+ switch (op) {
+ case '===':
+ if (typeof a === 'object') a = a.version;
+ if (typeof b === 'object') b = b.version;
+ ret = a === b;
+ break;
+
+ case '!==':
+ if (typeof a === 'object') a = a.version;
+ if (typeof b === 'object') b = b.version;
+ ret = a !== b;
+ break;
+
+ case '':
+ case '=':
+ case '==':
+ ret = eq(a, b, loose);
+ break;
+
+ case '!=':
+ ret = neq(a, b, loose);
+ break;
+
+ case '>':
+ ret = gt(a, b, loose);
+ break;
+
+ case '>=':
+ ret = gte(a, b, loose);
+ break;
+
+ case '<':
+ ret = lt(a, b, loose);
+ break;
+
+ case '<=':
+ ret = lte(a, b, loose);
+ break;
+
+ default:
+ throw new TypeError('Invalid operator: ' + op);
+ }
+
+ return ret;
+ }
+
+ exports.Comparator = Comparator;
+
+ function Comparator(comp, options) {
+ if (!options || typeof options !== 'object') options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+
+ if (comp instanceof Comparator) {
+ if (comp.loose === !!options.loose) return comp;else comp = comp.value;
+ }
+
+ if (!(this instanceof Comparator)) return new Comparator(comp, options);
+ debug('comparator', comp, options);
+ this.options = options;
+ this.loose = !!options.loose;
+ this.parse(comp);
+ if (this.semver === ANY) this.value = '';else this.value = this.operator + this.semver.version;
+ debug('comp', this);
+ }
+
+ var ANY = {};
+
+ Comparator.prototype.parse = function (comp) {
+ var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR];
+ var m = comp.match(r);
+ if (!m) throw new TypeError('Invalid comparator: ' + comp);
+ this.operator = m[1];
+ if (this.operator === '=') this.operator = ''; // if it literally is just '>' or '' then allow anything.
+
+ if (!m[2]) this.semver = ANY;else this.semver = new SemVer(m[2], this.options.loose);
+ };
+
+ Comparator.prototype.toString = function () {
+ return this.value;
+ };
+
+ Comparator.prototype.test = function (version) {
+ debug('Comparator.test', version, this.options.loose);
+ if (this.semver === ANY) return true;
+ if (typeof version === 'string') version = new SemVer(version, this.options);
+ return cmp(version, this.operator, this.semver, this.options);
+ };
+
+ Comparator.prototype.intersects = function (comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required');
+ }
+
+ if (!options || typeof options !== 'object') options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ var rangeTmp;
+
+ if (this.operator === '') {
+ rangeTmp = new Range(comp.value, options);
+ return satisfies(this.value, rangeTmp, options);
+ } else if (comp.operator === '') {
+ rangeTmp = new Range(this.value, options);
+ return satisfies(comp.semver, rangeTmp, options);
+ }
+
+ var sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>');
+ var sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<');
+ var sameSemVer = this.semver.version === comp.semver.version;
+ var differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<=');
+ var oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<');
+ var oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>');
+ return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
+ };
+
+ exports.Range = Range;
+
+ function Range(range, options) {
+ if (!options || typeof options !== 'object') options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+
+ if (range instanceof Range) {
+ if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
+ return range;
+ } else {
+ return new Range(range.raw, options);
+ }
+ }
+
+ if (range instanceof Comparator) {
+ return new Range(range.value, options);
+ }
+
+ if (!(this instanceof Range)) return new Range(range, options);
+ this.options = options;
+ this.loose = !!options.loose;
+ this.includePrerelease = !!options.includePrerelease; // First, split based on boolean or ||
+
+ this.raw = range;
+ this.set = range.split(/\s*\|\|\s*/).map(function (range) {
+ return this.parseRange(range.trim());
+ }, this).filter(function (c) {
+ // throw out any that are not relevant for whatever reason
+ return c.length;
+ });
+
+ if (!this.set.length) {
+ throw new TypeError('Invalid SemVer Range: ' + range);
+ }
+
+ this.format();
+ }
+
+ Range.prototype.format = function () {
+ this.range = this.set.map(function (comps) {
+ return comps.join(' ').trim();
+ }).join('||').trim();
+ return this.range;
+ };
+
+ Range.prototype.toString = function () {
+ return this.range;
+ };
+
+ Range.prototype.parseRange = function (range) {
+ var loose = this.options.loose;
+ range = range.trim(); // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+
+ var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE];
+ range = range.replace(hr, hyphenReplace);
+ debug('hyphen replace', range); // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+
+ range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace);
+ debug('comparator trim', range, re[COMPARATORTRIM]); // `~ 1.2.3` => `~1.2.3`
+
+ range = range.replace(re[TILDETRIM], tildeTrimReplace); // `^ 1.2.3` => `^1.2.3`
+
+ range = range.replace(re[CARETTRIM], caretTrimReplace); // normalize spaces
+
+ range = range.split(/\s+/).join(' '); // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
+
+ var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR];
+ var set = range.split(' ').map(function (comp) {
+ return parseComparator(comp, this.options);
+ }, this).join(' ').split(/\s+/);
+
+ if (this.options.loose) {
+ // in loose mode, throw out any that are not valid comparators
+ set = set.filter(function (comp) {
+ return !!comp.match(compRe);
+ });
+ }
+
+ set = set.map(function (comp) {
+ return new Comparator(comp, this.options);
+ }, this);
+ return set;
+ };
+
+ Range.prototype.intersects = function (range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required');
+ }
+
+ return this.set.some(function (thisComparators) {
+ return thisComparators.every(function (thisComparator) {
+ return range.set.some(function (rangeComparators) {
+ return rangeComparators.every(function (rangeComparator) {
+ return thisComparator.intersects(rangeComparator, options);
+ });
+ });
+ });
+ });
+ }; // Mostly just for testing and legacy API reasons
+
+
+ exports.toComparators = toComparators;
+
+ function toComparators(range, options) {
+ return new Range(range, options).set.map(function (comp) {
+ return comp.map(function (c) {
+ return c.value;
+ }).join(' ').trim().split(' ');
+ });
+ } // comprised of xranges, tildes, stars, and gtlt's at this point.
+ // already replaced the hyphen ranges
+ // turn into a set of JUST comparators.
+
+
+ function parseComparator(comp, options) {
+ debug('comp', comp, options);
+ comp = replaceCarets(comp, options);
+ debug('caret', comp);
+ comp = replaceTildes(comp, options);
+ debug('tildes', comp);
+ comp = replaceXRanges(comp, options);
+ debug('xrange', comp);
+ comp = replaceStars(comp, options);
+ debug('stars', comp);
+ return comp;
+ }
+
+ function isX(id) {
+ return !id || id.toLowerCase() === 'x' || id === '*';
+ } // ~, ~> --> * (any, kinda silly)
+ // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
+ // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
+ // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
+ // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
+ // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
+
+
+ function replaceTildes(comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceTilde(comp, options);
+ }).join(' ');
+ }
+
+ function replaceTilde(comp, options) {
+ if (!options || typeof options !== 'object') options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ var r = options.loose ? re[TILDELOOSE] : re[TILDE];
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('tilde', comp, _, M, m, p, pr);
+ var ret;
+ if (isX(M)) ret = '';else if (isX(m)) ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';else if (isX(p)) // ~1.2 == >=1.2.0 <1.3.0
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';else if (pr) {
+ debug('replaceTilde pr', pr);
+ if (pr.charAt(0) !== '-') pr = '-' + pr;
+ ret = '>=' + M + '.' + m + '.' + p + pr + ' <' + M + '.' + (+m + 1) + '.0';
+ } else // ~1.2.3 == >=1.2.3 <1.3.0
+ ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
+ debug('tilde return', ret);
+ return ret;
+ });
+ } // ^ --> * (any, kinda silly)
+ // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
+ // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
+ // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
+ // ^1.2.3 --> >=1.2.3 <2.0.0
+ // ^1.2.0 --> >=1.2.0 <2.0.0
+
+
+ function replaceCarets(comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceCaret(comp, options);
+ }).join(' ');
+ }
+
+ function replaceCaret(comp, options) {
+ debug('caret', comp, options);
+ if (!options || typeof options !== 'object') options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ var r = options.loose ? re[CARETLOOSE] : re[CARET];
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('caret', comp, _, M, m, p, pr);
+ var ret;
+ if (isX(M)) ret = '';else if (isX(m)) ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';else if (isX(p)) {
+ if (M === '0') ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';else ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';
+ } else if (pr) {
+ debug('replaceCaret pr', pr);
+ if (pr.charAt(0) !== '-') pr = '-' + pr;
+
+ if (M === '0') {
+ if (m === '0') ret = '>=' + M + '.' + m + '.' + p + pr + ' <' + M + '.' + m + '.' + (+p + 1);else ret = '>=' + M + '.' + m + '.' + p + pr + ' <' + M + '.' + (+m + 1) + '.0';
+ } else ret = '>=' + M + '.' + m + '.' + p + pr + ' <' + (+M + 1) + '.0.0';
+ } else {
+ debug('no pr');
+
+ if (M === '0') {
+ if (m === '0') ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + m + '.' + (+p + 1);else ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
+ } else ret = '>=' + M + '.' + m + '.' + p + ' <' + (+M + 1) + '.0.0';
+ }
+ debug('caret return', ret);
+ return ret;
+ });
+ }
+
+ function replaceXRanges(comp, options) {
+ debug('replaceXRanges', comp, options);
+ return comp.split(/\s+/).map(function (comp) {
+ return replaceXRange(comp, options);
+ }).join(' ');
+ }
+
+ function replaceXRange(comp, options) {
+ comp = comp.trim();
+ if (!options || typeof options !== 'object') options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ var r = options.loose ? re[XRANGELOOSE] : re[XRANGE];
+ return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
+ debug('xRange', comp, ret, gtlt, M, m, p, pr);
+ var xM = isX(M);
+ var xm = xM || isX(m);
+ var xp = xm || isX(p);
+ var anyX = xp;
+ if (gtlt === '=' && anyX) gtlt = '';
+
+ if (xM) {
+ if (gtlt === '>' || gtlt === '<') {
+ // nothing is allowed
+ ret = '<0.0.0';
+ } else {
+ // nothing is forbidden
+ ret = '*';
+ }
+ } else if (gtlt && anyX) {
+ // replace X with 0
+ if (xm) m = 0;
+ if (xp) p = 0;
+
+ if (gtlt === '>') {
+ // >1 => >=2.0.0
+ // >1.2 => >=1.3.0
+ // >1.2.3 => >= 1.2.4
+ gtlt = '>=';
+
+ if (xm) {
+ M = +M + 1;
+ m = 0;
+ p = 0;
+ } else if (xp) {
+ m = +m + 1;
+ p = 0;
+ }
+ } else if (gtlt === '<=') {
+ // <=0.7.x is actually <0.8.0, since any 0.7.x should
+ // pass. Similarly, <=7.x is actually <8.0.0, etc.
+ gtlt = '<';
+ if (xm) M = +M + 1;else m = +m + 1;
+ }
+
+ ret = gtlt + M + '.' + m + '.' + p;
+ } else if (xm) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
+ } else if (xp) {
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
+ }
+
+ debug('xRange return', ret);
+ return ret;
+ });
+ } // Because * is AND-ed with everything else in the comparator,
+ // and '' means "any version", just remove the *s entirely.
+
+
+ function replaceStars(comp, options) {
+ debug('replaceStars', comp, options); // Looseness is ignored here. star is always as loose as it gets!
+
+ return comp.trim().replace(re[STAR], '');
+ } // This function is passed to string.replace(re[HYPHENRANGE])
+ // M, m, patch, prerelease, build
+ // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+ // 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
+ // 1.2 - 3.4 => >=1.2.0 <3.5.0
+
+
+ function hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {
+ if (isX(fM)) from = '';else if (isX(fm)) from = '>=' + fM + '.0.0';else if (isX(fp)) from = '>=' + fM + '.' + fm + '.0';else from = '>=' + from;
+ if (isX(tM)) to = '';else if (isX(tm)) to = '<' + (+tM + 1) + '.0.0';else if (isX(tp)) to = '<' + tM + '.' + (+tm + 1) + '.0';else if (tpr) to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;else to = '<=' + to;
+ return (from + ' ' + to).trim();
+ } // if ANY of the sets match ALL of its comparators, then pass
+
+
+ Range.prototype.test = function (version) {
+ if (!version) return false;
+ if (typeof version === 'string') version = new SemVer(version, this.options);
+
+ for (var i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) return true;
+ }
+
+ return false;
+ };
+
+ function testSet(set, version, options) {
+ for (var i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) return false;
+ }
+
+ if (!options) options = {};
+
+ if (version.prerelease.length && !options.includePrerelease) {
+ // Find the set of versions that are allowed to have prereleases
+ // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+ // That should allow `1.2.3-pr.2` to pass.
+ // However, `1.2.4-alpha.notready` should NOT be allowed,
+ // even though it's within the range set by the comparators.
+ for (var i = 0; i < set.length; i++) {
+ debug(set[i].semver);
+ if (set[i].semver === ANY) continue;
+
+ if (set[i].semver.prerelease.length > 0) {
+ var allowed = set[i].semver;
+ if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) return true;
+ }
+ } // Version has a -pre, but it's not one of the ones we like.
+
+
+ return false;
+ }
+
+ return true;
+ }
+
+ exports.satisfies = satisfies;
+
+ function satisfies(version, range, options) {
+ try {
+ range = new Range(range, options);
+ } catch (er) {
+ return false;
+ }
+
+ return range.test(version);
+ }
+
+ exports.maxSatisfying = maxSatisfying;
+
+ function maxSatisfying(versions, range, options) {
+ var max = null;
+ var maxSV = null;
+
+ try {
+ var rangeObj = new Range(range, options);
+ } catch (er) {
+ return null;
+ }
+
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!max || maxSV.compare(v) === -1) {
+ // compare(max, v, true)
+ max = v;
+ maxSV = new SemVer(max, options);
+ }
+ }
+ });
+ return max;
+ }
+
+ exports.minSatisfying = minSatisfying;
+
+ function minSatisfying(versions, range, options) {
+ var min = null;
+ var minSV = null;
+
+ try {
+ var rangeObj = new Range(range, options);
+ } catch (er) {
+ return null;
+ }
+
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!min || minSV.compare(v) === 1) {
+ // compare(min, v, true)
+ min = v;
+ minSV = new SemVer(min, options);
+ }
+ }
+ });
+ return min;
+ }
+
+ exports.validRange = validRange;
+
+ function validRange(range, options) {
+ try {
+ // Return '*' instead of '' so that truthiness works.
+ // This will throw if it's invalid anyway
+ return new Range(range, options).range || '*';
+ } catch (er) {
+ return null;
+ }
+ } // Determine if version is less than all the versions possible in the range
+
+
+ exports.ltr = ltr;
+
+ function ltr(version, range, options) {
+ return outside(version, range, '<', options);
+ } // Determine if version is greater than all the versions possible in the range.
+
+
+ exports.gtr = gtr;
+
+ function gtr(version, range, options) {
+ return outside(version, range, '>', options);
+ }
+
+ exports.outside = outside;
+
+ function outside(version, range, hilo, options) {
+ version = new SemVer(version, options);
+ range = new Range(range, options);
+ var gtfn, ltefn, ltfn, comp, ecomp;
+
+ switch (hilo) {
+ case '>':
+ gtfn = gt;
+ ltefn = lte;
+ ltfn = lt;
+ comp = '>';
+ ecomp = '>=';
+ break;
+
+ case '<':
+ gtfn = lt;
+ ltefn = gte;
+ ltfn = gt;
+ comp = '<';
+ ecomp = '<=';
+ break;
+
+ default:
+ throw new TypeError('Must provide a hilo val of "<" or ">"');
+ } // If it satisifes the range it is not outside
+
+
+ if (satisfies(version, range, options)) {
+ return false;
+ } // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
+
+
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i];
+ var high = null;
+ var low = null;
+ comparators.forEach(function (comparator) {
+ if (comparator.semver === ANY) {
+ comparator = new Comparator('>=0.0.0');
+ }
+
+ high = high || comparator;
+ low = low || comparator;
+
+ if (gtfn(comparator.semver, high.semver, options)) {
+ high = comparator;
+ } else if (ltfn(comparator.semver, low.semver, options)) {
+ low = comparator;
+ }
+ }); // If the edge version comparator has a operator then our version
+ // isn't outside it
+
+ if (high.operator === comp || high.operator === ecomp) {
+ return false;
+ } // If the lowest version comparator has an operator and our version
+ // is less than it then it isn't higher than the range
+
+
+ if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
+ return false;
+ } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ exports.prerelease = prerelease;
+
+ function prerelease(version, options) {
+ var parsed = parse(version, options);
+ return parsed && parsed.prerelease.length ? parsed.prerelease : null;
+ }
+
+ exports.intersects = intersects;
+
+ function intersects(r1, r2, options) {
+ r1 = new Range(r1, options);
+ r2 = new Range(r2, options);
+ return r1.intersects(r2);
+ }
+
+ exports.coerce = coerce;
+
+ function coerce(version) {
+ if (version instanceof SemVer) return version;
+ if (typeof version !== 'string') return null;
+ var match = version.match(re[COERCE]);
+ if (match == null) return null;
+ return parse((match[1] || '0') + '.' + (match[2] || '0') + '.' + (match[3] || '0'));
+ }
+});
+var semver_1$1 = semver$1.SEMVER_SPEC_VERSION;
+var semver_2$1 = semver$1.re;
+var semver_3$1 = semver$1.src;
+var semver_4$1 = semver$1.parse;
+var semver_5$1 = semver$1.valid;
+var semver_6$1 = semver$1.clean;
+var semver_7$1 = semver$1.SemVer;
+var semver_8$1 = semver$1.inc;
+var semver_9$1 = semver$1.diff;
+var semver_10$1 = semver$1.compareIdentifiers;
+var semver_11$1 = semver$1.rcompareIdentifiers;
+var semver_12$1 = semver$1.major;
+var semver_13$1 = semver$1.minor;
+var semver_14$1 = semver$1.patch;
+var semver_15$1 = semver$1.compare;
+var semver_16$1 = semver$1.compareLoose;
+var semver_17$1 = semver$1.rcompare;
+var semver_18$1 = semver$1.sort;
+var semver_19$1 = semver$1.rsort;
+var semver_20$1 = semver$1.gt;
+var semver_21$1 = semver$1.lt;
+var semver_22$1 = semver$1.eq;
+var semver_23$1 = semver$1.neq;
+var semver_24$1 = semver$1.gte;
+var semver_25$1 = semver$1.lte;
+var semver_26$1 = semver$1.cmp;
+var semver_27$1 = semver$1.Comparator;
+var semver_28$1 = semver$1.Range;
+var semver_29$1 = semver$1.toComparators;
+var semver_30$1 = semver$1.satisfies;
+var semver_31$1 = semver$1.maxSatisfying;
+var semver_32$1 = semver$1.minSatisfying;
+var semver_33$1 = semver$1.validRange;
+var semver_34$1 = semver$1.ltr;
+var semver_35$1 = semver$1.gtr;
+var semver_36$1 = semver$1.outside;
+var semver_37$1 = semver$1.prerelease;
+var semver_38$1 = semver$1.intersects;
+var semver_39$1 = semver$1.coerce;
+
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+var pseudomap = PseudoMap;
+
+function PseudoMap(set) {
+ if (!(this instanceof PseudoMap)) // whyyyyyyy
+ throw new TypeError("Constructor PseudoMap requires 'new'");
+ this.clear();
+
+ if (set) {
+ if (set instanceof PseudoMap || typeof Map === 'function' && set instanceof Map) set.forEach(function (value, key) {
+ this.set(key, value);
+ }, this);else if (Array.isArray(set)) set.forEach(function (kv) {
+ this.set(kv[0], kv[1]);
+ }, this);else throw new TypeError('invalid argument');
+ }
+}
+
+PseudoMap.prototype.forEach = function (fn, thisp) {
+ thisp = thisp || this;
+ Object.keys(this._data).forEach(function (k) {
+ if (k !== 'size') fn.call(thisp, this._data[k].value, this._data[k].key);
+ }, this);
+};
+
+PseudoMap.prototype.has = function (k) {
+ return !!find(this._data, k);
+};
+
+PseudoMap.prototype.get = function (k) {
+ var res = find(this._data, k);
+ return res && res.value;
+};
+
+PseudoMap.prototype.set = function (k, v) {
+ set(this._data, k, v);
+};
+
+PseudoMap.prototype.delete = function (k) {
+ var res = find(this._data, k);
+
+ if (res) {
+ delete this._data[res._index];
+ this._data.size--;
+ }
+};
+
+PseudoMap.prototype.clear = function () {
+ var data = Object.create(null);
+ data.size = 0;
+ Object.defineProperty(this, '_data', {
+ value: data,
+ enumerable: false,
+ configurable: true,
+ writable: false
+ });
+};
+
+Object.defineProperty(PseudoMap.prototype, 'size', {
+ get: function get() {
+ return this._data.size;
+ },
+ set: function set(n) {},
+ enumerable: true,
+ configurable: true
+});
+
+PseudoMap.prototype.values = PseudoMap.prototype.keys = PseudoMap.prototype.entries = function () {
+ throw new Error('iterators are not implemented in this version');
+}; // Either identical, or both NaN
+
+
+function same(a, b) {
+ return a === b || a !== a && b !== b;
+}
+
+function Entry(k, v, i) {
+ this.key = k;
+ this.value = v;
+ this._index = i;
+}
+
+function find(data, k) {
+ for (var i = 0, s = '_' + k, key = s; hasOwnProperty.call(data, key); key = s + i++) {
+ if (same(data[key].key, k)) return data[key];
+ }
+}
+
+function set(data, k, v) {
+ for (var i = 0, s = '_' + k, key = s; hasOwnProperty.call(data, key); key = s + i++) {
+ if (same(data[key].key, k)) {
+ data[key].value = v;
+ return;
+ }
+ }
+
+ data.size++;
+ data[key] = new Entry(k, v, key);
+}
+
+var map = createCommonjsModule(function (module) {
+ if (process.env.npm_package_name === 'pseudomap' && process.env.npm_lifecycle_script === 'test') process.env.TEST_PSEUDOMAP = 'true';
+
+ if (typeof Map === 'function' && !process.env.TEST_PSEUDOMAP) {
+ module.exports = Map;
+ } else {
+ module.exports = pseudomap;
+ }
+});
+
+var yallist = Yallist;
+Yallist.Node = Node;
+Yallist.create = Yallist;
+
+function Yallist(list) {
+ var self = this;
+
+ if (!(self instanceof Yallist)) {
+ self = new Yallist();
+ }
+
+ self.tail = null;
+ self.head = null;
+ self.length = 0;
+
+ if (list && typeof list.forEach === 'function') {
+ list.forEach(function (item) {
+ self.push(item);
+ });
+ } else if (arguments.length > 0) {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ self.push(arguments[i]);
+ }
+ }
+
+ return self;
+}
+
+Yallist.prototype.removeNode = function (node) {
+ if (node.list !== this) {
+ throw new Error('removing node which does not belong to this list');
+ }
+
+ var next = node.next;
+ var prev = node.prev;
+
+ if (next) {
+ next.prev = prev;
+ }
+
+ if (prev) {
+ prev.next = next;
+ }
+
+ if (node === this.head) {
+ this.head = next;
+ }
+
+ if (node === this.tail) {
+ this.tail = prev;
+ }
+
+ node.list.length--;
+ node.next = null;
+ node.prev = null;
+ node.list = null;
+};
+
+Yallist.prototype.unshiftNode = function (node) {
+ if (node === this.head) {
+ return;
+ }
+
+ if (node.list) {
+ node.list.removeNode(node);
+ }
+
+ var head = this.head;
+ node.list = this;
+ node.next = head;
+
+ if (head) {
+ head.prev = node;
+ }
+
+ this.head = node;
+
+ if (!this.tail) {
+ this.tail = node;
+ }
+
+ this.length++;
+};
+
+Yallist.prototype.pushNode = function (node) {
+ if (node === this.tail) {
+ return;
+ }
+
+ if (node.list) {
+ node.list.removeNode(node);
+ }
+
+ var tail = this.tail;
+ node.list = this;
+ node.prev = tail;
+
+ if (tail) {
+ tail.next = node;
+ }
+
+ this.tail = node;
+
+ if (!this.head) {
+ this.head = node;
+ }
+
+ this.length++;
+};
+
+Yallist.prototype.push = function () {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ push(this, arguments[i]);
+ }
+
+ return this.length;
+};
+
+Yallist.prototype.unshift = function () {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ unshift(this, arguments[i]);
+ }
+
+ return this.length;
+};
+
+Yallist.prototype.pop = function () {
+ if (!this.tail) {
+ return undefined;
+ }
+
+ var res = this.tail.value;
+ this.tail = this.tail.prev;
+
+ if (this.tail) {
+ this.tail.next = null;
+ } else {
+ this.head = null;
+ }
+
+ this.length--;
+ return res;
+};
+
+Yallist.prototype.shift = function () {
+ if (!this.head) {
+ return undefined;
+ }
+
+ var res = this.head.value;
+ this.head = this.head.next;
+
+ if (this.head) {
+ this.head.prev = null;
+ } else {
+ this.tail = null;
+ }
+
+ this.length--;
+ return res;
+};
+
+Yallist.prototype.forEach = function (fn, thisp) {
+ thisp = thisp || this;
+
+ for (var walker = this.head, i = 0; walker !== null; i++) {
+ fn.call(thisp, walker.value, i, this);
+ walker = walker.next;
+ }
+};
+
+Yallist.prototype.forEachReverse = function (fn, thisp) {
+ thisp = thisp || this;
+
+ for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
+ fn.call(thisp, walker.value, i, this);
+ walker = walker.prev;
+ }
+};
+
+Yallist.prototype.get = function (n) {
+ for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
+ // abort out of the list early if we hit a cycle
+ walker = walker.next;
+ }
+
+ if (i === n && walker !== null) {
+ return walker.value;
+ }
+};
+
+Yallist.prototype.getReverse = function (n) {
+ for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
+ // abort out of the list early if we hit a cycle
+ walker = walker.prev;
+ }
+
+ if (i === n && walker !== null) {
+ return walker.value;
+ }
+};
+
+Yallist.prototype.map = function (fn, thisp) {
+ thisp = thisp || this;
+ var res = new Yallist();
+
+ for (var walker = this.head; walker !== null;) {
+ res.push(fn.call(thisp, walker.value, this));
+ walker = walker.next;
+ }
+
+ return res;
+};
+
+Yallist.prototype.mapReverse = function (fn, thisp) {
+ thisp = thisp || this;
+ var res = new Yallist();
+
+ for (var walker = this.tail; walker !== null;) {
+ res.push(fn.call(thisp, walker.value, this));
+ walker = walker.prev;
+ }
+
+ return res;
+};
+
+Yallist.prototype.reduce = function (fn, initial) {
+ var acc;
+ var walker = this.head;
+
+ if (arguments.length > 1) {
+ acc = initial;
+ } else if (this.head) {
+ walker = this.head.next;
+ acc = this.head.value;
+ } else {
+ throw new TypeError('Reduce of empty list with no initial value');
+ }
+
+ for (var i = 0; walker !== null; i++) {
+ acc = fn(acc, walker.value, i);
+ walker = walker.next;
+ }
+
+ return acc;
+};
+
+Yallist.prototype.reduceReverse = function (fn, initial) {
+ var acc;
+ var walker = this.tail;
+
+ if (arguments.length > 1) {
+ acc = initial;
+ } else if (this.tail) {
+ walker = this.tail.prev;
+ acc = this.tail.value;
+ } else {
+ throw new TypeError('Reduce of empty list with no initial value');
+ }
+
+ for (var i = this.length - 1; walker !== null; i--) {
+ acc = fn(acc, walker.value, i);
+ walker = walker.prev;
+ }
+
+ return acc;
+};
+
+Yallist.prototype.toArray = function () {
+ var arr = new Array(this.length);
+
+ for (var i = 0, walker = this.head; walker !== null; i++) {
+ arr[i] = walker.value;
+ walker = walker.next;
+ }
+
+ return arr;
+};
+
+Yallist.prototype.toArrayReverse = function () {
+ var arr = new Array(this.length);
+
+ for (var i = 0, walker = this.tail; walker !== null; i++) {
+ arr[i] = walker.value;
+ walker = walker.prev;
+ }
+
+ return arr;
+};
+
+Yallist.prototype.slice = function (from, to) {
+ to = to || this.length;
+
+ if (to < 0) {
+ to += this.length;
+ }
+
+ from = from || 0;
+
+ if (from < 0) {
+ from += this.length;
+ }
+
+ var ret = new Yallist();
+
+ if (to < from || to < 0) {
+ return ret;
+ }
+
+ if (from < 0) {
+ from = 0;
+ }
+
+ if (to > this.length) {
+ to = this.length;
+ }
+
+ for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
+ walker = walker.next;
+ }
+
+ for (; walker !== null && i < to; i++, walker = walker.next) {
+ ret.push(walker.value);
+ }
+
+ return ret;
+};
+
+Yallist.prototype.sliceReverse = function (from, to) {
+ to = to || this.length;
+
+ if (to < 0) {
+ to += this.length;
+ }
+
+ from = from || 0;
+
+ if (from < 0) {
+ from += this.length;
+ }
+
+ var ret = new Yallist();
+
+ if (to < from || to < 0) {
+ return ret;
+ }
+
+ if (from < 0) {
+ from = 0;
+ }
+
+ if (to > this.length) {
+ to = this.length;
+ }
+
+ for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
+ walker = walker.prev;
+ }
+
+ for (; walker !== null && i > from; i--, walker = walker.prev) {
+ ret.push(walker.value);
+ }
+
+ return ret;
+};
+
+Yallist.prototype.reverse = function () {
+ var head = this.head;
+ var tail = this.tail;
+
+ for (var walker = head; walker !== null; walker = walker.prev) {
+ var p = walker.prev;
+ walker.prev = walker.next;
+ walker.next = p;
+ }
+
+ this.head = tail;
+ this.tail = head;
+ return this;
+};
+
+function push(self, item) {
+ self.tail = new Node(item, self.tail, null, self);
+
+ if (!self.head) {
+ self.head = self.tail;
+ }
+
+ self.length++;
+}
+
+function unshift(self, item) {
+ self.head = new Node(item, null, self.head, self);
+
+ if (!self.tail) {
+ self.tail = self.head;
+ }
+
+ self.length++;
+}
+
+function Node(value, prev, next, list) {
+ if (!(this instanceof Node)) {
+ return new Node(value, prev, next, list);
+ }
+
+ this.list = list;
+ this.value = value;
+
+ if (prev) {
+ prev.next = this;
+ this.prev = prev;
+ } else {
+ this.prev = null;
+ }
+
+ if (next) {
+ next.prev = this;
+ this.next = next;
+ } else {
+ this.next = null;
+ }
+}
+
+var lruCache = LRUCache; // This will be a proper iterable 'Map' in engines that support it,
+// or a fakey-fake PseudoMap in older versions.
+// A linked list to keep track of recently-used-ness
+// use symbols if possible, otherwise just _props
+
+var hasSymbol = typeof Symbol === 'function' && process.env._nodeLRUCacheForceNoSymbol !== '1';
+var makeSymbol;
+
+if (hasSymbol) {
+ makeSymbol = function makeSymbol(key) {
+ return Symbol(key);
+ };
+} else {
+ makeSymbol = function makeSymbol(key) {
+ return '_' + key;
+ };
+}
+
+var MAX = makeSymbol('max');
+var LENGTH = makeSymbol('length');
+var LENGTH_CALCULATOR = makeSymbol('lengthCalculator');
+var ALLOW_STALE = makeSymbol('allowStale');
+var MAX_AGE = makeSymbol('maxAge');
+var DISPOSE = makeSymbol('dispose');
+var NO_DISPOSE_ON_SET = makeSymbol('noDisposeOnSet');
+var LRU_LIST = makeSymbol('lruList');
+var CACHE = makeSymbol('cache');
+
+function naiveLength() {
+ return 1;
+} // lruList is a yallist where the head is the youngest
+// item, and the tail is the oldest. the list contains the Hit
+// objects as the entries.
+// Each Hit object has a reference to its Yallist.Node. This
+// never changes.
+//
+// cache is a Map (or PseudoMap) that matches the keys to
+// the Yallist.Node object.
+
+
+function LRUCache(options) {
+ if (!(this instanceof LRUCache)) {
+ return new LRUCache(options);
+ }
+
+ if (typeof options === 'number') {
+ options = {
+ max: options
+ };
+ }
+
+ if (!options) {
+ options = {};
+ }
+
+ var max = this[MAX] = options.max; // Kind of weird to have a default max of Infinity, but oh well.
+
+ if (!max || !(typeof max === 'number') || max <= 0) {
+ this[MAX] = Infinity;
+ }
+
+ var lc = options.length || naiveLength;
+
+ if (typeof lc !== 'function') {
+ lc = naiveLength;
+ }
+
+ this[LENGTH_CALCULATOR] = lc;
+ this[ALLOW_STALE] = options.stale || false;
+ this[MAX_AGE] = options.maxAge || 0;
+ this[DISPOSE] = options.dispose;
+ this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;
+ this.reset();
+} // resize the cache when the max changes.
+
+
+Object.defineProperty(LRUCache.prototype, 'max', {
+ set: function set(mL) {
+ if (!mL || !(typeof mL === 'number') || mL <= 0) {
+ mL = Infinity;
+ }
+
+ this[MAX] = mL;
+ trim$2(this);
+ },
+ get: function get() {
+ return this[MAX];
+ },
+ enumerable: true
+});
+Object.defineProperty(LRUCache.prototype, 'allowStale', {
+ set: function set(allowStale) {
+ this[ALLOW_STALE] = !!allowStale;
+ },
+ get: function get() {
+ return this[ALLOW_STALE];
+ },
+ enumerable: true
+});
+Object.defineProperty(LRUCache.prototype, 'maxAge', {
+ set: function set(mA) {
+ if (!mA || !(typeof mA === 'number') || mA < 0) {
+ mA = 0;
+ }
+
+ this[MAX_AGE] = mA;
+ trim$2(this);
+ },
+ get: function get() {
+ return this[MAX_AGE];
+ },
+ enumerable: true
+}); // resize the cache when the lengthCalculator changes.
+
+Object.defineProperty(LRUCache.prototype, 'lengthCalculator', {
+ set: function set(lC) {
+ if (typeof lC !== 'function') {
+ lC = naiveLength;
+ }
+
+ if (lC !== this[LENGTH_CALCULATOR]) {
+ this[LENGTH_CALCULATOR] = lC;
+ this[LENGTH] = 0;
+ this[LRU_LIST].forEach(function (hit) {
+ hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key);
+ this[LENGTH] += hit.length;
+ }, this);
+ }
+
+ trim$2(this);
+ },
+ get: function get() {
+ return this[LENGTH_CALCULATOR];
+ },
+ enumerable: true
+});
+Object.defineProperty(LRUCache.prototype, 'length', {
+ get: function get() {
+ return this[LENGTH];
+ },
+ enumerable: true
+});
+Object.defineProperty(LRUCache.prototype, 'itemCount', {
+ get: function get() {
+ return this[LRU_LIST].length;
+ },
+ enumerable: true
+});
+
+LRUCache.prototype.rforEach = function (fn, thisp) {
+ thisp = thisp || this;
+
+ for (var walker = this[LRU_LIST].tail; walker !== null;) {
+ var prev = walker.prev;
+ forEachStep(this, fn, walker, thisp);
+ walker = prev;
+ }
+};
+
+function forEachStep(self, fn, node, thisp) {
+ var hit = node.value;
+
+ if (isStale(self, hit)) {
+ del(self, node);
+
+ if (!self[ALLOW_STALE]) {
+ hit = undefined;
+ }
+ }
+
+ if (hit) {
+ fn.call(thisp, hit.value, hit.key, self);
+ }
+}
+
+LRUCache.prototype.forEach = function (fn, thisp) {
+ thisp = thisp || this;
+
+ for (var walker = this[LRU_LIST].head; walker !== null;) {
+ var next = walker.next;
+ forEachStep(this, fn, walker, thisp);
+ walker = next;
+ }
+};
+
+LRUCache.prototype.keys = function () {
+ return this[LRU_LIST].toArray().map(function (k) {
+ return k.key;
+ }, this);
+};
+
+LRUCache.prototype.values = function () {
+ return this[LRU_LIST].toArray().map(function (k) {
+ return k.value;
+ }, this);
+};
+
+LRUCache.prototype.reset = function () {
+ if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {
+ this[LRU_LIST].forEach(function (hit) {
+ this[DISPOSE](hit.key, hit.value);
+ }, this);
+ }
+
+ this[CACHE] = new map(); // hash of items by key
+
+ this[LRU_LIST] = new yallist(); // list of items in order of use recency
+
+ this[LENGTH] = 0; // length of items in the list
+};
+
+LRUCache.prototype.dump = function () {
+ return this[LRU_LIST].map(function (hit) {
+ if (!isStale(this, hit)) {
+ return {
+ k: hit.key,
+ v: hit.value,
+ e: hit.now + (hit.maxAge || 0)
+ };
+ }
+ }, this).toArray().filter(function (h) {
+ return h;
+ });
+};
+
+LRUCache.prototype.dumpLru = function () {
+ return this[LRU_LIST];
+};
+/* istanbul ignore next */
+
+
+LRUCache.prototype.inspect = function (n, opts) {
+ var str = 'LRUCache {';
+ var extras = false;
+ var as = this[ALLOW_STALE];
+
+ if (as) {
+ str += '\n allowStale: true';
+ extras = true;
+ }
+
+ var max = this[MAX];
+
+ if (max && max !== Infinity) {
+ if (extras) {
+ str += ',';
+ }
+
+ str += '\n max: ' + util$3.inspect(max, opts);
+ extras = true;
+ }
+
+ var maxAge = this[MAX_AGE];
+
+ if (maxAge) {
+ if (extras) {
+ str += ',';
+ }
+
+ str += '\n maxAge: ' + util$3.inspect(maxAge, opts);
+ extras = true;
+ }
+
+ var lc = this[LENGTH_CALCULATOR];
+
+ if (lc && lc !== naiveLength) {
+ if (extras) {
+ str += ',';
+ }
+
+ str += '\n length: ' + util$3.inspect(this[LENGTH], opts);
+ extras = true;
+ }
+
+ var didFirst = false;
+ this[LRU_LIST].forEach(function (item) {
+ if (didFirst) {
+ str += ',\n ';
+ } else {
+ if (extras) {
+ str += ',\n';
+ }
+
+ didFirst = true;
+ str += '\n ';
+ }
+
+ var key = util$3.inspect(item.key).split('\n').join('\n ');
+ var val = {
+ value: item.value
+ };
+
+ if (item.maxAge !== maxAge) {
+ val.maxAge = item.maxAge;
+ }
+
+ if (lc !== naiveLength) {
+ val.length = item.length;
+ }
+
+ if (isStale(this, item)) {
+ val.stale = true;
+ }
+
+ val = util$3.inspect(val, opts).split('\n').join('\n ');
+ str += key + ' => ' + val;
+ });
+
+ if (didFirst || extras) {
+ str += '\n';
+ }
+
+ str += '}';
+ return str;
+};
+
+LRUCache.prototype.set = function (key, value, maxAge) {
+ maxAge = maxAge || this[MAX_AGE];
+ var now = maxAge ? Date.now() : 0;
+ var len = this[LENGTH_CALCULATOR](value, key);
+
+ if (this[CACHE].has(key)) {
+ if (len > this[MAX]) {
+ del(this, this[CACHE].get(key));
+ return false;
+ }
+
+ var node = this[CACHE].get(key);
+ var item = node.value; // dispose of the old one before overwriting
+ // split out into 2 ifs for better coverage tracking
+
+ if (this[DISPOSE]) {
+ if (!this[NO_DISPOSE_ON_SET]) {
+ this[DISPOSE](key, item.value);
+ }
+ }
+
+ item.now = now;
+ item.maxAge = maxAge;
+ item.value = value;
+ this[LENGTH] += len - item.length;
+ item.length = len;
+ this.get(key);
+ trim$2(this);
+ return true;
+ }
+
+ var hit = new Entry$1(key, value, len, now, maxAge); // oversized objects fall out of cache automatically.
+
+ if (hit.length > this[MAX]) {
+ if (this[DISPOSE]) {
+ this[DISPOSE](key, value);
+ }
+
+ return false;
+ }
+
+ this[LENGTH] += hit.length;
+ this[LRU_LIST].unshift(hit);
+ this[CACHE].set(key, this[LRU_LIST].head);
+ trim$2(this);
+ return true;
+};
+
+LRUCache.prototype.has = function (key) {
+ if (!this[CACHE].has(key)) return false;
+ var hit = this[CACHE].get(key).value;
+
+ if (isStale(this, hit)) {
+ return false;
+ }
+
+ return true;
+};
+
+LRUCache.prototype.get = function (key) {
+ return get(this, key, true);
+};
+
+LRUCache.prototype.peek = function (key) {
+ return get(this, key, false);
+};
+
+LRUCache.prototype.pop = function () {
+ var node = this[LRU_LIST].tail;
+ if (!node) return null;
+ del(this, node);
+ return node.value;
+};
+
+LRUCache.prototype.del = function (key) {
+ del(this, this[CACHE].get(key));
+};
+
+LRUCache.prototype.load = function (arr) {
+ // reset the cache
+ this.reset();
+ var now = Date.now(); // A previous serialized cache has the most recent items first
+
+ for (var l = arr.length - 1; l >= 0; l--) {
+ var hit = arr[l];
+ var expiresAt = hit.e || 0;
+
+ if (expiresAt === 0) {
+ // the item was created without expiration in a non aged cache
+ this.set(hit.k, hit.v);
+ } else {
+ var maxAge = expiresAt - now; // dont add already expired items
+
+ if (maxAge > 0) {
+ this.set(hit.k, hit.v, maxAge);
+ }
+ }
+ }
+};
+
+LRUCache.prototype.prune = function () {
+ var self = this;
+ this[CACHE].forEach(function (value, key) {
+ get(self, key, false);
+ });
+};
+
+function get(self, key, doUse) {
+ var node = self[CACHE].get(key);
+
+ if (node) {
+ var hit = node.value;
+
+ if (isStale(self, hit)) {
+ del(self, node);
+ if (!self[ALLOW_STALE]) hit = undefined;
+ } else {
+ if (doUse) {
+ self[LRU_LIST].unshiftNode(node);
+ }
+ }
+
+ if (hit) hit = hit.value;
+ }
+
+ return hit;
+}
+
+function isStale(self, hit) {
+ if (!hit || !hit.maxAge && !self[MAX_AGE]) {
+ return false;
+ }
+
+ var stale = false;
+ var diff = Date.now() - hit.now;
+
+ if (hit.maxAge) {
+ stale = diff > hit.maxAge;
+ } else {
+ stale = self[MAX_AGE] && diff > self[MAX_AGE];
+ }
+
+ return stale;
+}
+
+function trim$2(self) {
+ if (self[LENGTH] > self[MAX]) {
+ for (var walker = self[LRU_LIST].tail; self[LENGTH] > self[MAX] && walker !== null;) {
+ // We know that we're about to delete this one, and also
+ // what the next least recently used key will be, so just
+ // go ahead and set it now.
+ var prev = walker.prev;
+ del(self, walker);
+ walker = prev;
+ }
+ }
+}
+
+function del(self, node) {
+ if (node) {
+ var hit = node.value;
+
+ if (self[DISPOSE]) {
+ self[DISPOSE](hit.key, hit.value);
+ }
+
+ self[LENGTH] -= hit.length;
+ self[CACHE].delete(hit.key);
+ self[LRU_LIST].removeNode(node);
+ }
+} // classy, since V8 prefers predictable objects.
+
+
+function Entry$1(key, value, length, now, maxAge) {
+ this.key = key;
+ this.value = value;
+ this.length = length;
+ this.now = now;
+ this.maxAge = maxAge || 0;
+}
+
+var sigmund_1 = sigmund;
+
+function sigmund(subject, maxSessions) {
+ maxSessions = maxSessions || 10;
+ var notes = [];
+ var analysis = '';
+ var RE = RegExp;
+
+ function psychoAnalyze(subject, session) {
+ if (session > maxSessions) return;
+
+ if (typeof subject === 'function' || typeof subject === 'undefined') {
+ return;
+ }
+
+ if (typeof subject !== 'object' || !subject || subject instanceof RE) {
+ analysis += subject;
+ return;
+ }
+
+ if (notes.indexOf(subject) !== -1 || session === maxSessions) return;
+ notes.push(subject);
+ analysis += '{';
+ Object.keys(subject).forEach(function (issue, _, __) {
+ // pseudo-private values. skip those.
+ if (issue.charAt(0) === '_') return;
+ var to = typeof subject[issue];
+ if (to === 'function' || to === 'undefined') return;
+ analysis += issue;
+ psychoAnalyze(subject[issue], session + 1);
+ });
+ }
+
+ psychoAnalyze(subject, 0);
+ return analysis;
+} // vim: set softtabstop=4 shiftwidth=4:
+
+var fnmatch = createCommonjsModule(function (module, exports) {
+ // Based on minimatch.js by isaacs <https://npmjs.org/package/minimatch>
+ var platform = typeof process === "object" ? process.platform : "win32";
+ if (module) module.exports = minimatch;else exports.minimatch = minimatch;
+ minimatch.Minimatch = Minimatch;
+ var cache = minimatch.cache = new lruCache({
+ max: 100
+ }),
+ GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {};
+ var qmark = "[^/]" // * => any number of characters
+ ,
+ star = qmark + "*?" // ** when dots are allowed. Anything goes, except .. and .
+ // not (^ or / followed by one or two dots followed by $ or /),
+ // followed by anything, any number of times.
+ ,
+ twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?" // not a ^ or / followed by a dot,
+ // followed by anything, any number of times.
+ ,
+ twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?" // characters that need to be escaped in RegExp.
+ ,
+ reSpecials = charSet("().*{}+?[]^$\\!"); // "abc" -> { a:true, b:true, c:true }
+
+ function charSet(s) {
+ return s.split("").reduce(function (set, c) {
+ set[c] = true;
+ return set;
+ }, {});
+ } // normalizes slashes.
+
+
+ var slashSplit = /\/+/;
+ minimatch.monkeyPatch = monkeyPatch;
+
+ function monkeyPatch() {
+ var desc = Object.getOwnPropertyDescriptor(String.prototype, "match");
+ var orig = desc.value;
+
+ desc.value = function (p) {
+ if (p instanceof Minimatch) return p.match(this);
+ return orig.call(this, p);
+ };
+
+ Object.defineProperty(String.prototype, desc);
+ }
+
+ minimatch.filter = filter;
+
+ function filter(pattern, options) {
+ options = options || {};
+ return function (p, i, list) {
+ return minimatch(p, pattern, options);
+ };
+ }
+
+ function ext(a, b) {
+ a = a || {};
+ b = b || {};
+ var t = {};
+ Object.keys(b).forEach(function (k) {
+ t[k] = b[k];
+ });
+ Object.keys(a).forEach(function (k) {
+ t[k] = a[k];
+ });
+ return t;
+ }
+
+ minimatch.defaults = function (def) {
+ if (!def || !Object.keys(def).length) return minimatch;
+ var orig = minimatch;
+
+ var m = function minimatch(p, pattern, options) {
+ return orig.minimatch(p, pattern, ext(def, options));
+ };
+
+ m.Minimatch = function Minimatch(pattern, options) {
+ return new orig.Minimatch(pattern, ext(def, options));
+ };
+
+ return m;
+ };
+
+ Minimatch.defaults = function (def) {
+ if (!def || !Object.keys(def).length) return Minimatch;
+ return minimatch.defaults(def).Minimatch;
+ };
+
+ function minimatch(p, pattern, options) {
+ if (typeof pattern !== "string") {
+ throw new TypeError("glob pattern string required");
+ }
+
+ if (!options) options = {}; // shortcut: comments match nothing.
+
+ if (!options.nocomment && pattern.charAt(0) === "#") {
+ return false;
+ } // "" only matches ""
+
+
+ if (pattern.trim() === "") return p === "";
+ return new Minimatch(pattern, options).match(p);
+ }
+
+ function Minimatch(pattern, options) {
+ if (!(this instanceof Minimatch)) {
+ return new Minimatch(pattern, options, cache);
+ }
+
+ if (typeof pattern !== "string") {
+ throw new TypeError("glob pattern string required");
+ }
+
+ if (!options) options = {}; // windows: need to use /, not \
+ // On other platforms, \ is a valid (albeit bad) filename char.
+
+ if (platform === "win32") {
+ pattern = pattern.split("\\").join("/");
+ } // lru storage.
+ // these things aren't particularly big, but walking down the string
+ // and turning it into a regexp can get pretty costly.
+
+
+ var cacheKey = pattern + "\n" + sigmund_1(options);
+ var cached = minimatch.cache.get(cacheKey);
+ if (cached) return cached;
+ minimatch.cache.set(cacheKey, this);
+ this.options = options;
+ this.set = [];
+ this.pattern = pattern;
+ this.regexp = null;
+ this.negate = false;
+ this.comment = false;
+ this.empty = false; // make the set of regexps etc.
+
+ this.make();
+ }
+
+ Minimatch.prototype.make = make;
+
+ function make() {
+ // don't do it more than once.
+ if (this._made) return;
+ var pattern = this.pattern;
+ var options = this.options; // empty patterns and comments match nothing.
+
+ if (!options.nocomment && pattern.charAt(0) === "#") {
+ this.comment = true;
+ return;
+ }
+
+ if (!pattern) {
+ this.empty = true;
+ return;
+ } // step 1: figure out negation, etc.
+
+
+ this.parseNegate(); // step 2: expand braces
+
+ var set = this.globSet = this.braceExpand();
+ if (options.debug) console.error(this.pattern, set); // step 3: now we have a set, so turn each one into a series of path-portion
+ // matching patterns.
+ // These will be regexps, except in the case of "**", which is
+ // set to the GLOBSTAR object for globstar behavior,
+ // and will not contain any / characters
+
+ set = this.globParts = set.map(function (s) {
+ return s.split(slashSplit);
+ });
+ if (options.debug) console.error(this.pattern, set); // glob --> regexps
+
+ set = set.map(function (s, si, set) {
+ return s.map(this.parse, this);
+ }, this);
+ if (options.debug) console.error(this.pattern, set); // filter out everything that didn't compile properly.
+
+ set = set.filter(function (s) {
+ return -1 === s.indexOf(false);
+ });
+ if (options.debug) console.error(this.pattern, set);
+ this.set = set;
+ }
+
+ Minimatch.prototype.parseNegate = parseNegate;
+
+ function parseNegate() {
+ var pattern = this.pattern,
+ negate = false,
+ options = this.options,
+ negateOffset = 0;
+ if (options.nonegate) return;
+
+ for (var i = 0, l = pattern.length; i < l && pattern.charAt(i) === "!"; i++) {
+ negate = !negate;
+ negateOffset++;
+ }
+
+ if (negateOffset) this.pattern = pattern.substr(negateOffset);
+ this.negate = negate;
+ } // Brace expansion:
+ // a{b,c}d -> abd acd
+ // a{b,}c -> abc ac
+ // a{0..3}d -> a0d a1d a2d a3d
+ // a{b,c{d,e}f}g -> abg acdfg acefg
+ // a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
+ //
+ // Invalid sets are not expanded.
+ // a{2..}b -> a{2..}b
+ // a{b}c -> a{b}c
+
+
+ minimatch.braceExpand = function (pattern, options) {
+ return new Minimatch(pattern, options).braceExpand();
+ };
+
+ Minimatch.prototype.braceExpand = braceExpand;
+
+ function braceExpand(pattern, options) {
+ options = options || this.options;
+ pattern = typeof pattern === "undefined" ? this.pattern : pattern;
+
+ if (typeof pattern === "undefined") {
+ throw new Error("undefined pattern");
+ }
+
+ if (options.nobrace || !pattern.match(/\{.*\}/)) {
+ // shortcut. no need to expand.
+ return [pattern];
+ }
+
+ var escaping = false; // examples and comments refer to this crazy pattern:
+ // a{b,c{d,e},{f,g}h}x{y,z}
+ // expected:
+ // abxy
+ // abxz
+ // acdxy
+ // acdxz
+ // acexy
+ // acexz
+ // afhxy
+ // afhxz
+ // aghxy
+ // aghxz
+ // everything before the first \{ is just a prefix.
+ // So, we pluck that off, and work with the rest,
+ // and then prepend it to everything we find.
+
+ if (pattern.charAt(0) !== "{") {
+ // console.error(pattern)
+ var prefix = null;
+
+ for (var i = 0, l = pattern.length; i < l; i++) {
+ var c = pattern.charAt(i); // console.error(i, c)
+
+ if (c === "\\") {
+ escaping = !escaping;
+ } else if (c === "{" && !escaping) {
+ prefix = pattern.substr(0, i);
+ break;
+ }
+ } // actually no sets, all { were escaped.
+
+
+ if (prefix === null) {
+ // console.error("no sets")
+ return [pattern];
+ }
+
+ var tail = braceExpand(pattern.substr(i), options);
+ return tail.map(function (t) {
+ return prefix + t;
+ });
+ } // now we have something like:
+ // {b,c{d,e},{f,g}h}x{y,z}
+ // walk through the set, expanding each part, until
+ // the set ends. then, we'll expand the suffix.
+ // If the set only has a single member, then'll put the {} back
+ // first, handle numeric sets, since they're easier
+
+
+ var numset = pattern.match(/^\{(-?[0-9]+)\.\.(-?[0-9]+)\}/);
+
+ if (numset) {
+ // console.error("numset", numset[1], numset[2])
+ var suf = braceExpand(pattern.substr(numset[0].length), options),
+ start = +numset[1],
+ end = +numset[2],
+ inc = start > end ? -1 : 1,
+ set = [];
+
+ for (var i = start; i != end + inc; i += inc) {
+ // append all the suffixes
+ for (var ii = 0, ll = suf.length; ii < ll; ii++) {
+ set.push(i + suf[ii]);
+ }
+ }
+
+ return set;
+ } // ok, walk through the set
+ // We hope, somewhat optimistically, that there
+ // will be a } at the end.
+ // If the closing brace isn't found, then the pattern is
+ // interpreted as braceExpand("\\" + pattern) so that
+ // the leading \{ will be interpreted literally.
+
+
+ var i = 1 // skip the \{
+ ,
+ depth = 1,
+ set = [],
+ member = "",
+ escaping = false;
+
+ function addMember() {
+ set.push(member);
+ member = "";
+ } // console.error("Entering for")
+
+
+ FOR: for (i = 1, l = pattern.length; i < l; i++) {
+ var c = pattern.charAt(i); // console.error("", i, c)
+
+ if (escaping) {
+ escaping = false;
+ member += "\\" + c;
+ } else {
+ switch (c) {
+ case "\\":
+ escaping = true;
+ continue;
+
+ case "{":
+ depth++;
+ member += "{";
+ continue;
+
+ case "}":
+ depth--; // if this closes the actual set, then we're done
+
+ if (depth === 0) {
+ addMember(); // pluck off the close-brace
+
+ i++;
+ break FOR;
+ } else {
+ member += c;
+ continue;
+ }
+
+ case ",":
+ if (depth === 1) {
+ addMember();
+ } else {
+ member += c;
+ }
+
+ continue;
+
+ default:
+ member += c;
+ continue;
+ } // switch
+
+ } // else
+
+ } // for
+ // now we've either finished the set, and the suffix is
+ // pattern.substr(i), or we have *not* closed the set,
+ // and need to escape the leading brace
+
+
+ if (depth !== 0) {
+ // console.error("didn't close", pattern)
+ return braceExpand("\\" + pattern, options);
+ } // x{y,z} -> ["xy", "xz"]
+ // console.error("set", set)
+ // console.error("suffix", pattern.substr(i))
+
+
+ var suf = braceExpand(pattern.substr(i), options); // ["b", "c{d,e}","{f,g}h"] ->
+ // [["b"], ["cd", "ce"], ["fh", "gh"]]
+
+ var addBraces = set.length === 1; // console.error("set pre-expanded", set)
+
+ set = set.map(function (p) {
+ return braceExpand(p, options);
+ }); // console.error("set expanded", set)
+ // [["b"], ["cd", "ce"], ["fh", "gh"]] ->
+ // ["b", "cd", "ce", "fh", "gh"]
+
+ set = set.reduce(function (l, r) {
+ return l.concat(r);
+ });
+
+ if (addBraces) {
+ set = set.map(function (s) {
+ return "{" + s + "}";
+ });
+ } // now attach the suffixes.
+
+
+ var ret = [];
+
+ for (var i = 0, l = set.length; i < l; i++) {
+ for (var ii = 0, ll = suf.length; ii < ll; ii++) {
+ ret.push(set[i] + suf[ii]);
+ }
+ }
+
+ return ret;
+ } // parse a component of the expanded set.
+ // At this point, no pattern may contain "/" in it
+ // so we're going to return a 2d array, where each entry is the full
+ // pattern, split on '/', and then turned into a regular expression.
+ // A regexp is made at the end which joins each array with an
+ // escaped /, and another full one which joins each regexp with |.
+ //
+ // Following the lead of Bash 4.1, note that "**" only has special meaning
+ // when it is the *only* thing in a path portion. Otherwise, any series
+ // of * is equivalent to a single *. Globstar behavior is enabled by
+ // default, and can be disabled by setting options.noglobstar.
+
+
+ Minimatch.prototype.parse = parse;
+ var SUBPARSE = {};
+
+ function parse(pattern, isSub) {
+ var options = this.options; // shortcuts
+
+ if (!options.noglobstar && pattern === "**") return GLOBSTAR;
+ if (pattern === "") return "";
+ var re = "",
+ hasMagic = !!options.nocase,
+ escaping = false // ? => one single character
+ ,
+ patternListStack = [],
+ plType,
+ stateChar,
+ inClass = false,
+ reClassStart = -1,
+ classStart = -1 // . and .. never match anything that doesn't start with .,
+ // even when options.dot is set.
+ ,
+ patternStart = pattern.charAt(0) === "." ? "" // anything
+ // not (start or / followed by . or .. followed by / or end)
+ : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))" : "(?!\\.)";
+
+ function clearStateChar() {
+ if (stateChar) {
+ // we had some state-tracking character
+ // that wasn't consumed by this pass.
+ switch (stateChar) {
+ case "*":
+ re += star;
+ hasMagic = true;
+ break;
+
+ case "?":
+ re += qmark;
+ hasMagic = true;
+ break;
+
+ default:
+ re += "\\" + stateChar;
+ break;
+ }
+
+ stateChar = false;
+ }
+ }
+
+ for (var i = 0, len = pattern.length, c; i < len && (c = pattern.charAt(i)); i++) {
+ if (options.debug) {
+ console.error("%s\t%s %s %j", pattern, i, re, c);
+ } // skip over any that are escaped.
+
+
+ if (escaping && reSpecials[c]) {
+ re += "\\" + c;
+ escaping = false;
+ continue;
+ }
+
+ switch (c) {
+ case "/":
+ // completely not allowed, even escaped.
+ // Should already be path-split by now.
+ return false;
+
+ case "\\":
+ clearStateChar();
+ escaping = true;
+ continue;
+ // the various stateChar values
+ // for the "extglob" stuff.
+
+ case "?":
+ case "*":
+ case "+":
+ case "@":
+ case "!":
+ if (options.debug) {
+ console.error("%s\t%s %s %j <-- stateChar", pattern, i, re, c);
+ } // all of those are literals inside a class, except that
+ // the glob [!a] means [^a] in regexp
+
+
+ if (inClass) {
+ if (c === "!" && i === classStart + 1) c = "^";
+ re += c;
+ continue;
+ } // if we already have a stateChar, then it means
+ // that there was something like ** or +? in there.
+ // Handle the stateChar, then proceed with this one.
+
+
+ clearStateChar();
+ stateChar = c; // if extglob is disabled, then +(asdf|foo) isn't a thing.
+ // just clear the statechar *now*, rather than even diving into
+ // the patternList stuff.
+
+ if (options.noext) clearStateChar();
+ continue;
+
+ case "(":
+ if (inClass) {
+ re += "(";
+ continue;
+ }
+
+ if (!stateChar) {
+ re += "\\(";
+ continue;
+ }
+
+ plType = stateChar;
+ patternListStack.push({
+ type: plType,
+ start: i - 1,
+ reStart: re.length
+ }); // negation is (?:(?!js)[^/]*)
+
+ re += stateChar === "!" ? "(?:(?!" : "(?:";
+ stateChar = false;
+ continue;
+
+ case ")":
+ if (inClass || !patternListStack.length) {
+ re += "\\)";
+ continue;
+ }
+
+ hasMagic = true;
+ re += ")";
+ plType = patternListStack.pop().type; // negation is (?:(?!js)[^/]*)
+ // The others are (?:<pattern>)<type>
+
+ switch (plType) {
+ case "!":
+ re += "[^/]*?)";
+ break;
+
+ case "?":
+ case "+":
+ case "*":
+ re += plType;
+ // the default anyway
+ }
+
+ continue;
+
+ case "|":
+ if (inClass || !patternListStack.length || escaping) {
+ re += "\\|";
+ escaping = false;
+ continue;
+ }
+
+ re += "|";
+ continue;
+ // these are mostly the same in regexp and glob
+
+ case "[":
+ // swallow any state-tracking char before the [
+ clearStateChar();
+
+ if (inClass) {
+ re += "\\" + c;
+ continue;
+ }
+
+ inClass = true;
+ classStart = i;
+ reClassStart = re.length;
+ re += c;
+ continue;
+
+ case "]":
+ // a right bracket shall lose its special
+ // meaning and represent itself in
+ // a bracket expression if it occurs
+ // first in the list. -- POSIX.2 2.8.3.2
+ if (i === classStart + 1 || !inClass) {
+ re += "\\" + c;
+ escaping = false;
+ continue;
+ } // finish up the class.
+
+
+ hasMagic = true;
+ inClass = false;
+ re += c;
+ continue;
+
+ default:
+ // swallow any state char that wasn't consumed
+ clearStateChar();
+
+ if (escaping) {
+ // no need
+ escaping = false;
+ } else if (reSpecials[c] && !(c === "^" && inClass)) {
+ re += "\\";
+ }
+
+ re += c;
+ } // switch
+
+ } // for
+ // handle the case where we left a class open.
+ // "[abc" is valid, equivalent to "\[abc"
+
+
+ if (inClass) {
+ // split where the last [ was, and escape it
+ // this is a huge pita. We now have to re-walk
+ // the contents of the would-be class to re-translate
+ // any characters that were passed through as-is
+ var cs = pattern.substr(classStart + 1),
+ sp = this.parse(cs, SUBPARSE);
+ re = re.substr(0, reClassStart) + "\\[" + sp[0];
+ hasMagic = hasMagic || sp[1];
+ } // handle the case where we had a +( thing at the *end*
+ // of the pattern.
+ // each pattern list stack adds 3 chars, and we need to go through
+ // and escape any | chars that were passed through as-is for the regexp.
+ // Go through and escape them, taking care not to double-escape any
+ // | chars that were already escaped.
+
+
+ var pl;
+
+ while (pl = patternListStack.pop()) {
+ var tail = re.slice(pl.reStart + 3); // maybe some even number of \, then maybe 1 \, followed by a |
+
+ tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) {
+ if (!$2) {
+ // the | isn't already escaped, so escape it.
+ $2 = "\\";
+ } // need to escape all those slashes *again*, without escaping the
+ // one that we need for escaping the | character. As it works out,
+ // escaping an even number of slashes can be done by simply repeating
+ // it exactly after itself. That's why this trick works.
+ //
+ // I am sorry that you have to see this.
+
+
+ return $1 + $1 + $2 + "|";
+ }); // console.error("tail=%j\n %s", tail, tail)
+
+ var t = pl.type === "*" ? star : pl.type === "?" ? qmark : "\\" + pl.type;
+ hasMagic = true;
+ re = re.slice(0, pl.reStart) + t + "\\(" + tail;
+ } // handle trailing things that only matter at the very end.
+
+
+ clearStateChar();
+
+ if (escaping) {
+ // trailing \\
+ re += "\\\\";
+ } // only need to apply the nodot start if the re starts with
+ // something that could conceivably capture a dot
+
+
+ var addPatternStart = false;
+
+ switch (re.charAt(0)) {
+ case ".":
+ case "[":
+ case "(":
+ addPatternStart = true;
+ } // if the re is not "" at this point, then we need to make sure
+ // it doesn't match against an empty path part.
+ // Otherwise a/* will match a/, which it should not.
+
+
+ if (re !== "" && hasMagic) re = "(?=.)" + re;
+ if (addPatternStart) re = patternStart + re; // parsing just a piece of a larger pattern.
+
+ if (isSub === SUBPARSE) {
+ return [re, hasMagic];
+ } // skip the regexp for non-magical patterns
+ // unescape anything in it, though, so that it'll be
+ // an exact match against a file etc.
+
+
+ if (!hasMagic) {
+ return globUnescape(pattern);
+ }
+
+ var flags = options.nocase ? "i" : "",
+ regExp = new RegExp("^" + re + "$", flags);
+ regExp._glob = pattern;
+ regExp._src = re;
+ return regExp;
+ }
+
+ minimatch.makeRe = function (pattern, options) {
+ return new Minimatch(pattern, options || {}).makeRe();
+ };
+
+ Minimatch.prototype.makeRe = makeRe;
+
+ function makeRe() {
+ if (this.regexp || this.regexp === false) return this.regexp; // at this point, this.set is a 2d array of partial
+ // pattern strings, or "**".
+ //
+ // It's better to use .match(). This function shouldn't
+ // be used, really, but it's pretty convenient sometimes,
+ // when you just want to work with a regex.
+
+ var set = this.set;
+ if (!set.length) return this.regexp = false;
+ var options = this.options;
+ var twoStar = options.noglobstar ? star : options.dot ? twoStarDot : twoStarNoDot,
+ flags = options.nocase ? "i" : "";
+ var re = set.map(function (pattern) {
+ return pattern.map(function (p) {
+ return p === GLOBSTAR ? twoStar : typeof p === "string" ? regExpEscape(p) : p._src;
+ }).join("\\\/");
+ }).join("|"); // must match entire pattern
+ // ending in a * or ** will make it less strict.
+
+ re = "^(?:" + re + ")$"; // can match anything, as long as it's not this.
+
+ if (this.negate) re = "^(?!" + re + ").*$";
+
+ try {
+ return this.regexp = new RegExp(re, flags);
+ } catch (ex) {
+ return this.regexp = false;
+ }
+ }
+
+ minimatch.match = function (list, pattern, options) {
+ var mm = new Minimatch(pattern, options);
+ list = list.filter(function (f) {
+ return mm.match(f);
+ });
+
+ if (options.nonull && !list.length) {
+ list.push(pattern);
+ }
+
+ return list;
+ };
+
+ Minimatch.prototype.match = match;
+
+ function match(f, partial) {
+ // console.error("match", f, this.pattern)
+ // short-circuit in the case of busted things.
+ // comments, etc.
+ if (this.comment) return false;
+ if (this.empty) return f === "";
+ if (f === "/" && partial) return true;
+ var options = this.options; // windows: need to use /, not \
+ // On other platforms, \ is a valid (albeit bad) filename char.
+
+ if (platform === "win32") {
+ f = f.split("\\").join("/");
+ } // treat the test path as a set of pathparts.
+
+
+ f = f.split(slashSplit);
+
+ if (options.debug) {
+ console.error(this.pattern, "split", f);
+ } // just ONE of the pattern sets in this.set needs to match
+ // in order for it to be valid. If negating, then just one
+ // match means that we have failed.
+ // Either way, return on the first hit.
+
+
+ var set = this.set; // console.error(this.pattern, "set", set)
+
+ for (var i = 0, l = set.length; i < l; i++) {
+ var pattern = set[i];
+ var hit = this.matchOne(f, pattern, partial);
+
+ if (hit) {
+ if (options.flipNegate) return true;
+ return !this.negate;
+ }
+ } // didn't get any hits. this is success if it's a negative
+ // pattern, failure otherwise.
+
+
+ if (options.flipNegate) return false;
+ return this.negate;
+ } // set partial to true to test if, for example,
+ // "/a/b" matches the start of "/*/b/*/d"
+ // Partial means, if you run out of file before you run
+ // out of pattern, then that's fine, as long as all
+ // the parts match.
+
+
+ Minimatch.prototype.matchOne = function (file, pattern, partial) {
+ var options = this.options;
+
+ if (options.debug) {
+ console.error("matchOne", {
+ "this": this,
+ file: file,
+ pattern: pattern
+ });
+ }
+
+ if (options.matchBase && pattern.length === 1) {
+ file = path$2.basename(file.join("/")).split("/");
+ }
+
+ if (options.debug) {
+ console.error("matchOne", file.length, pattern.length);
+ }
+
+ for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
+ if (options.debug) {
+ console.error("matchOne loop");
+ }
+
+ var p = pattern[pi],
+ f = file[fi];
+
+ if (options.debug) {
+ console.error(pattern, p, f);
+ } // should be impossible.
+ // some invalid regexp stuff in the set.
+
+
+ if (p === false) return false;
+
+ if (p === GLOBSTAR) {
+ if (options.debug) console.error('GLOBSTAR', [pattern, p, f]); // "**"
+ // a/**/b/**/c would match the following:
+ // a/b/x/y/z/c
+ // a/x/y/z/b/c
+ // a/b/x/b/x/c
+ // a/b/c
+ // To do this, take the rest of the pattern after
+ // the **, and see if it would match the file remainder.
+ // If so, return success.
+ // If not, the ** "swallows" a segment, and try again.
+ // This is recursively awful.
+ //
+ // a/**/b/**/c matching a/b/x/y/z/c
+ // - a matches a
+ // - doublestar
+ // - matchOne(b/x/y/z/c, b/**/c)
+ // - b matches b
+ // - doublestar
+ // - matchOne(x/y/z/c, c) -> no
+ // - matchOne(y/z/c, c) -> no
+ // - matchOne(z/c, c) -> no
+ // - matchOne(c, c) yes, hit
+
+ var fr = fi,
+ pr = pi + 1;
+
+ if (pr === pl) {
+ if (options.debug) console.error('** at the end'); // a ** at the end will just swallow the rest.
+ // We have found a match.
+ // however, it will not swallow /.x, unless
+ // options.dot is set.
+ // . and .. are *never* matched by **, for explosively
+ // exponential reasons.
+
+ for (; fi < fl; fi++) {
+ if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".") return false;
+ }
+
+ return true;
+ } // ok, let's see if we can swallow whatever we can.
+
+
+ WHILE: while (fr < fl) {
+ var swallowee = file[fr];
+
+ if (options.debug) {
+ console.error('\nglobstar while', file, fr, pattern, pr, swallowee);
+ } // XXX remove this slice. Just pass the start index.
+
+
+ if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
+ if (options.debug) console.error('globstar found match!', fr, fl, swallowee); // found a match.
+
+ return true;
+ } else {
+ // can't swallow "." or ".." ever.
+ // can only swallow ".foo" when explicitly asked.
+ if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") {
+ if (options.debug) console.error("dot detected!", file, fr, pattern, pr);
+ break WHILE;
+ } // ** swallows a segment, and continue.
+
+
+ if (options.debug) console.error('globstar swallow a segment, and continue');
+ fr++;
+ }
+ } // no match was found.
+ // However, in partial mode, we can't say this is necessarily over.
+ // If there's more *pattern* left, then
+
+
+ if (partial) {
+ // ran out of file
+ // console.error("\n>>> no match, partial?", file, fr, pattern, pr)
+ if (fr === fl) return true;
+ }
+
+ return false;
+ } // something other than **
+ // non-magic patterns just have to match exactly
+ // patterns with magic have been turned into regexps.
+
+
+ var hit;
+
+ if (typeof p === "string") {
+ if (options.nocase) {
+ hit = f.toLowerCase() === p.toLowerCase();
+ } else {
+ hit = f === p;
+ }
+
+ if (options.debug) {
+ console.error("string match", p, f, hit);
+ }
+ } else {
+ hit = f.match(p);
+
+ if (options.debug) {
+ console.error("pattern match", p, f, hit);
+ }
+ }
+
+ if (!hit) return false;
+ } // Note: ending in / means that we'll get a final ""
+ // at the end of the pattern. This can only match a
+ // corresponding "" at the end of the file.
+ // If the file ends in /, then it can only match a
+ // a pattern that ends in /, unless the pattern just
+ // doesn't have any more for it. But, a/b/ should *not*
+ // match "a/b/*", even though "" matches against the
+ // [^/]*? pattern, except in partial mode, where it might
+ // simply not be reached yet.
+ // However, a/b/ should still satisfy a/*
+ // now either we fell off the end of the pattern, or we're done.
+
+
+ if (fi === fl && pi === pl) {
+ // ran out of pattern and filename at the same time.
+ // an exact hit!
+ return true;
+ } else if (fi === fl) {
+ // ran out of file, but still had pattern left.
+ // this is ok if we're doing the match as part of
+ // a glob fs traversal.
+ return partial;
+ } else if (pi === pl) {
+ // ran out of pattern, still have file left.
+ // this is only acceptable if we're on the very last
+ // empty segment of a file with a trailing slash.
+ // a/* should match a/b/
+ var emptyFileEnd = fi === fl - 1 && file[fi] === "";
+ return emptyFileEnd;
+ } // should be unreachable.
+
+
+ throw new Error("wtf?");
+ }; // replace stuff like \* with *
+
+
+ function globUnescape(s) {
+ return s.replace(/\\(.)/g, "$1");
+ }
+
+ function regExpEscape(s) {
+ return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
+ }
+});
+var fnmatch_1 = fnmatch.minimatch;
+
+var ini = createCommonjsModule(function (module, exports) {
+
+ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) {
+ try {
+ step(generator.next(value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function rejected(value) {
+ try {
+ step(generator["throw"](value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function step(result) {
+ result.done ? resolve(result.value) : new P(function (resolve) {
+ resolve(result.value);
+ }).then(fulfilled, rejected);
+ }
+
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ };
+
+ var __generator = this && this.__generator || function (thisArg, body) {
+ var _ = {
+ label: 0,
+ sent: function sent() {
+ if (t[0] & 1) throw t[1];
+ return t[1];
+ },
+ trys: [],
+ ops: []
+ },
+ f,
+ y,
+ t,
+ g;
+ return g = {
+ next: verb(0),
+ "throw": verb(1),
+ "return": verb(2)
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
+ return this;
+ }), g;
+
+ function verb(n) {
+ return function (v) {
+ return step([n, v]);
+ };
+ }
+
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+
+ while (_) {
+ try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+
+ switch (op[0]) {
+ case 0:
+ case 1:
+ t = op;
+ break;
+
+ case 4:
+ _.label++;
+ return {
+ value: op[1],
+ done: false
+ };
+
+ case 5:
+ _.label++;
+ y = op[1];
+ op = [0];
+ continue;
+
+ case 7:
+ op = _.ops.pop();
+
+ _.trys.pop();
+
+ continue;
+
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
+ _ = 0;
+ continue;
+ }
+
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
+ _.label = op[1];
+ break;
+ }
+
+ if (op[0] === 6 && _.label < t[1]) {
+ _.label = t[1];
+ t = op;
+ break;
+ }
+
+ if (t && _.label < t[2]) {
+ _.label = t[2];
+
+ _.ops.push(op);
+
+ break;
+ }
+
+ if (t[2]) _.ops.pop();
+
+ _.trys.pop();
+
+ continue;
+ }
+
+ op = body.call(thisArg, _);
+ } catch (e) {
+ op = [6, e];
+ y = 0;
+ } finally {
+ f = t = 0;
+ }
+ }
+
+ if (op[0] & 5) throw op[1];
+ return {
+ value: op[0] ? op[1] : void 0,
+ done: true
+ };
+ }
+ };
+
+ var __importStar = this && this.__importStar || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) {
+ if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+ }
+ result["default"] = mod;
+ return result;
+ };
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var fs = __importStar(fs$1);
+ /**
+ * define the possible values:
+ * section: [section]
+ * param: key=value
+ * comment: ;this is a comment
+ */
+
+
+ var regex = {
+ section: /^\s*\[(([^#;]|\\#|\\;)+)\]\s*([#;].*)?$/,
+ param: /^\s*([\w\.\-\_]+)\s*[=:]\s*(.*?)\s*([#;].*)?$/,
+ comment: /^\s*[#;].*$/
+ };
+ /**
+ * Parses an .ini file
+ * @param file The location of the .ini file
+ */
+
+ function parse(file) {
+ return __awaiter(this, void 0, void 0, function () {
+ return __generator(this, function (_a) {
+ return [2
+ /*return*/
+ , new Promise(function (resolve, reject) {
+ fs.readFile(file, 'utf8', function (err, data) {
+ if (err) {
+ reject(err);
+ return;
+ }
+
+ resolve(parseString(data));
+ });
+ })];
+ });
+ });
+ }
+
+ exports.parse = parse;
+
+ function parseSync(file) {
+ return parseString(fs.readFileSync(file, 'utf8'));
+ }
+
+ exports.parseSync = parseSync;
+
+ function parseString(data) {
+ var sectionBody = {};
+ var sectionName = null;
+ var value = [[sectionName, sectionBody]];
+ var lines = data.split(/\r\n|\r|\n/);
+ lines.forEach(function (line) {
+ var match;
+
+ if (regex.comment.test(line)) {
+ return;
+ }
+
+ if (regex.param.test(line)) {
+ match = line.match(regex.param);
+ sectionBody[match[1]] = match[2];
+ } else if (regex.section.test(line)) {
+ match = line.match(regex.section);
+ sectionName = match[1];
+ sectionBody = {};
+ value.push([sectionName, sectionBody]);
+ }
+ });
+ return value;
+ }
+
+ exports.parseString = parseString;
+});
+unwrapExports(ini);
+var ini_1 = ini.parse;
+var ini_2 = ini.parseSync;
+var ini_3 = ini.parseString;
+
+var name$1 = "editorconfig";
+var version$1 = "0.15.3";
+var description$1 = "EditorConfig File Locator and Interpreter for Node.js";
+var keywords = [
+ "editorconfig",
+ "core"
+];
+var main$1 = "src/index.js";
+var contributors = [
+ "Hong Xu (topbug.net)",
+ "Jed Mao (https://github.com/jedmao/)",
+ "Trey Hunner (http://treyhunner.com)"
+];
+var directories = {
+ bin: "./bin",
+ lib: "./lib"
+};
+var scripts$1 = {
+ clean: "rimraf dist",
+ prebuild: "npm run clean",
+ build: "tsc",
+ pretest: "npm run lint && npm run build && npm run copy && cmake .",
+ test: "ctest .",
+ "pretest:ci": "npm run pretest",
+ "test:ci": "ctest -VV --output-on-failure .",
+ lint: "npm run eclint && npm run tslint",
+ eclint: "eclint check --indent_size ignore \"src/**\"",
+ tslint: "tslint --project tsconfig.json --exclude package.json",
+ copy: "cpy .npmignore LICENSE README.md CHANGELOG.md dist && cpy bin/* dist/bin && cpy src/lib/fnmatch*.* dist/src/lib",
+ prepub: "npm run lint && npm run build && npm run copy",
+ pub: "npm publish ./dist"
+};
+var repository$1 = {
+ type: "git",
+ url: "git://github.com/editorconfig/editorconfig-core-js.git"
+};
+var bugs = "https://github.com/editorconfig/editorconfig-core-js/issues";
+var author$1 = "EditorConfig Team";
+var license$1 = "MIT";
+var dependencies$1 = {
+ commander: "^2.19.0",
+ "lru-cache": "^4.1.5",
+ semver: "^5.6.0",
+ sigmund: "^1.0.1"
+};
+var devDependencies$1 = {
+ "@types/mocha": "^5.2.6",
+ "@types/node": "^10.12.29",
+ "@types/semver": "^5.5.0",
+ "cpy-cli": "^2.0.0",
+ eclint: "^2.8.1",
+ mocha: "^5.2.0",
+ rimraf: "^2.6.3",
+ should: "^13.2.3",
+ tslint: "^5.13.1",
+ typescript: "^3.3.3333"
+};
+var _package$2 = {
+ name: name$1,
+ version: version$1,
+ description: description$1,
+ keywords: keywords,
+ main: main$1,
+ contributors: contributors,
+ directories: directories,
+ scripts: scripts$1,
+ repository: repository$1,
+ bugs: bugs,
+ author: author$1,
+ license: license$1,
+ dependencies: dependencies$1,
+ devDependencies: devDependencies$1
+};
+
+var _package$3 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$1,
+ version: version$1,
+ description: description$1,
+ keywords: keywords,
+ main: main$1,
+ contributors: contributors,
+ directories: directories,
+ scripts: scripts$1,
+ repository: repository$1,
+ bugs: bugs,
+ author: author$1,
+ license: license$1,
+ dependencies: dependencies$1,
+ devDependencies: devDependencies$1,
+ 'default': _package$2
+});
+
+var require$$4 = getCjsExportFromNamespace(_package$3);
+
+var src = createCommonjsModule(function (module, exports) {
+
+ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) {
+ try {
+ step(generator.next(value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function rejected(value) {
+ try {
+ step(generator["throw"](value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function step(result) {
+ result.done ? resolve(result.value) : new P(function (resolve) {
+ resolve(result.value);
+ }).then(fulfilled, rejected);
+ }
+
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ };
+
+ var __generator = this && this.__generator || function (thisArg, body) {
+ var _ = {
+ label: 0,
+ sent: function sent() {
+ if (t[0] & 1) throw t[1];
+ return t[1];
+ },
+ trys: [],
+ ops: []
+ },
+ f,
+ y,
+ t,
+ g;
+ return g = {
+ next: verb(0),
+ "throw": verb(1),
+ "return": verb(2)
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
+ return this;
+ }), g;
+
+ function verb(n) {
+ return function (v) {
+ return step([n, v]);
+ };
+ }
+
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+
+ while (_) {
+ try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+
+ switch (op[0]) {
+ case 0:
+ case 1:
+ t = op;
+ break;
+
+ case 4:
+ _.label++;
+ return {
+ value: op[1],
+ done: false
+ };
+
+ case 5:
+ _.label++;
+ y = op[1];
+ op = [0];
+ continue;
+
+ case 7:
+ op = _.ops.pop();
+
+ _.trys.pop();
+
+ continue;
+
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
+ _ = 0;
+ continue;
+ }
+
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
+ _.label = op[1];
+ break;
+ }
+
+ if (op[0] === 6 && _.label < t[1]) {
+ _.label = t[1];
+ t = op;
+ break;
+ }
+
+ if (t && _.label < t[2]) {
+ _.label = t[2];
+
+ _.ops.push(op);
+
+ break;
+ }
+
+ if (t[2]) _.ops.pop();
+
+ _.trys.pop();
+
+ continue;
+ }
+
+ op = body.call(thisArg, _);
+ } catch (e) {
+ op = [6, e];
+ y = 0;
+ } finally {
+ f = t = 0;
+ }
+ }
+
+ if (op[0] & 5) throw op[1];
+ return {
+ value: op[0] ? op[1] : void 0,
+ done: true
+ };
+ }
+ };
+
+ var __importStar = this && this.__importStar || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) {
+ if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+ }
+ result["default"] = mod;
+ return result;
+ };
+
+ var __importDefault = this && this.__importDefault || function (mod) {
+ return mod && mod.__esModule ? mod : {
+ "default": mod
+ };
+ };
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var fs = __importStar(fs$1);
+
+ var path = __importStar(path$2);
+
+ var semver = __importStar(semver$1);
+
+ var fnmatch_1 = __importDefault(fnmatch);
+
+ exports.parseString = ini.parseString;
+
+ var package_json_1 = __importDefault(require$$4);
+
+ var knownProps = {
+ end_of_line: true,
+ indent_style: true,
+ indent_size: true,
+ insert_final_newline: true,
+ trim_trailing_whitespace: true,
+ charset: true
+ };
+
+ function fnmatch$1(filepath, glob) {
+ var matchOptions = {
+ matchBase: true,
+ dot: true,
+ noext: true
+ };
+ glob = glob.replace(/\*\*/g, '{*,**/**/**}');
+ return fnmatch_1.default(filepath, glob, matchOptions);
+ }
+
+ function getConfigFileNames(filepath, options) {
+ var paths = [];
+
+ do {
+ filepath = path.dirname(filepath);
+ paths.push(path.join(filepath, options.config));
+ } while (filepath !== options.root);
+
+ return paths;
+ }
+
+ function processMatches(matches, version) {
+ // Set indent_size to 'tab' if indent_size is unspecified and
+ // indent_style is set to 'tab'.
+ if ('indent_style' in matches && matches.indent_style === 'tab' && !('indent_size' in matches) && semver.gte(version, '0.10.0')) {
+ matches.indent_size = 'tab';
+ } // Set tab_width to indent_size if indent_size is specified and
+ // tab_width is unspecified
+
+
+ if ('indent_size' in matches && !('tab_width' in matches) && matches.indent_size !== 'tab') {
+ matches.tab_width = matches.indent_size;
+ } // Set indent_size to tab_width if indent_size is 'tab'
+
+
+ if ('indent_size' in matches && 'tab_width' in matches && matches.indent_size === 'tab') {
+ matches.indent_size = matches.tab_width;
+ }
+
+ return matches;
+ }
+
+ function processOptions(options, filepath) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ return {
+ config: options.config || '.editorconfig',
+ version: options.version || package_json_1.default.version,
+ root: path.resolve(options.root || path.parse(filepath).root)
+ };
+ }
+
+ function buildFullGlob(pathPrefix, glob) {
+ switch (glob.indexOf('/')) {
+ case -1:
+ glob = '**/' + glob;
+ break;
+
+ case 0:
+ glob = glob.substring(1);
+ break;
+ }
+
+ return path.join(pathPrefix, glob);
+ }
+
+ function extendProps(props, options) {
+ if (props === void 0) {
+ props = {};
+ }
+
+ if (options === void 0) {
+ options = {};
+ }
+
+ for (var key in options) {
+ if (options.hasOwnProperty(key)) {
+ var value = options[key];
+ var key2 = key.toLowerCase();
+ var value2 = value;
+
+ if (knownProps[key2]) {
+ value2 = value.toLowerCase();
+ }
+
+ try {
+ value2 = JSON.parse(value);
+ } catch (e) {}
+
+ if (typeof value === 'undefined' || value === null) {
+ // null and undefined are values specific to JSON (no special meaning
+ // in editorconfig) & should just be returned as regular strings.
+ value2 = String(value);
+ }
+
+ props[key2] = value2;
+ }
+ }
+
+ return props;
+ }
+
+ function parseFromConfigs(configs, filepath, options) {
+ return processMatches(configs.reverse().reduce(function (matches, file) {
+ var pathPrefix = path.dirname(file.name);
+ file.contents.forEach(function (section) {
+ var glob = section[0];
+ var options2 = section[1];
+
+ if (!glob) {
+ return;
+ }
+
+ var fullGlob = buildFullGlob(pathPrefix, glob);
+
+ if (!fnmatch$1(filepath, fullGlob)) {
+ return;
+ }
+
+ matches = extendProps(matches, options2);
+ });
+ return matches;
+ }, {}), options.version);
+ }
+
+ function getConfigsForFiles(files) {
+ var configs = [];
+
+ for (var i in files) {
+ if (files.hasOwnProperty(i)) {
+ var file = files[i];
+ var contents = ini.parseString(file.contents);
+ configs.push({
+ name: file.name,
+ contents: contents
+ });
+
+ if ((contents[0][1].root || '').toLowerCase() === 'true') {
+ break;
+ }
+ }
+ }
+
+ return configs;
+ }
+
+ function readConfigFiles(filepaths) {
+ return __awaiter(this, void 0, void 0, function () {
+ return __generator(this, function (_a) {
+ return [2
+ /*return*/
+ , Promise.all(filepaths.map(function (name) {
+ return new Promise(function (resolve) {
+ fs.readFile(name, 'utf8', function (err, data) {
+ resolve({
+ name: name,
+ contents: err ? '' : data
+ });
+ });
+ });
+ }))];
+ });
+ });
+ }
+
+ function readConfigFilesSync(filepaths) {
+ var files = [];
+ var file;
+ filepaths.forEach(function (filepath) {
+ try {
+ file = fs.readFileSync(filepath, 'utf8');
+ } catch (e) {
+ file = '';
+ }
+
+ files.push({
+ name: filepath,
+ contents: file
+ });
+ });
+ return files;
+ }
+
+ function opts(filepath, options) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ var resolvedFilePath = path.resolve(filepath);
+ return [resolvedFilePath, processOptions(options, resolvedFilePath)];
+ }
+
+ function parseFromFiles(filepath, files, options) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ return __awaiter(this, void 0, void 0, function () {
+ var _a, resolvedFilePath, processedOptions;
+
+ return __generator(this, function (_b) {
+ _a = opts(filepath, options), resolvedFilePath = _a[0], processedOptions = _a[1];
+ return [2
+ /*return*/
+ , files.then(getConfigsForFiles).then(function (configs) {
+ return parseFromConfigs(configs, resolvedFilePath, processedOptions);
+ })];
+ });
+ });
+ }
+
+ exports.parseFromFiles = parseFromFiles;
+
+ function parseFromFilesSync(filepath, files, options) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ var _a = opts(filepath, options),
+ resolvedFilePath = _a[0],
+ processedOptions = _a[1];
+
+ return parseFromConfigs(getConfigsForFiles(files), resolvedFilePath, processedOptions);
+ }
+
+ exports.parseFromFilesSync = parseFromFilesSync;
+
+ function parse(_filepath, _options) {
+ if (_options === void 0) {
+ _options = {};
+ }
+
+ return __awaiter(this, void 0, void 0, function () {
+ var _a, resolvedFilePath, processedOptions, filepaths;
+
+ return __generator(this, function (_b) {
+ _a = opts(_filepath, _options), resolvedFilePath = _a[0], processedOptions = _a[1];
+ filepaths = getConfigFileNames(resolvedFilePath, processedOptions);
+ return [2
+ /*return*/
+ , readConfigFiles(filepaths).then(getConfigsForFiles).then(function (configs) {
+ return parseFromConfigs(configs, resolvedFilePath, processedOptions);
+ })];
+ });
+ });
+ }
+
+ exports.parse = parse;
+
+ function parseSync(_filepath, _options) {
+ if (_options === void 0) {
+ _options = {};
+ }
+
+ var _a = opts(_filepath, _options),
+ resolvedFilePath = _a[0],
+ processedOptions = _a[1];
+
+ var filepaths = getConfigFileNames(resolvedFilePath, processedOptions);
+ var files = readConfigFilesSync(filepaths);
+ return parseFromConfigs(getConfigsForFiles(files), resolvedFilePath, processedOptions);
+ }
+
+ exports.parseSync = parseSync;
+});
+unwrapExports(src);
+var src_1 = src.parseString;
+var src_2 = src.parseFromFiles;
+var src_3 = src.parseFromFilesSync;
+var src_4 = src.parse;
+var src_5 = src.parseSync;
+
+var editorconfigToPrettier = editorConfigToPrettier;
+
+function removeUnset(editorConfig) {
+ var result = {};
+ var keys = Object.keys(editorConfig);
+
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+
+ if (editorConfig[key] === "unset") {
+ continue;
+ }
+
+ result[key] = editorConfig[key];
+ }
+
+ return result;
+}
+
+function editorConfigToPrettier(editorConfig) {
+ if (!editorConfig) {
+ return null;
+ }
+
+ editorConfig = removeUnset(editorConfig);
+
+ if (Object.keys(editorConfig).length === 0) {
+ return null;
+ }
+
+ var result = {};
+
+ if (editorConfig.indent_style) {
+ result.useTabs = editorConfig.indent_style === "tab";
+ }
+
+ if (editorConfig.indent_size === "tab") {
+ result.useTabs = true;
+ }
+
+ if (result.useTabs && editorConfig.tab_width) {
+ result.tabWidth = editorConfig.tab_width;
+ } else if (editorConfig.indent_style === "space" && editorConfig.indent_size && editorConfig.indent_size !== "tab") {
+ result.tabWidth = editorConfig.indent_size;
+ } else if (editorConfig.tab_width !== undefined) {
+ result.tabWidth = editorConfig.tab_width;
+ }
+
+ if (editorConfig.max_line_length && editorConfig.max_line_length !== "off") {
+ result.printWidth = editorConfig.max_line_length;
+ }
+
+ if (editorConfig.quote_type === "single") {
+ result.singleQuote = true;
+ } else if (editorConfig.quote_type === "double") {
+ result.singleQuote = false;
+ }
+
+ if (["cr", "crlf", "lf"].indexOf(editorConfig.end_of_line) !== -1) {
+ result.endOfLine = editorConfig.end_of_line;
+ }
+
+ return result;
+}
+
+function markerExists(files, markers) {
+ return markers.some(function (marker) {
+ return files.some(function (file) {
+ return file === marker;
+ });
+ });
+}
+
+function traverseFolder(directory, levels, markers) {
+ var files = fs$1.readdirSync(directory);
+
+ if (levels === 0) {
+ return null;
+ } else if (markerExists(files, markers)) {
+ return directory;
+ } else {
+ return traverseFolder(path$2.resolve(directory, '..'), levels - 1, markers);
+ }
+}
+
+var findProjectRoot = function findRoot(dir, opts) {
+ if (!dir) throw new Error("Directory not defined");
+ opts = opts || {};
+ var levels = opts.maxDepth || findRoot.MAX_DEPTH;
+ var markers = opts.markers || findRoot.MARKERS;
+ return traverseFolder(dir, levels, markers);
+};
+
+var MAX_DEPTH = 9;
+var MARKERS = ['.git', '.hg'];
+findProjectRoot.MAX_DEPTH = MAX_DEPTH;
+findProjectRoot.MARKERS = MARKERS;
+
+var maybeParse = function maybeParse(filePath, config, parse) {
+ // findProjectRoot will throw an error if we pass a nonexistent directory to
+ // it, which is possible, for example, when the path is given via
+ // --stdin-filepath. So, first, traverse up until we find an existing
+ // directory.
+ var dirPath = path$2.dirname(path$2.resolve(filePath));
+ var fsRoot = path$2.parse(dirPath).root;
+
+ while (dirPath !== fsRoot && !fs$1.existsSync(dirPath)) {
+ dirPath = path$2.dirname(dirPath);
+ }
+
+ var root = findProjectRoot(dirPath);
+ return filePath && parse(filePath, {
+ root
+ });
+};
+
+var editorconfigAsyncNoCache = function editorconfigAsyncNoCache(filePath, config) {
+ return Promise.resolve(maybeParse(filePath, config, src.parse)).then(editorconfigToPrettier);
+};
+
+var editorconfigAsyncWithCache = mem_1(editorconfigAsyncNoCache);
+
+var editorconfigSyncNoCache = function editorconfigSyncNoCache(filePath, config) {
+ return editorconfigToPrettier(maybeParse(filePath, config, src.parseSync));
+};
+
+var editorconfigSyncWithCache = mem_1(editorconfigSyncNoCache);
+
+function getLoadFunction(opts) {
+ if (!opts.editorconfig) {
+ return function () {
+ return null;
+ };
+ }
+
+ if (opts.sync) {
+ return opts.cache ? editorconfigSyncWithCache : editorconfigSyncNoCache;
+ }
+
+ return opts.cache ? editorconfigAsyncWithCache : editorconfigAsyncNoCache;
+}
+
+function clearCache() {
+ mem_1.clear(editorconfigSyncWithCache);
+ mem_1.clear(editorconfigAsyncWithCache);
+}
+
+var resolveConfigEditorconfig = {
+ getLoadFunction,
+ clearCache
+};
+
+var ParserEND = 0x110000;
+
+var ParserError =
+/*#__PURE__*/
+function (_Error) {
+ _inherits(ParserError, _Error);
+
+ /* istanbul ignore next */
+ function ParserError(msg, filename, linenumber) {
+ var _this;
+
+ _classCallCheck(this, ParserError);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(ParserError).call(this, '[ParserError] ' + msg, filename, linenumber));
+ _this.name = 'ParserError';
+ _this.code = 'ParserError';
+ if (Error.captureStackTrace) Error.captureStackTrace(_assertThisInitialized(_this), ParserError);
+ return _this;
+ }
+
+ return ParserError;
+}(_wrapNativeSuper(Error));
+
+var State = function State(parser) {
+ _classCallCheck(this, State);
+
+ this.parser = parser;
+ this.buf = '';
+ this.returned = null;
+ this.result = null;
+ this.resultTable = null;
+ this.resultArr = null;
+};
+
+var Parser =
+/*#__PURE__*/
+function () {
+ function Parser() {
+ _classCallCheck(this, Parser);
+
+ this.pos = 0;
+ this.col = 0;
+ this.line = 0;
+ this.obj = {};
+ this.ctx = this.obj;
+ this.stack = [];
+ this._buf = '';
+ this.char = null;
+ this.ii = 0;
+ this.state = new State(this.parseStart);
+ }
+
+ _createClass(Parser, [{
+ key: "parse",
+ value: function parse(str) {
+ /* istanbul ignore next */
+ if (str.length === 0 || str.length == null) return;
+ this._buf = String(str);
+ this.ii = -1;
+ this.char = -1;
+ var getNext;
+
+ while (getNext === false || this.nextChar()) {
+ getNext = this.runOne();
+ }
+
+ this._buf = null;
+ }
+ }, {
+ key: "nextChar",
+ value: function nextChar() {
+ if (this.char === 0x0A) {
+ ++this.line;
+ this.col = -1;
+ }
+
+ ++this.ii;
+ this.char = this._buf.codePointAt(this.ii);
+ ++this.pos;
+ ++this.col;
+ return this.haveBuffer();
+ }
+ }, {
+ key: "haveBuffer",
+ value: function haveBuffer() {
+ return this.ii < this._buf.length;
+ }
+ }, {
+ key: "runOne",
+ value: function runOne() {
+ return this.state.parser.call(this, this.state.returned);
+ }
+ }, {
+ key: "finish",
+ value: function finish() {
+ this.char = ParserEND;
+ var last;
+
+ do {
+ last = this.state.parser;
+ this.runOne();
+ } while (this.state.parser !== last);
+
+ this.ctx = null;
+ this.state = null;
+ this._buf = null;
+ return this.obj;
+ }
+ }, {
+ key: "next",
+ value: function next(fn) {
+ /* istanbul ignore next */
+ if (typeof fn !== 'function') throw new ParserError('Tried to set state to non-existent state: ' + JSON.stringify(fn));
+ this.state.parser = fn;
+ }
+ }, {
+ key: "goto",
+ value: function goto(fn) {
+ this.next(fn);
+ return this.runOne();
+ }
+ }, {
+ key: "call",
+ value: function call(fn, returnWith) {
+ if (returnWith) this.next(returnWith);
+ this.stack.push(this.state);
+ this.state = new State(fn);
+ }
+ }, {
+ key: "callNow",
+ value: function callNow(fn, returnWith) {
+ this.call(fn, returnWith);
+ return this.runOne();
+ }
+ }, {
+ key: "return",
+ value: function _return(value) {
+ /* istanbul ignore next */
+ if (this.stack.length === 0) throw this.error(new ParserError('Stack underflow'));
+ if (value === undefined) value = this.state.buf;
+ this.state = this.stack.pop();
+ this.state.returned = value;
+ }
+ }, {
+ key: "returnNow",
+ value: function returnNow(value) {
+ this.return(value);
+ return this.runOne();
+ }
+ }, {
+ key: "consume",
+ value: function consume() {
+ /* istanbul ignore next */
+ if (this.char === ParserEND) throw this.error(new ParserError('Unexpected end-of-buffer'));
+ this.state.buf += this._buf[this.ii];
+ }
+ }, {
+ key: "error",
+ value: function error(err) {
+ err.line = this.line;
+ err.col = this.col;
+ err.pos = this.pos;
+ return err;
+ }
+ /* istanbul ignore next */
+
+ }, {
+ key: "parseStart",
+ value: function parseStart() {
+ throw new ParserError('Must declare a parseStart method');
+ }
+ }]);
+
+ return Parser;
+}();
+
+Parser.END = ParserEND;
+Parser.Error = ParserError;
+var parser$1 = Parser;
+
+var createDatetime = function createDatetime(value) {
+ var date = new Date(value);
+ /* istanbul ignore if */
+
+ if (isNaN(date)) {
+ throw new TypeError('Invalid Datetime');
+ } else {
+ return date;
+ }
+};
+
+var formatNum = function formatNum(d, num) {
+ num = String(num);
+
+ while (num.length < d) {
+ num = '0' + num;
+ }
+
+ return num;
+};
+
+var FloatingDateTime =
+/*#__PURE__*/
+function (_Date) {
+ _inherits(FloatingDateTime, _Date);
+
+ function FloatingDateTime(value) {
+ var _this;
+
+ _classCallCheck(this, FloatingDateTime);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(FloatingDateTime).call(this, value + 'Z'));
+ _this.isFloating = true;
+ return _this;
+ }
+
+ _createClass(FloatingDateTime, [{
+ key: "toISOString",
+ value: function toISOString() {
+ var date = `${this.getUTCFullYear()}-${formatNum(2, this.getUTCMonth() + 1)}-${formatNum(2, this.getUTCDate())}`;
+ var time = `${formatNum(2, this.getUTCHours())}:${formatNum(2, this.getUTCMinutes())}:${formatNum(2, this.getUTCSeconds())}.${formatNum(3, this.getUTCMilliseconds())}`;
+ return `${date}T${time}`;
+ }
+ }]);
+
+ return FloatingDateTime;
+}(_wrapNativeSuper(Date));
+
+var createDatetimeFloat = function createDatetimeFloat(value) {
+ var date = new FloatingDateTime(value);
+ /* istanbul ignore if */
+
+ if (isNaN(date)) {
+ throw new TypeError('Invalid Datetime');
+ } else {
+ return date;
+ }
+};
+
+var DateTime = global.Date;
+
+var Date$1 =
+/*#__PURE__*/
+function (_DateTime) {
+ _inherits(Date, _DateTime);
+
+ function Date(value) {
+ var _this;
+
+ _classCallCheck(this, Date);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(Date).call(this, value));
+ _this.isDate = true;
+ return _this;
+ }
+
+ _createClass(Date, [{
+ key: "toISOString",
+ value: function toISOString() {
+ return `${this.getUTCFullYear()}-${formatNum(2, this.getUTCMonth() + 1)}-${formatNum(2, this.getUTCDate())}`;
+ }
+ }]);
+
+ return Date;
+}(DateTime);
+
+var createDate = function createDate(value) {
+ var date = new Date$1(value);
+ /* istanbul ignore if */
+
+ if (isNaN(date)) {
+ throw new TypeError('Invalid Datetime');
+ } else {
+ return date;
+ }
+};
+
+var Time =
+/*#__PURE__*/
+function (_Date) {
+ _inherits(Time, _Date);
+
+ function Time(value) {
+ var _this;
+
+ _classCallCheck(this, Time);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(Time).call(this, `0000-01-01T${value}Z`));
+ _this.isTime = true;
+ return _this;
+ }
+
+ _createClass(Time, [{
+ key: "toISOString",
+ value: function toISOString() {
+ return `${formatNum(2, this.getUTCHours())}:${formatNum(2, this.getUTCMinutes())}:${formatNum(2, this.getUTCSeconds())}.${formatNum(3, this.getUTCMilliseconds())}`;
+ }
+ }]);
+
+ return Time;
+}(_wrapNativeSuper(Date));
+
+var createTime = function createTime(value) {
+ var date = new Time(value);
+ /* istanbul ignore if */
+
+ if (isNaN(date)) {
+ throw new TypeError('Invalid Datetime');
+ } else {
+ return date;
+ }
+};
+
+/* eslint-disable no-new-wrappers, no-eval, camelcase, operator-linebreak */
+
+
+var tomlParser = makeParserClass(parser$1);
+var makeParserClass_1 = makeParserClass;
+
+var TomlError =
+/*#__PURE__*/
+function (_Error) {
+ _inherits(TomlError, _Error);
+
+ function TomlError(msg) {
+ var _this;
+
+ _classCallCheck(this, TomlError);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(TomlError).call(this, msg));
+ _this.name = 'TomlError';
+ /* istanbul ignore next */
+
+ if (Error.captureStackTrace) Error.captureStackTrace(_assertThisInitialized(_this), TomlError);
+ _this.fromTOML = true;
+ _this.wrapped = null;
+ return _this;
+ }
+
+ return TomlError;
+}(_wrapNativeSuper(Error));
+
+TomlError.wrap = function (err) {
+ var terr = new TomlError(err.message);
+ terr.code = err.code;
+ terr.wrapped = err;
+ return terr;
+};
+
+var TomlError_1 = TomlError;
+var CTRL_I = 0x09;
+var CTRL_J = 0x0A;
+var CTRL_M = 0x0D;
+var CTRL_CHAR_BOUNDARY = 0x1F; // the last non-character in the latin1 region of unicode, except DEL
+
+var CHAR_SP = 0x20;
+var CHAR_QUOT = 0x22;
+var CHAR_NUM = 0x23;
+var CHAR_APOS = 0x27;
+var CHAR_PLUS = 0x2B;
+var CHAR_COMMA = 0x2C;
+var CHAR_HYPHEN = 0x2D;
+var CHAR_PERIOD = 0x2E;
+var CHAR_0 = 0x30;
+var CHAR_1 = 0x31;
+var CHAR_7 = 0x37;
+var CHAR_9 = 0x39;
+var CHAR_COLON = 0x3A;
+var CHAR_EQUALS = 0x3D;
+var CHAR_A = 0x41;
+var CHAR_E = 0x45;
+var CHAR_F = 0x46;
+var CHAR_T = 0x54;
+var CHAR_U = 0x55;
+var CHAR_Z = 0x5A;
+var CHAR_LOWBAR = 0x5F;
+var CHAR_a = 0x61;
+var CHAR_b = 0x62;
+var CHAR_e = 0x65;
+var CHAR_f = 0x66;
+var CHAR_i = 0x69;
+var CHAR_l = 0x6C;
+var CHAR_n = 0x6E;
+var CHAR_o = 0x6F;
+var CHAR_r = 0x72;
+var CHAR_s = 0x73;
+var CHAR_t = 0x74;
+var CHAR_u = 0x75;
+var CHAR_x = 0x78;
+var CHAR_z = 0x7A;
+var CHAR_LCUB = 0x7B;
+var CHAR_RCUB = 0x7D;
+var CHAR_LSQB = 0x5B;
+var CHAR_BSOL = 0x5C;
+var CHAR_RSQB = 0x5D;
+var CHAR_DEL = 0x7F;
+var SURROGATE_FIRST = 0xD800;
+var SURROGATE_LAST = 0xDFFF;
+var escapes = {
+ [CHAR_b]: '\u0008',
+ [CHAR_t]: '\u0009',
+ [CHAR_n]: '\u000A',
+ [CHAR_f]: '\u000C',
+ [CHAR_r]: '\u000D',
+ [CHAR_QUOT]: '\u0022',
+ [CHAR_BSOL]: '\u005C'
+};
+
+function isDigit(cp) {
+ return cp >= CHAR_0 && cp <= CHAR_9;
+}
+
+function isHexit(cp) {
+ return cp >= CHAR_A && cp <= CHAR_F || cp >= CHAR_a && cp <= CHAR_f || cp >= CHAR_0 && cp <= CHAR_9;
+}
+
+function isBit(cp) {
+ return cp === CHAR_1 || cp === CHAR_0;
+}
+
+function isOctit(cp) {
+ return cp >= CHAR_0 && cp <= CHAR_7;
+}
+
+function isAlphaNumQuoteHyphen(cp) {
+ return cp >= CHAR_A && cp <= CHAR_Z || cp >= CHAR_a && cp <= CHAR_z || cp >= CHAR_0 && cp <= CHAR_9 || cp === CHAR_APOS || cp === CHAR_QUOT || cp === CHAR_LOWBAR || cp === CHAR_HYPHEN;
+}
+
+function isAlphaNumHyphen(cp) {
+ return cp >= CHAR_A && cp <= CHAR_Z || cp >= CHAR_a && cp <= CHAR_z || cp >= CHAR_0 && cp <= CHAR_9 || cp === CHAR_LOWBAR || cp === CHAR_HYPHEN;
+}
+
+var _type = Symbol('type');
+
+var _declared = Symbol('declared');
+
+var hasOwnProperty$1 = Object.prototype.hasOwnProperty;
+var defineProperty = Object.defineProperty;
+var descriptor = {
+ configurable: true,
+ enumerable: true,
+ writable: true,
+ value: undefined
+};
+
+function hasKey(obj, key) {
+ if (hasOwnProperty$1.call(obj, key)) return true;
+ if (key === '__proto__') defineProperty(obj, '__proto__', descriptor);
+ return false;
+}
+
+var INLINE_TABLE = Symbol('inline-table');
+
+function InlineTable() {
+ return Object.defineProperties({}, {
+ [_type]: {
+ value: INLINE_TABLE
+ }
+ });
+}
+
+function isInlineTable(obj) {
+ if (obj === null || typeof obj !== 'object') return false;
+ return obj[_type] === INLINE_TABLE;
+}
+
+var TABLE = Symbol('table');
+
+function Table() {
+ return Object.defineProperties({}, {
+ [_type]: {
+ value: TABLE
+ },
+ [_declared]: {
+ value: false,
+ writable: true
+ }
+ });
+}
+
+function isTable(obj) {
+ if (obj === null || typeof obj !== 'object') return false;
+ return obj[_type] === TABLE;
+}
+
+var _contentType = Symbol('content-type');
+
+var INLINE_LIST = Symbol('inline-list');
+
+function InlineList(type) {
+ return Object.defineProperties([], {
+ [_type]: {
+ value: INLINE_LIST
+ },
+ [_contentType]: {
+ value: type
+ }
+ });
+}
+
+function isInlineList(obj) {
+ if (obj === null || typeof obj !== 'object') return false;
+ return obj[_type] === INLINE_LIST;
+}
+
+var LIST = Symbol('list');
+
+function List() {
+ return Object.defineProperties([], {
+ [_type]: {
+ value: LIST
+ }
+ });
+}
+
+function isList(obj) {
+ if (obj === null || typeof obj !== 'object') return false;
+ return obj[_type] === LIST;
+} // in an eval, to let bundlers not slurp in a util proxy
+
+
+var _custom;
+
+try {
+ var utilInspect = eval("require('util').inspect");
+ _custom = utilInspect.custom;
+} catch (_) {}
+/* eval require not available in transpiled bundle */
+
+/* istanbul ignore next */
+
+
+var _inspect = _custom || 'inspect';
+
+var BoxedBigInt =
+/*#__PURE__*/
+function () {
+ function BoxedBigInt(value) {
+ _classCallCheck(this, BoxedBigInt);
+
+ try {
+ this.value = global.BigInt.asIntN(64, value);
+ } catch (_) {
+ /* istanbul ignore next */
+ this.value = null;
+ }
+
+ Object.defineProperty(this, _type, {
+ value: INTEGER
+ });
+ }
+
+ _createClass(BoxedBigInt, [{
+ key: "isNaN",
+ value: function isNaN() {
+ return this.value === null;
+ }
+ /* istanbul ignore next */
+
+ }, {
+ key: "toString",
+ value: function toString() {
+ return String(this.value);
+ }
+ /* istanbul ignore next */
+
+ }, {
+ key: _inspect,
+ value: function value() {
+ return `[BigInt: ${this.toString()}]}`;
+ }
+ }, {
+ key: "valueOf",
+ value: function valueOf() {
+ return this.value;
+ }
+ }]);
+
+ return BoxedBigInt;
+}();
+
+var INTEGER = Symbol('integer');
+
+function Integer(_value) {
+ var num = Number(_value); // -0 is a float thing, not an int thing
+
+ if (Object.is(num, -0)) num = 0;
+ /* istanbul ignore else */
+
+ if (global.BigInt && !Number.isSafeInteger(num)) {
+ return new BoxedBigInt(_value);
+ } else {
+ /* istanbul ignore next */
+ return Object.defineProperties(new Number(num), {
+ isNaN: {
+ value: function value() {
+ return isNaN(this);
+ }
+ },
+ [_type]: {
+ value: INTEGER
+ },
+ [_inspect]: {
+ value: function value() {
+ return `[Integer: ${_value}]`;
+ }
+ }
+ });
+ }
+}
+
+function isInteger(obj) {
+ if (obj === null || typeof obj !== 'object') return false;
+ return obj[_type] === INTEGER;
+}
+
+var FLOAT = Symbol('float');
+
+function Float(_value2) {
+ /* istanbul ignore next */
+ return Object.defineProperties(new Number(_value2), {
+ [_type]: {
+ value: FLOAT
+ },
+ [_inspect]: {
+ value: function value() {
+ return `[Float: ${_value2}]`;
+ }
+ }
+ });
+}
+
+function isFloat(obj) {
+ if (obj === null || typeof obj !== 'object') return false;
+ return obj[_type] === FLOAT;
+}
+
+function tomlType(value) {
+ var type = typeof value;
+
+ if (type === 'object') {
+ /* istanbul ignore if */
+ if (value === null) return 'null';
+ if (value instanceof Date) return 'datetime';
+ /* istanbul ignore else */
+
+ if (_type in value) {
+ switch (value[_type]) {
+ case INLINE_TABLE:
+ return 'inline-table';
+
+ case INLINE_LIST:
+ return 'inline-list';
+
+ /* istanbul ignore next */
+
+ case TABLE:
+ return 'table';
+
+ /* istanbul ignore next */
+
+ case LIST:
+ return 'list';
+
+ case FLOAT:
+ return 'float';
+
+ case INTEGER:
+ return 'integer';
+ }
+ }
+ }
+
+ return type;
+}
+
+function makeParserClass(Parser) {
+ var TOMLParser =
+ /*#__PURE__*/
+ function (_Parser) {
+ _inherits(TOMLParser, _Parser);
+
+ function TOMLParser() {
+ var _this2;
+
+ _classCallCheck(this, TOMLParser);
+
+ _this2 = _possibleConstructorReturn(this, _getPrototypeOf(TOMLParser).call(this));
+ _this2.ctx = _this2.obj = Table();
+ return _this2;
+ }
+ /* MATCH HELPER */
+
+
+ _createClass(TOMLParser, [{
+ key: "atEndOfWord",
+ value: function atEndOfWord() {
+ return this.char === CHAR_NUM || this.char === CTRL_I || this.char === CHAR_SP || this.atEndOfLine();
+ }
+ }, {
+ key: "atEndOfLine",
+ value: function atEndOfLine() {
+ return this.char === Parser.END || this.char === CTRL_J || this.char === CTRL_M;
+ }
+ }, {
+ key: "parseStart",
+ value: function parseStart() {
+ if (this.char === Parser.END) {
+ return null;
+ } else if (this.char === CHAR_LSQB) {
+ return this.call(this.parseTableOrList);
+ } else if (this.char === CHAR_NUM) {
+ return this.call(this.parseComment);
+ } else if (this.char === CTRL_J || this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) {
+ return null;
+ } else if (isAlphaNumQuoteHyphen(this.char)) {
+ return this.callNow(this.parseAssignStatement);
+ } else {
+ throw this.error(new TomlError(`Unknown character "${this.char}"`));
+ }
+ } // HELPER, this strips any whitespace and comments to the end of the line
+ // then RETURNS. Last state in a production.
+
+ }, {
+ key: "parseWhitespaceToEOL",
+ value: function parseWhitespaceToEOL() {
+ if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) {
+ return null;
+ } else if (this.char === CHAR_NUM) {
+ return this.goto(this.parseComment);
+ } else if (this.char === Parser.END || this.char === CTRL_J) {
+ return this.return();
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected only whitespace or comments till end of line'));
+ }
+ }
+ /* ASSIGNMENT: key = value */
+
+ }, {
+ key: "parseAssignStatement",
+ value: function parseAssignStatement() {
+ return this.callNow(this.parseAssign, this.recordAssignStatement);
+ }
+ }, {
+ key: "recordAssignStatement",
+ value: function recordAssignStatement(kv) {
+ var target = this.ctx;
+ var finalKey = kv.key.pop();
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = kv.key[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var kw = _step.value;
+
+ if (hasKey(target, kw) && (!isTable(target[kw]) || target[kw][_declared])) {
+ throw this.error(new TomlError("Can't redefine existing key"));
+ }
+
+ target = target[kw] = target[kw] || Table();
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ if (hasKey(target, finalKey)) {
+ throw this.error(new TomlError("Can't redefine existing key"));
+ } // unbox our numbers
+
+
+ if (isInteger(kv.value) || isFloat(kv.value)) {
+ target[finalKey] = kv.value.valueOf();
+ } else {
+ target[finalKey] = kv.value;
+ }
+
+ return this.goto(this.parseWhitespaceToEOL);
+ }
+ /* ASSSIGNMENT expression, key = value possibly inside an inline table */
+
+ }, {
+ key: "parseAssign",
+ value: function parseAssign() {
+ return this.callNow(this.parseKeyword, this.recordAssignKeyword);
+ }
+ }, {
+ key: "recordAssignKeyword",
+ value: function recordAssignKeyword(key) {
+ if (this.state.resultTable) {
+ this.state.resultTable.push(key);
+ } else {
+ this.state.resultTable = [key];
+ }
+
+ return this.goto(this.parseAssignKeywordPreDot);
+ }
+ }, {
+ key: "parseAssignKeywordPreDot",
+ value: function parseAssignKeywordPreDot() {
+ if (this.char === CHAR_PERIOD) {
+ return this.next(this.parseAssignKeywordPostDot);
+ } else if (this.char !== CHAR_SP && this.char !== CTRL_I) {
+ return this.goto(this.parseAssignEqual);
+ }
+ }
+ }, {
+ key: "parseAssignKeywordPostDot",
+ value: function parseAssignKeywordPostDot() {
+ if (this.char !== CHAR_SP && this.char !== CTRL_I) {
+ return this.callNow(this.parseKeyword, this.recordAssignKeyword);
+ }
+ }
+ }, {
+ key: "parseAssignEqual",
+ value: function parseAssignEqual() {
+ if (this.char === CHAR_EQUALS) {
+ return this.next(this.parseAssignPreValue);
+ } else {
+ throw this.error(new TomlError('Invalid character, expected "="'));
+ }
+ }
+ }, {
+ key: "parseAssignPreValue",
+ value: function parseAssignPreValue() {
+ if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return null;
+ } else {
+ return this.callNow(this.parseValue, this.recordAssignValue);
+ }
+ }
+ }, {
+ key: "recordAssignValue",
+ value: function recordAssignValue(value) {
+ return this.returnNow({
+ key: this.state.resultTable,
+ value: value
+ });
+ }
+ /* COMMENTS: #...eol */
+
+ }, {
+ key: "parseComment",
+ value: function parseComment() {
+ do {
+ if (this.char === Parser.END || this.char === CTRL_J) {
+ return this.return();
+ }
+ } while (this.nextChar());
+ }
+ /* TABLES AND LISTS, [foo] and [[foo]] */
+
+ }, {
+ key: "parseTableOrList",
+ value: function parseTableOrList() {
+ if (this.char === CHAR_LSQB) {
+ this.next(this.parseList);
+ } else {
+ return this.goto(this.parseTable);
+ }
+ }
+ /* TABLE [foo.bar.baz] */
+
+ }, {
+ key: "parseTable",
+ value: function parseTable() {
+ this.ctx = this.obj;
+ return this.goto(this.parseTableNext);
+ }
+ }, {
+ key: "parseTableNext",
+ value: function parseTableNext() {
+ if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return null;
+ } else {
+ return this.callNow(this.parseKeyword, this.parseTableMore);
+ }
+ }
+ }, {
+ key: "parseTableMore",
+ value: function parseTableMore(keyword) {
+ if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return null;
+ } else if (this.char === CHAR_RSQB) {
+ if (hasKey(this.ctx, keyword) && (!isTable(this.ctx[keyword]) || this.ctx[keyword][_declared])) {
+ throw this.error(new TomlError("Can't redefine existing key"));
+ } else {
+ this.ctx = this.ctx[keyword] = this.ctx[keyword] || Table();
+ this.ctx[_declared] = true;
+ }
+
+ return this.next(this.parseWhitespaceToEOL);
+ } else if (this.char === CHAR_PERIOD) {
+ if (!hasKey(this.ctx, keyword)) {
+ this.ctx = this.ctx[keyword] = Table();
+ } else if (isTable(this.ctx[keyword])) {
+ this.ctx = this.ctx[keyword];
+ } else if (isList(this.ctx[keyword])) {
+ this.ctx = this.ctx[keyword][this.ctx[keyword].length - 1];
+ } else {
+ throw this.error(new TomlError("Can't redefine existing key"));
+ }
+
+ return this.next(this.parseTableNext);
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected whitespace, . or ]'));
+ }
+ }
+ /* LIST [[a.b.c]] */
+
+ }, {
+ key: "parseList",
+ value: function parseList() {
+ this.ctx = this.obj;
+ return this.goto(this.parseListNext);
+ }
+ }, {
+ key: "parseListNext",
+ value: function parseListNext() {
+ if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return null;
+ } else {
+ return this.callNow(this.parseKeyword, this.parseListMore);
+ }
+ }
+ }, {
+ key: "parseListMore",
+ value: function parseListMore(keyword) {
+ if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return null;
+ } else if (this.char === CHAR_RSQB) {
+ if (!hasKey(this.ctx, keyword)) {
+ this.ctx[keyword] = List();
+ }
+
+ if (isInlineList(this.ctx[keyword])) {
+ throw this.error(new TomlError("Can't extend an inline array"));
+ } else if (isList(this.ctx[keyword])) {
+ var next = Table();
+ this.ctx[keyword].push(next);
+ this.ctx = next;
+ } else {
+ throw this.error(new TomlError("Can't redefine an existing key"));
+ }
+
+ return this.next(this.parseListEnd);
+ } else if (this.char === CHAR_PERIOD) {
+ if (!hasKey(this.ctx, keyword)) {
+ this.ctx = this.ctx[keyword] = Table();
+ } else if (isInlineList(this.ctx[keyword])) {
+ throw this.error(new TomlError("Can't extend an inline array"));
+ } else if (isInlineTable(this.ctx[keyword])) {
+ throw this.error(new TomlError("Can't extend an inline table"));
+ } else if (isList(this.ctx[keyword])) {
+ this.ctx = this.ctx[keyword][this.ctx[keyword].length - 1];
+ } else if (isTable(this.ctx[keyword])) {
+ this.ctx = this.ctx[keyword];
+ } else {
+ throw this.error(new TomlError("Can't redefine an existing key"));
+ }
+
+ return this.next(this.parseListNext);
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected whitespace, . or ]'));
+ }
+ }
+ }, {
+ key: "parseListEnd",
+ value: function parseListEnd(keyword) {
+ if (this.char === CHAR_RSQB) {
+ return this.next(this.parseWhitespaceToEOL);
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected whitespace, . or ]'));
+ }
+ }
+ /* VALUE string, number, boolean, inline list, inline object */
+
+ }, {
+ key: "parseValue",
+ value: function parseValue() {
+ if (this.char === Parser.END) {
+ throw this.error(new TomlError('Key without value'));
+ } else if (this.char === CHAR_QUOT) {
+ return this.next(this.parseDoubleString);
+ }
+
+ if (this.char === CHAR_APOS) {
+ return this.next(this.parseSingleString);
+ } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {
+ return this.goto(this.parseNumberSign);
+ } else if (this.char === CHAR_i) {
+ return this.next(this.parseInf);
+ } else if (this.char === CHAR_n) {
+ return this.next(this.parseNan);
+ } else if (isDigit(this.char)) {
+ return this.goto(this.parseNumberOrDateTime);
+ } else if (this.char === CHAR_t || this.char === CHAR_f) {
+ return this.goto(this.parseBoolean);
+ } else if (this.char === CHAR_LSQB) {
+ return this.call(this.parseInlineList, this.recordValue);
+ } else if (this.char === CHAR_LCUB) {
+ return this.call(this.parseInlineTable, this.recordValue);
+ } else {
+ throw this.error(new TomlError('Unexpected character, expecting string, number, datetime, boolean, inline array or inline table'));
+ }
+ }
+ }, {
+ key: "recordValue",
+ value: function recordValue(value) {
+ return this.returnNow(value);
+ }
+ }, {
+ key: "parseInf",
+ value: function parseInf() {
+ if (this.char === CHAR_n) {
+ return this.next(this.parseInf2);
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected "inf", "+inf" or "-inf"'));
+ }
+ }
+ }, {
+ key: "parseInf2",
+ value: function parseInf2() {
+ if (this.char === CHAR_f) {
+ if (this.state.buf === '-') {
+ return this.return(-Infinity);
+ } else {
+ return this.return(Infinity);
+ }
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected "inf", "+inf" or "-inf"'));
+ }
+ }
+ }, {
+ key: "parseNan",
+ value: function parseNan() {
+ if (this.char === CHAR_a) {
+ return this.next(this.parseNan2);
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected "nan"'));
+ }
+ }
+ }, {
+ key: "parseNan2",
+ value: function parseNan2() {
+ if (this.char === CHAR_n) {
+ return this.return(NaN);
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected "nan"'));
+ }
+ }
+ /* KEYS, barewords or basic, literal, or dotted */
+
+ }, {
+ key: "parseKeyword",
+ value: function parseKeyword() {
+ if (this.char === CHAR_QUOT) {
+ return this.next(this.parseBasicString);
+ } else if (this.char === CHAR_APOS) {
+ return this.next(this.parseLiteralString);
+ } else {
+ return this.goto(this.parseBareKey);
+ }
+ }
+ /* KEYS: barewords */
+
+ }, {
+ key: "parseBareKey",
+ value: function parseBareKey() {
+ do {
+ if (this.char === Parser.END) {
+ throw this.error(new TomlError('Key ended without value'));
+ } else if (isAlphaNumHyphen(this.char)) {
+ this.consume();
+ } else if (this.state.buf.length === 0) {
+ throw this.error(new TomlError('Empty bare keys are not allowed'));
+ } else {
+ return this.returnNow();
+ }
+ } while (this.nextChar());
+ }
+ /* STRINGS, single quoted (literal) */
+
+ }, {
+ key: "parseSingleString",
+ value: function parseSingleString() {
+ if (this.char === CHAR_APOS) {
+ return this.next(this.parseLiteralMultiStringMaybe);
+ } else {
+ return this.goto(this.parseLiteralString);
+ }
+ }
+ }, {
+ key: "parseLiteralString",
+ value: function parseLiteralString() {
+ do {
+ if (this.char === CHAR_APOS) {
+ return this.return();
+ } else if (this.atEndOfLine()) {
+ throw this.error(new TomlError('Unterminated string'));
+ } else if (this.char === CHAR_DEL || this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I) {
+ throw this.errorControlCharInString();
+ } else {
+ this.consume();
+ }
+ } while (this.nextChar());
+ }
+ }, {
+ key: "parseLiteralMultiStringMaybe",
+ value: function parseLiteralMultiStringMaybe() {
+ if (this.char === CHAR_APOS) {
+ return this.next(this.parseLiteralMultiString);
+ } else {
+ return this.returnNow();
+ }
+ }
+ }, {
+ key: "parseLiteralMultiString",
+ value: function parseLiteralMultiString() {
+ if (this.char === CTRL_M) {
+ return null;
+ } else if (this.char === CTRL_J) {
+ return this.next(this.parseLiteralMultiStringContent);
+ } else {
+ return this.goto(this.parseLiteralMultiStringContent);
+ }
+ }
+ }, {
+ key: "parseLiteralMultiStringContent",
+ value: function parseLiteralMultiStringContent() {
+ do {
+ if (this.char === CHAR_APOS) {
+ return this.next(this.parseLiteralMultiEnd);
+ } else if (this.char === Parser.END) {
+ throw this.error(new TomlError('Unterminated multi-line string'));
+ } else if (this.char === CHAR_DEL || this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I && this.char !== CTRL_J && this.char !== CTRL_M) {
+ throw this.errorControlCharInString();
+ } else {
+ this.consume();
+ }
+ } while (this.nextChar());
+ }
+ }, {
+ key: "parseLiteralMultiEnd",
+ value: function parseLiteralMultiEnd() {
+ if (this.char === CHAR_APOS) {
+ return this.next(this.parseLiteralMultiEnd2);
+ } else {
+ this.state.buf += "'";
+ return this.goto(this.parseLiteralMultiStringContent);
+ }
+ }
+ }, {
+ key: "parseLiteralMultiEnd2",
+ value: function parseLiteralMultiEnd2() {
+ if (this.char === CHAR_APOS) {
+ return this.return();
+ } else {
+ this.state.buf += "''";
+ return this.goto(this.parseLiteralMultiStringContent);
+ }
+ }
+ /* STRINGS double quoted */
+
+ }, {
+ key: "parseDoubleString",
+ value: function parseDoubleString() {
+ if (this.char === CHAR_QUOT) {
+ return this.next(this.parseMultiStringMaybe);
+ } else {
+ return this.goto(this.parseBasicString);
+ }
+ }
+ }, {
+ key: "parseBasicString",
+ value: function parseBasicString() {
+ do {
+ if (this.char === CHAR_BSOL) {
+ return this.call(this.parseEscape, this.recordEscapeReplacement);
+ } else if (this.char === CHAR_QUOT) {
+ return this.return();
+ } else if (this.atEndOfLine()) {
+ throw this.error(new TomlError('Unterminated string'));
+ } else if (this.char === CHAR_DEL || this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I) {
+ throw this.errorControlCharInString();
+ } else {
+ this.consume();
+ }
+ } while (this.nextChar());
+ }
+ }, {
+ key: "recordEscapeReplacement",
+ value: function recordEscapeReplacement(replacement) {
+ this.state.buf += replacement;
+ return this.goto(this.parseBasicString);
+ }
+ }, {
+ key: "parseMultiStringMaybe",
+ value: function parseMultiStringMaybe() {
+ if (this.char === CHAR_QUOT) {
+ return this.next(this.parseMultiString);
+ } else {
+ return this.returnNow();
+ }
+ }
+ }, {
+ key: "parseMultiString",
+ value: function parseMultiString() {
+ if (this.char === CTRL_M) {
+ return null;
+ } else if (this.char === CTRL_J) {
+ return this.next(this.parseMultiStringContent);
+ } else {
+ return this.goto(this.parseMultiStringContent);
+ }
+ }
+ }, {
+ key: "parseMultiStringContent",
+ value: function parseMultiStringContent() {
+ do {
+ if (this.char === CHAR_BSOL) {
+ return this.call(this.parseMultiEscape, this.recordMultiEscapeReplacement);
+ } else if (this.char === CHAR_QUOT) {
+ return this.next(this.parseMultiEnd);
+ } else if (this.char === Parser.END) {
+ throw this.error(new TomlError('Unterminated multi-line string'));
+ } else if (this.char === CHAR_DEL || this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I && this.char !== CTRL_J && this.char !== CTRL_M) {
+ throw this.errorControlCharInString();
+ } else {
+ this.consume();
+ }
+ } while (this.nextChar());
+ }
+ }, {
+ key: "errorControlCharInString",
+ value: function errorControlCharInString() {
+ var displayCode = '\\u00';
+
+ if (this.char < 16) {
+ displayCode += '0';
+ }
+
+ displayCode += this.char.toString(16);
+ return this.error(new TomlError(`Control characters (codes < 0x1f and 0x7f) are not allowed in strings, use ${displayCode} instead`));
+ }
+ }, {
+ key: "recordMultiEscapeReplacement",
+ value: function recordMultiEscapeReplacement(replacement) {
+ this.state.buf += replacement;
+ return this.goto(this.parseMultiStringContent);
+ }
+ }, {
+ key: "parseMultiEnd",
+ value: function parseMultiEnd() {
+ if (this.char === CHAR_QUOT) {
+ return this.next(this.parseMultiEnd2);
+ } else {
+ this.state.buf += '"';
+ return this.goto(this.parseMultiStringContent);
+ }
+ }
+ }, {
+ key: "parseMultiEnd2",
+ value: function parseMultiEnd2() {
+ if (this.char === CHAR_QUOT) {
+ return this.return();
+ } else {
+ this.state.buf += '""';
+ return this.goto(this.parseMultiStringContent);
+ }
+ }
+ }, {
+ key: "parseMultiEscape",
+ value: function parseMultiEscape() {
+ if (this.char === CTRL_M || this.char === CTRL_J) {
+ return this.next(this.parseMultiTrim);
+ } else if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return this.next(this.parsePreMultiTrim);
+ } else {
+ return this.goto(this.parseEscape);
+ }
+ }
+ }, {
+ key: "parsePreMultiTrim",
+ value: function parsePreMultiTrim() {
+ if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return null;
+ } else if (this.char === CTRL_M || this.char === CTRL_J) {
+ return this.next(this.parseMultiTrim);
+ } else {
+ throw this.error(new TomlError("Can't escape whitespace"));
+ }
+ }
+ }, {
+ key: "parseMultiTrim",
+ value: function parseMultiTrim() {
+ // explicitly whitespace here, END should follow the same path as chars
+ if (this.char === CTRL_J || this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) {
+ return null;
+ } else {
+ return this.returnNow();
+ }
+ }
+ }, {
+ key: "parseEscape",
+ value: function parseEscape() {
+ if (this.char in escapes) {
+ return this.return(escapes[this.char]);
+ } else if (this.char === CHAR_u) {
+ return this.call(this.parseSmallUnicode, this.parseUnicodeReturn);
+ } else if (this.char === CHAR_U) {
+ return this.call(this.parseLargeUnicode, this.parseUnicodeReturn);
+ } else {
+ throw this.error(new TomlError('Unknown escape character: ' + this.char));
+ }
+ }
+ }, {
+ key: "parseUnicodeReturn",
+ value: function parseUnicodeReturn(char) {
+ try {
+ var codePoint = parseInt(char, 16);
+
+ if (codePoint >= SURROGATE_FIRST && codePoint <= SURROGATE_LAST) {
+ throw this.error(new TomlError('Invalid unicode, character in range 0xD800 - 0xDFFF is reserved'));
+ }
+
+ return this.returnNow(String.fromCodePoint(codePoint));
+ } catch (err) {
+ throw this.error(TomlError.wrap(err));
+ }
+ }
+ }, {
+ key: "parseSmallUnicode",
+ value: function parseSmallUnicode() {
+ if (!isHexit(this.char)) {
+ throw this.error(new TomlError('Invalid character in unicode sequence, expected hex'));
+ } else {
+ this.consume();
+ if (this.state.buf.length >= 4) return this.return();
+ }
+ }
+ }, {
+ key: "parseLargeUnicode",
+ value: function parseLargeUnicode() {
+ if (!isHexit(this.char)) {
+ throw this.error(new TomlError('Invalid character in unicode sequence, expected hex'));
+ } else {
+ this.consume();
+ if (this.state.buf.length >= 8) return this.return();
+ }
+ }
+ /* NUMBERS */
+
+ }, {
+ key: "parseNumberSign",
+ value: function parseNumberSign() {
+ this.consume();
+ return this.next(this.parseMaybeSignedInfOrNan);
+ }
+ }, {
+ key: "parseMaybeSignedInfOrNan",
+ value: function parseMaybeSignedInfOrNan() {
+ if (this.char === CHAR_i) {
+ return this.next(this.parseInf);
+ } else if (this.char === CHAR_n) {
+ return this.next(this.parseNan);
+ } else {
+ return this.callNow(this.parseNoUnder, this.parseNumberIntegerStart);
+ }
+ }
+ }, {
+ key: "parseNumberIntegerStart",
+ value: function parseNumberIntegerStart() {
+ if (this.char === CHAR_0) {
+ this.consume();
+ return this.next(this.parseNumberIntegerExponentOrDecimal);
+ } else {
+ return this.goto(this.parseNumberInteger);
+ }
+ }
+ }, {
+ key: "parseNumberIntegerExponentOrDecimal",
+ value: function parseNumberIntegerExponentOrDecimal() {
+ if (this.char === CHAR_PERIOD) {
+ this.consume();
+ return this.call(this.parseNoUnder, this.parseNumberFloat);
+ } else if (this.char === CHAR_E || this.char === CHAR_e) {
+ this.consume();
+ return this.next(this.parseNumberExponentSign);
+ } else {
+ return this.returnNow(Integer(this.state.buf));
+ }
+ }
+ }, {
+ key: "parseNumberInteger",
+ value: function parseNumberInteger() {
+ if (isDigit(this.char)) {
+ this.consume();
+ } else if (this.char === CHAR_LOWBAR) {
+ return this.call(this.parseNoUnder);
+ } else if (this.char === CHAR_E || this.char === CHAR_e) {
+ this.consume();
+ return this.next(this.parseNumberExponentSign);
+ } else if (this.char === CHAR_PERIOD) {
+ this.consume();
+ return this.call(this.parseNoUnder, this.parseNumberFloat);
+ } else {
+ var result = Integer(this.state.buf);
+ /* istanbul ignore if */
+
+ if (result.isNaN()) {
+ throw this.error(new TomlError('Invalid number'));
+ } else {
+ return this.returnNow(result);
+ }
+ }
+ }
+ }, {
+ key: "parseNoUnder",
+ value: function parseNoUnder() {
+ if (this.char === CHAR_LOWBAR || this.char === CHAR_PERIOD || this.char === CHAR_E || this.char === CHAR_e) {
+ throw this.error(new TomlError('Unexpected character, expected digit'));
+ } else if (this.atEndOfWord()) {
+ throw this.error(new TomlError('Incomplete number'));
+ }
+
+ return this.returnNow();
+ }
+ }, {
+ key: "parseNumberFloat",
+ value: function parseNumberFloat() {
+ if (this.char === CHAR_LOWBAR) {
+ return this.call(this.parseNoUnder, this.parseNumberFloat);
+ } else if (isDigit(this.char)) {
+ this.consume();
+ } else if (this.char === CHAR_E || this.char === CHAR_e) {
+ this.consume();
+ return this.next(this.parseNumberExponentSign);
+ } else {
+ return this.returnNow(Float(this.state.buf));
+ }
+ }
+ }, {
+ key: "parseNumberExponentSign",
+ value: function parseNumberExponentSign() {
+ if (isDigit(this.char)) {
+ return this.goto(this.parseNumberExponent);
+ } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {
+ this.consume();
+ this.call(this.parseNoUnder, this.parseNumberExponent);
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected -, + or digit'));
+ }
+ }
+ }, {
+ key: "parseNumberExponent",
+ value: function parseNumberExponent() {
+ if (isDigit(this.char)) {
+ this.consume();
+ } else if (this.char === CHAR_LOWBAR) {
+ return this.call(this.parseNoUnder);
+ } else {
+ return this.returnNow(Float(this.state.buf));
+ }
+ }
+ /* NUMBERS or DATETIMES */
+
+ }, {
+ key: "parseNumberOrDateTime",
+ value: function parseNumberOrDateTime() {
+ if (this.char === CHAR_0) {
+ this.consume();
+ return this.next(this.parseNumberBaseOrDateTime);
+ } else {
+ return this.goto(this.parseNumberOrDateTimeOnly);
+ }
+ }
+ }, {
+ key: "parseNumberOrDateTimeOnly",
+ value: function parseNumberOrDateTimeOnly() {
+ // note, if two zeros are in a row then it MUST be a date
+ if (this.char === CHAR_LOWBAR) {
+ return this.call(this.parseNoUnder, this.parseNumberInteger);
+ } else if (isDigit(this.char)) {
+ this.consume();
+ if (this.state.buf.length > 4) this.next(this.parseNumberInteger);
+ } else if (this.char === CHAR_E || this.char === CHAR_e) {
+ this.consume();
+ return this.next(this.parseNumberExponentSign);
+ } else if (this.char === CHAR_PERIOD) {
+ this.consume();
+ return this.call(this.parseNoUnder, this.parseNumberFloat);
+ } else if (this.char === CHAR_HYPHEN) {
+ return this.goto(this.parseDateTime);
+ } else if (this.char === CHAR_COLON) {
+ return this.goto(this.parseOnlyTimeHour);
+ } else {
+ return this.returnNow(Integer(this.state.buf));
+ }
+ }
+ }, {
+ key: "parseDateTimeOnly",
+ value: function parseDateTimeOnly() {
+ if (this.state.buf.length < 4) {
+ if (isDigit(this.char)) {
+ return this.consume();
+ } else if (this.char === CHAR_COLON) {
+ return this.goto(this.parseOnlyTimeHour);
+ } else {
+ throw this.error(new TomlError('Expected digit while parsing year part of a date'));
+ }
+ } else {
+ if (this.char === CHAR_HYPHEN) {
+ return this.goto(this.parseDateTime);
+ } else {
+ throw this.error(new TomlError('Expected hyphen (-) while parsing year part of date'));
+ }
+ }
+ }
+ }, {
+ key: "parseNumberBaseOrDateTime",
+ value: function parseNumberBaseOrDateTime() {
+ if (this.char === CHAR_b) {
+ this.consume();
+ return this.call(this.parseNoUnder, this.parseIntegerBin);
+ } else if (this.char === CHAR_o) {
+ this.consume();
+ return this.call(this.parseNoUnder, this.parseIntegerOct);
+ } else if (this.char === CHAR_x) {
+ this.consume();
+ return this.call(this.parseNoUnder, this.parseIntegerHex);
+ } else if (this.char === CHAR_PERIOD) {
+ return this.goto(this.parseNumberInteger);
+ } else if (isDigit(this.char)) {
+ return this.goto(this.parseDateTimeOnly);
+ } else {
+ return this.returnNow(Integer(this.state.buf));
+ }
+ }
+ }, {
+ key: "parseIntegerHex",
+ value: function parseIntegerHex() {
+ if (isHexit(this.char)) {
+ this.consume();
+ } else if (this.char === CHAR_LOWBAR) {
+ return this.call(this.parseNoUnder);
+ } else {
+ var result = Integer(this.state.buf);
+ /* istanbul ignore if */
+
+ if (result.isNaN()) {
+ throw this.error(new TomlError('Invalid number'));
+ } else {
+ return this.returnNow(result);
+ }
+ }
+ }
+ }, {
+ key: "parseIntegerOct",
+ value: function parseIntegerOct() {
+ if (isOctit(this.char)) {
+ this.consume();
+ } else if (this.char === CHAR_LOWBAR) {
+ return this.call(this.parseNoUnder);
+ } else {
+ var result = Integer(this.state.buf);
+ /* istanbul ignore if */
+
+ if (result.isNaN()) {
+ throw this.error(new TomlError('Invalid number'));
+ } else {
+ return this.returnNow(result);
+ }
+ }
+ }
+ }, {
+ key: "parseIntegerBin",
+ value: function parseIntegerBin() {
+ if (isBit(this.char)) {
+ this.consume();
+ } else if (this.char === CHAR_LOWBAR) {
+ return this.call(this.parseNoUnder);
+ } else {
+ var result = Integer(this.state.buf);
+ /* istanbul ignore if */
+
+ if (result.isNaN()) {
+ throw this.error(new TomlError('Invalid number'));
+ } else {
+ return this.returnNow(result);
+ }
+ }
+ }
+ /* DATETIME */
+
+ }, {
+ key: "parseDateTime",
+ value: function parseDateTime() {
+ // we enter here having just consumed the year and about to consume the hyphen
+ if (this.state.buf.length < 4) {
+ throw this.error(new TomlError('Years less than 1000 must be zero padded to four characters'));
+ }
+
+ this.state.result = this.state.buf;
+ this.state.buf = '';
+ return this.next(this.parseDateMonth);
+ }
+ }, {
+ key: "parseDateMonth",
+ value: function parseDateMonth() {
+ if (this.char === CHAR_HYPHEN) {
+ if (this.state.buf.length < 2) {
+ throw this.error(new TomlError('Months less than 10 must be zero padded to two characters'));
+ }
+
+ this.state.result += '-' + this.state.buf;
+ this.state.buf = '';
+ return this.next(this.parseDateDay);
+ } else if (isDigit(this.char)) {
+ this.consume();
+ } else {
+ throw this.error(new TomlError('Incomplete datetime'));
+ }
+ }
+ }, {
+ key: "parseDateDay",
+ value: function parseDateDay() {
+ if (this.char === CHAR_T || this.char === CHAR_SP) {
+ if (this.state.buf.length < 2) {
+ throw this.error(new TomlError('Days less than 10 must be zero padded to two characters'));
+ }
+
+ this.state.result += '-' + this.state.buf;
+ this.state.buf = '';
+ return this.next(this.parseStartTimeHour);
+ } else if (this.atEndOfWord()) {
+ return this.return(createDate(this.state.result + '-' + this.state.buf));
+ } else if (isDigit(this.char)) {
+ this.consume();
+ } else {
+ throw this.error(new TomlError('Incomplete datetime'));
+ }
+ }
+ }, {
+ key: "parseStartTimeHour",
+ value: function parseStartTimeHour() {
+ if (this.atEndOfWord()) {
+ return this.returnNow(createDate(this.state.result));
+ } else {
+ return this.goto(this.parseTimeHour);
+ }
+ }
+ }, {
+ key: "parseTimeHour",
+ value: function parseTimeHour() {
+ if (this.char === CHAR_COLON) {
+ if (this.state.buf.length < 2) {
+ throw this.error(new TomlError('Hours less than 10 must be zero padded to two characters'));
+ }
+
+ this.state.result += 'T' + this.state.buf;
+ this.state.buf = '';
+ return this.next(this.parseTimeMin);
+ } else if (isDigit(this.char)) {
+ this.consume();
+ } else {
+ throw this.error(new TomlError('Incomplete datetime'));
+ }
+ }
+ }, {
+ key: "parseTimeMin",
+ value: function parseTimeMin() {
+ if (this.state.buf.length < 2 && isDigit(this.char)) {
+ this.consume();
+ } else if (this.state.buf.length === 2 && this.char === CHAR_COLON) {
+ this.state.result += ':' + this.state.buf;
+ this.state.buf = '';
+ return this.next(this.parseTimeSec);
+ } else {
+ throw this.error(new TomlError('Incomplete datetime'));
+ }
+ }
+ }, {
+ key: "parseTimeSec",
+ value: function parseTimeSec() {
+ if (isDigit(this.char)) {
+ this.consume();
+
+ if (this.state.buf.length === 2) {
+ this.state.result += ':' + this.state.buf;
+ this.state.buf = '';
+ return this.next(this.parseTimeZoneOrFraction);
+ }
+ } else {
+ throw this.error(new TomlError('Incomplete datetime'));
+ }
+ }
+ }, {
+ key: "parseOnlyTimeHour",
+ value: function parseOnlyTimeHour() {
+ /* istanbul ignore else */
+ if (this.char === CHAR_COLON) {
+ if (this.state.buf.length < 2) {
+ throw this.error(new TomlError('Hours less than 10 must be zero padded to two characters'));
+ }
+
+ this.state.result = this.state.buf;
+ this.state.buf = '';
+ return this.next(this.parseOnlyTimeMin);
+ } else {
+ throw this.error(new TomlError('Incomplete time'));
+ }
+ }
+ }, {
+ key: "parseOnlyTimeMin",
+ value: function parseOnlyTimeMin() {
+ if (this.state.buf.length < 2 && isDigit(this.char)) {
+ this.consume();
+ } else if (this.state.buf.length === 2 && this.char === CHAR_COLON) {
+ this.state.result += ':' + this.state.buf;
+ this.state.buf = '';
+ return this.next(this.parseOnlyTimeSec);
+ } else {
+ throw this.error(new TomlError('Incomplete time'));
+ }
+ }
+ }, {
+ key: "parseOnlyTimeSec",
+ value: function parseOnlyTimeSec() {
+ if (isDigit(this.char)) {
+ this.consume();
+
+ if (this.state.buf.length === 2) {
+ return this.next(this.parseOnlyTimeFractionMaybe);
+ }
+ } else {
+ throw this.error(new TomlError('Incomplete time'));
+ }
+ }
+ }, {
+ key: "parseOnlyTimeFractionMaybe",
+ value: function parseOnlyTimeFractionMaybe() {
+ this.state.result += ':' + this.state.buf;
+
+ if (this.char === CHAR_PERIOD) {
+ this.state.buf = '';
+ this.next(this.parseOnlyTimeFraction);
+ } else {
+ return this.return(createTime(this.state.result));
+ }
+ }
+ }, {
+ key: "parseOnlyTimeFraction",
+ value: function parseOnlyTimeFraction() {
+ if (isDigit(this.char)) {
+ this.consume();
+ } else if (this.atEndOfWord()) {
+ if (this.state.buf.length === 0) throw this.error(new TomlError('Expected digit in milliseconds'));
+ return this.returnNow(createTime(this.state.result + '.' + this.state.buf));
+ } else {
+ throw this.error(new TomlError('Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z'));
+ }
+ }
+ }, {
+ key: "parseTimeZoneOrFraction",
+ value: function parseTimeZoneOrFraction() {
+ if (this.char === CHAR_PERIOD) {
+ this.consume();
+ this.next(this.parseDateTimeFraction);
+ } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {
+ this.consume();
+ this.next(this.parseTimeZoneHour);
+ } else if (this.char === CHAR_Z) {
+ this.consume();
+ return this.return(createDatetime(this.state.result + this.state.buf));
+ } else if (this.atEndOfWord()) {
+ return this.returnNow(createDatetimeFloat(this.state.result + this.state.buf));
+ } else {
+ throw this.error(new TomlError('Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z'));
+ }
+ }
+ }, {
+ key: "parseDateTimeFraction",
+ value: function parseDateTimeFraction() {
+ if (isDigit(this.char)) {
+ this.consume();
+ } else if (this.state.buf.length === 1) {
+ throw this.error(new TomlError('Expected digit in milliseconds'));
+ } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {
+ this.consume();
+ this.next(this.parseTimeZoneHour);
+ } else if (this.char === CHAR_Z) {
+ this.consume();
+ return this.return(createDatetime(this.state.result + this.state.buf));
+ } else if (this.atEndOfWord()) {
+ return this.returnNow(createDatetimeFloat(this.state.result + this.state.buf));
+ } else {
+ throw this.error(new TomlError('Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z'));
+ }
+ }
+ }, {
+ key: "parseTimeZoneHour",
+ value: function parseTimeZoneHour() {
+ if (isDigit(this.char)) {
+ this.consume(); // FIXME: No more regexps
+
+ if (/\d\d$/.test(this.state.buf)) return this.next(this.parseTimeZoneSep);
+ } else {
+ throw this.error(new TomlError('Unexpected character in datetime, expected digit'));
+ }
+ }
+ }, {
+ key: "parseTimeZoneSep",
+ value: function parseTimeZoneSep() {
+ if (this.char === CHAR_COLON) {
+ this.consume();
+ this.next(this.parseTimeZoneMin);
+ } else {
+ throw this.error(new TomlError('Unexpected character in datetime, expected colon'));
+ }
+ }
+ }, {
+ key: "parseTimeZoneMin",
+ value: function parseTimeZoneMin() {
+ if (isDigit(this.char)) {
+ this.consume();
+ if (/\d\d$/.test(this.state.buf)) return this.return(createDatetime(this.state.result + this.state.buf));
+ } else {
+ throw this.error(new TomlError('Unexpected character in datetime, expected digit'));
+ }
+ }
+ /* BOOLEAN */
+
+ }, {
+ key: "parseBoolean",
+ value: function parseBoolean() {
+ /* istanbul ignore else */
+ if (this.char === CHAR_t) {
+ this.consume();
+ return this.next(this.parseTrue_r);
+ } else if (this.char === CHAR_f) {
+ this.consume();
+ return this.next(this.parseFalse_a);
+ }
+ }
+ }, {
+ key: "parseTrue_r",
+ value: function parseTrue_r() {
+ if (this.char === CHAR_r) {
+ this.consume();
+ return this.next(this.parseTrue_u);
+ } else {
+ throw this.error(new TomlError('Invalid boolean, expected true or false'));
+ }
+ }
+ }, {
+ key: "parseTrue_u",
+ value: function parseTrue_u() {
+ if (this.char === CHAR_u) {
+ this.consume();
+ return this.next(this.parseTrue_e);
+ } else {
+ throw this.error(new TomlError('Invalid boolean, expected true or false'));
+ }
+ }
+ }, {
+ key: "parseTrue_e",
+ value: function parseTrue_e() {
+ if (this.char === CHAR_e) {
+ return this.return(true);
+ } else {
+ throw this.error(new TomlError('Invalid boolean, expected true or false'));
+ }
+ }
+ }, {
+ key: "parseFalse_a",
+ value: function parseFalse_a() {
+ if (this.char === CHAR_a) {
+ this.consume();
+ return this.next(this.parseFalse_l);
+ } else {
+ throw this.error(new TomlError('Invalid boolean, expected true or false'));
+ }
+ }
+ }, {
+ key: "parseFalse_l",
+ value: function parseFalse_l() {
+ if (this.char === CHAR_l) {
+ this.consume();
+ return this.next(this.parseFalse_s);
+ } else {
+ throw this.error(new TomlError('Invalid boolean, expected true or false'));
+ }
+ }
+ }, {
+ key: "parseFalse_s",
+ value: function parseFalse_s() {
+ if (this.char === CHAR_s) {
+ this.consume();
+ return this.next(this.parseFalse_e);
+ } else {
+ throw this.error(new TomlError('Invalid boolean, expected true or false'));
+ }
+ }
+ }, {
+ key: "parseFalse_e",
+ value: function parseFalse_e() {
+ if (this.char === CHAR_e) {
+ return this.return(false);
+ } else {
+ throw this.error(new TomlError('Invalid boolean, expected true or false'));
+ }
+ }
+ /* INLINE LISTS */
+
+ }, {
+ key: "parseInlineList",
+ value: function parseInlineList() {
+ if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M || this.char === CTRL_J) {
+ return null;
+ } else if (this.char === Parser.END) {
+ throw this.error(new TomlError('Unterminated inline array'));
+ } else if (this.char === CHAR_NUM) {
+ return this.call(this.parseComment);
+ } else if (this.char === CHAR_RSQB) {
+ return this.return(this.state.resultArr || InlineList());
+ } else {
+ return this.callNow(this.parseValue, this.recordInlineListValue);
+ }
+ }
+ }, {
+ key: "recordInlineListValue",
+ value: function recordInlineListValue(value) {
+ if (this.state.resultArr) {
+ var listType = this.state.resultArr[_contentType];
+ var valueType = tomlType(value);
+
+ if (listType !== valueType) {
+ throw this.error(new TomlError(`Inline lists must be a single type, not a mix of ${listType} and ${valueType}`));
+ }
+ } else {
+ this.state.resultArr = InlineList(tomlType(value));
+ }
+
+ if (isFloat(value) || isInteger(value)) {
+ // unbox now that we've verified they're ok
+ this.state.resultArr.push(value.valueOf());
+ } else {
+ this.state.resultArr.push(value);
+ }
+
+ return this.goto(this.parseInlineListNext);
+ }
+ }, {
+ key: "parseInlineListNext",
+ value: function parseInlineListNext() {
+ if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M || this.char === CTRL_J) {
+ return null;
+ } else if (this.char === CHAR_NUM) {
+ return this.call(this.parseComment);
+ } else if (this.char === CHAR_COMMA) {
+ return this.next(this.parseInlineList);
+ } else if (this.char === CHAR_RSQB) {
+ return this.goto(this.parseInlineList);
+ } else {
+ throw this.error(new TomlError('Invalid character, expected whitespace, comma (,) or close bracket (])'));
+ }
+ }
+ /* INLINE TABLE */
+
+ }, {
+ key: "parseInlineTable",
+ value: function parseInlineTable() {
+ if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return null;
+ } else if (this.char === Parser.END || this.char === CHAR_NUM || this.char === CTRL_J || this.char === CTRL_M) {
+ throw this.error(new TomlError('Unterminated inline array'));
+ } else if (this.char === CHAR_RCUB) {
+ return this.return(this.state.resultTable || InlineTable());
+ } else {
+ if (!this.state.resultTable) this.state.resultTable = InlineTable();
+ return this.callNow(this.parseAssign, this.recordInlineTableValue);
+ }
+ }
+ }, {
+ key: "recordInlineTableValue",
+ value: function recordInlineTableValue(kv) {
+ var target = this.state.resultTable;
+ var finalKey = kv.key.pop();
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = kv.key[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var kw = _step2.value;
+
+ if (hasKey(target, kw) && (!isTable(target[kw]) || target[kw][_declared])) {
+ throw this.error(new TomlError("Can't redefine existing key"));
+ }
+
+ target = target[kw] = target[kw] || Table();
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ if (hasKey(target, finalKey)) {
+ throw this.error(new TomlError("Can't redefine existing key"));
+ }
+
+ if (isInteger(kv.value) || isFloat(kv.value)) {
+ target[finalKey] = kv.value.valueOf();
+ } else {
+ target[finalKey] = kv.value;
+ }
+
+ return this.goto(this.parseInlineTableNext);
+ }
+ }, {
+ key: "parseInlineTableNext",
+ value: function parseInlineTableNext() {
+ if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return null;
+ } else if (this.char === Parser.END || this.char === CHAR_NUM || this.char === CTRL_J || this.char === CTRL_M) {
+ throw this.error(new TomlError('Unterminated inline array'));
+ } else if (this.char === CHAR_COMMA) {
+ return this.next(this.parseInlineTable);
+ } else if (this.char === CHAR_RCUB) {
+ return this.goto(this.parseInlineTable);
+ } else {
+ throw this.error(new TomlError('Invalid character, expected whitespace, comma (,) or close bracket (])'));
+ }
+ }
+ }]);
+
+ return TOMLParser;
+ }(Parser);
+
+ return TOMLParser;
+}
+tomlParser.makeParserClass = makeParserClass_1;
+tomlParser.TomlError = TomlError_1;
+
+var parsePrettyError = prettyError;
+
+function prettyError(err, buf) {
+ /* istanbul ignore if */
+ if (err.pos == null || err.line == null) return err;
+ var msg = err.message;
+ msg += ` at row ${err.line + 1}, col ${err.col + 1}, pos ${err.pos}:\n`;
+ /* istanbul ignore else */
+
+ if (buf && buf.split) {
+ var lines = buf.split(/\n/);
+ var lineNumWidth = String(Math.min(lines.length, err.line + 3)).length;
+ var linePadding = ' ';
+
+ while (linePadding.length < lineNumWidth) {
+ linePadding += ' ';
+ }
+
+ for (var ii = Math.max(0, err.line - 1); ii < Math.min(lines.length, err.line + 2); ++ii) {
+ var lineNum = String(ii + 1);
+ if (lineNum.length < lineNumWidth) lineNum = ' ' + lineNum;
+
+ if (err.line === ii) {
+ msg += lineNum + '> ' + lines[ii] + '\n';
+ msg += linePadding + ' ';
+
+ for (var hh = 0; hh < err.col; ++hh) {
+ msg += ' ';
+ }
+
+ msg += '^\n';
+ } else {
+ msg += lineNum + ': ' + lines[ii] + '\n';
+ }
+ }
+ }
+
+ err.message = msg + '\n';
+ return err;
+}
+
+var parseString_1 = parseString;
+
+function parseString(str) {
+ if (global.Buffer && global.Buffer.isBuffer(str)) {
+ str = str.toString('utf8');
+ }
+
+ var parser = new tomlParser();
+
+ try {
+ parser.parse(str);
+ return parser.finish();
+ } catch (err) {
+ throw parsePrettyError(err, str);
+ }
+}
+
+var loadToml = function loadToml(filePath, content) {
+ try {
+ return parseString_1(content);
+ } catch (error) {
+ error.message = `TOML Error in ${filePath}:\n${error.message}`;
+ throw error;
+ }
+};
+
+var getExplorerMemoized = mem_1(function (opts) {
+ var explorer = thirdParty.cosmiconfig("prettier", {
+ cache: opts.cache,
+ transform: function transform(result) {
+ if (result && result.config) {
+ if (typeof result.config === "string") {
+ var modulePath = resolve.sync(result.config, {
+ basedir: path$2.dirname(result.filepath)
+ });
+ result.config = require(modulePath);
+ }
+
+ if (typeof result.config !== "object") {
+ throw new Error(`Config is only allowed to be an object, ` + `but received ${typeof result.config} in "${result.filepath}"`);
+ }
+
+ delete result.config.$schema;
+ }
+
+ return result;
+ },
+ searchPlaces: ["package.json", ".prettierrc", ".prettierrc.json", ".prettierrc.yaml", ".prettierrc.yml", ".prettierrc.js", "prettier.config.js", ".prettierrc.toml"],
+ loaders: {
+ ".toml": loadToml
+ }
+ });
+
+ var _load = opts.sync ? explorer.loadSync : explorer.load;
+
+ var search = opts.sync ? explorer.searchSync : explorer.search;
+ return {
+ // cosmiconfig v4 interface
+ load: function load(searchPath, configPath) {
+ return configPath ? _load(configPath) : search(searchPath);
+ }
+ };
+});
+/** @param {{ cache: boolean, sync: boolean }} opts */
+
+function getLoadFunction$1(opts) {
+ // Normalize opts before passing to a memoized function
+ opts = Object.assign({
+ sync: false,
+ cache: false
+ }, opts);
+ return getExplorerMemoized(opts).load;
+}
+
+function _resolveConfig(filePath, opts, sync) {
+ opts = Object.assign({
+ useCache: true
+ }, opts);
+ var loadOpts = {
+ cache: !!opts.useCache,
+ sync: !!sync,
+ editorconfig: !!opts.editorconfig
+ };
+ var load = getLoadFunction$1(loadOpts);
+ var loadEditorConfig = resolveConfigEditorconfig.getLoadFunction(loadOpts);
+ var arr = [load, loadEditorConfig].map(function (l) {
+ return l(filePath, opts.config);
+ });
+
+ var unwrapAndMerge = function unwrapAndMerge(arr) {
+ var result = arr[0];
+ var editorConfigured = arr[1];
+ var merged = Object.assign({}, editorConfigured, mergeOverrides(Object.assign({}, result), filePath));
+ ["plugins", "pluginSearchDirs"].forEach(function (optionName) {
+ if (Array.isArray(merged[optionName])) {
+ merged[optionName] = merged[optionName].map(function (value) {
+ return typeof value === "string" && value.startsWith(".") // relative path
+ ? path$2.resolve(path$2.dirname(result.filepath), value) : value;
+ });
+ }
+ });
+
+ if (!result && !editorConfigured) {
+ return null;
+ }
+
+ return merged;
+ };
+
+ if (loadOpts.sync) {
+ return unwrapAndMerge(arr);
+ }
+
+ return Promise.all(arr).then(unwrapAndMerge);
+}
+
+var resolveConfig = function resolveConfig(filePath, opts) {
+ return _resolveConfig(filePath, opts, false);
+};
+
+resolveConfig.sync = function (filePath, opts) {
+ return _resolveConfig(filePath, opts, true);
+};
+
+function clearCache$1() {
+ mem_1.clear(getExplorerMemoized);
+ resolveConfigEditorconfig.clearCache();
+}
+
+function resolveConfigFile(filePath) {
+ var load = getLoadFunction$1({
+ sync: false
+ });
+ return load(filePath).then(function (result) {
+ return result ? result.filepath : null;
+ });
+}
+
+resolveConfigFile.sync = function (filePath) {
+ var load = getLoadFunction$1({
+ sync: true
+ });
+ var result = load(filePath);
+ return result ? result.filepath : null;
+};
+
+function mergeOverrides(configResult, filePath) {
+ var options = Object.assign({}, configResult.config);
+
+ if (filePath && options.overrides) {
+ var relativeFilePath = path$2.relative(path$2.dirname(configResult.filepath), filePath);
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = options.overrides[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var override = _step.value;
+
+ if (pathMatchesGlobs(relativeFilePath, override.files, override.excludeFiles)) {
+ Object.assign(options, override.options);
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+ }
+
+ delete options.overrides;
+ return options;
+} // Based on eslint: https://github.com/eslint/eslint/blob/master/lib/config/config-ops.js
+
+
+function pathMatchesGlobs(filePath, patterns, excludedPatterns) {
+ var patternList = [].concat(patterns);
+ var excludedPatternList = [].concat(excludedPatterns || []);
+ var opts = {
+ matchBase: true,
+ dot: true
+ };
+ return patternList.some(function (pattern) {
+ return minimatch_1(filePath, pattern, opts);
+ }) && !excludedPatternList.some(function (excludedPattern) {
+ return minimatch_1(filePath, excludedPattern, opts);
+ });
+}
+
+var resolveConfig_1 = {
+ resolveConfig,
+ resolveConfigFile,
+ clearCache: clearCache$1
+};
+
+/**
+ * @typedef {{ ignorePath?: string, withNodeModules?: boolean, plugins: object }} FileInfoOptions
+ * @typedef {{ ignored: boolean, inferredParser: string | null }} FileInfoResult
+ */
+
+/**
+ * @param {string} filePath
+ * @param {FileInfoOptions} opts
+ * @returns {Promise<FileInfoResult>}
+ *
+ * Please note that prettier.getFileInfo() expects opts.plugins to be an array of paths,
+ * not an object. A transformation from this array to an object is automatically done
+ * internally by the method wrapper. See withPlugins() in index.js.
+ */
+
+
+function getFileInfo(filePath, opts) {
+ if (typeof filePath !== "string") {
+ return Promise.reject(new TypeError(`expect \`filePath\` to be a string, got \`${typeof filePath}\``));
+ }
+
+ return createIgnorer_1(opts.ignorePath, opts.withNodeModules).then(function (ignorer) {
+ return _getFileInfo({
+ ignorer,
+ filePath: normalizeFilePath(filePath, opts.ignorePath),
+ plugins: opts.plugins,
+ resolveConfig: opts.resolveConfig,
+ sync: false
+ });
+ });
+}
+/**
+ * @param {string} filePath
+ * @param {FileInfoOptions} opts
+ * @returns {FileInfoResult}
+ */
+
+
+getFileInfo.sync = function (filePath, opts) {
+ if (typeof filePath !== "string") {
+ throw new TypeError(`expect \`filePath\` to be a string, got \`${typeof filePath}\``);
+ }
+
+ var ignorer = createIgnorer_1.sync(opts.ignorePath, opts.withNodeModules);
+ return _getFileInfo({
+ ignorer,
+ filePath: normalizeFilePath(filePath, opts.ignorePath),
+ plugins: opts.plugins,
+ resolveConfig: opts.resolveConfig,
+ sync: true
+ });
+};
+
+function _getFileInfo(_ref) {
+ var ignorer = _ref.ignorer,
+ filePath = _ref.filePath,
+ plugins = _ref.plugins,
+ _ref$resolveConfig = _ref.resolveConfig,
+ resolveConfig = _ref$resolveConfig === void 0 ? false : _ref$resolveConfig,
+ _ref$sync = _ref.sync,
+ sync = _ref$sync === void 0 ? false : _ref$sync;
+ var fileInfo = {
+ ignored: ignorer.ignores(filePath),
+ inferredParser: options$1.inferParser(filePath, plugins) || null
+ };
+
+ if (!fileInfo.inferredParser && resolveConfig) {
+ if (!sync) {
+ return resolveConfig_1.resolveConfig(filePath).then(function (resolvedConfig) {
+ if (resolvedConfig && resolvedConfig.parser) {
+ fileInfo.inferredParser = resolvedConfig.parser;
+ }
+
+ return fileInfo;
+ });
+ }
+
+ var resolvedConfig = resolveConfig_1.resolveConfig.sync(filePath);
+
+ if (resolvedConfig && resolvedConfig.parser) {
+ fileInfo.inferredParser = resolvedConfig.parser;
+ }
+ }
+
+ return fileInfo;
+}
+
+function normalizeFilePath(filePath, ignorePath) {
+ return ignorePath ? path$2.relative(path$2.dirname(ignorePath), filePath) : filePath;
+}
+
+var getFileInfo_1 = getFileInfo;
+
+var lodash_uniqby = createCommonjsModule(function (module, exports) {
+ /**
+ * lodash (Custom Build) <https://lodash.com/>
+ * Build: `lodash modularize exports="npm" -o ./`
+ * Copyright jQuery Foundation and other contributors <https://jquery.org/>
+ * Released under MIT license <https://lodash.com/license>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ */
+
+ /** Used as the size to enable large array optimizations. */
+ var LARGE_ARRAY_SIZE = 200;
+ /** Used as the `TypeError` message for "Functions" methods. */
+
+ var FUNC_ERROR_TEXT = 'Expected a function';
+ /** Used to stand-in for `undefined` hash values. */
+
+ var HASH_UNDEFINED = '__lodash_hash_undefined__';
+ /** Used to compose bitmasks for comparison styles. */
+
+ var UNORDERED_COMPARE_FLAG = 1,
+ PARTIAL_COMPARE_FLAG = 2;
+ /** Used as references for various `Number` constants. */
+
+ var INFINITY = 1 / 0,
+ MAX_SAFE_INTEGER = 9007199254740991;
+ /** `Object#toString` result references. */
+
+ var argsTag = '[object Arguments]',
+ arrayTag = '[object Array]',
+ boolTag = '[object Boolean]',
+ dateTag = '[object Date]',
+ errorTag = '[object Error]',
+ funcTag = '[object Function]',
+ genTag = '[object GeneratorFunction]',
+ mapTag = '[object Map]',
+ numberTag = '[object Number]',
+ objectTag = '[object Object]',
+ promiseTag = '[object Promise]',
+ regexpTag = '[object RegExp]',
+ setTag = '[object Set]',
+ stringTag = '[object String]',
+ symbolTag = '[object Symbol]',
+ weakMapTag = '[object WeakMap]';
+ var arrayBufferTag = '[object ArrayBuffer]',
+ dataViewTag = '[object DataView]',
+ float32Tag = '[object Float32Array]',
+ float64Tag = '[object Float64Array]',
+ int8Tag = '[object Int8Array]',
+ int16Tag = '[object Int16Array]',
+ int32Tag = '[object Int32Array]',
+ uint8Tag = '[object Uint8Array]',
+ uint8ClampedTag = '[object Uint8ClampedArray]',
+ uint16Tag = '[object Uint16Array]',
+ uint32Tag = '[object Uint32Array]';
+ /** Used to match property names within property paths. */
+
+ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
+ reIsPlainProp = /^\w*$/,
+ reLeadingDot = /^\./,
+ rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
+ /**
+ * Used to match `RegExp`
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
+ */
+
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
+ /** Used to match backslashes in property paths. */
+
+ var reEscapeChar = /\\(\\)?/g;
+ /** Used to detect host constructors (Safari). */
+
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
+ /** Used to detect unsigned integer values. */
+
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
+ /** Used to identify `toStringTag` values of typed arrays. */
+
+ var typedArrayTags = {};
+ typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
+ typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
+ /** Detect free variable `global` from Node.js. */
+
+ var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
+ /** Detect free variable `self`. */
+
+ var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
+ /** Used as a reference to the global object. */
+
+ var root = freeGlobal || freeSelf || Function('return this')();
+ /** Detect free variable `exports`. */
+
+ var freeExports = exports && !exports.nodeType && exports;
+ /** Detect free variable `module`. */
+
+ var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
+ /** Detect the popular CommonJS extension `module.exports`. */
+
+ var moduleExports = freeModule && freeModule.exports === freeExports;
+ /** Detect free variable `process` from Node.js. */
+
+ var freeProcess = moduleExports && freeGlobal.process;
+ /** Used to access faster Node.js helpers. */
+
+ var nodeUtil = function () {
+ try {
+ return freeProcess && freeProcess.binding('util');
+ } catch (e) {}
+ }();
+ /* Node.js helper references. */
+
+
+ var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
+ /**
+ * A specialized version of `_.includes` for arrays without support for
+ * specifying an index to search from.
+ *
+ * @private
+ * @param {Array} [array] The array to inspect.
+ * @param {*} target The value to search for.
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
+ */
+
+ function arrayIncludes(array, value) {
+ var length = array ? array.length : 0;
+ return !!length && baseIndexOf(array, value, 0) > -1;
+ }
+ /**
+ * This function is like `arrayIncludes` except that it accepts a comparator.
+ *
+ * @private
+ * @param {Array} [array] The array to inspect.
+ * @param {*} target The value to search for.
+ * @param {Function} comparator The comparator invoked per element.
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
+ */
+
+
+ function arrayIncludesWith(array, value, comparator) {
+ var index = -1,
+ length = array ? array.length : 0;
+
+ while (++index < length) {
+ if (comparator(value, array[index])) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+ /**
+ * A specialized version of `_.some` for arrays without support for iteratee
+ * shorthands.
+ *
+ * @private
+ * @param {Array} [array] The array to iterate over.
+ * @param {Function} predicate The function invoked per iteration.
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
+ * else `false`.
+ */
+
+
+ function arraySome(array, predicate) {
+ var index = -1,
+ length = array ? array.length : 0;
+
+ while (++index < length) {
+ if (predicate(array[index], index, array)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+ /**
+ * The base implementation of `_.findIndex` and `_.findLastIndex` without
+ * support for iteratee shorthands.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {Function} predicate The function invoked per iteration.
+ * @param {number} fromIndex The index to search from.
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+
+
+ function baseFindIndex(array, predicate, fromIndex, fromRight) {
+ var length = array.length,
+ index = fromIndex + (fromRight ? 1 : -1);
+
+ while (fromRight ? index-- : ++index < length) {
+ if (predicate(array[index], index, array)) {
+ return index;
+ }
+ }
+
+ return -1;
+ }
+ /**
+ * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {*} value The value to search for.
+ * @param {number} fromIndex The index to search from.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+
+
+ function baseIndexOf(array, value, fromIndex) {
+ if (value !== value) {
+ return baseFindIndex(array, baseIsNaN, fromIndex);
+ }
+
+ var index = fromIndex - 1,
+ length = array.length;
+
+ while (++index < length) {
+ if (array[index] === value) {
+ return index;
+ }
+ }
+
+ return -1;
+ }
+ /**
+ * The base implementation of `_.isNaN` without support for number objects.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
+ */
+
+
+ function baseIsNaN(value) {
+ return value !== value;
+ }
+ /**
+ * The base implementation of `_.property` without support for deep paths.
+ *
+ * @private
+ * @param {string} key The key of the property to get.
+ * @returns {Function} Returns the new accessor function.
+ */
+
+
+ function baseProperty(key) {
+ return function (object) {
+ return object == null ? undefined : object[key];
+ };
+ }
+ /**
+ * The base implementation of `_.times` without support for iteratee shorthands
+ * or max array length checks.
+ *
+ * @private
+ * @param {number} n The number of times to invoke `iteratee`.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns the array of results.
+ */
+
+
+ function baseTimes(n, iteratee) {
+ var index = -1,
+ result = Array(n);
+
+ while (++index < n) {
+ result[index] = iteratee(index);
+ }
+
+ return result;
+ }
+ /**
+ * The base implementation of `_.unary` without support for storing metadata.
+ *
+ * @private
+ * @param {Function} func The function to cap arguments for.
+ * @returns {Function} Returns the new capped function.
+ */
+
+
+ function baseUnary(func) {
+ return function (value) {
+ return func(value);
+ };
+ }
+ /**
+ * Checks if a cache value for `key` exists.
+ *
+ * @private
+ * @param {Object} cache The cache to query.
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+
+
+ function cacheHas(cache, key) {
+ return cache.has(key);
+ }
+ /**
+ * Gets the value at `key` of `object`.
+ *
+ * @private
+ * @param {Object} [object] The object to query.
+ * @param {string} key The key of the property to get.
+ * @returns {*} Returns the property value.
+ */
+
+
+ function getValue(object, key) {
+ return object == null ? undefined : object[key];
+ }
+ /**
+ * Checks if `value` is a host object in IE < 9.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
+ */
+
+
+ function isHostObject(value) {
+ // Many host objects are `Object` objects that can coerce to strings
+ // despite having improperly defined `toString` methods.
+ var result = false;
+
+ if (value != null && typeof value.toString != 'function') {
+ try {
+ result = !!(value + '');
+ } catch (e) {}
+ }
+
+ return result;
+ }
+ /**
+ * Converts `map` to its key-value pairs.
+ *
+ * @private
+ * @param {Object} map The map to convert.
+ * @returns {Array} Returns the key-value pairs.
+ */
+
+
+ function mapToArray(map) {
+ var index = -1,
+ result = Array(map.size);
+ map.forEach(function (value, key) {
+ result[++index] = [key, value];
+ });
+ return result;
+ }
+ /**
+ * Creates a unary function that invokes `func` with its argument transformed.
+ *
+ * @private
+ * @param {Function} func The function to wrap.
+ * @param {Function} transform The argument transform.
+ * @returns {Function} Returns the new function.
+ */
+
+
+ function overArg(func, transform) {
+ return function (arg) {
+ return func(transform(arg));
+ };
+ }
+ /**
+ * Converts `set` to an array of its values.
+ *
+ * @private
+ * @param {Object} set The set to convert.
+ * @returns {Array} Returns the values.
+ */
+
+
+ function setToArray(set) {
+ var index = -1,
+ result = Array(set.size);
+ set.forEach(function (value) {
+ result[++index] = value;
+ });
+ return result;
+ }
+ /** Used for built-in method references. */
+
+
+ var arrayProto = Array.prototype,
+ funcProto = Function.prototype,
+ objectProto = Object.prototype;
+ /** Used to detect overreaching core-js shims. */
+
+ var coreJsData = root['__core-js_shared__'];
+ /** Used to detect methods masquerading as native. */
+
+ var maskSrcKey = function () {
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
+ return uid ? 'Symbol(src)_1.' + uid : '';
+ }();
+ /** Used to resolve the decompiled source of functions. */
+
+
+ var funcToString = funcProto.toString;
+ /** Used to check objects for own properties. */
+
+ var hasOwnProperty = objectProto.hasOwnProperty;
+ /**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+
+ var objectToString = objectProto.toString;
+ /** Used to detect if a method is native. */
+
+ var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$');
+ /** Built-in value references. */
+
+ var Symbol = root.Symbol,
+ Uint8Array = root.Uint8Array,
+ propertyIsEnumerable = objectProto.propertyIsEnumerable,
+ splice = arrayProto.splice;
+ /* Built-in method references for those with the same name as other `lodash` methods. */
+
+ var nativeKeys = overArg(Object.keys, Object);
+ /* Built-in method references that are verified to be native. */
+
+ var DataView = getNative(root, 'DataView'),
+ Map = getNative(root, 'Map'),
+ Promise = getNative(root, 'Promise'),
+ Set = getNative(root, 'Set'),
+ WeakMap = getNative(root, 'WeakMap'),
+ nativeCreate = getNative(Object, 'create');
+ /** Used to detect maps, sets, and weakmaps. */
+
+ var dataViewCtorString = toSource(DataView),
+ mapCtorString = toSource(Map),
+ promiseCtorString = toSource(Promise),
+ setCtorString = toSource(Set),
+ weakMapCtorString = toSource(WeakMap);
+ /** Used to convert symbols to primitives and strings. */
+
+ var symbolProto = Symbol ? Symbol.prototype : undefined,
+ symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
+ symbolToString = symbolProto ? symbolProto.toString : undefined;
+ /**
+ * Creates a hash object.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+
+ function Hash(entries) {
+ var index = -1,
+ length = entries ? entries.length : 0;
+ this.clear();
+
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ /**
+ * Removes all key-value entries from the hash.
+ *
+ * @private
+ * @name clear
+ * @memberOf Hash
+ */
+
+
+ function hashClear() {
+ this.__data__ = nativeCreate ? nativeCreate(null) : {};
+ }
+ /**
+ * Removes `key` and its value from the hash.
+ *
+ * @private
+ * @name delete
+ * @memberOf Hash
+ * @param {Object} hash The hash to modify.
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+
+
+ function hashDelete(key) {
+ return this.has(key) && delete this.__data__[key];
+ }
+ /**
+ * Gets the hash value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf Hash
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+
+
+ function hashGet(key) {
+ var data = this.__data__;
+
+ if (nativeCreate) {
+ var result = data[key];
+ return result === HASH_UNDEFINED ? undefined : result;
+ }
+
+ return hasOwnProperty.call(data, key) ? data[key] : undefined;
+ }
+ /**
+ * Checks if a hash value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf Hash
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+
+
+ function hashHas(key) {
+ var data = this.__data__;
+ return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
+ }
+ /**
+ * Sets the hash `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf Hash
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the hash instance.
+ */
+
+
+ function hashSet(key, value) {
+ var data = this.__data__;
+ data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;
+ return this;
+ } // Add methods to `Hash`.
+
+
+ Hash.prototype.clear = hashClear;
+ Hash.prototype['delete'] = hashDelete;
+ Hash.prototype.get = hashGet;
+ Hash.prototype.has = hashHas;
+ Hash.prototype.set = hashSet;
+ /**
+ * Creates an list cache object.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+
+ function ListCache(entries) {
+ var index = -1,
+ length = entries ? entries.length : 0;
+ this.clear();
+
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ /**
+ * Removes all key-value entries from the list cache.
+ *
+ * @private
+ * @name clear
+ * @memberOf ListCache
+ */
+
+
+ function listCacheClear() {
+ this.__data__ = [];
+ }
+ /**
+ * Removes `key` and its value from the list cache.
+ *
+ * @private
+ * @name delete
+ * @memberOf ListCache
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+
+
+ function listCacheDelete(key) {
+ var data = this.__data__,
+ index = assocIndexOf(data, key);
+
+ if (index < 0) {
+ return false;
+ }
+
+ var lastIndex = data.length - 1;
+
+ if (index == lastIndex) {
+ data.pop();
+ } else {
+ splice.call(data, index, 1);
+ }
+
+ return true;
+ }
+ /**
+ * Gets the list cache value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf ListCache
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+
+
+ function listCacheGet(key) {
+ var data = this.__data__,
+ index = assocIndexOf(data, key);
+ return index < 0 ? undefined : data[index][1];
+ }
+ /**
+ * Checks if a list cache value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf ListCache
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+
+
+ function listCacheHas(key) {
+ return assocIndexOf(this.__data__, key) > -1;
+ }
+ /**
+ * Sets the list cache `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf ListCache
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the list cache instance.
+ */
+
+
+ function listCacheSet(key, value) {
+ var data = this.__data__,
+ index = assocIndexOf(data, key);
+
+ if (index < 0) {
+ data.push([key, value]);
+ } else {
+ data[index][1] = value;
+ }
+
+ return this;
+ } // Add methods to `ListCache`.
+
+
+ ListCache.prototype.clear = listCacheClear;
+ ListCache.prototype['delete'] = listCacheDelete;
+ ListCache.prototype.get = listCacheGet;
+ ListCache.prototype.has = listCacheHas;
+ ListCache.prototype.set = listCacheSet;
+ /**
+ * Creates a map cache object to store key-value pairs.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+
+ function MapCache(entries) {
+ var index = -1,
+ length = entries ? entries.length : 0;
+ this.clear();
+
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ /**
+ * Removes all key-value entries from the map.
+ *
+ * @private
+ * @name clear
+ * @memberOf MapCache
+ */
+
+
+ function mapCacheClear() {
+ this.__data__ = {
+ 'hash': new Hash(),
+ 'map': new (Map || ListCache)(),
+ 'string': new Hash()
+ };
+ }
+ /**
+ * Removes `key` and its value from the map.
+ *
+ * @private
+ * @name delete
+ * @memberOf MapCache
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+
+
+ function mapCacheDelete(key) {
+ return getMapData(this, key)['delete'](key);
+ }
+ /**
+ * Gets the map value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf MapCache
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+
+
+ function mapCacheGet(key) {
+ return getMapData(this, key).get(key);
+ }
+ /**
+ * Checks if a map value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf MapCache
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+
+
+ function mapCacheHas(key) {
+ return getMapData(this, key).has(key);
+ }
+ /**
+ * Sets the map `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf MapCache
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the map cache instance.
+ */
+
+
+ function mapCacheSet(key, value) {
+ getMapData(this, key).set(key, value);
+ return this;
+ } // Add methods to `MapCache`.
+
+
+ MapCache.prototype.clear = mapCacheClear;
+ MapCache.prototype['delete'] = mapCacheDelete;
+ MapCache.prototype.get = mapCacheGet;
+ MapCache.prototype.has = mapCacheHas;
+ MapCache.prototype.set = mapCacheSet;
+ /**
+ *
+ * Creates an array cache object to store unique values.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [values] The values to cache.
+ */
+
+ function SetCache(values) {
+ var index = -1,
+ length = values ? values.length : 0;
+ this.__data__ = new MapCache();
+
+ while (++index < length) {
+ this.add(values[index]);
+ }
+ }
+ /**
+ * Adds `value` to the array cache.
+ *
+ * @private
+ * @name add
+ * @memberOf SetCache
+ * @alias push
+ * @param {*} value The value to cache.
+ * @returns {Object} Returns the cache instance.
+ */
+
+
+ function setCacheAdd(value) {
+ this.__data__.set(value, HASH_UNDEFINED);
+
+ return this;
+ }
+ /**
+ * Checks if `value` is in the array cache.
+ *
+ * @private
+ * @name has
+ * @memberOf SetCache
+ * @param {*} value The value to search for.
+ * @returns {number} Returns `true` if `value` is found, else `false`.
+ */
+
+
+ function setCacheHas(value) {
+ return this.__data__.has(value);
+ } // Add methods to `SetCache`.
+
+
+ SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
+ SetCache.prototype.has = setCacheHas;
+ /**
+ * Creates a stack cache object to store key-value pairs.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+
+ function Stack(entries) {
+ this.__data__ = new ListCache(entries);
+ }
+ /**
+ * Removes all key-value entries from the stack.
+ *
+ * @private
+ * @name clear
+ * @memberOf Stack
+ */
+
+
+ function stackClear() {
+ this.__data__ = new ListCache();
+ }
+ /**
+ * Removes `key` and its value from the stack.
+ *
+ * @private
+ * @name delete
+ * @memberOf Stack
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+
+
+ function stackDelete(key) {
+ return this.__data__['delete'](key);
+ }
+ /**
+ * Gets the stack value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf Stack
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+
+
+ function stackGet(key) {
+ return this.__data__.get(key);
+ }
+ /**
+ * Checks if a stack value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf Stack
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+
+
+ function stackHas(key) {
+ return this.__data__.has(key);
+ }
+ /**
+ * Sets the stack `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf Stack
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the stack cache instance.
+ */
+
+
+ function stackSet(key, value) {
+ var cache = this.__data__;
+
+ if (cache instanceof ListCache) {
+ var pairs = cache.__data__;
+
+ if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {
+ pairs.push([key, value]);
+ return this;
+ }
+
+ cache = this.__data__ = new MapCache(pairs);
+ }
+
+ cache.set(key, value);
+ return this;
+ } // Add methods to `Stack`.
+
+
+ Stack.prototype.clear = stackClear;
+ Stack.prototype['delete'] = stackDelete;
+ Stack.prototype.get = stackGet;
+ Stack.prototype.has = stackHas;
+ Stack.prototype.set = stackSet;
+ /**
+ * Creates an array of the enumerable property names of the array-like `value`.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @param {boolean} inherited Specify returning inherited property names.
+ * @returns {Array} Returns the array of property names.
+ */
+
+ function arrayLikeKeys(value, inherited) {
+ // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
+ // Safari 9 makes `arguments.length` enumerable in strict mode.
+ var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];
+ var length = result.length,
+ skipIndexes = !!length;
+
+ for (var key in value) {
+ if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isIndex(key, length)))) {
+ result.push(key);
+ }
+ }
+
+ return result;
+ }
+ /**
+ * Gets the index at which the `key` is found in `array` of key-value pairs.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {*} key The key to search for.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+
+
+ function assocIndexOf(array, key) {
+ var length = array.length;
+
+ while (length--) {
+ if (eq(array[length][0], key)) {
+ return length;
+ }
+ }
+
+ return -1;
+ }
+ /**
+ * The base implementation of `_.get` without support for default values.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path of the property to get.
+ * @returns {*} Returns the resolved value.
+ */
+
+
+ function baseGet(object, path) {
+ path = isKey(path, object) ? [path] : castPath(path);
+ var index = 0,
+ length = path.length;
+
+ while (object != null && index < length) {
+ object = object[toKey(path[index++])];
+ }
+
+ return index && index == length ? object : undefined;
+ }
+ /**
+ * The base implementation of `getTag`.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @returns {string} Returns the `toStringTag`.
+ */
+
+
+ function baseGetTag(value) {
+ return objectToString.call(value);
+ }
+ /**
+ * The base implementation of `_.hasIn` without support for deep paths.
+ *
+ * @private
+ * @param {Object} [object] The object to query.
+ * @param {Array|string} key The key to check.
+ * @returns {boolean} Returns `true` if `key` exists, else `false`.
+ */
+
+
+ function baseHasIn(object, key) {
+ return object != null && key in Object(object);
+ }
+ /**
+ * The base implementation of `_.isEqual` which supports partial comparisons
+ * and tracks traversed objects.
+ *
+ * @private
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @param {Function} [customizer] The function to customize comparisons.
+ * @param {boolean} [bitmask] The bitmask of comparison flags.
+ * The bitmask may be composed of the following flags:
+ * 1 - Unordered comparison
+ * 2 - Partial comparison
+ * @param {Object} [stack] Tracks traversed `value` and `other` objects.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+ */
+
+
+ function baseIsEqual(value, other, customizer, bitmask, stack) {
+ if (value === other) {
+ return true;
+ }
+
+ if (value == null || other == null || !isObject(value) && !isObjectLike(other)) {
+ return value !== value && other !== other;
+ }
+
+ return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);
+ }
+ /**
+ * A specialized version of `baseIsEqual` for arrays and objects which performs
+ * deep comparisons and tracks traversed objects enabling objects with circular
+ * references to be compared.
+ *
+ * @private
+ * @param {Object} object The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Function} [customizer] The function to customize comparisons.
+ * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`
+ * for more details.
+ * @param {Object} [stack] Tracks traversed `object` and `other` objects.
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+ */
+
+
+ function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {
+ var objIsArr = isArray(object),
+ othIsArr = isArray(other),
+ objTag = arrayTag,
+ othTag = arrayTag;
+
+ if (!objIsArr) {
+ objTag = getTag(object);
+ objTag = objTag == argsTag ? objectTag : objTag;
+ }
+
+ if (!othIsArr) {
+ othTag = getTag(other);
+ othTag = othTag == argsTag ? objectTag : othTag;
+ }
+
+ var objIsObj = objTag == objectTag && !isHostObject(object),
+ othIsObj = othTag == objectTag && !isHostObject(other),
+ isSameTag = objTag == othTag;
+
+ if (isSameTag && !objIsObj) {
+ stack || (stack = new Stack());
+ return objIsArr || isTypedArray(object) ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);
+ }
+
+ if (!(bitmask & PARTIAL_COMPARE_FLAG)) {
+ var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
+ othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
+
+ if (objIsWrapped || othIsWrapped) {
+ var objUnwrapped = objIsWrapped ? object.value() : object,
+ othUnwrapped = othIsWrapped ? other.value() : other;
+ stack || (stack = new Stack());
+ return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);
+ }
+ }
+
+ if (!isSameTag) {
+ return false;
+ }
+
+ stack || (stack = new Stack());
+ return equalObjects(object, other, equalFunc, customizer, bitmask, stack);
+ }
+ /**
+ * The base implementation of `_.isMatch` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Object} object The object to inspect.
+ * @param {Object} source The object of property values to match.
+ * @param {Array} matchData The property names, values, and compare flags to match.
+ * @param {Function} [customizer] The function to customize comparisons.
+ * @returns {boolean} Returns `true` if `object` is a match, else `false`.
+ */
+
+
+ function baseIsMatch(object, source, matchData, customizer) {
+ var index = matchData.length,
+ length = index,
+ noCustomizer = !customizer;
+
+ if (object == null) {
+ return !length;
+ }
+
+ object = Object(object);
+
+ while (index--) {
+ var data = matchData[index];
+
+ if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {
+ return false;
+ }
+ }
+
+ while (++index < length) {
+ data = matchData[index];
+ var key = data[0],
+ objValue = object[key],
+ srcValue = data[1];
+
+ if (noCustomizer && data[2]) {
+ if (objValue === undefined && !(key in object)) {
+ return false;
+ }
+ } else {
+ var stack = new Stack();
+
+ if (customizer) {
+ var result = customizer(objValue, srcValue, key, object, source, stack);
+ }
+
+ if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) : result)) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+ /**
+ * The base implementation of `_.isNative` without bad shim checks.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a native function,
+ * else `false`.
+ */
+
+
+ function baseIsNative(value) {
+ if (!isObject(value) || isMasked(value)) {
+ return false;
+ }
+
+ var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;
+ return pattern.test(toSource(value));
+ }
+ /**
+ * The base implementation of `_.isTypedArray` without Node.js optimizations.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
+ */
+
+
+ function baseIsTypedArray(value) {
+ return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];
+ }
+ /**
+ * The base implementation of `_.iteratee`.
+ *
+ * @private
+ * @param {*} [value=_.identity] The value to convert to an iteratee.
+ * @returns {Function} Returns the iteratee.
+ */
+
+
+ function baseIteratee(value) {
+ // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
+ // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
+ if (typeof value == 'function') {
+ return value;
+ }
+
+ if (value == null) {
+ return identity;
+ }
+
+ if (typeof value == 'object') {
+ return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
+ }
+
+ return property(value);
+ }
+ /**
+ * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ */
+
+
+ function baseKeys(object) {
+ if (!isPrototype(object)) {
+ return nativeKeys(object);
+ }
+
+ var result = [];
+
+ for (var key in Object(object)) {
+ if (hasOwnProperty.call(object, key) && key != 'constructor') {
+ result.push(key);
+ }
+ }
+
+ return result;
+ }
+ /**
+ * The base implementation of `_.matches` which doesn't clone `source`.
+ *
+ * @private
+ * @param {Object} source The object of property values to match.
+ * @returns {Function} Returns the new spec function.
+ */
+
+
+ function baseMatches(source) {
+ var matchData = getMatchData(source);
+
+ if (matchData.length == 1 && matchData[0][2]) {
+ return matchesStrictComparable(matchData[0][0], matchData[0][1]);
+ }
+
+ return function (object) {
+ return object === source || baseIsMatch(object, source, matchData);
+ };
+ }
+ /**
+ * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
+ *
+ * @private
+ * @param {string} path The path of the property to get.
+ * @param {*} srcValue The value to match.
+ * @returns {Function} Returns the new spec function.
+ */
+
+
+ function baseMatchesProperty(path, srcValue) {
+ if (isKey(path) && isStrictComparable(srcValue)) {
+ return matchesStrictComparable(toKey(path), srcValue);
+ }
+
+ return function (object) {
+ var objValue = get(object, path);
+ return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);
+ };
+ }
+ /**
+ * A specialized version of `baseProperty` which supports deep paths.
+ *
+ * @private
+ * @param {Array|string} path The path of the property to get.
+ * @returns {Function} Returns the new accessor function.
+ */
+
+
+ function basePropertyDeep(path) {
+ return function (object) {
+ return baseGet(object, path);
+ };
+ }
+ /**
+ * The base implementation of `_.toString` which doesn't convert nullish
+ * values to empty strings.
+ *
+ * @private
+ * @param {*} value The value to process.
+ * @returns {string} Returns the string.
+ */
+
+
+ function baseToString(value) {
+ // Exit early for strings to avoid a performance hit in some environments.
+ if (typeof value == 'string') {
+ return value;
+ }
+
+ if (isSymbol(value)) {
+ return symbolToString ? symbolToString.call(value) : '';
+ }
+
+ var result = value + '';
+ return result == '0' && 1 / value == -INFINITY ? '-0' : result;
+ }
+ /**
+ * The base implementation of `_.uniqBy` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {Function} [iteratee] The iteratee invoked per element.
+ * @param {Function} [comparator] The comparator invoked per element.
+ * @returns {Array} Returns the new duplicate free array.
+ */
+
+
+ function baseUniq(array, iteratee, comparator) {
+ var index = -1,
+ includes = arrayIncludes,
+ length = array.length,
+ isCommon = true,
+ result = [],
+ seen = result;
+
+ if (comparator) {
+ isCommon = false;
+ includes = arrayIncludesWith;
+ } else if (length >= LARGE_ARRAY_SIZE) {
+ var set = iteratee ? null : createSet(array);
+
+ if (set) {
+ return setToArray(set);
+ }
+
+ isCommon = false;
+ includes = cacheHas;
+ seen = new SetCache();
+ } else {
+ seen = iteratee ? [] : result;
+ }
+
+ outer: while (++index < length) {
+ var value = array[index],
+ computed = iteratee ? iteratee(value) : value;
+ value = comparator || value !== 0 ? value : 0;
+
+ if (isCommon && computed === computed) {
+ var seenIndex = seen.length;
+
+ while (seenIndex--) {
+ if (seen[seenIndex] === computed) {
+ continue outer;
+ }
+ }
+
+ if (iteratee) {
+ seen.push(computed);
+ }
+
+ result.push(value);
+ } else if (!includes(seen, computed, comparator)) {
+ if (seen !== result) {
+ seen.push(computed);
+ }
+
+ result.push(value);
+ }
+ }
+
+ return result;
+ }
+ /**
+ * Casts `value` to a path array if it's not one.
+ *
+ * @private
+ * @param {*} value The value to inspect.
+ * @returns {Array} Returns the cast property path array.
+ */
+
+
+ function castPath(value) {
+ return isArray(value) ? value : stringToPath(value);
+ }
+ /**
+ * Creates a set object of `values`.
+ *
+ * @private
+ * @param {Array} values The values to add to the set.
+ * @returns {Object} Returns the new set.
+ */
+
+
+ var createSet = !(Set && 1 / setToArray(new Set([, -0]))[1] == INFINITY) ? noop : function (values) {
+ return new Set(values);
+ };
+ /**
+ * A specialized version of `baseIsEqualDeep` for arrays with support for
+ * partial deep comparisons.
+ *
+ * @private
+ * @param {Array} array The array to compare.
+ * @param {Array} other The other array to compare.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Function} customizer The function to customize comparisons.
+ * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
+ * for more details.
+ * @param {Object} stack Tracks traversed `array` and `other` objects.
+ * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
+ */
+
+ function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG,
+ arrLength = array.length,
+ othLength = other.length;
+
+ if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
+ return false;
+ } // Assume cyclic values are equal.
+
+
+ var stacked = stack.get(array);
+
+ if (stacked && stack.get(other)) {
+ return stacked == other;
+ }
+
+ var index = -1,
+ result = true,
+ seen = bitmask & UNORDERED_COMPARE_FLAG ? new SetCache() : undefined;
+ stack.set(array, other);
+ stack.set(other, array); // Ignore non-index properties.
+
+ while (++index < arrLength) {
+ var arrValue = array[index],
+ othValue = other[index];
+
+ if (customizer) {
+ var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
+ }
+
+ if (compared !== undefined) {
+ if (compared) {
+ continue;
+ }
+
+ result = false;
+ break;
+ } // Recursively compare arrays (susceptible to call stack limits).
+
+
+ if (seen) {
+ if (!arraySome(other, function (othValue, othIndex) {
+ if (!seen.has(othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {
+ return seen.add(othIndex);
+ }
+ })) {
+ result = false;
+ break;
+ }
+ } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {
+ result = false;
+ break;
+ }
+ }
+
+ stack['delete'](array);
+ stack['delete'](other);
+ return result;
+ }
+ /**
+ * A specialized version of `baseIsEqualDeep` for comparing objects of
+ * the same `toStringTag`.
+ *
+ * **Note:** This function only supports comparing values with tags of
+ * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
+ *
+ * @private
+ * @param {Object} object The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {string} tag The `toStringTag` of the objects to compare.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Function} customizer The function to customize comparisons.
+ * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
+ * for more details.
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+ */
+
+
+ function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {
+ switch (tag) {
+ case dataViewTag:
+ if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
+ return false;
+ }
+
+ object = object.buffer;
+ other = other.buffer;
+
+ case arrayBufferTag:
+ if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
+ return false;
+ }
+
+ return true;
+
+ case boolTag:
+ case dateTag:
+ case numberTag:
+ // Coerce booleans to `1` or `0` and dates to milliseconds.
+ // Invalid dates are coerced to `NaN`.
+ return eq(+object, +other);
+
+ case errorTag:
+ return object.name == other.name && object.message == other.message;
+
+ case regexpTag:
+ case stringTag:
+ // Coerce regexes to strings and treat strings, primitives and objects,
+ // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
+ // for more details.
+ return object == other + '';
+
+ case mapTag:
+ var convert = mapToArray;
+
+ case setTag:
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG;
+ convert || (convert = setToArray);
+
+ if (object.size != other.size && !isPartial) {
+ return false;
+ } // Assume cyclic values are equal.
+
+
+ var stacked = stack.get(object);
+
+ if (stacked) {
+ return stacked == other;
+ }
+
+ bitmask |= UNORDERED_COMPARE_FLAG; // Recursively compare objects (susceptible to call stack limits).
+
+ stack.set(object, other);
+ var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);
+ stack['delete'](object);
+ return result;
+
+ case symbolTag:
+ if (symbolValueOf) {
+ return symbolValueOf.call(object) == symbolValueOf.call(other);
+ }
+
+ }
+
+ return false;
+ }
+ /**
+ * A specialized version of `baseIsEqualDeep` for objects with support for
+ * partial deep comparisons.
+ *
+ * @private
+ * @param {Object} object The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Function} customizer The function to customize comparisons.
+ * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
+ * for more details.
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+ */
+
+
+ function equalObjects(object, other, equalFunc, customizer, bitmask, stack) {
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG,
+ objProps = keys(object),
+ objLength = objProps.length,
+ othProps = keys(other),
+ othLength = othProps.length;
+
+ if (objLength != othLength && !isPartial) {
+ return false;
+ }
+
+ var index = objLength;
+
+ while (index--) {
+ var key = objProps[index];
+
+ if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
+ return false;
+ }
+ } // Assume cyclic values are equal.
+
+
+ var stacked = stack.get(object);
+
+ if (stacked && stack.get(other)) {
+ return stacked == other;
+ }
+
+ var result = true;
+ stack.set(object, other);
+ stack.set(other, object);
+ var skipCtor = isPartial;
+
+ while (++index < objLength) {
+ key = objProps[index];
+ var objValue = object[key],
+ othValue = other[key];
+
+ if (customizer) {
+ var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
+ } // Recursively compare objects (susceptible to call stack limits).
+
+
+ if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack) : compared)) {
+ result = false;
+ break;
+ }
+
+ skipCtor || (skipCtor = key == 'constructor');
+ }
+
+ if (result && !skipCtor) {
+ var objCtor = object.constructor,
+ othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal.
+
+ if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {
+ result = false;
+ }
+ }
+
+ stack['delete'](object);
+ stack['delete'](other);
+ return result;
+ }
+ /**
+ * Gets the data for `map`.
+ *
+ * @private
+ * @param {Object} map The map to query.
+ * @param {string} key The reference key.
+ * @returns {*} Returns the map data.
+ */
+
+
+ function getMapData(map, key) {
+ var data = map.__data__;
+ return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;
+ }
+ /**
+ * Gets the property names, values, and compare flags of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the match data of `object`.
+ */
+
+
+ function getMatchData(object) {
+ var result = keys(object),
+ length = result.length;
+
+ while (length--) {
+ var key = result[length],
+ value = object[key];
+ result[length] = [key, value, isStrictComparable(value)];
+ }
+
+ return result;
+ }
+ /**
+ * Gets the native function at `key` of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {string} key The key of the method to get.
+ * @returns {*} Returns the function if it's native, else `undefined`.
+ */
+
+
+ function getNative(object, key) {
+ var value = getValue(object, key);
+ return baseIsNative(value) ? value : undefined;
+ }
+ /**
+ * Gets the `toStringTag` of `value`.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @returns {string} Returns the `toStringTag`.
+ */
+
+
+ var getTag = baseGetTag; // Fallback for data views, maps, sets, and weak maps in IE 11,
+ // for data views in Edge < 14, and promises in Node.js.
+
+ if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {
+ getTag = function getTag(value) {
+ var result = objectToString.call(value),
+ Ctor = result == objectTag ? value.constructor : undefined,
+ ctorString = Ctor ? toSource(Ctor) : undefined;
+
+ if (ctorString) {
+ switch (ctorString) {
+ case dataViewCtorString:
+ return dataViewTag;
+
+ case mapCtorString:
+ return mapTag;
+
+ case promiseCtorString:
+ return promiseTag;
+
+ case setCtorString:
+ return setTag;
+
+ case weakMapCtorString:
+ return weakMapTag;
+ }
+ }
+
+ return result;
+ };
+ }
+ /**
+ * Checks if `path` exists on `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path to check.
+ * @param {Function} hasFunc The function to check properties.
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
+ */
+
+
+ function hasPath(object, path, hasFunc) {
+ path = isKey(path, object) ? [path] : castPath(path);
+ var result,
+ index = -1,
+ length = path.length;
+
+ while (++index < length) {
+ var key = toKey(path[index]);
+
+ if (!(result = object != null && hasFunc(object, key))) {
+ break;
+ }
+
+ object = object[key];
+ }
+
+ if (result) {
+ return result;
+ }
+
+ var length = object ? object.length : 0;
+ return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));
+ }
+ /**
+ * Checks if `value` is a valid array-like index.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
+ */
+
+
+ function isIndex(value, length) {
+ length = length == null ? MAX_SAFE_INTEGER : length;
+ return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;
+ }
+ /**
+ * Checks if `value` is a property name and not a property path.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @param {Object} [object] The object to query keys on.
+ * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
+ */
+
+
+ function isKey(value, object) {
+ if (isArray(value)) {
+ return false;
+ }
+
+ var type = typeof value;
+
+ if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) {
+ return true;
+ }
+
+ return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);
+ }
+ /**
+ * Checks if `value` is suitable for use as unique object key.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
+ */
+
+
+ function isKeyable(value) {
+ var type = typeof value;
+ return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;
+ }
+ /**
+ * Checks if `func` has its source masked.
+ *
+ * @private
+ * @param {Function} func The function to check.
+ * @returns {boolean} Returns `true` if `func` is masked, else `false`.
+ */
+
+
+ function isMasked(func) {
+ return !!maskSrcKey && maskSrcKey in func;
+ }
+ /**
+ * Checks if `value` is likely a prototype object.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
+ */
+
+
+ function isPrototype(value) {
+ var Ctor = value && value.constructor,
+ proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;
+ return value === proto;
+ }
+ /**
+ * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` if suitable for strict
+ * equality comparisons, else `false`.
+ */
+
+
+ function isStrictComparable(value) {
+ return value === value && !isObject(value);
+ }
+ /**
+ * A specialized version of `matchesProperty` for source values suitable
+ * for strict equality comparisons, i.e. `===`.
+ *
+ * @private
+ * @param {string} key The key of the property to get.
+ * @param {*} srcValue The value to match.
+ * @returns {Function} Returns the new spec function.
+ */
+
+
+ function matchesStrictComparable(key, srcValue) {
+ return function (object) {
+ if (object == null) {
+ return false;
+ }
+
+ return object[key] === srcValue && (srcValue !== undefined || key in Object(object));
+ };
+ }
+ /**
+ * Converts `string` to a property path array.
+ *
+ * @private
+ * @param {string} string The string to convert.
+ * @returns {Array} Returns the property path array.
+ */
+
+
+ var stringToPath = memoize(function (string) {
+ string = toString(string);
+ var result = [];
+
+ if (reLeadingDot.test(string)) {
+ result.push('');
+ }
+
+ string.replace(rePropName, function (match, number, quote, string) {
+ result.push(quote ? string.replace(reEscapeChar, '$1') : number || match);
+ });
+ return result;
+ });
+ /**
+ * Converts `value` to a string key if it's not a string or symbol.
+ *
+ * @private
+ * @param {*} value The value to inspect.
+ * @returns {string|symbol} Returns the key.
+ */
+
+ function toKey(value) {
+ if (typeof value == 'string' || isSymbol(value)) {
+ return value;
+ }
+
+ var result = value + '';
+ return result == '0' && 1 / value == -INFINITY ? '-0' : result;
+ }
+ /**
+ * Converts `func` to its source code.
+ *
+ * @private
+ * @param {Function} func The function to process.
+ * @returns {string} Returns the source code.
+ */
+
+
+ function toSource(func) {
+ if (func != null) {
+ try {
+ return funcToString.call(func);
+ } catch (e) {}
+
+ try {
+ return func + '';
+ } catch (e) {}
+ }
+
+ return '';
+ }
+ /**
+ * This method is like `_.uniq` except that it accepts `iteratee` which is
+ * invoked for each element in `array` to generate the criterion by which
+ * uniqueness is computed. The iteratee is invoked with one argument: (value).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Array
+ * @param {Array} array The array to inspect.
+ * @param {Function} [iteratee=_.identity]
+ * The iteratee invoked per element.
+ * @returns {Array} Returns the new duplicate free array.
+ * @example
+ *
+ * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
+ * // => [2.1, 1.2]
+ *
+ * // The `_.property` iteratee shorthand.
+ * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
+ * // => [{ 'x': 1 }, { 'x': 2 }]
+ */
+
+
+ function uniqBy(array, iteratee) {
+ return array && array.length ? baseUniq(array, baseIteratee(iteratee)) : [];
+ }
+ /**
+ * Creates a function that memoizes the result of `func`. If `resolver` is
+ * provided, it determines the cache key for storing the result based on the
+ * arguments provided to the memoized function. By default, the first argument
+ * provided to the memoized function is used as the map cache key. The `func`
+ * is invoked with the `this` binding of the memoized function.
+ *
+ * **Note:** The cache is exposed as the `cache` property on the memoized
+ * function. Its creation may be customized by replacing the `_.memoize.Cache`
+ * constructor with one whose instances implement the
+ * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
+ * method interface of `delete`, `get`, `has`, and `set`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Function
+ * @param {Function} func The function to have its output memoized.
+ * @param {Function} [resolver] The function to resolve the cache key.
+ * @returns {Function} Returns the new memoized function.
+ * @example
+ *
+ * var object = { 'a': 1, 'b': 2 };
+ * var other = { 'c': 3, 'd': 4 };
+ *
+ * var values = _.memoize(_.values);
+ * values(object);
+ * // => [1, 2]
+ *
+ * values(other);
+ * // => [3, 4]
+ *
+ * object.a = 2;
+ * values(object);
+ * // => [1, 2]
+ *
+ * // Modify the result cache.
+ * values.cache.set(object, ['a', 'b']);
+ * values(object);
+ * // => ['a', 'b']
+ *
+ * // Replace `_.memoize.Cache`.
+ * _.memoize.Cache = WeakMap;
+ */
+
+
+ function memoize(func, resolver) {
+ if (typeof func != 'function' || resolver && typeof resolver != 'function') {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+
+ var memoized = function memoized() {
+ var args = arguments,
+ key = resolver ? resolver.apply(this, args) : args[0],
+ cache = memoized.cache;
+
+ if (cache.has(key)) {
+ return cache.get(key);
+ }
+
+ var result = func.apply(this, args);
+ memoized.cache = cache.set(key, result);
+ return result;
+ };
+
+ memoized.cache = new (memoize.Cache || MapCache)();
+ return memoized;
+ } // Assign cache to `_.memoize`.
+
+
+ memoize.Cache = MapCache;
+ /**
+ * Performs a
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * comparison between two values to determine if they are equivalent.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+ * @example
+ *
+ * var object = { 'a': 1 };
+ * var other = { 'a': 1 };
+ *
+ * _.eq(object, object);
+ * // => true
+ *
+ * _.eq(object, other);
+ * // => false
+ *
+ * _.eq('a', 'a');
+ * // => true
+ *
+ * _.eq('a', Object('a'));
+ * // => false
+ *
+ * _.eq(NaN, NaN);
+ * // => true
+ */
+
+ function eq(value, other) {
+ return value === other || value !== value && other !== other;
+ }
+ /**
+ * Checks if `value` is likely an `arguments` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
+ * else `false`.
+ * @example
+ *
+ * _.isArguments(function() { return arguments; }());
+ * // => true
+ *
+ * _.isArguments([1, 2, 3]);
+ * // => false
+ */
+
+
+ function isArguments(value) {
+ // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
+ return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
+ }
+ /**
+ * Checks if `value` is classified as an `Array` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
+ * @example
+ *
+ * _.isArray([1, 2, 3]);
+ * // => true
+ *
+ * _.isArray(document.body.children);
+ * // => false
+ *
+ * _.isArray('abc');
+ * // => false
+ *
+ * _.isArray(_.noop);
+ * // => false
+ */
+
+
+ var isArray = Array.isArray;
+ /**
+ * Checks if `value` is array-like. A value is considered array-like if it's
+ * not a function and has a `value.length` that's an integer greater than or
+ * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
+ * @example
+ *
+ * _.isArrayLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isArrayLike(document.body.children);
+ * // => true
+ *
+ * _.isArrayLike('abc');
+ * // => true
+ *
+ * _.isArrayLike(_.noop);
+ * // => false
+ */
+
+ function isArrayLike(value) {
+ return value != null && isLength(value.length) && !isFunction(value);
+ }
+ /**
+ * This method is like `_.isArrayLike` except that it also checks if `value`
+ * is an object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an array-like object,
+ * else `false`.
+ * @example
+ *
+ * _.isArrayLikeObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isArrayLikeObject(document.body.children);
+ * // => true
+ *
+ * _.isArrayLikeObject('abc');
+ * // => false
+ *
+ * _.isArrayLikeObject(_.noop);
+ * // => false
+ */
+
+
+ function isArrayLikeObject(value) {
+ return isObjectLike(value) && isArrayLike(value);
+ }
+ /**
+ * Checks if `value` is classified as a `Function` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a function, else `false`.
+ * @example
+ *
+ * _.isFunction(_);
+ * // => true
+ *
+ * _.isFunction(/abc/);
+ * // => false
+ */
+
+
+ function isFunction(value) {
+ // The use of `Object#toString` avoids issues with the `typeof` operator
+ // in Safari 8-9 which returns 'object' for typed array and other constructors.
+ var tag = isObject(value) ? objectToString.call(value) : '';
+ return tag == funcTag || tag == genTag;
+ }
+ /**
+ * Checks if `value` is a valid array-like length.
+ *
+ * **Note:** This method is loosely based on
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
+ * @example
+ *
+ * _.isLength(3);
+ * // => true
+ *
+ * _.isLength(Number.MIN_VALUE);
+ * // => false
+ *
+ * _.isLength(Infinity);
+ * // => false
+ *
+ * _.isLength('3');
+ * // => false
+ */
+
+
+ function isLength(value) {
+ return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+ }
+ /**
+ * Checks if `value` is the
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(_.noop);
+ * // => true
+ *
+ * _.isObject(null);
+ * // => false
+ */
+
+
+ function isObject(value) {
+ var type = typeof value;
+ return !!value && (type == 'object' || type == 'function');
+ }
+ /**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+
+
+ function isObjectLike(value) {
+ return !!value && typeof value == 'object';
+ }
+ /**
+ * Checks if `value` is classified as a `Symbol` primitive or object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
+ * @example
+ *
+ * _.isSymbol(Symbol.iterator);
+ * // => true
+ *
+ * _.isSymbol('abc');
+ * // => false
+ */
+
+
+ function isSymbol(value) {
+ return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;
+ }
+ /**
+ * Checks if `value` is classified as a typed array.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
+ * @example
+ *
+ * _.isTypedArray(new Uint8Array);
+ * // => true
+ *
+ * _.isTypedArray([]);
+ * // => false
+ */
+
+
+ var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
+ /**
+ * Converts `value` to a string. An empty string is returned for `null`
+ * and `undefined` values. The sign of `-0` is preserved.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to process.
+ * @returns {string} Returns the string.
+ * @example
+ *
+ * _.toString(null);
+ * // => ''
+ *
+ * _.toString(-0);
+ * // => '-0'
+ *
+ * _.toString([1, 2, 3]);
+ * // => '1,2,3'
+ */
+
+ function toString(value) {
+ return value == null ? '' : baseToString(value);
+ }
+ /**
+ * Gets the value at `path` of `object`. If the resolved value is
+ * `undefined`, the `defaultValue` is returned in its place.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.7.0
+ * @category Object
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path of the property to get.
+ * @param {*} [defaultValue] The value returned for `undefined` resolved values.
+ * @returns {*} Returns the resolved value.
+ * @example
+ *
+ * var object = { 'a': [{ 'b': { 'c': 3 } }] };
+ *
+ * _.get(object, 'a[0].b.c');
+ * // => 3
+ *
+ * _.get(object, ['a', '0', 'b', 'c']);
+ * // => 3
+ *
+ * _.get(object, 'a.b.c', 'default');
+ * // => 'default'
+ */
+
+
+ function get(object, path, defaultValue) {
+ var result = object == null ? undefined : baseGet(object, path);
+ return result === undefined ? defaultValue : result;
+ }
+ /**
+ * Checks if `path` is a direct or inherited property of `object`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Object
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path to check.
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
+ * @example
+ *
+ * var object = _.create({ 'a': _.create({ 'b': 2 }) });
+ *
+ * _.hasIn(object, 'a');
+ * // => true
+ *
+ * _.hasIn(object, 'a.b');
+ * // => true
+ *
+ * _.hasIn(object, ['a', 'b']);
+ * // => true
+ *
+ * _.hasIn(object, 'b');
+ * // => false
+ */
+
+
+ function hasIn(object, path) {
+ return object != null && hasPath(object, path, baseHasIn);
+ }
+ /**
+ * Creates an array of the own enumerable property names of `object`.
+ *
+ * **Note:** Non-object values are coerced to objects. See the
+ * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
+ * for more details.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ * @example
+ *
+ * function Foo() {
+ * this.a = 1;
+ * this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.keys(new Foo);
+ * // => ['a', 'b'] (iteration order is not guaranteed)
+ *
+ * _.keys('hi');
+ * // => ['0', '1']
+ */
+
+
+ function keys(object) {
+ return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
+ }
+ /**
+ * This method returns the first argument it receives.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Util
+ * @param {*} value Any value.
+ * @returns {*} Returns `value`.
+ * @example
+ *
+ * var object = { 'a': 1 };
+ *
+ * console.log(_.identity(object) === object);
+ * // => true
+ */
+
+
+ function identity(value) {
+ return value;
+ }
+ /**
+ * This method returns `undefined`.
+ *
+ * @static
+ * @memberOf _
+ * @since 2.3.0
+ * @category Util
+ * @example
+ *
+ * _.times(2, _.noop);
+ * // => [undefined, undefined]
+ */
+
+
+ function noop() {} // No operation performed.
+
+ /**
+ * Creates a function that returns the value at `path` of a given object.
+ *
+ * @static
+ * @memberOf _
+ * @since 2.4.0
+ * @category Util
+ * @param {Array|string} path The path of the property to get.
+ * @returns {Function} Returns the new accessor function.
+ * @example
+ *
+ * var objects = [
+ * { 'a': { 'b': 2 } },
+ * { 'a': { 'b': 1 } }
+ * ];
+ *
+ * _.map(objects, _.property('a.b'));
+ * // => [2, 1]
+ *
+ * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
+ * // => [1, 2]
+ */
+
+
+ function property(path) {
+ return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
+ }
+
+ module.exports = uniqBy;
+});
+
+var PENDING = 'pending';
+var SETTLED = 'settled';
+var FULFILLED = 'fulfilled';
+var REJECTED = 'rejected';
+
+var NOOP = function NOOP() {};
+
+var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';
+var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;
+var asyncQueue = [];
+var asyncTimer;
+
+function asyncFlush() {
+ // run promise callbacks
+ for (var i = 0; i < asyncQueue.length; i++) {
+ asyncQueue[i][0](asyncQueue[i][1]);
+ } // reset async asyncQueue
+
+
+ asyncQueue = [];
+ asyncTimer = false;
+}
+
+function asyncCall(callback, arg) {
+ asyncQueue.push([callback, arg]);
+
+ if (!asyncTimer) {
+ asyncTimer = true;
+ asyncSetTimer(asyncFlush, 0);
+ }
+}
+
+function invokeResolver(resolver, promise) {
+ function resolvePromise(value) {
+ resolve$1(promise, value);
+ }
+
+ function rejectPromise(reason) {
+ reject(promise, reason);
+ }
+
+ try {
+ resolver(resolvePromise, rejectPromise);
+ } catch (e) {
+ rejectPromise(e);
+ }
+}
+
+function invokeCallback(subscriber) {
+ var owner = subscriber.owner;
+ var settled = owner._state;
+ var value = owner._data;
+ var callback = subscriber[settled];
+ var promise = subscriber.then;
+
+ if (typeof callback === 'function') {
+ settled = FULFILLED;
+
+ try {
+ value = callback(value);
+ } catch (e) {
+ reject(promise, e);
+ }
+ }
+
+ if (!handleThenable(promise, value)) {
+ if (settled === FULFILLED) {
+ resolve$1(promise, value);
+ }
+
+ if (settled === REJECTED) {
+ reject(promise, value);
+ }
+ }
+}
+
+function handleThenable(promise, value) {
+ var resolved;
+
+ try {
+ if (promise === value) {
+ throw new TypeError('A promises callback cannot return that same promise.');
+ }
+
+ if (value && (typeof value === 'function' || typeof value === 'object')) {
+ // then should be retrieved only once
+ var then = value.then;
+
+ if (typeof then === 'function') {
+ then.call(value, function (val) {
+ if (!resolved) {
+ resolved = true;
+
+ if (value === val) {
+ fulfill(promise, val);
+ } else {
+ resolve$1(promise, val);
+ }
+ }
+ }, function (reason) {
+ if (!resolved) {
+ resolved = true;
+ reject(promise, reason);
+ }
+ });
+ return true;
+ }
+ }
+ } catch (e) {
+ if (!resolved) {
+ reject(promise, e);
+ }
+
+ return true;
+ }
+
+ return false;
+}
+
+function resolve$1(promise, value) {
+ if (promise === value || !handleThenable(promise, value)) {
+ fulfill(promise, value);
+ }
+}
+
+function fulfill(promise, value) {
+ if (promise._state === PENDING) {
+ promise._state = SETTLED;
+ promise._data = value;
+ asyncCall(publishFulfillment, promise);
+ }
+}
+
+function reject(promise, reason) {
+ if (promise._state === PENDING) {
+ promise._state = SETTLED;
+ promise._data = reason;
+ asyncCall(publishRejection, promise);
+ }
+}
+
+function publish(promise) {
+ promise._then = promise._then.forEach(invokeCallback);
+}
+
+function publishFulfillment(promise) {
+ promise._state = FULFILLED;
+ publish(promise);
+}
+
+function publishRejection(promise) {
+ promise._state = REJECTED;
+ publish(promise);
+
+ if (!promise._handled && isNode) {
+ global.process.emit('unhandledRejection', promise._data, promise);
+ }
+}
+
+function notifyRejectionHandled(promise) {
+ global.process.emit('rejectionHandled', promise);
+}
+/**
+ * @class
+ */
+
+
+function Promise$1(resolver) {
+ if (typeof resolver !== 'function') {
+ throw new TypeError('Promise resolver ' + resolver + ' is not a function');
+ }
+
+ if (this instanceof Promise$1 === false) {
+ throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.');
+ }
+
+ this._then = [];
+ invokeResolver(resolver, this);
+}
+
+Promise$1.prototype = {
+ constructor: Promise$1,
+ _state: PENDING,
+ _then: null,
+ _data: undefined,
+ _handled: false,
+ then: function then(onFulfillment, onRejection) {
+ var subscriber = {
+ owner: this,
+ then: new this.constructor(NOOP),
+ fulfilled: onFulfillment,
+ rejected: onRejection
+ };
+
+ if ((onRejection || onFulfillment) && !this._handled) {
+ this._handled = true;
+
+ if (this._state === REJECTED && isNode) {
+ asyncCall(notifyRejectionHandled, this);
+ }
+ }
+
+ if (this._state === FULFILLED || this._state === REJECTED) {
+ // already resolved, call callback async
+ asyncCall(invokeCallback, subscriber);
+ } else {
+ // subscribe
+ this._then.push(subscriber);
+ }
+
+ return subscriber.then;
+ },
+ catch: function _catch(onRejection) {
+ return this.then(null, onRejection);
+ }
+};
+
+Promise$1.all = function (promises) {
+ if (!Array.isArray(promises)) {
+ throw new TypeError('You must pass an array to Promise.all().');
+ }
+
+ return new Promise$1(function (resolve, reject) {
+ var results = [];
+ var remaining = 0;
+
+ function resolver(index) {
+ remaining++;
+ return function (value) {
+ results[index] = value;
+
+ if (! --remaining) {
+ resolve(results);
+ }
+ };
+ }
+
+ for (var i = 0, promise; i < promises.length; i++) {
+ promise = promises[i];
+
+ if (promise && typeof promise.then === 'function') {
+ promise.then(resolver(i), reject);
+ } else {
+ results[i] = promise;
+ }
+ }
+
+ if (!remaining) {
+ resolve(results);
+ }
+ });
+};
+
+Promise$1.race = function (promises) {
+ if (!Array.isArray(promises)) {
+ throw new TypeError('You must pass an array to Promise.race().');
+ }
+
+ return new Promise$1(function (resolve, reject) {
+ for (var i = 0, promise; i < promises.length; i++) {
+ promise = promises[i];
+
+ if (promise && typeof promise.then === 'function') {
+ promise.then(resolve, reject);
+ } else {
+ resolve(promise);
+ }
+ }
+ });
+};
+
+Promise$1.resolve = function (value) {
+ if (value && typeof value === 'object' && value.constructor === Promise$1) {
+ return value;
+ }
+
+ return new Promise$1(function (resolve) {
+ resolve(value);
+ });
+};
+
+Promise$1.reject = function (reason) {
+ return new Promise$1(function (resolve, reject) {
+ reject(reason);
+ });
+};
+
+var pinkie = Promise$1;
+
+var pinkiePromise = typeof Promise === 'function' ? Promise : pinkie;
+
+var arrayUniq = createCommonjsModule(function (module) {
+ // 1 - no Set type is defined
+
+ function uniqNoSet(arr) {
+ var ret = [];
+
+ for (var i = 0; i < arr.length; i++) {
+ if (ret.indexOf(arr[i]) === -1) {
+ ret.push(arr[i]);
+ }
+ }
+
+ return ret;
+ } // 2 - a simple Set type is defined
+
+
+ function uniqSet(arr) {
+ var seen = new Set();
+ return arr.filter(function (el) {
+ if (!seen.has(el)) {
+ seen.add(el);
+ return true;
+ }
+
+ return false;
+ });
+ } // 3 - a standard Set type is defined and it has a forEach method
+
+
+ function uniqSetWithForEach(arr) {
+ var ret = [];
+ new Set(arr).forEach(function (el) {
+ ret.push(el);
+ });
+ return ret;
+ } // V8 currently has a broken implementation
+ // https://github.com/joyent/node/issues/8449
+
+
+ function doesForEachActuallyWork() {
+ var ret = false;
+ new Set([true]).forEach(function (el) {
+ ret = el;
+ });
+ return ret === true;
+ }
+
+ if ('Set' in global) {
+ if (typeof Set.prototype.forEach === 'function' && doesForEachActuallyWork()) {
+ module.exports = uniqSetWithForEach;
+ } else {
+ module.exports = uniqSet;
+ }
+ } else {
+ module.exports = uniqNoSet;
+ }
+});
+
+var arrayUnion = function arrayUnion() {
+ return arrayUniq([].concat.apply([], arguments));
+};
+
+/*
+object-assign
+(c) Sindre Sorhus
+@license MIT
+*/
+/* eslint-disable no-unused-vars */
+
+var getOwnPropertySymbols = Object.getOwnPropertySymbols;
+var hasOwnProperty$2 = Object.prototype.hasOwnProperty;
+var propIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+function toObject(val) {
+ if (val === null || val === undefined) {
+ throw new TypeError('Object.assign cannot be called with null or undefined');
+ }
+
+ return Object(val);
+}
+
+function shouldUseNative() {
+ try {
+ if (!Object.assign) {
+ return false;
+ } // Detect buggy property enumeration order in older V8 versions.
+ // https://bugs.chromium.org/p/v8/issues/detail?id=4118
+
+
+ var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
+
+ test1[5] = 'de';
+
+ if (Object.getOwnPropertyNames(test1)[0] === '5') {
+ return false;
+ } // https://bugs.chromium.org/p/v8/issues/detail?id=3056
+
+
+ var test2 = {};
+
+ for (var i = 0; i < 10; i++) {
+ test2['_' + String.fromCharCode(i)] = i;
+ }
+
+ var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
+ return test2[n];
+ });
+
+ if (order2.join('') !== '0123456789') {
+ return false;
+ } // https://bugs.chromium.org/p/v8/issues/detail?id=3056
+
+
+ var test3 = {};
+ 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
+ test3[letter] = letter;
+ });
+
+ if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {
+ return false;
+ }
+
+ return true;
+ } catch (err) {
+ // We don't expect any of the above to throw, but better to be safe.
+ return false;
+ }
+}
+
+var objectAssign = shouldUseNative() ? Object.assign : function (target, source) {
+ var from;
+ var to = toObject(target);
+ var symbols;
+
+ for (var s = 1; s < arguments.length; s++) {
+ from = Object(arguments[s]);
+
+ for (var key in from) {
+ if (hasOwnProperty$2.call(from, key)) {
+ to[key] = from[key];
+ }
+ }
+
+ if (getOwnPropertySymbols) {
+ symbols = getOwnPropertySymbols(from);
+
+ for (var i = 0; i < symbols.length; i++) {
+ if (propIsEnumerable.call(from, symbols[i])) {
+ to[symbols[i]] = from[symbols[i]];
+ }
+ }
+ }
+ }
+
+ return to;
+};
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+var isWindows = process.platform === 'win32'; // JavaScript implementation of realpath, ported from node pre-v6
+
+var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);
+
+function rethrow() {
+ // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and
+ // is fairly slow to generate.
+ var callback;
+
+ if (DEBUG) {
+ var backtrace = new Error();
+ callback = debugCallback;
+ } else callback = missingCallback;
+
+ return callback;
+
+ function debugCallback(err) {
+ if (err) {
+ backtrace.message = err.message;
+ err = backtrace;
+ missingCallback(err);
+ }
+ }
+
+ function missingCallback(err) {
+ if (err) {
+ if (process.throwDeprecation) throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs
+ else if (!process.noDeprecation) {
+ var msg = 'fs: missing callback ' + (err.stack || err.message);
+ if (process.traceDeprecation) console.trace(msg);else console.error(msg);
+ }
+ }
+ }
+}
+
+function maybeCallback(cb) {
+ return typeof cb === 'function' ? cb : rethrow();
+}
+
+var normalize$3 = path$2.normalize; // Regexp that finds the next partion of a (partial) path
+// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']
+
+if (isWindows) {
+ var nextPartRe = /(.*?)(?:[\/\\]+|$)/g;
+} else {
+ var nextPartRe = /(.*?)(?:[\/]+|$)/g;
+} // Regex to find the device root, including trailing slash. E.g. 'c:\\'.
+
+
+if (isWindows) {
+ var splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/;
+} else {
+ var splitRootRe = /^[\/]*/;
+}
+
+var realpathSync = function realpathSync(p, cache) {
+ // make p is absolute
+ p = path$2.resolve(p);
+
+ if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
+ return cache[p];
+ }
+
+ var original = p,
+ seenLinks = {},
+ knownHard = {}; // current character position in p
+
+ var pos; // the partial path so far, including a trailing slash if any
+
+ var current; // the partial path without a trailing slash (except when pointing at a root)
+
+ var base; // the partial path scanned in the previous round, with slash
+
+ var previous;
+ start();
+
+ function start() {
+ // Skip over roots
+ var m = splitRootRe.exec(p);
+ pos = m[0].length;
+ current = m[0];
+ base = m[0];
+ previous = ''; // On windows, check that the root exists. On unix there is no need.
+
+ if (isWindows && !knownHard[base]) {
+ fs$1.lstatSync(base);
+ knownHard[base] = true;
+ }
+ } // walk down the path, swapping out linked pathparts for their real
+ // values
+ // NB: p.length changes.
+
+
+ while (pos < p.length) {
+ // find the next part
+ nextPartRe.lastIndex = pos;
+ var result = nextPartRe.exec(p);
+ previous = current;
+ current += result[0];
+ base = previous + result[1];
+ pos = nextPartRe.lastIndex; // continue if not a symlink
+
+ if (knownHard[base] || cache && cache[base] === base) {
+ continue;
+ }
+
+ var resolvedLink;
+
+ if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
+ // some known symbolic link. no need to stat again.
+ resolvedLink = cache[base];
+ } else {
+ var stat = fs$1.lstatSync(base);
+
+ if (!stat.isSymbolicLink()) {
+ knownHard[base] = true;
+ if (cache) cache[base] = base;
+ continue;
+ } // read the link if it wasn't read before
+ // dev/ino always return 0 on windows, so skip the check.
+
+
+ var linkTarget = null;
+
+ if (!isWindows) {
+ var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);
+
+ if (seenLinks.hasOwnProperty(id)) {
+ linkTarget = seenLinks[id];
+ }
+ }
+
+ if (linkTarget === null) {
+ fs$1.statSync(base);
+ linkTarget = fs$1.readlinkSync(base);
+ }
+
+ resolvedLink = path$2.resolve(previous, linkTarget); // track this, if given a cache.
+
+ if (cache) cache[base] = resolvedLink;
+ if (!isWindows) seenLinks[id] = linkTarget;
+ } // resolve the link, then start over
+
+
+ p = path$2.resolve(resolvedLink, p.slice(pos));
+ start();
+ }
+
+ if (cache) cache[original] = p;
+ return p;
+};
+
+var realpath = function realpath(p, cache, cb) {
+ if (typeof cb !== 'function') {
+ cb = maybeCallback(cache);
+ cache = null;
+ } // make p is absolute
+
+
+ p = path$2.resolve(p);
+
+ if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
+ return process.nextTick(cb.bind(null, null, cache[p]));
+ }
+
+ var original = p,
+ seenLinks = {},
+ knownHard = {}; // current character position in p
+
+ var pos; // the partial path so far, including a trailing slash if any
+
+ var current; // the partial path without a trailing slash (except when pointing at a root)
+
+ var base; // the partial path scanned in the previous round, with slash
+
+ var previous;
+ start();
+
+ function start() {
+ // Skip over roots
+ var m = splitRootRe.exec(p);
+ pos = m[0].length;
+ current = m[0];
+ base = m[0];
+ previous = ''; // On windows, check that the root exists. On unix there is no need.
+
+ if (isWindows && !knownHard[base]) {
+ fs$1.lstat(base, function (err) {
+ if (err) return cb(err);
+ knownHard[base] = true;
+ LOOP();
+ });
+ } else {
+ process.nextTick(LOOP);
+ }
+ } // walk down the path, swapping out linked pathparts for their real
+ // values
+
+
+ function LOOP() {
+ // stop if scanned past end of path
+ if (pos >= p.length) {
+ if (cache) cache[original] = p;
+ return cb(null, p);
+ } // find the next part
+
+
+ nextPartRe.lastIndex = pos;
+ var result = nextPartRe.exec(p);
+ previous = current;
+ current += result[0];
+ base = previous + result[1];
+ pos = nextPartRe.lastIndex; // continue if not a symlink
+
+ if (knownHard[base] || cache && cache[base] === base) {
+ return process.nextTick(LOOP);
+ }
+
+ if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
+ // known symbolic link. no need to stat again.
+ return gotResolvedLink(cache[base]);
+ }
+
+ return fs$1.lstat(base, gotStat);
+ }
+
+ function gotStat(err, stat) {
+ if (err) return cb(err); // if not a symlink, skip to the next path part
+
+ if (!stat.isSymbolicLink()) {
+ knownHard[base] = true;
+ if (cache) cache[base] = base;
+ return process.nextTick(LOOP);
+ } // stat & read the link if not read before
+ // call gotTarget as soon as the link target is known
+ // dev/ino always return 0 on windows, so skip the check.
+
+
+ if (!isWindows) {
+ var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);
+
+ if (seenLinks.hasOwnProperty(id)) {
+ return gotTarget(null, seenLinks[id], base);
+ }
+ }
+
+ fs$1.stat(base, function (err) {
+ if (err) return cb(err);
+ fs$1.readlink(base, function (err, target) {
+ if (!isWindows) seenLinks[id] = target;
+ gotTarget(err, target);
+ });
+ });
+ }
+
+ function gotTarget(err, target, base) {
+ if (err) return cb(err);
+ var resolvedLink = path$2.resolve(previous, target);
+ if (cache) cache[base] = resolvedLink;
+ gotResolvedLink(resolvedLink);
+ }
+
+ function gotResolvedLink(resolvedLink) {
+ // resolve the link, then start over
+ p = path$2.resolve(resolvedLink, p.slice(pos));
+ start();
+ }
+};
+
+var old = {
+ realpathSync: realpathSync,
+ realpath: realpath
+};
+
+var fs_realpath = realpath$1;
+realpath$1.realpath = realpath$1;
+realpath$1.sync = realpathSync$1;
+realpath$1.realpathSync = realpathSync$1;
+realpath$1.monkeypatch = monkeypatch;
+realpath$1.unmonkeypatch = unmonkeypatch;
+var origRealpath = fs$1.realpath;
+var origRealpathSync = fs$1.realpathSync;
+var version$2 = process.version;
+var ok = /^v[0-5]\./.test(version$2);
+
+function newError(er) {
+ return er && er.syscall === 'realpath' && (er.code === 'ELOOP' || er.code === 'ENOMEM' || er.code === 'ENAMETOOLONG');
+}
+
+function realpath$1(p, cache, cb) {
+ if (ok) {
+ return origRealpath(p, cache, cb);
+ }
+
+ if (typeof cache === 'function') {
+ cb = cache;
+ cache = null;
+ }
+
+ origRealpath(p, cache, function (er, result) {
+ if (newError(er)) {
+ old.realpath(p, cache, cb);
+ } else {
+ cb(er, result);
+ }
+ });
+}
+
+function realpathSync$1(p, cache) {
+ if (ok) {
+ return origRealpathSync(p, cache);
+ }
+
+ try {
+ return origRealpathSync(p, cache);
+ } catch (er) {
+ if (newError(er)) {
+ return old.realpathSync(p, cache);
+ } else {
+ throw er;
+ }
+ }
+}
+
+function monkeypatch() {
+ fs$1.realpath = realpath$1;
+ fs$1.realpathSync = realpathSync$1;
+}
+
+function unmonkeypatch() {
+ fs$1.realpath = origRealpath;
+ fs$1.realpathSync = origRealpathSync;
+}
+
+var inherits_browser = createCommonjsModule(function (module) {
+ if (typeof Object.create === 'function') {
+ // implementation from standard node.js 'util' module
+ module.exports = function inherits(ctor, superCtor) {
+ if (superCtor) {
+ ctor.super_ = superCtor;
+ ctor.prototype = Object.create(superCtor.prototype, {
+ constructor: {
+ value: ctor,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ }
+ };
+ } else {
+ // old school shim for old browsers
+ module.exports = function inherits(ctor, superCtor) {
+ if (superCtor) {
+ ctor.super_ = superCtor;
+
+ var TempCtor = function TempCtor() {};
+
+ TempCtor.prototype = superCtor.prototype;
+ ctor.prototype = new TempCtor();
+ ctor.prototype.constructor = ctor;
+ }
+ };
+ }
+});
+
+var inherits = createCommonjsModule(function (module) {
+ try {
+ var util = util$3;
+ /* istanbul ignore next */
+
+ if (typeof util.inherits !== 'function') throw '';
+ module.exports = util.inherits;
+ } catch (e) {
+ /* istanbul ignore next */
+ module.exports = inherits_browser;
+ }
+});
+
+function posix(path) {
+ return path.charAt(0) === '/';
+}
+
+function win32(path) {
+ // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56
+ var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/;
+ var result = splitDeviceRe.exec(path);
+ var device = result[1] || '';
+ var isUnc = Boolean(device && device.charAt(1) !== ':'); // UNC paths are always absolute
+
+ return Boolean(result[2] || isUnc);
+}
+
+var pathIsAbsolute = process.platform === 'win32' ? win32 : posix;
+var posix_1 = posix;
+var win32_1 = win32;
+pathIsAbsolute.posix = posix_1;
+pathIsAbsolute.win32 = win32_1;
+
+var alphasort_1 = alphasort;
+var alphasorti_1 = alphasorti;
+var setopts_1 = setopts;
+var ownProp_1 = ownProp;
+var makeAbs_1 = makeAbs;
+var finish_1 = finish;
+var mark_1 = mark;
+var isIgnored_1 = isIgnored;
+var childrenIgnored_1 = childrenIgnored;
+
+function ownProp(obj, field) {
+ return Object.prototype.hasOwnProperty.call(obj, field);
+}
+
+var Minimatch$1 = minimatch_1.Minimatch;
+
+function alphasorti(a, b) {
+ return a.toLowerCase().localeCompare(b.toLowerCase());
+}
+
+function alphasort(a, b) {
+ return a.localeCompare(b);
+}
+
+function setupIgnores(self, options) {
+ self.ignore = options.ignore || [];
+ if (!Array.isArray(self.ignore)) self.ignore = [self.ignore];
+
+ if (self.ignore.length) {
+ self.ignore = self.ignore.map(ignoreMap);
+ }
+} // ignore patterns are always in dot:true mode.
+
+
+function ignoreMap(pattern) {
+ var gmatcher = null;
+
+ if (pattern.slice(-3) === '/**') {
+ var gpattern = pattern.replace(/(\/\*\*)+$/, '');
+ gmatcher = new Minimatch$1(gpattern, {
+ dot: true
+ });
+ }
+
+ return {
+ matcher: new Minimatch$1(pattern, {
+ dot: true
+ }),
+ gmatcher: gmatcher
+ };
+}
+
+function setopts(self, pattern, options) {
+ if (!options) options = {}; // base-matching: just use globstar for that.
+
+ if (options.matchBase && -1 === pattern.indexOf("/")) {
+ if (options.noglobstar) {
+ throw new Error("base matching requires globstar");
+ }
+
+ pattern = "**/" + pattern;
+ }
+
+ self.silent = !!options.silent;
+ self.pattern = pattern;
+ self.strict = options.strict !== false;
+ self.realpath = !!options.realpath;
+ self.realpathCache = options.realpathCache || Object.create(null);
+ self.follow = !!options.follow;
+ self.dot = !!options.dot;
+ self.mark = !!options.mark;
+ self.nodir = !!options.nodir;
+ if (self.nodir) self.mark = true;
+ self.sync = !!options.sync;
+ self.nounique = !!options.nounique;
+ self.nonull = !!options.nonull;
+ self.nosort = !!options.nosort;
+ self.nocase = !!options.nocase;
+ self.stat = !!options.stat;
+ self.noprocess = !!options.noprocess;
+ self.absolute = !!options.absolute;
+ self.maxLength = options.maxLength || Infinity;
+ self.cache = options.cache || Object.create(null);
+ self.statCache = options.statCache || Object.create(null);
+ self.symlinks = options.symlinks || Object.create(null);
+ setupIgnores(self, options);
+ self.changedCwd = false;
+ var cwd = process.cwd();
+ if (!ownProp(options, "cwd")) self.cwd = cwd;else {
+ self.cwd = path$2.resolve(options.cwd);
+ self.changedCwd = self.cwd !== cwd;
+ }
+ self.root = options.root || path$2.resolve(self.cwd, "/");
+ self.root = path$2.resolve(self.root);
+ if (process.platform === "win32") self.root = self.root.replace(/\\/g, "/"); // TODO: is an absolute `cwd` supposed to be resolved against `root`?
+ // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')
+
+ self.cwdAbs = pathIsAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd);
+ if (process.platform === "win32") self.cwdAbs = self.cwdAbs.replace(/\\/g, "/");
+ self.nomount = !!options.nomount; // disable comments and negation in Minimatch.
+ // Note that they are not supported in Glob itself anyway.
+
+ options.nonegate = true;
+ options.nocomment = true;
+ self.minimatch = new Minimatch$1(pattern, options);
+ self.options = self.minimatch.options;
+}
+
+function finish(self) {
+ var nou = self.nounique;
+ var all = nou ? [] : Object.create(null);
+
+ for (var i = 0, l = self.matches.length; i < l; i++) {
+ var matches = self.matches[i];
+
+ if (!matches || Object.keys(matches).length === 0) {
+ if (self.nonull) {
+ // do like the shell, and spit out the literal glob
+ var literal = self.minimatch.globSet[i];
+ if (nou) all.push(literal);else all[literal] = true;
+ }
+ } else {
+ // had matches
+ var m = Object.keys(matches);
+ if (nou) all.push.apply(all, m);else m.forEach(function (m) {
+ all[m] = true;
+ });
+ }
+ }
+
+ if (!nou) all = Object.keys(all);
+ if (!self.nosort) all = all.sort(self.nocase ? alphasorti : alphasort); // at *some* point we statted all of these
+
+ if (self.mark) {
+ for (var i = 0; i < all.length; i++) {
+ all[i] = self._mark(all[i]);
+ }
+
+ if (self.nodir) {
+ all = all.filter(function (e) {
+ var notDir = !/\/$/.test(e);
+ var c = self.cache[e] || self.cache[makeAbs(self, e)];
+ if (notDir && c) notDir = c !== 'DIR' && !Array.isArray(c);
+ return notDir;
+ });
+ }
+ }
+
+ if (self.ignore.length) all = all.filter(function (m) {
+ return !isIgnored(self, m);
+ });
+ self.found = all;
+}
+
+function mark(self, p) {
+ var abs = makeAbs(self, p);
+ var c = self.cache[abs];
+ var m = p;
+
+ if (c) {
+ var isDir = c === 'DIR' || Array.isArray(c);
+ var slash = p.slice(-1) === '/';
+ if (isDir && !slash) m += '/';else if (!isDir && slash) m = m.slice(0, -1);
+
+ if (m !== p) {
+ var mabs = makeAbs(self, m);
+ self.statCache[mabs] = self.statCache[abs];
+ self.cache[mabs] = self.cache[abs];
+ }
+ }
+
+ return m;
+} // lotta situps...
+
+
+function makeAbs(self, f) {
+ var abs = f;
+
+ if (f.charAt(0) === '/') {
+ abs = path$2.join(self.root, f);
+ } else if (pathIsAbsolute(f) || f === '') {
+ abs = f;
+ } else if (self.changedCwd) {
+ abs = path$2.resolve(self.cwd, f);
+ } else {
+ abs = path$2.resolve(f);
+ }
+
+ if (process.platform === 'win32') abs = abs.replace(/\\/g, '/');
+ return abs;
+} // Return true, if pattern ends with globstar '**', for the accompanying parent directory.
+// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents
+
+
+function isIgnored(self, path) {
+ if (!self.ignore.length) return false;
+ return self.ignore.some(function (item) {
+ return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path));
+ });
+}
+
+function childrenIgnored(self, path) {
+ if (!self.ignore.length) return false;
+ return self.ignore.some(function (item) {
+ return !!(item.gmatcher && item.gmatcher.match(path));
+ });
+}
+
+var common$2 = {
+ alphasort: alphasort_1,
+ alphasorti: alphasorti_1,
+ setopts: setopts_1,
+ ownProp: ownProp_1,
+ makeAbs: makeAbs_1,
+ finish: finish_1,
+ mark: mark_1,
+ isIgnored: isIgnored_1,
+ childrenIgnored: childrenIgnored_1
+};
+
+var sync$1 = globSync;
+globSync.GlobSync = GlobSync;
+var setopts$1 = common$2.setopts;
+var ownProp$1 = common$2.ownProp;
+var childrenIgnored$1 = common$2.childrenIgnored;
+var isIgnored$1 = common$2.isIgnored;
+
+function globSync(pattern, options) {
+ if (typeof options === 'function' || arguments.length === 3) throw new TypeError('callback provided to sync glob\n' + 'See: https://github.com/isaacs/node-glob/issues/167');
+ return new GlobSync(pattern, options).found;
+}
+
+function GlobSync(pattern, options) {
+ if (!pattern) throw new Error('must provide pattern');
+ if (typeof options === 'function' || arguments.length === 3) throw new TypeError('callback provided to sync glob\n' + 'See: https://github.com/isaacs/node-glob/issues/167');
+ if (!(this instanceof GlobSync)) return new GlobSync(pattern, options);
+ setopts$1(this, pattern, options);
+ if (this.noprocess) return this;
+ var n = this.minimatch.set.length;
+ this.matches = new Array(n);
+
+ for (var i = 0; i < n; i++) {
+ this._process(this.minimatch.set[i], i, false);
+ }
+
+ this._finish();
+}
+
+GlobSync.prototype._finish = function () {
+ assert$1(this instanceof GlobSync);
+
+ if (this.realpath) {
+ var self = this;
+ this.matches.forEach(function (matchset, index) {
+ var set = self.matches[index] = Object.create(null);
+
+ for (var p in matchset) {
+ try {
+ p = self._makeAbs(p);
+ var real = fs_realpath.realpathSync(p, self.realpathCache);
+ set[real] = true;
+ } catch (er) {
+ if (er.syscall === 'stat') set[self._makeAbs(p)] = true;else throw er;
+ }
+ }
+ });
+ }
+
+ common$2.finish(this);
+};
+
+GlobSync.prototype._process = function (pattern, index, inGlobStar) {
+ assert$1(this instanceof GlobSync); // Get the first [n] parts of pattern that are all strings.
+
+ var n = 0;
+
+ while (typeof pattern[n] === 'string') {
+ n++;
+ } // now n is the index of the first one that is *not* a string.
+ // See if there's anything else
+
+
+ var prefix;
+
+ switch (n) {
+ // if not, then this is rather simple
+ case pattern.length:
+ this._processSimple(pattern.join('/'), index);
+
+ return;
+
+ case 0:
+ // pattern *starts* with some non-trivial item.
+ // going to readdir(cwd), but not include the prefix in matches.
+ prefix = null;
+ break;
+
+ default:
+ // pattern has some string bits in the front.
+ // whatever it starts with, whether that's 'absolute' like /foo/bar,
+ // or 'relative' like '../baz'
+ prefix = pattern.slice(0, n).join('/');
+ break;
+ }
+
+ var remain = pattern.slice(n); // get the list of entries.
+
+ var read;
+ if (prefix === null) read = '.';else if (pathIsAbsolute(prefix) || pathIsAbsolute(pattern.join('/'))) {
+ if (!prefix || !pathIsAbsolute(prefix)) prefix = '/' + prefix;
+ read = prefix;
+ } else read = prefix;
+
+ var abs = this._makeAbs(read); //if ignored, skip processing
+
+
+ if (childrenIgnored$1(this, read)) return;
+ var isGlobStar = remain[0] === minimatch_1.GLOBSTAR;
+ if (isGlobStar) this._processGlobStar(prefix, read, abs, remain, index, inGlobStar);else this._processReaddir(prefix, read, abs, remain, index, inGlobStar);
+};
+
+GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {
+ var entries = this._readdir(abs, inGlobStar); // if the abs isn't a dir, then nothing can match!
+
+
+ if (!entries) return; // It will only match dot entries if it starts with a dot, or if
+ // dot is set. Stuff like @(.foo|.bar) isn't allowed.
+
+ var pn = remain[0];
+ var negate = !!this.minimatch.negate;
+ var rawGlob = pn._glob;
+ var dotOk = this.dot || rawGlob.charAt(0) === '.';
+ var matchedEntries = [];
+
+ for (var i = 0; i < entries.length; i++) {
+ var e = entries[i];
+
+ if (e.charAt(0) !== '.' || dotOk) {
+ var m;
+
+ if (negate && !prefix) {
+ m = !e.match(pn);
+ } else {
+ m = e.match(pn);
+ }
+
+ if (m) matchedEntries.push(e);
+ }
+ }
+
+ var len = matchedEntries.length; // If there are no matched entries, then nothing matches.
+
+ if (len === 0) return; // if this is the last remaining pattern bit, then no need for
+ // an additional stat *unless* the user has specified mark or
+ // stat explicitly. We know they exist, since readdir returned
+ // them.
+
+ if (remain.length === 1 && !this.mark && !this.stat) {
+ if (!this.matches[index]) this.matches[index] = Object.create(null);
+
+ for (var i = 0; i < len; i++) {
+ var e = matchedEntries[i];
+
+ if (prefix) {
+ if (prefix.slice(-1) !== '/') e = prefix + '/' + e;else e = prefix + e;
+ }
+
+ if (e.charAt(0) === '/' && !this.nomount) {
+ e = path$2.join(this.root, e);
+ }
+
+ this._emitMatch(index, e);
+ } // This was the last one, and no stats were needed
+
+
+ return;
+ } // now test all matched entries as stand-ins for that part
+ // of the pattern.
+
+
+ remain.shift();
+
+ for (var i = 0; i < len; i++) {
+ var e = matchedEntries[i];
+ var newPattern;
+ if (prefix) newPattern = [prefix, e];else newPattern = [e];
+
+ this._process(newPattern.concat(remain), index, inGlobStar);
+ }
+};
+
+GlobSync.prototype._emitMatch = function (index, e) {
+ if (isIgnored$1(this, e)) return;
+
+ var abs = this._makeAbs(e);
+
+ if (this.mark) e = this._mark(e);
+
+ if (this.absolute) {
+ e = abs;
+ }
+
+ if (this.matches[index][e]) return;
+
+ if (this.nodir) {
+ var c = this.cache[abs];
+ if (c === 'DIR' || Array.isArray(c)) return;
+ }
+
+ this.matches[index][e] = true;
+ if (this.stat) this._stat(e);
+};
+
+GlobSync.prototype._readdirInGlobStar = function (abs) {
+ // follow all symlinked directories forever
+ // just proceed as if this is a non-globstar situation
+ if (this.follow) return this._readdir(abs, false);
+ var entries;
+ var lstat;
+
+ try {
+ lstat = fs$1.lstatSync(abs);
+ } catch (er) {
+ if (er.code === 'ENOENT') {
+ // lstat failed, doesn't exist
+ return null;
+ }
+ }
+
+ var isSym = lstat && lstat.isSymbolicLink();
+ this.symlinks[abs] = isSym; // If it's not a symlink or a dir, then it's definitely a regular file.
+ // don't bother doing a readdir in that case.
+
+ if (!isSym && lstat && !lstat.isDirectory()) this.cache[abs] = 'FILE';else entries = this._readdir(abs, false);
+ return entries;
+};
+
+GlobSync.prototype._readdir = function (abs, inGlobStar) {
+ if (inGlobStar && !ownProp$1(this.symlinks, abs)) return this._readdirInGlobStar(abs);
+
+ if (ownProp$1(this.cache, abs)) {
+ var c = this.cache[abs];
+ if (!c || c === 'FILE') return null;
+ if (Array.isArray(c)) return c;
+ }
+
+ try {
+ return this._readdirEntries(abs, fs$1.readdirSync(abs));
+ } catch (er) {
+ this._readdirError(abs, er);
+
+ return null;
+ }
+};
+
+GlobSync.prototype._readdirEntries = function (abs, entries) {
+ // if we haven't asked to stat everything, then just
+ // assume that everything in there exists, so we can avoid
+ // having to stat it a second time.
+ if (!this.mark && !this.stat) {
+ for (var i = 0; i < entries.length; i++) {
+ var e = entries[i];
+ if (abs === '/') e = abs + e;else e = abs + '/' + e;
+ this.cache[e] = true;
+ }
+ }
+
+ this.cache[abs] = entries; // mark and cache dir-ness
+
+ return entries;
+};
+
+GlobSync.prototype._readdirError = function (f, er) {
+ // handle errors, and cache the information
+ switch (er.code) {
+ case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205
+
+ case 'ENOTDIR':
+ // totally normal. means it *does* exist.
+ var abs = this._makeAbs(f);
+
+ this.cache[abs] = 'FILE';
+
+ if (abs === this.cwdAbs) {
+ var error = new Error(er.code + ' invalid cwd ' + this.cwd);
+ error.path = this.cwd;
+ error.code = er.code;
+ throw error;
+ }
+
+ break;
+
+ case 'ENOENT': // not terribly unusual
+
+ case 'ELOOP':
+ case 'ENAMETOOLONG':
+ case 'UNKNOWN':
+ this.cache[this._makeAbs(f)] = false;
+ break;
+
+ default:
+ // some unusual error. Treat as failure.
+ this.cache[this._makeAbs(f)] = false;
+ if (this.strict) throw er;
+ if (!this.silent) console.error('glob error', er);
+ break;
+ }
+};
+
+GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {
+ var entries = this._readdir(abs, inGlobStar); // no entries means not a dir, so it can never have matches
+ // foo.txt/** doesn't match foo.txt
+
+
+ if (!entries) return; // test without the globstar, and with every child both below
+ // and replacing the globstar.
+
+ var remainWithoutGlobStar = remain.slice(1);
+ var gspref = prefix ? [prefix] : [];
+ var noGlobStar = gspref.concat(remainWithoutGlobStar); // the noGlobStar pattern exits the inGlobStar state
+
+ this._process(noGlobStar, index, false);
+
+ var len = entries.length;
+ var isSym = this.symlinks[abs]; // If it's a symlink, and we're in a globstar, then stop
+
+ if (isSym && inGlobStar) return;
+
+ for (var i = 0; i < len; i++) {
+ var e = entries[i];
+ if (e.charAt(0) === '.' && !this.dot) continue; // these two cases enter the inGlobStar state
+
+ var instead = gspref.concat(entries[i], remainWithoutGlobStar);
+
+ this._process(instead, index, true);
+
+ var below = gspref.concat(entries[i], remain);
+
+ this._process(below, index, true);
+ }
+};
+
+GlobSync.prototype._processSimple = function (prefix, index) {
+ // XXX review this. Shouldn't it be doing the mounting etc
+ // before doing stat? kinda weird?
+ var exists = this._stat(prefix);
+
+ if (!this.matches[index]) this.matches[index] = Object.create(null); // If it doesn't exist, then just mark the lack of results
+
+ if (!exists) return;
+
+ if (prefix && pathIsAbsolute(prefix) && !this.nomount) {
+ var trail = /[\/\\]$/.test(prefix);
+
+ if (prefix.charAt(0) === '/') {
+ prefix = path$2.join(this.root, prefix);
+ } else {
+ prefix = path$2.resolve(this.root, prefix);
+ if (trail) prefix += '/';
+ }
+ }
+
+ if (process.platform === 'win32') prefix = prefix.replace(/\\/g, '/'); // Mark this as a match
+
+ this._emitMatch(index, prefix);
+}; // Returns either 'DIR', 'FILE', or false
+
+
+GlobSync.prototype._stat = function (f) {
+ var abs = this._makeAbs(f);
+
+ var needDir = f.slice(-1) === '/';
+ if (f.length > this.maxLength) return false;
+
+ if (!this.stat && ownProp$1(this.cache, abs)) {
+ var c = this.cache[abs];
+ if (Array.isArray(c)) c = 'DIR'; // It exists, but maybe not how we need it
+
+ if (!needDir || c === 'DIR') return c;
+ if (needDir && c === 'FILE') return false; // otherwise we have to stat, because maybe c=true
+ // if we know it exists, but not what it is.
+ }
+ var stat = this.statCache[abs];
+
+ if (!stat) {
+ var lstat;
+
+ try {
+ lstat = fs$1.lstatSync(abs);
+ } catch (er) {
+ if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {
+ this.statCache[abs] = false;
+ return false;
+ }
+ }
+
+ if (lstat && lstat.isSymbolicLink()) {
+ try {
+ stat = fs$1.statSync(abs);
+ } catch (er) {
+ stat = lstat;
+ }
+ } else {
+ stat = lstat;
+ }
+ }
+
+ this.statCache[abs] = stat;
+ var c = true;
+ if (stat) c = stat.isDirectory() ? 'DIR' : 'FILE';
+ this.cache[abs] = this.cache[abs] || c;
+ if (needDir && c === 'FILE') return false;
+ return c;
+};
+
+GlobSync.prototype._mark = function (p) {
+ return common$2.mark(this, p);
+};
+
+GlobSync.prototype._makeAbs = function (f) {
+ return common$2.makeAbs(this, f);
+};
+
+// Returns a wrapper function that returns a wrapped callback
+// The wrapper function should do some stuff, and return a
+// presumably different callback function.
+// This makes sure that own properties are retained, so that
+// decorations and such are not lost along the way.
+var wrappy_1 = wrappy;
+
+function wrappy(fn, cb) {
+ if (fn && cb) return wrappy(fn)(cb);
+ if (typeof fn !== 'function') throw new TypeError('need wrapper function');
+ Object.keys(fn).forEach(function (k) {
+ wrapper[k] = fn[k];
+ });
+ return wrapper;
+
+ function wrapper() {
+ var args = new Array(arguments.length);
+
+ for (var i = 0; i < args.length; i++) {
+ args[i] = arguments[i];
+ }
+
+ var ret = fn.apply(this, args);
+ var cb = args[args.length - 1];
+
+ if (typeof ret === 'function' && ret !== cb) {
+ Object.keys(cb).forEach(function (k) {
+ ret[k] = cb[k];
+ });
+ }
+
+ return ret;
+ }
+}
+
+var once_1 = wrappy_1(once);
+var strict = wrappy_1(onceStrict);
+once.proto = once(function () {
+ Object.defineProperty(Function.prototype, 'once', {
+ value: function value() {
+ return once(this);
+ },
+ configurable: true
+ });
+ Object.defineProperty(Function.prototype, 'onceStrict', {
+ value: function value() {
+ return onceStrict(this);
+ },
+ configurable: true
+ });
+});
+
+function once(fn) {
+ var f = function f() {
+ if (f.called) return f.value;
+ f.called = true;
+ return f.value = fn.apply(this, arguments);
+ };
+
+ f.called = false;
+ return f;
+}
+
+function onceStrict(fn) {
+ var f = function f() {
+ if (f.called) throw new Error(f.onceError);
+ f.called = true;
+ return f.value = fn.apply(this, arguments);
+ };
+
+ var name = fn.name || 'Function wrapped with `once`';
+ f.onceError = name + " shouldn't be called more than once";
+ f.called = false;
+ return f;
+}
+once_1.strict = strict;
+
+var reqs = Object.create(null);
+var inflight_1 = wrappy_1(inflight);
+
+function inflight(key, cb) {
+ if (reqs[key]) {
+ reqs[key].push(cb);
+ return null;
+ } else {
+ reqs[key] = [cb];
+ return makeres(key);
+ }
+}
+
+function makeres(key) {
+ return once_1(function RES() {
+ var cbs = reqs[key];
+ var len = cbs.length;
+ var args = slice(arguments); // XXX It's somewhat ambiguous whether a new callback added in this
+ // pass should be queued for later execution if something in the
+ // list of callbacks throws, or if it should just be discarded.
+ // However, it's such an edge case that it hardly matters, and either
+ // choice is likely as surprising as the other.
+ // As it happens, we do go ahead and schedule it for later execution.
+
+ try {
+ for (var i = 0; i < len; i++) {
+ cbs[i].apply(null, args);
+ }
+ } finally {
+ if (cbs.length > len) {
+ // added more in the interim.
+ // de-zalgo, just in case, but don't call again.
+ cbs.splice(0, len);
+ process.nextTick(function () {
+ RES.apply(null, args);
+ });
+ } else {
+ delete reqs[key];
+ }
+ }
+ });
+}
+
+function slice(args) {
+ var length = args.length;
+ var array = [];
+
+ for (var i = 0; i < length; i++) {
+ array[i] = args[i];
+ }
+
+ return array;
+}
+
+//
+// 1. Get the minimatch set
+// 2. For each pattern in the set, PROCESS(pattern, false)
+// 3. Store matches per-set, then uniq them
+//
+// PROCESS(pattern, inGlobStar)
+// Get the first [n] items from pattern that are all strings
+// Join these together. This is PREFIX.
+// If there is no more remaining, then stat(PREFIX) and
+// add to matches if it succeeds. END.
+//
+// If inGlobStar and PREFIX is symlink and points to dir
+// set ENTRIES = []
+// else readdir(PREFIX) as ENTRIES
+// If fail, END
+//
+// with ENTRIES
+// If pattern[n] is GLOBSTAR
+// // handle the case where the globstar match is empty
+// // by pruning it out, and testing the resulting pattern
+// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)
+// // handle other cases.
+// for ENTRY in ENTRIES (not dotfiles)
+// // attach globstar + tail onto the entry
+// // Mark that this entry is a globstar match
+// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)
+//
+// else // not globstar
+// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)
+// Test ENTRY against pattern[n]
+// If fails, continue
+// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])
+//
+// Caveat:
+// Cache all stats and readdirs results to minimize syscall. Since all
+// we ever care about is existence and directory-ness, we can just keep
+// `true` for files, and [children,...] for directories, or `false` for
+// things that don't exist.
+
+var glob_1 = glob;
+var EE = events$1.EventEmitter;
+var setopts$2 = common$2.setopts;
+var ownProp$2 = common$2.ownProp;
+var childrenIgnored$2 = common$2.childrenIgnored;
+var isIgnored$2 = common$2.isIgnored;
+
+function glob(pattern, options, cb) {
+ if (typeof options === 'function') cb = options, options = {};
+ if (!options) options = {};
+
+ if (options.sync) {
+ if (cb) throw new TypeError('callback provided to sync glob');
+ return sync$1(pattern, options);
+ }
+
+ return new Glob(pattern, options, cb);
+}
+
+glob.sync = sync$1;
+var GlobSync$1 = glob.GlobSync = sync$1.GlobSync; // old api surface
+
+glob.glob = glob;
+
+function extend(origin, add) {
+ if (add === null || typeof add !== 'object') {
+ return origin;
+ }
+
+ var keys = Object.keys(add);
+ var i = keys.length;
+
+ while (i--) {
+ origin[keys[i]] = add[keys[i]];
+ }
+
+ return origin;
+}
+
+glob.hasMagic = function (pattern, options_) {
+ var options = extend({}, options_);
+ options.noprocess = true;
+ var g = new Glob(pattern, options);
+ var set = g.minimatch.set;
+ if (!pattern) return false;
+ if (set.length > 1) return true;
+
+ for (var j = 0; j < set[0].length; j++) {
+ if (typeof set[0][j] !== 'string') return true;
+ }
+
+ return false;
+};
+
+glob.Glob = Glob;
+inherits(Glob, EE);
+
+function Glob(pattern, options, cb) {
+ if (typeof options === 'function') {
+ cb = options;
+ options = null;
+ }
+
+ if (options && options.sync) {
+ if (cb) throw new TypeError('callback provided to sync glob');
+ return new GlobSync$1(pattern, options);
+ }
+
+ if (!(this instanceof Glob)) return new Glob(pattern, options, cb);
+ setopts$2(this, pattern, options);
+ this._didRealPath = false; // process each pattern in the minimatch set
+
+ var n = this.minimatch.set.length; // The matches are stored as {<filename>: true,...} so that
+ // duplicates are automagically pruned.
+ // Later, we do an Object.keys() on these.
+ // Keep them as a list so we can fill in when nonull is set.
+
+ this.matches = new Array(n);
+
+ if (typeof cb === 'function') {
+ cb = once_1(cb);
+ this.on('error', cb);
+ this.on('end', function (matches) {
+ cb(null, matches);
+ });
+ }
+
+ var self = this;
+ this._processing = 0;
+ this._emitQueue = [];
+ this._processQueue = [];
+ this.paused = false;
+ if (this.noprocess) return this;
+ if (n === 0) return done();
+ var sync = true;
+
+ for (var i = 0; i < n; i++) {
+ this._process(this.minimatch.set[i], i, false, done);
+ }
+
+ sync = false;
+
+ function done() {
+ --self._processing;
+
+ if (self._processing <= 0) {
+ if (sync) {
+ process.nextTick(function () {
+ self._finish();
+ });
+ } else {
+ self._finish();
+ }
+ }
+ }
+}
+
+Glob.prototype._finish = function () {
+ assert$1(this instanceof Glob);
+ if (this.aborted) return;
+ if (this.realpath && !this._didRealpath) return this._realpath();
+ common$2.finish(this);
+ this.emit('end', this.found);
+};
+
+Glob.prototype._realpath = function () {
+ if (this._didRealpath) return;
+ this._didRealpath = true;
+ var n = this.matches.length;
+ if (n === 0) return this._finish();
+ var self = this;
+
+ for (var i = 0; i < this.matches.length; i++) {
+ this._realpathSet(i, next);
+ }
+
+ function next() {
+ if (--n === 0) self._finish();
+ }
+};
+
+Glob.prototype._realpathSet = function (index, cb) {
+ var matchset = this.matches[index];
+ if (!matchset) return cb();
+ var found = Object.keys(matchset);
+ var self = this;
+ var n = found.length;
+ if (n === 0) return cb();
+ var set = this.matches[index] = Object.create(null);
+ found.forEach(function (p, i) {
+ // If there's a problem with the stat, then it means that
+ // one or more of the links in the realpath couldn't be
+ // resolved. just return the abs value in that case.
+ p = self._makeAbs(p);
+ fs_realpath.realpath(p, self.realpathCache, function (er, real) {
+ if (!er) set[real] = true;else if (er.syscall === 'stat') set[p] = true;else self.emit('error', er); // srsly wtf right here
+
+ if (--n === 0) {
+ self.matches[index] = set;
+ cb();
+ }
+ });
+ });
+};
+
+Glob.prototype._mark = function (p) {
+ return common$2.mark(this, p);
+};
+
+Glob.prototype._makeAbs = function (f) {
+ return common$2.makeAbs(this, f);
+};
+
+Glob.prototype.abort = function () {
+ this.aborted = true;
+ this.emit('abort');
+};
+
+Glob.prototype.pause = function () {
+ if (!this.paused) {
+ this.paused = true;
+ this.emit('pause');
+ }
+};
+
+Glob.prototype.resume = function () {
+ if (this.paused) {
+ this.emit('resume');
+ this.paused = false;
+
+ if (this._emitQueue.length) {
+ var eq = this._emitQueue.slice(0);
+
+ this._emitQueue.length = 0;
+
+ for (var i = 0; i < eq.length; i++) {
+ var e = eq[i];
+
+ this._emitMatch(e[0], e[1]);
+ }
+ }
+
+ if (this._processQueue.length) {
+ var pq = this._processQueue.slice(0);
+
+ this._processQueue.length = 0;
+
+ for (var i = 0; i < pq.length; i++) {
+ var p = pq[i];
+ this._processing--;
+
+ this._process(p[0], p[1], p[2], p[3]);
+ }
+ }
+ }
+};
+
+Glob.prototype._process = function (pattern, index, inGlobStar, cb) {
+ assert$1(this instanceof Glob);
+ assert$1(typeof cb === 'function');
+ if (this.aborted) return;
+ this._processing++;
+
+ if (this.paused) {
+ this._processQueue.push([pattern, index, inGlobStar, cb]);
+
+ return;
+ } //console.error('PROCESS %d', this._processing, pattern)
+ // Get the first [n] parts of pattern that are all strings.
+
+
+ var n = 0;
+
+ while (typeof pattern[n] === 'string') {
+ n++;
+ } // now n is the index of the first one that is *not* a string.
+ // see if there's anything else
+
+
+ var prefix;
+
+ switch (n) {
+ // if not, then this is rather simple
+ case pattern.length:
+ this._processSimple(pattern.join('/'), index, cb);
+
+ return;
+
+ case 0:
+ // pattern *starts* with some non-trivial item.
+ // going to readdir(cwd), but not include the prefix in matches.
+ prefix = null;
+ break;
+
+ default:
+ // pattern has some string bits in the front.
+ // whatever it starts with, whether that's 'absolute' like /foo/bar,
+ // or 'relative' like '../baz'
+ prefix = pattern.slice(0, n).join('/');
+ break;
+ }
+
+ var remain = pattern.slice(n); // get the list of entries.
+
+ var read;
+ if (prefix === null) read = '.';else if (pathIsAbsolute(prefix) || pathIsAbsolute(pattern.join('/'))) {
+ if (!prefix || !pathIsAbsolute(prefix)) prefix = '/' + prefix;
+ read = prefix;
+ } else read = prefix;
+
+ var abs = this._makeAbs(read); //if ignored, skip _processing
+
+
+ if (childrenIgnored$2(this, read)) return cb();
+ var isGlobStar = remain[0] === minimatch_1.GLOBSTAR;
+ if (isGlobStar) this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb);else this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb);
+};
+
+Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {
+ var self = this;
+
+ this._readdir(abs, inGlobStar, function (er, entries) {
+ return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb);
+ });
+};
+
+Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
+ // if the abs isn't a dir, then nothing can match!
+ if (!entries) return cb(); // It will only match dot entries if it starts with a dot, or if
+ // dot is set. Stuff like @(.foo|.bar) isn't allowed.
+
+ var pn = remain[0];
+ var negate = !!this.minimatch.negate;
+ var rawGlob = pn._glob;
+ var dotOk = this.dot || rawGlob.charAt(0) === '.';
+ var matchedEntries = [];
+
+ for (var i = 0; i < entries.length; i++) {
+ var e = entries[i];
+
+ if (e.charAt(0) !== '.' || dotOk) {
+ var m;
+
+ if (negate && !prefix) {
+ m = !e.match(pn);
+ } else {
+ m = e.match(pn);
+ }
+
+ if (m) matchedEntries.push(e);
+ }
+ } //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)
+
+
+ var len = matchedEntries.length; // If there are no matched entries, then nothing matches.
+
+ if (len === 0) return cb(); // if this is the last remaining pattern bit, then no need for
+ // an additional stat *unless* the user has specified mark or
+ // stat explicitly. We know they exist, since readdir returned
+ // them.
+
+ if (remain.length === 1 && !this.mark && !this.stat) {
+ if (!this.matches[index]) this.matches[index] = Object.create(null);
+
+ for (var i = 0; i < len; i++) {
+ var e = matchedEntries[i];
+
+ if (prefix) {
+ if (prefix !== '/') e = prefix + '/' + e;else e = prefix + e;
+ }
+
+ if (e.charAt(0) === '/' && !this.nomount) {
+ e = path$2.join(this.root, e);
+ }
+
+ this._emitMatch(index, e);
+ } // This was the last one, and no stats were needed
+
+
+ return cb();
+ } // now test all matched entries as stand-ins for that part
+ // of the pattern.
+
+
+ remain.shift();
+
+ for (var i = 0; i < len; i++) {
+ var e = matchedEntries[i];
+
+ if (prefix) {
+ if (prefix !== '/') e = prefix + '/' + e;else e = prefix + e;
+ }
+
+ this._process([e].concat(remain), index, inGlobStar, cb);
+ }
+
+ cb();
+};
+
+Glob.prototype._emitMatch = function (index, e) {
+ if (this.aborted) return;
+ if (isIgnored$2(this, e)) return;
+
+ if (this.paused) {
+ this._emitQueue.push([index, e]);
+
+ return;
+ }
+
+ var abs = pathIsAbsolute(e) ? e : this._makeAbs(e);
+ if (this.mark) e = this._mark(e);
+ if (this.absolute) e = abs;
+ if (this.matches[index][e]) return;
+
+ if (this.nodir) {
+ var c = this.cache[abs];
+ if (c === 'DIR' || Array.isArray(c)) return;
+ }
+
+ this.matches[index][e] = true;
+ var st = this.statCache[abs];
+ if (st) this.emit('stat', e, st);
+ this.emit('match', e);
+};
+
+Glob.prototype._readdirInGlobStar = function (abs, cb) {
+ if (this.aborted) return; // follow all symlinked directories forever
+ // just proceed as if this is a non-globstar situation
+
+ if (this.follow) return this._readdir(abs, false, cb);
+ var lstatkey = 'lstat\0' + abs;
+ var self = this;
+ var lstatcb = inflight_1(lstatkey, lstatcb_);
+ if (lstatcb) fs$1.lstat(abs, lstatcb);
+
+ function lstatcb_(er, lstat) {
+ if (er && er.code === 'ENOENT') return cb();
+ var isSym = lstat && lstat.isSymbolicLink();
+ self.symlinks[abs] = isSym; // If it's not a symlink or a dir, then it's definitely a regular file.
+ // don't bother doing a readdir in that case.
+
+ if (!isSym && lstat && !lstat.isDirectory()) {
+ self.cache[abs] = 'FILE';
+ cb();
+ } else self._readdir(abs, false, cb);
+ }
+};
+
+Glob.prototype._readdir = function (abs, inGlobStar, cb) {
+ if (this.aborted) return;
+ cb = inflight_1('readdir\0' + abs + '\0' + inGlobStar, cb);
+ if (!cb) return; //console.error('RD %j %j', +inGlobStar, abs)
+
+ if (inGlobStar && !ownProp$2(this.symlinks, abs)) return this._readdirInGlobStar(abs, cb);
+
+ if (ownProp$2(this.cache, abs)) {
+ var c = this.cache[abs];
+ if (!c || c === 'FILE') return cb();
+ if (Array.isArray(c)) return cb(null, c);
+ }
+ fs$1.readdir(abs, readdirCb(this, abs, cb));
+};
+
+function readdirCb(self, abs, cb) {
+ return function (er, entries) {
+ if (er) self._readdirError(abs, er, cb);else self._readdirEntries(abs, entries, cb);
+ };
+}
+
+Glob.prototype._readdirEntries = function (abs, entries, cb) {
+ if (this.aborted) return; // if we haven't asked to stat everything, then just
+ // assume that everything in there exists, so we can avoid
+ // having to stat it a second time.
+
+ if (!this.mark && !this.stat) {
+ for (var i = 0; i < entries.length; i++) {
+ var e = entries[i];
+ if (abs === '/') e = abs + e;else e = abs + '/' + e;
+ this.cache[e] = true;
+ }
+ }
+
+ this.cache[abs] = entries;
+ return cb(null, entries);
+};
+
+Glob.prototype._readdirError = function (f, er, cb) {
+ if (this.aborted) return; // handle errors, and cache the information
+
+ switch (er.code) {
+ case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205
+
+ case 'ENOTDIR':
+ // totally normal. means it *does* exist.
+ var abs = this._makeAbs(f);
+
+ this.cache[abs] = 'FILE';
+
+ if (abs === this.cwdAbs) {
+ var error = new Error(er.code + ' invalid cwd ' + this.cwd);
+ error.path = this.cwd;
+ error.code = er.code;
+ this.emit('error', error);
+ this.abort();
+ }
+
+ break;
+
+ case 'ENOENT': // not terribly unusual
+
+ case 'ELOOP':
+ case 'ENAMETOOLONG':
+ case 'UNKNOWN':
+ this.cache[this._makeAbs(f)] = false;
+ break;
+
+ default:
+ // some unusual error. Treat as failure.
+ this.cache[this._makeAbs(f)] = false;
+
+ if (this.strict) {
+ this.emit('error', er); // If the error is handled, then we abort
+ // if not, we threw out of here
+
+ this.abort();
+ }
+
+ if (!this.silent) console.error('glob error', er);
+ break;
+ }
+
+ return cb();
+};
+
+Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {
+ var self = this;
+
+ this._readdir(abs, inGlobStar, function (er, entries) {
+ self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb);
+ });
+};
+
+Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
+ //console.error('pgs2', prefix, remain[0], entries)
+ // no entries means not a dir, so it can never have matches
+ // foo.txt/** doesn't match foo.txt
+ if (!entries) return cb(); // test without the globstar, and with every child both below
+ // and replacing the globstar.
+
+ var remainWithoutGlobStar = remain.slice(1);
+ var gspref = prefix ? [prefix] : [];
+ var noGlobStar = gspref.concat(remainWithoutGlobStar); // the noGlobStar pattern exits the inGlobStar state
+
+ this._process(noGlobStar, index, false, cb);
+
+ var isSym = this.symlinks[abs];
+ var len = entries.length; // If it's a symlink, and we're in a globstar, then stop
+
+ if (isSym && inGlobStar) return cb();
+
+ for (var i = 0; i < len; i++) {
+ var e = entries[i];
+ if (e.charAt(0) === '.' && !this.dot) continue; // these two cases enter the inGlobStar state
+
+ var instead = gspref.concat(entries[i], remainWithoutGlobStar);
+
+ this._process(instead, index, true, cb);
+
+ var below = gspref.concat(entries[i], remain);
+
+ this._process(below, index, true, cb);
+ }
+
+ cb();
+};
+
+Glob.prototype._processSimple = function (prefix, index, cb) {
+ // XXX review this. Shouldn't it be doing the mounting etc
+ // before doing stat? kinda weird?
+ var self = this;
+
+ this._stat(prefix, function (er, exists) {
+ self._processSimple2(prefix, index, er, exists, cb);
+ });
+};
+
+Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {
+ //console.error('ps2', prefix, exists)
+ if (!this.matches[index]) this.matches[index] = Object.create(null); // If it doesn't exist, then just mark the lack of results
+
+ if (!exists) return cb();
+
+ if (prefix && pathIsAbsolute(prefix) && !this.nomount) {
+ var trail = /[\/\\]$/.test(prefix);
+
+ if (prefix.charAt(0) === '/') {
+ prefix = path$2.join(this.root, prefix);
+ } else {
+ prefix = path$2.resolve(this.root, prefix);
+ if (trail) prefix += '/';
+ }
+ }
+
+ if (process.platform === 'win32') prefix = prefix.replace(/\\/g, '/'); // Mark this as a match
+
+ this._emitMatch(index, prefix);
+
+ cb();
+}; // Returns either 'DIR', 'FILE', or false
+
+
+Glob.prototype._stat = function (f, cb) {
+ var abs = this._makeAbs(f);
+
+ var needDir = f.slice(-1) === '/';
+ if (f.length > this.maxLength) return cb();
+
+ if (!this.stat && ownProp$2(this.cache, abs)) {
+ var c = this.cache[abs];
+ if (Array.isArray(c)) c = 'DIR'; // It exists, but maybe not how we need it
+
+ if (!needDir || c === 'DIR') return cb(null, c);
+ if (needDir && c === 'FILE') return cb(); // otherwise we have to stat, because maybe c=true
+ // if we know it exists, but not what it is.
+ }
+ var stat = this.statCache[abs];
+
+ if (stat !== undefined) {
+ if (stat === false) return cb(null, stat);else {
+ var type = stat.isDirectory() ? 'DIR' : 'FILE';
+ if (needDir && type === 'FILE') return cb();else return cb(null, type, stat);
+ }
+ }
+
+ var self = this;
+ var statcb = inflight_1('stat\0' + abs, lstatcb_);
+ if (statcb) fs$1.lstat(abs, statcb);
+
+ function lstatcb_(er, lstat) {
+ if (lstat && lstat.isSymbolicLink()) {
+ // If it's a symlink, then treat it as the target, unless
+ // the target does not exist, then treat it as a file.
+ return fs$1.stat(abs, function (er, stat) {
+ if (er) self._stat2(f, abs, null, lstat, cb);else self._stat2(f, abs, er, stat, cb);
+ });
+ } else {
+ self._stat2(f, abs, er, lstat, cb);
+ }
+ }
+};
+
+Glob.prototype._stat2 = function (f, abs, er, stat, cb) {
+ if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {
+ this.statCache[abs] = false;
+ return cb();
+ }
+
+ var needDir = f.slice(-1) === '/';
+ this.statCache[abs] = stat;
+ if (abs.slice(-1) === '/' && stat && !stat.isDirectory()) return cb(null, false, stat);
+ var c = true;
+ if (stat) c = stat.isDirectory() ? 'DIR' : 'FILE';
+ this.cache[abs] = this.cache[abs] || c;
+ if (needDir && c === 'FILE') return cb();
+ return cb(null, c, stat);
+};
+
+var pify_1 = createCommonjsModule(function (module) {
+
+ var processFn = function processFn(fn, P, opts) {
+ return function () {
+ var that = this;
+ var args = new Array(arguments.length);
+
+ for (var i = 0; i < arguments.length; i++) {
+ args[i] = arguments[i];
+ }
+
+ return new P(function (resolve, reject) {
+ args.push(function (err, result) {
+ if (err) {
+ reject(err);
+ } else if (opts.multiArgs) {
+ var results = new Array(arguments.length - 1);
+
+ for (var i = 1; i < arguments.length; i++) {
+ results[i - 1] = arguments[i];
+ }
+
+ resolve(results);
+ } else {
+ resolve(result);
+ }
+ });
+ fn.apply(that, args);
+ });
+ };
+ };
+
+ var pify = module.exports = function (obj, P, opts) {
+ if (typeof P !== 'function') {
+ opts = P;
+ P = Promise;
+ }
+
+ opts = opts || {};
+ opts.exclude = opts.exclude || [/.+Sync$/];
+
+ var filter = function filter(key) {
+ var match = function match(pattern) {
+ return typeof pattern === 'string' ? key === pattern : pattern.test(key);
+ };
+
+ return opts.include ? opts.include.some(match) : !opts.exclude.some(match);
+ };
+
+ var ret = typeof obj === 'function' ? function () {
+ if (opts.excludeMain) {
+ return obj.apply(this, arguments);
+ }
+
+ return processFn(obj, P, opts).apply(this, arguments);
+ } : {};
+ return Object.keys(obj).reduce(function (ret, key) {
+ var x = obj[key];
+ ret[key] = typeof x === 'function' && filter(key) ? processFn(x, P, opts) : x;
+ return ret;
+ }, ret);
+ };
+
+ pify.all = pify;
+});
+
+var globP = pify_1(glob_1, pinkiePromise).bind(glob_1);
+
+function isNegative(pattern) {
+ return pattern[0] === '!';
+}
+
+function isString(value) {
+ return typeof value === 'string';
+}
+
+function assertPatternsInput(patterns) {
+ if (!patterns.every(isString)) {
+ throw new TypeError('patterns must be a string or an array of strings');
+ }
+}
+
+function generateGlobTasks(patterns, opts) {
+ patterns = [].concat(patterns);
+ assertPatternsInput(patterns);
+ var globTasks = [];
+ opts = objectAssign({
+ cache: Object.create(null),
+ statCache: Object.create(null),
+ realpathCache: Object.create(null),
+ symlinks: Object.create(null),
+ ignore: []
+ }, opts);
+ patterns.forEach(function (pattern, i) {
+ if (isNegative(pattern)) {
+ return;
+ }
+
+ var ignore = patterns.slice(i).filter(isNegative).map(function (pattern) {
+ return pattern.slice(1);
+ });
+ globTasks.push({
+ pattern: pattern,
+ opts: objectAssign({}, opts, {
+ ignore: opts.ignore.concat(ignore)
+ })
+ });
+ });
+ return globTasks;
+}
+
+var globby = function globby(patterns, opts) {
+ var globTasks;
+
+ try {
+ globTasks = generateGlobTasks(patterns, opts);
+ } catch (err) {
+ return pinkiePromise.reject(err);
+ }
+
+ return pinkiePromise.all(globTasks.map(function (task) {
+ return globP(task.pattern, task.opts);
+ })).then(function (paths) {
+ return arrayUnion.apply(null, paths);
+ });
+};
+
+var sync$2 = function sync(patterns, opts) {
+ var globTasks = generateGlobTasks(patterns, opts);
+ return globTasks.reduce(function (matches, task) {
+ return arrayUnion(matches, glob_1.sync(task.pattern, task.opts));
+ }, []);
+};
+
+var generateGlobTasks_1 = generateGlobTasks;
+
+var hasMagic = function hasMagic(patterns, opts) {
+ return [].concat(patterns).some(function (pattern) {
+ return glob_1.hasMagic(pattern, opts);
+ });
+};
+globby.sync = sync$2;
+globby.generateGlobTasks = generateGlobTasks_1;
+globby.hasMagic = hasMagic;
+
+var addLeadingComment$2 = utilShared.addLeadingComment,
+ addTrailingComment$2 = utilShared.addTrailingComment,
+ addDanglingComment$2 = utilShared.addDanglingComment;
+
+function handleOwnLineComment(comment, text, options, ast, isLastComment) {
+ var precedingNode = comment.precedingNode,
+ enclosingNode = comment.enclosingNode,
+ followingNode = comment.followingNode;
+
+ if (handleLastFunctionArgComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleMemberExpressionComments(enclosingNode, followingNode, comment) || handleIfStatementComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleWhileComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleTryStatementComments(enclosingNode, precedingNode, followingNode, comment) || handleClassComments(enclosingNode, precedingNode, followingNode, comment) || handleImportSpecifierComments(enclosingNode, comment) || handleForComments(enclosingNode, precedingNode, comment) || handleUnionTypeComments(precedingNode, enclosingNode, followingNode, comment) || handleOnlyComments(enclosingNode, ast, comment, isLastComment) || handleImportDeclarationComments(text, enclosingNode, precedingNode, comment, options) || handleAssignmentPatternComments(enclosingNode, comment) || handleMethodNameComments(text, enclosingNode, precedingNode, comment, options)) {
+ return true;
+ }
+
+ return false;
+}
+
+function handleEndOfLineComment(comment, text, options, ast, isLastComment) {
+ var precedingNode = comment.precedingNode,
+ enclosingNode = comment.enclosingNode,
+ followingNode = comment.followingNode;
+
+ if (handleLastFunctionArgComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleConditionalExpressionComments(enclosingNode, precedingNode, followingNode, comment, text, options) || handleImportSpecifierComments(enclosingNode, comment) || handleIfStatementComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleWhileComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleTryStatementComments(enclosingNode, precedingNode, followingNode, comment) || handleClassComments(enclosingNode, precedingNode, followingNode, comment) || handleLabeledStatementComments(enclosingNode, comment) || handleCallExpressionComments(precedingNode, enclosingNode, comment) || handlePropertyComments(enclosingNode, comment) || handleOnlyComments(enclosingNode, ast, comment, isLastComment) || handleTypeAliasComments(enclosingNode, followingNode, comment) || handleVariableDeclaratorComments(enclosingNode, followingNode, comment)) {
+ return true;
+ }
+
+ return false;
+}
+
+function handleRemainingComment(comment, text, options, ast, isLastComment) {
+ var precedingNode = comment.precedingNode,
+ enclosingNode = comment.enclosingNode,
+ followingNode = comment.followingNode;
+
+ if (handleIfStatementComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleWhileComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleObjectPropertyAssignment(enclosingNode, precedingNode, comment) || handleCommentInEmptyParens(text, enclosingNode, comment, options) || handleMethodNameComments(text, enclosingNode, precedingNode, comment, options) || handleOnlyComments(enclosingNode, ast, comment, isLastComment) || handleCommentAfterArrowParams(text, enclosingNode, comment, options) || handleFunctionNameComments(text, enclosingNode, precedingNode, comment, options) || handleTSMappedTypeComments(text, enclosingNode, precedingNode, followingNode, comment) || handleBreakAndContinueStatementComments(enclosingNode, comment)) {
+ return true;
+ }
+
+ return false;
+}
+
+function addBlockStatementFirstComment(node, comment) {
+ var body = node.body.filter(function (n) {
+ return n.type !== "EmptyStatement";
+ });
+
+ if (body.length === 0) {
+ addDanglingComment$2(node, comment);
+ } else {
+ addLeadingComment$2(body[0], comment);
+ }
+}
+
+function addBlockOrNotComment(node, comment) {
+ if (node.type === "BlockStatement") {
+ addBlockStatementFirstComment(node, comment);
+ } else {
+ addLeadingComment$2(node, comment);
+ }
+} // There are often comments before the else clause of if statements like
+//
+// if (1) { ... }
+// // comment
+// else { ... }
+//
+// They are being attached as leading comments of the BlockExpression which
+// is not well printed. What we want is to instead move the comment inside
+// of the block and make it leadingComment of the first element of the block
+// or dangling comment of the block if there is nothing inside
+//
+// if (1) { ... }
+// else {
+// // comment
+// ...
+// }
+
+
+function handleIfStatementComments(text, precedingNode, enclosingNode, followingNode, comment, options) {
+ if (!enclosingNode || enclosingNode.type !== "IfStatement" || !followingNode) {
+ return false;
+ } // We unfortunately have no way using the AST or location of nodes to know
+ // if the comment is positioned before the condition parenthesis:
+ // if (a /* comment */) {}
+ // The only workaround I found is to look at the next character to see if
+ // it is a ).
+
+
+ var nextCharacter = util.getNextNonSpaceNonCommentCharacter(text, comment, options.locEnd);
+
+ if (nextCharacter === ")") {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ } // Comments before `else`:
+ // - treat as trailing comments of the consequent, if it's a BlockStatement
+ // - treat as a dangling comment otherwise
+
+
+ if (precedingNode === enclosingNode.consequent && followingNode === enclosingNode.alternate) {
+ if (precedingNode.type === "BlockStatement") {
+ addTrailingComment$2(precedingNode, comment);
+ } else {
+ addDanglingComment$2(enclosingNode, comment);
+ }
+
+ return true;
+ }
+
+ if (followingNode.type === "BlockStatement") {
+ addBlockStatementFirstComment(followingNode, comment);
+ return true;
+ }
+
+ if (followingNode.type === "IfStatement") {
+ addBlockOrNotComment(followingNode.consequent, comment);
+ return true;
+ } // For comments positioned after the condition parenthesis in an if statement
+ // before the consequent without brackets on, such as
+ // if (a) /* comment */ true,
+ // we look at the next character to see if the following node
+ // is the consequent for the if statement
+
+
+ if (enclosingNode.consequent === followingNode) {
+ addLeadingComment$2(followingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleWhileComments(text, precedingNode, enclosingNode, followingNode, comment, options) {
+ if (!enclosingNode || enclosingNode.type !== "WhileStatement" || !followingNode) {
+ return false;
+ } // We unfortunately have no way using the AST or location of nodes to know
+ // if the comment is positioned before the condition parenthesis:
+ // while (a /* comment */) {}
+ // The only workaround I found is to look at the next character to see if
+ // it is a ).
+
+
+ var nextCharacter = util.getNextNonSpaceNonCommentCharacter(text, comment, options.locEnd);
+
+ if (nextCharacter === ")") {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ if (followingNode.type === "BlockStatement") {
+ addBlockStatementFirstComment(followingNode, comment);
+ return true;
+ }
+
+ return false;
+} // Same as IfStatement but for TryStatement
+
+
+function handleTryStatementComments(enclosingNode, precedingNode, followingNode, comment) {
+ if (!enclosingNode || enclosingNode.type !== "TryStatement" && enclosingNode.type !== "CatchClause" || !followingNode) {
+ return false;
+ }
+
+ if (enclosingNode.type === "CatchClause" && precedingNode) {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ if (followingNode.type === "BlockStatement") {
+ addBlockStatementFirstComment(followingNode, comment);
+ return true;
+ }
+
+ if (followingNode.type === "TryStatement") {
+ addBlockOrNotComment(followingNode.finalizer, comment);
+ return true;
+ }
+
+ if (followingNode.type === "CatchClause") {
+ addBlockOrNotComment(followingNode.body, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleMemberExpressionComments(enclosingNode, followingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "MemberExpression" || enclosingNode.type === "OptionalMemberExpression") && followingNode && followingNode.type === "Identifier") {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleConditionalExpressionComments(enclosingNode, precedingNode, followingNode, comment, text, options) {
+ var isSameLineAsPrecedingNode = precedingNode && !util.hasNewlineInRange(text, options.locEnd(precedingNode), options.locStart(comment));
+
+ if ((!precedingNode || !isSameLineAsPrecedingNode) && enclosingNode && enclosingNode.type === "ConditionalExpression" && followingNode) {
+ addLeadingComment$2(followingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleObjectPropertyAssignment(enclosingNode, precedingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "ObjectProperty" || enclosingNode.type === "Property") && enclosingNode.shorthand && enclosingNode.key === precedingNode && enclosingNode.value.type === "AssignmentPattern") {
+ addTrailingComment$2(enclosingNode.value.left, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleClassComments(enclosingNode, precedingNode, followingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "ClassDeclaration" || enclosingNode.type === "ClassExpression") && enclosingNode.decorators && enclosingNode.decorators.length > 0 && !(followingNode && followingNode.type === "Decorator")) {
+ if (!enclosingNode.decorators || enclosingNode.decorators.length === 0) {
+ addLeadingComment$2(enclosingNode, comment);
+ } else {
+ addTrailingComment$2(enclosingNode.decorators[enclosingNode.decorators.length - 1], comment);
+ }
+
+ return true;
+ }
+
+ return false;
+}
+
+function handleMethodNameComments(text, enclosingNode, precedingNode, comment, options) {
+ // This is only needed for estree parsers (flow, typescript) to attach
+ // after a method name:
+ // obj = { fn /*comment*/() {} };
+ if (enclosingNode && precedingNode && (enclosingNode.type === "Property" || enclosingNode.type === "MethodDefinition") && precedingNode.type === "Identifier" && enclosingNode.key === precedingNode && // special Property case: { key: /*comment*/(value) };
+ // comment should be attached to value instead of key
+ util.getNextNonSpaceNonCommentCharacter(text, precedingNode, options.locEnd) !== ":") {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ } // Print comments between decorators and class methods as a trailing comment
+ // on the decorator node instead of the method node
+
+
+ if (precedingNode && enclosingNode && precedingNode.type === "Decorator" && (enclosingNode.type === "ClassMethod" || enclosingNode.type === "ClassProperty" || enclosingNode.type === "TSAbstractClassProperty" || enclosingNode.type === "TSAbstractMethodDefinition" || enclosingNode.type === "MethodDefinition")) {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleFunctionNameComments(text, enclosingNode, precedingNode, comment, options) {
+ if (util.getNextNonSpaceNonCommentCharacter(text, comment, options.locEnd) !== "(") {
+ return false;
+ }
+
+ if (precedingNode && enclosingNode && (enclosingNode.type === "FunctionDeclaration" || enclosingNode.type === "FunctionExpression" || enclosingNode.type === "ClassMethod" || enclosingNode.type === "MethodDefinition" || enclosingNode.type === "ObjectMethod")) {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleCommentAfterArrowParams(text, enclosingNode, comment, options) {
+ if (!(enclosingNode && enclosingNode.type === "ArrowFunctionExpression")) {
+ return false;
+ }
+
+ var index = utilShared.getNextNonSpaceNonCommentCharacterIndex(text, comment, options);
+
+ if (text.substr(index, 2) === "=>") {
+ addDanglingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleCommentInEmptyParens(text, enclosingNode, comment, options) {
+ if (util.getNextNonSpaceNonCommentCharacter(text, comment, options.locEnd) !== ")") {
+ return false;
+ } // Only add dangling comments to fix the case when no params are present,
+ // i.e. a function without any argument.
+
+
+ if (enclosingNode && ((enclosingNode.type === "FunctionDeclaration" || enclosingNode.type === "FunctionExpression" || enclosingNode.type === "ArrowFunctionExpression" || enclosingNode.type === "ClassMethod" || enclosingNode.type === "ObjectMethod") && enclosingNode.params.length === 0 || (enclosingNode.type === "CallExpression" || enclosingNode.type === "OptionalCallExpression" || enclosingNode.type === "NewExpression") && enclosingNode.arguments.length === 0)) {
+ addDanglingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ if (enclosingNode && enclosingNode.type === "MethodDefinition" && enclosingNode.value.params.length === 0) {
+ addDanglingComment$2(enclosingNode.value, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleLastFunctionArgComments(text, precedingNode, enclosingNode, followingNode, comment, options) {
+ // Type definitions functions
+ if (precedingNode && precedingNode.type === "FunctionTypeParam" && enclosingNode && enclosingNode.type === "FunctionTypeAnnotation" && followingNode && followingNode.type !== "FunctionTypeParam") {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ } // Real functions
+
+
+ if (precedingNode && (precedingNode.type === "Identifier" || precedingNode.type === "AssignmentPattern") && enclosingNode && (enclosingNode.type === "ArrowFunctionExpression" || enclosingNode.type === "FunctionExpression" || enclosingNode.type === "FunctionDeclaration" || enclosingNode.type === "ObjectMethod" || enclosingNode.type === "ClassMethod") && util.getNextNonSpaceNonCommentCharacter(text, comment, options.locEnd) === ")") {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ if (enclosingNode && enclosingNode.type === "FunctionDeclaration" && followingNode && followingNode.type === "BlockStatement") {
+ var functionParamRightParenIndex = function () {
+ if (enclosingNode.params.length !== 0) {
+ return util.getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, options.locEnd(util.getLast(enclosingNode.params)));
+ }
+
+ var functionParamLeftParenIndex = util.getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, options.locEnd(enclosingNode.id));
+ return util.getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, functionParamLeftParenIndex + 1);
+ }();
+
+ if (options.locStart(comment) > functionParamRightParenIndex) {
+ addBlockStatementFirstComment(followingNode, comment);
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function handleImportSpecifierComments(enclosingNode, comment) {
+ if (enclosingNode && enclosingNode.type === "ImportSpecifier") {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleLabeledStatementComments(enclosingNode, comment) {
+ if (enclosingNode && enclosingNode.type === "LabeledStatement") {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleBreakAndContinueStatementComments(enclosingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "ContinueStatement" || enclosingNode.type === "BreakStatement") && !enclosingNode.label) {
+ addTrailingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleCallExpressionComments(precedingNode, enclosingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "CallExpression" || enclosingNode.type === "OptionalCallExpression") && precedingNode && enclosingNode.callee === precedingNode && enclosingNode.arguments.length > 0) {
+ addLeadingComment$2(enclosingNode.arguments[0], comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleUnionTypeComments(precedingNode, enclosingNode, followingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "UnionTypeAnnotation" || enclosingNode.type === "TSUnionType")) {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handlePropertyComments(enclosingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "Property" || enclosingNode.type === "ObjectProperty")) {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleOnlyComments(enclosingNode, ast, comment, isLastComment) {
+ // With Flow the enclosingNode is undefined so use the AST instead.
+ if (ast && ast.body && ast.body.length === 0) {
+ if (isLastComment) {
+ addDanglingComment$2(ast, comment);
+ } else {
+ addLeadingComment$2(ast, comment);
+ }
+
+ return true;
+ } else if (enclosingNode && enclosingNode.type === "Program" && enclosingNode.body.length === 0 && enclosingNode.directives && enclosingNode.directives.length === 0) {
+ if (isLastComment) {
+ addDanglingComment$2(enclosingNode, comment);
+ } else {
+ addLeadingComment$2(enclosingNode, comment);
+ }
+
+ return true;
+ }
+
+ return false;
+}
+
+function handleForComments(enclosingNode, precedingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "ForInStatement" || enclosingNode.type === "ForOfStatement")) {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleImportDeclarationComments(text, enclosingNode, precedingNode, comment, options) {
+ if (precedingNode && precedingNode.type === "ImportSpecifier" && enclosingNode && enclosingNode.type === "ImportDeclaration" && util.hasNewline(text, options.locEnd(comment))) {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleAssignmentPatternComments(enclosingNode, comment) {
+ if (enclosingNode && enclosingNode.type === "AssignmentPattern") {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleTypeAliasComments(enclosingNode, followingNode, comment) {
+ if (enclosingNode && enclosingNode.type === "TypeAlias") {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleVariableDeclaratorComments(enclosingNode, followingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "VariableDeclarator" || enclosingNode.type === "AssignmentExpression") && followingNode && (followingNode.type === "ObjectExpression" || followingNode.type === "ArrayExpression" || followingNode.type === "TemplateLiteral" || followingNode.type === "TaggedTemplateExpression")) {
+ addLeadingComment$2(followingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleTSMappedTypeComments(text, enclosingNode, precedingNode, followingNode, comment) {
+ if (!enclosingNode || enclosingNode.type !== "TSMappedType") {
+ return false;
+ }
+
+ if (followingNode && followingNode.type === "TSTypeParameter" && followingNode.name) {
+ addLeadingComment$2(followingNode.name, comment);
+ return true;
+ }
+
+ if (precedingNode && precedingNode.type === "TSTypeParameter" && precedingNode.constraint) {
+ addTrailingComment$2(precedingNode.constraint, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function isBlockComment(comment) {
+ return comment.type === "Block" || comment.type === "CommentBlock";
+}
+
+function hasLeadingComment(node) {
+ var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
+ return true;
+ };
+
+ if (node.leadingComments) {
+ return node.leadingComments.some(fn);
+ }
+
+ if (node.comments) {
+ return node.comments.some(function (comment) {
+ return comment.leading && fn(comment);
+ });
+ }
+
+ return false;
+}
+
+var comments$1 = {
+ handleOwnLineComment,
+ handleEndOfLineComment,
+ handleRemainingComment,
+ hasLeadingComment,
+ isBlockComment
+};
+
+var isBlockComment$1 = comments$1.isBlockComment,
+ hasLeadingComment$1 = comments$1.hasLeadingComment;
+var _require$$1$builders = doc.builders,
+ indent$2 = _require$$1$builders.indent,
+ join$2 = _require$$1$builders.join,
+ hardline$3 = _require$$1$builders.hardline,
+ softline$1 = _require$$1$builders.softline,
+ literalline$1 = _require$$1$builders.literalline,
+ concat$4 = _require$$1$builders.concat,
+ group$1 = _require$$1$builders.group,
+ dedentToRoot$1 = _require$$1$builders.dedentToRoot,
+ _require$$1$utils = doc.utils,
+ mapDoc$3 = _require$$1$utils.mapDoc,
+ stripTrailingHardline$1 = _require$$1$utils.stripTrailingHardline;
+
+function embed(path, print, textToDoc, options) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ var parentParent = path.getParentNode(1);
+
+ switch (node.type) {
+ case "TemplateLiteral":
+ {
+ var isCss = [isStyledJsx, isStyledComponents, isCssProp, isAngularComponentStyles].some(function (isIt) {
+ return isIt(path);
+ });
+
+ if (isCss) {
+ // Get full template literal with expressions replaced by placeholders
+ var rawQuasis = node.quasis.map(function (q) {
+ return q.value.raw;
+ });
+ var placeholderID = 0;
+ var text = rawQuasis.reduce(function (prevVal, currVal, idx) {
+ return idx == 0 ? currVal : prevVal + "@prettier-placeholder-" + placeholderID++ + "-id" + currVal;
+ }, "");
+ var doc = textToDoc(text, {
+ parser: "css"
+ });
+ return transformCssDoc(doc, path, print);
+ }
+ /*
+ * react-relay and graphql-tag
+ * graphql`...`
+ * graphql.experimental`...`
+ * gql`...`
+ *
+ * This intentionally excludes Relay Classic tags, as Prettier does not
+ * support Relay Classic formatting.
+ */
+
+
+ if (isGraphQL(path)) {
+ var expressionDocs = node.expressions ? path.map(print, "expressions") : [];
+ var numQuasis = node.quasis.length;
+
+ if (numQuasis === 1 && node.quasis[0].value.raw.trim() === "") {
+ return "``";
+ }
+
+ var parts = [];
+
+ for (var i = 0; i < numQuasis; i++) {
+ var templateElement = node.quasis[i];
+ var isFirst = i === 0;
+ var isLast = i === numQuasis - 1;
+ var _text = templateElement.value.cooked; // Bail out if any of the quasis have an invalid escape sequence
+ // (which would make the `cooked` value be `null` or `undefined`)
+
+ if (typeof _text !== "string") {
+ return null;
+ }
+
+ var lines = _text.split("\n");
+
+ var numLines = lines.length;
+ var expressionDoc = expressionDocs[i];
+ var startsWithBlankLine = numLines > 2 && lines[0].trim() === "" && lines[1].trim() === "";
+ var endsWithBlankLine = numLines > 2 && lines[numLines - 1].trim() === "" && lines[numLines - 2].trim() === "";
+ var commentsAndWhitespaceOnly = lines.every(function (line) {
+ return /^\s*(?:#[^\r\n]*)?$/.test(line);
+ }); // Bail out if an interpolation occurs within a comment.
+
+ if (!isLast && /#[^\r\n]*$/.test(lines[numLines - 1])) {
+ return null;
+ }
+
+ var _doc = null;
+
+ if (commentsAndWhitespaceOnly) {
+ _doc = printGraphqlComments(lines);
+ } else {
+ _doc = stripTrailingHardline$1(textToDoc(_text, {
+ parser: "graphql"
+ }));
+ }
+
+ if (_doc) {
+ _doc = escapeTemplateCharacters(_doc, false);
+
+ if (!isFirst && startsWithBlankLine) {
+ parts.push("");
+ }
+
+ parts.push(_doc);
+
+ if (!isLast && endsWithBlankLine) {
+ parts.push("");
+ }
+ } else if (!isFirst && !isLast && startsWithBlankLine) {
+ parts.push("");
+ }
+
+ if (expressionDoc) {
+ parts.push(concat$4(["${", expressionDoc, "}"]));
+ }
+ }
+
+ return concat$4(["`", indent$2(concat$4([hardline$3, join$2(hardline$3, parts)])), hardline$3, "`"]);
+ }
+
+ var htmlParser = isHtml(path) ? "html" : isAngularComponentTemplate(path) ? "angular" : undefined;
+
+ if (htmlParser) {
+ return printHtmlTemplateLiteral(path, print, textToDoc, htmlParser, options.embeddedInHtml);
+ }
+
+ break;
+ }
+
+ case "TemplateElement":
+ {
+ /**
+ * md`...`
+ * markdown`...`
+ */
+ if (parentParent && parentParent.type === "TaggedTemplateExpression" && parent.quasis.length === 1 && parentParent.tag.type === "Identifier" && (parentParent.tag.name === "md" || parentParent.tag.name === "markdown")) {
+ var _text2 = parent.quasis[0].value.raw.replace(/((?:\\\\)*)\\`/g, function (_, backslashes) {
+ return "\\".repeat(backslashes.length / 2) + "`";
+ });
+
+ var indentation = getIndentation(_text2);
+ var hasIndent = indentation !== "";
+ return concat$4([hasIndent ? indent$2(concat$4([softline$1, printMarkdown(_text2.replace(new RegExp(`^${indentation}`, "gm"), ""))])) : concat$4([literalline$1, dedentToRoot$1(printMarkdown(_text2))]), softline$1]);
+ }
+
+ break;
+ }
+ }
+
+ function printMarkdown(text) {
+ var doc = textToDoc(text, {
+ parser: "markdown",
+ __inJsTemplate: true
+ });
+ return stripTrailingHardline$1(escapeTemplateCharacters(doc, true));
+ }
+}
+
+function getIndentation(str) {
+ var firstMatchedIndent = str.match(/^([^\S\n]*)\S/m);
+ return firstMatchedIndent === null ? "" : firstMatchedIndent[1];
+}
+
+function uncook(cookedValue) {
+ return cookedValue.replace(/([\\`]|\$\{)/g, "\\$1");
+}
+
+function escapeTemplateCharacters(doc, raw) {
+ return mapDoc$3(doc, function (currentDoc) {
+ if (!currentDoc.parts) {
+ return currentDoc;
+ }
+
+ var parts = [];
+ currentDoc.parts.forEach(function (part) {
+ if (typeof part === "string") {
+ parts.push(raw ? part.replace(/(\\*)`/g, "$1$1\\`") : uncook(part));
+ } else {
+ parts.push(part);
+ }
+ });
+ return Object.assign({}, currentDoc, {
+ parts
+ });
+ });
+}
+
+function transformCssDoc(quasisDoc, path, print) {
+ var parentNode = path.getValue();
+ var isEmpty = parentNode.quasis.length === 1 && !parentNode.quasis[0].value.raw.trim();
+
+ if (isEmpty) {
+ return "``";
+ }
+
+ var expressionDocs = parentNode.expressions ? path.map(print, "expressions") : [];
+ var newDoc = replacePlaceholders(quasisDoc, expressionDocs);
+ /* istanbul ignore if */
+
+ if (!newDoc) {
+ throw new Error("Couldn't insert all the expressions");
+ }
+
+ return concat$4(["`", indent$2(concat$4([hardline$3, stripTrailingHardline$1(newDoc)])), softline$1, "`"]);
+} // Search all the placeholders in the quasisDoc tree
+// and replace them with the expression docs one by one
+// returns a new doc with all the placeholders replaced,
+// or null if it couldn't replace any expression
+
+
+function replacePlaceholders(quasisDoc, expressionDocs) {
+ if (!expressionDocs || !expressionDocs.length) {
+ return quasisDoc;
+ }
+
+ var expressions = expressionDocs.slice();
+ var replaceCounter = 0;
+ var newDoc = mapDoc$3(quasisDoc, function (doc) {
+ if (!doc || !doc.parts || !doc.parts.length) {
+ return doc;
+ }
+
+ var parts = doc.parts;
+ var atIndex = parts.indexOf("@");
+ var placeholderIndex = atIndex + 1;
+
+ if (atIndex > -1 && typeof parts[placeholderIndex] === "string" && parts[placeholderIndex].startsWith("prettier-placeholder")) {
+ // If placeholder is split, join it
+ var at = parts[atIndex];
+ var placeholder = parts[placeholderIndex];
+ var rest = parts.slice(placeholderIndex + 1);
+ parts = parts.slice(0, atIndex).concat([at + placeholder]).concat(rest);
+ }
+
+ var atPlaceholderIndex = parts.findIndex(function (part) {
+ return typeof part === "string" && part.startsWith("@prettier-placeholder");
+ });
+
+ if (atPlaceholderIndex > -1) {
+ var _placeholder = parts[atPlaceholderIndex];
+
+ var _rest = parts.slice(atPlaceholderIndex + 1);
+
+ var placeholderMatch = _placeholder.match(/@prettier-placeholder-(.+)-id([\s\S]*)/);
+
+ var placeholderID = placeholderMatch[1]; // When the expression has a suffix appended, like:
+ // animation: linear ${time}s ease-out;
+
+ var suffix = placeholderMatch[2];
+ var expression = expressions[placeholderID];
+ replaceCounter++;
+ parts = parts.slice(0, atPlaceholderIndex).concat(["${", expression, "}" + suffix]).concat(_rest);
+ }
+
+ return Object.assign({}, doc, {
+ parts: parts
+ });
+ });
+ return expressions.length === replaceCounter ? newDoc : null;
+}
+
+function printGraphqlComments(lines) {
+ var parts = [];
+ var seenComment = false;
+ lines.map(function (textLine) {
+ return textLine.trim();
+ }).forEach(function (textLine, i, array) {
+ // Lines are either whitespace only, or a comment (with potential whitespace
+ // around it). Drop whitespace-only lines.
+ if (textLine === "") {
+ return;
+ }
+
+ if (array[i - 1] === "" && seenComment) {
+ // If a non-first comment is preceded by a blank (whitespace only) line,
+ // add in a blank line.
+ parts.push(concat$4([hardline$3, textLine]));
+ } else {
+ parts.push(textLine);
+ }
+
+ seenComment = true;
+ }); // If `lines` was whitespace only, return `null`.
+
+ return parts.length === 0 ? null : join$2(hardline$3, parts);
+}
+/**
+ * Template literal in these contexts:
+ * <style jsx>{`div{color:red}`}</style>
+ * css``
+ * css.global``
+ * css.resolve``
+ */
+
+
+function isStyledJsx(path) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ var parentParent = path.getParentNode(1);
+ return parentParent && node.quasis && parent.type === "JSXExpressionContainer" && parentParent.type === "JSXElement" && parentParent.openingElement.name.name === "style" && parentParent.openingElement.attributes.some(function (attribute) {
+ return attribute.name.name === "jsx";
+ }) || parent && parent.type === "TaggedTemplateExpression" && parent.tag.type === "Identifier" && parent.tag.name === "css" || parent && parent.type === "TaggedTemplateExpression" && parent.tag.type === "MemberExpression" && parent.tag.object.name === "css" && (parent.tag.property.name === "global" || parent.tag.property.name === "resolve");
+}
+/**
+ * Angular Components can have:
+ * - Inline HTML template
+ * - Inline CSS styles
+ *
+ * ...which are both within template literals somewhere
+ * inside of the Component decorator factory.
+ *
+ * E.g.
+ * @Component({
+ * template: `<div>...</div>`,
+ * styles: [`h1 { color: blue; }`]
+ * })
+ */
+
+
+function isAngularComponentStyles(path) {
+ return isPathMatch(path, [function (node) {
+ return node.type === "TemplateLiteral";
+ }, function (node, name) {
+ return node.type === "ArrayExpression" && name === "elements";
+ }, function (node, name) {
+ return node.type === "Property" && node.key.type === "Identifier" && node.key.name === "styles" && name === "value";
+ }].concat(getAngularComponentObjectExpressionPredicates()));
+}
+
+function isAngularComponentTemplate(path) {
+ return isPathMatch(path, [function (node) {
+ return node.type === "TemplateLiteral";
+ }, function (node, name) {
+ return node.type === "Property" && node.key.type === "Identifier" && node.key.name === "template" && name === "value";
+ }].concat(getAngularComponentObjectExpressionPredicates()));
+}
+
+function getAngularComponentObjectExpressionPredicates() {
+ return [function (node, name) {
+ return node.type === "ObjectExpression" && name === "properties";
+ }, function (node, name) {
+ return node.type === "CallExpression" && node.callee.type === "Identifier" && node.callee.name === "Component" && name === "arguments";
+ }, function (node, name) {
+ return node.type === "Decorator" && name === "expression";
+ }];
+}
+/**
+ * styled-components template literals
+ */
+
+
+function isStyledComponents(path) {
+ var parent = path.getParentNode();
+
+ if (!parent || parent.type !== "TaggedTemplateExpression") {
+ return false;
+ }
+
+ var tag = parent.tag;
+
+ switch (tag.type) {
+ case "MemberExpression":
+ return (// styled.foo``
+ isStyledIdentifier(tag.object) || // Component.extend``
+ isStyledExtend(tag)
+ );
+
+ case "CallExpression":
+ return (// styled(Component)``
+ isStyledIdentifier(tag.callee) || tag.callee.type === "MemberExpression" && (tag.callee.object.type === "MemberExpression" && ( // styled.foo.attrs({})``
+ isStyledIdentifier(tag.callee.object.object) || // Component.extend.attrs({})``
+ isStyledExtend(tag.callee.object)) || // styled(Component).attrs({})``
+ tag.callee.object.type === "CallExpression" && isStyledIdentifier(tag.callee.object.callee))
+ );
+
+ case "Identifier":
+ // css``
+ return tag.name === "css";
+
+ default:
+ return false;
+ }
+}
+/**
+ * JSX element with CSS prop
+ */
+
+
+function isCssProp(path) {
+ var parent = path.getParentNode();
+ var parentParent = path.getParentNode(1);
+ return parentParent && parent.type === "JSXExpressionContainer" && parentParent.type === "JSXAttribute" && parentParent.name.type === "JSXIdentifier" && parentParent.name.name === "css";
+}
+
+function isStyledIdentifier(node) {
+ return node.type === "Identifier" && node.name === "styled";
+}
+
+function isStyledExtend(node) {
+ return /^[A-Z]/.test(node.object.name) && node.property.name === "extend";
+}
+/*
+ * react-relay and graphql-tag
+ * graphql`...`
+ * graphql.experimental`...`
+ * gql`...`
+ * GraphQL comment block
+ *
+ * This intentionally excludes Relay Classic tags, as Prettier does not
+ * support Relay Classic formatting.
+ */
+
+
+function isGraphQL(path) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ return hasLanguageComment(node, "GraphQL") || parent && (parent.type === "TaggedTemplateExpression" && (parent.tag.type === "MemberExpression" && parent.tag.object.name === "graphql" && parent.tag.property.name === "experimental" || parent.tag.type === "Identifier" && (parent.tag.name === "gql" || parent.tag.name === "graphql")) || parent.type === "CallExpression" && parent.callee.type === "Identifier" && parent.callee.name === "graphql");
+}
+
+function hasLanguageComment(node, languageName) {
+ // This checks for a leading comment that is exactly `/* GraphQL */`
+ // In order to be in line with other implementations of this comment tag
+ // we will not trim the comment value and we will expect exactly one space on
+ // either side of the GraphQL string
+ // Also see ./clean.js
+ return hasLeadingComment$1(node, function (comment) {
+ return isBlockComment$1(comment) && comment.value === ` ${languageName} `;
+ });
+}
+
+function isPathMatch(path, predicateStack) {
+ var stack = path.stack.slice();
+ var name = null;
+ var node = stack.pop();
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = predicateStack[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var predicate = _step.value;
+
+ if (node === undefined) {
+ return false;
+ } // skip index/array
+
+
+ if (typeof name === "number") {
+ name = stack.pop();
+ node = stack.pop();
+ }
+
+ if (!predicate(node, name)) {
+ return false;
+ }
+
+ name = stack.pop();
+ node = stack.pop();
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return true;
+}
+/**
+ * - html`...`
+ * - HTML comment block
+ */
+
+
+function isHtml(path) {
+ var node = path.getValue();
+ return hasLanguageComment(node, "HTML") || isPathMatch(path, [function (node) {
+ return node.type === "TemplateLiteral";
+ }, function (node, name) {
+ return node.type === "TaggedTemplateExpression" && node.tag.type === "Identifier" && node.tag.name === "html" && name === "quasi";
+ }]);
+} // The counter is needed to distinguish nested embeds.
+
+
+var htmlTemplateLiteralCounter = 0;
+
+function printHtmlTemplateLiteral(path, print, textToDoc, parser, escapeClosingScriptTag) {
+ var node = path.getValue();
+ var counter = htmlTemplateLiteralCounter;
+ htmlTemplateLiteralCounter = htmlTemplateLiteralCounter + 1 >>> 0;
+
+ var composePlaceholder = function composePlaceholder(index) {
+ return `PRETTIER_HTML_PLACEHOLDER_${index}_${counter}_IN_JS`;
+ };
+
+ var text = node.quasis.map(function (quasi, index, quasis) {
+ return index === quasis.length - 1 ? quasi.value.cooked : quasi.value.cooked + composePlaceholder(index);
+ }).join("");
+ var expressionDocs = path.map(print, "expressions");
+
+ if (expressionDocs.length === 0 && text.trim().length === 0) {
+ return "``";
+ }
+
+ var placeholderRegex = RegExp(composePlaceholder("(\\d+)"), "g");
+ var contentDoc = mapDoc$3(stripTrailingHardline$1(textToDoc(text, {
+ parser
+ })), function (doc) {
+ if (typeof doc !== "string") {
+ return doc;
+ }
+
+ var parts = [];
+ var components = doc.split(placeholderRegex);
+
+ for (var i = 0; i < components.length; i++) {
+ var component = components[i];
+
+ if (i % 2 === 0) {
+ if (component) {
+ component = uncook(component);
+
+ if (escapeClosingScriptTag) {
+ component = component.replace(/<\/(script)\b/gi, "<\\/$1");
+ }
+
+ parts.push(component);
+ }
+
+ continue;
+ }
+
+ var placeholderIndex = +component;
+ parts.push(concat$4(["${", group$1(expressionDocs[placeholderIndex]), "}"]));
+ }
+
+ return concat$4(parts);
+ });
+ return group$1(concat$4(["`", indent$2(concat$4([hardline$3, group$1(contentDoc)])), softline$1, "`"]));
+}
+
+var embed_1 = embed;
+
+function clean(ast, newObj, parent) {
+ ["range", "raw", "comments", "leadingComments", "trailingComments", "extra", "start", "end", "flags", "errors"].forEach(function (name) {
+ delete newObj[name];
+ });
+
+ if (ast.type === "BigIntLiteral") {
+ newObj.value = newObj.value.toLowerCase();
+ } // We remove extra `;` and add them when needed
+
+
+ if (ast.type === "EmptyStatement") {
+ return null;
+ } // We move text around, including whitespaces and add {" "}
+
+
+ if (ast.type === "JSXText") {
+ return null;
+ }
+
+ if (ast.type === "JSXExpressionContainer" && ast.expression.type === "Literal" && ast.expression.value === " ") {
+ return null;
+ } // We remove unneeded parens around same-operator LogicalExpressions
+
+
+ if (isUnbalancedLogicalTree(newObj)) {
+ return rebalanceLogicalTree(newObj);
+ } // (TypeScript) Ignore `static` in `constructor(static p) {}`
+ // and `export` in `constructor(export p) {}`
+
+
+ if (ast.type === "TSParameterProperty" && ast.accessibility === null && !ast.readonly) {
+ return {
+ type: "Identifier",
+ name: ast.parameter.name,
+ typeAnnotation: newObj.parameter.typeAnnotation,
+ decorators: newObj.decorators
+ };
+ } // (TypeScript) ignore empty `specifiers` array
+
+
+ if (ast.type === "TSNamespaceExportDeclaration" && ast.specifiers && ast.specifiers.length === 0) {
+ delete newObj.specifiers;
+ } // We convert <div></div> to <div />
+
+
+ if (ast.type === "JSXOpeningElement") {
+ delete newObj.selfClosing;
+ }
+
+ if (ast.type === "JSXElement") {
+ delete newObj.closingElement;
+ } // We change {'key': value} into {key: value}
+
+
+ if ((ast.type === "Property" || ast.type === "ObjectProperty" || ast.type === "MethodDefinition" || ast.type === "ClassProperty" || ast.type === "TSPropertySignature" || ast.type === "ObjectTypeProperty") && typeof ast.key === "object" && ast.key && (ast.key.type === "Literal" || ast.key.type === "StringLiteral" || ast.key.type === "Identifier")) {
+ delete newObj.key;
+ }
+
+ if (ast.type === "OptionalMemberExpression" && ast.optional === false) {
+ newObj.type = "MemberExpression";
+ delete newObj.optional;
+ } // Remove raw and cooked values from TemplateElement when it's CSS
+ // styled-jsx
+
+
+ if (ast.type === "JSXElement" && ast.openingElement.name.name === "style" && ast.openingElement.attributes.some(function (attr) {
+ return attr.name.name === "jsx";
+ })) {
+ var templateLiterals = newObj.children.filter(function (child) {
+ return child.type === "JSXExpressionContainer" && child.expression.type === "TemplateLiteral";
+ }).map(function (container) {
+ return container.expression;
+ });
+ var quasis = templateLiterals.reduce(function (quasis, templateLiteral) {
+ return quasis.concat(templateLiteral.quasis);
+ }, []);
+ quasis.forEach(function (q) {
+ return delete q.value;
+ });
+ } // CSS template literals in css prop
+
+
+ if (ast.type === "JSXAttribute" && ast.name.name === "css" && ast.value.type === "JSXExpressionContainer" && ast.value.expression.type === "TemplateLiteral") {
+ newObj.value.expression.quasis.forEach(function (q) {
+ return delete q.value;
+ });
+ } // Angular Components: Inline HTML template and Inline CSS styles
+
+
+ var expression = ast.expression || ast.callee;
+
+ if (ast.type === "Decorator" && expression.type === "CallExpression" && expression.callee.name === "Component" && expression.arguments.length === 1) {
+ var astProps = ast.expression.arguments[0].properties;
+ newObj.expression.arguments[0].properties.forEach(function (prop, index) {
+ var templateLiteral = null;
+
+ switch (astProps[index].key.name) {
+ case "styles":
+ if (prop.value.type === "ArrayExpression") {
+ templateLiteral = prop.value.elements[0];
+ }
+
+ break;
+
+ case "template":
+ if (prop.value.type === "TemplateLiteral") {
+ templateLiteral = prop.value;
+ }
+
+ break;
+ }
+
+ if (templateLiteral) {
+ templateLiteral.quasis.forEach(function (q) {
+ return delete q.value;
+ });
+ }
+ });
+ } // styled-components, graphql, markdown
+
+
+ if (ast.type === "TaggedTemplateExpression" && (ast.tag.type === "MemberExpression" || ast.tag.type === "Identifier" && (ast.tag.name === "gql" || ast.tag.name === "graphql" || ast.tag.name === "css" || ast.tag.name === "md" || ast.tag.name === "markdown" || ast.tag.name === "html") || ast.tag.type === "CallExpression")) {
+ newObj.quasi.quasis.forEach(function (quasi) {
+ return delete quasi.value;
+ });
+ }
+
+ if (ast.type === "TemplateLiteral") {
+ // This checks for a leading comment that is exactly `/* GraphQL */`
+ // In order to be in line with other implementations of this comment tag
+ // we will not trim the comment value and we will expect exactly one space on
+ // either side of the GraphQL string
+ // Also see ./embed.js
+ var hasLanguageComment = ast.leadingComments && ast.leadingComments.some(function (comment) {
+ return comment.type === "CommentBlock" && ["GraphQL", "HTML"].some(function (languageName) {
+ return comment.value === ` ${languageName} `;
+ });
+ });
+
+ if (hasLanguageComment || parent.type === "CallExpression" && parent.callee.name === "graphql") {
+ newObj.quasis.forEach(function (quasi) {
+ return delete quasi.value;
+ });
+ }
+ }
+}
+
+function isUnbalancedLogicalTree(newObj) {
+ return newObj.type === "LogicalExpression" && newObj.right.type === "LogicalExpression" && newObj.operator === newObj.right.operator;
+}
+
+function rebalanceLogicalTree(newObj) {
+ if (isUnbalancedLogicalTree(newObj)) {
+ return rebalanceLogicalTree({
+ type: "LogicalExpression",
+ operator: newObj.operator,
+ left: rebalanceLogicalTree({
+ type: "LogicalExpression",
+ operator: newObj.operator,
+ left: newObj.left,
+ right: newObj.right.left,
+ loc: {}
+ }),
+ right: newObj.right.right,
+ loc: {}
+ });
+ }
+
+ return newObj;
+}
+
+var clean_1 = clean;
+
+var detectNewline = createCommonjsModule(function (module) {
+
+ module.exports = function (str) {
+ if (typeof str !== 'string') {
+ throw new TypeError('Expected a string');
+ }
+
+ var newlines = str.match(/(?:\r?\n)/g) || [];
+
+ if (newlines.length === 0) {
+ return null;
+ }
+
+ var crlf = newlines.filter(function (el) {
+ return el === '\r\n';
+ }).length;
+ var lf = newlines.length - crlf;
+ return crlf > lf ? '\r\n' : '\n';
+ };
+
+ module.exports.graceful = function (str) {
+ return module.exports(str) || '\n';
+ };
+});
+var detectNewline_1 = detectNewline.graceful;
+
+var build = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, '__esModule', {
+ value: true
+ });
+ exports.extract = extract;
+ exports.strip = strip;
+ exports.parse = parse;
+ exports.parseWithComments = parseWithComments;
+ exports.print = print;
+
+ function _os() {
+ var data = os$1;
+
+ _os = function _os() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _detectNewline() {
+ var data = _interopRequireDefault(detectNewline);
+
+ _detectNewline = function _detectNewline() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+ /**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+
+ var commentEndRe = /\*\/$/;
+ var commentStartRe = /^\/\*\*/;
+ var docblockRe = /^\s*(\/\*\*?(.|\r?\n)*?\*\/)/;
+ var lineCommentRe = /(^|\s+)\/\/([^\r\n]*)/g;
+ var ltrimNewlineRe = /^(\r?\n)+/;
+ var multilineRe = /(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g;
+ var propertyRe = /(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g;
+ var stringStartRe = /(\r?\n|^) *\* ?/g;
+
+ function extract(contents) {
+ var match = contents.match(docblockRe);
+ return match ? match[0].trimLeft() : '';
+ }
+
+ function strip(contents) {
+ var match = contents.match(docblockRe);
+ return match && match[0] ? contents.substring(match[0].length) : contents;
+ }
+
+ function parse(docblock) {
+ return parseWithComments(docblock).pragmas;
+ }
+
+ function parseWithComments(docblock) {
+ var line = (0, _detectNewline().default)(docblock) || _os().EOL;
+
+ docblock = docblock.replace(commentStartRe, '').replace(commentEndRe, '').replace(stringStartRe, '$1'); // Normalize multi-line directives
+
+ var prev = '';
+
+ while (prev !== docblock) {
+ prev = docblock;
+ docblock = docblock.replace(multilineRe, `${line}$1 $2${line}`);
+ }
+
+ docblock = docblock.replace(ltrimNewlineRe, '').trimRight();
+ var result = Object.create(null);
+ var comments = docblock.replace(propertyRe, '').replace(ltrimNewlineRe, '').trimRight();
+ var match;
+
+ while (match = propertyRe.exec(docblock)) {
+ // strip linecomments from pragmas
+ var nextPragma = match[2].replace(lineCommentRe, '');
+
+ if (typeof result[match[1]] === 'string' || Array.isArray(result[match[1]])) {
+ result[match[1]] = [].concat(result[match[1]], nextPragma);
+ } else {
+ result[match[1]] = nextPragma;
+ }
+ }
+
+ return {
+ comments,
+ pragmas: result
+ };
+ }
+
+ function print(_ref) {
+ var _ref$comments = _ref.comments,
+ comments = _ref$comments === void 0 ? '' : _ref$comments,
+ _ref$pragmas = _ref.pragmas,
+ pragmas = _ref$pragmas === void 0 ? {} : _ref$pragmas;
+
+ var line = (0, _detectNewline().default)(comments) || _os().EOL;
+
+ var head = '/**';
+ var start = ' *';
+ var tail = ' */';
+ var keys = Object.keys(pragmas);
+ var printedObject = keys.map(function (key) {
+ return printKeyValues(key, pragmas[key]);
+ }).reduce(function (arr, next) {
+ return arr.concat(next);
+ }, []).map(function (keyValue) {
+ return start + ' ' + keyValue + line;
+ }).join('');
+
+ if (!comments) {
+ if (keys.length === 0) {
+ return '';
+ }
+
+ if (keys.length === 1 && !Array.isArray(pragmas[keys[0]])) {
+ var value = pragmas[keys[0]];
+ return `${head} ${printKeyValues(keys[0], value)[0]}${tail}`;
+ }
+ }
+
+ var printedComments = comments.split(line).map(function (textLine) {
+ return `${start} ${textLine}`;
+ }).join(line) + line;
+ return head + line + (comments ? printedComments : '') + (comments && keys.length ? start + line : '') + printedObject + tail;
+ }
+
+ function printKeyValues(key, valueOrArray) {
+ return [].concat(valueOrArray).map(function (value) {
+ return `@${key} ${value}`.trim();
+ });
+ }
+});
+unwrapExports(build);
+var build_1 = build.extract;
+var build_2 = build.strip;
+var build_3 = build.parse;
+var build_4 = build.parseWithComments;
+var build_5 = build.print;
+
+function hasPragma(text) {
+ var pragmas = Object.keys(build.parse(build.extract(text)));
+ return pragmas.indexOf("prettier") !== -1 || pragmas.indexOf("format") !== -1;
+}
+
+function insertPragma(text) {
+ var parsedDocblock = build.parseWithComments(build.extract(text));
+ var pragmas = Object.assign({
+ format: ""
+ }, parsedDocblock.pragmas);
+ var newDocblock = build.print({
+ pragmas,
+ comments: parsedDocblock.comments.replace(/^(\s+?\r?\n)+/, "") // remove leading newlines
+
+ }).replace(/(\r\n|\r)/g, "\n"); // normalise newlines (mitigate use of os.EOL by jest-docblock)
+
+ var strippedText = build.strip(text);
+ var separatingNewlines = strippedText.startsWith("\n") ? "\n" : "\n\n";
+ return newDocblock + separatingNewlines + strippedText;
+}
+
+var pragma = {
+ hasPragma,
+ insertPragma
+};
+
+var getLast$1 = util.getLast,
+ hasNewline$2 = util.hasNewline,
+ hasNewlineInRange$1 = util.hasNewlineInRange,
+ hasIgnoreComment$1 = util.hasIgnoreComment,
+ hasNodeIgnoreComment$1 = util.hasNodeIgnoreComment,
+ skipWhitespace$1 = util.skipWhitespace;
+var isIdentifierName = utils$1.keyword.isIdentifierNameES5; // We match any whitespace except line terminators because
+// Flow annotation comments cannot be split across lines. For example:
+//
+// (this /*
+// : any */).foo = 5;
+//
+// is not picked up by Flow (see https://github.com/facebook/flow/issues/7050), so
+// removing the newline would create a type annotation that the user did not intend
+// to create.
+
+var NON_LINE_TERMINATING_WHITE_SPACE = "(?:(?=.)\\s)";
+var FLOW_SHORTHAND_ANNOTATION = new RegExp(`^${NON_LINE_TERMINATING_WHITE_SPACE}*:`);
+var FLOW_ANNOTATION = new RegExp(`^${NON_LINE_TERMINATING_WHITE_SPACE}*::`);
+
+function hasFlowShorthandAnnotationComment(node) {
+ // https://flow.org/en/docs/types/comments/
+ // Syntax example: const r = new (window.Request /*: Class<Request> */)("");
+ return node.extra && node.extra.parenthesized && node.trailingComments && node.trailingComments[0].value.match(FLOW_SHORTHAND_ANNOTATION);
+}
+
+function hasFlowAnnotationComment(comments) {
+ return comments && comments[0].value.match(FLOW_ANNOTATION);
+}
+
+function hasNode(node, fn) {
+ if (!node || typeof node !== "object") {
+ return false;
+ }
+
+ if (Array.isArray(node)) {
+ return node.some(function (value) {
+ return hasNode(value, fn);
+ });
+ }
+
+ var result = fn(node);
+ return typeof result === "boolean" ? result : Object.keys(node).some(function (key) {
+ return hasNode(node[key], fn);
+ });
+}
+
+function hasNakedLeftSide(node) {
+ return node.type === "AssignmentExpression" || node.type === "BinaryExpression" || node.type === "LogicalExpression" || node.type === "NGPipeExpression" || node.type === "ConditionalExpression" || node.type === "CallExpression" || node.type === "OptionalCallExpression" || node.type === "MemberExpression" || node.type === "OptionalMemberExpression" || node.type === "SequenceExpression" || node.type === "TaggedTemplateExpression" || node.type === "BindExpression" || node.type === "UpdateExpression" && !node.prefix || node.type === "TSAsExpression" || node.type === "TSNonNullExpression";
+}
+
+function getLeftSide(node) {
+ if (node.expressions) {
+ return node.expressions[0];
+ }
+
+ return node.left || node.test || node.callee || node.object || node.tag || node.argument || node.expression;
+}
+
+function getLeftSidePathName(path, node) {
+ if (node.expressions) {
+ return ["expressions", 0];
+ }
+
+ if (node.left) {
+ return ["left"];
+ }
+
+ if (node.test) {
+ return ["test"];
+ }
+
+ if (node.object) {
+ return ["object"];
+ }
+
+ if (node.callee) {
+ return ["callee"];
+ }
+
+ if (node.tag) {
+ return ["tag"];
+ }
+
+ if (node.argument) {
+ return ["argument"];
+ }
+
+ if (node.expression) {
+ return ["expression"];
+ }
+
+ throw new Error("Unexpected node has no left side", node);
+}
+
+function isLiteral(node) {
+ return node.type === "BooleanLiteral" || node.type === "DirectiveLiteral" || node.type === "Literal" || node.type === "NullLiteral" || node.type === "NumericLiteral" || node.type === "RegExpLiteral" || node.type === "StringLiteral" || node.type === "TemplateLiteral" || node.type === "TSTypeLiteral" || node.type === "JSXText";
+}
+
+function isNumericLiteral(node) {
+ return node.type === "NumericLiteral" || node.type === "Literal" && typeof node.value === "number";
+}
+
+function isStringLiteral(node) {
+ return node.type === "StringLiteral" || node.type === "Literal" && typeof node.value === "string";
+}
+
+function isObjectType(n) {
+ return n.type === "ObjectTypeAnnotation" || n.type === "TSTypeLiteral";
+}
+
+function isFunctionOrArrowExpression(node) {
+ return node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression";
+}
+
+function isFunctionOrArrowExpressionWithBody(node) {
+ return node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression" && node.body.type === "BlockStatement";
+}
+
+function isTemplateLiteral(node) {
+ return node.type === "TemplateLiteral";
+} // `inject` is used in AngularJS 1.x, `async` in Angular 2+
+// example: https://docs.angularjs.org/guide/unit-testing#using-beforeall-
+
+
+function isAngularTestWrapper(node) {
+ return (node.type === "CallExpression" || node.type === "OptionalCallExpression") && node.callee.type === "Identifier" && (node.callee.name === "async" || node.callee.name === "inject" || node.callee.name === "fakeAsync");
+}
+
+function isJSXNode(node) {
+ return node.type === "JSXElement" || node.type === "JSXFragment";
+}
+
+function isTheOnlyJSXElementInMarkdown(options, path) {
+ if (options.parentParser !== "markdown" && options.parentParser !== "mdx") {
+ return false;
+ }
+
+ var node = path.getNode();
+
+ if (!node.expression || !isJSXNode(node.expression)) {
+ return false;
+ }
+
+ var parent = path.getParentNode();
+ return parent.type === "Program" && parent.body.length == 1;
+} // Detect an expression node representing `{" "}`
+
+
+function isJSXWhitespaceExpression(node) {
+ return node.type === "JSXExpressionContainer" && isLiteral(node.expression) && node.expression.value === " " && !node.expression.comments;
+}
+
+function isMemberExpressionChain(node) {
+ if (node.type !== "MemberExpression" && node.type !== "OptionalMemberExpression") {
+ return false;
+ }
+
+ if (node.object.type === "Identifier") {
+ return true;
+ }
+
+ return isMemberExpressionChain(node.object);
+}
+
+function isGetterOrSetter(node) {
+ return node.kind === "get" || node.kind === "set";
+}
+
+function sameLocStart(nodeA, nodeB, options) {
+ return options.locStart(nodeA) === options.locStart(nodeB);
+} // TODO: This is a bad hack and we need a better way to distinguish between
+// arrow functions and otherwise
+
+
+function isFunctionNotation(node, options) {
+ return isGetterOrSetter(node) || sameLocStart(node, node.value, options);
+} // Hack to differentiate between the following two which have the same ast
+// type T = { method: () => void };
+// type T = { method(): void };
+
+
+function isObjectTypePropertyAFunction(node, options) {
+ return (node.type === "ObjectTypeProperty" || node.type === "ObjectTypeInternalSlot") && node.value.type === "FunctionTypeAnnotation" && !node.static && !isFunctionNotation(node, options);
+} // Hack to differentiate between the following two which have the same ast
+// declare function f(a): void;
+// var f: (a) => void;
+
+
+function isTypeAnnotationAFunction(node, options) {
+ return (node.type === "TypeAnnotation" || node.type === "TSTypeAnnotation") && node.typeAnnotation.type === "FunctionTypeAnnotation" && !node.static && !sameLocStart(node, node.typeAnnotation, options);
+}
+
+function isBinaryish(node) {
+ return node.type === "BinaryExpression" || node.type === "LogicalExpression" || node.type === "NGPipeExpression";
+}
+
+function isMemberish(node) {
+ return node.type === "MemberExpression" || node.type === "OptionalMemberExpression" || node.type === "BindExpression" && node.object;
+}
+
+function isSimpleFlowType(node) {
+ var flowTypeAnnotations = ["AnyTypeAnnotation", "NullLiteralTypeAnnotation", "GenericTypeAnnotation", "ThisTypeAnnotation", "NumberTypeAnnotation", "VoidTypeAnnotation", "EmptyTypeAnnotation", "MixedTypeAnnotation", "BooleanTypeAnnotation", "BooleanLiteralTypeAnnotation", "StringTypeAnnotation"];
+ return node && flowTypeAnnotations.indexOf(node.type) !== -1 && !(node.type === "GenericTypeAnnotation" && node.typeParameters);
+}
+
+var unitTestRe = /^(skip|[fx]?(it|describe|test))$/;
+
+function isSkipOrOnlyBlock(node) {
+ return (node.callee.type === "MemberExpression" || node.callee.type === "OptionalMemberExpression") && node.callee.object.type === "Identifier" && node.callee.property.type === "Identifier" && unitTestRe.test(node.callee.object.name) && (node.callee.property.name === "only" || node.callee.property.name === "skip");
+}
+
+function isUnitTestSetUp(n) {
+ var unitTestSetUpRe = /^(before|after)(Each|All)$/;
+ return n.callee.type === "Identifier" && unitTestSetUpRe.test(n.callee.name) && n.arguments.length === 1;
+} // eg; `describe("some string", (done) => {})`
+
+
+function isTestCall(n, parent) {
+ if (n.type !== "CallExpression") {
+ return false;
+ }
+
+ if (n.arguments.length === 1) {
+ if (isAngularTestWrapper(n) && parent && isTestCall(parent)) {
+ return isFunctionOrArrowExpression(n.arguments[0]);
+ }
+
+ if (isUnitTestSetUp(n)) {
+ return isAngularTestWrapper(n.arguments[0]);
+ }
+ } else if (n.arguments.length === 2 || n.arguments.length === 3) {
+ if ((n.callee.type === "Identifier" && unitTestRe.test(n.callee.name) || isSkipOrOnlyBlock(n)) && (isTemplateLiteral(n.arguments[0]) || isStringLiteral(n.arguments[0]))) {
+ // it("name", () => { ... }, 2500)
+ if (n.arguments[2] && !isNumericLiteral(n.arguments[2])) {
+ return false;
+ }
+
+ return (n.arguments.length === 2 ? isFunctionOrArrowExpression(n.arguments[1]) : isFunctionOrArrowExpressionWithBody(n.arguments[1]) && n.arguments[1].params.length <= 1) || isAngularTestWrapper(n.arguments[1]);
+ }
+ }
+
+ return false;
+}
+
+function hasLeadingComment$2(node) {
+ return node.comments && node.comments.some(function (comment) {
+ return comment.leading;
+ });
+}
+
+function hasTrailingComment(node) {
+ return node.comments && node.comments.some(function (comment) {
+ return comment.trailing;
+ });
+}
+
+function isCallOrOptionalCallExpression(node) {
+ return node.type === "CallExpression" || node.type === "OptionalCallExpression";
+}
+
+function hasDanglingComments(node) {
+ return node.comments && node.comments.some(function (comment) {
+ return !comment.leading && !comment.trailing;
+ });
+}
+/** identify if an angular expression seems to have side effects */
+
+
+function hasNgSideEffect(path) {
+ return hasNode(path.getValue(), function (node) {
+ switch (node.type) {
+ case undefined:
+ return false;
+
+ case "CallExpression":
+ case "OptionalCallExpression":
+ case "AssignmentExpression":
+ return true;
+ }
+ });
+}
+
+function isNgForOf(node, index, parentNode) {
+ return node.type === "NGMicrosyntaxKeyedExpression" && node.key.name === "of" && index === 1 && parentNode.body[0].type === "NGMicrosyntaxLet" && parentNode.body[0].value === null;
+}
+/** @param node {import("estree").TemplateLiteral} */
+
+
+function isSimpleTemplateLiteral(node) {
+ if (node.expressions.length === 0) {
+ return false;
+ }
+
+ return node.expressions.every(function (expr) {
+ // Disallow comments since printDocToString can't print them here
+ if (expr.comments) {
+ return false;
+ } // Allow `x` and `this`
+
+
+ if (expr.type === "Identifier" || expr.type === "ThisExpression") {
+ return true;
+ } // Allow `a.b.c`, `a.b[c]`, and `this.x.y`
+
+
+ if (expr.type === "MemberExpression" || expr.type === "OptionalMemberExpression") {
+ var head = expr;
+
+ while (head.type === "MemberExpression" || head.type === "OptionalMemberExpression") {
+ if (head.property.type !== "Identifier" && head.property.type !== "Literal" && head.property.type !== "StringLiteral" && head.property.type !== "NumericLiteral") {
+ return false;
+ }
+
+ head = head.object;
+
+ if (head.comments) {
+ return false;
+ }
+ }
+
+ if (head.type === "Identifier" || head.type === "ThisExpression") {
+ return true;
+ }
+
+ return false;
+ }
+
+ return false;
+ });
+}
+
+function getFlowVariance(path) {
+ if (!path.variance) {
+ return null;
+ } // Babel 7.0 currently uses variance node type, and flow should
+ // follow suit soon:
+ // https://github.com/babel/babel/issues/4722
+
+
+ var variance = path.variance.kind || path.variance;
+
+ switch (variance) {
+ case "plus":
+ return "+";
+
+ case "minus":
+ return "-";
+
+ default:
+ /* istanbul ignore next */
+ return variance;
+ }
+}
+
+function classPropMayCauseASIProblems(path) {
+ var node = path.getNode();
+
+ if (node.type !== "ClassProperty") {
+ return false;
+ }
+
+ var name = node.key && node.key.name; // this isn't actually possible yet with most parsers available today
+ // so isn't properly tested yet.
+
+ if ((name === "static" || name === "get" || name === "set") && !node.value && !node.typeAnnotation) {
+ return true;
+ }
+}
+
+function classChildNeedsASIProtection(node) {
+ if (!node) {
+ return;
+ }
+
+ if (node.static || node.accessibility // TypeScript
+ ) {
+ return false;
+ }
+
+ if (!node.computed) {
+ var name = node.key && node.key.name;
+
+ if (name === "in" || name === "instanceof") {
+ return true;
+ }
+ }
+
+ switch (node.type) {
+ case "ClassProperty":
+ case "TSAbstractClassProperty":
+ return node.computed;
+
+ case "MethodDefinition": // Flow
+
+ case "TSAbstractMethodDefinition": // TypeScript
+
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ {
+ // Babel
+ var isAsync = node.value ? node.value.async : node.async;
+ var isGenerator = node.value ? node.value.generator : node.generator;
+
+ if (isAsync || node.kind === "get" || node.kind === "set") {
+ return false;
+ }
+
+ if (node.computed || isGenerator) {
+ return true;
+ }
+
+ return false;
+ }
+
+ case "TSIndexSignature":
+ return true;
+
+ default:
+ /* istanbul ignore next */
+ return false;
+ }
+}
+
+function getTypeScriptMappedTypeModifier(tokenNode, keyword) {
+ if (tokenNode === "+") {
+ return "+" + keyword;
+ } else if (tokenNode === "-") {
+ return "-" + keyword;
+ }
+
+ return keyword;
+}
+
+function hasNewlineBetweenOrAfterDecorators(node, options) {
+ return hasNewlineInRange$1(options.originalText, options.locStart(node.decorators[0]), options.locEnd(getLast$1(node.decorators))) || hasNewline$2(options.originalText, options.locEnd(getLast$1(node.decorators)));
+} // Only space, newline, carriage return, and tab are treated as whitespace
+// inside JSX.
+
+
+var jsxWhitespaceChars = " \n\r\t";
+var matchJsxWhitespaceRegex = new RegExp("([" + jsxWhitespaceChars + "]+)");
+var containsNonJsxWhitespaceRegex = new RegExp("[^" + jsxWhitespaceChars + "]"); // Meaningful if it contains non-whitespace characters,
+// or it contains whitespace without a new line.
+
+function isMeaningfulJSXText(node) {
+ return isLiteral(node) && (containsNonJsxWhitespaceRegex.test(rawText(node)) || !/\n/.test(rawText(node)));
+}
+
+function hasJsxIgnoreComment(path) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+
+ if (!parent || !node || !isJSXNode(node) || !isJSXNode(parent)) {
+ return false;
+ } // Lookup the previous sibling, ignoring any empty JSXText elements
+
+
+ var index = parent.children.indexOf(node);
+ var prevSibling = null;
+
+ for (var i = index; i > 0; i--) {
+ var candidate = parent.children[i - 1];
+
+ if (candidate.type === "JSXText" && !isMeaningfulJSXText(candidate)) {
+ continue;
+ }
+
+ prevSibling = candidate;
+ break;
+ }
+
+ return prevSibling && prevSibling.type === "JSXExpressionContainer" && prevSibling.expression.type === "JSXEmptyExpression" && prevSibling.expression.comments && prevSibling.expression.comments.find(function (comment) {
+ return comment.value.trim() === "prettier-ignore";
+ });
+}
+
+function isEmptyJSXElement(node) {
+ if (node.children.length === 0) {
+ return true;
+ }
+
+ if (node.children.length > 1) {
+ return false;
+ } // if there is one text child and does not contain any meaningful text
+ // we can treat the element as empty.
+
+
+ var child = node.children[0];
+ return isLiteral(child) && !isMeaningfulJSXText(child);
+}
+
+function hasPrettierIgnore(path) {
+ return hasIgnoreComment$1(path) || hasJsxIgnoreComment(path);
+}
+
+function isLastStatement(path) {
+ var parent = path.getParentNode();
+
+ if (!parent) {
+ return true;
+ }
+
+ var node = path.getValue();
+ var body = (parent.body || parent.consequent).filter(function (stmt) {
+ return stmt.type !== "EmptyStatement";
+ });
+ return body && body[body.length - 1] === node;
+}
+
+function isFlowAnnotationComment(text, typeAnnotation, options) {
+ var start = options.locStart(typeAnnotation);
+ var end = skipWhitespace$1(text, options.locEnd(typeAnnotation));
+ return text.substr(start, 2) === "/*" && text.substr(end, 2) === "*/";
+}
+
+function hasLeadingOwnLineComment(text, node, options) {
+ if (isJSXNode(node)) {
+ return hasNodeIgnoreComment$1(node);
+ }
+
+ var res = node.comments && node.comments.some(function (comment) {
+ return comment.leading && hasNewline$2(text, options.locEnd(comment));
+ });
+ return res;
+} // This recurses the return argument, looking for the first token
+// (the leftmost leaf node) and, if it (or its parents) has any
+// leadingComments, returns true (so it can be wrapped in parens).
+
+
+function returnArgumentHasLeadingComment(options, argument) {
+ if (hasLeadingOwnLineComment(options.originalText, argument, options)) {
+ return true;
+ }
+
+ if (hasNakedLeftSide(argument)) {
+ var leftMost = argument;
+ var newLeftMost;
+
+ while (newLeftMost = getLeftSide(leftMost)) {
+ leftMost = newLeftMost;
+
+ if (hasLeadingOwnLineComment(options.originalText, leftMost, options)) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+}
+
+function isStringPropSafeToCoerceToIdentifier(node, options) {
+ return isStringLiteral(node.key) && isIdentifierName(node.key.value) && options.parser !== "json" && !(options.parser === "typescript" && node.type === "ClassProperty");
+}
+
+function isJestEachTemplateLiteral(node, parentNode) {
+ /**
+ * describe.each`table`(name, fn)
+ * describe.only.each`table`(name, fn)
+ * describe.skip.each`table`(name, fn)
+ * test.each`table`(name, fn)
+ * test.only.each`table`(name, fn)
+ * test.skip.each`table`(name, fn)
+ *
+ * Ref: https://github.com/facebook/jest/pull/6102
+ */
+ var jestEachTriggerRegex = /^[xf]?(describe|it|test)$/;
+ return parentNode.type === "TaggedTemplateExpression" && parentNode.quasi === node && parentNode.tag.type === "MemberExpression" && parentNode.tag.property.type === "Identifier" && parentNode.tag.property.name === "each" && (parentNode.tag.object.type === "Identifier" && jestEachTriggerRegex.test(parentNode.tag.object.name) || parentNode.tag.object.type === "MemberExpression" && parentNode.tag.object.property.type === "Identifier" && (parentNode.tag.object.property.name === "only" || parentNode.tag.object.property.name === "skip") && parentNode.tag.object.object.type === "Identifier" && jestEachTriggerRegex.test(parentNode.tag.object.object.name));
+}
+
+function templateLiteralHasNewLines(template) {
+ return template.quasis.some(function (quasi) {
+ return quasi.value.raw.includes("\n");
+ });
+}
+
+function isTemplateOnItsOwnLine(n, text, options) {
+ return (n.type === "TemplateLiteral" && templateLiteralHasNewLines(n) || n.type === "TaggedTemplateExpression" && templateLiteralHasNewLines(n.quasi)) && !hasNewline$2(text, options.locStart(n), {
+ backwards: true
+ });
+}
+
+function needsHardlineAfterDanglingComment(node) {
+ if (!node.comments) {
+ return false;
+ }
+
+ var lastDanglingComment = getLast$1(node.comments.filter(function (comment) {
+ return !comment.leading && !comment.trailing;
+ }));
+ return lastDanglingComment && !comments$1.isBlockComment(lastDanglingComment);
+} // If we have nested conditional expressions, we want to print them in JSX mode
+// if there's at least one JSXElement somewhere in the tree.
+//
+// A conditional expression chain like this should be printed in normal mode,
+// because there aren't JSXElements anywhere in it:
+//
+// isA ? "A" : isB ? "B" : isC ? "C" : "Unknown";
+//
+// But a conditional expression chain like this should be printed in JSX mode,
+// because there is a JSXElement in the last ConditionalExpression:
+//
+// isA ? "A" : isB ? "B" : isC ? "C" : <span className="warning">Unknown</span>;
+//
+// This type of ConditionalExpression chain is structured like this in the AST:
+//
+// ConditionalExpression {
+// test: ...,
+// consequent: ...,
+// alternate: ConditionalExpression {
+// test: ...,
+// consequent: ...,
+// alternate: ConditionalExpression {
+// test: ...,
+// consequent: ...,
+// alternate: ...,
+// }
+// }
+// }
+//
+// We want to traverse over that shape and convert it into a flat structure so
+// that we can find if there's a JSXElement somewhere inside.
+
+
+function getConditionalChainContents(node) {
+ // Given this code:
+ //
+ // // Using a ConditionalExpression as the consequent is uncommon, but should
+ // // be handled.
+ // A ? B : C ? D : E ? F ? G : H : I
+ //
+ // which has this AST:
+ //
+ // ConditionalExpression {
+ // test: Identifier(A),
+ // consequent: Identifier(B),
+ // alternate: ConditionalExpression {
+ // test: Identifier(C),
+ // consequent: Identifier(D),
+ // alternate: ConditionalExpression {
+ // test: Identifier(E),
+ // consequent: ConditionalExpression {
+ // test: Identifier(F),
+ // consequent: Identifier(G),
+ // alternate: Identifier(H),
+ // },
+ // alternate: Identifier(I),
+ // }
+ // }
+ // }
+ //
+ // we should return this Array:
+ //
+ // [
+ // Identifier(A),
+ // Identifier(B),
+ // Identifier(C),
+ // Identifier(D),
+ // Identifier(E),
+ // Identifier(F),
+ // Identifier(G),
+ // Identifier(H),
+ // Identifier(I)
+ // ];
+ //
+ // This loses the information about whether each node was the test,
+ // consequent, or alternate, but we don't care about that here- we are only
+ // flattening this structure to find if there's any JSXElements inside.
+ var nonConditionalExpressions = [];
+
+ function recurse(node) {
+ if (node.type === "ConditionalExpression") {
+ recurse(node.test);
+ recurse(node.consequent);
+ recurse(node.alternate);
+ } else {
+ nonConditionalExpressions.push(node);
+ }
+ }
+
+ recurse(node);
+ return nonConditionalExpressions;
+}
+
+function conditionalExpressionChainContainsJSX(node) {
+ return Boolean(getConditionalChainContents(node).find(isJSXNode));
+} // Logic to check for args with multiple anonymous functions. For instance,
+// the following call should be split on multiple lines for readability:
+// source.pipe(map((x) => x + x), filter((x) => x % 2 === 0))
+
+
+function isFunctionCompositionArgs(args) {
+ if (args.length <= 1) {
+ return false;
+ }
+
+ var count = 0;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = args[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var arg = _step.value;
+
+ if (isFunctionOrArrowExpression(arg)) {
+ count += 1;
+
+ if (count > 1) {
+ return true;
+ }
+ } else if (isCallOrOptionalCallExpression(arg)) {
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = arg.arguments[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var childArg = _step2.value;
+
+ if (isFunctionOrArrowExpression(childArg)) {
+ return true;
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return false;
+} // Logic to determine if a call is a “long curried function call”.
+// See https://github.com/prettier/prettier/issues/1420.
+//
+// `connect(a, b, c)(d)`
+// In the above call expression, the second call is the parent node and the
+// first call is the current node.
+
+
+function isLongCurriedCallExpression(path) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ return isCallOrOptionalCallExpression(node) && isCallOrOptionalCallExpression(parent) && parent.callee === node && node.arguments.length > parent.arguments.length && parent.arguments.length > 0;
+}
+
+function rawText(node) {
+ return node.extra ? node.extra.raw : node.raw;
+}
+
+function identity(x) {
+ return x;
+}
+
+function isTSXFile(options) {
+ return options.filepath && /\.tsx$/i.test(options.filepath);
+}
+
+var utils$2 = {
+ classChildNeedsASIProtection,
+ classPropMayCauseASIProblems,
+ conditionalExpressionChainContainsJSX,
+ getFlowVariance,
+ getLeftSidePathName,
+ getTypeScriptMappedTypeModifier,
+ hasDanglingComments,
+ hasFlowAnnotationComment,
+ hasFlowShorthandAnnotationComment,
+ hasLeadingComment: hasLeadingComment$2,
+ hasLeadingOwnLineComment,
+ hasNakedLeftSide,
+ hasNewlineBetweenOrAfterDecorators,
+ hasNgSideEffect,
+ hasNode,
+ hasPrettierIgnore,
+ hasTrailingComment,
+ identity,
+ isBinaryish,
+ isCallOrOptionalCallExpression,
+ isEmptyJSXElement,
+ isFlowAnnotationComment,
+ isFunctionCompositionArgs,
+ isFunctionNotation,
+ isFunctionOrArrowExpression,
+ isGetterOrSetter,
+ isJestEachTemplateLiteral,
+ isJSXNode,
+ isJSXWhitespaceExpression,
+ isLastStatement,
+ isLiteral,
+ isLongCurriedCallExpression,
+ isMeaningfulJSXText,
+ isMemberExpressionChain,
+ isMemberish,
+ isNgForOf,
+ isNumericLiteral,
+ isObjectType,
+ isObjectTypePropertyAFunction,
+ isSimpleFlowType,
+ isSimpleTemplateLiteral,
+ isStringLiteral,
+ isStringPropSafeToCoerceToIdentifier,
+ isTemplateOnItsOwnLine,
+ isTestCall,
+ isTheOnlyJSXElementInMarkdown,
+ isTSXFile,
+ isTypeAnnotationAFunction,
+ matchJsxWhitespaceRegex,
+ needsHardlineAfterDanglingComment,
+ rawText,
+ returnArgumentHasLeadingComment
+};
+
+var getLeftSidePathName$1 = utils$2.getLeftSidePathName,
+ hasFlowShorthandAnnotationComment$1 = utils$2.hasFlowShorthandAnnotationComment,
+ hasNakedLeftSide$1 = utils$2.hasNakedLeftSide,
+ hasNode$1 = utils$2.hasNode;
+
+function hasClosureCompilerTypeCastComment(text, path) {
+ // https://github.com/google/closure-compiler/wiki/Annotating-Types#type-casts
+ // Syntax example: var x = /** @type {string} */ (fruit);
+ var n = path.getValue();
+ return isParenthesized(n) && (hasTypeCastComment(n) || hasAncestorTypeCastComment(0)); // for sub-item: /** @type {array} */ (numberOrString).map(x => x);
+
+ function hasAncestorTypeCastComment(index) {
+ var ancestor = path.getParentNode(index);
+ return ancestor && !isParenthesized(ancestor) ? hasTypeCastComment(ancestor) || hasAncestorTypeCastComment(index + 1) : false;
+ }
+
+ function hasTypeCastComment(node) {
+ return node.comments && node.comments.some(function (comment) {
+ return comment.leading && comments$1.isBlockComment(comment) && isTypeCastComment(comment.value);
+ });
+ }
+
+ function isParenthesized(node) {
+ // Closure typecast comments only really make sense when _not_ using
+ // typescript or flow parsers, so we take advantage of the babel parser's
+ // parenthesized expressions.
+ return node.extra && node.extra.parenthesized;
+ }
+
+ function isTypeCastComment(comment) {
+ var cleaned = comment.trim().split("\n").map(function (line) {
+ return line.replace(/^[\s*]+/, "");
+ }).join(" ").trim();
+
+ if (!/^@type\s*\{[^]+\}$/.test(cleaned)) {
+ return false;
+ }
+
+ var isCompletelyClosed = false;
+ var unpairedBracketCount = 0;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = cleaned[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var char = _step.value;
+
+ if (char === "{") {
+ if (isCompletelyClosed) {
+ return false;
+ }
+
+ unpairedBracketCount++;
+ } else if (char === "}") {
+ if (unpairedBracketCount === 0) {
+ return false;
+ }
+
+ unpairedBracketCount--;
+
+ if (unpairedBracketCount === 0) {
+ isCompletelyClosed = true;
+ }
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return unpairedBracketCount === 0;
+ }
+}
+
+function needsParens(path, options) {
+ var parent = path.getParentNode();
+
+ if (!parent) {
+ return false;
+ }
+
+ var name = path.getName();
+ var node = path.getNode(); // If the value of this path is some child of a Node and not a Node
+ // itself, then it doesn't need parentheses. Only Node objects (in
+ // fact, only Expression nodes) need parentheses.
+
+ if (path.getValue() !== node) {
+ return false;
+ } // to avoid unexpected `}}` in HTML interpolations
+
+
+ if (options.__isInHtmlInterpolation && !options.bracketSpacing && endsWithRightBracket(node) && isFollowedByRightBracket(path)) {
+ return true;
+ } // Only statements don't need parentheses.
+
+
+ if (isStatement(node)) {
+ return false;
+ } // Closure compiler requires that type casted expressions to be surrounded by
+ // parentheses.
+
+
+ if (hasClosureCompilerTypeCastComment(options.originalText, path)) {
+ return true;
+ }
+
+ if ( // Preserve parens if we have a Flow annotation comment, unless we're using the Flow
+ // parser. The Flow parser turns Flow comments into type annotation nodes in its
+ // AST, which we handle separately.
+ options.parser !== "flow" && hasFlowShorthandAnnotationComment$1(path.getValue())) {
+ return true;
+ } // Identifiers never need parentheses.
+
+
+ if (node.type === "Identifier") {
+ // ...unless those identifiers are embed placeholders. They might be substituted by complex
+ // expressions, so the parens around them should not be dropped. Example (JS-in-HTML-in-JS):
+ // let tpl = html`<script> f((${expr}) / 2); </script>`;
+ // If the inner JS formatter removes the parens, the expression might change its meaning:
+ // f((a + b) / 2) vs f(a + b / 2)
+ if (node.extra && node.extra.parenthesized && /^PRETTIER_HTML_PLACEHOLDER_\d+_\d+_IN_JS$/.test(node.name)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ if (parent.type === "ParenthesizedExpression") {
+ return false;
+ } // Add parens around the extends clause of a class. It is needed for almost
+ // all expressions.
+
+
+ if ((parent.type === "ClassDeclaration" || parent.type === "ClassExpression") && parent.superClass === node && (node.type === "ArrowFunctionExpression" || node.type === "AssignmentExpression" || node.type === "AwaitExpression" || node.type === "BinaryExpression" || node.type === "ConditionalExpression" || node.type === "LogicalExpression" || node.type === "NewExpression" || node.type === "ObjectExpression" || node.type === "ParenthesizedExpression" || node.type === "SequenceExpression" || node.type === "TaggedTemplateExpression" || node.type === "UnaryExpression" || node.type === "UpdateExpression" || node.type === "YieldExpression")) {
+ return true;
+ } // `export default function` or `export default class` can't be followed by
+ // anything after. So an expression like `export default (function(){}).toString()`
+ // needs to be followed by a parentheses
+
+
+ if (parent.type === "ExportDefaultDeclaration") {
+ return shouldWrapFunctionForExportDefault(path, options);
+ }
+
+ if (parent.type === "Decorator" && parent.expression === node) {
+ var hasCallExpression = false;
+ var hasMemberExpression = false;
+ var current = node;
+
+ while (current) {
+ switch (current.type) {
+ case "MemberExpression":
+ hasMemberExpression = true;
+ current = current.object;
+ break;
+
+ case "CallExpression":
+ if (
+ /** @(x().y) */
+ hasMemberExpression ||
+ /** @(x().y()) */
+ hasCallExpression) {
+ return true;
+ }
+
+ hasCallExpression = true;
+ current = current.callee;
+ break;
+
+ case "Identifier":
+ return false;
+
+ default:
+ return true;
+ }
+ }
+
+ return true;
+ }
+
+ if (parent.type === "ArrowFunctionExpression" && parent.body === node && node.type !== "SequenceExpression" && // these have parens added anyway
+ util.startsWithNoLookaheadToken(node,
+ /* forbidFunctionClassAndDoExpr */
+ false) || parent.type === "ExpressionStatement" && util.startsWithNoLookaheadToken(node,
+ /* forbidFunctionClassAndDoExpr */
+ true)) {
+ return true;
+ }
+
+ switch (node.type) {
+ case "SpreadElement":
+ case "SpreadProperty":
+ return parent.type === "MemberExpression" && name === "object" && parent.object === node;
+
+ case "UpdateExpression":
+ if (parent.type === "UnaryExpression") {
+ return node.prefix && (node.operator === "++" && parent.operator === "+" || node.operator === "--" && parent.operator === "-");
+ }
+
+ // else fallthrough
+
+ case "UnaryExpression":
+ switch (parent.type) {
+ case "UnaryExpression":
+ return node.operator === parent.operator && (node.operator === "+" || node.operator === "-");
+
+ case "BindExpression":
+ return true;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return name === "object";
+
+ case "TaggedTemplateExpression":
+ return true;
+
+ case "NewExpression":
+ case "CallExpression":
+ case "OptionalCallExpression":
+ return name === "callee";
+
+ case "BinaryExpression":
+ return parent.operator === "**" && name === "left";
+
+ case "TSNonNullExpression":
+ return true;
+
+ default:
+ return false;
+ }
+
+ case "BinaryExpression":
+ {
+ if (parent.type === "UpdateExpression") {
+ return true;
+ }
+
+ var isLeftOfAForStatement = function isLeftOfAForStatement(node) {
+ var i = 0;
+
+ while (node) {
+ var _parent = path.getParentNode(i++);
+
+ if (!_parent) {
+ return false;
+ }
+
+ if (_parent.type === "ForStatement" && _parent.init === node) {
+ return true;
+ }
+
+ node = _parent;
+ }
+
+ return false;
+ };
+
+ if (node.operator === "in" && isLeftOfAForStatement(node)) {
+ return true;
+ }
+ }
+ // fallthrough
+
+ case "TSTypeAssertion":
+ case "TSAsExpression":
+ case "LogicalExpression":
+ switch (parent.type) {
+ case "ConditionalExpression":
+ return node.type === "TSAsExpression";
+
+ case "CallExpression":
+ case "NewExpression":
+ case "OptionalCallExpression":
+ return name === "callee";
+
+ case "ClassExpression":
+ case "ClassDeclaration":
+ return name === "superClass" && parent.superClass === node;
+
+ case "TSTypeAssertion":
+ case "TaggedTemplateExpression":
+ case "UnaryExpression":
+ case "JSXSpreadAttribute":
+ case "SpreadElement":
+ case "SpreadProperty":
+ case "BindExpression":
+ case "AwaitExpression":
+ case "TSAsExpression":
+ case "TSNonNullExpression":
+ case "UpdateExpression":
+ return true;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return name === "object";
+
+ case "AssignmentExpression":
+ return parent.left === node && (node.type === "TSTypeAssertion" || node.type === "TSAsExpression");
+
+ case "LogicalExpression":
+ if (node.type === "LogicalExpression") {
+ return parent.operator !== node.operator;
+ }
+
+ // else fallthrough
+
+ case "BinaryExpression":
+ {
+ if (!node.operator && node.type !== "TSTypeAssertion") {
+ return true;
+ }
+
+ var po = parent.operator;
+ var pp = util.getPrecedence(po);
+ var no = node.operator;
+ var np = util.getPrecedence(no);
+
+ if (pp > np) {
+ return true;
+ }
+
+ if (pp === np && name === "right") {
+ assert$1.strictEqual(parent.right, node);
+ return true;
+ }
+
+ if (pp === np && !util.shouldFlatten(po, no)) {
+ return true;
+ }
+
+ if (pp < np && no === "%") {
+ return po === "+" || po === "-";
+ } // Add parenthesis when working with bitwise operators
+ // It's not strictly needed but helps with code understanding
+
+
+ if (util.isBitwiseOperator(po)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ default:
+ return false;
+ }
+
+ case "SequenceExpression":
+ switch (parent.type) {
+ case "ReturnStatement":
+ return false;
+
+ case "ForStatement":
+ // Although parentheses wouldn't hurt around sequence
+ // expressions in the head of for loops, traditional style
+ // dictates that e.g. i++, j++ should not be wrapped with
+ // parentheses.
+ return false;
+
+ case "ExpressionStatement":
+ return name !== "expression";
+
+ case "ArrowFunctionExpression":
+ // We do need parentheses, but SequenceExpressions are handled
+ // specially when printing bodies of arrow functions.
+ return name !== "body";
+
+ default:
+ // Otherwise err on the side of overparenthesization, adding
+ // explicit exceptions above if this proves overzealous.
+ return true;
+ }
+
+ case "YieldExpression":
+ if (parent.type === "UnaryExpression" || parent.type === "AwaitExpression" || parent.type === "TSAsExpression" || parent.type === "TSNonNullExpression") {
+ return true;
+ }
+
+ // else fallthrough
+
+ case "AwaitExpression":
+ switch (parent.type) {
+ case "TaggedTemplateExpression":
+ case "UnaryExpression":
+ case "BinaryExpression":
+ case "LogicalExpression":
+ case "SpreadElement":
+ case "SpreadProperty":
+ case "TSAsExpression":
+ case "TSNonNullExpression":
+ case "BindExpression":
+ return true;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return name === "object";
+
+ case "NewExpression":
+ case "CallExpression":
+ case "OptionalCallExpression":
+ return name === "callee";
+
+ case "ConditionalExpression":
+ return parent.test === node;
+
+ default:
+ return false;
+ }
+
+ case "TSConditionalType":
+ if (parent.type === "TSConditionalType" && node === parent.extendsType) {
+ return true;
+ }
+
+ // fallthrough
+
+ case "TSFunctionType":
+ case "TSConstructorType":
+ if (parent.type === "TSConditionalType" && node === parent.checkType) {
+ return true;
+ }
+
+ // fallthrough
+
+ case "TSUnionType":
+ case "TSIntersectionType":
+ if (parent.type === "TSUnionType" || parent.type === "TSIntersectionType") {
+ return true;
+ }
+
+ // fallthrough
+
+ case "TSTypeOperator":
+ case "TSInferType":
+ return parent.type === "TSArrayType" || parent.type === "TSOptionalType" || parent.type === "TSRestType" || parent.type === "TSIndexedAccessType" && node === parent.objectType || parent.type === "TSTypeOperator";
+
+ case "ArrayTypeAnnotation":
+ return parent.type === "NullableTypeAnnotation";
+
+ case "IntersectionTypeAnnotation":
+ case "UnionTypeAnnotation":
+ return parent.type === "ArrayTypeAnnotation" || parent.type === "NullableTypeAnnotation" || parent.type === "IntersectionTypeAnnotation" || parent.type === "UnionTypeAnnotation";
+
+ case "NullableTypeAnnotation":
+ return parent.type === "ArrayTypeAnnotation";
+
+ case "FunctionTypeAnnotation":
+ {
+ var ancestor = parent.type === "NullableTypeAnnotation" ? path.getParentNode(1) : parent;
+ return ancestor.type === "UnionTypeAnnotation" || ancestor.type === "IntersectionTypeAnnotation" || ancestor.type === "ArrayTypeAnnotation" || // We should check ancestor's parent to know whether the parentheses
+ // are really needed, but since ??T doesn't make sense this check
+ // will almost never be true.
+ ancestor.type === "NullableTypeAnnotation";
+ }
+
+ case "StringLiteral":
+ case "NumericLiteral":
+ case "Literal":
+ if (typeof node.value === "string" && parent.type === "ExpressionStatement" && ( // TypeScript workaround for https://github.com/JamesHenry/typescript-estree/issues/2
+ // See corresponding workaround in printer.js case: "Literal"
+ options.parser !== "typescript" && !parent.directive || options.parser === "typescript" && options.originalText.substr(options.locStart(node) - 1, 1) === "(")) {
+ // To avoid becoming a directive
+ var grandParent = path.getParentNode(1);
+ return grandParent.type === "Program" || grandParent.type === "BlockStatement";
+ }
+
+ return parent.type === "MemberExpression" && typeof node.value === "number" && name === "object" && parent.object === node;
+
+ case "AssignmentExpression":
+ {
+ var _grandParent = path.getParentNode(1);
+
+ if (parent.type === "ArrowFunctionExpression" && parent.body === node) {
+ return true;
+ } else if (parent.type === "ClassProperty" && parent.key === node && parent.computed) {
+ return false;
+ } else if (parent.type === "TSPropertySignature" && parent.name === node) {
+ return false;
+ } else if (parent.type === "ForStatement" && (parent.init === node || parent.update === node)) {
+ return false;
+ } else if (parent.type === "ExpressionStatement") {
+ return node.left.type === "ObjectPattern";
+ } else if (parent.type === "TSPropertySignature" && parent.key === node) {
+ return false;
+ } else if (parent.type === "AssignmentExpression") {
+ return false;
+ } else if (parent.type === "SequenceExpression" && _grandParent && _grandParent.type === "ForStatement" && (_grandParent.init === parent || _grandParent.update === parent)) {
+ return false;
+ } else if (parent.type === "Property" && parent.value === node) {
+ return false;
+ } else if (parent.type === "NGChainedExpression") {
+ return false;
+ }
+
+ return true;
+ }
+
+ case "ConditionalExpression":
+ switch (parent.type) {
+ case "TaggedTemplateExpression":
+ case "UnaryExpression":
+ case "SpreadElement":
+ case "SpreadProperty":
+ case "BinaryExpression":
+ case "LogicalExpression":
+ case "NGPipeExpression":
+ case "ExportDefaultDeclaration":
+ case "AwaitExpression":
+ case "JSXSpreadAttribute":
+ case "TSTypeAssertion":
+ case "TypeCastExpression":
+ case "TSAsExpression":
+ case "TSNonNullExpression":
+ return true;
+
+ case "NewExpression":
+ case "CallExpression":
+ case "OptionalCallExpression":
+ return name === "callee";
+
+ case "ConditionalExpression":
+ return name === "test" && parent.test === node;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return name === "object";
+
+ default:
+ return false;
+ }
+
+ case "FunctionExpression":
+ switch (parent.type) {
+ case "NewExpression":
+ case "CallExpression":
+ case "OptionalCallExpression":
+ // Not always necessary, but it's clearer to the reader if IIFEs are wrapped in parentheses.
+ // Is necessary if it is `expression` of `ExpressionStatement`.
+ return name === "callee";
+
+ case "TaggedTemplateExpression":
+ return true;
+ // This is basically a kind of IIFE.
+
+ default:
+ return false;
+ }
+
+ case "ArrowFunctionExpression":
+ switch (parent.type) {
+ case "NewExpression":
+ case "CallExpression":
+ case "OptionalCallExpression":
+ return name === "callee";
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return name === "object";
+
+ case "TSAsExpression":
+ case "BindExpression":
+ case "TaggedTemplateExpression":
+ case "UnaryExpression":
+ case "LogicalExpression":
+ case "BinaryExpression":
+ case "AwaitExpression":
+ case "TSTypeAssertion":
+ return true;
+
+ case "ConditionalExpression":
+ return name === "test";
+
+ default:
+ return false;
+ }
+
+ case "ClassExpression":
+ switch (parent.type) {
+ case "NewExpression":
+ return name === "callee" && parent.callee === node;
+
+ default:
+ return false;
+ }
+
+ case "OptionalMemberExpression":
+ case "OptionalCallExpression":
+ if ((parent.type === "MemberExpression" && name === "object" || parent.type === "CallExpression" && name === "callee") && // workaround for https://github.com/facebook/flow/issues/8159
+ !(options.parser === "flow" && parent.range[0] === node.range[0])) {
+ return true;
+ }
+
+ // fallthrough
+
+ case "CallExpression":
+ case "MemberExpression":
+ case "TaggedTemplateExpression":
+ case "TSNonNullExpression":
+ if ((parent.type === "BindExpression" || parent.type === "NewExpression") && name === "callee") {
+ var object = node;
+
+ while (object) {
+ switch (object.type) {
+ case "CallExpression":
+ case "OptionalCallExpression":
+ return true;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ case "BindExpression":
+ object = object.object;
+ break;
+ // tagged templates are basically member expressions from a grammar perspective
+ // see https://tc39.github.io/ecma262/#prod-MemberExpression
+
+ case "TaggedTemplateExpression":
+ object = object.tag;
+ break;
+
+ case "TSNonNullExpression":
+ object = object.expression;
+ break;
+
+ default:
+ return false;
+ }
+ }
+ }
+
+ return false;
+
+ case "BindExpression":
+ return (parent.type === "BindExpression" || parent.type === "NewExpression") && name === "callee" || (parent.type === "MemberExpression" || parent.type === "OptionalMemberExpression") && name === "object";
+
+ case "NGPipeExpression":
+ if (parent.type === "NGRoot" || parent.type === "NGMicrosyntaxExpression" || parent.type === "ObjectProperty" || parent.type === "ArrayExpression" || (parent.type === "CallExpression" || parent.type === "OptionalCallExpression") && parent.arguments[name] === node || parent.type === "NGPipeExpression" && name === "right" || parent.type === "MemberExpression" && name === "property" || parent.type === "AssignmentExpression") {
+ return false;
+ }
+
+ return true;
+
+ case "JSXFragment":
+ case "JSXElement":
+ return name === "callee" || parent.type !== "ArrayExpression" && parent.type !== "ArrowFunctionExpression" && parent.type !== "AssignmentExpression" && parent.type !== "AssignmentPattern" && parent.type !== "BinaryExpression" && parent.type !== "CallExpression" && parent.type !== "ConditionalExpression" && parent.type !== "ExpressionStatement" && parent.type !== "JsExpressionRoot" && parent.type !== "JSXAttribute" && parent.type !== "JSXElement" && parent.type !== "JSXExpressionContainer" && parent.type !== "JSXFragment" && parent.type !== "LogicalExpression" && parent.type !== "ObjectProperty" && parent.type !== "OptionalCallExpression" && parent.type !== "Property" && parent.type !== "ReturnStatement" && parent.type !== "TypeCastExpression" && parent.type !== "VariableDeclarator";
+
+ case "TypeAnnotation":
+ return name === "returnType" && parent.type === "ArrowFunctionExpression" && includesFunctionTypeInObjectType(node);
+ }
+
+ return false;
+}
+
+function isStatement(node) {
+ return node.type === "BlockStatement" || node.type === "BreakStatement" || node.type === "ClassBody" || node.type === "ClassDeclaration" || node.type === "ClassMethod" || node.type === "ClassProperty" || node.type === "ClassPrivateProperty" || node.type === "ContinueStatement" || node.type === "DebuggerStatement" || node.type === "DeclareClass" || node.type === "DeclareExportAllDeclaration" || node.type === "DeclareExportDeclaration" || node.type === "DeclareFunction" || node.type === "DeclareInterface" || node.type === "DeclareModule" || node.type === "DeclareModuleExports" || node.type === "DeclareVariable" || node.type === "DoWhileStatement" || node.type === "EnumDeclaration" || node.type === "ExportAllDeclaration" || node.type === "ExportDefaultDeclaration" || node.type === "ExportNamedDeclaration" || node.type === "ExpressionStatement" || node.type === "ForAwaitStatement" || node.type === "ForInStatement" || node.type === "ForOfStatement" || node.type === "ForStatement" || node.type === "FunctionDeclaration" || node.type === "IfStatement" || node.type === "ImportDeclaration" || node.type === "InterfaceDeclaration" || node.type === "LabeledStatement" || node.type === "MethodDefinition" || node.type === "ReturnStatement" || node.type === "SwitchStatement" || node.type === "ThrowStatement" || node.type === "TryStatement" || node.type === "TSDeclareFunction" || node.type === "TSEnumDeclaration" || node.type === "TSImportEqualsDeclaration" || node.type === "TSInterfaceDeclaration" || node.type === "TSModuleDeclaration" || node.type === "TSNamespaceExportDeclaration" || node.type === "TypeAlias" || node.type === "VariableDeclaration" || node.type === "WhileStatement" || node.type === "WithStatement";
+}
+
+function includesFunctionTypeInObjectType(node) {
+ return hasNode$1(node, function (n1) {
+ return n1.type === "ObjectTypeAnnotation" && hasNode$1(n1, function (n2) {
+ return n2.type === "FunctionTypeAnnotation" || undefined;
+ }) || undefined;
+ });
+}
+
+function endsWithRightBracket(node) {
+ switch (node.type) {
+ case "ObjectExpression":
+ return true;
+
+ default:
+ return false;
+ }
+}
+
+function isFollowedByRightBracket(path) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ var name = path.getName();
+
+ switch (parent.type) {
+ case "NGPipeExpression":
+ if (typeof name === "number" && parent.arguments[name] === node && parent.arguments.length - 1 === name) {
+ return path.callParent(isFollowedByRightBracket);
+ }
+
+ break;
+
+ case "ObjectProperty":
+ if (name === "value") {
+ var parentParent = path.getParentNode(1);
+ return parentParent.properties[parentParent.properties.length - 1] === parent;
+ }
+
+ break;
+
+ case "BinaryExpression":
+ case "LogicalExpression":
+ if (name === "right") {
+ return path.callParent(isFollowedByRightBracket);
+ }
+
+ break;
+
+ case "ConditionalExpression":
+ if (name === "alternate") {
+ return path.callParent(isFollowedByRightBracket);
+ }
+
+ break;
+
+ case "UnaryExpression":
+ if (parent.prefix) {
+ return path.callParent(isFollowedByRightBracket);
+ }
+
+ break;
+ }
+
+ return false;
+}
+
+function shouldWrapFunctionForExportDefault(path, options) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+
+ if (node.type === "FunctionExpression" || node.type === "ClassExpression") {
+ return parent.type === "ExportDefaultDeclaration" || // in some cases the function is already wrapped
+ // (e.g. `export default (function() {})();`)
+ // in this case we don't need to add extra parens
+ !needsParens(path, options);
+ }
+
+ if (!hasNakedLeftSide$1(node) || parent.type !== "ExportDefaultDeclaration" && needsParens(path, options)) {
+ return false;
+ }
+
+ return path.call.apply(path, [function (childPath) {
+ return shouldWrapFunctionForExportDefault(childPath, options);
+ }].concat(getLeftSidePathName$1(path, node)));
+}
+
+var needsParens_1 = needsParens;
+
+var _require$$0$builders$1 = doc.builders,
+ concat$5 = _require$$0$builders$1.concat,
+ join$3 = _require$$0$builders$1.join,
+ line$1 = _require$$0$builders$1.line;
+
+function printHtmlBinding(path, options, print) {
+ var node = path.getValue();
+
+ if (options.__onHtmlBindingRoot && path.getName() === null) {
+ options.__onHtmlBindingRoot(node);
+ }
+
+ if (node.type !== "File") {
+ return;
+ }
+
+ if (options.__isVueForBindingLeft) {
+ return path.call(function (functionDeclarationPath) {
+ var _functionDeclarationP = functionDeclarationPath.getValue(),
+ params = _functionDeclarationP.params;
+
+ return concat$5([params.length > 1 ? "(" : "", join$3(concat$5([",", line$1]), functionDeclarationPath.map(print, "params")), params.length > 1 ? ")" : ""]);
+ }, "program", "body", 0);
+ }
+
+ if (options.__isVueSlotScope) {
+ return path.call(function (functionDeclarationPath) {
+ return join$3(concat$5([",", line$1]), functionDeclarationPath.map(print, "params"));
+ }, "program", "body", 0);
+ }
+} // based on https://github.com/prettier/prettier/blob/master/src/language-html/syntax-vue.js isVueEventBindingExpression()
+
+
+function isVueEventBindingExpression(node) {
+ switch (node.type) {
+ case "MemberExpression":
+ switch (node.property.type) {
+ case "Identifier":
+ case "NumericLiteral":
+ case "StringLiteral":
+ return isVueEventBindingExpression(node.object);
+ }
+
+ return false;
+
+ case "Identifier":
+ return true;
+
+ default:
+ return false;
+ }
+}
+
+var htmlBinding = {
+ isVueEventBindingExpression,
+ printHtmlBinding
+};
+
+function preprocess(ast, options) {
+ switch (options.parser) {
+ case "json":
+ case "json5":
+ case "json-stringify":
+ case "__js_expression":
+ case "__vue_expression":
+ return Object.assign({}, ast, {
+ type: options.parser.startsWith("__") ? "JsExpressionRoot" : "JsonRoot",
+ node: ast,
+ comments: []
+ });
+
+ default:
+ return ast;
+ }
+}
+
+var preprocess_1 = preprocess;
+
+var getParentExportDeclaration$1 = util.getParentExportDeclaration,
+ isExportDeclaration$1 = util.isExportDeclaration,
+ shouldFlatten$1 = util.shouldFlatten,
+ getNextNonSpaceNonCommentCharacter$1 = util.getNextNonSpaceNonCommentCharacter,
+ hasNewline$3 = util.hasNewline,
+ hasNewlineInRange$2 = util.hasNewlineInRange,
+ getLast$2 = util.getLast,
+ getStringWidth$2 = util.getStringWidth,
+ printString$1 = util.printString,
+ printNumber$1 = util.printNumber,
+ hasIgnoreComment$2 = util.hasIgnoreComment,
+ hasNodeIgnoreComment$2 = util.hasNodeIgnoreComment,
+ getPenultimate$1 = util.getPenultimate,
+ startsWithNoLookaheadToken$1 = util.startsWithNoLookaheadToken,
+ getIndentSize$1 = util.getIndentSize,
+ matchAncestorTypes$1 = util.matchAncestorTypes,
+ getPreferredQuote$1 = util.getPreferredQuote;
+var isNextLineEmpty$2 = utilShared.isNextLineEmpty,
+ isNextLineEmptyAfterIndex$1 = utilShared.isNextLineEmptyAfterIndex,
+ getNextNonSpaceNonCommentCharacterIndex$2 = utilShared.getNextNonSpaceNonCommentCharacterIndex;
+var insertPragma$1 = pragma.insertPragma;
+var printHtmlBinding$1 = htmlBinding.printHtmlBinding,
+ isVueEventBindingExpression$1 = htmlBinding.isVueEventBindingExpression;
+var classChildNeedsASIProtection$1 = utils$2.classChildNeedsASIProtection,
+ classPropMayCauseASIProblems$1 = utils$2.classPropMayCauseASIProblems,
+ conditionalExpressionChainContainsJSX$1 = utils$2.conditionalExpressionChainContainsJSX,
+ getFlowVariance$1 = utils$2.getFlowVariance,
+ getLeftSidePathName$2 = utils$2.getLeftSidePathName,
+ getTypeScriptMappedTypeModifier$1 = utils$2.getTypeScriptMappedTypeModifier,
+ hasDanglingComments$1 = utils$2.hasDanglingComments,
+ hasFlowAnnotationComment$1 = utils$2.hasFlowAnnotationComment,
+ hasFlowShorthandAnnotationComment$2 = utils$2.hasFlowShorthandAnnotationComment,
+ hasLeadingComment$3 = utils$2.hasLeadingComment,
+ hasLeadingOwnLineComment$1 = utils$2.hasLeadingOwnLineComment,
+ hasNakedLeftSide$2 = utils$2.hasNakedLeftSide,
+ hasNewlineBetweenOrAfterDecorators$1 = utils$2.hasNewlineBetweenOrAfterDecorators,
+ hasNgSideEffect$1 = utils$2.hasNgSideEffect,
+ hasPrettierIgnore$1 = utils$2.hasPrettierIgnore,
+ hasTrailingComment$1 = utils$2.hasTrailingComment,
+ identity$1 = utils$2.identity,
+ isBinaryish$1 = utils$2.isBinaryish,
+ isCallOrOptionalCallExpression$1 = utils$2.isCallOrOptionalCallExpression,
+ isEmptyJSXElement$1 = utils$2.isEmptyJSXElement,
+ isFlowAnnotationComment$1 = utils$2.isFlowAnnotationComment,
+ isFunctionCompositionArgs$1 = utils$2.isFunctionCompositionArgs,
+ isFunctionNotation$1 = utils$2.isFunctionNotation,
+ isFunctionOrArrowExpression$1 = utils$2.isFunctionOrArrowExpression,
+ isGetterOrSetter$1 = utils$2.isGetterOrSetter,
+ isJestEachTemplateLiteral$1 = utils$2.isJestEachTemplateLiteral,
+ isJSXNode$1 = utils$2.isJSXNode,
+ isJSXWhitespaceExpression$1 = utils$2.isJSXWhitespaceExpression,
+ isLastStatement$1 = utils$2.isLastStatement,
+ isLiteral$1 = utils$2.isLiteral,
+ isLongCurriedCallExpression$1 = utils$2.isLongCurriedCallExpression,
+ isMeaningfulJSXText$1 = utils$2.isMeaningfulJSXText,
+ isMemberExpressionChain$1 = utils$2.isMemberExpressionChain,
+ isMemberish$1 = utils$2.isMemberish,
+ isNgForOf$1 = utils$2.isNgForOf,
+ isNumericLiteral$1 = utils$2.isNumericLiteral,
+ isObjectType$1 = utils$2.isObjectType,
+ isObjectTypePropertyAFunction$1 = utils$2.isObjectTypePropertyAFunction,
+ isSimpleFlowType$1 = utils$2.isSimpleFlowType,
+ isSimpleTemplateLiteral$1 = utils$2.isSimpleTemplateLiteral,
+ isStringLiteral$1 = utils$2.isStringLiteral,
+ isStringPropSafeToCoerceToIdentifier$1 = utils$2.isStringPropSafeToCoerceToIdentifier,
+ isTemplateOnItsOwnLine$1 = utils$2.isTemplateOnItsOwnLine,
+ isTestCall$1 = utils$2.isTestCall,
+ isTheOnlyJSXElementInMarkdown$1 = utils$2.isTheOnlyJSXElementInMarkdown,
+ isTSXFile$1 = utils$2.isTSXFile,
+ isTypeAnnotationAFunction$1 = utils$2.isTypeAnnotationAFunction,
+ matchJsxWhitespaceRegex$1 = utils$2.matchJsxWhitespaceRegex,
+ needsHardlineAfterDanglingComment$1 = utils$2.needsHardlineAfterDanglingComment,
+ rawText$1 = utils$2.rawText,
+ returnArgumentHasLeadingComment$1 = utils$2.returnArgumentHasLeadingComment;
+var needsQuoteProps = new WeakMap();
+var _require$$5$builders = doc.builders,
+ concat$6 = _require$$5$builders.concat,
+ join$4 = _require$$5$builders.join,
+ line$2 = _require$$5$builders.line,
+ hardline$4 = _require$$5$builders.hardline,
+ softline$2 = _require$$5$builders.softline,
+ literalline$2 = _require$$5$builders.literalline,
+ group$2 = _require$$5$builders.group,
+ indent$3 = _require$$5$builders.indent,
+ align$1 = _require$$5$builders.align,
+ conditionalGroup$1 = _require$$5$builders.conditionalGroup,
+ fill$2 = _require$$5$builders.fill,
+ ifBreak$1 = _require$$5$builders.ifBreak,
+ breakParent$2 = _require$$5$builders.breakParent,
+ lineSuffixBoundary$1 = _require$$5$builders.lineSuffixBoundary,
+ addAlignmentToDoc$2 = _require$$5$builders.addAlignmentToDoc,
+ dedent$1 = _require$$5$builders.dedent,
+ _require$$5$utils = doc.utils,
+ willBreak$1 = _require$$5$utils.willBreak,
+ isLineNext$1 = _require$$5$utils.isLineNext,
+ isEmpty$1 = _require$$5$utils.isEmpty,
+ removeLines$1 = _require$$5$utils.removeLines,
+ printDocToString$2 = doc.printer.printDocToString;
+var uid = 0;
+
+function shouldPrintComma(options, level) {
+ level = level || "es5";
+
+ switch (options.trailingComma) {
+ case "all":
+ if (level === "all") {
+ return true;
+ }
+
+ // fallthrough
+
+ case "es5":
+ if (level === "es5") {
+ return true;
+ }
+
+ // fallthrough
+
+ case "none":
+ default:
+ return false;
+ }
+}
+
+function genericPrint(path, options, printPath, args) {
+ var node = path.getValue();
+ var needsParens = false;
+ var linesWithoutParens = printPathNoParens(path, options, printPath, args);
+
+ if (!node || isEmpty$1(linesWithoutParens)) {
+ return linesWithoutParens;
+ }
+
+ var parentExportDecl = getParentExportDeclaration$1(path);
+ var decorators = [];
+
+ if (node.type === "ClassMethod" || node.type === "ClassPrivateMethod" || node.type === "ClassProperty" || node.type === "TSAbstractClassProperty" || node.type === "ClassPrivateProperty" || node.type === "MethodDefinition" || node.type === "TSAbstractMethodDefinition") ; else if (node.decorators && node.decorators.length > 0 && // If the parent node is an export declaration and the decorator
+ // was written before the export, the export will be responsible
+ // for printing the decorators.
+ !(parentExportDecl && options.locStart(parentExportDecl, {
+ ignoreDecorators: true
+ }) > options.locStart(node.decorators[0]))) {
+ var shouldBreak = node.type === "ClassExpression" || node.type === "ClassDeclaration" || hasNewlineBetweenOrAfterDecorators$1(node, options);
+ var separator = shouldBreak ? hardline$4 : line$2;
+ path.each(function (decoratorPath) {
+ var decorator = decoratorPath.getValue();
+
+ if (decorator.expression) {
+ decorator = decorator.expression;
+ } else {
+ decorator = decorator.callee;
+ }
+
+ decorators.push(printPath(decoratorPath), separator);
+ }, "decorators");
+
+ if (parentExportDecl) {
+ decorators.unshift(hardline$4);
+ }
+ } else if (isExportDeclaration$1(node) && node.declaration && node.declaration.decorators && node.declaration.decorators.length > 0 && // Only print decorators here if they were written before the export,
+ // otherwise they are printed by the node.declaration
+ options.locStart(node, {
+ ignoreDecorators: true
+ }) > options.locStart(node.declaration.decorators[0])) {
+ // Export declarations are responsible for printing any decorators
+ // that logically apply to node.declaration.
+ path.each(function (decoratorPath) {
+ var decorator = decoratorPath.getValue();
+ var prefix = decorator.type === "Decorator" ? "" : "@";
+ decorators.push(prefix, printPath(decoratorPath), hardline$4);
+ }, "declaration", "decorators");
+ } else {
+ // Nodes with decorators can't have parentheses, so we can avoid
+ // computing pathNeedsParens() except in this case.
+ needsParens = needsParens_1(path, options);
+ }
+
+ var parts = [];
+
+ if (needsParens) {
+ parts.unshift("(");
+ }
+
+ parts.push(linesWithoutParens);
+
+ if (needsParens) {
+ var _node = path.getValue();
+
+ if (hasFlowShorthandAnnotationComment$2(_node)) {
+ parts.push(" /*");
+ parts.push(_node.trailingComments[0].value.trimLeft());
+ parts.push("*/");
+ _node.trailingComments[0].printed = true;
+ }
+
+ parts.push(")");
+ }
+
+ if (decorators.length > 0) {
+ return group$2(concat$6(decorators.concat(parts)));
+ }
+
+ return concat$6(parts);
+}
+
+function printDecorators(path, options, print) {
+ var node = path.getValue();
+ return group$2(concat$6([join$4(line$2, path.map(print, "decorators")), hasNewlineBetweenOrAfterDecorators$1(node, options) ? hardline$4 : line$2]));
+}
+/**
+ * The following is the shared logic for
+ * ternary operators, namely ConditionalExpression
+ * and TSConditionalType
+ * @typedef {Object} OperatorOptions
+ * @property {() => Array<string | Doc>} beforeParts - Parts to print before the `?`.
+ * @property {(breakClosingParen: boolean) => Array<string | Doc>} afterParts - Parts to print after the conditional expression.
+ * @property {boolean} shouldCheckJsx - Whether to check for and print in JSX mode.
+ * @property {string} conditionalNodeType - The type of the conditional expression node, ie "ConditionalExpression" or "TSConditionalType".
+ * @property {string} consequentNodePropertyName - The property at which the consequent node can be found on the main node, eg "consequent".
+ * @property {string} alternateNodePropertyName - The property at which the alternate node can be found on the main node, eg "alternate".
+ * @property {string} testNodePropertyName - The property at which the test node can be found on the main node, eg "test".
+ * @property {boolean} breakNested - Whether to break all nested ternaries when one breaks.
+ * @param {FastPath} path - The path to the ConditionalExpression/TSConditionalType node.
+ * @param {Options} options - Prettier options
+ * @param {Function} print - Print function to call recursively
+ * @param {OperatorOptions} operatorOptions
+ * @returns Doc
+ */
+
+
+function printTernaryOperator(path, options, print, operatorOptions) {
+ var node = path.getValue();
+ var testNode = node[operatorOptions.testNodePropertyName];
+ var consequentNode = node[operatorOptions.consequentNodePropertyName];
+ var alternateNode = node[operatorOptions.alternateNodePropertyName];
+ var parts = []; // We print a ConditionalExpression in either "JSX mode" or "normal mode".
+ // See tests/jsx/conditional-expression.js for more info.
+
+ var jsxMode = false;
+ var parent = path.getParentNode();
+ var forceNoIndent = parent.type === operatorOptions.conditionalNodeType; // Find the outermost non-ConditionalExpression parent, and the outermost
+ // ConditionalExpression parent. We'll use these to determine if we should
+ // print in JSX mode.
+
+ var currentParent;
+ var previousParent;
+ var i = 0;
+
+ do {
+ previousParent = currentParent || node;
+ currentParent = path.getParentNode(i);
+ i++;
+ } while (currentParent && currentParent.type === operatorOptions.conditionalNodeType);
+
+ var firstNonConditionalParent = currentParent || parent;
+ var lastConditionalParent = previousParent;
+
+ if (operatorOptions.shouldCheckJsx && (isJSXNode$1(testNode) || isJSXNode$1(consequentNode) || isJSXNode$1(alternateNode) || conditionalExpressionChainContainsJSX$1(lastConditionalParent))) {
+ jsxMode = true;
+ forceNoIndent = true; // Even though they don't need parens, we wrap (almost) everything in
+ // parens when using ?: within JSX, because the parens are analogous to
+ // curly braces in an if statement.
+
+ var wrap = function wrap(doc) {
+ return concat$6([ifBreak$1("(", ""), indent$3(concat$6([softline$2, doc])), softline$2, ifBreak$1(")", "")]);
+ }; // The only things we don't wrap are:
+ // * Nested conditional expressions in alternates
+ // * null
+
+
+ var isNull = function isNull(node) {
+ return node.type === "NullLiteral" || node.type === "Literal" && node.value === null;
+ };
+
+ parts.push(" ? ", isNull(consequentNode) ? path.call(print, operatorOptions.consequentNodePropertyName) : wrap(path.call(print, operatorOptions.consequentNodePropertyName)), " : ", alternateNode.type === operatorOptions.conditionalNodeType || isNull(alternateNode) ? path.call(print, operatorOptions.alternateNodePropertyName) : wrap(path.call(print, operatorOptions.alternateNodePropertyName)));
+ } else {
+ // normal mode
+ var part = concat$6([line$2, "? ", consequentNode.type === operatorOptions.conditionalNodeType ? ifBreak$1("", "(") : "", align$1(2, path.call(print, operatorOptions.consequentNodePropertyName)), consequentNode.type === operatorOptions.conditionalNodeType ? ifBreak$1("", ")") : "", line$2, ": ", alternateNode.type === operatorOptions.conditionalNodeType ? path.call(print, operatorOptions.alternateNodePropertyName) : align$1(2, path.call(print, operatorOptions.alternateNodePropertyName))]);
+ parts.push(parent.type !== operatorOptions.conditionalNodeType || parent[operatorOptions.alternateNodePropertyName] === node ? part : options.useTabs ? dedent$1(indent$3(part)) : align$1(Math.max(0, options.tabWidth - 2), part));
+ } // We want a whole chain of ConditionalExpressions to all
+ // break if any of them break. That means we should only group around the
+ // outer-most ConditionalExpression.
+
+
+ var maybeGroup = function maybeGroup(doc) {
+ return operatorOptions.breakNested ? parent === firstNonConditionalParent ? group$2(doc) : doc : group$2(doc);
+ }; // Break the closing paren to keep the chain right after it:
+ // (a
+ // ? b
+ // : c
+ // ).call()
+
+
+ var breakClosingParen = !jsxMode && (parent.type === "MemberExpression" || parent.type === "OptionalMemberExpression" || parent.type === "NGPipeExpression" && parent.left === node && operatorOptions.breakNested) && !parent.computed;
+ return maybeGroup(concat$6([].concat(function (testDoc) {
+ return (
+ /**
+ * a
+ * ? b
+ * : multiline
+ * test
+ * node
+ * ^^ align(2)
+ * ? d
+ * : e
+ */
+ parent.type === operatorOptions.conditionalNodeType && parent[operatorOptions.alternateNodePropertyName] === node ? align$1(2, testDoc) : testDoc
+ );
+ }(concat$6(operatorOptions.beforeParts())), forceNoIndent ? concat$6(parts) : indent$3(concat$6(parts)), operatorOptions.afterParts(breakClosingParen))));
+}
+
+function printPathNoParens(path, options, print, args) {
+ var n = path.getValue();
+ var semi = options.semi ? ";" : "";
+
+ if (!n) {
+ return "";
+ }
+
+ if (typeof n === "string") {
+ return n;
+ }
+
+ var htmlBinding = printHtmlBinding$1(path, options, print);
+
+ if (htmlBinding) {
+ return htmlBinding;
+ }
+
+ var parts = [];
+
+ switch (n.type) {
+ case "JsExpressionRoot":
+ return path.call(print, "node");
+
+ case "JsonRoot":
+ return concat$6([path.call(print, "node"), hardline$4]);
+
+ case "File":
+ // Print @babel/parser's InterpreterDirective here so that
+ // leading comments on the `Program` node get printed after the hashbang.
+ if (n.program && n.program.interpreter) {
+ parts.push(path.call(function (programPath) {
+ return programPath.call(print, "interpreter");
+ }, "program"));
+ }
+
+ parts.push(path.call(print, "program"));
+ return concat$6(parts);
+
+ case "Program":
+ // Babel 6
+ if (n.directives) {
+ path.each(function (childPath) {
+ parts.push(print(childPath), semi, hardline$4);
+
+ if (isNextLineEmpty$2(options.originalText, childPath.getValue(), options)) {
+ parts.push(hardline$4);
+ }
+ }, "directives");
+ }
+
+ parts.push(path.call(function (bodyPath) {
+ return printStatementSequence(bodyPath, options, print);
+ }, "body"));
+ parts.push(comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true)); // Only force a trailing newline if there were any contents.
+
+ if (n.body.length || n.comments) {
+ parts.push(hardline$4);
+ }
+
+ return concat$6(parts);
+ // Babel extension.
+
+ case "EmptyStatement":
+ return "";
+
+ case "ExpressionStatement":
+ // Detect Flow-parsed directives
+ if (n.directive) {
+ return concat$6([nodeStr(n.expression, options, true), semi]);
+ }
+
+ if (options.parser === "__vue_event_binding") {
+ var parent = path.getParentNode();
+
+ if (parent.type === "Program" && parent.body.length === 1 && parent.body[0] === n) {
+ return concat$6([path.call(print, "expression"), isVueEventBindingExpression$1(n.expression) ? ";" : ""]);
+ }
+ } // Do not append semicolon after the only JSX element in a program
+
+
+ return concat$6([path.call(print, "expression"), isTheOnlyJSXElementInMarkdown$1(options, path) ? "" : semi]);
+ // Babel extension.
+
+ case "ParenthesizedExpression":
+ return concat$6(["(", path.call(print, "expression"), ")"]);
+
+ case "AssignmentExpression":
+ return printAssignment(n.left, path.call(print, "left"), concat$6([" ", n.operator]), n.right, path.call(print, "right"), options);
+
+ case "BinaryExpression":
+ case "LogicalExpression":
+ case "NGPipeExpression":
+ {
+ var _parent = path.getParentNode();
+
+ var parentParent = path.getParentNode(1);
+ var isInsideParenthesis = n !== _parent.body && (_parent.type === "IfStatement" || _parent.type === "WhileStatement" || _parent.type === "SwitchStatement" || _parent.type === "DoWhileStatement");
+
+ var _parts = printBinaryishExpressions(path, print, options,
+ /* isNested */
+ false, isInsideParenthesis); // if (
+ // this.hasPlugin("dynamicImports") && this.lookahead().type === tt.parenLeft
+ // ) {
+ //
+ // looks super weird, we want to break the children if the parent breaks
+ //
+ // if (
+ // this.hasPlugin("dynamicImports") &&
+ // this.lookahead().type === tt.parenLeft
+ // ) {
+
+
+ if (isInsideParenthesis) {
+ return concat$6(_parts);
+ } // Break between the parens in
+ // unaries or in a member or specific call expression, i.e.
+ //
+ // (
+ // a &&
+ // b &&
+ // c
+ // ).call()
+
+
+ if ((_parent.type === "CallExpression" || _parent.type === "OptionalCallExpression") && _parent.callee === n || _parent.type === "UnaryExpression" || (_parent.type === "MemberExpression" || _parent.type === "OptionalMemberExpression") && !_parent.computed) {
+ return group$2(concat$6([indent$3(concat$6([softline$2, concat$6(_parts)])), softline$2]));
+ } // Avoid indenting sub-expressions in some cases where the first sub-expression is already
+ // indented accordingly. We should indent sub-expressions where the first case isn't indented.
+
+
+ var shouldNotIndent = _parent.type === "ReturnStatement" || _parent.type === "JSXExpressionContainer" && parentParent.type === "JSXAttribute" || n.type !== "NGPipeExpression" && (_parent.type === "NGRoot" && options.parser === "__ng_binding" || _parent.type === "NGMicrosyntaxExpression" && parentParent.type === "NGMicrosyntax" && parentParent.body.length === 1) || n === _parent.body && _parent.type === "ArrowFunctionExpression" || n !== _parent.body && _parent.type === "ForStatement" || _parent.type === "ConditionalExpression" && parentParent.type !== "ReturnStatement" && parentParent.type !== "CallExpression" && parentParent.type !== "OptionalCallExpression";
+ var shouldIndentIfInlining = _parent.type === "AssignmentExpression" || _parent.type === "VariableDeclarator" || _parent.type === "ClassProperty" || _parent.type === "TSAbstractClassProperty" || _parent.type === "ClassPrivateProperty" || _parent.type === "ObjectProperty" || _parent.type === "Property";
+ var samePrecedenceSubExpression = isBinaryish$1(n.left) && shouldFlatten$1(n.operator, n.left.operator);
+
+ if (shouldNotIndent || shouldInlineLogicalExpression(n) && !samePrecedenceSubExpression || !shouldInlineLogicalExpression(n) && shouldIndentIfInlining) {
+ return group$2(concat$6(_parts));
+ }
+
+ if (_parts.length === 0) {
+ return "";
+ } // If the right part is a JSX node, we include it in a separate group to
+ // prevent it breaking the whole chain, so we can print the expression like:
+ //
+ // foo && bar && (
+ // <Foo>
+ // <Bar />
+ // </Foo>
+ // )
+
+
+ var hasJSX = isJSXNode$1(n.right);
+ var rest = concat$6(hasJSX ? _parts.slice(1, -1) : _parts.slice(1));
+ var groupId = Symbol("logicalChain-" + ++uid);
+ var chain = group$2(concat$6([// Don't include the initial expression in the indentation
+ // level. The first item is guaranteed to be the first
+ // left-most expression.
+ _parts.length > 0 ? _parts[0] : "", indent$3(rest)]), {
+ id: groupId
+ });
+
+ if (!hasJSX) {
+ return chain;
+ }
+
+ var jsxPart = getLast$2(_parts);
+ return group$2(concat$6([chain, ifBreak$1(indent$3(jsxPart), jsxPart, {
+ groupId
+ })]));
+ }
+
+ case "AssignmentPattern":
+ return concat$6([path.call(print, "left"), " = ", path.call(print, "right")]);
+
+ case "TSTypeAssertion":
+ {
+ var shouldBreakAfterCast = !(n.expression.type === "ArrayExpression" || n.expression.type === "ObjectExpression");
+ var castGroup = group$2(concat$6(["<", indent$3(concat$6([softline$2, path.call(print, "typeAnnotation")])), softline$2, ">"]));
+ var exprContents = concat$6([ifBreak$1("("), indent$3(concat$6([softline$2, path.call(print, "expression")])), softline$2, ifBreak$1(")")]);
+
+ if (shouldBreakAfterCast) {
+ return conditionalGroup$1([concat$6([castGroup, path.call(print, "expression")]), concat$6([castGroup, group$2(exprContents, {
+ shouldBreak: true
+ })]), concat$6([castGroup, path.call(print, "expression")])]);
+ }
+
+ return group$2(concat$6([castGroup, path.call(print, "expression")]));
+ }
+
+ case "OptionalMemberExpression":
+ case "MemberExpression":
+ {
+ var _parent2 = path.getParentNode();
+
+ var firstNonMemberParent;
+ var i = 0;
+
+ do {
+ firstNonMemberParent = path.getParentNode(i);
+ i++;
+ } while (firstNonMemberParent && (firstNonMemberParent.type === "MemberExpression" || firstNonMemberParent.type === "OptionalMemberExpression" || firstNonMemberParent.type === "TSNonNullExpression"));
+
+ var shouldInline = firstNonMemberParent && (firstNonMemberParent.type === "NewExpression" || firstNonMemberParent.type === "BindExpression" || firstNonMemberParent.type === "VariableDeclarator" && firstNonMemberParent.id.type !== "Identifier" || firstNonMemberParent.type === "AssignmentExpression" && firstNonMemberParent.left.type !== "Identifier") || n.computed || n.object.type === "Identifier" && n.property.type === "Identifier" && _parent2.type !== "MemberExpression" && _parent2.type !== "OptionalMemberExpression";
+ return concat$6([path.call(print, "object"), shouldInline ? printMemberLookup(path, options, print) : group$2(indent$3(concat$6([softline$2, printMemberLookup(path, options, print)])))]);
+ }
+
+ case "MetaProperty":
+ return concat$6([path.call(print, "meta"), ".", path.call(print, "property")]);
+
+ case "BindExpression":
+ if (n.object) {
+ parts.push(path.call(print, "object"));
+ }
+
+ parts.push(group$2(indent$3(concat$6([softline$2, printBindExpressionCallee(path, options, print)]))));
+ return concat$6(parts);
+
+ case "Identifier":
+ {
+ return concat$6([n.name, printOptionalToken(path), printTypeAnnotation(path, options, print)]);
+ }
+
+ case "V8IntrinsicIdentifier":
+ return concat$6(["%", n.name]);
+
+ case "SpreadElement":
+ case "SpreadElementPattern":
+ case "RestProperty":
+ case "SpreadProperty":
+ case "SpreadPropertyPattern":
+ case "RestElement":
+ case "ObjectTypeSpreadProperty":
+ return concat$6(["...", path.call(print, "argument"), printTypeAnnotation(path, options, print)]);
+
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ parts.push(printFunctionDeclaration(path, print, options));
+
+ if (!n.body) {
+ parts.push(semi);
+ }
+
+ return concat$6(parts);
+
+ case "ArrowFunctionExpression":
+ {
+ if (n.async) {
+ parts.push("async ");
+ }
+
+ if (shouldPrintParamsWithoutParens(path, options)) {
+ parts.push(path.call(print, "params", 0));
+ } else {
+ parts.push(group$2(concat$6([printFunctionParams(path, print, options,
+ /* expandLast */
+ args && (args.expandLastArg || args.expandFirstArg),
+ /* printTypeParams */
+ true), printReturnType(path, print, options)])));
+ }
+
+ var dangling = comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true, function (comment) {
+ var nextCharacter = getNextNonSpaceNonCommentCharacterIndex$2(options.originalText, comment, options);
+ return options.originalText.substr(nextCharacter, 2) === "=>";
+ });
+
+ if (dangling) {
+ parts.push(" ", dangling);
+ }
+
+ parts.push(" =>");
+ var body = path.call(function (bodyPath) {
+ return print(bodyPath, args);
+ }, "body"); // We want to always keep these types of nodes on the same line
+ // as the arrow.
+
+ if (!hasLeadingOwnLineComment$1(options.originalText, n.body, options) && (n.body.type === "ArrayExpression" || n.body.type === "ObjectExpression" || n.body.type === "BlockStatement" || isJSXNode$1(n.body) || isTemplateOnItsOwnLine$1(n.body, options.originalText, options) || n.body.type === "ArrowFunctionExpression" || n.body.type === "DoExpression")) {
+ return group$2(concat$6([concat$6(parts), " ", body]));
+ } // We handle sequence expressions as the body of arrows specially,
+ // so that the required parentheses end up on their own lines.
+
+
+ if (n.body.type === "SequenceExpression") {
+ return group$2(concat$6([concat$6(parts), group$2(concat$6([" (", indent$3(concat$6([softline$2, body])), softline$2, ")"]))]));
+ } // if the arrow function is expanded as last argument, we are adding a
+ // level of indentation and need to add a softline to align the closing )
+ // with the opening (, or if it's inside a JSXExpression (e.g. an attribute)
+ // we should align the expression's closing } with the line with the opening {.
+
+
+ var shouldAddSoftLine = (args && args.expandLastArg || path.getParentNode().type === "JSXExpressionContainer") && !(n.comments && n.comments.length);
+ var printTrailingComma = args && args.expandLastArg && shouldPrintComma(options, "all"); // In order to avoid confusion between
+ // a => a ? a : a
+ // a <= a ? a : a
+
+ var shouldAddParens = n.body.type === "ConditionalExpression" && !startsWithNoLookaheadToken$1(n.body,
+ /* forbidFunctionAndClass */
+ false);
+ return group$2(concat$6([concat$6(parts), group$2(concat$6([indent$3(concat$6([line$2, shouldAddParens ? ifBreak$1("", "(") : "", body, shouldAddParens ? ifBreak$1("", ")") : ""])), shouldAddSoftLine ? concat$6([ifBreak$1(printTrailingComma ? "," : ""), softline$2]) : ""]))]));
+ }
+
+ case "YieldExpression":
+ parts.push("yield");
+
+ if (n.delegate) {
+ parts.push("*");
+ }
+
+ if (n.argument) {
+ parts.push(" ", path.call(print, "argument"));
+ }
+
+ return concat$6(parts);
+
+ case "AwaitExpression":
+ {
+ parts.push("await ", path.call(print, "argument"));
+
+ var _parent3 = path.getParentNode();
+
+ if ((_parent3.type === "CallExpression" || _parent3.type === "OptionalCallExpression") && _parent3.callee === n || (_parent3.type === "MemberExpression" || _parent3.type === "OptionalMemberExpression") && _parent3.object === n) {
+ return group$2(concat$6([indent$3(concat$6([softline$2, concat$6(parts)])), softline$2]));
+ }
+
+ return concat$6(parts);
+ }
+
+ case "ImportSpecifier":
+ if (n.importKind) {
+ parts.push(path.call(print, "importKind"), " ");
+ }
+
+ parts.push(path.call(print, "imported"));
+
+ if (n.local && n.local.name !== n.imported.name) {
+ parts.push(" as ", path.call(print, "local"));
+ }
+
+ return concat$6(parts);
+
+ case "ExportSpecifier":
+ parts.push(path.call(print, "local"));
+
+ if (n.exported && n.exported.name !== n.local.name) {
+ parts.push(" as ", path.call(print, "exported"));
+ }
+
+ return concat$6(parts);
+
+ case "ImportNamespaceSpecifier":
+ parts.push("* as ");
+ parts.push(path.call(print, "local"));
+ return concat$6(parts);
+
+ case "ImportDefaultSpecifier":
+ return path.call(print, "local");
+
+ case "TSExportAssignment":
+ return concat$6(["export = ", path.call(print, "expression"), semi]);
+
+ case "ExportDefaultDeclaration":
+ case "ExportNamedDeclaration":
+ return printExportDeclaration(path, options, print);
+
+ case "ExportAllDeclaration":
+ parts.push("export ");
+
+ if (n.exportKind === "type") {
+ parts.push("type ");
+ }
+
+ parts.push("* from ", path.call(print, "source"), semi);
+ return concat$6(parts);
+
+ case "ExportNamespaceSpecifier":
+ case "ExportDefaultSpecifier":
+ return path.call(print, "exported");
+
+ case "ImportDeclaration":
+ {
+ parts.push("import ");
+
+ if (n.importKind && n.importKind !== "value") {
+ parts.push(n.importKind + " ");
+ }
+
+ var standalones = [];
+ var grouped = [];
+
+ if (n.specifiers && n.specifiers.length > 0) {
+ path.each(function (specifierPath) {
+ var value = specifierPath.getValue();
+
+ if (value.type === "ImportDefaultSpecifier" || value.type === "ImportNamespaceSpecifier") {
+ standalones.push(print(specifierPath));
+ } else {
+ grouped.push(print(specifierPath));
+ }
+ }, "specifiers");
+
+ if (standalones.length > 0) {
+ parts.push(join$4(", ", standalones));
+ }
+
+ if (standalones.length > 0 && grouped.length > 0) {
+ parts.push(", ");
+ }
+
+ if (grouped.length === 1 && standalones.length === 0 && n.specifiers && !n.specifiers.some(function (node) {
+ return node.comments;
+ })) {
+ parts.push(concat$6(["{", options.bracketSpacing ? " " : "", concat$6(grouped), options.bracketSpacing ? " " : "", "}"]));
+ } else if (grouped.length >= 1) {
+ parts.push(group$2(concat$6(["{", indent$3(concat$6([options.bracketSpacing ? line$2 : softline$2, join$4(concat$6([",", line$2]), grouped)])), ifBreak$1(shouldPrintComma(options) ? "," : ""), options.bracketSpacing ? line$2 : softline$2, "}"])));
+ }
+
+ parts.push(" from ");
+ } else if (n.importKind && n.importKind === "type" || // import {} from 'x'
+ /{\s*}/.test(options.originalText.slice(options.locStart(n), options.locStart(n.source)))) {
+ parts.push("{} from ");
+ }
+
+ parts.push(path.call(print, "source"), semi);
+ return concat$6(parts);
+ }
+
+ case "Import":
+ return "import";
+
+ case "TSModuleBlock":
+ case "BlockStatement":
+ {
+ var naked = path.call(function (bodyPath) {
+ return printStatementSequence(bodyPath, options, print);
+ }, "body");
+ var hasContent = n.body.find(function (node) {
+ return node.type !== "EmptyStatement";
+ });
+ var hasDirectives = n.directives && n.directives.length > 0;
+
+ var _parent4 = path.getParentNode();
+
+ var _parentParent = path.getParentNode(1);
+
+ if (!hasContent && !hasDirectives && !hasDanglingComments$1(n) && (_parent4.type === "ArrowFunctionExpression" || _parent4.type === "FunctionExpression" || _parent4.type === "FunctionDeclaration" || _parent4.type === "ObjectMethod" || _parent4.type === "ClassMethod" || _parent4.type === "ClassPrivateMethod" || _parent4.type === "ForStatement" || _parent4.type === "WhileStatement" || _parent4.type === "DoWhileStatement" || _parent4.type === "DoExpression" || _parent4.type === "CatchClause" && !_parentParent.finalizer || _parent4.type === "TSModuleDeclaration")) {
+ return "{}";
+ }
+
+ parts.push("{"); // Babel 6
+
+ if (hasDirectives) {
+ path.each(function (childPath) {
+ parts.push(indent$3(concat$6([hardline$4, print(childPath), semi])));
+
+ if (isNextLineEmpty$2(options.originalText, childPath.getValue(), options)) {
+ parts.push(hardline$4);
+ }
+ }, "directives");
+ }
+
+ if (hasContent) {
+ parts.push(indent$3(concat$6([hardline$4, naked])));
+ }
+
+ parts.push(comments.printDanglingComments(path, options));
+ parts.push(hardline$4, "}");
+ return concat$6(parts);
+ }
+
+ case "ReturnStatement":
+ parts.push("return");
+
+ if (n.argument) {
+ if (returnArgumentHasLeadingComment$1(options, n.argument)) {
+ parts.push(concat$6([" (", indent$3(concat$6([hardline$4, path.call(print, "argument")])), hardline$4, ")"]));
+ } else if (n.argument.type === "LogicalExpression" || n.argument.type === "BinaryExpression" || n.argument.type === "SequenceExpression") {
+ parts.push(group$2(concat$6([ifBreak$1(" (", " "), indent$3(concat$6([softline$2, path.call(print, "argument")])), softline$2, ifBreak$1(")")])));
+ } else {
+ parts.push(" ", path.call(print, "argument"));
+ }
+ }
+
+ if (hasDanglingComments$1(n)) {
+ parts.push(" ", comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true));
+ }
+
+ parts.push(semi);
+ return concat$6(parts);
+
+ case "NewExpression":
+ case "OptionalCallExpression":
+ case "CallExpression":
+ {
+ var isNew = n.type === "NewExpression";
+ var optional = printOptionalToken(path);
+
+ if ( // We want to keep CommonJS- and AMD-style require calls, and AMD-style
+ // define calls, as a unit.
+ // e.g. `define(["some/lib", (lib) => {`
+ !isNew && n.callee.type === "Identifier" && (n.callee.name === "require" || n.callee.name === "define") || // Template literals as single arguments
+ n.arguments.length === 1 && isTemplateOnItsOwnLine$1(n.arguments[0], options.originalText, options) || // Keep test declarations on a single line
+ // e.g. `it('long name', () => {`
+ !isNew && isTestCall$1(n, path.getParentNode())) {
+ return concat$6([isNew ? "new " : "", path.call(print, "callee"), optional, printFunctionTypeParameters(path, options, print), concat$6(["(", join$4(", ", path.map(print, "arguments")), ")"])]);
+ } // Inline Flow annotation comments following Identifiers in Call nodes need to
+ // stay with the Identifier. For example:
+ //
+ // foo /*:: <SomeGeneric> */(bar);
+ //
+ // Here, we ensure that such comments stay between the Identifier and the Callee.
+
+
+ var isIdentifierWithFlowAnnotation = n.callee.type === "Identifier" && hasFlowAnnotationComment$1(n.callee.trailingComments);
+
+ if (isIdentifierWithFlowAnnotation) {
+ n.callee.trailingComments[0].printed = true;
+ } // We detect calls on member lookups and possibly print them in a
+ // special chain format. See `printMemberChain` for more info.
+
+
+ if (!isNew && isMemberish$1(n.callee)) {
+ return printMemberChain(path, options, print);
+ }
+
+ var contents = concat$6([isNew ? "new " : "", path.call(print, "callee"), optional, isIdentifierWithFlowAnnotation ? `/*:: ${n.callee.trailingComments[0].value.substring(2).trim()} */` : "", printFunctionTypeParameters(path, options, print), printArgumentsList(path, options, print)]); // We group here when the callee is itself a call expression.
+ // See `isLongCurriedCallExpression` for more info.
+
+ if (isCallOrOptionalCallExpression$1(n.callee)) {
+ return group$2(contents);
+ }
+
+ return contents;
+ }
+
+ case "TSInterfaceDeclaration":
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ parts.push(n.abstract ? "abstract " : "", printTypeScriptModifiers(path, options, print), "interface ", path.call(print, "id"), n.typeParameters ? path.call(print, "typeParameters") : "", " ");
+
+ if (n.extends && n.extends.length) {
+ parts.push(group$2(indent$3(concat$6([softline$2, "extends ", (n.extends.length === 1 ? identity$1 : indent$3)(join$4(concat$6([",", line$2]), path.map(print, "extends"))), " "]))));
+ }
+
+ parts.push(path.call(print, "body"));
+ return concat$6(parts);
+
+ case "ObjectTypeInternalSlot":
+ return concat$6([n.static ? "static " : "", "[[", path.call(print, "id"), "]]", printOptionalToken(path), n.method ? "" : ": ", path.call(print, "value")]);
+
+ case "ObjectExpression":
+ case "ObjectPattern":
+ case "ObjectTypeAnnotation":
+ case "TSInterfaceBody":
+ case "TSTypeLiteral":
+ {
+ var propertiesField;
+
+ if (n.type === "TSTypeLiteral") {
+ propertiesField = "members";
+ } else if (n.type === "TSInterfaceBody") {
+ propertiesField = "body";
+ } else {
+ propertiesField = "properties";
+ }
+
+ var isTypeAnnotation = n.type === "ObjectTypeAnnotation";
+ var fields = [];
+
+ if (isTypeAnnotation) {
+ fields.push("indexers", "callProperties", "internalSlots");
+ }
+
+ fields.push(propertiesField);
+ var firstProperty = fields.map(function (field) {
+ return n[field][0];
+ }).sort(function (a, b) {
+ return options.locStart(a) - options.locStart(b);
+ })[0];
+
+ var _parent5 = path.getParentNode(0);
+
+ var isFlowInterfaceLikeBody = isTypeAnnotation && _parent5 && (_parent5.type === "InterfaceDeclaration" || _parent5.type === "DeclareInterface" || _parent5.type === "DeclareClass") && path.getName() === "body";
+ var shouldBreak = n.type === "TSInterfaceBody" || isFlowInterfaceLikeBody || n.type === "ObjectPattern" && _parent5.type !== "FunctionDeclaration" && _parent5.type !== "FunctionExpression" && _parent5.type !== "ArrowFunctionExpression" && _parent5.type !== "ObjectMethod" && _parent5.type !== "ClassMethod" && _parent5.type !== "ClassPrivateMethod" && _parent5.type !== "AssignmentPattern" && _parent5.type !== "CatchClause" && n.properties.some(function (property) {
+ return property.value && (property.value.type === "ObjectPattern" || property.value.type === "ArrayPattern");
+ }) || n.type !== "ObjectPattern" && firstProperty && hasNewlineInRange$2(options.originalText, options.locStart(n), options.locStart(firstProperty));
+ var separator = isFlowInterfaceLikeBody ? ";" : n.type === "TSInterfaceBody" || n.type === "TSTypeLiteral" ? ifBreak$1(semi, ";") : ",";
+ var leftBrace = n.exact ? "{|" : "{";
+ var rightBrace = n.exact ? "|}" : "}"; // Unfortunately, things are grouped together in the ast can be
+ // interleaved in the source code. So we need to reorder them before
+ // printing them.
+
+ var propsAndLoc = [];
+ fields.forEach(function (field) {
+ path.each(function (childPath) {
+ var node = childPath.getValue();
+ propsAndLoc.push({
+ node: node,
+ printed: print(childPath),
+ loc: options.locStart(node)
+ });
+ }, field);
+ });
+ var separatorParts = [];
+ var props = propsAndLoc.sort(function (a, b) {
+ return a.loc - b.loc;
+ }).map(function (prop) {
+ var result = concat$6(separatorParts.concat(group$2(prop.printed)));
+ separatorParts = [separator, line$2];
+
+ if ((prop.node.type === "TSPropertySignature" || prop.node.type === "TSMethodSignature" || prop.node.type === "TSConstructSignatureDeclaration") && hasNodeIgnoreComment$2(prop.node)) {
+ separatorParts.shift();
+ }
+
+ if (isNextLineEmpty$2(options.originalText, prop.node, options)) {
+ separatorParts.push(hardline$4);
+ }
+
+ return result;
+ });
+
+ if (n.inexact) {
+ props.push(concat$6(separatorParts.concat(group$2("..."))));
+ }
+
+ var lastElem = getLast$2(n[propertiesField]);
+ var canHaveTrailingSeparator = !(lastElem && (lastElem.type === "RestProperty" || lastElem.type === "RestElement" || hasNodeIgnoreComment$2(lastElem) || n.inexact));
+ var content;
+
+ if (props.length === 0) {
+ if (!hasDanglingComments$1(n)) {
+ return concat$6([leftBrace, rightBrace, printTypeAnnotation(path, options, print)]);
+ }
+
+ content = group$2(concat$6([leftBrace, comments.printDanglingComments(path, options), softline$2, rightBrace, printOptionalToken(path), printTypeAnnotation(path, options, print)]));
+ } else {
+ content = concat$6([leftBrace, indent$3(concat$6([options.bracketSpacing ? line$2 : softline$2, concat$6(props)])), ifBreak$1(canHaveTrailingSeparator && (separator !== "," || shouldPrintComma(options)) ? separator : ""), concat$6([options.bracketSpacing ? line$2 : softline$2, rightBrace]), printOptionalToken(path), printTypeAnnotation(path, options, print)]);
+ } // If we inline the object as first argument of the parent, we don't want
+ // to create another group so that the object breaks before the return
+ // type
+
+
+ var parentParentParent = path.getParentNode(2);
+
+ if (n.type === "ObjectPattern" && _parent5 && shouldHugArguments(_parent5) && !n.decorators && _parent5.params[0] === n || shouldHugType(n) && parentParentParent && shouldHugArguments(parentParentParent) && parentParentParent.params[0].typeAnnotation && parentParentParent.params[0].typeAnnotation.typeAnnotation === n) {
+ return content;
+ }
+
+ return group$2(content, {
+ shouldBreak
+ });
+ }
+ // Babel 6
+
+ case "ObjectProperty": // Non-standard AST node type.
+
+ case "Property":
+ if (n.method || n.kind === "get" || n.kind === "set") {
+ return printMethod(path, options, print);
+ }
+
+ if (n.shorthand) {
+ parts.push(path.call(print, "value"));
+ } else {
+ parts.push(printAssignment(n.key, printPropertyKey(path, options, print), ":", n.value, path.call(print, "value"), options));
+ }
+
+ return concat$6(parts);
+ // Babel 6
+
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ case "MethodDefinition":
+ case "TSAbstractMethodDefinition":
+ if (n.decorators && n.decorators.length !== 0) {
+ parts.push(printDecorators(path, options, print));
+ }
+
+ if (n.accessibility) {
+ parts.push(n.accessibility + " ");
+ }
+
+ if (n.static) {
+ parts.push("static ");
+ }
+
+ if (n.type === "TSAbstractMethodDefinition") {
+ parts.push("abstract ");
+ }
+
+ parts.push(printMethod(path, options, print));
+ return concat$6(parts);
+
+ case "ObjectMethod":
+ return printMethod(path, options, print);
+
+ case "Decorator":
+ return concat$6(["@", path.call(print, "expression"), path.call(print, "callee")]);
+
+ case "ArrayExpression":
+ case "ArrayPattern":
+ if (n.elements.length === 0) {
+ if (!hasDanglingComments$1(n)) {
+ parts.push("[]");
+ } else {
+ parts.push(group$2(concat$6(["[", comments.printDanglingComments(path, options), softline$2, "]"])));
+ }
+ } else {
+ var _lastElem = getLast$2(n.elements);
+
+ var canHaveTrailingComma = !(_lastElem && _lastElem.type === "RestElement"); // JavaScript allows you to have empty elements in an array which
+ // changes its length based on the number of commas. The algorithm
+ // is that if the last argument is null, we need to force insert
+ // a comma to ensure JavaScript recognizes it.
+ // [,].length === 1
+ // [1,].length === 1
+ // [1,,].length === 2
+ //
+ // Note that getLast returns null if the array is empty, but
+ // we already check for an empty array just above so we are safe
+
+ var needsForcedTrailingComma = canHaveTrailingComma && _lastElem === null;
+
+ var _shouldBreak = n.elements.length > 1 && n.elements.every(function (element, i, elements) {
+ var elementType = element && element.type;
+
+ if (elementType !== "ArrayExpression" && elementType !== "ObjectExpression") {
+ return false;
+ }
+
+ var nextElement = elements[i + 1];
+
+ if (nextElement && elementType !== nextElement.type) {
+ return false;
+ }
+
+ var itemsKey = elementType === "ArrayExpression" ? "elements" : "properties";
+ return element[itemsKey] && element[itemsKey].length > 1;
+ });
+
+ parts.push(group$2(concat$6(["[", indent$3(concat$6([softline$2, printArrayItems(path, options, "elements", print)])), needsForcedTrailingComma ? "," : "", ifBreak$1(canHaveTrailingComma && !needsForcedTrailingComma && shouldPrintComma(options) ? "," : ""), comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), softline$2, "]"]), {
+ shouldBreak: _shouldBreak
+ }));
+ }
+
+ parts.push(printOptionalToken(path), printTypeAnnotation(path, options, print));
+ return concat$6(parts);
+
+ case "SequenceExpression":
+ {
+ var _parent6 = path.getParentNode(0);
+
+ if (_parent6.type === "ExpressionStatement" || _parent6.type === "ForStatement") {
+ // For ExpressionStatements and for-loop heads, which are among
+ // the few places a SequenceExpression appears unparenthesized, we want
+ // to indent expressions after the first.
+ var _parts2 = [];
+ path.each(function (p) {
+ if (p.getName() === 0) {
+ _parts2.push(print(p));
+ } else {
+ _parts2.push(",", indent$3(concat$6([line$2, print(p)])));
+ }
+ }, "expressions");
+ return group$2(concat$6(_parts2));
+ }
+
+ return group$2(concat$6([join$4(concat$6([",", line$2]), path.map(print, "expressions"))]));
+ }
+
+ case "ThisExpression":
+ return "this";
+
+ case "Super":
+ return "super";
+
+ case "NullLiteral":
+ // Babel 6 Literal split
+ return "null";
+
+ case "RegExpLiteral":
+ // Babel 6 Literal split
+ return printRegex(n);
+
+ case "NumericLiteral":
+ // Babel 6 Literal split
+ return printNumber$1(n.extra.raw);
+
+ case "BigIntLiteral":
+ // babel: n.extra.raw, typescript: n.raw, flow: n.bigint
+ return (n.bigint || (n.extra ? n.extra.raw : n.raw)).toLowerCase();
+
+ case "BooleanLiteral": // Babel 6 Literal split
+
+ case "StringLiteral": // Babel 6 Literal split
+
+ case "Literal":
+ {
+ if (n.regex) {
+ return printRegex(n.regex);
+ }
+
+ if (typeof n.value === "number") {
+ return printNumber$1(n.raw);
+ }
+
+ if (typeof n.value !== "string") {
+ return "" + n.value;
+ } // TypeScript workaround for https://github.com/JamesHenry/typescript-estree/issues/2
+ // See corresponding workaround in needs-parens.js
+
+
+ var grandParent = path.getParentNode(1);
+ var isTypeScriptDirective = options.parser === "typescript" && typeof n.value === "string" && grandParent && (grandParent.type === "Program" || grandParent.type === "BlockStatement");
+ return nodeStr(n, options, isTypeScriptDirective);
+ }
+
+ case "Directive":
+ return path.call(print, "value");
+ // Babel 6
+
+ case "DirectiveLiteral":
+ return nodeStr(n, options);
+
+ case "UnaryExpression":
+ parts.push(n.operator);
+
+ if (/[a-z]$/.test(n.operator)) {
+ parts.push(" ");
+ }
+
+ if (n.argument.comments && n.argument.comments.length > 0) {
+ parts.push(group$2(concat$6(["(", indent$3(concat$6([softline$2, path.call(print, "argument")])), softline$2, ")"])));
+ } else {
+ parts.push(path.call(print, "argument"));
+ }
+
+ return concat$6(parts);
+
+ case "UpdateExpression":
+ parts.push(path.call(print, "argument"), n.operator);
+
+ if (n.prefix) {
+ parts.reverse();
+ }
+
+ return concat$6(parts);
+
+ case "ConditionalExpression":
+ return printTernaryOperator(path, options, print, {
+ beforeParts: function beforeParts() {
+ return [path.call(print, "test")];
+ },
+ afterParts: function afterParts(breakClosingParen) {
+ return [breakClosingParen ? softline$2 : ""];
+ },
+ shouldCheckJsx: true,
+ conditionalNodeType: "ConditionalExpression",
+ consequentNodePropertyName: "consequent",
+ alternateNodePropertyName: "alternate",
+ testNodePropertyName: "test",
+ breakNested: true
+ });
+
+ case "VariableDeclaration":
+ {
+ var printed = path.map(function (childPath) {
+ return print(childPath);
+ }, "declarations"); // We generally want to terminate all variable declarations with a
+ // semicolon, except when they in the () part of for loops.
+
+ var parentNode = path.getParentNode();
+ var isParentForLoop = parentNode.type === "ForStatement" || parentNode.type === "ForInStatement" || parentNode.type === "ForOfStatement" || parentNode.type === "ForAwaitStatement";
+ var hasValue = n.declarations.some(function (decl) {
+ return decl.init;
+ });
+ var firstVariable;
+
+ if (printed.length === 1 && !n.declarations[0].comments) {
+ firstVariable = printed[0];
+ } else if (printed.length > 0) {
+ // Indent first var to comply with eslint one-var rule
+ firstVariable = indent$3(printed[0]);
+ }
+
+ parts = [n.declare ? "declare " : "", n.kind, firstVariable ? concat$6([" ", firstVariable]) : "", indent$3(concat$6(printed.slice(1).map(function (p) {
+ return concat$6([",", hasValue && !isParentForLoop ? hardline$4 : line$2, p]);
+ })))];
+
+ if (!(isParentForLoop && parentNode.body !== n)) {
+ parts.push(semi);
+ }
+
+ return group$2(concat$6(parts));
+ }
+
+ case "TSTypeAliasDeclaration":
+ {
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ var _printed = printAssignmentRight(n.id, n.typeAnnotation, n.typeAnnotation && path.call(print, "typeAnnotation"), options);
+
+ parts.push("type ", path.call(print, "id"), path.call(print, "typeParameters"), " =", _printed, semi);
+ return group$2(concat$6(parts));
+ }
+
+ case "VariableDeclarator":
+ return printAssignment(n.id, path.call(print, "id"), " =", n.init, n.init && path.call(print, "init"), options);
+
+ case "WithStatement":
+ return group$2(concat$6(["with (", path.call(print, "object"), ")", adjustClause(n.body, path.call(print, "body"))]));
+
+ case "IfStatement":
+ {
+ var con = adjustClause(n.consequent, path.call(print, "consequent"));
+ var opening = group$2(concat$6(["if (", group$2(concat$6([indent$3(concat$6([softline$2, path.call(print, "test")])), softline$2])), ")", con]));
+ parts.push(opening);
+
+ if (n.alternate) {
+ var commentOnOwnLine = hasTrailingComment$1(n.consequent) && n.consequent.comments.some(function (comment) {
+ return comment.trailing && !comments$1.isBlockComment(comment);
+ }) || needsHardlineAfterDanglingComment$1(n);
+ var elseOnSameLine = n.consequent.type === "BlockStatement" && !commentOnOwnLine;
+ parts.push(elseOnSameLine ? " " : hardline$4);
+
+ if (hasDanglingComments$1(n)) {
+ parts.push(comments.printDanglingComments(path, options, true), commentOnOwnLine ? hardline$4 : " ");
+ }
+
+ parts.push("else", group$2(adjustClause(n.alternate, path.call(print, "alternate"), n.alternate.type === "IfStatement")));
+ }
+
+ return concat$6(parts);
+ }
+
+ case "ForStatement":
+ {
+ var _body = adjustClause(n.body, path.call(print, "body")); // We want to keep dangling comments above the loop to stay consistent.
+ // Any comment positioned between the for statement and the parentheses
+ // is going to be printed before the statement.
+
+
+ var _dangling = comments.printDanglingComments(path, options,
+ /* sameLine */
+ true);
+
+ var printedComments = _dangling ? concat$6([_dangling, softline$2]) : "";
+
+ if (!n.init && !n.test && !n.update) {
+ return concat$6([printedComments, group$2(concat$6(["for (;;)", _body]))]);
+ }
+
+ return concat$6([printedComments, group$2(concat$6(["for (", group$2(concat$6([indent$3(concat$6([softline$2, path.call(print, "init"), ";", line$2, path.call(print, "test"), ";", line$2, path.call(print, "update")])), softline$2])), ")", _body]))]);
+ }
+
+ case "WhileStatement":
+ return group$2(concat$6(["while (", group$2(concat$6([indent$3(concat$6([softline$2, path.call(print, "test")])), softline$2])), ")", adjustClause(n.body, path.call(print, "body"))]));
+
+ case "ForInStatement":
+ // Note: esprima can't actually parse "for each (".
+ return group$2(concat$6([n.each ? "for each (" : "for (", path.call(print, "left"), " in ", path.call(print, "right"), ")", adjustClause(n.body, path.call(print, "body"))]));
+
+ case "ForOfStatement":
+ case "ForAwaitStatement":
+ {
+ // Babel 7 removed ForAwaitStatement in favor of ForOfStatement
+ // with `"await": true`:
+ // https://github.com/estree/estree/pull/138
+ var isAwait = n.type === "ForAwaitStatement" || n.await;
+ return group$2(concat$6(["for", isAwait ? " await" : "", " (", path.call(print, "left"), " of ", path.call(print, "right"), ")", adjustClause(n.body, path.call(print, "body"))]));
+ }
+
+ case "DoWhileStatement":
+ {
+ var clause = adjustClause(n.body, path.call(print, "body"));
+ var doBody = group$2(concat$6(["do", clause]));
+ parts = [doBody];
+
+ if (n.body.type === "BlockStatement") {
+ parts.push(" ");
+ } else {
+ parts.push(hardline$4);
+ }
+
+ parts.push("while (");
+ parts.push(group$2(concat$6([indent$3(concat$6([softline$2, path.call(print, "test")])), softline$2])), ")", semi);
+ return concat$6(parts);
+ }
+
+ case "DoExpression":
+ return concat$6(["do ", path.call(print, "body")]);
+
+ case "BreakStatement":
+ parts.push("break");
+
+ if (n.label) {
+ parts.push(" ", path.call(print, "label"));
+ }
+
+ parts.push(semi);
+ return concat$6(parts);
+
+ case "ContinueStatement":
+ parts.push("continue");
+
+ if (n.label) {
+ parts.push(" ", path.call(print, "label"));
+ }
+
+ parts.push(semi);
+ return concat$6(parts);
+
+ case "LabeledStatement":
+ if (n.body.type === "EmptyStatement") {
+ return concat$6([path.call(print, "label"), ":;"]);
+ }
+
+ return concat$6([path.call(print, "label"), ": ", path.call(print, "body")]);
+
+ case "TryStatement":
+ return concat$6(["try ", path.call(print, "block"), n.handler ? concat$6([" ", path.call(print, "handler")]) : "", n.finalizer ? concat$6([" finally ", path.call(print, "finalizer")]) : ""]);
+
+ case "CatchClause":
+ if (n.param) {
+ var hasComments = n.param.comments && n.param.comments.some(function (comment) {
+ return !comments$1.isBlockComment(comment) || comment.leading && hasNewline$3(options.originalText, options.locEnd(comment)) || comment.trailing && hasNewline$3(options.originalText, options.locStart(comment), {
+ backwards: true
+ });
+ });
+ var param = path.call(print, "param");
+ return concat$6(["catch ", hasComments ? concat$6(["(", indent$3(concat$6([softline$2, param])), softline$2, ") "]) : concat$6(["(", param, ") "]), path.call(print, "body")]);
+ }
+
+ return concat$6(["catch ", path.call(print, "body")]);
+
+ case "ThrowStatement":
+ return concat$6(["throw ", path.call(print, "argument"), semi]);
+ // Note: ignoring n.lexical because it has no printing consequences.
+
+ case "SwitchStatement":
+ return concat$6([group$2(concat$6(["switch (", indent$3(concat$6([softline$2, path.call(print, "discriminant")])), softline$2, ")"])), " {", n.cases.length > 0 ? indent$3(concat$6([hardline$4, join$4(hardline$4, path.map(function (casePath) {
+ var caseNode = casePath.getValue();
+ return concat$6([casePath.call(print), n.cases.indexOf(caseNode) !== n.cases.length - 1 && isNextLineEmpty$2(options.originalText, caseNode, options) ? hardline$4 : ""]);
+ }, "cases"))])) : "", hardline$4, "}"]);
+
+ case "SwitchCase":
+ {
+ if (n.test) {
+ parts.push("case ", path.call(print, "test"), ":");
+ } else {
+ parts.push("default:");
+ }
+
+ var consequent = n.consequent.filter(function (node) {
+ return node.type !== "EmptyStatement";
+ });
+
+ if (consequent.length > 0) {
+ var cons = path.call(function (consequentPath) {
+ return printStatementSequence(consequentPath, options, print);
+ }, "consequent");
+ parts.push(consequent.length === 1 && consequent[0].type === "BlockStatement" ? concat$6([" ", cons]) : indent$3(concat$6([hardline$4, cons])));
+ }
+
+ return concat$6(parts);
+ }
+ // JSX extensions below.
+
+ case "DebuggerStatement":
+ return concat$6(["debugger", semi]);
+
+ case "JSXAttribute":
+ parts.push(path.call(print, "name"));
+
+ if (n.value) {
+ var res;
+
+ if (isStringLiteral$1(n.value)) {
+ var raw = rawText$1(n.value); // Unescape all quotes so we get an accurate preferred quote
+
+ var final = raw.replace(/&apos;/g, "'").replace(/&quot;/g, '"');
+ var quote = getPreferredQuote$1(final, options.jsxSingleQuote ? "'" : '"');
+
+ var _escape = quote === "'" ? "&apos;" : "&quot;";
+
+ final = final.slice(1, -1).replace(new RegExp(quote, "g"), _escape);
+ res = concat$6([quote, final, quote]);
+ } else {
+ res = path.call(print, "value");
+ }
+
+ parts.push("=", res);
+ }
+
+ return concat$6(parts);
+
+ case "JSXIdentifier":
+ return "" + n.name;
+
+ case "JSXNamespacedName":
+ return join$4(":", [path.call(print, "namespace"), path.call(print, "name")]);
+
+ case "JSXMemberExpression":
+ return join$4(".", [path.call(print, "object"), path.call(print, "property")]);
+
+ case "TSQualifiedName":
+ return join$4(".", [path.call(print, "left"), path.call(print, "right")]);
+
+ case "JSXSpreadAttribute":
+ case "JSXSpreadChild":
+ {
+ return concat$6(["{", path.call(function (p) {
+ var printed = concat$6(["...", print(p)]);
+ var n = p.getValue();
+
+ if (!n.comments || !n.comments.length) {
+ return printed;
+ }
+
+ return concat$6([indent$3(concat$6([softline$2, comments.printComments(p, function () {
+ return printed;
+ }, options)])), softline$2]);
+ }, n.type === "JSXSpreadAttribute" ? "argument" : "expression"), "}"]);
+ }
+
+ case "JSXExpressionContainer":
+ {
+ var _parent7 = path.getParentNode(0);
+
+ var preventInline = _parent7.type === "JSXAttribute" && n.expression.comments && n.expression.comments.length > 0;
+
+ var _shouldInline = !preventInline && (n.expression.type === "ArrayExpression" || n.expression.type === "ObjectExpression" || n.expression.type === "ArrowFunctionExpression" || n.expression.type === "CallExpression" || n.expression.type === "OptionalCallExpression" || n.expression.type === "FunctionExpression" || n.expression.type === "JSXEmptyExpression" || n.expression.type === "TemplateLiteral" || n.expression.type === "TaggedTemplateExpression" || n.expression.type === "DoExpression" || isJSXNode$1(_parent7) && (n.expression.type === "ConditionalExpression" || isBinaryish$1(n.expression)));
+
+ if (_shouldInline) {
+ return group$2(concat$6(["{", path.call(print, "expression"), lineSuffixBoundary$1, "}"]));
+ }
+
+ return group$2(concat$6(["{", indent$3(concat$6([softline$2, path.call(print, "expression")])), softline$2, lineSuffixBoundary$1, "}"]));
+ }
+
+ case "JSXFragment":
+ case "JSXElement":
+ {
+ var elem = comments.printComments(path, function () {
+ return printJSXElement(path, options, print);
+ }, options);
+ return maybeWrapJSXElementInParens(path, elem, options);
+ }
+
+ case "JSXOpeningElement":
+ {
+ var _n = path.getValue();
+
+ var nameHasComments = _n.name && _n.name.comments && _n.name.comments.length > 0 || _n.typeParameters && _n.typeParameters.comments && _n.typeParameters.comments.length > 0; // Don't break self-closing elements with no attributes and no comments
+
+ if (_n.selfClosing && !_n.attributes.length && !nameHasComments) {
+ return concat$6(["<", path.call(print, "name"), path.call(print, "typeParameters"), " />"]);
+ } // don't break up opening elements with a single long text attribute
+
+
+ if (_n.attributes && _n.attributes.length === 1 && _n.attributes[0].value && isStringLiteral$1(_n.attributes[0].value) && !_n.attributes[0].value.value.includes("\n") && // We should break for the following cases:
+ // <div
+ // // comment
+ // attr="value"
+ // >
+ // <div
+ // attr="value"
+ // // comment
+ // >
+ !nameHasComments && (!_n.attributes[0].comments || !_n.attributes[0].comments.length)) {
+ return group$2(concat$6(["<", path.call(print, "name"), path.call(print, "typeParameters"), " ", concat$6(path.map(print, "attributes")), _n.selfClosing ? " />" : ">"]));
+ }
+
+ var lastAttrHasTrailingComments = _n.attributes.length && hasTrailingComment$1(getLast$2(_n.attributes));
+ var bracketSameLine = // Simple tags (no attributes and no comment in tag name) should be
+ // kept unbroken regardless of `jsxBracketSameLine`
+ !_n.attributes.length && !nameHasComments || options.jsxBracketSameLine && ( // We should print the bracket in a new line for the following cases:
+ // <div
+ // // comment
+ // >
+ // <div
+ // attr // comment
+ // >
+ !nameHasComments || _n.attributes.length) && !lastAttrHasTrailingComments; // We should print the opening element expanded if any prop value is a
+ // string literal with newlines
+
+ var _shouldBreak2 = _n.attributes && _n.attributes.some(function (attr) {
+ return attr.value && isStringLiteral$1(attr.value) && attr.value.value.includes("\n");
+ });
+
+ return group$2(concat$6(["<", path.call(print, "name"), path.call(print, "typeParameters"), concat$6([indent$3(concat$6(path.map(function (attr) {
+ return concat$6([line$2, print(attr)]);
+ }, "attributes"))), _n.selfClosing ? line$2 : bracketSameLine ? ">" : softline$2]), _n.selfClosing ? "/>" : bracketSameLine ? "" : ">"]), {
+ shouldBreak: _shouldBreak2
+ });
+ }
+
+ case "JSXClosingElement":
+ return concat$6(["</", path.call(print, "name"), ">"]);
+
+ case "JSXOpeningFragment":
+ case "JSXClosingFragment":
+ {
+ var hasComment = n.comments && n.comments.length;
+ var hasOwnLineComment = hasComment && !n.comments.every(comments$1.isBlockComment);
+ var isOpeningFragment = n.type === "JSXOpeningFragment";
+ return concat$6([isOpeningFragment ? "<" : "</", indent$3(concat$6([hasOwnLineComment ? hardline$4 : hasComment && !isOpeningFragment ? " " : "", comments.printDanglingComments(path, options, true)])), hasOwnLineComment ? hardline$4 : "", ">"]);
+ }
+
+ case "JSXText":
+ /* istanbul ignore next */
+ throw new Error("JSXTest should be handled by JSXElement");
+
+ case "JSXEmptyExpression":
+ {
+ var requiresHardline = n.comments && !n.comments.every(comments$1.isBlockComment);
+ return concat$6([comments.printDanglingComments(path, options,
+ /* sameIndent */
+ !requiresHardline), requiresHardline ? hardline$4 : ""]);
+ }
+
+ case "ClassBody":
+ if (!n.comments && n.body.length === 0) {
+ return "{}";
+ }
+
+ return concat$6(["{", n.body.length > 0 ? indent$3(concat$6([hardline$4, path.call(function (bodyPath) {
+ return printStatementSequence(bodyPath, options, print);
+ }, "body")])) : comments.printDanglingComments(path, options), hardline$4, "}"]);
+
+ case "ClassProperty":
+ case "TSAbstractClassProperty":
+ case "ClassPrivateProperty":
+ {
+ if (n.decorators && n.decorators.length !== 0) {
+ parts.push(printDecorators(path, options, print));
+ }
+
+ if (n.accessibility) {
+ parts.push(n.accessibility + " ");
+ }
+
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ if (n.static) {
+ parts.push("static ");
+ }
+
+ if (n.type === "TSAbstractClassProperty") {
+ parts.push("abstract ");
+ }
+
+ if (n.readonly) {
+ parts.push("readonly ");
+ }
+
+ var variance = getFlowVariance$1(n);
+
+ if (variance) {
+ parts.push(variance);
+ }
+
+ parts.push(printPropertyKey(path, options, print), printOptionalToken(path), printTypeAnnotation(path, options, print));
+
+ if (n.value) {
+ parts.push(" =", printAssignmentRight(n.key, n.value, path.call(print, "value"), options));
+ }
+
+ parts.push(semi);
+ return group$2(concat$6(parts));
+ }
+
+ case "ClassDeclaration":
+ case "ClassExpression":
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ parts.push(concat$6(printClass(path, options, print)));
+ return concat$6(parts);
+
+ case "TSInterfaceHeritage":
+ parts.push(path.call(print, "expression"));
+
+ if (n.typeParameters) {
+ parts.push(path.call(print, "typeParameters"));
+ }
+
+ return concat$6(parts);
+
+ case "TemplateElement":
+ return join$4(literalline$2, n.value.raw.split(/\r?\n/g));
+
+ case "TemplateLiteral":
+ {
+ var expressions = path.map(print, "expressions");
+
+ var _parentNode = path.getParentNode();
+
+ if (isJestEachTemplateLiteral$1(n, _parentNode)) {
+ var _printed2 = printJestEachTemplateLiteral(n, expressions, options);
+
+ if (_printed2) {
+ return _printed2;
+ }
+ }
+
+ var isSimple = isSimpleTemplateLiteral$1(n);
+
+ if (isSimple) {
+ expressions = expressions.map(function (doc) {
+ return printDocToString$2(doc, Object.assign({}, options, {
+ printWidth: Infinity
+ })).formatted;
+ });
+ }
+
+ parts.push(lineSuffixBoundary$1, "`");
+ path.each(function (childPath) {
+ var i = childPath.getName();
+ parts.push(print(childPath));
+
+ if (i < expressions.length) {
+ // For a template literal of the following form:
+ // `someQuery {
+ // ${call({
+ // a,
+ // b,
+ // })}
+ // }`
+ // the expression is on its own line (there is a \n in the previous
+ // quasi literal), therefore we want to indent the JavaScript
+ // expression inside at the beginning of ${ instead of the beginning
+ // of the `.
+ var tabWidth = options.tabWidth;
+ var quasi = childPath.getValue();
+ var indentSize = getIndentSize$1(quasi.value.raw, tabWidth);
+ var _printed3 = expressions[i];
+
+ if (!isSimple) {
+ // Breaks at the template element boundaries (${ and }) are preferred to breaking
+ // in the middle of a MemberExpression
+ if (n.expressions[i].comments && n.expressions[i].comments.length || n.expressions[i].type === "MemberExpression" || n.expressions[i].type === "OptionalMemberExpression" || n.expressions[i].type === "ConditionalExpression") {
+ _printed3 = concat$6([indent$3(concat$6([softline$2, _printed3])), softline$2]);
+ }
+ }
+
+ var aligned = indentSize === 0 && quasi.value.raw.endsWith("\n") ? align$1(-Infinity, _printed3) : addAlignmentToDoc$2(_printed3, indentSize, tabWidth);
+ parts.push(group$2(concat$6(["${", aligned, lineSuffixBoundary$1, "}"])));
+ }
+ }, "quasis");
+ parts.push("`");
+ return concat$6(parts);
+ }
+ // These types are unprintable because they serve as abstract
+ // supertypes for other (printable) types.
+
+ case "TaggedTemplateExpression":
+ return concat$6([path.call(print, "tag"), path.call(print, "typeParameters"), path.call(print, "quasi")]);
+
+ case "Node":
+ case "Printable":
+ case "SourceLocation":
+ case "Position":
+ case "Statement":
+ case "Function":
+ case "Pattern":
+ case "Expression":
+ case "Declaration":
+ case "Specifier":
+ case "NamedSpecifier":
+ case "Comment":
+ case "MemberTypeAnnotation": // Flow
+
+ case "Type":
+ /* istanbul ignore next */
+ throw new Error("unprintable type: " + JSON.stringify(n.type));
+ // Type Annotations for Facebook Flow, typically stripped out or
+ // transformed away before printing.
+
+ case "TypeAnnotation":
+ case "TSTypeAnnotation":
+ if (n.typeAnnotation) {
+ return path.call(print, "typeAnnotation");
+ }
+ /* istanbul ignore next */
+
+
+ return "";
+
+ case "TSTupleType":
+ case "TupleTypeAnnotation":
+ {
+ var typesField = n.type === "TSTupleType" ? "elementTypes" : "types";
+ return group$2(concat$6(["[", indent$3(concat$6([softline$2, printArrayItems(path, options, typesField, print)])), ifBreak$1(shouldPrintComma(options, "all") ? "," : ""), comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), softline$2, "]"]));
+ }
+
+ case "ExistsTypeAnnotation":
+ return "*";
+
+ case "EmptyTypeAnnotation":
+ return "empty";
+
+ case "AnyTypeAnnotation":
+ return "any";
+
+ case "MixedTypeAnnotation":
+ return "mixed";
+
+ case "ArrayTypeAnnotation":
+ return concat$6([path.call(print, "elementType"), "[]"]);
+
+ case "BooleanTypeAnnotation":
+ return "boolean";
+
+ case "BooleanLiteralTypeAnnotation":
+ return "" + n.value;
+
+ case "DeclareClass":
+ return printFlowDeclaration(path, printClass(path, options, print));
+
+ case "TSDeclareFunction":
+ // For TypeScript the TSDeclareFunction node shares the AST
+ // structure with FunctionDeclaration
+ return concat$6([n.declare ? "declare " : "", printFunctionDeclaration(path, print, options), semi]);
+
+ case "DeclareFunction":
+ return printFlowDeclaration(path, ["function ", path.call(print, "id"), n.predicate ? " " : "", path.call(print, "predicate"), semi]);
+
+ case "DeclareModule":
+ return printFlowDeclaration(path, ["module ", path.call(print, "id"), " ", path.call(print, "body")]);
+
+ case "DeclareModuleExports":
+ return printFlowDeclaration(path, ["module.exports", ": ", path.call(print, "typeAnnotation"), semi]);
+
+ case "DeclareVariable":
+ return printFlowDeclaration(path, ["var ", path.call(print, "id"), semi]);
+
+ case "DeclareExportAllDeclaration":
+ return concat$6(["declare export * from ", path.call(print, "source")]);
+
+ case "DeclareExportDeclaration":
+ return concat$6(["declare ", printExportDeclaration(path, options, print)]);
+
+ case "DeclareOpaqueType":
+ case "OpaqueType":
+ {
+ parts.push("opaque type ", path.call(print, "id"), path.call(print, "typeParameters"));
+
+ if (n.supertype) {
+ parts.push(": ", path.call(print, "supertype"));
+ }
+
+ if (n.impltype) {
+ parts.push(" = ", path.call(print, "impltype"));
+ }
+
+ parts.push(semi);
+
+ if (n.type === "DeclareOpaqueType") {
+ return printFlowDeclaration(path, parts);
+ }
+
+ return concat$6(parts);
+ }
+
+ case "EnumDeclaration":
+ return concat$6(["enum ", path.call(print, "id"), " ", path.call(print, "body")]);
+
+ case "EnumBooleanBody":
+ case "EnumNumberBody":
+ case "EnumStringBody":
+ case "EnumSymbolBody":
+ {
+ if (n.type === "EnumSymbolBody" || n.explicitType) {
+ var type = null;
+
+ switch (n.type) {
+ case "EnumBooleanBody":
+ type = "boolean";
+ break;
+
+ case "EnumNumberBody":
+ type = "number";
+ break;
+
+ case "EnumStringBody":
+ type = "string";
+ break;
+
+ case "EnumSymbolBody":
+ type = "symbol";
+ break;
+ }
+
+ parts.push("of ", type, " ");
+ }
+
+ if (n.members.length === 0) {
+ parts.push(group$2(concat$6(["{", comments.printDanglingComments(path, options), softline$2, "}"])));
+ } else {
+ parts.push(group$2(concat$6(["{", indent$3(concat$6([hardline$4, printArrayItems(path, options, "members", print), shouldPrintComma(options) ? "," : ""])), comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), hardline$4, "}"])));
+ }
+
+ return concat$6(parts);
+ }
+
+ case "EnumBooleanMember":
+ case "EnumNumberMember":
+ case "EnumStringMember":
+ return concat$6([path.call(print, "id"), " = ", typeof n.init === "object" ? path.call(print, "init") : String(n.init)]);
+
+ case "EnumDefaultedMember":
+ return path.call(print, "id");
+
+ case "FunctionTypeAnnotation":
+ case "TSFunctionType":
+ {
+ // FunctionTypeAnnotation is ambiguous:
+ // declare function foo(a: B): void; OR
+ // var A: (a: B) => void;
+ var _parent8 = path.getParentNode(0);
+
+ var _parentParent2 = path.getParentNode(1);
+
+ var _parentParentParent = path.getParentNode(2);
+
+ var isArrowFunctionTypeAnnotation = n.type === "TSFunctionType" || !((_parent8.type === "ObjectTypeProperty" || _parent8.type === "ObjectTypeInternalSlot") && !getFlowVariance$1(_parent8) && !_parent8.optional && options.locStart(_parent8) === options.locStart(n) || _parent8.type === "ObjectTypeCallProperty" || _parentParentParent && _parentParentParent.type === "DeclareFunction");
+ var needsColon = isArrowFunctionTypeAnnotation && (_parent8.type === "TypeAnnotation" || _parent8.type === "TSTypeAnnotation"); // Sadly we can't put it inside of FastPath::needsColon because we are
+ // printing ":" as part of the expression and it would put parenthesis
+ // around :(
+
+ var needsParens = needsColon && isArrowFunctionTypeAnnotation && (_parent8.type === "TypeAnnotation" || _parent8.type === "TSTypeAnnotation") && _parentParent2.type === "ArrowFunctionExpression";
+
+ if (isObjectTypePropertyAFunction$1(_parent8, options)) {
+ isArrowFunctionTypeAnnotation = true;
+ needsColon = true;
+ }
+
+ if (needsParens) {
+ parts.push("(");
+ }
+
+ parts.push(printFunctionParams(path, print, options,
+ /* expandArg */
+ false,
+ /* printTypeParams */
+ true)); // The returnType is not wrapped in a TypeAnnotation, so the colon
+ // needs to be added separately.
+
+ if (n.returnType || n.predicate || n.typeAnnotation) {
+ parts.push(isArrowFunctionTypeAnnotation ? " => " : ": ", path.call(print, "returnType"), path.call(print, "predicate"), path.call(print, "typeAnnotation"));
+ }
+
+ if (needsParens) {
+ parts.push(")");
+ }
+
+ return group$2(concat$6(parts));
+ }
+
+ case "TSRestType":
+ return concat$6(["...", path.call(print, "typeAnnotation")]);
+
+ case "TSOptionalType":
+ return concat$6([path.call(print, "typeAnnotation"), "?"]);
+
+ case "FunctionTypeParam":
+ return concat$6([path.call(print, "name"), printOptionalToken(path), n.name ? ": " : "", path.call(print, "typeAnnotation")]);
+
+ case "GenericTypeAnnotation":
+ return concat$6([path.call(print, "id"), path.call(print, "typeParameters")]);
+
+ case "DeclareInterface":
+ case "InterfaceDeclaration":
+ case "InterfaceTypeAnnotation":
+ {
+ if (n.type === "DeclareInterface" || n.declare) {
+ parts.push("declare ");
+ }
+
+ parts.push("interface");
+
+ if (n.type === "DeclareInterface" || n.type === "InterfaceDeclaration") {
+ parts.push(" ", path.call(print, "id"), path.call(print, "typeParameters"));
+ }
+
+ if (n["extends"].length > 0) {
+ parts.push(group$2(indent$3(concat$6([line$2, "extends ", (n.extends.length === 1 ? identity$1 : indent$3)(join$4(concat$6([",", line$2]), path.map(print, "extends")))]))));
+ }
+
+ parts.push(" ", path.call(print, "body"));
+ return group$2(concat$6(parts));
+ }
+
+ case "ClassImplements":
+ case "InterfaceExtends":
+ return concat$6([path.call(print, "id"), path.call(print, "typeParameters")]);
+
+ case "TSClassImplements":
+ return concat$6([path.call(print, "expression"), path.call(print, "typeParameters")]);
+
+ case "TSIntersectionType":
+ case "IntersectionTypeAnnotation":
+ {
+ var types = path.map(print, "types");
+ var result = [];
+ var wasIndented = false;
+
+ for (var _i = 0; _i < types.length; ++_i) {
+ if (_i === 0) {
+ result.push(types[_i]);
+ } else if (isObjectType$1(n.types[_i - 1]) && isObjectType$1(n.types[_i])) {
+ // If both are objects, don't indent
+ result.push(concat$6([" & ", wasIndented ? indent$3(types[_i]) : types[_i]]));
+ } else if (!isObjectType$1(n.types[_i - 1]) && !isObjectType$1(n.types[_i])) {
+ // If no object is involved, go to the next line if it breaks
+ result.push(indent$3(concat$6([" &", line$2, types[_i]])));
+ } else {
+ // If you go from object to non-object or vis-versa, then inline it
+ if (_i > 1) {
+ wasIndented = true;
+ }
+
+ result.push(" & ", _i > 1 ? indent$3(types[_i]) : types[_i]);
+ }
+ }
+
+ return group$2(concat$6(result));
+ }
+
+ case "TSUnionType":
+ case "UnionTypeAnnotation":
+ {
+ // single-line variation
+ // A | B | C
+ // multi-line variation
+ // | A
+ // | B
+ // | C
+ var _parent9 = path.getParentNode(); // If there's a leading comment, the parent is doing the indentation
+
+
+ var shouldIndent = _parent9.type !== "TypeParameterInstantiation" && _parent9.type !== "TSTypeParameterInstantiation" && _parent9.type !== "GenericTypeAnnotation" && _parent9.type !== "TSTypeReference" && _parent9.type !== "TSTypeAssertion" && _parent9.type !== "TupleTypeAnnotation" && _parent9.type !== "TSTupleType" && !(_parent9.type === "FunctionTypeParam" && !_parent9.name) && !((_parent9.type === "TypeAlias" || _parent9.type === "VariableDeclarator" || _parent9.type === "TSTypeAliasDeclaration") && hasLeadingOwnLineComment$1(options.originalText, n, options)); // {
+ // a: string
+ // } | null | void
+ // should be inlined and not be printed in the multi-line variant
+
+ var shouldHug = shouldHugType(n); // We want to align the children but without its comment, so it looks like
+ // | child1
+ // // comment
+ // | child2
+
+ var _printed4 = path.map(function (typePath) {
+ var printedType = typePath.call(print);
+
+ if (!shouldHug) {
+ printedType = align$1(2, printedType);
+ }
+
+ return comments.printComments(typePath, function () {
+ return printedType;
+ }, options);
+ }, "types");
+
+ if (shouldHug) {
+ return join$4(" | ", _printed4);
+ }
+
+ var shouldAddStartLine = shouldIndent && !hasLeadingOwnLineComment$1(options.originalText, n, options);
+ var code = concat$6([ifBreak$1(concat$6([shouldAddStartLine ? line$2 : "", "| "])), join$4(concat$6([line$2, "| "]), _printed4)]);
+
+ if (needsParens_1(path, options)) {
+ return group$2(concat$6([indent$3(code), softline$2]));
+ }
+
+ if (_parent9.type === "TupleTypeAnnotation" && _parent9.types.length > 1 || _parent9.type === "TSTupleType" && _parent9.elementTypes.length > 1) {
+ return group$2(concat$6([indent$3(concat$6([ifBreak$1(concat$6(["(", softline$2])), code])), softline$2, ifBreak$1(")")]));
+ }
+
+ return group$2(shouldIndent ? indent$3(code) : code);
+ }
+
+ case "NullableTypeAnnotation":
+ return concat$6(["?", path.call(print, "typeAnnotation")]);
+
+ case "TSNullKeyword":
+ case "NullLiteralTypeAnnotation":
+ return "null";
+
+ case "ThisTypeAnnotation":
+ return "this";
+
+ case "NumberTypeAnnotation":
+ return "number";
+
+ case "ObjectTypeCallProperty":
+ if (n.static) {
+ parts.push("static ");
+ }
+
+ parts.push(path.call(print, "value"));
+ return concat$6(parts);
+
+ case "ObjectTypeIndexer":
+ {
+ var _variance = getFlowVariance$1(n);
+
+ return concat$6([_variance || "", "[", path.call(print, "id"), n.id ? ": " : "", path.call(print, "key"), "]: ", path.call(print, "value")]);
+ }
+
+ case "ObjectTypeProperty":
+ {
+ var _variance2 = getFlowVariance$1(n);
+
+ var modifier = "";
+
+ if (n.proto) {
+ modifier = "proto ";
+ } else if (n.static) {
+ modifier = "static ";
+ }
+
+ return concat$6([modifier, isGetterOrSetter$1(n) ? n.kind + " " : "", _variance2 || "", printPropertyKey(path, options, print), printOptionalToken(path), isFunctionNotation$1(n, options) ? "" : ": ", path.call(print, "value")]);
+ }
+
+ case "QualifiedTypeIdentifier":
+ return concat$6([path.call(print, "qualification"), ".", path.call(print, "id")]);
+
+ case "StringLiteralTypeAnnotation":
+ return nodeStr(n, options);
+
+ case "NumberLiteralTypeAnnotation":
+ assert$1.strictEqual(typeof n.value, "number");
+
+ if (n.extra != null) {
+ return printNumber$1(n.extra.raw);
+ }
+
+ return printNumber$1(n.raw);
+
+ case "StringTypeAnnotation":
+ return "string";
+
+ case "DeclareTypeAlias":
+ case "TypeAlias":
+ {
+ if (n.type === "DeclareTypeAlias" || n.declare) {
+ parts.push("declare ");
+ }
+
+ var _printed5 = printAssignmentRight(n.id, n.right, path.call(print, "right"), options);
+
+ parts.push("type ", path.call(print, "id"), path.call(print, "typeParameters"), " =", _printed5, semi);
+ return group$2(concat$6(parts));
+ }
+
+ case "TypeCastExpression":
+ {
+ var value = path.getValue(); // Flow supports a comment syntax for specifying type annotations: https://flow.org/en/docs/types/comments/.
+ // Unfortunately, its parser doesn't differentiate between comment annotations and regular
+ // annotations when producing an AST. So to preserve parentheses around type casts that use
+ // the comment syntax, we need to hackily read the source itself to see if the code contains
+ // a type annotation comment.
+ //
+ // Note that we're able to use the normal whitespace regex here because the Flow parser has
+ // already deemed this AST node to be a type cast. Only the Babel parser needs the
+ // non-line-break whitespace regex, which is why hasFlowShorthandAnnotationComment() is
+ // implemented differently.
+
+ var commentSyntax = value && value.typeAnnotation && value.typeAnnotation.range && options.originalText.substring(value.typeAnnotation.range[0]).match(/^\/\*\s*:/);
+ return concat$6(["(", path.call(print, "expression"), commentSyntax ? " /*" : "", ": ", path.call(print, "typeAnnotation"), commentSyntax ? " */" : "", ")"]);
+ }
+
+ case "TypeParameterDeclaration":
+ case "TypeParameterInstantiation":
+ {
+ var _value = path.getValue();
+
+ var commentStart = _value.range ? options.originalText.substring(0, _value.range[0]).lastIndexOf("/*") : -1; // As noted in the TypeCastExpression comments above, we're able to use a normal whitespace regex here
+ // because we know for sure that this is a type definition.
+
+ var _commentSyntax = commentStart >= 0 && options.originalText.substring(commentStart).match(/^\/\*\s*::/);
+
+ if (_commentSyntax) {
+ return concat$6(["/*:: ", printTypeParameters(path, options, print, "params"), " */"]);
+ }
+
+ return printTypeParameters(path, options, print, "params");
+ }
+
+ case "TSTypeParameterDeclaration":
+ case "TSTypeParameterInstantiation":
+ return printTypeParameters(path, options, print, "params");
+
+ case "TSTypeParameter":
+ case "TypeParameter":
+ {
+ var _parent10 = path.getParentNode();
+
+ if (_parent10.type === "TSMappedType") {
+ parts.push("[", path.call(print, "name"));
+
+ if (n.constraint) {
+ parts.push(" in ", path.call(print, "constraint"));
+ }
+
+ parts.push("]");
+ return concat$6(parts);
+ }
+
+ var _variance3 = getFlowVariance$1(n);
+
+ if (_variance3) {
+ parts.push(_variance3);
+ }
+
+ parts.push(path.call(print, "name"));
+
+ if (n.bound) {
+ parts.push(": ");
+ parts.push(path.call(print, "bound"));
+ }
+
+ if (n.constraint) {
+ parts.push(" extends ", path.call(print, "constraint"));
+ }
+
+ if (n["default"]) {
+ parts.push(" = ", path.call(print, "default"));
+ } // Keep comma if the file extension is .tsx and
+ // has one type parameter that isn't extend with any types.
+ // Because, otherwise formatted result will be invalid as tsx.
+
+
+ var _grandParent = path.getNode(2);
+
+ if (_parent10.params && _parent10.params.length === 1 && isTSXFile$1(options) && !n.constraint && _grandParent.type === "ArrowFunctionExpression") {
+ parts.push(",");
+ }
+
+ return concat$6(parts);
+ }
+
+ case "TypeofTypeAnnotation":
+ return concat$6(["typeof ", path.call(print, "argument")]);
+
+ case "VoidTypeAnnotation":
+ return "void";
+
+ case "InferredPredicate":
+ return "%checks";
+ // Unhandled types below. If encountered, nodes of these types should
+ // be either left alone or desugared into AST types that are fully
+ // supported by the pretty-printer.
+
+ case "DeclaredPredicate":
+ return concat$6(["%checks(", path.call(print, "value"), ")"]);
+
+ case "TSAbstractKeyword":
+ return "abstract";
+
+ case "TSAnyKeyword":
+ return "any";
+
+ case "TSAsyncKeyword":
+ return "async";
+
+ case "TSBooleanKeyword":
+ return "boolean";
+
+ case "TSBigIntKeyword":
+ return "bigint";
+
+ case "TSConstKeyword":
+ return "const";
+
+ case "TSDeclareKeyword":
+ return "declare";
+
+ case "TSExportKeyword":
+ return "export";
+
+ case "TSNeverKeyword":
+ return "never";
+
+ case "TSNumberKeyword":
+ return "number";
+
+ case "TSObjectKeyword":
+ return "object";
+
+ case "TSProtectedKeyword":
+ return "protected";
+
+ case "TSPrivateKeyword":
+ return "private";
+
+ case "TSPublicKeyword":
+ return "public";
+
+ case "TSReadonlyKeyword":
+ return "readonly";
+
+ case "TSSymbolKeyword":
+ return "symbol";
+
+ case "TSStaticKeyword":
+ return "static";
+
+ case "TSStringKeyword":
+ return "string";
+
+ case "TSUndefinedKeyword":
+ return "undefined";
+
+ case "TSUnknownKeyword":
+ return "unknown";
+
+ case "TSVoidKeyword":
+ return "void";
+
+ case "TSAsExpression":
+ return concat$6([path.call(print, "expression"), " as ", path.call(print, "typeAnnotation")]);
+
+ case "TSArrayType":
+ return concat$6([path.call(print, "elementType"), "[]"]);
+
+ case "TSPropertySignature":
+ {
+ if (n.export) {
+ parts.push("export ");
+ }
+
+ if (n.accessibility) {
+ parts.push(n.accessibility + " ");
+ }
+
+ if (n.static) {
+ parts.push("static ");
+ }
+
+ if (n.readonly) {
+ parts.push("readonly ");
+ }
+
+ parts.push(printPropertyKey(path, options, print), printOptionalToken(path));
+
+ if (n.typeAnnotation) {
+ parts.push(": ");
+ parts.push(path.call(print, "typeAnnotation"));
+ } // This isn't valid semantically, but it's in the AST so we can print it.
+
+
+ if (n.initializer) {
+ parts.push(" = ", path.call(print, "initializer"));
+ }
+
+ return concat$6(parts);
+ }
+
+ case "TSParameterProperty":
+ if (n.accessibility) {
+ parts.push(n.accessibility + " ");
+ }
+
+ if (n.export) {
+ parts.push("export ");
+ }
+
+ if (n.static) {
+ parts.push("static ");
+ }
+
+ if (n.readonly) {
+ parts.push("readonly ");
+ }
+
+ parts.push(path.call(print, "parameter"));
+ return concat$6(parts);
+
+ case "TSTypeReference":
+ return concat$6([path.call(print, "typeName"), printTypeParameters(path, options, print, "typeParameters")]);
+
+ case "TSTypeQuery":
+ return concat$6(["typeof ", path.call(print, "exprName")]);
+
+ case "TSIndexSignature":
+ {
+ var _parent11 = path.getParentNode();
+
+ return concat$6([n.export ? "export " : "", n.accessibility ? concat$6([n.accessibility, " "]) : "", n.static ? "static " : "", n.readonly ? "readonly " : "", "[", n.parameters ? concat$6(path.map(print, "parameters")) : "", "]: ", path.call(print, "typeAnnotation"), _parent11.type === "ClassBody" ? semi : ""]);
+ }
+
+ case "TSTypePredicate":
+ return concat$6([n.asserts ? "asserts " : "", path.call(print, "parameterName"), n.typeAnnotation ? concat$6([" is ", path.call(print, "typeAnnotation")]) : ""]);
+
+ case "TSNonNullExpression":
+ return concat$6([path.call(print, "expression"), "!"]);
+
+ case "TSThisType":
+ return "this";
+
+ case "TSImportType":
+ return concat$6([!n.isTypeOf ? "" : "typeof ", "import(", path.call(print, "parameter"), ")", !n.qualifier ? "" : concat$6([".", path.call(print, "qualifier")]), printTypeParameters(path, options, print, "typeParameters")]);
+
+ case "TSLiteralType":
+ return path.call(print, "literal");
+
+ case "TSIndexedAccessType":
+ return concat$6([path.call(print, "objectType"), "[", path.call(print, "indexType"), "]"]);
+
+ case "TSConstructSignatureDeclaration":
+ case "TSCallSignatureDeclaration":
+ case "TSConstructorType":
+ {
+ if (n.type !== "TSCallSignatureDeclaration") {
+ parts.push("new ");
+ }
+
+ parts.push(group$2(printFunctionParams(path, print, options,
+ /* expandArg */
+ false,
+ /* printTypeParams */
+ true)));
+
+ if (n.returnType) {
+ var isType = n.type === "TSConstructorType";
+ parts.push(isType ? " => " : ": ", path.call(print, "returnType"));
+ }
+
+ return concat$6(parts);
+ }
+
+ case "TSTypeOperator":
+ return concat$6([n.operator, " ", path.call(print, "typeAnnotation")]);
+
+ case "TSMappedType":
+ {
+ var _shouldBreak3 = hasNewlineInRange$2(options.originalText, options.locStart(n), options.locEnd(n));
+
+ return group$2(concat$6(["{", indent$3(concat$6([options.bracketSpacing ? line$2 : softline$2, n.readonly ? concat$6([getTypeScriptMappedTypeModifier$1(n.readonly, "readonly"), " "]) : "", printTypeScriptModifiers(path, options, print), path.call(print, "typeParameter"), n.optional ? getTypeScriptMappedTypeModifier$1(n.optional, "?") : "", ": ", path.call(print, "typeAnnotation"), ifBreak$1(semi, "")])), comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), options.bracketSpacing ? line$2 : softline$2, "}"]), {
+ shouldBreak: _shouldBreak3
+ });
+ }
+
+ case "TSMethodSignature":
+ parts.push(n.accessibility ? concat$6([n.accessibility, " "]) : "", n.export ? "export " : "", n.static ? "static " : "", n.readonly ? "readonly " : "", n.computed ? "[" : "", path.call(print, "key"), n.computed ? "]" : "", printOptionalToken(path), printFunctionParams(path, print, options,
+ /* expandArg */
+ false,
+ /* printTypeParams */
+ true));
+
+ if (n.returnType) {
+ parts.push(": ", path.call(print, "returnType"));
+ }
+
+ return group$2(concat$6(parts));
+
+ case "TSNamespaceExportDeclaration":
+ parts.push("export as namespace ", path.call(print, "id"));
+
+ if (options.semi) {
+ parts.push(";");
+ }
+
+ return group$2(concat$6(parts));
+
+ case "TSEnumDeclaration":
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ if (n.modifiers) {
+ parts.push(printTypeScriptModifiers(path, options, print));
+ }
+
+ if (n.const) {
+ parts.push("const ");
+ }
+
+ parts.push("enum ", path.call(print, "id"), " ");
+
+ if (n.members.length === 0) {
+ parts.push(group$2(concat$6(["{", comments.printDanglingComments(path, options), softline$2, "}"])));
+ } else {
+ parts.push(group$2(concat$6(["{", indent$3(concat$6([hardline$4, printArrayItems(path, options, "members", print), shouldPrintComma(options, "es5") ? "," : ""])), comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), hardline$4, "}"])));
+ }
+
+ return concat$6(parts);
+
+ case "TSEnumMember":
+ parts.push(path.call(print, "id"));
+
+ if (n.initializer) {
+ parts.push(" = ", path.call(print, "initializer"));
+ }
+
+ return concat$6(parts);
+
+ case "TSImportEqualsDeclaration":
+ if (n.isExport) {
+ parts.push("export ");
+ }
+
+ parts.push("import ", path.call(print, "id"), " = ", path.call(print, "moduleReference"));
+
+ if (options.semi) {
+ parts.push(";");
+ }
+
+ return group$2(concat$6(parts));
+
+ case "TSExternalModuleReference":
+ return concat$6(["require(", path.call(print, "expression"), ")"]);
+
+ case "TSModuleDeclaration":
+ {
+ var _parent12 = path.getParentNode();
+
+ var isExternalModule = isLiteral$1(n.id);
+ var parentIsDeclaration = _parent12.type === "TSModuleDeclaration";
+ var bodyIsDeclaration = n.body && n.body.type === "TSModuleDeclaration";
+
+ if (parentIsDeclaration) {
+ parts.push(".");
+ } else {
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ parts.push(printTypeScriptModifiers(path, options, print));
+ var textBetweenNodeAndItsId = options.originalText.slice(options.locStart(n), options.locStart(n.id)); // Global declaration looks like this:
+ // (declare)? global { ... }
+
+ var isGlobalDeclaration = n.id.type === "Identifier" && n.id.name === "global" && !/namespace|module/.test(textBetweenNodeAndItsId);
+
+ if (!isGlobalDeclaration) {
+ parts.push(isExternalModule || /(^|\s)module(\s|$)/.test(textBetweenNodeAndItsId) ? "module " : "namespace ");
+ }
+ }
+
+ parts.push(path.call(print, "id"));
+
+ if (bodyIsDeclaration) {
+ parts.push(path.call(print, "body"));
+ } else if (n.body) {
+ parts.push(" ", group$2(path.call(print, "body")));
+ } else {
+ parts.push(semi);
+ }
+
+ return concat$6(parts);
+ }
+
+ case "PrivateName":
+ return concat$6(["#", path.call(print, "id")]);
+
+ case "TSConditionalType":
+ return printTernaryOperator(path, options, print, {
+ beforeParts: function beforeParts() {
+ return [path.call(print, "checkType"), " ", "extends", " ", path.call(print, "extendsType")];
+ },
+ afterParts: function afterParts() {
+ return [];
+ },
+ shouldCheckJsx: false,
+ conditionalNodeType: "TSConditionalType",
+ consequentNodePropertyName: "trueType",
+ alternateNodePropertyName: "falseType",
+ testNodePropertyName: "checkType",
+ breakNested: true
+ });
+
+ case "TSInferType":
+ return concat$6(["infer", " ", path.call(print, "typeParameter")]);
+
+ case "InterpreterDirective":
+ parts.push("#!", n.value, hardline$4);
+
+ if (isNextLineEmpty$2(options.originalText, n, options)) {
+ parts.push(hardline$4);
+ }
+
+ return concat$6(parts);
+
+ case "NGRoot":
+ return concat$6([].concat(path.call(print, "node"), !n.node.comments || n.node.comments.length === 0 ? [] : concat$6([" //", n.node.comments[0].value.trimRight()])));
+
+ case "NGChainedExpression":
+ return group$2(join$4(concat$6([";", line$2]), path.map(function (childPath) {
+ return hasNgSideEffect$1(childPath) ? print(childPath) : concat$6(["(", print(childPath), ")"]);
+ }, "expressions")));
+
+ case "NGEmptyExpression":
+ return "";
+
+ case "NGQuotedExpression":
+ return concat$6([n.prefix, ":", n.value]);
+
+ case "NGMicrosyntax":
+ return concat$6(path.map(function (childPath, index) {
+ return concat$6([index === 0 ? "" : isNgForOf$1(childPath.getValue(), index, n) ? " " : concat$6([";", line$2]), print(childPath)]);
+ }, "body"));
+
+ case "NGMicrosyntaxKey":
+ return /^[a-z_$][a-z0-9_$]*(-[a-z_$][a-z0-9_$])*$/i.test(n.name) ? n.name : JSON.stringify(n.name);
+
+ case "NGMicrosyntaxExpression":
+ return concat$6([path.call(print, "expression"), n.alias === null ? "" : concat$6([" as ", path.call(print, "alias")])]);
+
+ case "NGMicrosyntaxKeyedExpression":
+ {
+ var index = path.getName();
+
+ var _parentNode2 = path.getParentNode();
+
+ var shouldNotPrintColon = isNgForOf$1(n, index, _parentNode2) || (index === 1 && (n.key.name === "then" || n.key.name === "else") || index === 2 && n.key.name === "else" && _parentNode2.body[index - 1].type === "NGMicrosyntaxKeyedExpression" && _parentNode2.body[index - 1].key.name === "then") && _parentNode2.body[0].type === "NGMicrosyntaxExpression";
+ return concat$6([path.call(print, "key"), shouldNotPrintColon ? " " : ": ", path.call(print, "expression")]);
+ }
+
+ case "NGMicrosyntaxLet":
+ return concat$6(["let ", path.call(print, "key"), n.value === null ? "" : concat$6([" = ", path.call(print, "value")])]);
+
+ case "NGMicrosyntaxAs":
+ return concat$6([path.call(print, "key"), " as ", path.call(print, "alias")]);
+
+ case "ArgumentPlaceholder":
+ return "?";
+
+ default:
+ /* istanbul ignore next */
+ throw new Error("unknown type: " + JSON.stringify(n.type));
+ }
+}
+
+function printStatementSequence(path, options, print) {
+ var printed = [];
+ var bodyNode = path.getNode();
+ var isClass = bodyNode.type === "ClassBody";
+ path.map(function (stmtPath, i) {
+ var stmt = stmtPath.getValue(); // Just in case the AST has been modified to contain falsy
+ // "statements," it's safer simply to skip them.
+
+ /* istanbul ignore if */
+
+ if (!stmt) {
+ return;
+ } // Skip printing EmptyStatement nodes to avoid leaving stray
+ // semicolons lying around.
+
+
+ if (stmt.type === "EmptyStatement") {
+ return;
+ }
+
+ var stmtPrinted = print(stmtPath);
+ var text = options.originalText;
+ var parts = []; // in no-semi mode, prepend statement with semicolon if it might break ASI
+ // don't prepend the only JSX element in a program with semicolon
+
+ if (!options.semi && !isClass && !isTheOnlyJSXElementInMarkdown$1(options, stmtPath) && stmtNeedsASIProtection(stmtPath, options)) {
+ if (stmt.comments && stmt.comments.some(function (comment) {
+ return comment.leading;
+ })) {
+ parts.push(print(stmtPath, {
+ needsSemi: true
+ }));
+ } else {
+ parts.push(";", stmtPrinted);
+ }
+ } else {
+ parts.push(stmtPrinted);
+ }
+
+ if (!options.semi && isClass) {
+ if (classPropMayCauseASIProblems$1(stmtPath)) {
+ parts.push(";");
+ } else if (stmt.type === "ClassProperty") {
+ var nextChild = bodyNode.body[i + 1];
+
+ if (classChildNeedsASIProtection$1(nextChild)) {
+ parts.push(";");
+ }
+ }
+ }
+
+ if (isNextLineEmpty$2(text, stmt, options) && !isLastStatement$1(stmtPath)) {
+ parts.push(hardline$4);
+ }
+
+ printed.push(concat$6(parts));
+ });
+ return join$4(hardline$4, printed);
+}
+
+function printPropertyKey(path, options, print) {
+ var node = path.getNode();
+
+ if (node.computed) {
+ return concat$6(["[", path.call(print, "key"), "]"]);
+ }
+
+ var parent = path.getParentNode();
+ var key = node.key;
+
+ if (options.quoteProps === "consistent" && !needsQuoteProps.has(parent)) {
+ var objectHasStringProp = (parent.properties || parent.body || parent.members).some(function (prop) {
+ return !prop.computed && prop.key && isStringLiteral$1(prop.key) && !isStringPropSafeToCoerceToIdentifier$1(prop, options);
+ });
+ needsQuoteProps.set(parent, objectHasStringProp);
+ }
+
+ if (key.type === "Identifier" && (options.parser === "json" || options.quoteProps === "consistent" && needsQuoteProps.get(parent))) {
+ // a -> "a"
+ var prop = printString$1(JSON.stringify(key.name), options);
+ return path.call(function (keyPath) {
+ return comments.printComments(keyPath, function () {
+ return prop;
+ }, options);
+ }, "key");
+ }
+
+ if (isStringPropSafeToCoerceToIdentifier$1(node, options) && (options.quoteProps === "as-needed" || options.quoteProps === "consistent" && !needsQuoteProps.get(parent))) {
+ // 'a' -> a
+ return path.call(function (keyPath) {
+ return comments.printComments(keyPath, function () {
+ return key.value;
+ }, options);
+ }, "key");
+ }
+
+ return path.call(print, "key");
+}
+
+function printMethod(path, options, print) {
+ var node = path.getNode();
+ var kind = node.kind;
+ var value = node.value || node;
+ var parts = [];
+
+ if (!kind || kind === "init" || kind === "method" || kind === "constructor") {
+ if (value.async) {
+ parts.push("async ");
+ }
+
+ if (value.generator) {
+ parts.push("*");
+ }
+ } else {
+ assert$1.ok(kind === "get" || kind === "set");
+ parts.push(kind, " ");
+ }
+
+ parts.push(printPropertyKey(path, options, print), node.optional || node.key.optional ? "?" : "", node === value ? printMethodInternal(path, options, print) : path.call(function (path) {
+ return printMethodInternal(path, options, print);
+ }, "value"));
+ return concat$6(parts);
+}
+
+function printMethodInternal(path, options, print) {
+ var parts = [printFunctionTypeParameters(path, options, print), group$2(concat$6([printFunctionParams(path, print, options), printReturnType(path, print, options)]))];
+
+ if (path.getNode().body) {
+ parts.push(" ", path.call(print, "body"));
+ } else {
+ parts.push(options.semi ? ";" : "");
+ }
+
+ return concat$6(parts);
+}
+
+function couldGroupArg(arg) {
+ return arg.type === "ObjectExpression" && (arg.properties.length > 0 || arg.comments) || arg.type === "ArrayExpression" && (arg.elements.length > 0 || arg.comments) || arg.type === "TSTypeAssertion" && couldGroupArg(arg.expression) || arg.type === "TSAsExpression" && couldGroupArg(arg.expression) || arg.type === "FunctionExpression" || arg.type === "ArrowFunctionExpression" && ( // we want to avoid breaking inside composite return types but not simple keywords
+ // https://github.com/prettier/prettier/issues/4070
+ // export class Thing implements OtherThing {
+ // do: (type: Type) => Provider<Prop> = memoize(
+ // (type: ObjectType): Provider<Opts> => {}
+ // );
+ // }
+ // https://github.com/prettier/prettier/issues/6099
+ // app.get("/", (req, res): void => {
+ // res.send("Hello World!");
+ // });
+ !arg.returnType || !arg.returnType.typeAnnotation || arg.returnType.typeAnnotation.type !== "TSTypeReference") && (arg.body.type === "BlockStatement" || arg.body.type === "ArrowFunctionExpression" || arg.body.type === "ObjectExpression" || arg.body.type === "ArrayExpression" || arg.body.type === "CallExpression" || arg.body.type === "OptionalCallExpression" || arg.body.type === "ConditionalExpression" || isJSXNode$1(arg.body));
+}
+
+function shouldGroupLastArg(args) {
+ var lastArg = getLast$2(args);
+ var penultimateArg = getPenultimate$1(args);
+ return !hasLeadingComment$3(lastArg) && !hasTrailingComment$1(lastArg) && couldGroupArg(lastArg) && ( // If the last two arguments are of the same type,
+ // disable last element expansion.
+ !penultimateArg || penultimateArg.type !== lastArg.type);
+}
+
+function shouldGroupFirstArg(args) {
+ if (args.length !== 2) {
+ return false;
+ }
+
+ var firstArg = args[0];
+ var secondArg = args[1];
+ return (!firstArg.comments || !firstArg.comments.length) && (firstArg.type === "FunctionExpression" || firstArg.type === "ArrowFunctionExpression" && firstArg.body.type === "BlockStatement") && secondArg.type !== "FunctionExpression" && secondArg.type !== "ArrowFunctionExpression" && secondArg.type !== "ConditionalExpression" && !couldGroupArg(secondArg);
+}
+
+function printJestEachTemplateLiteral(node, expressions, options) {
+ /**
+ * a | b | expected
+ * ${1} | ${1} | ${2}
+ * ${1} | ${2} | ${3}
+ * ${2} | ${1} | ${3}
+ */
+ var headerNames = node.quasis[0].value.raw.trim().split(/\s*\|\s*/);
+
+ if (headerNames.length > 1 || headerNames.some(function (headerName) {
+ return headerName.length !== 0;
+ })) {
+ var parts = [];
+ var stringifiedExpressions = expressions.map(function (doc) {
+ return "${" + printDocToString$2(doc, Object.assign({}, options, {
+ printWidth: Infinity,
+ endOfLine: "lf"
+ })).formatted + "}";
+ });
+ var tableBody = [{
+ hasLineBreak: false,
+ cells: []
+ }];
+
+ for (var i = 1; i < node.quasis.length; i++) {
+ var row = tableBody[tableBody.length - 1];
+ var correspondingExpression = stringifiedExpressions[i - 1];
+ row.cells.push(correspondingExpression);
+
+ if (correspondingExpression.indexOf("\n") !== -1) {
+ row.hasLineBreak = true;
+ }
+
+ if (node.quasis[i].value.raw.indexOf("\n") !== -1) {
+ tableBody.push({
+ hasLineBreak: false,
+ cells: []
+ });
+ }
+ }
+
+ var maxColumnCount = tableBody.reduce(function (maxColumnCount, row) {
+ return Math.max(maxColumnCount, row.cells.length);
+ }, headerNames.length);
+ var maxColumnWidths = Array.from(new Array(maxColumnCount), function () {
+ return 0;
+ });
+ var table = [{
+ cells: headerNames
+ }].concat(tableBody.filter(function (row) {
+ return row.cells.length !== 0;
+ }));
+ table.filter(function (row) {
+ return !row.hasLineBreak;
+ }).forEach(function (row) {
+ row.cells.forEach(function (cell, index) {
+ maxColumnWidths[index] = Math.max(maxColumnWidths[index], getStringWidth$2(cell));
+ });
+ });
+ parts.push(lineSuffixBoundary$1, "`", indent$3(concat$6([hardline$4, join$4(hardline$4, table.map(function (row) {
+ return join$4(" | ", row.cells.map(function (cell, index) {
+ return row.hasLineBreak ? cell : cell + " ".repeat(maxColumnWidths[index] - getStringWidth$2(cell));
+ }));
+ }))])), hardline$4, "`");
+ return concat$6(parts);
+ }
+}
+
+function printArgumentsList(path, options, print) {
+ var node = path.getValue();
+ var args = node.arguments;
+
+ if (args.length === 0) {
+ return concat$6(["(", comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), ")"]);
+ } // useEffect(() => { ... }, [foo, bar, baz])
+
+
+ if (args.length === 2 && args[0].type === "ArrowFunctionExpression" && args[0].params.length === 0 && args[0].body.type === "BlockStatement" && args[1].type === "ArrayExpression" && !args.find(function (arg) {
+ return arg.comments;
+ })) {
+ return concat$6(["(", path.call(print, "arguments", 0), ", ", path.call(print, "arguments", 1), ")"]);
+ } // func(
+ // ({
+ // a,
+ // b
+ // }) => {}
+ // );
+
+
+ function shouldBreakForArrowFunctionInArguments(arg, argPath) {
+ if (!arg || arg.type !== "ArrowFunctionExpression" || !arg.body || arg.body.type !== "BlockStatement" || !arg.params || arg.params.length < 1) {
+ return false;
+ }
+
+ var shouldBreak = false;
+ argPath.each(function (paramPath) {
+ var printed = concat$6([print(paramPath)]);
+ shouldBreak = shouldBreak || willBreak$1(printed);
+ }, "params");
+ return shouldBreak;
+ }
+
+ var anyArgEmptyLine = false;
+ var shouldBreakForArrowFunction = false;
+ var hasEmptyLineFollowingFirstArg = false;
+ var lastArgIndex = args.length - 1;
+ var printedArguments = path.map(function (argPath, index) {
+ var arg = argPath.getNode();
+ var parts = [print(argPath)];
+
+ if (index === lastArgIndex) ; else if (isNextLineEmpty$2(options.originalText, arg, options)) {
+ if (index === 0) {
+ hasEmptyLineFollowingFirstArg = true;
+ }
+
+ anyArgEmptyLine = true;
+ parts.push(",", hardline$4, hardline$4);
+ } else {
+ parts.push(",", line$2);
+ }
+
+ shouldBreakForArrowFunction = shouldBreakForArrowFunctionInArguments(arg, argPath);
+ return concat$6(parts);
+ }, "arguments");
+ var maybeTrailingComma = // Dynamic imports cannot have trailing commas
+ !(node.callee && node.callee.type === "Import") && shouldPrintComma(options, "all") ? "," : "";
+
+ function allArgsBrokenOut() {
+ return group$2(concat$6(["(", indent$3(concat$6([line$2, concat$6(printedArguments)])), maybeTrailingComma, line$2, ")"]), {
+ shouldBreak: true
+ });
+ }
+
+ if (isFunctionCompositionArgs$1(args)) {
+ return allArgsBrokenOut();
+ }
+
+ var shouldGroupFirst = shouldGroupFirstArg(args);
+ var shouldGroupLast = shouldGroupLastArg(args);
+
+ if (shouldGroupFirst || shouldGroupLast) {
+ var shouldBreak = (shouldGroupFirst ? printedArguments.slice(1).some(willBreak$1) : printedArguments.slice(0, -1).some(willBreak$1)) || anyArgEmptyLine || shouldBreakForArrowFunction; // We want to print the last argument with a special flag
+
+ var printedExpanded;
+ var i = 0;
+ path.each(function (argPath) {
+ if (shouldGroupFirst && i === 0) {
+ printedExpanded = [concat$6([argPath.call(function (p) {
+ return print(p, {
+ expandFirstArg: true
+ });
+ }), printedArguments.length > 1 ? "," : "", hasEmptyLineFollowingFirstArg ? hardline$4 : line$2, hasEmptyLineFollowingFirstArg ? hardline$4 : ""])].concat(printedArguments.slice(1));
+ }
+
+ if (shouldGroupLast && i === args.length - 1) {
+ printedExpanded = printedArguments.slice(0, -1).concat(argPath.call(function (p) {
+ return print(p, {
+ expandLastArg: true
+ });
+ }));
+ }
+
+ i++;
+ }, "arguments");
+ var somePrintedArgumentsWillBreak = printedArguments.some(willBreak$1);
+ var simpleConcat = concat$6(["(", concat$6(printedExpanded), ")"]);
+ return concat$6([somePrintedArgumentsWillBreak ? breakParent$2 : "", conditionalGroup$1([!somePrintedArgumentsWillBreak && !node.typeArguments && !node.typeParameters ? simpleConcat : ifBreak$1(allArgsBrokenOut(), simpleConcat), shouldGroupFirst ? concat$6(["(", group$2(printedExpanded[0], {
+ shouldBreak: true
+ }), concat$6(printedExpanded.slice(1)), ")"]) : concat$6(["(", concat$6(printedArguments.slice(0, -1)), group$2(getLast$2(printedExpanded), {
+ shouldBreak: true
+ }), ")"]), allArgsBrokenOut()], {
+ shouldBreak
+ })]);
+ }
+
+ var contents = concat$6(["(", indent$3(concat$6([softline$2, concat$6(printedArguments)])), ifBreak$1(maybeTrailingComma), softline$2, ")"]);
+
+ if (isLongCurriedCallExpression$1(path)) {
+ // By not wrapping the arguments in a group, the printer prioritizes
+ // breaking up these arguments rather than the args of the parent call.
+ return contents;
+ }
+
+ return group$2(contents, {
+ shouldBreak: printedArguments.some(willBreak$1) || anyArgEmptyLine
+ });
+}
+
+function printTypeAnnotation(path, options, print) {
+ var node = path.getValue();
+
+ if (!node.typeAnnotation) {
+ return "";
+ }
+
+ var parentNode = path.getParentNode();
+ var isDefinite = node.definite || parentNode && parentNode.type === "VariableDeclarator" && parentNode.definite;
+ var isFunctionDeclarationIdentifier = parentNode.type === "DeclareFunction" && parentNode.id === node;
+
+ if (isFlowAnnotationComment$1(options.originalText, node.typeAnnotation, options)) {
+ return concat$6([" /*: ", path.call(print, "typeAnnotation"), " */"]);
+ }
+
+ return concat$6([isFunctionDeclarationIdentifier ? "" : isDefinite ? "!: " : ": ", path.call(print, "typeAnnotation")]);
+}
+
+function printFunctionTypeParameters(path, options, print) {
+ var fun = path.getValue();
+
+ if (fun.typeArguments) {
+ return path.call(print, "typeArguments");
+ }
+
+ if (fun.typeParameters) {
+ return path.call(print, "typeParameters");
+ }
+
+ return "";
+}
+
+function printFunctionParams(path, print, options, expandArg, printTypeParams) {
+ var fun = path.getValue();
+ var parent = path.getParentNode();
+ var paramsField = fun.parameters ? "parameters" : "params";
+ var isParametersInTestCall = isTestCall$1(parent);
+ var shouldHugParameters = shouldHugArguments(fun);
+ var shouldExpandParameters = expandArg && !(fun[paramsField] && fun[paramsField].some(function (n) {
+ return n.comments;
+ }));
+ var typeParams = printTypeParams ? printFunctionTypeParameters(path, options, print) : "";
+ var printed = [];
+
+ if (fun[paramsField]) {
+ var lastArgIndex = fun[paramsField].length - 1;
+ printed = path.map(function (childPath, index) {
+ var parts = [];
+ var param = childPath.getValue();
+ parts.push(print(childPath));
+
+ if (index === lastArgIndex) {
+ if (fun.rest) {
+ parts.push(",", line$2);
+ }
+ } else if (isParametersInTestCall || shouldHugParameters || shouldExpandParameters) {
+ parts.push(", ");
+ } else if (isNextLineEmpty$2(options.originalText, param, options)) {
+ parts.push(",", hardline$4, hardline$4);
+ } else {
+ parts.push(",", line$2);
+ }
+
+ return concat$6(parts);
+ }, paramsField);
+ }
+
+ if (fun.rest) {
+ printed.push(concat$6(["...", path.call(print, "rest")]));
+ }
+
+ if (printed.length === 0) {
+ return concat$6([typeParams, "(", comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true, function (comment) {
+ return getNextNonSpaceNonCommentCharacter$1(options.originalText, comment, options.locEnd) === ")";
+ }), ")"]);
+ }
+
+ var lastParam = getLast$2(fun[paramsField]); // If the parent is a call with the first/last argument expansion and this is the
+ // params of the first/last argument, we don't want the arguments to break and instead
+ // want the whole expression to be on a new line.
+ //
+ // Good: Bad:
+ // verylongcall( verylongcall((
+ // (a, b) => { a,
+ // } b,
+ // }) ) => {
+ // })
+
+ if (shouldExpandParameters) {
+ return group$2(concat$6([removeLines$1(typeParams), "(", concat$6(printed.map(removeLines$1)), ")"]));
+ } // Single object destructuring should hug
+ //
+ // function({
+ // a,
+ // b,
+ // c
+ // }) {}
+
+
+ var hasNotParameterDecorator = fun[paramsField].every(function (param) {
+ return !param.decorators;
+ });
+
+ if (shouldHugParameters && hasNotParameterDecorator) {
+ return concat$6([typeParams, "(", concat$6(printed), ")"]);
+ } // don't break in specs, eg; `it("should maintain parens around done even when long", (done) => {})`
+
+
+ if (isParametersInTestCall) {
+ return concat$6([typeParams, "(", concat$6(printed), ")"]);
+ }
+
+ var isFlowShorthandWithOneArg = (isObjectTypePropertyAFunction$1(parent, options) || isTypeAnnotationAFunction$1(parent, options) || parent.type === "TypeAlias" || parent.type === "UnionTypeAnnotation" || parent.type === "TSUnionType" || parent.type === "IntersectionTypeAnnotation" || parent.type === "FunctionTypeAnnotation" && parent.returnType === fun) && fun[paramsField].length === 1 && fun[paramsField][0].name === null && fun[paramsField][0].typeAnnotation && fun.typeParameters === null && isSimpleFlowType$1(fun[paramsField][0].typeAnnotation) && !fun.rest;
+
+ if (isFlowShorthandWithOneArg) {
+ if (options.arrowParens === "always") {
+ return concat$6(["(", concat$6(printed), ")"]);
+ }
+
+ return concat$6(printed);
+ }
+
+ var canHaveTrailingComma = !(lastParam && lastParam.type === "RestElement") && !fun.rest;
+ return concat$6([typeParams, "(", indent$3(concat$6([softline$2, concat$6(printed)])), ifBreak$1(canHaveTrailingComma && shouldPrintComma(options, "all") ? "," : ""), softline$2, ")"]);
+}
+
+function shouldPrintParamsWithoutParens(path, options) {
+ if (options.arrowParens === "always") {
+ return false;
+ }
+
+ if (options.arrowParens === "avoid") {
+ var node = path.getValue();
+ return canPrintParamsWithoutParens(node);
+ } // Fallback default; should be unreachable
+
+
+ return false;
+}
+
+function canPrintParamsWithoutParens(node) {
+ return node.params.length === 1 && !node.rest && !node.typeParameters && !hasDanglingComments$1(node) && node.params[0].type === "Identifier" && !node.params[0].typeAnnotation && !node.params[0].comments && !node.params[0].optional && !node.predicate && !node.returnType;
+}
+
+function printFunctionDeclaration(path, print, options) {
+ var n = path.getValue();
+ var parts = [];
+
+ if (n.async) {
+ parts.push("async ");
+ }
+
+ parts.push("function");
+
+ if (n.generator) {
+ parts.push("*");
+ }
+
+ if (n.id) {
+ parts.push(" ", path.call(print, "id"));
+ }
+
+ parts.push(printFunctionTypeParameters(path, options, print), group$2(concat$6([printFunctionParams(path, print, options), printReturnType(path, print, options)])), n.body ? " " : "", path.call(print, "body"));
+ return concat$6(parts);
+}
+
+function printReturnType(path, print, options) {
+ var n = path.getValue();
+ var returnType = path.call(print, "returnType");
+
+ if (n.returnType && isFlowAnnotationComment$1(options.originalText, n.returnType, options)) {
+ return concat$6([" /*: ", returnType, " */"]);
+ }
+
+ var parts = [returnType]; // prepend colon to TypeScript type annotation
+
+ if (n.returnType && n.returnType.typeAnnotation) {
+ parts.unshift(": ");
+ }
+
+ if (n.predicate) {
+ // The return type will already add the colon, but otherwise we
+ // need to do it ourselves
+ parts.push(n.returnType ? " " : ": ", path.call(print, "predicate"));
+ }
+
+ return concat$6(parts);
+}
+
+function printExportDeclaration(path, options, print) {
+ var decl = path.getValue();
+ var semi = options.semi ? ";" : "";
+ var parts = ["export "];
+ var isDefault = decl["default"] || decl.type === "ExportDefaultDeclaration";
+
+ if (isDefault) {
+ parts.push("default ");
+ }
+
+ parts.push(comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true));
+
+ if (needsHardlineAfterDanglingComment$1(decl)) {
+ parts.push(hardline$4);
+ }
+
+ if (decl.declaration) {
+ parts.push(path.call(print, "declaration"));
+
+ if (isDefault && decl.declaration.type !== "ClassDeclaration" && decl.declaration.type !== "FunctionDeclaration" && decl.declaration.type !== "TSInterfaceDeclaration" && decl.declaration.type !== "DeclareClass" && decl.declaration.type !== "DeclareFunction" && decl.declaration.type !== "TSDeclareFunction") {
+ parts.push(semi);
+ }
+ } else {
+ if (decl.specifiers && decl.specifiers.length > 0) {
+ var specifiers = [];
+ var defaultSpecifiers = [];
+ var namespaceSpecifiers = [];
+ path.each(function (specifierPath) {
+ var specifierType = path.getValue().type;
+
+ if (specifierType === "ExportSpecifier") {
+ specifiers.push(print(specifierPath));
+ } else if (specifierType === "ExportDefaultSpecifier") {
+ defaultSpecifiers.push(print(specifierPath));
+ } else if (specifierType === "ExportNamespaceSpecifier") {
+ namespaceSpecifiers.push(concat$6(["* as ", print(specifierPath)]));
+ }
+ }, "specifiers");
+ var isNamespaceFollowed = namespaceSpecifiers.length !== 0 && specifiers.length !== 0;
+ var isDefaultFollowed = defaultSpecifiers.length !== 0 && (namespaceSpecifiers.length !== 0 || specifiers.length !== 0);
+ var canBreak = specifiers.length > 1 || defaultSpecifiers.length > 0 || decl.specifiers && decl.specifiers.some(function (node) {
+ return node.comments;
+ });
+ var printed = "";
+
+ if (specifiers.length !== 0) {
+ if (canBreak) {
+ printed = group$2(concat$6(["{", indent$3(concat$6([options.bracketSpacing ? line$2 : softline$2, join$4(concat$6([",", line$2]), specifiers)])), ifBreak$1(shouldPrintComma(options) ? "," : ""), options.bracketSpacing ? line$2 : softline$2, "}"]));
+ } else {
+ printed = concat$6(["{", options.bracketSpacing ? " " : "", concat$6(specifiers), options.bracketSpacing ? " " : "", "}"]);
+ }
+ }
+
+ parts.push(decl.exportKind === "type" ? "type " : "", concat$6(defaultSpecifiers), concat$6([isDefaultFollowed ? ", " : ""]), concat$6(namespaceSpecifiers), concat$6([isNamespaceFollowed ? ", " : ""]), printed);
+ } else {
+ parts.push("{}");
+ }
+
+ if (decl.source) {
+ parts.push(" from ", path.call(print, "source"));
+ }
+
+ parts.push(semi);
+ }
+
+ return concat$6(parts);
+}
+
+function printFlowDeclaration(path, parts) {
+ var parentExportDecl = getParentExportDeclaration$1(path);
+
+ if (parentExportDecl) {
+ assert$1.strictEqual(parentExportDecl.type, "DeclareExportDeclaration");
+ } else {
+ // If the parent node has type DeclareExportDeclaration, then it
+ // will be responsible for printing the "declare" token. Otherwise
+ // it needs to be printed with this non-exported declaration node.
+ parts.unshift("declare ");
+ }
+
+ return concat$6(parts);
+}
+
+function printTypeScriptModifiers(path, options, print) {
+ var n = path.getValue();
+
+ if (!n.modifiers || !n.modifiers.length) {
+ return "";
+ }
+
+ return concat$6([join$4(" ", path.map(print, "modifiers")), " "]);
+}
+
+function printTypeParameters(path, options, print, paramsKey) {
+ var n = path.getValue();
+
+ if (!n[paramsKey]) {
+ return "";
+ } // for TypeParameterDeclaration typeParameters is a single node
+
+
+ if (!Array.isArray(n[paramsKey])) {
+ return path.call(print, paramsKey);
+ }
+
+ var grandparent = path.getNode(2);
+ var greatGreatGrandParent = path.getNode(4);
+ var isParameterInTestCall = grandparent != null && isTestCall$1(grandparent);
+ var shouldInline = isParameterInTestCall || n[paramsKey].length === 0 || n[paramsKey].length === 1 && (shouldHugType(n[paramsKey][0]) || n[paramsKey][0].type === "GenericTypeAnnotation" && shouldHugType(n[paramsKey][0].id) || n[paramsKey][0].type === "TSTypeReference" && shouldHugType(n[paramsKey][0].typeName) || n[paramsKey][0].type === "NullableTypeAnnotation" || // See https://github.com/prettier/prettier/pull/6467 for the context.
+ greatGreatGrandParent && greatGreatGrandParent.type === "VariableDeclarator" && grandparent && grandparent.type === "TSTypeAnnotation" && n[paramsKey][0].type !== "TSUnionType" && n[paramsKey][0].type !== "UnionTypeAnnotation" && n[paramsKey][0].type !== "TSConditionalType" && n[paramsKey][0].type !== "TSMappedType");
+
+ if (shouldInline) {
+ return concat$6(["<", join$4(", ", path.map(print, paramsKey)), ">"]);
+ }
+
+ return group$2(concat$6(["<", indent$3(concat$6([softline$2, join$4(concat$6([",", line$2]), path.map(print, paramsKey))])), ifBreak$1(options.parser !== "typescript" && shouldPrintComma(options, "all") ? "," : ""), softline$2, ">"]));
+}
+
+function printClass(path, options, print) {
+ var n = path.getValue();
+ var parts = [];
+
+ if (n.abstract) {
+ parts.push("abstract ");
+ }
+
+ parts.push("class");
+
+ if (n.id) {
+ parts.push(" ", path.call(print, "id"));
+ }
+
+ parts.push(path.call(print, "typeParameters"));
+ var partsGroup = [];
+
+ if (n.superClass) {
+ var printed = concat$6(["extends ", path.call(print, "superClass"), path.call(print, "superTypeParameters")]); // Keep old behaviour of extends in same line
+ // If there is only on extends and there are not comments
+
+ if ((!n.implements || n.implements.length === 0) && (!n.superClass.comments || n.superClass.comments.length === 0)) {
+ parts.push(concat$6([" ", path.call(function (superClass) {
+ return comments.printComments(superClass, function () {
+ return printed;
+ }, options);
+ }, "superClass")]));
+ } else {
+ partsGroup.push(group$2(concat$6([line$2, path.call(function (superClass) {
+ return comments.printComments(superClass, function () {
+ return printed;
+ }, options);
+ }, "superClass")])));
+ }
+ } else if (n.extends && n.extends.length > 0) {
+ parts.push(" extends ", join$4(", ", path.map(print, "extends")));
+ }
+
+ if (n["mixins"] && n["mixins"].length > 0) {
+ partsGroup.push(line$2, "mixins ", group$2(indent$3(join$4(concat$6([",", line$2]), path.map(print, "mixins")))));
+ }
+
+ if (n["implements"] && n["implements"].length > 0) {
+ partsGroup.push(line$2, "implements", group$2(indent$3(concat$6([line$2, join$4(concat$6([",", line$2]), path.map(print, "implements"))]))));
+ }
+
+ if (partsGroup.length > 0) {
+ parts.push(group$2(indent$3(concat$6(partsGroup))));
+ }
+
+ if (n.body && n.body.comments && hasLeadingOwnLineComment$1(options.originalText, n.body, options)) {
+ parts.push(hardline$4);
+ } else {
+ parts.push(" ");
+ }
+
+ parts.push(path.call(print, "body"));
+ return parts;
+}
+
+function printOptionalToken(path) {
+ var node = path.getValue();
+
+ if (!node.optional || // It's an optional computed method parsed by typescript-estree.
+ // "?" is printed in `printMethod`.
+ node.type === "Identifier" && node === path.getParentNode().key) {
+ return "";
+ }
+
+ if (node.type === "OptionalCallExpression" || node.type === "OptionalMemberExpression" && node.computed) {
+ return "?.";
+ }
+
+ return "?";
+}
+
+function printMemberLookup(path, options, print) {
+ var property = path.call(print, "property");
+ var n = path.getValue();
+ var optional = printOptionalToken(path);
+
+ if (!n.computed) {
+ return concat$6([optional, ".", property]);
+ }
+
+ if (!n.property || isNumericLiteral$1(n.property)) {
+ return concat$6([optional, "[", property, "]"]);
+ }
+
+ return group$2(concat$6([optional, "[", indent$3(concat$6([softline$2, property])), softline$2, "]"]));
+}
+
+function printBindExpressionCallee(path, options, print) {
+ return concat$6(["::", path.call(print, "callee")]);
+} // We detect calls on member expressions specially to format a
+// common pattern better. The pattern we are looking for is this:
+//
+// arr
+// .map(x => x + 1)
+// .filter(x => x > 10)
+// .some(x => x % 2)
+//
+// The way it is structured in the AST is via a nested sequence of
+// MemberExpression and CallExpression. We need to traverse the AST
+// and make groups out of it to print it in the desired way.
+
+
+function printMemberChain(path, options, print) {
+ // The first phase is to linearize the AST by traversing it down.
+ //
+ // a().b()
+ // has the following AST structure:
+ // CallExpression(MemberExpression(CallExpression(Identifier)))
+ // and we transform it into
+ // [Identifier, CallExpression, MemberExpression, CallExpression]
+ var printedNodes = []; // Here we try to retain one typed empty line after each call expression or
+ // the first group whether it is in parentheses or not
+
+ function shouldInsertEmptyLineAfter(node) {
+ var originalText = options.originalText;
+ var nextCharIndex = getNextNonSpaceNonCommentCharacterIndex$2(originalText, node, options);
+ var nextChar = originalText.charAt(nextCharIndex); // if it is cut off by a parenthesis, we only account for one typed empty
+ // line after that parenthesis
+
+ if (nextChar == ")") {
+ return isNextLineEmptyAfterIndex$1(originalText, nextCharIndex + 1, options);
+ }
+
+ return isNextLineEmpty$2(originalText, node, options);
+ }
+
+ function rec(path) {
+ var node = path.getValue();
+
+ if ((node.type === "CallExpression" || node.type === "OptionalCallExpression") && (isMemberish$1(node.callee) || node.callee.type === "CallExpression" || node.callee.type === "OptionalCallExpression")) {
+ printedNodes.unshift({
+ node: node,
+ printed: concat$6([comments.printComments(path, function () {
+ return concat$6([printOptionalToken(path), printFunctionTypeParameters(path, options, print), printArgumentsList(path, options, print)]);
+ }, options), shouldInsertEmptyLineAfter(node) ? hardline$4 : ""])
+ });
+ path.call(function (callee) {
+ return rec(callee);
+ }, "callee");
+ } else if (isMemberish$1(node)) {
+ printedNodes.unshift({
+ node: node,
+ needsParens: needsParens_1(path, options),
+ printed: comments.printComments(path, function () {
+ return node.type === "OptionalMemberExpression" || node.type === "MemberExpression" ? printMemberLookup(path, options, print) : printBindExpressionCallee(path, options, print);
+ }, options)
+ });
+ path.call(function (object) {
+ return rec(object);
+ }, "object");
+ } else if (node.type === "TSNonNullExpression") {
+ printedNodes.unshift({
+ node: node,
+ printed: comments.printComments(path, function () {
+ return "!";
+ }, options)
+ });
+ path.call(function (expression) {
+ return rec(expression);
+ }, "expression");
+ } else {
+ printedNodes.unshift({
+ node: node,
+ printed: path.call(print)
+ });
+ }
+ } // Note: the comments of the root node have already been printed, so we
+ // need to extract this first call without printing them as they would
+ // if handled inside of the recursive call.
+
+
+ var node = path.getValue();
+ printedNodes.unshift({
+ node,
+ printed: concat$6([printOptionalToken(path), printFunctionTypeParameters(path, options, print), printArgumentsList(path, options, print)])
+ });
+ path.call(function (callee) {
+ return rec(callee);
+ }, "callee"); // Once we have a linear list of printed nodes, we want to create groups out
+ // of it.
+ //
+ // a().b.c().d().e
+ // will be grouped as
+ // [
+ // [Identifier, CallExpression],
+ // [MemberExpression, MemberExpression, CallExpression],
+ // [MemberExpression, CallExpression],
+ // [MemberExpression],
+ // ]
+ // so that we can print it as
+ // a()
+ // .b.c()
+ // .d()
+ // .e
+ // The first group is the first node followed by
+ // - as many CallExpression as possible
+ // < fn()()() >.something()
+ // - as many array accessors as possible
+ // < fn()[0][1][2] >.something()
+ // - then, as many MemberExpression as possible but the last one
+ // < this.items >.something()
+
+ var groups = [];
+ var currentGroup = [printedNodes[0]];
+ var i = 1;
+
+ for (; i < printedNodes.length; ++i) {
+ if (printedNodes[i].node.type === "TSNonNullExpression" || printedNodes[i].node.type === "OptionalCallExpression" || printedNodes[i].node.type === "CallExpression" || (printedNodes[i].node.type === "MemberExpression" || printedNodes[i].node.type === "OptionalMemberExpression") && printedNodes[i].node.computed && isNumericLiteral$1(printedNodes[i].node.property)) {
+ currentGroup.push(printedNodes[i]);
+ } else {
+ break;
+ }
+ }
+
+ if (printedNodes[0].node.type !== "CallExpression" && printedNodes[0].node.type !== "OptionalCallExpression") {
+ for (; i + 1 < printedNodes.length; ++i) {
+ if (isMemberish$1(printedNodes[i].node) && isMemberish$1(printedNodes[i + 1].node)) {
+ currentGroup.push(printedNodes[i]);
+ } else {
+ break;
+ }
+ }
+ }
+
+ groups.push(currentGroup);
+ currentGroup = []; // Then, each following group is a sequence of MemberExpression followed by
+ // a sequence of CallExpression. To compute it, we keep adding things to the
+ // group until we has seen a CallExpression in the past and reach a
+ // MemberExpression
+
+ var hasSeenCallExpression = false;
+
+ for (; i < printedNodes.length; ++i) {
+ if (hasSeenCallExpression && isMemberish$1(printedNodes[i].node)) {
+ // [0] should be appended at the end of the group instead of the
+ // beginning of the next one
+ if (printedNodes[i].node.computed && isNumericLiteral$1(printedNodes[i].node.property)) {
+ currentGroup.push(printedNodes[i]);
+ continue;
+ }
+
+ groups.push(currentGroup);
+ currentGroup = [];
+ hasSeenCallExpression = false;
+ }
+
+ if (printedNodes[i].node.type === "CallExpression" || printedNodes[i].node.type === "OptionalCallExpression") {
+ hasSeenCallExpression = true;
+ }
+
+ currentGroup.push(printedNodes[i]);
+
+ if (printedNodes[i].node.comments && printedNodes[i].node.comments.some(function (comment) {
+ return comment.trailing;
+ })) {
+ groups.push(currentGroup);
+ currentGroup = [];
+ hasSeenCallExpression = false;
+ }
+ }
+
+ if (currentGroup.length > 0) {
+ groups.push(currentGroup);
+ } // There are cases like Object.keys(), Observable.of(), _.values() where
+ // they are the subject of all the chained calls and therefore should
+ // be kept on the same line:
+ //
+ // Object.keys(items)
+ // .filter(x => x)
+ // .map(x => x)
+ //
+ // In order to detect those cases, we use an heuristic: if the first
+ // node is an identifier with the name starting with a capital
+ // letter or just a sequence of _$. The rationale is that they are
+ // likely to be factories.
+
+
+ function isFactory(name) {
+ return /^[A-Z]|^[_$]+$/.test(name);
+ } // In case the Identifier is shorter than tab width, we can keep the
+ // first call in a single line, if it's an ExpressionStatement.
+ //
+ // d3.scaleLinear()
+ // .domain([0, 100])
+ // .range([0, width]);
+ //
+
+
+ function isShort(name) {
+ return name.length <= options.tabWidth;
+ }
+
+ function shouldNotWrap(groups) {
+ var parent = path.getParentNode();
+ var isExpression = parent && parent.type === "ExpressionStatement";
+ var hasComputed = groups[1].length && groups[1][0].node.computed;
+
+ if (groups[0].length === 1) {
+ var firstNode = groups[0][0].node;
+ return firstNode.type === "ThisExpression" || firstNode.type === "Identifier" && (isFactory(firstNode.name) || isExpression && isShort(firstNode.name) || hasComputed);
+ }
+
+ var lastNode = getLast$2(groups[0]).node;
+ return (lastNode.type === "MemberExpression" || lastNode.type === "OptionalMemberExpression") && lastNode.property.type === "Identifier" && (isFactory(lastNode.property.name) || hasComputed);
+ }
+
+ var shouldMerge = groups.length >= 2 && !groups[1][0].node.comments && shouldNotWrap(groups);
+
+ function printGroup(printedGroup) {
+ var printed = printedGroup.map(function (tuple) {
+ return tuple.printed;
+ }); // Checks if the last node (i.e. the parent node) needs parens and print
+ // accordingly
+
+ if (printedGroup.length > 0 && printedGroup[printedGroup.length - 1].needsParens) {
+ return concat$6(["("].concat(_toConsumableArray$1(printed), [")"]));
+ }
+
+ return concat$6(printed);
+ }
+
+ function printIndentedGroup(groups) {
+ if (groups.length === 0) {
+ return "";
+ }
+
+ return indent$3(group$2(concat$6([hardline$4, join$4(hardline$4, groups.map(printGroup))])));
+ }
+
+ var printedGroups = groups.map(printGroup);
+ var oneLine = concat$6(printedGroups);
+ var cutoff = shouldMerge ? 3 : 2;
+ var flatGroups = groups.slice(0, cutoff).reduce(function (res, group) {
+ return res.concat(group);
+ }, []);
+ var hasComment = flatGroups.slice(1, -1).some(function (node) {
+ return hasLeadingComment$3(node.node);
+ }) || flatGroups.slice(0, -1).some(function (node) {
+ return hasTrailingComment$1(node.node);
+ }) || groups[cutoff] && hasLeadingComment$3(groups[cutoff][0].node); // If we only have a single `.`, we shouldn't do anything fancy and just
+ // render everything concatenated together.
+
+ if (groups.length <= cutoff && !hasComment) {
+ if (isLongCurriedCallExpression$1(path)) {
+ return oneLine;
+ }
+
+ return group$2(oneLine);
+ } // Find out the last node in the first group and check if it has an
+ // empty line after
+
+
+ var lastNodeBeforeIndent = getLast$2(shouldMerge ? groups.slice(1, 2)[0] : groups[0]).node;
+ var shouldHaveEmptyLineBeforeIndent = lastNodeBeforeIndent.type !== "CallExpression" && lastNodeBeforeIndent.type !== "OptionalCallExpression" && shouldInsertEmptyLineAfter(lastNodeBeforeIndent);
+ var expanded = concat$6([printGroup(groups[0]), shouldMerge ? concat$6(groups.slice(1, 2).map(printGroup)) : "", shouldHaveEmptyLineBeforeIndent ? hardline$4 : "", printIndentedGroup(groups.slice(shouldMerge ? 2 : 1))]);
+ var callExpressions = printedNodes.map(function (_ref) {
+ var node = _ref.node;
+ return node;
+ }).filter(isCallOrOptionalCallExpression$1); // We don't want to print in one line if there's:
+ // * A comment.
+ // * 3 or more chained calls.
+ // * Any group but the last one has a hard line.
+ // If the last group is a function it's okay to inline if it fits.
+
+ if (hasComment || callExpressions.length >= 3 || printedGroups.slice(0, -1).some(willBreak$1) ||
+ /**
+ * scopes.filter(scope => scope.value !== '').map((scope, i) => {
+ * // multi line content
+ * })
+ */
+ function (lastGroupDoc, lastGroupNode) {
+ return isCallOrOptionalCallExpression$1(lastGroupNode) && willBreak$1(lastGroupDoc);
+ }(getLast$2(printedGroups), getLast$2(getLast$2(groups)).node) && callExpressions.slice(0, -1).some(function (n) {
+ return n.arguments.some(isFunctionOrArrowExpression$1);
+ })) {
+ return group$2(expanded);
+ }
+
+ return concat$6([// We only need to check `oneLine` because if `expanded` is chosen
+ // that means that the parent group has already been broken
+ // naturally
+ willBreak$1(oneLine) || shouldHaveEmptyLineBeforeIndent ? breakParent$2 : "", conditionalGroup$1([oneLine, expanded])]);
+}
+
+function separatorNoWhitespace(isFacebookTranslationTag, child, childNode, nextNode) {
+ if (isFacebookTranslationTag) {
+ return "";
+ }
+
+ if (childNode.type === "JSXElement" && !childNode.closingElement || nextNode && nextNode.type === "JSXElement" && !nextNode.closingElement) {
+ return child.length === 1 ? softline$2 : hardline$4;
+ }
+
+ return softline$2;
+}
+
+function separatorWithWhitespace(isFacebookTranslationTag, child, childNode, nextNode) {
+ if (isFacebookTranslationTag) {
+ return hardline$4;
+ }
+
+ if (child.length === 1) {
+ return childNode.type === "JSXElement" && !childNode.closingElement || nextNode && nextNode.type === "JSXElement" && !nextNode.closingElement ? hardline$4 : softline$2;
+ }
+
+ return hardline$4;
+} // JSX Children are strange, mostly for two reasons:
+// 1. JSX reads newlines into string values, instead of skipping them like JS
+// 2. up to one whitespace between elements within a line is significant,
+// but not between lines.
+//
+// Leading, trailing, and lone whitespace all need to
+// turn themselves into the rather ugly `{' '}` when breaking.
+//
+// We print JSX using the `fill` doc primitive.
+// This requires that we give it an array of alternating
+// content and whitespace elements.
+// To ensure this we add dummy `""` content elements as needed.
+
+
+function printJSXChildren(path, options, print, jsxWhitespace, isFacebookTranslationTag) {
+ var n = path.getValue();
+ var children = []; // using `map` instead of `each` because it provides `i`
+
+ path.map(function (childPath, i) {
+ var child = childPath.getValue();
+
+ if (isLiteral$1(child)) {
+ var text = rawText$1(child); // Contains a non-whitespace character
+
+ if (isMeaningfulJSXText$1(child)) {
+ var words = text.split(matchJsxWhitespaceRegex$1); // Starts with whitespace
+
+ if (words[0] === "") {
+ children.push("");
+ words.shift();
+
+ if (/\n/.test(words[0])) {
+ var next = n.children[i + 1];
+ children.push(separatorWithWhitespace(isFacebookTranslationTag, words[1], child, next));
+ } else {
+ children.push(jsxWhitespace);
+ }
+
+ words.shift();
+ }
+
+ var endWhitespace; // Ends with whitespace
+
+ if (getLast$2(words) === "") {
+ words.pop();
+ endWhitespace = words.pop();
+ } // This was whitespace only without a new line.
+
+
+ if (words.length === 0) {
+ return;
+ }
+
+ words.forEach(function (word, i) {
+ if (i % 2 === 1) {
+ children.push(line$2);
+ } else {
+ children.push(word);
+ }
+ });
+
+ if (endWhitespace !== undefined) {
+ if (/\n/.test(endWhitespace)) {
+ var _next = n.children[i + 1];
+ children.push(separatorWithWhitespace(isFacebookTranslationTag, getLast$2(children), child, _next));
+ } else {
+ children.push(jsxWhitespace);
+ }
+ } else {
+ var _next2 = n.children[i + 1];
+ children.push(separatorNoWhitespace(isFacebookTranslationTag, getLast$2(children), child, _next2));
+ }
+ } else if (/\n/.test(text)) {
+ // Keep (up to one) blank line between tags/expressions/text.
+ // Note: We don't keep blank lines between text elements.
+ if (text.match(/\n/g).length > 1) {
+ children.push("");
+ children.push(hardline$4);
+ }
+ } else {
+ children.push("");
+ children.push(jsxWhitespace);
+ }
+ } else {
+ var printedChild = print(childPath);
+ children.push(printedChild);
+ var _next3 = n.children[i + 1];
+
+ var directlyFollowedByMeaningfulText = _next3 && isMeaningfulJSXText$1(_next3);
+
+ if (directlyFollowedByMeaningfulText) {
+ var firstWord = rawText$1(_next3).trim().split(matchJsxWhitespaceRegex$1)[0];
+ children.push(separatorNoWhitespace(isFacebookTranslationTag, firstWord, child, _next3));
+ } else {
+ children.push(hardline$4);
+ }
+ }
+ }, "children");
+ return children;
+} // JSX expands children from the inside-out, instead of the outside-in.
+// This is both to break children before attributes,
+// and to ensure that when children break, their parents do as well.
+//
+// Any element that is written without any newlines and fits on a single line
+// is left that way.
+// Not only that, any user-written-line containing multiple JSX siblings
+// should also be kept on one line if possible,
+// so each user-written-line is wrapped in its own group.
+//
+// Elements that contain newlines or don't fit on a single line (recursively)
+// are fully-split, using hardline and shouldBreak: true.
+//
+// To support that case properly, all leading and trailing spaces
+// are stripped from the list of children, and replaced with a single hardline.
+
+
+function printJSXElement(path, options, print) {
+ var n = path.getValue();
+
+ if (n.type === "JSXElement" && isEmptyJSXElement$1(n)) {
+ return concat$6([path.call(print, "openingElement"), path.call(print, "closingElement")]);
+ }
+
+ var openingLines = n.type === "JSXElement" ? path.call(print, "openingElement") : path.call(print, "openingFragment");
+ var closingLines = n.type === "JSXElement" ? path.call(print, "closingElement") : path.call(print, "closingFragment");
+
+ if (n.children.length === 1 && n.children[0].type === "JSXExpressionContainer" && (n.children[0].expression.type === "TemplateLiteral" || n.children[0].expression.type === "TaggedTemplateExpression")) {
+ return concat$6([openingLines, concat$6(path.map(print, "children")), closingLines]);
+ } // Convert `{" "}` to text nodes containing a space.
+ // This makes it easy to turn them into `jsxWhitespace` which
+ // can then print as either a space or `{" "}` when breaking.
+
+
+ n.children = n.children.map(function (child) {
+ if (isJSXWhitespaceExpression$1(child)) {
+ return {
+ type: "JSXText",
+ value: " ",
+ raw: " "
+ };
+ }
+
+ return child;
+ });
+ var containsTag = n.children.filter(isJSXNode$1).length > 0;
+ var containsMultipleExpressions = n.children.filter(function (child) {
+ return child.type === "JSXExpressionContainer";
+ }).length > 1;
+ var containsMultipleAttributes = n.type === "JSXElement" && n.openingElement.attributes.length > 1; // Record any breaks. Should never go from true to false, only false to true.
+
+ var forcedBreak = willBreak$1(openingLines) || containsTag || containsMultipleAttributes || containsMultipleExpressions;
+ var rawJsxWhitespace = options.singleQuote ? "{' '}" : '{" "}';
+ var jsxWhitespace = ifBreak$1(concat$6([rawJsxWhitespace, softline$2]), " ");
+ var isFacebookTranslationTag = n.openingElement && n.openingElement.name && n.openingElement.name.name === "fbt";
+ var children = printJSXChildren(path, options, print, jsxWhitespace, isFacebookTranslationTag);
+ var containsText = n.children.filter(function (child) {
+ return isMeaningfulJSXText$1(child);
+ }).length > 0; // We can end up we multiple whitespace elements with empty string
+ // content between them.
+ // We need to remove empty whitespace and softlines before JSX whitespace
+ // to get the correct output.
+
+ for (var i = children.length - 2; i >= 0; i--) {
+ var isPairOfEmptyStrings = children[i] === "" && children[i + 1] === "";
+ var isPairOfHardlines = children[i] === hardline$4 && children[i + 1] === "" && children[i + 2] === hardline$4;
+ var isLineFollowedByJSXWhitespace = (children[i] === softline$2 || children[i] === hardline$4) && children[i + 1] === "" && children[i + 2] === jsxWhitespace;
+ var isJSXWhitespaceFollowedByLine = children[i] === jsxWhitespace && children[i + 1] === "" && (children[i + 2] === softline$2 || children[i + 2] === hardline$4);
+ var isDoubleJSXWhitespace = children[i] === jsxWhitespace && children[i + 1] === "" && children[i + 2] === jsxWhitespace;
+ var isPairOfHardOrSoftLines = children[i] === softline$2 && children[i + 1] === "" && children[i + 2] === hardline$4 || children[i] === hardline$4 && children[i + 1] === "" && children[i + 2] === softline$2;
+
+ if (isPairOfHardlines && containsText || isPairOfEmptyStrings || isLineFollowedByJSXWhitespace || isDoubleJSXWhitespace || isPairOfHardOrSoftLines) {
+ children.splice(i, 2);
+ } else if (isJSXWhitespaceFollowedByLine) {
+ children.splice(i + 1, 2);
+ }
+ } // Trim trailing lines (or empty strings)
+
+
+ while (children.length && (isLineNext$1(getLast$2(children)) || isEmpty$1(getLast$2(children)))) {
+ children.pop();
+ } // Trim leading lines (or empty strings)
+
+
+ while (children.length && (isLineNext$1(children[0]) || isEmpty$1(children[0])) && (isLineNext$1(children[1]) || isEmpty$1(children[1]))) {
+ children.shift();
+ children.shift();
+ } // Tweak how we format children if outputting this element over multiple lines.
+ // Also detect whether we will force this element to output over multiple lines.
+
+
+ var multilineChildren = [];
+ children.forEach(function (child, i) {
+ // There are a number of situations where we need to ensure we display
+ // whitespace as `{" "}` when outputting this element over multiple lines.
+ if (child === jsxWhitespace) {
+ if (i === 1 && children[i - 1] === "") {
+ if (children.length === 2) {
+ // Solitary whitespace
+ multilineChildren.push(rawJsxWhitespace);
+ return;
+ } // Leading whitespace
+
+
+ multilineChildren.push(concat$6([rawJsxWhitespace, hardline$4]));
+ return;
+ } else if (i === children.length - 1) {
+ // Trailing whitespace
+ multilineChildren.push(rawJsxWhitespace);
+ return;
+ } else if (children[i - 1] === "" && children[i - 2] === hardline$4) {
+ // Whitespace after line break
+ multilineChildren.push(rawJsxWhitespace);
+ return;
+ }
+ }
+
+ multilineChildren.push(child);
+
+ if (willBreak$1(child)) {
+ forcedBreak = true;
+ }
+ }); // If there is text we use `fill` to fit as much onto each line as possible.
+ // When there is no text (just tags and expressions) we use `group`
+ // to output each on a separate line.
+
+ var content = containsText ? fill$2(multilineChildren) : group$2(concat$6(multilineChildren), {
+ shouldBreak: true
+ });
+ var multiLineElem = group$2(concat$6([openingLines, indent$3(concat$6([hardline$4, content])), hardline$4, closingLines]));
+
+ if (forcedBreak) {
+ return multiLineElem;
+ }
+
+ return conditionalGroup$1([group$2(concat$6([openingLines, concat$6(children), closingLines])), multiLineElem]);
+}
+
+function maybeWrapJSXElementInParens(path, elem, options) {
+ var parent = path.getParentNode();
+
+ if (!parent) {
+ return elem;
+ }
+
+ var NO_WRAP_PARENTS = {
+ ArrayExpression: true,
+ JSXAttribute: true,
+ JSXElement: true,
+ JSXExpressionContainer: true,
+ JSXFragment: true,
+ ExpressionStatement: true,
+ CallExpression: true,
+ OptionalCallExpression: true,
+ ConditionalExpression: true,
+ JsExpressionRoot: true
+ };
+
+ if (NO_WRAP_PARENTS[parent.type]) {
+ return elem;
+ }
+
+ var shouldBreak = matchAncestorTypes$1(path, ["ArrowFunctionExpression", "CallExpression", "JSXExpressionContainer"]) || matchAncestorTypes$1(path, ["ArrowFunctionExpression", "OptionalCallExpression", "JSXExpressionContainer"]);
+ var needsParens = needsParens_1(path, options);
+ return group$2(concat$6([needsParens ? "" : ifBreak$1("("), indent$3(concat$6([softline$2, elem])), softline$2, needsParens ? "" : ifBreak$1(")")]), {
+ shouldBreak
+ });
+}
+
+function shouldInlineLogicalExpression(node) {
+ if (node.type !== "LogicalExpression") {
+ return false;
+ }
+
+ if (node.right.type === "ObjectExpression" && node.right.properties.length !== 0) {
+ return true;
+ }
+
+ if (node.right.type === "ArrayExpression" && node.right.elements.length !== 0) {
+ return true;
+ }
+
+ if (isJSXNode$1(node.right)) {
+ return true;
+ }
+
+ return false;
+} // For binary expressions to be consistent, we need to group
+// subsequent operators with the same precedence level under a single
+// group. Otherwise they will be nested such that some of them break
+// onto new lines but not all. Operators with the same precedence
+// level should either all break or not. Because we group them by
+// precedence level and the AST is structured based on precedence
+// level, things are naturally broken up correctly, i.e. `&&` is
+// broken before `+`.
+
+
+function printBinaryishExpressions(path, print, options, isNested, isInsideParenthesis) {
+ var parts = [];
+ var node = path.getValue(); // We treat BinaryExpression and LogicalExpression nodes the same.
+
+ if (isBinaryish$1(node)) {
+ // Put all operators with the same precedence level in the same
+ // group. The reason we only need to do this with the `left`
+ // expression is because given an expression like `1 + 2 - 3`, it
+ // is always parsed like `((1 + 2) - 3)`, meaning the `left` side
+ // is where the rest of the expression will exist. Binary
+ // expressions on the right side mean they have a difference
+ // precedence level and should be treated as a separate group, so
+ // print them normally. (This doesn't hold for the `**` operator,
+ // which is unique in that it is right-associative.)
+ if (shouldFlatten$1(node.operator, node.left.operator)) {
+ // Flatten them out by recursively calling this function.
+ parts = parts.concat(path.call(function (left) {
+ return printBinaryishExpressions(left, print, options,
+ /* isNested */
+ true, isInsideParenthesis);
+ }, "left"));
+ } else {
+ parts.push(path.call(print, "left"));
+ }
+
+ var shouldInline = shouldInlineLogicalExpression(node);
+ var lineBeforeOperator = (node.operator === "|>" || node.type === "NGPipeExpression" || node.operator === "|" && options.parser === "__vue_expression") && !hasLeadingOwnLineComment$1(options.originalText, node.right, options);
+ var operator = node.type === "NGPipeExpression" ? "|" : node.operator;
+ var rightSuffix = node.type === "NGPipeExpression" && node.arguments.length !== 0 ? group$2(indent$3(concat$6([softline$2, ": ", join$4(concat$6([softline$2, ":", ifBreak$1(" ")]), path.map(print, "arguments").map(function (arg) {
+ return align$1(2, group$2(arg));
+ }))]))) : "";
+ var right = shouldInline ? concat$6([operator, " ", path.call(print, "right"), rightSuffix]) : concat$6([lineBeforeOperator ? softline$2 : "", operator, lineBeforeOperator ? " " : line$2, path.call(print, "right"), rightSuffix]); // If there's only a single binary expression, we want to create a group
+ // in order to avoid having a small right part like -1 be on its own line.
+
+ var parent = path.getParentNode();
+ var shouldGroup = !(isInsideParenthesis && node.type === "LogicalExpression") && parent.type !== node.type && node.left.type !== node.type && node.right.type !== node.type;
+ parts.push(" ", shouldGroup ? group$2(right) : right); // The root comments are already printed, but we need to manually print
+ // the other ones since we don't call the normal print on BinaryExpression,
+ // only for the left and right parts
+
+ if (isNested && node.comments) {
+ parts = comments.printComments(path, function () {
+ return concat$6(parts);
+ }, options);
+ }
+ } else {
+ // Our stopping case. Simply print the node normally.
+ parts.push(path.call(print));
+ }
+
+ return parts;
+}
+
+function printAssignmentRight(leftNode, rightNode, printedRight, options) {
+ if (hasLeadingOwnLineComment$1(options.originalText, rightNode, options)) {
+ return indent$3(concat$6([hardline$4, printedRight]));
+ }
+
+ var canBreak = isBinaryish$1(rightNode) && !shouldInlineLogicalExpression(rightNode) || rightNode.type === "ConditionalExpression" && isBinaryish$1(rightNode.test) && !shouldInlineLogicalExpression(rightNode.test) || rightNode.type === "StringLiteralTypeAnnotation" || rightNode.type === "ClassExpression" && rightNode.decorators && rightNode.decorators.length || (leftNode.type === "Identifier" || isStringLiteral$1(leftNode) || leftNode.type === "MemberExpression") && (isStringLiteral$1(rightNode) || isMemberExpressionChain$1(rightNode)) && // do not put values on a separate line from the key in json
+ options.parser !== "json" && options.parser !== "json5" || rightNode.type === "SequenceExpression";
+
+ if (canBreak) {
+ return group$2(indent$3(concat$6([line$2, printedRight])));
+ }
+
+ return concat$6([" ", printedRight]);
+}
+
+function printAssignment(leftNode, printedLeft, operator, rightNode, printedRight, options) {
+ if (!rightNode) {
+ return printedLeft;
+ }
+
+ var printed = printAssignmentRight(leftNode, rightNode, printedRight, options);
+ return group$2(concat$6([printedLeft, operator, printed]));
+}
+
+function adjustClause(node, clause, forceSpace) {
+ if (node.type === "EmptyStatement") {
+ return ";";
+ }
+
+ if (node.type === "BlockStatement" || forceSpace) {
+ return concat$6([" ", clause]);
+ }
+
+ return indent$3(concat$6([line$2, clause]));
+}
+
+function nodeStr(node, options, isFlowOrTypeScriptDirectiveLiteral) {
+ var raw = rawText$1(node);
+ var isDirectiveLiteral = isFlowOrTypeScriptDirectiveLiteral || node.type === "DirectiveLiteral";
+ return printString$1(raw, options, isDirectiveLiteral);
+}
+
+function printRegex(node) {
+ var flags = node.flags.split("").sort().join("");
+ return `/${node.pattern}/${flags}`;
+}
+
+function exprNeedsASIProtection(path, options) {
+ var node = path.getValue();
+ var maybeASIProblem = needsParens_1(path, options) || node.type === "ParenthesizedExpression" || node.type === "TypeCastExpression" || node.type === "ArrowFunctionExpression" && !shouldPrintParamsWithoutParens(path, options) || node.type === "ArrayExpression" || node.type === "ArrayPattern" || node.type === "UnaryExpression" && node.prefix && (node.operator === "+" || node.operator === "-") || node.type === "TemplateLiteral" || node.type === "TemplateElement" || isJSXNode$1(node) || node.type === "BindExpression" && !node.object || node.type === "RegExpLiteral" || node.type === "Literal" && node.pattern || node.type === "Literal" && node.regex;
+
+ if (maybeASIProblem) {
+ return true;
+ }
+
+ if (!hasNakedLeftSide$2(node)) {
+ return false;
+ }
+
+ return path.call.apply(path, [function (childPath) {
+ return exprNeedsASIProtection(childPath, options);
+ }].concat(getLeftSidePathName$2(path, node)));
+}
+
+function stmtNeedsASIProtection(path, options) {
+ var node = path.getNode();
+
+ if (node.type !== "ExpressionStatement") {
+ return false;
+ }
+
+ return path.call(function (childPath) {
+ return exprNeedsASIProtection(childPath, options);
+ }, "expression");
+}
+
+function shouldHugType(node) {
+ if (isSimpleFlowType$1(node) || isObjectType$1(node)) {
+ return true;
+ }
+
+ if (node.type === "UnionTypeAnnotation" || node.type === "TSUnionType") {
+ var voidCount = node.types.filter(function (n) {
+ return n.type === "VoidTypeAnnotation" || n.type === "TSVoidKeyword" || n.type === "NullLiteralTypeAnnotation" || n.type === "TSNullKeyword";
+ }).length;
+ var objectCount = node.types.filter(function (n) {
+ return n.type === "ObjectTypeAnnotation" || n.type === "TSTypeLiteral" || // This is a bit aggressive but captures Array<{x}>
+ n.type === "GenericTypeAnnotation" || n.type === "TSTypeReference";
+ }).length;
+
+ if (node.types.length - 1 === voidCount && objectCount > 0) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function shouldHugArguments(fun) {
+ return fun && fun.params && fun.params.length === 1 && !fun.params[0].comments && (fun.params[0].type === "ObjectPattern" || fun.params[0].type === "ArrayPattern" || fun.params[0].type === "Identifier" && fun.params[0].typeAnnotation && (fun.params[0].typeAnnotation.type === "TypeAnnotation" || fun.params[0].typeAnnotation.type === "TSTypeAnnotation") && isObjectType$1(fun.params[0].typeAnnotation.typeAnnotation) || fun.params[0].type === "FunctionTypeParam" && isObjectType$1(fun.params[0].typeAnnotation) || fun.params[0].type === "AssignmentPattern" && (fun.params[0].left.type === "ObjectPattern" || fun.params[0].left.type === "ArrayPattern") && (fun.params[0].right.type === "Identifier" || fun.params[0].right.type === "ObjectExpression" && fun.params[0].right.properties.length === 0 || fun.params[0].right.type === "ArrayExpression" && fun.params[0].right.elements.length === 0)) && !fun.rest;
+}
+
+function printArrayItems(path, options, printPath, print) {
+ var printedElements = [];
+ var separatorParts = [];
+ path.each(function (childPath) {
+ printedElements.push(concat$6(separatorParts));
+ printedElements.push(group$2(print(childPath)));
+ separatorParts = [",", line$2];
+
+ if (childPath.getValue() && isNextLineEmpty$2(options.originalText, childPath.getValue(), options)) {
+ separatorParts.push(softline$2);
+ }
+ }, printPath);
+ return concat$6(printedElements);
+}
+
+function willPrintOwnComments(path
+/*, options */
+) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ return (node && (isJSXNode$1(node) || hasFlowShorthandAnnotationComment$2(node) || parent && (parent.type === "CallExpression" || parent.type === "OptionalCallExpression") && (hasFlowAnnotationComment$1(node.leadingComments) || hasFlowAnnotationComment$1(node.trailingComments))) || parent && (parent.type === "JSXSpreadAttribute" || parent.type === "JSXSpreadChild" || parent.type === "UnionTypeAnnotation" || parent.type === "TSUnionType" || (parent.type === "ClassDeclaration" || parent.type === "ClassExpression") && parent.superClass === node)) && !hasIgnoreComment$2(path);
+}
+
+function canAttachComment(node) {
+ return node.type && node.type !== "CommentBlock" && node.type !== "CommentLine" && node.type !== "Line" && node.type !== "Block" && node.type !== "EmptyStatement" && node.type !== "TemplateElement" && node.type !== "Import";
+}
+
+function printComment$1(commentPath, options) {
+ var comment = commentPath.getValue();
+
+ switch (comment.type) {
+ case "CommentBlock":
+ case "Block":
+ {
+ if (isIndentableBlockComment(comment)) {
+ var printed = printIndentableBlockComment(comment); // We need to prevent an edge case of a previous trailing comment
+ // printed as a `lineSuffix` which causes the comments to be
+ // interleaved. See https://github.com/prettier/prettier/issues/4412
+
+ if (comment.trailing && !hasNewline$3(options.originalText, options.locStart(comment), {
+ backwards: true
+ })) {
+ return concat$6([hardline$4, printed]);
+ }
+
+ return printed;
+ }
+
+ var isInsideFlowComment = options.originalText.substr(options.locEnd(comment) - 3, 3) === "*-/";
+ return "/*" + comment.value + (isInsideFlowComment ? "*-/" : "*/");
+ }
+
+ case "CommentLine":
+ case "Line":
+ // Print shebangs with the proper comment characters
+ if (options.originalText.slice(options.locStart(comment)).startsWith("#!")) {
+ return "#!" + comment.value.trimRight();
+ }
+
+ return "//" + comment.value.trimRight();
+
+ default:
+ throw new Error("Not a comment: " + JSON.stringify(comment));
+ }
+}
+
+function isIndentableBlockComment(comment) {
+ // If the comment has multiple lines and every line starts with a star
+ // we can fix the indentation of each line. The stars in the `/*` and
+ // `*/` delimiters are not included in the comment value, so add them
+ // back first.
+ var lines = `*${comment.value}*`.split("\n");
+ return lines.length > 1 && lines.every(function (line) {
+ return line.trim()[0] === "*";
+ });
+}
+
+function printIndentableBlockComment(comment) {
+ var lines = comment.value.split("\n");
+ return concat$6(["/*", join$4(hardline$4, lines.map(function (line, index) {
+ return index === 0 ? line.trimRight() : " " + (index < lines.length - 1 ? line.trim() : line.trimLeft());
+ })), "*/"]);
+}
+
+var printerEstree = {
+ preprocess: preprocess_1,
+ print: genericPrint,
+ embed: embed_1,
+ insertPragma: insertPragma$1,
+ massageAstNode: clean_1,
+ hasPrettierIgnore: hasPrettierIgnore$1,
+ willPrintOwnComments,
+ canAttachComment,
+ printComment: printComment$1,
+ isBlockComment: comments$1.isBlockComment,
+ handleComments: {
+ ownLine: comments$1.handleOwnLineComment,
+ endOfLine: comments$1.handleEndOfLineComment,
+ remaining: comments$1.handleRemainingComment
+ }
+};
+
+var _require$$0$builders$2 = doc.builders,
+ concat$7 = _require$$0$builders$2.concat,
+ hardline$5 = _require$$0$builders$2.hardline,
+ indent$4 = _require$$0$builders$2.indent,
+ join$5 = _require$$0$builders$2.join;
+
+function genericPrint$1(path, options, print) {
+ var node = path.getValue();
+
+ switch (node.type) {
+ case "JsonRoot":
+ return concat$7([path.call(print, "node"), hardline$5]);
+
+ case "ArrayExpression":
+ return node.elements.length === 0 ? "[]" : concat$7(["[", indent$4(concat$7([hardline$5, join$5(concat$7([",", hardline$5]), path.map(print, "elements"))])), hardline$5, "]"]);
+
+ case "ObjectExpression":
+ return node.properties.length === 0 ? "{}" : concat$7(["{", indent$4(concat$7([hardline$5, join$5(concat$7([",", hardline$5]), path.map(print, "properties"))])), hardline$5, "}"]);
+
+ case "ObjectProperty":
+ return concat$7([path.call(print, "key"), ": ", path.call(print, "value")]);
+
+ case "UnaryExpression":
+ return concat$7([node.operator === "+" ? "" : node.operator, path.call(print, "argument")]);
+
+ case "NullLiteral":
+ return "null";
+
+ case "BooleanLiteral":
+ return node.value ? "true" : "false";
+
+ case "StringLiteral":
+ case "NumericLiteral":
+ return JSON.stringify(node.value);
+
+ case "Identifier":
+ return JSON.stringify(node.name);
+
+ default:
+ /* istanbul ignore next */
+ throw new Error("unknown type: " + JSON.stringify(node.type));
+ }
+}
+
+function clean$1(node, newNode
+/*, parent*/
+) {
+ delete newNode.start;
+ delete newNode.end;
+ delete newNode.extra;
+ delete newNode.loc;
+ delete newNode.comments;
+ delete newNode.errors;
+
+ if (node.type === "Identifier") {
+ return {
+ type: "StringLiteral",
+ value: node.name
+ };
+ }
+
+ if (node.type === "UnaryExpression" && node.operator === "+") {
+ return newNode.argument;
+ }
+}
+
+var printerEstreeJson = {
+ preprocess: preprocess_1,
+ print: genericPrint$1,
+ massageAstNode: clean$1
+};
+
+var CATEGORY_COMMON = "Common"; // format based on https://github.com/prettier/prettier/blob/master/src/main/core-options.js
+
+var commonOptions = {
+ bracketSpacing: {
+ since: "0.0.0",
+ category: CATEGORY_COMMON,
+ type: "boolean",
+ default: true,
+ description: "Print spaces between brackets.",
+ oppositeDescription: "Do not print spaces between brackets."
+ },
+ singleQuote: {
+ since: "0.0.0",
+ category: CATEGORY_COMMON,
+ type: "boolean",
+ default: false,
+ description: "Use single quotes instead of double quotes."
+ },
+ proseWrap: {
+ since: "1.8.2",
+ category: CATEGORY_COMMON,
+ type: "choice",
+ default: [{
+ since: "1.8.2",
+ value: true
+ }, {
+ since: "1.9.0",
+ value: "preserve"
+ }],
+ description: "How to wrap prose.",
+ choices: [{
+ since: "1.9.0",
+ value: "always",
+ description: "Wrap prose if it exceeds the print width."
+ }, {
+ since: "1.9.0",
+ value: "never",
+ description: "Do not wrap prose."
+ }, {
+ since: "1.9.0",
+ value: "preserve",
+ description: "Wrap prose as-is."
+ }, {
+ value: false,
+ deprecated: "1.9.0",
+ redirect: "never"
+ }, {
+ value: true,
+ deprecated: "1.9.0",
+ redirect: "always"
+ }]
+ }
+};
+
+var CATEGORY_JAVASCRIPT = "JavaScript"; // format based on https://github.com/prettier/prettier/blob/master/src/main/core-options.js
+
+var options$2 = {
+ arrowParens: {
+ since: "1.9.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "choice",
+ default: "avoid",
+ description: "Include parentheses around a sole arrow function parameter.",
+ choices: [{
+ value: "avoid",
+ description: "Omit parens when possible. Example: `x => x`"
+ }, {
+ value: "always",
+ description: "Always include parens. Example: `(x) => x`"
+ }]
+ },
+ bracketSpacing: commonOptions.bracketSpacing,
+ jsxBracketSameLine: {
+ since: "0.17.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "boolean",
+ default: false,
+ description: "Put > on the last line instead of at a new line."
+ },
+ semi: {
+ since: "1.0.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "boolean",
+ default: true,
+ description: "Print semicolons.",
+ oppositeDescription: "Do not print semicolons, except at the beginning of lines which may need them."
+ },
+ singleQuote: commonOptions.singleQuote,
+ jsxSingleQuote: {
+ since: "1.15.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "boolean",
+ default: false,
+ description: "Use single quotes in JSX."
+ },
+ quoteProps: {
+ since: "1.17.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "choice",
+ default: "as-needed",
+ description: "Change when properties in objects are quoted.",
+ choices: [{
+ value: "as-needed",
+ description: "Only add quotes around object properties where required."
+ }, {
+ value: "consistent",
+ description: "If at least one property in an object requires quotes, quote all properties."
+ }, {
+ value: "preserve",
+ description: "Respect the input use of quotes in object properties."
+ }]
+ },
+ trailingComma: {
+ since: "0.0.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "choice",
+ default: [{
+ since: "0.0.0",
+ value: false
+ }, {
+ since: "0.19.0",
+ value: "none"
+ }],
+ description: "Print trailing commas wherever possible when multi-line.",
+ choices: [{
+ value: "none",
+ description: "No trailing commas."
+ }, {
+ value: "es5",
+ description: "Trailing commas where valid in ES5 (objects, arrays, etc.)"
+ }, {
+ value: "all",
+ description: "Trailing commas wherever possible (including function arguments)."
+ }, {
+ value: true,
+ deprecated: "0.19.0",
+ redirect: "es5"
+ }, {
+ value: false,
+ deprecated: "0.19.0",
+ redirect: "none"
+ }]
+ }
+};
+
+var createLanguage = function createLanguage(linguistData, transform) {
+ var language = {};
+
+ for (var key in linguistData) {
+ var newKey = key === "languageId" ? "linguistLanguageId" : key;
+ language[newKey] = linguistData[key];
+ }
+
+ return transform(language);
+};
+
+var name$2 = "JavaScript";
+var type = "programming";
+var tmScope = "source.js";
+var aceMode = "javascript";
+var codemirrorMode = "javascript";
+var codemirrorMimeType = "text/javascript";
+var color = "#f1e05a";
+var aliases = [
+ "js",
+ "node"
+];
+var extensions = [
+ ".js",
+ "._js",
+ ".bones",
+ ".es",
+ ".es6",
+ ".frag",
+ ".gs",
+ ".jake",
+ ".jsb",
+ ".jscad",
+ ".jsfl",
+ ".jsm",
+ ".jss",
+ ".mjs",
+ ".njs",
+ ".pac",
+ ".sjs",
+ ".ssjs",
+ ".xsjs",
+ ".xsjslib"
+];
+var filenames = [
+ "Jakefile"
+];
+var interpreters = [
+ "chakra",
+ "d8",
+ "js",
+ "node",
+ "rhino",
+ "v8",
+ "v8-shell"
+];
+var languageId = 183;
+var JavaScript = {
+ name: name$2,
+ type: type,
+ tmScope: tmScope,
+ aceMode: aceMode,
+ codemirrorMode: codemirrorMode,
+ codemirrorMimeType: codemirrorMimeType,
+ color: color,
+ aliases: aliases,
+ extensions: extensions,
+ filenames: filenames,
+ interpreters: interpreters,
+ languageId: languageId
+};
+
+var JavaScript$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$2,
+ type: type,
+ tmScope: tmScope,
+ aceMode: aceMode,
+ codemirrorMode: codemirrorMode,
+ codemirrorMimeType: codemirrorMimeType,
+ color: color,
+ aliases: aliases,
+ extensions: extensions,
+ filenames: filenames,
+ interpreters: interpreters,
+ languageId: languageId,
+ 'default': JavaScript
+});
+
+var name$3 = "JSX";
+var type$1 = "programming";
+var group$3 = "JavaScript";
+var extensions$1 = [
+ ".jsx"
+];
+var tmScope$1 = "source.js.jsx";
+var aceMode$1 = "javascript";
+var codemirrorMode$1 = "jsx";
+var codemirrorMimeType$1 = "text/jsx";
+var languageId$1 = 178;
+var JSX = {
+ name: name$3,
+ type: type$1,
+ group: group$3,
+ extensions: extensions$1,
+ tmScope: tmScope$1,
+ aceMode: aceMode$1,
+ codemirrorMode: codemirrorMode$1,
+ codemirrorMimeType: codemirrorMimeType$1,
+ languageId: languageId$1
+};
+
+var JSX$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$3,
+ type: type$1,
+ group: group$3,
+ extensions: extensions$1,
+ tmScope: tmScope$1,
+ aceMode: aceMode$1,
+ codemirrorMode: codemirrorMode$1,
+ codemirrorMimeType: codemirrorMimeType$1,
+ languageId: languageId$1,
+ 'default': JSX
+});
+
+var name$4 = "TypeScript";
+var type$2 = "programming";
+var color$1 = "#2b7489";
+var aliases$1 = [
+ "ts"
+];
+var interpreters$1 = [
+ "deno",
+ "ts-node"
+];
+var extensions$2 = [
+ ".ts"
+];
+var tmScope$2 = "source.ts";
+var aceMode$2 = "typescript";
+var codemirrorMode$2 = "javascript";
+var codemirrorMimeType$2 = "application/typescript";
+var languageId$2 = 378;
+var TypeScript = {
+ name: name$4,
+ type: type$2,
+ color: color$1,
+ aliases: aliases$1,
+ interpreters: interpreters$1,
+ extensions: extensions$2,
+ tmScope: tmScope$2,
+ aceMode: aceMode$2,
+ codemirrorMode: codemirrorMode$2,
+ codemirrorMimeType: codemirrorMimeType$2,
+ languageId: languageId$2
+};
+
+var TypeScript$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$4,
+ type: type$2,
+ color: color$1,
+ aliases: aliases$1,
+ interpreters: interpreters$1,
+ extensions: extensions$2,
+ tmScope: tmScope$2,
+ aceMode: aceMode$2,
+ codemirrorMode: codemirrorMode$2,
+ codemirrorMimeType: codemirrorMimeType$2,
+ languageId: languageId$2,
+ 'default': TypeScript
+});
+
+var name$5 = "TSX";
+var type$3 = "programming";
+var group$4 = "TypeScript";
+var extensions$3 = [
+ ".tsx"
+];
+var tmScope$3 = "source.tsx";
+var aceMode$3 = "javascript";
+var codemirrorMode$3 = "jsx";
+var codemirrorMimeType$3 = "text/jsx";
+var languageId$3 = 94901924;
+var TSX = {
+ name: name$5,
+ type: type$3,
+ group: group$4,
+ extensions: extensions$3,
+ tmScope: tmScope$3,
+ aceMode: aceMode$3,
+ codemirrorMode: codemirrorMode$3,
+ codemirrorMimeType: codemirrorMimeType$3,
+ languageId: languageId$3
+};
+
+var TSX$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$5,
+ type: type$3,
+ group: group$4,
+ extensions: extensions$3,
+ tmScope: tmScope$3,
+ aceMode: aceMode$3,
+ codemirrorMode: codemirrorMode$3,
+ codemirrorMimeType: codemirrorMimeType$3,
+ languageId: languageId$3,
+ 'default': TSX
+});
+
+var name$6 = "JSON";
+var type$4 = "data";
+var tmScope$4 = "source.json";
+var aceMode$4 = "json";
+var codemirrorMode$4 = "javascript";
+var codemirrorMimeType$4 = "application/json";
+var searchable = false;
+var extensions$4 = [
+ ".json",
+ ".avsc",
+ ".geojson",
+ ".gltf",
+ ".har",
+ ".ice",
+ ".JSON-tmLanguage",
+ ".jsonl",
+ ".mcmeta",
+ ".tfstate",
+ ".tfstate.backup",
+ ".topojson",
+ ".webapp",
+ ".webmanifest",
+ ".yy",
+ ".yyp"
+];
+var filenames$1 = [
+ ".arcconfig",
+ ".htmlhintrc",
+ ".tern-config",
+ ".tern-project",
+ ".watchmanconfig",
+ "composer.lock",
+ "mcmod.info"
+];
+var languageId$4 = 174;
+var _JSON = {
+ name: name$6,
+ type: type$4,
+ tmScope: tmScope$4,
+ aceMode: aceMode$4,
+ codemirrorMode: codemirrorMode$4,
+ codemirrorMimeType: codemirrorMimeType$4,
+ searchable: searchable,
+ extensions: extensions$4,
+ filenames: filenames$1,
+ languageId: languageId$4
+};
+
+var _JSON$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$6,
+ type: type$4,
+ tmScope: tmScope$4,
+ aceMode: aceMode$4,
+ codemirrorMode: codemirrorMode$4,
+ codemirrorMimeType: codemirrorMimeType$4,
+ searchable: searchable,
+ extensions: extensions$4,
+ filenames: filenames$1,
+ languageId: languageId$4,
+ 'default': _JSON
+});
+
+var name$7 = "JSON with Comments";
+var type$5 = "data";
+var group$5 = "JSON";
+var tmScope$5 = "source.js";
+var aceMode$5 = "javascript";
+var codemirrorMode$5 = "javascript";
+var codemirrorMimeType$5 = "text/javascript";
+var aliases$2 = [
+ "jsonc"
+];
+var extensions$5 = [
+ ".sublime-build",
+ ".sublime-commands",
+ ".sublime-completions",
+ ".sublime-keymap",
+ ".sublime-macro",
+ ".sublime-menu",
+ ".sublime-mousemap",
+ ".sublime-project",
+ ".sublime-settings",
+ ".sublime-theme",
+ ".sublime-workspace",
+ ".sublime_metrics",
+ ".sublime_session"
+];
+var filenames$2 = [
+ ".babelrc",
+ ".eslintrc.json",
+ ".jscsrc",
+ ".jshintrc",
+ ".jslintrc",
+ "jsconfig.json",
+ "language-configuration.json",
+ "tsconfig.json"
+];
+var languageId$5 = 423;
+var JSON_with_Comments = {
+ name: name$7,
+ type: type$5,
+ group: group$5,
+ tmScope: tmScope$5,
+ aceMode: aceMode$5,
+ codemirrorMode: codemirrorMode$5,
+ codemirrorMimeType: codemirrorMimeType$5,
+ aliases: aliases$2,
+ extensions: extensions$5,
+ filenames: filenames$2,
+ languageId: languageId$5
+};
+
+var JSON_with_Comments$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$7,
+ type: type$5,
+ group: group$5,
+ tmScope: tmScope$5,
+ aceMode: aceMode$5,
+ codemirrorMode: codemirrorMode$5,
+ codemirrorMimeType: codemirrorMimeType$5,
+ aliases: aliases$2,
+ extensions: extensions$5,
+ filenames: filenames$2,
+ languageId: languageId$5,
+ 'default': JSON_with_Comments
+});
+
+var name$8 = "JSON5";
+var type$6 = "data";
+var extensions$6 = [
+ ".json5"
+];
+var tmScope$6 = "source.js";
+var aceMode$6 = "javascript";
+var codemirrorMode$6 = "javascript";
+var codemirrorMimeType$6 = "application/json";
+var languageId$6 = 175;
+var JSON5 = {
+ name: name$8,
+ type: type$6,
+ extensions: extensions$6,
+ tmScope: tmScope$6,
+ aceMode: aceMode$6,
+ codemirrorMode: codemirrorMode$6,
+ codemirrorMimeType: codemirrorMimeType$6,
+ languageId: languageId$6
+};
+
+var JSON5$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$8,
+ type: type$6,
+ extensions: extensions$6,
+ tmScope: tmScope$6,
+ aceMode: aceMode$6,
+ codemirrorMode: codemirrorMode$6,
+ codemirrorMimeType: codemirrorMimeType$6,
+ languageId: languageId$6,
+ 'default': JSON5
+});
+
+var require$$0$2 = getCjsExportFromNamespace(JavaScript$1);
+
+var require$$1 = getCjsExportFromNamespace(JSX$1);
+
+var require$$2 = getCjsExportFromNamespace(TypeScript$1);
+
+var require$$3 = getCjsExportFromNamespace(TSX$1);
+
+var require$$4$1 = getCjsExportFromNamespace(_JSON$1);
+
+var require$$5 = getCjsExportFromNamespace(JSON_with_Comments$1);
+
+var require$$6 = getCjsExportFromNamespace(JSON5$1);
+
+var languages = [createLanguage(require$$0$2, function (data) {
+ return Object.assign(data, {
+ since: "0.0.0",
+ parsers: ["babel", "flow"],
+ vscodeLanguageIds: ["javascript", "mongo"],
+ interpreters: data.interpreters.concat(["nodejs"])
+ });
+}), createLanguage(require$$0$2, function (data) {
+ return Object.assign(data, {
+ name: "Flow",
+ since: "0.0.0",
+ parsers: ["babel", "flow"],
+ vscodeLanguageIds: ["javascript"],
+ aliases: [],
+ filenames: [],
+ extensions: [".js.flow"]
+ });
+}), createLanguage(require$$1, function (data) {
+ return Object.assign(data, {
+ since: "0.0.0",
+ parsers: ["babel", "flow"],
+ vscodeLanguageIds: ["javascriptreact"]
+ });
+}), createLanguage(require$$2, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["typescript"],
+ vscodeLanguageIds: ["typescript"]
+ });
+}), createLanguage(require$$3, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["typescript"],
+ vscodeLanguageIds: ["typescriptreact"]
+ });
+}), createLanguage(require$$4$1, function (data) {
+ return Object.assign(data, {
+ name: "JSON.stringify",
+ since: "1.13.0",
+ parsers: ["json-stringify"],
+ vscodeLanguageIds: ["json"],
+ extensions: [],
+ // .json file defaults to json instead of json-stringify
+ filenames: ["package.json", "package-lock.json", "composer.json"]
+ });
+}), createLanguage(require$$4$1, function (data) {
+ return Object.assign(data, {
+ since: "1.5.0",
+ parsers: ["json"],
+ vscodeLanguageIds: ["json"],
+ filenames: data.filenames.concat([".prettierrc"])
+ });
+}), createLanguage(require$$5, function (data) {
+ return Object.assign(data, {
+ since: "1.5.0",
+ parsers: ["json"],
+ vscodeLanguageIds: ["jsonc"],
+ filenames: data.filenames.concat([".eslintrc"])
+ });
+}), createLanguage(require$$6, function (data) {
+ return Object.assign(data, {
+ since: "1.13.0",
+ parsers: ["json5"],
+ vscodeLanguageIds: ["json5"]
+ });
+})];
+var printers = {
+ estree: printerEstree,
+ "estree-json": printerEstreeJson
+};
+var languageJs = {
+ languages,
+ options: options$2,
+ printers
+};
+
+var index = [
+ "a",
+ "abbr",
+ "acronym",
+ "address",
+ "applet",
+ "area",
+ "article",
+ "aside",
+ "audio",
+ "b",
+ "base",
+ "basefont",
+ "bdi",
+ "bdo",
+ "bgsound",
+ "big",
+ "blink",
+ "blockquote",
+ "body",
+ "br",
+ "button",
+ "canvas",
+ "caption",
+ "center",
+ "cite",
+ "code",
+ "col",
+ "colgroup",
+ "command",
+ "content",
+ "data",
+ "datalist",
+ "dd",
+ "del",
+ "details",
+ "dfn",
+ "dialog",
+ "dir",
+ "div",
+ "dl",
+ "dt",
+ "element",
+ "em",
+ "embed",
+ "fieldset",
+ "figcaption",
+ "figure",
+ "font",
+ "footer",
+ "form",
+ "frame",
+ "frameset",
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "h6",
+ "head",
+ "header",
+ "hgroup",
+ "hr",
+ "html",
+ "i",
+ "iframe",
+ "image",
+ "img",
+ "input",
+ "ins",
+ "isindex",
+ "kbd",
+ "keygen",
+ "label",
+ "legend",
+ "li",
+ "link",
+ "listing",
+ "main",
+ "map",
+ "mark",
+ "marquee",
+ "math",
+ "menu",
+ "menuitem",
+ "meta",
+ "meter",
+ "multicol",
+ "nav",
+ "nextid",
+ "nobr",
+ "noembed",
+ "noframes",
+ "noscript",
+ "object",
+ "ol",
+ "optgroup",
+ "option",
+ "output",
+ "p",
+ "param",
+ "picture",
+ "plaintext",
+ "pre",
+ "progress",
+ "q",
+ "rb",
+ "rbc",
+ "rp",
+ "rt",
+ "rtc",
+ "ruby",
+ "s",
+ "samp",
+ "script",
+ "section",
+ "select",
+ "shadow",
+ "slot",
+ "small",
+ "source",
+ "spacer",
+ "span",
+ "strike",
+ "strong",
+ "style",
+ "sub",
+ "summary",
+ "sup",
+ "svg",
+ "table",
+ "tbody",
+ "td",
+ "template",
+ "textarea",
+ "tfoot",
+ "th",
+ "thead",
+ "time",
+ "title",
+ "tr",
+ "track",
+ "tt",
+ "u",
+ "ul",
+ "var",
+ "video",
+ "wbr",
+ "xmp"
+];
+
+var htmlTagNames = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ 'default': index
+});
+
+var htmlTagNames$1 = getCjsExportFromNamespace(htmlTagNames);
+
+function clean$2(ast, newObj, parent) {
+ ["raw", // front-matter
+ "raws", "sourceIndex", "source", "before", "after", "trailingComma"].forEach(function (name) {
+ delete newObj[name];
+ });
+
+ if (ast.type === "yaml") {
+ delete newObj.value;
+ } // --insert-pragma
+
+
+ if (ast.type === "css-comment" && parent.type === "css-root" && parent.nodes.length !== 0 && ( // first non-front-matter comment
+ parent.nodes[0] === ast || (parent.nodes[0].type === "yaml" || parent.nodes[0].type === "toml") && parent.nodes[1] === ast)) {
+ /**
+ * something
+ *
+ * @format
+ */
+ delete newObj.text; // standalone pragma
+
+ if (/^\*\s*@(format|prettier)\s*$/.test(ast.text)) {
+ return null;
+ }
+ }
+
+ if (ast.type === "media-query" || ast.type === "media-query-list" || ast.type === "media-feature-expression") {
+ delete newObj.value;
+ }
+
+ if (ast.type === "css-rule") {
+ delete newObj.params;
+ }
+
+ if (ast.type === "selector-combinator") {
+ newObj.value = newObj.value.replace(/\s+/g, " ");
+ }
+
+ if (ast.type === "media-feature") {
+ newObj.value = newObj.value.replace(/ /g, "");
+ }
+
+ if (ast.type === "value-word" && (ast.isColor && ast.isHex || ["initial", "inherit", "unset", "revert"].indexOf(newObj.value.replace().toLowerCase()) !== -1) || ast.type === "media-feature" || ast.type === "selector-root-invalid" || ast.type === "selector-pseudo") {
+ newObj.value = newObj.value.toLowerCase();
+ }
+
+ if (ast.type === "css-decl") {
+ newObj.prop = newObj.prop.toLowerCase();
+ }
+
+ if (ast.type === "css-atrule" || ast.type === "css-import") {
+ newObj.name = newObj.name.toLowerCase();
+ }
+
+ if (ast.type === "value-number") {
+ newObj.unit = newObj.unit.toLowerCase();
+ }
+
+ if ((ast.type === "media-feature" || ast.type === "media-keyword" || ast.type === "media-type" || ast.type === "media-unknown" || ast.type === "media-url" || ast.type === "media-value" || ast.type === "selector-attribute" || ast.type === "selector-string" || ast.type === "selector-class" || ast.type === "selector-combinator" || ast.type === "value-string") && newObj.value) {
+ newObj.value = cleanCSSStrings(newObj.value);
+ }
+
+ if (ast.type === "selector-attribute") {
+ newObj.attribute = newObj.attribute.trim();
+
+ if (newObj.namespace) {
+ if (typeof newObj.namespace === "string") {
+ newObj.namespace = newObj.namespace.trim();
+
+ if (newObj.namespace.length === 0) {
+ newObj.namespace = true;
+ }
+ }
+ }
+
+ if (newObj.value) {
+ newObj.value = newObj.value.trim().replace(/^['"]|['"]$/g, "");
+ delete newObj.quoted;
+ }
+ }
+
+ if ((ast.type === "media-value" || ast.type === "media-type" || ast.type === "value-number" || ast.type === "selector-root-invalid" || ast.type === "selector-class" || ast.type === "selector-combinator" || ast.type === "selector-tag") && newObj.value) {
+ newObj.value = newObj.value.replace(/([\d.eE+-]+)([a-zA-Z]*)/g, function (match, numStr, unit) {
+ var num = Number(numStr);
+ return isNaN(num) ? match : num + unit.toLowerCase();
+ });
+ }
+
+ if (ast.type === "selector-tag") {
+ var lowercasedValue = ast.value.toLowerCase();
+
+ if (htmlTagNames$1.indexOf(lowercasedValue) !== -1) {
+ newObj.value = lowercasedValue;
+ }
+
+ if (["from", "to"].indexOf(lowercasedValue) !== -1) {
+ newObj.value = lowercasedValue;
+ }
+ } // Workaround when `postcss-values-parser` parse `not`, `and` or `or` keywords as `value-func`
+
+
+ if (ast.type === "css-atrule" && ast.name.toLowerCase() === "supports") {
+ delete newObj.value;
+ } // Workaround for SCSS nested properties
+
+
+ if (ast.type === "selector-unknown") {
+ delete newObj.value;
+ }
+}
+
+function cleanCSSStrings(value) {
+ return value.replace(/'/g, '"').replace(/\\([^a-fA-F\d])/g, "$1");
+}
+
+var clean_1$1 = clean$2;
+
+var _require$$0$builders$3 = doc.builders,
+ hardline$6 = _require$$0$builders$3.hardline,
+ literalline$3 = _require$$0$builders$3.literalline,
+ concat$8 = _require$$0$builders$3.concat,
+ markAsRoot$1 = _require$$0$builders$3.markAsRoot,
+ mapDoc$4 = doc.utils.mapDoc;
+
+function embed$1(path, print, textToDoc
+/*, options */
+) {
+ var node = path.getValue();
+
+ if (node.type === "yaml") {
+ return markAsRoot$1(concat$8(["---", hardline$6, node.value.trim() ? replaceNewlinesWithLiterallines(textToDoc(node.value, {
+ parser: "yaml"
+ })) : "", "---", hardline$6]));
+ }
+
+ return null;
+
+ function replaceNewlinesWithLiterallines(doc) {
+ return mapDoc$4(doc, function (currentDoc) {
+ return typeof currentDoc === "string" && currentDoc.includes("\n") ? concat$8(currentDoc.split(/(\n)/g).map(function (v, i) {
+ return i % 2 === 0 ? v : literalline$3;
+ })) : currentDoc;
+ });
+ }
+}
+
+var embed_1$1 = embed$1;
+
+var DELIMITER_MAP = {
+ "---": "yaml",
+ "+++": "toml"
+};
+
+function parse$3(text) {
+ var delimiterRegex = Object.keys(DELIMITER_MAP).map(escapeStringRegexp).join("|");
+ var match = text.match( // trailing spaces after delimiters are allowed
+ new RegExp(`^(${delimiterRegex})[^\\n\\S]*\\n(?:([\\s\\S]*?)\\n)?\\1[^\\n\\S]*(\\n|$)`));
+
+ if (match === null) {
+ return {
+ frontMatter: null,
+ content: text
+ };
+ }
+
+ var raw = match[0].replace(/\n$/, "");
+ var delimiter = match[1];
+ var value = match[2];
+ return {
+ frontMatter: {
+ type: DELIMITER_MAP[delimiter],
+ value,
+ raw
+ },
+ content: match[0].replace(/[^\n]/g, " ") + text.slice(match[0].length)
+ };
+}
+
+var frontMatter = parse$3;
+
+function hasPragma$1(text) {
+ return pragma.hasPragma(frontMatter(text).content);
+}
+
+function insertPragma$2(text) {
+ var _parseFrontMatter = frontMatter(text),
+ frontMatter$1 = _parseFrontMatter.frontMatter,
+ content = _parseFrontMatter.content;
+
+ return (frontMatter$1 ? frontMatter$1.raw + "\n\n" : "") + pragma.insertPragma(content);
+}
+
+var pragma$1 = {
+ hasPragma: hasPragma$1,
+ insertPragma: insertPragma$2
+};
+
+var colorAdjusterFunctions = ["red", "green", "blue", "alpha", "a", "rgb", "hue", "h", "saturation", "s", "lightness", "l", "whiteness", "w", "blackness", "b", "tint", "shade", "blend", "blenda", "contrast", "hsl", "hsla", "hwb", "hwba"];
+
+function getAncestorCounter(path, typeOrTypes) {
+ var types = [].concat(typeOrTypes);
+ var counter = -1;
+ var ancestorNode;
+
+ while (ancestorNode = path.getParentNode(++counter)) {
+ if (types.indexOf(ancestorNode.type) !== -1) {
+ return counter;
+ }
+ }
+
+ return -1;
+}
+
+function getAncestorNode(path, typeOrTypes) {
+ var counter = getAncestorCounter(path, typeOrTypes);
+ return counter === -1 ? null : path.getParentNode(counter);
+}
+
+function getPropOfDeclNode(path) {
+ var declAncestorNode = getAncestorNode(path, "css-decl");
+ return declAncestorNode && declAncestorNode.prop && declAncestorNode.prop.toLowerCase();
+}
+
+function isSCSS(parser, text) {
+ var hasExplicitParserChoice = parser === "less" || parser === "scss";
+ var IS_POSSIBLY_SCSS = /(\w\s*: [^}:]+|#){|@import[^\n]+(url|,)/;
+ return hasExplicitParserChoice ? parser === "scss" : IS_POSSIBLY_SCSS.test(text);
+}
+
+function isWideKeywords(value) {
+ return ["initial", "inherit", "unset", "revert"].indexOf(value.toLowerCase()) !== -1;
+}
+
+function isKeyframeAtRuleKeywords(path, value) {
+ var atRuleAncestorNode = getAncestorNode(path, "css-atrule");
+ return atRuleAncestorNode && atRuleAncestorNode.name && atRuleAncestorNode.name.toLowerCase().endsWith("keyframes") && ["from", "to"].indexOf(value.toLowerCase()) !== -1;
+}
+
+function maybeToLowerCase(value) {
+ return value.includes("$") || value.includes("@") || value.includes("#") || value.startsWith("%") || value.startsWith("--") || value.startsWith(":--") || value.includes("(") && value.includes(")") ? value : value.toLowerCase();
+}
+
+function insideValueFunctionNode(path, functionName) {
+ var funcAncestorNode = getAncestorNode(path, "value-func");
+ return funcAncestorNode && funcAncestorNode.value && funcAncestorNode.value.toLowerCase() === functionName;
+}
+
+function insideICSSRuleNode(path) {
+ var ruleAncestorNode = getAncestorNode(path, "css-rule");
+ return ruleAncestorNode && ruleAncestorNode.raws && ruleAncestorNode.raws.selector && (ruleAncestorNode.raws.selector.startsWith(":import") || ruleAncestorNode.raws.selector.startsWith(":export"));
+}
+
+function insideAtRuleNode(path, atRuleNameOrAtRuleNames) {
+ var atRuleNames = [].concat(atRuleNameOrAtRuleNames);
+ var atRuleAncestorNode = getAncestorNode(path, "css-atrule");
+ return atRuleAncestorNode && atRuleNames.indexOf(atRuleAncestorNode.name.toLowerCase()) !== -1;
+}
+
+function insideURLFunctionInImportAtRuleNode(path) {
+ var node = path.getValue();
+ var atRuleAncestorNode = getAncestorNode(path, "css-atrule");
+ return atRuleAncestorNode && atRuleAncestorNode.name === "import" && node.groups[0].value === "url" && node.groups.length === 2;
+}
+
+function isURLFunctionNode(node) {
+ return node.type === "value-func" && node.value.toLowerCase() === "url";
+}
+
+function isLastNode(path, node) {
+ var parentNode = path.getParentNode();
+
+ if (!parentNode) {
+ return false;
+ }
+
+ var nodes = parentNode.nodes;
+ return nodes && nodes.indexOf(node) === nodes.length - 1;
+}
+
+function isHTMLTag(value) {
+ return htmlTagNames$1.indexOf(value.toLowerCase()) !== -1;
+}
+
+function isDetachedRulesetDeclarationNode(node) {
+ // If a Less file ends up being parsed with the SCSS parser, Less
+ // variable declarations will be parsed as atrules with names ending
+ // with a colon, so keep the original case then.
+ if (!node.selector) {
+ return false;
+ }
+
+ return typeof node.selector === "string" && /^@.+:.*$/.test(node.selector) || node.selector.value && /^@.+:.*$/.test(node.selector.value);
+}
+
+function isForKeywordNode(node) {
+ return node.type === "value-word" && ["from", "through", "end"].indexOf(node.value) !== -1;
+}
+
+function isIfElseKeywordNode(node) {
+ return node.type === "value-word" && ["and", "or", "not"].indexOf(node.value) !== -1;
+}
+
+function isEachKeywordNode(node) {
+ return node.type === "value-word" && node.value === "in";
+}
+
+function isMultiplicationNode(node) {
+ return node.type === "value-operator" && node.value === "*";
+}
+
+function isDivisionNode(node) {
+ return node.type === "value-operator" && node.value === "/";
+}
+
+function isAdditionNode(node) {
+ return node.type === "value-operator" && node.value === "+";
+}
+
+function isSubtractionNode(node) {
+ return node.type === "value-operator" && node.value === "-";
+}
+
+function isModuloNode(node) {
+ return node.type === "value-operator" && node.value === "%";
+}
+
+function isMathOperatorNode(node) {
+ return isMultiplicationNode(node) || isDivisionNode(node) || isAdditionNode(node) || isSubtractionNode(node) || isModuloNode(node);
+}
+
+function isEqualityOperatorNode(node) {
+ return node.type === "value-word" && ["==", "!="].indexOf(node.value) !== -1;
+}
+
+function isRelationalOperatorNode(node) {
+ return node.type === "value-word" && ["<", ">", "<=", ">="].indexOf(node.value) !== -1;
+}
+
+function isSCSSControlDirectiveNode(node) {
+ return node.type === "css-atrule" && ["if", "else", "for", "each", "while"].indexOf(node.name) !== -1;
+}
+
+function isSCSSNestedPropertyNode(node) {
+ if (!node.selector) {
+ return false;
+ }
+
+ return node.selector.replace(/\/\*.*?\*\//, "").replace(/\/\/.*?\n/, "").trim().endsWith(":");
+}
+
+function isDetachedRulesetCallNode(node) {
+ return node.raws && node.raws.params && /^\(\s*\)$/.test(node.raws.params);
+}
+
+function isTemplatePlaceholderNode(node) {
+ return node.name.startsWith("prettier-placeholder");
+}
+
+function isTemplatePropNode(node) {
+ return node.prop.startsWith("@prettier-placeholder");
+}
+
+function isPostcssSimpleVarNode(currentNode, nextNode) {
+ return currentNode.value === "$$" && currentNode.type === "value-func" && nextNode && nextNode.type === "value-word" && !nextNode.raws.before;
+}
+
+function hasComposesNode(node) {
+ return node.value && node.value.type === "value-root" && node.value.group && node.value.group.type === "value-value" && node.prop.toLowerCase() === "composes";
+}
+
+function hasParensAroundNode(node) {
+ return node.value && node.value.group && node.value.group.group && node.value.group.group.type === "value-paren_group" && node.value.group.group.open !== null && node.value.group.group.close !== null;
+}
+
+function hasEmptyRawBefore(node) {
+ return node.raws && node.raws.before === "";
+}
+
+function isKeyValuePairNode(node) {
+ return node.type === "value-comma_group" && node.groups && node.groups[1] && node.groups[1].type === "value-colon";
+}
+
+function isKeyValuePairInParenGroupNode(node) {
+ return node.type === "value-paren_group" && node.groups && node.groups[0] && isKeyValuePairNode(node.groups[0]);
+}
+
+function isSCSSMapItemNode(path) {
+ var node = path.getValue(); // Ignore empty item (i.e. `$key: ()`)
+
+ if (node.groups.length === 0) {
+ return false;
+ }
+
+ var parentParentNode = path.getParentNode(1); // Check open parens contain key/value pair (i.e. `(key: value)` and `(key: (value, other-value)`)
+
+ if (!isKeyValuePairInParenGroupNode(node) && !(parentParentNode && isKeyValuePairInParenGroupNode(parentParentNode))) {
+ return false;
+ }
+
+ var declNode = getAncestorNode(path, "css-decl"); // SCSS map declaration (i.e. `$map: (key: value, other-key: other-value)`)
+
+ if (declNode && declNode.prop && declNode.prop.startsWith("$")) {
+ return true;
+ } // List as value of key inside SCSS map (i.e. `$map: (key: (value other-value other-other-value))`)
+
+
+ if (isKeyValuePairInParenGroupNode(parentParentNode)) {
+ return true;
+ } // SCSS Map is argument of function (i.e. `func((key: value, other-key: other-value))`)
+
+
+ if (parentParentNode.type === "value-func") {
+ return true;
+ }
+
+ return false;
+}
+
+function isInlineValueCommentNode(node) {
+ return node.type === "value-comment" && node.inline;
+}
+
+function isHashNode(node) {
+ return node.type === "value-word" && node.value === "#";
+}
+
+function isLeftCurlyBraceNode(node) {
+ return node.type === "value-word" && node.value === "{";
+}
+
+function isRightCurlyBraceNode(node) {
+ return node.type === "value-word" && node.value === "}";
+}
+
+function isWordNode(node) {
+ return ["value-word", "value-atword"].indexOf(node.type) !== -1;
+}
+
+function isColonNode(node) {
+ return node.type === "value-colon";
+}
+
+function isMediaAndSupportsKeywords(node) {
+ return node.value && ["not", "and", "or"].indexOf(node.value.toLowerCase()) !== -1;
+}
+
+function isColorAdjusterFuncNode(node) {
+ if (node.type !== "value-func") {
+ return false;
+ }
+
+ return colorAdjusterFunctions.indexOf(node.value.toLowerCase()) !== -1;
+}
+
+var utils$3 = {
+ getAncestorCounter,
+ getAncestorNode,
+ getPropOfDeclNode,
+ maybeToLowerCase,
+ insideValueFunctionNode,
+ insideICSSRuleNode,
+ insideAtRuleNode,
+ insideURLFunctionInImportAtRuleNode,
+ isKeyframeAtRuleKeywords,
+ isHTMLTag,
+ isWideKeywords,
+ isSCSS,
+ isLastNode,
+ isSCSSControlDirectiveNode,
+ isDetachedRulesetDeclarationNode,
+ isRelationalOperatorNode,
+ isEqualityOperatorNode,
+ isMultiplicationNode,
+ isDivisionNode,
+ isAdditionNode,
+ isSubtractionNode,
+ isModuloNode,
+ isMathOperatorNode,
+ isEachKeywordNode,
+ isForKeywordNode,
+ isURLFunctionNode,
+ isIfElseKeywordNode,
+ hasComposesNode,
+ hasParensAroundNode,
+ hasEmptyRawBefore,
+ isSCSSNestedPropertyNode,
+ isDetachedRulesetCallNode,
+ isTemplatePlaceholderNode,
+ isTemplatePropNode,
+ isPostcssSimpleVarNode,
+ isKeyValuePairNode,
+ isKeyValuePairInParenGroupNode,
+ isSCSSMapItemNode,
+ isInlineValueCommentNode,
+ isHashNode,
+ isLeftCurlyBraceNode,
+ isRightCurlyBraceNode,
+ isWordNode,
+ isColonNode,
+ isMediaAndSupportsKeywords,
+ isColorAdjusterFuncNode
+};
+
+var insertPragma$3 = pragma$1.insertPragma;
+var printNumber$2 = util.printNumber,
+ printString$2 = util.printString,
+ hasIgnoreComment$3 = util.hasIgnoreComment,
+ hasNewline$4 = util.hasNewline;
+var isNextLineEmpty$3 = utilShared.isNextLineEmpty;
+var _require$$3$builders = doc.builders,
+ concat$9 = _require$$3$builders.concat,
+ join$6 = _require$$3$builders.join,
+ line$3 = _require$$3$builders.line,
+ hardline$7 = _require$$3$builders.hardline,
+ softline$3 = _require$$3$builders.softline,
+ group$6 = _require$$3$builders.group,
+ fill$3 = _require$$3$builders.fill,
+ indent$5 = _require$$3$builders.indent,
+ dedent$2 = _require$$3$builders.dedent,
+ ifBreak$2 = _require$$3$builders.ifBreak,
+ removeLines$2 = doc.utils.removeLines;
+var getAncestorNode$1 = utils$3.getAncestorNode,
+ getPropOfDeclNode$1 = utils$3.getPropOfDeclNode,
+ maybeToLowerCase$1 = utils$3.maybeToLowerCase,
+ insideValueFunctionNode$1 = utils$3.insideValueFunctionNode,
+ insideICSSRuleNode$1 = utils$3.insideICSSRuleNode,
+ insideAtRuleNode$1 = utils$3.insideAtRuleNode,
+ insideURLFunctionInImportAtRuleNode$1 = utils$3.insideURLFunctionInImportAtRuleNode,
+ isKeyframeAtRuleKeywords$1 = utils$3.isKeyframeAtRuleKeywords,
+ isHTMLTag$1 = utils$3.isHTMLTag,
+ isWideKeywords$1 = utils$3.isWideKeywords,
+ isSCSS$1 = utils$3.isSCSS,
+ isLastNode$1 = utils$3.isLastNode,
+ isSCSSControlDirectiveNode$1 = utils$3.isSCSSControlDirectiveNode,
+ isDetachedRulesetDeclarationNode$1 = utils$3.isDetachedRulesetDeclarationNode,
+ isRelationalOperatorNode$1 = utils$3.isRelationalOperatorNode,
+ isEqualityOperatorNode$1 = utils$3.isEqualityOperatorNode,
+ isMultiplicationNode$1 = utils$3.isMultiplicationNode,
+ isDivisionNode$1 = utils$3.isDivisionNode,
+ isAdditionNode$1 = utils$3.isAdditionNode,
+ isSubtractionNode$1 = utils$3.isSubtractionNode,
+ isMathOperatorNode$1 = utils$3.isMathOperatorNode,
+ isEachKeywordNode$1 = utils$3.isEachKeywordNode,
+ isForKeywordNode$1 = utils$3.isForKeywordNode,
+ isURLFunctionNode$1 = utils$3.isURLFunctionNode,
+ isIfElseKeywordNode$1 = utils$3.isIfElseKeywordNode,
+ hasComposesNode$1 = utils$3.hasComposesNode,
+ hasParensAroundNode$1 = utils$3.hasParensAroundNode,
+ hasEmptyRawBefore$1 = utils$3.hasEmptyRawBefore,
+ isKeyValuePairNode$1 = utils$3.isKeyValuePairNode,
+ isDetachedRulesetCallNode$1 = utils$3.isDetachedRulesetCallNode,
+ isTemplatePlaceholderNode$1 = utils$3.isTemplatePlaceholderNode,
+ isTemplatePropNode$1 = utils$3.isTemplatePropNode,
+ isPostcssSimpleVarNode$1 = utils$3.isPostcssSimpleVarNode,
+ isSCSSMapItemNode$1 = utils$3.isSCSSMapItemNode,
+ isInlineValueCommentNode$1 = utils$3.isInlineValueCommentNode,
+ isHashNode$1 = utils$3.isHashNode,
+ isLeftCurlyBraceNode$1 = utils$3.isLeftCurlyBraceNode,
+ isRightCurlyBraceNode$1 = utils$3.isRightCurlyBraceNode,
+ isWordNode$1 = utils$3.isWordNode,
+ isColonNode$1 = utils$3.isColonNode,
+ isMediaAndSupportsKeywords$1 = utils$3.isMediaAndSupportsKeywords,
+ isColorAdjusterFuncNode$1 = utils$3.isColorAdjusterFuncNode;
+
+function shouldPrintComma$1(options) {
+ switch (options.trailingComma) {
+ case "all":
+ case "es5":
+ return true;
+
+ case "none":
+ default:
+ return false;
+ }
+}
+
+function genericPrint$2(path, options, print) {
+ var node = path.getValue();
+ /* istanbul ignore if */
+
+ if (!node) {
+ return "";
+ }
+
+ if (typeof node === "string") {
+ return node;
+ }
+
+ switch (node.type) {
+ case "yaml":
+ case "toml":
+ return concat$9([node.raw, hardline$7]);
+
+ case "css-root":
+ {
+ var nodes = printNodeSequence(path, options, print);
+
+ if (nodes.parts.length) {
+ return concat$9([nodes, hardline$7]);
+ }
+
+ return nodes;
+ }
+
+ case "css-comment":
+ {
+ if (node.raws.content) {
+ return node.raws.content;
+ }
+
+ var text = options.originalText.slice(options.locStart(node), options.locEnd(node));
+ var rawText = node.raws.text || node.text; // Workaround a bug where the location is off.
+ // https://github.com/postcss/postcss-scss/issues/63
+
+ if (text.indexOf(rawText) === -1) {
+ if (node.raws.inline) {
+ return concat$9(["// ", rawText]);
+ }
+
+ return concat$9(["/* ", rawText, " */"]);
+ }
+
+ return text;
+ }
+
+ case "css-rule":
+ {
+ return concat$9([path.call(print, "selector"), node.important ? " !important" : "", node.nodes ? concat$9([" {", node.nodes.length > 0 ? indent$5(concat$9([hardline$7, printNodeSequence(path, options, print)])) : "", hardline$7, "}", isDetachedRulesetDeclarationNode$1(node) ? ";" : ""]) : ";"]);
+ }
+
+ case "css-decl":
+ {
+ var parentNode = path.getParentNode();
+ return concat$9([node.raws.before.replace(/[\s;]/g, ""), insideICSSRuleNode$1(path) ? node.prop : maybeToLowerCase$1(node.prop), node.raws.between.trim() === ":" ? ":" : node.raws.between.trim(), node.extend ? "" : " ", hasComposesNode$1(node) ? removeLines$2(path.call(print, "value")) : path.call(print, "value"), node.raws.important ? node.raws.important.replace(/\s*!\s*important/i, " !important") : node.important ? " !important" : "", node.raws.scssDefault ? node.raws.scssDefault.replace(/\s*!default/i, " !default") : node.scssDefault ? " !default" : "", node.raws.scssGlobal ? node.raws.scssGlobal.replace(/\s*!global/i, " !global") : node.scssGlobal ? " !global" : "", node.nodes ? concat$9([" {", indent$5(concat$9([softline$3, printNodeSequence(path, options, print)])), softline$3, "}"]) : isTemplatePropNode$1(node) && !parentNode.raws.semicolon && options.originalText[options.locEnd(node) - 1] !== ";" ? "" : ";"]);
+ }
+
+ case "css-atrule":
+ {
+ var _parentNode = path.getParentNode();
+
+ return concat$9(["@", // If a Less file ends up being parsed with the SCSS parser, Less
+ // variable declarations will be parsed as at-rules with names ending
+ // with a colon, so keep the original case then.
+ isDetachedRulesetCallNode$1(node) || node.name.endsWith(":") ? node.name : maybeToLowerCase$1(node.name), node.params ? concat$9([isDetachedRulesetCallNode$1(node) ? "" : isTemplatePlaceholderNode$1(node) && /^\s*\n/.test(node.raws.afterName) ? /^\s*\n\s*\n/.test(node.raws.afterName) ? concat$9([hardline$7, hardline$7]) : hardline$7 : " ", path.call(print, "params")]) : "", node.selector ? indent$5(concat$9([" ", path.call(print, "selector")])) : "", node.value ? group$6(concat$9([" ", path.call(print, "value"), isSCSSControlDirectiveNode$1(node) ? hasParensAroundNode$1(node) ? " " : line$3 : ""])) : node.name === "else" ? " " : "", node.nodes ? concat$9([isSCSSControlDirectiveNode$1(node) ? "" : " ", "{", indent$5(concat$9([node.nodes.length > 0 ? softline$3 : "", printNodeSequence(path, options, print)])), softline$3, "}"]) : isTemplatePlaceholderNode$1(node) && !_parentNode.raws.semicolon && options.originalText[options.locEnd(node) - 1] !== ";" ? "" : ";"]);
+ }
+ // postcss-media-query-parser
+
+ case "media-query-list":
+ {
+ var parts = [];
+ path.each(function (childPath) {
+ var node = childPath.getValue();
+
+ if (node.type === "media-query" && node.value === "") {
+ return;
+ }
+
+ parts.push(childPath.call(print));
+ }, "nodes");
+ return group$6(indent$5(join$6(line$3, parts)));
+ }
+
+ case "media-query":
+ {
+ return concat$9([join$6(" ", path.map(print, "nodes")), isLastNode$1(path, node) ? "" : ","]);
+ }
+
+ case "media-type":
+ {
+ return adjustNumbers(adjustStrings(node.value, options));
+ }
+
+ case "media-feature-expression":
+ {
+ if (!node.nodes) {
+ return node.value;
+ }
+
+ return concat$9(["(", concat$9(path.map(print, "nodes")), ")"]);
+ }
+
+ case "media-feature":
+ {
+ return maybeToLowerCase$1(adjustStrings(node.value.replace(/ +/g, " "), options));
+ }
+
+ case "media-colon":
+ {
+ return concat$9([node.value, " "]);
+ }
+
+ case "media-value":
+ {
+ return adjustNumbers(adjustStrings(node.value, options));
+ }
+
+ case "media-keyword":
+ {
+ return adjustStrings(node.value, options);
+ }
+
+ case "media-url":
+ {
+ return adjustStrings(node.value.replace(/^url\(\s+/gi, "url(").replace(/\s+\)$/gi, ")"), options);
+ }
+
+ case "media-unknown":
+ {
+ return node.value;
+ }
+ // postcss-selector-parser
+
+ case "selector-root":
+ {
+ return group$6(concat$9([insideAtRuleNode$1(path, "custom-selector") ? concat$9([getAncestorNode$1(path, "css-atrule").customSelector, line$3]) : "", join$6(concat$9([",", insideAtRuleNode$1(path, ["extend", "custom-selector", "nest"]) ? line$3 : hardline$7]), path.map(print, "nodes"))]));
+ }
+
+ case "selector-selector":
+ {
+ return group$6(indent$5(concat$9(path.map(print, "nodes"))));
+ }
+
+ case "selector-comment":
+ {
+ return node.value;
+ }
+
+ case "selector-string":
+ {
+ return adjustStrings(node.value, options);
+ }
+
+ case "selector-tag":
+ {
+ var _parentNode2 = path.getParentNode();
+
+ var index = _parentNode2 && _parentNode2.nodes.indexOf(node);
+
+ var prevNode = index && _parentNode2.nodes[index - 1];
+ return concat$9([node.namespace ? concat$9([node.namespace === true ? "" : node.namespace.trim(), "|"]) : "", prevNode.type === "selector-nesting" ? node.value : adjustNumbers(isHTMLTag$1(node.value) || isKeyframeAtRuleKeywords$1(path, node.value) ? node.value.toLowerCase() : node.value)]);
+ }
+
+ case "selector-id":
+ {
+ return concat$9(["#", node.value]);
+ }
+
+ case "selector-class":
+ {
+ return concat$9([".", adjustNumbers(adjustStrings(node.value, options))]);
+ }
+
+ case "selector-attribute":
+ {
+ return concat$9(["[", node.namespace ? concat$9([node.namespace === true ? "" : node.namespace.trim(), "|"]) : "", node.attribute.trim(), node.operator ? node.operator : "", node.value ? quoteAttributeValue(adjustStrings(node.value.trim(), options), options) : "", node.insensitive ? " i" : "", "]"]);
+ }
+
+ case "selector-combinator":
+ {
+ if (node.value === "+" || node.value === ">" || node.value === "~" || node.value === ">>>") {
+ var _parentNode3 = path.getParentNode();
+
+ var _leading = _parentNode3.type === "selector-selector" && _parentNode3.nodes[0] === node ? "" : line$3;
+
+ return concat$9([_leading, node.value, isLastNode$1(path, node) ? "" : " "]);
+ }
+
+ var leading = node.value.trim().startsWith("(") ? line$3 : "";
+ var value = adjustNumbers(adjustStrings(node.value.trim(), options)) || line$3;
+ return concat$9([leading, value]);
+ }
+
+ case "selector-universal":
+ {
+ return concat$9([node.namespace ? concat$9([node.namespace === true ? "" : node.namespace.trim(), "|"]) : "", node.value]);
+ }
+
+ case "selector-pseudo":
+ {
+ return concat$9([maybeToLowerCase$1(node.value), node.nodes && node.nodes.length > 0 ? concat$9(["(", join$6(", ", path.map(print, "nodes")), ")"]) : ""]);
+ }
+
+ case "selector-nesting":
+ {
+ return node.value;
+ }
+
+ case "selector-unknown":
+ {
+ var ruleAncestorNode = getAncestorNode$1(path, "css-rule"); // Nested SCSS property
+
+ if (ruleAncestorNode && ruleAncestorNode.isSCSSNesterProperty) {
+ return adjustNumbers(adjustStrings(maybeToLowerCase$1(node.value), options));
+ }
+
+ return node.value;
+ }
+ // postcss-values-parser
+
+ case "value-value":
+ case "value-root":
+ {
+ return path.call(print, "group");
+ }
+
+ case "value-comment":
+ {
+ return concat$9([node.inline ? "//" : "/*", node.value, node.inline ? "" : "*/"]);
+ }
+
+ case "value-comma_group":
+ {
+ var _parentNode4 = path.getParentNode();
+
+ var parentParentNode = path.getParentNode(1);
+ var declAncestorProp = getPropOfDeclNode$1(path);
+ var isGridValue = declAncestorProp && _parentNode4.type === "value-value" && (declAncestorProp === "grid" || declAncestorProp.startsWith("grid-template"));
+ var atRuleAncestorNode = getAncestorNode$1(path, "css-atrule");
+ var isControlDirective = atRuleAncestorNode && isSCSSControlDirectiveNode$1(atRuleAncestorNode);
+ var printed = path.map(print, "groups");
+ var _parts = [];
+ var insideURLFunction = insideValueFunctionNode$1(path, "url");
+ var insideSCSSInterpolationInString = false;
+ var didBreak = false;
+
+ for (var i = 0; i < node.groups.length; ++i) {
+ _parts.push(printed[i]); // Ignore value inside `url()`
+
+
+ if (insideURLFunction) {
+ continue;
+ }
+
+ var iPrevNode = node.groups[i - 1];
+ var iNode = node.groups[i];
+ var iNextNode = node.groups[i + 1];
+ var iNextNextNode = node.groups[i + 2]; // Ignore after latest node (i.e. before semicolon)
+
+ if (!iNextNode) {
+ continue;
+ } // Ignore spaces before/after string interpolation (i.e. `"#{my-fn("_")}"`)
+
+
+ var isStartSCSSInterpolationInString = iNode.type === "value-string" && iNode.value.startsWith("#{");
+ var isEndingSCSSInterpolationInString = insideSCSSInterpolationInString && iNextNode.type === "value-string" && iNextNode.value.endsWith("}");
+
+ if (isStartSCSSInterpolationInString || isEndingSCSSInterpolationInString) {
+ insideSCSSInterpolationInString = !insideSCSSInterpolationInString;
+ continue;
+ }
+
+ if (insideSCSSInterpolationInString) {
+ continue;
+ } // Ignore colon (i.e. `:`)
+
+
+ if (isColonNode$1(iNode) || isColonNode$1(iNextNode)) {
+ continue;
+ } // Ignore `@` in Less (i.e. `@@var;`)
+
+
+ if (iNode.type === "value-atword" && iNode.value === "") {
+ continue;
+ } // Ignore `~` in Less (i.e. `content: ~"^//* some horrible but needed css hack";`)
+
+
+ if (iNode.value === "~") {
+ continue;
+ } // Ignore escape `\`
+
+
+ if (iNode.value && iNode.value.indexOf("\\") !== -1 && iNextNode && iNextNode.type !== "value-comment") {
+ continue;
+ } // Ignore escaped `/`
+
+
+ if (iPrevNode && iPrevNode.value && iPrevNode.value.indexOf("\\") === iPrevNode.value.length - 1 && iNode.type === "value-operator" && iNode.value === "/") {
+ continue;
+ } // Ignore `\` (i.e. `$variable: \@small;`)
+
+
+ if (iNode.value === "\\") {
+ continue;
+ } // Ignore `$$` (i.e. `background-color: $$(style)Color;`)
+
+
+ if (isPostcssSimpleVarNode$1(iNode, iNextNode)) {
+ continue;
+ } // Ignore spaces after `#` and after `{` and before `}` in SCSS interpolation (i.e. `#{variable}`)
+
+
+ if (isHashNode$1(iNode) || isLeftCurlyBraceNode$1(iNode) || isRightCurlyBraceNode$1(iNextNode) || isLeftCurlyBraceNode$1(iNextNode) && hasEmptyRawBefore$1(iNextNode) || isRightCurlyBraceNode$1(iNode) && hasEmptyRawBefore$1(iNextNode)) {
+ continue;
+ } // Ignore css variables and interpolation in SCSS (i.e. `--#{$var}`)
+
+
+ if (iNode.value === "--" && isHashNode$1(iNextNode)) {
+ continue;
+ } // Formatting math operations
+
+
+ var isMathOperator = isMathOperatorNode$1(iNode);
+ var isNextMathOperator = isMathOperatorNode$1(iNextNode); // Print spaces before and after math operators beside SCSS interpolation as is
+ // (i.e. `#{$var}+5`, `#{$var} +5`, `#{$var}+ 5`, `#{$var} + 5`)
+ // (i.e. `5+#{$var}`, `5 +#{$var}`, `5+ #{$var}`, `5 + #{$var}`)
+
+ if ((isMathOperator && isHashNode$1(iNextNode) || isNextMathOperator && isRightCurlyBraceNode$1(iNode)) && hasEmptyRawBefore$1(iNextNode)) {
+ continue;
+ } // Print spaces before and after addition and subtraction math operators as is in `calc` function
+ // due to the fact that it is not valid syntax
+ // (i.e. `calc(1px+1px)`, `calc(1px+ 1px)`, `calc(1px +1px)`, `calc(1px + 1px)`)
+
+
+ if (insideValueFunctionNode$1(path, "calc") && (isAdditionNode$1(iNode) || isAdditionNode$1(iNextNode) || isSubtractionNode$1(iNode) || isSubtractionNode$1(iNextNode)) && hasEmptyRawBefore$1(iNextNode)) {
+ continue;
+ } // Print spaces after `+` and `-` in color adjuster functions as is (e.g. `color(red l(+ 20%))`)
+ // Adjusters with signed numbers (e.g. `color(red l(+20%))`) output as-is.
+
+
+ var isColorAdjusterNode = (isAdditionNode$1(iNode) || isSubtractionNode$1(iNode)) && i === 0 && (iNextNode.type === "value-number" || iNextNode.isHex) && parentParentNode && isColorAdjusterFuncNode$1(parentParentNode) && !hasEmptyRawBefore$1(iNextNode);
+ var requireSpaceBeforeOperator = iNextNextNode && iNextNextNode.type === "value-func" || iNextNextNode && isWordNode$1(iNextNextNode) || iNode.type === "value-func" || isWordNode$1(iNode);
+ var requireSpaceAfterOperator = iNextNode.type === "value-func" || isWordNode$1(iNextNode) || iPrevNode && iPrevNode.type === "value-func" || iPrevNode && isWordNode$1(iPrevNode); // Formatting `/`, `+`, `-` sign
+
+ if (!(isMultiplicationNode$1(iNextNode) || isMultiplicationNode$1(iNode)) && !insideValueFunctionNode$1(path, "calc") && !isColorAdjusterNode && (isDivisionNode$1(iNextNode) && !requireSpaceBeforeOperator || isDivisionNode$1(iNode) && !requireSpaceAfterOperator || isAdditionNode$1(iNextNode) && !requireSpaceBeforeOperator || isAdditionNode$1(iNode) && !requireSpaceAfterOperator || isSubtractionNode$1(iNextNode) || isSubtractionNode$1(iNode)) && (hasEmptyRawBefore$1(iNextNode) || isMathOperator && (!iPrevNode || iPrevNode && isMathOperatorNode$1(iPrevNode)))) {
+ continue;
+ } // Add `hardline` after inline comment (i.e. `// comment\n foo: bar;`)
+
+
+ if (isInlineValueCommentNode$1(iNode)) {
+ _parts.push(hardline$7);
+
+ continue;
+ } // Handle keywords in SCSS control directive
+
+
+ if (isControlDirective && (isEqualityOperatorNode$1(iNextNode) || isRelationalOperatorNode$1(iNextNode) || isIfElseKeywordNode$1(iNextNode) || isEachKeywordNode$1(iNode) || isForKeywordNode$1(iNode))) {
+ _parts.push(" ");
+
+ continue;
+ } // At-rule `namespace` should be in one line
+
+
+ if (atRuleAncestorNode && atRuleAncestorNode.name.toLowerCase() === "namespace") {
+ _parts.push(" ");
+
+ continue;
+ } // Formatting `grid` property
+
+
+ if (isGridValue) {
+ if (iNode.source && iNextNode.source && iNode.source.start.line !== iNextNode.source.start.line) {
+ _parts.push(hardline$7);
+
+ didBreak = true;
+ } else {
+ _parts.push(" ");
+ }
+
+ continue;
+ } // Add `space` before next math operation
+ // Note: `grip` property have `/` delimiter and it is not math operation, so
+ // `grid` property handles above
+
+
+ if (isNextMathOperator) {
+ _parts.push(" ");
+
+ continue;
+ } // Be default all values go through `line`
+
+
+ _parts.push(line$3);
+ }
+
+ if (didBreak) {
+ _parts.unshift(hardline$7);
+ }
+
+ if (isControlDirective) {
+ return group$6(indent$5(concat$9(_parts)));
+ } // Indent is not needed for import url when url is very long
+ // and node has two groups
+ // when type is value-comma_group
+ // example @import url("verylongurl") projection,tv
+
+
+ if (insideURLFunctionInImportAtRuleNode$1(path)) {
+ return group$6(fill$3(_parts));
+ }
+
+ return group$6(indent$5(fill$3(_parts)));
+ }
+
+ case "value-paren_group":
+ {
+ var _parentNode5 = path.getParentNode();
+
+ if (_parentNode5 && isURLFunctionNode$1(_parentNode5) && (node.groups.length === 1 || node.groups.length > 0 && node.groups[0].type === "value-comma_group" && node.groups[0].groups.length > 0 && node.groups[0].groups[0].type === "value-word" && node.groups[0].groups[0].value.startsWith("data:"))) {
+ return concat$9([node.open ? path.call(print, "open") : "", join$6(",", path.map(print, "groups")), node.close ? path.call(print, "close") : ""]);
+ }
+
+ if (!node.open) {
+ var _printed = path.map(print, "groups");
+
+ var res = [];
+
+ for (var _i = 0; _i < _printed.length; _i++) {
+ if (_i !== 0) {
+ res.push(concat$9([",", line$3]));
+ }
+
+ res.push(_printed[_i]);
+ }
+
+ return group$6(indent$5(fill$3(res)));
+ }
+
+ var isSCSSMapItem = isSCSSMapItemNode$1(path);
+ return group$6(concat$9([node.open ? path.call(print, "open") : "", indent$5(concat$9([softline$3, join$6(concat$9([",", line$3]), path.map(function (childPath) {
+ var node = childPath.getValue();
+ var printed = print(childPath); // Key/Value pair in open paren already indented
+
+ if (isKeyValuePairNode$1(node) && node.type === "value-comma_group" && node.groups && node.groups[2] && node.groups[2].type === "value-paren_group") {
+ printed.contents.contents.parts[1] = group$6(printed.contents.contents.parts[1]);
+ return group$6(dedent$2(printed));
+ }
+
+ return printed;
+ }, "groups"))])), ifBreak$2(isSCSS$1(options.parser, options.originalText) && isSCSSMapItem && shouldPrintComma$1(options) ? "," : ""), softline$3, node.close ? path.call(print, "close") : ""]), {
+ shouldBreak: isSCSSMapItem
+ });
+ }
+
+ case "value-func":
+ {
+ return concat$9([node.value, insideAtRuleNode$1(path, "supports") && isMediaAndSupportsKeywords$1(node) ? " " : "", path.call(print, "group")]);
+ }
+
+ case "value-paren":
+ {
+ return node.value;
+ }
+
+ case "value-number":
+ {
+ return concat$9([printCssNumber(node.value), maybeToLowerCase$1(node.unit)]);
+ }
+
+ case "value-operator":
+ {
+ return node.value;
+ }
+
+ case "value-word":
+ {
+ if (node.isColor && node.isHex || isWideKeywords$1(node.value)) {
+ return node.value.toLowerCase();
+ }
+
+ return node.value;
+ }
+
+ case "value-colon":
+ {
+ return concat$9([node.value, // Don't add spaces on `:` in `url` function (i.e. `url(fbglyph: cross-outline, fig-white)`)
+ insideValueFunctionNode$1(path, "url") ? "" : line$3]);
+ }
+
+ case "value-comma":
+ {
+ return concat$9([node.value, " "]);
+ }
+
+ case "value-string":
+ {
+ return printString$2(node.raws.quote + node.value + node.raws.quote, options);
+ }
+
+ case "value-atword":
+ {
+ return concat$9(["@", node.value]);
+ }
+
+ case "value-unicode-range":
+ {
+ return node.value;
+ }
+
+ case "value-unknown":
+ {
+ return node.value;
+ }
+
+ default:
+ /* istanbul ignore next */
+ throw new Error(`Unknown postcss type ${JSON.stringify(node.type)}`);
+ }
+}
+
+function printNodeSequence(path, options, print) {
+ var node = path.getValue();
+ var parts = [];
+ var i = 0;
+ path.map(function (pathChild) {
+ var prevNode = node.nodes[i - 1];
+
+ if (prevNode && prevNode.type === "css-comment" && prevNode.text.trim() === "prettier-ignore") {
+ var childNode = pathChild.getValue();
+ parts.push(options.originalText.slice(options.locStart(childNode), options.locEnd(childNode)));
+ } else {
+ parts.push(pathChild.call(print));
+ }
+
+ if (i !== node.nodes.length - 1) {
+ if (node.nodes[i + 1].type === "css-comment" && !hasNewline$4(options.originalText, options.locStart(node.nodes[i + 1]), {
+ backwards: true
+ }) && node.nodes[i].type !== "yaml" && node.nodes[i].type !== "toml" || node.nodes[i + 1].type === "css-atrule" && node.nodes[i + 1].name === "else" && node.nodes[i].type !== "css-comment") {
+ parts.push(" ");
+ } else {
+ parts.push(hardline$7);
+
+ if (isNextLineEmpty$3(options.originalText, pathChild.getValue(), options) && node.nodes[i].type !== "yaml" && node.nodes[i].type !== "toml") {
+ parts.push(hardline$7);
+ }
+ }
+ }
+
+ i++;
+ }, "nodes");
+ return concat$9(parts);
+}
+
+var STRING_REGEX$1 = /(['"])(?:(?!\1)[^\\]|\\[\s\S])*\1/g;
+var NUMBER_REGEX = /(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?/g;
+var STANDARD_UNIT_REGEX = /[a-zA-Z]+/g;
+var WORD_PART_REGEX = /[$@]?[a-zA-Z_\u0080-\uFFFF][\w\-\u0080-\uFFFF]*/g;
+var ADJUST_NUMBERS_REGEX = RegExp(STRING_REGEX$1.source + `|` + `(${WORD_PART_REGEX.source})?` + `(${NUMBER_REGEX.source})` + `(${STANDARD_UNIT_REGEX.source})?`, "g");
+
+function adjustStrings(value, options) {
+ return value.replace(STRING_REGEX$1, function (match) {
+ return printString$2(match, options);
+ });
+}
+
+function quoteAttributeValue(value, options) {
+ var quote = options.singleQuote ? "'" : '"';
+ return value.includes('"') || value.includes("'") ? value : quote + value + quote;
+}
+
+function adjustNumbers(value) {
+ return value.replace(ADJUST_NUMBERS_REGEX, function (match, quote, wordPart, number, unit) {
+ return !wordPart && number ? (wordPart || "") + printCssNumber(number) + maybeToLowerCase$1(unit || "") : match;
+ });
+}
+
+function printCssNumber(rawNumber) {
+ return printNumber$2(rawNumber) // Remove trailing `.0`.
+ .replace(/\.0(?=$|e)/, "");
+}
+
+var printerPostcss = {
+ print: genericPrint$2,
+ embed: embed_1$1,
+ insertPragma: insertPragma$3,
+ hasPrettierIgnore: hasIgnoreComment$3,
+ massageAstNode: clean_1$1
+};
+
+var options$3 = {
+ singleQuote: commonOptions.singleQuote
+};
+
+var name$9 = "CSS";
+var type$7 = "markup";
+var tmScope$7 = "source.css";
+var aceMode$7 = "css";
+var codemirrorMode$7 = "css";
+var codemirrorMimeType$7 = "text/css";
+var color$2 = "#563d7c";
+var extensions$7 = [
+ ".css"
+];
+var languageId$7 = 50;
+var CSS = {
+ name: name$9,
+ type: type$7,
+ tmScope: tmScope$7,
+ aceMode: aceMode$7,
+ codemirrorMode: codemirrorMode$7,
+ codemirrorMimeType: codemirrorMimeType$7,
+ color: color$2,
+ extensions: extensions$7,
+ languageId: languageId$7
+};
+
+var CSS$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$9,
+ type: type$7,
+ tmScope: tmScope$7,
+ aceMode: aceMode$7,
+ codemirrorMode: codemirrorMode$7,
+ codemirrorMimeType: codemirrorMimeType$7,
+ color: color$2,
+ extensions: extensions$7,
+ languageId: languageId$7,
+ 'default': CSS
+});
+
+var name$a = "PostCSS";
+var type$8 = "markup";
+var tmScope$8 = "source.postcss";
+var group$7 = "CSS";
+var extensions$8 = [
+ ".pcss"
+];
+var aceMode$8 = "text";
+var languageId$8 = 262764437;
+var PostCSS = {
+ name: name$a,
+ type: type$8,
+ tmScope: tmScope$8,
+ group: group$7,
+ extensions: extensions$8,
+ aceMode: aceMode$8,
+ languageId: languageId$8
+};
+
+var PostCSS$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$a,
+ type: type$8,
+ tmScope: tmScope$8,
+ group: group$7,
+ extensions: extensions$8,
+ aceMode: aceMode$8,
+ languageId: languageId$8,
+ 'default': PostCSS
+});
+
+var name$b = "Less";
+var type$9 = "markup";
+var group$8 = "CSS";
+var extensions$9 = [
+ ".less"
+];
+var tmScope$9 = "source.css.less";
+var aceMode$9 = "less";
+var codemirrorMode$8 = "css";
+var codemirrorMimeType$8 = "text/css";
+var languageId$9 = 198;
+var Less = {
+ name: name$b,
+ type: type$9,
+ group: group$8,
+ extensions: extensions$9,
+ tmScope: tmScope$9,
+ aceMode: aceMode$9,
+ codemirrorMode: codemirrorMode$8,
+ codemirrorMimeType: codemirrorMimeType$8,
+ languageId: languageId$9
+};
+
+var Less$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$b,
+ type: type$9,
+ group: group$8,
+ extensions: extensions$9,
+ tmScope: tmScope$9,
+ aceMode: aceMode$9,
+ codemirrorMode: codemirrorMode$8,
+ codemirrorMimeType: codemirrorMimeType$8,
+ languageId: languageId$9,
+ 'default': Less
+});
+
+var name$c = "SCSS";
+var type$a = "markup";
+var tmScope$a = "source.css.scss";
+var group$9 = "CSS";
+var aceMode$a = "scss";
+var codemirrorMode$9 = "css";
+var codemirrorMimeType$9 = "text/x-scss";
+var extensions$a = [
+ ".scss"
+];
+var languageId$a = 329;
+var SCSS = {
+ name: name$c,
+ type: type$a,
+ tmScope: tmScope$a,
+ group: group$9,
+ aceMode: aceMode$a,
+ codemirrorMode: codemirrorMode$9,
+ codemirrorMimeType: codemirrorMimeType$9,
+ extensions: extensions$a,
+ languageId: languageId$a
+};
+
+var SCSS$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$c,
+ type: type$a,
+ tmScope: tmScope$a,
+ group: group$9,
+ aceMode: aceMode$a,
+ codemirrorMode: codemirrorMode$9,
+ codemirrorMimeType: codemirrorMimeType$9,
+ extensions: extensions$a,
+ languageId: languageId$a,
+ 'default': SCSS
+});
+
+var require$$0$3 = getCjsExportFromNamespace(CSS$1);
+
+var require$$1$1 = getCjsExportFromNamespace(PostCSS$1);
+
+var require$$2$1 = getCjsExportFromNamespace(Less$1);
+
+var require$$3$1 = getCjsExportFromNamespace(SCSS$1);
+
+var languages$1 = [createLanguage(require$$0$3, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["css"],
+ vscodeLanguageIds: ["css"]
+ });
+}), createLanguage(require$$1$1, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["css"],
+ vscodeLanguageIds: ["postcss"],
+ extensions: data.extensions.concat(".postcss")
+ });
+}), createLanguage(require$$2$1, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["less"],
+ vscodeLanguageIds: ["less"]
+ });
+}), createLanguage(require$$3$1, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["scss"],
+ vscodeLanguageIds: ["scss"]
+ });
+})];
+var printers$1 = {
+ postcss: printerPostcss
+};
+var languageCss = {
+ languages: languages$1,
+ options: options$3,
+ printers: printers$1
+};
+
+var _require$$0$builders$4 = doc.builders,
+ concat$a = _require$$0$builders$4.concat,
+ join$7 = _require$$0$builders$4.join,
+ softline$4 = _require$$0$builders$4.softline,
+ hardline$8 = _require$$0$builders$4.hardline,
+ line$4 = _require$$0$builders$4.line,
+ group$a = _require$$0$builders$4.group,
+ indent$6 = _require$$0$builders$4.indent,
+ ifBreak$3 = _require$$0$builders$4.ifBreak; // http://w3c.github.io/html/single-page.html#void-elements
+
+var voidTags = ["area", "base", "br", "col", "embed", "hr", "img", "input", "link", "meta", "param", "source", "track", "wbr"]; // Formatter based on @glimmerjs/syntax's built-in test formatter:
+// https://github.com/glimmerjs/glimmer-vm/blob/master/packages/%40glimmer/syntax/lib/generation/print.ts
+
+function printChildren(path, options, print) {
+ return concat$a(path.map(function (childPath, childIndex) {
+ var childNode = path.getValue();
+ var isFirstNode = childIndex === 0;
+ var isLastNode = childIndex == path.getParentNode(0).children.length - 1;
+ var isLastNodeInMultiNodeList = isLastNode && !isFirstNode;
+ var isWhitespace = isWhitespaceNode(childNode);
+
+ if (isWhitespace && isLastNodeInMultiNodeList) {
+ return print(childPath, options, print);
+ } else if (isFirstNode) {
+ return concat$a([softline$4, print(childPath, options, print)]);
+ }
+
+ return print(childPath, options, print);
+ }, "children"));
+}
+
+function print(path, options, print) {
+ var n = path.getValue();
+ /* istanbul ignore if*/
+
+ if (!n) {
+ return "";
+ }
+
+ switch (n.type) {
+ case "Block":
+ case "Program":
+ case "Template":
+ {
+ return group$a(concat$a(path.map(print, "body").filter(function (text) {
+ return text !== "";
+ })));
+ }
+
+ case "ElementNode":
+ {
+ var tagFirstChar = n.tag[0];
+ var isLocal = n.tag.indexOf(".") !== -1;
+ var isGlimmerComponent = tagFirstChar.toUpperCase() === tagFirstChar || isLocal;
+ var hasChildren = n.children.length > 0;
+ var hasNonWhitespaceChildren = n.children.some(function (n) {
+ return !isWhitespaceNode(n);
+ });
+ var isVoid = isGlimmerComponent && (!hasChildren || !hasNonWhitespaceChildren) || voidTags.indexOf(n.tag) !== -1;
+ var closeTagForNoBreak = isVoid ? concat$a([" />", softline$4]) : ">";
+ var closeTagForBreak = isVoid ? "/>" : ">";
+
+ var _getParams = function _getParams(path, print) {
+ return indent$6(concat$a([n.attributes.length ? line$4 : "", join$7(line$4, path.map(print, "attributes")), n.modifiers.length ? line$4 : "", join$7(line$4, path.map(print, "modifiers")), n.comments.length ? line$4 : "", join$7(line$4, path.map(print, "comments"))]));
+ };
+
+ var nextNode = getNextNode(path);
+ return concat$a([group$a(concat$a(["<", n.tag, _getParams(path, print), n.blockParams.length ? ` as |${n.blockParams.join(" ")}|` : "", ifBreak$3(softline$4, ""), ifBreak$3(closeTagForBreak, closeTagForNoBreak)])), !isVoid ? group$a(concat$a([hasNonWhitespaceChildren ? indent$6(printChildren(path, options, print)) : "", ifBreak$3(hasChildren ? hardline$8 : "", ""), concat$a(["</", n.tag, ">"])])) : "", nextNode && nextNode.type === "ElementNode" ? hardline$8 : ""]);
+ }
+
+ case "BlockStatement":
+ {
+ var pp = path.getParentNode(1);
+ var isElseIf = pp && pp.inverse && pp.inverse.body.length === 1 && pp.inverse.body[0] === n && pp.inverse.body[0].path.parts[0] === "if";
+ var hasElseIf = n.inverse && n.inverse.body.length === 1 && n.inverse.body[0].type === "BlockStatement" && n.inverse.body[0].path.parts[0] === "if";
+ var indentElse = hasElseIf ? function (a) {
+ return a;
+ } : indent$6;
+
+ if (n.inverse) {
+ return concat$a([isElseIf ? concat$a(["{{else ", printPathParams(path, print), "}}"]) : printOpenBlock(path, print), indent$6(concat$a([hardline$8, path.call(print, "program")])), n.inverse && !hasElseIf ? concat$a([hardline$8, "{{else}}"]) : "", n.inverse ? indentElse(concat$a([hardline$8, path.call(print, "inverse")])) : "", isElseIf ? "" : concat$a([hardline$8, printCloseBlock(path, print)])]);
+ } else if (isElseIf) {
+ return concat$a([concat$a(["{{else ", printPathParams(path, print), "}}"]), indent$6(concat$a([hardline$8, path.call(print, "program")]))]);
+ }
+
+ var _hasNonWhitespaceChildren = n.program.body.some(function (n) {
+ return !isWhitespaceNode(n);
+ });
+
+ return concat$a([printOpenBlock(path, print), group$a(concat$a([indent$6(concat$a([softline$4, path.call(print, "program")])), _hasNonWhitespaceChildren ? hardline$8 : softline$4, printCloseBlock(path, print)]))]);
+ }
+
+ case "ElementModifierStatement":
+ case "MustacheStatement":
+ {
+ var _pp = path.getParentNode(1);
+
+ var isConcat = _pp && _pp.type === "ConcatStatement";
+ return group$a(concat$a([n.escaped === false ? "{{{" : "{{", printPathParams(path, print, {
+ group: false
+ }), isConcat ? "" : softline$4, n.escaped === false ? "}}}" : "}}"]));
+ }
+
+ case "SubExpression":
+ {
+ var params = getParams(path, print);
+ var printedParams = params.length > 0 ? indent$6(concat$a([line$4, group$a(join$7(line$4, params))])) : "";
+ return group$a(concat$a(["(", printPath(path, print), printedParams, softline$4, ")"]));
+ }
+
+ case "AttrNode":
+ {
+ var isText = n.value.type === "TextNode";
+
+ if (isText && n.value.loc.start.column === n.value.loc.end.column) {
+ return concat$a([n.name]);
+ }
+
+ var value = path.call(print, "value");
+ var quotedValue = isText ? printStringLiteral(value.parts.join(), options) : value;
+ return concat$a([n.name, "=", quotedValue]);
+ }
+
+ case "ConcatStatement":
+ {
+ return concat$a(['"', group$a(indent$6(join$7(softline$4, path.map(function (partPath) {
+ return print(partPath);
+ }, "parts").filter(function (a) {
+ return a !== "";
+ })))), '"']);
+ }
+
+ case "Hash":
+ {
+ return concat$a([join$7(line$4, path.map(print, "pairs"))]);
+ }
+
+ case "HashPair":
+ {
+ return concat$a([n.key, "=", path.call(print, "value")]);
+ }
+
+ case "TextNode":
+ {
+ var maxLineBreaksToPreserve = 2;
+ var isFirstElement = !getPreviousNode(path);
+ var isLastElement = !getNextNode(path);
+ var isWhitespaceOnly = !/\S/.test(n.chars);
+ var lineBreaksCount = countNewLines(n.chars);
+ var hasBlockParent = path.getParentNode(0).type === "Block";
+ var hasElementParent = path.getParentNode(0).type === "ElementNode";
+ var hasTemplateParent = path.getParentNode(0).type === "Template";
+ var leadingLineBreaksCount = countLeadingNewLines(n.chars);
+ var trailingLineBreaksCount = countTrailingNewLines(n.chars);
+
+ if ((isFirstElement || isLastElement) && isWhitespaceOnly && (hasBlockParent || hasElementParent || hasTemplateParent)) {
+ return "";
+ }
+
+ if (isWhitespaceOnly && lineBreaksCount) {
+ leadingLineBreaksCount = Math.min(lineBreaksCount, maxLineBreaksToPreserve);
+ trailingLineBreaksCount = 0;
+ } else {
+ if (isNextNodeOfType(path, "ElementNode") || isNextNodeOfType(path, "BlockStatement")) {
+ trailingLineBreaksCount = Math.max(trailingLineBreaksCount, 1);
+ }
+
+ if (isPreviousNodeOfSomeType(path, ["ElementNode"]) || isPreviousNodeOfSomeType(path, ["BlockStatement"])) {
+ leadingLineBreaksCount = Math.max(leadingLineBreaksCount, 1);
+ }
+ }
+
+ var leadingSpace = "";
+ var trailingSpace = ""; // preserve a space inside of an attribute node where whitespace present,
+ // when next to mustache statement.
+
+ var inAttrNode = path.stack.indexOf("attributes") >= 0;
+
+ if (inAttrNode) {
+ var parentNode = path.getParentNode(0);
+
+ var _isConcat = parentNode.type === "ConcatStatement";
+
+ if (_isConcat) {
+ var parts = parentNode.parts;
+ var partIndex = parts.indexOf(n);
+
+ if (partIndex > 0) {
+ var partType = parts[partIndex - 1].type;
+ var isMustache = partType === "MustacheStatement";
+
+ if (isMustache) {
+ leadingSpace = " ";
+ }
+ }
+
+ if (partIndex < parts.length - 1) {
+ var _partType = parts[partIndex + 1].type;
+
+ var _isMustache = _partType === "MustacheStatement";
+
+ if (_isMustache) {
+ trailingSpace = " ";
+ }
+ }
+ }
+ } else {
+ if (trailingLineBreaksCount === 0 && isNextNodeOfType(path, "MustacheStatement")) {
+ trailingSpace = " ";
+ }
+
+ if (leadingLineBreaksCount === 0 && isPreviousNodeOfSomeType(path, ["MustacheStatement"])) {
+ leadingSpace = " ";
+ }
+
+ if (isFirstElement) {
+ leadingLineBreaksCount = 0;
+ leadingSpace = "";
+ }
+
+ if (isLastElement) {
+ trailingLineBreaksCount = 0;
+ trailingSpace = "";
+ }
+ }
+
+ return concat$a([].concat(_toConsumableArray$1(generateHardlines(leadingLineBreaksCount, maxLineBreaksToPreserve)), [n.chars.replace(/^[\s ]+/g, leadingSpace).replace(/[\s ]+$/, trailingSpace)], _toConsumableArray$1(generateHardlines(trailingLineBreaksCount, maxLineBreaksToPreserve))).filter(Boolean));
+ }
+
+ case "MustacheCommentStatement":
+ {
+ var dashes = n.value.indexOf("}}") > -1 ? "--" : "";
+ return concat$a(["{{!", dashes, n.value, dashes, "}}"]);
+ }
+
+ case "PathExpression":
+ {
+ return n.original;
+ }
+
+ case "BooleanLiteral":
+ {
+ return String(n.value);
+ }
+
+ case "CommentStatement":
+ {
+ return concat$a(["<!--", n.value, "-->"]);
+ }
+
+ case "StringLiteral":
+ {
+ return printStringLiteral(n.value, options);
+ }
+
+ case "NumberLiteral":
+ {
+ return String(n.value);
+ }
+
+ case "UndefinedLiteral":
+ {
+ return "undefined";
+ }
+
+ case "NullLiteral":
+ {
+ return "null";
+ }
+
+ /* istanbul ignore next */
+
+ default:
+ throw new Error("unknown glimmer type: " + JSON.stringify(n.type));
+ }
+}
+/**
+ * Prints a string literal with the correct surrounding quotes based on
+ * `options.singleQuote` and the number of escaped quotes contained in
+ * the string literal. This function is the glimmer equivalent of `printString`
+ * in `common/util`, but has differences because of the way escaped characters
+ * are treated in hbs string literals.
+ * @param {string} stringLiteral - the string literal value
+ * @param {object} options - the prettier options object
+ */
+
+
+function printStringLiteral(stringLiteral, options) {
+ var double = {
+ quote: '"',
+ regex: /"/g
+ };
+ var single = {
+ quote: "'",
+ regex: /'/g
+ };
+ var preferred = options.singleQuote ? single : double;
+ var alternate = preferred === single ? double : single;
+ var shouldUseAlternateQuote = false; // If `stringLiteral` contains at least one of the quote preferred for
+ // enclosing the string, we might want to enclose with the alternate quote
+ // instead, to minimize the number of escaped quotes.
+
+ if (stringLiteral.includes(preferred.quote) || stringLiteral.includes(alternate.quote)) {
+ var numPreferredQuotes = (stringLiteral.match(preferred.regex) || []).length;
+ var numAlternateQuotes = (stringLiteral.match(alternate.regex) || []).length;
+ shouldUseAlternateQuote = numPreferredQuotes > numAlternateQuotes;
+ }
+
+ var enclosingQuote = shouldUseAlternateQuote ? alternate : preferred;
+ var escapedStringLiteral = stringLiteral.replace(enclosingQuote.regex, `\\${enclosingQuote.quote}`);
+ return `${enclosingQuote.quote}${escapedStringLiteral}${enclosingQuote.quote}`;
+}
+
+function printPath(path, print) {
+ return path.call(print, "path");
+}
+
+function getParams(path, print) {
+ var node = path.getValue();
+ var parts = [];
+
+ if (node.params.length > 0) {
+ parts = parts.concat(path.map(print, "params"));
+ }
+
+ if (node.hash && node.hash.pairs.length > 0) {
+ parts.push(path.call(print, "hash"));
+ }
+
+ return parts;
+}
+
+function printPathParams(path, print, options) {
+ var parts = [];
+ options = Object.assign({
+ group: true
+ }, options || {});
+ parts.push(printPath(path, print));
+ parts = parts.concat(getParams(path, print));
+
+ if (!options.group) {
+ return indent$6(join$7(line$4, parts));
+ }
+
+ return indent$6(group$a(join$7(line$4, parts)));
+}
+
+function printBlockParams(path) {
+ var block = path.getValue();
+
+ if (!block.program || !block.program.blockParams.length) {
+ return "";
+ }
+
+ return concat$a([" as |", block.program.blockParams.join(" "), "|"]);
+}
+
+function printOpenBlock(path, print) {
+ return group$a(concat$a(["{{#", printPathParams(path, print), printBlockParams(path), softline$4, "}}"]));
+}
+
+function printCloseBlock(path, print) {
+ return concat$a(["{{/", path.call(print, "path"), "}}"]);
+}
+
+function isWhitespaceNode(node) {
+ return node.type === "TextNode" && !/\S/.test(node.chars);
+}
+
+function getPreviousNode(path) {
+ var node = path.getValue();
+ var parentNode = path.getParentNode(0);
+ var children = parentNode.children || parentNode.body;
+
+ if (children) {
+ var nodeIndex = children.indexOf(node);
+
+ if (nodeIndex > 0) {
+ var previousNode = children[nodeIndex - 1];
+ return previousNode;
+ }
+ }
+}
+
+function getNextNode(path) {
+ var node = path.getValue();
+ var parentNode = path.getParentNode(0);
+ var children = parentNode.children || parentNode.body;
+
+ if (children) {
+ var nodeIndex = children.indexOf(node);
+
+ if (nodeIndex < children.length) {
+ var nextNode = children[nodeIndex + 1];
+ return nextNode;
+ }
+ }
+}
+
+function isPreviousNodeOfSomeType(path, types) {
+ var previousNode = getPreviousNode(path);
+
+ if (previousNode) {
+ return types.some(function (type) {
+ return previousNode.type === type;
+ });
+ }
+
+ return false;
+}
+
+function isNextNodeOfType(path, type) {
+ var nextNode = getNextNode(path);
+ return nextNode && nextNode.type === type;
+}
+
+function clean$3(ast, newObj) {
+ delete newObj.loc;
+ delete newObj.selfClosing; // (Glimmer/HTML) ignore TextNode whitespace
+
+ if (ast.type === "TextNode") {
+ if (ast.chars.replace(/\s+/, "") === "") {
+ return null;
+ }
+
+ newObj.chars = ast.chars.replace(/^\s+/, "").replace(/\s+$/, "");
+ }
+}
+
+function countNewLines(string) {
+ /* istanbul ignore next */
+ string = typeof string === "string" ? string : "";
+ return string.split("\n").length - 1;
+}
+
+function countLeadingNewLines(string) {
+ /* istanbul ignore next */
+ string = typeof string === "string" ? string : "";
+ var newLines = (string.match(/^([^\S\r\n]*[\r\n])+/g) || [])[0] || "";
+ return countNewLines(newLines);
+}
+
+function countTrailingNewLines(string) {
+ /* istanbul ignore next */
+ string = typeof string === "string" ? string : "";
+ var newLines = (string.match(/([\r\n][^\S\r\n]*)+$/g) || [])[0] || "";
+ return countNewLines(newLines);
+}
+
+function generateHardlines() {
+ var number = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+ var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+ return new Array(Math.min(number, max)).fill(hardline$8);
+}
+
+var printerGlimmer = {
+ print,
+ massageAstNode: clean$3
+};
+
+var name$d = "Handlebars";
+var type$b = "markup";
+var group$b = "HTML";
+var aliases$3 = [
+ "hbs",
+ "htmlbars"
+];
+var extensions$b = [
+ ".handlebars",
+ ".hbs"
+];
+var tmScope$b = "text.html.handlebars";
+var aceMode$b = "handlebars";
+var languageId$b = 155;
+var Handlebars = {
+ name: name$d,
+ type: type$b,
+ group: group$b,
+ aliases: aliases$3,
+ extensions: extensions$b,
+ tmScope: tmScope$b,
+ aceMode: aceMode$b,
+ languageId: languageId$b
+};
+
+var Handlebars$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$d,
+ type: type$b,
+ group: group$b,
+ aliases: aliases$3,
+ extensions: extensions$b,
+ tmScope: tmScope$b,
+ aceMode: aceMode$b,
+ languageId: languageId$b,
+ 'default': Handlebars
+});
+
+var require$$0$4 = getCjsExportFromNamespace(Handlebars$1);
+
+var languages$2 = [createLanguage(require$$0$4, function (data) {
+ return Object.assign(data, {
+ since: null,
+ // unreleased
+ parsers: ["glimmer"],
+ vscodeLanguageIds: ["handlebars"]
+ });
+})];
+var printers$2 = {
+ glimmer: printerGlimmer
+};
+var languageHandlebars = {
+ languages: languages$2,
+ printers: printers$2
+};
+
+function hasPragma$2(text) {
+ return /^\s*#[^\n\S]*@(format|prettier)\s*(\n|$)/.test(text);
+}
+
+function insertPragma$4(text) {
+ return "# @format\n\n" + text;
+}
+
+var pragma$2 = {
+ hasPragma: hasPragma$2,
+ insertPragma: insertPragma$4
+};
+
+var _require$$0$builders$5 = doc.builders,
+ concat$b = _require$$0$builders$5.concat,
+ join$8 = _require$$0$builders$5.join,
+ hardline$9 = _require$$0$builders$5.hardline,
+ line$5 = _require$$0$builders$5.line,
+ softline$5 = _require$$0$builders$5.softline,
+ group$c = _require$$0$builders$5.group,
+ indent$7 = _require$$0$builders$5.indent,
+ ifBreak$4 = _require$$0$builders$5.ifBreak;
+var hasIgnoreComment$4 = util.hasIgnoreComment;
+var isNextLineEmpty$4 = utilShared.isNextLineEmpty;
+var insertPragma$5 = pragma$2.insertPragma;
+
+function genericPrint$3(path, options, print) {
+ var n = path.getValue();
+
+ if (!n) {
+ return "";
+ }
+
+ if (typeof n === "string") {
+ return n;
+ }
+
+ switch (n.kind) {
+ case "Document":
+ {
+ var parts = [];
+ path.map(function (pathChild, index) {
+ parts.push(concat$b([pathChild.call(print)]));
+
+ if (index !== n.definitions.length - 1) {
+ parts.push(hardline$9);
+
+ if (isNextLineEmpty$4(options.originalText, pathChild.getValue(), options)) {
+ parts.push(hardline$9);
+ }
+ }
+ }, "definitions");
+ return concat$b([concat$b(parts), hardline$9]);
+ }
+
+ case "OperationDefinition":
+ {
+ var hasOperation = options.originalText[options.locStart(n)] !== "{";
+ var hasName = !!n.name;
+ return concat$b([hasOperation ? n.operation : "", hasOperation && hasName ? concat$b([" ", path.call(print, "name")]) : "", n.variableDefinitions && n.variableDefinitions.length ? group$c(concat$b(["(", indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", ", "), softline$5]), path.map(print, "variableDefinitions"))])), softline$5, ")"])) : "", printDirectives(path, print, n), n.selectionSet ? !hasOperation && !hasName ? "" : " " : "", path.call(print, "selectionSet")]);
+ }
+
+ case "FragmentDefinition":
+ {
+ return concat$b(["fragment ", path.call(print, "name"), n.variableDefinitions && n.variableDefinitions.length ? group$c(concat$b(["(", indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", ", "), softline$5]), path.map(print, "variableDefinitions"))])), softline$5, ")"])) : "", " on ", path.call(print, "typeCondition"), printDirectives(path, print, n), " ", path.call(print, "selectionSet")]);
+ }
+
+ case "SelectionSet":
+ {
+ return concat$b(["{", indent$7(concat$b([hardline$9, join$8(hardline$9, path.call(function (selectionsPath) {
+ return printSequence(selectionsPath, options, print);
+ }, "selections"))])), hardline$9, "}"]);
+ }
+
+ case "Field":
+ {
+ return group$c(concat$b([n.alias ? concat$b([path.call(print, "alias"), ": "]) : "", path.call(print, "name"), n.arguments.length > 0 ? group$c(concat$b(["(", indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", ", "), softline$5]), path.call(function (argsPath) {
+ return printSequence(argsPath, options, print);
+ }, "arguments"))])), softline$5, ")"])) : "", printDirectives(path, print, n), n.selectionSet ? " " : "", path.call(print, "selectionSet")]));
+ }
+
+ case "Name":
+ {
+ return n.value;
+ }
+
+ case "StringValue":
+ {
+ if (n.block) {
+ return concat$b(['"""', hardline$9, join$8(hardline$9, n.value.replace(/"""/g, "\\$&").split("\n")), hardline$9, '"""']);
+ }
+
+ return concat$b(['"', n.value.replace(/["\\]/g, "\\$&").replace(/\n/g, "\\n"), '"']);
+ }
+
+ case "IntValue":
+ case "FloatValue":
+ case "EnumValue":
+ {
+ return n.value;
+ }
+
+ case "BooleanValue":
+ {
+ return n.value ? "true" : "false";
+ }
+
+ case "NullValue":
+ {
+ return "null";
+ }
+
+ case "Variable":
+ {
+ return concat$b(["$", path.call(print, "name")]);
+ }
+
+ case "ListValue":
+ {
+ return group$c(concat$b(["[", indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", ", "), softline$5]), path.map(print, "values"))])), softline$5, "]"]));
+ }
+
+ case "ObjectValue":
+ {
+ return group$c(concat$b(["{", options.bracketSpacing && n.fields.length > 0 ? " " : "", indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", ", "), softline$5]), path.map(print, "fields"))])), softline$5, ifBreak$4("", options.bracketSpacing && n.fields.length > 0 ? " " : ""), "}"]));
+ }
+
+ case "ObjectField":
+ case "Argument":
+ {
+ return concat$b([path.call(print, "name"), ": ", path.call(print, "value")]);
+ }
+
+ case "Directive":
+ {
+ return concat$b(["@", path.call(print, "name"), n.arguments.length > 0 ? group$c(concat$b(["(", indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", ", "), softline$5]), path.call(function (argsPath) {
+ return printSequence(argsPath, options, print);
+ }, "arguments"))])), softline$5, ")"])) : ""]);
+ }
+
+ case "NamedType":
+ {
+ return path.call(print, "name");
+ }
+
+ case "VariableDefinition":
+ {
+ return concat$b([path.call(print, "variable"), ": ", path.call(print, "type"), n.defaultValue ? concat$b([" = ", path.call(print, "defaultValue")]) : "", printDirectives(path, print, n)]);
+ }
+
+ case "TypeExtensionDefinition":
+ {
+ return concat$b(["extend ", path.call(print, "definition")]);
+ }
+
+ case "ObjectTypeExtension":
+ case "ObjectTypeDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? hardline$9 : "", n.kind === "ObjectTypeExtension" ? "extend " : "", "type ", path.call(print, "name"), n.interfaces.length > 0 ? concat$b([" implements ", join$8(determineInterfaceSeparator(options.originalText.substr(options.locStart(n), options.locEnd(n))), path.map(print, "interfaces"))]) : "", printDirectives(path, print, n), n.fields.length > 0 ? concat$b([" {", indent$7(concat$b([hardline$9, join$8(hardline$9, path.call(function (fieldsPath) {
+ return printSequence(fieldsPath, options, print);
+ }, "fields"))])), hardline$9, "}"]) : ""]);
+ }
+
+ case "FieldDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? hardline$9 : "", path.call(print, "name"), n.arguments.length > 0 ? group$c(concat$b(["(", indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", ", "), softline$5]), path.call(function (argsPath) {
+ return printSequence(argsPath, options, print);
+ }, "arguments"))])), softline$5, ")"])) : "", ": ", path.call(print, "type"), printDirectives(path, print, n)]);
+ }
+
+ case "DirectiveDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? hardline$9 : "", "directive ", "@", path.call(print, "name"), n.arguments.length > 0 ? group$c(concat$b(["(", indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", ", "), softline$5]), path.call(function (argsPath) {
+ return printSequence(argsPath, options, print);
+ }, "arguments"))])), softline$5, ")"])) : "", concat$b([" on ", join$8(" | ", path.map(print, "locations"))])]);
+ }
+
+ case "EnumTypeExtension":
+ case "EnumTypeDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? hardline$9 : "", n.kind === "EnumTypeExtension" ? "extend " : "", "enum ", path.call(print, "name"), printDirectives(path, print, n), n.values.length > 0 ? concat$b([" {", indent$7(concat$b([hardline$9, join$8(hardline$9, path.call(function (valuesPath) {
+ return printSequence(valuesPath, options, print);
+ }, "values"))])), hardline$9, "}"]) : ""]);
+ }
+
+ case "EnumValueDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? hardline$9 : "", path.call(print, "name"), printDirectives(path, print, n)]);
+ }
+
+ case "InputValueDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? n.description.block ? hardline$9 : line$5 : "", path.call(print, "name"), ": ", path.call(print, "type"), n.defaultValue ? concat$b([" = ", path.call(print, "defaultValue")]) : "", printDirectives(path, print, n)]);
+ }
+
+ case "InputObjectTypeExtension":
+ case "InputObjectTypeDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? hardline$9 : "", n.kind === "InputObjectTypeExtension" ? "extend " : "", "input ", path.call(print, "name"), printDirectives(path, print, n), n.fields.length > 0 ? concat$b([" {", indent$7(concat$b([hardline$9, join$8(hardline$9, path.call(function (fieldsPath) {
+ return printSequence(fieldsPath, options, print);
+ }, "fields"))])), hardline$9, "}"]) : ""]);
+ }
+
+ case "SchemaDefinition":
+ {
+ return concat$b(["schema", printDirectives(path, print, n), " {", n.operationTypes.length > 0 ? indent$7(concat$b([hardline$9, join$8(hardline$9, path.call(function (opsPath) {
+ return printSequence(opsPath, options, print);
+ }, "operationTypes"))])) : "", hardline$9, "}"]);
+ }
+
+ case "OperationTypeDefinition":
+ {
+ return concat$b([path.call(print, "operation"), ": ", path.call(print, "type")]);
+ }
+
+ case "InterfaceTypeExtension":
+ case "InterfaceTypeDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? hardline$9 : "", n.kind === "InterfaceTypeExtension" ? "extend " : "", "interface ", path.call(print, "name"), printDirectives(path, print, n), n.fields.length > 0 ? concat$b([" {", indent$7(concat$b([hardline$9, join$8(hardline$9, path.call(function (fieldsPath) {
+ return printSequence(fieldsPath, options, print);
+ }, "fields"))])), hardline$9, "}"]) : ""]);
+ }
+
+ case "FragmentSpread":
+ {
+ return concat$b(["...", path.call(print, "name"), printDirectives(path, print, n)]);
+ }
+
+ case "InlineFragment":
+ {
+ return concat$b(["...", n.typeCondition ? concat$b([" on ", path.call(print, "typeCondition")]) : "", printDirectives(path, print, n), " ", path.call(print, "selectionSet")]);
+ }
+
+ case "UnionTypeExtension":
+ case "UnionTypeDefinition":
+ {
+ return group$c(concat$b([path.call(print, "description"), n.description ? hardline$9 : "", group$c(concat$b([n.kind === "UnionTypeExtension" ? "extend " : "", "union ", path.call(print, "name"), printDirectives(path, print, n), n.types.length > 0 ? concat$b([" =", ifBreak$4("", " "), indent$7(concat$b([ifBreak$4(concat$b([line$5, " "])), join$8(concat$b([line$5, "| "]), path.map(print, "types"))]))]) : ""]))]));
+ }
+
+ case "ScalarTypeExtension":
+ case "ScalarTypeDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? hardline$9 : "", n.kind === "ScalarTypeExtension" ? "extend " : "", "scalar ", path.call(print, "name"), printDirectives(path, print, n)]);
+ }
+
+ case "NonNullType":
+ {
+ return concat$b([path.call(print, "type"), "!"]);
+ }
+
+ case "ListType":
+ {
+ return concat$b(["[", path.call(print, "type"), "]"]);
+ }
+
+ default:
+ /* istanbul ignore next */
+ throw new Error("unknown graphql type: " + JSON.stringify(n.kind));
+ }
+}
+
+function printDirectives(path, print, n) {
+ if (n.directives.length === 0) {
+ return "";
+ }
+
+ return concat$b([" ", group$c(indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", " "), softline$5]), path.map(print, "directives"))])))]);
+}
+
+function printSequence(sequencePath, options, print) {
+ var count = sequencePath.getValue().length;
+ return sequencePath.map(function (path, i) {
+ var printed = print(path);
+
+ if (isNextLineEmpty$4(options.originalText, path.getValue(), options) && i < count - 1) {
+ return concat$b([printed, hardline$9]);
+ }
+
+ return printed;
+ });
+}
+
+function canAttachComment$1(node) {
+ return node.kind && node.kind !== "Comment";
+}
+
+function printComment$2(commentPath) {
+ var comment = commentPath.getValue();
+
+ if (comment.kind === "Comment") {
+ return "#" + comment.value.trimRight();
+ }
+
+ throw new Error("Not a comment: " + JSON.stringify(comment));
+}
+
+function determineInterfaceSeparator(originalSource) {
+ var start = originalSource.indexOf("implements");
+
+ if (start === -1) {
+ throw new Error("Must implement interfaces: " + originalSource);
+ }
+
+ var end = originalSource.indexOf("{");
+
+ if (end === -1) {
+ end = originalSource.length;
+ }
+
+ return originalSource.substr(start, end).includes("&") ? " & " : ", ";
+}
+
+function clean$4(node, newNode
+/*, parent*/
+) {
+ delete newNode.loc;
+ delete newNode.comments;
+}
+
+var printerGraphql = {
+ print: genericPrint$3,
+ massageAstNode: clean$4,
+ hasPrettierIgnore: hasIgnoreComment$4,
+ insertPragma: insertPragma$5,
+ printComment: printComment$2,
+ canAttachComment: canAttachComment$1
+};
+
+var options$4 = {
+ bracketSpacing: commonOptions.bracketSpacing
+};
+
+var name$e = "GraphQL";
+var type$c = "data";
+var extensions$c = [
+ ".graphql",
+ ".gql",
+ ".graphqls"
+];
+var tmScope$c = "source.graphql";
+var aceMode$c = "text";
+var languageId$c = 139;
+var GraphQL = {
+ name: name$e,
+ type: type$c,
+ extensions: extensions$c,
+ tmScope: tmScope$c,
+ aceMode: aceMode$c,
+ languageId: languageId$c
+};
+
+var GraphQL$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$e,
+ type: type$c,
+ extensions: extensions$c,
+ tmScope: tmScope$c,
+ aceMode: aceMode$c,
+ languageId: languageId$c,
+ 'default': GraphQL
+});
+
+var require$$0$5 = getCjsExportFromNamespace(GraphQL$1);
+
+var languages$3 = [createLanguage(require$$0$5, function (data) {
+ return Object.assign(data, {
+ since: "1.5.0",
+ parsers: ["graphql"],
+ vscodeLanguageIds: ["graphql"]
+ });
+})];
+var printers$3 = {
+ graphql: printerGraphql
+};
+var languageGraphql = {
+ languages: languages$3,
+ options: options$4,
+ printers: printers$3
+};
+
+var json = {
+ "cjkPattern": "[\\u02ea-\\u02eb\\u1100-\\u11ff\\u2e80-\\u2e99\\u2e9b-\\u2ef3\\u2f00-\\u2fd5\\u3000-\\u303f\\u3041-\\u3096\\u3099-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u3190-\\u3191\\u3196-\\u31ba\\u31c0-\\u31e3\\u31f0-\\u321e\\u322a-\\u3247\\u3260-\\u327e\\u328a-\\u32b0\\u32c0-\\u32cb\\u32d0-\\u3370\\u337b-\\u337f\\u33e0-\\u33fe\\u3400-\\u4db5\\u4e00-\\u9fef\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufe10-\\ufe1f\\ufe30-\\ufe6f\\uff00-\\uffef]|[\\ud840-\\ud868\\ud86a-\\ud86c\\ud86f-\\ud872\\ud874-\\ud879][\\udc00-\\udfff]|\\ud82c[\\udc00-\\udd1e\\udd50-\\udd52\\udd64-\\udd67]|\\ud83c[\\ude00\\ude50-\\ude51]|\\ud869[\\udc00-\\uded6\\udf00-\\udfff]|\\ud86d[\\udc00-\\udf34\\udf40-\\udfff]|\\ud86e[\\udc00-\\udc1d\\udc20-\\udfff]|\\ud873[\\udc00-\\udea1\\udeb0-\\udfff]|\\ud87a[\\udc00-\\udfe0]|\\ud87e[\\udc00-\\ude1d]",
+ "kPattern": "[\\u1100-\\u11ff\\u3001-\\u3003\\u3008-\\u3011\\u3013-\\u301f\\u302e-\\u3030\\u3037\\u30fb\\u3131-\\u318e\\u3200-\\u321e\\u3260-\\u327e\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\ufe45-\\ufe46\\uff61-\\uff65\\uffa0-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc]",
+ "punctuationPattern": "[\\u0021-\\u002f\\u003a-\\u0040\\u005b-\\u0060\\u007b-\\u007e\\u00a1\\u00a7\\u00ab\\u00b6-\\u00b7\\u00bb\\u00bf\\u037e\\u0387\\u055a-\\u055f\\u0589-\\u058a\\u05be\\u05c0\\u05c3\\u05c6\\u05f3-\\u05f4\\u0609-\\u060a\\u060c-\\u060d\\u061b\\u061e-\\u061f\\u066a-\\u066d\\u06d4\\u0700-\\u070d\\u07f7-\\u07f9\\u0830-\\u083e\\u085e\\u0964-\\u0965\\u0970\\u09fd\\u0a76\\u0af0\\u0c77\\u0c84\\u0df4\\u0e4f\\u0e5a-\\u0e5b\\u0f04-\\u0f12\\u0f14\\u0f3a-\\u0f3d\\u0f85\\u0fd0-\\u0fd4\\u0fd9-\\u0fda\\u104a-\\u104f\\u10fb\\u1360-\\u1368\\u1400\\u166e\\u169b-\\u169c\\u16eb-\\u16ed\\u1735-\\u1736\\u17d4-\\u17d6\\u17d8-\\u17da\\u1800-\\u180a\\u1944-\\u1945\\u1a1e-\\u1a1f\\u1aa0-\\u1aa6\\u1aa8-\\u1aad\\u1b5a-\\u1b60\\u1bfc-\\u1bff\\u1c3b-\\u1c3f\\u1c7e-\\u1c7f\\u1cc0-\\u1cc7\\u1cd3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205e\\u207d-\\u207e\\u208d-\\u208e\\u2308-\\u230b\\u2329-\\u232a\\u2768-\\u2775\\u27c5-\\u27c6\\u27e6-\\u27ef\\u2983-\\u2998\\u29d8-\\u29db\\u29fc-\\u29fd\\u2cf9-\\u2cfc\\u2cfe-\\u2cff\\u2d70\\u2e00-\\u2e2e\\u2e30-\\u2e4f\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301f\\u3030\\u303d\\u30a0\\u30fb\\ua4fe-\\ua4ff\\ua60d-\\ua60f\\ua673\\ua67e\\ua6f2-\\ua6f7\\ua874-\\ua877\\ua8ce-\\ua8cf\\ua8f8-\\ua8fa\\ua8fc\\ua92e-\\ua92f\\ua95f\\ua9c1-\\ua9cd\\ua9de-\\ua9df\\uaa5c-\\uaa5f\\uaade-\\uaadf\\uaaf0-\\uaaf1\\uabeb\\ufd3e-\\ufd3f\\ufe10-\\ufe19\\ufe30-\\ufe52\\ufe54-\\ufe61\\ufe63\\ufe68\\ufe6a-\\ufe6b\\uff01-\\uff03\\uff05-\\uff0a\\uff0c-\\uff0f\\uff1a-\\uff1b\\uff1f-\\uff20\\uff3b-\\uff3d\\uff3f\\uff5b\\uff5d\\uff5f-\\uff65]|\\ud800[\\udd00-\\udd02\\udf9f\\udfd0]|\\ud801[\\udd6f]|\\ud802[\\udc57\\udd1f\\udd3f\\ude50-\\ude58\\ude7f\\udef0-\\udef6\\udf39-\\udf3f\\udf99-\\udf9c]|\\ud803[\\udf55-\\udf59]|\\ud804[\\udc47-\\udc4d\\udcbb-\\udcbc\\udcbe-\\udcc1\\udd40-\\udd43\\udd74-\\udd75\\uddc5-\\uddc8\\uddcd\\udddb\\udddd-\\udddf\\ude38-\\ude3d\\udea9]|\\ud805[\\udc4b-\\udc4f\\udc5b\\udc5d\\udcc6\\uddc1-\\uddd7\\ude41-\\ude43\\ude60-\\ude6c\\udf3c-\\udf3e]|\\ud806[\\udc3b\\udde2\\ude3f-\\ude46\\ude9a-\\ude9c\\ude9e-\\udea2]|\\ud807[\\udc41-\\udc45\\udc70-\\udc71\\udef7-\\udef8\\udfff]|\\ud809[\\udc70-\\udc74]|\\ud81a[\\ude6e-\\ude6f\\udef5\\udf37-\\udf3b\\udf44]|\\ud81b[\\ude97-\\ude9a\\udfe2]|\\ud82f[\\udc9f]|\\ud836[\\ude87-\\ude8b]|\\ud83a[\\udd5e-\\udd5f]"
+};
+
+var cjkPattern = json.cjkPattern,
+ kPattern = json.kPattern,
+ punctuationPattern = json.punctuationPattern;
+var getLast$3 = util.getLast;
+var INLINE_NODE_TYPES = ["liquidNode", "inlineCode", "emphasis", "strong", "delete", "link", "linkReference", "image", "imageReference", "footnote", "footnoteReference", "sentence", "whitespace", "word", "break", "inlineMath"];
+var INLINE_NODE_WRAPPER_TYPES = INLINE_NODE_TYPES.concat(["tableCell", "paragraph", "heading"]);
+var kRegex = new RegExp(kPattern);
+var punctuationRegex = new RegExp(punctuationPattern);
+/**
+ * split text into whitespaces and words
+ * @param {string} text
+ * @return {Array<{ type: "whitespace", value: " " | "\n" | "" } | { type: "word", value: string }>}
+ */
+
+function splitText(text, options) {
+ var KIND_NON_CJK = "non-cjk";
+ var KIND_CJ_LETTER = "cj-letter";
+ var KIND_K_LETTER = "k-letter";
+ var KIND_CJK_PUNCTUATION = "cjk-punctuation";
+ var nodes = [];
+ (options.proseWrap === "preserve" ? text : text.replace(new RegExp(`(${cjkPattern})\n(${cjkPattern})`, "g"), "$1$2")).split(/([ \t\n]+)/).forEach(function (token, index, tokens) {
+ // whitespace
+ if (index % 2 === 1) {
+ nodes.push({
+ type: "whitespace",
+ value: /\n/.test(token) ? "\n" : " "
+ });
+ return;
+ } // word separated by whitespace
+
+
+ if ((index === 0 || index === tokens.length - 1) && token === "") {
+ return;
+ }
+
+ token.split(new RegExp(`(${cjkPattern})`)).forEach(function (innerToken, innerIndex, innerTokens) {
+ if ((innerIndex === 0 || innerIndex === innerTokens.length - 1) && innerToken === "") {
+ return;
+ } // non-CJK word
+
+
+ if (innerIndex % 2 === 0) {
+ if (innerToken !== "") {
+ appendNode({
+ type: "word",
+ value: innerToken,
+ kind: KIND_NON_CJK,
+ hasLeadingPunctuation: punctuationRegex.test(innerToken[0]),
+ hasTrailingPunctuation: punctuationRegex.test(getLast$3(innerToken))
+ });
+ }
+
+ return;
+ } // CJK character
+
+
+ appendNode(punctuationRegex.test(innerToken) ? {
+ type: "word",
+ value: innerToken,
+ kind: KIND_CJK_PUNCTUATION,
+ hasLeadingPunctuation: true,
+ hasTrailingPunctuation: true
+ } : {
+ type: "word",
+ value: innerToken,
+ kind: kRegex.test(innerToken) ? KIND_K_LETTER : KIND_CJ_LETTER,
+ hasLeadingPunctuation: false,
+ hasTrailingPunctuation: false
+ });
+ });
+ });
+ return nodes;
+
+ function appendNode(node) {
+ var lastNode = getLast$3(nodes);
+
+ if (lastNode && lastNode.type === "word") {
+ if (lastNode.kind === KIND_NON_CJK && node.kind === KIND_CJ_LETTER && !lastNode.hasTrailingPunctuation || lastNode.kind === KIND_CJ_LETTER && node.kind === KIND_NON_CJK && !node.hasLeadingPunctuation) {
+ nodes.push({
+ type: "whitespace",
+ value: " "
+ });
+ } else if (!isBetween(KIND_NON_CJK, KIND_CJK_PUNCTUATION) && // disallow leading/trailing full-width whitespace
+ ![lastNode.value, node.value].some(function (value) {
+ return /\u3000/.test(value);
+ })) {
+ nodes.push({
+ type: "whitespace",
+ value: ""
+ });
+ }
+ }
+
+ nodes.push(node);
+
+ function isBetween(kind1, kind2) {
+ return lastNode.kind === kind1 && node.kind === kind2 || lastNode.kind === kind2 && node.kind === kind1;
+ }
+ }
+}
+
+function getOrderedListItemInfo(orderListItem, originalText) {
+ var _originalText$slice$m = originalText.slice(orderListItem.position.start.offset, orderListItem.position.end.offset).match(/^\s*(\d+)(\.|\))(\s*)/),
+ _originalText$slice$m2 = _slicedToArray(_originalText$slice$m, 4),
+ numberText = _originalText$slice$m2[1],
+ marker = _originalText$slice$m2[2],
+ leadingSpaces = _originalText$slice$m2[3];
+
+ return {
+ numberText,
+ marker,
+ leadingSpaces
+ };
+} // workaround for https://github.com/remarkjs/remark/issues/351
+// leading and trailing newlines are stripped by remark
+
+
+function getFencedCodeBlockValue(node, originalText) {
+ var text = originalText.slice(node.position.start.offset, node.position.end.offset);
+ var leadingSpaceCount = text.match(/^\s*/)[0].length;
+ var replaceRegex = new RegExp(`^\\s{0,${leadingSpaceCount}}`);
+ var lineContents = text.split("\n");
+ var markerStyle = text[leadingSpaceCount]; // ` or ~
+
+ var marker = text.slice(leadingSpaceCount).match(new RegExp(`^[${markerStyle}]+`))[0]; // https://spec.commonmark.org/0.28/#example-104: Closing fences may be indented by 0-3 spaces
+ // https://spec.commonmark.org/0.28/#example-93: The closing code fence must be at least as long as the opening fence
+
+ var hasEndMarker = new RegExp(`^\\s{0,3}${marker}`).test(lineContents[lineContents.length - 1].slice(getIndent(lineContents.length - 1)));
+ return lineContents.slice(1, hasEndMarker ? -1 : undefined).map(function (x, i) {
+ return x.slice(getIndent(i + 1)).replace(replaceRegex, "");
+ }).join("\n");
+
+ function getIndent(lineIndex) {
+ return node.position.indent[lineIndex - 1] - 1;
+ }
+}
+
+function mapAst(ast, handler) {
+ return function preorder(node, index, parentStack) {
+ parentStack = parentStack || [];
+ var newNode = handler(node, index, parentStack);
+
+ if (Array.isArray(newNode)) {
+ return newNode;
+ }
+
+ newNode = Object.assign({}, newNode);
+
+ if (newNode.children) {
+ newNode.children = newNode.children.reduce(function (nodes, child, index) {
+ var newNodes = preorder(child, index, [newNode].concat(parentStack));
+
+ if (!Array.isArray(newNodes)) {
+ newNodes = [newNodes];
+ }
+
+ nodes.push.apply(nodes, newNodes);
+ return nodes;
+ }, []);
+ }
+
+ return newNode;
+ }(ast, null, null);
+}
+
+var utils$4 = {
+ mapAst,
+ splitText,
+ punctuationPattern,
+ getFencedCodeBlockValue,
+ getOrderedListItemInfo,
+ INLINE_NODE_TYPES,
+ INLINE_NODE_WRAPPER_TYPES
+};
+
+var _require$$0$builders$6 = doc.builders,
+ hardline$a = _require$$0$builders$6.hardline,
+ literalline$4 = _require$$0$builders$6.literalline,
+ concat$c = _require$$0$builders$6.concat,
+ markAsRoot$2 = _require$$0$builders$6.markAsRoot,
+ mapDoc$5 = doc.utils.mapDoc;
+var getFencedCodeBlockValue$1 = utils$4.getFencedCodeBlockValue;
+
+function embed$2(path, print, textToDoc, options) {
+ var node = path.getValue();
+
+ if (node.type === "code" && node.lang !== null) {
+ // only look for the first string so as to support [markdown-preview-enhanced](https://shd101wyy.github.io/markdown-preview-enhanced/#/code-chunk)
+ var langMatch = node.lang.match(/^[A-Za-z0-9_-]+/);
+ var lang = langMatch ? langMatch[0] : "";
+ var parser = getParserName(lang);
+
+ if (parser) {
+ var styleUnit = options.__inJsTemplate ? "~" : "`";
+ var style = styleUnit.repeat(Math.max(3, util.getMaxContinuousCount(node.value, styleUnit) + 1));
+ var doc = textToDoc(getFencedCodeBlockValue$1(node, options.originalText), {
+ parser
+ });
+ return markAsRoot$2(concat$c([style, node.lang, hardline$a, replaceNewlinesWithLiterallines(doc), style]));
+ }
+ }
+
+ if (node.type === "yaml") {
+ return markAsRoot$2(concat$c(["---", hardline$a, node.value && node.value.trim() ? replaceNewlinesWithLiterallines(textToDoc(node.value, {
+ parser: "yaml"
+ })) : "", "---"]));
+ } // MDX
+
+
+ switch (node.type) {
+ case "importExport":
+ return textToDoc(node.value, {
+ parser: "babel"
+ });
+
+ case "jsx":
+ return textToDoc(node.value, {
+ parser: "__js_expression"
+ });
+ }
+
+ return null;
+
+ function getParserName(lang) {
+ var supportInfo = support.getSupportInfo(null, {
+ plugins: options.plugins
+ });
+ var language = supportInfo.languages.find(function (language) {
+ return language.name.toLowerCase() === lang || language.aliases && language.aliases.indexOf(lang) !== -1 || language.extensions && language.extensions.find(function (ext) {
+ return ext.substring(1) === lang;
+ });
+ });
+
+ if (language) {
+ return language.parsers[0];
+ }
+
+ return null;
+ }
+
+ function replaceNewlinesWithLiterallines(doc) {
+ return mapDoc$5(doc, function (currentDoc) {
+ return typeof currentDoc === "string" && currentDoc.includes("\n") ? concat$c(currentDoc.split(/(\n)/g).map(function (v, i) {
+ return i % 2 === 0 ? v : literalline$4;
+ })) : currentDoc;
+ });
+ }
+}
+
+var embed_1$2 = embed$2;
+
+var pragmas = ["format", "prettier"];
+
+function startWithPragma(text) {
+ var pragma = `@(${pragmas.join("|")})`;
+ var regex = new RegExp([`<!--\\s*${pragma}\\s*-->`, `<!--.*\r?\n[\\s\\S]*(^|\n)[^\\S\n]*${pragma}[^\\S\n]*($|\n)[\\s\\S]*\n.*-->`].join("|"), "m");
+ var matched = text.match(regex);
+ return matched && matched.index === 0;
+}
+
+var pragma$3 = {
+ startWithPragma,
+ hasPragma: function hasPragma(text) {
+ return startWithPragma(frontMatter(text).content.trimLeft());
+ },
+ insertPragma: function insertPragma(text) {
+ var extracted = frontMatter(text);
+ var pragma = `<!-- @${pragmas[0]} -->`;
+ return extracted.frontMatter ? `${extracted.frontMatter.raw}\n\n${pragma}\n\n${extracted.content}` : `${pragma}\n\n${extracted.content}`;
+ }
+};
+
+var getOrderedListItemInfo$1 = utils$4.getOrderedListItemInfo,
+ mapAst$1 = utils$4.mapAst,
+ splitText$1 = utils$4.splitText; // 0x0 ~ 0x10ffff
+// eslint-disable-next-line no-control-regex
+
+var isSingleCharRegex = /^([\u0000-\uffff]|[\ud800-\udbff][\udc00-\udfff])$/;
+
+function preprocess$1(ast, options) {
+ ast = restoreUnescapedCharacter(ast, options);
+ ast = mergeContinuousTexts(ast);
+ ast = transformInlineCode(ast);
+ ast = transformIndentedCodeblockAndMarkItsParentList(ast, options);
+ ast = markAlignedList(ast, options);
+ ast = splitTextIntoSentences(ast, options);
+ ast = transformImportExport(ast);
+ ast = mergeContinuousImportExport(ast);
+ return ast;
+}
+
+function transformImportExport(ast) {
+ return mapAst$1(ast, function (node) {
+ if (node.type !== "import" && node.type !== "export") {
+ return node;
+ }
+
+ return Object.assign({}, node, {
+ type: "importExport"
+ });
+ });
+}
+
+function transformInlineCode(ast) {
+ return mapAst$1(ast, function (node) {
+ if (node.type !== "inlineCode") {
+ return node;
+ }
+
+ return Object.assign({}, node, {
+ value: node.value.replace(/\s+/g, " ")
+ });
+ });
+}
+
+function restoreUnescapedCharacter(ast, options) {
+ return mapAst$1(ast, function (node) {
+ return node.type !== "text" ? node : Object.assign({}, node, {
+ value: node.value !== "*" && node.value !== "_" && node.value !== "$" && // handle these cases in printer
+ isSingleCharRegex.test(node.value) && node.position.end.offset - node.position.start.offset !== node.value.length ? options.originalText.slice(node.position.start.offset, node.position.end.offset) : node.value
+ });
+ });
+}
+
+function mergeContinuousImportExport(ast) {
+ return mergeChildren(ast, function (prevNode, node) {
+ return prevNode.type === "importExport" && node.type === "importExport";
+ }, function (prevNode, node) {
+ return {
+ type: "importExport",
+ value: prevNode.value + "\n\n" + node.value,
+ position: {
+ start: prevNode.position.start,
+ end: node.position.end
+ }
+ };
+ });
+}
+
+function mergeChildren(ast, shouldMerge, mergeNode) {
+ return mapAst$1(ast, function (node) {
+ if (!node.children) {
+ return node;
+ }
+
+ var children = node.children.reduce(function (current, child) {
+ var lastChild = current[current.length - 1];
+
+ if (lastChild && shouldMerge(lastChild, child)) {
+ current.splice(-1, 1, mergeNode(lastChild, child));
+ } else {
+ current.push(child);
+ }
+
+ return current;
+ }, []);
+ return Object.assign({}, node, {
+ children
+ });
+ });
+}
+
+function mergeContinuousTexts(ast) {
+ return mergeChildren(ast, function (prevNode, node) {
+ return prevNode.type === "text" && node.type === "text";
+ }, function (prevNode, node) {
+ return {
+ type: "text",
+ value: prevNode.value + node.value,
+ position: {
+ start: prevNode.position.start,
+ end: node.position.end
+ }
+ };
+ });
+}
+
+function splitTextIntoSentences(ast, options) {
+ return mapAst$1(ast, function (node, index, _ref) {
+ var _ref2 = _slicedToArray(_ref, 1),
+ parentNode = _ref2[0];
+
+ if (node.type !== "text") {
+ return node;
+ }
+
+ var value = node.value;
+
+ if (parentNode.type === "paragraph") {
+ if (index === 0) {
+ value = value.trimLeft();
+ }
+
+ if (index === parentNode.children.length - 1) {
+ value = value.trimRight();
+ }
+ }
+
+ return {
+ type: "sentence",
+ position: node.position,
+ children: splitText$1(value, options)
+ };
+ });
+}
+
+function transformIndentedCodeblockAndMarkItsParentList(ast, options) {
+ return mapAst$1(ast, function (node, index, parentStack) {
+ if (node.type === "code") {
+ // the first char may point to `\n`, e.g. `\n\t\tbar`, just ignore it
+ var isIndented = /^\n?( {4,}|\t)/.test(options.originalText.slice(node.position.start.offset, node.position.end.offset));
+ node.isIndented = isIndented;
+
+ if (isIndented) {
+ for (var i = 0; i < parentStack.length; i++) {
+ var parent = parentStack[i]; // no need to check checked items
+
+ if (parent.hasIndentedCodeblock) {
+ break;
+ }
+
+ if (parent.type === "list") {
+ parent.hasIndentedCodeblock = true;
+ }
+ }
+ }
+ }
+
+ return node;
+ });
+}
+
+function markAlignedList(ast, options) {
+ return mapAst$1(ast, function (node, index, parentStack) {
+ if (node.type === "list" && node.children.length !== 0) {
+ // if one of its parents is not aligned, it's not possible to be aligned in sub-lists
+ for (var i = 0; i < parentStack.length; i++) {
+ var parent = parentStack[i];
+
+ if (parent.type === "list" && !parent.isAligned) {
+ node.isAligned = false;
+ return node;
+ }
+ }
+
+ node.isAligned = isAligned(node);
+ }
+
+ return node;
+ });
+
+ function getListItemStart(listItem) {
+ return listItem.children.length === 0 ? -1 : listItem.children[0].position.start.column - 1;
+ }
+
+ function isAligned(list) {
+ if (!list.ordered) {
+ /**
+ * - 123
+ * - 123
+ */
+ return true;
+ }
+
+ var _list$children = _slicedToArray(list.children, 2),
+ firstItem = _list$children[0],
+ secondItem = _list$children[1];
+
+ var firstInfo = getOrderedListItemInfo$1(firstItem, options.originalText);
+
+ if (firstInfo.leadingSpaces.length > 1) {
+ /**
+ * 1. 123
+ *
+ * 1. 123
+ * 1. 123
+ */
+ return true;
+ }
+
+ var firstStart = getListItemStart(firstItem);
+
+ if (firstStart === -1) {
+ /**
+ * 1.
+ *
+ * 1.
+ * 1.
+ */
+ return false;
+ }
+
+ if (list.children.length === 1) {
+ /**
+ * aligned:
+ *
+ * 11. 123
+ *
+ * not aligned:
+ *
+ * 1. 123
+ */
+ return firstStart % options.tabWidth === 0;
+ }
+
+ var secondStart = getListItemStart(secondItem);
+
+ if (firstStart !== secondStart) {
+ /**
+ * 11. 123
+ * 1. 123
+ *
+ * 1. 123
+ * 11. 123
+ */
+ return false;
+ }
+
+ if (firstStart % options.tabWidth === 0) {
+ /**
+ * 11. 123
+ * 12. 123
+ */
+ return true;
+ }
+ /**
+ * aligned:
+ *
+ * 11. 123
+ * 1. 123
+ *
+ * not aligned:
+ *
+ * 1. 123
+ * 2. 123
+ */
+
+
+ var secondInfo = getOrderedListItemInfo$1(secondItem, options.originalText);
+ return secondInfo.leadingSpaces.length > 1;
+ }
+}
+
+var preprocess_1$1 = preprocess$1;
+
+var _require$$0$builders$7 = doc.builders,
+ breakParent$3 = _require$$0$builders$7.breakParent,
+ concat$d = _require$$0$builders$7.concat,
+ join$9 = _require$$0$builders$7.join,
+ line$6 = _require$$0$builders$7.line,
+ literalline$5 = _require$$0$builders$7.literalline,
+ markAsRoot$3 = _require$$0$builders$7.markAsRoot,
+ hardline$b = _require$$0$builders$7.hardline,
+ softline$6 = _require$$0$builders$7.softline,
+ ifBreak$5 = _require$$0$builders$7.ifBreak,
+ fill$4 = _require$$0$builders$7.fill,
+ align$2 = _require$$0$builders$7.align,
+ indent$8 = _require$$0$builders$7.indent,
+ group$d = _require$$0$builders$7.group,
+ mapDoc$6 = doc.utils.mapDoc,
+ printDocToString$3 = doc.printer.printDocToString;
+var getFencedCodeBlockValue$2 = utils$4.getFencedCodeBlockValue,
+ getOrderedListItemInfo$2 = utils$4.getOrderedListItemInfo,
+ splitText$2 = utils$4.splitText,
+ punctuationPattern$1 = utils$4.punctuationPattern,
+ INLINE_NODE_TYPES$1 = utils$4.INLINE_NODE_TYPES,
+ INLINE_NODE_WRAPPER_TYPES$1 = utils$4.INLINE_NODE_WRAPPER_TYPES;
+var replaceEndOfLineWith$1 = util.replaceEndOfLineWith;
+var TRAILING_HARDLINE_NODES = ["importExport"];
+var SINGLE_LINE_NODE_TYPES = ["heading", "tableCell", "link"];
+var SIBLING_NODE_TYPES = ["listItem", "definition", "footnoteDefinition", "jsx"];
+
+function genericPrint$4(path, options, print) {
+ var node = path.getValue();
+
+ if (shouldRemainTheSameContent(path)) {
+ return concat$d(splitText$2(options.originalText.slice(node.position.start.offset, node.position.end.offset), options).map(function (node) {
+ return node.type === "word" ? node.value : node.value === "" ? "" : printLine(path, node.value, options);
+ }));
+ }
+
+ switch (node.type) {
+ case "root":
+ if (node.children.length === 0) {
+ return "";
+ }
+
+ return concat$d([normalizeDoc(printRoot(path, options, print)), TRAILING_HARDLINE_NODES.indexOf(getLastDescendantNode(node).type) === -1 ? hardline$b : ""]);
+
+ case "paragraph":
+ return printChildren$1(path, options, print, {
+ postprocessor: fill$4
+ });
+
+ case "sentence":
+ return printChildren$1(path, options, print);
+
+ case "word":
+ return node.value.replace(/[*$]/g, "\\$&") // escape all `*` and `$` (math)
+ .replace(new RegExp([`(^|${punctuationPattern$1})(_+)`, `(_+)(${punctuationPattern$1}|$)`].join("|"), "g"), function (_, text1, underscore1, underscore2, text2) {
+ return (underscore1 ? `${text1}${underscore1}` : `${underscore2}${text2}`).replace(/_/g, "\\_");
+ });
+ // escape all `_` except concating with non-punctuation, e.g. `1_2_3` is not considered emphasis
+
+ case "whitespace":
+ {
+ var parentNode = path.getParentNode();
+ var index = parentNode.children.indexOf(node);
+ var nextNode = parentNode.children[index + 1];
+ var proseWrap = // leading char that may cause different syntax
+ nextNode && /^>|^([-+*]|#{1,6}|[0-9]+[.)])$/.test(nextNode.value) ? "never" : options.proseWrap;
+ return printLine(path, node.value, {
+ proseWrap
+ });
+ }
+
+ case "emphasis":
+ {
+ var _parentNode = path.getParentNode();
+
+ var _index = _parentNode.children.indexOf(node);
+
+ var prevNode = _parentNode.children[_index - 1];
+ var _nextNode = _parentNode.children[_index + 1];
+ var hasPrevOrNextWord = // `1*2*3` is considered emphasis but `1_2_3` is not
+ prevNode && prevNode.type === "sentence" && prevNode.children.length > 0 && util.getLast(prevNode.children).type === "word" && !util.getLast(prevNode.children).hasTrailingPunctuation || _nextNode && _nextNode.type === "sentence" && _nextNode.children.length > 0 && _nextNode.children[0].type === "word" && !_nextNode.children[0].hasLeadingPunctuation;
+ var style = hasPrevOrNextWord || getAncestorNode$2(path, "emphasis") ? "*" : "_";
+ return concat$d([style, printChildren$1(path, options, print), style]);
+ }
+
+ case "strong":
+ return concat$d(["**", printChildren$1(path, options, print), "**"]);
+
+ case "delete":
+ return concat$d(["~~", printChildren$1(path, options, print), "~~"]);
+
+ case "inlineCode":
+ {
+ var backtickCount = util.getMinNotPresentContinuousCount(node.value, "`");
+
+ var _style = "`".repeat(backtickCount || 1);
+
+ var gap = backtickCount ? " " : "";
+ return concat$d([_style, gap, node.value, gap, _style]);
+ }
+
+ case "link":
+ switch (options.originalText[node.position.start.offset]) {
+ case "<":
+ {
+ var mailto = "mailto:";
+ var url = // <hello@example.com> is parsed as { url: "mailto:hello@example.com" }
+ node.url.startsWith(mailto) && options.originalText.slice(node.position.start.offset + 1, node.position.start.offset + 1 + mailto.length) !== mailto ? node.url.slice(mailto.length) : node.url;
+ return concat$d(["<", url, ">"]);
+ }
+
+ case "[":
+ return concat$d(["[", printChildren$1(path, options, print), "](", printUrl(node.url, ")"), printTitle(node.title, options), ")"]);
+
+ default:
+ return options.originalText.slice(node.position.start.offset, node.position.end.offset);
+ }
+
+ case "image":
+ return concat$d(["![", node.alt || "", "](", printUrl(node.url, ")"), printTitle(node.title, options), ")"]);
+
+ case "blockquote":
+ return concat$d(["> ", align$2("> ", printChildren$1(path, options, print))]);
+
+ case "heading":
+ return concat$d(["#".repeat(node.depth) + " ", printChildren$1(path, options, print)]);
+
+ case "code":
+ {
+ if (node.isIndented) {
+ // indented code block
+ var alignment = " ".repeat(4);
+ return align$2(alignment, concat$d([alignment, concat$d(replaceEndOfLineWith$1(node.value, hardline$b))]));
+ } // fenced code block
+
+
+ var styleUnit = options.__inJsTemplate ? "~" : "`";
+
+ var _style2 = styleUnit.repeat(Math.max(3, util.getMaxContinuousCount(node.value, styleUnit) + 1));
+
+ return concat$d([_style2, node.lang || "", hardline$b, concat$d(replaceEndOfLineWith$1(getFencedCodeBlockValue$2(node, options.originalText), hardline$b)), hardline$b, _style2]);
+ }
+
+ case "yaml":
+ case "toml":
+ return options.originalText.slice(node.position.start.offset, node.position.end.offset);
+
+ case "html":
+ {
+ var _parentNode2 = path.getParentNode();
+
+ var value = _parentNode2.type === "root" && util.getLast(_parentNode2.children) === node ? node.value.trimRight() : node.value;
+ var isHtmlComment = /^<!--[\s\S]*-->$/.test(value);
+ return concat$d(replaceEndOfLineWith$1(value, isHtmlComment ? hardline$b : markAsRoot$3(literalline$5)));
+ }
+
+ case "list":
+ {
+ var nthSiblingIndex = getNthListSiblingIndex(node, path.getParentNode());
+ var isGitDiffFriendlyOrderedList = node.ordered && node.children.length > 1 && +getOrderedListItemInfo$2(node.children[1], options.originalText).numberText === 1;
+ return printChildren$1(path, options, print, {
+ processor: function processor(childPath, index) {
+ var prefix = getPrefix();
+ return concat$d([prefix, align$2(" ".repeat(prefix.length), printListItem(childPath, options, print, prefix))]);
+
+ function getPrefix() {
+ var rawPrefix = node.ordered ? (index === 0 ? node.start : isGitDiffFriendlyOrderedList ? 1 : node.start + index) + (nthSiblingIndex % 2 === 0 ? ". " : ") ") : nthSiblingIndex % 2 === 0 ? "- " : "* ";
+ return node.isAligned ||
+ /* workaround for https://github.com/remarkjs/remark/issues/315 */
+ node.hasIndentedCodeblock ? alignListPrefix(rawPrefix, options) : rawPrefix;
+ }
+ }
+ });
+ }
+
+ case "thematicBreak":
+ {
+ var counter = getAncestorCounter$1(path, "list");
+
+ if (counter === -1) {
+ return "---";
+ }
+
+ var _nthSiblingIndex = getNthListSiblingIndex(path.getParentNode(counter), path.getParentNode(counter + 1));
+
+ return _nthSiblingIndex % 2 === 0 ? "***" : "---";
+ }
+
+ case "linkReference":
+ return concat$d(["[", printChildren$1(path, options, print), "]", node.referenceType === "full" ? concat$d(["[", node.identifier, "]"]) : node.referenceType === "collapsed" ? "[]" : ""]);
+
+ case "imageReference":
+ switch (node.referenceType) {
+ case "full":
+ return concat$d(["![", node.alt || "", "][", node.identifier, "]"]);
+
+ default:
+ return concat$d(["![", node.alt, "]", node.referenceType === "collapsed" ? "[]" : ""]);
+ }
+
+ case "definition":
+ {
+ var lineOrSpace = options.proseWrap === "always" ? line$6 : " ";
+ return group$d(concat$d([concat$d(["[", node.identifier, "]:"]), indent$8(concat$d([lineOrSpace, printUrl(node.url), node.title === null ? "" : concat$d([lineOrSpace, printTitle(node.title, options, false)])]))]));
+ }
+
+ case "footnote":
+ return concat$d(["[^", printChildren$1(path, options, print), "]"]);
+
+ case "footnoteReference":
+ return concat$d(["[^", node.identifier, "]"]);
+
+ case "footnoteDefinition":
+ {
+ var _nextNode2 = path.getParentNode().children[path.getName() + 1];
+ var shouldInlineFootnote = node.children.length === 1 && node.children[0].type === "paragraph" && (options.proseWrap === "never" || options.proseWrap === "preserve" && node.children[0].position.start.line === node.children[0].position.end.line);
+ return concat$d(["[^", node.identifier, "]: ", shouldInlineFootnote ? printChildren$1(path, options, print) : group$d(concat$d([align$2(" ".repeat(options.tabWidth), printChildren$1(path, options, print, {
+ processor: function processor(childPath, index) {
+ return index === 0 ? group$d(concat$d([softline$6, softline$6, childPath.call(print)])) : childPath.call(print);
+ }
+ })), _nextNode2 && _nextNode2.type === "footnoteDefinition" ? softline$6 : ""]))]);
+ }
+
+ case "table":
+ return printTable(path, options, print);
+
+ case "tableCell":
+ return printChildren$1(path, options, print);
+
+ case "break":
+ return /\s/.test(options.originalText[node.position.start.offset]) ? concat$d([" ", markAsRoot$3(literalline$5)]) : concat$d(["\\", hardline$b]);
+
+ case "liquidNode":
+ return concat$d(replaceEndOfLineWith$1(node.value, hardline$b));
+ // MDX
+
+ case "importExport":
+ case "jsx":
+ return node.value;
+ // fallback to the original text if multiparser failed
+
+ case "math":
+ return concat$d(["$$", hardline$b, node.value ? concat$d([concat$d(replaceEndOfLineWith$1(node.value, hardline$b)), hardline$b]) : "", "$$"]);
+
+ case "inlineMath":
+ {
+ // remark-math trims content but we don't want to remove whitespaces
+ // since it's very possible that it's recognized as math accidentally
+ return options.originalText.slice(options.locStart(node), options.locEnd(node));
+ }
+
+ case "tableRow": // handled in "table"
+
+ case "listItem": // handled in "list"
+
+ default:
+ throw new Error(`Unknown markdown type ${JSON.stringify(node.type)}`);
+ }
+}
+
+function printListItem(path, options, print, listPrefix) {
+ var node = path.getValue();
+ var prefix = node.checked === null ? "" : node.checked ? "[x] " : "[ ] ";
+ return concat$d([prefix, printChildren$1(path, options, print, {
+ processor: function processor(childPath, index) {
+ if (index === 0 && childPath.getValue().type !== "list") {
+ return align$2(" ".repeat(prefix.length), childPath.call(print));
+ }
+
+ var alignment = " ".repeat(clamp(options.tabWidth - listPrefix.length, 0, 3) // 4+ will cause indented code block
+ );
+ return concat$d([alignment, align$2(alignment, childPath.call(print))]);
+ }
+ })]);
+}
+
+function alignListPrefix(prefix, options) {
+ var additionalSpaces = getAdditionalSpaces();
+ return prefix + " ".repeat(additionalSpaces >= 4 ? 0 : additionalSpaces // 4+ will cause indented code block
+ );
+
+ function getAdditionalSpaces() {
+ var restSpaces = prefix.length % options.tabWidth;
+ return restSpaces === 0 ? 0 : options.tabWidth - restSpaces;
+ }
+}
+
+function getNthListSiblingIndex(node, parentNode) {
+ return getNthSiblingIndex(node, parentNode, function (siblingNode) {
+ return siblingNode.ordered === node.ordered;
+ });
+}
+
+function getNthSiblingIndex(node, parentNode, condition) {
+ condition = condition || function () {
+ return true;
+ };
+
+ var index = -1;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = parentNode.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var childNode = _step.value;
+
+ if (childNode.type === node.type && condition(childNode)) {
+ index++;
+ } else {
+ index = -1;
+ }
+
+ if (childNode === node) {
+ return index;
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+}
+
+function getAncestorCounter$1(path, typeOrTypes) {
+ var types = [].concat(typeOrTypes);
+ var counter = -1;
+ var ancestorNode;
+
+ while (ancestorNode = path.getParentNode(++counter)) {
+ if (types.indexOf(ancestorNode.type) !== -1) {
+ return counter;
+ }
+ }
+
+ return -1;
+}
+
+function getAncestorNode$2(path, typeOrTypes) {
+ var counter = getAncestorCounter$1(path, typeOrTypes);
+ return counter === -1 ? null : path.getParentNode(counter);
+}
+
+function printLine(path, value, options) {
+ if (options.proseWrap === "preserve" && value === "\n") {
+ return hardline$b;
+ }
+
+ var isBreakable = options.proseWrap === "always" && !getAncestorNode$2(path, SINGLE_LINE_NODE_TYPES);
+ return value !== "" ? isBreakable ? line$6 : " " : isBreakable ? softline$6 : "";
+}
+
+function printTable(path, options, print) {
+ var hardlineWithoutBreakParent = hardline$b.parts[0];
+ var node = path.getValue();
+ var contents = []; // { [rowIndex: number]: { [columnIndex: number]: string } }
+
+ path.map(function (rowPath) {
+ var rowContents = [];
+ rowPath.map(function (cellPath) {
+ rowContents.push(printDocToString$3(cellPath.call(print), options).formatted);
+ }, "children");
+ contents.push(rowContents);
+ }, "children"); // Get the width of each column
+
+ var columnMaxWidths = contents.reduce(function (currentWidths, rowContents) {
+ return currentWidths.map(function (width, columnIndex) {
+ return Math.max(width, util.getStringWidth(rowContents[columnIndex]));
+ });
+ }, contents[0].map(function () {
+ return 3;
+ }) // minimum width = 3 (---, :--, :-:, --:)
+ );
+ var alignedTable = join$9(hardlineWithoutBreakParent, [printRow(contents[0]), printSeparator(), join$9(hardlineWithoutBreakParent, contents.slice(1).map(function (rowContents) {
+ return printRow(rowContents);
+ }))]);
+
+ if (options.proseWrap !== "never") {
+ return concat$d([breakParent$3, alignedTable]);
+ } // Only if the --prose-wrap never is set and it exceeds the print width.
+
+
+ var compactTable = join$9(hardlineWithoutBreakParent, [printRow(contents[0],
+ /* isCompact */
+ true), printSeparator(
+ /* isCompact */
+ true), join$9(hardlineWithoutBreakParent, contents.slice(1).map(function (rowContents) {
+ return printRow(rowContents,
+ /* isCompact */
+ true);
+ }))]);
+ return concat$d([breakParent$3, group$d(ifBreak$5(compactTable, alignedTable))]);
+
+ function printSeparator(isCompact) {
+ return concat$d(["| ", join$9(" | ", columnMaxWidths.map(function (width, index) {
+ var spaces = isCompact ? 3 : width;
+
+ switch (node.align[index]) {
+ case "left":
+ return ":" + "-".repeat(spaces - 1);
+
+ case "right":
+ return "-".repeat(spaces - 1) + ":";
+
+ case "center":
+ return ":" + "-".repeat(spaces - 2) + ":";
+
+ default:
+ return "-".repeat(spaces);
+ }
+ })), " |"]);
+ }
+
+ function printRow(rowContents, isCompact) {
+ return concat$d(["| ", join$9(" | ", isCompact ? rowContents : rowContents.map(function (rowContent, columnIndex) {
+ switch (node.align[columnIndex]) {
+ case "right":
+ return alignRight(rowContent, columnMaxWidths[columnIndex]);
+
+ case "center":
+ return alignCenter(rowContent, columnMaxWidths[columnIndex]);
+
+ default:
+ return alignLeft(rowContent, columnMaxWidths[columnIndex]);
+ }
+ })), " |"]);
+ }
+
+ function alignLeft(text, width) {
+ var spaces = width - util.getStringWidth(text);
+ return concat$d([text, " ".repeat(spaces)]);
+ }
+
+ function alignRight(text, width) {
+ var spaces = width - util.getStringWidth(text);
+ return concat$d([" ".repeat(spaces), text]);
+ }
+
+ function alignCenter(text, width) {
+ var spaces = width - util.getStringWidth(text);
+ var left = Math.floor(spaces / 2);
+ var right = spaces - left;
+ return concat$d([" ".repeat(left), text, " ".repeat(right)]);
+ }
+}
+
+function printRoot(path, options, print) {
+ /** @typedef {{ index: number, offset: number }} IgnorePosition */
+
+ /** @type {Array<{start: IgnorePosition, end: IgnorePosition}>} */
+ var ignoreRanges = [];
+ /** @type {IgnorePosition | null} */
+
+ var ignoreStart = null;
+ var children = path.getValue().children;
+ children.forEach(function (childNode, index) {
+ switch (isPrettierIgnore(childNode)) {
+ case "start":
+ if (ignoreStart === null) {
+ ignoreStart = {
+ index,
+ offset: childNode.position.end.offset
+ };
+ }
+
+ break;
+
+ case "end":
+ if (ignoreStart !== null) {
+ ignoreRanges.push({
+ start: ignoreStart,
+ end: {
+ index,
+ offset: childNode.position.start.offset
+ }
+ });
+ ignoreStart = null;
+ }
+
+ break;
+ }
+ });
+ return printChildren$1(path, options, print, {
+ processor: function processor(childPath, index) {
+ if (ignoreRanges.length !== 0) {
+ var ignoreRange = ignoreRanges[0];
+
+ if (index === ignoreRange.start.index) {
+ return concat$d([children[ignoreRange.start.index].value, options.originalText.slice(ignoreRange.start.offset, ignoreRange.end.offset), children[ignoreRange.end.index].value]);
+ }
+
+ if (ignoreRange.start.index < index && index < ignoreRange.end.index) {
+ return false;
+ }
+
+ if (index === ignoreRange.end.index) {
+ ignoreRanges.shift();
+ return false;
+ }
+ }
+
+ return childPath.call(print);
+ }
+ });
+}
+
+function printChildren$1(path, options, print, events) {
+ events = events || {};
+ var postprocessor = events.postprocessor || concat$d;
+
+ var processor = events.processor || function (childPath) {
+ return childPath.call(print);
+ };
+
+ var node = path.getValue();
+ var parts = [];
+ var lastChildNode;
+ path.map(function (childPath, index) {
+ var childNode = childPath.getValue();
+ var result = processor(childPath, index);
+
+ if (result !== false) {
+ var data = {
+ parts,
+ prevNode: lastChildNode,
+ parentNode: node,
+ options
+ };
+
+ if (!shouldNotPrePrintHardline(childNode, data)) {
+ parts.push(hardline$b);
+
+ if (lastChildNode && TRAILING_HARDLINE_NODES.indexOf(lastChildNode.type) !== -1) {
+ if (shouldPrePrintTripleHardline(childNode, data)) {
+ parts.push(hardline$b);
+ }
+ } else {
+ if (shouldPrePrintDoubleHardline(childNode, data) || shouldPrePrintTripleHardline(childNode, data)) {
+ parts.push(hardline$b);
+ }
+
+ if (shouldPrePrintTripleHardline(childNode, data)) {
+ parts.push(hardline$b);
+ }
+ }
+ }
+
+ parts.push(result);
+ lastChildNode = childNode;
+ }
+ }, "children");
+ return postprocessor(parts);
+}
+
+function getLastDescendantNode(node) {
+ var current = node;
+
+ while (current.children && current.children.length !== 0) {
+ current = current.children[current.children.length - 1];
+ }
+
+ return current;
+}
+/** @return {false | 'next' | 'start' | 'end'} */
+
+
+function isPrettierIgnore(node) {
+ if (node.type !== "html") {
+ return false;
+ }
+
+ var match = node.value.match(/^<!--\s*prettier-ignore(?:-(start|end))?\s*-->$/);
+ return match === null ? false : match[1] ? match[1] : "next";
+}
+
+function isInlineNode(node) {
+ return node && INLINE_NODE_TYPES$1.indexOf(node.type) !== -1;
+}
+
+function isEndsWithHardLine(node) {
+ return node && /\n+$/.test(node.value);
+}
+
+function last(nodes) {
+ return nodes && nodes[nodes.length - 1];
+}
+
+function shouldNotPrePrintHardline(node, _ref) {
+ var parentNode = _ref.parentNode,
+ parts = _ref.parts,
+ prevNode = _ref.prevNode;
+ var isFirstNode = parts.length === 0;
+ var isInlineHTML = node.type === "html" && INLINE_NODE_WRAPPER_TYPES$1.indexOf(parentNode.type) !== -1;
+ var isAfterHardlineNode = prevNode && (isEndsWithHardLine(prevNode) || isEndsWithHardLine(last(prevNode.children)));
+ return isFirstNode || isInlineNode(node) || isInlineHTML || isAfterHardlineNode;
+}
+
+function shouldPrePrintDoubleHardline(node, _ref2) {
+ var parentNode = _ref2.parentNode,
+ prevNode = _ref2.prevNode;
+ var prevNodeType = prevNode && prevNode.type;
+ var nodeType = node.type;
+ var isSequence = prevNodeType === nodeType;
+ var isSiblingNode = isSequence && SIBLING_NODE_TYPES.indexOf(nodeType) !== -1;
+ var isInTightListItem = parentNode.type === "listItem" && !parentNode.loose;
+ var isPrevNodeLooseListItem = prevNodeType === "listItem" && prevNode.loose;
+ var isPrevNodePrettierIgnore = isPrettierIgnore(prevNode) === "next";
+ var isBlockHtmlWithoutBlankLineBetweenPrevHtml = nodeType === "html" && prevNodeType === "html" && prevNode.position.end.line + 1 === node.position.start.line;
+ var isJsxInlineSibling = prevNodeType === "jsx" && isInlineNode(node) || nodeType === "jsx" && isInlineNode(prevNode);
+ return isPrevNodeLooseListItem || !(isSiblingNode || isInTightListItem || isPrevNodePrettierIgnore || isBlockHtmlWithoutBlankLineBetweenPrevHtml || isJsxInlineSibling);
+}
+
+function shouldPrePrintTripleHardline(node, data) {
+ var isPrevNodeList = data.prevNode && data.prevNode.type === "list";
+ var isIndentedCode = node.type === "code" && node.isIndented;
+ return isPrevNodeList && isIndentedCode;
+}
+
+function shouldRemainTheSameContent(path) {
+ var ancestorNode = getAncestorNode$2(path, ["linkReference", "imageReference"]);
+ return ancestorNode && (ancestorNode.type !== "linkReference" || ancestorNode.referenceType !== "full");
+}
+
+function normalizeDoc(doc) {
+ return mapDoc$6(doc, function (currentDoc) {
+ if (!currentDoc.parts) {
+ return currentDoc;
+ }
+
+ if (currentDoc.type === "concat" && currentDoc.parts.length === 1) {
+ return currentDoc.parts[0];
+ }
+
+ var parts = [];
+ currentDoc.parts.forEach(function (part) {
+ if (part.type === "concat") {
+ parts.push.apply(parts, part.parts);
+ } else if (part !== "") {
+ parts.push(part);
+ }
+ });
+ return Object.assign({}, currentDoc, {
+ parts: normalizeParts(parts)
+ });
+ });
+}
+
+function printUrl(url, dangerousCharOrChars) {
+ var dangerousChars = [" "].concat(dangerousCharOrChars || []);
+ return new RegExp(dangerousChars.map(function (x) {
+ return `\\${x}`;
+ }).join("|")).test(url) ? `<${url}>` : url;
+}
+
+function printTitle(title, options, printSpace) {
+ if (printSpace == null) {
+ printSpace = true;
+ }
+
+ if (!title) {
+ return "";
+ }
+
+ if (printSpace) {
+ return " " + printTitle(title, options, false);
+ }
+
+ if (title.includes('"') && title.includes("'") && !title.includes(")")) {
+ return `(${title})`; // avoid escaped quotes
+ } // faster than using RegExps: https://jsperf.com/performance-of-match-vs-split
+
+
+ var singleCount = title.split("'").length - 1;
+ var doubleCount = title.split('"').length - 1;
+ var quote = singleCount > doubleCount ? '"' : doubleCount > singleCount ? "'" : options.singleQuote ? "'" : '"';
+ title = title.replace(new RegExp(`(${quote})`, "g"), "\\$1");
+ return `${quote}${title}${quote}`;
+}
+
+function normalizeParts(parts) {
+ return parts.reduce(function (current, part) {
+ var lastPart = util.getLast(current);
+
+ if (typeof lastPart === "string" && typeof part === "string") {
+ current.splice(-1, 1, lastPart + part);
+ } else {
+ current.push(part);
+ }
+
+ return current;
+ }, []);
+}
+
+function clamp(value, min, max) {
+ return value < min ? min : value > max ? max : value;
+}
+
+function clean$5(ast, newObj, parent) {
+ delete newObj.position;
+ delete newObj.raw; // front-matter
+ // for codeblock
+
+ if (ast.type === "code" || ast.type === "yaml" || ast.type === "import" || ast.type === "export" || ast.type === "jsx") {
+ delete newObj.value;
+ }
+
+ if (ast.type === "list") {
+ delete newObj.isAligned;
+ } // texts can be splitted or merged
+
+
+ if (ast.type === "text") {
+ return null;
+ }
+
+ if (ast.type === "inlineCode") {
+ newObj.value = ast.value.replace(/[ \t\n]+/g, " ");
+ } // for insert pragma
+
+
+ if (parent && parent.type === "root" && parent.children.length > 0 && (parent.children[0] === ast || (parent.children[0].type === "yaml" || parent.children[0].type === "toml") && parent.children[1] === ast) && ast.type === "html" && pragma$3.startWithPragma(ast.value)) {
+ return null;
+ }
+}
+
+function hasPrettierIgnore$2(path) {
+ var index = +path.getName();
+
+ if (index === 0) {
+ return false;
+ }
+
+ var prevNode = path.getParentNode().children[index - 1];
+ return isPrettierIgnore(prevNode) === "next";
+}
+
+var printerMarkdown = {
+ preprocess: preprocess_1$1,
+ print: genericPrint$4,
+ embed: embed_1$2,
+ massageAstNode: clean$5,
+ hasPrettierIgnore: hasPrettierIgnore$2,
+ insertPragma: pragma$3.insertPragma
+};
+
+var options$5 = {
+ proseWrap: commonOptions.proseWrap,
+ singleQuote: commonOptions.singleQuote
+};
+
+var name$f = "Markdown";
+var type$d = "prose";
+var aliases$4 = [
+ "pandoc"
+];
+var aceMode$d = "markdown";
+var codemirrorMode$a = "gfm";
+var codemirrorMimeType$a = "text/x-gfm";
+var wrap = true;
+var extensions$d = [
+ ".md",
+ ".markdown",
+ ".mdown",
+ ".mdwn",
+ ".mdx",
+ ".mkd",
+ ".mkdn",
+ ".mkdown",
+ ".ronn",
+ ".workbook"
+];
+var filenames$3 = [
+ "contents.lr"
+];
+var tmScope$d = "source.gfm";
+var languageId$d = 222;
+var Markdown = {
+ name: name$f,
+ type: type$d,
+ aliases: aliases$4,
+ aceMode: aceMode$d,
+ codemirrorMode: codemirrorMode$a,
+ codemirrorMimeType: codemirrorMimeType$a,
+ wrap: wrap,
+ extensions: extensions$d,
+ filenames: filenames$3,
+ tmScope: tmScope$d,
+ languageId: languageId$d
+};
+
+var Markdown$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$f,
+ type: type$d,
+ aliases: aliases$4,
+ aceMode: aceMode$d,
+ codemirrorMode: codemirrorMode$a,
+ codemirrorMimeType: codemirrorMimeType$a,
+ wrap: wrap,
+ extensions: extensions$d,
+ filenames: filenames$3,
+ tmScope: tmScope$d,
+ languageId: languageId$d,
+ 'default': Markdown
+});
+
+var require$$0$6 = getCjsExportFromNamespace(Markdown$1);
+
+var languages$4 = [createLanguage(require$$0$6, function (data) {
+ return Object.assign(data, {
+ since: "1.8.0",
+ parsers: ["remark"],
+ vscodeLanguageIds: ["markdown"],
+ filenames: data.filenames.concat(["README"]),
+ extensions: data.extensions.filter(function (extension) {
+ return extension !== ".mdx";
+ })
+ });
+}), createLanguage(require$$0$6, function (data) {
+ return Object.assign(data, {
+ name: "MDX",
+ since: "1.15.0",
+ parsers: ["mdx"],
+ vscodeLanguageIds: ["mdx"],
+ filenames: [],
+ extensions: [".mdx"]
+ });
+})];
+var printers$4 = {
+ mdast: printerMarkdown
+};
+var languageMarkdown = {
+ languages: languages$4,
+ options: options$5,
+ printers: printers$4
+};
+
+var clean$6 = function clean(ast, newNode) {
+ delete newNode.sourceSpan;
+ delete newNode.startSourceSpan;
+ delete newNode.endSourceSpan;
+ delete newNode.nameSpan;
+ delete newNode.valueSpan;
+
+ if (ast.type === "text" || ast.type === "comment") {
+ return null;
+ } // may be formatted by multiparser
+
+
+ if (ast.type === "yaml" || ast.type === "toml") {
+ return null;
+ }
+
+ if (ast.type === "attribute") {
+ delete newNode.value;
+ }
+
+ if (ast.type === "docType") {
+ delete newNode.value;
+ }
+};
+
+var json$1 = {
+ "CSS_DISPLAY_TAGS": {
+ "area": "none",
+ "base": "none",
+ "basefont": "none",
+ "datalist": "none",
+ "head": "none",
+ "link": "none",
+ "meta": "none",
+ "noembed": "none",
+ "noframes": "none",
+ "param": "none",
+ "rp": "none",
+ "script": "block",
+ "source": "block",
+ "style": "none",
+ "template": "inline",
+ "track": "block",
+ "title": "none",
+ "html": "block",
+ "body": "block",
+ "address": "block",
+ "blockquote": "block",
+ "center": "block",
+ "div": "block",
+ "figure": "block",
+ "figcaption": "block",
+ "footer": "block",
+ "form": "block",
+ "header": "block",
+ "hr": "block",
+ "legend": "block",
+ "listing": "block",
+ "main": "block",
+ "p": "block",
+ "plaintext": "block",
+ "pre": "block",
+ "xmp": "block",
+ "slot": "contents",
+ "ruby": "ruby",
+ "rt": "ruby-text",
+ "article": "block",
+ "aside": "block",
+ "h1": "block",
+ "h2": "block",
+ "h3": "block",
+ "h4": "block",
+ "h5": "block",
+ "h6": "block",
+ "hgroup": "block",
+ "nav": "block",
+ "section": "block",
+ "dir": "block",
+ "dd": "block",
+ "dl": "block",
+ "dt": "block",
+ "ol": "block",
+ "ul": "block",
+ "li": "list-item",
+ "table": "table",
+ "caption": "table-caption",
+ "colgroup": "table-column-group",
+ "col": "table-column",
+ "thead": "table-header-group",
+ "tbody": "table-row-group",
+ "tfoot": "table-footer-group",
+ "tr": "table-row",
+ "td": "table-cell",
+ "th": "table-cell",
+ "fieldset": "block",
+ "button": "inline-block",
+ "video": "inline-block",
+ "audio": "inline-block"
+ },
+ "CSS_DISPLAY_DEFAULT": "inline",
+ "CSS_WHITE_SPACE_TAGS": {
+ "listing": "pre",
+ "plaintext": "pre",
+ "pre": "pre",
+ "xmp": "pre",
+ "nobr": "nowrap",
+ "table": "initial",
+ "textarea": "pre-wrap"
+ },
+ "CSS_WHITE_SPACE_DEFAULT": "normal"
+};
+
+var a = [
+ "accesskey",
+ "charset",
+ "coords",
+ "download",
+ "href",
+ "hreflang",
+ "name",
+ "ping",
+ "referrerpolicy",
+ "rel",
+ "rev",
+ "shape",
+ "tabindex",
+ "target",
+ "type"
+];
+var abbr = [
+ "title"
+];
+var applet = [
+ "align",
+ "alt",
+ "archive",
+ "code",
+ "codebase",
+ "height",
+ "hspace",
+ "name",
+ "object",
+ "vspace",
+ "width"
+];
+var area = [
+ "accesskey",
+ "alt",
+ "coords",
+ "download",
+ "href",
+ "hreflang",
+ "nohref",
+ "ping",
+ "referrerpolicy",
+ "rel",
+ "shape",
+ "tabindex",
+ "target",
+ "type"
+];
+var audio = [
+ "autoplay",
+ "controls",
+ "crossorigin",
+ "loop",
+ "muted",
+ "preload",
+ "src"
+];
+var base = [
+ "href",
+ "target"
+];
+var basefont = [
+ "color",
+ "face",
+ "size"
+];
+var bdo = [
+ "dir"
+];
+var blockquote = [
+ "cite"
+];
+var body = [
+ "alink",
+ "background",
+ "bgcolor",
+ "link",
+ "text",
+ "vlink"
+];
+var br = [
+ "clear"
+];
+var button = [
+ "accesskey",
+ "autofocus",
+ "disabled",
+ "form",
+ "formaction",
+ "formenctype",
+ "formmethod",
+ "formnovalidate",
+ "formtarget",
+ "name",
+ "tabindex",
+ "type",
+ "value"
+];
+var canvas = [
+ "height",
+ "width"
+];
+var caption = [
+ "align"
+];
+var col = [
+ "align",
+ "char",
+ "charoff",
+ "span",
+ "valign",
+ "width"
+];
+var colgroup = [
+ "align",
+ "char",
+ "charoff",
+ "span",
+ "valign",
+ "width"
+];
+var data$1 = [
+ "value"
+];
+var del$1 = [
+ "cite",
+ "datetime"
+];
+var details = [
+ "open"
+];
+var dfn = [
+ "title"
+];
+var dialog = [
+ "open"
+];
+var dir = [
+ "compact"
+];
+var div = [
+ "align"
+];
+var dl = [
+ "compact"
+];
+var embed$3 = [
+ "height",
+ "src",
+ "type",
+ "width"
+];
+var fieldset = [
+ "disabled",
+ "form",
+ "name"
+];
+var font = [
+ "color",
+ "face",
+ "size"
+];
+var form = [
+ "accept",
+ "accept-charset",
+ "action",
+ "autocomplete",
+ "enctype",
+ "method",
+ "name",
+ "novalidate",
+ "target"
+];
+var frame = [
+ "frameborder",
+ "longdesc",
+ "marginheight",
+ "marginwidth",
+ "name",
+ "noresize",
+ "scrolling",
+ "src"
+];
+var frameset = [
+ "cols",
+ "rows"
+];
+var h1 = [
+ "align"
+];
+var h2 = [
+ "align"
+];
+var h3 = [
+ "align"
+];
+var h4 = [
+ "align"
+];
+var h5 = [
+ "align"
+];
+var h6 = [
+ "align"
+];
+var head = [
+ "profile"
+];
+var hr = [
+ "align",
+ "noshade",
+ "size",
+ "width"
+];
+var html = [
+ "manifest",
+ "version"
+];
+var iframe = [
+ "align",
+ "allow",
+ "allowfullscreen",
+ "allowpaymentrequest",
+ "allowusermedia",
+ "frameborder",
+ "height",
+ "longdesc",
+ "marginheight",
+ "marginwidth",
+ "name",
+ "referrerpolicy",
+ "sandbox",
+ "scrolling",
+ "src",
+ "srcdoc",
+ "width"
+];
+var img = [
+ "align",
+ "alt",
+ "border",
+ "crossorigin",
+ "decoding",
+ "height",
+ "hspace",
+ "ismap",
+ "longdesc",
+ "name",
+ "referrerpolicy",
+ "sizes",
+ "src",
+ "srcset",
+ "usemap",
+ "vspace",
+ "width"
+];
+var input = [
+ "accept",
+ "accesskey",
+ "align",
+ "alt",
+ "autocomplete",
+ "autofocus",
+ "checked",
+ "dirname",
+ "disabled",
+ "form",
+ "formaction",
+ "formenctype",
+ "formmethod",
+ "formnovalidate",
+ "formtarget",
+ "height",
+ "ismap",
+ "list",
+ "max",
+ "maxlength",
+ "min",
+ "minlength",
+ "multiple",
+ "name",
+ "pattern",
+ "placeholder",
+ "readonly",
+ "required",
+ "size",
+ "src",
+ "step",
+ "tabindex",
+ "title",
+ "type",
+ "usemap",
+ "value",
+ "width"
+];
+var ins = [
+ "cite",
+ "datetime"
+];
+var isindex = [
+ "prompt"
+];
+var label = [
+ "accesskey",
+ "for",
+ "form"
+];
+var legend = [
+ "accesskey",
+ "align"
+];
+var li = [
+ "type",
+ "value"
+];
+var link$1 = [
+ "as",
+ "charset",
+ "color",
+ "crossorigin",
+ "href",
+ "hreflang",
+ "imagesizes",
+ "imagesrcset",
+ "integrity",
+ "media",
+ "nonce",
+ "referrerpolicy",
+ "rel",
+ "rev",
+ "sizes",
+ "target",
+ "title",
+ "type"
+];
+var map$1 = [
+ "name"
+];
+var menu = [
+ "compact"
+];
+var meta = [
+ "charset",
+ "content",
+ "http-equiv",
+ "name",
+ "scheme"
+];
+var meter = [
+ "high",
+ "low",
+ "max",
+ "min",
+ "optimum",
+ "value"
+];
+var object = [
+ "align",
+ "archive",
+ "border",
+ "classid",
+ "codebase",
+ "codetype",
+ "data",
+ "declare",
+ "form",
+ "height",
+ "hspace",
+ "name",
+ "standby",
+ "tabindex",
+ "type",
+ "typemustmatch",
+ "usemap",
+ "vspace",
+ "width"
+];
+var ol = [
+ "compact",
+ "reversed",
+ "start",
+ "type"
+];
+var optgroup = [
+ "disabled",
+ "label"
+];
+var option = [
+ "disabled",
+ "label",
+ "selected",
+ "value"
+];
+var output = [
+ "for",
+ "form",
+ "name"
+];
+var p = [
+ "align"
+];
+var param = [
+ "name",
+ "type",
+ "value",
+ "valuetype"
+];
+var pre = [
+ "width"
+];
+var progress = [
+ "max",
+ "value"
+];
+var q = [
+ "cite"
+];
+var script = [
+ "async",
+ "charset",
+ "crossorigin",
+ "defer",
+ "integrity",
+ "language",
+ "nomodule",
+ "nonce",
+ "referrerpolicy",
+ "src",
+ "type"
+];
+var select = [
+ "autocomplete",
+ "autofocus",
+ "disabled",
+ "form",
+ "multiple",
+ "name",
+ "required",
+ "size",
+ "tabindex"
+];
+var slot = [
+ "name"
+];
+var source = [
+ "media",
+ "sizes",
+ "src",
+ "srcset",
+ "type"
+];
+var style = [
+ "media",
+ "nonce",
+ "title",
+ "type"
+];
+var table = [
+ "align",
+ "bgcolor",
+ "border",
+ "cellpadding",
+ "cellspacing",
+ "frame",
+ "rules",
+ "summary",
+ "width"
+];
+var tbody = [
+ "align",
+ "char",
+ "charoff",
+ "valign"
+];
+var td = [
+ "abbr",
+ "align",
+ "axis",
+ "bgcolor",
+ "char",
+ "charoff",
+ "colspan",
+ "headers",
+ "height",
+ "nowrap",
+ "rowspan",
+ "scope",
+ "valign",
+ "width"
+];
+var textarea = [
+ "accesskey",
+ "autocomplete",
+ "autofocus",
+ "cols",
+ "dirname",
+ "disabled",
+ "form",
+ "maxlength",
+ "minlength",
+ "name",
+ "placeholder",
+ "readonly",
+ "required",
+ "rows",
+ "tabindex",
+ "wrap"
+];
+var tfoot = [
+ "align",
+ "char",
+ "charoff",
+ "valign"
+];
+var th = [
+ "abbr",
+ "align",
+ "axis",
+ "bgcolor",
+ "char",
+ "charoff",
+ "colspan",
+ "headers",
+ "height",
+ "nowrap",
+ "rowspan",
+ "scope",
+ "valign",
+ "width"
+];
+var thead = [
+ "align",
+ "char",
+ "charoff",
+ "valign"
+];
+var time = [
+ "datetime"
+];
+var tr = [
+ "align",
+ "bgcolor",
+ "char",
+ "charoff",
+ "valign"
+];
+var track = [
+ "default",
+ "kind",
+ "label",
+ "src",
+ "srclang"
+];
+var ul = [
+ "compact",
+ "type"
+];
+var video = [
+ "autoplay",
+ "controls",
+ "crossorigin",
+ "height",
+ "loop",
+ "muted",
+ "playsinline",
+ "poster",
+ "preload",
+ "src",
+ "width"
+];
+var index$1 = {
+ "*": [
+ "accesskey",
+ "autocapitalize",
+ "autofocus",
+ "class",
+ "contenteditable",
+ "dir",
+ "draggable",
+ "enterkeyhint",
+ "hidden",
+ "id",
+ "inputmode",
+ "is",
+ "itemid",
+ "itemprop",
+ "itemref",
+ "itemscope",
+ "itemtype",
+ "lang",
+ "nonce",
+ "slot",
+ "spellcheck",
+ "style",
+ "tabindex",
+ "title",
+ "translate"
+],
+ a: a,
+ abbr: abbr,
+ applet: applet,
+ area: area,
+ audio: audio,
+ base: base,
+ basefont: basefont,
+ bdo: bdo,
+ blockquote: blockquote,
+ body: body,
+ br: br,
+ button: button,
+ canvas: canvas,
+ caption: caption,
+ col: col,
+ colgroup: colgroup,
+ data: data$1,
+ del: del$1,
+ details: details,
+ dfn: dfn,
+ dialog: dialog,
+ dir: dir,
+ div: div,
+ dl: dl,
+ embed: embed$3,
+ fieldset: fieldset,
+ font: font,
+ form: form,
+ frame: frame,
+ frameset: frameset,
+ h1: h1,
+ h2: h2,
+ h3: h3,
+ h4: h4,
+ h5: h5,
+ h6: h6,
+ head: head,
+ hr: hr,
+ html: html,
+ iframe: iframe,
+ img: img,
+ input: input,
+ ins: ins,
+ isindex: isindex,
+ label: label,
+ legend: legend,
+ li: li,
+ link: link$1,
+ map: map$1,
+ menu: menu,
+ meta: meta,
+ meter: meter,
+ object: object,
+ ol: ol,
+ optgroup: optgroup,
+ option: option,
+ output: output,
+ p: p,
+ param: param,
+ pre: pre,
+ progress: progress,
+ q: q,
+ script: script,
+ select: select,
+ slot: slot,
+ source: source,
+ style: style,
+ table: table,
+ tbody: tbody,
+ td: td,
+ textarea: textarea,
+ tfoot: tfoot,
+ th: th,
+ thead: thead,
+ time: time,
+ tr: tr,
+ track: track,
+ ul: ul,
+ video: video
+};
+
+var htmlElementAttributes = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ a: a,
+ abbr: abbr,
+ applet: applet,
+ area: area,
+ audio: audio,
+ base: base,
+ basefont: basefont,
+ bdo: bdo,
+ blockquote: blockquote,
+ body: body,
+ br: br,
+ button: button,
+ canvas: canvas,
+ caption: caption,
+ col: col,
+ colgroup: colgroup,
+ data: data$1,
+ del: del$1,
+ details: details,
+ dfn: dfn,
+ dialog: dialog,
+ dir: dir,
+ div: div,
+ dl: dl,
+ embed: embed$3,
+ fieldset: fieldset,
+ font: font,
+ form: form,
+ frame: frame,
+ frameset: frameset,
+ h1: h1,
+ h2: h2,
+ h3: h3,
+ h4: h4,
+ h5: h5,
+ h6: h6,
+ head: head,
+ hr: hr,
+ html: html,
+ iframe: iframe,
+ img: img,
+ input: input,
+ ins: ins,
+ isindex: isindex,
+ label: label,
+ legend: legend,
+ li: li,
+ link: link$1,
+ map: map$1,
+ menu: menu,
+ meta: meta,
+ meter: meter,
+ object: object,
+ ol: ol,
+ optgroup: optgroup,
+ option: option,
+ output: output,
+ p: p,
+ param: param,
+ pre: pre,
+ progress: progress,
+ q: q,
+ script: script,
+ select: select,
+ slot: slot,
+ source: source,
+ style: style,
+ table: table,
+ tbody: tbody,
+ td: td,
+ textarea: textarea,
+ tfoot: tfoot,
+ th: th,
+ thead: thead,
+ time: time,
+ tr: tr,
+ track: track,
+ ul: ul,
+ video: video,
+ 'default': index$1
+});
+
+var htmlElementAttributes$1 = getCjsExportFromNamespace(htmlElementAttributes);
+
+var CSS_DISPLAY_TAGS = json$1.CSS_DISPLAY_TAGS,
+ CSS_DISPLAY_DEFAULT = json$1.CSS_DISPLAY_DEFAULT,
+ CSS_WHITE_SPACE_TAGS = json$1.CSS_WHITE_SPACE_TAGS,
+ CSS_WHITE_SPACE_DEFAULT = json$1.CSS_WHITE_SPACE_DEFAULT;
+var HTML_TAGS = arrayToMap(htmlTagNames$1);
+var HTML_ELEMENT_ATTRIBUTES = mapObject(htmlElementAttributes$1, arrayToMap);
+
+function arrayToMap(array) {
+ var map = Object.create(null);
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = array[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var value = _step.value;
+ map[value] = true;
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return map;
+}
+
+function mapObject(object, fn) {
+ var newObject = Object.create(null);
+
+ for (var _i = 0, _Object$keys = Object.keys(object); _i < _Object$keys.length; _i++) {
+ var key = _Object$keys[_i];
+ newObject[key] = fn(object[key], key);
+ }
+
+ return newObject;
+}
+
+function shouldPreserveContent(node, options) {
+ if (node.type === "element" && node.fullName === "template" && node.attrMap.lang && node.attrMap.lang !== "html") {
+ return true;
+ } // unterminated node in ie conditional comment
+ // e.g. <!--[if lt IE 9]><html><![endif]-->
+
+
+ if (node.type === "ieConditionalComment" && node.lastChild && !node.lastChild.isSelfClosing && !node.lastChild.endSourceSpan) {
+ return true;
+ } // incomplete html in ie conditional comment
+ // e.g. <!--[if lt IE 9]></div><![endif]-->
+
+
+ if (node.type === "ieConditionalComment" && !node.complete) {
+ return true;
+ } // top-level elements (excluding <template>, <style> and <script>) in Vue SFC are considered custom block
+ // custom blocks can be written in other languages so we should preserve them to not break the code
+
+
+ if (options.parser === "vue" && node.type === "element" && node.parent.type === "root" && ["template", "style", "script", // vue parser can be used for vue dom template as well, so we should still format top-level <html>
+ "html"].indexOf(node.fullName) === -1) {
+ return true;
+ } // TODO: handle non-text children in <pre>
+
+
+ if (isPreLikeNode(node) && node.children.some(function (child) {
+ return child.type !== "text" && child.type !== "interpolation";
+ })) {
+ return true;
+ }
+
+ return false;
+}
+
+function hasPrettierIgnore$3(node) {
+ if (node.type === "attribute" || isTextLikeNode(node)) {
+ return false;
+ }
+
+ if (!node.parent) {
+ return false;
+ }
+
+ if (typeof node.index !== "number" || node.index === 0) {
+ return false;
+ }
+
+ var prevNode = node.parent.children[node.index - 1];
+ return isPrettierIgnore$1(prevNode);
+}
+
+function isPrettierIgnore$1(node) {
+ return node.type === "comment" && node.value.trim() === "prettier-ignore";
+}
+
+function getPrettierIgnoreAttributeCommentData(value) {
+ var match = value.trim().match(/^prettier-ignore-attribute(?:\s+([^]+))?$/);
+
+ if (!match) {
+ return false;
+ }
+
+ if (!match[1]) {
+ return true;
+ }
+
+ return match[1].split(/\s+/);
+}
+/** there's no opening/closing tag or it's considered not breakable */
+
+
+function isTextLikeNode(node) {
+ return node.type === "text" || node.type === "comment";
+}
+
+function isScriptLikeTag(node) {
+ return node.type === "element" && (node.fullName === "script" || node.fullName === "style" || node.fullName === "svg:style");
+}
+
+function isFrontMatterNode(node) {
+ return node.type === "yaml" || node.type === "toml";
+}
+
+function canHaveInterpolation(node) {
+ return node.children && !isScriptLikeTag(node);
+}
+
+function isWhitespaceSensitiveNode(node) {
+ return isScriptLikeTag(node) || node.type === "interpolation" || isIndentationSensitiveNode(node);
+}
+
+function isIndentationSensitiveNode(node) {
+ return getNodeCssStyleWhiteSpace(node).startsWith("pre");
+}
+
+function isLeadingSpaceSensitiveNode(node) {
+ var isLeadingSpaceSensitive = _isLeadingSpaceSensitiveNode();
+
+ if (isLeadingSpaceSensitive && !node.prev && node.parent && node.parent.tagDefinition && node.parent.tagDefinition.ignoreFirstLf) {
+ return node.type === "interpolation";
+ }
+
+ return isLeadingSpaceSensitive;
+
+ function _isLeadingSpaceSensitiveNode() {
+ if (isFrontMatterNode(node)) {
+ return false;
+ }
+
+ if ((node.type === "text" || node.type === "interpolation") && node.prev && (node.prev.type === "text" || node.prev.type === "interpolation")) {
+ return true;
+ }
+
+ if (!node.parent || node.parent.cssDisplay === "none") {
+ return false;
+ }
+
+ if (isPreLikeNode(node.parent)) {
+ return true;
+ }
+
+ if (!node.prev && (node.parent.type === "root" || isScriptLikeTag(node.parent) || !isFirstChildLeadingSpaceSensitiveCssDisplay(node.parent.cssDisplay))) {
+ return false;
+ }
+
+ if (node.prev && !isNextLeadingSpaceSensitiveCssDisplay(node.prev.cssDisplay)) {
+ return false;
+ }
+
+ return true;
+ }
+}
+
+function isTrailingSpaceSensitiveNode(node) {
+ if (isFrontMatterNode(node)) {
+ return false;
+ }
+
+ if ((node.type === "text" || node.type === "interpolation") && node.next && (node.next.type === "text" || node.next.type === "interpolation")) {
+ return true;
+ }
+
+ if (!node.parent || node.parent.cssDisplay === "none") {
+ return false;
+ }
+
+ if (isPreLikeNode(node.parent)) {
+ return true;
+ }
+
+ if (!node.next && (node.parent.type === "root" || isScriptLikeTag(node.parent) || !isLastChildTrailingSpaceSensitiveCssDisplay(node.parent.cssDisplay))) {
+ return false;
+ }
+
+ if (node.next && !isPrevTrailingSpaceSensitiveCssDisplay(node.next.cssDisplay)) {
+ return false;
+ }
+
+ return true;
+}
+
+function isDanglingSpaceSensitiveNode(node) {
+ return isDanglingSpaceSensitiveCssDisplay(node.cssDisplay) && !isScriptLikeTag(node);
+}
+
+function forceNextEmptyLine(node) {
+ return isFrontMatterNode(node) || node.next && node.sourceSpan.end.line + 1 < node.next.sourceSpan.start.line;
+}
+/** firstChild leadingSpaces and lastChild trailingSpaces */
+
+
+function forceBreakContent(node) {
+ return forceBreakChildren(node) || node.type === "element" && node.children.length !== 0 && (["body", "script", "style"].indexOf(node.name) !== -1 || node.children.some(function (child) {
+ return hasNonTextChild(child);
+ })) || node.firstChild && node.firstChild === node.lastChild && hasLeadingLineBreak(node.firstChild) && (!node.lastChild.isTrailingSpaceSensitive || hasTrailingLineBreak(node.lastChild));
+}
+/** spaces between children */
+
+
+function forceBreakChildren(node) {
+ return node.type === "element" && node.children.length !== 0 && (["html", "head", "ul", "ol", "select"].indexOf(node.name) !== -1 || node.cssDisplay.startsWith("table") && node.cssDisplay !== "table-cell");
+}
+
+function preferHardlineAsLeadingSpaces(node) {
+ return preferHardlineAsSurroundingSpaces(node) || node.prev && preferHardlineAsTrailingSpaces(node.prev) || hasSurroundingLineBreak(node);
+}
+
+function preferHardlineAsTrailingSpaces(node) {
+ return preferHardlineAsSurroundingSpaces(node) || node.type === "element" && node.fullName === "br" || hasSurroundingLineBreak(node);
+}
+
+function hasSurroundingLineBreak(node) {
+ return hasLeadingLineBreak(node) && hasTrailingLineBreak(node);
+}
+
+function hasLeadingLineBreak(node) {
+ return node.hasLeadingSpaces && (node.prev ? node.prev.sourceSpan.end.line < node.sourceSpan.start.line : node.parent.type === "root" || node.parent.startSourceSpan.end.line < node.sourceSpan.start.line);
+}
+
+function hasTrailingLineBreak(node) {
+ return node.hasTrailingSpaces && (node.next ? node.next.sourceSpan.start.line > node.sourceSpan.end.line : node.parent.type === "root" || node.parent.endSourceSpan.start.line > node.sourceSpan.end.line);
+}
+
+function preferHardlineAsSurroundingSpaces(node) {
+ switch (node.type) {
+ case "ieConditionalComment":
+ case "comment":
+ case "directive":
+ return true;
+
+ case "element":
+ return ["script", "select"].indexOf(node.name) !== -1;
+ }
+
+ return false;
+}
+
+function getLastDescendant(node) {
+ return node.lastChild ? getLastDescendant(node.lastChild) : node;
+}
+
+function hasNonTextChild(node) {
+ return node.children && node.children.some(function (child) {
+ return child.type !== "text";
+ });
+}
+
+function inferScriptParser(node) {
+ if (node.name === "script" && !node.attrMap.src) {
+ if (!node.attrMap.lang && !node.attrMap.type || node.attrMap.type === "module" || node.attrMap.type === "text/javascript" || node.attrMap.type === "text/babel" || node.attrMap.type === "application/javascript") {
+ return "babel";
+ }
+
+ if (node.attrMap.type === "application/x-typescript" || node.attrMap.lang === "ts" || node.attrMap.lang === "tsx") {
+ return "typescript";
+ }
+
+ if (node.attrMap.type === "text/markdown") {
+ return "markdown";
+ }
+
+ if (node.attrMap.type.endsWith("json") || node.attrMap.type.endsWith("importmap")) {
+ return "json";
+ }
+ }
+
+ if (node.name === "style") {
+ if (!node.attrMap.lang || node.attrMap.lang === "postcss" || node.attrMap.lang === "css") {
+ return "css";
+ }
+
+ if (node.attrMap.lang === "scss") {
+ return "scss";
+ }
+
+ if (node.attrMap.lang === "less") {
+ return "less";
+ }
+ }
+
+ return null;
+}
+
+function isBlockLikeCssDisplay(cssDisplay) {
+ return cssDisplay === "block" || cssDisplay === "list-item" || cssDisplay.startsWith("table");
+}
+
+function isFirstChildLeadingSpaceSensitiveCssDisplay(cssDisplay) {
+ return !isBlockLikeCssDisplay(cssDisplay) && cssDisplay !== "inline-block";
+}
+
+function isLastChildTrailingSpaceSensitiveCssDisplay(cssDisplay) {
+ return !isBlockLikeCssDisplay(cssDisplay) && cssDisplay !== "inline-block";
+}
+
+function isPrevTrailingSpaceSensitiveCssDisplay(cssDisplay) {
+ return !isBlockLikeCssDisplay(cssDisplay);
+}
+
+function isNextLeadingSpaceSensitiveCssDisplay(cssDisplay) {
+ return !isBlockLikeCssDisplay(cssDisplay);
+}
+
+function isDanglingSpaceSensitiveCssDisplay(cssDisplay) {
+ return !isBlockLikeCssDisplay(cssDisplay) && cssDisplay !== "inline-block";
+}
+
+function isPreLikeNode(node) {
+ return getNodeCssStyleWhiteSpace(node).startsWith("pre");
+}
+
+function countParents(path) {
+ var predicate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
+ return true;
+ };
+ var counter = 0;
+
+ for (var i = path.stack.length - 1; i >= 0; i--) {
+ var value = path.stack[i];
+
+ if (value && typeof value === "object" && !Array.isArray(value) && predicate(value)) {
+ counter++;
+ }
+ }
+
+ return counter;
+}
+
+function hasParent(node, fn) {
+ var current = node;
+
+ while (current) {
+ if (fn(current)) {
+ return true;
+ }
+
+ current = current.parent;
+ }
+
+ return false;
+}
+
+function getNodeCssStyleDisplay(node, options) {
+ if (node.prev && node.prev.type === "comment") {
+ // <!-- display: block -->
+ var match = node.prev.value.match(/^\s*display:\s*([a-z]+)\s*$/);
+
+ if (match) {
+ return match[1];
+ }
+ }
+
+ var isInSvgForeignObject = false;
+
+ if (node.type === "element" && node.namespace === "svg") {
+ if (hasParent(node, function (parent) {
+ return parent.fullName === "svg:foreignObject";
+ })) {
+ isInSvgForeignObject = true;
+ } else {
+ return node.name === "svg" ? "inline-block" : "block";
+ }
+ }
+
+ switch (options.htmlWhitespaceSensitivity) {
+ case "strict":
+ return "inline";
+
+ case "ignore":
+ return "block";
+
+ default:
+ return node.type === "element" && (!node.namespace || isInSvgForeignObject) && CSS_DISPLAY_TAGS[node.name] || CSS_DISPLAY_DEFAULT;
+ }
+}
+
+function getNodeCssStyleWhiteSpace(node) {
+ return node.type === "element" && !node.namespace && CSS_WHITE_SPACE_TAGS[node.name] || CSS_WHITE_SPACE_DEFAULT;
+}
+
+function getMinIndentation(text) {
+ var minIndentation = Infinity;
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = text.split("\n")[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var lineText = _step2.value;
+
+ if (lineText.length === 0) {
+ continue;
+ }
+
+ if (/\S/.test(lineText[0])) {
+ return 0;
+ }
+
+ var indentation = lineText.match(/^\s*/)[0].length;
+
+ if (lineText.length === indentation) {
+ continue;
+ }
+
+ if (indentation < minIndentation) {
+ minIndentation = indentation;
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return minIndentation === Infinity ? 0 : minIndentation;
+}
+
+function dedentString(text) {
+ var minIndent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getMinIndentation(text);
+ return minIndent === 0 ? text : text.split("\n").map(function (lineText) {
+ return lineText.slice(minIndent);
+ }).join("\n");
+}
+
+function normalizeParts$1(parts) {
+ var newParts = [];
+ var restParts = parts.slice();
+
+ while (restParts.length !== 0) {
+ var part = restParts.shift();
+
+ if (!part) {
+ continue;
+ }
+
+ if (part.type === "concat") {
+ Array.prototype.unshift.apply(restParts, part.parts);
+ continue;
+ }
+
+ if (newParts.length !== 0 && typeof newParts[newParts.length - 1] === "string" && typeof part === "string") {
+ newParts.push(newParts.pop() + part);
+ continue;
+ }
+
+ newParts.push(part);
+ }
+
+ return newParts;
+}
+
+function identity$2(x) {
+ return x;
+}
+
+function shouldNotPrintClosingTag(node, options) {
+ return !node.isSelfClosing && !node.endSourceSpan && (hasPrettierIgnore$3(node) || shouldPreserveContent(node.parent, options));
+}
+
+function countChars(text, char) {
+ var counter = 0;
+
+ for (var i = 0; i < text.length; i++) {
+ if (text[i] === char) {
+ counter++;
+ }
+ }
+
+ return counter;
+}
+
+function unescapeQuoteEntities(text) {
+ return text.replace(/&apos;/g, "'").replace(/&quot;/g, '"');
+}
+
+var utils$5 = {
+ HTML_ELEMENT_ATTRIBUTES,
+ HTML_TAGS,
+ canHaveInterpolation,
+ countChars,
+ countParents,
+ dedentString,
+ forceBreakChildren,
+ forceBreakContent,
+ forceNextEmptyLine,
+ getLastDescendant,
+ getNodeCssStyleDisplay,
+ getNodeCssStyleWhiteSpace,
+ getPrettierIgnoreAttributeCommentData,
+ hasPrettierIgnore: hasPrettierIgnore$3,
+ identity: identity$2,
+ inferScriptParser,
+ isDanglingSpaceSensitiveNode,
+ isFrontMatterNode,
+ isIndentationSensitiveNode,
+ isLeadingSpaceSensitiveNode,
+ isPreLikeNode,
+ isScriptLikeTag,
+ isTextLikeNode,
+ isTrailingSpaceSensitiveNode,
+ isWhitespaceSensitiveNode,
+ normalizeParts: normalizeParts$1,
+ preferHardlineAsLeadingSpaces,
+ preferHardlineAsTrailingSpaces,
+ shouldNotPrintClosingTag,
+ shouldPreserveContent,
+ unescapeQuoteEntities
+};
+
+var canHaveInterpolation$1 = utils$5.canHaveInterpolation,
+ getNodeCssStyleDisplay$1 = utils$5.getNodeCssStyleDisplay,
+ isDanglingSpaceSensitiveNode$1 = utils$5.isDanglingSpaceSensitiveNode,
+ isIndentationSensitiveNode$1 = utils$5.isIndentationSensitiveNode,
+ isLeadingSpaceSensitiveNode$1 = utils$5.isLeadingSpaceSensitiveNode,
+ isTrailingSpaceSensitiveNode$1 = utils$5.isTrailingSpaceSensitiveNode,
+ isWhitespaceSensitiveNode$1 = utils$5.isWhitespaceSensitiveNode;
+var PREPROCESS_PIPELINE = [removeIgnorableFirstLf, mergeIeConditonalStartEndCommentIntoElementOpeningTag, mergeCdataIntoText, extractInterpolation, extractWhitespaces, addCssDisplay, addIsSelfClosing, addHasHtmComponentClosingTag, addIsSpaceSensitive, mergeSimpleElementIntoText];
+
+function preprocess$2(ast, options) {
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = PREPROCESS_PIPELINE[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var fn = _step.value;
+ ast = fn(ast, options);
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return ast;
+}
+
+function removeIgnorableFirstLf(ast
+/*, options */
+) {
+ return ast.map(function (node) {
+ if (node.type === "element" && node.tagDefinition.ignoreFirstLf && node.children.length !== 0 && node.children[0].type === "text" && node.children[0].value[0] === "\n") {
+ var text = node.children[0];
+ return node.clone({
+ children: text.value.length === 1 ? node.children.slice(1) : [].concat(text.clone({
+ value: text.value.slice(1)
+ }), node.children.slice(1))
+ });
+ }
+
+ return node;
+ });
+}
+
+function mergeIeConditonalStartEndCommentIntoElementOpeningTag(ast
+/*, options */
+) {
+ /**
+ * <!--[if ...]><!--><target><!--<![endif]-->
+ */
+ var isTarget = function isTarget(node) {
+ return node.type === "element" && node.prev && node.prev.type === "ieConditionalStartComment" && node.prev.sourceSpan.end.offset === node.startSourceSpan.start.offset && node.firstChild && node.firstChild.type === "ieConditionalEndComment" && node.firstChild.sourceSpan.start.offset === node.startSourceSpan.end.offset;
+ };
+
+ return ast.map(function (node) {
+ if (node.children) {
+ var isTargetResults = node.children.map(isTarget);
+
+ if (isTargetResults.some(Boolean)) {
+ var newChildren = [];
+
+ for (var i = 0; i < node.children.length; i++) {
+ var child = node.children[i];
+
+ if (isTargetResults[i + 1]) {
+ // ieConditionalStartComment
+ continue;
+ }
+
+ if (isTargetResults[i]) {
+ var ieConditionalStartComment = child.prev;
+ var ieConditionalEndComment = child.firstChild;
+ var ParseSourceSpan = child.sourceSpan.constructor;
+ var startSourceSpan = new ParseSourceSpan(ieConditionalStartComment.sourceSpan.start, ieConditionalEndComment.sourceSpan.end);
+ var sourceSpan = new ParseSourceSpan(startSourceSpan.start, child.sourceSpan.end);
+ newChildren.push(child.clone({
+ condition: ieConditionalStartComment.condition,
+ sourceSpan,
+ startSourceSpan,
+ children: child.children.slice(1)
+ }));
+ continue;
+ }
+
+ newChildren.push(child);
+ }
+
+ return node.clone({
+ children: newChildren
+ });
+ }
+ }
+
+ return node;
+ });
+}
+
+function mergeNodeIntoText(ast, shouldMerge, getValue) {
+ return ast.map(function (node) {
+ if (node.children) {
+ var shouldMergeResults = node.children.map(shouldMerge);
+
+ if (shouldMergeResults.some(Boolean)) {
+ var newChildren = [];
+
+ for (var i = 0; i < node.children.length; i++) {
+ var child = node.children[i];
+
+ if (child.type !== "text" && !shouldMergeResults[i]) {
+ newChildren.push(child);
+ continue;
+ }
+
+ var newChild = child.type === "text" ? child : child.clone({
+ type: "text",
+ value: getValue(child)
+ });
+
+ if (newChildren.length === 0 || newChildren[newChildren.length - 1].type !== "text") {
+ newChildren.push(newChild);
+ continue;
+ }
+
+ var lastChild = newChildren.pop();
+ var ParseSourceSpan = lastChild.sourceSpan.constructor;
+ newChildren.push(lastChild.clone({
+ value: lastChild.value + newChild.value,
+ sourceSpan: new ParseSourceSpan(lastChild.sourceSpan.start, newChild.sourceSpan.end)
+ }));
+ }
+
+ return node.clone({
+ children: newChildren
+ });
+ }
+ }
+
+ return node;
+ });
+}
+
+function mergeCdataIntoText(ast
+/*, options */
+) {
+ return mergeNodeIntoText(ast, function (node) {
+ return node.type === "cdata";
+ }, function (node) {
+ return `<![CDATA[${node.value}]]>`;
+ });
+}
+
+function mergeSimpleElementIntoText(ast
+/*, options */
+) {
+ var isSimpleElement = function isSimpleElement(node) {
+ return node.type === "element" && node.attrs.length === 0 && node.children.length === 1 && node.firstChild.type === "text" && // \xA0: non-breaking whitespace
+ !/[^\S\xA0]/.test(node.children[0].value) && !node.firstChild.hasLeadingSpaces && !node.firstChild.hasTrailingSpaces && node.isLeadingSpaceSensitive && !node.hasLeadingSpaces && node.isTrailingSpaceSensitive && !node.hasTrailingSpaces && node.prev && node.prev.type === "text" && node.next && node.next.type === "text";
+ };
+
+ return ast.map(function (node) {
+ if (node.children) {
+ var isSimpleElementResults = node.children.map(isSimpleElement);
+
+ if (isSimpleElementResults.some(Boolean)) {
+ var newChildren = [];
+
+ for (var i = 0; i < node.children.length; i++) {
+ var child = node.children[i];
+
+ if (isSimpleElementResults[i]) {
+ var lastChild = newChildren.pop();
+ var nextChild = node.children[++i];
+ var ParseSourceSpan = node.sourceSpan.constructor;
+ var isTrailingSpaceSensitive = nextChild.isTrailingSpaceSensitive,
+ hasTrailingSpaces = nextChild.hasTrailingSpaces;
+ newChildren.push(lastChild.clone({
+ value: lastChild.value + `<${child.rawName}>` + child.firstChild.value + `</${child.rawName}>` + nextChild.value,
+ sourceSpan: new ParseSourceSpan(lastChild.sourceSpan.start, nextChild.sourceSpan.end),
+ isTrailingSpaceSensitive,
+ hasTrailingSpaces
+ }));
+ } else {
+ newChildren.push(child);
+ }
+ }
+
+ return node.clone({
+ children: newChildren
+ });
+ }
+ }
+
+ return node;
+ });
+}
+
+function extractInterpolation(ast, options) {
+ if (options.parser === "html") {
+ return ast;
+ }
+
+ var interpolationRegex = /\{\{([\s\S]+?)\}\}/g;
+ return ast.map(function (node) {
+ if (!canHaveInterpolation$1(node)) {
+ return node;
+ }
+
+ var newChildren = [];
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = node.children[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var child = _step2.value;
+
+ if (child.type !== "text") {
+ newChildren.push(child);
+ continue;
+ }
+
+ var ParseSourceSpan = child.sourceSpan.constructor;
+ var startSourceSpan = child.sourceSpan.start;
+ var endSourceSpan = null;
+ var components = child.value.split(interpolationRegex);
+
+ for (var i = 0; i < components.length; i++, startSourceSpan = endSourceSpan) {
+ var value = components[i];
+
+ if (i % 2 === 0) {
+ endSourceSpan = startSourceSpan.moveBy(value.length);
+
+ if (value.length !== 0) {
+ newChildren.push({
+ type: "text",
+ value,
+ sourceSpan: new ParseSourceSpan(startSourceSpan, endSourceSpan)
+ });
+ }
+
+ continue;
+ }
+
+ endSourceSpan = startSourceSpan.moveBy(value.length + 4); // `{{` + `}}`
+
+ newChildren.push({
+ type: "interpolation",
+ sourceSpan: new ParseSourceSpan(startSourceSpan, endSourceSpan),
+ children: value.length === 0 ? [] : [{
+ type: "text",
+ value,
+ sourceSpan: new ParseSourceSpan(startSourceSpan.moveBy(2), endSourceSpan.moveBy(-2))
+ }]
+ });
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return node.clone({
+ children: newChildren
+ });
+ });
+}
+/**
+ * - add `hasLeadingSpaces` field
+ * - add `hasTrailingSpaces` field
+ * - add `hasDanglingSpaces` field for parent nodes
+ * - add `isWhitespaceSensitive`, `isIndentationSensitive` field for text nodes
+ * - remove insensitive whitespaces
+ */
+
+
+function extractWhitespaces(ast
+/*, options*/
+) {
+ var TYPE_WHITESPACE = "whitespace";
+ return ast.map(function (node) {
+ if (!node.children) {
+ return node;
+ }
+
+ if (node.children.length === 0 || node.children.length === 1 && node.children[0].type === "text" && node.children[0].value.trim().length === 0) {
+ return node.clone({
+ children: [],
+ hasDanglingSpaces: node.children.length !== 0
+ });
+ }
+
+ var isWhitespaceSensitive = isWhitespaceSensitiveNode$1(node);
+ var isIndentationSensitive = isIndentationSensitiveNode$1(node);
+ return node.clone({
+ isWhitespaceSensitive,
+ isIndentationSensitive,
+ children: node.children // extract whitespace nodes
+ .reduce(function (newChildren, child) {
+ if (child.type !== "text" || isWhitespaceSensitive) {
+ return newChildren.concat(child);
+ }
+
+ var localChildren = [];
+
+ var _child$value$match = child.value.match(/^(\s*)([\s\S]*?)(\s*)$/),
+ _child$value$match2 = _slicedToArray(_child$value$match, 4),
+ leadingSpaces = _child$value$match2[1],
+ text = _child$value$match2[2],
+ trailingSpaces = _child$value$match2[3];
+
+ if (leadingSpaces) {
+ localChildren.push({
+ type: TYPE_WHITESPACE
+ });
+ }
+
+ var ParseSourceSpan = child.sourceSpan.constructor;
+
+ if (text) {
+ localChildren.push({
+ type: "text",
+ value: text,
+ sourceSpan: new ParseSourceSpan(child.sourceSpan.start.moveBy(leadingSpaces.length), child.sourceSpan.end.moveBy(-trailingSpaces.length))
+ });
+ }
+
+ if (trailingSpaces) {
+ localChildren.push({
+ type: TYPE_WHITESPACE
+ });
+ }
+
+ return newChildren.concat(localChildren);
+ }, []) // set hasLeadingSpaces/hasTrailingSpaces and filter whitespace nodes
+ .reduce(function (newChildren, child, i, children) {
+ if (child.type === TYPE_WHITESPACE) {
+ return newChildren;
+ }
+
+ var hasLeadingSpaces = i !== 0 && children[i - 1].type === TYPE_WHITESPACE;
+ var hasTrailingSpaces = i !== children.length - 1 && children[i + 1].type === TYPE_WHITESPACE;
+ return newChildren.concat(Object.assign({}, child, {
+ hasLeadingSpaces,
+ hasTrailingSpaces
+ }));
+ }, [])
+ });
+ });
+}
+
+function addIsSelfClosing(ast
+/*, options */
+) {
+ return ast.map(function (node) {
+ return Object.assign(node, {
+ isSelfClosing: !node.children || node.type === "element" && (node.tagDefinition.isVoid || // self-closing
+ node.startSourceSpan === node.endSourceSpan)
+ });
+ });
+}
+
+function addHasHtmComponentClosingTag(ast, options) {
+ return ast.map(function (node) {
+ return node.type !== "element" ? node : Object.assign(node, {
+ hasHtmComponentClosingTag: node.endSourceSpan && /^<\s*\/\s*\/\s*>$/.test(options.originalText.slice(node.endSourceSpan.start.offset, node.endSourceSpan.end.offset))
+ });
+ });
+}
+
+function addCssDisplay(ast, options) {
+ return ast.map(function (node) {
+ return Object.assign(node, {
+ cssDisplay: getNodeCssStyleDisplay$1(node, options)
+ });
+ });
+}
+/**
+ * - add `isLeadingSpaceSensitive` field
+ * - add `isTrailingSpaceSensitive` field
+ * - add `isDanglingSpaceSensitive` field for parent nodes
+ */
+
+
+function addIsSpaceSensitive(ast
+/*, options */
+) {
+ return ast.map(function (node) {
+ if (!node.children) {
+ return node;
+ }
+
+ if (node.children.length === 0) {
+ return node.clone({
+ isDanglingSpaceSensitive: isDanglingSpaceSensitiveNode$1(node)
+ });
+ }
+
+ return node.clone({
+ children: node.children.map(function (child) {
+ return Object.assign({}, child, {
+ isLeadingSpaceSensitive: isLeadingSpaceSensitiveNode$1(child),
+ isTrailingSpaceSensitive: isTrailingSpaceSensitiveNode$1(child)
+ });
+ }).map(function (child, index, children) {
+ return Object.assign({}, child, {
+ isLeadingSpaceSensitive: index === 0 ? child.isLeadingSpaceSensitive : children[index - 1].isTrailingSpaceSensitive && child.isLeadingSpaceSensitive,
+ isTrailingSpaceSensitive: index === children.length - 1 ? child.isTrailingSpaceSensitive : children[index + 1].isLeadingSpaceSensitive && child.isTrailingSpaceSensitive
+ });
+ })
+ });
+ });
+}
+
+var preprocess_1$2 = preprocess$2;
+
+function hasPragma$3(text) {
+ return /^\s*<!--\s*@(format|prettier)\s*-->/.test(text);
+}
+
+function insertPragma$6(text) {
+ return "<!-- @format -->\n\n" + text.replace(/^\s*\n/, "");
+}
+
+var pragma$4 = {
+ hasPragma: hasPragma$3,
+ insertPragma: insertPragma$6
+};
+
+var _require$$0$builders$8 = doc.builders,
+ concat$e = _require$$0$builders$8.concat,
+ group$e = _require$$0$builders$8.group;
+/**
+ * v-for="... in ..."
+ * v-for="... of ..."
+ * v-for="(..., ...) in ..."
+ * v-for="(..., ...) of ..."
+ */
+
+function printVueFor(value, textToDoc) {
+ var _parseVueFor = parseVueFor(value),
+ left = _parseVueFor.left,
+ operator = _parseVueFor.operator,
+ right = _parseVueFor.right;
+
+ return concat$e([group$e(textToDoc(`function _(${left}) {}`, {
+ parser: "babel",
+ __isVueForBindingLeft: true
+ })), " ", operator, " ", textToDoc(right, {
+ parser: "__js_expression"
+ })]);
+} // modified from https://github.com/vuejs/vue/blob/v2.5.17/src/compiler/parser/index.js#L370-L387
+
+
+function parseVueFor(value) {
+ var forAliasRE = /([^]*?)\s+(in|of)\s+([^]*)/;
+ var forIteratorRE = /,([^,}\]]*)(?:,([^,}\]]*))?$/;
+ var stripParensRE = /^\(|\)$/g;
+ var inMatch = value.match(forAliasRE);
+
+ if (!inMatch) {
+ return;
+ }
+
+ var res = {};
+ res.for = inMatch[3].trim();
+ var alias = inMatch[1].trim().replace(stripParensRE, "");
+ var iteratorMatch = alias.match(forIteratorRE);
+
+ if (iteratorMatch) {
+ res.alias = alias.replace(forIteratorRE, "");
+ res.iterator1 = iteratorMatch[1].trim();
+
+ if (iteratorMatch[2]) {
+ res.iterator2 = iteratorMatch[2].trim();
+ }
+ } else {
+ res.alias = alias;
+ }
+
+ return {
+ left: `${[res.alias, res.iterator1, res.iterator2].filter(Boolean).join(",")}`,
+ operator: inMatch[2],
+ right: res.for
+ };
+}
+
+function printVueSlotScope(value, textToDoc) {
+ return textToDoc(`function _(${value}) {}`, {
+ parser: "babel",
+ __isVueSlotScope: true
+ });
+}
+
+function isVueEventBindingExpression$2(eventBindingValue) {
+ // https://github.com/vuejs/vue/blob/v2.5.17/src/compiler/codegen/events.js#L3-L4
+ // arrow function or anonymous function
+ var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/; // simple member expression chain (a, a.b, a['b'], a["b"], a[0], a[b])
+
+ var simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/; // https://github.com/vuejs/vue/blob/v2.5.17/src/compiler/helpers.js#L104
+
+ var value = eventBindingValue.trim();
+ return fnExpRE.test(value) || simplePathRE.test(value);
+}
+
+var syntaxVue = {
+ isVueEventBindingExpression: isVueEventBindingExpression$2,
+ printVueFor,
+ printVueSlotScope
+};
+
+var parseSrcset = createCommonjsModule(function (module) {
+ /**
+ * Srcset Parser
+ *
+ * By Alex Bell | MIT License
+ *
+ * JS Parser for the string value that appears in markup <img srcset="here">
+ *
+ * @returns Array [{url: _, d: _, w: _, h:_}, ...]
+ *
+ * Based super duper closely on the reference algorithm at:
+ * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute
+ *
+ * Most comments are copied in directly from the spec
+ * (except for comments in parens).
+ */
+ (function (root, factory) {
+ if ( module.exports) {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory();
+ } else {
+ // Browser globals (root is window)
+ root.parseSrcset = factory();
+ }
+ })(this, function () {
+ // 1. Let input be the value passed to this algorithm.
+ return function (input, options) {
+ var logger = options && options.logger || console; // UTILITY FUNCTIONS
+ // Manual is faster than RegEx
+ // http://bjorn.tipling.com/state-and-regular-expressions-in-javascript
+ // http://jsperf.com/whitespace-character/5
+
+ function isSpace(c) {
+ return c === "\u0020" || // space
+ c === "\u0009" || // horizontal tab
+ c === "\u000A" || // new line
+ c === "\u000C" || // form feed
+ c === "\u000D"; // carriage return
+ }
+
+ function collectCharacters(regEx) {
+ var chars,
+ match = regEx.exec(input.substring(pos));
+
+ if (match) {
+ chars = match[0];
+ pos += chars.length;
+ return chars;
+ }
+ }
+
+ var inputLength = input.length,
+ // (Don't use \s, to avoid matching non-breaking space)
+ regexLeadingSpaces = /^[ \t\n\r\u000c]+/,
+ regexLeadingCommasOrSpaces = /^[, \t\n\r\u000c]+/,
+ regexLeadingNotSpaces = /^[^ \t\n\r\u000c]+/,
+ regexTrailingCommas = /[,]+$/,
+ regexNonNegativeInteger = /^\d+$/,
+ // ( Positive or negative or unsigned integers or decimals, without or without exponents.
+ // Must include at least one digit.
+ // According to spec tests any decimal point must be followed by a digit.
+ // No leading plus sign is allowed.)
+ // https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number
+ regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,
+ url,
+ descriptors,
+ currentDescriptor,
+ state,
+ c,
+ // 2. Let position be a pointer into input, initially pointing at the start
+ // of the string.
+ pos = 0,
+ // 3. Let candidates be an initially empty source set.
+ candidates = []; // 4. Splitting loop: Collect a sequence of characters that are space
+ // characters or U+002C COMMA characters. If any U+002C COMMA characters
+ // were collected, that is a parse error.
+
+ while (true) {
+ collectCharacters(regexLeadingCommasOrSpaces); // 5. If position is past the end of input, return candidates and abort these steps.
+
+ if (pos >= inputLength) {
+ return candidates; // (we're done, this is the sole return path)
+ } // 6. Collect a sequence of characters that are not space characters,
+ // and let that be url.
+
+
+ url = collectCharacters(regexLeadingNotSpaces); // 7. Let descriptors be a new empty list.
+
+ descriptors = []; // 8. If url ends with a U+002C COMMA character (,), follow these substeps:
+ // (1). Remove all trailing U+002C COMMA characters from url. If this removed
+ // more than one character, that is a parse error.
+
+ if (url.slice(-1) === ",") {
+ url = url.replace(regexTrailingCommas, ""); // (Jump ahead to step 9 to skip tokenization and just push the candidate).
+
+ parseDescriptors(); // Otherwise, follow these substeps:
+ } else {
+ tokenize();
+ } // (close else of step 8)
+ // 16. Return to the step labeled splitting loop.
+
+ } // (Close of big while loop.)
+
+ /**
+ * Tokenizes descriptor properties prior to parsing
+ * Returns undefined.
+ */
+
+
+ function tokenize() {
+ // 8.1. Descriptor tokeniser: Skip whitespace
+ collectCharacters(regexLeadingSpaces); // 8.2. Let current descriptor be the empty string.
+
+ currentDescriptor = ""; // 8.3. Let state be in descriptor.
+
+ state = "in descriptor";
+
+ while (true) {
+ // 8.4. Let c be the character at position.
+ c = input.charAt(pos); // Do the following depending on the value of state.
+ // For the purpose of this step, "EOF" is a special character representing
+ // that position is past the end of input.
+ // In descriptor
+
+ if (state === "in descriptor") {
+ // Do the following, depending on the value of c:
+ // Space character
+ // If current descriptor is not empty, append current descriptor to
+ // descriptors and let current descriptor be the empty string.
+ // Set state to after descriptor.
+ if (isSpace(c)) {
+ if (currentDescriptor) {
+ descriptors.push(currentDescriptor);
+ currentDescriptor = "";
+ state = "after descriptor";
+ } // U+002C COMMA (,)
+ // Advance position to the next character in input. If current descriptor
+ // is not empty, append current descriptor to descriptors. Jump to the step
+ // labeled descriptor parser.
+
+ } else if (c === ",") {
+ pos += 1;
+
+ if (currentDescriptor) {
+ descriptors.push(currentDescriptor);
+ }
+
+ parseDescriptors();
+ return; // U+0028 LEFT PARENTHESIS (()
+ // Append c to current descriptor. Set state to in parens.
+ } else if (c === "\u0028") {
+ currentDescriptor = currentDescriptor + c;
+ state = "in parens"; // EOF
+ // If current descriptor is not empty, append current descriptor to
+ // descriptors. Jump to the step labeled descriptor parser.
+ } else if (c === "") {
+ if (currentDescriptor) {
+ descriptors.push(currentDescriptor);
+ }
+
+ parseDescriptors();
+ return; // Anything else
+ // Append c to current descriptor.
+ } else {
+ currentDescriptor = currentDescriptor + c;
+ } // (end "in descriptor"
+ // In parens
+
+ } else if (state === "in parens") {
+ // U+0029 RIGHT PARENTHESIS ())
+ // Append c to current descriptor. Set state to in descriptor.
+ if (c === ")") {
+ currentDescriptor = currentDescriptor + c;
+ state = "in descriptor"; // EOF
+ // Append current descriptor to descriptors. Jump to the step labeled
+ // descriptor parser.
+ } else if (c === "") {
+ descriptors.push(currentDescriptor);
+ parseDescriptors();
+ return; // Anything else
+ // Append c to current descriptor.
+ } else {
+ currentDescriptor = currentDescriptor + c;
+ } // After descriptor
+
+ } else if (state === "after descriptor") {
+ // Do the following, depending on the value of c:
+ // Space character: Stay in this state.
+ if (isSpace(c)) ; else if (c === "") {
+ parseDescriptors();
+ return; // Anything else
+ // Set state to in descriptor. Set position to the previous character in input.
+ } else {
+ state = "in descriptor";
+ pos -= 1;
+ }
+ } // Advance position to the next character in input.
+
+
+ pos += 1; // Repeat this step.
+ } // (close while true loop)
+
+ }
+ /**
+ * Adds descriptor properties to a candidate, pushes to the candidates array
+ * @return undefined
+ */
+ // Declared outside of the while loop so that it's only created once.
+
+
+ function parseDescriptors() {
+ // 9. Descriptor parser: Let error be no.
+ var pError = false,
+ // 10. Let width be absent.
+ // 11. Let density be absent.
+ // 12. Let future-compat-h be absent. (We're implementing it now as h)
+ w,
+ d,
+ h,
+ i,
+ candidate = {},
+ desc,
+ lastChar,
+ value,
+ intVal,
+ floatVal; // 13. For each descriptor in descriptors, run the appropriate set of steps
+ // from the following list:
+
+ for (i = 0; i < descriptors.length; i++) {
+ desc = descriptors[i];
+ lastChar = desc[desc.length - 1];
+ value = desc.substring(0, desc.length - 1);
+ intVal = parseInt(value, 10);
+ floatVal = parseFloat(value); // If the descriptor consists of a valid non-negative integer followed by
+ // a U+0077 LATIN SMALL LETTER W character
+
+ if (regexNonNegativeInteger.test(value) && lastChar === "w") {
+ // If width and density are not both absent, then let error be yes.
+ if (w || d) {
+ pError = true;
+ } // Apply the rules for parsing non-negative integers to the descriptor.
+ // If the result is zero, let error be yes.
+ // Otherwise, let width be the result.
+
+
+ if (intVal === 0) {
+ pError = true;
+ } else {
+ w = intVal;
+ } // If the descriptor consists of a valid floating-point number followed by
+ // a U+0078 LATIN SMALL LETTER X character
+
+ } else if (regexFloatingPoint.test(value) && lastChar === "x") {
+ // If width, density and future-compat-h are not all absent, then let error
+ // be yes.
+ if (w || d || h) {
+ pError = true;
+ } // Apply the rules for parsing floating-point number values to the descriptor.
+ // If the result is less than zero, let error be yes. Otherwise, let density
+ // be the result.
+
+
+ if (floatVal < 0) {
+ pError = true;
+ } else {
+ d = floatVal;
+ } // If the descriptor consists of a valid non-negative integer followed by
+ // a U+0068 LATIN SMALL LETTER H character
+
+ } else if (regexNonNegativeInteger.test(value) && lastChar === "h") {
+ // If height and density are not both absent, then let error be yes.
+ if (h || d) {
+ pError = true;
+ } // Apply the rules for parsing non-negative integers to the descriptor.
+ // If the result is zero, let error be yes. Otherwise, let future-compat-h
+ // be the result.
+
+
+ if (intVal === 0) {
+ pError = true;
+ } else {
+ h = intVal;
+ } // Anything else, Let error be yes.
+
+ } else {
+ pError = true;
+ }
+ } // (close step 13 for loop)
+ // 15. If error is still no, then append a new image source to candidates whose
+ // URL is url, associated with a width width if not absent and a pixel
+ // density density if not absent. Otherwise, there is a parse error.
+
+
+ if (!pError) {
+ candidate.url = url;
+
+ if (w) {
+ candidate.w = w;
+ }
+
+ if (d) {
+ candidate.d = d;
+ }
+
+ if (h) {
+ candidate.h = h;
+ }
+
+ candidates.push(candidate);
+ } else if (logger && logger.error) {
+ logger.error("Invalid srcset descriptor found in '" + input + "' at '" + desc + "'.");
+ }
+ } // (close parseDescriptors fn)
+
+ };
+ });
+});
+
+var _require$$0$builders$9 = doc.builders,
+ concat$f = _require$$0$builders$9.concat,
+ ifBreak$6 = _require$$0$builders$9.ifBreak,
+ join$a = _require$$0$builders$9.join,
+ line$7 = _require$$0$builders$9.line;
+
+function printImgSrcset(value) {
+ var srcset = parseSrcset(value, {
+ logger: {
+ error(message) {
+ throw new Error(message);
+ }
+
+ }
+ });
+ var hasW = srcset.some(function (src) {
+ return src.w;
+ });
+ var hasH = srcset.some(function (src) {
+ return src.h;
+ });
+ var hasX = srcset.some(function (src) {
+ return src.d;
+ });
+
+ if (hasW + hasH + hasX !== 1) {
+ throw new Error(`Mixed descriptor in srcset is not supported`);
+ }
+
+ var key = hasW ? "w" : hasH ? "h" : "d";
+ var unit = hasW ? "w" : hasH ? "h" : "x";
+
+ var getMax = function getMax(values) {
+ return Math.max.apply(Math, values);
+ };
+
+ var urls = srcset.map(function (src) {
+ return src.url;
+ });
+ var maxUrlLength = getMax(urls.map(function (url) {
+ return url.length;
+ }));
+ var descriptors = srcset.map(function (src) {
+ return src[key];
+ }).map(function (descriptor) {
+ return descriptor ? descriptor.toString() : "";
+ });
+ var descriptorLeftLengths = descriptors.map(function (descriptor) {
+ var index = descriptor.indexOf(".");
+ return index === -1 ? descriptor.length : index;
+ });
+ var maxDescriptorLeftLength = getMax(descriptorLeftLengths);
+ return join$a(concat$f([",", line$7]), urls.map(function (url, index) {
+ var parts = [url];
+ var descriptor = descriptors[index];
+
+ if (descriptor) {
+ var urlPadding = maxUrlLength - url.length + 1;
+ var descriptorPadding = maxDescriptorLeftLength - descriptorLeftLengths[index];
+ var alignment = " ".repeat(urlPadding + descriptorPadding);
+ parts.push(ifBreak$6(alignment, " "), descriptor + unit);
+ }
+
+ return concat$f(parts);
+ }));
+}
+
+var syntaxAttribute = {
+ printImgSrcset
+};
+
+var builders = doc.builders,
+ _require$$0$utils = doc.utils,
+ stripTrailingHardline$2 = _require$$0$utils.stripTrailingHardline,
+ mapDoc$7 = _require$$0$utils.mapDoc;
+var breakParent$4 = builders.breakParent,
+ dedentToRoot$2 = builders.dedentToRoot,
+ fill$5 = builders.fill,
+ group$f = builders.group,
+ hardline$c = builders.hardline,
+ ifBreak$7 = builders.ifBreak,
+ indent$9 = builders.indent,
+ join$b = builders.join,
+ line$8 = builders.line,
+ literalline$6 = builders.literalline,
+ markAsRoot$4 = builders.markAsRoot,
+ softline$7 = builders.softline;
+var countChars$1 = utils$5.countChars,
+ countParents$1 = utils$5.countParents,
+ dedentString$1 = utils$5.dedentString,
+ forceBreakChildren$1 = utils$5.forceBreakChildren,
+ forceBreakContent$1 = utils$5.forceBreakContent,
+ forceNextEmptyLine$1 = utils$5.forceNextEmptyLine,
+ getLastDescendant$1 = utils$5.getLastDescendant,
+ getPrettierIgnoreAttributeCommentData$1 = utils$5.getPrettierIgnoreAttributeCommentData,
+ hasPrettierIgnore$4 = utils$5.hasPrettierIgnore,
+ inferScriptParser$1 = utils$5.inferScriptParser,
+ isScriptLikeTag$1 = utils$5.isScriptLikeTag,
+ isTextLikeNode$1 = utils$5.isTextLikeNode,
+ normalizeParts$2 = utils$5.normalizeParts,
+ preferHardlineAsLeadingSpaces$1 = utils$5.preferHardlineAsLeadingSpaces,
+ shouldNotPrintClosingTag$1 = utils$5.shouldNotPrintClosingTag,
+ shouldPreserveContent$1 = utils$5.shouldPreserveContent,
+ unescapeQuoteEntities$1 = utils$5.unescapeQuoteEntities;
+var replaceEndOfLineWith$2 = util.replaceEndOfLineWith;
+var insertPragma$7 = pragma$4.insertPragma;
+var printVueFor$1 = syntaxVue.printVueFor,
+ printVueSlotScope$1 = syntaxVue.printVueSlotScope,
+ isVueEventBindingExpression$3 = syntaxVue.isVueEventBindingExpression;
+var printImgSrcset$1 = syntaxAttribute.printImgSrcset;
+
+function concat$g(parts) {
+ var newParts = normalizeParts$2(parts);
+ return newParts.length === 0 ? "" : newParts.length === 1 ? newParts[0] : builders.concat(newParts);
+}
+
+function embed$4(path, print, textToDoc, options) {
+ var node = path.getValue();
+
+ switch (node.type) {
+ case "text":
+ {
+ if (isScriptLikeTag$1(node.parent)) {
+ var parser = inferScriptParser$1(node.parent);
+
+ if (parser) {
+ var value = parser === "markdown" ? dedentString$1(node.value.replace(/^[^\S\n]*?\n/, "")) : node.value;
+ return builders.concat([concat$g([breakParent$4, printOpeningTagPrefix(node, options), stripTrailingHardline$2(textToDoc(value, {
+ parser
+ })), printClosingTagSuffix(node, options)])]);
+ }
+ } else if (node.parent.type === "interpolation") {
+ return concat$g([indent$9(concat$g([line$8, textToDoc(node.value, Object.assign({
+ __isInHtmlInterpolation: true // to avoid unexpected `}}`
+
+ }, options.parser === "angular" ? {
+ parser: "__ng_interpolation",
+ trailingComma: "none"
+ } : options.parser === "vue" ? {
+ parser: "__vue_expression"
+ } : {
+ parser: "__js_expression"
+ }))])), node.parent.next && needsToBorrowPrevClosingTagEndMarker(node.parent.next) ? " " : line$8]);
+ }
+
+ break;
+ }
+
+ case "attribute":
+ {
+ if (!node.value) {
+ break;
+ } // lit-html: html`<my-element obj=${obj}></my-element>`
+
+
+ if (/^PRETTIER_HTML_PLACEHOLDER_\d+_\d+_IN_JS$/.test(options.originalText.slice(node.valueSpan.start.offset, node.valueSpan.end.offset))) {
+ return concat$g([node.rawName, "=", node.value]);
+ } // lwc: html`<my-element data-for={value}></my-element>`
+
+
+ if (options.parser === "lwc") {
+ var interpolationRegex = /^\{[\s\S]*\}$/;
+
+ if (interpolationRegex.test(options.originalText.slice(node.valueSpan.start.offset, node.valueSpan.end.offset))) {
+ return concat$g([node.rawName, "=", node.value]);
+ }
+ }
+
+ var embeddedAttributeValueDoc = printEmbeddedAttributeValue(node, function (code, opts) {
+ return (// strictly prefer single quote to avoid unnecessary html entity escape
+ textToDoc(code, Object.assign({
+ __isInHtmlAttribute: true
+ }, opts))
+ );
+ }, options);
+
+ if (embeddedAttributeValueDoc) {
+ return concat$g([node.rawName, '="', group$f(mapDoc$7(embeddedAttributeValueDoc, function (doc) {
+ return typeof doc === "string" ? doc.replace(/"/g, "&quot;") : doc;
+ })), '"']);
+ }
+
+ break;
+ }
+
+ case "yaml":
+ return markAsRoot$4(concat$g(["---", hardline$c, node.value.trim().length === 0 ? "" : textToDoc(node.value, {
+ parser: "yaml"
+ }), "---"]));
+ }
+}
+
+function genericPrint$5(path, options, print) {
+ var node = path.getValue();
+
+ switch (node.type) {
+ case "root":
+ // use original concat to not break stripTrailingHardline
+ return builders.concat([group$f(printChildren$2(path, options, print)), hardline$c]);
+
+ case "element":
+ case "ieConditionalComment":
+ {
+ /**
+ * do not break:
+ *
+ * <div>{{
+ * ~
+ * interpolation
+ * }}</div>
+ * ~
+ *
+ * exception: break if the opening tag breaks
+ *
+ * <div
+ * long
+ * ~
+ * >{{
+ * interpolation
+ * }}</div
+ * ~
+ * >
+ */
+ var shouldHugContent = node.children.length === 1 && node.firstChild.type === "interpolation" && node.firstChild.isLeadingSpaceSensitive && !node.firstChild.hasLeadingSpaces && node.lastChild.isTrailingSpaceSensitive && !node.lastChild.hasTrailingSpaces;
+ var attrGroupId = Symbol("element-attr-group-id");
+ return concat$g([group$f(concat$g([group$f(printOpeningTag(path, options, print), {
+ id: attrGroupId
+ }), node.children.length === 0 ? node.hasDanglingSpaces && node.isDanglingSpaceSensitive ? line$8 : "" : concat$g([forceBreakContent$1(node) ? breakParent$4 : "", function (childrenDoc) {
+ return shouldHugContent ? ifBreak$7(indent$9(childrenDoc), childrenDoc, {
+ groupId: attrGroupId
+ }) : isScriptLikeTag$1(node) && node.parent.type === "root" && options.parser === "vue" && !options.vueIndentScriptAndStyle ? childrenDoc : indent$9(childrenDoc);
+ }(concat$g([shouldHugContent ? ifBreak$7(softline$7, "", {
+ groupId: attrGroupId
+ }) : node.firstChild.hasLeadingSpaces && node.firstChild.isLeadingSpaceSensitive ? line$8 : node.firstChild.type === "text" && node.isWhitespaceSensitive && node.isIndentationSensitive ? dedentToRoot$2(softline$7) : softline$7, printChildren$2(path, options, print)])), (node.next ? needsToBorrowPrevClosingTagEndMarker(node.next) : needsToBorrowLastChildClosingTagEndMarker(node.parent)) ? node.lastChild.hasTrailingSpaces && node.lastChild.isTrailingSpaceSensitive ? " " : "" : shouldHugContent ? ifBreak$7(softline$7, "", {
+ groupId: attrGroupId
+ }) : node.lastChild.hasTrailingSpaces && node.lastChild.isTrailingSpaceSensitive ? line$8 : (node.lastChild.type === "comment" || node.lastChild.type === "text" && node.isWhitespaceSensitive && node.isIndentationSensitive) && new RegExp(`\\n\\s{${options.tabWidth * countParents$1(path, function (n) {
+ return n.parent && n.parent.type !== "root";
+ })}}$`).test(node.lastChild.value) ?
+ /**
+ * <div>
+ * <pre>
+ * something
+ * </pre>
+ * ~
+ * </div>
+ */
+ "" : softline$7])])), printClosingTag(node, options)]);
+ }
+
+ case "ieConditionalStartComment":
+ case "ieConditionalEndComment":
+ return concat$g([printOpeningTagStart(node), printClosingTagEnd(node)]);
+
+ case "interpolation":
+ return concat$g([printOpeningTagStart(node, options), concat$g(path.map(print, "children")), printClosingTagEnd(node, options)]);
+
+ case "text":
+ {
+ if (node.parent.type === "interpolation") {
+ // replace the trailing literalline with hardline for better readability
+ var trailingNewlineRegex = /\n[^\S\n]*?$/;
+ var hasTrailingNewline = trailingNewlineRegex.test(node.value);
+ var value = hasTrailingNewline ? node.value.replace(trailingNewlineRegex, "") : node.value;
+ return concat$g([concat$g(replaceEndOfLineWith$2(value, literalline$6)), hasTrailingNewline ? hardline$c : ""]);
+ }
+
+ return fill$5(normalizeParts$2([].concat(printOpeningTagPrefix(node, options), getTextValueParts(node), printClosingTagSuffix(node, options))));
+ }
+
+ case "docType":
+ return concat$g([group$f(concat$g([printOpeningTagStart(node, options), " ", node.value.replace(/^html\b/i, "html").replace(/\s+/g, " ")])), printClosingTagEnd(node, options)]);
+
+ case "comment":
+ {
+ return concat$g([printOpeningTagPrefix(node, options), concat$g(replaceEndOfLineWith$2(options.originalText.slice(options.locStart(node), options.locEnd(node)), literalline$6)), printClosingTagSuffix(node, options)]);
+ }
+
+ case "attribute":
+ {
+ if (node.value === null) {
+ return node.rawName;
+ }
+
+ var _value = unescapeQuoteEntities$1(node.value);
+
+ var singleQuoteCount = countChars$1(_value, "'");
+ var doubleQuoteCount = countChars$1(_value, '"');
+ var quote = singleQuoteCount < doubleQuoteCount ? "'" : '"';
+ return concat$g([node.rawName, concat$g(["=", quote, concat$g(replaceEndOfLineWith$2(quote === '"' ? _value.replace(/"/g, "&quot;") : _value.replace(/'/g, "&apos;"), literalline$6)), quote])]);
+ }
+
+ case "yaml":
+ case "toml":
+ return concat$g(replaceEndOfLineWith$2(node.raw, literalline$6));
+
+ default:
+ throw new Error(`Unexpected node type ${node.type}`);
+ }
+}
+
+function printChildren$2(path, options, print) {
+ var node = path.getValue();
+
+ if (forceBreakChildren$1(node)) {
+ return concat$g([breakParent$4, concat$g(path.map(function (childPath) {
+ var childNode = childPath.getValue();
+ var prevBetweenLine = !childNode.prev ? "" : printBetweenLine(childNode.prev, childNode);
+ return concat$g([!prevBetweenLine ? "" : concat$g([prevBetweenLine, forceNextEmptyLine$1(childNode.prev) ? hardline$c : ""]), printChild(childPath)]);
+ }, "children"))]);
+ }
+
+ var groupIds = node.children.map(function () {
+ return Symbol("");
+ });
+ return concat$g(path.map(function (childPath, childIndex) {
+ var childNode = childPath.getValue();
+
+ if (isTextLikeNode$1(childNode)) {
+ if (childNode.prev && isTextLikeNode$1(childNode.prev)) {
+ var _prevBetweenLine = printBetweenLine(childNode.prev, childNode);
+
+ if (_prevBetweenLine) {
+ if (forceNextEmptyLine$1(childNode.prev)) {
+ return concat$g([hardline$c, hardline$c, printChild(childPath)]);
+ }
+
+ return concat$g([_prevBetweenLine, printChild(childPath)]);
+ }
+ }
+
+ return printChild(childPath);
+ }
+
+ var prevParts = [];
+ var leadingParts = [];
+ var trailingParts = [];
+ var nextParts = [];
+ var prevBetweenLine = childNode.prev ? printBetweenLine(childNode.prev, childNode) : "";
+ var nextBetweenLine = childNode.next ? printBetweenLine(childNode, childNode.next) : "";
+
+ if (prevBetweenLine) {
+ if (forceNextEmptyLine$1(childNode.prev)) {
+ prevParts.push(hardline$c, hardline$c);
+ } else if (prevBetweenLine === hardline$c) {
+ prevParts.push(hardline$c);
+ } else {
+ if (isTextLikeNode$1(childNode.prev)) {
+ leadingParts.push(prevBetweenLine);
+ } else {
+ leadingParts.push(ifBreak$7("", softline$7, {
+ groupId: groupIds[childIndex - 1]
+ }));
+ }
+ }
+ }
+
+ if (nextBetweenLine) {
+ if (forceNextEmptyLine$1(childNode)) {
+ if (isTextLikeNode$1(childNode.next)) {
+ nextParts.push(hardline$c, hardline$c);
+ }
+ } else if (nextBetweenLine === hardline$c) {
+ if (isTextLikeNode$1(childNode.next)) {
+ nextParts.push(hardline$c);
+ }
+ } else {
+ trailingParts.push(nextBetweenLine);
+ }
+ }
+
+ return concat$g([].concat(prevParts, group$f(concat$g([concat$g(leadingParts), group$f(concat$g([printChild(childPath), concat$g(trailingParts)]), {
+ id: groupIds[childIndex]
+ })])), nextParts));
+ }, "children"));
+
+ function printChild(childPath) {
+ var child = childPath.getValue();
+
+ if (hasPrettierIgnore$4(child)) {
+ return concat$g([].concat(printOpeningTagPrefix(child, options), replaceEndOfLineWith$2(options.originalText.slice(options.locStart(child) + (child.prev && needsToBorrowNextOpeningTagStartMarker(child.prev) ? printOpeningTagStartMarker(child).length : 0), options.locEnd(child) - (child.next && needsToBorrowPrevClosingTagEndMarker(child.next) ? printClosingTagEndMarker(child, options).length : 0)), literalline$6), printClosingTagSuffix(child, options)));
+ }
+
+ if (shouldPreserveContent$1(child, options)) {
+ return concat$g([].concat(printOpeningTagPrefix(child, options), group$f(printOpeningTag(childPath, options, print)), replaceEndOfLineWith$2(options.originalText.slice(child.startSourceSpan.end.offset + (child.firstChild && needsToBorrowParentOpeningTagEndMarker(child.firstChild) ? -printOpeningTagEndMarker(child).length : 0), child.endSourceSpan.start.offset + (child.lastChild && needsToBorrowParentClosingTagStartMarker(child.lastChild) ? printClosingTagStartMarker(child, options).length : needsToBorrowLastChildClosingTagEndMarker(child) ? -printClosingTagEndMarker(child.lastChild, options).length : 0)), literalline$6), printClosingTag(child, options), printClosingTagSuffix(child, options)));
+ }
+
+ return print(childPath);
+ }
+
+ function printBetweenLine(prevNode, nextNode) {
+ return isTextLikeNode$1(prevNode) && isTextLikeNode$1(nextNode) ? prevNode.isTrailingSpaceSensitive ? prevNode.hasTrailingSpaces ? preferHardlineAsLeadingSpaces$1(nextNode) ? hardline$c : line$8 : "" : preferHardlineAsLeadingSpaces$1(nextNode) ? hardline$c : softline$7 : needsToBorrowNextOpeningTagStartMarker(prevNode) && (
+ /**
+ * 123<a
+ * ~
+ * ><b>
+ */
+ nextNode.firstChild ||
+ /**
+ * 123<!--
+ * ~
+ * -->
+ */
+ nextNode.isSelfClosing ||
+ /**
+ * 123<span
+ * ~
+ * attr
+ */
+ nextNode.type === "element" && nextNode.attrs.length !== 0) ||
+ /**
+ * <img
+ * src="long"
+ * ~
+ * />123
+ */
+ prevNode.type === "element" && prevNode.isSelfClosing && needsToBorrowPrevClosingTagEndMarker(nextNode) ? "" : !nextNode.isLeadingSpaceSensitive || preferHardlineAsLeadingSpaces$1(nextNode) ||
+ /**
+ * Want to write us a letter? Use our<a
+ * ><b><a>mailing address</a></b></a
+ * ~
+ * >.
+ */
+ needsToBorrowPrevClosingTagEndMarker(nextNode) && prevNode.lastChild && needsToBorrowParentClosingTagStartMarker(prevNode.lastChild) && prevNode.lastChild.lastChild && needsToBorrowParentClosingTagStartMarker(prevNode.lastChild.lastChild) ? hardline$c : nextNode.hasLeadingSpaces ? line$8 : softline$7;
+ }
+}
+
+function printOpeningTag(path, options, print) {
+ var node = path.getValue();
+ var forceNotToBreakAttrContent = node.type === "element" && node.fullName === "script" && node.attrs.length === 1 && node.attrs[0].fullName === "src" && node.children.length === 0;
+ return concat$g([printOpeningTagStart(node, options), !node.attrs || node.attrs.length === 0 ? node.isSelfClosing ?
+ /**
+ * <br />
+ * ^
+ */
+ " " : "" : concat$g([indent$9(concat$g([forceNotToBreakAttrContent ? " " : line$8, join$b(line$8, function (ignoreAttributeData) {
+ var hasPrettierIgnoreAttribute = typeof ignoreAttributeData === "boolean" ? function () {
+ return ignoreAttributeData;
+ } : Array.isArray(ignoreAttributeData) ? function (attr) {
+ return ignoreAttributeData.indexOf(attr.rawName) !== -1;
+ } : function () {
+ return false;
+ };
+ return path.map(function (attrPath) {
+ var attr = attrPath.getValue();
+ return hasPrettierIgnoreAttribute(attr) ? concat$g(replaceEndOfLineWith$2(options.originalText.slice(options.locStart(attr), options.locEnd(attr)), literalline$6)) : print(attrPath);
+ }, "attrs");
+ }(node.prev && node.prev.type === "comment" && getPrettierIgnoreAttributeCommentData$1(node.prev.value)))])),
+ /**
+ * 123<a
+ * attr
+ * ~
+ * >456
+ */
+ node.firstChild && needsToBorrowParentOpeningTagEndMarker(node.firstChild) ||
+ /**
+ * <span
+ * >123<meta
+ * ~
+ * /></span>
+ */
+ node.isSelfClosing && needsToBorrowLastChildClosingTagEndMarker(node.parent) ? "" : node.isSelfClosing ? forceNotToBreakAttrContent ? " " : line$8 : forceNotToBreakAttrContent ? "" : softline$7]), node.isSelfClosing ? "" : printOpeningTagEnd(node)]);
+}
+
+function printOpeningTagStart(node, options) {
+ return node.prev && needsToBorrowNextOpeningTagStartMarker(node.prev) ? "" : concat$g([printOpeningTagPrefix(node, options), printOpeningTagStartMarker(node)]);
+}
+
+function printOpeningTagEnd(node) {
+ return node.firstChild && needsToBorrowParentOpeningTagEndMarker(node.firstChild) ? "" : printOpeningTagEndMarker(node);
+}
+
+function printClosingTag(node, options) {
+ return concat$g([node.isSelfClosing ? "" : printClosingTagStart(node, options), printClosingTagEnd(node, options)]);
+}
+
+function printClosingTagStart(node, options) {
+ return node.lastChild && needsToBorrowParentClosingTagStartMarker(node.lastChild) ? "" : concat$g([printClosingTagPrefix(node, options), printClosingTagStartMarker(node, options)]);
+}
+
+function printClosingTagEnd(node, options) {
+ return (node.next ? needsToBorrowPrevClosingTagEndMarker(node.next) : needsToBorrowLastChildClosingTagEndMarker(node.parent)) ? "" : concat$g([printClosingTagEndMarker(node, options), printClosingTagSuffix(node, options)]);
+}
+
+function needsToBorrowNextOpeningTagStartMarker(node) {
+ /**
+ * 123<p
+ * ^^
+ * >
+ */
+ return node.next && !isTextLikeNode$1(node.next) && isTextLikeNode$1(node) && node.isTrailingSpaceSensitive && !node.hasTrailingSpaces;
+}
+
+function needsToBorrowParentOpeningTagEndMarker(node) {
+ /**
+ * <p
+ * >123
+ * ^
+ *
+ * <p
+ * ><a
+ * ^
+ */
+ return !node.prev && node.isLeadingSpaceSensitive && !node.hasLeadingSpaces;
+}
+
+function needsToBorrowPrevClosingTagEndMarker(node) {
+ /**
+ * <p></p
+ * >123
+ * ^
+ *
+ * <p></p
+ * ><a
+ * ^
+ */
+ return node.prev && !isTextLikeNode$1(node.prev) && node.isLeadingSpaceSensitive && !node.hasLeadingSpaces;
+}
+
+function needsToBorrowLastChildClosingTagEndMarker(node) {
+ /**
+ * <p
+ * ><a></a
+ * ></p
+ * ^
+ * >
+ */
+ return node.lastChild && node.lastChild.isTrailingSpaceSensitive && !node.lastChild.hasTrailingSpaces && !isTextLikeNode$1(getLastDescendant$1(node.lastChild));
+}
+
+function needsToBorrowParentClosingTagStartMarker(node) {
+ /**
+ * <p>
+ * 123</p
+ * ^^^
+ * >
+ *
+ * 123</b
+ * ></a
+ * ^^^
+ * >
+ */
+ return !node.next && !node.hasTrailingSpaces && node.isTrailingSpaceSensitive && isTextLikeNode$1(getLastDescendant$1(node));
+}
+
+function printOpeningTagPrefix(node, options) {
+ return needsToBorrowParentOpeningTagEndMarker(node) ? printOpeningTagEndMarker(node.parent) : needsToBorrowPrevClosingTagEndMarker(node) ? printClosingTagEndMarker(node.prev, options) : "";
+}
+
+function printClosingTagPrefix(node, options) {
+ return needsToBorrowLastChildClosingTagEndMarker(node) ? printClosingTagEndMarker(node.lastChild, options) : "";
+}
+
+function printClosingTagSuffix(node, options) {
+ return needsToBorrowParentClosingTagStartMarker(node) ? printClosingTagStartMarker(node.parent, options) : needsToBorrowNextOpeningTagStartMarker(node) ? printOpeningTagStartMarker(node.next) : "";
+}
+
+function printOpeningTagStartMarker(node) {
+ switch (node.type) {
+ case "ieConditionalComment":
+ case "ieConditionalStartComment":
+ return `<!--[if ${node.condition}`;
+
+ case "ieConditionalEndComment":
+ return `<!--<!`;
+
+ case "interpolation":
+ return "{{";
+
+ case "docType":
+ return "<!DOCTYPE";
+
+ case "element":
+ if (node.condition) {
+ return `<!--[if ${node.condition}]><!--><${node.rawName}`;
+ }
+
+ // fall through
+
+ default:
+ return `<${node.rawName}`;
+ }
+}
+
+function printOpeningTagEndMarker(node) {
+ assert$1(!node.isSelfClosing);
+
+ switch (node.type) {
+ case "ieConditionalComment":
+ return "]>";
+
+ case "element":
+ if (node.condition) {
+ return `><!--<![endif]-->`;
+ }
+
+ // fall through
+
+ default:
+ return `>`;
+ }
+}
+
+function printClosingTagStartMarker(node, options) {
+ assert$1(!node.isSelfClosing);
+
+ if (shouldNotPrintClosingTag$1(node, options)) {
+ return "";
+ }
+
+ switch (node.type) {
+ case "ieConditionalComment":
+ return "<!";
+
+ case "element":
+ if (node.hasHtmComponentClosingTag) {
+ return "<//";
+ }
+
+ // fall through
+
+ default:
+ return `</${node.rawName}`;
+ }
+}
+
+function printClosingTagEndMarker(node, options) {
+ if (shouldNotPrintClosingTag$1(node, options)) {
+ return "";
+ }
+
+ switch (node.type) {
+ case "ieConditionalComment":
+ case "ieConditionalEndComment":
+ return `[endif]-->`;
+
+ case "ieConditionalStartComment":
+ return `]><!-->`;
+
+ case "interpolation":
+ return "}}";
+
+ case "element":
+ if (node.isSelfClosing) {
+ return "/>";
+ }
+
+ // fall through
+
+ default:
+ return ">";
+ }
+}
+
+function getTextValueParts(node) {
+ var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : node.value;
+ return node.parent.isWhitespaceSensitive ? node.parent.isIndentationSensitive ? replaceEndOfLineWith$2(value, literalline$6) : replaceEndOfLineWith$2(dedentString$1(value.replace(/^\s*?\n|\n\s*?$/g, "")), hardline$c) : // https://infra.spec.whatwg.org/#ascii-whitespace
+ join$b(line$8, value.split(/[\t\n\f\r ]+/)).parts;
+}
+
+function printEmbeddedAttributeValue(node, originalTextToDoc, options) {
+ var isKeyMatched = function isKeyMatched(patterns) {
+ return new RegExp(patterns.join("|")).test(node.fullName);
+ };
+
+ var getValue = function getValue() {
+ return unescapeQuoteEntities$1(node.value);
+ };
+
+ var shouldHug = false;
+
+ var __onHtmlBindingRoot = function __onHtmlBindingRoot(root) {
+ var rootNode = root.type === "NGRoot" ? root.node.type === "NGMicrosyntax" && root.node.body.length === 1 && root.node.body[0].type === "NGMicrosyntaxExpression" ? root.node.body[0].expression : root.node : root.type === "JsExpressionRoot" ? root.node : root;
+
+ if (rootNode && (rootNode.type === "ObjectExpression" || rootNode.type === "ArrayExpression")) {
+ shouldHug = true;
+ }
+ };
+
+ var printHug = function printHug(doc) {
+ return group$f(doc);
+ };
+
+ var printExpand = function printExpand(doc) {
+ return group$f(concat$g([indent$9(concat$g([softline$7, doc])), softline$7]));
+ };
+
+ var printMaybeHug = function printMaybeHug(doc) {
+ return shouldHug ? printHug(doc) : printExpand(doc);
+ };
+
+ var textToDoc = function textToDoc(code, opts) {
+ return originalTextToDoc(code, Object.assign({
+ __onHtmlBindingRoot
+ }, opts));
+ };
+
+ if (node.fullName === "srcset" && (node.parent.fullName === "img" || node.parent.fullName === "source")) {
+ return printExpand(printImgSrcset$1(getValue()));
+ }
+
+ if (options.parser === "vue") {
+ if (node.fullName === "v-for") {
+ return printVueFor$1(getValue(), textToDoc);
+ }
+
+ if (node.fullName === "slot-scope") {
+ return printVueSlotScope$1(getValue(), textToDoc);
+ }
+ /**
+ * @click="jsStatement"
+ * @click="jsExpression"
+ * v-on:click="jsStatement"
+ * v-on:click="jsExpression"
+ */
+
+
+ var vueEventBindingPatterns = ["^@", "^v-on:"];
+ /**
+ * :class="vueExpression"
+ * v-bind:id="vueExpression"
+ */
+
+ var vueExpressionBindingPatterns = ["^:", "^v-bind:"];
+ /**
+ * v-if="jsExpression"
+ */
+
+ var jsExpressionBindingPatterns = ["^v-"];
+
+ if (isKeyMatched(vueEventBindingPatterns)) {
+ var value = getValue();
+ return printMaybeHug(isVueEventBindingExpression$3(value) ? textToDoc(value, {
+ parser: "__js_expression"
+ }) : stripTrailingHardline$2(textToDoc(value, {
+ parser: "__vue_event_binding"
+ })));
+ }
+
+ if (isKeyMatched(vueExpressionBindingPatterns)) {
+ return printMaybeHug(textToDoc(getValue(), {
+ parser: "__vue_expression"
+ }));
+ }
+
+ if (isKeyMatched(jsExpressionBindingPatterns)) {
+ return printMaybeHug(textToDoc(getValue(), {
+ parser: "__js_expression"
+ }));
+ }
+ }
+
+ if (options.parser === "angular") {
+ var ngTextToDoc = function ngTextToDoc(code, opts) {
+ return (// angular does not allow trailing comma
+ textToDoc(code, Object.assign({
+ trailingComma: "none"
+ }, opts))
+ );
+ };
+ /**
+ * *directive="angularDirective"
+ */
+
+
+ var ngDirectiveBindingPatterns = ["^\\*"];
+ /**
+ * (click)="angularStatement"
+ * on-click="angularStatement"
+ */
+
+ var ngStatementBindingPatterns = ["^\\(.+\\)$", "^on-"];
+ /**
+ * [target]="angularExpression"
+ * bind-target="angularExpression"
+ * [(target)]="angularExpression"
+ * bindon-target="angularExpression"
+ */
+
+ var ngExpressionBindingPatterns = ["^\\[.+\\]$", "^bind(on)?-"];
+ /**
+ * i18n="longDescription"
+ * i18n-attr="longDescription"
+ */
+
+ var ngI18nPatterns = ["^i18n(-.+)?$"];
+
+ if (isKeyMatched(ngStatementBindingPatterns)) {
+ return printMaybeHug(ngTextToDoc(getValue(), {
+ parser: "__ng_action"
+ }));
+ }
+
+ if (isKeyMatched(ngExpressionBindingPatterns)) {
+ return printMaybeHug(ngTextToDoc(getValue(), {
+ parser: "__ng_binding"
+ }));
+ }
+
+ if (isKeyMatched(ngI18nPatterns)) {
+ return printExpand(fill$5(getTextValueParts(node, getValue())));
+ }
+
+ if (isKeyMatched(ngDirectiveBindingPatterns)) {
+ return printMaybeHug(ngTextToDoc(getValue(), {
+ parser: "__ng_directive"
+ }));
+ }
+
+ var interpolationRegex = /\{\{([\s\S]+?)\}\}/g;
+
+ var _value2 = getValue();
+
+ if (interpolationRegex.test(_value2)) {
+ var parts = [];
+
+ _value2.split(interpolationRegex).forEach(function (part, index) {
+ if (index % 2 === 0) {
+ parts.push(concat$g(replaceEndOfLineWith$2(part, literalline$6)));
+ } else {
+ try {
+ parts.push(group$f(concat$g(["{{", indent$9(concat$g([line$8, ngTextToDoc(part, {
+ parser: "__ng_interpolation",
+ __isInHtmlInterpolation: true // to avoid unexpected `}}`
+
+ })])), line$8, "}}"])));
+ } catch (e) {
+ parts.push("{{", concat$g(replaceEndOfLineWith$2(part, literalline$6)), "}}");
+ }
+ }
+ });
+
+ return group$f(concat$g(parts));
+ }
+ }
+
+ return null;
+}
+
+var printerHtml = {
+ preprocess: preprocess_1$2,
+ print: genericPrint$5,
+ insertPragma: insertPragma$7,
+ massageAstNode: clean$6,
+ embed: embed$4
+};
+
+var CATEGORY_HTML = "HTML"; // format based on https://github.com/prettier/prettier/blob/master/src/main/core-options.js
+
+var options$6 = {
+ htmlWhitespaceSensitivity: {
+ since: "1.15.0",
+ category: CATEGORY_HTML,
+ type: "choice",
+ default: "css",
+ description: "How to handle whitespaces in HTML.",
+ choices: [{
+ value: "css",
+ description: "Respect the default value of CSS display property."
+ }, {
+ value: "strict",
+ description: "Whitespaces are considered sensitive."
+ }, {
+ value: "ignore",
+ description: "Whitespaces are considered insensitive."
+ }]
+ },
+ vueIndentScriptAndStyle: {
+ since: "1.19.0",
+ category: CATEGORY_HTML,
+ type: "boolean",
+ default: false,
+ description: "Indent script and style tags in Vue files."
+ }
+};
+
+var name$g = "HTML";
+var type$e = "markup";
+var tmScope$e = "text.html.basic";
+var aceMode$e = "html";
+var codemirrorMode$b = "htmlmixed";
+var codemirrorMimeType$b = "text/html";
+var color$3 = "#e34c26";
+var aliases$5 = [
+ "xhtml"
+];
+var extensions$e = [
+ ".html",
+ ".htm",
+ ".html.hl",
+ ".inc",
+ ".st",
+ ".xht",
+ ".xhtml"
+];
+var languageId$e = 146;
+var HTML = {
+ name: name$g,
+ type: type$e,
+ tmScope: tmScope$e,
+ aceMode: aceMode$e,
+ codemirrorMode: codemirrorMode$b,
+ codemirrorMimeType: codemirrorMimeType$b,
+ color: color$3,
+ aliases: aliases$5,
+ extensions: extensions$e,
+ languageId: languageId$e
+};
+
+var HTML$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$g,
+ type: type$e,
+ tmScope: tmScope$e,
+ aceMode: aceMode$e,
+ codemirrorMode: codemirrorMode$b,
+ codemirrorMimeType: codemirrorMimeType$b,
+ color: color$3,
+ aliases: aliases$5,
+ extensions: extensions$e,
+ languageId: languageId$e,
+ 'default': HTML
+});
+
+var name$h = "Vue";
+var type$f = "markup";
+var color$4 = "#2c3e50";
+var extensions$f = [
+ ".vue"
+];
+var tmScope$f = "text.html.vue";
+var aceMode$f = "html";
+var languageId$f = 391;
+var Vue = {
+ name: name$h,
+ type: type$f,
+ color: color$4,
+ extensions: extensions$f,
+ tmScope: tmScope$f,
+ aceMode: aceMode$f,
+ languageId: languageId$f
+};
+
+var Vue$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$h,
+ type: type$f,
+ color: color$4,
+ extensions: extensions$f,
+ tmScope: tmScope$f,
+ aceMode: aceMode$f,
+ languageId: languageId$f,
+ 'default': Vue
+});
+
+var require$$0$7 = getCjsExportFromNamespace(HTML$1);
+
+var require$$1$2 = getCjsExportFromNamespace(Vue$1);
+
+var languages$5 = [createLanguage(require$$0$7, function (data) {
+ return Object.assign(data, {
+ name: "Angular",
+ since: "1.15.0",
+ parsers: ["angular"],
+ vscodeLanguageIds: ["html"],
+ extensions: [".component.html"],
+ filenames: []
+ });
+}), createLanguage(require$$0$7, function (data) {
+ return Object.assign(data, {
+ since: "1.15.0",
+ parsers: ["html"],
+ vscodeLanguageIds: ["html"],
+ extensions: data.extensions.concat([".mjml" // MJML is considered XML in Linguist but it should be formatted as HTML
+ ])
+ });
+}), createLanguage(require$$0$7, function (data) {
+ return Object.assign(data, {
+ name: "Lightning Web Components",
+ since: "1.17.0",
+ parsers: ["lwc"],
+ vscodeLanguageIds: ["html"],
+ extensions: [],
+ filenames: []
+ });
+}), createLanguage(require$$1$2, function (data) {
+ return Object.assign(data, {
+ since: "1.10.0",
+ parsers: ["vue"],
+ vscodeLanguageIds: ["vue"]
+ });
+})];
+var printers$5 = {
+ html: printerHtml
+};
+var languageHtml = {
+ languages: languages$5,
+ printers: printers$5,
+ options: options$6
+};
+
+function isPragma(text) {
+ return /^\s*@(prettier|format)\s*$/.test(text);
+}
+
+function hasPragma$4(text) {
+ return /^\s*#[^\n\S]*@(prettier|format)\s*?(\n|$)/.test(text);
+}
+
+function insertPragma$8(text) {
+ return `# @format\n\n${text}`;
+}
+
+var pragma$5 = {
+ isPragma,
+ hasPragma: hasPragma$4,
+ insertPragma: insertPragma$8
+};
+
+var getLast$4 = util.getLast;
+
+function getAncestorCount(path, filter) {
+ var counter = 0;
+ var pathStackLength = path.stack.length - 1;
+
+ for (var i = 0; i < pathStackLength; i++) {
+ var value = path.stack[i];
+
+ if (isNode$1(value) && filter(value)) {
+ counter++;
+ }
+ }
+
+ return counter;
+}
+/**
+ * @param {any} value
+ * @param {string[]=} types
+ */
+
+
+function isNode$1(value, types) {
+ return value && typeof value.type === "string" && (!types || types.indexOf(value.type) !== -1);
+}
+
+function mapNode(node, callback, parent) {
+ return callback("children" in node ? Object.assign({}, node, {
+ children: node.children.map(function (childNode) {
+ return mapNode(childNode, callback, node);
+ })
+ }) : node, parent);
+}
+
+function defineShortcut(x, key, getter) {
+ Object.defineProperty(x, key, {
+ get: getter,
+ enumerable: false
+ });
+}
+
+function isNextLineEmpty$5(node, text) {
+ var newlineCount = 0;
+ var textLength = text.length;
+
+ for (var i = node.position.end.offset - 1; i < textLength; i++) {
+ var char = text[i];
+
+ if (char === "\n") {
+ newlineCount++;
+ }
+
+ if (newlineCount === 1 && /\S/.test(char)) {
+ return false;
+ }
+
+ if (newlineCount === 2) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function isLastDescendantNode(path) {
+ var node = path.getValue();
+
+ switch (node.type) {
+ case "tag":
+ case "anchor":
+ case "comment":
+ return false;
+ }
+
+ var pathStackLength = path.stack.length;
+
+ for (var i = 1; i < pathStackLength; i++) {
+ var item = path.stack[i];
+ var parentItem = path.stack[i - 1];
+
+ if (Array.isArray(parentItem) && typeof item === "number" && item !== parentItem.length - 1) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+function getLastDescendantNode$1(node) {
+ return "children" in node && node.children.length !== 0 ? getLastDescendantNode$1(getLast$4(node.children)) : node;
+}
+
+function isPrettierIgnore$2(comment) {
+ return comment.value.trim() === "prettier-ignore";
+}
+
+function hasPrettierIgnore$5(path) {
+ var node = path.getValue();
+
+ if (node.type === "documentBody") {
+ var document = path.getParentNode();
+ return hasEndComments(document.head) && isPrettierIgnore$2(getLast$4(document.head.endComments));
+ }
+
+ return hasLeadingComments(node) && isPrettierIgnore$2(getLast$4(node.leadingComments));
+}
+
+function isEmptyNode(node) {
+ return (!node.children || node.children.length === 0) && !hasComments(node);
+}
+
+function hasComments(node) {
+ return hasLeadingComments(node) || hasMiddleComments(node) || hasIndicatorComment(node) || hasTrailingComment$2(node) || hasEndComments(node);
+}
+
+function hasLeadingComments(node) {
+ return node && node.leadingComments && node.leadingComments.length !== 0;
+}
+
+function hasMiddleComments(node) {
+ return node && node.middleComments && node.middleComments.length !== 0;
+}
+
+function hasIndicatorComment(node) {
+ return node && node.indicatorComment;
+}
+
+function hasTrailingComment$2(node) {
+ return node && node.trailingComment;
+}
+
+function hasEndComments(node) {
+ return node && node.endComments && node.endComments.length !== 0;
+}
+/**
+ * " a b c d e f " -> [" a b", "c d", "e f "]
+ */
+
+
+function splitWithSingleSpace(text) {
+ var parts = [];
+ var lastPart = undefined;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = text.split(/( +)/g)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var part = _step.value;
+
+ if (part !== " ") {
+ if (lastPart === " ") {
+ parts.push(part);
+ } else {
+ parts.push((parts.pop() || "") + part);
+ }
+ } else if (lastPart === undefined) {
+ parts.unshift("");
+ }
+
+ lastPart = part;
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ if (lastPart === " ") {
+ parts.push((parts.pop() || "") + " ");
+ }
+
+ if (parts[0] === "") {
+ parts.shift();
+ parts.unshift(" " + (parts.shift() || ""));
+ }
+
+ return parts;
+}
+
+function getFlowScalarLineContents(nodeType, content, options) {
+ var rawLineContents = content.split("\n").map(function (lineContent, index, lineContents) {
+ return index === 0 && index === lineContents.length - 1 ? lineContent : index !== 0 && index !== lineContents.length - 1 ? lineContent.trim() : index === 0 ? lineContent.trimRight() : lineContent.trimLeft();
+ });
+
+ if (options.proseWrap === "preserve") {
+ return rawLineContents.map(function (lineContent) {
+ return lineContent.length === 0 ? [] : [lineContent];
+ });
+ }
+
+ return rawLineContents.map(function (lineContent) {
+ return lineContent.length === 0 ? [] : splitWithSingleSpace(lineContent);
+ }).reduce(function (reduced, lineContentWords, index) {
+ return index !== 0 && rawLineContents[index - 1].length !== 0 && lineContentWords.length !== 0 && !( // trailing backslash in quoteDouble should be preserved
+ nodeType === "quoteDouble" && getLast$4(getLast$4(reduced)).endsWith("\\")) ? reduced.concat([reduced.pop().concat(lineContentWords)]) : reduced.concat([lineContentWords]);
+ }, []).map(function (lineContentWords) {
+ return options.proseWrap === "never" ? [lineContentWords.join(" ")] : lineContentWords;
+ });
+}
+
+function getBlockValueLineContents(node, _ref) {
+ var parentIndent = _ref.parentIndent,
+ isLastDescendant = _ref.isLastDescendant,
+ options = _ref.options;
+ var content = node.position.start.line === node.position.end.line ? "" : options.originalText.slice(node.position.start.offset, node.position.end.offset) // exclude open line `>` or `|`
+ .match(/^[^\n]*?\n([\s\S]*)$/)[1];
+ var leadingSpaceCount = node.indent === null ? function (match) {
+ return match ? match[1].length : Infinity;
+ }(content.match(/^( *)\S/m)) : node.indent - 1 + parentIndent;
+ var rawLineContents = content.split("\n").map(function (lineContent) {
+ return lineContent.slice(leadingSpaceCount);
+ });
+
+ if (options.proseWrap === "preserve" || node.type === "blockLiteral") {
+ return removeUnnecessaryTrailingNewlines(rawLineContents.map(function (lineContent) {
+ return lineContent.length === 0 ? [] : [lineContent];
+ }));
+ }
+
+ return removeUnnecessaryTrailingNewlines(rawLineContents.map(function (lineContent) {
+ return lineContent.length === 0 ? [] : splitWithSingleSpace(lineContent);
+ }).reduce(function (reduced, lineContentWords, index) {
+ return index !== 0 && rawLineContents[index - 1].length !== 0 && lineContentWords.length !== 0 && !/^\s/.test(lineContentWords[0]) && !/^\s|\s$/.test(getLast$4(reduced)) ? reduced.concat([reduced.pop().concat(lineContentWords)]) : reduced.concat([lineContentWords]);
+ }, []).map(function (lineContentWords) {
+ return lineContentWords.reduce(function (reduced, word) {
+ return (// disallow trailing spaces
+ reduced.length !== 0 && /\s$/.test(getLast$4(reduced)) ? reduced.concat(reduced.pop() + " " + word) : reduced.concat(word)
+ );
+ }, []);
+ }).map(function (lineContentWords) {
+ return options.proseWrap === "never" ? [lineContentWords.join(" ")] : lineContentWords;
+ }));
+
+ function removeUnnecessaryTrailingNewlines(lineContents) {
+ if (node.chomping === "keep") {
+ return getLast$4(lineContents).length === 0 ? lineContents.slice(0, -1) : lineContents;
+ }
+
+ var trailingNewlineCount = 0;
+
+ for (var i = lineContents.length - 1; i >= 0; i--) {
+ if (lineContents[i].length === 0) {
+ trailingNewlineCount++;
+ } else {
+ break;
+ }
+ }
+
+ return trailingNewlineCount === 0 ? lineContents : trailingNewlineCount >= 2 && !isLastDescendant ? // next empty line
+ lineContents.slice(0, -(trailingNewlineCount - 1)) : lineContents.slice(0, -trailingNewlineCount);
+ }
+}
+
+var utils$6 = {
+ getLast: getLast$4,
+ getAncestorCount,
+ isNode: isNode$1,
+ isEmptyNode,
+ mapNode,
+ defineShortcut,
+ isNextLineEmpty: isNextLineEmpty$5,
+ isLastDescendantNode,
+ getBlockValueLineContents,
+ getFlowScalarLineContents,
+ getLastDescendantNode: getLastDescendantNode$1,
+ hasPrettierIgnore: hasPrettierIgnore$5,
+ hasLeadingComments,
+ hasMiddleComments,
+ hasIndicatorComment,
+ hasTrailingComment: hasTrailingComment$2,
+ hasEndComments
+};
+
+var insertPragma$9 = pragma$5.insertPragma,
+ isPragma$1 = pragma$5.isPragma;
+var getAncestorCount$1 = utils$6.getAncestorCount,
+ getBlockValueLineContents$1 = utils$6.getBlockValueLineContents,
+ getFlowScalarLineContents$1 = utils$6.getFlowScalarLineContents,
+ getLast$5 = utils$6.getLast,
+ getLastDescendantNode$2 = utils$6.getLastDescendantNode,
+ hasLeadingComments$1 = utils$6.hasLeadingComments,
+ hasMiddleComments$1 = utils$6.hasMiddleComments,
+ hasIndicatorComment$1 = utils$6.hasIndicatorComment,
+ hasTrailingComment$3 = utils$6.hasTrailingComment,
+ hasEndComments$1 = utils$6.hasEndComments,
+ hasPrettierIgnore$6 = utils$6.hasPrettierIgnore,
+ isLastDescendantNode$1 = utils$6.isLastDescendantNode,
+ isNextLineEmpty$6 = utils$6.isNextLineEmpty,
+ isNode$2 = utils$6.isNode,
+ isEmptyNode$1 = utils$6.isEmptyNode,
+ defineShortcut$1 = utils$6.defineShortcut,
+ mapNode$1 = utils$6.mapNode;
+var docBuilders$2 = doc.builders;
+var conditionalGroup$2 = docBuilders$2.conditionalGroup,
+ breakParent$5 = docBuilders$2.breakParent,
+ concat$h = docBuilders$2.concat,
+ dedent$3 = docBuilders$2.dedent,
+ dedentToRoot$3 = docBuilders$2.dedentToRoot,
+ fill$6 = docBuilders$2.fill,
+ group$g = docBuilders$2.group,
+ hardline$d = docBuilders$2.hardline,
+ ifBreak$8 = docBuilders$2.ifBreak,
+ join$c = docBuilders$2.join,
+ line$9 = docBuilders$2.line,
+ lineSuffix$2 = docBuilders$2.lineSuffix,
+ literalline$7 = docBuilders$2.literalline,
+ markAsRoot$5 = docBuilders$2.markAsRoot,
+ softline$8 = docBuilders$2.softline;
+var replaceEndOfLineWith$3 = util.replaceEndOfLineWith;
+
+function preprocess$3(ast) {
+ return mapNode$1(ast, defineShortcuts);
+}
+
+function defineShortcuts(node) {
+ switch (node.type) {
+ case "document":
+ defineShortcut$1(node, "head", function () {
+ return node.children[0];
+ });
+ defineShortcut$1(node, "body", function () {
+ return node.children[1];
+ });
+ break;
+
+ case "documentBody":
+ case "sequenceItem":
+ case "flowSequenceItem":
+ case "mappingKey":
+ case "mappingValue":
+ defineShortcut$1(node, "content", function () {
+ return node.children[0];
+ });
+ break;
+
+ case "mappingItem":
+ case "flowMappingItem":
+ defineShortcut$1(node, "key", function () {
+ return node.children[0];
+ });
+ defineShortcut$1(node, "value", function () {
+ return node.children[1];
+ });
+ break;
+ }
+
+ return node;
+}
+
+function genericPrint$6(path, options, print) {
+ var node = path.getValue();
+ var parentNode = path.getParentNode();
+ var tag = !node.tag ? "" : path.call(print, "tag");
+ var anchor = !node.anchor ? "" : path.call(print, "anchor");
+ var nextEmptyLine = isNode$2(node, ["mapping", "sequence", "comment", "directive", "mappingItem", "sequenceItem"]) && !isLastDescendantNode$1(path) ? printNextEmptyLine(path, options.originalText) : "";
+ return concat$h([node.type !== "mappingValue" && hasLeadingComments$1(node) ? concat$h([join$c(hardline$d, path.map(print, "leadingComments")), hardline$d]) : "", tag, tag && anchor ? " " : "", anchor, tag || anchor ? isNode$2(node, ["sequence", "mapping"]) && !hasMiddleComments$1(node) ? hardline$d : " " : "", hasMiddleComments$1(node) ? concat$h([node.middleComments.length === 1 ? "" : hardline$d, join$c(hardline$d, path.map(print, "middleComments")), hardline$d]) : "", hasPrettierIgnore$6(path) ? concat$h(replaceEndOfLineWith$3(options.originalText.slice(node.position.start.offset, node.position.end.offset), literalline$7)) : group$g(_print(node, parentNode, path, options, print)), hasTrailingComment$3(node) && !isNode$2(node, ["document", "documentHead"]) ? lineSuffix$2(concat$h([node.type === "mappingValue" && !node.content ? "" : " ", parentNode.type === "mappingKey" && path.getParentNode(2).type === "mapping" && isInlineNode$1(node) ? "" : breakParent$5, path.call(print, "trailingComment")])) : "", nextEmptyLine, hasEndComments$1(node) && !isNode$2(node, ["documentHead", "documentBody"]) ? align$3(node.type === "sequenceItem" ? 2 : 0, concat$h([hardline$d, join$c(hardline$d, path.map(print, "endComments"))])) : ""]);
+}
+
+function _print(node, parentNode, path, options, print) {
+ switch (node.type) {
+ case "root":
+ return concat$h([join$c(hardline$d, path.map(function (childPath, index) {
+ var document = node.children[index];
+ var nextDocument = node.children[index + 1];
+ return concat$h([print(childPath), shouldPrintDocumentEndMarker(document, nextDocument) ? concat$h([hardline$d, "...", hasTrailingComment$3(document) ? concat$h([" ", path.call(print, "trailingComment")]) : ""]) : !nextDocument || hasTrailingComment$3(nextDocument.head) ? "" : concat$h([hardline$d, "---"])]);
+ }, "children")), node.children.length === 0 || function (lastDescendantNode) {
+ return isNode$2(lastDescendantNode, ["blockLiteral", "blockFolded"]) && lastDescendantNode.chomping === "keep";
+ }(getLastDescendantNode$2(node)) ? "" : hardline$d]);
+
+ case "document":
+ {
+ var nextDocument = parentNode.children[path.getName() + 1];
+ return join$c(hardline$d, [shouldPrintDocumentHeadEndMarker(node, nextDocument, parentNode, options) === "head" ? join$c(hardline$d, [node.head.children.length === 0 && node.head.endComments.length === 0 ? "" : path.call(print, "head"), concat$h(["---", hasTrailingComment$3(node.head) ? concat$h([" ", path.call(print, "head", "trailingComment")]) : ""])].filter(Boolean)) : "", shouldPrintDocumentBody(node) ? path.call(print, "body") : ""].filter(Boolean));
+ }
+
+ case "documentHead":
+ return join$c(hardline$d, [].concat(path.map(print, "children"), path.map(print, "endComments")));
+
+ case "documentBody":
+ {
+ var children = join$c(hardline$d, path.map(print, "children")).parts;
+ var endComments = join$c(hardline$d, path.map(print, "endComments")).parts;
+ var separator = children.length === 0 || endComments.length === 0 ? "" : function (lastDescendantNode) {
+ return isNode$2(lastDescendantNode, ["blockFolded", "blockLiteral"]) ? lastDescendantNode.chomping === "keep" ? // there's already a newline printed at the end of blockValue (chomping=keep, lastDescendant=true)
+ "" : // an extra newline for better readability
+ concat$h([hardline$d, hardline$d]) : hardline$d;
+ }(getLastDescendantNode$2(node));
+ return concat$h([].concat(children, separator, endComments));
+ }
+
+ case "directive":
+ return concat$h(["%", join$c(" ", [node.name].concat(node.parameters))]);
+
+ case "comment":
+ return concat$h(["#", node.value]);
+
+ case "alias":
+ return concat$h(["*", node.value]);
+
+ case "tag":
+ return options.originalText.slice(node.position.start.offset, node.position.end.offset);
+
+ case "anchor":
+ return concat$h(["&", node.value]);
+
+ case "plain":
+ return printFlowScalarContent(node.type, options.originalText.slice(node.position.start.offset, node.position.end.offset), options);
+
+ case "quoteDouble":
+ case "quoteSingle":
+ {
+ var singleQuote = "'";
+ var doubleQuote = '"';
+ var raw = options.originalText.slice(node.position.start.offset + 1, node.position.end.offset - 1);
+
+ if (node.type === "quoteSingle" && raw.includes("\\") || node.type === "quoteDouble" && /\\[^"]/.test(raw)) {
+ // only quoteDouble can use escape chars
+ // and quoteSingle do not need to escape backslashes
+ var originalQuote = node.type === "quoteDouble" ? doubleQuote : singleQuote;
+ return concat$h([originalQuote, printFlowScalarContent(node.type, raw, options), originalQuote]);
+ } else if (raw.includes(doubleQuote)) {
+ return concat$h([singleQuote, printFlowScalarContent(node.type, node.type === "quoteDouble" ? raw // double quote needs to be escaped by backslash in quoteDouble
+ .replace(/\\"/g, doubleQuote).replace(/'/g, singleQuote.repeat(2)) : raw, options), singleQuote]);
+ }
+
+ if (raw.includes(singleQuote)) {
+ return concat$h([doubleQuote, printFlowScalarContent(node.type, node.type === "quoteSingle" ? // single quote needs to be escaped by 2 single quotes in quoteSingle
+ raw.replace(/''/g, singleQuote) : raw, options), doubleQuote]);
+ }
+
+ var quote = options.singleQuote ? singleQuote : doubleQuote;
+ return concat$h([quote, printFlowScalarContent(node.type, raw, options), quote]);
+ }
+
+ case "blockFolded":
+ case "blockLiteral":
+ {
+ var parentIndent = getAncestorCount$1(path, function (ancestorNode) {
+ return isNode$2(ancestorNode, ["sequence", "mapping"]);
+ });
+ var isLastDescendant = isLastDescendantNode$1(path);
+ return concat$h([node.type === "blockFolded" ? ">" : "|", node.indent === null ? "" : node.indent.toString(), node.chomping === "clip" ? "" : node.chomping === "keep" ? "+" : "-", hasIndicatorComment$1(node) ? concat$h([" ", path.call(print, "indicatorComment")]) : "", (node.indent === null ? dedent$3 : dedentToRoot$3)(align$3(node.indent === null ? options.tabWidth : node.indent - 1 + parentIndent, concat$h(getBlockValueLineContents$1(node, {
+ parentIndent,
+ isLastDescendant,
+ options
+ }).reduce(function (reduced, lineWords, index, lineContents) {
+ return reduced.concat(index === 0 ? hardline$d : "", fill$6(join$c(line$9, lineWords).parts), index !== lineContents.length - 1 ? lineWords.length === 0 ? hardline$d : markAsRoot$5(literalline$7) : node.chomping === "keep" && isLastDescendant ? lineWords.length === 0 ? dedentToRoot$3(hardline$d) : dedentToRoot$3(literalline$7) : "");
+ }, []))))]);
+ }
+
+ case "sequence":
+ return join$c(hardline$d, path.map(print, "children"));
+
+ case "sequenceItem":
+ return concat$h(["- ", align$3(2, !node.content ? "" : path.call(print, "content"))]);
+
+ case "mappingKey":
+ return !node.content ? "" : path.call(print, "content");
+
+ case "mappingValue":
+ return !node.content ? "" : path.call(print, "content");
+
+ case "mapping":
+ return join$c(hardline$d, path.map(print, "children"));
+
+ case "mappingItem":
+ case "flowMappingItem":
+ {
+ var isEmptyMappingKey = isEmptyNode$1(node.key);
+ var isEmptyMappingValue = isEmptyNode$1(node.value);
+
+ if (isEmptyMappingKey && isEmptyMappingValue) {
+ return concat$h([": "]);
+ }
+
+ var key = path.call(print, "key");
+ var value = path.call(print, "value");
+
+ if (isEmptyMappingValue) {
+ return node.type === "flowMappingItem" && parentNode.type === "flowMapping" ? key : node.type === "mappingItem" && isAbsolutelyPrintedAsSingleLineNode(node.key.content, options) && !hasTrailingComment$3(node.key.content) && (!parentNode.tag || parentNode.tag.value !== "tag:yaml.org,2002:set") ? concat$h([key, needsSpaceInFrontOfMappingValue(node) ? " " : "", ":"]) : concat$h(["? ", align$3(2, key)]);
+ }
+
+ if (isEmptyMappingKey) {
+ return concat$h([": ", align$3(2, value)]);
+ }
+
+ var groupId = Symbol("mappingKey");
+ var forceExplicitKey = hasLeadingComments$1(node.value) || !isInlineNode$1(node.key.content);
+ return forceExplicitKey ? concat$h(["? ", align$3(2, key), hardline$d, join$c("", path.map(print, "value", "leadingComments").map(function (comment) {
+ return concat$h([comment, hardline$d]);
+ })), ": ", align$3(2, value)]) : // force singleline
+ isSingleLineNode(node.key.content) && !hasLeadingComments$1(node.key.content) && !hasMiddleComments$1(node.key.content) && !hasTrailingComment$3(node.key.content) && !hasEndComments$1(node.key) && !hasLeadingComments$1(node.value.content) && !hasMiddleComments$1(node.value.content) && !hasEndComments$1(node.value) && isAbsolutelyPrintedAsSingleLineNode(node.value.content, options) ? concat$h([key, needsSpaceInFrontOfMappingValue(node) ? " " : "", ": ", value]) : conditionalGroup$2([concat$h([group$g(concat$h([ifBreak$8("? "), group$g(align$3(2, key), {
+ id: groupId
+ })])), ifBreak$8(concat$h([hardline$d, ": ", align$3(2, value)]), indent(concat$h([needsSpaceInFrontOfMappingValue(node) ? " " : "", ":", hasLeadingComments$1(node.value.content) || hasEndComments$1(node.value) && node.value.content && !isNode$2(node.value.content, ["mapping", "sequence"]) || parentNode.type === "mapping" && hasTrailingComment$3(node.key.content) && isInlineNode$1(node.value.content) || isNode$2(node.value.content, ["mapping", "sequence"]) && node.value.content.tag === null && node.value.content.anchor === null ? hardline$d : !node.value.content ? "" : line$9, value])), {
+ groupId
+ })])]);
+ }
+
+ case "flowMapping":
+ case "flowSequence":
+ {
+ var openMarker = node.type === "flowMapping" ? "{" : "[";
+ var closeMarker = node.type === "flowMapping" ? "}" : "]";
+ var bracketSpacing = node.type === "flowMapping" && node.children.length !== 0 && options.bracketSpacing ? line$9 : softline$8;
+
+ var isLastItemEmptyMappingItem = node.children.length !== 0 && function (lastItem) {
+ return lastItem.type === "flowMappingItem" && isEmptyNode$1(lastItem.key) && isEmptyNode$1(lastItem.value);
+ }(getLast$5(node.children));
+
+ return concat$h([openMarker, indent(concat$h([bracketSpacing, concat$h(path.map(function (childPath, index) {
+ return concat$h([print(childPath), index === node.children.length - 1 ? "" : concat$h([",", line$9, node.children[index].position.start.line !== node.children[index + 1].position.start.line ? printNextEmptyLine(childPath, options.originalText) : ""])]);
+ }, "children")), ifBreak$8(",", "")])), isLastItemEmptyMappingItem ? "" : bracketSpacing, closeMarker]);
+ }
+
+ case "flowSequenceItem":
+ return path.call(print, "content");
+ // istanbul ignore next
+
+ default:
+ throw new Error(`Unexpected node type ${node.type}`);
+ }
+
+ function indent(doc) {
+ return docBuilders$2.align(" ".repeat(options.tabWidth), doc);
+ }
+}
+
+function align$3(n, doc) {
+ return typeof n === "number" && n > 0 ? docBuilders$2.align(" ".repeat(n), doc) : docBuilders$2.align(n, doc);
+}
+
+function isInlineNode$1(node) {
+ if (!node) {
+ return true;
+ }
+
+ switch (node.type) {
+ case "plain":
+ case "quoteDouble":
+ case "quoteSingle":
+ case "alias":
+ case "flowMapping":
+ case "flowSequence":
+ return true;
+
+ default:
+ return false;
+ }
+}
+
+function isSingleLineNode(node) {
+ if (!node) {
+ return true;
+ }
+
+ switch (node.type) {
+ case "plain":
+ case "quoteDouble":
+ case "quoteSingle":
+ return node.position.start.line === node.position.end.line;
+
+ case "alias":
+ return true;
+
+ default:
+ return false;
+ }
+}
+
+function shouldPrintDocumentBody(document) {
+ return document.body.children.length !== 0 || hasEndComments$1(document.body);
+}
+
+function shouldPrintDocumentEndMarker(document, nextDocument) {
+ return (
+ /**
+ *... # trailingComment
+ */
+ hasTrailingComment$3(document) || nextDocument && (
+ /**
+ * ...
+ * %DIRECTIVE
+ * ---
+ */
+ nextDocument.head.children.length !== 0 ||
+ /**
+ * ...
+ * # endComment
+ * ---
+ */
+ hasEndComments$1(nextDocument.head))
+ );
+}
+
+function shouldPrintDocumentHeadEndMarker(document, nextDocument, root, options) {
+ if (
+ /**
+ * ---
+ * preserve the first document head end marker
+ */
+ root.children[0] === document && /---(\s|$)/.test(options.originalText.slice(options.locStart(document), options.locStart(document) + 4)) ||
+ /**
+ * %DIRECTIVE
+ * ---
+ */
+ document.head.children.length !== 0 ||
+ /**
+ * # end comment
+ * ---
+ */
+ hasEndComments$1(document.head) ||
+ /**
+ * --- # trailing comment
+ */
+ hasTrailingComment$3(document.head)) {
+ return "head";
+ }
+
+ if (shouldPrintDocumentEndMarker(document, nextDocument)) {
+ return false;
+ }
+
+ return nextDocument ? "root" : false;
+}
+
+function isAbsolutelyPrintedAsSingleLineNode(node, options) {
+ if (!node) {
+ return true;
+ }
+
+ switch (node.type) {
+ case "plain":
+ case "quoteSingle":
+ case "quoteDouble":
+ break;
+
+ case "alias":
+ return true;
+
+ default:
+ return false;
+ }
+
+ if (options.proseWrap === "preserve") {
+ return node.position.start.line === node.position.end.line;
+ }
+
+ if ( // backslash-newline
+ /\\$/m.test(options.originalText.slice(node.position.start.offset, node.position.end.offset))) {
+ return false;
+ }
+
+ switch (options.proseWrap) {
+ case "never":
+ return node.value.indexOf("\n") === -1;
+
+ case "always":
+ return !/[\n ]/.test(node.value);
+ // istanbul ignore next
+
+ default:
+ return false;
+ }
+}
+
+function needsSpaceInFrontOfMappingValue(node) {
+ return node.key.content && node.key.content.type === "alias";
+}
+
+function printNextEmptyLine(path, originalText) {
+ var node = path.getValue();
+ var root = path.stack[0];
+ root.isNextEmptyLinePrintedChecklist = root.isNextEmptyLinePrintedChecklist || [];
+
+ if (!root.isNextEmptyLinePrintedChecklist[node.position.end.line]) {
+ if (isNextLineEmpty$6(node, originalText)) {
+ root.isNextEmptyLinePrintedChecklist[node.position.end.line] = true;
+ return softline$8;
+ }
+ }
+
+ return "";
+}
+
+function printFlowScalarContent(nodeType, content, options) {
+ var lineContents = getFlowScalarLineContents$1(nodeType, content, options);
+ return join$c(hardline$d, lineContents.map(function (lineContentWords) {
+ return fill$6(join$c(line$9, lineContentWords).parts);
+ }));
+}
+
+function clean$7(node, newNode
+/*, parent */
+) {
+ if (isNode$2(newNode)) {
+ delete newNode.position;
+
+ switch (newNode.type) {
+ case "comment":
+ // insert pragma
+ if (isPragma$1(newNode.value)) {
+ return null;
+ }
+
+ break;
+
+ case "quoteDouble":
+ case "quoteSingle":
+ newNode.type = "quote";
+ break;
+ }
+ }
+}
+
+var printerYaml = {
+ preprocess: preprocess$3,
+ print: genericPrint$6,
+ massageAstNode: clean$7,
+ insertPragma: insertPragma$9
+};
+
+var options$7 = {
+ bracketSpacing: commonOptions.bracketSpacing,
+ singleQuote: commonOptions.singleQuote,
+ proseWrap: commonOptions.proseWrap
+};
+
+var name$i = "YAML";
+var type$g = "data";
+var tmScope$g = "source.yaml";
+var aliases$6 = [
+ "yml"
+];
+var extensions$g = [
+ ".yml",
+ ".mir",
+ ".reek",
+ ".rviz",
+ ".sublime-syntax",
+ ".syntax",
+ ".yaml",
+ ".yaml-tmlanguage",
+ ".yml.mysql"
+];
+var filenames$4 = [
+ ".clang-format",
+ ".clang-tidy",
+ ".gemrc",
+ "glide.lock"
+];
+var aceMode$g = "yaml";
+var codemirrorMode$c = "yaml";
+var codemirrorMimeType$c = "text/x-yaml";
+var languageId$g = 407;
+var YAML = {
+ name: name$i,
+ type: type$g,
+ tmScope: tmScope$g,
+ aliases: aliases$6,
+ extensions: extensions$g,
+ filenames: filenames$4,
+ aceMode: aceMode$g,
+ codemirrorMode: codemirrorMode$c,
+ codemirrorMimeType: codemirrorMimeType$c,
+ languageId: languageId$g
+};
+
+var YAML$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$i,
+ type: type$g,
+ tmScope: tmScope$g,
+ aliases: aliases$6,
+ extensions: extensions$g,
+ filenames: filenames$4,
+ aceMode: aceMode$g,
+ codemirrorMode: codemirrorMode$c,
+ codemirrorMimeType: codemirrorMimeType$c,
+ languageId: languageId$g,
+ 'default': YAML
+});
+
+var require$$0$8 = getCjsExportFromNamespace(YAML$1);
+
+var languages$6 = [createLanguage(require$$0$8, function (data) {
+ return Object.assign(data, {
+ since: "1.14.0",
+ parsers: ["yaml"],
+ vscodeLanguageIds: ["yaml"]
+ });
+})];
+var languageYaml = {
+ languages: languages$6,
+ printers: {
+ yaml: printerYaml
+ },
+ options: options$7
+};
+
+// plugin will look for `eval("require")()` and transform to `require()` in the bundle,
+// and rewrite the paths to require from the top-level.
+// We need to list the parsers and getters so we can load them only when necessary.
+
+
+var internalPlugins = [// JS
+languageJs, {
+ parsers: {
+ // JS - Babel
+ get babel() {
+ return require("./parser-babylon").parsers.babel;
+ },
+
+ get "babel-flow"() {
+ return require("./parser-babylon").parsers["babel-flow"];
+ },
+
+ get babylon() {
+ return require("./parser-babylon").parsers.babel;
+ },
+
+ get json() {
+ return require("./parser-babylon").parsers.json;
+ },
+
+ get json5() {
+ return require("./parser-babylon").parsers.json5;
+ },
+
+ get "json-stringify"() {
+ return require("./parser-babylon").parsers["json-stringify"];
+ },
+
+ get __js_expression() {
+ return require("./parser-babylon").parsers.__js_expression;
+ },
+
+ get __vue_expression() {
+ return require("./parser-babylon").parsers.__vue_expression;
+ },
+
+ get __vue_event_binding() {
+ return require("./parser-babylon").parsers.__vue_event_binding;
+ },
+
+ // JS - Flow
+ get flow() {
+ return require("./parser-flow").parsers.flow;
+ },
+
+ // JS - TypeScript
+ get typescript() {
+ return require("./parser-typescript").parsers.typescript;
+ },
+
+ /**
+ * TODO: Remove this old alias in a major version
+ */
+ get "typescript-eslint"() {
+ return require("./parser-typescript").parsers.typescript;
+ },
+
+ // JS - Angular Action
+ get __ng_action() {
+ return require("./parser-angular").parsers.__ng_action;
+ },
+
+ // JS - Angular Binding
+ get __ng_binding() {
+ return require("./parser-angular").parsers.__ng_binding;
+ },
+
+ // JS - Angular Interpolation
+ get __ng_interpolation() {
+ return require("./parser-angular").parsers.__ng_interpolation;
+ },
+
+ // JS - Angular Directive
+ get __ng_directive() {
+ return require("./parser-angular").parsers.__ng_directive;
+ }
+
+ }
+}, // CSS
+languageCss, {
+ parsers: {
+ // TODO: switch these to just `postcss` and use `language` instead.
+ get css() {
+ return require("./parser-postcss").parsers.css;
+ },
+
+ get less() {
+ return require("./parser-postcss").parsers.css;
+ },
+
+ get scss() {
+ return require("./parser-postcss").parsers.css;
+ }
+
+ }
+}, // Handlebars
+languageHandlebars, {
+ parsers: {
+ get glimmer() {
+ return require("./parser-glimmer").parsers.glimmer;
+ }
+
+ }
+}, // GraphQL
+languageGraphql, {
+ parsers: {
+ get graphql() {
+ return require("./parser-graphql").parsers.graphql;
+ }
+
+ }
+}, // Markdown
+languageMarkdown, {
+ parsers: {
+ get remark() {
+ return require("./parser-markdown").parsers.remark;
+ },
+
+ // TODO: Delete this in 2.0
+ get markdown() {
+ return require("./parser-markdown").parsers.remark;
+ },
+
+ get mdx() {
+ return require("./parser-markdown").parsers.mdx;
+ }
+
+ }
+}, languageHtml, {
+ parsers: {
+ // HTML
+ get html() {
+ return require("./parser-html").parsers.html;
+ },
+
+ // Vue
+ get vue() {
+ return require("./parser-html").parsers.vue;
+ },
+
+ // Angular
+ get angular() {
+ return require("./parser-html").parsers.angular;
+ },
+
+ // Lightning Web Components
+ get lwc() {
+ return require("./parser-html").parsers.lwc;
+ }
+
+ }
+}, // YAML
+languageYaml, {
+ parsers: {
+ get yaml() {
+ return require("./parser-yaml").parsers.yaml;
+ }
+
+ }
+}];
+
+var partition = function partition(array, fn) {
+ var a = [];
+ var b = [];
+ array.forEach(function (item) {
+ if (fn(item)) {
+ a.push(item);
+ } else {
+ b.push(item);
+ }
+ });
+ return [a, b];
+};
+
+function loadPlugins(plugins, pluginSearchDirs) {
+ if (!plugins) {
+ plugins = [];
+ }
+
+ if (!pluginSearchDirs) {
+ pluginSearchDirs = [];
+ } // unless pluginSearchDirs are provided, auto-load plugins from node_modules that are parent to Prettier
+
+
+ if (!pluginSearchDirs.length) {
+ var autoLoadDir = thirdParty.findParentDir(__dirname, "node_modules");
+
+ if (autoLoadDir) {
+ pluginSearchDirs = [autoLoadDir];
+ }
+ }
+
+ var _partition = partition(plugins, function (plugin) {
+ return typeof plugin === "string";
+ }),
+ _partition2 = _slicedToArray(_partition, 2),
+ externalPluginNames = _partition2[0],
+ externalPluginInstances = _partition2[1];
+
+ var externalManualLoadPluginInfos = externalPluginNames.map(function (pluginName) {
+ var requirePath;
+
+ try {
+ // try local files
+ requirePath = resolve.sync(path$2.resolve(process.cwd(), pluginName));
+ } catch (e) {
+ // try node modules
+ requirePath = resolve.sync(pluginName, {
+ basedir: process.cwd()
+ });
+ }
+
+ return {
+ name: pluginName,
+ requirePath
+ };
+ });
+ var externalAutoLoadPluginInfos = pluginSearchDirs.map(function (pluginSearchDir) {
+ var resolvedPluginSearchDir = path$2.resolve(process.cwd(), pluginSearchDir);
+ var nodeModulesDir = path$2.resolve(resolvedPluginSearchDir, "node_modules"); // In some fringe cases (ex: files "mounted" as virtual directories), the
+ // isDirectory(resolvedPluginSearchDir) check might be false even though
+ // the node_modules actually exists.
+
+ if (!isDirectory(nodeModulesDir) && !isDirectory(resolvedPluginSearchDir)) {
+ throw new Error(`${pluginSearchDir} does not exist or is not a directory`);
+ }
+
+ return findPluginsInNodeModules(nodeModulesDir).map(function (pluginName) {
+ return {
+ name: pluginName,
+ requirePath: resolve.sync(pluginName, {
+ basedir: resolvedPluginSearchDir
+ })
+ };
+ });
+ }).reduce(function (a, b) {
+ return a.concat(b);
+ }, []);
+ var externalPlugins = lodash_uniqby(externalManualLoadPluginInfos.concat(externalAutoLoadPluginInfos), "requirePath").map(function (externalPluginInfo) {
+ return Object.assign({
+ name: externalPluginInfo.name
+ }, require(externalPluginInfo.requirePath));
+ }).concat(externalPluginInstances);
+ return internalPlugins.concat(externalPlugins);
+}
+
+function findPluginsInNodeModules(nodeModulesDir) {
+ var pluginPackageJsonPaths = globby.sync(["prettier-plugin-*/package.json", "@*/prettier-plugin-*/package.json", "@prettier/plugin-*/package.json"], {
+ cwd: nodeModulesDir
+ });
+ return pluginPackageJsonPaths.map(path$2.dirname);
+}
+
+function isDirectory(dir) {
+ try {
+ return fs$1.statSync(dir).isDirectory();
+ } catch (e) {
+ return false;
+ }
+}
+
+var loadPlugins_1 = loadPlugins;
+
+var version$3 = require$$0.version;
+var getSupportInfo$2 = support.getSupportInfo; // Luckily `opts` is always the 2nd argument
+
+function _withPlugins(fn) {
+ return function () {
+ var args = Array.from(arguments);
+ var opts = args[1] || {};
+ args[1] = Object.assign({}, opts, {
+ plugins: loadPlugins_1(opts.plugins, opts.pluginSearchDirs)
+ });
+ return fn.apply(null, args);
+ };
+}
+
+function withPlugins(fn) {
+ var resultingFn = _withPlugins(fn);
+
+ if (fn.sync) {
+ resultingFn.sync = _withPlugins(fn.sync);
+ }
+
+ return resultingFn;
+}
+
+var formatWithCursor = withPlugins(core.formatWithCursor);
+var src$1 = {
+ formatWithCursor,
+
+ format(text, opts) {
+ return formatWithCursor(text, opts).formatted;
+ },
+
+ check: function check(text, opts) {
+ var formatted = formatWithCursor(text, opts).formatted;
+ return formatted === text;
+ },
+ doc,
+ resolveConfig: resolveConfig_1.resolveConfig,
+ resolveConfigFile: resolveConfig_1.resolveConfigFile,
+ clearConfigCache: resolveConfig_1.clearCache,
+ getFileInfo: withPlugins(getFileInfo_1),
+ getSupportInfo: withPlugins(getSupportInfo$2),
+ version: version$3,
+ util: utilShared,
+
+ /* istanbul ignore next */
+ __debug: {
+ parse: withPlugins(core.parse),
+ formatAST: withPlugins(core.formatAST),
+ formatDoc: withPlugins(core.formatDoc),
+ printToDoc: withPlugins(core.printToDoc),
+ printDocToString: withPlugins(core.printDocToString)
+ }
+};
+
+var prettier = src$1;
+
+var at,
+ // The index of the current character
+ch,
+ // The current character
+escapee = {
+ '"': '"',
+ '\\': '\\',
+ '/': '/',
+ b: '\b',
+ f: '\f',
+ n: '\n',
+ r: '\r',
+ t: '\t'
+},
+ text,
+ error = function error(m) {
+ // Call error when something is wrong.
+ throw {
+ name: 'SyntaxError',
+ message: m,
+ at: at,
+ text: text
+ };
+},
+ next = function next(c) {
+ // If a c parameter is provided, verify that it matches the current character.
+ if (c && c !== ch) {
+ error("Expected '" + c + "' instead of '" + ch + "'");
+ } // Get the next character. When there are no more characters,
+ // return the empty string.
+
+
+ ch = text.charAt(at);
+ at += 1;
+ return ch;
+},
+ number$1 = function number() {
+ // Parse a number value.
+ var number,
+ string = '';
+
+ if (ch === '-') {
+ string = '-';
+ next('-');
+ }
+
+ while (ch >= '0' && ch <= '9') {
+ string += ch;
+ next();
+ }
+
+ if (ch === '.') {
+ string += '.';
+
+ while (next() && ch >= '0' && ch <= '9') {
+ string += ch;
+ }
+ }
+
+ if (ch === 'e' || ch === 'E') {
+ string += ch;
+ next();
+
+ if (ch === '-' || ch === '+') {
+ string += ch;
+ next();
+ }
+
+ while (ch >= '0' && ch <= '9') {
+ string += ch;
+ next();
+ }
+ }
+
+ number = +string;
+
+ if (!isFinite(number)) {
+ error("Bad number");
+ } else {
+ return number;
+ }
+},
+ string$1 = function string() {
+ // Parse a string value.
+ var hex,
+ i,
+ string = '',
+ uffff; // When parsing for string values, we must look for " and \ characters.
+
+ if (ch === '"') {
+ while (next()) {
+ if (ch === '"') {
+ next();
+ return string;
+ } else if (ch === '\\') {
+ next();
+
+ if (ch === 'u') {
+ uffff = 0;
+
+ for (i = 0; i < 4; i += 1) {
+ hex = parseInt(next(), 16);
+
+ if (!isFinite(hex)) {
+ break;
+ }
+
+ uffff = uffff * 16 + hex;
+ }
+
+ string += String.fromCharCode(uffff);
+ } else if (typeof escapee[ch] === 'string') {
+ string += escapee[ch];
+ } else {
+ break;
+ }
+ } else {
+ string += ch;
+ }
+ }
+ }
+
+ error("Bad string");
+},
+ white = function white() {
+ // Skip whitespace.
+ while (ch && ch <= ' ') {
+ next();
+ }
+},
+ word = function word() {
+ // true, false, or null.
+ switch (ch) {
+ case 't':
+ next('t');
+ next('r');
+ next('u');
+ next('e');
+ return true;
+
+ case 'f':
+ next('f');
+ next('a');
+ next('l');
+ next('s');
+ next('e');
+ return false;
+
+ case 'n':
+ next('n');
+ next('u');
+ next('l');
+ next('l');
+ return null;
+ }
+
+ error("Unexpected '" + ch + "'");
+},
+ value,
+ // Place holder for the value function.
+array$2 = function array() {
+ // Parse an array value.
+ var array = [];
+
+ if (ch === '[') {
+ next('[');
+ white();
+
+ if (ch === ']') {
+ next(']');
+ return array; // empty array
+ }
+
+ while (ch) {
+ array.push(value());
+ white();
+
+ if (ch === ']') {
+ next(']');
+ return array;
+ }
+
+ next(',');
+ white();
+ }
+ }
+
+ error("Bad array");
+},
+ object$1 = function object() {
+ // Parse an object value.
+ var key,
+ object = {};
+
+ if (ch === '{') {
+ next('{');
+ white();
+
+ if (ch === '}') {
+ next('}');
+ return object; // empty object
+ }
+
+ while (ch) {
+ key = string$1();
+ white();
+ next(':');
+
+ if (Object.hasOwnProperty.call(object, key)) {
+ error('Duplicate key "' + key + '"');
+ }
+
+ object[key] = value();
+ white();
+
+ if (ch === '}') {
+ next('}');
+ return object;
+ }
+
+ next(',');
+ white();
+ }
+ }
+
+ error("Bad object");
+};
+
+value = function value() {
+ // Parse a JSON value. It could be an object, an array, a string, a number,
+ // or a word.
+ white();
+
+ switch (ch) {
+ case '{':
+ return object$1();
+
+ case '[':
+ return array$2();
+
+ case '"':
+ return string$1();
+
+ case '-':
+ return number$1();
+
+ default:
+ return ch >= '0' && ch <= '9' ? number$1() : word();
+ }
+}; // Return the json_parse function. It will have access to all of the above
+// functions and variables.
+
+
+var parse$4 = function parse(source, reviver) {
+ var result;
+ text = source;
+ at = 0;
+ ch = ' ';
+ result = value();
+ white();
+
+ if (ch) {
+ error("Syntax error");
+ } // If there is a reviver function, we recursively walk the new structure,
+ // passing each name/value pair to the reviver function for possible
+ // transformation, starting with a temporary root object that holds the result
+ // in an empty key. If there is not a reviver function, we simply return the
+ // result.
+
+
+ return typeof reviver === 'function' ? function walk(holder, key) {
+ var k,
+ v,
+ value = holder[key];
+
+ if (value && typeof value === 'object') {
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = walk(value, k);
+
+ if (v !== undefined) {
+ value[k] = v;
+ } else {
+ delete value[k];
+ }
+ }
+ }
+ }
+
+ return reviver.call(holder, key, value);
+ }({
+ '': result
+ }, '') : result;
+};
+
+var escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
+ gap,
+ indent$a,
+ meta$1 = {
+ // table of character substitutions
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"': '\\"',
+ '\\': '\\\\'
+},
+ rep;
+
+function quote(string) {
+ // If the string contains no control characters, no quote characters, and no
+ // backslash characters, then we can safely slap some quotes around it.
+ // Otherwise we must also replace the offending characters with safe escape
+ // sequences.
+ escapable.lastIndex = 0;
+ return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
+ var c = meta$1[a];
+ return typeof c === 'string' ? c : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
+ }) + '"' : '"' + string + '"';
+}
+
+function str(key, holder) {
+ // Produce a string from holder[key].
+ var i,
+ // The loop counter.
+ k,
+ // The member key.
+ v,
+ // The member value.
+ length,
+ mind = gap,
+ partial,
+ value = holder[key]; // If the value has a toJSON method, call it to obtain a replacement value.
+
+ if (value && typeof value === 'object' && typeof value.toJSON === 'function') {
+ value = value.toJSON(key);
+ } // If we were called with a replacer function, then call the replacer to
+ // obtain a replacement value.
+
+
+ if (typeof rep === 'function') {
+ value = rep.call(holder, key, value);
+ } // What happens next depends on the value's type.
+
+
+ switch (typeof value) {
+ case 'string':
+ return quote(value);
+
+ case 'number':
+ // JSON numbers must be finite. Encode non-finite numbers as null.
+ return isFinite(value) ? String(value) : 'null';
+
+ case 'boolean':
+ case 'null':
+ // If the value is a boolean or null, convert it to a string. Note:
+ // typeof null does not produce 'null'. The case is included here in
+ // the remote chance that this gets fixed someday.
+ return String(value);
+
+ case 'object':
+ if (!value) return 'null';
+ gap += indent$a;
+ partial = []; // Array.isArray
+
+ if (Object.prototype.toString.apply(value) === '[object Array]') {
+ length = value.length;
+
+ for (i = 0; i < length; i += 1) {
+ partial[i] = str(i, value) || 'null';
+ } // Join all of the elements together, separated with commas, and
+ // wrap them in brackets.
+
+
+ v = partial.length === 0 ? '[]' : gap ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' : '[' + partial.join(',') + ']';
+ gap = mind;
+ return v;
+ } // If the replacer is an array, use it to select the members to be
+ // stringified.
+
+
+ if (rep && typeof rep === 'object') {
+ length = rep.length;
+
+ for (i = 0; i < length; i += 1) {
+ k = rep[i];
+
+ if (typeof k === 'string') {
+ v = str(k, value);
+
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ } else {
+ // Otherwise, iterate through all of the keys in the object.
+ for (k in value) {
+ if (Object.prototype.hasOwnProperty.call(value, k)) {
+ v = str(k, value);
+
+ if (v) {
+ partial.push(quote(k) + (gap ? ': ' : ':') + v);
+ }
+ }
+ }
+ } // Join all of the member texts together, separated with commas,
+ // and wrap them in braces.
+
+
+ v = partial.length === 0 ? '{}' : gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' : '{' + partial.join(',') + '}';
+ gap = mind;
+ return v;
+ }
+}
+
+var stringify = function stringify(value, replacer, space) {
+ var i;
+ gap = '';
+ indent$a = ''; // If the space parameter is a number, make an indent string containing that
+ // many spaces.
+
+ if (typeof space === 'number') {
+ for (i = 0; i < space; i += 1) {
+ indent$a += ' ';
+ }
+ } // If the space parameter is a string, it will be used as the indent string.
+ else if (typeof space === 'string') {
+ indent$a = space;
+ } // If there is a replacer, it must be a function or an array.
+ // Otherwise, throw an error.
+
+
+ rep = replacer;
+
+ if (replacer && typeof replacer !== 'function' && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) {
+ throw new Error('JSON.stringify');
+ } // Make a fake root object containing our value under the key of ''.
+ // Return the result of stringifying the value.
+
+
+ return str('', {
+ '': value
+ });
+};
+
+var parse$5 = parse$4;
+var stringify$1 = stringify;
+var jsonify = {
+ parse: parse$5,
+ stringify: stringify$1
+};
+
+var json$2 = typeof JSON !== 'undefined' ? JSON : jsonify;
+
+var jsonStableStringify = function jsonStableStringify(obj, opts) {
+ if (!opts) opts = {};
+ if (typeof opts === 'function') opts = {
+ cmp: opts
+ };
+ var space = opts.space || '';
+ if (typeof space === 'number') space = Array(space + 1).join(' ');
+ var cycles = typeof opts.cycles === 'boolean' ? opts.cycles : false;
+
+ var replacer = opts.replacer || function (key, value) {
+ return value;
+ };
+
+ var cmp = opts.cmp && function (f) {
+ return function (node) {
+ return function (a, b) {
+ var aobj = {
+ key: a,
+ value: node[a]
+ };
+ var bobj = {
+ key: b,
+ value: node[b]
+ };
+ return f(aobj, bobj);
+ };
+ };
+ }(opts.cmp);
+
+ var seen = [];
+ return function stringify(parent, key, node, level) {
+ var indent = space ? '\n' + new Array(level + 1).join(space) : '';
+ var colonSeparator = space ? ': ' : ':';
+
+ if (node && node.toJSON && typeof node.toJSON === 'function') {
+ node = node.toJSON();
+ }
+
+ node = replacer.call(parent, key, node);
+
+ if (node === undefined) {
+ return;
+ }
+
+ if (typeof node !== 'object' || node === null) {
+ return json$2.stringify(node);
+ }
+
+ if (isArray$1(node)) {
+ var out = [];
+
+ for (var i = 0; i < node.length; i++) {
+ var item = stringify(node, i, node[i], level + 1) || json$2.stringify(null);
+ out.push(indent + space + item);
+ }
+
+ return '[' + out.join(',') + indent + ']';
+ } else {
+ if (seen.indexOf(node) !== -1) {
+ if (cycles) return json$2.stringify('__cycle__');
+ throw new TypeError('Converting circular structure to JSON');
+ } else seen.push(node);
+
+ var keys = objectKeys(node).sort(cmp && cmp(node));
+ var out = [];
+
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ var value = stringify(node, key, node[key], level + 1);
+ if (!value) continue;
+ var keyValue = json$2.stringify(key) + colonSeparator + value;
+ out.push(indent + space + keyValue);
+ }
+
+ seen.splice(seen.indexOf(node), 1);
+ return '{' + out.join(',') + indent + '}';
+ }
+ }({
+ '': obj
+ }, '', obj, 0);
+};
+
+var isArray$1 = Array.isArray || function (x) {
+ return {}.toString.call(x) === '[object Array]';
+};
+
+var objectKeys = Object.keys || function (obj) {
+ var has = Object.prototype.hasOwnProperty || function () {
+ return true;
+ };
+
+ var keys = [];
+
+ for (var key in obj) {
+ if (has.call(obj, key)) keys.push(key);
+ }
+
+ return keys;
+};
+
+var preserveCamelCase = function preserveCamelCase(string) {
+ var isLastCharLower = false;
+ var isLastCharUpper = false;
+ var isLastLastCharUpper = false;
+
+ for (var i = 0; i < string.length; i++) {
+ var character = string[i];
+
+ if (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {
+ string = string.slice(0, i) + '-' + string.slice(i);
+ isLastCharLower = false;
+ isLastLastCharUpper = isLastCharUpper;
+ isLastCharUpper = true;
+ i++;
+ } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {
+ string = string.slice(0, i - 1) + '-' + string.slice(i - 1);
+ isLastLastCharUpper = isLastCharUpper;
+ isLastCharUpper = false;
+ isLastCharLower = true;
+ } else {
+ isLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;
+ isLastLastCharUpper = isLastCharUpper;
+ isLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;
+ }
+ }
+
+ return string;
+};
+
+var camelCase = function camelCase(input, options) {
+ if (!(typeof input === 'string' || Array.isArray(input))) {
+ throw new TypeError('Expected the input to be `string | string[]`');
+ }
+
+ options = Object.assign({
+ pascalCase: false
+ }, options);
+
+ var postProcess = function postProcess(x) {
+ return options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;
+ };
+
+ if (Array.isArray(input)) {
+ input = input.map(function (x) {
+ return x.trim();
+ }).filter(function (x) {
+ return x.length;
+ }).join('-');
+ } else {
+ input = input.trim();
+ }
+
+ if (input.length === 0) {
+ return '';
+ }
+
+ if (input.length === 1) {
+ return options.pascalCase ? input.toUpperCase() : input.toLowerCase();
+ }
+
+ var hasUpperCase = input !== input.toLowerCase();
+
+ if (hasUpperCase) {
+ input = preserveCamelCase(input);
+ }
+
+ input = input.replace(/^[_.\- ]+/, '').toLowerCase().replace(/[_.\- ]+(\w|$)/g, function (_, p1) {
+ return p1.toUpperCase();
+ }).replace(/\d+(\w|$)/g, function (m) {
+ return m.toUpperCase();
+ });
+ return postProcess(input);
+};
+
+var camelcase = camelCase; // TODO: Remove this for the next major release
+
+var default_1$6 = camelCase;
+camelcase.default = default_1$6;
+
+/*!
+ * dashify <https://github.com/jonschlinkert/dashify>
+ *
+ * Copyright (c) 2015-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+
+var dashify = function dashify(str, options) {
+ if (typeof str !== 'string') throw new TypeError('expected a string');
+ return str.trim().replace(/([a-z])([A-Z])/g, '$1-$2').replace(/\W/g, function (m) {
+ return /[À-ž]/.test(m) ? m : '-';
+ }).replace(/^-+|-+$/g, '').replace(/-{2,}/g, function (m) {
+ return options && options.condense ? '-' : m;
+ }).toLowerCase();
+};
+
+var minimist = function minimist(args, opts) {
+ if (!opts) opts = {};
+ var flags = {
+ bools: {},
+ strings: {},
+ unknownFn: null
+ };
+
+ if (typeof opts['unknown'] === 'function') {
+ flags.unknownFn = opts['unknown'];
+ }
+
+ if (typeof opts['boolean'] === 'boolean' && opts['boolean']) {
+ flags.allBools = true;
+ } else {
+ [].concat(opts['boolean']).filter(Boolean).forEach(function (key) {
+ flags.bools[key] = true;
+ });
+ }
+
+ var aliases = {};
+ Object.keys(opts.alias || {}).forEach(function (key) {
+ aliases[key] = [].concat(opts.alias[key]);
+ aliases[key].forEach(function (x) {
+ aliases[x] = [key].concat(aliases[key].filter(function (y) {
+ return x !== y;
+ }));
+ });
+ });
+ [].concat(opts.string).filter(Boolean).forEach(function (key) {
+ flags.strings[key] = true;
+
+ if (aliases[key]) {
+ flags.strings[aliases[key]] = true;
+ }
+ });
+ var defaults = opts['default'] || {};
+ var argv = {
+ _: []
+ };
+ Object.keys(flags.bools).forEach(function (key) {
+ setArg(key, defaults[key] === undefined ? false : defaults[key]);
+ });
+ var notFlags = [];
+
+ if (args.indexOf('--') !== -1) {
+ notFlags = args.slice(args.indexOf('--') + 1);
+ args = args.slice(0, args.indexOf('--'));
+ }
+
+ function argDefined(key, arg) {
+ return flags.allBools && /^--[^=]+$/.test(arg) || flags.strings[key] || flags.bools[key] || aliases[key];
+ }
+
+ function setArg(key, val, arg) {
+ if (arg && flags.unknownFn && !argDefined(key, arg)) {
+ if (flags.unknownFn(arg) === false) return;
+ }
+
+ var value = !flags.strings[key] && isNumber(val) ? Number(val) : val;
+ setKey(argv, key.split('.'), value);
+ (aliases[key] || []).forEach(function (x) {
+ setKey(argv, x.split('.'), value);
+ });
+ }
+
+ function setKey(obj, keys, value) {
+ var o = obj;
+ keys.slice(0, -1).forEach(function (key) {
+ if (o[key] === undefined) o[key] = {};
+ o = o[key];
+ });
+ var key = keys[keys.length - 1];
+
+ if (o[key] === undefined || flags.bools[key] || typeof o[key] === 'boolean') {
+ o[key] = value;
+ } else if (Array.isArray(o[key])) {
+ o[key].push(value);
+ } else {
+ o[key] = [o[key], value];
+ }
+ }
+
+ function aliasIsBoolean(key) {
+ return aliases[key].some(function (x) {
+ return flags.bools[x];
+ });
+ }
+
+ for (var i = 0; i < args.length; i++) {
+ var arg = args[i];
+
+ if (/^--.+=/.test(arg)) {
+ // Using [\s\S] instead of . because js doesn't support the
+ // 'dotall' regex modifier. See:
+ // http://stackoverflow.com/a/1068308/13216
+ var m = arg.match(/^--([^=]+)=([\s\S]*)$/);
+ var key = m[1];
+ var value = m[2];
+
+ if (flags.bools[key]) {
+ value = value !== 'false';
+ }
+
+ setArg(key, value, arg);
+ } else if (/^--no-.+/.test(arg)) {
+ var key = arg.match(/^--no-(.+)/)[1];
+ setArg(key, false, arg);
+ } else if (/^--.+/.test(arg)) {
+ var key = arg.match(/^--(.+)/)[1];
+ var next = args[i + 1];
+
+ if (next !== undefined && !/^-/.test(next) && !flags.bools[key] && !flags.allBools && (aliases[key] ? !aliasIsBoolean(key) : true)) {
+ setArg(key, next, arg);
+ i++;
+ } else if (/^(true|false)$/.test(next)) {
+ setArg(key, next === 'true', arg);
+ i++;
+ } else {
+ setArg(key, flags.strings[key] ? '' : true, arg);
+ }
+ } else if (/^-[^-]+/.test(arg)) {
+ var letters = arg.slice(1, -1).split('');
+ var broken = false;
+
+ for (var j = 0; j < letters.length; j++) {
+ var next = arg.slice(j + 2);
+
+ if (next === '-') {
+ setArg(letters[j], next, arg);
+ continue;
+ }
+
+ if (/[A-Za-z]/.test(letters[j]) && /=/.test(next)) {
+ setArg(letters[j], next.split('=')[1], arg);
+ broken = true;
+ break;
+ }
+
+ if (/[A-Za-z]/.test(letters[j]) && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
+ setArg(letters[j], next, arg);
+ broken = true;
+ break;
+ }
+
+ if (letters[j + 1] && letters[j + 1].match(/\W/)) {
+ setArg(letters[j], arg.slice(j + 2), arg);
+ broken = true;
+ break;
+ } else {
+ setArg(letters[j], flags.strings[letters[j]] ? '' : true, arg);
+ }
+ }
+
+ var key = arg.slice(-1)[0];
+
+ if (!broken && key !== '-') {
+ if (args[i + 1] && !/^(-|--)[^-]/.test(args[i + 1]) && !flags.bools[key] && (aliases[key] ? !aliasIsBoolean(key) : true)) {
+ setArg(key, args[i + 1], arg);
+ i++;
+ } else if (args[i + 1] && /true|false/.test(args[i + 1])) {
+ setArg(key, args[i + 1] === 'true', arg);
+ i++;
+ } else {
+ setArg(key, flags.strings[key] ? '' : true, arg);
+ }
+ }
+ } else {
+ if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
+ argv._.push(flags.strings['_'] || !isNumber(arg) ? arg : Number(arg));
+ }
+
+ if (opts.stopEarly) {
+ argv._.push.apply(argv._, args.slice(i + 1));
+
+ break;
+ }
+ }
+ }
+
+ Object.keys(defaults).forEach(function (key) {
+ if (!hasKey$1(argv, key.split('.'))) {
+ setKey(argv, key.split('.'), defaults[key]);
+ (aliases[key] || []).forEach(function (x) {
+ setKey(argv, x.split('.'), defaults[key]);
+ });
+ }
+ });
+
+ if (opts['--']) {
+ argv['--'] = new Array();
+ notFlags.forEach(function (key) {
+ argv['--'].push(key);
+ });
+ } else {
+ notFlags.forEach(function (key) {
+ argv._.push(key);
+ });
+ }
+
+ return argv;
+};
+
+function hasKey$1(obj, keys) {
+ var o = obj;
+ keys.slice(0, -1).forEach(function (key) {
+ o = o[key] || {};
+ });
+ var key = keys[keys.length - 1];
+ return key in o;
+}
+
+function isNumber(x) {
+ if (typeof x === 'number') return true;
+ if (/^0x[0-9a-f]+$/i.test(x)) return true;
+ return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x);
+}
+
+var PLACEHOLDER = null;
+/**
+ * unspecified boolean flag without default value is parsed as `undefined` instead of `false`
+ */
+
+var minimist_1 = function minimist_1(args, options) {
+ var boolean = options.boolean || [];
+ var defaults = options.default || {};
+ var booleanWithoutDefault = boolean.filter(function (key) {
+ return !(key in defaults);
+ });
+ var newDefaults = Object.assign({}, defaults, booleanWithoutDefault.reduce(function (reduced, key) {
+ return Object.assign(reduced, {
+ [key]: PLACEHOLDER
+ });
+ }, {}));
+ var parsed = minimist(args, Object.assign({}, options, {
+ default: newDefaults
+ }));
+ return Object.keys(parsed).reduce(function (reduced, key) {
+ if (parsed[key] !== PLACEHOLDER) {
+ reduced[key] = parsed[key];
+ }
+
+ return reduced;
+ }, {});
+};
+
+var categoryOrder = [coreOptions.CATEGORY_OUTPUT, coreOptions.CATEGORY_FORMAT, coreOptions.CATEGORY_CONFIG, coreOptions.CATEGORY_EDITOR, coreOptions.CATEGORY_OTHER];
+/**
+ * {
+ * [optionName]: {
+ * // The type of the option. For 'choice', see also `choices` below.
+ * // When passing a type other than the ones listed below, the option is
+ * // treated as taking any string as argument, and `--option <${type}>` will
+ * // be displayed in --help.
+ * type: "boolean" | "choice" | "int" | string;
+ *
+ * // Default value to be passed to the minimist option `default`.
+ * default?: any;
+ *
+ * // Alias name to be passed to the minimist option `alias`.
+ * alias?: string;
+ *
+ * // For grouping options by category in --help.
+ * category?: string;
+ *
+ * // Description to be displayed in --help. If omitted, the option won't be
+ * // shown at all in --help (but see also `oppositeDescription` below).
+ * description?: string;
+ *
+ * // Description for `--no-${name}` to be displayed in --help. If omitted,
+ * // `--no-${name}` won't be shown.
+ * oppositeDescription?: string;
+ *
+ * // Indicate if this option is simply passed to the API.
+ * // true: use camelified name as the API option name.
+ * // string: use this value as the API option name.
+ * forwardToApi?: boolean | string;
+ *
+ * // Indicate that a CLI flag should be an array when forwarded to the API.
+ * array?: boolean;
+ *
+ * // Specify available choices for validation. They will also be displayed
+ * // in --help as <a|b|c>.
+ * // Use an object instead of a string if a choice is deprecated and should
+ * // be treated as `redirect` instead, or if you'd like to add description for
+ * // the choice.
+ * choices?: Array<
+ * | string
+ * | { value: string, description?: string, deprecated?: boolean, redirect?: string }
+ * >;
+ *
+ * // If the option has a value that is an exception to the regular value
+ * // constraints, indicate that value here (or use a function for more
+ * // flexibility).
+ * exception?: ((value: any) => boolean);
+ *
+ * // Indicate that the option is deprecated. Use a string to add an extra
+ * // message to --help for the option, for example to suggest a replacement
+ * // option.
+ * deprecated?: true | string;
+ * }
+ * }
+ *
+ * Note: The options below are sorted alphabetically.
+ */
+
+var options$8 = {
+ check: {
+ type: "boolean",
+ category: coreOptions.CATEGORY_OUTPUT,
+ alias: "c",
+ description: dedent_1`
+ Check if the given files are formatted, print a human-friendly summary
+ message and paths to unformatted files (see also --list-different).
+ `
+ },
+ color: {
+ // The supports-color package (a sub sub dependency) looks directly at
+ // `process.argv` for `--no-color` and such-like options. The reason it is
+ // listed here is to avoid "Ignored unknown option: --no-color" warnings.
+ // See https://github.com/chalk/supports-color/#info for more information.
+ type: "boolean",
+ default: true,
+ description: "Colorize error messages.",
+ oppositeDescription: "Do not colorize error messages."
+ },
+ config: {
+ type: "path",
+ category: coreOptions.CATEGORY_CONFIG,
+ description: "Path to a Prettier configuration file (.prettierrc, package.json, prettier.config.js).",
+ oppositeDescription: "Do not look for a configuration file.",
+ exception: function exception(value) {
+ return value === false;
+ }
+ },
+ "config-precedence": {
+ type: "choice",
+ category: coreOptions.CATEGORY_CONFIG,
+ default: "cli-override",
+ choices: [{
+ value: "cli-override",
+ description: "CLI options take precedence over config file"
+ }, {
+ value: "file-override",
+ description: "Config file take precedence over CLI options"
+ }, {
+ value: "prefer-file",
+ description: dedent_1`
+ If a config file is found will evaluate it and ignore other CLI options.
+ If no config file is found CLI options will evaluate as normal.
+ `
+ }],
+ description: "Define in which order config files and CLI options should be evaluated."
+ },
+ "debug-benchmark": {
+ // Run the formatting benchmarks. Requires 'benchmark' module to be installed.
+ type: "boolean"
+ },
+ "debug-check": {
+ // Run the formatting once again on the formatted output, throw if different.
+ type: "boolean"
+ },
+ "debug-print-doc": {
+ type: "boolean"
+ },
+ "debug-repeat": {
+ // Repeat the formatting a few times and measure the average duration.
+ type: "int",
+ default: 0
+ },
+ editorconfig: {
+ type: "boolean",
+ category: coreOptions.CATEGORY_CONFIG,
+ description: "Take .editorconfig into account when parsing configuration.",
+ oppositeDescription: "Don't take .editorconfig into account when parsing configuration.",
+ default: true
+ },
+ "find-config-path": {
+ type: "path",
+ category: coreOptions.CATEGORY_CONFIG,
+ description: "Find and print the path to a configuration file for the given input file."
+ },
+ "file-info": {
+ type: "path",
+ description: dedent_1`
+ Extract the following info (as JSON) for a given file path. Reported fields:
+ * ignored (boolean) - true if file path is filtered by --ignore-path
+ * inferredParser (string | null) - name of parser inferred from file path
+ `
+ },
+ help: {
+ type: "flag",
+ alias: "h",
+ description: dedent_1`
+ Show CLI usage, or details about the given flag.
+ Example: --help write
+ `,
+ exception: function exception(value) {
+ return value === "";
+ }
+ },
+ "ignore-path": {
+ type: "path",
+ category: coreOptions.CATEGORY_CONFIG,
+ default: ".prettierignore",
+ description: "Path to a file with patterns describing files to ignore."
+ },
+ "list-different": {
+ type: "boolean",
+ category: coreOptions.CATEGORY_OUTPUT,
+ alias: "l",
+ description: "Print the names of files that are different from Prettier's formatting (see also --check)."
+ },
+ loglevel: {
+ type: "choice",
+ description: "What level of logs to report.",
+ default: "log",
+ choices: ["silent", "error", "warn", "log", "debug"]
+ },
+ stdin: {
+ type: "boolean",
+ description: "Force reading input from stdin."
+ },
+ "support-info": {
+ type: "boolean",
+ description: "Print support information as JSON."
+ },
+ version: {
+ type: "boolean",
+ alias: "v",
+ description: "Print Prettier version."
+ },
+ "with-node-modules": {
+ type: "boolean",
+ category: coreOptions.CATEGORY_CONFIG,
+ description: "Process files inside 'node_modules' directory."
+ },
+ write: {
+ type: "boolean",
+ category: coreOptions.CATEGORY_OUTPUT,
+ description: "Edit files in-place. (Beware!)"
+ }
+};
+var usageSummary = dedent_1`
+ Usage: prettier [options] [file/glob ...]
+
+ By default, output is written to stdout.
+ Stdin is read if it is piped to Prettier and no files are given.
+`;
+var constant = {
+ categoryOrder,
+ options: options$8,
+ usageSummary
+};
+
+// which causes unwanted lines in the output. An additional check for isCI() helps.
+// See https://github.com/prettier/prettier/issues/5801
+
+
+var isTty = function isTTY() {
+ return process.stdout.isTTY && !thirdParty.isCI();
+};
+
+var OPTION_USAGE_THRESHOLD = 25;
+var CHOICE_USAGE_MARGIN = 3;
+var CHOICE_USAGE_INDENTATION = 2;
+
+function getOptions(argv, detailedOptions) {
+ return detailedOptions.filter(function (option) {
+ return option.forwardToApi;
+ }).reduce(function (current, option) {
+ return Object.assign(current, {
+ [option.forwardToApi]: argv[option.name]
+ });
+ }, {});
+}
+
+function cliifyOptions(object, apiDetailedOptionMap) {
+ return Object.keys(object || {}).reduce(function (output, key) {
+ var apiOption = apiDetailedOptionMap[key];
+ var cliKey = apiOption ? apiOption.name : key;
+ output[dashify(cliKey)] = object[key];
+ return output;
+ }, {});
+}
+
+function diff(a, b) {
+ return require$$0$1.createTwoFilesPatch("", "", a, b, "", "", {
+ context: 2
+ });
+}
+
+function handleError(context, filename, error) {
+ if (error instanceof errors.UndefinedParserError) {
+ if (context.argv["write"] && isTty()) {
+ readline$1.clearLine(process.stdout, 0);
+ readline$1.cursorTo(process.stdout, 0, null);
+ }
+
+ if (!context.argv["check"] && !context.argv["list-different"]) {
+ process.exitCode = 2;
+ }
+
+ context.logger.error(error.message);
+ return;
+ }
+
+ if (context.argv["write"]) {
+ // Add newline to split errors from filename line.
+ process.stdout.write("\n");
+ }
+
+ var isParseError = Boolean(error && error.loc);
+ var isValidationError = /^Invalid \S+ value\./.test(error && error.message);
+
+ if (isParseError) {
+ // `invalid.js: SyntaxError: Unexpected token (1:1)`.
+ context.logger.error(`${filename}: ${String(error)}`);
+ } else if (isValidationError || error instanceof errors.ConfigError) {
+ // `Invalid printWidth value. Expected an integer, but received 0.5.`
+ context.logger.error(error.message); // If validation fails for one file, it will fail for all of them.
+
+ process.exit(1);
+ } else if (error instanceof errors.DebugError) {
+ // `invalid.js: Some debug error message`
+ context.logger.error(`${filename}: ${error.message}`);
+ } else {
+ // `invalid.js: Error: Some unexpected error\n[stack trace]`
+ context.logger.error(filename + ": " + (error.stack || error));
+ } // Don't exit the process if one file failed
+
+
+ process.exitCode = 2;
+}
+
+function logResolvedConfigPathOrDie(context) {
+ var configFile = prettier.resolveConfigFile.sync(context.argv["find-config-path"]);
+
+ if (configFile) {
+ context.logger.log(path$2.relative(process.cwd(), configFile));
+ } else {
+ process.exit(1);
+ }
+}
+
+function logFileInfoOrDie(context) {
+ var options = {
+ ignorePath: context.argv["ignore-path"],
+ withNodeModules: context.argv["with-node-modules"],
+ plugins: context.argv["plugin"],
+ pluginSearchDirs: context.argv["plugin-search-dir"]
+ };
+ context.logger.log(prettier.format(jsonStableStringify(prettier.getFileInfo.sync(context.argv["file-info"], options)), {
+ parser: "json"
+ }));
+}
+
+function writeOutput(context, result, options) {
+ // Don't use `console.log` here since it adds an extra newline at the end.
+ process.stdout.write(context.argv["debug-check"] ? result.filepath : result.formatted);
+
+ if (options && options.cursorOffset >= 0) {
+ process.stderr.write(result.cursorOffset + "\n");
+ }
+}
+
+function listDifferent(context, input, options, filename) {
+ if (!context.argv["check"] && !context.argv["list-different"]) {
+ return;
+ }
+
+ try {
+ if (!options.filepath && !options.parser) {
+ throw new errors.UndefinedParserError("No parser and no file path given, couldn't infer a parser.");
+ }
+
+ if (!prettier.check(input, options)) {
+ if (!context.argv["write"]) {
+ context.logger.log(filename);
+ process.exitCode = 1;
+ }
+ }
+ } catch (error) {
+ context.logger.error(error.message);
+ }
+
+ return true;
+}
+
+function format$1(context, input, opt) {
+ if (!opt.parser && !opt.filepath) {
+ throw new errors.UndefinedParserError("No parser and no file path given, couldn't infer a parser.");
+ }
+
+ if (context.argv["debug-print-doc"]) {
+ var doc = prettier.__debug.printToDoc(input, opt);
+
+ return {
+ formatted: prettier.__debug.formatDoc(doc)
+ };
+ }
+
+ if (context.argv["debug-check"]) {
+ var pp = prettier.format(input, opt);
+ var pppp = prettier.format(pp, opt);
+
+ if (pp !== pppp) {
+ throw new errors.DebugError("prettier(input) !== prettier(prettier(input))\n" + diff(pp, pppp));
+ } else {
+ var _stringify = function _stringify(obj) {
+ return JSON.stringify(obj, null, 2);
+ };
+
+ var ast = _stringify(prettier.__debug.parse(input, opt,
+ /* massage */
+ true).ast);
+
+ var past = _stringify(prettier.__debug.parse(pp, opt,
+ /* massage */
+ true).ast);
+
+ if (ast !== past) {
+ var MAX_AST_SIZE = 2097152; // 2MB
+
+ var astDiff = ast.length > MAX_AST_SIZE || past.length > MAX_AST_SIZE ? "AST diff too large to render" : diff(ast, past);
+ throw new errors.DebugError("ast(input) !== ast(prettier(input))\n" + astDiff + "\n" + diff(input, pp));
+ }
+ }
+
+ return {
+ formatted: pp,
+ filepath: opt.filepath || "(stdin)\n"
+ };
+ }
+ /* istanbul ignore if */
+
+
+ if (context.argv["debug-benchmark"]) {
+ var benchmark;
+
+ try {
+ benchmark = require("benchmark");
+ } catch (err) {
+ context.logger.debug("'--debug-benchmark' requires the 'benchmark' package to be installed.");
+ process.exit(2);
+ }
+
+ context.logger.debug("'--debug-benchmark' option found, measuring formatWithCursor with 'benchmark' module.");
+ var suite = new benchmark.Suite();
+ suite.add("format", function () {
+ prettier.formatWithCursor(input, opt);
+ }).on("cycle", function (event) {
+ var results = {
+ benchmark: String(event.target),
+ hz: event.target.hz,
+ ms: event.target.times.cycle * 1000
+ };
+ context.logger.debug("'--debug-benchmark' measurements for formatWithCursor: " + JSON.stringify(results, null, 2));
+ }).run({
+ async: false
+ });
+ } else if (context.argv["debug-repeat"] > 0) {
+ var repeat = context.argv["debug-repeat"];
+ context.logger.debug("'--debug-repeat' option found, running formatWithCursor " + repeat + " times."); // should be using `performance.now()`, but only `Date` is cross-platform enough
+
+ var now = Date.now ? function () {
+ return Date.now();
+ } : function () {
+ return +new Date();
+ };
+ var totalMs = 0;
+
+ for (var i = 0; i < repeat; ++i) {
+ var startMs = now();
+ prettier.formatWithCursor(input, opt);
+ totalMs += now() - startMs;
+ }
+
+ var averageMs = totalMs / repeat;
+ var results = {
+ repeat,
+ hz: 1000 / averageMs,
+ ms: averageMs
+ };
+ context.logger.debug("'--debug-repeat' measurements for formatWithCursor: " + JSON.stringify(results, null, 2));
+ }
+
+ return prettier.formatWithCursor(input, opt);
+}
+
+function getOptionsOrDie(context, filePath) {
+ try {
+ if (context.argv["config"] === false) {
+ context.logger.debug("'--no-config' option found, skip loading config file.");
+ return null;
+ }
+
+ context.logger.debug(context.argv["config"] ? `load config file from '${context.argv["config"]}'` : `resolve config from '${filePath}'`);
+ var options = prettier.resolveConfig.sync(filePath, {
+ editorconfig: context.argv["editorconfig"],
+ config: context.argv["config"]
+ });
+ context.logger.debug("loaded options `" + JSON.stringify(options) + "`");
+ return options;
+ } catch (error) {
+ context.logger.error(`Invalid configuration file \`${filePath}\`: ` + error.message);
+ process.exit(2);
+ }
+}
+
+function getOptionsForFile(context, filepath) {
+ var options = getOptionsOrDie(context, filepath);
+ var hasPlugins = options && options.plugins;
+
+ if (hasPlugins) {
+ pushContextPlugins(context, options.plugins);
+ }
+
+ var appliedOptions = Object.assign({
+ filepath
+ }, applyConfigPrecedence(context, options && optionsNormalizer.normalizeApiOptions(options, context.supportOptions, {
+ logger: context.logger
+ })));
+ context.logger.debug(`applied config-precedence (${context.argv["config-precedence"]}): ` + `${JSON.stringify(appliedOptions)}`);
+
+ if (hasPlugins) {
+ popContextPlugins(context);
+ }
+
+ return appliedOptions;
+}
+
+function parseArgsToOptions(context, overrideDefaults) {
+ var minimistOptions = createMinimistOptions(context.detailedOptions);
+ var apiDetailedOptionMap = createApiDetailedOptionMap(context.detailedOptions);
+ return getOptions(optionsNormalizer.normalizeCliOptions(minimist_1(context.args, Object.assign({
+ string: minimistOptions.string,
+ boolean: minimistOptions.boolean,
+ default: cliifyOptions(overrideDefaults, apiDetailedOptionMap)
+ })), context.detailedOptions, {
+ logger: false
+ }), context.detailedOptions);
+}
+
+function applyConfigPrecedence(context, options) {
+ try {
+ switch (context.argv["config-precedence"]) {
+ case "cli-override":
+ return parseArgsToOptions(context, options);
+
+ case "file-override":
+ return Object.assign({}, parseArgsToOptions(context), options);
+
+ case "prefer-file":
+ return options || parseArgsToOptions(context);
+ }
+ } catch (error) {
+ context.logger.error(error.toString());
+ process.exit(2);
+ }
+}
+
+function formatStdin(context) {
+ var filepath = context.argv["stdin-filepath"] ? path$2.resolve(process.cwd(), context.argv["stdin-filepath"]) : process.cwd();
+ var ignorer = createIgnorerFromContextOrDie(context);
+ var relativeFilepath = path$2.relative(process.cwd(), filepath);
+ thirdParty.getStream(process.stdin).then(function (input) {
+ if (relativeFilepath && ignorer.filter([relativeFilepath]).length === 0) {
+ writeOutput(context, {
+ formatted: input
+ });
+ return;
+ }
+
+ var options = getOptionsForFile(context, filepath);
+
+ if (listDifferent(context, input, options, "(stdin)")) {
+ return;
+ }
+
+ writeOutput(context, format$1(context, input, options), options);
+ }).catch(function (error) {
+ handleError(context, relativeFilepath || "stdin", error);
+ });
+}
+
+function createIgnorerFromContextOrDie(context) {
+ try {
+ return createIgnorer_1.sync(context.argv["ignore-path"], context.argv["with-node-modules"]);
+ } catch (e) {
+ context.logger.error(e.message);
+ process.exit(2);
+ }
+}
+
+function eachFilename(context, patterns, callback) {
+ // The '!./' globs are due to https://github.com/prettier/prettier/issues/2110
+ var ignoreNodeModules = context.argv["with-node-modules"] !== true;
+
+ if (ignoreNodeModules) {
+ patterns = patterns.concat(["!**/node_modules/**", "!./node_modules/**"]);
+ }
+
+ patterns = patterns.concat(["!**/.{git,svn,hg}/**", "!./.{git,svn,hg}/**"]);
+
+ try {
+ var filePaths = globby.sync(patterns, {
+ dot: true,
+ nodir: true
+ }).map(function (filePath) {
+ return path$2.relative(process.cwd(), filePath);
+ });
+
+ if (filePaths.length === 0) {
+ context.logger.error(`No matching files. Patterns tried: ${patterns.join(" ")}`);
+ process.exitCode = 2;
+ return;
+ }
+
+ filePaths.forEach(function (filePath) {
+ return callback(filePath);
+ });
+ } catch (error) {
+ context.logger.error(`Unable to expand glob patterns: ${patterns.join(" ")}\n${error.message}`); // Don't exit the process if one pattern failed
+
+ process.exitCode = 2;
+ }
+}
+
+function formatFiles(context) {
+ // The ignorer will be used to filter file paths after the glob is checked,
+ // before any files are actually written
+ var ignorer = createIgnorerFromContextOrDie(context);
+ var numberOfUnformattedFilesFound = 0;
+
+ if (context.argv["check"]) {
+ context.logger.log("Checking formatting...");
+ }
+
+ eachFilename(context, context.filePatterns, function (filename) {
+ var fileIgnored = ignorer.filter([filename]).length === 0;
+
+ if (fileIgnored && (context.argv["debug-check"] || context.argv["write"] || context.argv["check"] || context.argv["list-different"])) {
+ return;
+ }
+
+ var options = Object.assign(getOptionsForFile(context, filename), {
+ filepath: filename
+ });
+
+ if (isTty()) {
+ context.logger.log(filename, {
+ newline: false
+ });
+ }
+
+ var input;
+
+ try {
+ input = fs$1.readFileSync(filename, "utf8");
+ } catch (error) {
+ // Add newline to split errors from filename line.
+ context.logger.log("");
+ context.logger.error(`Unable to read file: ${filename}\n${error.message}`); // Don't exit the process if one file failed
+
+ process.exitCode = 2;
+ return;
+ }
+
+ if (fileIgnored) {
+ writeOutput(context, {
+ formatted: input
+ }, options);
+ return;
+ }
+
+ var start = Date.now();
+ var result;
+ var output;
+
+ try {
+ result = format$1(context, input, Object.assign({}, options, {
+ filepath: filename
+ }));
+ output = result.formatted;
+ } catch (error) {
+ handleError(context, filename, error);
+ return;
+ }
+
+ var isDifferent = output !== input;
+
+ if (isTty()) {
+ // Remove previously printed filename to log it with duration.
+ readline$1.clearLine(process.stdout, 0);
+ readline$1.cursorTo(process.stdout, 0, null);
+ }
+
+ if (context.argv["write"]) {
+ // Don't write the file if it won't change in order not to invalidate
+ // mtime based caches.
+ if (isDifferent) {
+ if (!context.argv["check"] && !context.argv["list-different"]) {
+ context.logger.log(`${filename} ${Date.now() - start}ms`);
+ }
+
+ try {
+ fs$1.writeFileSync(filename, output, "utf8");
+ } catch (error) {
+ context.logger.error(`Unable to write file: ${filename}\n${error.message}`); // Don't exit the process if one file failed
+
+ process.exitCode = 2;
+ }
+ } else if (!context.argv["check"] && !context.argv["list-different"]) {
+ context.logger.log(`${chalk.grey(filename)} ${Date.now() - start}ms`);
+ }
+ } else if (context.argv["debug-check"]) {
+ if (result.filepath) {
+ context.logger.log(result.filepath);
+ } else {
+ process.exitCode = 2;
+ }
+ } else if (!context.argv["check"] && !context.argv["list-different"]) {
+ writeOutput(context, result, options);
+ }
+
+ if ((context.argv["check"] || context.argv["list-different"]) && isDifferent) {
+ context.logger.log(filename);
+ numberOfUnformattedFilesFound += 1;
+ }
+ }); // Print check summary based on expected exit code
+
+ if (context.argv["check"]) {
+ context.logger.log(numberOfUnformattedFilesFound === 0 ? "All matched files use Prettier code style!" : context.argv["write"] ? "Code style issues fixed in the above file(s)." : "Code style issues found in the above file(s). Forgot to run Prettier?");
+ } // Ensure non-zero exitCode when using --check/list-different is not combined with --write
+
+
+ if ((context.argv["check"] || context.argv["list-different"]) && numberOfUnformattedFilesFound > 0 && !process.exitCode && !context.argv["write"]) {
+ process.exitCode = 1;
+ }
+}
+
+function getOptionsWithOpposites(options) {
+ // Add --no-foo after --foo.
+ var optionsWithOpposites = options.map(function (option) {
+ return [option.description ? option : null, option.oppositeDescription ? Object.assign({}, option, {
+ name: `no-${option.name}`,
+ type: "boolean",
+ description: option.oppositeDescription
+ }) : null];
+ });
+ return flattenArray(optionsWithOpposites).filter(Boolean);
+}
+
+function createUsage(context) {
+ var options = getOptionsWithOpposites(context.detailedOptions).filter( // remove unnecessary option (e.g. `semi`, `color`, etc.), which is only used for --help <flag>
+ function (option) {
+ return !(option.type === "boolean" && option.oppositeDescription && !option.name.startsWith("no-"));
+ });
+ var groupedOptions = groupBy(options, function (option) {
+ return option.category;
+ });
+ var firstCategories = constant.categoryOrder.slice(0, -1);
+ var lastCategories = constant.categoryOrder.slice(-1);
+ var restCategories = Object.keys(groupedOptions).filter(function (category) {
+ return firstCategories.indexOf(category) === -1 && lastCategories.indexOf(category) === -1;
+ });
+ var allCategories = firstCategories.concat(restCategories, lastCategories);
+ var optionsUsage = allCategories.map(function (category) {
+ var categoryOptions = groupedOptions[category].map(function (option) {
+ return createOptionUsage(context, option, OPTION_USAGE_THRESHOLD);
+ }).join("\n");
+ return `${category} options:\n\n${indent$b(categoryOptions, 2)}`;
+ });
+ return [constant.usageSummary].concat(optionsUsage, [""]).join("\n\n");
+}
+
+function createOptionUsage(context, option, threshold) {
+ var header = createOptionUsageHeader(option);
+ var optionDefaultValue = getOptionDefaultValue(context, option.name);
+ return createOptionUsageRow(header, `${option.description}${optionDefaultValue === undefined ? "" : `\nDefaults to ${createDefaultValueDisplay(optionDefaultValue)}.`}`, threshold);
+}
+
+function createDefaultValueDisplay(value) {
+ return Array.isArray(value) ? `[${value.map(createDefaultValueDisplay).join(", ")}]` : value;
+}
+
+function createOptionUsageHeader(option) {
+ var name = `--${option.name}`;
+ var alias = option.alias ? `-${option.alias},` : null;
+ var type = createOptionUsageType(option);
+ return [alias, name, type].filter(Boolean).join(" ");
+}
+
+function createOptionUsageRow(header, content, threshold) {
+ var separator = header.length >= threshold ? `\n${" ".repeat(threshold)}` : " ".repeat(threshold - header.length);
+ var description = content.replace(/\n/g, `\n${" ".repeat(threshold)}`);
+ return `${header}${separator}${description}`;
+}
+
+function createOptionUsageType(option) {
+ switch (option.type) {
+ case "boolean":
+ return null;
+
+ case "choice":
+ return `<${option.choices.filter(function (choice) {
+ return choice.since !== null;
+ }).filter(function (choice) {
+ return !choice.deprecated;
+ }).map(function (choice) {
+ return choice.value;
+ }).join("|")}>`;
+
+ default:
+ return `<${option.type}>`;
+ }
+}
+
+function flattenArray(array) {
+ return [].concat.apply([], array);
+}
+
+function createChoiceUsages(choices, margin, indentation) {
+ var activeChoices = choices.filter(function (choice) {
+ return !choice.deprecated && choice.since !== null;
+ });
+ var threshold = activeChoices.map(function (choice) {
+ return choice.value.length;
+ }).reduce(function (current, length) {
+ return Math.max(current, length);
+ }, 0) + margin;
+ return activeChoices.map(function (choice) {
+ return indent$b(createOptionUsageRow(choice.value, choice.description, threshold), indentation);
+ });
+}
+
+function createDetailedUsage(context, flag) {
+ var option = getOptionsWithOpposites(context.detailedOptions).find(function (option) {
+ return option.name === flag || option.alias === flag;
+ });
+ var header = createOptionUsageHeader(option);
+ var description = `\n\n${indent$b(option.description, 2)}`;
+ var choices = option.type !== "choice" ? "" : `\n\nValid options:\n\n${createChoiceUsages(option.choices, CHOICE_USAGE_MARGIN, CHOICE_USAGE_INDENTATION).join("\n")}`;
+ var optionDefaultValue = getOptionDefaultValue(context, option.name);
+ var defaults = optionDefaultValue !== undefined ? `\n\nDefault: ${createDefaultValueDisplay(optionDefaultValue)}` : "";
+ var pluginDefaults = option.pluginDefaults && Object.keys(option.pluginDefaults).length ? `\nPlugin defaults:${Object.keys(option.pluginDefaults).map(function (key) {
+ return `\n* ${key}: ${createDefaultValueDisplay(option.pluginDefaults[key])}`;
+ })}` : "";
+ return `${header}${description}${choices}${defaults}${pluginDefaults}`;
+}
+
+function getOptionDefaultValue(context, optionName) {
+ // --no-option
+ if (!(optionName in context.detailedOptionMap)) {
+ return undefined;
+ }
+
+ var option = context.detailedOptionMap[optionName];
+
+ if (option.default !== undefined) {
+ return option.default;
+ }
+
+ var optionCamelName = camelcase(optionName);
+
+ if (optionCamelName in context.apiDefaultOptions) {
+ return context.apiDefaultOptions[optionCamelName];
+ }
+
+ return undefined;
+}
+
+function indent$b(str, spaces) {
+ return str.replace(/^/gm, " ".repeat(spaces));
+}
+
+function groupBy(array, getKey) {
+ return array.reduce(function (obj, item) {
+ var key = getKey(item);
+ var previousItems = key in obj ? obj[key] : [];
+ return Object.assign({}, obj, {
+ [key]: previousItems.concat(item)
+ });
+ }, Object.create(null));
+}
+
+function pick(object, keys) {
+ return !keys ? object : keys.reduce(function (reduced, key) {
+ return Object.assign(reduced, {
+ [key]: object[key]
+ });
+ }, {});
+}
+
+function createLogger(logLevel) {
+ return {
+ warn: createLogFunc("warn", "yellow"),
+ error: createLogFunc("error", "red"),
+ debug: createLogFunc("debug", "blue"),
+ log: createLogFunc("log")
+ };
+
+ function createLogFunc(loggerName, color) {
+ if (!shouldLog(loggerName)) {
+ return function () {};
+ }
+
+ var prefix = color ? `[${chalk[color](loggerName)}] ` : "";
+ return function (message, opts) {
+ opts = Object.assign({
+ newline: true
+ }, opts);
+ var stream = process[loggerName === "log" ? "stdout" : "stderr"];
+ stream.write(message.replace(/^/gm, prefix) + (opts.newline ? "\n" : ""));
+ };
+ }
+
+ function shouldLog(loggerName) {
+ switch (logLevel) {
+ case "silent":
+ return false;
+
+ default:
+ return true;
+
+ case "debug":
+ if (loggerName === "debug") {
+ return true;
+ }
+
+ // fall through
+
+ case "log":
+ if (loggerName === "log") {
+ return true;
+ }
+
+ // fall through
+
+ case "warn":
+ if (loggerName === "warn") {
+ return true;
+ }
+
+ // fall through
+
+ case "error":
+ return loggerName === "error";
+ }
+ }
+}
+
+function normalizeDetailedOption(name, option) {
+ return Object.assign({
+ category: coreOptions.CATEGORY_OTHER
+ }, option, {
+ choices: option.choices && option.choices.map(function (choice) {
+ var newChoice = Object.assign({
+ description: "",
+ deprecated: false
+ }, typeof choice === "object" ? choice : {
+ value: choice
+ });
+
+ if (newChoice.value === true) {
+ newChoice.value = ""; // backward compatibility for original boolean option
+ }
+
+ return newChoice;
+ })
+ });
+}
+
+function normalizeDetailedOptionMap(detailedOptionMap) {
+ return Object.keys(detailedOptionMap).sort().reduce(function (normalized, name) {
+ var option = detailedOptionMap[name];
+ return Object.assign(normalized, {
+ [name]: normalizeDetailedOption(name, option)
+ });
+ }, {});
+}
+
+function createMinimistOptions(detailedOptions) {
+ return {
+ // we use vnopts' AliasSchema to handle aliases for better error messages
+ alias: {},
+ boolean: detailedOptions.filter(function (option) {
+ return option.type === "boolean";
+ }).map(function (option) {
+ return [option.name].concat(option.alias || []);
+ }).reduce(function (a, b) {
+ return a.concat(b);
+ }),
+ string: detailedOptions.filter(function (option) {
+ return option.type !== "boolean";
+ }).map(function (option) {
+ return [option.name].concat(option.alias || []);
+ }).reduce(function (a, b) {
+ return a.concat(b);
+ }),
+ default: detailedOptions.filter(function (option) {
+ return !option.deprecated;
+ }).filter(function (option) {
+ return !option.forwardToApi || option.name === "plugin" || option.name === "plugin-search-dir";
+ }).filter(function (option) {
+ return option.default !== undefined;
+ }).reduce(function (current, option) {
+ return Object.assign({
+ [option.name]: option.default
+ }, current);
+ }, {})
+ };
+}
+
+function createApiDetailedOptionMap(detailedOptions) {
+ return detailedOptions.reduce(function (current, option) {
+ return option.forwardToApi && option.forwardToApi !== option.name ? Object.assign(current, {
+ [option.forwardToApi]: option
+ }) : current;
+ }, {});
+}
+
+function createDetailedOptionMap(supportOptions) {
+ return supportOptions.reduce(function (reduced, option) {
+ var newOption = Object.assign({}, option, {
+ name: option.cliName || dashify(option.name),
+ description: option.cliDescription || option.description,
+ category: option.cliCategory || coreOptions.CATEGORY_FORMAT,
+ forwardToApi: option.name
+ });
+
+ if (option.deprecated) {
+ delete newOption.forwardToApi;
+ delete newOption.description;
+ delete newOption.oppositeDescription;
+ newOption.deprecated = true;
+ }
+
+ return Object.assign(reduced, {
+ [newOption.name]: newOption
+ });
+ }, {});
+} //-----------------------------context-util-start-------------------------------
+
+/**
+ * @typedef {Object} Context
+ * @property logger
+ * @property args
+ * @property argv
+ * @property filePatterns
+ * @property supportOptions
+ * @property detailedOptions
+ * @property detailedOptionMap
+ * @property apiDefaultOptions
+ */
+
+
+function createContext(args) {
+ var context = {
+ args
+ };
+ updateContextArgv(context);
+ normalizeContextArgv(context, ["loglevel", "plugin", "plugin-search-dir"]);
+ context.logger = createLogger(context.argv["loglevel"]);
+ updateContextArgv(context, context.argv["plugin"], context.argv["plugin-search-dir"]);
+ return context;
+}
+
+function initContext(context) {
+ // split into 2 step so that we could wrap this in a `try..catch` in cli/index.js
+ normalizeContextArgv(context);
+}
+
+function updateContextOptions(context, plugins, pluginSearchDirs) {
+ var supportOptions = prettier.getSupportInfo(null, {
+ showDeprecated: true,
+ showUnreleased: true,
+ showInternal: true,
+ plugins,
+ pluginSearchDirs
+ }).options;
+ var detailedOptionMap = normalizeDetailedOptionMap(Object.assign({}, createDetailedOptionMap(supportOptions), constant.options));
+ var detailedOptions = arrayify(detailedOptionMap, "name");
+ var apiDefaultOptions = supportOptions.filter(function (optionInfo) {
+ return !optionInfo.deprecated;
+ }).reduce(function (reduced, optionInfo) {
+ return Object.assign(reduced, {
+ [optionInfo.name]: optionInfo.default
+ });
+ }, Object.assign({}, options$1.hiddenDefaults));
+ context.supportOptions = supportOptions;
+ context.detailedOptions = detailedOptions;
+ context.detailedOptionMap = detailedOptionMap;
+ context.apiDefaultOptions = apiDefaultOptions;
+}
+
+function pushContextPlugins(context, plugins, pluginSearchDirs) {
+ context._supportOptions = context.supportOptions;
+ context._detailedOptions = context.detailedOptions;
+ context._detailedOptionMap = context.detailedOptionMap;
+ context._apiDefaultOptions = context.apiDefaultOptions;
+ updateContextOptions(context, plugins, pluginSearchDirs);
+}
+
+function popContextPlugins(context) {
+ context.supportOptions = context._supportOptions;
+ context.detailedOptions = context._detailedOptions;
+ context.detailedOptionMap = context._detailedOptionMap;
+ context.apiDefaultOptions = context._apiDefaultOptions;
+}
+
+function updateContextArgv(context, plugins, pluginSearchDirs) {
+ pushContextPlugins(context, plugins, pluginSearchDirs);
+ var minimistOptions = createMinimistOptions(context.detailedOptions);
+ var argv = minimist_1(context.args, minimistOptions);
+ context.argv = argv;
+ context.filePatterns = argv["_"];
+}
+
+function normalizeContextArgv(context, keys) {
+ var detailedOptions = !keys ? context.detailedOptions : context.detailedOptions.filter(function (option) {
+ return keys.indexOf(option.name) !== -1;
+ });
+ var argv = !keys ? context.argv : pick(context.argv, keys);
+ context.argv = optionsNormalizer.normalizeCliOptions(argv, detailedOptions, {
+ logger: context.logger
+ });
+} //------------------------------context-util-end--------------------------------
+
+
+var util$2 = {
+ createContext,
+ createDetailedOptionMap,
+ createDetailedUsage,
+ createUsage,
+ format: format$1,
+ formatFiles,
+ formatStdin,
+ initContext,
+ logResolvedConfigPathOrDie,
+ logFileInfoOrDie,
+ normalizeDetailedOptionMap
+};
+
+function run(args) {
+ var context = util$2.createContext(args);
+
+ try {
+ util$2.initContext(context);
+ context.logger.debug(`normalized argv: ${JSON.stringify(context.argv)}`);
+
+ if (context.argv["check"] && context.argv["list-different"]) {
+ context.logger.error("Cannot use --check and --list-different together.");
+ process.exit(1);
+ }
+
+ if (context.argv["write"] && context.argv["debug-check"]) {
+ context.logger.error("Cannot use --write and --debug-check together.");
+ process.exit(1);
+ }
+
+ if (context.argv["find-config-path"] && context.filePatterns.length) {
+ context.logger.error("Cannot use --find-config-path with multiple files");
+ process.exit(1);
+ }
+
+ if (context.argv["file-info"] && context.filePatterns.length) {
+ context.logger.error("Cannot use --file-info with multiple files");
+ process.exit(1);
+ }
+
+ if (context.argv["version"]) {
+ context.logger.log(prettier.version);
+ process.exit(0);
+ }
+
+ if (context.argv["help"] !== undefined) {
+ context.logger.log(typeof context.argv["help"] === "string" && context.argv["help"] !== "" ? util$2.createDetailedUsage(context, context.argv["help"]) : util$2.createUsage(context));
+ process.exit(0);
+ }
+
+ if (context.argv["support-info"]) {
+ context.logger.log(prettier.format(jsonStableStringify(prettier.getSupportInfo()), {
+ parser: "json"
+ }));
+ process.exit(0);
+ }
+
+ var hasFilePatterns = context.filePatterns.length !== 0;
+ var useStdin = context.argv["stdin"] || !hasFilePatterns && !process.stdin.isTTY;
+
+ if (context.argv["find-config-path"]) {
+ util$2.logResolvedConfigPathOrDie(context);
+ } else if (context.argv["file-info"]) {
+ util$2.logFileInfoOrDie(context);
+ } else if (useStdin) {
+ util$2.formatStdin(context);
+ } else if (hasFilePatterns) {
+ util$2.formatFiles(context);
+ } else {
+ context.logger.log(util$2.createUsage(context));
+ process.exit(1);
+ }
+ } catch (error) {
+ context.logger.error(error.message);
+ process.exit(1);
+ }
+}
+
+var cli = {
+ run
+};
+
+cli.run(process.argv.slice(2));
+var prettier$1 = {};
+
+module.exports = prettier$1;
diff --git a/node_modules/prettier/doc.js b/node_modules/prettier/doc.js
new file mode 100644
index 0000000..30862c8
--- /dev/null
+++ b/node_modules/prettier/doc.js
@@ -0,0 +1,2248 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
+ (global = global || self, factory(global.doc = {}));
+}(this, (function (exports) { 'use strict';
+
+ /**
+ * @param {Doc[]} parts
+ * @returns Doc
+ */
+
+
+ function concat(parts) {
+ // access the internals of a document directly.
+ // if(parts.length === 1) {
+ // // If it's a single document, no need to concat it.
+ // return parts[0];
+ // }
+
+
+ return {
+ type: "concat",
+ parts: parts
+ };
+ }
+ /**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+ function indent(contents) {
+
+ return {
+ type: "indent",
+ contents: contents
+ };
+ }
+ /**
+ * @param {number} n
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+ function align(n, contents) {
+
+ return {
+ type: "align",
+ contents: contents,
+ n: n
+ };
+ }
+ /**
+ * @param {Doc} contents
+ * @param {object} [opts] - TBD ???
+ * @returns Doc
+ */
+
+
+ function group(contents, opts) {
+ opts = opts || {};
+
+ return {
+ type: "group",
+ id: opts.id,
+ contents: contents,
+ break: !!opts.shouldBreak,
+ expandedStates: opts.expandedStates
+ };
+ }
+ /**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+ function dedentToRoot(contents) {
+ return align(-Infinity, contents);
+ }
+ /**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+ function markAsRoot(contents) {
+ // @ts-ignore - TBD ???:
+ return align({
+ type: "root"
+ }, contents);
+ }
+ /**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+ function dedent(contents) {
+ return align(-1, contents);
+ }
+ /**
+ * @param {Doc[]} states
+ * @param {object} [opts] - TBD ???
+ * @returns Doc
+ */
+
+
+ function conditionalGroup(states, opts) {
+ return group(states[0], Object.assign(opts || {}, {
+ expandedStates: states
+ }));
+ }
+ /**
+ * @param {Doc[]} parts
+ * @returns Doc
+ */
+
+
+ function fill(parts) {
+
+ return {
+ type: "fill",
+ parts: parts
+ };
+ }
+ /**
+ * @param {Doc} [breakContents]
+ * @param {Doc} [flatContents]
+ * @param {object} [opts] - TBD ???
+ * @returns Doc
+ */
+
+
+ function ifBreak(breakContents, flatContents, opts) {
+ opts = opts || {};
+
+ return {
+ type: "if-break",
+ breakContents: breakContents,
+ flatContents: flatContents,
+ groupId: opts.groupId
+ };
+ }
+ /**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+ function lineSuffix(contents) {
+
+ return {
+ type: "line-suffix",
+ contents: contents
+ };
+ }
+
+ var lineSuffixBoundary = {
+ type: "line-suffix-boundary"
+ };
+ var breakParent = {
+ type: "break-parent"
+ };
+ var trim = {
+ type: "trim"
+ };
+ var line = {
+ type: "line"
+ };
+ var softline = {
+ type: "line",
+ soft: true
+ };
+ var hardline = concat([{
+ type: "line",
+ hard: true
+ }, breakParent]);
+ var literalline = concat([{
+ type: "line",
+ hard: true,
+ literal: true
+ }, breakParent]);
+ var cursor = {
+ type: "cursor",
+ placeholder: Symbol("cursor")
+ };
+ /**
+ * @param {Doc} sep
+ * @param {Doc[]} arr
+ * @returns Doc
+ */
+
+ function join(sep, arr) {
+ var res = [];
+
+ for (var i = 0; i < arr.length; i++) {
+ if (i !== 0) {
+ res.push(sep);
+ }
+
+ res.push(arr[i]);
+ }
+
+ return concat(res);
+ }
+ /**
+ * @param {Doc} doc
+ * @param {number} size
+ * @param {number} tabWidth
+ */
+
+
+ function addAlignmentToDoc(doc, size, tabWidth) {
+ var aligned = doc;
+
+ if (size > 0) {
+ // Use indent to add tabs for all the levels of tabs we need
+ for (var i = 0; i < Math.floor(size / tabWidth); ++i) {
+ aligned = indent(aligned);
+ } // Use align for all the spaces that are needed
+
+
+ aligned = align(size % tabWidth, aligned); // size is absolute from 0 and not relative to the current
+ // indentation, so we use -Infinity to reset the indentation to 0
+
+ aligned = align(-Infinity, aligned);
+ }
+
+ return aligned;
+ }
+
+ var docBuilders = {
+ concat: concat,
+ join: join,
+ line: line,
+ softline: softline,
+ hardline: hardline,
+ literalline: literalline,
+ group: group,
+ conditionalGroup: conditionalGroup,
+ fill: fill,
+ lineSuffix: lineSuffix,
+ lineSuffixBoundary: lineSuffixBoundary,
+ cursor: cursor,
+ breakParent: breakParent,
+ ifBreak: ifBreak,
+ trim: trim,
+ indent: indent,
+ align: align,
+ addAlignmentToDoc: addAlignmentToDoc,
+ markAsRoot: markAsRoot,
+ dedentToRoot: dedentToRoot,
+ dedent: dedent
+ };
+
+ var ansiRegex = function ansiRegex(options) {
+ options = Object.assign({
+ onlyFirst: false
+ }, options);
+ var pattern = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'].join('|');
+ return new RegExp(pattern, options.onlyFirst ? undefined : 'g');
+ };
+
+ var stripAnsi = function stripAnsi(string) {
+ return typeof string === 'string' ? string.replace(ansiRegex(), '') : string;
+ };
+
+ var stripAnsi_1 = stripAnsi;
+ var default_1 = stripAnsi;
+ stripAnsi_1.default = default_1;
+
+ /* eslint-disable yoda */
+
+ var isFullwidthCodePoint = function isFullwidthCodePoint(codePoint) {
+ if (Number.isNaN(codePoint)) {
+ return false;
+ } // Code points are derived from:
+ // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
+
+
+ if (codePoint >= 0x1100 && (codePoint <= 0x115F || // Hangul Jamo
+ codePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET
+ codePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET
+ // CJK Radicals Supplement .. Enclosed CJK Letters and Months
+ 0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F || // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
+ 0x3250 <= codePoint && codePoint <= 0x4DBF || // CJK Unified Ideographs .. Yi Radicals
+ 0x4E00 <= codePoint && codePoint <= 0xA4C6 || // Hangul Jamo Extended-A
+ 0xA960 <= codePoint && codePoint <= 0xA97C || // Hangul Syllables
+ 0xAC00 <= codePoint && codePoint <= 0xD7A3 || // CJK Compatibility Ideographs
+ 0xF900 <= codePoint && codePoint <= 0xFAFF || // Vertical Forms
+ 0xFE10 <= codePoint && codePoint <= 0xFE19 || // CJK Compatibility Forms .. Small Form Variants
+ 0xFE30 <= codePoint && codePoint <= 0xFE6B || // Halfwidth and Fullwidth Forms
+ 0xFF01 <= codePoint && codePoint <= 0xFF60 || 0xFFE0 <= codePoint && codePoint <= 0xFFE6 || // Kana Supplement
+ 0x1B000 <= codePoint && codePoint <= 0x1B001 || // Enclosed Ideographic Supplement
+ 0x1F200 <= codePoint && codePoint <= 0x1F251 || // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
+ 0x20000 <= codePoint && codePoint <= 0x3FFFD)) {
+ return true;
+ }
+
+ return false;
+ };
+
+ var isFullwidthCodePoint_1 = isFullwidthCodePoint;
+ var default_1$1 = isFullwidthCodePoint;
+ isFullwidthCodePoint_1.default = default_1$1;
+
+ var emojiRegex = function emojiRegex() {
+ // https://mths.be/emoji
+ return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
+ };
+
+ var stringWidth = function stringWidth(string) {
+ string = string.replace(emojiRegex(), ' ');
+
+ if (typeof string !== 'string' || string.length === 0) {
+ return 0;
+ }
+
+ string = stripAnsi_1(string);
+ var width = 0;
+
+ for (var i = 0; i < string.length; i++) {
+ var code = string.codePointAt(i); // Ignore control characters
+
+ if (code <= 0x1F || code >= 0x7F && code <= 0x9F) {
+ continue;
+ } // Ignore combining characters
+
+
+ if (code >= 0x300 && code <= 0x36F) {
+ continue;
+ } // Surrogates
+
+
+ if (code > 0xFFFF) {
+ i++;
+ }
+
+ width += isFullwidthCodePoint_1(code) ? 2 : 1;
+ }
+
+ return width;
+ };
+
+ var stringWidth_1 = stringWidth; // TODO: remove this in the next major version
+
+ var default_1$2 = stringWidth;
+ stringWidth_1.default = default_1$2;
+
+ var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
+
+ var escapeStringRegexp = function escapeStringRegexp(str) {
+ if (typeof str !== 'string') {
+ throw new TypeError('Expected a string');
+ }
+
+ return str.replace(matchOperatorsRe, '\\$&');
+ };
+
+ var getLast = function getLast(arr) {
+ return arr.length > 0 ? arr[arr.length - 1] : null;
+ };
+
+ var notAsciiRegex = /[^\x20-\x7F]/;
+
+ function isExportDeclaration(node) {
+ if (node) {
+ switch (node.type) {
+ case "ExportDefaultDeclaration":
+ case "ExportDefaultSpecifier":
+ case "DeclareExportDeclaration":
+ case "ExportNamedDeclaration":
+ case "ExportAllDeclaration":
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ function getParentExportDeclaration(path) {
+ var parentNode = path.getParentNode();
+
+ if (path.getName() === "declaration" && isExportDeclaration(parentNode)) {
+ return parentNode;
+ }
+
+ return null;
+ }
+
+ function getPenultimate(arr) {
+ if (arr.length > 1) {
+ return arr[arr.length - 2];
+ }
+
+ return null;
+ }
+ /**
+ * @typedef {{backwards?: boolean}} SkipOptions
+ */
+
+ /**
+ * @param {string | RegExp} chars
+ * @returns {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+
+ function skip(chars) {
+ return function (text, index, opts) {
+ var backwards = opts && opts.backwards; // Allow `skip` functions to be threaded together without having
+ // to check for failures (did someone say monads?).
+
+ if (index === false) {
+ return false;
+ }
+
+ var length = text.length;
+ var cursor = index;
+
+ while (cursor >= 0 && cursor < length) {
+ var c = text.charAt(cursor);
+
+ if (chars instanceof RegExp) {
+ if (!chars.test(c)) {
+ return cursor;
+ }
+ } else if (chars.indexOf(c) === -1) {
+ return cursor;
+ }
+
+ backwards ? cursor-- : cursor++;
+ }
+
+ if (cursor === -1 || cursor === length) {
+ // If we reached the beginning or end of the file, return the
+ // out-of-bounds cursor. It's up to the caller to handle this
+ // correctly. We don't want to indicate `false` though if it
+ // actually skipped valid characters.
+ return cursor;
+ }
+
+ return false;
+ };
+ }
+ /**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+
+ var skipWhitespace = skip(/\s/);
+ /**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+ var skipSpaces = skip(" \t");
+ /**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+ var skipToLineEnd = skip(",; \t");
+ /**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+ var skipEverythingButNewLine = skip(/[^\r\n]/);
+ /**
+ * @param {string} text
+ * @param {number | false} index
+ * @returns {number | false}
+ */
+
+ function skipInlineComment(text, index) {
+ if (index === false) {
+ return false;
+ }
+
+ if (text.charAt(index) === "/" && text.charAt(index + 1) === "*") {
+ for (var i = index + 2; i < text.length; ++i) {
+ if (text.charAt(i) === "*" && text.charAt(i + 1) === "/") {
+ return i + 2;
+ }
+ }
+ }
+
+ return index;
+ }
+ /**
+ * @param {string} text
+ * @param {number | false} index
+ * @returns {number | false}
+ */
+
+
+ function skipTrailingComment(text, index) {
+ if (index === false) {
+ return false;
+ }
+
+ if (text.charAt(index) === "/" && text.charAt(index + 1) === "/") {
+ return skipEverythingButNewLine(text, index);
+ }
+
+ return index;
+ } // This one doesn't use the above helper function because it wants to
+ // test \r\n in order and `skip` doesn't support ordering and we only
+ // want to skip one newline. It's simple to implement.
+
+ /**
+ * @param {string} text
+ * @param {number | false} index
+ * @param {SkipOptions=} opts
+ * @returns {number | false}
+ */
+
+
+ function skipNewline(text, index, opts) {
+ var backwards = opts && opts.backwards;
+
+ if (index === false) {
+ return false;
+ }
+
+ var atIndex = text.charAt(index);
+
+ if (backwards) {
+ if (text.charAt(index - 1) === "\r" && atIndex === "\n") {
+ return index - 2;
+ }
+
+ if (atIndex === "\n" || atIndex === "\r" || atIndex === "\u2028" || atIndex === "\u2029") {
+ return index - 1;
+ }
+ } else {
+ if (atIndex === "\r" && text.charAt(index + 1) === "\n") {
+ return index + 2;
+ }
+
+ if (atIndex === "\n" || atIndex === "\r" || atIndex === "\u2028" || atIndex === "\u2029") {
+ return index + 1;
+ }
+ }
+
+ return index;
+ }
+ /**
+ * @param {string} text
+ * @param {number} index
+ * @param {SkipOptions=} opts
+ * @returns {boolean}
+ */
+
+
+ function hasNewline(text, index, opts) {
+ opts = opts || {};
+ var idx = skipSpaces(text, opts.backwards ? index - 1 : index, opts);
+ var idx2 = skipNewline(text, idx, opts);
+ return idx !== idx2;
+ }
+ /**
+ * @param {string} text
+ * @param {number} start
+ * @param {number} end
+ * @returns {boolean}
+ */
+
+
+ function hasNewlineInRange(text, start, end) {
+ for (var i = start; i < end; ++i) {
+ if (text.charAt(i) === "\n") {
+ return true;
+ }
+ }
+
+ return false;
+ } // Note: this function doesn't ignore leading comments unlike isNextLineEmpty
+
+ /**
+ * @template N
+ * @param {string} text
+ * @param {N} node
+ * @param {(node: N) => number} locStart
+ */
+
+
+ function isPreviousLineEmpty(text, node, locStart) {
+ /** @type {number | false} */
+ var idx = locStart(node) - 1;
+ idx = skipSpaces(text, idx, {
+ backwards: true
+ });
+ idx = skipNewline(text, idx, {
+ backwards: true
+ });
+ idx = skipSpaces(text, idx, {
+ backwards: true
+ });
+ var idx2 = skipNewline(text, idx, {
+ backwards: true
+ });
+ return idx !== idx2;
+ }
+ /**
+ * @param {string} text
+ * @param {number} index
+ * @returns {boolean}
+ */
+
+
+ function isNextLineEmptyAfterIndex(text, index) {
+ /** @type {number | false} */
+ var oldIdx = null;
+ /** @type {number | false} */
+
+ var idx = index;
+
+ while (idx !== oldIdx) {
+ // We need to skip all the potential trailing inline comments
+ oldIdx = idx;
+ idx = skipToLineEnd(text, idx);
+ idx = skipInlineComment(text, idx);
+ idx = skipSpaces(text, idx);
+ }
+
+ idx = skipTrailingComment(text, idx);
+ idx = skipNewline(text, idx);
+ return idx !== false && hasNewline(text, idx);
+ }
+ /**
+ * @template N
+ * @param {string} text
+ * @param {N} node
+ * @param {(node: N) => number} locEnd
+ * @returns {boolean}
+ */
+
+
+ function isNextLineEmpty(text, node, locEnd) {
+ return isNextLineEmptyAfterIndex(text, locEnd(node));
+ }
+ /**
+ * @param {string} text
+ * @param {number} idx
+ * @returns {number | false}
+ */
+
+
+ function getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, idx) {
+ /** @type {number | false} */
+ var oldIdx = null;
+ /** @type {number | false} */
+
+ var nextIdx = idx;
+
+ while (nextIdx !== oldIdx) {
+ oldIdx = nextIdx;
+ nextIdx = skipSpaces(text, nextIdx);
+ nextIdx = skipInlineComment(text, nextIdx);
+ nextIdx = skipTrailingComment(text, nextIdx);
+ nextIdx = skipNewline(text, nextIdx);
+ }
+
+ return nextIdx;
+ }
+ /**
+ * @template N
+ * @param {string} text
+ * @param {N} node
+ * @param {(node: N) => number} locEnd
+ * @returns {number | false}
+ */
+
+
+ function getNextNonSpaceNonCommentCharacterIndex(text, node, locEnd) {
+ return getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, locEnd(node));
+ }
+ /**
+ * @template N
+ * @param {string} text
+ * @param {N} node
+ * @param {(node: N) => number} locEnd
+ * @returns {string}
+ */
+
+
+ function getNextNonSpaceNonCommentCharacter(text, node, locEnd) {
+ return text.charAt( // @ts-ignore => TBD: can return false, should we define a fallback?
+ getNextNonSpaceNonCommentCharacterIndex(text, node, locEnd));
+ }
+ /**
+ * @param {string} text
+ * @param {number} index
+ * @param {SkipOptions=} opts
+ * @returns {boolean}
+ */
+
+
+ function hasSpaces(text, index, opts) {
+ opts = opts || {};
+ var idx = skipSpaces(text, opts.backwards ? index - 1 : index, opts);
+ return idx !== index;
+ }
+ /**
+ * @param {{range?: [number, number], start?: number}} node
+ * @param {number} index
+ */
+
+
+ function setLocStart(node, index) {
+ if (node.range) {
+ node.range[0] = index;
+ } else {
+ node.start = index;
+ }
+ }
+ /**
+ * @param {{range?: [number, number], end?: number}} node
+ * @param {number} index
+ */
+
+
+ function setLocEnd(node, index) {
+ if (node.range) {
+ node.range[1] = index;
+ } else {
+ node.end = index;
+ }
+ }
+
+ var PRECEDENCE = {};
+ [["|>"], ["??"], ["||"], ["&&"], ["|"], ["^"], ["&"], ["==", "===", "!=", "!=="], ["<", ">", "<=", ">=", "in", "instanceof"], [">>", "<<", ">>>"], ["+", "-"], ["*", "/", "%"], ["**"]].forEach(function (tier, i) {
+ tier.forEach(function (op) {
+ PRECEDENCE[op] = i;
+ });
+ });
+
+ function getPrecedence(op) {
+ return PRECEDENCE[op];
+ }
+
+ var equalityOperators = {
+ "==": true,
+ "!=": true,
+ "===": true,
+ "!==": true
+ };
+ var multiplicativeOperators = {
+ "*": true,
+ "/": true,
+ "%": true
+ };
+ var bitshiftOperators = {
+ ">>": true,
+ ">>>": true,
+ "<<": true
+ };
+
+ function shouldFlatten(parentOp, nodeOp) {
+ if (getPrecedence(nodeOp) !== getPrecedence(parentOp)) {
+ return false;
+ } // ** is right-associative
+ // x ** y ** z --> x ** (y ** z)
+
+
+ if (parentOp === "**") {
+ return false;
+ } // x == y == z --> (x == y) == z
+
+
+ if (equalityOperators[parentOp] && equalityOperators[nodeOp]) {
+ return false;
+ } // x * y % z --> (x * y) % z
+
+
+ if (nodeOp === "%" && multiplicativeOperators[parentOp] || parentOp === "%" && multiplicativeOperators[nodeOp]) {
+ return false;
+ } // x * y / z --> (x * y) / z
+ // x / y * z --> (x / y) * z
+
+
+ if (nodeOp !== parentOp && multiplicativeOperators[nodeOp] && multiplicativeOperators[parentOp]) {
+ return false;
+ } // x << y << z --> (x << y) << z
+
+
+ if (bitshiftOperators[parentOp] && bitshiftOperators[nodeOp]) {
+ return false;
+ }
+
+ return true;
+ }
+
+ function isBitwiseOperator(operator) {
+ return !!bitshiftOperators[operator] || operator === "|" || operator === "^" || operator === "&";
+ } // Tests if an expression starts with `{`, or (if forbidFunctionClassAndDoExpr
+ // holds) `function`, `class`, or `do {}`. Will be overzealous if there's
+ // already necessary grouping parentheses.
+
+
+ function startsWithNoLookaheadToken(node, forbidFunctionClassAndDoExpr) {
+ node = getLeftMost(node);
+
+ switch (node.type) {
+ case "FunctionExpression":
+ case "ClassExpression":
+ case "DoExpression":
+ return forbidFunctionClassAndDoExpr;
+
+ case "ObjectExpression":
+ return true;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return startsWithNoLookaheadToken(node.object, forbidFunctionClassAndDoExpr);
+
+ case "TaggedTemplateExpression":
+ if (node.tag.type === "FunctionExpression") {
+ // IIFEs are always already parenthesized
+ return false;
+ }
+
+ return startsWithNoLookaheadToken(node.tag, forbidFunctionClassAndDoExpr);
+
+ case "CallExpression":
+ case "OptionalCallExpression":
+ if (node.callee.type === "FunctionExpression") {
+ // IIFEs are always already parenthesized
+ return false;
+ }
+
+ return startsWithNoLookaheadToken(node.callee, forbidFunctionClassAndDoExpr);
+
+ case "ConditionalExpression":
+ return startsWithNoLookaheadToken(node.test, forbidFunctionClassAndDoExpr);
+
+ case "UpdateExpression":
+ return !node.prefix && startsWithNoLookaheadToken(node.argument, forbidFunctionClassAndDoExpr);
+
+ case "BindExpression":
+ return node.object && startsWithNoLookaheadToken(node.object, forbidFunctionClassAndDoExpr);
+
+ case "SequenceExpression":
+ return startsWithNoLookaheadToken(node.expressions[0], forbidFunctionClassAndDoExpr);
+
+ case "TSAsExpression":
+ return startsWithNoLookaheadToken(node.expression, forbidFunctionClassAndDoExpr);
+
+ default:
+ return false;
+ }
+ }
+
+ function getLeftMost(node) {
+ if (node.left) {
+ return getLeftMost(node.left);
+ }
+
+ return node;
+ }
+ /**
+ * @param {string} value
+ * @param {number} tabWidth
+ * @param {number=} startIndex
+ * @returns {number}
+ */
+
+
+ function getAlignmentSize(value, tabWidth, startIndex) {
+ startIndex = startIndex || 0;
+ var size = 0;
+
+ for (var i = startIndex; i < value.length; ++i) {
+ if (value[i] === "\t") {
+ // Tabs behave in a way that they are aligned to the nearest
+ // multiple of tabWidth:
+ // 0 -> 4, 1 -> 4, 2 -> 4, 3 -> 4
+ // 4 -> 8, 5 -> 8, 6 -> 8, 7 -> 8 ...
+ size = size + tabWidth - size % tabWidth;
+ } else {
+ size++;
+ }
+ }
+
+ return size;
+ }
+ /**
+ * @param {string} value
+ * @param {number} tabWidth
+ * @returns {number}
+ */
+
+
+ function getIndentSize(value, tabWidth) {
+ var lastNewlineIndex = value.lastIndexOf("\n");
+
+ if (lastNewlineIndex === -1) {
+ return 0;
+ }
+
+ return getAlignmentSize( // All the leading whitespaces
+ value.slice(lastNewlineIndex + 1).match(/^[ \t]*/)[0], tabWidth);
+ }
+ /**
+ * @typedef {'"' | "'"} Quote
+ */
+
+ /**
+ *
+ * @param {string} raw
+ * @param {Quote} preferredQuote
+ * @returns {Quote}
+ */
+
+
+ function getPreferredQuote(raw, preferredQuote) {
+ // `rawContent` is the string exactly like it appeared in the input source
+ // code, without its enclosing quotes.
+ var rawContent = raw.slice(1, -1);
+ /** @type {{ quote: '"', regex: RegExp }} */
+
+ var double = {
+ quote: '"',
+ regex: /"/g
+ };
+ /** @type {{ quote: "'", regex: RegExp }} */
+
+ var single = {
+ quote: "'",
+ regex: /'/g
+ };
+ var preferred = preferredQuote === "'" ? single : double;
+ var alternate = preferred === single ? double : single;
+ var result = preferred.quote; // If `rawContent` contains at least one of the quote preferred for enclosing
+ // the string, we might want to enclose with the alternate quote instead, to
+ // minimize the number of escaped quotes.
+
+ if (rawContent.includes(preferred.quote) || rawContent.includes(alternate.quote)) {
+ var numPreferredQuotes = (rawContent.match(preferred.regex) || []).length;
+ var numAlternateQuotes = (rawContent.match(alternate.regex) || []).length;
+ result = numPreferredQuotes > numAlternateQuotes ? alternate.quote : preferred.quote;
+ }
+
+ return result;
+ }
+
+ function printString(raw, options, isDirectiveLiteral) {
+ // `rawContent` is the string exactly like it appeared in the input source
+ // code, without its enclosing quotes.
+ var rawContent = raw.slice(1, -1); // Check for the alternate quote, to determine if we're allowed to swap
+ // the quotes on a DirectiveLiteral.
+
+ var canChangeDirectiveQuotes = !rawContent.includes('"') && !rawContent.includes("'");
+ /** @type {Quote} */
+
+ var enclosingQuote = options.parser === "json" ? '"' : options.__isInHtmlAttribute ? "'" : getPreferredQuote(raw, options.singleQuote ? "'" : '"'); // Directives are exact code unit sequences, which means that you can't
+ // change the escape sequences they use.
+ // See https://github.com/prettier/prettier/issues/1555
+ // and https://tc39.github.io/ecma262/#directive-prologue
+
+ if (isDirectiveLiteral) {
+ if (canChangeDirectiveQuotes) {
+ return enclosingQuote + rawContent + enclosingQuote;
+ }
+
+ return raw;
+ } // It might sound unnecessary to use `makeString` even if the string already
+ // is enclosed with `enclosingQuote`, but it isn't. The string could contain
+ // unnecessary escapes (such as in `"\'"`). Always using `makeString` makes
+ // sure that we consistently output the minimum amount of escaped quotes.
+
+
+ return makeString(rawContent, enclosingQuote, !(options.parser === "css" || options.parser === "less" || options.parser === "scss" || options.embeddedInHtml));
+ }
+ /**
+ * @param {string} rawContent
+ * @param {Quote} enclosingQuote
+ * @param {boolean=} unescapeUnnecessaryEscapes
+ * @returns {string}
+ */
+
+
+ function makeString(rawContent, enclosingQuote, unescapeUnnecessaryEscapes) {
+ var otherQuote = enclosingQuote === '"' ? "'" : '"'; // Matches _any_ escape and unescaped quotes (both single and double).
+
+ var regex = /\\([\s\S])|(['"])/g; // Escape and unescape single and double quotes as needed to be able to
+ // enclose `rawContent` with `enclosingQuote`.
+
+ var newContent = rawContent.replace(regex, function (match, escaped, quote) {
+ // If we matched an escape, and the escaped character is a quote of the
+ // other type than we intend to enclose the string with, there's no need for
+ // it to be escaped, so return it _without_ the backslash.
+ if (escaped === otherQuote) {
+ return escaped;
+ } // If we matched an unescaped quote and it is of the _same_ type as we
+ // intend to enclose the string with, it must be escaped, so return it with
+ // a backslash.
+
+
+ if (quote === enclosingQuote) {
+ return "\\" + quote;
+ }
+
+ if (quote) {
+ return quote;
+ } // Unescape any unnecessarily escaped character.
+ // Adapted from https://github.com/eslint/eslint/blob/de0b4ad7bd820ade41b1f606008bea68683dc11a/lib/rules/no-useless-escape.js#L27
+
+
+ return unescapeUnnecessaryEscapes && /^[^\\nrvtbfux\r\n\u2028\u2029"'0-7]$/.test(escaped) ? escaped : "\\" + escaped;
+ });
+ return enclosingQuote + newContent + enclosingQuote;
+ }
+
+ function printNumber(rawNumber) {
+ return rawNumber.toLowerCase() // Remove unnecessary plus and zeroes from scientific notation.
+ .replace(/^([+-]?[\d.]+e)(?:\+|(-))?0*(\d)/, "$1$2$3") // Remove unnecessary scientific notation (1e0).
+ .replace(/^([+-]?[\d.]+)e[+-]?0+$/, "$1") // Make sure numbers always start with a digit.
+ .replace(/^([+-])?\./, "$10.") // Remove extraneous trailing decimal zeroes.
+ .replace(/(\.\d+?)0+(?=e|$)/, "$1") // Remove trailing dot.
+ .replace(/\.(?=e|$)/, "");
+ }
+ /**
+ * @param {string} str
+ * @param {string} target
+ * @returns {number}
+ */
+
+
+ function getMaxContinuousCount(str, target) {
+ var results = str.match(new RegExp("(".concat(escapeStringRegexp(target), ")+"), "g"));
+
+ if (results === null) {
+ return 0;
+ }
+
+ return results.reduce(function (maxCount, result) {
+ return Math.max(maxCount, result.length / target.length);
+ }, 0);
+ }
+
+ function getMinNotPresentContinuousCount(str, target) {
+ var matches = str.match(new RegExp("(".concat(escapeStringRegexp(target), ")+"), "g"));
+
+ if (matches === null) {
+ return 0;
+ }
+
+ var countPresent = new Map();
+ var max = 0;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = matches[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var match = _step.value;
+ var count = match.length / target.length;
+ countPresent.set(count, true);
+
+ if (count > max) {
+ max = count;
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ for (var i = 1; i < max; i++) {
+ if (!countPresent.get(i)) {
+ return i;
+ }
+ }
+
+ return max + 1;
+ }
+ /**
+ * @param {string} text
+ * @returns {number}
+ */
+
+
+ function getStringWidth(text) {
+ if (!text) {
+ return 0;
+ } // shortcut to avoid needless string `RegExp`s, replacements, and allocations within `string-width`
+
+
+ if (!notAsciiRegex.test(text)) {
+ return text.length;
+ }
+
+ return stringWidth_1(text);
+ }
+
+ function hasIgnoreComment(path) {
+ var node = path.getValue();
+ return hasNodeIgnoreComment(node);
+ }
+
+ function hasNodeIgnoreComment(node) {
+ return node && node.comments && node.comments.length > 0 && node.comments.some(function (comment) {
+ return comment.value.trim() === "prettier-ignore";
+ });
+ }
+
+ function matchAncestorTypes(path, types, index) {
+ index = index || 0;
+ types = types.slice();
+
+ while (types.length) {
+ var parent = path.getParentNode(index);
+ var type = types.shift();
+
+ if (!parent || parent.type !== type) {
+ return false;
+ }
+
+ index++;
+ }
+
+ return true;
+ }
+
+ function addCommentHelper(node, comment) {
+ var comments = node.comments || (node.comments = []);
+ comments.push(comment);
+ comment.printed = false; // For some reason, TypeScript parses `// x` inside of JSXText as a comment
+ // We already "print" it via the raw text, we don't need to re-print it as a
+ // comment
+
+ if (node.type === "JSXText") {
+ comment.printed = true;
+ }
+ }
+
+ function addLeadingComment(node, comment) {
+ comment.leading = true;
+ comment.trailing = false;
+ addCommentHelper(node, comment);
+ }
+
+ function addDanglingComment(node, comment) {
+ comment.leading = false;
+ comment.trailing = false;
+ addCommentHelper(node, comment);
+ }
+
+ function addTrailingComment(node, comment) {
+ comment.leading = false;
+ comment.trailing = true;
+ addCommentHelper(node, comment);
+ }
+
+ function isWithinParentArrayProperty(path, propertyName) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+
+ if (parent == null) {
+ return false;
+ }
+
+ if (!Array.isArray(parent[propertyName])) {
+ return false;
+ }
+
+ var key = path.getName();
+ return parent[propertyName][key] === node;
+ }
+
+ function replaceEndOfLineWith(text, replacement) {
+ var parts = [];
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = text.split("\n")[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var part = _step2.value;
+
+ if (parts.length !== 0) {
+ parts.push(replacement);
+ }
+
+ parts.push(part);
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return parts;
+ }
+
+ var util = {
+ replaceEndOfLineWith: replaceEndOfLineWith,
+ getStringWidth: getStringWidth,
+ getMaxContinuousCount: getMaxContinuousCount,
+ getMinNotPresentContinuousCount: getMinNotPresentContinuousCount,
+ getPrecedence: getPrecedence,
+ shouldFlatten: shouldFlatten,
+ isBitwiseOperator: isBitwiseOperator,
+ isExportDeclaration: isExportDeclaration,
+ getParentExportDeclaration: getParentExportDeclaration,
+ getPenultimate: getPenultimate,
+ getLast: getLast,
+ getNextNonSpaceNonCommentCharacterIndexWithStartIndex: getNextNonSpaceNonCommentCharacterIndexWithStartIndex,
+ getNextNonSpaceNonCommentCharacterIndex: getNextNonSpaceNonCommentCharacterIndex,
+ getNextNonSpaceNonCommentCharacter: getNextNonSpaceNonCommentCharacter,
+ skip: skip,
+ skipWhitespace: skipWhitespace,
+ skipSpaces: skipSpaces,
+ skipToLineEnd: skipToLineEnd,
+ skipEverythingButNewLine: skipEverythingButNewLine,
+ skipInlineComment: skipInlineComment,
+ skipTrailingComment: skipTrailingComment,
+ skipNewline: skipNewline,
+ isNextLineEmptyAfterIndex: isNextLineEmptyAfterIndex,
+ isNextLineEmpty: isNextLineEmpty,
+ isPreviousLineEmpty: isPreviousLineEmpty,
+ hasNewline: hasNewline,
+ hasNewlineInRange: hasNewlineInRange,
+ hasSpaces: hasSpaces,
+ setLocStart: setLocStart,
+ setLocEnd: setLocEnd,
+ startsWithNoLookaheadToken: startsWithNoLookaheadToken,
+ getAlignmentSize: getAlignmentSize,
+ getIndentSize: getIndentSize,
+ getPreferredQuote: getPreferredQuote,
+ printString: printString,
+ printNumber: printNumber,
+ hasIgnoreComment: hasIgnoreComment,
+ hasNodeIgnoreComment: hasNodeIgnoreComment,
+ makeString: makeString,
+ matchAncestorTypes: matchAncestorTypes,
+ addLeadingComment: addLeadingComment,
+ addDanglingComment: addDanglingComment,
+ addTrailingComment: addTrailingComment,
+ isWithinParentArrayProperty: isWithinParentArrayProperty
+ };
+
+ function guessEndOfLine(text) {
+ var index = text.indexOf("\r");
+
+ if (index >= 0) {
+ return text.charAt(index + 1) === "\n" ? "crlf" : "cr";
+ }
+
+ return "lf";
+ }
+
+ function convertEndOfLineToChars(value) {
+ switch (value) {
+ case "cr":
+ return "\r";
+
+ case "crlf":
+ return "\r\n";
+
+ default:
+ return "\n";
+ }
+ }
+
+ var endOfLine = {
+ guessEndOfLine: guessEndOfLine,
+ convertEndOfLineToChars: convertEndOfLineToChars
+ };
+
+ var getStringWidth$1 = util.getStringWidth;
+ var convertEndOfLineToChars$1 = endOfLine.convertEndOfLineToChars;
+ var concat$1 = docBuilders.concat,
+ fill$1 = docBuilders.fill,
+ cursor$1 = docBuilders.cursor;
+ /** @type {Record<symbol, typeof MODE_BREAK | typeof MODE_FLAT>} */
+
+ var groupModeMap;
+ var MODE_BREAK = 1;
+ var MODE_FLAT = 2;
+
+ function rootIndent() {
+ return {
+ value: "",
+ length: 0,
+ queue: []
+ };
+ }
+
+ function makeIndent(ind, options) {
+ return generateInd(ind, {
+ type: "indent"
+ }, options);
+ }
+
+ function makeAlign(ind, n, options) {
+ return n === -Infinity ? ind.root || rootIndent() : n < 0 ? generateInd(ind, {
+ type: "dedent"
+ }, options) : !n ? ind : n.type === "root" ? Object.assign({}, ind, {
+ root: ind
+ }) : typeof n === "string" ? generateInd(ind, {
+ type: "stringAlign",
+ n: n
+ }, options) : generateInd(ind, {
+ type: "numberAlign",
+ n: n
+ }, options);
+ }
+
+ function generateInd(ind, newPart, options) {
+ var queue = newPart.type === "dedent" ? ind.queue.slice(0, -1) : ind.queue.concat(newPart);
+ var value = "";
+ var length = 0;
+ var lastTabs = 0;
+ var lastSpaces = 0;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = queue[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var part = _step.value;
+
+ switch (part.type) {
+ case "indent":
+ flush();
+
+ if (options.useTabs) {
+ addTabs(1);
+ } else {
+ addSpaces(options.tabWidth);
+ }
+
+ break;
+
+ case "stringAlign":
+ flush();
+ value += part.n;
+ length += part.n.length;
+ break;
+
+ case "numberAlign":
+ lastTabs += 1;
+ lastSpaces += part.n;
+ break;
+
+ /* istanbul ignore next */
+
+ default:
+ throw new Error("Unexpected type '".concat(part.type, "'"));
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ flushSpaces();
+ return Object.assign({}, ind, {
+ value: value,
+ length: length,
+ queue: queue
+ });
+
+ function addTabs(count) {
+ value += "\t".repeat(count);
+ length += options.tabWidth * count;
+ }
+
+ function addSpaces(count) {
+ value += " ".repeat(count);
+ length += count;
+ }
+
+ function flush() {
+ if (options.useTabs) {
+ flushTabs();
+ } else {
+ flushSpaces();
+ }
+ }
+
+ function flushTabs() {
+ if (lastTabs > 0) {
+ addTabs(lastTabs);
+ }
+
+ resetLast();
+ }
+
+ function flushSpaces() {
+ if (lastSpaces > 0) {
+ addSpaces(lastSpaces);
+ }
+
+ resetLast();
+ }
+
+ function resetLast() {
+ lastTabs = 0;
+ lastSpaces = 0;
+ }
+ }
+
+ function trim$1(out) {
+ if (out.length === 0) {
+ return 0;
+ }
+
+ var trimCount = 0; // Trim whitespace at the end of line
+
+ while (out.length > 0 && typeof out[out.length - 1] === "string" && out[out.length - 1].match(/^[ \t]*$/)) {
+ trimCount += out.pop().length;
+ }
+
+ if (out.length && typeof out[out.length - 1] === "string") {
+ var trimmed = out[out.length - 1].replace(/[ \t]*$/, "");
+ trimCount += out[out.length - 1].length - trimmed.length;
+ out[out.length - 1] = trimmed;
+ }
+
+ return trimCount;
+ }
+
+ function fits(next, restCommands, width, options, mustBeFlat) {
+ var restIdx = restCommands.length;
+ var cmds = [next]; // `out` is only used for width counting because `trim` requires to look
+ // backwards for space characters.
+
+ var out = [];
+
+ while (width >= 0) {
+ if (cmds.length === 0) {
+ if (restIdx === 0) {
+ return true;
+ }
+
+ cmds.push(restCommands[restIdx - 1]);
+ restIdx--;
+ continue;
+ }
+
+ var x = cmds.pop();
+ var ind = x[0];
+ var mode = x[1];
+ var doc = x[2];
+
+ if (typeof doc === "string") {
+ out.push(doc);
+ width -= getStringWidth$1(doc);
+ } else {
+ switch (doc.type) {
+ case "concat":
+ for (var i = doc.parts.length - 1; i >= 0; i--) {
+ cmds.push([ind, mode, doc.parts[i]]);
+ }
+
+ break;
+
+ case "indent":
+ cmds.push([makeIndent(ind, options), mode, doc.contents]);
+ break;
+
+ case "align":
+ cmds.push([makeAlign(ind, doc.n, options), mode, doc.contents]);
+ break;
+
+ case "trim":
+ width += trim$1(out);
+ break;
+
+ case "group":
+ if (mustBeFlat && doc.break) {
+ return false;
+ }
+
+ cmds.push([ind, doc.break ? MODE_BREAK : mode, doc.contents]);
+
+ if (doc.id) {
+ groupModeMap[doc.id] = cmds[cmds.length - 1][1];
+ }
+
+ break;
+
+ case "fill":
+ for (var _i = doc.parts.length - 1; _i >= 0; _i--) {
+ cmds.push([ind, mode, doc.parts[_i]]);
+ }
+
+ break;
+
+ case "if-break":
+ {
+ var groupMode = doc.groupId ? groupModeMap[doc.groupId] : mode;
+
+ if (groupMode === MODE_BREAK) {
+ if (doc.breakContents) {
+ cmds.push([ind, mode, doc.breakContents]);
+ }
+ }
+
+ if (groupMode === MODE_FLAT) {
+ if (doc.flatContents) {
+ cmds.push([ind, mode, doc.flatContents]);
+ }
+ }
+
+ break;
+ }
+
+ case "line":
+ switch (mode) {
+ // fallthrough
+ case MODE_FLAT:
+ if (!doc.hard) {
+ if (!doc.soft) {
+ out.push(" ");
+ width -= 1;
+ }
+
+ break;
+ }
+
+ return true;
+
+ case MODE_BREAK:
+ return true;
+ }
+
+ break;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ function printDocToString(doc, options) {
+ groupModeMap = {};
+ var width = options.printWidth;
+ var newLine = convertEndOfLineToChars$1(options.endOfLine);
+ var pos = 0; // cmds is basically a stack. We've turned a recursive call into a
+ // while loop which is much faster. The while loop below adds new
+ // cmds to the array instead of recursively calling `print`.
+
+ var cmds = [[rootIndent(), MODE_BREAK, doc]];
+ var out = [];
+ var shouldRemeasure = false;
+ var lineSuffix = [];
+
+ while (cmds.length !== 0) {
+ var x = cmds.pop();
+ var ind = x[0];
+ var mode = x[1];
+ var _doc = x[2];
+
+ if (typeof _doc === "string") {
+ out.push(_doc);
+ pos += getStringWidth$1(_doc);
+ } else {
+ switch (_doc.type) {
+ case "cursor":
+ out.push(cursor$1.placeholder);
+ break;
+
+ case "concat":
+ for (var i = _doc.parts.length - 1; i >= 0; i--) {
+ cmds.push([ind, mode, _doc.parts[i]]);
+ }
+
+ break;
+
+ case "indent":
+ cmds.push([makeIndent(ind, options), mode, _doc.contents]);
+ break;
+
+ case "align":
+ cmds.push([makeAlign(ind, _doc.n, options), mode, _doc.contents]);
+ break;
+
+ case "trim":
+ pos -= trim$1(out);
+ break;
+
+ case "group":
+ switch (mode) {
+ case MODE_FLAT:
+ if (!shouldRemeasure) {
+ cmds.push([ind, _doc.break ? MODE_BREAK : MODE_FLAT, _doc.contents]);
+ break;
+ }
+
+ // fallthrough
+
+ case MODE_BREAK:
+ {
+ shouldRemeasure = false;
+ var next = [ind, MODE_FLAT, _doc.contents];
+ var rem = width - pos;
+
+ if (!_doc.break && fits(next, cmds, rem, options)) {
+ cmds.push(next);
+ } else {
+ // Expanded states are a rare case where a document
+ // can manually provide multiple representations of
+ // itself. It provides an array of documents
+ // going from the least expanded (most flattened)
+ // representation first to the most expanded. If a
+ // group has these, we need to manually go through
+ // these states and find the first one that fits.
+ if (_doc.expandedStates) {
+ var mostExpanded = _doc.expandedStates[_doc.expandedStates.length - 1];
+
+ if (_doc.break) {
+ cmds.push([ind, MODE_BREAK, mostExpanded]);
+ break;
+ } else {
+ for (var _i2 = 1; _i2 < _doc.expandedStates.length + 1; _i2++) {
+ if (_i2 >= _doc.expandedStates.length) {
+ cmds.push([ind, MODE_BREAK, mostExpanded]);
+ break;
+ } else {
+ var state = _doc.expandedStates[_i2];
+ var cmd = [ind, MODE_FLAT, state];
+
+ if (fits(cmd, cmds, rem, options)) {
+ cmds.push(cmd);
+ break;
+ }
+ }
+ }
+ }
+ } else {
+ cmds.push([ind, MODE_BREAK, _doc.contents]);
+ }
+ }
+
+ break;
+ }
+ }
+
+ if (_doc.id) {
+ groupModeMap[_doc.id] = cmds[cmds.length - 1][1];
+ }
+
+ break;
+ // Fills each line with as much code as possible before moving to a new
+ // line with the same indentation.
+ //
+ // Expects doc.parts to be an array of alternating content and
+ // whitespace. The whitespace contains the linebreaks.
+ //
+ // For example:
+ // ["I", line, "love", line, "monkeys"]
+ // or
+ // [{ type: group, ... }, softline, { type: group, ... }]
+ //
+ // It uses this parts structure to handle three main layout cases:
+ // * The first two content items fit on the same line without
+ // breaking
+ // -> output the first content item and the whitespace "flat".
+ // * Only the first content item fits on the line without breaking
+ // -> output the first content item "flat" and the whitespace with
+ // "break".
+ // * Neither content item fits on the line without breaking
+ // -> output the first content item and the whitespace with "break".
+
+ case "fill":
+ {
+ var _rem = width - pos;
+
+ var parts = _doc.parts;
+
+ if (parts.length === 0) {
+ break;
+ }
+
+ var content = parts[0];
+ var contentFlatCmd = [ind, MODE_FLAT, content];
+ var contentBreakCmd = [ind, MODE_BREAK, content];
+ var contentFits = fits(contentFlatCmd, [], _rem, options, true);
+
+ if (parts.length === 1) {
+ if (contentFits) {
+ cmds.push(contentFlatCmd);
+ } else {
+ cmds.push(contentBreakCmd);
+ }
+
+ break;
+ }
+
+ var whitespace = parts[1];
+ var whitespaceFlatCmd = [ind, MODE_FLAT, whitespace];
+ var whitespaceBreakCmd = [ind, MODE_BREAK, whitespace];
+
+ if (parts.length === 2) {
+ if (contentFits) {
+ cmds.push(whitespaceFlatCmd);
+ cmds.push(contentFlatCmd);
+ } else {
+ cmds.push(whitespaceBreakCmd);
+ cmds.push(contentBreakCmd);
+ }
+
+ break;
+ } // At this point we've handled the first pair (context, separator)
+ // and will create a new fill doc for the rest of the content.
+ // Ideally we wouldn't mutate the array here but coping all the
+ // elements to a new array would make this algorithm quadratic,
+ // which is unusable for large arrays (e.g. large texts in JSX).
+
+
+ parts.splice(0, 2);
+ var remainingCmd = [ind, mode, fill$1(parts)];
+ var secondContent = parts[0];
+ var firstAndSecondContentFlatCmd = [ind, MODE_FLAT, concat$1([content, whitespace, secondContent])];
+ var firstAndSecondContentFits = fits(firstAndSecondContentFlatCmd, [], _rem, options, true);
+
+ if (firstAndSecondContentFits) {
+ cmds.push(remainingCmd);
+ cmds.push(whitespaceFlatCmd);
+ cmds.push(contentFlatCmd);
+ } else if (contentFits) {
+ cmds.push(remainingCmd);
+ cmds.push(whitespaceBreakCmd);
+ cmds.push(contentFlatCmd);
+ } else {
+ cmds.push(remainingCmd);
+ cmds.push(whitespaceBreakCmd);
+ cmds.push(contentBreakCmd);
+ }
+
+ break;
+ }
+
+ case "if-break":
+ {
+ var groupMode = _doc.groupId ? groupModeMap[_doc.groupId] : mode;
+
+ if (groupMode === MODE_BREAK) {
+ if (_doc.breakContents) {
+ cmds.push([ind, mode, _doc.breakContents]);
+ }
+ }
+
+ if (groupMode === MODE_FLAT) {
+ if (_doc.flatContents) {
+ cmds.push([ind, mode, _doc.flatContents]);
+ }
+ }
+
+ break;
+ }
+
+ case "line-suffix":
+ lineSuffix.push([ind, mode, _doc.contents]);
+ break;
+
+ case "line-suffix-boundary":
+ if (lineSuffix.length > 0) {
+ cmds.push([ind, mode, {
+ type: "line",
+ hard: true
+ }]);
+ }
+
+ break;
+
+ case "line":
+ switch (mode) {
+ case MODE_FLAT:
+ if (!_doc.hard) {
+ if (!_doc.soft) {
+ out.push(" ");
+ pos += 1;
+ }
+
+ break;
+ } else {
+ // This line was forced into the output even if we
+ // were in flattened mode, so we need to tell the next
+ // group that no matter what, it needs to remeasure
+ // because the previous measurement didn't accurately
+ // capture the entire expression (this is necessary
+ // for nested groups)
+ shouldRemeasure = true;
+ }
+
+ // fallthrough
+
+ case MODE_BREAK:
+ if (lineSuffix.length) {
+ cmds.push([ind, mode, _doc]);
+ [].push.apply(cmds, lineSuffix.reverse());
+ lineSuffix = [];
+ break;
+ }
+
+ if (_doc.literal) {
+ if (ind.root) {
+ out.push(newLine, ind.root.value);
+ pos = ind.root.length;
+ } else {
+ out.push(newLine);
+ pos = 0;
+ }
+ } else {
+ pos -= trim$1(out);
+ out.push(newLine + ind.value);
+ pos = ind.length;
+ }
+
+ break;
+ }
+
+ break;
+ }
+ }
+ }
+
+ var cursorPlaceholderIndex = out.indexOf(cursor$1.placeholder);
+
+ if (cursorPlaceholderIndex !== -1) {
+ var otherCursorPlaceholderIndex = out.indexOf(cursor$1.placeholder, cursorPlaceholderIndex + 1);
+ var beforeCursor = out.slice(0, cursorPlaceholderIndex).join("");
+ var aroundCursor = out.slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex).join("");
+ var afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join("");
+ return {
+ formatted: beforeCursor + aroundCursor + afterCursor,
+ cursorNodeStart: beforeCursor.length,
+ cursorNodeText: aroundCursor
+ };
+ }
+
+ return {
+ formatted: out.join("")
+ };
+ }
+
+ var docPrinter = {
+ printDocToString: printDocToString
+ };
+
+ var traverseDocOnExitStackMarker = {};
+
+ function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) {
+ var docsStack = [doc];
+
+ while (docsStack.length !== 0) {
+ var _doc = docsStack.pop();
+
+ if (_doc === traverseDocOnExitStackMarker) {
+ onExit(docsStack.pop());
+ continue;
+ }
+
+ var shouldRecurse = true;
+
+ if (onEnter) {
+ if (onEnter(_doc) === false) {
+ shouldRecurse = false;
+ }
+ }
+
+ if (onExit) {
+ docsStack.push(_doc);
+ docsStack.push(traverseDocOnExitStackMarker);
+ }
+
+ if (shouldRecurse) {
+ // When there are multiple parts to process,
+ // the parts need to be pushed onto the stack in reverse order,
+ // so that they are processed in the original order
+ // when the stack is popped.
+ if (_doc.type === "concat" || _doc.type === "fill") {
+ for (var ic = _doc.parts.length, i = ic - 1; i >= 0; --i) {
+ docsStack.push(_doc.parts[i]);
+ }
+ } else if (_doc.type === "if-break") {
+ if (_doc.flatContents) {
+ docsStack.push(_doc.flatContents);
+ }
+
+ if (_doc.breakContents) {
+ docsStack.push(_doc.breakContents);
+ }
+ } else if (_doc.type === "group" && _doc.expandedStates) {
+ if (shouldTraverseConditionalGroups) {
+ for (var _ic = _doc.expandedStates.length, _i = _ic - 1; _i >= 0; --_i) {
+ docsStack.push(_doc.expandedStates[_i]);
+ }
+ } else {
+ docsStack.push(_doc.contents);
+ }
+ } else if (_doc.contents) {
+ docsStack.push(_doc.contents);
+ }
+ }
+ }
+ }
+
+ function mapDoc(doc, cb) {
+ if (doc.type === "concat" || doc.type === "fill") {
+ var parts = doc.parts.map(function (part) {
+ return mapDoc(part, cb);
+ });
+ return cb(Object.assign({}, doc, {
+ parts: parts
+ }));
+ } else if (doc.type === "if-break") {
+ var breakContents = doc.breakContents && mapDoc(doc.breakContents, cb);
+ var flatContents = doc.flatContents && mapDoc(doc.flatContents, cb);
+ return cb(Object.assign({}, doc, {
+ breakContents: breakContents,
+ flatContents: flatContents
+ }));
+ } else if (doc.contents) {
+ var contents = mapDoc(doc.contents, cb);
+ return cb(Object.assign({}, doc, {
+ contents: contents
+ }));
+ }
+
+ return cb(doc);
+ }
+
+ function findInDoc(doc, fn, defaultValue) {
+ var result = defaultValue;
+ var hasStopped = false;
+
+ function findInDocOnEnterFn(doc) {
+ var maybeResult = fn(doc);
+
+ if (maybeResult !== undefined) {
+ hasStopped = true;
+ result = maybeResult;
+ }
+
+ if (hasStopped) {
+ return false;
+ }
+ }
+
+ traverseDoc(doc, findInDocOnEnterFn);
+ return result;
+ }
+
+ function isEmpty(n) {
+ return typeof n === "string" && n.length === 0;
+ }
+
+ function isLineNextFn(doc) {
+ if (typeof doc === "string") {
+ return false;
+ }
+
+ if (doc.type === "line") {
+ return true;
+ }
+ }
+
+ function isLineNext(doc) {
+ return findInDoc(doc, isLineNextFn, false);
+ }
+
+ function willBreakFn(doc) {
+ if (doc.type === "group" && doc.break) {
+ return true;
+ }
+
+ if (doc.type === "line" && doc.hard) {
+ return true;
+ }
+
+ if (doc.type === "break-parent") {
+ return true;
+ }
+ }
+
+ function willBreak(doc) {
+ return findInDoc(doc, willBreakFn, false);
+ }
+
+ function breakParentGroup(groupStack) {
+ if (groupStack.length > 0) {
+ var parentGroup = groupStack[groupStack.length - 1]; // Breaks are not propagated through conditional groups because
+ // the user is expected to manually handle what breaks.
+
+ if (!parentGroup.expandedStates) {
+ parentGroup.break = true;
+ }
+ }
+
+ return null;
+ }
+
+ function propagateBreaks(doc) {
+ var alreadyVisitedSet = new Set();
+ var groupStack = [];
+
+ function propagateBreaksOnEnterFn(doc) {
+ if (doc.type === "break-parent") {
+ breakParentGroup(groupStack);
+ }
+
+ if (doc.type === "group") {
+ groupStack.push(doc);
+
+ if (alreadyVisitedSet.has(doc)) {
+ return false;
+ }
+
+ alreadyVisitedSet.add(doc);
+ }
+ }
+
+ function propagateBreaksOnExitFn(doc) {
+ if (doc.type === "group") {
+ var group = groupStack.pop();
+
+ if (group.break) {
+ breakParentGroup(groupStack);
+ }
+ }
+ }
+
+ traverseDoc(doc, propagateBreaksOnEnterFn, propagateBreaksOnExitFn,
+ /* shouldTraverseConditionalGroups */
+ true);
+ }
+
+ function removeLinesFn(doc) {
+ // Force this doc into flat mode by statically converting all
+ // lines into spaces (or soft lines into nothing). Hard lines
+ // should still output because there's too great of a chance
+ // of breaking existing assumptions otherwise.
+ if (doc.type === "line" && !doc.hard) {
+ return doc.soft ? "" : " ";
+ } else if (doc.type === "if-break") {
+ return doc.flatContents || "";
+ }
+
+ return doc;
+ }
+
+ function removeLines(doc) {
+ return mapDoc(doc, removeLinesFn);
+ }
+
+ function stripTrailingHardline(doc) {
+ // HACK remove ending hardline, original PR: #1984
+ if (doc.type === "concat" && doc.parts.length !== 0) {
+ var lastPart = doc.parts[doc.parts.length - 1];
+
+ if (lastPart.type === "concat") {
+ if (lastPart.parts.length === 2 && lastPart.parts[0].hard && lastPart.parts[1].type === "break-parent") {
+ return {
+ type: "concat",
+ parts: doc.parts.slice(0, -1)
+ };
+ }
+
+ return {
+ type: "concat",
+ parts: doc.parts.slice(0, -1).concat(stripTrailingHardline(lastPart))
+ };
+ }
+ }
+
+ return doc;
+ }
+
+ var docUtils = {
+ isEmpty: isEmpty,
+ willBreak: willBreak,
+ isLineNext: isLineNext,
+ traverseDoc: traverseDoc,
+ findInDoc: findInDoc,
+ mapDoc: mapDoc,
+ propagateBreaks: propagateBreaks,
+ removeLines: removeLines,
+ stripTrailingHardline: stripTrailingHardline
+ };
+
+ function flattenDoc(doc) {
+ if (doc.type === "concat") {
+ var res = [];
+
+ for (var i = 0; i < doc.parts.length; ++i) {
+ var doc2 = doc.parts[i];
+
+ if (typeof doc2 !== "string" && doc2.type === "concat") {
+ [].push.apply(res, flattenDoc(doc2).parts);
+ } else {
+ var flattened = flattenDoc(doc2);
+
+ if (flattened !== "") {
+ res.push(flattened);
+ }
+ }
+ }
+
+ return Object.assign({}, doc, {
+ parts: res
+ });
+ } else if (doc.type === "if-break") {
+ return Object.assign({}, doc, {
+ breakContents: doc.breakContents != null ? flattenDoc(doc.breakContents) : null,
+ flatContents: doc.flatContents != null ? flattenDoc(doc.flatContents) : null
+ });
+ } else if (doc.type === "group") {
+ return Object.assign({}, doc, {
+ contents: flattenDoc(doc.contents),
+ expandedStates: doc.expandedStates ? doc.expandedStates.map(flattenDoc) : doc.expandedStates
+ });
+ } else if (doc.contents) {
+ return Object.assign({}, doc, {
+ contents: flattenDoc(doc.contents)
+ });
+ }
+
+ return doc;
+ }
+
+ function printDoc(doc) {
+ if (typeof doc === "string") {
+ return JSON.stringify(doc);
+ }
+
+ if (doc.type === "line") {
+ if (doc.literal) {
+ return "literalline";
+ }
+
+ if (doc.hard) {
+ return "hardline";
+ }
+
+ if (doc.soft) {
+ return "softline";
+ }
+
+ return "line";
+ }
+
+ if (doc.type === "break-parent") {
+ return "breakParent";
+ }
+
+ if (doc.type === "trim") {
+ return "trim";
+ }
+
+ if (doc.type === "concat") {
+ return "[" + doc.parts.map(printDoc).join(", ") + "]";
+ }
+
+ if (doc.type === "indent") {
+ return "indent(" + printDoc(doc.contents) + ")";
+ }
+
+ if (doc.type === "align") {
+ return doc.n === -Infinity ? "dedentToRoot(" + printDoc(doc.contents) + ")" : doc.n < 0 ? "dedent(" + printDoc(doc.contents) + ")" : doc.n.type === "root" ? "markAsRoot(" + printDoc(doc.contents) + ")" : "align(" + JSON.stringify(doc.n) + ", " + printDoc(doc.contents) + ")";
+ }
+
+ if (doc.type === "if-break") {
+ return "ifBreak(" + printDoc(doc.breakContents) + (doc.flatContents ? ", " + printDoc(doc.flatContents) : "") + ")";
+ }
+
+ if (doc.type === "group") {
+ if (doc.expandedStates) {
+ return "conditionalGroup(" + "[" + doc.expandedStates.map(printDoc).join(",") + "])";
+ }
+
+ return (doc.break ? "wrappedGroup" : "group") + "(" + printDoc(doc.contents) + ")";
+ }
+
+ if (doc.type === "fill") {
+ return "fill" + "(" + doc.parts.map(printDoc).join(", ") + ")";
+ }
+
+ if (doc.type === "line-suffix") {
+ return "lineSuffix(" + printDoc(doc.contents) + ")";
+ }
+
+ if (doc.type === "line-suffix-boundary") {
+ return "lineSuffixBoundary";
+ }
+
+ throw new Error("Unknown doc type " + doc.type);
+ }
+
+ var docDebug = {
+ printDocToDebug: function printDocToDebug(doc) {
+ return printDoc(flattenDoc(doc));
+ }
+ };
+
+ var doc = {
+ builders: docBuilders,
+ printer: docPrinter,
+ utils: docUtils,
+ debug: docDebug
+ };
+ var doc_1 = doc.builders;
+ var doc_2 = doc.printer;
+ var doc_3 = doc.utils;
+ var doc_4 = doc.debug;
+
+ exports.builders = doc_1;
+ exports.debug = doc_4;
+ exports.default = doc;
+ exports.printer = doc_2;
+ exports.utils = doc_3;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+})));
diff --git a/node_modules/prettier/index.js b/node_modules/prettier/index.js
new file mode 100644
index 0000000..c0b228a
--- /dev/null
+++ b/node_modules/prettier/index.js
@@ -0,0 +1,44254 @@
+'use strict';
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var fs$1 = _interopDefault(require('fs'));
+var os$1 = _interopDefault(require('os'));
+var path$2 = _interopDefault(require('path'));
+var assert$1 = _interopDefault(require('assert'));
+var util$2 = _interopDefault(require('util'));
+var events$1 = _interopDefault(require('events'));
+
+var name = "prettier";
+var version = "1.19.1";
+var description = "Prettier is an opinionated code formatter";
+var bin = {
+ prettier: "./bin/prettier.js"
+};
+var repository = "prettier/prettier";
+var homepage = "https://prettier.io";
+var author = "James Long";
+var license = "MIT";
+var main = "./index.js";
+var engines = {
+ node: ">=8"
+};
+var dependencies = {
+ "@angular/compiler": "8.2.13",
+ "@babel/code-frame": "7.5.5",
+ "@babel/parser": "7.7.3",
+ "@glimmer/syntax": "0.41.0",
+ "@iarna/toml": "2.2.3",
+ "@typescript-eslint/typescript-estree": "2.6.1",
+ "angular-estree-parser": "1.1.5",
+ "angular-html-parser": "1.3.0",
+ camelcase: "5.3.1",
+ chalk: "2.4.2",
+ "cjk-regex": "2.0.0",
+ cosmiconfig: "5.2.1",
+ dashify: "2.0.0",
+ dedent: "0.7.0",
+ diff: "4.0.1",
+ editorconfig: "0.15.3",
+ "editorconfig-to-prettier": "0.1.1",
+ "escape-string-regexp": "1.0.5",
+ esutils: "2.0.3",
+ "find-parent-dir": "0.3.0",
+ "find-project-root": "1.1.1",
+ "flow-parser": "0.111.3",
+ "get-stream": "4.1.0",
+ globby: "6.1.0",
+ graphql: "14.5.8",
+ "html-element-attributes": "2.2.0",
+ "html-styles": "1.0.0",
+ "html-tag-names": "1.1.4",
+ ignore: "4.0.6",
+ "is-ci": "2.0.0",
+ "jest-docblock": "24.9.0",
+ "json-stable-stringify": "1.0.1",
+ leven: "3.1.0",
+ "lines-and-columns": "1.1.6",
+ "linguist-languages": "7.6.0",
+ "lodash.uniqby": "4.7.0",
+ mem: "5.1.1",
+ minimatch: "3.0.4",
+ minimist: "1.2.0",
+ "n-readlines": "1.0.0",
+ "normalize-path": "3.0.0",
+ "parse-srcset": "ikatyang/parse-srcset#54eb9c1cb21db5c62b4d0e275d7249516df6f0ee",
+ "postcss-less": "2.0.0",
+ "postcss-media-query-parser": "0.2.3",
+ "postcss-scss": "2.0.0",
+ "postcss-selector-parser": "2.2.3",
+ "postcss-values-parser": "1.5.0",
+ "regexp-util": "1.2.2",
+ "remark-math": "1.0.6",
+ "remark-parse": "5.0.0",
+ resolve: "1.12.0",
+ semver: "6.3.0",
+ "string-width": "4.1.0",
+ typescript: "3.7.2",
+ "unicode-regex": "3.0.0",
+ unified: "8.4.1",
+ vnopts: "1.0.2",
+ "yaml-unist-parser": "1.1.1"
+};
+var devDependencies = {
+ "@babel/core": "7.7.2",
+ "@babel/preset-env": "7.7.1",
+ "@rollup/plugin-alias": "2.2.0",
+ "@rollup/plugin-replace": "2.2.1",
+ "babel-loader": "8.0.6",
+ benchmark: "2.1.4",
+ "builtin-modules": "3.1.0",
+ codecov: "3.6.1",
+ "cross-env": "6.0.3",
+ eslint: "6.6.0",
+ "eslint-config-prettier": "6.5.0",
+ "eslint-formatter-friendly": "7.0.0",
+ "eslint-plugin-import": "2.18.2",
+ "eslint-plugin-prettier": "3.1.1",
+ "eslint-plugin-react": "7.16.0",
+ execa: "3.2.0",
+ jest: "23.3.0",
+ "jest-junit": "9.0.0",
+ "jest-snapshot-serializer-ansi": "1.0.0",
+ "jest-snapshot-serializer-raw": "1.1.0",
+ "jest-watch-typeahead": "0.4.0",
+ mkdirp: "0.5.1",
+ prettier: "1.19.0",
+ prettylint: "1.0.0",
+ rimraf: "3.0.0",
+ rollup: "1.26.3",
+ "rollup-plugin-babel": "4.3.3",
+ "rollup-plugin-commonjs": "10.1.0",
+ "rollup-plugin-json": "4.0.0",
+ "rollup-plugin-node-globals": "1.4.0",
+ "rollup-plugin-node-resolve": "5.2.0",
+ "rollup-plugin-terser": "5.1.2",
+ shelljs: "0.8.3",
+ "snapshot-diff": "0.4.0",
+ "strip-ansi": "5.2.0",
+ "synchronous-promise": "2.0.10",
+ tempy: "0.2.1",
+ "terser-webpack-plugin": "2.2.1",
+ webpack: "4.41.2"
+};
+var scripts = {
+ prepublishOnly: "echo \"Error: must publish from dist/\" && exit 1",
+ "prepare-release": "yarn && yarn build && yarn test:dist",
+ test: "jest",
+ "test:dist": "node ./scripts/test-dist.js",
+ "test-integration": "jest tests_integration",
+ "perf-repeat": "yarn && yarn build && cross-env NODE_ENV=production node ./dist/bin-prettier.js --debug-repeat ${PERF_REPEAT:-1000} --loglevel debug ${PERF_FILE:-./index.js} > /dev/null",
+ "perf-repeat-inspect": "yarn && yarn build && cross-env NODE_ENV=production node --inspect-brk ./dist/bin-prettier.js --debug-repeat ${PERF_REPEAT:-1000} --loglevel debug ${PERF_FILE:-./index.js} > /dev/null",
+ "perf-benchmark": "yarn && yarn build && cross-env NODE_ENV=production node ./dist/bin-prettier.js --debug-benchmark --loglevel debug ${PERF_FILE:-./index.js} > /dev/null",
+ "check-types": "tsc",
+ lint: "cross-env EFF_NO_LINK_RULES=true eslint . --format friendly",
+ "lint-docs": "prettylint {.,docs,website,website/blog}/*.md",
+ "lint-dist": "eslint --no-eslintrc --no-ignore --env=browser \"dist/!(bin-prettier|index|third-party).js\"",
+ build: "node --max-old-space-size=3072 ./scripts/build/build.js",
+ "build-docs": "node ./scripts/build-docs.js",
+ "check-deps": "node ./scripts/check-deps.js",
+ spellcheck: "npx -p cspell@4.0.31 cspell {bin,scripts,src}/**/*.js {docs,website/blog,changelog_unreleased}/**/*.md"
+};
+var _package = {
+ name: name,
+ version: version,
+ description: description,
+ bin: bin,
+ repository: repository,
+ homepage: homepage,
+ author: author,
+ license: license,
+ main: main,
+ engines: engines,
+ dependencies: dependencies,
+ devDependencies: devDependencies,
+ scripts: scripts
+};
+
+var _package$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name,
+ version: version,
+ description: description,
+ bin: bin,
+ repository: repository,
+ homepage: homepage,
+ author: author,
+ license: license,
+ main: main,
+ engines: engines,
+ dependencies: dependencies,
+ devDependencies: devDependencies,
+ scripts: scripts,
+ 'default': _package
+});
+
+function Diff() {}
+
+Diff.prototype = {
+ diff: function diff(oldString, newString) {
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+ var callback = options.callback;
+
+ if (typeof options === 'function') {
+ callback = options;
+ options = {};
+ }
+
+ this.options = options;
+ var self = this;
+
+ function done(value) {
+ if (callback) {
+ setTimeout(function () {
+ callback(undefined, value);
+ }, 0);
+ return true;
+ } else {
+ return value;
+ }
+ } // Allow subclasses to massage the input prior to running
+
+
+ oldString = this.castInput(oldString);
+ newString = this.castInput(newString);
+ oldString = this.removeEmpty(this.tokenize(oldString));
+ newString = this.removeEmpty(this.tokenize(newString));
+ var newLen = newString.length,
+ oldLen = oldString.length;
+ var editLength = 1;
+ var maxEditLength = newLen + oldLen;
+ var bestPath = [{
+ newPos: -1,
+ components: []
+ }]; // Seed editLength = 0, i.e. the content starts with the same values
+
+ var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
+
+ if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
+ // Identity per the equality and tokenizer
+ return done([{
+ value: this.join(newString),
+ count: newString.length
+ }]);
+ } // Main worker method. checks all permutations of a given edit length for acceptance.
+
+
+ function execEditLength() {
+ for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
+ var basePath = void 0;
+
+ var addPath = bestPath[diagonalPath - 1],
+ removePath = bestPath[diagonalPath + 1],
+ _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
+
+ if (addPath) {
+ // No one else is going to attempt to use this value, clear it
+ bestPath[diagonalPath - 1] = undefined;
+ }
+
+ var canAdd = addPath && addPath.newPos + 1 < newLen,
+ canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;
+
+ if (!canAdd && !canRemove) {
+ // If this path is a terminal then prune
+ bestPath[diagonalPath] = undefined;
+ continue;
+ } // Select the diagonal that we want to branch from. We select the prior
+ // path whose position in the new string is the farthest from the origin
+ // and does not pass the bounds of the diff graph
+
+
+ if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {
+ basePath = clonePath(removePath);
+ self.pushComponent(basePath.components, undefined, true);
+ } else {
+ basePath = addPath; // No need to clone, we've pulled it from the list
+
+ basePath.newPos++;
+ self.pushComponent(basePath.components, true, undefined);
+ }
+
+ _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done
+
+ if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {
+ return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));
+ } else {
+ // Otherwise track this path as a potential candidate and continue.
+ bestPath[diagonalPath] = basePath;
+ }
+ }
+
+ editLength++;
+ } // Performs the length of edit iteration. Is a bit fugly as this has to support the
+ // sync and async mode which is never fun. Loops over execEditLength until a value
+ // is produced.
+
+
+ if (callback) {
+ (function exec() {
+ setTimeout(function () {
+ // This should not happen, but we want to be safe.
+
+ /* istanbul ignore next */
+ if (editLength > maxEditLength) {
+ return callback();
+ }
+
+ if (!execEditLength()) {
+ exec();
+ }
+ }, 0);
+ })();
+ } else {
+ while (editLength <= maxEditLength) {
+ var ret = execEditLength();
+
+ if (ret) {
+ return ret;
+ }
+ }
+ }
+ },
+ pushComponent: function pushComponent(components, added, removed) {
+ var last = components[components.length - 1];
+
+ if (last && last.added === added && last.removed === removed) {
+ // We need to clone here as the component clone operation is just
+ // as shallow array clone
+ components[components.length - 1] = {
+ count: last.count + 1,
+ added: added,
+ removed: removed
+ };
+ } else {
+ components.push({
+ count: 1,
+ added: added,
+ removed: removed
+ });
+ }
+ },
+ extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {
+ var newLen = newString.length,
+ oldLen = oldString.length,
+ newPos = basePath.newPos,
+ oldPos = newPos - diagonalPath,
+ commonCount = 0;
+
+ while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
+ newPos++;
+ oldPos++;
+ commonCount++;
+ }
+
+ if (commonCount) {
+ basePath.components.push({
+ count: commonCount
+ });
+ }
+
+ basePath.newPos = newPos;
+ return oldPos;
+ },
+ equals: function equals(left, right) {
+ if (this.options.comparator) {
+ return this.options.comparator(left, right);
+ } else {
+ return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();
+ }
+ },
+ removeEmpty: function removeEmpty(array) {
+ var ret = [];
+
+ for (var i = 0; i < array.length; i++) {
+ if (array[i]) {
+ ret.push(array[i]);
+ }
+ }
+
+ return ret;
+ },
+ castInput: function castInput(value) {
+ return value;
+ },
+ tokenize: function tokenize(value) {
+ return value.split('');
+ },
+ join: function join(chars) {
+ return chars.join('');
+ }
+};
+
+function buildValues(diff, components, newString, oldString, useLongestToken) {
+ var componentPos = 0,
+ componentLen = components.length,
+ newPos = 0,
+ oldPos = 0;
+
+ for (; componentPos < componentLen; componentPos++) {
+ var component = components[componentPos];
+
+ if (!component.removed) {
+ if (!component.added && useLongestToken) {
+ var value = newString.slice(newPos, newPos + component.count);
+ value = value.map(function (value, i) {
+ var oldValue = oldString[oldPos + i];
+ return oldValue.length > value.length ? oldValue : value;
+ });
+ component.value = diff.join(value);
+ } else {
+ component.value = diff.join(newString.slice(newPos, newPos + component.count));
+ }
+
+ newPos += component.count; // Common case
+
+ if (!component.added) {
+ oldPos += component.count;
+ }
+ } else {
+ component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));
+ oldPos += component.count; // Reverse add and remove so removes are output first to match common convention
+ // The diffing algorithm is tied to add then remove output and this is the simplest
+ // route to get the desired output with minimal overhead.
+
+ if (componentPos && components[componentPos - 1].added) {
+ var tmp = components[componentPos - 1];
+ components[componentPos - 1] = components[componentPos];
+ components[componentPos] = tmp;
+ }
+ }
+ } // Special case handle for when one terminal is ignored (i.e. whitespace).
+ // For this case we merge the terminal into the prior string and drop the change.
+ // This is only available for string mode.
+
+
+ var lastComponent = components[componentLen - 1];
+
+ if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {
+ components[componentLen - 2].value += lastComponent.value;
+ components.pop();
+ }
+
+ return components;
+}
+
+function clonePath(path) {
+ return {
+ newPos: path.newPos,
+ components: path.components.slice(0)
+ };
+}
+
+var characterDiff = new Diff();
+
+function diffChars(oldStr, newStr, options) {
+ return characterDiff.diff(oldStr, newStr, options);
+}
+
+function generateOptions(options, defaults) {
+ if (typeof options === 'function') {
+ defaults.callback = options;
+ } else if (options) {
+ for (var name in options) {
+ /* istanbul ignore else */
+ if (options.hasOwnProperty(name)) {
+ defaults[name] = options[name];
+ }
+ }
+ }
+
+ return defaults;
+} //
+// Ranges and exceptions:
+// Latin-1 Supplement, 0080–00FF
+// - U+00D7 × Multiplication sign
+// - U+00F7 ÷ Division sign
+// Latin Extended-A, 0100–017F
+// Latin Extended-B, 0180–024F
+// IPA Extensions, 0250–02AF
+// Spacing Modifier Letters, 02B0–02FF
+// - U+02C7 ˇ &#711; Caron
+// - U+02D8 ˘ &#728; Breve
+// - U+02D9 ˙ &#729; Dot Above
+// - U+02DA ˚ &#730; Ring Above
+// - U+02DB ˛ &#731; Ogonek
+// - U+02DC ˜ &#732; Small Tilde
+// - U+02DD ˝ &#733; Double Acute Accent
+// Latin Extended Additional, 1E00–1EFF
+
+
+var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/;
+var reWhitespace = /\S/;
+var wordDiff = new Diff();
+
+wordDiff.equals = function (left, right) {
+ if (this.options.ignoreCase) {
+ left = left.toLowerCase();
+ right = right.toLowerCase();
+ }
+
+ return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);
+};
+
+wordDiff.tokenize = function (value) {
+ var tokens = value.split(/(\s+|[()[\]{}'"]|\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.
+
+ for (var i = 0; i < tokens.length - 1; i++) {
+ // If we have an empty string in the next field and we have only word chars before and after, merge
+ if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {
+ tokens[i] += tokens[i + 2];
+ tokens.splice(i + 1, 2);
+ i--;
+ }
+ }
+
+ return tokens;
+};
+
+function diffWords(oldStr, newStr, options) {
+ options = generateOptions(options, {
+ ignoreWhitespace: true
+ });
+ return wordDiff.diff(oldStr, newStr, options);
+}
+
+function diffWordsWithSpace(oldStr, newStr, options) {
+ return wordDiff.diff(oldStr, newStr, options);
+}
+
+var lineDiff = new Diff();
+
+lineDiff.tokenize = function (value) {
+ var retLines = [],
+ linesAndNewlines = value.split(/(\n|\r\n)/); // Ignore the final empty token that occurs if the string ends with a new line
+
+ if (!linesAndNewlines[linesAndNewlines.length - 1]) {
+ linesAndNewlines.pop();
+ } // Merge the content and line separators into single tokens
+
+
+ for (var i = 0; i < linesAndNewlines.length; i++) {
+ var line = linesAndNewlines[i];
+
+ if (i % 2 && !this.options.newlineIsToken) {
+ retLines[retLines.length - 1] += line;
+ } else {
+ if (this.options.ignoreWhitespace) {
+ line = line.trim();
+ }
+
+ retLines.push(line);
+ }
+ }
+
+ return retLines;
+};
+
+function diffLines(oldStr, newStr, callback) {
+ return lineDiff.diff(oldStr, newStr, callback);
+}
+
+function diffTrimmedLines(oldStr, newStr, callback) {
+ var options = generateOptions(callback, {
+ ignoreWhitespace: true
+ });
+ return lineDiff.diff(oldStr, newStr, options);
+}
+
+var sentenceDiff = new Diff();
+
+sentenceDiff.tokenize = function (value) {
+ return value.split(/(\S.+?[.!?])(?=\s+|$)/);
+};
+
+function diffSentences(oldStr, newStr, callback) {
+ return sentenceDiff.diff(oldStr, newStr, callback);
+}
+
+var cssDiff = new Diff();
+
+cssDiff.tokenize = function (value) {
+ return value.split(/([{}:;,]|\s+)/);
+};
+
+function diffCss(oldStr, newStr, callback) {
+ return cssDiff.diff(oldStr, newStr, callback);
+}
+
+function _typeof(obj) {
+ if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+ _typeof = function _typeof(obj) {
+ return typeof obj;
+ };
+ } else {
+ _typeof = function _typeof(obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+ }
+
+ return _typeof(obj);
+}
+
+function _toConsumableArray(arr) {
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
+}
+
+function _arrayWithoutHoles(arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
+ arr2[i] = arr[i];
+ }
+
+ return arr2;
+ }
+}
+
+function _iterableToArray(iter) {
+ if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
+}
+
+function _nonIterableSpread() {
+ throw new TypeError("Invalid attempt to spread non-iterable instance");
+}
+
+var objectPrototypeToString = Object.prototype.toString;
+var jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a
+// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:
+
+jsonDiff.useLongestToken = true;
+jsonDiff.tokenize = lineDiff.tokenize;
+
+jsonDiff.castInput = function (value) {
+ var _this$options = this.options,
+ undefinedReplacement = _this$options.undefinedReplacement,
+ _this$options$stringi = _this$options.stringifyReplacer,
+ stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) {
+ return typeof v === 'undefined' ? undefinedReplacement : v;
+ } : _this$options$stringi;
+ return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' ');
+};
+
+jsonDiff.equals = function (left, right) {
+ return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'));
+};
+
+function diffJson(oldObj, newObj, options) {
+ return jsonDiff.diff(oldObj, newObj, options);
+} // This function handles the presence of circular references by bailing out when encountering an
+// object that is already on the "stack" of items being processed. Accepts an optional replacer
+
+
+function canonicalize(obj, stack, replacementStack, replacer, key) {
+ stack = stack || [];
+ replacementStack = replacementStack || [];
+
+ if (replacer) {
+ obj = replacer(key, obj);
+ }
+
+ var i;
+
+ for (i = 0; i < stack.length; i += 1) {
+ if (stack[i] === obj) {
+ return replacementStack[i];
+ }
+ }
+
+ var canonicalizedObj;
+
+ if ('[object Array]' === objectPrototypeToString.call(obj)) {
+ stack.push(obj);
+ canonicalizedObj = new Array(obj.length);
+ replacementStack.push(canonicalizedObj);
+
+ for (i = 0; i < obj.length; i += 1) {
+ canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);
+ }
+
+ stack.pop();
+ replacementStack.pop();
+ return canonicalizedObj;
+ }
+
+ if (obj && obj.toJSON) {
+ obj = obj.toJSON();
+ }
+
+ if (_typeof(obj) === 'object' && obj !== null) {
+ stack.push(obj);
+ canonicalizedObj = {};
+ replacementStack.push(canonicalizedObj);
+
+ var sortedKeys = [],
+ _key;
+
+ for (_key in obj) {
+ /* istanbul ignore else */
+ if (obj.hasOwnProperty(_key)) {
+ sortedKeys.push(_key);
+ }
+ }
+
+ sortedKeys.sort();
+
+ for (i = 0; i < sortedKeys.length; i += 1) {
+ _key = sortedKeys[i];
+ canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);
+ }
+
+ stack.pop();
+ replacementStack.pop();
+ } else {
+ canonicalizedObj = obj;
+ }
+
+ return canonicalizedObj;
+}
+
+var arrayDiff = new Diff();
+
+arrayDiff.tokenize = function (value) {
+ return value.slice();
+};
+
+arrayDiff.join = arrayDiff.removeEmpty = function (value) {
+ return value;
+};
+
+function diffArrays(oldArr, newArr, callback) {
+ return arrayDiff.diff(oldArr, newArr, callback);
+}
+
+function parsePatch(uniDiff) {
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+ var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/),
+ delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [],
+ list = [],
+ i = 0;
+
+ function parseIndex() {
+ var index = {};
+ list.push(index); // Parse diff metadata
+
+ while (i < diffstr.length) {
+ var line = diffstr[i]; // File header found, end parsing diff metadata
+
+ if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) {
+ break;
+ } // Diff index
+
+
+ var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line);
+
+ if (header) {
+ index.index = header[1];
+ }
+
+ i++;
+ } // Parse file headers if they are defined. Unified diff requires them, but
+ // there's no technical issues to have an isolated hunk without file header
+
+
+ parseFileHeader(index);
+ parseFileHeader(index); // Parse hunks
+
+ index.hunks = [];
+
+ while (i < diffstr.length) {
+ var _line = diffstr[i];
+
+ if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) {
+ break;
+ } else if (/^@@/.test(_line)) {
+ index.hunks.push(parseHunk());
+ } else if (_line && options.strict) {
+ // Ignore unexpected content unless in strict mode
+ throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));
+ } else {
+ i++;
+ }
+ }
+ } // Parses the --- and +++ headers, if none are found, no lines
+ // are consumed.
+
+
+ function parseFileHeader(index) {
+ var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]);
+
+ if (fileHeader) {
+ var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';
+ var data = fileHeader[2].split('\t', 2);
+ var fileName = data[0].replace(/\\\\/g, '\\');
+
+ if (/^".*"$/.test(fileName)) {
+ fileName = fileName.substr(1, fileName.length - 2);
+ }
+
+ index[keyPrefix + 'FileName'] = fileName;
+ index[keyPrefix + 'Header'] = (data[1] || '').trim();
+ i++;
+ }
+ } // Parses a hunk
+ // This assumes that we are at the start of a hunk.
+
+
+ function parseHunk() {
+ var chunkHeaderIndex = i,
+ chunkHeaderLine = diffstr[i++],
+ chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
+ var hunk = {
+ oldStart: +chunkHeader[1],
+ oldLines: +chunkHeader[2] || 1,
+ newStart: +chunkHeader[3],
+ newLines: +chunkHeader[4] || 1,
+ lines: [],
+ linedelimiters: []
+ };
+ var addCount = 0,
+ removeCount = 0;
+
+ for (; i < diffstr.length; i++) {
+ // Lines starting with '---' could be mistaken for the "remove line" operation
+ // But they could be the header for the next file. Therefore prune such cases out.
+ if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {
+ break;
+ }
+
+ var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];
+
+ if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') {
+ hunk.lines.push(diffstr[i]);
+ hunk.linedelimiters.push(delimiters[i] || '\n');
+
+ if (operation === '+') {
+ addCount++;
+ } else if (operation === '-') {
+ removeCount++;
+ } else if (operation === ' ') {
+ addCount++;
+ removeCount++;
+ }
+ } else {
+ break;
+ }
+ } // Handle the empty block count case
+
+
+ if (!addCount && hunk.newLines === 1) {
+ hunk.newLines = 0;
+ }
+
+ if (!removeCount && hunk.oldLines === 1) {
+ hunk.oldLines = 0;
+ } // Perform optional sanity checking
+
+
+ if (options.strict) {
+ if (addCount !== hunk.newLines) {
+ throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
+ }
+
+ if (removeCount !== hunk.oldLines) {
+ throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
+ }
+ }
+
+ return hunk;
+ }
+
+ while (i < diffstr.length) {
+ parseIndex();
+ }
+
+ return list;
+} // Iterator that traverses in the range of [min, max], stepping
+// by distance from a given start position. I.e. for [0, 4], with
+// start of 2, this will iterate 2, 3, 1, 4, 0.
+
+
+function distanceIterator(start, minLine, maxLine) {
+ var wantForward = true,
+ backwardExhausted = false,
+ forwardExhausted = false,
+ localOffset = 1;
+ return function iterator() {
+ if (wantForward && !forwardExhausted) {
+ if (backwardExhausted) {
+ localOffset++;
+ } else {
+ wantForward = false;
+ } // Check if trying to fit beyond text length, and if not, check it fits
+ // after offset location (or desired location on first iteration)
+
+
+ if (start + localOffset <= maxLine) {
+ return localOffset;
+ }
+
+ forwardExhausted = true;
+ }
+
+ if (!backwardExhausted) {
+ if (!forwardExhausted) {
+ wantForward = true;
+ } // Check if trying to fit before text beginning, and if not, check it fits
+ // before offset location
+
+
+ if (minLine <= start - localOffset) {
+ return -localOffset++;
+ }
+
+ backwardExhausted = true;
+ return iterator();
+ } // We tried to fit hunk before text beginning and beyond text length, then
+ // hunk can't fit on the text. Return undefined
+
+ };
+}
+
+function applyPatch(source, uniDiff) {
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+
+ if (typeof uniDiff === 'string') {
+ uniDiff = parsePatch(uniDiff);
+ }
+
+ if (Array.isArray(uniDiff)) {
+ if (uniDiff.length > 1) {
+ throw new Error('applyPatch only works with a single input.');
+ }
+
+ uniDiff = uniDiff[0];
+ } // Apply the diff to the input
+
+
+ var lines = source.split(/\r\n|[\n\v\f\r\x85]/),
+ delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [],
+ hunks = uniDiff.hunks,
+ compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) {
+ return line === patchContent;
+ },
+ errorCount = 0,
+ fuzzFactor = options.fuzzFactor || 0,
+ minLine = 0,
+ offset = 0,
+ removeEOFNL,
+ addEOFNL;
+ /**
+ * Checks if the hunk exactly fits on the provided location
+ */
+
+
+ function hunkFits(hunk, toPos) {
+ for (var j = 0; j < hunk.lines.length; j++) {
+ var line = hunk.lines[j],
+ operation = line.length > 0 ? line[0] : ' ',
+ content = line.length > 0 ? line.substr(1) : line;
+
+ if (operation === ' ' || operation === '-') {
+ // Context sanity check
+ if (!compareLine(toPos + 1, lines[toPos], operation, content)) {
+ errorCount++;
+
+ if (errorCount > fuzzFactor) {
+ return false;
+ }
+ }
+
+ toPos++;
+ }
+ }
+
+ return true;
+ } // Search best fit offsets for each hunk based on the previous ones
+
+
+ for (var i = 0; i < hunks.length; i++) {
+ var hunk = hunks[i],
+ maxLine = lines.length - hunk.oldLines,
+ localOffset = 0,
+ toPos = offset + hunk.oldStart - 1;
+ var iterator = distanceIterator(toPos, minLine, maxLine);
+
+ for (; localOffset !== undefined; localOffset = iterator()) {
+ if (hunkFits(hunk, toPos + localOffset)) {
+ hunk.offset = offset += localOffset;
+ break;
+ }
+ }
+
+ if (localOffset === undefined) {
+ return false;
+ } // Set lower text limit to end of the current hunk, so next ones don't try
+ // to fit over already patched text
+
+
+ minLine = hunk.offset + hunk.oldStart + hunk.oldLines;
+ } // Apply patch hunks
+
+
+ var diffOffset = 0;
+
+ for (var _i = 0; _i < hunks.length; _i++) {
+ var _hunk = hunks[_i],
+ _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;
+
+ diffOffset += _hunk.newLines - _hunk.oldLines;
+
+ if (_toPos < 0) {
+ // Creating a new file
+ _toPos = 0;
+ }
+
+ for (var j = 0; j < _hunk.lines.length; j++) {
+ var line = _hunk.lines[j],
+ operation = line.length > 0 ? line[0] : ' ',
+ content = line.length > 0 ? line.substr(1) : line,
+ delimiter = _hunk.linedelimiters[j];
+
+ if (operation === ' ') {
+ _toPos++;
+ } else if (operation === '-') {
+ lines.splice(_toPos, 1);
+ delimiters.splice(_toPos, 1);
+ /* istanbul ignore else */
+ } else if (operation === '+') {
+ lines.splice(_toPos, 0, content);
+ delimiters.splice(_toPos, 0, delimiter);
+ _toPos++;
+ } else if (operation === '\\') {
+ var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;
+
+ if (previousOperation === '+') {
+ removeEOFNL = true;
+ } else if (previousOperation === '-') {
+ addEOFNL = true;
+ }
+ }
+ }
+ } // Handle EOFNL insertion/removal
+
+
+ if (removeEOFNL) {
+ while (!lines[lines.length - 1]) {
+ lines.pop();
+ delimiters.pop();
+ }
+ } else if (addEOFNL) {
+ lines.push('');
+ delimiters.push('\n');
+ }
+
+ for (var _k = 0; _k < lines.length - 1; _k++) {
+ lines[_k] = lines[_k] + delimiters[_k];
+ }
+
+ return lines.join('');
+} // Wrapper that supports multiple file patches via callbacks.
+
+
+function applyPatches(uniDiff, options) {
+ if (typeof uniDiff === 'string') {
+ uniDiff = parsePatch(uniDiff);
+ }
+
+ var currentIndex = 0;
+
+ function processIndex() {
+ var index = uniDiff[currentIndex++];
+
+ if (!index) {
+ return options.complete();
+ }
+
+ options.loadFile(index, function (err, data) {
+ if (err) {
+ return options.complete(err);
+ }
+
+ var updatedContent = applyPatch(data, index, options);
+ options.patched(index, updatedContent, function (err) {
+ if (err) {
+ return options.complete(err);
+ }
+
+ processIndex();
+ });
+ });
+ }
+
+ processIndex();
+}
+
+function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
+ if (!options) {
+ options = {};
+ }
+
+ if (typeof options.context === 'undefined') {
+ options.context = 4;
+ }
+
+ var diff = diffLines(oldStr, newStr, options);
+ diff.push({
+ value: '',
+ lines: []
+ }); // Append an empty value to make cleanup easier
+
+ function contextLines(lines) {
+ return lines.map(function (entry) {
+ return ' ' + entry;
+ });
+ }
+
+ var hunks = [];
+ var oldRangeStart = 0,
+ newRangeStart = 0,
+ curRange = [],
+ oldLine = 1,
+ newLine = 1;
+
+ var _loop = function _loop(i) {
+ var current = diff[i],
+ lines = current.lines || current.value.replace(/\n$/, '').split('\n');
+ current.lines = lines;
+
+ if (current.added || current.removed) {
+ var _curRange; // If we have previous context, start with that
+
+
+ if (!oldRangeStart) {
+ var prev = diff[i - 1];
+ oldRangeStart = oldLine;
+ newRangeStart = newLine;
+
+ if (prev) {
+ curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];
+ oldRangeStart -= curRange.length;
+ newRangeStart -= curRange.length;
+ }
+ } // Output our changes
+
+
+ (_curRange = curRange).push.apply(_curRange, _toConsumableArray(lines.map(function (entry) {
+ return (current.added ? '+' : '-') + entry;
+ }))); // Track the updated file position
+
+
+ if (current.added) {
+ newLine += lines.length;
+ } else {
+ oldLine += lines.length;
+ }
+ } else {
+ // Identical context lines. Track line changes
+ if (oldRangeStart) {
+ // Close out any changes that have been output (or join overlapping)
+ if (lines.length <= options.context * 2 && i < diff.length - 2) {
+ var _curRange2; // Overlapping
+
+
+ (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray(contextLines(lines)));
+ } else {
+ var _curRange3; // end the range and output
+
+
+ var contextSize = Math.min(lines.length, options.context);
+
+ (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray(contextLines(lines.slice(0, contextSize))));
+
+ var hunk = {
+ oldStart: oldRangeStart,
+ oldLines: oldLine - oldRangeStart + contextSize,
+ newStart: newRangeStart,
+ newLines: newLine - newRangeStart + contextSize,
+ lines: curRange
+ };
+
+ if (i >= diff.length - 2 && lines.length <= options.context) {
+ // EOF is inside this hunk
+ var oldEOFNewline = /\n$/.test(oldStr);
+ var newEOFNewline = /\n$/.test(newStr);
+ var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;
+
+ if (!oldEOFNewline && noNlBeforeAdds) {
+ // special case: old has no eol and no trailing context; no-nl can end up before adds
+ curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file');
+ }
+
+ if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {
+ curRange.push('\\ No newline at end of file');
+ }
+ }
+
+ hunks.push(hunk);
+ oldRangeStart = 0;
+ newRangeStart = 0;
+ curRange = [];
+ }
+ }
+
+ oldLine += lines.length;
+ newLine += lines.length;
+ }
+ };
+
+ for (var i = 0; i < diff.length; i++) {
+ _loop(i);
+ }
+
+ return {
+ oldFileName: oldFileName,
+ newFileName: newFileName,
+ oldHeader: oldHeader,
+ newHeader: newHeader,
+ hunks: hunks
+ };
+}
+
+function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
+ var diff = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);
+ var ret = [];
+
+ if (oldFileName == newFileName) {
+ ret.push('Index: ' + oldFileName);
+ }
+
+ ret.push('===================================================================');
+ ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader));
+ ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader));
+
+ for (var i = 0; i < diff.hunks.length; i++) {
+ var hunk = diff.hunks[i];
+ ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');
+ ret.push.apply(ret, hunk.lines);
+ }
+
+ return ret.join('\n') + '\n';
+}
+
+function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {
+ return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);
+}
+
+function arrayEqual(a, b) {
+ if (a.length !== b.length) {
+ return false;
+ }
+
+ return arrayStartsWith(a, b);
+}
+
+function arrayStartsWith(array, start) {
+ if (start.length > array.length) {
+ return false;
+ }
+
+ for (var i = 0; i < start.length; i++) {
+ if (start[i] !== array[i]) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+function calcLineCount(hunk) {
+ var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines),
+ oldLines = _calcOldNewLineCount.oldLines,
+ newLines = _calcOldNewLineCount.newLines;
+
+ if (oldLines !== undefined) {
+ hunk.oldLines = oldLines;
+ } else {
+ delete hunk.oldLines;
+ }
+
+ if (newLines !== undefined) {
+ hunk.newLines = newLines;
+ } else {
+ delete hunk.newLines;
+ }
+}
+
+function merge(mine, theirs, base) {
+ mine = loadPatch(mine, base);
+ theirs = loadPatch(theirs, base);
+ var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.
+ // Leaving sanity checks on this to the API consumer that may know more about the
+ // meaning in their own context.
+
+ if (mine.index || theirs.index) {
+ ret.index = mine.index || theirs.index;
+ }
+
+ if (mine.newFileName || theirs.newFileName) {
+ if (!fileNameChanged(mine)) {
+ // No header or no change in ours, use theirs (and ours if theirs does not exist)
+ ret.oldFileName = theirs.oldFileName || mine.oldFileName;
+ ret.newFileName = theirs.newFileName || mine.newFileName;
+ ret.oldHeader = theirs.oldHeader || mine.oldHeader;
+ ret.newHeader = theirs.newHeader || mine.newHeader;
+ } else if (!fileNameChanged(theirs)) {
+ // No header or no change in theirs, use ours
+ ret.oldFileName = mine.oldFileName;
+ ret.newFileName = mine.newFileName;
+ ret.oldHeader = mine.oldHeader;
+ ret.newHeader = mine.newHeader;
+ } else {
+ // Both changed... figure it out
+ ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);
+ ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);
+ ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);
+ ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);
+ }
+ }
+
+ ret.hunks = [];
+ var mineIndex = 0,
+ theirsIndex = 0,
+ mineOffset = 0,
+ theirsOffset = 0;
+
+ while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {
+ var mineCurrent = mine.hunks[mineIndex] || {
+ oldStart: Infinity
+ },
+ theirsCurrent = theirs.hunks[theirsIndex] || {
+ oldStart: Infinity
+ };
+
+ if (hunkBefore(mineCurrent, theirsCurrent)) {
+ // This patch does not overlap with any of the others, yay.
+ ret.hunks.push(cloneHunk(mineCurrent, mineOffset));
+ mineIndex++;
+ theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;
+ } else if (hunkBefore(theirsCurrent, mineCurrent)) {
+ // This patch does not overlap with any of the others, yay.
+ ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));
+ theirsIndex++;
+ mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;
+ } else {
+ // Overlap, merge as best we can
+ var mergedHunk = {
+ oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),
+ oldLines: 0,
+ newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),
+ newLines: 0,
+ lines: []
+ };
+ mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);
+ theirsIndex++;
+ mineIndex++;
+ ret.hunks.push(mergedHunk);
+ }
+ }
+
+ return ret;
+}
+
+function loadPatch(param, base) {
+ if (typeof param === 'string') {
+ if (/^@@/m.test(param) || /^Index:/m.test(param)) {
+ return parsePatch(param)[0];
+ }
+
+ if (!base) {
+ throw new Error('Must provide a base reference or pass in a patch');
+ }
+
+ return structuredPatch(undefined, undefined, base, param);
+ }
+
+ return param;
+}
+
+function fileNameChanged(patch) {
+ return patch.newFileName && patch.newFileName !== patch.oldFileName;
+}
+
+function selectField(index, mine, theirs) {
+ if (mine === theirs) {
+ return mine;
+ } else {
+ index.conflict = true;
+ return {
+ mine: mine,
+ theirs: theirs
+ };
+ }
+}
+
+function hunkBefore(test, check) {
+ return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;
+}
+
+function cloneHunk(hunk, offset) {
+ return {
+ oldStart: hunk.oldStart,
+ oldLines: hunk.oldLines,
+ newStart: hunk.newStart + offset,
+ newLines: hunk.newLines,
+ lines: hunk.lines
+ };
+}
+
+function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {
+ // This will generally result in a conflicted hunk, but there are cases where the context
+ // is the only overlap where we can successfully merge the content here.
+ var mine = {
+ offset: mineOffset,
+ lines: mineLines,
+ index: 0
+ },
+ their = {
+ offset: theirOffset,
+ lines: theirLines,
+ index: 0
+ }; // Handle any leading content
+
+ insertLeading(hunk, mine, their);
+ insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.
+
+ while (mine.index < mine.lines.length && their.index < their.lines.length) {
+ var mineCurrent = mine.lines[mine.index],
+ theirCurrent = their.lines[their.index];
+
+ if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {
+ // Both modified ...
+ mutualChange(hunk, mine, their);
+ } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {
+ var _hunk$lines; // Mine inserted
+
+
+ (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray(collectChange(mine)));
+ } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {
+ var _hunk$lines2; // Theirs inserted
+
+
+ (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray(collectChange(their)));
+ } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {
+ // Mine removed or edited
+ removal(hunk, mine, their);
+ } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {
+ // Their removed or edited
+ removal(hunk, their, mine, true);
+ } else if (mineCurrent === theirCurrent) {
+ // Context identity
+ hunk.lines.push(mineCurrent);
+ mine.index++;
+ their.index++;
+ } else {
+ // Context mismatch
+ conflict(hunk, collectChange(mine), collectChange(their));
+ }
+ } // Now push anything that may be remaining
+
+
+ insertTrailing(hunk, mine);
+ insertTrailing(hunk, their);
+ calcLineCount(hunk);
+}
+
+function mutualChange(hunk, mine, their) {
+ var myChanges = collectChange(mine),
+ theirChanges = collectChange(their);
+
+ if (allRemoves(myChanges) && allRemoves(theirChanges)) {
+ // Special case for remove changes that are supersets of one another
+ if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {
+ var _hunk$lines3;
+
+ (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray(myChanges));
+
+ return;
+ } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {
+ var _hunk$lines4;
+
+ (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray(theirChanges));
+
+ return;
+ }
+ } else if (arrayEqual(myChanges, theirChanges)) {
+ var _hunk$lines5;
+
+ (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray(myChanges));
+
+ return;
+ }
+
+ conflict(hunk, myChanges, theirChanges);
+}
+
+function removal(hunk, mine, their, swap) {
+ var myChanges = collectChange(mine),
+ theirChanges = collectContext(their, myChanges);
+
+ if (theirChanges.merged) {
+ var _hunk$lines6;
+
+ (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray(theirChanges.merged));
+ } else {
+ conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);
+ }
+}
+
+function conflict(hunk, mine, their) {
+ hunk.conflict = true;
+ hunk.lines.push({
+ conflict: true,
+ mine: mine,
+ theirs: their
+ });
+}
+
+function insertLeading(hunk, insert, their) {
+ while (insert.offset < their.offset && insert.index < insert.lines.length) {
+ var line = insert.lines[insert.index++];
+ hunk.lines.push(line);
+ insert.offset++;
+ }
+}
+
+function insertTrailing(hunk, insert) {
+ while (insert.index < insert.lines.length) {
+ var line = insert.lines[insert.index++];
+ hunk.lines.push(line);
+ }
+}
+
+function collectChange(state) {
+ var ret = [],
+ operation = state.lines[state.index][0];
+
+ while (state.index < state.lines.length) {
+ var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one "atomic" modify change.
+
+ if (operation === '-' && line[0] === '+') {
+ operation = '+';
+ }
+
+ if (operation === line[0]) {
+ ret.push(line);
+ state.index++;
+ } else {
+ break;
+ }
+ }
+
+ return ret;
+}
+
+function collectContext(state, matchChanges) {
+ var changes = [],
+ merged = [],
+ matchIndex = 0,
+ contextChanges = false,
+ conflicted = false;
+
+ while (matchIndex < matchChanges.length && state.index < state.lines.length) {
+ var change = state.lines[state.index],
+ match = matchChanges[matchIndex]; // Once we've hit our add, then we are done
+
+ if (match[0] === '+') {
+ break;
+ }
+
+ contextChanges = contextChanges || change[0] !== ' ';
+ merged.push(match);
+ matchIndex++; // Consume any additions in the other block as a conflict to attempt
+ // to pull in the remaining context after this
+
+ if (change[0] === '+') {
+ conflicted = true;
+
+ while (change[0] === '+') {
+ changes.push(change);
+ change = state.lines[++state.index];
+ }
+ }
+
+ if (match.substr(1) === change.substr(1)) {
+ changes.push(change);
+ state.index++;
+ } else {
+ conflicted = true;
+ }
+ }
+
+ if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {
+ conflicted = true;
+ }
+
+ if (conflicted) {
+ return changes;
+ }
+
+ while (matchIndex < matchChanges.length) {
+ merged.push(matchChanges[matchIndex++]);
+ }
+
+ return {
+ merged: merged,
+ changes: changes
+ };
+}
+
+function allRemoves(changes) {
+ return changes.reduce(function (prev, change) {
+ return prev && change[0] === '-';
+ }, true);
+}
+
+function skipRemoveSuperset(state, removeChanges, delta) {
+ for (var i = 0; i < delta; i++) {
+ var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);
+
+ if (state.lines[state.index + i] !== ' ' + changeContent) {
+ return false;
+ }
+ }
+
+ state.index += delta;
+ return true;
+}
+
+function calcOldNewLineCount(lines) {
+ var oldLines = 0;
+ var newLines = 0;
+ lines.forEach(function (line) {
+ if (typeof line !== 'string') {
+ var myCount = calcOldNewLineCount(line.mine);
+ var theirCount = calcOldNewLineCount(line.theirs);
+
+ if (oldLines !== undefined) {
+ if (myCount.oldLines === theirCount.oldLines) {
+ oldLines += myCount.oldLines;
+ } else {
+ oldLines = undefined;
+ }
+ }
+
+ if (newLines !== undefined) {
+ if (myCount.newLines === theirCount.newLines) {
+ newLines += myCount.newLines;
+ } else {
+ newLines = undefined;
+ }
+ }
+ } else {
+ if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {
+ newLines++;
+ }
+
+ if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {
+ oldLines++;
+ }
+ }
+ });
+ return {
+ oldLines: oldLines,
+ newLines: newLines
+ };
+} // See: http://code.google.com/p/google-diff-match-patch/wiki/API
+
+
+function convertChangesToDMP(changes) {
+ var ret = [],
+ change,
+ operation;
+
+ for (var i = 0; i < changes.length; i++) {
+ change = changes[i];
+
+ if (change.added) {
+ operation = 1;
+ } else if (change.removed) {
+ operation = -1;
+ } else {
+ operation = 0;
+ }
+
+ ret.push([operation, change.value]);
+ }
+
+ return ret;
+}
+
+function convertChangesToXML(changes) {
+ var ret = [];
+
+ for (var i = 0; i < changes.length; i++) {
+ var change = changes[i];
+
+ if (change.added) {
+ ret.push('<ins>');
+ } else if (change.removed) {
+ ret.push('<del>');
+ }
+
+ ret.push(escapeHTML(change.value));
+
+ if (change.added) {
+ ret.push('</ins>');
+ } else if (change.removed) {
+ ret.push('</del>');
+ }
+ }
+
+ return ret.join('');
+}
+
+function escapeHTML(s) {
+ var n = s;
+ n = n.replace(/&/g, '&amp;');
+ n = n.replace(/</g, '&lt;');
+ n = n.replace(/>/g, '&gt;');
+ n = n.replace(/"/g, '&quot;');
+ return n;
+}
+
+var index_es6 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ Diff: Diff,
+ diffChars: diffChars,
+ diffWords: diffWords,
+ diffWordsWithSpace: diffWordsWithSpace,
+ diffLines: diffLines,
+ diffTrimmedLines: diffTrimmedLines,
+ diffSentences: diffSentences,
+ diffCss: diffCss,
+ diffJson: diffJson,
+ diffArrays: diffArrays,
+ structuredPatch: structuredPatch,
+ createTwoFilesPatch: createTwoFilesPatch,
+ createPatch: createPatch,
+ applyPatch: applyPatch,
+ applyPatches: applyPatches,
+ parsePatch: parsePatch,
+ merge: merge,
+ convertChangesToDMP: convertChangesToDMP,
+ convertChangesToXML: convertChangesToXML,
+ canonicalize: canonicalize
+});
+
+/*!
+ * normalize-path <https://github.com/jonschlinkert/normalize-path>
+ *
+ * Copyright (c) 2014-2018, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+var normalizePath = function normalizePath(path, stripTrailing) {
+ if (typeof path !== 'string') {
+ throw new TypeError('expected path to be a string');
+ }
+
+ if (path === '\\' || path === '/') return '/';
+ var len = path.length;
+ if (len <= 1) return path; // ensure that win32 namespaces has two leading slashes, so that the path is
+ // handled properly by the win32 version of path.parse() after being normalized
+ // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces
+
+ var prefix = '';
+
+ if (len > 4 && path[3] === '\\') {
+ var ch = path[2];
+
+ if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\') {
+ path = path.slice(2);
+ prefix = '//';
+ }
+ }
+
+ var segs = path.split(/[/\\]+/);
+
+ if (stripTrailing !== false && segs[segs.length - 1] === '') {
+ segs.pop();
+ }
+
+ return prefix + segs.join('/');
+};
+
+function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+}
+
+function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+}
+
+function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ return Constructor;
+}
+
+function _inherits(subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) _setPrototypeOf(subClass, superClass);
+}
+
+function _getPrototypeOf(o) {
+ _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
+ return o.__proto__ || Object.getPrototypeOf(o);
+ };
+ return _getPrototypeOf(o);
+}
+
+function _setPrototypeOf(o, p) {
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
+ o.__proto__ = p;
+ return o;
+ };
+
+ return _setPrototypeOf(o, p);
+}
+
+function isNativeReflectConstruct() {
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+ if (Reflect.construct.sham) return false;
+ if (typeof Proxy === "function") return true;
+
+ try {
+ Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
+ return true;
+ } catch (e) {
+ return false;
+ }
+}
+
+function _construct(Parent, args, Class) {
+ if (isNativeReflectConstruct()) {
+ _construct = Reflect.construct;
+ } else {
+ _construct = function _construct(Parent, args, Class) {
+ var a = [null];
+ a.push.apply(a, args);
+ var Constructor = Function.bind.apply(Parent, a);
+ var instance = new Constructor();
+ if (Class) _setPrototypeOf(instance, Class.prototype);
+ return instance;
+ };
+ }
+
+ return _construct.apply(null, arguments);
+}
+
+function _isNativeFunction(fn) {
+ return Function.toString.call(fn).indexOf("[native code]") !== -1;
+}
+
+function _wrapNativeSuper(Class) {
+ var _cache = typeof Map === "function" ? new Map() : undefined;
+
+ _wrapNativeSuper = function _wrapNativeSuper(Class) {
+ if (Class === null || !_isNativeFunction(Class)) return Class;
+
+ if (typeof Class !== "function") {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+
+ if (typeof _cache !== "undefined") {
+ if (_cache.has(Class)) return _cache.get(Class);
+
+ _cache.set(Class, Wrapper);
+ }
+
+ function Wrapper() {
+ return _construct(Class, arguments, _getPrototypeOf(this).constructor);
+ }
+
+ Wrapper.prototype = Object.create(Class.prototype, {
+ constructor: {
+ value: Wrapper,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ return _setPrototypeOf(Wrapper, Class);
+ };
+
+ return _wrapNativeSuper(Class);
+}
+
+function _assertThisInitialized(self) {
+ if (self === void 0) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+
+ return self;
+}
+
+function _possibleConstructorReturn(self, call) {
+ if (call && (typeof call === "object" || typeof call === "function")) {
+ return call;
+ }
+
+ return _assertThisInitialized(self);
+}
+
+function _superPropBase(object, property) {
+ while (!Object.prototype.hasOwnProperty.call(object, property)) {
+ object = _getPrototypeOf(object);
+ if (object === null) break;
+ }
+
+ return object;
+}
+
+function _get(target, property, receiver) {
+ if (typeof Reflect !== "undefined" && Reflect.get) {
+ _get = Reflect.get;
+ } else {
+ _get = function _get(target, property, receiver) {
+ var base = _superPropBase(target, property);
+
+ if (!base) return;
+ var desc = Object.getOwnPropertyDescriptor(base, property);
+
+ if (desc.get) {
+ return desc.get.call(receiver);
+ }
+
+ return desc.value;
+ };
+ }
+
+ return _get(target, property, receiver || target);
+}
+
+function _slicedToArray(arr, i) {
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
+}
+
+function _toConsumableArray$1(arr) {
+ return _arrayWithoutHoles$1(arr) || _iterableToArray$1(arr) || _nonIterableSpread$1();
+}
+
+function _arrayWithoutHoles$1(arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
+
+ return arr2;
+ }
+}
+
+function _arrayWithHoles(arr) {
+ if (Array.isArray(arr)) return arr;
+}
+
+function _iterableToArray$1(iter) {
+ if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
+}
+
+function _iterableToArrayLimit(arr, i) {
+ if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
+ return;
+ }
+
+ var _arr = [];
+ var _n = true;
+ var _d = false;
+ var _e = undefined;
+
+ try {
+ for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
+ _arr.push(_s.value);
+
+ if (i && _arr.length === i) break;
+ }
+ } catch (err) {
+ _d = true;
+ _e = err;
+ } finally {
+ try {
+ if (!_n && _i["return"] != null) _i["return"]();
+ } finally {
+ if (_d) throw _e;
+ }
+ }
+
+ return _arr;
+}
+
+function _nonIterableSpread$1() {
+ throw new TypeError("Invalid attempt to spread non-iterable instance");
+}
+
+function _nonIterableRest() {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance");
+}
+
+/**
+ * @class
+ */
+
+
+var LineByLine =
+/*#__PURE__*/
+function () {
+ function LineByLine(file, options) {
+ _classCallCheck(this, LineByLine);
+
+ options = options || {};
+ if (!options.readChunk) options.readChunk = 1024;
+
+ if (!options.newLineCharacter) {
+ options.newLineCharacter = 0x0a; //linux line ending
+ } else {
+ options.newLineCharacter = options.newLineCharacter.charCodeAt(0);
+ }
+
+ if (typeof file === 'number') {
+ this.fd = file;
+ } else {
+ this.fd = fs$1.openSync(file, 'r');
+ }
+
+ this.options = options;
+ this.newLineCharacter = options.newLineCharacter;
+ this.reset();
+ }
+
+ _createClass(LineByLine, [{
+ key: "_searchInBuffer",
+ value: function _searchInBuffer(buffer, hexNeedle) {
+ var found = -1;
+
+ for (var i = 0; i <= buffer.length; i++) {
+ var b_byte = buffer[i];
+
+ if (b_byte === hexNeedle) {
+ found = i;
+ break;
+ }
+ }
+
+ return found;
+ }
+ }, {
+ key: "reset",
+ value: function reset() {
+ this.eofReached = false;
+ this.linesCache = [];
+ this.fdPosition = 0;
+ }
+ }, {
+ key: "close",
+ value: function close() {
+ fs$1.closeSync(this.fd);
+ this.fd = null;
+ }
+ }, {
+ key: "_extractLines",
+ value: function _extractLines(buffer) {
+ var line;
+ var lines = [];
+ var bufferPosition = 0;
+ var lastNewLineBufferPosition = 0;
+
+ while (true) {
+ var bufferPositionValue = buffer[bufferPosition++];
+
+ if (bufferPositionValue === this.newLineCharacter) {
+ line = buffer.slice(lastNewLineBufferPosition, bufferPosition);
+ lines.push(line);
+ lastNewLineBufferPosition = bufferPosition;
+ } else if (!bufferPositionValue) {
+ break;
+ }
+ }
+
+ var leftovers = buffer.slice(lastNewLineBufferPosition, bufferPosition);
+
+ if (leftovers.length) {
+ lines.push(leftovers);
+ }
+
+ return lines;
+ }
+ }, {
+ key: "_readChunk",
+ value: function _readChunk(lineLeftovers) {
+ var totalBytesRead = 0;
+ var bytesRead;
+ var buffers = [];
+
+ do {
+ var readBuffer = new Buffer(this.options.readChunk);
+ bytesRead = fs$1.readSync(this.fd, readBuffer, 0, this.options.readChunk, this.fdPosition);
+ totalBytesRead = totalBytesRead + bytesRead;
+ this.fdPosition = this.fdPosition + bytesRead;
+ buffers.push(readBuffer);
+ } while (bytesRead && this._searchInBuffer(buffers[buffers.length - 1], this.options.newLineCharacter) === -1);
+
+ var bufferData = Buffer.concat(buffers);
+
+ if (bytesRead < this.options.readChunk) {
+ this.eofReached = true;
+ bufferData = bufferData.slice(0, totalBytesRead);
+ }
+
+ if (totalBytesRead) {
+ this.linesCache = this._extractLines(bufferData);
+
+ if (lineLeftovers) {
+ this.linesCache[0] = Buffer.concat([lineLeftovers, this.linesCache[0]]);
+ }
+ }
+
+ return totalBytesRead;
+ }
+ }, {
+ key: "next",
+ value: function next() {
+ if (!this.fd) return false;
+ var line = false;
+
+ if (this.eofReached && this.linesCache.length === 0) {
+ return line;
+ }
+
+ var bytesRead;
+
+ if (!this.linesCache.length) {
+ bytesRead = this._readChunk();
+ }
+
+ if (this.linesCache.length) {
+ line = this.linesCache.shift();
+ var lastLineCharacter = line[line.length - 1];
+
+ if (lastLineCharacter !== 0x0a) {
+ bytesRead = this._readChunk(line);
+
+ if (bytesRead) {
+ line = this.linesCache.shift();
+ }
+ }
+ }
+
+ if (this.eofReached && this.linesCache.length === 0) {
+ this.close();
+ }
+
+ if (line && line[line.length - 1] === this.newLineCharacter) {
+ line = line.slice(0, line.length - 1);
+ }
+
+ return line;
+ }
+ }]);
+
+ return LineByLine;
+}();
+
+var readlines = LineByLine;
+
+var ConfigError =
+/*#__PURE__*/
+function (_Error) {
+ _inherits(ConfigError, _Error);
+
+ function ConfigError() {
+ _classCallCheck(this, ConfigError);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(ConfigError).apply(this, arguments));
+ }
+
+ return ConfigError;
+}(_wrapNativeSuper(Error));
+
+var DebugError =
+/*#__PURE__*/
+function (_Error2) {
+ _inherits(DebugError, _Error2);
+
+ function DebugError() {
+ _classCallCheck(this, DebugError);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(DebugError).apply(this, arguments));
+ }
+
+ return DebugError;
+}(_wrapNativeSuper(Error));
+
+var UndefinedParserError =
+/*#__PURE__*/
+function (_Error3) {
+ _inherits(UndefinedParserError, _Error3);
+
+ function UndefinedParserError() {
+ _classCallCheck(this, UndefinedParserError);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(UndefinedParserError).apply(this, arguments));
+ }
+
+ return UndefinedParserError;
+}(_wrapNativeSuper(Error));
+
+var errors = {
+ ConfigError,
+ DebugError,
+ UndefinedParserError
+};
+
+function unwrapExports (x) {
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
+}
+
+function createCommonjsModule(fn, module) {
+ return module = { exports: {} }, fn(module, module.exports), module.exports;
+}
+
+function getCjsExportFromNamespace (n) {
+ return n && n['default'] || n;
+}
+
+var semver = createCommonjsModule(function (module, exports) {
+ exports = module.exports = SemVer;
+ var debug;
+ /* istanbul ignore next */
+
+ if (typeof process === 'object' && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
+ debug = function debug() {
+ var args = Array.prototype.slice.call(arguments, 0);
+ args.unshift('SEMVER');
+ console.log.apply(console, args);
+ };
+ } else {
+ debug = function debug() {};
+ } // Note: this is the semver.org version of the spec that it implements
+ // Not necessarily the package version of this code.
+
+
+ exports.SEMVER_SPEC_VERSION = '2.0.0';
+ var MAX_LENGTH = 256;
+ var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+ /* istanbul ignore next */
+ 9007199254740991; // Max safe segment length for coercion.
+
+ var MAX_SAFE_COMPONENT_LENGTH = 16; // The actual regexps go on exports.re
+
+ var re = exports.re = [];
+ var src = exports.src = [];
+ var t = exports.tokens = {};
+ var R = 0;
+
+ function tok(n) {
+ t[n] = R++;
+ } // The following Regular Expressions can be used for tokenizing,
+ // validating, and parsing SemVer version strings.
+ // ## Numeric Identifier
+ // A single `0`, or a non-zero digit followed by zero or more digits.
+
+
+ tok('NUMERICIDENTIFIER');
+ src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*';
+ tok('NUMERICIDENTIFIERLOOSE');
+ src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'; // ## Non-numeric Identifier
+ // Zero or more digits, followed by a letter or hyphen, and then zero or
+ // more letters, digits, or hyphens.
+
+ tok('NONNUMERICIDENTIFIER');
+ src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'; // ## Main Version
+ // Three dot-separated numeric identifiers.
+
+ tok('MAINVERSION');
+ src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')';
+ tok('MAINVERSIONLOOSE');
+ src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'; // ## Pre-release Version Identifier
+ // A numeric identifier, or a non-numeric identifier.
+
+ tok('PRERELEASEIDENTIFIER');
+ src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + '|' + src[t.NONNUMERICIDENTIFIER] + ')';
+ tok('PRERELEASEIDENTIFIERLOOSE');
+ src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + '|' + src[t.NONNUMERICIDENTIFIER] + ')'; // ## Pre-release Version
+ // Hyphen, followed by one or more dot-separated pre-release version
+ // identifiers.
+
+ tok('PRERELEASE');
+ src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))';
+ tok('PRERELEASELOOSE');
+ src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'; // ## Build Metadata Identifier
+ // Any combination of digits, letters, or hyphens.
+
+ tok('BUILDIDENTIFIER');
+ src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'; // ## Build Metadata
+ // Plus sign, followed by one or more period-separated build metadata
+ // identifiers.
+
+ tok('BUILD');
+ src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))'; // ## Full Version String
+ // A main version, followed optionally by a pre-release version and
+ // build metadata.
+ // Note that the only major, minor, patch, and pre-release sections of
+ // the version string are capturing groups. The build metadata is not a
+ // capturing group, because it should not ever be used in version
+ // comparison.
+
+ tok('FULL');
+ tok('FULLPLAIN');
+ src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + src[t.PRERELEASE] + '?' + src[t.BUILD] + '?';
+ src[t.FULL] = '^' + src[t.FULLPLAIN] + '$'; // like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+ // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+ // common in the npm registry.
+
+ tok('LOOSEPLAIN');
+ src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + src[t.PRERELEASELOOSE] + '?' + src[t.BUILD] + '?';
+ tok('LOOSE');
+ src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$';
+ tok('GTLT');
+ src[t.GTLT] = '((?:<|>)?=?)'; // Something like "2.*" or "1.2.x".
+ // Note that "x.x" is a valid xRange identifer, meaning "any version"
+ // Only the first item is strictly required.
+
+ tok('XRANGEIDENTIFIERLOOSE');
+ src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*';
+ tok('XRANGEIDENTIFIER');
+ src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*';
+ tok('XRANGEPLAIN');
+ src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:' + src[t.PRERELEASE] + ')?' + src[t.BUILD] + '?' + ')?)?';
+ tok('XRANGEPLAINLOOSE');
+ src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:' + src[t.PRERELEASELOOSE] + ')?' + src[t.BUILD] + '?' + ')?)?';
+ tok('XRANGE');
+ src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$';
+ tok('XRANGELOOSE');
+ src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$'; // Coercion.
+ // Extract anything that could conceivably be a part of a valid semver
+
+ tok('COERCE');
+ src[t.COERCE] = '(^|[^\\d])' + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:$|[^\\d])';
+ tok('COERCERTL');
+ re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g'); // Tilde ranges.
+ // Meaning is "reasonably at or greater than"
+
+ tok('LONETILDE');
+ src[t.LONETILDE] = '(?:~>?)';
+ tok('TILDETRIM');
+ src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+';
+ re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g');
+ var tildeTrimReplace = '$1~';
+ tok('TILDE');
+ src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$';
+ tok('TILDELOOSE');
+ src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'; // Caret ranges.
+ // Meaning is "at least and backwards compatible with"
+
+ tok('LONECARET');
+ src[t.LONECARET] = '(?:\\^)';
+ tok('CARETTRIM');
+ src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+';
+ re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g');
+ var caretTrimReplace = '$1^';
+ tok('CARET');
+ src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$';
+ tok('CARETLOOSE');
+ src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'; // A simple gt/lt/eq thing, or just "" to indicate "any version"
+
+ tok('COMPARATORLOOSE');
+ src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$';
+ tok('COMPARATOR');
+ src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$'; // An expression to strip any whitespace between the gtlt and the thing
+ // it modifies, so that `> 1.2.3` ==> `>1.2.3`
+
+ tok('COMPARATORTRIM');
+ src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'; // this one has to use the /g flag
+
+ re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g');
+ var comparatorTrimReplace = '$1$2$3'; // Something like `1.2.3 - 1.2.4`
+ // Note that these all use the loose form, because they'll be
+ // checked against either the strict or loose comparator form
+ // later.
+
+ tok('HYPHENRANGE');
+ src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAIN] + ')' + '\\s*$';
+ tok('HYPHENRANGELOOSE');
+ src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s*$'; // Star ranges basically just allow anything at all.
+
+ tok('STAR');
+ src[t.STAR] = '(<|>)?=?\\s*\\*'; // Compile to actual regexp objects.
+ // All are flag-free, unless they were created above with a flag.
+
+ for (var i = 0; i < R; i++) {
+ debug(i, src[i]);
+
+ if (!re[i]) {
+ re[i] = new RegExp(src[i]);
+ }
+ }
+
+ exports.parse = parse;
+
+ function parse(version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ if (version instanceof SemVer) {
+ return version;
+ }
+
+ if (typeof version !== 'string') {
+ return null;
+ }
+
+ if (version.length > MAX_LENGTH) {
+ return null;
+ }
+
+ var r = options.loose ? re[t.LOOSE] : re[t.FULL];
+
+ if (!r.test(version)) {
+ return null;
+ }
+
+ try {
+ return new SemVer(version, options);
+ } catch (er) {
+ return null;
+ }
+ }
+
+ exports.valid = valid;
+
+ function valid(version, options) {
+ var v = parse(version, options);
+ return v ? v.version : null;
+ }
+
+ exports.clean = clean;
+
+ function clean(version, options) {
+ var s = parse(version.trim().replace(/^[=v]+/, ''), options);
+ return s ? s.version : null;
+ }
+
+ exports.SemVer = SemVer;
+
+ function SemVer(version, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ if (version instanceof SemVer) {
+ if (version.loose === options.loose) {
+ return version;
+ } else {
+ version = version.version;
+ }
+ } else if (typeof version !== 'string') {
+ throw new TypeError('Invalid Version: ' + version);
+ }
+
+ if (version.length > MAX_LENGTH) {
+ throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters');
+ }
+
+ if (!(this instanceof SemVer)) {
+ return new SemVer(version, options);
+ }
+
+ debug('SemVer', version, options);
+ this.options = options;
+ this.loose = !!options.loose;
+ var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);
+
+ if (!m) {
+ throw new TypeError('Invalid Version: ' + version);
+ }
+
+ this.raw = version; // these are actually numbers
+
+ this.major = +m[1];
+ this.minor = +m[2];
+ this.patch = +m[3];
+
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError('Invalid major version');
+ }
+
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError('Invalid minor version');
+ }
+
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError('Invalid patch version');
+ } // numberify any prerelease numeric ids
+
+
+ if (!m[4]) {
+ this.prerelease = [];
+ } else {
+ this.prerelease = m[4].split('.').map(function (id) {
+ if (/^[0-9]+$/.test(id)) {
+ var num = +id;
+
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
+ return num;
+ }
+ }
+
+ return id;
+ });
+ }
+
+ this.build = m[5] ? m[5].split('.') : [];
+ this.format();
+ }
+
+ SemVer.prototype.format = function () {
+ this.version = this.major + '.' + this.minor + '.' + this.patch;
+
+ if (this.prerelease.length) {
+ this.version += '-' + this.prerelease.join('.');
+ }
+
+ return this.version;
+ };
+
+ SemVer.prototype.toString = function () {
+ return this.version;
+ };
+
+ SemVer.prototype.compare = function (other) {
+ debug('SemVer.compare', this.version, this.options, other);
+
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ }
+
+ return this.compareMain(other) || this.comparePre(other);
+ };
+
+ SemVer.prototype.compareMain = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ }
+
+ return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
+ };
+
+ SemVer.prototype.comparePre = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ } // NOT having a prerelease is > having one
+
+
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1;
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1;
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0;
+ }
+
+ var i = 0;
+
+ do {
+ var a = this.prerelease[i];
+ var b = other.prerelease[i];
+ debug('prerelease compare', i, a, b);
+
+ if (a === undefined && b === undefined) {
+ return 0;
+ } else if (b === undefined) {
+ return 1;
+ } else if (a === undefined) {
+ return -1;
+ } else if (a === b) {
+ continue;
+ } else {
+ return compareIdentifiers(a, b);
+ }
+ } while (++i);
+ };
+
+ SemVer.prototype.compareBuild = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ }
+
+ var i = 0;
+
+ do {
+ var a = this.build[i];
+ var b = other.build[i];
+ debug('prerelease compare', i, a, b);
+
+ if (a === undefined && b === undefined) {
+ return 0;
+ } else if (b === undefined) {
+ return 1;
+ } else if (a === undefined) {
+ return -1;
+ } else if (a === b) {
+ continue;
+ } else {
+ return compareIdentifiers(a, b);
+ }
+ } while (++i);
+ }; // preminor will bump the version up to the next minor release, and immediately
+ // down to pre-release. premajor and prepatch work the same way.
+
+
+ SemVer.prototype.inc = function (release, identifier) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor = 0;
+ this.major++;
+ this.inc('pre', identifier);
+ break;
+
+ case 'preminor':
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor++;
+ this.inc('pre', identifier);
+ break;
+
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0;
+ this.inc('patch', identifier);
+ this.inc('pre', identifier);
+ break;
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+
+ case 'prerelease':
+ if (this.prerelease.length === 0) {
+ this.inc('patch', identifier);
+ }
+
+ this.inc('pre', identifier);
+ break;
+
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
+ this.major++;
+ }
+
+ this.minor = 0;
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++;
+ }
+
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) {
+ this.patch++;
+ }
+
+ this.prerelease = [];
+ break;
+ // This probably shouldn't be used publicly.
+ // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+
+ case 'pre':
+ if (this.prerelease.length === 0) {
+ this.prerelease = [0];
+ } else {
+ var i = this.prerelease.length;
+
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++;
+ i = -2;
+ }
+ }
+
+ if (i === -1) {
+ // didn't increment anything
+ this.prerelease.push(0);
+ }
+ }
+
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ if (this.prerelease[0] === identifier) {
+ if (isNaN(this.prerelease[1])) {
+ this.prerelease = [identifier, 0];
+ }
+ } else {
+ this.prerelease = [identifier, 0];
+ }
+ }
+
+ break;
+
+ default:
+ throw new Error('invalid increment argument: ' + release);
+ }
+
+ this.format();
+ this.raw = this.version;
+ return this;
+ };
+
+ exports.inc = inc;
+
+ function inc(version, release, loose, identifier) {
+ if (typeof loose === 'string') {
+ identifier = loose;
+ loose = undefined;
+ }
+
+ try {
+ return new SemVer(version, loose).inc(release, identifier).version;
+ } catch (er) {
+ return null;
+ }
+ }
+
+ exports.diff = diff;
+
+ function diff(version1, version2) {
+ if (eq(version1, version2)) {
+ return null;
+ } else {
+ var v1 = parse(version1);
+ var v2 = parse(version2);
+ var prefix = '';
+
+ if (v1.prerelease.length || v2.prerelease.length) {
+ prefix = 'pre';
+ var defaultResult = 'prerelease';
+ }
+
+ for (var key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return prefix + key;
+ }
+ }
+ }
+
+ return defaultResult; // may be undefined
+ }
+ }
+
+ exports.compareIdentifiers = compareIdentifiers;
+ var numeric = /^[0-9]+$/;
+
+ function compareIdentifiers(a, b) {
+ var anum = numeric.test(a);
+ var bnum = numeric.test(b);
+
+ if (anum && bnum) {
+ a = +a;
+ b = +b;
+ }
+
+ return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
+ }
+
+ exports.rcompareIdentifiers = rcompareIdentifiers;
+
+ function rcompareIdentifiers(a, b) {
+ return compareIdentifiers(b, a);
+ }
+
+ exports.major = major;
+
+ function major(a, loose) {
+ return new SemVer(a, loose).major;
+ }
+
+ exports.minor = minor;
+
+ function minor(a, loose) {
+ return new SemVer(a, loose).minor;
+ }
+
+ exports.patch = patch;
+
+ function patch(a, loose) {
+ return new SemVer(a, loose).patch;
+ }
+
+ exports.compare = compare;
+
+ function compare(a, b, loose) {
+ return new SemVer(a, loose).compare(new SemVer(b, loose));
+ }
+
+ exports.compareLoose = compareLoose;
+
+ function compareLoose(a, b) {
+ return compare(a, b, true);
+ }
+
+ exports.compareBuild = compareBuild;
+
+ function compareBuild(a, b, loose) {
+ var versionA = new SemVer(a, loose);
+ var versionB = new SemVer(b, loose);
+ return versionA.compare(versionB) || versionA.compareBuild(versionB);
+ }
+
+ exports.rcompare = rcompare;
+
+ function rcompare(a, b, loose) {
+ return compare(b, a, loose);
+ }
+
+ exports.sort = sort;
+
+ function sort(list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compareBuild(a, b, loose);
+ });
+ }
+
+ exports.rsort = rsort;
+
+ function rsort(list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compareBuild(b, a, loose);
+ });
+ }
+
+ exports.gt = gt;
+
+ function gt(a, b, loose) {
+ return compare(a, b, loose) > 0;
+ }
+
+ exports.lt = lt;
+
+ function lt(a, b, loose) {
+ return compare(a, b, loose) < 0;
+ }
+
+ exports.eq = eq;
+
+ function eq(a, b, loose) {
+ return compare(a, b, loose) === 0;
+ }
+
+ exports.neq = neq;
+
+ function neq(a, b, loose) {
+ return compare(a, b, loose) !== 0;
+ }
+
+ exports.gte = gte;
+
+ function gte(a, b, loose) {
+ return compare(a, b, loose) >= 0;
+ }
+
+ exports.lte = lte;
+
+ function lte(a, b, loose) {
+ return compare(a, b, loose) <= 0;
+ }
+
+ exports.cmp = cmp;
+
+ function cmp(a, op, b, loose) {
+ switch (op) {
+ case '===':
+ if (typeof a === 'object') a = a.version;
+ if (typeof b === 'object') b = b.version;
+ return a === b;
+
+ case '!==':
+ if (typeof a === 'object') a = a.version;
+ if (typeof b === 'object') b = b.version;
+ return a !== b;
+
+ case '':
+ case '=':
+ case '==':
+ return eq(a, b, loose);
+
+ case '!=':
+ return neq(a, b, loose);
+
+ case '>':
+ return gt(a, b, loose);
+
+ case '>=':
+ return gte(a, b, loose);
+
+ case '<':
+ return lt(a, b, loose);
+
+ case '<=':
+ return lte(a, b, loose);
+
+ default:
+ throw new TypeError('Invalid operator: ' + op);
+ }
+ }
+
+ exports.Comparator = Comparator;
+
+ function Comparator(comp, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ if (comp instanceof Comparator) {
+ if (comp.loose === !!options.loose) {
+ return comp;
+ } else {
+ comp = comp.value;
+ }
+ }
+
+ if (!(this instanceof Comparator)) {
+ return new Comparator(comp, options);
+ }
+
+ debug('comparator', comp, options);
+ this.options = options;
+ this.loose = !!options.loose;
+ this.parse(comp);
+
+ if (this.semver === ANY) {
+ this.value = '';
+ } else {
+ this.value = this.operator + this.semver.version;
+ }
+
+ debug('comp', this);
+ }
+
+ var ANY = {};
+
+ Comparator.prototype.parse = function (comp) {
+ var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
+ var m = comp.match(r);
+
+ if (!m) {
+ throw new TypeError('Invalid comparator: ' + comp);
+ }
+
+ this.operator = m[1] !== undefined ? m[1] : '';
+
+ if (this.operator === '=') {
+ this.operator = '';
+ } // if it literally is just '>' or '' then allow anything.
+
+
+ if (!m[2]) {
+ this.semver = ANY;
+ } else {
+ this.semver = new SemVer(m[2], this.options.loose);
+ }
+ };
+
+ Comparator.prototype.toString = function () {
+ return this.value;
+ };
+
+ Comparator.prototype.test = function (version) {
+ debug('Comparator.test', version, this.options.loose);
+
+ if (this.semver === ANY || version === ANY) {
+ return true;
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options);
+ } catch (er) {
+ return false;
+ }
+ }
+
+ return cmp(version, this.operator, this.semver, this.options);
+ };
+
+ Comparator.prototype.intersects = function (comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required');
+ }
+
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ var rangeTmp;
+
+ if (this.operator === '') {
+ if (this.value === '') {
+ return true;
+ }
+
+ rangeTmp = new Range(comp.value, options);
+ return satisfies(this.value, rangeTmp, options);
+ } else if (comp.operator === '') {
+ if (comp.value === '') {
+ return true;
+ }
+
+ rangeTmp = new Range(this.value, options);
+ return satisfies(comp.semver, rangeTmp, options);
+ }
+
+ var sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>');
+ var sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<');
+ var sameSemVer = this.semver.version === comp.semver.version;
+ var differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<=');
+ var oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<');
+ var oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>');
+ return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
+ };
+
+ exports.Range = Range;
+
+ function Range(range, options) {
+ if (!options || typeof options !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ if (range instanceof Range) {
+ if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
+ return range;
+ } else {
+ return new Range(range.raw, options);
+ }
+ }
+
+ if (range instanceof Comparator) {
+ return new Range(range.value, options);
+ }
+
+ if (!(this instanceof Range)) {
+ return new Range(range, options);
+ }
+
+ this.options = options;
+ this.loose = !!options.loose;
+ this.includePrerelease = !!options.includePrerelease; // First, split based on boolean or ||
+
+ this.raw = range;
+ this.set = range.split(/\s*\|\|\s*/).map(function (range) {
+ return this.parseRange(range.trim());
+ }, this).filter(function (c) {
+ // throw out any that are not relevant for whatever reason
+ return c.length;
+ });
+
+ if (!this.set.length) {
+ throw new TypeError('Invalid SemVer Range: ' + range);
+ }
+
+ this.format();
+ }
+
+ Range.prototype.format = function () {
+ this.range = this.set.map(function (comps) {
+ return comps.join(' ').trim();
+ }).join('||').trim();
+ return this.range;
+ };
+
+ Range.prototype.toString = function () {
+ return this.range;
+ };
+
+ Range.prototype.parseRange = function (range) {
+ var loose = this.options.loose;
+ range = range.trim(); // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+
+ var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
+ range = range.replace(hr, hyphenReplace);
+ debug('hyphen replace', range); // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+
+ range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
+ debug('comparator trim', range, re[t.COMPARATORTRIM]); // `~ 1.2.3` => `~1.2.3`
+
+ range = range.replace(re[t.TILDETRIM], tildeTrimReplace); // `^ 1.2.3` => `^1.2.3`
+
+ range = range.replace(re[t.CARETTRIM], caretTrimReplace); // normalize spaces
+
+ range = range.split(/\s+/).join(' '); // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
+
+ var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
+ var set = range.split(' ').map(function (comp) {
+ return parseComparator(comp, this.options);
+ }, this).join(' ').split(/\s+/);
+
+ if (this.options.loose) {
+ // in loose mode, throw out any that are not valid comparators
+ set = set.filter(function (comp) {
+ return !!comp.match(compRe);
+ });
+ }
+
+ set = set.map(function (comp) {
+ return new Comparator(comp, this.options);
+ }, this);
+ return set;
+ };
+
+ Range.prototype.intersects = function (range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required');
+ }
+
+ return this.set.some(function (thisComparators) {
+ return isSatisfiable(thisComparators, options) && range.set.some(function (rangeComparators) {
+ return isSatisfiable(rangeComparators, options) && thisComparators.every(function (thisComparator) {
+ return rangeComparators.every(function (rangeComparator) {
+ return thisComparator.intersects(rangeComparator, options);
+ });
+ });
+ });
+ });
+ }; // take a set of comparators and determine whether there
+ // exists a version which can satisfy it
+
+
+ function isSatisfiable(comparators, options) {
+ var result = true;
+ var remainingComparators = comparators.slice();
+ var testComparator = remainingComparators.pop();
+
+ while (result && remainingComparators.length) {
+ result = remainingComparators.every(function (otherComparator) {
+ return testComparator.intersects(otherComparator, options);
+ });
+ testComparator = remainingComparators.pop();
+ }
+
+ return result;
+ } // Mostly just for testing and legacy API reasons
+
+
+ exports.toComparators = toComparators;
+
+ function toComparators(range, options) {
+ return new Range(range, options).set.map(function (comp) {
+ return comp.map(function (c) {
+ return c.value;
+ }).join(' ').trim().split(' ');
+ });
+ } // comprised of xranges, tildes, stars, and gtlt's at this point.
+ // already replaced the hyphen ranges
+ // turn into a set of JUST comparators.
+
+
+ function parseComparator(comp, options) {
+ debug('comp', comp, options);
+ comp = replaceCarets(comp, options);
+ debug('caret', comp);
+ comp = replaceTildes(comp, options);
+ debug('tildes', comp);
+ comp = replaceXRanges(comp, options);
+ debug('xrange', comp);
+ comp = replaceStars(comp, options);
+ debug('stars', comp);
+ return comp;
+ }
+
+ function isX(id) {
+ return !id || id.toLowerCase() === 'x' || id === '*';
+ } // ~, ~> --> * (any, kinda silly)
+ // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
+ // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
+ // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
+ // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
+ // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
+
+
+ function replaceTildes(comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceTilde(comp, options);
+ }).join(' ');
+ }
+
+ function replaceTilde(comp, options) {
+ var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('tilde', comp, _, M, m, p, pr);
+ var ret;
+
+ if (isX(M)) {
+ ret = '';
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
+ } else if (isX(p)) {
+ // ~1.2 == >=1.2.0 <1.3.0
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
+ } else if (pr) {
+ debug('replaceTilde pr', pr);
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
+ } else {
+ // ~1.2.3 == >=1.2.3 <1.3.0
+ ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
+ }
+
+ debug('tilde return', ret);
+ return ret;
+ });
+ } // ^ --> * (any, kinda silly)
+ // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
+ // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
+ // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
+ // ^1.2.3 --> >=1.2.3 <2.0.0
+ // ^1.2.0 --> >=1.2.0 <2.0.0
+
+
+ function replaceCarets(comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceCaret(comp, options);
+ }).join(' ');
+ }
+
+ function replaceCaret(comp, options) {
+ debug('caret', comp, options);
+ var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('caret', comp, _, M, m, p, pr);
+ var ret;
+
+ if (isX(M)) {
+ ret = '';
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
+ } else if (isX(p)) {
+ if (M === '0') {
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
+ } else {
+ ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';
+ }
+ } else if (pr) {
+ debug('replaceCaret pr', pr);
+
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + m + '.' + (+p + 1);
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + (+M + 1) + '.0.0';
+ }
+ } else {
+ debug('no pr');
+
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + m + '.' + (+p + 1);
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + ' <' + (+M + 1) + '.0.0';
+ }
+ }
+
+ debug('caret return', ret);
+ return ret;
+ });
+ }
+
+ function replaceXRanges(comp, options) {
+ debug('replaceXRanges', comp, options);
+ return comp.split(/\s+/).map(function (comp) {
+ return replaceXRange(comp, options);
+ }).join(' ');
+ }
+
+ function replaceXRange(comp, options) {
+ comp = comp.trim();
+ var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
+ return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
+ debug('xRange', comp, ret, gtlt, M, m, p, pr);
+ var xM = isX(M);
+ var xm = xM || isX(m);
+ var xp = xm || isX(p);
+ var anyX = xp;
+
+ if (gtlt === '=' && anyX) {
+ gtlt = '';
+ } // if we're including prereleases in the match, then we need
+ // to fix this to -0, the lowest possible prerelease value
+
+
+ pr = options.includePrerelease ? '-0' : '';
+
+ if (xM) {
+ if (gtlt === '>' || gtlt === '<') {
+ // nothing is allowed
+ ret = '<0.0.0-0';
+ } else {
+ // nothing is forbidden
+ ret = '*';
+ }
+ } else if (gtlt && anyX) {
+ // we know patch is an x, because we have any x at all.
+ // replace X with 0
+ if (xm) {
+ m = 0;
+ }
+
+ p = 0;
+
+ if (gtlt === '>') {
+ // >1 => >=2.0.0
+ // >1.2 => >=1.3.0
+ // >1.2.3 => >= 1.2.4
+ gtlt = '>=';
+
+ if (xm) {
+ M = +M + 1;
+ m = 0;
+ p = 0;
+ } else {
+ m = +m + 1;
+ p = 0;
+ }
+ } else if (gtlt === '<=') {
+ // <=0.7.x is actually <0.8.0, since any 0.7.x should
+ // pass. Similarly, <=7.x is actually <8.0.0, etc.
+ gtlt = '<';
+
+ if (xm) {
+ M = +M + 1;
+ } else {
+ m = +m + 1;
+ }
+ }
+
+ ret = gtlt + M + '.' + m + '.' + p + pr;
+ } else if (xm) {
+ ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr;
+ } else if (xp) {
+ ret = '>=' + M + '.' + m + '.0' + pr + ' <' + M + '.' + (+m + 1) + '.0' + pr;
+ }
+
+ debug('xRange return', ret);
+ return ret;
+ });
+ } // Because * is AND-ed with everything else in the comparator,
+ // and '' means "any version", just remove the *s entirely.
+
+
+ function replaceStars(comp, options) {
+ debug('replaceStars', comp, options); // Looseness is ignored here. star is always as loose as it gets!
+
+ return comp.trim().replace(re[t.STAR], '');
+ } // This function is passed to string.replace(re[t.HYPHENRANGE])
+ // M, m, patch, prerelease, build
+ // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+ // 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
+ // 1.2 - 3.4 => >=1.2.0 <3.5.0
+
+
+ function hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {
+ if (isX(fM)) {
+ from = '';
+ } else if (isX(fm)) {
+ from = '>=' + fM + '.0.0';
+ } else if (isX(fp)) {
+ from = '>=' + fM + '.' + fm + '.0';
+ } else {
+ from = '>=' + from;
+ }
+
+ if (isX(tM)) {
+ to = '';
+ } else if (isX(tm)) {
+ to = '<' + (+tM + 1) + '.0.0';
+ } else if (isX(tp)) {
+ to = '<' + tM + '.' + (+tm + 1) + '.0';
+ } else if (tpr) {
+ to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;
+ } else {
+ to = '<=' + to;
+ }
+
+ return (from + ' ' + to).trim();
+ } // if ANY of the sets match ALL of its comparators, then pass
+
+
+ Range.prototype.test = function (version) {
+ if (!version) {
+ return false;
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options);
+ } catch (er) {
+ return false;
+ }
+ }
+
+ for (var i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) {
+ return true;
+ }
+ }
+
+ return false;
+ };
+
+ function testSet(set, version, options) {
+ for (var i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) {
+ return false;
+ }
+ }
+
+ if (version.prerelease.length && !options.includePrerelease) {
+ // Find the set of versions that are allowed to have prereleases
+ // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+ // That should allow `1.2.3-pr.2` to pass.
+ // However, `1.2.4-alpha.notready` should NOT be allowed,
+ // even though it's within the range set by the comparators.
+ for (i = 0; i < set.length; i++) {
+ debug(set[i].semver);
+
+ if (set[i].semver === ANY) {
+ continue;
+ }
+
+ if (set[i].semver.prerelease.length > 0) {
+ var allowed = set[i].semver;
+
+ if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {
+ return true;
+ }
+ }
+ } // Version has a -pre, but it's not one of the ones we like.
+
+
+ return false;
+ }
+
+ return true;
+ }
+
+ exports.satisfies = satisfies;
+
+ function satisfies(version, range, options) {
+ try {
+ range = new Range(range, options);
+ } catch (er) {
+ return false;
+ }
+
+ return range.test(version);
+ }
+
+ exports.maxSatisfying = maxSatisfying;
+
+ function maxSatisfying(versions, range, options) {
+ var max = null;
+ var maxSV = null;
+
+ try {
+ var rangeObj = new Range(range, options);
+ } catch (er) {
+ return null;
+ }
+
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!max || maxSV.compare(v) === -1) {
+ // compare(max, v, true)
+ max = v;
+ maxSV = new SemVer(max, options);
+ }
+ }
+ });
+ return max;
+ }
+
+ exports.minSatisfying = minSatisfying;
+
+ function minSatisfying(versions, range, options) {
+ var min = null;
+ var minSV = null;
+
+ try {
+ var rangeObj = new Range(range, options);
+ } catch (er) {
+ return null;
+ }
+
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!min || minSV.compare(v) === 1) {
+ // compare(min, v, true)
+ min = v;
+ minSV = new SemVer(min, options);
+ }
+ }
+ });
+ return min;
+ }
+
+ exports.minVersion = minVersion;
+
+ function minVersion(range, loose) {
+ range = new Range(range, loose);
+ var minver = new SemVer('0.0.0');
+
+ if (range.test(minver)) {
+ return minver;
+ }
+
+ minver = new SemVer('0.0.0-0');
+
+ if (range.test(minver)) {
+ return minver;
+ }
+
+ minver = null;
+
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i];
+ comparators.forEach(function (comparator) {
+ // Clone to avoid manipulating the comparator's semver object.
+ var compver = new SemVer(comparator.semver.version);
+
+ switch (comparator.operator) {
+ case '>':
+ if (compver.prerelease.length === 0) {
+ compver.patch++;
+ } else {
+ compver.prerelease.push(0);
+ }
+
+ compver.raw = compver.format();
+
+ /* fallthrough */
+
+ case '':
+ case '>=':
+ if (!minver || gt(minver, compver)) {
+ minver = compver;
+ }
+
+ break;
+
+ case '<':
+ case '<=':
+ /* Ignore maximum versions */
+ break;
+
+ /* istanbul ignore next */
+
+ default:
+ throw new Error('Unexpected operation: ' + comparator.operator);
+ }
+ });
+ }
+
+ if (minver && range.test(minver)) {
+ return minver;
+ }
+
+ return null;
+ }
+
+ exports.validRange = validRange;
+
+ function validRange(range, options) {
+ try {
+ // Return '*' instead of '' so that truthiness works.
+ // This will throw if it's invalid anyway
+ return new Range(range, options).range || '*';
+ } catch (er) {
+ return null;
+ }
+ } // Determine if version is less than all the versions possible in the range
+
+
+ exports.ltr = ltr;
+
+ function ltr(version, range, options) {
+ return outside(version, range, '<', options);
+ } // Determine if version is greater than all the versions possible in the range.
+
+
+ exports.gtr = gtr;
+
+ function gtr(version, range, options) {
+ return outside(version, range, '>', options);
+ }
+
+ exports.outside = outside;
+
+ function outside(version, range, hilo, options) {
+ version = new SemVer(version, options);
+ range = new Range(range, options);
+ var gtfn, ltefn, ltfn, comp, ecomp;
+
+ switch (hilo) {
+ case '>':
+ gtfn = gt;
+ ltefn = lte;
+ ltfn = lt;
+ comp = '>';
+ ecomp = '>=';
+ break;
+
+ case '<':
+ gtfn = lt;
+ ltefn = gte;
+ ltfn = gt;
+ comp = '<';
+ ecomp = '<=';
+ break;
+
+ default:
+ throw new TypeError('Must provide a hilo val of "<" or ">"');
+ } // If it satisifes the range it is not outside
+
+
+ if (satisfies(version, range, options)) {
+ return false;
+ } // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
+
+
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i];
+ var high = null;
+ var low = null;
+ comparators.forEach(function (comparator) {
+ if (comparator.semver === ANY) {
+ comparator = new Comparator('>=0.0.0');
+ }
+
+ high = high || comparator;
+ low = low || comparator;
+
+ if (gtfn(comparator.semver, high.semver, options)) {
+ high = comparator;
+ } else if (ltfn(comparator.semver, low.semver, options)) {
+ low = comparator;
+ }
+ }); // If the edge version comparator has a operator then our version
+ // isn't outside it
+
+ if (high.operator === comp || high.operator === ecomp) {
+ return false;
+ } // If the lowest version comparator has an operator and our version
+ // is less than it then it isn't higher than the range
+
+
+ if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
+ return false;
+ } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ exports.prerelease = prerelease;
+
+ function prerelease(version, options) {
+ var parsed = parse(version, options);
+ return parsed && parsed.prerelease.length ? parsed.prerelease : null;
+ }
+
+ exports.intersects = intersects;
+
+ function intersects(r1, r2, options) {
+ r1 = new Range(r1, options);
+ r2 = new Range(r2, options);
+ return r1.intersects(r2);
+ }
+
+ exports.coerce = coerce;
+
+ function coerce(version, options) {
+ if (version instanceof SemVer) {
+ return version;
+ }
+
+ if (typeof version === 'number') {
+ version = String(version);
+ }
+
+ if (typeof version !== 'string') {
+ return null;
+ }
+
+ options = options || {};
+ var match = null;
+
+ if (!options.rtl) {
+ match = version.match(re[t.COERCE]);
+ } else {
+ // Find the right-most coercible string that does not share
+ // a terminus with a more left-ward coercible string.
+ // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
+ //
+ // Walk through the string checking with a /g regexp
+ // Manually set the index so as to pick up overlapping matches.
+ // Stop when we get a match that ends at the string end, since no
+ // coercible string can be more right-ward without the same terminus.
+ var next;
+
+ while ((next = re[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) {
+ if (!match || next.index + next[0].length !== match.index + match[0].length) {
+ match = next;
+ }
+
+ re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
+ } // leave it in a clean state
+
+
+ re[t.COERCERTL].lastIndex = -1;
+ }
+
+ if (match === null) {
+ return null;
+ }
+
+ return parse(match[2] + '.' + (match[3] || '0') + '.' + (match[4] || '0'), options);
+ }
+});
+var semver_1 = semver.SEMVER_SPEC_VERSION;
+var semver_2 = semver.re;
+var semver_3 = semver.src;
+var semver_4 = semver.tokens;
+var semver_5 = semver.parse;
+var semver_6 = semver.valid;
+var semver_7 = semver.clean;
+var semver_8 = semver.SemVer;
+var semver_9 = semver.inc;
+var semver_10 = semver.diff;
+var semver_11 = semver.compareIdentifiers;
+var semver_12 = semver.rcompareIdentifiers;
+var semver_13 = semver.major;
+var semver_14 = semver.minor;
+var semver_15 = semver.patch;
+var semver_16 = semver.compare;
+var semver_17 = semver.compareLoose;
+var semver_18 = semver.compareBuild;
+var semver_19 = semver.rcompare;
+var semver_20 = semver.sort;
+var semver_21 = semver.rsort;
+var semver_22 = semver.gt;
+var semver_23 = semver.lt;
+var semver_24 = semver.eq;
+var semver_25 = semver.neq;
+var semver_26 = semver.gte;
+var semver_27 = semver.lte;
+var semver_28 = semver.cmp;
+var semver_29 = semver.Comparator;
+var semver_30 = semver.Range;
+var semver_31 = semver.toComparators;
+var semver_32 = semver.satisfies;
+var semver_33 = semver.maxSatisfying;
+var semver_34 = semver.minSatisfying;
+var semver_35 = semver.minVersion;
+var semver_36 = semver.validRange;
+var semver_37 = semver.ltr;
+var semver_38 = semver.gtr;
+var semver_39 = semver.outside;
+var semver_40 = semver.prerelease;
+var semver_41 = semver.intersects;
+var semver_42 = semver.coerce;
+
+var arrayify = function arrayify(object, keyName) {
+ return Object.keys(object).reduce(function (array, key) {
+ return array.concat(Object.assign({
+ [keyName]: key
+ }, object[key]));
+ }, []);
+};
+
+var dedent_1 = createCommonjsModule(function (module) {
+
+ function dedent(strings) {
+ var raw = void 0;
+
+ if (typeof strings === "string") {
+ // dedent can be used as a plain function
+ raw = [strings];
+ } else {
+ raw = strings.raw;
+ } // first, perform interpolation
+
+
+ var result = "";
+
+ for (var i = 0; i < raw.length; i++) {
+ result += raw[i]. // join lines when there is a suppressed newline
+ replace(/\\\n[ \t]*/g, ""). // handle escaped backticks
+ replace(/\\`/g, "`");
+
+ if (i < (arguments.length <= 1 ? 0 : arguments.length - 1)) {
+ result += arguments.length <= i + 1 ? undefined : arguments[i + 1];
+ }
+ } // now strip indentation
+
+
+ var lines = result.split("\n");
+ var mindent = null;
+ lines.forEach(function (l) {
+ var m = l.match(/^(\s+)\S+/);
+
+ if (m) {
+ var indent = m[1].length;
+
+ if (!mindent) {
+ // this is the first indented line
+ mindent = indent;
+ } else {
+ mindent = Math.min(mindent, indent);
+ }
+ }
+ });
+
+ if (mindent !== null) {
+ result = lines.map(function (l) {
+ return l[0] === " " ? l.slice(mindent) : l;
+ }).join("\n");
+ } // dedent eats leading and trailing whitespace too
+
+
+ result = result.trim(); // handle escaped newlines at the end to ensure they don't get stripped too
+
+ return result.replace(/\\n/g, "\n");
+ }
+
+ {
+ module.exports = dedent;
+ }
+});
+
+var CATEGORY_CONFIG = "Config";
+var CATEGORY_EDITOR = "Editor";
+var CATEGORY_FORMAT = "Format";
+var CATEGORY_OTHER = "Other";
+var CATEGORY_OUTPUT = "Output";
+var CATEGORY_GLOBAL = "Global";
+var CATEGORY_SPECIAL = "Special";
+/**
+ * @typedef {Object} OptionInfo
+ * @property {string} [since] - available since version
+ * @property {string} category
+ * @property {'int' | 'boolean' | 'choice' | 'path'} type
+ * @property {boolean} [array] - indicate it's an array of the specified type
+ * @property {OptionValueInfo} [default]
+ * @property {OptionRangeInfo} [range] - for type int
+ * @property {string} description
+ * @property {string} [deprecated] - deprecated since version
+ * @property {OptionRedirectInfo} [redirect] - redirect deprecated option
+ * @property {(value: any) => boolean} [exception]
+ * @property {OptionChoiceInfo[]} [choices] - for type choice
+ * @property {string} [cliName]
+ * @property {string} [cliCategory]
+ * @property {string} [cliDescription]
+ *
+ * @typedef {number | boolean | string} OptionValue
+ * @typedef {OptionValue | [{ value: OptionValue[] }] | Array<{ since: string, value: OptionValue}>} OptionValueInfo
+ *
+ * @typedef {Object} OptionRedirectInfo
+ * @property {string} option
+ * @property {OptionValue} value
+ *
+ * @typedef {Object} OptionRangeInfo
+ * @property {number} start - recommended range start
+ * @property {number} end - recommended range end
+ * @property {number} step - recommended range step
+ *
+ * @typedef {Object} OptionChoiceInfo
+ * @property {boolean | string} value - boolean for the option that is originally boolean type
+ * @property {string} description
+ * @property {string} [since] - undefined if available since the first version of the option
+ * @property {string} [deprecated] - deprecated since version
+ * @property {OptionValueInfo} [redirect] - redirect deprecated value
+ */
+
+/** @type {{ [name: string]: OptionInfo }} */
+
+var options = {
+ cursorOffset: {
+ since: "1.4.0",
+ category: CATEGORY_SPECIAL,
+ type: "int",
+ default: -1,
+ range: {
+ start: -1,
+ end: Infinity,
+ step: 1
+ },
+ description: dedent_1`
+ Print (to stderr) where a cursor at the given position would move to after formatting.
+ This option cannot be used with --range-start and --range-end.
+ `,
+ cliCategory: CATEGORY_EDITOR
+ },
+ endOfLine: {
+ since: "1.15.0",
+ category: CATEGORY_GLOBAL,
+ type: "choice",
+ default: "auto",
+ description: "Which end of line characters to apply.",
+ choices: [{
+ value: "auto",
+ description: dedent_1`
+ Maintain existing
+ (mixed values within one file are normalised by looking at what's used after the first line)
+ `
+ }, {
+ value: "lf",
+ description: "Line Feed only (\\n), common on Linux and macOS as well as inside git repos"
+ }, {
+ value: "crlf",
+ description: "Carriage Return + Line Feed characters (\\r\\n), common on Windows"
+ }, {
+ value: "cr",
+ description: "Carriage Return character only (\\r), used very rarely"
+ }]
+ },
+ filepath: {
+ since: "1.4.0",
+ category: CATEGORY_SPECIAL,
+ type: "path",
+ description: "Specify the input filepath. This will be used to do parser inference.",
+ cliName: "stdin-filepath",
+ cliCategory: CATEGORY_OTHER,
+ cliDescription: "Path to the file to pretend that stdin comes from."
+ },
+ insertPragma: {
+ since: "1.8.0",
+ category: CATEGORY_SPECIAL,
+ type: "boolean",
+ default: false,
+ description: "Insert @format pragma into file's first docblock comment.",
+ cliCategory: CATEGORY_OTHER
+ },
+ parser: {
+ since: "0.0.10",
+ category: CATEGORY_GLOBAL,
+ type: "choice",
+ default: [{
+ since: "0.0.10",
+ value: "babylon"
+ }, {
+ since: "1.13.0",
+ value: undefined
+ }],
+ description: "Which parser to use.",
+ exception: function exception(value) {
+ return typeof value === "string" || typeof value === "function";
+ },
+ choices: [{
+ value: "flow",
+ description: "Flow"
+ }, {
+ value: "babylon",
+ description: "JavaScript",
+ deprecated: "1.16.0",
+ redirect: "babel"
+ }, {
+ value: "babel",
+ since: "1.16.0",
+ description: "JavaScript"
+ }, {
+ value: "babel-flow",
+ since: "1.16.0",
+ description: "Flow"
+ }, {
+ value: "typescript",
+ since: "1.4.0",
+ description: "TypeScript"
+ }, {
+ value: "css",
+ since: "1.7.1",
+ description: "CSS"
+ }, {
+ value: "postcss",
+ since: "1.4.0",
+ description: "CSS/Less/SCSS",
+ deprecated: "1.7.1",
+ redirect: "css"
+ }, {
+ value: "less",
+ since: "1.7.1",
+ description: "Less"
+ }, {
+ value: "scss",
+ since: "1.7.1",
+ description: "SCSS"
+ }, {
+ value: "json",
+ since: "1.5.0",
+ description: "JSON"
+ }, {
+ value: "json5",
+ since: "1.13.0",
+ description: "JSON5"
+ }, {
+ value: "json-stringify",
+ since: "1.13.0",
+ description: "JSON.stringify"
+ }, {
+ value: "graphql",
+ since: "1.5.0",
+ description: "GraphQL"
+ }, {
+ value: "markdown",
+ since: "1.8.0",
+ description: "Markdown"
+ }, {
+ value: "mdx",
+ since: "1.15.0",
+ description: "MDX"
+ }, {
+ value: "vue",
+ since: "1.10.0",
+ description: "Vue"
+ }, {
+ value: "yaml",
+ since: "1.14.0",
+ description: "YAML"
+ }, {
+ value: "glimmer",
+ since: null,
+ description: "Handlebars"
+ }, {
+ value: "html",
+ since: "1.15.0",
+ description: "HTML"
+ }, {
+ value: "angular",
+ since: "1.15.0",
+ description: "Angular"
+ }, {
+ value: "lwc",
+ since: "1.17.0",
+ description: "Lightning Web Components"
+ }]
+ },
+ plugins: {
+ since: "1.10.0",
+ type: "path",
+ array: true,
+ default: [{
+ value: []
+ }],
+ category: CATEGORY_GLOBAL,
+ description: "Add a plugin. Multiple plugins can be passed as separate `--plugin`s.",
+ exception: function exception(value) {
+ return typeof value === "string" || typeof value === "object";
+ },
+ cliName: "plugin",
+ cliCategory: CATEGORY_CONFIG
+ },
+ pluginSearchDirs: {
+ since: "1.13.0",
+ type: "path",
+ array: true,
+ default: [{
+ value: []
+ }],
+ category: CATEGORY_GLOBAL,
+ description: dedent_1`
+ Custom directory that contains prettier plugins in node_modules subdirectory.
+ Overrides default behavior when plugins are searched relatively to the location of Prettier.
+ Multiple values are accepted.
+ `,
+ exception: function exception(value) {
+ return typeof value === "string" || typeof value === "object";
+ },
+ cliName: "plugin-search-dir",
+ cliCategory: CATEGORY_CONFIG
+ },
+ printWidth: {
+ since: "0.0.0",
+ category: CATEGORY_GLOBAL,
+ type: "int",
+ default: 80,
+ description: "The line length where Prettier will try wrap.",
+ range: {
+ start: 0,
+ end: Infinity,
+ step: 1
+ }
+ },
+ rangeEnd: {
+ since: "1.4.0",
+ category: CATEGORY_SPECIAL,
+ type: "int",
+ default: Infinity,
+ range: {
+ start: 0,
+ end: Infinity,
+ step: 1
+ },
+ description: dedent_1`
+ Format code ending at a given character offset (exclusive).
+ The range will extend forwards to the end of the selected statement.
+ This option cannot be used with --cursor-offset.
+ `,
+ cliCategory: CATEGORY_EDITOR
+ },
+ rangeStart: {
+ since: "1.4.0",
+ category: CATEGORY_SPECIAL,
+ type: "int",
+ default: 0,
+ range: {
+ start: 0,
+ end: Infinity,
+ step: 1
+ },
+ description: dedent_1`
+ Format code starting at a given character offset.
+ The range will extend backwards to the start of the first line containing the selected statement.
+ This option cannot be used with --cursor-offset.
+ `,
+ cliCategory: CATEGORY_EDITOR
+ },
+ requirePragma: {
+ since: "1.7.0",
+ category: CATEGORY_SPECIAL,
+ type: "boolean",
+ default: false,
+ description: dedent_1`
+ Require either '@prettier' or '@format' to be present in the file's first docblock comment
+ in order for it to be formatted.
+ `,
+ cliCategory: CATEGORY_OTHER
+ },
+ tabWidth: {
+ type: "int",
+ category: CATEGORY_GLOBAL,
+ default: 2,
+ description: "Number of spaces per indentation level.",
+ range: {
+ start: 0,
+ end: Infinity,
+ step: 1
+ }
+ },
+ useFlowParser: {
+ since: "0.0.0",
+ category: CATEGORY_GLOBAL,
+ type: "boolean",
+ default: [{
+ since: "0.0.0",
+ value: false
+ }, {
+ since: "1.15.0",
+ value: undefined
+ }],
+ deprecated: "0.0.10",
+ description: "Use flow parser.",
+ redirect: {
+ option: "parser",
+ value: "flow"
+ },
+ cliName: "flow-parser"
+ },
+ useTabs: {
+ since: "1.0.0",
+ category: CATEGORY_GLOBAL,
+ type: "boolean",
+ default: false,
+ description: "Indent with tabs instead of spaces."
+ }
+};
+var coreOptions = {
+ CATEGORY_CONFIG,
+ CATEGORY_EDITOR,
+ CATEGORY_FORMAT,
+ CATEGORY_OTHER,
+ CATEGORY_OUTPUT,
+ CATEGORY_GLOBAL,
+ CATEGORY_SPECIAL,
+ options
+};
+
+var require$$0 = getCjsExportFromNamespace(_package$1);
+
+var currentVersion = require$$0.version;
+var coreOptions$1 = coreOptions.options;
+
+function getSupportInfo(version, opts) {
+ opts = Object.assign({
+ plugins: [],
+ showUnreleased: false,
+ showDeprecated: false,
+ showInternal: false
+ }, opts);
+
+ if (!version) {
+ // pre-release version is smaller than the normal version in semver,
+ // we need to treat it as the normal one so as to test new features.
+ version = currentVersion.split("-", 1)[0];
+ }
+
+ var plugins = opts.plugins;
+ var options = arrayify(Object.assign(plugins.reduce(function (currentOptions, plugin) {
+ return Object.assign(currentOptions, plugin.options);
+ }, {}), coreOptions$1), "name").sort(function (a, b) {
+ return a.name === b.name ? 0 : a.name < b.name ? -1 : 1;
+ }).filter(filterSince).filter(filterDeprecated).map(mapDeprecated).map(mapInternal).map(function (option) {
+ var newOption = Object.assign({}, option);
+
+ if (Array.isArray(newOption.default)) {
+ newOption.default = newOption.default.length === 1 ? newOption.default[0].value : newOption.default.filter(filterSince).sort(function (info1, info2) {
+ return semver.compare(info2.since, info1.since);
+ })[0].value;
+ }
+
+ if (Array.isArray(newOption.choices)) {
+ newOption.choices = newOption.choices.filter(filterSince).filter(filterDeprecated).map(mapDeprecated);
+ }
+
+ return newOption;
+ }).map(function (option) {
+ var filteredPlugins = plugins.filter(function (plugin) {
+ return plugin.defaultOptions && plugin.defaultOptions[option.name] !== undefined;
+ });
+ var pluginDefaults = filteredPlugins.reduce(function (reduced, plugin) {
+ reduced[plugin.name] = plugin.defaultOptions[option.name];
+ return reduced;
+ }, {});
+ return Object.assign(option, {
+ pluginDefaults
+ });
+ });
+ var usePostCssParser = semver.lt(version, "1.7.1");
+ var useBabylonParser = semver.lt(version, "1.16.0");
+ var languages = plugins.reduce(function (all, plugin) {
+ return all.concat(plugin.languages || []);
+ }, []).filter(filterSince).map(function (language) {
+ // Prevent breaking changes
+ if (language.name === "Markdown") {
+ return Object.assign({}, language, {
+ parsers: ["markdown"]
+ });
+ }
+
+ if (language.name === "TypeScript") {
+ return Object.assign({}, language, {
+ parsers: ["typescript"]
+ });
+ } // "babylon" was renamed to "babel" in 1.16.0
+
+
+ if (useBabylonParser && language.parsers.indexOf("babel") !== -1) {
+ return Object.assign({}, language, {
+ parsers: language.parsers.map(function (parser) {
+ return parser === "babel" ? "babylon" : parser;
+ })
+ });
+ }
+
+ if (usePostCssParser && (language.name === "CSS" || language.group === "CSS")) {
+ return Object.assign({}, language, {
+ parsers: ["postcss"]
+ });
+ }
+
+ return language;
+ });
+ return {
+ languages,
+ options
+ };
+
+ function filterSince(object) {
+ return opts.showUnreleased || !("since" in object) || object.since && semver.gte(version, object.since);
+ }
+
+ function filterDeprecated(object) {
+ return opts.showDeprecated || !("deprecated" in object) || object.deprecated && semver.lt(version, object.deprecated);
+ }
+
+ function mapDeprecated(object) {
+ if (!object.deprecated || opts.showDeprecated) {
+ return object;
+ }
+
+ var newObject = Object.assign({}, object);
+ delete newObject.deprecated;
+ delete newObject.redirect;
+ return newObject;
+ }
+
+ function mapInternal(object) {
+ if (opts.showInternal) {
+ return object;
+ }
+
+ var newObject = Object.assign({}, object);
+ delete newObject.cliName;
+ delete newObject.cliCategory;
+ delete newObject.cliDescription;
+ return newObject;
+ }
+}
+
+var support = {
+ getSupportInfo
+};
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at http://www.apache.org/licenses/LICENSE-2.0
+
+THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+MERCHANTABLITY OR NON-INFRINGEMENT.
+
+See the Apache Version 2.0 License for specific language governing permissions
+and limitations under the License.
+***************************************************************************** */
+
+/* global Reflect, Promise */
+var _extendStatics = function extendStatics(d, b) {
+ _extendStatics = Object.setPrototypeOf || {
+ __proto__: []
+ } instanceof Array && function (d, b) {
+ d.__proto__ = b;
+ } || function (d, b) {
+ for (var p in b) {
+ if (b.hasOwnProperty(p)) d[p] = b[p];
+ }
+ };
+
+ return _extendStatics(d, b);
+};
+
+function __extends(d, b) {
+ _extendStatics(d, b);
+
+ function __() {
+ this.constructor = d;
+ }
+
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+}
+
+var _assign = function __assign() {
+ _assign = Object.assign || function __assign(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+
+ for (var p in s) {
+ if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+ }
+ }
+
+ return t;
+ };
+
+ return _assign.apply(this, arguments);
+};
+function __rest(s, e) {
+ var t = {};
+
+ for (var p in s) {
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
+ }
+
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
+ }
+ return t;
+}
+function __decorate(decorators, target, key, desc) {
+ var c = arguments.length,
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
+ d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
+ if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ }
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+}
+function __param(paramIndex, decorator) {
+ return function (target, key) {
+ decorator(target, key, paramIndex);
+ };
+}
+function __metadata(metadataKey, metadataValue) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+}
+function __awaiter(thisArg, _arguments, P, generator) {
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) {
+ try {
+ step(generator.next(value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function rejected(value) {
+ try {
+ step(generator["throw"](value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function step(result) {
+ result.done ? resolve(result.value) : new P(function (resolve) {
+ resolve(result.value);
+ }).then(fulfilled, rejected);
+ }
+
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+}
+function __generator(thisArg, body) {
+ var _ = {
+ label: 0,
+ sent: function sent() {
+ if (t[0] & 1) throw t[1];
+ return t[1];
+ },
+ trys: [],
+ ops: []
+ },
+ f,
+ y,
+ t,
+ g;
+ return g = {
+ next: verb(0),
+ "throw": verb(1),
+ "return": verb(2)
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
+ return this;
+ }), g;
+
+ function verb(n) {
+ return function (v) {
+ return step([n, v]);
+ };
+ }
+
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+
+ while (_) {
+ try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+
+ switch (op[0]) {
+ case 0:
+ case 1:
+ t = op;
+ break;
+
+ case 4:
+ _.label++;
+ return {
+ value: op[1],
+ done: false
+ };
+
+ case 5:
+ _.label++;
+ y = op[1];
+ op = [0];
+ continue;
+
+ case 7:
+ op = _.ops.pop();
+
+ _.trys.pop();
+
+ continue;
+
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
+ _ = 0;
+ continue;
+ }
+
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
+ _.label = op[1];
+ break;
+ }
+
+ if (op[0] === 6 && _.label < t[1]) {
+ _.label = t[1];
+ t = op;
+ break;
+ }
+
+ if (t && _.label < t[2]) {
+ _.label = t[2];
+
+ _.ops.push(op);
+
+ break;
+ }
+
+ if (t[2]) _.ops.pop();
+
+ _.trys.pop();
+
+ continue;
+ }
+
+ op = body.call(thisArg, _);
+ } catch (e) {
+ op = [6, e];
+ y = 0;
+ } finally {
+ f = t = 0;
+ }
+ }
+
+ if (op[0] & 5) throw op[1];
+ return {
+ value: op[0] ? op[1] : void 0,
+ done: true
+ };
+ }
+}
+function __exportStar(m, exports) {
+ for (var p in m) {
+ if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+}
+function __values(o) {
+ var m = typeof Symbol === "function" && o[Symbol.iterator],
+ i = 0;
+ if (m) return m.call(o);
+ return {
+ next: function next() {
+ if (o && i >= o.length) o = void 0;
+ return {
+ value: o && o[i++],
+ done: !o
+ };
+ }
+ };
+}
+function __read(o, n) {
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
+ if (!m) return o;
+ var i = m.call(o),
+ r,
+ ar = [],
+ e;
+
+ try {
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {
+ ar.push(r.value);
+ }
+ } catch (error) {
+ e = {
+ error: error
+ };
+ } finally {
+ try {
+ if (r && !r.done && (m = i["return"])) m.call(i);
+ } finally {
+ if (e) throw e.error;
+ }
+ }
+
+ return ar;
+}
+function __spread() {
+ for (var ar = [], i = 0; i < arguments.length; i++) {
+ ar = ar.concat(__read(arguments[i]));
+ }
+
+ return ar;
+}
+function __spreadArrays() {
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) {
+ s += arguments[i].length;
+ }
+
+ for (var r = Array(s), k = 0, i = 0; i < il; i++) {
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {
+ r[k] = a[j];
+ }
+ }
+
+ return r;
+}
+function __await(v) {
+ return this instanceof __await ? (this.v = v, this) : new __await(v);
+}
+function __asyncGenerator(thisArg, _arguments, generator) {
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+ var g = generator.apply(thisArg, _arguments || []),
+ i,
+ q = [];
+ return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () {
+ return this;
+ }, i;
+
+ function verb(n) {
+ if (g[n]) i[n] = function (v) {
+ return new Promise(function (a, b) {
+ q.push([n, v, a, b]) > 1 || resume(n, v);
+ });
+ };
+ }
+
+ function resume(n, v) {
+ try {
+ step(g[n](v));
+ } catch (e) {
+ settle(q[0][3], e);
+ }
+ }
+
+ function step(r) {
+ r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
+ }
+
+ function fulfill(value) {
+ resume("next", value);
+ }
+
+ function reject(value) {
+ resume("throw", value);
+ }
+
+ function settle(f, v) {
+ if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);
+ }
+}
+function __asyncDelegator(o) {
+ var i, p;
+ return i = {}, verb("next"), verb("throw", function (e) {
+ throw e;
+ }), verb("return"), i[Symbol.iterator] = function () {
+ return this;
+ }, i;
+
+ function verb(n, f) {
+ i[n] = o[n] ? function (v) {
+ return (p = !p) ? {
+ value: __await(o[n](v)),
+ done: n === "return"
+ } : f ? f(v) : v;
+ } : f;
+ }
+}
+function __asyncValues(o) {
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+ var m = o[Symbol.asyncIterator],
+ i;
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () {
+ return this;
+ }, i);
+
+ function verb(n) {
+ i[n] = o[n] && function (v) {
+ return new Promise(function (resolve, reject) {
+ v = o[n](v), settle(resolve, reject, v.done, v.value);
+ });
+ };
+ }
+
+ function settle(resolve, reject, d, v) {
+ Promise.resolve(v).then(function (v) {
+ resolve({
+ value: v,
+ done: d
+ });
+ }, reject);
+ }
+}
+function __makeTemplateObject(cooked, raw) {
+ if (Object.defineProperty) {
+ Object.defineProperty(cooked, "raw", {
+ value: raw
+ });
+ } else {
+ cooked.raw = raw;
+ }
+
+ return cooked;
+}
+function __importStar(mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) {
+ if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+ }
+ result.default = mod;
+ return result;
+}
+function __importDefault(mod) {
+ return mod && mod.__esModule ? mod : {
+ default: mod
+ };
+}
+
+var tslib_es6 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ __extends: __extends,
+ get __assign () { return _assign; },
+ __rest: __rest,
+ __decorate: __decorate,
+ __param: __param,
+ __metadata: __metadata,
+ __awaiter: __awaiter,
+ __generator: __generator,
+ __exportStar: __exportStar,
+ __values: __values,
+ __read: __read,
+ __spread: __spread,
+ __spreadArrays: __spreadArrays,
+ __await: __await,
+ __asyncGenerator: __asyncGenerator,
+ __asyncDelegator: __asyncDelegator,
+ __asyncValues: __asyncValues,
+ __makeTemplateObject: __makeTemplateObject,
+ __importStar: __importStar,
+ __importDefault: __importDefault
+});
+
+var api = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.apiDescriptor = {
+ key: function key(_key) {
+ return /^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(_key) ? _key : JSON.stringify(_key);
+ },
+
+ value(value) {
+ if (value === null || typeof value !== 'object') {
+ return JSON.stringify(value);
+ }
+
+ if (Array.isArray(value)) {
+ return `[${value.map(function (subValue) {
+ return exports.apiDescriptor.value(subValue);
+ }).join(', ')}]`;
+ }
+
+ var keys = Object.keys(value);
+ return keys.length === 0 ? '{}' : `{ ${keys.map(function (key) {
+ return `${exports.apiDescriptor.key(key)}: ${exports.apiDescriptor.value(value[key])}`;
+ }).join(', ')} }`;
+ },
+
+ pair: function pair(_ref) {
+ var key = _ref.key,
+ value = _ref.value;
+ return exports.apiDescriptor.value({
+ [key]: value
+ });
+ }
+ };
+});
+unwrapExports(api);
+var api_1 = api.apiDescriptor;
+
+var descriptors = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_es6.__exportStar(api, exports);
+});
+unwrapExports(descriptors);
+
+var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
+
+var escapeStringRegexp = function escapeStringRegexp(str) {
+ if (typeof str !== 'string') {
+ throw new TypeError('Expected a string');
+ }
+
+ return str.replace(matchOperatorsRe, '\\$&');
+};
+
+var colorName = {
+ "aliceblue": [240, 248, 255],
+ "antiquewhite": [250, 235, 215],
+ "aqua": [0, 255, 255],
+ "aquamarine": [127, 255, 212],
+ "azure": [240, 255, 255],
+ "beige": [245, 245, 220],
+ "bisque": [255, 228, 196],
+ "black": [0, 0, 0],
+ "blanchedalmond": [255, 235, 205],
+ "blue": [0, 0, 255],
+ "blueviolet": [138, 43, 226],
+ "brown": [165, 42, 42],
+ "burlywood": [222, 184, 135],
+ "cadetblue": [95, 158, 160],
+ "chartreuse": [127, 255, 0],
+ "chocolate": [210, 105, 30],
+ "coral": [255, 127, 80],
+ "cornflowerblue": [100, 149, 237],
+ "cornsilk": [255, 248, 220],
+ "crimson": [220, 20, 60],
+ "cyan": [0, 255, 255],
+ "darkblue": [0, 0, 139],
+ "darkcyan": [0, 139, 139],
+ "darkgoldenrod": [184, 134, 11],
+ "darkgray": [169, 169, 169],
+ "darkgreen": [0, 100, 0],
+ "darkgrey": [169, 169, 169],
+ "darkkhaki": [189, 183, 107],
+ "darkmagenta": [139, 0, 139],
+ "darkolivegreen": [85, 107, 47],
+ "darkorange": [255, 140, 0],
+ "darkorchid": [153, 50, 204],
+ "darkred": [139, 0, 0],
+ "darksalmon": [233, 150, 122],
+ "darkseagreen": [143, 188, 143],
+ "darkslateblue": [72, 61, 139],
+ "darkslategray": [47, 79, 79],
+ "darkslategrey": [47, 79, 79],
+ "darkturquoise": [0, 206, 209],
+ "darkviolet": [148, 0, 211],
+ "deeppink": [255, 20, 147],
+ "deepskyblue": [0, 191, 255],
+ "dimgray": [105, 105, 105],
+ "dimgrey": [105, 105, 105],
+ "dodgerblue": [30, 144, 255],
+ "firebrick": [178, 34, 34],
+ "floralwhite": [255, 250, 240],
+ "forestgreen": [34, 139, 34],
+ "fuchsia": [255, 0, 255],
+ "gainsboro": [220, 220, 220],
+ "ghostwhite": [248, 248, 255],
+ "gold": [255, 215, 0],
+ "goldenrod": [218, 165, 32],
+ "gray": [128, 128, 128],
+ "green": [0, 128, 0],
+ "greenyellow": [173, 255, 47],
+ "grey": [128, 128, 128],
+ "honeydew": [240, 255, 240],
+ "hotpink": [255, 105, 180],
+ "indianred": [205, 92, 92],
+ "indigo": [75, 0, 130],
+ "ivory": [255, 255, 240],
+ "khaki": [240, 230, 140],
+ "lavender": [230, 230, 250],
+ "lavenderblush": [255, 240, 245],
+ "lawngreen": [124, 252, 0],
+ "lemonchiffon": [255, 250, 205],
+ "lightblue": [173, 216, 230],
+ "lightcoral": [240, 128, 128],
+ "lightcyan": [224, 255, 255],
+ "lightgoldenrodyellow": [250, 250, 210],
+ "lightgray": [211, 211, 211],
+ "lightgreen": [144, 238, 144],
+ "lightgrey": [211, 211, 211],
+ "lightpink": [255, 182, 193],
+ "lightsalmon": [255, 160, 122],
+ "lightseagreen": [32, 178, 170],
+ "lightskyblue": [135, 206, 250],
+ "lightslategray": [119, 136, 153],
+ "lightslategrey": [119, 136, 153],
+ "lightsteelblue": [176, 196, 222],
+ "lightyellow": [255, 255, 224],
+ "lime": [0, 255, 0],
+ "limegreen": [50, 205, 50],
+ "linen": [250, 240, 230],
+ "magenta": [255, 0, 255],
+ "maroon": [128, 0, 0],
+ "mediumaquamarine": [102, 205, 170],
+ "mediumblue": [0, 0, 205],
+ "mediumorchid": [186, 85, 211],
+ "mediumpurple": [147, 112, 219],
+ "mediumseagreen": [60, 179, 113],
+ "mediumslateblue": [123, 104, 238],
+ "mediumspringgreen": [0, 250, 154],
+ "mediumturquoise": [72, 209, 204],
+ "mediumvioletred": [199, 21, 133],
+ "midnightblue": [25, 25, 112],
+ "mintcream": [245, 255, 250],
+ "mistyrose": [255, 228, 225],
+ "moccasin": [255, 228, 181],
+ "navajowhite": [255, 222, 173],
+ "navy": [0, 0, 128],
+ "oldlace": [253, 245, 230],
+ "olive": [128, 128, 0],
+ "olivedrab": [107, 142, 35],
+ "orange": [255, 165, 0],
+ "orangered": [255, 69, 0],
+ "orchid": [218, 112, 214],
+ "palegoldenrod": [238, 232, 170],
+ "palegreen": [152, 251, 152],
+ "paleturquoise": [175, 238, 238],
+ "palevioletred": [219, 112, 147],
+ "papayawhip": [255, 239, 213],
+ "peachpuff": [255, 218, 185],
+ "peru": [205, 133, 63],
+ "pink": [255, 192, 203],
+ "plum": [221, 160, 221],
+ "powderblue": [176, 224, 230],
+ "purple": [128, 0, 128],
+ "rebeccapurple": [102, 51, 153],
+ "red": [255, 0, 0],
+ "rosybrown": [188, 143, 143],
+ "royalblue": [65, 105, 225],
+ "saddlebrown": [139, 69, 19],
+ "salmon": [250, 128, 114],
+ "sandybrown": [244, 164, 96],
+ "seagreen": [46, 139, 87],
+ "seashell": [255, 245, 238],
+ "sienna": [160, 82, 45],
+ "silver": [192, 192, 192],
+ "skyblue": [135, 206, 235],
+ "slateblue": [106, 90, 205],
+ "slategray": [112, 128, 144],
+ "slategrey": [112, 128, 144],
+ "snow": [255, 250, 250],
+ "springgreen": [0, 255, 127],
+ "steelblue": [70, 130, 180],
+ "tan": [210, 180, 140],
+ "teal": [0, 128, 128],
+ "thistle": [216, 191, 216],
+ "tomato": [255, 99, 71],
+ "turquoise": [64, 224, 208],
+ "violet": [238, 130, 238],
+ "wheat": [245, 222, 179],
+ "white": [255, 255, 255],
+ "whitesmoke": [245, 245, 245],
+ "yellow": [255, 255, 0],
+ "yellowgreen": [154, 205, 50]
+};
+
+var conversions = createCommonjsModule(function (module) {
+ /* MIT license */
+ // NOTE: conversions should only return primitive values (i.e. arrays, or
+ // values that give correct `typeof` results).
+ // do not use box values types (i.e. Number(), String(), etc.)
+ var reverseKeywords = {};
+
+ for (var key in colorName) {
+ if (colorName.hasOwnProperty(key)) {
+ reverseKeywords[colorName[key]] = key;
+ }
+ }
+
+ var convert = module.exports = {
+ rgb: {
+ channels: 3,
+ labels: 'rgb'
+ },
+ hsl: {
+ channels: 3,
+ labels: 'hsl'
+ },
+ hsv: {
+ channels: 3,
+ labels: 'hsv'
+ },
+ hwb: {
+ channels: 3,
+ labels: 'hwb'
+ },
+ cmyk: {
+ channels: 4,
+ labels: 'cmyk'
+ },
+ xyz: {
+ channels: 3,
+ labels: 'xyz'
+ },
+ lab: {
+ channels: 3,
+ labels: 'lab'
+ },
+ lch: {
+ channels: 3,
+ labels: 'lch'
+ },
+ hex: {
+ channels: 1,
+ labels: ['hex']
+ },
+ keyword: {
+ channels: 1,
+ labels: ['keyword']
+ },
+ ansi16: {
+ channels: 1,
+ labels: ['ansi16']
+ },
+ ansi256: {
+ channels: 1,
+ labels: ['ansi256']
+ },
+ hcg: {
+ channels: 3,
+ labels: ['h', 'c', 'g']
+ },
+ apple: {
+ channels: 3,
+ labels: ['r16', 'g16', 'b16']
+ },
+ gray: {
+ channels: 1,
+ labels: ['gray']
+ }
+ }; // hide .channels and .labels properties
+
+ for (var model in convert) {
+ if (convert.hasOwnProperty(model)) {
+ if (!('channels' in convert[model])) {
+ throw new Error('missing channels property: ' + model);
+ }
+
+ if (!('labels' in convert[model])) {
+ throw new Error('missing channel labels property: ' + model);
+ }
+
+ if (convert[model].labels.length !== convert[model].channels) {
+ throw new Error('channel and label counts mismatch: ' + model);
+ }
+
+ var channels = convert[model].channels;
+ var labels = convert[model].labels;
+ delete convert[model].channels;
+ delete convert[model].labels;
+ Object.defineProperty(convert[model], 'channels', {
+ value: channels
+ });
+ Object.defineProperty(convert[model], 'labels', {
+ value: labels
+ });
+ }
+ }
+
+ convert.rgb.hsl = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var min = Math.min(r, g, b);
+ var max = Math.max(r, g, b);
+ var delta = max - min;
+ var h;
+ var s;
+ var l;
+
+ if (max === min) {
+ h = 0;
+ } else if (r === max) {
+ h = (g - b) / delta;
+ } else if (g === max) {
+ h = 2 + (b - r) / delta;
+ } else if (b === max) {
+ h = 4 + (r - g) / delta;
+ }
+
+ h = Math.min(h * 60, 360);
+
+ if (h < 0) {
+ h += 360;
+ }
+
+ l = (min + max) / 2;
+
+ if (max === min) {
+ s = 0;
+ } else if (l <= 0.5) {
+ s = delta / (max + min);
+ } else {
+ s = delta / (2 - max - min);
+ }
+
+ return [h, s * 100, l * 100];
+ };
+
+ convert.rgb.hsv = function (rgb) {
+ var r = rgb[0];
+ var g = rgb[1];
+ var b = rgb[2];
+ var min = Math.min(r, g, b);
+ var max = Math.max(r, g, b);
+ var delta = max - min;
+ var h;
+ var s;
+ var v;
+
+ if (max === 0) {
+ s = 0;
+ } else {
+ s = delta / max * 1000 / 10;
+ }
+
+ if (max === min) {
+ h = 0;
+ } else if (r === max) {
+ h = (g - b) / delta;
+ } else if (g === max) {
+ h = 2 + (b - r) / delta;
+ } else if (b === max) {
+ h = 4 + (r - g) / delta;
+ }
+
+ h = Math.min(h * 60, 360);
+
+ if (h < 0) {
+ h += 360;
+ }
+
+ v = max / 255 * 1000 / 10;
+ return [h, s, v];
+ };
+
+ convert.rgb.hwb = function (rgb) {
+ var r = rgb[0];
+ var g = rgb[1];
+ var b = rgb[2];
+ var h = convert.rgb.hsl(rgb)[0];
+ var w = 1 / 255 * Math.min(r, Math.min(g, b));
+ b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
+ return [h, w * 100, b * 100];
+ };
+
+ convert.rgb.cmyk = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var c;
+ var m;
+ var y;
+ var k;
+ k = Math.min(1 - r, 1 - g, 1 - b);
+ c = (1 - r - k) / (1 - k) || 0;
+ m = (1 - g - k) / (1 - k) || 0;
+ y = (1 - b - k) / (1 - k) || 0;
+ return [c * 100, m * 100, y * 100, k * 100];
+ };
+ /**
+ * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
+ * */
+
+
+ function comparativeDistance(x, y) {
+ return Math.pow(x[0] - y[0], 2) + Math.pow(x[1] - y[1], 2) + Math.pow(x[2] - y[2], 2);
+ }
+
+ convert.rgb.keyword = function (rgb) {
+ var reversed = reverseKeywords[rgb];
+
+ if (reversed) {
+ return reversed;
+ }
+
+ var currentClosestDistance = Infinity;
+ var currentClosestKeyword;
+
+ for (var keyword in colorName) {
+ if (colorName.hasOwnProperty(keyword)) {
+ var value = colorName[keyword]; // Compute comparative distance
+
+ var distance = comparativeDistance(rgb, value); // Check if its less, if so set as closest
+
+ if (distance < currentClosestDistance) {
+ currentClosestDistance = distance;
+ currentClosestKeyword = keyword;
+ }
+ }
+ }
+
+ return currentClosestKeyword;
+ };
+
+ convert.keyword.rgb = function (keyword) {
+ return colorName[keyword];
+ };
+
+ convert.rgb.xyz = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255; // assume sRGB
+
+ r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;
+ g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;
+ b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;
+ var x = r * 0.4124 + g * 0.3576 + b * 0.1805;
+ var y = r * 0.2126 + g * 0.7152 + b * 0.0722;
+ var z = r * 0.0193 + g * 0.1192 + b * 0.9505;
+ return [x * 100, y * 100, z * 100];
+ };
+
+ convert.rgb.lab = function (rgb) {
+ var xyz = convert.rgb.xyz(rgb);
+ var x = xyz[0];
+ var y = xyz[1];
+ var z = xyz[2];
+ var l;
+ var a;
+ var b;
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
+ x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;
+ y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;
+ z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;
+ l = 116 * y - 16;
+ a = 500 * (x - y);
+ b = 200 * (y - z);
+ return [l, a, b];
+ };
+
+ convert.hsl.rgb = function (hsl) {
+ var h = hsl[0] / 360;
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var t1;
+ var t2;
+ var t3;
+ var rgb;
+ var val;
+
+ if (s === 0) {
+ val = l * 255;
+ return [val, val, val];
+ }
+
+ if (l < 0.5) {
+ t2 = l * (1 + s);
+ } else {
+ t2 = l + s - l * s;
+ }
+
+ t1 = 2 * l - t2;
+ rgb = [0, 0, 0];
+
+ for (var i = 0; i < 3; i++) {
+ t3 = h + 1 / 3 * -(i - 1);
+
+ if (t3 < 0) {
+ t3++;
+ }
+
+ if (t3 > 1) {
+ t3--;
+ }
+
+ if (6 * t3 < 1) {
+ val = t1 + (t2 - t1) * 6 * t3;
+ } else if (2 * t3 < 1) {
+ val = t2;
+ } else if (3 * t3 < 2) {
+ val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
+ } else {
+ val = t1;
+ }
+
+ rgb[i] = val * 255;
+ }
+
+ return rgb;
+ };
+
+ convert.hsl.hsv = function (hsl) {
+ var h = hsl[0];
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var smin = s;
+ var lmin = Math.max(l, 0.01);
+ var sv;
+ var v;
+ l *= 2;
+ s *= l <= 1 ? l : 2 - l;
+ smin *= lmin <= 1 ? lmin : 2 - lmin;
+ v = (l + s) / 2;
+ sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);
+ return [h, sv * 100, v * 100];
+ };
+
+ convert.hsv.rgb = function (hsv) {
+ var h = hsv[0] / 60;
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+ var hi = Math.floor(h) % 6;
+ var f = h - Math.floor(h);
+ var p = 255 * v * (1 - s);
+ var q = 255 * v * (1 - s * f);
+ var t = 255 * v * (1 - s * (1 - f));
+ v *= 255;
+
+ switch (hi) {
+ case 0:
+ return [v, t, p];
+
+ case 1:
+ return [q, v, p];
+
+ case 2:
+ return [p, v, t];
+
+ case 3:
+ return [p, q, v];
+
+ case 4:
+ return [t, p, v];
+
+ case 5:
+ return [v, p, q];
+ }
+ };
+
+ convert.hsv.hsl = function (hsv) {
+ var h = hsv[0];
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+ var vmin = Math.max(v, 0.01);
+ var lmin;
+ var sl;
+ var l;
+ l = (2 - s) * v;
+ lmin = (2 - s) * vmin;
+ sl = s * vmin;
+ sl /= lmin <= 1 ? lmin : 2 - lmin;
+ sl = sl || 0;
+ l /= 2;
+ return [h, sl * 100, l * 100];
+ }; // http://dev.w3.org/csswg/css-color/#hwb-to-rgb
+
+
+ convert.hwb.rgb = function (hwb) {
+ var h = hwb[0] / 360;
+ var wh = hwb[1] / 100;
+ var bl = hwb[2] / 100;
+ var ratio = wh + bl;
+ var i;
+ var v;
+ var f;
+ var n; // wh + bl cant be > 1
+
+ if (ratio > 1) {
+ wh /= ratio;
+ bl /= ratio;
+ }
+
+ i = Math.floor(6 * h);
+ v = 1 - bl;
+ f = 6 * h - i;
+
+ if ((i & 0x01) !== 0) {
+ f = 1 - f;
+ }
+
+ n = wh + f * (v - wh); // linear interpolation
+
+ var r;
+ var g;
+ var b;
+
+ switch (i) {
+ default:
+ case 6:
+ case 0:
+ r = v;
+ g = n;
+ b = wh;
+ break;
+
+ case 1:
+ r = n;
+ g = v;
+ b = wh;
+ break;
+
+ case 2:
+ r = wh;
+ g = v;
+ b = n;
+ break;
+
+ case 3:
+ r = wh;
+ g = n;
+ b = v;
+ break;
+
+ case 4:
+ r = n;
+ g = wh;
+ b = v;
+ break;
+
+ case 5:
+ r = v;
+ g = wh;
+ b = n;
+ break;
+ }
+
+ return [r * 255, g * 255, b * 255];
+ };
+
+ convert.cmyk.rgb = function (cmyk) {
+ var c = cmyk[0] / 100;
+ var m = cmyk[1] / 100;
+ var y = cmyk[2] / 100;
+ var k = cmyk[3] / 100;
+ var r;
+ var g;
+ var b;
+ r = 1 - Math.min(1, c * (1 - k) + k);
+ g = 1 - Math.min(1, m * (1 - k) + k);
+ b = 1 - Math.min(1, y * (1 - k) + k);
+ return [r * 255, g * 255, b * 255];
+ };
+
+ convert.xyz.rgb = function (xyz) {
+ var x = xyz[0] / 100;
+ var y = xyz[1] / 100;
+ var z = xyz[2] / 100;
+ var r;
+ var g;
+ var b;
+ r = x * 3.2406 + y * -1.5372 + z * -0.4986;
+ g = x * -0.9689 + y * 1.8758 + z * 0.0415;
+ b = x * 0.0557 + y * -0.2040 + z * 1.0570; // assume sRGB
+
+ r = r > 0.0031308 ? 1.055 * Math.pow(r, 1.0 / 2.4) - 0.055 : r * 12.92;
+ g = g > 0.0031308 ? 1.055 * Math.pow(g, 1.0 / 2.4) - 0.055 : g * 12.92;
+ b = b > 0.0031308 ? 1.055 * Math.pow(b, 1.0 / 2.4) - 0.055 : b * 12.92;
+ r = Math.min(Math.max(0, r), 1);
+ g = Math.min(Math.max(0, g), 1);
+ b = Math.min(Math.max(0, b), 1);
+ return [r * 255, g * 255, b * 255];
+ };
+
+ convert.xyz.lab = function (xyz) {
+ var x = xyz[0];
+ var y = xyz[1];
+ var z = xyz[2];
+ var l;
+ var a;
+ var b;
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
+ x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;
+ y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;
+ z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;
+ l = 116 * y - 16;
+ a = 500 * (x - y);
+ b = 200 * (y - z);
+ return [l, a, b];
+ };
+
+ convert.lab.xyz = function (lab) {
+ var l = lab[0];
+ var a = lab[1];
+ var b = lab[2];
+ var x;
+ var y;
+ var z;
+ y = (l + 16) / 116;
+ x = a / 500 + y;
+ z = y - b / 200;
+ var y2 = Math.pow(y, 3);
+ var x2 = Math.pow(x, 3);
+ var z2 = Math.pow(z, 3);
+ y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
+ x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
+ z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
+ x *= 95.047;
+ y *= 100;
+ z *= 108.883;
+ return [x, y, z];
+ };
+
+ convert.lab.lch = function (lab) {
+ var l = lab[0];
+ var a = lab[1];
+ var b = lab[2];
+ var hr;
+ var h;
+ var c;
+ hr = Math.atan2(b, a);
+ h = hr * 360 / 2 / Math.PI;
+
+ if (h < 0) {
+ h += 360;
+ }
+
+ c = Math.sqrt(a * a + b * b);
+ return [l, c, h];
+ };
+
+ convert.lch.lab = function (lch) {
+ var l = lch[0];
+ var c = lch[1];
+ var h = lch[2];
+ var a;
+ var b;
+ var hr;
+ hr = h / 360 * 2 * Math.PI;
+ a = c * Math.cos(hr);
+ b = c * Math.sin(hr);
+ return [l, a, b];
+ };
+
+ convert.rgb.ansi16 = function (args) {
+ var r = args[0];
+ var g = args[1];
+ var b = args[2];
+ var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization
+
+ value = Math.round(value / 50);
+
+ if (value === 0) {
+ return 30;
+ }
+
+ var ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));
+
+ if (value === 2) {
+ ansi += 60;
+ }
+
+ return ansi;
+ };
+
+ convert.hsv.ansi16 = function (args) {
+ // optimization here; we already know the value and don't need to get
+ // it converted for us.
+ return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);
+ };
+
+ convert.rgb.ansi256 = function (args) {
+ var r = args[0];
+ var g = args[1];
+ var b = args[2]; // we use the extended greyscale palette here, with the exception of
+ // black and white. normal palette only has 4 greyscale shades.
+
+ if (r === g && g === b) {
+ if (r < 8) {
+ return 16;
+ }
+
+ if (r > 248) {
+ return 231;
+ }
+
+ return Math.round((r - 8) / 247 * 24) + 232;
+ }
+
+ var ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);
+ return ansi;
+ };
+
+ convert.ansi16.rgb = function (args) {
+ var color = args % 10; // handle greyscale
+
+ if (color === 0 || color === 7) {
+ if (args > 50) {
+ color += 3.5;
+ }
+
+ color = color / 10.5 * 255;
+ return [color, color, color];
+ }
+
+ var mult = (~~(args > 50) + 1) * 0.5;
+ var r = (color & 1) * mult * 255;
+ var g = (color >> 1 & 1) * mult * 255;
+ var b = (color >> 2 & 1) * mult * 255;
+ return [r, g, b];
+ };
+
+ convert.ansi256.rgb = function (args) {
+ // handle greyscale
+ if (args >= 232) {
+ var c = (args - 232) * 10 + 8;
+ return [c, c, c];
+ }
+
+ args -= 16;
+ var rem;
+ var r = Math.floor(args / 36) / 5 * 255;
+ var g = Math.floor((rem = args % 36) / 6) / 5 * 255;
+ var b = rem % 6 / 5 * 255;
+ return [r, g, b];
+ };
+
+ convert.rgb.hex = function (args) {
+ var integer = ((Math.round(args[0]) & 0xFF) << 16) + ((Math.round(args[1]) & 0xFF) << 8) + (Math.round(args[2]) & 0xFF);
+ var string = integer.toString(16).toUpperCase();
+ return '000000'.substring(string.length) + string;
+ };
+
+ convert.hex.rgb = function (args) {
+ var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
+
+ if (!match) {
+ return [0, 0, 0];
+ }
+
+ var colorString = match[0];
+
+ if (match[0].length === 3) {
+ colorString = colorString.split('').map(function (char) {
+ return char + char;
+ }).join('');
+ }
+
+ var integer = parseInt(colorString, 16);
+ var r = integer >> 16 & 0xFF;
+ var g = integer >> 8 & 0xFF;
+ var b = integer & 0xFF;
+ return [r, g, b];
+ };
+
+ convert.rgb.hcg = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var max = Math.max(Math.max(r, g), b);
+ var min = Math.min(Math.min(r, g), b);
+ var chroma = max - min;
+ var grayscale;
+ var hue;
+
+ if (chroma < 1) {
+ grayscale = min / (1 - chroma);
+ } else {
+ grayscale = 0;
+ }
+
+ if (chroma <= 0) {
+ hue = 0;
+ } else if (max === r) {
+ hue = (g - b) / chroma % 6;
+ } else if (max === g) {
+ hue = 2 + (b - r) / chroma;
+ } else {
+ hue = 4 + (r - g) / chroma + 4;
+ }
+
+ hue /= 6;
+ hue %= 1;
+ return [hue * 360, chroma * 100, grayscale * 100];
+ };
+
+ convert.hsl.hcg = function (hsl) {
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var c = 1;
+ var f = 0;
+
+ if (l < 0.5) {
+ c = 2.0 * s * l;
+ } else {
+ c = 2.0 * s * (1.0 - l);
+ }
+
+ if (c < 1.0) {
+ f = (l - 0.5 * c) / (1.0 - c);
+ }
+
+ return [hsl[0], c * 100, f * 100];
+ };
+
+ convert.hsv.hcg = function (hsv) {
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+ var c = s * v;
+ var f = 0;
+
+ if (c < 1.0) {
+ f = (v - c) / (1 - c);
+ }
+
+ return [hsv[0], c * 100, f * 100];
+ };
+
+ convert.hcg.rgb = function (hcg) {
+ var h = hcg[0] / 360;
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+
+ if (c === 0.0) {
+ return [g * 255, g * 255, g * 255];
+ }
+
+ var pure = [0, 0, 0];
+ var hi = h % 1 * 6;
+ var v = hi % 1;
+ var w = 1 - v;
+ var mg = 0;
+
+ switch (Math.floor(hi)) {
+ case 0:
+ pure[0] = 1;
+ pure[1] = v;
+ pure[2] = 0;
+ break;
+
+ case 1:
+ pure[0] = w;
+ pure[1] = 1;
+ pure[2] = 0;
+ break;
+
+ case 2:
+ pure[0] = 0;
+ pure[1] = 1;
+ pure[2] = v;
+ break;
+
+ case 3:
+ pure[0] = 0;
+ pure[1] = w;
+ pure[2] = 1;
+ break;
+
+ case 4:
+ pure[0] = v;
+ pure[1] = 0;
+ pure[2] = 1;
+ break;
+
+ default:
+ pure[0] = 1;
+ pure[1] = 0;
+ pure[2] = w;
+ }
+
+ mg = (1.0 - c) * g;
+ return [(c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255];
+ };
+
+ convert.hcg.hsv = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+ var v = c + g * (1.0 - c);
+ var f = 0;
+
+ if (v > 0.0) {
+ f = c / v;
+ }
+
+ return [hcg[0], f * 100, v * 100];
+ };
+
+ convert.hcg.hsl = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+ var l = g * (1.0 - c) + 0.5 * c;
+ var s = 0;
+
+ if (l > 0.0 && l < 0.5) {
+ s = c / (2 * l);
+ } else if (l >= 0.5 && l < 1.0) {
+ s = c / (2 * (1 - l));
+ }
+
+ return [hcg[0], s * 100, l * 100];
+ };
+
+ convert.hcg.hwb = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+ var v = c + g * (1.0 - c);
+ return [hcg[0], (v - c) * 100, (1 - v) * 100];
+ };
+
+ convert.hwb.hcg = function (hwb) {
+ var w = hwb[1] / 100;
+ var b = hwb[2] / 100;
+ var v = 1 - b;
+ var c = v - w;
+ var g = 0;
+
+ if (c < 1) {
+ g = (v - c) / (1 - c);
+ }
+
+ return [hwb[0], c * 100, g * 100];
+ };
+
+ convert.apple.rgb = function (apple) {
+ return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];
+ };
+
+ convert.rgb.apple = function (rgb) {
+ return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];
+ };
+
+ convert.gray.rgb = function (args) {
+ return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
+ };
+
+ convert.gray.hsl = convert.gray.hsv = function (args) {
+ return [0, 0, args[0]];
+ };
+
+ convert.gray.hwb = function (gray) {
+ return [0, 100, gray[0]];
+ };
+
+ convert.gray.cmyk = function (gray) {
+ return [0, 0, 0, gray[0]];
+ };
+
+ convert.gray.lab = function (gray) {
+ return [gray[0], 0, 0];
+ };
+
+ convert.gray.hex = function (gray) {
+ var val = Math.round(gray[0] / 100 * 255) & 0xFF;
+ var integer = (val << 16) + (val << 8) + val;
+ var string = integer.toString(16).toUpperCase();
+ return '000000'.substring(string.length) + string;
+ };
+
+ convert.rgb.gray = function (rgb) {
+ var val = (rgb[0] + rgb[1] + rgb[2]) / 3;
+ return [val / 255 * 100];
+ };
+});
+var conversions_1 = conversions.rgb;
+var conversions_2 = conversions.hsl;
+var conversions_3 = conversions.hsv;
+var conversions_4 = conversions.hwb;
+var conversions_5 = conversions.cmyk;
+var conversions_6 = conversions.xyz;
+var conversions_7 = conversions.lab;
+var conversions_8 = conversions.lch;
+var conversions_9 = conversions.hex;
+var conversions_10 = conversions.keyword;
+var conversions_11 = conversions.ansi16;
+var conversions_12 = conversions.ansi256;
+var conversions_13 = conversions.hcg;
+var conversions_14 = conversions.apple;
+var conversions_15 = conversions.gray;
+
+/*
+ this function routes a model to all other models.
+
+ all functions that are routed have a property `.conversion` attached
+ to the returned synthetic function. This property is an array
+ of strings, each with the steps in between the 'from' and 'to'
+ color models (inclusive).
+
+ conversions that are not possible simply are not included.
+*/
+// https://jsperf.com/object-keys-vs-for-in-with-closure/3
+
+var models = Object.keys(conversions);
+
+function buildGraph() {
+ var graph = {};
+
+ for (var len = models.length, i = 0; i < len; i++) {
+ graph[models[i]] = {
+ // http://jsperf.com/1-vs-infinity
+ // micro-opt, but this is simple.
+ distance: -1,
+ parent: null
+ };
+ }
+
+ return graph;
+} // https://en.wikipedia.org/wiki/Breadth-first_search
+
+
+function deriveBFS(fromModel) {
+ var graph = buildGraph();
+ var queue = [fromModel]; // unshift -> queue -> pop
+
+ graph[fromModel].distance = 0;
+
+ while (queue.length) {
+ var current = queue.pop();
+ var adjacents = Object.keys(conversions[current]);
+
+ for (var len = adjacents.length, i = 0; i < len; i++) {
+ var adjacent = adjacents[i];
+ var node = graph[adjacent];
+
+ if (node.distance === -1) {
+ node.distance = graph[current].distance + 1;
+ node.parent = current;
+ queue.unshift(adjacent);
+ }
+ }
+ }
+
+ return graph;
+}
+
+function link(from, to) {
+ return function (args) {
+ return to(from(args));
+ };
+}
+
+function wrapConversion(toModel, graph) {
+ var path = [graph[toModel].parent, toModel];
+ var fn = conversions[graph[toModel].parent][toModel];
+ var cur = graph[toModel].parent;
+
+ while (graph[cur].parent) {
+ path.unshift(graph[cur].parent);
+ fn = link(conversions[graph[cur].parent][cur], fn);
+ cur = graph[cur].parent;
+ }
+
+ fn.conversion = path;
+ return fn;
+}
+
+var route = function route(fromModel) {
+ var graph = deriveBFS(fromModel);
+ var conversion = {};
+ var models = Object.keys(graph);
+
+ for (var len = models.length, i = 0; i < len; i++) {
+ var toModel = models[i];
+ var node = graph[toModel];
+
+ if (node.parent === null) {
+ // no possible conversion, or this node is the source model.
+ continue;
+ }
+
+ conversion[toModel] = wrapConversion(toModel, graph);
+ }
+
+ return conversion;
+};
+
+var convert = {};
+var models$1 = Object.keys(conversions);
+
+function wrapRaw(fn) {
+ var wrappedFn = function wrappedFn(args) {
+ if (args === undefined || args === null) {
+ return args;
+ }
+
+ if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ }
+
+ return fn(args);
+ }; // preserve .conversion property if there is one
+
+
+ if ('conversion' in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
+
+ return wrappedFn;
+}
+
+function wrapRounded(fn) {
+ var wrappedFn = function wrappedFn(args) {
+ if (args === undefined || args === null) {
+ return args;
+ }
+
+ if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ }
+
+ var result = fn(args); // we're assuming the result is an array here.
+ // see notice in conversions.js; don't use box types
+ // in conversion functions.
+
+ if (typeof result === 'object') {
+ for (var len = result.length, i = 0; i < len; i++) {
+ result[i] = Math.round(result[i]);
+ }
+ }
+
+ return result;
+ }; // preserve .conversion property if there is one
+
+
+ if ('conversion' in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
+
+ return wrappedFn;
+}
+
+models$1.forEach(function (fromModel) {
+ convert[fromModel] = {};
+ Object.defineProperty(convert[fromModel], 'channels', {
+ value: conversions[fromModel].channels
+ });
+ Object.defineProperty(convert[fromModel], 'labels', {
+ value: conversions[fromModel].labels
+ });
+ var routes = route(fromModel);
+ var routeModels = Object.keys(routes);
+ routeModels.forEach(function (toModel) {
+ var fn = routes[toModel];
+ convert[fromModel][toModel] = wrapRounded(fn);
+ convert[fromModel][toModel].raw = wrapRaw(fn);
+ });
+});
+var colorConvert = convert;
+
+var ansiStyles = createCommonjsModule(function (module) {
+
+ var wrapAnsi16 = function wrapAnsi16(fn, offset) {
+ return function () {
+ var code = fn.apply(colorConvert, arguments);
+ return `\u001B[${code + offset}m`;
+ };
+ };
+
+ var wrapAnsi256 = function wrapAnsi256(fn, offset) {
+ return function () {
+ var code = fn.apply(colorConvert, arguments);
+ return `\u001B[${38 + offset};5;${code}m`;
+ };
+ };
+
+ var wrapAnsi16m = function wrapAnsi16m(fn, offset) {
+ return function () {
+ var rgb = fn.apply(colorConvert, arguments);
+ return `\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;
+ };
+ };
+
+ function assembleStyles() {
+ var codes = new Map();
+ var styles = {
+ modifier: {
+ reset: [0, 0],
+ // 21 isn't widely supported and 22 does the same thing
+ bold: [1, 22],
+ dim: [2, 22],
+ italic: [3, 23],
+ underline: [4, 24],
+ inverse: [7, 27],
+ hidden: [8, 28],
+ strikethrough: [9, 29]
+ },
+ color: {
+ black: [30, 39],
+ red: [31, 39],
+ green: [32, 39],
+ yellow: [33, 39],
+ blue: [34, 39],
+ magenta: [35, 39],
+ cyan: [36, 39],
+ white: [37, 39],
+ gray: [90, 39],
+ // Bright color
+ redBright: [91, 39],
+ greenBright: [92, 39],
+ yellowBright: [93, 39],
+ blueBright: [94, 39],
+ magentaBright: [95, 39],
+ cyanBright: [96, 39],
+ whiteBright: [97, 39]
+ },
+ bgColor: {
+ bgBlack: [40, 49],
+ bgRed: [41, 49],
+ bgGreen: [42, 49],
+ bgYellow: [43, 49],
+ bgBlue: [44, 49],
+ bgMagenta: [45, 49],
+ bgCyan: [46, 49],
+ bgWhite: [47, 49],
+ // Bright color
+ bgBlackBright: [100, 49],
+ bgRedBright: [101, 49],
+ bgGreenBright: [102, 49],
+ bgYellowBright: [103, 49],
+ bgBlueBright: [104, 49],
+ bgMagentaBright: [105, 49],
+ bgCyanBright: [106, 49],
+ bgWhiteBright: [107, 49]
+ }
+ }; // Fix humans
+
+ styles.color.grey = styles.color.gray;
+
+ for (var _i = 0, _Object$keys = Object.keys(styles); _i < _Object$keys.length; _i++) {
+ var groupName = _Object$keys[_i];
+ var group = styles[groupName];
+
+ for (var _i3 = 0, _Object$keys3 = Object.keys(group); _i3 < _Object$keys3.length; _i3++) {
+ var styleName = _Object$keys3[_i3];
+ var style = group[styleName];
+ styles[styleName] = {
+ open: `\u001B[${style[0]}m`,
+ close: `\u001B[${style[1]}m`
+ };
+ group[styleName] = styles[styleName];
+ codes.set(style[0], style[1]);
+ }
+
+ Object.defineProperty(styles, groupName, {
+ value: group,
+ enumerable: false
+ });
+ Object.defineProperty(styles, 'codes', {
+ value: codes,
+ enumerable: false
+ });
+ }
+
+ var ansi2ansi = function ansi2ansi(n) {
+ return n;
+ };
+
+ var rgb2rgb = function rgb2rgb(r, g, b) {
+ return [r, g, b];
+ };
+
+ styles.color.close = '\u001B[39m';
+ styles.bgColor.close = '\u001B[49m';
+ styles.color.ansi = {
+ ansi: wrapAnsi16(ansi2ansi, 0)
+ };
+ styles.color.ansi256 = {
+ ansi256: wrapAnsi256(ansi2ansi, 0)
+ };
+ styles.color.ansi16m = {
+ rgb: wrapAnsi16m(rgb2rgb, 0)
+ };
+ styles.bgColor.ansi = {
+ ansi: wrapAnsi16(ansi2ansi, 10)
+ };
+ styles.bgColor.ansi256 = {
+ ansi256: wrapAnsi256(ansi2ansi, 10)
+ };
+ styles.bgColor.ansi16m = {
+ rgb: wrapAnsi16m(rgb2rgb, 10)
+ };
+
+ for (var _i2 = 0, _Object$keys2 = Object.keys(colorConvert); _i2 < _Object$keys2.length; _i2++) {
+ var key = _Object$keys2[_i2];
+
+ if (typeof colorConvert[key] !== 'object') {
+ continue;
+ }
+
+ var suite = colorConvert[key];
+
+ if (key === 'ansi16') {
+ key = 'ansi';
+ }
+
+ if ('ansi16' in suite) {
+ styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);
+ styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);
+ }
+
+ if ('ansi256' in suite) {
+ styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);
+ styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);
+ }
+
+ if ('rgb' in suite) {
+ styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);
+ styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);
+ }
+ }
+
+ return styles;
+ } // Make the export immutable
+
+
+ Object.defineProperty(module, 'exports', {
+ enumerable: true,
+ get: assembleStyles
+ });
+});
+
+var hasFlag = function hasFlag(flag, argv) {
+ argv = argv || process.argv;
+ var prefix = flag.startsWith('-') ? '' : flag.length === 1 ? '-' : '--';
+ var pos = argv.indexOf(prefix + flag);
+ var terminatorPos = argv.indexOf('--');
+ return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);
+};
+
+var env = process.env;
+var forceColor;
+
+if (hasFlag('no-color') || hasFlag('no-colors') || hasFlag('color=false')) {
+ forceColor = false;
+} else if (hasFlag('color') || hasFlag('colors') || hasFlag('color=true') || hasFlag('color=always')) {
+ forceColor = true;
+}
+
+if ('FORCE_COLOR' in env) {
+ forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;
+}
+
+function translateLevel(level) {
+ if (level === 0) {
+ return false;
+ }
+
+ return {
+ level,
+ hasBasic: true,
+ has256: level >= 2,
+ has16m: level >= 3
+ };
+}
+
+function supportsColor(stream) {
+ if (forceColor === false) {
+ return 0;
+ }
+
+ if (hasFlag('color=16m') || hasFlag('color=full') || hasFlag('color=truecolor')) {
+ return 3;
+ }
+
+ if (hasFlag('color=256')) {
+ return 2;
+ }
+
+ if (stream && !stream.isTTY && forceColor !== true) {
+ return 0;
+ }
+
+ var min = forceColor ? 1 : 0;
+
+ if (process.platform === 'win32') {
+ // Node.js 7.5.0 is the first version of Node.js to include a patch to
+ // libuv that enables 256 color output on Windows. Anything earlier and it
+ // won't work. However, here we target Node.js 8 at minimum as it is an LTS
+ // release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows
+ // release that supports 256 colors. Windows 10 build 14931 is the first release
+ // that supports 16m/TrueColor.
+ var osRelease = os$1.release().split('.');
+
+ if (Number(process.versions.node.split('.')[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
+ return Number(osRelease[2]) >= 14931 ? 3 : 2;
+ }
+
+ return 1;
+ }
+
+ if ('CI' in env) {
+ if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(function (sign) {
+ return sign in env;
+ }) || env.CI_NAME === 'codeship') {
+ return 1;
+ }
+
+ return min;
+ }
+
+ if ('TEAMCITY_VERSION' in env) {
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;
+ }
+
+ if (env.COLORTERM === 'truecolor') {
+ return 3;
+ }
+
+ if ('TERM_PROGRAM' in env) {
+ var version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);
+
+ switch (env.TERM_PROGRAM) {
+ case 'iTerm.app':
+ return version >= 3 ? 3 : 2;
+
+ case 'Apple_Terminal':
+ return 2;
+ // No default
+ }
+ }
+
+ if (/-256(color)?$/i.test(env.TERM)) {
+ return 2;
+ }
+
+ if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {
+ return 1;
+ }
+
+ if ('COLORTERM' in env) {
+ return 1;
+ }
+
+ if (env.TERM === 'dumb') {
+ return min;
+ }
+
+ return min;
+}
+
+function getSupportLevel(stream) {
+ var level = supportsColor(stream);
+ return translateLevel(level);
+}
+
+var supportsColor_1 = {
+ supportsColor: getSupportLevel,
+ stdout: getSupportLevel(process.stdout),
+ stderr: getSupportLevel(process.stderr)
+};
+
+var TEMPLATE_REGEX = /(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi;
+var STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g;
+var STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/;
+var ESCAPE_REGEX = /\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi;
+var ESCAPES = new Map([['n', '\n'], ['r', '\r'], ['t', '\t'], ['b', '\b'], ['f', '\f'], ['v', '\v'], ['0', '\0'], ['\\', '\\'], ['e', '\u001B'], ['a', '\u0007']]);
+
+function unescape(c) {
+ if (c[0] === 'u' && c.length === 5 || c[0] === 'x' && c.length === 3) {
+ return String.fromCharCode(parseInt(c.slice(1), 16));
+ }
+
+ return ESCAPES.get(c) || c;
+}
+
+function parseArguments(name, args) {
+ var results = [];
+ var chunks = args.trim().split(/\s*,\s*/g);
+ var matches;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = chunks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var chunk = _step.value;
+
+ if (!isNaN(chunk)) {
+ results.push(Number(chunk));
+ } else if (matches = chunk.match(STRING_REGEX)) {
+ results.push(matches[2].replace(ESCAPE_REGEX, function (m, escape, chr) {
+ return escape ? unescape(escape) : chr;
+ }));
+ } else {
+ throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return results;
+}
+
+function parseStyle(style) {
+ STYLE_REGEX.lastIndex = 0;
+ var results = [];
+ var matches;
+
+ while ((matches = STYLE_REGEX.exec(style)) !== null) {
+ var name = matches[1];
+
+ if (matches[2]) {
+ var args = parseArguments(name, matches[2]);
+ results.push([name].concat(args));
+ } else {
+ results.push([name]);
+ }
+ }
+
+ return results;
+}
+
+function buildStyle(chalk, styles) {
+ var enabled = {};
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = styles[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var layer = _step2.value;
+ var _iteratorNormalCompletion3 = true;
+ var _didIteratorError3 = false;
+ var _iteratorError3 = undefined;
+
+ try {
+ for (var _iterator3 = layer.styles[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
+ var style = _step3.value;
+ enabled[style[0]] = layer.inverse ? null : style.slice(1);
+ }
+ } catch (err) {
+ _didIteratorError3 = true;
+ _iteratorError3 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
+ _iterator3.return();
+ }
+ } finally {
+ if (_didIteratorError3) {
+ throw _iteratorError3;
+ }
+ }
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ var current = chalk;
+
+ for (var _i = 0, _Object$keys = Object.keys(enabled); _i < _Object$keys.length; _i++) {
+ var styleName = _Object$keys[_i];
+
+ if (Array.isArray(enabled[styleName])) {
+ if (!(styleName in current)) {
+ throw new Error(`Unknown Chalk style: ${styleName}`);
+ }
+
+ if (enabled[styleName].length > 0) {
+ current = current[styleName].apply(current, enabled[styleName]);
+ } else {
+ current = current[styleName];
+ }
+ }
+ }
+
+ return current;
+}
+
+var templates = function templates(chalk, tmp) {
+ var styles = [];
+ var chunks = [];
+ var chunk = []; // eslint-disable-next-line max-params
+
+ tmp.replace(TEMPLATE_REGEX, function (m, escapeChar, inverse, style, close, chr) {
+ if (escapeChar) {
+ chunk.push(unescape(escapeChar));
+ } else if (style) {
+ var str = chunk.join('');
+ chunk = [];
+ chunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));
+ styles.push({
+ inverse,
+ styles: parseStyle(style)
+ });
+ } else if (close) {
+ if (styles.length === 0) {
+ throw new Error('Found extraneous } in Chalk template literal');
+ }
+
+ chunks.push(buildStyle(chalk, styles)(chunk.join('')));
+ chunk = [];
+ styles.pop();
+ } else {
+ chunk.push(chr);
+ }
+ });
+ chunks.push(chunk.join(''));
+
+ if (styles.length > 0) {
+ var errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\`}\`)`;
+ throw new Error(errMsg);
+ }
+
+ return chunks.join('');
+};
+
+var chalk = createCommonjsModule(function (module) {
+
+ var stdoutColor = supportsColor_1.stdout;
+ var isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); // `supportsColor.level` → `ansiStyles.color[name]` mapping
+
+ var levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m']; // `color-convert` models to exclude from the Chalk API due to conflicts and such
+
+ var skipModels = new Set(['gray']);
+ var styles = Object.create(null);
+
+ function applyOptions(obj, options) {
+ options = options || {}; // Detect level if not set manually
+
+ var scLevel = stdoutColor ? stdoutColor.level : 0;
+ obj.level = options.level === undefined ? scLevel : options.level;
+ obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;
+ }
+
+ function Chalk(options) {
+ // We check for this.template here since calling `chalk.constructor()`
+ // by itself will have a `this` of a previously constructed chalk object
+ if (!this || !(this instanceof Chalk) || this.template) {
+ var _chalk = {};
+ applyOptions(_chalk, options);
+
+ _chalk.template = function () {
+ var args = [].slice.call(arguments);
+ return chalkTag.apply(null, [_chalk.template].concat(args));
+ };
+
+ Object.setPrototypeOf(_chalk, Chalk.prototype);
+ Object.setPrototypeOf(_chalk.template, _chalk);
+ _chalk.template.constructor = Chalk;
+ return _chalk.template;
+ }
+
+ applyOptions(this, options);
+ } // Use bright blue on Windows as the normal blue color is illegible
+
+
+ if (isSimpleWindowsTerm) {
+ ansiStyles.blue.open = '\u001B[94m';
+ }
+
+ var _loop = function _loop() {
+ var key = _Object$keys[_i];
+ ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
+ styles[key] = {
+ get() {
+ var codes = ansiStyles[key];
+ return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);
+ }
+
+ };
+ };
+
+ for (var _i = 0, _Object$keys = Object.keys(ansiStyles); _i < _Object$keys.length; _i++) {
+ _loop();
+ }
+
+ styles.visible = {
+ get() {
+ return build.call(this, this._styles || [], true, 'visible');
+ }
+
+ };
+ ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');
+
+ var _loop2 = function _loop2() {
+ var model = _Object$keys2[_i2];
+
+ if (skipModels.has(model)) {
+ return "continue";
+ }
+
+ styles[model] = {
+ get() {
+ var level = this.level;
+ return function () {
+ var open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);
+ var codes = {
+ open,
+ close: ansiStyles.color.close,
+ closeRe: ansiStyles.color.closeRe
+ };
+ return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
+ };
+ }
+
+ };
+ };
+
+ for (var _i2 = 0, _Object$keys2 = Object.keys(ansiStyles.color.ansi); _i2 < _Object$keys2.length; _i2++) {
+ var _ret = _loop2();
+
+ if (_ret === "continue") continue;
+ }
+
+ ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');
+
+ var _loop3 = function _loop3() {
+ var model = _Object$keys3[_i3];
+
+ if (skipModels.has(model)) {
+ return "continue";
+ }
+
+ var bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);
+ styles[bgModel] = {
+ get() {
+ var level = this.level;
+ return function () {
+ var open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);
+ var codes = {
+ open,
+ close: ansiStyles.bgColor.close,
+ closeRe: ansiStyles.bgColor.closeRe
+ };
+ return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
+ };
+ }
+
+ };
+ };
+
+ for (var _i3 = 0, _Object$keys3 = Object.keys(ansiStyles.bgColor.ansi); _i3 < _Object$keys3.length; _i3++) {
+ var _ret2 = _loop3();
+
+ if (_ret2 === "continue") continue;
+ }
+
+ var proto = Object.defineProperties(function () {}, styles);
+
+ function build(_styles, _empty, key) {
+ var builder = function builder() {
+ return applyStyle.apply(builder, arguments);
+ };
+
+ builder._styles = _styles;
+ builder._empty = _empty;
+ var self = this;
+ Object.defineProperty(builder, 'level', {
+ enumerable: true,
+
+ get() {
+ return self.level;
+ },
+
+ set(level) {
+ self.level = level;
+ }
+
+ });
+ Object.defineProperty(builder, 'enabled', {
+ enumerable: true,
+
+ get() {
+ return self.enabled;
+ },
+
+ set(enabled) {
+ self.enabled = enabled;
+ }
+
+ }); // See below for fix regarding invisible grey/dim combination on Windows
+
+ builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey'; // `__proto__` is used because we must return a function, but there is
+ // no way to create a function with a different prototype
+
+ builder.__proto__ = proto; // eslint-disable-line no-proto
+
+ return builder;
+ }
+
+ function applyStyle() {
+ // Support varags, but simply cast to string in case there's only one arg
+ var args = arguments;
+ var argsLen = args.length;
+ var str = String(arguments[0]);
+
+ if (argsLen === 0) {
+ return '';
+ }
+
+ if (argsLen > 1) {
+ // Don't slice `arguments`, it prevents V8 optimizations
+ for (var a = 1; a < argsLen; a++) {
+ str += ' ' + args[a];
+ }
+ }
+
+ if (!this.enabled || this.level <= 0 || !str) {
+ return this._empty ? '' : str;
+ } // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,
+ // see https://github.com/chalk/chalk/issues/58
+ // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.
+
+
+ var originalDim = ansiStyles.dim.open;
+
+ if (isSimpleWindowsTerm && this.hasGrey) {
+ ansiStyles.dim.open = '';
+ }
+
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = this._styles.slice().reverse()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var code = _step.value;
+ // Replace any instances already present with a re-opening code
+ // otherwise only the part of the string until said closing code
+ // will be colored, and the rest will simply be 'plain'.
+ str = code.open + str.replace(code.closeRe, code.open) + code.close; // Close the styling before a linebreak and reopen
+ // after next line to fix a bleed issue on macOS
+ // https://github.com/chalk/chalk/pull/92
+
+ str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`);
+ } // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue
+
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ ansiStyles.dim.open = originalDim;
+ return str;
+ }
+
+ function chalkTag(chalk, strings) {
+ if (!Array.isArray(strings)) {
+ // If chalk() was called by itself or with a string,
+ // return the string itself as a string.
+ return [].slice.call(arguments, 1).join(' ');
+ }
+
+ var args = [].slice.call(arguments, 2);
+ var parts = [strings.raw[0]];
+
+ for (var i = 1; i < strings.length; i++) {
+ parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&'));
+ parts.push(String(strings.raw[i]));
+ }
+
+ return templates(chalk, parts.join(''));
+ }
+
+ Object.defineProperties(Chalk.prototype, styles);
+ module.exports = Chalk(); // eslint-disable-line new-cap
+
+ module.exports.supportsColor = stdoutColor;
+ module.exports.default = module.exports; // For TypeScript
+});
+var chalk_1 = chalk.supportsColor;
+
+var common = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ exports.commonDeprecatedHandler = function (keyOrPair, redirectTo, _ref) {
+ var descriptor = _ref.descriptor;
+ var messages = [`${chalk.default.yellow(typeof keyOrPair === 'string' ? descriptor.key(keyOrPair) : descriptor.pair(keyOrPair))} is deprecated`];
+
+ if (redirectTo) {
+ messages.push(`we now treat it as ${chalk.default.blue(typeof redirectTo === 'string' ? descriptor.key(redirectTo) : descriptor.pair(redirectTo))}`);
+ }
+
+ return messages.join('; ') + '.';
+ };
+});
+unwrapExports(common);
+var common_1 = common.commonDeprecatedHandler;
+
+var deprecated = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_es6.__exportStar(common, exports);
+});
+unwrapExports(deprecated);
+
+var common$1 = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ exports.commonInvalidHandler = function (key, value, utils) {
+ return [`Invalid ${chalk.default.red(utils.descriptor.key(key))} value.`, `Expected ${chalk.default.blue(utils.schemas[key].expected(utils))},`, `but received ${chalk.default.red(utils.descriptor.value(value))}.`].join(' ');
+ };
+});
+unwrapExports(common$1);
+var common_1$1 = common$1.commonInvalidHandler;
+
+var invalid = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_es6.__exportStar(common$1, exports);
+});
+unwrapExports(invalid);
+
+/* eslint-disable no-nested-ternary */
+
+var arr = [];
+var charCodeCache = [];
+
+var leven = function leven(a, b) {
+ if (a === b) {
+ return 0;
+ }
+
+ var swap = a; // Swapping the strings if `a` is longer than `b` so we know which one is the
+ // shortest & which one is the longest
+
+ if (a.length > b.length) {
+ a = b;
+ b = swap;
+ }
+
+ var aLen = a.length;
+ var bLen = b.length;
+
+ if (aLen === 0) {
+ return bLen;
+ }
+
+ if (bLen === 0) {
+ return aLen;
+ } // Performing suffix trimming:
+ // We can linearly drop suffix common to both strings since they
+ // don't increase distance at all
+ // Note: `~-` is the bitwise way to perform a `- 1` operation
+
+
+ while (aLen > 0 && a.charCodeAt(~-aLen) === b.charCodeAt(~-bLen)) {
+ aLen--;
+ bLen--;
+ }
+
+ if (aLen === 0) {
+ return bLen;
+ } // Performing prefix trimming
+ // We can linearly drop prefix common to both strings since they
+ // don't increase distance at all
+
+
+ var start = 0;
+
+ while (start < aLen && a.charCodeAt(start) === b.charCodeAt(start)) {
+ start++;
+ }
+
+ aLen -= start;
+ bLen -= start;
+
+ if (aLen === 0) {
+ return bLen;
+ }
+
+ var bCharCode;
+ var ret;
+ var tmp;
+ var tmp2;
+ var i = 0;
+ var j = 0;
+
+ while (i < aLen) {
+ charCodeCache[start + i] = a.charCodeAt(start + i);
+ arr[i] = ++i;
+ }
+
+ while (j < bLen) {
+ bCharCode = b.charCodeAt(start + j);
+ tmp = j++;
+ ret = j;
+
+ for (i = 0; i < aLen; i++) {
+ tmp2 = bCharCode === charCodeCache[start + i] ? tmp : tmp + 1;
+ tmp = arr[i];
+ ret = arr[i] = tmp > ret ? tmp2 > ret ? ret + 1 : tmp2 : tmp2 > tmp ? tmp + 1 : tmp2;
+ }
+ }
+
+ return ret;
+};
+
+var leven_1 = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ exports.levenUnknownHandler = function (key, value, _ref) {
+ var descriptor = _ref.descriptor,
+ logger = _ref.logger,
+ schemas = _ref.schemas;
+ var messages = [`Ignored unknown option ${chalk.default.yellow(descriptor.pair({
+ key,
+ value
+ }))}.`];
+ var suggestion = Object.keys(schemas).sort().find(function (knownKey) {
+ return leven(key, knownKey) < 3;
+ });
+
+ if (suggestion) {
+ messages.push(`Did you mean ${chalk.default.blue(descriptor.key(suggestion))}?`);
+ }
+
+ logger.warn(messages.join(' '));
+ };
+});
+unwrapExports(leven_1);
+var leven_2 = leven_1.levenUnknownHandler;
+
+var unknown = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_es6.__exportStar(leven_1, exports);
+});
+unwrapExports(unknown);
+
+var handlers = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_es6.__exportStar(deprecated, exports);
+
+ tslib_es6.__exportStar(invalid, exports);
+
+ tslib_es6.__exportStar(unknown, exports);
+});
+unwrapExports(handlers);
+
+var schema = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ var HANDLER_KEYS = ['default', 'expected', 'validate', 'deprecated', 'forward', 'redirect', 'overlap', 'preprocess', 'postprocess'];
+
+ function createSchema(SchemaConstructor, parameters) {
+ var schema = new SchemaConstructor(parameters);
+ var subSchema = Object.create(schema);
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = HANDLER_KEYS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var handlerKey = _step.value;
+
+ if (handlerKey in parameters) {
+ subSchema[handlerKey] = normalizeHandler(parameters[handlerKey], schema, Schema.prototype[handlerKey].length);
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return subSchema;
+ }
+
+ exports.createSchema = createSchema;
+
+ var Schema =
+ /*#__PURE__*/
+ function () {
+ function Schema(parameters) {
+ _classCallCheck(this, Schema);
+
+ this.name = parameters.name;
+ }
+
+ _createClass(Schema, [{
+ key: "default",
+ value: function _default(_utils) {
+ return undefined;
+ } // istanbul ignore next: this is actually an abstract method but we need a placeholder to get `function.length`
+
+ }, {
+ key: "expected",
+ value: function expected(_utils) {
+ return 'nothing';
+ } // istanbul ignore next: this is actually an abstract method but we need a placeholder to get `function.length`
+
+ }, {
+ key: "validate",
+ value: function validate(_value, _utils) {
+ return false;
+ }
+ }, {
+ key: "deprecated",
+ value: function deprecated(_value, _utils) {
+ return false;
+ }
+ }, {
+ key: "forward",
+ value: function forward(_value, _utils) {
+ return undefined;
+ }
+ }, {
+ key: "redirect",
+ value: function redirect(_value, _utils) {
+ return undefined;
+ }
+ }, {
+ key: "overlap",
+ value: function overlap(currentValue, _newValue, _utils) {
+ return currentValue;
+ }
+ }, {
+ key: "preprocess",
+ value: function preprocess(value, _utils) {
+ return value;
+ }
+ }, {
+ key: "postprocess",
+ value: function postprocess(value, _utils) {
+ return value;
+ }
+ }], [{
+ key: "create",
+ value: function create(parameters) {
+ // @ts-ignore: https://github.com/Microsoft/TypeScript/issues/5863
+ return createSchema(this, parameters);
+ }
+ }]);
+
+ return Schema;
+ }();
+
+ exports.Schema = Schema;
+
+ function normalizeHandler(handler, superSchema, handlerArgumentsLength) {
+ return typeof handler === 'function' ? function () {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ return handler.apply(void 0, _toConsumableArray$1(args.slice(0, handlerArgumentsLength - 1)).concat([superSchema], _toConsumableArray$1(args.slice(handlerArgumentsLength - 1))));
+ } : function () {
+ return handler;
+ };
+ }
+});
+unwrapExports(schema);
+var schema_1 = schema.createSchema;
+var schema_2 = schema.Schema;
+
+var alias = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var AliasSchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(AliasSchema, _schema_1$Schema);
+
+ function AliasSchema(parameters) {
+ var _this;
+
+ _classCallCheck(this, AliasSchema);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(AliasSchema).call(this, parameters));
+ _this._sourceName = parameters.sourceName;
+ return _this;
+ }
+
+ _createClass(AliasSchema, [{
+ key: "expected",
+ value: function expected(utils) {
+ return utils.schemas[this._sourceName].expected(utils);
+ }
+ }, {
+ key: "validate",
+ value: function validate(value, utils) {
+ return utils.schemas[this._sourceName].validate(value, utils);
+ }
+ }, {
+ key: "redirect",
+ value: function redirect(_value, _utils) {
+ return this._sourceName;
+ }
+ }]);
+
+ return AliasSchema;
+ }(schema.Schema);
+
+ exports.AliasSchema = AliasSchema;
+});
+unwrapExports(alias);
+var alias_1 = alias.AliasSchema;
+
+var any = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var AnySchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(AnySchema, _schema_1$Schema);
+
+ function AnySchema() {
+ _classCallCheck(this, AnySchema);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(AnySchema).apply(this, arguments));
+ }
+
+ _createClass(AnySchema, [{
+ key: "expected",
+ value: function expected() {
+ return 'anything';
+ }
+ }, {
+ key: "validate",
+ value: function validate() {
+ return true;
+ }
+ }]);
+
+ return AnySchema;
+ }(schema.Schema);
+
+ exports.AnySchema = AnySchema;
+});
+unwrapExports(any);
+var any_1 = any.AnySchema;
+
+var array = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var ArraySchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(ArraySchema, _schema_1$Schema);
+
+ function ArraySchema(_a) {
+ var _this;
+
+ _classCallCheck(this, ArraySchema);
+
+ var valueSchema = _a.valueSchema,
+ _a$name = _a.name,
+ name = _a$name === void 0 ? valueSchema.name : _a$name,
+ handlers = tslib_es6.__rest(_a, ["valueSchema", "name"]);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(ArraySchema).call(this, Object.assign({}, handlers, {
+ name
+ })));
+ _this._valueSchema = valueSchema;
+ return _this;
+ }
+
+ _createClass(ArraySchema, [{
+ key: "expected",
+ value: function expected(utils) {
+ return `an array of ${this._valueSchema.expected(utils)}`;
+ }
+ }, {
+ key: "validate",
+ value: function validate(value, utils) {
+ if (!Array.isArray(value)) {
+ return false;
+ }
+
+ var invalidValues = [];
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = value[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var subValue = _step.value;
+ var subValidateResult = utils.normalizeValidateResult(this._valueSchema.validate(subValue, utils), subValue);
+
+ if (subValidateResult !== true) {
+ invalidValues.push(subValidateResult.value);
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return invalidValues.length === 0 ? true : {
+ value: invalidValues
+ };
+ }
+ }, {
+ key: "deprecated",
+ value: function deprecated(value, utils) {
+ var deprecatedResult = [];
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = value[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var subValue = _step2.value;
+ var subDeprecatedResult = utils.normalizeDeprecatedResult(this._valueSchema.deprecated(subValue, utils), subValue);
+
+ if (subDeprecatedResult !== false) {
+ deprecatedResult.push.apply(deprecatedResult, _toConsumableArray$1(subDeprecatedResult.map(function (_ref) {
+ var deprecatedValue = _ref.value;
+ return {
+ value: [deprecatedValue]
+ };
+ })));
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return deprecatedResult;
+ }
+ }, {
+ key: "forward",
+ value: function forward(value, utils) {
+ var forwardResult = [];
+ var _iteratorNormalCompletion3 = true;
+ var _didIteratorError3 = false;
+ var _iteratorError3 = undefined;
+
+ try {
+ for (var _iterator3 = value[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
+ var subValue = _step3.value;
+ var subForwardResult = utils.normalizeForwardResult(this._valueSchema.forward(subValue, utils), subValue);
+ forwardResult.push.apply(forwardResult, _toConsumableArray$1(subForwardResult.map(wrapTransferResult)));
+ }
+ } catch (err) {
+ _didIteratorError3 = true;
+ _iteratorError3 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
+ _iterator3.return();
+ }
+ } finally {
+ if (_didIteratorError3) {
+ throw _iteratorError3;
+ }
+ }
+ }
+
+ return forwardResult;
+ }
+ }, {
+ key: "redirect",
+ value: function redirect(value, utils) {
+ var remain = [];
+ var redirect = [];
+ var _iteratorNormalCompletion4 = true;
+ var _didIteratorError4 = false;
+ var _iteratorError4 = undefined;
+
+ try {
+ for (var _iterator4 = value[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
+ var subValue = _step4.value;
+ var subRedirectResult = utils.normalizeRedirectResult(this._valueSchema.redirect(subValue, utils), subValue);
+
+ if ('remain' in subRedirectResult) {
+ remain.push(subRedirectResult.remain);
+ }
+
+ redirect.push.apply(redirect, _toConsumableArray$1(subRedirectResult.redirect.map(wrapTransferResult)));
+ }
+ } catch (err) {
+ _didIteratorError4 = true;
+ _iteratorError4 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
+ _iterator4.return();
+ }
+ } finally {
+ if (_didIteratorError4) {
+ throw _iteratorError4;
+ }
+ }
+ }
+
+ return remain.length === 0 ? {
+ redirect
+ } : {
+ redirect,
+ remain
+ };
+ }
+ }, {
+ key: "overlap",
+ value: function overlap(currentValue, newValue) {
+ return currentValue.concat(newValue);
+ }
+ }]);
+
+ return ArraySchema;
+ }(schema.Schema);
+
+ exports.ArraySchema = ArraySchema;
+
+ function wrapTransferResult(_ref2) {
+ var from = _ref2.from,
+ to = _ref2.to;
+ return {
+ from: [from],
+ to
+ };
+ }
+});
+unwrapExports(array);
+var array_1 = array.ArraySchema;
+
+var boolean_1 = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var BooleanSchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(BooleanSchema, _schema_1$Schema);
+
+ function BooleanSchema() {
+ _classCallCheck(this, BooleanSchema);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(BooleanSchema).apply(this, arguments));
+ }
+
+ _createClass(BooleanSchema, [{
+ key: "expected",
+ value: function expected() {
+ return 'true or false';
+ }
+ }, {
+ key: "validate",
+ value: function validate(value) {
+ return typeof value === 'boolean';
+ }
+ }]);
+
+ return BooleanSchema;
+ }(schema.Schema);
+
+ exports.BooleanSchema = BooleanSchema;
+});
+unwrapExports(boolean_1);
+var boolean_2 = boolean_1.BooleanSchema;
+
+var utils = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ function recordFromArray(array, mainKey) {
+ var record = Object.create(null);
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = array[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var value = _step.value;
+ var key = value[mainKey]; // istanbul ignore next
+
+ if (record[key]) {
+ throw new Error(`Duplicate ${mainKey} ${JSON.stringify(key)}`);
+ } // @ts-ignore
+
+
+ record[key] = value;
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return record;
+ }
+
+ exports.recordFromArray = recordFromArray;
+
+ function mapFromArray(array, mainKey) {
+ var map = new Map();
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = array[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var value = _step2.value;
+ var key = value[mainKey]; // istanbul ignore next
+
+ if (map.has(key)) {
+ throw new Error(`Duplicate ${mainKey} ${JSON.stringify(key)}`);
+ }
+
+ map.set(key, value);
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return map;
+ }
+
+ exports.mapFromArray = mapFromArray;
+
+ function createAutoChecklist() {
+ var map = Object.create(null);
+ return function (id) {
+ var idString = JSON.stringify(id);
+
+ if (map[idString]) {
+ return true;
+ }
+
+ map[idString] = true;
+ return false;
+ };
+ }
+
+ exports.createAutoChecklist = createAutoChecklist;
+
+ function partition(array, predicate) {
+ var trueArray = [];
+ var falseArray = [];
+ var _iteratorNormalCompletion3 = true;
+ var _didIteratorError3 = false;
+ var _iteratorError3 = undefined;
+
+ try {
+ for (var _iterator3 = array[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
+ var value = _step3.value;
+
+ if (predicate(value)) {
+ trueArray.push(value);
+ } else {
+ falseArray.push(value);
+ }
+ }
+ } catch (err) {
+ _didIteratorError3 = true;
+ _iteratorError3 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
+ _iterator3.return();
+ }
+ } finally {
+ if (_didIteratorError3) {
+ throw _iteratorError3;
+ }
+ }
+ }
+
+ return [trueArray, falseArray];
+ }
+
+ exports.partition = partition;
+
+ function isInt(value) {
+ return value === Math.floor(value);
+ }
+
+ exports.isInt = isInt;
+
+ function comparePrimitive(a, b) {
+ if (a === b) {
+ return 0;
+ }
+
+ var typeofA = typeof a;
+ var typeofB = typeof b;
+ var orders = ['undefined', 'object', 'boolean', 'number', 'string'];
+
+ if (typeofA !== typeofB) {
+ return orders.indexOf(typeofA) - orders.indexOf(typeofB);
+ }
+
+ if (typeofA !== 'string') {
+ return Number(a) - Number(b);
+ }
+
+ return a.localeCompare(b);
+ }
+
+ exports.comparePrimitive = comparePrimitive;
+
+ function normalizeDefaultResult(result) {
+ return result === undefined ? {} : result;
+ }
+
+ exports.normalizeDefaultResult = normalizeDefaultResult;
+
+ function normalizeValidateResult(result, value) {
+ return result === true ? true : result === false ? {
+ value
+ } : result;
+ }
+
+ exports.normalizeValidateResult = normalizeValidateResult;
+
+ function normalizeDeprecatedResult(result, value) {
+ var doNotNormalizeTrue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+ return result === false ? false : result === true ? doNotNormalizeTrue ? true : [{
+ value
+ }] : 'value' in result ? [result] : result.length === 0 ? false : result;
+ }
+
+ exports.normalizeDeprecatedResult = normalizeDeprecatedResult;
+
+ function normalizeTransferResult(result, value) {
+ return typeof result === 'string' || 'key' in result ? {
+ from: value,
+ to: result
+ } : 'from' in result ? {
+ from: result.from,
+ to: result.to
+ } : {
+ from: value,
+ to: result.to
+ };
+ }
+
+ exports.normalizeTransferResult = normalizeTransferResult;
+
+ function normalizeForwardResult(result, value) {
+ return result === undefined ? [] : Array.isArray(result) ? result.map(function (transferResult) {
+ return normalizeTransferResult(transferResult, value);
+ }) : [normalizeTransferResult(result, value)];
+ }
+
+ exports.normalizeForwardResult = normalizeForwardResult;
+
+ function normalizeRedirectResult(result, value) {
+ var redirect = normalizeForwardResult(typeof result === 'object' && 'redirect' in result ? result.redirect : result, value);
+ return redirect.length === 0 ? {
+ remain: value,
+ redirect
+ } : typeof result === 'object' && 'remain' in result ? {
+ remain: result.remain,
+ redirect
+ } : {
+ redirect
+ };
+ }
+
+ exports.normalizeRedirectResult = normalizeRedirectResult;
+});
+unwrapExports(utils);
+var utils_1 = utils.recordFromArray;
+var utils_2 = utils.mapFromArray;
+var utils_3 = utils.createAutoChecklist;
+var utils_4 = utils.partition;
+var utils_5 = utils.isInt;
+var utils_6 = utils.comparePrimitive;
+var utils_7 = utils.normalizeDefaultResult;
+var utils_8 = utils.normalizeValidateResult;
+var utils_9 = utils.normalizeDeprecatedResult;
+var utils_10 = utils.normalizeTransferResult;
+var utils_11 = utils.normalizeForwardResult;
+var utils_12 = utils.normalizeRedirectResult;
+
+var choice = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var ChoiceSchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(ChoiceSchema, _schema_1$Schema);
+
+ function ChoiceSchema(parameters) {
+ var _this;
+
+ _classCallCheck(this, ChoiceSchema);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(ChoiceSchema).call(this, parameters));
+ _this._choices = utils.mapFromArray(parameters.choices.map(function (choice) {
+ return choice && typeof choice === 'object' ? choice : {
+ value: choice
+ };
+ }), 'value');
+ return _this;
+ }
+
+ _createClass(ChoiceSchema, [{
+ key: "expected",
+ value: function expected(_ref) {
+ var _this2 = this;
+
+ var descriptor = _ref.descriptor;
+ var choiceValues = Array.from(this._choices.keys()).map(function (value) {
+ return _this2._choices.get(value);
+ }).filter(function (choiceInfo) {
+ return !choiceInfo.deprecated;
+ }).map(function (choiceInfo) {
+ return choiceInfo.value;
+ }).sort(utils.comparePrimitive).map(descriptor.value);
+ var head = choiceValues.slice(0, -2);
+ var tail = choiceValues.slice(-2);
+ return head.concat(tail.join(' or ')).join(', ');
+ }
+ }, {
+ key: "validate",
+ value: function validate(value) {
+ return this._choices.has(value);
+ }
+ }, {
+ key: "deprecated",
+ value: function deprecated(value) {
+ var choiceInfo = this._choices.get(value);
+
+ return choiceInfo && choiceInfo.deprecated ? {
+ value
+ } : false;
+ }
+ }, {
+ key: "forward",
+ value: function forward(value) {
+ var choiceInfo = this._choices.get(value);
+
+ return choiceInfo ? choiceInfo.forward : undefined;
+ }
+ }, {
+ key: "redirect",
+ value: function redirect(value) {
+ var choiceInfo = this._choices.get(value);
+
+ return choiceInfo ? choiceInfo.redirect : undefined;
+ }
+ }]);
+
+ return ChoiceSchema;
+ }(schema.Schema);
+
+ exports.ChoiceSchema = ChoiceSchema;
+});
+unwrapExports(choice);
+var choice_1 = choice.ChoiceSchema;
+
+var number = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var NumberSchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(NumberSchema, _schema_1$Schema);
+
+ function NumberSchema() {
+ _classCallCheck(this, NumberSchema);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(NumberSchema).apply(this, arguments));
+ }
+
+ _createClass(NumberSchema, [{
+ key: "expected",
+ value: function expected() {
+ return 'a number';
+ }
+ }, {
+ key: "validate",
+ value: function validate(value, _utils) {
+ return typeof value === 'number';
+ }
+ }]);
+
+ return NumberSchema;
+ }(schema.Schema);
+
+ exports.NumberSchema = NumberSchema;
+});
+unwrapExports(number);
+var number_1 = number.NumberSchema;
+
+var integer = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var IntegerSchema =
+ /*#__PURE__*/
+ function (_number_1$NumberSchem) {
+ _inherits(IntegerSchema, _number_1$NumberSchem);
+
+ function IntegerSchema() {
+ _classCallCheck(this, IntegerSchema);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(IntegerSchema).apply(this, arguments));
+ }
+
+ _createClass(IntegerSchema, [{
+ key: "expected",
+ value: function expected() {
+ return 'an integer';
+ }
+ }, {
+ key: "validate",
+ value: function validate(value, utils$1) {
+ return utils$1.normalizeValidateResult(_get(_getPrototypeOf(IntegerSchema.prototype), "validate", this).call(this, value, utils$1), value) === true && utils.isInt(value);
+ }
+ }]);
+
+ return IntegerSchema;
+ }(number.NumberSchema);
+
+ exports.IntegerSchema = IntegerSchema;
+});
+unwrapExports(integer);
+var integer_1 = integer.IntegerSchema;
+
+var string = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var StringSchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(StringSchema, _schema_1$Schema);
+
+ function StringSchema() {
+ _classCallCheck(this, StringSchema);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(StringSchema).apply(this, arguments));
+ }
+
+ _createClass(StringSchema, [{
+ key: "expected",
+ value: function expected() {
+ return 'a string';
+ }
+ }, {
+ key: "validate",
+ value: function validate(value) {
+ return typeof value === 'string';
+ }
+ }]);
+
+ return StringSchema;
+ }(schema.Schema);
+
+ exports.StringSchema = StringSchema;
+});
+unwrapExports(string);
+var string_1 = string.StringSchema;
+
+var schemas = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_es6.__exportStar(alias, exports);
+
+ tslib_es6.__exportStar(any, exports);
+
+ tslib_es6.__exportStar(array, exports);
+
+ tslib_es6.__exportStar(boolean_1, exports);
+
+ tslib_es6.__exportStar(choice, exports);
+
+ tslib_es6.__exportStar(integer, exports);
+
+ tslib_es6.__exportStar(number, exports);
+
+ tslib_es6.__exportStar(string, exports);
+});
+unwrapExports(schemas);
+
+var defaults = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.defaultDescriptor = api.apiDescriptor;
+ exports.defaultUnknownHandler = leven_1.levenUnknownHandler;
+ exports.defaultInvalidHandler = invalid.commonInvalidHandler;
+ exports.defaultDeprecatedHandler = common.commonDeprecatedHandler;
+});
+unwrapExports(defaults);
+var defaults_1 = defaults.defaultDescriptor;
+var defaults_2 = defaults.defaultUnknownHandler;
+var defaults_3 = defaults.defaultInvalidHandler;
+var defaults_4 = defaults.defaultDeprecatedHandler;
+
+var normalize = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ exports.normalize = function (options, schemas, opts) {
+ return new Normalizer(schemas, opts).normalize(options);
+ };
+
+ var Normalizer =
+ /*#__PURE__*/
+ function () {
+ function Normalizer(schemas, opts) {
+ _classCallCheck(this, Normalizer);
+
+ // istanbul ignore next
+ var _ref = opts || {},
+ _ref$logger = _ref.logger,
+ logger = _ref$logger === void 0 ? console : _ref$logger,
+ _ref$descriptor = _ref.descriptor,
+ descriptor = _ref$descriptor === void 0 ? defaults.defaultDescriptor : _ref$descriptor,
+ _ref$unknown = _ref.unknown,
+ unknown = _ref$unknown === void 0 ? defaults.defaultUnknownHandler : _ref$unknown,
+ _ref$invalid = _ref.invalid,
+ invalid = _ref$invalid === void 0 ? defaults.defaultInvalidHandler : _ref$invalid,
+ _ref$deprecated = _ref.deprecated,
+ deprecated = _ref$deprecated === void 0 ? defaults.defaultDeprecatedHandler : _ref$deprecated;
+
+ this._utils = {
+ descriptor,
+ logger:
+ /* istanbul ignore next */
+ logger || {
+ warn: function warn() {}
+ },
+ schemas: utils.recordFromArray(schemas, 'name'),
+ normalizeDefaultResult: utils.normalizeDefaultResult,
+ normalizeDeprecatedResult: utils.normalizeDeprecatedResult,
+ normalizeForwardResult: utils.normalizeForwardResult,
+ normalizeRedirectResult: utils.normalizeRedirectResult,
+ normalizeValidateResult: utils.normalizeValidateResult
+ };
+ this._unknownHandler = unknown;
+ this._invalidHandler = invalid;
+ this._deprecatedHandler = deprecated;
+ this.cleanHistory();
+ }
+
+ _createClass(Normalizer, [{
+ key: "cleanHistory",
+ value: function cleanHistory() {
+ this._hasDeprecationWarned = utils.createAutoChecklist();
+ }
+ }, {
+ key: "normalize",
+ value: function normalize(options) {
+ var _this = this;
+
+ var normalized = {};
+ var restOptionsArray = [options];
+
+ var applyNormalization = function applyNormalization() {
+ while (restOptionsArray.length !== 0) {
+ var currentOptions = restOptionsArray.shift();
+
+ var transferredOptionsArray = _this._applyNormalization(currentOptions, normalized);
+
+ restOptionsArray.push.apply(restOptionsArray, _toConsumableArray$1(transferredOptionsArray));
+ }
+ };
+
+ applyNormalization();
+
+ for (var _i = 0, _Object$keys = Object.keys(this._utils.schemas); _i < _Object$keys.length; _i++) {
+ var key = _Object$keys[_i];
+ var schema = this._utils.schemas[key];
+
+ if (!(key in normalized)) {
+ var defaultResult = utils.normalizeDefaultResult(schema.default(this._utils));
+
+ if ('value' in defaultResult) {
+ restOptionsArray.push({
+ [key]: defaultResult.value
+ });
+ }
+ }
+ }
+
+ applyNormalization();
+
+ for (var _i2 = 0, _Object$keys2 = Object.keys(this._utils.schemas); _i2 < _Object$keys2.length; _i2++) {
+ var _key = _Object$keys2[_i2];
+ var _schema = this._utils.schemas[_key];
+
+ if (_key in normalized) {
+ normalized[_key] = _schema.postprocess(normalized[_key], this._utils);
+ }
+ }
+
+ return normalized;
+ }
+ }, {
+ key: "_applyNormalization",
+ value: function _applyNormalization(options, normalized) {
+ var _this2 = this;
+
+ var transferredOptionsArray = [];
+
+ var _utils_1$partition = utils.partition(Object.keys(options), function (key) {
+ return key in _this2._utils.schemas;
+ }),
+ _utils_1$partition2 = _slicedToArray(_utils_1$partition, 2),
+ knownOptionNames = _utils_1$partition2[0],
+ unknownOptionNames = _utils_1$partition2[1];
+
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ var _loop = function _loop() {
+ var key = _step.value;
+ var schema = _this2._utils.schemas[key];
+ var value = schema.preprocess(options[key], _this2._utils);
+ var validateResult = utils.normalizeValidateResult(schema.validate(value, _this2._utils), value);
+
+ if (validateResult !== true) {
+ var invalidValue = validateResult.value;
+
+ var errorMessageOrError = _this2._invalidHandler(key, invalidValue, _this2._utils);
+
+ throw typeof errorMessageOrError === 'string' ? new Error(errorMessageOrError) :
+ /* istanbul ignore next*/
+ errorMessageOrError;
+ }
+
+ var appendTransferredOptions = function appendTransferredOptions(_ref2) {
+ var from = _ref2.from,
+ to = _ref2.to;
+ transferredOptionsArray.push(typeof to === 'string' ? {
+ [to]: from
+ } : {
+ [to.key]: to.value
+ });
+ };
+
+ var warnDeprecated = function warnDeprecated(_ref3) {
+ var currentValue = _ref3.value,
+ redirectTo = _ref3.redirectTo;
+ var deprecatedResult = utils.normalizeDeprecatedResult(schema.deprecated(currentValue, _this2._utils), value,
+ /* doNotNormalizeTrue */
+ true);
+
+ if (deprecatedResult === false) {
+ return;
+ }
+
+ if (deprecatedResult === true) {
+ if (!_this2._hasDeprecationWarned(key)) {
+ _this2._utils.logger.warn(_this2._deprecatedHandler(key, redirectTo, _this2._utils));
+ }
+ } else {
+ var _iteratorNormalCompletion3 = true;
+ var _didIteratorError3 = false;
+ var _iteratorError3 = undefined;
+
+ try {
+ for (var _iterator3 = deprecatedResult[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
+ var deprecatedValue = _step3.value.value;
+ var pair = {
+ key,
+ value: deprecatedValue
+ };
+
+ if (!_this2._hasDeprecationWarned(pair)) {
+ var redirectToPair = typeof redirectTo === 'string' ? {
+ key: redirectTo,
+ value: deprecatedValue
+ } : redirectTo;
+
+ _this2._utils.logger.warn(_this2._deprecatedHandler(pair, redirectToPair, _this2._utils));
+ }
+ }
+ } catch (err) {
+ _didIteratorError3 = true;
+ _iteratorError3 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
+ _iterator3.return();
+ }
+ } finally {
+ if (_didIteratorError3) {
+ throw _iteratorError3;
+ }
+ }
+ }
+ }
+ };
+
+ var forwardResult = utils.normalizeForwardResult(schema.forward(value, _this2._utils), value);
+ forwardResult.forEach(appendTransferredOptions);
+ var redirectResult = utils.normalizeRedirectResult(schema.redirect(value, _this2._utils), value);
+ redirectResult.redirect.forEach(appendTransferredOptions);
+
+ if ('remain' in redirectResult) {
+ var remainingValue = redirectResult.remain;
+ normalized[key] = key in normalized ? schema.overlap(normalized[key], remainingValue, _this2._utils) : remainingValue;
+ warnDeprecated({
+ value: remainingValue
+ });
+ }
+
+ var _iteratorNormalCompletion4 = true;
+ var _didIteratorError4 = false;
+ var _iteratorError4 = undefined;
+
+ try {
+ for (var _iterator4 = redirectResult.redirect[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
+ var _step4$value = _step4.value,
+ from = _step4$value.from,
+ to = _step4$value.to;
+ warnDeprecated({
+ value: from,
+ redirectTo: to
+ });
+ }
+ } catch (err) {
+ _didIteratorError4 = true;
+ _iteratorError4 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
+ _iterator4.return();
+ }
+ } finally {
+ if (_didIteratorError4) {
+ throw _iteratorError4;
+ }
+ }
+ }
+ };
+
+ for (var _iterator = knownOptionNames[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ _loop();
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = unknownOptionNames[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var key = _step2.value;
+ var value = options[key];
+
+ var unknownResult = this._unknownHandler(key, value, this._utils);
+
+ if (unknownResult) {
+ for (var _i3 = 0, _Object$keys3 = Object.keys(unknownResult); _i3 < _Object$keys3.length; _i3++) {
+ var unknownKey = _Object$keys3[_i3];
+ var unknownOption = {
+ [unknownKey]: unknownResult[unknownKey]
+ };
+
+ if (unknownKey in this._utils.schemas) {
+ transferredOptionsArray.push(unknownOption);
+ } else {
+ Object.assign(normalized, unknownOption);
+ }
+ }
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return transferredOptionsArray;
+ }
+ }]);
+
+ return Normalizer;
+ }();
+
+ exports.Normalizer = Normalizer;
+});
+unwrapExports(normalize);
+var normalize_1 = normalize.normalize;
+var normalize_2 = normalize.Normalizer;
+
+var lib = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_es6.__exportStar(descriptors, exports);
+
+ tslib_es6.__exportStar(handlers, exports);
+
+ tslib_es6.__exportStar(schemas, exports);
+
+ tslib_es6.__exportStar(normalize, exports);
+
+ tslib_es6.__exportStar(schema, exports);
+});
+unwrapExports(lib);
+
+var array$1 = [];
+var charCodeCache$1 = [];
+
+var leven$1 = function leven(left, right) {
+ if (left === right) {
+ return 0;
+ }
+
+ var swap = left; // Swapping the strings if `a` is longer than `b` so we know which one is the
+ // shortest & which one is the longest
+
+ if (left.length > right.length) {
+ left = right;
+ right = swap;
+ }
+
+ var leftLength = left.length;
+ var rightLength = right.length; // Performing suffix trimming:
+ // We can linearly drop suffix common to both strings since they
+ // don't increase distance at all
+ // Note: `~-` is the bitwise way to perform a `- 1` operation
+
+ while (leftLength > 0 && left.charCodeAt(~-leftLength) === right.charCodeAt(~-rightLength)) {
+ leftLength--;
+ rightLength--;
+ } // Performing prefix trimming
+ // We can linearly drop prefix common to both strings since they
+ // don't increase distance at all
+
+
+ var start = 0;
+
+ while (start < leftLength && left.charCodeAt(start) === right.charCodeAt(start)) {
+ start++;
+ }
+
+ leftLength -= start;
+ rightLength -= start;
+
+ if (leftLength === 0) {
+ return rightLength;
+ }
+
+ var bCharCode;
+ var result;
+ var temp;
+ var temp2;
+ var i = 0;
+ var j = 0;
+
+ while (i < leftLength) {
+ charCodeCache$1[i] = left.charCodeAt(start + i);
+ array$1[i] = ++i;
+ }
+
+ while (j < rightLength) {
+ bCharCode = right.charCodeAt(start + j);
+ temp = j++;
+ result = j;
+
+ for (i = 0; i < leftLength; i++) {
+ temp2 = bCharCode === charCodeCache$1[i] ? temp : temp + 1;
+ temp = array$1[i]; // eslint-disable-next-line no-multi-assign
+
+ result = array$1[i] = temp > result ? temp2 > result ? result + 1 : temp2 : temp2 > temp ? temp + 1 : temp2;
+ }
+ }
+
+ return result;
+};
+
+var leven_1$1 = leven$1; // TODO: Remove this for the next major release
+
+var default_1 = leven$1;
+leven_1$1.default = default_1;
+
+var cliDescriptor = {
+ key: function key(_key) {
+ return _key.length === 1 ? `-${_key}` : `--${_key}`;
+ },
+ value: function value(_value) {
+ return lib.apiDescriptor.value(_value);
+ },
+ pair: function pair(_ref) {
+ var key = _ref.key,
+ value = _ref.value;
+ return value === false ? `--no-${key}` : value === true ? cliDescriptor.key(key) : value === "" ? `${cliDescriptor.key(key)} without an argument` : `${cliDescriptor.key(key)}=${value}`;
+ }
+};
+
+var FlagSchema =
+/*#__PURE__*/
+function (_vnopts$ChoiceSchema) {
+ _inherits(FlagSchema, _vnopts$ChoiceSchema);
+
+ function FlagSchema(_ref2) {
+ var _this;
+
+ var name = _ref2.name,
+ flags = _ref2.flags;
+
+ _classCallCheck(this, FlagSchema);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(FlagSchema).call(this, {
+ name,
+ choices: flags
+ }));
+ _this._flags = flags.slice().sort();
+ return _this;
+ }
+
+ _createClass(FlagSchema, [{
+ key: "preprocess",
+ value: function preprocess(value, utils) {
+ if (typeof value === "string" && value.length !== 0 && this._flags.indexOf(value) === -1) {
+ var suggestion = this._flags.find(function (flag) {
+ return leven_1$1(flag, value) < 3;
+ });
+
+ if (suggestion) {
+ utils.logger.warn([`Unknown flag ${chalk.yellow(utils.descriptor.value(value))},`, `did you mean ${chalk.blue(utils.descriptor.value(suggestion))}?`].join(" "));
+ return suggestion;
+ }
+ }
+
+ return value;
+ }
+ }, {
+ key: "expected",
+ value: function expected() {
+ return "a flag";
+ }
+ }]);
+
+ return FlagSchema;
+}(lib.ChoiceSchema);
+
+var hasDeprecationWarned;
+
+function normalizeOptions(options, optionInfos) {
+ var _ref3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
+ logger = _ref3.logger,
+ _ref3$isCLI = _ref3.isCLI,
+ isCLI = _ref3$isCLI === void 0 ? false : _ref3$isCLI,
+ _ref3$passThrough = _ref3.passThrough,
+ passThrough = _ref3$passThrough === void 0 ? false : _ref3$passThrough;
+
+ var unknown = !passThrough ? lib.levenUnknownHandler : Array.isArray(passThrough) ? function (key, value) {
+ return passThrough.indexOf(key) === -1 ? undefined : {
+ [key]: value
+ };
+ } : function (key, value) {
+ return {
+ [key]: value
+ };
+ };
+ var descriptor = isCLI ? cliDescriptor : lib.apiDescriptor;
+ var schemas = optionInfosToSchemas(optionInfos, {
+ isCLI
+ });
+ var normalizer = new lib.Normalizer(schemas, {
+ logger,
+ unknown,
+ descriptor
+ });
+ var shouldSuppressDuplicateDeprecationWarnings = logger !== false;
+
+ if (shouldSuppressDuplicateDeprecationWarnings && hasDeprecationWarned) {
+ normalizer._hasDeprecationWarned = hasDeprecationWarned;
+ }
+
+ var normalized = normalizer.normalize(options);
+
+ if (shouldSuppressDuplicateDeprecationWarnings) {
+ hasDeprecationWarned = normalizer._hasDeprecationWarned;
+ }
+
+ return normalized;
+}
+
+function optionInfosToSchemas(optionInfos, _ref4) {
+ var isCLI = _ref4.isCLI;
+ var schemas = [];
+
+ if (isCLI) {
+ schemas.push(lib.AnySchema.create({
+ name: "_"
+ }));
+ }
+
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = optionInfos[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var optionInfo = _step.value;
+ schemas.push(optionInfoToSchema(optionInfo, {
+ isCLI,
+ optionInfos
+ }));
+
+ if (optionInfo.alias && isCLI) {
+ schemas.push(lib.AliasSchema.create({
+ name: optionInfo.alias,
+ sourceName: optionInfo.name
+ }));
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return schemas;
+}
+
+function optionInfoToSchema(optionInfo, _ref5) {
+ var isCLI = _ref5.isCLI,
+ optionInfos = _ref5.optionInfos;
+ var SchemaConstructor;
+ var parameters = {
+ name: optionInfo.name
+ };
+ var handlers = {};
+
+ switch (optionInfo.type) {
+ case "int":
+ SchemaConstructor = lib.IntegerSchema;
+
+ if (isCLI) {
+ parameters.preprocess = function (value) {
+ return Number(value);
+ };
+ }
+
+ break;
+
+ case "string":
+ SchemaConstructor = lib.StringSchema;
+ break;
+
+ case "choice":
+ SchemaConstructor = lib.ChoiceSchema;
+ parameters.choices = optionInfo.choices.map(function (choiceInfo) {
+ return typeof choiceInfo === "object" && choiceInfo.redirect ? Object.assign({}, choiceInfo, {
+ redirect: {
+ to: {
+ key: optionInfo.name,
+ value: choiceInfo.redirect
+ }
+ }
+ }) : choiceInfo;
+ });
+ break;
+
+ case "boolean":
+ SchemaConstructor = lib.BooleanSchema;
+ break;
+
+ case "flag":
+ SchemaConstructor = FlagSchema;
+ parameters.flags = optionInfos.map(function (optionInfo) {
+ return [].concat(optionInfo.alias || [], optionInfo.description ? optionInfo.name : [], optionInfo.oppositeDescription ? `no-${optionInfo.name}` : []);
+ }).reduce(function (a, b) {
+ return a.concat(b);
+ }, []);
+ break;
+
+ case "path":
+ SchemaConstructor = lib.StringSchema;
+ break;
+
+ default:
+ throw new Error(`Unexpected type ${optionInfo.type}`);
+ }
+
+ if (optionInfo.exception) {
+ parameters.validate = function (value, schema, utils) {
+ return optionInfo.exception(value) || schema.validate(value, utils);
+ };
+ } else {
+ parameters.validate = function (value, schema, utils) {
+ return value === undefined || schema.validate(value, utils);
+ };
+ }
+
+ if (optionInfo.redirect) {
+ handlers.redirect = function (value) {
+ return !value ? undefined : {
+ to: {
+ key: optionInfo.redirect.option,
+ value: optionInfo.redirect.value
+ }
+ };
+ };
+ }
+
+ if (optionInfo.deprecated) {
+ handlers.deprecated = true;
+ } // allow CLI overriding, e.g., prettier package.json --tab-width 1 --tab-width 2
+
+
+ if (isCLI && !optionInfo.array) {
+ var originalPreprocess = parameters.preprocess || function (x) {
+ return x;
+ };
+
+ parameters.preprocess = function (value, schema, utils) {
+ return schema.preprocess(originalPreprocess(Array.isArray(value) ? value[value.length - 1] : value), utils);
+ };
+ }
+
+ return optionInfo.array ? lib.ArraySchema.create(Object.assign(isCLI ? {
+ preprocess: function preprocess(v) {
+ return [].concat(v);
+ }
+ } : {}, handlers, {
+ valueSchema: SchemaConstructor.create(parameters)
+ })) : SchemaConstructor.create(Object.assign({}, parameters, handlers));
+}
+
+function normalizeApiOptions(options, optionInfos, opts) {
+ return normalizeOptions(options, optionInfos, opts);
+}
+
+function normalizeCliOptions(options, optionInfos, opts) {
+ return normalizeOptions(options, optionInfos, Object.assign({
+ isCLI: true
+ }, opts));
+}
+
+var optionsNormalizer = {
+ normalizeApiOptions,
+ normalizeCliOptions
+};
+
+var getLast = function getLast(arr) {
+ return arr.length > 0 ? arr[arr.length - 1] : null;
+};
+
+function locStart(node, opts) {
+ opts = opts || {}; // Handle nodes with decorators. They should start at the first decorator
+
+ if (!opts.ignoreDecorators && node.declaration && node.declaration.decorators && node.declaration.decorators.length > 0) {
+ return locStart(node.declaration.decorators[0]);
+ }
+
+ if (!opts.ignoreDecorators && node.decorators && node.decorators.length > 0) {
+ return locStart(node.decorators[0]);
+ }
+
+ if (node.__location) {
+ return node.__location.startOffset;
+ }
+
+ if (node.range) {
+ return node.range[0];
+ }
+
+ if (typeof node.start === "number") {
+ return node.start;
+ }
+
+ if (node.loc) {
+ return node.loc.start;
+ }
+
+ return null;
+}
+
+function locEnd(node) {
+ var endNode = node.nodes && getLast(node.nodes);
+
+ if (endNode && node.source && !node.source.end) {
+ node = endNode;
+ }
+
+ if (node.__location) {
+ return node.__location.endOffset;
+ }
+
+ var loc = node.range ? node.range[1] : typeof node.end === "number" ? node.end : null;
+
+ if (node.typeAnnotation) {
+ return Math.max(loc, locEnd(node.typeAnnotation));
+ }
+
+ if (node.loc && !loc) {
+ return node.loc.end;
+ }
+
+ return loc;
+}
+
+var loc = {
+ locStart,
+ locEnd
+};
+
+var jsTokens = createCommonjsModule(function (module, exports) {
+ // Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell
+ // License: MIT. (See LICENSE.)
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ }); // This regex comes from regex.coffee, and is inserted here by generate-index.js
+ // (run `npm run build`).
+
+ exports.default = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g;
+
+ exports.matchToToken = function (match) {
+ var token = {
+ type: "invalid",
+ value: match[0],
+ closed: undefined
+ };
+ if (match[1]) token.type = "string", token.closed = !!(match[3] || match[4]);else if (match[5]) token.type = "comment";else if (match[6]) token.type = "comment", token.closed = !!match[7];else if (match[8]) token.type = "regex";else if (match[9]) token.type = "number";else if (match[10]) token.type = "name";else if (match[11]) token.type = "punctuator";else if (match[12]) token.type = "whitespace";
+ return token;
+ };
+});
+unwrapExports(jsTokens);
+var jsTokens_1 = jsTokens.matchToToken;
+
+var ast = createCommonjsModule(function (module) {
+ /*
+ Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ (function () {
+
+ function isExpression(node) {
+ if (node == null) {
+ return false;
+ }
+
+ switch (node.type) {
+ case 'ArrayExpression':
+ case 'AssignmentExpression':
+ case 'BinaryExpression':
+ case 'CallExpression':
+ case 'ConditionalExpression':
+ case 'FunctionExpression':
+ case 'Identifier':
+ case 'Literal':
+ case 'LogicalExpression':
+ case 'MemberExpression':
+ case 'NewExpression':
+ case 'ObjectExpression':
+ case 'SequenceExpression':
+ case 'ThisExpression':
+ case 'UnaryExpression':
+ case 'UpdateExpression':
+ return true;
+ }
+
+ return false;
+ }
+
+ function isIterationStatement(node) {
+ if (node == null) {
+ return false;
+ }
+
+ switch (node.type) {
+ case 'DoWhileStatement':
+ case 'ForInStatement':
+ case 'ForStatement':
+ case 'WhileStatement':
+ return true;
+ }
+
+ return false;
+ }
+
+ function isStatement(node) {
+ if (node == null) {
+ return false;
+ }
+
+ switch (node.type) {
+ case 'BlockStatement':
+ case 'BreakStatement':
+ case 'ContinueStatement':
+ case 'DebuggerStatement':
+ case 'DoWhileStatement':
+ case 'EmptyStatement':
+ case 'ExpressionStatement':
+ case 'ForInStatement':
+ case 'ForStatement':
+ case 'IfStatement':
+ case 'LabeledStatement':
+ case 'ReturnStatement':
+ case 'SwitchStatement':
+ case 'ThrowStatement':
+ case 'TryStatement':
+ case 'VariableDeclaration':
+ case 'WhileStatement':
+ case 'WithStatement':
+ return true;
+ }
+
+ return false;
+ }
+
+ function isSourceElement(node) {
+ return isStatement(node) || node != null && node.type === 'FunctionDeclaration';
+ }
+
+ function trailingStatement(node) {
+ switch (node.type) {
+ case 'IfStatement':
+ if (node.alternate != null) {
+ return node.alternate;
+ }
+
+ return node.consequent;
+
+ case 'LabeledStatement':
+ case 'ForStatement':
+ case 'ForInStatement':
+ case 'WhileStatement':
+ case 'WithStatement':
+ return node.body;
+ }
+
+ return null;
+ }
+
+ function isProblematicIfStatement(node) {
+ var current;
+
+ if (node.type !== 'IfStatement') {
+ return false;
+ }
+
+ if (node.alternate == null) {
+ return false;
+ }
+
+ current = node.consequent;
+
+ do {
+ if (current.type === 'IfStatement') {
+ if (current.alternate == null) {
+ return true;
+ }
+ }
+
+ current = trailingStatement(current);
+ } while (current);
+
+ return false;
+ }
+
+ module.exports = {
+ isExpression: isExpression,
+ isStatement: isStatement,
+ isIterationStatement: isIterationStatement,
+ isSourceElement: isSourceElement,
+ isProblematicIfStatement: isProblematicIfStatement,
+ trailingStatement: trailingStatement
+ };
+ })();
+ /* vim: set sw=4 ts=4 et tw=80 : */
+
+});
+var ast_1 = ast.isExpression;
+var ast_2 = ast.isStatement;
+var ast_3 = ast.isIterationStatement;
+var ast_4 = ast.isSourceElement;
+var ast_5 = ast.isProblematicIfStatement;
+var ast_6 = ast.trailingStatement;
+
+var code = createCommonjsModule(function (module) {
+ /*
+ Copyright (C) 2013-2014 Yusuke Suzuki <utatane.tea@gmail.com>
+ Copyright (C) 2014 Ivan Nikulin <ifaaan@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ (function () {
+
+ var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch; // See `tools/generate-identifier-regex.js`.
+
+ ES5Regex = {
+ // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierStart:
+ NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,
+ // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierPart:
+ NonAsciiIdentifierPart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/
+ };
+ ES6Regex = {
+ // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierStart:
+ NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/,
+ // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierPart:
+ NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/
+ };
+
+ function isDecimalDigit(ch) {
+ return 0x30 <= ch && ch <= 0x39; // 0..9
+ }
+
+ function isHexDigit(ch) {
+ return 0x30 <= ch && ch <= 0x39 || // 0..9
+ 0x61 <= ch && ch <= 0x66 || // a..f
+ 0x41 <= ch && ch <= 0x46; // A..F
+ }
+
+ function isOctalDigit(ch) {
+ return ch >= 0x30 && ch <= 0x37; // 0..7
+ } // 7.2 White Space
+
+
+ NON_ASCII_WHITESPACES = [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF];
+
+ function isWhiteSpace(ch) {
+ return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0;
+ } // 7.3 Line Terminators
+
+
+ function isLineTerminator(ch) {
+ return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;
+ } // 7.6 Identifier Names and Identifiers
+
+
+ function fromCodePoint(cp) {
+ if (cp <= 0xFFFF) {
+ return String.fromCharCode(cp);
+ }
+
+ var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800);
+ var cu2 = String.fromCharCode((cp - 0x10000) % 0x400 + 0xDC00);
+ return cu1 + cu2;
+ }
+
+ IDENTIFIER_START = new Array(0x80);
+
+ for (ch = 0; ch < 0x80; ++ch) {
+ IDENTIFIER_START[ch] = ch >= 0x61 && ch <= 0x7A || // a..z
+ ch >= 0x41 && ch <= 0x5A || // A..Z
+ ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore)
+ }
+
+ IDENTIFIER_PART = new Array(0x80);
+
+ for (ch = 0; ch < 0x80; ++ch) {
+ IDENTIFIER_PART[ch] = ch >= 0x61 && ch <= 0x7A || // a..z
+ ch >= 0x41 && ch <= 0x5A || // A..Z
+ ch >= 0x30 && ch <= 0x39 || // 0..9
+ ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore)
+ }
+
+ function isIdentifierStartES5(ch) {
+ return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));
+ }
+
+ function isIdentifierPartES5(ch) {
+ return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));
+ }
+
+ function isIdentifierStartES6(ch) {
+ return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));
+ }
+
+ function isIdentifierPartES6(ch) {
+ return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));
+ }
+
+ module.exports = {
+ isDecimalDigit: isDecimalDigit,
+ isHexDigit: isHexDigit,
+ isOctalDigit: isOctalDigit,
+ isWhiteSpace: isWhiteSpace,
+ isLineTerminator: isLineTerminator,
+ isIdentifierStartES5: isIdentifierStartES5,
+ isIdentifierPartES5: isIdentifierPartES5,
+ isIdentifierStartES6: isIdentifierStartES6,
+ isIdentifierPartES6: isIdentifierPartES6
+ };
+ })();
+ /* vim: set sw=4 ts=4 et tw=80 : */
+
+});
+var code_1 = code.isDecimalDigit;
+var code_2 = code.isHexDigit;
+var code_3 = code.isOctalDigit;
+var code_4 = code.isWhiteSpace;
+var code_5 = code.isLineTerminator;
+var code_6 = code.isIdentifierStartES5;
+var code_7 = code.isIdentifierPartES5;
+var code_8 = code.isIdentifierStartES6;
+var code_9 = code.isIdentifierPartES6;
+
+var keyword = createCommonjsModule(function (module) {
+ /*
+ Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ (function () {
+
+ var code$1 = code;
+
+ function isStrictModeReservedWordES6(id) {
+ switch (id) {
+ case 'implements':
+ case 'interface':
+ case 'package':
+ case 'private':
+ case 'protected':
+ case 'public':
+ case 'static':
+ case 'let':
+ return true;
+
+ default:
+ return false;
+ }
+ }
+
+ function isKeywordES5(id, strict) {
+ // yield should not be treated as keyword under non-strict mode.
+ if (!strict && id === 'yield') {
+ return false;
+ }
+
+ return isKeywordES6(id, strict);
+ }
+
+ function isKeywordES6(id, strict) {
+ if (strict && isStrictModeReservedWordES6(id)) {
+ return true;
+ }
+
+ switch (id.length) {
+ case 2:
+ return id === 'if' || id === 'in' || id === 'do';
+
+ case 3:
+ return id === 'var' || id === 'for' || id === 'new' || id === 'try';
+
+ case 4:
+ return id === 'this' || id === 'else' || id === 'case' || id === 'void' || id === 'with' || id === 'enum';
+
+ case 5:
+ return id === 'while' || id === 'break' || id === 'catch' || id === 'throw' || id === 'const' || id === 'yield' || id === 'class' || id === 'super';
+
+ case 6:
+ return id === 'return' || id === 'typeof' || id === 'delete' || id === 'switch' || id === 'export' || id === 'import';
+
+ case 7:
+ return id === 'default' || id === 'finally' || id === 'extends';
+
+ case 8:
+ return id === 'function' || id === 'continue' || id === 'debugger';
+
+ case 10:
+ return id === 'instanceof';
+
+ default:
+ return false;
+ }
+ }
+
+ function isReservedWordES5(id, strict) {
+ return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict);
+ }
+
+ function isReservedWordES6(id, strict) {
+ return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict);
+ }
+
+ function isRestrictedWord(id) {
+ return id === 'eval' || id === 'arguments';
+ }
+
+ function isIdentifierNameES5(id) {
+ var i, iz, ch;
+
+ if (id.length === 0) {
+ return false;
+ }
+
+ ch = id.charCodeAt(0);
+
+ if (!code$1.isIdentifierStartES5(ch)) {
+ return false;
+ }
+
+ for (i = 1, iz = id.length; i < iz; ++i) {
+ ch = id.charCodeAt(i);
+
+ if (!code$1.isIdentifierPartES5(ch)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ function decodeUtf16(lead, trail) {
+ return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;
+ }
+
+ function isIdentifierNameES6(id) {
+ var i, iz, ch, lowCh, check;
+
+ if (id.length === 0) {
+ return false;
+ }
+
+ check = code$1.isIdentifierStartES6;
+
+ for (i = 0, iz = id.length; i < iz; ++i) {
+ ch = id.charCodeAt(i);
+
+ if (0xD800 <= ch && ch <= 0xDBFF) {
+ ++i;
+
+ if (i >= iz) {
+ return false;
+ }
+
+ lowCh = id.charCodeAt(i);
+
+ if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) {
+ return false;
+ }
+
+ ch = decodeUtf16(ch, lowCh);
+ }
+
+ if (!check(ch)) {
+ return false;
+ }
+
+ check = code$1.isIdentifierPartES6;
+ }
+
+ return true;
+ }
+
+ function isIdentifierES5(id, strict) {
+ return isIdentifierNameES5(id) && !isReservedWordES5(id, strict);
+ }
+
+ function isIdentifierES6(id, strict) {
+ return isIdentifierNameES6(id) && !isReservedWordES6(id, strict);
+ }
+
+ module.exports = {
+ isKeywordES5: isKeywordES5,
+ isKeywordES6: isKeywordES6,
+ isReservedWordES5: isReservedWordES5,
+ isReservedWordES6: isReservedWordES6,
+ isRestrictedWord: isRestrictedWord,
+ isIdentifierNameES5: isIdentifierNameES5,
+ isIdentifierNameES6: isIdentifierNameES6,
+ isIdentifierES5: isIdentifierES5,
+ isIdentifierES6: isIdentifierES6
+ };
+ })();
+ /* vim: set sw=4 ts=4 et tw=80 : */
+
+});
+var keyword_1 = keyword.isKeywordES5;
+var keyword_2 = keyword.isKeywordES6;
+var keyword_3 = keyword.isReservedWordES5;
+var keyword_4 = keyword.isReservedWordES6;
+var keyword_5 = keyword.isRestrictedWord;
+var keyword_6 = keyword.isIdentifierNameES5;
+var keyword_7 = keyword.isIdentifierNameES6;
+var keyword_8 = keyword.isIdentifierES5;
+var keyword_9 = keyword.isIdentifierES6;
+
+var utils$1 = createCommonjsModule(function (module, exports) {
+ /*
+ Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ (function () {
+
+ exports.ast = ast;
+ exports.code = code;
+ exports.keyword = keyword;
+ })();
+ /* vim: set sw=4 ts=4 et tw=80 : */
+
+});
+var utils_1$1 = utils$1.ast;
+var utils_2$1 = utils$1.code;
+var utils_3$1 = utils$1.keyword;
+
+var lib$1 = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.shouldHighlight = shouldHighlight;
+ exports.getChalk = getChalk;
+ exports.default = highlight;
+
+ function _jsTokens() {
+ var data = _interopRequireWildcard(jsTokens);
+
+ _jsTokens = function _jsTokens() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _esutils() {
+ var data = _interopRequireDefault(utils$1);
+
+ _esutils = function _esutils() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _chalk() {
+ var data = _interopRequireDefault(chalk);
+
+ _chalk = function _chalk() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _interopRequireWildcard(obj) {
+ if (obj && obj.__esModule) {
+ return obj;
+ } else {
+ var newObj = {};
+
+ if (obj != null) {
+ for (var key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
+
+ if (desc.get || desc.set) {
+ Object.defineProperty(newObj, key, desc);
+ } else {
+ newObj[key] = obj[key];
+ }
+ }
+ }
+ }
+
+ newObj.default = obj;
+ return newObj;
+ }
+ }
+
+ function getDefs(chalk) {
+ return {
+ keyword: chalk.cyan,
+ capitalized: chalk.yellow,
+ jsx_tag: chalk.yellow,
+ punctuator: chalk.yellow,
+ number: chalk.magenta,
+ string: chalk.green,
+ regex: chalk.magenta,
+ comment: chalk.grey,
+ invalid: chalk.white.bgRed.bold
+ };
+ }
+
+ var NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
+ var JSX_TAG = /^[a-z][\w-]*$/i;
+ var BRACKET = /^[()[\]{}]$/;
+
+ function getTokenType(match) {
+ var _match$slice = match.slice(-2),
+ _match$slice2 = _slicedToArray(_match$slice, 2),
+ offset = _match$slice2[0],
+ text = _match$slice2[1];
+
+ var token = (0, _jsTokens().matchToToken)(match);
+
+ if (token.type === "name") {
+ if (_esutils().default.keyword.isReservedWordES6(token.value)) {
+ return "keyword";
+ }
+
+ if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.substr(offset - 2, 2) == "</")) {
+ return "jsx_tag";
+ }
+
+ if (token.value[0] !== token.value[0].toLowerCase()) {
+ return "capitalized";
+ }
+ }
+
+ if (token.type === "punctuator" && BRACKET.test(token.value)) {
+ return "bracket";
+ }
+
+ if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
+ return "punctuator";
+ }
+
+ return token.type;
+ }
+
+ function highlightTokens(defs, text) {
+ return text.replace(_jsTokens().default, function () {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ var type = getTokenType(args);
+ var colorize = defs[type];
+
+ if (colorize) {
+ return args[0].split(NEWLINE).map(function (str) {
+ return colorize(str);
+ }).join("\n");
+ } else {
+ return args[0];
+ }
+ });
+ }
+
+ function shouldHighlight(options) {
+ return _chalk().default.supportsColor || options.forceColor;
+ }
+
+ function getChalk(options) {
+ var chalk = _chalk().default;
+
+ if (options.forceColor) {
+ chalk = new (_chalk().default.constructor)({
+ enabled: true,
+ level: 1
+ });
+ }
+
+ return chalk;
+ }
+
+ function highlight(code) {
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ if (shouldHighlight(options)) {
+ var chalk = getChalk(options);
+ var defs = getDefs(chalk);
+ return highlightTokens(defs, code);
+ } else {
+ return code;
+ }
+ }
+});
+unwrapExports(lib$1);
+var lib_1 = lib$1.shouldHighlight;
+var lib_2 = lib$1.getChalk;
+
+var lib$2 = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.codeFrameColumns = codeFrameColumns;
+ exports.default = _default;
+
+ function _highlight() {
+ var data = _interopRequireWildcard(lib$1);
+
+ _highlight = function _highlight() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _interopRequireWildcard(obj) {
+ if (obj && obj.__esModule) {
+ return obj;
+ } else {
+ var newObj = {};
+
+ if (obj != null) {
+ for (var key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
+
+ if (desc.get || desc.set) {
+ Object.defineProperty(newObj, key, desc);
+ } else {
+ newObj[key] = obj[key];
+ }
+ }
+ }
+ }
+
+ newObj.default = obj;
+ return newObj;
+ }
+ }
+
+ var deprecationWarningShown = false;
+
+ function getDefs(chalk) {
+ return {
+ gutter: chalk.grey,
+ marker: chalk.red.bold,
+ message: chalk.red.bold
+ };
+ }
+
+ var NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
+
+ function getMarkerLines(loc, source, opts) {
+ var startLoc = Object.assign({
+ column: 0,
+ line: -1
+ }, loc.start);
+ var endLoc = Object.assign({}, startLoc, loc.end);
+
+ var _ref = opts || {},
+ _ref$linesAbove = _ref.linesAbove,
+ linesAbove = _ref$linesAbove === void 0 ? 2 : _ref$linesAbove,
+ _ref$linesBelow = _ref.linesBelow,
+ linesBelow = _ref$linesBelow === void 0 ? 3 : _ref$linesBelow;
+
+ var startLine = startLoc.line;
+ var startColumn = startLoc.column;
+ var endLine = endLoc.line;
+ var endColumn = endLoc.column;
+ var start = Math.max(startLine - (linesAbove + 1), 0);
+ var end = Math.min(source.length, endLine + linesBelow);
+
+ if (startLine === -1) {
+ start = 0;
+ }
+
+ if (endLine === -1) {
+ end = source.length;
+ }
+
+ var lineDiff = endLine - startLine;
+ var markerLines = {};
+
+ if (lineDiff) {
+ for (var i = 0; i <= lineDiff; i++) {
+ var lineNumber = i + startLine;
+
+ if (!startColumn) {
+ markerLines[lineNumber] = true;
+ } else if (i === 0) {
+ var sourceLength = source[lineNumber - 1].length;
+ markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
+ } else if (i === lineDiff) {
+ markerLines[lineNumber] = [0, endColumn];
+ } else {
+ var _sourceLength = source[lineNumber - i].length;
+ markerLines[lineNumber] = [0, _sourceLength];
+ }
+ }
+ } else {
+ if (startColumn === endColumn) {
+ if (startColumn) {
+ markerLines[startLine] = [startColumn, 0];
+ } else {
+ markerLines[startLine] = true;
+ }
+ } else {
+ markerLines[startLine] = [startColumn, endColumn - startColumn];
+ }
+ }
+
+ return {
+ start,
+ end,
+ markerLines
+ };
+ }
+
+ function codeFrameColumns(rawLines, loc) {
+ var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+ var highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight().shouldHighlight)(opts);
+ var chalk = (0, _highlight().getChalk)(opts);
+ var defs = getDefs(chalk);
+
+ var maybeHighlight = function maybeHighlight(chalkFn, string) {
+ return highlighted ? chalkFn(string) : string;
+ };
+
+ var lines = rawLines.split(NEWLINE);
+
+ var _getMarkerLines = getMarkerLines(loc, lines, opts),
+ start = _getMarkerLines.start,
+ end = _getMarkerLines.end,
+ markerLines = _getMarkerLines.markerLines;
+
+ var hasColumns = loc.start && typeof loc.start.column === "number";
+ var numberMaxWidth = String(end).length;
+ var highlightedLines = highlighted ? (0, _highlight().default)(rawLines, opts) : rawLines;
+ var frame = highlightedLines.split(NEWLINE).slice(start, end).map(function (line, index) {
+ var number = start + 1 + index;
+ var paddedNumber = ` ${number}`.slice(-numberMaxWidth);
+ var gutter = ` ${paddedNumber} | `;
+ var hasMarker = markerLines[number];
+ var lastMarkerLine = !markerLines[number + 1];
+
+ if (hasMarker) {
+ var markerLine = "";
+
+ if (Array.isArray(hasMarker)) {
+ var markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
+ var numberOfMarkers = hasMarker[1] || 1;
+ markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join("");
+
+ if (lastMarkerLine && opts.message) {
+ markerLine += " " + maybeHighlight(defs.message, opts.message);
+ }
+ }
+
+ return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line, markerLine].join("");
+ } else {
+ return ` ${maybeHighlight(defs.gutter, gutter)}${line}`;
+ }
+ }).join("\n");
+
+ if (opts.message && !hasColumns) {
+ frame = `${" ".repeat(numberMaxWidth + 1)}${opts.message}\n${frame}`;
+ }
+
+ if (highlighted) {
+ return chalk.reset(frame);
+ } else {
+ return frame;
+ }
+ }
+
+ function _default(rawLines, lineNumber, colNumber) {
+ var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
+
+ if (!deprecationWarningShown) {
+ deprecationWarningShown = true;
+ var message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";
+
+ if (process.emitWarning) {
+ process.emitWarning(message, "DeprecationWarning");
+ } else {
+ var deprecationError = new Error(message);
+ deprecationError.name = "DeprecationWarning";
+ console.warn(new Error(message));
+ }
+ }
+
+ colNumber = Math.max(colNumber, 0);
+ var location = {
+ start: {
+ column: colNumber,
+ line: lineNumber
+ }
+ };
+ return codeFrameColumns(rawLines, location, opts);
+ }
+});
+unwrapExports(lib$2);
+var lib_1$1 = lib$2.codeFrameColumns;
+
+var ConfigError$1 = errors.ConfigError;
+var locStart$1 = loc.locStart,
+ locEnd$1 = loc.locEnd; // Use defineProperties()/getOwnPropertyDescriptor() to prevent
+// triggering the parsers getters.
+
+var ownNames = Object.getOwnPropertyNames;
+var ownDescriptor = Object.getOwnPropertyDescriptor;
+
+function getParsers(options) {
+ var parsers = {};
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = options.plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var plugin = _step.value;
+
+ if (!plugin.parsers) {
+ continue;
+ }
+
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = ownNames(plugin.parsers)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var name = _step2.value;
+ Object.defineProperty(parsers, name, ownDescriptor(plugin.parsers, name));
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return parsers;
+}
+
+function resolveParser(opts, parsers) {
+ parsers = parsers || getParsers(opts);
+
+ if (typeof opts.parser === "function") {
+ // Custom parser API always works with JavaScript.
+ return {
+ parse: opts.parser,
+ astFormat: "estree",
+ locStart: locStart$1,
+ locEnd: locEnd$1
+ };
+ }
+
+ if (typeof opts.parser === "string") {
+ if (Object.prototype.hasOwnProperty.call(parsers, opts.parser)) {
+ return parsers[opts.parser];
+ }
+ /* istanbul ignore next */
+
+
+ {
+ try {
+ return {
+ parse: require(path$2.resolve(process.cwd(), opts.parser)),
+ astFormat: "estree",
+ locStart: locStart$1,
+ locEnd: locEnd$1
+ };
+ } catch (err) {
+ /* istanbul ignore next */
+ throw new ConfigError$1(`Couldn't resolve parser "${opts.parser}"`);
+ }
+ }
+ }
+}
+
+function parse(text, opts) {
+ var parsers = getParsers(opts); // Create a new object {parserName: parseFn}. Uses defineProperty() to only call
+ // the parsers getters when actually calling the parser `parse` function.
+
+ var parsersForCustomParserApi = Object.keys(parsers).reduce(function (object, parserName) {
+ return Object.defineProperty(object, parserName, {
+ enumerable: true,
+
+ get() {
+ return parsers[parserName].parse;
+ }
+
+ });
+ }, {});
+ var parser = resolveParser(opts, parsers);
+
+ try {
+ if (parser.preprocess) {
+ text = parser.preprocess(text, opts);
+ }
+
+ return {
+ text,
+ ast: parser.parse(text, parsersForCustomParserApi, opts)
+ };
+ } catch (error) {
+ var loc = error.loc;
+
+ if (loc) {
+ var codeFrame = lib$2;
+ error.codeFrame = codeFrame.codeFrameColumns(text, loc, {
+ highlightCode: true
+ });
+ error.message += "\n" + error.codeFrame;
+ throw error;
+ }
+ /* istanbul ignore next */
+
+
+ throw error.stack;
+ }
+}
+
+var parser = {
+ parse,
+ resolveParser
+};
+
+var UndefinedParserError$1 = errors.UndefinedParserError;
+var getSupportInfo$1 = support.getSupportInfo;
+var resolveParser$1 = parser.resolveParser;
+var hiddenDefaults = {
+ astFormat: "estree",
+ printer: {},
+ originalText: undefined,
+ locStart: null,
+ locEnd: null
+}; // Copy options and fill in default values.
+
+function normalize$1(options, opts) {
+ opts = opts || {};
+ var rawOptions = Object.assign({}, options);
+ var supportOptions = getSupportInfo$1(null, {
+ plugins: options.plugins,
+ showUnreleased: true,
+ showDeprecated: true
+ }).options;
+ var defaults = supportOptions.reduce(function (reduced, optionInfo) {
+ return optionInfo.default !== undefined ? Object.assign(reduced, {
+ [optionInfo.name]: optionInfo.default
+ }) : reduced;
+ }, Object.assign({}, hiddenDefaults));
+
+ if (!rawOptions.parser) {
+ if (!rawOptions.filepath) {
+ var logger = opts.logger || console;
+ logger.warn("No parser and no filepath given, using 'babel' the parser now " + "but this will throw an error in the future. " + "Please specify a parser or a filepath so one can be inferred.");
+ rawOptions.parser = "babel";
+ } else {
+ rawOptions.parser = inferParser(rawOptions.filepath, rawOptions.plugins);
+
+ if (!rawOptions.parser) {
+ throw new UndefinedParserError$1(`No parser could be inferred for file: ${rawOptions.filepath}`);
+ }
+ }
+ }
+
+ var parser = resolveParser$1(optionsNormalizer.normalizeApiOptions(rawOptions, [supportOptions.find(function (x) {
+ return x.name === "parser";
+ })], {
+ passThrough: true,
+ logger: false
+ }));
+ rawOptions.astFormat = parser.astFormat;
+ rawOptions.locEnd = parser.locEnd;
+ rawOptions.locStart = parser.locStart;
+ var plugin = getPlugin(rawOptions);
+ rawOptions.printer = plugin.printers[rawOptions.astFormat];
+ var pluginDefaults = supportOptions.filter(function (optionInfo) {
+ return optionInfo.pluginDefaults && optionInfo.pluginDefaults[plugin.name] !== undefined;
+ }).reduce(function (reduced, optionInfo) {
+ return Object.assign(reduced, {
+ [optionInfo.name]: optionInfo.pluginDefaults[plugin.name]
+ });
+ }, {});
+ var mixedDefaults = Object.assign({}, defaults, pluginDefaults);
+ Object.keys(mixedDefaults).forEach(function (k) {
+ if (rawOptions[k] == null) {
+ rawOptions[k] = mixedDefaults[k];
+ }
+ });
+
+ if (rawOptions.parser === "json") {
+ rawOptions.trailingComma = "none";
+ }
+
+ return optionsNormalizer.normalizeApiOptions(rawOptions, supportOptions, Object.assign({
+ passThrough: Object.keys(hiddenDefaults)
+ }, opts));
+}
+
+function getPlugin(options) {
+ var astFormat = options.astFormat;
+
+ if (!astFormat) {
+ throw new Error("getPlugin() requires astFormat to be set");
+ }
+
+ var printerPlugin = options.plugins.find(function (plugin) {
+ return plugin.printers && plugin.printers[astFormat];
+ });
+
+ if (!printerPlugin) {
+ throw new Error(`Couldn't find plugin for AST format "${astFormat}"`);
+ }
+
+ return printerPlugin;
+}
+
+function getInterpreter(filepath) {
+ if (typeof filepath !== "string") {
+ return "";
+ }
+
+ var fd;
+
+ try {
+ fd = fs$1.openSync(filepath, "r");
+ } catch (err) {
+ return "";
+ }
+
+ try {
+ var liner = new readlines(fd);
+ var firstLine = liner.next().toString("utf8"); // #!/bin/env node, #!/usr/bin/env node
+
+ var m1 = firstLine.match(/^#!\/(?:usr\/)?bin\/env\s+(\S+)/);
+
+ if (m1) {
+ return m1[1];
+ } // #!/bin/node, #!/usr/bin/node, #!/usr/local/bin/node
+
+
+ var m2 = firstLine.match(/^#!\/(?:usr\/(?:local\/)?)?bin\/(\S+)/);
+
+ if (m2) {
+ return m2[1];
+ }
+
+ return "";
+ } catch (err) {
+ // There are some weird cases where paths are missing, causing Jest
+ // failures. It's unclear what these correspond to in the real world.
+ return "";
+ } finally {
+ try {
+ // There are some weird cases where paths are missing, causing Jest
+ // failures. It's unclear what these correspond to in the real world.
+ fs$1.closeSync(fd);
+ } catch (err) {// nop
+ }
+ }
+}
+
+function inferParser(filepath, plugins) {
+ var filepathParts = normalizePath(filepath).split("/");
+ var filename = filepathParts[filepathParts.length - 1].toLowerCase(); // If the file has no extension, we can try to infer the language from the
+ // interpreter in the shebang line, if any; but since this requires FS access,
+ // do it last.
+
+ var language = getSupportInfo$1(null, {
+ plugins
+ }).languages.find(function (language) {
+ return language.since !== null && (language.extensions && language.extensions.some(function (extension) {
+ return filename.endsWith(extension);
+ }) || language.filenames && language.filenames.find(function (name) {
+ return name.toLowerCase() === filename;
+ }) || filename.indexOf(".") === -1 && language.interpreters && language.interpreters.indexOf(getInterpreter(filepath)) !== -1);
+ });
+ return language && language.parsers[0];
+}
+
+var options$1 = {
+ normalize: normalize$1,
+ hiddenDefaults,
+ inferParser
+};
+
+function massageAST(ast, options, parent) {
+ if (Array.isArray(ast)) {
+ return ast.map(function (e) {
+ return massageAST(e, options, parent);
+ }).filter(function (e) {
+ return e;
+ });
+ }
+
+ if (!ast || typeof ast !== "object") {
+ return ast;
+ }
+
+ var newObj = {};
+
+ for (var _i = 0, _Object$keys = Object.keys(ast); _i < _Object$keys.length; _i++) {
+ var key = _Object$keys[_i];
+
+ if (typeof ast[key] !== "function") {
+ newObj[key] = massageAST(ast[key], options, ast);
+ }
+ }
+
+ if (options.printer.massageAstNode) {
+ var result = options.printer.massageAstNode(ast, newObj, parent);
+
+ if (result === null) {
+ return undefined;
+ }
+
+ if (result) {
+ return result;
+ }
+ }
+
+ return newObj;
+}
+
+var massageAst = massageAST;
+
+/**
+ * @param {Doc[]} parts
+ * @returns Doc
+ */
+
+
+function concat(parts) {
+ // access the internals of a document directly.
+ // if(parts.length === 1) {
+ // // If it's a single document, no need to concat it.
+ // return parts[0];
+ // }
+
+
+ return {
+ type: "concat",
+ parts
+ };
+}
+/**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+function indent(contents) {
+
+ return {
+ type: "indent",
+ contents
+ };
+}
+/**
+ * @param {number} n
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+function align(n, contents) {
+
+ return {
+ type: "align",
+ contents,
+ n
+ };
+}
+/**
+ * @param {Doc} contents
+ * @param {object} [opts] - TBD ???
+ * @returns Doc
+ */
+
+
+function group(contents, opts) {
+ opts = opts || {};
+
+ return {
+ type: "group",
+ id: opts.id,
+ contents: contents,
+ break: !!opts.shouldBreak,
+ expandedStates: opts.expandedStates
+ };
+}
+/**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+function dedentToRoot(contents) {
+ return align(-Infinity, contents);
+}
+/**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+function markAsRoot(contents) {
+ // @ts-ignore - TBD ???:
+ return align({
+ type: "root"
+ }, contents);
+}
+/**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+function dedent(contents) {
+ return align(-1, contents);
+}
+/**
+ * @param {Doc[]} states
+ * @param {object} [opts] - TBD ???
+ * @returns Doc
+ */
+
+
+function conditionalGroup(states, opts) {
+ return group(states[0], Object.assign(opts || {}, {
+ expandedStates: states
+ }));
+}
+/**
+ * @param {Doc[]} parts
+ * @returns Doc
+ */
+
+
+function fill(parts) {
+
+ return {
+ type: "fill",
+ parts
+ };
+}
+/**
+ * @param {Doc} [breakContents]
+ * @param {Doc} [flatContents]
+ * @param {object} [opts] - TBD ???
+ * @returns Doc
+ */
+
+
+function ifBreak(breakContents, flatContents, opts) {
+ opts = opts || {};
+
+ return {
+ type: "if-break",
+ breakContents,
+ flatContents,
+ groupId: opts.groupId
+ };
+}
+/**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+function lineSuffix(contents) {
+
+ return {
+ type: "line-suffix",
+ contents
+ };
+}
+
+var lineSuffixBoundary = {
+ type: "line-suffix-boundary"
+};
+var breakParent = {
+ type: "break-parent"
+};
+var trim = {
+ type: "trim"
+};
+var line = {
+ type: "line"
+};
+var softline = {
+ type: "line",
+ soft: true
+};
+var hardline = concat([{
+ type: "line",
+ hard: true
+}, breakParent]);
+var literalline = concat([{
+ type: "line",
+ hard: true,
+ literal: true
+}, breakParent]);
+var cursor = {
+ type: "cursor",
+ placeholder: Symbol("cursor")
+};
+/**
+ * @param {Doc} sep
+ * @param {Doc[]} arr
+ * @returns Doc
+ */
+
+function join(sep, arr) {
+ var res = [];
+
+ for (var i = 0; i < arr.length; i++) {
+ if (i !== 0) {
+ res.push(sep);
+ }
+
+ res.push(arr[i]);
+ }
+
+ return concat(res);
+}
+/**
+ * @param {Doc} doc
+ * @param {number} size
+ * @param {number} tabWidth
+ */
+
+
+function addAlignmentToDoc(doc, size, tabWidth) {
+ var aligned = doc;
+
+ if (size > 0) {
+ // Use indent to add tabs for all the levels of tabs we need
+ for (var i = 0; i < Math.floor(size / tabWidth); ++i) {
+ aligned = indent(aligned);
+ } // Use align for all the spaces that are needed
+
+
+ aligned = align(size % tabWidth, aligned); // size is absolute from 0 and not relative to the current
+ // indentation, so we use -Infinity to reset the indentation to 0
+
+ aligned = align(-Infinity, aligned);
+ }
+
+ return aligned;
+}
+
+var docBuilders = {
+ concat,
+ join,
+ line,
+ softline,
+ hardline,
+ literalline,
+ group,
+ conditionalGroup,
+ fill,
+ lineSuffix,
+ lineSuffixBoundary,
+ cursor,
+ breakParent,
+ ifBreak,
+ trim,
+ indent,
+ align,
+ addAlignmentToDoc,
+ markAsRoot,
+ dedentToRoot,
+ dedent
+};
+
+var ansiRegex = function ansiRegex(options) {
+ options = Object.assign({
+ onlyFirst: false
+ }, options);
+ var pattern = ['[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)', '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'].join('|');
+ return new RegExp(pattern, options.onlyFirst ? undefined : 'g');
+};
+
+var stripAnsi = function stripAnsi(string) {
+ return typeof string === 'string' ? string.replace(ansiRegex(), '') : string;
+};
+
+var stripAnsi_1 = stripAnsi;
+var default_1$1 = stripAnsi;
+stripAnsi_1.default = default_1$1;
+
+/* eslint-disable yoda */
+
+var isFullwidthCodePoint = function isFullwidthCodePoint(codePoint) {
+ if (Number.isNaN(codePoint)) {
+ return false;
+ } // Code points are derived from:
+ // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
+
+
+ if (codePoint >= 0x1100 && (codePoint <= 0x115F || // Hangul Jamo
+ codePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET
+ codePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET
+ // CJK Radicals Supplement .. Enclosed CJK Letters and Months
+ 0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F || // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
+ 0x3250 <= codePoint && codePoint <= 0x4DBF || // CJK Unified Ideographs .. Yi Radicals
+ 0x4E00 <= codePoint && codePoint <= 0xA4C6 || // Hangul Jamo Extended-A
+ 0xA960 <= codePoint && codePoint <= 0xA97C || // Hangul Syllables
+ 0xAC00 <= codePoint && codePoint <= 0xD7A3 || // CJK Compatibility Ideographs
+ 0xF900 <= codePoint && codePoint <= 0xFAFF || // Vertical Forms
+ 0xFE10 <= codePoint && codePoint <= 0xFE19 || // CJK Compatibility Forms .. Small Form Variants
+ 0xFE30 <= codePoint && codePoint <= 0xFE6B || // Halfwidth and Fullwidth Forms
+ 0xFF01 <= codePoint && codePoint <= 0xFF60 || 0xFFE0 <= codePoint && codePoint <= 0xFFE6 || // Kana Supplement
+ 0x1B000 <= codePoint && codePoint <= 0x1B001 || // Enclosed Ideographic Supplement
+ 0x1F200 <= codePoint && codePoint <= 0x1F251 || // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
+ 0x20000 <= codePoint && codePoint <= 0x3FFFD)) {
+ return true;
+ }
+
+ return false;
+};
+
+var isFullwidthCodePoint_1 = isFullwidthCodePoint;
+var default_1$2 = isFullwidthCodePoint;
+isFullwidthCodePoint_1.default = default_1$2;
+
+var emojiRegex = function emojiRegex() {
+ // https://mths.be/emoji
+ return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
+};
+
+var stringWidth = function stringWidth(string) {
+ string = string.replace(emojiRegex(), ' ');
+
+ if (typeof string !== 'string' || string.length === 0) {
+ return 0;
+ }
+
+ string = stripAnsi_1(string);
+ var width = 0;
+
+ for (var i = 0; i < string.length; i++) {
+ var code = string.codePointAt(i); // Ignore control characters
+
+ if (code <= 0x1F || code >= 0x7F && code <= 0x9F) {
+ continue;
+ } // Ignore combining characters
+
+
+ if (code >= 0x300 && code <= 0x36F) {
+ continue;
+ } // Surrogates
+
+
+ if (code > 0xFFFF) {
+ i++;
+ }
+
+ width += isFullwidthCodePoint_1(code) ? 2 : 1;
+ }
+
+ return width;
+};
+
+var stringWidth_1 = stringWidth; // TODO: remove this in the next major version
+
+var default_1$3 = stringWidth;
+stringWidth_1.default = default_1$3;
+
+var notAsciiRegex = /[^\x20-\x7F]/;
+
+function isExportDeclaration(node) {
+ if (node) {
+ switch (node.type) {
+ case "ExportDefaultDeclaration":
+ case "ExportDefaultSpecifier":
+ case "DeclareExportDeclaration":
+ case "ExportNamedDeclaration":
+ case "ExportAllDeclaration":
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function getParentExportDeclaration(path) {
+ var parentNode = path.getParentNode();
+
+ if (path.getName() === "declaration" && isExportDeclaration(parentNode)) {
+ return parentNode;
+ }
+
+ return null;
+}
+
+function getPenultimate(arr) {
+ if (arr.length > 1) {
+ return arr[arr.length - 2];
+ }
+
+ return null;
+}
+/**
+ * @typedef {{backwards?: boolean}} SkipOptions
+ */
+
+/**
+ * @param {string | RegExp} chars
+ * @returns {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+
+function skip(chars) {
+ return function (text, index, opts) {
+ var backwards = opts && opts.backwards; // Allow `skip` functions to be threaded together without having
+ // to check for failures (did someone say monads?).
+
+ if (index === false) {
+ return false;
+ }
+
+ var length = text.length;
+ var cursor = index;
+
+ while (cursor >= 0 && cursor < length) {
+ var c = text.charAt(cursor);
+
+ if (chars instanceof RegExp) {
+ if (!chars.test(c)) {
+ return cursor;
+ }
+ } else if (chars.indexOf(c) === -1) {
+ return cursor;
+ }
+
+ backwards ? cursor-- : cursor++;
+ }
+
+ if (cursor === -1 || cursor === length) {
+ // If we reached the beginning or end of the file, return the
+ // out-of-bounds cursor. It's up to the caller to handle this
+ // correctly. We don't want to indicate `false` though if it
+ // actually skipped valid characters.
+ return cursor;
+ }
+
+ return false;
+ };
+}
+/**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+
+var skipWhitespace = skip(/\s/);
+/**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+var skipSpaces = skip(" \t");
+/**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+var skipToLineEnd = skip(",; \t");
+/**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+var skipEverythingButNewLine = skip(/[^\r\n]/);
+/**
+ * @param {string} text
+ * @param {number | false} index
+ * @returns {number | false}
+ */
+
+function skipInlineComment(text, index) {
+ if (index === false) {
+ return false;
+ }
+
+ if (text.charAt(index) === "/" && text.charAt(index + 1) === "*") {
+ for (var i = index + 2; i < text.length; ++i) {
+ if (text.charAt(i) === "*" && text.charAt(i + 1) === "/") {
+ return i + 2;
+ }
+ }
+ }
+
+ return index;
+}
+/**
+ * @param {string} text
+ * @param {number | false} index
+ * @returns {number | false}
+ */
+
+
+function skipTrailingComment(text, index) {
+ if (index === false) {
+ return false;
+ }
+
+ if (text.charAt(index) === "/" && text.charAt(index + 1) === "/") {
+ return skipEverythingButNewLine(text, index);
+ }
+
+ return index;
+} // This one doesn't use the above helper function because it wants to
+// test \r\n in order and `skip` doesn't support ordering and we only
+// want to skip one newline. It's simple to implement.
+
+/**
+ * @param {string} text
+ * @param {number | false} index
+ * @param {SkipOptions=} opts
+ * @returns {number | false}
+ */
+
+
+function skipNewline(text, index, opts) {
+ var backwards = opts && opts.backwards;
+
+ if (index === false) {
+ return false;
+ }
+
+ var atIndex = text.charAt(index);
+
+ if (backwards) {
+ if (text.charAt(index - 1) === "\r" && atIndex === "\n") {
+ return index - 2;
+ }
+
+ if (atIndex === "\n" || atIndex === "\r" || atIndex === "\u2028" || atIndex === "\u2029") {
+ return index - 1;
+ }
+ } else {
+ if (atIndex === "\r" && text.charAt(index + 1) === "\n") {
+ return index + 2;
+ }
+
+ if (atIndex === "\n" || atIndex === "\r" || atIndex === "\u2028" || atIndex === "\u2029") {
+ return index + 1;
+ }
+ }
+
+ return index;
+}
+/**
+ * @param {string} text
+ * @param {number} index
+ * @param {SkipOptions=} opts
+ * @returns {boolean}
+ */
+
+
+function hasNewline(text, index, opts) {
+ opts = opts || {};
+ var idx = skipSpaces(text, opts.backwards ? index - 1 : index, opts);
+ var idx2 = skipNewline(text, idx, opts);
+ return idx !== idx2;
+}
+/**
+ * @param {string} text
+ * @param {number} start
+ * @param {number} end
+ * @returns {boolean}
+ */
+
+
+function hasNewlineInRange(text, start, end) {
+ for (var i = start; i < end; ++i) {
+ if (text.charAt(i) === "\n") {
+ return true;
+ }
+ }
+
+ return false;
+} // Note: this function doesn't ignore leading comments unlike isNextLineEmpty
+
+/**
+ * @template N
+ * @param {string} text
+ * @param {N} node
+ * @param {(node: N) => number} locStart
+ */
+
+
+function isPreviousLineEmpty(text, node, locStart) {
+ /** @type {number | false} */
+ var idx = locStart(node) - 1;
+ idx = skipSpaces(text, idx, {
+ backwards: true
+ });
+ idx = skipNewline(text, idx, {
+ backwards: true
+ });
+ idx = skipSpaces(text, idx, {
+ backwards: true
+ });
+ var idx2 = skipNewline(text, idx, {
+ backwards: true
+ });
+ return idx !== idx2;
+}
+/**
+ * @param {string} text
+ * @param {number} index
+ * @returns {boolean}
+ */
+
+
+function isNextLineEmptyAfterIndex(text, index) {
+ /** @type {number | false} */
+ var oldIdx = null;
+ /** @type {number | false} */
+
+ var idx = index;
+
+ while (idx !== oldIdx) {
+ // We need to skip all the potential trailing inline comments
+ oldIdx = idx;
+ idx = skipToLineEnd(text, idx);
+ idx = skipInlineComment(text, idx);
+ idx = skipSpaces(text, idx);
+ }
+
+ idx = skipTrailingComment(text, idx);
+ idx = skipNewline(text, idx);
+ return idx !== false && hasNewline(text, idx);
+}
+/**
+ * @template N
+ * @param {string} text
+ * @param {N} node
+ * @param {(node: N) => number} locEnd
+ * @returns {boolean}
+ */
+
+
+function isNextLineEmpty(text, node, locEnd) {
+ return isNextLineEmptyAfterIndex(text, locEnd(node));
+}
+/**
+ * @param {string} text
+ * @param {number} idx
+ * @returns {number | false}
+ */
+
+
+function getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, idx) {
+ /** @type {number | false} */
+ var oldIdx = null;
+ /** @type {number | false} */
+
+ var nextIdx = idx;
+
+ while (nextIdx !== oldIdx) {
+ oldIdx = nextIdx;
+ nextIdx = skipSpaces(text, nextIdx);
+ nextIdx = skipInlineComment(text, nextIdx);
+ nextIdx = skipTrailingComment(text, nextIdx);
+ nextIdx = skipNewline(text, nextIdx);
+ }
+
+ return nextIdx;
+}
+/**
+ * @template N
+ * @param {string} text
+ * @param {N} node
+ * @param {(node: N) => number} locEnd
+ * @returns {number | false}
+ */
+
+
+function getNextNonSpaceNonCommentCharacterIndex(text, node, locEnd) {
+ return getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, locEnd(node));
+}
+/**
+ * @template N
+ * @param {string} text
+ * @param {N} node
+ * @param {(node: N) => number} locEnd
+ * @returns {string}
+ */
+
+
+function getNextNonSpaceNonCommentCharacter(text, node, locEnd) {
+ return text.charAt( // @ts-ignore => TBD: can return false, should we define a fallback?
+ getNextNonSpaceNonCommentCharacterIndex(text, node, locEnd));
+}
+/**
+ * @param {string} text
+ * @param {number} index
+ * @param {SkipOptions=} opts
+ * @returns {boolean}
+ */
+
+
+function hasSpaces(text, index, opts) {
+ opts = opts || {};
+ var idx = skipSpaces(text, opts.backwards ? index - 1 : index, opts);
+ return idx !== index;
+}
+/**
+ * @param {{range?: [number, number], start?: number}} node
+ * @param {number} index
+ */
+
+
+function setLocStart(node, index) {
+ if (node.range) {
+ node.range[0] = index;
+ } else {
+ node.start = index;
+ }
+}
+/**
+ * @param {{range?: [number, number], end?: number}} node
+ * @param {number} index
+ */
+
+
+function setLocEnd(node, index) {
+ if (node.range) {
+ node.range[1] = index;
+ } else {
+ node.end = index;
+ }
+}
+
+var PRECEDENCE = {};
+[["|>"], ["??"], ["||"], ["&&"], ["|"], ["^"], ["&"], ["==", "===", "!=", "!=="], ["<", ">", "<=", ">=", "in", "instanceof"], [">>", "<<", ">>>"], ["+", "-"], ["*", "/", "%"], ["**"]].forEach(function (tier, i) {
+ tier.forEach(function (op) {
+ PRECEDENCE[op] = i;
+ });
+});
+
+function getPrecedence(op) {
+ return PRECEDENCE[op];
+}
+
+var equalityOperators = {
+ "==": true,
+ "!=": true,
+ "===": true,
+ "!==": true
+};
+var multiplicativeOperators = {
+ "*": true,
+ "/": true,
+ "%": true
+};
+var bitshiftOperators = {
+ ">>": true,
+ ">>>": true,
+ "<<": true
+};
+
+function shouldFlatten(parentOp, nodeOp) {
+ if (getPrecedence(nodeOp) !== getPrecedence(parentOp)) {
+ return false;
+ } // ** is right-associative
+ // x ** y ** z --> x ** (y ** z)
+
+
+ if (parentOp === "**") {
+ return false;
+ } // x == y == z --> (x == y) == z
+
+
+ if (equalityOperators[parentOp] && equalityOperators[nodeOp]) {
+ return false;
+ } // x * y % z --> (x * y) % z
+
+
+ if (nodeOp === "%" && multiplicativeOperators[parentOp] || parentOp === "%" && multiplicativeOperators[nodeOp]) {
+ return false;
+ } // x * y / z --> (x * y) / z
+ // x / y * z --> (x / y) * z
+
+
+ if (nodeOp !== parentOp && multiplicativeOperators[nodeOp] && multiplicativeOperators[parentOp]) {
+ return false;
+ } // x << y << z --> (x << y) << z
+
+
+ if (bitshiftOperators[parentOp] && bitshiftOperators[nodeOp]) {
+ return false;
+ }
+
+ return true;
+}
+
+function isBitwiseOperator(operator) {
+ return !!bitshiftOperators[operator] || operator === "|" || operator === "^" || operator === "&";
+} // Tests if an expression starts with `{`, or (if forbidFunctionClassAndDoExpr
+// holds) `function`, `class`, or `do {}`. Will be overzealous if there's
+// already necessary grouping parentheses.
+
+
+function startsWithNoLookaheadToken(node, forbidFunctionClassAndDoExpr) {
+ node = getLeftMost(node);
+
+ switch (node.type) {
+ case "FunctionExpression":
+ case "ClassExpression":
+ case "DoExpression":
+ return forbidFunctionClassAndDoExpr;
+
+ case "ObjectExpression":
+ return true;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return startsWithNoLookaheadToken(node.object, forbidFunctionClassAndDoExpr);
+
+ case "TaggedTemplateExpression":
+ if (node.tag.type === "FunctionExpression") {
+ // IIFEs are always already parenthesized
+ return false;
+ }
+
+ return startsWithNoLookaheadToken(node.tag, forbidFunctionClassAndDoExpr);
+
+ case "CallExpression":
+ case "OptionalCallExpression":
+ if (node.callee.type === "FunctionExpression") {
+ // IIFEs are always already parenthesized
+ return false;
+ }
+
+ return startsWithNoLookaheadToken(node.callee, forbidFunctionClassAndDoExpr);
+
+ case "ConditionalExpression":
+ return startsWithNoLookaheadToken(node.test, forbidFunctionClassAndDoExpr);
+
+ case "UpdateExpression":
+ return !node.prefix && startsWithNoLookaheadToken(node.argument, forbidFunctionClassAndDoExpr);
+
+ case "BindExpression":
+ return node.object && startsWithNoLookaheadToken(node.object, forbidFunctionClassAndDoExpr);
+
+ case "SequenceExpression":
+ return startsWithNoLookaheadToken(node.expressions[0], forbidFunctionClassAndDoExpr);
+
+ case "TSAsExpression":
+ return startsWithNoLookaheadToken(node.expression, forbidFunctionClassAndDoExpr);
+
+ default:
+ return false;
+ }
+}
+
+function getLeftMost(node) {
+ if (node.left) {
+ return getLeftMost(node.left);
+ }
+
+ return node;
+}
+/**
+ * @param {string} value
+ * @param {number} tabWidth
+ * @param {number=} startIndex
+ * @returns {number}
+ */
+
+
+function getAlignmentSize(value, tabWidth, startIndex) {
+ startIndex = startIndex || 0;
+ var size = 0;
+
+ for (var i = startIndex; i < value.length; ++i) {
+ if (value[i] === "\t") {
+ // Tabs behave in a way that they are aligned to the nearest
+ // multiple of tabWidth:
+ // 0 -> 4, 1 -> 4, 2 -> 4, 3 -> 4
+ // 4 -> 8, 5 -> 8, 6 -> 8, 7 -> 8 ...
+ size = size + tabWidth - size % tabWidth;
+ } else {
+ size++;
+ }
+ }
+
+ return size;
+}
+/**
+ * @param {string} value
+ * @param {number} tabWidth
+ * @returns {number}
+ */
+
+
+function getIndentSize(value, tabWidth) {
+ var lastNewlineIndex = value.lastIndexOf("\n");
+
+ if (lastNewlineIndex === -1) {
+ return 0;
+ }
+
+ return getAlignmentSize( // All the leading whitespaces
+ value.slice(lastNewlineIndex + 1).match(/^[ \t]*/)[0], tabWidth);
+}
+/**
+ * @typedef {'"' | "'"} Quote
+ */
+
+/**
+ *
+ * @param {string} raw
+ * @param {Quote} preferredQuote
+ * @returns {Quote}
+ */
+
+
+function getPreferredQuote(raw, preferredQuote) {
+ // `rawContent` is the string exactly like it appeared in the input source
+ // code, without its enclosing quotes.
+ var rawContent = raw.slice(1, -1);
+ /** @type {{ quote: '"', regex: RegExp }} */
+
+ var double = {
+ quote: '"',
+ regex: /"/g
+ };
+ /** @type {{ quote: "'", regex: RegExp }} */
+
+ var single = {
+ quote: "'",
+ regex: /'/g
+ };
+ var preferred = preferredQuote === "'" ? single : double;
+ var alternate = preferred === single ? double : single;
+ var result = preferred.quote; // If `rawContent` contains at least one of the quote preferred for enclosing
+ // the string, we might want to enclose with the alternate quote instead, to
+ // minimize the number of escaped quotes.
+
+ if (rawContent.includes(preferred.quote) || rawContent.includes(alternate.quote)) {
+ var numPreferredQuotes = (rawContent.match(preferred.regex) || []).length;
+ var numAlternateQuotes = (rawContent.match(alternate.regex) || []).length;
+ result = numPreferredQuotes > numAlternateQuotes ? alternate.quote : preferred.quote;
+ }
+
+ return result;
+}
+
+function printString(raw, options, isDirectiveLiteral) {
+ // `rawContent` is the string exactly like it appeared in the input source
+ // code, without its enclosing quotes.
+ var rawContent = raw.slice(1, -1); // Check for the alternate quote, to determine if we're allowed to swap
+ // the quotes on a DirectiveLiteral.
+
+ var canChangeDirectiveQuotes = !rawContent.includes('"') && !rawContent.includes("'");
+ /** @type {Quote} */
+
+ var enclosingQuote = options.parser === "json" ? '"' : options.__isInHtmlAttribute ? "'" : getPreferredQuote(raw, options.singleQuote ? "'" : '"'); // Directives are exact code unit sequences, which means that you can't
+ // change the escape sequences they use.
+ // See https://github.com/prettier/prettier/issues/1555
+ // and https://tc39.github.io/ecma262/#directive-prologue
+
+ if (isDirectiveLiteral) {
+ if (canChangeDirectiveQuotes) {
+ return enclosingQuote + rawContent + enclosingQuote;
+ }
+
+ return raw;
+ } // It might sound unnecessary to use `makeString` even if the string already
+ // is enclosed with `enclosingQuote`, but it isn't. The string could contain
+ // unnecessary escapes (such as in `"\'"`). Always using `makeString` makes
+ // sure that we consistently output the minimum amount of escaped quotes.
+
+
+ return makeString(rawContent, enclosingQuote, !(options.parser === "css" || options.parser === "less" || options.parser === "scss" || options.embeddedInHtml));
+}
+/**
+ * @param {string} rawContent
+ * @param {Quote} enclosingQuote
+ * @param {boolean=} unescapeUnnecessaryEscapes
+ * @returns {string}
+ */
+
+
+function makeString(rawContent, enclosingQuote, unescapeUnnecessaryEscapes) {
+ var otherQuote = enclosingQuote === '"' ? "'" : '"'; // Matches _any_ escape and unescaped quotes (both single and double).
+
+ var regex = /\\([\s\S])|(['"])/g; // Escape and unescape single and double quotes as needed to be able to
+ // enclose `rawContent` with `enclosingQuote`.
+
+ var newContent = rawContent.replace(regex, function (match, escaped, quote) {
+ // If we matched an escape, and the escaped character is a quote of the
+ // other type than we intend to enclose the string with, there's no need for
+ // it to be escaped, so return it _without_ the backslash.
+ if (escaped === otherQuote) {
+ return escaped;
+ } // If we matched an unescaped quote and it is of the _same_ type as we
+ // intend to enclose the string with, it must be escaped, so return it with
+ // a backslash.
+
+
+ if (quote === enclosingQuote) {
+ return "\\" + quote;
+ }
+
+ if (quote) {
+ return quote;
+ } // Unescape any unnecessarily escaped character.
+ // Adapted from https://github.com/eslint/eslint/blob/de0b4ad7bd820ade41b1f606008bea68683dc11a/lib/rules/no-useless-escape.js#L27
+
+
+ return unescapeUnnecessaryEscapes && /^[^\\nrvtbfux\r\n\u2028\u2029"'0-7]$/.test(escaped) ? escaped : "\\" + escaped;
+ });
+ return enclosingQuote + newContent + enclosingQuote;
+}
+
+function printNumber(rawNumber) {
+ return rawNumber.toLowerCase() // Remove unnecessary plus and zeroes from scientific notation.
+ .replace(/^([+-]?[\d.]+e)(?:\+|(-))?0*(\d)/, "$1$2$3") // Remove unnecessary scientific notation (1e0).
+ .replace(/^([+-]?[\d.]+)e[+-]?0+$/, "$1") // Make sure numbers always start with a digit.
+ .replace(/^([+-])?\./, "$10.") // Remove extraneous trailing decimal zeroes.
+ .replace(/(\.\d+?)0+(?=e|$)/, "$1") // Remove trailing dot.
+ .replace(/\.(?=e|$)/, "");
+}
+/**
+ * @param {string} str
+ * @param {string} target
+ * @returns {number}
+ */
+
+
+function getMaxContinuousCount(str, target) {
+ var results = str.match(new RegExp(`(${escapeStringRegexp(target)})+`, "g"));
+
+ if (results === null) {
+ return 0;
+ }
+
+ return results.reduce(function (maxCount, result) {
+ return Math.max(maxCount, result.length / target.length);
+ }, 0);
+}
+
+function getMinNotPresentContinuousCount(str, target) {
+ var matches = str.match(new RegExp(`(${escapeStringRegexp(target)})+`, "g"));
+
+ if (matches === null) {
+ return 0;
+ }
+
+ var countPresent = new Map();
+ var max = 0;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = matches[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var match = _step.value;
+ var count = match.length / target.length;
+ countPresent.set(count, true);
+
+ if (count > max) {
+ max = count;
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ for (var i = 1; i < max; i++) {
+ if (!countPresent.get(i)) {
+ return i;
+ }
+ }
+
+ return max + 1;
+}
+/**
+ * @param {string} text
+ * @returns {number}
+ */
+
+
+function getStringWidth(text) {
+ if (!text) {
+ return 0;
+ } // shortcut to avoid needless string `RegExp`s, replacements, and allocations within `string-width`
+
+
+ if (!notAsciiRegex.test(text)) {
+ return text.length;
+ }
+
+ return stringWidth_1(text);
+}
+
+function hasIgnoreComment(path) {
+ var node = path.getValue();
+ return hasNodeIgnoreComment(node);
+}
+
+function hasNodeIgnoreComment(node) {
+ return node && node.comments && node.comments.length > 0 && node.comments.some(function (comment) {
+ return comment.value.trim() === "prettier-ignore";
+ });
+}
+
+function matchAncestorTypes(path, types, index) {
+ index = index || 0;
+ types = types.slice();
+
+ while (types.length) {
+ var parent = path.getParentNode(index);
+ var type = types.shift();
+
+ if (!parent || parent.type !== type) {
+ return false;
+ }
+
+ index++;
+ }
+
+ return true;
+}
+
+function addCommentHelper(node, comment) {
+ var comments = node.comments || (node.comments = []);
+ comments.push(comment);
+ comment.printed = false; // For some reason, TypeScript parses `// x` inside of JSXText as a comment
+ // We already "print" it via the raw text, we don't need to re-print it as a
+ // comment
+
+ if (node.type === "JSXText") {
+ comment.printed = true;
+ }
+}
+
+function addLeadingComment(node, comment) {
+ comment.leading = true;
+ comment.trailing = false;
+ addCommentHelper(node, comment);
+}
+
+function addDanglingComment(node, comment) {
+ comment.leading = false;
+ comment.trailing = false;
+ addCommentHelper(node, comment);
+}
+
+function addTrailingComment(node, comment) {
+ comment.leading = false;
+ comment.trailing = true;
+ addCommentHelper(node, comment);
+}
+
+function isWithinParentArrayProperty(path, propertyName) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+
+ if (parent == null) {
+ return false;
+ }
+
+ if (!Array.isArray(parent[propertyName])) {
+ return false;
+ }
+
+ var key = path.getName();
+ return parent[propertyName][key] === node;
+}
+
+function replaceEndOfLineWith(text, replacement) {
+ var parts = [];
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = text.split("\n")[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var part = _step2.value;
+
+ if (parts.length !== 0) {
+ parts.push(replacement);
+ }
+
+ parts.push(part);
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return parts;
+}
+
+var util = {
+ replaceEndOfLineWith,
+ getStringWidth,
+ getMaxContinuousCount,
+ getMinNotPresentContinuousCount,
+ getPrecedence,
+ shouldFlatten,
+ isBitwiseOperator,
+ isExportDeclaration,
+ getParentExportDeclaration,
+ getPenultimate,
+ getLast,
+ getNextNonSpaceNonCommentCharacterIndexWithStartIndex,
+ getNextNonSpaceNonCommentCharacterIndex,
+ getNextNonSpaceNonCommentCharacter,
+ skip,
+ skipWhitespace,
+ skipSpaces,
+ skipToLineEnd,
+ skipEverythingButNewLine,
+ skipInlineComment,
+ skipTrailingComment,
+ skipNewline,
+ isNextLineEmptyAfterIndex,
+ isNextLineEmpty,
+ isPreviousLineEmpty,
+ hasNewline,
+ hasNewlineInRange,
+ hasSpaces,
+ setLocStart,
+ setLocEnd,
+ startsWithNoLookaheadToken,
+ getAlignmentSize,
+ getIndentSize,
+ getPreferredQuote,
+ printString,
+ printNumber,
+ hasIgnoreComment,
+ hasNodeIgnoreComment,
+ makeString,
+ matchAncestorTypes,
+ addLeadingComment,
+ addDanglingComment,
+ addTrailingComment,
+ isWithinParentArrayProperty
+};
+
+function guessEndOfLine(text) {
+ var index = text.indexOf("\r");
+
+ if (index >= 0) {
+ return text.charAt(index + 1) === "\n" ? "crlf" : "cr";
+ }
+
+ return "lf";
+}
+
+function convertEndOfLineToChars(value) {
+ switch (value) {
+ case "cr":
+ return "\r";
+
+ case "crlf":
+ return "\r\n";
+
+ default:
+ return "\n";
+ }
+}
+
+var endOfLine = {
+ guessEndOfLine,
+ convertEndOfLineToChars
+};
+
+var getStringWidth$1 = util.getStringWidth;
+var convertEndOfLineToChars$1 = endOfLine.convertEndOfLineToChars;
+var concat$1 = docBuilders.concat,
+ fill$1 = docBuilders.fill,
+ cursor$1 = docBuilders.cursor;
+/** @type {Record<symbol, typeof MODE_BREAK | typeof MODE_FLAT>} */
+
+var groupModeMap;
+var MODE_BREAK = 1;
+var MODE_FLAT = 2;
+
+function rootIndent() {
+ return {
+ value: "",
+ length: 0,
+ queue: []
+ };
+}
+
+function makeIndent(ind, options) {
+ return generateInd(ind, {
+ type: "indent"
+ }, options);
+}
+
+function makeAlign(ind, n, options) {
+ return n === -Infinity ? ind.root || rootIndent() : n < 0 ? generateInd(ind, {
+ type: "dedent"
+ }, options) : !n ? ind : n.type === "root" ? Object.assign({}, ind, {
+ root: ind
+ }) : typeof n === "string" ? generateInd(ind, {
+ type: "stringAlign",
+ n
+ }, options) : generateInd(ind, {
+ type: "numberAlign",
+ n
+ }, options);
+}
+
+function generateInd(ind, newPart, options) {
+ var queue = newPart.type === "dedent" ? ind.queue.slice(0, -1) : ind.queue.concat(newPart);
+ var value = "";
+ var length = 0;
+ var lastTabs = 0;
+ var lastSpaces = 0;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = queue[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var part = _step.value;
+
+ switch (part.type) {
+ case "indent":
+ flush();
+
+ if (options.useTabs) {
+ addTabs(1);
+ } else {
+ addSpaces(options.tabWidth);
+ }
+
+ break;
+
+ case "stringAlign":
+ flush();
+ value += part.n;
+ length += part.n.length;
+ break;
+
+ case "numberAlign":
+ lastTabs += 1;
+ lastSpaces += part.n;
+ break;
+
+ /* istanbul ignore next */
+
+ default:
+ throw new Error(`Unexpected type '${part.type}'`);
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ flushSpaces();
+ return Object.assign({}, ind, {
+ value,
+ length,
+ queue
+ });
+
+ function addTabs(count) {
+ value += "\t".repeat(count);
+ length += options.tabWidth * count;
+ }
+
+ function addSpaces(count) {
+ value += " ".repeat(count);
+ length += count;
+ }
+
+ function flush() {
+ if (options.useTabs) {
+ flushTabs();
+ } else {
+ flushSpaces();
+ }
+ }
+
+ function flushTabs() {
+ if (lastTabs > 0) {
+ addTabs(lastTabs);
+ }
+
+ resetLast();
+ }
+
+ function flushSpaces() {
+ if (lastSpaces > 0) {
+ addSpaces(lastSpaces);
+ }
+
+ resetLast();
+ }
+
+ function resetLast() {
+ lastTabs = 0;
+ lastSpaces = 0;
+ }
+}
+
+function trim$1(out) {
+ if (out.length === 0) {
+ return 0;
+ }
+
+ var trimCount = 0; // Trim whitespace at the end of line
+
+ while (out.length > 0 && typeof out[out.length - 1] === "string" && out[out.length - 1].match(/^[ \t]*$/)) {
+ trimCount += out.pop().length;
+ }
+
+ if (out.length && typeof out[out.length - 1] === "string") {
+ var trimmed = out[out.length - 1].replace(/[ \t]*$/, "");
+ trimCount += out[out.length - 1].length - trimmed.length;
+ out[out.length - 1] = trimmed;
+ }
+
+ return trimCount;
+}
+
+function fits(next, restCommands, width, options, mustBeFlat) {
+ var restIdx = restCommands.length;
+ var cmds = [next]; // `out` is only used for width counting because `trim` requires to look
+ // backwards for space characters.
+
+ var out = [];
+
+ while (width >= 0) {
+ if (cmds.length === 0) {
+ if (restIdx === 0) {
+ return true;
+ }
+
+ cmds.push(restCommands[restIdx - 1]);
+ restIdx--;
+ continue;
+ }
+
+ var x = cmds.pop();
+ var ind = x[0];
+ var mode = x[1];
+ var doc = x[2];
+
+ if (typeof doc === "string") {
+ out.push(doc);
+ width -= getStringWidth$1(doc);
+ } else {
+ switch (doc.type) {
+ case "concat":
+ for (var i = doc.parts.length - 1; i >= 0; i--) {
+ cmds.push([ind, mode, doc.parts[i]]);
+ }
+
+ break;
+
+ case "indent":
+ cmds.push([makeIndent(ind, options), mode, doc.contents]);
+ break;
+
+ case "align":
+ cmds.push([makeAlign(ind, doc.n, options), mode, doc.contents]);
+ break;
+
+ case "trim":
+ width += trim$1(out);
+ break;
+
+ case "group":
+ if (mustBeFlat && doc.break) {
+ return false;
+ }
+
+ cmds.push([ind, doc.break ? MODE_BREAK : mode, doc.contents]);
+
+ if (doc.id) {
+ groupModeMap[doc.id] = cmds[cmds.length - 1][1];
+ }
+
+ break;
+
+ case "fill":
+ for (var _i = doc.parts.length - 1; _i >= 0; _i--) {
+ cmds.push([ind, mode, doc.parts[_i]]);
+ }
+
+ break;
+
+ case "if-break":
+ {
+ var groupMode = doc.groupId ? groupModeMap[doc.groupId] : mode;
+
+ if (groupMode === MODE_BREAK) {
+ if (doc.breakContents) {
+ cmds.push([ind, mode, doc.breakContents]);
+ }
+ }
+
+ if (groupMode === MODE_FLAT) {
+ if (doc.flatContents) {
+ cmds.push([ind, mode, doc.flatContents]);
+ }
+ }
+
+ break;
+ }
+
+ case "line":
+ switch (mode) {
+ // fallthrough
+ case MODE_FLAT:
+ if (!doc.hard) {
+ if (!doc.soft) {
+ out.push(" ");
+ width -= 1;
+ }
+
+ break;
+ }
+
+ return true;
+
+ case MODE_BREAK:
+ return true;
+ }
+
+ break;
+ }
+ }
+ }
+
+ return false;
+}
+
+function printDocToString(doc, options) {
+ groupModeMap = {};
+ var width = options.printWidth;
+ var newLine = convertEndOfLineToChars$1(options.endOfLine);
+ var pos = 0; // cmds is basically a stack. We've turned a recursive call into a
+ // while loop which is much faster. The while loop below adds new
+ // cmds to the array instead of recursively calling `print`.
+
+ var cmds = [[rootIndent(), MODE_BREAK, doc]];
+ var out = [];
+ var shouldRemeasure = false;
+ var lineSuffix = [];
+
+ while (cmds.length !== 0) {
+ var x = cmds.pop();
+ var ind = x[0];
+ var mode = x[1];
+ var _doc = x[2];
+
+ if (typeof _doc === "string") {
+ out.push(_doc);
+ pos += getStringWidth$1(_doc);
+ } else {
+ switch (_doc.type) {
+ case "cursor":
+ out.push(cursor$1.placeholder);
+ break;
+
+ case "concat":
+ for (var i = _doc.parts.length - 1; i >= 0; i--) {
+ cmds.push([ind, mode, _doc.parts[i]]);
+ }
+
+ break;
+
+ case "indent":
+ cmds.push([makeIndent(ind, options), mode, _doc.contents]);
+ break;
+
+ case "align":
+ cmds.push([makeAlign(ind, _doc.n, options), mode, _doc.contents]);
+ break;
+
+ case "trim":
+ pos -= trim$1(out);
+ break;
+
+ case "group":
+ switch (mode) {
+ case MODE_FLAT:
+ if (!shouldRemeasure) {
+ cmds.push([ind, _doc.break ? MODE_BREAK : MODE_FLAT, _doc.contents]);
+ break;
+ }
+
+ // fallthrough
+
+ case MODE_BREAK:
+ {
+ shouldRemeasure = false;
+ var next = [ind, MODE_FLAT, _doc.contents];
+ var rem = width - pos;
+
+ if (!_doc.break && fits(next, cmds, rem, options)) {
+ cmds.push(next);
+ } else {
+ // Expanded states are a rare case where a document
+ // can manually provide multiple representations of
+ // itself. It provides an array of documents
+ // going from the least expanded (most flattened)
+ // representation first to the most expanded. If a
+ // group has these, we need to manually go through
+ // these states and find the first one that fits.
+ if (_doc.expandedStates) {
+ var mostExpanded = _doc.expandedStates[_doc.expandedStates.length - 1];
+
+ if (_doc.break) {
+ cmds.push([ind, MODE_BREAK, mostExpanded]);
+ break;
+ } else {
+ for (var _i2 = 1; _i2 < _doc.expandedStates.length + 1; _i2++) {
+ if (_i2 >= _doc.expandedStates.length) {
+ cmds.push([ind, MODE_BREAK, mostExpanded]);
+ break;
+ } else {
+ var state = _doc.expandedStates[_i2];
+ var cmd = [ind, MODE_FLAT, state];
+
+ if (fits(cmd, cmds, rem, options)) {
+ cmds.push(cmd);
+ break;
+ }
+ }
+ }
+ }
+ } else {
+ cmds.push([ind, MODE_BREAK, _doc.contents]);
+ }
+ }
+
+ break;
+ }
+ }
+
+ if (_doc.id) {
+ groupModeMap[_doc.id] = cmds[cmds.length - 1][1];
+ }
+
+ break;
+ // Fills each line with as much code as possible before moving to a new
+ // line with the same indentation.
+ //
+ // Expects doc.parts to be an array of alternating content and
+ // whitespace. The whitespace contains the linebreaks.
+ //
+ // For example:
+ // ["I", line, "love", line, "monkeys"]
+ // or
+ // [{ type: group, ... }, softline, { type: group, ... }]
+ //
+ // It uses this parts structure to handle three main layout cases:
+ // * The first two content items fit on the same line without
+ // breaking
+ // -> output the first content item and the whitespace "flat".
+ // * Only the first content item fits on the line without breaking
+ // -> output the first content item "flat" and the whitespace with
+ // "break".
+ // * Neither content item fits on the line without breaking
+ // -> output the first content item and the whitespace with "break".
+
+ case "fill":
+ {
+ var _rem = width - pos;
+
+ var parts = _doc.parts;
+
+ if (parts.length === 0) {
+ break;
+ }
+
+ var content = parts[0];
+ var contentFlatCmd = [ind, MODE_FLAT, content];
+ var contentBreakCmd = [ind, MODE_BREAK, content];
+ var contentFits = fits(contentFlatCmd, [], _rem, options, true);
+
+ if (parts.length === 1) {
+ if (contentFits) {
+ cmds.push(contentFlatCmd);
+ } else {
+ cmds.push(contentBreakCmd);
+ }
+
+ break;
+ }
+
+ var whitespace = parts[1];
+ var whitespaceFlatCmd = [ind, MODE_FLAT, whitespace];
+ var whitespaceBreakCmd = [ind, MODE_BREAK, whitespace];
+
+ if (parts.length === 2) {
+ if (contentFits) {
+ cmds.push(whitespaceFlatCmd);
+ cmds.push(contentFlatCmd);
+ } else {
+ cmds.push(whitespaceBreakCmd);
+ cmds.push(contentBreakCmd);
+ }
+
+ break;
+ } // At this point we've handled the first pair (context, separator)
+ // and will create a new fill doc for the rest of the content.
+ // Ideally we wouldn't mutate the array here but coping all the
+ // elements to a new array would make this algorithm quadratic,
+ // which is unusable for large arrays (e.g. large texts in JSX).
+
+
+ parts.splice(0, 2);
+ var remainingCmd = [ind, mode, fill$1(parts)];
+ var secondContent = parts[0];
+ var firstAndSecondContentFlatCmd = [ind, MODE_FLAT, concat$1([content, whitespace, secondContent])];
+ var firstAndSecondContentFits = fits(firstAndSecondContentFlatCmd, [], _rem, options, true);
+
+ if (firstAndSecondContentFits) {
+ cmds.push(remainingCmd);
+ cmds.push(whitespaceFlatCmd);
+ cmds.push(contentFlatCmd);
+ } else if (contentFits) {
+ cmds.push(remainingCmd);
+ cmds.push(whitespaceBreakCmd);
+ cmds.push(contentFlatCmd);
+ } else {
+ cmds.push(remainingCmd);
+ cmds.push(whitespaceBreakCmd);
+ cmds.push(contentBreakCmd);
+ }
+
+ break;
+ }
+
+ case "if-break":
+ {
+ var groupMode = _doc.groupId ? groupModeMap[_doc.groupId] : mode;
+
+ if (groupMode === MODE_BREAK) {
+ if (_doc.breakContents) {
+ cmds.push([ind, mode, _doc.breakContents]);
+ }
+ }
+
+ if (groupMode === MODE_FLAT) {
+ if (_doc.flatContents) {
+ cmds.push([ind, mode, _doc.flatContents]);
+ }
+ }
+
+ break;
+ }
+
+ case "line-suffix":
+ lineSuffix.push([ind, mode, _doc.contents]);
+ break;
+
+ case "line-suffix-boundary":
+ if (lineSuffix.length > 0) {
+ cmds.push([ind, mode, {
+ type: "line",
+ hard: true
+ }]);
+ }
+
+ break;
+
+ case "line":
+ switch (mode) {
+ case MODE_FLAT:
+ if (!_doc.hard) {
+ if (!_doc.soft) {
+ out.push(" ");
+ pos += 1;
+ }
+
+ break;
+ } else {
+ // This line was forced into the output even if we
+ // were in flattened mode, so we need to tell the next
+ // group that no matter what, it needs to remeasure
+ // because the previous measurement didn't accurately
+ // capture the entire expression (this is necessary
+ // for nested groups)
+ shouldRemeasure = true;
+ }
+
+ // fallthrough
+
+ case MODE_BREAK:
+ if (lineSuffix.length) {
+ cmds.push([ind, mode, _doc]);
+ [].push.apply(cmds, lineSuffix.reverse());
+ lineSuffix = [];
+ break;
+ }
+
+ if (_doc.literal) {
+ if (ind.root) {
+ out.push(newLine, ind.root.value);
+ pos = ind.root.length;
+ } else {
+ out.push(newLine);
+ pos = 0;
+ }
+ } else {
+ pos -= trim$1(out);
+ out.push(newLine + ind.value);
+ pos = ind.length;
+ }
+
+ break;
+ }
+
+ break;
+ }
+ }
+ }
+
+ var cursorPlaceholderIndex = out.indexOf(cursor$1.placeholder);
+
+ if (cursorPlaceholderIndex !== -1) {
+ var otherCursorPlaceholderIndex = out.indexOf(cursor$1.placeholder, cursorPlaceholderIndex + 1);
+ var beforeCursor = out.slice(0, cursorPlaceholderIndex).join("");
+ var aroundCursor = out.slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex).join("");
+ var afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join("");
+ return {
+ formatted: beforeCursor + aroundCursor + afterCursor,
+ cursorNodeStart: beforeCursor.length,
+ cursorNodeText: aroundCursor
+ };
+ }
+
+ return {
+ formatted: out.join("")
+ };
+}
+
+var docPrinter = {
+ printDocToString
+};
+
+var traverseDocOnExitStackMarker = {};
+
+function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) {
+ var docsStack = [doc];
+
+ while (docsStack.length !== 0) {
+ var _doc = docsStack.pop();
+
+ if (_doc === traverseDocOnExitStackMarker) {
+ onExit(docsStack.pop());
+ continue;
+ }
+
+ var shouldRecurse = true;
+
+ if (onEnter) {
+ if (onEnter(_doc) === false) {
+ shouldRecurse = false;
+ }
+ }
+
+ if (onExit) {
+ docsStack.push(_doc);
+ docsStack.push(traverseDocOnExitStackMarker);
+ }
+
+ if (shouldRecurse) {
+ // When there are multiple parts to process,
+ // the parts need to be pushed onto the stack in reverse order,
+ // so that they are processed in the original order
+ // when the stack is popped.
+ if (_doc.type === "concat" || _doc.type === "fill") {
+ for (var ic = _doc.parts.length, i = ic - 1; i >= 0; --i) {
+ docsStack.push(_doc.parts[i]);
+ }
+ } else if (_doc.type === "if-break") {
+ if (_doc.flatContents) {
+ docsStack.push(_doc.flatContents);
+ }
+
+ if (_doc.breakContents) {
+ docsStack.push(_doc.breakContents);
+ }
+ } else if (_doc.type === "group" && _doc.expandedStates) {
+ if (shouldTraverseConditionalGroups) {
+ for (var _ic = _doc.expandedStates.length, _i = _ic - 1; _i >= 0; --_i) {
+ docsStack.push(_doc.expandedStates[_i]);
+ }
+ } else {
+ docsStack.push(_doc.contents);
+ }
+ } else if (_doc.contents) {
+ docsStack.push(_doc.contents);
+ }
+ }
+ }
+}
+
+function mapDoc(doc, cb) {
+ if (doc.type === "concat" || doc.type === "fill") {
+ var parts = doc.parts.map(function (part) {
+ return mapDoc(part, cb);
+ });
+ return cb(Object.assign({}, doc, {
+ parts
+ }));
+ } else if (doc.type === "if-break") {
+ var breakContents = doc.breakContents && mapDoc(doc.breakContents, cb);
+ var flatContents = doc.flatContents && mapDoc(doc.flatContents, cb);
+ return cb(Object.assign({}, doc, {
+ breakContents,
+ flatContents
+ }));
+ } else if (doc.contents) {
+ var contents = mapDoc(doc.contents, cb);
+ return cb(Object.assign({}, doc, {
+ contents
+ }));
+ }
+
+ return cb(doc);
+}
+
+function findInDoc(doc, fn, defaultValue) {
+ var result = defaultValue;
+ var hasStopped = false;
+
+ function findInDocOnEnterFn(doc) {
+ var maybeResult = fn(doc);
+
+ if (maybeResult !== undefined) {
+ hasStopped = true;
+ result = maybeResult;
+ }
+
+ if (hasStopped) {
+ return false;
+ }
+ }
+
+ traverseDoc(doc, findInDocOnEnterFn);
+ return result;
+}
+
+function isEmpty(n) {
+ return typeof n === "string" && n.length === 0;
+}
+
+function isLineNextFn(doc) {
+ if (typeof doc === "string") {
+ return false;
+ }
+
+ if (doc.type === "line") {
+ return true;
+ }
+}
+
+function isLineNext(doc) {
+ return findInDoc(doc, isLineNextFn, false);
+}
+
+function willBreakFn(doc) {
+ if (doc.type === "group" && doc.break) {
+ return true;
+ }
+
+ if (doc.type === "line" && doc.hard) {
+ return true;
+ }
+
+ if (doc.type === "break-parent") {
+ return true;
+ }
+}
+
+function willBreak(doc) {
+ return findInDoc(doc, willBreakFn, false);
+}
+
+function breakParentGroup(groupStack) {
+ if (groupStack.length > 0) {
+ var parentGroup = groupStack[groupStack.length - 1]; // Breaks are not propagated through conditional groups because
+ // the user is expected to manually handle what breaks.
+
+ if (!parentGroup.expandedStates) {
+ parentGroup.break = true;
+ }
+ }
+
+ return null;
+}
+
+function propagateBreaks(doc) {
+ var alreadyVisitedSet = new Set();
+ var groupStack = [];
+
+ function propagateBreaksOnEnterFn(doc) {
+ if (doc.type === "break-parent") {
+ breakParentGroup(groupStack);
+ }
+
+ if (doc.type === "group") {
+ groupStack.push(doc);
+
+ if (alreadyVisitedSet.has(doc)) {
+ return false;
+ }
+
+ alreadyVisitedSet.add(doc);
+ }
+ }
+
+ function propagateBreaksOnExitFn(doc) {
+ if (doc.type === "group") {
+ var group = groupStack.pop();
+
+ if (group.break) {
+ breakParentGroup(groupStack);
+ }
+ }
+ }
+
+ traverseDoc(doc, propagateBreaksOnEnterFn, propagateBreaksOnExitFn,
+ /* shouldTraverseConditionalGroups */
+ true);
+}
+
+function removeLinesFn(doc) {
+ // Force this doc into flat mode by statically converting all
+ // lines into spaces (or soft lines into nothing). Hard lines
+ // should still output because there's too great of a chance
+ // of breaking existing assumptions otherwise.
+ if (doc.type === "line" && !doc.hard) {
+ return doc.soft ? "" : " ";
+ } else if (doc.type === "if-break") {
+ return doc.flatContents || "";
+ }
+
+ return doc;
+}
+
+function removeLines(doc) {
+ return mapDoc(doc, removeLinesFn);
+}
+
+function stripTrailingHardline(doc) {
+ // HACK remove ending hardline, original PR: #1984
+ if (doc.type === "concat" && doc.parts.length !== 0) {
+ var lastPart = doc.parts[doc.parts.length - 1];
+
+ if (lastPart.type === "concat") {
+ if (lastPart.parts.length === 2 && lastPart.parts[0].hard && lastPart.parts[1].type === "break-parent") {
+ return {
+ type: "concat",
+ parts: doc.parts.slice(0, -1)
+ };
+ }
+
+ return {
+ type: "concat",
+ parts: doc.parts.slice(0, -1).concat(stripTrailingHardline(lastPart))
+ };
+ }
+ }
+
+ return doc;
+}
+
+var docUtils = {
+ isEmpty,
+ willBreak,
+ isLineNext,
+ traverseDoc,
+ findInDoc,
+ mapDoc,
+ propagateBreaks,
+ removeLines,
+ stripTrailingHardline
+};
+
+function flattenDoc(doc) {
+ if (doc.type === "concat") {
+ var res = [];
+
+ for (var i = 0; i < doc.parts.length; ++i) {
+ var doc2 = doc.parts[i];
+
+ if (typeof doc2 !== "string" && doc2.type === "concat") {
+ [].push.apply(res, flattenDoc(doc2).parts);
+ } else {
+ var flattened = flattenDoc(doc2);
+
+ if (flattened !== "") {
+ res.push(flattened);
+ }
+ }
+ }
+
+ return Object.assign({}, doc, {
+ parts: res
+ });
+ } else if (doc.type === "if-break") {
+ return Object.assign({}, doc, {
+ breakContents: doc.breakContents != null ? flattenDoc(doc.breakContents) : null,
+ flatContents: doc.flatContents != null ? flattenDoc(doc.flatContents) : null
+ });
+ } else if (doc.type === "group") {
+ return Object.assign({}, doc, {
+ contents: flattenDoc(doc.contents),
+ expandedStates: doc.expandedStates ? doc.expandedStates.map(flattenDoc) : doc.expandedStates
+ });
+ } else if (doc.contents) {
+ return Object.assign({}, doc, {
+ contents: flattenDoc(doc.contents)
+ });
+ }
+
+ return doc;
+}
+
+function printDoc(doc) {
+ if (typeof doc === "string") {
+ return JSON.stringify(doc);
+ }
+
+ if (doc.type === "line") {
+ if (doc.literal) {
+ return "literalline";
+ }
+
+ if (doc.hard) {
+ return "hardline";
+ }
+
+ if (doc.soft) {
+ return "softline";
+ }
+
+ return "line";
+ }
+
+ if (doc.type === "break-parent") {
+ return "breakParent";
+ }
+
+ if (doc.type === "trim") {
+ return "trim";
+ }
+
+ if (doc.type === "concat") {
+ return "[" + doc.parts.map(printDoc).join(", ") + "]";
+ }
+
+ if (doc.type === "indent") {
+ return "indent(" + printDoc(doc.contents) + ")";
+ }
+
+ if (doc.type === "align") {
+ return doc.n === -Infinity ? "dedentToRoot(" + printDoc(doc.contents) + ")" : doc.n < 0 ? "dedent(" + printDoc(doc.contents) + ")" : doc.n.type === "root" ? "markAsRoot(" + printDoc(doc.contents) + ")" : "align(" + JSON.stringify(doc.n) + ", " + printDoc(doc.contents) + ")";
+ }
+
+ if (doc.type === "if-break") {
+ return "ifBreak(" + printDoc(doc.breakContents) + (doc.flatContents ? ", " + printDoc(doc.flatContents) : "") + ")";
+ }
+
+ if (doc.type === "group") {
+ if (doc.expandedStates) {
+ return "conditionalGroup(" + "[" + doc.expandedStates.map(printDoc).join(",") + "])";
+ }
+
+ return (doc.break ? "wrappedGroup" : "group") + "(" + printDoc(doc.contents) + ")";
+ }
+
+ if (doc.type === "fill") {
+ return "fill" + "(" + doc.parts.map(printDoc).join(", ") + ")";
+ }
+
+ if (doc.type === "line-suffix") {
+ return "lineSuffix(" + printDoc(doc.contents) + ")";
+ }
+
+ if (doc.type === "line-suffix-boundary") {
+ return "lineSuffixBoundary";
+ }
+
+ throw new Error("Unknown doc type " + doc.type);
+}
+
+var docDebug = {
+ printDocToDebug: function printDocToDebug(doc) {
+ return printDoc(flattenDoc(doc));
+ }
+};
+
+var doc = {
+ builders: docBuilders,
+ printer: docPrinter,
+ utils: docUtils,
+ debug: docDebug
+};
+
+var mapDoc$1 = doc.utils.mapDoc;
+
+function isNextLineEmpty$1(text, node, options) {
+ return util.isNextLineEmpty(text, node, options.locEnd);
+}
+
+function isPreviousLineEmpty$1(text, node, options) {
+ return util.isPreviousLineEmpty(text, node, options.locStart);
+}
+
+function getNextNonSpaceNonCommentCharacterIndex$1(text, node, options) {
+ return util.getNextNonSpaceNonCommentCharacterIndex(text, node, options.locEnd);
+}
+
+var utilShared = {
+ getMaxContinuousCount: util.getMaxContinuousCount,
+ getStringWidth: util.getStringWidth,
+ getAlignmentSize: util.getAlignmentSize,
+ getIndentSize: util.getIndentSize,
+ skip: util.skip,
+ skipWhitespace: util.skipWhitespace,
+ skipSpaces: util.skipSpaces,
+ skipNewline: util.skipNewline,
+ skipToLineEnd: util.skipToLineEnd,
+ skipEverythingButNewLine: util.skipEverythingButNewLine,
+ skipInlineComment: util.skipInlineComment,
+ skipTrailingComment: util.skipTrailingComment,
+ hasNewline: util.hasNewline,
+ hasNewlineInRange: util.hasNewlineInRange,
+ hasSpaces: util.hasSpaces,
+ isNextLineEmpty: isNextLineEmpty$1,
+ isNextLineEmptyAfterIndex: util.isNextLineEmptyAfterIndex,
+ isPreviousLineEmpty: isPreviousLineEmpty$1,
+ getNextNonSpaceNonCommentCharacterIndex: getNextNonSpaceNonCommentCharacterIndex$1,
+ mapDoc: mapDoc$1,
+ // TODO: remove in 2.0, we already exposed it in docUtils
+ makeString: util.makeString,
+ addLeadingComment: util.addLeadingComment,
+ addDanglingComment: util.addDanglingComment,
+ addTrailingComment: util.addTrailingComment
+};
+
+var _require$$0$builders = doc.builders,
+ concat$2 = _require$$0$builders.concat,
+ hardline$1 = _require$$0$builders.hardline,
+ breakParent$1 = _require$$0$builders.breakParent,
+ indent$1 = _require$$0$builders.indent,
+ lineSuffix$1 = _require$$0$builders.lineSuffix,
+ join$1 = _require$$0$builders.join,
+ cursor$2 = _require$$0$builders.cursor;
+var hasNewline$1 = util.hasNewline,
+ skipNewline$1 = util.skipNewline,
+ isPreviousLineEmpty$2 = util.isPreviousLineEmpty;
+var addLeadingComment$1 = utilShared.addLeadingComment,
+ addDanglingComment$1 = utilShared.addDanglingComment,
+ addTrailingComment$1 = utilShared.addTrailingComment;
+var childNodesCacheKey = Symbol("child-nodes");
+
+function getSortedChildNodes(node, options, resultArray) {
+ if (!node) {
+ return;
+ }
+
+ var printer = options.printer,
+ locStart = options.locStart,
+ locEnd = options.locEnd;
+
+ if (resultArray) {
+ if (node && printer.canAttachComment && printer.canAttachComment(node)) {
+ // This reverse insertion sort almost always takes constant
+ // time because we almost always (maybe always?) append the
+ // nodes in order anyway.
+ var i;
+
+ for (i = resultArray.length - 1; i >= 0; --i) {
+ if (locStart(resultArray[i]) <= locStart(node) && locEnd(resultArray[i]) <= locEnd(node)) {
+ break;
+ }
+ }
+
+ resultArray.splice(i + 1, 0, node);
+ return;
+ }
+ } else if (node[childNodesCacheKey]) {
+ return node[childNodesCacheKey];
+ }
+
+ var childNodes;
+
+ if (printer.getCommentChildNodes) {
+ childNodes = printer.getCommentChildNodes(node);
+ } else if (node && typeof node === "object") {
+ childNodes = Object.keys(node).filter(function (n) {
+ return n !== "enclosingNode" && n !== "precedingNode" && n !== "followingNode";
+ }).map(function (n) {
+ return node[n];
+ });
+ }
+
+ if (!childNodes) {
+ return;
+ }
+
+ if (!resultArray) {
+ Object.defineProperty(node, childNodesCacheKey, {
+ value: resultArray = [],
+ enumerable: false
+ });
+ }
+
+ childNodes.forEach(function (childNode) {
+ getSortedChildNodes(childNode, options, resultArray);
+ });
+ return resultArray;
+} // As efficiently as possible, decorate the comment object with
+// .precedingNode, .enclosingNode, and/or .followingNode properties, at
+// least one of which is guaranteed to be defined.
+
+
+function decorateComment(node, comment, options) {
+ var locStart = options.locStart,
+ locEnd = options.locEnd;
+ var childNodes = getSortedChildNodes(node, options);
+ var precedingNode;
+ var followingNode; // Time to dust off the old binary search robes and wizard hat.
+
+ var left = 0;
+ var right = childNodes.length;
+
+ while (left < right) {
+ var middle = left + right >> 1;
+ var child = childNodes[middle];
+
+ if (locStart(child) - locStart(comment) <= 0 && locEnd(comment) - locEnd(child) <= 0) {
+ // The comment is completely contained by this child node.
+ comment.enclosingNode = child;
+ decorateComment(child, comment, options);
+ return; // Abandon the binary search at this level.
+ }
+
+ if (locEnd(child) - locStart(comment) <= 0) {
+ // This child node falls completely before the comment.
+ // Because we will never consider this node or any nodes
+ // before it again, this node must be the closest preceding
+ // node we have encountered so far.
+ precedingNode = child;
+ left = middle + 1;
+ continue;
+ }
+
+ if (locEnd(comment) - locStart(child) <= 0) {
+ // This child node falls completely after the comment.
+ // Because we will never consider this node or any nodes after
+ // it again, this node must be the closest following node we
+ // have encountered so far.
+ followingNode = child;
+ right = middle;
+ continue;
+ }
+ /* istanbul ignore next */
+
+
+ throw new Error("Comment location overlaps with node location");
+ } // We don't want comments inside of different expressions inside of the same
+ // template literal to move to another expression.
+
+
+ if (comment.enclosingNode && comment.enclosingNode.type === "TemplateLiteral") {
+ var quasis = comment.enclosingNode.quasis;
+ var commentIndex = findExpressionIndexForComment(quasis, comment, options);
+
+ if (precedingNode && findExpressionIndexForComment(quasis, precedingNode, options) !== commentIndex) {
+ precedingNode = null;
+ }
+
+ if (followingNode && findExpressionIndexForComment(quasis, followingNode, options) !== commentIndex) {
+ followingNode = null;
+ }
+ }
+
+ if (precedingNode) {
+ comment.precedingNode = precedingNode;
+ }
+
+ if (followingNode) {
+ comment.followingNode = followingNode;
+ }
+}
+
+function attach(comments, ast, text, options) {
+ if (!Array.isArray(comments)) {
+ return;
+ }
+
+ var tiesToBreak = [];
+ var locStart = options.locStart,
+ locEnd = options.locEnd;
+ comments.forEach(function (comment, i) {
+ if (options.parser === "json" || options.parser === "json5" || options.parser === "__js_expression" || options.parser === "__vue_expression") {
+ if (locStart(comment) - locStart(ast) <= 0) {
+ addLeadingComment$1(ast, comment);
+ return;
+ }
+
+ if (locEnd(comment) - locEnd(ast) >= 0) {
+ addTrailingComment$1(ast, comment);
+ return;
+ }
+ }
+
+ decorateComment(ast, comment, options);
+ var precedingNode = comment.precedingNode,
+ enclosingNode = comment.enclosingNode,
+ followingNode = comment.followingNode;
+ var pluginHandleOwnLineComment = options.printer.handleComments && options.printer.handleComments.ownLine ? options.printer.handleComments.ownLine : function () {
+ return false;
+ };
+ var pluginHandleEndOfLineComment = options.printer.handleComments && options.printer.handleComments.endOfLine ? options.printer.handleComments.endOfLine : function () {
+ return false;
+ };
+ var pluginHandleRemainingComment = options.printer.handleComments && options.printer.handleComments.remaining ? options.printer.handleComments.remaining : function () {
+ return false;
+ };
+ var isLastComment = comments.length - 1 === i;
+
+ if (hasNewline$1(text, locStart(comment), {
+ backwards: true
+ })) {
+ // If a comment exists on its own line, prefer a leading comment.
+ // We also need to check if it's the first line of the file.
+ if (pluginHandleOwnLineComment(comment, text, options, ast, isLastComment)) ; else if (followingNode) {
+ // Always a leading comment.
+ addLeadingComment$1(followingNode, comment);
+ } else if (precedingNode) {
+ addTrailingComment$1(precedingNode, comment);
+ } else if (enclosingNode) {
+ addDanglingComment$1(enclosingNode, comment);
+ } else {
+ // There are no nodes, let's attach it to the root of the ast
+
+ /* istanbul ignore next */
+ addDanglingComment$1(ast, comment);
+ }
+ } else if (hasNewline$1(text, locEnd(comment))) {
+ if (pluginHandleEndOfLineComment(comment, text, options, ast, isLastComment)) ; else if (precedingNode) {
+ // There is content before this comment on the same line, but
+ // none after it, so prefer a trailing comment of the previous node.
+ addTrailingComment$1(precedingNode, comment);
+ } else if (followingNode) {
+ addLeadingComment$1(followingNode, comment);
+ } else if (enclosingNode) {
+ addDanglingComment$1(enclosingNode, comment);
+ } else {
+ // There are no nodes, let's attach it to the root of the ast
+
+ /* istanbul ignore next */
+ addDanglingComment$1(ast, comment);
+ }
+ } else {
+ if (pluginHandleRemainingComment(comment, text, options, ast, isLastComment)) ; else if (precedingNode && followingNode) {
+ // Otherwise, text exists both before and after the comment on
+ // the same line. If there is both a preceding and following
+ // node, use a tie-breaking algorithm to determine if it should
+ // be attached to the next or previous node. In the last case,
+ // simply attach the right node;
+ var tieCount = tiesToBreak.length;
+
+ if (tieCount > 0) {
+ var lastTie = tiesToBreak[tieCount - 1];
+
+ if (lastTie.followingNode !== comment.followingNode) {
+ breakTies(tiesToBreak, text, options);
+ }
+ }
+
+ tiesToBreak.push(comment);
+ } else if (precedingNode) {
+ addTrailingComment$1(precedingNode, comment);
+ } else if (followingNode) {
+ addLeadingComment$1(followingNode, comment);
+ } else if (enclosingNode) {
+ addDanglingComment$1(enclosingNode, comment);
+ } else {
+ // There are no nodes, let's attach it to the root of the ast
+
+ /* istanbul ignore next */
+ addDanglingComment$1(ast, comment);
+ }
+ }
+ });
+ breakTies(tiesToBreak, text, options);
+ comments.forEach(function (comment) {
+ // These node references were useful for breaking ties, but we
+ // don't need them anymore, and they create cycles in the AST that
+ // may lead to infinite recursion if we don't delete them here.
+ delete comment.precedingNode;
+ delete comment.enclosingNode;
+ delete comment.followingNode;
+ });
+}
+
+function breakTies(tiesToBreak, text, options) {
+ var tieCount = tiesToBreak.length;
+
+ if (tieCount === 0) {
+ return;
+ }
+
+ var _tiesToBreak$ = tiesToBreak[0],
+ precedingNode = _tiesToBreak$.precedingNode,
+ followingNode = _tiesToBreak$.followingNode;
+ var gapEndPos = options.locStart(followingNode); // Iterate backwards through tiesToBreak, examining the gaps
+ // between the tied comments. In order to qualify as leading, a
+ // comment must be separated from followingNode by an unbroken series of
+ // gaps (or other comments). Gaps should only contain whitespace or open
+ // parentheses.
+
+ var indexOfFirstLeadingComment;
+
+ for (indexOfFirstLeadingComment = tieCount; indexOfFirstLeadingComment > 0; --indexOfFirstLeadingComment) {
+ var comment = tiesToBreak[indexOfFirstLeadingComment - 1];
+ assert$1.strictEqual(comment.precedingNode, precedingNode);
+ assert$1.strictEqual(comment.followingNode, followingNode);
+ var gap = text.slice(options.locEnd(comment), gapEndPos);
+
+ if (/^[\s(]*$/.test(gap)) {
+ gapEndPos = options.locStart(comment);
+ } else {
+ // The gap string contained something other than whitespace or open
+ // parentheses.
+ break;
+ }
+ }
+
+ tiesToBreak.forEach(function (comment, i) {
+ if (i < indexOfFirstLeadingComment) {
+ addTrailingComment$1(precedingNode, comment);
+ } else {
+ addLeadingComment$1(followingNode, comment);
+ }
+ });
+ tiesToBreak.length = 0;
+}
+
+function printComment(commentPath, options) {
+ var comment = commentPath.getValue();
+ comment.printed = true;
+ return options.printer.printComment(commentPath, options);
+}
+
+function findExpressionIndexForComment(quasis, comment, options) {
+ var startPos = options.locStart(comment) - 1;
+
+ for (var i = 1; i < quasis.length; ++i) {
+ if (startPos < getQuasiRange(quasis[i]).start) {
+ return i - 1;
+ }
+ } // We haven't found it, it probably means that some of the locations are off.
+ // Let's just return the first one.
+
+ /* istanbul ignore next */
+
+
+ return 0;
+}
+
+function getQuasiRange(expr) {
+ if (expr.start !== undefined) {
+ // Babel
+ return {
+ start: expr.start,
+ end: expr.end
+ };
+ } // Flow
+
+
+ return {
+ start: expr.range[0],
+ end: expr.range[1]
+ };
+}
+
+function printLeadingComment(commentPath, print, options) {
+ var comment = commentPath.getValue();
+ var contents = printComment(commentPath, options);
+
+ if (!contents) {
+ return "";
+ }
+
+ var isBlock = options.printer.isBlockComment && options.printer.isBlockComment(comment); // Leading block comments should see if they need to stay on the
+ // same line or not.
+
+ if (isBlock) {
+ return concat$2([contents, hasNewline$1(options.originalText, options.locEnd(comment)) ? hardline$1 : " "]);
+ }
+
+ return concat$2([contents, hardline$1]);
+}
+
+function printTrailingComment(commentPath, print, options) {
+ var comment = commentPath.getValue();
+ var contents = printComment(commentPath, options);
+
+ if (!contents) {
+ return "";
+ }
+
+ var isBlock = options.printer.isBlockComment && options.printer.isBlockComment(comment); // We don't want the line to break
+ // when the parentParentNode is a ClassDeclaration/-Expression
+ // And the parentNode is in the superClass property
+
+ var parentNode = commentPath.getNode(1);
+ var parentParentNode = commentPath.getNode(2);
+ var isParentSuperClass = parentParentNode && (parentParentNode.type === "ClassDeclaration" || parentParentNode.type === "ClassExpression") && parentParentNode.superClass === parentNode;
+
+ if (hasNewline$1(options.originalText, options.locStart(comment), {
+ backwards: true
+ })) {
+ // This allows comments at the end of nested structures:
+ // {
+ // x: 1,
+ // y: 2
+ // // A comment
+ // }
+ // Those kinds of comments are almost always leading comments, but
+ // here it doesn't go "outside" the block and turns it into a
+ // trailing comment for `2`. We can simulate the above by checking
+ // if this a comment on its own line; normal trailing comments are
+ // always at the end of another expression.
+ var isLineBeforeEmpty = isPreviousLineEmpty$2(options.originalText, comment, options.locStart);
+ return lineSuffix$1(concat$2([hardline$1, isLineBeforeEmpty ? hardline$1 : "", contents]));
+ } else if (isBlock || isParentSuperClass) {
+ // Trailing block comments never need a newline
+ return concat$2([" ", contents]);
+ }
+
+ return concat$2([lineSuffix$1(concat$2([" ", contents])), !isBlock ? breakParent$1 : ""]);
+}
+
+function printDanglingComments(path, options, sameIndent, filter) {
+ var parts = [];
+ var node = path.getValue();
+
+ if (!node || !node.comments) {
+ return "";
+ }
+
+ path.each(function (commentPath) {
+ var comment = commentPath.getValue();
+
+ if (comment && !comment.leading && !comment.trailing && (!filter || filter(comment))) {
+ parts.push(printComment(commentPath, options));
+ }
+ }, "comments");
+
+ if (parts.length === 0) {
+ return "";
+ }
+
+ if (sameIndent) {
+ return join$1(hardline$1, parts);
+ }
+
+ return indent$1(concat$2([hardline$1, join$1(hardline$1, parts)]));
+}
+
+function prependCursorPlaceholder(path, options, printed) {
+ if (path.getNode() === options.cursorNode && path.getValue()) {
+ return concat$2([cursor$2, printed, cursor$2]);
+ }
+
+ return printed;
+}
+
+function printComments(path, print, options, needsSemi) {
+ var value = path.getValue();
+ var printed = print(path);
+ var comments = value && value.comments;
+
+ if (!comments || comments.length === 0) {
+ return prependCursorPlaceholder(path, options, printed);
+ }
+
+ var leadingParts = [];
+ var trailingParts = [needsSemi ? ";" : "", printed];
+ path.each(function (commentPath) {
+ var comment = commentPath.getValue();
+ var leading = comment.leading,
+ trailing = comment.trailing;
+
+ if (leading) {
+ var contents = printLeadingComment(commentPath, print, options);
+
+ if (!contents) {
+ return;
+ }
+
+ leadingParts.push(contents);
+ var text = options.originalText;
+ var index = skipNewline$1(text, options.locEnd(comment));
+
+ if (index !== false && hasNewline$1(text, index)) {
+ leadingParts.push(hardline$1);
+ }
+ } else if (trailing) {
+ trailingParts.push(printTrailingComment(commentPath, print, options));
+ }
+ }, "comments");
+ return prependCursorPlaceholder(path, options, concat$2(leadingParts.concat(trailingParts)));
+}
+
+var comments = {
+ attach,
+ printComments,
+ printDanglingComments,
+ getSortedChildNodes
+};
+
+function FastPath(value) {
+ assert$1.ok(this instanceof FastPath);
+ this.stack = [value];
+} // The name of the current property is always the penultimate element of
+// this.stack, and always a String.
+
+
+FastPath.prototype.getName = function getName() {
+ var s = this.stack;
+ var len = s.length;
+
+ if (len > 1) {
+ return s[len - 2];
+ } // Since the name is always a string, null is a safe sentinel value to
+ // return if we do not know the name of the (root) value.
+
+ /* istanbul ignore next */
+
+
+ return null;
+}; // The value of the current property is always the final element of
+// this.stack.
+
+
+FastPath.prototype.getValue = function getValue() {
+ var s = this.stack;
+ return s[s.length - 1];
+};
+
+function getNodeHelper(path, count) {
+ var stackIndex = getNodeStackIndexHelper(path.stack, count);
+ return stackIndex === -1 ? null : path.stack[stackIndex];
+}
+
+function getNodeStackIndexHelper(stack, count) {
+ for (var i = stack.length - 1; i >= 0; i -= 2) {
+ var value = stack[i];
+
+ if (value && !Array.isArray(value) && --count < 0) {
+ return i;
+ }
+ }
+
+ return -1;
+}
+
+FastPath.prototype.getNode = function getNode(count) {
+ return getNodeHelper(this, ~~count);
+};
+
+FastPath.prototype.getParentNode = function getParentNode(count) {
+ return getNodeHelper(this, ~~count + 1);
+}; // Temporarily push properties named by string arguments given after the
+// callback function onto this.stack, then call the callback with a
+// reference to this (modified) FastPath object. Note that the stack will
+// be restored to its original state after the callback is finished, so it
+// is probably a mistake to retain a reference to the path.
+
+
+FastPath.prototype.call = function call(callback
+/*, name1, name2, ... */
+) {
+ var s = this.stack;
+ var origLen = s.length;
+ var value = s[origLen - 1];
+ var argc = arguments.length;
+
+ for (var i = 1; i < argc; ++i) {
+ var name = arguments[i];
+ value = value[name];
+ s.push(name, value);
+ }
+
+ var result = callback(this);
+ s.length = origLen;
+ return result;
+};
+
+FastPath.prototype.callParent = function callParent(callback, count) {
+ var stackIndex = getNodeStackIndexHelper(this.stack, ~~count + 1);
+ var parentValues = this.stack.splice(stackIndex + 1);
+ var result = callback(this);
+ Array.prototype.push.apply(this.stack, parentValues);
+ return result;
+}; // Similar to FastPath.prototype.call, except that the value obtained by
+// accessing this.getValue()[name1][name2]... should be array-like. The
+// callback will be called with a reference to this path object for each
+// element of the array.
+
+
+FastPath.prototype.each = function each(callback
+/*, name1, name2, ... */
+) {
+ var s = this.stack;
+ var origLen = s.length;
+ var value = s[origLen - 1];
+ var argc = arguments.length;
+
+ for (var i = 1; i < argc; ++i) {
+ var name = arguments[i];
+ value = value[name];
+ s.push(name, value);
+ }
+
+ for (var _i = 0; _i < value.length; ++_i) {
+ if (_i in value) {
+ s.push(_i, value[_i]); // If the callback needs to know the value of i, call
+ // path.getName(), assuming path is the parameter name.
+
+ callback(this);
+ s.length -= 2;
+ }
+ }
+
+ s.length = origLen;
+}; // Similar to FastPath.prototype.each, except that the results of the
+// callback function invocations are stored in an array and returned at
+// the end of the iteration.
+
+
+FastPath.prototype.map = function map(callback
+/*, name1, name2, ... */
+) {
+ var s = this.stack;
+ var origLen = s.length;
+ var value = s[origLen - 1];
+ var argc = arguments.length;
+
+ for (var i = 1; i < argc; ++i) {
+ var name = arguments[i];
+ value = value[name];
+ s.push(name, value);
+ }
+
+ var result = new Array(value.length);
+
+ for (var _i2 = 0; _i2 < value.length; ++_i2) {
+ if (_i2 in value) {
+ s.push(_i2, value[_i2]);
+ result[_i2] = callback(this, _i2);
+ s.length -= 2;
+ }
+ }
+
+ s.length = origLen;
+ return result;
+};
+
+var fastPath = FastPath;
+
+var normalize$2 = options$1.normalize;
+
+function printSubtree(path, print, options, printAstToDoc) {
+ if (options.printer.embed) {
+ return options.printer.embed(path, print, function (text, partialNextOptions) {
+ return textToDoc(text, partialNextOptions, options, printAstToDoc);
+ }, options);
+ }
+}
+
+function textToDoc(text, partialNextOptions, parentOptions, printAstToDoc) {
+ var nextOptions = normalize$2(Object.assign({}, parentOptions, partialNextOptions, {
+ parentParser: parentOptions.parser,
+ embeddedInHtml: !!(parentOptions.embeddedInHtml || parentOptions.parser === "html" || parentOptions.parser === "vue" || parentOptions.parser === "angular" || parentOptions.parser === "lwc"),
+ originalText: text
+ }), {
+ passThrough: true
+ });
+ var result = parser.parse(text, nextOptions);
+ var ast = result.ast;
+ text = result.text;
+ var astComments = ast.comments;
+ delete ast.comments;
+ comments.attach(astComments, ast, text, nextOptions);
+ return printAstToDoc(ast, nextOptions);
+}
+
+var multiparser = {
+ printSubtree
+};
+
+var doc$1 = doc;
+var docBuilders$1 = doc$1.builders;
+var concat$3 = docBuilders$1.concat;
+var hardline$2 = docBuilders$1.hardline;
+var addAlignmentToDoc$1 = docBuilders$1.addAlignmentToDoc;
+var docUtils$1 = doc$1.utils;
+/**
+ * Takes an abstract syntax tree (AST) and recursively converts it to a
+ * document (series of printing primitives).
+ *
+ * This is done by descending down the AST recursively. The recursion
+ * involves two functions that call each other:
+ *
+ * 1. printGenerically(), which is defined as an inner function here.
+ * It basically takes care of node caching.
+ * 2. callPluginPrintFunction(), which checks for some options, and
+ * ultimately calls the print() function provided by the plugin.
+ *
+ * The plugin function will call printGenerically() again for child nodes
+ * of the current node, which will do its housekeeping, then call the
+ * plugin function again, and so on.
+ *
+ * All the while, these functions pass a "path" variable around, which
+ * is a stack-like data structure (FastPath) that maintains the current
+ * state of the recursion. It is called "path", because it represents
+ * the path to the current node through the Abstract Syntax Tree.
+ */
+
+function printAstToDoc(ast, options) {
+ var alignmentSize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+ var printer = options.printer;
+
+ if (printer.preprocess) {
+ ast = printer.preprocess(ast, options);
+ }
+
+ var cache = new Map();
+
+ function printGenerically(path, args) {
+ var node = path.getValue();
+ var shouldCache = node && typeof node === "object" && args === undefined;
+
+ if (shouldCache && cache.has(node)) {
+ return cache.get(node);
+ } // We let JSXElement print its comments itself because it adds () around
+ // UnionTypeAnnotation has to align the child without the comments
+
+
+ var res;
+
+ if (printer.willPrintOwnComments && printer.willPrintOwnComments(path, options)) {
+ res = callPluginPrintFunction(path, options, printGenerically, args);
+ } else {
+ // printComments will call the plugin print function and check for
+ // comments to print
+ res = comments.printComments(path, function (p) {
+ return callPluginPrintFunction(p, options, printGenerically, args);
+ }, options, args && args.needsSemi);
+ }
+
+ if (shouldCache) {
+ cache.set(node, res);
+ }
+
+ return res;
+ }
+
+ var doc = printGenerically(new fastPath(ast));
+
+ if (alignmentSize > 0) {
+ // Add a hardline to make the indents take effect
+ // It should be removed in index.js format()
+ doc = addAlignmentToDoc$1(concat$3([hardline$2, doc]), alignmentSize, options.tabWidth);
+ }
+
+ docUtils$1.propagateBreaks(doc);
+ return doc;
+}
+
+function callPluginPrintFunction(path, options, printPath, args) {
+ assert$1.ok(path instanceof fastPath);
+ var node = path.getValue();
+ var printer = options.printer; // Escape hatch
+
+ if (printer.hasPrettierIgnore && printer.hasPrettierIgnore(path)) {
+ return options.originalText.slice(options.locStart(node), options.locEnd(node));
+ }
+
+ if (node) {
+ try {
+ // Potentially switch to a different parser
+ var sub = multiparser.printSubtree(path, printPath, options, printAstToDoc);
+
+ if (sub) {
+ return sub;
+ }
+ } catch (error) {
+ /* istanbul ignore if */
+ if (process.env.PRETTIER_DEBUG) {
+ throw error;
+ } // Continue with current parser
+
+ }
+ }
+
+ return printer.print(path, options, printPath, args);
+}
+
+var astToDoc = printAstToDoc;
+
+function findSiblingAncestors(startNodeAndParents, endNodeAndParents, opts) {
+ var resultStartNode = startNodeAndParents.node;
+ var resultEndNode = endNodeAndParents.node;
+
+ if (resultStartNode === resultEndNode) {
+ return {
+ startNode: resultStartNode,
+ endNode: resultEndNode
+ };
+ }
+
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = endNodeAndParents.parentNodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var endParent = _step.value;
+
+ if (endParent.type !== "Program" && endParent.type !== "File" && opts.locStart(endParent) >= opts.locStart(startNodeAndParents.node)) {
+ resultEndNode = endParent;
+ } else {
+ break;
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = startNodeAndParents.parentNodes[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var startParent = _step2.value;
+
+ if (startParent.type !== "Program" && startParent.type !== "File" && opts.locEnd(startParent) <= opts.locEnd(endNodeAndParents.node)) {
+ resultStartNode = startParent;
+ } else {
+ break;
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return {
+ startNode: resultStartNode,
+ endNode: resultEndNode
+ };
+}
+
+function findNodeAtOffset(node, offset, options, predicate, parentNodes) {
+ predicate = predicate || function () {
+ return true;
+ };
+
+ parentNodes = parentNodes || [];
+ var start = options.locStart(node, options.locStart);
+ var end = options.locEnd(node, options.locEnd);
+
+ if (start <= offset && offset <= end) {
+ var _iteratorNormalCompletion3 = true;
+ var _didIteratorError3 = false;
+ var _iteratorError3 = undefined;
+
+ try {
+ for (var _iterator3 = comments.getSortedChildNodes(node, options)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
+ var childNode = _step3.value;
+ var childResult = findNodeAtOffset(childNode, offset, options, predicate, [node].concat(parentNodes));
+
+ if (childResult) {
+ return childResult;
+ }
+ }
+ } catch (err) {
+ _didIteratorError3 = true;
+ _iteratorError3 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
+ _iterator3.return();
+ }
+ } finally {
+ if (_didIteratorError3) {
+ throw _iteratorError3;
+ }
+ }
+ }
+
+ if (predicate(node)) {
+ return {
+ node: node,
+ parentNodes: parentNodes
+ };
+ }
+ }
+} // See https://www.ecma-international.org/ecma-262/5.1/#sec-A.5
+
+
+function isSourceElement(opts, node) {
+ if (node == null) {
+ return false;
+ } // JS and JS like to avoid repetitions
+
+
+ var jsSourceElements = ["FunctionDeclaration", "BlockStatement", "BreakStatement", "ContinueStatement", "DebuggerStatement", "DoWhileStatement", "EmptyStatement", "ExpressionStatement", "ForInStatement", "ForStatement", "IfStatement", "LabeledStatement", "ReturnStatement", "SwitchStatement", "ThrowStatement", "TryStatement", "VariableDeclaration", "WhileStatement", "WithStatement", "ClassDeclaration", // ES 2015
+ "ImportDeclaration", // Module
+ "ExportDefaultDeclaration", // Module
+ "ExportNamedDeclaration", // Module
+ "ExportAllDeclaration", // Module
+ "TypeAlias", // Flow
+ "InterfaceDeclaration", // Flow, TypeScript
+ "TypeAliasDeclaration", // TypeScript
+ "ExportAssignment", // TypeScript
+ "ExportDeclaration" // TypeScript
+ ];
+ var jsonSourceElements = ["ObjectExpression", "ArrayExpression", "StringLiteral", "NumericLiteral", "BooleanLiteral", "NullLiteral"];
+ var graphqlSourceElements = ["OperationDefinition", "FragmentDefinition", "VariableDefinition", "TypeExtensionDefinition", "ObjectTypeDefinition", "FieldDefinition", "DirectiveDefinition", "EnumTypeDefinition", "EnumValueDefinition", "InputValueDefinition", "InputObjectTypeDefinition", "SchemaDefinition", "OperationTypeDefinition", "InterfaceTypeDefinition", "UnionTypeDefinition", "ScalarTypeDefinition"];
+
+ switch (opts.parser) {
+ case "flow":
+ case "babel":
+ case "typescript":
+ return jsSourceElements.indexOf(node.type) > -1;
+
+ case "json":
+ return jsonSourceElements.indexOf(node.type) > -1;
+
+ case "graphql":
+ return graphqlSourceElements.indexOf(node.kind) > -1;
+
+ case "vue":
+ return node.tag !== "root";
+ }
+
+ return false;
+}
+
+function calculateRange(text, opts, ast) {
+ // Contract the range so that it has non-whitespace characters at its endpoints.
+ // This ensures we can format a range that doesn't end on a node.
+ var rangeStringOrig = text.slice(opts.rangeStart, opts.rangeEnd);
+ var startNonWhitespace = Math.max(opts.rangeStart + rangeStringOrig.search(/\S/), opts.rangeStart);
+ var endNonWhitespace;
+
+ for (endNonWhitespace = opts.rangeEnd; endNonWhitespace > opts.rangeStart; --endNonWhitespace) {
+ if (text[endNonWhitespace - 1].match(/\S/)) {
+ break;
+ }
+ }
+
+ var startNodeAndParents = findNodeAtOffset(ast, startNonWhitespace, opts, function (node) {
+ return isSourceElement(opts, node);
+ });
+ var endNodeAndParents = findNodeAtOffset(ast, endNonWhitespace, opts, function (node) {
+ return isSourceElement(opts, node);
+ });
+
+ if (!startNodeAndParents || !endNodeAndParents) {
+ return {
+ rangeStart: 0,
+ rangeEnd: 0
+ };
+ }
+
+ var siblingAncestors = findSiblingAncestors(startNodeAndParents, endNodeAndParents, opts);
+ var startNode = siblingAncestors.startNode,
+ endNode = siblingAncestors.endNode;
+ var rangeStart = Math.min(opts.locStart(startNode, opts.locStart), opts.locStart(endNode, opts.locStart));
+ var rangeEnd = Math.max(opts.locEnd(startNode, opts.locEnd), opts.locEnd(endNode, opts.locEnd));
+ return {
+ rangeStart: rangeStart,
+ rangeEnd: rangeEnd
+ };
+}
+
+var rangeUtil = {
+ calculateRange,
+ findNodeAtOffset
+};
+
+var normalizeOptions$1 = options$1.normalize;
+var guessEndOfLine$1 = endOfLine.guessEndOfLine,
+ convertEndOfLineToChars$2 = endOfLine.convertEndOfLineToChars;
+var mapDoc$2 = doc.utils.mapDoc,
+ printDocToString$1 = doc.printer.printDocToString,
+ printDocToDebug = doc.debug.printDocToDebug;
+var UTF8BOM = 0xfeff;
+var CURSOR = Symbol("cursor");
+var PLACEHOLDERS = {
+ cursorOffset: "<<<PRETTIER_CURSOR>>>",
+ rangeStart: "<<<PRETTIER_RANGE_START>>>",
+ rangeEnd: "<<<PRETTIER_RANGE_END>>>"
+};
+
+function ensureAllCommentsPrinted(astComments) {
+ if (!astComments) {
+ return;
+ }
+
+ for (var i = 0; i < astComments.length; ++i) {
+ if (astComments[i].value.trim() === "prettier-ignore") {
+ // If there's a prettier-ignore, we're not printing that sub-tree so we
+ // don't know if the comments was printed or not.
+ return;
+ }
+ }
+
+ astComments.forEach(function (comment) {
+ if (!comment.printed) {
+ throw new Error('Comment "' + comment.value.trim() + '" was not printed. Please report this error!');
+ }
+
+ delete comment.printed;
+ });
+}
+
+function attachComments(text, ast, opts) {
+ var astComments = ast.comments;
+
+ if (astComments) {
+ delete ast.comments;
+ comments.attach(astComments, ast, text, opts);
+ }
+
+ ast.tokens = [];
+ opts.originalText = opts.parser === "yaml" ? text : text.trimRight();
+ return astComments;
+}
+
+function coreFormat(text, opts, addAlignmentSize) {
+ if (!text || !text.trim().length) {
+ return {
+ formatted: "",
+ cursorOffset: 0
+ };
+ }
+
+ addAlignmentSize = addAlignmentSize || 0;
+ var parsed = parser.parse(text, opts);
+ var ast = parsed.ast;
+ text = parsed.text;
+
+ if (opts.cursorOffset >= 0) {
+ var nodeResult = rangeUtil.findNodeAtOffset(ast, opts.cursorOffset, opts);
+
+ if (nodeResult && nodeResult.node) {
+ opts.cursorNode = nodeResult.node;
+ }
+ }
+
+ var astComments = attachComments(text, ast, opts);
+ var doc = astToDoc(ast, opts, addAlignmentSize);
+ var eol = convertEndOfLineToChars$2(opts.endOfLine);
+ var result = printDocToString$1(opts.endOfLine === "lf" ? doc : mapDoc$2(doc, function (currentDoc) {
+ return typeof currentDoc === "string" && currentDoc.indexOf("\n") !== -1 ? currentDoc.replace(/\n/g, eol) : currentDoc;
+ }), opts);
+ ensureAllCommentsPrinted(astComments); // Remove extra leading indentation as well as the added indentation after last newline
+
+ if (addAlignmentSize > 0) {
+ var trimmed = result.formatted.trim();
+
+ if (result.cursorNodeStart !== undefined) {
+ result.cursorNodeStart -= result.formatted.indexOf(trimmed);
+ }
+
+ result.formatted = trimmed + convertEndOfLineToChars$2(opts.endOfLine);
+ }
+
+ if (opts.cursorOffset >= 0) {
+ var oldCursorNodeStart;
+ var oldCursorNodeText;
+ var cursorOffsetRelativeToOldCursorNode;
+ var newCursorNodeStart;
+ var newCursorNodeText;
+
+ if (opts.cursorNode && result.cursorNodeText) {
+ oldCursorNodeStart = opts.locStart(opts.cursorNode);
+ oldCursorNodeText = text.slice(oldCursorNodeStart, opts.locEnd(opts.cursorNode));
+ cursorOffsetRelativeToOldCursorNode = opts.cursorOffset - oldCursorNodeStart;
+ newCursorNodeStart = result.cursorNodeStart;
+ newCursorNodeText = result.cursorNodeText;
+ } else {
+ oldCursorNodeStart = 0;
+ oldCursorNodeText = text;
+ cursorOffsetRelativeToOldCursorNode = opts.cursorOffset;
+ newCursorNodeStart = 0;
+ newCursorNodeText = result.formatted;
+ }
+
+ if (oldCursorNodeText === newCursorNodeText) {
+ return {
+ formatted: result.formatted,
+ cursorOffset: newCursorNodeStart + cursorOffsetRelativeToOldCursorNode
+ };
+ } // diff old and new cursor node texts, with a special cursor
+ // symbol inserted to find out where it moves to
+
+
+ var oldCursorNodeCharArray = oldCursorNodeText.split("");
+ oldCursorNodeCharArray.splice(cursorOffsetRelativeToOldCursorNode, 0, CURSOR);
+ var newCursorNodeCharArray = newCursorNodeText.split("");
+ var cursorNodeDiff = index_es6.diffArrays(oldCursorNodeCharArray, newCursorNodeCharArray);
+ var cursorOffset = newCursorNodeStart;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = cursorNodeDiff[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var entry = _step.value;
+
+ if (entry.removed) {
+ if (entry.value.indexOf(CURSOR) > -1) {
+ break;
+ }
+ } else {
+ cursorOffset += entry.count;
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return {
+ formatted: result.formatted,
+ cursorOffset
+ };
+ }
+
+ return {
+ formatted: result.formatted
+ };
+}
+
+function formatRange(text, opts) {
+ var parsed = parser.parse(text, opts);
+ var ast = parsed.ast;
+ text = parsed.text;
+ var range = rangeUtil.calculateRange(text, opts, ast);
+ var rangeStart = range.rangeStart;
+ var rangeEnd = range.rangeEnd;
+ var rangeString = text.slice(rangeStart, rangeEnd); // Try to extend the range backwards to the beginning of the line.
+ // This is so we can detect indentation correctly and restore it.
+ // Use `Math.min` since `lastIndexOf` returns 0 when `rangeStart` is 0
+
+ var rangeStart2 = Math.min(rangeStart, text.lastIndexOf("\n", rangeStart) + 1);
+ var indentString = text.slice(rangeStart2, rangeStart);
+ var alignmentSize = util.getAlignmentSize(indentString, opts.tabWidth);
+ var rangeResult = coreFormat(rangeString, Object.assign({}, opts, {
+ rangeStart: 0,
+ rangeEnd: Infinity,
+ // track the cursor offset only if it's within our range
+ cursorOffset: opts.cursorOffset >= rangeStart && opts.cursorOffset < rangeEnd ? opts.cursorOffset - rangeStart : -1
+ }), alignmentSize); // Since the range contracts to avoid trailing whitespace,
+ // we need to remove the newline that was inserted by the `format` call.
+
+ var rangeTrimmed = rangeResult.formatted.trimRight();
+ var rangeLeft = text.slice(0, rangeStart);
+ var rangeRight = text.slice(rangeEnd);
+ var cursorOffset = opts.cursorOffset;
+
+ if (opts.cursorOffset >= rangeEnd) {
+ // handle the case where the cursor was past the end of the range
+ cursorOffset = opts.cursorOffset - rangeEnd + (rangeStart + rangeTrimmed.length);
+ } else if (rangeResult.cursorOffset !== undefined) {
+ // handle the case where the cursor was in the range
+ cursorOffset = rangeResult.cursorOffset + rangeStart;
+ } // keep the cursor as it was if it was before the start of the range
+
+
+ var formatted;
+
+ if (opts.endOfLine === "lf") {
+ formatted = rangeLeft + rangeTrimmed + rangeRight;
+ } else {
+ var eol = convertEndOfLineToChars$2(opts.endOfLine);
+
+ if (cursorOffset >= 0) {
+ var parts = [rangeLeft, rangeTrimmed, rangeRight];
+ var partIndex = 0;
+ var partOffset = cursorOffset;
+
+ while (partIndex < parts.length) {
+ var part = parts[partIndex];
+
+ if (partOffset < part.length) {
+ parts[partIndex] = parts[partIndex].slice(0, partOffset) + PLACEHOLDERS.cursorOffset + parts[partIndex].slice(partOffset);
+ break;
+ }
+
+ partIndex++;
+ partOffset -= part.length;
+ }
+
+ var newRangeLeft = parts[0],
+ newRangeTrimmed = parts[1],
+ newRangeRight = parts[2];
+ formatted = (newRangeLeft.replace(/\n/g, eol) + newRangeTrimmed + newRangeRight.replace(/\n/g, eol)).replace(PLACEHOLDERS.cursorOffset, function (_, index) {
+ cursorOffset = index;
+ return "";
+ });
+ } else {
+ formatted = rangeLeft.replace(/\n/g, eol) + rangeTrimmed + rangeRight.replace(/\n/g, eol);
+ }
+ }
+
+ return {
+ formatted,
+ cursorOffset
+ };
+}
+
+function format(text, opts) {
+ var selectedParser = parser.resolveParser(opts);
+ var hasPragma = !selectedParser.hasPragma || selectedParser.hasPragma(text);
+
+ if (opts.requirePragma && !hasPragma) {
+ return {
+ formatted: text
+ };
+ }
+
+ if (opts.endOfLine === "auto") {
+ opts.endOfLine = guessEndOfLine$1(text);
+ }
+
+ var hasCursor = opts.cursorOffset >= 0;
+ var hasRangeStart = opts.rangeStart > 0;
+ var hasRangeEnd = opts.rangeEnd < text.length; // get rid of CR/CRLF parsing
+
+ if (text.indexOf("\r") !== -1) {
+ var offsetKeys = [hasCursor && "cursorOffset", hasRangeStart && "rangeStart", hasRangeEnd && "rangeEnd"].filter(Boolean).sort(function (aKey, bKey) {
+ return opts[aKey] - opts[bKey];
+ });
+
+ for (var i = offsetKeys.length - 1; i >= 0; i--) {
+ var key = offsetKeys[i];
+ text = text.slice(0, opts[key]) + PLACEHOLDERS[key] + text.slice(opts[key]);
+ }
+
+ text = text.replace(/\r\n?/g, "\n");
+
+ var _loop = function _loop(_i) {
+ var key = offsetKeys[_i];
+ text = text.replace(PLACEHOLDERS[key], function (_, index) {
+ opts[key] = index;
+ return "";
+ });
+ };
+
+ for (var _i = 0; _i < offsetKeys.length; _i++) {
+ _loop(_i);
+ }
+ }
+
+ var hasUnicodeBOM = text.charCodeAt(0) === UTF8BOM;
+
+ if (hasUnicodeBOM) {
+ text = text.substring(1);
+
+ if (hasCursor) {
+ opts.cursorOffset++;
+ }
+
+ if (hasRangeStart) {
+ opts.rangeStart++;
+ }
+
+ if (hasRangeEnd) {
+ opts.rangeEnd++;
+ }
+ }
+
+ if (!hasCursor) {
+ opts.cursorOffset = -1;
+ }
+
+ if (opts.rangeStart < 0) {
+ opts.rangeStart = 0;
+ }
+
+ if (opts.rangeEnd > text.length) {
+ opts.rangeEnd = text.length;
+ }
+
+ var result = hasRangeStart || hasRangeEnd ? formatRange(text, opts) : coreFormat(opts.insertPragma && opts.printer.insertPragma && !hasPragma ? opts.printer.insertPragma(text) : text, opts);
+
+ if (hasUnicodeBOM) {
+ result.formatted = String.fromCharCode(UTF8BOM) + result.formatted;
+
+ if (hasCursor) {
+ result.cursorOffset++;
+ }
+ }
+
+ return result;
+}
+
+var core = {
+ formatWithCursor(text, opts) {
+ opts = normalizeOptions$1(opts);
+ return format(text, opts);
+ },
+
+ parse(text, opts, massage) {
+ opts = normalizeOptions$1(opts);
+
+ if (text.indexOf("\r") !== -1) {
+ text = text.replace(/\r\n?/g, "\n");
+ }
+
+ var parsed = parser.parse(text, opts);
+
+ if (massage) {
+ parsed.ast = massageAst(parsed.ast, opts);
+ }
+
+ return parsed;
+ },
+
+ formatAST(ast, opts) {
+ opts = normalizeOptions$1(opts);
+ var doc = astToDoc(ast, opts);
+ return printDocToString$1(doc, opts);
+ },
+
+ // Doesn't handle shebang for now
+ formatDoc(doc, opts) {
+ var debug = printDocToDebug(doc);
+ opts = normalizeOptions$1(Object.assign({}, opts, {
+ parser: "babel"
+ }));
+ return format(debug, opts).formatted;
+ },
+
+ printToDoc(text, opts) {
+ opts = normalizeOptions$1(opts);
+ var parsed = parser.parse(text, opts);
+ var ast = parsed.ast;
+ text = parsed.text;
+ attachComments(text, ast, opts);
+ return astToDoc(ast, opts);
+ },
+
+ printDocToString(doc, opts) {
+ return printDocToString$1(doc, normalizeOptions$1(opts));
+ }
+
+};
+
+// A simple implementation of make-array
+function make_array(subject) {
+ return Array.isArray(subject) ? subject : [subject];
+}
+
+var REGEX_BLANK_LINE = /^\s+$/;
+var REGEX_LEADING_EXCAPED_EXCLAMATION = /^\\!/;
+var REGEX_LEADING_EXCAPED_HASH = /^\\#/;
+var SLASH = '/';
+var KEY_IGNORE = typeof Symbol !== 'undefined' ? Symbol.for('node-ignore')
+/* istanbul ignore next */
+: 'node-ignore';
+
+var define = function define(object, key, value) {
+ return Object.defineProperty(object, key, {
+ value
+ });
+};
+
+var REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g; // Sanitize the range of a regular expression
+// The cases are complicated, see test cases for details
+
+var sanitizeRange = function sanitizeRange(range) {
+ return range.replace(REGEX_REGEXP_RANGE, function (match, from, to) {
+ return from.charCodeAt(0) <= to.charCodeAt(0) ? match // Invalid range (out of order) which is ok for gitignore rules but
+ // fatal for JavaScript regular expression, so eliminate it.
+ : '';
+ });
+}; // > If the pattern ends with a slash,
+// > it is removed for the purpose of the following description,
+// > but it would only find a match with a directory.
+// > In other words, foo/ will match a directory foo and paths underneath it,
+// > but will not match a regular file or a symbolic link foo
+// > (this is consistent with the way how pathspec works in general in Git).
+// '`foo/`' will not match regular file '`foo`' or symbolic link '`foo`'
+// -> ignore-rules will not deal with it, because it costs extra `fs.stat` call
+// you could use option `mark: true` with `glob`
+// '`foo/`' should not continue with the '`..`'
+
+
+var DEFAULT_REPLACER_PREFIX = [// > Trailing spaces are ignored unless they are quoted with backslash ("\")
+[// (a\ ) -> (a )
+// (a ) -> (a)
+// (a \ ) -> (a )
+/\\?\s+$/, function (match) {
+ return match.indexOf('\\') === 0 ? ' ' : '';
+}], // replace (\ ) with ' '
+[/\\\s/g, function () {
+ return ' ';
+}], // Escape metacharacters
+// which is written down by users but means special for regular expressions.
+// > There are 12 characters with special meanings:
+// > - the backslash \,
+// > - the caret ^,
+// > - the dollar sign $,
+// > - the period or dot .,
+// > - the vertical bar or pipe symbol |,
+// > - the question mark ?,
+// > - the asterisk or star *,
+// > - the plus sign +,
+// > - the opening parenthesis (,
+// > - the closing parenthesis ),
+// > - and the opening square bracket [,
+// > - the opening curly brace {,
+// > These special characters are often called "metacharacters".
+[/[\\^$.|*+(){]/g, function (match) {
+ return `\\${match}`;
+}], [// > [abc] matches any character inside the brackets
+// > (in this case a, b, or c);
+/\[([^\]/]*)($|\])/g, function (match, p1, p2) {
+ return p2 === ']' ? `[${sanitizeRange(p1)}]` : `\\${match}`;
+}], [// > a question mark (?) matches a single character
+/(?!\\)\?/g, function () {
+ return '[^/]';
+}], // leading slash
+[// > A leading slash matches the beginning of the pathname.
+// > For example, "/*.c" matches "cat-file.c" but not "mozilla-sha1/sha1.c".
+// A leading slash matches the beginning of the pathname
+/^\//, function () {
+ return '^';
+}], // replace special metacharacter slash after the leading slash
+[/\//g, function () {
+ return '\\/';
+}], [// > A leading "**" followed by a slash means match in all directories.
+// > For example, "**/foo" matches file or directory "foo" anywhere,
+// > the same as pattern "foo".
+// > "**/foo/bar" matches file or directory "bar" anywhere that is directly
+// > under directory "foo".
+// Notice that the '*'s have been replaced as '\\*'
+/^\^*\\\*\\\*\\\//, // '**/foo' <-> 'foo'
+function () {
+ return '^(?:.*\\/)?';
+}]];
+var DEFAULT_REPLACER_SUFFIX = [// starting
+[// there will be no leading '/'
+// (which has been replaced by section "leading slash")
+// If starts with '**', adding a '^' to the regular expression also works
+/^(?=[^^])/, function startingReplacer() {
+ return !/\/(?!$)/.test(this) // > If the pattern does not contain a slash /,
+ // > Git treats it as a shell glob pattern
+ // Actually, if there is only a trailing slash,
+ // git also treats it as a shell glob pattern
+ ? '(?:^|\\/)' // > Otherwise, Git treats the pattern as a shell glob suitable for
+ // > consumption by fnmatch(3)
+ : '^';
+}], // two globstars
+[// Use lookahead assertions so that we could match more than one `'/**'`
+/\\\/\\\*\\\*(?=\\\/|$)/g, // Zero, one or several directories
+// should not use '*', or it will be replaced by the next replacer
+// Check if it is not the last `'/**'`
+function (match, index, str) {
+ return index + 6 < str.length // case: /**/
+ // > A slash followed by two consecutive asterisks then a slash matches
+ // > zero or more directories.
+ // > For example, "a/**/b" matches "a/b", "a/x/b", "a/x/y/b" and so on.
+ // '/**/'
+ ? '(?:\\/[^\\/]+)*' // case: /**
+ // > A trailing `"/**"` matches everything inside.
+ // #21: everything inside but it should not include the current folder
+ : '\\/.+';
+}], // intermediate wildcards
+[// Never replace escaped '*'
+// ignore rule '\*' will match the path '*'
+// 'abc.*/' -> go
+// 'abc.*' -> skip this rule
+/(^|[^\\]+)\\\*(?=.+)/g, // '*.js' matches '.js'
+// '*.js' doesn't match 'abc'
+function (match, p1) {
+ return `${p1}[^\\/]*`;
+}], // trailing wildcard
+[/(\^|\\\/)?\\\*$/, function (match, p1) {
+ var prefix = p1 // '\^':
+ // '/*' does not match ''
+ // '/*' does not match everything
+ // '\\\/':
+ // 'abc/*' does not match 'abc/'
+ ? `${p1}[^/]+` // 'a*' matches 'a'
+ // 'a*' matches 'aa'
+ : '[^/]*';
+ return `${prefix}(?=$|\\/$)`;
+}], [// unescape
+/\\\\\\/g, function () {
+ return '\\';
+}]];
+var POSITIVE_REPLACERS = [].concat(DEFAULT_REPLACER_PREFIX, [// 'f'
+// matches
+// - /f(end)
+// - /f/
+// - (start)f(end)
+// - (start)f/
+// doesn't match
+// - oof
+// - foo
+// pseudo:
+// -> (^|/)f(/|$)
+// ending
+[// 'js' will not match 'js.'
+// 'ab' will not match 'abc'
+/(?:[^*/])$/, // 'js*' will not match 'a.js'
+// 'js/' will not match 'a.js'
+// 'js' will match 'a.js' and 'a.js/'
+function (match) {
+ return `${match}(?=$|\\/)`;
+}]], DEFAULT_REPLACER_SUFFIX);
+var NEGATIVE_REPLACERS = [].concat(DEFAULT_REPLACER_PREFIX, [// #24, #38
+// The MISSING rule of [gitignore docs](https://git-scm.com/docs/gitignore)
+// A negative pattern without a trailing wildcard should not
+// re-include the things inside that directory.
+// eg:
+// ['node_modules/*', '!node_modules']
+// should ignore `node_modules/a.js`
+[/(?:[^*])$/, function (match) {
+ return `${match}(?=$|\\/$)`;
+}]], DEFAULT_REPLACER_SUFFIX); // A simple cache, because an ignore rule only has only one certain meaning
+
+var cache = Object.create(null); // @param {pattern}
+
+var make_regex = function make_regex(pattern, negative, ignorecase) {
+ var r = cache[pattern];
+
+ if (r) {
+ return r;
+ }
+
+ var replacers = negative ? NEGATIVE_REPLACERS : POSITIVE_REPLACERS;
+ var source = replacers.reduce(function (prev, current) {
+ return prev.replace(current[0], current[1].bind(pattern));
+ }, pattern);
+ return cache[pattern] = ignorecase ? new RegExp(source, 'i') : new RegExp(source);
+}; // > A blank line matches no files, so it can serve as a separator for readability.
+
+
+var checkPattern = function checkPattern(pattern) {
+ return pattern && typeof pattern === 'string' && !REGEX_BLANK_LINE.test(pattern) // > A line starting with # serves as a comment.
+ && pattern.indexOf('#') !== 0;
+};
+
+var createRule = function createRule(pattern, ignorecase) {
+ var origin = pattern;
+ var negative = false; // > An optional prefix "!" which negates the pattern;
+
+ if (pattern.indexOf('!') === 0) {
+ negative = true;
+ pattern = pattern.substr(1);
+ }
+
+ pattern = pattern // > Put a backslash ("\") in front of the first "!" for patterns that
+ // > begin with a literal "!", for example, `"\!important!.txt"`.
+ .replace(REGEX_LEADING_EXCAPED_EXCLAMATION, '!') // > Put a backslash ("\") in front of the first hash for patterns that
+ // > begin with a hash.
+ .replace(REGEX_LEADING_EXCAPED_HASH, '#');
+ var regex = make_regex(pattern, negative, ignorecase);
+ return {
+ origin,
+ pattern,
+ negative,
+ regex
+ };
+};
+
+var IgnoreBase =
+/*#__PURE__*/
+function () {
+ function IgnoreBase() {
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
+ _ref$ignorecase = _ref.ignorecase,
+ ignorecase = _ref$ignorecase === void 0 ? true : _ref$ignorecase;
+
+ _classCallCheck(this, IgnoreBase);
+
+ this._rules = [];
+ this._ignorecase = ignorecase;
+ define(this, KEY_IGNORE, true);
+
+ this._initCache();
+ }
+
+ _createClass(IgnoreBase, [{
+ key: "_initCache",
+ value: function _initCache() {
+ this._cache = Object.create(null);
+ } // @param {Array.<string>|string|Ignore} pattern
+
+ }, {
+ key: "add",
+ value: function add(pattern) {
+ this._added = false;
+
+ if (typeof pattern === 'string') {
+ pattern = pattern.split(/\r?\n/g);
+ }
+
+ make_array(pattern).forEach(this._addPattern, this); // Some rules have just added to the ignore,
+ // making the behavior changed.
+
+ if (this._added) {
+ this._initCache();
+ }
+
+ return this;
+ } // legacy
+
+ }, {
+ key: "addPattern",
+ value: function addPattern(pattern) {
+ return this.add(pattern);
+ }
+ }, {
+ key: "_addPattern",
+ value: function _addPattern(pattern) {
+ // #32
+ if (pattern && pattern[KEY_IGNORE]) {
+ this._rules = this._rules.concat(pattern._rules);
+ this._added = true;
+ return;
+ }
+
+ if (checkPattern(pattern)) {
+ var rule = createRule(pattern, this._ignorecase);
+ this._added = true;
+
+ this._rules.push(rule);
+ }
+ }
+ }, {
+ key: "filter",
+ value: function filter(paths) {
+ var _this = this;
+
+ return make_array(paths).filter(function (path) {
+ return _this._filter(path);
+ });
+ }
+ }, {
+ key: "createFilter",
+ value: function createFilter() {
+ var _this2 = this;
+
+ return function (path) {
+ return _this2._filter(path);
+ };
+ }
+ }, {
+ key: "ignores",
+ value: function ignores(path) {
+ return !this._filter(path);
+ } // @returns `Boolean` true if the `path` is NOT ignored
+
+ }, {
+ key: "_filter",
+ value: function _filter(path, slices) {
+ if (!path) {
+ return false;
+ }
+
+ if (path in this._cache) {
+ return this._cache[path];
+ }
+
+ if (!slices) {
+ // path/to/a.js
+ // ['path', 'to', 'a.js']
+ slices = path.split(SLASH);
+ }
+
+ slices.pop();
+ return this._cache[path] = slices.length // > It is not possible to re-include a file if a parent directory of
+ // > that file is excluded.
+ // If the path contains a parent directory, check the parent first
+ ? this._filter(slices.join(SLASH) + SLASH, slices) && this._test(path) // Or only test the path
+ : this._test(path);
+ } // @returns {Boolean} true if a file is NOT ignored
+
+ }, {
+ key: "_test",
+ value: function _test(path) {
+ // Explicitly define variable type by setting matched to `0`
+ var matched = 0;
+
+ this._rules.forEach(function (rule) {
+ // if matched = true, then we only test negative rules
+ // if matched = false, then we test non-negative rules
+ if (!(matched ^ rule.negative)) {
+ matched = rule.negative ^ rule.regex.test(path);
+ }
+ });
+
+ return !matched;
+ }
+ }]);
+
+ return IgnoreBase;
+}(); // Windows
+// --------------------------------------------------------------
+
+/* istanbul ignore if */
+
+
+if ( // Detect `process` so that it can run in browsers.
+typeof process !== 'undefined' && (process.env && process.env.IGNORE_TEST_WIN32 || process.platform === 'win32')) {
+ var filter = IgnoreBase.prototype._filter;
+ /* eslint no-control-regex: "off" */
+
+ var make_posix = function make_posix(str) {
+ return /^\\\\\?\\/.test(str) || /[^\x00-\x80]+/.test(str) ? str : str.replace(/\\/g, '/');
+ };
+
+ IgnoreBase.prototype._filter = function filterWin32(path, slices) {
+ path = make_posix(path);
+ return filter.call(this, path, slices);
+ };
+}
+
+var ignore = function ignore(options) {
+ return new IgnoreBase(options);
+};
+
+/**
+ * @param {string} filename
+ * @returns {Promise<null | string>}
+ */
+
+
+function getFileContentOrNull(filename) {
+ return new Promise(function (resolve, reject) {
+ fs$1.readFile(filename, "utf8", function (error, data) {
+ if (error && error.code !== "ENOENT") {
+ reject(createError(filename, error));
+ } else {
+ resolve(error ? null : data);
+ }
+ });
+ });
+}
+/**
+ * @param {string} filename
+ * @returns {null | string}
+ */
+
+
+getFileContentOrNull.sync = function (filename) {
+ try {
+ return fs$1.readFileSync(filename, "utf8");
+ } catch (error) {
+ if (error && error.code === "ENOENT") {
+ return null;
+ }
+
+ throw createError(filename, error);
+ }
+};
+
+function createError(filename, error) {
+ return new Error(`Unable to read ${filename}: ${error.message}`);
+}
+
+var getFileContentOrNull_1 = getFileContentOrNull;
+
+/**
+ * @param {undefined | string} ignorePath
+ * @param {undefined | boolean} withNodeModules
+ */
+
+
+function createIgnorer(ignorePath, withNodeModules) {
+ return (!ignorePath ? Promise.resolve(null) : getFileContentOrNull_1(path$2.resolve(ignorePath))).then(function (ignoreContent) {
+ return _createIgnorer(ignoreContent, withNodeModules);
+ });
+}
+/**
+ * @param {undefined | string} ignorePath
+ * @param {undefined | boolean} withNodeModules
+ */
+
+
+createIgnorer.sync = function (ignorePath, withNodeModules) {
+ var ignoreContent = !ignorePath ? null : getFileContentOrNull_1.sync(path$2.resolve(ignorePath));
+ return _createIgnorer(ignoreContent, withNodeModules);
+};
+/**
+ * @param {null | string} ignoreContent
+ * @param {undefined | boolean} withNodeModules
+ */
+
+
+function _createIgnorer(ignoreContent, withNodeModules) {
+ var ignorer = ignore().add(ignoreContent || "");
+
+ if (!withNodeModules) {
+ ignorer.add("node_modules");
+ }
+
+ return ignorer;
+}
+
+var createIgnorer_1 = createIgnorer;
+
+var thirdParty = require("./third-party");
+
+var concatMap = function concatMap(xs, fn) {
+ var res = [];
+
+ for (var i = 0; i < xs.length; i++) {
+ var x = fn(xs[i], i);
+ if (isArray(x)) res.push.apply(res, x);else res.push(x);
+ }
+
+ return res;
+};
+
+var isArray = Array.isArray || function (xs) {
+ return Object.prototype.toString.call(xs) === '[object Array]';
+};
+
+var balancedMatch = balanced;
+
+function balanced(a, b, str) {
+ if (a instanceof RegExp) a = maybeMatch(a, str);
+ if (b instanceof RegExp) b = maybeMatch(b, str);
+ var r = range(a, b, str);
+ return r && {
+ start: r[0],
+ end: r[1],
+ pre: str.slice(0, r[0]),
+ body: str.slice(r[0] + a.length, r[1]),
+ post: str.slice(r[1] + b.length)
+ };
+}
+
+function maybeMatch(reg, str) {
+ var m = str.match(reg);
+ return m ? m[0] : null;
+}
+
+balanced.range = range;
+
+function range(a, b, str) {
+ var begs, beg, left, right, result;
+ var ai = str.indexOf(a);
+ var bi = str.indexOf(b, ai + 1);
+ var i = ai;
+
+ if (ai >= 0 && bi > 0) {
+ begs = [];
+ left = str.length;
+
+ while (i >= 0 && !result) {
+ if (i == ai) {
+ begs.push(i);
+ ai = str.indexOf(a, i + 1);
+ } else if (begs.length == 1) {
+ result = [begs.pop(), bi];
+ } else {
+ beg = begs.pop();
+
+ if (beg < left) {
+ left = beg;
+ right = bi;
+ }
+
+ bi = str.indexOf(b, i + 1);
+ }
+
+ i = ai < bi && ai >= 0 ? ai : bi;
+ }
+
+ if (begs.length) {
+ result = [left, right];
+ }
+ }
+
+ return result;
+}
+
+var braceExpansion = expandTop;
+var escSlash = '\0SLASH' + Math.random() + '\0';
+var escOpen = '\0OPEN' + Math.random() + '\0';
+var escClose = '\0CLOSE' + Math.random() + '\0';
+var escComma = '\0COMMA' + Math.random() + '\0';
+var escPeriod = '\0PERIOD' + Math.random() + '\0';
+
+function numeric(str) {
+ return parseInt(str, 10) == str ? parseInt(str, 10) : str.charCodeAt(0);
+}
+
+function escapeBraces(str) {
+ return str.split('\\\\').join(escSlash).split('\\{').join(escOpen).split('\\}').join(escClose).split('\\,').join(escComma).split('\\.').join(escPeriod);
+}
+
+function unescapeBraces(str) {
+ return str.split(escSlash).join('\\').split(escOpen).join('{').split(escClose).join('}').split(escComma).join(',').split(escPeriod).join('.');
+} // Basically just str.split(","), but handling cases
+// where we have nested braced sections, which should be
+// treated as individual members, like {a,{b,c},d}
+
+
+function parseCommaParts(str) {
+ if (!str) return [''];
+ var parts = [];
+ var m = balancedMatch('{', '}', str);
+ if (!m) return str.split(',');
+ var pre = m.pre;
+ var body = m.body;
+ var post = m.post;
+ var p = pre.split(',');
+ p[p.length - 1] += '{' + body + '}';
+ var postParts = parseCommaParts(post);
+
+ if (post.length) {
+ p[p.length - 1] += postParts.shift();
+ p.push.apply(p, postParts);
+ }
+
+ parts.push.apply(parts, p);
+ return parts;
+}
+
+function expandTop(str) {
+ if (!str) return []; // I don't know why Bash 4.3 does this, but it does.
+ // Anything starting with {} will have the first two bytes preserved
+ // but *only* at the top level, so {},a}b will not expand to anything,
+ // but a{},b}c will be expanded to [a}c,abc].
+ // One could argue that this is a bug in Bash, but since the goal of
+ // this module is to match Bash's rules, we escape a leading {}
+
+ if (str.substr(0, 2) === '{}') {
+ str = '\\{\\}' + str.substr(2);
+ }
+
+ return expand(escapeBraces(str), true).map(unescapeBraces);
+}
+
+function embrace(str) {
+ return '{' + str + '}';
+}
+
+function isPadded(el) {
+ return /^-?0\d/.test(el);
+}
+
+function lte(i, y) {
+ return i <= y;
+}
+
+function gte(i, y) {
+ return i >= y;
+}
+
+function expand(str, isTop) {
+ var expansions = [];
+ var m = balancedMatch('{', '}', str);
+ if (!m || /\$$/.test(m.pre)) return [str];
+ var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body);
+ var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body);
+ var isSequence = isNumericSequence || isAlphaSequence;
+ var isOptions = m.body.indexOf(',') >= 0;
+
+ if (!isSequence && !isOptions) {
+ // {a},b}
+ if (m.post.match(/,.*\}/)) {
+ str = m.pre + '{' + m.body + escClose + m.post;
+ return expand(str);
+ }
+
+ return [str];
+ }
+
+ var n;
+
+ if (isSequence) {
+ n = m.body.split(/\.\./);
+ } else {
+ n = parseCommaParts(m.body);
+
+ if (n.length === 1) {
+ // x{{a,b}}y ==> x{a}y x{b}y
+ n = expand(n[0], false).map(embrace);
+
+ if (n.length === 1) {
+ var post = m.post.length ? expand(m.post, false) : [''];
+ return post.map(function (p) {
+ return m.pre + n[0] + p;
+ });
+ }
+ }
+ } // at this point, n is the parts, and we know it's not a comma set
+ // with a single entry.
+ // no need to expand pre, since it is guaranteed to be free of brace-sets
+
+
+ var pre = m.pre;
+ var post = m.post.length ? expand(m.post, false) : [''];
+ var N;
+
+ if (isSequence) {
+ var x = numeric(n[0]);
+ var y = numeric(n[1]);
+ var width = Math.max(n[0].length, n[1].length);
+ var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1;
+ var test = lte;
+ var reverse = y < x;
+
+ if (reverse) {
+ incr *= -1;
+ test = gte;
+ }
+
+ var pad = n.some(isPadded);
+ N = [];
+
+ for (var i = x; test(i, y); i += incr) {
+ var c;
+
+ if (isAlphaSequence) {
+ c = String.fromCharCode(i);
+ if (c === '\\') c = '';
+ } else {
+ c = String(i);
+
+ if (pad) {
+ var need = width - c.length;
+
+ if (need > 0) {
+ var z = new Array(need + 1).join('0');
+ if (i < 0) c = '-' + z + c.slice(1);else c = z + c;
+ }
+ }
+ }
+
+ N.push(c);
+ }
+ } else {
+ N = concatMap(n, function (el) {
+ return expand(el, false);
+ });
+ }
+
+ for (var j = 0; j < N.length; j++) {
+ for (var k = 0; k < post.length; k++) {
+ var expansion = pre + N[j] + post[k];
+ if (!isTop || isSequence || expansion) expansions.push(expansion);
+ }
+ }
+
+ return expansions;
+}
+
+var minimatch_1 = minimatch;
+minimatch.Minimatch = Minimatch;
+var path = {
+ sep: '/'
+};
+
+try {
+ path = path$2;
+} catch (er) {}
+
+var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {};
+var plTypes = {
+ '!': {
+ open: '(?:(?!(?:',
+ close: '))[^/]*?)'
+ },
+ '?': {
+ open: '(?:',
+ close: ')?'
+ },
+ '+': {
+ open: '(?:',
+ close: ')+'
+ },
+ '*': {
+ open: '(?:',
+ close: ')*'
+ },
+ '@': {
+ open: '(?:',
+ close: ')'
+ }
+}; // any single thing other than /
+// don't need to escape / when using new RegExp()
+
+var qmark = '[^/]'; // * => any number of characters
+
+var star = qmark + '*?'; // ** when dots are allowed. Anything goes, except .. and .
+// not (^ or / followed by one or two dots followed by $ or /),
+// followed by anything, any number of times.
+
+var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?'; // not a ^ or / followed by a dot,
+// followed by anything, any number of times.
+
+var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?'; // characters that need to be escaped in RegExp.
+
+var reSpecials = charSet('().*{}+?[]^$\\!'); // "abc" -> { a:true, b:true, c:true }
+
+function charSet(s) {
+ return s.split('').reduce(function (set, c) {
+ set[c] = true;
+ return set;
+ }, {});
+} // normalizes slashes.
+
+
+var slashSplit = /\/+/;
+minimatch.filter = filter$1;
+
+function filter$1(pattern, options) {
+ options = options || {};
+ return function (p, i, list) {
+ return minimatch(p, pattern, options);
+ };
+}
+
+function ext(a, b) {
+ a = a || {};
+ b = b || {};
+ var t = {};
+ Object.keys(b).forEach(function (k) {
+ t[k] = b[k];
+ });
+ Object.keys(a).forEach(function (k) {
+ t[k] = a[k];
+ });
+ return t;
+}
+
+minimatch.defaults = function (def) {
+ if (!def || !Object.keys(def).length) return minimatch;
+ var orig = minimatch;
+
+ var m = function minimatch(p, pattern, options) {
+ return orig.minimatch(p, pattern, ext(def, options));
+ };
+
+ m.Minimatch = function Minimatch(pattern, options) {
+ return new orig.Minimatch(pattern, ext(def, options));
+ };
+
+ return m;
+};
+
+Minimatch.defaults = function (def) {
+ if (!def || !Object.keys(def).length) return Minimatch;
+ return minimatch.defaults(def).Minimatch;
+};
+
+function minimatch(p, pattern, options) {
+ if (typeof pattern !== 'string') {
+ throw new TypeError('glob pattern string required');
+ }
+
+ if (!options) options = {}; // shortcut: comments match nothing.
+
+ if (!options.nocomment && pattern.charAt(0) === '#') {
+ return false;
+ } // "" only matches ""
+
+
+ if (pattern.trim() === '') return p === '';
+ return new Minimatch(pattern, options).match(p);
+}
+
+function Minimatch(pattern, options) {
+ if (!(this instanceof Minimatch)) {
+ return new Minimatch(pattern, options);
+ }
+
+ if (typeof pattern !== 'string') {
+ throw new TypeError('glob pattern string required');
+ }
+
+ if (!options) options = {};
+ pattern = pattern.trim(); // windows support: need to use /, not \
+
+ if (path.sep !== '/') {
+ pattern = pattern.split(path.sep).join('/');
+ }
+
+ this.options = options;
+ this.set = [];
+ this.pattern = pattern;
+ this.regexp = null;
+ this.negate = false;
+ this.comment = false;
+ this.empty = false; // make the set of regexps etc.
+
+ this.make();
+}
+
+Minimatch.prototype.debug = function () {};
+
+Minimatch.prototype.make = make;
+
+function make() {
+ // don't do it more than once.
+ if (this._made) return;
+ var pattern = this.pattern;
+ var options = this.options; // empty patterns and comments match nothing.
+
+ if (!options.nocomment && pattern.charAt(0) === '#') {
+ this.comment = true;
+ return;
+ }
+
+ if (!pattern) {
+ this.empty = true;
+ return;
+ } // step 1: figure out negation, etc.
+
+
+ this.parseNegate(); // step 2: expand braces
+
+ var set = this.globSet = this.braceExpand();
+ if (options.debug) this.debug = console.error;
+ this.debug(this.pattern, set); // step 3: now we have a set, so turn each one into a series of path-portion
+ // matching patterns.
+ // These will be regexps, except in the case of "**", which is
+ // set to the GLOBSTAR object for globstar behavior,
+ // and will not contain any / characters
+
+ set = this.globParts = set.map(function (s) {
+ return s.split(slashSplit);
+ });
+ this.debug(this.pattern, set); // glob --> regexps
+
+ set = set.map(function (s, si, set) {
+ return s.map(this.parse, this);
+ }, this);
+ this.debug(this.pattern, set); // filter out everything that didn't compile properly.
+
+ set = set.filter(function (s) {
+ return s.indexOf(false) === -1;
+ });
+ this.debug(this.pattern, set);
+ this.set = set;
+}
+
+Minimatch.prototype.parseNegate = parseNegate;
+
+function parseNegate() {
+ var pattern = this.pattern;
+ var negate = false;
+ var options = this.options;
+ var negateOffset = 0;
+ if (options.nonegate) return;
+
+ for (var i = 0, l = pattern.length; i < l && pattern.charAt(i) === '!'; i++) {
+ negate = !negate;
+ negateOffset++;
+ }
+
+ if (negateOffset) this.pattern = pattern.substr(negateOffset);
+ this.negate = negate;
+} // Brace expansion:
+// a{b,c}d -> abd acd
+// a{b,}c -> abc ac
+// a{0..3}d -> a0d a1d a2d a3d
+// a{b,c{d,e}f}g -> abg acdfg acefg
+// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
+//
+// Invalid sets are not expanded.
+// a{2..}b -> a{2..}b
+// a{b}c -> a{b}c
+
+
+minimatch.braceExpand = function (pattern, options) {
+ return braceExpand(pattern, options);
+};
+
+Minimatch.prototype.braceExpand = braceExpand;
+
+function braceExpand(pattern, options) {
+ if (!options) {
+ if (this instanceof Minimatch) {
+ options = this.options;
+ } else {
+ options = {};
+ }
+ }
+
+ pattern = typeof pattern === 'undefined' ? this.pattern : pattern;
+
+ if (typeof pattern === 'undefined') {
+ throw new TypeError('undefined pattern');
+ }
+
+ if (options.nobrace || !pattern.match(/\{.*\}/)) {
+ // shortcut. no need to expand.
+ return [pattern];
+ }
+
+ return braceExpansion(pattern);
+} // parse a component of the expanded set.
+// At this point, no pattern may contain "/" in it
+// so we're going to return a 2d array, where each entry is the full
+// pattern, split on '/', and then turned into a regular expression.
+// A regexp is made at the end which joins each array with an
+// escaped /, and another full one which joins each regexp with |.
+//
+// Following the lead of Bash 4.1, note that "**" only has special meaning
+// when it is the *only* thing in a path portion. Otherwise, any series
+// of * is equivalent to a single *. Globstar behavior is enabled by
+// default, and can be disabled by setting options.noglobstar.
+
+
+Minimatch.prototype.parse = parse$1;
+var SUBPARSE = {};
+
+function parse$1(pattern, isSub) {
+ if (pattern.length > 1024 * 64) {
+ throw new TypeError('pattern is too long');
+ }
+
+ var options = this.options; // shortcuts
+
+ if (!options.noglobstar && pattern === '**') return GLOBSTAR;
+ if (pattern === '') return '';
+ var re = '';
+ var hasMagic = !!options.nocase;
+ var escaping = false; // ? => one single character
+
+ var patternListStack = [];
+ var negativeLists = [];
+ var stateChar;
+ var inClass = false;
+ var reClassStart = -1;
+ var classStart = -1; // . and .. never match anything that doesn't start with .,
+ // even when options.dot is set.
+
+ var patternStart = pattern.charAt(0) === '.' ? '' // anything
+ // not (start or / followed by . or .. followed by / or end)
+ : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))' : '(?!\\.)';
+ var self = this;
+
+ function clearStateChar() {
+ if (stateChar) {
+ // we had some state-tracking character
+ // that wasn't consumed by this pass.
+ switch (stateChar) {
+ case '*':
+ re += star;
+ hasMagic = true;
+ break;
+
+ case '?':
+ re += qmark;
+ hasMagic = true;
+ break;
+
+ default:
+ re += '\\' + stateChar;
+ break;
+ }
+
+ self.debug('clearStateChar %j %j', stateChar, re);
+ stateChar = false;
+ }
+ }
+
+ for (var i = 0, len = pattern.length, c; i < len && (c = pattern.charAt(i)); i++) {
+ this.debug('%s\t%s %s %j', pattern, i, re, c); // skip over any that are escaped.
+
+ if (escaping && reSpecials[c]) {
+ re += '\\' + c;
+ escaping = false;
+ continue;
+ }
+
+ switch (c) {
+ case '/':
+ // completely not allowed, even escaped.
+ // Should already be path-split by now.
+ return false;
+
+ case '\\':
+ clearStateChar();
+ escaping = true;
+ continue;
+ // the various stateChar values
+ // for the "extglob" stuff.
+
+ case '?':
+ case '*':
+ case '+':
+ case '@':
+ case '!':
+ this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c); // all of those are literals inside a class, except that
+ // the glob [!a] means [^a] in regexp
+
+ if (inClass) {
+ this.debug(' in class');
+ if (c === '!' && i === classStart + 1) c = '^';
+ re += c;
+ continue;
+ } // if we already have a stateChar, then it means
+ // that there was something like ** or +? in there.
+ // Handle the stateChar, then proceed with this one.
+
+
+ self.debug('call clearStateChar %j', stateChar);
+ clearStateChar();
+ stateChar = c; // if extglob is disabled, then +(asdf|foo) isn't a thing.
+ // just clear the statechar *now*, rather than even diving into
+ // the patternList stuff.
+
+ if (options.noext) clearStateChar();
+ continue;
+
+ case '(':
+ if (inClass) {
+ re += '(';
+ continue;
+ }
+
+ if (!stateChar) {
+ re += '\\(';
+ continue;
+ }
+
+ patternListStack.push({
+ type: stateChar,
+ start: i - 1,
+ reStart: re.length,
+ open: plTypes[stateChar].open,
+ close: plTypes[stateChar].close
+ }); // negation is (?:(?!js)[^/]*)
+
+ re += stateChar === '!' ? '(?:(?!(?:' : '(?:';
+ this.debug('plType %j %j', stateChar, re);
+ stateChar = false;
+ continue;
+
+ case ')':
+ if (inClass || !patternListStack.length) {
+ re += '\\)';
+ continue;
+ }
+
+ clearStateChar();
+ hasMagic = true;
+ var pl = patternListStack.pop(); // negation is (?:(?!js)[^/]*)
+ // The others are (?:<pattern>)<type>
+
+ re += pl.close;
+
+ if (pl.type === '!') {
+ negativeLists.push(pl);
+ }
+
+ pl.reEnd = re.length;
+ continue;
+
+ case '|':
+ if (inClass || !patternListStack.length || escaping) {
+ re += '\\|';
+ escaping = false;
+ continue;
+ }
+
+ clearStateChar();
+ re += '|';
+ continue;
+ // these are mostly the same in regexp and glob
+
+ case '[':
+ // swallow any state-tracking char before the [
+ clearStateChar();
+
+ if (inClass) {
+ re += '\\' + c;
+ continue;
+ }
+
+ inClass = true;
+ classStart = i;
+ reClassStart = re.length;
+ re += c;
+ continue;
+
+ case ']':
+ // a right bracket shall lose its special
+ // meaning and represent itself in
+ // a bracket expression if it occurs
+ // first in the list. -- POSIX.2 2.8.3.2
+ if (i === classStart + 1 || !inClass) {
+ re += '\\' + c;
+ escaping = false;
+ continue;
+ } // handle the case where we left a class open.
+ // "[z-a]" is valid, equivalent to "\[z-a\]"
+
+
+ if (inClass) {
+ // split where the last [ was, make sure we don't have
+ // an invalid re. if so, re-walk the contents of the
+ // would-be class to re-translate any characters that
+ // were passed through as-is
+ // TODO: It would probably be faster to determine this
+ // without a try/catch and a new RegExp, but it's tricky
+ // to do safely. For now, this is safe and works.
+ var cs = pattern.substring(classStart + 1, i);
+
+ try {
+ RegExp('[' + cs + ']');
+ } catch (er) {
+ // not a valid class!
+ var sp = this.parse(cs, SUBPARSE);
+ re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]';
+ hasMagic = hasMagic || sp[1];
+ inClass = false;
+ continue;
+ }
+ } // finish up the class.
+
+
+ hasMagic = true;
+ inClass = false;
+ re += c;
+ continue;
+
+ default:
+ // swallow any state char that wasn't consumed
+ clearStateChar();
+
+ if (escaping) {
+ // no need
+ escaping = false;
+ } else if (reSpecials[c] && !(c === '^' && inClass)) {
+ re += '\\';
+ }
+
+ re += c;
+ } // switch
+
+ } // for
+ // handle the case where we left a class open.
+ // "[abc" is valid, equivalent to "\[abc"
+
+
+ if (inClass) {
+ // split where the last [ was, and escape it
+ // this is a huge pita. We now have to re-walk
+ // the contents of the would-be class to re-translate
+ // any characters that were passed through as-is
+ cs = pattern.substr(classStart + 1);
+ sp = this.parse(cs, SUBPARSE);
+ re = re.substr(0, reClassStart) + '\\[' + sp[0];
+ hasMagic = hasMagic || sp[1];
+ } // handle the case where we had a +( thing at the *end*
+ // of the pattern.
+ // each pattern list stack adds 3 chars, and we need to go through
+ // and escape any | chars that were passed through as-is for the regexp.
+ // Go through and escape them, taking care not to double-escape any
+ // | chars that were already escaped.
+
+
+ for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
+ var tail = re.slice(pl.reStart + pl.open.length);
+ this.debug('setting tail', re, pl); // maybe some even number of \, then maybe 1 \, followed by a |
+
+ tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) {
+ if (!$2) {
+ // the | isn't already escaped, so escape it.
+ $2 = '\\';
+ } // need to escape all those slashes *again*, without escaping the
+ // one that we need for escaping the | character. As it works out,
+ // escaping an even number of slashes can be done by simply repeating
+ // it exactly after itself. That's why this trick works.
+ //
+ // I am sorry that you have to see this.
+
+
+ return $1 + $1 + $2 + '|';
+ });
+ this.debug('tail=%j\n %s', tail, tail, pl, re);
+ var t = pl.type === '*' ? star : pl.type === '?' ? qmark : '\\' + pl.type;
+ hasMagic = true;
+ re = re.slice(0, pl.reStart) + t + '\\(' + tail;
+ } // handle trailing things that only matter at the very end.
+
+
+ clearStateChar();
+
+ if (escaping) {
+ // trailing \\
+ re += '\\\\';
+ } // only need to apply the nodot start if the re starts with
+ // something that could conceivably capture a dot
+
+
+ var addPatternStart = false;
+
+ switch (re.charAt(0)) {
+ case '.':
+ case '[':
+ case '(':
+ addPatternStart = true;
+ } // Hack to work around lack of negative lookbehind in JS
+ // A pattern like: *.!(x).!(y|z) needs to ensure that a name
+ // like 'a.xyz.yz' doesn't match. So, the first negative
+ // lookahead, has to look ALL the way ahead, to the end of
+ // the pattern.
+
+
+ for (var n = negativeLists.length - 1; n > -1; n--) {
+ var nl = negativeLists[n];
+ var nlBefore = re.slice(0, nl.reStart);
+ var nlFirst = re.slice(nl.reStart, nl.reEnd - 8);
+ var nlLast = re.slice(nl.reEnd - 8, nl.reEnd);
+ var nlAfter = re.slice(nl.reEnd);
+ nlLast += nlAfter; // Handle nested stuff like *(*.js|!(*.json)), where open parens
+ // mean that we should *not* include the ) in the bit that is considered
+ // "after" the negated section.
+
+ var openParensBefore = nlBefore.split('(').length - 1;
+ var cleanAfter = nlAfter;
+
+ for (i = 0; i < openParensBefore; i++) {
+ cleanAfter = cleanAfter.replace(/\)[+*?]?/, '');
+ }
+
+ nlAfter = cleanAfter;
+ var dollar = '';
+
+ if (nlAfter === '' && isSub !== SUBPARSE) {
+ dollar = '$';
+ }
+
+ var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast;
+ re = newRe;
+ } // if the re is not "" at this point, then we need to make sure
+ // it doesn't match against an empty path part.
+ // Otherwise a/* will match a/, which it should not.
+
+
+ if (re !== '' && hasMagic) {
+ re = '(?=.)' + re;
+ }
+
+ if (addPatternStart) {
+ re = patternStart + re;
+ } // parsing just a piece of a larger pattern.
+
+
+ if (isSub === SUBPARSE) {
+ return [re, hasMagic];
+ } // skip the regexp for non-magical patterns
+ // unescape anything in it, though, so that it'll be
+ // an exact match against a file etc.
+
+
+ if (!hasMagic) {
+ return globUnescape(pattern);
+ }
+
+ var flags = options.nocase ? 'i' : '';
+
+ try {
+ var regExp = new RegExp('^' + re + '$', flags);
+ } catch (er) {
+ // If it was an invalid regular expression, then it can't match
+ // anything. This trick looks for a character after the end of
+ // the string, which is of course impossible, except in multi-line
+ // mode, but it's not a /m regex.
+ return new RegExp('$.');
+ }
+
+ regExp._glob = pattern;
+ regExp._src = re;
+ return regExp;
+}
+
+minimatch.makeRe = function (pattern, options) {
+ return new Minimatch(pattern, options || {}).makeRe();
+};
+
+Minimatch.prototype.makeRe = makeRe;
+
+function makeRe() {
+ if (this.regexp || this.regexp === false) return this.regexp; // at this point, this.set is a 2d array of partial
+ // pattern strings, or "**".
+ //
+ // It's better to use .match(). This function shouldn't
+ // be used, really, but it's pretty convenient sometimes,
+ // when you just want to work with a regex.
+
+ var set = this.set;
+
+ if (!set.length) {
+ this.regexp = false;
+ return this.regexp;
+ }
+
+ var options = this.options;
+ var twoStar = options.noglobstar ? star : options.dot ? twoStarDot : twoStarNoDot;
+ var flags = options.nocase ? 'i' : '';
+ var re = set.map(function (pattern) {
+ return pattern.map(function (p) {
+ return p === GLOBSTAR ? twoStar : typeof p === 'string' ? regExpEscape(p) : p._src;
+ }).join('\\\/');
+ }).join('|'); // must match entire pattern
+ // ending in a * or ** will make it less strict.
+
+ re = '^(?:' + re + ')$'; // can match anything, as long as it's not this.
+
+ if (this.negate) re = '^(?!' + re + ').*$';
+
+ try {
+ this.regexp = new RegExp(re, flags);
+ } catch (ex) {
+ this.regexp = false;
+ }
+
+ return this.regexp;
+}
+
+minimatch.match = function (list, pattern, options) {
+ options = options || {};
+ var mm = new Minimatch(pattern, options);
+ list = list.filter(function (f) {
+ return mm.match(f);
+ });
+
+ if (mm.options.nonull && !list.length) {
+ list.push(pattern);
+ }
+
+ return list;
+};
+
+Minimatch.prototype.match = match;
+
+function match(f, partial) {
+ this.debug('match', f, this.pattern); // short-circuit in the case of busted things.
+ // comments, etc.
+
+ if (this.comment) return false;
+ if (this.empty) return f === '';
+ if (f === '/' && partial) return true;
+ var options = this.options; // windows: need to use /, not \
+
+ if (path.sep !== '/') {
+ f = f.split(path.sep).join('/');
+ } // treat the test path as a set of pathparts.
+
+
+ f = f.split(slashSplit);
+ this.debug(this.pattern, 'split', f); // just ONE of the pattern sets in this.set needs to match
+ // in order for it to be valid. If negating, then just one
+ // match means that we have failed.
+ // Either way, return on the first hit.
+
+ var set = this.set;
+ this.debug(this.pattern, 'set', set); // Find the basename of the path by looking for the last non-empty segment
+
+ var filename;
+ var i;
+
+ for (i = f.length - 1; i >= 0; i--) {
+ filename = f[i];
+ if (filename) break;
+ }
+
+ for (i = 0; i < set.length; i++) {
+ var pattern = set[i];
+ var file = f;
+
+ if (options.matchBase && pattern.length === 1) {
+ file = [filename];
+ }
+
+ var hit = this.matchOne(file, pattern, partial);
+
+ if (hit) {
+ if (options.flipNegate) return true;
+ return !this.negate;
+ }
+ } // didn't get any hits. this is success if it's a negative
+ // pattern, failure otherwise.
+
+
+ if (options.flipNegate) return false;
+ return this.negate;
+} // set partial to true to test if, for example,
+// "/a/b" matches the start of "/*/b/*/d"
+// Partial means, if you run out of file before you run
+// out of pattern, then that's fine, as long as all
+// the parts match.
+
+
+Minimatch.prototype.matchOne = function (file, pattern, partial) {
+ var options = this.options;
+ this.debug('matchOne', {
+ 'this': this,
+ file: file,
+ pattern: pattern
+ });
+ this.debug('matchOne', file.length, pattern.length);
+
+ for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
+ this.debug('matchOne loop');
+ var p = pattern[pi];
+ var f = file[fi];
+ this.debug(pattern, p, f); // should be impossible.
+ // some invalid regexp stuff in the set.
+
+ if (p === false) return false;
+
+ if (p === GLOBSTAR) {
+ this.debug('GLOBSTAR', [pattern, p, f]); // "**"
+ // a/**/b/**/c would match the following:
+ // a/b/x/y/z/c
+ // a/x/y/z/b/c
+ // a/b/x/b/x/c
+ // a/b/c
+ // To do this, take the rest of the pattern after
+ // the **, and see if it would match the file remainder.
+ // If so, return success.
+ // If not, the ** "swallows" a segment, and try again.
+ // This is recursively awful.
+ //
+ // a/**/b/**/c matching a/b/x/y/z/c
+ // - a matches a
+ // - doublestar
+ // - matchOne(b/x/y/z/c, b/**/c)
+ // - b matches b
+ // - doublestar
+ // - matchOne(x/y/z/c, c) -> no
+ // - matchOne(y/z/c, c) -> no
+ // - matchOne(z/c, c) -> no
+ // - matchOne(c, c) yes, hit
+
+ var fr = fi;
+ var pr = pi + 1;
+
+ if (pr === pl) {
+ this.debug('** at the end'); // a ** at the end will just swallow the rest.
+ // We have found a match.
+ // however, it will not swallow /.x, unless
+ // options.dot is set.
+ // . and .. are *never* matched by **, for explosively
+ // exponential reasons.
+
+ for (; fi < fl; fi++) {
+ if (file[fi] === '.' || file[fi] === '..' || !options.dot && file[fi].charAt(0) === '.') return false;
+ }
+
+ return true;
+ } // ok, let's see if we can swallow whatever we can.
+
+
+ while (fr < fl) {
+ var swallowee = file[fr];
+ this.debug('\nglobstar while', file, fr, pattern, pr, swallowee); // XXX remove this slice. Just pass the start index.
+
+ if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
+ this.debug('globstar found match!', fr, fl, swallowee); // found a match.
+
+ return true;
+ } else {
+ // can't swallow "." or ".." ever.
+ // can only swallow ".foo" when explicitly asked.
+ if (swallowee === '.' || swallowee === '..' || !options.dot && swallowee.charAt(0) === '.') {
+ this.debug('dot detected!', file, fr, pattern, pr);
+ break;
+ } // ** swallows a segment, and continue.
+
+
+ this.debug('globstar swallow a segment, and continue');
+ fr++;
+ }
+ } // no match was found.
+ // However, in partial mode, we can't say this is necessarily over.
+ // If there's more *pattern* left, then
+
+
+ if (partial) {
+ // ran out of file
+ this.debug('\n>>> no match, partial?', file, fr, pattern, pr);
+ if (fr === fl) return true;
+ }
+
+ return false;
+ } // something other than **
+ // non-magic patterns just have to match exactly
+ // patterns with magic have been turned into regexps.
+
+
+ var hit;
+
+ if (typeof p === 'string') {
+ if (options.nocase) {
+ hit = f.toLowerCase() === p.toLowerCase();
+ } else {
+ hit = f === p;
+ }
+
+ this.debug('string match', p, f, hit);
+ } else {
+ hit = f.match(p);
+ this.debug('pattern match', p, f, hit);
+ }
+
+ if (!hit) return false;
+ } // Note: ending in / means that we'll get a final ""
+ // at the end of the pattern. This can only match a
+ // corresponding "" at the end of the file.
+ // If the file ends in /, then it can only match a
+ // a pattern that ends in /, unless the pattern just
+ // doesn't have any more for it. But, a/b/ should *not*
+ // match "a/b/*", even though "" matches against the
+ // [^/]*? pattern, except in partial mode, where it might
+ // simply not be reached yet.
+ // However, a/b/ should still satisfy a/*
+ // now either we fell off the end of the pattern, or we're done.
+
+
+ if (fi === fl && pi === pl) {
+ // ran out of pattern and filename at the same time.
+ // an exact hit!
+ return true;
+ } else if (fi === fl) {
+ // ran out of file, but still had pattern left.
+ // this is ok if we're doing the match as part of
+ // a glob fs traversal.
+ return partial;
+ } else if (pi === pl) {
+ // ran out of pattern, still have file left.
+ // this is only acceptable if we're on the very last
+ // empty segment of a file with a trailing slash.
+ // a/* should match a/b/
+ var emptyFileEnd = fi === fl - 1 && file[fi] === '';
+ return emptyFileEnd;
+ } // should be unreachable.
+
+
+ throw new Error('wtf?');
+}; // replace stuff like \* with *
+
+
+function globUnescape(s) {
+ return s.replace(/\\(.)/g, '$1');
+}
+
+function regExpEscape(s) {
+ return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
+}
+
+var assert = true;
+var async_hooks = ">= 8";
+var buffer_ieee754 = "< 0.9.7";
+var buffer = true;
+var child_process = true;
+var cluster = true;
+var console$1 = true;
+var constants = true;
+var crypto = true;
+var _debug_agent = ">= 1 && < 8";
+var _debugger = "< 8";
+var dgram = true;
+var dns = true;
+var domain = true;
+var events = true;
+var freelist = "< 6";
+var fs = true;
+var _http_agent = ">= 0.11.1";
+var _http_client = ">= 0.11.1";
+var _http_common = ">= 0.11.1";
+var _http_incoming = ">= 0.11.1";
+var _http_outgoing = ">= 0.11.1";
+var _http_server = ">= 0.11.1";
+var http = true;
+var http2 = ">= 8.8";
+var https = true;
+var inspector = ">= 8.0.0";
+var _linklist = "< 8";
+var module$1 = true;
+var net = true;
+var os = true;
+var path$1 = true;
+var perf_hooks = ">= 8.5";
+var process$1 = ">= 1";
+var punycode = true;
+var querystring = true;
+var readline = true;
+var repl = true;
+var smalloc = ">= 0.11.5 && < 3";
+var _stream_duplex = ">= 0.9.4";
+var _stream_transform = ">= 0.9.4";
+var _stream_wrap = ">= 1.4.1";
+var _stream_passthrough = ">= 0.9.4";
+var _stream_readable = ">= 0.9.4";
+var _stream_writable = ">= 0.9.4";
+var stream = true;
+var string_decoder = true;
+var sys = true;
+var timers = true;
+var _tls_common = ">= 0.11.13";
+var _tls_legacy = ">= 0.11.3 && < 10";
+var _tls_wrap = ">= 0.11.3";
+var tls = true;
+var trace_events = ">= 10";
+var tty = true;
+var url = true;
+var util$1 = true;
+var v8 = ">= 1";
+var vm = true;
+var worker_threads = ">= 11.7";
+var zlib = true;
+var core$1 = {
+ assert: assert,
+ async_hooks: async_hooks,
+ buffer_ieee754: buffer_ieee754,
+ buffer: buffer,
+ child_process: child_process,
+ cluster: cluster,
+ console: console$1,
+ constants: constants,
+ crypto: crypto,
+ _debug_agent: _debug_agent,
+ _debugger: _debugger,
+ dgram: dgram,
+ dns: dns,
+ domain: domain,
+ events: events,
+ freelist: freelist,
+ fs: fs,
+ "fs/promises": ">= 10 && < 10.1",
+ _http_agent: _http_agent,
+ _http_client: _http_client,
+ _http_common: _http_common,
+ _http_incoming: _http_incoming,
+ _http_outgoing: _http_outgoing,
+ _http_server: _http_server,
+ http: http,
+ http2: http2,
+ https: https,
+ inspector: inspector,
+ _linklist: _linklist,
+ module: module$1,
+ net: net,
+ "node-inspect/lib/_inspect": ">= 7.6.0 && < 12",
+ "node-inspect/lib/internal/inspect_client": ">= 7.6.0 && < 12",
+ "node-inspect/lib/internal/inspect_repl": ">= 7.6.0 && < 12",
+ os: os,
+ path: path$1,
+ perf_hooks: perf_hooks,
+ process: process$1,
+ punycode: punycode,
+ querystring: querystring,
+ readline: readline,
+ repl: repl,
+ smalloc: smalloc,
+ _stream_duplex: _stream_duplex,
+ _stream_transform: _stream_transform,
+ _stream_wrap: _stream_wrap,
+ _stream_passthrough: _stream_passthrough,
+ _stream_readable: _stream_readable,
+ _stream_writable: _stream_writable,
+ stream: stream,
+ string_decoder: string_decoder,
+ sys: sys,
+ timers: timers,
+ _tls_common: _tls_common,
+ _tls_legacy: _tls_legacy,
+ _tls_wrap: _tls_wrap,
+ tls: tls,
+ trace_events: trace_events,
+ tty: tty,
+ url: url,
+ util: util$1,
+ "v8/tools/arguments": ">= 10 && < 12",
+ "v8/tools/codemap": [
+ ">= 4.4.0 && < 5",
+ ">= 5.2.0 && < 12"
+],
+ "v8/tools/consarray": [
+ ">= 4.4.0 && < 5",
+ ">= 5.2.0 && < 12"
+],
+ "v8/tools/csvparser": [
+ ">= 4.4.0 && < 5",
+ ">= 5.2.0 && < 12"
+],
+ "v8/tools/logreader": [
+ ">= 4.4.0 && < 5",
+ ">= 5.2.0 && < 12"
+],
+ "v8/tools/profile_view": [
+ ">= 4.4.0 && < 5",
+ ">= 5.2.0 && < 12"
+],
+ "v8/tools/splaytree": [
+ ">= 4.4.0 && < 5",
+ ">= 5.2.0 && < 12"
+],
+ v8: v8,
+ vm: vm,
+ worker_threads: worker_threads,
+ zlib: zlib
+};
+
+var core$2 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ assert: assert,
+ async_hooks: async_hooks,
+ buffer_ieee754: buffer_ieee754,
+ buffer: buffer,
+ child_process: child_process,
+ cluster: cluster,
+ console: console$1,
+ constants: constants,
+ crypto: crypto,
+ _debug_agent: _debug_agent,
+ _debugger: _debugger,
+ dgram: dgram,
+ dns: dns,
+ domain: domain,
+ events: events,
+ freelist: freelist,
+ fs: fs,
+ _http_agent: _http_agent,
+ _http_client: _http_client,
+ _http_common: _http_common,
+ _http_incoming: _http_incoming,
+ _http_outgoing: _http_outgoing,
+ _http_server: _http_server,
+ http: http,
+ http2: http2,
+ https: https,
+ inspector: inspector,
+ _linklist: _linklist,
+ module: module$1,
+ net: net,
+ os: os,
+ path: path$1,
+ perf_hooks: perf_hooks,
+ process: process$1,
+ punycode: punycode,
+ querystring: querystring,
+ readline: readline,
+ repl: repl,
+ smalloc: smalloc,
+ _stream_duplex: _stream_duplex,
+ _stream_transform: _stream_transform,
+ _stream_wrap: _stream_wrap,
+ _stream_passthrough: _stream_passthrough,
+ _stream_readable: _stream_readable,
+ _stream_writable: _stream_writable,
+ stream: stream,
+ string_decoder: string_decoder,
+ sys: sys,
+ timers: timers,
+ _tls_common: _tls_common,
+ _tls_legacy: _tls_legacy,
+ _tls_wrap: _tls_wrap,
+ tls: tls,
+ trace_events: trace_events,
+ tty: tty,
+ url: url,
+ util: util$1,
+ v8: v8,
+ vm: vm,
+ worker_threads: worker_threads,
+ zlib: zlib,
+ 'default': core$1
+});
+
+var data = getCjsExportFromNamespace(core$2);
+
+var current = process.versions && process.versions.node && process.versions.node.split('.') || [];
+
+function specifierIncluded(specifier) {
+ var parts = specifier.split(' ');
+ var op = parts.length > 1 ? parts[0] : '=';
+ var versionParts = (parts.length > 1 ? parts[1] : parts[0]).split('.');
+
+ for (var i = 0; i < 3; ++i) {
+ var cur = Number(current[i] || 0);
+ var ver = Number(versionParts[i] || 0);
+
+ if (cur === ver) {
+ continue; // eslint-disable-line no-restricted-syntax, no-continue
+ }
+
+ if (op === '<') {
+ return cur < ver;
+ } else if (op === '>=') {
+ return cur >= ver;
+ } else {
+ return false;
+ }
+ }
+
+ return op === '>=';
+}
+
+function matchesRange(range) {
+ var specifiers = range.split(/ ?&& ?/);
+
+ if (specifiers.length === 0) {
+ return false;
+ }
+
+ for (var i = 0; i < specifiers.length; ++i) {
+ if (!specifierIncluded(specifiers[i])) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+function versionIncluded(specifierValue) {
+ if (typeof specifierValue === 'boolean') {
+ return specifierValue;
+ }
+
+ if (specifierValue && typeof specifierValue === 'object') {
+ for (var i = 0; i < specifierValue.length; ++i) {
+ if (matchesRange(specifierValue[i])) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ return matchesRange(specifierValue);
+}
+
+var core$3 = {};
+
+for (var mod in data) {
+ // eslint-disable-line no-restricted-syntax
+ if (Object.prototype.hasOwnProperty.call(data, mod)) {
+ core$3[mod] = versionIncluded(data[mod]);
+ }
+}
+
+var core_1 = core$3;
+
+var caller = function caller() {
+ // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
+ var origPrepareStackTrace = Error.prepareStackTrace;
+
+ Error.prepareStackTrace = function (_, stack) {
+ return stack;
+ };
+
+ var stack = new Error().stack;
+ Error.prepareStackTrace = origPrepareStackTrace;
+ return stack[2].getFileName();
+};
+
+var pathParse = createCommonjsModule(function (module) {
+
+ var isWindows = process.platform === 'win32'; // Regex to split a windows path into three parts: [*, device, slash,
+ // tail] windows-only
+
+ var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; // Regex to split the tail part of the above into [*, dir, basename, ext]
+
+ var splitTailRe = /^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/;
+ var win32 = {}; // Function to split a filename into [root, dir, basename, ext]
+
+ function win32SplitPath(filename) {
+ // Separate device+slash from tail
+ var result = splitDeviceRe.exec(filename),
+ device = (result[1] || '') + (result[2] || ''),
+ tail = result[3] || ''; // Split the tail into dir, basename and extension
+
+ var result2 = splitTailRe.exec(tail),
+ dir = result2[1],
+ basename = result2[2],
+ ext = result2[3];
+ return [device, dir, basename, ext];
+ }
+
+ win32.parse = function (pathString) {
+ if (typeof pathString !== 'string') {
+ throw new TypeError("Parameter 'pathString' must be a string, not " + typeof pathString);
+ }
+
+ var allParts = win32SplitPath(pathString);
+
+ if (!allParts || allParts.length !== 4) {
+ throw new TypeError("Invalid path '" + pathString + "'");
+ }
+
+ return {
+ root: allParts[0],
+ dir: allParts[0] + allParts[1].slice(0, -1),
+ base: allParts[2],
+ ext: allParts[3],
+ name: allParts[2].slice(0, allParts[2].length - allParts[3].length)
+ };
+ }; // Split a filename into [root, dir, basename, ext], unix version
+ // 'root' is just a slash, or nothing.
+
+
+ var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
+ var posix = {};
+
+ function posixSplitPath(filename) {
+ return splitPathRe.exec(filename).slice(1);
+ }
+
+ posix.parse = function (pathString) {
+ if (typeof pathString !== 'string') {
+ throw new TypeError("Parameter 'pathString' must be a string, not " + typeof pathString);
+ }
+
+ var allParts = posixSplitPath(pathString);
+
+ if (!allParts || allParts.length !== 4) {
+ throw new TypeError("Invalid path '" + pathString + "'");
+ }
+
+ allParts[1] = allParts[1] || '';
+ allParts[2] = allParts[2] || '';
+ allParts[3] = allParts[3] || '';
+ return {
+ root: allParts[0],
+ dir: allParts[0] + allParts[1].slice(0, -1),
+ base: allParts[2],
+ ext: allParts[3],
+ name: allParts[2].slice(0, allParts[2].length - allParts[3].length)
+ };
+ };
+
+ if (isWindows) module.exports = win32.parse;else
+ /* posix */
+ module.exports = posix.parse;
+ module.exports.posix = posix.parse;
+ module.exports.win32 = win32.parse;
+});
+var pathParse_1 = pathParse.posix;
+var pathParse_2 = pathParse.win32;
+
+var parse$2 = path$2.parse || pathParse;
+
+var getNodeModulesDirs = function getNodeModulesDirs(absoluteStart, modules) {
+ var prefix = '/';
+
+ if (/^([A-Za-z]:)/.test(absoluteStart)) {
+ prefix = '';
+ } else if (/^\\\\/.test(absoluteStart)) {
+ prefix = '\\\\';
+ }
+
+ var paths = [absoluteStart];
+ var parsed = parse$2(absoluteStart);
+
+ while (parsed.dir !== paths[paths.length - 1]) {
+ paths.push(parsed.dir);
+ parsed = parse$2(parsed.dir);
+ }
+
+ return paths.reduce(function (dirs, aPath) {
+ return dirs.concat(modules.map(function (moduleDir) {
+ return path$2.resolve(prefix, aPath, moduleDir);
+ }));
+ }, []);
+};
+
+var nodeModulesPaths = function nodeModulesPaths(start, opts, request) {
+ var modules = opts && opts.moduleDirectory ? [].concat(opts.moduleDirectory) : ['node_modules'];
+
+ if (opts && typeof opts.paths === 'function') {
+ return opts.paths(request, start, function () {
+ return getNodeModulesDirs(start, modules);
+ }, opts);
+ }
+
+ var dirs = getNodeModulesDirs(start, modules);
+ return opts && opts.paths ? dirs.concat(opts.paths) : dirs;
+};
+
+var normalizeOptions$2 = function normalizeOptions(x, opts) {
+ /**
+ * This file is purposefully a passthrough. It's expected that third-party
+ * environments will override it at runtime in order to inject special logic
+ * into `resolve` (by manipulating the options). One such example is the PnP
+ * code path in Yarn.
+ */
+ return opts || {};
+};
+
+var defaultIsFile = function isFile(file, cb) {
+ fs$1.stat(file, function (err, stat) {
+ if (!err) {
+ return cb(null, stat.isFile() || stat.isFIFO());
+ }
+
+ if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
+ return cb(err);
+ });
+};
+
+var defaultIsDir = function isDirectory(dir, cb) {
+ fs$1.stat(dir, function (err, stat) {
+ if (!err) {
+ return cb(null, stat.isDirectory());
+ }
+
+ if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
+ return cb(err);
+ });
+};
+
+var maybeUnwrapSymlink = function maybeUnwrapSymlink(x, opts, cb) {
+ if (opts && opts.preserveSymlinks === false) {
+ fs$1.realpath(x, function (realPathErr, realPath) {
+ if (realPathErr && realPathErr.code !== 'ENOENT') cb(realPathErr);else cb(null, realPathErr ? x : realPath);
+ });
+ } else {
+ cb(null, x);
+ }
+};
+
+var async = function resolve(x, options, callback) {
+ var cb = callback;
+ var opts = options;
+
+ if (typeof options === 'function') {
+ cb = opts;
+ opts = {};
+ }
+
+ if (typeof x !== 'string') {
+ var err = new TypeError('Path must be a string.');
+ return process.nextTick(function () {
+ cb(err);
+ });
+ }
+
+ opts = normalizeOptions$2(x, opts);
+ var isFile = opts.isFile || defaultIsFile;
+ var isDirectory = opts.isDirectory || defaultIsDir;
+ var readFile = opts.readFile || fs$1.readFile;
+ var extensions = opts.extensions || ['.js'];
+ var basedir = opts.basedir || path$2.dirname(caller());
+ var parent = opts.filename || basedir;
+ opts.paths = opts.paths || []; // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
+
+ var absoluteStart = path$2.resolve(basedir);
+ maybeUnwrapSymlink(absoluteStart, opts, function (err, realStart) {
+ if (err) cb(err);else init(realStart);
+ });
+ var res;
+
+ function init(basedir) {
+ if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(x)) {
+ res = path$2.resolve(basedir, x);
+ if (x === '..' || x.slice(-1) === '/') res += '/';
+
+ if (/\/$/.test(x) && res === basedir) {
+ loadAsDirectory(res, opts.package, onfile);
+ } else loadAsFile(res, opts.package, onfile);
+ } else loadNodeModules(x, basedir, function (err, n, pkg) {
+ if (err) cb(err);else if (core_1[x]) return cb(null, x);else if (n) {
+ return maybeUnwrapSymlink(n, opts, function (err, realN) {
+ if (err) {
+ cb(err);
+ } else {
+ cb(null, realN, pkg);
+ }
+ });
+ } else {
+ var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
+ moduleError.code = 'MODULE_NOT_FOUND';
+ cb(moduleError);
+ }
+ });
+ }
+
+ function onfile(err, m, pkg) {
+ if (err) cb(err);else if (m) cb(null, m, pkg);else loadAsDirectory(res, function (err, d, pkg) {
+ if (err) cb(err);else if (d) {
+ maybeUnwrapSymlink(d, opts, function (err, realD) {
+ if (err) {
+ cb(err);
+ } else {
+ cb(null, realD, pkg);
+ }
+ });
+ } else {
+ var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
+ moduleError.code = 'MODULE_NOT_FOUND';
+ cb(moduleError);
+ }
+ });
+ }
+
+ function loadAsFile(x, thePackage, callback) {
+ var loadAsFilePackage = thePackage;
+ var cb = callback;
+
+ if (typeof loadAsFilePackage === 'function') {
+ cb = loadAsFilePackage;
+ loadAsFilePackage = undefined;
+ }
+
+ var exts = [''].concat(extensions);
+ load(exts, x, loadAsFilePackage);
+
+ function load(exts, x, loadPackage) {
+ if (exts.length === 0) return cb(null, undefined, loadPackage);
+ var file = x + exts[0];
+ var pkg = loadPackage;
+ if (pkg) onpkg(null, pkg);else loadpkg(path$2.dirname(file), onpkg);
+
+ function onpkg(err, pkg_, dir) {
+ pkg = pkg_;
+ if (err) return cb(err);
+
+ if (dir && pkg && opts.pathFilter) {
+ var rfile = path$2.relative(dir, file);
+ var rel = rfile.slice(0, rfile.length - exts[0].length);
+ var r = opts.pathFilter(pkg, x, rel);
+ if (r) return load([''].concat(extensions.slice()), path$2.resolve(dir, r), pkg);
+ }
+
+ isFile(file, onex);
+ }
+
+ function onex(err, ex) {
+ if (err) return cb(err);
+ if (ex) return cb(null, file, pkg);
+ load(exts.slice(1), x, pkg);
+ }
+ }
+ }
+
+ function loadpkg(dir, cb) {
+ if (dir === '' || dir === '/') return cb(null);
+
+ if (process.platform === 'win32' && /^\w:[/\\]*$/.test(dir)) {
+ return cb(null);
+ }
+
+ if (/[/\\]node_modules[/\\]*$/.test(dir)) return cb(null);
+ var pkgfile = path$2.join(dir, 'package.json');
+ isFile(pkgfile, function (err, ex) {
+ // on err, ex is false
+ if (!ex) return loadpkg(path$2.dirname(dir), cb);
+ readFile(pkgfile, function (err, body) {
+ if (err) cb(err);
+
+ try {
+ var pkg = JSON.parse(body);
+ } catch (jsonErr) {}
+
+ if (pkg && opts.packageFilter) {
+ pkg = opts.packageFilter(pkg, pkgfile);
+ }
+
+ cb(null, pkg, dir);
+ });
+ });
+ }
+
+ function loadAsDirectory(x, loadAsDirectoryPackage, callback) {
+ var cb = callback;
+ var fpkg = loadAsDirectoryPackage;
+
+ if (typeof fpkg === 'function') {
+ cb = fpkg;
+ fpkg = opts.package;
+ }
+
+ var pkgfile = path$2.join(x, 'package.json');
+ isFile(pkgfile, function (err, ex) {
+ if (err) return cb(err);
+ if (!ex) return loadAsFile(path$2.join(x, 'index'), fpkg, cb);
+ readFile(pkgfile, function (err, body) {
+ if (err) return cb(err);
+
+ try {
+ var pkg = JSON.parse(body);
+ } catch (jsonErr) {}
+
+ if (opts.packageFilter) {
+ pkg = opts.packageFilter(pkg, pkgfile);
+ }
+
+ if (pkg.main) {
+ if (typeof pkg.main !== 'string') {
+ var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string');
+ mainError.code = 'INVALID_PACKAGE_MAIN';
+ return cb(mainError);
+ }
+
+ if (pkg.main === '.' || pkg.main === './') {
+ pkg.main = 'index';
+ }
+
+ loadAsFile(path$2.resolve(x, pkg.main), pkg, function (err, m, pkg) {
+ if (err) return cb(err);
+ if (m) return cb(null, m, pkg);
+ if (!pkg) return loadAsFile(path$2.join(x, 'index'), pkg, cb);
+ var dir = path$2.resolve(x, pkg.main);
+ loadAsDirectory(dir, pkg, function (err, n, pkg) {
+ if (err) return cb(err);
+ if (n) return cb(null, n, pkg);
+ loadAsFile(path$2.join(x, 'index'), pkg, cb);
+ });
+ });
+ return;
+ }
+
+ loadAsFile(path$2.join(x, '/index'), pkg, cb);
+ });
+ });
+ }
+
+ function processDirs(cb, dirs) {
+ if (dirs.length === 0) return cb(null, undefined);
+ var dir = dirs[0];
+ isDirectory(dir, isdir);
+
+ function isdir(err, isdir) {
+ if (err) return cb(err);
+ if (!isdir) return processDirs(cb, dirs.slice(1));
+ var file = path$2.join(dir, x);
+ loadAsFile(file, opts.package, onfile);
+ }
+
+ function onfile(err, m, pkg) {
+ if (err) return cb(err);
+ if (m) return cb(null, m, pkg);
+ loadAsDirectory(path$2.join(dir, x), opts.package, ondir);
+ }
+
+ function ondir(err, n, pkg) {
+ if (err) return cb(err);
+ if (n) return cb(null, n, pkg);
+ processDirs(cb, dirs.slice(1));
+ }
+ }
+
+ function loadNodeModules(x, start, cb) {
+ processDirs(cb, nodeModulesPaths(start, opts, x));
+ }
+};
+
+var defaultIsFile$1 = function isFile(file) {
+ try {
+ var stat = fs$1.statSync(file);
+ } catch (e) {
+ if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
+ throw e;
+ }
+
+ return stat.isFile() || stat.isFIFO();
+};
+
+var defaultIsDir$1 = function isDirectory(dir) {
+ try {
+ var stat = fs$1.statSync(dir);
+ } catch (e) {
+ if (e && (e.code === 'ENOENT' || e.code === 'ENOTDIR')) return false;
+ throw e;
+ }
+
+ return stat.isDirectory();
+};
+
+var maybeUnwrapSymlink$1 = function maybeUnwrapSymlink(x, opts) {
+ if (opts && opts.preserveSymlinks === false) {
+ try {
+ return fs$1.realpathSync(x);
+ } catch (realPathErr) {
+ if (realPathErr.code !== 'ENOENT') {
+ throw realPathErr;
+ }
+ }
+ }
+
+ return x;
+};
+
+var sync = function sync(x, options) {
+ if (typeof x !== 'string') {
+ throw new TypeError('Path must be a string.');
+ }
+
+ var opts = normalizeOptions$2(x, options);
+ var isFile = opts.isFile || defaultIsFile$1;
+ var readFileSync = opts.readFileSync || fs$1.readFileSync;
+ var isDirectory = opts.isDirectory || defaultIsDir$1;
+ var extensions = opts.extensions || ['.js'];
+ var basedir = opts.basedir || path$2.dirname(caller());
+ var parent = opts.filename || basedir;
+ opts.paths = opts.paths || []; // ensure that `basedir` is an absolute path at this point, resolving against the process' current working directory
+
+ var absoluteStart = maybeUnwrapSymlink$1(path$2.resolve(basedir), opts);
+
+ if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[/\\])/.test(x)) {
+ var res = path$2.resolve(absoluteStart, x);
+ if (x === '..' || x.slice(-1) === '/') res += '/';
+ var m = loadAsFileSync(res) || loadAsDirectorySync(res);
+ if (m) return maybeUnwrapSymlink$1(m, opts);
+ } else if (core_1[x]) {
+ return x;
+ } else {
+ var n = loadNodeModulesSync(x, absoluteStart);
+ if (n) return maybeUnwrapSymlink$1(n, opts);
+ }
+
+ if (core_1[x]) return x;
+ var err = new Error("Cannot find module '" + x + "' from '" + parent + "'");
+ err.code = 'MODULE_NOT_FOUND';
+ throw err;
+
+ function loadAsFileSync(x) {
+ var pkg = loadpkg(path$2.dirname(x));
+
+ if (pkg && pkg.dir && pkg.pkg && opts.pathFilter) {
+ var rfile = path$2.relative(pkg.dir, x);
+ var r = opts.pathFilter(pkg.pkg, x, rfile);
+
+ if (r) {
+ x = path$2.resolve(pkg.dir, r); // eslint-disable-line no-param-reassign
+ }
+ }
+
+ if (isFile(x)) {
+ return x;
+ }
+
+ for (var i = 0; i < extensions.length; i++) {
+ var file = x + extensions[i];
+
+ if (isFile(file)) {
+ return file;
+ }
+ }
+ }
+
+ function loadpkg(dir) {
+ if (dir === '' || dir === '/') return;
+
+ if (process.platform === 'win32' && /^\w:[/\\]*$/.test(dir)) {
+ return;
+ }
+
+ if (/[/\\]node_modules[/\\]*$/.test(dir)) return;
+ var pkgfile = path$2.join(dir, 'package.json');
+
+ if (!isFile(pkgfile)) {
+ return loadpkg(path$2.dirname(dir));
+ }
+
+ var body = readFileSync(pkgfile);
+
+ try {
+ var pkg = JSON.parse(body);
+ } catch (jsonErr) {}
+
+ if (pkg && opts.packageFilter) {
+ pkg = opts.packageFilter(pkg, dir);
+ }
+
+ return {
+ pkg: pkg,
+ dir: dir
+ };
+ }
+
+ function loadAsDirectorySync(x) {
+ var pkgfile = path$2.join(x, '/package.json');
+
+ if (isFile(pkgfile)) {
+ try {
+ var body = readFileSync(pkgfile, 'UTF8');
+ var pkg = JSON.parse(body);
+ } catch (e) {}
+
+ if (opts.packageFilter) {
+ pkg = opts.packageFilter(pkg, x);
+ }
+
+ if (pkg.main) {
+ if (typeof pkg.main !== 'string') {
+ var mainError = new TypeError('package “' + pkg.name + '” `main` must be a string');
+ mainError.code = 'INVALID_PACKAGE_MAIN';
+ throw mainError;
+ }
+
+ if (pkg.main === '.' || pkg.main === './') {
+ pkg.main = 'index';
+ }
+
+ try {
+ var m = loadAsFileSync(path$2.resolve(x, pkg.main));
+ if (m) return m;
+ var n = loadAsDirectorySync(path$2.resolve(x, pkg.main));
+ if (n) return n;
+ } catch (e) {}
+ }
+ }
+
+ return loadAsFileSync(path$2.join(x, '/index'));
+ }
+
+ function loadNodeModulesSync(x, start) {
+ var dirs = nodeModulesPaths(start, opts, x);
+
+ for (var i = 0; i < dirs.length; i++) {
+ var dir = dirs[i];
+
+ if (isDirectory(dir)) {
+ var m = loadAsFileSync(path$2.join(dir, '/', x));
+ if (m) return m;
+ var n = loadAsDirectorySync(path$2.join(dir, '/', x));
+ if (n) return n;
+ }
+ }
+ }
+};
+
+var resolve = createCommonjsModule(function (module, exports) {
+ async.core = core_1;
+
+ async.isCore = function isCore(x) {
+ return core_1[x];
+ };
+
+ async.sync = sync;
+ module.exports = async;
+});
+
+var mimicFn = function mimicFn(to, from) {
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = Reflect.ownKeys(from)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var prop = _step.value;
+ Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(from, prop));
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return to;
+};
+
+var mimicFn_1 = mimicFn; // TODO: Remove this for the next major release
+
+var default_1$4 = mimicFn;
+mimicFn_1.default = default_1$4;
+
+var isPromise = function isPromise(input) {
+ return input instanceof Promise || input !== null && typeof input === 'object' && typeof input.then === 'function' && typeof input.catch === 'function';
+};
+
+var pIsPromise = isPromise; // TODO: Remove this for the next major release
+
+var default_1$5 = isPromise;
+pIsPromise.default = default_1$5;
+
+var pDefer = function pDefer() {
+ var ret = {};
+ ret.promise = new Promise(function (resolve, reject) {
+ ret.resolve = resolve;
+ ret.reject = reject;
+ });
+ return ret;
+};
+
+var dist = createCommonjsModule(function (module, exports) {
+
+ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) {
+ try {
+ step(generator.next(value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function rejected(value) {
+ try {
+ step(generator["throw"](value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function step(result) {
+ result.done ? resolve(result.value) : new P(function (resolve) {
+ resolve(result.value);
+ }).then(fulfilled, rejected);
+ }
+
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ };
+
+ var __importDefault = this && this.__importDefault || function (mod) {
+ return mod && mod.__esModule ? mod : {
+ "default": mod
+ };
+ };
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var p_defer_1 = __importDefault(pDefer);
+
+ function mapAgeCleaner(map) {
+ var _this = this;
+
+ var property = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'maxAge';
+ var processingKey;
+ var processingTimer;
+ var processingDeferred;
+
+ var cleanup = function cleanup() {
+ return __awaiter(_this, void 0, void 0,
+ /*#__PURE__*/
+ regeneratorRuntime.mark(function _callee2() {
+ var _this2 = this;
+
+ var setupTimer, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, entry;
+
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
+ while (1) {
+ switch (_context2.prev = _context2.next) {
+ case 0:
+ if (!(processingKey !== undefined)) {
+ _context2.next = 2;
+ break;
+ }
+
+ return _context2.abrupt("return");
+
+ case 2:
+ setupTimer = function setupTimer(item) {
+ return __awaiter(_this2, void 0, void 0,
+ /*#__PURE__*/
+ regeneratorRuntime.mark(function _callee() {
+ var delay;
+ return regeneratorRuntime.wrap(function _callee$(_context) {
+ while (1) {
+ switch (_context.prev = _context.next) {
+ case 0:
+ processingDeferred = p_defer_1.default();
+ delay = item[1][property] - Date.now();
+
+ if (!(delay <= 0)) {
+ _context.next = 6;
+ break;
+ }
+
+ // Remove the item immediately if the delay is equal to or below 0
+ map.delete(item[0]);
+ processingDeferred.resolve();
+ return _context.abrupt("return");
+
+ case 6:
+ // Keep track of the current processed key
+ processingKey = item[0];
+ processingTimer = setTimeout(function () {
+ // Remove the item when the timeout fires
+ map.delete(item[0]);
+
+ if (processingDeferred) {
+ processingDeferred.resolve();
+ }
+ }, delay); // tslint:disable-next-line:strict-type-predicates
+
+ if (typeof processingTimer.unref === 'function') {
+ // Don't hold up the process from exiting
+ processingTimer.unref();
+ }
+
+ return _context.abrupt("return", processingDeferred.promise);
+
+ case 10:
+ case "end":
+ return _context.stop();
+ }
+ }
+ }, _callee);
+ }));
+ };
+
+ _context2.prev = 3;
+ _iteratorNormalCompletion = true;
+ _didIteratorError = false;
+ _iteratorError = undefined;
+ _context2.prev = 7;
+ _iterator = map[Symbol.iterator]();
+
+ case 9:
+ if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
+ _context2.next = 16;
+ break;
+ }
+
+ entry = _step.value;
+ _context2.next = 13;
+ return setupTimer(entry);
+
+ case 13:
+ _iteratorNormalCompletion = true;
+ _context2.next = 9;
+ break;
+
+ case 16:
+ _context2.next = 22;
+ break;
+
+ case 18:
+ _context2.prev = 18;
+ _context2.t0 = _context2["catch"](7);
+ _didIteratorError = true;
+ _iteratorError = _context2.t0;
+
+ case 22:
+ _context2.prev = 22;
+ _context2.prev = 23;
+
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+
+ case 25:
+ _context2.prev = 25;
+
+ if (!_didIteratorError) {
+ _context2.next = 28;
+ break;
+ }
+
+ throw _iteratorError;
+
+ case 28:
+ return _context2.finish(25);
+
+ case 29:
+ return _context2.finish(22);
+
+ case 30:
+ _context2.next = 34;
+ break;
+
+ case 32:
+ _context2.prev = 32;
+ _context2.t1 = _context2["catch"](3);
+
+ case 34:
+ processingKey = undefined;
+
+ case 35:
+ case "end":
+ return _context2.stop();
+ }
+ }
+ }, _callee2, null, [[3, 32], [7, 18, 22, 30], [23,, 25, 29]]);
+ }));
+ };
+
+ var reset = function reset() {
+ processingKey = undefined;
+
+ if (processingTimer !== undefined) {
+ clearTimeout(processingTimer);
+ processingTimer = undefined;
+ }
+
+ if (processingDeferred !== undefined) {
+ // tslint:disable-line:early-exit
+ processingDeferred.reject(undefined);
+ processingDeferred = undefined;
+ }
+ };
+
+ var originalSet = map.set.bind(map);
+
+ map.set = function (key, value) {
+ if (map.has(key)) {
+ // If the key already exist, remove it so we can add it back at the end of the map.
+ map.delete(key);
+ } // Call the original `map.set`
+
+
+ var result = originalSet(key, value); // If we are already processing a key and the key added is the current processed key, stop processing it
+
+ if (processingKey && processingKey === key) {
+ reset();
+ } // Always run the cleanup method in case it wasn't started yet
+
+
+ cleanup(); // tslint:disable-line:no-floating-promises
+
+ return result;
+ };
+
+ cleanup(); // tslint:disable-line:no-floating-promises
+
+ return map;
+ }
+
+ exports.default = mapAgeCleaner; // Add support for CJS
+
+ module.exports = mapAgeCleaner;
+ module.exports.default = mapAgeCleaner;
+});
+unwrapExports(dist);
+
+var cacheStore = new WeakMap();
+
+var defaultCacheKey = function defaultCacheKey() {
+ for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {
+ arguments_[_key] = arguments[_key];
+ }
+
+ if (arguments_.length === 0) {
+ return '__defaultKey';
+ }
+
+ if (arguments_.length === 1) {
+ var firstArgument = arguments_[0];
+ var isObject = typeof firstArgument === 'object' && firstArgument !== null;
+ var isPrimitive = !isObject;
+
+ if (isPrimitive) {
+ return firstArgument;
+ }
+ }
+
+ return JSON.stringify(arguments_);
+};
+
+var mem = function mem(fn) {
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
+ _ref$cacheKey = _ref.cacheKey,
+ cacheKey = _ref$cacheKey === void 0 ? defaultCacheKey : _ref$cacheKey,
+ _ref$cache = _ref.cache,
+ cache = _ref$cache === void 0 ? new Map() : _ref$cache,
+ _ref$cachePromiseReje = _ref.cachePromiseRejection,
+ cachePromiseRejection = _ref$cachePromiseReje === void 0 ? true : _ref$cachePromiseReje,
+ maxAge = _ref.maxAge;
+
+ if (typeof maxAge === 'number') {
+ dist(cache);
+ }
+
+ var memoized = function memoized() {
+ for (var _len2 = arguments.length, arguments_ = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+ arguments_[_key2] = arguments[_key2];
+ }
+
+ var key = cacheKey.apply(void 0, arguments_);
+
+ if (cache.has(key)) {
+ return cache.get(key).data;
+ }
+
+ var cacheItem = fn.apply(this, arguments_);
+ cache.set(key, {
+ data: cacheItem,
+ maxAge: maxAge ? Date.now() + maxAge : Infinity
+ });
+
+ if (pIsPromise(cacheItem) && cachePromiseRejection === false) {
+ cacheItem.catch(function () {
+ return cache.delete(key);
+ });
+ }
+
+ return cacheItem;
+ };
+
+ try {
+ // The below call will throw in some host environments
+ // See https://github.com/sindresorhus/mimic-fn/issues/10
+ mimicFn_1(memoized, fn);
+ } catch (_) {}
+
+ cacheStore.set(memoized, cache);
+ return memoized;
+};
+
+var mem_1 = mem;
+
+var clear = function clear(fn) {
+ var cache = cacheStore.get(fn);
+
+ if (cache && typeof cache.clear === 'function') {
+ cache.clear();
+ }
+};
+mem_1.clear = clear;
+
+var semver$1 = createCommonjsModule(function (module, exports) {
+ exports = module.exports = SemVer; // The debug function is excluded entirely from the minified version.
+
+ /* nomin */
+
+ var debug;
+ /* nomin */
+
+ if (typeof process === 'object' &&
+ /* nomin */
+ process.env &&
+ /* nomin */
+ process.env.NODE_DEBUG &&
+ /* nomin */
+ /\bsemver\b/i.test(process.env.NODE_DEBUG))
+ /* nomin */
+ debug = function debug() {
+ /* nomin */
+ var args = Array.prototype.slice.call(arguments, 0);
+ /* nomin */
+
+ args.unshift('SEMVER');
+ /* nomin */
+
+ console.log.apply(console, args);
+ /* nomin */
+ };
+ /* nomin */
+ else
+ /* nomin */
+ debug = function debug() {}; // Note: this is the semver.org version of the spec that it implements
+ // Not necessarily the package version of this code.
+
+ exports.SEMVER_SPEC_VERSION = '2.0.0';
+ var MAX_LENGTH = 256;
+ var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; // Max safe segment length for coercion.
+
+ var MAX_SAFE_COMPONENT_LENGTH = 16; // The actual regexps go on exports.re
+
+ var re = exports.re = [];
+ var src = exports.src = [];
+ var R = 0; // The following Regular Expressions can be used for tokenizing,
+ // validating, and parsing SemVer version strings.
+ // ## Numeric Identifier
+ // A single `0`, or a non-zero digit followed by zero or more digits.
+
+ var NUMERICIDENTIFIER = R++;
+ src[NUMERICIDENTIFIER] = '0|[1-9]\\d*';
+ var NUMERICIDENTIFIERLOOSE = R++;
+ src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'; // ## Non-numeric Identifier
+ // Zero or more digits, followed by a letter or hyphen, and then zero or
+ // more letters, digits, or hyphens.
+
+ var NONNUMERICIDENTIFIER = R++;
+ src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'; // ## Main Version
+ // Three dot-separated numeric identifiers.
+
+ var MAINVERSION = R++;
+ src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' + '(' + src[NUMERICIDENTIFIER] + ')\\.' + '(' + src[NUMERICIDENTIFIER] + ')';
+ var MAINVERSIONLOOSE = R++;
+ src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[NUMERICIDENTIFIERLOOSE] + ')'; // ## Pre-release Version Identifier
+ // A numeric identifier, or a non-numeric identifier.
+
+ var PRERELEASEIDENTIFIER = R++;
+ src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + '|' + src[NONNUMERICIDENTIFIER] + ')';
+ var PRERELEASEIDENTIFIERLOOSE = R++;
+ src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + '|' + src[NONNUMERICIDENTIFIER] + ')'; // ## Pre-release Version
+ // Hyphen, followed by one or more dot-separated pre-release version
+ // identifiers.
+
+ var PRERELEASE = R++;
+ src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))';
+ var PRERELEASELOOSE = R++;
+ src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'; // ## Build Metadata Identifier
+ // Any combination of digits, letters, or hyphens.
+
+ var BUILDIDENTIFIER = R++;
+ src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'; // ## Build Metadata
+ // Plus sign, followed by one or more period-separated build metadata
+ // identifiers.
+
+ var BUILD = R++;
+ src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] + '(?:\\.' + src[BUILDIDENTIFIER] + ')*))'; // ## Full Version String
+ // A main version, followed optionally by a pre-release version and
+ // build metadata.
+ // Note that the only major, minor, patch, and pre-release sections of
+ // the version string are capturing groups. The build metadata is not a
+ // capturing group, because it should not ever be used in version
+ // comparison.
+
+ var FULL = R++;
+ var FULLPLAIN = 'v?' + src[MAINVERSION] + src[PRERELEASE] + '?' + src[BUILD] + '?';
+ src[FULL] = '^' + FULLPLAIN + '$'; // like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+ // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+ // common in the npm registry.
+
+ var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] + src[PRERELEASELOOSE] + '?' + src[BUILD] + '?';
+ var LOOSE = R++;
+ src[LOOSE] = '^' + LOOSEPLAIN + '$';
+ var GTLT = R++;
+ src[GTLT] = '((?:<|>)?=?)'; // Something like "2.*" or "1.2.x".
+ // Note that "x.x" is a valid xRange identifer, meaning "any version"
+ // Only the first item is strictly required.
+
+ var XRANGEIDENTIFIERLOOSE = R++;
+ src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*';
+ var XRANGEIDENTIFIER = R++;
+ src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*';
+ var XRANGEPLAIN = R++;
+ src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + '(?:' + src[PRERELEASE] + ')?' + src[BUILD] + '?' + ')?)?';
+ var XRANGEPLAINLOOSE = R++;
+ src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + '(?:' + src[PRERELEASELOOSE] + ')?' + src[BUILD] + '?' + ')?)?';
+ var XRANGE = R++;
+ src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$';
+ var XRANGELOOSE = R++;
+ src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'; // Coercion.
+ // Extract anything that could conceivably be a part of a valid semver
+
+ var COERCE = R++;
+ src[COERCE] = '(?:^|[^\\d])' + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:$|[^\\d])'; // Tilde ranges.
+ // Meaning is "reasonably at or greater than"
+
+ var LONETILDE = R++;
+ src[LONETILDE] = '(?:~>?)';
+ var TILDETRIM = R++;
+ src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+';
+ re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g');
+ var tildeTrimReplace = '$1~';
+ var TILDE = R++;
+ src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$';
+ var TILDELOOSE = R++;
+ src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'; // Caret ranges.
+ // Meaning is "at least and backwards compatible with"
+
+ var LONECARET = R++;
+ src[LONECARET] = '(?:\\^)';
+ var CARETTRIM = R++;
+ src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+';
+ re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g');
+ var caretTrimReplace = '$1^';
+ var CARET = R++;
+ src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$';
+ var CARETLOOSE = R++;
+ src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'; // A simple gt/lt/eq thing, or just "" to indicate "any version"
+
+ var COMPARATORLOOSE = R++;
+ src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$';
+ var COMPARATOR = R++;
+ src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$'; // An expression to strip any whitespace between the gtlt and the thing
+ // it modifies, so that `> 1.2.3` ==> `>1.2.3`
+
+ var COMPARATORTRIM = R++;
+ src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] + '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'; // this one has to use the /g flag
+
+ re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g');
+ var comparatorTrimReplace = '$1$2$3'; // Something like `1.2.3 - 1.2.4`
+ // Note that these all use the loose form, because they'll be
+ // checked against either the strict or loose comparator form
+ // later.
+
+ var HYPHENRANGE = R++;
+ src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' + '\\s+-\\s+' + '(' + src[XRANGEPLAIN] + ')' + '\\s*$';
+ var HYPHENRANGELOOSE = R++;
+ src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' + '\\s+-\\s+' + '(' + src[XRANGEPLAINLOOSE] + ')' + '\\s*$'; // Star ranges basically just allow anything at all.
+
+ var STAR = R++;
+ src[STAR] = '(<|>)?=?\\s*\\*'; // Compile to actual regexp objects.
+ // All are flag-free, unless they were created above with a flag.
+
+ for (var i = 0; i < R; i++) {
+ debug(i, src[i]);
+ if (!re[i]) re[i] = new RegExp(src[i]);
+ }
+
+ exports.parse = parse;
+
+ function parse(version, options) {
+ if (!options || typeof options !== 'object') options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ if (version instanceof SemVer) return version;
+ if (typeof version !== 'string') return null;
+ if (version.length > MAX_LENGTH) return null;
+ var r = options.loose ? re[LOOSE] : re[FULL];
+ if (!r.test(version)) return null;
+
+ try {
+ return new SemVer(version, options);
+ } catch (er) {
+ return null;
+ }
+ }
+
+ exports.valid = valid;
+
+ function valid(version, options) {
+ var v = parse(version, options);
+ return v ? v.version : null;
+ }
+
+ exports.clean = clean;
+
+ function clean(version, options) {
+ var s = parse(version.trim().replace(/^[=v]+/, ''), options);
+ return s ? s.version : null;
+ }
+
+ exports.SemVer = SemVer;
+
+ function SemVer(version, options) {
+ if (!options || typeof options !== 'object') options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+
+ if (version instanceof SemVer) {
+ if (version.loose === options.loose) return version;else version = version.version;
+ } else if (typeof version !== 'string') {
+ throw new TypeError('Invalid Version: ' + version);
+ }
+
+ if (version.length > MAX_LENGTH) throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters');
+ if (!(this instanceof SemVer)) return new SemVer(version, options);
+ debug('SemVer', version, options);
+ this.options = options;
+ this.loose = !!options.loose;
+ var m = version.trim().match(options.loose ? re[LOOSE] : re[FULL]);
+ if (!m) throw new TypeError('Invalid Version: ' + version);
+ this.raw = version; // these are actually numbers
+
+ this.major = +m[1];
+ this.minor = +m[2];
+ this.patch = +m[3];
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) throw new TypeError('Invalid major version');
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) throw new TypeError('Invalid minor version');
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) throw new TypeError('Invalid patch version'); // numberify any prerelease numeric ids
+
+ if (!m[4]) this.prerelease = [];else this.prerelease = m[4].split('.').map(function (id) {
+ if (/^[0-9]+$/.test(id)) {
+ var num = +id;
+ if (num >= 0 && num < MAX_SAFE_INTEGER) return num;
+ }
+
+ return id;
+ });
+ this.build = m[5] ? m[5].split('.') : [];
+ this.format();
+ }
+
+ SemVer.prototype.format = function () {
+ this.version = this.major + '.' + this.minor + '.' + this.patch;
+ if (this.prerelease.length) this.version += '-' + this.prerelease.join('.');
+ return this.version;
+ };
+
+ SemVer.prototype.toString = function () {
+ return this.version;
+ };
+
+ SemVer.prototype.compare = function (other) {
+ debug('SemVer.compare', this.version, this.options, other);
+ if (!(other instanceof SemVer)) other = new SemVer(other, this.options);
+ return this.compareMain(other) || this.comparePre(other);
+ };
+
+ SemVer.prototype.compareMain = function (other) {
+ if (!(other instanceof SemVer)) other = new SemVer(other, this.options);
+ return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
+ };
+
+ SemVer.prototype.comparePre = function (other) {
+ if (!(other instanceof SemVer)) other = new SemVer(other, this.options); // NOT having a prerelease is > having one
+
+ if (this.prerelease.length && !other.prerelease.length) return -1;else if (!this.prerelease.length && other.prerelease.length) return 1;else if (!this.prerelease.length && !other.prerelease.length) return 0;
+ var i = 0;
+
+ do {
+ var a = this.prerelease[i];
+ var b = other.prerelease[i];
+ debug('prerelease compare', i, a, b);
+ if (a === undefined && b === undefined) return 0;else if (b === undefined) return 1;else if (a === undefined) return -1;else if (a === b) continue;else return compareIdentifiers(a, b);
+ } while (++i);
+ }; // preminor will bump the version up to the next minor release, and immediately
+ // down to pre-release. premajor and prepatch work the same way.
+
+
+ SemVer.prototype.inc = function (release, identifier) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor = 0;
+ this.major++;
+ this.inc('pre', identifier);
+ break;
+
+ case 'preminor':
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor++;
+ this.inc('pre', identifier);
+ break;
+
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0;
+ this.inc('patch', identifier);
+ this.inc('pre', identifier);
+ break;
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+
+ case 'prerelease':
+ if (this.prerelease.length === 0) this.inc('patch', identifier);
+ this.inc('pre', identifier);
+ break;
+
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) this.major++;
+ this.minor = 0;
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) this.minor++;
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) this.patch++;
+ this.prerelease = [];
+ break;
+ // This probably shouldn't be used publicly.
+ // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+
+ case 'pre':
+ if (this.prerelease.length === 0) this.prerelease = [0];else {
+ var i = this.prerelease.length;
+
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++;
+ i = -2;
+ }
+ }
+
+ if (i === -1) // didn't increment anything
+ this.prerelease.push(0);
+ }
+
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ if (this.prerelease[0] === identifier) {
+ if (isNaN(this.prerelease[1])) this.prerelease = [identifier, 0];
+ } else this.prerelease = [identifier, 0];
+ }
+
+ break;
+
+ default:
+ throw new Error('invalid increment argument: ' + release);
+ }
+
+ this.format();
+ this.raw = this.version;
+ return this;
+ };
+
+ exports.inc = inc;
+
+ function inc(version, release, loose, identifier) {
+ if (typeof loose === 'string') {
+ identifier = loose;
+ loose = undefined;
+ }
+
+ try {
+ return new SemVer(version, loose).inc(release, identifier).version;
+ } catch (er) {
+ return null;
+ }
+ }
+
+ exports.diff = diff;
+
+ function diff(version1, version2) {
+ if (eq(version1, version2)) {
+ return null;
+ } else {
+ var v1 = parse(version1);
+ var v2 = parse(version2);
+
+ if (v1.prerelease.length || v2.prerelease.length) {
+ for (var key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return 'pre' + key;
+ }
+ }
+ }
+
+ return 'prerelease';
+ }
+
+ for (var key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return key;
+ }
+ }
+ }
+ }
+ }
+
+ exports.compareIdentifiers = compareIdentifiers;
+ var numeric = /^[0-9]+$/;
+
+ function compareIdentifiers(a, b) {
+ var anum = numeric.test(a);
+ var bnum = numeric.test(b);
+
+ if (anum && bnum) {
+ a = +a;
+ b = +b;
+ }
+
+ return anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : a > b ? 1 : 0;
+ }
+
+ exports.rcompareIdentifiers = rcompareIdentifiers;
+
+ function rcompareIdentifiers(a, b) {
+ return compareIdentifiers(b, a);
+ }
+
+ exports.major = major;
+
+ function major(a, loose) {
+ return new SemVer(a, loose).major;
+ }
+
+ exports.minor = minor;
+
+ function minor(a, loose) {
+ return new SemVer(a, loose).minor;
+ }
+
+ exports.patch = patch;
+
+ function patch(a, loose) {
+ return new SemVer(a, loose).patch;
+ }
+
+ exports.compare = compare;
+
+ function compare(a, b, loose) {
+ return new SemVer(a, loose).compare(new SemVer(b, loose));
+ }
+
+ exports.compareLoose = compareLoose;
+
+ function compareLoose(a, b) {
+ return compare(a, b, true);
+ }
+
+ exports.rcompare = rcompare;
+
+ function rcompare(a, b, loose) {
+ return compare(b, a, loose);
+ }
+
+ exports.sort = sort;
+
+ function sort(list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compare(a, b, loose);
+ });
+ }
+
+ exports.rsort = rsort;
+
+ function rsort(list, loose) {
+ return list.sort(function (a, b) {
+ return exports.rcompare(a, b, loose);
+ });
+ }
+
+ exports.gt = gt;
+
+ function gt(a, b, loose) {
+ return compare(a, b, loose) > 0;
+ }
+
+ exports.lt = lt;
+
+ function lt(a, b, loose) {
+ return compare(a, b, loose) < 0;
+ }
+
+ exports.eq = eq;
+
+ function eq(a, b, loose) {
+ return compare(a, b, loose) === 0;
+ }
+
+ exports.neq = neq;
+
+ function neq(a, b, loose) {
+ return compare(a, b, loose) !== 0;
+ }
+
+ exports.gte = gte;
+
+ function gte(a, b, loose) {
+ return compare(a, b, loose) >= 0;
+ }
+
+ exports.lte = lte;
+
+ function lte(a, b, loose) {
+ return compare(a, b, loose) <= 0;
+ }
+
+ exports.cmp = cmp;
+
+ function cmp(a, op, b, loose) {
+ var ret;
+
+ switch (op) {
+ case '===':
+ if (typeof a === 'object') a = a.version;
+ if (typeof b === 'object') b = b.version;
+ ret = a === b;
+ break;
+
+ case '!==':
+ if (typeof a === 'object') a = a.version;
+ if (typeof b === 'object') b = b.version;
+ ret = a !== b;
+ break;
+
+ case '':
+ case '=':
+ case '==':
+ ret = eq(a, b, loose);
+ break;
+
+ case '!=':
+ ret = neq(a, b, loose);
+ break;
+
+ case '>':
+ ret = gt(a, b, loose);
+ break;
+
+ case '>=':
+ ret = gte(a, b, loose);
+ break;
+
+ case '<':
+ ret = lt(a, b, loose);
+ break;
+
+ case '<=':
+ ret = lte(a, b, loose);
+ break;
+
+ default:
+ throw new TypeError('Invalid operator: ' + op);
+ }
+
+ return ret;
+ }
+
+ exports.Comparator = Comparator;
+
+ function Comparator(comp, options) {
+ if (!options || typeof options !== 'object') options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+
+ if (comp instanceof Comparator) {
+ if (comp.loose === !!options.loose) return comp;else comp = comp.value;
+ }
+
+ if (!(this instanceof Comparator)) return new Comparator(comp, options);
+ debug('comparator', comp, options);
+ this.options = options;
+ this.loose = !!options.loose;
+ this.parse(comp);
+ if (this.semver === ANY) this.value = '';else this.value = this.operator + this.semver.version;
+ debug('comp', this);
+ }
+
+ var ANY = {};
+
+ Comparator.prototype.parse = function (comp) {
+ var r = this.options.loose ? re[COMPARATORLOOSE] : re[COMPARATOR];
+ var m = comp.match(r);
+ if (!m) throw new TypeError('Invalid comparator: ' + comp);
+ this.operator = m[1];
+ if (this.operator === '=') this.operator = ''; // if it literally is just '>' or '' then allow anything.
+
+ if (!m[2]) this.semver = ANY;else this.semver = new SemVer(m[2], this.options.loose);
+ };
+
+ Comparator.prototype.toString = function () {
+ return this.value;
+ };
+
+ Comparator.prototype.test = function (version) {
+ debug('Comparator.test', version, this.options.loose);
+ if (this.semver === ANY) return true;
+ if (typeof version === 'string') version = new SemVer(version, this.options);
+ return cmp(version, this.operator, this.semver, this.options);
+ };
+
+ Comparator.prototype.intersects = function (comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required');
+ }
+
+ if (!options || typeof options !== 'object') options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ var rangeTmp;
+
+ if (this.operator === '') {
+ rangeTmp = new Range(comp.value, options);
+ return satisfies(this.value, rangeTmp, options);
+ } else if (comp.operator === '') {
+ rangeTmp = new Range(this.value, options);
+ return satisfies(comp.semver, rangeTmp, options);
+ }
+
+ var sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>');
+ var sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<');
+ var sameSemVer = this.semver.version === comp.semver.version;
+ var differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<=');
+ var oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<');
+ var oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>');
+ return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
+ };
+
+ exports.Range = Range;
+
+ function Range(range, options) {
+ if (!options || typeof options !== 'object') options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+
+ if (range instanceof Range) {
+ if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
+ return range;
+ } else {
+ return new Range(range.raw, options);
+ }
+ }
+
+ if (range instanceof Comparator) {
+ return new Range(range.value, options);
+ }
+
+ if (!(this instanceof Range)) return new Range(range, options);
+ this.options = options;
+ this.loose = !!options.loose;
+ this.includePrerelease = !!options.includePrerelease; // First, split based on boolean or ||
+
+ this.raw = range;
+ this.set = range.split(/\s*\|\|\s*/).map(function (range) {
+ return this.parseRange(range.trim());
+ }, this).filter(function (c) {
+ // throw out any that are not relevant for whatever reason
+ return c.length;
+ });
+
+ if (!this.set.length) {
+ throw new TypeError('Invalid SemVer Range: ' + range);
+ }
+
+ this.format();
+ }
+
+ Range.prototype.format = function () {
+ this.range = this.set.map(function (comps) {
+ return comps.join(' ').trim();
+ }).join('||').trim();
+ return this.range;
+ };
+
+ Range.prototype.toString = function () {
+ return this.range;
+ };
+
+ Range.prototype.parseRange = function (range) {
+ var loose = this.options.loose;
+ range = range.trim(); // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+
+ var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE];
+ range = range.replace(hr, hyphenReplace);
+ debug('hyphen replace', range); // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+
+ range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace);
+ debug('comparator trim', range, re[COMPARATORTRIM]); // `~ 1.2.3` => `~1.2.3`
+
+ range = range.replace(re[TILDETRIM], tildeTrimReplace); // `^ 1.2.3` => `^1.2.3`
+
+ range = range.replace(re[CARETTRIM], caretTrimReplace); // normalize spaces
+
+ range = range.split(/\s+/).join(' '); // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
+
+ var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR];
+ var set = range.split(' ').map(function (comp) {
+ return parseComparator(comp, this.options);
+ }, this).join(' ').split(/\s+/);
+
+ if (this.options.loose) {
+ // in loose mode, throw out any that are not valid comparators
+ set = set.filter(function (comp) {
+ return !!comp.match(compRe);
+ });
+ }
+
+ set = set.map(function (comp) {
+ return new Comparator(comp, this.options);
+ }, this);
+ return set;
+ };
+
+ Range.prototype.intersects = function (range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required');
+ }
+
+ return this.set.some(function (thisComparators) {
+ return thisComparators.every(function (thisComparator) {
+ return range.set.some(function (rangeComparators) {
+ return rangeComparators.every(function (rangeComparator) {
+ return thisComparator.intersects(rangeComparator, options);
+ });
+ });
+ });
+ });
+ }; // Mostly just for testing and legacy API reasons
+
+
+ exports.toComparators = toComparators;
+
+ function toComparators(range, options) {
+ return new Range(range, options).set.map(function (comp) {
+ return comp.map(function (c) {
+ return c.value;
+ }).join(' ').trim().split(' ');
+ });
+ } // comprised of xranges, tildes, stars, and gtlt's at this point.
+ // already replaced the hyphen ranges
+ // turn into a set of JUST comparators.
+
+
+ function parseComparator(comp, options) {
+ debug('comp', comp, options);
+ comp = replaceCarets(comp, options);
+ debug('caret', comp);
+ comp = replaceTildes(comp, options);
+ debug('tildes', comp);
+ comp = replaceXRanges(comp, options);
+ debug('xrange', comp);
+ comp = replaceStars(comp, options);
+ debug('stars', comp);
+ return comp;
+ }
+
+ function isX(id) {
+ return !id || id.toLowerCase() === 'x' || id === '*';
+ } // ~, ~> --> * (any, kinda silly)
+ // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
+ // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
+ // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
+ // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
+ // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
+
+
+ function replaceTildes(comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceTilde(comp, options);
+ }).join(' ');
+ }
+
+ function replaceTilde(comp, options) {
+ if (!options || typeof options !== 'object') options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ var r = options.loose ? re[TILDELOOSE] : re[TILDE];
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('tilde', comp, _, M, m, p, pr);
+ var ret;
+ if (isX(M)) ret = '';else if (isX(m)) ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';else if (isX(p)) // ~1.2 == >=1.2.0 <1.3.0
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';else if (pr) {
+ debug('replaceTilde pr', pr);
+ if (pr.charAt(0) !== '-') pr = '-' + pr;
+ ret = '>=' + M + '.' + m + '.' + p + pr + ' <' + M + '.' + (+m + 1) + '.0';
+ } else // ~1.2.3 == >=1.2.3 <1.3.0
+ ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
+ debug('tilde return', ret);
+ return ret;
+ });
+ } // ^ --> * (any, kinda silly)
+ // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
+ // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
+ // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
+ // ^1.2.3 --> >=1.2.3 <2.0.0
+ // ^1.2.0 --> >=1.2.0 <2.0.0
+
+
+ function replaceCarets(comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceCaret(comp, options);
+ }).join(' ');
+ }
+
+ function replaceCaret(comp, options) {
+ debug('caret', comp, options);
+ if (!options || typeof options !== 'object') options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ var r = options.loose ? re[CARETLOOSE] : re[CARET];
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('caret', comp, _, M, m, p, pr);
+ var ret;
+ if (isX(M)) ret = '';else if (isX(m)) ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';else if (isX(p)) {
+ if (M === '0') ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';else ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';
+ } else if (pr) {
+ debug('replaceCaret pr', pr);
+ if (pr.charAt(0) !== '-') pr = '-' + pr;
+
+ if (M === '0') {
+ if (m === '0') ret = '>=' + M + '.' + m + '.' + p + pr + ' <' + M + '.' + m + '.' + (+p + 1);else ret = '>=' + M + '.' + m + '.' + p + pr + ' <' + M + '.' + (+m + 1) + '.0';
+ } else ret = '>=' + M + '.' + m + '.' + p + pr + ' <' + (+M + 1) + '.0.0';
+ } else {
+ debug('no pr');
+
+ if (M === '0') {
+ if (m === '0') ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + m + '.' + (+p + 1);else ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
+ } else ret = '>=' + M + '.' + m + '.' + p + ' <' + (+M + 1) + '.0.0';
+ }
+ debug('caret return', ret);
+ return ret;
+ });
+ }
+
+ function replaceXRanges(comp, options) {
+ debug('replaceXRanges', comp, options);
+ return comp.split(/\s+/).map(function (comp) {
+ return replaceXRange(comp, options);
+ }).join(' ');
+ }
+
+ function replaceXRange(comp, options) {
+ comp = comp.trim();
+ if (!options || typeof options !== 'object') options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ var r = options.loose ? re[XRANGELOOSE] : re[XRANGE];
+ return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
+ debug('xRange', comp, ret, gtlt, M, m, p, pr);
+ var xM = isX(M);
+ var xm = xM || isX(m);
+ var xp = xm || isX(p);
+ var anyX = xp;
+ if (gtlt === '=' && anyX) gtlt = '';
+
+ if (xM) {
+ if (gtlt === '>' || gtlt === '<') {
+ // nothing is allowed
+ ret = '<0.0.0';
+ } else {
+ // nothing is forbidden
+ ret = '*';
+ }
+ } else if (gtlt && anyX) {
+ // replace X with 0
+ if (xm) m = 0;
+ if (xp) p = 0;
+
+ if (gtlt === '>') {
+ // >1 => >=2.0.0
+ // >1.2 => >=1.3.0
+ // >1.2.3 => >= 1.2.4
+ gtlt = '>=';
+
+ if (xm) {
+ M = +M + 1;
+ m = 0;
+ p = 0;
+ } else if (xp) {
+ m = +m + 1;
+ p = 0;
+ }
+ } else if (gtlt === '<=') {
+ // <=0.7.x is actually <0.8.0, since any 0.7.x should
+ // pass. Similarly, <=7.x is actually <8.0.0, etc.
+ gtlt = '<';
+ if (xm) M = +M + 1;else m = +m + 1;
+ }
+
+ ret = gtlt + M + '.' + m + '.' + p;
+ } else if (xm) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
+ } else if (xp) {
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
+ }
+
+ debug('xRange return', ret);
+ return ret;
+ });
+ } // Because * is AND-ed with everything else in the comparator,
+ // and '' means "any version", just remove the *s entirely.
+
+
+ function replaceStars(comp, options) {
+ debug('replaceStars', comp, options); // Looseness is ignored here. star is always as loose as it gets!
+
+ return comp.trim().replace(re[STAR], '');
+ } // This function is passed to string.replace(re[HYPHENRANGE])
+ // M, m, patch, prerelease, build
+ // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+ // 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
+ // 1.2 - 3.4 => >=1.2.0 <3.5.0
+
+
+ function hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {
+ if (isX(fM)) from = '';else if (isX(fm)) from = '>=' + fM + '.0.0';else if (isX(fp)) from = '>=' + fM + '.' + fm + '.0';else from = '>=' + from;
+ if (isX(tM)) to = '';else if (isX(tm)) to = '<' + (+tM + 1) + '.0.0';else if (isX(tp)) to = '<' + tM + '.' + (+tm + 1) + '.0';else if (tpr) to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;else to = '<=' + to;
+ return (from + ' ' + to).trim();
+ } // if ANY of the sets match ALL of its comparators, then pass
+
+
+ Range.prototype.test = function (version) {
+ if (!version) return false;
+ if (typeof version === 'string') version = new SemVer(version, this.options);
+
+ for (var i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) return true;
+ }
+
+ return false;
+ };
+
+ function testSet(set, version, options) {
+ for (var i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) return false;
+ }
+
+ if (!options) options = {};
+
+ if (version.prerelease.length && !options.includePrerelease) {
+ // Find the set of versions that are allowed to have prereleases
+ // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+ // That should allow `1.2.3-pr.2` to pass.
+ // However, `1.2.4-alpha.notready` should NOT be allowed,
+ // even though it's within the range set by the comparators.
+ for (var i = 0; i < set.length; i++) {
+ debug(set[i].semver);
+ if (set[i].semver === ANY) continue;
+
+ if (set[i].semver.prerelease.length > 0) {
+ var allowed = set[i].semver;
+ if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) return true;
+ }
+ } // Version has a -pre, but it's not one of the ones we like.
+
+
+ return false;
+ }
+
+ return true;
+ }
+
+ exports.satisfies = satisfies;
+
+ function satisfies(version, range, options) {
+ try {
+ range = new Range(range, options);
+ } catch (er) {
+ return false;
+ }
+
+ return range.test(version);
+ }
+
+ exports.maxSatisfying = maxSatisfying;
+
+ function maxSatisfying(versions, range, options) {
+ var max = null;
+ var maxSV = null;
+
+ try {
+ var rangeObj = new Range(range, options);
+ } catch (er) {
+ return null;
+ }
+
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!max || maxSV.compare(v) === -1) {
+ // compare(max, v, true)
+ max = v;
+ maxSV = new SemVer(max, options);
+ }
+ }
+ });
+ return max;
+ }
+
+ exports.minSatisfying = minSatisfying;
+
+ function minSatisfying(versions, range, options) {
+ var min = null;
+ var minSV = null;
+
+ try {
+ var rangeObj = new Range(range, options);
+ } catch (er) {
+ return null;
+ }
+
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!min || minSV.compare(v) === 1) {
+ // compare(min, v, true)
+ min = v;
+ minSV = new SemVer(min, options);
+ }
+ }
+ });
+ return min;
+ }
+
+ exports.validRange = validRange;
+
+ function validRange(range, options) {
+ try {
+ // Return '*' instead of '' so that truthiness works.
+ // This will throw if it's invalid anyway
+ return new Range(range, options).range || '*';
+ } catch (er) {
+ return null;
+ }
+ } // Determine if version is less than all the versions possible in the range
+
+
+ exports.ltr = ltr;
+
+ function ltr(version, range, options) {
+ return outside(version, range, '<', options);
+ } // Determine if version is greater than all the versions possible in the range.
+
+
+ exports.gtr = gtr;
+
+ function gtr(version, range, options) {
+ return outside(version, range, '>', options);
+ }
+
+ exports.outside = outside;
+
+ function outside(version, range, hilo, options) {
+ version = new SemVer(version, options);
+ range = new Range(range, options);
+ var gtfn, ltefn, ltfn, comp, ecomp;
+
+ switch (hilo) {
+ case '>':
+ gtfn = gt;
+ ltefn = lte;
+ ltfn = lt;
+ comp = '>';
+ ecomp = '>=';
+ break;
+
+ case '<':
+ gtfn = lt;
+ ltefn = gte;
+ ltfn = gt;
+ comp = '<';
+ ecomp = '<=';
+ break;
+
+ default:
+ throw new TypeError('Must provide a hilo val of "<" or ">"');
+ } // If it satisifes the range it is not outside
+
+
+ if (satisfies(version, range, options)) {
+ return false;
+ } // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
+
+
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i];
+ var high = null;
+ var low = null;
+ comparators.forEach(function (comparator) {
+ if (comparator.semver === ANY) {
+ comparator = new Comparator('>=0.0.0');
+ }
+
+ high = high || comparator;
+ low = low || comparator;
+
+ if (gtfn(comparator.semver, high.semver, options)) {
+ high = comparator;
+ } else if (ltfn(comparator.semver, low.semver, options)) {
+ low = comparator;
+ }
+ }); // If the edge version comparator has a operator then our version
+ // isn't outside it
+
+ if (high.operator === comp || high.operator === ecomp) {
+ return false;
+ } // If the lowest version comparator has an operator and our version
+ // is less than it then it isn't higher than the range
+
+
+ if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
+ return false;
+ } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ exports.prerelease = prerelease;
+
+ function prerelease(version, options) {
+ var parsed = parse(version, options);
+ return parsed && parsed.prerelease.length ? parsed.prerelease : null;
+ }
+
+ exports.intersects = intersects;
+
+ function intersects(r1, r2, options) {
+ r1 = new Range(r1, options);
+ r2 = new Range(r2, options);
+ return r1.intersects(r2);
+ }
+
+ exports.coerce = coerce;
+
+ function coerce(version) {
+ if (version instanceof SemVer) return version;
+ if (typeof version !== 'string') return null;
+ var match = version.match(re[COERCE]);
+ if (match == null) return null;
+ return parse((match[1] || '0') + '.' + (match[2] || '0') + '.' + (match[3] || '0'));
+ }
+});
+var semver_1$1 = semver$1.SEMVER_SPEC_VERSION;
+var semver_2$1 = semver$1.re;
+var semver_3$1 = semver$1.src;
+var semver_4$1 = semver$1.parse;
+var semver_5$1 = semver$1.valid;
+var semver_6$1 = semver$1.clean;
+var semver_7$1 = semver$1.SemVer;
+var semver_8$1 = semver$1.inc;
+var semver_9$1 = semver$1.diff;
+var semver_10$1 = semver$1.compareIdentifiers;
+var semver_11$1 = semver$1.rcompareIdentifiers;
+var semver_12$1 = semver$1.major;
+var semver_13$1 = semver$1.minor;
+var semver_14$1 = semver$1.patch;
+var semver_15$1 = semver$1.compare;
+var semver_16$1 = semver$1.compareLoose;
+var semver_17$1 = semver$1.rcompare;
+var semver_18$1 = semver$1.sort;
+var semver_19$1 = semver$1.rsort;
+var semver_20$1 = semver$1.gt;
+var semver_21$1 = semver$1.lt;
+var semver_22$1 = semver$1.eq;
+var semver_23$1 = semver$1.neq;
+var semver_24$1 = semver$1.gte;
+var semver_25$1 = semver$1.lte;
+var semver_26$1 = semver$1.cmp;
+var semver_27$1 = semver$1.Comparator;
+var semver_28$1 = semver$1.Range;
+var semver_29$1 = semver$1.toComparators;
+var semver_30$1 = semver$1.satisfies;
+var semver_31$1 = semver$1.maxSatisfying;
+var semver_32$1 = semver$1.minSatisfying;
+var semver_33$1 = semver$1.validRange;
+var semver_34$1 = semver$1.ltr;
+var semver_35$1 = semver$1.gtr;
+var semver_36$1 = semver$1.outside;
+var semver_37$1 = semver$1.prerelease;
+var semver_38$1 = semver$1.intersects;
+var semver_39$1 = semver$1.coerce;
+
+var hasOwnProperty = Object.prototype.hasOwnProperty;
+var pseudomap = PseudoMap;
+
+function PseudoMap(set) {
+ if (!(this instanceof PseudoMap)) // whyyyyyyy
+ throw new TypeError("Constructor PseudoMap requires 'new'");
+ this.clear();
+
+ if (set) {
+ if (set instanceof PseudoMap || typeof Map === 'function' && set instanceof Map) set.forEach(function (value, key) {
+ this.set(key, value);
+ }, this);else if (Array.isArray(set)) set.forEach(function (kv) {
+ this.set(kv[0], kv[1]);
+ }, this);else throw new TypeError('invalid argument');
+ }
+}
+
+PseudoMap.prototype.forEach = function (fn, thisp) {
+ thisp = thisp || this;
+ Object.keys(this._data).forEach(function (k) {
+ if (k !== 'size') fn.call(thisp, this._data[k].value, this._data[k].key);
+ }, this);
+};
+
+PseudoMap.prototype.has = function (k) {
+ return !!find(this._data, k);
+};
+
+PseudoMap.prototype.get = function (k) {
+ var res = find(this._data, k);
+ return res && res.value;
+};
+
+PseudoMap.prototype.set = function (k, v) {
+ set(this._data, k, v);
+};
+
+PseudoMap.prototype.delete = function (k) {
+ var res = find(this._data, k);
+
+ if (res) {
+ delete this._data[res._index];
+ this._data.size--;
+ }
+};
+
+PseudoMap.prototype.clear = function () {
+ var data = Object.create(null);
+ data.size = 0;
+ Object.defineProperty(this, '_data', {
+ value: data,
+ enumerable: false,
+ configurable: true,
+ writable: false
+ });
+};
+
+Object.defineProperty(PseudoMap.prototype, 'size', {
+ get: function get() {
+ return this._data.size;
+ },
+ set: function set(n) {},
+ enumerable: true,
+ configurable: true
+});
+
+PseudoMap.prototype.values = PseudoMap.prototype.keys = PseudoMap.prototype.entries = function () {
+ throw new Error('iterators are not implemented in this version');
+}; // Either identical, or both NaN
+
+
+function same(a, b) {
+ return a === b || a !== a && b !== b;
+}
+
+function Entry(k, v, i) {
+ this.key = k;
+ this.value = v;
+ this._index = i;
+}
+
+function find(data, k) {
+ for (var i = 0, s = '_' + k, key = s; hasOwnProperty.call(data, key); key = s + i++) {
+ if (same(data[key].key, k)) return data[key];
+ }
+}
+
+function set(data, k, v) {
+ for (var i = 0, s = '_' + k, key = s; hasOwnProperty.call(data, key); key = s + i++) {
+ if (same(data[key].key, k)) {
+ data[key].value = v;
+ return;
+ }
+ }
+
+ data.size++;
+ data[key] = new Entry(k, v, key);
+}
+
+var map = createCommonjsModule(function (module) {
+ if (process.env.npm_package_name === 'pseudomap' && process.env.npm_lifecycle_script === 'test') process.env.TEST_PSEUDOMAP = 'true';
+
+ if (typeof Map === 'function' && !process.env.TEST_PSEUDOMAP) {
+ module.exports = Map;
+ } else {
+ module.exports = pseudomap;
+ }
+});
+
+var yallist = Yallist;
+Yallist.Node = Node;
+Yallist.create = Yallist;
+
+function Yallist(list) {
+ var self = this;
+
+ if (!(self instanceof Yallist)) {
+ self = new Yallist();
+ }
+
+ self.tail = null;
+ self.head = null;
+ self.length = 0;
+
+ if (list && typeof list.forEach === 'function') {
+ list.forEach(function (item) {
+ self.push(item);
+ });
+ } else if (arguments.length > 0) {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ self.push(arguments[i]);
+ }
+ }
+
+ return self;
+}
+
+Yallist.prototype.removeNode = function (node) {
+ if (node.list !== this) {
+ throw new Error('removing node which does not belong to this list');
+ }
+
+ var next = node.next;
+ var prev = node.prev;
+
+ if (next) {
+ next.prev = prev;
+ }
+
+ if (prev) {
+ prev.next = next;
+ }
+
+ if (node === this.head) {
+ this.head = next;
+ }
+
+ if (node === this.tail) {
+ this.tail = prev;
+ }
+
+ node.list.length--;
+ node.next = null;
+ node.prev = null;
+ node.list = null;
+};
+
+Yallist.prototype.unshiftNode = function (node) {
+ if (node === this.head) {
+ return;
+ }
+
+ if (node.list) {
+ node.list.removeNode(node);
+ }
+
+ var head = this.head;
+ node.list = this;
+ node.next = head;
+
+ if (head) {
+ head.prev = node;
+ }
+
+ this.head = node;
+
+ if (!this.tail) {
+ this.tail = node;
+ }
+
+ this.length++;
+};
+
+Yallist.prototype.pushNode = function (node) {
+ if (node === this.tail) {
+ return;
+ }
+
+ if (node.list) {
+ node.list.removeNode(node);
+ }
+
+ var tail = this.tail;
+ node.list = this;
+ node.prev = tail;
+
+ if (tail) {
+ tail.next = node;
+ }
+
+ this.tail = node;
+
+ if (!this.head) {
+ this.head = node;
+ }
+
+ this.length++;
+};
+
+Yallist.prototype.push = function () {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ push(this, arguments[i]);
+ }
+
+ return this.length;
+};
+
+Yallist.prototype.unshift = function () {
+ for (var i = 0, l = arguments.length; i < l; i++) {
+ unshift(this, arguments[i]);
+ }
+
+ return this.length;
+};
+
+Yallist.prototype.pop = function () {
+ if (!this.tail) {
+ return undefined;
+ }
+
+ var res = this.tail.value;
+ this.tail = this.tail.prev;
+
+ if (this.tail) {
+ this.tail.next = null;
+ } else {
+ this.head = null;
+ }
+
+ this.length--;
+ return res;
+};
+
+Yallist.prototype.shift = function () {
+ if (!this.head) {
+ return undefined;
+ }
+
+ var res = this.head.value;
+ this.head = this.head.next;
+
+ if (this.head) {
+ this.head.prev = null;
+ } else {
+ this.tail = null;
+ }
+
+ this.length--;
+ return res;
+};
+
+Yallist.prototype.forEach = function (fn, thisp) {
+ thisp = thisp || this;
+
+ for (var walker = this.head, i = 0; walker !== null; i++) {
+ fn.call(thisp, walker.value, i, this);
+ walker = walker.next;
+ }
+};
+
+Yallist.prototype.forEachReverse = function (fn, thisp) {
+ thisp = thisp || this;
+
+ for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
+ fn.call(thisp, walker.value, i, this);
+ walker = walker.prev;
+ }
+};
+
+Yallist.prototype.get = function (n) {
+ for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
+ // abort out of the list early if we hit a cycle
+ walker = walker.next;
+ }
+
+ if (i === n && walker !== null) {
+ return walker.value;
+ }
+};
+
+Yallist.prototype.getReverse = function (n) {
+ for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
+ // abort out of the list early if we hit a cycle
+ walker = walker.prev;
+ }
+
+ if (i === n && walker !== null) {
+ return walker.value;
+ }
+};
+
+Yallist.prototype.map = function (fn, thisp) {
+ thisp = thisp || this;
+ var res = new Yallist();
+
+ for (var walker = this.head; walker !== null;) {
+ res.push(fn.call(thisp, walker.value, this));
+ walker = walker.next;
+ }
+
+ return res;
+};
+
+Yallist.prototype.mapReverse = function (fn, thisp) {
+ thisp = thisp || this;
+ var res = new Yallist();
+
+ for (var walker = this.tail; walker !== null;) {
+ res.push(fn.call(thisp, walker.value, this));
+ walker = walker.prev;
+ }
+
+ return res;
+};
+
+Yallist.prototype.reduce = function (fn, initial) {
+ var acc;
+ var walker = this.head;
+
+ if (arguments.length > 1) {
+ acc = initial;
+ } else if (this.head) {
+ walker = this.head.next;
+ acc = this.head.value;
+ } else {
+ throw new TypeError('Reduce of empty list with no initial value');
+ }
+
+ for (var i = 0; walker !== null; i++) {
+ acc = fn(acc, walker.value, i);
+ walker = walker.next;
+ }
+
+ return acc;
+};
+
+Yallist.prototype.reduceReverse = function (fn, initial) {
+ var acc;
+ var walker = this.tail;
+
+ if (arguments.length > 1) {
+ acc = initial;
+ } else if (this.tail) {
+ walker = this.tail.prev;
+ acc = this.tail.value;
+ } else {
+ throw new TypeError('Reduce of empty list with no initial value');
+ }
+
+ for (var i = this.length - 1; walker !== null; i--) {
+ acc = fn(acc, walker.value, i);
+ walker = walker.prev;
+ }
+
+ return acc;
+};
+
+Yallist.prototype.toArray = function () {
+ var arr = new Array(this.length);
+
+ for (var i = 0, walker = this.head; walker !== null; i++) {
+ arr[i] = walker.value;
+ walker = walker.next;
+ }
+
+ return arr;
+};
+
+Yallist.prototype.toArrayReverse = function () {
+ var arr = new Array(this.length);
+
+ for (var i = 0, walker = this.tail; walker !== null; i++) {
+ arr[i] = walker.value;
+ walker = walker.prev;
+ }
+
+ return arr;
+};
+
+Yallist.prototype.slice = function (from, to) {
+ to = to || this.length;
+
+ if (to < 0) {
+ to += this.length;
+ }
+
+ from = from || 0;
+
+ if (from < 0) {
+ from += this.length;
+ }
+
+ var ret = new Yallist();
+
+ if (to < from || to < 0) {
+ return ret;
+ }
+
+ if (from < 0) {
+ from = 0;
+ }
+
+ if (to > this.length) {
+ to = this.length;
+ }
+
+ for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
+ walker = walker.next;
+ }
+
+ for (; walker !== null && i < to; i++, walker = walker.next) {
+ ret.push(walker.value);
+ }
+
+ return ret;
+};
+
+Yallist.prototype.sliceReverse = function (from, to) {
+ to = to || this.length;
+
+ if (to < 0) {
+ to += this.length;
+ }
+
+ from = from || 0;
+
+ if (from < 0) {
+ from += this.length;
+ }
+
+ var ret = new Yallist();
+
+ if (to < from || to < 0) {
+ return ret;
+ }
+
+ if (from < 0) {
+ from = 0;
+ }
+
+ if (to > this.length) {
+ to = this.length;
+ }
+
+ for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
+ walker = walker.prev;
+ }
+
+ for (; walker !== null && i > from; i--, walker = walker.prev) {
+ ret.push(walker.value);
+ }
+
+ return ret;
+};
+
+Yallist.prototype.reverse = function () {
+ var head = this.head;
+ var tail = this.tail;
+
+ for (var walker = head; walker !== null; walker = walker.prev) {
+ var p = walker.prev;
+ walker.prev = walker.next;
+ walker.next = p;
+ }
+
+ this.head = tail;
+ this.tail = head;
+ return this;
+};
+
+function push(self, item) {
+ self.tail = new Node(item, self.tail, null, self);
+
+ if (!self.head) {
+ self.head = self.tail;
+ }
+
+ self.length++;
+}
+
+function unshift(self, item) {
+ self.head = new Node(item, null, self.head, self);
+
+ if (!self.tail) {
+ self.tail = self.head;
+ }
+
+ self.length++;
+}
+
+function Node(value, prev, next, list) {
+ if (!(this instanceof Node)) {
+ return new Node(value, prev, next, list);
+ }
+
+ this.list = list;
+ this.value = value;
+
+ if (prev) {
+ prev.next = this;
+ this.prev = prev;
+ } else {
+ this.prev = null;
+ }
+
+ if (next) {
+ next.prev = this;
+ this.next = next;
+ } else {
+ this.next = null;
+ }
+}
+
+var lruCache = LRUCache; // This will be a proper iterable 'Map' in engines that support it,
+// or a fakey-fake PseudoMap in older versions.
+// A linked list to keep track of recently-used-ness
+// use symbols if possible, otherwise just _props
+
+var hasSymbol = typeof Symbol === 'function' && process.env._nodeLRUCacheForceNoSymbol !== '1';
+var makeSymbol;
+
+if (hasSymbol) {
+ makeSymbol = function makeSymbol(key) {
+ return Symbol(key);
+ };
+} else {
+ makeSymbol = function makeSymbol(key) {
+ return '_' + key;
+ };
+}
+
+var MAX = makeSymbol('max');
+var LENGTH = makeSymbol('length');
+var LENGTH_CALCULATOR = makeSymbol('lengthCalculator');
+var ALLOW_STALE = makeSymbol('allowStale');
+var MAX_AGE = makeSymbol('maxAge');
+var DISPOSE = makeSymbol('dispose');
+var NO_DISPOSE_ON_SET = makeSymbol('noDisposeOnSet');
+var LRU_LIST = makeSymbol('lruList');
+var CACHE = makeSymbol('cache');
+
+function naiveLength() {
+ return 1;
+} // lruList is a yallist where the head is the youngest
+// item, and the tail is the oldest. the list contains the Hit
+// objects as the entries.
+// Each Hit object has a reference to its Yallist.Node. This
+// never changes.
+//
+// cache is a Map (or PseudoMap) that matches the keys to
+// the Yallist.Node object.
+
+
+function LRUCache(options) {
+ if (!(this instanceof LRUCache)) {
+ return new LRUCache(options);
+ }
+
+ if (typeof options === 'number') {
+ options = {
+ max: options
+ };
+ }
+
+ if (!options) {
+ options = {};
+ }
+
+ var max = this[MAX] = options.max; // Kind of weird to have a default max of Infinity, but oh well.
+
+ if (!max || !(typeof max === 'number') || max <= 0) {
+ this[MAX] = Infinity;
+ }
+
+ var lc = options.length || naiveLength;
+
+ if (typeof lc !== 'function') {
+ lc = naiveLength;
+ }
+
+ this[LENGTH_CALCULATOR] = lc;
+ this[ALLOW_STALE] = options.stale || false;
+ this[MAX_AGE] = options.maxAge || 0;
+ this[DISPOSE] = options.dispose;
+ this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;
+ this.reset();
+} // resize the cache when the max changes.
+
+
+Object.defineProperty(LRUCache.prototype, 'max', {
+ set: function set(mL) {
+ if (!mL || !(typeof mL === 'number') || mL <= 0) {
+ mL = Infinity;
+ }
+
+ this[MAX] = mL;
+ trim$2(this);
+ },
+ get: function get() {
+ return this[MAX];
+ },
+ enumerable: true
+});
+Object.defineProperty(LRUCache.prototype, 'allowStale', {
+ set: function set(allowStale) {
+ this[ALLOW_STALE] = !!allowStale;
+ },
+ get: function get() {
+ return this[ALLOW_STALE];
+ },
+ enumerable: true
+});
+Object.defineProperty(LRUCache.prototype, 'maxAge', {
+ set: function set(mA) {
+ if (!mA || !(typeof mA === 'number') || mA < 0) {
+ mA = 0;
+ }
+
+ this[MAX_AGE] = mA;
+ trim$2(this);
+ },
+ get: function get() {
+ return this[MAX_AGE];
+ },
+ enumerable: true
+}); // resize the cache when the lengthCalculator changes.
+
+Object.defineProperty(LRUCache.prototype, 'lengthCalculator', {
+ set: function set(lC) {
+ if (typeof lC !== 'function') {
+ lC = naiveLength;
+ }
+
+ if (lC !== this[LENGTH_CALCULATOR]) {
+ this[LENGTH_CALCULATOR] = lC;
+ this[LENGTH] = 0;
+ this[LRU_LIST].forEach(function (hit) {
+ hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key);
+ this[LENGTH] += hit.length;
+ }, this);
+ }
+
+ trim$2(this);
+ },
+ get: function get() {
+ return this[LENGTH_CALCULATOR];
+ },
+ enumerable: true
+});
+Object.defineProperty(LRUCache.prototype, 'length', {
+ get: function get() {
+ return this[LENGTH];
+ },
+ enumerable: true
+});
+Object.defineProperty(LRUCache.prototype, 'itemCount', {
+ get: function get() {
+ return this[LRU_LIST].length;
+ },
+ enumerable: true
+});
+
+LRUCache.prototype.rforEach = function (fn, thisp) {
+ thisp = thisp || this;
+
+ for (var walker = this[LRU_LIST].tail; walker !== null;) {
+ var prev = walker.prev;
+ forEachStep(this, fn, walker, thisp);
+ walker = prev;
+ }
+};
+
+function forEachStep(self, fn, node, thisp) {
+ var hit = node.value;
+
+ if (isStale(self, hit)) {
+ del(self, node);
+
+ if (!self[ALLOW_STALE]) {
+ hit = undefined;
+ }
+ }
+
+ if (hit) {
+ fn.call(thisp, hit.value, hit.key, self);
+ }
+}
+
+LRUCache.prototype.forEach = function (fn, thisp) {
+ thisp = thisp || this;
+
+ for (var walker = this[LRU_LIST].head; walker !== null;) {
+ var next = walker.next;
+ forEachStep(this, fn, walker, thisp);
+ walker = next;
+ }
+};
+
+LRUCache.prototype.keys = function () {
+ return this[LRU_LIST].toArray().map(function (k) {
+ return k.key;
+ }, this);
+};
+
+LRUCache.prototype.values = function () {
+ return this[LRU_LIST].toArray().map(function (k) {
+ return k.value;
+ }, this);
+};
+
+LRUCache.prototype.reset = function () {
+ if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {
+ this[LRU_LIST].forEach(function (hit) {
+ this[DISPOSE](hit.key, hit.value);
+ }, this);
+ }
+
+ this[CACHE] = new map(); // hash of items by key
+
+ this[LRU_LIST] = new yallist(); // list of items in order of use recency
+
+ this[LENGTH] = 0; // length of items in the list
+};
+
+LRUCache.prototype.dump = function () {
+ return this[LRU_LIST].map(function (hit) {
+ if (!isStale(this, hit)) {
+ return {
+ k: hit.key,
+ v: hit.value,
+ e: hit.now + (hit.maxAge || 0)
+ };
+ }
+ }, this).toArray().filter(function (h) {
+ return h;
+ });
+};
+
+LRUCache.prototype.dumpLru = function () {
+ return this[LRU_LIST];
+};
+/* istanbul ignore next */
+
+
+LRUCache.prototype.inspect = function (n, opts) {
+ var str = 'LRUCache {';
+ var extras = false;
+ var as = this[ALLOW_STALE];
+
+ if (as) {
+ str += '\n allowStale: true';
+ extras = true;
+ }
+
+ var max = this[MAX];
+
+ if (max && max !== Infinity) {
+ if (extras) {
+ str += ',';
+ }
+
+ str += '\n max: ' + util$2.inspect(max, opts);
+ extras = true;
+ }
+
+ var maxAge = this[MAX_AGE];
+
+ if (maxAge) {
+ if (extras) {
+ str += ',';
+ }
+
+ str += '\n maxAge: ' + util$2.inspect(maxAge, opts);
+ extras = true;
+ }
+
+ var lc = this[LENGTH_CALCULATOR];
+
+ if (lc && lc !== naiveLength) {
+ if (extras) {
+ str += ',';
+ }
+
+ str += '\n length: ' + util$2.inspect(this[LENGTH], opts);
+ extras = true;
+ }
+
+ var didFirst = false;
+ this[LRU_LIST].forEach(function (item) {
+ if (didFirst) {
+ str += ',\n ';
+ } else {
+ if (extras) {
+ str += ',\n';
+ }
+
+ didFirst = true;
+ str += '\n ';
+ }
+
+ var key = util$2.inspect(item.key).split('\n').join('\n ');
+ var val = {
+ value: item.value
+ };
+
+ if (item.maxAge !== maxAge) {
+ val.maxAge = item.maxAge;
+ }
+
+ if (lc !== naiveLength) {
+ val.length = item.length;
+ }
+
+ if (isStale(this, item)) {
+ val.stale = true;
+ }
+
+ val = util$2.inspect(val, opts).split('\n').join('\n ');
+ str += key + ' => ' + val;
+ });
+
+ if (didFirst || extras) {
+ str += '\n';
+ }
+
+ str += '}';
+ return str;
+};
+
+LRUCache.prototype.set = function (key, value, maxAge) {
+ maxAge = maxAge || this[MAX_AGE];
+ var now = maxAge ? Date.now() : 0;
+ var len = this[LENGTH_CALCULATOR](value, key);
+
+ if (this[CACHE].has(key)) {
+ if (len > this[MAX]) {
+ del(this, this[CACHE].get(key));
+ return false;
+ }
+
+ var node = this[CACHE].get(key);
+ var item = node.value; // dispose of the old one before overwriting
+ // split out into 2 ifs for better coverage tracking
+
+ if (this[DISPOSE]) {
+ if (!this[NO_DISPOSE_ON_SET]) {
+ this[DISPOSE](key, item.value);
+ }
+ }
+
+ item.now = now;
+ item.maxAge = maxAge;
+ item.value = value;
+ this[LENGTH] += len - item.length;
+ item.length = len;
+ this.get(key);
+ trim$2(this);
+ return true;
+ }
+
+ var hit = new Entry$1(key, value, len, now, maxAge); // oversized objects fall out of cache automatically.
+
+ if (hit.length > this[MAX]) {
+ if (this[DISPOSE]) {
+ this[DISPOSE](key, value);
+ }
+
+ return false;
+ }
+
+ this[LENGTH] += hit.length;
+ this[LRU_LIST].unshift(hit);
+ this[CACHE].set(key, this[LRU_LIST].head);
+ trim$2(this);
+ return true;
+};
+
+LRUCache.prototype.has = function (key) {
+ if (!this[CACHE].has(key)) return false;
+ var hit = this[CACHE].get(key).value;
+
+ if (isStale(this, hit)) {
+ return false;
+ }
+
+ return true;
+};
+
+LRUCache.prototype.get = function (key) {
+ return get(this, key, true);
+};
+
+LRUCache.prototype.peek = function (key) {
+ return get(this, key, false);
+};
+
+LRUCache.prototype.pop = function () {
+ var node = this[LRU_LIST].tail;
+ if (!node) return null;
+ del(this, node);
+ return node.value;
+};
+
+LRUCache.prototype.del = function (key) {
+ del(this, this[CACHE].get(key));
+};
+
+LRUCache.prototype.load = function (arr) {
+ // reset the cache
+ this.reset();
+ var now = Date.now(); // A previous serialized cache has the most recent items first
+
+ for (var l = arr.length - 1; l >= 0; l--) {
+ var hit = arr[l];
+ var expiresAt = hit.e || 0;
+
+ if (expiresAt === 0) {
+ // the item was created without expiration in a non aged cache
+ this.set(hit.k, hit.v);
+ } else {
+ var maxAge = expiresAt - now; // dont add already expired items
+
+ if (maxAge > 0) {
+ this.set(hit.k, hit.v, maxAge);
+ }
+ }
+ }
+};
+
+LRUCache.prototype.prune = function () {
+ var self = this;
+ this[CACHE].forEach(function (value, key) {
+ get(self, key, false);
+ });
+};
+
+function get(self, key, doUse) {
+ var node = self[CACHE].get(key);
+
+ if (node) {
+ var hit = node.value;
+
+ if (isStale(self, hit)) {
+ del(self, node);
+ if (!self[ALLOW_STALE]) hit = undefined;
+ } else {
+ if (doUse) {
+ self[LRU_LIST].unshiftNode(node);
+ }
+ }
+
+ if (hit) hit = hit.value;
+ }
+
+ return hit;
+}
+
+function isStale(self, hit) {
+ if (!hit || !hit.maxAge && !self[MAX_AGE]) {
+ return false;
+ }
+
+ var stale = false;
+ var diff = Date.now() - hit.now;
+
+ if (hit.maxAge) {
+ stale = diff > hit.maxAge;
+ } else {
+ stale = self[MAX_AGE] && diff > self[MAX_AGE];
+ }
+
+ return stale;
+}
+
+function trim$2(self) {
+ if (self[LENGTH] > self[MAX]) {
+ for (var walker = self[LRU_LIST].tail; self[LENGTH] > self[MAX] && walker !== null;) {
+ // We know that we're about to delete this one, and also
+ // what the next least recently used key will be, so just
+ // go ahead and set it now.
+ var prev = walker.prev;
+ del(self, walker);
+ walker = prev;
+ }
+ }
+}
+
+function del(self, node) {
+ if (node) {
+ var hit = node.value;
+
+ if (self[DISPOSE]) {
+ self[DISPOSE](hit.key, hit.value);
+ }
+
+ self[LENGTH] -= hit.length;
+ self[CACHE].delete(hit.key);
+ self[LRU_LIST].removeNode(node);
+ }
+} // classy, since V8 prefers predictable objects.
+
+
+function Entry$1(key, value, length, now, maxAge) {
+ this.key = key;
+ this.value = value;
+ this.length = length;
+ this.now = now;
+ this.maxAge = maxAge || 0;
+}
+
+var sigmund_1 = sigmund;
+
+function sigmund(subject, maxSessions) {
+ maxSessions = maxSessions || 10;
+ var notes = [];
+ var analysis = '';
+ var RE = RegExp;
+
+ function psychoAnalyze(subject, session) {
+ if (session > maxSessions) return;
+
+ if (typeof subject === 'function' || typeof subject === 'undefined') {
+ return;
+ }
+
+ if (typeof subject !== 'object' || !subject || subject instanceof RE) {
+ analysis += subject;
+ return;
+ }
+
+ if (notes.indexOf(subject) !== -1 || session === maxSessions) return;
+ notes.push(subject);
+ analysis += '{';
+ Object.keys(subject).forEach(function (issue, _, __) {
+ // pseudo-private values. skip those.
+ if (issue.charAt(0) === '_') return;
+ var to = typeof subject[issue];
+ if (to === 'function' || to === 'undefined') return;
+ analysis += issue;
+ psychoAnalyze(subject[issue], session + 1);
+ });
+ }
+
+ psychoAnalyze(subject, 0);
+ return analysis;
+} // vim: set softtabstop=4 shiftwidth=4:
+
+var fnmatch = createCommonjsModule(function (module, exports) {
+ // Based on minimatch.js by isaacs <https://npmjs.org/package/minimatch>
+ var platform = typeof process === "object" ? process.platform : "win32";
+ if (module) module.exports = minimatch;else exports.minimatch = minimatch;
+ minimatch.Minimatch = Minimatch;
+ var cache = minimatch.cache = new lruCache({
+ max: 100
+ }),
+ GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {};
+ var qmark = "[^/]" // * => any number of characters
+ ,
+ star = qmark + "*?" // ** when dots are allowed. Anything goes, except .. and .
+ // not (^ or / followed by one or two dots followed by $ or /),
+ // followed by anything, any number of times.
+ ,
+ twoStarDot = "(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?" // not a ^ or / followed by a dot,
+ // followed by anything, any number of times.
+ ,
+ twoStarNoDot = "(?:(?!(?:\\\/|^)\\.).)*?" // characters that need to be escaped in RegExp.
+ ,
+ reSpecials = charSet("().*{}+?[]^$\\!"); // "abc" -> { a:true, b:true, c:true }
+
+ function charSet(s) {
+ return s.split("").reduce(function (set, c) {
+ set[c] = true;
+ return set;
+ }, {});
+ } // normalizes slashes.
+
+
+ var slashSplit = /\/+/;
+ minimatch.monkeyPatch = monkeyPatch;
+
+ function monkeyPatch() {
+ var desc = Object.getOwnPropertyDescriptor(String.prototype, "match");
+ var orig = desc.value;
+
+ desc.value = function (p) {
+ if (p instanceof Minimatch) return p.match(this);
+ return orig.call(this, p);
+ };
+
+ Object.defineProperty(String.prototype, desc);
+ }
+
+ minimatch.filter = filter;
+
+ function filter(pattern, options) {
+ options = options || {};
+ return function (p, i, list) {
+ return minimatch(p, pattern, options);
+ };
+ }
+
+ function ext(a, b) {
+ a = a || {};
+ b = b || {};
+ var t = {};
+ Object.keys(b).forEach(function (k) {
+ t[k] = b[k];
+ });
+ Object.keys(a).forEach(function (k) {
+ t[k] = a[k];
+ });
+ return t;
+ }
+
+ minimatch.defaults = function (def) {
+ if (!def || !Object.keys(def).length) return minimatch;
+ var orig = minimatch;
+
+ var m = function minimatch(p, pattern, options) {
+ return orig.minimatch(p, pattern, ext(def, options));
+ };
+
+ m.Minimatch = function Minimatch(pattern, options) {
+ return new orig.Minimatch(pattern, ext(def, options));
+ };
+
+ return m;
+ };
+
+ Minimatch.defaults = function (def) {
+ if (!def || !Object.keys(def).length) return Minimatch;
+ return minimatch.defaults(def).Minimatch;
+ };
+
+ function minimatch(p, pattern, options) {
+ if (typeof pattern !== "string") {
+ throw new TypeError("glob pattern string required");
+ }
+
+ if (!options) options = {}; // shortcut: comments match nothing.
+
+ if (!options.nocomment && pattern.charAt(0) === "#") {
+ return false;
+ } // "" only matches ""
+
+
+ if (pattern.trim() === "") return p === "";
+ return new Minimatch(pattern, options).match(p);
+ }
+
+ function Minimatch(pattern, options) {
+ if (!(this instanceof Minimatch)) {
+ return new Minimatch(pattern, options, cache);
+ }
+
+ if (typeof pattern !== "string") {
+ throw new TypeError("glob pattern string required");
+ }
+
+ if (!options) options = {}; // windows: need to use /, not \
+ // On other platforms, \ is a valid (albeit bad) filename char.
+
+ if (platform === "win32") {
+ pattern = pattern.split("\\").join("/");
+ } // lru storage.
+ // these things aren't particularly big, but walking down the string
+ // and turning it into a regexp can get pretty costly.
+
+
+ var cacheKey = pattern + "\n" + sigmund_1(options);
+ var cached = minimatch.cache.get(cacheKey);
+ if (cached) return cached;
+ minimatch.cache.set(cacheKey, this);
+ this.options = options;
+ this.set = [];
+ this.pattern = pattern;
+ this.regexp = null;
+ this.negate = false;
+ this.comment = false;
+ this.empty = false; // make the set of regexps etc.
+
+ this.make();
+ }
+
+ Minimatch.prototype.make = make;
+
+ function make() {
+ // don't do it more than once.
+ if (this._made) return;
+ var pattern = this.pattern;
+ var options = this.options; // empty patterns and comments match nothing.
+
+ if (!options.nocomment && pattern.charAt(0) === "#") {
+ this.comment = true;
+ return;
+ }
+
+ if (!pattern) {
+ this.empty = true;
+ return;
+ } // step 1: figure out negation, etc.
+
+
+ this.parseNegate(); // step 2: expand braces
+
+ var set = this.globSet = this.braceExpand();
+ if (options.debug) console.error(this.pattern, set); // step 3: now we have a set, so turn each one into a series of path-portion
+ // matching patterns.
+ // These will be regexps, except in the case of "**", which is
+ // set to the GLOBSTAR object for globstar behavior,
+ // and will not contain any / characters
+
+ set = this.globParts = set.map(function (s) {
+ return s.split(slashSplit);
+ });
+ if (options.debug) console.error(this.pattern, set); // glob --> regexps
+
+ set = set.map(function (s, si, set) {
+ return s.map(this.parse, this);
+ }, this);
+ if (options.debug) console.error(this.pattern, set); // filter out everything that didn't compile properly.
+
+ set = set.filter(function (s) {
+ return -1 === s.indexOf(false);
+ });
+ if (options.debug) console.error(this.pattern, set);
+ this.set = set;
+ }
+
+ Minimatch.prototype.parseNegate = parseNegate;
+
+ function parseNegate() {
+ var pattern = this.pattern,
+ negate = false,
+ options = this.options,
+ negateOffset = 0;
+ if (options.nonegate) return;
+
+ for (var i = 0, l = pattern.length; i < l && pattern.charAt(i) === "!"; i++) {
+ negate = !negate;
+ negateOffset++;
+ }
+
+ if (negateOffset) this.pattern = pattern.substr(negateOffset);
+ this.negate = negate;
+ } // Brace expansion:
+ // a{b,c}d -> abd acd
+ // a{b,}c -> abc ac
+ // a{0..3}d -> a0d a1d a2d a3d
+ // a{b,c{d,e}f}g -> abg acdfg acefg
+ // a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
+ //
+ // Invalid sets are not expanded.
+ // a{2..}b -> a{2..}b
+ // a{b}c -> a{b}c
+
+
+ minimatch.braceExpand = function (pattern, options) {
+ return new Minimatch(pattern, options).braceExpand();
+ };
+
+ Minimatch.prototype.braceExpand = braceExpand;
+
+ function braceExpand(pattern, options) {
+ options = options || this.options;
+ pattern = typeof pattern === "undefined" ? this.pattern : pattern;
+
+ if (typeof pattern === "undefined") {
+ throw new Error("undefined pattern");
+ }
+
+ if (options.nobrace || !pattern.match(/\{.*\}/)) {
+ // shortcut. no need to expand.
+ return [pattern];
+ }
+
+ var escaping = false; // examples and comments refer to this crazy pattern:
+ // a{b,c{d,e},{f,g}h}x{y,z}
+ // expected:
+ // abxy
+ // abxz
+ // acdxy
+ // acdxz
+ // acexy
+ // acexz
+ // afhxy
+ // afhxz
+ // aghxy
+ // aghxz
+ // everything before the first \{ is just a prefix.
+ // So, we pluck that off, and work with the rest,
+ // and then prepend it to everything we find.
+
+ if (pattern.charAt(0) !== "{") {
+ // console.error(pattern)
+ var prefix = null;
+
+ for (var i = 0, l = pattern.length; i < l; i++) {
+ var c = pattern.charAt(i); // console.error(i, c)
+
+ if (c === "\\") {
+ escaping = !escaping;
+ } else if (c === "{" && !escaping) {
+ prefix = pattern.substr(0, i);
+ break;
+ }
+ } // actually no sets, all { were escaped.
+
+
+ if (prefix === null) {
+ // console.error("no sets")
+ return [pattern];
+ }
+
+ var tail = braceExpand(pattern.substr(i), options);
+ return tail.map(function (t) {
+ return prefix + t;
+ });
+ } // now we have something like:
+ // {b,c{d,e},{f,g}h}x{y,z}
+ // walk through the set, expanding each part, until
+ // the set ends. then, we'll expand the suffix.
+ // If the set only has a single member, then'll put the {} back
+ // first, handle numeric sets, since they're easier
+
+
+ var numset = pattern.match(/^\{(-?[0-9]+)\.\.(-?[0-9]+)\}/);
+
+ if (numset) {
+ // console.error("numset", numset[1], numset[2])
+ var suf = braceExpand(pattern.substr(numset[0].length), options),
+ start = +numset[1],
+ end = +numset[2],
+ inc = start > end ? -1 : 1,
+ set = [];
+
+ for (var i = start; i != end + inc; i += inc) {
+ // append all the suffixes
+ for (var ii = 0, ll = suf.length; ii < ll; ii++) {
+ set.push(i + suf[ii]);
+ }
+ }
+
+ return set;
+ } // ok, walk through the set
+ // We hope, somewhat optimistically, that there
+ // will be a } at the end.
+ // If the closing brace isn't found, then the pattern is
+ // interpreted as braceExpand("\\" + pattern) so that
+ // the leading \{ will be interpreted literally.
+
+
+ var i = 1 // skip the \{
+ ,
+ depth = 1,
+ set = [],
+ member = "",
+ escaping = false;
+
+ function addMember() {
+ set.push(member);
+ member = "";
+ } // console.error("Entering for")
+
+
+ FOR: for (i = 1, l = pattern.length; i < l; i++) {
+ var c = pattern.charAt(i); // console.error("", i, c)
+
+ if (escaping) {
+ escaping = false;
+ member += "\\" + c;
+ } else {
+ switch (c) {
+ case "\\":
+ escaping = true;
+ continue;
+
+ case "{":
+ depth++;
+ member += "{";
+ continue;
+
+ case "}":
+ depth--; // if this closes the actual set, then we're done
+
+ if (depth === 0) {
+ addMember(); // pluck off the close-brace
+
+ i++;
+ break FOR;
+ } else {
+ member += c;
+ continue;
+ }
+
+ case ",":
+ if (depth === 1) {
+ addMember();
+ } else {
+ member += c;
+ }
+
+ continue;
+
+ default:
+ member += c;
+ continue;
+ } // switch
+
+ } // else
+
+ } // for
+ // now we've either finished the set, and the suffix is
+ // pattern.substr(i), or we have *not* closed the set,
+ // and need to escape the leading brace
+
+
+ if (depth !== 0) {
+ // console.error("didn't close", pattern)
+ return braceExpand("\\" + pattern, options);
+ } // x{y,z} -> ["xy", "xz"]
+ // console.error("set", set)
+ // console.error("suffix", pattern.substr(i))
+
+
+ var suf = braceExpand(pattern.substr(i), options); // ["b", "c{d,e}","{f,g}h"] ->
+ // [["b"], ["cd", "ce"], ["fh", "gh"]]
+
+ var addBraces = set.length === 1; // console.error("set pre-expanded", set)
+
+ set = set.map(function (p) {
+ return braceExpand(p, options);
+ }); // console.error("set expanded", set)
+ // [["b"], ["cd", "ce"], ["fh", "gh"]] ->
+ // ["b", "cd", "ce", "fh", "gh"]
+
+ set = set.reduce(function (l, r) {
+ return l.concat(r);
+ });
+
+ if (addBraces) {
+ set = set.map(function (s) {
+ return "{" + s + "}";
+ });
+ } // now attach the suffixes.
+
+
+ var ret = [];
+
+ for (var i = 0, l = set.length; i < l; i++) {
+ for (var ii = 0, ll = suf.length; ii < ll; ii++) {
+ ret.push(set[i] + suf[ii]);
+ }
+ }
+
+ return ret;
+ } // parse a component of the expanded set.
+ // At this point, no pattern may contain "/" in it
+ // so we're going to return a 2d array, where each entry is the full
+ // pattern, split on '/', and then turned into a regular expression.
+ // A regexp is made at the end which joins each array with an
+ // escaped /, and another full one which joins each regexp with |.
+ //
+ // Following the lead of Bash 4.1, note that "**" only has special meaning
+ // when it is the *only* thing in a path portion. Otherwise, any series
+ // of * is equivalent to a single *. Globstar behavior is enabled by
+ // default, and can be disabled by setting options.noglobstar.
+
+
+ Minimatch.prototype.parse = parse;
+ var SUBPARSE = {};
+
+ function parse(pattern, isSub) {
+ var options = this.options; // shortcuts
+
+ if (!options.noglobstar && pattern === "**") return GLOBSTAR;
+ if (pattern === "") return "";
+ var re = "",
+ hasMagic = !!options.nocase,
+ escaping = false // ? => one single character
+ ,
+ patternListStack = [],
+ plType,
+ stateChar,
+ inClass = false,
+ reClassStart = -1,
+ classStart = -1 // . and .. never match anything that doesn't start with .,
+ // even when options.dot is set.
+ ,
+ patternStart = pattern.charAt(0) === "." ? "" // anything
+ // not (start or / followed by . or .. followed by / or end)
+ : options.dot ? "(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))" : "(?!\\.)";
+
+ function clearStateChar() {
+ if (stateChar) {
+ // we had some state-tracking character
+ // that wasn't consumed by this pass.
+ switch (stateChar) {
+ case "*":
+ re += star;
+ hasMagic = true;
+ break;
+
+ case "?":
+ re += qmark;
+ hasMagic = true;
+ break;
+
+ default:
+ re += "\\" + stateChar;
+ break;
+ }
+
+ stateChar = false;
+ }
+ }
+
+ for (var i = 0, len = pattern.length, c; i < len && (c = pattern.charAt(i)); i++) {
+ if (options.debug) {
+ console.error("%s\t%s %s %j", pattern, i, re, c);
+ } // skip over any that are escaped.
+
+
+ if (escaping && reSpecials[c]) {
+ re += "\\" + c;
+ escaping = false;
+ continue;
+ }
+
+ switch (c) {
+ case "/":
+ // completely not allowed, even escaped.
+ // Should already be path-split by now.
+ return false;
+
+ case "\\":
+ clearStateChar();
+ escaping = true;
+ continue;
+ // the various stateChar values
+ // for the "extglob" stuff.
+
+ case "?":
+ case "*":
+ case "+":
+ case "@":
+ case "!":
+ if (options.debug) {
+ console.error("%s\t%s %s %j <-- stateChar", pattern, i, re, c);
+ } // all of those are literals inside a class, except that
+ // the glob [!a] means [^a] in regexp
+
+
+ if (inClass) {
+ if (c === "!" && i === classStart + 1) c = "^";
+ re += c;
+ continue;
+ } // if we already have a stateChar, then it means
+ // that there was something like ** or +? in there.
+ // Handle the stateChar, then proceed with this one.
+
+
+ clearStateChar();
+ stateChar = c; // if extglob is disabled, then +(asdf|foo) isn't a thing.
+ // just clear the statechar *now*, rather than even diving into
+ // the patternList stuff.
+
+ if (options.noext) clearStateChar();
+ continue;
+
+ case "(":
+ if (inClass) {
+ re += "(";
+ continue;
+ }
+
+ if (!stateChar) {
+ re += "\\(";
+ continue;
+ }
+
+ plType = stateChar;
+ patternListStack.push({
+ type: plType,
+ start: i - 1,
+ reStart: re.length
+ }); // negation is (?:(?!js)[^/]*)
+
+ re += stateChar === "!" ? "(?:(?!" : "(?:";
+ stateChar = false;
+ continue;
+
+ case ")":
+ if (inClass || !patternListStack.length) {
+ re += "\\)";
+ continue;
+ }
+
+ hasMagic = true;
+ re += ")";
+ plType = patternListStack.pop().type; // negation is (?:(?!js)[^/]*)
+ // The others are (?:<pattern>)<type>
+
+ switch (plType) {
+ case "!":
+ re += "[^/]*?)";
+ break;
+
+ case "?":
+ case "+":
+ case "*":
+ re += plType;
+ // the default anyway
+ }
+
+ continue;
+
+ case "|":
+ if (inClass || !patternListStack.length || escaping) {
+ re += "\\|";
+ escaping = false;
+ continue;
+ }
+
+ re += "|";
+ continue;
+ // these are mostly the same in regexp and glob
+
+ case "[":
+ // swallow any state-tracking char before the [
+ clearStateChar();
+
+ if (inClass) {
+ re += "\\" + c;
+ continue;
+ }
+
+ inClass = true;
+ classStart = i;
+ reClassStart = re.length;
+ re += c;
+ continue;
+
+ case "]":
+ // a right bracket shall lose its special
+ // meaning and represent itself in
+ // a bracket expression if it occurs
+ // first in the list. -- POSIX.2 2.8.3.2
+ if (i === classStart + 1 || !inClass) {
+ re += "\\" + c;
+ escaping = false;
+ continue;
+ } // finish up the class.
+
+
+ hasMagic = true;
+ inClass = false;
+ re += c;
+ continue;
+
+ default:
+ // swallow any state char that wasn't consumed
+ clearStateChar();
+
+ if (escaping) {
+ // no need
+ escaping = false;
+ } else if (reSpecials[c] && !(c === "^" && inClass)) {
+ re += "\\";
+ }
+
+ re += c;
+ } // switch
+
+ } // for
+ // handle the case where we left a class open.
+ // "[abc" is valid, equivalent to "\[abc"
+
+
+ if (inClass) {
+ // split where the last [ was, and escape it
+ // this is a huge pita. We now have to re-walk
+ // the contents of the would-be class to re-translate
+ // any characters that were passed through as-is
+ var cs = pattern.substr(classStart + 1),
+ sp = this.parse(cs, SUBPARSE);
+ re = re.substr(0, reClassStart) + "\\[" + sp[0];
+ hasMagic = hasMagic || sp[1];
+ } // handle the case where we had a +( thing at the *end*
+ // of the pattern.
+ // each pattern list stack adds 3 chars, and we need to go through
+ // and escape any | chars that were passed through as-is for the regexp.
+ // Go through and escape them, taking care not to double-escape any
+ // | chars that were already escaped.
+
+
+ var pl;
+
+ while (pl = patternListStack.pop()) {
+ var tail = re.slice(pl.reStart + 3); // maybe some even number of \, then maybe 1 \, followed by a |
+
+ tail = tail.replace(/((?:\\{2})*)(\\?)\|/g, function (_, $1, $2) {
+ if (!$2) {
+ // the | isn't already escaped, so escape it.
+ $2 = "\\";
+ } // need to escape all those slashes *again*, without escaping the
+ // one that we need for escaping the | character. As it works out,
+ // escaping an even number of slashes can be done by simply repeating
+ // it exactly after itself. That's why this trick works.
+ //
+ // I am sorry that you have to see this.
+
+
+ return $1 + $1 + $2 + "|";
+ }); // console.error("tail=%j\n %s", tail, tail)
+
+ var t = pl.type === "*" ? star : pl.type === "?" ? qmark : "\\" + pl.type;
+ hasMagic = true;
+ re = re.slice(0, pl.reStart) + t + "\\(" + tail;
+ } // handle trailing things that only matter at the very end.
+
+
+ clearStateChar();
+
+ if (escaping) {
+ // trailing \\
+ re += "\\\\";
+ } // only need to apply the nodot start if the re starts with
+ // something that could conceivably capture a dot
+
+
+ var addPatternStart = false;
+
+ switch (re.charAt(0)) {
+ case ".":
+ case "[":
+ case "(":
+ addPatternStart = true;
+ } // if the re is not "" at this point, then we need to make sure
+ // it doesn't match against an empty path part.
+ // Otherwise a/* will match a/, which it should not.
+
+
+ if (re !== "" && hasMagic) re = "(?=.)" + re;
+ if (addPatternStart) re = patternStart + re; // parsing just a piece of a larger pattern.
+
+ if (isSub === SUBPARSE) {
+ return [re, hasMagic];
+ } // skip the regexp for non-magical patterns
+ // unescape anything in it, though, so that it'll be
+ // an exact match against a file etc.
+
+
+ if (!hasMagic) {
+ return globUnescape(pattern);
+ }
+
+ var flags = options.nocase ? "i" : "",
+ regExp = new RegExp("^" + re + "$", flags);
+ regExp._glob = pattern;
+ regExp._src = re;
+ return regExp;
+ }
+
+ minimatch.makeRe = function (pattern, options) {
+ return new Minimatch(pattern, options || {}).makeRe();
+ };
+
+ Minimatch.prototype.makeRe = makeRe;
+
+ function makeRe() {
+ if (this.regexp || this.regexp === false) return this.regexp; // at this point, this.set is a 2d array of partial
+ // pattern strings, or "**".
+ //
+ // It's better to use .match(). This function shouldn't
+ // be used, really, but it's pretty convenient sometimes,
+ // when you just want to work with a regex.
+
+ var set = this.set;
+ if (!set.length) return this.regexp = false;
+ var options = this.options;
+ var twoStar = options.noglobstar ? star : options.dot ? twoStarDot : twoStarNoDot,
+ flags = options.nocase ? "i" : "";
+ var re = set.map(function (pattern) {
+ return pattern.map(function (p) {
+ return p === GLOBSTAR ? twoStar : typeof p === "string" ? regExpEscape(p) : p._src;
+ }).join("\\\/");
+ }).join("|"); // must match entire pattern
+ // ending in a * or ** will make it less strict.
+
+ re = "^(?:" + re + ")$"; // can match anything, as long as it's not this.
+
+ if (this.negate) re = "^(?!" + re + ").*$";
+
+ try {
+ return this.regexp = new RegExp(re, flags);
+ } catch (ex) {
+ return this.regexp = false;
+ }
+ }
+
+ minimatch.match = function (list, pattern, options) {
+ var mm = new Minimatch(pattern, options);
+ list = list.filter(function (f) {
+ return mm.match(f);
+ });
+
+ if (options.nonull && !list.length) {
+ list.push(pattern);
+ }
+
+ return list;
+ };
+
+ Minimatch.prototype.match = match;
+
+ function match(f, partial) {
+ // console.error("match", f, this.pattern)
+ // short-circuit in the case of busted things.
+ // comments, etc.
+ if (this.comment) return false;
+ if (this.empty) return f === "";
+ if (f === "/" && partial) return true;
+ var options = this.options; // windows: need to use /, not \
+ // On other platforms, \ is a valid (albeit bad) filename char.
+
+ if (platform === "win32") {
+ f = f.split("\\").join("/");
+ } // treat the test path as a set of pathparts.
+
+
+ f = f.split(slashSplit);
+
+ if (options.debug) {
+ console.error(this.pattern, "split", f);
+ } // just ONE of the pattern sets in this.set needs to match
+ // in order for it to be valid. If negating, then just one
+ // match means that we have failed.
+ // Either way, return on the first hit.
+
+
+ var set = this.set; // console.error(this.pattern, "set", set)
+
+ for (var i = 0, l = set.length; i < l; i++) {
+ var pattern = set[i];
+ var hit = this.matchOne(f, pattern, partial);
+
+ if (hit) {
+ if (options.flipNegate) return true;
+ return !this.negate;
+ }
+ } // didn't get any hits. this is success if it's a negative
+ // pattern, failure otherwise.
+
+
+ if (options.flipNegate) return false;
+ return this.negate;
+ } // set partial to true to test if, for example,
+ // "/a/b" matches the start of "/*/b/*/d"
+ // Partial means, if you run out of file before you run
+ // out of pattern, then that's fine, as long as all
+ // the parts match.
+
+
+ Minimatch.prototype.matchOne = function (file, pattern, partial) {
+ var options = this.options;
+
+ if (options.debug) {
+ console.error("matchOne", {
+ "this": this,
+ file: file,
+ pattern: pattern
+ });
+ }
+
+ if (options.matchBase && pattern.length === 1) {
+ file = path$2.basename(file.join("/")).split("/");
+ }
+
+ if (options.debug) {
+ console.error("matchOne", file.length, pattern.length);
+ }
+
+ for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {
+ if (options.debug) {
+ console.error("matchOne loop");
+ }
+
+ var p = pattern[pi],
+ f = file[fi];
+
+ if (options.debug) {
+ console.error(pattern, p, f);
+ } // should be impossible.
+ // some invalid regexp stuff in the set.
+
+
+ if (p === false) return false;
+
+ if (p === GLOBSTAR) {
+ if (options.debug) console.error('GLOBSTAR', [pattern, p, f]); // "**"
+ // a/**/b/**/c would match the following:
+ // a/b/x/y/z/c
+ // a/x/y/z/b/c
+ // a/b/x/b/x/c
+ // a/b/c
+ // To do this, take the rest of the pattern after
+ // the **, and see if it would match the file remainder.
+ // If so, return success.
+ // If not, the ** "swallows" a segment, and try again.
+ // This is recursively awful.
+ //
+ // a/**/b/**/c matching a/b/x/y/z/c
+ // - a matches a
+ // - doublestar
+ // - matchOne(b/x/y/z/c, b/**/c)
+ // - b matches b
+ // - doublestar
+ // - matchOne(x/y/z/c, c) -> no
+ // - matchOne(y/z/c, c) -> no
+ // - matchOne(z/c, c) -> no
+ // - matchOne(c, c) yes, hit
+
+ var fr = fi,
+ pr = pi + 1;
+
+ if (pr === pl) {
+ if (options.debug) console.error('** at the end'); // a ** at the end will just swallow the rest.
+ // We have found a match.
+ // however, it will not swallow /.x, unless
+ // options.dot is set.
+ // . and .. are *never* matched by **, for explosively
+ // exponential reasons.
+
+ for (; fi < fl; fi++) {
+ if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".") return false;
+ }
+
+ return true;
+ } // ok, let's see if we can swallow whatever we can.
+
+
+ WHILE: while (fr < fl) {
+ var swallowee = file[fr];
+
+ if (options.debug) {
+ console.error('\nglobstar while', file, fr, pattern, pr, swallowee);
+ } // XXX remove this slice. Just pass the start index.
+
+
+ if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
+ if (options.debug) console.error('globstar found match!', fr, fl, swallowee); // found a match.
+
+ return true;
+ } else {
+ // can't swallow "." or ".." ever.
+ // can only swallow ".foo" when explicitly asked.
+ if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") {
+ if (options.debug) console.error("dot detected!", file, fr, pattern, pr);
+ break WHILE;
+ } // ** swallows a segment, and continue.
+
+
+ if (options.debug) console.error('globstar swallow a segment, and continue');
+ fr++;
+ }
+ } // no match was found.
+ // However, in partial mode, we can't say this is necessarily over.
+ // If there's more *pattern* left, then
+
+
+ if (partial) {
+ // ran out of file
+ // console.error("\n>>> no match, partial?", file, fr, pattern, pr)
+ if (fr === fl) return true;
+ }
+
+ return false;
+ } // something other than **
+ // non-magic patterns just have to match exactly
+ // patterns with magic have been turned into regexps.
+
+
+ var hit;
+
+ if (typeof p === "string") {
+ if (options.nocase) {
+ hit = f.toLowerCase() === p.toLowerCase();
+ } else {
+ hit = f === p;
+ }
+
+ if (options.debug) {
+ console.error("string match", p, f, hit);
+ }
+ } else {
+ hit = f.match(p);
+
+ if (options.debug) {
+ console.error("pattern match", p, f, hit);
+ }
+ }
+
+ if (!hit) return false;
+ } // Note: ending in / means that we'll get a final ""
+ // at the end of the pattern. This can only match a
+ // corresponding "" at the end of the file.
+ // If the file ends in /, then it can only match a
+ // a pattern that ends in /, unless the pattern just
+ // doesn't have any more for it. But, a/b/ should *not*
+ // match "a/b/*", even though "" matches against the
+ // [^/]*? pattern, except in partial mode, where it might
+ // simply not be reached yet.
+ // However, a/b/ should still satisfy a/*
+ // now either we fell off the end of the pattern, or we're done.
+
+
+ if (fi === fl && pi === pl) {
+ // ran out of pattern and filename at the same time.
+ // an exact hit!
+ return true;
+ } else if (fi === fl) {
+ // ran out of file, but still had pattern left.
+ // this is ok if we're doing the match as part of
+ // a glob fs traversal.
+ return partial;
+ } else if (pi === pl) {
+ // ran out of pattern, still have file left.
+ // this is only acceptable if we're on the very last
+ // empty segment of a file with a trailing slash.
+ // a/* should match a/b/
+ var emptyFileEnd = fi === fl - 1 && file[fi] === "";
+ return emptyFileEnd;
+ } // should be unreachable.
+
+
+ throw new Error("wtf?");
+ }; // replace stuff like \* with *
+
+
+ function globUnescape(s) {
+ return s.replace(/\\(.)/g, "$1");
+ }
+
+ function regExpEscape(s) {
+ return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
+ }
+});
+var fnmatch_1 = fnmatch.minimatch;
+
+var ini = createCommonjsModule(function (module, exports) {
+
+ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) {
+ try {
+ step(generator.next(value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function rejected(value) {
+ try {
+ step(generator["throw"](value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function step(result) {
+ result.done ? resolve(result.value) : new P(function (resolve) {
+ resolve(result.value);
+ }).then(fulfilled, rejected);
+ }
+
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ };
+
+ var __generator = this && this.__generator || function (thisArg, body) {
+ var _ = {
+ label: 0,
+ sent: function sent() {
+ if (t[0] & 1) throw t[1];
+ return t[1];
+ },
+ trys: [],
+ ops: []
+ },
+ f,
+ y,
+ t,
+ g;
+ return g = {
+ next: verb(0),
+ "throw": verb(1),
+ "return": verb(2)
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
+ return this;
+ }), g;
+
+ function verb(n) {
+ return function (v) {
+ return step([n, v]);
+ };
+ }
+
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+
+ while (_) {
+ try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+
+ switch (op[0]) {
+ case 0:
+ case 1:
+ t = op;
+ break;
+
+ case 4:
+ _.label++;
+ return {
+ value: op[1],
+ done: false
+ };
+
+ case 5:
+ _.label++;
+ y = op[1];
+ op = [0];
+ continue;
+
+ case 7:
+ op = _.ops.pop();
+
+ _.trys.pop();
+
+ continue;
+
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
+ _ = 0;
+ continue;
+ }
+
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
+ _.label = op[1];
+ break;
+ }
+
+ if (op[0] === 6 && _.label < t[1]) {
+ _.label = t[1];
+ t = op;
+ break;
+ }
+
+ if (t && _.label < t[2]) {
+ _.label = t[2];
+
+ _.ops.push(op);
+
+ break;
+ }
+
+ if (t[2]) _.ops.pop();
+
+ _.trys.pop();
+
+ continue;
+ }
+
+ op = body.call(thisArg, _);
+ } catch (e) {
+ op = [6, e];
+ y = 0;
+ } finally {
+ f = t = 0;
+ }
+ }
+
+ if (op[0] & 5) throw op[1];
+ return {
+ value: op[0] ? op[1] : void 0,
+ done: true
+ };
+ }
+ };
+
+ var __importStar = this && this.__importStar || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) {
+ if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+ }
+ result["default"] = mod;
+ return result;
+ };
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var fs = __importStar(fs$1);
+ /**
+ * define the possible values:
+ * section: [section]
+ * param: key=value
+ * comment: ;this is a comment
+ */
+
+
+ var regex = {
+ section: /^\s*\[(([^#;]|\\#|\\;)+)\]\s*([#;].*)?$/,
+ param: /^\s*([\w\.\-\_]+)\s*[=:]\s*(.*?)\s*([#;].*)?$/,
+ comment: /^\s*[#;].*$/
+ };
+ /**
+ * Parses an .ini file
+ * @param file The location of the .ini file
+ */
+
+ function parse(file) {
+ return __awaiter(this, void 0, void 0, function () {
+ return __generator(this, function (_a) {
+ return [2
+ /*return*/
+ , new Promise(function (resolve, reject) {
+ fs.readFile(file, 'utf8', function (err, data) {
+ if (err) {
+ reject(err);
+ return;
+ }
+
+ resolve(parseString(data));
+ });
+ })];
+ });
+ });
+ }
+
+ exports.parse = parse;
+
+ function parseSync(file) {
+ return parseString(fs.readFileSync(file, 'utf8'));
+ }
+
+ exports.parseSync = parseSync;
+
+ function parseString(data) {
+ var sectionBody = {};
+ var sectionName = null;
+ var value = [[sectionName, sectionBody]];
+ var lines = data.split(/\r\n|\r|\n/);
+ lines.forEach(function (line) {
+ var match;
+
+ if (regex.comment.test(line)) {
+ return;
+ }
+
+ if (regex.param.test(line)) {
+ match = line.match(regex.param);
+ sectionBody[match[1]] = match[2];
+ } else if (regex.section.test(line)) {
+ match = line.match(regex.section);
+ sectionName = match[1];
+ sectionBody = {};
+ value.push([sectionName, sectionBody]);
+ }
+ });
+ return value;
+ }
+
+ exports.parseString = parseString;
+});
+unwrapExports(ini);
+var ini_1 = ini.parse;
+var ini_2 = ini.parseSync;
+var ini_3 = ini.parseString;
+
+var name$1 = "editorconfig";
+var version$1 = "0.15.3";
+var description$1 = "EditorConfig File Locator and Interpreter for Node.js";
+var keywords = [
+ "editorconfig",
+ "core"
+];
+var main$1 = "src/index.js";
+var contributors = [
+ "Hong Xu (topbug.net)",
+ "Jed Mao (https://github.com/jedmao/)",
+ "Trey Hunner (http://treyhunner.com)"
+];
+var directories = {
+ bin: "./bin",
+ lib: "./lib"
+};
+var scripts$1 = {
+ clean: "rimraf dist",
+ prebuild: "npm run clean",
+ build: "tsc",
+ pretest: "npm run lint && npm run build && npm run copy && cmake .",
+ test: "ctest .",
+ "pretest:ci": "npm run pretest",
+ "test:ci": "ctest -VV --output-on-failure .",
+ lint: "npm run eclint && npm run tslint",
+ eclint: "eclint check --indent_size ignore \"src/**\"",
+ tslint: "tslint --project tsconfig.json --exclude package.json",
+ copy: "cpy .npmignore LICENSE README.md CHANGELOG.md dist && cpy bin/* dist/bin && cpy src/lib/fnmatch*.* dist/src/lib",
+ prepub: "npm run lint && npm run build && npm run copy",
+ pub: "npm publish ./dist"
+};
+var repository$1 = {
+ type: "git",
+ url: "git://github.com/editorconfig/editorconfig-core-js.git"
+};
+var bugs = "https://github.com/editorconfig/editorconfig-core-js/issues";
+var author$1 = "EditorConfig Team";
+var license$1 = "MIT";
+var dependencies$1 = {
+ commander: "^2.19.0",
+ "lru-cache": "^4.1.5",
+ semver: "^5.6.0",
+ sigmund: "^1.0.1"
+};
+var devDependencies$1 = {
+ "@types/mocha": "^5.2.6",
+ "@types/node": "^10.12.29",
+ "@types/semver": "^5.5.0",
+ "cpy-cli": "^2.0.0",
+ eclint: "^2.8.1",
+ mocha: "^5.2.0",
+ rimraf: "^2.6.3",
+ should: "^13.2.3",
+ tslint: "^5.13.1",
+ typescript: "^3.3.3333"
+};
+var _package$2 = {
+ name: name$1,
+ version: version$1,
+ description: description$1,
+ keywords: keywords,
+ main: main$1,
+ contributors: contributors,
+ directories: directories,
+ scripts: scripts$1,
+ repository: repository$1,
+ bugs: bugs,
+ author: author$1,
+ license: license$1,
+ dependencies: dependencies$1,
+ devDependencies: devDependencies$1
+};
+
+var _package$3 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$1,
+ version: version$1,
+ description: description$1,
+ keywords: keywords,
+ main: main$1,
+ contributors: contributors,
+ directories: directories,
+ scripts: scripts$1,
+ repository: repository$1,
+ bugs: bugs,
+ author: author$1,
+ license: license$1,
+ dependencies: dependencies$1,
+ devDependencies: devDependencies$1,
+ 'default': _package$2
+});
+
+var require$$4 = getCjsExportFromNamespace(_package$3);
+
+var src = createCommonjsModule(function (module, exports) {
+
+ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) {
+ try {
+ step(generator.next(value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function rejected(value) {
+ try {
+ step(generator["throw"](value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function step(result) {
+ result.done ? resolve(result.value) : new P(function (resolve) {
+ resolve(result.value);
+ }).then(fulfilled, rejected);
+ }
+
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ };
+
+ var __generator = this && this.__generator || function (thisArg, body) {
+ var _ = {
+ label: 0,
+ sent: function sent() {
+ if (t[0] & 1) throw t[1];
+ return t[1];
+ },
+ trys: [],
+ ops: []
+ },
+ f,
+ y,
+ t,
+ g;
+ return g = {
+ next: verb(0),
+ "throw": verb(1),
+ "return": verb(2)
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
+ return this;
+ }), g;
+
+ function verb(n) {
+ return function (v) {
+ return step([n, v]);
+ };
+ }
+
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+
+ while (_) {
+ try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+
+ switch (op[0]) {
+ case 0:
+ case 1:
+ t = op;
+ break;
+
+ case 4:
+ _.label++;
+ return {
+ value: op[1],
+ done: false
+ };
+
+ case 5:
+ _.label++;
+ y = op[1];
+ op = [0];
+ continue;
+
+ case 7:
+ op = _.ops.pop();
+
+ _.trys.pop();
+
+ continue;
+
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
+ _ = 0;
+ continue;
+ }
+
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
+ _.label = op[1];
+ break;
+ }
+
+ if (op[0] === 6 && _.label < t[1]) {
+ _.label = t[1];
+ t = op;
+ break;
+ }
+
+ if (t && _.label < t[2]) {
+ _.label = t[2];
+
+ _.ops.push(op);
+
+ break;
+ }
+
+ if (t[2]) _.ops.pop();
+
+ _.trys.pop();
+
+ continue;
+ }
+
+ op = body.call(thisArg, _);
+ } catch (e) {
+ op = [6, e];
+ y = 0;
+ } finally {
+ f = t = 0;
+ }
+ }
+
+ if (op[0] & 5) throw op[1];
+ return {
+ value: op[0] ? op[1] : void 0,
+ done: true
+ };
+ }
+ };
+
+ var __importStar = this && this.__importStar || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) {
+ if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+ }
+ result["default"] = mod;
+ return result;
+ };
+
+ var __importDefault = this && this.__importDefault || function (mod) {
+ return mod && mod.__esModule ? mod : {
+ "default": mod
+ };
+ };
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var fs = __importStar(fs$1);
+
+ var path = __importStar(path$2);
+
+ var semver = __importStar(semver$1);
+
+ var fnmatch_1 = __importDefault(fnmatch);
+
+ exports.parseString = ini.parseString;
+
+ var package_json_1 = __importDefault(require$$4);
+
+ var knownProps = {
+ end_of_line: true,
+ indent_style: true,
+ indent_size: true,
+ insert_final_newline: true,
+ trim_trailing_whitespace: true,
+ charset: true
+ };
+
+ function fnmatch$1(filepath, glob) {
+ var matchOptions = {
+ matchBase: true,
+ dot: true,
+ noext: true
+ };
+ glob = glob.replace(/\*\*/g, '{*,**/**/**}');
+ return fnmatch_1.default(filepath, glob, matchOptions);
+ }
+
+ function getConfigFileNames(filepath, options) {
+ var paths = [];
+
+ do {
+ filepath = path.dirname(filepath);
+ paths.push(path.join(filepath, options.config));
+ } while (filepath !== options.root);
+
+ return paths;
+ }
+
+ function processMatches(matches, version) {
+ // Set indent_size to 'tab' if indent_size is unspecified and
+ // indent_style is set to 'tab'.
+ if ('indent_style' in matches && matches.indent_style === 'tab' && !('indent_size' in matches) && semver.gte(version, '0.10.0')) {
+ matches.indent_size = 'tab';
+ } // Set tab_width to indent_size if indent_size is specified and
+ // tab_width is unspecified
+
+
+ if ('indent_size' in matches && !('tab_width' in matches) && matches.indent_size !== 'tab') {
+ matches.tab_width = matches.indent_size;
+ } // Set indent_size to tab_width if indent_size is 'tab'
+
+
+ if ('indent_size' in matches && 'tab_width' in matches && matches.indent_size === 'tab') {
+ matches.indent_size = matches.tab_width;
+ }
+
+ return matches;
+ }
+
+ function processOptions(options, filepath) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ return {
+ config: options.config || '.editorconfig',
+ version: options.version || package_json_1.default.version,
+ root: path.resolve(options.root || path.parse(filepath).root)
+ };
+ }
+
+ function buildFullGlob(pathPrefix, glob) {
+ switch (glob.indexOf('/')) {
+ case -1:
+ glob = '**/' + glob;
+ break;
+
+ case 0:
+ glob = glob.substring(1);
+ break;
+ }
+
+ return path.join(pathPrefix, glob);
+ }
+
+ function extendProps(props, options) {
+ if (props === void 0) {
+ props = {};
+ }
+
+ if (options === void 0) {
+ options = {};
+ }
+
+ for (var key in options) {
+ if (options.hasOwnProperty(key)) {
+ var value = options[key];
+ var key2 = key.toLowerCase();
+ var value2 = value;
+
+ if (knownProps[key2]) {
+ value2 = value.toLowerCase();
+ }
+
+ try {
+ value2 = JSON.parse(value);
+ } catch (e) {}
+
+ if (typeof value === 'undefined' || value === null) {
+ // null and undefined are values specific to JSON (no special meaning
+ // in editorconfig) & should just be returned as regular strings.
+ value2 = String(value);
+ }
+
+ props[key2] = value2;
+ }
+ }
+
+ return props;
+ }
+
+ function parseFromConfigs(configs, filepath, options) {
+ return processMatches(configs.reverse().reduce(function (matches, file) {
+ var pathPrefix = path.dirname(file.name);
+ file.contents.forEach(function (section) {
+ var glob = section[0];
+ var options2 = section[1];
+
+ if (!glob) {
+ return;
+ }
+
+ var fullGlob = buildFullGlob(pathPrefix, glob);
+
+ if (!fnmatch$1(filepath, fullGlob)) {
+ return;
+ }
+
+ matches = extendProps(matches, options2);
+ });
+ return matches;
+ }, {}), options.version);
+ }
+
+ function getConfigsForFiles(files) {
+ var configs = [];
+
+ for (var i in files) {
+ if (files.hasOwnProperty(i)) {
+ var file = files[i];
+ var contents = ini.parseString(file.contents);
+ configs.push({
+ name: file.name,
+ contents: contents
+ });
+
+ if ((contents[0][1].root || '').toLowerCase() === 'true') {
+ break;
+ }
+ }
+ }
+
+ return configs;
+ }
+
+ function readConfigFiles(filepaths) {
+ return __awaiter(this, void 0, void 0, function () {
+ return __generator(this, function (_a) {
+ return [2
+ /*return*/
+ , Promise.all(filepaths.map(function (name) {
+ return new Promise(function (resolve) {
+ fs.readFile(name, 'utf8', function (err, data) {
+ resolve({
+ name: name,
+ contents: err ? '' : data
+ });
+ });
+ });
+ }))];
+ });
+ });
+ }
+
+ function readConfigFilesSync(filepaths) {
+ var files = [];
+ var file;
+ filepaths.forEach(function (filepath) {
+ try {
+ file = fs.readFileSync(filepath, 'utf8');
+ } catch (e) {
+ file = '';
+ }
+
+ files.push({
+ name: filepath,
+ contents: file
+ });
+ });
+ return files;
+ }
+
+ function opts(filepath, options) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ var resolvedFilePath = path.resolve(filepath);
+ return [resolvedFilePath, processOptions(options, resolvedFilePath)];
+ }
+
+ function parseFromFiles(filepath, files, options) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ return __awaiter(this, void 0, void 0, function () {
+ var _a, resolvedFilePath, processedOptions;
+
+ return __generator(this, function (_b) {
+ _a = opts(filepath, options), resolvedFilePath = _a[0], processedOptions = _a[1];
+ return [2
+ /*return*/
+ , files.then(getConfigsForFiles).then(function (configs) {
+ return parseFromConfigs(configs, resolvedFilePath, processedOptions);
+ })];
+ });
+ });
+ }
+
+ exports.parseFromFiles = parseFromFiles;
+
+ function parseFromFilesSync(filepath, files, options) {
+ if (options === void 0) {
+ options = {};
+ }
+
+ var _a = opts(filepath, options),
+ resolvedFilePath = _a[0],
+ processedOptions = _a[1];
+
+ return parseFromConfigs(getConfigsForFiles(files), resolvedFilePath, processedOptions);
+ }
+
+ exports.parseFromFilesSync = parseFromFilesSync;
+
+ function parse(_filepath, _options) {
+ if (_options === void 0) {
+ _options = {};
+ }
+
+ return __awaiter(this, void 0, void 0, function () {
+ var _a, resolvedFilePath, processedOptions, filepaths;
+
+ return __generator(this, function (_b) {
+ _a = opts(_filepath, _options), resolvedFilePath = _a[0], processedOptions = _a[1];
+ filepaths = getConfigFileNames(resolvedFilePath, processedOptions);
+ return [2
+ /*return*/
+ , readConfigFiles(filepaths).then(getConfigsForFiles).then(function (configs) {
+ return parseFromConfigs(configs, resolvedFilePath, processedOptions);
+ })];
+ });
+ });
+ }
+
+ exports.parse = parse;
+
+ function parseSync(_filepath, _options) {
+ if (_options === void 0) {
+ _options = {};
+ }
+
+ var _a = opts(_filepath, _options),
+ resolvedFilePath = _a[0],
+ processedOptions = _a[1];
+
+ var filepaths = getConfigFileNames(resolvedFilePath, processedOptions);
+ var files = readConfigFilesSync(filepaths);
+ return parseFromConfigs(getConfigsForFiles(files), resolvedFilePath, processedOptions);
+ }
+
+ exports.parseSync = parseSync;
+});
+unwrapExports(src);
+var src_1 = src.parseString;
+var src_2 = src.parseFromFiles;
+var src_3 = src.parseFromFilesSync;
+var src_4 = src.parse;
+var src_5 = src.parseSync;
+
+var editorconfigToPrettier = editorConfigToPrettier;
+
+function removeUnset(editorConfig) {
+ var result = {};
+ var keys = Object.keys(editorConfig);
+
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+
+ if (editorConfig[key] === "unset") {
+ continue;
+ }
+
+ result[key] = editorConfig[key];
+ }
+
+ return result;
+}
+
+function editorConfigToPrettier(editorConfig) {
+ if (!editorConfig) {
+ return null;
+ }
+
+ editorConfig = removeUnset(editorConfig);
+
+ if (Object.keys(editorConfig).length === 0) {
+ return null;
+ }
+
+ var result = {};
+
+ if (editorConfig.indent_style) {
+ result.useTabs = editorConfig.indent_style === "tab";
+ }
+
+ if (editorConfig.indent_size === "tab") {
+ result.useTabs = true;
+ }
+
+ if (result.useTabs && editorConfig.tab_width) {
+ result.tabWidth = editorConfig.tab_width;
+ } else if (editorConfig.indent_style === "space" && editorConfig.indent_size && editorConfig.indent_size !== "tab") {
+ result.tabWidth = editorConfig.indent_size;
+ } else if (editorConfig.tab_width !== undefined) {
+ result.tabWidth = editorConfig.tab_width;
+ }
+
+ if (editorConfig.max_line_length && editorConfig.max_line_length !== "off") {
+ result.printWidth = editorConfig.max_line_length;
+ }
+
+ if (editorConfig.quote_type === "single") {
+ result.singleQuote = true;
+ } else if (editorConfig.quote_type === "double") {
+ result.singleQuote = false;
+ }
+
+ if (["cr", "crlf", "lf"].indexOf(editorConfig.end_of_line) !== -1) {
+ result.endOfLine = editorConfig.end_of_line;
+ }
+
+ return result;
+}
+
+function markerExists(files, markers) {
+ return markers.some(function (marker) {
+ return files.some(function (file) {
+ return file === marker;
+ });
+ });
+}
+
+function traverseFolder(directory, levels, markers) {
+ var files = fs$1.readdirSync(directory);
+
+ if (levels === 0) {
+ return null;
+ } else if (markerExists(files, markers)) {
+ return directory;
+ } else {
+ return traverseFolder(path$2.resolve(directory, '..'), levels - 1, markers);
+ }
+}
+
+var findProjectRoot = function findRoot(dir, opts) {
+ if (!dir) throw new Error("Directory not defined");
+ opts = opts || {};
+ var levels = opts.maxDepth || findRoot.MAX_DEPTH;
+ var markers = opts.markers || findRoot.MARKERS;
+ return traverseFolder(dir, levels, markers);
+};
+
+var MAX_DEPTH = 9;
+var MARKERS = ['.git', '.hg'];
+findProjectRoot.MAX_DEPTH = MAX_DEPTH;
+findProjectRoot.MARKERS = MARKERS;
+
+var maybeParse = function maybeParse(filePath, config, parse) {
+ // findProjectRoot will throw an error if we pass a nonexistent directory to
+ // it, which is possible, for example, when the path is given via
+ // --stdin-filepath. So, first, traverse up until we find an existing
+ // directory.
+ var dirPath = path$2.dirname(path$2.resolve(filePath));
+ var fsRoot = path$2.parse(dirPath).root;
+
+ while (dirPath !== fsRoot && !fs$1.existsSync(dirPath)) {
+ dirPath = path$2.dirname(dirPath);
+ }
+
+ var root = findProjectRoot(dirPath);
+ return filePath && parse(filePath, {
+ root
+ });
+};
+
+var editorconfigAsyncNoCache = function editorconfigAsyncNoCache(filePath, config) {
+ return Promise.resolve(maybeParse(filePath, config, src.parse)).then(editorconfigToPrettier);
+};
+
+var editorconfigAsyncWithCache = mem_1(editorconfigAsyncNoCache);
+
+var editorconfigSyncNoCache = function editorconfigSyncNoCache(filePath, config) {
+ return editorconfigToPrettier(maybeParse(filePath, config, src.parseSync));
+};
+
+var editorconfigSyncWithCache = mem_1(editorconfigSyncNoCache);
+
+function getLoadFunction(opts) {
+ if (!opts.editorconfig) {
+ return function () {
+ return null;
+ };
+ }
+
+ if (opts.sync) {
+ return opts.cache ? editorconfigSyncWithCache : editorconfigSyncNoCache;
+ }
+
+ return opts.cache ? editorconfigAsyncWithCache : editorconfigAsyncNoCache;
+}
+
+function clearCache() {
+ mem_1.clear(editorconfigSyncWithCache);
+ mem_1.clear(editorconfigAsyncWithCache);
+}
+
+var resolveConfigEditorconfig = {
+ getLoadFunction,
+ clearCache
+};
+
+var ParserEND = 0x110000;
+
+var ParserError =
+/*#__PURE__*/
+function (_Error) {
+ _inherits(ParserError, _Error);
+
+ /* istanbul ignore next */
+ function ParserError(msg, filename, linenumber) {
+ var _this;
+
+ _classCallCheck(this, ParserError);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(ParserError).call(this, '[ParserError] ' + msg, filename, linenumber));
+ _this.name = 'ParserError';
+ _this.code = 'ParserError';
+ if (Error.captureStackTrace) Error.captureStackTrace(_assertThisInitialized(_this), ParserError);
+ return _this;
+ }
+
+ return ParserError;
+}(_wrapNativeSuper(Error));
+
+var State = function State(parser) {
+ _classCallCheck(this, State);
+
+ this.parser = parser;
+ this.buf = '';
+ this.returned = null;
+ this.result = null;
+ this.resultTable = null;
+ this.resultArr = null;
+};
+
+var Parser =
+/*#__PURE__*/
+function () {
+ function Parser() {
+ _classCallCheck(this, Parser);
+
+ this.pos = 0;
+ this.col = 0;
+ this.line = 0;
+ this.obj = {};
+ this.ctx = this.obj;
+ this.stack = [];
+ this._buf = '';
+ this.char = null;
+ this.ii = 0;
+ this.state = new State(this.parseStart);
+ }
+
+ _createClass(Parser, [{
+ key: "parse",
+ value: function parse(str) {
+ /* istanbul ignore next */
+ if (str.length === 0 || str.length == null) return;
+ this._buf = String(str);
+ this.ii = -1;
+ this.char = -1;
+ var getNext;
+
+ while (getNext === false || this.nextChar()) {
+ getNext = this.runOne();
+ }
+
+ this._buf = null;
+ }
+ }, {
+ key: "nextChar",
+ value: function nextChar() {
+ if (this.char === 0x0A) {
+ ++this.line;
+ this.col = -1;
+ }
+
+ ++this.ii;
+ this.char = this._buf.codePointAt(this.ii);
+ ++this.pos;
+ ++this.col;
+ return this.haveBuffer();
+ }
+ }, {
+ key: "haveBuffer",
+ value: function haveBuffer() {
+ return this.ii < this._buf.length;
+ }
+ }, {
+ key: "runOne",
+ value: function runOne() {
+ return this.state.parser.call(this, this.state.returned);
+ }
+ }, {
+ key: "finish",
+ value: function finish() {
+ this.char = ParserEND;
+ var last;
+
+ do {
+ last = this.state.parser;
+ this.runOne();
+ } while (this.state.parser !== last);
+
+ this.ctx = null;
+ this.state = null;
+ this._buf = null;
+ return this.obj;
+ }
+ }, {
+ key: "next",
+ value: function next(fn) {
+ /* istanbul ignore next */
+ if (typeof fn !== 'function') throw new ParserError('Tried to set state to non-existent state: ' + JSON.stringify(fn));
+ this.state.parser = fn;
+ }
+ }, {
+ key: "goto",
+ value: function goto(fn) {
+ this.next(fn);
+ return this.runOne();
+ }
+ }, {
+ key: "call",
+ value: function call(fn, returnWith) {
+ if (returnWith) this.next(returnWith);
+ this.stack.push(this.state);
+ this.state = new State(fn);
+ }
+ }, {
+ key: "callNow",
+ value: function callNow(fn, returnWith) {
+ this.call(fn, returnWith);
+ return this.runOne();
+ }
+ }, {
+ key: "return",
+ value: function _return(value) {
+ /* istanbul ignore next */
+ if (this.stack.length === 0) throw this.error(new ParserError('Stack underflow'));
+ if (value === undefined) value = this.state.buf;
+ this.state = this.stack.pop();
+ this.state.returned = value;
+ }
+ }, {
+ key: "returnNow",
+ value: function returnNow(value) {
+ this.return(value);
+ return this.runOne();
+ }
+ }, {
+ key: "consume",
+ value: function consume() {
+ /* istanbul ignore next */
+ if (this.char === ParserEND) throw this.error(new ParserError('Unexpected end-of-buffer'));
+ this.state.buf += this._buf[this.ii];
+ }
+ }, {
+ key: "error",
+ value: function error(err) {
+ err.line = this.line;
+ err.col = this.col;
+ err.pos = this.pos;
+ return err;
+ }
+ /* istanbul ignore next */
+
+ }, {
+ key: "parseStart",
+ value: function parseStart() {
+ throw new ParserError('Must declare a parseStart method');
+ }
+ }]);
+
+ return Parser;
+}();
+
+Parser.END = ParserEND;
+Parser.Error = ParserError;
+var parser$1 = Parser;
+
+var createDatetime = function createDatetime(value) {
+ var date = new Date(value);
+ /* istanbul ignore if */
+
+ if (isNaN(date)) {
+ throw new TypeError('Invalid Datetime');
+ } else {
+ return date;
+ }
+};
+
+var formatNum = function formatNum(d, num) {
+ num = String(num);
+
+ while (num.length < d) {
+ num = '0' + num;
+ }
+
+ return num;
+};
+
+var FloatingDateTime =
+/*#__PURE__*/
+function (_Date) {
+ _inherits(FloatingDateTime, _Date);
+
+ function FloatingDateTime(value) {
+ var _this;
+
+ _classCallCheck(this, FloatingDateTime);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(FloatingDateTime).call(this, value + 'Z'));
+ _this.isFloating = true;
+ return _this;
+ }
+
+ _createClass(FloatingDateTime, [{
+ key: "toISOString",
+ value: function toISOString() {
+ var date = `${this.getUTCFullYear()}-${formatNum(2, this.getUTCMonth() + 1)}-${formatNum(2, this.getUTCDate())}`;
+ var time = `${formatNum(2, this.getUTCHours())}:${formatNum(2, this.getUTCMinutes())}:${formatNum(2, this.getUTCSeconds())}.${formatNum(3, this.getUTCMilliseconds())}`;
+ return `${date}T${time}`;
+ }
+ }]);
+
+ return FloatingDateTime;
+}(_wrapNativeSuper(Date));
+
+var createDatetimeFloat = function createDatetimeFloat(value) {
+ var date = new FloatingDateTime(value);
+ /* istanbul ignore if */
+
+ if (isNaN(date)) {
+ throw new TypeError('Invalid Datetime');
+ } else {
+ return date;
+ }
+};
+
+var DateTime = global.Date;
+
+var Date$1 =
+/*#__PURE__*/
+function (_DateTime) {
+ _inherits(Date, _DateTime);
+
+ function Date(value) {
+ var _this;
+
+ _classCallCheck(this, Date);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(Date).call(this, value));
+ _this.isDate = true;
+ return _this;
+ }
+
+ _createClass(Date, [{
+ key: "toISOString",
+ value: function toISOString() {
+ return `${this.getUTCFullYear()}-${formatNum(2, this.getUTCMonth() + 1)}-${formatNum(2, this.getUTCDate())}`;
+ }
+ }]);
+
+ return Date;
+}(DateTime);
+
+var createDate = function createDate(value) {
+ var date = new Date$1(value);
+ /* istanbul ignore if */
+
+ if (isNaN(date)) {
+ throw new TypeError('Invalid Datetime');
+ } else {
+ return date;
+ }
+};
+
+var Time =
+/*#__PURE__*/
+function (_Date) {
+ _inherits(Time, _Date);
+
+ function Time(value) {
+ var _this;
+
+ _classCallCheck(this, Time);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(Time).call(this, `0000-01-01T${value}Z`));
+ _this.isTime = true;
+ return _this;
+ }
+
+ _createClass(Time, [{
+ key: "toISOString",
+ value: function toISOString() {
+ return `${formatNum(2, this.getUTCHours())}:${formatNum(2, this.getUTCMinutes())}:${formatNum(2, this.getUTCSeconds())}.${formatNum(3, this.getUTCMilliseconds())}`;
+ }
+ }]);
+
+ return Time;
+}(_wrapNativeSuper(Date));
+
+var createTime = function createTime(value) {
+ var date = new Time(value);
+ /* istanbul ignore if */
+
+ if (isNaN(date)) {
+ throw new TypeError('Invalid Datetime');
+ } else {
+ return date;
+ }
+};
+
+/* eslint-disable no-new-wrappers, no-eval, camelcase, operator-linebreak */
+
+
+var tomlParser = makeParserClass(parser$1);
+var makeParserClass_1 = makeParserClass;
+
+var TomlError =
+/*#__PURE__*/
+function (_Error) {
+ _inherits(TomlError, _Error);
+
+ function TomlError(msg) {
+ var _this;
+
+ _classCallCheck(this, TomlError);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(TomlError).call(this, msg));
+ _this.name = 'TomlError';
+ /* istanbul ignore next */
+
+ if (Error.captureStackTrace) Error.captureStackTrace(_assertThisInitialized(_this), TomlError);
+ _this.fromTOML = true;
+ _this.wrapped = null;
+ return _this;
+ }
+
+ return TomlError;
+}(_wrapNativeSuper(Error));
+
+TomlError.wrap = function (err) {
+ var terr = new TomlError(err.message);
+ terr.code = err.code;
+ terr.wrapped = err;
+ return terr;
+};
+
+var TomlError_1 = TomlError;
+var CTRL_I = 0x09;
+var CTRL_J = 0x0A;
+var CTRL_M = 0x0D;
+var CTRL_CHAR_BOUNDARY = 0x1F; // the last non-character in the latin1 region of unicode, except DEL
+
+var CHAR_SP = 0x20;
+var CHAR_QUOT = 0x22;
+var CHAR_NUM = 0x23;
+var CHAR_APOS = 0x27;
+var CHAR_PLUS = 0x2B;
+var CHAR_COMMA = 0x2C;
+var CHAR_HYPHEN = 0x2D;
+var CHAR_PERIOD = 0x2E;
+var CHAR_0 = 0x30;
+var CHAR_1 = 0x31;
+var CHAR_7 = 0x37;
+var CHAR_9 = 0x39;
+var CHAR_COLON = 0x3A;
+var CHAR_EQUALS = 0x3D;
+var CHAR_A = 0x41;
+var CHAR_E = 0x45;
+var CHAR_F = 0x46;
+var CHAR_T = 0x54;
+var CHAR_U = 0x55;
+var CHAR_Z = 0x5A;
+var CHAR_LOWBAR = 0x5F;
+var CHAR_a = 0x61;
+var CHAR_b = 0x62;
+var CHAR_e = 0x65;
+var CHAR_f = 0x66;
+var CHAR_i = 0x69;
+var CHAR_l = 0x6C;
+var CHAR_n = 0x6E;
+var CHAR_o = 0x6F;
+var CHAR_r = 0x72;
+var CHAR_s = 0x73;
+var CHAR_t = 0x74;
+var CHAR_u = 0x75;
+var CHAR_x = 0x78;
+var CHAR_z = 0x7A;
+var CHAR_LCUB = 0x7B;
+var CHAR_RCUB = 0x7D;
+var CHAR_LSQB = 0x5B;
+var CHAR_BSOL = 0x5C;
+var CHAR_RSQB = 0x5D;
+var CHAR_DEL = 0x7F;
+var SURROGATE_FIRST = 0xD800;
+var SURROGATE_LAST = 0xDFFF;
+var escapes = {
+ [CHAR_b]: '\u0008',
+ [CHAR_t]: '\u0009',
+ [CHAR_n]: '\u000A',
+ [CHAR_f]: '\u000C',
+ [CHAR_r]: '\u000D',
+ [CHAR_QUOT]: '\u0022',
+ [CHAR_BSOL]: '\u005C'
+};
+
+function isDigit(cp) {
+ return cp >= CHAR_0 && cp <= CHAR_9;
+}
+
+function isHexit(cp) {
+ return cp >= CHAR_A && cp <= CHAR_F || cp >= CHAR_a && cp <= CHAR_f || cp >= CHAR_0 && cp <= CHAR_9;
+}
+
+function isBit(cp) {
+ return cp === CHAR_1 || cp === CHAR_0;
+}
+
+function isOctit(cp) {
+ return cp >= CHAR_0 && cp <= CHAR_7;
+}
+
+function isAlphaNumQuoteHyphen(cp) {
+ return cp >= CHAR_A && cp <= CHAR_Z || cp >= CHAR_a && cp <= CHAR_z || cp >= CHAR_0 && cp <= CHAR_9 || cp === CHAR_APOS || cp === CHAR_QUOT || cp === CHAR_LOWBAR || cp === CHAR_HYPHEN;
+}
+
+function isAlphaNumHyphen(cp) {
+ return cp >= CHAR_A && cp <= CHAR_Z || cp >= CHAR_a && cp <= CHAR_z || cp >= CHAR_0 && cp <= CHAR_9 || cp === CHAR_LOWBAR || cp === CHAR_HYPHEN;
+}
+
+var _type = Symbol('type');
+
+var _declared = Symbol('declared');
+
+var hasOwnProperty$1 = Object.prototype.hasOwnProperty;
+var defineProperty = Object.defineProperty;
+var descriptor = {
+ configurable: true,
+ enumerable: true,
+ writable: true,
+ value: undefined
+};
+
+function hasKey(obj, key) {
+ if (hasOwnProperty$1.call(obj, key)) return true;
+ if (key === '__proto__') defineProperty(obj, '__proto__', descriptor);
+ return false;
+}
+
+var INLINE_TABLE = Symbol('inline-table');
+
+function InlineTable() {
+ return Object.defineProperties({}, {
+ [_type]: {
+ value: INLINE_TABLE
+ }
+ });
+}
+
+function isInlineTable(obj) {
+ if (obj === null || typeof obj !== 'object') return false;
+ return obj[_type] === INLINE_TABLE;
+}
+
+var TABLE = Symbol('table');
+
+function Table() {
+ return Object.defineProperties({}, {
+ [_type]: {
+ value: TABLE
+ },
+ [_declared]: {
+ value: false,
+ writable: true
+ }
+ });
+}
+
+function isTable(obj) {
+ if (obj === null || typeof obj !== 'object') return false;
+ return obj[_type] === TABLE;
+}
+
+var _contentType = Symbol('content-type');
+
+var INLINE_LIST = Symbol('inline-list');
+
+function InlineList(type) {
+ return Object.defineProperties([], {
+ [_type]: {
+ value: INLINE_LIST
+ },
+ [_contentType]: {
+ value: type
+ }
+ });
+}
+
+function isInlineList(obj) {
+ if (obj === null || typeof obj !== 'object') return false;
+ return obj[_type] === INLINE_LIST;
+}
+
+var LIST = Symbol('list');
+
+function List() {
+ return Object.defineProperties([], {
+ [_type]: {
+ value: LIST
+ }
+ });
+}
+
+function isList(obj) {
+ if (obj === null || typeof obj !== 'object') return false;
+ return obj[_type] === LIST;
+} // in an eval, to let bundlers not slurp in a util proxy
+
+
+var _custom;
+
+try {
+ var utilInspect = util$2.inspect;
+ _custom = utilInspect.custom;
+} catch (_) {}
+/* eval require not available in transpiled bundle */
+
+/* istanbul ignore next */
+
+
+var _inspect = _custom || 'inspect';
+
+var BoxedBigInt =
+/*#__PURE__*/
+function () {
+ function BoxedBigInt(value) {
+ _classCallCheck(this, BoxedBigInt);
+
+ try {
+ this.value = global.BigInt.asIntN(64, value);
+ } catch (_) {
+ /* istanbul ignore next */
+ this.value = null;
+ }
+
+ Object.defineProperty(this, _type, {
+ value: INTEGER
+ });
+ }
+
+ _createClass(BoxedBigInt, [{
+ key: "isNaN",
+ value: function isNaN() {
+ return this.value === null;
+ }
+ /* istanbul ignore next */
+
+ }, {
+ key: "toString",
+ value: function toString() {
+ return String(this.value);
+ }
+ /* istanbul ignore next */
+
+ }, {
+ key: _inspect,
+ value: function value() {
+ return `[BigInt: ${this.toString()}]}`;
+ }
+ }, {
+ key: "valueOf",
+ value: function valueOf() {
+ return this.value;
+ }
+ }]);
+
+ return BoxedBigInt;
+}();
+
+var INTEGER = Symbol('integer');
+
+function Integer(_value) {
+ var num = Number(_value); // -0 is a float thing, not an int thing
+
+ if (Object.is(num, -0)) num = 0;
+ /* istanbul ignore else */
+
+ if (global.BigInt && !Number.isSafeInteger(num)) {
+ return new BoxedBigInt(_value);
+ } else {
+ /* istanbul ignore next */
+ return Object.defineProperties(new Number(num), {
+ isNaN: {
+ value: function value() {
+ return isNaN(this);
+ }
+ },
+ [_type]: {
+ value: INTEGER
+ },
+ [_inspect]: {
+ value: function value() {
+ return `[Integer: ${_value}]`;
+ }
+ }
+ });
+ }
+}
+
+function isInteger(obj) {
+ if (obj === null || typeof obj !== 'object') return false;
+ return obj[_type] === INTEGER;
+}
+
+var FLOAT = Symbol('float');
+
+function Float(_value2) {
+ /* istanbul ignore next */
+ return Object.defineProperties(new Number(_value2), {
+ [_type]: {
+ value: FLOAT
+ },
+ [_inspect]: {
+ value: function value() {
+ return `[Float: ${_value2}]`;
+ }
+ }
+ });
+}
+
+function isFloat(obj) {
+ if (obj === null || typeof obj !== 'object') return false;
+ return obj[_type] === FLOAT;
+}
+
+function tomlType(value) {
+ var type = typeof value;
+
+ if (type === 'object') {
+ /* istanbul ignore if */
+ if (value === null) return 'null';
+ if (value instanceof Date) return 'datetime';
+ /* istanbul ignore else */
+
+ if (_type in value) {
+ switch (value[_type]) {
+ case INLINE_TABLE:
+ return 'inline-table';
+
+ case INLINE_LIST:
+ return 'inline-list';
+
+ /* istanbul ignore next */
+
+ case TABLE:
+ return 'table';
+
+ /* istanbul ignore next */
+
+ case LIST:
+ return 'list';
+
+ case FLOAT:
+ return 'float';
+
+ case INTEGER:
+ return 'integer';
+ }
+ }
+ }
+
+ return type;
+}
+
+function makeParserClass(Parser) {
+ var TOMLParser =
+ /*#__PURE__*/
+ function (_Parser) {
+ _inherits(TOMLParser, _Parser);
+
+ function TOMLParser() {
+ var _this2;
+
+ _classCallCheck(this, TOMLParser);
+
+ _this2 = _possibleConstructorReturn(this, _getPrototypeOf(TOMLParser).call(this));
+ _this2.ctx = _this2.obj = Table();
+ return _this2;
+ }
+ /* MATCH HELPER */
+
+
+ _createClass(TOMLParser, [{
+ key: "atEndOfWord",
+ value: function atEndOfWord() {
+ return this.char === CHAR_NUM || this.char === CTRL_I || this.char === CHAR_SP || this.atEndOfLine();
+ }
+ }, {
+ key: "atEndOfLine",
+ value: function atEndOfLine() {
+ return this.char === Parser.END || this.char === CTRL_J || this.char === CTRL_M;
+ }
+ }, {
+ key: "parseStart",
+ value: function parseStart() {
+ if (this.char === Parser.END) {
+ return null;
+ } else if (this.char === CHAR_LSQB) {
+ return this.call(this.parseTableOrList);
+ } else if (this.char === CHAR_NUM) {
+ return this.call(this.parseComment);
+ } else if (this.char === CTRL_J || this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) {
+ return null;
+ } else if (isAlphaNumQuoteHyphen(this.char)) {
+ return this.callNow(this.parseAssignStatement);
+ } else {
+ throw this.error(new TomlError(`Unknown character "${this.char}"`));
+ }
+ } // HELPER, this strips any whitespace and comments to the end of the line
+ // then RETURNS. Last state in a production.
+
+ }, {
+ key: "parseWhitespaceToEOL",
+ value: function parseWhitespaceToEOL() {
+ if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) {
+ return null;
+ } else if (this.char === CHAR_NUM) {
+ return this.goto(this.parseComment);
+ } else if (this.char === Parser.END || this.char === CTRL_J) {
+ return this.return();
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected only whitespace or comments till end of line'));
+ }
+ }
+ /* ASSIGNMENT: key = value */
+
+ }, {
+ key: "parseAssignStatement",
+ value: function parseAssignStatement() {
+ return this.callNow(this.parseAssign, this.recordAssignStatement);
+ }
+ }, {
+ key: "recordAssignStatement",
+ value: function recordAssignStatement(kv) {
+ var target = this.ctx;
+ var finalKey = kv.key.pop();
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = kv.key[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var kw = _step.value;
+
+ if (hasKey(target, kw) && (!isTable(target[kw]) || target[kw][_declared])) {
+ throw this.error(new TomlError("Can't redefine existing key"));
+ }
+
+ target = target[kw] = target[kw] || Table();
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ if (hasKey(target, finalKey)) {
+ throw this.error(new TomlError("Can't redefine existing key"));
+ } // unbox our numbers
+
+
+ if (isInteger(kv.value) || isFloat(kv.value)) {
+ target[finalKey] = kv.value.valueOf();
+ } else {
+ target[finalKey] = kv.value;
+ }
+
+ return this.goto(this.parseWhitespaceToEOL);
+ }
+ /* ASSSIGNMENT expression, key = value possibly inside an inline table */
+
+ }, {
+ key: "parseAssign",
+ value: function parseAssign() {
+ return this.callNow(this.parseKeyword, this.recordAssignKeyword);
+ }
+ }, {
+ key: "recordAssignKeyword",
+ value: function recordAssignKeyword(key) {
+ if (this.state.resultTable) {
+ this.state.resultTable.push(key);
+ } else {
+ this.state.resultTable = [key];
+ }
+
+ return this.goto(this.parseAssignKeywordPreDot);
+ }
+ }, {
+ key: "parseAssignKeywordPreDot",
+ value: function parseAssignKeywordPreDot() {
+ if (this.char === CHAR_PERIOD) {
+ return this.next(this.parseAssignKeywordPostDot);
+ } else if (this.char !== CHAR_SP && this.char !== CTRL_I) {
+ return this.goto(this.parseAssignEqual);
+ }
+ }
+ }, {
+ key: "parseAssignKeywordPostDot",
+ value: function parseAssignKeywordPostDot() {
+ if (this.char !== CHAR_SP && this.char !== CTRL_I) {
+ return this.callNow(this.parseKeyword, this.recordAssignKeyword);
+ }
+ }
+ }, {
+ key: "parseAssignEqual",
+ value: function parseAssignEqual() {
+ if (this.char === CHAR_EQUALS) {
+ return this.next(this.parseAssignPreValue);
+ } else {
+ throw this.error(new TomlError('Invalid character, expected "="'));
+ }
+ }
+ }, {
+ key: "parseAssignPreValue",
+ value: function parseAssignPreValue() {
+ if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return null;
+ } else {
+ return this.callNow(this.parseValue, this.recordAssignValue);
+ }
+ }
+ }, {
+ key: "recordAssignValue",
+ value: function recordAssignValue(value) {
+ return this.returnNow({
+ key: this.state.resultTable,
+ value: value
+ });
+ }
+ /* COMMENTS: #...eol */
+
+ }, {
+ key: "parseComment",
+ value: function parseComment() {
+ do {
+ if (this.char === Parser.END || this.char === CTRL_J) {
+ return this.return();
+ }
+ } while (this.nextChar());
+ }
+ /* TABLES AND LISTS, [foo] and [[foo]] */
+
+ }, {
+ key: "parseTableOrList",
+ value: function parseTableOrList() {
+ if (this.char === CHAR_LSQB) {
+ this.next(this.parseList);
+ } else {
+ return this.goto(this.parseTable);
+ }
+ }
+ /* TABLE [foo.bar.baz] */
+
+ }, {
+ key: "parseTable",
+ value: function parseTable() {
+ this.ctx = this.obj;
+ return this.goto(this.parseTableNext);
+ }
+ }, {
+ key: "parseTableNext",
+ value: function parseTableNext() {
+ if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return null;
+ } else {
+ return this.callNow(this.parseKeyword, this.parseTableMore);
+ }
+ }
+ }, {
+ key: "parseTableMore",
+ value: function parseTableMore(keyword) {
+ if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return null;
+ } else if (this.char === CHAR_RSQB) {
+ if (hasKey(this.ctx, keyword) && (!isTable(this.ctx[keyword]) || this.ctx[keyword][_declared])) {
+ throw this.error(new TomlError("Can't redefine existing key"));
+ } else {
+ this.ctx = this.ctx[keyword] = this.ctx[keyword] || Table();
+ this.ctx[_declared] = true;
+ }
+
+ return this.next(this.parseWhitespaceToEOL);
+ } else if (this.char === CHAR_PERIOD) {
+ if (!hasKey(this.ctx, keyword)) {
+ this.ctx = this.ctx[keyword] = Table();
+ } else if (isTable(this.ctx[keyword])) {
+ this.ctx = this.ctx[keyword];
+ } else if (isList(this.ctx[keyword])) {
+ this.ctx = this.ctx[keyword][this.ctx[keyword].length - 1];
+ } else {
+ throw this.error(new TomlError("Can't redefine existing key"));
+ }
+
+ return this.next(this.parseTableNext);
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected whitespace, . or ]'));
+ }
+ }
+ /* LIST [[a.b.c]] */
+
+ }, {
+ key: "parseList",
+ value: function parseList() {
+ this.ctx = this.obj;
+ return this.goto(this.parseListNext);
+ }
+ }, {
+ key: "parseListNext",
+ value: function parseListNext() {
+ if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return null;
+ } else {
+ return this.callNow(this.parseKeyword, this.parseListMore);
+ }
+ }
+ }, {
+ key: "parseListMore",
+ value: function parseListMore(keyword) {
+ if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return null;
+ } else if (this.char === CHAR_RSQB) {
+ if (!hasKey(this.ctx, keyword)) {
+ this.ctx[keyword] = List();
+ }
+
+ if (isInlineList(this.ctx[keyword])) {
+ throw this.error(new TomlError("Can't extend an inline array"));
+ } else if (isList(this.ctx[keyword])) {
+ var next = Table();
+ this.ctx[keyword].push(next);
+ this.ctx = next;
+ } else {
+ throw this.error(new TomlError("Can't redefine an existing key"));
+ }
+
+ return this.next(this.parseListEnd);
+ } else if (this.char === CHAR_PERIOD) {
+ if (!hasKey(this.ctx, keyword)) {
+ this.ctx = this.ctx[keyword] = Table();
+ } else if (isInlineList(this.ctx[keyword])) {
+ throw this.error(new TomlError("Can't extend an inline array"));
+ } else if (isInlineTable(this.ctx[keyword])) {
+ throw this.error(new TomlError("Can't extend an inline table"));
+ } else if (isList(this.ctx[keyword])) {
+ this.ctx = this.ctx[keyword][this.ctx[keyword].length - 1];
+ } else if (isTable(this.ctx[keyword])) {
+ this.ctx = this.ctx[keyword];
+ } else {
+ throw this.error(new TomlError("Can't redefine an existing key"));
+ }
+
+ return this.next(this.parseListNext);
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected whitespace, . or ]'));
+ }
+ }
+ }, {
+ key: "parseListEnd",
+ value: function parseListEnd(keyword) {
+ if (this.char === CHAR_RSQB) {
+ return this.next(this.parseWhitespaceToEOL);
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected whitespace, . or ]'));
+ }
+ }
+ /* VALUE string, number, boolean, inline list, inline object */
+
+ }, {
+ key: "parseValue",
+ value: function parseValue() {
+ if (this.char === Parser.END) {
+ throw this.error(new TomlError('Key without value'));
+ } else if (this.char === CHAR_QUOT) {
+ return this.next(this.parseDoubleString);
+ }
+
+ if (this.char === CHAR_APOS) {
+ return this.next(this.parseSingleString);
+ } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {
+ return this.goto(this.parseNumberSign);
+ } else if (this.char === CHAR_i) {
+ return this.next(this.parseInf);
+ } else if (this.char === CHAR_n) {
+ return this.next(this.parseNan);
+ } else if (isDigit(this.char)) {
+ return this.goto(this.parseNumberOrDateTime);
+ } else if (this.char === CHAR_t || this.char === CHAR_f) {
+ return this.goto(this.parseBoolean);
+ } else if (this.char === CHAR_LSQB) {
+ return this.call(this.parseInlineList, this.recordValue);
+ } else if (this.char === CHAR_LCUB) {
+ return this.call(this.parseInlineTable, this.recordValue);
+ } else {
+ throw this.error(new TomlError('Unexpected character, expecting string, number, datetime, boolean, inline array or inline table'));
+ }
+ }
+ }, {
+ key: "recordValue",
+ value: function recordValue(value) {
+ return this.returnNow(value);
+ }
+ }, {
+ key: "parseInf",
+ value: function parseInf() {
+ if (this.char === CHAR_n) {
+ return this.next(this.parseInf2);
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected "inf", "+inf" or "-inf"'));
+ }
+ }
+ }, {
+ key: "parseInf2",
+ value: function parseInf2() {
+ if (this.char === CHAR_f) {
+ if (this.state.buf === '-') {
+ return this.return(-Infinity);
+ } else {
+ return this.return(Infinity);
+ }
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected "inf", "+inf" or "-inf"'));
+ }
+ }
+ }, {
+ key: "parseNan",
+ value: function parseNan() {
+ if (this.char === CHAR_a) {
+ return this.next(this.parseNan2);
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected "nan"'));
+ }
+ }
+ }, {
+ key: "parseNan2",
+ value: function parseNan2() {
+ if (this.char === CHAR_n) {
+ return this.return(NaN);
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected "nan"'));
+ }
+ }
+ /* KEYS, barewords or basic, literal, or dotted */
+
+ }, {
+ key: "parseKeyword",
+ value: function parseKeyword() {
+ if (this.char === CHAR_QUOT) {
+ return this.next(this.parseBasicString);
+ } else if (this.char === CHAR_APOS) {
+ return this.next(this.parseLiteralString);
+ } else {
+ return this.goto(this.parseBareKey);
+ }
+ }
+ /* KEYS: barewords */
+
+ }, {
+ key: "parseBareKey",
+ value: function parseBareKey() {
+ do {
+ if (this.char === Parser.END) {
+ throw this.error(new TomlError('Key ended without value'));
+ } else if (isAlphaNumHyphen(this.char)) {
+ this.consume();
+ } else if (this.state.buf.length === 0) {
+ throw this.error(new TomlError('Empty bare keys are not allowed'));
+ } else {
+ return this.returnNow();
+ }
+ } while (this.nextChar());
+ }
+ /* STRINGS, single quoted (literal) */
+
+ }, {
+ key: "parseSingleString",
+ value: function parseSingleString() {
+ if (this.char === CHAR_APOS) {
+ return this.next(this.parseLiteralMultiStringMaybe);
+ } else {
+ return this.goto(this.parseLiteralString);
+ }
+ }
+ }, {
+ key: "parseLiteralString",
+ value: function parseLiteralString() {
+ do {
+ if (this.char === CHAR_APOS) {
+ return this.return();
+ } else if (this.atEndOfLine()) {
+ throw this.error(new TomlError('Unterminated string'));
+ } else if (this.char === CHAR_DEL || this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I) {
+ throw this.errorControlCharInString();
+ } else {
+ this.consume();
+ }
+ } while (this.nextChar());
+ }
+ }, {
+ key: "parseLiteralMultiStringMaybe",
+ value: function parseLiteralMultiStringMaybe() {
+ if (this.char === CHAR_APOS) {
+ return this.next(this.parseLiteralMultiString);
+ } else {
+ return this.returnNow();
+ }
+ }
+ }, {
+ key: "parseLiteralMultiString",
+ value: function parseLiteralMultiString() {
+ if (this.char === CTRL_M) {
+ return null;
+ } else if (this.char === CTRL_J) {
+ return this.next(this.parseLiteralMultiStringContent);
+ } else {
+ return this.goto(this.parseLiteralMultiStringContent);
+ }
+ }
+ }, {
+ key: "parseLiteralMultiStringContent",
+ value: function parseLiteralMultiStringContent() {
+ do {
+ if (this.char === CHAR_APOS) {
+ return this.next(this.parseLiteralMultiEnd);
+ } else if (this.char === Parser.END) {
+ throw this.error(new TomlError('Unterminated multi-line string'));
+ } else if (this.char === CHAR_DEL || this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I && this.char !== CTRL_J && this.char !== CTRL_M) {
+ throw this.errorControlCharInString();
+ } else {
+ this.consume();
+ }
+ } while (this.nextChar());
+ }
+ }, {
+ key: "parseLiteralMultiEnd",
+ value: function parseLiteralMultiEnd() {
+ if (this.char === CHAR_APOS) {
+ return this.next(this.parseLiteralMultiEnd2);
+ } else {
+ this.state.buf += "'";
+ return this.goto(this.parseLiteralMultiStringContent);
+ }
+ }
+ }, {
+ key: "parseLiteralMultiEnd2",
+ value: function parseLiteralMultiEnd2() {
+ if (this.char === CHAR_APOS) {
+ return this.return();
+ } else {
+ this.state.buf += "''";
+ return this.goto(this.parseLiteralMultiStringContent);
+ }
+ }
+ /* STRINGS double quoted */
+
+ }, {
+ key: "parseDoubleString",
+ value: function parseDoubleString() {
+ if (this.char === CHAR_QUOT) {
+ return this.next(this.parseMultiStringMaybe);
+ } else {
+ return this.goto(this.parseBasicString);
+ }
+ }
+ }, {
+ key: "parseBasicString",
+ value: function parseBasicString() {
+ do {
+ if (this.char === CHAR_BSOL) {
+ return this.call(this.parseEscape, this.recordEscapeReplacement);
+ } else if (this.char === CHAR_QUOT) {
+ return this.return();
+ } else if (this.atEndOfLine()) {
+ throw this.error(new TomlError('Unterminated string'));
+ } else if (this.char === CHAR_DEL || this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I) {
+ throw this.errorControlCharInString();
+ } else {
+ this.consume();
+ }
+ } while (this.nextChar());
+ }
+ }, {
+ key: "recordEscapeReplacement",
+ value: function recordEscapeReplacement(replacement) {
+ this.state.buf += replacement;
+ return this.goto(this.parseBasicString);
+ }
+ }, {
+ key: "parseMultiStringMaybe",
+ value: function parseMultiStringMaybe() {
+ if (this.char === CHAR_QUOT) {
+ return this.next(this.parseMultiString);
+ } else {
+ return this.returnNow();
+ }
+ }
+ }, {
+ key: "parseMultiString",
+ value: function parseMultiString() {
+ if (this.char === CTRL_M) {
+ return null;
+ } else if (this.char === CTRL_J) {
+ return this.next(this.parseMultiStringContent);
+ } else {
+ return this.goto(this.parseMultiStringContent);
+ }
+ }
+ }, {
+ key: "parseMultiStringContent",
+ value: function parseMultiStringContent() {
+ do {
+ if (this.char === CHAR_BSOL) {
+ return this.call(this.parseMultiEscape, this.recordMultiEscapeReplacement);
+ } else if (this.char === CHAR_QUOT) {
+ return this.next(this.parseMultiEnd);
+ } else if (this.char === Parser.END) {
+ throw this.error(new TomlError('Unterminated multi-line string'));
+ } else if (this.char === CHAR_DEL || this.char <= CTRL_CHAR_BOUNDARY && this.char !== CTRL_I && this.char !== CTRL_J && this.char !== CTRL_M) {
+ throw this.errorControlCharInString();
+ } else {
+ this.consume();
+ }
+ } while (this.nextChar());
+ }
+ }, {
+ key: "errorControlCharInString",
+ value: function errorControlCharInString() {
+ var displayCode = '\\u00';
+
+ if (this.char < 16) {
+ displayCode += '0';
+ }
+
+ displayCode += this.char.toString(16);
+ return this.error(new TomlError(`Control characters (codes < 0x1f and 0x7f) are not allowed in strings, use ${displayCode} instead`));
+ }
+ }, {
+ key: "recordMultiEscapeReplacement",
+ value: function recordMultiEscapeReplacement(replacement) {
+ this.state.buf += replacement;
+ return this.goto(this.parseMultiStringContent);
+ }
+ }, {
+ key: "parseMultiEnd",
+ value: function parseMultiEnd() {
+ if (this.char === CHAR_QUOT) {
+ return this.next(this.parseMultiEnd2);
+ } else {
+ this.state.buf += '"';
+ return this.goto(this.parseMultiStringContent);
+ }
+ }
+ }, {
+ key: "parseMultiEnd2",
+ value: function parseMultiEnd2() {
+ if (this.char === CHAR_QUOT) {
+ return this.return();
+ } else {
+ this.state.buf += '""';
+ return this.goto(this.parseMultiStringContent);
+ }
+ }
+ }, {
+ key: "parseMultiEscape",
+ value: function parseMultiEscape() {
+ if (this.char === CTRL_M || this.char === CTRL_J) {
+ return this.next(this.parseMultiTrim);
+ } else if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return this.next(this.parsePreMultiTrim);
+ } else {
+ return this.goto(this.parseEscape);
+ }
+ }
+ }, {
+ key: "parsePreMultiTrim",
+ value: function parsePreMultiTrim() {
+ if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return null;
+ } else if (this.char === CTRL_M || this.char === CTRL_J) {
+ return this.next(this.parseMultiTrim);
+ } else {
+ throw this.error(new TomlError("Can't escape whitespace"));
+ }
+ }
+ }, {
+ key: "parseMultiTrim",
+ value: function parseMultiTrim() {
+ // explicitly whitespace here, END should follow the same path as chars
+ if (this.char === CTRL_J || this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M) {
+ return null;
+ } else {
+ return this.returnNow();
+ }
+ }
+ }, {
+ key: "parseEscape",
+ value: function parseEscape() {
+ if (this.char in escapes) {
+ return this.return(escapes[this.char]);
+ } else if (this.char === CHAR_u) {
+ return this.call(this.parseSmallUnicode, this.parseUnicodeReturn);
+ } else if (this.char === CHAR_U) {
+ return this.call(this.parseLargeUnicode, this.parseUnicodeReturn);
+ } else {
+ throw this.error(new TomlError('Unknown escape character: ' + this.char));
+ }
+ }
+ }, {
+ key: "parseUnicodeReturn",
+ value: function parseUnicodeReturn(char) {
+ try {
+ var codePoint = parseInt(char, 16);
+
+ if (codePoint >= SURROGATE_FIRST && codePoint <= SURROGATE_LAST) {
+ throw this.error(new TomlError('Invalid unicode, character in range 0xD800 - 0xDFFF is reserved'));
+ }
+
+ return this.returnNow(String.fromCodePoint(codePoint));
+ } catch (err) {
+ throw this.error(TomlError.wrap(err));
+ }
+ }
+ }, {
+ key: "parseSmallUnicode",
+ value: function parseSmallUnicode() {
+ if (!isHexit(this.char)) {
+ throw this.error(new TomlError('Invalid character in unicode sequence, expected hex'));
+ } else {
+ this.consume();
+ if (this.state.buf.length >= 4) return this.return();
+ }
+ }
+ }, {
+ key: "parseLargeUnicode",
+ value: function parseLargeUnicode() {
+ if (!isHexit(this.char)) {
+ throw this.error(new TomlError('Invalid character in unicode sequence, expected hex'));
+ } else {
+ this.consume();
+ if (this.state.buf.length >= 8) return this.return();
+ }
+ }
+ /* NUMBERS */
+
+ }, {
+ key: "parseNumberSign",
+ value: function parseNumberSign() {
+ this.consume();
+ return this.next(this.parseMaybeSignedInfOrNan);
+ }
+ }, {
+ key: "parseMaybeSignedInfOrNan",
+ value: function parseMaybeSignedInfOrNan() {
+ if (this.char === CHAR_i) {
+ return this.next(this.parseInf);
+ } else if (this.char === CHAR_n) {
+ return this.next(this.parseNan);
+ } else {
+ return this.callNow(this.parseNoUnder, this.parseNumberIntegerStart);
+ }
+ }
+ }, {
+ key: "parseNumberIntegerStart",
+ value: function parseNumberIntegerStart() {
+ if (this.char === CHAR_0) {
+ this.consume();
+ return this.next(this.parseNumberIntegerExponentOrDecimal);
+ } else {
+ return this.goto(this.parseNumberInteger);
+ }
+ }
+ }, {
+ key: "parseNumberIntegerExponentOrDecimal",
+ value: function parseNumberIntegerExponentOrDecimal() {
+ if (this.char === CHAR_PERIOD) {
+ this.consume();
+ return this.call(this.parseNoUnder, this.parseNumberFloat);
+ } else if (this.char === CHAR_E || this.char === CHAR_e) {
+ this.consume();
+ return this.next(this.parseNumberExponentSign);
+ } else {
+ return this.returnNow(Integer(this.state.buf));
+ }
+ }
+ }, {
+ key: "parseNumberInteger",
+ value: function parseNumberInteger() {
+ if (isDigit(this.char)) {
+ this.consume();
+ } else if (this.char === CHAR_LOWBAR) {
+ return this.call(this.parseNoUnder);
+ } else if (this.char === CHAR_E || this.char === CHAR_e) {
+ this.consume();
+ return this.next(this.parseNumberExponentSign);
+ } else if (this.char === CHAR_PERIOD) {
+ this.consume();
+ return this.call(this.parseNoUnder, this.parseNumberFloat);
+ } else {
+ var result = Integer(this.state.buf);
+ /* istanbul ignore if */
+
+ if (result.isNaN()) {
+ throw this.error(new TomlError('Invalid number'));
+ } else {
+ return this.returnNow(result);
+ }
+ }
+ }
+ }, {
+ key: "parseNoUnder",
+ value: function parseNoUnder() {
+ if (this.char === CHAR_LOWBAR || this.char === CHAR_PERIOD || this.char === CHAR_E || this.char === CHAR_e) {
+ throw this.error(new TomlError('Unexpected character, expected digit'));
+ } else if (this.atEndOfWord()) {
+ throw this.error(new TomlError('Incomplete number'));
+ }
+
+ return this.returnNow();
+ }
+ }, {
+ key: "parseNumberFloat",
+ value: function parseNumberFloat() {
+ if (this.char === CHAR_LOWBAR) {
+ return this.call(this.parseNoUnder, this.parseNumberFloat);
+ } else if (isDigit(this.char)) {
+ this.consume();
+ } else if (this.char === CHAR_E || this.char === CHAR_e) {
+ this.consume();
+ return this.next(this.parseNumberExponentSign);
+ } else {
+ return this.returnNow(Float(this.state.buf));
+ }
+ }
+ }, {
+ key: "parseNumberExponentSign",
+ value: function parseNumberExponentSign() {
+ if (isDigit(this.char)) {
+ return this.goto(this.parseNumberExponent);
+ } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {
+ this.consume();
+ this.call(this.parseNoUnder, this.parseNumberExponent);
+ } else {
+ throw this.error(new TomlError('Unexpected character, expected -, + or digit'));
+ }
+ }
+ }, {
+ key: "parseNumberExponent",
+ value: function parseNumberExponent() {
+ if (isDigit(this.char)) {
+ this.consume();
+ } else if (this.char === CHAR_LOWBAR) {
+ return this.call(this.parseNoUnder);
+ } else {
+ return this.returnNow(Float(this.state.buf));
+ }
+ }
+ /* NUMBERS or DATETIMES */
+
+ }, {
+ key: "parseNumberOrDateTime",
+ value: function parseNumberOrDateTime() {
+ if (this.char === CHAR_0) {
+ this.consume();
+ return this.next(this.parseNumberBaseOrDateTime);
+ } else {
+ return this.goto(this.parseNumberOrDateTimeOnly);
+ }
+ }
+ }, {
+ key: "parseNumberOrDateTimeOnly",
+ value: function parseNumberOrDateTimeOnly() {
+ // note, if two zeros are in a row then it MUST be a date
+ if (this.char === CHAR_LOWBAR) {
+ return this.call(this.parseNoUnder, this.parseNumberInteger);
+ } else if (isDigit(this.char)) {
+ this.consume();
+ if (this.state.buf.length > 4) this.next(this.parseNumberInteger);
+ } else if (this.char === CHAR_E || this.char === CHAR_e) {
+ this.consume();
+ return this.next(this.parseNumberExponentSign);
+ } else if (this.char === CHAR_PERIOD) {
+ this.consume();
+ return this.call(this.parseNoUnder, this.parseNumberFloat);
+ } else if (this.char === CHAR_HYPHEN) {
+ return this.goto(this.parseDateTime);
+ } else if (this.char === CHAR_COLON) {
+ return this.goto(this.parseOnlyTimeHour);
+ } else {
+ return this.returnNow(Integer(this.state.buf));
+ }
+ }
+ }, {
+ key: "parseDateTimeOnly",
+ value: function parseDateTimeOnly() {
+ if (this.state.buf.length < 4) {
+ if (isDigit(this.char)) {
+ return this.consume();
+ } else if (this.char === CHAR_COLON) {
+ return this.goto(this.parseOnlyTimeHour);
+ } else {
+ throw this.error(new TomlError('Expected digit while parsing year part of a date'));
+ }
+ } else {
+ if (this.char === CHAR_HYPHEN) {
+ return this.goto(this.parseDateTime);
+ } else {
+ throw this.error(new TomlError('Expected hyphen (-) while parsing year part of date'));
+ }
+ }
+ }
+ }, {
+ key: "parseNumberBaseOrDateTime",
+ value: function parseNumberBaseOrDateTime() {
+ if (this.char === CHAR_b) {
+ this.consume();
+ return this.call(this.parseNoUnder, this.parseIntegerBin);
+ } else if (this.char === CHAR_o) {
+ this.consume();
+ return this.call(this.parseNoUnder, this.parseIntegerOct);
+ } else if (this.char === CHAR_x) {
+ this.consume();
+ return this.call(this.parseNoUnder, this.parseIntegerHex);
+ } else if (this.char === CHAR_PERIOD) {
+ return this.goto(this.parseNumberInteger);
+ } else if (isDigit(this.char)) {
+ return this.goto(this.parseDateTimeOnly);
+ } else {
+ return this.returnNow(Integer(this.state.buf));
+ }
+ }
+ }, {
+ key: "parseIntegerHex",
+ value: function parseIntegerHex() {
+ if (isHexit(this.char)) {
+ this.consume();
+ } else if (this.char === CHAR_LOWBAR) {
+ return this.call(this.parseNoUnder);
+ } else {
+ var result = Integer(this.state.buf);
+ /* istanbul ignore if */
+
+ if (result.isNaN()) {
+ throw this.error(new TomlError('Invalid number'));
+ } else {
+ return this.returnNow(result);
+ }
+ }
+ }
+ }, {
+ key: "parseIntegerOct",
+ value: function parseIntegerOct() {
+ if (isOctit(this.char)) {
+ this.consume();
+ } else if (this.char === CHAR_LOWBAR) {
+ return this.call(this.parseNoUnder);
+ } else {
+ var result = Integer(this.state.buf);
+ /* istanbul ignore if */
+
+ if (result.isNaN()) {
+ throw this.error(new TomlError('Invalid number'));
+ } else {
+ return this.returnNow(result);
+ }
+ }
+ }
+ }, {
+ key: "parseIntegerBin",
+ value: function parseIntegerBin() {
+ if (isBit(this.char)) {
+ this.consume();
+ } else if (this.char === CHAR_LOWBAR) {
+ return this.call(this.parseNoUnder);
+ } else {
+ var result = Integer(this.state.buf);
+ /* istanbul ignore if */
+
+ if (result.isNaN()) {
+ throw this.error(new TomlError('Invalid number'));
+ } else {
+ return this.returnNow(result);
+ }
+ }
+ }
+ /* DATETIME */
+
+ }, {
+ key: "parseDateTime",
+ value: function parseDateTime() {
+ // we enter here having just consumed the year and about to consume the hyphen
+ if (this.state.buf.length < 4) {
+ throw this.error(new TomlError('Years less than 1000 must be zero padded to four characters'));
+ }
+
+ this.state.result = this.state.buf;
+ this.state.buf = '';
+ return this.next(this.parseDateMonth);
+ }
+ }, {
+ key: "parseDateMonth",
+ value: function parseDateMonth() {
+ if (this.char === CHAR_HYPHEN) {
+ if (this.state.buf.length < 2) {
+ throw this.error(new TomlError('Months less than 10 must be zero padded to two characters'));
+ }
+
+ this.state.result += '-' + this.state.buf;
+ this.state.buf = '';
+ return this.next(this.parseDateDay);
+ } else if (isDigit(this.char)) {
+ this.consume();
+ } else {
+ throw this.error(new TomlError('Incomplete datetime'));
+ }
+ }
+ }, {
+ key: "parseDateDay",
+ value: function parseDateDay() {
+ if (this.char === CHAR_T || this.char === CHAR_SP) {
+ if (this.state.buf.length < 2) {
+ throw this.error(new TomlError('Days less than 10 must be zero padded to two characters'));
+ }
+
+ this.state.result += '-' + this.state.buf;
+ this.state.buf = '';
+ return this.next(this.parseStartTimeHour);
+ } else if (this.atEndOfWord()) {
+ return this.return(createDate(this.state.result + '-' + this.state.buf));
+ } else if (isDigit(this.char)) {
+ this.consume();
+ } else {
+ throw this.error(new TomlError('Incomplete datetime'));
+ }
+ }
+ }, {
+ key: "parseStartTimeHour",
+ value: function parseStartTimeHour() {
+ if (this.atEndOfWord()) {
+ return this.returnNow(createDate(this.state.result));
+ } else {
+ return this.goto(this.parseTimeHour);
+ }
+ }
+ }, {
+ key: "parseTimeHour",
+ value: function parseTimeHour() {
+ if (this.char === CHAR_COLON) {
+ if (this.state.buf.length < 2) {
+ throw this.error(new TomlError('Hours less than 10 must be zero padded to two characters'));
+ }
+
+ this.state.result += 'T' + this.state.buf;
+ this.state.buf = '';
+ return this.next(this.parseTimeMin);
+ } else if (isDigit(this.char)) {
+ this.consume();
+ } else {
+ throw this.error(new TomlError('Incomplete datetime'));
+ }
+ }
+ }, {
+ key: "parseTimeMin",
+ value: function parseTimeMin() {
+ if (this.state.buf.length < 2 && isDigit(this.char)) {
+ this.consume();
+ } else if (this.state.buf.length === 2 && this.char === CHAR_COLON) {
+ this.state.result += ':' + this.state.buf;
+ this.state.buf = '';
+ return this.next(this.parseTimeSec);
+ } else {
+ throw this.error(new TomlError('Incomplete datetime'));
+ }
+ }
+ }, {
+ key: "parseTimeSec",
+ value: function parseTimeSec() {
+ if (isDigit(this.char)) {
+ this.consume();
+
+ if (this.state.buf.length === 2) {
+ this.state.result += ':' + this.state.buf;
+ this.state.buf = '';
+ return this.next(this.parseTimeZoneOrFraction);
+ }
+ } else {
+ throw this.error(new TomlError('Incomplete datetime'));
+ }
+ }
+ }, {
+ key: "parseOnlyTimeHour",
+ value: function parseOnlyTimeHour() {
+ /* istanbul ignore else */
+ if (this.char === CHAR_COLON) {
+ if (this.state.buf.length < 2) {
+ throw this.error(new TomlError('Hours less than 10 must be zero padded to two characters'));
+ }
+
+ this.state.result = this.state.buf;
+ this.state.buf = '';
+ return this.next(this.parseOnlyTimeMin);
+ } else {
+ throw this.error(new TomlError('Incomplete time'));
+ }
+ }
+ }, {
+ key: "parseOnlyTimeMin",
+ value: function parseOnlyTimeMin() {
+ if (this.state.buf.length < 2 && isDigit(this.char)) {
+ this.consume();
+ } else if (this.state.buf.length === 2 && this.char === CHAR_COLON) {
+ this.state.result += ':' + this.state.buf;
+ this.state.buf = '';
+ return this.next(this.parseOnlyTimeSec);
+ } else {
+ throw this.error(new TomlError('Incomplete time'));
+ }
+ }
+ }, {
+ key: "parseOnlyTimeSec",
+ value: function parseOnlyTimeSec() {
+ if (isDigit(this.char)) {
+ this.consume();
+
+ if (this.state.buf.length === 2) {
+ return this.next(this.parseOnlyTimeFractionMaybe);
+ }
+ } else {
+ throw this.error(new TomlError('Incomplete time'));
+ }
+ }
+ }, {
+ key: "parseOnlyTimeFractionMaybe",
+ value: function parseOnlyTimeFractionMaybe() {
+ this.state.result += ':' + this.state.buf;
+
+ if (this.char === CHAR_PERIOD) {
+ this.state.buf = '';
+ this.next(this.parseOnlyTimeFraction);
+ } else {
+ return this.return(createTime(this.state.result));
+ }
+ }
+ }, {
+ key: "parseOnlyTimeFraction",
+ value: function parseOnlyTimeFraction() {
+ if (isDigit(this.char)) {
+ this.consume();
+ } else if (this.atEndOfWord()) {
+ if (this.state.buf.length === 0) throw this.error(new TomlError('Expected digit in milliseconds'));
+ return this.returnNow(createTime(this.state.result + '.' + this.state.buf));
+ } else {
+ throw this.error(new TomlError('Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z'));
+ }
+ }
+ }, {
+ key: "parseTimeZoneOrFraction",
+ value: function parseTimeZoneOrFraction() {
+ if (this.char === CHAR_PERIOD) {
+ this.consume();
+ this.next(this.parseDateTimeFraction);
+ } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {
+ this.consume();
+ this.next(this.parseTimeZoneHour);
+ } else if (this.char === CHAR_Z) {
+ this.consume();
+ return this.return(createDatetime(this.state.result + this.state.buf));
+ } else if (this.atEndOfWord()) {
+ return this.returnNow(createDatetimeFloat(this.state.result + this.state.buf));
+ } else {
+ throw this.error(new TomlError('Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z'));
+ }
+ }
+ }, {
+ key: "parseDateTimeFraction",
+ value: function parseDateTimeFraction() {
+ if (isDigit(this.char)) {
+ this.consume();
+ } else if (this.state.buf.length === 1) {
+ throw this.error(new TomlError('Expected digit in milliseconds'));
+ } else if (this.char === CHAR_HYPHEN || this.char === CHAR_PLUS) {
+ this.consume();
+ this.next(this.parseTimeZoneHour);
+ } else if (this.char === CHAR_Z) {
+ this.consume();
+ return this.return(createDatetime(this.state.result + this.state.buf));
+ } else if (this.atEndOfWord()) {
+ return this.returnNow(createDatetimeFloat(this.state.result + this.state.buf));
+ } else {
+ throw this.error(new TomlError('Unexpected character in datetime, expected period (.), minus (-), plus (+) or Z'));
+ }
+ }
+ }, {
+ key: "parseTimeZoneHour",
+ value: function parseTimeZoneHour() {
+ if (isDigit(this.char)) {
+ this.consume(); // FIXME: No more regexps
+
+ if (/\d\d$/.test(this.state.buf)) return this.next(this.parseTimeZoneSep);
+ } else {
+ throw this.error(new TomlError('Unexpected character in datetime, expected digit'));
+ }
+ }
+ }, {
+ key: "parseTimeZoneSep",
+ value: function parseTimeZoneSep() {
+ if (this.char === CHAR_COLON) {
+ this.consume();
+ this.next(this.parseTimeZoneMin);
+ } else {
+ throw this.error(new TomlError('Unexpected character in datetime, expected colon'));
+ }
+ }
+ }, {
+ key: "parseTimeZoneMin",
+ value: function parseTimeZoneMin() {
+ if (isDigit(this.char)) {
+ this.consume();
+ if (/\d\d$/.test(this.state.buf)) return this.return(createDatetime(this.state.result + this.state.buf));
+ } else {
+ throw this.error(new TomlError('Unexpected character in datetime, expected digit'));
+ }
+ }
+ /* BOOLEAN */
+
+ }, {
+ key: "parseBoolean",
+ value: function parseBoolean() {
+ /* istanbul ignore else */
+ if (this.char === CHAR_t) {
+ this.consume();
+ return this.next(this.parseTrue_r);
+ } else if (this.char === CHAR_f) {
+ this.consume();
+ return this.next(this.parseFalse_a);
+ }
+ }
+ }, {
+ key: "parseTrue_r",
+ value: function parseTrue_r() {
+ if (this.char === CHAR_r) {
+ this.consume();
+ return this.next(this.parseTrue_u);
+ } else {
+ throw this.error(new TomlError('Invalid boolean, expected true or false'));
+ }
+ }
+ }, {
+ key: "parseTrue_u",
+ value: function parseTrue_u() {
+ if (this.char === CHAR_u) {
+ this.consume();
+ return this.next(this.parseTrue_e);
+ } else {
+ throw this.error(new TomlError('Invalid boolean, expected true or false'));
+ }
+ }
+ }, {
+ key: "parseTrue_e",
+ value: function parseTrue_e() {
+ if (this.char === CHAR_e) {
+ return this.return(true);
+ } else {
+ throw this.error(new TomlError('Invalid boolean, expected true or false'));
+ }
+ }
+ }, {
+ key: "parseFalse_a",
+ value: function parseFalse_a() {
+ if (this.char === CHAR_a) {
+ this.consume();
+ return this.next(this.parseFalse_l);
+ } else {
+ throw this.error(new TomlError('Invalid boolean, expected true or false'));
+ }
+ }
+ }, {
+ key: "parseFalse_l",
+ value: function parseFalse_l() {
+ if (this.char === CHAR_l) {
+ this.consume();
+ return this.next(this.parseFalse_s);
+ } else {
+ throw this.error(new TomlError('Invalid boolean, expected true or false'));
+ }
+ }
+ }, {
+ key: "parseFalse_s",
+ value: function parseFalse_s() {
+ if (this.char === CHAR_s) {
+ this.consume();
+ return this.next(this.parseFalse_e);
+ } else {
+ throw this.error(new TomlError('Invalid boolean, expected true or false'));
+ }
+ }
+ }, {
+ key: "parseFalse_e",
+ value: function parseFalse_e() {
+ if (this.char === CHAR_e) {
+ return this.return(false);
+ } else {
+ throw this.error(new TomlError('Invalid boolean, expected true or false'));
+ }
+ }
+ /* INLINE LISTS */
+
+ }, {
+ key: "parseInlineList",
+ value: function parseInlineList() {
+ if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M || this.char === CTRL_J) {
+ return null;
+ } else if (this.char === Parser.END) {
+ throw this.error(new TomlError('Unterminated inline array'));
+ } else if (this.char === CHAR_NUM) {
+ return this.call(this.parseComment);
+ } else if (this.char === CHAR_RSQB) {
+ return this.return(this.state.resultArr || InlineList());
+ } else {
+ return this.callNow(this.parseValue, this.recordInlineListValue);
+ }
+ }
+ }, {
+ key: "recordInlineListValue",
+ value: function recordInlineListValue(value) {
+ if (this.state.resultArr) {
+ var listType = this.state.resultArr[_contentType];
+ var valueType = tomlType(value);
+
+ if (listType !== valueType) {
+ throw this.error(new TomlError(`Inline lists must be a single type, not a mix of ${listType} and ${valueType}`));
+ }
+ } else {
+ this.state.resultArr = InlineList(tomlType(value));
+ }
+
+ if (isFloat(value) || isInteger(value)) {
+ // unbox now that we've verified they're ok
+ this.state.resultArr.push(value.valueOf());
+ } else {
+ this.state.resultArr.push(value);
+ }
+
+ return this.goto(this.parseInlineListNext);
+ }
+ }, {
+ key: "parseInlineListNext",
+ value: function parseInlineListNext() {
+ if (this.char === CHAR_SP || this.char === CTRL_I || this.char === CTRL_M || this.char === CTRL_J) {
+ return null;
+ } else if (this.char === CHAR_NUM) {
+ return this.call(this.parseComment);
+ } else if (this.char === CHAR_COMMA) {
+ return this.next(this.parseInlineList);
+ } else if (this.char === CHAR_RSQB) {
+ return this.goto(this.parseInlineList);
+ } else {
+ throw this.error(new TomlError('Invalid character, expected whitespace, comma (,) or close bracket (])'));
+ }
+ }
+ /* INLINE TABLE */
+
+ }, {
+ key: "parseInlineTable",
+ value: function parseInlineTable() {
+ if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return null;
+ } else if (this.char === Parser.END || this.char === CHAR_NUM || this.char === CTRL_J || this.char === CTRL_M) {
+ throw this.error(new TomlError('Unterminated inline array'));
+ } else if (this.char === CHAR_RCUB) {
+ return this.return(this.state.resultTable || InlineTable());
+ } else {
+ if (!this.state.resultTable) this.state.resultTable = InlineTable();
+ return this.callNow(this.parseAssign, this.recordInlineTableValue);
+ }
+ }
+ }, {
+ key: "recordInlineTableValue",
+ value: function recordInlineTableValue(kv) {
+ var target = this.state.resultTable;
+ var finalKey = kv.key.pop();
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = kv.key[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var kw = _step2.value;
+
+ if (hasKey(target, kw) && (!isTable(target[kw]) || target[kw][_declared])) {
+ throw this.error(new TomlError("Can't redefine existing key"));
+ }
+
+ target = target[kw] = target[kw] || Table();
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ if (hasKey(target, finalKey)) {
+ throw this.error(new TomlError("Can't redefine existing key"));
+ }
+
+ if (isInteger(kv.value) || isFloat(kv.value)) {
+ target[finalKey] = kv.value.valueOf();
+ } else {
+ target[finalKey] = kv.value;
+ }
+
+ return this.goto(this.parseInlineTableNext);
+ }
+ }, {
+ key: "parseInlineTableNext",
+ value: function parseInlineTableNext() {
+ if (this.char === CHAR_SP || this.char === CTRL_I) {
+ return null;
+ } else if (this.char === Parser.END || this.char === CHAR_NUM || this.char === CTRL_J || this.char === CTRL_M) {
+ throw this.error(new TomlError('Unterminated inline array'));
+ } else if (this.char === CHAR_COMMA) {
+ return this.next(this.parseInlineTable);
+ } else if (this.char === CHAR_RCUB) {
+ return this.goto(this.parseInlineTable);
+ } else {
+ throw this.error(new TomlError('Invalid character, expected whitespace, comma (,) or close bracket (])'));
+ }
+ }
+ }]);
+
+ return TOMLParser;
+ }(Parser);
+
+ return TOMLParser;
+}
+tomlParser.makeParserClass = makeParserClass_1;
+tomlParser.TomlError = TomlError_1;
+
+var parsePrettyError = prettyError;
+
+function prettyError(err, buf) {
+ /* istanbul ignore if */
+ if (err.pos == null || err.line == null) return err;
+ var msg = err.message;
+ msg += ` at row ${err.line + 1}, col ${err.col + 1}, pos ${err.pos}:\n`;
+ /* istanbul ignore else */
+
+ if (buf && buf.split) {
+ var lines = buf.split(/\n/);
+ var lineNumWidth = String(Math.min(lines.length, err.line + 3)).length;
+ var linePadding = ' ';
+
+ while (linePadding.length < lineNumWidth) {
+ linePadding += ' ';
+ }
+
+ for (var ii = Math.max(0, err.line - 1); ii < Math.min(lines.length, err.line + 2); ++ii) {
+ var lineNum = String(ii + 1);
+ if (lineNum.length < lineNumWidth) lineNum = ' ' + lineNum;
+
+ if (err.line === ii) {
+ msg += lineNum + '> ' + lines[ii] + '\n';
+ msg += linePadding + ' ';
+
+ for (var hh = 0; hh < err.col; ++hh) {
+ msg += ' ';
+ }
+
+ msg += '^\n';
+ } else {
+ msg += lineNum + ': ' + lines[ii] + '\n';
+ }
+ }
+ }
+
+ err.message = msg + '\n';
+ return err;
+}
+
+var parseString_1 = parseString;
+
+function parseString(str) {
+ if (global.Buffer && global.Buffer.isBuffer(str)) {
+ str = str.toString('utf8');
+ }
+
+ var parser = new tomlParser();
+
+ try {
+ parser.parse(str);
+ return parser.finish();
+ } catch (err) {
+ throw parsePrettyError(err, str);
+ }
+}
+
+var loadToml = function loadToml(filePath, content) {
+ try {
+ return parseString_1(content);
+ } catch (error) {
+ error.message = `TOML Error in ${filePath}:\n${error.message}`;
+ throw error;
+ }
+};
+
+var getExplorerMemoized = mem_1(function (opts) {
+ var explorer = thirdParty.cosmiconfig("prettier", {
+ cache: opts.cache,
+ transform: function transform(result) {
+ if (result && result.config) {
+ if (typeof result.config === "string") {
+ var modulePath = resolve.sync(result.config, {
+ basedir: path$2.dirname(result.filepath)
+ });
+ result.config = require(modulePath);
+ }
+
+ if (typeof result.config !== "object") {
+ throw new Error(`Config is only allowed to be an object, ` + `but received ${typeof result.config} in "${result.filepath}"`);
+ }
+
+ delete result.config.$schema;
+ }
+
+ return result;
+ },
+ searchPlaces: ["package.json", ".prettierrc", ".prettierrc.json", ".prettierrc.yaml", ".prettierrc.yml", ".prettierrc.js", "prettier.config.js", ".prettierrc.toml"],
+ loaders: {
+ ".toml": loadToml
+ }
+ });
+
+ var _load = opts.sync ? explorer.loadSync : explorer.load;
+
+ var search = opts.sync ? explorer.searchSync : explorer.search;
+ return {
+ // cosmiconfig v4 interface
+ load: function load(searchPath, configPath) {
+ return configPath ? _load(configPath) : search(searchPath);
+ }
+ };
+});
+/** @param {{ cache: boolean, sync: boolean }} opts */
+
+function getLoadFunction$1(opts) {
+ // Normalize opts before passing to a memoized function
+ opts = Object.assign({
+ sync: false,
+ cache: false
+ }, opts);
+ return getExplorerMemoized(opts).load;
+}
+
+function _resolveConfig(filePath, opts, sync) {
+ opts = Object.assign({
+ useCache: true
+ }, opts);
+ var loadOpts = {
+ cache: !!opts.useCache,
+ sync: !!sync,
+ editorconfig: !!opts.editorconfig
+ };
+ var load = getLoadFunction$1(loadOpts);
+ var loadEditorConfig = resolveConfigEditorconfig.getLoadFunction(loadOpts);
+ var arr = [load, loadEditorConfig].map(function (l) {
+ return l(filePath, opts.config);
+ });
+
+ var unwrapAndMerge = function unwrapAndMerge(arr) {
+ var result = arr[0];
+ var editorConfigured = arr[1];
+ var merged = Object.assign({}, editorConfigured, mergeOverrides(Object.assign({}, result), filePath));
+ ["plugins", "pluginSearchDirs"].forEach(function (optionName) {
+ if (Array.isArray(merged[optionName])) {
+ merged[optionName] = merged[optionName].map(function (value) {
+ return typeof value === "string" && value.startsWith(".") // relative path
+ ? path$2.resolve(path$2.dirname(result.filepath), value) : value;
+ });
+ }
+ });
+
+ if (!result && !editorConfigured) {
+ return null;
+ }
+
+ return merged;
+ };
+
+ if (loadOpts.sync) {
+ return unwrapAndMerge(arr);
+ }
+
+ return Promise.all(arr).then(unwrapAndMerge);
+}
+
+var resolveConfig = function resolveConfig(filePath, opts) {
+ return _resolveConfig(filePath, opts, false);
+};
+
+resolveConfig.sync = function (filePath, opts) {
+ return _resolveConfig(filePath, opts, true);
+};
+
+function clearCache$1() {
+ mem_1.clear(getExplorerMemoized);
+ resolveConfigEditorconfig.clearCache();
+}
+
+function resolveConfigFile(filePath) {
+ var load = getLoadFunction$1({
+ sync: false
+ });
+ return load(filePath).then(function (result) {
+ return result ? result.filepath : null;
+ });
+}
+
+resolveConfigFile.sync = function (filePath) {
+ var load = getLoadFunction$1({
+ sync: true
+ });
+ var result = load(filePath);
+ return result ? result.filepath : null;
+};
+
+function mergeOverrides(configResult, filePath) {
+ var options = Object.assign({}, configResult.config);
+
+ if (filePath && options.overrides) {
+ var relativeFilePath = path$2.relative(path$2.dirname(configResult.filepath), filePath);
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = options.overrides[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var override = _step.value;
+
+ if (pathMatchesGlobs(relativeFilePath, override.files, override.excludeFiles)) {
+ Object.assign(options, override.options);
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+ }
+
+ delete options.overrides;
+ return options;
+} // Based on eslint: https://github.com/eslint/eslint/blob/master/lib/config/config-ops.js
+
+
+function pathMatchesGlobs(filePath, patterns, excludedPatterns) {
+ var patternList = [].concat(patterns);
+ var excludedPatternList = [].concat(excludedPatterns || []);
+ var opts = {
+ matchBase: true,
+ dot: true
+ };
+ return patternList.some(function (pattern) {
+ return minimatch_1(filePath, pattern, opts);
+ }) && !excludedPatternList.some(function (excludedPattern) {
+ return minimatch_1(filePath, excludedPattern, opts);
+ });
+}
+
+var resolveConfig_1 = {
+ resolveConfig,
+ resolveConfigFile,
+ clearCache: clearCache$1
+};
+
+/**
+ * @typedef {{ ignorePath?: string, withNodeModules?: boolean, plugins: object }} FileInfoOptions
+ * @typedef {{ ignored: boolean, inferredParser: string | null }} FileInfoResult
+ */
+
+/**
+ * @param {string} filePath
+ * @param {FileInfoOptions} opts
+ * @returns {Promise<FileInfoResult>}
+ *
+ * Please note that prettier.getFileInfo() expects opts.plugins to be an array of paths,
+ * not an object. A transformation from this array to an object is automatically done
+ * internally by the method wrapper. See withPlugins() in index.js.
+ */
+
+
+function getFileInfo(filePath, opts) {
+ if (typeof filePath !== "string") {
+ return Promise.reject(new TypeError(`expect \`filePath\` to be a string, got \`${typeof filePath}\``));
+ }
+
+ return createIgnorer_1(opts.ignorePath, opts.withNodeModules).then(function (ignorer) {
+ return _getFileInfo({
+ ignorer,
+ filePath: normalizeFilePath(filePath, opts.ignorePath),
+ plugins: opts.plugins,
+ resolveConfig: opts.resolveConfig,
+ sync: false
+ });
+ });
+}
+/**
+ * @param {string} filePath
+ * @param {FileInfoOptions} opts
+ * @returns {FileInfoResult}
+ */
+
+
+getFileInfo.sync = function (filePath, opts) {
+ if (typeof filePath !== "string") {
+ throw new TypeError(`expect \`filePath\` to be a string, got \`${typeof filePath}\``);
+ }
+
+ var ignorer = createIgnorer_1.sync(opts.ignorePath, opts.withNodeModules);
+ return _getFileInfo({
+ ignorer,
+ filePath: normalizeFilePath(filePath, opts.ignorePath),
+ plugins: opts.plugins,
+ resolveConfig: opts.resolveConfig,
+ sync: true
+ });
+};
+
+function _getFileInfo(_ref) {
+ var ignorer = _ref.ignorer,
+ filePath = _ref.filePath,
+ plugins = _ref.plugins,
+ _ref$resolveConfig = _ref.resolveConfig,
+ resolveConfig = _ref$resolveConfig === void 0 ? false : _ref$resolveConfig,
+ _ref$sync = _ref.sync,
+ sync = _ref$sync === void 0 ? false : _ref$sync;
+ var fileInfo = {
+ ignored: ignorer.ignores(filePath),
+ inferredParser: options$1.inferParser(filePath, plugins) || null
+ };
+
+ if (!fileInfo.inferredParser && resolveConfig) {
+ if (!sync) {
+ return resolveConfig_1.resolveConfig(filePath).then(function (resolvedConfig) {
+ if (resolvedConfig && resolvedConfig.parser) {
+ fileInfo.inferredParser = resolvedConfig.parser;
+ }
+
+ return fileInfo;
+ });
+ }
+
+ var resolvedConfig = resolveConfig_1.resolveConfig.sync(filePath);
+
+ if (resolvedConfig && resolvedConfig.parser) {
+ fileInfo.inferredParser = resolvedConfig.parser;
+ }
+ }
+
+ return fileInfo;
+}
+
+function normalizeFilePath(filePath, ignorePath) {
+ return ignorePath ? path$2.relative(path$2.dirname(ignorePath), filePath) : filePath;
+}
+
+var getFileInfo_1 = getFileInfo;
+
+var lodash_uniqby = createCommonjsModule(function (module, exports) {
+ /**
+ * lodash (Custom Build) <https://lodash.com/>
+ * Build: `lodash modularize exports="npm" -o ./`
+ * Copyright jQuery Foundation and other contributors <https://jquery.org/>
+ * Released under MIT license <https://lodash.com/license>
+ * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
+ * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+ */
+
+ /** Used as the size to enable large array optimizations. */
+ var LARGE_ARRAY_SIZE = 200;
+ /** Used as the `TypeError` message for "Functions" methods. */
+
+ var FUNC_ERROR_TEXT = 'Expected a function';
+ /** Used to stand-in for `undefined` hash values. */
+
+ var HASH_UNDEFINED = '__lodash_hash_undefined__';
+ /** Used to compose bitmasks for comparison styles. */
+
+ var UNORDERED_COMPARE_FLAG = 1,
+ PARTIAL_COMPARE_FLAG = 2;
+ /** Used as references for various `Number` constants. */
+
+ var INFINITY = 1 / 0,
+ MAX_SAFE_INTEGER = 9007199254740991;
+ /** `Object#toString` result references. */
+
+ var argsTag = '[object Arguments]',
+ arrayTag = '[object Array]',
+ boolTag = '[object Boolean]',
+ dateTag = '[object Date]',
+ errorTag = '[object Error]',
+ funcTag = '[object Function]',
+ genTag = '[object GeneratorFunction]',
+ mapTag = '[object Map]',
+ numberTag = '[object Number]',
+ objectTag = '[object Object]',
+ promiseTag = '[object Promise]',
+ regexpTag = '[object RegExp]',
+ setTag = '[object Set]',
+ stringTag = '[object String]',
+ symbolTag = '[object Symbol]',
+ weakMapTag = '[object WeakMap]';
+ var arrayBufferTag = '[object ArrayBuffer]',
+ dataViewTag = '[object DataView]',
+ float32Tag = '[object Float32Array]',
+ float64Tag = '[object Float64Array]',
+ int8Tag = '[object Int8Array]',
+ int16Tag = '[object Int16Array]',
+ int32Tag = '[object Int32Array]',
+ uint8Tag = '[object Uint8Array]',
+ uint8ClampedTag = '[object Uint8ClampedArray]',
+ uint16Tag = '[object Uint16Array]',
+ uint32Tag = '[object Uint32Array]';
+ /** Used to match property names within property paths. */
+
+ var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,
+ reIsPlainProp = /^\w*$/,
+ reLeadingDot = /^\./,
+ rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g;
+ /**
+ * Used to match `RegExp`
+ * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).
+ */
+
+ var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
+ /** Used to match backslashes in property paths. */
+
+ var reEscapeChar = /\\(\\)?/g;
+ /** Used to detect host constructors (Safari). */
+
+ var reIsHostCtor = /^\[object .+?Constructor\]$/;
+ /** Used to detect unsigned integer values. */
+
+ var reIsUint = /^(?:0|[1-9]\d*)$/;
+ /** Used to identify `toStringTag` values of typed arrays. */
+
+ var typedArrayTags = {};
+ typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
+ typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
+ /** Detect free variable `global` from Node.js. */
+
+ var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
+ /** Detect free variable `self`. */
+
+ var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
+ /** Used as a reference to the global object. */
+
+ var root = freeGlobal || freeSelf || Function('return this')();
+ /** Detect free variable `exports`. */
+
+ var freeExports = exports && !exports.nodeType && exports;
+ /** Detect free variable `module`. */
+
+ var freeModule = freeExports && 'object' == 'object' && module && !module.nodeType && module;
+ /** Detect the popular CommonJS extension `module.exports`. */
+
+ var moduleExports = freeModule && freeModule.exports === freeExports;
+ /** Detect free variable `process` from Node.js. */
+
+ var freeProcess = moduleExports && freeGlobal.process;
+ /** Used to access faster Node.js helpers. */
+
+ var nodeUtil = function () {
+ try {
+ return freeProcess && freeProcess.binding('util');
+ } catch (e) {}
+ }();
+ /* Node.js helper references. */
+
+
+ var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
+ /**
+ * A specialized version of `_.includes` for arrays without support for
+ * specifying an index to search from.
+ *
+ * @private
+ * @param {Array} [array] The array to inspect.
+ * @param {*} target The value to search for.
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
+ */
+
+ function arrayIncludes(array, value) {
+ var length = array ? array.length : 0;
+ return !!length && baseIndexOf(array, value, 0) > -1;
+ }
+ /**
+ * This function is like `arrayIncludes` except that it accepts a comparator.
+ *
+ * @private
+ * @param {Array} [array] The array to inspect.
+ * @param {*} target The value to search for.
+ * @param {Function} comparator The comparator invoked per element.
+ * @returns {boolean} Returns `true` if `target` is found, else `false`.
+ */
+
+
+ function arrayIncludesWith(array, value, comparator) {
+ var index = -1,
+ length = array ? array.length : 0;
+
+ while (++index < length) {
+ if (comparator(value, array[index])) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+ /**
+ * A specialized version of `_.some` for arrays without support for iteratee
+ * shorthands.
+ *
+ * @private
+ * @param {Array} [array] The array to iterate over.
+ * @param {Function} predicate The function invoked per iteration.
+ * @returns {boolean} Returns `true` if any element passes the predicate check,
+ * else `false`.
+ */
+
+
+ function arraySome(array, predicate) {
+ var index = -1,
+ length = array ? array.length : 0;
+
+ while (++index < length) {
+ if (predicate(array[index], index, array)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+ /**
+ * The base implementation of `_.findIndex` and `_.findLastIndex` without
+ * support for iteratee shorthands.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {Function} predicate The function invoked per iteration.
+ * @param {number} fromIndex The index to search from.
+ * @param {boolean} [fromRight] Specify iterating from right to left.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+
+
+ function baseFindIndex(array, predicate, fromIndex, fromRight) {
+ var length = array.length,
+ index = fromIndex + (fromRight ? 1 : -1);
+
+ while (fromRight ? index-- : ++index < length) {
+ if (predicate(array[index], index, array)) {
+ return index;
+ }
+ }
+
+ return -1;
+ }
+ /**
+ * The base implementation of `_.indexOf` without `fromIndex` bounds checks.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {*} value The value to search for.
+ * @param {number} fromIndex The index to search from.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+
+
+ function baseIndexOf(array, value, fromIndex) {
+ if (value !== value) {
+ return baseFindIndex(array, baseIsNaN, fromIndex);
+ }
+
+ var index = fromIndex - 1,
+ length = array.length;
+
+ while (++index < length) {
+ if (array[index] === value) {
+ return index;
+ }
+ }
+
+ return -1;
+ }
+ /**
+ * The base implementation of `_.isNaN` without support for number objects.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.
+ */
+
+
+ function baseIsNaN(value) {
+ return value !== value;
+ }
+ /**
+ * The base implementation of `_.property` without support for deep paths.
+ *
+ * @private
+ * @param {string} key The key of the property to get.
+ * @returns {Function} Returns the new accessor function.
+ */
+
+
+ function baseProperty(key) {
+ return function (object) {
+ return object == null ? undefined : object[key];
+ };
+ }
+ /**
+ * The base implementation of `_.times` without support for iteratee shorthands
+ * or max array length checks.
+ *
+ * @private
+ * @param {number} n The number of times to invoke `iteratee`.
+ * @param {Function} iteratee The function invoked per iteration.
+ * @returns {Array} Returns the array of results.
+ */
+
+
+ function baseTimes(n, iteratee) {
+ var index = -1,
+ result = Array(n);
+
+ while (++index < n) {
+ result[index] = iteratee(index);
+ }
+
+ return result;
+ }
+ /**
+ * The base implementation of `_.unary` without support for storing metadata.
+ *
+ * @private
+ * @param {Function} func The function to cap arguments for.
+ * @returns {Function} Returns the new capped function.
+ */
+
+
+ function baseUnary(func) {
+ return function (value) {
+ return func(value);
+ };
+ }
+ /**
+ * Checks if a cache value for `key` exists.
+ *
+ * @private
+ * @param {Object} cache The cache to query.
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+
+
+ function cacheHas(cache, key) {
+ return cache.has(key);
+ }
+ /**
+ * Gets the value at `key` of `object`.
+ *
+ * @private
+ * @param {Object} [object] The object to query.
+ * @param {string} key The key of the property to get.
+ * @returns {*} Returns the property value.
+ */
+
+
+ function getValue(object, key) {
+ return object == null ? undefined : object[key];
+ }
+ /**
+ * Checks if `value` is a host object in IE < 9.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a host object, else `false`.
+ */
+
+
+ function isHostObject(value) {
+ // Many host objects are `Object` objects that can coerce to strings
+ // despite having improperly defined `toString` methods.
+ var result = false;
+
+ if (value != null && typeof value.toString != 'function') {
+ try {
+ result = !!(value + '');
+ } catch (e) {}
+ }
+
+ return result;
+ }
+ /**
+ * Converts `map` to its key-value pairs.
+ *
+ * @private
+ * @param {Object} map The map to convert.
+ * @returns {Array} Returns the key-value pairs.
+ */
+
+
+ function mapToArray(map) {
+ var index = -1,
+ result = Array(map.size);
+ map.forEach(function (value, key) {
+ result[++index] = [key, value];
+ });
+ return result;
+ }
+ /**
+ * Creates a unary function that invokes `func` with its argument transformed.
+ *
+ * @private
+ * @param {Function} func The function to wrap.
+ * @param {Function} transform The argument transform.
+ * @returns {Function} Returns the new function.
+ */
+
+
+ function overArg(func, transform) {
+ return function (arg) {
+ return func(transform(arg));
+ };
+ }
+ /**
+ * Converts `set` to an array of its values.
+ *
+ * @private
+ * @param {Object} set The set to convert.
+ * @returns {Array} Returns the values.
+ */
+
+
+ function setToArray(set) {
+ var index = -1,
+ result = Array(set.size);
+ set.forEach(function (value) {
+ result[++index] = value;
+ });
+ return result;
+ }
+ /** Used for built-in method references. */
+
+
+ var arrayProto = Array.prototype,
+ funcProto = Function.prototype,
+ objectProto = Object.prototype;
+ /** Used to detect overreaching core-js shims. */
+
+ var coreJsData = root['__core-js_shared__'];
+ /** Used to detect methods masquerading as native. */
+
+ var maskSrcKey = function () {
+ var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');
+ return uid ? 'Symbol(src)_1.' + uid : '';
+ }();
+ /** Used to resolve the decompiled source of functions. */
+
+
+ var funcToString = funcProto.toString;
+ /** Used to check objects for own properties. */
+
+ var hasOwnProperty = objectProto.hasOwnProperty;
+ /**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+
+ var objectToString = objectProto.toString;
+ /** Used to detect if a method is native. */
+
+ var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$');
+ /** Built-in value references. */
+
+ var Symbol = root.Symbol,
+ Uint8Array = root.Uint8Array,
+ propertyIsEnumerable = objectProto.propertyIsEnumerable,
+ splice = arrayProto.splice;
+ /* Built-in method references for those with the same name as other `lodash` methods. */
+
+ var nativeKeys = overArg(Object.keys, Object);
+ /* Built-in method references that are verified to be native. */
+
+ var DataView = getNative(root, 'DataView'),
+ Map = getNative(root, 'Map'),
+ Promise = getNative(root, 'Promise'),
+ Set = getNative(root, 'Set'),
+ WeakMap = getNative(root, 'WeakMap'),
+ nativeCreate = getNative(Object, 'create');
+ /** Used to detect maps, sets, and weakmaps. */
+
+ var dataViewCtorString = toSource(DataView),
+ mapCtorString = toSource(Map),
+ promiseCtorString = toSource(Promise),
+ setCtorString = toSource(Set),
+ weakMapCtorString = toSource(WeakMap);
+ /** Used to convert symbols to primitives and strings. */
+
+ var symbolProto = Symbol ? Symbol.prototype : undefined,
+ symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,
+ symbolToString = symbolProto ? symbolProto.toString : undefined;
+ /**
+ * Creates a hash object.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+
+ function Hash(entries) {
+ var index = -1,
+ length = entries ? entries.length : 0;
+ this.clear();
+
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ /**
+ * Removes all key-value entries from the hash.
+ *
+ * @private
+ * @name clear
+ * @memberOf Hash
+ */
+
+
+ function hashClear() {
+ this.__data__ = nativeCreate ? nativeCreate(null) : {};
+ }
+ /**
+ * Removes `key` and its value from the hash.
+ *
+ * @private
+ * @name delete
+ * @memberOf Hash
+ * @param {Object} hash The hash to modify.
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+
+
+ function hashDelete(key) {
+ return this.has(key) && delete this.__data__[key];
+ }
+ /**
+ * Gets the hash value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf Hash
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+
+
+ function hashGet(key) {
+ var data = this.__data__;
+
+ if (nativeCreate) {
+ var result = data[key];
+ return result === HASH_UNDEFINED ? undefined : result;
+ }
+
+ return hasOwnProperty.call(data, key) ? data[key] : undefined;
+ }
+ /**
+ * Checks if a hash value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf Hash
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+
+
+ function hashHas(key) {
+ var data = this.__data__;
+ return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);
+ }
+ /**
+ * Sets the hash `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf Hash
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the hash instance.
+ */
+
+
+ function hashSet(key, value) {
+ var data = this.__data__;
+ data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;
+ return this;
+ } // Add methods to `Hash`.
+
+
+ Hash.prototype.clear = hashClear;
+ Hash.prototype['delete'] = hashDelete;
+ Hash.prototype.get = hashGet;
+ Hash.prototype.has = hashHas;
+ Hash.prototype.set = hashSet;
+ /**
+ * Creates an list cache object.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+
+ function ListCache(entries) {
+ var index = -1,
+ length = entries ? entries.length : 0;
+ this.clear();
+
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ /**
+ * Removes all key-value entries from the list cache.
+ *
+ * @private
+ * @name clear
+ * @memberOf ListCache
+ */
+
+
+ function listCacheClear() {
+ this.__data__ = [];
+ }
+ /**
+ * Removes `key` and its value from the list cache.
+ *
+ * @private
+ * @name delete
+ * @memberOf ListCache
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+
+
+ function listCacheDelete(key) {
+ var data = this.__data__,
+ index = assocIndexOf(data, key);
+
+ if (index < 0) {
+ return false;
+ }
+
+ var lastIndex = data.length - 1;
+
+ if (index == lastIndex) {
+ data.pop();
+ } else {
+ splice.call(data, index, 1);
+ }
+
+ return true;
+ }
+ /**
+ * Gets the list cache value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf ListCache
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+
+
+ function listCacheGet(key) {
+ var data = this.__data__,
+ index = assocIndexOf(data, key);
+ return index < 0 ? undefined : data[index][1];
+ }
+ /**
+ * Checks if a list cache value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf ListCache
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+
+
+ function listCacheHas(key) {
+ return assocIndexOf(this.__data__, key) > -1;
+ }
+ /**
+ * Sets the list cache `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf ListCache
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the list cache instance.
+ */
+
+
+ function listCacheSet(key, value) {
+ var data = this.__data__,
+ index = assocIndexOf(data, key);
+
+ if (index < 0) {
+ data.push([key, value]);
+ } else {
+ data[index][1] = value;
+ }
+
+ return this;
+ } // Add methods to `ListCache`.
+
+
+ ListCache.prototype.clear = listCacheClear;
+ ListCache.prototype['delete'] = listCacheDelete;
+ ListCache.prototype.get = listCacheGet;
+ ListCache.prototype.has = listCacheHas;
+ ListCache.prototype.set = listCacheSet;
+ /**
+ * Creates a map cache object to store key-value pairs.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+
+ function MapCache(entries) {
+ var index = -1,
+ length = entries ? entries.length : 0;
+ this.clear();
+
+ while (++index < length) {
+ var entry = entries[index];
+ this.set(entry[0], entry[1]);
+ }
+ }
+ /**
+ * Removes all key-value entries from the map.
+ *
+ * @private
+ * @name clear
+ * @memberOf MapCache
+ */
+
+
+ function mapCacheClear() {
+ this.__data__ = {
+ 'hash': new Hash(),
+ 'map': new (Map || ListCache)(),
+ 'string': new Hash()
+ };
+ }
+ /**
+ * Removes `key` and its value from the map.
+ *
+ * @private
+ * @name delete
+ * @memberOf MapCache
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+
+
+ function mapCacheDelete(key) {
+ return getMapData(this, key)['delete'](key);
+ }
+ /**
+ * Gets the map value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf MapCache
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+
+
+ function mapCacheGet(key) {
+ return getMapData(this, key).get(key);
+ }
+ /**
+ * Checks if a map value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf MapCache
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+
+
+ function mapCacheHas(key) {
+ return getMapData(this, key).has(key);
+ }
+ /**
+ * Sets the map `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf MapCache
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the map cache instance.
+ */
+
+
+ function mapCacheSet(key, value) {
+ getMapData(this, key).set(key, value);
+ return this;
+ } // Add methods to `MapCache`.
+
+
+ MapCache.prototype.clear = mapCacheClear;
+ MapCache.prototype['delete'] = mapCacheDelete;
+ MapCache.prototype.get = mapCacheGet;
+ MapCache.prototype.has = mapCacheHas;
+ MapCache.prototype.set = mapCacheSet;
+ /**
+ *
+ * Creates an array cache object to store unique values.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [values] The values to cache.
+ */
+
+ function SetCache(values) {
+ var index = -1,
+ length = values ? values.length : 0;
+ this.__data__ = new MapCache();
+
+ while (++index < length) {
+ this.add(values[index]);
+ }
+ }
+ /**
+ * Adds `value` to the array cache.
+ *
+ * @private
+ * @name add
+ * @memberOf SetCache
+ * @alias push
+ * @param {*} value The value to cache.
+ * @returns {Object} Returns the cache instance.
+ */
+
+
+ function setCacheAdd(value) {
+ this.__data__.set(value, HASH_UNDEFINED);
+
+ return this;
+ }
+ /**
+ * Checks if `value` is in the array cache.
+ *
+ * @private
+ * @name has
+ * @memberOf SetCache
+ * @param {*} value The value to search for.
+ * @returns {number} Returns `true` if `value` is found, else `false`.
+ */
+
+
+ function setCacheHas(value) {
+ return this.__data__.has(value);
+ } // Add methods to `SetCache`.
+
+
+ SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;
+ SetCache.prototype.has = setCacheHas;
+ /**
+ * Creates a stack cache object to store key-value pairs.
+ *
+ * @private
+ * @constructor
+ * @param {Array} [entries] The key-value pairs to cache.
+ */
+
+ function Stack(entries) {
+ this.__data__ = new ListCache(entries);
+ }
+ /**
+ * Removes all key-value entries from the stack.
+ *
+ * @private
+ * @name clear
+ * @memberOf Stack
+ */
+
+
+ function stackClear() {
+ this.__data__ = new ListCache();
+ }
+ /**
+ * Removes `key` and its value from the stack.
+ *
+ * @private
+ * @name delete
+ * @memberOf Stack
+ * @param {string} key The key of the value to remove.
+ * @returns {boolean} Returns `true` if the entry was removed, else `false`.
+ */
+
+
+ function stackDelete(key) {
+ return this.__data__['delete'](key);
+ }
+ /**
+ * Gets the stack value for `key`.
+ *
+ * @private
+ * @name get
+ * @memberOf Stack
+ * @param {string} key The key of the value to get.
+ * @returns {*} Returns the entry value.
+ */
+
+
+ function stackGet(key) {
+ return this.__data__.get(key);
+ }
+ /**
+ * Checks if a stack value for `key` exists.
+ *
+ * @private
+ * @name has
+ * @memberOf Stack
+ * @param {string} key The key of the entry to check.
+ * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.
+ */
+
+
+ function stackHas(key) {
+ return this.__data__.has(key);
+ }
+ /**
+ * Sets the stack `key` to `value`.
+ *
+ * @private
+ * @name set
+ * @memberOf Stack
+ * @param {string} key The key of the value to set.
+ * @param {*} value The value to set.
+ * @returns {Object} Returns the stack cache instance.
+ */
+
+
+ function stackSet(key, value) {
+ var cache = this.__data__;
+
+ if (cache instanceof ListCache) {
+ var pairs = cache.__data__;
+
+ if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) {
+ pairs.push([key, value]);
+ return this;
+ }
+
+ cache = this.__data__ = new MapCache(pairs);
+ }
+
+ cache.set(key, value);
+ return this;
+ } // Add methods to `Stack`.
+
+
+ Stack.prototype.clear = stackClear;
+ Stack.prototype['delete'] = stackDelete;
+ Stack.prototype.get = stackGet;
+ Stack.prototype.has = stackHas;
+ Stack.prototype.set = stackSet;
+ /**
+ * Creates an array of the enumerable property names of the array-like `value`.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @param {boolean} inherited Specify returning inherited property names.
+ * @returns {Array} Returns the array of property names.
+ */
+
+ function arrayLikeKeys(value, inherited) {
+ // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
+ // Safari 9 makes `arguments.length` enumerable in strict mode.
+ var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : [];
+ var length = result.length,
+ skipIndexes = !!length;
+
+ for (var key in value) {
+ if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isIndex(key, length)))) {
+ result.push(key);
+ }
+ }
+
+ return result;
+ }
+ /**
+ * Gets the index at which the `key` is found in `array` of key-value pairs.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {*} key The key to search for.
+ * @returns {number} Returns the index of the matched value, else `-1`.
+ */
+
+
+ function assocIndexOf(array, key) {
+ var length = array.length;
+
+ while (length--) {
+ if (eq(array[length][0], key)) {
+ return length;
+ }
+ }
+
+ return -1;
+ }
+ /**
+ * The base implementation of `_.get` without support for default values.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path of the property to get.
+ * @returns {*} Returns the resolved value.
+ */
+
+
+ function baseGet(object, path) {
+ path = isKey(path, object) ? [path] : castPath(path);
+ var index = 0,
+ length = path.length;
+
+ while (object != null && index < length) {
+ object = object[toKey(path[index++])];
+ }
+
+ return index && index == length ? object : undefined;
+ }
+ /**
+ * The base implementation of `getTag`.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @returns {string} Returns the `toStringTag`.
+ */
+
+
+ function baseGetTag(value) {
+ return objectToString.call(value);
+ }
+ /**
+ * The base implementation of `_.hasIn` without support for deep paths.
+ *
+ * @private
+ * @param {Object} [object] The object to query.
+ * @param {Array|string} key The key to check.
+ * @returns {boolean} Returns `true` if `key` exists, else `false`.
+ */
+
+
+ function baseHasIn(object, key) {
+ return object != null && key in Object(object);
+ }
+ /**
+ * The base implementation of `_.isEqual` which supports partial comparisons
+ * and tracks traversed objects.
+ *
+ * @private
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @param {Function} [customizer] The function to customize comparisons.
+ * @param {boolean} [bitmask] The bitmask of comparison flags.
+ * The bitmask may be composed of the following flags:
+ * 1 - Unordered comparison
+ * 2 - Partial comparison
+ * @param {Object} [stack] Tracks traversed `value` and `other` objects.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+ */
+
+
+ function baseIsEqual(value, other, customizer, bitmask, stack) {
+ if (value === other) {
+ return true;
+ }
+
+ if (value == null || other == null || !isObject(value) && !isObjectLike(other)) {
+ return value !== value && other !== other;
+ }
+
+ return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);
+ }
+ /**
+ * A specialized version of `baseIsEqual` for arrays and objects which performs
+ * deep comparisons and tracks traversed objects enabling objects with circular
+ * references to be compared.
+ *
+ * @private
+ * @param {Object} object The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Function} [customizer] The function to customize comparisons.
+ * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`
+ * for more details.
+ * @param {Object} [stack] Tracks traversed `object` and `other` objects.
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+ */
+
+
+ function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {
+ var objIsArr = isArray(object),
+ othIsArr = isArray(other),
+ objTag = arrayTag,
+ othTag = arrayTag;
+
+ if (!objIsArr) {
+ objTag = getTag(object);
+ objTag = objTag == argsTag ? objectTag : objTag;
+ }
+
+ if (!othIsArr) {
+ othTag = getTag(other);
+ othTag = othTag == argsTag ? objectTag : othTag;
+ }
+
+ var objIsObj = objTag == objectTag && !isHostObject(object),
+ othIsObj = othTag == objectTag && !isHostObject(other),
+ isSameTag = objTag == othTag;
+
+ if (isSameTag && !objIsObj) {
+ stack || (stack = new Stack());
+ return objIsArr || isTypedArray(object) ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);
+ }
+
+ if (!(bitmask & PARTIAL_COMPARE_FLAG)) {
+ var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),
+ othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');
+
+ if (objIsWrapped || othIsWrapped) {
+ var objUnwrapped = objIsWrapped ? object.value() : object,
+ othUnwrapped = othIsWrapped ? other.value() : other;
+ stack || (stack = new Stack());
+ return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);
+ }
+ }
+
+ if (!isSameTag) {
+ return false;
+ }
+
+ stack || (stack = new Stack());
+ return equalObjects(object, other, equalFunc, customizer, bitmask, stack);
+ }
+ /**
+ * The base implementation of `_.isMatch` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Object} object The object to inspect.
+ * @param {Object} source The object of property values to match.
+ * @param {Array} matchData The property names, values, and compare flags to match.
+ * @param {Function} [customizer] The function to customize comparisons.
+ * @returns {boolean} Returns `true` if `object` is a match, else `false`.
+ */
+
+
+ function baseIsMatch(object, source, matchData, customizer) {
+ var index = matchData.length,
+ length = index,
+ noCustomizer = !customizer;
+
+ if (object == null) {
+ return !length;
+ }
+
+ object = Object(object);
+
+ while (index--) {
+ var data = matchData[index];
+
+ if (noCustomizer && data[2] ? data[1] !== object[data[0]] : !(data[0] in object)) {
+ return false;
+ }
+ }
+
+ while (++index < length) {
+ data = matchData[index];
+ var key = data[0],
+ objValue = object[key],
+ srcValue = data[1];
+
+ if (noCustomizer && data[2]) {
+ if (objValue === undefined && !(key in object)) {
+ return false;
+ }
+ } else {
+ var stack = new Stack();
+
+ if (customizer) {
+ var result = customizer(objValue, srcValue, key, object, source, stack);
+ }
+
+ if (!(result === undefined ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack) : result)) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
+ /**
+ * The base implementation of `_.isNative` without bad shim checks.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a native function,
+ * else `false`.
+ */
+
+
+ function baseIsNative(value) {
+ if (!isObject(value) || isMasked(value)) {
+ return false;
+ }
+
+ var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;
+ return pattern.test(toSource(value));
+ }
+ /**
+ * The base implementation of `_.isTypedArray` without Node.js optimizations.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
+ */
+
+
+ function baseIsTypedArray(value) {
+ return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)];
+ }
+ /**
+ * The base implementation of `_.iteratee`.
+ *
+ * @private
+ * @param {*} [value=_.identity] The value to convert to an iteratee.
+ * @returns {Function} Returns the iteratee.
+ */
+
+
+ function baseIteratee(value) {
+ // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.
+ // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.
+ if (typeof value == 'function') {
+ return value;
+ }
+
+ if (value == null) {
+ return identity;
+ }
+
+ if (typeof value == 'object') {
+ return isArray(value) ? baseMatchesProperty(value[0], value[1]) : baseMatches(value);
+ }
+
+ return property(value);
+ }
+ /**
+ * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ */
+
+
+ function baseKeys(object) {
+ if (!isPrototype(object)) {
+ return nativeKeys(object);
+ }
+
+ var result = [];
+
+ for (var key in Object(object)) {
+ if (hasOwnProperty.call(object, key) && key != 'constructor') {
+ result.push(key);
+ }
+ }
+
+ return result;
+ }
+ /**
+ * The base implementation of `_.matches` which doesn't clone `source`.
+ *
+ * @private
+ * @param {Object} source The object of property values to match.
+ * @returns {Function} Returns the new spec function.
+ */
+
+
+ function baseMatches(source) {
+ var matchData = getMatchData(source);
+
+ if (matchData.length == 1 && matchData[0][2]) {
+ return matchesStrictComparable(matchData[0][0], matchData[0][1]);
+ }
+
+ return function (object) {
+ return object === source || baseIsMatch(object, source, matchData);
+ };
+ }
+ /**
+ * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.
+ *
+ * @private
+ * @param {string} path The path of the property to get.
+ * @param {*} srcValue The value to match.
+ * @returns {Function} Returns the new spec function.
+ */
+
+
+ function baseMatchesProperty(path, srcValue) {
+ if (isKey(path) && isStrictComparable(srcValue)) {
+ return matchesStrictComparable(toKey(path), srcValue);
+ }
+
+ return function (object) {
+ var objValue = get(object, path);
+ return objValue === undefined && objValue === srcValue ? hasIn(object, path) : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);
+ };
+ }
+ /**
+ * A specialized version of `baseProperty` which supports deep paths.
+ *
+ * @private
+ * @param {Array|string} path The path of the property to get.
+ * @returns {Function} Returns the new accessor function.
+ */
+
+
+ function basePropertyDeep(path) {
+ return function (object) {
+ return baseGet(object, path);
+ };
+ }
+ /**
+ * The base implementation of `_.toString` which doesn't convert nullish
+ * values to empty strings.
+ *
+ * @private
+ * @param {*} value The value to process.
+ * @returns {string} Returns the string.
+ */
+
+
+ function baseToString(value) {
+ // Exit early for strings to avoid a performance hit in some environments.
+ if (typeof value == 'string') {
+ return value;
+ }
+
+ if (isSymbol(value)) {
+ return symbolToString ? symbolToString.call(value) : '';
+ }
+
+ var result = value + '';
+ return result == '0' && 1 / value == -INFINITY ? '-0' : result;
+ }
+ /**
+ * The base implementation of `_.uniqBy` without support for iteratee shorthands.
+ *
+ * @private
+ * @param {Array} array The array to inspect.
+ * @param {Function} [iteratee] The iteratee invoked per element.
+ * @param {Function} [comparator] The comparator invoked per element.
+ * @returns {Array} Returns the new duplicate free array.
+ */
+
+
+ function baseUniq(array, iteratee, comparator) {
+ var index = -1,
+ includes = arrayIncludes,
+ length = array.length,
+ isCommon = true,
+ result = [],
+ seen = result;
+
+ if (comparator) {
+ isCommon = false;
+ includes = arrayIncludesWith;
+ } else if (length >= LARGE_ARRAY_SIZE) {
+ var set = iteratee ? null : createSet(array);
+
+ if (set) {
+ return setToArray(set);
+ }
+
+ isCommon = false;
+ includes = cacheHas;
+ seen = new SetCache();
+ } else {
+ seen = iteratee ? [] : result;
+ }
+
+ outer: while (++index < length) {
+ var value = array[index],
+ computed = iteratee ? iteratee(value) : value;
+ value = comparator || value !== 0 ? value : 0;
+
+ if (isCommon && computed === computed) {
+ var seenIndex = seen.length;
+
+ while (seenIndex--) {
+ if (seen[seenIndex] === computed) {
+ continue outer;
+ }
+ }
+
+ if (iteratee) {
+ seen.push(computed);
+ }
+
+ result.push(value);
+ } else if (!includes(seen, computed, comparator)) {
+ if (seen !== result) {
+ seen.push(computed);
+ }
+
+ result.push(value);
+ }
+ }
+
+ return result;
+ }
+ /**
+ * Casts `value` to a path array if it's not one.
+ *
+ * @private
+ * @param {*} value The value to inspect.
+ * @returns {Array} Returns the cast property path array.
+ */
+
+
+ function castPath(value) {
+ return isArray(value) ? value : stringToPath(value);
+ }
+ /**
+ * Creates a set object of `values`.
+ *
+ * @private
+ * @param {Array} values The values to add to the set.
+ * @returns {Object} Returns the new set.
+ */
+
+
+ var createSet = !(Set && 1 / setToArray(new Set([, -0]))[1] == INFINITY) ? noop : function (values) {
+ return new Set(values);
+ };
+ /**
+ * A specialized version of `baseIsEqualDeep` for arrays with support for
+ * partial deep comparisons.
+ *
+ * @private
+ * @param {Array} array The array to compare.
+ * @param {Array} other The other array to compare.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Function} customizer The function to customize comparisons.
+ * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
+ * for more details.
+ * @param {Object} stack Tracks traversed `array` and `other` objects.
+ * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.
+ */
+
+ function equalArrays(array, other, equalFunc, customizer, bitmask, stack) {
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG,
+ arrLength = array.length,
+ othLength = other.length;
+
+ if (arrLength != othLength && !(isPartial && othLength > arrLength)) {
+ return false;
+ } // Assume cyclic values are equal.
+
+
+ var stacked = stack.get(array);
+
+ if (stacked && stack.get(other)) {
+ return stacked == other;
+ }
+
+ var index = -1,
+ result = true,
+ seen = bitmask & UNORDERED_COMPARE_FLAG ? new SetCache() : undefined;
+ stack.set(array, other);
+ stack.set(other, array); // Ignore non-index properties.
+
+ while (++index < arrLength) {
+ var arrValue = array[index],
+ othValue = other[index];
+
+ if (customizer) {
+ var compared = isPartial ? customizer(othValue, arrValue, index, other, array, stack) : customizer(arrValue, othValue, index, array, other, stack);
+ }
+
+ if (compared !== undefined) {
+ if (compared) {
+ continue;
+ }
+
+ result = false;
+ break;
+ } // Recursively compare arrays (susceptible to call stack limits).
+
+
+ if (seen) {
+ if (!arraySome(other, function (othValue, othIndex) {
+ if (!seen.has(othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {
+ return seen.add(othIndex);
+ }
+ })) {
+ result = false;
+ break;
+ }
+ } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {
+ result = false;
+ break;
+ }
+ }
+
+ stack['delete'](array);
+ stack['delete'](other);
+ return result;
+ }
+ /**
+ * A specialized version of `baseIsEqualDeep` for comparing objects of
+ * the same `toStringTag`.
+ *
+ * **Note:** This function only supports comparing values with tags of
+ * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.
+ *
+ * @private
+ * @param {Object} object The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {string} tag The `toStringTag` of the objects to compare.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Function} customizer The function to customize comparisons.
+ * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
+ * for more details.
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+ */
+
+
+ function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {
+ switch (tag) {
+ case dataViewTag:
+ if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {
+ return false;
+ }
+
+ object = object.buffer;
+ other = other.buffer;
+
+ case arrayBufferTag:
+ if (object.byteLength != other.byteLength || !equalFunc(new Uint8Array(object), new Uint8Array(other))) {
+ return false;
+ }
+
+ return true;
+
+ case boolTag:
+ case dateTag:
+ case numberTag:
+ // Coerce booleans to `1` or `0` and dates to milliseconds.
+ // Invalid dates are coerced to `NaN`.
+ return eq(+object, +other);
+
+ case errorTag:
+ return object.name == other.name && object.message == other.message;
+
+ case regexpTag:
+ case stringTag:
+ // Coerce regexes to strings and treat strings, primitives and objects,
+ // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring
+ // for more details.
+ return object == other + '';
+
+ case mapTag:
+ var convert = mapToArray;
+
+ case setTag:
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG;
+ convert || (convert = setToArray);
+
+ if (object.size != other.size && !isPartial) {
+ return false;
+ } // Assume cyclic values are equal.
+
+
+ var stacked = stack.get(object);
+
+ if (stacked) {
+ return stacked == other;
+ }
+
+ bitmask |= UNORDERED_COMPARE_FLAG; // Recursively compare objects (susceptible to call stack limits).
+
+ stack.set(object, other);
+ var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);
+ stack['delete'](object);
+ return result;
+
+ case symbolTag:
+ if (symbolValueOf) {
+ return symbolValueOf.call(object) == symbolValueOf.call(other);
+ }
+
+ }
+
+ return false;
+ }
+ /**
+ * A specialized version of `baseIsEqualDeep` for objects with support for
+ * partial deep comparisons.
+ *
+ * @private
+ * @param {Object} object The object to compare.
+ * @param {Object} other The other object to compare.
+ * @param {Function} equalFunc The function to determine equivalents of values.
+ * @param {Function} customizer The function to customize comparisons.
+ * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`
+ * for more details.
+ * @param {Object} stack Tracks traversed `object` and `other` objects.
+ * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.
+ */
+
+
+ function equalObjects(object, other, equalFunc, customizer, bitmask, stack) {
+ var isPartial = bitmask & PARTIAL_COMPARE_FLAG,
+ objProps = keys(object),
+ objLength = objProps.length,
+ othProps = keys(other),
+ othLength = othProps.length;
+
+ if (objLength != othLength && !isPartial) {
+ return false;
+ }
+
+ var index = objLength;
+
+ while (index--) {
+ var key = objProps[index];
+
+ if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {
+ return false;
+ }
+ } // Assume cyclic values are equal.
+
+
+ var stacked = stack.get(object);
+
+ if (stacked && stack.get(other)) {
+ return stacked == other;
+ }
+
+ var result = true;
+ stack.set(object, other);
+ stack.set(other, object);
+ var skipCtor = isPartial;
+
+ while (++index < objLength) {
+ key = objProps[index];
+ var objValue = object[key],
+ othValue = other[key];
+
+ if (customizer) {
+ var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack);
+ } // Recursively compare objects (susceptible to call stack limits).
+
+
+ if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack) : compared)) {
+ result = false;
+ break;
+ }
+
+ skipCtor || (skipCtor = key == 'constructor');
+ }
+
+ if (result && !skipCtor) {
+ var objCtor = object.constructor,
+ othCtor = other.constructor; // Non `Object` object instances with different constructors are not equal.
+
+ if (objCtor != othCtor && 'constructor' in object && 'constructor' in other && !(typeof objCtor == 'function' && objCtor instanceof objCtor && typeof othCtor == 'function' && othCtor instanceof othCtor)) {
+ result = false;
+ }
+ }
+
+ stack['delete'](object);
+ stack['delete'](other);
+ return result;
+ }
+ /**
+ * Gets the data for `map`.
+ *
+ * @private
+ * @param {Object} map The map to query.
+ * @param {string} key The reference key.
+ * @returns {*} Returns the map data.
+ */
+
+
+ function getMapData(map, key) {
+ var data = map.__data__;
+ return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;
+ }
+ /**
+ * Gets the property names, values, and compare flags of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the match data of `object`.
+ */
+
+
+ function getMatchData(object) {
+ var result = keys(object),
+ length = result.length;
+
+ while (length--) {
+ var key = result[length],
+ value = object[key];
+ result[length] = [key, value, isStrictComparable(value)];
+ }
+
+ return result;
+ }
+ /**
+ * Gets the native function at `key` of `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {string} key The key of the method to get.
+ * @returns {*} Returns the function if it's native, else `undefined`.
+ */
+
+
+ function getNative(object, key) {
+ var value = getValue(object, key);
+ return baseIsNative(value) ? value : undefined;
+ }
+ /**
+ * Gets the `toStringTag` of `value`.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @returns {string} Returns the `toStringTag`.
+ */
+
+
+ var getTag = baseGetTag; // Fallback for data views, maps, sets, and weak maps in IE 11,
+ // for data views in Edge < 14, and promises in Node.js.
+
+ if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {
+ getTag = function getTag(value) {
+ var result = objectToString.call(value),
+ Ctor = result == objectTag ? value.constructor : undefined,
+ ctorString = Ctor ? toSource(Ctor) : undefined;
+
+ if (ctorString) {
+ switch (ctorString) {
+ case dataViewCtorString:
+ return dataViewTag;
+
+ case mapCtorString:
+ return mapTag;
+
+ case promiseCtorString:
+ return promiseTag;
+
+ case setCtorString:
+ return setTag;
+
+ case weakMapCtorString:
+ return weakMapTag;
+ }
+ }
+
+ return result;
+ };
+ }
+ /**
+ * Checks if `path` exists on `object`.
+ *
+ * @private
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path to check.
+ * @param {Function} hasFunc The function to check properties.
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
+ */
+
+
+ function hasPath(object, path, hasFunc) {
+ path = isKey(path, object) ? [path] : castPath(path);
+ var result,
+ index = -1,
+ length = path.length;
+
+ while (++index < length) {
+ var key = toKey(path[index]);
+
+ if (!(result = object != null && hasFunc(object, key))) {
+ break;
+ }
+
+ object = object[key];
+ }
+
+ if (result) {
+ return result;
+ }
+
+ var length = object ? object.length : 0;
+ return !!length && isLength(length) && isIndex(key, length) && (isArray(object) || isArguments(object));
+ }
+ /**
+ * Checks if `value` is a valid array-like index.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
+ * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
+ */
+
+
+ function isIndex(value, length) {
+ length = length == null ? MAX_SAFE_INTEGER : length;
+ return !!length && (typeof value == 'number' || reIsUint.test(value)) && value > -1 && value % 1 == 0 && value < length;
+ }
+ /**
+ * Checks if `value` is a property name and not a property path.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @param {Object} [object] The object to query keys on.
+ * @returns {boolean} Returns `true` if `value` is a property name, else `false`.
+ */
+
+
+ function isKey(value, object) {
+ if (isArray(value)) {
+ return false;
+ }
+
+ var type = typeof value;
+
+ if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) {
+ return true;
+ }
+
+ return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);
+ }
+ /**
+ * Checks if `value` is suitable for use as unique object key.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is suitable, else `false`.
+ */
+
+
+ function isKeyable(value) {
+ var type = typeof value;
+ return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;
+ }
+ /**
+ * Checks if `func` has its source masked.
+ *
+ * @private
+ * @param {Function} func The function to check.
+ * @returns {boolean} Returns `true` if `func` is masked, else `false`.
+ */
+
+
+ function isMasked(func) {
+ return !!maskSrcKey && maskSrcKey in func;
+ }
+ /**
+ * Checks if `value` is likely a prototype object.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
+ */
+
+
+ function isPrototype(value) {
+ var Ctor = value && value.constructor,
+ proto = typeof Ctor == 'function' && Ctor.prototype || objectProto;
+ return value === proto;
+ }
+ /**
+ * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.
+ *
+ * @private
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` if suitable for strict
+ * equality comparisons, else `false`.
+ */
+
+
+ function isStrictComparable(value) {
+ return value === value && !isObject(value);
+ }
+ /**
+ * A specialized version of `matchesProperty` for source values suitable
+ * for strict equality comparisons, i.e. `===`.
+ *
+ * @private
+ * @param {string} key The key of the property to get.
+ * @param {*} srcValue The value to match.
+ * @returns {Function} Returns the new spec function.
+ */
+
+
+ function matchesStrictComparable(key, srcValue) {
+ return function (object) {
+ if (object == null) {
+ return false;
+ }
+
+ return object[key] === srcValue && (srcValue !== undefined || key in Object(object));
+ };
+ }
+ /**
+ * Converts `string` to a property path array.
+ *
+ * @private
+ * @param {string} string The string to convert.
+ * @returns {Array} Returns the property path array.
+ */
+
+
+ var stringToPath = memoize(function (string) {
+ string = toString(string);
+ var result = [];
+
+ if (reLeadingDot.test(string)) {
+ result.push('');
+ }
+
+ string.replace(rePropName, function (match, number, quote, string) {
+ result.push(quote ? string.replace(reEscapeChar, '$1') : number || match);
+ });
+ return result;
+ });
+ /**
+ * Converts `value` to a string key if it's not a string or symbol.
+ *
+ * @private
+ * @param {*} value The value to inspect.
+ * @returns {string|symbol} Returns the key.
+ */
+
+ function toKey(value) {
+ if (typeof value == 'string' || isSymbol(value)) {
+ return value;
+ }
+
+ var result = value + '';
+ return result == '0' && 1 / value == -INFINITY ? '-0' : result;
+ }
+ /**
+ * Converts `func` to its source code.
+ *
+ * @private
+ * @param {Function} func The function to process.
+ * @returns {string} Returns the source code.
+ */
+
+
+ function toSource(func) {
+ if (func != null) {
+ try {
+ return funcToString.call(func);
+ } catch (e) {}
+
+ try {
+ return func + '';
+ } catch (e) {}
+ }
+
+ return '';
+ }
+ /**
+ * This method is like `_.uniq` except that it accepts `iteratee` which is
+ * invoked for each element in `array` to generate the criterion by which
+ * uniqueness is computed. The iteratee is invoked with one argument: (value).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Array
+ * @param {Array} array The array to inspect.
+ * @param {Function} [iteratee=_.identity]
+ * The iteratee invoked per element.
+ * @returns {Array} Returns the new duplicate free array.
+ * @example
+ *
+ * _.uniqBy([2.1, 1.2, 2.3], Math.floor);
+ * // => [2.1, 1.2]
+ *
+ * // The `_.property` iteratee shorthand.
+ * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
+ * // => [{ 'x': 1 }, { 'x': 2 }]
+ */
+
+
+ function uniqBy(array, iteratee) {
+ return array && array.length ? baseUniq(array, baseIteratee(iteratee)) : [];
+ }
+ /**
+ * Creates a function that memoizes the result of `func`. If `resolver` is
+ * provided, it determines the cache key for storing the result based on the
+ * arguments provided to the memoized function. By default, the first argument
+ * provided to the memoized function is used as the map cache key. The `func`
+ * is invoked with the `this` binding of the memoized function.
+ *
+ * **Note:** The cache is exposed as the `cache` property on the memoized
+ * function. Its creation may be customized by replacing the `_.memoize.Cache`
+ * constructor with one whose instances implement the
+ * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)
+ * method interface of `delete`, `get`, `has`, and `set`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Function
+ * @param {Function} func The function to have its output memoized.
+ * @param {Function} [resolver] The function to resolve the cache key.
+ * @returns {Function} Returns the new memoized function.
+ * @example
+ *
+ * var object = { 'a': 1, 'b': 2 };
+ * var other = { 'c': 3, 'd': 4 };
+ *
+ * var values = _.memoize(_.values);
+ * values(object);
+ * // => [1, 2]
+ *
+ * values(other);
+ * // => [3, 4]
+ *
+ * object.a = 2;
+ * values(object);
+ * // => [1, 2]
+ *
+ * // Modify the result cache.
+ * values.cache.set(object, ['a', 'b']);
+ * values(object);
+ * // => ['a', 'b']
+ *
+ * // Replace `_.memoize.Cache`.
+ * _.memoize.Cache = WeakMap;
+ */
+
+
+ function memoize(func, resolver) {
+ if (typeof func != 'function' || resolver && typeof resolver != 'function') {
+ throw new TypeError(FUNC_ERROR_TEXT);
+ }
+
+ var memoized = function memoized() {
+ var args = arguments,
+ key = resolver ? resolver.apply(this, args) : args[0],
+ cache = memoized.cache;
+
+ if (cache.has(key)) {
+ return cache.get(key);
+ }
+
+ var result = func.apply(this, args);
+ memoized.cache = cache.set(key, result);
+ return result;
+ };
+
+ memoized.cache = new (memoize.Cache || MapCache)();
+ return memoized;
+ } // Assign cache to `_.memoize`.
+
+
+ memoize.Cache = MapCache;
+ /**
+ * Performs a
+ * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)
+ * comparison between two values to determine if they are equivalent.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to compare.
+ * @param {*} other The other value to compare.
+ * @returns {boolean} Returns `true` if the values are equivalent, else `false`.
+ * @example
+ *
+ * var object = { 'a': 1 };
+ * var other = { 'a': 1 };
+ *
+ * _.eq(object, object);
+ * // => true
+ *
+ * _.eq(object, other);
+ * // => false
+ *
+ * _.eq('a', 'a');
+ * // => true
+ *
+ * _.eq('a', Object('a'));
+ * // => false
+ *
+ * _.eq(NaN, NaN);
+ * // => true
+ */
+
+ function eq(value, other) {
+ return value === other || value !== value && other !== other;
+ }
+ /**
+ * Checks if `value` is likely an `arguments` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an `arguments` object,
+ * else `false`.
+ * @example
+ *
+ * _.isArguments(function() { return arguments; }());
+ * // => true
+ *
+ * _.isArguments([1, 2, 3]);
+ * // => false
+ */
+
+
+ function isArguments(value) {
+ // Safari 8.1 makes `arguments.callee` enumerable in strict mode.
+ return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);
+ }
+ /**
+ * Checks if `value` is classified as an `Array` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an array, else `false`.
+ * @example
+ *
+ * _.isArray([1, 2, 3]);
+ * // => true
+ *
+ * _.isArray(document.body.children);
+ * // => false
+ *
+ * _.isArray('abc');
+ * // => false
+ *
+ * _.isArray(_.noop);
+ * // => false
+ */
+
+
+ var isArray = Array.isArray;
+ /**
+ * Checks if `value` is array-like. A value is considered array-like if it's
+ * not a function and has a `value.length` that's an integer greater than or
+ * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
+ * @example
+ *
+ * _.isArrayLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isArrayLike(document.body.children);
+ * // => true
+ *
+ * _.isArrayLike('abc');
+ * // => true
+ *
+ * _.isArrayLike(_.noop);
+ * // => false
+ */
+
+ function isArrayLike(value) {
+ return value != null && isLength(value.length) && !isFunction(value);
+ }
+ /**
+ * This method is like `_.isArrayLike` except that it also checks if `value`
+ * is an object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an array-like object,
+ * else `false`.
+ * @example
+ *
+ * _.isArrayLikeObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isArrayLikeObject(document.body.children);
+ * // => true
+ *
+ * _.isArrayLikeObject('abc');
+ * // => false
+ *
+ * _.isArrayLikeObject(_.noop);
+ * // => false
+ */
+
+
+ function isArrayLikeObject(value) {
+ return isObjectLike(value) && isArrayLike(value);
+ }
+ /**
+ * Checks if `value` is classified as a `Function` object.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a function, else `false`.
+ * @example
+ *
+ * _.isFunction(_);
+ * // => true
+ *
+ * _.isFunction(/abc/);
+ * // => false
+ */
+
+
+ function isFunction(value) {
+ // The use of `Object#toString` avoids issues with the `typeof` operator
+ // in Safari 8-9 which returns 'object' for typed array and other constructors.
+ var tag = isObject(value) ? objectToString.call(value) : '';
+ return tag == funcTag || tag == genTag;
+ }
+ /**
+ * Checks if `value` is a valid array-like length.
+ *
+ * **Note:** This method is loosely based on
+ * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
+ * @example
+ *
+ * _.isLength(3);
+ * // => true
+ *
+ * _.isLength(Number.MIN_VALUE);
+ * // => false
+ *
+ * _.isLength(Infinity);
+ * // => false
+ *
+ * _.isLength('3');
+ * // => false
+ */
+
+
+ function isLength(value) {
+ return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
+ }
+ /**
+ * Checks if `value` is the
+ * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
+ * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
+ *
+ * @static
+ * @memberOf _
+ * @since 0.1.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is an object, else `false`.
+ * @example
+ *
+ * _.isObject({});
+ * // => true
+ *
+ * _.isObject([1, 2, 3]);
+ * // => true
+ *
+ * _.isObject(_.noop);
+ * // => true
+ *
+ * _.isObject(null);
+ * // => false
+ */
+
+
+ function isObject(value) {
+ var type = typeof value;
+ return !!value && (type == 'object' || type == 'function');
+ }
+ /**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+
+
+ function isObjectLike(value) {
+ return !!value && typeof value == 'object';
+ }
+ /**
+ * Checks if `value` is classified as a `Symbol` primitive or object.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
+ * @example
+ *
+ * _.isSymbol(Symbol.iterator);
+ * // => true
+ *
+ * _.isSymbol('abc');
+ * // => false
+ */
+
+
+ function isSymbol(value) {
+ return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;
+ }
+ /**
+ * Checks if `value` is classified as a typed array.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
+ * @example
+ *
+ * _.isTypedArray(new Uint8Array);
+ * // => true
+ *
+ * _.isTypedArray([]);
+ * // => false
+ */
+
+
+ var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
+ /**
+ * Converts `value` to a string. An empty string is returned for `null`
+ * and `undefined` values. The sign of `-0` is preserved.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to process.
+ * @returns {string} Returns the string.
+ * @example
+ *
+ * _.toString(null);
+ * // => ''
+ *
+ * _.toString(-0);
+ * // => '-0'
+ *
+ * _.toString([1, 2, 3]);
+ * // => '1,2,3'
+ */
+
+ function toString(value) {
+ return value == null ? '' : baseToString(value);
+ }
+ /**
+ * Gets the value at `path` of `object`. If the resolved value is
+ * `undefined`, the `defaultValue` is returned in its place.
+ *
+ * @static
+ * @memberOf _
+ * @since 3.7.0
+ * @category Object
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path of the property to get.
+ * @param {*} [defaultValue] The value returned for `undefined` resolved values.
+ * @returns {*} Returns the resolved value.
+ * @example
+ *
+ * var object = { 'a': [{ 'b': { 'c': 3 } }] };
+ *
+ * _.get(object, 'a[0].b.c');
+ * // => 3
+ *
+ * _.get(object, ['a', '0', 'b', 'c']);
+ * // => 3
+ *
+ * _.get(object, 'a.b.c', 'default');
+ * // => 'default'
+ */
+
+
+ function get(object, path, defaultValue) {
+ var result = object == null ? undefined : baseGet(object, path);
+ return result === undefined ? defaultValue : result;
+ }
+ /**
+ * Checks if `path` is a direct or inherited property of `object`.
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Object
+ * @param {Object} object The object to query.
+ * @param {Array|string} path The path to check.
+ * @returns {boolean} Returns `true` if `path` exists, else `false`.
+ * @example
+ *
+ * var object = _.create({ 'a': _.create({ 'b': 2 }) });
+ *
+ * _.hasIn(object, 'a');
+ * // => true
+ *
+ * _.hasIn(object, 'a.b');
+ * // => true
+ *
+ * _.hasIn(object, ['a', 'b']);
+ * // => true
+ *
+ * _.hasIn(object, 'b');
+ * // => false
+ */
+
+
+ function hasIn(object, path) {
+ return object != null && hasPath(object, path, baseHasIn);
+ }
+ /**
+ * Creates an array of the own enumerable property names of `object`.
+ *
+ * **Note:** Non-object values are coerced to objects. See the
+ * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
+ * for more details.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Object
+ * @param {Object} object The object to query.
+ * @returns {Array} Returns the array of property names.
+ * @example
+ *
+ * function Foo() {
+ * this.a = 1;
+ * this.b = 2;
+ * }
+ *
+ * Foo.prototype.c = 3;
+ *
+ * _.keys(new Foo);
+ * // => ['a', 'b'] (iteration order is not guaranteed)
+ *
+ * _.keys('hi');
+ * // => ['0', '1']
+ */
+
+
+ function keys(object) {
+ return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
+ }
+ /**
+ * This method returns the first argument it receives.
+ *
+ * @static
+ * @since 0.1.0
+ * @memberOf _
+ * @category Util
+ * @param {*} value Any value.
+ * @returns {*} Returns `value`.
+ * @example
+ *
+ * var object = { 'a': 1 };
+ *
+ * console.log(_.identity(object) === object);
+ * // => true
+ */
+
+
+ function identity(value) {
+ return value;
+ }
+ /**
+ * This method returns `undefined`.
+ *
+ * @static
+ * @memberOf _
+ * @since 2.3.0
+ * @category Util
+ * @example
+ *
+ * _.times(2, _.noop);
+ * // => [undefined, undefined]
+ */
+
+
+ function noop() {} // No operation performed.
+
+ /**
+ * Creates a function that returns the value at `path` of a given object.
+ *
+ * @static
+ * @memberOf _
+ * @since 2.4.0
+ * @category Util
+ * @param {Array|string} path The path of the property to get.
+ * @returns {Function} Returns the new accessor function.
+ * @example
+ *
+ * var objects = [
+ * { 'a': { 'b': 2 } },
+ * { 'a': { 'b': 1 } }
+ * ];
+ *
+ * _.map(objects, _.property('a.b'));
+ * // => [2, 1]
+ *
+ * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');
+ * // => [1, 2]
+ */
+
+
+ function property(path) {
+ return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);
+ }
+
+ module.exports = uniqBy;
+});
+
+var PENDING = 'pending';
+var SETTLED = 'settled';
+var FULFILLED = 'fulfilled';
+var REJECTED = 'rejected';
+
+var NOOP = function NOOP() {};
+
+var isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';
+var asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;
+var asyncQueue = [];
+var asyncTimer;
+
+function asyncFlush() {
+ // run promise callbacks
+ for (var i = 0; i < asyncQueue.length; i++) {
+ asyncQueue[i][0](asyncQueue[i][1]);
+ } // reset async asyncQueue
+
+
+ asyncQueue = [];
+ asyncTimer = false;
+}
+
+function asyncCall(callback, arg) {
+ asyncQueue.push([callback, arg]);
+
+ if (!asyncTimer) {
+ asyncTimer = true;
+ asyncSetTimer(asyncFlush, 0);
+ }
+}
+
+function invokeResolver(resolver, promise) {
+ function resolvePromise(value) {
+ resolve$1(promise, value);
+ }
+
+ function rejectPromise(reason) {
+ reject(promise, reason);
+ }
+
+ try {
+ resolver(resolvePromise, rejectPromise);
+ } catch (e) {
+ rejectPromise(e);
+ }
+}
+
+function invokeCallback(subscriber) {
+ var owner = subscriber.owner;
+ var settled = owner._state;
+ var value = owner._data;
+ var callback = subscriber[settled];
+ var promise = subscriber.then;
+
+ if (typeof callback === 'function') {
+ settled = FULFILLED;
+
+ try {
+ value = callback(value);
+ } catch (e) {
+ reject(promise, e);
+ }
+ }
+
+ if (!handleThenable(promise, value)) {
+ if (settled === FULFILLED) {
+ resolve$1(promise, value);
+ }
+
+ if (settled === REJECTED) {
+ reject(promise, value);
+ }
+ }
+}
+
+function handleThenable(promise, value) {
+ var resolved;
+
+ try {
+ if (promise === value) {
+ throw new TypeError('A promises callback cannot return that same promise.');
+ }
+
+ if (value && (typeof value === 'function' || typeof value === 'object')) {
+ // then should be retrieved only once
+ var then = value.then;
+
+ if (typeof then === 'function') {
+ then.call(value, function (val) {
+ if (!resolved) {
+ resolved = true;
+
+ if (value === val) {
+ fulfill(promise, val);
+ } else {
+ resolve$1(promise, val);
+ }
+ }
+ }, function (reason) {
+ if (!resolved) {
+ resolved = true;
+ reject(promise, reason);
+ }
+ });
+ return true;
+ }
+ }
+ } catch (e) {
+ if (!resolved) {
+ reject(promise, e);
+ }
+
+ return true;
+ }
+
+ return false;
+}
+
+function resolve$1(promise, value) {
+ if (promise === value || !handleThenable(promise, value)) {
+ fulfill(promise, value);
+ }
+}
+
+function fulfill(promise, value) {
+ if (promise._state === PENDING) {
+ promise._state = SETTLED;
+ promise._data = value;
+ asyncCall(publishFulfillment, promise);
+ }
+}
+
+function reject(promise, reason) {
+ if (promise._state === PENDING) {
+ promise._state = SETTLED;
+ promise._data = reason;
+ asyncCall(publishRejection, promise);
+ }
+}
+
+function publish(promise) {
+ promise._then = promise._then.forEach(invokeCallback);
+}
+
+function publishFulfillment(promise) {
+ promise._state = FULFILLED;
+ publish(promise);
+}
+
+function publishRejection(promise) {
+ promise._state = REJECTED;
+ publish(promise);
+
+ if (!promise._handled && isNode) {
+ global.process.emit('unhandledRejection', promise._data, promise);
+ }
+}
+
+function notifyRejectionHandled(promise) {
+ global.process.emit('rejectionHandled', promise);
+}
+/**
+ * @class
+ */
+
+
+function Promise$1(resolver) {
+ if (typeof resolver !== 'function') {
+ throw new TypeError('Promise resolver ' + resolver + ' is not a function');
+ }
+
+ if (this instanceof Promise$1 === false) {
+ throw new TypeError('Failed to construct \'Promise\': Please use the \'new\' operator, this object constructor cannot be called as a function.');
+ }
+
+ this._then = [];
+ invokeResolver(resolver, this);
+}
+
+Promise$1.prototype = {
+ constructor: Promise$1,
+ _state: PENDING,
+ _then: null,
+ _data: undefined,
+ _handled: false,
+ then: function then(onFulfillment, onRejection) {
+ var subscriber = {
+ owner: this,
+ then: new this.constructor(NOOP),
+ fulfilled: onFulfillment,
+ rejected: onRejection
+ };
+
+ if ((onRejection || onFulfillment) && !this._handled) {
+ this._handled = true;
+
+ if (this._state === REJECTED && isNode) {
+ asyncCall(notifyRejectionHandled, this);
+ }
+ }
+
+ if (this._state === FULFILLED || this._state === REJECTED) {
+ // already resolved, call callback async
+ asyncCall(invokeCallback, subscriber);
+ } else {
+ // subscribe
+ this._then.push(subscriber);
+ }
+
+ return subscriber.then;
+ },
+ catch: function _catch(onRejection) {
+ return this.then(null, onRejection);
+ }
+};
+
+Promise$1.all = function (promises) {
+ if (!Array.isArray(promises)) {
+ throw new TypeError('You must pass an array to Promise.all().');
+ }
+
+ return new Promise$1(function (resolve, reject) {
+ var results = [];
+ var remaining = 0;
+
+ function resolver(index) {
+ remaining++;
+ return function (value) {
+ results[index] = value;
+
+ if (! --remaining) {
+ resolve(results);
+ }
+ };
+ }
+
+ for (var i = 0, promise; i < promises.length; i++) {
+ promise = promises[i];
+
+ if (promise && typeof promise.then === 'function') {
+ promise.then(resolver(i), reject);
+ } else {
+ results[i] = promise;
+ }
+ }
+
+ if (!remaining) {
+ resolve(results);
+ }
+ });
+};
+
+Promise$1.race = function (promises) {
+ if (!Array.isArray(promises)) {
+ throw new TypeError('You must pass an array to Promise.race().');
+ }
+
+ return new Promise$1(function (resolve, reject) {
+ for (var i = 0, promise; i < promises.length; i++) {
+ promise = promises[i];
+
+ if (promise && typeof promise.then === 'function') {
+ promise.then(resolve, reject);
+ } else {
+ resolve(promise);
+ }
+ }
+ });
+};
+
+Promise$1.resolve = function (value) {
+ if (value && typeof value === 'object' && value.constructor === Promise$1) {
+ return value;
+ }
+
+ return new Promise$1(function (resolve) {
+ resolve(value);
+ });
+};
+
+Promise$1.reject = function (reason) {
+ return new Promise$1(function (resolve, reject) {
+ reject(reason);
+ });
+};
+
+var pinkie = Promise$1;
+
+var pinkiePromise = typeof Promise === 'function' ? Promise : pinkie;
+
+var arrayUniq = createCommonjsModule(function (module) {
+ // 1 - no Set type is defined
+
+ function uniqNoSet(arr) {
+ var ret = [];
+
+ for (var i = 0; i < arr.length; i++) {
+ if (ret.indexOf(arr[i]) === -1) {
+ ret.push(arr[i]);
+ }
+ }
+
+ return ret;
+ } // 2 - a simple Set type is defined
+
+
+ function uniqSet(arr) {
+ var seen = new Set();
+ return arr.filter(function (el) {
+ if (!seen.has(el)) {
+ seen.add(el);
+ return true;
+ }
+
+ return false;
+ });
+ } // 3 - a standard Set type is defined and it has a forEach method
+
+
+ function uniqSetWithForEach(arr) {
+ var ret = [];
+ new Set(arr).forEach(function (el) {
+ ret.push(el);
+ });
+ return ret;
+ } // V8 currently has a broken implementation
+ // https://github.com/joyent/node/issues/8449
+
+
+ function doesForEachActuallyWork() {
+ var ret = false;
+ new Set([true]).forEach(function (el) {
+ ret = el;
+ });
+ return ret === true;
+ }
+
+ if ('Set' in global) {
+ if (typeof Set.prototype.forEach === 'function' && doesForEachActuallyWork()) {
+ module.exports = uniqSetWithForEach;
+ } else {
+ module.exports = uniqSet;
+ }
+ } else {
+ module.exports = uniqNoSet;
+ }
+});
+
+var arrayUnion = function arrayUnion() {
+ return arrayUniq([].concat.apply([], arguments));
+};
+
+/*
+object-assign
+(c) Sindre Sorhus
+@license MIT
+*/
+/* eslint-disable no-unused-vars */
+
+var getOwnPropertySymbols = Object.getOwnPropertySymbols;
+var hasOwnProperty$2 = Object.prototype.hasOwnProperty;
+var propIsEnumerable = Object.prototype.propertyIsEnumerable;
+
+function toObject(val) {
+ if (val === null || val === undefined) {
+ throw new TypeError('Object.assign cannot be called with null or undefined');
+ }
+
+ return Object(val);
+}
+
+function shouldUseNative() {
+ try {
+ if (!Object.assign) {
+ return false;
+ } // Detect buggy property enumeration order in older V8 versions.
+ // https://bugs.chromium.org/p/v8/issues/detail?id=4118
+
+
+ var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
+
+ test1[5] = 'de';
+
+ if (Object.getOwnPropertyNames(test1)[0] === '5') {
+ return false;
+ } // https://bugs.chromium.org/p/v8/issues/detail?id=3056
+
+
+ var test2 = {};
+
+ for (var i = 0; i < 10; i++) {
+ test2['_' + String.fromCharCode(i)] = i;
+ }
+
+ var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
+ return test2[n];
+ });
+
+ if (order2.join('') !== '0123456789') {
+ return false;
+ } // https://bugs.chromium.org/p/v8/issues/detail?id=3056
+
+
+ var test3 = {};
+ 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
+ test3[letter] = letter;
+ });
+
+ if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {
+ return false;
+ }
+
+ return true;
+ } catch (err) {
+ // We don't expect any of the above to throw, but better to be safe.
+ return false;
+ }
+}
+
+var objectAssign = shouldUseNative() ? Object.assign : function (target, source) {
+ var from;
+ var to = toObject(target);
+ var symbols;
+
+ for (var s = 1; s < arguments.length; s++) {
+ from = Object(arguments[s]);
+
+ for (var key in from) {
+ if (hasOwnProperty$2.call(from, key)) {
+ to[key] = from[key];
+ }
+ }
+
+ if (getOwnPropertySymbols) {
+ symbols = getOwnPropertySymbols(from);
+
+ for (var i = 0; i < symbols.length; i++) {
+ if (propIsEnumerable.call(from, symbols[i])) {
+ to[symbols[i]] = from[symbols[i]];
+ }
+ }
+ }
+ }
+
+ return to;
+};
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+var isWindows = process.platform === 'win32'; // JavaScript implementation of realpath, ported from node pre-v6
+
+var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);
+
+function rethrow() {
+ // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and
+ // is fairly slow to generate.
+ var callback;
+
+ if (DEBUG) {
+ var backtrace = new Error();
+ callback = debugCallback;
+ } else callback = missingCallback;
+
+ return callback;
+
+ function debugCallback(err) {
+ if (err) {
+ backtrace.message = err.message;
+ err = backtrace;
+ missingCallback(err);
+ }
+ }
+
+ function missingCallback(err) {
+ if (err) {
+ if (process.throwDeprecation) throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs
+ else if (!process.noDeprecation) {
+ var msg = 'fs: missing callback ' + (err.stack || err.message);
+ if (process.traceDeprecation) console.trace(msg);else console.error(msg);
+ }
+ }
+ }
+}
+
+function maybeCallback(cb) {
+ return typeof cb === 'function' ? cb : rethrow();
+}
+
+var normalize$3 = path$2.normalize; // Regexp that finds the next partion of a (partial) path
+// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']
+
+if (isWindows) {
+ var nextPartRe = /(.*?)(?:[\/\\]+|$)/g;
+} else {
+ var nextPartRe = /(.*?)(?:[\/]+|$)/g;
+} // Regex to find the device root, including trailing slash. E.g. 'c:\\'.
+
+
+if (isWindows) {
+ var splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/;
+} else {
+ var splitRootRe = /^[\/]*/;
+}
+
+var realpathSync = function realpathSync(p, cache) {
+ // make p is absolute
+ p = path$2.resolve(p);
+
+ if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
+ return cache[p];
+ }
+
+ var original = p,
+ seenLinks = {},
+ knownHard = {}; // current character position in p
+
+ var pos; // the partial path so far, including a trailing slash if any
+
+ var current; // the partial path without a trailing slash (except when pointing at a root)
+
+ var base; // the partial path scanned in the previous round, with slash
+
+ var previous;
+ start();
+
+ function start() {
+ // Skip over roots
+ var m = splitRootRe.exec(p);
+ pos = m[0].length;
+ current = m[0];
+ base = m[0];
+ previous = ''; // On windows, check that the root exists. On unix there is no need.
+
+ if (isWindows && !knownHard[base]) {
+ fs$1.lstatSync(base);
+ knownHard[base] = true;
+ }
+ } // walk down the path, swapping out linked pathparts for their real
+ // values
+ // NB: p.length changes.
+
+
+ while (pos < p.length) {
+ // find the next part
+ nextPartRe.lastIndex = pos;
+ var result = nextPartRe.exec(p);
+ previous = current;
+ current += result[0];
+ base = previous + result[1];
+ pos = nextPartRe.lastIndex; // continue if not a symlink
+
+ if (knownHard[base] || cache && cache[base] === base) {
+ continue;
+ }
+
+ var resolvedLink;
+
+ if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
+ // some known symbolic link. no need to stat again.
+ resolvedLink = cache[base];
+ } else {
+ var stat = fs$1.lstatSync(base);
+
+ if (!stat.isSymbolicLink()) {
+ knownHard[base] = true;
+ if (cache) cache[base] = base;
+ continue;
+ } // read the link if it wasn't read before
+ // dev/ino always return 0 on windows, so skip the check.
+
+
+ var linkTarget = null;
+
+ if (!isWindows) {
+ var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);
+
+ if (seenLinks.hasOwnProperty(id)) {
+ linkTarget = seenLinks[id];
+ }
+ }
+
+ if (linkTarget === null) {
+ fs$1.statSync(base);
+ linkTarget = fs$1.readlinkSync(base);
+ }
+
+ resolvedLink = path$2.resolve(previous, linkTarget); // track this, if given a cache.
+
+ if (cache) cache[base] = resolvedLink;
+ if (!isWindows) seenLinks[id] = linkTarget;
+ } // resolve the link, then start over
+
+
+ p = path$2.resolve(resolvedLink, p.slice(pos));
+ start();
+ }
+
+ if (cache) cache[original] = p;
+ return p;
+};
+
+var realpath = function realpath(p, cache, cb) {
+ if (typeof cb !== 'function') {
+ cb = maybeCallback(cache);
+ cache = null;
+ } // make p is absolute
+
+
+ p = path$2.resolve(p);
+
+ if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {
+ return process.nextTick(cb.bind(null, null, cache[p]));
+ }
+
+ var original = p,
+ seenLinks = {},
+ knownHard = {}; // current character position in p
+
+ var pos; // the partial path so far, including a trailing slash if any
+
+ var current; // the partial path without a trailing slash (except when pointing at a root)
+
+ var base; // the partial path scanned in the previous round, with slash
+
+ var previous;
+ start();
+
+ function start() {
+ // Skip over roots
+ var m = splitRootRe.exec(p);
+ pos = m[0].length;
+ current = m[0];
+ base = m[0];
+ previous = ''; // On windows, check that the root exists. On unix there is no need.
+
+ if (isWindows && !knownHard[base]) {
+ fs$1.lstat(base, function (err) {
+ if (err) return cb(err);
+ knownHard[base] = true;
+ LOOP();
+ });
+ } else {
+ process.nextTick(LOOP);
+ }
+ } // walk down the path, swapping out linked pathparts for their real
+ // values
+
+
+ function LOOP() {
+ // stop if scanned past end of path
+ if (pos >= p.length) {
+ if (cache) cache[original] = p;
+ return cb(null, p);
+ } // find the next part
+
+
+ nextPartRe.lastIndex = pos;
+ var result = nextPartRe.exec(p);
+ previous = current;
+ current += result[0];
+ base = previous + result[1];
+ pos = nextPartRe.lastIndex; // continue if not a symlink
+
+ if (knownHard[base] || cache && cache[base] === base) {
+ return process.nextTick(LOOP);
+ }
+
+ if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {
+ // known symbolic link. no need to stat again.
+ return gotResolvedLink(cache[base]);
+ }
+
+ return fs$1.lstat(base, gotStat);
+ }
+
+ function gotStat(err, stat) {
+ if (err) return cb(err); // if not a symlink, skip to the next path part
+
+ if (!stat.isSymbolicLink()) {
+ knownHard[base] = true;
+ if (cache) cache[base] = base;
+ return process.nextTick(LOOP);
+ } // stat & read the link if not read before
+ // call gotTarget as soon as the link target is known
+ // dev/ino always return 0 on windows, so skip the check.
+
+
+ if (!isWindows) {
+ var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);
+
+ if (seenLinks.hasOwnProperty(id)) {
+ return gotTarget(null, seenLinks[id], base);
+ }
+ }
+
+ fs$1.stat(base, function (err) {
+ if (err) return cb(err);
+ fs$1.readlink(base, function (err, target) {
+ if (!isWindows) seenLinks[id] = target;
+ gotTarget(err, target);
+ });
+ });
+ }
+
+ function gotTarget(err, target, base) {
+ if (err) return cb(err);
+ var resolvedLink = path$2.resolve(previous, target);
+ if (cache) cache[base] = resolvedLink;
+ gotResolvedLink(resolvedLink);
+ }
+
+ function gotResolvedLink(resolvedLink) {
+ // resolve the link, then start over
+ p = path$2.resolve(resolvedLink, p.slice(pos));
+ start();
+ }
+};
+
+var old = {
+ realpathSync: realpathSync,
+ realpath: realpath
+};
+
+var fs_realpath = realpath$1;
+realpath$1.realpath = realpath$1;
+realpath$1.sync = realpathSync$1;
+realpath$1.realpathSync = realpathSync$1;
+realpath$1.monkeypatch = monkeypatch;
+realpath$1.unmonkeypatch = unmonkeypatch;
+var origRealpath = fs$1.realpath;
+var origRealpathSync = fs$1.realpathSync;
+var version$2 = process.version;
+var ok = /^v[0-5]\./.test(version$2);
+
+function newError(er) {
+ return er && er.syscall === 'realpath' && (er.code === 'ELOOP' || er.code === 'ENOMEM' || er.code === 'ENAMETOOLONG');
+}
+
+function realpath$1(p, cache, cb) {
+ if (ok) {
+ return origRealpath(p, cache, cb);
+ }
+
+ if (typeof cache === 'function') {
+ cb = cache;
+ cache = null;
+ }
+
+ origRealpath(p, cache, function (er, result) {
+ if (newError(er)) {
+ old.realpath(p, cache, cb);
+ } else {
+ cb(er, result);
+ }
+ });
+}
+
+function realpathSync$1(p, cache) {
+ if (ok) {
+ return origRealpathSync(p, cache);
+ }
+
+ try {
+ return origRealpathSync(p, cache);
+ } catch (er) {
+ if (newError(er)) {
+ return old.realpathSync(p, cache);
+ } else {
+ throw er;
+ }
+ }
+}
+
+function monkeypatch() {
+ fs$1.realpath = realpath$1;
+ fs$1.realpathSync = realpathSync$1;
+}
+
+function unmonkeypatch() {
+ fs$1.realpath = origRealpath;
+ fs$1.realpathSync = origRealpathSync;
+}
+
+var inherits_browser = createCommonjsModule(function (module) {
+ if (typeof Object.create === 'function') {
+ // implementation from standard node.js 'util' module
+ module.exports = function inherits(ctor, superCtor) {
+ if (superCtor) {
+ ctor.super_ = superCtor;
+ ctor.prototype = Object.create(superCtor.prototype, {
+ constructor: {
+ value: ctor,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ }
+ };
+ } else {
+ // old school shim for old browsers
+ module.exports = function inherits(ctor, superCtor) {
+ if (superCtor) {
+ ctor.super_ = superCtor;
+
+ var TempCtor = function TempCtor() {};
+
+ TempCtor.prototype = superCtor.prototype;
+ ctor.prototype = new TempCtor();
+ ctor.prototype.constructor = ctor;
+ }
+ };
+ }
+});
+
+var inherits = createCommonjsModule(function (module) {
+ try {
+ var util = util$2;
+ /* istanbul ignore next */
+
+ if (typeof util.inherits !== 'function') throw '';
+ module.exports = util.inherits;
+ } catch (e) {
+ /* istanbul ignore next */
+ module.exports = inherits_browser;
+ }
+});
+
+function posix(path) {
+ return path.charAt(0) === '/';
+}
+
+function win32(path) {
+ // https://github.com/nodejs/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56
+ var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/;
+ var result = splitDeviceRe.exec(path);
+ var device = result[1] || '';
+ var isUnc = Boolean(device && device.charAt(1) !== ':'); // UNC paths are always absolute
+
+ return Boolean(result[2] || isUnc);
+}
+
+var pathIsAbsolute = process.platform === 'win32' ? win32 : posix;
+var posix_1 = posix;
+var win32_1 = win32;
+pathIsAbsolute.posix = posix_1;
+pathIsAbsolute.win32 = win32_1;
+
+var alphasort_1 = alphasort;
+var alphasorti_1 = alphasorti;
+var setopts_1 = setopts;
+var ownProp_1 = ownProp;
+var makeAbs_1 = makeAbs;
+var finish_1 = finish;
+var mark_1 = mark;
+var isIgnored_1 = isIgnored;
+var childrenIgnored_1 = childrenIgnored;
+
+function ownProp(obj, field) {
+ return Object.prototype.hasOwnProperty.call(obj, field);
+}
+
+var Minimatch$1 = minimatch_1.Minimatch;
+
+function alphasorti(a, b) {
+ return a.toLowerCase().localeCompare(b.toLowerCase());
+}
+
+function alphasort(a, b) {
+ return a.localeCompare(b);
+}
+
+function setupIgnores(self, options) {
+ self.ignore = options.ignore || [];
+ if (!Array.isArray(self.ignore)) self.ignore = [self.ignore];
+
+ if (self.ignore.length) {
+ self.ignore = self.ignore.map(ignoreMap);
+ }
+} // ignore patterns are always in dot:true mode.
+
+
+function ignoreMap(pattern) {
+ var gmatcher = null;
+
+ if (pattern.slice(-3) === '/**') {
+ var gpattern = pattern.replace(/(\/\*\*)+$/, '');
+ gmatcher = new Minimatch$1(gpattern, {
+ dot: true
+ });
+ }
+
+ return {
+ matcher: new Minimatch$1(pattern, {
+ dot: true
+ }),
+ gmatcher: gmatcher
+ };
+}
+
+function setopts(self, pattern, options) {
+ if (!options) options = {}; // base-matching: just use globstar for that.
+
+ if (options.matchBase && -1 === pattern.indexOf("/")) {
+ if (options.noglobstar) {
+ throw new Error("base matching requires globstar");
+ }
+
+ pattern = "**/" + pattern;
+ }
+
+ self.silent = !!options.silent;
+ self.pattern = pattern;
+ self.strict = options.strict !== false;
+ self.realpath = !!options.realpath;
+ self.realpathCache = options.realpathCache || Object.create(null);
+ self.follow = !!options.follow;
+ self.dot = !!options.dot;
+ self.mark = !!options.mark;
+ self.nodir = !!options.nodir;
+ if (self.nodir) self.mark = true;
+ self.sync = !!options.sync;
+ self.nounique = !!options.nounique;
+ self.nonull = !!options.nonull;
+ self.nosort = !!options.nosort;
+ self.nocase = !!options.nocase;
+ self.stat = !!options.stat;
+ self.noprocess = !!options.noprocess;
+ self.absolute = !!options.absolute;
+ self.maxLength = options.maxLength || Infinity;
+ self.cache = options.cache || Object.create(null);
+ self.statCache = options.statCache || Object.create(null);
+ self.symlinks = options.symlinks || Object.create(null);
+ setupIgnores(self, options);
+ self.changedCwd = false;
+ var cwd = process.cwd();
+ if (!ownProp(options, "cwd")) self.cwd = cwd;else {
+ self.cwd = path$2.resolve(options.cwd);
+ self.changedCwd = self.cwd !== cwd;
+ }
+ self.root = options.root || path$2.resolve(self.cwd, "/");
+ self.root = path$2.resolve(self.root);
+ if (process.platform === "win32") self.root = self.root.replace(/\\/g, "/"); // TODO: is an absolute `cwd` supposed to be resolved against `root`?
+ // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')
+
+ self.cwdAbs = pathIsAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd);
+ if (process.platform === "win32") self.cwdAbs = self.cwdAbs.replace(/\\/g, "/");
+ self.nomount = !!options.nomount; // disable comments and negation in Minimatch.
+ // Note that they are not supported in Glob itself anyway.
+
+ options.nonegate = true;
+ options.nocomment = true;
+ self.minimatch = new Minimatch$1(pattern, options);
+ self.options = self.minimatch.options;
+}
+
+function finish(self) {
+ var nou = self.nounique;
+ var all = nou ? [] : Object.create(null);
+
+ for (var i = 0, l = self.matches.length; i < l; i++) {
+ var matches = self.matches[i];
+
+ if (!matches || Object.keys(matches).length === 0) {
+ if (self.nonull) {
+ // do like the shell, and spit out the literal glob
+ var literal = self.minimatch.globSet[i];
+ if (nou) all.push(literal);else all[literal] = true;
+ }
+ } else {
+ // had matches
+ var m = Object.keys(matches);
+ if (nou) all.push.apply(all, m);else m.forEach(function (m) {
+ all[m] = true;
+ });
+ }
+ }
+
+ if (!nou) all = Object.keys(all);
+ if (!self.nosort) all = all.sort(self.nocase ? alphasorti : alphasort); // at *some* point we statted all of these
+
+ if (self.mark) {
+ for (var i = 0; i < all.length; i++) {
+ all[i] = self._mark(all[i]);
+ }
+
+ if (self.nodir) {
+ all = all.filter(function (e) {
+ var notDir = !/\/$/.test(e);
+ var c = self.cache[e] || self.cache[makeAbs(self, e)];
+ if (notDir && c) notDir = c !== 'DIR' && !Array.isArray(c);
+ return notDir;
+ });
+ }
+ }
+
+ if (self.ignore.length) all = all.filter(function (m) {
+ return !isIgnored(self, m);
+ });
+ self.found = all;
+}
+
+function mark(self, p) {
+ var abs = makeAbs(self, p);
+ var c = self.cache[abs];
+ var m = p;
+
+ if (c) {
+ var isDir = c === 'DIR' || Array.isArray(c);
+ var slash = p.slice(-1) === '/';
+ if (isDir && !slash) m += '/';else if (!isDir && slash) m = m.slice(0, -1);
+
+ if (m !== p) {
+ var mabs = makeAbs(self, m);
+ self.statCache[mabs] = self.statCache[abs];
+ self.cache[mabs] = self.cache[abs];
+ }
+ }
+
+ return m;
+} // lotta situps...
+
+
+function makeAbs(self, f) {
+ var abs = f;
+
+ if (f.charAt(0) === '/') {
+ abs = path$2.join(self.root, f);
+ } else if (pathIsAbsolute(f) || f === '') {
+ abs = f;
+ } else if (self.changedCwd) {
+ abs = path$2.resolve(self.cwd, f);
+ } else {
+ abs = path$2.resolve(f);
+ }
+
+ if (process.platform === 'win32') abs = abs.replace(/\\/g, '/');
+ return abs;
+} // Return true, if pattern ends with globstar '**', for the accompanying parent directory.
+// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents
+
+
+function isIgnored(self, path) {
+ if (!self.ignore.length) return false;
+ return self.ignore.some(function (item) {
+ return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path));
+ });
+}
+
+function childrenIgnored(self, path) {
+ if (!self.ignore.length) return false;
+ return self.ignore.some(function (item) {
+ return !!(item.gmatcher && item.gmatcher.match(path));
+ });
+}
+
+var common$2 = {
+ alphasort: alphasort_1,
+ alphasorti: alphasorti_1,
+ setopts: setopts_1,
+ ownProp: ownProp_1,
+ makeAbs: makeAbs_1,
+ finish: finish_1,
+ mark: mark_1,
+ isIgnored: isIgnored_1,
+ childrenIgnored: childrenIgnored_1
+};
+
+var sync$1 = globSync;
+globSync.GlobSync = GlobSync;
+var setopts$1 = common$2.setopts;
+var ownProp$1 = common$2.ownProp;
+var childrenIgnored$1 = common$2.childrenIgnored;
+var isIgnored$1 = common$2.isIgnored;
+
+function globSync(pattern, options) {
+ if (typeof options === 'function' || arguments.length === 3) throw new TypeError('callback provided to sync glob\n' + 'See: https://github.com/isaacs/node-glob/issues/167');
+ return new GlobSync(pattern, options).found;
+}
+
+function GlobSync(pattern, options) {
+ if (!pattern) throw new Error('must provide pattern');
+ if (typeof options === 'function' || arguments.length === 3) throw new TypeError('callback provided to sync glob\n' + 'See: https://github.com/isaacs/node-glob/issues/167');
+ if (!(this instanceof GlobSync)) return new GlobSync(pattern, options);
+ setopts$1(this, pattern, options);
+ if (this.noprocess) return this;
+ var n = this.minimatch.set.length;
+ this.matches = new Array(n);
+
+ for (var i = 0; i < n; i++) {
+ this._process(this.minimatch.set[i], i, false);
+ }
+
+ this._finish();
+}
+
+GlobSync.prototype._finish = function () {
+ assert$1(this instanceof GlobSync);
+
+ if (this.realpath) {
+ var self = this;
+ this.matches.forEach(function (matchset, index) {
+ var set = self.matches[index] = Object.create(null);
+
+ for (var p in matchset) {
+ try {
+ p = self._makeAbs(p);
+ var real = fs_realpath.realpathSync(p, self.realpathCache);
+ set[real] = true;
+ } catch (er) {
+ if (er.syscall === 'stat') set[self._makeAbs(p)] = true;else throw er;
+ }
+ }
+ });
+ }
+
+ common$2.finish(this);
+};
+
+GlobSync.prototype._process = function (pattern, index, inGlobStar) {
+ assert$1(this instanceof GlobSync); // Get the first [n] parts of pattern that are all strings.
+
+ var n = 0;
+
+ while (typeof pattern[n] === 'string') {
+ n++;
+ } // now n is the index of the first one that is *not* a string.
+ // See if there's anything else
+
+
+ var prefix;
+
+ switch (n) {
+ // if not, then this is rather simple
+ case pattern.length:
+ this._processSimple(pattern.join('/'), index);
+
+ return;
+
+ case 0:
+ // pattern *starts* with some non-trivial item.
+ // going to readdir(cwd), but not include the prefix in matches.
+ prefix = null;
+ break;
+
+ default:
+ // pattern has some string bits in the front.
+ // whatever it starts with, whether that's 'absolute' like /foo/bar,
+ // or 'relative' like '../baz'
+ prefix = pattern.slice(0, n).join('/');
+ break;
+ }
+
+ var remain = pattern.slice(n); // get the list of entries.
+
+ var read;
+ if (prefix === null) read = '.';else if (pathIsAbsolute(prefix) || pathIsAbsolute(pattern.join('/'))) {
+ if (!prefix || !pathIsAbsolute(prefix)) prefix = '/' + prefix;
+ read = prefix;
+ } else read = prefix;
+
+ var abs = this._makeAbs(read); //if ignored, skip processing
+
+
+ if (childrenIgnored$1(this, read)) return;
+ var isGlobStar = remain[0] === minimatch_1.GLOBSTAR;
+ if (isGlobStar) this._processGlobStar(prefix, read, abs, remain, index, inGlobStar);else this._processReaddir(prefix, read, abs, remain, index, inGlobStar);
+};
+
+GlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {
+ var entries = this._readdir(abs, inGlobStar); // if the abs isn't a dir, then nothing can match!
+
+
+ if (!entries) return; // It will only match dot entries if it starts with a dot, or if
+ // dot is set. Stuff like @(.foo|.bar) isn't allowed.
+
+ var pn = remain[0];
+ var negate = !!this.minimatch.negate;
+ var rawGlob = pn._glob;
+ var dotOk = this.dot || rawGlob.charAt(0) === '.';
+ var matchedEntries = [];
+
+ for (var i = 0; i < entries.length; i++) {
+ var e = entries[i];
+
+ if (e.charAt(0) !== '.' || dotOk) {
+ var m;
+
+ if (negate && !prefix) {
+ m = !e.match(pn);
+ } else {
+ m = e.match(pn);
+ }
+
+ if (m) matchedEntries.push(e);
+ }
+ }
+
+ var len = matchedEntries.length; // If there are no matched entries, then nothing matches.
+
+ if (len === 0) return; // if this is the last remaining pattern bit, then no need for
+ // an additional stat *unless* the user has specified mark or
+ // stat explicitly. We know they exist, since readdir returned
+ // them.
+
+ if (remain.length === 1 && !this.mark && !this.stat) {
+ if (!this.matches[index]) this.matches[index] = Object.create(null);
+
+ for (var i = 0; i < len; i++) {
+ var e = matchedEntries[i];
+
+ if (prefix) {
+ if (prefix.slice(-1) !== '/') e = prefix + '/' + e;else e = prefix + e;
+ }
+
+ if (e.charAt(0) === '/' && !this.nomount) {
+ e = path$2.join(this.root, e);
+ }
+
+ this._emitMatch(index, e);
+ } // This was the last one, and no stats were needed
+
+
+ return;
+ } // now test all matched entries as stand-ins for that part
+ // of the pattern.
+
+
+ remain.shift();
+
+ for (var i = 0; i < len; i++) {
+ var e = matchedEntries[i];
+ var newPattern;
+ if (prefix) newPattern = [prefix, e];else newPattern = [e];
+
+ this._process(newPattern.concat(remain), index, inGlobStar);
+ }
+};
+
+GlobSync.prototype._emitMatch = function (index, e) {
+ if (isIgnored$1(this, e)) return;
+
+ var abs = this._makeAbs(e);
+
+ if (this.mark) e = this._mark(e);
+
+ if (this.absolute) {
+ e = abs;
+ }
+
+ if (this.matches[index][e]) return;
+
+ if (this.nodir) {
+ var c = this.cache[abs];
+ if (c === 'DIR' || Array.isArray(c)) return;
+ }
+
+ this.matches[index][e] = true;
+ if (this.stat) this._stat(e);
+};
+
+GlobSync.prototype._readdirInGlobStar = function (abs) {
+ // follow all symlinked directories forever
+ // just proceed as if this is a non-globstar situation
+ if (this.follow) return this._readdir(abs, false);
+ var entries;
+ var lstat;
+
+ try {
+ lstat = fs$1.lstatSync(abs);
+ } catch (er) {
+ if (er.code === 'ENOENT') {
+ // lstat failed, doesn't exist
+ return null;
+ }
+ }
+
+ var isSym = lstat && lstat.isSymbolicLink();
+ this.symlinks[abs] = isSym; // If it's not a symlink or a dir, then it's definitely a regular file.
+ // don't bother doing a readdir in that case.
+
+ if (!isSym && lstat && !lstat.isDirectory()) this.cache[abs] = 'FILE';else entries = this._readdir(abs, false);
+ return entries;
+};
+
+GlobSync.prototype._readdir = function (abs, inGlobStar) {
+ if (inGlobStar && !ownProp$1(this.symlinks, abs)) return this._readdirInGlobStar(abs);
+
+ if (ownProp$1(this.cache, abs)) {
+ var c = this.cache[abs];
+ if (!c || c === 'FILE') return null;
+ if (Array.isArray(c)) return c;
+ }
+
+ try {
+ return this._readdirEntries(abs, fs$1.readdirSync(abs));
+ } catch (er) {
+ this._readdirError(abs, er);
+
+ return null;
+ }
+};
+
+GlobSync.prototype._readdirEntries = function (abs, entries) {
+ // if we haven't asked to stat everything, then just
+ // assume that everything in there exists, so we can avoid
+ // having to stat it a second time.
+ if (!this.mark && !this.stat) {
+ for (var i = 0; i < entries.length; i++) {
+ var e = entries[i];
+ if (abs === '/') e = abs + e;else e = abs + '/' + e;
+ this.cache[e] = true;
+ }
+ }
+
+ this.cache[abs] = entries; // mark and cache dir-ness
+
+ return entries;
+};
+
+GlobSync.prototype._readdirError = function (f, er) {
+ // handle errors, and cache the information
+ switch (er.code) {
+ case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205
+
+ case 'ENOTDIR':
+ // totally normal. means it *does* exist.
+ var abs = this._makeAbs(f);
+
+ this.cache[abs] = 'FILE';
+
+ if (abs === this.cwdAbs) {
+ var error = new Error(er.code + ' invalid cwd ' + this.cwd);
+ error.path = this.cwd;
+ error.code = er.code;
+ throw error;
+ }
+
+ break;
+
+ case 'ENOENT': // not terribly unusual
+
+ case 'ELOOP':
+ case 'ENAMETOOLONG':
+ case 'UNKNOWN':
+ this.cache[this._makeAbs(f)] = false;
+ break;
+
+ default:
+ // some unusual error. Treat as failure.
+ this.cache[this._makeAbs(f)] = false;
+ if (this.strict) throw er;
+ if (!this.silent) console.error('glob error', er);
+ break;
+ }
+};
+
+GlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {
+ var entries = this._readdir(abs, inGlobStar); // no entries means not a dir, so it can never have matches
+ // foo.txt/** doesn't match foo.txt
+
+
+ if (!entries) return; // test without the globstar, and with every child both below
+ // and replacing the globstar.
+
+ var remainWithoutGlobStar = remain.slice(1);
+ var gspref = prefix ? [prefix] : [];
+ var noGlobStar = gspref.concat(remainWithoutGlobStar); // the noGlobStar pattern exits the inGlobStar state
+
+ this._process(noGlobStar, index, false);
+
+ var len = entries.length;
+ var isSym = this.symlinks[abs]; // If it's a symlink, and we're in a globstar, then stop
+
+ if (isSym && inGlobStar) return;
+
+ for (var i = 0; i < len; i++) {
+ var e = entries[i];
+ if (e.charAt(0) === '.' && !this.dot) continue; // these two cases enter the inGlobStar state
+
+ var instead = gspref.concat(entries[i], remainWithoutGlobStar);
+
+ this._process(instead, index, true);
+
+ var below = gspref.concat(entries[i], remain);
+
+ this._process(below, index, true);
+ }
+};
+
+GlobSync.prototype._processSimple = function (prefix, index) {
+ // XXX review this. Shouldn't it be doing the mounting etc
+ // before doing stat? kinda weird?
+ var exists = this._stat(prefix);
+
+ if (!this.matches[index]) this.matches[index] = Object.create(null); // If it doesn't exist, then just mark the lack of results
+
+ if (!exists) return;
+
+ if (prefix && pathIsAbsolute(prefix) && !this.nomount) {
+ var trail = /[\/\\]$/.test(prefix);
+
+ if (prefix.charAt(0) === '/') {
+ prefix = path$2.join(this.root, prefix);
+ } else {
+ prefix = path$2.resolve(this.root, prefix);
+ if (trail) prefix += '/';
+ }
+ }
+
+ if (process.platform === 'win32') prefix = prefix.replace(/\\/g, '/'); // Mark this as a match
+
+ this._emitMatch(index, prefix);
+}; // Returns either 'DIR', 'FILE', or false
+
+
+GlobSync.prototype._stat = function (f) {
+ var abs = this._makeAbs(f);
+
+ var needDir = f.slice(-1) === '/';
+ if (f.length > this.maxLength) return false;
+
+ if (!this.stat && ownProp$1(this.cache, abs)) {
+ var c = this.cache[abs];
+ if (Array.isArray(c)) c = 'DIR'; // It exists, but maybe not how we need it
+
+ if (!needDir || c === 'DIR') return c;
+ if (needDir && c === 'FILE') return false; // otherwise we have to stat, because maybe c=true
+ // if we know it exists, but not what it is.
+ }
+ var stat = this.statCache[abs];
+
+ if (!stat) {
+ var lstat;
+
+ try {
+ lstat = fs$1.lstatSync(abs);
+ } catch (er) {
+ if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {
+ this.statCache[abs] = false;
+ return false;
+ }
+ }
+
+ if (lstat && lstat.isSymbolicLink()) {
+ try {
+ stat = fs$1.statSync(abs);
+ } catch (er) {
+ stat = lstat;
+ }
+ } else {
+ stat = lstat;
+ }
+ }
+
+ this.statCache[abs] = stat;
+ var c = true;
+ if (stat) c = stat.isDirectory() ? 'DIR' : 'FILE';
+ this.cache[abs] = this.cache[abs] || c;
+ if (needDir && c === 'FILE') return false;
+ return c;
+};
+
+GlobSync.prototype._mark = function (p) {
+ return common$2.mark(this, p);
+};
+
+GlobSync.prototype._makeAbs = function (f) {
+ return common$2.makeAbs(this, f);
+};
+
+// Returns a wrapper function that returns a wrapped callback
+// The wrapper function should do some stuff, and return a
+// presumably different callback function.
+// This makes sure that own properties are retained, so that
+// decorations and such are not lost along the way.
+var wrappy_1 = wrappy;
+
+function wrappy(fn, cb) {
+ if (fn && cb) return wrappy(fn)(cb);
+ if (typeof fn !== 'function') throw new TypeError('need wrapper function');
+ Object.keys(fn).forEach(function (k) {
+ wrapper[k] = fn[k];
+ });
+ return wrapper;
+
+ function wrapper() {
+ var args = new Array(arguments.length);
+
+ for (var i = 0; i < args.length; i++) {
+ args[i] = arguments[i];
+ }
+
+ var ret = fn.apply(this, args);
+ var cb = args[args.length - 1];
+
+ if (typeof ret === 'function' && ret !== cb) {
+ Object.keys(cb).forEach(function (k) {
+ ret[k] = cb[k];
+ });
+ }
+
+ return ret;
+ }
+}
+
+var once_1 = wrappy_1(once);
+var strict = wrappy_1(onceStrict);
+once.proto = once(function () {
+ Object.defineProperty(Function.prototype, 'once', {
+ value: function value() {
+ return once(this);
+ },
+ configurable: true
+ });
+ Object.defineProperty(Function.prototype, 'onceStrict', {
+ value: function value() {
+ return onceStrict(this);
+ },
+ configurable: true
+ });
+});
+
+function once(fn) {
+ var f = function f() {
+ if (f.called) return f.value;
+ f.called = true;
+ return f.value = fn.apply(this, arguments);
+ };
+
+ f.called = false;
+ return f;
+}
+
+function onceStrict(fn) {
+ var f = function f() {
+ if (f.called) throw new Error(f.onceError);
+ f.called = true;
+ return f.value = fn.apply(this, arguments);
+ };
+
+ var name = fn.name || 'Function wrapped with `once`';
+ f.onceError = name + " shouldn't be called more than once";
+ f.called = false;
+ return f;
+}
+once_1.strict = strict;
+
+var reqs = Object.create(null);
+var inflight_1 = wrappy_1(inflight);
+
+function inflight(key, cb) {
+ if (reqs[key]) {
+ reqs[key].push(cb);
+ return null;
+ } else {
+ reqs[key] = [cb];
+ return makeres(key);
+ }
+}
+
+function makeres(key) {
+ return once_1(function RES() {
+ var cbs = reqs[key];
+ var len = cbs.length;
+ var args = slice(arguments); // XXX It's somewhat ambiguous whether a new callback added in this
+ // pass should be queued for later execution if something in the
+ // list of callbacks throws, or if it should just be discarded.
+ // However, it's such an edge case that it hardly matters, and either
+ // choice is likely as surprising as the other.
+ // As it happens, we do go ahead and schedule it for later execution.
+
+ try {
+ for (var i = 0; i < len; i++) {
+ cbs[i].apply(null, args);
+ }
+ } finally {
+ if (cbs.length > len) {
+ // added more in the interim.
+ // de-zalgo, just in case, but don't call again.
+ cbs.splice(0, len);
+ process.nextTick(function () {
+ RES.apply(null, args);
+ });
+ } else {
+ delete reqs[key];
+ }
+ }
+ });
+}
+
+function slice(args) {
+ var length = args.length;
+ var array = [];
+
+ for (var i = 0; i < length; i++) {
+ array[i] = args[i];
+ }
+
+ return array;
+}
+
+//
+// 1. Get the minimatch set
+// 2. For each pattern in the set, PROCESS(pattern, false)
+// 3. Store matches per-set, then uniq them
+//
+// PROCESS(pattern, inGlobStar)
+// Get the first [n] items from pattern that are all strings
+// Join these together. This is PREFIX.
+// If there is no more remaining, then stat(PREFIX) and
+// add to matches if it succeeds. END.
+//
+// If inGlobStar and PREFIX is symlink and points to dir
+// set ENTRIES = []
+// else readdir(PREFIX) as ENTRIES
+// If fail, END
+//
+// with ENTRIES
+// If pattern[n] is GLOBSTAR
+// // handle the case where the globstar match is empty
+// // by pruning it out, and testing the resulting pattern
+// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)
+// // handle other cases.
+// for ENTRY in ENTRIES (not dotfiles)
+// // attach globstar + tail onto the entry
+// // Mark that this entry is a globstar match
+// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)
+//
+// else // not globstar
+// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)
+// Test ENTRY against pattern[n]
+// If fails, continue
+// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])
+//
+// Caveat:
+// Cache all stats and readdirs results to minimize syscall. Since all
+// we ever care about is existence and directory-ness, we can just keep
+// `true` for files, and [children,...] for directories, or `false` for
+// things that don't exist.
+
+var glob_1 = glob;
+var EE = events$1.EventEmitter;
+var setopts$2 = common$2.setopts;
+var ownProp$2 = common$2.ownProp;
+var childrenIgnored$2 = common$2.childrenIgnored;
+var isIgnored$2 = common$2.isIgnored;
+
+function glob(pattern, options, cb) {
+ if (typeof options === 'function') cb = options, options = {};
+ if (!options) options = {};
+
+ if (options.sync) {
+ if (cb) throw new TypeError('callback provided to sync glob');
+ return sync$1(pattern, options);
+ }
+
+ return new Glob(pattern, options, cb);
+}
+
+glob.sync = sync$1;
+var GlobSync$1 = glob.GlobSync = sync$1.GlobSync; // old api surface
+
+glob.glob = glob;
+
+function extend(origin, add) {
+ if (add === null || typeof add !== 'object') {
+ return origin;
+ }
+
+ var keys = Object.keys(add);
+ var i = keys.length;
+
+ while (i--) {
+ origin[keys[i]] = add[keys[i]];
+ }
+
+ return origin;
+}
+
+glob.hasMagic = function (pattern, options_) {
+ var options = extend({}, options_);
+ options.noprocess = true;
+ var g = new Glob(pattern, options);
+ var set = g.minimatch.set;
+ if (!pattern) return false;
+ if (set.length > 1) return true;
+
+ for (var j = 0; j < set[0].length; j++) {
+ if (typeof set[0][j] !== 'string') return true;
+ }
+
+ return false;
+};
+
+glob.Glob = Glob;
+inherits(Glob, EE);
+
+function Glob(pattern, options, cb) {
+ if (typeof options === 'function') {
+ cb = options;
+ options = null;
+ }
+
+ if (options && options.sync) {
+ if (cb) throw new TypeError('callback provided to sync glob');
+ return new GlobSync$1(pattern, options);
+ }
+
+ if (!(this instanceof Glob)) return new Glob(pattern, options, cb);
+ setopts$2(this, pattern, options);
+ this._didRealPath = false; // process each pattern in the minimatch set
+
+ var n = this.minimatch.set.length; // The matches are stored as {<filename>: true,...} so that
+ // duplicates are automagically pruned.
+ // Later, we do an Object.keys() on these.
+ // Keep them as a list so we can fill in when nonull is set.
+
+ this.matches = new Array(n);
+
+ if (typeof cb === 'function') {
+ cb = once_1(cb);
+ this.on('error', cb);
+ this.on('end', function (matches) {
+ cb(null, matches);
+ });
+ }
+
+ var self = this;
+ this._processing = 0;
+ this._emitQueue = [];
+ this._processQueue = [];
+ this.paused = false;
+ if (this.noprocess) return this;
+ if (n === 0) return done();
+ var sync = true;
+
+ for (var i = 0; i < n; i++) {
+ this._process(this.minimatch.set[i], i, false, done);
+ }
+
+ sync = false;
+
+ function done() {
+ --self._processing;
+
+ if (self._processing <= 0) {
+ if (sync) {
+ process.nextTick(function () {
+ self._finish();
+ });
+ } else {
+ self._finish();
+ }
+ }
+ }
+}
+
+Glob.prototype._finish = function () {
+ assert$1(this instanceof Glob);
+ if (this.aborted) return;
+ if (this.realpath && !this._didRealpath) return this._realpath();
+ common$2.finish(this);
+ this.emit('end', this.found);
+};
+
+Glob.prototype._realpath = function () {
+ if (this._didRealpath) return;
+ this._didRealpath = true;
+ var n = this.matches.length;
+ if (n === 0) return this._finish();
+ var self = this;
+
+ for (var i = 0; i < this.matches.length; i++) {
+ this._realpathSet(i, next);
+ }
+
+ function next() {
+ if (--n === 0) self._finish();
+ }
+};
+
+Glob.prototype._realpathSet = function (index, cb) {
+ var matchset = this.matches[index];
+ if (!matchset) return cb();
+ var found = Object.keys(matchset);
+ var self = this;
+ var n = found.length;
+ if (n === 0) return cb();
+ var set = this.matches[index] = Object.create(null);
+ found.forEach(function (p, i) {
+ // If there's a problem with the stat, then it means that
+ // one or more of the links in the realpath couldn't be
+ // resolved. just return the abs value in that case.
+ p = self._makeAbs(p);
+ fs_realpath.realpath(p, self.realpathCache, function (er, real) {
+ if (!er) set[real] = true;else if (er.syscall === 'stat') set[p] = true;else self.emit('error', er); // srsly wtf right here
+
+ if (--n === 0) {
+ self.matches[index] = set;
+ cb();
+ }
+ });
+ });
+};
+
+Glob.prototype._mark = function (p) {
+ return common$2.mark(this, p);
+};
+
+Glob.prototype._makeAbs = function (f) {
+ return common$2.makeAbs(this, f);
+};
+
+Glob.prototype.abort = function () {
+ this.aborted = true;
+ this.emit('abort');
+};
+
+Glob.prototype.pause = function () {
+ if (!this.paused) {
+ this.paused = true;
+ this.emit('pause');
+ }
+};
+
+Glob.prototype.resume = function () {
+ if (this.paused) {
+ this.emit('resume');
+ this.paused = false;
+
+ if (this._emitQueue.length) {
+ var eq = this._emitQueue.slice(0);
+
+ this._emitQueue.length = 0;
+
+ for (var i = 0; i < eq.length; i++) {
+ var e = eq[i];
+
+ this._emitMatch(e[0], e[1]);
+ }
+ }
+
+ if (this._processQueue.length) {
+ var pq = this._processQueue.slice(0);
+
+ this._processQueue.length = 0;
+
+ for (var i = 0; i < pq.length; i++) {
+ var p = pq[i];
+ this._processing--;
+
+ this._process(p[0], p[1], p[2], p[3]);
+ }
+ }
+ }
+};
+
+Glob.prototype._process = function (pattern, index, inGlobStar, cb) {
+ assert$1(this instanceof Glob);
+ assert$1(typeof cb === 'function');
+ if (this.aborted) return;
+ this._processing++;
+
+ if (this.paused) {
+ this._processQueue.push([pattern, index, inGlobStar, cb]);
+
+ return;
+ } //console.error('PROCESS %d', this._processing, pattern)
+ // Get the first [n] parts of pattern that are all strings.
+
+
+ var n = 0;
+
+ while (typeof pattern[n] === 'string') {
+ n++;
+ } // now n is the index of the first one that is *not* a string.
+ // see if there's anything else
+
+
+ var prefix;
+
+ switch (n) {
+ // if not, then this is rather simple
+ case pattern.length:
+ this._processSimple(pattern.join('/'), index, cb);
+
+ return;
+
+ case 0:
+ // pattern *starts* with some non-trivial item.
+ // going to readdir(cwd), but not include the prefix in matches.
+ prefix = null;
+ break;
+
+ default:
+ // pattern has some string bits in the front.
+ // whatever it starts with, whether that's 'absolute' like /foo/bar,
+ // or 'relative' like '../baz'
+ prefix = pattern.slice(0, n).join('/');
+ break;
+ }
+
+ var remain = pattern.slice(n); // get the list of entries.
+
+ var read;
+ if (prefix === null) read = '.';else if (pathIsAbsolute(prefix) || pathIsAbsolute(pattern.join('/'))) {
+ if (!prefix || !pathIsAbsolute(prefix)) prefix = '/' + prefix;
+ read = prefix;
+ } else read = prefix;
+
+ var abs = this._makeAbs(read); //if ignored, skip _processing
+
+
+ if (childrenIgnored$2(this, read)) return cb();
+ var isGlobStar = remain[0] === minimatch_1.GLOBSTAR;
+ if (isGlobStar) this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb);else this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb);
+};
+
+Glob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {
+ var self = this;
+
+ this._readdir(abs, inGlobStar, function (er, entries) {
+ return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb);
+ });
+};
+
+Glob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
+ // if the abs isn't a dir, then nothing can match!
+ if (!entries) return cb(); // It will only match dot entries if it starts with a dot, or if
+ // dot is set. Stuff like @(.foo|.bar) isn't allowed.
+
+ var pn = remain[0];
+ var negate = !!this.minimatch.negate;
+ var rawGlob = pn._glob;
+ var dotOk = this.dot || rawGlob.charAt(0) === '.';
+ var matchedEntries = [];
+
+ for (var i = 0; i < entries.length; i++) {
+ var e = entries[i];
+
+ if (e.charAt(0) !== '.' || dotOk) {
+ var m;
+
+ if (negate && !prefix) {
+ m = !e.match(pn);
+ } else {
+ m = e.match(pn);
+ }
+
+ if (m) matchedEntries.push(e);
+ }
+ } //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)
+
+
+ var len = matchedEntries.length; // If there are no matched entries, then nothing matches.
+
+ if (len === 0) return cb(); // if this is the last remaining pattern bit, then no need for
+ // an additional stat *unless* the user has specified mark or
+ // stat explicitly. We know they exist, since readdir returned
+ // them.
+
+ if (remain.length === 1 && !this.mark && !this.stat) {
+ if (!this.matches[index]) this.matches[index] = Object.create(null);
+
+ for (var i = 0; i < len; i++) {
+ var e = matchedEntries[i];
+
+ if (prefix) {
+ if (prefix !== '/') e = prefix + '/' + e;else e = prefix + e;
+ }
+
+ if (e.charAt(0) === '/' && !this.nomount) {
+ e = path$2.join(this.root, e);
+ }
+
+ this._emitMatch(index, e);
+ } // This was the last one, and no stats were needed
+
+
+ return cb();
+ } // now test all matched entries as stand-ins for that part
+ // of the pattern.
+
+
+ remain.shift();
+
+ for (var i = 0; i < len; i++) {
+ var e = matchedEntries[i];
+
+ if (prefix) {
+ if (prefix !== '/') e = prefix + '/' + e;else e = prefix + e;
+ }
+
+ this._process([e].concat(remain), index, inGlobStar, cb);
+ }
+
+ cb();
+};
+
+Glob.prototype._emitMatch = function (index, e) {
+ if (this.aborted) return;
+ if (isIgnored$2(this, e)) return;
+
+ if (this.paused) {
+ this._emitQueue.push([index, e]);
+
+ return;
+ }
+
+ var abs = pathIsAbsolute(e) ? e : this._makeAbs(e);
+ if (this.mark) e = this._mark(e);
+ if (this.absolute) e = abs;
+ if (this.matches[index][e]) return;
+
+ if (this.nodir) {
+ var c = this.cache[abs];
+ if (c === 'DIR' || Array.isArray(c)) return;
+ }
+
+ this.matches[index][e] = true;
+ var st = this.statCache[abs];
+ if (st) this.emit('stat', e, st);
+ this.emit('match', e);
+};
+
+Glob.prototype._readdirInGlobStar = function (abs, cb) {
+ if (this.aborted) return; // follow all symlinked directories forever
+ // just proceed as if this is a non-globstar situation
+
+ if (this.follow) return this._readdir(abs, false, cb);
+ var lstatkey = 'lstat\0' + abs;
+ var self = this;
+ var lstatcb = inflight_1(lstatkey, lstatcb_);
+ if (lstatcb) fs$1.lstat(abs, lstatcb);
+
+ function lstatcb_(er, lstat) {
+ if (er && er.code === 'ENOENT') return cb();
+ var isSym = lstat && lstat.isSymbolicLink();
+ self.symlinks[abs] = isSym; // If it's not a symlink or a dir, then it's definitely a regular file.
+ // don't bother doing a readdir in that case.
+
+ if (!isSym && lstat && !lstat.isDirectory()) {
+ self.cache[abs] = 'FILE';
+ cb();
+ } else self._readdir(abs, false, cb);
+ }
+};
+
+Glob.prototype._readdir = function (abs, inGlobStar, cb) {
+ if (this.aborted) return;
+ cb = inflight_1('readdir\0' + abs + '\0' + inGlobStar, cb);
+ if (!cb) return; //console.error('RD %j %j', +inGlobStar, abs)
+
+ if (inGlobStar && !ownProp$2(this.symlinks, abs)) return this._readdirInGlobStar(abs, cb);
+
+ if (ownProp$2(this.cache, abs)) {
+ var c = this.cache[abs];
+ if (!c || c === 'FILE') return cb();
+ if (Array.isArray(c)) return cb(null, c);
+ }
+ fs$1.readdir(abs, readdirCb(this, abs, cb));
+};
+
+function readdirCb(self, abs, cb) {
+ return function (er, entries) {
+ if (er) self._readdirError(abs, er, cb);else self._readdirEntries(abs, entries, cb);
+ };
+}
+
+Glob.prototype._readdirEntries = function (abs, entries, cb) {
+ if (this.aborted) return; // if we haven't asked to stat everything, then just
+ // assume that everything in there exists, so we can avoid
+ // having to stat it a second time.
+
+ if (!this.mark && !this.stat) {
+ for (var i = 0; i < entries.length; i++) {
+ var e = entries[i];
+ if (abs === '/') e = abs + e;else e = abs + '/' + e;
+ this.cache[e] = true;
+ }
+ }
+
+ this.cache[abs] = entries;
+ return cb(null, entries);
+};
+
+Glob.prototype._readdirError = function (f, er, cb) {
+ if (this.aborted) return; // handle errors, and cache the information
+
+ switch (er.code) {
+ case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205
+
+ case 'ENOTDIR':
+ // totally normal. means it *does* exist.
+ var abs = this._makeAbs(f);
+
+ this.cache[abs] = 'FILE';
+
+ if (abs === this.cwdAbs) {
+ var error = new Error(er.code + ' invalid cwd ' + this.cwd);
+ error.path = this.cwd;
+ error.code = er.code;
+ this.emit('error', error);
+ this.abort();
+ }
+
+ break;
+
+ case 'ENOENT': // not terribly unusual
+
+ case 'ELOOP':
+ case 'ENAMETOOLONG':
+ case 'UNKNOWN':
+ this.cache[this._makeAbs(f)] = false;
+ break;
+
+ default:
+ // some unusual error. Treat as failure.
+ this.cache[this._makeAbs(f)] = false;
+
+ if (this.strict) {
+ this.emit('error', er); // If the error is handled, then we abort
+ // if not, we threw out of here
+
+ this.abort();
+ }
+
+ if (!this.silent) console.error('glob error', er);
+ break;
+ }
+
+ return cb();
+};
+
+Glob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {
+ var self = this;
+
+ this._readdir(abs, inGlobStar, function (er, entries) {
+ self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb);
+ });
+};
+
+Glob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {
+ //console.error('pgs2', prefix, remain[0], entries)
+ // no entries means not a dir, so it can never have matches
+ // foo.txt/** doesn't match foo.txt
+ if (!entries) return cb(); // test without the globstar, and with every child both below
+ // and replacing the globstar.
+
+ var remainWithoutGlobStar = remain.slice(1);
+ var gspref = prefix ? [prefix] : [];
+ var noGlobStar = gspref.concat(remainWithoutGlobStar); // the noGlobStar pattern exits the inGlobStar state
+
+ this._process(noGlobStar, index, false, cb);
+
+ var isSym = this.symlinks[abs];
+ var len = entries.length; // If it's a symlink, and we're in a globstar, then stop
+
+ if (isSym && inGlobStar) return cb();
+
+ for (var i = 0; i < len; i++) {
+ var e = entries[i];
+ if (e.charAt(0) === '.' && !this.dot) continue; // these two cases enter the inGlobStar state
+
+ var instead = gspref.concat(entries[i], remainWithoutGlobStar);
+
+ this._process(instead, index, true, cb);
+
+ var below = gspref.concat(entries[i], remain);
+
+ this._process(below, index, true, cb);
+ }
+
+ cb();
+};
+
+Glob.prototype._processSimple = function (prefix, index, cb) {
+ // XXX review this. Shouldn't it be doing the mounting etc
+ // before doing stat? kinda weird?
+ var self = this;
+
+ this._stat(prefix, function (er, exists) {
+ self._processSimple2(prefix, index, er, exists, cb);
+ });
+};
+
+Glob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {
+ //console.error('ps2', prefix, exists)
+ if (!this.matches[index]) this.matches[index] = Object.create(null); // If it doesn't exist, then just mark the lack of results
+
+ if (!exists) return cb();
+
+ if (prefix && pathIsAbsolute(prefix) && !this.nomount) {
+ var trail = /[\/\\]$/.test(prefix);
+
+ if (prefix.charAt(0) === '/') {
+ prefix = path$2.join(this.root, prefix);
+ } else {
+ prefix = path$2.resolve(this.root, prefix);
+ if (trail) prefix += '/';
+ }
+ }
+
+ if (process.platform === 'win32') prefix = prefix.replace(/\\/g, '/'); // Mark this as a match
+
+ this._emitMatch(index, prefix);
+
+ cb();
+}; // Returns either 'DIR', 'FILE', or false
+
+
+Glob.prototype._stat = function (f, cb) {
+ var abs = this._makeAbs(f);
+
+ var needDir = f.slice(-1) === '/';
+ if (f.length > this.maxLength) return cb();
+
+ if (!this.stat && ownProp$2(this.cache, abs)) {
+ var c = this.cache[abs];
+ if (Array.isArray(c)) c = 'DIR'; // It exists, but maybe not how we need it
+
+ if (!needDir || c === 'DIR') return cb(null, c);
+ if (needDir && c === 'FILE') return cb(); // otherwise we have to stat, because maybe c=true
+ // if we know it exists, but not what it is.
+ }
+ var stat = this.statCache[abs];
+
+ if (stat !== undefined) {
+ if (stat === false) return cb(null, stat);else {
+ var type = stat.isDirectory() ? 'DIR' : 'FILE';
+ if (needDir && type === 'FILE') return cb();else return cb(null, type, stat);
+ }
+ }
+
+ var self = this;
+ var statcb = inflight_1('stat\0' + abs, lstatcb_);
+ if (statcb) fs$1.lstat(abs, statcb);
+
+ function lstatcb_(er, lstat) {
+ if (lstat && lstat.isSymbolicLink()) {
+ // If it's a symlink, then treat it as the target, unless
+ // the target does not exist, then treat it as a file.
+ return fs$1.stat(abs, function (er, stat) {
+ if (er) self._stat2(f, abs, null, lstat, cb);else self._stat2(f, abs, er, stat, cb);
+ });
+ } else {
+ self._stat2(f, abs, er, lstat, cb);
+ }
+ }
+};
+
+Glob.prototype._stat2 = function (f, abs, er, stat, cb) {
+ if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {
+ this.statCache[abs] = false;
+ return cb();
+ }
+
+ var needDir = f.slice(-1) === '/';
+ this.statCache[abs] = stat;
+ if (abs.slice(-1) === '/' && stat && !stat.isDirectory()) return cb(null, false, stat);
+ var c = true;
+ if (stat) c = stat.isDirectory() ? 'DIR' : 'FILE';
+ this.cache[abs] = this.cache[abs] || c;
+ if (needDir && c === 'FILE') return cb();
+ return cb(null, c, stat);
+};
+
+var pify_1 = createCommonjsModule(function (module) {
+
+ var processFn = function processFn(fn, P, opts) {
+ return function () {
+ var that = this;
+ var args = new Array(arguments.length);
+
+ for (var i = 0; i < arguments.length; i++) {
+ args[i] = arguments[i];
+ }
+
+ return new P(function (resolve, reject) {
+ args.push(function (err, result) {
+ if (err) {
+ reject(err);
+ } else if (opts.multiArgs) {
+ var results = new Array(arguments.length - 1);
+
+ for (var i = 1; i < arguments.length; i++) {
+ results[i - 1] = arguments[i];
+ }
+
+ resolve(results);
+ } else {
+ resolve(result);
+ }
+ });
+ fn.apply(that, args);
+ });
+ };
+ };
+
+ var pify = module.exports = function (obj, P, opts) {
+ if (typeof P !== 'function') {
+ opts = P;
+ P = Promise;
+ }
+
+ opts = opts || {};
+ opts.exclude = opts.exclude || [/.+Sync$/];
+
+ var filter = function filter(key) {
+ var match = function match(pattern) {
+ return typeof pattern === 'string' ? key === pattern : pattern.test(key);
+ };
+
+ return opts.include ? opts.include.some(match) : !opts.exclude.some(match);
+ };
+
+ var ret = typeof obj === 'function' ? function () {
+ if (opts.excludeMain) {
+ return obj.apply(this, arguments);
+ }
+
+ return processFn(obj, P, opts).apply(this, arguments);
+ } : {};
+ return Object.keys(obj).reduce(function (ret, key) {
+ var x = obj[key];
+ ret[key] = typeof x === 'function' && filter(key) ? processFn(x, P, opts) : x;
+ return ret;
+ }, ret);
+ };
+
+ pify.all = pify;
+});
+
+var globP = pify_1(glob_1, pinkiePromise).bind(glob_1);
+
+function isNegative(pattern) {
+ return pattern[0] === '!';
+}
+
+function isString(value) {
+ return typeof value === 'string';
+}
+
+function assertPatternsInput(patterns) {
+ if (!patterns.every(isString)) {
+ throw new TypeError('patterns must be a string or an array of strings');
+ }
+}
+
+function generateGlobTasks(patterns, opts) {
+ patterns = [].concat(patterns);
+ assertPatternsInput(patterns);
+ var globTasks = [];
+ opts = objectAssign({
+ cache: Object.create(null),
+ statCache: Object.create(null),
+ realpathCache: Object.create(null),
+ symlinks: Object.create(null),
+ ignore: []
+ }, opts);
+ patterns.forEach(function (pattern, i) {
+ if (isNegative(pattern)) {
+ return;
+ }
+
+ var ignore = patterns.slice(i).filter(isNegative).map(function (pattern) {
+ return pattern.slice(1);
+ });
+ globTasks.push({
+ pattern: pattern,
+ opts: objectAssign({}, opts, {
+ ignore: opts.ignore.concat(ignore)
+ })
+ });
+ });
+ return globTasks;
+}
+
+var globby = function globby(patterns, opts) {
+ var globTasks;
+
+ try {
+ globTasks = generateGlobTasks(patterns, opts);
+ } catch (err) {
+ return pinkiePromise.reject(err);
+ }
+
+ return pinkiePromise.all(globTasks.map(function (task) {
+ return globP(task.pattern, task.opts);
+ })).then(function (paths) {
+ return arrayUnion.apply(null, paths);
+ });
+};
+
+var sync$2 = function sync(patterns, opts) {
+ var globTasks = generateGlobTasks(patterns, opts);
+ return globTasks.reduce(function (matches, task) {
+ return arrayUnion(matches, glob_1.sync(task.pattern, task.opts));
+ }, []);
+};
+
+var generateGlobTasks_1 = generateGlobTasks;
+
+var hasMagic = function hasMagic(patterns, opts) {
+ return [].concat(patterns).some(function (pattern) {
+ return glob_1.hasMagic(pattern, opts);
+ });
+};
+globby.sync = sync$2;
+globby.generateGlobTasks = generateGlobTasks_1;
+globby.hasMagic = hasMagic;
+
+var addLeadingComment$2 = utilShared.addLeadingComment,
+ addTrailingComment$2 = utilShared.addTrailingComment,
+ addDanglingComment$2 = utilShared.addDanglingComment;
+
+function handleOwnLineComment(comment, text, options, ast, isLastComment) {
+ var precedingNode = comment.precedingNode,
+ enclosingNode = comment.enclosingNode,
+ followingNode = comment.followingNode;
+
+ if (handleLastFunctionArgComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleMemberExpressionComments(enclosingNode, followingNode, comment) || handleIfStatementComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleWhileComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleTryStatementComments(enclosingNode, precedingNode, followingNode, comment) || handleClassComments(enclosingNode, precedingNode, followingNode, comment) || handleImportSpecifierComments(enclosingNode, comment) || handleForComments(enclosingNode, precedingNode, comment) || handleUnionTypeComments(precedingNode, enclosingNode, followingNode, comment) || handleOnlyComments(enclosingNode, ast, comment, isLastComment) || handleImportDeclarationComments(text, enclosingNode, precedingNode, comment, options) || handleAssignmentPatternComments(enclosingNode, comment) || handleMethodNameComments(text, enclosingNode, precedingNode, comment, options)) {
+ return true;
+ }
+
+ return false;
+}
+
+function handleEndOfLineComment(comment, text, options, ast, isLastComment) {
+ var precedingNode = comment.precedingNode,
+ enclosingNode = comment.enclosingNode,
+ followingNode = comment.followingNode;
+
+ if (handleLastFunctionArgComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleConditionalExpressionComments(enclosingNode, precedingNode, followingNode, comment, text, options) || handleImportSpecifierComments(enclosingNode, comment) || handleIfStatementComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleWhileComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleTryStatementComments(enclosingNode, precedingNode, followingNode, comment) || handleClassComments(enclosingNode, precedingNode, followingNode, comment) || handleLabeledStatementComments(enclosingNode, comment) || handleCallExpressionComments(precedingNode, enclosingNode, comment) || handlePropertyComments(enclosingNode, comment) || handleOnlyComments(enclosingNode, ast, comment, isLastComment) || handleTypeAliasComments(enclosingNode, followingNode, comment) || handleVariableDeclaratorComments(enclosingNode, followingNode, comment)) {
+ return true;
+ }
+
+ return false;
+}
+
+function handleRemainingComment(comment, text, options, ast, isLastComment) {
+ var precedingNode = comment.precedingNode,
+ enclosingNode = comment.enclosingNode,
+ followingNode = comment.followingNode;
+
+ if (handleIfStatementComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleWhileComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleObjectPropertyAssignment(enclosingNode, precedingNode, comment) || handleCommentInEmptyParens(text, enclosingNode, comment, options) || handleMethodNameComments(text, enclosingNode, precedingNode, comment, options) || handleOnlyComments(enclosingNode, ast, comment, isLastComment) || handleCommentAfterArrowParams(text, enclosingNode, comment, options) || handleFunctionNameComments(text, enclosingNode, precedingNode, comment, options) || handleTSMappedTypeComments(text, enclosingNode, precedingNode, followingNode, comment) || handleBreakAndContinueStatementComments(enclosingNode, comment)) {
+ return true;
+ }
+
+ return false;
+}
+
+function addBlockStatementFirstComment(node, comment) {
+ var body = node.body.filter(function (n) {
+ return n.type !== "EmptyStatement";
+ });
+
+ if (body.length === 0) {
+ addDanglingComment$2(node, comment);
+ } else {
+ addLeadingComment$2(body[0], comment);
+ }
+}
+
+function addBlockOrNotComment(node, comment) {
+ if (node.type === "BlockStatement") {
+ addBlockStatementFirstComment(node, comment);
+ } else {
+ addLeadingComment$2(node, comment);
+ }
+} // There are often comments before the else clause of if statements like
+//
+// if (1) { ... }
+// // comment
+// else { ... }
+//
+// They are being attached as leading comments of the BlockExpression which
+// is not well printed. What we want is to instead move the comment inside
+// of the block and make it leadingComment of the first element of the block
+// or dangling comment of the block if there is nothing inside
+//
+// if (1) { ... }
+// else {
+// // comment
+// ...
+// }
+
+
+function handleIfStatementComments(text, precedingNode, enclosingNode, followingNode, comment, options) {
+ if (!enclosingNode || enclosingNode.type !== "IfStatement" || !followingNode) {
+ return false;
+ } // We unfortunately have no way using the AST or location of nodes to know
+ // if the comment is positioned before the condition parenthesis:
+ // if (a /* comment */) {}
+ // The only workaround I found is to look at the next character to see if
+ // it is a ).
+
+
+ var nextCharacter = util.getNextNonSpaceNonCommentCharacter(text, comment, options.locEnd);
+
+ if (nextCharacter === ")") {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ } // Comments before `else`:
+ // - treat as trailing comments of the consequent, if it's a BlockStatement
+ // - treat as a dangling comment otherwise
+
+
+ if (precedingNode === enclosingNode.consequent && followingNode === enclosingNode.alternate) {
+ if (precedingNode.type === "BlockStatement") {
+ addTrailingComment$2(precedingNode, comment);
+ } else {
+ addDanglingComment$2(enclosingNode, comment);
+ }
+
+ return true;
+ }
+
+ if (followingNode.type === "BlockStatement") {
+ addBlockStatementFirstComment(followingNode, comment);
+ return true;
+ }
+
+ if (followingNode.type === "IfStatement") {
+ addBlockOrNotComment(followingNode.consequent, comment);
+ return true;
+ } // For comments positioned after the condition parenthesis in an if statement
+ // before the consequent without brackets on, such as
+ // if (a) /* comment */ true,
+ // we look at the next character to see if the following node
+ // is the consequent for the if statement
+
+
+ if (enclosingNode.consequent === followingNode) {
+ addLeadingComment$2(followingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleWhileComments(text, precedingNode, enclosingNode, followingNode, comment, options) {
+ if (!enclosingNode || enclosingNode.type !== "WhileStatement" || !followingNode) {
+ return false;
+ } // We unfortunately have no way using the AST or location of nodes to know
+ // if the comment is positioned before the condition parenthesis:
+ // while (a /* comment */) {}
+ // The only workaround I found is to look at the next character to see if
+ // it is a ).
+
+
+ var nextCharacter = util.getNextNonSpaceNonCommentCharacter(text, comment, options.locEnd);
+
+ if (nextCharacter === ")") {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ if (followingNode.type === "BlockStatement") {
+ addBlockStatementFirstComment(followingNode, comment);
+ return true;
+ }
+
+ return false;
+} // Same as IfStatement but for TryStatement
+
+
+function handleTryStatementComments(enclosingNode, precedingNode, followingNode, comment) {
+ if (!enclosingNode || enclosingNode.type !== "TryStatement" && enclosingNode.type !== "CatchClause" || !followingNode) {
+ return false;
+ }
+
+ if (enclosingNode.type === "CatchClause" && precedingNode) {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ if (followingNode.type === "BlockStatement") {
+ addBlockStatementFirstComment(followingNode, comment);
+ return true;
+ }
+
+ if (followingNode.type === "TryStatement") {
+ addBlockOrNotComment(followingNode.finalizer, comment);
+ return true;
+ }
+
+ if (followingNode.type === "CatchClause") {
+ addBlockOrNotComment(followingNode.body, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleMemberExpressionComments(enclosingNode, followingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "MemberExpression" || enclosingNode.type === "OptionalMemberExpression") && followingNode && followingNode.type === "Identifier") {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleConditionalExpressionComments(enclosingNode, precedingNode, followingNode, comment, text, options) {
+ var isSameLineAsPrecedingNode = precedingNode && !util.hasNewlineInRange(text, options.locEnd(precedingNode), options.locStart(comment));
+
+ if ((!precedingNode || !isSameLineAsPrecedingNode) && enclosingNode && enclosingNode.type === "ConditionalExpression" && followingNode) {
+ addLeadingComment$2(followingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleObjectPropertyAssignment(enclosingNode, precedingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "ObjectProperty" || enclosingNode.type === "Property") && enclosingNode.shorthand && enclosingNode.key === precedingNode && enclosingNode.value.type === "AssignmentPattern") {
+ addTrailingComment$2(enclosingNode.value.left, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleClassComments(enclosingNode, precedingNode, followingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "ClassDeclaration" || enclosingNode.type === "ClassExpression") && enclosingNode.decorators && enclosingNode.decorators.length > 0 && !(followingNode && followingNode.type === "Decorator")) {
+ if (!enclosingNode.decorators || enclosingNode.decorators.length === 0) {
+ addLeadingComment$2(enclosingNode, comment);
+ } else {
+ addTrailingComment$2(enclosingNode.decorators[enclosingNode.decorators.length - 1], comment);
+ }
+
+ return true;
+ }
+
+ return false;
+}
+
+function handleMethodNameComments(text, enclosingNode, precedingNode, comment, options) {
+ // This is only needed for estree parsers (flow, typescript) to attach
+ // after a method name:
+ // obj = { fn /*comment*/() {} };
+ if (enclosingNode && precedingNode && (enclosingNode.type === "Property" || enclosingNode.type === "MethodDefinition") && precedingNode.type === "Identifier" && enclosingNode.key === precedingNode && // special Property case: { key: /*comment*/(value) };
+ // comment should be attached to value instead of key
+ util.getNextNonSpaceNonCommentCharacter(text, precedingNode, options.locEnd) !== ":") {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ } // Print comments between decorators and class methods as a trailing comment
+ // on the decorator node instead of the method node
+
+
+ if (precedingNode && enclosingNode && precedingNode.type === "Decorator" && (enclosingNode.type === "ClassMethod" || enclosingNode.type === "ClassProperty" || enclosingNode.type === "TSAbstractClassProperty" || enclosingNode.type === "TSAbstractMethodDefinition" || enclosingNode.type === "MethodDefinition")) {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleFunctionNameComments(text, enclosingNode, precedingNode, comment, options) {
+ if (util.getNextNonSpaceNonCommentCharacter(text, comment, options.locEnd) !== "(") {
+ return false;
+ }
+
+ if (precedingNode && enclosingNode && (enclosingNode.type === "FunctionDeclaration" || enclosingNode.type === "FunctionExpression" || enclosingNode.type === "ClassMethod" || enclosingNode.type === "MethodDefinition" || enclosingNode.type === "ObjectMethod")) {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleCommentAfterArrowParams(text, enclosingNode, comment, options) {
+ if (!(enclosingNode && enclosingNode.type === "ArrowFunctionExpression")) {
+ return false;
+ }
+
+ var index = utilShared.getNextNonSpaceNonCommentCharacterIndex(text, comment, options);
+
+ if (text.substr(index, 2) === "=>") {
+ addDanglingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleCommentInEmptyParens(text, enclosingNode, comment, options) {
+ if (util.getNextNonSpaceNonCommentCharacter(text, comment, options.locEnd) !== ")") {
+ return false;
+ } // Only add dangling comments to fix the case when no params are present,
+ // i.e. a function without any argument.
+
+
+ if (enclosingNode && ((enclosingNode.type === "FunctionDeclaration" || enclosingNode.type === "FunctionExpression" || enclosingNode.type === "ArrowFunctionExpression" || enclosingNode.type === "ClassMethod" || enclosingNode.type === "ObjectMethod") && enclosingNode.params.length === 0 || (enclosingNode.type === "CallExpression" || enclosingNode.type === "OptionalCallExpression" || enclosingNode.type === "NewExpression") && enclosingNode.arguments.length === 0)) {
+ addDanglingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ if (enclosingNode && enclosingNode.type === "MethodDefinition" && enclosingNode.value.params.length === 0) {
+ addDanglingComment$2(enclosingNode.value, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleLastFunctionArgComments(text, precedingNode, enclosingNode, followingNode, comment, options) {
+ // Type definitions functions
+ if (precedingNode && precedingNode.type === "FunctionTypeParam" && enclosingNode && enclosingNode.type === "FunctionTypeAnnotation" && followingNode && followingNode.type !== "FunctionTypeParam") {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ } // Real functions
+
+
+ if (precedingNode && (precedingNode.type === "Identifier" || precedingNode.type === "AssignmentPattern") && enclosingNode && (enclosingNode.type === "ArrowFunctionExpression" || enclosingNode.type === "FunctionExpression" || enclosingNode.type === "FunctionDeclaration" || enclosingNode.type === "ObjectMethod" || enclosingNode.type === "ClassMethod") && util.getNextNonSpaceNonCommentCharacter(text, comment, options.locEnd) === ")") {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ if (enclosingNode && enclosingNode.type === "FunctionDeclaration" && followingNode && followingNode.type === "BlockStatement") {
+ var functionParamRightParenIndex = function () {
+ if (enclosingNode.params.length !== 0) {
+ return util.getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, options.locEnd(util.getLast(enclosingNode.params)));
+ }
+
+ var functionParamLeftParenIndex = util.getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, options.locEnd(enclosingNode.id));
+ return util.getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, functionParamLeftParenIndex + 1);
+ }();
+
+ if (options.locStart(comment) > functionParamRightParenIndex) {
+ addBlockStatementFirstComment(followingNode, comment);
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function handleImportSpecifierComments(enclosingNode, comment) {
+ if (enclosingNode && enclosingNode.type === "ImportSpecifier") {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleLabeledStatementComments(enclosingNode, comment) {
+ if (enclosingNode && enclosingNode.type === "LabeledStatement") {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleBreakAndContinueStatementComments(enclosingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "ContinueStatement" || enclosingNode.type === "BreakStatement") && !enclosingNode.label) {
+ addTrailingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleCallExpressionComments(precedingNode, enclosingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "CallExpression" || enclosingNode.type === "OptionalCallExpression") && precedingNode && enclosingNode.callee === precedingNode && enclosingNode.arguments.length > 0) {
+ addLeadingComment$2(enclosingNode.arguments[0], comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleUnionTypeComments(precedingNode, enclosingNode, followingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "UnionTypeAnnotation" || enclosingNode.type === "TSUnionType")) {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handlePropertyComments(enclosingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "Property" || enclosingNode.type === "ObjectProperty")) {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleOnlyComments(enclosingNode, ast, comment, isLastComment) {
+ // With Flow the enclosingNode is undefined so use the AST instead.
+ if (ast && ast.body && ast.body.length === 0) {
+ if (isLastComment) {
+ addDanglingComment$2(ast, comment);
+ } else {
+ addLeadingComment$2(ast, comment);
+ }
+
+ return true;
+ } else if (enclosingNode && enclosingNode.type === "Program" && enclosingNode.body.length === 0 && enclosingNode.directives && enclosingNode.directives.length === 0) {
+ if (isLastComment) {
+ addDanglingComment$2(enclosingNode, comment);
+ } else {
+ addLeadingComment$2(enclosingNode, comment);
+ }
+
+ return true;
+ }
+
+ return false;
+}
+
+function handleForComments(enclosingNode, precedingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "ForInStatement" || enclosingNode.type === "ForOfStatement")) {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleImportDeclarationComments(text, enclosingNode, precedingNode, comment, options) {
+ if (precedingNode && precedingNode.type === "ImportSpecifier" && enclosingNode && enclosingNode.type === "ImportDeclaration" && util.hasNewline(text, options.locEnd(comment))) {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleAssignmentPatternComments(enclosingNode, comment) {
+ if (enclosingNode && enclosingNode.type === "AssignmentPattern") {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleTypeAliasComments(enclosingNode, followingNode, comment) {
+ if (enclosingNode && enclosingNode.type === "TypeAlias") {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleVariableDeclaratorComments(enclosingNode, followingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "VariableDeclarator" || enclosingNode.type === "AssignmentExpression") && followingNode && (followingNode.type === "ObjectExpression" || followingNode.type === "ArrayExpression" || followingNode.type === "TemplateLiteral" || followingNode.type === "TaggedTemplateExpression")) {
+ addLeadingComment$2(followingNode, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function handleTSMappedTypeComments(text, enclosingNode, precedingNode, followingNode, comment) {
+ if (!enclosingNode || enclosingNode.type !== "TSMappedType") {
+ return false;
+ }
+
+ if (followingNode && followingNode.type === "TSTypeParameter" && followingNode.name) {
+ addLeadingComment$2(followingNode.name, comment);
+ return true;
+ }
+
+ if (precedingNode && precedingNode.type === "TSTypeParameter" && precedingNode.constraint) {
+ addTrailingComment$2(precedingNode.constraint, comment);
+ return true;
+ }
+
+ return false;
+}
+
+function isBlockComment(comment) {
+ return comment.type === "Block" || comment.type === "CommentBlock";
+}
+
+function hasLeadingComment(node) {
+ var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
+ return true;
+ };
+
+ if (node.leadingComments) {
+ return node.leadingComments.some(fn);
+ }
+
+ if (node.comments) {
+ return node.comments.some(function (comment) {
+ return comment.leading && fn(comment);
+ });
+ }
+
+ return false;
+}
+
+var comments$1 = {
+ handleOwnLineComment,
+ handleEndOfLineComment,
+ handleRemainingComment,
+ hasLeadingComment,
+ isBlockComment
+};
+
+var isBlockComment$1 = comments$1.isBlockComment,
+ hasLeadingComment$1 = comments$1.hasLeadingComment;
+var _require$$1$builders = doc.builders,
+ indent$2 = _require$$1$builders.indent,
+ join$2 = _require$$1$builders.join,
+ hardline$3 = _require$$1$builders.hardline,
+ softline$1 = _require$$1$builders.softline,
+ literalline$1 = _require$$1$builders.literalline,
+ concat$4 = _require$$1$builders.concat,
+ group$1 = _require$$1$builders.group,
+ dedentToRoot$1 = _require$$1$builders.dedentToRoot,
+ _require$$1$utils = doc.utils,
+ mapDoc$3 = _require$$1$utils.mapDoc,
+ stripTrailingHardline$1 = _require$$1$utils.stripTrailingHardline;
+
+function embed(path, print, textToDoc, options) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ var parentParent = path.getParentNode(1);
+
+ switch (node.type) {
+ case "TemplateLiteral":
+ {
+ var isCss = [isStyledJsx, isStyledComponents, isCssProp, isAngularComponentStyles].some(function (isIt) {
+ return isIt(path);
+ });
+
+ if (isCss) {
+ // Get full template literal with expressions replaced by placeholders
+ var rawQuasis = node.quasis.map(function (q) {
+ return q.value.raw;
+ });
+ var placeholderID = 0;
+ var text = rawQuasis.reduce(function (prevVal, currVal, idx) {
+ return idx == 0 ? currVal : prevVal + "@prettier-placeholder-" + placeholderID++ + "-id" + currVal;
+ }, "");
+ var doc = textToDoc(text, {
+ parser: "css"
+ });
+ return transformCssDoc(doc, path, print);
+ }
+ /*
+ * react-relay and graphql-tag
+ * graphql`...`
+ * graphql.experimental`...`
+ * gql`...`
+ *
+ * This intentionally excludes Relay Classic tags, as Prettier does not
+ * support Relay Classic formatting.
+ */
+
+
+ if (isGraphQL(path)) {
+ var expressionDocs = node.expressions ? path.map(print, "expressions") : [];
+ var numQuasis = node.quasis.length;
+
+ if (numQuasis === 1 && node.quasis[0].value.raw.trim() === "") {
+ return "``";
+ }
+
+ var parts = [];
+
+ for (var i = 0; i < numQuasis; i++) {
+ var templateElement = node.quasis[i];
+ var isFirst = i === 0;
+ var isLast = i === numQuasis - 1;
+ var _text = templateElement.value.cooked; // Bail out if any of the quasis have an invalid escape sequence
+ // (which would make the `cooked` value be `null` or `undefined`)
+
+ if (typeof _text !== "string") {
+ return null;
+ }
+
+ var lines = _text.split("\n");
+
+ var numLines = lines.length;
+ var expressionDoc = expressionDocs[i];
+ var startsWithBlankLine = numLines > 2 && lines[0].trim() === "" && lines[1].trim() === "";
+ var endsWithBlankLine = numLines > 2 && lines[numLines - 1].trim() === "" && lines[numLines - 2].trim() === "";
+ var commentsAndWhitespaceOnly = lines.every(function (line) {
+ return /^\s*(?:#[^\r\n]*)?$/.test(line);
+ }); // Bail out if an interpolation occurs within a comment.
+
+ if (!isLast && /#[^\r\n]*$/.test(lines[numLines - 1])) {
+ return null;
+ }
+
+ var _doc = null;
+
+ if (commentsAndWhitespaceOnly) {
+ _doc = printGraphqlComments(lines);
+ } else {
+ _doc = stripTrailingHardline$1(textToDoc(_text, {
+ parser: "graphql"
+ }));
+ }
+
+ if (_doc) {
+ _doc = escapeTemplateCharacters(_doc, false);
+
+ if (!isFirst && startsWithBlankLine) {
+ parts.push("");
+ }
+
+ parts.push(_doc);
+
+ if (!isLast && endsWithBlankLine) {
+ parts.push("");
+ }
+ } else if (!isFirst && !isLast && startsWithBlankLine) {
+ parts.push("");
+ }
+
+ if (expressionDoc) {
+ parts.push(concat$4(["${", expressionDoc, "}"]));
+ }
+ }
+
+ return concat$4(["`", indent$2(concat$4([hardline$3, join$2(hardline$3, parts)])), hardline$3, "`"]);
+ }
+
+ var htmlParser = isHtml(path) ? "html" : isAngularComponentTemplate(path) ? "angular" : undefined;
+
+ if (htmlParser) {
+ return printHtmlTemplateLiteral(path, print, textToDoc, htmlParser, options.embeddedInHtml);
+ }
+
+ break;
+ }
+
+ case "TemplateElement":
+ {
+ /**
+ * md`...`
+ * markdown`...`
+ */
+ if (parentParent && parentParent.type === "TaggedTemplateExpression" && parent.quasis.length === 1 && parentParent.tag.type === "Identifier" && (parentParent.tag.name === "md" || parentParent.tag.name === "markdown")) {
+ var _text2 = parent.quasis[0].value.raw.replace(/((?:\\\\)*)\\`/g, function (_, backslashes) {
+ return "\\".repeat(backslashes.length / 2) + "`";
+ });
+
+ var indentation = getIndentation(_text2);
+ var hasIndent = indentation !== "";
+ return concat$4([hasIndent ? indent$2(concat$4([softline$1, printMarkdown(_text2.replace(new RegExp(`^${indentation}`, "gm"), ""))])) : concat$4([literalline$1, dedentToRoot$1(printMarkdown(_text2))]), softline$1]);
+ }
+
+ break;
+ }
+ }
+
+ function printMarkdown(text) {
+ var doc = textToDoc(text, {
+ parser: "markdown",
+ __inJsTemplate: true
+ });
+ return stripTrailingHardline$1(escapeTemplateCharacters(doc, true));
+ }
+}
+
+function getIndentation(str) {
+ var firstMatchedIndent = str.match(/^([^\S\n]*)\S/m);
+ return firstMatchedIndent === null ? "" : firstMatchedIndent[1];
+}
+
+function uncook(cookedValue) {
+ return cookedValue.replace(/([\\`]|\$\{)/g, "\\$1");
+}
+
+function escapeTemplateCharacters(doc, raw) {
+ return mapDoc$3(doc, function (currentDoc) {
+ if (!currentDoc.parts) {
+ return currentDoc;
+ }
+
+ var parts = [];
+ currentDoc.parts.forEach(function (part) {
+ if (typeof part === "string") {
+ parts.push(raw ? part.replace(/(\\*)`/g, "$1$1\\`") : uncook(part));
+ } else {
+ parts.push(part);
+ }
+ });
+ return Object.assign({}, currentDoc, {
+ parts
+ });
+ });
+}
+
+function transformCssDoc(quasisDoc, path, print) {
+ var parentNode = path.getValue();
+ var isEmpty = parentNode.quasis.length === 1 && !parentNode.quasis[0].value.raw.trim();
+
+ if (isEmpty) {
+ return "``";
+ }
+
+ var expressionDocs = parentNode.expressions ? path.map(print, "expressions") : [];
+ var newDoc = replacePlaceholders(quasisDoc, expressionDocs);
+ /* istanbul ignore if */
+
+ if (!newDoc) {
+ throw new Error("Couldn't insert all the expressions");
+ }
+
+ return concat$4(["`", indent$2(concat$4([hardline$3, stripTrailingHardline$1(newDoc)])), softline$1, "`"]);
+} // Search all the placeholders in the quasisDoc tree
+// and replace them with the expression docs one by one
+// returns a new doc with all the placeholders replaced,
+// or null if it couldn't replace any expression
+
+
+function replacePlaceholders(quasisDoc, expressionDocs) {
+ if (!expressionDocs || !expressionDocs.length) {
+ return quasisDoc;
+ }
+
+ var expressions = expressionDocs.slice();
+ var replaceCounter = 0;
+ var newDoc = mapDoc$3(quasisDoc, function (doc) {
+ if (!doc || !doc.parts || !doc.parts.length) {
+ return doc;
+ }
+
+ var parts = doc.parts;
+ var atIndex = parts.indexOf("@");
+ var placeholderIndex = atIndex + 1;
+
+ if (atIndex > -1 && typeof parts[placeholderIndex] === "string" && parts[placeholderIndex].startsWith("prettier-placeholder")) {
+ // If placeholder is split, join it
+ var at = parts[atIndex];
+ var placeholder = parts[placeholderIndex];
+ var rest = parts.slice(placeholderIndex + 1);
+ parts = parts.slice(0, atIndex).concat([at + placeholder]).concat(rest);
+ }
+
+ var atPlaceholderIndex = parts.findIndex(function (part) {
+ return typeof part === "string" && part.startsWith("@prettier-placeholder");
+ });
+
+ if (atPlaceholderIndex > -1) {
+ var _placeholder = parts[atPlaceholderIndex];
+
+ var _rest = parts.slice(atPlaceholderIndex + 1);
+
+ var placeholderMatch = _placeholder.match(/@prettier-placeholder-(.+)-id([\s\S]*)/);
+
+ var placeholderID = placeholderMatch[1]; // When the expression has a suffix appended, like:
+ // animation: linear ${time}s ease-out;
+
+ var suffix = placeholderMatch[2];
+ var expression = expressions[placeholderID];
+ replaceCounter++;
+ parts = parts.slice(0, atPlaceholderIndex).concat(["${", expression, "}" + suffix]).concat(_rest);
+ }
+
+ return Object.assign({}, doc, {
+ parts: parts
+ });
+ });
+ return expressions.length === replaceCounter ? newDoc : null;
+}
+
+function printGraphqlComments(lines) {
+ var parts = [];
+ var seenComment = false;
+ lines.map(function (textLine) {
+ return textLine.trim();
+ }).forEach(function (textLine, i, array) {
+ // Lines are either whitespace only, or a comment (with potential whitespace
+ // around it). Drop whitespace-only lines.
+ if (textLine === "") {
+ return;
+ }
+
+ if (array[i - 1] === "" && seenComment) {
+ // If a non-first comment is preceded by a blank (whitespace only) line,
+ // add in a blank line.
+ parts.push(concat$4([hardline$3, textLine]));
+ } else {
+ parts.push(textLine);
+ }
+
+ seenComment = true;
+ }); // If `lines` was whitespace only, return `null`.
+
+ return parts.length === 0 ? null : join$2(hardline$3, parts);
+}
+/**
+ * Template literal in these contexts:
+ * <style jsx>{`div{color:red}`}</style>
+ * css``
+ * css.global``
+ * css.resolve``
+ */
+
+
+function isStyledJsx(path) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ var parentParent = path.getParentNode(1);
+ return parentParent && node.quasis && parent.type === "JSXExpressionContainer" && parentParent.type === "JSXElement" && parentParent.openingElement.name.name === "style" && parentParent.openingElement.attributes.some(function (attribute) {
+ return attribute.name.name === "jsx";
+ }) || parent && parent.type === "TaggedTemplateExpression" && parent.tag.type === "Identifier" && parent.tag.name === "css" || parent && parent.type === "TaggedTemplateExpression" && parent.tag.type === "MemberExpression" && parent.tag.object.name === "css" && (parent.tag.property.name === "global" || parent.tag.property.name === "resolve");
+}
+/**
+ * Angular Components can have:
+ * - Inline HTML template
+ * - Inline CSS styles
+ *
+ * ...which are both within template literals somewhere
+ * inside of the Component decorator factory.
+ *
+ * E.g.
+ * @Component({
+ * template: `<div>...</div>`,
+ * styles: [`h1 { color: blue; }`]
+ * })
+ */
+
+
+function isAngularComponentStyles(path) {
+ return isPathMatch(path, [function (node) {
+ return node.type === "TemplateLiteral";
+ }, function (node, name) {
+ return node.type === "ArrayExpression" && name === "elements";
+ }, function (node, name) {
+ return node.type === "Property" && node.key.type === "Identifier" && node.key.name === "styles" && name === "value";
+ }].concat(getAngularComponentObjectExpressionPredicates()));
+}
+
+function isAngularComponentTemplate(path) {
+ return isPathMatch(path, [function (node) {
+ return node.type === "TemplateLiteral";
+ }, function (node, name) {
+ return node.type === "Property" && node.key.type === "Identifier" && node.key.name === "template" && name === "value";
+ }].concat(getAngularComponentObjectExpressionPredicates()));
+}
+
+function getAngularComponentObjectExpressionPredicates() {
+ return [function (node, name) {
+ return node.type === "ObjectExpression" && name === "properties";
+ }, function (node, name) {
+ return node.type === "CallExpression" && node.callee.type === "Identifier" && node.callee.name === "Component" && name === "arguments";
+ }, function (node, name) {
+ return node.type === "Decorator" && name === "expression";
+ }];
+}
+/**
+ * styled-components template literals
+ */
+
+
+function isStyledComponents(path) {
+ var parent = path.getParentNode();
+
+ if (!parent || parent.type !== "TaggedTemplateExpression") {
+ return false;
+ }
+
+ var tag = parent.tag;
+
+ switch (tag.type) {
+ case "MemberExpression":
+ return (// styled.foo``
+ isStyledIdentifier(tag.object) || // Component.extend``
+ isStyledExtend(tag)
+ );
+
+ case "CallExpression":
+ return (// styled(Component)``
+ isStyledIdentifier(tag.callee) || tag.callee.type === "MemberExpression" && (tag.callee.object.type === "MemberExpression" && ( // styled.foo.attrs({})``
+ isStyledIdentifier(tag.callee.object.object) || // Component.extend.attrs({})``
+ isStyledExtend(tag.callee.object)) || // styled(Component).attrs({})``
+ tag.callee.object.type === "CallExpression" && isStyledIdentifier(tag.callee.object.callee))
+ );
+
+ case "Identifier":
+ // css``
+ return tag.name === "css";
+
+ default:
+ return false;
+ }
+}
+/**
+ * JSX element with CSS prop
+ */
+
+
+function isCssProp(path) {
+ var parent = path.getParentNode();
+ var parentParent = path.getParentNode(1);
+ return parentParent && parent.type === "JSXExpressionContainer" && parentParent.type === "JSXAttribute" && parentParent.name.type === "JSXIdentifier" && parentParent.name.name === "css";
+}
+
+function isStyledIdentifier(node) {
+ return node.type === "Identifier" && node.name === "styled";
+}
+
+function isStyledExtend(node) {
+ return /^[A-Z]/.test(node.object.name) && node.property.name === "extend";
+}
+/*
+ * react-relay and graphql-tag
+ * graphql`...`
+ * graphql.experimental`...`
+ * gql`...`
+ * GraphQL comment block
+ *
+ * This intentionally excludes Relay Classic tags, as Prettier does not
+ * support Relay Classic formatting.
+ */
+
+
+function isGraphQL(path) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ return hasLanguageComment(node, "GraphQL") || parent && (parent.type === "TaggedTemplateExpression" && (parent.tag.type === "MemberExpression" && parent.tag.object.name === "graphql" && parent.tag.property.name === "experimental" || parent.tag.type === "Identifier" && (parent.tag.name === "gql" || parent.tag.name === "graphql")) || parent.type === "CallExpression" && parent.callee.type === "Identifier" && parent.callee.name === "graphql");
+}
+
+function hasLanguageComment(node, languageName) {
+ // This checks for a leading comment that is exactly `/* GraphQL */`
+ // In order to be in line with other implementations of this comment tag
+ // we will not trim the comment value and we will expect exactly one space on
+ // either side of the GraphQL string
+ // Also see ./clean.js
+ return hasLeadingComment$1(node, function (comment) {
+ return isBlockComment$1(comment) && comment.value === ` ${languageName} `;
+ });
+}
+
+function isPathMatch(path, predicateStack) {
+ var stack = path.stack.slice();
+ var name = null;
+ var node = stack.pop();
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = predicateStack[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var predicate = _step.value;
+
+ if (node === undefined) {
+ return false;
+ } // skip index/array
+
+
+ if (typeof name === "number") {
+ name = stack.pop();
+ node = stack.pop();
+ }
+
+ if (!predicate(node, name)) {
+ return false;
+ }
+
+ name = stack.pop();
+ node = stack.pop();
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return true;
+}
+/**
+ * - html`...`
+ * - HTML comment block
+ */
+
+
+function isHtml(path) {
+ var node = path.getValue();
+ return hasLanguageComment(node, "HTML") || isPathMatch(path, [function (node) {
+ return node.type === "TemplateLiteral";
+ }, function (node, name) {
+ return node.type === "TaggedTemplateExpression" && node.tag.type === "Identifier" && node.tag.name === "html" && name === "quasi";
+ }]);
+} // The counter is needed to distinguish nested embeds.
+
+
+var htmlTemplateLiteralCounter = 0;
+
+function printHtmlTemplateLiteral(path, print, textToDoc, parser, escapeClosingScriptTag) {
+ var node = path.getValue();
+ var counter = htmlTemplateLiteralCounter;
+ htmlTemplateLiteralCounter = htmlTemplateLiteralCounter + 1 >>> 0;
+
+ var composePlaceholder = function composePlaceholder(index) {
+ return `PRETTIER_HTML_PLACEHOLDER_${index}_${counter}_IN_JS`;
+ };
+
+ var text = node.quasis.map(function (quasi, index, quasis) {
+ return index === quasis.length - 1 ? quasi.value.cooked : quasi.value.cooked + composePlaceholder(index);
+ }).join("");
+ var expressionDocs = path.map(print, "expressions");
+
+ if (expressionDocs.length === 0 && text.trim().length === 0) {
+ return "``";
+ }
+
+ var placeholderRegex = RegExp(composePlaceholder("(\\d+)"), "g");
+ var contentDoc = mapDoc$3(stripTrailingHardline$1(textToDoc(text, {
+ parser
+ })), function (doc) {
+ if (typeof doc !== "string") {
+ return doc;
+ }
+
+ var parts = [];
+ var components = doc.split(placeholderRegex);
+
+ for (var i = 0; i < components.length; i++) {
+ var component = components[i];
+
+ if (i % 2 === 0) {
+ if (component) {
+ component = uncook(component);
+
+ if (escapeClosingScriptTag) {
+ component = component.replace(/<\/(script)\b/gi, "<\\/$1");
+ }
+
+ parts.push(component);
+ }
+
+ continue;
+ }
+
+ var placeholderIndex = +component;
+ parts.push(concat$4(["${", group$1(expressionDocs[placeholderIndex]), "}"]));
+ }
+
+ return concat$4(parts);
+ });
+ return group$1(concat$4(["`", indent$2(concat$4([hardline$3, group$1(contentDoc)])), softline$1, "`"]));
+}
+
+var embed_1 = embed;
+
+function clean(ast, newObj, parent) {
+ ["range", "raw", "comments", "leadingComments", "trailingComments", "extra", "start", "end", "flags", "errors"].forEach(function (name) {
+ delete newObj[name];
+ });
+
+ if (ast.type === "BigIntLiteral") {
+ newObj.value = newObj.value.toLowerCase();
+ } // We remove extra `;` and add them when needed
+
+
+ if (ast.type === "EmptyStatement") {
+ return null;
+ } // We move text around, including whitespaces and add {" "}
+
+
+ if (ast.type === "JSXText") {
+ return null;
+ }
+
+ if (ast.type === "JSXExpressionContainer" && ast.expression.type === "Literal" && ast.expression.value === " ") {
+ return null;
+ } // We remove unneeded parens around same-operator LogicalExpressions
+
+
+ if (isUnbalancedLogicalTree(newObj)) {
+ return rebalanceLogicalTree(newObj);
+ } // (TypeScript) Ignore `static` in `constructor(static p) {}`
+ // and `export` in `constructor(export p) {}`
+
+
+ if (ast.type === "TSParameterProperty" && ast.accessibility === null && !ast.readonly) {
+ return {
+ type: "Identifier",
+ name: ast.parameter.name,
+ typeAnnotation: newObj.parameter.typeAnnotation,
+ decorators: newObj.decorators
+ };
+ } // (TypeScript) ignore empty `specifiers` array
+
+
+ if (ast.type === "TSNamespaceExportDeclaration" && ast.specifiers && ast.specifiers.length === 0) {
+ delete newObj.specifiers;
+ } // We convert <div></div> to <div />
+
+
+ if (ast.type === "JSXOpeningElement") {
+ delete newObj.selfClosing;
+ }
+
+ if (ast.type === "JSXElement") {
+ delete newObj.closingElement;
+ } // We change {'key': value} into {key: value}
+
+
+ if ((ast.type === "Property" || ast.type === "ObjectProperty" || ast.type === "MethodDefinition" || ast.type === "ClassProperty" || ast.type === "TSPropertySignature" || ast.type === "ObjectTypeProperty") && typeof ast.key === "object" && ast.key && (ast.key.type === "Literal" || ast.key.type === "StringLiteral" || ast.key.type === "Identifier")) {
+ delete newObj.key;
+ }
+
+ if (ast.type === "OptionalMemberExpression" && ast.optional === false) {
+ newObj.type = "MemberExpression";
+ delete newObj.optional;
+ } // Remove raw and cooked values from TemplateElement when it's CSS
+ // styled-jsx
+
+
+ if (ast.type === "JSXElement" && ast.openingElement.name.name === "style" && ast.openingElement.attributes.some(function (attr) {
+ return attr.name.name === "jsx";
+ })) {
+ var templateLiterals = newObj.children.filter(function (child) {
+ return child.type === "JSXExpressionContainer" && child.expression.type === "TemplateLiteral";
+ }).map(function (container) {
+ return container.expression;
+ });
+ var quasis = templateLiterals.reduce(function (quasis, templateLiteral) {
+ return quasis.concat(templateLiteral.quasis);
+ }, []);
+ quasis.forEach(function (q) {
+ return delete q.value;
+ });
+ } // CSS template literals in css prop
+
+
+ if (ast.type === "JSXAttribute" && ast.name.name === "css" && ast.value.type === "JSXExpressionContainer" && ast.value.expression.type === "TemplateLiteral") {
+ newObj.value.expression.quasis.forEach(function (q) {
+ return delete q.value;
+ });
+ } // Angular Components: Inline HTML template and Inline CSS styles
+
+
+ var expression = ast.expression || ast.callee;
+
+ if (ast.type === "Decorator" && expression.type === "CallExpression" && expression.callee.name === "Component" && expression.arguments.length === 1) {
+ var astProps = ast.expression.arguments[0].properties;
+ newObj.expression.arguments[0].properties.forEach(function (prop, index) {
+ var templateLiteral = null;
+
+ switch (astProps[index].key.name) {
+ case "styles":
+ if (prop.value.type === "ArrayExpression") {
+ templateLiteral = prop.value.elements[0];
+ }
+
+ break;
+
+ case "template":
+ if (prop.value.type === "TemplateLiteral") {
+ templateLiteral = prop.value;
+ }
+
+ break;
+ }
+
+ if (templateLiteral) {
+ templateLiteral.quasis.forEach(function (q) {
+ return delete q.value;
+ });
+ }
+ });
+ } // styled-components, graphql, markdown
+
+
+ if (ast.type === "TaggedTemplateExpression" && (ast.tag.type === "MemberExpression" || ast.tag.type === "Identifier" && (ast.tag.name === "gql" || ast.tag.name === "graphql" || ast.tag.name === "css" || ast.tag.name === "md" || ast.tag.name === "markdown" || ast.tag.name === "html") || ast.tag.type === "CallExpression")) {
+ newObj.quasi.quasis.forEach(function (quasi) {
+ return delete quasi.value;
+ });
+ }
+
+ if (ast.type === "TemplateLiteral") {
+ // This checks for a leading comment that is exactly `/* GraphQL */`
+ // In order to be in line with other implementations of this comment tag
+ // we will not trim the comment value and we will expect exactly one space on
+ // either side of the GraphQL string
+ // Also see ./embed.js
+ var hasLanguageComment = ast.leadingComments && ast.leadingComments.some(function (comment) {
+ return comment.type === "CommentBlock" && ["GraphQL", "HTML"].some(function (languageName) {
+ return comment.value === ` ${languageName} `;
+ });
+ });
+
+ if (hasLanguageComment || parent.type === "CallExpression" && parent.callee.name === "graphql") {
+ newObj.quasis.forEach(function (quasi) {
+ return delete quasi.value;
+ });
+ }
+ }
+}
+
+function isUnbalancedLogicalTree(newObj) {
+ return newObj.type === "LogicalExpression" && newObj.right.type === "LogicalExpression" && newObj.operator === newObj.right.operator;
+}
+
+function rebalanceLogicalTree(newObj) {
+ if (isUnbalancedLogicalTree(newObj)) {
+ return rebalanceLogicalTree({
+ type: "LogicalExpression",
+ operator: newObj.operator,
+ left: rebalanceLogicalTree({
+ type: "LogicalExpression",
+ operator: newObj.operator,
+ left: newObj.left,
+ right: newObj.right.left,
+ loc: {}
+ }),
+ right: newObj.right.right,
+ loc: {}
+ });
+ }
+
+ return newObj;
+}
+
+var clean_1 = clean;
+
+var detectNewline = createCommonjsModule(function (module) {
+
+ module.exports = function (str) {
+ if (typeof str !== 'string') {
+ throw new TypeError('Expected a string');
+ }
+
+ var newlines = str.match(/(?:\r?\n)/g) || [];
+
+ if (newlines.length === 0) {
+ return null;
+ }
+
+ var crlf = newlines.filter(function (el) {
+ return el === '\r\n';
+ }).length;
+ var lf = newlines.length - crlf;
+ return crlf > lf ? '\r\n' : '\n';
+ };
+
+ module.exports.graceful = function (str) {
+ return module.exports(str) || '\n';
+ };
+});
+var detectNewline_1 = detectNewline.graceful;
+
+var build = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, '__esModule', {
+ value: true
+ });
+ exports.extract = extract;
+ exports.strip = strip;
+ exports.parse = parse;
+ exports.parseWithComments = parseWithComments;
+ exports.print = print;
+
+ function _os() {
+ var data = os$1;
+
+ _os = function _os() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _detectNewline() {
+ var data = _interopRequireDefault(detectNewline);
+
+ _detectNewline = function _detectNewline() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+ /**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+
+ var commentEndRe = /\*\/$/;
+ var commentStartRe = /^\/\*\*/;
+ var docblockRe = /^\s*(\/\*\*?(.|\r?\n)*?\*\/)/;
+ var lineCommentRe = /(^|\s+)\/\/([^\r\n]*)/g;
+ var ltrimNewlineRe = /^(\r?\n)+/;
+ var multilineRe = /(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g;
+ var propertyRe = /(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g;
+ var stringStartRe = /(\r?\n|^) *\* ?/g;
+
+ function extract(contents) {
+ var match = contents.match(docblockRe);
+ return match ? match[0].trimLeft() : '';
+ }
+
+ function strip(contents) {
+ var match = contents.match(docblockRe);
+ return match && match[0] ? contents.substring(match[0].length) : contents;
+ }
+
+ function parse(docblock) {
+ return parseWithComments(docblock).pragmas;
+ }
+
+ function parseWithComments(docblock) {
+ var line = (0, _detectNewline().default)(docblock) || _os().EOL;
+
+ docblock = docblock.replace(commentStartRe, '').replace(commentEndRe, '').replace(stringStartRe, '$1'); // Normalize multi-line directives
+
+ var prev = '';
+
+ while (prev !== docblock) {
+ prev = docblock;
+ docblock = docblock.replace(multilineRe, `${line}$1 $2${line}`);
+ }
+
+ docblock = docblock.replace(ltrimNewlineRe, '').trimRight();
+ var result = Object.create(null);
+ var comments = docblock.replace(propertyRe, '').replace(ltrimNewlineRe, '').trimRight();
+ var match;
+
+ while (match = propertyRe.exec(docblock)) {
+ // strip linecomments from pragmas
+ var nextPragma = match[2].replace(lineCommentRe, '');
+
+ if (typeof result[match[1]] === 'string' || Array.isArray(result[match[1]])) {
+ result[match[1]] = [].concat(result[match[1]], nextPragma);
+ } else {
+ result[match[1]] = nextPragma;
+ }
+ }
+
+ return {
+ comments,
+ pragmas: result
+ };
+ }
+
+ function print(_ref) {
+ var _ref$comments = _ref.comments,
+ comments = _ref$comments === void 0 ? '' : _ref$comments,
+ _ref$pragmas = _ref.pragmas,
+ pragmas = _ref$pragmas === void 0 ? {} : _ref$pragmas;
+
+ var line = (0, _detectNewline().default)(comments) || _os().EOL;
+
+ var head = '/**';
+ var start = ' *';
+ var tail = ' */';
+ var keys = Object.keys(pragmas);
+ var printedObject = keys.map(function (key) {
+ return printKeyValues(key, pragmas[key]);
+ }).reduce(function (arr, next) {
+ return arr.concat(next);
+ }, []).map(function (keyValue) {
+ return start + ' ' + keyValue + line;
+ }).join('');
+
+ if (!comments) {
+ if (keys.length === 0) {
+ return '';
+ }
+
+ if (keys.length === 1 && !Array.isArray(pragmas[keys[0]])) {
+ var value = pragmas[keys[0]];
+ return `${head} ${printKeyValues(keys[0], value)[0]}${tail}`;
+ }
+ }
+
+ var printedComments = comments.split(line).map(function (textLine) {
+ return `${start} ${textLine}`;
+ }).join(line) + line;
+ return head + line + (comments ? printedComments : '') + (comments && keys.length ? start + line : '') + printedObject + tail;
+ }
+
+ function printKeyValues(key, valueOrArray) {
+ return [].concat(valueOrArray).map(function (value) {
+ return `@${key} ${value}`.trim();
+ });
+ }
+});
+unwrapExports(build);
+var build_1 = build.extract;
+var build_2 = build.strip;
+var build_3 = build.parse;
+var build_4 = build.parseWithComments;
+var build_5 = build.print;
+
+function hasPragma(text) {
+ var pragmas = Object.keys(build.parse(build.extract(text)));
+ return pragmas.indexOf("prettier") !== -1 || pragmas.indexOf("format") !== -1;
+}
+
+function insertPragma(text) {
+ var parsedDocblock = build.parseWithComments(build.extract(text));
+ var pragmas = Object.assign({
+ format: ""
+ }, parsedDocblock.pragmas);
+ var newDocblock = build.print({
+ pragmas,
+ comments: parsedDocblock.comments.replace(/^(\s+?\r?\n)+/, "") // remove leading newlines
+
+ }).replace(/(\r\n|\r)/g, "\n"); // normalise newlines (mitigate use of os.EOL by jest-docblock)
+
+ var strippedText = build.strip(text);
+ var separatingNewlines = strippedText.startsWith("\n") ? "\n" : "\n\n";
+ return newDocblock + separatingNewlines + strippedText;
+}
+
+var pragma = {
+ hasPragma,
+ insertPragma
+};
+
+var getLast$1 = util.getLast,
+ hasNewline$2 = util.hasNewline,
+ hasNewlineInRange$1 = util.hasNewlineInRange,
+ hasIgnoreComment$1 = util.hasIgnoreComment,
+ hasNodeIgnoreComment$1 = util.hasNodeIgnoreComment,
+ skipWhitespace$1 = util.skipWhitespace;
+var isIdentifierName = utils$1.keyword.isIdentifierNameES5; // We match any whitespace except line terminators because
+// Flow annotation comments cannot be split across lines. For example:
+//
+// (this /*
+// : any */).foo = 5;
+//
+// is not picked up by Flow (see https://github.com/facebook/flow/issues/7050), so
+// removing the newline would create a type annotation that the user did not intend
+// to create.
+
+var NON_LINE_TERMINATING_WHITE_SPACE = "(?:(?=.)\\s)";
+var FLOW_SHORTHAND_ANNOTATION = new RegExp(`^${NON_LINE_TERMINATING_WHITE_SPACE}*:`);
+var FLOW_ANNOTATION = new RegExp(`^${NON_LINE_TERMINATING_WHITE_SPACE}*::`);
+
+function hasFlowShorthandAnnotationComment(node) {
+ // https://flow.org/en/docs/types/comments/
+ // Syntax example: const r = new (window.Request /*: Class<Request> */)("");
+ return node.extra && node.extra.parenthesized && node.trailingComments && node.trailingComments[0].value.match(FLOW_SHORTHAND_ANNOTATION);
+}
+
+function hasFlowAnnotationComment(comments) {
+ return comments && comments[0].value.match(FLOW_ANNOTATION);
+}
+
+function hasNode(node, fn) {
+ if (!node || typeof node !== "object") {
+ return false;
+ }
+
+ if (Array.isArray(node)) {
+ return node.some(function (value) {
+ return hasNode(value, fn);
+ });
+ }
+
+ var result = fn(node);
+ return typeof result === "boolean" ? result : Object.keys(node).some(function (key) {
+ return hasNode(node[key], fn);
+ });
+}
+
+function hasNakedLeftSide(node) {
+ return node.type === "AssignmentExpression" || node.type === "BinaryExpression" || node.type === "LogicalExpression" || node.type === "NGPipeExpression" || node.type === "ConditionalExpression" || node.type === "CallExpression" || node.type === "OptionalCallExpression" || node.type === "MemberExpression" || node.type === "OptionalMemberExpression" || node.type === "SequenceExpression" || node.type === "TaggedTemplateExpression" || node.type === "BindExpression" || node.type === "UpdateExpression" && !node.prefix || node.type === "TSAsExpression" || node.type === "TSNonNullExpression";
+}
+
+function getLeftSide(node) {
+ if (node.expressions) {
+ return node.expressions[0];
+ }
+
+ return node.left || node.test || node.callee || node.object || node.tag || node.argument || node.expression;
+}
+
+function getLeftSidePathName(path, node) {
+ if (node.expressions) {
+ return ["expressions", 0];
+ }
+
+ if (node.left) {
+ return ["left"];
+ }
+
+ if (node.test) {
+ return ["test"];
+ }
+
+ if (node.object) {
+ return ["object"];
+ }
+
+ if (node.callee) {
+ return ["callee"];
+ }
+
+ if (node.tag) {
+ return ["tag"];
+ }
+
+ if (node.argument) {
+ return ["argument"];
+ }
+
+ if (node.expression) {
+ return ["expression"];
+ }
+
+ throw new Error("Unexpected node has no left side", node);
+}
+
+function isLiteral(node) {
+ return node.type === "BooleanLiteral" || node.type === "DirectiveLiteral" || node.type === "Literal" || node.type === "NullLiteral" || node.type === "NumericLiteral" || node.type === "RegExpLiteral" || node.type === "StringLiteral" || node.type === "TemplateLiteral" || node.type === "TSTypeLiteral" || node.type === "JSXText";
+}
+
+function isNumericLiteral(node) {
+ return node.type === "NumericLiteral" || node.type === "Literal" && typeof node.value === "number";
+}
+
+function isStringLiteral(node) {
+ return node.type === "StringLiteral" || node.type === "Literal" && typeof node.value === "string";
+}
+
+function isObjectType(n) {
+ return n.type === "ObjectTypeAnnotation" || n.type === "TSTypeLiteral";
+}
+
+function isFunctionOrArrowExpression(node) {
+ return node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression";
+}
+
+function isFunctionOrArrowExpressionWithBody(node) {
+ return node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression" && node.body.type === "BlockStatement";
+}
+
+function isTemplateLiteral(node) {
+ return node.type === "TemplateLiteral";
+} // `inject` is used in AngularJS 1.x, `async` in Angular 2+
+// example: https://docs.angularjs.org/guide/unit-testing#using-beforeall-
+
+
+function isAngularTestWrapper(node) {
+ return (node.type === "CallExpression" || node.type === "OptionalCallExpression") && node.callee.type === "Identifier" && (node.callee.name === "async" || node.callee.name === "inject" || node.callee.name === "fakeAsync");
+}
+
+function isJSXNode(node) {
+ return node.type === "JSXElement" || node.type === "JSXFragment";
+}
+
+function isTheOnlyJSXElementInMarkdown(options, path) {
+ if (options.parentParser !== "markdown" && options.parentParser !== "mdx") {
+ return false;
+ }
+
+ var node = path.getNode();
+
+ if (!node.expression || !isJSXNode(node.expression)) {
+ return false;
+ }
+
+ var parent = path.getParentNode();
+ return parent.type === "Program" && parent.body.length == 1;
+} // Detect an expression node representing `{" "}`
+
+
+function isJSXWhitespaceExpression(node) {
+ return node.type === "JSXExpressionContainer" && isLiteral(node.expression) && node.expression.value === " " && !node.expression.comments;
+}
+
+function isMemberExpressionChain(node) {
+ if (node.type !== "MemberExpression" && node.type !== "OptionalMemberExpression") {
+ return false;
+ }
+
+ if (node.object.type === "Identifier") {
+ return true;
+ }
+
+ return isMemberExpressionChain(node.object);
+}
+
+function isGetterOrSetter(node) {
+ return node.kind === "get" || node.kind === "set";
+}
+
+function sameLocStart(nodeA, nodeB, options) {
+ return options.locStart(nodeA) === options.locStart(nodeB);
+} // TODO: This is a bad hack and we need a better way to distinguish between
+// arrow functions and otherwise
+
+
+function isFunctionNotation(node, options) {
+ return isGetterOrSetter(node) || sameLocStart(node, node.value, options);
+} // Hack to differentiate between the following two which have the same ast
+// type T = { method: () => void };
+// type T = { method(): void };
+
+
+function isObjectTypePropertyAFunction(node, options) {
+ return (node.type === "ObjectTypeProperty" || node.type === "ObjectTypeInternalSlot") && node.value.type === "FunctionTypeAnnotation" && !node.static && !isFunctionNotation(node, options);
+} // Hack to differentiate between the following two which have the same ast
+// declare function f(a): void;
+// var f: (a) => void;
+
+
+function isTypeAnnotationAFunction(node, options) {
+ return (node.type === "TypeAnnotation" || node.type === "TSTypeAnnotation") && node.typeAnnotation.type === "FunctionTypeAnnotation" && !node.static && !sameLocStart(node, node.typeAnnotation, options);
+}
+
+function isBinaryish(node) {
+ return node.type === "BinaryExpression" || node.type === "LogicalExpression" || node.type === "NGPipeExpression";
+}
+
+function isMemberish(node) {
+ return node.type === "MemberExpression" || node.type === "OptionalMemberExpression" || node.type === "BindExpression" && node.object;
+}
+
+function isSimpleFlowType(node) {
+ var flowTypeAnnotations = ["AnyTypeAnnotation", "NullLiteralTypeAnnotation", "GenericTypeAnnotation", "ThisTypeAnnotation", "NumberTypeAnnotation", "VoidTypeAnnotation", "EmptyTypeAnnotation", "MixedTypeAnnotation", "BooleanTypeAnnotation", "BooleanLiteralTypeAnnotation", "StringTypeAnnotation"];
+ return node && flowTypeAnnotations.indexOf(node.type) !== -1 && !(node.type === "GenericTypeAnnotation" && node.typeParameters);
+}
+
+var unitTestRe = /^(skip|[fx]?(it|describe|test))$/;
+
+function isSkipOrOnlyBlock(node) {
+ return (node.callee.type === "MemberExpression" || node.callee.type === "OptionalMemberExpression") && node.callee.object.type === "Identifier" && node.callee.property.type === "Identifier" && unitTestRe.test(node.callee.object.name) && (node.callee.property.name === "only" || node.callee.property.name === "skip");
+}
+
+function isUnitTestSetUp(n) {
+ var unitTestSetUpRe = /^(before|after)(Each|All)$/;
+ return n.callee.type === "Identifier" && unitTestSetUpRe.test(n.callee.name) && n.arguments.length === 1;
+} // eg; `describe("some string", (done) => {})`
+
+
+function isTestCall(n, parent) {
+ if (n.type !== "CallExpression") {
+ return false;
+ }
+
+ if (n.arguments.length === 1) {
+ if (isAngularTestWrapper(n) && parent && isTestCall(parent)) {
+ return isFunctionOrArrowExpression(n.arguments[0]);
+ }
+
+ if (isUnitTestSetUp(n)) {
+ return isAngularTestWrapper(n.arguments[0]);
+ }
+ } else if (n.arguments.length === 2 || n.arguments.length === 3) {
+ if ((n.callee.type === "Identifier" && unitTestRe.test(n.callee.name) || isSkipOrOnlyBlock(n)) && (isTemplateLiteral(n.arguments[0]) || isStringLiteral(n.arguments[0]))) {
+ // it("name", () => { ... }, 2500)
+ if (n.arguments[2] && !isNumericLiteral(n.arguments[2])) {
+ return false;
+ }
+
+ return (n.arguments.length === 2 ? isFunctionOrArrowExpression(n.arguments[1]) : isFunctionOrArrowExpressionWithBody(n.arguments[1]) && n.arguments[1].params.length <= 1) || isAngularTestWrapper(n.arguments[1]);
+ }
+ }
+
+ return false;
+}
+
+function hasLeadingComment$2(node) {
+ return node.comments && node.comments.some(function (comment) {
+ return comment.leading;
+ });
+}
+
+function hasTrailingComment(node) {
+ return node.comments && node.comments.some(function (comment) {
+ return comment.trailing;
+ });
+}
+
+function isCallOrOptionalCallExpression(node) {
+ return node.type === "CallExpression" || node.type === "OptionalCallExpression";
+}
+
+function hasDanglingComments(node) {
+ return node.comments && node.comments.some(function (comment) {
+ return !comment.leading && !comment.trailing;
+ });
+}
+/** identify if an angular expression seems to have side effects */
+
+
+function hasNgSideEffect(path) {
+ return hasNode(path.getValue(), function (node) {
+ switch (node.type) {
+ case undefined:
+ return false;
+
+ case "CallExpression":
+ case "OptionalCallExpression":
+ case "AssignmentExpression":
+ return true;
+ }
+ });
+}
+
+function isNgForOf(node, index, parentNode) {
+ return node.type === "NGMicrosyntaxKeyedExpression" && node.key.name === "of" && index === 1 && parentNode.body[0].type === "NGMicrosyntaxLet" && parentNode.body[0].value === null;
+}
+/** @param node {import("estree").TemplateLiteral} */
+
+
+function isSimpleTemplateLiteral(node) {
+ if (node.expressions.length === 0) {
+ return false;
+ }
+
+ return node.expressions.every(function (expr) {
+ // Disallow comments since printDocToString can't print them here
+ if (expr.comments) {
+ return false;
+ } // Allow `x` and `this`
+
+
+ if (expr.type === "Identifier" || expr.type === "ThisExpression") {
+ return true;
+ } // Allow `a.b.c`, `a.b[c]`, and `this.x.y`
+
+
+ if (expr.type === "MemberExpression" || expr.type === "OptionalMemberExpression") {
+ var head = expr;
+
+ while (head.type === "MemberExpression" || head.type === "OptionalMemberExpression") {
+ if (head.property.type !== "Identifier" && head.property.type !== "Literal" && head.property.type !== "StringLiteral" && head.property.type !== "NumericLiteral") {
+ return false;
+ }
+
+ head = head.object;
+
+ if (head.comments) {
+ return false;
+ }
+ }
+
+ if (head.type === "Identifier" || head.type === "ThisExpression") {
+ return true;
+ }
+
+ return false;
+ }
+
+ return false;
+ });
+}
+
+function getFlowVariance(path) {
+ if (!path.variance) {
+ return null;
+ } // Babel 7.0 currently uses variance node type, and flow should
+ // follow suit soon:
+ // https://github.com/babel/babel/issues/4722
+
+
+ var variance = path.variance.kind || path.variance;
+
+ switch (variance) {
+ case "plus":
+ return "+";
+
+ case "minus":
+ return "-";
+
+ default:
+ /* istanbul ignore next */
+ return variance;
+ }
+}
+
+function classPropMayCauseASIProblems(path) {
+ var node = path.getNode();
+
+ if (node.type !== "ClassProperty") {
+ return false;
+ }
+
+ var name = node.key && node.key.name; // this isn't actually possible yet with most parsers available today
+ // so isn't properly tested yet.
+
+ if ((name === "static" || name === "get" || name === "set") && !node.value && !node.typeAnnotation) {
+ return true;
+ }
+}
+
+function classChildNeedsASIProtection(node) {
+ if (!node) {
+ return;
+ }
+
+ if (node.static || node.accessibility // TypeScript
+ ) {
+ return false;
+ }
+
+ if (!node.computed) {
+ var name = node.key && node.key.name;
+
+ if (name === "in" || name === "instanceof") {
+ return true;
+ }
+ }
+
+ switch (node.type) {
+ case "ClassProperty":
+ case "TSAbstractClassProperty":
+ return node.computed;
+
+ case "MethodDefinition": // Flow
+
+ case "TSAbstractMethodDefinition": // TypeScript
+
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ {
+ // Babel
+ var isAsync = node.value ? node.value.async : node.async;
+ var isGenerator = node.value ? node.value.generator : node.generator;
+
+ if (isAsync || node.kind === "get" || node.kind === "set") {
+ return false;
+ }
+
+ if (node.computed || isGenerator) {
+ return true;
+ }
+
+ return false;
+ }
+
+ case "TSIndexSignature":
+ return true;
+
+ default:
+ /* istanbul ignore next */
+ return false;
+ }
+}
+
+function getTypeScriptMappedTypeModifier(tokenNode, keyword) {
+ if (tokenNode === "+") {
+ return "+" + keyword;
+ } else if (tokenNode === "-") {
+ return "-" + keyword;
+ }
+
+ return keyword;
+}
+
+function hasNewlineBetweenOrAfterDecorators(node, options) {
+ return hasNewlineInRange$1(options.originalText, options.locStart(node.decorators[0]), options.locEnd(getLast$1(node.decorators))) || hasNewline$2(options.originalText, options.locEnd(getLast$1(node.decorators)));
+} // Only space, newline, carriage return, and tab are treated as whitespace
+// inside JSX.
+
+
+var jsxWhitespaceChars = " \n\r\t";
+var matchJsxWhitespaceRegex = new RegExp("([" + jsxWhitespaceChars + "]+)");
+var containsNonJsxWhitespaceRegex = new RegExp("[^" + jsxWhitespaceChars + "]"); // Meaningful if it contains non-whitespace characters,
+// or it contains whitespace without a new line.
+
+function isMeaningfulJSXText(node) {
+ return isLiteral(node) && (containsNonJsxWhitespaceRegex.test(rawText(node)) || !/\n/.test(rawText(node)));
+}
+
+function hasJsxIgnoreComment(path) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+
+ if (!parent || !node || !isJSXNode(node) || !isJSXNode(parent)) {
+ return false;
+ } // Lookup the previous sibling, ignoring any empty JSXText elements
+
+
+ var index = parent.children.indexOf(node);
+ var prevSibling = null;
+
+ for (var i = index; i > 0; i--) {
+ var candidate = parent.children[i - 1];
+
+ if (candidate.type === "JSXText" && !isMeaningfulJSXText(candidate)) {
+ continue;
+ }
+
+ prevSibling = candidate;
+ break;
+ }
+
+ return prevSibling && prevSibling.type === "JSXExpressionContainer" && prevSibling.expression.type === "JSXEmptyExpression" && prevSibling.expression.comments && prevSibling.expression.comments.find(function (comment) {
+ return comment.value.trim() === "prettier-ignore";
+ });
+}
+
+function isEmptyJSXElement(node) {
+ if (node.children.length === 0) {
+ return true;
+ }
+
+ if (node.children.length > 1) {
+ return false;
+ } // if there is one text child and does not contain any meaningful text
+ // we can treat the element as empty.
+
+
+ var child = node.children[0];
+ return isLiteral(child) && !isMeaningfulJSXText(child);
+}
+
+function hasPrettierIgnore(path) {
+ return hasIgnoreComment$1(path) || hasJsxIgnoreComment(path);
+}
+
+function isLastStatement(path) {
+ var parent = path.getParentNode();
+
+ if (!parent) {
+ return true;
+ }
+
+ var node = path.getValue();
+ var body = (parent.body || parent.consequent).filter(function (stmt) {
+ return stmt.type !== "EmptyStatement";
+ });
+ return body && body[body.length - 1] === node;
+}
+
+function isFlowAnnotationComment(text, typeAnnotation, options) {
+ var start = options.locStart(typeAnnotation);
+ var end = skipWhitespace$1(text, options.locEnd(typeAnnotation));
+ return text.substr(start, 2) === "/*" && text.substr(end, 2) === "*/";
+}
+
+function hasLeadingOwnLineComment(text, node, options) {
+ if (isJSXNode(node)) {
+ return hasNodeIgnoreComment$1(node);
+ }
+
+ var res = node.comments && node.comments.some(function (comment) {
+ return comment.leading && hasNewline$2(text, options.locEnd(comment));
+ });
+ return res;
+} // This recurses the return argument, looking for the first token
+// (the leftmost leaf node) and, if it (or its parents) has any
+// leadingComments, returns true (so it can be wrapped in parens).
+
+
+function returnArgumentHasLeadingComment(options, argument) {
+ if (hasLeadingOwnLineComment(options.originalText, argument, options)) {
+ return true;
+ }
+
+ if (hasNakedLeftSide(argument)) {
+ var leftMost = argument;
+ var newLeftMost;
+
+ while (newLeftMost = getLeftSide(leftMost)) {
+ leftMost = newLeftMost;
+
+ if (hasLeadingOwnLineComment(options.originalText, leftMost, options)) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+}
+
+function isStringPropSafeToCoerceToIdentifier(node, options) {
+ return isStringLiteral(node.key) && isIdentifierName(node.key.value) && options.parser !== "json" && !(options.parser === "typescript" && node.type === "ClassProperty");
+}
+
+function isJestEachTemplateLiteral(node, parentNode) {
+ /**
+ * describe.each`table`(name, fn)
+ * describe.only.each`table`(name, fn)
+ * describe.skip.each`table`(name, fn)
+ * test.each`table`(name, fn)
+ * test.only.each`table`(name, fn)
+ * test.skip.each`table`(name, fn)
+ *
+ * Ref: https://github.com/facebook/jest/pull/6102
+ */
+ var jestEachTriggerRegex = /^[xf]?(describe|it|test)$/;
+ return parentNode.type === "TaggedTemplateExpression" && parentNode.quasi === node && parentNode.tag.type === "MemberExpression" && parentNode.tag.property.type === "Identifier" && parentNode.tag.property.name === "each" && (parentNode.tag.object.type === "Identifier" && jestEachTriggerRegex.test(parentNode.tag.object.name) || parentNode.tag.object.type === "MemberExpression" && parentNode.tag.object.property.type === "Identifier" && (parentNode.tag.object.property.name === "only" || parentNode.tag.object.property.name === "skip") && parentNode.tag.object.object.type === "Identifier" && jestEachTriggerRegex.test(parentNode.tag.object.object.name));
+}
+
+function templateLiteralHasNewLines(template) {
+ return template.quasis.some(function (quasi) {
+ return quasi.value.raw.includes("\n");
+ });
+}
+
+function isTemplateOnItsOwnLine(n, text, options) {
+ return (n.type === "TemplateLiteral" && templateLiteralHasNewLines(n) || n.type === "TaggedTemplateExpression" && templateLiteralHasNewLines(n.quasi)) && !hasNewline$2(text, options.locStart(n), {
+ backwards: true
+ });
+}
+
+function needsHardlineAfterDanglingComment(node) {
+ if (!node.comments) {
+ return false;
+ }
+
+ var lastDanglingComment = getLast$1(node.comments.filter(function (comment) {
+ return !comment.leading && !comment.trailing;
+ }));
+ return lastDanglingComment && !comments$1.isBlockComment(lastDanglingComment);
+} // If we have nested conditional expressions, we want to print them in JSX mode
+// if there's at least one JSXElement somewhere in the tree.
+//
+// A conditional expression chain like this should be printed in normal mode,
+// because there aren't JSXElements anywhere in it:
+//
+// isA ? "A" : isB ? "B" : isC ? "C" : "Unknown";
+//
+// But a conditional expression chain like this should be printed in JSX mode,
+// because there is a JSXElement in the last ConditionalExpression:
+//
+// isA ? "A" : isB ? "B" : isC ? "C" : <span className="warning">Unknown</span>;
+//
+// This type of ConditionalExpression chain is structured like this in the AST:
+//
+// ConditionalExpression {
+// test: ...,
+// consequent: ...,
+// alternate: ConditionalExpression {
+// test: ...,
+// consequent: ...,
+// alternate: ConditionalExpression {
+// test: ...,
+// consequent: ...,
+// alternate: ...,
+// }
+// }
+// }
+//
+// We want to traverse over that shape and convert it into a flat structure so
+// that we can find if there's a JSXElement somewhere inside.
+
+
+function getConditionalChainContents(node) {
+ // Given this code:
+ //
+ // // Using a ConditionalExpression as the consequent is uncommon, but should
+ // // be handled.
+ // A ? B : C ? D : E ? F ? G : H : I
+ //
+ // which has this AST:
+ //
+ // ConditionalExpression {
+ // test: Identifier(A),
+ // consequent: Identifier(B),
+ // alternate: ConditionalExpression {
+ // test: Identifier(C),
+ // consequent: Identifier(D),
+ // alternate: ConditionalExpression {
+ // test: Identifier(E),
+ // consequent: ConditionalExpression {
+ // test: Identifier(F),
+ // consequent: Identifier(G),
+ // alternate: Identifier(H),
+ // },
+ // alternate: Identifier(I),
+ // }
+ // }
+ // }
+ //
+ // we should return this Array:
+ //
+ // [
+ // Identifier(A),
+ // Identifier(B),
+ // Identifier(C),
+ // Identifier(D),
+ // Identifier(E),
+ // Identifier(F),
+ // Identifier(G),
+ // Identifier(H),
+ // Identifier(I)
+ // ];
+ //
+ // This loses the information about whether each node was the test,
+ // consequent, or alternate, but we don't care about that here- we are only
+ // flattening this structure to find if there's any JSXElements inside.
+ var nonConditionalExpressions = [];
+
+ function recurse(node) {
+ if (node.type === "ConditionalExpression") {
+ recurse(node.test);
+ recurse(node.consequent);
+ recurse(node.alternate);
+ } else {
+ nonConditionalExpressions.push(node);
+ }
+ }
+
+ recurse(node);
+ return nonConditionalExpressions;
+}
+
+function conditionalExpressionChainContainsJSX(node) {
+ return Boolean(getConditionalChainContents(node).find(isJSXNode));
+} // Logic to check for args with multiple anonymous functions. For instance,
+// the following call should be split on multiple lines for readability:
+// source.pipe(map((x) => x + x), filter((x) => x % 2 === 0))
+
+
+function isFunctionCompositionArgs(args) {
+ if (args.length <= 1) {
+ return false;
+ }
+
+ var count = 0;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = args[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var arg = _step.value;
+
+ if (isFunctionOrArrowExpression(arg)) {
+ count += 1;
+
+ if (count > 1) {
+ return true;
+ }
+ } else if (isCallOrOptionalCallExpression(arg)) {
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = arg.arguments[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var childArg = _step2.value;
+
+ if (isFunctionOrArrowExpression(childArg)) {
+ return true;
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return false;
+} // Logic to determine if a call is a “long curried function call”.
+// See https://github.com/prettier/prettier/issues/1420.
+//
+// `connect(a, b, c)(d)`
+// In the above call expression, the second call is the parent node and the
+// first call is the current node.
+
+
+function isLongCurriedCallExpression(path) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ return isCallOrOptionalCallExpression(node) && isCallOrOptionalCallExpression(parent) && parent.callee === node && node.arguments.length > parent.arguments.length && parent.arguments.length > 0;
+}
+
+function rawText(node) {
+ return node.extra ? node.extra.raw : node.raw;
+}
+
+function identity(x) {
+ return x;
+}
+
+function isTSXFile(options) {
+ return options.filepath && /\.tsx$/i.test(options.filepath);
+}
+
+var utils$2 = {
+ classChildNeedsASIProtection,
+ classPropMayCauseASIProblems,
+ conditionalExpressionChainContainsJSX,
+ getFlowVariance,
+ getLeftSidePathName,
+ getTypeScriptMappedTypeModifier,
+ hasDanglingComments,
+ hasFlowAnnotationComment,
+ hasFlowShorthandAnnotationComment,
+ hasLeadingComment: hasLeadingComment$2,
+ hasLeadingOwnLineComment,
+ hasNakedLeftSide,
+ hasNewlineBetweenOrAfterDecorators,
+ hasNgSideEffect,
+ hasNode,
+ hasPrettierIgnore,
+ hasTrailingComment,
+ identity,
+ isBinaryish,
+ isCallOrOptionalCallExpression,
+ isEmptyJSXElement,
+ isFlowAnnotationComment,
+ isFunctionCompositionArgs,
+ isFunctionNotation,
+ isFunctionOrArrowExpression,
+ isGetterOrSetter,
+ isJestEachTemplateLiteral,
+ isJSXNode,
+ isJSXWhitespaceExpression,
+ isLastStatement,
+ isLiteral,
+ isLongCurriedCallExpression,
+ isMeaningfulJSXText,
+ isMemberExpressionChain,
+ isMemberish,
+ isNgForOf,
+ isNumericLiteral,
+ isObjectType,
+ isObjectTypePropertyAFunction,
+ isSimpleFlowType,
+ isSimpleTemplateLiteral,
+ isStringLiteral,
+ isStringPropSafeToCoerceToIdentifier,
+ isTemplateOnItsOwnLine,
+ isTestCall,
+ isTheOnlyJSXElementInMarkdown,
+ isTSXFile,
+ isTypeAnnotationAFunction,
+ matchJsxWhitespaceRegex,
+ needsHardlineAfterDanglingComment,
+ rawText,
+ returnArgumentHasLeadingComment
+};
+
+var getLeftSidePathName$1 = utils$2.getLeftSidePathName,
+ hasFlowShorthandAnnotationComment$1 = utils$2.hasFlowShorthandAnnotationComment,
+ hasNakedLeftSide$1 = utils$2.hasNakedLeftSide,
+ hasNode$1 = utils$2.hasNode;
+
+function hasClosureCompilerTypeCastComment(text, path) {
+ // https://github.com/google/closure-compiler/wiki/Annotating-Types#type-casts
+ // Syntax example: var x = /** @type {string} */ (fruit);
+ var n = path.getValue();
+ return isParenthesized(n) && (hasTypeCastComment(n) || hasAncestorTypeCastComment(0)); // for sub-item: /** @type {array} */ (numberOrString).map(x => x);
+
+ function hasAncestorTypeCastComment(index) {
+ var ancestor = path.getParentNode(index);
+ return ancestor && !isParenthesized(ancestor) ? hasTypeCastComment(ancestor) || hasAncestorTypeCastComment(index + 1) : false;
+ }
+
+ function hasTypeCastComment(node) {
+ return node.comments && node.comments.some(function (comment) {
+ return comment.leading && comments$1.isBlockComment(comment) && isTypeCastComment(comment.value);
+ });
+ }
+
+ function isParenthesized(node) {
+ // Closure typecast comments only really make sense when _not_ using
+ // typescript or flow parsers, so we take advantage of the babel parser's
+ // parenthesized expressions.
+ return node.extra && node.extra.parenthesized;
+ }
+
+ function isTypeCastComment(comment) {
+ var cleaned = comment.trim().split("\n").map(function (line) {
+ return line.replace(/^[\s*]+/, "");
+ }).join(" ").trim();
+
+ if (!/^@type\s*\{[^]+\}$/.test(cleaned)) {
+ return false;
+ }
+
+ var isCompletelyClosed = false;
+ var unpairedBracketCount = 0;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = cleaned[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var char = _step.value;
+
+ if (char === "{") {
+ if (isCompletelyClosed) {
+ return false;
+ }
+
+ unpairedBracketCount++;
+ } else if (char === "}") {
+ if (unpairedBracketCount === 0) {
+ return false;
+ }
+
+ unpairedBracketCount--;
+
+ if (unpairedBracketCount === 0) {
+ isCompletelyClosed = true;
+ }
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return unpairedBracketCount === 0;
+ }
+}
+
+function needsParens(path, options) {
+ var parent = path.getParentNode();
+
+ if (!parent) {
+ return false;
+ }
+
+ var name = path.getName();
+ var node = path.getNode(); // If the value of this path is some child of a Node and not a Node
+ // itself, then it doesn't need parentheses. Only Node objects (in
+ // fact, only Expression nodes) need parentheses.
+
+ if (path.getValue() !== node) {
+ return false;
+ } // to avoid unexpected `}}` in HTML interpolations
+
+
+ if (options.__isInHtmlInterpolation && !options.bracketSpacing && endsWithRightBracket(node) && isFollowedByRightBracket(path)) {
+ return true;
+ } // Only statements don't need parentheses.
+
+
+ if (isStatement(node)) {
+ return false;
+ } // Closure compiler requires that type casted expressions to be surrounded by
+ // parentheses.
+
+
+ if (hasClosureCompilerTypeCastComment(options.originalText, path)) {
+ return true;
+ }
+
+ if ( // Preserve parens if we have a Flow annotation comment, unless we're using the Flow
+ // parser. The Flow parser turns Flow comments into type annotation nodes in its
+ // AST, which we handle separately.
+ options.parser !== "flow" && hasFlowShorthandAnnotationComment$1(path.getValue())) {
+ return true;
+ } // Identifiers never need parentheses.
+
+
+ if (node.type === "Identifier") {
+ // ...unless those identifiers are embed placeholders. They might be substituted by complex
+ // expressions, so the parens around them should not be dropped. Example (JS-in-HTML-in-JS):
+ // let tpl = html`<script> f((${expr}) / 2); </script>`;
+ // If the inner JS formatter removes the parens, the expression might change its meaning:
+ // f((a + b) / 2) vs f(a + b / 2)
+ if (node.extra && node.extra.parenthesized && /^PRETTIER_HTML_PLACEHOLDER_\d+_\d+_IN_JS$/.test(node.name)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ if (parent.type === "ParenthesizedExpression") {
+ return false;
+ } // Add parens around the extends clause of a class. It is needed for almost
+ // all expressions.
+
+
+ if ((parent.type === "ClassDeclaration" || parent.type === "ClassExpression") && parent.superClass === node && (node.type === "ArrowFunctionExpression" || node.type === "AssignmentExpression" || node.type === "AwaitExpression" || node.type === "BinaryExpression" || node.type === "ConditionalExpression" || node.type === "LogicalExpression" || node.type === "NewExpression" || node.type === "ObjectExpression" || node.type === "ParenthesizedExpression" || node.type === "SequenceExpression" || node.type === "TaggedTemplateExpression" || node.type === "UnaryExpression" || node.type === "UpdateExpression" || node.type === "YieldExpression")) {
+ return true;
+ } // `export default function` or `export default class` can't be followed by
+ // anything after. So an expression like `export default (function(){}).toString()`
+ // needs to be followed by a parentheses
+
+
+ if (parent.type === "ExportDefaultDeclaration") {
+ return shouldWrapFunctionForExportDefault(path, options);
+ }
+
+ if (parent.type === "Decorator" && parent.expression === node) {
+ var hasCallExpression = false;
+ var hasMemberExpression = false;
+ var current = node;
+
+ while (current) {
+ switch (current.type) {
+ case "MemberExpression":
+ hasMemberExpression = true;
+ current = current.object;
+ break;
+
+ case "CallExpression":
+ if (
+ /** @(x().y) */
+ hasMemberExpression ||
+ /** @(x().y()) */
+ hasCallExpression) {
+ return true;
+ }
+
+ hasCallExpression = true;
+ current = current.callee;
+ break;
+
+ case "Identifier":
+ return false;
+
+ default:
+ return true;
+ }
+ }
+
+ return true;
+ }
+
+ if (parent.type === "ArrowFunctionExpression" && parent.body === node && node.type !== "SequenceExpression" && // these have parens added anyway
+ util.startsWithNoLookaheadToken(node,
+ /* forbidFunctionClassAndDoExpr */
+ false) || parent.type === "ExpressionStatement" && util.startsWithNoLookaheadToken(node,
+ /* forbidFunctionClassAndDoExpr */
+ true)) {
+ return true;
+ }
+
+ switch (node.type) {
+ case "SpreadElement":
+ case "SpreadProperty":
+ return parent.type === "MemberExpression" && name === "object" && parent.object === node;
+
+ case "UpdateExpression":
+ if (parent.type === "UnaryExpression") {
+ return node.prefix && (node.operator === "++" && parent.operator === "+" || node.operator === "--" && parent.operator === "-");
+ }
+
+ // else fallthrough
+
+ case "UnaryExpression":
+ switch (parent.type) {
+ case "UnaryExpression":
+ return node.operator === parent.operator && (node.operator === "+" || node.operator === "-");
+
+ case "BindExpression":
+ return true;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return name === "object";
+
+ case "TaggedTemplateExpression":
+ return true;
+
+ case "NewExpression":
+ case "CallExpression":
+ case "OptionalCallExpression":
+ return name === "callee";
+
+ case "BinaryExpression":
+ return parent.operator === "**" && name === "left";
+
+ case "TSNonNullExpression":
+ return true;
+
+ default:
+ return false;
+ }
+
+ case "BinaryExpression":
+ {
+ if (parent.type === "UpdateExpression") {
+ return true;
+ }
+
+ var isLeftOfAForStatement = function isLeftOfAForStatement(node) {
+ var i = 0;
+
+ while (node) {
+ var _parent = path.getParentNode(i++);
+
+ if (!_parent) {
+ return false;
+ }
+
+ if (_parent.type === "ForStatement" && _parent.init === node) {
+ return true;
+ }
+
+ node = _parent;
+ }
+
+ return false;
+ };
+
+ if (node.operator === "in" && isLeftOfAForStatement(node)) {
+ return true;
+ }
+ }
+ // fallthrough
+
+ case "TSTypeAssertion":
+ case "TSAsExpression":
+ case "LogicalExpression":
+ switch (parent.type) {
+ case "ConditionalExpression":
+ return node.type === "TSAsExpression";
+
+ case "CallExpression":
+ case "NewExpression":
+ case "OptionalCallExpression":
+ return name === "callee";
+
+ case "ClassExpression":
+ case "ClassDeclaration":
+ return name === "superClass" && parent.superClass === node;
+
+ case "TSTypeAssertion":
+ case "TaggedTemplateExpression":
+ case "UnaryExpression":
+ case "JSXSpreadAttribute":
+ case "SpreadElement":
+ case "SpreadProperty":
+ case "BindExpression":
+ case "AwaitExpression":
+ case "TSAsExpression":
+ case "TSNonNullExpression":
+ case "UpdateExpression":
+ return true;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return name === "object";
+
+ case "AssignmentExpression":
+ return parent.left === node && (node.type === "TSTypeAssertion" || node.type === "TSAsExpression");
+
+ case "LogicalExpression":
+ if (node.type === "LogicalExpression") {
+ return parent.operator !== node.operator;
+ }
+
+ // else fallthrough
+
+ case "BinaryExpression":
+ {
+ if (!node.operator && node.type !== "TSTypeAssertion") {
+ return true;
+ }
+
+ var po = parent.operator;
+ var pp = util.getPrecedence(po);
+ var no = node.operator;
+ var np = util.getPrecedence(no);
+
+ if (pp > np) {
+ return true;
+ }
+
+ if (pp === np && name === "right") {
+ assert$1.strictEqual(parent.right, node);
+ return true;
+ }
+
+ if (pp === np && !util.shouldFlatten(po, no)) {
+ return true;
+ }
+
+ if (pp < np && no === "%") {
+ return po === "+" || po === "-";
+ } // Add parenthesis when working with bitwise operators
+ // It's not strictly needed but helps with code understanding
+
+
+ if (util.isBitwiseOperator(po)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ default:
+ return false;
+ }
+
+ case "SequenceExpression":
+ switch (parent.type) {
+ case "ReturnStatement":
+ return false;
+
+ case "ForStatement":
+ // Although parentheses wouldn't hurt around sequence
+ // expressions in the head of for loops, traditional style
+ // dictates that e.g. i++, j++ should not be wrapped with
+ // parentheses.
+ return false;
+
+ case "ExpressionStatement":
+ return name !== "expression";
+
+ case "ArrowFunctionExpression":
+ // We do need parentheses, but SequenceExpressions are handled
+ // specially when printing bodies of arrow functions.
+ return name !== "body";
+
+ default:
+ // Otherwise err on the side of overparenthesization, adding
+ // explicit exceptions above if this proves overzealous.
+ return true;
+ }
+
+ case "YieldExpression":
+ if (parent.type === "UnaryExpression" || parent.type === "AwaitExpression" || parent.type === "TSAsExpression" || parent.type === "TSNonNullExpression") {
+ return true;
+ }
+
+ // else fallthrough
+
+ case "AwaitExpression":
+ switch (parent.type) {
+ case "TaggedTemplateExpression":
+ case "UnaryExpression":
+ case "BinaryExpression":
+ case "LogicalExpression":
+ case "SpreadElement":
+ case "SpreadProperty":
+ case "TSAsExpression":
+ case "TSNonNullExpression":
+ case "BindExpression":
+ return true;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return name === "object";
+
+ case "NewExpression":
+ case "CallExpression":
+ case "OptionalCallExpression":
+ return name === "callee";
+
+ case "ConditionalExpression":
+ return parent.test === node;
+
+ default:
+ return false;
+ }
+
+ case "TSConditionalType":
+ if (parent.type === "TSConditionalType" && node === parent.extendsType) {
+ return true;
+ }
+
+ // fallthrough
+
+ case "TSFunctionType":
+ case "TSConstructorType":
+ if (parent.type === "TSConditionalType" && node === parent.checkType) {
+ return true;
+ }
+
+ // fallthrough
+
+ case "TSUnionType":
+ case "TSIntersectionType":
+ if (parent.type === "TSUnionType" || parent.type === "TSIntersectionType") {
+ return true;
+ }
+
+ // fallthrough
+
+ case "TSTypeOperator":
+ case "TSInferType":
+ return parent.type === "TSArrayType" || parent.type === "TSOptionalType" || parent.type === "TSRestType" || parent.type === "TSIndexedAccessType" && node === parent.objectType || parent.type === "TSTypeOperator";
+
+ case "ArrayTypeAnnotation":
+ return parent.type === "NullableTypeAnnotation";
+
+ case "IntersectionTypeAnnotation":
+ case "UnionTypeAnnotation":
+ return parent.type === "ArrayTypeAnnotation" || parent.type === "NullableTypeAnnotation" || parent.type === "IntersectionTypeAnnotation" || parent.type === "UnionTypeAnnotation";
+
+ case "NullableTypeAnnotation":
+ return parent.type === "ArrayTypeAnnotation";
+
+ case "FunctionTypeAnnotation":
+ {
+ var ancestor = parent.type === "NullableTypeAnnotation" ? path.getParentNode(1) : parent;
+ return ancestor.type === "UnionTypeAnnotation" || ancestor.type === "IntersectionTypeAnnotation" || ancestor.type === "ArrayTypeAnnotation" || // We should check ancestor's parent to know whether the parentheses
+ // are really needed, but since ??T doesn't make sense this check
+ // will almost never be true.
+ ancestor.type === "NullableTypeAnnotation";
+ }
+
+ case "StringLiteral":
+ case "NumericLiteral":
+ case "Literal":
+ if (typeof node.value === "string" && parent.type === "ExpressionStatement" && ( // TypeScript workaround for https://github.com/JamesHenry/typescript-estree/issues/2
+ // See corresponding workaround in printer.js case: "Literal"
+ options.parser !== "typescript" && !parent.directive || options.parser === "typescript" && options.originalText.substr(options.locStart(node) - 1, 1) === "(")) {
+ // To avoid becoming a directive
+ var grandParent = path.getParentNode(1);
+ return grandParent.type === "Program" || grandParent.type === "BlockStatement";
+ }
+
+ return parent.type === "MemberExpression" && typeof node.value === "number" && name === "object" && parent.object === node;
+
+ case "AssignmentExpression":
+ {
+ var _grandParent = path.getParentNode(1);
+
+ if (parent.type === "ArrowFunctionExpression" && parent.body === node) {
+ return true;
+ } else if (parent.type === "ClassProperty" && parent.key === node && parent.computed) {
+ return false;
+ } else if (parent.type === "TSPropertySignature" && parent.name === node) {
+ return false;
+ } else if (parent.type === "ForStatement" && (parent.init === node || parent.update === node)) {
+ return false;
+ } else if (parent.type === "ExpressionStatement") {
+ return node.left.type === "ObjectPattern";
+ } else if (parent.type === "TSPropertySignature" && parent.key === node) {
+ return false;
+ } else if (parent.type === "AssignmentExpression") {
+ return false;
+ } else if (parent.type === "SequenceExpression" && _grandParent && _grandParent.type === "ForStatement" && (_grandParent.init === parent || _grandParent.update === parent)) {
+ return false;
+ } else if (parent.type === "Property" && parent.value === node) {
+ return false;
+ } else if (parent.type === "NGChainedExpression") {
+ return false;
+ }
+
+ return true;
+ }
+
+ case "ConditionalExpression":
+ switch (parent.type) {
+ case "TaggedTemplateExpression":
+ case "UnaryExpression":
+ case "SpreadElement":
+ case "SpreadProperty":
+ case "BinaryExpression":
+ case "LogicalExpression":
+ case "NGPipeExpression":
+ case "ExportDefaultDeclaration":
+ case "AwaitExpression":
+ case "JSXSpreadAttribute":
+ case "TSTypeAssertion":
+ case "TypeCastExpression":
+ case "TSAsExpression":
+ case "TSNonNullExpression":
+ return true;
+
+ case "NewExpression":
+ case "CallExpression":
+ case "OptionalCallExpression":
+ return name === "callee";
+
+ case "ConditionalExpression":
+ return name === "test" && parent.test === node;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return name === "object";
+
+ default:
+ return false;
+ }
+
+ case "FunctionExpression":
+ switch (parent.type) {
+ case "NewExpression":
+ case "CallExpression":
+ case "OptionalCallExpression":
+ // Not always necessary, but it's clearer to the reader if IIFEs are wrapped in parentheses.
+ // Is necessary if it is `expression` of `ExpressionStatement`.
+ return name === "callee";
+
+ case "TaggedTemplateExpression":
+ return true;
+ // This is basically a kind of IIFE.
+
+ default:
+ return false;
+ }
+
+ case "ArrowFunctionExpression":
+ switch (parent.type) {
+ case "NewExpression":
+ case "CallExpression":
+ case "OptionalCallExpression":
+ return name === "callee";
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return name === "object";
+
+ case "TSAsExpression":
+ case "BindExpression":
+ case "TaggedTemplateExpression":
+ case "UnaryExpression":
+ case "LogicalExpression":
+ case "BinaryExpression":
+ case "AwaitExpression":
+ case "TSTypeAssertion":
+ return true;
+
+ case "ConditionalExpression":
+ return name === "test";
+
+ default:
+ return false;
+ }
+
+ case "ClassExpression":
+ switch (parent.type) {
+ case "NewExpression":
+ return name === "callee" && parent.callee === node;
+
+ default:
+ return false;
+ }
+
+ case "OptionalMemberExpression":
+ case "OptionalCallExpression":
+ if ((parent.type === "MemberExpression" && name === "object" || parent.type === "CallExpression" && name === "callee") && // workaround for https://github.com/facebook/flow/issues/8159
+ !(options.parser === "flow" && parent.range[0] === node.range[0])) {
+ return true;
+ }
+
+ // fallthrough
+
+ case "CallExpression":
+ case "MemberExpression":
+ case "TaggedTemplateExpression":
+ case "TSNonNullExpression":
+ if ((parent.type === "BindExpression" || parent.type === "NewExpression") && name === "callee") {
+ var object = node;
+
+ while (object) {
+ switch (object.type) {
+ case "CallExpression":
+ case "OptionalCallExpression":
+ return true;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ case "BindExpression":
+ object = object.object;
+ break;
+ // tagged templates are basically member expressions from a grammar perspective
+ // see https://tc39.github.io/ecma262/#prod-MemberExpression
+
+ case "TaggedTemplateExpression":
+ object = object.tag;
+ break;
+
+ case "TSNonNullExpression":
+ object = object.expression;
+ break;
+
+ default:
+ return false;
+ }
+ }
+ }
+
+ return false;
+
+ case "BindExpression":
+ return (parent.type === "BindExpression" || parent.type === "NewExpression") && name === "callee" || (parent.type === "MemberExpression" || parent.type === "OptionalMemberExpression") && name === "object";
+
+ case "NGPipeExpression":
+ if (parent.type === "NGRoot" || parent.type === "NGMicrosyntaxExpression" || parent.type === "ObjectProperty" || parent.type === "ArrayExpression" || (parent.type === "CallExpression" || parent.type === "OptionalCallExpression") && parent.arguments[name] === node || parent.type === "NGPipeExpression" && name === "right" || parent.type === "MemberExpression" && name === "property" || parent.type === "AssignmentExpression") {
+ return false;
+ }
+
+ return true;
+
+ case "JSXFragment":
+ case "JSXElement":
+ return name === "callee" || parent.type !== "ArrayExpression" && parent.type !== "ArrowFunctionExpression" && parent.type !== "AssignmentExpression" && parent.type !== "AssignmentPattern" && parent.type !== "BinaryExpression" && parent.type !== "CallExpression" && parent.type !== "ConditionalExpression" && parent.type !== "ExpressionStatement" && parent.type !== "JsExpressionRoot" && parent.type !== "JSXAttribute" && parent.type !== "JSXElement" && parent.type !== "JSXExpressionContainer" && parent.type !== "JSXFragment" && parent.type !== "LogicalExpression" && parent.type !== "ObjectProperty" && parent.type !== "OptionalCallExpression" && parent.type !== "Property" && parent.type !== "ReturnStatement" && parent.type !== "TypeCastExpression" && parent.type !== "VariableDeclarator";
+
+ case "TypeAnnotation":
+ return name === "returnType" && parent.type === "ArrowFunctionExpression" && includesFunctionTypeInObjectType(node);
+ }
+
+ return false;
+}
+
+function isStatement(node) {
+ return node.type === "BlockStatement" || node.type === "BreakStatement" || node.type === "ClassBody" || node.type === "ClassDeclaration" || node.type === "ClassMethod" || node.type === "ClassProperty" || node.type === "ClassPrivateProperty" || node.type === "ContinueStatement" || node.type === "DebuggerStatement" || node.type === "DeclareClass" || node.type === "DeclareExportAllDeclaration" || node.type === "DeclareExportDeclaration" || node.type === "DeclareFunction" || node.type === "DeclareInterface" || node.type === "DeclareModule" || node.type === "DeclareModuleExports" || node.type === "DeclareVariable" || node.type === "DoWhileStatement" || node.type === "EnumDeclaration" || node.type === "ExportAllDeclaration" || node.type === "ExportDefaultDeclaration" || node.type === "ExportNamedDeclaration" || node.type === "ExpressionStatement" || node.type === "ForAwaitStatement" || node.type === "ForInStatement" || node.type === "ForOfStatement" || node.type === "ForStatement" || node.type === "FunctionDeclaration" || node.type === "IfStatement" || node.type === "ImportDeclaration" || node.type === "InterfaceDeclaration" || node.type === "LabeledStatement" || node.type === "MethodDefinition" || node.type === "ReturnStatement" || node.type === "SwitchStatement" || node.type === "ThrowStatement" || node.type === "TryStatement" || node.type === "TSDeclareFunction" || node.type === "TSEnumDeclaration" || node.type === "TSImportEqualsDeclaration" || node.type === "TSInterfaceDeclaration" || node.type === "TSModuleDeclaration" || node.type === "TSNamespaceExportDeclaration" || node.type === "TypeAlias" || node.type === "VariableDeclaration" || node.type === "WhileStatement" || node.type === "WithStatement";
+}
+
+function includesFunctionTypeInObjectType(node) {
+ return hasNode$1(node, function (n1) {
+ return n1.type === "ObjectTypeAnnotation" && hasNode$1(n1, function (n2) {
+ return n2.type === "FunctionTypeAnnotation" || undefined;
+ }) || undefined;
+ });
+}
+
+function endsWithRightBracket(node) {
+ switch (node.type) {
+ case "ObjectExpression":
+ return true;
+
+ default:
+ return false;
+ }
+}
+
+function isFollowedByRightBracket(path) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ var name = path.getName();
+
+ switch (parent.type) {
+ case "NGPipeExpression":
+ if (typeof name === "number" && parent.arguments[name] === node && parent.arguments.length - 1 === name) {
+ return path.callParent(isFollowedByRightBracket);
+ }
+
+ break;
+
+ case "ObjectProperty":
+ if (name === "value") {
+ var parentParent = path.getParentNode(1);
+ return parentParent.properties[parentParent.properties.length - 1] === parent;
+ }
+
+ break;
+
+ case "BinaryExpression":
+ case "LogicalExpression":
+ if (name === "right") {
+ return path.callParent(isFollowedByRightBracket);
+ }
+
+ break;
+
+ case "ConditionalExpression":
+ if (name === "alternate") {
+ return path.callParent(isFollowedByRightBracket);
+ }
+
+ break;
+
+ case "UnaryExpression":
+ if (parent.prefix) {
+ return path.callParent(isFollowedByRightBracket);
+ }
+
+ break;
+ }
+
+ return false;
+}
+
+function shouldWrapFunctionForExportDefault(path, options) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+
+ if (node.type === "FunctionExpression" || node.type === "ClassExpression") {
+ return parent.type === "ExportDefaultDeclaration" || // in some cases the function is already wrapped
+ // (e.g. `export default (function() {})();`)
+ // in this case we don't need to add extra parens
+ !needsParens(path, options);
+ }
+
+ if (!hasNakedLeftSide$1(node) || parent.type !== "ExportDefaultDeclaration" && needsParens(path, options)) {
+ return false;
+ }
+
+ return path.call.apply(path, [function (childPath) {
+ return shouldWrapFunctionForExportDefault(childPath, options);
+ }].concat(getLeftSidePathName$1(path, node)));
+}
+
+var needsParens_1 = needsParens;
+
+var _require$$0$builders$1 = doc.builders,
+ concat$5 = _require$$0$builders$1.concat,
+ join$3 = _require$$0$builders$1.join,
+ line$1 = _require$$0$builders$1.line;
+
+function printHtmlBinding(path, options, print) {
+ var node = path.getValue();
+
+ if (options.__onHtmlBindingRoot && path.getName() === null) {
+ options.__onHtmlBindingRoot(node);
+ }
+
+ if (node.type !== "File") {
+ return;
+ }
+
+ if (options.__isVueForBindingLeft) {
+ return path.call(function (functionDeclarationPath) {
+ var _functionDeclarationP = functionDeclarationPath.getValue(),
+ params = _functionDeclarationP.params;
+
+ return concat$5([params.length > 1 ? "(" : "", join$3(concat$5([",", line$1]), functionDeclarationPath.map(print, "params")), params.length > 1 ? ")" : ""]);
+ }, "program", "body", 0);
+ }
+
+ if (options.__isVueSlotScope) {
+ return path.call(function (functionDeclarationPath) {
+ return join$3(concat$5([",", line$1]), functionDeclarationPath.map(print, "params"));
+ }, "program", "body", 0);
+ }
+} // based on https://github.com/prettier/prettier/blob/master/src/language-html/syntax-vue.js isVueEventBindingExpression()
+
+
+function isVueEventBindingExpression(node) {
+ switch (node.type) {
+ case "MemberExpression":
+ switch (node.property.type) {
+ case "Identifier":
+ case "NumericLiteral":
+ case "StringLiteral":
+ return isVueEventBindingExpression(node.object);
+ }
+
+ return false;
+
+ case "Identifier":
+ return true;
+
+ default:
+ return false;
+ }
+}
+
+var htmlBinding = {
+ isVueEventBindingExpression,
+ printHtmlBinding
+};
+
+function preprocess(ast, options) {
+ switch (options.parser) {
+ case "json":
+ case "json5":
+ case "json-stringify":
+ case "__js_expression":
+ case "__vue_expression":
+ return Object.assign({}, ast, {
+ type: options.parser.startsWith("__") ? "JsExpressionRoot" : "JsonRoot",
+ node: ast,
+ comments: []
+ });
+
+ default:
+ return ast;
+ }
+}
+
+var preprocess_1 = preprocess;
+
+var getParentExportDeclaration$1 = util.getParentExportDeclaration,
+ isExportDeclaration$1 = util.isExportDeclaration,
+ shouldFlatten$1 = util.shouldFlatten,
+ getNextNonSpaceNonCommentCharacter$1 = util.getNextNonSpaceNonCommentCharacter,
+ hasNewline$3 = util.hasNewline,
+ hasNewlineInRange$2 = util.hasNewlineInRange,
+ getLast$2 = util.getLast,
+ getStringWidth$2 = util.getStringWidth,
+ printString$1 = util.printString,
+ printNumber$1 = util.printNumber,
+ hasIgnoreComment$2 = util.hasIgnoreComment,
+ hasNodeIgnoreComment$2 = util.hasNodeIgnoreComment,
+ getPenultimate$1 = util.getPenultimate,
+ startsWithNoLookaheadToken$1 = util.startsWithNoLookaheadToken,
+ getIndentSize$1 = util.getIndentSize,
+ matchAncestorTypes$1 = util.matchAncestorTypes,
+ getPreferredQuote$1 = util.getPreferredQuote;
+var isNextLineEmpty$2 = utilShared.isNextLineEmpty,
+ isNextLineEmptyAfterIndex$1 = utilShared.isNextLineEmptyAfterIndex,
+ getNextNonSpaceNonCommentCharacterIndex$2 = utilShared.getNextNonSpaceNonCommentCharacterIndex;
+var insertPragma$1 = pragma.insertPragma;
+var printHtmlBinding$1 = htmlBinding.printHtmlBinding,
+ isVueEventBindingExpression$1 = htmlBinding.isVueEventBindingExpression;
+var classChildNeedsASIProtection$1 = utils$2.classChildNeedsASIProtection,
+ classPropMayCauseASIProblems$1 = utils$2.classPropMayCauseASIProblems,
+ conditionalExpressionChainContainsJSX$1 = utils$2.conditionalExpressionChainContainsJSX,
+ getFlowVariance$1 = utils$2.getFlowVariance,
+ getLeftSidePathName$2 = utils$2.getLeftSidePathName,
+ getTypeScriptMappedTypeModifier$1 = utils$2.getTypeScriptMappedTypeModifier,
+ hasDanglingComments$1 = utils$2.hasDanglingComments,
+ hasFlowAnnotationComment$1 = utils$2.hasFlowAnnotationComment,
+ hasFlowShorthandAnnotationComment$2 = utils$2.hasFlowShorthandAnnotationComment,
+ hasLeadingComment$3 = utils$2.hasLeadingComment,
+ hasLeadingOwnLineComment$1 = utils$2.hasLeadingOwnLineComment,
+ hasNakedLeftSide$2 = utils$2.hasNakedLeftSide,
+ hasNewlineBetweenOrAfterDecorators$1 = utils$2.hasNewlineBetweenOrAfterDecorators,
+ hasNgSideEffect$1 = utils$2.hasNgSideEffect,
+ hasPrettierIgnore$1 = utils$2.hasPrettierIgnore,
+ hasTrailingComment$1 = utils$2.hasTrailingComment,
+ identity$1 = utils$2.identity,
+ isBinaryish$1 = utils$2.isBinaryish,
+ isCallOrOptionalCallExpression$1 = utils$2.isCallOrOptionalCallExpression,
+ isEmptyJSXElement$1 = utils$2.isEmptyJSXElement,
+ isFlowAnnotationComment$1 = utils$2.isFlowAnnotationComment,
+ isFunctionCompositionArgs$1 = utils$2.isFunctionCompositionArgs,
+ isFunctionNotation$1 = utils$2.isFunctionNotation,
+ isFunctionOrArrowExpression$1 = utils$2.isFunctionOrArrowExpression,
+ isGetterOrSetter$1 = utils$2.isGetterOrSetter,
+ isJestEachTemplateLiteral$1 = utils$2.isJestEachTemplateLiteral,
+ isJSXNode$1 = utils$2.isJSXNode,
+ isJSXWhitespaceExpression$1 = utils$2.isJSXWhitespaceExpression,
+ isLastStatement$1 = utils$2.isLastStatement,
+ isLiteral$1 = utils$2.isLiteral,
+ isLongCurriedCallExpression$1 = utils$2.isLongCurriedCallExpression,
+ isMeaningfulJSXText$1 = utils$2.isMeaningfulJSXText,
+ isMemberExpressionChain$1 = utils$2.isMemberExpressionChain,
+ isMemberish$1 = utils$2.isMemberish,
+ isNgForOf$1 = utils$2.isNgForOf,
+ isNumericLiteral$1 = utils$2.isNumericLiteral,
+ isObjectType$1 = utils$2.isObjectType,
+ isObjectTypePropertyAFunction$1 = utils$2.isObjectTypePropertyAFunction,
+ isSimpleFlowType$1 = utils$2.isSimpleFlowType,
+ isSimpleTemplateLiteral$1 = utils$2.isSimpleTemplateLiteral,
+ isStringLiteral$1 = utils$2.isStringLiteral,
+ isStringPropSafeToCoerceToIdentifier$1 = utils$2.isStringPropSafeToCoerceToIdentifier,
+ isTemplateOnItsOwnLine$1 = utils$2.isTemplateOnItsOwnLine,
+ isTestCall$1 = utils$2.isTestCall,
+ isTheOnlyJSXElementInMarkdown$1 = utils$2.isTheOnlyJSXElementInMarkdown,
+ isTSXFile$1 = utils$2.isTSXFile,
+ isTypeAnnotationAFunction$1 = utils$2.isTypeAnnotationAFunction,
+ matchJsxWhitespaceRegex$1 = utils$2.matchJsxWhitespaceRegex,
+ needsHardlineAfterDanglingComment$1 = utils$2.needsHardlineAfterDanglingComment,
+ rawText$1 = utils$2.rawText,
+ returnArgumentHasLeadingComment$1 = utils$2.returnArgumentHasLeadingComment;
+var needsQuoteProps = new WeakMap();
+var _require$$5$builders = doc.builders,
+ concat$6 = _require$$5$builders.concat,
+ join$4 = _require$$5$builders.join,
+ line$2 = _require$$5$builders.line,
+ hardline$4 = _require$$5$builders.hardline,
+ softline$2 = _require$$5$builders.softline,
+ literalline$2 = _require$$5$builders.literalline,
+ group$2 = _require$$5$builders.group,
+ indent$3 = _require$$5$builders.indent,
+ align$1 = _require$$5$builders.align,
+ conditionalGroup$1 = _require$$5$builders.conditionalGroup,
+ fill$2 = _require$$5$builders.fill,
+ ifBreak$1 = _require$$5$builders.ifBreak,
+ breakParent$2 = _require$$5$builders.breakParent,
+ lineSuffixBoundary$1 = _require$$5$builders.lineSuffixBoundary,
+ addAlignmentToDoc$2 = _require$$5$builders.addAlignmentToDoc,
+ dedent$1 = _require$$5$builders.dedent,
+ _require$$5$utils = doc.utils,
+ willBreak$1 = _require$$5$utils.willBreak,
+ isLineNext$1 = _require$$5$utils.isLineNext,
+ isEmpty$1 = _require$$5$utils.isEmpty,
+ removeLines$1 = _require$$5$utils.removeLines,
+ printDocToString$2 = doc.printer.printDocToString;
+var uid = 0;
+
+function shouldPrintComma(options, level) {
+ level = level || "es5";
+
+ switch (options.trailingComma) {
+ case "all":
+ if (level === "all") {
+ return true;
+ }
+
+ // fallthrough
+
+ case "es5":
+ if (level === "es5") {
+ return true;
+ }
+
+ // fallthrough
+
+ case "none":
+ default:
+ return false;
+ }
+}
+
+function genericPrint(path, options, printPath, args) {
+ var node = path.getValue();
+ var needsParens = false;
+ var linesWithoutParens = printPathNoParens(path, options, printPath, args);
+
+ if (!node || isEmpty$1(linesWithoutParens)) {
+ return linesWithoutParens;
+ }
+
+ var parentExportDecl = getParentExportDeclaration$1(path);
+ var decorators = [];
+
+ if (node.type === "ClassMethod" || node.type === "ClassPrivateMethod" || node.type === "ClassProperty" || node.type === "TSAbstractClassProperty" || node.type === "ClassPrivateProperty" || node.type === "MethodDefinition" || node.type === "TSAbstractMethodDefinition") ; else if (node.decorators && node.decorators.length > 0 && // If the parent node is an export declaration and the decorator
+ // was written before the export, the export will be responsible
+ // for printing the decorators.
+ !(parentExportDecl && options.locStart(parentExportDecl, {
+ ignoreDecorators: true
+ }) > options.locStart(node.decorators[0]))) {
+ var shouldBreak = node.type === "ClassExpression" || node.type === "ClassDeclaration" || hasNewlineBetweenOrAfterDecorators$1(node, options);
+ var separator = shouldBreak ? hardline$4 : line$2;
+ path.each(function (decoratorPath) {
+ var decorator = decoratorPath.getValue();
+
+ if (decorator.expression) {
+ decorator = decorator.expression;
+ } else {
+ decorator = decorator.callee;
+ }
+
+ decorators.push(printPath(decoratorPath), separator);
+ }, "decorators");
+
+ if (parentExportDecl) {
+ decorators.unshift(hardline$4);
+ }
+ } else if (isExportDeclaration$1(node) && node.declaration && node.declaration.decorators && node.declaration.decorators.length > 0 && // Only print decorators here if they were written before the export,
+ // otherwise they are printed by the node.declaration
+ options.locStart(node, {
+ ignoreDecorators: true
+ }) > options.locStart(node.declaration.decorators[0])) {
+ // Export declarations are responsible for printing any decorators
+ // that logically apply to node.declaration.
+ path.each(function (decoratorPath) {
+ var decorator = decoratorPath.getValue();
+ var prefix = decorator.type === "Decorator" ? "" : "@";
+ decorators.push(prefix, printPath(decoratorPath), hardline$4);
+ }, "declaration", "decorators");
+ } else {
+ // Nodes with decorators can't have parentheses, so we can avoid
+ // computing pathNeedsParens() except in this case.
+ needsParens = needsParens_1(path, options);
+ }
+
+ var parts = [];
+
+ if (needsParens) {
+ parts.unshift("(");
+ }
+
+ parts.push(linesWithoutParens);
+
+ if (needsParens) {
+ var _node = path.getValue();
+
+ if (hasFlowShorthandAnnotationComment$2(_node)) {
+ parts.push(" /*");
+ parts.push(_node.trailingComments[0].value.trimLeft());
+ parts.push("*/");
+ _node.trailingComments[0].printed = true;
+ }
+
+ parts.push(")");
+ }
+
+ if (decorators.length > 0) {
+ return group$2(concat$6(decorators.concat(parts)));
+ }
+
+ return concat$6(parts);
+}
+
+function printDecorators(path, options, print) {
+ var node = path.getValue();
+ return group$2(concat$6([join$4(line$2, path.map(print, "decorators")), hasNewlineBetweenOrAfterDecorators$1(node, options) ? hardline$4 : line$2]));
+}
+/**
+ * The following is the shared logic for
+ * ternary operators, namely ConditionalExpression
+ * and TSConditionalType
+ * @typedef {Object} OperatorOptions
+ * @property {() => Array<string | Doc>} beforeParts - Parts to print before the `?`.
+ * @property {(breakClosingParen: boolean) => Array<string | Doc>} afterParts - Parts to print after the conditional expression.
+ * @property {boolean} shouldCheckJsx - Whether to check for and print in JSX mode.
+ * @property {string} conditionalNodeType - The type of the conditional expression node, ie "ConditionalExpression" or "TSConditionalType".
+ * @property {string} consequentNodePropertyName - The property at which the consequent node can be found on the main node, eg "consequent".
+ * @property {string} alternateNodePropertyName - The property at which the alternate node can be found on the main node, eg "alternate".
+ * @property {string} testNodePropertyName - The property at which the test node can be found on the main node, eg "test".
+ * @property {boolean} breakNested - Whether to break all nested ternaries when one breaks.
+ * @param {FastPath} path - The path to the ConditionalExpression/TSConditionalType node.
+ * @param {Options} options - Prettier options
+ * @param {Function} print - Print function to call recursively
+ * @param {OperatorOptions} operatorOptions
+ * @returns Doc
+ */
+
+
+function printTernaryOperator(path, options, print, operatorOptions) {
+ var node = path.getValue();
+ var testNode = node[operatorOptions.testNodePropertyName];
+ var consequentNode = node[operatorOptions.consequentNodePropertyName];
+ var alternateNode = node[operatorOptions.alternateNodePropertyName];
+ var parts = []; // We print a ConditionalExpression in either "JSX mode" or "normal mode".
+ // See tests/jsx/conditional-expression.js for more info.
+
+ var jsxMode = false;
+ var parent = path.getParentNode();
+ var forceNoIndent = parent.type === operatorOptions.conditionalNodeType; // Find the outermost non-ConditionalExpression parent, and the outermost
+ // ConditionalExpression parent. We'll use these to determine if we should
+ // print in JSX mode.
+
+ var currentParent;
+ var previousParent;
+ var i = 0;
+
+ do {
+ previousParent = currentParent || node;
+ currentParent = path.getParentNode(i);
+ i++;
+ } while (currentParent && currentParent.type === operatorOptions.conditionalNodeType);
+
+ var firstNonConditionalParent = currentParent || parent;
+ var lastConditionalParent = previousParent;
+
+ if (operatorOptions.shouldCheckJsx && (isJSXNode$1(testNode) || isJSXNode$1(consequentNode) || isJSXNode$1(alternateNode) || conditionalExpressionChainContainsJSX$1(lastConditionalParent))) {
+ jsxMode = true;
+ forceNoIndent = true; // Even though they don't need parens, we wrap (almost) everything in
+ // parens when using ?: within JSX, because the parens are analogous to
+ // curly braces in an if statement.
+
+ var wrap = function wrap(doc) {
+ return concat$6([ifBreak$1("(", ""), indent$3(concat$6([softline$2, doc])), softline$2, ifBreak$1(")", "")]);
+ }; // The only things we don't wrap are:
+ // * Nested conditional expressions in alternates
+ // * null
+
+
+ var isNull = function isNull(node) {
+ return node.type === "NullLiteral" || node.type === "Literal" && node.value === null;
+ };
+
+ parts.push(" ? ", isNull(consequentNode) ? path.call(print, operatorOptions.consequentNodePropertyName) : wrap(path.call(print, operatorOptions.consequentNodePropertyName)), " : ", alternateNode.type === operatorOptions.conditionalNodeType || isNull(alternateNode) ? path.call(print, operatorOptions.alternateNodePropertyName) : wrap(path.call(print, operatorOptions.alternateNodePropertyName)));
+ } else {
+ // normal mode
+ var part = concat$6([line$2, "? ", consequentNode.type === operatorOptions.conditionalNodeType ? ifBreak$1("", "(") : "", align$1(2, path.call(print, operatorOptions.consequentNodePropertyName)), consequentNode.type === operatorOptions.conditionalNodeType ? ifBreak$1("", ")") : "", line$2, ": ", alternateNode.type === operatorOptions.conditionalNodeType ? path.call(print, operatorOptions.alternateNodePropertyName) : align$1(2, path.call(print, operatorOptions.alternateNodePropertyName))]);
+ parts.push(parent.type !== operatorOptions.conditionalNodeType || parent[operatorOptions.alternateNodePropertyName] === node ? part : options.useTabs ? dedent$1(indent$3(part)) : align$1(Math.max(0, options.tabWidth - 2), part));
+ } // We want a whole chain of ConditionalExpressions to all
+ // break if any of them break. That means we should only group around the
+ // outer-most ConditionalExpression.
+
+
+ var maybeGroup = function maybeGroup(doc) {
+ return operatorOptions.breakNested ? parent === firstNonConditionalParent ? group$2(doc) : doc : group$2(doc);
+ }; // Break the closing paren to keep the chain right after it:
+ // (a
+ // ? b
+ // : c
+ // ).call()
+
+
+ var breakClosingParen = !jsxMode && (parent.type === "MemberExpression" || parent.type === "OptionalMemberExpression" || parent.type === "NGPipeExpression" && parent.left === node && operatorOptions.breakNested) && !parent.computed;
+ return maybeGroup(concat$6([].concat(function (testDoc) {
+ return (
+ /**
+ * a
+ * ? b
+ * : multiline
+ * test
+ * node
+ * ^^ align(2)
+ * ? d
+ * : e
+ */
+ parent.type === operatorOptions.conditionalNodeType && parent[operatorOptions.alternateNodePropertyName] === node ? align$1(2, testDoc) : testDoc
+ );
+ }(concat$6(operatorOptions.beforeParts())), forceNoIndent ? concat$6(parts) : indent$3(concat$6(parts)), operatorOptions.afterParts(breakClosingParen))));
+}
+
+function printPathNoParens(path, options, print, args) {
+ var n = path.getValue();
+ var semi = options.semi ? ";" : "";
+
+ if (!n) {
+ return "";
+ }
+
+ if (typeof n === "string") {
+ return n;
+ }
+
+ var htmlBinding = printHtmlBinding$1(path, options, print);
+
+ if (htmlBinding) {
+ return htmlBinding;
+ }
+
+ var parts = [];
+
+ switch (n.type) {
+ case "JsExpressionRoot":
+ return path.call(print, "node");
+
+ case "JsonRoot":
+ return concat$6([path.call(print, "node"), hardline$4]);
+
+ case "File":
+ // Print @babel/parser's InterpreterDirective here so that
+ // leading comments on the `Program` node get printed after the hashbang.
+ if (n.program && n.program.interpreter) {
+ parts.push(path.call(function (programPath) {
+ return programPath.call(print, "interpreter");
+ }, "program"));
+ }
+
+ parts.push(path.call(print, "program"));
+ return concat$6(parts);
+
+ case "Program":
+ // Babel 6
+ if (n.directives) {
+ path.each(function (childPath) {
+ parts.push(print(childPath), semi, hardline$4);
+
+ if (isNextLineEmpty$2(options.originalText, childPath.getValue(), options)) {
+ parts.push(hardline$4);
+ }
+ }, "directives");
+ }
+
+ parts.push(path.call(function (bodyPath) {
+ return printStatementSequence(bodyPath, options, print);
+ }, "body"));
+ parts.push(comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true)); // Only force a trailing newline if there were any contents.
+
+ if (n.body.length || n.comments) {
+ parts.push(hardline$4);
+ }
+
+ return concat$6(parts);
+ // Babel extension.
+
+ case "EmptyStatement":
+ return "";
+
+ case "ExpressionStatement":
+ // Detect Flow-parsed directives
+ if (n.directive) {
+ return concat$6([nodeStr(n.expression, options, true), semi]);
+ }
+
+ if (options.parser === "__vue_event_binding") {
+ var parent = path.getParentNode();
+
+ if (parent.type === "Program" && parent.body.length === 1 && parent.body[0] === n) {
+ return concat$6([path.call(print, "expression"), isVueEventBindingExpression$1(n.expression) ? ";" : ""]);
+ }
+ } // Do not append semicolon after the only JSX element in a program
+
+
+ return concat$6([path.call(print, "expression"), isTheOnlyJSXElementInMarkdown$1(options, path) ? "" : semi]);
+ // Babel extension.
+
+ case "ParenthesizedExpression":
+ return concat$6(["(", path.call(print, "expression"), ")"]);
+
+ case "AssignmentExpression":
+ return printAssignment(n.left, path.call(print, "left"), concat$6([" ", n.operator]), n.right, path.call(print, "right"), options);
+
+ case "BinaryExpression":
+ case "LogicalExpression":
+ case "NGPipeExpression":
+ {
+ var _parent = path.getParentNode();
+
+ var parentParent = path.getParentNode(1);
+ var isInsideParenthesis = n !== _parent.body && (_parent.type === "IfStatement" || _parent.type === "WhileStatement" || _parent.type === "SwitchStatement" || _parent.type === "DoWhileStatement");
+
+ var _parts = printBinaryishExpressions(path, print, options,
+ /* isNested */
+ false, isInsideParenthesis); // if (
+ // this.hasPlugin("dynamicImports") && this.lookahead().type === tt.parenLeft
+ // ) {
+ //
+ // looks super weird, we want to break the children if the parent breaks
+ //
+ // if (
+ // this.hasPlugin("dynamicImports") &&
+ // this.lookahead().type === tt.parenLeft
+ // ) {
+
+
+ if (isInsideParenthesis) {
+ return concat$6(_parts);
+ } // Break between the parens in
+ // unaries or in a member or specific call expression, i.e.
+ //
+ // (
+ // a &&
+ // b &&
+ // c
+ // ).call()
+
+
+ if ((_parent.type === "CallExpression" || _parent.type === "OptionalCallExpression") && _parent.callee === n || _parent.type === "UnaryExpression" || (_parent.type === "MemberExpression" || _parent.type === "OptionalMemberExpression") && !_parent.computed) {
+ return group$2(concat$6([indent$3(concat$6([softline$2, concat$6(_parts)])), softline$2]));
+ } // Avoid indenting sub-expressions in some cases where the first sub-expression is already
+ // indented accordingly. We should indent sub-expressions where the first case isn't indented.
+
+
+ var shouldNotIndent = _parent.type === "ReturnStatement" || _parent.type === "JSXExpressionContainer" && parentParent.type === "JSXAttribute" || n.type !== "NGPipeExpression" && (_parent.type === "NGRoot" && options.parser === "__ng_binding" || _parent.type === "NGMicrosyntaxExpression" && parentParent.type === "NGMicrosyntax" && parentParent.body.length === 1) || n === _parent.body && _parent.type === "ArrowFunctionExpression" || n !== _parent.body && _parent.type === "ForStatement" || _parent.type === "ConditionalExpression" && parentParent.type !== "ReturnStatement" && parentParent.type !== "CallExpression" && parentParent.type !== "OptionalCallExpression";
+ var shouldIndentIfInlining = _parent.type === "AssignmentExpression" || _parent.type === "VariableDeclarator" || _parent.type === "ClassProperty" || _parent.type === "TSAbstractClassProperty" || _parent.type === "ClassPrivateProperty" || _parent.type === "ObjectProperty" || _parent.type === "Property";
+ var samePrecedenceSubExpression = isBinaryish$1(n.left) && shouldFlatten$1(n.operator, n.left.operator);
+
+ if (shouldNotIndent || shouldInlineLogicalExpression(n) && !samePrecedenceSubExpression || !shouldInlineLogicalExpression(n) && shouldIndentIfInlining) {
+ return group$2(concat$6(_parts));
+ }
+
+ if (_parts.length === 0) {
+ return "";
+ } // If the right part is a JSX node, we include it in a separate group to
+ // prevent it breaking the whole chain, so we can print the expression like:
+ //
+ // foo && bar && (
+ // <Foo>
+ // <Bar />
+ // </Foo>
+ // )
+
+
+ var hasJSX = isJSXNode$1(n.right);
+ var rest = concat$6(hasJSX ? _parts.slice(1, -1) : _parts.slice(1));
+ var groupId = Symbol("logicalChain-" + ++uid);
+ var chain = group$2(concat$6([// Don't include the initial expression in the indentation
+ // level. The first item is guaranteed to be the first
+ // left-most expression.
+ _parts.length > 0 ? _parts[0] : "", indent$3(rest)]), {
+ id: groupId
+ });
+
+ if (!hasJSX) {
+ return chain;
+ }
+
+ var jsxPart = getLast$2(_parts);
+ return group$2(concat$6([chain, ifBreak$1(indent$3(jsxPart), jsxPart, {
+ groupId
+ })]));
+ }
+
+ case "AssignmentPattern":
+ return concat$6([path.call(print, "left"), " = ", path.call(print, "right")]);
+
+ case "TSTypeAssertion":
+ {
+ var shouldBreakAfterCast = !(n.expression.type === "ArrayExpression" || n.expression.type === "ObjectExpression");
+ var castGroup = group$2(concat$6(["<", indent$3(concat$6([softline$2, path.call(print, "typeAnnotation")])), softline$2, ">"]));
+ var exprContents = concat$6([ifBreak$1("("), indent$3(concat$6([softline$2, path.call(print, "expression")])), softline$2, ifBreak$1(")")]);
+
+ if (shouldBreakAfterCast) {
+ return conditionalGroup$1([concat$6([castGroup, path.call(print, "expression")]), concat$6([castGroup, group$2(exprContents, {
+ shouldBreak: true
+ })]), concat$6([castGroup, path.call(print, "expression")])]);
+ }
+
+ return group$2(concat$6([castGroup, path.call(print, "expression")]));
+ }
+
+ case "OptionalMemberExpression":
+ case "MemberExpression":
+ {
+ var _parent2 = path.getParentNode();
+
+ var firstNonMemberParent;
+ var i = 0;
+
+ do {
+ firstNonMemberParent = path.getParentNode(i);
+ i++;
+ } while (firstNonMemberParent && (firstNonMemberParent.type === "MemberExpression" || firstNonMemberParent.type === "OptionalMemberExpression" || firstNonMemberParent.type === "TSNonNullExpression"));
+
+ var shouldInline = firstNonMemberParent && (firstNonMemberParent.type === "NewExpression" || firstNonMemberParent.type === "BindExpression" || firstNonMemberParent.type === "VariableDeclarator" && firstNonMemberParent.id.type !== "Identifier" || firstNonMemberParent.type === "AssignmentExpression" && firstNonMemberParent.left.type !== "Identifier") || n.computed || n.object.type === "Identifier" && n.property.type === "Identifier" && _parent2.type !== "MemberExpression" && _parent2.type !== "OptionalMemberExpression";
+ return concat$6([path.call(print, "object"), shouldInline ? printMemberLookup(path, options, print) : group$2(indent$3(concat$6([softline$2, printMemberLookup(path, options, print)])))]);
+ }
+
+ case "MetaProperty":
+ return concat$6([path.call(print, "meta"), ".", path.call(print, "property")]);
+
+ case "BindExpression":
+ if (n.object) {
+ parts.push(path.call(print, "object"));
+ }
+
+ parts.push(group$2(indent$3(concat$6([softline$2, printBindExpressionCallee(path, options, print)]))));
+ return concat$6(parts);
+
+ case "Identifier":
+ {
+ return concat$6([n.name, printOptionalToken(path), printTypeAnnotation(path, options, print)]);
+ }
+
+ case "V8IntrinsicIdentifier":
+ return concat$6(["%", n.name]);
+
+ case "SpreadElement":
+ case "SpreadElementPattern":
+ case "RestProperty":
+ case "SpreadProperty":
+ case "SpreadPropertyPattern":
+ case "RestElement":
+ case "ObjectTypeSpreadProperty":
+ return concat$6(["...", path.call(print, "argument"), printTypeAnnotation(path, options, print)]);
+
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ parts.push(printFunctionDeclaration(path, print, options));
+
+ if (!n.body) {
+ parts.push(semi);
+ }
+
+ return concat$6(parts);
+
+ case "ArrowFunctionExpression":
+ {
+ if (n.async) {
+ parts.push("async ");
+ }
+
+ if (shouldPrintParamsWithoutParens(path, options)) {
+ parts.push(path.call(print, "params", 0));
+ } else {
+ parts.push(group$2(concat$6([printFunctionParams(path, print, options,
+ /* expandLast */
+ args && (args.expandLastArg || args.expandFirstArg),
+ /* printTypeParams */
+ true), printReturnType(path, print, options)])));
+ }
+
+ var dangling = comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true, function (comment) {
+ var nextCharacter = getNextNonSpaceNonCommentCharacterIndex$2(options.originalText, comment, options);
+ return options.originalText.substr(nextCharacter, 2) === "=>";
+ });
+
+ if (dangling) {
+ parts.push(" ", dangling);
+ }
+
+ parts.push(" =>");
+ var body = path.call(function (bodyPath) {
+ return print(bodyPath, args);
+ }, "body"); // We want to always keep these types of nodes on the same line
+ // as the arrow.
+
+ if (!hasLeadingOwnLineComment$1(options.originalText, n.body, options) && (n.body.type === "ArrayExpression" || n.body.type === "ObjectExpression" || n.body.type === "BlockStatement" || isJSXNode$1(n.body) || isTemplateOnItsOwnLine$1(n.body, options.originalText, options) || n.body.type === "ArrowFunctionExpression" || n.body.type === "DoExpression")) {
+ return group$2(concat$6([concat$6(parts), " ", body]));
+ } // We handle sequence expressions as the body of arrows specially,
+ // so that the required parentheses end up on their own lines.
+
+
+ if (n.body.type === "SequenceExpression") {
+ return group$2(concat$6([concat$6(parts), group$2(concat$6([" (", indent$3(concat$6([softline$2, body])), softline$2, ")"]))]));
+ } // if the arrow function is expanded as last argument, we are adding a
+ // level of indentation and need to add a softline to align the closing )
+ // with the opening (, or if it's inside a JSXExpression (e.g. an attribute)
+ // we should align the expression's closing } with the line with the opening {.
+
+
+ var shouldAddSoftLine = (args && args.expandLastArg || path.getParentNode().type === "JSXExpressionContainer") && !(n.comments && n.comments.length);
+ var printTrailingComma = args && args.expandLastArg && shouldPrintComma(options, "all"); // In order to avoid confusion between
+ // a => a ? a : a
+ // a <= a ? a : a
+
+ var shouldAddParens = n.body.type === "ConditionalExpression" && !startsWithNoLookaheadToken$1(n.body,
+ /* forbidFunctionAndClass */
+ false);
+ return group$2(concat$6([concat$6(parts), group$2(concat$6([indent$3(concat$6([line$2, shouldAddParens ? ifBreak$1("", "(") : "", body, shouldAddParens ? ifBreak$1("", ")") : ""])), shouldAddSoftLine ? concat$6([ifBreak$1(printTrailingComma ? "," : ""), softline$2]) : ""]))]));
+ }
+
+ case "YieldExpression":
+ parts.push("yield");
+
+ if (n.delegate) {
+ parts.push("*");
+ }
+
+ if (n.argument) {
+ parts.push(" ", path.call(print, "argument"));
+ }
+
+ return concat$6(parts);
+
+ case "AwaitExpression":
+ {
+ parts.push("await ", path.call(print, "argument"));
+
+ var _parent3 = path.getParentNode();
+
+ if ((_parent3.type === "CallExpression" || _parent3.type === "OptionalCallExpression") && _parent3.callee === n || (_parent3.type === "MemberExpression" || _parent3.type === "OptionalMemberExpression") && _parent3.object === n) {
+ return group$2(concat$6([indent$3(concat$6([softline$2, concat$6(parts)])), softline$2]));
+ }
+
+ return concat$6(parts);
+ }
+
+ case "ImportSpecifier":
+ if (n.importKind) {
+ parts.push(path.call(print, "importKind"), " ");
+ }
+
+ parts.push(path.call(print, "imported"));
+
+ if (n.local && n.local.name !== n.imported.name) {
+ parts.push(" as ", path.call(print, "local"));
+ }
+
+ return concat$6(parts);
+
+ case "ExportSpecifier":
+ parts.push(path.call(print, "local"));
+
+ if (n.exported && n.exported.name !== n.local.name) {
+ parts.push(" as ", path.call(print, "exported"));
+ }
+
+ return concat$6(parts);
+
+ case "ImportNamespaceSpecifier":
+ parts.push("* as ");
+ parts.push(path.call(print, "local"));
+ return concat$6(parts);
+
+ case "ImportDefaultSpecifier":
+ return path.call(print, "local");
+
+ case "TSExportAssignment":
+ return concat$6(["export = ", path.call(print, "expression"), semi]);
+
+ case "ExportDefaultDeclaration":
+ case "ExportNamedDeclaration":
+ return printExportDeclaration(path, options, print);
+
+ case "ExportAllDeclaration":
+ parts.push("export ");
+
+ if (n.exportKind === "type") {
+ parts.push("type ");
+ }
+
+ parts.push("* from ", path.call(print, "source"), semi);
+ return concat$6(parts);
+
+ case "ExportNamespaceSpecifier":
+ case "ExportDefaultSpecifier":
+ return path.call(print, "exported");
+
+ case "ImportDeclaration":
+ {
+ parts.push("import ");
+
+ if (n.importKind && n.importKind !== "value") {
+ parts.push(n.importKind + " ");
+ }
+
+ var standalones = [];
+ var grouped = [];
+
+ if (n.specifiers && n.specifiers.length > 0) {
+ path.each(function (specifierPath) {
+ var value = specifierPath.getValue();
+
+ if (value.type === "ImportDefaultSpecifier" || value.type === "ImportNamespaceSpecifier") {
+ standalones.push(print(specifierPath));
+ } else {
+ grouped.push(print(specifierPath));
+ }
+ }, "specifiers");
+
+ if (standalones.length > 0) {
+ parts.push(join$4(", ", standalones));
+ }
+
+ if (standalones.length > 0 && grouped.length > 0) {
+ parts.push(", ");
+ }
+
+ if (grouped.length === 1 && standalones.length === 0 && n.specifiers && !n.specifiers.some(function (node) {
+ return node.comments;
+ })) {
+ parts.push(concat$6(["{", options.bracketSpacing ? " " : "", concat$6(grouped), options.bracketSpacing ? " " : "", "}"]));
+ } else if (grouped.length >= 1) {
+ parts.push(group$2(concat$6(["{", indent$3(concat$6([options.bracketSpacing ? line$2 : softline$2, join$4(concat$6([",", line$2]), grouped)])), ifBreak$1(shouldPrintComma(options) ? "," : ""), options.bracketSpacing ? line$2 : softline$2, "}"])));
+ }
+
+ parts.push(" from ");
+ } else if (n.importKind && n.importKind === "type" || // import {} from 'x'
+ /{\s*}/.test(options.originalText.slice(options.locStart(n), options.locStart(n.source)))) {
+ parts.push("{} from ");
+ }
+
+ parts.push(path.call(print, "source"), semi);
+ return concat$6(parts);
+ }
+
+ case "Import":
+ return "import";
+
+ case "TSModuleBlock":
+ case "BlockStatement":
+ {
+ var naked = path.call(function (bodyPath) {
+ return printStatementSequence(bodyPath, options, print);
+ }, "body");
+ var hasContent = n.body.find(function (node) {
+ return node.type !== "EmptyStatement";
+ });
+ var hasDirectives = n.directives && n.directives.length > 0;
+
+ var _parent4 = path.getParentNode();
+
+ var _parentParent = path.getParentNode(1);
+
+ if (!hasContent && !hasDirectives && !hasDanglingComments$1(n) && (_parent4.type === "ArrowFunctionExpression" || _parent4.type === "FunctionExpression" || _parent4.type === "FunctionDeclaration" || _parent4.type === "ObjectMethod" || _parent4.type === "ClassMethod" || _parent4.type === "ClassPrivateMethod" || _parent4.type === "ForStatement" || _parent4.type === "WhileStatement" || _parent4.type === "DoWhileStatement" || _parent4.type === "DoExpression" || _parent4.type === "CatchClause" && !_parentParent.finalizer || _parent4.type === "TSModuleDeclaration")) {
+ return "{}";
+ }
+
+ parts.push("{"); // Babel 6
+
+ if (hasDirectives) {
+ path.each(function (childPath) {
+ parts.push(indent$3(concat$6([hardline$4, print(childPath), semi])));
+
+ if (isNextLineEmpty$2(options.originalText, childPath.getValue(), options)) {
+ parts.push(hardline$4);
+ }
+ }, "directives");
+ }
+
+ if (hasContent) {
+ parts.push(indent$3(concat$6([hardline$4, naked])));
+ }
+
+ parts.push(comments.printDanglingComments(path, options));
+ parts.push(hardline$4, "}");
+ return concat$6(parts);
+ }
+
+ case "ReturnStatement":
+ parts.push("return");
+
+ if (n.argument) {
+ if (returnArgumentHasLeadingComment$1(options, n.argument)) {
+ parts.push(concat$6([" (", indent$3(concat$6([hardline$4, path.call(print, "argument")])), hardline$4, ")"]));
+ } else if (n.argument.type === "LogicalExpression" || n.argument.type === "BinaryExpression" || n.argument.type === "SequenceExpression") {
+ parts.push(group$2(concat$6([ifBreak$1(" (", " "), indent$3(concat$6([softline$2, path.call(print, "argument")])), softline$2, ifBreak$1(")")])));
+ } else {
+ parts.push(" ", path.call(print, "argument"));
+ }
+ }
+
+ if (hasDanglingComments$1(n)) {
+ parts.push(" ", comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true));
+ }
+
+ parts.push(semi);
+ return concat$6(parts);
+
+ case "NewExpression":
+ case "OptionalCallExpression":
+ case "CallExpression":
+ {
+ var isNew = n.type === "NewExpression";
+ var optional = printOptionalToken(path);
+
+ if ( // We want to keep CommonJS- and AMD-style require calls, and AMD-style
+ // define calls, as a unit.
+ // e.g. `define(["some/lib", (lib) => {`
+ !isNew && n.callee.type === "Identifier" && (n.callee.name === "require" || n.callee.name === "define") || // Template literals as single arguments
+ n.arguments.length === 1 && isTemplateOnItsOwnLine$1(n.arguments[0], options.originalText, options) || // Keep test declarations on a single line
+ // e.g. `it('long name', () => {`
+ !isNew && isTestCall$1(n, path.getParentNode())) {
+ return concat$6([isNew ? "new " : "", path.call(print, "callee"), optional, printFunctionTypeParameters(path, options, print), concat$6(["(", join$4(", ", path.map(print, "arguments")), ")"])]);
+ } // Inline Flow annotation comments following Identifiers in Call nodes need to
+ // stay with the Identifier. For example:
+ //
+ // foo /*:: <SomeGeneric> */(bar);
+ //
+ // Here, we ensure that such comments stay between the Identifier and the Callee.
+
+
+ var isIdentifierWithFlowAnnotation = n.callee.type === "Identifier" && hasFlowAnnotationComment$1(n.callee.trailingComments);
+
+ if (isIdentifierWithFlowAnnotation) {
+ n.callee.trailingComments[0].printed = true;
+ } // We detect calls on member lookups and possibly print them in a
+ // special chain format. See `printMemberChain` for more info.
+
+
+ if (!isNew && isMemberish$1(n.callee)) {
+ return printMemberChain(path, options, print);
+ }
+
+ var contents = concat$6([isNew ? "new " : "", path.call(print, "callee"), optional, isIdentifierWithFlowAnnotation ? `/*:: ${n.callee.trailingComments[0].value.substring(2).trim()} */` : "", printFunctionTypeParameters(path, options, print), printArgumentsList(path, options, print)]); // We group here when the callee is itself a call expression.
+ // See `isLongCurriedCallExpression` for more info.
+
+ if (isCallOrOptionalCallExpression$1(n.callee)) {
+ return group$2(contents);
+ }
+
+ return contents;
+ }
+
+ case "TSInterfaceDeclaration":
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ parts.push(n.abstract ? "abstract " : "", printTypeScriptModifiers(path, options, print), "interface ", path.call(print, "id"), n.typeParameters ? path.call(print, "typeParameters") : "", " ");
+
+ if (n.extends && n.extends.length) {
+ parts.push(group$2(indent$3(concat$6([softline$2, "extends ", (n.extends.length === 1 ? identity$1 : indent$3)(join$4(concat$6([",", line$2]), path.map(print, "extends"))), " "]))));
+ }
+
+ parts.push(path.call(print, "body"));
+ return concat$6(parts);
+
+ case "ObjectTypeInternalSlot":
+ return concat$6([n.static ? "static " : "", "[[", path.call(print, "id"), "]]", printOptionalToken(path), n.method ? "" : ": ", path.call(print, "value")]);
+
+ case "ObjectExpression":
+ case "ObjectPattern":
+ case "ObjectTypeAnnotation":
+ case "TSInterfaceBody":
+ case "TSTypeLiteral":
+ {
+ var propertiesField;
+
+ if (n.type === "TSTypeLiteral") {
+ propertiesField = "members";
+ } else if (n.type === "TSInterfaceBody") {
+ propertiesField = "body";
+ } else {
+ propertiesField = "properties";
+ }
+
+ var isTypeAnnotation = n.type === "ObjectTypeAnnotation";
+ var fields = [];
+
+ if (isTypeAnnotation) {
+ fields.push("indexers", "callProperties", "internalSlots");
+ }
+
+ fields.push(propertiesField);
+ var firstProperty = fields.map(function (field) {
+ return n[field][0];
+ }).sort(function (a, b) {
+ return options.locStart(a) - options.locStart(b);
+ })[0];
+
+ var _parent5 = path.getParentNode(0);
+
+ var isFlowInterfaceLikeBody = isTypeAnnotation && _parent5 && (_parent5.type === "InterfaceDeclaration" || _parent5.type === "DeclareInterface" || _parent5.type === "DeclareClass") && path.getName() === "body";
+ var shouldBreak = n.type === "TSInterfaceBody" || isFlowInterfaceLikeBody || n.type === "ObjectPattern" && _parent5.type !== "FunctionDeclaration" && _parent5.type !== "FunctionExpression" && _parent5.type !== "ArrowFunctionExpression" && _parent5.type !== "ObjectMethod" && _parent5.type !== "ClassMethod" && _parent5.type !== "ClassPrivateMethod" && _parent5.type !== "AssignmentPattern" && _parent5.type !== "CatchClause" && n.properties.some(function (property) {
+ return property.value && (property.value.type === "ObjectPattern" || property.value.type === "ArrayPattern");
+ }) || n.type !== "ObjectPattern" && firstProperty && hasNewlineInRange$2(options.originalText, options.locStart(n), options.locStart(firstProperty));
+ var separator = isFlowInterfaceLikeBody ? ";" : n.type === "TSInterfaceBody" || n.type === "TSTypeLiteral" ? ifBreak$1(semi, ";") : ",";
+ var leftBrace = n.exact ? "{|" : "{";
+ var rightBrace = n.exact ? "|}" : "}"; // Unfortunately, things are grouped together in the ast can be
+ // interleaved in the source code. So we need to reorder them before
+ // printing them.
+
+ var propsAndLoc = [];
+ fields.forEach(function (field) {
+ path.each(function (childPath) {
+ var node = childPath.getValue();
+ propsAndLoc.push({
+ node: node,
+ printed: print(childPath),
+ loc: options.locStart(node)
+ });
+ }, field);
+ });
+ var separatorParts = [];
+ var props = propsAndLoc.sort(function (a, b) {
+ return a.loc - b.loc;
+ }).map(function (prop) {
+ var result = concat$6(separatorParts.concat(group$2(prop.printed)));
+ separatorParts = [separator, line$2];
+
+ if ((prop.node.type === "TSPropertySignature" || prop.node.type === "TSMethodSignature" || prop.node.type === "TSConstructSignatureDeclaration") && hasNodeIgnoreComment$2(prop.node)) {
+ separatorParts.shift();
+ }
+
+ if (isNextLineEmpty$2(options.originalText, prop.node, options)) {
+ separatorParts.push(hardline$4);
+ }
+
+ return result;
+ });
+
+ if (n.inexact) {
+ props.push(concat$6(separatorParts.concat(group$2("..."))));
+ }
+
+ var lastElem = getLast$2(n[propertiesField]);
+ var canHaveTrailingSeparator = !(lastElem && (lastElem.type === "RestProperty" || lastElem.type === "RestElement" || hasNodeIgnoreComment$2(lastElem) || n.inexact));
+ var content;
+
+ if (props.length === 0) {
+ if (!hasDanglingComments$1(n)) {
+ return concat$6([leftBrace, rightBrace, printTypeAnnotation(path, options, print)]);
+ }
+
+ content = group$2(concat$6([leftBrace, comments.printDanglingComments(path, options), softline$2, rightBrace, printOptionalToken(path), printTypeAnnotation(path, options, print)]));
+ } else {
+ content = concat$6([leftBrace, indent$3(concat$6([options.bracketSpacing ? line$2 : softline$2, concat$6(props)])), ifBreak$1(canHaveTrailingSeparator && (separator !== "," || shouldPrintComma(options)) ? separator : ""), concat$6([options.bracketSpacing ? line$2 : softline$2, rightBrace]), printOptionalToken(path), printTypeAnnotation(path, options, print)]);
+ } // If we inline the object as first argument of the parent, we don't want
+ // to create another group so that the object breaks before the return
+ // type
+
+
+ var parentParentParent = path.getParentNode(2);
+
+ if (n.type === "ObjectPattern" && _parent5 && shouldHugArguments(_parent5) && !n.decorators && _parent5.params[0] === n || shouldHugType(n) && parentParentParent && shouldHugArguments(parentParentParent) && parentParentParent.params[0].typeAnnotation && parentParentParent.params[0].typeAnnotation.typeAnnotation === n) {
+ return content;
+ }
+
+ return group$2(content, {
+ shouldBreak
+ });
+ }
+ // Babel 6
+
+ case "ObjectProperty": // Non-standard AST node type.
+
+ case "Property":
+ if (n.method || n.kind === "get" || n.kind === "set") {
+ return printMethod(path, options, print);
+ }
+
+ if (n.shorthand) {
+ parts.push(path.call(print, "value"));
+ } else {
+ parts.push(printAssignment(n.key, printPropertyKey(path, options, print), ":", n.value, path.call(print, "value"), options));
+ }
+
+ return concat$6(parts);
+ // Babel 6
+
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ case "MethodDefinition":
+ case "TSAbstractMethodDefinition":
+ if (n.decorators && n.decorators.length !== 0) {
+ parts.push(printDecorators(path, options, print));
+ }
+
+ if (n.accessibility) {
+ parts.push(n.accessibility + " ");
+ }
+
+ if (n.static) {
+ parts.push("static ");
+ }
+
+ if (n.type === "TSAbstractMethodDefinition") {
+ parts.push("abstract ");
+ }
+
+ parts.push(printMethod(path, options, print));
+ return concat$6(parts);
+
+ case "ObjectMethod":
+ return printMethod(path, options, print);
+
+ case "Decorator":
+ return concat$6(["@", path.call(print, "expression"), path.call(print, "callee")]);
+
+ case "ArrayExpression":
+ case "ArrayPattern":
+ if (n.elements.length === 0) {
+ if (!hasDanglingComments$1(n)) {
+ parts.push("[]");
+ } else {
+ parts.push(group$2(concat$6(["[", comments.printDanglingComments(path, options), softline$2, "]"])));
+ }
+ } else {
+ var _lastElem = getLast$2(n.elements);
+
+ var canHaveTrailingComma = !(_lastElem && _lastElem.type === "RestElement"); // JavaScript allows you to have empty elements in an array which
+ // changes its length based on the number of commas. The algorithm
+ // is that if the last argument is null, we need to force insert
+ // a comma to ensure JavaScript recognizes it.
+ // [,].length === 1
+ // [1,].length === 1
+ // [1,,].length === 2
+ //
+ // Note that getLast returns null if the array is empty, but
+ // we already check for an empty array just above so we are safe
+
+ var needsForcedTrailingComma = canHaveTrailingComma && _lastElem === null;
+
+ var _shouldBreak = n.elements.length > 1 && n.elements.every(function (element, i, elements) {
+ var elementType = element && element.type;
+
+ if (elementType !== "ArrayExpression" && elementType !== "ObjectExpression") {
+ return false;
+ }
+
+ var nextElement = elements[i + 1];
+
+ if (nextElement && elementType !== nextElement.type) {
+ return false;
+ }
+
+ var itemsKey = elementType === "ArrayExpression" ? "elements" : "properties";
+ return element[itemsKey] && element[itemsKey].length > 1;
+ });
+
+ parts.push(group$2(concat$6(["[", indent$3(concat$6([softline$2, printArrayItems(path, options, "elements", print)])), needsForcedTrailingComma ? "," : "", ifBreak$1(canHaveTrailingComma && !needsForcedTrailingComma && shouldPrintComma(options) ? "," : ""), comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), softline$2, "]"]), {
+ shouldBreak: _shouldBreak
+ }));
+ }
+
+ parts.push(printOptionalToken(path), printTypeAnnotation(path, options, print));
+ return concat$6(parts);
+
+ case "SequenceExpression":
+ {
+ var _parent6 = path.getParentNode(0);
+
+ if (_parent6.type === "ExpressionStatement" || _parent6.type === "ForStatement") {
+ // For ExpressionStatements and for-loop heads, which are among
+ // the few places a SequenceExpression appears unparenthesized, we want
+ // to indent expressions after the first.
+ var _parts2 = [];
+ path.each(function (p) {
+ if (p.getName() === 0) {
+ _parts2.push(print(p));
+ } else {
+ _parts2.push(",", indent$3(concat$6([line$2, print(p)])));
+ }
+ }, "expressions");
+ return group$2(concat$6(_parts2));
+ }
+
+ return group$2(concat$6([join$4(concat$6([",", line$2]), path.map(print, "expressions"))]));
+ }
+
+ case "ThisExpression":
+ return "this";
+
+ case "Super":
+ return "super";
+
+ case "NullLiteral":
+ // Babel 6 Literal split
+ return "null";
+
+ case "RegExpLiteral":
+ // Babel 6 Literal split
+ return printRegex(n);
+
+ case "NumericLiteral":
+ // Babel 6 Literal split
+ return printNumber$1(n.extra.raw);
+
+ case "BigIntLiteral":
+ // babel: n.extra.raw, typescript: n.raw, flow: n.bigint
+ return (n.bigint || (n.extra ? n.extra.raw : n.raw)).toLowerCase();
+
+ case "BooleanLiteral": // Babel 6 Literal split
+
+ case "StringLiteral": // Babel 6 Literal split
+
+ case "Literal":
+ {
+ if (n.regex) {
+ return printRegex(n.regex);
+ }
+
+ if (typeof n.value === "number") {
+ return printNumber$1(n.raw);
+ }
+
+ if (typeof n.value !== "string") {
+ return "" + n.value;
+ } // TypeScript workaround for https://github.com/JamesHenry/typescript-estree/issues/2
+ // See corresponding workaround in needs-parens.js
+
+
+ var grandParent = path.getParentNode(1);
+ var isTypeScriptDirective = options.parser === "typescript" && typeof n.value === "string" && grandParent && (grandParent.type === "Program" || grandParent.type === "BlockStatement");
+ return nodeStr(n, options, isTypeScriptDirective);
+ }
+
+ case "Directive":
+ return path.call(print, "value");
+ // Babel 6
+
+ case "DirectiveLiteral":
+ return nodeStr(n, options);
+
+ case "UnaryExpression":
+ parts.push(n.operator);
+
+ if (/[a-z]$/.test(n.operator)) {
+ parts.push(" ");
+ }
+
+ if (n.argument.comments && n.argument.comments.length > 0) {
+ parts.push(group$2(concat$6(["(", indent$3(concat$6([softline$2, path.call(print, "argument")])), softline$2, ")"])));
+ } else {
+ parts.push(path.call(print, "argument"));
+ }
+
+ return concat$6(parts);
+
+ case "UpdateExpression":
+ parts.push(path.call(print, "argument"), n.operator);
+
+ if (n.prefix) {
+ parts.reverse();
+ }
+
+ return concat$6(parts);
+
+ case "ConditionalExpression":
+ return printTernaryOperator(path, options, print, {
+ beforeParts: function beforeParts() {
+ return [path.call(print, "test")];
+ },
+ afterParts: function afterParts(breakClosingParen) {
+ return [breakClosingParen ? softline$2 : ""];
+ },
+ shouldCheckJsx: true,
+ conditionalNodeType: "ConditionalExpression",
+ consequentNodePropertyName: "consequent",
+ alternateNodePropertyName: "alternate",
+ testNodePropertyName: "test",
+ breakNested: true
+ });
+
+ case "VariableDeclaration":
+ {
+ var printed = path.map(function (childPath) {
+ return print(childPath);
+ }, "declarations"); // We generally want to terminate all variable declarations with a
+ // semicolon, except when they in the () part of for loops.
+
+ var parentNode = path.getParentNode();
+ var isParentForLoop = parentNode.type === "ForStatement" || parentNode.type === "ForInStatement" || parentNode.type === "ForOfStatement" || parentNode.type === "ForAwaitStatement";
+ var hasValue = n.declarations.some(function (decl) {
+ return decl.init;
+ });
+ var firstVariable;
+
+ if (printed.length === 1 && !n.declarations[0].comments) {
+ firstVariable = printed[0];
+ } else if (printed.length > 0) {
+ // Indent first var to comply with eslint one-var rule
+ firstVariable = indent$3(printed[0]);
+ }
+
+ parts = [n.declare ? "declare " : "", n.kind, firstVariable ? concat$6([" ", firstVariable]) : "", indent$3(concat$6(printed.slice(1).map(function (p) {
+ return concat$6([",", hasValue && !isParentForLoop ? hardline$4 : line$2, p]);
+ })))];
+
+ if (!(isParentForLoop && parentNode.body !== n)) {
+ parts.push(semi);
+ }
+
+ return group$2(concat$6(parts));
+ }
+
+ case "TSTypeAliasDeclaration":
+ {
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ var _printed = printAssignmentRight(n.id, n.typeAnnotation, n.typeAnnotation && path.call(print, "typeAnnotation"), options);
+
+ parts.push("type ", path.call(print, "id"), path.call(print, "typeParameters"), " =", _printed, semi);
+ return group$2(concat$6(parts));
+ }
+
+ case "VariableDeclarator":
+ return printAssignment(n.id, path.call(print, "id"), " =", n.init, n.init && path.call(print, "init"), options);
+
+ case "WithStatement":
+ return group$2(concat$6(["with (", path.call(print, "object"), ")", adjustClause(n.body, path.call(print, "body"))]));
+
+ case "IfStatement":
+ {
+ var con = adjustClause(n.consequent, path.call(print, "consequent"));
+ var opening = group$2(concat$6(["if (", group$2(concat$6([indent$3(concat$6([softline$2, path.call(print, "test")])), softline$2])), ")", con]));
+ parts.push(opening);
+
+ if (n.alternate) {
+ var commentOnOwnLine = hasTrailingComment$1(n.consequent) && n.consequent.comments.some(function (comment) {
+ return comment.trailing && !comments$1.isBlockComment(comment);
+ }) || needsHardlineAfterDanglingComment$1(n);
+ var elseOnSameLine = n.consequent.type === "BlockStatement" && !commentOnOwnLine;
+ parts.push(elseOnSameLine ? " " : hardline$4);
+
+ if (hasDanglingComments$1(n)) {
+ parts.push(comments.printDanglingComments(path, options, true), commentOnOwnLine ? hardline$4 : " ");
+ }
+
+ parts.push("else", group$2(adjustClause(n.alternate, path.call(print, "alternate"), n.alternate.type === "IfStatement")));
+ }
+
+ return concat$6(parts);
+ }
+
+ case "ForStatement":
+ {
+ var _body = adjustClause(n.body, path.call(print, "body")); // We want to keep dangling comments above the loop to stay consistent.
+ // Any comment positioned between the for statement and the parentheses
+ // is going to be printed before the statement.
+
+
+ var _dangling = comments.printDanglingComments(path, options,
+ /* sameLine */
+ true);
+
+ var printedComments = _dangling ? concat$6([_dangling, softline$2]) : "";
+
+ if (!n.init && !n.test && !n.update) {
+ return concat$6([printedComments, group$2(concat$6(["for (;;)", _body]))]);
+ }
+
+ return concat$6([printedComments, group$2(concat$6(["for (", group$2(concat$6([indent$3(concat$6([softline$2, path.call(print, "init"), ";", line$2, path.call(print, "test"), ";", line$2, path.call(print, "update")])), softline$2])), ")", _body]))]);
+ }
+
+ case "WhileStatement":
+ return group$2(concat$6(["while (", group$2(concat$6([indent$3(concat$6([softline$2, path.call(print, "test")])), softline$2])), ")", adjustClause(n.body, path.call(print, "body"))]));
+
+ case "ForInStatement":
+ // Note: esprima can't actually parse "for each (".
+ return group$2(concat$6([n.each ? "for each (" : "for (", path.call(print, "left"), " in ", path.call(print, "right"), ")", adjustClause(n.body, path.call(print, "body"))]));
+
+ case "ForOfStatement":
+ case "ForAwaitStatement":
+ {
+ // Babel 7 removed ForAwaitStatement in favor of ForOfStatement
+ // with `"await": true`:
+ // https://github.com/estree/estree/pull/138
+ var isAwait = n.type === "ForAwaitStatement" || n.await;
+ return group$2(concat$6(["for", isAwait ? " await" : "", " (", path.call(print, "left"), " of ", path.call(print, "right"), ")", adjustClause(n.body, path.call(print, "body"))]));
+ }
+
+ case "DoWhileStatement":
+ {
+ var clause = adjustClause(n.body, path.call(print, "body"));
+ var doBody = group$2(concat$6(["do", clause]));
+ parts = [doBody];
+
+ if (n.body.type === "BlockStatement") {
+ parts.push(" ");
+ } else {
+ parts.push(hardline$4);
+ }
+
+ parts.push("while (");
+ parts.push(group$2(concat$6([indent$3(concat$6([softline$2, path.call(print, "test")])), softline$2])), ")", semi);
+ return concat$6(parts);
+ }
+
+ case "DoExpression":
+ return concat$6(["do ", path.call(print, "body")]);
+
+ case "BreakStatement":
+ parts.push("break");
+
+ if (n.label) {
+ parts.push(" ", path.call(print, "label"));
+ }
+
+ parts.push(semi);
+ return concat$6(parts);
+
+ case "ContinueStatement":
+ parts.push("continue");
+
+ if (n.label) {
+ parts.push(" ", path.call(print, "label"));
+ }
+
+ parts.push(semi);
+ return concat$6(parts);
+
+ case "LabeledStatement":
+ if (n.body.type === "EmptyStatement") {
+ return concat$6([path.call(print, "label"), ":;"]);
+ }
+
+ return concat$6([path.call(print, "label"), ": ", path.call(print, "body")]);
+
+ case "TryStatement":
+ return concat$6(["try ", path.call(print, "block"), n.handler ? concat$6([" ", path.call(print, "handler")]) : "", n.finalizer ? concat$6([" finally ", path.call(print, "finalizer")]) : ""]);
+
+ case "CatchClause":
+ if (n.param) {
+ var hasComments = n.param.comments && n.param.comments.some(function (comment) {
+ return !comments$1.isBlockComment(comment) || comment.leading && hasNewline$3(options.originalText, options.locEnd(comment)) || comment.trailing && hasNewline$3(options.originalText, options.locStart(comment), {
+ backwards: true
+ });
+ });
+ var param = path.call(print, "param");
+ return concat$6(["catch ", hasComments ? concat$6(["(", indent$3(concat$6([softline$2, param])), softline$2, ") "]) : concat$6(["(", param, ") "]), path.call(print, "body")]);
+ }
+
+ return concat$6(["catch ", path.call(print, "body")]);
+
+ case "ThrowStatement":
+ return concat$6(["throw ", path.call(print, "argument"), semi]);
+ // Note: ignoring n.lexical because it has no printing consequences.
+
+ case "SwitchStatement":
+ return concat$6([group$2(concat$6(["switch (", indent$3(concat$6([softline$2, path.call(print, "discriminant")])), softline$2, ")"])), " {", n.cases.length > 0 ? indent$3(concat$6([hardline$4, join$4(hardline$4, path.map(function (casePath) {
+ var caseNode = casePath.getValue();
+ return concat$6([casePath.call(print), n.cases.indexOf(caseNode) !== n.cases.length - 1 && isNextLineEmpty$2(options.originalText, caseNode, options) ? hardline$4 : ""]);
+ }, "cases"))])) : "", hardline$4, "}"]);
+
+ case "SwitchCase":
+ {
+ if (n.test) {
+ parts.push("case ", path.call(print, "test"), ":");
+ } else {
+ parts.push("default:");
+ }
+
+ var consequent = n.consequent.filter(function (node) {
+ return node.type !== "EmptyStatement";
+ });
+
+ if (consequent.length > 0) {
+ var cons = path.call(function (consequentPath) {
+ return printStatementSequence(consequentPath, options, print);
+ }, "consequent");
+ parts.push(consequent.length === 1 && consequent[0].type === "BlockStatement" ? concat$6([" ", cons]) : indent$3(concat$6([hardline$4, cons])));
+ }
+
+ return concat$6(parts);
+ }
+ // JSX extensions below.
+
+ case "DebuggerStatement":
+ return concat$6(["debugger", semi]);
+
+ case "JSXAttribute":
+ parts.push(path.call(print, "name"));
+
+ if (n.value) {
+ var res;
+
+ if (isStringLiteral$1(n.value)) {
+ var raw = rawText$1(n.value); // Unescape all quotes so we get an accurate preferred quote
+
+ var final = raw.replace(/&apos;/g, "'").replace(/&quot;/g, '"');
+ var quote = getPreferredQuote$1(final, options.jsxSingleQuote ? "'" : '"');
+
+ var _escape = quote === "'" ? "&apos;" : "&quot;";
+
+ final = final.slice(1, -1).replace(new RegExp(quote, "g"), _escape);
+ res = concat$6([quote, final, quote]);
+ } else {
+ res = path.call(print, "value");
+ }
+
+ parts.push("=", res);
+ }
+
+ return concat$6(parts);
+
+ case "JSXIdentifier":
+ return "" + n.name;
+
+ case "JSXNamespacedName":
+ return join$4(":", [path.call(print, "namespace"), path.call(print, "name")]);
+
+ case "JSXMemberExpression":
+ return join$4(".", [path.call(print, "object"), path.call(print, "property")]);
+
+ case "TSQualifiedName":
+ return join$4(".", [path.call(print, "left"), path.call(print, "right")]);
+
+ case "JSXSpreadAttribute":
+ case "JSXSpreadChild":
+ {
+ return concat$6(["{", path.call(function (p) {
+ var printed = concat$6(["...", print(p)]);
+ var n = p.getValue();
+
+ if (!n.comments || !n.comments.length) {
+ return printed;
+ }
+
+ return concat$6([indent$3(concat$6([softline$2, comments.printComments(p, function () {
+ return printed;
+ }, options)])), softline$2]);
+ }, n.type === "JSXSpreadAttribute" ? "argument" : "expression"), "}"]);
+ }
+
+ case "JSXExpressionContainer":
+ {
+ var _parent7 = path.getParentNode(0);
+
+ var preventInline = _parent7.type === "JSXAttribute" && n.expression.comments && n.expression.comments.length > 0;
+
+ var _shouldInline = !preventInline && (n.expression.type === "ArrayExpression" || n.expression.type === "ObjectExpression" || n.expression.type === "ArrowFunctionExpression" || n.expression.type === "CallExpression" || n.expression.type === "OptionalCallExpression" || n.expression.type === "FunctionExpression" || n.expression.type === "JSXEmptyExpression" || n.expression.type === "TemplateLiteral" || n.expression.type === "TaggedTemplateExpression" || n.expression.type === "DoExpression" || isJSXNode$1(_parent7) && (n.expression.type === "ConditionalExpression" || isBinaryish$1(n.expression)));
+
+ if (_shouldInline) {
+ return group$2(concat$6(["{", path.call(print, "expression"), lineSuffixBoundary$1, "}"]));
+ }
+
+ return group$2(concat$6(["{", indent$3(concat$6([softline$2, path.call(print, "expression")])), softline$2, lineSuffixBoundary$1, "}"]));
+ }
+
+ case "JSXFragment":
+ case "JSXElement":
+ {
+ var elem = comments.printComments(path, function () {
+ return printJSXElement(path, options, print);
+ }, options);
+ return maybeWrapJSXElementInParens(path, elem, options);
+ }
+
+ case "JSXOpeningElement":
+ {
+ var _n = path.getValue();
+
+ var nameHasComments = _n.name && _n.name.comments && _n.name.comments.length > 0 || _n.typeParameters && _n.typeParameters.comments && _n.typeParameters.comments.length > 0; // Don't break self-closing elements with no attributes and no comments
+
+ if (_n.selfClosing && !_n.attributes.length && !nameHasComments) {
+ return concat$6(["<", path.call(print, "name"), path.call(print, "typeParameters"), " />"]);
+ } // don't break up opening elements with a single long text attribute
+
+
+ if (_n.attributes && _n.attributes.length === 1 && _n.attributes[0].value && isStringLiteral$1(_n.attributes[0].value) && !_n.attributes[0].value.value.includes("\n") && // We should break for the following cases:
+ // <div
+ // // comment
+ // attr="value"
+ // >
+ // <div
+ // attr="value"
+ // // comment
+ // >
+ !nameHasComments && (!_n.attributes[0].comments || !_n.attributes[0].comments.length)) {
+ return group$2(concat$6(["<", path.call(print, "name"), path.call(print, "typeParameters"), " ", concat$6(path.map(print, "attributes")), _n.selfClosing ? " />" : ">"]));
+ }
+
+ var lastAttrHasTrailingComments = _n.attributes.length && hasTrailingComment$1(getLast$2(_n.attributes));
+ var bracketSameLine = // Simple tags (no attributes and no comment in tag name) should be
+ // kept unbroken regardless of `jsxBracketSameLine`
+ !_n.attributes.length && !nameHasComments || options.jsxBracketSameLine && ( // We should print the bracket in a new line for the following cases:
+ // <div
+ // // comment
+ // >
+ // <div
+ // attr // comment
+ // >
+ !nameHasComments || _n.attributes.length) && !lastAttrHasTrailingComments; // We should print the opening element expanded if any prop value is a
+ // string literal with newlines
+
+ var _shouldBreak2 = _n.attributes && _n.attributes.some(function (attr) {
+ return attr.value && isStringLiteral$1(attr.value) && attr.value.value.includes("\n");
+ });
+
+ return group$2(concat$6(["<", path.call(print, "name"), path.call(print, "typeParameters"), concat$6([indent$3(concat$6(path.map(function (attr) {
+ return concat$6([line$2, print(attr)]);
+ }, "attributes"))), _n.selfClosing ? line$2 : bracketSameLine ? ">" : softline$2]), _n.selfClosing ? "/>" : bracketSameLine ? "" : ">"]), {
+ shouldBreak: _shouldBreak2
+ });
+ }
+
+ case "JSXClosingElement":
+ return concat$6(["</", path.call(print, "name"), ">"]);
+
+ case "JSXOpeningFragment":
+ case "JSXClosingFragment":
+ {
+ var hasComment = n.comments && n.comments.length;
+ var hasOwnLineComment = hasComment && !n.comments.every(comments$1.isBlockComment);
+ var isOpeningFragment = n.type === "JSXOpeningFragment";
+ return concat$6([isOpeningFragment ? "<" : "</", indent$3(concat$6([hasOwnLineComment ? hardline$4 : hasComment && !isOpeningFragment ? " " : "", comments.printDanglingComments(path, options, true)])), hasOwnLineComment ? hardline$4 : "", ">"]);
+ }
+
+ case "JSXText":
+ /* istanbul ignore next */
+ throw new Error("JSXTest should be handled by JSXElement");
+
+ case "JSXEmptyExpression":
+ {
+ var requiresHardline = n.comments && !n.comments.every(comments$1.isBlockComment);
+ return concat$6([comments.printDanglingComments(path, options,
+ /* sameIndent */
+ !requiresHardline), requiresHardline ? hardline$4 : ""]);
+ }
+
+ case "ClassBody":
+ if (!n.comments && n.body.length === 0) {
+ return "{}";
+ }
+
+ return concat$6(["{", n.body.length > 0 ? indent$3(concat$6([hardline$4, path.call(function (bodyPath) {
+ return printStatementSequence(bodyPath, options, print);
+ }, "body")])) : comments.printDanglingComments(path, options), hardline$4, "}"]);
+
+ case "ClassProperty":
+ case "TSAbstractClassProperty":
+ case "ClassPrivateProperty":
+ {
+ if (n.decorators && n.decorators.length !== 0) {
+ parts.push(printDecorators(path, options, print));
+ }
+
+ if (n.accessibility) {
+ parts.push(n.accessibility + " ");
+ }
+
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ if (n.static) {
+ parts.push("static ");
+ }
+
+ if (n.type === "TSAbstractClassProperty") {
+ parts.push("abstract ");
+ }
+
+ if (n.readonly) {
+ parts.push("readonly ");
+ }
+
+ var variance = getFlowVariance$1(n);
+
+ if (variance) {
+ parts.push(variance);
+ }
+
+ parts.push(printPropertyKey(path, options, print), printOptionalToken(path), printTypeAnnotation(path, options, print));
+
+ if (n.value) {
+ parts.push(" =", printAssignmentRight(n.key, n.value, path.call(print, "value"), options));
+ }
+
+ parts.push(semi);
+ return group$2(concat$6(parts));
+ }
+
+ case "ClassDeclaration":
+ case "ClassExpression":
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ parts.push(concat$6(printClass(path, options, print)));
+ return concat$6(parts);
+
+ case "TSInterfaceHeritage":
+ parts.push(path.call(print, "expression"));
+
+ if (n.typeParameters) {
+ parts.push(path.call(print, "typeParameters"));
+ }
+
+ return concat$6(parts);
+
+ case "TemplateElement":
+ return join$4(literalline$2, n.value.raw.split(/\r?\n/g));
+
+ case "TemplateLiteral":
+ {
+ var expressions = path.map(print, "expressions");
+
+ var _parentNode = path.getParentNode();
+
+ if (isJestEachTemplateLiteral$1(n, _parentNode)) {
+ var _printed2 = printJestEachTemplateLiteral(n, expressions, options);
+
+ if (_printed2) {
+ return _printed2;
+ }
+ }
+
+ var isSimple = isSimpleTemplateLiteral$1(n);
+
+ if (isSimple) {
+ expressions = expressions.map(function (doc) {
+ return printDocToString$2(doc, Object.assign({}, options, {
+ printWidth: Infinity
+ })).formatted;
+ });
+ }
+
+ parts.push(lineSuffixBoundary$1, "`");
+ path.each(function (childPath) {
+ var i = childPath.getName();
+ parts.push(print(childPath));
+
+ if (i < expressions.length) {
+ // For a template literal of the following form:
+ // `someQuery {
+ // ${call({
+ // a,
+ // b,
+ // })}
+ // }`
+ // the expression is on its own line (there is a \n in the previous
+ // quasi literal), therefore we want to indent the JavaScript
+ // expression inside at the beginning of ${ instead of the beginning
+ // of the `.
+ var tabWidth = options.tabWidth;
+ var quasi = childPath.getValue();
+ var indentSize = getIndentSize$1(quasi.value.raw, tabWidth);
+ var _printed3 = expressions[i];
+
+ if (!isSimple) {
+ // Breaks at the template element boundaries (${ and }) are preferred to breaking
+ // in the middle of a MemberExpression
+ if (n.expressions[i].comments && n.expressions[i].comments.length || n.expressions[i].type === "MemberExpression" || n.expressions[i].type === "OptionalMemberExpression" || n.expressions[i].type === "ConditionalExpression") {
+ _printed3 = concat$6([indent$3(concat$6([softline$2, _printed3])), softline$2]);
+ }
+ }
+
+ var aligned = indentSize === 0 && quasi.value.raw.endsWith("\n") ? align$1(-Infinity, _printed3) : addAlignmentToDoc$2(_printed3, indentSize, tabWidth);
+ parts.push(group$2(concat$6(["${", aligned, lineSuffixBoundary$1, "}"])));
+ }
+ }, "quasis");
+ parts.push("`");
+ return concat$6(parts);
+ }
+ // These types are unprintable because they serve as abstract
+ // supertypes for other (printable) types.
+
+ case "TaggedTemplateExpression":
+ return concat$6([path.call(print, "tag"), path.call(print, "typeParameters"), path.call(print, "quasi")]);
+
+ case "Node":
+ case "Printable":
+ case "SourceLocation":
+ case "Position":
+ case "Statement":
+ case "Function":
+ case "Pattern":
+ case "Expression":
+ case "Declaration":
+ case "Specifier":
+ case "NamedSpecifier":
+ case "Comment":
+ case "MemberTypeAnnotation": // Flow
+
+ case "Type":
+ /* istanbul ignore next */
+ throw new Error("unprintable type: " + JSON.stringify(n.type));
+ // Type Annotations for Facebook Flow, typically stripped out or
+ // transformed away before printing.
+
+ case "TypeAnnotation":
+ case "TSTypeAnnotation":
+ if (n.typeAnnotation) {
+ return path.call(print, "typeAnnotation");
+ }
+ /* istanbul ignore next */
+
+
+ return "";
+
+ case "TSTupleType":
+ case "TupleTypeAnnotation":
+ {
+ var typesField = n.type === "TSTupleType" ? "elementTypes" : "types";
+ return group$2(concat$6(["[", indent$3(concat$6([softline$2, printArrayItems(path, options, typesField, print)])), ifBreak$1(shouldPrintComma(options, "all") ? "," : ""), comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), softline$2, "]"]));
+ }
+
+ case "ExistsTypeAnnotation":
+ return "*";
+
+ case "EmptyTypeAnnotation":
+ return "empty";
+
+ case "AnyTypeAnnotation":
+ return "any";
+
+ case "MixedTypeAnnotation":
+ return "mixed";
+
+ case "ArrayTypeAnnotation":
+ return concat$6([path.call(print, "elementType"), "[]"]);
+
+ case "BooleanTypeAnnotation":
+ return "boolean";
+
+ case "BooleanLiteralTypeAnnotation":
+ return "" + n.value;
+
+ case "DeclareClass":
+ return printFlowDeclaration(path, printClass(path, options, print));
+
+ case "TSDeclareFunction":
+ // For TypeScript the TSDeclareFunction node shares the AST
+ // structure with FunctionDeclaration
+ return concat$6([n.declare ? "declare " : "", printFunctionDeclaration(path, print, options), semi]);
+
+ case "DeclareFunction":
+ return printFlowDeclaration(path, ["function ", path.call(print, "id"), n.predicate ? " " : "", path.call(print, "predicate"), semi]);
+
+ case "DeclareModule":
+ return printFlowDeclaration(path, ["module ", path.call(print, "id"), " ", path.call(print, "body")]);
+
+ case "DeclareModuleExports":
+ return printFlowDeclaration(path, ["module.exports", ": ", path.call(print, "typeAnnotation"), semi]);
+
+ case "DeclareVariable":
+ return printFlowDeclaration(path, ["var ", path.call(print, "id"), semi]);
+
+ case "DeclareExportAllDeclaration":
+ return concat$6(["declare export * from ", path.call(print, "source")]);
+
+ case "DeclareExportDeclaration":
+ return concat$6(["declare ", printExportDeclaration(path, options, print)]);
+
+ case "DeclareOpaqueType":
+ case "OpaqueType":
+ {
+ parts.push("opaque type ", path.call(print, "id"), path.call(print, "typeParameters"));
+
+ if (n.supertype) {
+ parts.push(": ", path.call(print, "supertype"));
+ }
+
+ if (n.impltype) {
+ parts.push(" = ", path.call(print, "impltype"));
+ }
+
+ parts.push(semi);
+
+ if (n.type === "DeclareOpaqueType") {
+ return printFlowDeclaration(path, parts);
+ }
+
+ return concat$6(parts);
+ }
+
+ case "EnumDeclaration":
+ return concat$6(["enum ", path.call(print, "id"), " ", path.call(print, "body")]);
+
+ case "EnumBooleanBody":
+ case "EnumNumberBody":
+ case "EnumStringBody":
+ case "EnumSymbolBody":
+ {
+ if (n.type === "EnumSymbolBody" || n.explicitType) {
+ var type = null;
+
+ switch (n.type) {
+ case "EnumBooleanBody":
+ type = "boolean";
+ break;
+
+ case "EnumNumberBody":
+ type = "number";
+ break;
+
+ case "EnumStringBody":
+ type = "string";
+ break;
+
+ case "EnumSymbolBody":
+ type = "symbol";
+ break;
+ }
+
+ parts.push("of ", type, " ");
+ }
+
+ if (n.members.length === 0) {
+ parts.push(group$2(concat$6(["{", comments.printDanglingComments(path, options), softline$2, "}"])));
+ } else {
+ parts.push(group$2(concat$6(["{", indent$3(concat$6([hardline$4, printArrayItems(path, options, "members", print), shouldPrintComma(options) ? "," : ""])), comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), hardline$4, "}"])));
+ }
+
+ return concat$6(parts);
+ }
+
+ case "EnumBooleanMember":
+ case "EnumNumberMember":
+ case "EnumStringMember":
+ return concat$6([path.call(print, "id"), " = ", typeof n.init === "object" ? path.call(print, "init") : String(n.init)]);
+
+ case "EnumDefaultedMember":
+ return path.call(print, "id");
+
+ case "FunctionTypeAnnotation":
+ case "TSFunctionType":
+ {
+ // FunctionTypeAnnotation is ambiguous:
+ // declare function foo(a: B): void; OR
+ // var A: (a: B) => void;
+ var _parent8 = path.getParentNode(0);
+
+ var _parentParent2 = path.getParentNode(1);
+
+ var _parentParentParent = path.getParentNode(2);
+
+ var isArrowFunctionTypeAnnotation = n.type === "TSFunctionType" || !((_parent8.type === "ObjectTypeProperty" || _parent8.type === "ObjectTypeInternalSlot") && !getFlowVariance$1(_parent8) && !_parent8.optional && options.locStart(_parent8) === options.locStart(n) || _parent8.type === "ObjectTypeCallProperty" || _parentParentParent && _parentParentParent.type === "DeclareFunction");
+ var needsColon = isArrowFunctionTypeAnnotation && (_parent8.type === "TypeAnnotation" || _parent8.type === "TSTypeAnnotation"); // Sadly we can't put it inside of FastPath::needsColon because we are
+ // printing ":" as part of the expression and it would put parenthesis
+ // around :(
+
+ var needsParens = needsColon && isArrowFunctionTypeAnnotation && (_parent8.type === "TypeAnnotation" || _parent8.type === "TSTypeAnnotation") && _parentParent2.type === "ArrowFunctionExpression";
+
+ if (isObjectTypePropertyAFunction$1(_parent8, options)) {
+ isArrowFunctionTypeAnnotation = true;
+ needsColon = true;
+ }
+
+ if (needsParens) {
+ parts.push("(");
+ }
+
+ parts.push(printFunctionParams(path, print, options,
+ /* expandArg */
+ false,
+ /* printTypeParams */
+ true)); // The returnType is not wrapped in a TypeAnnotation, so the colon
+ // needs to be added separately.
+
+ if (n.returnType || n.predicate || n.typeAnnotation) {
+ parts.push(isArrowFunctionTypeAnnotation ? " => " : ": ", path.call(print, "returnType"), path.call(print, "predicate"), path.call(print, "typeAnnotation"));
+ }
+
+ if (needsParens) {
+ parts.push(")");
+ }
+
+ return group$2(concat$6(parts));
+ }
+
+ case "TSRestType":
+ return concat$6(["...", path.call(print, "typeAnnotation")]);
+
+ case "TSOptionalType":
+ return concat$6([path.call(print, "typeAnnotation"), "?"]);
+
+ case "FunctionTypeParam":
+ return concat$6([path.call(print, "name"), printOptionalToken(path), n.name ? ": " : "", path.call(print, "typeAnnotation")]);
+
+ case "GenericTypeAnnotation":
+ return concat$6([path.call(print, "id"), path.call(print, "typeParameters")]);
+
+ case "DeclareInterface":
+ case "InterfaceDeclaration":
+ case "InterfaceTypeAnnotation":
+ {
+ if (n.type === "DeclareInterface" || n.declare) {
+ parts.push("declare ");
+ }
+
+ parts.push("interface");
+
+ if (n.type === "DeclareInterface" || n.type === "InterfaceDeclaration") {
+ parts.push(" ", path.call(print, "id"), path.call(print, "typeParameters"));
+ }
+
+ if (n["extends"].length > 0) {
+ parts.push(group$2(indent$3(concat$6([line$2, "extends ", (n.extends.length === 1 ? identity$1 : indent$3)(join$4(concat$6([",", line$2]), path.map(print, "extends")))]))));
+ }
+
+ parts.push(" ", path.call(print, "body"));
+ return group$2(concat$6(parts));
+ }
+
+ case "ClassImplements":
+ case "InterfaceExtends":
+ return concat$6([path.call(print, "id"), path.call(print, "typeParameters")]);
+
+ case "TSClassImplements":
+ return concat$6([path.call(print, "expression"), path.call(print, "typeParameters")]);
+
+ case "TSIntersectionType":
+ case "IntersectionTypeAnnotation":
+ {
+ var types = path.map(print, "types");
+ var result = [];
+ var wasIndented = false;
+
+ for (var _i = 0; _i < types.length; ++_i) {
+ if (_i === 0) {
+ result.push(types[_i]);
+ } else if (isObjectType$1(n.types[_i - 1]) && isObjectType$1(n.types[_i])) {
+ // If both are objects, don't indent
+ result.push(concat$6([" & ", wasIndented ? indent$3(types[_i]) : types[_i]]));
+ } else if (!isObjectType$1(n.types[_i - 1]) && !isObjectType$1(n.types[_i])) {
+ // If no object is involved, go to the next line if it breaks
+ result.push(indent$3(concat$6([" &", line$2, types[_i]])));
+ } else {
+ // If you go from object to non-object or vis-versa, then inline it
+ if (_i > 1) {
+ wasIndented = true;
+ }
+
+ result.push(" & ", _i > 1 ? indent$3(types[_i]) : types[_i]);
+ }
+ }
+
+ return group$2(concat$6(result));
+ }
+
+ case "TSUnionType":
+ case "UnionTypeAnnotation":
+ {
+ // single-line variation
+ // A | B | C
+ // multi-line variation
+ // | A
+ // | B
+ // | C
+ var _parent9 = path.getParentNode(); // If there's a leading comment, the parent is doing the indentation
+
+
+ var shouldIndent = _parent9.type !== "TypeParameterInstantiation" && _parent9.type !== "TSTypeParameterInstantiation" && _parent9.type !== "GenericTypeAnnotation" && _parent9.type !== "TSTypeReference" && _parent9.type !== "TSTypeAssertion" && _parent9.type !== "TupleTypeAnnotation" && _parent9.type !== "TSTupleType" && !(_parent9.type === "FunctionTypeParam" && !_parent9.name) && !((_parent9.type === "TypeAlias" || _parent9.type === "VariableDeclarator" || _parent9.type === "TSTypeAliasDeclaration") && hasLeadingOwnLineComment$1(options.originalText, n, options)); // {
+ // a: string
+ // } | null | void
+ // should be inlined and not be printed in the multi-line variant
+
+ var shouldHug = shouldHugType(n); // We want to align the children but without its comment, so it looks like
+ // | child1
+ // // comment
+ // | child2
+
+ var _printed4 = path.map(function (typePath) {
+ var printedType = typePath.call(print);
+
+ if (!shouldHug) {
+ printedType = align$1(2, printedType);
+ }
+
+ return comments.printComments(typePath, function () {
+ return printedType;
+ }, options);
+ }, "types");
+
+ if (shouldHug) {
+ return join$4(" | ", _printed4);
+ }
+
+ var shouldAddStartLine = shouldIndent && !hasLeadingOwnLineComment$1(options.originalText, n, options);
+ var code = concat$6([ifBreak$1(concat$6([shouldAddStartLine ? line$2 : "", "| "])), join$4(concat$6([line$2, "| "]), _printed4)]);
+
+ if (needsParens_1(path, options)) {
+ return group$2(concat$6([indent$3(code), softline$2]));
+ }
+
+ if (_parent9.type === "TupleTypeAnnotation" && _parent9.types.length > 1 || _parent9.type === "TSTupleType" && _parent9.elementTypes.length > 1) {
+ return group$2(concat$6([indent$3(concat$6([ifBreak$1(concat$6(["(", softline$2])), code])), softline$2, ifBreak$1(")")]));
+ }
+
+ return group$2(shouldIndent ? indent$3(code) : code);
+ }
+
+ case "NullableTypeAnnotation":
+ return concat$6(["?", path.call(print, "typeAnnotation")]);
+
+ case "TSNullKeyword":
+ case "NullLiteralTypeAnnotation":
+ return "null";
+
+ case "ThisTypeAnnotation":
+ return "this";
+
+ case "NumberTypeAnnotation":
+ return "number";
+
+ case "ObjectTypeCallProperty":
+ if (n.static) {
+ parts.push("static ");
+ }
+
+ parts.push(path.call(print, "value"));
+ return concat$6(parts);
+
+ case "ObjectTypeIndexer":
+ {
+ var _variance = getFlowVariance$1(n);
+
+ return concat$6([_variance || "", "[", path.call(print, "id"), n.id ? ": " : "", path.call(print, "key"), "]: ", path.call(print, "value")]);
+ }
+
+ case "ObjectTypeProperty":
+ {
+ var _variance2 = getFlowVariance$1(n);
+
+ var modifier = "";
+
+ if (n.proto) {
+ modifier = "proto ";
+ } else if (n.static) {
+ modifier = "static ";
+ }
+
+ return concat$6([modifier, isGetterOrSetter$1(n) ? n.kind + " " : "", _variance2 || "", printPropertyKey(path, options, print), printOptionalToken(path), isFunctionNotation$1(n, options) ? "" : ": ", path.call(print, "value")]);
+ }
+
+ case "QualifiedTypeIdentifier":
+ return concat$6([path.call(print, "qualification"), ".", path.call(print, "id")]);
+
+ case "StringLiteralTypeAnnotation":
+ return nodeStr(n, options);
+
+ case "NumberLiteralTypeAnnotation":
+ assert$1.strictEqual(typeof n.value, "number");
+
+ if (n.extra != null) {
+ return printNumber$1(n.extra.raw);
+ }
+
+ return printNumber$1(n.raw);
+
+ case "StringTypeAnnotation":
+ return "string";
+
+ case "DeclareTypeAlias":
+ case "TypeAlias":
+ {
+ if (n.type === "DeclareTypeAlias" || n.declare) {
+ parts.push("declare ");
+ }
+
+ var _printed5 = printAssignmentRight(n.id, n.right, path.call(print, "right"), options);
+
+ parts.push("type ", path.call(print, "id"), path.call(print, "typeParameters"), " =", _printed5, semi);
+ return group$2(concat$6(parts));
+ }
+
+ case "TypeCastExpression":
+ {
+ var value = path.getValue(); // Flow supports a comment syntax for specifying type annotations: https://flow.org/en/docs/types/comments/.
+ // Unfortunately, its parser doesn't differentiate between comment annotations and regular
+ // annotations when producing an AST. So to preserve parentheses around type casts that use
+ // the comment syntax, we need to hackily read the source itself to see if the code contains
+ // a type annotation comment.
+ //
+ // Note that we're able to use the normal whitespace regex here because the Flow parser has
+ // already deemed this AST node to be a type cast. Only the Babel parser needs the
+ // non-line-break whitespace regex, which is why hasFlowShorthandAnnotationComment() is
+ // implemented differently.
+
+ var commentSyntax = value && value.typeAnnotation && value.typeAnnotation.range && options.originalText.substring(value.typeAnnotation.range[0]).match(/^\/\*\s*:/);
+ return concat$6(["(", path.call(print, "expression"), commentSyntax ? " /*" : "", ": ", path.call(print, "typeAnnotation"), commentSyntax ? " */" : "", ")"]);
+ }
+
+ case "TypeParameterDeclaration":
+ case "TypeParameterInstantiation":
+ {
+ var _value = path.getValue();
+
+ var commentStart = _value.range ? options.originalText.substring(0, _value.range[0]).lastIndexOf("/*") : -1; // As noted in the TypeCastExpression comments above, we're able to use a normal whitespace regex here
+ // because we know for sure that this is a type definition.
+
+ var _commentSyntax = commentStart >= 0 && options.originalText.substring(commentStart).match(/^\/\*\s*::/);
+
+ if (_commentSyntax) {
+ return concat$6(["/*:: ", printTypeParameters(path, options, print, "params"), " */"]);
+ }
+
+ return printTypeParameters(path, options, print, "params");
+ }
+
+ case "TSTypeParameterDeclaration":
+ case "TSTypeParameterInstantiation":
+ return printTypeParameters(path, options, print, "params");
+
+ case "TSTypeParameter":
+ case "TypeParameter":
+ {
+ var _parent10 = path.getParentNode();
+
+ if (_parent10.type === "TSMappedType") {
+ parts.push("[", path.call(print, "name"));
+
+ if (n.constraint) {
+ parts.push(" in ", path.call(print, "constraint"));
+ }
+
+ parts.push("]");
+ return concat$6(parts);
+ }
+
+ var _variance3 = getFlowVariance$1(n);
+
+ if (_variance3) {
+ parts.push(_variance3);
+ }
+
+ parts.push(path.call(print, "name"));
+
+ if (n.bound) {
+ parts.push(": ");
+ parts.push(path.call(print, "bound"));
+ }
+
+ if (n.constraint) {
+ parts.push(" extends ", path.call(print, "constraint"));
+ }
+
+ if (n["default"]) {
+ parts.push(" = ", path.call(print, "default"));
+ } // Keep comma if the file extension is .tsx and
+ // has one type parameter that isn't extend with any types.
+ // Because, otherwise formatted result will be invalid as tsx.
+
+
+ var _grandParent = path.getNode(2);
+
+ if (_parent10.params && _parent10.params.length === 1 && isTSXFile$1(options) && !n.constraint && _grandParent.type === "ArrowFunctionExpression") {
+ parts.push(",");
+ }
+
+ return concat$6(parts);
+ }
+
+ case "TypeofTypeAnnotation":
+ return concat$6(["typeof ", path.call(print, "argument")]);
+
+ case "VoidTypeAnnotation":
+ return "void";
+
+ case "InferredPredicate":
+ return "%checks";
+ // Unhandled types below. If encountered, nodes of these types should
+ // be either left alone or desugared into AST types that are fully
+ // supported by the pretty-printer.
+
+ case "DeclaredPredicate":
+ return concat$6(["%checks(", path.call(print, "value"), ")"]);
+
+ case "TSAbstractKeyword":
+ return "abstract";
+
+ case "TSAnyKeyword":
+ return "any";
+
+ case "TSAsyncKeyword":
+ return "async";
+
+ case "TSBooleanKeyword":
+ return "boolean";
+
+ case "TSBigIntKeyword":
+ return "bigint";
+
+ case "TSConstKeyword":
+ return "const";
+
+ case "TSDeclareKeyword":
+ return "declare";
+
+ case "TSExportKeyword":
+ return "export";
+
+ case "TSNeverKeyword":
+ return "never";
+
+ case "TSNumberKeyword":
+ return "number";
+
+ case "TSObjectKeyword":
+ return "object";
+
+ case "TSProtectedKeyword":
+ return "protected";
+
+ case "TSPrivateKeyword":
+ return "private";
+
+ case "TSPublicKeyword":
+ return "public";
+
+ case "TSReadonlyKeyword":
+ return "readonly";
+
+ case "TSSymbolKeyword":
+ return "symbol";
+
+ case "TSStaticKeyword":
+ return "static";
+
+ case "TSStringKeyword":
+ return "string";
+
+ case "TSUndefinedKeyword":
+ return "undefined";
+
+ case "TSUnknownKeyword":
+ return "unknown";
+
+ case "TSVoidKeyword":
+ return "void";
+
+ case "TSAsExpression":
+ return concat$6([path.call(print, "expression"), " as ", path.call(print, "typeAnnotation")]);
+
+ case "TSArrayType":
+ return concat$6([path.call(print, "elementType"), "[]"]);
+
+ case "TSPropertySignature":
+ {
+ if (n.export) {
+ parts.push("export ");
+ }
+
+ if (n.accessibility) {
+ parts.push(n.accessibility + " ");
+ }
+
+ if (n.static) {
+ parts.push("static ");
+ }
+
+ if (n.readonly) {
+ parts.push("readonly ");
+ }
+
+ parts.push(printPropertyKey(path, options, print), printOptionalToken(path));
+
+ if (n.typeAnnotation) {
+ parts.push(": ");
+ parts.push(path.call(print, "typeAnnotation"));
+ } // This isn't valid semantically, but it's in the AST so we can print it.
+
+
+ if (n.initializer) {
+ parts.push(" = ", path.call(print, "initializer"));
+ }
+
+ return concat$6(parts);
+ }
+
+ case "TSParameterProperty":
+ if (n.accessibility) {
+ parts.push(n.accessibility + " ");
+ }
+
+ if (n.export) {
+ parts.push("export ");
+ }
+
+ if (n.static) {
+ parts.push("static ");
+ }
+
+ if (n.readonly) {
+ parts.push("readonly ");
+ }
+
+ parts.push(path.call(print, "parameter"));
+ return concat$6(parts);
+
+ case "TSTypeReference":
+ return concat$6([path.call(print, "typeName"), printTypeParameters(path, options, print, "typeParameters")]);
+
+ case "TSTypeQuery":
+ return concat$6(["typeof ", path.call(print, "exprName")]);
+
+ case "TSIndexSignature":
+ {
+ var _parent11 = path.getParentNode();
+
+ return concat$6([n.export ? "export " : "", n.accessibility ? concat$6([n.accessibility, " "]) : "", n.static ? "static " : "", n.readonly ? "readonly " : "", "[", n.parameters ? concat$6(path.map(print, "parameters")) : "", "]: ", path.call(print, "typeAnnotation"), _parent11.type === "ClassBody" ? semi : ""]);
+ }
+
+ case "TSTypePredicate":
+ return concat$6([n.asserts ? "asserts " : "", path.call(print, "parameterName"), n.typeAnnotation ? concat$6([" is ", path.call(print, "typeAnnotation")]) : ""]);
+
+ case "TSNonNullExpression":
+ return concat$6([path.call(print, "expression"), "!"]);
+
+ case "TSThisType":
+ return "this";
+
+ case "TSImportType":
+ return concat$6([!n.isTypeOf ? "" : "typeof ", "import(", path.call(print, "parameter"), ")", !n.qualifier ? "" : concat$6([".", path.call(print, "qualifier")]), printTypeParameters(path, options, print, "typeParameters")]);
+
+ case "TSLiteralType":
+ return path.call(print, "literal");
+
+ case "TSIndexedAccessType":
+ return concat$6([path.call(print, "objectType"), "[", path.call(print, "indexType"), "]"]);
+
+ case "TSConstructSignatureDeclaration":
+ case "TSCallSignatureDeclaration":
+ case "TSConstructorType":
+ {
+ if (n.type !== "TSCallSignatureDeclaration") {
+ parts.push("new ");
+ }
+
+ parts.push(group$2(printFunctionParams(path, print, options,
+ /* expandArg */
+ false,
+ /* printTypeParams */
+ true)));
+
+ if (n.returnType) {
+ var isType = n.type === "TSConstructorType";
+ parts.push(isType ? " => " : ": ", path.call(print, "returnType"));
+ }
+
+ return concat$6(parts);
+ }
+
+ case "TSTypeOperator":
+ return concat$6([n.operator, " ", path.call(print, "typeAnnotation")]);
+
+ case "TSMappedType":
+ {
+ var _shouldBreak3 = hasNewlineInRange$2(options.originalText, options.locStart(n), options.locEnd(n));
+
+ return group$2(concat$6(["{", indent$3(concat$6([options.bracketSpacing ? line$2 : softline$2, n.readonly ? concat$6([getTypeScriptMappedTypeModifier$1(n.readonly, "readonly"), " "]) : "", printTypeScriptModifiers(path, options, print), path.call(print, "typeParameter"), n.optional ? getTypeScriptMappedTypeModifier$1(n.optional, "?") : "", ": ", path.call(print, "typeAnnotation"), ifBreak$1(semi, "")])), comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), options.bracketSpacing ? line$2 : softline$2, "}"]), {
+ shouldBreak: _shouldBreak3
+ });
+ }
+
+ case "TSMethodSignature":
+ parts.push(n.accessibility ? concat$6([n.accessibility, " "]) : "", n.export ? "export " : "", n.static ? "static " : "", n.readonly ? "readonly " : "", n.computed ? "[" : "", path.call(print, "key"), n.computed ? "]" : "", printOptionalToken(path), printFunctionParams(path, print, options,
+ /* expandArg */
+ false,
+ /* printTypeParams */
+ true));
+
+ if (n.returnType) {
+ parts.push(": ", path.call(print, "returnType"));
+ }
+
+ return group$2(concat$6(parts));
+
+ case "TSNamespaceExportDeclaration":
+ parts.push("export as namespace ", path.call(print, "id"));
+
+ if (options.semi) {
+ parts.push(";");
+ }
+
+ return group$2(concat$6(parts));
+
+ case "TSEnumDeclaration":
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ if (n.modifiers) {
+ parts.push(printTypeScriptModifiers(path, options, print));
+ }
+
+ if (n.const) {
+ parts.push("const ");
+ }
+
+ parts.push("enum ", path.call(print, "id"), " ");
+
+ if (n.members.length === 0) {
+ parts.push(group$2(concat$6(["{", comments.printDanglingComments(path, options), softline$2, "}"])));
+ } else {
+ parts.push(group$2(concat$6(["{", indent$3(concat$6([hardline$4, printArrayItems(path, options, "members", print), shouldPrintComma(options, "es5") ? "," : ""])), comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), hardline$4, "}"])));
+ }
+
+ return concat$6(parts);
+
+ case "TSEnumMember":
+ parts.push(path.call(print, "id"));
+
+ if (n.initializer) {
+ parts.push(" = ", path.call(print, "initializer"));
+ }
+
+ return concat$6(parts);
+
+ case "TSImportEqualsDeclaration":
+ if (n.isExport) {
+ parts.push("export ");
+ }
+
+ parts.push("import ", path.call(print, "id"), " = ", path.call(print, "moduleReference"));
+
+ if (options.semi) {
+ parts.push(";");
+ }
+
+ return group$2(concat$6(parts));
+
+ case "TSExternalModuleReference":
+ return concat$6(["require(", path.call(print, "expression"), ")"]);
+
+ case "TSModuleDeclaration":
+ {
+ var _parent12 = path.getParentNode();
+
+ var isExternalModule = isLiteral$1(n.id);
+ var parentIsDeclaration = _parent12.type === "TSModuleDeclaration";
+ var bodyIsDeclaration = n.body && n.body.type === "TSModuleDeclaration";
+
+ if (parentIsDeclaration) {
+ parts.push(".");
+ } else {
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ parts.push(printTypeScriptModifiers(path, options, print));
+ var textBetweenNodeAndItsId = options.originalText.slice(options.locStart(n), options.locStart(n.id)); // Global declaration looks like this:
+ // (declare)? global { ... }
+
+ var isGlobalDeclaration = n.id.type === "Identifier" && n.id.name === "global" && !/namespace|module/.test(textBetweenNodeAndItsId);
+
+ if (!isGlobalDeclaration) {
+ parts.push(isExternalModule || /(^|\s)module(\s|$)/.test(textBetweenNodeAndItsId) ? "module " : "namespace ");
+ }
+ }
+
+ parts.push(path.call(print, "id"));
+
+ if (bodyIsDeclaration) {
+ parts.push(path.call(print, "body"));
+ } else if (n.body) {
+ parts.push(" ", group$2(path.call(print, "body")));
+ } else {
+ parts.push(semi);
+ }
+
+ return concat$6(parts);
+ }
+
+ case "PrivateName":
+ return concat$6(["#", path.call(print, "id")]);
+
+ case "TSConditionalType":
+ return printTernaryOperator(path, options, print, {
+ beforeParts: function beforeParts() {
+ return [path.call(print, "checkType"), " ", "extends", " ", path.call(print, "extendsType")];
+ },
+ afterParts: function afterParts() {
+ return [];
+ },
+ shouldCheckJsx: false,
+ conditionalNodeType: "TSConditionalType",
+ consequentNodePropertyName: "trueType",
+ alternateNodePropertyName: "falseType",
+ testNodePropertyName: "checkType",
+ breakNested: true
+ });
+
+ case "TSInferType":
+ return concat$6(["infer", " ", path.call(print, "typeParameter")]);
+
+ case "InterpreterDirective":
+ parts.push("#!", n.value, hardline$4);
+
+ if (isNextLineEmpty$2(options.originalText, n, options)) {
+ parts.push(hardline$4);
+ }
+
+ return concat$6(parts);
+
+ case "NGRoot":
+ return concat$6([].concat(path.call(print, "node"), !n.node.comments || n.node.comments.length === 0 ? [] : concat$6([" //", n.node.comments[0].value.trimRight()])));
+
+ case "NGChainedExpression":
+ return group$2(join$4(concat$6([";", line$2]), path.map(function (childPath) {
+ return hasNgSideEffect$1(childPath) ? print(childPath) : concat$6(["(", print(childPath), ")"]);
+ }, "expressions")));
+
+ case "NGEmptyExpression":
+ return "";
+
+ case "NGQuotedExpression":
+ return concat$6([n.prefix, ":", n.value]);
+
+ case "NGMicrosyntax":
+ return concat$6(path.map(function (childPath, index) {
+ return concat$6([index === 0 ? "" : isNgForOf$1(childPath.getValue(), index, n) ? " " : concat$6([";", line$2]), print(childPath)]);
+ }, "body"));
+
+ case "NGMicrosyntaxKey":
+ return /^[a-z_$][a-z0-9_$]*(-[a-z_$][a-z0-9_$])*$/i.test(n.name) ? n.name : JSON.stringify(n.name);
+
+ case "NGMicrosyntaxExpression":
+ return concat$6([path.call(print, "expression"), n.alias === null ? "" : concat$6([" as ", path.call(print, "alias")])]);
+
+ case "NGMicrosyntaxKeyedExpression":
+ {
+ var index = path.getName();
+
+ var _parentNode2 = path.getParentNode();
+
+ var shouldNotPrintColon = isNgForOf$1(n, index, _parentNode2) || (index === 1 && (n.key.name === "then" || n.key.name === "else") || index === 2 && n.key.name === "else" && _parentNode2.body[index - 1].type === "NGMicrosyntaxKeyedExpression" && _parentNode2.body[index - 1].key.name === "then") && _parentNode2.body[0].type === "NGMicrosyntaxExpression";
+ return concat$6([path.call(print, "key"), shouldNotPrintColon ? " " : ": ", path.call(print, "expression")]);
+ }
+
+ case "NGMicrosyntaxLet":
+ return concat$6(["let ", path.call(print, "key"), n.value === null ? "" : concat$6([" = ", path.call(print, "value")])]);
+
+ case "NGMicrosyntaxAs":
+ return concat$6([path.call(print, "key"), " as ", path.call(print, "alias")]);
+
+ case "ArgumentPlaceholder":
+ return "?";
+
+ default:
+ /* istanbul ignore next */
+ throw new Error("unknown type: " + JSON.stringify(n.type));
+ }
+}
+
+function printStatementSequence(path, options, print) {
+ var printed = [];
+ var bodyNode = path.getNode();
+ var isClass = bodyNode.type === "ClassBody";
+ path.map(function (stmtPath, i) {
+ var stmt = stmtPath.getValue(); // Just in case the AST has been modified to contain falsy
+ // "statements," it's safer simply to skip them.
+
+ /* istanbul ignore if */
+
+ if (!stmt) {
+ return;
+ } // Skip printing EmptyStatement nodes to avoid leaving stray
+ // semicolons lying around.
+
+
+ if (stmt.type === "EmptyStatement") {
+ return;
+ }
+
+ var stmtPrinted = print(stmtPath);
+ var text = options.originalText;
+ var parts = []; // in no-semi mode, prepend statement with semicolon if it might break ASI
+ // don't prepend the only JSX element in a program with semicolon
+
+ if (!options.semi && !isClass && !isTheOnlyJSXElementInMarkdown$1(options, stmtPath) && stmtNeedsASIProtection(stmtPath, options)) {
+ if (stmt.comments && stmt.comments.some(function (comment) {
+ return comment.leading;
+ })) {
+ parts.push(print(stmtPath, {
+ needsSemi: true
+ }));
+ } else {
+ parts.push(";", stmtPrinted);
+ }
+ } else {
+ parts.push(stmtPrinted);
+ }
+
+ if (!options.semi && isClass) {
+ if (classPropMayCauseASIProblems$1(stmtPath)) {
+ parts.push(";");
+ } else if (stmt.type === "ClassProperty") {
+ var nextChild = bodyNode.body[i + 1];
+
+ if (classChildNeedsASIProtection$1(nextChild)) {
+ parts.push(";");
+ }
+ }
+ }
+
+ if (isNextLineEmpty$2(text, stmt, options) && !isLastStatement$1(stmtPath)) {
+ parts.push(hardline$4);
+ }
+
+ printed.push(concat$6(parts));
+ });
+ return join$4(hardline$4, printed);
+}
+
+function printPropertyKey(path, options, print) {
+ var node = path.getNode();
+
+ if (node.computed) {
+ return concat$6(["[", path.call(print, "key"), "]"]);
+ }
+
+ var parent = path.getParentNode();
+ var key = node.key;
+
+ if (options.quoteProps === "consistent" && !needsQuoteProps.has(parent)) {
+ var objectHasStringProp = (parent.properties || parent.body || parent.members).some(function (prop) {
+ return !prop.computed && prop.key && isStringLiteral$1(prop.key) && !isStringPropSafeToCoerceToIdentifier$1(prop, options);
+ });
+ needsQuoteProps.set(parent, objectHasStringProp);
+ }
+
+ if (key.type === "Identifier" && (options.parser === "json" || options.quoteProps === "consistent" && needsQuoteProps.get(parent))) {
+ // a -> "a"
+ var prop = printString$1(JSON.stringify(key.name), options);
+ return path.call(function (keyPath) {
+ return comments.printComments(keyPath, function () {
+ return prop;
+ }, options);
+ }, "key");
+ }
+
+ if (isStringPropSafeToCoerceToIdentifier$1(node, options) && (options.quoteProps === "as-needed" || options.quoteProps === "consistent" && !needsQuoteProps.get(parent))) {
+ // 'a' -> a
+ return path.call(function (keyPath) {
+ return comments.printComments(keyPath, function () {
+ return key.value;
+ }, options);
+ }, "key");
+ }
+
+ return path.call(print, "key");
+}
+
+function printMethod(path, options, print) {
+ var node = path.getNode();
+ var kind = node.kind;
+ var value = node.value || node;
+ var parts = [];
+
+ if (!kind || kind === "init" || kind === "method" || kind === "constructor") {
+ if (value.async) {
+ parts.push("async ");
+ }
+
+ if (value.generator) {
+ parts.push("*");
+ }
+ } else {
+ assert$1.ok(kind === "get" || kind === "set");
+ parts.push(kind, " ");
+ }
+
+ parts.push(printPropertyKey(path, options, print), node.optional || node.key.optional ? "?" : "", node === value ? printMethodInternal(path, options, print) : path.call(function (path) {
+ return printMethodInternal(path, options, print);
+ }, "value"));
+ return concat$6(parts);
+}
+
+function printMethodInternal(path, options, print) {
+ var parts = [printFunctionTypeParameters(path, options, print), group$2(concat$6([printFunctionParams(path, print, options), printReturnType(path, print, options)]))];
+
+ if (path.getNode().body) {
+ parts.push(" ", path.call(print, "body"));
+ } else {
+ parts.push(options.semi ? ";" : "");
+ }
+
+ return concat$6(parts);
+}
+
+function couldGroupArg(arg) {
+ return arg.type === "ObjectExpression" && (arg.properties.length > 0 || arg.comments) || arg.type === "ArrayExpression" && (arg.elements.length > 0 || arg.comments) || arg.type === "TSTypeAssertion" && couldGroupArg(arg.expression) || arg.type === "TSAsExpression" && couldGroupArg(arg.expression) || arg.type === "FunctionExpression" || arg.type === "ArrowFunctionExpression" && ( // we want to avoid breaking inside composite return types but not simple keywords
+ // https://github.com/prettier/prettier/issues/4070
+ // export class Thing implements OtherThing {
+ // do: (type: Type) => Provider<Prop> = memoize(
+ // (type: ObjectType): Provider<Opts> => {}
+ // );
+ // }
+ // https://github.com/prettier/prettier/issues/6099
+ // app.get("/", (req, res): void => {
+ // res.send("Hello World!");
+ // });
+ !arg.returnType || !arg.returnType.typeAnnotation || arg.returnType.typeAnnotation.type !== "TSTypeReference") && (arg.body.type === "BlockStatement" || arg.body.type === "ArrowFunctionExpression" || arg.body.type === "ObjectExpression" || arg.body.type === "ArrayExpression" || arg.body.type === "CallExpression" || arg.body.type === "OptionalCallExpression" || arg.body.type === "ConditionalExpression" || isJSXNode$1(arg.body));
+}
+
+function shouldGroupLastArg(args) {
+ var lastArg = getLast$2(args);
+ var penultimateArg = getPenultimate$1(args);
+ return !hasLeadingComment$3(lastArg) && !hasTrailingComment$1(lastArg) && couldGroupArg(lastArg) && ( // If the last two arguments are of the same type,
+ // disable last element expansion.
+ !penultimateArg || penultimateArg.type !== lastArg.type);
+}
+
+function shouldGroupFirstArg(args) {
+ if (args.length !== 2) {
+ return false;
+ }
+
+ var firstArg = args[0];
+ var secondArg = args[1];
+ return (!firstArg.comments || !firstArg.comments.length) && (firstArg.type === "FunctionExpression" || firstArg.type === "ArrowFunctionExpression" && firstArg.body.type === "BlockStatement") && secondArg.type !== "FunctionExpression" && secondArg.type !== "ArrowFunctionExpression" && secondArg.type !== "ConditionalExpression" && !couldGroupArg(secondArg);
+}
+
+function printJestEachTemplateLiteral(node, expressions, options) {
+ /**
+ * a | b | expected
+ * ${1} | ${1} | ${2}
+ * ${1} | ${2} | ${3}
+ * ${2} | ${1} | ${3}
+ */
+ var headerNames = node.quasis[0].value.raw.trim().split(/\s*\|\s*/);
+
+ if (headerNames.length > 1 || headerNames.some(function (headerName) {
+ return headerName.length !== 0;
+ })) {
+ var parts = [];
+ var stringifiedExpressions = expressions.map(function (doc) {
+ return "${" + printDocToString$2(doc, Object.assign({}, options, {
+ printWidth: Infinity,
+ endOfLine: "lf"
+ })).formatted + "}";
+ });
+ var tableBody = [{
+ hasLineBreak: false,
+ cells: []
+ }];
+
+ for (var i = 1; i < node.quasis.length; i++) {
+ var row = tableBody[tableBody.length - 1];
+ var correspondingExpression = stringifiedExpressions[i - 1];
+ row.cells.push(correspondingExpression);
+
+ if (correspondingExpression.indexOf("\n") !== -1) {
+ row.hasLineBreak = true;
+ }
+
+ if (node.quasis[i].value.raw.indexOf("\n") !== -1) {
+ tableBody.push({
+ hasLineBreak: false,
+ cells: []
+ });
+ }
+ }
+
+ var maxColumnCount = tableBody.reduce(function (maxColumnCount, row) {
+ return Math.max(maxColumnCount, row.cells.length);
+ }, headerNames.length);
+ var maxColumnWidths = Array.from(new Array(maxColumnCount), function () {
+ return 0;
+ });
+ var table = [{
+ cells: headerNames
+ }].concat(tableBody.filter(function (row) {
+ return row.cells.length !== 0;
+ }));
+ table.filter(function (row) {
+ return !row.hasLineBreak;
+ }).forEach(function (row) {
+ row.cells.forEach(function (cell, index) {
+ maxColumnWidths[index] = Math.max(maxColumnWidths[index], getStringWidth$2(cell));
+ });
+ });
+ parts.push(lineSuffixBoundary$1, "`", indent$3(concat$6([hardline$4, join$4(hardline$4, table.map(function (row) {
+ return join$4(" | ", row.cells.map(function (cell, index) {
+ return row.hasLineBreak ? cell : cell + " ".repeat(maxColumnWidths[index] - getStringWidth$2(cell));
+ }));
+ }))])), hardline$4, "`");
+ return concat$6(parts);
+ }
+}
+
+function printArgumentsList(path, options, print) {
+ var node = path.getValue();
+ var args = node.arguments;
+
+ if (args.length === 0) {
+ return concat$6(["(", comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), ")"]);
+ } // useEffect(() => { ... }, [foo, bar, baz])
+
+
+ if (args.length === 2 && args[0].type === "ArrowFunctionExpression" && args[0].params.length === 0 && args[0].body.type === "BlockStatement" && args[1].type === "ArrayExpression" && !args.find(function (arg) {
+ return arg.comments;
+ })) {
+ return concat$6(["(", path.call(print, "arguments", 0), ", ", path.call(print, "arguments", 1), ")"]);
+ } // func(
+ // ({
+ // a,
+ // b
+ // }) => {}
+ // );
+
+
+ function shouldBreakForArrowFunctionInArguments(arg, argPath) {
+ if (!arg || arg.type !== "ArrowFunctionExpression" || !arg.body || arg.body.type !== "BlockStatement" || !arg.params || arg.params.length < 1) {
+ return false;
+ }
+
+ var shouldBreak = false;
+ argPath.each(function (paramPath) {
+ var printed = concat$6([print(paramPath)]);
+ shouldBreak = shouldBreak || willBreak$1(printed);
+ }, "params");
+ return shouldBreak;
+ }
+
+ var anyArgEmptyLine = false;
+ var shouldBreakForArrowFunction = false;
+ var hasEmptyLineFollowingFirstArg = false;
+ var lastArgIndex = args.length - 1;
+ var printedArguments = path.map(function (argPath, index) {
+ var arg = argPath.getNode();
+ var parts = [print(argPath)];
+
+ if (index === lastArgIndex) ; else if (isNextLineEmpty$2(options.originalText, arg, options)) {
+ if (index === 0) {
+ hasEmptyLineFollowingFirstArg = true;
+ }
+
+ anyArgEmptyLine = true;
+ parts.push(",", hardline$4, hardline$4);
+ } else {
+ parts.push(",", line$2);
+ }
+
+ shouldBreakForArrowFunction = shouldBreakForArrowFunctionInArguments(arg, argPath);
+ return concat$6(parts);
+ }, "arguments");
+ var maybeTrailingComma = // Dynamic imports cannot have trailing commas
+ !(node.callee && node.callee.type === "Import") && shouldPrintComma(options, "all") ? "," : "";
+
+ function allArgsBrokenOut() {
+ return group$2(concat$6(["(", indent$3(concat$6([line$2, concat$6(printedArguments)])), maybeTrailingComma, line$2, ")"]), {
+ shouldBreak: true
+ });
+ }
+
+ if (isFunctionCompositionArgs$1(args)) {
+ return allArgsBrokenOut();
+ }
+
+ var shouldGroupFirst = shouldGroupFirstArg(args);
+ var shouldGroupLast = shouldGroupLastArg(args);
+
+ if (shouldGroupFirst || shouldGroupLast) {
+ var shouldBreak = (shouldGroupFirst ? printedArguments.slice(1).some(willBreak$1) : printedArguments.slice(0, -1).some(willBreak$1)) || anyArgEmptyLine || shouldBreakForArrowFunction; // We want to print the last argument with a special flag
+
+ var printedExpanded;
+ var i = 0;
+ path.each(function (argPath) {
+ if (shouldGroupFirst && i === 0) {
+ printedExpanded = [concat$6([argPath.call(function (p) {
+ return print(p, {
+ expandFirstArg: true
+ });
+ }), printedArguments.length > 1 ? "," : "", hasEmptyLineFollowingFirstArg ? hardline$4 : line$2, hasEmptyLineFollowingFirstArg ? hardline$4 : ""])].concat(printedArguments.slice(1));
+ }
+
+ if (shouldGroupLast && i === args.length - 1) {
+ printedExpanded = printedArguments.slice(0, -1).concat(argPath.call(function (p) {
+ return print(p, {
+ expandLastArg: true
+ });
+ }));
+ }
+
+ i++;
+ }, "arguments");
+ var somePrintedArgumentsWillBreak = printedArguments.some(willBreak$1);
+ var simpleConcat = concat$6(["(", concat$6(printedExpanded), ")"]);
+ return concat$6([somePrintedArgumentsWillBreak ? breakParent$2 : "", conditionalGroup$1([!somePrintedArgumentsWillBreak && !node.typeArguments && !node.typeParameters ? simpleConcat : ifBreak$1(allArgsBrokenOut(), simpleConcat), shouldGroupFirst ? concat$6(["(", group$2(printedExpanded[0], {
+ shouldBreak: true
+ }), concat$6(printedExpanded.slice(1)), ")"]) : concat$6(["(", concat$6(printedArguments.slice(0, -1)), group$2(getLast$2(printedExpanded), {
+ shouldBreak: true
+ }), ")"]), allArgsBrokenOut()], {
+ shouldBreak
+ })]);
+ }
+
+ var contents = concat$6(["(", indent$3(concat$6([softline$2, concat$6(printedArguments)])), ifBreak$1(maybeTrailingComma), softline$2, ")"]);
+
+ if (isLongCurriedCallExpression$1(path)) {
+ // By not wrapping the arguments in a group, the printer prioritizes
+ // breaking up these arguments rather than the args of the parent call.
+ return contents;
+ }
+
+ return group$2(contents, {
+ shouldBreak: printedArguments.some(willBreak$1) || anyArgEmptyLine
+ });
+}
+
+function printTypeAnnotation(path, options, print) {
+ var node = path.getValue();
+
+ if (!node.typeAnnotation) {
+ return "";
+ }
+
+ var parentNode = path.getParentNode();
+ var isDefinite = node.definite || parentNode && parentNode.type === "VariableDeclarator" && parentNode.definite;
+ var isFunctionDeclarationIdentifier = parentNode.type === "DeclareFunction" && parentNode.id === node;
+
+ if (isFlowAnnotationComment$1(options.originalText, node.typeAnnotation, options)) {
+ return concat$6([" /*: ", path.call(print, "typeAnnotation"), " */"]);
+ }
+
+ return concat$6([isFunctionDeclarationIdentifier ? "" : isDefinite ? "!: " : ": ", path.call(print, "typeAnnotation")]);
+}
+
+function printFunctionTypeParameters(path, options, print) {
+ var fun = path.getValue();
+
+ if (fun.typeArguments) {
+ return path.call(print, "typeArguments");
+ }
+
+ if (fun.typeParameters) {
+ return path.call(print, "typeParameters");
+ }
+
+ return "";
+}
+
+function printFunctionParams(path, print, options, expandArg, printTypeParams) {
+ var fun = path.getValue();
+ var parent = path.getParentNode();
+ var paramsField = fun.parameters ? "parameters" : "params";
+ var isParametersInTestCall = isTestCall$1(parent);
+ var shouldHugParameters = shouldHugArguments(fun);
+ var shouldExpandParameters = expandArg && !(fun[paramsField] && fun[paramsField].some(function (n) {
+ return n.comments;
+ }));
+ var typeParams = printTypeParams ? printFunctionTypeParameters(path, options, print) : "";
+ var printed = [];
+
+ if (fun[paramsField]) {
+ var lastArgIndex = fun[paramsField].length - 1;
+ printed = path.map(function (childPath, index) {
+ var parts = [];
+ var param = childPath.getValue();
+ parts.push(print(childPath));
+
+ if (index === lastArgIndex) {
+ if (fun.rest) {
+ parts.push(",", line$2);
+ }
+ } else if (isParametersInTestCall || shouldHugParameters || shouldExpandParameters) {
+ parts.push(", ");
+ } else if (isNextLineEmpty$2(options.originalText, param, options)) {
+ parts.push(",", hardline$4, hardline$4);
+ } else {
+ parts.push(",", line$2);
+ }
+
+ return concat$6(parts);
+ }, paramsField);
+ }
+
+ if (fun.rest) {
+ printed.push(concat$6(["...", path.call(print, "rest")]));
+ }
+
+ if (printed.length === 0) {
+ return concat$6([typeParams, "(", comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true, function (comment) {
+ return getNextNonSpaceNonCommentCharacter$1(options.originalText, comment, options.locEnd) === ")";
+ }), ")"]);
+ }
+
+ var lastParam = getLast$2(fun[paramsField]); // If the parent is a call with the first/last argument expansion and this is the
+ // params of the first/last argument, we don't want the arguments to break and instead
+ // want the whole expression to be on a new line.
+ //
+ // Good: Bad:
+ // verylongcall( verylongcall((
+ // (a, b) => { a,
+ // } b,
+ // }) ) => {
+ // })
+
+ if (shouldExpandParameters) {
+ return group$2(concat$6([removeLines$1(typeParams), "(", concat$6(printed.map(removeLines$1)), ")"]));
+ } // Single object destructuring should hug
+ //
+ // function({
+ // a,
+ // b,
+ // c
+ // }) {}
+
+
+ var hasNotParameterDecorator = fun[paramsField].every(function (param) {
+ return !param.decorators;
+ });
+
+ if (shouldHugParameters && hasNotParameterDecorator) {
+ return concat$6([typeParams, "(", concat$6(printed), ")"]);
+ } // don't break in specs, eg; `it("should maintain parens around done even when long", (done) => {})`
+
+
+ if (isParametersInTestCall) {
+ return concat$6([typeParams, "(", concat$6(printed), ")"]);
+ }
+
+ var isFlowShorthandWithOneArg = (isObjectTypePropertyAFunction$1(parent, options) || isTypeAnnotationAFunction$1(parent, options) || parent.type === "TypeAlias" || parent.type === "UnionTypeAnnotation" || parent.type === "TSUnionType" || parent.type === "IntersectionTypeAnnotation" || parent.type === "FunctionTypeAnnotation" && parent.returnType === fun) && fun[paramsField].length === 1 && fun[paramsField][0].name === null && fun[paramsField][0].typeAnnotation && fun.typeParameters === null && isSimpleFlowType$1(fun[paramsField][0].typeAnnotation) && !fun.rest;
+
+ if (isFlowShorthandWithOneArg) {
+ if (options.arrowParens === "always") {
+ return concat$6(["(", concat$6(printed), ")"]);
+ }
+
+ return concat$6(printed);
+ }
+
+ var canHaveTrailingComma = !(lastParam && lastParam.type === "RestElement") && !fun.rest;
+ return concat$6([typeParams, "(", indent$3(concat$6([softline$2, concat$6(printed)])), ifBreak$1(canHaveTrailingComma && shouldPrintComma(options, "all") ? "," : ""), softline$2, ")"]);
+}
+
+function shouldPrintParamsWithoutParens(path, options) {
+ if (options.arrowParens === "always") {
+ return false;
+ }
+
+ if (options.arrowParens === "avoid") {
+ var node = path.getValue();
+ return canPrintParamsWithoutParens(node);
+ } // Fallback default; should be unreachable
+
+
+ return false;
+}
+
+function canPrintParamsWithoutParens(node) {
+ return node.params.length === 1 && !node.rest && !node.typeParameters && !hasDanglingComments$1(node) && node.params[0].type === "Identifier" && !node.params[0].typeAnnotation && !node.params[0].comments && !node.params[0].optional && !node.predicate && !node.returnType;
+}
+
+function printFunctionDeclaration(path, print, options) {
+ var n = path.getValue();
+ var parts = [];
+
+ if (n.async) {
+ parts.push("async ");
+ }
+
+ parts.push("function");
+
+ if (n.generator) {
+ parts.push("*");
+ }
+
+ if (n.id) {
+ parts.push(" ", path.call(print, "id"));
+ }
+
+ parts.push(printFunctionTypeParameters(path, options, print), group$2(concat$6([printFunctionParams(path, print, options), printReturnType(path, print, options)])), n.body ? " " : "", path.call(print, "body"));
+ return concat$6(parts);
+}
+
+function printReturnType(path, print, options) {
+ var n = path.getValue();
+ var returnType = path.call(print, "returnType");
+
+ if (n.returnType && isFlowAnnotationComment$1(options.originalText, n.returnType, options)) {
+ return concat$6([" /*: ", returnType, " */"]);
+ }
+
+ var parts = [returnType]; // prepend colon to TypeScript type annotation
+
+ if (n.returnType && n.returnType.typeAnnotation) {
+ parts.unshift(": ");
+ }
+
+ if (n.predicate) {
+ // The return type will already add the colon, but otherwise we
+ // need to do it ourselves
+ parts.push(n.returnType ? " " : ": ", path.call(print, "predicate"));
+ }
+
+ return concat$6(parts);
+}
+
+function printExportDeclaration(path, options, print) {
+ var decl = path.getValue();
+ var semi = options.semi ? ";" : "";
+ var parts = ["export "];
+ var isDefault = decl["default"] || decl.type === "ExportDefaultDeclaration";
+
+ if (isDefault) {
+ parts.push("default ");
+ }
+
+ parts.push(comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true));
+
+ if (needsHardlineAfterDanglingComment$1(decl)) {
+ parts.push(hardline$4);
+ }
+
+ if (decl.declaration) {
+ parts.push(path.call(print, "declaration"));
+
+ if (isDefault && decl.declaration.type !== "ClassDeclaration" && decl.declaration.type !== "FunctionDeclaration" && decl.declaration.type !== "TSInterfaceDeclaration" && decl.declaration.type !== "DeclareClass" && decl.declaration.type !== "DeclareFunction" && decl.declaration.type !== "TSDeclareFunction") {
+ parts.push(semi);
+ }
+ } else {
+ if (decl.specifiers && decl.specifiers.length > 0) {
+ var specifiers = [];
+ var defaultSpecifiers = [];
+ var namespaceSpecifiers = [];
+ path.each(function (specifierPath) {
+ var specifierType = path.getValue().type;
+
+ if (specifierType === "ExportSpecifier") {
+ specifiers.push(print(specifierPath));
+ } else if (specifierType === "ExportDefaultSpecifier") {
+ defaultSpecifiers.push(print(specifierPath));
+ } else if (specifierType === "ExportNamespaceSpecifier") {
+ namespaceSpecifiers.push(concat$6(["* as ", print(specifierPath)]));
+ }
+ }, "specifiers");
+ var isNamespaceFollowed = namespaceSpecifiers.length !== 0 && specifiers.length !== 0;
+ var isDefaultFollowed = defaultSpecifiers.length !== 0 && (namespaceSpecifiers.length !== 0 || specifiers.length !== 0);
+ var canBreak = specifiers.length > 1 || defaultSpecifiers.length > 0 || decl.specifiers && decl.specifiers.some(function (node) {
+ return node.comments;
+ });
+ var printed = "";
+
+ if (specifiers.length !== 0) {
+ if (canBreak) {
+ printed = group$2(concat$6(["{", indent$3(concat$6([options.bracketSpacing ? line$2 : softline$2, join$4(concat$6([",", line$2]), specifiers)])), ifBreak$1(shouldPrintComma(options) ? "," : ""), options.bracketSpacing ? line$2 : softline$2, "}"]));
+ } else {
+ printed = concat$6(["{", options.bracketSpacing ? " " : "", concat$6(specifiers), options.bracketSpacing ? " " : "", "}"]);
+ }
+ }
+
+ parts.push(decl.exportKind === "type" ? "type " : "", concat$6(defaultSpecifiers), concat$6([isDefaultFollowed ? ", " : ""]), concat$6(namespaceSpecifiers), concat$6([isNamespaceFollowed ? ", " : ""]), printed);
+ } else {
+ parts.push("{}");
+ }
+
+ if (decl.source) {
+ parts.push(" from ", path.call(print, "source"));
+ }
+
+ parts.push(semi);
+ }
+
+ return concat$6(parts);
+}
+
+function printFlowDeclaration(path, parts) {
+ var parentExportDecl = getParentExportDeclaration$1(path);
+
+ if (parentExportDecl) {
+ assert$1.strictEqual(parentExportDecl.type, "DeclareExportDeclaration");
+ } else {
+ // If the parent node has type DeclareExportDeclaration, then it
+ // will be responsible for printing the "declare" token. Otherwise
+ // it needs to be printed with this non-exported declaration node.
+ parts.unshift("declare ");
+ }
+
+ return concat$6(parts);
+}
+
+function printTypeScriptModifiers(path, options, print) {
+ var n = path.getValue();
+
+ if (!n.modifiers || !n.modifiers.length) {
+ return "";
+ }
+
+ return concat$6([join$4(" ", path.map(print, "modifiers")), " "]);
+}
+
+function printTypeParameters(path, options, print, paramsKey) {
+ var n = path.getValue();
+
+ if (!n[paramsKey]) {
+ return "";
+ } // for TypeParameterDeclaration typeParameters is a single node
+
+
+ if (!Array.isArray(n[paramsKey])) {
+ return path.call(print, paramsKey);
+ }
+
+ var grandparent = path.getNode(2);
+ var greatGreatGrandParent = path.getNode(4);
+ var isParameterInTestCall = grandparent != null && isTestCall$1(grandparent);
+ var shouldInline = isParameterInTestCall || n[paramsKey].length === 0 || n[paramsKey].length === 1 && (shouldHugType(n[paramsKey][0]) || n[paramsKey][0].type === "GenericTypeAnnotation" && shouldHugType(n[paramsKey][0].id) || n[paramsKey][0].type === "TSTypeReference" && shouldHugType(n[paramsKey][0].typeName) || n[paramsKey][0].type === "NullableTypeAnnotation" || // See https://github.com/prettier/prettier/pull/6467 for the context.
+ greatGreatGrandParent && greatGreatGrandParent.type === "VariableDeclarator" && grandparent && grandparent.type === "TSTypeAnnotation" && n[paramsKey][0].type !== "TSUnionType" && n[paramsKey][0].type !== "UnionTypeAnnotation" && n[paramsKey][0].type !== "TSConditionalType" && n[paramsKey][0].type !== "TSMappedType");
+
+ if (shouldInline) {
+ return concat$6(["<", join$4(", ", path.map(print, paramsKey)), ">"]);
+ }
+
+ return group$2(concat$6(["<", indent$3(concat$6([softline$2, join$4(concat$6([",", line$2]), path.map(print, paramsKey))])), ifBreak$1(options.parser !== "typescript" && shouldPrintComma(options, "all") ? "," : ""), softline$2, ">"]));
+}
+
+function printClass(path, options, print) {
+ var n = path.getValue();
+ var parts = [];
+
+ if (n.abstract) {
+ parts.push("abstract ");
+ }
+
+ parts.push("class");
+
+ if (n.id) {
+ parts.push(" ", path.call(print, "id"));
+ }
+
+ parts.push(path.call(print, "typeParameters"));
+ var partsGroup = [];
+
+ if (n.superClass) {
+ var printed = concat$6(["extends ", path.call(print, "superClass"), path.call(print, "superTypeParameters")]); // Keep old behaviour of extends in same line
+ // If there is only on extends and there are not comments
+
+ if ((!n.implements || n.implements.length === 0) && (!n.superClass.comments || n.superClass.comments.length === 0)) {
+ parts.push(concat$6([" ", path.call(function (superClass) {
+ return comments.printComments(superClass, function () {
+ return printed;
+ }, options);
+ }, "superClass")]));
+ } else {
+ partsGroup.push(group$2(concat$6([line$2, path.call(function (superClass) {
+ return comments.printComments(superClass, function () {
+ return printed;
+ }, options);
+ }, "superClass")])));
+ }
+ } else if (n.extends && n.extends.length > 0) {
+ parts.push(" extends ", join$4(", ", path.map(print, "extends")));
+ }
+
+ if (n["mixins"] && n["mixins"].length > 0) {
+ partsGroup.push(line$2, "mixins ", group$2(indent$3(join$4(concat$6([",", line$2]), path.map(print, "mixins")))));
+ }
+
+ if (n["implements"] && n["implements"].length > 0) {
+ partsGroup.push(line$2, "implements", group$2(indent$3(concat$6([line$2, join$4(concat$6([",", line$2]), path.map(print, "implements"))]))));
+ }
+
+ if (partsGroup.length > 0) {
+ parts.push(group$2(indent$3(concat$6(partsGroup))));
+ }
+
+ if (n.body && n.body.comments && hasLeadingOwnLineComment$1(options.originalText, n.body, options)) {
+ parts.push(hardline$4);
+ } else {
+ parts.push(" ");
+ }
+
+ parts.push(path.call(print, "body"));
+ return parts;
+}
+
+function printOptionalToken(path) {
+ var node = path.getValue();
+
+ if (!node.optional || // It's an optional computed method parsed by typescript-estree.
+ // "?" is printed in `printMethod`.
+ node.type === "Identifier" && node === path.getParentNode().key) {
+ return "";
+ }
+
+ if (node.type === "OptionalCallExpression" || node.type === "OptionalMemberExpression" && node.computed) {
+ return "?.";
+ }
+
+ return "?";
+}
+
+function printMemberLookup(path, options, print) {
+ var property = path.call(print, "property");
+ var n = path.getValue();
+ var optional = printOptionalToken(path);
+
+ if (!n.computed) {
+ return concat$6([optional, ".", property]);
+ }
+
+ if (!n.property || isNumericLiteral$1(n.property)) {
+ return concat$6([optional, "[", property, "]"]);
+ }
+
+ return group$2(concat$6([optional, "[", indent$3(concat$6([softline$2, property])), softline$2, "]"]));
+}
+
+function printBindExpressionCallee(path, options, print) {
+ return concat$6(["::", path.call(print, "callee")]);
+} // We detect calls on member expressions specially to format a
+// common pattern better. The pattern we are looking for is this:
+//
+// arr
+// .map(x => x + 1)
+// .filter(x => x > 10)
+// .some(x => x % 2)
+//
+// The way it is structured in the AST is via a nested sequence of
+// MemberExpression and CallExpression. We need to traverse the AST
+// and make groups out of it to print it in the desired way.
+
+
+function printMemberChain(path, options, print) {
+ // The first phase is to linearize the AST by traversing it down.
+ //
+ // a().b()
+ // has the following AST structure:
+ // CallExpression(MemberExpression(CallExpression(Identifier)))
+ // and we transform it into
+ // [Identifier, CallExpression, MemberExpression, CallExpression]
+ var printedNodes = []; // Here we try to retain one typed empty line after each call expression or
+ // the first group whether it is in parentheses or not
+
+ function shouldInsertEmptyLineAfter(node) {
+ var originalText = options.originalText;
+ var nextCharIndex = getNextNonSpaceNonCommentCharacterIndex$2(originalText, node, options);
+ var nextChar = originalText.charAt(nextCharIndex); // if it is cut off by a parenthesis, we only account for one typed empty
+ // line after that parenthesis
+
+ if (nextChar == ")") {
+ return isNextLineEmptyAfterIndex$1(originalText, nextCharIndex + 1, options);
+ }
+
+ return isNextLineEmpty$2(originalText, node, options);
+ }
+
+ function rec(path) {
+ var node = path.getValue();
+
+ if ((node.type === "CallExpression" || node.type === "OptionalCallExpression") && (isMemberish$1(node.callee) || node.callee.type === "CallExpression" || node.callee.type === "OptionalCallExpression")) {
+ printedNodes.unshift({
+ node: node,
+ printed: concat$6([comments.printComments(path, function () {
+ return concat$6([printOptionalToken(path), printFunctionTypeParameters(path, options, print), printArgumentsList(path, options, print)]);
+ }, options), shouldInsertEmptyLineAfter(node) ? hardline$4 : ""])
+ });
+ path.call(function (callee) {
+ return rec(callee);
+ }, "callee");
+ } else if (isMemberish$1(node)) {
+ printedNodes.unshift({
+ node: node,
+ needsParens: needsParens_1(path, options),
+ printed: comments.printComments(path, function () {
+ return node.type === "OptionalMemberExpression" || node.type === "MemberExpression" ? printMemberLookup(path, options, print) : printBindExpressionCallee(path, options, print);
+ }, options)
+ });
+ path.call(function (object) {
+ return rec(object);
+ }, "object");
+ } else if (node.type === "TSNonNullExpression") {
+ printedNodes.unshift({
+ node: node,
+ printed: comments.printComments(path, function () {
+ return "!";
+ }, options)
+ });
+ path.call(function (expression) {
+ return rec(expression);
+ }, "expression");
+ } else {
+ printedNodes.unshift({
+ node: node,
+ printed: path.call(print)
+ });
+ }
+ } // Note: the comments of the root node have already been printed, so we
+ // need to extract this first call without printing them as they would
+ // if handled inside of the recursive call.
+
+
+ var node = path.getValue();
+ printedNodes.unshift({
+ node,
+ printed: concat$6([printOptionalToken(path), printFunctionTypeParameters(path, options, print), printArgumentsList(path, options, print)])
+ });
+ path.call(function (callee) {
+ return rec(callee);
+ }, "callee"); // Once we have a linear list of printed nodes, we want to create groups out
+ // of it.
+ //
+ // a().b.c().d().e
+ // will be grouped as
+ // [
+ // [Identifier, CallExpression],
+ // [MemberExpression, MemberExpression, CallExpression],
+ // [MemberExpression, CallExpression],
+ // [MemberExpression],
+ // ]
+ // so that we can print it as
+ // a()
+ // .b.c()
+ // .d()
+ // .e
+ // The first group is the first node followed by
+ // - as many CallExpression as possible
+ // < fn()()() >.something()
+ // - as many array accessors as possible
+ // < fn()[0][1][2] >.something()
+ // - then, as many MemberExpression as possible but the last one
+ // < this.items >.something()
+
+ var groups = [];
+ var currentGroup = [printedNodes[0]];
+ var i = 1;
+
+ for (; i < printedNodes.length; ++i) {
+ if (printedNodes[i].node.type === "TSNonNullExpression" || printedNodes[i].node.type === "OptionalCallExpression" || printedNodes[i].node.type === "CallExpression" || (printedNodes[i].node.type === "MemberExpression" || printedNodes[i].node.type === "OptionalMemberExpression") && printedNodes[i].node.computed && isNumericLiteral$1(printedNodes[i].node.property)) {
+ currentGroup.push(printedNodes[i]);
+ } else {
+ break;
+ }
+ }
+
+ if (printedNodes[0].node.type !== "CallExpression" && printedNodes[0].node.type !== "OptionalCallExpression") {
+ for (; i + 1 < printedNodes.length; ++i) {
+ if (isMemberish$1(printedNodes[i].node) && isMemberish$1(printedNodes[i + 1].node)) {
+ currentGroup.push(printedNodes[i]);
+ } else {
+ break;
+ }
+ }
+ }
+
+ groups.push(currentGroup);
+ currentGroup = []; // Then, each following group is a sequence of MemberExpression followed by
+ // a sequence of CallExpression. To compute it, we keep adding things to the
+ // group until we has seen a CallExpression in the past and reach a
+ // MemberExpression
+
+ var hasSeenCallExpression = false;
+
+ for (; i < printedNodes.length; ++i) {
+ if (hasSeenCallExpression && isMemberish$1(printedNodes[i].node)) {
+ // [0] should be appended at the end of the group instead of the
+ // beginning of the next one
+ if (printedNodes[i].node.computed && isNumericLiteral$1(printedNodes[i].node.property)) {
+ currentGroup.push(printedNodes[i]);
+ continue;
+ }
+
+ groups.push(currentGroup);
+ currentGroup = [];
+ hasSeenCallExpression = false;
+ }
+
+ if (printedNodes[i].node.type === "CallExpression" || printedNodes[i].node.type === "OptionalCallExpression") {
+ hasSeenCallExpression = true;
+ }
+
+ currentGroup.push(printedNodes[i]);
+
+ if (printedNodes[i].node.comments && printedNodes[i].node.comments.some(function (comment) {
+ return comment.trailing;
+ })) {
+ groups.push(currentGroup);
+ currentGroup = [];
+ hasSeenCallExpression = false;
+ }
+ }
+
+ if (currentGroup.length > 0) {
+ groups.push(currentGroup);
+ } // There are cases like Object.keys(), Observable.of(), _.values() where
+ // they are the subject of all the chained calls and therefore should
+ // be kept on the same line:
+ //
+ // Object.keys(items)
+ // .filter(x => x)
+ // .map(x => x)
+ //
+ // In order to detect those cases, we use an heuristic: if the first
+ // node is an identifier with the name starting with a capital
+ // letter or just a sequence of _$. The rationale is that they are
+ // likely to be factories.
+
+
+ function isFactory(name) {
+ return /^[A-Z]|^[_$]+$/.test(name);
+ } // In case the Identifier is shorter than tab width, we can keep the
+ // first call in a single line, if it's an ExpressionStatement.
+ //
+ // d3.scaleLinear()
+ // .domain([0, 100])
+ // .range([0, width]);
+ //
+
+
+ function isShort(name) {
+ return name.length <= options.tabWidth;
+ }
+
+ function shouldNotWrap(groups) {
+ var parent = path.getParentNode();
+ var isExpression = parent && parent.type === "ExpressionStatement";
+ var hasComputed = groups[1].length && groups[1][0].node.computed;
+
+ if (groups[0].length === 1) {
+ var firstNode = groups[0][0].node;
+ return firstNode.type === "ThisExpression" || firstNode.type === "Identifier" && (isFactory(firstNode.name) || isExpression && isShort(firstNode.name) || hasComputed);
+ }
+
+ var lastNode = getLast$2(groups[0]).node;
+ return (lastNode.type === "MemberExpression" || lastNode.type === "OptionalMemberExpression") && lastNode.property.type === "Identifier" && (isFactory(lastNode.property.name) || hasComputed);
+ }
+
+ var shouldMerge = groups.length >= 2 && !groups[1][0].node.comments && shouldNotWrap(groups);
+
+ function printGroup(printedGroup) {
+ var printed = printedGroup.map(function (tuple) {
+ return tuple.printed;
+ }); // Checks if the last node (i.e. the parent node) needs parens and print
+ // accordingly
+
+ if (printedGroup.length > 0 && printedGroup[printedGroup.length - 1].needsParens) {
+ return concat$6(["("].concat(_toConsumableArray$1(printed), [")"]));
+ }
+
+ return concat$6(printed);
+ }
+
+ function printIndentedGroup(groups) {
+ if (groups.length === 0) {
+ return "";
+ }
+
+ return indent$3(group$2(concat$6([hardline$4, join$4(hardline$4, groups.map(printGroup))])));
+ }
+
+ var printedGroups = groups.map(printGroup);
+ var oneLine = concat$6(printedGroups);
+ var cutoff = shouldMerge ? 3 : 2;
+ var flatGroups = groups.slice(0, cutoff).reduce(function (res, group) {
+ return res.concat(group);
+ }, []);
+ var hasComment = flatGroups.slice(1, -1).some(function (node) {
+ return hasLeadingComment$3(node.node);
+ }) || flatGroups.slice(0, -1).some(function (node) {
+ return hasTrailingComment$1(node.node);
+ }) || groups[cutoff] && hasLeadingComment$3(groups[cutoff][0].node); // If we only have a single `.`, we shouldn't do anything fancy and just
+ // render everything concatenated together.
+
+ if (groups.length <= cutoff && !hasComment) {
+ if (isLongCurriedCallExpression$1(path)) {
+ return oneLine;
+ }
+
+ return group$2(oneLine);
+ } // Find out the last node in the first group and check if it has an
+ // empty line after
+
+
+ var lastNodeBeforeIndent = getLast$2(shouldMerge ? groups.slice(1, 2)[0] : groups[0]).node;
+ var shouldHaveEmptyLineBeforeIndent = lastNodeBeforeIndent.type !== "CallExpression" && lastNodeBeforeIndent.type !== "OptionalCallExpression" && shouldInsertEmptyLineAfter(lastNodeBeforeIndent);
+ var expanded = concat$6([printGroup(groups[0]), shouldMerge ? concat$6(groups.slice(1, 2).map(printGroup)) : "", shouldHaveEmptyLineBeforeIndent ? hardline$4 : "", printIndentedGroup(groups.slice(shouldMerge ? 2 : 1))]);
+ var callExpressions = printedNodes.map(function (_ref) {
+ var node = _ref.node;
+ return node;
+ }).filter(isCallOrOptionalCallExpression$1); // We don't want to print in one line if there's:
+ // * A comment.
+ // * 3 or more chained calls.
+ // * Any group but the last one has a hard line.
+ // If the last group is a function it's okay to inline if it fits.
+
+ if (hasComment || callExpressions.length >= 3 || printedGroups.slice(0, -1).some(willBreak$1) ||
+ /**
+ * scopes.filter(scope => scope.value !== '').map((scope, i) => {
+ * // multi line content
+ * })
+ */
+ function (lastGroupDoc, lastGroupNode) {
+ return isCallOrOptionalCallExpression$1(lastGroupNode) && willBreak$1(lastGroupDoc);
+ }(getLast$2(printedGroups), getLast$2(getLast$2(groups)).node) && callExpressions.slice(0, -1).some(function (n) {
+ return n.arguments.some(isFunctionOrArrowExpression$1);
+ })) {
+ return group$2(expanded);
+ }
+
+ return concat$6([// We only need to check `oneLine` because if `expanded` is chosen
+ // that means that the parent group has already been broken
+ // naturally
+ willBreak$1(oneLine) || shouldHaveEmptyLineBeforeIndent ? breakParent$2 : "", conditionalGroup$1([oneLine, expanded])]);
+}
+
+function separatorNoWhitespace(isFacebookTranslationTag, child, childNode, nextNode) {
+ if (isFacebookTranslationTag) {
+ return "";
+ }
+
+ if (childNode.type === "JSXElement" && !childNode.closingElement || nextNode && nextNode.type === "JSXElement" && !nextNode.closingElement) {
+ return child.length === 1 ? softline$2 : hardline$4;
+ }
+
+ return softline$2;
+}
+
+function separatorWithWhitespace(isFacebookTranslationTag, child, childNode, nextNode) {
+ if (isFacebookTranslationTag) {
+ return hardline$4;
+ }
+
+ if (child.length === 1) {
+ return childNode.type === "JSXElement" && !childNode.closingElement || nextNode && nextNode.type === "JSXElement" && !nextNode.closingElement ? hardline$4 : softline$2;
+ }
+
+ return hardline$4;
+} // JSX Children are strange, mostly for two reasons:
+// 1. JSX reads newlines into string values, instead of skipping them like JS
+// 2. up to one whitespace between elements within a line is significant,
+// but not between lines.
+//
+// Leading, trailing, and lone whitespace all need to
+// turn themselves into the rather ugly `{' '}` when breaking.
+//
+// We print JSX using the `fill` doc primitive.
+// This requires that we give it an array of alternating
+// content and whitespace elements.
+// To ensure this we add dummy `""` content elements as needed.
+
+
+function printJSXChildren(path, options, print, jsxWhitespace, isFacebookTranslationTag) {
+ var n = path.getValue();
+ var children = []; // using `map` instead of `each` because it provides `i`
+
+ path.map(function (childPath, i) {
+ var child = childPath.getValue();
+
+ if (isLiteral$1(child)) {
+ var text = rawText$1(child); // Contains a non-whitespace character
+
+ if (isMeaningfulJSXText$1(child)) {
+ var words = text.split(matchJsxWhitespaceRegex$1); // Starts with whitespace
+
+ if (words[0] === "") {
+ children.push("");
+ words.shift();
+
+ if (/\n/.test(words[0])) {
+ var next = n.children[i + 1];
+ children.push(separatorWithWhitespace(isFacebookTranslationTag, words[1], child, next));
+ } else {
+ children.push(jsxWhitespace);
+ }
+
+ words.shift();
+ }
+
+ var endWhitespace; // Ends with whitespace
+
+ if (getLast$2(words) === "") {
+ words.pop();
+ endWhitespace = words.pop();
+ } // This was whitespace only without a new line.
+
+
+ if (words.length === 0) {
+ return;
+ }
+
+ words.forEach(function (word, i) {
+ if (i % 2 === 1) {
+ children.push(line$2);
+ } else {
+ children.push(word);
+ }
+ });
+
+ if (endWhitespace !== undefined) {
+ if (/\n/.test(endWhitespace)) {
+ var _next = n.children[i + 1];
+ children.push(separatorWithWhitespace(isFacebookTranslationTag, getLast$2(children), child, _next));
+ } else {
+ children.push(jsxWhitespace);
+ }
+ } else {
+ var _next2 = n.children[i + 1];
+ children.push(separatorNoWhitespace(isFacebookTranslationTag, getLast$2(children), child, _next2));
+ }
+ } else if (/\n/.test(text)) {
+ // Keep (up to one) blank line between tags/expressions/text.
+ // Note: We don't keep blank lines between text elements.
+ if (text.match(/\n/g).length > 1) {
+ children.push("");
+ children.push(hardline$4);
+ }
+ } else {
+ children.push("");
+ children.push(jsxWhitespace);
+ }
+ } else {
+ var printedChild = print(childPath);
+ children.push(printedChild);
+ var _next3 = n.children[i + 1];
+
+ var directlyFollowedByMeaningfulText = _next3 && isMeaningfulJSXText$1(_next3);
+
+ if (directlyFollowedByMeaningfulText) {
+ var firstWord = rawText$1(_next3).trim().split(matchJsxWhitespaceRegex$1)[0];
+ children.push(separatorNoWhitespace(isFacebookTranslationTag, firstWord, child, _next3));
+ } else {
+ children.push(hardline$4);
+ }
+ }
+ }, "children");
+ return children;
+} // JSX expands children from the inside-out, instead of the outside-in.
+// This is both to break children before attributes,
+// and to ensure that when children break, their parents do as well.
+//
+// Any element that is written without any newlines and fits on a single line
+// is left that way.
+// Not only that, any user-written-line containing multiple JSX siblings
+// should also be kept on one line if possible,
+// so each user-written-line is wrapped in its own group.
+//
+// Elements that contain newlines or don't fit on a single line (recursively)
+// are fully-split, using hardline and shouldBreak: true.
+//
+// To support that case properly, all leading and trailing spaces
+// are stripped from the list of children, and replaced with a single hardline.
+
+
+function printJSXElement(path, options, print) {
+ var n = path.getValue();
+
+ if (n.type === "JSXElement" && isEmptyJSXElement$1(n)) {
+ return concat$6([path.call(print, "openingElement"), path.call(print, "closingElement")]);
+ }
+
+ var openingLines = n.type === "JSXElement" ? path.call(print, "openingElement") : path.call(print, "openingFragment");
+ var closingLines = n.type === "JSXElement" ? path.call(print, "closingElement") : path.call(print, "closingFragment");
+
+ if (n.children.length === 1 && n.children[0].type === "JSXExpressionContainer" && (n.children[0].expression.type === "TemplateLiteral" || n.children[0].expression.type === "TaggedTemplateExpression")) {
+ return concat$6([openingLines, concat$6(path.map(print, "children")), closingLines]);
+ } // Convert `{" "}` to text nodes containing a space.
+ // This makes it easy to turn them into `jsxWhitespace` which
+ // can then print as either a space or `{" "}` when breaking.
+
+
+ n.children = n.children.map(function (child) {
+ if (isJSXWhitespaceExpression$1(child)) {
+ return {
+ type: "JSXText",
+ value: " ",
+ raw: " "
+ };
+ }
+
+ return child;
+ });
+ var containsTag = n.children.filter(isJSXNode$1).length > 0;
+ var containsMultipleExpressions = n.children.filter(function (child) {
+ return child.type === "JSXExpressionContainer";
+ }).length > 1;
+ var containsMultipleAttributes = n.type === "JSXElement" && n.openingElement.attributes.length > 1; // Record any breaks. Should never go from true to false, only false to true.
+
+ var forcedBreak = willBreak$1(openingLines) || containsTag || containsMultipleAttributes || containsMultipleExpressions;
+ var rawJsxWhitespace = options.singleQuote ? "{' '}" : '{" "}';
+ var jsxWhitespace = ifBreak$1(concat$6([rawJsxWhitespace, softline$2]), " ");
+ var isFacebookTranslationTag = n.openingElement && n.openingElement.name && n.openingElement.name.name === "fbt";
+ var children = printJSXChildren(path, options, print, jsxWhitespace, isFacebookTranslationTag);
+ var containsText = n.children.filter(function (child) {
+ return isMeaningfulJSXText$1(child);
+ }).length > 0; // We can end up we multiple whitespace elements with empty string
+ // content between them.
+ // We need to remove empty whitespace and softlines before JSX whitespace
+ // to get the correct output.
+
+ for (var i = children.length - 2; i >= 0; i--) {
+ var isPairOfEmptyStrings = children[i] === "" && children[i + 1] === "";
+ var isPairOfHardlines = children[i] === hardline$4 && children[i + 1] === "" && children[i + 2] === hardline$4;
+ var isLineFollowedByJSXWhitespace = (children[i] === softline$2 || children[i] === hardline$4) && children[i + 1] === "" && children[i + 2] === jsxWhitespace;
+ var isJSXWhitespaceFollowedByLine = children[i] === jsxWhitespace && children[i + 1] === "" && (children[i + 2] === softline$2 || children[i + 2] === hardline$4);
+ var isDoubleJSXWhitespace = children[i] === jsxWhitespace && children[i + 1] === "" && children[i + 2] === jsxWhitespace;
+ var isPairOfHardOrSoftLines = children[i] === softline$2 && children[i + 1] === "" && children[i + 2] === hardline$4 || children[i] === hardline$4 && children[i + 1] === "" && children[i + 2] === softline$2;
+
+ if (isPairOfHardlines && containsText || isPairOfEmptyStrings || isLineFollowedByJSXWhitespace || isDoubleJSXWhitespace || isPairOfHardOrSoftLines) {
+ children.splice(i, 2);
+ } else if (isJSXWhitespaceFollowedByLine) {
+ children.splice(i + 1, 2);
+ }
+ } // Trim trailing lines (or empty strings)
+
+
+ while (children.length && (isLineNext$1(getLast$2(children)) || isEmpty$1(getLast$2(children)))) {
+ children.pop();
+ } // Trim leading lines (or empty strings)
+
+
+ while (children.length && (isLineNext$1(children[0]) || isEmpty$1(children[0])) && (isLineNext$1(children[1]) || isEmpty$1(children[1]))) {
+ children.shift();
+ children.shift();
+ } // Tweak how we format children if outputting this element over multiple lines.
+ // Also detect whether we will force this element to output over multiple lines.
+
+
+ var multilineChildren = [];
+ children.forEach(function (child, i) {
+ // There are a number of situations where we need to ensure we display
+ // whitespace as `{" "}` when outputting this element over multiple lines.
+ if (child === jsxWhitespace) {
+ if (i === 1 && children[i - 1] === "") {
+ if (children.length === 2) {
+ // Solitary whitespace
+ multilineChildren.push(rawJsxWhitespace);
+ return;
+ } // Leading whitespace
+
+
+ multilineChildren.push(concat$6([rawJsxWhitespace, hardline$4]));
+ return;
+ } else if (i === children.length - 1) {
+ // Trailing whitespace
+ multilineChildren.push(rawJsxWhitespace);
+ return;
+ } else if (children[i - 1] === "" && children[i - 2] === hardline$4) {
+ // Whitespace after line break
+ multilineChildren.push(rawJsxWhitespace);
+ return;
+ }
+ }
+
+ multilineChildren.push(child);
+
+ if (willBreak$1(child)) {
+ forcedBreak = true;
+ }
+ }); // If there is text we use `fill` to fit as much onto each line as possible.
+ // When there is no text (just tags and expressions) we use `group`
+ // to output each on a separate line.
+
+ var content = containsText ? fill$2(multilineChildren) : group$2(concat$6(multilineChildren), {
+ shouldBreak: true
+ });
+ var multiLineElem = group$2(concat$6([openingLines, indent$3(concat$6([hardline$4, content])), hardline$4, closingLines]));
+
+ if (forcedBreak) {
+ return multiLineElem;
+ }
+
+ return conditionalGroup$1([group$2(concat$6([openingLines, concat$6(children), closingLines])), multiLineElem]);
+}
+
+function maybeWrapJSXElementInParens(path, elem, options) {
+ var parent = path.getParentNode();
+
+ if (!parent) {
+ return elem;
+ }
+
+ var NO_WRAP_PARENTS = {
+ ArrayExpression: true,
+ JSXAttribute: true,
+ JSXElement: true,
+ JSXExpressionContainer: true,
+ JSXFragment: true,
+ ExpressionStatement: true,
+ CallExpression: true,
+ OptionalCallExpression: true,
+ ConditionalExpression: true,
+ JsExpressionRoot: true
+ };
+
+ if (NO_WRAP_PARENTS[parent.type]) {
+ return elem;
+ }
+
+ var shouldBreak = matchAncestorTypes$1(path, ["ArrowFunctionExpression", "CallExpression", "JSXExpressionContainer"]) || matchAncestorTypes$1(path, ["ArrowFunctionExpression", "OptionalCallExpression", "JSXExpressionContainer"]);
+ var needsParens = needsParens_1(path, options);
+ return group$2(concat$6([needsParens ? "" : ifBreak$1("("), indent$3(concat$6([softline$2, elem])), softline$2, needsParens ? "" : ifBreak$1(")")]), {
+ shouldBreak
+ });
+}
+
+function shouldInlineLogicalExpression(node) {
+ if (node.type !== "LogicalExpression") {
+ return false;
+ }
+
+ if (node.right.type === "ObjectExpression" && node.right.properties.length !== 0) {
+ return true;
+ }
+
+ if (node.right.type === "ArrayExpression" && node.right.elements.length !== 0) {
+ return true;
+ }
+
+ if (isJSXNode$1(node.right)) {
+ return true;
+ }
+
+ return false;
+} // For binary expressions to be consistent, we need to group
+// subsequent operators with the same precedence level under a single
+// group. Otherwise they will be nested such that some of them break
+// onto new lines but not all. Operators with the same precedence
+// level should either all break or not. Because we group them by
+// precedence level and the AST is structured based on precedence
+// level, things are naturally broken up correctly, i.e. `&&` is
+// broken before `+`.
+
+
+function printBinaryishExpressions(path, print, options, isNested, isInsideParenthesis) {
+ var parts = [];
+ var node = path.getValue(); // We treat BinaryExpression and LogicalExpression nodes the same.
+
+ if (isBinaryish$1(node)) {
+ // Put all operators with the same precedence level in the same
+ // group. The reason we only need to do this with the `left`
+ // expression is because given an expression like `1 + 2 - 3`, it
+ // is always parsed like `((1 + 2) - 3)`, meaning the `left` side
+ // is where the rest of the expression will exist. Binary
+ // expressions on the right side mean they have a difference
+ // precedence level and should be treated as a separate group, so
+ // print them normally. (This doesn't hold for the `**` operator,
+ // which is unique in that it is right-associative.)
+ if (shouldFlatten$1(node.operator, node.left.operator)) {
+ // Flatten them out by recursively calling this function.
+ parts = parts.concat(path.call(function (left) {
+ return printBinaryishExpressions(left, print, options,
+ /* isNested */
+ true, isInsideParenthesis);
+ }, "left"));
+ } else {
+ parts.push(path.call(print, "left"));
+ }
+
+ var shouldInline = shouldInlineLogicalExpression(node);
+ var lineBeforeOperator = (node.operator === "|>" || node.type === "NGPipeExpression" || node.operator === "|" && options.parser === "__vue_expression") && !hasLeadingOwnLineComment$1(options.originalText, node.right, options);
+ var operator = node.type === "NGPipeExpression" ? "|" : node.operator;
+ var rightSuffix = node.type === "NGPipeExpression" && node.arguments.length !== 0 ? group$2(indent$3(concat$6([softline$2, ": ", join$4(concat$6([softline$2, ":", ifBreak$1(" ")]), path.map(print, "arguments").map(function (arg) {
+ return align$1(2, group$2(arg));
+ }))]))) : "";
+ var right = shouldInline ? concat$6([operator, " ", path.call(print, "right"), rightSuffix]) : concat$6([lineBeforeOperator ? softline$2 : "", operator, lineBeforeOperator ? " " : line$2, path.call(print, "right"), rightSuffix]); // If there's only a single binary expression, we want to create a group
+ // in order to avoid having a small right part like -1 be on its own line.
+
+ var parent = path.getParentNode();
+ var shouldGroup = !(isInsideParenthesis && node.type === "LogicalExpression") && parent.type !== node.type && node.left.type !== node.type && node.right.type !== node.type;
+ parts.push(" ", shouldGroup ? group$2(right) : right); // The root comments are already printed, but we need to manually print
+ // the other ones since we don't call the normal print on BinaryExpression,
+ // only for the left and right parts
+
+ if (isNested && node.comments) {
+ parts = comments.printComments(path, function () {
+ return concat$6(parts);
+ }, options);
+ }
+ } else {
+ // Our stopping case. Simply print the node normally.
+ parts.push(path.call(print));
+ }
+
+ return parts;
+}
+
+function printAssignmentRight(leftNode, rightNode, printedRight, options) {
+ if (hasLeadingOwnLineComment$1(options.originalText, rightNode, options)) {
+ return indent$3(concat$6([hardline$4, printedRight]));
+ }
+
+ var canBreak = isBinaryish$1(rightNode) && !shouldInlineLogicalExpression(rightNode) || rightNode.type === "ConditionalExpression" && isBinaryish$1(rightNode.test) && !shouldInlineLogicalExpression(rightNode.test) || rightNode.type === "StringLiteralTypeAnnotation" || rightNode.type === "ClassExpression" && rightNode.decorators && rightNode.decorators.length || (leftNode.type === "Identifier" || isStringLiteral$1(leftNode) || leftNode.type === "MemberExpression") && (isStringLiteral$1(rightNode) || isMemberExpressionChain$1(rightNode)) && // do not put values on a separate line from the key in json
+ options.parser !== "json" && options.parser !== "json5" || rightNode.type === "SequenceExpression";
+
+ if (canBreak) {
+ return group$2(indent$3(concat$6([line$2, printedRight])));
+ }
+
+ return concat$6([" ", printedRight]);
+}
+
+function printAssignment(leftNode, printedLeft, operator, rightNode, printedRight, options) {
+ if (!rightNode) {
+ return printedLeft;
+ }
+
+ var printed = printAssignmentRight(leftNode, rightNode, printedRight, options);
+ return group$2(concat$6([printedLeft, operator, printed]));
+}
+
+function adjustClause(node, clause, forceSpace) {
+ if (node.type === "EmptyStatement") {
+ return ";";
+ }
+
+ if (node.type === "BlockStatement" || forceSpace) {
+ return concat$6([" ", clause]);
+ }
+
+ return indent$3(concat$6([line$2, clause]));
+}
+
+function nodeStr(node, options, isFlowOrTypeScriptDirectiveLiteral) {
+ var raw = rawText$1(node);
+ var isDirectiveLiteral = isFlowOrTypeScriptDirectiveLiteral || node.type === "DirectiveLiteral";
+ return printString$1(raw, options, isDirectiveLiteral);
+}
+
+function printRegex(node) {
+ var flags = node.flags.split("").sort().join("");
+ return `/${node.pattern}/${flags}`;
+}
+
+function exprNeedsASIProtection(path, options) {
+ var node = path.getValue();
+ var maybeASIProblem = needsParens_1(path, options) || node.type === "ParenthesizedExpression" || node.type === "TypeCastExpression" || node.type === "ArrowFunctionExpression" && !shouldPrintParamsWithoutParens(path, options) || node.type === "ArrayExpression" || node.type === "ArrayPattern" || node.type === "UnaryExpression" && node.prefix && (node.operator === "+" || node.operator === "-") || node.type === "TemplateLiteral" || node.type === "TemplateElement" || isJSXNode$1(node) || node.type === "BindExpression" && !node.object || node.type === "RegExpLiteral" || node.type === "Literal" && node.pattern || node.type === "Literal" && node.regex;
+
+ if (maybeASIProblem) {
+ return true;
+ }
+
+ if (!hasNakedLeftSide$2(node)) {
+ return false;
+ }
+
+ return path.call.apply(path, [function (childPath) {
+ return exprNeedsASIProtection(childPath, options);
+ }].concat(getLeftSidePathName$2(path, node)));
+}
+
+function stmtNeedsASIProtection(path, options) {
+ var node = path.getNode();
+
+ if (node.type !== "ExpressionStatement") {
+ return false;
+ }
+
+ return path.call(function (childPath) {
+ return exprNeedsASIProtection(childPath, options);
+ }, "expression");
+}
+
+function shouldHugType(node) {
+ if (isSimpleFlowType$1(node) || isObjectType$1(node)) {
+ return true;
+ }
+
+ if (node.type === "UnionTypeAnnotation" || node.type === "TSUnionType") {
+ var voidCount = node.types.filter(function (n) {
+ return n.type === "VoidTypeAnnotation" || n.type === "TSVoidKeyword" || n.type === "NullLiteralTypeAnnotation" || n.type === "TSNullKeyword";
+ }).length;
+ var objectCount = node.types.filter(function (n) {
+ return n.type === "ObjectTypeAnnotation" || n.type === "TSTypeLiteral" || // This is a bit aggressive but captures Array<{x}>
+ n.type === "GenericTypeAnnotation" || n.type === "TSTypeReference";
+ }).length;
+
+ if (node.types.length - 1 === voidCount && objectCount > 0) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function shouldHugArguments(fun) {
+ return fun && fun.params && fun.params.length === 1 && !fun.params[0].comments && (fun.params[0].type === "ObjectPattern" || fun.params[0].type === "ArrayPattern" || fun.params[0].type === "Identifier" && fun.params[0].typeAnnotation && (fun.params[0].typeAnnotation.type === "TypeAnnotation" || fun.params[0].typeAnnotation.type === "TSTypeAnnotation") && isObjectType$1(fun.params[0].typeAnnotation.typeAnnotation) || fun.params[0].type === "FunctionTypeParam" && isObjectType$1(fun.params[0].typeAnnotation) || fun.params[0].type === "AssignmentPattern" && (fun.params[0].left.type === "ObjectPattern" || fun.params[0].left.type === "ArrayPattern") && (fun.params[0].right.type === "Identifier" || fun.params[0].right.type === "ObjectExpression" && fun.params[0].right.properties.length === 0 || fun.params[0].right.type === "ArrayExpression" && fun.params[0].right.elements.length === 0)) && !fun.rest;
+}
+
+function printArrayItems(path, options, printPath, print) {
+ var printedElements = [];
+ var separatorParts = [];
+ path.each(function (childPath) {
+ printedElements.push(concat$6(separatorParts));
+ printedElements.push(group$2(print(childPath)));
+ separatorParts = [",", line$2];
+
+ if (childPath.getValue() && isNextLineEmpty$2(options.originalText, childPath.getValue(), options)) {
+ separatorParts.push(softline$2);
+ }
+ }, printPath);
+ return concat$6(printedElements);
+}
+
+function willPrintOwnComments(path
+/*, options */
+) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ return (node && (isJSXNode$1(node) || hasFlowShorthandAnnotationComment$2(node) || parent && (parent.type === "CallExpression" || parent.type === "OptionalCallExpression") && (hasFlowAnnotationComment$1(node.leadingComments) || hasFlowAnnotationComment$1(node.trailingComments))) || parent && (parent.type === "JSXSpreadAttribute" || parent.type === "JSXSpreadChild" || parent.type === "UnionTypeAnnotation" || parent.type === "TSUnionType" || (parent.type === "ClassDeclaration" || parent.type === "ClassExpression") && parent.superClass === node)) && !hasIgnoreComment$2(path);
+}
+
+function canAttachComment(node) {
+ return node.type && node.type !== "CommentBlock" && node.type !== "CommentLine" && node.type !== "Line" && node.type !== "Block" && node.type !== "EmptyStatement" && node.type !== "TemplateElement" && node.type !== "Import";
+}
+
+function printComment$1(commentPath, options) {
+ var comment = commentPath.getValue();
+
+ switch (comment.type) {
+ case "CommentBlock":
+ case "Block":
+ {
+ if (isIndentableBlockComment(comment)) {
+ var printed = printIndentableBlockComment(comment); // We need to prevent an edge case of a previous trailing comment
+ // printed as a `lineSuffix` which causes the comments to be
+ // interleaved. See https://github.com/prettier/prettier/issues/4412
+
+ if (comment.trailing && !hasNewline$3(options.originalText, options.locStart(comment), {
+ backwards: true
+ })) {
+ return concat$6([hardline$4, printed]);
+ }
+
+ return printed;
+ }
+
+ var isInsideFlowComment = options.originalText.substr(options.locEnd(comment) - 3, 3) === "*-/";
+ return "/*" + comment.value + (isInsideFlowComment ? "*-/" : "*/");
+ }
+
+ case "CommentLine":
+ case "Line":
+ // Print shebangs with the proper comment characters
+ if (options.originalText.slice(options.locStart(comment)).startsWith("#!")) {
+ return "#!" + comment.value.trimRight();
+ }
+
+ return "//" + comment.value.trimRight();
+
+ default:
+ throw new Error("Not a comment: " + JSON.stringify(comment));
+ }
+}
+
+function isIndentableBlockComment(comment) {
+ // If the comment has multiple lines and every line starts with a star
+ // we can fix the indentation of each line. The stars in the `/*` and
+ // `*/` delimiters are not included in the comment value, so add them
+ // back first.
+ var lines = `*${comment.value}*`.split("\n");
+ return lines.length > 1 && lines.every(function (line) {
+ return line.trim()[0] === "*";
+ });
+}
+
+function printIndentableBlockComment(comment) {
+ var lines = comment.value.split("\n");
+ return concat$6(["/*", join$4(hardline$4, lines.map(function (line, index) {
+ return index === 0 ? line.trimRight() : " " + (index < lines.length - 1 ? line.trim() : line.trimLeft());
+ })), "*/"]);
+}
+
+var printerEstree = {
+ preprocess: preprocess_1,
+ print: genericPrint,
+ embed: embed_1,
+ insertPragma: insertPragma$1,
+ massageAstNode: clean_1,
+ hasPrettierIgnore: hasPrettierIgnore$1,
+ willPrintOwnComments,
+ canAttachComment,
+ printComment: printComment$1,
+ isBlockComment: comments$1.isBlockComment,
+ handleComments: {
+ ownLine: comments$1.handleOwnLineComment,
+ endOfLine: comments$1.handleEndOfLineComment,
+ remaining: comments$1.handleRemainingComment
+ }
+};
+
+var _require$$0$builders$2 = doc.builders,
+ concat$7 = _require$$0$builders$2.concat,
+ hardline$5 = _require$$0$builders$2.hardline,
+ indent$4 = _require$$0$builders$2.indent,
+ join$5 = _require$$0$builders$2.join;
+
+function genericPrint$1(path, options, print) {
+ var node = path.getValue();
+
+ switch (node.type) {
+ case "JsonRoot":
+ return concat$7([path.call(print, "node"), hardline$5]);
+
+ case "ArrayExpression":
+ return node.elements.length === 0 ? "[]" : concat$7(["[", indent$4(concat$7([hardline$5, join$5(concat$7([",", hardline$5]), path.map(print, "elements"))])), hardline$5, "]"]);
+
+ case "ObjectExpression":
+ return node.properties.length === 0 ? "{}" : concat$7(["{", indent$4(concat$7([hardline$5, join$5(concat$7([",", hardline$5]), path.map(print, "properties"))])), hardline$5, "}"]);
+
+ case "ObjectProperty":
+ return concat$7([path.call(print, "key"), ": ", path.call(print, "value")]);
+
+ case "UnaryExpression":
+ return concat$7([node.operator === "+" ? "" : node.operator, path.call(print, "argument")]);
+
+ case "NullLiteral":
+ return "null";
+
+ case "BooleanLiteral":
+ return node.value ? "true" : "false";
+
+ case "StringLiteral":
+ case "NumericLiteral":
+ return JSON.stringify(node.value);
+
+ case "Identifier":
+ return JSON.stringify(node.name);
+
+ default:
+ /* istanbul ignore next */
+ throw new Error("unknown type: " + JSON.stringify(node.type));
+ }
+}
+
+function clean$1(node, newNode
+/*, parent*/
+) {
+ delete newNode.start;
+ delete newNode.end;
+ delete newNode.extra;
+ delete newNode.loc;
+ delete newNode.comments;
+ delete newNode.errors;
+
+ if (node.type === "Identifier") {
+ return {
+ type: "StringLiteral",
+ value: node.name
+ };
+ }
+
+ if (node.type === "UnaryExpression" && node.operator === "+") {
+ return newNode.argument;
+ }
+}
+
+var printerEstreeJson = {
+ preprocess: preprocess_1,
+ print: genericPrint$1,
+ massageAstNode: clean$1
+};
+
+var CATEGORY_COMMON = "Common"; // format based on https://github.com/prettier/prettier/blob/master/src/main/core-options.js
+
+var commonOptions = {
+ bracketSpacing: {
+ since: "0.0.0",
+ category: CATEGORY_COMMON,
+ type: "boolean",
+ default: true,
+ description: "Print spaces between brackets.",
+ oppositeDescription: "Do not print spaces between brackets."
+ },
+ singleQuote: {
+ since: "0.0.0",
+ category: CATEGORY_COMMON,
+ type: "boolean",
+ default: false,
+ description: "Use single quotes instead of double quotes."
+ },
+ proseWrap: {
+ since: "1.8.2",
+ category: CATEGORY_COMMON,
+ type: "choice",
+ default: [{
+ since: "1.8.2",
+ value: true
+ }, {
+ since: "1.9.0",
+ value: "preserve"
+ }],
+ description: "How to wrap prose.",
+ choices: [{
+ since: "1.9.0",
+ value: "always",
+ description: "Wrap prose if it exceeds the print width."
+ }, {
+ since: "1.9.0",
+ value: "never",
+ description: "Do not wrap prose."
+ }, {
+ since: "1.9.0",
+ value: "preserve",
+ description: "Wrap prose as-is."
+ }, {
+ value: false,
+ deprecated: "1.9.0",
+ redirect: "never"
+ }, {
+ value: true,
+ deprecated: "1.9.0",
+ redirect: "always"
+ }]
+ }
+};
+
+var CATEGORY_JAVASCRIPT = "JavaScript"; // format based on https://github.com/prettier/prettier/blob/master/src/main/core-options.js
+
+var options$2 = {
+ arrowParens: {
+ since: "1.9.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "choice",
+ default: "avoid",
+ description: "Include parentheses around a sole arrow function parameter.",
+ choices: [{
+ value: "avoid",
+ description: "Omit parens when possible. Example: `x => x`"
+ }, {
+ value: "always",
+ description: "Always include parens. Example: `(x) => x`"
+ }]
+ },
+ bracketSpacing: commonOptions.bracketSpacing,
+ jsxBracketSameLine: {
+ since: "0.17.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "boolean",
+ default: false,
+ description: "Put > on the last line instead of at a new line."
+ },
+ semi: {
+ since: "1.0.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "boolean",
+ default: true,
+ description: "Print semicolons.",
+ oppositeDescription: "Do not print semicolons, except at the beginning of lines which may need them."
+ },
+ singleQuote: commonOptions.singleQuote,
+ jsxSingleQuote: {
+ since: "1.15.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "boolean",
+ default: false,
+ description: "Use single quotes in JSX."
+ },
+ quoteProps: {
+ since: "1.17.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "choice",
+ default: "as-needed",
+ description: "Change when properties in objects are quoted.",
+ choices: [{
+ value: "as-needed",
+ description: "Only add quotes around object properties where required."
+ }, {
+ value: "consistent",
+ description: "If at least one property in an object requires quotes, quote all properties."
+ }, {
+ value: "preserve",
+ description: "Respect the input use of quotes in object properties."
+ }]
+ },
+ trailingComma: {
+ since: "0.0.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "choice",
+ default: [{
+ since: "0.0.0",
+ value: false
+ }, {
+ since: "0.19.0",
+ value: "none"
+ }],
+ description: "Print trailing commas wherever possible when multi-line.",
+ choices: [{
+ value: "none",
+ description: "No trailing commas."
+ }, {
+ value: "es5",
+ description: "Trailing commas where valid in ES5 (objects, arrays, etc.)"
+ }, {
+ value: "all",
+ description: "Trailing commas wherever possible (including function arguments)."
+ }, {
+ value: true,
+ deprecated: "0.19.0",
+ redirect: "es5"
+ }, {
+ value: false,
+ deprecated: "0.19.0",
+ redirect: "none"
+ }]
+ }
+};
+
+var createLanguage = function createLanguage(linguistData, transform) {
+ var language = {};
+
+ for (var key in linguistData) {
+ var newKey = key === "languageId" ? "linguistLanguageId" : key;
+ language[newKey] = linguistData[key];
+ }
+
+ return transform(language);
+};
+
+var name$2 = "JavaScript";
+var type = "programming";
+var tmScope = "source.js";
+var aceMode = "javascript";
+var codemirrorMode = "javascript";
+var codemirrorMimeType = "text/javascript";
+var color = "#f1e05a";
+var aliases = [
+ "js",
+ "node"
+];
+var extensions = [
+ ".js",
+ "._js",
+ ".bones",
+ ".es",
+ ".es6",
+ ".frag",
+ ".gs",
+ ".jake",
+ ".jsb",
+ ".jscad",
+ ".jsfl",
+ ".jsm",
+ ".jss",
+ ".mjs",
+ ".njs",
+ ".pac",
+ ".sjs",
+ ".ssjs",
+ ".xsjs",
+ ".xsjslib"
+];
+var filenames = [
+ "Jakefile"
+];
+var interpreters = [
+ "chakra",
+ "d8",
+ "js",
+ "node",
+ "rhino",
+ "v8",
+ "v8-shell"
+];
+var languageId = 183;
+var JavaScript = {
+ name: name$2,
+ type: type,
+ tmScope: tmScope,
+ aceMode: aceMode,
+ codemirrorMode: codemirrorMode,
+ codemirrorMimeType: codemirrorMimeType,
+ color: color,
+ aliases: aliases,
+ extensions: extensions,
+ filenames: filenames,
+ interpreters: interpreters,
+ languageId: languageId
+};
+
+var JavaScript$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$2,
+ type: type,
+ tmScope: tmScope,
+ aceMode: aceMode,
+ codemirrorMode: codemirrorMode,
+ codemirrorMimeType: codemirrorMimeType,
+ color: color,
+ aliases: aliases,
+ extensions: extensions,
+ filenames: filenames,
+ interpreters: interpreters,
+ languageId: languageId,
+ 'default': JavaScript
+});
+
+var name$3 = "JSX";
+var type$1 = "programming";
+var group$3 = "JavaScript";
+var extensions$1 = [
+ ".jsx"
+];
+var tmScope$1 = "source.js.jsx";
+var aceMode$1 = "javascript";
+var codemirrorMode$1 = "jsx";
+var codemirrorMimeType$1 = "text/jsx";
+var languageId$1 = 178;
+var JSX = {
+ name: name$3,
+ type: type$1,
+ group: group$3,
+ extensions: extensions$1,
+ tmScope: tmScope$1,
+ aceMode: aceMode$1,
+ codemirrorMode: codemirrorMode$1,
+ codemirrorMimeType: codemirrorMimeType$1,
+ languageId: languageId$1
+};
+
+var JSX$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$3,
+ type: type$1,
+ group: group$3,
+ extensions: extensions$1,
+ tmScope: tmScope$1,
+ aceMode: aceMode$1,
+ codemirrorMode: codemirrorMode$1,
+ codemirrorMimeType: codemirrorMimeType$1,
+ languageId: languageId$1,
+ 'default': JSX
+});
+
+var name$4 = "TypeScript";
+var type$2 = "programming";
+var color$1 = "#2b7489";
+var aliases$1 = [
+ "ts"
+];
+var interpreters$1 = [
+ "deno",
+ "ts-node"
+];
+var extensions$2 = [
+ ".ts"
+];
+var tmScope$2 = "source.ts";
+var aceMode$2 = "typescript";
+var codemirrorMode$2 = "javascript";
+var codemirrorMimeType$2 = "application/typescript";
+var languageId$2 = 378;
+var TypeScript = {
+ name: name$4,
+ type: type$2,
+ color: color$1,
+ aliases: aliases$1,
+ interpreters: interpreters$1,
+ extensions: extensions$2,
+ tmScope: tmScope$2,
+ aceMode: aceMode$2,
+ codemirrorMode: codemirrorMode$2,
+ codemirrorMimeType: codemirrorMimeType$2,
+ languageId: languageId$2
+};
+
+var TypeScript$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$4,
+ type: type$2,
+ color: color$1,
+ aliases: aliases$1,
+ interpreters: interpreters$1,
+ extensions: extensions$2,
+ tmScope: tmScope$2,
+ aceMode: aceMode$2,
+ codemirrorMode: codemirrorMode$2,
+ codemirrorMimeType: codemirrorMimeType$2,
+ languageId: languageId$2,
+ 'default': TypeScript
+});
+
+var name$5 = "TSX";
+var type$3 = "programming";
+var group$4 = "TypeScript";
+var extensions$3 = [
+ ".tsx"
+];
+var tmScope$3 = "source.tsx";
+var aceMode$3 = "javascript";
+var codemirrorMode$3 = "jsx";
+var codemirrorMimeType$3 = "text/jsx";
+var languageId$3 = 94901924;
+var TSX = {
+ name: name$5,
+ type: type$3,
+ group: group$4,
+ extensions: extensions$3,
+ tmScope: tmScope$3,
+ aceMode: aceMode$3,
+ codemirrorMode: codemirrorMode$3,
+ codemirrorMimeType: codemirrorMimeType$3,
+ languageId: languageId$3
+};
+
+var TSX$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$5,
+ type: type$3,
+ group: group$4,
+ extensions: extensions$3,
+ tmScope: tmScope$3,
+ aceMode: aceMode$3,
+ codemirrorMode: codemirrorMode$3,
+ codemirrorMimeType: codemirrorMimeType$3,
+ languageId: languageId$3,
+ 'default': TSX
+});
+
+var name$6 = "JSON";
+var type$4 = "data";
+var tmScope$4 = "source.json";
+var aceMode$4 = "json";
+var codemirrorMode$4 = "javascript";
+var codemirrorMimeType$4 = "application/json";
+var searchable = false;
+var extensions$4 = [
+ ".json",
+ ".avsc",
+ ".geojson",
+ ".gltf",
+ ".har",
+ ".ice",
+ ".JSON-tmLanguage",
+ ".jsonl",
+ ".mcmeta",
+ ".tfstate",
+ ".tfstate.backup",
+ ".topojson",
+ ".webapp",
+ ".webmanifest",
+ ".yy",
+ ".yyp"
+];
+var filenames$1 = [
+ ".arcconfig",
+ ".htmlhintrc",
+ ".tern-config",
+ ".tern-project",
+ ".watchmanconfig",
+ "composer.lock",
+ "mcmod.info"
+];
+var languageId$4 = 174;
+var _JSON = {
+ name: name$6,
+ type: type$4,
+ tmScope: tmScope$4,
+ aceMode: aceMode$4,
+ codemirrorMode: codemirrorMode$4,
+ codemirrorMimeType: codemirrorMimeType$4,
+ searchable: searchable,
+ extensions: extensions$4,
+ filenames: filenames$1,
+ languageId: languageId$4
+};
+
+var _JSON$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$6,
+ type: type$4,
+ tmScope: tmScope$4,
+ aceMode: aceMode$4,
+ codemirrorMode: codemirrorMode$4,
+ codemirrorMimeType: codemirrorMimeType$4,
+ searchable: searchable,
+ extensions: extensions$4,
+ filenames: filenames$1,
+ languageId: languageId$4,
+ 'default': _JSON
+});
+
+var name$7 = "JSON with Comments";
+var type$5 = "data";
+var group$5 = "JSON";
+var tmScope$5 = "source.js";
+var aceMode$5 = "javascript";
+var codemirrorMode$5 = "javascript";
+var codemirrorMimeType$5 = "text/javascript";
+var aliases$2 = [
+ "jsonc"
+];
+var extensions$5 = [
+ ".sublime-build",
+ ".sublime-commands",
+ ".sublime-completions",
+ ".sublime-keymap",
+ ".sublime-macro",
+ ".sublime-menu",
+ ".sublime-mousemap",
+ ".sublime-project",
+ ".sublime-settings",
+ ".sublime-theme",
+ ".sublime-workspace",
+ ".sublime_metrics",
+ ".sublime_session"
+];
+var filenames$2 = [
+ ".babelrc",
+ ".eslintrc.json",
+ ".jscsrc",
+ ".jshintrc",
+ ".jslintrc",
+ "jsconfig.json",
+ "language-configuration.json",
+ "tsconfig.json"
+];
+var languageId$5 = 423;
+var JSON_with_Comments = {
+ name: name$7,
+ type: type$5,
+ group: group$5,
+ tmScope: tmScope$5,
+ aceMode: aceMode$5,
+ codemirrorMode: codemirrorMode$5,
+ codemirrorMimeType: codemirrorMimeType$5,
+ aliases: aliases$2,
+ extensions: extensions$5,
+ filenames: filenames$2,
+ languageId: languageId$5
+};
+
+var JSON_with_Comments$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$7,
+ type: type$5,
+ group: group$5,
+ tmScope: tmScope$5,
+ aceMode: aceMode$5,
+ codemirrorMode: codemirrorMode$5,
+ codemirrorMimeType: codemirrorMimeType$5,
+ aliases: aliases$2,
+ extensions: extensions$5,
+ filenames: filenames$2,
+ languageId: languageId$5,
+ 'default': JSON_with_Comments
+});
+
+var name$8 = "JSON5";
+var type$6 = "data";
+var extensions$6 = [
+ ".json5"
+];
+var tmScope$6 = "source.js";
+var aceMode$6 = "javascript";
+var codemirrorMode$6 = "javascript";
+var codemirrorMimeType$6 = "application/json";
+var languageId$6 = 175;
+var JSON5 = {
+ name: name$8,
+ type: type$6,
+ extensions: extensions$6,
+ tmScope: tmScope$6,
+ aceMode: aceMode$6,
+ codemirrorMode: codemirrorMode$6,
+ codemirrorMimeType: codemirrorMimeType$6,
+ languageId: languageId$6
+};
+
+var JSON5$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$8,
+ type: type$6,
+ extensions: extensions$6,
+ tmScope: tmScope$6,
+ aceMode: aceMode$6,
+ codemirrorMode: codemirrorMode$6,
+ codemirrorMimeType: codemirrorMimeType$6,
+ languageId: languageId$6,
+ 'default': JSON5
+});
+
+var require$$0$1 = getCjsExportFromNamespace(JavaScript$1);
+
+var require$$1 = getCjsExportFromNamespace(JSX$1);
+
+var require$$2 = getCjsExportFromNamespace(TypeScript$1);
+
+var require$$3 = getCjsExportFromNamespace(TSX$1);
+
+var require$$4$1 = getCjsExportFromNamespace(_JSON$1);
+
+var require$$5 = getCjsExportFromNamespace(JSON_with_Comments$1);
+
+var require$$6 = getCjsExportFromNamespace(JSON5$1);
+
+var languages = [createLanguage(require$$0$1, function (data) {
+ return Object.assign(data, {
+ since: "0.0.0",
+ parsers: ["babel", "flow"],
+ vscodeLanguageIds: ["javascript", "mongo"],
+ interpreters: data.interpreters.concat(["nodejs"])
+ });
+}), createLanguage(require$$0$1, function (data) {
+ return Object.assign(data, {
+ name: "Flow",
+ since: "0.0.0",
+ parsers: ["babel", "flow"],
+ vscodeLanguageIds: ["javascript"],
+ aliases: [],
+ filenames: [],
+ extensions: [".js.flow"]
+ });
+}), createLanguage(require$$1, function (data) {
+ return Object.assign(data, {
+ since: "0.0.0",
+ parsers: ["babel", "flow"],
+ vscodeLanguageIds: ["javascriptreact"]
+ });
+}), createLanguage(require$$2, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["typescript"],
+ vscodeLanguageIds: ["typescript"]
+ });
+}), createLanguage(require$$3, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["typescript"],
+ vscodeLanguageIds: ["typescriptreact"]
+ });
+}), createLanguage(require$$4$1, function (data) {
+ return Object.assign(data, {
+ name: "JSON.stringify",
+ since: "1.13.0",
+ parsers: ["json-stringify"],
+ vscodeLanguageIds: ["json"],
+ extensions: [],
+ // .json file defaults to json instead of json-stringify
+ filenames: ["package.json", "package-lock.json", "composer.json"]
+ });
+}), createLanguage(require$$4$1, function (data) {
+ return Object.assign(data, {
+ since: "1.5.0",
+ parsers: ["json"],
+ vscodeLanguageIds: ["json"],
+ filenames: data.filenames.concat([".prettierrc"])
+ });
+}), createLanguage(require$$5, function (data) {
+ return Object.assign(data, {
+ since: "1.5.0",
+ parsers: ["json"],
+ vscodeLanguageIds: ["jsonc"],
+ filenames: data.filenames.concat([".eslintrc"])
+ });
+}), createLanguage(require$$6, function (data) {
+ return Object.assign(data, {
+ since: "1.13.0",
+ parsers: ["json5"],
+ vscodeLanguageIds: ["json5"]
+ });
+})];
+var printers = {
+ estree: printerEstree,
+ "estree-json": printerEstreeJson
+};
+var languageJs = {
+ languages,
+ options: options$2,
+ printers
+};
+
+var index = [
+ "a",
+ "abbr",
+ "acronym",
+ "address",
+ "applet",
+ "area",
+ "article",
+ "aside",
+ "audio",
+ "b",
+ "base",
+ "basefont",
+ "bdi",
+ "bdo",
+ "bgsound",
+ "big",
+ "blink",
+ "blockquote",
+ "body",
+ "br",
+ "button",
+ "canvas",
+ "caption",
+ "center",
+ "cite",
+ "code",
+ "col",
+ "colgroup",
+ "command",
+ "content",
+ "data",
+ "datalist",
+ "dd",
+ "del",
+ "details",
+ "dfn",
+ "dialog",
+ "dir",
+ "div",
+ "dl",
+ "dt",
+ "element",
+ "em",
+ "embed",
+ "fieldset",
+ "figcaption",
+ "figure",
+ "font",
+ "footer",
+ "form",
+ "frame",
+ "frameset",
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "h6",
+ "head",
+ "header",
+ "hgroup",
+ "hr",
+ "html",
+ "i",
+ "iframe",
+ "image",
+ "img",
+ "input",
+ "ins",
+ "isindex",
+ "kbd",
+ "keygen",
+ "label",
+ "legend",
+ "li",
+ "link",
+ "listing",
+ "main",
+ "map",
+ "mark",
+ "marquee",
+ "math",
+ "menu",
+ "menuitem",
+ "meta",
+ "meter",
+ "multicol",
+ "nav",
+ "nextid",
+ "nobr",
+ "noembed",
+ "noframes",
+ "noscript",
+ "object",
+ "ol",
+ "optgroup",
+ "option",
+ "output",
+ "p",
+ "param",
+ "picture",
+ "plaintext",
+ "pre",
+ "progress",
+ "q",
+ "rb",
+ "rbc",
+ "rp",
+ "rt",
+ "rtc",
+ "ruby",
+ "s",
+ "samp",
+ "script",
+ "section",
+ "select",
+ "shadow",
+ "slot",
+ "small",
+ "source",
+ "spacer",
+ "span",
+ "strike",
+ "strong",
+ "style",
+ "sub",
+ "summary",
+ "sup",
+ "svg",
+ "table",
+ "tbody",
+ "td",
+ "template",
+ "textarea",
+ "tfoot",
+ "th",
+ "thead",
+ "time",
+ "title",
+ "tr",
+ "track",
+ "tt",
+ "u",
+ "ul",
+ "var",
+ "video",
+ "wbr",
+ "xmp"
+];
+
+var htmlTagNames = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ 'default': index
+});
+
+var htmlTagNames$1 = getCjsExportFromNamespace(htmlTagNames);
+
+function clean$2(ast, newObj, parent) {
+ ["raw", // front-matter
+ "raws", "sourceIndex", "source", "before", "after", "trailingComma"].forEach(function (name) {
+ delete newObj[name];
+ });
+
+ if (ast.type === "yaml") {
+ delete newObj.value;
+ } // --insert-pragma
+
+
+ if (ast.type === "css-comment" && parent.type === "css-root" && parent.nodes.length !== 0 && ( // first non-front-matter comment
+ parent.nodes[0] === ast || (parent.nodes[0].type === "yaml" || parent.nodes[0].type === "toml") && parent.nodes[1] === ast)) {
+ /**
+ * something
+ *
+ * @format
+ */
+ delete newObj.text; // standalone pragma
+
+ if (/^\*\s*@(format|prettier)\s*$/.test(ast.text)) {
+ return null;
+ }
+ }
+
+ if (ast.type === "media-query" || ast.type === "media-query-list" || ast.type === "media-feature-expression") {
+ delete newObj.value;
+ }
+
+ if (ast.type === "css-rule") {
+ delete newObj.params;
+ }
+
+ if (ast.type === "selector-combinator") {
+ newObj.value = newObj.value.replace(/\s+/g, " ");
+ }
+
+ if (ast.type === "media-feature") {
+ newObj.value = newObj.value.replace(/ /g, "");
+ }
+
+ if (ast.type === "value-word" && (ast.isColor && ast.isHex || ["initial", "inherit", "unset", "revert"].indexOf(newObj.value.replace().toLowerCase()) !== -1) || ast.type === "media-feature" || ast.type === "selector-root-invalid" || ast.type === "selector-pseudo") {
+ newObj.value = newObj.value.toLowerCase();
+ }
+
+ if (ast.type === "css-decl") {
+ newObj.prop = newObj.prop.toLowerCase();
+ }
+
+ if (ast.type === "css-atrule" || ast.type === "css-import") {
+ newObj.name = newObj.name.toLowerCase();
+ }
+
+ if (ast.type === "value-number") {
+ newObj.unit = newObj.unit.toLowerCase();
+ }
+
+ if ((ast.type === "media-feature" || ast.type === "media-keyword" || ast.type === "media-type" || ast.type === "media-unknown" || ast.type === "media-url" || ast.type === "media-value" || ast.type === "selector-attribute" || ast.type === "selector-string" || ast.type === "selector-class" || ast.type === "selector-combinator" || ast.type === "value-string") && newObj.value) {
+ newObj.value = cleanCSSStrings(newObj.value);
+ }
+
+ if (ast.type === "selector-attribute") {
+ newObj.attribute = newObj.attribute.trim();
+
+ if (newObj.namespace) {
+ if (typeof newObj.namespace === "string") {
+ newObj.namespace = newObj.namespace.trim();
+
+ if (newObj.namespace.length === 0) {
+ newObj.namespace = true;
+ }
+ }
+ }
+
+ if (newObj.value) {
+ newObj.value = newObj.value.trim().replace(/^['"]|['"]$/g, "");
+ delete newObj.quoted;
+ }
+ }
+
+ if ((ast.type === "media-value" || ast.type === "media-type" || ast.type === "value-number" || ast.type === "selector-root-invalid" || ast.type === "selector-class" || ast.type === "selector-combinator" || ast.type === "selector-tag") && newObj.value) {
+ newObj.value = newObj.value.replace(/([\d.eE+-]+)([a-zA-Z]*)/g, function (match, numStr, unit) {
+ var num = Number(numStr);
+ return isNaN(num) ? match : num + unit.toLowerCase();
+ });
+ }
+
+ if (ast.type === "selector-tag") {
+ var lowercasedValue = ast.value.toLowerCase();
+
+ if (htmlTagNames$1.indexOf(lowercasedValue) !== -1) {
+ newObj.value = lowercasedValue;
+ }
+
+ if (["from", "to"].indexOf(lowercasedValue) !== -1) {
+ newObj.value = lowercasedValue;
+ }
+ } // Workaround when `postcss-values-parser` parse `not`, `and` or `or` keywords as `value-func`
+
+
+ if (ast.type === "css-atrule" && ast.name.toLowerCase() === "supports") {
+ delete newObj.value;
+ } // Workaround for SCSS nested properties
+
+
+ if (ast.type === "selector-unknown") {
+ delete newObj.value;
+ }
+}
+
+function cleanCSSStrings(value) {
+ return value.replace(/'/g, '"').replace(/\\([^a-fA-F\d])/g, "$1");
+}
+
+var clean_1$1 = clean$2;
+
+var _require$$0$builders$3 = doc.builders,
+ hardline$6 = _require$$0$builders$3.hardline,
+ literalline$3 = _require$$0$builders$3.literalline,
+ concat$8 = _require$$0$builders$3.concat,
+ markAsRoot$1 = _require$$0$builders$3.markAsRoot,
+ mapDoc$4 = doc.utils.mapDoc;
+
+function embed$1(path, print, textToDoc
+/*, options */
+) {
+ var node = path.getValue();
+
+ if (node.type === "yaml") {
+ return markAsRoot$1(concat$8(["---", hardline$6, node.value.trim() ? replaceNewlinesWithLiterallines(textToDoc(node.value, {
+ parser: "yaml"
+ })) : "", "---", hardline$6]));
+ }
+
+ return null;
+
+ function replaceNewlinesWithLiterallines(doc) {
+ return mapDoc$4(doc, function (currentDoc) {
+ return typeof currentDoc === "string" && currentDoc.includes("\n") ? concat$8(currentDoc.split(/(\n)/g).map(function (v, i) {
+ return i % 2 === 0 ? v : literalline$3;
+ })) : currentDoc;
+ });
+ }
+}
+
+var embed_1$1 = embed$1;
+
+var DELIMITER_MAP = {
+ "---": "yaml",
+ "+++": "toml"
+};
+
+function parse$3(text) {
+ var delimiterRegex = Object.keys(DELIMITER_MAP).map(escapeStringRegexp).join("|");
+ var match = text.match( // trailing spaces after delimiters are allowed
+ new RegExp(`^(${delimiterRegex})[^\\n\\S]*\\n(?:([\\s\\S]*?)\\n)?\\1[^\\n\\S]*(\\n|$)`));
+
+ if (match === null) {
+ return {
+ frontMatter: null,
+ content: text
+ };
+ }
+
+ var raw = match[0].replace(/\n$/, "");
+ var delimiter = match[1];
+ var value = match[2];
+ return {
+ frontMatter: {
+ type: DELIMITER_MAP[delimiter],
+ value,
+ raw
+ },
+ content: match[0].replace(/[^\n]/g, " ") + text.slice(match[0].length)
+ };
+}
+
+var frontMatter = parse$3;
+
+function hasPragma$1(text) {
+ return pragma.hasPragma(frontMatter(text).content);
+}
+
+function insertPragma$2(text) {
+ var _parseFrontMatter = frontMatter(text),
+ frontMatter$1 = _parseFrontMatter.frontMatter,
+ content = _parseFrontMatter.content;
+
+ return (frontMatter$1 ? frontMatter$1.raw + "\n\n" : "") + pragma.insertPragma(content);
+}
+
+var pragma$1 = {
+ hasPragma: hasPragma$1,
+ insertPragma: insertPragma$2
+};
+
+var colorAdjusterFunctions = ["red", "green", "blue", "alpha", "a", "rgb", "hue", "h", "saturation", "s", "lightness", "l", "whiteness", "w", "blackness", "b", "tint", "shade", "blend", "blenda", "contrast", "hsl", "hsla", "hwb", "hwba"];
+
+function getAncestorCounter(path, typeOrTypes) {
+ var types = [].concat(typeOrTypes);
+ var counter = -1;
+ var ancestorNode;
+
+ while (ancestorNode = path.getParentNode(++counter)) {
+ if (types.indexOf(ancestorNode.type) !== -1) {
+ return counter;
+ }
+ }
+
+ return -1;
+}
+
+function getAncestorNode(path, typeOrTypes) {
+ var counter = getAncestorCounter(path, typeOrTypes);
+ return counter === -1 ? null : path.getParentNode(counter);
+}
+
+function getPropOfDeclNode(path) {
+ var declAncestorNode = getAncestorNode(path, "css-decl");
+ return declAncestorNode && declAncestorNode.prop && declAncestorNode.prop.toLowerCase();
+}
+
+function isSCSS(parser, text) {
+ var hasExplicitParserChoice = parser === "less" || parser === "scss";
+ var IS_POSSIBLY_SCSS = /(\w\s*: [^}:]+|#){|@import[^\n]+(url|,)/;
+ return hasExplicitParserChoice ? parser === "scss" : IS_POSSIBLY_SCSS.test(text);
+}
+
+function isWideKeywords(value) {
+ return ["initial", "inherit", "unset", "revert"].indexOf(value.toLowerCase()) !== -1;
+}
+
+function isKeyframeAtRuleKeywords(path, value) {
+ var atRuleAncestorNode = getAncestorNode(path, "css-atrule");
+ return atRuleAncestorNode && atRuleAncestorNode.name && atRuleAncestorNode.name.toLowerCase().endsWith("keyframes") && ["from", "to"].indexOf(value.toLowerCase()) !== -1;
+}
+
+function maybeToLowerCase(value) {
+ return value.includes("$") || value.includes("@") || value.includes("#") || value.startsWith("%") || value.startsWith("--") || value.startsWith(":--") || value.includes("(") && value.includes(")") ? value : value.toLowerCase();
+}
+
+function insideValueFunctionNode(path, functionName) {
+ var funcAncestorNode = getAncestorNode(path, "value-func");
+ return funcAncestorNode && funcAncestorNode.value && funcAncestorNode.value.toLowerCase() === functionName;
+}
+
+function insideICSSRuleNode(path) {
+ var ruleAncestorNode = getAncestorNode(path, "css-rule");
+ return ruleAncestorNode && ruleAncestorNode.raws && ruleAncestorNode.raws.selector && (ruleAncestorNode.raws.selector.startsWith(":import") || ruleAncestorNode.raws.selector.startsWith(":export"));
+}
+
+function insideAtRuleNode(path, atRuleNameOrAtRuleNames) {
+ var atRuleNames = [].concat(atRuleNameOrAtRuleNames);
+ var atRuleAncestorNode = getAncestorNode(path, "css-atrule");
+ return atRuleAncestorNode && atRuleNames.indexOf(atRuleAncestorNode.name.toLowerCase()) !== -1;
+}
+
+function insideURLFunctionInImportAtRuleNode(path) {
+ var node = path.getValue();
+ var atRuleAncestorNode = getAncestorNode(path, "css-atrule");
+ return atRuleAncestorNode && atRuleAncestorNode.name === "import" && node.groups[0].value === "url" && node.groups.length === 2;
+}
+
+function isURLFunctionNode(node) {
+ return node.type === "value-func" && node.value.toLowerCase() === "url";
+}
+
+function isLastNode(path, node) {
+ var parentNode = path.getParentNode();
+
+ if (!parentNode) {
+ return false;
+ }
+
+ var nodes = parentNode.nodes;
+ return nodes && nodes.indexOf(node) === nodes.length - 1;
+}
+
+function isHTMLTag(value) {
+ return htmlTagNames$1.indexOf(value.toLowerCase()) !== -1;
+}
+
+function isDetachedRulesetDeclarationNode(node) {
+ // If a Less file ends up being parsed with the SCSS parser, Less
+ // variable declarations will be parsed as atrules with names ending
+ // with a colon, so keep the original case then.
+ if (!node.selector) {
+ return false;
+ }
+
+ return typeof node.selector === "string" && /^@.+:.*$/.test(node.selector) || node.selector.value && /^@.+:.*$/.test(node.selector.value);
+}
+
+function isForKeywordNode(node) {
+ return node.type === "value-word" && ["from", "through", "end"].indexOf(node.value) !== -1;
+}
+
+function isIfElseKeywordNode(node) {
+ return node.type === "value-word" && ["and", "or", "not"].indexOf(node.value) !== -1;
+}
+
+function isEachKeywordNode(node) {
+ return node.type === "value-word" && node.value === "in";
+}
+
+function isMultiplicationNode(node) {
+ return node.type === "value-operator" && node.value === "*";
+}
+
+function isDivisionNode(node) {
+ return node.type === "value-operator" && node.value === "/";
+}
+
+function isAdditionNode(node) {
+ return node.type === "value-operator" && node.value === "+";
+}
+
+function isSubtractionNode(node) {
+ return node.type === "value-operator" && node.value === "-";
+}
+
+function isModuloNode(node) {
+ return node.type === "value-operator" && node.value === "%";
+}
+
+function isMathOperatorNode(node) {
+ return isMultiplicationNode(node) || isDivisionNode(node) || isAdditionNode(node) || isSubtractionNode(node) || isModuloNode(node);
+}
+
+function isEqualityOperatorNode(node) {
+ return node.type === "value-word" && ["==", "!="].indexOf(node.value) !== -1;
+}
+
+function isRelationalOperatorNode(node) {
+ return node.type === "value-word" && ["<", ">", "<=", ">="].indexOf(node.value) !== -1;
+}
+
+function isSCSSControlDirectiveNode(node) {
+ return node.type === "css-atrule" && ["if", "else", "for", "each", "while"].indexOf(node.name) !== -1;
+}
+
+function isSCSSNestedPropertyNode(node) {
+ if (!node.selector) {
+ return false;
+ }
+
+ return node.selector.replace(/\/\*.*?\*\//, "").replace(/\/\/.*?\n/, "").trim().endsWith(":");
+}
+
+function isDetachedRulesetCallNode(node) {
+ return node.raws && node.raws.params && /^\(\s*\)$/.test(node.raws.params);
+}
+
+function isTemplatePlaceholderNode(node) {
+ return node.name.startsWith("prettier-placeholder");
+}
+
+function isTemplatePropNode(node) {
+ return node.prop.startsWith("@prettier-placeholder");
+}
+
+function isPostcssSimpleVarNode(currentNode, nextNode) {
+ return currentNode.value === "$$" && currentNode.type === "value-func" && nextNode && nextNode.type === "value-word" && !nextNode.raws.before;
+}
+
+function hasComposesNode(node) {
+ return node.value && node.value.type === "value-root" && node.value.group && node.value.group.type === "value-value" && node.prop.toLowerCase() === "composes";
+}
+
+function hasParensAroundNode(node) {
+ return node.value && node.value.group && node.value.group.group && node.value.group.group.type === "value-paren_group" && node.value.group.group.open !== null && node.value.group.group.close !== null;
+}
+
+function hasEmptyRawBefore(node) {
+ return node.raws && node.raws.before === "";
+}
+
+function isKeyValuePairNode(node) {
+ return node.type === "value-comma_group" && node.groups && node.groups[1] && node.groups[1].type === "value-colon";
+}
+
+function isKeyValuePairInParenGroupNode(node) {
+ return node.type === "value-paren_group" && node.groups && node.groups[0] && isKeyValuePairNode(node.groups[0]);
+}
+
+function isSCSSMapItemNode(path) {
+ var node = path.getValue(); // Ignore empty item (i.e. `$key: ()`)
+
+ if (node.groups.length === 0) {
+ return false;
+ }
+
+ var parentParentNode = path.getParentNode(1); // Check open parens contain key/value pair (i.e. `(key: value)` and `(key: (value, other-value)`)
+
+ if (!isKeyValuePairInParenGroupNode(node) && !(parentParentNode && isKeyValuePairInParenGroupNode(parentParentNode))) {
+ return false;
+ }
+
+ var declNode = getAncestorNode(path, "css-decl"); // SCSS map declaration (i.e. `$map: (key: value, other-key: other-value)`)
+
+ if (declNode && declNode.prop && declNode.prop.startsWith("$")) {
+ return true;
+ } // List as value of key inside SCSS map (i.e. `$map: (key: (value other-value other-other-value))`)
+
+
+ if (isKeyValuePairInParenGroupNode(parentParentNode)) {
+ return true;
+ } // SCSS Map is argument of function (i.e. `func((key: value, other-key: other-value))`)
+
+
+ if (parentParentNode.type === "value-func") {
+ return true;
+ }
+
+ return false;
+}
+
+function isInlineValueCommentNode(node) {
+ return node.type === "value-comment" && node.inline;
+}
+
+function isHashNode(node) {
+ return node.type === "value-word" && node.value === "#";
+}
+
+function isLeftCurlyBraceNode(node) {
+ return node.type === "value-word" && node.value === "{";
+}
+
+function isRightCurlyBraceNode(node) {
+ return node.type === "value-word" && node.value === "}";
+}
+
+function isWordNode(node) {
+ return ["value-word", "value-atword"].indexOf(node.type) !== -1;
+}
+
+function isColonNode(node) {
+ return node.type === "value-colon";
+}
+
+function isMediaAndSupportsKeywords(node) {
+ return node.value && ["not", "and", "or"].indexOf(node.value.toLowerCase()) !== -1;
+}
+
+function isColorAdjusterFuncNode(node) {
+ if (node.type !== "value-func") {
+ return false;
+ }
+
+ return colorAdjusterFunctions.indexOf(node.value.toLowerCase()) !== -1;
+}
+
+var utils$3 = {
+ getAncestorCounter,
+ getAncestorNode,
+ getPropOfDeclNode,
+ maybeToLowerCase,
+ insideValueFunctionNode,
+ insideICSSRuleNode,
+ insideAtRuleNode,
+ insideURLFunctionInImportAtRuleNode,
+ isKeyframeAtRuleKeywords,
+ isHTMLTag,
+ isWideKeywords,
+ isSCSS,
+ isLastNode,
+ isSCSSControlDirectiveNode,
+ isDetachedRulesetDeclarationNode,
+ isRelationalOperatorNode,
+ isEqualityOperatorNode,
+ isMultiplicationNode,
+ isDivisionNode,
+ isAdditionNode,
+ isSubtractionNode,
+ isModuloNode,
+ isMathOperatorNode,
+ isEachKeywordNode,
+ isForKeywordNode,
+ isURLFunctionNode,
+ isIfElseKeywordNode,
+ hasComposesNode,
+ hasParensAroundNode,
+ hasEmptyRawBefore,
+ isSCSSNestedPropertyNode,
+ isDetachedRulesetCallNode,
+ isTemplatePlaceholderNode,
+ isTemplatePropNode,
+ isPostcssSimpleVarNode,
+ isKeyValuePairNode,
+ isKeyValuePairInParenGroupNode,
+ isSCSSMapItemNode,
+ isInlineValueCommentNode,
+ isHashNode,
+ isLeftCurlyBraceNode,
+ isRightCurlyBraceNode,
+ isWordNode,
+ isColonNode,
+ isMediaAndSupportsKeywords,
+ isColorAdjusterFuncNode
+};
+
+var insertPragma$3 = pragma$1.insertPragma;
+var printNumber$2 = util.printNumber,
+ printString$2 = util.printString,
+ hasIgnoreComment$3 = util.hasIgnoreComment,
+ hasNewline$4 = util.hasNewline;
+var isNextLineEmpty$3 = utilShared.isNextLineEmpty;
+var _require$$3$builders = doc.builders,
+ concat$9 = _require$$3$builders.concat,
+ join$6 = _require$$3$builders.join,
+ line$3 = _require$$3$builders.line,
+ hardline$7 = _require$$3$builders.hardline,
+ softline$3 = _require$$3$builders.softline,
+ group$6 = _require$$3$builders.group,
+ fill$3 = _require$$3$builders.fill,
+ indent$5 = _require$$3$builders.indent,
+ dedent$2 = _require$$3$builders.dedent,
+ ifBreak$2 = _require$$3$builders.ifBreak,
+ removeLines$2 = doc.utils.removeLines;
+var getAncestorNode$1 = utils$3.getAncestorNode,
+ getPropOfDeclNode$1 = utils$3.getPropOfDeclNode,
+ maybeToLowerCase$1 = utils$3.maybeToLowerCase,
+ insideValueFunctionNode$1 = utils$3.insideValueFunctionNode,
+ insideICSSRuleNode$1 = utils$3.insideICSSRuleNode,
+ insideAtRuleNode$1 = utils$3.insideAtRuleNode,
+ insideURLFunctionInImportAtRuleNode$1 = utils$3.insideURLFunctionInImportAtRuleNode,
+ isKeyframeAtRuleKeywords$1 = utils$3.isKeyframeAtRuleKeywords,
+ isHTMLTag$1 = utils$3.isHTMLTag,
+ isWideKeywords$1 = utils$3.isWideKeywords,
+ isSCSS$1 = utils$3.isSCSS,
+ isLastNode$1 = utils$3.isLastNode,
+ isSCSSControlDirectiveNode$1 = utils$3.isSCSSControlDirectiveNode,
+ isDetachedRulesetDeclarationNode$1 = utils$3.isDetachedRulesetDeclarationNode,
+ isRelationalOperatorNode$1 = utils$3.isRelationalOperatorNode,
+ isEqualityOperatorNode$1 = utils$3.isEqualityOperatorNode,
+ isMultiplicationNode$1 = utils$3.isMultiplicationNode,
+ isDivisionNode$1 = utils$3.isDivisionNode,
+ isAdditionNode$1 = utils$3.isAdditionNode,
+ isSubtractionNode$1 = utils$3.isSubtractionNode,
+ isMathOperatorNode$1 = utils$3.isMathOperatorNode,
+ isEachKeywordNode$1 = utils$3.isEachKeywordNode,
+ isForKeywordNode$1 = utils$3.isForKeywordNode,
+ isURLFunctionNode$1 = utils$3.isURLFunctionNode,
+ isIfElseKeywordNode$1 = utils$3.isIfElseKeywordNode,
+ hasComposesNode$1 = utils$3.hasComposesNode,
+ hasParensAroundNode$1 = utils$3.hasParensAroundNode,
+ hasEmptyRawBefore$1 = utils$3.hasEmptyRawBefore,
+ isKeyValuePairNode$1 = utils$3.isKeyValuePairNode,
+ isDetachedRulesetCallNode$1 = utils$3.isDetachedRulesetCallNode,
+ isTemplatePlaceholderNode$1 = utils$3.isTemplatePlaceholderNode,
+ isTemplatePropNode$1 = utils$3.isTemplatePropNode,
+ isPostcssSimpleVarNode$1 = utils$3.isPostcssSimpleVarNode,
+ isSCSSMapItemNode$1 = utils$3.isSCSSMapItemNode,
+ isInlineValueCommentNode$1 = utils$3.isInlineValueCommentNode,
+ isHashNode$1 = utils$3.isHashNode,
+ isLeftCurlyBraceNode$1 = utils$3.isLeftCurlyBraceNode,
+ isRightCurlyBraceNode$1 = utils$3.isRightCurlyBraceNode,
+ isWordNode$1 = utils$3.isWordNode,
+ isColonNode$1 = utils$3.isColonNode,
+ isMediaAndSupportsKeywords$1 = utils$3.isMediaAndSupportsKeywords,
+ isColorAdjusterFuncNode$1 = utils$3.isColorAdjusterFuncNode;
+
+function shouldPrintComma$1(options) {
+ switch (options.trailingComma) {
+ case "all":
+ case "es5":
+ return true;
+
+ case "none":
+ default:
+ return false;
+ }
+}
+
+function genericPrint$2(path, options, print) {
+ var node = path.getValue();
+ /* istanbul ignore if */
+
+ if (!node) {
+ return "";
+ }
+
+ if (typeof node === "string") {
+ return node;
+ }
+
+ switch (node.type) {
+ case "yaml":
+ case "toml":
+ return concat$9([node.raw, hardline$7]);
+
+ case "css-root":
+ {
+ var nodes = printNodeSequence(path, options, print);
+
+ if (nodes.parts.length) {
+ return concat$9([nodes, hardline$7]);
+ }
+
+ return nodes;
+ }
+
+ case "css-comment":
+ {
+ if (node.raws.content) {
+ return node.raws.content;
+ }
+
+ var text = options.originalText.slice(options.locStart(node), options.locEnd(node));
+ var rawText = node.raws.text || node.text; // Workaround a bug where the location is off.
+ // https://github.com/postcss/postcss-scss/issues/63
+
+ if (text.indexOf(rawText) === -1) {
+ if (node.raws.inline) {
+ return concat$9(["// ", rawText]);
+ }
+
+ return concat$9(["/* ", rawText, " */"]);
+ }
+
+ return text;
+ }
+
+ case "css-rule":
+ {
+ return concat$9([path.call(print, "selector"), node.important ? " !important" : "", node.nodes ? concat$9([" {", node.nodes.length > 0 ? indent$5(concat$9([hardline$7, printNodeSequence(path, options, print)])) : "", hardline$7, "}", isDetachedRulesetDeclarationNode$1(node) ? ";" : ""]) : ";"]);
+ }
+
+ case "css-decl":
+ {
+ var parentNode = path.getParentNode();
+ return concat$9([node.raws.before.replace(/[\s;]/g, ""), insideICSSRuleNode$1(path) ? node.prop : maybeToLowerCase$1(node.prop), node.raws.between.trim() === ":" ? ":" : node.raws.between.trim(), node.extend ? "" : " ", hasComposesNode$1(node) ? removeLines$2(path.call(print, "value")) : path.call(print, "value"), node.raws.important ? node.raws.important.replace(/\s*!\s*important/i, " !important") : node.important ? " !important" : "", node.raws.scssDefault ? node.raws.scssDefault.replace(/\s*!default/i, " !default") : node.scssDefault ? " !default" : "", node.raws.scssGlobal ? node.raws.scssGlobal.replace(/\s*!global/i, " !global") : node.scssGlobal ? " !global" : "", node.nodes ? concat$9([" {", indent$5(concat$9([softline$3, printNodeSequence(path, options, print)])), softline$3, "}"]) : isTemplatePropNode$1(node) && !parentNode.raws.semicolon && options.originalText[options.locEnd(node) - 1] !== ";" ? "" : ";"]);
+ }
+
+ case "css-atrule":
+ {
+ var _parentNode = path.getParentNode();
+
+ return concat$9(["@", // If a Less file ends up being parsed with the SCSS parser, Less
+ // variable declarations will be parsed as at-rules with names ending
+ // with a colon, so keep the original case then.
+ isDetachedRulesetCallNode$1(node) || node.name.endsWith(":") ? node.name : maybeToLowerCase$1(node.name), node.params ? concat$9([isDetachedRulesetCallNode$1(node) ? "" : isTemplatePlaceholderNode$1(node) && /^\s*\n/.test(node.raws.afterName) ? /^\s*\n\s*\n/.test(node.raws.afterName) ? concat$9([hardline$7, hardline$7]) : hardline$7 : " ", path.call(print, "params")]) : "", node.selector ? indent$5(concat$9([" ", path.call(print, "selector")])) : "", node.value ? group$6(concat$9([" ", path.call(print, "value"), isSCSSControlDirectiveNode$1(node) ? hasParensAroundNode$1(node) ? " " : line$3 : ""])) : node.name === "else" ? " " : "", node.nodes ? concat$9([isSCSSControlDirectiveNode$1(node) ? "" : " ", "{", indent$5(concat$9([node.nodes.length > 0 ? softline$3 : "", printNodeSequence(path, options, print)])), softline$3, "}"]) : isTemplatePlaceholderNode$1(node) && !_parentNode.raws.semicolon && options.originalText[options.locEnd(node) - 1] !== ";" ? "" : ";"]);
+ }
+ // postcss-media-query-parser
+
+ case "media-query-list":
+ {
+ var parts = [];
+ path.each(function (childPath) {
+ var node = childPath.getValue();
+
+ if (node.type === "media-query" && node.value === "") {
+ return;
+ }
+
+ parts.push(childPath.call(print));
+ }, "nodes");
+ return group$6(indent$5(join$6(line$3, parts)));
+ }
+
+ case "media-query":
+ {
+ return concat$9([join$6(" ", path.map(print, "nodes")), isLastNode$1(path, node) ? "" : ","]);
+ }
+
+ case "media-type":
+ {
+ return adjustNumbers(adjustStrings(node.value, options));
+ }
+
+ case "media-feature-expression":
+ {
+ if (!node.nodes) {
+ return node.value;
+ }
+
+ return concat$9(["(", concat$9(path.map(print, "nodes")), ")"]);
+ }
+
+ case "media-feature":
+ {
+ return maybeToLowerCase$1(adjustStrings(node.value.replace(/ +/g, " "), options));
+ }
+
+ case "media-colon":
+ {
+ return concat$9([node.value, " "]);
+ }
+
+ case "media-value":
+ {
+ return adjustNumbers(adjustStrings(node.value, options));
+ }
+
+ case "media-keyword":
+ {
+ return adjustStrings(node.value, options);
+ }
+
+ case "media-url":
+ {
+ return adjustStrings(node.value.replace(/^url\(\s+/gi, "url(").replace(/\s+\)$/gi, ")"), options);
+ }
+
+ case "media-unknown":
+ {
+ return node.value;
+ }
+ // postcss-selector-parser
+
+ case "selector-root":
+ {
+ return group$6(concat$9([insideAtRuleNode$1(path, "custom-selector") ? concat$9([getAncestorNode$1(path, "css-atrule").customSelector, line$3]) : "", join$6(concat$9([",", insideAtRuleNode$1(path, ["extend", "custom-selector", "nest"]) ? line$3 : hardline$7]), path.map(print, "nodes"))]));
+ }
+
+ case "selector-selector":
+ {
+ return group$6(indent$5(concat$9(path.map(print, "nodes"))));
+ }
+
+ case "selector-comment":
+ {
+ return node.value;
+ }
+
+ case "selector-string":
+ {
+ return adjustStrings(node.value, options);
+ }
+
+ case "selector-tag":
+ {
+ var _parentNode2 = path.getParentNode();
+
+ var index = _parentNode2 && _parentNode2.nodes.indexOf(node);
+
+ var prevNode = index && _parentNode2.nodes[index - 1];
+ return concat$9([node.namespace ? concat$9([node.namespace === true ? "" : node.namespace.trim(), "|"]) : "", prevNode.type === "selector-nesting" ? node.value : adjustNumbers(isHTMLTag$1(node.value) || isKeyframeAtRuleKeywords$1(path, node.value) ? node.value.toLowerCase() : node.value)]);
+ }
+
+ case "selector-id":
+ {
+ return concat$9(["#", node.value]);
+ }
+
+ case "selector-class":
+ {
+ return concat$9([".", adjustNumbers(adjustStrings(node.value, options))]);
+ }
+
+ case "selector-attribute":
+ {
+ return concat$9(["[", node.namespace ? concat$9([node.namespace === true ? "" : node.namespace.trim(), "|"]) : "", node.attribute.trim(), node.operator ? node.operator : "", node.value ? quoteAttributeValue(adjustStrings(node.value.trim(), options), options) : "", node.insensitive ? " i" : "", "]"]);
+ }
+
+ case "selector-combinator":
+ {
+ if (node.value === "+" || node.value === ">" || node.value === "~" || node.value === ">>>") {
+ var _parentNode3 = path.getParentNode();
+
+ var _leading = _parentNode3.type === "selector-selector" && _parentNode3.nodes[0] === node ? "" : line$3;
+
+ return concat$9([_leading, node.value, isLastNode$1(path, node) ? "" : " "]);
+ }
+
+ var leading = node.value.trim().startsWith("(") ? line$3 : "";
+ var value = adjustNumbers(adjustStrings(node.value.trim(), options)) || line$3;
+ return concat$9([leading, value]);
+ }
+
+ case "selector-universal":
+ {
+ return concat$9([node.namespace ? concat$9([node.namespace === true ? "" : node.namespace.trim(), "|"]) : "", node.value]);
+ }
+
+ case "selector-pseudo":
+ {
+ return concat$9([maybeToLowerCase$1(node.value), node.nodes && node.nodes.length > 0 ? concat$9(["(", join$6(", ", path.map(print, "nodes")), ")"]) : ""]);
+ }
+
+ case "selector-nesting":
+ {
+ return node.value;
+ }
+
+ case "selector-unknown":
+ {
+ var ruleAncestorNode = getAncestorNode$1(path, "css-rule"); // Nested SCSS property
+
+ if (ruleAncestorNode && ruleAncestorNode.isSCSSNesterProperty) {
+ return adjustNumbers(adjustStrings(maybeToLowerCase$1(node.value), options));
+ }
+
+ return node.value;
+ }
+ // postcss-values-parser
+
+ case "value-value":
+ case "value-root":
+ {
+ return path.call(print, "group");
+ }
+
+ case "value-comment":
+ {
+ return concat$9([node.inline ? "//" : "/*", node.value, node.inline ? "" : "*/"]);
+ }
+
+ case "value-comma_group":
+ {
+ var _parentNode4 = path.getParentNode();
+
+ var parentParentNode = path.getParentNode(1);
+ var declAncestorProp = getPropOfDeclNode$1(path);
+ var isGridValue = declAncestorProp && _parentNode4.type === "value-value" && (declAncestorProp === "grid" || declAncestorProp.startsWith("grid-template"));
+ var atRuleAncestorNode = getAncestorNode$1(path, "css-atrule");
+ var isControlDirective = atRuleAncestorNode && isSCSSControlDirectiveNode$1(atRuleAncestorNode);
+ var printed = path.map(print, "groups");
+ var _parts = [];
+ var insideURLFunction = insideValueFunctionNode$1(path, "url");
+ var insideSCSSInterpolationInString = false;
+ var didBreak = false;
+
+ for (var i = 0; i < node.groups.length; ++i) {
+ _parts.push(printed[i]); // Ignore value inside `url()`
+
+
+ if (insideURLFunction) {
+ continue;
+ }
+
+ var iPrevNode = node.groups[i - 1];
+ var iNode = node.groups[i];
+ var iNextNode = node.groups[i + 1];
+ var iNextNextNode = node.groups[i + 2]; // Ignore after latest node (i.e. before semicolon)
+
+ if (!iNextNode) {
+ continue;
+ } // Ignore spaces before/after string interpolation (i.e. `"#{my-fn("_")}"`)
+
+
+ var isStartSCSSInterpolationInString = iNode.type === "value-string" && iNode.value.startsWith("#{");
+ var isEndingSCSSInterpolationInString = insideSCSSInterpolationInString && iNextNode.type === "value-string" && iNextNode.value.endsWith("}");
+
+ if (isStartSCSSInterpolationInString || isEndingSCSSInterpolationInString) {
+ insideSCSSInterpolationInString = !insideSCSSInterpolationInString;
+ continue;
+ }
+
+ if (insideSCSSInterpolationInString) {
+ continue;
+ } // Ignore colon (i.e. `:`)
+
+
+ if (isColonNode$1(iNode) || isColonNode$1(iNextNode)) {
+ continue;
+ } // Ignore `@` in Less (i.e. `@@var;`)
+
+
+ if (iNode.type === "value-atword" && iNode.value === "") {
+ continue;
+ } // Ignore `~` in Less (i.e. `content: ~"^//* some horrible but needed css hack";`)
+
+
+ if (iNode.value === "~") {
+ continue;
+ } // Ignore escape `\`
+
+
+ if (iNode.value && iNode.value.indexOf("\\") !== -1 && iNextNode && iNextNode.type !== "value-comment") {
+ continue;
+ } // Ignore escaped `/`
+
+
+ if (iPrevNode && iPrevNode.value && iPrevNode.value.indexOf("\\") === iPrevNode.value.length - 1 && iNode.type === "value-operator" && iNode.value === "/") {
+ continue;
+ } // Ignore `\` (i.e. `$variable: \@small;`)
+
+
+ if (iNode.value === "\\") {
+ continue;
+ } // Ignore `$$` (i.e. `background-color: $$(style)Color;`)
+
+
+ if (isPostcssSimpleVarNode$1(iNode, iNextNode)) {
+ continue;
+ } // Ignore spaces after `#` and after `{` and before `}` in SCSS interpolation (i.e. `#{variable}`)
+
+
+ if (isHashNode$1(iNode) || isLeftCurlyBraceNode$1(iNode) || isRightCurlyBraceNode$1(iNextNode) || isLeftCurlyBraceNode$1(iNextNode) && hasEmptyRawBefore$1(iNextNode) || isRightCurlyBraceNode$1(iNode) && hasEmptyRawBefore$1(iNextNode)) {
+ continue;
+ } // Ignore css variables and interpolation in SCSS (i.e. `--#{$var}`)
+
+
+ if (iNode.value === "--" && isHashNode$1(iNextNode)) {
+ continue;
+ } // Formatting math operations
+
+
+ var isMathOperator = isMathOperatorNode$1(iNode);
+ var isNextMathOperator = isMathOperatorNode$1(iNextNode); // Print spaces before and after math operators beside SCSS interpolation as is
+ // (i.e. `#{$var}+5`, `#{$var} +5`, `#{$var}+ 5`, `#{$var} + 5`)
+ // (i.e. `5+#{$var}`, `5 +#{$var}`, `5+ #{$var}`, `5 + #{$var}`)
+
+ if ((isMathOperator && isHashNode$1(iNextNode) || isNextMathOperator && isRightCurlyBraceNode$1(iNode)) && hasEmptyRawBefore$1(iNextNode)) {
+ continue;
+ } // Print spaces before and after addition and subtraction math operators as is in `calc` function
+ // due to the fact that it is not valid syntax
+ // (i.e. `calc(1px+1px)`, `calc(1px+ 1px)`, `calc(1px +1px)`, `calc(1px + 1px)`)
+
+
+ if (insideValueFunctionNode$1(path, "calc") && (isAdditionNode$1(iNode) || isAdditionNode$1(iNextNode) || isSubtractionNode$1(iNode) || isSubtractionNode$1(iNextNode)) && hasEmptyRawBefore$1(iNextNode)) {
+ continue;
+ } // Print spaces after `+` and `-` in color adjuster functions as is (e.g. `color(red l(+ 20%))`)
+ // Adjusters with signed numbers (e.g. `color(red l(+20%))`) output as-is.
+
+
+ var isColorAdjusterNode = (isAdditionNode$1(iNode) || isSubtractionNode$1(iNode)) && i === 0 && (iNextNode.type === "value-number" || iNextNode.isHex) && parentParentNode && isColorAdjusterFuncNode$1(parentParentNode) && !hasEmptyRawBefore$1(iNextNode);
+ var requireSpaceBeforeOperator = iNextNextNode && iNextNextNode.type === "value-func" || iNextNextNode && isWordNode$1(iNextNextNode) || iNode.type === "value-func" || isWordNode$1(iNode);
+ var requireSpaceAfterOperator = iNextNode.type === "value-func" || isWordNode$1(iNextNode) || iPrevNode && iPrevNode.type === "value-func" || iPrevNode && isWordNode$1(iPrevNode); // Formatting `/`, `+`, `-` sign
+
+ if (!(isMultiplicationNode$1(iNextNode) || isMultiplicationNode$1(iNode)) && !insideValueFunctionNode$1(path, "calc") && !isColorAdjusterNode && (isDivisionNode$1(iNextNode) && !requireSpaceBeforeOperator || isDivisionNode$1(iNode) && !requireSpaceAfterOperator || isAdditionNode$1(iNextNode) && !requireSpaceBeforeOperator || isAdditionNode$1(iNode) && !requireSpaceAfterOperator || isSubtractionNode$1(iNextNode) || isSubtractionNode$1(iNode)) && (hasEmptyRawBefore$1(iNextNode) || isMathOperator && (!iPrevNode || iPrevNode && isMathOperatorNode$1(iPrevNode)))) {
+ continue;
+ } // Add `hardline` after inline comment (i.e. `// comment\n foo: bar;`)
+
+
+ if (isInlineValueCommentNode$1(iNode)) {
+ _parts.push(hardline$7);
+
+ continue;
+ } // Handle keywords in SCSS control directive
+
+
+ if (isControlDirective && (isEqualityOperatorNode$1(iNextNode) || isRelationalOperatorNode$1(iNextNode) || isIfElseKeywordNode$1(iNextNode) || isEachKeywordNode$1(iNode) || isForKeywordNode$1(iNode))) {
+ _parts.push(" ");
+
+ continue;
+ } // At-rule `namespace` should be in one line
+
+
+ if (atRuleAncestorNode && atRuleAncestorNode.name.toLowerCase() === "namespace") {
+ _parts.push(" ");
+
+ continue;
+ } // Formatting `grid` property
+
+
+ if (isGridValue) {
+ if (iNode.source && iNextNode.source && iNode.source.start.line !== iNextNode.source.start.line) {
+ _parts.push(hardline$7);
+
+ didBreak = true;
+ } else {
+ _parts.push(" ");
+ }
+
+ continue;
+ } // Add `space` before next math operation
+ // Note: `grip` property have `/` delimiter and it is not math operation, so
+ // `grid` property handles above
+
+
+ if (isNextMathOperator) {
+ _parts.push(" ");
+
+ continue;
+ } // Be default all values go through `line`
+
+
+ _parts.push(line$3);
+ }
+
+ if (didBreak) {
+ _parts.unshift(hardline$7);
+ }
+
+ if (isControlDirective) {
+ return group$6(indent$5(concat$9(_parts)));
+ } // Indent is not needed for import url when url is very long
+ // and node has two groups
+ // when type is value-comma_group
+ // example @import url("verylongurl") projection,tv
+
+
+ if (insideURLFunctionInImportAtRuleNode$1(path)) {
+ return group$6(fill$3(_parts));
+ }
+
+ return group$6(indent$5(fill$3(_parts)));
+ }
+
+ case "value-paren_group":
+ {
+ var _parentNode5 = path.getParentNode();
+
+ if (_parentNode5 && isURLFunctionNode$1(_parentNode5) && (node.groups.length === 1 || node.groups.length > 0 && node.groups[0].type === "value-comma_group" && node.groups[0].groups.length > 0 && node.groups[0].groups[0].type === "value-word" && node.groups[0].groups[0].value.startsWith("data:"))) {
+ return concat$9([node.open ? path.call(print, "open") : "", join$6(",", path.map(print, "groups")), node.close ? path.call(print, "close") : ""]);
+ }
+
+ if (!node.open) {
+ var _printed = path.map(print, "groups");
+
+ var res = [];
+
+ for (var _i = 0; _i < _printed.length; _i++) {
+ if (_i !== 0) {
+ res.push(concat$9([",", line$3]));
+ }
+
+ res.push(_printed[_i]);
+ }
+
+ return group$6(indent$5(fill$3(res)));
+ }
+
+ var isSCSSMapItem = isSCSSMapItemNode$1(path);
+ return group$6(concat$9([node.open ? path.call(print, "open") : "", indent$5(concat$9([softline$3, join$6(concat$9([",", line$3]), path.map(function (childPath) {
+ var node = childPath.getValue();
+ var printed = print(childPath); // Key/Value pair in open paren already indented
+
+ if (isKeyValuePairNode$1(node) && node.type === "value-comma_group" && node.groups && node.groups[2] && node.groups[2].type === "value-paren_group") {
+ printed.contents.contents.parts[1] = group$6(printed.contents.contents.parts[1]);
+ return group$6(dedent$2(printed));
+ }
+
+ return printed;
+ }, "groups"))])), ifBreak$2(isSCSS$1(options.parser, options.originalText) && isSCSSMapItem && shouldPrintComma$1(options) ? "," : ""), softline$3, node.close ? path.call(print, "close") : ""]), {
+ shouldBreak: isSCSSMapItem
+ });
+ }
+
+ case "value-func":
+ {
+ return concat$9([node.value, insideAtRuleNode$1(path, "supports") && isMediaAndSupportsKeywords$1(node) ? " " : "", path.call(print, "group")]);
+ }
+
+ case "value-paren":
+ {
+ return node.value;
+ }
+
+ case "value-number":
+ {
+ return concat$9([printCssNumber(node.value), maybeToLowerCase$1(node.unit)]);
+ }
+
+ case "value-operator":
+ {
+ return node.value;
+ }
+
+ case "value-word":
+ {
+ if (node.isColor && node.isHex || isWideKeywords$1(node.value)) {
+ return node.value.toLowerCase();
+ }
+
+ return node.value;
+ }
+
+ case "value-colon":
+ {
+ return concat$9([node.value, // Don't add spaces on `:` in `url` function (i.e. `url(fbglyph: cross-outline, fig-white)`)
+ insideValueFunctionNode$1(path, "url") ? "" : line$3]);
+ }
+
+ case "value-comma":
+ {
+ return concat$9([node.value, " "]);
+ }
+
+ case "value-string":
+ {
+ return printString$2(node.raws.quote + node.value + node.raws.quote, options);
+ }
+
+ case "value-atword":
+ {
+ return concat$9(["@", node.value]);
+ }
+
+ case "value-unicode-range":
+ {
+ return node.value;
+ }
+
+ case "value-unknown":
+ {
+ return node.value;
+ }
+
+ default:
+ /* istanbul ignore next */
+ throw new Error(`Unknown postcss type ${JSON.stringify(node.type)}`);
+ }
+}
+
+function printNodeSequence(path, options, print) {
+ var node = path.getValue();
+ var parts = [];
+ var i = 0;
+ path.map(function (pathChild) {
+ var prevNode = node.nodes[i - 1];
+
+ if (prevNode && prevNode.type === "css-comment" && prevNode.text.trim() === "prettier-ignore") {
+ var childNode = pathChild.getValue();
+ parts.push(options.originalText.slice(options.locStart(childNode), options.locEnd(childNode)));
+ } else {
+ parts.push(pathChild.call(print));
+ }
+
+ if (i !== node.nodes.length - 1) {
+ if (node.nodes[i + 1].type === "css-comment" && !hasNewline$4(options.originalText, options.locStart(node.nodes[i + 1]), {
+ backwards: true
+ }) && node.nodes[i].type !== "yaml" && node.nodes[i].type !== "toml" || node.nodes[i + 1].type === "css-atrule" && node.nodes[i + 1].name === "else" && node.nodes[i].type !== "css-comment") {
+ parts.push(" ");
+ } else {
+ parts.push(hardline$7);
+
+ if (isNextLineEmpty$3(options.originalText, pathChild.getValue(), options) && node.nodes[i].type !== "yaml" && node.nodes[i].type !== "toml") {
+ parts.push(hardline$7);
+ }
+ }
+ }
+
+ i++;
+ }, "nodes");
+ return concat$9(parts);
+}
+
+var STRING_REGEX$1 = /(['"])(?:(?!\1)[^\\]|\\[\s\S])*\1/g;
+var NUMBER_REGEX = /(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?/g;
+var STANDARD_UNIT_REGEX = /[a-zA-Z]+/g;
+var WORD_PART_REGEX = /[$@]?[a-zA-Z_\u0080-\uFFFF][\w\-\u0080-\uFFFF]*/g;
+var ADJUST_NUMBERS_REGEX = RegExp(STRING_REGEX$1.source + `|` + `(${WORD_PART_REGEX.source})?` + `(${NUMBER_REGEX.source})` + `(${STANDARD_UNIT_REGEX.source})?`, "g");
+
+function adjustStrings(value, options) {
+ return value.replace(STRING_REGEX$1, function (match) {
+ return printString$2(match, options);
+ });
+}
+
+function quoteAttributeValue(value, options) {
+ var quote = options.singleQuote ? "'" : '"';
+ return value.includes('"') || value.includes("'") ? value : quote + value + quote;
+}
+
+function adjustNumbers(value) {
+ return value.replace(ADJUST_NUMBERS_REGEX, function (match, quote, wordPart, number, unit) {
+ return !wordPart && number ? (wordPart || "") + printCssNumber(number) + maybeToLowerCase$1(unit || "") : match;
+ });
+}
+
+function printCssNumber(rawNumber) {
+ return printNumber$2(rawNumber) // Remove trailing `.0`.
+ .replace(/\.0(?=$|e)/, "");
+}
+
+var printerPostcss = {
+ print: genericPrint$2,
+ embed: embed_1$1,
+ insertPragma: insertPragma$3,
+ hasPrettierIgnore: hasIgnoreComment$3,
+ massageAstNode: clean_1$1
+};
+
+var options$3 = {
+ singleQuote: commonOptions.singleQuote
+};
+
+var name$9 = "CSS";
+var type$7 = "markup";
+var tmScope$7 = "source.css";
+var aceMode$7 = "css";
+var codemirrorMode$7 = "css";
+var codemirrorMimeType$7 = "text/css";
+var color$2 = "#563d7c";
+var extensions$7 = [
+ ".css"
+];
+var languageId$7 = 50;
+var CSS = {
+ name: name$9,
+ type: type$7,
+ tmScope: tmScope$7,
+ aceMode: aceMode$7,
+ codemirrorMode: codemirrorMode$7,
+ codemirrorMimeType: codemirrorMimeType$7,
+ color: color$2,
+ extensions: extensions$7,
+ languageId: languageId$7
+};
+
+var CSS$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$9,
+ type: type$7,
+ tmScope: tmScope$7,
+ aceMode: aceMode$7,
+ codemirrorMode: codemirrorMode$7,
+ codemirrorMimeType: codemirrorMimeType$7,
+ color: color$2,
+ extensions: extensions$7,
+ languageId: languageId$7,
+ 'default': CSS
+});
+
+var name$a = "PostCSS";
+var type$8 = "markup";
+var tmScope$8 = "source.postcss";
+var group$7 = "CSS";
+var extensions$8 = [
+ ".pcss"
+];
+var aceMode$8 = "text";
+var languageId$8 = 262764437;
+var PostCSS = {
+ name: name$a,
+ type: type$8,
+ tmScope: tmScope$8,
+ group: group$7,
+ extensions: extensions$8,
+ aceMode: aceMode$8,
+ languageId: languageId$8
+};
+
+var PostCSS$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$a,
+ type: type$8,
+ tmScope: tmScope$8,
+ group: group$7,
+ extensions: extensions$8,
+ aceMode: aceMode$8,
+ languageId: languageId$8,
+ 'default': PostCSS
+});
+
+var name$b = "Less";
+var type$9 = "markup";
+var group$8 = "CSS";
+var extensions$9 = [
+ ".less"
+];
+var tmScope$9 = "source.css.less";
+var aceMode$9 = "less";
+var codemirrorMode$8 = "css";
+var codemirrorMimeType$8 = "text/css";
+var languageId$9 = 198;
+var Less = {
+ name: name$b,
+ type: type$9,
+ group: group$8,
+ extensions: extensions$9,
+ tmScope: tmScope$9,
+ aceMode: aceMode$9,
+ codemirrorMode: codemirrorMode$8,
+ codemirrorMimeType: codemirrorMimeType$8,
+ languageId: languageId$9
+};
+
+var Less$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$b,
+ type: type$9,
+ group: group$8,
+ extensions: extensions$9,
+ tmScope: tmScope$9,
+ aceMode: aceMode$9,
+ codemirrorMode: codemirrorMode$8,
+ codemirrorMimeType: codemirrorMimeType$8,
+ languageId: languageId$9,
+ 'default': Less
+});
+
+var name$c = "SCSS";
+var type$a = "markup";
+var tmScope$a = "source.css.scss";
+var group$9 = "CSS";
+var aceMode$a = "scss";
+var codemirrorMode$9 = "css";
+var codemirrorMimeType$9 = "text/x-scss";
+var extensions$a = [
+ ".scss"
+];
+var languageId$a = 329;
+var SCSS = {
+ name: name$c,
+ type: type$a,
+ tmScope: tmScope$a,
+ group: group$9,
+ aceMode: aceMode$a,
+ codemirrorMode: codemirrorMode$9,
+ codemirrorMimeType: codemirrorMimeType$9,
+ extensions: extensions$a,
+ languageId: languageId$a
+};
+
+var SCSS$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$c,
+ type: type$a,
+ tmScope: tmScope$a,
+ group: group$9,
+ aceMode: aceMode$a,
+ codemirrorMode: codemirrorMode$9,
+ codemirrorMimeType: codemirrorMimeType$9,
+ extensions: extensions$a,
+ languageId: languageId$a,
+ 'default': SCSS
+});
+
+var require$$0$2 = getCjsExportFromNamespace(CSS$1);
+
+var require$$1$1 = getCjsExportFromNamespace(PostCSS$1);
+
+var require$$2$1 = getCjsExportFromNamespace(Less$1);
+
+var require$$3$1 = getCjsExportFromNamespace(SCSS$1);
+
+var languages$1 = [createLanguage(require$$0$2, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["css"],
+ vscodeLanguageIds: ["css"]
+ });
+}), createLanguage(require$$1$1, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["css"],
+ vscodeLanguageIds: ["postcss"],
+ extensions: data.extensions.concat(".postcss")
+ });
+}), createLanguage(require$$2$1, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["less"],
+ vscodeLanguageIds: ["less"]
+ });
+}), createLanguage(require$$3$1, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["scss"],
+ vscodeLanguageIds: ["scss"]
+ });
+})];
+var printers$1 = {
+ postcss: printerPostcss
+};
+var languageCss = {
+ languages: languages$1,
+ options: options$3,
+ printers: printers$1
+};
+
+var _require$$0$builders$4 = doc.builders,
+ concat$a = _require$$0$builders$4.concat,
+ join$7 = _require$$0$builders$4.join,
+ softline$4 = _require$$0$builders$4.softline,
+ hardline$8 = _require$$0$builders$4.hardline,
+ line$4 = _require$$0$builders$4.line,
+ group$a = _require$$0$builders$4.group,
+ indent$6 = _require$$0$builders$4.indent,
+ ifBreak$3 = _require$$0$builders$4.ifBreak; // http://w3c.github.io/html/single-page.html#void-elements
+
+var voidTags = ["area", "base", "br", "col", "embed", "hr", "img", "input", "link", "meta", "param", "source", "track", "wbr"]; // Formatter based on @glimmerjs/syntax's built-in test formatter:
+// https://github.com/glimmerjs/glimmer-vm/blob/master/packages/%40glimmer/syntax/lib/generation/print.ts
+
+function printChildren(path, options, print) {
+ return concat$a(path.map(function (childPath, childIndex) {
+ var childNode = path.getValue();
+ var isFirstNode = childIndex === 0;
+ var isLastNode = childIndex == path.getParentNode(0).children.length - 1;
+ var isLastNodeInMultiNodeList = isLastNode && !isFirstNode;
+ var isWhitespace = isWhitespaceNode(childNode);
+
+ if (isWhitespace && isLastNodeInMultiNodeList) {
+ return print(childPath, options, print);
+ } else if (isFirstNode) {
+ return concat$a([softline$4, print(childPath, options, print)]);
+ }
+
+ return print(childPath, options, print);
+ }, "children"));
+}
+
+function print(path, options, print) {
+ var n = path.getValue();
+ /* istanbul ignore if*/
+
+ if (!n) {
+ return "";
+ }
+
+ switch (n.type) {
+ case "Block":
+ case "Program":
+ case "Template":
+ {
+ return group$a(concat$a(path.map(print, "body").filter(function (text) {
+ return text !== "";
+ })));
+ }
+
+ case "ElementNode":
+ {
+ var tagFirstChar = n.tag[0];
+ var isLocal = n.tag.indexOf(".") !== -1;
+ var isGlimmerComponent = tagFirstChar.toUpperCase() === tagFirstChar || isLocal;
+ var hasChildren = n.children.length > 0;
+ var hasNonWhitespaceChildren = n.children.some(function (n) {
+ return !isWhitespaceNode(n);
+ });
+ var isVoid = isGlimmerComponent && (!hasChildren || !hasNonWhitespaceChildren) || voidTags.indexOf(n.tag) !== -1;
+ var closeTagForNoBreak = isVoid ? concat$a([" />", softline$4]) : ">";
+ var closeTagForBreak = isVoid ? "/>" : ">";
+
+ var _getParams = function _getParams(path, print) {
+ return indent$6(concat$a([n.attributes.length ? line$4 : "", join$7(line$4, path.map(print, "attributes")), n.modifiers.length ? line$4 : "", join$7(line$4, path.map(print, "modifiers")), n.comments.length ? line$4 : "", join$7(line$4, path.map(print, "comments"))]));
+ };
+
+ var nextNode = getNextNode(path);
+ return concat$a([group$a(concat$a(["<", n.tag, _getParams(path, print), n.blockParams.length ? ` as |${n.blockParams.join(" ")}|` : "", ifBreak$3(softline$4, ""), ifBreak$3(closeTagForBreak, closeTagForNoBreak)])), !isVoid ? group$a(concat$a([hasNonWhitespaceChildren ? indent$6(printChildren(path, options, print)) : "", ifBreak$3(hasChildren ? hardline$8 : "", ""), concat$a(["</", n.tag, ">"])])) : "", nextNode && nextNode.type === "ElementNode" ? hardline$8 : ""]);
+ }
+
+ case "BlockStatement":
+ {
+ var pp = path.getParentNode(1);
+ var isElseIf = pp && pp.inverse && pp.inverse.body.length === 1 && pp.inverse.body[0] === n && pp.inverse.body[0].path.parts[0] === "if";
+ var hasElseIf = n.inverse && n.inverse.body.length === 1 && n.inverse.body[0].type === "BlockStatement" && n.inverse.body[0].path.parts[0] === "if";
+ var indentElse = hasElseIf ? function (a) {
+ return a;
+ } : indent$6;
+
+ if (n.inverse) {
+ return concat$a([isElseIf ? concat$a(["{{else ", printPathParams(path, print), "}}"]) : printOpenBlock(path, print), indent$6(concat$a([hardline$8, path.call(print, "program")])), n.inverse && !hasElseIf ? concat$a([hardline$8, "{{else}}"]) : "", n.inverse ? indentElse(concat$a([hardline$8, path.call(print, "inverse")])) : "", isElseIf ? "" : concat$a([hardline$8, printCloseBlock(path, print)])]);
+ } else if (isElseIf) {
+ return concat$a([concat$a(["{{else ", printPathParams(path, print), "}}"]), indent$6(concat$a([hardline$8, path.call(print, "program")]))]);
+ }
+
+ var _hasNonWhitespaceChildren = n.program.body.some(function (n) {
+ return !isWhitespaceNode(n);
+ });
+
+ return concat$a([printOpenBlock(path, print), group$a(concat$a([indent$6(concat$a([softline$4, path.call(print, "program")])), _hasNonWhitespaceChildren ? hardline$8 : softline$4, printCloseBlock(path, print)]))]);
+ }
+
+ case "ElementModifierStatement":
+ case "MustacheStatement":
+ {
+ var _pp = path.getParentNode(1);
+
+ var isConcat = _pp && _pp.type === "ConcatStatement";
+ return group$a(concat$a([n.escaped === false ? "{{{" : "{{", printPathParams(path, print, {
+ group: false
+ }), isConcat ? "" : softline$4, n.escaped === false ? "}}}" : "}}"]));
+ }
+
+ case "SubExpression":
+ {
+ var params = getParams(path, print);
+ var printedParams = params.length > 0 ? indent$6(concat$a([line$4, group$a(join$7(line$4, params))])) : "";
+ return group$a(concat$a(["(", printPath(path, print), printedParams, softline$4, ")"]));
+ }
+
+ case "AttrNode":
+ {
+ var isText = n.value.type === "TextNode";
+
+ if (isText && n.value.loc.start.column === n.value.loc.end.column) {
+ return concat$a([n.name]);
+ }
+
+ var value = path.call(print, "value");
+ var quotedValue = isText ? printStringLiteral(value.parts.join(), options) : value;
+ return concat$a([n.name, "=", quotedValue]);
+ }
+
+ case "ConcatStatement":
+ {
+ return concat$a(['"', group$a(indent$6(join$7(softline$4, path.map(function (partPath) {
+ return print(partPath);
+ }, "parts").filter(function (a) {
+ return a !== "";
+ })))), '"']);
+ }
+
+ case "Hash":
+ {
+ return concat$a([join$7(line$4, path.map(print, "pairs"))]);
+ }
+
+ case "HashPair":
+ {
+ return concat$a([n.key, "=", path.call(print, "value")]);
+ }
+
+ case "TextNode":
+ {
+ var maxLineBreaksToPreserve = 2;
+ var isFirstElement = !getPreviousNode(path);
+ var isLastElement = !getNextNode(path);
+ var isWhitespaceOnly = !/\S/.test(n.chars);
+ var lineBreaksCount = countNewLines(n.chars);
+ var hasBlockParent = path.getParentNode(0).type === "Block";
+ var hasElementParent = path.getParentNode(0).type === "ElementNode";
+ var hasTemplateParent = path.getParentNode(0).type === "Template";
+ var leadingLineBreaksCount = countLeadingNewLines(n.chars);
+ var trailingLineBreaksCount = countTrailingNewLines(n.chars);
+
+ if ((isFirstElement || isLastElement) && isWhitespaceOnly && (hasBlockParent || hasElementParent || hasTemplateParent)) {
+ return "";
+ }
+
+ if (isWhitespaceOnly && lineBreaksCount) {
+ leadingLineBreaksCount = Math.min(lineBreaksCount, maxLineBreaksToPreserve);
+ trailingLineBreaksCount = 0;
+ } else {
+ if (isNextNodeOfType(path, "ElementNode") || isNextNodeOfType(path, "BlockStatement")) {
+ trailingLineBreaksCount = Math.max(trailingLineBreaksCount, 1);
+ }
+
+ if (isPreviousNodeOfSomeType(path, ["ElementNode"]) || isPreviousNodeOfSomeType(path, ["BlockStatement"])) {
+ leadingLineBreaksCount = Math.max(leadingLineBreaksCount, 1);
+ }
+ }
+
+ var leadingSpace = "";
+ var trailingSpace = ""; // preserve a space inside of an attribute node where whitespace present,
+ // when next to mustache statement.
+
+ var inAttrNode = path.stack.indexOf("attributes") >= 0;
+
+ if (inAttrNode) {
+ var parentNode = path.getParentNode(0);
+
+ var _isConcat = parentNode.type === "ConcatStatement";
+
+ if (_isConcat) {
+ var parts = parentNode.parts;
+ var partIndex = parts.indexOf(n);
+
+ if (partIndex > 0) {
+ var partType = parts[partIndex - 1].type;
+ var isMustache = partType === "MustacheStatement";
+
+ if (isMustache) {
+ leadingSpace = " ";
+ }
+ }
+
+ if (partIndex < parts.length - 1) {
+ var _partType = parts[partIndex + 1].type;
+
+ var _isMustache = _partType === "MustacheStatement";
+
+ if (_isMustache) {
+ trailingSpace = " ";
+ }
+ }
+ }
+ } else {
+ if (trailingLineBreaksCount === 0 && isNextNodeOfType(path, "MustacheStatement")) {
+ trailingSpace = " ";
+ }
+
+ if (leadingLineBreaksCount === 0 && isPreviousNodeOfSomeType(path, ["MustacheStatement"])) {
+ leadingSpace = " ";
+ }
+
+ if (isFirstElement) {
+ leadingLineBreaksCount = 0;
+ leadingSpace = "";
+ }
+
+ if (isLastElement) {
+ trailingLineBreaksCount = 0;
+ trailingSpace = "";
+ }
+ }
+
+ return concat$a([].concat(_toConsumableArray$1(generateHardlines(leadingLineBreaksCount, maxLineBreaksToPreserve)), [n.chars.replace(/^[\s ]+/g, leadingSpace).replace(/[\s ]+$/, trailingSpace)], _toConsumableArray$1(generateHardlines(trailingLineBreaksCount, maxLineBreaksToPreserve))).filter(Boolean));
+ }
+
+ case "MustacheCommentStatement":
+ {
+ var dashes = n.value.indexOf("}}") > -1 ? "--" : "";
+ return concat$a(["{{!", dashes, n.value, dashes, "}}"]);
+ }
+
+ case "PathExpression":
+ {
+ return n.original;
+ }
+
+ case "BooleanLiteral":
+ {
+ return String(n.value);
+ }
+
+ case "CommentStatement":
+ {
+ return concat$a(["<!--", n.value, "-->"]);
+ }
+
+ case "StringLiteral":
+ {
+ return printStringLiteral(n.value, options);
+ }
+
+ case "NumberLiteral":
+ {
+ return String(n.value);
+ }
+
+ case "UndefinedLiteral":
+ {
+ return "undefined";
+ }
+
+ case "NullLiteral":
+ {
+ return "null";
+ }
+
+ /* istanbul ignore next */
+
+ default:
+ throw new Error("unknown glimmer type: " + JSON.stringify(n.type));
+ }
+}
+/**
+ * Prints a string literal with the correct surrounding quotes based on
+ * `options.singleQuote` and the number of escaped quotes contained in
+ * the string literal. This function is the glimmer equivalent of `printString`
+ * in `common/util`, but has differences because of the way escaped characters
+ * are treated in hbs string literals.
+ * @param {string} stringLiteral - the string literal value
+ * @param {object} options - the prettier options object
+ */
+
+
+function printStringLiteral(stringLiteral, options) {
+ var double = {
+ quote: '"',
+ regex: /"/g
+ };
+ var single = {
+ quote: "'",
+ regex: /'/g
+ };
+ var preferred = options.singleQuote ? single : double;
+ var alternate = preferred === single ? double : single;
+ var shouldUseAlternateQuote = false; // If `stringLiteral` contains at least one of the quote preferred for
+ // enclosing the string, we might want to enclose with the alternate quote
+ // instead, to minimize the number of escaped quotes.
+
+ if (stringLiteral.includes(preferred.quote) || stringLiteral.includes(alternate.quote)) {
+ var numPreferredQuotes = (stringLiteral.match(preferred.regex) || []).length;
+ var numAlternateQuotes = (stringLiteral.match(alternate.regex) || []).length;
+ shouldUseAlternateQuote = numPreferredQuotes > numAlternateQuotes;
+ }
+
+ var enclosingQuote = shouldUseAlternateQuote ? alternate : preferred;
+ var escapedStringLiteral = stringLiteral.replace(enclosingQuote.regex, `\\${enclosingQuote.quote}`);
+ return `${enclosingQuote.quote}${escapedStringLiteral}${enclosingQuote.quote}`;
+}
+
+function printPath(path, print) {
+ return path.call(print, "path");
+}
+
+function getParams(path, print) {
+ var node = path.getValue();
+ var parts = [];
+
+ if (node.params.length > 0) {
+ parts = parts.concat(path.map(print, "params"));
+ }
+
+ if (node.hash && node.hash.pairs.length > 0) {
+ parts.push(path.call(print, "hash"));
+ }
+
+ return parts;
+}
+
+function printPathParams(path, print, options) {
+ var parts = [];
+ options = Object.assign({
+ group: true
+ }, options || {});
+ parts.push(printPath(path, print));
+ parts = parts.concat(getParams(path, print));
+
+ if (!options.group) {
+ return indent$6(join$7(line$4, parts));
+ }
+
+ return indent$6(group$a(join$7(line$4, parts)));
+}
+
+function printBlockParams(path) {
+ var block = path.getValue();
+
+ if (!block.program || !block.program.blockParams.length) {
+ return "";
+ }
+
+ return concat$a([" as |", block.program.blockParams.join(" "), "|"]);
+}
+
+function printOpenBlock(path, print) {
+ return group$a(concat$a(["{{#", printPathParams(path, print), printBlockParams(path), softline$4, "}}"]));
+}
+
+function printCloseBlock(path, print) {
+ return concat$a(["{{/", path.call(print, "path"), "}}"]);
+}
+
+function isWhitespaceNode(node) {
+ return node.type === "TextNode" && !/\S/.test(node.chars);
+}
+
+function getPreviousNode(path) {
+ var node = path.getValue();
+ var parentNode = path.getParentNode(0);
+ var children = parentNode.children || parentNode.body;
+
+ if (children) {
+ var nodeIndex = children.indexOf(node);
+
+ if (nodeIndex > 0) {
+ var previousNode = children[nodeIndex - 1];
+ return previousNode;
+ }
+ }
+}
+
+function getNextNode(path) {
+ var node = path.getValue();
+ var parentNode = path.getParentNode(0);
+ var children = parentNode.children || parentNode.body;
+
+ if (children) {
+ var nodeIndex = children.indexOf(node);
+
+ if (nodeIndex < children.length) {
+ var nextNode = children[nodeIndex + 1];
+ return nextNode;
+ }
+ }
+}
+
+function isPreviousNodeOfSomeType(path, types) {
+ var previousNode = getPreviousNode(path);
+
+ if (previousNode) {
+ return types.some(function (type) {
+ return previousNode.type === type;
+ });
+ }
+
+ return false;
+}
+
+function isNextNodeOfType(path, type) {
+ var nextNode = getNextNode(path);
+ return nextNode && nextNode.type === type;
+}
+
+function clean$3(ast, newObj) {
+ delete newObj.loc;
+ delete newObj.selfClosing; // (Glimmer/HTML) ignore TextNode whitespace
+
+ if (ast.type === "TextNode") {
+ if (ast.chars.replace(/\s+/, "") === "") {
+ return null;
+ }
+
+ newObj.chars = ast.chars.replace(/^\s+/, "").replace(/\s+$/, "");
+ }
+}
+
+function countNewLines(string) {
+ /* istanbul ignore next */
+ string = typeof string === "string" ? string : "";
+ return string.split("\n").length - 1;
+}
+
+function countLeadingNewLines(string) {
+ /* istanbul ignore next */
+ string = typeof string === "string" ? string : "";
+ var newLines = (string.match(/^([^\S\r\n]*[\r\n])+/g) || [])[0] || "";
+ return countNewLines(newLines);
+}
+
+function countTrailingNewLines(string) {
+ /* istanbul ignore next */
+ string = typeof string === "string" ? string : "";
+ var newLines = (string.match(/([\r\n][^\S\r\n]*)+$/g) || [])[0] || "";
+ return countNewLines(newLines);
+}
+
+function generateHardlines() {
+ var number = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+ var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+ return new Array(Math.min(number, max)).fill(hardline$8);
+}
+
+var printerGlimmer = {
+ print,
+ massageAstNode: clean$3
+};
+
+var name$d = "Handlebars";
+var type$b = "markup";
+var group$b = "HTML";
+var aliases$3 = [
+ "hbs",
+ "htmlbars"
+];
+var extensions$b = [
+ ".handlebars",
+ ".hbs"
+];
+var tmScope$b = "text.html.handlebars";
+var aceMode$b = "handlebars";
+var languageId$b = 155;
+var Handlebars = {
+ name: name$d,
+ type: type$b,
+ group: group$b,
+ aliases: aliases$3,
+ extensions: extensions$b,
+ tmScope: tmScope$b,
+ aceMode: aceMode$b,
+ languageId: languageId$b
+};
+
+var Handlebars$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$d,
+ type: type$b,
+ group: group$b,
+ aliases: aliases$3,
+ extensions: extensions$b,
+ tmScope: tmScope$b,
+ aceMode: aceMode$b,
+ languageId: languageId$b,
+ 'default': Handlebars
+});
+
+var require$$0$3 = getCjsExportFromNamespace(Handlebars$1);
+
+var languages$2 = [createLanguage(require$$0$3, function (data) {
+ return Object.assign(data, {
+ since: null,
+ // unreleased
+ parsers: ["glimmer"],
+ vscodeLanguageIds: ["handlebars"]
+ });
+})];
+var printers$2 = {
+ glimmer: printerGlimmer
+};
+var languageHandlebars = {
+ languages: languages$2,
+ printers: printers$2
+};
+
+function hasPragma$2(text) {
+ return /^\s*#[^\n\S]*@(format|prettier)\s*(\n|$)/.test(text);
+}
+
+function insertPragma$4(text) {
+ return "# @format\n\n" + text;
+}
+
+var pragma$2 = {
+ hasPragma: hasPragma$2,
+ insertPragma: insertPragma$4
+};
+
+var _require$$0$builders$5 = doc.builders,
+ concat$b = _require$$0$builders$5.concat,
+ join$8 = _require$$0$builders$5.join,
+ hardline$9 = _require$$0$builders$5.hardline,
+ line$5 = _require$$0$builders$5.line,
+ softline$5 = _require$$0$builders$5.softline,
+ group$c = _require$$0$builders$5.group,
+ indent$7 = _require$$0$builders$5.indent,
+ ifBreak$4 = _require$$0$builders$5.ifBreak;
+var hasIgnoreComment$4 = util.hasIgnoreComment;
+var isNextLineEmpty$4 = utilShared.isNextLineEmpty;
+var insertPragma$5 = pragma$2.insertPragma;
+
+function genericPrint$3(path, options, print) {
+ var n = path.getValue();
+
+ if (!n) {
+ return "";
+ }
+
+ if (typeof n === "string") {
+ return n;
+ }
+
+ switch (n.kind) {
+ case "Document":
+ {
+ var parts = [];
+ path.map(function (pathChild, index) {
+ parts.push(concat$b([pathChild.call(print)]));
+
+ if (index !== n.definitions.length - 1) {
+ parts.push(hardline$9);
+
+ if (isNextLineEmpty$4(options.originalText, pathChild.getValue(), options)) {
+ parts.push(hardline$9);
+ }
+ }
+ }, "definitions");
+ return concat$b([concat$b(parts), hardline$9]);
+ }
+
+ case "OperationDefinition":
+ {
+ var hasOperation = options.originalText[options.locStart(n)] !== "{";
+ var hasName = !!n.name;
+ return concat$b([hasOperation ? n.operation : "", hasOperation && hasName ? concat$b([" ", path.call(print, "name")]) : "", n.variableDefinitions && n.variableDefinitions.length ? group$c(concat$b(["(", indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", ", "), softline$5]), path.map(print, "variableDefinitions"))])), softline$5, ")"])) : "", printDirectives(path, print, n), n.selectionSet ? !hasOperation && !hasName ? "" : " " : "", path.call(print, "selectionSet")]);
+ }
+
+ case "FragmentDefinition":
+ {
+ return concat$b(["fragment ", path.call(print, "name"), n.variableDefinitions && n.variableDefinitions.length ? group$c(concat$b(["(", indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", ", "), softline$5]), path.map(print, "variableDefinitions"))])), softline$5, ")"])) : "", " on ", path.call(print, "typeCondition"), printDirectives(path, print, n), " ", path.call(print, "selectionSet")]);
+ }
+
+ case "SelectionSet":
+ {
+ return concat$b(["{", indent$7(concat$b([hardline$9, join$8(hardline$9, path.call(function (selectionsPath) {
+ return printSequence(selectionsPath, options, print);
+ }, "selections"))])), hardline$9, "}"]);
+ }
+
+ case "Field":
+ {
+ return group$c(concat$b([n.alias ? concat$b([path.call(print, "alias"), ": "]) : "", path.call(print, "name"), n.arguments.length > 0 ? group$c(concat$b(["(", indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", ", "), softline$5]), path.call(function (argsPath) {
+ return printSequence(argsPath, options, print);
+ }, "arguments"))])), softline$5, ")"])) : "", printDirectives(path, print, n), n.selectionSet ? " " : "", path.call(print, "selectionSet")]));
+ }
+
+ case "Name":
+ {
+ return n.value;
+ }
+
+ case "StringValue":
+ {
+ if (n.block) {
+ return concat$b(['"""', hardline$9, join$8(hardline$9, n.value.replace(/"""/g, "\\$&").split("\n")), hardline$9, '"""']);
+ }
+
+ return concat$b(['"', n.value.replace(/["\\]/g, "\\$&").replace(/\n/g, "\\n"), '"']);
+ }
+
+ case "IntValue":
+ case "FloatValue":
+ case "EnumValue":
+ {
+ return n.value;
+ }
+
+ case "BooleanValue":
+ {
+ return n.value ? "true" : "false";
+ }
+
+ case "NullValue":
+ {
+ return "null";
+ }
+
+ case "Variable":
+ {
+ return concat$b(["$", path.call(print, "name")]);
+ }
+
+ case "ListValue":
+ {
+ return group$c(concat$b(["[", indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", ", "), softline$5]), path.map(print, "values"))])), softline$5, "]"]));
+ }
+
+ case "ObjectValue":
+ {
+ return group$c(concat$b(["{", options.bracketSpacing && n.fields.length > 0 ? " " : "", indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", ", "), softline$5]), path.map(print, "fields"))])), softline$5, ifBreak$4("", options.bracketSpacing && n.fields.length > 0 ? " " : ""), "}"]));
+ }
+
+ case "ObjectField":
+ case "Argument":
+ {
+ return concat$b([path.call(print, "name"), ": ", path.call(print, "value")]);
+ }
+
+ case "Directive":
+ {
+ return concat$b(["@", path.call(print, "name"), n.arguments.length > 0 ? group$c(concat$b(["(", indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", ", "), softline$5]), path.call(function (argsPath) {
+ return printSequence(argsPath, options, print);
+ }, "arguments"))])), softline$5, ")"])) : ""]);
+ }
+
+ case "NamedType":
+ {
+ return path.call(print, "name");
+ }
+
+ case "VariableDefinition":
+ {
+ return concat$b([path.call(print, "variable"), ": ", path.call(print, "type"), n.defaultValue ? concat$b([" = ", path.call(print, "defaultValue")]) : "", printDirectives(path, print, n)]);
+ }
+
+ case "TypeExtensionDefinition":
+ {
+ return concat$b(["extend ", path.call(print, "definition")]);
+ }
+
+ case "ObjectTypeExtension":
+ case "ObjectTypeDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? hardline$9 : "", n.kind === "ObjectTypeExtension" ? "extend " : "", "type ", path.call(print, "name"), n.interfaces.length > 0 ? concat$b([" implements ", join$8(determineInterfaceSeparator(options.originalText.substr(options.locStart(n), options.locEnd(n))), path.map(print, "interfaces"))]) : "", printDirectives(path, print, n), n.fields.length > 0 ? concat$b([" {", indent$7(concat$b([hardline$9, join$8(hardline$9, path.call(function (fieldsPath) {
+ return printSequence(fieldsPath, options, print);
+ }, "fields"))])), hardline$9, "}"]) : ""]);
+ }
+
+ case "FieldDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? hardline$9 : "", path.call(print, "name"), n.arguments.length > 0 ? group$c(concat$b(["(", indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", ", "), softline$5]), path.call(function (argsPath) {
+ return printSequence(argsPath, options, print);
+ }, "arguments"))])), softline$5, ")"])) : "", ": ", path.call(print, "type"), printDirectives(path, print, n)]);
+ }
+
+ case "DirectiveDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? hardline$9 : "", "directive ", "@", path.call(print, "name"), n.arguments.length > 0 ? group$c(concat$b(["(", indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", ", "), softline$5]), path.call(function (argsPath) {
+ return printSequence(argsPath, options, print);
+ }, "arguments"))])), softline$5, ")"])) : "", concat$b([" on ", join$8(" | ", path.map(print, "locations"))])]);
+ }
+
+ case "EnumTypeExtension":
+ case "EnumTypeDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? hardline$9 : "", n.kind === "EnumTypeExtension" ? "extend " : "", "enum ", path.call(print, "name"), printDirectives(path, print, n), n.values.length > 0 ? concat$b([" {", indent$7(concat$b([hardline$9, join$8(hardline$9, path.call(function (valuesPath) {
+ return printSequence(valuesPath, options, print);
+ }, "values"))])), hardline$9, "}"]) : ""]);
+ }
+
+ case "EnumValueDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? hardline$9 : "", path.call(print, "name"), printDirectives(path, print, n)]);
+ }
+
+ case "InputValueDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? n.description.block ? hardline$9 : line$5 : "", path.call(print, "name"), ": ", path.call(print, "type"), n.defaultValue ? concat$b([" = ", path.call(print, "defaultValue")]) : "", printDirectives(path, print, n)]);
+ }
+
+ case "InputObjectTypeExtension":
+ case "InputObjectTypeDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? hardline$9 : "", n.kind === "InputObjectTypeExtension" ? "extend " : "", "input ", path.call(print, "name"), printDirectives(path, print, n), n.fields.length > 0 ? concat$b([" {", indent$7(concat$b([hardline$9, join$8(hardline$9, path.call(function (fieldsPath) {
+ return printSequence(fieldsPath, options, print);
+ }, "fields"))])), hardline$9, "}"]) : ""]);
+ }
+
+ case "SchemaDefinition":
+ {
+ return concat$b(["schema", printDirectives(path, print, n), " {", n.operationTypes.length > 0 ? indent$7(concat$b([hardline$9, join$8(hardline$9, path.call(function (opsPath) {
+ return printSequence(opsPath, options, print);
+ }, "operationTypes"))])) : "", hardline$9, "}"]);
+ }
+
+ case "OperationTypeDefinition":
+ {
+ return concat$b([path.call(print, "operation"), ": ", path.call(print, "type")]);
+ }
+
+ case "InterfaceTypeExtension":
+ case "InterfaceTypeDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? hardline$9 : "", n.kind === "InterfaceTypeExtension" ? "extend " : "", "interface ", path.call(print, "name"), printDirectives(path, print, n), n.fields.length > 0 ? concat$b([" {", indent$7(concat$b([hardline$9, join$8(hardline$9, path.call(function (fieldsPath) {
+ return printSequence(fieldsPath, options, print);
+ }, "fields"))])), hardline$9, "}"]) : ""]);
+ }
+
+ case "FragmentSpread":
+ {
+ return concat$b(["...", path.call(print, "name"), printDirectives(path, print, n)]);
+ }
+
+ case "InlineFragment":
+ {
+ return concat$b(["...", n.typeCondition ? concat$b([" on ", path.call(print, "typeCondition")]) : "", printDirectives(path, print, n), " ", path.call(print, "selectionSet")]);
+ }
+
+ case "UnionTypeExtension":
+ case "UnionTypeDefinition":
+ {
+ return group$c(concat$b([path.call(print, "description"), n.description ? hardline$9 : "", group$c(concat$b([n.kind === "UnionTypeExtension" ? "extend " : "", "union ", path.call(print, "name"), printDirectives(path, print, n), n.types.length > 0 ? concat$b([" =", ifBreak$4("", " "), indent$7(concat$b([ifBreak$4(concat$b([line$5, " "])), join$8(concat$b([line$5, "| "]), path.map(print, "types"))]))]) : ""]))]));
+ }
+
+ case "ScalarTypeExtension":
+ case "ScalarTypeDefinition":
+ {
+ return concat$b([path.call(print, "description"), n.description ? hardline$9 : "", n.kind === "ScalarTypeExtension" ? "extend " : "", "scalar ", path.call(print, "name"), printDirectives(path, print, n)]);
+ }
+
+ case "NonNullType":
+ {
+ return concat$b([path.call(print, "type"), "!"]);
+ }
+
+ case "ListType":
+ {
+ return concat$b(["[", path.call(print, "type"), "]"]);
+ }
+
+ default:
+ /* istanbul ignore next */
+ throw new Error("unknown graphql type: " + JSON.stringify(n.kind));
+ }
+}
+
+function printDirectives(path, print, n) {
+ if (n.directives.length === 0) {
+ return "";
+ }
+
+ return concat$b([" ", group$c(indent$7(concat$b([softline$5, join$8(concat$b([ifBreak$4("", " "), softline$5]), path.map(print, "directives"))])))]);
+}
+
+function printSequence(sequencePath, options, print) {
+ var count = sequencePath.getValue().length;
+ return sequencePath.map(function (path, i) {
+ var printed = print(path);
+
+ if (isNextLineEmpty$4(options.originalText, path.getValue(), options) && i < count - 1) {
+ return concat$b([printed, hardline$9]);
+ }
+
+ return printed;
+ });
+}
+
+function canAttachComment$1(node) {
+ return node.kind && node.kind !== "Comment";
+}
+
+function printComment$2(commentPath) {
+ var comment = commentPath.getValue();
+
+ if (comment.kind === "Comment") {
+ return "#" + comment.value.trimRight();
+ }
+
+ throw new Error("Not a comment: " + JSON.stringify(comment));
+}
+
+function determineInterfaceSeparator(originalSource) {
+ var start = originalSource.indexOf("implements");
+
+ if (start === -1) {
+ throw new Error("Must implement interfaces: " + originalSource);
+ }
+
+ var end = originalSource.indexOf("{");
+
+ if (end === -1) {
+ end = originalSource.length;
+ }
+
+ return originalSource.substr(start, end).includes("&") ? " & " : ", ";
+}
+
+function clean$4(node, newNode
+/*, parent*/
+) {
+ delete newNode.loc;
+ delete newNode.comments;
+}
+
+var printerGraphql = {
+ print: genericPrint$3,
+ massageAstNode: clean$4,
+ hasPrettierIgnore: hasIgnoreComment$4,
+ insertPragma: insertPragma$5,
+ printComment: printComment$2,
+ canAttachComment: canAttachComment$1
+};
+
+var options$4 = {
+ bracketSpacing: commonOptions.bracketSpacing
+};
+
+var name$e = "GraphQL";
+var type$c = "data";
+var extensions$c = [
+ ".graphql",
+ ".gql",
+ ".graphqls"
+];
+var tmScope$c = "source.graphql";
+var aceMode$c = "text";
+var languageId$c = 139;
+var GraphQL = {
+ name: name$e,
+ type: type$c,
+ extensions: extensions$c,
+ tmScope: tmScope$c,
+ aceMode: aceMode$c,
+ languageId: languageId$c
+};
+
+var GraphQL$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$e,
+ type: type$c,
+ extensions: extensions$c,
+ tmScope: tmScope$c,
+ aceMode: aceMode$c,
+ languageId: languageId$c,
+ 'default': GraphQL
+});
+
+var require$$0$4 = getCjsExportFromNamespace(GraphQL$1);
+
+var languages$3 = [createLanguage(require$$0$4, function (data) {
+ return Object.assign(data, {
+ since: "1.5.0",
+ parsers: ["graphql"],
+ vscodeLanguageIds: ["graphql"]
+ });
+})];
+var printers$3 = {
+ graphql: printerGraphql
+};
+var languageGraphql = {
+ languages: languages$3,
+ options: options$4,
+ printers: printers$3
+};
+
+var json = {
+ "cjkPattern": "[\\u02ea-\\u02eb\\u1100-\\u11ff\\u2e80-\\u2e99\\u2e9b-\\u2ef3\\u2f00-\\u2fd5\\u3000-\\u303f\\u3041-\\u3096\\u3099-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u3190-\\u3191\\u3196-\\u31ba\\u31c0-\\u31e3\\u31f0-\\u321e\\u322a-\\u3247\\u3260-\\u327e\\u328a-\\u32b0\\u32c0-\\u32cb\\u32d0-\\u3370\\u337b-\\u337f\\u33e0-\\u33fe\\u3400-\\u4db5\\u4e00-\\u9fef\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufe10-\\ufe1f\\ufe30-\\ufe6f\\uff00-\\uffef]|[\\ud840-\\ud868\\ud86a-\\ud86c\\ud86f-\\ud872\\ud874-\\ud879][\\udc00-\\udfff]|\\ud82c[\\udc00-\\udd1e\\udd50-\\udd52\\udd64-\\udd67]|\\ud83c[\\ude00\\ude50-\\ude51]|\\ud869[\\udc00-\\uded6\\udf00-\\udfff]|\\ud86d[\\udc00-\\udf34\\udf40-\\udfff]|\\ud86e[\\udc00-\\udc1d\\udc20-\\udfff]|\\ud873[\\udc00-\\udea1\\udeb0-\\udfff]|\\ud87a[\\udc00-\\udfe0]|\\ud87e[\\udc00-\\ude1d]",
+ "kPattern": "[\\u1100-\\u11ff\\u3001-\\u3003\\u3008-\\u3011\\u3013-\\u301f\\u302e-\\u3030\\u3037\\u30fb\\u3131-\\u318e\\u3200-\\u321e\\u3260-\\u327e\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\ufe45-\\ufe46\\uff61-\\uff65\\uffa0-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc]",
+ "punctuationPattern": "[\\u0021-\\u002f\\u003a-\\u0040\\u005b-\\u0060\\u007b-\\u007e\\u00a1\\u00a7\\u00ab\\u00b6-\\u00b7\\u00bb\\u00bf\\u037e\\u0387\\u055a-\\u055f\\u0589-\\u058a\\u05be\\u05c0\\u05c3\\u05c6\\u05f3-\\u05f4\\u0609-\\u060a\\u060c-\\u060d\\u061b\\u061e-\\u061f\\u066a-\\u066d\\u06d4\\u0700-\\u070d\\u07f7-\\u07f9\\u0830-\\u083e\\u085e\\u0964-\\u0965\\u0970\\u09fd\\u0a76\\u0af0\\u0c77\\u0c84\\u0df4\\u0e4f\\u0e5a-\\u0e5b\\u0f04-\\u0f12\\u0f14\\u0f3a-\\u0f3d\\u0f85\\u0fd0-\\u0fd4\\u0fd9-\\u0fda\\u104a-\\u104f\\u10fb\\u1360-\\u1368\\u1400\\u166e\\u169b-\\u169c\\u16eb-\\u16ed\\u1735-\\u1736\\u17d4-\\u17d6\\u17d8-\\u17da\\u1800-\\u180a\\u1944-\\u1945\\u1a1e-\\u1a1f\\u1aa0-\\u1aa6\\u1aa8-\\u1aad\\u1b5a-\\u1b60\\u1bfc-\\u1bff\\u1c3b-\\u1c3f\\u1c7e-\\u1c7f\\u1cc0-\\u1cc7\\u1cd3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205e\\u207d-\\u207e\\u208d-\\u208e\\u2308-\\u230b\\u2329-\\u232a\\u2768-\\u2775\\u27c5-\\u27c6\\u27e6-\\u27ef\\u2983-\\u2998\\u29d8-\\u29db\\u29fc-\\u29fd\\u2cf9-\\u2cfc\\u2cfe-\\u2cff\\u2d70\\u2e00-\\u2e2e\\u2e30-\\u2e4f\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301f\\u3030\\u303d\\u30a0\\u30fb\\ua4fe-\\ua4ff\\ua60d-\\ua60f\\ua673\\ua67e\\ua6f2-\\ua6f7\\ua874-\\ua877\\ua8ce-\\ua8cf\\ua8f8-\\ua8fa\\ua8fc\\ua92e-\\ua92f\\ua95f\\ua9c1-\\ua9cd\\ua9de-\\ua9df\\uaa5c-\\uaa5f\\uaade-\\uaadf\\uaaf0-\\uaaf1\\uabeb\\ufd3e-\\ufd3f\\ufe10-\\ufe19\\ufe30-\\ufe52\\ufe54-\\ufe61\\ufe63\\ufe68\\ufe6a-\\ufe6b\\uff01-\\uff03\\uff05-\\uff0a\\uff0c-\\uff0f\\uff1a-\\uff1b\\uff1f-\\uff20\\uff3b-\\uff3d\\uff3f\\uff5b\\uff5d\\uff5f-\\uff65]|\\ud800[\\udd00-\\udd02\\udf9f\\udfd0]|\\ud801[\\udd6f]|\\ud802[\\udc57\\udd1f\\udd3f\\ude50-\\ude58\\ude7f\\udef0-\\udef6\\udf39-\\udf3f\\udf99-\\udf9c]|\\ud803[\\udf55-\\udf59]|\\ud804[\\udc47-\\udc4d\\udcbb-\\udcbc\\udcbe-\\udcc1\\udd40-\\udd43\\udd74-\\udd75\\uddc5-\\uddc8\\uddcd\\udddb\\udddd-\\udddf\\ude38-\\ude3d\\udea9]|\\ud805[\\udc4b-\\udc4f\\udc5b\\udc5d\\udcc6\\uddc1-\\uddd7\\ude41-\\ude43\\ude60-\\ude6c\\udf3c-\\udf3e]|\\ud806[\\udc3b\\udde2\\ude3f-\\ude46\\ude9a-\\ude9c\\ude9e-\\udea2]|\\ud807[\\udc41-\\udc45\\udc70-\\udc71\\udef7-\\udef8\\udfff]|\\ud809[\\udc70-\\udc74]|\\ud81a[\\ude6e-\\ude6f\\udef5\\udf37-\\udf3b\\udf44]|\\ud81b[\\ude97-\\ude9a\\udfe2]|\\ud82f[\\udc9f]|\\ud836[\\ude87-\\ude8b]|\\ud83a[\\udd5e-\\udd5f]"
+};
+
+var cjkPattern = json.cjkPattern,
+ kPattern = json.kPattern,
+ punctuationPattern = json.punctuationPattern;
+var getLast$3 = util.getLast;
+var INLINE_NODE_TYPES = ["liquidNode", "inlineCode", "emphasis", "strong", "delete", "link", "linkReference", "image", "imageReference", "footnote", "footnoteReference", "sentence", "whitespace", "word", "break", "inlineMath"];
+var INLINE_NODE_WRAPPER_TYPES = INLINE_NODE_TYPES.concat(["tableCell", "paragraph", "heading"]);
+var kRegex = new RegExp(kPattern);
+var punctuationRegex = new RegExp(punctuationPattern);
+/**
+ * split text into whitespaces and words
+ * @param {string} text
+ * @return {Array<{ type: "whitespace", value: " " | "\n" | "" } | { type: "word", value: string }>}
+ */
+
+function splitText(text, options) {
+ var KIND_NON_CJK = "non-cjk";
+ var KIND_CJ_LETTER = "cj-letter";
+ var KIND_K_LETTER = "k-letter";
+ var KIND_CJK_PUNCTUATION = "cjk-punctuation";
+ var nodes = [];
+ (options.proseWrap === "preserve" ? text : text.replace(new RegExp(`(${cjkPattern})\n(${cjkPattern})`, "g"), "$1$2")).split(/([ \t\n]+)/).forEach(function (token, index, tokens) {
+ // whitespace
+ if (index % 2 === 1) {
+ nodes.push({
+ type: "whitespace",
+ value: /\n/.test(token) ? "\n" : " "
+ });
+ return;
+ } // word separated by whitespace
+
+
+ if ((index === 0 || index === tokens.length - 1) && token === "") {
+ return;
+ }
+
+ token.split(new RegExp(`(${cjkPattern})`)).forEach(function (innerToken, innerIndex, innerTokens) {
+ if ((innerIndex === 0 || innerIndex === innerTokens.length - 1) && innerToken === "") {
+ return;
+ } // non-CJK word
+
+
+ if (innerIndex % 2 === 0) {
+ if (innerToken !== "") {
+ appendNode({
+ type: "word",
+ value: innerToken,
+ kind: KIND_NON_CJK,
+ hasLeadingPunctuation: punctuationRegex.test(innerToken[0]),
+ hasTrailingPunctuation: punctuationRegex.test(getLast$3(innerToken))
+ });
+ }
+
+ return;
+ } // CJK character
+
+
+ appendNode(punctuationRegex.test(innerToken) ? {
+ type: "word",
+ value: innerToken,
+ kind: KIND_CJK_PUNCTUATION,
+ hasLeadingPunctuation: true,
+ hasTrailingPunctuation: true
+ } : {
+ type: "word",
+ value: innerToken,
+ kind: kRegex.test(innerToken) ? KIND_K_LETTER : KIND_CJ_LETTER,
+ hasLeadingPunctuation: false,
+ hasTrailingPunctuation: false
+ });
+ });
+ });
+ return nodes;
+
+ function appendNode(node) {
+ var lastNode = getLast$3(nodes);
+
+ if (lastNode && lastNode.type === "word") {
+ if (lastNode.kind === KIND_NON_CJK && node.kind === KIND_CJ_LETTER && !lastNode.hasTrailingPunctuation || lastNode.kind === KIND_CJ_LETTER && node.kind === KIND_NON_CJK && !node.hasLeadingPunctuation) {
+ nodes.push({
+ type: "whitespace",
+ value: " "
+ });
+ } else if (!isBetween(KIND_NON_CJK, KIND_CJK_PUNCTUATION) && // disallow leading/trailing full-width whitespace
+ ![lastNode.value, node.value].some(function (value) {
+ return /\u3000/.test(value);
+ })) {
+ nodes.push({
+ type: "whitespace",
+ value: ""
+ });
+ }
+ }
+
+ nodes.push(node);
+
+ function isBetween(kind1, kind2) {
+ return lastNode.kind === kind1 && node.kind === kind2 || lastNode.kind === kind2 && node.kind === kind1;
+ }
+ }
+}
+
+function getOrderedListItemInfo(orderListItem, originalText) {
+ var _originalText$slice$m = originalText.slice(orderListItem.position.start.offset, orderListItem.position.end.offset).match(/^\s*(\d+)(\.|\))(\s*)/),
+ _originalText$slice$m2 = _slicedToArray(_originalText$slice$m, 4),
+ numberText = _originalText$slice$m2[1],
+ marker = _originalText$slice$m2[2],
+ leadingSpaces = _originalText$slice$m2[3];
+
+ return {
+ numberText,
+ marker,
+ leadingSpaces
+ };
+} // workaround for https://github.com/remarkjs/remark/issues/351
+// leading and trailing newlines are stripped by remark
+
+
+function getFencedCodeBlockValue(node, originalText) {
+ var text = originalText.slice(node.position.start.offset, node.position.end.offset);
+ var leadingSpaceCount = text.match(/^\s*/)[0].length;
+ var replaceRegex = new RegExp(`^\\s{0,${leadingSpaceCount}}`);
+ var lineContents = text.split("\n");
+ var markerStyle = text[leadingSpaceCount]; // ` or ~
+
+ var marker = text.slice(leadingSpaceCount).match(new RegExp(`^[${markerStyle}]+`))[0]; // https://spec.commonmark.org/0.28/#example-104: Closing fences may be indented by 0-3 spaces
+ // https://spec.commonmark.org/0.28/#example-93: The closing code fence must be at least as long as the opening fence
+
+ var hasEndMarker = new RegExp(`^\\s{0,3}${marker}`).test(lineContents[lineContents.length - 1].slice(getIndent(lineContents.length - 1)));
+ return lineContents.slice(1, hasEndMarker ? -1 : undefined).map(function (x, i) {
+ return x.slice(getIndent(i + 1)).replace(replaceRegex, "");
+ }).join("\n");
+
+ function getIndent(lineIndex) {
+ return node.position.indent[lineIndex - 1] - 1;
+ }
+}
+
+function mapAst(ast, handler) {
+ return function preorder(node, index, parentStack) {
+ parentStack = parentStack || [];
+ var newNode = handler(node, index, parentStack);
+
+ if (Array.isArray(newNode)) {
+ return newNode;
+ }
+
+ newNode = Object.assign({}, newNode);
+
+ if (newNode.children) {
+ newNode.children = newNode.children.reduce(function (nodes, child, index) {
+ var newNodes = preorder(child, index, [newNode].concat(parentStack));
+
+ if (!Array.isArray(newNodes)) {
+ newNodes = [newNodes];
+ }
+
+ nodes.push.apply(nodes, newNodes);
+ return nodes;
+ }, []);
+ }
+
+ return newNode;
+ }(ast, null, null);
+}
+
+var utils$4 = {
+ mapAst,
+ splitText,
+ punctuationPattern,
+ getFencedCodeBlockValue,
+ getOrderedListItemInfo,
+ INLINE_NODE_TYPES,
+ INLINE_NODE_WRAPPER_TYPES
+};
+
+var _require$$0$builders$6 = doc.builders,
+ hardline$a = _require$$0$builders$6.hardline,
+ literalline$4 = _require$$0$builders$6.literalline,
+ concat$c = _require$$0$builders$6.concat,
+ markAsRoot$2 = _require$$0$builders$6.markAsRoot,
+ mapDoc$5 = doc.utils.mapDoc;
+var getFencedCodeBlockValue$1 = utils$4.getFencedCodeBlockValue;
+
+function embed$2(path, print, textToDoc, options) {
+ var node = path.getValue();
+
+ if (node.type === "code" && node.lang !== null) {
+ // only look for the first string so as to support [markdown-preview-enhanced](https://shd101wyy.github.io/markdown-preview-enhanced/#/code-chunk)
+ var langMatch = node.lang.match(/^[A-Za-z0-9_-]+/);
+ var lang = langMatch ? langMatch[0] : "";
+ var parser = getParserName(lang);
+
+ if (parser) {
+ var styleUnit = options.__inJsTemplate ? "~" : "`";
+ var style = styleUnit.repeat(Math.max(3, util.getMaxContinuousCount(node.value, styleUnit) + 1));
+ var doc = textToDoc(getFencedCodeBlockValue$1(node, options.originalText), {
+ parser
+ });
+ return markAsRoot$2(concat$c([style, node.lang, hardline$a, replaceNewlinesWithLiterallines(doc), style]));
+ }
+ }
+
+ if (node.type === "yaml") {
+ return markAsRoot$2(concat$c(["---", hardline$a, node.value && node.value.trim() ? replaceNewlinesWithLiterallines(textToDoc(node.value, {
+ parser: "yaml"
+ })) : "", "---"]));
+ } // MDX
+
+
+ switch (node.type) {
+ case "importExport":
+ return textToDoc(node.value, {
+ parser: "babel"
+ });
+
+ case "jsx":
+ return textToDoc(node.value, {
+ parser: "__js_expression"
+ });
+ }
+
+ return null;
+
+ function getParserName(lang) {
+ var supportInfo = support.getSupportInfo(null, {
+ plugins: options.plugins
+ });
+ var language = supportInfo.languages.find(function (language) {
+ return language.name.toLowerCase() === lang || language.aliases && language.aliases.indexOf(lang) !== -1 || language.extensions && language.extensions.find(function (ext) {
+ return ext.substring(1) === lang;
+ });
+ });
+
+ if (language) {
+ return language.parsers[0];
+ }
+
+ return null;
+ }
+
+ function replaceNewlinesWithLiterallines(doc) {
+ return mapDoc$5(doc, function (currentDoc) {
+ return typeof currentDoc === "string" && currentDoc.includes("\n") ? concat$c(currentDoc.split(/(\n)/g).map(function (v, i) {
+ return i % 2 === 0 ? v : literalline$4;
+ })) : currentDoc;
+ });
+ }
+}
+
+var embed_1$2 = embed$2;
+
+var pragmas = ["format", "prettier"];
+
+function startWithPragma(text) {
+ var pragma = `@(${pragmas.join("|")})`;
+ var regex = new RegExp([`<!--\\s*${pragma}\\s*-->`, `<!--.*\r?\n[\\s\\S]*(^|\n)[^\\S\n]*${pragma}[^\\S\n]*($|\n)[\\s\\S]*\n.*-->`].join("|"), "m");
+ var matched = text.match(regex);
+ return matched && matched.index === 0;
+}
+
+var pragma$3 = {
+ startWithPragma,
+ hasPragma: function hasPragma(text) {
+ return startWithPragma(frontMatter(text).content.trimLeft());
+ },
+ insertPragma: function insertPragma(text) {
+ var extracted = frontMatter(text);
+ var pragma = `<!-- @${pragmas[0]} -->`;
+ return extracted.frontMatter ? `${extracted.frontMatter.raw}\n\n${pragma}\n\n${extracted.content}` : `${pragma}\n\n${extracted.content}`;
+ }
+};
+
+var getOrderedListItemInfo$1 = utils$4.getOrderedListItemInfo,
+ mapAst$1 = utils$4.mapAst,
+ splitText$1 = utils$4.splitText; // 0x0 ~ 0x10ffff
+// eslint-disable-next-line no-control-regex
+
+var isSingleCharRegex = /^([\u0000-\uffff]|[\ud800-\udbff][\udc00-\udfff])$/;
+
+function preprocess$1(ast, options) {
+ ast = restoreUnescapedCharacter(ast, options);
+ ast = mergeContinuousTexts(ast);
+ ast = transformInlineCode(ast);
+ ast = transformIndentedCodeblockAndMarkItsParentList(ast, options);
+ ast = markAlignedList(ast, options);
+ ast = splitTextIntoSentences(ast, options);
+ ast = transformImportExport(ast);
+ ast = mergeContinuousImportExport(ast);
+ return ast;
+}
+
+function transformImportExport(ast) {
+ return mapAst$1(ast, function (node) {
+ if (node.type !== "import" && node.type !== "export") {
+ return node;
+ }
+
+ return Object.assign({}, node, {
+ type: "importExport"
+ });
+ });
+}
+
+function transformInlineCode(ast) {
+ return mapAst$1(ast, function (node) {
+ if (node.type !== "inlineCode") {
+ return node;
+ }
+
+ return Object.assign({}, node, {
+ value: node.value.replace(/\s+/g, " ")
+ });
+ });
+}
+
+function restoreUnescapedCharacter(ast, options) {
+ return mapAst$1(ast, function (node) {
+ return node.type !== "text" ? node : Object.assign({}, node, {
+ value: node.value !== "*" && node.value !== "_" && node.value !== "$" && // handle these cases in printer
+ isSingleCharRegex.test(node.value) && node.position.end.offset - node.position.start.offset !== node.value.length ? options.originalText.slice(node.position.start.offset, node.position.end.offset) : node.value
+ });
+ });
+}
+
+function mergeContinuousImportExport(ast) {
+ return mergeChildren(ast, function (prevNode, node) {
+ return prevNode.type === "importExport" && node.type === "importExport";
+ }, function (prevNode, node) {
+ return {
+ type: "importExport",
+ value: prevNode.value + "\n\n" + node.value,
+ position: {
+ start: prevNode.position.start,
+ end: node.position.end
+ }
+ };
+ });
+}
+
+function mergeChildren(ast, shouldMerge, mergeNode) {
+ return mapAst$1(ast, function (node) {
+ if (!node.children) {
+ return node;
+ }
+
+ var children = node.children.reduce(function (current, child) {
+ var lastChild = current[current.length - 1];
+
+ if (lastChild && shouldMerge(lastChild, child)) {
+ current.splice(-1, 1, mergeNode(lastChild, child));
+ } else {
+ current.push(child);
+ }
+
+ return current;
+ }, []);
+ return Object.assign({}, node, {
+ children
+ });
+ });
+}
+
+function mergeContinuousTexts(ast) {
+ return mergeChildren(ast, function (prevNode, node) {
+ return prevNode.type === "text" && node.type === "text";
+ }, function (prevNode, node) {
+ return {
+ type: "text",
+ value: prevNode.value + node.value,
+ position: {
+ start: prevNode.position.start,
+ end: node.position.end
+ }
+ };
+ });
+}
+
+function splitTextIntoSentences(ast, options) {
+ return mapAst$1(ast, function (node, index, _ref) {
+ var _ref2 = _slicedToArray(_ref, 1),
+ parentNode = _ref2[0];
+
+ if (node.type !== "text") {
+ return node;
+ }
+
+ var value = node.value;
+
+ if (parentNode.type === "paragraph") {
+ if (index === 0) {
+ value = value.trimLeft();
+ }
+
+ if (index === parentNode.children.length - 1) {
+ value = value.trimRight();
+ }
+ }
+
+ return {
+ type: "sentence",
+ position: node.position,
+ children: splitText$1(value, options)
+ };
+ });
+}
+
+function transformIndentedCodeblockAndMarkItsParentList(ast, options) {
+ return mapAst$1(ast, function (node, index, parentStack) {
+ if (node.type === "code") {
+ // the first char may point to `\n`, e.g. `\n\t\tbar`, just ignore it
+ var isIndented = /^\n?( {4,}|\t)/.test(options.originalText.slice(node.position.start.offset, node.position.end.offset));
+ node.isIndented = isIndented;
+
+ if (isIndented) {
+ for (var i = 0; i < parentStack.length; i++) {
+ var parent = parentStack[i]; // no need to check checked items
+
+ if (parent.hasIndentedCodeblock) {
+ break;
+ }
+
+ if (parent.type === "list") {
+ parent.hasIndentedCodeblock = true;
+ }
+ }
+ }
+ }
+
+ return node;
+ });
+}
+
+function markAlignedList(ast, options) {
+ return mapAst$1(ast, function (node, index, parentStack) {
+ if (node.type === "list" && node.children.length !== 0) {
+ // if one of its parents is not aligned, it's not possible to be aligned in sub-lists
+ for (var i = 0; i < parentStack.length; i++) {
+ var parent = parentStack[i];
+
+ if (parent.type === "list" && !parent.isAligned) {
+ node.isAligned = false;
+ return node;
+ }
+ }
+
+ node.isAligned = isAligned(node);
+ }
+
+ return node;
+ });
+
+ function getListItemStart(listItem) {
+ return listItem.children.length === 0 ? -1 : listItem.children[0].position.start.column - 1;
+ }
+
+ function isAligned(list) {
+ if (!list.ordered) {
+ /**
+ * - 123
+ * - 123
+ */
+ return true;
+ }
+
+ var _list$children = _slicedToArray(list.children, 2),
+ firstItem = _list$children[0],
+ secondItem = _list$children[1];
+
+ var firstInfo = getOrderedListItemInfo$1(firstItem, options.originalText);
+
+ if (firstInfo.leadingSpaces.length > 1) {
+ /**
+ * 1. 123
+ *
+ * 1. 123
+ * 1. 123
+ */
+ return true;
+ }
+
+ var firstStart = getListItemStart(firstItem);
+
+ if (firstStart === -1) {
+ /**
+ * 1.
+ *
+ * 1.
+ * 1.
+ */
+ return false;
+ }
+
+ if (list.children.length === 1) {
+ /**
+ * aligned:
+ *
+ * 11. 123
+ *
+ * not aligned:
+ *
+ * 1. 123
+ */
+ return firstStart % options.tabWidth === 0;
+ }
+
+ var secondStart = getListItemStart(secondItem);
+
+ if (firstStart !== secondStart) {
+ /**
+ * 11. 123
+ * 1. 123
+ *
+ * 1. 123
+ * 11. 123
+ */
+ return false;
+ }
+
+ if (firstStart % options.tabWidth === 0) {
+ /**
+ * 11. 123
+ * 12. 123
+ */
+ return true;
+ }
+ /**
+ * aligned:
+ *
+ * 11. 123
+ * 1. 123
+ *
+ * not aligned:
+ *
+ * 1. 123
+ * 2. 123
+ */
+
+
+ var secondInfo = getOrderedListItemInfo$1(secondItem, options.originalText);
+ return secondInfo.leadingSpaces.length > 1;
+ }
+}
+
+var preprocess_1$1 = preprocess$1;
+
+var _require$$0$builders$7 = doc.builders,
+ breakParent$3 = _require$$0$builders$7.breakParent,
+ concat$d = _require$$0$builders$7.concat,
+ join$9 = _require$$0$builders$7.join,
+ line$6 = _require$$0$builders$7.line,
+ literalline$5 = _require$$0$builders$7.literalline,
+ markAsRoot$3 = _require$$0$builders$7.markAsRoot,
+ hardline$b = _require$$0$builders$7.hardline,
+ softline$6 = _require$$0$builders$7.softline,
+ ifBreak$5 = _require$$0$builders$7.ifBreak,
+ fill$4 = _require$$0$builders$7.fill,
+ align$2 = _require$$0$builders$7.align,
+ indent$8 = _require$$0$builders$7.indent,
+ group$d = _require$$0$builders$7.group,
+ mapDoc$6 = doc.utils.mapDoc,
+ printDocToString$3 = doc.printer.printDocToString;
+var getFencedCodeBlockValue$2 = utils$4.getFencedCodeBlockValue,
+ getOrderedListItemInfo$2 = utils$4.getOrderedListItemInfo,
+ splitText$2 = utils$4.splitText,
+ punctuationPattern$1 = utils$4.punctuationPattern,
+ INLINE_NODE_TYPES$1 = utils$4.INLINE_NODE_TYPES,
+ INLINE_NODE_WRAPPER_TYPES$1 = utils$4.INLINE_NODE_WRAPPER_TYPES;
+var replaceEndOfLineWith$1 = util.replaceEndOfLineWith;
+var TRAILING_HARDLINE_NODES = ["importExport"];
+var SINGLE_LINE_NODE_TYPES = ["heading", "tableCell", "link"];
+var SIBLING_NODE_TYPES = ["listItem", "definition", "footnoteDefinition", "jsx"];
+
+function genericPrint$4(path, options, print) {
+ var node = path.getValue();
+
+ if (shouldRemainTheSameContent(path)) {
+ return concat$d(splitText$2(options.originalText.slice(node.position.start.offset, node.position.end.offset), options).map(function (node) {
+ return node.type === "word" ? node.value : node.value === "" ? "" : printLine(path, node.value, options);
+ }));
+ }
+
+ switch (node.type) {
+ case "root":
+ if (node.children.length === 0) {
+ return "";
+ }
+
+ return concat$d([normalizeDoc(printRoot(path, options, print)), TRAILING_HARDLINE_NODES.indexOf(getLastDescendantNode(node).type) === -1 ? hardline$b : ""]);
+
+ case "paragraph":
+ return printChildren$1(path, options, print, {
+ postprocessor: fill$4
+ });
+
+ case "sentence":
+ return printChildren$1(path, options, print);
+
+ case "word":
+ return node.value.replace(/[*$]/g, "\\$&") // escape all `*` and `$` (math)
+ .replace(new RegExp([`(^|${punctuationPattern$1})(_+)`, `(_+)(${punctuationPattern$1}|$)`].join("|"), "g"), function (_, text1, underscore1, underscore2, text2) {
+ return (underscore1 ? `${text1}${underscore1}` : `${underscore2}${text2}`).replace(/_/g, "\\_");
+ });
+ // escape all `_` except concating with non-punctuation, e.g. `1_2_3` is not considered emphasis
+
+ case "whitespace":
+ {
+ var parentNode = path.getParentNode();
+ var index = parentNode.children.indexOf(node);
+ var nextNode = parentNode.children[index + 1];
+ var proseWrap = // leading char that may cause different syntax
+ nextNode && /^>|^([-+*]|#{1,6}|[0-9]+[.)])$/.test(nextNode.value) ? "never" : options.proseWrap;
+ return printLine(path, node.value, {
+ proseWrap
+ });
+ }
+
+ case "emphasis":
+ {
+ var _parentNode = path.getParentNode();
+
+ var _index = _parentNode.children.indexOf(node);
+
+ var prevNode = _parentNode.children[_index - 1];
+ var _nextNode = _parentNode.children[_index + 1];
+ var hasPrevOrNextWord = // `1*2*3` is considered emphasis but `1_2_3` is not
+ prevNode && prevNode.type === "sentence" && prevNode.children.length > 0 && util.getLast(prevNode.children).type === "word" && !util.getLast(prevNode.children).hasTrailingPunctuation || _nextNode && _nextNode.type === "sentence" && _nextNode.children.length > 0 && _nextNode.children[0].type === "word" && !_nextNode.children[0].hasLeadingPunctuation;
+ var style = hasPrevOrNextWord || getAncestorNode$2(path, "emphasis") ? "*" : "_";
+ return concat$d([style, printChildren$1(path, options, print), style]);
+ }
+
+ case "strong":
+ return concat$d(["**", printChildren$1(path, options, print), "**"]);
+
+ case "delete":
+ return concat$d(["~~", printChildren$1(path, options, print), "~~"]);
+
+ case "inlineCode":
+ {
+ var backtickCount = util.getMinNotPresentContinuousCount(node.value, "`");
+
+ var _style = "`".repeat(backtickCount || 1);
+
+ var gap = backtickCount ? " " : "";
+ return concat$d([_style, gap, node.value, gap, _style]);
+ }
+
+ case "link":
+ switch (options.originalText[node.position.start.offset]) {
+ case "<":
+ {
+ var mailto = "mailto:";
+ var url = // <hello@example.com> is parsed as { url: "mailto:hello@example.com" }
+ node.url.startsWith(mailto) && options.originalText.slice(node.position.start.offset + 1, node.position.start.offset + 1 + mailto.length) !== mailto ? node.url.slice(mailto.length) : node.url;
+ return concat$d(["<", url, ">"]);
+ }
+
+ case "[":
+ return concat$d(["[", printChildren$1(path, options, print), "](", printUrl(node.url, ")"), printTitle(node.title, options), ")"]);
+
+ default:
+ return options.originalText.slice(node.position.start.offset, node.position.end.offset);
+ }
+
+ case "image":
+ return concat$d(["![", node.alt || "", "](", printUrl(node.url, ")"), printTitle(node.title, options), ")"]);
+
+ case "blockquote":
+ return concat$d(["> ", align$2("> ", printChildren$1(path, options, print))]);
+
+ case "heading":
+ return concat$d(["#".repeat(node.depth) + " ", printChildren$1(path, options, print)]);
+
+ case "code":
+ {
+ if (node.isIndented) {
+ // indented code block
+ var alignment = " ".repeat(4);
+ return align$2(alignment, concat$d([alignment, concat$d(replaceEndOfLineWith$1(node.value, hardline$b))]));
+ } // fenced code block
+
+
+ var styleUnit = options.__inJsTemplate ? "~" : "`";
+
+ var _style2 = styleUnit.repeat(Math.max(3, util.getMaxContinuousCount(node.value, styleUnit) + 1));
+
+ return concat$d([_style2, node.lang || "", hardline$b, concat$d(replaceEndOfLineWith$1(getFencedCodeBlockValue$2(node, options.originalText), hardline$b)), hardline$b, _style2]);
+ }
+
+ case "yaml":
+ case "toml":
+ return options.originalText.slice(node.position.start.offset, node.position.end.offset);
+
+ case "html":
+ {
+ var _parentNode2 = path.getParentNode();
+
+ var value = _parentNode2.type === "root" && util.getLast(_parentNode2.children) === node ? node.value.trimRight() : node.value;
+ var isHtmlComment = /^<!--[\s\S]*-->$/.test(value);
+ return concat$d(replaceEndOfLineWith$1(value, isHtmlComment ? hardline$b : markAsRoot$3(literalline$5)));
+ }
+
+ case "list":
+ {
+ var nthSiblingIndex = getNthListSiblingIndex(node, path.getParentNode());
+ var isGitDiffFriendlyOrderedList = node.ordered && node.children.length > 1 && +getOrderedListItemInfo$2(node.children[1], options.originalText).numberText === 1;
+ return printChildren$1(path, options, print, {
+ processor: function processor(childPath, index) {
+ var prefix = getPrefix();
+ return concat$d([prefix, align$2(" ".repeat(prefix.length), printListItem(childPath, options, print, prefix))]);
+
+ function getPrefix() {
+ var rawPrefix = node.ordered ? (index === 0 ? node.start : isGitDiffFriendlyOrderedList ? 1 : node.start + index) + (nthSiblingIndex % 2 === 0 ? ". " : ") ") : nthSiblingIndex % 2 === 0 ? "- " : "* ";
+ return node.isAligned ||
+ /* workaround for https://github.com/remarkjs/remark/issues/315 */
+ node.hasIndentedCodeblock ? alignListPrefix(rawPrefix, options) : rawPrefix;
+ }
+ }
+ });
+ }
+
+ case "thematicBreak":
+ {
+ var counter = getAncestorCounter$1(path, "list");
+
+ if (counter === -1) {
+ return "---";
+ }
+
+ var _nthSiblingIndex = getNthListSiblingIndex(path.getParentNode(counter), path.getParentNode(counter + 1));
+
+ return _nthSiblingIndex % 2 === 0 ? "***" : "---";
+ }
+
+ case "linkReference":
+ return concat$d(["[", printChildren$1(path, options, print), "]", node.referenceType === "full" ? concat$d(["[", node.identifier, "]"]) : node.referenceType === "collapsed" ? "[]" : ""]);
+
+ case "imageReference":
+ switch (node.referenceType) {
+ case "full":
+ return concat$d(["![", node.alt || "", "][", node.identifier, "]"]);
+
+ default:
+ return concat$d(["![", node.alt, "]", node.referenceType === "collapsed" ? "[]" : ""]);
+ }
+
+ case "definition":
+ {
+ var lineOrSpace = options.proseWrap === "always" ? line$6 : " ";
+ return group$d(concat$d([concat$d(["[", node.identifier, "]:"]), indent$8(concat$d([lineOrSpace, printUrl(node.url), node.title === null ? "" : concat$d([lineOrSpace, printTitle(node.title, options, false)])]))]));
+ }
+
+ case "footnote":
+ return concat$d(["[^", printChildren$1(path, options, print), "]"]);
+
+ case "footnoteReference":
+ return concat$d(["[^", node.identifier, "]"]);
+
+ case "footnoteDefinition":
+ {
+ var _nextNode2 = path.getParentNode().children[path.getName() + 1];
+ var shouldInlineFootnote = node.children.length === 1 && node.children[0].type === "paragraph" && (options.proseWrap === "never" || options.proseWrap === "preserve" && node.children[0].position.start.line === node.children[0].position.end.line);
+ return concat$d(["[^", node.identifier, "]: ", shouldInlineFootnote ? printChildren$1(path, options, print) : group$d(concat$d([align$2(" ".repeat(options.tabWidth), printChildren$1(path, options, print, {
+ processor: function processor(childPath, index) {
+ return index === 0 ? group$d(concat$d([softline$6, softline$6, childPath.call(print)])) : childPath.call(print);
+ }
+ })), _nextNode2 && _nextNode2.type === "footnoteDefinition" ? softline$6 : ""]))]);
+ }
+
+ case "table":
+ return printTable(path, options, print);
+
+ case "tableCell":
+ return printChildren$1(path, options, print);
+
+ case "break":
+ return /\s/.test(options.originalText[node.position.start.offset]) ? concat$d([" ", markAsRoot$3(literalline$5)]) : concat$d(["\\", hardline$b]);
+
+ case "liquidNode":
+ return concat$d(replaceEndOfLineWith$1(node.value, hardline$b));
+ // MDX
+
+ case "importExport":
+ case "jsx":
+ return node.value;
+ // fallback to the original text if multiparser failed
+
+ case "math":
+ return concat$d(["$$", hardline$b, node.value ? concat$d([concat$d(replaceEndOfLineWith$1(node.value, hardline$b)), hardline$b]) : "", "$$"]);
+
+ case "inlineMath":
+ {
+ // remark-math trims content but we don't want to remove whitespaces
+ // since it's very possible that it's recognized as math accidentally
+ return options.originalText.slice(options.locStart(node), options.locEnd(node));
+ }
+
+ case "tableRow": // handled in "table"
+
+ case "listItem": // handled in "list"
+
+ default:
+ throw new Error(`Unknown markdown type ${JSON.stringify(node.type)}`);
+ }
+}
+
+function printListItem(path, options, print, listPrefix) {
+ var node = path.getValue();
+ var prefix = node.checked === null ? "" : node.checked ? "[x] " : "[ ] ";
+ return concat$d([prefix, printChildren$1(path, options, print, {
+ processor: function processor(childPath, index) {
+ if (index === 0 && childPath.getValue().type !== "list") {
+ return align$2(" ".repeat(prefix.length), childPath.call(print));
+ }
+
+ var alignment = " ".repeat(clamp(options.tabWidth - listPrefix.length, 0, 3) // 4+ will cause indented code block
+ );
+ return concat$d([alignment, align$2(alignment, childPath.call(print))]);
+ }
+ })]);
+}
+
+function alignListPrefix(prefix, options) {
+ var additionalSpaces = getAdditionalSpaces();
+ return prefix + " ".repeat(additionalSpaces >= 4 ? 0 : additionalSpaces // 4+ will cause indented code block
+ );
+
+ function getAdditionalSpaces() {
+ var restSpaces = prefix.length % options.tabWidth;
+ return restSpaces === 0 ? 0 : options.tabWidth - restSpaces;
+ }
+}
+
+function getNthListSiblingIndex(node, parentNode) {
+ return getNthSiblingIndex(node, parentNode, function (siblingNode) {
+ return siblingNode.ordered === node.ordered;
+ });
+}
+
+function getNthSiblingIndex(node, parentNode, condition) {
+ condition = condition || function () {
+ return true;
+ };
+
+ var index = -1;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = parentNode.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var childNode = _step.value;
+
+ if (childNode.type === node.type && condition(childNode)) {
+ index++;
+ } else {
+ index = -1;
+ }
+
+ if (childNode === node) {
+ return index;
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+}
+
+function getAncestorCounter$1(path, typeOrTypes) {
+ var types = [].concat(typeOrTypes);
+ var counter = -1;
+ var ancestorNode;
+
+ while (ancestorNode = path.getParentNode(++counter)) {
+ if (types.indexOf(ancestorNode.type) !== -1) {
+ return counter;
+ }
+ }
+
+ return -1;
+}
+
+function getAncestorNode$2(path, typeOrTypes) {
+ var counter = getAncestorCounter$1(path, typeOrTypes);
+ return counter === -1 ? null : path.getParentNode(counter);
+}
+
+function printLine(path, value, options) {
+ if (options.proseWrap === "preserve" && value === "\n") {
+ return hardline$b;
+ }
+
+ var isBreakable = options.proseWrap === "always" && !getAncestorNode$2(path, SINGLE_LINE_NODE_TYPES);
+ return value !== "" ? isBreakable ? line$6 : " " : isBreakable ? softline$6 : "";
+}
+
+function printTable(path, options, print) {
+ var hardlineWithoutBreakParent = hardline$b.parts[0];
+ var node = path.getValue();
+ var contents = []; // { [rowIndex: number]: { [columnIndex: number]: string } }
+
+ path.map(function (rowPath) {
+ var rowContents = [];
+ rowPath.map(function (cellPath) {
+ rowContents.push(printDocToString$3(cellPath.call(print), options).formatted);
+ }, "children");
+ contents.push(rowContents);
+ }, "children"); // Get the width of each column
+
+ var columnMaxWidths = contents.reduce(function (currentWidths, rowContents) {
+ return currentWidths.map(function (width, columnIndex) {
+ return Math.max(width, util.getStringWidth(rowContents[columnIndex]));
+ });
+ }, contents[0].map(function () {
+ return 3;
+ }) // minimum width = 3 (---, :--, :-:, --:)
+ );
+ var alignedTable = join$9(hardlineWithoutBreakParent, [printRow(contents[0]), printSeparator(), join$9(hardlineWithoutBreakParent, contents.slice(1).map(function (rowContents) {
+ return printRow(rowContents);
+ }))]);
+
+ if (options.proseWrap !== "never") {
+ return concat$d([breakParent$3, alignedTable]);
+ } // Only if the --prose-wrap never is set and it exceeds the print width.
+
+
+ var compactTable = join$9(hardlineWithoutBreakParent, [printRow(contents[0],
+ /* isCompact */
+ true), printSeparator(
+ /* isCompact */
+ true), join$9(hardlineWithoutBreakParent, contents.slice(1).map(function (rowContents) {
+ return printRow(rowContents,
+ /* isCompact */
+ true);
+ }))]);
+ return concat$d([breakParent$3, group$d(ifBreak$5(compactTable, alignedTable))]);
+
+ function printSeparator(isCompact) {
+ return concat$d(["| ", join$9(" | ", columnMaxWidths.map(function (width, index) {
+ var spaces = isCompact ? 3 : width;
+
+ switch (node.align[index]) {
+ case "left":
+ return ":" + "-".repeat(spaces - 1);
+
+ case "right":
+ return "-".repeat(spaces - 1) + ":";
+
+ case "center":
+ return ":" + "-".repeat(spaces - 2) + ":";
+
+ default:
+ return "-".repeat(spaces);
+ }
+ })), " |"]);
+ }
+
+ function printRow(rowContents, isCompact) {
+ return concat$d(["| ", join$9(" | ", isCompact ? rowContents : rowContents.map(function (rowContent, columnIndex) {
+ switch (node.align[columnIndex]) {
+ case "right":
+ return alignRight(rowContent, columnMaxWidths[columnIndex]);
+
+ case "center":
+ return alignCenter(rowContent, columnMaxWidths[columnIndex]);
+
+ default:
+ return alignLeft(rowContent, columnMaxWidths[columnIndex]);
+ }
+ })), " |"]);
+ }
+
+ function alignLeft(text, width) {
+ var spaces = width - util.getStringWidth(text);
+ return concat$d([text, " ".repeat(spaces)]);
+ }
+
+ function alignRight(text, width) {
+ var spaces = width - util.getStringWidth(text);
+ return concat$d([" ".repeat(spaces), text]);
+ }
+
+ function alignCenter(text, width) {
+ var spaces = width - util.getStringWidth(text);
+ var left = Math.floor(spaces / 2);
+ var right = spaces - left;
+ return concat$d([" ".repeat(left), text, " ".repeat(right)]);
+ }
+}
+
+function printRoot(path, options, print) {
+ /** @typedef {{ index: number, offset: number }} IgnorePosition */
+
+ /** @type {Array<{start: IgnorePosition, end: IgnorePosition}>} */
+ var ignoreRanges = [];
+ /** @type {IgnorePosition | null} */
+
+ var ignoreStart = null;
+ var children = path.getValue().children;
+ children.forEach(function (childNode, index) {
+ switch (isPrettierIgnore(childNode)) {
+ case "start":
+ if (ignoreStart === null) {
+ ignoreStart = {
+ index,
+ offset: childNode.position.end.offset
+ };
+ }
+
+ break;
+
+ case "end":
+ if (ignoreStart !== null) {
+ ignoreRanges.push({
+ start: ignoreStart,
+ end: {
+ index,
+ offset: childNode.position.start.offset
+ }
+ });
+ ignoreStart = null;
+ }
+
+ break;
+ }
+ });
+ return printChildren$1(path, options, print, {
+ processor: function processor(childPath, index) {
+ if (ignoreRanges.length !== 0) {
+ var ignoreRange = ignoreRanges[0];
+
+ if (index === ignoreRange.start.index) {
+ return concat$d([children[ignoreRange.start.index].value, options.originalText.slice(ignoreRange.start.offset, ignoreRange.end.offset), children[ignoreRange.end.index].value]);
+ }
+
+ if (ignoreRange.start.index < index && index < ignoreRange.end.index) {
+ return false;
+ }
+
+ if (index === ignoreRange.end.index) {
+ ignoreRanges.shift();
+ return false;
+ }
+ }
+
+ return childPath.call(print);
+ }
+ });
+}
+
+function printChildren$1(path, options, print, events) {
+ events = events || {};
+ var postprocessor = events.postprocessor || concat$d;
+
+ var processor = events.processor || function (childPath) {
+ return childPath.call(print);
+ };
+
+ var node = path.getValue();
+ var parts = [];
+ var lastChildNode;
+ path.map(function (childPath, index) {
+ var childNode = childPath.getValue();
+ var result = processor(childPath, index);
+
+ if (result !== false) {
+ var data = {
+ parts,
+ prevNode: lastChildNode,
+ parentNode: node,
+ options
+ };
+
+ if (!shouldNotPrePrintHardline(childNode, data)) {
+ parts.push(hardline$b);
+
+ if (lastChildNode && TRAILING_HARDLINE_NODES.indexOf(lastChildNode.type) !== -1) {
+ if (shouldPrePrintTripleHardline(childNode, data)) {
+ parts.push(hardline$b);
+ }
+ } else {
+ if (shouldPrePrintDoubleHardline(childNode, data) || shouldPrePrintTripleHardline(childNode, data)) {
+ parts.push(hardline$b);
+ }
+
+ if (shouldPrePrintTripleHardline(childNode, data)) {
+ parts.push(hardline$b);
+ }
+ }
+ }
+
+ parts.push(result);
+ lastChildNode = childNode;
+ }
+ }, "children");
+ return postprocessor(parts);
+}
+
+function getLastDescendantNode(node) {
+ var current = node;
+
+ while (current.children && current.children.length !== 0) {
+ current = current.children[current.children.length - 1];
+ }
+
+ return current;
+}
+/** @return {false | 'next' | 'start' | 'end'} */
+
+
+function isPrettierIgnore(node) {
+ if (node.type !== "html") {
+ return false;
+ }
+
+ var match = node.value.match(/^<!--\s*prettier-ignore(?:-(start|end))?\s*-->$/);
+ return match === null ? false : match[1] ? match[1] : "next";
+}
+
+function isInlineNode(node) {
+ return node && INLINE_NODE_TYPES$1.indexOf(node.type) !== -1;
+}
+
+function isEndsWithHardLine(node) {
+ return node && /\n+$/.test(node.value);
+}
+
+function last(nodes) {
+ return nodes && nodes[nodes.length - 1];
+}
+
+function shouldNotPrePrintHardline(node, _ref) {
+ var parentNode = _ref.parentNode,
+ parts = _ref.parts,
+ prevNode = _ref.prevNode;
+ var isFirstNode = parts.length === 0;
+ var isInlineHTML = node.type === "html" && INLINE_NODE_WRAPPER_TYPES$1.indexOf(parentNode.type) !== -1;
+ var isAfterHardlineNode = prevNode && (isEndsWithHardLine(prevNode) || isEndsWithHardLine(last(prevNode.children)));
+ return isFirstNode || isInlineNode(node) || isInlineHTML || isAfterHardlineNode;
+}
+
+function shouldPrePrintDoubleHardline(node, _ref2) {
+ var parentNode = _ref2.parentNode,
+ prevNode = _ref2.prevNode;
+ var prevNodeType = prevNode && prevNode.type;
+ var nodeType = node.type;
+ var isSequence = prevNodeType === nodeType;
+ var isSiblingNode = isSequence && SIBLING_NODE_TYPES.indexOf(nodeType) !== -1;
+ var isInTightListItem = parentNode.type === "listItem" && !parentNode.loose;
+ var isPrevNodeLooseListItem = prevNodeType === "listItem" && prevNode.loose;
+ var isPrevNodePrettierIgnore = isPrettierIgnore(prevNode) === "next";
+ var isBlockHtmlWithoutBlankLineBetweenPrevHtml = nodeType === "html" && prevNodeType === "html" && prevNode.position.end.line + 1 === node.position.start.line;
+ var isJsxInlineSibling = prevNodeType === "jsx" && isInlineNode(node) || nodeType === "jsx" && isInlineNode(prevNode);
+ return isPrevNodeLooseListItem || !(isSiblingNode || isInTightListItem || isPrevNodePrettierIgnore || isBlockHtmlWithoutBlankLineBetweenPrevHtml || isJsxInlineSibling);
+}
+
+function shouldPrePrintTripleHardline(node, data) {
+ var isPrevNodeList = data.prevNode && data.prevNode.type === "list";
+ var isIndentedCode = node.type === "code" && node.isIndented;
+ return isPrevNodeList && isIndentedCode;
+}
+
+function shouldRemainTheSameContent(path) {
+ var ancestorNode = getAncestorNode$2(path, ["linkReference", "imageReference"]);
+ return ancestorNode && (ancestorNode.type !== "linkReference" || ancestorNode.referenceType !== "full");
+}
+
+function normalizeDoc(doc) {
+ return mapDoc$6(doc, function (currentDoc) {
+ if (!currentDoc.parts) {
+ return currentDoc;
+ }
+
+ if (currentDoc.type === "concat" && currentDoc.parts.length === 1) {
+ return currentDoc.parts[0];
+ }
+
+ var parts = [];
+ currentDoc.parts.forEach(function (part) {
+ if (part.type === "concat") {
+ parts.push.apply(parts, part.parts);
+ } else if (part !== "") {
+ parts.push(part);
+ }
+ });
+ return Object.assign({}, currentDoc, {
+ parts: normalizeParts(parts)
+ });
+ });
+}
+
+function printUrl(url, dangerousCharOrChars) {
+ var dangerousChars = [" "].concat(dangerousCharOrChars || []);
+ return new RegExp(dangerousChars.map(function (x) {
+ return `\\${x}`;
+ }).join("|")).test(url) ? `<${url}>` : url;
+}
+
+function printTitle(title, options, printSpace) {
+ if (printSpace == null) {
+ printSpace = true;
+ }
+
+ if (!title) {
+ return "";
+ }
+
+ if (printSpace) {
+ return " " + printTitle(title, options, false);
+ }
+
+ if (title.includes('"') && title.includes("'") && !title.includes(")")) {
+ return `(${title})`; // avoid escaped quotes
+ } // faster than using RegExps: https://jsperf.com/performance-of-match-vs-split
+
+
+ var singleCount = title.split("'").length - 1;
+ var doubleCount = title.split('"').length - 1;
+ var quote = singleCount > doubleCount ? '"' : doubleCount > singleCount ? "'" : options.singleQuote ? "'" : '"';
+ title = title.replace(new RegExp(`(${quote})`, "g"), "\\$1");
+ return `${quote}${title}${quote}`;
+}
+
+function normalizeParts(parts) {
+ return parts.reduce(function (current, part) {
+ var lastPart = util.getLast(current);
+
+ if (typeof lastPart === "string" && typeof part === "string") {
+ current.splice(-1, 1, lastPart + part);
+ } else {
+ current.push(part);
+ }
+
+ return current;
+ }, []);
+}
+
+function clamp(value, min, max) {
+ return value < min ? min : value > max ? max : value;
+}
+
+function clean$5(ast, newObj, parent) {
+ delete newObj.position;
+ delete newObj.raw; // front-matter
+ // for codeblock
+
+ if (ast.type === "code" || ast.type === "yaml" || ast.type === "import" || ast.type === "export" || ast.type === "jsx") {
+ delete newObj.value;
+ }
+
+ if (ast.type === "list") {
+ delete newObj.isAligned;
+ } // texts can be splitted or merged
+
+
+ if (ast.type === "text") {
+ return null;
+ }
+
+ if (ast.type === "inlineCode") {
+ newObj.value = ast.value.replace(/[ \t\n]+/g, " ");
+ } // for insert pragma
+
+
+ if (parent && parent.type === "root" && parent.children.length > 0 && (parent.children[0] === ast || (parent.children[0].type === "yaml" || parent.children[0].type === "toml") && parent.children[1] === ast) && ast.type === "html" && pragma$3.startWithPragma(ast.value)) {
+ return null;
+ }
+}
+
+function hasPrettierIgnore$2(path) {
+ var index = +path.getName();
+
+ if (index === 0) {
+ return false;
+ }
+
+ var prevNode = path.getParentNode().children[index - 1];
+ return isPrettierIgnore(prevNode) === "next";
+}
+
+var printerMarkdown = {
+ preprocess: preprocess_1$1,
+ print: genericPrint$4,
+ embed: embed_1$2,
+ massageAstNode: clean$5,
+ hasPrettierIgnore: hasPrettierIgnore$2,
+ insertPragma: pragma$3.insertPragma
+};
+
+var options$5 = {
+ proseWrap: commonOptions.proseWrap,
+ singleQuote: commonOptions.singleQuote
+};
+
+var name$f = "Markdown";
+var type$d = "prose";
+var aliases$4 = [
+ "pandoc"
+];
+var aceMode$d = "markdown";
+var codemirrorMode$a = "gfm";
+var codemirrorMimeType$a = "text/x-gfm";
+var wrap = true;
+var extensions$d = [
+ ".md",
+ ".markdown",
+ ".mdown",
+ ".mdwn",
+ ".mdx",
+ ".mkd",
+ ".mkdn",
+ ".mkdown",
+ ".ronn",
+ ".workbook"
+];
+var filenames$3 = [
+ "contents.lr"
+];
+var tmScope$d = "source.gfm";
+var languageId$d = 222;
+var Markdown = {
+ name: name$f,
+ type: type$d,
+ aliases: aliases$4,
+ aceMode: aceMode$d,
+ codemirrorMode: codemirrorMode$a,
+ codemirrorMimeType: codemirrorMimeType$a,
+ wrap: wrap,
+ extensions: extensions$d,
+ filenames: filenames$3,
+ tmScope: tmScope$d,
+ languageId: languageId$d
+};
+
+var Markdown$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$f,
+ type: type$d,
+ aliases: aliases$4,
+ aceMode: aceMode$d,
+ codemirrorMode: codemirrorMode$a,
+ codemirrorMimeType: codemirrorMimeType$a,
+ wrap: wrap,
+ extensions: extensions$d,
+ filenames: filenames$3,
+ tmScope: tmScope$d,
+ languageId: languageId$d,
+ 'default': Markdown
+});
+
+var require$$0$5 = getCjsExportFromNamespace(Markdown$1);
+
+var languages$4 = [createLanguage(require$$0$5, function (data) {
+ return Object.assign(data, {
+ since: "1.8.0",
+ parsers: ["remark"],
+ vscodeLanguageIds: ["markdown"],
+ filenames: data.filenames.concat(["README"]),
+ extensions: data.extensions.filter(function (extension) {
+ return extension !== ".mdx";
+ })
+ });
+}), createLanguage(require$$0$5, function (data) {
+ return Object.assign(data, {
+ name: "MDX",
+ since: "1.15.0",
+ parsers: ["mdx"],
+ vscodeLanguageIds: ["mdx"],
+ filenames: [],
+ extensions: [".mdx"]
+ });
+})];
+var printers$4 = {
+ mdast: printerMarkdown
+};
+var languageMarkdown = {
+ languages: languages$4,
+ options: options$5,
+ printers: printers$4
+};
+
+var clean$6 = function clean(ast, newNode) {
+ delete newNode.sourceSpan;
+ delete newNode.startSourceSpan;
+ delete newNode.endSourceSpan;
+ delete newNode.nameSpan;
+ delete newNode.valueSpan;
+
+ if (ast.type === "text" || ast.type === "comment") {
+ return null;
+ } // may be formatted by multiparser
+
+
+ if (ast.type === "yaml" || ast.type === "toml") {
+ return null;
+ }
+
+ if (ast.type === "attribute") {
+ delete newNode.value;
+ }
+
+ if (ast.type === "docType") {
+ delete newNode.value;
+ }
+};
+
+var json$1 = {
+ "CSS_DISPLAY_TAGS": {
+ "area": "none",
+ "base": "none",
+ "basefont": "none",
+ "datalist": "none",
+ "head": "none",
+ "link": "none",
+ "meta": "none",
+ "noembed": "none",
+ "noframes": "none",
+ "param": "none",
+ "rp": "none",
+ "script": "block",
+ "source": "block",
+ "style": "none",
+ "template": "inline",
+ "track": "block",
+ "title": "none",
+ "html": "block",
+ "body": "block",
+ "address": "block",
+ "blockquote": "block",
+ "center": "block",
+ "div": "block",
+ "figure": "block",
+ "figcaption": "block",
+ "footer": "block",
+ "form": "block",
+ "header": "block",
+ "hr": "block",
+ "legend": "block",
+ "listing": "block",
+ "main": "block",
+ "p": "block",
+ "plaintext": "block",
+ "pre": "block",
+ "xmp": "block",
+ "slot": "contents",
+ "ruby": "ruby",
+ "rt": "ruby-text",
+ "article": "block",
+ "aside": "block",
+ "h1": "block",
+ "h2": "block",
+ "h3": "block",
+ "h4": "block",
+ "h5": "block",
+ "h6": "block",
+ "hgroup": "block",
+ "nav": "block",
+ "section": "block",
+ "dir": "block",
+ "dd": "block",
+ "dl": "block",
+ "dt": "block",
+ "ol": "block",
+ "ul": "block",
+ "li": "list-item",
+ "table": "table",
+ "caption": "table-caption",
+ "colgroup": "table-column-group",
+ "col": "table-column",
+ "thead": "table-header-group",
+ "tbody": "table-row-group",
+ "tfoot": "table-footer-group",
+ "tr": "table-row",
+ "td": "table-cell",
+ "th": "table-cell",
+ "fieldset": "block",
+ "button": "inline-block",
+ "video": "inline-block",
+ "audio": "inline-block"
+ },
+ "CSS_DISPLAY_DEFAULT": "inline",
+ "CSS_WHITE_SPACE_TAGS": {
+ "listing": "pre",
+ "plaintext": "pre",
+ "pre": "pre",
+ "xmp": "pre",
+ "nobr": "nowrap",
+ "table": "initial",
+ "textarea": "pre-wrap"
+ },
+ "CSS_WHITE_SPACE_DEFAULT": "normal"
+};
+
+var a = [
+ "accesskey",
+ "charset",
+ "coords",
+ "download",
+ "href",
+ "hreflang",
+ "name",
+ "ping",
+ "referrerpolicy",
+ "rel",
+ "rev",
+ "shape",
+ "tabindex",
+ "target",
+ "type"
+];
+var abbr = [
+ "title"
+];
+var applet = [
+ "align",
+ "alt",
+ "archive",
+ "code",
+ "codebase",
+ "height",
+ "hspace",
+ "name",
+ "object",
+ "vspace",
+ "width"
+];
+var area = [
+ "accesskey",
+ "alt",
+ "coords",
+ "download",
+ "href",
+ "hreflang",
+ "nohref",
+ "ping",
+ "referrerpolicy",
+ "rel",
+ "shape",
+ "tabindex",
+ "target",
+ "type"
+];
+var audio = [
+ "autoplay",
+ "controls",
+ "crossorigin",
+ "loop",
+ "muted",
+ "preload",
+ "src"
+];
+var base = [
+ "href",
+ "target"
+];
+var basefont = [
+ "color",
+ "face",
+ "size"
+];
+var bdo = [
+ "dir"
+];
+var blockquote = [
+ "cite"
+];
+var body = [
+ "alink",
+ "background",
+ "bgcolor",
+ "link",
+ "text",
+ "vlink"
+];
+var br = [
+ "clear"
+];
+var button = [
+ "accesskey",
+ "autofocus",
+ "disabled",
+ "form",
+ "formaction",
+ "formenctype",
+ "formmethod",
+ "formnovalidate",
+ "formtarget",
+ "name",
+ "tabindex",
+ "type",
+ "value"
+];
+var canvas = [
+ "height",
+ "width"
+];
+var caption = [
+ "align"
+];
+var col = [
+ "align",
+ "char",
+ "charoff",
+ "span",
+ "valign",
+ "width"
+];
+var colgroup = [
+ "align",
+ "char",
+ "charoff",
+ "span",
+ "valign",
+ "width"
+];
+var data$1 = [
+ "value"
+];
+var del$1 = [
+ "cite",
+ "datetime"
+];
+var details = [
+ "open"
+];
+var dfn = [
+ "title"
+];
+var dialog = [
+ "open"
+];
+var dir = [
+ "compact"
+];
+var div = [
+ "align"
+];
+var dl = [
+ "compact"
+];
+var embed$3 = [
+ "height",
+ "src",
+ "type",
+ "width"
+];
+var fieldset = [
+ "disabled",
+ "form",
+ "name"
+];
+var font = [
+ "color",
+ "face",
+ "size"
+];
+var form = [
+ "accept",
+ "accept-charset",
+ "action",
+ "autocomplete",
+ "enctype",
+ "method",
+ "name",
+ "novalidate",
+ "target"
+];
+var frame = [
+ "frameborder",
+ "longdesc",
+ "marginheight",
+ "marginwidth",
+ "name",
+ "noresize",
+ "scrolling",
+ "src"
+];
+var frameset = [
+ "cols",
+ "rows"
+];
+var h1 = [
+ "align"
+];
+var h2 = [
+ "align"
+];
+var h3 = [
+ "align"
+];
+var h4 = [
+ "align"
+];
+var h5 = [
+ "align"
+];
+var h6 = [
+ "align"
+];
+var head = [
+ "profile"
+];
+var hr = [
+ "align",
+ "noshade",
+ "size",
+ "width"
+];
+var html = [
+ "manifest",
+ "version"
+];
+var iframe = [
+ "align",
+ "allow",
+ "allowfullscreen",
+ "allowpaymentrequest",
+ "allowusermedia",
+ "frameborder",
+ "height",
+ "longdesc",
+ "marginheight",
+ "marginwidth",
+ "name",
+ "referrerpolicy",
+ "sandbox",
+ "scrolling",
+ "src",
+ "srcdoc",
+ "width"
+];
+var img = [
+ "align",
+ "alt",
+ "border",
+ "crossorigin",
+ "decoding",
+ "height",
+ "hspace",
+ "ismap",
+ "longdesc",
+ "name",
+ "referrerpolicy",
+ "sizes",
+ "src",
+ "srcset",
+ "usemap",
+ "vspace",
+ "width"
+];
+var input = [
+ "accept",
+ "accesskey",
+ "align",
+ "alt",
+ "autocomplete",
+ "autofocus",
+ "checked",
+ "dirname",
+ "disabled",
+ "form",
+ "formaction",
+ "formenctype",
+ "formmethod",
+ "formnovalidate",
+ "formtarget",
+ "height",
+ "ismap",
+ "list",
+ "max",
+ "maxlength",
+ "min",
+ "minlength",
+ "multiple",
+ "name",
+ "pattern",
+ "placeholder",
+ "readonly",
+ "required",
+ "size",
+ "src",
+ "step",
+ "tabindex",
+ "title",
+ "type",
+ "usemap",
+ "value",
+ "width"
+];
+var ins = [
+ "cite",
+ "datetime"
+];
+var isindex = [
+ "prompt"
+];
+var label = [
+ "accesskey",
+ "for",
+ "form"
+];
+var legend = [
+ "accesskey",
+ "align"
+];
+var li = [
+ "type",
+ "value"
+];
+var link$1 = [
+ "as",
+ "charset",
+ "color",
+ "crossorigin",
+ "href",
+ "hreflang",
+ "imagesizes",
+ "imagesrcset",
+ "integrity",
+ "media",
+ "nonce",
+ "referrerpolicy",
+ "rel",
+ "rev",
+ "sizes",
+ "target",
+ "title",
+ "type"
+];
+var map$1 = [
+ "name"
+];
+var menu = [
+ "compact"
+];
+var meta = [
+ "charset",
+ "content",
+ "http-equiv",
+ "name",
+ "scheme"
+];
+var meter = [
+ "high",
+ "low",
+ "max",
+ "min",
+ "optimum",
+ "value"
+];
+var object = [
+ "align",
+ "archive",
+ "border",
+ "classid",
+ "codebase",
+ "codetype",
+ "data",
+ "declare",
+ "form",
+ "height",
+ "hspace",
+ "name",
+ "standby",
+ "tabindex",
+ "type",
+ "typemustmatch",
+ "usemap",
+ "vspace",
+ "width"
+];
+var ol = [
+ "compact",
+ "reversed",
+ "start",
+ "type"
+];
+var optgroup = [
+ "disabled",
+ "label"
+];
+var option = [
+ "disabled",
+ "label",
+ "selected",
+ "value"
+];
+var output = [
+ "for",
+ "form",
+ "name"
+];
+var p = [
+ "align"
+];
+var param = [
+ "name",
+ "type",
+ "value",
+ "valuetype"
+];
+var pre = [
+ "width"
+];
+var progress = [
+ "max",
+ "value"
+];
+var q = [
+ "cite"
+];
+var script = [
+ "async",
+ "charset",
+ "crossorigin",
+ "defer",
+ "integrity",
+ "language",
+ "nomodule",
+ "nonce",
+ "referrerpolicy",
+ "src",
+ "type"
+];
+var select = [
+ "autocomplete",
+ "autofocus",
+ "disabled",
+ "form",
+ "multiple",
+ "name",
+ "required",
+ "size",
+ "tabindex"
+];
+var slot = [
+ "name"
+];
+var source = [
+ "media",
+ "sizes",
+ "src",
+ "srcset",
+ "type"
+];
+var style = [
+ "media",
+ "nonce",
+ "title",
+ "type"
+];
+var table = [
+ "align",
+ "bgcolor",
+ "border",
+ "cellpadding",
+ "cellspacing",
+ "frame",
+ "rules",
+ "summary",
+ "width"
+];
+var tbody = [
+ "align",
+ "char",
+ "charoff",
+ "valign"
+];
+var td = [
+ "abbr",
+ "align",
+ "axis",
+ "bgcolor",
+ "char",
+ "charoff",
+ "colspan",
+ "headers",
+ "height",
+ "nowrap",
+ "rowspan",
+ "scope",
+ "valign",
+ "width"
+];
+var textarea = [
+ "accesskey",
+ "autocomplete",
+ "autofocus",
+ "cols",
+ "dirname",
+ "disabled",
+ "form",
+ "maxlength",
+ "minlength",
+ "name",
+ "placeholder",
+ "readonly",
+ "required",
+ "rows",
+ "tabindex",
+ "wrap"
+];
+var tfoot = [
+ "align",
+ "char",
+ "charoff",
+ "valign"
+];
+var th = [
+ "abbr",
+ "align",
+ "axis",
+ "bgcolor",
+ "char",
+ "charoff",
+ "colspan",
+ "headers",
+ "height",
+ "nowrap",
+ "rowspan",
+ "scope",
+ "valign",
+ "width"
+];
+var thead = [
+ "align",
+ "char",
+ "charoff",
+ "valign"
+];
+var time = [
+ "datetime"
+];
+var tr = [
+ "align",
+ "bgcolor",
+ "char",
+ "charoff",
+ "valign"
+];
+var track = [
+ "default",
+ "kind",
+ "label",
+ "src",
+ "srclang"
+];
+var ul = [
+ "compact",
+ "type"
+];
+var video = [
+ "autoplay",
+ "controls",
+ "crossorigin",
+ "height",
+ "loop",
+ "muted",
+ "playsinline",
+ "poster",
+ "preload",
+ "src",
+ "width"
+];
+var index$1 = {
+ "*": [
+ "accesskey",
+ "autocapitalize",
+ "autofocus",
+ "class",
+ "contenteditable",
+ "dir",
+ "draggable",
+ "enterkeyhint",
+ "hidden",
+ "id",
+ "inputmode",
+ "is",
+ "itemid",
+ "itemprop",
+ "itemref",
+ "itemscope",
+ "itemtype",
+ "lang",
+ "nonce",
+ "slot",
+ "spellcheck",
+ "style",
+ "tabindex",
+ "title",
+ "translate"
+],
+ a: a,
+ abbr: abbr,
+ applet: applet,
+ area: area,
+ audio: audio,
+ base: base,
+ basefont: basefont,
+ bdo: bdo,
+ blockquote: blockquote,
+ body: body,
+ br: br,
+ button: button,
+ canvas: canvas,
+ caption: caption,
+ col: col,
+ colgroup: colgroup,
+ data: data$1,
+ del: del$1,
+ details: details,
+ dfn: dfn,
+ dialog: dialog,
+ dir: dir,
+ div: div,
+ dl: dl,
+ embed: embed$3,
+ fieldset: fieldset,
+ font: font,
+ form: form,
+ frame: frame,
+ frameset: frameset,
+ h1: h1,
+ h2: h2,
+ h3: h3,
+ h4: h4,
+ h5: h5,
+ h6: h6,
+ head: head,
+ hr: hr,
+ html: html,
+ iframe: iframe,
+ img: img,
+ input: input,
+ ins: ins,
+ isindex: isindex,
+ label: label,
+ legend: legend,
+ li: li,
+ link: link$1,
+ map: map$1,
+ menu: menu,
+ meta: meta,
+ meter: meter,
+ object: object,
+ ol: ol,
+ optgroup: optgroup,
+ option: option,
+ output: output,
+ p: p,
+ param: param,
+ pre: pre,
+ progress: progress,
+ q: q,
+ script: script,
+ select: select,
+ slot: slot,
+ source: source,
+ style: style,
+ table: table,
+ tbody: tbody,
+ td: td,
+ textarea: textarea,
+ tfoot: tfoot,
+ th: th,
+ thead: thead,
+ time: time,
+ tr: tr,
+ track: track,
+ ul: ul,
+ video: video
+};
+
+var htmlElementAttributes = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ a: a,
+ abbr: abbr,
+ applet: applet,
+ area: area,
+ audio: audio,
+ base: base,
+ basefont: basefont,
+ bdo: bdo,
+ blockquote: blockquote,
+ body: body,
+ br: br,
+ button: button,
+ canvas: canvas,
+ caption: caption,
+ col: col,
+ colgroup: colgroup,
+ data: data$1,
+ del: del$1,
+ details: details,
+ dfn: dfn,
+ dialog: dialog,
+ dir: dir,
+ div: div,
+ dl: dl,
+ embed: embed$3,
+ fieldset: fieldset,
+ font: font,
+ form: form,
+ frame: frame,
+ frameset: frameset,
+ h1: h1,
+ h2: h2,
+ h3: h3,
+ h4: h4,
+ h5: h5,
+ h6: h6,
+ head: head,
+ hr: hr,
+ html: html,
+ iframe: iframe,
+ img: img,
+ input: input,
+ ins: ins,
+ isindex: isindex,
+ label: label,
+ legend: legend,
+ li: li,
+ link: link$1,
+ map: map$1,
+ menu: menu,
+ meta: meta,
+ meter: meter,
+ object: object,
+ ol: ol,
+ optgroup: optgroup,
+ option: option,
+ output: output,
+ p: p,
+ param: param,
+ pre: pre,
+ progress: progress,
+ q: q,
+ script: script,
+ select: select,
+ slot: slot,
+ source: source,
+ style: style,
+ table: table,
+ tbody: tbody,
+ td: td,
+ textarea: textarea,
+ tfoot: tfoot,
+ th: th,
+ thead: thead,
+ time: time,
+ tr: tr,
+ track: track,
+ ul: ul,
+ video: video,
+ 'default': index$1
+});
+
+var htmlElementAttributes$1 = getCjsExportFromNamespace(htmlElementAttributes);
+
+var CSS_DISPLAY_TAGS = json$1.CSS_DISPLAY_TAGS,
+ CSS_DISPLAY_DEFAULT = json$1.CSS_DISPLAY_DEFAULT,
+ CSS_WHITE_SPACE_TAGS = json$1.CSS_WHITE_SPACE_TAGS,
+ CSS_WHITE_SPACE_DEFAULT = json$1.CSS_WHITE_SPACE_DEFAULT;
+var HTML_TAGS = arrayToMap(htmlTagNames$1);
+var HTML_ELEMENT_ATTRIBUTES = mapObject(htmlElementAttributes$1, arrayToMap);
+
+function arrayToMap(array) {
+ var map = Object.create(null);
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = array[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var value = _step.value;
+ map[value] = true;
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return map;
+}
+
+function mapObject(object, fn) {
+ var newObject = Object.create(null);
+
+ for (var _i = 0, _Object$keys = Object.keys(object); _i < _Object$keys.length; _i++) {
+ var key = _Object$keys[_i];
+ newObject[key] = fn(object[key], key);
+ }
+
+ return newObject;
+}
+
+function shouldPreserveContent(node, options) {
+ if (node.type === "element" && node.fullName === "template" && node.attrMap.lang && node.attrMap.lang !== "html") {
+ return true;
+ } // unterminated node in ie conditional comment
+ // e.g. <!--[if lt IE 9]><html><![endif]-->
+
+
+ if (node.type === "ieConditionalComment" && node.lastChild && !node.lastChild.isSelfClosing && !node.lastChild.endSourceSpan) {
+ return true;
+ } // incomplete html in ie conditional comment
+ // e.g. <!--[if lt IE 9]></div><![endif]-->
+
+
+ if (node.type === "ieConditionalComment" && !node.complete) {
+ return true;
+ } // top-level elements (excluding <template>, <style> and <script>) in Vue SFC are considered custom block
+ // custom blocks can be written in other languages so we should preserve them to not break the code
+
+
+ if (options.parser === "vue" && node.type === "element" && node.parent.type === "root" && ["template", "style", "script", // vue parser can be used for vue dom template as well, so we should still format top-level <html>
+ "html"].indexOf(node.fullName) === -1) {
+ return true;
+ } // TODO: handle non-text children in <pre>
+
+
+ if (isPreLikeNode(node) && node.children.some(function (child) {
+ return child.type !== "text" && child.type !== "interpolation";
+ })) {
+ return true;
+ }
+
+ return false;
+}
+
+function hasPrettierIgnore$3(node) {
+ if (node.type === "attribute" || isTextLikeNode(node)) {
+ return false;
+ }
+
+ if (!node.parent) {
+ return false;
+ }
+
+ if (typeof node.index !== "number" || node.index === 0) {
+ return false;
+ }
+
+ var prevNode = node.parent.children[node.index - 1];
+ return isPrettierIgnore$1(prevNode);
+}
+
+function isPrettierIgnore$1(node) {
+ return node.type === "comment" && node.value.trim() === "prettier-ignore";
+}
+
+function getPrettierIgnoreAttributeCommentData(value) {
+ var match = value.trim().match(/^prettier-ignore-attribute(?:\s+([^]+))?$/);
+
+ if (!match) {
+ return false;
+ }
+
+ if (!match[1]) {
+ return true;
+ }
+
+ return match[1].split(/\s+/);
+}
+/** there's no opening/closing tag or it's considered not breakable */
+
+
+function isTextLikeNode(node) {
+ return node.type === "text" || node.type === "comment";
+}
+
+function isScriptLikeTag(node) {
+ return node.type === "element" && (node.fullName === "script" || node.fullName === "style" || node.fullName === "svg:style");
+}
+
+function isFrontMatterNode(node) {
+ return node.type === "yaml" || node.type === "toml";
+}
+
+function canHaveInterpolation(node) {
+ return node.children && !isScriptLikeTag(node);
+}
+
+function isWhitespaceSensitiveNode(node) {
+ return isScriptLikeTag(node) || node.type === "interpolation" || isIndentationSensitiveNode(node);
+}
+
+function isIndentationSensitiveNode(node) {
+ return getNodeCssStyleWhiteSpace(node).startsWith("pre");
+}
+
+function isLeadingSpaceSensitiveNode(node) {
+ var isLeadingSpaceSensitive = _isLeadingSpaceSensitiveNode();
+
+ if (isLeadingSpaceSensitive && !node.prev && node.parent && node.parent.tagDefinition && node.parent.tagDefinition.ignoreFirstLf) {
+ return node.type === "interpolation";
+ }
+
+ return isLeadingSpaceSensitive;
+
+ function _isLeadingSpaceSensitiveNode() {
+ if (isFrontMatterNode(node)) {
+ return false;
+ }
+
+ if ((node.type === "text" || node.type === "interpolation") && node.prev && (node.prev.type === "text" || node.prev.type === "interpolation")) {
+ return true;
+ }
+
+ if (!node.parent || node.parent.cssDisplay === "none") {
+ return false;
+ }
+
+ if (isPreLikeNode(node.parent)) {
+ return true;
+ }
+
+ if (!node.prev && (node.parent.type === "root" || isScriptLikeTag(node.parent) || !isFirstChildLeadingSpaceSensitiveCssDisplay(node.parent.cssDisplay))) {
+ return false;
+ }
+
+ if (node.prev && !isNextLeadingSpaceSensitiveCssDisplay(node.prev.cssDisplay)) {
+ return false;
+ }
+
+ return true;
+ }
+}
+
+function isTrailingSpaceSensitiveNode(node) {
+ if (isFrontMatterNode(node)) {
+ return false;
+ }
+
+ if ((node.type === "text" || node.type === "interpolation") && node.next && (node.next.type === "text" || node.next.type === "interpolation")) {
+ return true;
+ }
+
+ if (!node.parent || node.parent.cssDisplay === "none") {
+ return false;
+ }
+
+ if (isPreLikeNode(node.parent)) {
+ return true;
+ }
+
+ if (!node.next && (node.parent.type === "root" || isScriptLikeTag(node.parent) || !isLastChildTrailingSpaceSensitiveCssDisplay(node.parent.cssDisplay))) {
+ return false;
+ }
+
+ if (node.next && !isPrevTrailingSpaceSensitiveCssDisplay(node.next.cssDisplay)) {
+ return false;
+ }
+
+ return true;
+}
+
+function isDanglingSpaceSensitiveNode(node) {
+ return isDanglingSpaceSensitiveCssDisplay(node.cssDisplay) && !isScriptLikeTag(node);
+}
+
+function forceNextEmptyLine(node) {
+ return isFrontMatterNode(node) || node.next && node.sourceSpan.end.line + 1 < node.next.sourceSpan.start.line;
+}
+/** firstChild leadingSpaces and lastChild trailingSpaces */
+
+
+function forceBreakContent(node) {
+ return forceBreakChildren(node) || node.type === "element" && node.children.length !== 0 && (["body", "script", "style"].indexOf(node.name) !== -1 || node.children.some(function (child) {
+ return hasNonTextChild(child);
+ })) || node.firstChild && node.firstChild === node.lastChild && hasLeadingLineBreak(node.firstChild) && (!node.lastChild.isTrailingSpaceSensitive || hasTrailingLineBreak(node.lastChild));
+}
+/** spaces between children */
+
+
+function forceBreakChildren(node) {
+ return node.type === "element" && node.children.length !== 0 && (["html", "head", "ul", "ol", "select"].indexOf(node.name) !== -1 || node.cssDisplay.startsWith("table") && node.cssDisplay !== "table-cell");
+}
+
+function preferHardlineAsLeadingSpaces(node) {
+ return preferHardlineAsSurroundingSpaces(node) || node.prev && preferHardlineAsTrailingSpaces(node.prev) || hasSurroundingLineBreak(node);
+}
+
+function preferHardlineAsTrailingSpaces(node) {
+ return preferHardlineAsSurroundingSpaces(node) || node.type === "element" && node.fullName === "br" || hasSurroundingLineBreak(node);
+}
+
+function hasSurroundingLineBreak(node) {
+ return hasLeadingLineBreak(node) && hasTrailingLineBreak(node);
+}
+
+function hasLeadingLineBreak(node) {
+ return node.hasLeadingSpaces && (node.prev ? node.prev.sourceSpan.end.line < node.sourceSpan.start.line : node.parent.type === "root" || node.parent.startSourceSpan.end.line < node.sourceSpan.start.line);
+}
+
+function hasTrailingLineBreak(node) {
+ return node.hasTrailingSpaces && (node.next ? node.next.sourceSpan.start.line > node.sourceSpan.end.line : node.parent.type === "root" || node.parent.endSourceSpan.start.line > node.sourceSpan.end.line);
+}
+
+function preferHardlineAsSurroundingSpaces(node) {
+ switch (node.type) {
+ case "ieConditionalComment":
+ case "comment":
+ case "directive":
+ return true;
+
+ case "element":
+ return ["script", "select"].indexOf(node.name) !== -1;
+ }
+
+ return false;
+}
+
+function getLastDescendant(node) {
+ return node.lastChild ? getLastDescendant(node.lastChild) : node;
+}
+
+function hasNonTextChild(node) {
+ return node.children && node.children.some(function (child) {
+ return child.type !== "text";
+ });
+}
+
+function inferScriptParser(node) {
+ if (node.name === "script" && !node.attrMap.src) {
+ if (!node.attrMap.lang && !node.attrMap.type || node.attrMap.type === "module" || node.attrMap.type === "text/javascript" || node.attrMap.type === "text/babel" || node.attrMap.type === "application/javascript") {
+ return "babel";
+ }
+
+ if (node.attrMap.type === "application/x-typescript" || node.attrMap.lang === "ts" || node.attrMap.lang === "tsx") {
+ return "typescript";
+ }
+
+ if (node.attrMap.type === "text/markdown") {
+ return "markdown";
+ }
+
+ if (node.attrMap.type.endsWith("json") || node.attrMap.type.endsWith("importmap")) {
+ return "json";
+ }
+ }
+
+ if (node.name === "style") {
+ if (!node.attrMap.lang || node.attrMap.lang === "postcss" || node.attrMap.lang === "css") {
+ return "css";
+ }
+
+ if (node.attrMap.lang === "scss") {
+ return "scss";
+ }
+
+ if (node.attrMap.lang === "less") {
+ return "less";
+ }
+ }
+
+ return null;
+}
+
+function isBlockLikeCssDisplay(cssDisplay) {
+ return cssDisplay === "block" || cssDisplay === "list-item" || cssDisplay.startsWith("table");
+}
+
+function isFirstChildLeadingSpaceSensitiveCssDisplay(cssDisplay) {
+ return !isBlockLikeCssDisplay(cssDisplay) && cssDisplay !== "inline-block";
+}
+
+function isLastChildTrailingSpaceSensitiveCssDisplay(cssDisplay) {
+ return !isBlockLikeCssDisplay(cssDisplay) && cssDisplay !== "inline-block";
+}
+
+function isPrevTrailingSpaceSensitiveCssDisplay(cssDisplay) {
+ return !isBlockLikeCssDisplay(cssDisplay);
+}
+
+function isNextLeadingSpaceSensitiveCssDisplay(cssDisplay) {
+ return !isBlockLikeCssDisplay(cssDisplay);
+}
+
+function isDanglingSpaceSensitiveCssDisplay(cssDisplay) {
+ return !isBlockLikeCssDisplay(cssDisplay) && cssDisplay !== "inline-block";
+}
+
+function isPreLikeNode(node) {
+ return getNodeCssStyleWhiteSpace(node).startsWith("pre");
+}
+
+function countParents(path) {
+ var predicate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
+ return true;
+ };
+ var counter = 0;
+
+ for (var i = path.stack.length - 1; i >= 0; i--) {
+ var value = path.stack[i];
+
+ if (value && typeof value === "object" && !Array.isArray(value) && predicate(value)) {
+ counter++;
+ }
+ }
+
+ return counter;
+}
+
+function hasParent(node, fn) {
+ var current = node;
+
+ while (current) {
+ if (fn(current)) {
+ return true;
+ }
+
+ current = current.parent;
+ }
+
+ return false;
+}
+
+function getNodeCssStyleDisplay(node, options) {
+ if (node.prev && node.prev.type === "comment") {
+ // <!-- display: block -->
+ var match = node.prev.value.match(/^\s*display:\s*([a-z]+)\s*$/);
+
+ if (match) {
+ return match[1];
+ }
+ }
+
+ var isInSvgForeignObject = false;
+
+ if (node.type === "element" && node.namespace === "svg") {
+ if (hasParent(node, function (parent) {
+ return parent.fullName === "svg:foreignObject";
+ })) {
+ isInSvgForeignObject = true;
+ } else {
+ return node.name === "svg" ? "inline-block" : "block";
+ }
+ }
+
+ switch (options.htmlWhitespaceSensitivity) {
+ case "strict":
+ return "inline";
+
+ case "ignore":
+ return "block";
+
+ default:
+ return node.type === "element" && (!node.namespace || isInSvgForeignObject) && CSS_DISPLAY_TAGS[node.name] || CSS_DISPLAY_DEFAULT;
+ }
+}
+
+function getNodeCssStyleWhiteSpace(node) {
+ return node.type === "element" && !node.namespace && CSS_WHITE_SPACE_TAGS[node.name] || CSS_WHITE_SPACE_DEFAULT;
+}
+
+function getMinIndentation(text) {
+ var minIndentation = Infinity;
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = text.split("\n")[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var lineText = _step2.value;
+
+ if (lineText.length === 0) {
+ continue;
+ }
+
+ if (/\S/.test(lineText[0])) {
+ return 0;
+ }
+
+ var indentation = lineText.match(/^\s*/)[0].length;
+
+ if (lineText.length === indentation) {
+ continue;
+ }
+
+ if (indentation < minIndentation) {
+ minIndentation = indentation;
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return minIndentation === Infinity ? 0 : minIndentation;
+}
+
+function dedentString(text) {
+ var minIndent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getMinIndentation(text);
+ return minIndent === 0 ? text : text.split("\n").map(function (lineText) {
+ return lineText.slice(minIndent);
+ }).join("\n");
+}
+
+function normalizeParts$1(parts) {
+ var newParts = [];
+ var restParts = parts.slice();
+
+ while (restParts.length !== 0) {
+ var part = restParts.shift();
+
+ if (!part) {
+ continue;
+ }
+
+ if (part.type === "concat") {
+ Array.prototype.unshift.apply(restParts, part.parts);
+ continue;
+ }
+
+ if (newParts.length !== 0 && typeof newParts[newParts.length - 1] === "string" && typeof part === "string") {
+ newParts.push(newParts.pop() + part);
+ continue;
+ }
+
+ newParts.push(part);
+ }
+
+ return newParts;
+}
+
+function identity$2(x) {
+ return x;
+}
+
+function shouldNotPrintClosingTag(node, options) {
+ return !node.isSelfClosing && !node.endSourceSpan && (hasPrettierIgnore$3(node) || shouldPreserveContent(node.parent, options));
+}
+
+function countChars(text, char) {
+ var counter = 0;
+
+ for (var i = 0; i < text.length; i++) {
+ if (text[i] === char) {
+ counter++;
+ }
+ }
+
+ return counter;
+}
+
+function unescapeQuoteEntities(text) {
+ return text.replace(/&apos;/g, "'").replace(/&quot;/g, '"');
+}
+
+var utils$5 = {
+ HTML_ELEMENT_ATTRIBUTES,
+ HTML_TAGS,
+ canHaveInterpolation,
+ countChars,
+ countParents,
+ dedentString,
+ forceBreakChildren,
+ forceBreakContent,
+ forceNextEmptyLine,
+ getLastDescendant,
+ getNodeCssStyleDisplay,
+ getNodeCssStyleWhiteSpace,
+ getPrettierIgnoreAttributeCommentData,
+ hasPrettierIgnore: hasPrettierIgnore$3,
+ identity: identity$2,
+ inferScriptParser,
+ isDanglingSpaceSensitiveNode,
+ isFrontMatterNode,
+ isIndentationSensitiveNode,
+ isLeadingSpaceSensitiveNode,
+ isPreLikeNode,
+ isScriptLikeTag,
+ isTextLikeNode,
+ isTrailingSpaceSensitiveNode,
+ isWhitespaceSensitiveNode,
+ normalizeParts: normalizeParts$1,
+ preferHardlineAsLeadingSpaces,
+ preferHardlineAsTrailingSpaces,
+ shouldNotPrintClosingTag,
+ shouldPreserveContent,
+ unescapeQuoteEntities
+};
+
+var canHaveInterpolation$1 = utils$5.canHaveInterpolation,
+ getNodeCssStyleDisplay$1 = utils$5.getNodeCssStyleDisplay,
+ isDanglingSpaceSensitiveNode$1 = utils$5.isDanglingSpaceSensitiveNode,
+ isIndentationSensitiveNode$1 = utils$5.isIndentationSensitiveNode,
+ isLeadingSpaceSensitiveNode$1 = utils$5.isLeadingSpaceSensitiveNode,
+ isTrailingSpaceSensitiveNode$1 = utils$5.isTrailingSpaceSensitiveNode,
+ isWhitespaceSensitiveNode$1 = utils$5.isWhitespaceSensitiveNode;
+var PREPROCESS_PIPELINE = [removeIgnorableFirstLf, mergeIeConditonalStartEndCommentIntoElementOpeningTag, mergeCdataIntoText, extractInterpolation, extractWhitespaces, addCssDisplay, addIsSelfClosing, addHasHtmComponentClosingTag, addIsSpaceSensitive, mergeSimpleElementIntoText];
+
+function preprocess$2(ast, options) {
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = PREPROCESS_PIPELINE[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var fn = _step.value;
+ ast = fn(ast, options);
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return ast;
+}
+
+function removeIgnorableFirstLf(ast
+/*, options */
+) {
+ return ast.map(function (node) {
+ if (node.type === "element" && node.tagDefinition.ignoreFirstLf && node.children.length !== 0 && node.children[0].type === "text" && node.children[0].value[0] === "\n") {
+ var text = node.children[0];
+ return node.clone({
+ children: text.value.length === 1 ? node.children.slice(1) : [].concat(text.clone({
+ value: text.value.slice(1)
+ }), node.children.slice(1))
+ });
+ }
+
+ return node;
+ });
+}
+
+function mergeIeConditonalStartEndCommentIntoElementOpeningTag(ast
+/*, options */
+) {
+ /**
+ * <!--[if ...]><!--><target><!--<![endif]-->
+ */
+ var isTarget = function isTarget(node) {
+ return node.type === "element" && node.prev && node.prev.type === "ieConditionalStartComment" && node.prev.sourceSpan.end.offset === node.startSourceSpan.start.offset && node.firstChild && node.firstChild.type === "ieConditionalEndComment" && node.firstChild.sourceSpan.start.offset === node.startSourceSpan.end.offset;
+ };
+
+ return ast.map(function (node) {
+ if (node.children) {
+ var isTargetResults = node.children.map(isTarget);
+
+ if (isTargetResults.some(Boolean)) {
+ var newChildren = [];
+
+ for (var i = 0; i < node.children.length; i++) {
+ var child = node.children[i];
+
+ if (isTargetResults[i + 1]) {
+ // ieConditionalStartComment
+ continue;
+ }
+
+ if (isTargetResults[i]) {
+ var ieConditionalStartComment = child.prev;
+ var ieConditionalEndComment = child.firstChild;
+ var ParseSourceSpan = child.sourceSpan.constructor;
+ var startSourceSpan = new ParseSourceSpan(ieConditionalStartComment.sourceSpan.start, ieConditionalEndComment.sourceSpan.end);
+ var sourceSpan = new ParseSourceSpan(startSourceSpan.start, child.sourceSpan.end);
+ newChildren.push(child.clone({
+ condition: ieConditionalStartComment.condition,
+ sourceSpan,
+ startSourceSpan,
+ children: child.children.slice(1)
+ }));
+ continue;
+ }
+
+ newChildren.push(child);
+ }
+
+ return node.clone({
+ children: newChildren
+ });
+ }
+ }
+
+ return node;
+ });
+}
+
+function mergeNodeIntoText(ast, shouldMerge, getValue) {
+ return ast.map(function (node) {
+ if (node.children) {
+ var shouldMergeResults = node.children.map(shouldMerge);
+
+ if (shouldMergeResults.some(Boolean)) {
+ var newChildren = [];
+
+ for (var i = 0; i < node.children.length; i++) {
+ var child = node.children[i];
+
+ if (child.type !== "text" && !shouldMergeResults[i]) {
+ newChildren.push(child);
+ continue;
+ }
+
+ var newChild = child.type === "text" ? child : child.clone({
+ type: "text",
+ value: getValue(child)
+ });
+
+ if (newChildren.length === 0 || newChildren[newChildren.length - 1].type !== "text") {
+ newChildren.push(newChild);
+ continue;
+ }
+
+ var lastChild = newChildren.pop();
+ var ParseSourceSpan = lastChild.sourceSpan.constructor;
+ newChildren.push(lastChild.clone({
+ value: lastChild.value + newChild.value,
+ sourceSpan: new ParseSourceSpan(lastChild.sourceSpan.start, newChild.sourceSpan.end)
+ }));
+ }
+
+ return node.clone({
+ children: newChildren
+ });
+ }
+ }
+
+ return node;
+ });
+}
+
+function mergeCdataIntoText(ast
+/*, options */
+) {
+ return mergeNodeIntoText(ast, function (node) {
+ return node.type === "cdata";
+ }, function (node) {
+ return `<![CDATA[${node.value}]]>`;
+ });
+}
+
+function mergeSimpleElementIntoText(ast
+/*, options */
+) {
+ var isSimpleElement = function isSimpleElement(node) {
+ return node.type === "element" && node.attrs.length === 0 && node.children.length === 1 && node.firstChild.type === "text" && // \xA0: non-breaking whitespace
+ !/[^\S\xA0]/.test(node.children[0].value) && !node.firstChild.hasLeadingSpaces && !node.firstChild.hasTrailingSpaces && node.isLeadingSpaceSensitive && !node.hasLeadingSpaces && node.isTrailingSpaceSensitive && !node.hasTrailingSpaces && node.prev && node.prev.type === "text" && node.next && node.next.type === "text";
+ };
+
+ return ast.map(function (node) {
+ if (node.children) {
+ var isSimpleElementResults = node.children.map(isSimpleElement);
+
+ if (isSimpleElementResults.some(Boolean)) {
+ var newChildren = [];
+
+ for (var i = 0; i < node.children.length; i++) {
+ var child = node.children[i];
+
+ if (isSimpleElementResults[i]) {
+ var lastChild = newChildren.pop();
+ var nextChild = node.children[++i];
+ var ParseSourceSpan = node.sourceSpan.constructor;
+ var isTrailingSpaceSensitive = nextChild.isTrailingSpaceSensitive,
+ hasTrailingSpaces = nextChild.hasTrailingSpaces;
+ newChildren.push(lastChild.clone({
+ value: lastChild.value + `<${child.rawName}>` + child.firstChild.value + `</${child.rawName}>` + nextChild.value,
+ sourceSpan: new ParseSourceSpan(lastChild.sourceSpan.start, nextChild.sourceSpan.end),
+ isTrailingSpaceSensitive,
+ hasTrailingSpaces
+ }));
+ } else {
+ newChildren.push(child);
+ }
+ }
+
+ return node.clone({
+ children: newChildren
+ });
+ }
+ }
+
+ return node;
+ });
+}
+
+function extractInterpolation(ast, options) {
+ if (options.parser === "html") {
+ return ast;
+ }
+
+ var interpolationRegex = /\{\{([\s\S]+?)\}\}/g;
+ return ast.map(function (node) {
+ if (!canHaveInterpolation$1(node)) {
+ return node;
+ }
+
+ var newChildren = [];
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = node.children[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var child = _step2.value;
+
+ if (child.type !== "text") {
+ newChildren.push(child);
+ continue;
+ }
+
+ var ParseSourceSpan = child.sourceSpan.constructor;
+ var startSourceSpan = child.sourceSpan.start;
+ var endSourceSpan = null;
+ var components = child.value.split(interpolationRegex);
+
+ for (var i = 0; i < components.length; i++, startSourceSpan = endSourceSpan) {
+ var value = components[i];
+
+ if (i % 2 === 0) {
+ endSourceSpan = startSourceSpan.moveBy(value.length);
+
+ if (value.length !== 0) {
+ newChildren.push({
+ type: "text",
+ value,
+ sourceSpan: new ParseSourceSpan(startSourceSpan, endSourceSpan)
+ });
+ }
+
+ continue;
+ }
+
+ endSourceSpan = startSourceSpan.moveBy(value.length + 4); // `{{` + `}}`
+
+ newChildren.push({
+ type: "interpolation",
+ sourceSpan: new ParseSourceSpan(startSourceSpan, endSourceSpan),
+ children: value.length === 0 ? [] : [{
+ type: "text",
+ value,
+ sourceSpan: new ParseSourceSpan(startSourceSpan.moveBy(2), endSourceSpan.moveBy(-2))
+ }]
+ });
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return node.clone({
+ children: newChildren
+ });
+ });
+}
+/**
+ * - add `hasLeadingSpaces` field
+ * - add `hasTrailingSpaces` field
+ * - add `hasDanglingSpaces` field for parent nodes
+ * - add `isWhitespaceSensitive`, `isIndentationSensitive` field for text nodes
+ * - remove insensitive whitespaces
+ */
+
+
+function extractWhitespaces(ast
+/*, options*/
+) {
+ var TYPE_WHITESPACE = "whitespace";
+ return ast.map(function (node) {
+ if (!node.children) {
+ return node;
+ }
+
+ if (node.children.length === 0 || node.children.length === 1 && node.children[0].type === "text" && node.children[0].value.trim().length === 0) {
+ return node.clone({
+ children: [],
+ hasDanglingSpaces: node.children.length !== 0
+ });
+ }
+
+ var isWhitespaceSensitive = isWhitespaceSensitiveNode$1(node);
+ var isIndentationSensitive = isIndentationSensitiveNode$1(node);
+ return node.clone({
+ isWhitespaceSensitive,
+ isIndentationSensitive,
+ children: node.children // extract whitespace nodes
+ .reduce(function (newChildren, child) {
+ if (child.type !== "text" || isWhitespaceSensitive) {
+ return newChildren.concat(child);
+ }
+
+ var localChildren = [];
+
+ var _child$value$match = child.value.match(/^(\s*)([\s\S]*?)(\s*)$/),
+ _child$value$match2 = _slicedToArray(_child$value$match, 4),
+ leadingSpaces = _child$value$match2[1],
+ text = _child$value$match2[2],
+ trailingSpaces = _child$value$match2[3];
+
+ if (leadingSpaces) {
+ localChildren.push({
+ type: TYPE_WHITESPACE
+ });
+ }
+
+ var ParseSourceSpan = child.sourceSpan.constructor;
+
+ if (text) {
+ localChildren.push({
+ type: "text",
+ value: text,
+ sourceSpan: new ParseSourceSpan(child.sourceSpan.start.moveBy(leadingSpaces.length), child.sourceSpan.end.moveBy(-trailingSpaces.length))
+ });
+ }
+
+ if (trailingSpaces) {
+ localChildren.push({
+ type: TYPE_WHITESPACE
+ });
+ }
+
+ return newChildren.concat(localChildren);
+ }, []) // set hasLeadingSpaces/hasTrailingSpaces and filter whitespace nodes
+ .reduce(function (newChildren, child, i, children) {
+ if (child.type === TYPE_WHITESPACE) {
+ return newChildren;
+ }
+
+ var hasLeadingSpaces = i !== 0 && children[i - 1].type === TYPE_WHITESPACE;
+ var hasTrailingSpaces = i !== children.length - 1 && children[i + 1].type === TYPE_WHITESPACE;
+ return newChildren.concat(Object.assign({}, child, {
+ hasLeadingSpaces,
+ hasTrailingSpaces
+ }));
+ }, [])
+ });
+ });
+}
+
+function addIsSelfClosing(ast
+/*, options */
+) {
+ return ast.map(function (node) {
+ return Object.assign(node, {
+ isSelfClosing: !node.children || node.type === "element" && (node.tagDefinition.isVoid || // self-closing
+ node.startSourceSpan === node.endSourceSpan)
+ });
+ });
+}
+
+function addHasHtmComponentClosingTag(ast, options) {
+ return ast.map(function (node) {
+ return node.type !== "element" ? node : Object.assign(node, {
+ hasHtmComponentClosingTag: node.endSourceSpan && /^<\s*\/\s*\/\s*>$/.test(options.originalText.slice(node.endSourceSpan.start.offset, node.endSourceSpan.end.offset))
+ });
+ });
+}
+
+function addCssDisplay(ast, options) {
+ return ast.map(function (node) {
+ return Object.assign(node, {
+ cssDisplay: getNodeCssStyleDisplay$1(node, options)
+ });
+ });
+}
+/**
+ * - add `isLeadingSpaceSensitive` field
+ * - add `isTrailingSpaceSensitive` field
+ * - add `isDanglingSpaceSensitive` field for parent nodes
+ */
+
+
+function addIsSpaceSensitive(ast
+/*, options */
+) {
+ return ast.map(function (node) {
+ if (!node.children) {
+ return node;
+ }
+
+ if (node.children.length === 0) {
+ return node.clone({
+ isDanglingSpaceSensitive: isDanglingSpaceSensitiveNode$1(node)
+ });
+ }
+
+ return node.clone({
+ children: node.children.map(function (child) {
+ return Object.assign({}, child, {
+ isLeadingSpaceSensitive: isLeadingSpaceSensitiveNode$1(child),
+ isTrailingSpaceSensitive: isTrailingSpaceSensitiveNode$1(child)
+ });
+ }).map(function (child, index, children) {
+ return Object.assign({}, child, {
+ isLeadingSpaceSensitive: index === 0 ? child.isLeadingSpaceSensitive : children[index - 1].isTrailingSpaceSensitive && child.isLeadingSpaceSensitive,
+ isTrailingSpaceSensitive: index === children.length - 1 ? child.isTrailingSpaceSensitive : children[index + 1].isLeadingSpaceSensitive && child.isTrailingSpaceSensitive
+ });
+ })
+ });
+ });
+}
+
+var preprocess_1$2 = preprocess$2;
+
+function hasPragma$3(text) {
+ return /^\s*<!--\s*@(format|prettier)\s*-->/.test(text);
+}
+
+function insertPragma$6(text) {
+ return "<!-- @format -->\n\n" + text.replace(/^\s*\n/, "");
+}
+
+var pragma$4 = {
+ hasPragma: hasPragma$3,
+ insertPragma: insertPragma$6
+};
+
+var _require$$0$builders$8 = doc.builders,
+ concat$e = _require$$0$builders$8.concat,
+ group$e = _require$$0$builders$8.group;
+/**
+ * v-for="... in ..."
+ * v-for="... of ..."
+ * v-for="(..., ...) in ..."
+ * v-for="(..., ...) of ..."
+ */
+
+function printVueFor(value, textToDoc) {
+ var _parseVueFor = parseVueFor(value),
+ left = _parseVueFor.left,
+ operator = _parseVueFor.operator,
+ right = _parseVueFor.right;
+
+ return concat$e([group$e(textToDoc(`function _(${left}) {}`, {
+ parser: "babel",
+ __isVueForBindingLeft: true
+ })), " ", operator, " ", textToDoc(right, {
+ parser: "__js_expression"
+ })]);
+} // modified from https://github.com/vuejs/vue/blob/v2.5.17/src/compiler/parser/index.js#L370-L387
+
+
+function parseVueFor(value) {
+ var forAliasRE = /([^]*?)\s+(in|of)\s+([^]*)/;
+ var forIteratorRE = /,([^,}\]]*)(?:,([^,}\]]*))?$/;
+ var stripParensRE = /^\(|\)$/g;
+ var inMatch = value.match(forAliasRE);
+
+ if (!inMatch) {
+ return;
+ }
+
+ var res = {};
+ res.for = inMatch[3].trim();
+ var alias = inMatch[1].trim().replace(stripParensRE, "");
+ var iteratorMatch = alias.match(forIteratorRE);
+
+ if (iteratorMatch) {
+ res.alias = alias.replace(forIteratorRE, "");
+ res.iterator1 = iteratorMatch[1].trim();
+
+ if (iteratorMatch[2]) {
+ res.iterator2 = iteratorMatch[2].trim();
+ }
+ } else {
+ res.alias = alias;
+ }
+
+ return {
+ left: `${[res.alias, res.iterator1, res.iterator2].filter(Boolean).join(",")}`,
+ operator: inMatch[2],
+ right: res.for
+ };
+}
+
+function printVueSlotScope(value, textToDoc) {
+ return textToDoc(`function _(${value}) {}`, {
+ parser: "babel",
+ __isVueSlotScope: true
+ });
+}
+
+function isVueEventBindingExpression$2(eventBindingValue) {
+ // https://github.com/vuejs/vue/blob/v2.5.17/src/compiler/codegen/events.js#L3-L4
+ // arrow function or anonymous function
+ var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/; // simple member expression chain (a, a.b, a['b'], a["b"], a[0], a[b])
+
+ var simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/; // https://github.com/vuejs/vue/blob/v2.5.17/src/compiler/helpers.js#L104
+
+ var value = eventBindingValue.trim();
+ return fnExpRE.test(value) || simplePathRE.test(value);
+}
+
+var syntaxVue = {
+ isVueEventBindingExpression: isVueEventBindingExpression$2,
+ printVueFor,
+ printVueSlotScope
+};
+
+var parseSrcset = createCommonjsModule(function (module) {
+ /**
+ * Srcset Parser
+ *
+ * By Alex Bell | MIT License
+ *
+ * JS Parser for the string value that appears in markup <img srcset="here">
+ *
+ * @returns Array [{url: _, d: _, w: _, h:_}, ...]
+ *
+ * Based super duper closely on the reference algorithm at:
+ * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute
+ *
+ * Most comments are copied in directly from the spec
+ * (except for comments in parens).
+ */
+ (function (root, factory) {
+ if ( module.exports) {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory();
+ } else {
+ // Browser globals (root is window)
+ root.parseSrcset = factory();
+ }
+ })(this, function () {
+ // 1. Let input be the value passed to this algorithm.
+ return function (input, options) {
+ var logger = options && options.logger || console; // UTILITY FUNCTIONS
+ // Manual is faster than RegEx
+ // http://bjorn.tipling.com/state-and-regular-expressions-in-javascript
+ // http://jsperf.com/whitespace-character/5
+
+ function isSpace(c) {
+ return c === "\u0020" || // space
+ c === "\u0009" || // horizontal tab
+ c === "\u000A" || // new line
+ c === "\u000C" || // form feed
+ c === "\u000D"; // carriage return
+ }
+
+ function collectCharacters(regEx) {
+ var chars,
+ match = regEx.exec(input.substring(pos));
+
+ if (match) {
+ chars = match[0];
+ pos += chars.length;
+ return chars;
+ }
+ }
+
+ var inputLength = input.length,
+ // (Don't use \s, to avoid matching non-breaking space)
+ regexLeadingSpaces = /^[ \t\n\r\u000c]+/,
+ regexLeadingCommasOrSpaces = /^[, \t\n\r\u000c]+/,
+ regexLeadingNotSpaces = /^[^ \t\n\r\u000c]+/,
+ regexTrailingCommas = /[,]+$/,
+ regexNonNegativeInteger = /^\d+$/,
+ // ( Positive or negative or unsigned integers or decimals, without or without exponents.
+ // Must include at least one digit.
+ // According to spec tests any decimal point must be followed by a digit.
+ // No leading plus sign is allowed.)
+ // https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number
+ regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,
+ url,
+ descriptors,
+ currentDescriptor,
+ state,
+ c,
+ // 2. Let position be a pointer into input, initially pointing at the start
+ // of the string.
+ pos = 0,
+ // 3. Let candidates be an initially empty source set.
+ candidates = []; // 4. Splitting loop: Collect a sequence of characters that are space
+ // characters or U+002C COMMA characters. If any U+002C COMMA characters
+ // were collected, that is a parse error.
+
+ while (true) {
+ collectCharacters(regexLeadingCommasOrSpaces); // 5. If position is past the end of input, return candidates and abort these steps.
+
+ if (pos >= inputLength) {
+ return candidates; // (we're done, this is the sole return path)
+ } // 6. Collect a sequence of characters that are not space characters,
+ // and let that be url.
+
+
+ url = collectCharacters(regexLeadingNotSpaces); // 7. Let descriptors be a new empty list.
+
+ descriptors = []; // 8. If url ends with a U+002C COMMA character (,), follow these substeps:
+ // (1). Remove all trailing U+002C COMMA characters from url. If this removed
+ // more than one character, that is a parse error.
+
+ if (url.slice(-1) === ",") {
+ url = url.replace(regexTrailingCommas, ""); // (Jump ahead to step 9 to skip tokenization and just push the candidate).
+
+ parseDescriptors(); // Otherwise, follow these substeps:
+ } else {
+ tokenize();
+ } // (close else of step 8)
+ // 16. Return to the step labeled splitting loop.
+
+ } // (Close of big while loop.)
+
+ /**
+ * Tokenizes descriptor properties prior to parsing
+ * Returns undefined.
+ */
+
+
+ function tokenize() {
+ // 8.1. Descriptor tokeniser: Skip whitespace
+ collectCharacters(regexLeadingSpaces); // 8.2. Let current descriptor be the empty string.
+
+ currentDescriptor = ""; // 8.3. Let state be in descriptor.
+
+ state = "in descriptor";
+
+ while (true) {
+ // 8.4. Let c be the character at position.
+ c = input.charAt(pos); // Do the following depending on the value of state.
+ // For the purpose of this step, "EOF" is a special character representing
+ // that position is past the end of input.
+ // In descriptor
+
+ if (state === "in descriptor") {
+ // Do the following, depending on the value of c:
+ // Space character
+ // If current descriptor is not empty, append current descriptor to
+ // descriptors and let current descriptor be the empty string.
+ // Set state to after descriptor.
+ if (isSpace(c)) {
+ if (currentDescriptor) {
+ descriptors.push(currentDescriptor);
+ currentDescriptor = "";
+ state = "after descriptor";
+ } // U+002C COMMA (,)
+ // Advance position to the next character in input. If current descriptor
+ // is not empty, append current descriptor to descriptors. Jump to the step
+ // labeled descriptor parser.
+
+ } else if (c === ",") {
+ pos += 1;
+
+ if (currentDescriptor) {
+ descriptors.push(currentDescriptor);
+ }
+
+ parseDescriptors();
+ return; // U+0028 LEFT PARENTHESIS (()
+ // Append c to current descriptor. Set state to in parens.
+ } else if (c === "\u0028") {
+ currentDescriptor = currentDescriptor + c;
+ state = "in parens"; // EOF
+ // If current descriptor is not empty, append current descriptor to
+ // descriptors. Jump to the step labeled descriptor parser.
+ } else if (c === "") {
+ if (currentDescriptor) {
+ descriptors.push(currentDescriptor);
+ }
+
+ parseDescriptors();
+ return; // Anything else
+ // Append c to current descriptor.
+ } else {
+ currentDescriptor = currentDescriptor + c;
+ } // (end "in descriptor"
+ // In parens
+
+ } else if (state === "in parens") {
+ // U+0029 RIGHT PARENTHESIS ())
+ // Append c to current descriptor. Set state to in descriptor.
+ if (c === ")") {
+ currentDescriptor = currentDescriptor + c;
+ state = "in descriptor"; // EOF
+ // Append current descriptor to descriptors. Jump to the step labeled
+ // descriptor parser.
+ } else if (c === "") {
+ descriptors.push(currentDescriptor);
+ parseDescriptors();
+ return; // Anything else
+ // Append c to current descriptor.
+ } else {
+ currentDescriptor = currentDescriptor + c;
+ } // After descriptor
+
+ } else if (state === "after descriptor") {
+ // Do the following, depending on the value of c:
+ // Space character: Stay in this state.
+ if (isSpace(c)) ; else if (c === "") {
+ parseDescriptors();
+ return; // Anything else
+ // Set state to in descriptor. Set position to the previous character in input.
+ } else {
+ state = "in descriptor";
+ pos -= 1;
+ }
+ } // Advance position to the next character in input.
+
+
+ pos += 1; // Repeat this step.
+ } // (close while true loop)
+
+ }
+ /**
+ * Adds descriptor properties to a candidate, pushes to the candidates array
+ * @return undefined
+ */
+ // Declared outside of the while loop so that it's only created once.
+
+
+ function parseDescriptors() {
+ // 9. Descriptor parser: Let error be no.
+ var pError = false,
+ // 10. Let width be absent.
+ // 11. Let density be absent.
+ // 12. Let future-compat-h be absent. (We're implementing it now as h)
+ w,
+ d,
+ h,
+ i,
+ candidate = {},
+ desc,
+ lastChar,
+ value,
+ intVal,
+ floatVal; // 13. For each descriptor in descriptors, run the appropriate set of steps
+ // from the following list:
+
+ for (i = 0; i < descriptors.length; i++) {
+ desc = descriptors[i];
+ lastChar = desc[desc.length - 1];
+ value = desc.substring(0, desc.length - 1);
+ intVal = parseInt(value, 10);
+ floatVal = parseFloat(value); // If the descriptor consists of a valid non-negative integer followed by
+ // a U+0077 LATIN SMALL LETTER W character
+
+ if (regexNonNegativeInteger.test(value) && lastChar === "w") {
+ // If width and density are not both absent, then let error be yes.
+ if (w || d) {
+ pError = true;
+ } // Apply the rules for parsing non-negative integers to the descriptor.
+ // If the result is zero, let error be yes.
+ // Otherwise, let width be the result.
+
+
+ if (intVal === 0) {
+ pError = true;
+ } else {
+ w = intVal;
+ } // If the descriptor consists of a valid floating-point number followed by
+ // a U+0078 LATIN SMALL LETTER X character
+
+ } else if (regexFloatingPoint.test(value) && lastChar === "x") {
+ // If width, density and future-compat-h are not all absent, then let error
+ // be yes.
+ if (w || d || h) {
+ pError = true;
+ } // Apply the rules for parsing floating-point number values to the descriptor.
+ // If the result is less than zero, let error be yes. Otherwise, let density
+ // be the result.
+
+
+ if (floatVal < 0) {
+ pError = true;
+ } else {
+ d = floatVal;
+ } // If the descriptor consists of a valid non-negative integer followed by
+ // a U+0068 LATIN SMALL LETTER H character
+
+ } else if (regexNonNegativeInteger.test(value) && lastChar === "h") {
+ // If height and density are not both absent, then let error be yes.
+ if (h || d) {
+ pError = true;
+ } // Apply the rules for parsing non-negative integers to the descriptor.
+ // If the result is zero, let error be yes. Otherwise, let future-compat-h
+ // be the result.
+
+
+ if (intVal === 0) {
+ pError = true;
+ } else {
+ h = intVal;
+ } // Anything else, Let error be yes.
+
+ } else {
+ pError = true;
+ }
+ } // (close step 13 for loop)
+ // 15. If error is still no, then append a new image source to candidates whose
+ // URL is url, associated with a width width if not absent and a pixel
+ // density density if not absent. Otherwise, there is a parse error.
+
+
+ if (!pError) {
+ candidate.url = url;
+
+ if (w) {
+ candidate.w = w;
+ }
+
+ if (d) {
+ candidate.d = d;
+ }
+
+ if (h) {
+ candidate.h = h;
+ }
+
+ candidates.push(candidate);
+ } else if (logger && logger.error) {
+ logger.error("Invalid srcset descriptor found in '" + input + "' at '" + desc + "'.");
+ }
+ } // (close parseDescriptors fn)
+
+ };
+ });
+});
+
+var _require$$0$builders$9 = doc.builders,
+ concat$f = _require$$0$builders$9.concat,
+ ifBreak$6 = _require$$0$builders$9.ifBreak,
+ join$a = _require$$0$builders$9.join,
+ line$7 = _require$$0$builders$9.line;
+
+function printImgSrcset(value) {
+ var srcset = parseSrcset(value, {
+ logger: {
+ error(message) {
+ throw new Error(message);
+ }
+
+ }
+ });
+ var hasW = srcset.some(function (src) {
+ return src.w;
+ });
+ var hasH = srcset.some(function (src) {
+ return src.h;
+ });
+ var hasX = srcset.some(function (src) {
+ return src.d;
+ });
+
+ if (hasW + hasH + hasX !== 1) {
+ throw new Error(`Mixed descriptor in srcset is not supported`);
+ }
+
+ var key = hasW ? "w" : hasH ? "h" : "d";
+ var unit = hasW ? "w" : hasH ? "h" : "x";
+
+ var getMax = function getMax(values) {
+ return Math.max.apply(Math, values);
+ };
+
+ var urls = srcset.map(function (src) {
+ return src.url;
+ });
+ var maxUrlLength = getMax(urls.map(function (url) {
+ return url.length;
+ }));
+ var descriptors = srcset.map(function (src) {
+ return src[key];
+ }).map(function (descriptor) {
+ return descriptor ? descriptor.toString() : "";
+ });
+ var descriptorLeftLengths = descriptors.map(function (descriptor) {
+ var index = descriptor.indexOf(".");
+ return index === -1 ? descriptor.length : index;
+ });
+ var maxDescriptorLeftLength = getMax(descriptorLeftLengths);
+ return join$a(concat$f([",", line$7]), urls.map(function (url, index) {
+ var parts = [url];
+ var descriptor = descriptors[index];
+
+ if (descriptor) {
+ var urlPadding = maxUrlLength - url.length + 1;
+ var descriptorPadding = maxDescriptorLeftLength - descriptorLeftLengths[index];
+ var alignment = " ".repeat(urlPadding + descriptorPadding);
+ parts.push(ifBreak$6(alignment, " "), descriptor + unit);
+ }
+
+ return concat$f(parts);
+ }));
+}
+
+var syntaxAttribute = {
+ printImgSrcset
+};
+
+var builders = doc.builders,
+ _require$$0$utils = doc.utils,
+ stripTrailingHardline$2 = _require$$0$utils.stripTrailingHardline,
+ mapDoc$7 = _require$$0$utils.mapDoc;
+var breakParent$4 = builders.breakParent,
+ dedentToRoot$2 = builders.dedentToRoot,
+ fill$5 = builders.fill,
+ group$f = builders.group,
+ hardline$c = builders.hardline,
+ ifBreak$7 = builders.ifBreak,
+ indent$9 = builders.indent,
+ join$b = builders.join,
+ line$8 = builders.line,
+ literalline$6 = builders.literalline,
+ markAsRoot$4 = builders.markAsRoot,
+ softline$7 = builders.softline;
+var countChars$1 = utils$5.countChars,
+ countParents$1 = utils$5.countParents,
+ dedentString$1 = utils$5.dedentString,
+ forceBreakChildren$1 = utils$5.forceBreakChildren,
+ forceBreakContent$1 = utils$5.forceBreakContent,
+ forceNextEmptyLine$1 = utils$5.forceNextEmptyLine,
+ getLastDescendant$1 = utils$5.getLastDescendant,
+ getPrettierIgnoreAttributeCommentData$1 = utils$5.getPrettierIgnoreAttributeCommentData,
+ hasPrettierIgnore$4 = utils$5.hasPrettierIgnore,
+ inferScriptParser$1 = utils$5.inferScriptParser,
+ isScriptLikeTag$1 = utils$5.isScriptLikeTag,
+ isTextLikeNode$1 = utils$5.isTextLikeNode,
+ normalizeParts$2 = utils$5.normalizeParts,
+ preferHardlineAsLeadingSpaces$1 = utils$5.preferHardlineAsLeadingSpaces,
+ shouldNotPrintClosingTag$1 = utils$5.shouldNotPrintClosingTag,
+ shouldPreserveContent$1 = utils$5.shouldPreserveContent,
+ unescapeQuoteEntities$1 = utils$5.unescapeQuoteEntities;
+var replaceEndOfLineWith$2 = util.replaceEndOfLineWith;
+var insertPragma$7 = pragma$4.insertPragma;
+var printVueFor$1 = syntaxVue.printVueFor,
+ printVueSlotScope$1 = syntaxVue.printVueSlotScope,
+ isVueEventBindingExpression$3 = syntaxVue.isVueEventBindingExpression;
+var printImgSrcset$1 = syntaxAttribute.printImgSrcset;
+
+function concat$g(parts) {
+ var newParts = normalizeParts$2(parts);
+ return newParts.length === 0 ? "" : newParts.length === 1 ? newParts[0] : builders.concat(newParts);
+}
+
+function embed$4(path, print, textToDoc, options) {
+ var node = path.getValue();
+
+ switch (node.type) {
+ case "text":
+ {
+ if (isScriptLikeTag$1(node.parent)) {
+ var parser = inferScriptParser$1(node.parent);
+
+ if (parser) {
+ var value = parser === "markdown" ? dedentString$1(node.value.replace(/^[^\S\n]*?\n/, "")) : node.value;
+ return builders.concat([concat$g([breakParent$4, printOpeningTagPrefix(node, options), stripTrailingHardline$2(textToDoc(value, {
+ parser
+ })), printClosingTagSuffix(node, options)])]);
+ }
+ } else if (node.parent.type === "interpolation") {
+ return concat$g([indent$9(concat$g([line$8, textToDoc(node.value, Object.assign({
+ __isInHtmlInterpolation: true // to avoid unexpected `}}`
+
+ }, options.parser === "angular" ? {
+ parser: "__ng_interpolation",
+ trailingComma: "none"
+ } : options.parser === "vue" ? {
+ parser: "__vue_expression"
+ } : {
+ parser: "__js_expression"
+ }))])), node.parent.next && needsToBorrowPrevClosingTagEndMarker(node.parent.next) ? " " : line$8]);
+ }
+
+ break;
+ }
+
+ case "attribute":
+ {
+ if (!node.value) {
+ break;
+ } // lit-html: html`<my-element obj=${obj}></my-element>`
+
+
+ if (/^PRETTIER_HTML_PLACEHOLDER_\d+_\d+_IN_JS$/.test(options.originalText.slice(node.valueSpan.start.offset, node.valueSpan.end.offset))) {
+ return concat$g([node.rawName, "=", node.value]);
+ } // lwc: html`<my-element data-for={value}></my-element>`
+
+
+ if (options.parser === "lwc") {
+ var interpolationRegex = /^\{[\s\S]*\}$/;
+
+ if (interpolationRegex.test(options.originalText.slice(node.valueSpan.start.offset, node.valueSpan.end.offset))) {
+ return concat$g([node.rawName, "=", node.value]);
+ }
+ }
+
+ var embeddedAttributeValueDoc = printEmbeddedAttributeValue(node, function (code, opts) {
+ return (// strictly prefer single quote to avoid unnecessary html entity escape
+ textToDoc(code, Object.assign({
+ __isInHtmlAttribute: true
+ }, opts))
+ );
+ }, options);
+
+ if (embeddedAttributeValueDoc) {
+ return concat$g([node.rawName, '="', group$f(mapDoc$7(embeddedAttributeValueDoc, function (doc) {
+ return typeof doc === "string" ? doc.replace(/"/g, "&quot;") : doc;
+ })), '"']);
+ }
+
+ break;
+ }
+
+ case "yaml":
+ return markAsRoot$4(concat$g(["---", hardline$c, node.value.trim().length === 0 ? "" : textToDoc(node.value, {
+ parser: "yaml"
+ }), "---"]));
+ }
+}
+
+function genericPrint$5(path, options, print) {
+ var node = path.getValue();
+
+ switch (node.type) {
+ case "root":
+ // use original concat to not break stripTrailingHardline
+ return builders.concat([group$f(printChildren$2(path, options, print)), hardline$c]);
+
+ case "element":
+ case "ieConditionalComment":
+ {
+ /**
+ * do not break:
+ *
+ * <div>{{
+ * ~
+ * interpolation
+ * }}</div>
+ * ~
+ *
+ * exception: break if the opening tag breaks
+ *
+ * <div
+ * long
+ * ~
+ * >{{
+ * interpolation
+ * }}</div
+ * ~
+ * >
+ */
+ var shouldHugContent = node.children.length === 1 && node.firstChild.type === "interpolation" && node.firstChild.isLeadingSpaceSensitive && !node.firstChild.hasLeadingSpaces && node.lastChild.isTrailingSpaceSensitive && !node.lastChild.hasTrailingSpaces;
+ var attrGroupId = Symbol("element-attr-group-id");
+ return concat$g([group$f(concat$g([group$f(printOpeningTag(path, options, print), {
+ id: attrGroupId
+ }), node.children.length === 0 ? node.hasDanglingSpaces && node.isDanglingSpaceSensitive ? line$8 : "" : concat$g([forceBreakContent$1(node) ? breakParent$4 : "", function (childrenDoc) {
+ return shouldHugContent ? ifBreak$7(indent$9(childrenDoc), childrenDoc, {
+ groupId: attrGroupId
+ }) : isScriptLikeTag$1(node) && node.parent.type === "root" && options.parser === "vue" && !options.vueIndentScriptAndStyle ? childrenDoc : indent$9(childrenDoc);
+ }(concat$g([shouldHugContent ? ifBreak$7(softline$7, "", {
+ groupId: attrGroupId
+ }) : node.firstChild.hasLeadingSpaces && node.firstChild.isLeadingSpaceSensitive ? line$8 : node.firstChild.type === "text" && node.isWhitespaceSensitive && node.isIndentationSensitive ? dedentToRoot$2(softline$7) : softline$7, printChildren$2(path, options, print)])), (node.next ? needsToBorrowPrevClosingTagEndMarker(node.next) : needsToBorrowLastChildClosingTagEndMarker(node.parent)) ? node.lastChild.hasTrailingSpaces && node.lastChild.isTrailingSpaceSensitive ? " " : "" : shouldHugContent ? ifBreak$7(softline$7, "", {
+ groupId: attrGroupId
+ }) : node.lastChild.hasTrailingSpaces && node.lastChild.isTrailingSpaceSensitive ? line$8 : (node.lastChild.type === "comment" || node.lastChild.type === "text" && node.isWhitespaceSensitive && node.isIndentationSensitive) && new RegExp(`\\n\\s{${options.tabWidth * countParents$1(path, function (n) {
+ return n.parent && n.parent.type !== "root";
+ })}}$`).test(node.lastChild.value) ?
+ /**
+ * <div>
+ * <pre>
+ * something
+ * </pre>
+ * ~
+ * </div>
+ */
+ "" : softline$7])])), printClosingTag(node, options)]);
+ }
+
+ case "ieConditionalStartComment":
+ case "ieConditionalEndComment":
+ return concat$g([printOpeningTagStart(node), printClosingTagEnd(node)]);
+
+ case "interpolation":
+ return concat$g([printOpeningTagStart(node, options), concat$g(path.map(print, "children")), printClosingTagEnd(node, options)]);
+
+ case "text":
+ {
+ if (node.parent.type === "interpolation") {
+ // replace the trailing literalline with hardline for better readability
+ var trailingNewlineRegex = /\n[^\S\n]*?$/;
+ var hasTrailingNewline = trailingNewlineRegex.test(node.value);
+ var value = hasTrailingNewline ? node.value.replace(trailingNewlineRegex, "") : node.value;
+ return concat$g([concat$g(replaceEndOfLineWith$2(value, literalline$6)), hasTrailingNewline ? hardline$c : ""]);
+ }
+
+ return fill$5(normalizeParts$2([].concat(printOpeningTagPrefix(node, options), getTextValueParts(node), printClosingTagSuffix(node, options))));
+ }
+
+ case "docType":
+ return concat$g([group$f(concat$g([printOpeningTagStart(node, options), " ", node.value.replace(/^html\b/i, "html").replace(/\s+/g, " ")])), printClosingTagEnd(node, options)]);
+
+ case "comment":
+ {
+ return concat$g([printOpeningTagPrefix(node, options), concat$g(replaceEndOfLineWith$2(options.originalText.slice(options.locStart(node), options.locEnd(node)), literalline$6)), printClosingTagSuffix(node, options)]);
+ }
+
+ case "attribute":
+ {
+ if (node.value === null) {
+ return node.rawName;
+ }
+
+ var _value = unescapeQuoteEntities$1(node.value);
+
+ var singleQuoteCount = countChars$1(_value, "'");
+ var doubleQuoteCount = countChars$1(_value, '"');
+ var quote = singleQuoteCount < doubleQuoteCount ? "'" : '"';
+ return concat$g([node.rawName, concat$g(["=", quote, concat$g(replaceEndOfLineWith$2(quote === '"' ? _value.replace(/"/g, "&quot;") : _value.replace(/'/g, "&apos;"), literalline$6)), quote])]);
+ }
+
+ case "yaml":
+ case "toml":
+ return concat$g(replaceEndOfLineWith$2(node.raw, literalline$6));
+
+ default:
+ throw new Error(`Unexpected node type ${node.type}`);
+ }
+}
+
+function printChildren$2(path, options, print) {
+ var node = path.getValue();
+
+ if (forceBreakChildren$1(node)) {
+ return concat$g([breakParent$4, concat$g(path.map(function (childPath) {
+ var childNode = childPath.getValue();
+ var prevBetweenLine = !childNode.prev ? "" : printBetweenLine(childNode.prev, childNode);
+ return concat$g([!prevBetweenLine ? "" : concat$g([prevBetweenLine, forceNextEmptyLine$1(childNode.prev) ? hardline$c : ""]), printChild(childPath)]);
+ }, "children"))]);
+ }
+
+ var groupIds = node.children.map(function () {
+ return Symbol("");
+ });
+ return concat$g(path.map(function (childPath, childIndex) {
+ var childNode = childPath.getValue();
+
+ if (isTextLikeNode$1(childNode)) {
+ if (childNode.prev && isTextLikeNode$1(childNode.prev)) {
+ var _prevBetweenLine = printBetweenLine(childNode.prev, childNode);
+
+ if (_prevBetweenLine) {
+ if (forceNextEmptyLine$1(childNode.prev)) {
+ return concat$g([hardline$c, hardline$c, printChild(childPath)]);
+ }
+
+ return concat$g([_prevBetweenLine, printChild(childPath)]);
+ }
+ }
+
+ return printChild(childPath);
+ }
+
+ var prevParts = [];
+ var leadingParts = [];
+ var trailingParts = [];
+ var nextParts = [];
+ var prevBetweenLine = childNode.prev ? printBetweenLine(childNode.prev, childNode) : "";
+ var nextBetweenLine = childNode.next ? printBetweenLine(childNode, childNode.next) : "";
+
+ if (prevBetweenLine) {
+ if (forceNextEmptyLine$1(childNode.prev)) {
+ prevParts.push(hardline$c, hardline$c);
+ } else if (prevBetweenLine === hardline$c) {
+ prevParts.push(hardline$c);
+ } else {
+ if (isTextLikeNode$1(childNode.prev)) {
+ leadingParts.push(prevBetweenLine);
+ } else {
+ leadingParts.push(ifBreak$7("", softline$7, {
+ groupId: groupIds[childIndex - 1]
+ }));
+ }
+ }
+ }
+
+ if (nextBetweenLine) {
+ if (forceNextEmptyLine$1(childNode)) {
+ if (isTextLikeNode$1(childNode.next)) {
+ nextParts.push(hardline$c, hardline$c);
+ }
+ } else if (nextBetweenLine === hardline$c) {
+ if (isTextLikeNode$1(childNode.next)) {
+ nextParts.push(hardline$c);
+ }
+ } else {
+ trailingParts.push(nextBetweenLine);
+ }
+ }
+
+ return concat$g([].concat(prevParts, group$f(concat$g([concat$g(leadingParts), group$f(concat$g([printChild(childPath), concat$g(trailingParts)]), {
+ id: groupIds[childIndex]
+ })])), nextParts));
+ }, "children"));
+
+ function printChild(childPath) {
+ var child = childPath.getValue();
+
+ if (hasPrettierIgnore$4(child)) {
+ return concat$g([].concat(printOpeningTagPrefix(child, options), replaceEndOfLineWith$2(options.originalText.slice(options.locStart(child) + (child.prev && needsToBorrowNextOpeningTagStartMarker(child.prev) ? printOpeningTagStartMarker(child).length : 0), options.locEnd(child) - (child.next && needsToBorrowPrevClosingTagEndMarker(child.next) ? printClosingTagEndMarker(child, options).length : 0)), literalline$6), printClosingTagSuffix(child, options)));
+ }
+
+ if (shouldPreserveContent$1(child, options)) {
+ return concat$g([].concat(printOpeningTagPrefix(child, options), group$f(printOpeningTag(childPath, options, print)), replaceEndOfLineWith$2(options.originalText.slice(child.startSourceSpan.end.offset + (child.firstChild && needsToBorrowParentOpeningTagEndMarker(child.firstChild) ? -printOpeningTagEndMarker(child).length : 0), child.endSourceSpan.start.offset + (child.lastChild && needsToBorrowParentClosingTagStartMarker(child.lastChild) ? printClosingTagStartMarker(child, options).length : needsToBorrowLastChildClosingTagEndMarker(child) ? -printClosingTagEndMarker(child.lastChild, options).length : 0)), literalline$6), printClosingTag(child, options), printClosingTagSuffix(child, options)));
+ }
+
+ return print(childPath);
+ }
+
+ function printBetweenLine(prevNode, nextNode) {
+ return isTextLikeNode$1(prevNode) && isTextLikeNode$1(nextNode) ? prevNode.isTrailingSpaceSensitive ? prevNode.hasTrailingSpaces ? preferHardlineAsLeadingSpaces$1(nextNode) ? hardline$c : line$8 : "" : preferHardlineAsLeadingSpaces$1(nextNode) ? hardline$c : softline$7 : needsToBorrowNextOpeningTagStartMarker(prevNode) && (
+ /**
+ * 123<a
+ * ~
+ * ><b>
+ */
+ nextNode.firstChild ||
+ /**
+ * 123<!--
+ * ~
+ * -->
+ */
+ nextNode.isSelfClosing ||
+ /**
+ * 123<span
+ * ~
+ * attr
+ */
+ nextNode.type === "element" && nextNode.attrs.length !== 0) ||
+ /**
+ * <img
+ * src="long"
+ * ~
+ * />123
+ */
+ prevNode.type === "element" && prevNode.isSelfClosing && needsToBorrowPrevClosingTagEndMarker(nextNode) ? "" : !nextNode.isLeadingSpaceSensitive || preferHardlineAsLeadingSpaces$1(nextNode) ||
+ /**
+ * Want to write us a letter? Use our<a
+ * ><b><a>mailing address</a></b></a
+ * ~
+ * >.
+ */
+ needsToBorrowPrevClosingTagEndMarker(nextNode) && prevNode.lastChild && needsToBorrowParentClosingTagStartMarker(prevNode.lastChild) && prevNode.lastChild.lastChild && needsToBorrowParentClosingTagStartMarker(prevNode.lastChild.lastChild) ? hardline$c : nextNode.hasLeadingSpaces ? line$8 : softline$7;
+ }
+}
+
+function printOpeningTag(path, options, print) {
+ var node = path.getValue();
+ var forceNotToBreakAttrContent = node.type === "element" && node.fullName === "script" && node.attrs.length === 1 && node.attrs[0].fullName === "src" && node.children.length === 0;
+ return concat$g([printOpeningTagStart(node, options), !node.attrs || node.attrs.length === 0 ? node.isSelfClosing ?
+ /**
+ * <br />
+ * ^
+ */
+ " " : "" : concat$g([indent$9(concat$g([forceNotToBreakAttrContent ? " " : line$8, join$b(line$8, function (ignoreAttributeData) {
+ var hasPrettierIgnoreAttribute = typeof ignoreAttributeData === "boolean" ? function () {
+ return ignoreAttributeData;
+ } : Array.isArray(ignoreAttributeData) ? function (attr) {
+ return ignoreAttributeData.indexOf(attr.rawName) !== -1;
+ } : function () {
+ return false;
+ };
+ return path.map(function (attrPath) {
+ var attr = attrPath.getValue();
+ return hasPrettierIgnoreAttribute(attr) ? concat$g(replaceEndOfLineWith$2(options.originalText.slice(options.locStart(attr), options.locEnd(attr)), literalline$6)) : print(attrPath);
+ }, "attrs");
+ }(node.prev && node.prev.type === "comment" && getPrettierIgnoreAttributeCommentData$1(node.prev.value)))])),
+ /**
+ * 123<a
+ * attr
+ * ~
+ * >456
+ */
+ node.firstChild && needsToBorrowParentOpeningTagEndMarker(node.firstChild) ||
+ /**
+ * <span
+ * >123<meta
+ * ~
+ * /></span>
+ */
+ node.isSelfClosing && needsToBorrowLastChildClosingTagEndMarker(node.parent) ? "" : node.isSelfClosing ? forceNotToBreakAttrContent ? " " : line$8 : forceNotToBreakAttrContent ? "" : softline$7]), node.isSelfClosing ? "" : printOpeningTagEnd(node)]);
+}
+
+function printOpeningTagStart(node, options) {
+ return node.prev && needsToBorrowNextOpeningTagStartMarker(node.prev) ? "" : concat$g([printOpeningTagPrefix(node, options), printOpeningTagStartMarker(node)]);
+}
+
+function printOpeningTagEnd(node) {
+ return node.firstChild && needsToBorrowParentOpeningTagEndMarker(node.firstChild) ? "" : printOpeningTagEndMarker(node);
+}
+
+function printClosingTag(node, options) {
+ return concat$g([node.isSelfClosing ? "" : printClosingTagStart(node, options), printClosingTagEnd(node, options)]);
+}
+
+function printClosingTagStart(node, options) {
+ return node.lastChild && needsToBorrowParentClosingTagStartMarker(node.lastChild) ? "" : concat$g([printClosingTagPrefix(node, options), printClosingTagStartMarker(node, options)]);
+}
+
+function printClosingTagEnd(node, options) {
+ return (node.next ? needsToBorrowPrevClosingTagEndMarker(node.next) : needsToBorrowLastChildClosingTagEndMarker(node.parent)) ? "" : concat$g([printClosingTagEndMarker(node, options), printClosingTagSuffix(node, options)]);
+}
+
+function needsToBorrowNextOpeningTagStartMarker(node) {
+ /**
+ * 123<p
+ * ^^
+ * >
+ */
+ return node.next && !isTextLikeNode$1(node.next) && isTextLikeNode$1(node) && node.isTrailingSpaceSensitive && !node.hasTrailingSpaces;
+}
+
+function needsToBorrowParentOpeningTagEndMarker(node) {
+ /**
+ * <p
+ * >123
+ * ^
+ *
+ * <p
+ * ><a
+ * ^
+ */
+ return !node.prev && node.isLeadingSpaceSensitive && !node.hasLeadingSpaces;
+}
+
+function needsToBorrowPrevClosingTagEndMarker(node) {
+ /**
+ * <p></p
+ * >123
+ * ^
+ *
+ * <p></p
+ * ><a
+ * ^
+ */
+ return node.prev && !isTextLikeNode$1(node.prev) && node.isLeadingSpaceSensitive && !node.hasLeadingSpaces;
+}
+
+function needsToBorrowLastChildClosingTagEndMarker(node) {
+ /**
+ * <p
+ * ><a></a
+ * ></p
+ * ^
+ * >
+ */
+ return node.lastChild && node.lastChild.isTrailingSpaceSensitive && !node.lastChild.hasTrailingSpaces && !isTextLikeNode$1(getLastDescendant$1(node.lastChild));
+}
+
+function needsToBorrowParentClosingTagStartMarker(node) {
+ /**
+ * <p>
+ * 123</p
+ * ^^^
+ * >
+ *
+ * 123</b
+ * ></a
+ * ^^^
+ * >
+ */
+ return !node.next && !node.hasTrailingSpaces && node.isTrailingSpaceSensitive && isTextLikeNode$1(getLastDescendant$1(node));
+}
+
+function printOpeningTagPrefix(node, options) {
+ return needsToBorrowParentOpeningTagEndMarker(node) ? printOpeningTagEndMarker(node.parent) : needsToBorrowPrevClosingTagEndMarker(node) ? printClosingTagEndMarker(node.prev, options) : "";
+}
+
+function printClosingTagPrefix(node, options) {
+ return needsToBorrowLastChildClosingTagEndMarker(node) ? printClosingTagEndMarker(node.lastChild, options) : "";
+}
+
+function printClosingTagSuffix(node, options) {
+ return needsToBorrowParentClosingTagStartMarker(node) ? printClosingTagStartMarker(node.parent, options) : needsToBorrowNextOpeningTagStartMarker(node) ? printOpeningTagStartMarker(node.next) : "";
+}
+
+function printOpeningTagStartMarker(node) {
+ switch (node.type) {
+ case "ieConditionalComment":
+ case "ieConditionalStartComment":
+ return `<!--[if ${node.condition}`;
+
+ case "ieConditionalEndComment":
+ return `<!--<!`;
+
+ case "interpolation":
+ return "{{";
+
+ case "docType":
+ return "<!DOCTYPE";
+
+ case "element":
+ if (node.condition) {
+ return `<!--[if ${node.condition}]><!--><${node.rawName}`;
+ }
+
+ // fall through
+
+ default:
+ return `<${node.rawName}`;
+ }
+}
+
+function printOpeningTagEndMarker(node) {
+ assert$1(!node.isSelfClosing);
+
+ switch (node.type) {
+ case "ieConditionalComment":
+ return "]>";
+
+ case "element":
+ if (node.condition) {
+ return `><!--<![endif]-->`;
+ }
+
+ // fall through
+
+ default:
+ return `>`;
+ }
+}
+
+function printClosingTagStartMarker(node, options) {
+ assert$1(!node.isSelfClosing);
+
+ if (shouldNotPrintClosingTag$1(node, options)) {
+ return "";
+ }
+
+ switch (node.type) {
+ case "ieConditionalComment":
+ return "<!";
+
+ case "element":
+ if (node.hasHtmComponentClosingTag) {
+ return "<//";
+ }
+
+ // fall through
+
+ default:
+ return `</${node.rawName}`;
+ }
+}
+
+function printClosingTagEndMarker(node, options) {
+ if (shouldNotPrintClosingTag$1(node, options)) {
+ return "";
+ }
+
+ switch (node.type) {
+ case "ieConditionalComment":
+ case "ieConditionalEndComment":
+ return `[endif]-->`;
+
+ case "ieConditionalStartComment":
+ return `]><!-->`;
+
+ case "interpolation":
+ return "}}";
+
+ case "element":
+ if (node.isSelfClosing) {
+ return "/>";
+ }
+
+ // fall through
+
+ default:
+ return ">";
+ }
+}
+
+function getTextValueParts(node) {
+ var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : node.value;
+ return node.parent.isWhitespaceSensitive ? node.parent.isIndentationSensitive ? replaceEndOfLineWith$2(value, literalline$6) : replaceEndOfLineWith$2(dedentString$1(value.replace(/^\s*?\n|\n\s*?$/g, "")), hardline$c) : // https://infra.spec.whatwg.org/#ascii-whitespace
+ join$b(line$8, value.split(/[\t\n\f\r ]+/)).parts;
+}
+
+function printEmbeddedAttributeValue(node, originalTextToDoc, options) {
+ var isKeyMatched = function isKeyMatched(patterns) {
+ return new RegExp(patterns.join("|")).test(node.fullName);
+ };
+
+ var getValue = function getValue() {
+ return unescapeQuoteEntities$1(node.value);
+ };
+
+ var shouldHug = false;
+
+ var __onHtmlBindingRoot = function __onHtmlBindingRoot(root) {
+ var rootNode = root.type === "NGRoot" ? root.node.type === "NGMicrosyntax" && root.node.body.length === 1 && root.node.body[0].type === "NGMicrosyntaxExpression" ? root.node.body[0].expression : root.node : root.type === "JsExpressionRoot" ? root.node : root;
+
+ if (rootNode && (rootNode.type === "ObjectExpression" || rootNode.type === "ArrayExpression")) {
+ shouldHug = true;
+ }
+ };
+
+ var printHug = function printHug(doc) {
+ return group$f(doc);
+ };
+
+ var printExpand = function printExpand(doc) {
+ return group$f(concat$g([indent$9(concat$g([softline$7, doc])), softline$7]));
+ };
+
+ var printMaybeHug = function printMaybeHug(doc) {
+ return shouldHug ? printHug(doc) : printExpand(doc);
+ };
+
+ var textToDoc = function textToDoc(code, opts) {
+ return originalTextToDoc(code, Object.assign({
+ __onHtmlBindingRoot
+ }, opts));
+ };
+
+ if (node.fullName === "srcset" && (node.parent.fullName === "img" || node.parent.fullName === "source")) {
+ return printExpand(printImgSrcset$1(getValue()));
+ }
+
+ if (options.parser === "vue") {
+ if (node.fullName === "v-for") {
+ return printVueFor$1(getValue(), textToDoc);
+ }
+
+ if (node.fullName === "slot-scope") {
+ return printVueSlotScope$1(getValue(), textToDoc);
+ }
+ /**
+ * @click="jsStatement"
+ * @click="jsExpression"
+ * v-on:click="jsStatement"
+ * v-on:click="jsExpression"
+ */
+
+
+ var vueEventBindingPatterns = ["^@", "^v-on:"];
+ /**
+ * :class="vueExpression"
+ * v-bind:id="vueExpression"
+ */
+
+ var vueExpressionBindingPatterns = ["^:", "^v-bind:"];
+ /**
+ * v-if="jsExpression"
+ */
+
+ var jsExpressionBindingPatterns = ["^v-"];
+
+ if (isKeyMatched(vueEventBindingPatterns)) {
+ var value = getValue();
+ return printMaybeHug(isVueEventBindingExpression$3(value) ? textToDoc(value, {
+ parser: "__js_expression"
+ }) : stripTrailingHardline$2(textToDoc(value, {
+ parser: "__vue_event_binding"
+ })));
+ }
+
+ if (isKeyMatched(vueExpressionBindingPatterns)) {
+ return printMaybeHug(textToDoc(getValue(), {
+ parser: "__vue_expression"
+ }));
+ }
+
+ if (isKeyMatched(jsExpressionBindingPatterns)) {
+ return printMaybeHug(textToDoc(getValue(), {
+ parser: "__js_expression"
+ }));
+ }
+ }
+
+ if (options.parser === "angular") {
+ var ngTextToDoc = function ngTextToDoc(code, opts) {
+ return (// angular does not allow trailing comma
+ textToDoc(code, Object.assign({
+ trailingComma: "none"
+ }, opts))
+ );
+ };
+ /**
+ * *directive="angularDirective"
+ */
+
+
+ var ngDirectiveBindingPatterns = ["^\\*"];
+ /**
+ * (click)="angularStatement"
+ * on-click="angularStatement"
+ */
+
+ var ngStatementBindingPatterns = ["^\\(.+\\)$", "^on-"];
+ /**
+ * [target]="angularExpression"
+ * bind-target="angularExpression"
+ * [(target)]="angularExpression"
+ * bindon-target="angularExpression"
+ */
+
+ var ngExpressionBindingPatterns = ["^\\[.+\\]$", "^bind(on)?-"];
+ /**
+ * i18n="longDescription"
+ * i18n-attr="longDescription"
+ */
+
+ var ngI18nPatterns = ["^i18n(-.+)?$"];
+
+ if (isKeyMatched(ngStatementBindingPatterns)) {
+ return printMaybeHug(ngTextToDoc(getValue(), {
+ parser: "__ng_action"
+ }));
+ }
+
+ if (isKeyMatched(ngExpressionBindingPatterns)) {
+ return printMaybeHug(ngTextToDoc(getValue(), {
+ parser: "__ng_binding"
+ }));
+ }
+
+ if (isKeyMatched(ngI18nPatterns)) {
+ return printExpand(fill$5(getTextValueParts(node, getValue())));
+ }
+
+ if (isKeyMatched(ngDirectiveBindingPatterns)) {
+ return printMaybeHug(ngTextToDoc(getValue(), {
+ parser: "__ng_directive"
+ }));
+ }
+
+ var interpolationRegex = /\{\{([\s\S]+?)\}\}/g;
+
+ var _value2 = getValue();
+
+ if (interpolationRegex.test(_value2)) {
+ var parts = [];
+
+ _value2.split(interpolationRegex).forEach(function (part, index) {
+ if (index % 2 === 0) {
+ parts.push(concat$g(replaceEndOfLineWith$2(part, literalline$6)));
+ } else {
+ try {
+ parts.push(group$f(concat$g(["{{", indent$9(concat$g([line$8, ngTextToDoc(part, {
+ parser: "__ng_interpolation",
+ __isInHtmlInterpolation: true // to avoid unexpected `}}`
+
+ })])), line$8, "}}"])));
+ } catch (e) {
+ parts.push("{{", concat$g(replaceEndOfLineWith$2(part, literalline$6)), "}}");
+ }
+ }
+ });
+
+ return group$f(concat$g(parts));
+ }
+ }
+
+ return null;
+}
+
+var printerHtml = {
+ preprocess: preprocess_1$2,
+ print: genericPrint$5,
+ insertPragma: insertPragma$7,
+ massageAstNode: clean$6,
+ embed: embed$4
+};
+
+var CATEGORY_HTML = "HTML"; // format based on https://github.com/prettier/prettier/blob/master/src/main/core-options.js
+
+var options$6 = {
+ htmlWhitespaceSensitivity: {
+ since: "1.15.0",
+ category: CATEGORY_HTML,
+ type: "choice",
+ default: "css",
+ description: "How to handle whitespaces in HTML.",
+ choices: [{
+ value: "css",
+ description: "Respect the default value of CSS display property."
+ }, {
+ value: "strict",
+ description: "Whitespaces are considered sensitive."
+ }, {
+ value: "ignore",
+ description: "Whitespaces are considered insensitive."
+ }]
+ },
+ vueIndentScriptAndStyle: {
+ since: "1.19.0",
+ category: CATEGORY_HTML,
+ type: "boolean",
+ default: false,
+ description: "Indent script and style tags in Vue files."
+ }
+};
+
+var name$g = "HTML";
+var type$e = "markup";
+var tmScope$e = "text.html.basic";
+var aceMode$e = "html";
+var codemirrorMode$b = "htmlmixed";
+var codemirrorMimeType$b = "text/html";
+var color$3 = "#e34c26";
+var aliases$5 = [
+ "xhtml"
+];
+var extensions$e = [
+ ".html",
+ ".htm",
+ ".html.hl",
+ ".inc",
+ ".st",
+ ".xht",
+ ".xhtml"
+];
+var languageId$e = 146;
+var HTML = {
+ name: name$g,
+ type: type$e,
+ tmScope: tmScope$e,
+ aceMode: aceMode$e,
+ codemirrorMode: codemirrorMode$b,
+ codemirrorMimeType: codemirrorMimeType$b,
+ color: color$3,
+ aliases: aliases$5,
+ extensions: extensions$e,
+ languageId: languageId$e
+};
+
+var HTML$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$g,
+ type: type$e,
+ tmScope: tmScope$e,
+ aceMode: aceMode$e,
+ codemirrorMode: codemirrorMode$b,
+ codemirrorMimeType: codemirrorMimeType$b,
+ color: color$3,
+ aliases: aliases$5,
+ extensions: extensions$e,
+ languageId: languageId$e,
+ 'default': HTML
+});
+
+var name$h = "Vue";
+var type$f = "markup";
+var color$4 = "#2c3e50";
+var extensions$f = [
+ ".vue"
+];
+var tmScope$f = "text.html.vue";
+var aceMode$f = "html";
+var languageId$f = 391;
+var Vue = {
+ name: name$h,
+ type: type$f,
+ color: color$4,
+ extensions: extensions$f,
+ tmScope: tmScope$f,
+ aceMode: aceMode$f,
+ languageId: languageId$f
+};
+
+var Vue$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$h,
+ type: type$f,
+ color: color$4,
+ extensions: extensions$f,
+ tmScope: tmScope$f,
+ aceMode: aceMode$f,
+ languageId: languageId$f,
+ 'default': Vue
+});
+
+var require$$0$6 = getCjsExportFromNamespace(HTML$1);
+
+var require$$1$2 = getCjsExportFromNamespace(Vue$1);
+
+var languages$5 = [createLanguage(require$$0$6, function (data) {
+ return Object.assign(data, {
+ name: "Angular",
+ since: "1.15.0",
+ parsers: ["angular"],
+ vscodeLanguageIds: ["html"],
+ extensions: [".component.html"],
+ filenames: []
+ });
+}), createLanguage(require$$0$6, function (data) {
+ return Object.assign(data, {
+ since: "1.15.0",
+ parsers: ["html"],
+ vscodeLanguageIds: ["html"],
+ extensions: data.extensions.concat([".mjml" // MJML is considered XML in Linguist but it should be formatted as HTML
+ ])
+ });
+}), createLanguage(require$$0$6, function (data) {
+ return Object.assign(data, {
+ name: "Lightning Web Components",
+ since: "1.17.0",
+ parsers: ["lwc"],
+ vscodeLanguageIds: ["html"],
+ extensions: [],
+ filenames: []
+ });
+}), createLanguage(require$$1$2, function (data) {
+ return Object.assign(data, {
+ since: "1.10.0",
+ parsers: ["vue"],
+ vscodeLanguageIds: ["vue"]
+ });
+})];
+var printers$5 = {
+ html: printerHtml
+};
+var languageHtml = {
+ languages: languages$5,
+ printers: printers$5,
+ options: options$6
+};
+
+function isPragma(text) {
+ return /^\s*@(prettier|format)\s*$/.test(text);
+}
+
+function hasPragma$4(text) {
+ return /^\s*#[^\n\S]*@(prettier|format)\s*?(\n|$)/.test(text);
+}
+
+function insertPragma$8(text) {
+ return `# @format\n\n${text}`;
+}
+
+var pragma$5 = {
+ isPragma,
+ hasPragma: hasPragma$4,
+ insertPragma: insertPragma$8
+};
+
+var getLast$4 = util.getLast;
+
+function getAncestorCount(path, filter) {
+ var counter = 0;
+ var pathStackLength = path.stack.length - 1;
+
+ for (var i = 0; i < pathStackLength; i++) {
+ var value = path.stack[i];
+
+ if (isNode$1(value) && filter(value)) {
+ counter++;
+ }
+ }
+
+ return counter;
+}
+/**
+ * @param {any} value
+ * @param {string[]=} types
+ */
+
+
+function isNode$1(value, types) {
+ return value && typeof value.type === "string" && (!types || types.indexOf(value.type) !== -1);
+}
+
+function mapNode(node, callback, parent) {
+ return callback("children" in node ? Object.assign({}, node, {
+ children: node.children.map(function (childNode) {
+ return mapNode(childNode, callback, node);
+ })
+ }) : node, parent);
+}
+
+function defineShortcut(x, key, getter) {
+ Object.defineProperty(x, key, {
+ get: getter,
+ enumerable: false
+ });
+}
+
+function isNextLineEmpty$5(node, text) {
+ var newlineCount = 0;
+ var textLength = text.length;
+
+ for (var i = node.position.end.offset - 1; i < textLength; i++) {
+ var char = text[i];
+
+ if (char === "\n") {
+ newlineCount++;
+ }
+
+ if (newlineCount === 1 && /\S/.test(char)) {
+ return false;
+ }
+
+ if (newlineCount === 2) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function isLastDescendantNode(path) {
+ var node = path.getValue();
+
+ switch (node.type) {
+ case "tag":
+ case "anchor":
+ case "comment":
+ return false;
+ }
+
+ var pathStackLength = path.stack.length;
+
+ for (var i = 1; i < pathStackLength; i++) {
+ var item = path.stack[i];
+ var parentItem = path.stack[i - 1];
+
+ if (Array.isArray(parentItem) && typeof item === "number" && item !== parentItem.length - 1) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+function getLastDescendantNode$1(node) {
+ return "children" in node && node.children.length !== 0 ? getLastDescendantNode$1(getLast$4(node.children)) : node;
+}
+
+function isPrettierIgnore$2(comment) {
+ return comment.value.trim() === "prettier-ignore";
+}
+
+function hasPrettierIgnore$5(path) {
+ var node = path.getValue();
+
+ if (node.type === "documentBody") {
+ var document = path.getParentNode();
+ return hasEndComments(document.head) && isPrettierIgnore$2(getLast$4(document.head.endComments));
+ }
+
+ return hasLeadingComments(node) && isPrettierIgnore$2(getLast$4(node.leadingComments));
+}
+
+function isEmptyNode(node) {
+ return (!node.children || node.children.length === 0) && !hasComments(node);
+}
+
+function hasComments(node) {
+ return hasLeadingComments(node) || hasMiddleComments(node) || hasIndicatorComment(node) || hasTrailingComment$2(node) || hasEndComments(node);
+}
+
+function hasLeadingComments(node) {
+ return node && node.leadingComments && node.leadingComments.length !== 0;
+}
+
+function hasMiddleComments(node) {
+ return node && node.middleComments && node.middleComments.length !== 0;
+}
+
+function hasIndicatorComment(node) {
+ return node && node.indicatorComment;
+}
+
+function hasTrailingComment$2(node) {
+ return node && node.trailingComment;
+}
+
+function hasEndComments(node) {
+ return node && node.endComments && node.endComments.length !== 0;
+}
+/**
+ * " a b c d e f " -> [" a b", "c d", "e f "]
+ */
+
+
+function splitWithSingleSpace(text) {
+ var parts = [];
+ var lastPart = undefined;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = text.split(/( +)/g)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var part = _step.value;
+
+ if (part !== " ") {
+ if (lastPart === " ") {
+ parts.push(part);
+ } else {
+ parts.push((parts.pop() || "") + part);
+ }
+ } else if (lastPart === undefined) {
+ parts.unshift("");
+ }
+
+ lastPart = part;
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ if (lastPart === " ") {
+ parts.push((parts.pop() || "") + " ");
+ }
+
+ if (parts[0] === "") {
+ parts.shift();
+ parts.unshift(" " + (parts.shift() || ""));
+ }
+
+ return parts;
+}
+
+function getFlowScalarLineContents(nodeType, content, options) {
+ var rawLineContents = content.split("\n").map(function (lineContent, index, lineContents) {
+ return index === 0 && index === lineContents.length - 1 ? lineContent : index !== 0 && index !== lineContents.length - 1 ? lineContent.trim() : index === 0 ? lineContent.trimRight() : lineContent.trimLeft();
+ });
+
+ if (options.proseWrap === "preserve") {
+ return rawLineContents.map(function (lineContent) {
+ return lineContent.length === 0 ? [] : [lineContent];
+ });
+ }
+
+ return rawLineContents.map(function (lineContent) {
+ return lineContent.length === 0 ? [] : splitWithSingleSpace(lineContent);
+ }).reduce(function (reduced, lineContentWords, index) {
+ return index !== 0 && rawLineContents[index - 1].length !== 0 && lineContentWords.length !== 0 && !( // trailing backslash in quoteDouble should be preserved
+ nodeType === "quoteDouble" && getLast$4(getLast$4(reduced)).endsWith("\\")) ? reduced.concat([reduced.pop().concat(lineContentWords)]) : reduced.concat([lineContentWords]);
+ }, []).map(function (lineContentWords) {
+ return options.proseWrap === "never" ? [lineContentWords.join(" ")] : lineContentWords;
+ });
+}
+
+function getBlockValueLineContents(node, _ref) {
+ var parentIndent = _ref.parentIndent,
+ isLastDescendant = _ref.isLastDescendant,
+ options = _ref.options;
+ var content = node.position.start.line === node.position.end.line ? "" : options.originalText.slice(node.position.start.offset, node.position.end.offset) // exclude open line `>` or `|`
+ .match(/^[^\n]*?\n([\s\S]*)$/)[1];
+ var leadingSpaceCount = node.indent === null ? function (match) {
+ return match ? match[1].length : Infinity;
+ }(content.match(/^( *)\S/m)) : node.indent - 1 + parentIndent;
+ var rawLineContents = content.split("\n").map(function (lineContent) {
+ return lineContent.slice(leadingSpaceCount);
+ });
+
+ if (options.proseWrap === "preserve" || node.type === "blockLiteral") {
+ return removeUnnecessaryTrailingNewlines(rawLineContents.map(function (lineContent) {
+ return lineContent.length === 0 ? [] : [lineContent];
+ }));
+ }
+
+ return removeUnnecessaryTrailingNewlines(rawLineContents.map(function (lineContent) {
+ return lineContent.length === 0 ? [] : splitWithSingleSpace(lineContent);
+ }).reduce(function (reduced, lineContentWords, index) {
+ return index !== 0 && rawLineContents[index - 1].length !== 0 && lineContentWords.length !== 0 && !/^\s/.test(lineContentWords[0]) && !/^\s|\s$/.test(getLast$4(reduced)) ? reduced.concat([reduced.pop().concat(lineContentWords)]) : reduced.concat([lineContentWords]);
+ }, []).map(function (lineContentWords) {
+ return lineContentWords.reduce(function (reduced, word) {
+ return (// disallow trailing spaces
+ reduced.length !== 0 && /\s$/.test(getLast$4(reduced)) ? reduced.concat(reduced.pop() + " " + word) : reduced.concat(word)
+ );
+ }, []);
+ }).map(function (lineContentWords) {
+ return options.proseWrap === "never" ? [lineContentWords.join(" ")] : lineContentWords;
+ }));
+
+ function removeUnnecessaryTrailingNewlines(lineContents) {
+ if (node.chomping === "keep") {
+ return getLast$4(lineContents).length === 0 ? lineContents.slice(0, -1) : lineContents;
+ }
+
+ var trailingNewlineCount = 0;
+
+ for (var i = lineContents.length - 1; i >= 0; i--) {
+ if (lineContents[i].length === 0) {
+ trailingNewlineCount++;
+ } else {
+ break;
+ }
+ }
+
+ return trailingNewlineCount === 0 ? lineContents : trailingNewlineCount >= 2 && !isLastDescendant ? // next empty line
+ lineContents.slice(0, -(trailingNewlineCount - 1)) : lineContents.slice(0, -trailingNewlineCount);
+ }
+}
+
+var utils$6 = {
+ getLast: getLast$4,
+ getAncestorCount,
+ isNode: isNode$1,
+ isEmptyNode,
+ mapNode,
+ defineShortcut,
+ isNextLineEmpty: isNextLineEmpty$5,
+ isLastDescendantNode,
+ getBlockValueLineContents,
+ getFlowScalarLineContents,
+ getLastDescendantNode: getLastDescendantNode$1,
+ hasPrettierIgnore: hasPrettierIgnore$5,
+ hasLeadingComments,
+ hasMiddleComments,
+ hasIndicatorComment,
+ hasTrailingComment: hasTrailingComment$2,
+ hasEndComments
+};
+
+var insertPragma$9 = pragma$5.insertPragma,
+ isPragma$1 = pragma$5.isPragma;
+var getAncestorCount$1 = utils$6.getAncestorCount,
+ getBlockValueLineContents$1 = utils$6.getBlockValueLineContents,
+ getFlowScalarLineContents$1 = utils$6.getFlowScalarLineContents,
+ getLast$5 = utils$6.getLast,
+ getLastDescendantNode$2 = utils$6.getLastDescendantNode,
+ hasLeadingComments$1 = utils$6.hasLeadingComments,
+ hasMiddleComments$1 = utils$6.hasMiddleComments,
+ hasIndicatorComment$1 = utils$6.hasIndicatorComment,
+ hasTrailingComment$3 = utils$6.hasTrailingComment,
+ hasEndComments$1 = utils$6.hasEndComments,
+ hasPrettierIgnore$6 = utils$6.hasPrettierIgnore,
+ isLastDescendantNode$1 = utils$6.isLastDescendantNode,
+ isNextLineEmpty$6 = utils$6.isNextLineEmpty,
+ isNode$2 = utils$6.isNode,
+ isEmptyNode$1 = utils$6.isEmptyNode,
+ defineShortcut$1 = utils$6.defineShortcut,
+ mapNode$1 = utils$6.mapNode;
+var docBuilders$2 = doc.builders;
+var conditionalGroup$2 = docBuilders$2.conditionalGroup,
+ breakParent$5 = docBuilders$2.breakParent,
+ concat$h = docBuilders$2.concat,
+ dedent$3 = docBuilders$2.dedent,
+ dedentToRoot$3 = docBuilders$2.dedentToRoot,
+ fill$6 = docBuilders$2.fill,
+ group$g = docBuilders$2.group,
+ hardline$d = docBuilders$2.hardline,
+ ifBreak$8 = docBuilders$2.ifBreak,
+ join$c = docBuilders$2.join,
+ line$9 = docBuilders$2.line,
+ lineSuffix$2 = docBuilders$2.lineSuffix,
+ literalline$7 = docBuilders$2.literalline,
+ markAsRoot$5 = docBuilders$2.markAsRoot,
+ softline$8 = docBuilders$2.softline;
+var replaceEndOfLineWith$3 = util.replaceEndOfLineWith;
+
+function preprocess$3(ast) {
+ return mapNode$1(ast, defineShortcuts);
+}
+
+function defineShortcuts(node) {
+ switch (node.type) {
+ case "document":
+ defineShortcut$1(node, "head", function () {
+ return node.children[0];
+ });
+ defineShortcut$1(node, "body", function () {
+ return node.children[1];
+ });
+ break;
+
+ case "documentBody":
+ case "sequenceItem":
+ case "flowSequenceItem":
+ case "mappingKey":
+ case "mappingValue":
+ defineShortcut$1(node, "content", function () {
+ return node.children[0];
+ });
+ break;
+
+ case "mappingItem":
+ case "flowMappingItem":
+ defineShortcut$1(node, "key", function () {
+ return node.children[0];
+ });
+ defineShortcut$1(node, "value", function () {
+ return node.children[1];
+ });
+ break;
+ }
+
+ return node;
+}
+
+function genericPrint$6(path, options, print) {
+ var node = path.getValue();
+ var parentNode = path.getParentNode();
+ var tag = !node.tag ? "" : path.call(print, "tag");
+ var anchor = !node.anchor ? "" : path.call(print, "anchor");
+ var nextEmptyLine = isNode$2(node, ["mapping", "sequence", "comment", "directive", "mappingItem", "sequenceItem"]) && !isLastDescendantNode$1(path) ? printNextEmptyLine(path, options.originalText) : "";
+ return concat$h([node.type !== "mappingValue" && hasLeadingComments$1(node) ? concat$h([join$c(hardline$d, path.map(print, "leadingComments")), hardline$d]) : "", tag, tag && anchor ? " " : "", anchor, tag || anchor ? isNode$2(node, ["sequence", "mapping"]) && !hasMiddleComments$1(node) ? hardline$d : " " : "", hasMiddleComments$1(node) ? concat$h([node.middleComments.length === 1 ? "" : hardline$d, join$c(hardline$d, path.map(print, "middleComments")), hardline$d]) : "", hasPrettierIgnore$6(path) ? concat$h(replaceEndOfLineWith$3(options.originalText.slice(node.position.start.offset, node.position.end.offset), literalline$7)) : group$g(_print(node, parentNode, path, options, print)), hasTrailingComment$3(node) && !isNode$2(node, ["document", "documentHead"]) ? lineSuffix$2(concat$h([node.type === "mappingValue" && !node.content ? "" : " ", parentNode.type === "mappingKey" && path.getParentNode(2).type === "mapping" && isInlineNode$1(node) ? "" : breakParent$5, path.call(print, "trailingComment")])) : "", nextEmptyLine, hasEndComments$1(node) && !isNode$2(node, ["documentHead", "documentBody"]) ? align$3(node.type === "sequenceItem" ? 2 : 0, concat$h([hardline$d, join$c(hardline$d, path.map(print, "endComments"))])) : ""]);
+}
+
+function _print(node, parentNode, path, options, print) {
+ switch (node.type) {
+ case "root":
+ return concat$h([join$c(hardline$d, path.map(function (childPath, index) {
+ var document = node.children[index];
+ var nextDocument = node.children[index + 1];
+ return concat$h([print(childPath), shouldPrintDocumentEndMarker(document, nextDocument) ? concat$h([hardline$d, "...", hasTrailingComment$3(document) ? concat$h([" ", path.call(print, "trailingComment")]) : ""]) : !nextDocument || hasTrailingComment$3(nextDocument.head) ? "" : concat$h([hardline$d, "---"])]);
+ }, "children")), node.children.length === 0 || function (lastDescendantNode) {
+ return isNode$2(lastDescendantNode, ["blockLiteral", "blockFolded"]) && lastDescendantNode.chomping === "keep";
+ }(getLastDescendantNode$2(node)) ? "" : hardline$d]);
+
+ case "document":
+ {
+ var nextDocument = parentNode.children[path.getName() + 1];
+ return join$c(hardline$d, [shouldPrintDocumentHeadEndMarker(node, nextDocument, parentNode, options) === "head" ? join$c(hardline$d, [node.head.children.length === 0 && node.head.endComments.length === 0 ? "" : path.call(print, "head"), concat$h(["---", hasTrailingComment$3(node.head) ? concat$h([" ", path.call(print, "head", "trailingComment")]) : ""])].filter(Boolean)) : "", shouldPrintDocumentBody(node) ? path.call(print, "body") : ""].filter(Boolean));
+ }
+
+ case "documentHead":
+ return join$c(hardline$d, [].concat(path.map(print, "children"), path.map(print, "endComments")));
+
+ case "documentBody":
+ {
+ var children = join$c(hardline$d, path.map(print, "children")).parts;
+ var endComments = join$c(hardline$d, path.map(print, "endComments")).parts;
+ var separator = children.length === 0 || endComments.length === 0 ? "" : function (lastDescendantNode) {
+ return isNode$2(lastDescendantNode, ["blockFolded", "blockLiteral"]) ? lastDescendantNode.chomping === "keep" ? // there's already a newline printed at the end of blockValue (chomping=keep, lastDescendant=true)
+ "" : // an extra newline for better readability
+ concat$h([hardline$d, hardline$d]) : hardline$d;
+ }(getLastDescendantNode$2(node));
+ return concat$h([].concat(children, separator, endComments));
+ }
+
+ case "directive":
+ return concat$h(["%", join$c(" ", [node.name].concat(node.parameters))]);
+
+ case "comment":
+ return concat$h(["#", node.value]);
+
+ case "alias":
+ return concat$h(["*", node.value]);
+
+ case "tag":
+ return options.originalText.slice(node.position.start.offset, node.position.end.offset);
+
+ case "anchor":
+ return concat$h(["&", node.value]);
+
+ case "plain":
+ return printFlowScalarContent(node.type, options.originalText.slice(node.position.start.offset, node.position.end.offset), options);
+
+ case "quoteDouble":
+ case "quoteSingle":
+ {
+ var singleQuote = "'";
+ var doubleQuote = '"';
+ var raw = options.originalText.slice(node.position.start.offset + 1, node.position.end.offset - 1);
+
+ if (node.type === "quoteSingle" && raw.includes("\\") || node.type === "quoteDouble" && /\\[^"]/.test(raw)) {
+ // only quoteDouble can use escape chars
+ // and quoteSingle do not need to escape backslashes
+ var originalQuote = node.type === "quoteDouble" ? doubleQuote : singleQuote;
+ return concat$h([originalQuote, printFlowScalarContent(node.type, raw, options), originalQuote]);
+ } else if (raw.includes(doubleQuote)) {
+ return concat$h([singleQuote, printFlowScalarContent(node.type, node.type === "quoteDouble" ? raw // double quote needs to be escaped by backslash in quoteDouble
+ .replace(/\\"/g, doubleQuote).replace(/'/g, singleQuote.repeat(2)) : raw, options), singleQuote]);
+ }
+
+ if (raw.includes(singleQuote)) {
+ return concat$h([doubleQuote, printFlowScalarContent(node.type, node.type === "quoteSingle" ? // single quote needs to be escaped by 2 single quotes in quoteSingle
+ raw.replace(/''/g, singleQuote) : raw, options), doubleQuote]);
+ }
+
+ var quote = options.singleQuote ? singleQuote : doubleQuote;
+ return concat$h([quote, printFlowScalarContent(node.type, raw, options), quote]);
+ }
+
+ case "blockFolded":
+ case "blockLiteral":
+ {
+ var parentIndent = getAncestorCount$1(path, function (ancestorNode) {
+ return isNode$2(ancestorNode, ["sequence", "mapping"]);
+ });
+ var isLastDescendant = isLastDescendantNode$1(path);
+ return concat$h([node.type === "blockFolded" ? ">" : "|", node.indent === null ? "" : node.indent.toString(), node.chomping === "clip" ? "" : node.chomping === "keep" ? "+" : "-", hasIndicatorComment$1(node) ? concat$h([" ", path.call(print, "indicatorComment")]) : "", (node.indent === null ? dedent$3 : dedentToRoot$3)(align$3(node.indent === null ? options.tabWidth : node.indent - 1 + parentIndent, concat$h(getBlockValueLineContents$1(node, {
+ parentIndent,
+ isLastDescendant,
+ options
+ }).reduce(function (reduced, lineWords, index, lineContents) {
+ return reduced.concat(index === 0 ? hardline$d : "", fill$6(join$c(line$9, lineWords).parts), index !== lineContents.length - 1 ? lineWords.length === 0 ? hardline$d : markAsRoot$5(literalline$7) : node.chomping === "keep" && isLastDescendant ? lineWords.length === 0 ? dedentToRoot$3(hardline$d) : dedentToRoot$3(literalline$7) : "");
+ }, []))))]);
+ }
+
+ case "sequence":
+ return join$c(hardline$d, path.map(print, "children"));
+
+ case "sequenceItem":
+ return concat$h(["- ", align$3(2, !node.content ? "" : path.call(print, "content"))]);
+
+ case "mappingKey":
+ return !node.content ? "" : path.call(print, "content");
+
+ case "mappingValue":
+ return !node.content ? "" : path.call(print, "content");
+
+ case "mapping":
+ return join$c(hardline$d, path.map(print, "children"));
+
+ case "mappingItem":
+ case "flowMappingItem":
+ {
+ var isEmptyMappingKey = isEmptyNode$1(node.key);
+ var isEmptyMappingValue = isEmptyNode$1(node.value);
+
+ if (isEmptyMappingKey && isEmptyMappingValue) {
+ return concat$h([": "]);
+ }
+
+ var key = path.call(print, "key");
+ var value = path.call(print, "value");
+
+ if (isEmptyMappingValue) {
+ return node.type === "flowMappingItem" && parentNode.type === "flowMapping" ? key : node.type === "mappingItem" && isAbsolutelyPrintedAsSingleLineNode(node.key.content, options) && !hasTrailingComment$3(node.key.content) && (!parentNode.tag || parentNode.tag.value !== "tag:yaml.org,2002:set") ? concat$h([key, needsSpaceInFrontOfMappingValue(node) ? " " : "", ":"]) : concat$h(["? ", align$3(2, key)]);
+ }
+
+ if (isEmptyMappingKey) {
+ return concat$h([": ", align$3(2, value)]);
+ }
+
+ var groupId = Symbol("mappingKey");
+ var forceExplicitKey = hasLeadingComments$1(node.value) || !isInlineNode$1(node.key.content);
+ return forceExplicitKey ? concat$h(["? ", align$3(2, key), hardline$d, join$c("", path.map(print, "value", "leadingComments").map(function (comment) {
+ return concat$h([comment, hardline$d]);
+ })), ": ", align$3(2, value)]) : // force singleline
+ isSingleLineNode(node.key.content) && !hasLeadingComments$1(node.key.content) && !hasMiddleComments$1(node.key.content) && !hasTrailingComment$3(node.key.content) && !hasEndComments$1(node.key) && !hasLeadingComments$1(node.value.content) && !hasMiddleComments$1(node.value.content) && !hasEndComments$1(node.value) && isAbsolutelyPrintedAsSingleLineNode(node.value.content, options) ? concat$h([key, needsSpaceInFrontOfMappingValue(node) ? " " : "", ": ", value]) : conditionalGroup$2([concat$h([group$g(concat$h([ifBreak$8("? "), group$g(align$3(2, key), {
+ id: groupId
+ })])), ifBreak$8(concat$h([hardline$d, ": ", align$3(2, value)]), indent(concat$h([needsSpaceInFrontOfMappingValue(node) ? " " : "", ":", hasLeadingComments$1(node.value.content) || hasEndComments$1(node.value) && node.value.content && !isNode$2(node.value.content, ["mapping", "sequence"]) || parentNode.type === "mapping" && hasTrailingComment$3(node.key.content) && isInlineNode$1(node.value.content) || isNode$2(node.value.content, ["mapping", "sequence"]) && node.value.content.tag === null && node.value.content.anchor === null ? hardline$d : !node.value.content ? "" : line$9, value])), {
+ groupId
+ })])]);
+ }
+
+ case "flowMapping":
+ case "flowSequence":
+ {
+ var openMarker = node.type === "flowMapping" ? "{" : "[";
+ var closeMarker = node.type === "flowMapping" ? "}" : "]";
+ var bracketSpacing = node.type === "flowMapping" && node.children.length !== 0 && options.bracketSpacing ? line$9 : softline$8;
+
+ var isLastItemEmptyMappingItem = node.children.length !== 0 && function (lastItem) {
+ return lastItem.type === "flowMappingItem" && isEmptyNode$1(lastItem.key) && isEmptyNode$1(lastItem.value);
+ }(getLast$5(node.children));
+
+ return concat$h([openMarker, indent(concat$h([bracketSpacing, concat$h(path.map(function (childPath, index) {
+ return concat$h([print(childPath), index === node.children.length - 1 ? "" : concat$h([",", line$9, node.children[index].position.start.line !== node.children[index + 1].position.start.line ? printNextEmptyLine(childPath, options.originalText) : ""])]);
+ }, "children")), ifBreak$8(",", "")])), isLastItemEmptyMappingItem ? "" : bracketSpacing, closeMarker]);
+ }
+
+ case "flowSequenceItem":
+ return path.call(print, "content");
+ // istanbul ignore next
+
+ default:
+ throw new Error(`Unexpected node type ${node.type}`);
+ }
+
+ function indent(doc) {
+ return docBuilders$2.align(" ".repeat(options.tabWidth), doc);
+ }
+}
+
+function align$3(n, doc) {
+ return typeof n === "number" && n > 0 ? docBuilders$2.align(" ".repeat(n), doc) : docBuilders$2.align(n, doc);
+}
+
+function isInlineNode$1(node) {
+ if (!node) {
+ return true;
+ }
+
+ switch (node.type) {
+ case "plain":
+ case "quoteDouble":
+ case "quoteSingle":
+ case "alias":
+ case "flowMapping":
+ case "flowSequence":
+ return true;
+
+ default:
+ return false;
+ }
+}
+
+function isSingleLineNode(node) {
+ if (!node) {
+ return true;
+ }
+
+ switch (node.type) {
+ case "plain":
+ case "quoteDouble":
+ case "quoteSingle":
+ return node.position.start.line === node.position.end.line;
+
+ case "alias":
+ return true;
+
+ default:
+ return false;
+ }
+}
+
+function shouldPrintDocumentBody(document) {
+ return document.body.children.length !== 0 || hasEndComments$1(document.body);
+}
+
+function shouldPrintDocumentEndMarker(document, nextDocument) {
+ return (
+ /**
+ *... # trailingComment
+ */
+ hasTrailingComment$3(document) || nextDocument && (
+ /**
+ * ...
+ * %DIRECTIVE
+ * ---
+ */
+ nextDocument.head.children.length !== 0 ||
+ /**
+ * ...
+ * # endComment
+ * ---
+ */
+ hasEndComments$1(nextDocument.head))
+ );
+}
+
+function shouldPrintDocumentHeadEndMarker(document, nextDocument, root, options) {
+ if (
+ /**
+ * ---
+ * preserve the first document head end marker
+ */
+ root.children[0] === document && /---(\s|$)/.test(options.originalText.slice(options.locStart(document), options.locStart(document) + 4)) ||
+ /**
+ * %DIRECTIVE
+ * ---
+ */
+ document.head.children.length !== 0 ||
+ /**
+ * # end comment
+ * ---
+ */
+ hasEndComments$1(document.head) ||
+ /**
+ * --- # trailing comment
+ */
+ hasTrailingComment$3(document.head)) {
+ return "head";
+ }
+
+ if (shouldPrintDocumentEndMarker(document, nextDocument)) {
+ return false;
+ }
+
+ return nextDocument ? "root" : false;
+}
+
+function isAbsolutelyPrintedAsSingleLineNode(node, options) {
+ if (!node) {
+ return true;
+ }
+
+ switch (node.type) {
+ case "plain":
+ case "quoteSingle":
+ case "quoteDouble":
+ break;
+
+ case "alias":
+ return true;
+
+ default:
+ return false;
+ }
+
+ if (options.proseWrap === "preserve") {
+ return node.position.start.line === node.position.end.line;
+ }
+
+ if ( // backslash-newline
+ /\\$/m.test(options.originalText.slice(node.position.start.offset, node.position.end.offset))) {
+ return false;
+ }
+
+ switch (options.proseWrap) {
+ case "never":
+ return node.value.indexOf("\n") === -1;
+
+ case "always":
+ return !/[\n ]/.test(node.value);
+ // istanbul ignore next
+
+ default:
+ return false;
+ }
+}
+
+function needsSpaceInFrontOfMappingValue(node) {
+ return node.key.content && node.key.content.type === "alias";
+}
+
+function printNextEmptyLine(path, originalText) {
+ var node = path.getValue();
+ var root = path.stack[0];
+ root.isNextEmptyLinePrintedChecklist = root.isNextEmptyLinePrintedChecklist || [];
+
+ if (!root.isNextEmptyLinePrintedChecklist[node.position.end.line]) {
+ if (isNextLineEmpty$6(node, originalText)) {
+ root.isNextEmptyLinePrintedChecklist[node.position.end.line] = true;
+ return softline$8;
+ }
+ }
+
+ return "";
+}
+
+function printFlowScalarContent(nodeType, content, options) {
+ var lineContents = getFlowScalarLineContents$1(nodeType, content, options);
+ return join$c(hardline$d, lineContents.map(function (lineContentWords) {
+ return fill$6(join$c(line$9, lineContentWords).parts);
+ }));
+}
+
+function clean$7(node, newNode
+/*, parent */
+) {
+ if (isNode$2(newNode)) {
+ delete newNode.position;
+
+ switch (newNode.type) {
+ case "comment":
+ // insert pragma
+ if (isPragma$1(newNode.value)) {
+ return null;
+ }
+
+ break;
+
+ case "quoteDouble":
+ case "quoteSingle":
+ newNode.type = "quote";
+ break;
+ }
+ }
+}
+
+var printerYaml = {
+ preprocess: preprocess$3,
+ print: genericPrint$6,
+ massageAstNode: clean$7,
+ insertPragma: insertPragma$9
+};
+
+var options$7 = {
+ bracketSpacing: commonOptions.bracketSpacing,
+ singleQuote: commonOptions.singleQuote,
+ proseWrap: commonOptions.proseWrap
+};
+
+var name$i = "YAML";
+var type$g = "data";
+var tmScope$g = "source.yaml";
+var aliases$6 = [
+ "yml"
+];
+var extensions$g = [
+ ".yml",
+ ".mir",
+ ".reek",
+ ".rviz",
+ ".sublime-syntax",
+ ".syntax",
+ ".yaml",
+ ".yaml-tmlanguage",
+ ".yml.mysql"
+];
+var filenames$4 = [
+ ".clang-format",
+ ".clang-tidy",
+ ".gemrc",
+ "glide.lock"
+];
+var aceMode$g = "yaml";
+var codemirrorMode$c = "yaml";
+var codemirrorMimeType$c = "text/x-yaml";
+var languageId$g = 407;
+var YAML = {
+ name: name$i,
+ type: type$g,
+ tmScope: tmScope$g,
+ aliases: aliases$6,
+ extensions: extensions$g,
+ filenames: filenames$4,
+ aceMode: aceMode$g,
+ codemirrorMode: codemirrorMode$c,
+ codemirrorMimeType: codemirrorMimeType$c,
+ languageId: languageId$g
+};
+
+var YAML$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$i,
+ type: type$g,
+ tmScope: tmScope$g,
+ aliases: aliases$6,
+ extensions: extensions$g,
+ filenames: filenames$4,
+ aceMode: aceMode$g,
+ codemirrorMode: codemirrorMode$c,
+ codemirrorMimeType: codemirrorMimeType$c,
+ languageId: languageId$g,
+ 'default': YAML
+});
+
+var require$$0$7 = getCjsExportFromNamespace(YAML$1);
+
+var languages$6 = [createLanguage(require$$0$7, function (data) {
+ return Object.assign(data, {
+ since: "1.14.0",
+ parsers: ["yaml"],
+ vscodeLanguageIds: ["yaml"]
+ });
+})];
+var languageYaml = {
+ languages: languages$6,
+ printers: {
+ yaml: printerYaml
+ },
+ options: options$7
+};
+
+// plugin will look for `eval("require")()` and transform to `require()` in the bundle,
+// and rewrite the paths to require from the top-level.
+// We need to list the parsers and getters so we can load them only when necessary.
+
+
+var internalPlugins = [// JS
+languageJs, {
+ parsers: {
+ // JS - Babel
+ get babel() {
+ return require("./parser-babylon").parsers.babel;
+ },
+
+ get "babel-flow"() {
+ return require("./parser-babylon").parsers["babel-flow"];
+ },
+
+ get babylon() {
+ return require("./parser-babylon").parsers.babel;
+ },
+
+ get json() {
+ return require("./parser-babylon").parsers.json;
+ },
+
+ get json5() {
+ return require("./parser-babylon").parsers.json5;
+ },
+
+ get "json-stringify"() {
+ return require("./parser-babylon").parsers["json-stringify"];
+ },
+
+ get __js_expression() {
+ return require("./parser-babylon").parsers.__js_expression;
+ },
+
+ get __vue_expression() {
+ return require("./parser-babylon").parsers.__vue_expression;
+ },
+
+ get __vue_event_binding() {
+ return require("./parser-babylon").parsers.__vue_event_binding;
+ },
+
+ // JS - Flow
+ get flow() {
+ return require("./parser-flow").parsers.flow;
+ },
+
+ // JS - TypeScript
+ get typescript() {
+ return require("./parser-typescript").parsers.typescript;
+ },
+
+ /**
+ * TODO: Remove this old alias in a major version
+ */
+ get "typescript-eslint"() {
+ return require("./parser-typescript").parsers.typescript;
+ },
+
+ // JS - Angular Action
+ get __ng_action() {
+ return require("./parser-angular").parsers.__ng_action;
+ },
+
+ // JS - Angular Binding
+ get __ng_binding() {
+ return require("./parser-angular").parsers.__ng_binding;
+ },
+
+ // JS - Angular Interpolation
+ get __ng_interpolation() {
+ return require("./parser-angular").parsers.__ng_interpolation;
+ },
+
+ // JS - Angular Directive
+ get __ng_directive() {
+ return require("./parser-angular").parsers.__ng_directive;
+ }
+
+ }
+}, // CSS
+languageCss, {
+ parsers: {
+ // TODO: switch these to just `postcss` and use `language` instead.
+ get css() {
+ return require("./parser-postcss").parsers.css;
+ },
+
+ get less() {
+ return require("./parser-postcss").parsers.css;
+ },
+
+ get scss() {
+ return require("./parser-postcss").parsers.css;
+ }
+
+ }
+}, // Handlebars
+languageHandlebars, {
+ parsers: {
+ get glimmer() {
+ return require("./parser-glimmer").parsers.glimmer;
+ }
+
+ }
+}, // GraphQL
+languageGraphql, {
+ parsers: {
+ get graphql() {
+ return require("./parser-graphql").parsers.graphql;
+ }
+
+ }
+}, // Markdown
+languageMarkdown, {
+ parsers: {
+ get remark() {
+ return require("./parser-markdown").parsers.remark;
+ },
+
+ // TODO: Delete this in 2.0
+ get markdown() {
+ return require("./parser-markdown").parsers.remark;
+ },
+
+ get mdx() {
+ return require("./parser-markdown").parsers.mdx;
+ }
+
+ }
+}, languageHtml, {
+ parsers: {
+ // HTML
+ get html() {
+ return require("./parser-html").parsers.html;
+ },
+
+ // Vue
+ get vue() {
+ return require("./parser-html").parsers.vue;
+ },
+
+ // Angular
+ get angular() {
+ return require("./parser-html").parsers.angular;
+ },
+
+ // Lightning Web Components
+ get lwc() {
+ return require("./parser-html").parsers.lwc;
+ }
+
+ }
+}, // YAML
+languageYaml, {
+ parsers: {
+ get yaml() {
+ return require("./parser-yaml").parsers.yaml;
+ }
+
+ }
+}];
+
+var partition = function partition(array, fn) {
+ var a = [];
+ var b = [];
+ array.forEach(function (item) {
+ if (fn(item)) {
+ a.push(item);
+ } else {
+ b.push(item);
+ }
+ });
+ return [a, b];
+};
+
+function loadPlugins(plugins, pluginSearchDirs) {
+ if (!plugins) {
+ plugins = [];
+ }
+
+ if (!pluginSearchDirs) {
+ pluginSearchDirs = [];
+ } // unless pluginSearchDirs are provided, auto-load plugins from node_modules that are parent to Prettier
+
+
+ if (!pluginSearchDirs.length) {
+ var autoLoadDir = thirdParty.findParentDir(__dirname, "node_modules");
+
+ if (autoLoadDir) {
+ pluginSearchDirs = [autoLoadDir];
+ }
+ }
+
+ var _partition = partition(plugins, function (plugin) {
+ return typeof plugin === "string";
+ }),
+ _partition2 = _slicedToArray(_partition, 2),
+ externalPluginNames = _partition2[0],
+ externalPluginInstances = _partition2[1];
+
+ var externalManualLoadPluginInfos = externalPluginNames.map(function (pluginName) {
+ var requirePath;
+
+ try {
+ // try local files
+ requirePath = resolve.sync(path$2.resolve(process.cwd(), pluginName));
+ } catch (e) {
+ // try node modules
+ requirePath = resolve.sync(pluginName, {
+ basedir: process.cwd()
+ });
+ }
+
+ return {
+ name: pluginName,
+ requirePath
+ };
+ });
+ var externalAutoLoadPluginInfos = pluginSearchDirs.map(function (pluginSearchDir) {
+ var resolvedPluginSearchDir = path$2.resolve(process.cwd(), pluginSearchDir);
+ var nodeModulesDir = path$2.resolve(resolvedPluginSearchDir, "node_modules"); // In some fringe cases (ex: files "mounted" as virtual directories), the
+ // isDirectory(resolvedPluginSearchDir) check might be false even though
+ // the node_modules actually exists.
+
+ if (!isDirectory(nodeModulesDir) && !isDirectory(resolvedPluginSearchDir)) {
+ throw new Error(`${pluginSearchDir} does not exist or is not a directory`);
+ }
+
+ return findPluginsInNodeModules(nodeModulesDir).map(function (pluginName) {
+ return {
+ name: pluginName,
+ requirePath: resolve.sync(pluginName, {
+ basedir: resolvedPluginSearchDir
+ })
+ };
+ });
+ }).reduce(function (a, b) {
+ return a.concat(b);
+ }, []);
+ var externalPlugins = lodash_uniqby(externalManualLoadPluginInfos.concat(externalAutoLoadPluginInfos), "requirePath").map(function (externalPluginInfo) {
+ return Object.assign({
+ name: externalPluginInfo.name
+ }, require(externalPluginInfo.requirePath));
+ }).concat(externalPluginInstances);
+ return internalPlugins.concat(externalPlugins);
+}
+
+function findPluginsInNodeModules(nodeModulesDir) {
+ var pluginPackageJsonPaths = globby.sync(["prettier-plugin-*/package.json", "@*/prettier-plugin-*/package.json", "@prettier/plugin-*/package.json"], {
+ cwd: nodeModulesDir
+ });
+ return pluginPackageJsonPaths.map(path$2.dirname);
+}
+
+function isDirectory(dir) {
+ try {
+ return fs$1.statSync(dir).isDirectory();
+ } catch (e) {
+ return false;
+ }
+}
+
+var loadPlugins_1 = loadPlugins;
+
+var version$3 = require$$0.version;
+var getSupportInfo$2 = support.getSupportInfo; // Luckily `opts` is always the 2nd argument
+
+function _withPlugins(fn) {
+ return function () {
+ var args = Array.from(arguments);
+ var opts = args[1] || {};
+ args[1] = Object.assign({}, opts, {
+ plugins: loadPlugins_1(opts.plugins, opts.pluginSearchDirs)
+ });
+ return fn.apply(null, args);
+ };
+}
+
+function withPlugins(fn) {
+ var resultingFn = _withPlugins(fn);
+
+ if (fn.sync) {
+ resultingFn.sync = _withPlugins(fn.sync);
+ }
+
+ return resultingFn;
+}
+
+var formatWithCursor = withPlugins(core.formatWithCursor);
+var src$1 = {
+ formatWithCursor,
+
+ format(text, opts) {
+ return formatWithCursor(text, opts).formatted;
+ },
+
+ check: function check(text, opts) {
+ var formatted = formatWithCursor(text, opts).formatted;
+ return formatted === text;
+ },
+ doc,
+ resolveConfig: resolveConfig_1.resolveConfig,
+ resolveConfigFile: resolveConfig_1.resolveConfigFile,
+ clearConfigCache: resolveConfig_1.clearCache,
+ getFileInfo: withPlugins(getFileInfo_1),
+ getSupportInfo: withPlugins(getSupportInfo$2),
+ version: version$3,
+ util: utilShared,
+
+ /* istanbul ignore next */
+ __debug: {
+ parse: withPlugins(core.parse),
+ formatAST: withPlugins(core.formatAST),
+ formatDoc: withPlugins(core.formatDoc),
+ printToDoc: withPlugins(core.printToDoc),
+ printDocToString: withPlugins(core.printDocToString)
+ }
+};
+
+var prettier = src$1;
+
+module.exports = prettier;
diff --git a/node_modules/prettier/package.json b/node_modules/prettier/package.json
new file mode 100644
index 0000000..11fb360
--- /dev/null
+++ b/node_modules/prettier/package.json
@@ -0,0 +1,20 @@
+{
+ "name": "prettier",
+ "version": "1.19.1",
+ "description": "Prettier is an opinionated code formatter",
+ "bin": "./bin-prettier.js",
+ "repository": "prettier/prettier",
+ "homepage": "https://prettier.io",
+ "author": "James Long",
+ "license": "MIT",
+ "main": "./index.js",
+ "engines": {
+ "node": ">=4"
+ },
+ "scripts": {
+ "prepublishOnly": "node -e \"assert.equal(require('.').version, require('..').version)\""
+ },
+ "files": [
+ "*.js"
+ ]
+} \ No newline at end of file
diff --git a/node_modules/prettier/parser-angular.js b/node_modules/prettier/parser-angular.js
new file mode 100644
index 0000000..dfd3771
--- /dev/null
+++ b/node_modules/prettier/parser-angular.js
@@ -0,0 +1,15 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(((e=e||self).prettierPlugins=e.prettierPlugins||{},e.prettierPlugins.angular={}))}(this,(function(e){"use strict";var t=function(e){return e.length>0?e[e.length-1]:null};var n={locStart:function e(t,n){return!(n=n||{}).ignoreDecorators&&t.declaration&&t.declaration.decorators&&t.declaration.decorators.length>0?e(t.declaration.decorators[0]):!n.ignoreDecorators&&t.decorators&&t.decorators.length>0?e(t.decorators[0]):t.__location?t.__location.startOffset:t.range?t.range[0]:"number"==typeof t.start?t.start:t.loc?t.loc.start:null},locEnd:function e(n){var i=n.nodes&&t(n.nodes);if(i&&n.source&&!n.source.end&&(n=i),n.__location)return n.__location.endOffset;var r=n.range?n.range[1]:"number"==typeof n.end?n.end:null;return n.typeAnnotation?Math.max(r,e(n.typeAnnotation)):n.loc&&!r?n.loc.end:r}};function i(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function r(e,t){return e(t={exports:{}},t.exports),t.exports}function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function u(e,t,n){return t&&o(e.prototype,t),n&&o(e,n),e}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&h(e,t)}function c(e){return(c=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function h(e,t){return(h=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function p(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function v(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var n=[],i=!0,r=!1,s=void 0;try{for(var a,o=e[Symbol.iterator]();!(i=(a=o.next()).done)&&(n.push(a.value),!t||n.length!==t);i=!0);}catch(e){r=!0,s=e}finally{try{i||null==o.return||o.return()}finally{if(r)throw s}}return n}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var f=r((function(e,t){var n="\n",i="\r",r=function(){function e(e){this.string=e;for(var t=[0],r=0;r<e.length;)switch(e[r]){case n:r+=n.length,t.push(r);break;case i:e[r+=i.length]===n&&(r+=n.length),t.push(r);break;default:r++}this.offsets=t}return e.prototype.locationForIndex=function(e){if(e<0||e>this.string.length)return null;for(var t=0,n=this.offsets;n[t+1]<=e;)t++;return{line:t,column:e-n[t]}},e.prototype.indexForLocation=function(e){var t=e.line,n=e.column;return t<0||t>=this.offsets.length?null:n<0||n>this.lengthOfLine(t)?null:this.offsets[t]+n},e.prototype.lengthOfLine=function(e){var t=this.offsets[e];return(e===this.offsets.length-1?this.string.length:this.offsets[e+1])-t},e}();t.__esModule=!0,t.default=r}));i(f);var d=r((function(e,t){Object.defineProperty(t,"__esModule",{value:!0});t.Context=function e(t){a(this,e),this.text=t,this.locator=new n(this.text)};var n=function(){function e(t){a(this,e),this._lineAndColumn=new f.default(t)}return u(e,[{key:"locationForIndex",value:function(e){var t=this._lineAndColumn.locationForIndex(e);return{line:t.line+1,column:t.column}}}]),e}()}));i(d);d.Context;
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */var y=function e(t,n,i,r){a(this,e),this.input=n,this.errLocation=i,this.ctxLocation=r,this.message="Parser Error: ".concat(t," ").concat(i," [").concat(n,"] in ").concat(r)},x=function e(t,n){a(this,e),this.start=t,this.end=n},g=function(){function e(t){a(this,e),this.span=t}return u(e,[{key:"visit",value:function(e){return null}},{key:"toString",value:function(){return"AST"}}]),e}(),k=function(e){function t(e,n,i,r){var s;return a(this,t),(s=p(this,c(t).call(this,e))).prefix=n,s.uninterpretedExpression=i,s.location=r,s}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitQuote(this,t)}},{key:"toString",value:function(){return"Quote"}}]),t}(g),m=function(e){function t(){return a(this,t),p(this,c(t).apply(this,arguments))}return l(t,e),u(t,[{key:"visit",value:function(e){}}]),t}(g),w=function(e){function t(){return a(this,t),p(this,c(t).apply(this,arguments))}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitImplicitReceiver(this,t)}}]),t}(g),C=function(e){function t(e,n){var i;return a(this,t),(i=p(this,c(t).call(this,e))).expressions=n,i}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitChain(this,t)}}]),t}(g),P=function(e){function t(e,n,i,r){var s;return a(this,t),(s=p(this,c(t).call(this,e))).condition=n,s.trueExp=i,s.falseExp=r,s}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitConditional(this,t)}}]),t}(g),b=function(e){function t(e,n,i){var r;return a(this,t),(r=p(this,c(t).call(this,e))).receiver=n,r.name=i,r}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitPropertyRead(this,t)}}]),t}(g),A=function(e){function t(e,n,i,r){var s;return a(this,t),(s=p(this,c(t).call(this,e))).receiver=n,s.name=i,s.value=r,s}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitPropertyWrite(this,t)}}]),t}(g),E=function(e){function t(e,n,i){var r;return a(this,t),(r=p(this,c(t).call(this,e))).receiver=n,r.name=i,r}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitSafePropertyRead(this,t)}}]),t}(g),S=function(e){function t(e,n,i){var r;return a(this,t),(r=p(this,c(t).call(this,e))).obj=n,r.key=i,r}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitKeyedRead(this,t)}}]),t}(g),N=function(e){function t(e,n,i,r){var s;return a(this,t),(s=p(this,c(t).call(this,e))).obj=n,s.key=i,s.value=r,s}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitKeyedWrite(this,t)}}]),t}(g),O=function(e){function t(e,n,i,r){var s;return a(this,t),(s=p(this,c(t).call(this,e))).exp=n,s.name=i,s.args=r,s}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitPipe(this,t)}}]),t}(g),I=function(e){function t(e,n){var i;return a(this,t),(i=p(this,c(t).call(this,e))).value=n,i}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitLiteralPrimitive(this,t)}}]),t}(g),_=function(e){function t(e,n){var i;return a(this,t),(i=p(this,c(t).call(this,e))).expressions=n,i}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitLiteralArray(this,t)}}]),t}(g),L=function(e){function t(e,n,i){var r;return a(this,t),(r=p(this,c(t).call(this,e))).keys=n,r.values=i,r}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitLiteralMap(this,t)}}]),t}(g),M=function(e){function t(e,n,i){var r;return a(this,t),(r=p(this,c(t).call(this,e))).strings=n,r.expressions=i,r}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitInterpolation(this,t)}}]),t}(g),K=function(e){function t(e,n,i,r){var s;return a(this,t),(s=p(this,c(t).call(this,e))).operation=n,s.left=i,s.right=r,s}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitBinary(this,t)}}]),t}(g),B=function(e){function t(e,n){var i;return a(this,t),(i=p(this,c(t).call(this,e))).expression=n,i}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitPrefixNot(this,t)}}]),t}(g),T=function(e){function t(e,n){var i;return a(this,t),(i=p(this,c(t).call(this,e))).expression=n,i}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitNonNullAssert(this,t)}}]),t}(g),R=function(e){function t(e,n,i,r){var s;return a(this,t),(s=p(this,c(t).call(this,e))).receiver=n,s.name=i,s.args=r,s}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitMethodCall(this,t)}}]),t}(g),j=function(e){function t(e,n,i,r){var s;return a(this,t),(s=p(this,c(t).call(this,e))).receiver=n,s.name=i,s.args=r,s}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitSafeMethodCall(this,t)}}]),t}(g),F=function(e){function t(e,n,i){var r;return a(this,t),(r=p(this,c(t).call(this,e))).target=n,r.args=i,r}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitFunctionCall(this,t)}}]),t}(g),V=function e(t,n){a(this,e),this.start=t,this.end=n},W=function(e){function t(e,n,i,r,s){var o;return a(this,t),(o=p(this,c(t).call(this,new x(0,null==n?0:n.length)))).ast=e,o.source=n,o.location=i,o.errors=s,o.sourceSpan=new V(r,r+o.span.end),o}return l(t,e),u(t,[{key:"visit",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return e.visitASTWithSource?e.visitASTWithSource(this,t):this.ast.visit(e,t)}},{key:"toString",value:function(){return"".concat(this.source," in ").concat(this.location)}}]),t}(g),G=function e(t,n,i,r,s){a(this,e),this.span=t,this.key=n,this.keyIsVar=i,this.name=r,this.expression=s},U=function(){function e(){a(this,e)}return u(e,[{key:"visitBinary",value:function(e,t){}},{key:"visitChain",value:function(e,t){}},{key:"visitConditional",value:function(e,t){}},{key:"visitFunctionCall",value:function(e,t){}},{key:"visitImplicitReceiver",value:function(e,t){}},{key:"visitInterpolation",value:function(e,t){}},{key:"visitKeyedRead",value:function(e,t){}},{key:"visitKeyedWrite",value:function(e,t){}},{key:"visitLiteralArray",value:function(e,t){}},{key:"visitLiteralMap",value:function(e,t){}},{key:"visitLiteralPrimitive",value:function(e,t){}},{key:"visitMethodCall",value:function(e,t){}},{key:"visitPipe",value:function(e,t){}},{key:"visitPrefixNot",value:function(e,t){}},{key:"visitNonNullAssert",value:function(e,t){}},{key:"visitPropertyRead",value:function(e,t){}},{key:"visitPropertyWrite",value:function(e,t){}},{key:"visitQuote",value:function(e,t){}},{key:"visitSafeMethodCall",value:function(e,t){}},{key:"visitSafePropertyRead",value:function(e,t){}}]),e}(),Q=function(){function e(){a(this,e)}return u(e,[{key:"visitBinary",value:function(e,t){return e.left.visit(this,t),e.right.visit(this,t),null}},{key:"visitChain",value:function(e,t){return this.visitAll(e.expressions,t)}},{key:"visitConditional",value:function(e,t){return e.condition.visit(this,t),e.trueExp.visit(this,t),e.falseExp.visit(this,t),null}},{key:"visitPipe",value:function(e,t){return e.exp.visit(this,t),this.visitAll(e.args,t),null}},{key:"visitFunctionCall",value:function(e,t){return e.target.visit(this,t),this.visitAll(e.args,t),null}},{key:"visitImplicitReceiver",value:function(e,t){return null}},{key:"visitInterpolation",value:function(e,t){return this.visitAll(e.expressions,t)}},{key:"visitKeyedRead",value:function(e,t){return e.obj.visit(this,t),e.key.visit(this,t),null}},{key:"visitKeyedWrite",value:function(e,t){return e.obj.visit(this,t),e.key.visit(this,t),e.value.visit(this,t),null}},{key:"visitLiteralArray",value:function(e,t){return this.visitAll(e.expressions,t)}},{key:"visitLiteralMap",value:function(e,t){return this.visitAll(e.values,t)}},{key:"visitLiteralPrimitive",value:function(e,t){return null}},{key:"visitMethodCall",value:function(e,t){return e.receiver.visit(this,t),this.visitAll(e.args,t)}},{key:"visitPrefixNot",value:function(e,t){return e.expression.visit(this,t),null}},{key:"visitNonNullAssert",value:function(e,t){return e.expression.visit(this,t),null}},{key:"visitPropertyRead",value:function(e,t){return e.receiver.visit(this,t),null}},{key:"visitPropertyWrite",value:function(e,t){return e.receiver.visit(this,t),e.value.visit(this,t),null}},{key:"visitSafePropertyRead",value:function(e,t){return e.receiver.visit(this,t),null}},{key:"visitSafeMethodCall",value:function(e,t){return e.receiver.visit(this,t),this.visitAll(e.args,t)}},{key:"visitAll",value:function(e,t){var n=this;return e.forEach((function(e){return e.visit(n,t)})),null}},{key:"visitQuote",value:function(e,t){return null}}]),e}(),z=function(){function e(){a(this,e)}return u(e,[{key:"visitImplicitReceiver",value:function(e,t){return e}},{key:"visitInterpolation",value:function(e,t){return new M(e.span,e.strings,this.visitAll(e.expressions))}},{key:"visitLiteralPrimitive",value:function(e,t){return new I(e.span,e.value)}},{key:"visitPropertyRead",value:function(e,t){return new b(e.span,e.receiver.visit(this),e.name)}},{key:"visitPropertyWrite",value:function(e,t){return new A(e.span,e.receiver.visit(this),e.name,e.value.visit(this))}},{key:"visitSafePropertyRead",value:function(e,t){return new E(e.span,e.receiver.visit(this),e.name)}},{key:"visitMethodCall",value:function(e,t){return new R(e.span,e.receiver.visit(this),e.name,this.visitAll(e.args))}},{key:"visitSafeMethodCall",value:function(e,t){return new j(e.span,e.receiver.visit(this),e.name,this.visitAll(e.args))}},{key:"visitFunctionCall",value:function(e,t){return new F(e.span,e.target.visit(this),this.visitAll(e.args))}},{key:"visitLiteralArray",value:function(e,t){return new _(e.span,this.visitAll(e.expressions))}},{key:"visitLiteralMap",value:function(e,t){return new L(e.span,e.keys,this.visitAll(e.values))}},{key:"visitBinary",value:function(e,t){return new K(e.span,e.operation,e.left.visit(this),e.right.visit(this))}},{key:"visitPrefixNot",value:function(e,t){return new B(e.span,e.expression.visit(this))}},{key:"visitNonNullAssert",value:function(e,t){return new T(e.span,e.expression.visit(this))}},{key:"visitConditional",value:function(e,t){return new P(e.span,e.condition.visit(this),e.trueExp.visit(this),e.falseExp.visit(this))}},{key:"visitPipe",value:function(e,t){return new O(e.span,e.exp.visit(this),e.name,this.visitAll(e.args))}},{key:"visitKeyedRead",value:function(e,t){return new S(e.span,e.obj.visit(this),e.key.visit(this))}},{key:"visitKeyedWrite",value:function(e,t){return new N(e.span,e.obj.visit(this),e.key.visit(this),e.value.visit(this))}},{key:"visitAll",value:function(e){for(var t=new Array(e.length),n=0;n<e.length;++n)t[n]=e[n].visit(this);return t}},{key:"visitChain",value:function(e,t){return new C(e.span,this.visitAll(e.expressions))}},{key:"visitQuote",value:function(e,t){return new k(e.span,e.prefix,e.uninterpretedExpression,e.location)}}]),e}(),$=function(){function e(){a(this,e)}return u(e,[{key:"visitImplicitReceiver",value:function(e,t){return e}},{key:"visitInterpolation",value:function(e,t){var n=this.visitAll(e.expressions);return n!==e.expressions?new M(e.span,e.strings,n):e}},{key:"visitLiteralPrimitive",value:function(e,t){return e}},{key:"visitPropertyRead",value:function(e,t){var n=e.receiver.visit(this);return n!==e.receiver?new b(e.span,n,e.name):e}},{key:"visitPropertyWrite",value:function(e,t){var n=e.receiver.visit(this),i=e.value.visit(this);return n!==e.receiver||i!==e.value?new A(e.span,n,e.name,i):e}},{key:"visitSafePropertyRead",value:function(e,t){var n=e.receiver.visit(this);return n!==e.receiver?new E(e.span,n,e.name):e}},{key:"visitMethodCall",value:function(e,t){var n=e.receiver.visit(this),i=this.visitAll(e.args);return n!==e.receiver||i!==e.args?new R(e.span,n,e.name,i):e}},{key:"visitSafeMethodCall",value:function(e,t){var n=e.receiver.visit(this),i=this.visitAll(e.args);return n!==e.receiver||i!==e.args?new j(e.span,n,e.name,i):e}},{key:"visitFunctionCall",value:function(e,t){var n=e.target&&e.target.visit(this),i=this.visitAll(e.args);return n!==e.target||i!==e.args?new F(e.span,n,i):e}},{key:"visitLiteralArray",value:function(e,t){var n=this.visitAll(e.expressions);return n!==e.expressions?new _(e.span,n):e}},{key:"visitLiteralMap",value:function(e,t){var n=this.visitAll(e.values);return n!==e.values?new L(e.span,e.keys,n):e}},{key:"visitBinary",value:function(e,t){var n=e.left.visit(this),i=e.right.visit(this);return n!==e.left||i!==e.right?new K(e.span,e.operation,n,i):e}},{key:"visitPrefixNot",value:function(e,t){var n=e.expression.visit(this);return n!==e.expression?new B(e.span,n):e}},{key:"visitNonNullAssert",value:function(e,t){var n=e.expression.visit(this);return n!==e.expression?new T(e.span,n):e}},{key:"visitConditional",value:function(e,t){var n=e.condition.visit(this),i=e.trueExp.visit(this),r=e.falseExp.visit(this);return n!==e.condition||i!==e.trueExp||r!==e.falseExp?new P(e.span,n,i,r):e}},{key:"visitPipe",value:function(e,t){var n=e.exp.visit(this),i=this.visitAll(e.args);return n!==e.exp||i!==e.args?new O(e.span,n,e.name,i):e}},{key:"visitKeyedRead",value:function(e,t){var n=e.obj.visit(this),i=e.key.visit(this);return n!==e.obj||i!==e.key?new S(e.span,n,i):e}},{key:"visitKeyedWrite",value:function(e,t){var n=e.obj.visit(this),i=e.key.visit(this),r=e.value.visit(this);return n!==e.obj||i!==e.key||r!==e.value?new N(e.span,n,i,r):e}},{key:"visitAll",value:function(e){for(var t=new Array(e.length),n=!1,i=0;i<e.length;++i){var r=e[i],s=r.visit(this);t[i]=s,n=n||s!==r}return n?t:e}},{key:"visitChain",value:function(e,t){var n=this.visitAll(e.expressions);return n!==e.expressions?new C(e.span,n):e}},{key:"visitQuote",value:function(e,t){return e}}]),e}();var q;!function(e){e[e.DEFAULT=0]="DEFAULT",e[e.LITERAL_ATTR=1]="LITERAL_ATTR",e[e.ANIMATION=2]="ANIMATION"}(q||(q={}));var D,H=Object.freeze({__proto__:null,ParserError:y,ParseSpan:x,AST:g,Quote:k,EmptyExpr:m,ImplicitReceiver:w,Chain:C,Conditional:P,PropertyRead:b,PropertyWrite:A,SafePropertyRead:E,KeyedRead:S,KeyedWrite:N,BindingPipe:O,LiteralPrimitive:I,LiteralArray:_,LiteralMap:L,Interpolation:M,Binary:K,PrefixNot:B,NonNullAssert:T,MethodCall:R,SafeMethodCall:j,FunctionCall:F,AbsoluteSourceSpan:V,ASTWithSource:W,TemplateBinding:G,NullAstVisitor:U,RecursiveAstVisitor:Q,AstTransformer:z,AstMemoryEfficientTransformer:$,visitAstChildren:function(e,t,n){function i(e){t.visit&&t.visit(e,n)||e.visit(t,n)}function r(e){e.forEach(i)}e.visit({visitBinary:function(e){i(e.left),i(e.right)},visitChain:function(e){r(e.expressions)},visitConditional:function(e){i(e.condition),i(e.trueExp),i(e.falseExp)},visitFunctionCall:function(e){e.target&&i(e.target),r(e.args)},visitImplicitReceiver:function(e){},visitInterpolation:function(e){r(e.expressions)},visitKeyedRead:function(e){i(e.obj),i(e.key)},visitKeyedWrite:function(e){i(e.obj),i(e.key),i(e.obj)},visitLiteralArray:function(e){r(e.expressions)},visitLiteralMap:function(e){},visitLiteralPrimitive:function(e){},visitMethodCall:function(e){i(e.receiver),r(e.args)},visitPipe:function(e){i(e.exp),r(e.args)},visitPrefixNot:function(e){i(e.expression)},visitNonNullAssert:function(e){i(e.expression)},visitPropertyRead:function(e){i(e.receiver)},visitPropertyWrite:function(e){i(e.receiver),i(e.value)},visitQuote:function(e){},visitSafeMethodCall:function(e){i(e.receiver),r(e.args)},visitSafePropertyRead:function(e){i(e.receiver)}})},ParsedProperty:function e(t,n,i,r,s){a(this,e),this.name=t,this.expression=n,this.type=i,this.sourceSpan=r,this.valueSpan=s,this.isLiteral=this.type===q.LITERAL_ATTR,this.isAnimation=this.type===q.ANIMATION},get ParsedPropertyType(){return q},ParsedEvent:function e(t,n,i,r,s,o){a(this,e),this.name=t,this.targetOrPhase=n,this.type=i,this.handler=r,this.sourceSpan=s,this.handlerSpan=o},ParsedVariable:function e(t,n,i){a(this,e),this.name=t,this.value=n,this.sourceSpan=i},BoundElementProperty:function e(t,n,i,r,s,o,u){a(this,e),this.name=t,this.type=n,this.securityContext=i,this.value=r,this.unit=s,this.sourceSpan=o,this.valueSpan=u}}),J=0,X=9,Y=10,Z=11,ee=12,te=13,ne=32,ie=34,re=36,se=39,ae=43,oe=45,ue=48,le=57,ce=65,he=69,pe=90,ve=95,fe=97,de=101,ye=102,xe=110,ge=114,ke=116,me=118,we=122,Ce=160,Pe=96;function be(e){return ue<=e&&e<=le}!function(e){e[e.Character=0]="Character",e[e.Identifier=1]="Identifier",e[e.Keyword=2]="Keyword",e[e.String=3]="String",e[e.Operator=4]="Operator",e[e.Number=5]="Number",e[e.Error=6]="Error"}(D||(D={}));var Ae=["var","let","as","null","undefined","true","false","if","else","this"],Ee=function(){function e(){a(this,e)}return u(e,[{key:"tokenize",value:function(e){for(var t=new _e(e),n=[],i=t.scanToken();null!=i;)n.push(i),i=t.scanToken();return n}}]),e}(),Se=function(){function e(t,n,i,r){a(this,e),this.index=t,this.type=n,this.numValue=i,this.strValue=r}return u(e,[{key:"isCharacter",value:function(e){return this.type==D.Character&&this.numValue==e}},{key:"isNumber",value:function(){return this.type==D.Number}},{key:"isString",value:function(){return this.type==D.String}},{key:"isOperator",value:function(e){return this.type==D.Operator&&this.strValue==e}},{key:"isIdentifier",value:function(){return this.type==D.Identifier}},{key:"isKeyword",value:function(){return this.type==D.Keyword}},{key:"isKeywordLet",value:function(){return this.type==D.Keyword&&"let"==this.strValue}},{key:"isKeywordAs",value:function(){return this.type==D.Keyword&&"as"==this.strValue}},{key:"isKeywordNull",value:function(){return this.type==D.Keyword&&"null"==this.strValue}},{key:"isKeywordUndefined",value:function(){return this.type==D.Keyword&&"undefined"==this.strValue}},{key:"isKeywordTrue",value:function(){return this.type==D.Keyword&&"true"==this.strValue}},{key:"isKeywordFalse",value:function(){return this.type==D.Keyword&&"false"==this.strValue}},{key:"isKeywordThis",value:function(){return this.type==D.Keyword&&"this"==this.strValue}},{key:"isError",value:function(){return this.type==D.Error}},{key:"toNumber",value:function(){return this.type==D.Number?this.numValue:-1}},{key:"toString",value:function(){switch(this.type){case D.Character:case D.Identifier:case D.Keyword:case D.Operator:case D.String:case D.Error:return this.strValue;case D.Number:return this.numValue.toString();default:return null}}}]),e}();function Ne(e,t){return new Se(e,D.Character,t,String.fromCharCode(t))}function Oe(e,t){return new Se(e,D.Operator,0,t)}var Ie=new Se(-1,D.Character,0,""),_e=function(){function e(t){a(this,e),this.input=t,this.peek=0,this.index=-1,this.length=t.length,this.advance()}return u(e,[{key:"advance",value:function(){this.peek=++this.index>=this.length?J:this.input.charCodeAt(this.index)}},{key:"scanToken",value:function(){for(var e=this.input,t=this.length,n=this.peek,i=this.index;n<=ne;){if(++i>=t){n=J;break}n=e.charCodeAt(i)}if(this.peek=n,this.index=i,i>=t)return null;if(Le(n))return this.scanIdentifier();if(be(n))return this.scanNumber(i);var r,s=i;switch(n){case 46:return this.advance(),be(this.peek)?this.scanNumber(s):Ne(s,46);case 40:case 41:case 123:case 125:case 91:case 93:case 44:case 58:case 59:return this.scanCharacter(s,n);case se:case ie:return this.scanString();case 35:case ae:case oe:case 42:case 47:case 37:case 94:return this.scanOperator(s,String.fromCharCode(n));case 63:return this.scanComplexOperator(s,"?",46,".");case 60:case 62:return this.scanComplexOperator(s,String.fromCharCode(n),61,"=");case 33:case 61:return this.scanComplexOperator(s,String.fromCharCode(n),61,"=",61,"=");case 38:return this.scanComplexOperator(s,"&",38,"&");case 124:return this.scanComplexOperator(s,"|",124,"|");case Ce:for(;(r=this.peek)>=X&&r<=ne||r==Ce;)this.advance();return this.scanToken()}return this.advance(),this.error("Unexpected character [".concat(String.fromCharCode(n),"]"),0)}},{key:"scanCharacter",value:function(e,t){return this.advance(),Ne(e,t)}},{key:"scanOperator",value:function(e,t){return this.advance(),Oe(e,t)}},{key:"scanComplexOperator",value:function(e,t,n,i,r,s){this.advance();var a=t;return this.peek==n&&(this.advance(),a+=i),null!=r&&this.peek==r&&(this.advance(),a+=s),Oe(e,a)}},{key:"scanIdentifier",value:function(){var e=this.index;for(this.advance();Ke(this.peek);)this.advance();var t,n=this.input.substring(e,this.index);return Ae.indexOf(n)>-1?(t=n,new Se(e,D.Keyword,0,t)):function(e,t){return new Se(e,D.Identifier,0,t)}(e,n)}},{key:"scanNumber",value:function(e){var t,n=this.index===e;for(this.advance();;){if(be(this.peek));else if(46==this.peek)n=!1;else{if((t=this.peek)!=de&&t!=he)break;if(this.advance(),Be(this.peek)&&this.advance(),!be(this.peek))return this.error("Invalid exponent",-1);n=!1}this.advance()}var i,r=this.input.substring(e,this.index),s=n?function(e){var t=parseInt(e);if(isNaN(t))throw new Error("Invalid integer literal when parsing "+e);return t}(r):parseFloat(r);return i=s,new Se(e,D.Number,i,"")}},{key:"scanString",value:function(){var e=this.index,t=this.peek;this.advance();for(var n="",i=this.index,r=this.input;this.peek!=t;)if(92==this.peek){n+=r.substring(i,this.index),this.advance();var s=void 0;if(this.peek=this.peek,117==this.peek){var a=r.substring(this.index+1,this.index+5);if(!/^[0-9a-f]+$/i.test(a))return this.error("Invalid unicode escape [\\u".concat(a,"]"),0);s=parseInt(a,16);for(var o=0;o<5;o++)this.advance()}else s=Re(this.peek),this.advance();n+=String.fromCharCode(s),i=this.index}else{if(this.peek==J)return this.error("Unterminated quote",0);this.advance()}var u,l=r.substring(i,this.index);return this.advance(),u=n+l,new Se(e,D.String,0,u)}},{key:"error",value:function(e,t){var n=this.index+t;return function(e,t){return new Se(e,D.Error,0,t)}(n,"Lexer Error: ".concat(e," at column ").concat(n," in expression [").concat(this.input,"]"))}}]),e}();function Le(e){return fe<=e&&e<=we||ce<=e&&e<=pe||e==ve||e==re}function Me(e){if(0==e.length)return!1;var t=new _e(e);if(!Le(t.peek))return!1;for(t.advance();t.peek!==J;){if(!Ke(t.peek))return!1;t.advance()}return!0}function Ke(e){return function(e){return e>=fe&&e<=we||e>=ce&&e<=pe}(e)||be(e)||e==ve||e==re}function Be(e){return e==oe||e==ae}function Te(e){return e===se||e===ie||e===Pe}function Re(e){switch(e){case xe:return Y;case ye:return ee;case ge:return te;case ke:return X;case me:return Z;default:return e}}var je=Object.freeze({__proto__:null,get TokenType(){return D},Lexer:Ee,Token:Se,EOF:Ie,isIdentifier:Me,isQuote:Te}),Fe=[/^\s*$/,/[<>]/,/^[{}]$/,/&(#|[a-z])/i,/^\/\//];
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */var Ve=new(function(){function e(t,n){a(this,e),this.start=t,this.end=n}return u(e,null,[{key:"fromArray",value:function(t){return t?(function(e,t){if(!(null==t||Array.isArray(t)&&2==t.length))throw new Error("Expected '".concat(e,"' to be an array, [start, end]."));if(null!=t){var n=t[0],i=t[1];Fe.forEach((function(e){if(e.test(n)||e.test(i))throw new Error("['".concat(n,"', '").concat(i,"'] contains unusable interpolation symbol."))}))}}("interpolation",t),new e(t[0],t[1])):Ve}}]),e}())("{{","}}");function We(e){return e.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")}"undefined"!=typeof self&&"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&self;var Ge=function e(t,n,i){a(this,e),this.strings=t,this.expressions=n,this.offsets=i},Ue=function e(t,n,i){a(this,e),this.templateBindings=t,this.warnings=n,this.errors=i};function Qe(e){var t=We(e.start)+"([\\s\\S]*?)"+We(e.end);return new RegExp(t,"g")}var ze=function(){function e(t){a(this,e),this._lexer=t,this.errors=[]}return u(e,[{key:"parseAction",value:function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Ve;this._checkNoInterpolation(e,t,i);var r=this._stripComments(e),s=this._lexer.tokenize(this._stripComments(e)),a=new $e(e,t,n,s,r.length,!0,this.errors,e.length-r.length).parseChain();return new W(a,e,t,n,this.errors)}},{key:"parseBinding",value:function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Ve,r=this._parseBindingAst(e,t,n,i);return new W(r,e,t,n,this.errors)}},{key:"parseSimpleBinding",value:function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Ve,r=this._parseBindingAst(e,t,n,i),s=qe.check(r);return s.length>0&&this._reportError("Host binding expression cannot contain ".concat(s.join(" ")),e,t),new W(r,e,t,n,this.errors)}},{key:"_reportError",value:function(e,t,n,i){this.errors.push(new y(e,t,n,i))}},{key:"_parseBindingAst",value:function(e,t,n,i){var r=this._parseQuote(e,t);if(null!=r)return r;this._checkNoInterpolation(e,t,i);var s=this._stripComments(e),a=this._lexer.tokenize(s);return new $e(e,t,n,a,s.length,!1,this.errors,e.length-s.length).parseChain()}},{key:"_parseQuote",value:function(e,t){if(null==e)return null;var n=e.indexOf(":");if(-1==n)return null;var i=e.substring(0,n).trim();if(!Me(i))return null;var r=e.substring(n+1);return new k(new x(0,e.length),i,r,t)}},{key:"parseTemplateBindings",value:function(e,t,n,i){var r=this._lexer.tokenize(t);return new $e(t,n,i,r,t.length,!1,this.errors,0).parseTemplateBindings(e)}},{key:"parseInterpolation",value:function(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Ve,r=this.splitInterpolation(e,t,i);if(null==r)return null;for(var s=[],a=0;a<r.expressions.length;++a){var o=r.expressions[a],u=this._stripComments(o),l=this._lexer.tokenize(u),c=new $e(e,t,n,l,u.length,!1,this.errors,r.offsets[a]+(o.length-u.length)).parseChain();s.push(c)}return new W(new M(new x(0,null==e?0:e.length),r.strings,s),e,t,n,this.errors)}},{key:"splitInterpolation",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Ve,i=Qe(n),r=e.split(i);if(r.length<=1)return null;for(var s=[],a=[],o=[],u=0,l=0;l<r.length;l++){var c=r[l];l%2==0?(s.push(c),u+=c.length):c.trim().length>0?(u+=n.start.length,a.push(c),o.push(u),u+=c.length+n.end.length):(this._reportError("Blank expressions are not allowed in interpolated strings",e,"at column ".concat(this._findInterpolationErrorColumn(r,l,n)," in"),t),a.push("$implict"),o.push(u))}return new Ge(s,a,o)}},{key:"wrapLiteralPrimitive",value:function(e,t,n){return new W(new I(new x(0,null==e?0:e.length),e),e,t,n,this.errors)}},{key:"_stripComments",value:function(e){var t=this._commentStart(e);return null!=t?e.substring(0,t).trim():e}},{key:"_commentStart",value:function(e){for(var t=null,n=0;n<e.length-1;n++){var i=e.charCodeAt(n),r=e.charCodeAt(n+1);if(47===i&&47==r&&null==t)return n;t===i?t=null:null==t&&Te(i)&&(t=i)}return null}},{key:"_checkNoInterpolation",value:function(e,t,n){var i=Qe(n),r=e.split(i);r.length>1&&this._reportError("Got interpolation (".concat(n.start).concat(n.end,") where expression was expected"),e,"at column ".concat(this._findInterpolationErrorColumn(r,1,n)," in"),t)}},{key:"_findInterpolationErrorColumn",value:function(e,t,n){for(var i="",r=0;r<t;r++)i+=r%2==0?e[r]:"".concat(n.start).concat(e[r]).concat(n.end);return i.length}}]),e}(),$e=function(){function e(t,n,i,r,s,o,u,l){a(this,e),this.input=t,this.location=n,this.absoluteOffset=i,this.tokens=r,this.inputLength=s,this.parseAction=o,this.errors=u,this.offset=l,this.rparensExpected=0,this.rbracketsExpected=0,this.rbracesExpected=0,this.index=0}return u(e,[{key:"peek",value:function(e){var t=this.index+e;return t<this.tokens.length?this.tokens[t]:Ie}},{key:"span",value:function(e){return new x(e,this.inputIndex)}},{key:"advance",value:function(){this.index++}},{key:"optionalCharacter",value:function(e){return!!this.next.isCharacter(e)&&(this.advance(),!0)}},{key:"peekKeywordLet",value:function(){return this.next.isKeywordLet()}},{key:"peekKeywordAs",value:function(){return this.next.isKeywordAs()}},{key:"expectCharacter",value:function(e){this.optionalCharacter(e)||this.error("Missing expected ".concat(String.fromCharCode(e)))}},{key:"optionalOperator",value:function(e){return!!this.next.isOperator(e)&&(this.advance(),!0)}},{key:"expectOperator",value:function(e){this.optionalOperator(e)||this.error("Missing expected operator ".concat(e))}},{key:"expectIdentifierOrKeyword",value:function(){var e=this.next;return e.isIdentifier()||e.isKeyword()?(this.advance(),e.toString()):(this.error("Unexpected token ".concat(e,", expected identifier or keyword")),"")}},{key:"expectIdentifierOrKeywordOrString",value:function(){var e=this.next;return e.isIdentifier()||e.isKeyword()||e.isString()?(this.advance(),e.toString()):(this.error("Unexpected token ".concat(e,", expected identifier, keyword, or string")),"")}},{key:"parseChain",value:function(){for(var e=[],t=this.inputIndex;this.index<this.tokens.length;){var n=this.parsePipe();if(e.push(n),this.optionalCharacter(59))for(this.parseAction||this.error("Binding expression cannot contain chained expression");this.optionalCharacter(59););else this.index<this.tokens.length&&this.error("Unexpected token '".concat(this.next,"'"))}return 0==e.length?new m(this.span(t)):1==e.length?e[0]:new C(this.span(t),e)}},{key:"parsePipe",value:function(){var e=this.parseExpression();if(this.optionalOperator("|")){this.parseAction&&this.error("Cannot have a pipe in an action expression");do{for(var t=this.expectIdentifierOrKeyword(),n=[];this.optionalCharacter(58);)n.push(this.parseExpression());e=new O(this.span(e.span.start),e,t,n)}while(this.optionalOperator("|"))}return e}},{key:"parseExpression",value:function(){return this.parseConditional()}},{key:"parseConditional",value:function(){var e=this.inputIndex,t=this.parseLogicalOr();if(this.optionalOperator("?")){var n,i=this.parsePipe();if(this.optionalCharacter(58))n=this.parsePipe();else{var r=this.inputIndex,s=this.input.substring(e,r);this.error("Conditional expression ".concat(s," requires all 3 expressions")),n=new m(this.span(e))}return new P(this.span(e),t,i,n)}return t}},{key:"parseLogicalOr",value:function(){for(var e=this.parseLogicalAnd();this.optionalOperator("||");){var t=this.parseLogicalAnd();e=new K(this.span(e.span.start),"||",e,t)}return e}},{key:"parseLogicalAnd",value:function(){for(var e=this.parseEquality();this.optionalOperator("&&");){var t=this.parseEquality();e=new K(this.span(e.span.start),"&&",e,t)}return e}},{key:"parseEquality",value:function(){for(var e=this.parseRelational();this.next.type==D.Operator;){var t=this.next.strValue;switch(t){case"==":case"===":case"!=":case"!==":this.advance();var n=this.parseRelational();e=new K(this.span(e.span.start),t,e,n);continue}break}return e}},{key:"parseRelational",value:function(){for(var e=this.parseAdditive();this.next.type==D.Operator;){var t=this.next.strValue;switch(t){case"<":case">":case"<=":case">=":this.advance();var n=this.parseAdditive();e=new K(this.span(e.span.start),t,e,n);continue}break}return e}},{key:"parseAdditive",value:function(){for(var e=this.parseMultiplicative();this.next.type==D.Operator;){var t=this.next.strValue;switch(t){case"+":case"-":this.advance();var n=this.parseMultiplicative();e=new K(this.span(e.span.start),t,e,n);continue}break}return e}},{key:"parseMultiplicative",value:function(){for(var e=this.parsePrefix();this.next.type==D.Operator;){var t=this.next.strValue;switch(t){case"*":case"%":case"/":this.advance();var n=this.parsePrefix();e=new K(this.span(e.span.start),t,e,n);continue}break}return e}},{key:"parsePrefix",value:function(){if(this.next.type==D.Operator){var e,t=this.inputIndex,n=this.next.strValue;switch(n){case"+":return this.advance(),e=this.parsePrefix(),new K(this.span(t),"-",e,new I(new x(t,t),0));case"-":return this.advance(),e=this.parsePrefix(),new K(this.span(t),n,new I(new x(t,t),0),e);case"!":return this.advance(),e=this.parsePrefix(),new B(this.span(t),e)}}return this.parseCallChain()}},{key:"parseCallChain",value:function(){for(var e=this.parsePrimary();;)if(this.optionalCharacter(46))e=this.parseAccessMemberOrMethodCall(e,!1);else if(this.optionalOperator("?."))e=this.parseAccessMemberOrMethodCall(e,!0);else if(this.optionalCharacter(91)){this.rbracketsExpected++;var t=this.parsePipe();if(this.rbracketsExpected--,this.expectCharacter(93),this.optionalOperator("=")){var n=this.parseConditional();e=new N(this.span(e.span.start),e,t,n)}else e=new S(this.span(e.span.start),e,t)}else if(this.optionalCharacter(40)){this.rparensExpected++;var i=this.parseCallArguments();this.rparensExpected--,this.expectCharacter(41),e=new F(this.span(e.span.start),e,i)}else{if(!this.optionalOperator("!"))return e;e=new T(this.span(e.span.start),e)}}},{key:"parsePrimary",value:function(){var e=this.inputIndex;if(this.optionalCharacter(40)){this.rparensExpected++;var t=this.parsePipe();return this.rparensExpected--,this.expectCharacter(41),t}if(this.next.isKeywordNull())return this.advance(),new I(this.span(e),null);if(this.next.isKeywordUndefined())return this.advance(),new I(this.span(e),void 0);if(this.next.isKeywordTrue())return this.advance(),new I(this.span(e),!0);if(this.next.isKeywordFalse())return this.advance(),new I(this.span(e),!1);if(this.next.isKeywordThis())return this.advance(),new w(this.span(e));if(this.optionalCharacter(91)){this.rbracketsExpected++;var n=this.parseExpressionList(93);return this.rbracketsExpected--,this.expectCharacter(93),new _(this.span(e),n)}if(this.next.isCharacter(123))return this.parseLiteralMap();if(this.next.isIdentifier())return this.parseAccessMemberOrMethodCall(new w(this.span(e)),!1);if(this.next.isNumber()){var i=this.next.toNumber();return this.advance(),new I(this.span(e),i)}if(this.next.isString()){var r=this.next.toString();return this.advance(),new I(this.span(e),r)}return this.index>=this.tokens.length?(this.error("Unexpected end of expression: ".concat(this.input)),new m(this.span(e))):(this.error("Unexpected token ".concat(this.next)),new m(this.span(e)))}},{key:"parseExpressionList",value:function(e){var t=[];if(!this.next.isCharacter(e))do{t.push(this.parsePipe())}while(this.optionalCharacter(44));return t}},{key:"parseLiteralMap",value:function(){var e=[],t=[],n=this.inputIndex;if(this.expectCharacter(123),!this.optionalCharacter(125)){this.rbracesExpected++;do{var i=this.next.isString(),r=this.expectIdentifierOrKeywordOrString();e.push({key:r,quoted:i}),this.expectCharacter(58),t.push(this.parsePipe())}while(this.optionalCharacter(44));this.rbracesExpected--,this.expectCharacter(125)}return new L(this.span(n),e,t)}},{key:"parseAccessMemberOrMethodCall",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=e.span.start,i=this.expectIdentifierOrKeyword();if(this.optionalCharacter(40)){this.rparensExpected++;var r=this.parseCallArguments();this.expectCharacter(41),this.rparensExpected--;var s=this.span(n);return t?new j(s,e,i,r):new R(s,e,i,r)}if(t)return this.optionalOperator("=")?(this.error("The '?.' operator cannot be used in the assignment"),new m(this.span(n))):new E(this.span(n),e,i);if(this.optionalOperator("=")){if(!this.parseAction)return this.error("Bindings cannot contain assignments"),new m(this.span(n));var a=this.parseConditional();return new A(this.span(n),e,i,a)}return new b(this.span(n),e,i)}},{key:"parseCallArguments",value:function(){if(this.next.isCharacter(41))return[];var e=[];do{e.push(this.parsePipe())}while(this.optionalCharacter(44));return e}},{key:"expectTemplateBindingKey",value:function(){var e="",t=!1;do{e+=this.expectIdentifierOrKeywordOrString(),(t=this.optionalOperator("-"))&&(e+="-")}while(t);return e.toString()}},{key:"parseTemplateBindings",value:function(e){var t=!0,n=[];do{var i=this.inputIndex,r=void 0,s=void 0,a=!1;t?(r=s=e,t=!1):((a=this.peekKeywordLet())&&this.advance(),r=this.expectTemplateBindingKey(),s=a?r:e+r[0].toUpperCase()+r.substring(1),this.optionalCharacter(58));var o=null,u=null;if(a)o=this.optionalOperator("=")?this.expectTemplateBindingKey():"$implicit";else if(this.peekKeywordAs())this.advance(),o=r,s=this.expectTemplateBindingKey(),a=!0;else if(this.next!==Ie&&!this.peekKeywordLet()){var l=this.inputIndex,c=this.parsePipe(),h=this.input.substring(l-this.offset,this.inputIndex-this.offset);u=new W(c,h,this.location,this.absoluteOffset,this.errors)}if(n.push(new G(this.span(i),s,a,o,u)),this.peekKeywordAs()&&!a){var p=this.inputIndex;this.advance();var v=this.expectTemplateBindingKey();n.push(new G(this.span(p),v,!0,s,null))}this.optionalCharacter(59)||this.optionalCharacter(44)}while(this.index<this.tokens.length);return new Ue(n,[],this.errors)}},{key:"error",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.errors.push(new y(e,this.input,this.locationText(t),this.location)),this.skip()}},{key:"locationText",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return null==e&&(e=this.index),e<this.tokens.length?"at column ".concat(this.tokens[e].index+1," in"):"at the end of the expression"}},{key:"skip",value:function(){for(var e=this.next;this.index<this.tokens.length&&!e.isCharacter(59)&&(this.rparensExpected<=0||!e.isCharacter(41))&&(this.rbracesExpected<=0||!e.isCharacter(125))&&(this.rbracketsExpected<=0||!e.isCharacter(93));)this.next.isError()&&this.errors.push(new y(this.next.toString(),this.input,this.locationText(),this.location)),this.advance(),e=this.next}},{key:"next",get:function(){return this.peek(0)}},{key:"inputIndex",get:function(){return this.index<this.tokens.length?this.next.index+this.offset:this.inputLength+this.offset}}]),e}(),qe=function(){function e(){a(this,e),this.errors=[]}return u(e,[{key:"visitImplicitReceiver",value:function(e,t){}},{key:"visitInterpolation",value:function(e,t){}},{key:"visitLiteralPrimitive",value:function(e,t){}},{key:"visitPropertyRead",value:function(e,t){}},{key:"visitPropertyWrite",value:function(e,t){}},{key:"visitSafePropertyRead",value:function(e,t){}},{key:"visitMethodCall",value:function(e,t){}},{key:"visitSafeMethodCall",value:function(e,t){}},{key:"visitFunctionCall",value:function(e,t){}},{key:"visitLiteralArray",value:function(e,t){this.visitAll(e.expressions)}},{key:"visitLiteralMap",value:function(e,t){this.visitAll(e.values)}},{key:"visitBinary",value:function(e,t){}},{key:"visitPrefixNot",value:function(e,t){}},{key:"visitNonNullAssert",value:function(e,t){}},{key:"visitConditional",value:function(e,t){}},{key:"visitPipe",value:function(e,t){this.errors.push("pipes")}},{key:"visitKeyedRead",value:function(e,t){}},{key:"visitKeyedWrite",value:function(e,t){}},{key:"visitAll",value:function(e){var t=this;return e.map((function(e){return e.visit(t)}))}},{key:"visitChain",value:function(e,t){}},{key:"visitQuote",value:function(e,t){}}],[{key:"check",value:function(t){var n=new e;return t.visit(n),n.errors}}]),e}(),De=Object.freeze({__proto__:null,SplitInterpolation:Ge,TemplateBindingParseResult:Ue,Parser:ze,_ParseAST:$e}),He=r((function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n="angular-estree-parser",i="NgEstreeParser";function r(){return new De.Parser(new je.Lexer)}function a(e,t){var n=r(),i=u(e,n),s=i.astInput,a=i.comments,l=t(s,n),c=l.ast;return o(l.errors),{ast:c,comments:a}}function o(e){if(0!==e.length){var t=v(e,1)[0].message;throw new SyntaxError(t.replace(/^Parser Error: | at column \d+ in [^]*$/g,""))}}function u(e,t){var n=t._commentStart(e);return null===n?{astInput:e,comments:[]}:{astInput:e.slice(0,n),comments:[{type:"Comment",value:e.slice(n+"//".length),span:{start:n,end:e.length}}]}}function l(e,t){for(var n=e.start,i=e.end;i!==n&&/\s/.test(t[i-1]);)i--;for(;n!==i&&/\s/.test(t[n]);)n++;return{start:n,end:i}}function c(e,t){for(var n=e.start,i=e.end;i!==t.length&&/\s/.test(t[i]);)i++;for(;0!==n&&/\s/.test(t[n-1]);)n--;return{start:n,end:i}}function h(e,t){return"("===t[e.start-1]&&")"===t[e.end]?{start:e.start-1,end:e.end+1}:e}t.parseNgBinding=function(e){return a(e,(function(e,t){return t.parseBinding(e,n)}))},t.parseNgSimpleBinding=function(e){return a(e,(function(e,t){return t.parseSimpleBinding(e,n)}))},t.parseNgAction=function(e){return a(e,(function(e,t){return t.parseAction(e,n)}))},t.parseNgTemplateBindings=function(e){var t=r().parseTemplateBindings(i,e,n),s=t.templateBindings;return o(t.errors),s},t.parseNgInterpolation=function(e){var t=r(),i=u(e,t),a=i.astInput,l=i.comments,c=t.parseInterpolation("{{"+a+"}}",n),h=c.ast;o(c.errors);var p=h.expressions[0];return function e(t,n){if(!t||"object"!==s(t))return;if(Array.isArray(t))return t.forEach((function(t){return e(t,n)}));for(var i=0,r=Object.keys(t);i<r.length;i++){var a=r[i],o=t[a];"span"===a?n(o):e(o,n)}}(p,(function(e){e.start-="{{".length,e.end-="{{".length})),{ast:p,comments:l}},t.getNgType=function(e){return e instanceof H.Binary?"Binary":e instanceof H.BindingPipe?"BindingPipe":e instanceof H.Chain?"Chain":e instanceof H.Conditional?"Conditional":e instanceof H.EmptyExpr?"EmptyExpr":e instanceof H.FunctionCall?"FunctionCall":e instanceof H.ImplicitReceiver?"ImplicitReceiver":e instanceof H.KeyedRead?"KeyedRead":e instanceof H.KeyedWrite?"KeyedWrite":e instanceof H.LiteralArray?"LiteralArray":e instanceof H.LiteralMap?"LiteralMap":e instanceof H.LiteralPrimitive?"LiteralPrimitive":e instanceof H.MethodCall?"MethodCall":e instanceof H.NonNullAssert?"NonNullAssert":e instanceof H.PrefixNot?"PrefixNot":e instanceof H.PropertyRead?"PropertyRead":e instanceof H.PropertyWrite?"PropertyWrite":e instanceof H.Quote?"Quote":e instanceof H.SafeMethodCall?"SafeMethodCall":e instanceof H.SafePropertyRead?"SafePropertyRead":e.type},t.fitSpans=function(e,t,n){for(var i=0,r={start:e.start,end:e.end};;){var s=c(r,t),a=h(s,t);if(s.start===a.start&&s.end===a.end)break;r.start=a.start,r.end=a.end,i++}return{hasParens:0!==(n?i-1:i),outerSpan:l(n?{start:r.start+1,end:r.end-1}:r,t),innerSpan:l(e,t)}},t.findFrontChar=function(e,t,n){for(var i=t;!e.test(n[i]);)i--;return i},t.findBackChar=function(e,t,n){for(var i=t;!e.test(n[i]);)i++;return i},t.toLowerCamelCase=function(e){return e.slice(0,1).toLowerCase()+e.slice(1)},t.getLast=function(e){return 0===e.length?void 0:e[e.length-1]}}));i(He);He.parseNgBinding,He.parseNgSimpleBinding,He.parseNgAction,He.parseNgTemplateBindings,He.parseNgInterpolation,He.getNgType,He.fitSpans,He.findFrontChar,He.findBackChar,He.toLowerCamelCase,He.getLast;var Je=r((function(e,t){function n(e,t,n,i){if(!n){var r=e.start,s=e.end;return{start:r,end:s,loc:{start:t.locator.locationForIndex(r),end:t.locator.locationForIndex(s)}}}var a=He.fitSpans(e,t.text,i),o=a.outerSpan,u=a.innerSpan,l=a.hasParens;return Object.assign({start:u.start,end:u.end,loc:{start:t.locator.locationForIndex(u.start),end:t.locator.locationForIndex(u.end)}},l&&{extra:{parenthesized:!0,parenStart:o.start,parenEnd:o.end}})}Object.defineProperty(t,"__esModule",{value:!0}),t.transform=function(e,i){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=He.getNgType(e);switch(a){case"Binary":var o=e.left,u=e.operation,l=e.right,c=l.span.start===l.span.end,h=o.span.start===o.span.end;if(c||h){var p=o.span.start===o.span.end?Pe(l):Pe(o);return Ae("UnaryExpression",{prefix:!0,argument:p,operator:c?"+":"-"},{start:e.span.start,end:Le(p)},{hasParentParens:r})}var v=Pe(o),f=Pe(l);return Ae("&&"===u||"||"===u?"LogicalExpression":"BinaryExpression",{left:v,right:f,operator:u},{start:_e(v),end:Le(f)},{hasParentParens:r});case"BindingPipe":var d=e.exp,y=e.name,x=e.args,g=Pe(d),k=Ne(/\S/,Ne(/\|/,Le(g))+1),m=Ae("Identifier",{name:y},{start:k,end:k+y.length}),w=x.map(Pe);return Ae("NGPipeExpression",{left:g,right:m,arguments:w},{start:_e(g),end:Le(0===w.length?m:He.getLast(w))},{hasParentParens:r});case"Chain":var C=e.expressions;return Ae("NGChainedExpression",{expressions:C.map(Pe)},e.span,{hasParentParens:r});case"Comment":var P=e.value;return Ae("CommentLine",{value:P},e.span,{processSpan:!1});case"Conditional":var b=e.condition,A=e.trueExp,E=e.falseExp,S=Pe(b),N=Pe(A),O=Pe(E);return Ae("ConditionalExpression",{test:S,consequent:N,alternate:O},{start:_e(S),end:Le(O)},{hasParentParens:r});case"EmptyExpr":return Ae("NGEmptyExpression",{},e.span,{hasParentParens:r});case"FunctionCall":var I=e.target,_=e.args,L=1===_.length?[be(_[0])]:_.map(Pe),M=Pe(I);return Ae("CallExpression",{callee:M,arguments:L},{start:_e(M),end:e.span.end},{hasParentParens:r});case"KeyedRead":var K=e.obj,B=e.key,T=Pe(K),R=Pe(B);return Ae("MemberExpression",{computed:!0,object:T,property:R},{start:_e(T),end:e.span.end},{hasParentParens:r});case"LiteralArray":var j=e.expressions;return Ae("ArrayExpression",{elements:j.map(Pe)},e.span,{hasParentParens:r});case"LiteralMap":var F=e.keys,V=e.values,W=V.map((function(e){return Pe(e)})),G=F.map((function(t,n){var i=t.key,r=t.quoted,s=W[n],a={start:Ne(/\S/,0===n?e.span.start+1:Ne(/,/,Le(W[n-1]))+1),end:Se(/\S/,Se(/:/,_e(s)-1)-1)+1},o=r?Ae("StringLiteral",{value:i},a):Ae("Identifier",{name:i},a);return Ae("ObjectProperty",{key:o,value:s,method:!1,shorthand:!1,computed:!1},{start:_e(o),end:Le(s)})}));return Ae("ObjectExpression",{properties:G},e.span,{hasParentParens:r});case"LiteralPrimitive":var U=e.value;switch(s(U)){case"boolean":return Ae("BooleanLiteral",{value:U},e.span,{hasParentParens:r});case"number":return Ae("NumericLiteral",{value:U},e.span,{hasParentParens:r});case"object":return Ae("NullLiteral",{},e.span,{hasParentParens:r});case"string":return Ae("StringLiteral",{value:U},e.span,{hasParentParens:r});case"undefined":return Ae("Identifier",{name:"undefined"},e.span,{hasParentParens:r});default:throw new Error("Unexpected LiteralPrimitive value type ".concat(s(U)))}case"MethodCall":case"SafeMethodCall":var Q="SafeMethodCall"===a,z=e.receiver,$=e.name,q=e.args,D=1===q.length?[be(q[0])]:q.map(Pe),H=Se(/\S/,Se(/\(/,(0===D.length?Se(/\)/,e.span.end-1):_e(D[0]))-1)-1)+1,J=Ae("Identifier",{name:$},{start:H-$.length,end:H}),X=Ee(z,J,{computed:!1,optional:Q}),Y=Oe(X);return Ae(Q||Y?"OptionalCallExpression":"CallExpression",{callee:X,arguments:D},{start:_e(X),end:e.span.end},{hasParentParens:r});case"NonNullAssert":var Z=e.expression,ee=Pe(Z);return Ae("TSNonNullExpression",{expression:ee},{start:_e(ee),end:e.span.end},{hasParentParens:r});case"PrefixNot":var te=e.expression,ne=Pe(te);return Ae("UnaryExpression",{prefix:!0,operator:"!",argument:ne},{start:e.span.start,end:Le(ne)},{hasParentParens:r});case"PropertyRead":case"SafePropertyRead":var ie="SafePropertyRead"===a,re=e.receiver,se=e.name,ae=Se(/\S/,e.span.end-1)+1,oe=Ae("Identifier",{name:se},{start:ae-se.length,end:ae},re.span.start===re.span.end?{hasParentParens:r}:{});return Ee(re,oe,{computed:!1,optional:ie},{hasParentParens:r});case"KeyedWrite":var ue=e.obj,le=e.key,ce=e.value,he=Pe(le),pe=Pe(ce),ve=Ee(ue,he,{computed:!0,optional:!1},{end:Ne(/\]/,Le(he))+1});return Ae("AssignmentExpression",{left:ve,operator:"=",right:pe},{start:_e(ve),end:Le(pe)},{hasParentParens:r});case"PropertyWrite":var fe=e.receiver,de=e.name,ye=e.value,xe=Pe(ye),ge=Se(/\S/,Se(/=/,_e(xe)-1)-1)+1,ke=Ae("Identifier",{name:de},{start:ge-de.length,end:ge}),me=Ee(fe,ke,{computed:!1,optional:!1});return Ae("AssignmentExpression",{left:me,operator:"=",right:xe},{start:_e(me),end:Le(xe)},{hasParentParens:r});case"Quote":var we=e.prefix,Ce=e.uninterpretedExpression;return Ae("NGQuotedExpression",{prefix:we,value:Ce},e.span,{hasParentParens:r});default:throw new Error("Unexpected node ".concat(a))}function Pe(e){return t.transform(e,i)}function be(e){return t.transform(e,i,!0)}function Ae(e,t,r){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},a=s.processSpan,o=void 0===a||a,u=s.hasParentParens,l=void 0!==u&&u,c=Object.assign({type:e},n(r,i,o,l),t);switch(e){case"Identifier":var h=c;h.loc.identifierName=h.name;break;case"NumericLiteral":var p=c;p.extra=Object.assign({},p.extra,{raw:i.text.slice(p.start,p.end),rawValue:p.value});break;case"StringLiteral":var v=c;v.extra=Object.assign({},v.extra,{raw:i.text.slice(v.start,v.end),rawValue:v.value})}return c}function Ee(e,t,n){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r=i.end,s=void 0===r?Le(t):r,a=i.hasParentParens,o=void 0!==a&&a;if(e.span.start===e.span.end)return t;var u="ImplicitReceiver"===He.getNgType(e)?Ae("ThisExpression",{},e.span):Pe(e),l=Oe(u);return Ae(n.optional||l?"OptionalMemberExpression":"MemberExpression",Object.assign({object:u,property:t,computed:n.computed},n.optional?{optional:!0}:l?{optional:!1}:null),{start:_e(u),end:s},{hasParentParens:o})}function Se(e,t){return He.findFrontChar(e,t,i.text)}function Ne(e,t){return He.findBackChar(e,t,i.text)}function Oe(e){return("OptionalCallExpression"===e.type||"OptionalMemberExpression"===e.type)&&!Ie(e)}function Ie(e){return e.extra&&e.extra.parenthesized}function _e(e){return Ie(e)?e.extra.parenStart:e.start}function Le(e){return Ie(e)?e.extra.parenEnd:e.end}},t.transformSpan=n}));i(Je);Je.transform,Je.transformSpan;var Xe=r((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.transformTemplateBindings=function(e,t){for(var n=v(e,1)[0],i=n.key,r=0===t.text.slice(n.span.start,n.span.end).trim().length?e.slice(1):e,s=[],a=null,o=0;o<r.length;o++){var u=r[o],l=u.key,c=u.keyIsVar,h=u.name,p=u.span;a&&a.key===h&&c&&/^as\s$/.test(t.text.slice(p.start,p.start+3))?function(){var e=x(He.findBackChar(/\S/,p.start+3,t.text),l),n=y("NGMicrosyntaxKey",{name:l},e),i=function(e,n){return Object.assign({},e,Je.transformSpan({start:e.start,end:n},t))},r=function(e){return Object.assign({},i(e,n.end),{alias:n})},a=s.pop();if("NGMicrosyntaxExpression"===a.type)s.push(r(a));else{if("NGMicrosyntaxKeyedExpression"!==a.type)throw new Error("Unexpected type ".concat(a.type));var o=r(a.expression);s.push(i(Object.assign({},a,{expression:o}),o.end))}}():s.push(f(u,o)),a=u}return y("NGMicrosyntax",{body:s},0===s.length?e[0].span:{start:s[0].start,end:s[s.length-1].end});function f(e,n){var i=e.key,r=e.keyIsVar,s=e.name,a=e.expression,o=e.span;if(r){if(/^let\s$/.test(t.text.slice(o.start,o.start+4))){var u=x(He.findBackChar(/\S/,o.start+4,t.text),i);return y("NGMicrosyntaxLet",{key:y("NGMicrosyntaxKey",{name:i},u),value:0===t.text.slice(u.end,o.end).trim().length?null:y("NGMicrosyntaxKey",{name:s},{start:He.findBackChar(/=/,u.end,t.text)+1,end:o.end})},o)}var l=x(o.start,s);return y("NGMicrosyntaxAs",{key:y("NGMicrosyntaxKey",{name:s},l),alias:y("NGMicrosyntaxKey",{name:i},{start:He.findBackChar(/\S/,l.end,t.text)+"as".length,end:o.end})},o)}if(a){if(0===n)return y("NGMicrosyntaxExpression",{expression:d(a.ast),alias:null},o);var c=d(a.ast),h=c.start,p=c.end,v=g(i);return y("NGMicrosyntaxKeyedExpression",{key:y("NGMicrosyntaxKey",{name:v},x(o.start,v)),expression:y("NGMicrosyntaxExpression",{expression:c,alias:null},{start:h,end:p})},o)}return y("NGMicrosyntaxKey",{name:g(i)},o)}function d(e){return Je.transform(e,t)}function y(e,n,i){var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];return Object.assign({type:e},Je.transformSpan(i,t,r,!1),n)}function x(e,n){if("'"!==t.text[e]&&'"'!==t.text[e])return{start:e,end:e+n.length};for(var i=t.text[e],r=0,s=e+1;;){var a=t.text[s];if(a===i&&r%2==0)return{start:e,end:s+1};"\\"===a?r++:r=0,s++}}function g(e){return He.toLowerCamelCase(e.slice(i.length))}}}));i(Xe);Xe.transformTemplateBindings;var Ye=r((function(e,t){function n(e,t){var n=t(e),i=n.ast,r=n.comments,s=new d.Context(e),a=function(e){return Je.transform(e,s)},o=a(i);return o.comments=r.map(a),o}Object.defineProperty(t,"__esModule",{value:!0}),t.parseBinding=function(e){return n(e,He.parseNgBinding)},t.parseSimpleBinding=function(e){return n(e,He.parseNgSimpleBinding)},t.parseInterpolation=function(e){return n(e,He.parseNgInterpolation)},t.parseAction=function(e){return n(e,He.parseNgAction)},t.parseTemplateBindings=function(e){return Xe.transformTemplateBindings(He.parseNgTemplateBindings(e),new d.Context(e))}}));i(Ye);Ye.parseBinding,Ye.parseSimpleBinding,Ye.parseInterpolation,Ye.parseAction,Ye.parseTemplateBindings;function Ze(e){return Object.assign({astFormat:"estree",parse:function(t,n,i){var r=e(t,Ye);return{type:"NGRoot",node:"__ng_action"===i.parser&&"NGChainedExpression"!==r.type?Object.assign({},r,{type:"NGChainedExpression",expressions:[r]}):r}}},n)}var et={parsers:{__ng_action:Ze((function(e,t){return t.parseAction(e)})),__ng_binding:Ze((function(e,t){return t.parseBinding(e)})),__ng_interpolation:Ze((function(e,t){return t.parseInterpolation(e)})),__ng_directive:Ze((function(e,t){return t.parseTemplateBindings(e)}))}},tt=et.parsers;e.default=et,e.parsers=tt,Object.defineProperty(e,"__esModule",{value:!0})}));
diff --git a/node_modules/prettier/parser-babylon.js b/node_modules/prettier/parser-babylon.js
new file mode 100644
index 0000000..3b064fd
--- /dev/null
+++ b/node_modules/prettier/parser-babylon.js
@@ -0,0 +1 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(((t=t||self).prettierPlugins=t.prettierPlugins||{},t.prettierPlugins.babylon={}))}(this,(function(t){"use strict";var e=function(t,e){var s=new SyntaxError(t+" ("+e.start.line+":"+e.start.column+")");return s.loc=e,s};function s(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function i(t,e){return t(e={exports:{}},e.exports),e.exports}var a,r=Object.freeze({__proto__:null,default:{EOL:"\n"}}),n=i((function(t){t.exports=function(t){if("string"!=typeof t)throw new TypeError("Expected a string");var e=t.match(/(?:\r?\n)/g)||[];if(0===e.length)return null;var s=e.filter((function(t){return"\r\n"===t})).length;return s>e.length-s?"\r\n":"\n"},t.exports.graceful=function(e){return t.exports(e)||"\n"}})),o=(n.graceful,(a=r)&&a.default||a),h=i((function(t,e){function s(){var t=o;return s=function(){return t},t}function i(){var t,e=(t=n)&&t.__esModule?t:{default:t};return i=function(){return e},e}Object.defineProperty(e,"__esModule",{value:!0}),e.extract=function(t){var e=t.match(h);return e?e[0].trimLeft():""},e.strip=function(t){var e=t.match(h);return e&&e[0]?t.substring(e[0].length):t},e.parse=function(t){return f(t).pragmas},e.parseWithComments=f,e.print=function(t){var e=t.comments,a=void 0===e?"":e,r=t.pragmas,n=void 0===r?{}:r,o=(0,i().default)(a)||s().EOL,h=Object.keys(n),u=h.map((function(t){return m(t,n[t])})).reduce((function(t,e){return t.concat(e)}),[]).map((function(t){return" * "+t+o})).join("");if(!a){if(0===h.length)return"";if(1===h.length&&!Array.isArray(n[h[0]])){var l=n[h[0]];return"".concat("/**"," ").concat(m(h[0],l)[0]).concat(" */")}}var c=a.split(o).map((function(t){return"".concat(" *"," ").concat(t)})).join(o)+o;return"/**"+o+(a?c:"")+(a&&h.length?" *"+o:"")+u+" */"};var a=/\*\/$/,r=/^\/\*\*/,h=/^\s*(\/\*\*?(.|\r?\n)*?\*\/)/,u=/(^|\s+)\/\/([^\r\n]*)/g,l=/^(\r?\n)+/,c=/(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g,p=/(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g,d=/(\r?\n|^) *\* ?/g;function f(t){var e=(0,i().default)(t)||s().EOL;t=t.replace(r,"").replace(a,"").replace(d,"$1");for(var n="";n!==t;)n=t,t=t.replace(c,"".concat(e,"$1 $2").concat(e));t=t.replace(l,"").trimRight();for(var o,h=Object.create(null),f=t.replace(p,"").replace(l,"").trimRight();o=p.exec(t);){var m=o[2].replace(u,"");"string"==typeof h[o[1]]||Array.isArray(h[o[1]])?h[o[1]]=[].concat(h[o[1]],m):h[o[1]]=m}return{comments:f,pragmas:h}}function m(t,e){return[].concat(e).map((function(e){return"@".concat(t," ").concat(e).trim()}))}}));s(h);h.extract,h.strip,h.parse,h.parseWithComments,h.print;var u=function(t){var e=Object.keys(h.parse(h.extract(t)));return-1!==e.indexOf("prettier")||-1!==e.indexOf("format")},l=function(t){return t.length>0?t[t.length-1]:null};var c={locStart:function t(e,s){return!(s=s||{}).ignoreDecorators&&e.declaration&&e.declaration.decorators&&e.declaration.decorators.length>0?t(e.declaration.decorators[0]):!s.ignoreDecorators&&e.decorators&&e.decorators.length>0?t(e.decorators[0]):e.__location?e.__location.startOffset:e.range?e.range[0]:"number"==typeof e.start?e.start:e.loc?e.loc.start:null},locEnd:function t(e){var s=e.nodes&&l(e.nodes);if(s&&e.source&&!e.source.end&&(e=s),e.__location)return e.__location.endOffset;var i=e.range?e.range[1]:"number"==typeof e.end?e.end:null;return e.typeAnnotation?Math.max(i,t(e.typeAnnotation)):e.loc&&!i?e.loc.end:i}};function p(t){return(p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function f(t,e){for(var s=0;s<e.length;s++){var i=e[s];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function m(t,e,s){return e&&f(t.prototype,e),s&&f(t,s),t}function y(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&v(t,e)}function D(t){return(D=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function v(t,e){return(v=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function x(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function g(t,e){return!e||"object"!=typeof e&&"function"!=typeof e?x(t):e}function k(t,e,s){return(k="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,s){var i=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=D(t)););return t}(t,e);if(i){var a=Object.getOwnPropertyDescriptor(i,e);return a.get?a.get.call(s):a.value}})(t,e,s||t)}function P(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if(!(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t)))return;var s=[],i=!0,a=!1,r=void 0;try{for(var n,o=t[Symbol.iterator]();!(i=(n=o.next()).done)&&(s.push(n.value),!e||s.length!==e);i=!0);}catch(t){a=!0,r=t}finally{try{i||null==o.return||o.return()}finally{if(a)throw r}}return s}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function b(t){return function(t){if(Array.isArray(t)){for(var e=0,s=new Array(t.length);e<t.length;e++)s[e]=t[e];return s}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var E=function(t){return"string"==typeof t?t.replace(function(t){t=Object.assign({onlyFirst:!1},t);var e=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(e,t.onlyFirst?void 0:"g")}(),""):t},C=E,A=E;C.default=A;var w=function(t){return!Number.isNaN(t)&&(t>=4352&&(t<=4447||9001===t||9002===t||11904<=t&&t<=12871&&12351!==t||12880<=t&&t<=19903||19968<=t&&t<=42182||43360<=t&&t<=43388||44032<=t&&t<=55203||63744<=t&&t<=64255||65040<=t&&t<=65049||65072<=t&&t<=65131||65281<=t&&t<=65376||65504<=t&&t<=65510||110592<=t&&t<=110593||127488<=t&&t<=127569||131072<=t&&t<=262141))},T=w,F=w;T.default=F;var N=function(t){if("string"!=typeof(t=t.replace(/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g," "))||0===t.length)return 0;t=C(t);for(var e=0,s=0;s<t.length;s++){var i=t.codePointAt(s);i<=31||i>=127&&i<=159||(i>=768&&i<=879||(i>65535&&s++,e+=T(i)?2:1))}return e},S=N,I=N;S.default=I;var L=/[|\\{}()[\]^$+*?.]/g,B=function(t){if("string"!=typeof t)throw new TypeError("Expected a string");return t.replace(L,"\\$&")},O=/[^\x20-\x7F]/;function M(t){if(t)switch(t.type){case"ExportDefaultDeclaration":case"ExportDefaultSpecifier":case"DeclareExportDeclaration":case"ExportNamedDeclaration":case"ExportAllDeclaration":return!0}return!1}function R(t){return function(e,s,i){var a=i&&i.backwards;if(!1===s)return!1;for(var r=e.length,n=s;n>=0&&n<r;){var o=e.charAt(n);if(t instanceof RegExp){if(!t.test(o))return n}else if(-1===t.indexOf(o))return n;a?n--:n++}return(-1===n||n===r)&&n}}var _=R(/\s/),j=R(" \t"),q=R(",; \t"),U=R(/[^\r\n]/);function V(t,e){if(!1===e)return!1;if("/"===t.charAt(e)&&"*"===t.charAt(e+1))for(var s=e+2;s<t.length;++s)if("*"===t.charAt(s)&&"/"===t.charAt(s+1))return s+2;return e}function z(t,e){return!1!==e&&("/"===t.charAt(e)&&"/"===t.charAt(e+1)?U(t,e):e)}function W(t,e,s){var i=s&&s.backwards;if(!1===e)return!1;var a=t.charAt(e);if(i){if("\r"===t.charAt(e-1)&&"\n"===a)return e-2;if("\n"===a||"\r"===a||"\u2028"===a||"\u2029"===a)return e-1}else{if("\r"===a&&"\n"===t.charAt(e+1))return e+2;if("\n"===a||"\r"===a||"\u2028"===a||"\u2029"===a)return e+1}return e}function K(t,e,s){var i=j(t,(s=s||{}).backwards?e-1:e,s);return i!==W(t,i,s)}function X(t,e){for(var s=null,i=e;i!==s;)s=i,i=V(t,i=q(t,i)),i=j(t,i);return!1!==(i=W(t,i=z(t,i)))&&K(t,i)}function J(t,e){for(var s=null,i=e;i!==s;)s=i,i=W(t,i=z(t,i=V(t,i=j(t,i))));return i}function H(t,e,s){return J(t,s(e))}var G={};function Q(t){return G[t]}[["|>"],["??"],["||"],["&&"],["|"],["^"],["&"],["==","===","!=","!=="],["<",">","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"],["**"]].forEach((function(t,e){t.forEach((function(t){G[t]=e}))}));var $={"==":!0,"!=":!0,"===":!0,"!==":!0},Y={"*":!0,"/":!0,"%":!0},Z={">>":!0,">>>":!0,"<<":!0};function tt(t,e,s){for(var i=0,a=s=s||0;a<t.length;++a)"\t"===t[a]?i=i+e-i%e:i++;return i}function et(t,e){var s=t.slice(1,-1),i={quote:'"',regex:/"/g},a={quote:"'",regex:/'/g},r="'"===e?a:i,n=r===a?i:a,o=r.quote;(s.includes(r.quote)||s.includes(n.quote))&&(o=(s.match(r.regex)||[]).length>(s.match(n.regex)||[]).length?n.quote:r.quote);return o}function st(t,e,s){var i='"'===e?"'":'"',a=t.replace(/\\([\s\S])|(['"])/g,(function(t,a,r){return a===i?a:r===e?"\\"+r:r||(s&&/^[^\\nrvtbfux\r\n\u2028\u2029"'0-7]$/.test(a)?a:"\\"+a)}));return e+a+e}function it(t){return t&&t.comments&&t.comments.length>0&&t.comments.some((function(t){return"prettier-ignore"===t.value.trim()}))}function at(t,e){(t.comments||(t.comments=[])).push(e),e.printed=!1,"JSXText"===t.type&&(e.printed=!0)}var rt={replaceEndOfLineWith:function(t,e){var s=[],i=!0,a=!1,r=void 0;try{for(var n,o=t.split("\n")[Symbol.iterator]();!(i=(n=o.next()).done);i=!0){var h=n.value;0!==s.length&&s.push(e),s.push(h)}}catch(t){a=!0,r=t}finally{try{i||null==o.return||o.return()}finally{if(a)throw r}}return s},getStringWidth:function(t){return t?O.test(t)?S(t):t.length:0},getMaxContinuousCount:function(t,e){var s=t.match(new RegExp("(".concat(B(e),")+"),"g"));return null===s?0:s.reduce((function(t,s){return Math.max(t,s.length/e.length)}),0)},getMinNotPresentContinuousCount:function(t,e){var s=t.match(new RegExp("(".concat(B(e),")+"),"g"));if(null===s)return 0;var i=new Map,a=0,r=!0,n=!1,o=void 0;try{for(var h,u=s[Symbol.iterator]();!(r=(h=u.next()).done);r=!0){var l=h.value.length/e.length;i.set(l,!0),l>a&&(a=l)}}catch(t){n=!0,o=t}finally{try{r||null==u.return||u.return()}finally{if(n)throw o}}for(var c=1;c<a;c++)if(!i.get(c))return c;return a+1},getPrecedence:Q,shouldFlatten:function(t,e){return Q(e)===Q(t)&&("**"!==t&&((!$[t]||!$[e])&&(!("%"===e&&Y[t]||"%"===t&&Y[e])&&((e===t||!Y[e]||!Y[t])&&(!Z[t]||!Z[e])))))},isBitwiseOperator:function(t){return!!Z[t]||"|"===t||"^"===t||"&"===t},isExportDeclaration:M,getParentExportDeclaration:function(t){var e=t.getParentNode();return"declaration"===t.getName()&&M(e)?e:null},getPenultimate:function(t){return t.length>1?t[t.length-2]:null},getLast:l,getNextNonSpaceNonCommentCharacterIndexWithStartIndex:J,getNextNonSpaceNonCommentCharacterIndex:H,getNextNonSpaceNonCommentCharacter:function(t,e,s){return t.charAt(H(t,e,s))},skip:R,skipWhitespace:_,skipSpaces:j,skipToLineEnd:q,skipEverythingButNewLine:U,skipInlineComment:V,skipTrailingComment:z,skipNewline:W,isNextLineEmptyAfterIndex:X,isNextLineEmpty:function(t,e,s){return X(t,s(e))},isPreviousLineEmpty:function(t,e,s){var i=s(e)-1;return i=W(t,i=j(t,i,{backwards:!0}),{backwards:!0}),(i=j(t,i,{backwards:!0}))!==W(t,i,{backwards:!0})},hasNewline:K,hasNewlineInRange:function(t,e,s){for(var i=e;i<s;++i)if("\n"===t.charAt(i))return!0;return!1},hasSpaces:function(t,e,s){return j(t,(s=s||{}).backwards?e-1:e,s)!==e},setLocStart:function(t,e){t.range?t.range[0]=e:t.start=e},setLocEnd:function(t,e){t.range?t.range[1]=e:t.end=e},startsWithNoLookaheadToken:function t(e,s){switch((e=function t(e){if(e.left)return t(e.left);return e}(e)).type){case"FunctionExpression":case"ClassExpression":case"DoExpression":return s;case"ObjectExpression":return!0;case"MemberExpression":case"OptionalMemberExpression":return t(e.object,s);case"TaggedTemplateExpression":return"FunctionExpression"!==e.tag.type&&t(e.tag,s);case"CallExpression":case"OptionalCallExpression":return"FunctionExpression"!==e.callee.type&&t(e.callee,s);case"ConditionalExpression":return t(e.test,s);case"UpdateExpression":return!e.prefix&&t(e.argument,s);case"BindExpression":return e.object&&t(e.object,s);case"SequenceExpression":return t(e.expressions[0],s);case"TSAsExpression":return t(e.expression,s);default:return!1}},getAlignmentSize:tt,getIndentSize:function(t,e){var s=t.lastIndexOf("\n");return-1===s?0:tt(t.slice(s+1).match(/^[ \t]*/)[0],e)},getPreferredQuote:et,printString:function(t,e,s){var i=t.slice(1,-1),a=!i.includes('"')&&!i.includes("'"),r="json"===e.parser?'"':e.__isInHtmlAttribute?"'":et(t,e.singleQuote?"'":'"');return s?a?r+i+r:t:st(i,r,!("css"===e.parser||"less"===e.parser||"scss"===e.parser||e.embeddedInHtml))},printNumber:function(t){return t.toLowerCase().replace(/^([+-]?[\d.]+e)(?:\+|(-))?0*(\d)/,"$1$2$3").replace(/^([+-]?[\d.]+)e[+-]?0+$/,"$1").replace(/^([+-])?\./,"$10.").replace(/(\.\d+?)0+(?=e|$)/,"$1").replace(/\.(?=e|$)/,"")},hasIgnoreComment:function(t){return it(t.getValue())},hasNodeIgnoreComment:it,makeString:st,matchAncestorTypes:function(t,e,s){for(s=s||0,e=e.slice();e.length;){var i=t.getParentNode(s),a=e.shift();if(!i||i.type!==a)return!1;s++}return!0},addLeadingComment:function(t,e){e.leading=!0,e.trailing=!1,at(t,e)},addDanglingComment:function(t,e){e.leading=!1,e.trailing=!1,at(t,e)},addTrailingComment:function(t,e){e.leading=!1,e.trailing=!0,at(t,e)},isWithinParentArrayProperty:function(t,e){var s=t.getValue(),i=t.getParentNode();if(null==i)return!1;if(!Array.isArray(i[e]))return!1;var a=t.getName();return i[e][a]===s}}.getLast;var nt=function(t,e){return function t(e,s,i,a){if(!e||"object"!==p(e))return;if(Array.isArray(e)){for(var r=0;r<e.length;r++)t(e[r],s,e,r);return}if("string"!=typeof e.type)return;for(var n=0,o=Object.keys(e);n<o.length;n++){var h=o[n];t(e[h],s,e,h)}var u=s(e);u&&(i[a]=u)}(t,(function(t){switch(t.type){case"VariableDeclaration":var s=rt(t.declarations);s&&s.init&&function(t,s){if(";"===e.originalText[(i=s,"flow"===e.parser?i.range[1]:i.end)])return;var i;"flow"===e.parser?t.range=[t.range[0],s.range[1]]:t.end=s.end;t.loc=Object.assign({},t.loc,{end:t.loc.end})}(t,s);break;case"TSParenthesizedType":return t.typeAnnotation;case"TSUnionType":case"TSIntersectionType":if(1===t.types.length)return Object.assign({},t.types[0],{loc:t.loc,range:t.range});break;case"EnumDeclaration":"flow"===e.parser&&t.body.range[0]===t.range[0]&&t.body.range[1]===t.range[1]&&(t.body.range=[t.id.range[1],t.range[1]-1]),"babel-flow"===e.parser&&(t.body.start=t.id.end,t.body.end=t.end-1)}})),t},ot=i((function(t,e){Object.defineProperty(e,"__esModule",{value:!0});var s=!0,i=function t(e){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};d(this,t),this.label=e,this.keyword=s.keyword,this.beforeExpr=!!s.beforeExpr,this.startsExpr=!!s.startsExpr,this.rightAssociative=!!s.rightAssociative,this.isLoop=!!s.isLoop,this.isAssign=!!s.isAssign,this.prefix=!!s.prefix,this.postfix=!!s.postfix,this.binop=null!=s.binop?s.binop:null,this.updateContext=null},a=new Map;function r(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};e.keyword=t;var s=new i(t,e);return a.set(t,s),s}function n(t,e){return new i(t,{beforeExpr:s,binop:e})}var o={num:new i("num",{startsExpr:!0}),bigint:new i("bigint",{startsExpr:!0}),regexp:new i("regexp",{startsExpr:!0}),string:new i("string",{startsExpr:!0}),name:new i("name",{startsExpr:!0}),eof:new i("eof"),bracketL:new i("[",{beforeExpr:s,startsExpr:!0}),bracketR:new i("]"),braceL:new i("{",{beforeExpr:s,startsExpr:!0}),braceBarL:new i("{|",{beforeExpr:s,startsExpr:!0}),braceR:new i("}"),braceBarR:new i("|}"),parenL:new i("(",{beforeExpr:s,startsExpr:!0}),parenR:new i(")"),comma:new i(",",{beforeExpr:s}),semi:new i(";",{beforeExpr:s}),colon:new i(":",{beforeExpr:s}),doubleColon:new i("::",{beforeExpr:s}),dot:new i("."),question:new i("?",{beforeExpr:s}),questionDot:new i("?."),arrow:new i("=>",{beforeExpr:s}),template:new i("template"),ellipsis:new i("...",{beforeExpr:s}),backQuote:new i("`",{startsExpr:!0}),dollarBraceL:new i("${",{beforeExpr:s,startsExpr:!0}),at:new i("@"),hash:new i("#",{startsExpr:!0}),interpreterDirective:new i("#!..."),eq:new i("=",{beforeExpr:s,isAssign:!0}),assign:new i("_=",{beforeExpr:s,isAssign:!0}),incDec:new i("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),bang:new i("!",{beforeExpr:s,prefix:!0,startsExpr:!0}),tilde:new i("~",{beforeExpr:s,prefix:!0,startsExpr:!0}),pipeline:n("|>",0),nullishCoalescing:n("??",1),logicalOR:n("||",2),logicalAND:n("&&",3),bitwiseOR:n("|",4),bitwiseXOR:n("^",5),bitwiseAND:n("&",6),equality:n("==/!=/===/!==",7),relational:n("</>/<=/>=",8),bitShift:n("<</>>/>>>",9),plusMin:new i("+/-",{beforeExpr:s,binop:10,prefix:!0,startsExpr:!0}),modulo:new i("%",{beforeExpr:s,binop:11,startsExpr:!0}),star:n("*",11),slash:n("/",11),exponent:new i("**",{beforeExpr:s,binop:12,rightAssociative:!0}),_break:r("break"),_case:r("case",{beforeExpr:s}),_catch:r("catch"),_continue:r("continue"),_debugger:r("debugger"),_default:r("default",{beforeExpr:s}),_do:r("do",{isLoop:!0,beforeExpr:s}),_else:r("else",{beforeExpr:s}),_finally:r("finally"),_for:r("for",{isLoop:!0}),_function:r("function",{startsExpr:!0}),_if:r("if"),_return:r("return",{beforeExpr:s}),_switch:r("switch"),_throw:r("throw",{beforeExpr:s,prefix:!0,startsExpr:!0}),_try:r("try"),_var:r("var"),_const:r("const"),_while:r("while",{isLoop:!0}),_with:r("with"),_new:r("new",{beforeExpr:s,startsExpr:!0}),_this:r("this",{startsExpr:!0}),_super:r("super",{startsExpr:!0}),_class:r("class",{startsExpr:!0}),_extends:r("extends",{beforeExpr:s}),_export:r("export"),_import:r("import",{startsExpr:!0}),_null:r("null",{startsExpr:!0}),_true:r("true",{startsExpr:!0}),_false:r("false",{startsExpr:!0}),_in:r("in",{beforeExpr:s,binop:8}),_instanceof:r("instanceof",{beforeExpr:s,binop:8}),_typeof:r("typeof",{beforeExpr:s,prefix:!0,startsExpr:!0}),_void:r("void",{beforeExpr:s,prefix:!0,startsExpr:!0}),_delete:r("delete",{beforeExpr:s,prefix:!0,startsExpr:!0})},h=2,u=4,l=8,c=513|h;function p(t,e){return h|(t?u:0)|(e?l:0)}function f(t){return null!=t&&"Property"===t.type&&"init"===t.kind&&!1===t.method}var v=/\r\n?|[\n\u2028\u2029]/,E=new RegExp(v.source,"g");function C(t){switch(t){case 10:case 13:case 8232:case 8233:return!0;default:return!1}}var A=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g;function w(t){switch(t){case 9:case 11:case 12:case 32:case 160:case 5760:case 8192:case 8193:case 8194:case 8195:case 8196:case 8197:case 8198:case 8199:case 8200:case 8201:case 8202:case 8239:case 8287:case 12288:case 65279:return!0;default:return!1}}var T=function t(e,s,i,a){d(this,t),this.token=e,this.isExpr=!!s,this.preserveSpace=!!i,this.override=a},F={braceStatement:new T("{",!1),braceExpression:new T("{",!0),templateQuasi:new T("${",!1),parenStatement:new T("(",!1),parenExpression:new T("(",!0),template:new T("`",!0,!0,(function(t){return t.readTmplToken()})),functionExpression:new T("function",!0),functionStatement:new T("function",!1)};o.parenR.updateContext=o.braceR.updateContext=function(){if(1!==this.state.context.length){var t=this.state.context.pop();t===F.braceStatement&&"function"===this.curContext().token&&(t=this.state.context.pop()),this.state.exprAllowed=!t.isExpr}else this.state.exprAllowed=!0},o.name.updateContext=function(t){var e=!1;t!==o.dot&&("of"===this.state.value&&!this.state.exprAllowed||"yield"===this.state.value&&this.scope.inGenerator)&&(e=!0),this.state.exprAllowed=e,this.state.isIterator&&(this.state.isIterator=!1)},o.braceL.updateContext=function(t){this.state.context.push(this.braceIsBlock(t)?F.braceStatement:F.braceExpression),this.state.exprAllowed=!0},o.dollarBraceL.updateContext=function(){this.state.context.push(F.templateQuasi),this.state.exprAllowed=!0},o.parenL.updateContext=function(t){var e=t===o._if||t===o._for||t===o._with||t===o._while;this.state.context.push(e?F.parenStatement:F.parenExpression),this.state.exprAllowed=!0},o.incDec.updateContext=function(){},o._function.updateContext=o._class.updateContext=function(t){!t.beforeExpr||t===o.semi||t===o._else||t===o._return&&v.test(this.input.slice(this.state.lastTokEnd,this.state.start))||(t===o.colon||t===o.braceL)&&this.curContext()===F.b_stat?this.state.context.push(F.functionStatement):this.state.context.push(F.functionExpression),this.state.exprAllowed=!1},o.backQuote.updateContext=function(){this.curContext()===F.template?this.state.context.pop():this.state.context.push(F.template),this.state.exprAllowed=!1};var N=["eval","arguments"],S=new Set(["implements","interface","let","package","private","protected","public","static","yield"]),I=new Set(N),L=function(t,e){return e&&"await"===t||"enum"===t};function B(t,e){return L(t,e)||S.has(t)}function O(t){return I.has(t)}function M(t,e){return B(t,e)||O(t)}var R=/^in(stanceof)?$/,_="ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈא-תׯ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࡠ-ࡪࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱৼਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄຆ-ຊຌ-ຣລວ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡸᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳳᳵᳶᳺᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿯ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞿꟂ-Ᶎꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭧꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",j="‌‍·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߽߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛࣓-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯৾ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ૺ-૿ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఄా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഀ-ഃ഻഼ാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭᳴᳷-᳹᷀-᷹᷻-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱ꣿ-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_",q=new RegExp("["+_+"]"),U=new RegExp("["+_+j+"]");_=j=null;var V=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,477,28,11,0,9,21,155,22,13,52,76,44,33,24,27,35,30,0,12,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,21,0,33,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,230,43,117,63,32,0,161,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,35,56,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,270,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,754,9486,286,50,2,18,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,2357,44,11,6,17,0,370,43,1301,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,15,7472,3104,541],z=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,525,10,176,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,4,9,83,11,7,0,161,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,243,14,166,9,232,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,406,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,19306,9,135,4,60,6,26,9,1014,0,2,54,8,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,262,6,10,9,419,13,1495,6,110,6,6,9,792487,239];function W(t,e){for(var s=65536,i=0,a=e.length;i<a;i+=2){if((s+=e[i])>t)return!1;if((s+=e[i+1])>=t)return!0}return!1}function K(t){return t<65?36===t:t<=90||(t<97?95===t:t<=122||(t<=65535?t>=170&&q.test(String.fromCharCode(t)):W(t,V)))}function X(t){return t<48?36===t:t<58||!(t<65)&&(t<=90||(t<97?95===t:t<=122||(t<=65535?t>=170&&U.test(String.fromCharCode(t)):W(t,V)||W(t,z))))}var J=["any","bool","boolean","empty","false","mixed","null","number","static","string","true","typeof","void","interface","extends","_"];function H(t){return"type"===t.importKind||"typeof"===t.importKind}function G(t){return(t.type===o.name||!!t.type.keyword)&&"from"!==t.value}var Q={const:"declare export var",let:"declare export var",type:"export type",interface:"export interface"};var $=/\*?\s*@((?:no)?flow)\b/,Y={quot:'"',amp:"&",apos:"'",lt:"<",gt:">",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",frasl:"⁄",euro:"€",image:"ℑ",weierp:"℘",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦"},Z=/^[\da-fA-F]+$/,tt=/^\d+$/;function et(t){return!!t&&("JSXOpeningFragment"===t.type||"JSXClosingFragment"===t.type)}function st(t){if("JSXIdentifier"===t.type)return t.name;if("JSXNamespacedName"===t.type)return t.namespace.name+":"+t.name.name;if("JSXMemberExpression"===t.type)return st(t.object)+"."+st(t.property);throw new Error("Node had unexpected type: "+t.type)}F.j_oTag=new T("<tag",!1),F.j_cTag=new T("</tag",!1),F.j_expr=new T("<tag>...</tag>",!0,!0),o.jsxName=new i("jsxName"),o.jsxText=new i("jsxText",{beforeExpr:!0}),o.jsxTagStart=new i("jsxTagStart",{startsExpr:!0}),o.jsxTagEnd=new i("jsxTagEnd"),o.jsxTagStart.updateContext=function(){this.state.context.push(F.j_expr),this.state.context.push(F.j_oTag),this.state.exprAllowed=!1},o.jsxTagEnd.updateContext=function(t){var e=this.state.context.pop();e===F.j_oTag&&t===o.slash||e===F.j_cTag?(this.state.context.pop(),this.state.exprAllowed=this.curContext()===F.j_expr):this.state.exprAllowed=!0};var it=function t(e){d(this,t),this.var=[],this.lexical=[],this.functions=[],this.flags=e},at=function(){function t(e,s){d(this,t),this.scopeStack=[],this.undefinedExports=new Map,this.raise=e,this.inModule=s}return m(t,[{key:"createScope",value:function(t){return new it(t)}},{key:"enter",value:function(t){this.scopeStack.push(this.createScope(t))}},{key:"exit",value:function(){this.scopeStack.pop()}},{key:"treatFunctionsAsVarInScope",value:function(t){return!!(t.flags&h||!this.inModule&&1&t.flags)}},{key:"declareName",value:function(t,e,s){var i=this.currentScope();if(8&e||16&e)this.checkRedeclarationInScope(i,t,e,s),16&e?i.functions.push(t):i.lexical.push(t),8&e&&this.maybeExportDefined(i,t);else if(4&e)for(var a=this.scopeStack.length-1;a>=0&&(i=this.scopeStack[a],this.checkRedeclarationInScope(i,t,e,s),i.var.push(t),this.maybeExportDefined(i,t),!(i.flags&c));--a);this.inModule&&1&i.flags&&this.undefinedExports.delete(t)}},{key:"maybeExportDefined",value:function(t,e){this.inModule&&1&t.flags&&this.undefinedExports.delete(e)}},{key:"checkRedeclarationInScope",value:function(t,e,s,i){this.isRedeclaredInScope(t,e,s)&&this.raise(i,"Identifier '".concat(e,"' has already been declared"))}},{key:"isRedeclaredInScope",value:function(t,e,s){return!!(1&s)&&(8&s?t.lexical.indexOf(e)>-1||t.functions.indexOf(e)>-1||t.var.indexOf(e)>-1:16&s?t.lexical.indexOf(e)>-1||!this.treatFunctionsAsVarInScope(t)&&t.var.indexOf(e)>-1:t.lexical.indexOf(e)>-1&&!(32&t.flags&&t.lexical[0]===e)||!this.treatFunctionsAsVarInScope(t)&&t.functions.indexOf(e)>-1)}},{key:"checkLocalExport",value:function(t){-1===this.scopeStack[0].lexical.indexOf(t.name)&&-1===this.scopeStack[0].var.indexOf(t.name)&&-1===this.scopeStack[0].functions.indexOf(t.name)&&this.undefinedExports.set(t.name,t.start)}},{key:"currentScope",value:function(){return this.scopeStack[this.scopeStack.length-1]}},{key:"currentVarScope",value:function(){for(var t=this.scopeStack.length-1;;t--){var e=this.scopeStack[t];if(e.flags&c)return e}}},{key:"currentThisScope",value:function(){for(var t=this.scopeStack.length-1;;t--){var e=this.scopeStack[t];if((e.flags&c||256&e.flags)&&!(16&e.flags))return e}}},{key:"inFunction",get:function(){return(this.currentVarScope().flags&h)>0}},{key:"inGenerator",get:function(){return(this.currentVarScope().flags&l)>0}},{key:"inAsync",get:function(){return(this.currentVarScope().flags&u)>0}},{key:"allowSuper",get:function(){return(64&this.currentThisScope().flags)>0}},{key:"allowDirectSuper",get:function(){return(128&this.currentThisScope().flags)>0}},{key:"inNonArrowFunction",get:function(){return(this.currentThisScope().flags&h)>0}},{key:"treatFunctionsAsVar",get:function(){return this.treatFunctionsAsVarInScope(this.currentScope())}}]),t}(),rt=function(t){function e(){var t,s;d(this,e);for(var i=arguments.length,a=new Array(i),r=0;r<i;r++)a[r]=arguments[r];return(s=g(this,(t=D(e)).call.apply(t,[this].concat(a)))).types=[],s.enums=[],s.constEnums=[],s.classes=[],s.exportOnlyBindings=[],s}return y(e,t),e}(it),nt=function(t){function e(){return d(this,e),g(this,D(e).apply(this,arguments))}return y(e,t),m(e,[{key:"createScope",value:function(t){return new rt(t)}},{key:"declareName",value:function(t,s,i){var a=this.currentScope();if(1024&s)return this.maybeExportDefined(a,t),void a.exportOnlyBindings.push(t);k(D(e.prototype),"declareName",this).apply(this,arguments),2&s&&(1&s||(this.checkRedeclarationInScope(a,t,s,i),this.maybeExportDefined(a,t)),a.types.push(t)),256&s&&a.enums.push(t),512&s&&a.constEnums.push(t),128&s&&a.classes.push(t)}},{key:"isRedeclaredInScope",value:function(t,s,i){if(t.enums.indexOf(s)>-1){if(256&i){var a=!!(512&i),r=t.constEnums.indexOf(s)>-1;return a!==r}return!0}return 128&i&&t.classes.indexOf(s)>-1?t.lexical.indexOf(s)>-1&&!!(1&i):!!(2&i&&t.types.indexOf(s)>-1)||k(D(e.prototype),"isRedeclaredInScope",this).apply(this,arguments)}},{key:"checkLocalExport",value:function(t){-1===this.scopeStack[0].types.indexOf(t.name)&&-1===this.scopeStack[0].exportOnlyBindings.indexOf(t.name)&&k(D(e.prototype),"checkLocalExport",this).call(this,t)}}]),e}(at);function ot(t){if(null==t)throw new Error("Unexpected ".concat(t," value."));return t}function ht(t){if(!t)throw new Error("Assert fail")}o.placeholder=new i("%%",{startsExpr:!0});function ut(t,e){return t.some((function(t){return Array.isArray(t)?t[0]===e:t===e}))}function lt(t,e,s){var i=t.find((function(t){return Array.isArray(t)?t[0]===e:t===e}));return i&&Array.isArray(i)?i[1][s]:null}var ct=["minimal","smart","fsharp"];var pt={estree:function(t){return function(t){function e(){return d(this,e),g(this,D(e).apply(this,arguments))}return y(e,t),m(e,[{key:"estreeParseRegExpLiteral",value:function(t){var e=t.pattern,s=t.flags,i=null;try{i=new RegExp(e,s)}catch(t){}var a=this.estreeParseLiteral(i);return a.regex={pattern:e,flags:s},a}},{key:"estreeParseLiteral",value:function(t){return this.parseLiteral(t,"Literal")}},{key:"directiveToStmt",value:function(t){var e=t.value,s=this.startNodeAt(t.start,t.loc.start),i=this.startNodeAt(e.start,e.loc.start);return i.value=e.value,i.raw=e.extra.raw,s.expression=this.finishNodeAt(i,"Literal",e.end,e.loc.end),s.directive=e.extra.raw.slice(1,-1),this.finishNodeAt(s,"ExpressionStatement",t.end,t.loc.end)}},{key:"initFunction",value:function(t,s){k(D(e.prototype),"initFunction",this).call(this,t,s),t.expression=!1}},{key:"checkDeclaration",value:function(t){f(t)?this.checkDeclaration(t.value):k(D(e.prototype),"checkDeclaration",this).call(this,t)}},{key:"checkGetterSetterParams",value:function(t){var e=t,s="get"===e.kind?0:1,i=e.start;e.value.params.length!==s?"get"===e.kind?this.raise(i,"getter must not have any formal parameters"):this.raise(i,"setter must have exactly one formal parameter"):"set"===e.kind&&"RestElement"===e.value.params[0].type&&this.raise(i,"setter function argument must not be a rest parameter")}},{key:"checkLVal",value:function(t){var s=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:64,a=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0,n=arguments.length>4?arguments[4]:void 0;switch(t.type){case"ObjectPattern":t.properties.forEach((function(t){s.checkLVal("Property"===t.type?t.value:t,i,a,"object destructuring pattern",n)}));break;default:k(D(e.prototype),"checkLVal",this).call(this,t,i,a,r,n)}}},{key:"checkDuplicatedProto",value:function(t,e){if(!("SpreadElement"===t.type||t.computed||t.method||t.shorthand)){var s=t.key;"__proto__"===("Identifier"===s.type?s.name:String(s.value))&&"init"===t.kind&&(e.used&&!e.start&&(e.start=s.start),e.used=!0)}}},{key:"isStrictBody",value:function(t){if("BlockStatement"===t.body.type&&t.body.body.length>0)for(var e=0,s=t.body.body;e<s.length;e++){var i=s[e];if("ExpressionStatement"!==i.type||"Literal"!==i.expression.type)break;if("use strict"===i.expression.value)return!0}return!1}},{key:"isValidDirective",value:function(t){return!("ExpressionStatement"!==t.type||"Literal"!==t.expression.type||"string"!=typeof t.expression.value||t.expression.extra&&t.expression.extra.parenthesized)}},{key:"stmtToDirective",value:function(t){var s=k(D(e.prototype),"stmtToDirective",this).call(this,t),i=t.expression.value;return s.value.value=i,s}},{key:"parseBlockBody",value:function(t,s,i,a){var r=this;k(D(e.prototype),"parseBlockBody",this).call(this,t,s,i,a);var n=t.directives.map((function(t){return r.directiveToStmt(t)}));t.body=n.concat(t.body),delete t.directives}},{key:"pushClassMethod",value:function(t,e,s,i,a,r){this.parseMethod(e,s,i,a,r,"ClassMethod",!0),e.typeParameters&&(e.value.typeParameters=e.typeParameters,delete e.typeParameters),t.body.push(e)}},{key:"parseExprAtom",value:function(t){switch(this.state.type){case o.regexp:return this.estreeParseRegExpLiteral(this.state.value);case o.num:case o.string:return this.estreeParseLiteral(this.state.value);case o._null:return this.estreeParseLiteral(null);case o._true:return this.estreeParseLiteral(!0);case o._false:return this.estreeParseLiteral(!1);default:return k(D(e.prototype),"parseExprAtom",this).call(this,t)}}},{key:"parseLiteral",value:function(t,s,i,a){var r=k(D(e.prototype),"parseLiteral",this).call(this,t,s,i,a);return r.raw=r.extra.raw,delete r.extra,r}},{key:"parseFunctionBody",value:function(t,s){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];k(D(e.prototype),"parseFunctionBody",this).call(this,t,s,i),t.expression="BlockStatement"!==t.body.type}},{key:"parseMethod",value:function(t,s,i,a,r,n){var o=arguments.length>6&&void 0!==arguments[6]&&arguments[6],h=this.startNode();return h.kind=t.kind,(h=k(D(e.prototype),"parseMethod",this).call(this,h,s,i,a,r,n,o)).type="FunctionExpression",delete h.kind,t.value=h,n="ClassMethod"===n?"MethodDefinition":n,this.finishNode(t,n)}},{key:"parseObjectMethod",value:function(t,s,i,a,r){var n=k(D(e.prototype),"parseObjectMethod",this).call(this,t,s,i,a,r);return n&&(n.type="Property","method"===n.kind&&(n.kind="init"),n.shorthand=!1),n}},{key:"parseObjectProperty",value:function(t,s,i,a,r){var n=k(D(e.prototype),"parseObjectProperty",this).call(this,t,s,i,a,r);return n&&(n.kind="init",n.type="Property"),n}},{key:"toAssignable",value:function(t,s,i){return f(t)?(this.toAssignable(t.value,s,i),t):k(D(e.prototype),"toAssignable",this).call(this,t,s,i)}},{key:"toAssignableObjectExpressionProp",value:function(t,s,i){if("get"===t.kind||"set"===t.kind)throw this.raise(t.key.start,"Object pattern can't contain getter or setter");if(t.method)throw this.raise(t.key.start,"Object pattern can't contain methods");k(D(e.prototype),"toAssignableObjectExpressionProp",this).call(this,t,s,i)}}]),e}(t)},jsx:function(t){return function(t){function e(){return d(this,e),g(this,D(e).apply(this,arguments))}return y(e,t),m(e,[{key:"jsxReadToken",value:function(){for(var t="",s=this.state.pos;;){if(this.state.pos>=this.length)throw this.raise(this.state.start,"Unterminated JSX contents");var i=this.input.charCodeAt(this.state.pos);switch(i){case 60:case 123:return this.state.pos===this.state.start?60===i&&this.state.exprAllowed?(++this.state.pos,this.finishToken(o.jsxTagStart)):k(D(e.prototype),"getTokenFromCode",this).call(this,i):(t+=this.input.slice(s,this.state.pos),this.finishToken(o.jsxText,t));case 38:t+=this.input.slice(s,this.state.pos),t+=this.jsxReadEntity(),s=this.state.pos;break;default:C(i)?(t+=this.input.slice(s,this.state.pos),t+=this.jsxReadNewLine(!0),s=this.state.pos):++this.state.pos}}}},{key:"jsxReadNewLine",value:function(t){var e,s=this.input.charCodeAt(this.state.pos);return++this.state.pos,13===s&&10===this.input.charCodeAt(this.state.pos)?(++this.state.pos,e=t?"\n":"\r\n"):e=String.fromCharCode(s),++this.state.curLine,this.state.lineStart=this.state.pos,e}},{key:"jsxReadString",value:function(t){for(var e="",s=++this.state.pos;;){if(this.state.pos>=this.length)throw this.raise(this.state.start,"Unterminated string constant");var i=this.input.charCodeAt(this.state.pos);if(i===t)break;38===i?(e+=this.input.slice(s,this.state.pos),e+=this.jsxReadEntity(),s=this.state.pos):C(i)?(e+=this.input.slice(s,this.state.pos),e+=this.jsxReadNewLine(!1),s=this.state.pos):++this.state.pos}return e+=this.input.slice(s,this.state.pos++),this.finishToken(o.string,e)}},{key:"jsxReadEntity",value:function(){for(var t,e="",s=0,i=this.input[this.state.pos],a=++this.state.pos;this.state.pos<this.length&&s++<10;){if(";"===(i=this.input[this.state.pos++])){"#"===e[0]?"x"===e[1]?(e=e.substr(2),Z.test(e)&&(t=String.fromCodePoint(parseInt(e,16)))):(e=e.substr(1),tt.test(e)&&(t=String.fromCodePoint(parseInt(e,10)))):t=Y[e];break}e+=i}return t||(this.state.pos=a,"&")}},{key:"jsxReadWord",value:function(){var t,e=this.state.pos;do{t=this.input.charCodeAt(++this.state.pos)}while(X(t)||45===t);return this.finishToken(o.jsxName,this.input.slice(e,this.state.pos))}},{key:"jsxParseIdentifier",value:function(){var t=this.startNode();return this.match(o.jsxName)?t.name=this.state.value:this.state.type.keyword?t.name=this.state.type.keyword:this.unexpected(),this.next(),this.finishNode(t,"JSXIdentifier")}},{key:"jsxParseNamespacedName",value:function(){var t=this.state.start,e=this.state.startLoc,s=this.jsxParseIdentifier();if(!this.eat(o.colon))return s;var i=this.startNodeAt(t,e);return i.namespace=s,i.name=this.jsxParseIdentifier(),this.finishNode(i,"JSXNamespacedName")}},{key:"jsxParseElementName",value:function(){var t=this.state.start,e=this.state.startLoc,s=this.jsxParseNamespacedName();if("JSXNamespacedName"===s.type)return s;for(;this.eat(o.dot);){var i=this.startNodeAt(t,e);i.object=s,i.property=this.jsxParseIdentifier(),s=this.finishNode(i,"JSXMemberExpression")}return s}},{key:"jsxParseAttributeValue",value:function(){var t;switch(this.state.type){case o.braceL:return t=this.startNode(),this.next(),"JSXEmptyExpression"===(t=this.jsxParseExpressionContainer(t)).expression.type&&this.raise(t.start,"JSX attributes must only be assigned a non-empty expression"),t;case o.jsxTagStart:case o.string:return this.parseExprAtom();default:throw this.raise(this.state.start,"JSX value should be either an expression or a quoted JSX text")}}},{key:"jsxParseEmptyExpression",value:function(){var t=this.startNodeAt(this.state.lastTokEnd,this.state.lastTokEndLoc);return this.finishNodeAt(t,"JSXEmptyExpression",this.state.start,this.state.startLoc)}},{key:"jsxParseSpreadChild",value:function(t){return this.next(),t.expression=this.parseExpression(),this.expect(o.braceR),this.finishNode(t,"JSXSpreadChild")}},{key:"jsxParseExpressionContainer",value:function(t){return this.match(o.braceR)?t.expression=this.jsxParseEmptyExpression():t.expression=this.parseExpression(),this.expect(o.braceR),this.finishNode(t,"JSXExpressionContainer")}},{key:"jsxParseAttribute",value:function(){var t=this.startNode();return this.eat(o.braceL)?(this.expect(o.ellipsis),t.argument=this.parseMaybeAssign(),this.expect(o.braceR),this.finishNode(t,"JSXSpreadAttribute")):(t.name=this.jsxParseNamespacedName(),t.value=this.eat(o.eq)?this.jsxParseAttributeValue():null,this.finishNode(t,"JSXAttribute"))}},{key:"jsxParseOpeningElementAt",value:function(t,e){var s=this.startNodeAt(t,e);return this.match(o.jsxTagEnd)?(this.expect(o.jsxTagEnd),this.finishNode(s,"JSXOpeningFragment")):(s.name=this.jsxParseElementName(),this.jsxParseOpeningElementAfterName(s))}},{key:"jsxParseOpeningElementAfterName",value:function(t){for(var e=[];!this.match(o.slash)&&!this.match(o.jsxTagEnd);)e.push(this.jsxParseAttribute());return t.attributes=e,t.selfClosing=this.eat(o.slash),this.expect(o.jsxTagEnd),this.finishNode(t,"JSXOpeningElement")}},{key:"jsxParseClosingElementAt",value:function(t,e){var s=this.startNodeAt(t,e);return this.match(o.jsxTagEnd)?(this.expect(o.jsxTagEnd),this.finishNode(s,"JSXClosingFragment")):(s.name=this.jsxParseElementName(),this.expect(o.jsxTagEnd),this.finishNode(s,"JSXClosingElement"))}},{key:"jsxParseElementAt",value:function(t,e){var s=this.startNodeAt(t,e),i=[],a=this.jsxParseOpeningElementAt(t,e),r=null;if(!a.selfClosing){t:for(;;)switch(this.state.type){case o.jsxTagStart:if(t=this.state.start,e=this.state.startLoc,this.next(),this.eat(o.slash)){r=this.jsxParseClosingElementAt(t,e);break t}i.push(this.jsxParseElementAt(t,e));break;case o.jsxText:i.push(this.parseExprAtom());break;case o.braceL:var n=this.startNode();this.next(),this.match(o.ellipsis)?i.push(this.jsxParseSpreadChild(n)):i.push(this.jsxParseExpressionContainer(n));break;default:throw this.unexpected()}et(a)&&!et(r)?this.raise(r.start,"Expected corresponding JSX closing tag for <>"):!et(a)&&et(r)?this.raise(r.start,"Expected corresponding JSX closing tag for <"+st(a.name)+">"):et(a)||et(r)||st(r.name)!==st(a.name)&&this.raise(r.start,"Expected corresponding JSX closing tag for <"+st(a.name)+">")}if(et(a)?(s.openingFragment=a,s.closingFragment=r):(s.openingElement=a,s.closingElement=r),s.children=i,this.isRelational("<"))throw this.raise(this.state.start,"Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?");return et(a)?this.finishNode(s,"JSXFragment"):this.finishNode(s,"JSXElement")}},{key:"jsxParseElement",value:function(){var t=this.state.start,e=this.state.startLoc;return this.next(),this.jsxParseElementAt(t,e)}},{key:"parseExprAtom",value:function(t){return this.match(o.jsxText)?this.parseLiteral(this.state.value,"JSXText"):this.match(o.jsxTagStart)?this.jsxParseElement():this.isRelational("<")&&33!==this.input.charCodeAt(this.state.pos)?(this.finishToken(o.jsxTagStart),this.jsxParseElement()):k(D(e.prototype),"parseExprAtom",this).call(this,t)}},{key:"getTokenFromCode",value:function(t){if(this.state.inPropertyName)return k(D(e.prototype),"getTokenFromCode",this).call(this,t);var s=this.curContext();if(s===F.j_expr)return this.jsxReadToken();if(s===F.j_oTag||s===F.j_cTag){if(K(t))return this.jsxReadWord();if(62===t)return++this.state.pos,this.finishToken(o.jsxTagEnd);if((34===t||39===t)&&s===F.j_oTag)return this.jsxReadString(t)}return 60===t&&this.state.exprAllowed&&33!==this.input.charCodeAt(this.state.pos+1)?(++this.state.pos,this.finishToken(o.jsxTagStart)):k(D(e.prototype),"getTokenFromCode",this).call(this,t)}},{key:"updateContext",value:function(t){if(this.match(o.braceL)){var s=this.curContext();s===F.j_oTag?this.state.context.push(F.braceExpression):s===F.j_expr?this.state.context.push(F.templateQuasi):k(D(e.prototype),"updateContext",this).call(this,t),this.state.exprAllowed=!0}else{if(!this.match(o.slash)||t!==o.jsxTagStart)return k(D(e.prototype),"updateContext",this).call(this,t);this.state.context.length-=2,this.state.context.push(F.j_cTag),this.state.exprAllowed=!1}}}]),e}(t)},flow:function(t){return function(t){function e(t,s){var i;return d(this,e),(i=g(this,D(e).call(this,t,s))).flowPragma=void 0,i}return y(e,t),m(e,[{key:"shouldParseTypes",value:function(){return this.getPluginOption("flow","all")||"flow"===this.flowPragma}},{key:"shouldParseEnums",value:function(){return!!this.getPluginOption("flow","enums")}},{key:"finishToken",value:function(t,s){return t!==o.string&&t!==o.semi&&t!==o.interpreterDirective&&void 0===this.flowPragma&&(this.flowPragma=null),k(D(e.prototype),"finishToken",this).call(this,t,s)}},{key:"addComment",value:function(t){if(void 0===this.flowPragma){var s=$.exec(t.value);if(s)if("flow"===s[1])this.flowPragma="flow";else{if("noflow"!==s[1])throw new Error("Unexpected flow pragma");this.flowPragma="noflow"}else;}return k(D(e.prototype),"addComment",this).call(this,t)}},{key:"flowParseTypeInitialiser",value:function(t){var e=this.state.inType;this.state.inType=!0,this.expect(t||o.colon);var s=this.flowParseType();return this.state.inType=e,s}},{key:"flowParsePredicate",value:function(){var t=this.startNode(),e=this.state.startLoc,s=this.state.start;this.expect(o.modulo);var i=this.state.startLoc;return this.expectContextual("checks"),e.line===i.line&&e.column===i.column-1||this.raise(s,"Spaces between ´%´ and ´checks´ are not allowed here."),this.eat(o.parenL)?(t.value=this.parseExpression(),this.expect(o.parenR),this.finishNode(t,"DeclaredPredicate")):this.finishNode(t,"InferredPredicate")}},{key:"flowParseTypeAndPredicateInitialiser",value:function(){var t=this.state.inType;this.state.inType=!0,this.expect(o.colon);var e=null,s=null;return this.match(o.modulo)?(this.state.inType=t,s=this.flowParsePredicate()):(e=this.flowParseType(),this.state.inType=t,this.match(o.modulo)&&(s=this.flowParsePredicate())),[e,s]}},{key:"flowParseDeclareClass",value:function(t){return this.next(),this.flowParseInterfaceish(t,!0),this.finishNode(t,"DeclareClass")}},{key:"flowParseDeclareFunction",value:function(t){this.next();var e=t.id=this.parseIdentifier(),s=this.startNode(),i=this.startNode();this.isRelational("<")?s.typeParameters=this.flowParseTypeParameterDeclaration():s.typeParameters=null,this.expect(o.parenL);var a=this.flowParseFunctionTypeParams();s.params=a.params,s.rest=a.rest,this.expect(o.parenR);var r=P(this.flowParseTypeAndPredicateInitialiser(),2);return s.returnType=r[0],t.predicate=r[1],i.typeAnnotation=this.finishNode(s,"FunctionTypeAnnotation"),e.typeAnnotation=this.finishNode(i,"TypeAnnotation"),this.resetEndLocation(e),this.semicolon(),this.finishNode(t,"DeclareFunction")}},{key:"flowParseDeclare",value:function(t,e){if(this.match(o._class))return this.flowParseDeclareClass(t);if(this.match(o._function))return this.flowParseDeclareFunction(t);if(this.match(o._var))return this.flowParseDeclareVariable(t);if(this.eatContextual("module"))return this.match(o.dot)?this.flowParseDeclareModuleExports(t):(e&&this.raise(this.state.lastTokStart,"`declare module` cannot be used inside another `declare module`"),this.flowParseDeclareModule(t));if(this.isContextual("type"))return this.flowParseDeclareTypeAlias(t);if(this.isContextual("opaque"))return this.flowParseDeclareOpaqueType(t);if(this.isContextual("interface"))return this.flowParseDeclareInterface(t);if(this.match(o._export))return this.flowParseDeclareExportDeclaration(t,e);throw this.unexpected()}},{key:"flowParseDeclareVariable",value:function(t){return this.next(),t.id=this.flowParseTypeAnnotatableIdentifier(!0),this.scope.declareName(t.id.name,5,t.id.start),this.semicolon(),this.finishNode(t,"DeclareVariable")}},{key:"flowParseDeclareModule",value:function(t){var e=this;this.scope.enter(0),this.match(o.string)?t.id=this.parseExprAtom():t.id=this.parseIdentifier();var s=t.body=this.startNode(),i=s.body=[];for(this.expect(o.braceL);!this.match(o.braceR);){var a=this.startNode();this.match(o._import)?(this.next(),this.isContextual("type")||this.match(o._typeof)||this.raise(this.state.lastTokStart,"Imports within a `declare module` body must always be `import type` or `import typeof`"),this.parseImport(a)):(this.expectContextual("declare","Only declares and type imports are allowed inside declare module"),a=this.flowParseDeclare(a,!0)),i.push(a)}this.scope.exit(),this.expect(o.braceR),this.finishNode(s,"BlockStatement");var r=null,n=!1,h="Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module";return i.forEach((function(t){!function(t){return"DeclareExportAllDeclaration"===t.type||"DeclareExportDeclaration"===t.type&&(!t.declaration||"TypeAlias"!==t.declaration.type&&"InterfaceDeclaration"!==t.declaration.type)}(t)?"DeclareModuleExports"===t.type&&(n&&e.raise(t.start,"Duplicate `declare module.exports` statement"),"ES"===r&&e.raise(t.start,h),r="CommonJS",n=!0):("CommonJS"===r&&e.raise(t.start,h),r="ES")})),t.kind=r||"CommonJS",this.finishNode(t,"DeclareModule")}},{key:"flowParseDeclareExportDeclaration",value:function(t,e){if(this.expect(o._export),this.eat(o._default))return this.match(o._function)||this.match(o._class)?t.declaration=this.flowParseDeclare(this.startNode()):(t.declaration=this.flowParseType(),this.semicolon()),t.default=!0,this.finishNode(t,"DeclareExportDeclaration");if(this.match(o._const)||this.isLet()||(this.isContextual("type")||this.isContextual("interface"))&&!e){var s=this.state.value,i=Q[s];this.unexpected(this.state.start,"`declare export ".concat(s,"` is not supported. Use `").concat(i,"` instead"))}if(this.match(o._var)||this.match(o._function)||this.match(o._class)||this.isContextual("opaque"))return t.declaration=this.flowParseDeclare(this.startNode()),t.default=!1,this.finishNode(t,"DeclareExportDeclaration");if(this.match(o.star)||this.match(o.braceL)||this.isContextual("interface")||this.isContextual("type")||this.isContextual("opaque"))return"ExportNamedDeclaration"===(t=this.parseExport(t)).type&&(t.type="ExportDeclaration",t.default=!1,delete t.exportKind),t.type="Declare"+t.type,t;throw this.unexpected()}},{key:"flowParseDeclareModuleExports",value:function(t){return this.next(),this.expectContextual("exports"),t.typeAnnotation=this.flowParseTypeAnnotation(),this.semicolon(),this.finishNode(t,"DeclareModuleExports")}},{key:"flowParseDeclareTypeAlias",value:function(t){return this.next(),this.flowParseTypeAlias(t),t.type="DeclareTypeAlias",t}},{key:"flowParseDeclareOpaqueType",value:function(t){return this.next(),this.flowParseOpaqueType(t,!0),t.type="DeclareOpaqueType",t}},{key:"flowParseDeclareInterface",value:function(t){return this.next(),this.flowParseInterfaceish(t),this.finishNode(t,"DeclareInterface")}},{key:"flowParseInterfaceish",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(t.id=this.flowParseRestrictedIdentifier(!e),this.scope.declareName(t.id.name,e?17:9,t.id.start),this.isRelational("<")?t.typeParameters=this.flowParseTypeParameterDeclaration():t.typeParameters=null,t.extends=[],t.implements=[],t.mixins=[],this.eat(o._extends))do{t.extends.push(this.flowParseInterfaceExtends())}while(!e&&this.eat(o.comma));if(this.isContextual("mixins")){this.next();do{t.mixins.push(this.flowParseInterfaceExtends())}while(this.eat(o.comma))}if(this.isContextual("implements")){this.next();do{t.implements.push(this.flowParseInterfaceExtends())}while(this.eat(o.comma))}t.body=this.flowParseObjectType({allowStatic:e,allowExact:!1,allowSpread:!1,allowProto:e,allowInexact:!1})}},{key:"flowParseInterfaceExtends",value:function(){var t=this.startNode();return t.id=this.flowParseQualifiedTypeIdentifier(),this.isRelational("<")?t.typeParameters=this.flowParseTypeParameterInstantiation():t.typeParameters=null,this.finishNode(t,"InterfaceExtends")}},{key:"flowParseInterface",value:function(t){return this.flowParseInterfaceish(t),this.finishNode(t,"InterfaceDeclaration")}},{key:"checkNotUnderscore",value:function(t){"_"===t&&this.raise(this.state.start,"`_` is only allowed as a type argument to call or new")}},{key:"checkReservedType",value:function(t,e){J.indexOf(t)>-1&&this.raise(e,"Cannot overwrite reserved type ".concat(t))}},{key:"flowParseRestrictedIdentifier",value:function(t){return this.checkReservedType(this.state.value,this.state.start),this.parseIdentifier(t)}},{key:"flowParseTypeAlias",value:function(t){return t.id=this.flowParseRestrictedIdentifier(),this.scope.declareName(t.id.name,9,t.id.start),this.isRelational("<")?t.typeParameters=this.flowParseTypeParameterDeclaration():t.typeParameters=null,t.right=this.flowParseTypeInitialiser(o.eq),this.semicolon(),this.finishNode(t,"TypeAlias")}},{key:"flowParseOpaqueType",value:function(t,e){return this.expectContextual("type"),t.id=this.flowParseRestrictedIdentifier(!0),this.scope.declareName(t.id.name,9,t.id.start),this.isRelational("<")?t.typeParameters=this.flowParseTypeParameterDeclaration():t.typeParameters=null,t.supertype=null,this.match(o.colon)&&(t.supertype=this.flowParseTypeInitialiser(o.colon)),t.impltype=null,e||(t.impltype=this.flowParseTypeInitialiser(o.eq)),this.semicolon(),this.finishNode(t,"OpaqueType")}},{key:"flowParseTypeParameter",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=this.state.start,s=this.startNode(),i=this.flowParseVariance(),a=this.flowParseTypeAnnotatableIdentifier();return s.name=a.name,s.variance=i,s.bound=a.typeAnnotation,this.match(o.eq)?(this.eat(o.eq),s.default=this.flowParseType()):t&&this.raise(e,"Type parameter declaration needs a default, since a preceding type parameter declaration has a default."),this.finishNode(s,"TypeParameter")}},{key:"flowParseTypeParameterDeclaration",value:function(){var t=this.state.inType,e=this.startNode();e.params=[],this.state.inType=!0,this.isRelational("<")||this.match(o.jsxTagStart)?this.next():this.unexpected();var s=!1;do{var i=this.flowParseTypeParameter(s);e.params.push(i),i.default&&(s=!0),this.isRelational(">")||this.expect(o.comma)}while(!this.isRelational(">"));return this.expectRelational(">"),this.state.inType=t,this.finishNode(e,"TypeParameterDeclaration")}},{key:"flowParseTypeParameterInstantiation",value:function(){var t=this.startNode(),e=this.state.inType;t.params=[],this.state.inType=!0,this.expectRelational("<");var s=this.state.noAnonFunctionType;for(this.state.noAnonFunctionType=!1;!this.isRelational(">");)t.params.push(this.flowParseType()),this.isRelational(">")||this.expect(o.comma);return this.state.noAnonFunctionType=s,this.expectRelational(">"),this.state.inType=e,this.finishNode(t,"TypeParameterInstantiation")}},{key:"flowParseTypeParameterInstantiationCallOrNew",value:function(){var t=this.startNode(),e=this.state.inType;for(t.params=[],this.state.inType=!0,this.expectRelational("<");!this.isRelational(">");)t.params.push(this.flowParseTypeOrImplicitInstantiation()),this.isRelational(">")||this.expect(o.comma);return this.expectRelational(">"),this.state.inType=e,this.finishNode(t,"TypeParameterInstantiation")}},{key:"flowParseInterfaceType",value:function(){var t=this.startNode();if(this.expectContextual("interface"),t.extends=[],this.eat(o._extends))do{t.extends.push(this.flowParseInterfaceExtends())}while(this.eat(o.comma));return t.body=this.flowParseObjectType({allowStatic:!1,allowExact:!1,allowSpread:!1,allowProto:!1,allowInexact:!1}),this.finishNode(t,"InterfaceTypeAnnotation")}},{key:"flowParseObjectPropertyKey",value:function(){return this.match(o.num)||this.match(o.string)?this.parseExprAtom():this.parseIdentifier(!0)}},{key:"flowParseObjectTypeIndexer",value:function(t,e,s){return t.static=e,this.lookahead().type===o.colon?(t.id=this.flowParseObjectPropertyKey(),t.key=this.flowParseTypeInitialiser()):(t.id=null,t.key=this.flowParseType()),this.expect(o.bracketR),t.value=this.flowParseTypeInitialiser(),t.variance=s,this.finishNode(t,"ObjectTypeIndexer")}},{key:"flowParseObjectTypeInternalSlot",value:function(t,e){return t.static=e,t.id=this.flowParseObjectPropertyKey(),this.expect(o.bracketR),this.expect(o.bracketR),this.isRelational("<")||this.match(o.parenL)?(t.method=!0,t.optional=!1,t.value=this.flowParseObjectTypeMethodish(this.startNodeAt(t.start,t.loc.start))):(t.method=!1,this.eat(o.question)&&(t.optional=!0),t.value=this.flowParseTypeInitialiser()),this.finishNode(t,"ObjectTypeInternalSlot")}},{key:"flowParseObjectTypeMethodish",value:function(t){for(t.params=[],t.rest=null,t.typeParameters=null,this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),this.expect(o.parenL);!this.match(o.parenR)&&!this.match(o.ellipsis);)t.params.push(this.flowParseFunctionTypeParam()),this.match(o.parenR)||this.expect(o.comma);return this.eat(o.ellipsis)&&(t.rest=this.flowParseFunctionTypeParam()),this.expect(o.parenR),t.returnType=this.flowParseTypeInitialiser(),this.finishNode(t,"FunctionTypeAnnotation")}},{key:"flowParseObjectTypeCallProperty",value:function(t,e){var s=this.startNode();return t.static=e,t.value=this.flowParseObjectTypeMethodish(s),this.finishNode(t,"ObjectTypeCallProperty")}},{key:"flowParseObjectType",value:function(t){var e=t.allowStatic,s=t.allowExact,i=t.allowSpread,a=t.allowProto,r=t.allowInexact,n=this.state.inType;this.state.inType=!0;var h,u,l=this.startNode();l.callProperties=[],l.properties=[],l.indexers=[],l.internalSlots=[];var c=!1;for(s&&this.match(o.braceBarL)?(this.expect(o.braceBarL),h=o.braceBarR,u=!0):(this.expect(o.braceL),h=o.braceR,u=!1),l.exact=u;!this.match(h);){var p=!1,d=null,f=null,m=this.startNode();if(a&&this.isContextual("proto")){var y=this.lookahead();y.type!==o.colon&&y.type!==o.question&&(this.next(),d=this.state.start,e=!1)}if(e&&this.isContextual("static")){var D=this.lookahead();D.type!==o.colon&&D.type!==o.question&&(this.next(),p=!0)}var v=this.flowParseVariance();if(this.eat(o.bracketL))null!=d&&this.unexpected(d),this.eat(o.bracketL)?(v&&this.unexpected(v.start),l.internalSlots.push(this.flowParseObjectTypeInternalSlot(m,p))):l.indexers.push(this.flowParseObjectTypeIndexer(m,p,v));else if(this.match(o.parenL)||this.isRelational("<"))null!=d&&this.unexpected(d),v&&this.unexpected(v.start),l.callProperties.push(this.flowParseObjectTypeCallProperty(m,p));else{var x,g="init";if(this.isContextual("get")||this.isContextual("set")){var k=this.lookahead();k.type!==o.name&&k.type!==o.string&&k.type!==o.num||(g=this.state.value,this.next())}var P=this.flowParseObjectTypeProperty(m,p,d,v,g,i,null!==(x=r)&&void 0!==x?x:!u);null===P?(c=!0,f=this.state.lastTokStart):l.properties.push(P)}this.flowObjectTypeSemicolon(),!f||this.match(o.braceR)||this.match(o.braceBarR)||this.raise(f,"Explicit inexact syntax must appear at the end of an inexact object")}this.expect(h),i&&(l.inexact=c);var b=this.finishNode(l,"ObjectTypeAnnotation");return this.state.inType=n,b}},{key:"flowParseObjectTypeProperty",value:function(t,e,s,i,a,r,n){if(this.eat(o.ellipsis))return this.match(o.comma)||this.match(o.semi)||this.match(o.braceR)||this.match(o.braceBarR)?(r?n||this.raise(this.state.lastTokStart,"Explicit inexact syntax cannot appear inside an explicit exact object type"):this.raise(this.state.lastTokStart,"Explicit inexact syntax cannot appear in class or interface definitions"),i&&this.raise(i.start,"Explicit inexact syntax cannot have variance"),null):(r||this.raise(this.state.lastTokStart,"Spread operator cannot appear in class or interface definitions"),null!=s&&this.unexpected(s),i&&this.raise(i.start,"Spread properties cannot have variance"),t.argument=this.flowParseType(),this.finishNode(t,"ObjectTypeSpreadProperty"));t.key=this.flowParseObjectPropertyKey(),t.static=e,t.proto=null!=s,t.kind=a;var h=!1;return this.isRelational("<")||this.match(o.parenL)?(t.method=!0,null!=s&&this.unexpected(s),i&&this.unexpected(i.start),t.value=this.flowParseObjectTypeMethodish(this.startNodeAt(t.start,t.loc.start)),"get"!==a&&"set"!==a||this.flowCheckGetterSetterParams(t)):("init"!==a&&this.unexpected(),t.method=!1,this.eat(o.question)&&(h=!0),t.value=this.flowParseTypeInitialiser(),t.variance=i),t.optional=h,this.finishNode(t,"ObjectTypeProperty")}},{key:"flowCheckGetterSetterParams",value:function(t){var e="get"===t.kind?0:1,s=t.start;t.value.params.length+(t.value.rest?1:0)!==e&&("get"===t.kind?this.raise(s,"getter must not have any formal parameters"):this.raise(s,"setter must have exactly one formal parameter")),"set"===t.kind&&t.value.rest&&this.raise(s,"setter function argument must not be a rest parameter")}},{key:"flowObjectTypeSemicolon",value:function(){this.eat(o.semi)||this.eat(o.comma)||this.match(o.braceR)||this.match(o.braceBarR)||this.unexpected()}},{key:"flowParseQualifiedTypeIdentifier",value:function(t,e,s){t=t||this.state.start,e=e||this.state.startLoc;for(var i=s||this.parseIdentifier();this.eat(o.dot);){var a=this.startNodeAt(t,e);a.qualification=i,a.id=this.parseIdentifier(),i=this.finishNode(a,"QualifiedTypeIdentifier")}return i}},{key:"flowParseGenericType",value:function(t,e,s){var i=this.startNodeAt(t,e);return i.typeParameters=null,i.id=this.flowParseQualifiedTypeIdentifier(t,e,s),this.isRelational("<")&&(i.typeParameters=this.flowParseTypeParameterInstantiation()),this.finishNode(i,"GenericTypeAnnotation")}},{key:"flowParseTypeofType",value:function(){var t=this.startNode();return this.expect(o._typeof),t.argument=this.flowParsePrimaryType(),this.finishNode(t,"TypeofTypeAnnotation")}},{key:"flowParseTupleType",value:function(){var t=this.startNode();for(t.types=[],this.expect(o.bracketL);this.state.pos<this.length&&!this.match(o.bracketR)&&(t.types.push(this.flowParseType()),!this.match(o.bracketR));)this.expect(o.comma);return this.expect(o.bracketR),this.finishNode(t,"TupleTypeAnnotation")}},{key:"flowParseFunctionTypeParam",value:function(){var t=null,e=!1,s=null,i=this.startNode(),a=this.lookahead();return a.type===o.colon||a.type===o.question?(t=this.parseIdentifier(),this.eat(o.question)&&(e=!0),s=this.flowParseTypeInitialiser()):s=this.flowParseType(),i.name=t,i.optional=e,i.typeAnnotation=s,this.finishNode(i,"FunctionTypeParam")}},{key:"reinterpretTypeAsFunctionTypeParam",value:function(t){var e=this.startNodeAt(t.start,t.loc.start);return e.name=null,e.optional=!1,e.typeAnnotation=t,this.finishNode(e,"FunctionTypeParam")}},{key:"flowParseFunctionTypeParams",value:function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=null;!this.match(o.parenR)&&!this.match(o.ellipsis);)t.push(this.flowParseFunctionTypeParam()),this.match(o.parenR)||this.expect(o.comma);return this.eat(o.ellipsis)&&(e=this.flowParseFunctionTypeParam()),{params:t,rest:e}}},{key:"flowIdentToTypeAnnotation",value:function(t,e,s,i){switch(i.name){case"any":return this.finishNode(s,"AnyTypeAnnotation");case"bool":case"boolean":return this.finishNode(s,"BooleanTypeAnnotation");case"mixed":return this.finishNode(s,"MixedTypeAnnotation");case"empty":return this.finishNode(s,"EmptyTypeAnnotation");case"number":return this.finishNode(s,"NumberTypeAnnotation");case"string":return this.finishNode(s,"StringTypeAnnotation");default:return this.checkNotUnderscore(i.name),this.flowParseGenericType(t,e,i)}}},{key:"flowParsePrimaryType",value:function(){var t,s,i=this.state.start,a=this.state.startLoc,r=this.startNode(),n=!1,h=this.state.noAnonFunctionType;switch(this.state.type){case o.name:return this.isContextual("interface")?this.flowParseInterfaceType():this.flowIdentToTypeAnnotation(i,a,r,this.parseIdentifier());case o.braceL:return this.flowParseObjectType({allowStatic:!1,allowExact:!1,allowSpread:!0,allowProto:!1,allowInexact:!0});case o.braceBarL:return this.flowParseObjectType({allowStatic:!1,allowExact:!0,allowSpread:!0,allowProto:!1,allowInexact:!1});case o.bracketL:return this.state.noAnonFunctionType=!1,s=this.flowParseTupleType(),this.state.noAnonFunctionType=h,s;case o.relational:if("<"===this.state.value)return r.typeParameters=this.flowParseTypeParameterDeclaration(),this.expect(o.parenL),t=this.flowParseFunctionTypeParams(),r.params=t.params,r.rest=t.rest,this.expect(o.parenR),this.expect(o.arrow),r.returnType=this.flowParseType(),this.finishNode(r,"FunctionTypeAnnotation");break;case o.parenL:if(this.next(),!this.match(o.parenR)&&!this.match(o.ellipsis))if(this.match(o.name)){var u=this.lookahead().type;n=u!==o.question&&u!==o.colon}else n=!0;if(n){if(this.state.noAnonFunctionType=!1,s=this.flowParseType(),this.state.noAnonFunctionType=h,this.state.noAnonFunctionType||!(this.match(o.comma)||this.match(o.parenR)&&this.lookahead().type===o.arrow))return this.expect(o.parenR),s;this.eat(o.comma)}return t=s?this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(s)]):this.flowParseFunctionTypeParams(),r.params=t.params,r.rest=t.rest,this.expect(o.parenR),this.expect(o.arrow),r.returnType=this.flowParseType(),r.typeParameters=null,this.finishNode(r,"FunctionTypeAnnotation");case o.string:return this.parseLiteral(this.state.value,"StringLiteralTypeAnnotation");case o._true:case o._false:return r.value=this.match(o._true),this.next(),this.finishNode(r,"BooleanLiteralTypeAnnotation");case o.plusMin:if("-"===this.state.value){if(this.next(),this.match(o.num))return this.parseLiteral(-this.state.value,"NumberLiteralTypeAnnotation",r.start,r.loc.start);if(this.match(o.bigint))return this.parseLiteral(-this.state.value,"BigIntLiteralTypeAnnotation",r.start,r.loc.start);throw this.raise(this.state.start,'Unexpected token, expected "number" or "bigint"')}this.unexpected();case o.num:return this.parseLiteral(this.state.value,"NumberLiteralTypeAnnotation");case o.bigint:return this.parseLiteral(this.state.value,"BigIntLiteralTypeAnnotation");case o._void:return this.next(),this.finishNode(r,"VoidTypeAnnotation");case o._null:return this.next(),this.finishNode(r,"NullLiteralTypeAnnotation");case o._this:return this.next(),this.finishNode(r,"ThisTypeAnnotation");case o.star:return this.next(),this.finishNode(r,"ExistsTypeAnnotation");default:if("typeof"===this.state.type.keyword)return this.flowParseTypeofType();if(this.state.type.keyword){var l=this.state.type.label;return this.next(),k(D(e.prototype),"createIdentifier",this).call(this,r,l)}}throw this.unexpected()}},{key:"flowParsePostfixType",value:function(){for(var t=this.state.start,e=this.state.startLoc,s=this.flowParsePrimaryType();this.match(o.bracketL)&&!this.canInsertSemicolon();){var i=this.startNodeAt(t,e);i.elementType=s,this.expect(o.bracketL),this.expect(o.bracketR),s=this.finishNode(i,"ArrayTypeAnnotation")}return s}},{key:"flowParsePrefixType",value:function(){var t=this.startNode();return this.eat(o.question)?(t.typeAnnotation=this.flowParsePrefixType(),this.finishNode(t,"NullableTypeAnnotation")):this.flowParsePostfixType()}},{key:"flowParseAnonFunctionWithoutParens",value:function(){var t=this.flowParsePrefixType();if(!this.state.noAnonFunctionType&&this.eat(o.arrow)){var e=this.startNodeAt(t.start,t.loc.start);return e.params=[this.reinterpretTypeAsFunctionTypeParam(t)],e.rest=null,e.returnType=this.flowParseType(),e.typeParameters=null,this.finishNode(e,"FunctionTypeAnnotation")}return t}},{key:"flowParseIntersectionType",value:function(){var t=this.startNode();this.eat(o.bitwiseAND);var e=this.flowParseAnonFunctionWithoutParens();for(t.types=[e];this.eat(o.bitwiseAND);)t.types.push(this.flowParseAnonFunctionWithoutParens());return 1===t.types.length?e:this.finishNode(t,"IntersectionTypeAnnotation")}},{key:"flowParseUnionType",value:function(){var t=this.startNode();this.eat(o.bitwiseOR);var e=this.flowParseIntersectionType();for(t.types=[e];this.eat(o.bitwiseOR);)t.types.push(this.flowParseIntersectionType());return 1===t.types.length?e:this.finishNode(t,"UnionTypeAnnotation")}},{key:"flowParseType",value:function(){var t=this.state.inType;this.state.inType=!0;var e=this.flowParseUnionType();return this.state.inType=t,this.state.exprAllowed=this.state.exprAllowed||this.state.noAnonFunctionType,e}},{key:"flowParseTypeOrImplicitInstantiation",value:function(){if(this.state.type===o.name&&"_"===this.state.value){var t=this.state.start,e=this.state.startLoc,s=this.parseIdentifier();return this.flowParseGenericType(t,e,s)}return this.flowParseType()}},{key:"flowParseTypeAnnotation",value:function(){var t=this.startNode();return t.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(t,"TypeAnnotation")}},{key:"flowParseTypeAnnotatableIdentifier",value:function(t){var e=t?this.parseIdentifier():this.flowParseRestrictedIdentifier();return this.match(o.colon)&&(e.typeAnnotation=this.flowParseTypeAnnotation(),this.resetEndLocation(e)),e}},{key:"typeCastToParameter",value:function(t){return t.expression.typeAnnotation=t.typeAnnotation,this.resetEndLocation(t.expression,t.typeAnnotation.end,t.typeAnnotation.loc.end),t.expression}},{key:"flowParseVariance",value:function(){var t=null;return this.match(o.plusMin)&&(t=this.startNode(),"+"===this.state.value?t.kind="plus":t.kind="minus",this.next(),this.finishNode(t,"Variance")),t}},{key:"parseFunctionBody",value:function(t,s){var i=this,a=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return s?this.forwardNoArrowParamsConversionAt(t,(function(){return k(D(e.prototype),"parseFunctionBody",i).call(i,t,!0,a)})):k(D(e.prototype),"parseFunctionBody",this).call(this,t,!1,a)}},{key:"parseFunctionBodyAndFinish",value:function(t,s){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(this.match(o.colon)){var a=this.startNode(),r=this.flowParseTypeAndPredicateInitialiser(),n=P(r,2);a.typeAnnotation=n[0],t.predicate=n[1],t.returnType=a.typeAnnotation?this.finishNode(a,"TypeAnnotation"):null}k(D(e.prototype),"parseFunctionBodyAndFinish",this).call(this,t,s,i)}},{key:"parseStatement",value:function(t,s){if(this.state.strict&&this.match(o.name)&&"interface"===this.state.value){var i=this.startNode();return this.next(),this.flowParseInterface(i)}if(this.shouldParseEnums()&&this.isContextual("enum")){var a=this.startNode();return this.next(),this.flowParseEnumDeclaration(a)}var r=k(D(e.prototype),"parseStatement",this).call(this,t,s);return void 0!==this.flowPragma||this.isValidDirective(r)||(this.flowPragma=null),r}},{key:"parseExpressionStatement",value:function(t,s){if("Identifier"===s.type)if("declare"===s.name){if(this.match(o._class)||this.match(o.name)||this.match(o._function)||this.match(o._var)||this.match(o._export))return this.flowParseDeclare(t)}else if(this.match(o.name)){if("interface"===s.name)return this.flowParseInterface(t);if("type"===s.name)return this.flowParseTypeAlias(t);if("opaque"===s.name)return this.flowParseOpaqueType(t,!1)}return k(D(e.prototype),"parseExpressionStatement",this).call(this,t,s)}},{key:"shouldParseExportDeclaration",value:function(){return this.isContextual("type")||this.isContextual("interface")||this.isContextual("opaque")||this.shouldParseEnums()&&this.isContextual("enum")||k(D(e.prototype),"shouldParseExportDeclaration",this).call(this)}},{key:"isExportDefaultSpecifier",value:function(){return(!this.match(o.name)||!("type"===this.state.value||"interface"===this.state.value||"opaque"===this.state.value||this.shouldParseEnums()&&"enum"===this.state.value))&&k(D(e.prototype),"isExportDefaultSpecifier",this).call(this)}},{key:"parseExportDefaultExpression",value:function(){if(this.shouldParseEnums()&&this.isContextual("enum")){var t=this.startNode();return this.next(),this.flowParseEnumDeclaration(t)}return k(D(e.prototype),"parseExportDefaultExpression",this).call(this)}},{key:"parseConditional",value:function(t,s,i,a,r){var n=this;if(!this.match(o.question))return t;if(r){var h=this.tryParse((function(){return k(D(e.prototype),"parseConditional",n).call(n,t,s,i,a)}));return h.node?(h.error&&(this.state=h.failState),h.node):(r.start=h.error.pos||this.state.start,t)}this.expect(o.question);var u=this.state.clone(),l=this.state.noArrowAt,c=this.startNodeAt(i,a),p=this.tryParseConditionalConsequent(),d=p.consequent,f=p.failed,m=P(this.getArrowLikeExpressions(d),2),y=m[0],v=m[1];if(f||v.length>0){var x=b(l);if(v.length>0){this.state=u,this.state.noArrowAt=x;for(var g=0;g<v.length;g++)x.push(v[g].start);var E=this.tryParseConditionalConsequent();d=E.consequent,f=E.failed;var C=P(this.getArrowLikeExpressions(d),2);y=C[0],v=C[1]}if(f&&y.length>1&&this.raise(u.start,"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate."),f&&1===y.length){this.state=u,this.state.noArrowAt=x.concat(y[0].start);var A=this.tryParseConditionalConsequent();d=A.consequent,f=A.failed}}return this.getArrowLikeExpressions(d,!0),this.state.noArrowAt=l,this.expect(o.colon),c.test=t,c.consequent=d,c.alternate=this.forwardNoArrowParamsConversionAt(c,(function(){return n.parseMaybeAssign(s,void 0,void 0,void 0)})),this.finishNode(c,"ConditionalExpression")}},{key:"tryParseConditionalConsequent",value:function(){this.state.noArrowParamsConversionAt.push(this.state.start);var t=this.parseMaybeAssign(),e=!this.match(o.colon);return this.state.noArrowParamsConversionAt.pop(),{consequent:t,failed:e}}},{key:"getArrowLikeExpressions",value:function(t,e){for(var s=this,i=[t],a=[];0!==i.length;){var r=i.pop();"ArrowFunctionExpression"===r.type?(r.typeParameters||!r.returnType?this.finishArrowValidation(r):a.push(r),i.push(r.body)):"ConditionalExpression"===r.type&&(i.push(r.consequent),i.push(r.alternate))}return e?(a.forEach((function(t){return s.finishArrowValidation(t)})),[a,[]]):function(t,e){for(var s=[],i=[],a=0;a<t.length;a++)(e(t[a],a,t)?s:i).push(t[a]);return[s,i]}(a,(function(t){return t.params.every((function(t){return s.isAssignable(t,!0)}))}))}},{key:"finishArrowValidation",value:function(t){var s;this.toAssignableList(t.params,!0,"arrow function parameters",null===(s=t.extra)||void 0===s?void 0:s.trailingComma),this.scope.enter(16|p(!1,!1)),k(D(e.prototype),"checkParams",this).call(this,t,!1,!0),this.scope.exit()}},{key:"forwardNoArrowParamsConversionAt",value:function(t,e){var s;return-1!==this.state.noArrowParamsConversionAt.indexOf(t.start)?(this.state.noArrowParamsConversionAt.push(this.state.start),s=e(),this.state.noArrowParamsConversionAt.pop()):s=e(),s}},{key:"parseParenItem",value:function(t,s,i){if(t=k(D(e.prototype),"parseParenItem",this).call(this,t,s,i),this.eat(o.question)&&(t.optional=!0,this.resetEndLocation(t)),this.match(o.colon)){var a=this.startNodeAt(s,i);return a.expression=t,a.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(a,"TypeCastExpression")}return t}},{key:"assertModuleNodeAllowed",value:function(t){"ImportDeclaration"===t.type&&("type"===t.importKind||"typeof"===t.importKind)||"ExportNamedDeclaration"===t.type&&"type"===t.exportKind||"ExportAllDeclaration"===t.type&&"type"===t.exportKind||k(D(e.prototype),"assertModuleNodeAllowed",this).call(this,t)}},{key:"parseExport",value:function(t){var s=k(D(e.prototype),"parseExport",this).call(this,t);return"ExportNamedDeclaration"!==s.type&&"ExportAllDeclaration"!==s.type||(s.exportKind=s.exportKind||"value"),s}},{key:"parseExportDeclaration",value:function(t){if(this.isContextual("type")){t.exportKind="type";var s=this.startNode();return this.next(),this.match(o.braceL)?(t.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(t),null):this.flowParseTypeAlias(s)}if(this.isContextual("opaque")){t.exportKind="type";var i=this.startNode();return this.next(),this.flowParseOpaqueType(i,!1)}if(this.isContextual("interface")){t.exportKind="type";var a=this.startNode();return this.next(),this.flowParseInterface(a)}if(this.shouldParseEnums()&&this.isContextual("enum")){t.exportKind="value";var r=this.startNode();return this.next(),this.flowParseEnumDeclaration(r)}return k(D(e.prototype),"parseExportDeclaration",this).call(this,t)}},{key:"eatExportStar",value:function(t){return!!k(D(e.prototype),"eatExportStar",this).apply(this,arguments)||!(!this.isContextual("type")||this.lookahead().type!==o.star)&&(t.exportKind="type",this.next(),this.next(),!0)}},{key:"maybeParseExportNamespaceSpecifier",value:function(t){var s=this.state.start,i=k(D(e.prototype),"maybeParseExportNamespaceSpecifier",this).call(this,t);return i&&"type"===t.exportKind&&this.unexpected(s),i}},{key:"parseClassId",value:function(t,s,i){k(D(e.prototype),"parseClassId",this).call(this,t,s,i),this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration())}},{key:"getTokenFromCode",value:function(t){var s=this.input.charCodeAt(this.state.pos+1);return 123===t&&124===s?this.finishOp(o.braceBarL,2):!this.state.inType||62!==t&&60!==t?function(t,e){return 64===t&&64===e}(t,s)?(this.state.isIterator=!0,k(D(e.prototype),"readWord",this).call(this)):k(D(e.prototype),"getTokenFromCode",this).call(this,t):this.finishOp(o.relational,1)}},{key:"isAssignable",value:function(t,e){var s=this;switch(t.type){case"Identifier":case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":return!0;case"ObjectExpression":var i=t.properties.length-1;return t.properties.every((function(t,e){return"ObjectMethod"!==t.type&&(e===i||"SpreadElement"===t.type)&&s.isAssignable(t)}));case"ObjectProperty":return this.isAssignable(t.value);case"SpreadElement":return this.isAssignable(t.argument);case"ArrayExpression":return t.elements.every((function(t){return s.isAssignable(t)}));case"AssignmentExpression":return"="===t.operator;case"ParenthesizedExpression":case"TypeCastExpression":return this.isAssignable(t.expression);case"MemberExpression":case"OptionalMemberExpression":return!e;default:return!1}}},{key:"toAssignable",value:function(t,s,i){return"TypeCastExpression"===t.type?k(D(e.prototype),"toAssignable",this).call(this,this.typeCastToParameter(t),s,i):k(D(e.prototype),"toAssignable",this).call(this,t,s,i)}},{key:"toAssignableList",value:function(t,s,i,a){for(var r=0;r<t.length;r++){var n=t[r];n&&"TypeCastExpression"===n.type&&(t[r]=this.typeCastToParameter(n))}return k(D(e.prototype),"toAssignableList",this).call(this,t,s,i,a)}},{key:"toReferencedList",value:function(t,e){for(var s=0;s<t.length;s++){var i=t[s];!i||"TypeCastExpression"!==i.type||i.extra&&i.extra.parenthesized||!(t.length>1)&&e||this.raise(i.typeAnnotation.start,"The type cast expression is expected to be wrapped with parenthesis")}return t}},{key:"checkLVal",value:function(t){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:64,i=arguments.length>2?arguments[2]:void 0,a=arguments.length>3?arguments[3]:void 0;if("TypeCastExpression"!==t.type)return k(D(e.prototype),"checkLVal",this).call(this,t,s,i,a)}},{key:"parseClassProperty",value:function(t){return this.match(o.colon)&&(t.typeAnnotation=this.flowParseTypeAnnotation()),k(D(e.prototype),"parseClassProperty",this).call(this,t)}},{key:"parseClassPrivateProperty",value:function(t){return this.match(o.colon)&&(t.typeAnnotation=this.flowParseTypeAnnotation()),k(D(e.prototype),"parseClassPrivateProperty",this).call(this,t)}},{key:"isClassMethod",value:function(){return this.isRelational("<")||k(D(e.prototype),"isClassMethod",this).call(this)}},{key:"isClassProperty",value:function(){return this.match(o.colon)||k(D(e.prototype),"isClassProperty",this).call(this)}},{key:"isNonstaticConstructor",value:function(t){return!this.match(o.colon)&&k(D(e.prototype),"isNonstaticConstructor",this).call(this,t)}},{key:"pushClassMethod",value:function(t,s,i,a,r,n){s.variance&&this.unexpected(s.variance.start),delete s.variance,this.isRelational("<")&&(s.typeParameters=this.flowParseTypeParameterDeclaration()),k(D(e.prototype),"pushClassMethod",this).call(this,t,s,i,a,r,n)}},{key:"pushClassPrivateMethod",value:function(t,s,i,a){s.variance&&this.unexpected(s.variance.start),delete s.variance,this.isRelational("<")&&(s.typeParameters=this.flowParseTypeParameterDeclaration()),k(D(e.prototype),"pushClassPrivateMethod",this).call(this,t,s,i,a)}},{key:"parseClassSuper",value:function(t){if(k(D(e.prototype),"parseClassSuper",this).call(this,t),t.superClass&&this.isRelational("<")&&(t.superTypeParameters=this.flowParseTypeParameterInstantiation()),this.isContextual("implements")){this.next();var s=t.implements=[];do{var i=this.startNode();i.id=this.flowParseRestrictedIdentifier(!0),this.isRelational("<")?i.typeParameters=this.flowParseTypeParameterInstantiation():i.typeParameters=null,s.push(this.finishNode(i,"ClassImplements"))}while(this.eat(o.comma))}}},{key:"parsePropertyName",value:function(t){var s=this.flowParseVariance(),i=k(D(e.prototype),"parsePropertyName",this).call(this,t);return t.variance=s,i}},{key:"parseObjPropValue",value:function(t,s,i,a,r,n,h,u){var l;t.variance&&this.unexpected(t.variance.start),delete t.variance,this.isRelational("<")&&(l=this.flowParseTypeParameterDeclaration(),this.match(o.parenL)||this.unexpected()),k(D(e.prototype),"parseObjPropValue",this).call(this,t,s,i,a,r,n,h,u),l&&((t.value||t).typeParameters=l)}},{key:"parseAssignableListItemTypes",value:function(t){return this.eat(o.question)&&("Identifier"!==t.type&&this.raise(t.start,"A binding pattern parameter cannot be optional in an implementation signature."),t.optional=!0),this.match(o.colon)&&(t.typeAnnotation=this.flowParseTypeAnnotation()),this.resetEndLocation(t),t}},{key:"parseMaybeDefault",value:function(t,s,i){var a=k(D(e.prototype),"parseMaybeDefault",this).call(this,t,s,i);return"AssignmentPattern"===a.type&&a.typeAnnotation&&a.right.start<a.typeAnnotation.start&&this.raise(a.typeAnnotation.start,"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`"),a}},{key:"shouldParseDefaultImport",value:function(t){return H(t)?G(this.state):k(D(e.prototype),"shouldParseDefaultImport",this).call(this,t)}},{key:"parseImportSpecifierLocal",value:function(t,e,s,i){e.local=H(t)?this.flowParseRestrictedIdentifier(!0):this.parseIdentifier(),this.checkLVal(e.local,9,void 0,i),t.specifiers.push(this.finishNode(e,s))}},{key:"maybeParseDefaultImportSpecifier",value:function(t){t.importKind="value";var s=null;if(this.match(o._typeof)?s="typeof":this.isContextual("type")&&(s="type"),s){var i=this.lookahead();"type"===s&&i.type===o.star&&this.unexpected(i.start),(G(i)||i.type===o.braceL||i.type===o.star)&&(this.next(),t.importKind=s)}return k(D(e.prototype),"maybeParseDefaultImportSpecifier",this).call(this,t)}},{key:"parseImportSpecifier",value:function(t){var e=this.startNode(),s=this.state.start,i=this.parseIdentifier(!0),a=null;"type"===i.name?a="type":"typeof"===i.name&&(a="typeof");var r=!1;if(this.isContextual("as")&&!this.isLookaheadContextual("as")){var n=this.parseIdentifier(!0);null===a||this.match(o.name)||this.state.type.keyword?(e.imported=i,e.importKind=null,e.local=this.parseIdentifier()):(e.imported=n,e.importKind=a,e.local=n.__clone())}else null!==a&&(this.match(o.name)||this.state.type.keyword)?(e.imported=this.parseIdentifier(!0),e.importKind=a,this.eatContextual("as")?e.local=this.parseIdentifier():(r=!0,e.local=e.imported.__clone())):(r=!0,e.imported=i,e.importKind=null,e.local=e.imported.__clone());var h=H(t),u=H(e);h&&u&&this.raise(s,"The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements"),(h||u)&&this.checkReservedType(e.local.name,e.local.start),!r||h||u||this.checkReservedWord(e.local.name,e.start,!0,!0),this.checkLVal(e.local,9,void 0,"import specifier"),t.specifiers.push(this.finishNode(e,"ImportSpecifier"))}},{key:"parseFunctionParams",value:function(t,s){var i=t.kind;"get"!==i&&"set"!==i&&this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration()),k(D(e.prototype),"parseFunctionParams",this).call(this,t,s)}},{key:"parseVarId",value:function(t,s){k(D(e.prototype),"parseVarId",this).call(this,t,s),this.match(o.colon)&&(t.id.typeAnnotation=this.flowParseTypeAnnotation(),this.resetEndLocation(t.id))}},{key:"parseAsyncArrowFromCallExpression",value:function(t,s){if(this.match(o.colon)){var i=this.state.noAnonFunctionType;this.state.noAnonFunctionType=!0,t.returnType=this.flowParseTypeAnnotation(),this.state.noAnonFunctionType=i}return k(D(e.prototype),"parseAsyncArrowFromCallExpression",this).call(this,t,s)}},{key:"shouldParseAsyncArrow",value:function(){return this.match(o.colon)||k(D(e.prototype),"shouldParseAsyncArrow",this).call(this)}},{key:"parseMaybeAssign",value:function(t,s,i,a){var r,n=this,h=null;if(this.hasPlugin("jsx")&&(this.match(o.jsxTagStart)||this.isRelational("<"))){if(h=this.state.clone(),!(r=this.tryParse((function(){return k(D(e.prototype),"parseMaybeAssign",n).call(n,t,s,i,a)}),h)).error)return r.node;var u=this.state.context;u[u.length-1]===F.j_oTag?u.length-=2:u[u.length-1]===F.j_expr&&(u.length-=1)}if(r&&r.error||this.isRelational("<")){var l;h=h||this.state.clone();var c=this.tryParse((function(){l=n.flowParseTypeParameterDeclaration();var r=n.forwardNoArrowParamsConversionAt(l,(function(){return k(D(e.prototype),"parseMaybeAssign",n).call(n,t,s,i,a)}));return r.typeParameters=l,n.resetStartLocationFromNode(r,l),r}),h),p=c.node&&"ArrowFunctionExpression"===c.node.type?c.node:null;if(!c.error&&p)return p;if(r&&r.node)return this.state=r.failState,r.node;if(p)return this.state=c.failState,p;if(r&&r.thrown)throw r.error;if(c.thrown)throw c.error;throw this.raise(l.start,"Expected an arrow function after this type parameter declaration")}return k(D(e.prototype),"parseMaybeAssign",this).call(this,t,s,i,a)}},{key:"parseArrow",value:function(t){var s=this;if(this.match(o.colon)){var i=this.tryParse((function(){var e=s.state.noAnonFunctionType;s.state.noAnonFunctionType=!0;var i=s.startNode(),a=P(s.flowParseTypeAndPredicateInitialiser(),2);return i.typeAnnotation=a[0],t.predicate=a[1],s.state.noAnonFunctionType=e,s.canInsertSemicolon()&&s.unexpected(),s.match(o.arrow)||s.unexpected(),i}));if(i.thrown)return null;i.error&&(this.state=i.failState),t.returnType=i.node.typeAnnotation?this.finishNode(i.node,"TypeAnnotation"):null}return k(D(e.prototype),"parseArrow",this).call(this,t)}},{key:"shouldParseArrow",value:function(){return this.match(o.colon)||k(D(e.prototype),"shouldParseArrow",this).call(this)}},{key:"setArrowFunctionParameters",value:function(t,s){-1!==this.state.noArrowParamsConversionAt.indexOf(t.start)?t.params=s:k(D(e.prototype),"setArrowFunctionParameters",this).call(this,t,s)}},{key:"checkParams",value:function(t,s,i){if(!i||-1===this.state.noArrowParamsConversionAt.indexOf(t.start))return k(D(e.prototype),"checkParams",this).apply(this,arguments)}},{key:"parseParenAndDistinguishExpression",value:function(t){return k(D(e.prototype),"parseParenAndDistinguishExpression",this).call(this,t&&-1===this.state.noArrowAt.indexOf(this.state.start))}},{key:"parseSubscripts",value:function(t,s,i,a){var r=this;if("Identifier"===t.type&&"async"===t.name&&-1!==this.state.noArrowAt.indexOf(s)){this.next();var n=this.startNodeAt(s,i);n.callee=t,n.arguments=this.parseCallExpressionArguments(o.parenR,!1),t=this.finishNode(n,"CallExpression")}else if("Identifier"===t.type&&"async"===t.name&&this.isRelational("<")){var h=this.state.clone(),u=this.tryParse((function(t){return r.parseAsyncArrowWithTypeParameters(s,i)||t()}),h);if(!u.error&&!u.aborted)return u.node;var l=this.tryParse((function(){return k(D(e.prototype),"parseSubscripts",r).call(r,t,s,i,a)}),h);if(l.node&&!l.error)return l.node;if(u.node)return this.state=u.failState,u.node;if(l.node)return this.state=l.failState,l.node;throw u.error||l.error}return k(D(e.prototype),"parseSubscripts",this).call(this,t,s,i,a)}},{key:"parseSubscript",value:function(t,s,i,a,r){var n=this;if(this.match(o.questionDot)&&this.isLookaheadRelational("<")){if(this.expectPlugin("optionalChaining"),r.optionalChainMember=!0,a)return r.stop=!0,t;this.next();var h=this.startNodeAt(s,i);return h.callee=t,h.typeArguments=this.flowParseTypeParameterInstantiation(),this.expect(o.parenL),h.arguments=this.parseCallExpressionArguments(o.parenR,!1),h.optional=!0,this.finishCallExpression(h,!0)}if(!a&&this.shouldParseTypes()&&this.isRelational("<")){var u=this.startNodeAt(s,i);u.callee=t;var l=this.tryParse((function(){return u.typeArguments=n.flowParseTypeParameterInstantiationCallOrNew(),n.expect(o.parenL),u.arguments=n.parseCallExpressionArguments(o.parenR,!1),r.optionalChainMember&&(u.optional=!1),n.finishCallExpression(u,r.optionalChainMember)}));if(l.node)return l.error&&(this.state=l.failState),l.node}return k(D(e.prototype),"parseSubscript",this).call(this,t,s,i,a,r)}},{key:"parseNewArguments",value:function(t){var s=this,i=null;this.shouldParseTypes()&&this.isRelational("<")&&(i=this.tryParse((function(){return s.flowParseTypeParameterInstantiationCallOrNew()})).node),t.typeArguments=i,k(D(e.prototype),"parseNewArguments",this).call(this,t)}},{key:"parseAsyncArrowWithTypeParameters",value:function(t,e){var s=this.startNodeAt(t,e);if(this.parseFunctionParams(s),this.parseArrow(s))return this.parseArrowExpression(s,void 0,!0)}},{key:"readToken_mult_modulo",value:function(t){var s=this.input.charCodeAt(this.state.pos+1);if(42===t&&47===s&&this.state.hasFlowComment)return this.state.hasFlowComment=!1,this.state.pos+=2,void this.nextToken();k(D(e.prototype),"readToken_mult_modulo",this).call(this,t)}},{key:"readToken_pipe_amp",value:function(t){var s=this.input.charCodeAt(this.state.pos+1);124!==t||125!==s?k(D(e.prototype),"readToken_pipe_amp",this).call(this,t):this.finishOp(o.braceBarR,2)}},{key:"parseTopLevel",value:function(t,s){var i=k(D(e.prototype),"parseTopLevel",this).call(this,t,s);return this.state.hasFlowComment&&this.raise(this.state.pos,"Unterminated flow-comment"),i}},{key:"skipBlockComment",value:function(){if(this.hasPlugin("flowComments")&&this.skipFlowComment())return this.state.hasFlowComment&&this.unexpected(null,"Cannot have a flow comment inside another flow comment"),this.hasFlowCommentCompletion(),this.state.pos+=this.skipFlowComment(),void(this.state.hasFlowComment=!0);if(this.state.hasFlowComment){var t=this.input.indexOf("*-/",this.state.pos+=2);if(-1===t)throw this.raise(this.state.pos-2,"Unterminated comment");this.state.pos=t+3}else k(D(e.prototype),"skipBlockComment",this).call(this)}},{key:"skipFlowComment",value:function(){for(var t=this.state.pos,e=2;-1!==[32,9].indexOf(this.input.charCodeAt(t+e));)e++;var s=this.input.charCodeAt(e+t),i=this.input.charCodeAt(e+t+1);return 58===s&&58===i?e+2:"flow-include"===this.input.slice(e+t,e+t+12)?e+12:58===s&&58!==i&&e}},{key:"hasFlowCommentCompletion",value:function(){if(-1===this.input.indexOf("*/",this.state.pos))throw this.raise(this.state.pos,"Unterminated comment")}},{key:"flowEnumErrorBooleanMemberNotInitialized",value:function(t,e){var s=e.enumName,i=e.memberName;this.raise(t,"Boolean enum members need to be initialized. Use either `".concat(i," = true,` ")+"or `".concat(i," = false,` in enum `").concat(s,"`."))}},{key:"flowEnumErrorInvalidMemberName",value:function(t,e){var s=e.enumName,i=e.memberName,a=i[0].toUpperCase()+i.slice(1);this.raise(t,"Enum member names cannot start with lowercase 'a' through 'z'. Instead of using "+"`".concat(i,"`, consider using `").concat(a,"`, in enum `").concat(s,"`."))}},{key:"flowEnumErrorDuplicateMemberName",value:function(t,e){var s=e.enumName,i=e.memberName;this.raise(t,"Enum member names need to be unique, but the name `".concat(i,"` has already been used ")+"before in enum `".concat(s,"`."))}},{key:"flowEnumErrorInconsistentMemberValues",value:function(t,e){var s=e.enumName;this.raise(t,"Enum `".concat(s,"` has inconsistent member initializers. Either use no initializers, or ")+"consistently use literals (either booleans, numbers, or strings) for all member initializers.")}},{key:"flowEnumErrorInvalidExplicitType",value:function(t,e){var s=e.enumName,i=e.suppliedType,a="Use one of `boolean`, `number`, `string`, or `symbol` in "+"enum `".concat(s,"`."),r=null===i?"Supplied enum type is not valid. ".concat(a):"Enum type `".concat(i,"` is not valid. ").concat(a);return this.raise(t,r)}},{key:"flowEnumErrorInvalidMemberInitializer",value:function(t,e){var s=e.enumName,i=e.explicitType,a=e.memberName,r=null;switch(i){case"boolean":case"number":case"string":r="Enum `".concat(s,"` has type `").concat(i,"`, so the initializer of ")+"`".concat(a,"` needs to be a ").concat(i," literal.");break;case"symbol":r="Symbol enum members cannot be initialized. Use `".concat(a,",` in ")+"enum `".concat(s,"`.");break;default:r="The enum member initializer for `".concat(a,"` needs to be a literal (either ")+"a boolean, number, or string) in enum `".concat(s,"`.")}return this.raise(t,r)}},{key:"flowEnumErrorNumberMemberNotInitialized",value:function(t,e){var s=e.enumName,i=e.memberName;this.raise(t,"Number enum members need to be initialized, e.g. `".concat(i," = 1` in enum `").concat(s,"`."))}},{key:"flowEnumErrorStringMemberInconsistentlyInitailized",value:function(t,e){var s=e.enumName;this.raise(t,"String enum members need to consistently either all use initializers, or use no initializers, "+"in enum `".concat(s,"`."))}},{key:"flowEnumMemberInit",value:function(){var t=this,e=this.state.start,s=function(){return t.match(o.comma)||t.match(o.braceR)};switch(this.state.type){case o.num:var i=this.parseLiteral(this.state.value,"NumericLiteral");return s()?{type:"number",pos:i.start,value:i}:{type:"invalid",pos:e};case o.string:var a=this.parseLiteral(this.state.value,"StringLiteral");return s()?{type:"string",pos:a.start,value:a}:{type:"invalid",pos:e};case o._true:case o._false:var r=this.parseBooleanLiteral();return s()?{type:"boolean",pos:r.start,value:r}:{type:"invalid",pos:e};default:return{type:"invalid",pos:e}}}},{key:"flowEnumMemberRaw",value:function(){var t=this.state.start;return{id:this.parseIdentifier(!0),init:this.eat(o.eq)?this.flowEnumMemberInit():{type:"none",pos:t}}}},{key:"flowEnumCheckExplicitTypeMismatch",value:function(t,e,s){var i=e.explicitType;null!==i&&i!==s&&this.flowEnumErrorInvalidMemberInitializer(t,e)}},{key:"flowEnumMembers",value:function(t){for(var e=t.enumName,s=t.explicitType,i=new Set,a={booleanMembers:[],numberMembers:[],stringMembers:[],defaultedMembers:[]};!this.match(o.braceR);){var r=this.startNode(),n=this.flowEnumMemberRaw(),h=n.id,u=n.init,l=h.name;if(""!==l){/^[a-z]/.test(l)&&this.flowEnumErrorInvalidMemberName(h.start,{enumName:e,memberName:l}),i.has(l)&&this.flowEnumErrorDuplicateMemberName(h.start,{enumName:e,memberName:l}),i.add(l);var c={enumName:e,explicitType:s,memberName:l};switch(r.id=h,u.type){case"boolean":this.flowEnumCheckExplicitTypeMismatch(u.pos,c,"boolean"),r.init=u.value,a.booleanMembers.push(this.finishNode(r,"EnumBooleanMember"));break;case"number":this.flowEnumCheckExplicitTypeMismatch(u.pos,c,"number"),r.init=u.value,a.numberMembers.push(this.finishNode(r,"EnumNumberMember"));break;case"string":this.flowEnumCheckExplicitTypeMismatch(u.pos,c,"string"),r.init=u.value,a.stringMembers.push(this.finishNode(r,"EnumStringMember"));break;case"invalid":throw this.flowEnumErrorInvalidMemberInitializer(u.pos,c);case"none":switch(s){case"boolean":this.flowEnumErrorBooleanMemberNotInitialized(u.pos,c);break;case"number":this.flowEnumErrorNumberMemberNotInitialized(u.pos,c);break;default:a.defaultedMembers.push(this.finishNode(r,"EnumDefaultedMember"))}}this.match(o.braceR)||this.expect(o.comma)}}return a}},{key:"flowEnumStringBody",value:function(t,e,s,i){var a=i.enumName;if(0===e.length)t.members=s;else if(0===s.length)t.members=e;else if(s.length>e.length){t.members=s;for(var r=0;r<e.length;r++){var n=e[r];this.flowEnumErrorStringMemberInconsistentlyInitailized(n.start,{enumName:a})}}else{t.members=e;for(var o=0;o<s.length;o++){var h=s[o];this.flowEnumErrorStringMemberInconsistentlyInitailized(h.start,{enumName:a})}}return this.finishNode(t,"EnumStringBody")}},{key:"flowEnumParseExplicitType",value:function(t){var e=t.enumName;if(this.eatContextual("of")){if(!this.match(o.name))throw this.flowEnumErrorInvalidExplicitType(this.state.start,{enumName:e,suppliedType:null});var s=this.state.value;return this.next(),"boolean"!==s&&"number"!==s&&"string"!==s&&"symbol"!==s&&this.flowEnumErrorInvalidExplicitType(this.state.start,{enumName:e,suppliedType:s}),s}return null}},{key:"flowParseEnumDeclaration",value:function(t){var e=this,s=this.parseIdentifier();t.id=s;var i=s.name,a=this.flowEnumParseExplicitType({enumName:i});this.expect(o.braceL);var r=this.startNode(),n=this.flowEnumMembers({enumName:i,explicitType:a});switch(a){case"boolean":r.explicitType=!0,r.members=n.booleanMembers,t.body=this.finishNode(r,"EnumBooleanBody");break;case"number":r.explicitType=!0,r.members=n.numberMembers,t.body=this.finishNode(r,"EnumNumberBody");break;case"string":r.explicitType=!0,t.body=this.flowEnumStringBody(r,n.stringMembers,n.defaultedMembers,{enumName:i});break;case"symbol":r.members=n.defaultedMembers,t.body=this.finishNode(r,"EnumSymbolBody");break;default:var h=function(){return r.members=[],e.finishNode(r,"EnumStringBody")};r.explicitType=!1;var u=n.booleanMembers.length,l=n.numberMembers.length,c=n.stringMembers.length,p=n.defaultedMembers.length;if(u||l||c||p)if(u||l)if(!l&&!c&&u>=p){r.members=n.booleanMembers,t.body=this.finishNode(r,"EnumBooleanBody");for(var d=0,f=n.defaultedMembers;d<f.length;d++){var m=f[d];this.flowEnumErrorBooleanMemberNotInitialized(m.start,{enumName:i,memberName:m.id.name})}}else if(!u&&!c&&l>=p){r.members=n.numberMembers,t.body=this.finishNode(r,"EnumNumberBody");for(var y=0,D=n.defaultedMembers;y<D.length;y++){var v=D[y];this.flowEnumErrorNumberMemberNotInitialized(v.start,{enumName:i,memberName:v.id.name})}}else t.body=h(),this.flowEnumErrorInconsistentMemberValues(s.start,{enumName:i});else t.body=this.flowEnumStringBody(r,n.stringMembers,n.defaultedMembers,{enumName:i});else t.body=h()}return this.expect(o.braceR),this.finishNode(t,"EnumDeclaration")}}]),e}(t)},typescript:function(t){return function(t){function e(){return d(this,e),g(this,D(e).apply(this,arguments))}return y(e,t),m(e,[{key:"getScopeHandler",value:function(){return nt}},{key:"tsIsIdentifier",value:function(){return this.match(o.name)}},{key:"tsNextTokenCanFollowModifier",value:function(){return this.next(),!(this.hasPrecedingLineBreak()||this.match(o.parenL)||this.match(o.parenR)||this.match(o.colon)||this.match(o.eq)||this.match(o.question)||this.match(o.bang))}},{key:"tsParseModifier",value:function(t){if(this.match(o.name)){var e=this.state.value;return-1!==t.indexOf(e)&&this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))?e:void 0}}},{key:"tsParseModifiers",value:function(t){for(var e=Object.create(null);;){var s=this.state.start,i=this.tsParseModifier(t);if(!i)break;Object.hasOwnProperty.call(e,i)&&this.raise(s,"Duplicate modifier: '".concat(i,"'")),e[i]=!0}return e}},{key:"tsIsListTerminator",value:function(t){switch(t){case"EnumMembers":case"TypeMembers":return this.match(o.braceR);case"HeritageClauseElement":return this.match(o.braceL);case"TupleElementTypes":return this.match(o.bracketR);case"TypeParametersOrArguments":return this.isRelational(">")}throw new Error("Unreachable")}},{key:"tsParseList",value:function(t,e){for(var s=[];!this.tsIsListTerminator(t);)s.push(e());return s}},{key:"tsParseDelimitedList",value:function(t,e){return ot(this.tsParseDelimitedListWorker(t,e,!0))}},{key:"tsParseDelimitedListWorker",value:function(t,e,s){for(var i=[];!this.tsIsListTerminator(t);){var a=e();if(null==a)return;if(i.push(a),!this.eat(o.comma)){if(this.tsIsListTerminator(t))break;return void(s&&this.expect(o.comma))}}return i}},{key:"tsParseBracketedList",value:function(t,e,s,i){i||(s?this.expect(o.bracketL):this.expectRelational("<"));var a=this.tsParseDelimitedList(t,e);return s?this.expect(o.bracketR):this.expectRelational(">"),a}},{key:"tsParseImportType",value:function(){var t=this.startNode();return this.expect(o._import),this.expect(o.parenL),this.match(o.string)||this.raise(this.state.start,"Argument in a type import must be a string literal"),t.argument=this.parseExprAtom(),this.expect(o.parenR),this.eat(o.dot)&&(t.qualifier=this.tsParseEntityName(!0)),this.isRelational("<")&&(t.typeParameters=this.tsParseTypeArguments()),this.finishNode(t,"TSImportType")}},{key:"tsParseEntityName",value:function(t){for(var e=this.parseIdentifier();this.eat(o.dot);){var s=this.startNodeAtNode(e);s.left=e,s.right=this.parseIdentifier(t),e=this.finishNode(s,"TSQualifiedName")}return e}},{key:"tsParseTypeReference",value:function(){var t=this.startNode();return t.typeName=this.tsParseEntityName(!1),!this.hasPrecedingLineBreak()&&this.isRelational("<")&&(t.typeParameters=this.tsParseTypeArguments()),this.finishNode(t,"TSTypeReference")}},{key:"tsParseThisTypePredicate",value:function(t){this.next();var e=this.startNodeAtNode(t);return e.parameterName=t,e.typeAnnotation=this.tsParseTypeAnnotation(!1),this.finishNode(e,"TSTypePredicate")}},{key:"tsParseThisTypeNode",value:function(){var t=this.startNode();return this.next(),this.finishNode(t,"TSThisType")}},{key:"tsParseTypeQuery",value:function(){var t=this.startNode();return this.expect(o._typeof),this.match(o._import)?t.exprName=this.tsParseImportType():t.exprName=this.tsParseEntityName(!0),this.finishNode(t,"TSTypeQuery")}},{key:"tsParseTypeParameter",value:function(){var t=this.startNode();return t.name=this.parseIdentifierName(t.start),t.constraint=this.tsEatThenParseType(o._extends),t.default=this.tsEatThenParseType(o.eq),this.finishNode(t,"TSTypeParameter")}},{key:"tsTryParseTypeParameters",value:function(){if(this.isRelational("<"))return this.tsParseTypeParameters()}},{key:"tsParseTypeParameters",value:function(){var t=this.startNode();return this.isRelational("<")||this.match(o.jsxTagStart)?this.next():this.unexpected(),t.params=this.tsParseBracketedList("TypeParametersOrArguments",this.tsParseTypeParameter.bind(this),!1,!0),this.finishNode(t,"TSTypeParameterDeclaration")}},{key:"tsTryNextParseConstantContext",value:function(){return this.lookahead().type===o._const?(this.next(),this.tsParseTypeReference()):null}},{key:"tsFillSignature",value:function(t,e){var s=t===o.arrow;e.typeParameters=this.tsTryParseTypeParameters(),this.expect(o.parenL),e.parameters=this.tsParseBindingListForSignature(),s?e.typeAnnotation=this.tsParseTypeOrTypePredicateAnnotation(t):this.match(t)&&(e.typeAnnotation=this.tsParseTypeOrTypePredicateAnnotation(t))}},{key:"tsParseBindingListForSignature",value:function(){var t=this;return this.parseBindingList(o.parenR,41).map((function(e){return"Identifier"!==e.type&&"RestElement"!==e.type&&"ObjectPattern"!==e.type&&"ArrayPattern"!==e.type&&t.raise(e.start,"Name in a signature must be an Identifier, ObjectPattern or ArrayPattern,"+"instead got ".concat(e.type)),e}))}},{key:"tsParseTypeMemberSemicolon",value:function(){this.eat(o.comma)||this.semicolon()}},{key:"tsParseSignatureMember",value:function(t,e){return this.tsFillSignature(o.colon,e),this.tsParseTypeMemberSemicolon(),this.finishNode(e,t)}},{key:"tsIsUnambiguouslyIndexSignature",value:function(){return this.next(),this.eat(o.name)&&this.match(o.colon)}},{key:"tsTryParseIndexSignature",value:function(t){if(this.match(o.bracketL)&&this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this))){this.expect(o.bracketL);var e=this.parseIdentifier();e.typeAnnotation=this.tsParseTypeAnnotation(),this.resetEndLocation(e),this.expect(o.bracketR),t.parameters=[e];var s=this.tsTryParseTypeAnnotation();return s&&(t.typeAnnotation=s),this.tsParseTypeMemberSemicolon(),this.finishNode(t,"TSIndexSignature")}}},{key:"tsParsePropertyOrMethodSignature",value:function(t,e){this.eat(o.question)&&(t.optional=!0);var s=t;if(e||!this.match(o.parenL)&&!this.isRelational("<")){var i=s;e&&(i.readonly=!0);var a=this.tsTryParseTypeAnnotation();return a&&(i.typeAnnotation=a),this.tsParseTypeMemberSemicolon(),this.finishNode(i,"TSPropertySignature")}var r=s;return this.tsFillSignature(o.colon,r),this.tsParseTypeMemberSemicolon(),this.finishNode(r,"TSMethodSignature")}},{key:"tsParseTypeMember",value:function(){var t=this.startNode();if(this.match(o.parenL)||this.isRelational("<"))return this.tsParseSignatureMember("TSCallSignatureDeclaration",t);if(this.match(o._new)){var e=this.startNode();return this.next(),this.match(o.parenL)||this.isRelational("<")?this.tsParseSignatureMember("TSConstructSignatureDeclaration",t):(t.key=this.createIdentifier(e,"new"),this.tsParsePropertyOrMethodSignature(t,!1))}var s=!!this.tsParseModifier(["readonly"]),i=this.tsTryParseIndexSignature(t);return i?(s&&(t.readonly=!0),i):(this.parsePropertyName(t),this.tsParsePropertyOrMethodSignature(t,s))}},{key:"tsParseTypeLiteral",value:function(){var t=this.startNode();return t.members=this.tsParseObjectTypeMembers(),this.finishNode(t,"TSTypeLiteral")}},{key:"tsParseObjectTypeMembers",value:function(){this.expect(o.braceL);var t=this.tsParseList("TypeMembers",this.tsParseTypeMember.bind(this));return this.expect(o.braceR),t}},{key:"tsIsStartOfMappedType",value:function(){return this.next(),this.eat(o.plusMin)?this.isContextual("readonly"):(this.isContextual("readonly")&&this.next(),!!this.match(o.bracketL)&&(this.next(),!!this.tsIsIdentifier()&&(this.next(),this.match(o._in))))}},{key:"tsParseMappedTypeParameter",value:function(){var t=this.startNode();return t.name=this.parseIdentifierName(t.start),t.constraint=this.tsExpectThenParseType(o._in),this.finishNode(t,"TSTypeParameter")}},{key:"tsParseMappedType",value:function(){var t=this.startNode();return this.expect(o.braceL),this.match(o.plusMin)?(t.readonly=this.state.value,this.next(),this.expectContextual("readonly")):this.eatContextual("readonly")&&(t.readonly=!0),this.expect(o.bracketL),t.typeParameter=this.tsParseMappedTypeParameter(),this.expect(o.bracketR),this.match(o.plusMin)?(t.optional=this.state.value,this.next(),this.expect(o.question)):this.eat(o.question)&&(t.optional=!0),t.typeAnnotation=this.tsTryParseType(),this.semicolon(),this.expect(o.braceR),this.finishNode(t,"TSMappedType")}},{key:"tsParseTupleType",value:function(){var t=this,e=this.startNode();e.elementTypes=this.tsParseBracketedList("TupleElementTypes",this.tsParseTupleElementType.bind(this),!0,!1);var s=!1;return e.elementTypes.forEach((function(e){"TSOptionalType"===e.type?s=!0:s&&"TSRestType"!==e.type&&t.raise(e.start,"A required element cannot follow an optional element.")})),this.finishNode(e,"TSTupleType")}},{key:"tsParseTupleElementType",value:function(){if(this.match(o.ellipsis)){var t=this.startNode();return this.next(),t.typeAnnotation=this.tsParseType(),this.checkCommaAfterRest(93),this.finishNode(t,"TSRestType")}var e=this.tsParseType();if(this.eat(o.question)){var s=this.startNodeAtNode(e);return s.typeAnnotation=e,this.finishNode(s,"TSOptionalType")}return e}},{key:"tsParseParenthesizedType",value:function(){var t=this.startNode();return this.expect(o.parenL),t.typeAnnotation=this.tsParseType(),this.expect(o.parenR),this.finishNode(t,"TSParenthesizedType")}},{key:"tsParseFunctionOrConstructorType",value:function(t){var e=this.startNode();return"TSConstructorType"===t&&this.expect(o._new),this.tsFillSignature(o.arrow,e),this.finishNode(e,t)}},{key:"tsParseLiteralTypeNode",value:function(){var t=this,e=this.startNode();return e.literal=function(){switch(t.state.type){case o.num:case o.string:case o._true:case o._false:return t.parseExprAtom();default:throw t.unexpected()}}(),this.finishNode(e,"TSLiteralType")}},{key:"tsParseTemplateLiteralType",value:function(){var t=this.startNode(),e=this.parseTemplate(!1);return e.expressions.length>0&&this.raise(e.expressions[0].start,"Template literal types cannot have any substitution"),t.literal=e,this.finishNode(t,"TSLiteralType")}},{key:"tsParseNonArrayType",value:function(){switch(this.state.type){case o.name:case o._void:case o._null:var t=this.match(o._void)?"TSVoidKeyword":this.match(o._null)?"TSNullKeyword":function(t){switch(t){case"any":return"TSAnyKeyword";case"boolean":return"TSBooleanKeyword";case"bigint":return"TSBigIntKeyword";case"never":return"TSNeverKeyword";case"number":return"TSNumberKeyword";case"object":return"TSObjectKeyword";case"string":return"TSStringKeyword";case"symbol":return"TSSymbolKeyword";case"undefined":return"TSUndefinedKeyword";case"unknown":return"TSUnknownKeyword";default:return}}(this.state.value);if(void 0!==t&&46!==this.lookaheadCharCode()){var e=this.startNode();return this.next(),this.finishNode(e,t)}return this.tsParseTypeReference();case o.string:case o.num:case o._true:case o._false:return this.tsParseLiteralTypeNode();case o.plusMin:if("-"===this.state.value){var s=this.startNode();if(this.lookahead().type!==o.num)throw this.unexpected();return s.literal=this.parseMaybeUnary(),this.finishNode(s,"TSLiteralType")}break;case o._this:var i=this.tsParseThisTypeNode();return this.isContextual("is")&&!this.hasPrecedingLineBreak()?this.tsParseThisTypePredicate(i):i;case o._typeof:return this.tsParseTypeQuery();case o._import:return this.tsParseImportType();case o.braceL:return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this))?this.tsParseMappedType():this.tsParseTypeLiteral();case o.bracketL:return this.tsParseTupleType();case o.parenL:return this.tsParseParenthesizedType();case o.backQuote:return this.tsParseTemplateLiteralType()}throw this.unexpected()}},{key:"tsParseArrayTypeOrHigher",value:function(){for(var t=this.tsParseNonArrayType();!this.hasPrecedingLineBreak()&&this.eat(o.bracketL);)if(this.match(o.bracketR)){var e=this.startNodeAtNode(t);e.elementType=t,this.expect(o.bracketR),t=this.finishNode(e,"TSArrayType")}else{var s=this.startNodeAtNode(t);s.objectType=t,s.indexType=this.tsParseType(),this.expect(o.bracketR),t=this.finishNode(s,"TSIndexedAccessType")}return t}},{key:"tsParseTypeOperator",value:function(t){var e=this.startNode();return this.expectContextual(t),e.operator=t,e.typeAnnotation=this.tsParseTypeOperatorOrHigher(),"readonly"===t&&this.tsCheckTypeAnnotationForReadOnly(e),this.finishNode(e,"TSTypeOperator")}},{key:"tsCheckTypeAnnotationForReadOnly",value:function(t){switch(t.typeAnnotation.type){case"TSTupleType":case"TSArrayType":return;default:this.raise(t.start,"'readonly' type modifier is only permitted on array and tuple literal types.")}}},{key:"tsParseInferType",value:function(){var t=this.startNode();this.expectContextual("infer");var e=this.startNode();return e.name=this.parseIdentifierName(e.start),t.typeParameter=this.finishNode(e,"TSTypeParameter"),this.finishNode(t,"TSInferType")}},{key:"tsParseTypeOperatorOrHigher",value:function(){var t=this,e=["keyof","unique","readonly"].find((function(e){return t.isContextual(e)}));return e?this.tsParseTypeOperator(e):this.isContextual("infer")?this.tsParseInferType():this.tsParseArrayTypeOrHigher()}},{key:"tsParseUnionOrIntersectionType",value:function(t,e,s){this.eat(s);var i=e();if(this.match(s)){for(var a=[i];this.eat(s);)a.push(e());var r=this.startNodeAtNode(i);r.types=a,i=this.finishNode(r,t)}return i}},{key:"tsParseIntersectionTypeOrHigher",value:function(){return this.tsParseUnionOrIntersectionType("TSIntersectionType",this.tsParseTypeOperatorOrHigher.bind(this),o.bitwiseAND)}},{key:"tsParseUnionTypeOrHigher",value:function(){return this.tsParseUnionOrIntersectionType("TSUnionType",this.tsParseIntersectionTypeOrHigher.bind(this),o.bitwiseOR)}},{key:"tsIsStartOfFunctionType",value:function(){return!!this.isRelational("<")||this.match(o.parenL)&&this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this))}},{key:"tsSkipParameterStart",value:function(){if(this.match(o.name)||this.match(o._this))return this.next(),!0;if(this.match(o.braceL)){var t=1;for(this.next();t>0;)this.match(o.braceL)?++t:this.match(o.braceR)&&--t,this.next();return!0}if(this.match(o.bracketL)){var e=1;for(this.next();e>0;)this.match(o.bracketL)?++e:this.match(o.bracketR)&&--e,this.next();return!0}return!1}},{key:"tsIsUnambiguouslyStartOfFunctionType",value:function(){if(this.next(),this.match(o.parenR)||this.match(o.ellipsis))return!0;if(this.tsSkipParameterStart()){if(this.match(o.colon)||this.match(o.comma)||this.match(o.question)||this.match(o.eq))return!0;if(this.match(o.parenR)&&(this.next(),this.match(o.arrow)))return!0}return!1}},{key:"tsParseTypeOrTypePredicateAnnotation",value:function(t){var e=this;return this.tsInType((function(){var s=e.startNode();e.expect(t);var i=e.tsTryParse(e.tsParseTypePredicateAsserts.bind(e)),a=e.tsIsIdentifier()&&e.tsTryParse(e.tsParseTypePredicatePrefix.bind(e));if(!a){if(!i)return e.tsParseTypeAnnotation(!1,s);var r=e.startNodeAtNode(s);return r.parameterName=e.parseIdentifier(),r.asserts=i,s.typeAnnotation=e.finishNode(r,"TSTypePredicate"),e.finishNode(s,"TSTypeAnnotation")}var n=e.tsParseTypeAnnotation(!1),o=e.startNodeAtNode(s);return o.parameterName=a,o.typeAnnotation=n,o.asserts=i,s.typeAnnotation=e.finishNode(o,"TSTypePredicate"),e.finishNode(s,"TSTypeAnnotation")}))}},{key:"tsTryParseTypeOrTypePredicateAnnotation",value:function(){return this.match(o.colon)?this.tsParseTypeOrTypePredicateAnnotation(o.colon):void 0}},{key:"tsTryParseTypeAnnotation",value:function(){return this.match(o.colon)?this.tsParseTypeAnnotation():void 0}},{key:"tsTryParseType",value:function(){return this.tsEatThenParseType(o.colon)}},{key:"tsParseTypePredicatePrefix",value:function(){var t=this.parseIdentifier();if(this.isContextual("is")&&!this.hasPrecedingLineBreak())return this.next(),t}},{key:"tsParseTypePredicateAsserts",value:function(){return!!this.tsIsIdentifier()&&!("asserts"!==this.parseIdentifier().name||this.hasPrecedingLineBreak()||!this.tsIsIdentifier())}},{key:"tsParseTypeAnnotation",value:function(){var t=this,e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.startNode();return this.tsInType((function(){e&&t.expect(o.colon),s.typeAnnotation=t.tsParseType()})),this.finishNode(s,"TSTypeAnnotation")}},{key:"tsParseType",value:function(){ht(this.state.inType);var t=this.tsParseNonConditionalType();if(this.hasPrecedingLineBreak()||!this.eat(o._extends))return t;var e=this.startNodeAtNode(t);return e.checkType=t,e.extendsType=this.tsParseNonConditionalType(),this.expect(o.question),e.trueType=this.tsParseType(),this.expect(o.colon),e.falseType=this.tsParseType(),this.finishNode(e,"TSConditionalType")}},{key:"tsParseNonConditionalType",value:function(){return this.tsIsStartOfFunctionType()?this.tsParseFunctionOrConstructorType("TSFunctionType"):this.match(o._new)?this.tsParseFunctionOrConstructorType("TSConstructorType"):this.tsParseUnionTypeOrHigher()}},{key:"tsParseTypeAssertion",value:function(){var t=this.startNode(),e=this.tsTryNextParseConstantContext();return t.typeAnnotation=e||this.tsNextThenParseType(),this.expectRelational(">"),t.expression=this.parseMaybeUnary(),this.finishNode(t,"TSTypeAssertion")}},{key:"tsParseHeritageClause",value:function(t){var e=this.state.start,s=this.tsParseDelimitedList("HeritageClauseElement",this.tsParseExpressionWithTypeArguments.bind(this));return s.length||this.raise(e,"'".concat(t,"' list cannot be empty.")),s}},{key:"tsParseExpressionWithTypeArguments",value:function(){var t=this.startNode();return t.expression=this.tsParseEntityName(!1),this.isRelational("<")&&(t.typeParameters=this.tsParseTypeArguments()),this.finishNode(t,"TSExpressionWithTypeArguments")}},{key:"tsParseInterfaceDeclaration",value:function(t){t.id=this.parseIdentifier(),this.checkLVal(t.id,130,void 0,"typescript interface declaration"),t.typeParameters=this.tsTryParseTypeParameters(),this.eat(o._extends)&&(t.extends=this.tsParseHeritageClause("extends"));var e=this.startNode();return e.body=this.tsInType(this.tsParseObjectTypeMembers.bind(this)),t.body=this.finishNode(e,"TSInterfaceBody"),this.finishNode(t,"TSInterfaceDeclaration")}},{key:"tsParseTypeAliasDeclaration",value:function(t){return t.id=this.parseIdentifier(),this.checkLVal(t.id,2,void 0,"typescript type alias"),t.typeParameters=this.tsTryParseTypeParameters(),t.typeAnnotation=this.tsExpectThenParseType(o.eq),this.semicolon(),this.finishNode(t,"TSTypeAliasDeclaration")}},{key:"tsInNoContext",value:function(t){var e=this.state.context;this.state.context=[e[0]];try{return t()}finally{this.state.context=e}}},{key:"tsInType",value:function(t){var e=this.state.inType;this.state.inType=!0;try{return t()}finally{this.state.inType=e}}},{key:"tsEatThenParseType",value:function(t){return this.match(t)?this.tsNextThenParseType():void 0}},{key:"tsExpectThenParseType",value:function(t){var e=this;return this.tsDoThenParseType((function(){return e.expect(t)}))}},{key:"tsNextThenParseType",value:function(){var t=this;return this.tsDoThenParseType((function(){return t.next()}))}},{key:"tsDoThenParseType",value:function(t){var e=this;return this.tsInType((function(){return t(),e.tsParseType()}))}},{key:"tsParseEnumMember",value:function(){var t=this.startNode();return t.id=this.match(o.string)?this.parseExprAtom():this.parseIdentifier(!0),this.eat(o.eq)&&(t.initializer=this.parseMaybeAssign()),this.finishNode(t,"TSEnumMember")}},{key:"tsParseEnumDeclaration",value:function(t,e){return e&&(t.const=!0),t.id=this.parseIdentifier(),this.checkLVal(t.id,e?779:267,void 0,"typescript enum declaration"),this.expect(o.braceL),t.members=this.tsParseDelimitedList("EnumMembers",this.tsParseEnumMember.bind(this)),this.expect(o.braceR),this.finishNode(t,"TSEnumDeclaration")}},{key:"tsParseModuleBlock",value:function(){var t=this.startNode();return this.scope.enter(0),this.expect(o.braceL),this.parseBlockOrModuleBlockBody(t.body=[],void 0,!0,o.braceR),this.scope.exit(),this.finishNode(t,"TSModuleBlock")}},{key:"tsParseModuleOrNamespaceDeclaration",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(t.id=this.parseIdentifier(),e||this.checkLVal(t.id,1024,null,"module or namespace declaration"),this.eat(o.dot)){var s=this.startNode();this.tsParseModuleOrNamespaceDeclaration(s,!0),t.body=s}else this.scope.enter(512),t.body=this.tsParseModuleBlock(),this.scope.exit();return this.finishNode(t,"TSModuleDeclaration")}},{key:"tsParseAmbientExternalModuleDeclaration",value:function(t){return this.isContextual("global")?(t.global=!0,t.id=this.parseIdentifier()):this.match(o.string)?t.id=this.parseExprAtom():this.unexpected(),this.match(o.braceL)?(this.scope.enter(512),t.body=this.tsParseModuleBlock(),this.scope.exit()):this.semicolon(),this.finishNode(t,"TSModuleDeclaration")}},{key:"tsParseImportEqualsDeclaration",value:function(t,e){return t.isExport=e||!1,t.id=this.parseIdentifier(),this.expect(o.eq),t.moduleReference=this.tsParseModuleReference(),this.semicolon(),this.finishNode(t,"TSImportEqualsDeclaration")}},{key:"tsIsExternalModuleReference",value:function(){return this.isContextual("require")&&40===this.lookaheadCharCode()}},{key:"tsParseModuleReference",value:function(){return this.tsIsExternalModuleReference()?this.tsParseExternalModuleReference():this.tsParseEntityName(!1)}},{key:"tsParseExternalModuleReference",value:function(){var t=this.startNode();if(this.expectContextual("require"),this.expect(o.parenL),!this.match(o.string))throw this.unexpected();return t.expression=this.parseExprAtom(),this.expect(o.parenR),this.finishNode(t,"TSExternalModuleReference")}},{key:"tsLookAhead",value:function(t){var e=this.state.clone(),s=t();return this.state=e,s}},{key:"tsTryParseAndCatch",value:function(t){var e=this.tryParse((function(e){return t()||e()}));if(!e.aborted&&e.node)return e.error&&(this.state=e.failState),e.node}},{key:"tsTryParse",value:function(t){var e=this.state.clone(),s=t();return void 0!==s&&!1!==s?s:void(this.state=e)}},{key:"tsTryParseDeclare",value:function(t){if(!this.isLineTerminator()){var e,s=this.state.type;switch(this.isContextual("let")&&(s=o._var,e="let"),s){case o._function:return this.parseFunctionStatement(t,!1,!0);case o._class:return t.declare=!0,this.parseClass(t,!0,!1);case o._const:if(this.match(o._const)&&this.isLookaheadContextual("enum"))return this.expect(o._const),this.expectContextual("enum"),this.tsParseEnumDeclaration(t,!0);case o._var:return e=e||this.state.value,this.parseVarStatement(t,e);case o.name:var i=this.state.value;return"global"===i?this.tsParseAmbientExternalModuleDeclaration(t):this.tsParseDeclaration(t,i,!0)}}}},{key:"tsTryParseExportDeclaration",value:function(){return this.tsParseDeclaration(this.startNode(),this.state.value,!0)}},{key:"tsParseExpressionStatement",value:function(t,e){switch(e.name){case"declare":var s=this.tsTryParseDeclare(t);if(s)return s.declare=!0,s;break;case"global":if(this.match(o.braceL)){this.scope.enter(512);var i=t;return i.global=!0,i.id=e,i.body=this.tsParseModuleBlock(),this.scope.exit(),this.finishNode(i,"TSModuleDeclaration")}break;default:return this.tsParseDeclaration(t,e.name,!1)}}},{key:"tsParseDeclaration",value:function(t,e,s){switch(e){case"abstract":if(this.tsCheckLineTerminatorAndMatch(o._class,s)){var i=t;return i.abstract=!0,s&&(this.next(),this.match(o._class)||this.unexpected(null,o._class)),this.parseClass(i,!0,!1)}break;case"enum":if(s||this.match(o.name))return s&&this.next(),this.tsParseEnumDeclaration(t,!1);break;case"interface":if(this.tsCheckLineTerminatorAndMatch(o.name,s))return s&&this.next(),this.tsParseInterfaceDeclaration(t);break;case"module":if(s&&this.next(),this.match(o.string))return this.tsParseAmbientExternalModuleDeclaration(t);if(this.tsCheckLineTerminatorAndMatch(o.name,s))return this.tsParseModuleOrNamespaceDeclaration(t);break;case"namespace":if(this.tsCheckLineTerminatorAndMatch(o.name,s))return s&&this.next(),this.tsParseModuleOrNamespaceDeclaration(t);break;case"type":if(this.tsCheckLineTerminatorAndMatch(o.name,s))return s&&this.next(),this.tsParseTypeAliasDeclaration(t)}}},{key:"tsCheckLineTerminatorAndMatch",value:function(t,e){return(e||this.match(t))&&!this.isLineTerminator()}},{key:"tsTryParseGenericAsyncArrowFunction",value:function(t,s){var i=this;if(this.isRelational("<")){var a=this.tsTryParseAndCatch((function(){var a=i.startNodeAt(t,s);return a.typeParameters=i.tsParseTypeParameters(),k(D(e.prototype),"parseFunctionParams",i).call(i,a),a.returnType=i.tsTryParseTypeOrTypePredicateAnnotation(),i.expect(o.arrow),a}));if(a)return this.parseArrowExpression(a,null,!0)}}},{key:"tsParseTypeArguments",value:function(){var t=this,e=this.startNode();return e.params=this.tsInType((function(){return t.tsInNoContext((function(){return t.expectRelational("<"),t.tsParseDelimitedList("TypeParametersOrArguments",t.tsParseType.bind(t))}))})),this.state.exprAllowed=!1,this.expectRelational(">"),this.finishNode(e,"TSTypeParameterInstantiation")}},{key:"tsIsDeclarationStart",value:function(){if(this.match(o.name))switch(this.state.value){case"abstract":case"declare":case"enum":case"interface":case"module":case"namespace":case"type":return!0}return!1}},{key:"isExportDefaultSpecifier",value:function(){return!this.tsIsDeclarationStart()&&k(D(e.prototype),"isExportDefaultSpecifier",this).call(this)}},{key:"parseAssignableListItem",value:function(t,e){var s,i=this.state.start,a=this.state.startLoc,r=!1;t&&(s=this.parseAccessModifier(),r=!!this.tsParseModifier(["readonly"]));var n=this.parseMaybeDefault();this.parseAssignableListItemTypes(n);var o=this.parseMaybeDefault(n.start,n.loc.start,n);if(s||r){var h=this.startNodeAt(i,a);return e.length&&(h.decorators=e),s&&(h.accessibility=s),r&&(h.readonly=r),"Identifier"!==o.type&&"AssignmentPattern"!==o.type&&this.raise(h.start,"A parameter property may not be declared using a binding pattern."),h.parameter=o,this.finishNode(h,"TSParameterProperty")}return e.length&&(n.decorators=e),o}},{key:"parseFunctionBodyAndFinish",value:function(t,s){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.match(o.colon)&&(t.returnType=this.tsParseTypeOrTypePredicateAnnotation(o.colon));var a="FunctionDeclaration"===s?"TSDeclareFunction":"ClassMethod"===s?"TSDeclareMethod":void 0;a&&!this.match(o.braceL)&&this.isLineTerminator()?this.finishNode(t,a):k(D(e.prototype),"parseFunctionBodyAndFinish",this).call(this,t,s,i)}},{key:"registerFunctionStatementId",value:function(t){!t.body&&t.id?this.checkLVal(t.id,1024,null,"function name"):k(D(e.prototype),"registerFunctionStatementId",this).apply(this,arguments)}},{key:"parseSubscript",value:function(t,s,i,a,r){var n=this;if(!this.hasPrecedingLineBreak()&&this.match(o.bang)){this.state.exprAllowed=!1,this.next();var h=this.startNodeAt(s,i);return h.expression=t,this.finishNode(h,"TSNonNullExpression")}if(this.isRelational("<")){var u=this.tsTryParseAndCatch((function(){if(!a&&n.atPossibleAsync(t)){var e=n.tsTryParseGenericAsyncArrowFunction(s,i);if(e)return e}var h=n.startNodeAt(s,i);h.callee=t;var u=n.tsParseTypeArguments();if(u){if(!a&&n.eat(o.parenL))return h.arguments=n.parseCallExpressionArguments(o.parenR,!1),h.typeParameters=u,n.finishCallExpression(h,r.optionalChainMember);if(n.match(o.backQuote))return n.parseTaggedTemplateExpression(s,i,t,r,u)}n.unexpected()}));if(u)return u}return k(D(e.prototype),"parseSubscript",this).call(this,t,s,i,a,r)}},{key:"parseNewArguments",value:function(t){var s=this;if(this.isRelational("<")){var i=this.tsTryParseAndCatch((function(){var t=s.tsParseTypeArguments();return s.match(o.parenL)||s.unexpected(),t}));i&&(t.typeParameters=i)}k(D(e.prototype),"parseNewArguments",this).call(this,t)}},{key:"parseExprOp",value:function(t,s,i,a,r){if(ot(o._in.binop)>a&&!this.hasPrecedingLineBreak()&&this.isContextual("as")){var n=this.startNodeAt(s,i);n.expression=t;var h=this.tsTryNextParseConstantContext();return n.typeAnnotation=h||this.tsNextThenParseType(),this.finishNode(n,"TSAsExpression"),this.parseExprOp(n,s,i,a,r)}return k(D(e.prototype),"parseExprOp",this).call(this,t,s,i,a,r)}},{key:"checkReservedWord",value:function(t,e,s,i){}},{key:"checkDuplicateExports",value:function(){}},{key:"parseImport",value:function(t){return this.match(o.name)&&this.lookahead().type===o.eq?this.tsParseImportEqualsDeclaration(t):k(D(e.prototype),"parseImport",this).call(this,t)}},{key:"parseExport",value:function(t){if(this.match(o._import))return this.expect(o._import),this.tsParseImportEqualsDeclaration(t,!0);if(this.eat(o.eq)){var s=t;return s.expression=this.parseExpression(),this.semicolon(),this.finishNode(s,"TSExportAssignment")}if(this.eatContextual("as")){var i=t;return this.expectContextual("namespace"),i.id=this.parseIdentifier(),this.semicolon(),this.finishNode(i,"TSNamespaceExportDeclaration")}return k(D(e.prototype),"parseExport",this).call(this,t)}},{key:"isAbstractClass",value:function(){return this.isContextual("abstract")&&this.lookahead().type===o._class}},{key:"parseExportDefaultExpression",value:function(){if(this.isAbstractClass()){var t=this.startNode();return this.next(),this.parseClass(t,!0,!0),t.abstract=!0,t}if("interface"===this.state.value){var s=this.tsParseDeclaration(this.startNode(),this.state.value,!0);if(s)return s}return k(D(e.prototype),"parseExportDefaultExpression",this).call(this)}},{key:"parseStatementContent",value:function(t,s){if(this.state.type===o._const){var i=this.lookahead();if(i.type===o.name&&"enum"===i.value){var a=this.startNode();return this.expect(o._const),this.expectContextual("enum"),this.tsParseEnumDeclaration(a,!0)}}return k(D(e.prototype),"parseStatementContent",this).call(this,t,s)}},{key:"parseAccessModifier",value:function(){return this.tsParseModifier(["public","protected","private"])}},{key:"parseClassMember",value:function(t,s,i,a){var r=this.parseAccessModifier();r&&(s.accessibility=r),k(D(e.prototype),"parseClassMember",this).call(this,t,s,i,a)}},{key:"parseClassMemberWithIsStatic",value:function(t,s,i,a,r){var n=this.tsParseModifiers(["abstract","readonly","declare"]);Object.assign(s,n);var o=this.tsTryParseIndexSignature(s);if(o)return t.body.push(o),n.abstract&&this.raise(s.start,"Index signatures cannot have the 'abstract' modifier"),a&&this.raise(s.start,"Index signatures cannot have the 'static' modifier"),void(s.accessibility&&this.raise(s.start,"Index signatures cannot have an accessibility modifier ('".concat(s.accessibility,"')")));k(D(e.prototype),"parseClassMemberWithIsStatic",this).call(this,t,s,i,a,r)}},{key:"parsePostMemberNameModifiers",value:function(t){this.eat(o.question)&&(t.optional=!0),t.readonly&&this.match(o.parenL)&&this.raise(t.start,"Class methods cannot have the 'readonly' modifier"),t.declare&&this.match(o.parenL)&&this.raise(t.start,"Class methods cannot have the 'declare' modifier")}},{key:"parseExpressionStatement",value:function(t,s){return("Identifier"===s.type?this.tsParseExpressionStatement(t,s):void 0)||k(D(e.prototype),"parseExpressionStatement",this).call(this,t,s)}},{key:"shouldParseExportDeclaration",value:function(){return!!this.tsIsDeclarationStart()||k(D(e.prototype),"shouldParseExportDeclaration",this).call(this)}},{key:"parseConditional",value:function(t,s,i,a,r){var n=this;if(!r||!this.match(o.question))return k(D(e.prototype),"parseConditional",this).call(this,t,s,i,a,r);var h=this.tryParse((function(){return k(D(e.prototype),"parseConditional",n).call(n,t,s,i,a)}));return h.node?(h.error&&(this.state=h.failState),h.node):(r.start=h.error.pos||this.state.start,t)}},{key:"parseParenItem",value:function(t,s,i){if(t=k(D(e.prototype),"parseParenItem",this).call(this,t,s,i),this.eat(o.question)&&(t.optional=!0,this.resetEndLocation(t)),this.match(o.colon)){var a=this.startNodeAt(s,i);return a.expression=t,a.typeAnnotation=this.tsParseTypeAnnotation(),this.finishNode(a,"TSTypeCastExpression")}return t}},{key:"parseExportDeclaration",value:function(t){var s,i=this.state.start,a=this.state.startLoc,r=this.eatContextual("declare");return this.match(o.name)&&(s=this.tsTryParseExportDeclaration()),s||(s=k(D(e.prototype),"parseExportDeclaration",this).call(this,t)),s&&r&&(this.resetStartLocation(s,i,a),s.declare=!0),s}},{key:"parseClassId",value:function(t,s,i){if(s&&!i||!this.isContextual("implements")){k(D(e.prototype),"parseClassId",this).call(this,t,s,i,t.declare?1024:139);var a=this.tsTryParseTypeParameters();a&&(t.typeParameters=a)}}},{key:"parseClassPropertyAnnotation",value:function(t){!t.optional&&this.eat(o.bang)&&(t.definite=!0);var e=this.tsTryParseTypeAnnotation();e&&(t.typeAnnotation=e)}},{key:"parseClassProperty",value:function(t){return this.parseClassPropertyAnnotation(t),t.declare&&this.match(o.equal)&&this.raise(this.state.start,"'declare' class fields cannot have an initializer"),k(D(e.prototype),"parseClassProperty",this).call(this,t)}},{key:"parseClassPrivateProperty",value:function(t){return t.abstract&&this.raise(t.start,"Private elements cannot have the 'abstract' modifier."),t.accessibility&&this.raise(t.start,"Private elements cannot have an accessibility modifier ('".concat(t.accessibility,"')")),this.parseClassPropertyAnnotation(t),k(D(e.prototype),"parseClassPrivateProperty",this).call(this,t)}},{key:"pushClassMethod",value:function(t,s,i,a,r,n){var o=this.tsTryParseTypeParameters();o&&(s.typeParameters=o),k(D(e.prototype),"pushClassMethod",this).call(this,t,s,i,a,r,n)}},{key:"pushClassPrivateMethod",value:function(t,s,i,a){var r=this.tsTryParseTypeParameters();r&&(s.typeParameters=r),k(D(e.prototype),"pushClassPrivateMethod",this).call(this,t,s,i,a)}},{key:"parseClassSuper",value:function(t){k(D(e.prototype),"parseClassSuper",this).call(this,t),t.superClass&&this.isRelational("<")&&(t.superTypeParameters=this.tsParseTypeArguments()),this.eatContextual("implements")&&(t.implements=this.tsParseHeritageClause("implements"))}},{key:"parseObjPropValue",value:function(t){var s,i=this.tsTryParseTypeParameters();i&&(t.typeParameters=i);for(var a=arguments.length,r=new Array(a>1?a-1:0),n=1;n<a;n++)r[n-1]=arguments[n];(s=k(D(e.prototype),"parseObjPropValue",this)).call.apply(s,[this,t].concat(r))}},{key:"parseFunctionParams",value:function(t,s){var i=this.tsTryParseTypeParameters();i&&(t.typeParameters=i),k(D(e.prototype),"parseFunctionParams",this).call(this,t,s)}},{key:"parseVarId",value:function(t,s){k(D(e.prototype),"parseVarId",this).call(this,t,s),"Identifier"===t.id.type&&this.eat(o.bang)&&(t.definite=!0);var i=this.tsTryParseTypeAnnotation();i&&(t.id.typeAnnotation=i,this.resetEndLocation(t.id))}},{key:"parseAsyncArrowFromCallExpression",value:function(t,s){return this.match(o.colon)&&(t.returnType=this.tsParseTypeAnnotation()),k(D(e.prototype),"parseAsyncArrowFromCallExpression",this).call(this,t,s)}},{key:"parseMaybeAssign",value:function(){for(var t,s,i,a,r,n=this,h=arguments.length,u=new Array(h),l=0;l<h;l++)u[l]=arguments[l];if(this.match(o.jsxTagStart)){if(t=this.state.clone(),!(s=this.tryParse((function(){var t;return(t=k(D(e.prototype),"parseMaybeAssign",n)).call.apply(t,[n].concat(u))}),t)).error)return s.node;var c=this.state.context;c[c.length-1]===F.j_oTag?c.length-=2:c[c.length-1]===F.j_expr&&(c.length-=1)}if(!(s&&s.error||this.isRelational("<")))return(a=k(D(e.prototype),"parseMaybeAssign",this)).call.apply(a,[this].concat(u));t=t||this.state.clone();var p=this.tryParse((function(t){var s;r=n.tsParseTypeParameters();var i=(s=k(D(e.prototype),"parseMaybeAssign",n)).call.apply(s,[n].concat(u));return("ArrowFunctionExpression"!==i.type||i.extra&&i.extra.parenthesized)&&t(),r&&0!==r.params.length&&n.resetStartLocationFromNode(i,r),i.typeParameters=r,i}),t);if(!p.error&&!p.aborted)return p.node;if(!s&&(ht(!this.hasPlugin("jsx")),!(i=this.tryParse((function(){var t;return(t=k(D(e.prototype),"parseMaybeAssign",n)).call.apply(t,[n].concat(u))}),t)).error))return i.node;if(s&&s.node)return this.state=s.failState,s.node;if(p.node)return this.state=p.failState,p.node;if(i&&i.node)return this.state=i.failState,i.node;if(s&&s.thrown)throw s.error;if(p.thrown)throw p.error;if(i&&i.thrown)throw i.error;throw s&&s.error||p.error||i&&i.error}},{key:"parseMaybeUnary",value:function(t){return!this.hasPlugin("jsx")&&this.isRelational("<")?this.tsParseTypeAssertion():k(D(e.prototype),"parseMaybeUnary",this).call(this,t)}},{key:"parseArrow",value:function(t){var s=this;if(this.match(o.colon)){var i=this.tryParse((function(t){var e=s.tsParseTypeOrTypePredicateAnnotation(o.colon);return!s.canInsertSemicolon()&&s.match(o.arrow)||t(),e}));if(i.aborted)return;i.thrown||(i.error&&(this.state=i.failState),t.returnType=i.node)}return k(D(e.prototype),"parseArrow",this).call(this,t)}},{key:"parseAssignableListItemTypes",value:function(t){this.eat(o.question)&&("Identifier"!==t.type&&this.raise(t.start,"A binding pattern parameter cannot be optional in an implementation signature."),t.optional=!0);var e=this.tsTryParseTypeAnnotation();return e&&(t.typeAnnotation=e),this.resetEndLocation(t),t}},{key:"toAssignable",value:function(t,s,i){switch(t.type){case"TSTypeCastExpression":return k(D(e.prototype),"toAssignable",this).call(this,this.typeCastToParameter(t),s,i);case"TSParameterProperty":return k(D(e.prototype),"toAssignable",this).call(this,t,s,i);case"TSAsExpression":case"TSNonNullExpression":case"TSTypeAssertion":return t.expression=this.toAssignable(t.expression,s,i),t;default:return k(D(e.prototype),"toAssignable",this).call(this,t,s,i)}}},{key:"checkLVal",value:function(t){var s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:64,i=arguments.length>2?arguments[2]:void 0,a=arguments.length>3?arguments[3]:void 0;switch(t.type){case"TSTypeCastExpression":return;case"TSParameterProperty":return void this.checkLVal(t.parameter,s,i,"parameter property");case"TSAsExpression":case"TSNonNullExpression":case"TSTypeAssertion":return void this.checkLVal(t.expression,s,i,a);default:return void k(D(e.prototype),"checkLVal",this).call(this,t,s,i,a)}}},{key:"parseBindingAtom",value:function(){switch(this.state.type){case o._this:return this.parseIdentifier(!0);default:return k(D(e.prototype),"parseBindingAtom",this).call(this)}}},{key:"parseMaybeDecoratorArguments",value:function(t){if(this.isRelational("<")){var s=this.tsParseTypeArguments();if(this.match(o.parenL)){var i=k(D(e.prototype),"parseMaybeDecoratorArguments",this).call(this,t);return i.typeParameters=s,i}this.unexpected(this.state.start,o.parenL)}return k(D(e.prototype),"parseMaybeDecoratorArguments",this).call(this,t)}},{key:"isClassMethod",value:function(){return this.isRelational("<")||k(D(e.prototype),"isClassMethod",this).call(this)}},{key:"isClassProperty",value:function(){return this.match(o.bang)||this.match(o.colon)||k(D(e.prototype),"isClassProperty",this).call(this)}},{key:"parseMaybeDefault",value:function(){for(var t,s=arguments.length,i=new Array(s),a=0;a<s;a++)i[a]=arguments[a];var r=(t=k(D(e.prototype),"parseMaybeDefault",this)).call.apply(t,[this].concat(i));return"AssignmentPattern"===r.type&&r.typeAnnotation&&r.right.start<r.typeAnnotation.start&&this.raise(r.typeAnnotation.start,"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`"),r}},{key:"getTokenFromCode",value:function(t){return!this.state.inType||62!==t&&60!==t?k(D(e.prototype),"getTokenFromCode",this).call(this,t):this.finishOp(o.relational,1)}},{key:"toAssignableList",value:function(t){for(var s=0;s<t.length;s++){var i=t[s];if(i)switch(i.type){case"TSTypeCastExpression":t[s]=this.typeCastToParameter(i);break;case"TSAsExpression":case"TSTypeAssertion":this.raise(i.start,"Unexpected type cast in parameter position.")}}return k(D(e.prototype),"toAssignableList",this).apply(this,arguments)}},{key:"typeCastToParameter",value:function(t){return t.expression.typeAnnotation=t.typeAnnotation,this.resetEndLocation(t.expression,t.typeAnnotation.end,t.typeAnnotation.loc.end),t.expression}},{key:"toReferencedList",value:function(t,e){for(var s=0;s<t.length;s++){var i=t[s];i&&i._exprListItem&&"TsTypeCastExpression"===i.type&&this.raise(i.start,"Did not expect a type annotation here.")}return t}},{key:"shouldParseArrow",value:function(){return this.match(o.colon)||k(D(e.prototype),"shouldParseArrow",this).call(this)}},{key:"shouldParseAsyncArrow",value:function(){return this.match(o.colon)||k(D(e.prototype),"shouldParseAsyncArrow",this).call(this)}},{key:"canHaveLeadingDecorator",value:function(){return k(D(e.prototype),"canHaveLeadingDecorator",this).call(this)||this.isAbstractClass()}},{key:"jsxParseOpeningElementAfterName",value:function(t){var s=this;if(this.isRelational("<")){var i=this.tsTryParseAndCatch((function(){return s.tsParseTypeArguments()}));i&&(t.typeParameters=i)}return k(D(e.prototype),"jsxParseOpeningElementAfterName",this).call(this,t)}},{key:"getGetterSetterExpectedParamCount",value:function(t){var s=k(D(e.prototype),"getGetterSetterExpectedParamCount",this).call(this,t),i=t.params[0];return i&&"Identifier"===i.type&&"this"===i.name?s+1:s}}]),e}(t)},v8intrinsic:function(t){return function(t){function e(){return d(this,e),g(this,D(e).apply(this,arguments))}return y(e,t),m(e,[{key:"parseV8Intrinsic",value:function(){if(this.match(o.modulo)){var t=this.state.start,e=this.startNode();if(this.eat(o.modulo),this.match(o.name)){var s=this.parseIdentifierName(this.state.start),i=this.createIdentifier(e,s);if(i.type="V8IntrinsicIdentifier",this.match(o.parenL))return i}this.unexpected(t)}}},{key:"parseExprAtom",value:function(){return this.parseV8Intrinsic()||k(D(e.prototype),"parseExprAtom",this).apply(this,arguments)}}]),e}(t)},placeholders:function(t){return function(t){function e(){return d(this,e),g(this,D(e).apply(this,arguments))}return y(e,t),m(e,[{key:"parsePlaceholder",value:function(t){if(this.match(o.placeholder)){var s=this.startNode();return this.next(),this.assertNoSpace("Unexpected space in placeholder."),s.name=k(D(e.prototype),"parseIdentifier",this).call(this,!0),this.assertNoSpace("Unexpected space in placeholder."),this.expect(o.placeholder),this.finishPlaceholder(s,t)}}},{key:"finishPlaceholder",value:function(t,e){var s=!(!t.expectedNode||"Placeholder"!==t.type);return t.expectedNode=e,s?t:this.finishNode(t,"Placeholder")}},{key:"getTokenFromCode",value:function(t){return 37===t&&37===this.input.charCodeAt(this.state.pos+1)?this.finishOp(o.placeholder,2):k(D(e.prototype),"getTokenFromCode",this).apply(this,arguments)}},{key:"parseExprAtom",value:function(){return this.parsePlaceholder("Expression")||k(D(e.prototype),"parseExprAtom",this).apply(this,arguments)}},{key:"parseIdentifier",value:function(){return this.parsePlaceholder("Identifier")||k(D(e.prototype),"parseIdentifier",this).apply(this,arguments)}},{key:"checkReservedWord",value:function(t){void 0!==t&&k(D(e.prototype),"checkReservedWord",this).apply(this,arguments)}},{key:"parseBindingAtom",value:function(){return this.parsePlaceholder("Pattern")||k(D(e.prototype),"parseBindingAtom",this).apply(this,arguments)}},{key:"checkLVal",value:function(t){"Placeholder"!==t.type&&k(D(e.prototype),"checkLVal",this).apply(this,arguments)}},{key:"toAssignable",value:function(t){return t&&"Placeholder"===t.type&&"Expression"===t.expectedNode?(t.expectedNode="Pattern",t):k(D(e.prototype),"toAssignable",this).apply(this,arguments)}},{key:"verifyBreakContinue",value:function(t){t.label&&"Placeholder"===t.label.type||k(D(e.prototype),"verifyBreakContinue",this).apply(this,arguments)}},{key:"parseExpressionStatement",value:function(t,s){if("Placeholder"!==s.type||s.extra&&s.extra.parenthesized)return k(D(e.prototype),"parseExpressionStatement",this).apply(this,arguments);if(this.match(o.colon)){var i=t;return i.label=this.finishPlaceholder(s,"Identifier"),this.next(),i.body=this.parseStatement("label"),this.finishNode(i,"LabeledStatement")}return this.semicolon(),t.name=s.name,this.finishPlaceholder(t,"Statement")}},{key:"parseBlock",value:function(){return this.parsePlaceholder("BlockStatement")||k(D(e.prototype),"parseBlock",this).apply(this,arguments)}},{key:"parseFunctionId",value:function(){return this.parsePlaceholder("Identifier")||k(D(e.prototype),"parseFunctionId",this).apply(this,arguments)}},{key:"parseClass",value:function(t,e,s){var i=e?"ClassDeclaration":"ClassExpression";this.next(),this.takeDecorators(t);var a=this.parsePlaceholder("Identifier");if(a)if(this.match(o._extends)||this.match(o.placeholder)||this.match(o.braceL))t.id=a;else{if(s||!e)return t.id=null,t.body=this.finishPlaceholder(a,"ClassBody"),this.finishNode(t,i);this.unexpected(null,"A class name is required")}else this.parseClassId(t,e,s);return this.parseClassSuper(t),t.body=this.parsePlaceholder("ClassBody")||this.parseClassBody(!!t.superClass),this.finishNode(t,i)}},{key:"parseExport",value:function(t){var s=this.parsePlaceholder("Identifier");if(!s)return k(D(e.prototype),"parseExport",this).apply(this,arguments);if(!this.isContextual("from")&&!this.match(o.comma))return t.specifiers=[],t.source=null,t.declaration=this.finishPlaceholder(s,"Declaration"),this.finishNode(t,"ExportNamedDeclaration");this.expectPlugin("exportDefaultFrom");var i=this.startNode();return i.exported=s,t.specifiers=[this.finishNode(i,"ExportDefaultSpecifier")],k(D(e.prototype),"parseExport",this).call(this,t)}},{key:"maybeParseExportDefaultSpecifier",value:function(t){return!!(t.specifiers&&t.specifiers.length>0)||k(D(e.prototype),"maybeParseExportDefaultSpecifier",this).apply(this,arguments)}},{key:"checkExport",value:function(t){var s=t.specifiers;s&&s.length&&(t.specifiers=s.filter((function(t){return"Placeholder"===t.exported.type}))),k(D(e.prototype),"checkExport",this).call(this,t),t.specifiers=s}},{key:"parseImport",value:function(t){var s=this.parsePlaceholder("Identifier");if(!s)return k(D(e.prototype),"parseImport",this).apply(this,arguments);if(t.specifiers=[],!this.isContextual("from")&&!this.match(o.comma))return t.source=this.finishPlaceholder(s,"StringLiteral"),this.semicolon(),this.finishNode(t,"ImportDeclaration");var i=this.startNodeAtNode(s);if(i.local=s,this.finishNode(i,"ImportDefaultSpecifier"),t.specifiers.push(i),this.eat(o.comma)){var a=this.maybeParseStarImportSpecifier(t);a||this.parseNamedImportSpecifiers(t)}return this.expectContextual("from"),t.source=this.parseImportSource(),this.semicolon(),this.finishNode(t,"ImportDeclaration")}},{key:"parseImportSource",value:function(){return this.parsePlaceholder("StringLiteral")||k(D(e.prototype),"parseImportSource",this).apply(this,arguments)}}]),e}(t)}},dt=Object.keys(pt),ft={sourceType:"script",sourceFilename:void 0,startLine:1,allowAwaitOutsideFunction:!1,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowSuperOutsideMethod:!1,allowUndeclaredExports:!1,plugins:[],strictMode:null,ranges:!1,tokens:!1,createParenthesizedExpressions:!1,errorRecovery:!1};var mt=function t(e,s){d(this,t),this.line=e,this.column=s},yt=function t(e,s){d(this,t),this.start=e,this.end=s};function Dt(t){return t[t.length-1]}var vt=function(t){function e(){return d(this,e),g(this,D(e).apply(this,arguments))}return y(e,t),m(e,[{key:"getLocationForPosition",value:function(t){return t===this.state.start?this.state.startLoc:t===this.state.lastTokStart?this.state.lastTokStartLoc:t===this.state.end?this.state.endLoc:t===this.state.lastTokEnd?this.state.lastTokEndLoc:function(t,e){var s,i=1,a=0;for(E.lastIndex=0;(s=E.exec(t))&&s.index<e;)i++,a=E.lastIndex;return new mt(i,e-a)}(this.input,t)}},{key:"raise",value:function(t,e){var s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=s.missingPluginNames,a=s.code,r=this.getLocationForPosition(t);e+=" (".concat(r.line,":").concat(r.column,")");var n=new SyntaxError(e);if(n.pos=t,n.loc=r,i&&(n.missingPlugin=i),void 0!==a&&(n.code=a),this.options.errorRecovery)return this.isLookahead||this.state.errors.push(n),n;throw n}}]),e}(function(t){function e(){return d(this,e),g(this,D(e).apply(this,arguments))}return y(e,t),m(e,[{key:"addComment",value:function(t){this.filename&&(t.loc.filename=this.filename),this.state.trailingComments.push(t),this.state.leadingComments.push(t)}},{key:"adjustCommentsAfterTrailingComma",value:function(t,e,s){if(0!==this.state.leadingComments.length){for(var i=null,a=e.length;null===i&&a>0;)i=e[--a];if(null!==i){for(var r=0;r<this.state.leadingComments.length;r++)this.state.leadingComments[r].end<this.state.commentPreviousNode.end&&(this.state.leadingComments.splice(r,1),r--);for(var n=[],o=0;o<this.state.leadingComments.length;o++){var h=this.state.leadingComments[o];h.end<t.end?(n.push(h),s||(this.state.leadingComments.splice(o,1),o--)):(void 0===t.trailingComments&&(t.trailingComments=[]),t.trailingComments.push(h))}s&&(this.state.leadingComments=[]),n.length>0?i.trailingComments=n:void 0!==i.trailingComments&&(i.trailingComments=[])}}}},{key:"processComment",value:function(t){if(!("Program"===t.type&&t.body.length>0)){var e,s,i,a,r,n=this.state.commentStack;if(this.state.trailingComments.length>0)this.state.trailingComments[0].start>=t.end?(i=this.state.trailingComments,this.state.trailingComments=[]):this.state.trailingComments.length=0;else if(n.length>0){var o=Dt(n);o.trailingComments&&o.trailingComments[0].start>=t.end&&(i=o.trailingComments,delete o.trailingComments)}for(n.length>0&&Dt(n).start>=t.start&&(e=n.pop());n.length>0&&Dt(n).start>=t.start;)s=n.pop();if(!s&&e&&(s=e),e)switch(t.type){case"ObjectExpression":this.adjustCommentsAfterTrailingComma(t,t.properties);break;case"ObjectPattern":this.adjustCommentsAfterTrailingComma(t,t.properties,!0);break;case"CallExpression":this.adjustCommentsAfterTrailingComma(t,t.arguments);break;case"ArrayExpression":this.adjustCommentsAfterTrailingComma(t,t.elements);break;case"ArrayPattern":this.adjustCommentsAfterTrailingComma(t,t.elements,!0)}else this.state.commentPreviousNode&&("ImportSpecifier"===this.state.commentPreviousNode.type&&"ImportSpecifier"!==t.type||"ExportSpecifier"===this.state.commentPreviousNode.type&&"ExportSpecifier"!==t.type)&&this.adjustCommentsAfterTrailingComma(t,[this.state.commentPreviousNode],!0);if(s){if(s.leadingComments)if(s!==t&&s.leadingComments.length>0&&Dt(s.leadingComments).end<=t.start)t.leadingComments=s.leadingComments,delete s.leadingComments;else for(a=s.leadingComments.length-2;a>=0;--a)if(s.leadingComments[a].end<=t.start){t.leadingComments=s.leadingComments.splice(0,a+1);break}}else if(this.state.leadingComments.length>0)if(Dt(this.state.leadingComments).end<=t.start){if(this.state.commentPreviousNode)for(r=0;r<this.state.leadingComments.length;r++)this.state.leadingComments[r].end<this.state.commentPreviousNode.end&&(this.state.leadingComments.splice(r,1),r--);this.state.leadingComments.length>0&&(t.leadingComments=this.state.leadingComments,this.state.leadingComments=[])}else{for(a=0;a<this.state.leadingComments.length&&!(this.state.leadingComments[a].end>t.start);a++);var h=this.state.leadingComments.slice(0,a);h.length&&(t.leadingComments=h),0===(i=this.state.leadingComments.slice(a)).length&&(i=null)}this.state.commentPreviousNode=t,i&&(i.length&&i[0].start>=t.start&&Dt(i).end<=t.end?t.innerComments=i:t.trailingComments=i),n.push(t)}}}]),e}(function(){function t(){d(this,t),this.sawUnambiguousESM=!1,this.ambiguousScriptDifferentAst=!1}return m(t,[{key:"hasPlugin",value:function(t){return this.plugins.has(t)}},{key:"getPluginOption",value:function(t,e){if(this.hasPlugin(t))return this.plugins.get(t)[e]}}]),t}())),xt=function(){function t(){d(this,t),this.errors=[],this.potentialArrowAt=-1,this.noArrowAt=[],this.noArrowParamsConversionAt=[],this.inParameters=!1,this.maybeInArrowParameters=!1,this.inPipeline=!1,this.inType=!1,this.noAnonFunctionType=!1,this.inPropertyName=!1,this.inClassProperty=!1,this.hasFlowComment=!1,this.isIterator=!1,this.topicContext={maxNumOfResolvableTopics:0,maxTopicIndex:null},this.soloAwait=!1,this.inFSharpPipelineDirectBody=!1,this.classLevel=0,this.labels=[],this.decoratorStack=[[]],this.yieldPos=-1,this.awaitPos=-1,this.tokens=[],this.comments=[],this.trailingComments=[],this.leadingComments=[],this.commentStack=[],this.commentPreviousNode=null,this.pos=0,this.lineStart=0,this.type=o.eof,this.value=null,this.start=0,this.end=0,this.lastTokEndLoc=null,this.lastTokStartLoc=null,this.lastTokStart=0,this.lastTokEnd=0,this.context=[F.braceStatement],this.exprAllowed=!0,this.containsEsc=!1,this.containsOctal=!1,this.octalPosition=null,this.exportedIdentifiers=[],this.invalidTemplateEscapePosition=null}return m(t,[{key:"init",value:function(t){this.strict=!1!==t.strictMode&&"module"===t.sourceType,this.curLine=t.startLine,this.startLoc=this.endLoc=this.curPosition()}},{key:"curPosition",value:function(){return new mt(this.curLine,this.pos-this.lineStart)}},{key:"clone",value:function(e){for(var s=new t,i=Object.keys(this),a=0,r=i.length;a<r;a++){var n=i[a],o=this[n];!e&&Array.isArray(o)&&(o=o.slice()),s[n]=o}return s}}]),t}(),gt=function(t){return t>=48&&t<=57},kt=new Set(["g","m","s","i","y","u"]),Pt={decBinOct:[46,66,69,79,95,98,101,111],hex:[46,88,95,120]},bt={bin:[48,49]};bt.oct=[].concat(b(bt.bin),[50,51,52,53,54,55]),bt.dec=[].concat(b(bt.oct),[56,57]),bt.hex=[].concat(b(bt.dec),[65,66,67,68,69,70,97,98,99,100,101,102]);var Et=function t(e){d(this,t),this.type=e.type,this.value=e.value,this.start=e.start,this.end=e.end,this.loc=new yt(e.startLoc,e.endLoc)},Ct=/^('|")((?:\\?.)*?)\1/,At=function(t){function e(){return d(this,e),g(this,D(e).apply(this,arguments))}return y(e,t),m(e,[{key:"addExtra",value:function(t,e,s){t&&((t.extra=t.extra||{})[e]=s)}},{key:"isRelational",value:function(t){return this.match(o.relational)&&this.state.value===t}},{key:"isLookaheadRelational",value:function(t){var e=this.nextTokenStart();if(this.input.charAt(e)===t){if(e+1===this.input.length)return!0;var s=this.input.charCodeAt(e+1);return s!==t.charCodeAt(0)&&61!==s}return!1}},{key:"expectRelational",value:function(t){this.isRelational(t)?this.next():this.unexpected(null,o.relational)}},{key:"eatRelational",value:function(t){return!!this.isRelational(t)&&(this.next(),!0)}},{key:"isContextual",value:function(t){return this.match(o.name)&&this.state.value===t&&!this.state.containsEsc}},{key:"isUnparsedContextual",value:function(t,e){var s=t+e.length;return this.input.slice(t,s)===e&&(s===this.input.length||!X(this.input.charCodeAt(s)))}},{key:"isLookaheadContextual",value:function(t){var e=this.nextTokenStart();return this.isUnparsedContextual(e,t)}},{key:"eatContextual",value:function(t){return this.isContextual(t)&&this.eat(o.name)}},{key:"expectContextual",value:function(t,e){this.eatContextual(t)||this.unexpected(null,e)}},{key:"canInsertSemicolon",value:function(){return this.match(o.eof)||this.match(o.braceR)||this.hasPrecedingLineBreak()}},{key:"hasPrecedingLineBreak",value:function(){return v.test(this.input.slice(this.state.lastTokEnd,this.state.start))}},{key:"isLineTerminator",value:function(){return this.eat(o.semi)||this.canInsertSemicolon()}},{key:"semicolon",value:function(){this.isLineTerminator()||this.unexpected(null,o.semi)}},{key:"expect",value:function(t,e){this.eat(t)||this.unexpected(e,t)}},{key:"assertNoSpace",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Unexpected space.";this.state.start>this.state.lastTokEnd&&this.raise(this.state.lastTokEnd,t)}},{key:"unexpected",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Unexpected token";throw"string"!=typeof e&&(e='Unexpected token, expected "'.concat(e.label,'"')),this.raise(null!=t?t:this.state.start,e)}},{key:"expectPlugin",value:function(t,e){if(!this.hasPlugin(t))throw this.raise(null!=e?e:this.state.start,"This experimental syntax requires enabling the parser plugin: '".concat(t,"'"),{missingPluginNames:[t]});return!0}},{key:"expectOnePlugin",value:function(t,e){var s=this;if(!t.some((function(t){return s.hasPlugin(t)})))throw this.raise(null!=e?e:this.state.start,"This experimental syntax requires enabling one of the following parser plugin(s): '".concat(t.join(", "),"'"),{missingPluginNames:t})}},{key:"checkYieldAwaitInDefaultParams",value:function(){-1!==this.state.yieldPos&&(-1===this.state.awaitPos||this.state.yieldPos<this.state.awaitPos)&&this.raise(this.state.yieldPos,"Yield cannot be used as name inside a generator function"),-1!==this.state.awaitPos&&this.raise(this.state.awaitPos,"Await cannot be used as name inside an async function")}},{key:"strictDirective",value:function(t){for(;;){A.lastIndex=t,t+=A.exec(this.input)[0].length;var e=Ct.exec(this.input.slice(t));if(!e)break;if("use strict"===e[2])return!0;t+=e[0].length,A.lastIndex=t,t+=A.exec(this.input)[0].length,";"===this.input[t]&&t++}return!1}},{key:"tryParse",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.state.clone(),s={node:null};try{var i=t((function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;throw s.node=t,s}));if(this.state.errors.length>e.errors.length){var a=this.state;return this.state=e,{node:i,error:a.errors[e.errors.length],thrown:!1,aborted:!1,failState:a}}return{node:i,error:null,thrown:!1,aborted:!1,failState:null}}catch(t){var r=this.state;if(this.state=e,t instanceof SyntaxError)return{node:null,error:t,thrown:!0,aborted:!1,failState:r};if(t===s)return{node:s.node,error:null,thrown:!1,aborted:!0,failState:r};throw t}}}]),e}(function(t){function e(t,s){var i;return d(this,e),(i=g(this,D(e).call(this))).state=new xt,i.state.init(t),i.input=s,i.length=s.length,i.isLookahead=!1,i}return y(e,t),m(e,[{key:"next",value:function(){this.isLookahead||(this.checkKeywordEscapes(),this.options.tokens&&this.state.tokens.push(new Et(this.state))),this.state.lastTokEnd=this.state.end,this.state.lastTokStart=this.state.start,this.state.lastTokEndLoc=this.state.endLoc,this.state.lastTokStartLoc=this.state.startLoc,this.nextToken()}},{key:"eat",value:function(t){return!!this.match(t)&&(this.next(),!0)}},{key:"match",value:function(t){return this.state.type===t}},{key:"lookahead",value:function(){var t=this.state;this.state=t.clone(!0),this.isLookahead=!0,this.next(),this.isLookahead=!1;var e=this.state;return this.state=t,e}},{key:"nextTokenStart",value:function(){var t=this.state.pos;return A.lastIndex=t,t+A.exec(this.input)[0].length}},{key:"lookaheadCharCode",value:function(){return this.input.charCodeAt(this.nextTokenStart())}},{key:"setStrict",value:function(t){if(this.state.strict=t,this.match(o.num)||this.match(o.string)){for(this.state.pos=this.state.start;this.state.pos<this.state.lineStart;)this.state.lineStart=this.input.lastIndexOf("\n",this.state.lineStart-2)+1,--this.state.curLine;this.nextToken()}}},{key:"curContext",value:function(){return this.state.context[this.state.context.length-1]}},{key:"nextToken",value:function(){var t=this.curContext();t&&t.preserveSpace||this.skipSpace(),this.state.containsOctal=!1,this.state.octalPosition=null,this.state.start=this.state.pos,this.state.startLoc=this.state.curPosition(),this.state.pos>=this.length?this.finishToken(o.eof):t.override?t.override(this):this.getTokenFromCode(this.input.codePointAt(this.state.pos))}},{key:"pushComment",value:function(t,e,s,i,a,r){var n={type:t?"CommentBlock":"CommentLine",value:e,start:s,end:i,loc:new yt(a,r)};this.options.tokens&&this.state.tokens.push(n),this.state.comments.push(n),this.addComment(n)}},{key:"skipBlockComment",value:function(){var t,e=this.state.curPosition(),s=this.state.pos,i=this.input.indexOf("*/",this.state.pos+2);if(-1===i)throw this.raise(s,"Unterminated comment");for(this.state.pos=i+2,E.lastIndex=s;(t=E.exec(this.input))&&t.index<this.state.pos;)++this.state.curLine,this.state.lineStart=t.index+t[0].length;this.isLookahead||this.pushComment(!0,this.input.slice(s+2,i),s,this.state.pos,e,this.state.curPosition())}},{key:"skipLineComment",value:function(t){var e=this.state.pos,s=this.state.curPosition(),i=this.input.charCodeAt(this.state.pos+=t);if(this.state.pos<this.length)for(;!C(i)&&++this.state.pos<this.length;)i=this.input.charCodeAt(this.state.pos);this.isLookahead||this.pushComment(!1,this.input.slice(e+t,this.state.pos),e,this.state.pos,s,this.state.curPosition())}},{key:"skipSpace",value:function(){t:for(;this.state.pos<this.length;){var t=this.input.charCodeAt(this.state.pos);switch(t){case 32:case 160:case 9:++this.state.pos;break;case 13:10===this.input.charCodeAt(this.state.pos+1)&&++this.state.pos;case 10:case 8232:case 8233:++this.state.pos,++this.state.curLine,this.state.lineStart=this.state.pos;break;case 47:switch(this.input.charCodeAt(this.state.pos+1)){case 42:this.skipBlockComment();break;case 47:this.skipLineComment(2);break;default:break t}break;default:if(!w(t))break t;++this.state.pos}}}},{key:"finishToken",value:function(t,e){this.state.end=this.state.pos,this.state.endLoc=this.state.curPosition();var s=this.state.type;this.state.type=t,this.state.value=e,this.isLookahead||this.updateContext(s)}},{key:"readToken_numberSign",value:function(){if(0!==this.state.pos||!this.readToken_interpreter()){var t=this.state.pos+1,e=this.input.charCodeAt(t);if(e>=48&&e<=57)throw this.raise(this.state.pos,"Unexpected digit after hash token");if((this.hasPlugin("classPrivateProperties")||this.hasPlugin("classPrivateMethods"))&&this.state.classLevel>0)return++this.state.pos,void this.finishToken(o.hash);if("smart"!==this.getPluginOption("pipelineOperator","proposal"))throw this.raise(this.state.pos,"Unexpected character '#'");this.finishOp(o.hash,1)}}},{key:"readToken_dot",value:function(){var t=this.input.charCodeAt(this.state.pos+1);t>=48&&t<=57?this.readNumber(!0):46===t&&46===this.input.charCodeAt(this.state.pos+2)?(this.state.pos+=3,this.finishToken(o.ellipsis)):(++this.state.pos,this.finishToken(o.dot))}},{key:"readToken_slash",value:function(){if(this.state.exprAllowed&&!this.state.inType)return++this.state.pos,void this.readRegexp();61===this.input.charCodeAt(this.state.pos+1)?this.finishOp(o.assign,2):this.finishOp(o.slash,1)}},{key:"readToken_interpreter",value:function(){if(0!==this.state.pos||this.length<2)return!1;var t=this.state.pos;this.state.pos+=1;var e=this.input.charCodeAt(this.state.pos);if(33!==e)return!1;for(;!C(e)&&++this.state.pos<this.length;)e=this.input.charCodeAt(this.state.pos);var s=this.input.slice(t+2,this.state.pos);return this.finishToken(o.interpreterDirective,s),!0}},{key:"readToken_mult_modulo",value:function(t){var e=42===t?o.star:o.modulo,s=1,i=this.input.charCodeAt(this.state.pos+1),a=this.state.exprAllowed;42===t&&42===i&&(s++,i=this.input.charCodeAt(this.state.pos+2),e=o.exponent),61!==i||a||(s++,e=o.assign),this.finishOp(e,s)}},{key:"readToken_pipe_amp",value:function(t){var e=this.input.charCodeAt(this.state.pos+1);e!==t?124!==t||62!==e?61!==e?this.finishOp(124===t?o.bitwiseOR:o.bitwiseAND,1):this.finishOp(o.assign,2):this.finishOp(o.pipeline,2):61===this.input.charCodeAt(this.state.pos+2)?this.finishOp(o.assign,3):this.finishOp(124===t?o.logicalOR:o.logicalAND,2)}},{key:"readToken_caret",value:function(){61===this.input.charCodeAt(this.state.pos+1)?this.finishOp(o.assign,2):this.finishOp(o.bitwiseXOR,1)}},{key:"readToken_plus_min",value:function(t){var e=this.input.charCodeAt(this.state.pos+1);if(e===t)return 45!==e||this.inModule||62!==this.input.charCodeAt(this.state.pos+2)||0!==this.state.lastTokEnd&&!v.test(this.input.slice(this.state.lastTokEnd,this.state.pos))?void this.finishOp(o.incDec,2):(this.skipLineComment(3),this.skipSpace(),void this.nextToken());61===e?this.finishOp(o.assign,2):this.finishOp(o.plusMin,1)}},{key:"readToken_lt_gt",value:function(t){var e=this.input.charCodeAt(this.state.pos+1),s=1;return e===t?(s=62===t&&62===this.input.charCodeAt(this.state.pos+2)?3:2,61===this.input.charCodeAt(this.state.pos+s)?void this.finishOp(o.assign,s+1):void this.finishOp(o.bitShift,s)):33!==e||60!==t||this.inModule||45!==this.input.charCodeAt(this.state.pos+2)||45!==this.input.charCodeAt(this.state.pos+3)?(61===e&&(s=2),void this.finishOp(o.relational,s)):(this.skipLineComment(4),this.skipSpace(),void this.nextToken())}},{key:"readToken_eq_excl",value:function(t){var e=this.input.charCodeAt(this.state.pos+1);if(61!==e)return 61===t&&62===e?(this.state.pos+=2,void this.finishToken(o.arrow)):void this.finishOp(61===t?o.eq:o.bang,1);this.finishOp(o.equality,61===this.input.charCodeAt(this.state.pos+2)?3:2)}},{key:"readToken_question",value:function(){var t=this.input.charCodeAt(this.state.pos+1),e=this.input.charCodeAt(this.state.pos+2);63!==t||this.state.inType?46!==t||e>=48&&e<=57?(++this.state.pos,this.finishToken(o.question)):(this.state.pos+=2,this.finishToken(o.questionDot)):61===e?this.finishOp(o.assign,3):this.finishOp(o.nullishCoalescing,2)}},{key:"getTokenFromCode",value:function(t){switch(t){case 46:return void this.readToken_dot();case 40:return++this.state.pos,void this.finishToken(o.parenL);case 41:return++this.state.pos,void this.finishToken(o.parenR);case 59:return++this.state.pos,void this.finishToken(o.semi);case 44:return++this.state.pos,void this.finishToken(o.comma);case 91:return++this.state.pos,void this.finishToken(o.bracketL);case 93:return++this.state.pos,void this.finishToken(o.bracketR);case 123:return++this.state.pos,void this.finishToken(o.braceL);case 125:return++this.state.pos,void this.finishToken(o.braceR);case 58:return void(this.hasPlugin("functionBind")&&58===this.input.charCodeAt(this.state.pos+1)?this.finishOp(o.doubleColon,2):(++this.state.pos,this.finishToken(o.colon)));case 63:return void this.readToken_question();case 96:return++this.state.pos,void this.finishToken(o.backQuote);case 48:var e=this.input.charCodeAt(this.state.pos+1);if(120===e||88===e)return void this.readRadixNumber(16);if(111===e||79===e)return void this.readRadixNumber(8);if(98===e||66===e)return void this.readRadixNumber(2);case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return void this.readNumber(!1);case 34:case 39:return void this.readString(t);case 47:return void this.readToken_slash();case 37:case 42:return void this.readToken_mult_modulo(t);case 124:case 38:return void this.readToken_pipe_amp(t);case 94:return void this.readToken_caret();case 43:case 45:return void this.readToken_plus_min(t);case 60:case 62:return void this.readToken_lt_gt(t);case 61:case 33:return void this.readToken_eq_excl(t);case 126:return void this.finishOp(o.tilde,1);case 64:return++this.state.pos,void this.finishToken(o.at);case 35:return void this.readToken_numberSign();case 92:return void this.readWord();default:if(K(t))return void this.readWord()}throw this.raise(this.state.pos,"Unexpected character '".concat(String.fromCodePoint(t),"'"))}},{key:"finishOp",value:function(t,e){var s=this.input.slice(this.state.pos,this.state.pos+e);this.state.pos+=e,this.finishToken(t,s)}},{key:"readRegexp",value:function(){for(var t,e,s=this.state.pos;;){if(this.state.pos>=this.length)throw this.raise(s,"Unterminated regular expression");var i=this.input.charAt(this.state.pos);if(v.test(i))throw this.raise(s,"Unterminated regular expression");if(t)t=!1;else{if("["===i)e=!0;else if("]"===i&&e)e=!1;else if("/"===i&&!e)break;t="\\"===i}++this.state.pos}var a=this.input.slice(s,this.state.pos);++this.state.pos;for(var r="";this.state.pos<this.length;){var n=this.input[this.state.pos],h=this.input.codePointAt(this.state.pos);if(kt.has(n))r.indexOf(n)>-1&&this.raise(this.state.pos+1,"Duplicate regular expression flag");else{if(!X(h)&&92!==h)break;this.raise(this.state.pos+1,"Invalid regular expression flag")}++this.state.pos,r+=n}this.finishToken(o.regexp,{pattern:a,flags:r})}},{key:"readInt",value:function(t,e,s){for(var i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=this.state.pos,r=16===t?Pt.hex:Pt.decBinOct,n=16===t?bt.hex:10===t?bt.dec:8===t?bt.oct:bt.bin,o=!1,h=0,u=0,l=null==e?1/0:e;u<l;++u){var c=this.input.charCodeAt(this.state.pos),p=void 0;if(this.hasPlugin("numericSeparator")&&95===c){var d=this.input.charCodeAt(this.state.pos-1),f=this.input.charCodeAt(this.state.pos+1);-1===n.indexOf(f)?this.raise(this.state.pos,"A numeric separator is only allowed between two digits"):(r.indexOf(d)>-1||r.indexOf(f)>-1||Number.isNaN(f))&&this.raise(this.state.pos,"A numeric separator is only allowed between two digits"),i||this.raise(this.state.pos,"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences"),++this.state.pos}else{if((p=c>=97?c-97+10:c>=65?c-65+10:gt(c)?c-48:1/0)>=t)if(this.options.errorRecovery&&p<=9)p=0,this.raise(this.state.start+u+2,"Expected number in radix "+t);else{if(!s)break;p=0,o=!0}++this.state.pos,h=h*t+p}}return this.state.pos===a||null!=e&&this.state.pos-a!==e||o?null:h}},{key:"readRadixNumber",value:function(t){var e=this.state.pos,s=!1;this.state.pos+=2;var i=this.readInt(t);if(null==i&&this.raise(this.state.start+2,"Expected number in radix "+t),this.hasPlugin("bigInt")&&110===this.input.charCodeAt(this.state.pos)&&(++this.state.pos,s=!0),K(this.input.codePointAt(this.state.pos)))throw this.raise(this.state.pos,"Identifier directly after number");if(s){var a=this.input.slice(e,this.state.pos).replace(/[_n]/g,"");this.finishToken(o.bigint,a)}else this.finishToken(o.num,i)}},{key:"readNumber",value:function(t){var e=this.state.pos,s=!1,i=!1,a=!1;t||null!==this.readInt(10)||this.raise(e,"Invalid number");var r=this.state.pos-e>=2&&48===this.input.charCodeAt(e);r&&(this.state.strict&&this.raise(e,"Legacy octal literals are not allowed in strict mode"),/[89]/.test(this.input.slice(e,this.state.pos))&&(r=!1,a=!0));var n=this.input.charCodeAt(this.state.pos);if(46!==n||r||(++this.state.pos,this.readInt(10),s=!0,n=this.input.charCodeAt(this.state.pos)),69!==n&&101!==n||r||(43!==(n=this.input.charCodeAt(++this.state.pos))&&45!==n||++this.state.pos,null===this.readInt(10)&&this.raise(e,"Invalid number"),s=!0,n=this.input.charCodeAt(this.state.pos)),this.hasPlugin("numericSeparator")&&(r||a)){var h=this.input.slice(e,this.state.pos).indexOf("_");h>0&&this.raise(h+e,"Numeric separator can not be used after leading 0")}if(this.hasPlugin("bigInt")&&110===n&&((s||r||a)&&this.raise(e,"Invalid BigIntLiteral"),++this.state.pos,i=!0),K(this.input.codePointAt(this.state.pos)))throw this.raise(this.state.pos,"Identifier directly after number");var u=this.input.slice(e,this.state.pos).replace(/[_n]/g,"");if(i)this.finishToken(o.bigint,u);else{var l=r?parseInt(u,8):parseFloat(u);this.finishToken(o.num,l)}}},{key:"readCodePoint",value:function(t){var e;if(123===this.input.charCodeAt(this.state.pos)){var s=++this.state.pos;if(e=this.readHexChar(this.input.indexOf("}",this.state.pos)-this.state.pos,!0,t),++this.state.pos,null===e)--this.state.invalidTemplateEscapePosition;else if(e>1114111){if(!t)return this.state.invalidTemplateEscapePosition=s-2,null;this.raise(s,"Code point out of bounds")}}else e=this.readHexChar(4,!1,t);return e}},{key:"readString",value:function(t){for(var e="",s=++this.state.pos;;){if(this.state.pos>=this.length)throw this.raise(this.state.start,"Unterminated string constant");var i=this.input.charCodeAt(this.state.pos);if(i===t)break;if(92===i)e+=this.input.slice(s,this.state.pos),e+=this.readEscapedChar(!1),s=this.state.pos;else if(8232===i||8233===i)++this.state.pos,++this.state.curLine;else{if(C(i))throw this.raise(this.state.start,"Unterminated string constant");++this.state.pos}}e+=this.input.slice(s,this.state.pos++),this.finishToken(o.string,e)}},{key:"readTmplToken",value:function(){for(var t="",e=this.state.pos,s=!1;;){if(this.state.pos>=this.length)throw this.raise(this.state.start,"Unterminated template");var i=this.input.charCodeAt(this.state.pos);if(96===i||36===i&&123===this.input.charCodeAt(this.state.pos+1))return this.state.pos===this.state.start&&this.match(o.template)?36===i?(this.state.pos+=2,void this.finishToken(o.dollarBraceL)):(++this.state.pos,void this.finishToken(o.backQuote)):(t+=this.input.slice(e,this.state.pos),void this.finishToken(o.template,s?null:t));if(92===i){t+=this.input.slice(e,this.state.pos);var a=this.readEscapedChar(!0);null===a?s=!0:t+=a,e=this.state.pos}else if(C(i)){switch(t+=this.input.slice(e,this.state.pos),++this.state.pos,i){case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:t+="\n";break;default:t+=String.fromCharCode(i)}++this.state.curLine,this.state.lineStart=this.state.pos,e=this.state.pos}else++this.state.pos}}},{key:"readEscapedChar",value:function(t){var e=!t,s=this.input.charCodeAt(++this.state.pos);switch(++this.state.pos,s){case 110:return"\n";case 114:return"\r";case 120:var i=this.readHexChar(2,!1,e);return null===i?null:String.fromCharCode(i);case 117:var a=this.readCodePoint(e);return null===a?null:String.fromCodePoint(a);case 116:return"\t";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:this.state.lineStart=this.state.pos,++this.state.curLine;case 8232:case 8233:return"";case 56:case 57:if(t){var r=this.state.pos-1;return this.state.invalidTemplateEscapePosition=r,null}default:if(s>=48&&s<=55){var n=this.state.pos-1,o=this.input.substr(this.state.pos-1,3).match(/^[0-7]+/)[0],h=parseInt(o,8);h>255&&(o=o.slice(0,-1),h=parseInt(o,8)),this.state.pos+=o.length-1;var u=this.input.charCodeAt(this.state.pos);if("0"!==o||56===u||57===u){if(t)return this.state.invalidTemplateEscapePosition=n,null;this.state.strict?this.raise(n,"Octal literal in strict mode"):this.state.containsOctal||(this.state.containsOctal=!0,this.state.octalPosition=n)}return String.fromCharCode(h)}return String.fromCharCode(s)}}},{key:"readHexChar",value:function(t,e,s){var i=this.state.pos,a=this.readInt(16,t,e,!1);return null===a&&(s?this.raise(i,"Bad character escape sequence"):(this.state.pos=i-1,this.state.invalidTemplateEscapePosition=i-1)),a}},{key:"readWord1",value:function(){var t="";this.state.containsEsc=!1;for(var e=this.state.pos,s=this.state.pos;this.state.pos<this.length;){var i=this.input.codePointAt(this.state.pos);if(X(i))this.state.pos+=i<=65535?1:2;else if(this.state.isIterator&&64===i)++this.state.pos;else{if(92!==i)break;this.state.containsEsc=!0,t+=this.input.slice(s,this.state.pos);var a=this.state.pos,r=this.state.pos===e?K:X;if(117!==this.input.charCodeAt(++this.state.pos)){this.raise(this.state.pos,"Expecting Unicode escape sequence \\uXXXX");continue}++this.state.pos;var n=this.readCodePoint(!0);null!==n&&(r(n)||this.raise(a,"Invalid Unicode escape"),t+=String.fromCodePoint(n)),s=this.state.pos}}return t+this.input.slice(s,this.state.pos)}},{key:"isIterator",value:function(t){return"@@iterator"===t||"@@asyncIterator"===t}},{key:"readWord",value:function(){var t=this.readWord1(),e=a.get(t)||o.name;!this.state.isIterator||this.isIterator(t)&&this.state.inType||this.raise(this.state.pos,"Invalid identifier ".concat(t)),this.finishToken(e,t)}},{key:"checkKeywordEscapes",value:function(){var t=this.state.type.keyword;t&&this.state.containsEsc&&this.raise(this.state.start,"Escape sequence in keyword ".concat(t))}},{key:"braceIsBlock",value:function(t){var e=this.curContext();return e===F.functionExpression||e===F.functionStatement||(t!==o.colon||e!==F.braceStatement&&e!==F.braceExpression?t===o._return||t===o.name&&this.state.exprAllowed?v.test(this.input.slice(this.state.lastTokEnd,this.state.start)):t===o._else||t===o.semi||t===o.eof||t===o.parenR||t===o.arrow||(t===o.braceL?e===F.braceStatement:t!==o._var&&t!==o._const&&t!==o.name&&(t===o.relational||!this.state.exprAllowed)):!e.isExpr)}},{key:"updateContext",value:function(t){var e,s=this.state.type;!s.keyword||t!==o.dot&&t!==o.questionDot?(e=s.updateContext)?e.call(this,t):this.state.exprAllowed=s.beforeExpr:this.state.exprAllowed=!1}}]),e}(vt)),wt=function(){function t(e,s,i){d(this,t),this.type="",this.start=s,this.end=0,this.loc=new yt(i),e&&e.options.ranges&&(this.range=[s,0]),e&&e.filename&&(this.loc.filename=e.filename)}return m(t,[{key:"__clone",value:function(){for(var e=new t,s=Object.keys(this),i=0,a=s.length;i<a;i++){var r=s[i];"leadingComments"!==r&&"trailingComments"!==r&&"innerComments"!==r&&(e[r]=this[r])}return e}}]),t}(),Tt={kind:"loop"},Ft={kind:"switch"},Nt=function(t){function e(t,s){var i;d(this,e),t=function(t){for(var e={},s=0,i=Object.keys(ft);s<i.length;s++){var a=i[s];e[a]=t&&null!=t[a]?t[a]:ft[a]}return e}(t);var a=(i=g(this,D(e).call(this,t,s))).getScopeHandler();return i.options=t,i.inModule="module"===i.options.sourceType,i.scope=new a(i.raise.bind(x(i)),i.inModule),i.plugins=function(t){for(var e=new Map,s=0;s<t.length;s++){var i=t[s],a=P(Array.isArray(i)?i:[i,{}],2),r=a[0],n=a[1];e.has(r)||e.set(r,n||{})}return e}(i.options.plugins),i.filename=t.sourceFilename,i}return y(e,t),m(e,[{key:"getScopeHandler",value:function(){return at}},{key:"parse",value:function(){this.scope.enter(1);var t=this.startNode(),e=this.startNode();return this.nextToken(),t.errors=null,this.parseTopLevel(t,e),t.errors=this.state.errors,t}}]),e}(function(t){function e(){return d(this,e),g(this,D(e).apply(this,arguments))}return y(e,t),m(e,[{key:"parseTopLevel",value:function(t,e){if(e.sourceType=this.options.sourceType,e.interpreter=this.parseInterpreterDirective(),this.parseBlockBody(e,!0,!0,o.eof),this.inModule&&!this.options.allowUndeclaredExports&&this.scope.undefinedExports.size>0)for(var s=0,i=Array.from(this.scope.undefinedExports);s<i.length;s++){var a=P(i[s],1)[0],r=this.scope.undefinedExports.get(a);this.raise(r,"Export '".concat(a,"' is not defined"))}return t.program=this.finishNode(e,"Program"),t.comments=this.state.comments,this.options.tokens&&(t.tokens=this.state.tokens),this.finishNode(t,"File")}},{key:"stmtToDirective",value:function(t){var e=t.expression,s=this.startNodeAt(e.start,e.loc.start),i=this.startNodeAt(t.start,t.loc.start),a=this.input.slice(e.start,e.end),r=s.value=a.slice(1,-1);return this.addExtra(s,"raw",a),this.addExtra(s,"rawValue",r),i.value=this.finishNodeAt(s,"DirectiveLiteral",e.end,e.loc.end),this.finishNodeAt(i,"Directive",t.end,t.loc.end)}},{key:"parseInterpreterDirective",value:function(){if(!this.match(o.interpreterDirective))return null;var t=this.startNode();return t.value=this.state.value,this.next(),this.finishNode(t,"InterpreterDirective")}},{key:"isLet",value:function(t){if(!this.isContextual("let"))return!1;var e=this.nextTokenStart(),s=this.input.charCodeAt(e);if(91===s)return!0;if(t)return!1;if(123===s)return!0;if(K(s)){for(var i=e+1;X(this.input.charCodeAt(i));)++i;var a=this.input.slice(e,i);if(!R.test(a))return!0}return!1}},{key:"parseStatement",value:function(t,e){return this.match(o.at)&&this.parseDecorators(!0),this.parseStatementContent(t,e)}},{key:"parseStatementContent",value:function(t,e){var s,i=this.state.type,a=this.startNode();switch(this.isLet(t)&&(i=o._var,s="let"),i){case o._break:case o._continue:return this.parseBreakContinueStatement(a,i.keyword);case o._debugger:return this.parseDebuggerStatement(a);case o._do:return this.parseDoStatement(a);case o._for:return this.parseForStatement(a);case o._function:if(46===this.lookaheadCharCode())break;return t&&(this.state.strict?this.raise(this.state.start,"In strict mode code, functions can only be declared at top level or inside a block"):"if"!==t&&"label"!==t&&this.raise(this.state.start,"In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement")),this.parseFunctionStatement(a,!1,!t);case o._class:return t&&this.unexpected(),this.parseClass(a,!0);case o._if:return this.parseIfStatement(a);case o._return:return this.parseReturnStatement(a);case o._switch:return this.parseSwitchStatement(a);case o._throw:return this.parseThrowStatement(a);case o._try:return this.parseTryStatement(a);case o._const:case o._var:return s=s||this.state.value,t&&"var"!==s&&this.raise(this.state.start,"Lexical declaration cannot appear in a single-statement context"),this.parseVarStatement(a,s);case o._while:return this.parseWhileStatement(a);case o._with:return this.parseWithStatement(a);case o.braceL:return this.parseBlock();case o.semi:return this.parseEmptyStatement(a);case o._export:case o._import:var r,n=this.lookaheadCharCode();if(40===n||46===n)break;return this.options.allowImportExportEverywhere||e||this.raise(this.state.start,"'import' and 'export' may only appear at the top level"),this.next(),i===o._import?"ImportDeclaration"!==(r=this.parseImport(a)).type||r.importKind&&"value"!==r.importKind||(this.sawUnambiguousESM=!0):("ExportNamedDeclaration"!==(r=this.parseExport(a)).type||r.exportKind&&"value"!==r.exportKind)&&("ExportAllDeclaration"!==r.type||r.exportKind&&"value"!==r.exportKind)&&"ExportDefaultDeclaration"!==r.type||(this.sawUnambiguousESM=!0),this.assertModuleNodeAllowed(a),r;default:if(this.isAsyncFunction())return t&&this.raise(this.state.start,"Async functions can only be declared at the top level or inside a block"),this.next(),this.parseFunctionStatement(a,!0,!t)}var h=this.state.value,u=this.parseExpression();return i===o.name&&"Identifier"===u.type&&this.eat(o.colon)?this.parseLabeledStatement(a,h,u,t):this.parseExpressionStatement(a,u)}},{key:"assertModuleNodeAllowed",value:function(t){this.options.allowImportExportEverywhere||this.inModule||this.raise(t.start,"'import' and 'export' may appear only with 'sourceType: \"module\"'",{code:"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"})}},{key:"takeDecorators",value:function(t){var e=this.state.decoratorStack[this.state.decoratorStack.length-1];e.length&&(t.decorators=e,this.resetStartLocationFromNode(t,e[0]),this.state.decoratorStack[this.state.decoratorStack.length-1]=[])}},{key:"canHaveLeadingDecorator",value:function(){return this.match(o._class)}},{key:"parseDecorators",value:function(t){for(var e=this.state.decoratorStack[this.state.decoratorStack.length-1];this.match(o.at);){var s=this.parseDecorator();e.push(s)}if(this.match(o._export))t||this.unexpected(),this.hasPlugin("decorators")&&!this.getPluginOption("decorators","decoratorsBeforeExport")&&this.raise(this.state.start,"Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead.");else if(!this.canHaveLeadingDecorator())throw this.raise(this.state.start,"Leading decorators must be attached to a class declaration")}},{key:"parseDecorator",value:function(){this.expectOnePlugin(["decorators-legacy","decorators"]);var t=this.startNode();if(this.next(),this.hasPlugin("decorators")){this.state.decoratorStack.push([]);var e,s=this.state.start,i=this.state.startLoc;if(this.eat(o.parenL))e=this.parseExpression(),this.expect(o.parenR);else for(e=this.parseIdentifier(!1);this.eat(o.dot);){var a=this.startNodeAt(s,i);a.object=e,a.property=this.parseIdentifier(!0),a.computed=!1,e=this.finishNode(a,"MemberExpression")}t.expression=this.parseMaybeDecoratorArguments(e),this.state.decoratorStack.pop()}else t.expression=this.parseExprSubscripts();return this.finishNode(t,"Decorator")}},{key:"parseMaybeDecoratorArguments",value:function(t){if(this.eat(o.parenL)){var e=this.startNodeAtNode(t);return e.callee=t,e.arguments=this.parseCallExpressionArguments(o.parenR,!1),this.toReferencedList(e.arguments),this.finishNode(e,"CallExpression")}return t}},{key:"parseBreakContinueStatement",value:function(t,e){var s="break"===e;return this.next(),this.isLineTerminator()?t.label=null:(t.label=this.parseIdentifier(),this.semicolon()),this.verifyBreakContinue(t,e),this.finishNode(t,s?"BreakStatement":"ContinueStatement")}},{key:"verifyBreakContinue",value:function(t,e){var s,i="break"===e;for(s=0;s<this.state.labels.length;++s){var a=this.state.labels[s];if(null==t.label||a.name===t.label.name){if(null!=a.kind&&(i||"loop"===a.kind))break;if(t.label&&i)break}}s===this.state.labels.length&&this.raise(t.start,"Unsyntactic "+e)}},{key:"parseDebuggerStatement",value:function(t){return this.next(),this.semicolon(),this.finishNode(t,"DebuggerStatement")}},{key:"parseHeaderExpression",value:function(){this.expect(o.parenL);var t=this.parseExpression();return this.expect(o.parenR),t}},{key:"parseDoStatement",value:function(t){var e=this;return this.next(),this.state.labels.push(Tt),t.body=this.withTopicForbiddingContext((function(){return e.parseStatement("do")})),this.state.labels.pop(),this.expect(o._while),t.test=this.parseHeaderExpression(),this.eat(o.semi),this.finishNode(t,"DoWhileStatement")}},{key:"parseForStatement",value:function(t){this.next(),this.state.labels.push(Tt);var e=-1;if(this.isAwaitAllowed()&&this.eatContextual("await")&&(e=this.state.lastTokStart),this.scope.enter(0),this.expect(o.parenL),this.match(o.semi))return e>-1&&this.unexpected(e),this.parseFor(t,null);var s=this.isLet();if(this.match(o._var)||this.match(o._const)||s){var i=this.startNode(),a=s?"let":this.state.value;return this.next(),this.parseVar(i,!0,a),this.finishNode(i,"VariableDeclaration"),(this.match(o._in)||this.isContextual("of"))&&1===i.declarations.length?this.parseForIn(t,i,e):(e>-1&&this.unexpected(e),this.parseFor(t,i))}var r={start:0},n=this.parseExpression(!0,r);if(this.match(o._in)||this.isContextual("of")){var h=this.isContextual("of")?"for-of statement":"for-in statement";return this.toAssignable(n,void 0,h),this.checkLVal(n,void 0,void 0,h),this.parseForIn(t,n,e)}return r.start&&this.unexpected(r.start),e>-1&&this.unexpected(e),this.parseFor(t,n)}},{key:"parseFunctionStatement",value:function(t,e,s){return this.next(),this.parseFunction(t,1|(s?0:2),e)}},{key:"parseIfStatement",value:function(t){return this.next(),t.test=this.parseHeaderExpression(),t.consequent=this.parseStatement("if"),t.alternate=this.eat(o._else)?this.parseStatement("if"):null,this.finishNode(t,"IfStatement")}},{key:"parseReturnStatement",value:function(t){return this.scope.inFunction||this.options.allowReturnOutsideFunction||this.raise(this.state.start,"'return' outside of function"),this.next(),this.isLineTerminator()?t.argument=null:(t.argument=this.parseExpression(),this.semicolon()),this.finishNode(t,"ReturnStatement")}},{key:"parseSwitchStatement",value:function(t){this.next(),t.discriminant=this.parseHeaderExpression();var e,s,i=t.cases=[];for(this.expect(o.braceL),this.state.labels.push(Ft),this.scope.enter(0);!this.match(o.braceR);)if(this.match(o._case)||this.match(o._default)){var a=this.match(o._case);e&&this.finishNode(e,"SwitchCase"),i.push(e=this.startNode()),e.consequent=[],this.next(),a?e.test=this.parseExpression():(s&&this.raise(this.state.lastTokStart,"Multiple default clauses"),s=!0,e.test=null),this.expect(o.colon)}else e?e.consequent.push(this.parseStatement(null)):this.unexpected();return this.scope.exit(),e&&this.finishNode(e,"SwitchCase"),this.next(),this.state.labels.pop(),this.finishNode(t,"SwitchStatement")}},{key:"parseThrowStatement",value:function(t){return this.next(),v.test(this.input.slice(this.state.lastTokEnd,this.state.start))&&this.raise(this.state.lastTokEnd,"Illegal newline after throw"),t.argument=this.parseExpression(),this.semicolon(),this.finishNode(t,"ThrowStatement")}},{key:"parseTryStatement",value:function(t){var e=this;if(this.next(),t.block=this.parseBlock(),t.handler=null,this.match(o._catch)){var s=this.startNode();if(this.next(),this.match(o.parenL)){this.expect(o.parenL),s.param=this.parseBindingAtom();var i="Identifier"===s.param.type;this.scope.enter(i?32:0),this.checkLVal(s.param,9,null,"catch clause"),this.expect(o.parenR)}else s.param=null,this.scope.enter(0);s.body=this.withTopicForbiddingContext((function(){return e.parseBlock(!1,!1)})),this.scope.exit(),t.handler=this.finishNode(s,"CatchClause")}return t.finalizer=this.eat(o._finally)?this.parseBlock():null,t.handler||t.finalizer||this.raise(t.start,"Missing catch or finally clause"),this.finishNode(t,"TryStatement")}},{key:"parseVarStatement",value:function(t,e){return this.next(),this.parseVar(t,!1,e),this.semicolon(),this.finishNode(t,"VariableDeclaration")}},{key:"parseWhileStatement",value:function(t){var e=this;return this.next(),t.test=this.parseHeaderExpression(),this.state.labels.push(Tt),t.body=this.withTopicForbiddingContext((function(){return e.parseStatement("while")})),this.state.labels.pop(),this.finishNode(t,"WhileStatement")}},{key:"parseWithStatement",value:function(t){var e=this;return this.state.strict&&this.raise(this.state.start,"'with' in strict mode"),this.next(),t.object=this.parseHeaderExpression(),t.body=this.withTopicForbiddingContext((function(){return e.parseStatement("with")})),this.finishNode(t,"WithStatement")}},{key:"parseEmptyStatement",value:function(t){return this.next(),this.finishNode(t,"EmptyStatement")}},{key:"parseLabeledStatement",value:function(t,e,s,i){for(var a=0,r=this.state.labels;a<r.length;a++){r[a].name===e&&this.raise(s.start,"Label '".concat(e,"' is already declared"))}for(var n=this.state.type.isLoop?"loop":this.match(o._switch)?"switch":null,h=this.state.labels.length-1;h>=0;h--){var u=this.state.labels[h];if(u.statementStart!==t.start)break;u.statementStart=this.state.start,u.kind=n}return this.state.labels.push({name:e,kind:n,statementStart:this.state.start}),t.body=this.parseStatement(i?-1===i.indexOf("label")?i+"label":i:"label"),this.state.labels.pop(),t.label=s,this.finishNode(t,"LabeledStatement")}},{key:"parseExpressionStatement",value:function(t,e){return t.expression=e,this.semicolon(),this.finishNode(t,"ExpressionStatement")}},{key:"parseBlock",value:function(){var t=arguments.length>0&&void 0!==arguments[0]&&arguments[0],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],s=this.startNode();return this.expect(o.braceL),e&&this.scope.enter(0),this.parseBlockBody(s,t,!1,o.braceR),e&&this.scope.exit(),this.finishNode(s,"BlockStatement")}},{key:"isValidDirective",value:function(t){return"ExpressionStatement"===t.type&&"StringLiteral"===t.expression.type&&!t.expression.extra.parenthesized}},{key:"parseBlockBody",value:function(t,e,s,i){var a=t.body=[],r=t.directives=[];this.parseBlockOrModuleBlockBody(a,e?r:void 0,s,i)}},{key:"parseBlockOrModuleBlockBody",value:function(t,e,s,i){for(var a,r,n=!1;!this.eat(i);){n||!this.state.containsOctal||r||(r=this.state.octalPosition);var o=this.parseStatement(null,s);if(e&&!n&&this.isValidDirective(o)){var h=this.stmtToDirective(o);e.push(h),void 0===a&&"use strict"===h.value.value&&(a=this.state.strict,this.setStrict(!0),r&&this.raise(r,"Octal literal in strict mode"))}else n=!0,t.push(o)}!1===a&&this.setStrict(!1)}},{key:"parseFor",value:function(t,e){var s=this;return t.init=e,this.expect(o.semi),t.test=this.match(o.semi)?null:this.parseExpression(),this.expect(o.semi),t.update=this.match(o.parenR)?null:this.parseExpression(),this.expect(o.parenR),t.body=this.withTopicForbiddingContext((function(){return s.parseStatement("for")})),this.scope.exit(),this.state.labels.pop(),this.finishNode(t,"ForStatement")}},{key:"parseForIn",value:function(t,e,s){var i=this,a=this.match(o._in);return this.next(),a?s>-1&&this.unexpected(s):t.await=s>-1,"VariableDeclaration"!==e.type||null==e.declarations[0].init||a&&!this.state.strict&&"var"===e.kind&&"Identifier"===e.declarations[0].id.type?"AssignmentPattern"===e.type&&this.raise(e.start,"Invalid left-hand side in for-loop"):this.raise(e.start,"".concat(a?"for-in":"for-of"," loop variable declaration may not have an initializer")),t.left=e,t.right=a?this.parseExpression():this.parseMaybeAssign(),this.expect(o.parenR),t.body=this.withTopicForbiddingContext((function(){return i.parseStatement("for")})),this.scope.exit(),this.state.labels.pop(),this.finishNode(t,a?"ForInStatement":"ForOfStatement")}},{key:"parseVar",value:function(t,e,s){var i=t.declarations=[],a=this.hasPlugin("typescript");for(t.kind=s;;){var r=this.startNode();if(this.parseVarId(r,s),this.eat(o.eq)?r.init=this.parseMaybeAssign(e):("const"!==s||this.match(o._in)||this.isContextual("of")?"Identifier"===r.id.type||e&&(this.match(o._in)||this.isContextual("of"))||this.raise(this.state.lastTokEnd,"Complex binding patterns require an initialization value"):a||this.unexpected(),r.init=null),i.push(this.finishNode(r,"VariableDeclarator")),!this.eat(o.comma))break}return t}},{key:"parseVarId",value:function(t,e){t.id=this.parseBindingAtom(),this.checkLVal(t.id,"var"===e?5:9,void 0,"variable declaration","var"!==e)}},{key:"parseFunction",value:function(t){var e=this,s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=1&s,r=2&s,n=!(!a||4&s);this.initFunction(t,i),this.match(o.star)&&r&&this.raise(this.state.start,"Generators can only be declared at the top level or inside a block"),t.generator=this.eat(o.star),a&&(t.id=this.parseFunctionId(n));var h=this.state.maybeInArrowParameters,u=this.state.inClassProperty,l=this.state.yieldPos,c=this.state.awaitPos;return this.state.maybeInArrowParameters=!1,this.state.inClassProperty=!1,this.state.yieldPos=-1,this.state.awaitPos=-1,this.scope.enter(p(t.async,t.generator)),a||(t.id=this.parseFunctionId()),this.parseFunctionParams(t),this.withTopicForbiddingContext((function(){e.parseFunctionBodyAndFinish(t,a?"FunctionDeclaration":"FunctionExpression")})),this.scope.exit(),a&&!r&&this.registerFunctionStatementId(t),this.state.maybeInArrowParameters=h,this.state.inClassProperty=u,this.state.yieldPos=l,this.state.awaitPos=c,t}},{key:"parseFunctionId",value:function(t){return t||this.match(o.name)?this.parseIdentifier():null}},{key:"parseFunctionParams",value:function(t,e){var s=this.state.inParameters;this.state.inParameters=!0,this.expect(o.parenL),t.params=this.parseBindingList(o.parenR,41,!1,e),this.state.inParameters=s,this.checkYieldAwaitInDefaultParams()}},{key:"registerFunctionStatementId",value:function(t){t.id&&this.scope.declareName(t.id.name,this.state.strict||t.generator||t.async?this.scope.treatFunctionsAsVar?5:9:17,t.id.start)}},{key:"parseClass",value:function(t,e,s){this.next(),this.takeDecorators(t);var i=this.state.strict;return this.state.strict=!0,this.parseClassId(t,e,s),this.parseClassSuper(t),t.body=this.parseClassBody(!!t.superClass),this.state.strict=i,this.finishNode(t,e?"ClassDeclaration":"ClassExpression")}},{key:"isClassProperty",value:function(){return this.match(o.eq)||this.match(o.semi)||this.match(o.braceR)}},{key:"isClassMethod",value:function(){return this.match(o.parenL)}},{key:"isNonstaticConstructor",value:function(t){return!(t.computed||t.static||"constructor"!==t.key.name&&"constructor"!==t.key.value)}},{key:"parseClassBody",value:function(t){var e=this;this.state.classLevel++;var s={hadConstructor:!1},i=[],a=this.startNode();if(a.body=[],this.expect(o.braceL),this.withTopicForbiddingContext((function(){for(;!e.eat(o.braceR);)if(e.eat(o.semi)){if(i.length>0)throw e.raise(e.state.lastTokEnd,"Decorators must not be followed by a semicolon")}else if(e.match(o.at))i.push(e.parseDecorator());else{var r=e.startNode();i.length&&(r.decorators=i,e.resetStartLocationFromNode(r,i[0]),i=[]),e.parseClassMember(a,r,s,t),"constructor"===r.kind&&r.decorators&&r.decorators.length>0&&e.raise(r.start,"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?")}})),i.length)throw this.raise(this.state.start,"You have trailing decorators with no method");return this.state.classLevel--,this.finishNode(a,"ClassBody")}},{key:"parseClassMember",value:function(t,e,s,i){var a=!1,r=this.state.containsEsc;if(this.match(o.name)&&"static"===this.state.value){var n=this.parseIdentifier(!0);if(this.isClassMethod()){var h=e;return h.kind="method",h.computed=!1,h.key=n,h.static=!1,void this.pushClassMethod(t,h,!1,!1,!1,!1)}if(this.isClassProperty()){var u=e;return u.computed=!1,u.key=n,u.static=!1,void t.body.push(this.parseClassProperty(u))}if(r)throw this.unexpected();a=!0}this.parseClassMemberWithIsStatic(t,e,s,a,i)}},{key:"parseClassMemberWithIsStatic",value:function(t,e,s,i,a){var r=e,n=e,h=e,u=e,l=r,c=r;if(e.static=i,this.eat(o.star))return l.kind="method",this.parseClassPropertyName(l),"PrivateName"===l.key.type?void this.pushClassPrivateMethod(t,n,!0,!1):(this.isNonstaticConstructor(r)&&this.raise(r.key.start,"Constructor can't be a generator"),void this.pushClassMethod(t,r,!0,!1,!1,!1));var p=this.state.containsEsc,d=this.parseClassPropertyName(e),f="PrivateName"===d.type,m="Identifier"===d.type,y=this.state.start;if(this.parsePostMemberNameModifiers(c),this.isClassMethod()){if(l.kind="method",f)return void this.pushClassPrivateMethod(t,n,!1,!1);var D=this.isNonstaticConstructor(r),v=!1;D&&(r.kind="constructor",s.hadConstructor&&!this.hasPlugin("typescript")&&this.raise(d.start,"Duplicate constructor in the same class"),s.hadConstructor=!0,v=a),this.pushClassMethod(t,r,!1,!1,D,v)}else if(this.isClassProperty())f?this.pushClassPrivateProperty(t,u):this.pushClassProperty(t,h);else if(!m||"async"!==d.name||p||this.isLineTerminator())!m||"get"!==d.name&&"set"!==d.name||p||this.match(o.star)&&this.isLineTerminator()?this.isLineTerminator()?f?this.pushClassPrivateProperty(t,u):this.pushClassProperty(t,h):this.unexpected():(l.kind=d.name,this.parseClassPropertyName(r),"PrivateName"===l.key.type?this.pushClassPrivateMethod(t,n,!1,!1):(this.isNonstaticConstructor(r)&&this.raise(r.key.start,"Constructor can't have get/set modifier"),this.pushClassMethod(t,r,!1,!1,!1,!1)),this.checkGetterSetterParams(r));else{var x=this.eat(o.star);c.optional&&this.unexpected(y),l.kind="method",this.parseClassPropertyName(l),"PrivateName"===l.key.type?this.pushClassPrivateMethod(t,n,x,!0):(this.isNonstaticConstructor(r)&&this.raise(r.key.start,"Constructor can't be an async function"),this.pushClassMethod(t,r,x,!0,!1,!1))}}},{key:"parseClassPropertyName",value:function(t){var e=this.parsePropertyName(t);return t.computed||!t.static||"prototype"!==e.name&&"prototype"!==e.value||this.raise(e.start,"Classes may not have static property named prototype"),"PrivateName"===e.type&&"constructor"===e.id.name&&this.raise(e.start,"Classes may not have a private field named '#constructor'"),e}},{key:"pushClassProperty",value:function(t,e){e.computed||"constructor"!==e.key.name&&"constructor"!==e.key.value||this.raise(e.key.start,"Classes may not have a field named 'constructor'"),t.body.push(this.parseClassProperty(e))}},{key:"pushClassPrivateProperty",value:function(t,e){this.expectPlugin("classPrivateProperties",e.key.start),t.body.push(this.parseClassPrivateProperty(e))}},{key:"pushClassMethod",value:function(t,e,s,i,a,r){t.body.push(this.parseMethod(e,s,i,a,r,"ClassMethod",!0))}},{key:"pushClassPrivateMethod",value:function(t,e,s,i){this.expectPlugin("classPrivateMethods",e.key.start),t.body.push(this.parseMethod(e,s,i,!1,!1,"ClassPrivateMethod",!0))}},{key:"parsePostMemberNameModifiers",value:function(t){}},{key:"parseAccessModifier",value:function(){}},{key:"parseClassPrivateProperty",value:function(t){return this.state.inClassProperty=!0,this.scope.enter(320),t.value=this.eat(o.eq)?this.parseMaybeAssign():null,this.semicolon(),this.state.inClassProperty=!1,this.scope.exit(),this.finishNode(t,"ClassPrivateProperty")}},{key:"parseClassProperty",value:function(t){return t.typeAnnotation||this.expectPlugin("classProperties"),this.state.inClassProperty=!0,this.scope.enter(320),this.match(o.eq)?(this.expectPlugin("classProperties"),this.next(),t.value=this.parseMaybeAssign()):t.value=null,this.semicolon(),this.state.inClassProperty=!1,this.scope.exit(),this.finishNode(t,"ClassProperty")}},{key:"parseClassId",value:function(t,e,s){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:139;this.match(o.name)?(t.id=this.parseIdentifier(),e&&this.checkLVal(t.id,i,void 0,"class name")):s||!e?t.id=null:this.unexpected(null,"A class name is required")}},{key:"parseClassSuper",value:function(t){t.superClass=this.eat(o._extends)?this.parseExprSubscripts():null}},{key:"parseExport",value:function(t){var e=this.maybeParseExportDefaultSpecifier(t),s=!e||this.eat(o.comma),i=s&&this.eatExportStar(t),a=i&&this.maybeParseExportNamespaceSpecifier(t),r=s&&(!a||this.eat(o.comma)),n=e||i;if(i&&!a)return e&&this.unexpected(),this.parseExportFrom(t,!0),this.finishNode(t,"ExportAllDeclaration");var h,u=this.maybeParseExportNamedSpecifiers(t);if(e&&s&&!i&&!u||a&&r&&!u)throw this.unexpected(null,o.braceL);if(n||u?(h=!1,this.parseExportFrom(t,n)):h=this.maybeParseExportDeclaration(t),n||u||h)return this.checkExport(t,!0,!1,!!t.source),this.finishNode(t,"ExportNamedDeclaration");if(this.eat(o._default))return t.declaration=this.parseExportDefaultExpression(),this.checkExport(t,!0,!0),this.finishNode(t,"ExportDefaultDeclaration");throw this.unexpected(null,o.braceL)}},{key:"eatExportStar",value:function(t){return this.eat(o.star)}},{key:"maybeParseExportDefaultSpecifier",value:function(t){if(this.isExportDefaultSpecifier()){this.expectPlugin("exportDefaultFrom");var e=this.startNode();return e.exported=this.parseIdentifier(!0),t.specifiers=[this.finishNode(e,"ExportDefaultSpecifier")],!0}return!1}},{key:"maybeParseExportNamespaceSpecifier",value:function(t){if(this.isContextual("as")){t.specifiers||(t.specifiers=[]);var e=this.startNodeAt(this.state.lastTokStart,this.state.lastTokStartLoc);return this.next(),e.exported=this.parseIdentifier(!0),t.specifiers.push(this.finishNode(e,"ExportNamespaceSpecifier")),!0}return!1}},{key:"maybeParseExportNamedSpecifiers",value:function(t){var e;return!!this.match(o.braceL)&&(t.specifiers||(t.specifiers=[]),(e=t.specifiers).push.apply(e,b(this.parseExportSpecifiers())),t.source=null,t.declaration=null,!0)}},{key:"maybeParseExportDeclaration",value:function(t){if(this.shouldParseExportDeclaration()){if(this.isContextual("async")){var e=this.nextTokenStart();this.isUnparsedContextual(e,"function")||this.unexpected(e,'Unexpected token, expected "function"')}return t.specifiers=[],t.source=null,t.declaration=this.parseExportDeclaration(t),!0}return!1}},{key:"isAsyncFunction",value:function(){if(!this.isContextual("async"))return!1;var t=this.nextTokenStart();return!v.test(this.input.slice(this.state.pos,t))&&this.isUnparsedContextual(t,"function")}},{key:"parseExportDefaultExpression",value:function(){var t=this.startNode(),e=this.isAsyncFunction();if(this.match(o._function)||e)return this.next(),e&&this.next(),this.parseFunction(t,5,e);if(this.match(o._class))return this.parseClass(t,!0,!0);if(this.match(o.at))return this.hasPlugin("decorators")&&this.getPluginOption("decorators","decoratorsBeforeExport")&&this.raise(this.state.start,"Decorators must be placed *before* the 'export' keyword. You can set the 'decoratorsBeforeExport' option to false to use the 'export @decorator class {}' syntax"),this.parseDecorators(!1),this.parseClass(t,!0,!0);if(this.match(o._const)||this.match(o._var)||this.isLet())throw this.raise(this.state.start,"Only expressions, functions or classes are allowed as the `default` export.");var s=this.parseMaybeAssign();return this.semicolon(),s}},{key:"parseExportDeclaration",value:function(t){return this.parseStatement(null)}},{key:"isExportDefaultSpecifier",value:function(){if(this.match(o.name))return"async"!==this.state.value&&"let"!==this.state.value;if(!this.match(o._default))return!1;var t=this.nextTokenStart();return 44===this.input.charCodeAt(t)||this.isUnparsedContextual(t,"from")}},{key:"parseExportFrom",value:function(t,e){this.eatContextual("from")?(t.source=this.parseImportSource(),this.checkExport(t)):e?this.unexpected():t.source=null,this.semicolon()}},{key:"shouldParseExportDeclaration",value:function(){if(this.match(o.at)&&(this.expectOnePlugin(["decorators","decorators-legacy"]),this.hasPlugin("decorators"))){if(!this.getPluginOption("decorators","decoratorsBeforeExport"))return!0;this.unexpected(this.state.start,"Decorators must be placed *before* the 'export' keyword. You can set the 'decoratorsBeforeExport' option to false to use the 'export @decorator class {}' syntax")}return"var"===this.state.type.keyword||"const"===this.state.type.keyword||"function"===this.state.type.keyword||"class"===this.state.type.keyword||this.isLet()||this.isAsyncFunction()}},{key:"checkExport",value:function(t,e,s,i){if(e)if(s)this.checkDuplicateExports(t,"default");else if(t.specifiers&&t.specifiers.length)for(var a=0,r=t.specifiers;a<r.length;a++){var n=r[a];this.checkDuplicateExports(n,n.exported.name),!i&&n.local&&(this.checkReservedWord(n.local.name,n.local.start,!0,!1),this.scope.checkLocalExport(n.local))}else if(t.declaration)if("FunctionDeclaration"===t.declaration.type||"ClassDeclaration"===t.declaration.type){var o=t.declaration.id;if(!o)throw new Error("Assertion failure");this.checkDuplicateExports(t,o.name)}else if("VariableDeclaration"===t.declaration.type)for(var h=0,u=t.declaration.declarations;h<u.length;h++){var l=u[h];this.checkDeclaration(l.id)}if(this.state.decoratorStack[this.state.decoratorStack.length-1].length){var c=t.declaration&&("ClassDeclaration"===t.declaration.type||"ClassExpression"===t.declaration.type);if(!t.declaration||!c)throw this.raise(t.start,"You can only use decorators on an export when exporting a class");this.takeDecorators(t.declaration)}}},{key:"checkDeclaration",value:function(t){if("Identifier"===t.type)this.checkDuplicateExports(t,t.name);else if("ObjectPattern"===t.type)for(var e=0,s=t.properties;e<s.length;e++){var i=s[e];this.checkDeclaration(i)}else if("ArrayPattern"===t.type)for(var a=0,r=t.elements;a<r.length;a++){var n=r[a];n&&this.checkDeclaration(n)}else"ObjectProperty"===t.type?this.checkDeclaration(t.value):"RestElement"===t.type?this.checkDeclaration(t.argument):"AssignmentPattern"===t.type&&this.checkDeclaration(t.left)}},{key:"checkDuplicateExports",value:function(t,e){this.state.exportedIdentifiers.indexOf(e)>-1&&this.raise(t.start,"default"===e?"Only one default export allowed per module.":"`".concat(e,"` has already been exported. Exported identifiers must be unique.")),this.state.exportedIdentifiers.push(e)}},{key:"parseExportSpecifiers",value:function(){var t=[],e=!0;for(this.expect(o.braceL);!this.eat(o.braceR);){if(e)e=!1;else if(this.expect(o.comma),this.eat(o.braceR))break;var s=this.startNode();s.local=this.parseIdentifier(!0),s.exported=this.eatContextual("as")?this.parseIdentifier(!0):s.local.__clone(),t.push(this.finishNode(s,"ExportSpecifier"))}return t}},{key:"parseImport",value:function(t){if(t.specifiers=[],!this.match(o.string)){var e=!this.maybeParseDefaultImportSpecifier(t)||this.eat(o.comma),s=e&&this.maybeParseStarImportSpecifier(t);e&&!s&&this.parseNamedImportSpecifiers(t),this.expectContextual("from")}return t.source=this.parseImportSource(),this.semicolon(),this.finishNode(t,"ImportDeclaration")}},{key:"parseImportSource",value:function(){return this.match(o.string)||this.unexpected(),this.parseExprAtom()}},{key:"shouldParseDefaultImport",value:function(t){return this.match(o.name)}},{key:"parseImportSpecifierLocal",value:function(t,e,s,i){e.local=this.parseIdentifier(),this.checkLVal(e.local,9,void 0,i),t.specifiers.push(this.finishNode(e,s))}},{key:"maybeParseDefaultImportSpecifier",value:function(t){return!!this.shouldParseDefaultImport(t)&&(this.parseImportSpecifierLocal(t,this.startNode(),"ImportDefaultSpecifier","default import specifier"),!0)}},{key:"maybeParseStarImportSpecifier",value:function(t){if(this.match(o.star)){var e=this.startNode();return this.next(),this.expectContextual("as"),this.parseImportSpecifierLocal(t,e,"ImportNamespaceSpecifier","import namespace specifier"),!0}return!1}},{key:"parseNamedImportSpecifiers",value:function(t){var e=!0;for(this.expect(o.braceL);!this.eat(o.braceR);){if(e)e=!1;else{if(this.eat(o.colon))throw this.raise(this.state.start,"ES2015 named imports do not destructure. Use another statement for destructuring after the import.");if(this.expect(o.comma),this.eat(o.braceR))break}this.parseImportSpecifier(t)}}},{key:"parseImportSpecifier",value:function(t){var e=this.startNode();e.imported=this.parseIdentifier(!0),this.eatContextual("as")?e.local=this.parseIdentifier():(this.checkReservedWord(e.imported.name,e.start,!0,!0),e.local=e.imported.__clone()),this.checkLVal(e.local,9,void 0,"import specifier"),t.specifiers.push(this.finishNode(e,"ImportSpecifier"))}}]),e}(function(t){function e(){return d(this,e),g(this,D(e).apply(this,arguments))}return y(e,t),m(e,[{key:"checkDuplicatedProto",value:function(t,e){if(!("SpreadElement"===t.type||t.computed||t.kind||t.shorthand)){var s=t.key;"__proto__"===("Identifier"===s.type?s.name:String(s.value))&&(e.used&&!e.start&&(e.start=s.start),e.used=!0)}}},{key:"getExpression",value:function(){this.scope.enter(1),this.nextToken();var t=this.parseExpression();return this.match(o.eof)||this.unexpected(),t.comments=this.state.comments,t.errors=this.state.errors,t}},{key:"parseExpression",value:function(t,e){var s=this.state.start,i=this.state.startLoc,a=this.parseMaybeAssign(t,e);if(this.match(o.comma)){var r=this.startNodeAt(s,i);for(r.expressions=[a];this.eat(o.comma);)r.expressions.push(this.parseMaybeAssign(t,e));return this.toReferencedList(r.expressions),this.finishNode(r,"SequenceExpression")}return a}},{key:"parseMaybeAssign",value:function(t,e,s,i){var a,r=this.state.start,n=this.state.startLoc;if(this.isContextual("yield")){if(this.scope.inGenerator){var h=this.parseYield(t);return s&&(h=s.call(this,h,r,n)),h}this.state.exprAllowed=!1}e?a=!1:(e={start:0},a=!0),(this.match(o.parenL)||this.match(o.name))&&(this.state.potentialArrowAt=this.state.start);var u=this.parseMaybeConditional(t,e,i);if(s&&(u=s.call(this,u,r,n)),this.state.type.isAssign){var l=this.startNodeAt(r,n),c=this.state.value;l.operator=c,"??="===c&&(this.expectPlugin("nullishCoalescingOperator"),this.expectPlugin("logicalAssignment")),"||="!==c&&"&&="!==c||this.expectPlugin("logicalAssignment"),l.left=this.match(o.eq)?this.toAssignable(u,void 0,"assignment expression"):u,e.start>=l.left.start&&(e.start=0),this.checkLVal(u,void 0,void 0,"assignment expression");var p,d=function t(e){return"ParenthesizedExpression"===e.type?t(e.expression):e}(u);return"ObjectPattern"===d.type?p="`({a}) = 0` use `({a} = 0)`":"ArrayPattern"===d.type&&(p="`([a]) = 0` use `([a] = 0)`"),p&&(u.extra&&u.extra.parenthesized||"ParenthesizedExpression"===u.type)&&this.raise(d.start,"You're trying to assign to a parenthesized expression, eg. instead of ".concat(p)),this.next(),l.right=this.parseMaybeAssign(t),this.finishNode(l,"AssignmentExpression")}return a&&e.start&&this.unexpected(e.start),u}},{key:"parseMaybeConditional",value:function(t,e,s){var i=this.state.start,a=this.state.startLoc,r=this.state.potentialArrowAt,n=this.parseExprOps(t,e);return"ArrowFunctionExpression"===n.type&&n.start===r?n:e&&e.start?n:this.parseConditional(n,t,i,a,s)}},{key:"parseConditional",value:function(t,e,s,i,a){if(this.eat(o.question)){var r=this.startNodeAt(s,i);return r.test=t,r.consequent=this.parseMaybeAssign(),this.expect(o.colon),r.alternate=this.parseMaybeAssign(e),this.finishNode(r,"ConditionalExpression")}return t}},{key:"parseExprOps",value:function(t,e){var s=this.state.start,i=this.state.startLoc,a=this.state.potentialArrowAt,r=this.parseMaybeUnary(e);return"ArrowFunctionExpression"===r.type&&r.start===a?r:e&&e.start?r:this.parseExprOp(r,s,i,-1,t)}},{key:"parseExprOp",value:function(t,e,s,i,a){var r=this.state.type.binop;if(!(null==r||a&&this.match(o._in))&&r>i){var n=this.state.value;if("|>"===n&&this.state.inFSharpPipelineDirectBody)return t;var h=this.startNodeAt(e,s);h.left=t,h.operator=n,"**"!==n||"UnaryExpression"!==t.type||!this.options.createParenthesizedExpressions&&t.extra&&t.extra.parenthesized||this.raise(t.argument.start,"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.");var u=this.state.type;if(u===o.pipeline?(this.expectPlugin("pipelineOperator"),this.state.inPipeline=!0,this.checkPipelineAtInfixOperator(t,e)):u===o.nullishCoalescing&&this.expectPlugin("nullishCoalescingOperator"),this.next(),u===o.pipeline&&"minimal"===this.getPluginOption("pipelineOperator","proposal")&&this.match(o.name)&&"await"===this.state.value&&this.scope.inAsync)throw this.raise(this.state.start,'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal');if(h.right=this.parseExprOpRightExpr(u,r,a),u===o.nullishCoalescing){if(!("LogicalExpression"!==t.type||"??"===t.operator||t.extra&&t.extra.parenthesized))throw this.raise(t.start,"Nullish coalescing operator(??) requires parens when mixing with logical operators");if(!("LogicalExpression"!==h.right.type||"??"===h.right.operator||h.right.extra&&h.right.extra.parenthesized))throw this.raise(h.right.start,"Nullish coalescing operator(??) requires parens when mixing with logical operators")}return this.finishNode(h,u===o.logicalOR||u===o.logicalAND||u===o.nullishCoalescing?"LogicalExpression":"BinaryExpression"),this.parseExprOp(h,e,s,i,a)}return t}},{key:"parseExprOpRightExpr",value:function(t,e,s){var i=this,a=this.state.start,r=this.state.startLoc;switch(t){case o.pipeline:switch(this.getPluginOption("pipelineOperator","proposal")){case"smart":return this.withTopicPermittingContext((function(){return i.parseSmartPipelineBody(i.parseExprOpBaseRightExpr(t,e,s),a,r)}));case"fsharp":return this.withSoloAwaitPermittingContext((function(){return i.parseFSharpPipelineBody(e,s)}))}default:return this.parseExprOpBaseRightExpr(t,e,s)}}},{key:"parseExprOpBaseRightExpr",value:function(t,e,s){var i=this.state.start,a=this.state.startLoc;return this.parseExprOp(this.parseMaybeUnary(),i,a,t.rightAssociative?e-1:e,s)}},{key:"parseMaybeUnary",value:function(t){if(this.isContextual("await")&&this.isAwaitAllowed())return this.parseAwait();if(this.state.type.prefix){var e=this.startNode(),s=this.match(o.incDec);if(e.operator=this.state.value,e.prefix=!0,"throw"===e.operator&&this.expectPlugin("throwExpressions"),this.next(),e.argument=this.parseMaybeUnary(),t&&t.start&&this.unexpected(t.start),s)this.checkLVal(e.argument,void 0,void 0,"prefix operation");else if(this.state.strict&&"delete"===e.operator){var i=e.argument;"Identifier"===i.type?this.raise(e.start,"Deleting local variable in strict mode"):"MemberExpression"===i.type&&"PrivateName"===i.property.type&&this.raise(e.start,"Deleting a private field is not allowed")}return this.finishNode(e,s?"UpdateExpression":"UnaryExpression")}var a=this.state.start,r=this.state.startLoc,n=this.parseExprSubscripts(t);if(t&&t.start)return n;for(;this.state.type.postfix&&!this.canInsertSemicolon();){var h=this.startNodeAt(a,r);h.operator=this.state.value,h.prefix=!1,h.argument=n,this.checkLVal(n,void 0,void 0,"postfix operation"),this.next(),n=this.finishNode(h,"UpdateExpression")}return n}},{key:"parseExprSubscripts",value:function(t){var e=this.state.start,s=this.state.startLoc,i=this.state.potentialArrowAt,a=this.parseExprAtom(t);return"ArrowFunctionExpression"===a.type&&a.start===i?a:t&&t.start?a:this.parseSubscripts(a,e,s)}},{key:"parseSubscripts",value:function(t,e,s,i){var a={optionalChainMember:!1,maybeAsyncArrow:this.atPossibleAsync(t),stop:!1};do{t=this.parseSubscript(t,e,s,i,a),a.maybeAsyncArrow=!1}while(!a.stop);return t}},{key:"parseSubscript",value:function(t,e,s,i,a){if(!i&&this.eat(o.doubleColon)){var r=this.startNodeAt(e,s);return r.object=t,r.callee=this.parseNoCallExpr(),a.stop=!0,this.parseSubscripts(this.finishNode(r,"BindExpression"),e,s,i)}if(this.match(o.questionDot)){if(this.expectPlugin("optionalChaining"),a.optionalChainMember=!0,i&&40===this.lookaheadCharCode())return a.stop=!0,t;this.next();var n=this.startNodeAt(e,s);return this.eat(o.bracketL)?(n.object=t,n.property=this.parseExpression(),n.computed=!0,n.optional=!0,this.expect(o.bracketR),this.finishNode(n,"OptionalMemberExpression")):this.eat(o.parenL)?(n.callee=t,n.arguments=this.parseCallExpressionArguments(o.parenR,!1),n.optional=!0,this.finishCallExpression(n,!0)):(n.object=t,n.property=this.parseIdentifier(!0),n.computed=!1,n.optional=!0,this.finishNode(n,"OptionalMemberExpression"))}if(this.eat(o.dot)){var h=this.startNodeAt(e,s);return h.object=t,h.property=this.parseMaybePrivateName(),h.computed=!1,"PrivateName"===h.property.type&&"Super"===h.object.type&&this.raise(e,"Private fields can't be accessed on super"),a.optionalChainMember?(h.optional=!1,this.finishNode(h,"OptionalMemberExpression")):this.finishNode(h,"MemberExpression")}if(this.eat(o.bracketL)){var u=this.startNodeAt(e,s);return u.object=t,u.property=this.parseExpression(),u.computed=!0,this.expect(o.bracketR),a.optionalChainMember?(u.optional=!1,this.finishNode(u,"OptionalMemberExpression")):this.finishNode(u,"MemberExpression")}if(!i&&this.match(o.parenL)){var l=this.state.maybeInArrowParameters,c=this.state.yieldPos,p=this.state.awaitPos;this.state.maybeInArrowParameters=!0,this.state.yieldPos=-1,this.state.awaitPos=-1,this.next();var d=this.startNodeAt(e,s);return d.callee=t,d.arguments=this.parseCallExpressionArguments(o.parenR,a.maybeAsyncArrow,"Import"===t.type,"Super"!==t.type,d),this.finishCallExpression(d,a.optionalChainMember),a.maybeAsyncArrow&&this.shouldParseAsyncArrow()?(a.stop=!0,d=this.parseAsyncArrowFromCallExpression(this.startNodeAt(e,s),d),this.checkYieldAwaitInDefaultParams(),this.state.yieldPos=c,this.state.awaitPos=p):(this.toReferencedListDeep(d.arguments),-1!==c&&(this.state.yieldPos=c),(this.isAwaitAllowed()||l)&&-1===p||(this.state.awaitPos=p)),this.state.maybeInArrowParameters=l,d}return this.match(o.backQuote)?this.parseTaggedTemplateExpression(e,s,t,a):(a.stop=!0,t)}},{key:"parseTaggedTemplateExpression",value:function(t,e,s,i,a){var r=this.startNodeAt(t,e);return r.tag=s,r.quasi=this.parseTemplate(!0),a&&(r.typeParameters=a),i.optionalChainMember&&this.raise(t,"Tagged Template Literals are not allowed in optionalChain"),this.finishNode(r,"TaggedTemplateExpression")}},{key:"atPossibleAsync",value:function(t){return"Identifier"===t.type&&"async"===t.name&&this.state.lastTokEnd===t.end&&!this.canInsertSemicolon()&&"async"===this.input.slice(t.start,t.end)}},{key:"finishCallExpression",value:function(t,e){if("Import"===t.callee.type)if(1!==t.arguments.length)this.raise(t.start,"import() requires exactly one argument");else{var s=t.arguments[0];s&&"SpreadElement"===s.type&&this.raise(s.start,"... is not allowed in import()")}return this.finishNode(t,e?"OptionalCallExpression":"CallExpression")}},{key:"parseCallExpressionArguments",value:function(t,e,s,i,a){var r,n=[],h=!0,u=this.state.inFSharpPipelineDirectBody;for(this.state.inFSharpPipelineDirectBody=!1;!this.eat(t);){if(h)h=!1;else if(this.expect(o.comma),this.match(t)){s&&this.raise(this.state.lastTokStart,"Trailing comma is disallowed inside import(...) arguments"),a&&this.addExtra(a,"trailingComma",this.state.lastTokStart),this.next();break}this.match(o.parenL)&&!r&&(r=this.state.start),n.push(this.parseExprListItem(!1,e?{start:0}:void 0,e?{start:0}:void 0,i))}return e&&r&&this.shouldParseAsyncArrow()&&this.unexpected(),this.state.inFSharpPipelineDirectBody=u,n}},{key:"shouldParseAsyncArrow",value:function(){return this.match(o.arrow)&&!this.canInsertSemicolon()}},{key:"parseAsyncArrowFromCallExpression",value:function(t,e){var s;return this.expect(o.arrow),this.parseArrowExpression(t,e.arguments,!0,null===(s=e.extra)||void 0===s?void 0:s.trailingComma),t}},{key:"parseNoCallExpr",value:function(){var t=this.state.start,e=this.state.startLoc;return this.parseSubscripts(this.parseExprAtom(),t,e,!0)}},{key:"parseExprAtom",value:function(t){this.state.type===o.slash&&this.readRegexp();var e,s=this.state.potentialArrowAt===this.state.start;switch(this.state.type){case o._super:return e=this.startNode(),this.next(),!this.match(o.parenL)||this.scope.allowDirectSuper||this.options.allowSuperOutsideMethod?this.scope.allowSuper||this.options.allowSuperOutsideMethod||this.raise(e.start,"super is only allowed in object methods and classes"):this.raise(e.start,"super() is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?"),this.match(o.parenL)||this.match(o.bracketL)||this.match(o.dot)||this.raise(e.start,"super can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop])"),this.finishNode(e,"Super");case o._import:return e=this.startNode(),this.next(),this.match(o.dot)?this.parseImportMetaProperty(e):(this.expectPlugin("dynamicImport",e.start),this.match(o.parenL)||this.unexpected(null,o.parenL),this.finishNode(e,"Import"));case o._this:return e=this.startNode(),this.next(),this.finishNode(e,"ThisExpression");case o.name:e=this.startNode();var i=this.state.containsEsc,a=this.parseIdentifier();if(!i&&"async"===a.name&&this.match(o._function)&&!this.canInsertSemicolon())return this.next(),this.parseFunction(e,void 0,!0);if(s&&!i&&"async"===a.name&&this.match(o.name)&&!this.canInsertSemicolon()){var r=[this.parseIdentifier()];return this.expect(o.arrow),this.parseArrowExpression(e,r,!0),e}return s&&this.match(o.arrow)&&!this.canInsertSemicolon()?(this.next(),this.parseArrowExpression(e,[a],!1),e):a;case o._do:this.expectPlugin("doExpressions");var n=this.startNode();this.next();var h=this.state.labels;return this.state.labels=[],n.body=this.parseBlock(),this.state.labels=h,this.finishNode(n,"DoExpression");case o.regexp:var u=this.state.value;return(e=this.parseLiteral(u.value,"RegExpLiteral")).pattern=u.pattern,e.flags=u.flags,e;case o.num:return this.parseLiteral(this.state.value,"NumericLiteral");case o.bigint:return this.parseLiteral(this.state.value,"BigIntLiteral");case o.string:return this.parseLiteral(this.state.value,"StringLiteral");case o._null:return e=this.startNode(),this.next(),this.finishNode(e,"NullLiteral");case o._true:case o._false:return this.parseBooleanLiteral();case o.parenL:return this.parseParenAndDistinguishExpression(s);case o.bracketL:var l=this.state.inFSharpPipelineDirectBody;return this.state.inFSharpPipelineDirectBody=!1,e=this.startNode(),this.next(),e.elements=this.parseExprList(o.bracketR,!0,t,e),this.state.maybeInArrowParameters||this.toReferencedList(e.elements),this.state.inFSharpPipelineDirectBody=l,this.finishNode(e,"ArrayExpression");case o.braceL:var c=this.state.inFSharpPipelineDirectBody;this.state.inFSharpPipelineDirectBody=!1;var p=this.parseObj(!1,t);return this.state.inFSharpPipelineDirectBody=c,p;case o._function:return this.parseFunctionExpression();case o.at:this.parseDecorators();case o._class:return e=this.startNode(),this.takeDecorators(e),this.parseClass(e,!1);case o._new:return this.parseNew();case o.backQuote:return this.parseTemplate(!1);case o.doubleColon:e=this.startNode(),this.next(),e.object=null;var d=e.callee=this.parseNoCallExpr();if("MemberExpression"===d.type)return this.finishNode(e,"BindExpression");throw this.raise(d.start,"Binding should be performed on object property.");case o.hash:if(this.state.inPipeline)return e=this.startNode(),"smart"!==this.getPluginOption("pipelineOperator","proposal")&&this.raise(e.start,"Primary Topic Reference found but pipelineOperator not passed 'smart' for 'proposal' option."),this.next(),this.primaryTopicReferenceIsAllowedInCurrentTopicContext()||this.raise(e.start,"Topic reference was used in a lexical context without topic binding"),this.registerTopicReference(),this.finishNode(e,"PipelinePrimaryTopicReference");default:throw this.unexpected()}}},{key:"parseBooleanLiteral",value:function(){var t=this.startNode();return t.value=this.match(o._true),this.next(),this.finishNode(t,"BooleanLiteral")}},{key:"parseMaybePrivateName",value:function(){if(this.match(o.hash)){this.expectOnePlugin(["classPrivateProperties","classPrivateMethods"]);var t=this.startNode();return this.next(),this.assertNoSpace("Unexpected space between # and identifier"),t.id=this.parseIdentifier(!0),this.finishNode(t,"PrivateName")}return this.parseIdentifier(!0)}},{key:"parseFunctionExpression",value:function(){var t=this.startNode(),e=this.startNode();return this.next(),e=this.createIdentifier(e,"function"),this.scope.inGenerator&&this.eat(o.dot)?this.parseMetaProperty(t,e,"sent"):this.parseFunction(t)}},{key:"parseMetaProperty",value:function(t,e,s){t.meta=e,"function"===e.name&&"sent"===s&&(this.isContextual(s)?this.expectPlugin("functionSent"):this.hasPlugin("functionSent")||this.unexpected());var i=this.state.containsEsc;return t.property=this.parseIdentifier(!0),(t.property.name!==s||i)&&this.raise(t.property.start,"The only valid meta property for ".concat(e.name," is ").concat(e.name,".").concat(s)),this.finishNode(t,"MetaProperty")}},{key:"parseImportMetaProperty",value:function(t){var e=this.createIdentifier(this.startNodeAtNode(t),"import");return this.expect(o.dot),this.isContextual("meta")?(this.expectPlugin("importMeta"),this.inModule||this.raise(e.start,"import.meta may appear only with 'sourceType: \"module\"'",{code:"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"}),this.sawUnambiguousESM=!0):this.hasPlugin("importMeta")||this.raise(e.start,"Dynamic imports require a parameter: import('a.js')"),this.parseMetaProperty(t,e,"meta")}},{key:"parseLiteral",value:function(t,e,s,i){s=s||this.state.start,i=i||this.state.startLoc;var a=this.startNodeAt(s,i);return this.addExtra(a,"rawValue",t),this.addExtra(a,"raw",this.input.slice(s,this.state.end)),a.value=t,this.next(),this.finishNode(a,e)}},{key:"parseParenAndDistinguishExpression",value:function(t){var e,s=this.state.start,i=this.state.startLoc;this.expect(o.parenL);var a=this.state.maybeInArrowParameters,r=this.state.yieldPos,n=this.state.awaitPos,h=this.state.inFSharpPipelineDirectBody;this.state.maybeInArrowParameters=!0,this.state.yieldPos=-1,this.state.awaitPos=-1,this.state.inFSharpPipelineDirectBody=!1;for(var u,l,c=this.state.start,p=this.state.startLoc,d=[],f={start:0},m={start:0},y=!0;!this.match(o.parenR);){if(y)y=!1;else if(this.expect(o.comma,m.start||null),this.match(o.parenR)){l=this.state.start;break}if(this.match(o.ellipsis)){var D=this.state.start,v=this.state.startLoc;u=this.state.start,d.push(this.parseParenItem(this.parseRestBinding(),D,v)),this.checkCommaAfterRest(41);break}d.push(this.parseMaybeAssign(!1,f,this.parseParenItem,m))}var x=this.state.start,g=this.state.startLoc;this.expect(o.parenR),this.state.maybeInArrowParameters=a,this.state.inFSharpPipelineDirectBody=h;var k=this.startNodeAt(s,i);if(t&&this.shouldParseArrow()&&(k=this.parseArrow(k))){this.checkYieldAwaitInDefaultParams(),this.state.yieldPos=r,this.state.awaitPos=n;for(var P=0;P<d.length;P++){var b=d[P];b.extra&&b.extra.parenthesized&&this.unexpected(b.extra.parenStart)}return this.parseArrowExpression(k,d,!1),k}if(-1!==r&&(this.state.yieldPos=r),-1!==n&&(this.state.awaitPos=n),d.length||this.unexpected(this.state.lastTokStart),l&&this.unexpected(l),u&&this.unexpected(u),f.start&&this.unexpected(f.start),m.start&&this.unexpected(m.start),this.toReferencedListDeep(d,!0),d.length>1?((e=this.startNodeAt(c,p)).expressions=d,this.finishNodeAt(e,"SequenceExpression",x,g)):e=d[0],!this.options.createParenthesizedExpressions)return this.addExtra(e,"parenthesized",!0),this.addExtra(e,"parenStart",s),e;var E=this.startNodeAt(s,i);return E.expression=e,this.finishNode(E,"ParenthesizedExpression"),E}},{key:"shouldParseArrow",value:function(){return!this.canInsertSemicolon()}},{key:"parseArrow",value:function(t){if(this.eat(o.arrow))return t}},{key:"parseParenItem",value:function(t,e,s){return t}},{key:"parseNew",value:function(){var t=this.startNode(),e=this.startNode();if(this.next(),e=this.createIdentifier(e,"new"),this.eat(o.dot)){var s=this.parseMetaProperty(t,e,"target");if(!this.scope.inNonArrowFunction&&!this.state.inClassProperty){var i="new.target can only be used in functions";this.hasPlugin("classProperties")&&(i+=" or class properties"),this.raise(s.start,i)}return s}return t.callee=this.parseNoCallExpr(),"Import"===t.callee.type?this.raise(t.callee.start,"Cannot use new with import(...)"):"OptionalMemberExpression"===t.callee.type||"OptionalCallExpression"===t.callee.type?this.raise(this.state.lastTokEnd,"constructors in/after an Optional Chain are not allowed"):this.eat(o.questionDot)&&this.raise(this.state.start,"constructors in/after an Optional Chain are not allowed"),this.parseNewArguments(t),this.finishNode(t,"NewExpression")}},{key:"parseNewArguments",value:function(t){if(this.eat(o.parenL)){var e=this.parseExprList(o.parenR);this.toReferencedList(e),t.arguments=e}else t.arguments=[]}},{key:"parseTemplateElement",value:function(t){var e=this.startNode();return null===this.state.value&&(t?this.state.invalidTemplateEscapePosition=null:this.raise(this.state.invalidTemplateEscapePosition||0,"Invalid escape sequence in template")),e.value={raw:this.input.slice(this.state.start,this.state.end).replace(/\r\n?/g,"\n"),cooked:this.state.value},this.next(),e.tail=this.match(o.backQuote),this.finishNode(e,"TemplateElement")}},{key:"parseTemplate",value:function(t){var e=this.startNode();this.next(),e.expressions=[];var s=this.parseTemplateElement(t);for(e.quasis=[s];!s.tail;)this.expect(o.dollarBraceL),e.expressions.push(this.parseExpression()),this.expect(o.braceR),e.quasis.push(s=this.parseTemplateElement(t));return this.next(),this.finishNode(e,"TemplateLiteral")}},{key:"parseObj",value:function(t,e){var s=Object.create(null),i=!0,a=this.startNode();for(a.properties=[],this.next();!this.eat(o.braceR);){if(i)i=!1;else if(this.expect(o.comma),this.match(o.braceR)){this.addExtra(a,"trailingComma",this.state.lastTokStart),this.next();break}var r=this.parseObjectMember(t,e);t||this.checkDuplicatedProto(r,s),r.shorthand&&this.addExtra(r,"shorthand",!0),a.properties.push(r)}return this.match(o.eq)||void 0===s.start||this.raise(s.start,"Redefinition of __proto__ property"),this.finishNode(a,t?"ObjectPattern":"ObjectExpression")}},{key:"isAsyncProp",value:function(t){return!t.computed&&"Identifier"===t.key.type&&"async"===t.key.name&&(this.match(o.name)||this.match(o.num)||this.match(o.string)||this.match(o.bracketL)||this.state.type.keyword||this.match(o.star))&&!this.hasPrecedingLineBreak()}},{key:"parseObjectMember",value:function(t,e){var s=[];if(this.match(o.at))for(this.hasPlugin("decorators")&&this.raise(this.state.start,"Stage 2 decorators disallow object literal property decorators");this.match(o.at);)s.push(this.parseDecorator());var i,a,r=this.startNode(),n=!1,h=!1;if(this.match(o.ellipsis))return s.length&&this.unexpected(),t?(this.next(),r.argument=this.parseIdentifier(),this.checkCommaAfterRest(125),this.finishNode(r,"RestElement")):this.parseSpread();s.length&&(r.decorators=s,s=[]),r.method=!1,(t||e)&&(i=this.state.start,a=this.state.startLoc),t||(n=this.eat(o.star));var u=this.state.containsEsc;return this.parsePropertyName(r),t||u||n||!this.isAsyncProp(r)?h=!1:(h=!0,n=this.eat(o.star),this.parsePropertyName(r)),this.parseObjPropValue(r,i,a,n,h,t,e,u),r}},{key:"isGetterOrSetterMethod",value:function(t,e){return!e&&!t.computed&&"Identifier"===t.key.type&&("get"===t.key.name||"set"===t.key.name)&&(this.match(o.string)||this.match(o.num)||this.match(o.bracketL)||this.match(o.name)||!!this.state.type.keyword)}},{key:"getGetterSetterExpectedParamCount",value:function(t){return"get"===t.kind?0:1}},{key:"checkGetterSetterParams",value:function(t){var e=this.getGetterSetterExpectedParamCount(t),s=t.start;t.params.length!==e&&("get"===t.kind?this.raise(s,"getter must not have any formal parameters"):this.raise(s,"setter must have exactly one formal parameter")),"set"===t.kind&&"RestElement"===t.params[t.params.length-1].type&&this.raise(s,"setter function argument must not be a rest parameter")}},{key:"parseObjectMethod",value:function(t,e,s,i,a){return s||e||this.match(o.parenL)?(i&&this.unexpected(),t.kind="method",t.method=!0,this.parseMethod(t,e,s,!1,!1,"ObjectMethod")):!a&&this.isGetterOrSetterMethod(t,i)?((e||s)&&this.unexpected(),t.kind=t.key.name,this.parsePropertyName(t),this.parseMethod(t,!1,!1,!1,!1,"ObjectMethod"),this.checkGetterSetterParams(t),t):void 0}},{key:"parseObjectProperty",value:function(t,e,s,i,a){return t.shorthand=!1,this.eat(o.colon)?(t.value=i?this.parseMaybeDefault(this.state.start,this.state.startLoc):this.parseMaybeAssign(!1,a),this.finishNode(t,"ObjectProperty")):t.computed||"Identifier"!==t.key.type?void 0:(this.checkReservedWord(t.key.name,t.key.start,!0,!0),i?t.value=this.parseMaybeDefault(e,s,t.key.__clone()):this.match(o.eq)&&a?(a.start||(a.start=this.state.start),t.value=this.parseMaybeDefault(e,s,t.key.__clone())):t.value=t.key.__clone(),t.shorthand=!0,this.finishNode(t,"ObjectProperty"))}},{key:"parseObjPropValue",value:function(t,e,s,i,a,r,n,o){var h=this.parseObjectMethod(t,i,a,r,o)||this.parseObjectProperty(t,e,s,r,n);return h||this.unexpected(),h}},{key:"parsePropertyName",value:function(t){if(this.eat(o.bracketL))t.computed=!0,t.key=this.parseMaybeAssign(),this.expect(o.bracketR);else{var e=this.state.inPropertyName;this.state.inPropertyName=!0,t.key=this.match(o.num)||this.match(o.string)?this.parseExprAtom():this.parseMaybePrivateName(),"PrivateName"!==t.key.type&&(t.computed=!1),this.state.inPropertyName=e}return t.key}},{key:"initFunction",value:function(t,e){t.id=null,t.generator=!1,t.async=!!e}},{key:"parseMethod",value:function(t,e,s,i,a,r){var n=arguments.length>6&&void 0!==arguments[6]&&arguments[6],o=this.state.yieldPos,h=this.state.awaitPos;this.state.yieldPos=-1,this.state.awaitPos=-1,this.initFunction(t,s),t.generator=!!e;var u=i;return this.scope.enter(64|p(s,t.generator)|(n?256:0)|(a?128:0)),this.parseFunctionParams(t,u),this.checkYieldAwaitInDefaultParams(),this.parseFunctionBodyAndFinish(t,r,!0),this.scope.exit(),this.state.yieldPos=o,this.state.awaitPos=h,t}},{key:"parseArrowExpression",value:function(t,e,s,i){this.scope.enter(16|p(s,!1)),this.initFunction(t,s);var a=this.state.maybeInArrowParameters,r=this.state.yieldPos,n=this.state.awaitPos;return this.state.maybeInArrowParameters=!1,this.state.yieldPos=-1,this.state.awaitPos=-1,e&&this.setArrowFunctionParameters(t,e,i),this.parseFunctionBody(t,!0),this.scope.exit(),this.state.maybeInArrowParameters=a,this.state.yieldPos=r,this.state.awaitPos=n,this.finishNode(t,"ArrowFunctionExpression")}},{key:"setArrowFunctionParameters",value:function(t,e,s){t.params=this.toAssignableList(e,!0,"arrow function parameters",s)}},{key:"isStrictBody",value:function(t){if("BlockStatement"===t.body.type&&t.body.directives.length)for(var e=0,s=t.body.directives;e<s.length;e++){if("use strict"===s[e].value.value)return!0}return!1}},{key:"parseFunctionBodyAndFinish",value:function(t,e){var s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];this.parseFunctionBody(t,!1,s),this.finishNode(t,e)}},{key:"parseFunctionBody",value:function(t,e){var s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=e&&!this.match(o.braceL),a=this.state.strict,r=!1,n=this.state.inParameters;if(this.state.inParameters=!1,i)t.body=this.parseMaybeAssign(),this.checkParams(t,!1,e,!1);else{var h=!this.isSimpleParamList(t.params);if((!a||h)&&(r=this.strictDirective(this.state.end))&&h){var u="method"!==t.kind&&"constructor"!==t.kind||!t.key?t.start:t.key.end;this.raise(u,"Illegal 'use strict' directive in function with non-simple parameter list")}var l=this.state.labels;this.state.labels=[],r&&(this.state.strict=!0),this.checkParams(t,!(a||r||e||s||h),e,!a&&r),t.body=this.parseBlock(!0,!1),this.state.labels=l}this.state.inParameters=n,this.state.strict&&t.id&&this.checkLVal(t.id,65,void 0,"function name",void 0,!a&&r),this.state.strict=a}},{key:"isSimpleParamList",value:function(t){for(var e=0,s=t.length;e<s;e++)if("Identifier"!==t[e].type)return!1;return!0}},{key:"checkParams",value:function(t,e,s){for(var i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=Object.create(null),r=0;r<t.params.length;r++)this.checkLVal(t.params[r],5,e?null:a,"function parameter list",void 0,i)}},{key:"parseExprList",value:function(t,e,s,i){for(var a=[],r=!0;!this.eat(t);){if(r)r=!1;else if(this.expect(o.comma),this.match(t)){i&&this.addExtra(i,"trailingComma",this.state.lastTokStart),this.next();break}a.push(this.parseExprListItem(e,s))}return a}},{key:"parseExprListItem",value:function(t,e,s,i){var a;if(t&&this.match(o.comma))a=null;else if(this.match(o.ellipsis)){var r=this.state.start,n=this.state.startLoc;a=this.parseParenItem(this.parseSpread(e,s),r,n)}else if(this.match(o.question)){this.expectPlugin("partialApplication"),i||this.raise(this.state.start,"Unexpected argument placeholder");var h=this.startNode();this.next(),a=this.finishNode(h,"ArgumentPlaceholder")}else a=this.parseMaybeAssign(!1,e,this.parseParenItem,s);return a}},{key:"parseIdentifier",value:function(t){var e=this.startNode(),s=this.parseIdentifierName(e.start,t);return this.createIdentifier(e,s)}},{key:"createIdentifier",value:function(t,e){return t.name=e,t.loc.identifierName=e,this.finishNode(t,"Identifier")}},{key:"parseIdentifierName",value:function(t,e){var s;if(this.match(o.name))s=this.state.value;else{if(!this.state.type.keyword)throw this.unexpected();"class"!==(s=this.state.type.keyword)&&"function"!==s||this.state.lastTokEnd===this.state.lastTokStart+1&&46===this.input.charCodeAt(this.state.lastTokStart)||this.state.context.pop()}return e?this.state.type=o.name:this.checkReservedWord(s,this.state.start,!!this.state.type.keyword,!1),this.next(),s}},{key:"checkReservedWord",value:function(t,e,s,i){if(this.scope.inGenerator&&"yield"===t)this.raise(e,"Can not use 'yield' as identifier inside a generator");else{if("await"===t){if(this.scope.inAsync)return void this.raise(e,"Can not use 'await' as identifier inside an async function");-1===this.state.awaitPos&&(this.state.maybeInArrowParameters||this.isAwaitAllowed())&&(this.state.awaitPos=this.state.start)}if(this.state.inClassProperty&&"arguments"===t)this.raise(e,"'arguments' is not allowed in class field initializer");else if(s&&function(t){return a.has(t)}(t))this.raise(e,"Unexpected keyword '".concat(t,"'"));else(this.state.strict?i?M:B:L)(t,this.inModule)&&(this.scope.inAsync||"await"!==t?this.raise(e,"Unexpected reserved word '".concat(t,"'")):this.raise(e,"Can not use keyword 'await' outside an async function"))}}},{key:"isAwaitAllowed",value:function(){return this.scope.inFunction?this.scope.inAsync:!!this.options.allowAwaitOutsideFunction||!!this.hasPlugin("topLevelAwait")&&this.inModule}},{key:"parseAwait",value:function(){var t=this.startNode();return this.next(),this.state.inParameters?this.raise(t.start,"await is not allowed in async function parameters"):-1===this.state.awaitPos&&(this.state.awaitPos=t.start),this.eat(o.star)&&this.raise(t.start,"await* has been removed from the async functions proposal. Use Promise.all() instead."),this.scope.inFunction||this.options.allowAwaitOutsideFunction||(this.hasPrecedingLineBreak()||this.match(o.plusMin)||this.match(o.parenL)||this.match(o.bracketL)||this.match(o.backQuote)||this.match(o.regexp)||this.match(o.slash)||this.hasPlugin("v8intrinsic")&&this.match(o.modulo)?this.ambiguousScriptDifferentAst=!0:this.sawUnambiguousESM=!0),this.state.soloAwait||(t.argument=this.parseMaybeUnary()),this.finishNode(t,"AwaitExpression")}},{key:"parseYield",value:function(t){var e=this.startNode();return this.state.inParameters?this.raise(e.start,"yield is not allowed in generator parameters"):-1===this.state.yieldPos&&(this.state.yieldPos=e.start),this.next(),this.match(o.semi)||!this.match(o.star)&&!this.state.type.startsExpr||this.hasPrecedingLineBreak()?(e.delegate=!1,e.argument=null):(e.delegate=this.eat(o.star),e.argument=this.parseMaybeAssign(t)),this.finishNode(e,"YieldExpression")}},{key:"checkPipelineAtInfixOperator",value:function(t,e){"smart"===this.getPluginOption("pipelineOperator","proposal")&&"SequenceExpression"===t.type&&this.raise(e,"Pipeline head should not be a comma-separated sequence expression")}},{key:"parseSmartPipelineBody",value:function(t,e,s){var i=this.checkSmartPipelineBodyStyle(t);return this.checkSmartPipelineBodyEarlyErrors(t,i,e),this.parseSmartPipelineBodyInStyle(t,i,e,s)}},{key:"checkSmartPipelineBodyEarlyErrors",value:function(t,e,s){if(this.match(o.arrow))throw this.raise(this.state.start,'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized');"PipelineTopicExpression"===e&&"SequenceExpression"===t.type&&this.raise(s,"Pipeline body may not be a comma-separated sequence expression")}},{key:"parseSmartPipelineBodyInStyle",value:function(t,e,s,i){var a=this.startNodeAt(s,i);switch(e){case"PipelineBareFunction":a.callee=t;break;case"PipelineBareConstructor":a.callee=t.callee;break;case"PipelineBareAwaitedFunction":a.callee=t.argument;break;case"PipelineTopicExpression":this.topicReferenceWasUsedInCurrentTopicContext()||this.raise(s,"Pipeline is in topic style but does not use topic reference"),a.expression=t;break;default:throw new Error("Internal @babel/parser error: Unknown pipeline style (".concat(e,")"))}return this.finishNode(a,e)}},{key:"checkSmartPipelineBodyStyle",value:function(t){return t.type,this.isSimpleReference(t)?"PipelineBareFunction":"PipelineTopicExpression"}},{key:"isSimpleReference",value:function(t){switch(t.type){case"MemberExpression":return!t.computed&&this.isSimpleReference(t.object);case"Identifier":return!0;default:return!1}}},{key:"withTopicPermittingContext",value:function(t){var e=this.state.topicContext;this.state.topicContext={maxNumOfResolvableTopics:1,maxTopicIndex:null};try{return t()}finally{this.state.topicContext=e}}},{key:"withTopicForbiddingContext",value:function(t){var e=this.state.topicContext;this.state.topicContext={maxNumOfResolvableTopics:0,maxTopicIndex:null};try{return t()}finally{this.state.topicContext=e}}},{key:"withSoloAwaitPermittingContext",value:function(t){var e=this.state.soloAwait;this.state.soloAwait=!0;try{return t()}finally{this.state.soloAwait=e}}},{key:"registerTopicReference",value:function(){this.state.topicContext.maxTopicIndex=0}},{key:"primaryTopicReferenceIsAllowedInCurrentTopicContext",value:function(){return this.state.topicContext.maxNumOfResolvableTopics>=1}},{key:"topicReferenceWasUsedInCurrentTopicContext",value:function(){return null!=this.state.topicContext.maxTopicIndex&&this.state.topicContext.maxTopicIndex>=0}},{key:"parseFSharpPipelineBody",value:function(t,e){var s=this.state.start,i=this.state.startLoc;this.state.potentialArrowAt=this.state.start;var a=this.state.inFSharpPipelineDirectBody;this.state.inFSharpPipelineDirectBody=!0;var r=this.parseExprOp(this.parseMaybeUnary(),s,i,t,e);return this.state.inFSharpPipelineDirectBody=a,r}}]),e}(function(t){function e(){return d(this,e),g(this,D(e).apply(this,arguments))}return y(e,t),m(e,[{key:"toAssignable",value:function(t,e,s){var i;if(t)switch(t.type){case"Identifier":case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":break;case"ObjectExpression":t.type="ObjectPattern";for(var a=0,r=t.properties.length,n=r-1;a<r;a++){var o,h=t.properties[a],u=a===n;this.toAssignableObjectExpressionProp(h,e,u),u&&"RestElement"===h.type&&(null===(o=t.extra)||void 0===o?void 0:o.trailingComma)&&this.raiseRestNotLast(t.extra.trailingComma)}break;case"ObjectProperty":this.toAssignable(t.value,e,s);break;case"SpreadElement":this.checkToRestConversion(t),t.type="RestElement";var l=t.argument;this.toAssignable(l,e,s);break;case"ArrayExpression":t.type="ArrayPattern",this.toAssignableList(t.elements,e,s,null===(i=t.extra)||void 0===i?void 0:i.trailingComma);break;case"AssignmentExpression":"="!==t.operator&&this.raise(t.left.end,"Only '=' operator can be used for specifying default value."),t.type="AssignmentPattern",delete t.operator,this.toAssignable(t.left,e,s);break;case"ParenthesizedExpression":t.expression=this.toAssignable(t.expression,e,s)}return t}},{key:"toAssignableObjectExpressionProp",value:function(t,e,s){if("ObjectMethod"===t.type){var i="get"===t.kind||"set"===t.kind?"Object pattern can't contain getter or setter":"Object pattern can't contain methods";this.raise(t.key.start,i)}else"SpreadElement"!==t.type||s?this.toAssignable(t,e,"object destructuring pattern"):this.raiseRestNotLast(t.start)}},{key:"toAssignableList",value:function(t,e,s,i){var a=t.length;if(a){var r=t[a-1];if(r&&"RestElement"===r.type)--a;else if(r&&"SpreadElement"===r.type){r.type="RestElement";var n=r.argument;this.toAssignable(n,e,s),"Identifier"!==n.type&&"MemberExpression"!==n.type&&"ArrayPattern"!==n.type&&"ObjectPattern"!==n.type&&this.unexpected(n.start),i&&this.raiseTrailingCommaAfterRest(i),--a}}for(var o=0;o<a;o++){var h=t[o];h&&(this.toAssignable(h,e,s),"RestElement"===h.type&&this.raiseRestNotLast(h.start))}return t}},{key:"toReferencedList",value:function(t,e){return t}},{key:"toReferencedListDeep",value:function(t,e){this.toReferencedList(t,e);for(var s=0;s<t.length;s++){var i=t[s];i&&"ArrayExpression"===i.type&&this.toReferencedListDeep(i.elements)}return t}},{key:"parseSpread",value:function(t,e){var s=this.startNode();return this.next(),s.argument=this.parseMaybeAssign(!1,t,void 0,e),this.finishNode(s,"SpreadElement")}},{key:"parseRestBinding",value:function(){var t=this.startNode();return this.next(),t.argument=this.parseBindingAtom(),this.finishNode(t,"RestElement")}},{key:"parseBindingAtom",value:function(){switch(this.state.type){case o.bracketL:var t=this.startNode();return this.next(),t.elements=this.parseBindingList(o.bracketR,93,!0),this.finishNode(t,"ArrayPattern");case o.braceL:return this.parseObj(!0)}return this.parseIdentifier()}},{key:"parseBindingList",value:function(t,e,s,i){for(var a=[],r=!0;!this.eat(t);)if(r?r=!1:this.expect(o.comma),s&&this.match(o.comma))a.push(null);else{if(this.eat(t))break;if(this.match(o.ellipsis)){a.push(this.parseAssignableListItemTypes(this.parseRestBinding())),this.checkCommaAfterRest(e),this.expect(t);break}var n=[];for(this.match(o.at)&&this.hasPlugin("decorators")&&this.raise(this.state.start,"Stage 2 decorators cannot be used to decorate parameters");this.match(o.at);)n.push(this.parseDecorator());a.push(this.parseAssignableListItem(i,n))}return a}},{key:"parseAssignableListItem",value:function(t,e){var s=this.parseMaybeDefault();this.parseAssignableListItemTypes(s);var i=this.parseMaybeDefault(s.start,s.loc.start,s);return e.length&&(s.decorators=e),i}},{key:"parseAssignableListItemTypes",value:function(t){return t}},{key:"parseMaybeDefault",value:function(t,e,s){if(e=e||this.state.startLoc,t=t||this.state.start,s=s||this.parseBindingAtom(),!this.eat(o.eq))return s;var i=this.startNodeAt(t,e);return i.left=s,i.right=this.parseMaybeAssign(),this.finishNode(i,"AssignmentPattern")}},{key:"checkLVal",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:64,s=arguments.length>2?arguments[2]:void 0,i=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0,r=arguments.length>5&&void 0!==arguments[5]&&arguments[5];switch(t.type){case"Identifier":if(this.state.strict&&(r?M(t.name,this.inModule):O(t.name))&&this.raise(t.start,"".concat(64===e?"Assigning to":"Binding"," '").concat(t.name,"' in strict mode")),s){var n="_".concat(t.name);s[n]?this.raise(t.start,"Argument name clash"):s[n]=!0}a&&"let"===t.name&&this.raise(t.start,"'let' is not allowed to be used as a name in 'let' or 'const' declarations."),64&e||this.scope.declareName(t.name,e,t.start);break;case"MemberExpression":64!==e&&this.raise(t.start,"Binding member expression");break;case"ObjectPattern":for(var o=0,h=t.properties;o<h.length;o++){var u=h[o];if("ObjectProperty"===u.type)u=u.value;else if("ObjectMethod"===u.type)continue;this.checkLVal(u,e,s,"object destructuring pattern",a)}break;case"ArrayPattern":for(var l=0,c=t.elements;l<c.length;l++){var p=c[l];p&&this.checkLVal(p,e,s,"array destructuring pattern",a)}break;case"AssignmentPattern":this.checkLVal(t.left,e,s,"assignment pattern");break;case"RestElement":this.checkLVal(t.argument,e,s,"rest element");break;case"ParenthesizedExpression":this.checkLVal(t.expression,e,s,"parenthesized expression");break;default:var d=(64===e?"Invalid":"Binding invalid")+" left-hand side"+(i?" in "+i:"expression");this.raise(t.start,d)}}},{key:"checkToRestConversion",value:function(t){"Identifier"!==t.argument.type&&"MemberExpression"!==t.argument.type&&this.raise(t.argument.start,"Invalid rest operator's argument")}},{key:"checkCommaAfterRest",value:function(t){this.match(o.comma)&&(this.lookaheadCharCode()===t?this.raiseTrailingCommaAfterRest(this.state.start):this.raiseRestNotLast(this.state.start))}},{key:"raiseRestNotLast",value:function(t){throw this.raise(t,"Rest element must be last element")}},{key:"raiseTrailingCommaAfterRest",value:function(t){this.raise(t,"Unexpected trailing comma after rest element")}}]),e}(function(t){function e(){return d(this,e),g(this,D(e).apply(this,arguments))}return y(e,t),m(e,[{key:"startNode",value:function(){return new wt(this,this.state.start,this.state.startLoc)}},{key:"startNodeAt",value:function(t,e){return new wt(this,t,e)}},{key:"startNodeAtNode",value:function(t){return this.startNodeAt(t.start,t.loc.start)}},{key:"finishNode",value:function(t,e){return this.finishNodeAt(t,e,this.state.lastTokEnd,this.state.lastTokEndLoc)}},{key:"finishNodeAt",value:function(t,e,s,i){return t.type=e,t.end=s,t.loc.end=i,this.options.ranges&&(t.range[1]=s),this.processComment(t),t}},{key:"resetStartLocation",value:function(t,e,s){t.start=e,t.loc.start=s,this.options.ranges&&(t.range[0]=e)}},{key:"resetEndLocation",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.state.lastTokEnd,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.state.lastTokEndLoc;t.end=e,t.loc.end=s,this.options.ranges&&(t.range[1]=e)}},{key:"resetStartLocationFromNode",value:function(t,e){this.resetStartLocation(t,e.start,e.loc.start)}}]),e}(At)))));function St(t,e){var s=Nt;return t&&t.plugins&&(!function(t){if(ut(t,"decorators")){if(ut(t,"decorators-legacy"))throw new Error("Cannot use the decorators and decorators-legacy plugin together");var e=lt(t,"decorators","decoratorsBeforeExport");if(null==e)throw new Error("The 'decorators' plugin requires a 'decoratorsBeforeExport' option, whose value must be a boolean. If you are migrating from Babylon/Babel 6 or want to use the old decorators proposal, you should use the 'decorators-legacy' plugin instead of 'decorators'.");if("boolean"!=typeof e)throw new Error("'decoratorsBeforeExport' must be a boolean.")}if(ut(t,"flow")&&ut(t,"typescript"))throw new Error("Cannot combine flow and typescript plugins.");if(ut(t,"placeholders")&&ut(t,"v8intrinsic"))throw new Error("Cannot combine placeholders and v8intrinsic plugins.");if(ut(t,"pipelineOperator")&&-1===ct.indexOf(lt(t,"pipelineOperator","proposal")))throw new Error("'pipelineOperator' requires 'proposal' option whose value should be one of: "+ct.map((function(t){return"'".concat(t,"'")})).join(", "))}(t.plugins),s=function(t){var e=dt.filter((function(e){return ut(t,e)})),s=e.join("/"),i=It[s];if(!i){i=Nt;for(var a=0;a<e.length;a++){var r=e[a];i=pt[r](i)}It[s]=i}return i}(t.plugins)),new s(t,e)}var It={};e.parse=function(t,e){if(!e||"unambiguous"!==e.sourceType)return St(e,t).parse();e=Object.assign({},e);try{e.sourceType="module";var s=St(e,t),i=s.parse();if(s.sawUnambiguousESM)return i;if(s.ambiguousScriptDifferentAst)try{return e.sourceType="script",St(e,t).parse()}catch(t){}else i.program.sourceType="script";return i}catch(s){try{return e.sourceType="script",St(e,t).parse()}catch(t){}throw s}},e.parseExpression=function(t,e){var s=St(e,t);return s.options.strictMode&&(s.state.strict=!0),s.getExpression()},e.tokTypes=o}));s(ot);ot.parse,ot.parseExpression,ot.tokTypes;var ht=u;function ut(t,e){return Object.assign({sourceType:"module",allowAwaitOutsideFunction:!0,allowImportExportEverywhere:!0,allowReturnOutsideFunction:!0,allowSuperOutsideMethod:!0,allowUndeclaredExports:!0,errorRecovery:!0,plugins:["jsx","doExpressions","objectRestSpread","classProperties","exportDefaultFrom","exportNamespaceFrom","asyncGenerators","functionBind","functionSent","dynamicImport","numericSeparator","importMeta","optionalCatchBinding","optionalChaining","classPrivateProperties",["pipelineOperator",{proposal:"minimal"}],"nullishCoalescingOperator","bigInt","throwExpressions","logicalAssignment","classPrivateMethods","v8intrinsic","partialApplication"].concat(e)},t)}function lt(t,s){return function(i,a,r){var n,o=ot,h=[ut({strictMode:!0},["decorators-legacy"].concat(s)),ut({strictMode:!1},["decorators-legacy"].concat(s)),ut({strictMode:!0},[["decorators",{decoratorsBeforeExport:!1}]].concat(s)),ut({strictMode:!1},[["decorators",{decoratorsBeforeExport:!1}]].concat(s))];try{n=function(t,e){for(var s,i=0;i<e.length;i++)try{return t(e[i])}catch(t){s||(s=t)}throw s}(o[t].bind(null,i),h)}catch(t){throw e(t.message.replace(/ \(.*\)/,""),{start:{line:t.loc.line,column:t.loc.column+1}})}return delete n.tokens,nt(n,Object.assign({},r,{originalText:i}))}}var ct=lt("parse",["flow"]),pt=lt("parse",[["flow",{all:!0,enums:!0}]]),dt=lt("parseExpression");function ft(t,s){switch(t.type){case"ArrayExpression":return t.elements.forEach(i);case"ObjectExpression":return t.properties.forEach(i);case"ObjectProperty":if(t.computed)throw a("computed");if(t.shorthand)throw a("shorthand");return[t.key,t.value].forEach(i);case"UnaryExpression":switch(t.operator){case"+":case"-":return i(t.argument);default:throw a("operator")}case"Identifier":if(s&&"ObjectProperty"===s.type&&s.key===t)return;throw a();case"NullLiteral":case"BooleanLiteral":case"NumericLiteral":case"StringLiteral":return;default:throw a()}function i(e){return ft(e,t)}function a(s){var i=s?"".concat(t.type," with ").concat(s,"=").concat(JSON.stringify(t[s])):t.type;return e("".concat(i," is not allowed in JSON."),{start:{line:t.loc.start.line,column:t.loc.start.column+1}})}}var mt=Object.assign({parse:ct,astFormat:"estree",hasPragma:ht},c),yt=Object.assign({},mt,{parse:pt}),Dt=Object.assign({},mt,{parse:dt}),vt={parsers:{babel:mt,"babel-flow":yt,babylon:mt,json:Object.assign({},Dt,{hasPragma:function(){return!0}}),json5:Dt,"json-stringify":Object.assign({parse:function(t,e,s){var i=dt(t,e,s);return i.comments.forEach(ft),ft(i),i},astFormat:"estree-json"},c),__js_expression:Dt,__vue_expression:Dt,__vue_event_binding:mt}},xt=vt.parsers;t.default=vt,t.parsers=xt,Object.defineProperty(t,"__esModule",{value:!0})}));
diff --git a/node_modules/prettier/parser-flow.js b/node_modules/prettier/parser-flow.js
new file mode 100644
index 0000000..f2da02a
--- /dev/null
+++ b/node_modules/prettier/parser-flow.js
@@ -0,0 +1 @@
+!function(r,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(((r=r||self).prettierPlugins=r.prettierPlugins||{},r.prettierPlugins.flow={}))}(this,(function(r){var t=function(r,t){var e=new SyntaxError(r+" ("+t.start.line+":"+t.start.column+")");return e.loc=t,e};var e=function(r,t){if(r.startsWith("#!")){var e=r.indexOf("\n"),n={type:"Line",value:r.slice(2,e),range:[0,e],loc:{source:null,start:{line:1,column:0},end:{line:1,column:e}}};t.comments=[n].concat(t.comments)}};function n(r,t){return r(t={exports:{}},t.exports),t.exports}function u(r){return r&&r.default||r}var a,i=Object.freeze({__proto__:null,default:{EOL:"\n"}}),f=n((function(r){r.exports=function(r){if("string"!=typeof r)throw new TypeError("Expected a string");var t=r.match(/(?:\r?\n)/g)||[];if(0===t.length)return null;var e=t.filter((function(r){return"\r\n"===r})).length;return e>t.length-e?"\r\n":"\n"},r.exports.graceful=function(t){return r.exports(t)||"\n"}})),c=(f.graceful,u(i)),s=n((function(r,t){function e(){var r=c;return e=function(){return r},r}function n(){var r,t=(r=f)&&r.__esModule?r:{default:r};return n=function(){return t},t}Object.defineProperty(t,"__esModule",{value:!0}),t.extract=function(r){var t=r.match(i);return t?t[0].trimLeft():""},t.strip=function(r){var t=r.match(i);return t&&t[0]?r.substring(t[0].length):r},t.parse=function(r){return D(r).pragmas},t.parseWithComments=D,t.print=function(r){var t=r.comments,u=void 0===t?"":t,a=r.pragmas,i=void 0===a?{}:a,f=(0,n().default)(u)||e().EOL,c=Object.keys(i),s=c.map((function(r){return k(r,i[r])})).reduce((function(r,t){return r.concat(t)}),[]).map((function(r){return" * "+r+f})).join("");if(!u){if(0===c.length)return"";if(1===c.length&&!Array.isArray(i[c[0]])){var o=i[c[0]];return"".concat("/**"," ").concat(k(c[0],o)[0]).concat(" */")}}var v=u.split(f).map((function(r){return"".concat(" *"," ").concat(r)})).join(f)+f;return"/**"+f+(u?v:"")+(u&&c.length?" *"+f:"")+s+" */"};var u=/\*\/$/,a=/^\/\*\*/,i=/^\s*(\/\*\*?(.|\r?\n)*?\*\/)/,s=/(^|\s+)\/\/([^\r\n]*)/g,o=/^(\r?\n)+/,v=/(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g,l=/(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g,b=/(\r?\n|^) *\* ?/g;function D(r){var t=(0,n().default)(r)||e().EOL;r=r.replace(a,"").replace(u,"").replace(b,"$1");for(var i="";i!==r;)i=r,r=r.replace(v,"".concat(t,"$1 $2").concat(t));r=r.replace(o,"").trimRight();for(var f,c=Object.create(null),D=r.replace(l,"").replace(o,"").trimRight();f=l.exec(r);){var k=f[2].replace(s,"");"string"==typeof c[f[1]]||Array.isArray(c[f[1]])?c[f[1]]=[].concat(c[f[1]],k):c[f[1]]=k}return{comments:D,pragmas:c}}function k(r,t){return[].concat(t).map((function(t){return"@".concat(r," ").concat(t).trim()}))}}));(a=s)&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")&&a.default;s.extract,s.strip,s.parse,s.parseWithComments,s.print;var o=function(r){var t=Object.keys(s.parse(s.extract(r)));return-1!==t.indexOf("prettier")||-1!==t.indexOf("format")},v=function(r){return r.length>0?r[r.length-1]:null};var l={locStart:function r(t,e){return!(e=e||{}).ignoreDecorators&&t.declaration&&t.declaration.decorators&&t.declaration.decorators.length>0?r(t.declaration.decorators[0]):!e.ignoreDecorators&&t.decorators&&t.decorators.length>0?r(t.decorators[0]):t.__location?t.__location.startOffset:t.range?t.range[0]:"number"==typeof t.start?t.start:t.loc?t.loc.start:null},locEnd:function r(t){var e=t.nodes&&v(t.nodes);if(e&&t.source&&!t.source.end&&(t=e),t.__location)return t.__location.endOffset;var n=t.range?t.range[1]:"number"==typeof t.end?t.end:null;return t.typeAnnotation?Math.max(n,r(t.typeAnnotation)):t.loc&&!n?t.loc.end:n}};function b(r){return(b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r})(r)}var D=function(r){return"string"==typeof r?r.replace(function(r){r=Object.assign({onlyFirst:!1},r);var t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,r.onlyFirst?void 0:"g")}(),""):r},k=D,p=D;k.default=p;var d=function(r){return!Number.isNaN(r)&&(r>=4352&&(r<=4447||9001===r||9002===r||11904<=r&&r<=12871&&12351!==r||12880<=r&&r<=19903||19968<=r&&r<=42182||43360<=r&&r<=43388||44032<=r&&r<=55203||63744<=r&&r<=64255||65040<=r&&r<=65049||65072<=r&&r<=65131||65281<=r&&r<=65376||65504<=r&&r<=65510||110592<=r&&r<=110593||127488<=r&&r<=127569||131072<=r&&r<=262141))},w=d,h=d;w.default=h;var m=function(r){if("string"!=typeof(r=r.replace(/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g," "))||0===r.length)return 0;r=k(r);for(var t=0,e=0;e<r.length;e++){var n=r.codePointAt(e);n<=31||n>=127&&n<=159||(n>=768&&n<=879||(n>65535&&e++,t+=w(n)?2:1))}return t},F=m,y=m;F.default=y;var E=/[|\\{}()[\]^$+*?.]/g,_=function(r){if("string"!=typeof r)throw new TypeError("Expected a string");return r.replace(E,"\\$&")},g=/[^\x20-\x7F]/;function C(r){if(r)switch(r.type){case"ExportDefaultDeclaration":case"ExportDefaultSpecifier":case"DeclareExportDeclaration":case"ExportNamedDeclaration":case"ExportAllDeclaration":return!0}return!1}function S(r){return function(t,e,n){var u=n&&n.backwards;if(!1===e)return!1;for(var a=t.length,i=e;i>=0&&i<a;){var f=t.charAt(i);if(r instanceof RegExp){if(!r.test(f))return i}else if(-1===r.indexOf(f))return i;u?i--:i++}return(-1===i||i===a)&&i}}var x=S(/\s/),T=S(" \t"),A=S(",; \t"),B=S(/[^\r\n]/);function I(r,t){if(!1===t)return!1;if("/"===r.charAt(t)&&"*"===r.charAt(t+1))for(var e=t+2;e<r.length;++e)if("*"===r.charAt(e)&&"/"===r.charAt(e+1))return e+2;return t}function O(r,t){return!1!==t&&("/"===r.charAt(t)&&"/"===r.charAt(t+1)?B(r,t):t)}function P(r,t,e){var n=e&&e.backwards;if(!1===t)return!1;var u=r.charAt(t);if(n){if("\r"===r.charAt(t-1)&&"\n"===u)return t-2;if("\n"===u||"\r"===u||"\u2028"===u||"\u2029"===u)return t-1}else{if("\r"===u&&"\n"===r.charAt(t+1))return t+2;if("\n"===u||"\r"===u||"\u2028"===u||"\u2029"===u)return t+1}return t}function N(r,t,e){var n=T(r,(e=e||{}).backwards?t-1:t,e);return n!==P(r,n,e)}function L(r,t){for(var e=null,n=t;n!==e;)e=n,n=I(r,n=A(r,n)),n=T(r,n);return!1!==(n=P(r,n=O(r,n)))&&N(r,n)}function R(r,t){for(var e=null,n=t;n!==e;)e=n,n=P(r,n=O(r,n=I(r,n=T(r,n))));return n}function M(r,t,e){return R(r,e(t))}var j={};function U(r){return j[r]}[["|>"],["??"],["||"],["&&"],["|"],["^"],["&"],["==","===","!=","!=="],["<",">","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"],["**"]].forEach((function(r,t){r.forEach((function(r){j[r]=t}))}));var X={"==":!0,"!=":!0,"===":!0,"!==":!0},J={"*":!0,"/":!0,"%":!0},G={">>":!0,">>>":!0,"<<":!0};function q(r,t,e){for(var n=0,u=e=e||0;u<r.length;++u)"\t"===r[u]?n=n+t-n%t:n++;return n}function z(r,t){var e=r.slice(1,-1),n={quote:'"',regex:/"/g},u={quote:"'",regex:/'/g},a="'"===t?u:n,i=a===u?n:u,f=a.quote;(e.includes(a.quote)||e.includes(i.quote))&&(f=(e.match(a.regex)||[]).length>(e.match(i.regex)||[]).length?i.quote:a.quote);return f}function V(r,t,e){var n='"'===t?"'":'"',u=r.replace(/\\([\s\S])|(['"])/g,(function(r,u,a){return u===n?u:a===t?"\\"+a:a||(e&&/^[^\\nrvtbfux\r\n\u2028\u2029"'0-7]$/.test(u)?u:"\\"+u)}));return t+u+t}function W(r){return r&&r.comments&&r.comments.length>0&&r.comments.some((function(r){return"prettier-ignore"===r.value.trim()}))}function Y(r,t){(r.comments||(r.comments=[])).push(t),t.printed=!1,"JSXText"===r.type&&(t.printed=!0)}var H={replaceEndOfLineWith:function(r,t){var e=[],n=!0,u=!1,a=void 0;try{for(var i,f=r.split("\n")[Symbol.iterator]();!(n=(i=f.next()).done);n=!0){var c=i.value;0!==e.length&&e.push(t),e.push(c)}}catch(r){u=!0,a=r}finally{try{n||null==f.return||f.return()}finally{if(u)throw a}}return e},getStringWidth:function(r){return r?g.test(r)?F(r):r.length:0},getMaxContinuousCount:function(r,t){var e=r.match(new RegExp("(".concat(_(t),")+"),"g"));return null===e?0:e.reduce((function(r,e){return Math.max(r,e.length/t.length)}),0)},getMinNotPresentContinuousCount:function(r,t){var e=r.match(new RegExp("(".concat(_(t),")+"),"g"));if(null===e)return 0;var n=new Map,u=0,a=!0,i=!1,f=void 0;try{for(var c,s=e[Symbol.iterator]();!(a=(c=s.next()).done);a=!0){var o=c.value.length/t.length;n.set(o,!0),o>u&&(u=o)}}catch(r){i=!0,f=r}finally{try{a||null==s.return||s.return()}finally{if(i)throw f}}for(var v=1;v<u;v++)if(!n.get(v))return v;return u+1},getPrecedence:U,shouldFlatten:function(r,t){return U(t)===U(r)&&("**"!==r&&((!X[r]||!X[t])&&(!("%"===t&&J[r]||"%"===r&&J[t])&&((t===r||!J[t]||!J[r])&&(!G[r]||!G[t])))))},isBitwiseOperator:function(r){return!!G[r]||"|"===r||"^"===r||"&"===r},isExportDeclaration:C,getParentExportDeclaration:function(r){var t=r.getParentNode();return"declaration"===r.getName()&&C(t)?t:null},getPenultimate:function(r){return r.length>1?r[r.length-2]:null},getLast:v,getNextNonSpaceNonCommentCharacterIndexWithStartIndex:R,getNextNonSpaceNonCommentCharacterIndex:M,getNextNonSpaceNonCommentCharacter:function(r,t,e){return r.charAt(M(r,t,e))},skip:S,skipWhitespace:x,skipSpaces:T,skipToLineEnd:A,skipEverythingButNewLine:B,skipInlineComment:I,skipTrailingComment:O,skipNewline:P,isNextLineEmptyAfterIndex:L,isNextLineEmpty:function(r,t,e){return L(r,e(t))},isPreviousLineEmpty:function(r,t,e){var n=e(t)-1;return n=P(r,n=T(r,n,{backwards:!0}),{backwards:!0}),(n=T(r,n,{backwards:!0}))!==P(r,n,{backwards:!0})},hasNewline:N,hasNewlineInRange:function(r,t,e){for(var n=t;n<e;++n)if("\n"===r.charAt(n))return!0;return!1},hasSpaces:function(r,t,e){return T(r,(e=e||{}).backwards?t-1:t,e)!==t},setLocStart:function(r,t){r.range?r.range[0]=t:r.start=t},setLocEnd:function(r,t){r.range?r.range[1]=t:r.end=t},startsWithNoLookaheadToken:function r(t,e){switch((t=function r(t){if(t.left)return r(t.left);return t}(t)).type){case"FunctionExpression":case"ClassExpression":case"DoExpression":return e;case"ObjectExpression":return!0;case"MemberExpression":case"OptionalMemberExpression":return r(t.object,e);case"TaggedTemplateExpression":return"FunctionExpression"!==t.tag.type&&r(t.tag,e);case"CallExpression":case"OptionalCallExpression":return"FunctionExpression"!==t.callee.type&&r(t.callee,e);case"ConditionalExpression":return r(t.test,e);case"UpdateExpression":return!t.prefix&&r(t.argument,e);case"BindExpression":return t.object&&r(t.object,e);case"SequenceExpression":return r(t.expressions[0],e);case"TSAsExpression":return r(t.expression,e);default:return!1}},getAlignmentSize:q,getIndentSize:function(r,t){var e=r.lastIndexOf("\n");return-1===e?0:q(r.slice(e+1).match(/^[ \t]*/)[0],t)},getPreferredQuote:z,printString:function(r,t,e){var n=r.slice(1,-1),u=!n.includes('"')&&!n.includes("'"),a="json"===t.parser?'"':t.__isInHtmlAttribute?"'":z(r,t.singleQuote?"'":'"');return e?u?a+n+a:r:V(n,a,!("css"===t.parser||"less"===t.parser||"scss"===t.parser||t.embeddedInHtml))},printNumber:function(r){return r.toLowerCase().replace(/^([+-]?[\d.]+e)(?:\+|(-))?0*(\d)/,"$1$2$3").replace(/^([+-]?[\d.]+)e[+-]?0+$/,"$1").replace(/^([+-])?\./,"$10.").replace(/(\.\d+?)0+(?=e|$)/,"$1").replace(/\.(?=e|$)/,"")},hasIgnoreComment:function(r){return W(r.getValue())},hasNodeIgnoreComment:W,makeString:V,matchAncestorTypes:function(r,t,e){for(e=e||0,t=t.slice();t.length;){var n=r.getParentNode(e),u=t.shift();if(!n||n.type!==u)return!1;e++}return!0},addLeadingComment:function(r,t){t.leading=!0,t.trailing=!1,Y(r,t)},addDanglingComment:function(r,t){t.leading=!1,t.trailing=!1,Y(r,t)},addTrailingComment:function(r,t){t.leading=!1,t.trailing=!0,Y(r,t)},isWithinParentArrayProperty:function(r,t){var e=r.getValue(),n=r.getParentNode();if(null==n)return!1;if(!Array.isArray(n[t]))return!1;var u=r.getName();return n[t][u]===e}}.getLast;var $=function(r,t){return function r(t,e,n,u){if(!t||"object"!==b(t))return;if(Array.isArray(t)){for(var a=0;a<t.length;a++)r(t[a],e,t,a);return}if("string"!=typeof t.type)return;for(var i=0,f=Object.keys(t);i<f.length;i++){var c=f[i];r(t[c],e,t,c)}var s=e(t);s&&(n[u]=s)}(r,(function(r){switch(r.type){case"VariableDeclaration":var e=H(r.declarations);e&&e.init&&function(r,e){if(";"===t.originalText[(n=e,"flow"===t.parser?n.range[1]:n.end)])return;var n;"flow"===t.parser?r.range=[r.range[0],e.range[1]]:r.end=e.end;r.loc=Object.assign({},r.loc,{end:r.loc.end})}(r,e);break;case"TSParenthesizedType":return r.typeAnnotation;case"TSUnionType":case"TSIntersectionType":if(1===r.types.length)return Object.assign({},r.types[0],{loc:r.loc,range:r.range});break;case"EnumDeclaration":"flow"===t.parser&&r.body.range[0]===r.range[0]&&r.body.range[1]===r.range[1]&&(r.body.range=[r.id.range[1],r.range[1]-1]),"babel-flow"===t.parser&&(r.body.start=r.id.end,r.body.end=r.end-1)}})),r},K=Object.freeze({__proto__:null,default:{}}),Q=Object.freeze({__proto__:null,default:{}}),Z=u(K),rr=u(Q),tr=n((function(r,t){!function(r){var e=119969,n=8483,u=65141,a=12538,i=43071,f="children",c=44010,s="Identifier",o=68107,v=42888,l=64311,b=69807,D=71369,k=11710,p="variance",d=43597,w=12730,h=43764,m="pattern",F=67591,y="directive",E="consequent",_=69871,g=68447,C=65473,S=8238,x=126553,T=44015,A=68096,B="params",I="@[<2>[",O=122,P=43215,N="constructor",L=43587,R=43586,M="yield",j=128,U="fd ",X="start",J=-61,G="target",q="_method",z="var",V="impltype",W="0o",Y=119972,H=43391,$=120121,K="the end of an expression statement (`;`)",Q=126558,tr=42527,er=69733,nr=66334,ur="decorators",ar=8450,ir=120074,fr=12783,cr=66717,sr=12438,or="%B",vr=12352,lr=8511,br=120713,Dr="method",kr=8191,pr=5760,dr=11630,wr=67871,hr="throw",mr=126499,Fr=43470,yr=11507,Er=120629,_r="Popping lex mode from empty stack",gr=65103,Cr=119995,Sr=43311,xr=42611,Tr=68116,Ar=67637,Br=66204,Ir=65470,Or=195101,Pr="e",Nr=42607,Lr=11631,Rr=126539,Mr="([^/]*)",jr=66729,Ur=126502,Xr="tparams",Jr=12589,Gr="src/parser/statement_parser.ml",qr=43697,zr=64217,Vr="Invalid binary/octal ",Wr=11519,Yr=-43,Hr="Out_of_memory",$r=12287,Kr=120487,Qr=43255,Zr=120570,rt=43301,tt=126534,et=65076,nt="index out of bounds",ut="package",at="))",it=126571,ft="supertype",ct=119892,st="this",ot=8417,vt=119807,lt=65613,bt="type",Dt=68159,kt=65535,pt=55215,dt=94032,wt=42124,ht=65019,mt=64111,Ft=8254,yt="typeArguments",Et=8471,_t="@])",gt=71359,Ct=8202,St="EnumDefaultedMember",xt="infinity",Tt="switch",At="private",Bt=69634,It=65597,Ot=65500,Pt=120686,Nt="Property",Lt=65343,Rt="implements",Mt=12548,jt=64262,Ut=43395,Xt=65279,Jt=126495,Gt="src/parser/type_parser.ml",qt=126552,zt=120712,Vt=126555,Wt=120596,Yt="raw",Ht=65342,$t="alternate",Kt=65489,Qt=252,Zt=126624,re=43187,te="export",ee=".",ne=44002,ue=8467,ae=8318,ie=8203,fe=92159,ce=240,se=43761,oe="kind",ve=42737,le=68220,be=66378,De=110,ke=120512,pe=119154,de=116,we=65338,he="declare",me=126627,Fe=11742,ye=8468,Ee=119970,_e=68158,ge=12295,Ce=-32,Se=120771,xe="mixins",Te=11557,Ae=42191,Be="expected *",Ie="boolean",Oe=68437,Pe=43010,Ne=42785,Le="expression",Re="visit_list",Me="column",je="value",Ue=43595,Xe=43258,Je=12343,Ge=68415,qe=11694,ze=43754,Ve=69887,We=126544,Ye=8416,He=917759,$e=11726,Ke="Assert_failure",Qe=66517,Ze=119964,rn="a string",tn=119993,en="closingElement",nn=65855,un=870530776,an=126523,fn="null",cn=120084,sn=126601,on=8454,vn="filter",ln=126560,bn=43615,Dn="expressions",kn="(@[",pn="get",dn=12448,wn=64316,hn=2048,mn="exported",Fn="an identifier",yn=43309,En="leadingComments",_n="return",gn=256,Cn="members",Sn=64279,xn="src/parser/expression_parser.ml",Tn="(global)",An=69839,Bn=67589,In=127343600,On=12336,Pn="empty",Nn=331416730,Ln=43123,Rn=8319,Mn=94098,jn=120137,Un=126543,Xn="@[<2>{ ",Jn=12335,Gn=125,qn=65908,zn=120513,Vn="bigint",Wn="Division_by_zero",Yn=8399,Hn=12329,$n=43609,Kn=120004,Qn=120070,Zn=69941,ru=126519,tu="immediately within another function.",eu=68147,nu=55238,uu="visit_option",au=126498,iu=64319,fu=12703,cu=11687,su="@,))@]",ou="%d",vu=69940,lu=42239,bu=66256,Du=42508,ku="@ }@]",pu=11565,du=43643,wu=120122,hu=68099,mu=67640,Fu=605857695,yu="handler",Eu=104,_u=8457,gu=66207,Cu="from",Su=64321,xu=65629,Tu=42655,Au=102,Bu=11558,Iu=43137,Ou="visit_int",Pu=11502,Nu=126540,Lu=";@ ",Ru="set",Mu=74606,ju=101,Uu="right",Xu="body",Ju=65547,Gu=126550,qu=120133,zu=254,Vu="Invalid number ",Wu=43807,Yu=43738,Hu=126589,$u=68023,Ku=43798,Qu=12539,Zu=8455,ra=100,ta=126628,ea=11670,na="Lookahead.peek failed",ua=120134,aa=42890,ia="visit_int32",fa=42783,ca=43766,sa=119965,oa=43599,va="else",la=69890,ba="the start of a statement",Da=43822,ka="properties",pa=94094,da=43638,wa=43696,ha=120597,ma=64322,Fa="AssignmentPattern",ya=43042,Ea=173782,_a="arguments",ga="comments",Ca=42622,Sa="line",xa="declaration",Ta="static",Aa=68100,Ba=11310,Ia="Unix.Unix_error",Oa="init",Pa=43814,Na="annot",La=119179,Ra=65786,Ma=66503,ja=66303,Ua=64967,Xa="proto",Ja=64255,Ga=8584,qa=120655,za="Stack_overflow",Va=43700,Wa=120654,Ya="@ ",Ha=119361,$a=120539,Ka=-97,Qa=253,Za=64317,ri=65295,ti=12543,ei="Not_found",ni=43359,ui=43967,ai=68680,ii=64324,fi=126530,ci="CallExpression",si="rest",oi=65595,vi=8275,li=43711,bi=126496,Di=69926,ki="visit_array",pi=173823,di="f",wi=8485,hi=68151,mi=43741,Fi="const",yi="typeParameters",Ei=126546,_i=12341,gi=110593,Ci="delete",Si="false",xi=78894,Ti=69881,Ai=66512,Bi=94111,Ii="test",Oi="string",Pi=120076,Ni=43647,Li=128,Ri=66463,Mi=11743,ji=43263,Ui=67593,Xi=44031,Ji=77823,Gi="visit_string",qi=68095,zi=8231,Vi="minus",Wi=119980,Yi=43442,Hi=65481,$i=126590,Ki=67967,Qi="computed",Zi="visit_char",rf=126562,tf=114,ef="id",nf=11718,uf="as",af="delegate",ff=-17,cf="true",sf=119213,of=42237,vf=120628,lf=43776,bf=11505,Df=8412,kf="Invalid_argument",pf=120127,df="Map.bal",wf=120092,hf=94031,mf=67839,Ff="visit_nativeint",yf=126559,Ef="import",_f="prototype",gf=8287,Cf="`.",Sf=65344,xf="debugger",Tf="Internal Error: Found private field in object props",Af=67897,Bf=12348,If=119974,Of=8233,Pf=68405,Nf="attributes",Lf=70084,Rf="label",Mf=43225,jf=71351,Uf=119364,Xf=43583,Jf=67643,Gf=43784,qf="shorthand",zf=126503,Vf=71338,Wf=126463,Yf=69702,Hf="visit_int64",$f=65370,Kf=43743,Qf=917999,Zf="0",rc=64911,tc=119967,ec=126579,nc=42621,uc=126538,ac=64286,ic="explicitType",fc=68466,cc=67669,sc="Sys_blocked_io",oc=64109,vc=177983,lc="visit_bytes",bc=248,Dc="@,]@]",kc="visit_unit",pc="catch",dc=68031,wc=64466,hc=65140,mc=8484,Fc=8205,yc="protected",Ec=42537,_c=66559,gc=65074,Cc=11775,Sc=64274,xc=120571,Tc=246,Ac=120069,Bc=43713,Ic=126570,Oc="object",Pc="break",Nc=42647,Lc=43047,Rc=43695,Mc="%S",jc=126515,Uc=120485,Xc=8525,Jc=126551,Gc=43519,qc=120745,zc=126520,Vc=66045,Wc=126588,Yc=127,Hc=66499,$c=1024,Kc=19893,Qc=43018,Zc=126522,rs=120144,ts=119140,es="returnType",ns=-744106340,us="-",as=92728,is="await",fs=8469,cs=68119,ss="async",os=126521,vs=11703,ls=" : file already exists",bs="left",Ds=65039,ks=16777215,ps=94020,ds=178205,ws=8449,hs=55242,ms=42774,Fs="case",ys=42911,Es=66431,_s=126583,gs=65497,Cs="Invalid legacy octal ",Ss="typeof",xs="targs",Ts=43013,As=94078,Bs=64284,Is=43815,Os=65495,Ps=120687,Ns="public",Ls=119994,Rs=67861,Ms=8526,js=69762,Us="enum",Xs=2147483647,Js=68115,Gs=119170,qs=11702,zs=65598,Vs=67638,Ws=43712,Ys="super",Hs=126547,$s=70095,Ks=126504,Qs=8304,Zs=110591,ro=177972,to="interface",eo=67646,no=-46,uo=120132,ao=68102,io=11735,fo="visit_ref",co=43792,so=-82,oo=119893,vo="bool",lo="default",bo="",Do=65574,ko="trailingComments",po="exportKind",wo="instanceof",ho=43560,mo=8348,Fo=65594,yo=223,Eo="argument",_o=63,go=12442,Co=120085,So=11498,xo=126467,To=42539,Ao=126468,Bo="Match_failure",Io=68191,Oo=13311,Po=126548,No="src/parser/flow_ast.ml",Lo=43471,Ro=63743,Mo=69864,jo=11647,Uo=126591,Xo=74850,Jo=126578,Go=12592,qo="+",zo=119148,Vo=8420,Wo=126537,Yo="{ ",Ho=120145,$o="@,",Ko=64318,Qo=42606,Zo=126500,rv=42999,tv=64310,ev="inexact",nv=119172,uv=65100,av=65615,iv=65278,fv="void",cv=65135,sv=")",ov=70066,vv=43714,lv="let",bv="nan",Dv=69759,kv="@[%s =@ ",pv=194559,dv=43273,wv=126651,hv=119996,mv=43456,Fv=119209,yv=67644,Ev=224,_v=126554,gv=126536,Cv=42735,Sv=126557,xv=57343,Tv="/",Av="property",Bv=68154,Iv=8516,Ov=1073741823,Pv=8505,Nv=65381,Lv="TypeParameterInstantiation",Rv="Literal",Mv=250,jv="number",Uv=65062,Xv=12447,Jv="function",Gv=43574,qv=255,zv=126566,Vv=66719,Wv=42895,Yv=73727,Hv="jsError",$v=8432,Kv=42922,Qv=40959,Zv="unreachable",rl=40908,tl="@]}",el="(Some ",nl="End_of_file",ul=43231,al=8477,il=11359,fl=43709,cl="new",sl="Failure",ol=126564,vl="local",ll="with",bl=8489,Dl=126514,kl=70080,pl=8256,dl=64325,wl=8488,hl=43759,ml=65007,Fl=66461,yl=126535,El=11719,_l=65312,gl=43135,Cl=126619,Sl=44025,xl=56320,Tl=-48,Al=8188,Bl=131071,Il=120770,Ol=12440,Pl="finalizer",Nl="while",Ll="camlinternalFormat.ml",Rl=43782,Ml=12320,jl="elements",Ul=11263,Xl=68607,Jl=8507,Gl="each",ql="Sys_error",zl=11358,Vl=70105,Wl=43014,Yl=11564,Hl=69818,$l=11727,Kl=64829,Ql=120538,Zl="visit_bool",rb=126556,tb=64847,eb=42511,nb=44013,ub=66511,ab=43704,ib=43249,fb=11646,cb="None",sb="int_of_string",ob=64433,vb="operator",lb="name",bb=120,Db=11623,kb=103,pb=42899,db=12288,wb=120744,hb=11679,mb=11559,Fb=71295,yb="callee",Eb=512,_b=70018,gb=11567,Cb=93951,Sb=12292,xb="predicate",Tb="types",Ab=69951,Bb=44011,Ib=8286,Ob=126633,Pb=12686,Nb=65479,Lb="0x",Rb="optional",Mb="@]",jb=65276,Ub=120003,Xb="Unexpected ",Jb="finally",Gb=119981,qb="plus",zb=65055,Vb=12799,Wb=8335,Yb=65535,Hb=69631,$b=65487,Kb="source",Qb=65548,Zb=-673950933,rD=66175,tD=42559,eD=55291,nD=8305,uD="generator",aD=-36,iD=66044,fD=8239,cD="mixed",sD="selfClosing",oD=11734,vD=43790,lD=11686,bD=69687,DD=119976,kD=42654,pD="zero",dD=43388,wD="visit_result",hD=68351,mD=" =",FD="<2>",yD=126602,ED=70015,_D=64297,gD=126529,CD=",@ ",SD="%a",xD=120831,TD=43347,AD=120781,BD=11695,ID=68111,OD=43204,PD=11711,ND=67583,LD=43009,RD="visit_float",MD=126584,jD="identifier",UD="prefix",XD="Internal Error: Found object private prop",JD=8276,GD=11492,qD="class",zD=66351,VD=65575,WD=42894,YD="continue",HD=119145,$D=65663,KD=68120,QD=120779,ZD=19967,rk=55203,tk="key",ek=126563,nk=8486,uk=43702,ak=" ",ik="RestElement",fk="Undefined_recursive_module",ck=67592,sk=126634,ok=74751,vk=43334,lk=43481,bk=65305,Dk=11311,kk="typeAnnotation",pk=43019,dk=120126,wk=69743,hk=8487,mk="specifiers",Fk=64285,yk="Set.bal",Ek=43641,_k="Unexpected token `",gk="visit_lazy_t",Ck=8543,Sk="()",xk=120093,Tk=119162,Ak=68029,Bk=65023,Ik=8521,Ok="importKind",Pk="extends",Nk=43642,Lk=64296,Rk=43259,Mk=64913;function jk(r,t){throw[0,r,t]}var Uk=[0];function Xk(r,t){if("function"==typeof t)return r.fun=t,0;if(t.fun)return r.fun=t.fun,0;for(var e=t.length;e--;)r[e]=t[e];return 0}function Jk(r,t,e){for(var n=new Array(e),u=0;u<e;u++)n[u]=r[t+u];return n}function Gk(r,t,e){var n=String.fromCharCode;if(0==t&&e<=4096&&e==r.length)return n.apply(null,r);for(var u=bo;0<e;t+=$c,e-=$c)u+=n.apply(null,Jk(r,t,Math.min(e,$c)));return u}function qk(t){if(r.Uint8Array)var e=new r.Uint8Array(t.l);else e=new Array(t.l);for(var n=t.c,u=n.length,a=0;a<u;a++)e[a]=n.charCodeAt(a);for(u=t.l;a<u;a++)e[a]=0;return t.c=e,t.t=4,e}function zk(r,t,e,n,u){if(0==u)return 0;if(0==n&&(u>=e.l||2==e.t&&u>=e.c.length))e.c=4==r.t?Gk(r.c,t,u):0==t&&r.c.length==u?r.c:r.c.substr(t,u),e.t=e.c.length==e.l?0:2;else if(2==e.t&&n==e.c.length)e.c+=4==r.t?Gk(r.c,t,u):0==t&&r.c.length==u?r.c:r.c.substr(t,u),e.t=e.c.length==e.l?0:2;else{4!=e.t&&qk(e);var a=r.c,i=e.c;if(4==r.t)if(n<=t)for(var f=0;f<u;f++)i[n+f]=a[t+f];else for(f=u-1;f>=0;f--)i[n+f]=a[t+f];else{var c=Math.min(u,a.length-t);for(f=0;f<c;f++)i[n+f]=a.charCodeAt(t+f);for(;f<u;f++)i[n+f]=0}}return 0}function Vk(r,t,e,n,u){return zk(r,t,e,n,u)}function Wk(r,t){if(t.repeat)return t.repeat(r);var e=bo,n=0;if(0==r)return e;for(;;){if(1&r&&(e+=t),0==(r>>=1))return e;t+=t,9==++n&&t.slice(0,1)}}function Yk(r){2==r.t?r.c+=Wk(r.l-r.c.length,"\0"):r.c=Gk(r.c,0,r.c.length),r.t=0}function Hk(r,t){return r===t?1:(6&r.t&&Yk(r),6&t.t&&Yk(t),r.c==t.c?1:0)}function $k(r){return r}function Kk(r){if(r.length<24){for(var t=0;t<r.length;t++)if(r.charCodeAt(t)>Yc)return!1;return!0}return!/[^\x00-\x7f]/.test(r)}function Qk(r){switch(r.t){case 9:return r.c;default:Yk(r);case 0:if(Kk(r.c))return r.t=9,r.c;r.t=8;case 8:return function(r){for(var t,e,n,u,a=bo,i=bo,f=0,c=r.length;f<c;f++){if((e=r.charCodeAt(f))<Li){for(var s=f+1;s<c&&(e=r.charCodeAt(s))<Li;s++);if(s-f>Eb?(i.substr(0,1),a+=i,i=bo,a+=r.slice(f,s)):i+=r.slice(f,s),s==c)break;f=s}u=1,++f<c&&(-64&(n=r.charCodeAt(f)))==j&&(t=n+(e<<6),e<Ev?(u=t-12416)<Li&&(u=1):(u=2,++f<c&&(-64&(n=r.charCodeAt(f)))==j&&(t=n+(t<<6),e<ce?((u=t-925824)<hn||u>=55295&&u<57344)&&(u=2):(u=3,++f<c&&(-64&(n=r.charCodeAt(f)))==j&&e<245&&((u=n-63447168+(t<<6))<65536||u>1114111)&&(u=3))))),u<4?(f-=u,i+="�"):i+=u>kt?String.fromCharCode(55232+(u>>10),xl+(1023&u)):String.fromCharCode(u),i.length>$c&&(i.substr(0,1),a+=i,i=bo)}return a+i}(r.c)}}function Zk(r,t,e){this.t=r,this.c=t,this.l=e}function rp(r){return new Zk(0,r,r.length)}function tp(r,t){jk(r,rp(t))}function ep(r){tp(Uk.Invalid_argument,r)}function np(){ep(nt)}function up(r,t,e){if(e&=255,4!=r.t){if(t==r.c.length)return r.c+=String.fromCharCode(e),t+1==r.l&&(r.t=0),0;qk(r)}return r.c[t]=e,0}function ap(r,t,e){return t>>>0>=r.l&&np(),up(r,t,e)}function ip(r,t){switch(6&r.t){default:if(t>=r.c.length)return 0;case 0:return r.c.charCodeAt(t);case 4:return r.c[t]}}function fp(r,t){if(r.fun)return fp(r.fun,t);var e=r.length,n=t.length,u=e-n;return 0==u?r.apply(null,t):u<0?fp(r.apply(null,Jk(t,0,e)),Jk(t,e,n-e)):function(e){return fp(r,function(r,t){for(var e=r.length,n=new Array(e+1),u=0;u<e;u++)n[u]=r[u];return n[u]=t,n}(t,e))}}function cp(r,t){return t>>>0>=r.length-1&&ep(nt),r}function sp(r,t){var e=r[3]<<16,n=t[3]<<16;return e>n?1:e<n?-1:r[2]>t[2]?1:r[2]<t[2]?-1:r[1]>t[1]?1:r[1]<t[1]?-1:0}function op(r,t){return r<t?-1:r==t?0:1}function vp(r,t){return 6&r.t&&Yk(r),6&t.t&&Yk(t),r.c<t.c?-1:r.c>t.c?1:0}function lp(r,t,e){for(var n=[];;){if(!e||r!==t)if(r instanceof Zk){if(!(t instanceof Zk))return 1;if(r!==t&&0!=(i=vp(r,t)))return i}else if(r instanceof Array&&r[0]===(0|r[0])){var u=r[0];if(u===zu&&(u=0),u===Mv){r=r[1];continue}if(!(t instanceof Array&&t[0]===(0|t[0])))return 1;var a=t[0];if(a===zu&&(a=0),a===Mv){t=t[1];continue}if(u!=a)return u<a?-1:1;switch(u){case 248:if(0!=(i=op(r[2],t[2])))return i;break;case 251:ep("equal: abstract value");case 255:var i;if(0!=(i=sp(r,t)))return i;break;default:if(r.length!=t.length)return r.length<t.length?-1:1;r.length>1&&n.push(r,t,1)}}else{if(t instanceof Zk||t instanceof Array&&t[0]===(0|t[0]))return-1;if("number"!=typeof r&&r&&r.compare){var f=r.compare(t,e);if(0!=f)return f}else if("function"==typeof r)ep("compare: functional value");else{if(r<t)return-1;if(r>t)return 1;if(r!=t){if(!e)return NaN;if(r==r)return 1;if(t==t)return-1}}}if(0==n.length)return 0;var c=n.pop();t=n.pop(),c+1<(r=n.pop()).length&&n.push(r,t,c+1),r=r[c],t=t[c]}}function bp(r,t){return lp(r,t,!0)}function Dp(r){return r<0&&ep("Bytes.create"),new Zk(r?2:9,bo,r)}function kp(r,t){return+(0==lp(r,t,!1))}function pp(r){tp(Uk.Failure,r)}function dp(r){return 0!=(6&r.t)&&Yk(r),r.c}function wp(r){var t;if(t=+(r=dp(r)),r.length>0&&t==t)return t;if(t=+(r=r.replace(/_/g,bo)),r.length>0&&t==t||/^[+-]?nan$/i.test(r))return t;var e=/^ *([+-]?)0x([0-9a-f]+)\.?([0-9a-f]*)p([+-]?[0-9]+)/i.exec(r);if(e){var n=e[3].replace(/0+$/,bo),u=parseInt(e[1]+e[2]+n,16),a=(0|e[4])-4*n.length;return t=u*Math.pow(2,a)}return/^\+?inf(inity)?$/i.test(r)?1/0:/^-inf(inity)?$/i.test(r)?-1/0:void pp("float_of_string")}function hp(r){var t=(r=dp(r)).length;t>31&&ep("format_int: format too long");for(var e={justify:qo,signstyle:us,filler:ak,alternate:!1,base:0,signedconv:!1,width:0,uppercase:!1,sign:1,prec:-1,conv:di},n=0;n<t;n++){var u=r.charAt(n);switch(u){case"-":e.justify=us;break;case"+":case" ":e.signstyle=u;break;case"0":e.filler=Zf;break;case"#":e.alternate=!0;break;case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":for(e.width=0;(u=r.charCodeAt(n)-48)>=0&&u<=9;)e.width=10*e.width+u,n++;n--;break;case".":for(e.prec=0,n++;(u=r.charCodeAt(n)-48)>=0&&u<=9;)e.prec=10*e.prec+u,n++;n--;case"d":case"i":e.signedconv=!0;case"u":e.base=10;break;case"x":e.base=16;break;case"X":e.base=16,e.uppercase=!0;break;case"o":e.base=8;break;case"e":case"f":case"g":e.signedconv=!0,e.conv=u;break;case"E":case"F":case"G":e.signedconv=!0,e.uppercase=!0,e.conv=u.toLowerCase()}}return e}function mp(r,t){r.uppercase&&(t=t.toUpperCase());var e=t.length;r.signedconv&&(r.sign<0||r.signstyle!=us)&&e++,r.alternate&&(8==r.base&&(e+=1),16==r.base&&(e+=2));var n=bo;if(r.justify==qo&&r.filler==ak)for(var u=e;u<r.width;u++)n+=ak;if(r.signedconv&&(r.sign<0?n+=us:r.signstyle!=us&&(n+=r.signstyle)),r.alternate&&8==r.base&&(n+=Zf),r.alternate&&16==r.base&&(n+=Lb),r.justify==qo&&r.filler==Zf)for(u=e;u<r.width;u++)n+=Zf;if(n+=t,r.justify==us)for(u=e;u<r.width;u++)n+=ak;return rp(n)}function Fp(r,t){var e=hp(r),n=e.prec<0?6:e.prec;if((t<0||0==t&&1/t==-1/0)&&(e.sign=-1,t=-t),isNaN(t))u=bv,e.filler=ak;else if(isFinite(t))switch(e.conv){case"e":var u,a=(u=t.toExponential(n)).length;u.charAt(a-3)==Pr&&(u=u.slice(0,a-1)+Zf+u.slice(a-1));break;case"f":u=t.toFixed(n);break;case"g":n=n||1;var i=(u=t.toExponential(n-1)).indexOf(Pr),f=+u.slice(i+1);if(f<-4||t>=1e21||t.toFixed(0).length>n){for(a=i-1;u.charAt(a)==Zf;)a--;u.charAt(a)==ee&&a--,a=(u=u.slice(0,a+1)+u.slice(i)).length,u.charAt(a-3)==Pr&&(u=u.slice(0,a-1)+Zf+u.slice(a-1));break}var c=n;if(f<0)c-=f+1,u=t.toFixed(c);else for(;(u=t.toFixed(c)).length>n+1;)c--;if(c){for(a=u.length-1;u.charAt(a)==Zf;)a--;u.charAt(a)==ee&&a--,u=u.slice(0,a+1)}}else u="inf",e.filler=ak;return mp(e,u)}function yp(r,t){if(dp(r)==ou)return rp(bo+t);var e=hp(r);t<0&&(e.signedconv?(e.sign=-1,t=-t):t>>>=0);var n=t.toString(e.base);if(e.prec>=0){e.filler=ak;var u=e.prec-n.length;u>0&&(n=Wk(u,Zf)+n)}return mp(e,n)}Zk.prototype.toString=function(){return Qk(this)},Zk.prototype.slice=function(){var r=4==this.t?this.c.slice():this.c;return new Zk(this.t,r,this.l)};var Ep=0;function _p(){return Ep++}var gp=[];function Cp(r,t,e){var n=r[1],u=gp[e];if(null===u)for(var a=gp.length;a<e;a++)gp[a]=0;else if(n[u]===t)return n[u-1];for(var i,f=3,c=2*n[1]+1;f<c;)t<n[(i=f+c>>1|1)+1]?c=i-2:f=i;return gp[e]=f+1,t==n[f+1]?n[f]:0}function Sp(r,t){return+(lp(r,t,!1)>=0)}function xp(r){var t=9;return Kk(r)||(t=8,r=function(r){for(var t,e,n=bo,u=n,a=0,i=r.length;a<i;a++){if((t=r.charCodeAt(a))<Li){for(var f=a+1;f<i&&(t=r.charCodeAt(f))<Li;f++);if(f-a>Eb?(u.substr(0,1),n+=u,u=bo,n+=r.slice(a,f)):u+=r.slice(a,f),f==i)break;a=f}t<hn?(u+=String.fromCharCode(192|t>>6),u+=String.fromCharCode(Li|t&_o)):t<55296||t>=xv?u+=String.fromCharCode(Ev|t>>12,Li|t>>6&_o,Li|t&_o):t>=56319||a+1==i||(e=r.charCodeAt(a+1))<xl||e>xv?u+="�":(a++,t=(t<<10)+e-56613888,u+=String.fromCharCode(ce|t>>18,Li|t>>12&_o,Li|t>>6&_o,Li|t&_o)),u.length>$c&&(u.substr(0,1),n+=u,u=bo)}return n+u}(r)),new Zk(t,r,r.length)}function Tp(r){return 0==(r[3]|r[2]|r[1])}function Ap(r){return[qv,r&ks,r>>24&ks,r>>31&kt]}function Bp(r){for(var t=r.length,e=new Array(t),n=0;n<t;n++)e[n]=r[n];return e}function Ip(r,t){var e=r[1]-t[1],n=r[2]-t[2]+(e>>24),u=r[3]-t[3]+(n>>24);return[qv,e&ks,n&ks,u&kt]}function Op(r,t){return r[3]>t[3]?1:r[3]<t[3]?-1:r[2]>t[2]?1:r[2]<t[2]?-1:r[1]>t[1]?1:r[1]<t[1]?-1:0}function Pp(r){r[3]=r[3]<<1|r[2]>>23,r[2]=(r[2]<<1|r[1]>>23)&ks,r[1]=r[1]<<1&ks}function Np(r){r[1]=(r[1]>>>1|r[2]<<23)&ks,r[2]=(r[2]>>>1|r[3]<<23)&ks,r[3]=r[3]>>>1}function Lp(r,t){for(var e=0,n=Bp(r),u=Bp(t),a=[qv,0,0,0];Op(n,u)>0;)e++,Pp(u);for(;e>=0;)e--,Pp(a),Op(n,u)>=0&&(a[1]++,n=Ip(n,u)),Np(u);return[0,a,n]}function Rp(r){return r[1]|r[2]<<24}function Mp(r){var t=-r[1],e=-r[2]+(t>>24),n=-r[3]+(e>>24);return[qv,t&ks,e&ks,n&kt]}function jp(r){return r.l}function Up(r,t){switch(6&r.t){default:if(t>=r.c.length)return 0;case 0:return r.c.charCodeAt(t);case 4:return r.c[t]}}function Xp(r,t){var e=r[1]+t[1],n=r[2]+t[2]+(e>>24),u=r[3]+t[3]+(n>>24);return[qv,e&ks,n&ks,u&kt]}var Jp=Math.pow(2,-24);function Gp(r,t){var e=r[1]*t[1],n=(e*Jp|0)+r[2]*t[1]+r[1]*t[2],u=(n*Jp|0)+r[3]*t[1]+r[2]*t[2]+r[1]*t[3];return[qv,e&ks,n&ks,u&kt]}function qp(r,t){return Op(r,t)<0}function zp(r){var t=0,e=jp(r),n=10,u=1;if(e>0)switch(Up(r,t)){case 45:t++,u=-1;break;case 43:t++,u=1}if(t+1<e&&48==Up(r,t))switch(Up(r,t+1)){case 120:case 88:n=16,t+=2;break;case 111:case 79:n=8,t+=2;break;case 98:case 66:n=2,t+=2}return[t,u,n]}function Vp(r){return r>=48&&r<=57?r-48:r>=65&&r<=90?r-55:r>=97&&r<=O?r-87:-1}function Wp(r){var t=zp(r),e=t[0],n=t[1],u=t[2],a=Ap(u),i=Lp([qv,ks,268435455,kt],a)[1],f=Up(r,e),c=Vp(f);(c<0||c>=u)&&pp(sb);for(var s=Ap(c);;)if(95!=(f=Up(r,++e))){if((c=Vp(f))<0||c>=u)break;qp(i,s)&&pp(sb),c=Ap(c),qp(s=Xp(Gp(a,s),c),c)&&pp(sb)}return e!=jp(r)&&pp(sb),10==t[2]&&qp([qv,0,0,32768],s)&&pp(sb),n<0&&(s=Mp(s)),s}function Yp(r){return(r[3]<<16)*Math.pow(2,32)+r[2]*Math.pow(2,24)+r[1]}function Hp(r){var t=zp(r),e=t[0],n=t[1],u=t[2],a=jp(r),i=e<a?Up(r,e):0,f=Vp(i);(f<0||f>=u)&&pp(sb);var c=f;for(e++;e<a;e++)if(95!=(i=Up(r,e))){if((f=Vp(i))<0||f>=u)break;(c=u*c+f)>-1>>>0&&pp(sb)}return e!=a&&pp(sb),c*=n,10==u&&(0|c)!=c&&pp(sb),0|c}function $p(r){return Jk(r,1,r.length-1)}function Kp(r){return!!r}function Qp(r){return r.toString()}function Zp(r){for(var t={},e=1;e<r.length;e++){var n=r[e];t[n[1].toString()]=n[2]}return t}function rd(r,t){r=r+1|0;var e=new Array(r);e[0]=0;for(var n=1;n<r;n++)e[n]=t;return e}function td(r){return new Zk(4,r,r.length)}var ed=function(){function r(r,t){return r+t|0}function t(t,e,n,u,a,i){return e=r(r(e,t),r(u,i)),r(e<<a|e>>>32-a,n)}function e(r,e,n,u,a,i,f){return t(e&n|~e&u,r,e,a,i,f)}function n(r,e,n,u,a,i,f){return t(e&u|n&~u,r,e,a,i,f)}function u(r,e,n,u,a,i,f){return t(e^n^u,r,e,a,i,f)}function a(r,e,n,u,a,i,f){return t(n^(e|~u),r,e,a,i,f)}function i(t,i){for(t[(b=i)>>2]|=Li<<8*(3&b),b=8+(-4&b);(63&b)<60;b+=4)t[(b>>2)-1]=0;t[(b>>2)-1]=i<<3,t[b>>2]=i>>29&536870911;var f=[1732584193,4023233417,2562383102,271733878];for(b=0;b<t.length;b+=16){var c=f[0],s=f[1],o=f[2],v=f[3];c=e(c,s,o,v,t[b+0],7,3614090360),v=e(v,c,s,o,t[b+1],12,3905402710),o=e(o,v,c,s,t[b+2],17,606105819),s=e(s,o,v,c,t[b+3],22,3250441966),c=e(c,s,o,v,t[b+4],7,4118548399),v=e(v,c,s,o,t[b+5],12,1200080426),o=e(o,v,c,s,t[b+6],17,2821735955),s=e(s,o,v,c,t[b+7],22,4249261313),c=e(c,s,o,v,t[b+8],7,1770035416),v=e(v,c,s,o,t[b+9],12,2336552879),o=e(o,v,c,s,t[b+10],17,4294925233),s=e(s,o,v,c,t[b+11],22,2304563134),c=e(c,s,o,v,t[b+12],7,1804603682),v=e(v,c,s,o,t[b+13],12,4254626195),o=e(o,v,c,s,t[b+14],17,2792965006),c=n(c,s=e(s,o,v,c,t[b+15],22,1236535329),o,v,t[b+1],5,4129170786),v=n(v,c,s,o,t[b+6],9,3225465664),o=n(o,v,c,s,t[b+11],14,643717713),s=n(s,o,v,c,t[b+0],20,3921069994),c=n(c,s,o,v,t[b+5],5,3593408605),v=n(v,c,s,o,t[b+10],9,38016083),o=n(o,v,c,s,t[b+15],14,3634488961),s=n(s,o,v,c,t[b+4],20,3889429448),c=n(c,s,o,v,t[b+9],5,568446438),v=n(v,c,s,o,t[b+14],9,3275163606),o=n(o,v,c,s,t[b+3],14,4107603335),s=n(s,o,v,c,t[b+8],20,1163531501),c=n(c,s,o,v,t[b+13],5,2850285829),v=n(v,c,s,o,t[b+2],9,4243563512),o=n(o,v,c,s,t[b+7],14,1735328473),c=u(c,s=n(s,o,v,c,t[b+12],20,2368359562),o,v,t[b+5],4,4294588738),v=u(v,c,s,o,t[b+8],11,2272392833),o=u(o,v,c,s,t[b+11],16,1839030562),s=u(s,o,v,c,t[b+14],23,4259657740),c=u(c,s,o,v,t[b+1],4,2763975236),v=u(v,c,s,o,t[b+4],11,1272893353),o=u(o,v,c,s,t[b+7],16,4139469664),s=u(s,o,v,c,t[b+10],23,3200236656),c=u(c,s,o,v,t[b+13],4,681279174),v=u(v,c,s,o,t[b+0],11,3936430074),o=u(o,v,c,s,t[b+3],16,3572445317),s=u(s,o,v,c,t[b+6],23,76029189),c=u(c,s,o,v,t[b+9],4,3654602809),v=u(v,c,s,o,t[b+12],11,3873151461),o=u(o,v,c,s,t[b+15],16,530742520),c=a(c,s=u(s,o,v,c,t[b+2],23,3299628645),o,v,t[b+0],6,4096336452),v=a(v,c,s,o,t[b+7],10,1126891415),o=a(o,v,c,s,t[b+14],15,2878612391),s=a(s,o,v,c,t[b+5],21,4237533241),c=a(c,s,o,v,t[b+12],6,1700485571),v=a(v,c,s,o,t[b+3],10,2399980690),o=a(o,v,c,s,t[b+10],15,4293915773),s=a(s,o,v,c,t[b+1],21,2240044497),c=a(c,s,o,v,t[b+8],6,1873313359),v=a(v,c,s,o,t[b+15],10,4264355552),o=a(o,v,c,s,t[b+6],15,2734768916),s=a(s,o,v,c,t[b+13],21,1309151649),c=a(c,s,o,v,t[b+4],6,4149444226),v=a(v,c,s,o,t[b+11],10,3174756917),o=a(o,v,c,s,t[b+2],15,718787259),s=a(s,o,v,c,t[b+9],21,3951481745),f[0]=r(c,f[0]),f[1]=r(s,f[1]),f[2]=r(o,f[2]),f[3]=r(v,f[3])}for(var l=new Array(16),b=0;b<4;b++)for(var D=0;D<4;D++)l[4*b+D]=f[b]>>8*D&255;return l}return function(r,t,e){var n=[];switch(6&r.t){default:Yk(r);case 0:for(var u=r.c,a=0;a<e;a+=4){var f=a+t;n[a>>2]=u.charCodeAt(f)|u.charCodeAt(f+1)<<8|u.charCodeAt(f+2)<<16|u.charCodeAt(f+3)<<24}for(;a<e;a++)n[a>>2]|=u.charCodeAt(a+t)<<8*(3&a);break;case 4:var c=r.c;for(a=0;a<e;a+=4){f=a+t;n[a>>2]=c[f]|c[f+1]<<8|c[f+2]<<16|c[f+3]<<24}for(;a<e;a++)n[a>>2]|=c[a+t]<<8*(3&a)}return td(i(n,e))}}();function nd(r){return r.l}function ud(r){tp(Uk.Sys_error,r)}var ad=new Array;function id(r){var t=ad[r];if(t.opened||ud("Cannot flush a closed channel"),!t.buffer||t.buffer==bo)return 0;if(t.fd&&Uk.fds[t.fd]&&Uk.fds[t.fd].output){var e=Uk.fds[t.fd].output;switch(e.length){case 2:e(r,t.buffer);break;default:e(t.buffer)}}return t.buffer=bo,0}if(r.process&&r.process.cwd)var fd=r.process.cwd().replace(/\\/g,Tv);else fd="/static";function cd(){}function sd(r){this.data=r}function od(r,t){this.content={},this.root=r,this.lookupFun=t}function vd(r){return 4!=r.t&&qk(r),r.c}fd.slice(-1)!==Tv&&(fd+=Tv),sd.prototype=new cd,sd.prototype.truncate=function(r){var t=this.data;this.data=Dp(0|r),zk(t,0,this.data,0,r)},sd.prototype.length=function(){return nd(this.data)},sd.prototype.write=function(r,t,e,n){var u=this.length();if(r+n>=u){var a=Dp(r+n),i=this.data;this.data=a,zk(i,0,this.data,0,u)}return zk(t,e,this.data,r,n),0},sd.prototype.read=function(r,t,e,n){this.length();return zk(this.data,r,t,e,n),0},sd.prototype.read_one=function(r){return function(r,t){return t>>>0>=r.l&&np(),ip(r,t)}(this.data,r)},sd.prototype.close=function(){},sd.prototype.constructor=sd,od.prototype.nm=function(r){return this.root+r},od.prototype.lookup=function(r){if(!this.content[r]&&this.lookupFun){var t=this.lookupFun(rp(this.root),rp(r));0!==t&&(this.content[r]=new sd(t[1]))}},od.prototype.exists=function(r){if(r==bo)return 1;var t=new RegExp("^"+(r+Tv));for(var e in this.content)if(e.match(t))return 1;return this.lookup(r),this.content[r]?1:0},od.prototype.readdir=function(r){var t=new RegExp("^"+(r==bo?bo:r+Tv)+Mr),e={},n=[];for(var u in this.content){var a=u.match(t);a&&!e[a[1]]&&(e[a[1]]=!0,n.push(a[1]))}return n},od.prototype.is_dir=function(r){var t=new RegExp("^"+(r==bo?bo:r+Tv)+Mr);for(var e in this.content){if(e.match(t))return 1}return 0},od.prototype.unlink=function(r){var t=!!this.content[r];return delete this.content[r],t},od.prototype.open=function(r,t){if(t.rdonly&&t.wronly&&ud(this.nm(r)+" : flags Open_rdonly and Open_wronly are not compatible"),t.text&&t.binary&&ud(this.nm(r)+" : flags Open_text and Open_binary are not compatible"),this.lookup(r),this.content[r]){this.is_dir(r)&&ud(this.nm(r)+" : is a directory"),t.create&&t.excl&&ud(this.nm(r)+ls);var e=this.content[r];return t.truncate&&e.truncate(),e}if(t.create)return this.content[r]=new sd(Dp(0)),this.content[r];!function(r){ud((r=r instanceof Zk?r.toString():r)+": No such file or directory")}(this.nm(r))},od.prototype.register=function(r,t){if(this.content[r]&&ud(this.nm(r)+ls),t instanceof Zk)this.content[r]=new sd(t);else if(t instanceof Array)this.content[r]=new sd(td(t));else if(t.toString){var e=rp(t.toString());this.content[r]=new sd(e)}},od.prototype.constructor=od;var ld=r.Buffer;function bd(r){this.fs=Z,this.fd=r}function Dd(r){this.fs=Z,this.root=r}bd.prototype=new cd,bd.prototype.truncate=function(r){this.fs.ftruncateSync(this.fd,0|r)},bd.prototype.length=function(){return this.fs.fstatSync(this.fd).size},bd.prototype.write=function(t,e,n,u){var a=vd(e);a instanceof r.Uint8Array||(a=new r.Uint8Array(a));var i=ld.from(a);return this.fs.writeSync(this.fd,i,n,u,t),0},bd.prototype.read=function(t,e,n,u){var a=vd(e);a instanceof r.Uint8Array||(a=new r.Uint8Array(a));var i=ld.from(a);this.fs.readSync(this.fd,i,n,u,t);for(var f=0;f<u;f++)ap(e,n+f,i[n+f]);return 0},bd.prototype.read_one=function(t){var e=new r.Uint8Array(1),n=ld.from(e);return this.fs.readSync(this.fd,n,0,1,t),n[0]},bd.prototype.close=function(){this.fs.closeSync(this.fd)},bd.prototype.constructor=bd,Dd.prototype.nm=function(r){return this.root+r},Dd.prototype.exists=function(r){return this.fs.existsSync(this.nm(r))?1:0},Dd.prototype.readdir=function(r){return this.fs.readdirSync(this.nm(r))},Dd.prototype.is_dir=function(r){return this.fs.statSync(this.nm(r)).isDirectory()?1:0},Dd.prototype.unlink=function(r){var t=this.fs.existsSync(this.nm(r))?1:0;return this.fs.unlinkSync(this.nm(r)),t},Dd.prototype.open=function(r,t){var e=rr,n=0;for(var u in t)switch(u){case"rdonly":n|=e.O_RDONLY;break;case"wronly":n|=e.O_WRONLY;break;case"append":n|=e.O_WRONLY|e.O_APPEND;break;case"create":n|=e.O_CREAT;break;case"truncate":n|=e.O_TRUNC;break;case"excl":n|=e.O_EXCL;break;case"binary":n|=e.O_BINARY;break;case"text":n|=e.O_TEXT;break;case"nonblock":n|=e.O_NONBLOCK}return new bd(this.fs.openSync(this.nm(r),n))},Dd.prototype.rename=function(r,t){this.fs.renameSync(this.nm(r),this.nm(t))},Dd.prototype.constructor=Dd;fd.match(/[^\/]*\//)[0];function kd(r,t,e,n){void 0===Uk.fds&&(Uk.fds=new Array),n=n||{};var u={};return u.file=e,u.offset=n.append?e.length():0,u.flags=n,u.output=t,Uk.fds[r]=u,(!Uk.fd_last_idx||r>Uk.fd_last_idx)&&(Uk.fd_last_idx=r),r}function pd(r){var t=Uk.fds[r];t.flags.rdonly&&ud(U+r+" is readonly");var e={file:t.file,offset:t.offset,fd:r,opened:!0,out:!0,buffer:bo};return ad[e.fd]=e,e.fd}function dd(r,t,e,n){return function(r,t,e,n){var u,a=ad[r];a.opened||ud("Cannot output to a closed channel"),0==e&&nd(t)==n?u=t:zk(t,e,u=Dp(n),0,n);var i=dp(u),f=i.lastIndexOf("\n");return f<0?a.buffer+=i:(a.buffer+=i.substr(0,f+1),id(r),a.buffer+=i.substr(f+1)),0}(r,t,e,n)}function wd(r){throw r}function hd(r,t){return 0==t&&wd(Uk.Division_by_zero),r%t}function md(r,t){return+(0!=lp(r,t,!1))}function Fd(r,t){var e=new Array(t+1);e[0]=r;for(var n=1;n<=t;n++)e[n]=0;return e}function yd(r){return r instanceof Array?r[0]:r instanceof Zk?Qt:1e3}function Ed(t,e,n){n&&r.toplevelReloc&&(t=r.toplevelReloc(n)),Uk[t+1]=e,n&&(Uk[n]=e)}void 0!==r.process&&void 0!==r.process.versions&&r.process.versions.node,kd(0,(function(r,t){var e=ad[r],n=rp(t),u=jp(n);return e.file.write(e.offset,n,0,u),e.offset+=u,0}),new sd(Dp(0))),kd(1,(function(t){var e=r;if(e.process&&e.process.stdout&&e.process.stdout.write)e.process.stdout.write(t);else{10==t.charCodeAt(t.length-1)&&(t=t.substr(0,t.length-1));var n=e.console;n&&n.log&&n.log(t)}}),new sd(Dp(0))),kd(2,(function(t){var e=r;if(e.process&&e.process.stdout&&e.process.stdout.write)e.process.stderr.write(t);else{10==t.charCodeAt(t.length-1)&&(t=t.substr(0,t.length-1));var n=e.console;n&&n.error&&n.error(t)}}),new sd(Dp(0)));var _d={};function gd(r,t){return r===t?1:(6&r.t&&Yk(r),6&t.t&&Yk(t),r.c==t.c?1:0)}function Cd(r,t){return t>>>0>=r.l&&np(),Up(r,t)}function Sd(r,t){return 1-gd(r,t)}function xd(r){return r}function Td(t){var e=r,n=t.toString();return e.process&&e.process.env&&null!=e.process.env[n]?xp(e.process.env[n]):r.jsoo_static_env&&r.jsoo_static_env[n]?xp(r.jsoo_static_env[n]):void wd(Uk.Not_found)}function Ad(r){for(;r&&r.joo_tramp;)r=r.joo_tramp.apply(null,r.joo_args);return r}function Bd(r,t){return{joo_tramp:r,joo_args:t}}function Id(r){return r}function Od(r){return _d[r]}function Pd(t){return t instanceof Array?t:r.RangeError&&t instanceof r.RangeError&&t.message&&t.message.match(/maximum call stack/i)?Id(Uk.Stack_overflow):r.InternalError&&t instanceof r.InternalError&&t.message&&t.message.match(/too much recursion/i)?Id(Uk.Stack_overflow):t instanceof r.Error&&Od(Hv)?[0,Od(Hv),t]:[0,Uk.Failure,xp(String(t))]}function Nd(r,t){return 1==r.length?r(t):fp(r,[t])}function Ld(r,t,e){return 2==r.length?r(t,e):fp(r,[t,e])}function Rd(r,t,e,n){return 3==r.length?r(t,e,n):fp(r,[t,e,n])}function Md(r,t,e,n,u){return 4==r.length?r(t,e,n,u):fp(r,[t,e,n,u])}function jd(r,t,e,n,u,a){return 5==r.length?r(t,e,n,u,a):fp(r,[t,e,n,u,a])}var Ud=[bc,rp(Hr),-1],Xd=[bc,rp(ql),-2],Jd=[bc,rp(sl),-3],Gd=[bc,rp(kf),-4],qd=[bc,rp(ei),-7],zd=[bc,rp(Bo),-8],Vd=[bc,rp(za),-9],Wd=[bc,rp(Ke),-11],Yd=[bc,rp(fk),-12],Hd=[0,[11,rp('File "'),[2,0,[11,rp('", line '),[4,0,0,0,[11,rp(", characters "),[4,0,0,0,[12,45,[4,0,0,0,[11,rp(": "),[2,0,0]]]]]]]]]],rp('File "%s", line %d, characters %d-%d: %s')],$d=[0,rp(kc),rp(Gi),rp(wD),rp(fo),rp(uu),rp(Ff),rp(Re),rp(gk),rp(Hf),rp(ia),rp(Ou),rp(RD),rp(Zi),rp(lc),rp(Zl),rp(ki)],Kd=[0,rp(pD),rp(qb)],Qd=[0,rp(pD),rp(kc),rp(Gi),rp(wD),rp(fo),rp(uu),rp(Ff),rp(Re),rp(gk),rp(Hf),rp(ia),rp(Ou),rp(RD),rp(Zi),rp(lc),rp(Zl),rp(ki),rp(qb)],Zd=[0,0,[0,0,0],[0,0,0]],rw=[0,0],tw=rp(""),ew=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),nw=[0,0,0,0,0,0,0,0,1,0],uw=[0,0,0],aw=[0,0];Ed(11,Yd,fk),Ed(10,Wd,Ke),Ed(9,[bc,rp(sc),-10],sc),Ed(8,Vd,za),Ed(7,zd,Bo),Ed(6,qd,ei),Ed(5,[bc,rp(Wn),-6],Wn),Ed(4,[bc,rp(nl),-5],nl),Ed(3,Gd,kf),Ed(2,Jd,sl),Ed(1,Xd,ql),Ed(0,Ud,Hr);var iw=rp("output_substring"),fw=rp("%.12g"),cw=rp(ee),sw=rp(cf),ow=rp(Si),vw=rp("\\\\"),lw=rp("\\'"),bw=rp("\\b"),Dw=rp("\\t"),kw=rp("\\n"),pw=rp("\\r"),dw=rp("Char.chr"),ww=rp("List.iter2"),hw=rp("List.fold_left2"),mw=[0,rp("list.ml"),268,11],Fw=rp("tl"),yw=rp("hd"),Ew=rp("String.blit / Bytes.blit_string"),_w=rp("Bytes.blit"),gw=rp("String.sub / Bytes.sub"),Cw=rp("String.contains_from / Bytes.contains_from"),Sw=rp("Array.blit"),xw=rp("Array.sub"),Tw=rp("Array.init"),Aw=rp("Set.remove_min_elt"),Bw=[0,0,0,0],Iw=[0,0,0],Ow=[0,rp("set.ml"),514,18],Pw=rp(yk),Nw=rp(yk),Lw=rp(yk),Rw=rp(yk),Mw=rp("Map.remove_min_elt"),jw=[0,0,0,0],Uw=[0,rp("map.ml"),397,10],Xw=[0,0,0],Jw=rp(df),Gw=rp(df),qw=rp(df),zw=rp(df),Vw=rp("CamlinternalLazy.Undefined"),Ww=rp("Buffer.add_substring/add_subbytes"),Yw=rp("Buffer.add: cannot grow buffer"),Hw=rp("Buffer.sub"),$w=rp("%c"),Kw=rp("%s"),Qw=rp("%i"),Zw=rp("%li"),rh=rp("%ni"),th=rp("%Li"),eh=rp("%f"),nh=rp(or),uh=rp("%{"),ah=rp("%}"),ih=rp("%("),fh=rp("%)"),ch=rp(SD),sh=rp("%t"),oh=rp("%?"),vh=rp("%r"),lh=rp("%_r"),bh=[0,rp(Ll),846,23],Dh=[0,rp(Ll),810,21],kh=[0,rp(Ll),811,21],ph=[0,rp(Ll),814,21],dh=[0,rp(Ll),815,21],wh=[0,rp(Ll),818,19],hh=[0,rp(Ll),819,19],mh=[0,rp(Ll),822,22],Fh=[0,rp(Ll),823,22],yh=[0,rp(Ll),827,30],Eh=[0,rp(Ll),828,30],_h=[0,rp(Ll),832,26],gh=[0,rp(Ll),833,26],Ch=[0,rp(Ll),842,28],Sh=[0,rp(Ll),843,28],xh=[0,rp(Ll),847,23],Th=rp("%u"),Ah=[0,rp(Ll),1525,4],Bh=rp("Printf: bad conversion %["),Ih=[0,rp(Ll),1593,39],Oh=[0,rp(Ll),1616,31],Ph=[0,rp(Ll),1617,31],Nh=rp("Printf: bad conversion %_"),Lh=rp("@{"),Rh=rp("@["),Mh=[0,[11,rp("invalid box description "),[3,0,0]],rp("invalid box description %S")],jh=rp(bo),Uh=[0,0,4],Xh=rp(bo),Jh=rp("b"),Gh=rp("h"),qh=rp("hov"),zh=rp("hv"),Vh=rp("v"),Wh=rp(bv),Yh=rp(ee),Hh=rp("neg_infinity"),$h=rp(xt),Kh=rp("%.12g"),Qh=rp("%nd"),Zh=rp("%+nd"),rm=rp("% nd"),tm=rp("%ni"),em=rp("%+ni"),nm=rp("% ni"),um=rp("%nx"),am=rp("%#nx"),im=rp("%nX"),fm=rp("%#nX"),cm=rp("%no"),sm=rp("%#no"),om=rp("%nu"),vm=rp("%ld"),lm=rp("%+ld"),bm=rp("% ld"),Dm=rp("%li"),km=rp("%+li"),pm=rp("% li"),dm=rp("%lx"),wm=rp("%#lx"),hm=rp("%lX"),mm=rp("%#lX"),Fm=rp("%lo"),ym=rp("%#lo"),Em=rp("%lu"),_m=rp("%Ld"),gm=rp("%+Ld"),Cm=rp("% Ld"),Sm=rp("%Li"),xm=rp("%+Li"),Tm=rp("% Li"),Am=rp("%Lx"),Bm=rp("%#Lx"),Im=rp("%LX"),Om=rp("%#LX"),Pm=rp("%Lo"),Nm=rp("%#Lo"),Lm=rp("%Lu"),Rm=rp(ou),Mm=rp("%+d"),jm=rp("% d"),Um=rp("%i"),Xm=rp("%+i"),Jm=rp("% i"),Gm=rp("%x"),qm=rp("%#x"),zm=rp("%X"),Vm=rp("%#X"),Wm=rp("%o"),Ym=rp("%#o"),Hm=rp("%u"),$m=rp(Mb),Km=rp("@}"),Qm=rp("@?"),Zm=rp("@\n"),rF=rp("@."),tF=rp("@@"),eF=rp("@%"),nF=rp("@"),uF=rp("CamlinternalFormat.Type_mismatch"),aF=rp(bo),iF=[0,[11,rp(", "),[2,0,[2,0,0]]],rp(", %s%s")],fF=rp("Out of memory"),cF=rp("Stack overflow"),sF=rp("Pattern matching failed"),oF=rp("Assertion failed"),vF=rp("Undefined recursive module"),lF=[0,[12,40,[2,0,[2,0,[12,41,0]]]],rp("(%s%s)")],bF=rp(bo),DF=rp(bo),kF=[0,[12,40,[2,0,[12,41,0]]],rp("(%s)")],pF=[0,[4,0,0,0,0],rp(ou)],dF=[0,[3,0,0],rp(Mc)],wF=rp("_"),hF=rp("x"),mF=rp("OCAMLRUNPARAM"),FF=rp("CAMLRUNPARAM"),yF=rp(bo),EF=[3,0,3],_F=rp(ee),gF=rp(">"),CF=rp("</"),SF=rp(">"),xF=rp("<"),TF=rp("\n"),AF=rp("Stdlib.Format.Empty_queue"),BF=[0,rp(bo)],IF=[0,rp("camlinternalOO.ml"),281,50],OF=rp("TMPDIR"),PF=rp("TEMP"),NF=rp("Cygwin"),LF=rp("Win32"),RF=rp("E2BIG"),MF=rp("EACCES"),jF=rp("EAGAIN"),UF=rp("EBADF"),XF=rp("EBUSY"),JF=rp("ECHILD"),GF=rp("EDEADLK"),qF=rp("EDOM"),zF=rp("EEXIST"),VF=rp("EFAULT"),WF=rp("EFBIG"),YF=rp("EINTR"),HF=rp("EINVAL"),$F=rp("EIO"),KF=rp("EISDIR"),QF=rp("EMFILE"),ZF=rp("EMLINK"),ry=rp("ENAMETOOLONG"),ty=rp("ENFILE"),ey=rp("ENODEV"),ny=rp("ENOENT"),uy=rp("ENOEXEC"),ay=rp("ENOLCK"),iy=rp("ENOMEM"),fy=rp("ENOSPC"),cy=rp("ENOSYS"),sy=rp("ENOTDIR"),oy=rp("ENOTEMPTY"),vy=rp("ENOTTY"),ly=rp("ENXIO"),by=rp("EPERM"),Dy=rp("EPIPE"),ky=rp("ERANGE"),py=rp("EROFS"),dy=rp("ESPIPE"),wy=rp("ESRCH"),hy=rp("EXDEV"),my=rp("EWOULDBLOCK"),Fy=rp("EINPROGRESS"),yy=rp("EALREADY"),Ey=rp("ENOTSOCK"),_y=rp("EDESTADDRREQ"),gy=rp("EMSGSIZE"),Cy=rp("EPROTOTYPE"),Sy=rp("ENOPROTOOPT"),xy=rp("EPROTONOSUPPORT"),Ty=rp("ESOCKTNOSUPPORT"),Ay=rp("EOPNOTSUPP"),By=rp("EPFNOSUPPORT"),Iy=rp("EAFNOSUPPORT"),Oy=rp("EADDRINUSE"),Py=rp("EADDRNOTAVAIL"),Ny=rp("ENETDOWN"),Ly=rp("ENETUNREACH"),Ry=rp("ENETRESET"),My=rp("ECONNABORTED"),jy=rp("ECONNRESET"),Uy=rp("ENOBUFS"),Xy=rp("EISCONN"),Jy=rp("ENOTCONN"),Gy=rp("ESHUTDOWN"),qy=rp("ETOOMANYREFS"),zy=rp("ETIMEDOUT"),Vy=rp("ECONNREFUSED"),Wy=rp("EHOSTDOWN"),Yy=rp("EHOSTUNREACH"),Hy=rp("ELOOP"),$y=rp("EOVERFLOW"),Ky=[0,[11,rp("EUNKNOWNERR "),[4,0,0,0,0]],rp("EUNKNOWNERR %d")],Qy=[0,[11,rp("Unix.Unix_error(Unix."),[2,0,[11,rp(", "),[3,0,[11,rp(", "),[3,0,[12,41,0]]]]]]],rp("Unix.Unix_error(Unix.%s, %S, %S)")],Zy=rp(Ia),rE=rp(bo),tE=rp(bo),eE=rp(Ia),nE=(rp("0.0.0.0"),rp("127.0.0.1"),rp("::"),rp("::1"),[0,rp("VisitorsRuntime.ml"),35,2]),uE=[0,rp(pD),rp(kc),rp(Gi),rp(wD),rp(fo),rp(uu),rp(Ff),rp(Re),rp(gk),rp(Hf),rp(ia),rp(Ou),rp(RD),rp(Zi),rp(lc),rp(Zl),rp(ki),rp(qb),rp("list_fold_left")],aE=rp("VisitorsRuntime.StructuralMismatch"),iE=[0,rp("sedlexing.ml"),51,25],fE=rp("Sedlexing.MalFormed"),cE=[0,rp("src/wtf8.ml"),65,9],sE=rp("Js_of_ocaml__Js.Error"),oE=rp(Hv),vE=rp("File_key.Builtins"),lE=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("File_key.LibFile"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>File_key.LibFile@ ")],bE=[0,[3,0,0],rp(Mc)],DE=[0,[17,0,[12,41,0]],rp(_t)],kE=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("File_key.SourceFile"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>File_key.SourceFile@ ")],pE=[0,[3,0,0],rp(Mc)],dE=[0,[17,0,[12,41,0]],rp(_t)],wE=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("File_key.JsonFile"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>File_key.JsonFile@ ")],hE=[0,[3,0,0],rp(Mc)],mE=[0,[17,0,[12,41,0]],rp(_t)],FE=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("File_key.ResourceFile"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>File_key.ResourceFile@ ")],yE=[0,[3,0,0],rp(Mc)],EE=[0,[17,0,[12,41,0]],rp(_t)],_E=rp(Tn),gE=[0,[15,0],rp(SD)],CE=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],SE=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],xE=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],TE=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],AE=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],BE=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],IE=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],OE=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],PE=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],NE=[0,[17,0,[12,41,0]],rp(_t)],LE=[0,[15,0],rp(SD)],RE=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Function.BodyBlock"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Function.BodyBlock@ ")],ME=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],jE=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],UE=[0,[17,0,[12,41,0]],rp(_t)],XE=[0,[17,0,[12,41,0]],rp(_t)],JE=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Function.BodyExpression"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Function.BodyExpression@ ")],GE=[0,[17,0,[12,41,0]],rp(_t)],qE=[0,[15,0],rp(SD)],zE=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],VE=rp("Flow_ast.Function.id"),WE=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],YE=rp(el),HE=rp(sv),$E=rp(cb),KE=[0,[17,0,0],rp(Mb)],QE=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],ZE=rp(B),r_=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],t_=[0,[17,0,0],rp(Mb)],e_=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],n_=rp(Xu),u_=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],a_=[0,[17,0,0],rp(Mb)],i_=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],f_=rp(ss),c_=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],s_=[0,[9,0,0],rp(or)],o_=[0,[17,0,0],rp(Mb)],v_=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],l_=rp(uD),b_=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],D_=[0,[9,0,0],rp(or)],k_=[0,[17,0,0],rp(Mb)],p_=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],d_=rp(xb),w_=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],h_=rp(el),m_=rp(sv),F_=rp(cb),y_=[0,[17,0,0],rp(Mb)],E_=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],__=rp(_n),g_=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],C_=[0,[17,0,0],rp(Mb)],S_=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],x_=rp(Xr),T_=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],A_=rp(el),B_=rp(sv),I_=rp(cb),O_=[0,[17,0,0],rp(Mb)],P_=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],N_=rp("sig_loc"),L_=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],R_=[0,[17,0,0],rp(Mb)],M_=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],j_=[0,[15,0],rp(SD)],U_=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],X_=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],J_=rp("Flow_ast.Function.Params.params"),G_=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],q_=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],z_=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],V_=[0,[17,0,0],rp(Mb)],W_=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Y_=rp(si),H_=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],$_=rp(el),K_=rp(sv),Q_=rp(cb),Z_=[0,[17,0,0],rp(Mb)],rg=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],tg=[0,[15,0],rp(SD)],eg=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],ng=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],ug=[0,[17,0,[12,41,0]],rp(_t)],ag=[0,[15,0],rp(SD)],ig=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],fg=rp("Flow_ast.Function.Param.argument"),cg=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],sg=[0,[17,0,0],rp(Mb)],og=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],vg=rp(lo),lg=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],bg=rp(el),Dg=rp(sv),kg=rp(cb),pg=[0,[17,0,0],rp(Mb)],dg=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],wg=[0,[15,0],rp(SD)],hg=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],mg=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Fg=[0,[17,0,[12,41,0]],rp(_t)],yg=[0,[15,0],rp(SD)],Eg=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],_g=rp("Flow_ast.Function.RestParam.argument"),gg=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Cg=[0,[17,0,0],rp(Mb)],Sg=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],xg=[0,[15,0],rp(SD)],Tg=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Ag=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Bg=[0,[17,0,[12,41,0]],rp(_t)],Ig=[0,[15,0],rp(SD)],Og=rp(Sk),Pg=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Ng=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Lg=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Rg=rp("Flow_ast.Class.id"),Mg=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],jg=rp(el),Ug=rp(sv),Xg=rp(cb),Jg=[0,[17,0,0],rp(Mb)],Gg=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],qg=rp(Xu),zg=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Vg=[0,[17,0,0],rp(Mb)],Wg=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Yg=rp(Xr),Hg=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],$g=rp(el),Kg=rp(sv),Qg=rp(cb),Zg=[0,[17,0,0],rp(Mb)],rC=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],tC=rp(Pk),eC=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],nC=rp(el),uC=rp(sv),aC=rp(cb),iC=[0,[17,0,0],rp(Mb)],fC=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],cC=rp(Rt),sC=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],oC=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],vC=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],lC=[0,[17,0,0],rp(Mb)],bC=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],DC=rp("classDecorators"),kC=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],pC=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],dC=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],wC=[0,[17,0,0],rp(Mb)],hC=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],mC=rp(ga),FC=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],yC=rp(el),EC=rp(sv),_C=rp(cb),gC=[0,[17,0,0],rp(Mb)],CC=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],SC=[0,[15,0],rp(SD)],xC=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],TC=rp("Flow_ast.Class.Decorator.expression"),AC=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],BC=[0,[17,0,0],rp(Mb)],IC=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],OC=[0,[15,0],rp(SD)],PC=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],NC=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],LC=[0,[17,0,[12,41,0]],rp(_t)],RC=[0,[15,0],rp(SD)],MC=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Class.Body.Method"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Class.Body.Method@ ")],jC=[0,[17,0,[12,41,0]],rp(_t)],UC=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Class.Body.Property"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Class.Body.Property@ ")],XC=[0,[17,0,[12,41,0]],rp(_t)],JC=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Class.Body.PrivateField"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Class.Body.PrivateField@ ")],GC=[0,[17,0,[12,41,0]],rp(_t)],qC=[0,[15,0],rp(SD)],zC=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],VC=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],WC=rp("Flow_ast.Class.Body.body"),YC=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],HC=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],$C=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],KC=[0,[17,0,0],rp(Mb)],QC=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],ZC=[0,[15,0],rp(SD)],rS=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],tS=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],eS=[0,[17,0,[12,41,0]],rp(_t)],nS=[0,[15,0],rp(SD)],uS=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],aS=rp("Flow_ast.Class.Implements.id"),iS=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],fS=[0,[17,0,0],rp(Mb)],cS=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],sS=rp(xs),oS=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],vS=rp(el),lS=rp(sv),bS=rp(cb),DS=[0,[17,0,0],rp(Mb)],kS=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],pS=[0,[15,0],rp(SD)],dS=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],wS=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],hS=[0,[17,0,[12,41,0]],rp(_t)],mS=[0,[15,0],rp(SD)],FS=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],yS=rp("Flow_ast.Class.Extends.expr"),ES=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],_S=[0,[17,0,0],rp(Mb)],gS=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],CS=rp(xs),SS=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],xS=rp(el),TS=rp(sv),AS=rp(cb),BS=[0,[17,0,0],rp(Mb)],IS=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],OS=[0,[15,0],rp(SD)],PS=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],NS=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],LS=[0,[17,0,[12,41,0]],rp(_t)],RS=[0,[15,0],rp(SD)],MS=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],jS=rp("Flow_ast.Class.PrivateField.key"),US=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],XS=[0,[17,0,0],rp(Mb)],JS=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],GS=rp(je),qS=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],zS=rp(el),VS=rp(sv),WS=rp(cb),YS=[0,[17,0,0],rp(Mb)],HS=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],$S=rp(Na),KS=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],QS=[0,[17,0,0],rp(Mb)],ZS=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],rx=rp(Ta),tx=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],ex=[0,[9,0,0],rp(or)],nx=[0,[17,0,0],rp(Mb)],ux=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],ax=rp(p),ix=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],fx=rp(el),cx=rp(sv),sx=rp(cb),ox=[0,[17,0,0],rp(Mb)],vx=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],lx=[0,[15,0],rp(SD)],bx=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Dx=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],kx=[0,[17,0,[12,41,0]],rp(_t)],px=[0,[15,0],rp(SD)],dx=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],wx=rp("Flow_ast.Class.Property.key"),hx=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],mx=[0,[17,0,0],rp(Mb)],Fx=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],yx=rp(je),Ex=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],_x=rp(el),gx=rp(sv),Cx=rp(cb),Sx=[0,[17,0,0],rp(Mb)],xx=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Tx=rp(Na),Ax=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Bx=[0,[17,0,0],rp(Mb)],Ix=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Ox=rp(Ta),Px=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Nx=[0,[9,0,0],rp(or)],Lx=[0,[17,0,0],rp(Mb)],Rx=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Mx=rp(p),jx=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Ux=rp(el),Xx=rp(sv),Jx=rp(cb),Gx=[0,[17,0,0],rp(Mb)],qx=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],zx=[0,[15,0],rp(SD)],Vx=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Wx=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Yx=[0,[17,0,[12,41,0]],rp(_t)],Hx=[0,[15,0],rp(SD)],$x=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Kx=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Qx=rp("Flow_ast.Class.Method.kind"),Zx=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],rT=[0,[17,0,0],rp(Mb)],tT=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],eT=rp(tk),nT=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],uT=[0,[17,0,0],rp(Mb)],aT=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],iT=rp(je),fT=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],cT=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],sT=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],oT=[0,[17,0,[12,41,0]],rp(_t)],vT=[0,[17,0,0],rp(Mb)],lT=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],bT=rp(Ta),DT=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],kT=[0,[9,0,0],rp(or)],pT=[0,[17,0,0],rp(Mb)],dT=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],wT=rp(ur),hT=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],mT=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],FT=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],yT=[0,[17,0,0],rp(Mb)],ET=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],_T=[0,[15,0],rp(SD)],gT=rp("Flow_ast.Class.Method.Constructor"),CT=rp("Flow_ast.Class.Method.Method"),ST=rp("Flow_ast.Class.Method.Get"),xT=rp("Flow_ast.Class.Method.Set"),TT=[0,[15,0],rp(SD)],AT=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],BT=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],IT=[0,[17,0,[12,41,0]],rp(_t)],OT=[0,[15,0],rp(SD)],PT=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Comment.Block"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Comment.Block@ ")],NT=[0,[3,0,0],rp(Mc)],LT=[0,[17,0,[12,41,0]],rp(_t)],RT=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Comment.Line"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Comment.Line@ ")],MT=[0,[3,0,0],rp(Mc)],jT=[0,[17,0,[12,41,0]],rp(_t)],UT=[0,[15,0],rp(SD)],XT=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],JT=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],GT=[0,[17,0,[12,41,0]],rp(_t)],qT=[0,[15,0],rp(SD)],zT=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Pattern.Object"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Pattern.Object@ ")],VT=[0,[17,0,[12,41,0]],rp(_t)],WT=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Pattern.Array"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Pattern.Array@ ")],YT=[0,[17,0,[12,41,0]],rp(_t)],HT=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Pattern.Identifier"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Pattern.Identifier@ ")],$T=[0,[17,0,[12,41,0]],rp(_t)],KT=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Pattern.Expression"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Pattern.Expression@ ")],QT=[0,[17,0,[12,41,0]],rp(_t)],ZT=[0,[15,0],rp(SD)],rA=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],tA=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],eA=[0,[17,0,[12,41,0]],rp(_t)],nA=[0,[15,0],rp(SD)],uA=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],aA=rp("Flow_ast.Pattern.Identifier.name"),iA=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],fA=[0,[17,0,0],rp(Mb)],cA=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],sA=rp(Na),oA=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],vA=[0,[17,0,0],rp(Mb)],lA=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],bA=rp(Rb),DA=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],kA=[0,[9,0,0],rp(or)],pA=[0,[17,0,0],rp(Mb)],dA=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],wA=[0,[15,0],rp(SD)],hA=rp(Sk),mA=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],FA=rp(el),yA=rp(sv),EA=rp(cb),_A=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],gA=rp("Flow_ast.Pattern.Array.elements"),CA=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],SA=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],xA=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],TA=[0,[17,0,0],rp(Mb)],AA=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],BA=rp(Na),IA=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],OA=[0,[17,0,0],rp(Mb)],PA=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],NA=rp(ga),LA=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],RA=rp(el),MA=rp(sv),jA=rp(cb),UA=[0,[17,0,0],rp(Mb)],XA=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],JA=[0,[15,0],rp(SD)],GA=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Pattern.Array.Element"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Pattern.Array.Element@ ")],qA=[0,[17,0,[12,41,0]],rp(_t)],zA=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Pattern.Array.RestElement"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Pattern.Array.RestElement@ ")],VA=[0,[17,0,[12,41,0]],rp(_t)],WA=[0,[15,0],rp(SD)],YA=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],HA=rp("Flow_ast.Pattern.Array.RestElement.argument"),$A=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],KA=[0,[17,0,0],rp(Mb)],QA=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],ZA=[0,[15,0],rp(SD)],rB=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],tB=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],eB=[0,[17,0,[12,41,0]],rp(_t)],nB=[0,[15,0],rp(SD)],uB=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],aB=rp("Flow_ast.Pattern.Array.Element.argument"),iB=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],fB=[0,[17,0,0],rp(Mb)],cB=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],sB=rp(lo),oB=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],vB=rp(el),lB=rp(sv),bB=rp(cb),DB=[0,[17,0,0],rp(Mb)],kB=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],pB=[0,[15,0],rp(SD)],dB=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],wB=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],hB=[0,[17,0,[12,41,0]],rp(_t)],mB=[0,[15,0],rp(SD)],FB=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],yB=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],EB=rp("Flow_ast.Pattern.Object.properties"),_B=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],gB=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],CB=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],SB=[0,[17,0,0],rp(Mb)],xB=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],TB=rp(Na),AB=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],BB=[0,[17,0,0],rp(Mb)],IB=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],OB=[0,[15,0],rp(SD)],PB=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Pattern.Object.Property"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Pattern.Object.Property@ ")],NB=[0,[17,0,[12,41,0]],rp(_t)],LB=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Pattern.Object.RestProperty"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Pattern.Object.RestProperty@ ")],RB=[0,[17,0,[12,41,0]],rp(_t)],MB=[0,[15,0],rp(SD)],jB=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],UB=rp("Flow_ast.Pattern.Object.RestProperty.argument"),XB=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],JB=[0,[17,0,0],rp(Mb)],GB=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],qB=[0,[15,0],rp(SD)],zB=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],VB=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],WB=[0,[17,0,[12,41,0]],rp(_t)],YB=[0,[15,0],rp(SD)],HB=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],$B=rp("Flow_ast.Pattern.Object.Property.key"),KB=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],QB=[0,[17,0,0],rp(Mb)],ZB=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],rI=rp(m),tI=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],eI=[0,[17,0,0],rp(Mb)],nI=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],uI=rp(lo),aI=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],iI=rp(el),fI=rp(sv),cI=rp(cb),sI=[0,[17,0,0],rp(Mb)],oI=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],vI=rp(qf),lI=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],bI=[0,[9,0,0],rp(or)],DI=[0,[17,0,0],rp(Mb)],kI=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],pI=[0,[15,0],rp(SD)],dI=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],wI=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],hI=[0,[17,0,[12,41,0]],rp(_t)],mI=[0,[15,0],rp(SD)],FI=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Pattern.Object.Property.Literal"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Pattern.Object.Property.Literal@ ")],yI=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],EI=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],_I=[0,[17,0,[12,41,0]],rp(_t)],gI=[0,[17,0,[12,41,0]],rp(_t)],CI=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Pattern.Object.Property.Identifier"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Pattern.Object.Property.Identifier@ ")],SI=[0,[17,0,[12,41,0]],rp(_t)],xI=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Pattern.Object.Property.Computed"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Pattern.Object.Property.Computed@ ")],TI=[0,[17,0,[12,41,0]],rp(_t)],AI=[0,[15,0],rp(SD)],BI=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],II=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],OI=rp("Flow_ast.JSX.frag_openingElement"),PI=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],NI=[0,[17,0,0],rp(Mb)],LI=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],RI=rp("frag_closingElement"),MI=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],jI=[0,[17,0,0],rp(Mb)],UI=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],XI=rp("frag_children"),JI=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],GI=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],qI=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],zI=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],VI=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],WI=[0,[17,0,[12,41,0]],rp(_t)],YI=[0,[17,0,0],rp(Mb)],HI=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],$I=[0,[15,0],rp(SD)],KI=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],QI=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],ZI=rp("Flow_ast.JSX.openingElement"),rO=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],tO=[0,[17,0,0],rp(Mb)],eO=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],nO=rp(en),uO=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],aO=rp(el),iO=rp(sv),fO=rp(cb),cO=[0,[17,0,0],rp(Mb)],sO=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],oO=rp(f),vO=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],lO=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],bO=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],DO=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],kO=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],pO=[0,[17,0,[12,41,0]],rp(_t)],dO=[0,[17,0,0],rp(Mb)],wO=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],hO=[0,[15,0],rp(SD)],mO=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.Element"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.JSX.Element@ ")],FO=[0,[17,0,[12,41,0]],rp(_t)],yO=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.Fragment"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.JSX.Fragment@ ")],EO=[0,[17,0,[12,41,0]],rp(_t)],_O=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.ExpressionContainer"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.JSX.ExpressionContainer@ ")],gO=[0,[17,0,[12,41,0]],rp(_t)],CO=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.SpreadChild"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.JSX.SpreadChild@ ")],SO=[0,[17,0,[12,41,0]],rp(_t)],xO=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.Text"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.JSX.Text@ ")],TO=[0,[17,0,[12,41,0]],rp(_t)],AO=[0,[15,0],rp(SD)],BO=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],IO=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],OO=[0,[17,0,[12,41,0]],rp(_t)],PO=[0,[15,0],rp(SD)],NO=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],LO=rp("Flow_ast.JSX.Closing.name"),RO=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],MO=[0,[17,0,0],rp(Mb)],jO=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],UO=[0,[15,0],rp(SD)],XO=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],JO=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],GO=[0,[17,0,[12,41,0]],rp(_t)],qO=[0,[15,0],rp(SD)],zO=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],VO=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],WO=rp("Flow_ast.JSX.Opening.name"),YO=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],HO=[0,[17,0,0],rp(Mb)],$O=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],KO=rp(sD),QO=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],ZO=[0,[9,0,0],rp(or)],rP=[0,[17,0,0],rp(Mb)],tP=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],eP=rp(Nf),nP=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],uP=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],aP=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],iP=[0,[17,0,0],rp(Mb)],fP=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],cP=[0,[15,0],rp(SD)],sP=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.Opening.Attribute"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.JSX.Opening.Attribute@ ")],oP=[0,[17,0,[12,41,0]],rp(_t)],vP=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.Opening.SpreadAttribute"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.JSX.Opening.SpreadAttribute@ ")],lP=[0,[17,0,[12,41,0]],rp(_t)],bP=[0,[15,0],rp(SD)],DP=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],kP=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],pP=[0,[17,0,[12,41,0]],rp(_t)],dP=[0,[15,0],rp(SD)],wP=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.Identifier"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.JSX.Identifier@ ")],hP=[0,[17,0,[12,41,0]],rp(_t)],mP=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.NamespacedName"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.JSX.NamespacedName@ ")],FP=[0,[17,0,[12,41,0]],rp(_t)],yP=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.MemberExpression"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.JSX.MemberExpression@ ")],EP=[0,[17,0,[12,41,0]],rp(_t)],_P=[0,[15,0],rp(SD)],gP=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],CP=rp("Flow_ast.JSX.MemberExpression._object"),SP=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],xP=[0,[17,0,0],rp(Mb)],TP=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],AP=rp(Av),BP=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],IP=[0,[17,0,0],rp(Mb)],OP=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],PP=[0,[15,0],rp(SD)],NP=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.MemberExpression.Identifier"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.JSX.MemberExpression.Identifier@ ")],LP=[0,[17,0,[12,41,0]],rp(_t)],RP=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.MemberExpression.MemberExpression"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.JSX.MemberExpression.MemberExpression@ ")],MP=[0,[17,0,[12,41,0]],rp(_t)],jP=[0,[15,0],rp(SD)],UP=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],XP=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],JP=[0,[17,0,[12,41,0]],rp(_t)],GP=[0,[15,0],rp(SD)],qP=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],zP=rp("Flow_ast.JSX.SpreadAttribute.argument"),VP=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],WP=[0,[17,0,0],rp(Mb)],YP=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],HP=[0,[15,0],rp(SD)],$P=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],KP=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],QP=[0,[17,0,[12,41,0]],rp(_t)],ZP=[0,[15,0],rp(SD)],rN=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],tN=rp("Flow_ast.JSX.Attribute.name"),eN=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],nN=[0,[17,0,0],rp(Mb)],uN=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],aN=rp(je),iN=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],fN=rp(el),cN=rp(sv),sN=rp(cb),oN=[0,[17,0,0],rp(Mb)],vN=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],lN=[0,[15,0],rp(SD)],bN=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.Attribute.Literal ("),[17,[0,rp($o),0,0],0]]]],rp("(@[<2>Flow_ast.JSX.Attribute.Literal (@,")],DN=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],kN=[0,[17,[0,rp($o),0,0],[11,rp(at),[17,0,0]]],rp(su)],pN=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.Attribute.ExpressionContainer ("),[17,[0,rp($o),0,0],0]]]],rp("(@[<2>Flow_ast.JSX.Attribute.ExpressionContainer (@,")],dN=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],wN=[0,[17,[0,rp($o),0,0],[11,rp(at),[17,0,0]]],rp(su)],hN=[0,[15,0],rp(SD)],mN=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.Attribute.Identifier"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.JSX.Attribute.Identifier@ ")],FN=[0,[17,0,[12,41,0]],rp(_t)],yN=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.Attribute.NamespacedName"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.JSX.Attribute.NamespacedName@ ")],EN=[0,[17,0,[12,41,0]],rp(_t)],_N=[0,[15,0],rp(SD)],gN=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],CN=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],SN=[0,[17,0,[12,41,0]],rp(_t)],xN=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],TN=rp("Flow_ast.JSX.Text.value"),AN=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],BN=[0,[3,0,0],rp(Mc)],IN=[0,[17,0,0],rp(Mb)],ON=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],PN=rp(Yt),NN=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],LN=[0,[3,0,0],rp(Mc)],RN=[0,[17,0,0],rp(Mb)],MN=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],jN=[0,[15,0],rp(SD)],UN=[0,[15,0],rp(SD)],XN=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.JSX.ExpressionContainer.Expression"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.JSX.ExpressionContainer.Expression@ ")],JN=[0,[17,0,[12,41,0]],rp(_t)],GN=rp("Flow_ast.JSX.ExpressionContainer.EmptyExpression"),qN=[0,[15,0],rp(SD)],zN=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],VN=rp("Flow_ast.JSX.ExpressionContainer.expression"),WN=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],YN=[0,[17,0,0],rp(Mb)],HN=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],$N=[0,[15,0],rp(SD)],KN=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],QN=rp("Flow_ast.JSX.NamespacedName.namespace"),ZN=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],rL=[0,[17,0,0],rp(Mb)],tL=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],eL=rp(lb),nL=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],uL=[0,[17,0,0],rp(Mb)],aL=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],iL=[0,[15,0],rp(SD)],fL=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],cL=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],sL=[0,[17,0,[12,41,0]],rp(_t)],oL=[0,[15,0],rp(SD)],vL=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],lL=rp("Flow_ast.JSX.Identifier.name"),bL=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],DL=[0,[3,0,0],rp(Mc)],kL=[0,[17,0,0],rp(Mb)],pL=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],dL=[0,[15,0],rp(SD)],wL=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],hL=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],mL=[0,[17,0,[12,41,0]],rp(_t)],FL=[0,[15,0],rp(SD)],yL=rp("Flow_ast.Expression.Super"),EL=rp("Flow_ast.Expression.This"),_L=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Array"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Array@ ")],gL=[0,[17,0,[12,41,0]],rp(_t)],CL=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.ArrowFunction"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.ArrowFunction@ ")],SL=[0,[17,0,[12,41,0]],rp(_t)],xL=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Assignment"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Assignment@ ")],TL=[0,[17,0,[12,41,0]],rp(_t)],AL=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Binary"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Binary@ ")],BL=[0,[17,0,[12,41,0]],rp(_t)],IL=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Call"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Call@ ")],OL=[0,[17,0,[12,41,0]],rp(_t)],PL=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Class"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Class@ ")],NL=[0,[17,0,[12,41,0]],rp(_t)],LL=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Comprehension"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Comprehension@ ")],RL=[0,[17,0,[12,41,0]],rp(_t)],ML=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Conditional"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Conditional@ ")],jL=[0,[17,0,[12,41,0]],rp(_t)],UL=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Function"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Function@ ")],XL=[0,[17,0,[12,41,0]],rp(_t)],JL=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Generator"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Generator@ ")],GL=[0,[17,0,[12,41,0]],rp(_t)],qL=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Identifier"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Identifier@ ")],zL=[0,[17,0,[12,41,0]],rp(_t)],VL=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Import"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Import@ ")],WL=[0,[17,0,[12,41,0]],rp(_t)],YL=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.JSXElement"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.JSXElement@ ")],HL=[0,[17,0,[12,41,0]],rp(_t)],$L=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.JSXFragment"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.JSXFragment@ ")],KL=[0,[17,0,[12,41,0]],rp(_t)],QL=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Literal"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Literal@ ")],ZL=[0,[17,0,[12,41,0]],rp(_t)],rR=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Logical"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Logical@ ")],tR=[0,[17,0,[12,41,0]],rp(_t)],eR=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Member"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Member@ ")],nR=[0,[17,0,[12,41,0]],rp(_t)],uR=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.MetaProperty"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.MetaProperty@ ")],aR=[0,[17,0,[12,41,0]],rp(_t)],iR=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.New"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.New@ ")],fR=[0,[17,0,[12,41,0]],rp(_t)],cR=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Object"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Object@ ")],sR=[0,[17,0,[12,41,0]],rp(_t)],oR=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.OptionalCall"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.OptionalCall@ ")],vR=[0,[17,0,[12,41,0]],rp(_t)],lR=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.OptionalMember"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.OptionalMember@ ")],bR=[0,[17,0,[12,41,0]],rp(_t)],DR=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Sequence"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Sequence@ ")],kR=[0,[17,0,[12,41,0]],rp(_t)],pR=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.TaggedTemplate"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.TaggedTemplate@ ")],dR=[0,[17,0,[12,41,0]],rp(_t)],wR=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.TemplateLiteral"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.TemplateLiteral@ ")],hR=[0,[17,0,[12,41,0]],rp(_t)],mR=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.TypeCast"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.TypeCast@ ")],FR=[0,[17,0,[12,41,0]],rp(_t)],yR=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Unary"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Unary@ ")],ER=[0,[17,0,[12,41,0]],rp(_t)],_R=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Update"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Update@ ")],gR=[0,[17,0,[12,41,0]],rp(_t)],CR=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Yield"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Yield@ ")],SR=[0,[17,0,[12,41,0]],rp(_t)],xR=[0,[15,0],rp(SD)],TR=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],AR=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],BR=[0,[17,0,[12,41,0]],rp(_t)],IR=[0,[15,0],rp(SD)],OR=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],PR=rp("Flow_ast.Expression.MetaProperty.meta"),NR=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],LR=[0,[17,0,0],rp(Mb)],RR=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],MR=rp(Av),jR=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],UR=[0,[17,0,0],rp(Mb)],XR=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],JR=[0,[15,0],rp(SD)],GR=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],qR=rp("Flow_ast.Expression.TypeCast.expression"),zR=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],VR=[0,[17,0,0],rp(Mb)],WR=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],YR=rp(Na),HR=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],$R=[0,[17,0,0],rp(Mb)],KR=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],QR=[0,[15,0],rp(SD)],ZR=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],rM=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],tM=rp("Flow_ast.Expression.Generator.blocks"),eM=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],nM=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],uM=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],aM=[0,[17,0,0],rp(Mb)],iM=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],fM=rp(vn),cM=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],sM=rp(el),oM=rp(sv),vM=rp(cb),lM=[0,[17,0,0],rp(Mb)],bM=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],DM=[0,[15,0],rp(SD)],kM=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],pM=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],dM=rp("Flow_ast.Expression.Comprehension.blocks"),wM=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],hM=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],mM=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],FM=[0,[17,0,0],rp(Mb)],yM=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],EM=rp(vn),_M=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],gM=rp(el),CM=rp(sv),SM=rp(cb),xM=[0,[17,0,0],rp(Mb)],TM=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],AM=[0,[15,0],rp(SD)],BM=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],IM=rp("Flow_ast.Expression.Comprehension.Block.left"),OM=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],PM=[0,[17,0,0],rp(Mb)],NM=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],LM=rp(Uu),RM=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],MM=[0,[17,0,0],rp(Mb)],jM=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],UM=rp(Gl),XM=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],JM=[0,[9,0,0],rp(or)],GM=[0,[17,0,0],rp(Mb)],qM=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],zM=[0,[15,0],rp(SD)],VM=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],WM=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],YM=[0,[17,0,[12,41,0]],rp(_t)],HM=[0,[15,0],rp(SD)],$M=rp(Sk),KM=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],QM=rp("Flow_ast.Expression.Yield.argument"),ZM=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],rj=rp(el),tj=rp(sv),ej=rp(cb),nj=[0,[17,0,0],rp(Mb)],uj=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],aj=rp(ga),ij=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],fj=rp(el),cj=rp(sv),sj=rp(cb),oj=[0,[17,0,0],rp(Mb)],vj=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],lj=rp(af),bj=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Dj=[0,[9,0,0],rp(or)],kj=[0,[17,0,0],rp(Mb)],pj=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],dj=[0,[15,0],rp(SD)],wj=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],hj=rp("Flow_ast.Expression.OptionalMember.member"),mj=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Fj=[0,[17,0,0],rp(Mb)],yj=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Ej=rp(Rb),_j=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],gj=[0,[9,0,0],rp(or)],Cj=[0,[17,0,0],rp(Mb)],Sj=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],xj=[0,[15,0],rp(SD)],Tj=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Aj=rp("Flow_ast.Expression.Member._object"),Bj=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Ij=[0,[17,0,0],rp(Mb)],Oj=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Pj=rp(Av),Nj=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Lj=[0,[17,0,0],rp(Mb)],Rj=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],Mj=[0,[15,0],rp(SD)],jj=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Member.PropertyIdentifier"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Member.PropertyIdentifier@ ")],Uj=[0,[17,0,[12,41,0]],rp(_t)],Xj=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Member.PropertyPrivateName"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Member.PropertyPrivateName@ ")],Jj=[0,[17,0,[12,41,0]],rp(_t)],Gj=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Member.PropertyExpression"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Member.PropertyExpression@ ")],qj=[0,[17,0,[12,41,0]],rp(_t)],zj=[0,[15,0],rp(SD)],Vj=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Wj=rp("Flow_ast.Expression.OptionalCall.call"),Yj=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Hj=[0,[17,0,0],rp(Mb)],$j=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Kj=rp(Rb),Qj=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Zj=[0,[9,0,0],rp(or)],rU=[0,[17,0,0],rp(Mb)],tU=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],eU=[0,[15,0],rp(SD)],nU=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],uU=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],aU=rp("Flow_ast.Expression.Call.callee"),iU=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],fU=[0,[17,0,0],rp(Mb)],cU=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],sU=rp(xs),oU=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],vU=rp(el),lU=rp(sv),bU=rp(cb),DU=[0,[17,0,0],rp(Mb)],kU=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],pU=rp(_a),dU=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],wU=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],hU=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],mU=[0,[17,0,0],rp(Mb)],FU=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],yU=[0,[15,0],rp(SD)],EU=rp(Sk),_U=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],gU=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],CU=rp("Flow_ast.Expression.New.callee"),SU=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],xU=[0,[17,0,0],rp(Mb)],TU=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],AU=rp(xs),BU=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],IU=rp(el),OU=rp(sv),PU=rp(cb),NU=[0,[17,0,0],rp(Mb)],LU=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],RU=rp(_a),MU=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],jU=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],UU=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],XU=[0,[17,0,0],rp(Mb)],JU=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],GU=rp(ga),qU=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],zU=rp(el),VU=rp(sv),WU=rp(cb),YU=[0,[17,0,0],rp(Mb)],HU=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],$U=[0,[15,0],rp(SD)],KU=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],QU=rp("Flow_ast.Expression.Conditional.test"),ZU=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],rX=[0,[17,0,0],rp(Mb)],tX=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],eX=rp(E),nX=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],uX=[0,[17,0,0],rp(Mb)],aX=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],iX=rp($t),fX=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],cX=[0,[17,0,0],rp(Mb)],sX=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],oX=[0,[15,0],rp(SD)],vX=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],lX=rp("Flow_ast.Expression.Logical.operator"),bX=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],DX=[0,[17,0,0],rp(Mb)],kX=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],pX=rp(bs),dX=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],wX=[0,[17,0,0],rp(Mb)],hX=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],mX=rp(Uu),FX=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],yX=[0,[17,0,0],rp(Mb)],EX=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],_X=[0,[15,0],rp(SD)],gX=rp("Flow_ast.Expression.Logical.Or"),CX=rp("Flow_ast.Expression.Logical.And"),SX=rp("Flow_ast.Expression.Logical.NullishCoalesce"),xX=[0,[15,0],rp(SD)],TX=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],AX=rp("Flow_ast.Expression.Update.operator"),BX=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],IX=[0,[17,0,0],rp(Mb)],OX=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],PX=rp(Eo),NX=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],LX=[0,[17,0,0],rp(Mb)],RX=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],MX=rp(UD),jX=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],UX=[0,[9,0,0],rp(or)],XX=[0,[17,0,0],rp(Mb)],JX=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],GX=[0,[15,0],rp(SD)],qX=rp("Flow_ast.Expression.Update.Decrement"),zX=rp("Flow_ast.Expression.Update.Increment"),VX=[0,[15,0],rp(SD)],WX=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],YX=rp("Flow_ast.Expression.Assignment.operator"),HX=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],$X=rp(el),KX=rp(sv),QX=rp(cb),ZX=[0,[17,0,0],rp(Mb)],rJ=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],tJ=rp(bs),eJ=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],nJ=[0,[17,0,0],rp(Mb)],uJ=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],aJ=rp(Uu),iJ=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],fJ=[0,[17,0,0],rp(Mb)],cJ=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],sJ=[0,[15,0],rp(SD)],oJ=rp("Flow_ast.Expression.Assignment.PlusAssign"),vJ=rp("Flow_ast.Expression.Assignment.MinusAssign"),lJ=rp("Flow_ast.Expression.Assignment.MultAssign"),bJ=rp("Flow_ast.Expression.Assignment.ExpAssign"),DJ=rp("Flow_ast.Expression.Assignment.DivAssign"),kJ=rp("Flow_ast.Expression.Assignment.ModAssign"),pJ=rp("Flow_ast.Expression.Assignment.LShiftAssign"),dJ=rp("Flow_ast.Expression.Assignment.RShiftAssign"),wJ=rp("Flow_ast.Expression.Assignment.RShift3Assign"),hJ=rp("Flow_ast.Expression.Assignment.BitOrAssign"),mJ=rp("Flow_ast.Expression.Assignment.BitXorAssign"),FJ=rp("Flow_ast.Expression.Assignment.BitAndAssign"),yJ=[0,[15,0],rp(SD)],EJ=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],_J=rp("Flow_ast.Expression.Binary.operator"),gJ=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],CJ=[0,[17,0,0],rp(Mb)],SJ=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],xJ=rp(bs),TJ=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],AJ=[0,[17,0,0],rp(Mb)],BJ=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],IJ=rp(Uu),OJ=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],PJ=[0,[17,0,0],rp(Mb)],NJ=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],LJ=[0,[15,0],rp(SD)],RJ=rp("Flow_ast.Expression.Binary.Equal"),MJ=rp("Flow_ast.Expression.Binary.NotEqual"),jJ=rp("Flow_ast.Expression.Binary.StrictEqual"),UJ=rp("Flow_ast.Expression.Binary.StrictNotEqual"),XJ=rp("Flow_ast.Expression.Binary.LessThan"),JJ=rp("Flow_ast.Expression.Binary.LessThanEqual"),GJ=rp("Flow_ast.Expression.Binary.GreaterThan"),qJ=rp("Flow_ast.Expression.Binary.GreaterThanEqual"),zJ=rp("Flow_ast.Expression.Binary.LShift"),VJ=rp("Flow_ast.Expression.Binary.RShift"),WJ=rp("Flow_ast.Expression.Binary.RShift3"),YJ=rp("Flow_ast.Expression.Binary.Plus"),HJ=rp("Flow_ast.Expression.Binary.Minus"),$J=rp("Flow_ast.Expression.Binary.Mult"),KJ=rp("Flow_ast.Expression.Binary.Exp"),QJ=rp("Flow_ast.Expression.Binary.Div"),ZJ=rp("Flow_ast.Expression.Binary.Mod"),rG=rp("Flow_ast.Expression.Binary.BitOr"),tG=rp("Flow_ast.Expression.Binary.Xor"),eG=rp("Flow_ast.Expression.Binary.BitAnd"),nG=rp("Flow_ast.Expression.Binary.In"),uG=rp("Flow_ast.Expression.Binary.Instanceof"),aG=[0,[15,0],rp(SD)],iG=rp(Sk),fG=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],cG=rp("Flow_ast.Expression.Unary.operator"),sG=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],oG=[0,[17,0,0],rp(Mb)],vG=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],lG=rp(Eo),bG=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],DG=[0,[17,0,0],rp(Mb)],kG=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],pG=rp(ga),dG=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],wG=rp(el),hG=rp(sv),mG=rp(cb),FG=[0,[17,0,0],rp(Mb)],yG=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],EG=[0,[15,0],rp(SD)],_G=rp("Flow_ast.Expression.Unary.Minus"),gG=rp("Flow_ast.Expression.Unary.Plus"),CG=rp("Flow_ast.Expression.Unary.Not"),SG=rp("Flow_ast.Expression.Unary.BitNot"),xG=rp("Flow_ast.Expression.Unary.Typeof"),TG=rp("Flow_ast.Expression.Unary.Void"),AG=rp("Flow_ast.Expression.Unary.Delete"),BG=rp("Flow_ast.Expression.Unary.Await"),IG=[0,[15,0],rp(SD)],OG=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],PG=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],NG=rp("Flow_ast.Expression.Sequence.expressions"),LG=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],RG=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],MG=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],jG=[0,[17,0,0],rp(Mb)],UG=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],XG=[0,[15,0],rp(SD)],JG=rp(Sk),GG=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],qG=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],zG=rp("Flow_ast.Expression.Object.properties"),VG=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],WG=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],YG=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],HG=[0,[17,0,0],rp(Mb)],$G=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],KG=rp(ga),QG=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],ZG=rp(el),rq=rp(sv),tq=rp(cb),eq=[0,[17,0,0],rp(Mb)],nq=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],uq=[0,[15,0],rp(SD)],aq=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Object.Property"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Object.Property@ ")],iq=[0,[17,0,[12,41,0]],rp(_t)],fq=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Object.SpreadProperty"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Object.SpreadProperty@ ")],cq=[0,[17,0,[12,41,0]],rp(_t)],sq=[0,[15,0],rp(SD)],oq=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],vq=rp("Flow_ast.Expression.Object.SpreadProperty.argument"),lq=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],bq=[0,[17,0,0],rp(Mb)],Dq=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],kq=[0,[15,0],rp(SD)],pq=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],dq=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],wq=[0,[17,0,[12,41,0]],rp(_t)],hq=[0,[15,0],rp(SD)],mq=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Object.Property.Init {"),[17,[0,rp($o),0,0],0]]],rp("@[<2>Flow_ast.Expression.Object.Property.Init {@,")],Fq=rp(tk),yq=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Eq=[0,[17,0,0],rp(Mb)],_q=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],gq=rp(je),Cq=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Sq=[0,[17,0,0],rp(Mb)],xq=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Tq=rp(qf),Aq=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Bq=[0,[9,0,0],rp(or)],Iq=[0,[17,0,0],rp(Mb)],Oq=[0,[17,0,[12,Gn,0]],rp(tl)],Pq=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Object.Property.Method {"),[17,[0,rp($o),0,0],0]]],rp("@[<2>Flow_ast.Expression.Object.Property.Method {@,")],Nq=rp(tk),Lq=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Rq=[0,[17,0,0],rp(Mb)],Mq=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],jq=rp(je),Uq=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Xq=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Jq=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Gq=[0,[17,0,[12,41,0]],rp(_t)],qq=[0,[17,0,0],rp(Mb)],zq=[0,[17,0,[12,Gn,0]],rp(tl)],Vq=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Object.Property.Get {"),[17,[0,rp($o),0,0],0]]],rp("@[<2>Flow_ast.Expression.Object.Property.Get {@,")],Wq=rp(tk),Yq=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Hq=[0,[17,0,0],rp(Mb)],$q=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Kq=rp(je),Qq=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Zq=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],rz=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],tz=[0,[17,0,[12,41,0]],rp(_t)],ez=[0,[17,0,0],rp(Mb)],nz=[0,[17,0,[12,Gn,0]],rp(tl)],uz=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Object.Property.Set {"),[17,[0,rp($o),0,0],0]]],rp("@[<2>Flow_ast.Expression.Object.Property.Set {@,")],az=rp(tk),iz=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],fz=[0,[17,0,0],rp(Mb)],cz=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],sz=rp(je),oz=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],vz=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],lz=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],bz=[0,[17,0,[12,41,0]],rp(_t)],Dz=[0,[17,0,0],rp(Mb)],kz=[0,[17,0,[12,Gn,0]],rp(tl)],pz=[0,[15,0],rp(SD)],dz=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],wz=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],hz=[0,[17,0,[12,41,0]],rp(_t)],mz=[0,[15,0],rp(SD)],Fz=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Object.Property.Literal"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Object.Property.Literal@ ")],yz=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Ez=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],_z=[0,[17,0,[12,41,0]],rp(_t)],gz=[0,[17,0,[12,41,0]],rp(_t)],Cz=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Object.Property.Identifier"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Object.Property.Identifier@ ")],Sz=[0,[17,0,[12,41,0]],rp(_t)],xz=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Object.Property.PrivateName"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Object.Property.PrivateName@ ")],Tz=[0,[17,0,[12,41,0]],rp(_t)],Az=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Object.Property.Computed"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Object.Property.Computed@ ")],Bz=[0,[17,0,[12,41,0]],rp(_t)],Iz=[0,[15,0],rp(SD)],Oz=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Pz=rp("Flow_ast.Expression.TaggedTemplate.tag"),Nz=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Lz=[0,[17,0,0],rp(Mb)],Rz=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Mz=rp("quasi"),jz=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Uz=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Xz=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Jz=[0,[17,0,[12,41,0]],rp(_t)],Gz=[0,[17,0,0],rp(Mb)],qz=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],zz=[0,[15,0],rp(SD)],Vz=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Wz=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Yz=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Hz=rp("Flow_ast.Expression.TemplateLiteral.quasis"),$z=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Kz=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],Qz=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],Zz=[0,[17,0,0],rp(Mb)],rV=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],tV=rp(Dn),eV=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],nV=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],uV=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],aV=[0,[17,0,0],rp(Mb)],iV=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],fV=[0,[15,0],rp(SD)],cV=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],sV=rp("Flow_ast.Expression.TemplateLiteral.Element.value"),oV=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],vV=[0,[17,0,0],rp(Mb)],lV=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],bV=rp("tail"),DV=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],kV=[0,[9,0,0],rp(or)],pV=[0,[17,0,0],rp(Mb)],dV=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],wV=[0,[15,0],rp(SD)],hV=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],mV=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],FV=[0,[17,0,[12,41,0]],rp(_t)],yV=[0,[15,0],rp(SD)],EV=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],_V=rp("Flow_ast.Expression.TemplateLiteral.Element.raw"),gV=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],CV=[0,[3,0,0],rp(Mc)],SV=[0,[17,0,0],rp(Mb)],xV=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],TV=rp("cooked"),AV=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],BV=[0,[3,0,0],rp(Mc)],IV=[0,[17,0,0],rp(Mb)],OV=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],PV=[0,[15,0],rp(SD)],NV=rp(Sk),LV=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],RV=rp(el),MV=rp(sv),jV=rp(cb),UV=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],XV=rp("Flow_ast.Expression.Array.elements"),JV=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],GV=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],qV=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],zV=[0,[17,0,0],rp(Mb)],VV=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],WV=rp(ga),YV=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],HV=rp(el),$V=rp(sv),KV=rp(cb),QV=[0,[17,0,0],rp(Mb)],ZV=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],rW=[0,[15,0],rp(SD)],tW=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Expression"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Expression@ ")],eW=[0,[17,0,[12,41,0]],rp(_t)],nW=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.Spread"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.Spread@ ")],uW=[0,[17,0,[12,41,0]],rp(_t)],aW=[0,[15,0],rp(SD)],iW=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],fW=rp("Flow_ast.Expression.SpreadElement.argument"),cW=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],sW=[0,[17,0,0],rp(Mb)],oW=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],vW=[0,[15,0],rp(SD)],lW=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],bW=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],DW=[0,[17,0,[12,41,0]],rp(_t)],kW=[0,[15,0],rp(SD)],pW=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],dW=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],wW=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],hW=[0,[15,0],rp(SD)],mW=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.TypeParameterInstantiation.Explicit"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.TypeParameterInstantiation.Explicit@ ")],FW=[0,[17,0,[12,41,0]],rp(_t)],yW=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Expression.TypeParameterInstantiation.Implicit"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Expression.TypeParameterInstantiation.Implicit@ ")],EW=[0,[17,0,[12,41,0]],rp(_t)],_W=[0,[15,0],rp(SD)],gW=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],CW=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],SW=[0,[17,0,[12,41,0]],rp(_t)],xW=[0,[15,0],rp(SD)],TW=rp("Flow_ast.Statement.Debugger"),AW=rp("Flow_ast.Statement.Empty"),BW=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.Block"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.Block@ ")],IW=[0,[17,0,[12,41,0]],rp(_t)],OW=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.Break"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.Break@ ")],PW=[0,[17,0,[12,41,0]],rp(_t)],NW=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.ClassDeclaration"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.ClassDeclaration@ ")],LW=[0,[17,0,[12,41,0]],rp(_t)],RW=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.Continue"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.Continue@ ")],MW=[0,[17,0,[12,41,0]],rp(_t)],jW=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareClass"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareClass@ ")],UW=[0,[17,0,[12,41,0]],rp(_t)],XW=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareExportDeclaration"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareExportDeclaration@ ")],JW=[0,[17,0,[12,41,0]],rp(_t)],GW=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareFunction"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareFunction@ ")],qW=[0,[17,0,[12,41,0]],rp(_t)],zW=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareInterface"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareInterface@ ")],VW=[0,[17,0,[12,41,0]],rp(_t)],WW=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareModule"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareModule@ ")],YW=[0,[17,0,[12,41,0]],rp(_t)],HW=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareModuleExports"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareModuleExports@ ")],$W=[0,[17,0,[12,41,0]],rp(_t)],KW=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareTypeAlias"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareTypeAlias@ ")],QW=[0,[17,0,[12,41,0]],rp(_t)],ZW=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareOpaqueType"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareOpaqueType@ ")],rY=[0,[17,0,[12,41,0]],rp(_t)],tY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareVariable"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareVariable@ ")],eY=[0,[17,0,[12,41,0]],rp(_t)],nY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DoWhile"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DoWhile@ ")],uY=[0,[17,0,[12,41,0]],rp(_t)],aY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.EnumDeclaration"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.EnumDeclaration@ ")],iY=[0,[17,0,[12,41,0]],rp(_t)],fY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.ExportDefaultDeclaration"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.ExportDefaultDeclaration@ ")],cY=[0,[17,0,[12,41,0]],rp(_t)],sY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.ExportNamedDeclaration"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.ExportNamedDeclaration@ ")],oY=[0,[17,0,[12,41,0]],rp(_t)],vY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.Expression"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.Expression@ ")],lY=[0,[17,0,[12,41,0]],rp(_t)],bY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.For"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.For@ ")],DY=[0,[17,0,[12,41,0]],rp(_t)],kY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.ForIn"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.ForIn@ ")],pY=[0,[17,0,[12,41,0]],rp(_t)],dY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.ForOf"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.ForOf@ ")],wY=[0,[17,0,[12,41,0]],rp(_t)],hY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.FunctionDeclaration"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.FunctionDeclaration@ ")],mY=[0,[17,0,[12,41,0]],rp(_t)],FY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.If"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.If@ ")],yY=[0,[17,0,[12,41,0]],rp(_t)],EY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.ImportDeclaration"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.ImportDeclaration@ ")],_Y=[0,[17,0,[12,41,0]],rp(_t)],gY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.InterfaceDeclaration"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.InterfaceDeclaration@ ")],CY=[0,[17,0,[12,41,0]],rp(_t)],SY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.Labeled"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.Labeled@ ")],xY=[0,[17,0,[12,41,0]],rp(_t)],TY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.Return"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.Return@ ")],AY=[0,[17,0,[12,41,0]],rp(_t)],BY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.Switch"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.Switch@ ")],IY=[0,[17,0,[12,41,0]],rp(_t)],OY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.Throw"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.Throw@ ")],PY=[0,[17,0,[12,41,0]],rp(_t)],NY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.Try"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.Try@ ")],LY=[0,[17,0,[12,41,0]],rp(_t)],RY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.TypeAlias"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.TypeAlias@ ")],MY=[0,[17,0,[12,41,0]],rp(_t)],jY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.OpaqueType"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.OpaqueType@ ")],UY=[0,[17,0,[12,41,0]],rp(_t)],XY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.VariableDeclaration"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.VariableDeclaration@ ")],JY=[0,[17,0,[12,41,0]],rp(_t)],GY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.While"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.While@ ")],qY=[0,[17,0,[12,41,0]],rp(_t)],zY=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.With"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.With@ ")],VY=[0,[17,0,[12,41,0]],rp(_t)],WY=[0,[15,0],rp(SD)],YY=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],HY=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],$Y=[0,[17,0,[12,41,0]],rp(_t)],KY=[0,[15,0],rp(SD)],QY=rp("Flow_ast.Statement.ExportValue"),ZY=rp("Flow_ast.Statement.ExportType"),rH=[0,[15,0],rp(SD)],tH=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],eH=rp("Flow_ast.Statement.Expression.expression"),nH=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],uH=[0,[17,0,0],rp(Mb)],aH=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],iH=rp(y),fH=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],cH=rp(el),sH=[0,[3,0,0],rp(Mc)],oH=rp(sv),vH=rp(cb),lH=[0,[17,0,0],rp(Mb)],bH=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],DH=[0,[15,0],rp(SD)],kH=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],pH=rp("Flow_ast.Statement.ImportDeclaration.importKind"),dH=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],wH=[0,[17,0,0],rp(Mb)],hH=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],mH=rp(Kb),FH=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],yH=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],EH=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],_H=[0,[17,0,[12,41,0]],rp(_t)],gH=[0,[17,0,0],rp(Mb)],CH=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],SH=rp(lo),xH=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],TH=rp(el),AH=rp(sv),BH=rp(cb),IH=[0,[17,0,0],rp(Mb)],OH=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],PH=rp(mk),NH=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],LH=rp(el),RH=rp(sv),MH=rp(cb),jH=[0,[17,0,0],rp(Mb)],UH=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],XH=[0,[15,0],rp(SD)],JH=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],GH=rp("Flow_ast.Statement.ImportDeclaration.kind"),qH=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],zH=rp(el),VH=rp(sv),WH=rp(cb),YH=[0,[17,0,0],rp(Mb)],HH=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],$H=rp(vl),KH=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],QH=rp(el),ZH=rp(sv),r$=rp(cb),t$=[0,[17,0,0],rp(Mb)],e$=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],n$=rp("remote"),u$=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],a$=[0,[17,0,0],rp(Mb)],i$=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],f$=[0,[15,0],rp(SD)],c$=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],s$=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.ImportDeclaration.ImportNamedSpecifiers"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.ImportDeclaration.ImportNamedSpecifiers@ ")],o$=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],v$=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],l$=[0,[17,0,[12,41,0]],rp(_t)],b$=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.ImportDeclaration.ImportNamespaceSpecifier"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.ImportDeclaration.ImportNamespaceSpecifier@ ")],D$=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],k$=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],p$=[0,[17,0,[12,41,0]],rp(_t)],d$=[0,[17,0,[12,41,0]],rp(_t)],w$=[0,[15,0],rp(SD)],h$=rp("Flow_ast.Statement.ImportDeclaration.ImportType"),m$=rp("Flow_ast.Statement.ImportDeclaration.ImportTypeof"),F$=rp("Flow_ast.Statement.ImportDeclaration.ImportValue"),y$=[0,[15,0],rp(SD)],E$=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],_$=rp("Flow_ast.Statement.DeclareExportDeclaration.default"),g$=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],C$=rp(el),S$=rp(sv),x$=rp(cb),T$=[0,[17,0,0],rp(Mb)],A$=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],B$=rp(xa),I$=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],O$=rp(el),P$=rp(sv),N$=rp(cb),L$=[0,[17,0,0],rp(Mb)],R$=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],M$=rp(mk),j$=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],U$=rp(el),X$=rp(sv),J$=rp(cb),G$=[0,[17,0,0],rp(Mb)],q$=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],z$=rp(Kb),V$=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],W$=rp(el),Y$=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],H$=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],$$=[0,[17,0,[12,41,0]],rp(_t)],K$=rp(sv),Q$=rp(cb),Z$=[0,[17,0,0],rp(Mb)],rK=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],tK=[0,[15,0],rp(SD)],eK=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareExportDeclaration.Variable"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareExportDeclaration.Variable@ ")],nK=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],uK=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],aK=[0,[17,0,[12,41,0]],rp(_t)],iK=[0,[17,0,[12,41,0]],rp(_t)],fK=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareExportDeclaration.Function"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareExportDeclaration.Function@ ")],cK=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],sK=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],oK=[0,[17,0,[12,41,0]],rp(_t)],vK=[0,[17,0,[12,41,0]],rp(_t)],lK=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareExportDeclaration.Class"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareExportDeclaration.Class@ ")],bK=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],DK=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],kK=[0,[17,0,[12,41,0]],rp(_t)],pK=[0,[17,0,[12,41,0]],rp(_t)],dK=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareExportDeclaration.DefaultType"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareExportDeclaration.DefaultType@ ")],wK=[0,[17,0,[12,41,0]],rp(_t)],hK=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareExportDeclaration.NamedType"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareExportDeclaration.NamedType@ ")],mK=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],FK=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],yK=[0,[17,0,[12,41,0]],rp(_t)],EK=[0,[17,0,[12,41,0]],rp(_t)],_K=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareExportDeclaration.NamedOpaqueType"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareExportDeclaration.NamedOpaqueType@ ")],gK=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],CK=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],SK=[0,[17,0,[12,41,0]],rp(_t)],xK=[0,[17,0,[12,41,0]],rp(_t)],TK=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareExportDeclaration.Interface"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareExportDeclaration.Interface@ ")],AK=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],BK=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],IK=[0,[17,0,[12,41,0]],rp(_t)],OK=[0,[17,0,[12,41,0]],rp(_t)],PK=[0,[15,0],rp(SD)],NK=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.ExportDefaultDeclaration.Declaration"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.ExportDefaultDeclaration.Declaration@ ")],LK=[0,[17,0,[12,41,0]],rp(_t)],RK=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.ExportDefaultDeclaration.Expression"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.ExportDefaultDeclaration.Expression@ ")],MK=[0,[17,0,[12,41,0]],rp(_t)],jK=[0,[15,0],rp(SD)],UK=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],XK=rp("Flow_ast.Statement.ExportDefaultDeclaration.default"),JK=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],GK=[0,[17,0,0],rp(Mb)],qK=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],zK=rp(xa),VK=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],WK=[0,[17,0,0],rp(Mb)],YK=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],HK=[0,[15,0],rp(SD)],$K=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],KK=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.ExportNamedDeclaration.ExportSpecifiers"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.ExportNamedDeclaration.ExportSpecifiers@ ")],QK=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],ZK=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],rQ=[0,[17,0,[12,41,0]],rp(_t)],tQ=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.ExportNamedDeclaration.ExportBatchSpecifier ("),[17,[0,rp($o),0,0],0]]]],rp("(@[<2>Flow_ast.Statement.ExportNamedDeclaration.ExportBatchSpecifier (@,")],eQ=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],nQ=rp(el),uQ=rp(sv),aQ=rp(cb),iQ=[0,[17,[0,rp($o),0,0],[11,rp(at),[17,0,0]]],rp(su)],fQ=[0,[15,0],rp(SD)],cQ=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],sQ=rp("Flow_ast.Statement.ExportNamedDeclaration.declaration"),oQ=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],vQ=rp(el),lQ=rp(sv),bQ=rp(cb),DQ=[0,[17,0,0],rp(Mb)],kQ=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],pQ=rp(mk),dQ=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],wQ=rp(el),hQ=rp(sv),mQ=rp(cb),FQ=[0,[17,0,0],rp(Mb)],yQ=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],EQ=rp(Kb),_Q=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],gQ=rp(el),CQ=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],SQ=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],xQ=[0,[17,0,[12,41,0]],rp(_t)],TQ=rp(sv),AQ=rp(cb),BQ=[0,[17,0,0],rp(Mb)],IQ=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],OQ=rp(po),PQ=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],NQ=[0,[17,0,0],rp(Mb)],LQ=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],RQ=[0,[15,0],rp(SD)],MQ=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],jQ=rp("Flow_ast.Statement.ExportNamedDeclaration.ExportSpecifier.local"),UQ=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],XQ=[0,[17,0,0],rp(Mb)],JQ=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],GQ=rp(mn),qQ=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],zQ=rp(el),VQ=rp(sv),WQ=rp(cb),YQ=[0,[17,0,0],rp(Mb)],HQ=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],$Q=[0,[15,0],rp(SD)],KQ=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],QQ=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],ZQ=[0,[17,0,[12,41,0]],rp(_t)],rZ=[0,[15,0],rp(SD)],tZ=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],eZ=rp("Flow_ast.Statement.DeclareModule.id"),nZ=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],uZ=[0,[17,0,0],rp(Mb)],aZ=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],iZ=rp(Xu),fZ=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],cZ=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],sZ=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],oZ=[0,[17,0,[12,41,0]],rp(_t)],vZ=[0,[17,0,0],rp(Mb)],lZ=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],bZ=rp(oe),DZ=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],kZ=[0,[17,0,0],rp(Mb)],pZ=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],dZ=[0,[15,0],rp(SD)],wZ=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareModule.CommonJS"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareModule.CommonJS@ ")],hZ=[0,[17,0,[12,41,0]],rp(_t)],mZ=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareModule.ES"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareModule.ES@ ")],FZ=[0,[17,0,[12,41,0]],rp(_t)],yZ=[0,[15,0],rp(SD)],EZ=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareModule.Identifier"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareModule.Identifier@ ")],_Z=[0,[17,0,[12,41,0]],rp(_t)],gZ=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.DeclareModule.Literal"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.DeclareModule.Literal@ ")],CZ=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],SZ=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],xZ=[0,[17,0,[12,41,0]],rp(_t)],TZ=[0,[17,0,[12,41,0]],rp(_t)],AZ=[0,[15,0],rp(SD)],BZ=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],IZ=rp("Flow_ast.Statement.DeclareFunction.id"),OZ=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],PZ=[0,[17,0,0],rp(Mb)],NZ=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],LZ=rp(Na),RZ=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],MZ=[0,[17,0,0],rp(Mb)],jZ=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],UZ=rp(xb),XZ=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],JZ=rp(el),GZ=rp(sv),qZ=rp(cb),zZ=[0,[17,0,0],rp(Mb)],VZ=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],WZ=[0,[15,0],rp(SD)],YZ=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],HZ=rp("Flow_ast.Statement.DeclareVariable.id"),$Z=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],KZ=[0,[17,0,0],rp(Mb)],QZ=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],ZZ=rp(Na),r0=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],t0=[0,[17,0,0],rp(Mb)],e0=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],n0=[0,[15,0],rp(SD)],u0=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],a0=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],i0=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],f0=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],c0=[0,[17,0,[12,41,0]],rp(_t)],s0=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],o0=rp("Flow_ast.Statement.DeclareClass.id"),v0=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],l0=[0,[17,0,0],rp(Mb)],b0=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],D0=rp(Xr),k0=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],p0=rp(el),d0=rp(sv),w0=rp(cb),h0=[0,[17,0,0],rp(Mb)],m0=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],F0=rp(Xu),y0=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],E0=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],_0=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],g0=[0,[17,0,[12,41,0]],rp(_t)],C0=[0,[17,0,0],rp(Mb)],S0=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],x0=rp(Pk),T0=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],A0=rp(el),B0=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],I0=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],O0=[0,[17,0,[12,41,0]],rp(_t)],P0=rp(sv),N0=rp(cb),L0=[0,[17,0,0],rp(Mb)],R0=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],M0=rp(xe),j0=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],U0=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],X0=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],J0=[0,[17,0,0],rp(Mb)],G0=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],q0=rp(Rt),z0=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],V0=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],W0=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],Y0=[0,[17,0,0],rp(Mb)],H0=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],$0=[0,[15,0],rp(SD)],K0=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Q0=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Z0=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],r1=[0,[17,0,[12,41,0]],rp(_t)],t1=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],e1=rp("Flow_ast.Statement.Interface.id"),n1=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],u1=[0,[17,0,0],rp(Mb)],a1=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],i1=rp(Xr),f1=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],c1=rp(el),s1=rp(sv),o1=rp(cb),v1=[0,[17,0,0],rp(Mb)],l1=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],b1=rp(Pk),D1=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],k1=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],p1=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],d1=[0,[17,0,0],rp(Mb)],w1=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],h1=rp(Xu),m1=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],F1=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],y1=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],E1=[0,[17,0,[12,41,0]],rp(_t)],_1=[0,[17,0,0],rp(Mb)],g1=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],C1=[0,[15,0],rp(SD)],S1=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.EnumDeclaration.BooleanBody"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.EnumDeclaration.BooleanBody@ ")],x1=[0,[17,0,[12,41,0]],rp(_t)],T1=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.EnumDeclaration.NumberBody"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.EnumDeclaration.NumberBody@ ")],A1=[0,[17,0,[12,41,0]],rp(_t)],B1=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.EnumDeclaration.StringBody"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.EnumDeclaration.StringBody@ ")],I1=[0,[17,0,[12,41,0]],rp(_t)],O1=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.EnumDeclaration.SymbolBody"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.EnumDeclaration.SymbolBody@ ")],P1=[0,[17,0,[12,41,0]],rp(_t)],N1=[0,[15,0],rp(SD)],L1=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],R1=rp("Flow_ast.Statement.EnumDeclaration.id"),M1=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],j1=[0,[17,0,0],rp(Mb)],U1=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],X1=rp(Xu),J1=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],G1=[0,[17,0,0],rp(Mb)],q1=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],z1=[0,[15,0],rp(SD)],V1=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],W1=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Y1=rp("Flow_ast.Statement.EnumDeclaration.SymbolBody.members"),H1=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],$1=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],K1=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],Q1=[0,[17,0,0],rp(Mb)],Z1=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],r2=[0,[15,0],rp(SD)],t2=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],e2=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],n2=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.EnumDeclaration.StringBody.Defaulted"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.EnumDeclaration.StringBody.Defaulted@ ")],u2=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],a2=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],i2=[0,[17,0,[12,41,0]],rp(_t)],f2=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.EnumDeclaration.StringBody.Initialized"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.EnumDeclaration.StringBody.Initialized@ ")],c2=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],s2=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],o2=[0,[17,0,[12,41,0]],rp(_t)],v2=[0,[15,0],rp(SD)],l2=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],b2=rp("Flow_ast.Statement.EnumDeclaration.StringBody.members"),D2=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],k2=[0,[17,0,0],rp(Mb)],p2=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],d2=rp(ic),w2=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],h2=[0,[9,0,0],rp(or)],m2=[0,[17,0,0],rp(Mb)],F2=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],y2=[0,[15,0],rp(SD)],E2=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],_2=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],g2=rp("Flow_ast.Statement.EnumDeclaration.NumberBody.members"),C2=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],S2=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],x2=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],T2=[0,[17,0,0],rp(Mb)],A2=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],B2=rp(ic),I2=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],O2=[0,[9,0,0],rp(or)],P2=[0,[17,0,0],rp(Mb)],N2=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],L2=[0,[15,0],rp(SD)],R2=[0,[9,0,0],rp(or)],M2=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],j2=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],U2=rp("Flow_ast.Statement.EnumDeclaration.BooleanBody.members"),X2=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],J2=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],G2=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],q2=[0,[17,0,0],rp(Mb)],z2=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],V2=rp(ic),W2=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Y2=[0,[9,0,0],rp(or)],H2=[0,[17,0,0],rp(Mb)],$2=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],K2=[0,[15,0],rp(SD)],Q2=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Z2=rp("Flow_ast.Statement.EnumDeclaration.InitializedMember.id"),r7=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],t7=[0,[17,0,0],rp(Mb)],e7=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],n7=rp(Oa),u7=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],a7=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],i7=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],f7=[0,[17,0,[12,41,0]],rp(_t)],c7=[0,[17,0,0],rp(Mb)],s7=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],o7=[0,[15,0],rp(SD)],v7=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],l7=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],b7=[0,[17,0,[12,41,0]],rp(_t)],D7=[0,[15,0],rp(SD)],k7=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],p7=rp("Flow_ast.Statement.EnumDeclaration.DefaultedMember.id"),d7=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],w7=[0,[17,0,0],rp(Mb)],h7=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],m7=[0,[15,0],rp(SD)],F7=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],y7=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],E7=[0,[17,0,[12,41,0]],rp(_t)],_7=[0,[15,0],rp(SD)],g7=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.ForOf.LeftDeclaration"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.ForOf.LeftDeclaration@ ")],C7=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],S7=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],x7=[0,[17,0,[12,41,0]],rp(_t)],T7=[0,[17,0,[12,41,0]],rp(_t)],A7=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.ForOf.LeftPattern"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.ForOf.LeftPattern@ ")],B7=[0,[17,0,[12,41,0]],rp(_t)],I7=[0,[15,0],rp(SD)],O7=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],P7=rp("Flow_ast.Statement.ForOf.left"),N7=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],L7=[0,[17,0,0],rp(Mb)],R7=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],M7=rp(Uu),j7=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],U7=[0,[17,0,0],rp(Mb)],X7=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],J7=rp(Xu),G7=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],q7=[0,[17,0,0],rp(Mb)],z7=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],V7=rp(ss),W7=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Y7=[0,[9,0,0],rp(or)],H7=[0,[17,0,0],rp(Mb)],$7=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],K7=[0,[15,0],rp(SD)],Q7=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.ForIn.LeftDeclaration"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.ForIn.LeftDeclaration@ ")],Z7=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],r4=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],t4=[0,[17,0,[12,41,0]],rp(_t)],e4=[0,[17,0,[12,41,0]],rp(_t)],n4=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.ForIn.LeftPattern"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.ForIn.LeftPattern@ ")],u4=[0,[17,0,[12,41,0]],rp(_t)],a4=[0,[15,0],rp(SD)],i4=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],f4=rp("Flow_ast.Statement.ForIn.left"),c4=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],s4=[0,[17,0,0],rp(Mb)],o4=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],v4=rp(Uu),l4=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],b4=[0,[17,0,0],rp(Mb)],D4=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],k4=rp(Xu),p4=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],d4=[0,[17,0,0],rp(Mb)],w4=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],h4=rp(Gl),m4=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],F4=[0,[9,0,0],rp(or)],y4=[0,[17,0,0],rp(Mb)],E4=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],_4=[0,[15,0],rp(SD)],g4=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.For.InitDeclaration"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.For.InitDeclaration@ ")],C4=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],S4=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],x4=[0,[17,0,[12,41,0]],rp(_t)],T4=[0,[17,0,[12,41,0]],rp(_t)],A4=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Statement.For.InitExpression"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Statement.For.InitExpression@ ")],B4=[0,[17,0,[12,41,0]],rp(_t)],I4=[0,[15,0],rp(SD)],O4=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],P4=rp("Flow_ast.Statement.For.init"),N4=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],L4=rp(el),R4=rp(sv),M4=rp(cb),j4=[0,[17,0,0],rp(Mb)],U4=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],X4=rp(Ii),J4=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],G4=rp(el),q4=rp(sv),z4=rp(cb),V4=[0,[17,0,0],rp(Mb)],W4=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Y4=rp("update"),H4=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],$4=rp(el),K4=rp(sv),Q4=rp(cb),Z4=[0,[17,0,0],rp(Mb)],r8=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],t8=rp(Xu),e8=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],n8=[0,[17,0,0],rp(Mb)],u8=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],a8=[0,[15,0],rp(SD)],i8=rp(Sk),f8=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],c8=rp("Flow_ast.Statement.DoWhile.body"),s8=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],o8=[0,[17,0,0],rp(Mb)],v8=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],l8=rp(Ii),b8=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],D8=[0,[17,0,0],rp(Mb)],k8=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],p8=rp(ga),d8=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],w8=rp(el),h8=rp(sv),m8=rp(cb),F8=[0,[17,0,0],rp(Mb)],y8=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],E8=[0,[15,0],rp(SD)],_8=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],g8=rp("Flow_ast.Statement.While.test"),C8=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],S8=[0,[17,0,0],rp(Mb)],x8=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],T8=rp(Xu),A8=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],B8=[0,[17,0,0],rp(Mb)],I8=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],O8=[0,[15,0],rp(SD)],P8=rp("Flow_ast.Statement.VariableDeclaration.Var"),N8=rp("Flow_ast.Statement.VariableDeclaration.Let"),L8=rp("Flow_ast.Statement.VariableDeclaration.Const"),R8=[0,[15,0],rp(SD)],M8=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],j8=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],U8=rp("Flow_ast.Statement.VariableDeclaration.declarations"),X8=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],J8=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],G8=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],q8=[0,[17,0,0],rp(Mb)],z8=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],V8=rp(oe),W8=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Y8=[0,[17,0,0],rp(Mb)],H8=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],$8=[0,[15,0],rp(SD)],K8=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Q8=rp("Flow_ast.Statement.VariableDeclaration.Declarator.id"),Z8=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],r3=[0,[17,0,0],rp(Mb)],t3=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],e3=rp(Oa),n3=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],u3=rp(el),a3=rp(sv),i3=rp(cb),f3=[0,[17,0,0],rp(Mb)],c3=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],s3=[0,[15,0],rp(SD)],o3=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],v3=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],l3=[0,[17,0,[12,41,0]],rp(_t)],b3=[0,[15,0],rp(SD)],D3=rp(Sk),k3=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],p3=rp("Flow_ast.Statement.Try.block"),d3=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],w3=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],h3=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],m3=[0,[17,0,[12,41,0]],rp(_t)],F3=[0,[17,0,0],rp(Mb)],y3=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],E3=rp(yu),_3=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],g3=rp(el),C3=rp(sv),S3=rp(cb),x3=[0,[17,0,0],rp(Mb)],T3=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],A3=rp(Pl),B3=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],I3=rp(el),O3=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],P3=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],N3=[0,[17,0,[12,41,0]],rp(_t)],L3=rp(sv),R3=rp(cb),M3=[0,[17,0,0],rp(Mb)],j3=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],U3=rp(ga),X3=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],J3=rp(el),G3=rp(sv),q3=rp(cb),z3=[0,[17,0,0],rp(Mb)],V3=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],W3=[0,[15,0],rp(SD)],Y3=rp(Sk),H3=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],$3=rp("Flow_ast.Statement.Try.CatchClause.param"),K3=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Q3=rp(el),Z3=rp(sv),r6=rp(cb),t6=[0,[17,0,0],rp(Mb)],e6=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],n6=rp(Xu),u6=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],a6=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],i6=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],f6=[0,[17,0,[12,41,0]],rp(_t)],c6=[0,[17,0,0],rp(Mb)],s6=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],o6=rp(ga),v6=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],l6=rp(el),b6=rp(sv),D6=rp(cb),k6=[0,[17,0,0],rp(Mb)],p6=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],d6=[0,[15,0],rp(SD)],w6=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],h6=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],m6=[0,[17,0,[12,41,0]],rp(_t)],F6=[0,[15,0],rp(SD)],y6=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],E6=rp("Flow_ast.Statement.Throw.argument"),_6=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],g6=[0,[17,0,0],rp(Mb)],C6=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],S6=[0,[15,0],rp(SD)],x6=rp(Sk),T6=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],A6=rp("Flow_ast.Statement.Return.argument"),B6=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],I6=rp(el),O6=rp(sv),P6=rp(cb),N6=[0,[17,0,0],rp(Mb)],L6=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],R6=rp(ga),M6=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],j6=rp(el),U6=rp(sv),X6=rp(cb),J6=[0,[17,0,0],rp(Mb)],G6=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],q6=[0,[15,0],rp(SD)],z6=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],V6=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],W6=rp("Flow_ast.Statement.Switch.discriminant"),Y6=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],H6=[0,[17,0,0],rp(Mb)],$6=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],K6=rp("cases"),Q6=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Z6=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],r5=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],t5=[0,[17,0,0],rp(Mb)],e5=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],n5=[0,[15,0],rp(SD)],u5=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],a5=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],i5=rp("Flow_ast.Statement.Switch.Case.test"),f5=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],c5=rp(el),s5=rp(sv),o5=rp(cb),v5=[0,[17,0,0],rp(Mb)],l5=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],b5=rp(E),D5=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],k5=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],p5=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],d5=[0,[17,0,0],rp(Mb)],w5=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],h5=[0,[15,0],rp(SD)],m5=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],F5=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],y5=[0,[17,0,[12,41,0]],rp(_t)],E5=[0,[15,0],rp(SD)],_5=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],g5=rp("Flow_ast.Statement.OpaqueType.id"),C5=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],S5=[0,[17,0,0],rp(Mb)],x5=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],T5=rp(Xr),A5=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],B5=rp(el),I5=rp(sv),O5=rp(cb),P5=[0,[17,0,0],rp(Mb)],N5=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],L5=rp(V),R5=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],M5=rp(el),j5=rp(sv),U5=rp(cb),X5=[0,[17,0,0],rp(Mb)],J5=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],G5=rp(ft),q5=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],z5=rp(el),V5=rp(sv),W5=rp(cb),Y5=[0,[17,0,0],rp(Mb)],H5=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],$5=[0,[15,0],rp(SD)],K5=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Q5=rp("Flow_ast.Statement.TypeAlias.id"),Z5=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],r9=[0,[17,0,0],rp(Mb)],t9=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],e9=rp(Xr),n9=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],u9=rp(el),a9=rp(sv),i9=rp(cb),f9=[0,[17,0,0],rp(Mb)],c9=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],s9=rp(Uu),o9=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],v9=[0,[17,0,0],rp(Mb)],l9=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],b9=[0,[15,0],rp(SD)],D9=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],k9=rp("Flow_ast.Statement.With._object"),p9=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],d9=[0,[17,0,0],rp(Mb)],w9=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],h9=rp(Xu),m9=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],F9=[0,[17,0,0],rp(Mb)],y9=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],E9=[0,[15,0],rp(SD)],_9=rp(Sk),g9=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],C9=rp("Flow_ast.Statement.Continue.label"),S9=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],x9=rp(el),T9=rp(sv),A9=rp(cb),B9=[0,[17,0,0],rp(Mb)],I9=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],O9=rp(ga),P9=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],N9=rp(el),L9=rp(sv),R9=rp(cb),M9=[0,[17,0,0],rp(Mb)],j9=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],U9=[0,[15,0],rp(SD)],X9=rp(Sk),J9=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],G9=rp("Flow_ast.Statement.Break.label"),q9=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],z9=rp(el),V9=rp(sv),W9=rp(cb),Y9=[0,[17,0,0],rp(Mb)],H9=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],$9=rp(ga),K9=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Q9=rp(el),Z9=rp(sv),rrr=rp(cb),trr=[0,[17,0,0],rp(Mb)],err=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],nrr=[0,[15,0],rp(SD)],urr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],arr=rp("Flow_ast.Statement.Labeled.label"),irr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],frr=[0,[17,0,0],rp(Mb)],crr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],srr=rp(Xu),orr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],vrr=[0,[17,0,0],rp(Mb)],lrr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],brr=[0,[15,0],rp(SD)],Drr=rp(Sk),krr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],prr=rp("Flow_ast.Statement.If.test"),drr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],wrr=[0,[17,0,0],rp(Mb)],hrr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],mrr=rp(E),Frr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],yrr=[0,[17,0,0],rp(Mb)],Err=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],_rr=rp($t),grr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Crr=rp(el),Srr=rp(sv),xrr=rp(cb),Trr=[0,[17,0,0],rp(Mb)],Arr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Brr=rp(ga),Irr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Orr=rp(el),Prr=rp(sv),Nrr=rp(cb),Lrr=[0,[17,0,0],rp(Mb)],Rrr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],Mrr=[0,[15,0],rp(SD)],jrr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Urr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Xrr=rp("Flow_ast.Statement.Block.body"),Jrr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Grr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],qrr=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],zrr=[0,[17,0,0],rp(Mb)],Vrr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],Wrr=[0,[15,0],rp(SD)],Yrr=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Predicate.Declared"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Predicate.Declared@ ")],Hrr=[0,[17,0,[12,41,0]],rp(_t)],$rr=rp("Flow_ast.Type.Predicate.Inferred"),Krr=[0,[15,0],rp(SD)],Qrr=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Zrr=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],rtr=[0,[17,0,[12,41,0]],rp(_t)],ttr=[0,[15,0],rp(SD)],etr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],ntr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],utr=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],atr=[0,[15,0],rp(SD)],itr=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],ftr=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],ctr=[0,[17,0,[12,41,0]],rp(_t)],str=[0,[15,0],rp(SD)],otr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],vtr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],ltr=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],btr=[0,[15,0],rp(SD)],Dtr=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],ktr=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],ptr=[0,[17,0,[12,41,0]],rp(_t)],dtr=[0,[15,0],rp(SD)],wtr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],htr=rp("Flow_ast.Type.ParameterDeclaration.TypeParam.name"),mtr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Ftr=[0,[17,0,0],rp(Mb)],ytr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Etr=rp("bound"),_tr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],gtr=[0,[17,0,0],rp(Mb)],Ctr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Str=rp(p),xtr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Ttr=rp(el),Atr=rp(sv),Btr=rp(cb),Itr=[0,[17,0,0],rp(Mb)],Otr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Ptr=rp(lo),Ntr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Ltr=rp(el),Rtr=rp(sv),Mtr=rp(cb),jtr=[0,[17,0,0],rp(Mb)],Utr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],Xtr=[0,[15,0],rp(SD)],Jtr=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Gtr=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],qtr=[0,[17,0,[12,41,0]],rp(_t)],ztr=[0,[15,0],rp(SD)],Vtr=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Missing"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Missing@ ")],Wtr=[0,[17,0,[12,41,0]],rp(_t)],Ytr=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Available"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Available@ ")],Htr=[0,[17,0,[12,41,0]],rp(_t)],$tr=[0,[15,0],rp(SD)],Ktr=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Qtr=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Ztr=[0,[17,0,[12,41,0]],rp(_t)],rer=[0,[15,0],rp(SD)],ter=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],eer=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],ner=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],uer=rp("Flow_ast.Type.Any"),aer=rp("Flow_ast.Type.Mixed"),ier=rp("Flow_ast.Type.Empty"),fer=rp("Flow_ast.Type.Void"),cer=rp("Flow_ast.Type.Null"),ser=rp("Flow_ast.Type.Number"),oer=rp("Flow_ast.Type.BigInt"),ver=rp("Flow_ast.Type.String"),ler=rp("Flow_ast.Type.Boolean"),ber=rp("Flow_ast.Type.Exists"),Der=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Nullable"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Nullable@ ")],ker=[0,[17,0,[12,41,0]],rp(_t)],per=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Function"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Function@ ")],der=[0,[17,0,[12,41,0]],rp(_t)],wer=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Object"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Object@ ")],her=[0,[17,0,[12,41,0]],rp(_t)],mer=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Interface"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Interface@ ")],Fer=[0,[17,0,[12,41,0]],rp(_t)],yer=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Array"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Array@ ")],Eer=[0,[17,0,[12,41,0]],rp(_t)],_er=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Generic"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Generic@ ")],ger=[0,[17,0,[12,41,0]],rp(_t)],Cer=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Union ("),[17,[0,rp($o),0,0],0]]]],rp("(@[<2>Flow_ast.Type.Union (@,")],Ser=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],xer=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Ter=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],Aer=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],Ber=[0,[17,[0,rp($o),0,0],[11,rp(at),[17,0,0]]],rp(su)],Ier=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Intersection ("),[17,[0,rp($o),0,0],0]]]],rp("(@[<2>Flow_ast.Type.Intersection (@,")],Oer=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Per=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Ner=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],Ler=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],Rer=[0,[17,[0,rp($o),0,0],[11,rp(at),[17,0,0]]],rp(su)],Mer=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Typeof"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Typeof@ ")],jer=[0,[17,0,[12,41,0]],rp(_t)],Uer=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Tuple"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Tuple@ ")],Xer=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],Jer=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],Ger=[0,[17,0,[12,41,0]],rp(_t)],qer=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.StringLiteral"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.StringLiteral@ ")],zer=[0,[17,0,[12,41,0]],rp(_t)],Ver=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.NumberLiteral"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.NumberLiteral@ ")],Wer=[0,[17,0,[12,41,0]],rp(_t)],Yer=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.BigIntLiteral"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.BigIntLiteral@ ")],Her=[0,[17,0,[12,41,0]],rp(_t)],$er=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.BooleanLiteral"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.BooleanLiteral@ ")],Ker=[0,[9,0,0],rp(or)],Qer=[0,[17,0,[12,41,0]],rp(_t)],Zer=[0,[15,0],rp(SD)],rnr=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],tnr=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],enr=[0,[17,0,[12,41,0]],rp(_t)],nnr=[0,[15,0],rp(SD)],unr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],anr=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],inr=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],fnr=[0,[17,0,[12,41,0]],rp(_t)],cnr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],snr=rp("Flow_ast.Type.Interface.body"),onr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],vnr=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],lnr=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],bnr=[0,[17,0,[12,41,0]],rp(_t)],Dnr=[0,[17,0,0],rp(Mb)],knr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],pnr=rp(Pk),dnr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],wnr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],hnr=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],mnr=[0,[17,0,0],rp(Mb)],Fnr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],ynr=[0,[15,0],rp(SD)],Enr=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Object.Property"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Object.Property@ ")],_nr=[0,[17,0,[12,41,0]],rp(_t)],gnr=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Object.SpreadProperty"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Object.SpreadProperty@ ")],Cnr=[0,[17,0,[12,41,0]],rp(_t)],Snr=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Object.Indexer"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Object.Indexer@ ")],xnr=[0,[17,0,[12,41,0]],rp(_t)],Tnr=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Object.CallProperty"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Object.CallProperty@ ")],Anr=[0,[17,0,[12,41,0]],rp(_t)],Bnr=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Object.InternalSlot"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Object.InternalSlot@ ")],Inr=[0,[17,0,[12,41,0]],rp(_t)],Onr=[0,[15,0],rp(SD)],Pnr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Nnr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Lnr=rp("Flow_ast.Type.Object.exact"),Rnr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Mnr=[0,[9,0,0],rp(or)],jnr=[0,[17,0,0],rp(Mb)],Unr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Xnr=rp(ev),Jnr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Gnr=[0,[9,0,0],rp(or)],qnr=[0,[17,0,0],rp(Mb)],znr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Vnr=rp(ka),Wnr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Ynr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],Hnr=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],$nr=[0,[17,0,0],rp(Mb)],Knr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],Qnr=[0,[15,0],rp(SD)],Znr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],rur=rp("Flow_ast.Type.Object.InternalSlot.id"),tur=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],eur=[0,[17,0,0],rp(Mb)],nur=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],uur=rp(je),aur=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],iur=[0,[17,0,0],rp(Mb)],fur=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],cur=rp(Rb),sur=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],our=[0,[9,0,0],rp(or)],vur=[0,[17,0,0],rp(Mb)],lur=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],bur=rp(Ta),Dur=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],kur=[0,[9,0,0],rp(or)],pur=[0,[17,0,0],rp(Mb)],dur=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],wur=rp(q),hur=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],mur=[0,[9,0,0],rp(or)],Fur=[0,[17,0,0],rp(Mb)],yur=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],Eur=[0,[15,0],rp(SD)],_ur=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],gur=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Cur=[0,[17,0,[12,41,0]],rp(_t)],Sur=[0,[15,0],rp(SD)],xur=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Tur=rp("Flow_ast.Type.Object.CallProperty.value"),Aur=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Bur=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Iur=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Our=[0,[17,0,[12,41,0]],rp(_t)],Pur=[0,[17,0,0],rp(Mb)],Nur=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Lur=rp(Ta),Rur=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Mur=[0,[9,0,0],rp(or)],jur=[0,[17,0,0],rp(Mb)],Uur=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],Xur=[0,[15,0],rp(SD)],Jur=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Gur=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],qur=[0,[17,0,[12,41,0]],rp(_t)],zur=[0,[15,0],rp(SD)],Vur=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Wur=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Yur=[0,[17,0,[12,41,0]],rp(_t)],Hur=[0,[15,0],rp(SD)],$ur=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Kur=rp("Flow_ast.Type.Object.Indexer.id"),Qur=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Zur=rp(el),rar=rp(sv),tar=rp(cb),ear=[0,[17,0,0],rp(Mb)],nar=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],uar=rp(tk),aar=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],iar=[0,[17,0,0],rp(Mb)],far=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],car=rp(je),sar=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],oar=[0,[17,0,0],rp(Mb)],lar=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],bar=rp(Ta),Dar=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],kar=[0,[9,0,0],rp(or)],par=[0,[17,0,0],rp(Mb)],dar=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],war=rp(p),har=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],mar=rp(el),Far=rp(sv),yar=rp(cb),Ear=[0,[17,0,0],rp(Mb)],_ar=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],gar=[0,[15,0],rp(SD)],Car=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Sar=rp("Flow_ast.Type.Object.SpreadProperty.argument"),xar=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Tar=[0,[17,0,0],rp(Mb)],Aar=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],Bar=[0,[15,0],rp(SD)],Iar=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Oar=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Par=[0,[17,0,[12,41,0]],rp(_t)],Nar=[0,[15,0],rp(SD)],Lar=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Object.Property.Init"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Object.Property.Init@ ")],Rar=[0,[17,0,[12,41,0]],rp(_t)],Mar=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Object.Property.Get"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Object.Property.Get@ ")],jar=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Uar=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Xar=[0,[17,0,[12,41,0]],rp(_t)],Jar=[0,[17,0,[12,41,0]],rp(_t)],Gar=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Object.Property.Set"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Object.Property.Set@ ")],qar=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],zar=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Var=[0,[17,0,[12,41,0]],rp(_t)],War=[0,[17,0,[12,41,0]],rp(_t)],Yar=[0,[15,0],rp(SD)],Har=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],$ar=rp("Flow_ast.Type.Object.Property.key"),Kar=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Qar=[0,[17,0,0],rp(Mb)],Zar=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],rir=rp(je),tir=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],eir=[0,[17,0,0],rp(Mb)],nir=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],uir=rp(Rb),air=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],iir=[0,[9,0,0],rp(or)],fir=[0,[17,0,0],rp(Mb)],cir=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],sir=rp(Ta),oir=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],vir=[0,[9,0,0],rp(or)],lir=[0,[17,0,0],rp(Mb)],bir=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Dir=rp(Xa),kir=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],pir=[0,[9,0,0],rp(or)],dir=[0,[17,0,0],rp(Mb)],wir=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],hir=rp(q),mir=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Fir=[0,[9,0,0],rp(or)],yir=[0,[17,0,0],rp(Mb)],Eir=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],_ir=rp(p),gir=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Cir=rp(el),Sir=rp(sv),xir=rp(cb),Tir=[0,[17,0,0],rp(Mb)],Air=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],Bir=[0,[15,0],rp(SD)],Iir=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Oir=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Pir=[0,[17,0,[12,41,0]],rp(_t)],Nir=[0,[15,0],rp(SD)],Lir=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Rir=rp("Flow_ast.Type.Generic.id"),Mir=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],jir=[0,[17,0,0],rp(Mb)],Uir=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Xir=rp(xs),Jir=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Gir=rp(el),qir=rp(sv),zir=rp(cb),Vir=[0,[17,0,0],rp(Mb)],Wir=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],Yir=[0,[15,0],rp(SD)],Hir=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],$ir=rp("Flow_ast.Type.Generic.Identifier.qualification"),Kir=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Qir=[0,[17,0,0],rp(Mb)],Zir=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],rfr=rp(ef),tfr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],efr=[0,[17,0,0],rp(Mb)],nfr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],ufr=[0,[15,0],rp(SD)],afr=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],ifr=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],ffr=[0,[17,0,[12,41,0]],rp(_t)],cfr=[0,[15,0],rp(SD)],sfr=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Generic.Identifier.Unqualified"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Generic.Identifier.Unqualified@ ")],ofr=[0,[17,0,[12,41,0]],rp(_t)],vfr=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Type.Generic.Identifier.Qualified"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Type.Generic.Identifier.Qualified@ ")],lfr=[0,[17,0,[12,41,0]],rp(_t)],bfr=[0,[15,0],rp(SD)],Dfr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],kfr=rp("Flow_ast.Type.Function.tparams"),pfr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],dfr=rp(el),wfr=rp(sv),hfr=rp(cb),mfr=[0,[17,0,0],rp(Mb)],Ffr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],yfr=rp(B),Efr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],_fr=[0,[17,0,0],rp(Mb)],gfr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Cfr=rp(_n),Sfr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],xfr=[0,[17,0,0],rp(Mb)],Tfr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],Afr=[0,[15,0],rp(SD)],Bfr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Ifr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Ofr=rp("Flow_ast.Type.Function.Params.params"),Pfr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Nfr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],Lfr=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],Rfr=[0,[17,0,0],rp(Mb)],Mfr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],jfr=rp(si),Ufr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Xfr=rp(el),Jfr=rp(sv),Gfr=rp(cb),qfr=[0,[17,0,0],rp(Mb)],zfr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],Vfr=[0,[15,0],rp(SD)],Wfr=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Yfr=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Hfr=[0,[17,0,[12,41,0]],rp(_t)],$fr=[0,[15,0],rp(SD)],Kfr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Qfr=rp("Flow_ast.Type.Function.RestParam.argument"),Zfr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],rcr=[0,[17,0,0],rp(Mb)],tcr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],ecr=[0,[15,0],rp(SD)],ncr=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],ucr=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],acr=[0,[17,0,[12,41,0]],rp(_t)],icr=[0,[15,0],rp(SD)],fcr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],ccr=rp("Flow_ast.Type.Function.Param.name"),scr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],ocr=rp(el),vcr=rp(sv),lcr=rp(cb),bcr=[0,[17,0,0],rp(Mb)],Dcr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],kcr=rp(Na),pcr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],dcr=[0,[17,0,0],rp(Mb)],wcr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],hcr=rp(Rb),mcr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Fcr=[0,[9,0,0],rp(or)],ycr=[0,[17,0,0],rp(Mb)],Ecr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],_cr=[0,[15,0],rp(SD)],gcr=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Ccr=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Scr=[0,[17,0,[12,41,0]],rp(_t)],xcr=[0,[15,0],rp(SD)],Tcr=rp("Flow_ast.Variance.Minus"),Acr=rp("Flow_ast.Variance.Plus"),Bcr=[0,[15,0],rp(SD)],Icr=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Ocr=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Pcr=[0,[17,0,[12,41,0]],rp(_t)],Ncr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Lcr=rp("Flow_ast.BigIntLiteral.approx_value"),Rcr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Mcr=[0,[8,15,0,0,0],rp("%F")],jcr=[0,[17,0,0],rp(Mb)],Ucr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Xcr=rp(Vn),Jcr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Gcr=[0,[3,0,0],rp(Mc)],qcr=[0,[17,0,0],rp(Mb)],zcr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],Vcr=[0,[15,0],rp(SD)],Wcr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Ycr=rp("Flow_ast.NumberLiteral.value"),Hcr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],$cr=[0,[8,15,0,0,0],rp("%F")],Kcr=[0,[17,0,0],rp(Mb)],Qcr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Zcr=rp(Yt),rsr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],tsr=[0,[3,0,0],rp(Mc)],esr=[0,[17,0,0],rp(Mb)],nsr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],usr=[0,[15,0],rp(SD)],asr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],isr=rp("Flow_ast.StringLiteral.value"),fsr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],csr=[0,[3,0,0],rp(Mc)],ssr=[0,[17,0,0],rp(Mb)],osr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],vsr=rp(Yt),lsr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],bsr=[0,[3,0,0],rp(Mc)],Dsr=[0,[17,0,0],rp(Mb)],ksr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],psr=[0,[15,0],rp(SD)],dsr=[0,[15,0],rp(SD)],wsr=rp("Flow_ast.Literal.Null"),hsr=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Literal.String"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Literal.String@ ")],msr=[0,[3,0,0],rp(Mc)],Fsr=[0,[17,0,[12,41,0]],rp(_t)],ysr=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Literal.Boolean"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Literal.Boolean@ ")],Esr=[0,[9,0,0],rp(or)],_sr=[0,[17,0,[12,41,0]],rp(_t)],gsr=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Literal.Number"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Literal.Number@ ")],Csr=[0,[8,15,0,0,0],rp("%F")],Ssr=[0,[17,0,[12,41,0]],rp(_t)],xsr=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Literal.BigInt"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Literal.BigInt@ ")],Tsr=[0,[8,15,0,0,0],rp("%F")],Asr=[0,[17,0,[12,41,0]],rp(_t)],Bsr=[0,[12,40,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp("Flow_ast.Literal.RegExp"),[17,[0,rp(Ya),1,0],0]]]],rp("(@[<2>Flow_ast.Literal.RegExp@ ")],Isr=[0,[17,0,[12,41,0]],rp(_t)],Osr=[0,[15,0],rp(SD)],Psr=rp(Sk),Nsr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Lsr=rp("Flow_ast.Literal.value"),Rsr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Msr=[0,[17,0,0],rp(Mb)],jsr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Usr=rp(Yt),Xsr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Jsr=[0,[3,0,0],rp(Mc)],Gsr=[0,[17,0,0],rp(Mb)],qsr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],zsr=rp(ga),Vsr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Wsr=rp(el),Ysr=rp(sv),Hsr=rp(cb),$sr=[0,[17,0,0],rp(Mb)],Ksr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],Qsr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Zsr=rp("Flow_ast.Literal.RegExp.pattern"),ror=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],tor=[0,[3,0,0],rp(Mc)],eor=[0,[17,0,0],rp(Mb)],nor=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],uor=rp("flags"),aor=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],ior=[0,[3,0,0],rp(Mc)],cor=[0,[17,0,0],rp(Mb)],sor=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],oor=[0,[15,0],rp(SD)],vor=[0,[15,0],rp(SD)],lor=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],bor=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Dor=[0,[17,0,[12,41,0]],rp(_t)],kor=[0,[15,0],rp(SD)],por=rp(Sk),dor=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],wor=rp("Flow_ast.Identifier.name"),hor=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],mor=[0,[3,0,0],rp(Mc)],For=[0,[17,0,0],rp(Mb)],yor=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Eor=rp(ga),_or=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],gor=rp(el),Cor=rp(sv),Sor=rp(cb),xor=[0,[17,0,0],rp(Mb)],Tor=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],Aor=[0,[15,0],rp(SD)],Bor=[0,[12,40,[18,[1,[0,0,rp(bo)]],0]],rp(kn)],Ior=[0,[12,44,[17,[0,rp(Ya),1,0],0]],rp(CD)],Oor=[0,[17,0,[12,41,0]],rp(_t)],Por=[0,[15,0],rp(SD)],Nor=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Lor=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Ror=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Mor=rp("Flow_ast.Syntax.leading"),jor=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Uor=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],Xor=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],Jor=[0,[17,0,0],rp(Mb)],Gor=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],qor=rp("trailing"),zor=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Vor=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[12,91,0]],rp(I)],Wor=[0,[17,[0,rp($o),0,0],[12,93,[17,0,0]]],rp(Dc)],Yor=[0,[17,0,0],rp(Mb)],Hor=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],$or=rp("internal"),Kor=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Qor=[0,[17,0,0],rp(Mb)],Zor=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],rvr=[0,[0,0,0]],tvr=[0,rp(No),22,2],evr=[0,[0,0,0,0,0]],nvr=[0,rp(No),33,2],uvr=[0,[0,0,0]],avr=[0,rp(No),38,2],ivr=[0,[0,[0,[0,0,0]],0,0,0,0]],fvr=[0,rp(No),65,2],cvr=[0,[0,0,0]],svr=[0,rp(No),74,2],ovr=[0,[0,0,0]],vvr=[0,rp(No),83,2],lvr=[0,[0,0,0]],bvr=[0,rp(No),93,2],Dvr=[0,[0,0,0,0,0]],kvr=[0,rp(No),kb,2],pvr=[0,[0,[0,[0,[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],0,0]],[0,[0,[0,[0,0,0,0,0,0,0]],0,0]],[0,[0,[0,[0,0,0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],0,0,0,0]],[0,[0,0,0]],0,0,0,0,0,0,0,0,[0,[0,[0,[0,0,0,0,0]],0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]]]],dvr=[0,rp(No),330,2],wvr=[0,[0,[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,[0,[0,0,0,0,0]],0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,[0,[0,0,0,0,0]],0,0]],[0,[0,[0,[0,0,0,0,0]],0,0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0]],0,0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0,0,0,0,0]],[0,[0,[0,[0,0,0,0,0]],0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0,0,0,0,0]],[0,[0,0,0]],0,0,0,0,0,0]],hvr=[0,rp(No),792,2],mvr=[0,[0,[0,[0,0,0,0,0,0,0]],[0,[0,0,0,0,0]],0,0,[0,[0,0,0]],[0,[0,[0,[0,0,0,0,0,0,0]],0,0]],[0,[0,0,0]],[0,[0,[0,[0,0,0,0,0,0,0]],[0,[0,0,0,0,0]],0,0,0,0]],[0,[0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,[0,[0,0,0,0,0]],0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],0,0,0,0]],Fvr=[0,rp(No),1154,2],yvr=[0,[0,[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0]],[0,[0,0,0,0,0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0,0,0]],0,0,[0,[0,0,0,0,0,0,0]],[0,[0,0,0,0,0]],0,0,0,0,0,0,0,0]],Evr=[0,rp(No),1277,2],_vr=[0,[0,[0,[0,[0,[0,0,0,0,0,0,0]],[0,[0,0,0,0,0]],0,0,0,0]],[0,[0,[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],0,0,0,0]],[0,[0,0,0]],0,0,0,0]],gvr=[0,rp(No),1362,2],Cvr=[0,[0,0,0,0,0]],Svr=[0,rp(No),1372,2],xvr=[0,[0,[0,[0,0,0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0,0,0]],[0,[0,0,0,0,0]],0,0]],Tvr=[0,rp(No),1470,2],Avr=[0,[0,[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],0,0,0,0]],Bvr=[0,rp(No),1520,2],Ivr=[0,[0,0,0]],Ovr=[0,[0,0,0,0,0]],Pvr=[0,[0,0,0]],Nvr=[0,[0,[0,[0,0,0]],0,0,0,0]],Lvr=[0,[0,0,0]],Rvr=[0,[0,0,0]],Mvr=[0,[0,0,0]],jvr=[0,[0,0,0,0,0]],Uvr=[0,[0,[0,[0,[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],0,0]],[0,[0,[0,[0,0,0,0,0,0,0]],0,0]],[0,[0,[0,[0,0,0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],0,0,0,0]],[0,[0,0,0]],0,0,0,0,0,0,0,0,[0,[0,[0,[0,0,0,0,0]],0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]]]],Xvr=[0,[0,[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,[0,[0,0,0,0,0]],0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,[0,[0,0,0,0,0]],0,0]],[0,[0,[0,[0,0,0,0,0]],0,0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0]],0,0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0,0,0,0,0]],[0,[0,[0,[0,0,0,0,0]],0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0,0,0,0,0]],[0,[0,0,0]],0,0,0,0,0,0]],Jvr=[0,[0,[0,[0,0,0,0,0,0,0]],[0,[0,0,0,0,0]],0,0,[0,[0,0,0]],[0,[0,[0,[0,0,0,0,0,0,0]],0,0]],[0,[0,0,0]],[0,[0,[0,[0,0,0,0,0,0,0]],[0,[0,0,0,0,0]],0,0,0,0]],[0,[0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,[0,[0,0,0,0,0]],0,0]],[0,[0,0,0]],[0,[0,0,0]],[0,[0,0,0]],0,0,0,0]],Gvr=[0,[0,[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0]],[0,[0,0,0,0,0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0,0,0]],0,0,[0,[0,0,0,0,0,0,0]],[0,[0,0,0,0,0]],0,0,0,0,0,0,0,0]],qvr=[0,[0,[0,[0,[0,[0,0,0,0,0,0,0]],[0,[0,0,0,0,0]],0,0,0,0]],[0,[0,[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],0,0,0,0]],[0,[0,0,0]],0,0,0,0]],zvr=[0,[0,0,0,0,0]],Vvr=[0,[0,[0,[0,0,0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0,0,0]],[0,[0,0,0,0,0]],0,0]],Wvr=[0,[0,[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],[0,[0,0,0,0,0]],0,0,0,0]],Yvr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],Hvr=rp("Loc.line"),$vr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],Kvr=[0,[4,0,0,0,0],rp(ou)],Qvr=[0,[17,0,0],rp(Mb)],Zvr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],rlr=rp(Me),tlr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],elr=[0,[4,0,0,0,0],rp(ou)],nlr=[0,[17,0,0],rp(Mb)],ulr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],alr=[0,[15,0],rp(SD)],ilr=[0,[18,[1,[0,[11,rp(FD),0],rp(FD)]],[11,rp(Yo),0]],rp(Xn)],flr=rp("Loc.source"),clr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],slr=rp(el),olr=rp(sv),vlr=rp(cb),llr=[0,[17,0,0],rp(Mb)],blr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],Dlr=rp(X),klr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],plr=[0,[17,0,0],rp(Mb)],dlr=[0,[12,59,[17,[0,rp(Ya),1,0],0]],rp(Lu)],wlr=rp("_end"),hlr=[0,[18,[1,[0,0,rp(bo)]],[2,0,[11,rp(mD),[17,[0,rp(Ya),1,0],0]]]],rp(kv)],mlr=[0,[17,0,0],rp(Mb)],Flr=[0,[17,[0,rp(Ya),1,0],[12,Gn,[17,0,0]]],rp(ku)],ylr=rp("=="),Elr=rp("!="),_lr=rp("==="),glr=rp("!=="),Clr=rp("<"),Slr=rp("<="),xlr=rp(">"),Tlr=rp(">="),Alr=rp("<<"),Blr=rp(">>"),Ilr=rp(">>>"),Olr=rp(qo),Plr=rp(us),Nlr=rp("*"),Llr=rp("**"),Rlr=rp(Tv),Mlr=rp("%"),jlr=rp("|"),Ulr=rp("^"),Xlr=rp("&"),Jlr=rp("in"),Glr=rp(wo),qlr=rp("+="),zlr=rp("-="),Vlr=rp("*="),Wlr=rp("**="),Ylr=rp("/="),Hlr=rp("%="),$lr=rp("<<="),Klr=rp(">>="),Qlr=rp(">>>="),Zlr=rp("|="),rbr=rp("^="),tbr=rp("&="),ebr=rp("expression pattern"),nbr=rp(Sa),ubr=rp(Me),abr=[0,[11,rp("Failure while looking up "),[2,0,[11,rp(". Index: "),[4,0,0,0,[11,rp(". Length: "),[4,0,0,0,[12,46,0]]]]]]],rp("Failure while looking up %s. Index: %d. Length: %d.")],ibr=[0,0,0,0],fbr=rp("Offset_utils.Offset_lookup_failed"),cbr=rp(Ie),sbr=rp(jv),obr=rp(Oi),vbr=rp("symbol"),lbr=rp("Unexpected reserved word"),bbr=rp("Unexpected reserved type"),Dbr=rp("Unexpected `super` outside of a class method"),kbr=rp("`super()` is only valid in a class constructor"),pbr=rp("Unexpected end of input"),dbr=rp("Unexpected variance sigil"),wbr=rp("Unexpected static modifier"),hbr=rp("Unexpected proto modifier"),mbr=rp("Type aliases are not allowed in untyped mode"),Fbr=rp("Opaque type aliases are not allowed in untyped mode"),ybr=rp("Type annotations are not allowed in untyped mode"),Ebr=rp("Type declarations are not allowed in untyped mode"),_br=rp("Type imports are not allowed in untyped mode"),gbr=rp("Type exports are not allowed in untyped mode"),Cbr=rp("Interfaces are not allowed in untyped mode"),Sbr=rp("Spreading a type is only allowed inside an object type"),xbr=rp("Explicit inexact syntax must come at the end of an object type"),Tbr=rp("Explicit inexact syntax cannot appear inside an explicit exact object type"),Abr=rp("Explicit inexact syntax can only appear inside an object type"),Bbr=rp("Illegal newline after throw"),Ibr=rp("A bigint literal must be an integer"),Obr=rp("A bigint literal cannot use exponential notation"),Pbr=rp("Invalid regular expression"),Nbr=rp("Invalid regular expression: missing /"),Lbr=rp("Invalid left-hand side in assignment"),Rbr=rp("Invalid left-hand side in exponentiation expression"),Mbr=rp("Invalid left-hand side in for-in"),jbr=rp("Invalid left-hand side in for-of"),Ubr=rp("found an expression instead"),Xbr=rp("Expected an object pattern, array pattern, or an identifier but "),Jbr=rp("More than one default clause in switch statement"),Gbr=rp("Missing catch or finally after try"),qbr=rp("Illegal continue statement"),zbr=rp("Illegal break statement"),Vbr=rp("Illegal return statement"),Wbr=rp("Illegal Unicode escape"),Ybr=rp("Strict mode code may not include a with statement"),Hbr=rp("Catch variable may not be eval or arguments in strict mode"),$br=rp("Variable name may not be eval or arguments in strict mode"),Kbr=rp("Parameter name eval or arguments is not allowed in strict mode"),Qbr=rp("Strict mode function may not have duplicate parameter names"),Zbr=rp("Function name may not be eval or arguments in strict mode"),rDr=rp("Octal literals are not allowed in strict mode."),tDr=rp("Number literals with leading zeros are not allowed in strict mode."),eDr=rp("Delete of an unqualified identifier in strict mode."),nDr=rp("Duplicate data property in object literal not allowed in strict mode"),uDr=rp("Object literal may not have data and accessor property with the same name"),aDr=rp("Object literal may not have multiple get/set accessors with the same name"),iDr=rp("Assignment to eval or arguments is not allowed in strict mode"),fDr=rp("Postfix increment/decrement may not have eval or arguments operand in strict mode"),cDr=rp("Prefix increment/decrement may not have eval or arguments operand in strict mode"),sDr=rp("Use of future reserved word in strict mode"),oDr=rp("JSX attributes must only be assigned a non-empty expression"),vDr=rp("JSX value should be either an expression or a quoted JSX text"),lDr=rp("Const must be initialized"),bDr=rp("Destructuring assignment must be initialized"),DDr=rp("Illegal newline before arrow"),kDr=rp(tu),pDr=rp("Async functions can only be declared at top level or "),dDr=rp(tu),wDr=rp("Generators can only be declared at top level or "),hDr=rp("elements must be wrapped in an enclosing parent tag"),mDr=rp("Unexpected token <. Remember, adjacent JSX "),FDr=rp("Rest parameter must be final parameter of an argument list"),yDr=rp("Rest element must be final element of an array pattern"),EDr=rp("Rest property must be final property of an object pattern"),_Dr=rp("async is an implementation detail and isn't necessary for your declare function statement. It is sufficient for your declare function to just have a Promise return type."),gDr=rp("`declare export let` is not supported. Use `declare export var` instead."),CDr=rp("`declare export const` is not supported. Use `declare export var` instead."),SDr=rp("`declare export type` is not supported. Use `export type` instead."),xDr=rp("`declare export interface` is not supported. Use `export interface` instead."),TDr=rp("`export * as` is an early-stage proposal and is not enabled by default. To enable support in the parser, use the `esproposal_export_star_as` option"),ADr=rp("When exporting a class as a named export, you must specify a class name. Did you mean `export default class ...`?"),BDr=rp("When exporting a function as a named export, you must specify a function name. Did you mean `export default function ...`?"),IDr=rp("Found a decorator in an unsupported position."),ODr=rp("Type parameter declaration needs a default, since a preceding type parameter declaration has a default."),PDr=rp("Duplicate `declare module.exports` statement!"),NDr=rp("Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module xor they are a CommonJS module."),LDr=rp("Getter should have zero parameters"),RDr=rp("Setter should have exactly one parameter"),MDr=rp("`import type` or `import typeof`!"),jDr=rp("Imports within a `declare module` body must always be "),UDr=rp("The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements"),XDr=rp("Missing comma between import specifiers"),JDr=rp("Missing comma between export specifiers"),GDr=rp("Malformed unicode"),qDr=rp("Classes may only have one constructor"),zDr=rp("Classes may not have private methods."),VDr=rp("Private fields may not be deleted."),WDr=rp("Private fields can only be referenced from within a class."),YDr=rp("You may not access a private field through the `super` keyword."),HDr=rp("Yield expression not allowed in formal parameter"),$Dr=rp("`await` is an invalid identifier in async functions"),KDr=rp("`yield` is an invalid identifier in generators"),QDr=rp("either a `let` binding pattern, or a member expression."),ZDr=rp("`let [` is ambiguous in this position because it is "),rkr=rp("Literals cannot be used as shorthand properties."),tkr=rp("Computed properties must have a value."),ekr=rp("Object pattern can't contain methods"),nkr=rp("A trailing comma is not permitted after the rest element"),ukr=rp("The optional chaining plugin must be enabled in order to use the optional chaining operator (`?.`). Optional chaining is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_optional_chaining` option."),akr=rp("An optional chain may not be used in a `new` expression."),ikr=rp("Template literals may not be used in an optional chain."),fkr=rp("The nullish coalescing plugin must be enabled in order to use the nullish coalescing operator (`??`). Nullish coalescing is an active early-stage feature proposal which may change and is not enabled by default. To enable support in the parser, use the `esproposal_nullish_coalescing` option."),ckr=rp("Unexpected whitespace between `#` and identifier"),skr=rp("Unexpected parser state: "),okr=[0,[11,rp("Boolean enum members need to be initialized. Use either `"),[2,0,[11,rp(" = true,` or `"),[2,0,[11,rp(" = false,` in enum `"),[2,0,[11,rp(Cf),0]]]]]]],rp("Boolean enum members need to be initialized. Use either `%s = true,` or `%s = false,` in enum `%s`.")],vkr=[0,[11,rp("Enum member names need to be unique, but the name `"),[2,0,[11,rp("` has already been used before in enum `"),[2,0,[11,rp(Cf),0]]]]],rp("Enum member names need to be unique, but the name `%s` has already been used before in enum `%s`.")],lkr=[0,[11,rp("Enum `"),[2,0,[11,rp("` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers."),0]]],rp("Enum `%s` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.")],bkr=[0,[11,rp("Use one of `boolean`, `number`, `string`, or `symbol` in enum `"),[2,0,[11,rp(Cf),0]]],rp("Use one of `boolean`, `number`, `string`, or `symbol` in enum `%s`.")],Dkr=[0,[11,rp("Enum type `"),[2,0,[11,rp("` is not valid. "),[2,0,0]]]],rp("Enum type `%s` is not valid. %s")],kkr=[0,[11,rp("Supplied enum type is not valid. "),[2,0,0]],rp("Supplied enum type is not valid. %s")],pkr=[0,[11,rp("Symbol enum members cannot be initialized. Use `"),[2,0,[11,rp(",` in enum `"),[2,0,[11,rp(Cf),0]]]]],rp("Symbol enum members cannot be initialized. Use `%s,` in enum `%s`.")],dkr=[0,[11,rp("Enum `"),[2,0,[11,rp("` has type `"),[2,0,[11,rp("`, so the initializer of `"),[2,0,[11,rp("` needs to be a "),[2,0,[11,rp(" literal."),0]]]]]]]]],rp("Enum `%s` has type `%s`, so the initializer of `%s` needs to be a %s literal.")],wkr=[0,[11,rp("The enum member initializer for `"),[2,0,[11,rp("` needs to be a literal (either a boolean, number, or string) in enum `"),[2,0,[11,rp(Cf),0]]]]],rp("The enum member initializer for `%s` needs to be a literal (either a boolean, number, or string) in enum `%s`.")],hkr=[0,[11,rp("Enum member names cannot start with lowercase 'a' through 'z'. Instead of using `"),[2,0,[11,rp("`, consider using `"),[2,0,[11,rp("`, in enum `"),[2,0,[11,rp(Cf),0]]]]]]],rp("Enum member names cannot start with lowercase 'a' through 'z'. Instead of using `%s`, consider using `%s`, in enum `%s`.")],mkr=[0,[11,rp("Number enum members need to be initialized, e.g. `"),[2,0,[11,rp(" = 1,` in enum `"),[2,0,[11,rp(Cf),0]]]]],rp("Number enum members need to be initialized, e.g. `%s = 1,` in enum `%s`.")],Fkr=[0,[11,rp("String enum members need to consistently either all use initializers, or use no initializers, in enum "),[2,0,[12,46,0]]],rp("String enum members need to consistently either all use initializers, or use no initializers, in enum %s.")],ykr=[0,[11,rp(Xb),[2,0,0]],rp("Unexpected %s")],Ekr=[0,[11,rp(Xb),[2,0,[11,rp(", expected "),[2,0,0]]]],rp("Unexpected %s, expected %s")],_kr=[0,[11,rp(_k),[2,0,[11,rp("`. Did you mean `"),[2,0,[11,rp("`?"),0]]]]],rp("Unexpected token `%s`. Did you mean `%s`?")],gkr=rp("'"),Ckr=rp("Invalid flags supplied to RegExp constructor '"),Skr=rp("'"),xkr=rp("Undefined label '"),Tkr=rp("' has already been declared"),Akr=rp(" '"),Bkr=rp("Expected corresponding JSX closing tag for "),Ikr=rp(tu),Okr=rp("In strict mode code, functions can only be declared at top level or "),Pkr=rp("inside a block, or as the body of an if statement."),Nkr=rp("In non-strict mode code, functions can only be declared at top level, "),Lkr=[0,[11,rp("Duplicate export for `"),[2,0,[12,96,0]]],rp("Duplicate export for `%s`")],Rkr=rp("` is declared more than once."),Mkr=rp("Private fields may only be declared once. `#"),jkr=rp("static "),Ukr=rp(bo),Xkr=rp("#"),Jkr=rp(Cf),Gkr=rp("fields named `"),qkr=rp("Classes may not have "),zkr=rp("` has not been declared."),Vkr=rp("Private fields must be declared before they can be referenced. `#"),Wkr=[0,[11,rp(_k),[2,0,[11,rp("`. Parentheses are required to combine `??` with `&&` or `||` expressions."),0]]],rp("Unexpected token `%s`. Parentheses are required to combine `??` with `&&` or `||` expressions.")],Ykr=rp("Parse_error.Error"),Hkr=rp("range"),$kr=rp("loc"),Kkr=rp(ko),Qkr=rp(En),Zkr=rp(En),rpr=rp(ko),tpr=rp(bt),epr=rp(ga),npr=rp(Xu),upr=rp(Xu),apr=rp("Program"),ipr=rp("DebuggerStatement"),fpr=rp("EmptyStatement"),cpr=rp(Rf),spr=rp("BreakStatement"),opr=rp(Rf),vpr=rp("ContinueStatement"),lpr=rp(Kb),bpr=rp("DeclareExportAllDeclaration"),Dpr=rp(Kb),kpr=rp(mk),ppr=rp(xa),dpr=rp(lo),wpr=rp("DeclareExportDeclaration"),hpr=rp(oe),mpr=rp(Xu),Fpr=rp(ef),ypr=rp("DeclareModule"),Epr=rp(kk),_pr=rp("DeclareModuleExports"),gpr=rp(Ii),Cpr=rp(Xu),Spr=rp("DoWhileStatement"),xpr=rp(po),Tpr=rp(xa),Apr=rp("ExportDefaultDeclaration"),Bpr=rp(po),Ipr=rp(Kb),Opr=rp("ExportAllDeclaration"),Ppr=rp(po),Npr=rp(Kb),Lpr=rp(mk),Rpr=rp(xa),Mpr=rp("ExportNamedDeclaration"),jpr=rp(y),Upr=rp(Le),Xpr=rp("ExpressionStatement"),Jpr=rp(Xu),Gpr=rp("update"),qpr=rp(Ii),zpr=rp(Oa),Vpr=rp("ForStatement"),Wpr=rp(Gl),Ypr=rp(Xu),Hpr=rp(Uu),$pr=rp(bs),Kpr=rp("ForInStatement"),Qpr=rp("ForAwaitStatement"),Zpr=rp("ForOfStatement"),rdr=rp(Xu),tdr=rp(Uu),edr=rp(bs),ndr=rp($t),udr=rp(E),adr=rp(Ii),idr=rp("IfStatement"),fdr=rp(bt),cdr=rp(Ss),sdr=rp(je),odr=rp(Ok),vdr=rp(Kb),ldr=rp(mk),bdr=rp("ImportDeclaration"),Ddr=rp(Xu),kdr=rp(Rf),pdr=rp("LabeledStatement"),ddr=rp(Eo),wdr=rp("ReturnStatement"),hdr=rp("cases"),mdr=rp("discriminant"),Fdr=rp("SwitchStatement"),ydr=rp(Eo),Edr=rp("ThrowStatement"),_dr=rp(Pl),gdr=rp(yu),Cdr=rp("block"),Sdr=rp("TryStatement"),xdr=rp(Xu),Tdr=rp(Ii),Adr=rp("WhileStatement"),Bdr=rp(Xu),Idr=rp(Oc),Odr=rp("WithStatement"),Pdr=rp("Super"),Ndr=rp("ThisExpression"),Ldr=rp(jl),Rdr=rp("ArrayExpression"),Mdr=rp(yi),jdr=rp(es),Udr=rp(Le),Xdr=rp(xb),Jdr=rp(uD),Gdr=rp(ss),qdr=rp(Xu),zdr=rp(B),Vdr=rp(ef),Wdr=rp("ArrowFunctionExpression"),Ydr=rp("="),Hdr=rp(Uu),$dr=rp(bs),Kdr=rp(vb),Qdr=rp("AssignmentExpression"),Zdr=rp(Uu),rwr=rp(bs),twr=rp(vb),ewr=rp("BinaryExpression"),nwr=rp(ci),uwr=rp(vn),awr=rp("blocks"),iwr=rp("ComprehensionExpression"),fwr=rp($t),cwr=rp(E),swr=rp(Ii),owr=rp("ConditionalExpression"),vwr=rp(vn),lwr=rp("blocks"),bwr=rp("GeneratorExpression"),Dwr=rp(_a),kwr=rp("Import"),pwr=rp(yb),dwr=rp(ci),wwr=rp("||"),hwr=rp("&&"),mwr=rp("??"),Fwr=rp(Uu),ywr=rp(bs),Ewr=rp(vb),_wr=rp("LogicalExpression"),gwr=rp("MemberExpression"),Cwr=rp(Av),Swr=rp("meta"),xwr=rp("MetaProperty"),Twr=rp(_a),Awr=rp(yt),Bwr=rp(yb),Iwr=rp("NewExpression"),Owr=rp(ka),Pwr=rp("ObjectExpression"),Nwr=rp(Rb),Lwr=rp("OptionalCallExpression"),Rwr=rp(Rb),Mwr=rp("OptionalMemberExpression"),jwr=rp(Dn),Uwr=rp("SequenceExpression"),Xwr=rp(kk),Jwr=rp(Le),Gwr=rp("TypeCastExpression"),qwr=rp(Eo),zwr=rp("AwaitExpression"),Vwr=rp(us),Wwr=rp(qo),Ywr=rp("!"),Hwr=rp("~"),$wr=rp(Ss),Kwr=rp(fv),Qwr=rp(Ci),Zwr=rp("matched above"),rhr=rp(Eo),thr=rp(UD),ehr=rp(vb),nhr=rp("UnaryExpression"),uhr=rp("--"),ahr=rp("++"),ihr=rp(UD),fhr=rp(Eo),chr=rp(vb),shr=rp("UpdateExpression"),ohr=rp(af),vhr=rp(Eo),lhr=rp("YieldExpression"),bhr=rp("Unexpected FunctionDeclaration with BodyExpression"),Dhr=rp(yi),khr=rp(es),phr=rp(Le),dhr=rp(xb),whr=rp(uD),hhr=rp(ss),mhr=rp(Xu),Fhr=rp(B),yhr=rp(ef),Ehr=rp("FunctionDeclaration"),_hr=rp("Unexpected FunctionExpression with BodyExpression"),ghr=rp(yi),Chr=rp(es),Shr=rp(Le),xhr=rp(xb),Thr=rp(uD),Ahr=rp(ss),Bhr=rp(Xu),Ihr=rp(B),Ohr=rp(ef),Phr=rp("FunctionExpression"),Nhr=rp(Rb),Lhr=rp(kk),Rhr=rp(lb),Mhr=rp(s),jhr=rp(ef),Uhr=rp("PrivateName"),Xhr=rp(Rb),Jhr=rp(kk),Ghr=rp(lb),qhr=rp(s),zhr=rp(E),Vhr=rp(Ii),Whr=rp("SwitchCase"),Yhr=rp(Xu),Hhr=rp("param"),$hr=rp("CatchClause"),Khr=rp(Xu),Qhr=rp("BlockStatement"),Zhr=rp(ef),rmr=rp("DeclareVariable"),tmr=rp(xb),emr=rp(ef),nmr=rp("DeclareFunction"),umr=rp(xe),amr=rp(Rt),imr=rp(Pk),fmr=rp(Xu),cmr=rp(yi),smr=rp(ef),omr=rp("DeclareClass"),vmr=rp(Pk),lmr=rp(Xu),bmr=rp(yi),Dmr=rp(ef),kmr=rp("DeclareInterface"),pmr=rp(je),dmr=rp(bt),wmr=rp(mn),hmr=rp("ExportNamespaceSpecifier"),mmr=rp(Uu),Fmr=rp(yi),ymr=rp(ef),Emr=rp("DeclareTypeAlias"),_mr=rp(Uu),gmr=rp(yi),Cmr=rp(ef),Smr=rp("TypeAlias"),xmr=rp("DeclareOpaqueType"),Tmr=rp("OpaqueType"),Amr=rp(ft),Bmr=rp(V),Imr=rp(yi),Omr=rp(ef),Pmr=rp("ClassDeclaration"),Nmr=rp("ClassExpression"),Lmr=rp(ur),Rmr=rp(Rt),Mmr=rp("superTypeParameters"),jmr=rp("superClass"),Umr=rp(yi),Xmr=rp(Xu),Jmr=rp(ef),Gmr=rp(Le),qmr=rp("Decorator"),zmr=rp(yi),Vmr=rp(ef),Wmr=rp("ClassImplements"),Ymr=rp(Xu),Hmr=rp("ClassBody"),$mr=rp(N),Kmr=rp(Dr),Qmr=rp(pn),Zmr=rp(Ru),rFr=rp(ur),tFr=rp(Qi),eFr=rp(Ta),nFr=rp(oe),uFr=rp(je),aFr=rp(tk),iFr=rp("MethodDefinition"),fFr=rp(p),cFr=rp(Ta),sFr=rp(kk),oFr=rp(je),vFr=rp(tk),lFr=rp("ClassPrivateProperty"),bFr=rp("Internal Error: Private name found in class prop"),DFr=rp(p),kFr=rp(Ta),pFr=rp(Qi),dFr=rp(kk),wFr=rp(je),hFr=rp(tk),mFr=rp("ClassProperty"),FFr=rp(ef),yFr=rp(St),EFr=rp(Oa),_Fr=rp(ef),gFr=rp("EnumStringMember"),CFr=rp(ef),SFr=rp(St),xFr=rp(Oa),TFr=rp(ef),AFr=rp("EnumNumberMember"),BFr=rp(Oa),IFr=rp(ef),OFr=rp("EnumBooleanMember"),PFr=rp(ic),NFr=rp(Cn),LFr=rp("EnumBooleanBody"),RFr=rp(ic),MFr=rp(Cn),jFr=rp("EnumNumberBody"),UFr=rp(ic),XFr=rp(Cn),JFr=rp("EnumStringBody"),GFr=rp(Cn),qFr=rp("EnumSymbolBody"),zFr=rp(Xu),VFr=rp(ef),WFr=rp("EnumDeclaration"),YFr=rp(Pk),HFr=rp(Xu),$Fr=rp(yi),KFr=rp(ef),QFr=rp("InterfaceDeclaration"),ZFr=rp(yi),ryr=rp(ef),tyr=rp("InterfaceExtends"),eyr=rp(kk),nyr=rp(ka),uyr=rp("ObjectPattern"),ayr=rp(kk),iyr=rp(jl),fyr=rp("ArrayPattern"),cyr=rp(Uu),syr=rp(bs),oyr=rp(Fa),vyr=rp(Eo),lyr=rp(ik),byr=rp(Uu),Dyr=rp(bs),kyr=rp(Fa),pyr=rp(Eo),dyr=rp(ik),wyr=rp(Oa),hyr=rp(Oa),myr=rp(pn),Fyr=rp(Ru),yyr=rp(Tf),Eyr=rp(Qi),_yr=rp(qf),gyr=rp(Dr),Cyr=rp(oe),Syr=rp(je),xyr=rp(tk),Tyr=rp(Nt),Ayr=rp(Eo),Byr=rp("SpreadProperty"),Iyr=rp(Uu),Oyr=rp(bs),Pyr=rp(Fa),Nyr=rp(Qi),Lyr=rp(qf),Ryr=rp(Dr),Myr=rp(oe),jyr=rp(je),Uyr=rp(tk),Xyr=rp(Nt),Jyr=rp(Eo),Gyr=rp("RestProperty"),qyr=rp(Eo),zyr=rp("SpreadElement"),Vyr=rp(Gl),Wyr=rp(Uu),Yyr=rp(bs),Hyr=rp("ComprehensionBlock"),$yr=rp("We should not create Literal nodes for bigints"),Kyr=rp("flags"),Qyr=rp(m),Zyr=rp("regex"),rEr=rp(Yt),tEr=rp(je),eEr=rp(Yt),nEr=rp(je),uEr=rp(Rv),aEr=rp(Yt),iEr=rp(je),fEr=rp(Rv),cEr=rp(Vn),sEr=rp(je),oEr=rp("BigIntLiteral"),vEr=rp(Yt),lEr=rp(je),bEr=rp(Rv),DEr=rp(Dn),kEr=rp("quasis"),pEr=rp("TemplateLiteral"),dEr=rp("cooked"),wEr=rp(Yt),hEr=rp("tail"),mEr=rp(je),FEr=rp("TemplateElement"),yEr=rp("quasi"),EEr=rp("tag"),_Er=rp("TaggedTemplateExpression"),gEr=rp(z),CEr=rp(lv),SEr=rp(Fi),xEr=rp(oe),TEr=rp("declarations"),AEr=rp("VariableDeclaration"),BEr=rp(Oa),IEr=rp(ef),OEr=rp("VariableDeclarator"),PEr=rp(oe),NEr=rp("Variance"),LEr=rp("_"),REr=rp("AnyTypeAnnotation"),MEr=rp("MixedTypeAnnotation"),jEr=rp("EmptyTypeAnnotation"),UEr=rp("VoidTypeAnnotation"),XEr=rp("NullLiteralTypeAnnotation"),JEr=rp("NumberTypeAnnotation"),GEr=rp("BigIntTypeAnnotation"),qEr=rp("StringTypeAnnotation"),zEr=rp("BooleanTypeAnnotation"),VEr=rp(kk),WEr=rp("NullableTypeAnnotation"),YEr=rp(yi),HEr=rp(si),$Er=rp(es),KEr=rp(B),QEr=rp("FunctionTypeAnnotation"),ZEr=rp(Rb),r_r=rp(kk),t_r=rp(lb),e_r=rp("FunctionTypeParam"),n_r=[0,0,0,0,0],u_r=rp("internalSlots"),a_r=rp("callProperties"),i_r=rp("indexers"),f_r=rp(ka),c_r=rp("exact"),s_r=rp(ev),o_r=rp("ObjectTypeAnnotation"),v_r=rp(Tf),l_r=rp("There should not be computed object type property keys"),b_r=rp(Oa),D_r=rp(pn),k_r=rp(Ru),p_r=rp(oe),d_r=rp(p),w_r=rp(Xa),h_r=rp(Ta),m_r=rp(Rb),F_r=rp(Dr),y_r=rp(je),E_r=rp(tk),__r=rp("ObjectTypeProperty"),g_r=rp(Eo),C_r=rp("ObjectTypeSpreadProperty"),S_r=rp(p),x_r=rp(Ta),T_r=rp(je),A_r=rp(tk),B_r=rp(ef),I_r=rp("ObjectTypeIndexer"),O_r=rp(Ta),P_r=rp(je),N_r=rp("ObjectTypeCallProperty"),L_r=rp(je),R_r=rp(Dr),M_r=rp(Ta),j_r=rp(Rb),U_r=rp(ef),X_r=rp("ObjectTypeInternalSlot"),J_r=rp(Xu),G_r=rp(Pk),q_r=rp("InterfaceTypeAnnotation"),z_r=rp("elementType"),V_r=rp("ArrayTypeAnnotation"),W_r=rp(ef),Y_r=rp("qualification"),H_r=rp("QualifiedTypeIdentifier"),$_r=rp(yi),K_r=rp(ef),Q_r=rp("GenericTypeAnnotation"),Z_r=rp(Tb),rgr=rp("UnionTypeAnnotation"),tgr=rp(Tb),egr=rp("IntersectionTypeAnnotation"),ngr=rp(Eo),ugr=rp("TypeofTypeAnnotation"),agr=rp(Tb),igr=rp("TupleTypeAnnotation"),fgr=rp(Yt),cgr=rp(je),sgr=rp("StringLiteralTypeAnnotation"),ogr=rp(Yt),vgr=rp(je),lgr=rp("NumberLiteralTypeAnnotation"),bgr=rp(Yt),Dgr=rp(je),kgr=rp("BigIntLiteralTypeAnnotation"),pgr=rp(cf),dgr=rp(Si),wgr=rp(Yt),hgr=rp(je),mgr=rp("BooleanLiteralTypeAnnotation"),Fgr=rp("ExistsTypeAnnotation"),ygr=rp(kk),Egr=rp("TypeAnnotation"),_gr=rp(B),ggr=rp("TypeParameterDeclaration"),Cgr=rp(lo),Sgr=rp(p),xgr=rp("bound"),Tgr=rp(lb),Agr=rp("TypeParameter"),Bgr=rp(B),Igr=rp(Lv),Ogr=rp(B),Pgr=rp(Lv),Ngr=rp(f),Lgr=rp(en),Rgr=rp("openingElement"),Mgr=rp("JSXElement"),jgr=rp("closingFragment"),Ugr=rp(f),Xgr=rp("openingFragment"),Jgr=rp("JSXFragment"),Ggr=rp(sD),qgr=rp(Nf),zgr=rp(lb),Vgr=rp("JSXOpeningElement"),Wgr=rp("JSXOpeningFragment"),Ygr=rp(lb),Hgr=rp("JSXClosingElement"),$gr=rp("JSXClosingFragment"),Kgr=rp(Le),Qgr=rp("JSXSpreadChild"),Zgr=rp(je),rCr=rp(lb),tCr=rp("JSXAttribute"),eCr=rp(Eo),nCr=rp("JSXSpreadAttribute"),uCr=rp("JSXEmptyExpression"),aCr=rp(Le),iCr=rp("JSXExpressionContainer"),fCr=rp(Yt),cCr=rp(je),sCr=rp("JSXText"),oCr=rp(Av),vCr=rp(Oc),lCr=rp("JSXMemberExpression"),bCr=rp(lb),DCr=rp("namespace"),kCr=rp("JSXNamespacedName"),pCr=rp(lb),dCr=rp("JSXIdentifier"),wCr=rp(mn),hCr=rp(vl),mCr=rp("ExportSpecifier"),FCr=rp(vl),yCr=rp("ImportDefaultSpecifier"),ECr=rp(vl),_Cr=rp("ImportNamespaceSpecifier"),gCr=rp(Ok),CCr=rp(vl),SCr=rp("imported"),xCr=rp("ImportSpecifier"),TCr=rp("Block"),ACr=rp("Line"),BCr=rp(je),ICr=rp(je),OCr=rp("DeclaredPredicate"),PCr=rp("InferredPredicate"),NCr=rp(_a),LCr=rp(yt),RCr=rp(yb),MCr=rp(Qi),jCr=rp(Av),UCr=rp(Oc),XCr=rp("message"),JCr=rp("loc"),GCr=rp("end"),qCr=rp(X),zCr=rp(Kb),VCr=rp(Me),WCr=rp(Sa),YCr=[0,1,0],HCr=[0,rp("end of input"),rp("the")],$Cr=[0,rp("template literal part"),rp("a")],KCr=[0,rp("regexp"),rp("a")],QCr=rp("the"),ZCr=rp("a"),rSr=rp(jv),tSr=rp("a"),eSr=rp(Vn),nSr=rp("a"),uSr=rp(Oi),aSr=rp("an"),iSr=rp(jD),fSr=rp(ak),cSr=[0,[11,rp("token `"),[2,0,[12,96,0]]],rp("token `%s`")],sSr=rp("{"),oSr=rp("}"),vSr=rp("{|"),lSr=rp("|}"),bSr=rp("("),DSr=rp(sv),kSr=rp("["),pSr=rp("]"),dSr=rp(";"),wSr=rp(","),hSr=rp(ee),mSr=rp("=>"),FSr=rp("..."),ySr=rp("@"),ESr=rp("#"),_Sr=rp(Jv),gSr=rp("if"),CSr=rp("in"),SSr=rp(wo),xSr=rp(_n),TSr=rp(Tt),ASr=rp(st),BSr=rp(hr),ISr=rp("try"),OSr=rp(z),PSr=rp(Nl),NSr=rp(ll),LSr=rp(Fi),RSr=rp(lv),MSr=rp(fn),jSr=rp(Si),USr=rp(cf),XSr=rp(Pc),JSr=rp(Fs),GSr=rp(pc),qSr=rp(YD),zSr=rp(lo),VSr=rp("do"),WSr=rp(Jb),YSr=rp("for"),HSr=rp(qD),$Sr=rp(Pk),KSr=rp(Ta),QSr=rp(va),ZSr=rp(cl),rxr=rp(Ci),txr=rp(Ss),exr=rp(fv),nxr=rp(Us),uxr=rp(te),axr=rp(Ef),ixr=rp(Ys),fxr=rp(Rt),cxr=rp(to),sxr=rp(ut),oxr=rp(At),vxr=rp(yc),lxr=rp(Ns),bxr=rp(M),Dxr=rp(xf),kxr=rp(he),pxr=rp(bt),dxr=rp("opaque"),wxr=rp("of"),hxr=rp(ss),mxr=rp(is),Fxr=rp("%checks"),yxr=rp(">>>="),Exr=rp(">>="),_xr=rp("<<="),gxr=rp("^="),Cxr=rp("|="),Sxr=rp("&="),xxr=rp("%="),Txr=rp("/="),Axr=rp("*="),Bxr=rp("**="),Ixr=rp("-="),Oxr=rp("+="),Pxr=rp("="),Nxr=rp("?."),Lxr=rp("??"),Rxr=rp("?"),Mxr=rp(":"),jxr=rp("||"),Uxr=rp("&&"),Xxr=rp("|"),Jxr=rp("^"),Gxr=rp("&"),qxr=rp("=="),zxr=rp("!="),Vxr=rp("==="),Wxr=rp("!=="),Yxr=rp("<="),Hxr=rp(">="),$xr=rp("<"),Kxr=rp(">"),Qxr=rp("<<"),Zxr=rp(">>"),rTr=rp(">>>"),tTr=rp(qo),eTr=rp(us),nTr=rp(Tv),uTr=rp("*"),aTr=rp("**"),iTr=rp("%"),fTr=rp("!"),cTr=rp("~"),sTr=rp("++"),oTr=rp("--"),vTr=rp(bo),lTr=rp("any"),bTr=rp(cD),DTr=rp(Pn),kTr=rp(jv),pTr=rp(Vn),dTr=rp(Oi),wTr=rp(fv),hTr=rp(Tv),mTr=rp(Tv),FTr=rp(Ie),yTr=rp(vo),ETr=rp("T_LCURLY"),_Tr=rp("T_RCURLY"),gTr=rp("T_LCURLYBAR"),CTr=rp("T_RCURLYBAR"),STr=rp("T_LPAREN"),xTr=rp("T_RPAREN"),TTr=rp("T_LBRACKET"),ATr=rp("T_RBRACKET"),BTr=rp("T_SEMICOLON"),ITr=rp("T_COMMA"),OTr=rp("T_PERIOD"),PTr=rp("T_ARROW"),NTr=rp("T_ELLIPSIS"),LTr=rp("T_AT"),RTr=rp("T_POUND"),MTr=rp("T_FUNCTION"),jTr=rp("T_IF"),UTr=rp("T_IN"),XTr=rp("T_INSTANCEOF"),JTr=rp("T_RETURN"),GTr=rp("T_SWITCH"),qTr=rp("T_THIS"),zTr=rp("T_THROW"),VTr=rp("T_TRY"),WTr=rp("T_VAR"),YTr=rp("T_WHILE"),HTr=rp("T_WITH"),$Tr=rp("T_CONST"),KTr=rp("T_LET"),QTr=rp("T_NULL"),ZTr=rp("T_FALSE"),rAr=rp("T_TRUE"),tAr=rp("T_BREAK"),eAr=rp("T_CASE"),nAr=rp("T_CATCH"),uAr=rp("T_CONTINUE"),aAr=rp("T_DEFAULT"),iAr=rp("T_DO"),fAr=rp("T_FINALLY"),cAr=rp("T_FOR"),sAr=rp("T_CLASS"),oAr=rp("T_EXTENDS"),vAr=rp("T_STATIC"),lAr=rp("T_ELSE"),bAr=rp("T_NEW"),DAr=rp("T_DELETE"),kAr=rp("T_TYPEOF"),pAr=rp("T_VOID"),dAr=rp("T_ENUM"),wAr=rp("T_EXPORT"),hAr=rp("T_IMPORT"),mAr=rp("T_SUPER"),FAr=rp("T_IMPLEMENTS"),yAr=rp("T_INTERFACE"),EAr=rp("T_PACKAGE"),_Ar=rp("T_PRIVATE"),gAr=rp("T_PROTECTED"),CAr=rp("T_PUBLIC"),SAr=rp("T_YIELD"),xAr=rp("T_DEBUGGER"),TAr=rp("T_DECLARE"),AAr=rp("T_TYPE"),BAr=rp("T_OPAQUE"),IAr=rp("T_OF"),OAr=rp("T_ASYNC"),PAr=rp("T_AWAIT"),NAr=rp("T_CHECKS"),LAr=rp("T_RSHIFT3_ASSIGN"),RAr=rp("T_RSHIFT_ASSIGN"),MAr=rp("T_LSHIFT_ASSIGN"),jAr=rp("T_BIT_XOR_ASSIGN"),UAr=rp("T_BIT_OR_ASSIGN"),XAr=rp("T_BIT_AND_ASSIGN"),JAr=rp("T_MOD_ASSIGN"),GAr=rp("T_DIV_ASSIGN"),qAr=rp("T_MULT_ASSIGN"),zAr=rp("T_EXP_ASSIGN"),VAr=rp("T_MINUS_ASSIGN"),WAr=rp("T_PLUS_ASSIGN"),YAr=rp("T_ASSIGN"),HAr=rp("T_PLING_PERIOD"),$Ar=rp("T_PLING_PLING"),KAr=rp("T_PLING"),QAr=rp("T_COLON"),ZAr=rp("T_OR"),rBr=rp("T_AND"),tBr=rp("T_BIT_OR"),eBr=rp("T_BIT_XOR"),nBr=rp("T_BIT_AND"),uBr=rp("T_EQUAL"),aBr=rp("T_NOT_EQUAL"),iBr=rp("T_STRICT_EQUAL"),fBr=rp("T_STRICT_NOT_EQUAL"),cBr=rp("T_LESS_THAN_EQUAL"),sBr=rp("T_GREATER_THAN_EQUAL"),oBr=rp("T_LESS_THAN"),vBr=rp("T_GREATER_THAN"),lBr=rp("T_LSHIFT"),bBr=rp("T_RSHIFT"),DBr=rp("T_RSHIFT3"),kBr=rp("T_PLUS"),pBr=rp("T_MINUS"),dBr=rp("T_DIV"),wBr=rp("T_MULT"),hBr=rp("T_EXP"),mBr=rp("T_MOD"),FBr=rp("T_NOT"),yBr=rp("T_BIT_NOT"),EBr=rp("T_INCR"),_Br=rp("T_DECR"),gBr=rp("T_EOF"),CBr=rp("T_ANY_TYPE"),SBr=rp("T_MIXED_TYPE"),xBr=rp("T_EMPTY_TYPE"),TBr=rp("T_NUMBER_TYPE"),ABr=rp("T_BIGINT_TYPE"),BBr=rp("T_STRING_TYPE"),IBr=rp("T_VOID_TYPE"),OBr=rp("T_NUMBER"),PBr=rp("T_BIGINT"),NBr=rp("T_STRING"),LBr=rp("T_TEMPLATE_PART"),RBr=rp("T_IDENTIFIER"),MBr=rp("T_REGEXP"),jBr=rp("T_ERROR"),UBr=rp("T_JSX_IDENTIFIER"),XBr=rp("T_JSX_TEXT"),JBr=rp("T_BOOLEAN_TYPE"),GBr=rp("T_NUMBER_SINGLETON_TYPE"),qBr=rp("T_BIGINT_SINGLETON_TYPE"),zBr=rp("*-/"),VBr=rp("*/"),WBr=rp("*-/"),YBr=rp(Zv),HBr=rp(Zv),$Br=rp("\\"),KBr=rp(Zv),QBr=rp("${"),ZBr=rp("\r\n"),rIr=rp("\r\n"),tIr=rp("\n"),eIr=rp(Zv),nIr=rp("\\\\"),uIr=rp(Zv),aIr=rp(bo),iIr=rp(bo),fIr=rp(bo),cIr=rp(bo),sIr=rp(Zv),oIr=rp("'"),vIr=rp('"'),lIr=rp("<"),bIr=rp("{"),DIr=rp(Lb),kIr=rp("iexcl"),pIr=rp("aelig"),dIr=rp("Nu"),wIr=rp("Eacute"),hIr=rp("Atilde"),mIr=rp("'int'"),FIr=rp("AElig"),yIr=rp("Aacute"),EIr=rp("Acirc"),_Ir=rp("Agrave"),gIr=rp("Alpha"),CIr=rp("Aring"),SIr=[0,197],xIr=[0,913],TIr=[0,192],AIr=[0,194],BIr=[0,193],IIr=[0,198],OIr=[0,8747],PIr=rp("Auml"),NIr=rp("Beta"),LIr=rp("Ccedil"),RIr=rp("Chi"),MIr=rp("Dagger"),jIr=rp("Delta"),UIr=rp("ETH"),XIr=[0,208],JIr=[0,916],GIr=[0,8225],qIr=[0,935],zIr=[0,199],VIr=[0,914],WIr=[0,196],YIr=[0,195],HIr=rp("Icirc"),$Ir=rp("Ecirc"),KIr=rp("Egrave"),QIr=rp("Epsilon"),ZIr=rp("Eta"),rOr=rp("Euml"),tOr=rp("Gamma"),eOr=rp("Iacute"),nOr=[0,205],uOr=[0,915],aOr=[0,203],iOr=[0,919],fOr=[0,917],cOr=[0,200],sOr=[0,202],oOr=rp("Igrave"),vOr=rp("Iota"),lOr=rp("Iuml"),bOr=rp("Kappa"),DOr=rp("Lambda"),kOr=rp("Mu"),pOr=rp("Ntilde"),dOr=[0,209],wOr=[0,924],hOr=[0,923],mOr=[0,922],FOr=[0,207],yOr=[0,921],EOr=[0,204],_Or=[0,206],gOr=[0,201],COr=rp("Sigma"),SOr=rp("Otilde"),xOr=rp("OElig"),TOr=rp("Oacute"),AOr=rp("Ocirc"),BOr=rp("Ograve"),IOr=rp("Omega"),OOr=rp("Omicron"),POr=rp("Oslash"),NOr=[0,216],LOr=[0,927],ROr=[0,937],MOr=[0,210],jOr=[0,212],UOr=[0,211],XOr=[0,338],JOr=rp("Ouml"),GOr=rp("Phi"),qOr=rp("Pi"),zOr=rp("Prime"),VOr=rp("Psi"),WOr=rp("Rho"),YOr=rp("Scaron"),HOr=[0,352],$Or=[0,929],KOr=[0,936],QOr=[0,8243],ZOr=[0,928],rPr=[0,934],tPr=[0,214],ePr=[0,213],nPr=rp("Uuml"),uPr=rp("THORN"),aPr=rp("Tau"),iPr=rp("Theta"),fPr=rp("Uacute"),cPr=rp("Ucirc"),sPr=rp("Ugrave"),oPr=rp("Upsilon"),vPr=[0,933],lPr=[0,217],bPr=[0,219],DPr=[0,218],kPr=[0,920],pPr=[0,932],dPr=[0,222],wPr=rp("Xi"),hPr=rp("Yacute"),mPr=rp("Yuml"),FPr=rp("Zeta"),yPr=rp("aacute"),EPr=rp("acirc"),_Pr=rp("acute"),gPr=[0,180],CPr=[0,226],SPr=[0,225],xPr=[0,918],TPr=[0,376],APr=[0,221],BPr=[0,926],IPr=[0,220],OPr=[0,931],PPr=[0,925],NPr=rp("delta"),LPr=rp("cap"),RPr=rp("aring"),MPr=rp("agrave"),jPr=rp("alefsym"),UPr=rp("alpha"),XPr=rp("amp"),JPr=rp("and"),GPr=rp("ang"),qPr=rp("apos"),zPr=[0,39],VPr=[0,8736],WPr=[0,8743],YPr=[0,38],HPr=[0,945],$Pr=[0,8501],KPr=[0,224],QPr=rp("asymp"),ZPr=rp("atilde"),rNr=rp("auml"),tNr=rp("bdquo"),eNr=rp("beta"),nNr=rp("brvbar"),uNr=rp("bull"),aNr=[0,8226],iNr=[0,166],fNr=[0,946],cNr=[0,8222],sNr=[0,228],oNr=[0,227],vNr=[0,8776],lNr=[0,229],bNr=rp("copy"),DNr=rp("ccedil"),kNr=rp("cedil"),pNr=rp("cent"),dNr=rp("chi"),wNr=rp("circ"),hNr=rp("clubs"),mNr=rp("cong"),FNr=[0,8773],yNr=[0,9827],ENr=[0,710],_Nr=[0,967],gNr=[0,162],CNr=[0,184],SNr=[0,231],xNr=rp("crarr"),TNr=rp("cup"),ANr=rp("curren"),BNr=rp("dArr"),INr=rp("dagger"),ONr=rp("darr"),PNr=rp("deg"),NNr=[0,176],LNr=[0,8595],RNr=[0,8224],MNr=[0,8659],jNr=[0,164],UNr=[0,8746],XNr=[0,8629],JNr=[0,169],GNr=[0,8745],qNr=rp("fnof"),zNr=rp("ensp"),VNr=rp("diams"),WNr=rp("divide"),YNr=rp("eacute"),HNr=rp("ecirc"),$Nr=rp("egrave"),KNr=rp(Pn),QNr=rp("emsp"),ZNr=[0,8195],rLr=[0,8709],tLr=[0,232],eLr=[0,234],nLr=[0,233],uLr=[0,247],aLr=[0,9830],iLr=rp("epsilon"),fLr=rp("equiv"),cLr=rp("eta"),sLr=rp("eth"),oLr=rp("euml"),vLr=rp("euro"),lLr=rp("exist"),bLr=[0,8707],DLr=[0,8364],kLr=[0,235],pLr=[0,240],dLr=[0,951],wLr=[0,8801],hLr=[0,949],mLr=[0,8194],FLr=rp("gt"),yLr=rp("forall"),ELr=rp("frac12"),_Lr=rp("frac14"),gLr=rp("frac34"),CLr=rp("frasl"),SLr=rp("gamma"),xLr=rp("ge"),TLr=[0,8805],ALr=[0,947],BLr=[0,8260],ILr=[0,190],OLr=[0,188],PLr=[0,189],NLr=[0,8704],LLr=rp("hArr"),RLr=rp("harr"),MLr=rp("hearts"),jLr=rp("hellip"),ULr=rp("iacute"),XLr=rp("icirc"),JLr=[0,238],GLr=[0,237],qLr=[0,8230],zLr=[0,9829],VLr=[0,8596],WLr=[0,8660],YLr=[0,62],HLr=[0,402],$Lr=[0,948],KLr=[0,230],QLr=rp("prime"),ZLr=rp("ndash"),rRr=rp("le"),tRr=rp("kappa"),eRr=rp("igrave"),nRr=rp("image"),uRr=rp("infin"),aRr=rp("iota"),iRr=rp("iquest"),fRr=rp("isin"),cRr=rp("iuml"),sRr=[0,239],oRr=[0,8712],vRr=[0,191],lRr=[0,953],bRr=[0,8734],DRr=[0,8465],kRr=[0,236],pRr=rp("lArr"),dRr=rp("lambda"),wRr=rp("lang"),hRr=rp("laquo"),mRr=rp("larr"),FRr=rp("lceil"),yRr=rp("ldquo"),ERr=[0,8220],_Rr=[0,8968],gRr=[0,8592],CRr=[0,171],SRr=[0,10216],xRr=[0,955],TRr=[0,8656],ARr=[0,954],BRr=rp("macr"),IRr=rp("lfloor"),ORr=rp("lowast"),PRr=rp("loz"),NRr=rp("lrm"),LRr=rp("lsaquo"),RRr=rp("lsquo"),MRr=rp("lt"),jRr=[0,60],URr=[0,8216],XRr=[0,8249],JRr=[0,8206],GRr=[0,9674],qRr=[0,8727],zRr=[0,8970],VRr=rp("mdash"),WRr=rp("micro"),YRr=rp("middot"),HRr=rp(Vi),$Rr=rp("mu"),KRr=rp("nabla"),QRr=rp("nbsp"),ZRr=[0,160],rMr=[0,8711],tMr=[0,956],eMr=[0,8722],nMr=[0,183],uMr=[0,181],aMr=[0,8212],iMr=[0,175],fMr=[0,8804],cMr=rp("or"),sMr=rp("oacute"),oMr=rp("ne"),vMr=rp("ni"),lMr=rp("not"),bMr=rp("notin"),DMr=rp("nsub"),kMr=rp("ntilde"),pMr=rp("nu"),dMr=[0,957],wMr=[0,241],hMr=[0,8836],mMr=[0,8713],FMr=[0,172],yMr=[0,8715],EMr=[0,8800],_Mr=rp("ocirc"),gMr=rp("oelig"),CMr=rp("ograve"),SMr=rp("oline"),xMr=rp("omega"),TMr=rp("omicron"),AMr=rp("oplus"),BMr=[0,8853],IMr=[0,959],OMr=[0,969],PMr=[0,Ft],NMr=[0,242],LMr=[0,339],RMr=[0,244],MMr=[0,243],jMr=rp("part"),UMr=rp("ordf"),XMr=rp("ordm"),JMr=rp("oslash"),GMr=rp("otilde"),qMr=rp("otimes"),zMr=rp("ouml"),VMr=rp("para"),WMr=[0,182],YMr=[0,Tc],HMr=[0,8855],$Mr=[0,245],KMr=[0,bc],QMr=[0,186],ZMr=[0,170],rjr=rp("permil"),tjr=rp("perp"),ejr=rp("phi"),njr=rp("pi"),ujr=rp("piv"),ajr=rp("plusmn"),ijr=rp("pound"),fjr=[0,163],cjr=[0,177],sjr=[0,982],ojr=[0,960],vjr=[0,966],ljr=[0,8869],bjr=[0,8240],Djr=[0,8706],kjr=[0,8744],pjr=[0,8211],djr=rp("sup1"),wjr=rp("rlm"),hjr=rp("raquo"),mjr=rp("prod"),Fjr=rp("prop"),yjr=rp("psi"),Ejr=rp("quot"),_jr=rp("rArr"),gjr=rp("radic"),Cjr=rp("rang"),Sjr=[0,10217],xjr=[0,8730],Tjr=[0,8658],Ajr=[0,34],Bjr=[0,968],Ijr=[0,8733],Ojr=[0,8719],Pjr=rp("rarr"),Njr=rp("rceil"),Ljr=rp("rdquo"),Rjr=rp("real"),Mjr=rp("reg"),jjr=rp("rfloor"),Ujr=rp("rho"),Xjr=[0,961],Jjr=[0,8971],Gjr=[0,174],qjr=[0,8476],zjr=[0,8221],Vjr=[0,8969],Wjr=[0,8594],Yjr=[0,187],Hjr=rp("sigma"),$jr=rp("rsaquo"),Kjr=rp("rsquo"),Qjr=rp("sbquo"),Zjr=rp("scaron"),rUr=rp("sdot"),tUr=rp("sect"),eUr=rp("shy"),nUr=[0,173],uUr=[0,167],aUr=[0,8901],iUr=[0,353],fUr=[0,8218],cUr=[0,8217],sUr=[0,8250],oUr=rp("sigmaf"),vUr=rp("sim"),lUr=rp("spades"),bUr=rp("sub"),DUr=rp("sube"),kUr=rp("sum"),pUr=rp("sup"),dUr=[0,8835],wUr=[0,8721],hUr=[0,8838],mUr=[0,8834],FUr=[0,9824],yUr=[0,8764],EUr=[0,962],_Ur=[0,963],gUr=[0,8207],CUr=rp("uarr"),SUr=rp("thetasym"),xUr=rp("sup2"),TUr=rp("sup3"),AUr=rp("supe"),BUr=rp("szlig"),IUr=rp("tau"),OUr=rp("there4"),PUr=rp("theta"),NUr=[0,952],LUr=[0,8756],RUr=[0,964],MUr=[0,yo],jUr=[0,8839],UUr=[0,179],XUr=[0,178],JUr=rp("thinsp"),GUr=rp("thorn"),qUr=rp("tilde"),zUr=rp("times"),VUr=rp("trade"),WUr=rp("uArr"),YUr=rp("uacute"),HUr=[0,Mv],$Ur=[0,8657],KUr=[0,8482],QUr=[0,215],ZUr=[0,732],rXr=[0,zu],tXr=[0,8201],eXr=[0,977],nXr=rp("xi"),uXr=rp("ucirc"),aXr=rp("ugrave"),iXr=rp("uml"),fXr=rp("upsih"),cXr=rp("upsilon"),sXr=rp("uuml"),oXr=rp("weierp"),vXr=[0,8472],lXr=[0,Qt],bXr=[0,965],DXr=[0,978],kXr=[0,168],pXr=[0,249],dXr=[0,251],wXr=rp("yacute"),hXr=rp("yen"),mXr=rp("yuml"),FXr=rp("zeta"),yXr=rp("zwj"),EXr=rp("zwnj"),_Xr=[0,8204],gXr=[0,Fc],CXr=[0,950],SXr=[0,qv],xXr=[0,165],TXr=[0,Qa],AXr=[0,958],BXr=[0,8593],IXr=[0,185],OXr=[0,8242],PXr=[0,161],NXr=rp(";"),LXr=rp("&"),RXr=rp(Zv),MXr=rp(Zv),jXr=rp(Zv),UXr=rp(Zv),XXr=rp(Zv),JXr=rp(Zv),GXr=rp(Zv),qXr=rp(Zv),zXr=rp(Zv),VXr=rp(Zv),WXr=rp(Zv),YXr=rp(Zv),HXr=rp(Zv),$Xr=rp(":"),KXr=rp(":"),QXr=rp(Be),ZXr=[9,0],rJr=[9,1],tJr=rp(Zv),eJr=rp("}"),nJr=[0,rp(bo),rp(bo),rp(bo)],uJr=rp(Zv),aJr=rp(Zv),iJr=rp("'"),fJr=rp(Zv),cJr=rp(Zv),sJr=rp(Zv),oJr=rp(Zv),vJr=rp(Zv),lJr=rp(Zv),bJr=rp(Zv),DJr=rp(Zv),kJr=rp(Zv),pJr=rp(Zv),dJr=rp(Zv),wJr=rp(Zv),hJr=rp(Zv),mJr=rp(Zv),FJr=rp(Zv),yJr=rp(":"),EJr=rp(":"),_Jr=rp(Be),gJr=[6,rp("#!")],CJr=rp("expected ?"),SJr=rp(Zv),xJr=rp(Zf),TJr=rp(W),AJr=rp(W),BJr=rp(Zf),IJr=rp("b"),OJr=rp(di),PJr=rp("n"),NJr=rp("r"),LJr=rp("t"),RJr=rp("v"),MJr=rp(W),jJr=rp(Lb),UJr=rp(Lb),XJr=rp(Zv),JJr=rp(Lb),GJr=rp(Lb),qJr=rp(Zv),zJr=rp("Invalid (lexer) bigint "),VJr=rp("Invalid (lexer) bigint binary/octal "),WJr=rp(W),YJr=rp(Cs),HJr=rp(Vr),$Jr=rp(Vu),KJr=[9,rp("token ILLEGAL")],QJr=rp("\0"),ZJr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),rGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),tGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),eGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),nGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),uGr=rp("\0\0\0\0"),aGr=rp("\0\0\0"),iGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),fGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),cGr=rp(""),sGr=rp("\0"),oGr=rp("\0\0\0\0\0\0"),vGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),lGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),bGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),DGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),kGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),pGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),dGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),wGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),hGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),mGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),FGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),yGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\b\0\0\0\0\0\0\t\b"),EGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),_Gr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),gGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),CGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),SGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),xGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),TGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),AGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),BGr=rp("\0\0"),IGr=rp(""),OGr=rp(""),PGr=rp(""),NGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),LGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),RGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),MGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),jGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),UGr=rp("\0\0"),XGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),JGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),GGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),qGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),zGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),VGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),WGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),YGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),HGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),$Gr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),KGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),QGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),ZGr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),rqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),tqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),eqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),nqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),uqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),aqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),iqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),fqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),cqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),sqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),oqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),vqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),lqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),bqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Dqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),kqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),pqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),dqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),wqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),hqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),mqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Fqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),yqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Eqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),_qr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),gqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Cqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Sqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),xqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Tqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Aqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Bqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Iqr=rp("\0"),Oqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Pqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Nqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Lqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Rqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Mqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),jqr=rp("\0\0\0"),Uqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Xqr=rp(""),Jqr=rp("\0\0"),Gqr=rp(""),qqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),zqr=rp("\0"),Vqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Wqr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Yqr=rp(""),Hqr=rp("\b\t\n\v\f\r"),$qr=rp("\0\0\0"),Kqr=rp(""),Qqr=rp(""),Zqr=rp("\b\t\n\v\f\r !\"#$%&'()"),rzr=rp("\b\t\n\v\f\r\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t!\"#$%&'\t\t(\t\t)\t*+,\t-./\t01\t2\t3456\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t"),tzr=rp(""),ezr=rp(""),nzr=rp("\0\0\0\0"),uzr=rp("\b\t\n\v\f\r"),azr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),izr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),fzr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),czr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),szr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),ozr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),vzr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),lzr=rp("\0\0\0\0\0\0\0"),bzr=rp(""),Dzr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),kzr=rp("\0"),pzr=rp("\0"),dzr=rp(""),wzr=rp(""),hzr=rp(""),mzr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Fzr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),yzr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Ezr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),_zr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),gzr=rp("\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"),Czr=[0,[11,rp("the identifier `"),[2,0,[12,96,0]]],rp("the identifier `%s`")],Szr=[0,1],xzr=rp("the token `;`"),Tzr=rp(_r),Azr=rp(_r),Bzr=rp("Peeking current location when not available"),Izr=rp(to),Ozr=rp("_"),Pzr=rp("any"),Nzr=rp(Vn),Lzr=rp(vo),Rzr=rp(Ie),Mzr=rp(Pn),jzr=rp(Pk),Uzr=rp(Si),Xzr=rp(cD),Jzr=rp(fn),Gzr=rp(jv),qzr=rp(Ta),zzr=rp(Oi),Vzr=rp(cf),Wzr=rp(Ss),Yzr=rp(fv),Hzr=rp(Si),$zr=rp(fn),Kzr=rp(cf),Qzr=rp(_a),Zzr=rp("eval"),rVr=rp(Rt),tVr=rp(to),eVr=rp(ut),nVr=rp(At),uVr=rp(yc),aVr=rp(Ns),iVr=rp(Ta),fVr=rp(M),cVr=rp(Us),sVr=rp("if"),oVr=rp(lo),vVr=rp(is),lVr=rp(Pc),bVr=rp(Fs),DVr=rp(pc),kVr=rp(qD),pVr=rp(Fi),dVr=rp(YD),wVr=rp(xf),hVr=rp(Ci),mVr=rp("do"),FVr=rp(va),yVr=rp(te),EVr=rp(Pk),_Vr=rp(Jb),gVr=rp("for"),CVr=rp(Jv),SVr=rp(hr),xVr=rp(Ef),TVr=rp("in"),AVr=rp(wo),BVr=rp(cl),IVr=rp(_n),OVr=rp(Ys),PVr=rp(Tt),NVr=rp(st),LVr=rp("try"),RVr=rp(Ss),MVr=rp(z),jVr=rp(fv),UVr=rp(Nl),XVr=rp(ll),JVr=rp(M),GVr=[0,rp("src/parser/parser_env.ml"),357,2],qVr=rp("Internal Error: Tried to add_declared_private with outside of class scope."),zVr=rp("Internal Error: `exit_class` called before a matching `enter_class`"),VVr=rp(bo),WVr=rp(bo),YVr=[0,0,0],HVr=rp(na),$Vr=rp(na),KVr=rp("Parser_env.Try.Rollback"),QVr=rp(Jv),ZVr=rp("if"),rWr=rp("in"),tWr=rp(wo),eWr=rp(_n),nWr=rp(Tt),uWr=rp(st),aWr=rp(hr),iWr=rp("try"),fWr=rp(z),cWr=rp(Nl),sWr=rp(ll),oWr=rp(Fi),vWr=rp(lv),lWr=rp(fn),bWr=rp(Si),DWr=rp(cf),kWr=rp(Pc),pWr=rp(Fs),dWr=rp(pc),wWr=rp(YD),hWr=rp(lo),mWr=rp("do"),FWr=rp(Jb),yWr=rp("for"),EWr=rp(qD),_Wr=rp(Pk),gWr=rp(Ta),CWr=rp(va),SWr=rp(cl),xWr=rp(Ci),TWr=rp(Ss),AWr=rp(fv),BWr=rp(Us),IWr=rp(te),OWr=rp(Ef),PWr=rp(Ys),NWr=rp(Rt),LWr=rp(to),RWr=rp(ut),MWr=rp(At),jWr=rp(yc),UWr=rp(Ns),XWr=rp(M),JWr=rp(xf),GWr=rp(he),qWr=rp(bt),zWr=rp("opaque"),VWr=rp("of"),WWr=rp(ss),YWr=rp(is),HWr=rp("any"),$Wr=rp(cD),KWr=rp(Pn),QWr=rp(jv),ZWr=rp(Vn),rYr=rp(Oi),tYr=rp(fv),eYr=rp(Ie),nYr=rp(vo),uYr=[0,rp(Fn)],aYr=rp(bo),iYr=[2,[0,[0,0],0]],fYr=[0,1],cYr=[0,2],sYr=rp("symbol"),oYr=[0,3],vYr=[0,0],lYr=rp(bo),bYr=[0,0,0,0,0],DYr=[0,rp(Gt),584,6],kYr=[0,rp(Gt),587,6],pYr=[0,rp(Gt),675,8],dYr=rp(Xa),wYr=[0,rp(Gt),690,8],hYr=rp("Can not have both `static` and `proto`"),mYr=rp(Ta),FYr=rp(Xa),yYr=rp(pn),EYr=rp(Ru),_Yr=rp(pn),gYr=[0,0,0],CYr=rp(N),SYr=rp(_f),xYr=[0,[0,0,0]],TYr=[0,4],AYr=[0,0],BYr=[0,1],IYr=[0,2],OYr=[0,5],PYr=[0,6],NYr=[0,7],LYr=[0,3],RYr=[0,8],MYr=[0,rp(Gt),kb,15],jYr=[0,rp(Gt),81,15],UYr=[0,40],XYr=[0,40],JYr=[0,0,0],GYr=[0,38],qYr=rp(Tv),zYr=rp(Tv),VYr=[0,rp(xn),1275,13],WYr=[0,rp(xn),1144,17],YYr=[0,rp("a template literal part")],HYr=[0,[0,rp(bo),rp(bo)],1],$Yr=rp(fn),KYr=rp(fn),QYr=rp(cf),ZYr=rp(Si),rHr=rp("Invalid bigint "),tHr=rp("Invalid bigint binary/octal "),eHr=rp(W),nHr=rp(Cs),uHr=rp(Vu),aHr=rp(Vu),iHr=rp(Vr),fHr=[0,40],cHr=[0,1],sHr=[0,1],oHr=[0,1],vHr=[0,1],lHr=[0,0],bHr=rp("_"),DHr=rp("_"),kHr=rp(cl),pHr=rp(G),dHr=[0,rp("the identifier `target`")],wHr=[0,0],hHr=[0,80],mHr=[0,0,0],FHr=[0,1,0],yHr=[0,1,1],EHr=rp(Ys),_Hr=[0,0],gHr=[0,rp("either a call or access of `super`")],CHr=rp(Ys),SHr=[0,0],xHr=[0,1],THr=[0,0],AHr=[0,1],BHr=[0,0],IHr=[0,1],OHr=[0,0],PHr=[0,2],NHr=[0,3],LHr=[0,7],RHr=[0,6],MHr=[0,4],jHr=[0,5],UHr=[0,[0,17,[0,2]]],XHr=[0,[0,18,[0,3]]],JHr=[0,[0,19,[0,4]]],GHr=[0,[0,0,[0,5]]],qHr=[0,[0,1,[0,5]]],zHr=[0,[0,2,[0,5]]],VHr=[0,[0,3,[0,5]]],WHr=[0,[0,5,[0,6]]],YHr=[0,[0,7,[0,6]]],HHr=[0,[0,4,[0,6]]],$Hr=[0,[0,6,[0,6]]],KHr=[0,[0,8,[0,7]]],QHr=[0,[0,9,[0,7]]],ZHr=[0,[0,10,[0,7]]],r$r=[0,[0,11,[0,8]]],t$r=[0,[0,12,[0,8]]],e$r=[0,[0,15,[0,9]]],n$r=[0,[0,13,[0,9]]],u$r=[0,[0,14,[1,10]]],a$r=[0,[0,16,[0,9]]],i$r=[0,[0,21,[0,6]]],f$r=[0,[0,20,[0,6]]],c$r=[21,rp("??")],s$r=[0,[0,8]],o$r=[0,[0,7]],v$r=[0,[0,6]],l$r=[0,[0,10]],b$r=[0,[0,9]],D$r=[0,[0,11]],k$r=[0,[0,5]],p$r=[0,[0,4]],d$r=[0,[0,2]],w$r=[0,[0,3]],h$r=[0,[0,1]],m$r=[0,[0,0]],F$r=[0,0],y$r=rp(cl),E$r=rp(G),_$r=[0,5],g$r=rp(ss),C$r=rp(cl),S$r=rp(G),x$r=rp(":"),T$r=rp(ee),A$r=[15,rp("JSX fragment")],B$r=rp(bo),I$r=[0,rp(bo)],O$r=[0,rp(Fn)],P$r=rp(bo),N$r=rp(N),L$r=rp(N),R$r=rp(pn),M$r=rp(Ru),j$r=[0,1],U$r=[0,1],X$r=[0,1],J$r=rp("unexpected PrivateName in Property, expected a PrivateField"),G$r=[0,0],q$r=rp(N),z$r=rp(N),V$r=rp(_f),W$r=rp(pn),Y$r=rp(Ru),H$r=rp("="),$$r=rp(M),K$r=rp(is),Q$r=rp("Internal Error: private name found in object props"),Z$r=rp(XD),rKr=[0,rp(Fn)],tKr=rp(M),eKr=rp(is),nKr=rp(M),uKr=rp(is),aKr=rp(XD),iKr=[9,rp(jD)],fKr=[0,1],cKr=rp(uf),sKr=rp(Cu),oKr=[0,rp(Gr),1235,21],vKr=rp(uf),lKr=rp(lo),bKr=rp("other than an interface declaration!"),DKr=rp("Internal Flow Error! Parsed `export interface` into something "),kKr=rp(Cu),pKr=rp("Internal Flow Error! Unexpected export statement declaration!"),dKr=[0,37],wKr=rp(uf),hKr=rp(Cu),mKr=[0,rp(bo),rp(bo)],FKr=[0,rp(rn)],yKr=rp("module"),EKr=rp("exports"),_Kr=[0,1],gKr=rp("module"),CKr=[0,1],SKr=rp(xe),xKr=[0,0],TKr=[0,1],AKr=rp(Cu),BKr=rp(uf),IKr=[0,77],OKr=[0,77],PKr=[0,0],NKr=[0,1],LKr=rp(uf),RKr=rp(uf),MKr=rp(uf),jKr=rp(Cu),UKr=[0,rp(bo),rp(bo)],XKr=[0,rp(rn)],JKr=rp("Parser error: No such thing as an expression pattern!"),GKr=[0,rp(K)],qKr=rp("Label"),zKr=[0,rp(K)],VKr=[0,0,0],WKr=[0,27],YKr=[0,rp(Gr),zu,24],HKr=[0,26],$Kr=[0,rp(Gr),273,22],KKr=rp(is),QKr=rp(lv),ZKr=rp(M),rQr=[0,rp(ba)],tQr=[0,rp(ba)],eQr=rp("use strict"),nQr=[0,0,0],uQr=rp("\n"),aQr=rp("Nooo: "),iQr=[0,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],fQr=[0,rp("src/parser/parser_flow.ml"),42,28],cQr=[0,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],sQr=rp(je),oQr=rp("range"),vQr=rp(Me),lQr=rp(Sa),bQr=rp("end"),DQr=rp(Me),kQr=rp(Sa),pQr=rp(X),dQr=rp("loc"),wQr=rp("normal"),hQr=rp(bt),mQr=rp("jsxTag"),FQr=rp("jsxChild"),yQr=rp("template"),EQr=rp("regexp"),_Qr=rp("context"),gQr=rp(bt),CQr=rp("Internal error: ");function SQr(r){if("number"==typeof r)return 0;switch(r[0]){case 0:return[0,SQr(r[1])];case 1:return[1,SQr(r[1])];case 2:return[2,SQr(r[1])];case 3:return[3,SQr(r[1])];case 4:return[4,SQr(r[1])];case 5:return[5,SQr(r[1])];case 6:return[6,SQr(r[1])];case 7:return[7,SQr(r[1])];case 8:return[8,r[1],SQr(r[2])];case 9:var t=r[1];return[9,t,t,SQr(r[3])];case 10:return[10,SQr(r[1])];case 11:return[11,SQr(r[1])];case 12:return[12,SQr(r[1])];case 13:return[13,SQr(r[1])];default:return[14,SQr(r[1])]}}function xQr(r,t){if("number"==typeof r)return t;switch(r[0]){case 0:return[0,xQr(r[1],t)];case 1:return[1,xQr(r[1],t)];case 2:return[2,r[1],xQr(r[2],t)];case 3:return[3,r[1],xQr(r[2],t)];case 4:var e=r[3],n=r[2];return[4,r[1],n,e,xQr(r[4],t)];case 5:var u=r[3],a=r[2];return[5,r[1],a,u,xQr(r[4],t)];case 6:var i=r[3],f=r[2];return[6,r[1],f,i,xQr(r[4],t)];case 7:var c=r[3],s=r[2];return[7,r[1],s,c,xQr(r[4],t)];case 8:var o=r[3],v=r[2];return[8,r[1],v,o,xQr(r[4],t)];case 9:return[9,r[1],xQr(r[2],t)];case 10:return[10,xQr(r[1],t)];case 11:return[11,r[1],xQr(r[2],t)];case 12:return[12,r[1],xQr(r[2],t)];case 13:var l=r[2];return[13,r[1],l,xQr(r[3],t)];case 14:var b=r[2];return[14,r[1],b,xQr(r[3],t)];case 15:return[15,xQr(r[1],t)];case 16:return[16,xQr(r[1],t)];case 17:return[17,r[1],xQr(r[2],t)];case 18:return[18,r[1],xQr(r[2],t)];case 19:return[19,xQr(r[1],t)];case 20:var D=r[2];return[20,r[1],D,xQr(r[3],t)];case 21:return[21,r[1],xQr(r[2],t)];case 22:return[22,xQr(r[1],t)];case 23:return[23,r[1],xQr(r[2],t)];default:var k=r[2];return[24,r[1],k,xQr(r[3],t)]}}function TQr(r){throw[0,Jd,r]}function AQr(r){throw[0,Gd,r]}function BQr(r,t){return Sp(r,t)?r:t}function IQr(r){return 0<=r?r:0|-r}_p();var OQr=Xs;function PQr(r,t){var e=jp(r),n=jp(t),u=Dp(e+n|0);return Vk(r,0,u,0,e),Vk(t,0,u,e,n),xd(u)}function NQr(r){return r?sw:ow}function LQr(r,t){return r?[0,r[1],LQr(r[2],t)]:t}!function(r){var t=Uk.fds[r];t.flags.wronly&&ud(U+r+" is writeonly");var e={file:t.file,offset:t.offset,fd:r,opened:!0,out:!1,refill:null};ad[e.fd]=e}(0);var RQr=pd(1),MQr=pd(2),jQr=[0,function(r){return function(r){for(var t=r;;){if(!t)return 0;var e=t[2],n=t[1];try{id(n)}catch(t){if((t=Pd(t))[1]!==Xd)throw t}t=e}}(function(){for(var r=0,t=0;t<ad.length;t++)ad[t]&&ad[t].opened&&ad[t].out&&(r=[0,ad[t].fd,r]);return r}())}];function UQr(r,t,e){for(var n=t,u=e;;){var a=Nd(u,0);if(!a)return n;var i=a[2];n=Ld(r,n,a[1]),u=i}}function XQr(r){return 0<=r&&!(qv<r)?r:AQr(dw)}function JQr(r){return 97<=r&&!(O<r)?r+Ce|0:r}var GQr=rp("Unix"),qQr=536870911,zQr=(4*qQr|0)-1|0;_p();rp("js_of_ocaml");function VQr(r){for(var t=0,e=r;;){if(!e)return t;t=t+1|0,e=e[2]}}function WQr(r){return r?r[1]:TQr(yw)}function YQr(r){return r?r[2]:TQr(Fw)}function HQr(r,t){for(var e=r,n=t;;){if(!e)return n;var u=[0,e[1],n];e=e[2],n=u}}function $Qr(r){return HQr(r,0)}function KQr(r,t){if(t){var e=t[2];return[0,Nd(r,t[1]),KQr(r,e)]}return 0}function QQr(r,t){for(var e=0,n=t;;){if(!n)return e;var u=n[2];e=[0,Nd(r,n[1]),e],n=u}}function ZQr(r,t){for(var e=t;;){if(!e)return 0;var n=e[2];Nd(r,e[1]);e=n}}function rZr(r,t,e){for(var n=t,u=e;;){if(!u)return n;var a=u[2];n=Ld(r,n,u[1]),u=a}}function tZr(r,t,e){return t?Ld(r,t[1],tZr(r,t[2],e)):e}function eZr(r,t,e){for(var n=t,u=e;;){if(n){if(u){var a=u[2],i=n[2];Ld(r,n[1],u[1]);n=i,u=a;continue}}else if(!u)return 0;return AQr(ww)}}function nZr(r,t){for(var e=t;;){if(!e)return 0;var n=e[2],u=0===bp(e[1],r)?1:0;if(u)return u;e=n}}function uZr(r,t){for(var e=r,n=t;;){if(0===e)return n;if(!n)throw[0,Wd,mw];e=e-1|0,n=n[2]}}function aZr(r,t){var e=Dp(r);return function(r,t,e,n){if(e>0)if(0==t&&(e>=r.l||2==r.t&&e>=r.c.length))0==n?(r.c=bo,r.t=2):(r.c=Wk(e,String.fromCharCode(n)),r.t=e==r.l?0:2);else for(4!=r.t&&qk(r),e+=t;t<e;t++)r.c[t]=n}(e,0,r,t),e}function iZr(r){var t=nd(r),e=Dp(t);return zk(r,0,e,0,t),e}function fZr(r,t,e){if(0<=t&&0<=e&&!((nd(r)-e|0)<t)){var n=Dp(e);return zk(r,t,n,0,e),n}return AQr(gw)}function cZr(r,t,e){return xd(fZr(r,t,e))}function sZr(r,t,e,n,u){return 0<=u&&0<=t&&!((nd(r)-u|0)<t)&&0<=n&&!((nd(e)-u|0)<n)?zk(r,t,e,n,u):AQr(_w)}function oZr(r,t,e,n,u){return 0<=u&&0<=t&&!((jp(r)-u|0)<t)&&0<=n&&!((nd(e)-u|0)<n)?Vk(r,t,e,n,u):AQr(Ew)}function vZr(r,t){return xd(aZr(r,t))}function lZr(r,t,e){return xd(fZr($k(r),t,e))}function bZr(r,t,e){var n=jp(r);if(0<=t&&!(n<t))try{!function(r,t,e,n){for(var u=e;;){if(t<=u)throw qd;if(Up(r,u)===n)return u;u=u+1|0}}(r,n,t,e);return 1}catch(t){if((t=Pd(t))===qd)return 0;throw t}return AQr(Cw)}var DZr=vp;function kZr(r,t){if(0===r)return[0];if(0<=r){var e=rd(r,Nd(t,0)),n=r-1|0;if(!(n<1))for(var u=1;;){e[u+1]=Nd(t,u);var a=u+1|0;if(n===u)break;u=a}return e}return AQr(Tw)}function pZr(r,t,e,n,u){return 0<=u&&0<=t&&!((r.length-1-u|0)<t)&&0<=n&&!((e.length-1-u|0)<n)?function(r,t,e,n,u){if(n<=t)for(var a=1;a<=u;a++)e[n+a]=r[t+a];else for(a=u;a>=1;a--)e[n+a]=r[t+a];return 0}(r,t,e,n,u):AQr(Sw)}function dZr(r,t){var e=t.length-1-1|0;if(!(e<0))for(var n=0;;){Nd(r,t[n+1]);var u=n+1|0;if(e===n)break;n=u}return 0}function wZr(r,t){var e=t.length-1;if(0===e)return[0];var n=rd(e,Nd(r,t[1])),u=e-1|0;if(!(u<1))for(var a=1;;){n[a+1]=Nd(r,t[a+1]);var i=a+1|0;if(u===a)break;a=i}return n}function hZr(r){if(r)for(var t=0,e=r,n=r[2],u=r[1];;)if(e)t=t+1|0,e=e[2];else for(var a=rd(t,u),i=1,f=n;;){if(!f)return a;var c=f[2];a[i+1]=f[1];i=i+1|0,f=c}return[0]}function mZr(r){function t(r){return r?r[4]:0}function e(r,t,e){var n=r?r[4]:0,u=e?e[4]:0;return[0,r,t,e,u<=n?n+1|0:u+1|0]}function n(r,n,u){var a=r?r[4]:0,i=u?u[4]:0;if((i+2|0)<a){if(r){var f=r[3],c=r[2],s=r[1];if(t(f)<=t(s))return e(s,c,e(f,n,u));if(f){var o=f[2],v=f[1],l=e(f[3],n,u);return e(e(s,c,v),o,l)}return AQr(Pw)}return AQr(Nw)}if((a+2|0)<i){if(u){var b=u[3],D=u[2],k=u[1];if(t(k)<=t(b))return e(e(r,n,k),D,b);if(k){var p=k[2],d=k[1],w=e(k[3],D,b);return e(e(r,n,d),p,w)}return AQr(Lw)}return AQr(Rw)}return[0,r,n,u,i<=a?a+1|0:i+1|0]}function u(t,e){if(e){var a=e[3],i=e[2],f=e[1],c=Ld(r[1],t,i);if(0===c)return e;if(0<=c){var s=u(t,a);return a===s?e:n(f,i,s)}var o=u(t,f);return f===o?e:n(o,i,a)}return[0,0,t,0,1]}function a(r){return[0,0,r,0,1]}function i(r,t){if(t){var e=t[3],u=t[2];return n(i(r,t[1]),u,e)}return a(r)}function f(r,t){if(t){var e=t[2];return n(t[1],e,f(r,t[3]))}return a(r)}function c(r,t,u){if(r){if(u){var a=u[4],s=r[4],o=u[3],v=u[2],l=u[1],b=r[3],D=r[2],k=r[1];return(a+2|0)<s?n(k,D,c(b,t,u)):(s+2|0)<a?n(c(r,t,l),v,o):e(r,t,u)}return f(t,r)}return i(t,u)}function s(r){for(var t=r;;){if(t){var e=t[1];if(e){t=e;continue}return t[2]}throw qd}}function o(r){for(var t=r;;){if(t){var e=t[1];if(e){t=e;continue}return[0,t[2]]}return 0}}function v(r){for(var t=r;;){if(t){var e=t[3],n=t[2];if(e){t=e;continue}return n}throw qd}}function l(r){if(r){var t=r[1];if(t){var e=r[3],u=r[2];return n(l(t),u,e)}return r[3]}return AQr(Aw)}function b(r,t){if(r){if(t){var e=l(t);return c(r,s(t),e)}return r}return t}function D(t,e){if(e){var n=e[3],u=e[2],a=e[1],i=Ld(r[1],t,u);if(0===i)return[0,a,1,n];if(0<=i){var f=D(t,n),s=f[3],o=f[2];return[0,c(a,u,f[1]),o,s]}var v=D(t,a),l=v[2];return[0,v[1],l,c(v[3],u,n)]}return Bw}var k=0;function p(r,t){if(r){if(t){var e=t[4],n=t[2],a=r[4],i=r[2],f=t[3],s=t[1],o=r[3],v=r[1];if(e<=a){if(1===e)return u(n,r);var l=D(i,t),b=l[1],k=p(o,l[3]);return c(p(v,b),i,k)}if(1===a)return u(i,t);var d=D(n,r),w=d[1],h=p(d[3],f);return c(p(w,s),n,h)}return r}return t}function d(r,t){for(var e=r,n=t;;){if(!e)return n;var u=[0,e[2],e[3],n];e=e[1],n=u}}function w(t,e){for(var n=d(e,0),u=d(t,0),a=n;;){if(u){if(a){var i=a[3],f=a[2],c=u[3],s=u[2],o=Ld(r[1],u[1],a[1]);if(0===o){var v=d(f,i);u=d(s,c),a=v;continue}return o}return 1}return a?-1:0}}function h(r,t){return UQr((function(r,t){return u(t,r)}),t,r)}function m(r,t){if(r){var e=r[1],n=d(r[2],r[3]);return[0,e,function(r){return m(n)}]}return 0}return[0,k,function(r){return r?0:1},function(t,e){for(var n=e;;){if(!n)return 0;var u=n[3],a=n[1],i=Ld(r[1],t,n[2]),f=0===i?1:0;if(f)return f;n=0<=i?u:a}},u,a,function t(e,u){if(u){var a=u[3],i=u[2],f=u[1],c=Ld(r[1],e,i);if(0===c){if(f){if(a){var o=l(a);return n(f,s(a),o)}return f}return a}if(0<=c){var v=t(e,a);return a===v?u:n(f,i,v)}var b=t(e,f);return f===b?u:n(b,i,a)}return 0},p,function r(t,e){if(t){if(e){var n=t[3],u=t[2],a=t[1],i=D(u,e),f=i[1];if(0===i[2]){var s=r(n,i[3]);return b(r(a,f),s)}var o=r(n,i[3]);return c(r(a,f),u,o)}return 0}return 0},function r(t,e){if(t){if(e){var n=t[3],u=t[2],a=t[1],i=D(u,e),f=i[1];if(0===i[2]){var s=r(n,i[3]);return c(r(a,f),u,s)}var o=r(n,i[3]);return b(r(a,f),o)}return t}return 0},w,function(r,t){return 0===w(r,t)?1:0},function t(e,n){for(var u=e,a=n;;){if(u){if(a){var i=a[3],f=a[1],c=u[3],s=u[2],o=u[1],v=Ld(r[1],s,a[2]);if(0===v){var l=t(o,f);if(l){u=c,a=i;continue}return l}if(0<=v){var b=t([0,0,s,c,0],i);if(b){u=o;continue}return b}var D=t([0,o,s,0,0],f);if(D){u=c;continue}return D}return 0}return 1}},function r(t,e){for(var n=e;;){if(!n)return 0;var u=n[3],a=n[2];r(t,n[1]),Nd(t,a);n=u}},function t(e,n){if(n){var a=n[3],i=n[2],f=n[1],o=t(e,f),l=Nd(e,i),b=t(e,a);if(f===o&&i===l&&a===b)return n;if(0===o)var D=0;else{var k=v(o);D=0<=Ld(r[1],k,l)?1:0}if(!D){if(0===b)var d=0;else{var w=s(b);d=0<=Ld(r[1],l,w)?1:0}if(!d)return c(o,l,b)}return p(o,u(l,b))}return 0},function r(t,e,n){for(var u=e,a=n;;){if(!u)return a;var i=u[3],f=Ld(t,u[2],r(t,u[1],a));u=i,a=f}},function r(t,e){for(var n=e;;){if(n){var u=n[3],a=n[1],i=Nd(t,n[2]);if(i){var f=r(t,a);if(f){n=u;continue}var c=f}else c=i;return c}return 1}},function r(t,e){for(var n=e;;){if(n){var u=n[3],a=n[1],i=Nd(t,n[2]);if(i)var f=i;else{var c=r(t,a);if(!c){n=u;continue}f=c}return f}return 0}},function r(t,e){if(e){var n=e[3],u=e[2],a=e[1],i=r(t,a),f=Nd(t,u),s=r(t,n);return f?a===i&&n===s?e:c(i,u,s):b(i,s)}return 0},function r(t,e){if(e){var n=e[2],u=e[3],a=r(t,e[1]),i=a[2],f=a[1],s=Nd(t,n),o=r(t,u),v=o[2],l=o[1];if(s){var D=b(i,v);return[0,c(f,n,l),D]}var k=c(i,n,v);return[0,b(f,l),k]}return Iw},function r(t){if(t){var e=t[1],n=r(t[3]);return(r(e)+1|0)+n|0}return 0},function(r){return function r(t,e){for(var n=t,u=e;;){if(!u)return n;var a=u[2],i=u[1];n=[0,a,r(n,u[3])],u=i}}(0,r)},s,o,v,function(r){for(var t=r;;){if(t){var e=t[3],n=t[2];if(e){t=e;continue}return[0,n]}return 0}},s,o,D,function(t,e){for(var n=e;;){if(!n)throw qd;var u=n[2],a=n[3],i=n[1],f=Ld(r[1],t,u);if(0===f)return u;n=0<=f?a:i}},function(t,e){for(var n=e;;){if(!n)return 0;var u=n[2],a=n[3],i=n[1],f=Ld(r[1],t,u);if(0===f)return[0,u];n=0<=f?a:i}},function(r,t){for(var e=t;;){if(!e)throw qd;var n=e[2],u=e[3],a=e[1];if(Nd(r,n))for(var i=n,f=a;;){if(!f)return i;var c=f[2],s=f[3],o=f[1];if(Nd(r,c))i=c,f=o;else f=s}e=u}},function(r,t){for(var e=t;;){if(!e)return 0;var n=e[2],u=e[3],a=e[1];if(Nd(r,n))for(var i=n,f=a;;){if(!f)return[0,i];var c=f[2],s=f[3],o=f[1];if(Nd(r,c))i=c,f=o;else f=s}e=u}},function(r,t){for(var e=t;;){if(!e)throw qd;var n=e[2],u=e[3],a=e[1];if(Nd(r,n))for(var i=n,f=u;;){if(!f)return i;var c=f[2],s=f[3],o=f[1];if(Nd(r,c))i=c,f=s;else f=o}e=a}},function(r,t){for(var e=t;;){if(!e)return 0;var n=e[2],u=e[3],a=e[1];if(Nd(r,n))for(var i=n,f=u;;){if(!f)return[0,i];var c=f[2],s=f[3],o=f[1];if(Nd(r,c))i=c,f=s;else f=o}e=a}},function(t){if(t){var n=t[2],i=t[1];if(n){var f=n[2],c=n[1];if(f){var s=f[2],o=f[1];if(s){var v=s[2],l=s[1];if(v){if(v[2]){var b=r[1],D=function(r,t){if(2===r){if(t){var e=t[2];if(e){var n=e[1],u=t[1],a=Ld(b,u,n);return 0===a?[0,u,0]:0<=a?[0,n,[0,u,0]]:[0,u,[0,n,0]]}}}else if(3===r&&t){var i=t[2];if(i){var f=i[2];if(f){var c=f[1],s=i[1],o=t[1],v=Ld(b,o,s);if(0===v){var l=Ld(b,s,c);return 0===l?[0,s,0]:0<=l?[0,c,[0,s,0]]:[0,s,[0,c,0]]}if(0<=v){var D=Ld(b,o,c);if(0===D)return[0,s,[0,o,0]];if(0<=D){var k=Ld(b,s,c);return 0===k?[0,s,[0,o,0]]:0<=k?[0,c,[0,s,[0,o,0]]]:[0,s,[0,c,[0,o,0]]]}return[0,s,[0,o,[0,c,0]]]}var d=Ld(b,s,c);if(0===d)return[0,o,[0,s,0]];if(0<=d){var w=Ld(b,o,c);return 0===w?[0,o,[0,s,0]]:0<=w?[0,c,[0,o,[0,s,0]]]:[0,o,[0,c,[0,s,0]]]}return[0,o,[0,s,[0,c,0]]]}}}for(var h=r>>1,m=uZr(h,t),F=p(h,t),y=p(r-h|0,m),E=0;;){if(F){if(y){var _=y[2],g=y[1],C=F[2],S=F[1],x=Ld(b,S,g);if(0===x){F=C,y=_,E=[0,S,E];continue}if(0<x){F=C,E=[0,S,E];continue}y=_,E=[0,g,E];continue}return HQr(F,E)}return HQr(y,E)}},p=function(r,t){if(2===r){if(t){var e=t[2];if(e){var n=e[1],u=t[1],a=Ld(b,u,n);return 0===a?[0,u,0]:0<a?[0,u,[0,n,0]]:[0,n,[0,u,0]]}}}else if(3===r&&t){var i=t[2];if(i){var f=i[2];if(f){var c=f[1],s=i[1],o=t[1],v=Ld(b,o,s);if(0===v){var l=Ld(b,s,c);return 0===l?[0,s,0]:0<l?[0,s,[0,c,0]]:[0,c,[0,s,0]]}if(0<v){var k=Ld(b,s,c);if(0===k)return[0,o,[0,s,0]];if(0<k)return[0,o,[0,s,[0,c,0]]];var p=Ld(b,o,c);return 0===p?[0,o,[0,s,0]]:0<p?[0,o,[0,c,[0,s,0]]]:[0,c,[0,o,[0,s,0]]]}var d=Ld(b,o,c);if(0===d)return[0,s,[0,o,0]];if(0<d)return[0,s,[0,o,[0,c,0]]];var w=Ld(b,s,c);return 0===w?[0,s,[0,o,0]]:0<w?[0,s,[0,c,[0,o,0]]]:[0,c,[0,s,[0,o,0]]]}}}for(var h=r>>1,m=uZr(h,t),F=D(h,t),y=D(r-h|0,m),E=0;;){if(F){if(y){var _=y[2],g=y[1],C=F[2],S=F[1],x=Ld(b,S,g);if(0===x){F=C,y=_,E=[0,S,E];continue}if(0<=x){y=_,E=[0,g,E];continue}F=C,E=[0,S,E];continue}return HQr(F,E)}return HQr(y,E)}},d=VQr(t),w=2<=d?D(d,t):t;return function r(t,n){if(!(3<t>>>0))switch(t){case 0:return[0,0,n];case 1:if(n)return[0,[0,0,n[1],0,1],n[2]];break;case 2:if(n){var u=n[2];if(u)return[0,[0,[0,0,n[1],0,1],u[1],0,2],u[2]]}break;default:if(n){var a=n[2];if(a){var i=a[2];if(i)return[0,[0,[0,0,n[1],0,1],a[1],[0,0,i[1],0,1],2],i[2]]}}}var f=t/2|0,c=r(f,n),s=c[2],o=c[1];if(s){var v=s[1],l=r((t-f|0)-1|0,s[2]),b=l[2];return[0,e(o,v,l[1]),b]}throw[0,Wd,Ow]}(VQr(w),w)[1]}return u(v[1],u(l,u(o,u(c,a(i)))))}return u(l,u(o,u(c,a(i))))}return u(o,u(c,a(i)))}return u(c,a(i))}return a(i)}return k},function(t,e){for(var n=e,u=0;;){if(n){var a=n[3],i=n[2],f=n[1],c=Ld(r[1],i,t);if(0!==c){if(0<=c){n=f,u=[0,i,a,u];continue}n=a;continue}var s=[0,i,a,u]}else s=u;return function(r){return m(s)}}},function(r){var t=d(r,0);return function(r){return m(t)}},h,function(r){return h(r,k)}]}function FZr(r){function t(r){return r?r[5]:0}function e(r,e,n,u){var a=t(r),i=t(u);return[0,r,e,n,u,i<=a?a+1|0:i+1|0]}function n(r,t){return[0,0,r,t,0,1]}function u(r,n,u,a){var i=r?r[5]:0,f=a?a[5]:0;if((f+2|0)<i){if(r){var c=r[4],s=r[3],o=r[2],v=r[1];if(t(c)<=t(v))return e(v,o,s,e(c,n,u,a));if(c){var l=c[3],b=c[2],D=c[1],k=e(c[4],n,u,a);return e(e(v,o,s,D),b,l,k)}return AQr(Jw)}return AQr(Gw)}if((i+2|0)<f){if(a){var p=a[4],d=a[3],w=a[2],h=a[1];if(t(h)<=t(p))return e(e(r,n,u,h),w,d,p);if(h){var m=h[3],F=h[2],y=h[1],E=e(h[4],w,d,p);return e(e(r,n,u,y),F,m,E)}return AQr(qw)}return AQr(zw)}return[0,r,n,u,a,f<=i?i+1|0:f+1|0]}var a=0;function i(t,e,n){if(n){var a=n[4],f=n[3],c=n[2],s=n[1],o=n[5],v=Ld(r[1],t,c);if(0===v)return f===e?n:[0,s,t,e,a,o];if(0<=v){var l=i(t,e,a);return a===l?n:u(s,c,f,l)}var b=i(t,e,s);return s===b?n:u(b,c,f,a)}return[0,0,t,e,0,1]}function f(r){for(var t=r;;){if(t){var e=t[1];if(e){t=e;continue}return[0,t[2],t[3]]}throw qd}}function c(r){for(var t=r;;){if(t){var e=t[1];if(e){t=e;continue}return[0,[0,t[2],t[3]]]}return 0}}function s(r){if(r){var t=r[1];if(t){var e=r[4],n=r[3],a=r[2];return u(s(t),a,n,e)}return r[4]}return AQr(Mw)}function o(r,t){if(r){if(t){var e=f(t),n=e[2];return u(r,e[1],n,s(t))}return r}return t}function v(r,t,e){if(e){var a=e[4],i=e[3],f=e[2];return u(v(r,t,e[1]),f,i,a)}return n(r,t)}function l(r,t,e){if(e){var a=e[3],i=e[2];return u(e[1],i,a,l(r,t,e[4]))}return n(r,t)}function b(r,t,n,a){if(r){if(a){var i=a[5],f=r[5],c=a[4],s=a[3],o=a[2],D=a[1],k=r[4],p=r[3],d=r[2],w=r[1];return(i+2|0)<f?u(w,d,p,b(k,t,n,a)):(f+2|0)<i?u(b(r,t,n,D),o,s,c):e(r,t,n,a)}return l(t,n,r)}return v(t,n,a)}function D(r,t){if(r){if(t){var e=f(t),n=e[2];return b(r,e[1],n,s(t))}return r}return t}function k(r,t,e,n){return e?b(r,t,e[1],n):D(r,n)}function p(t,e){if(e){var n=e[4],u=e[3],a=e[2],i=e[1],f=Ld(r[1],t,a);if(0===f)return[0,i,[0,u],n];if(0<=f){var c=p(t,n),s=c[3],o=c[2];return[0,b(i,a,u,c[1]),o,s]}var v=p(t,i),l=v[2];return[0,v[1],l,b(v[3],a,u,n)]}return jw}function d(r,t){for(var e=r,n=t;;){if(!e)return n;var u=[0,e[2],e[3],e[4],n];e=e[1],n=u}}function w(r,t){return UQr((function(r,t){return i(t[1],t[2],r)}),t,r)}function h(r,t){if(r){var e=r[2],n=r[1],u=d(r[3],r[4]);return[0,[0,n,e],function(r){return h(u)}]}return 0}return[0,a,function(r){return r?0:1},function(t,e){for(var n=e;;){if(!n)return 0;var u=n[4],a=n[1],i=Ld(r[1],t,n[2]),f=0===i?1:0;if(f)return f;n=0<=i?u:a}},i,function t(e,n,a){if(a){var i=a[4],f=a[3],c=a[2],s=a[1],v=a[5],l=Ld(r[1],e,c);if(0===l){var b=Nd(n,[0,f]);if(b){var D=b[1];return f===D?a:[0,s,e,D,i,v]}return o(s,i)}if(0<=l){var k=t(e,n,i);return i===k?a:u(s,c,f,k)}var p=t(e,n,s);return s===p?a:u(p,c,f,i)}var d=Nd(n,0);return d?[0,0,e,d[1],0,1]:0},n,function t(e,n){if(n){var a=n[4],i=n[3],f=n[2],c=n[1],s=Ld(r[1],e,f);if(0===s)return o(c,a);if(0<=s){var v=t(e,a);return a===v?n:u(c,f,i,v)}var l=t(e,c);return c===l?n:u(l,f,i,a)}return 0},function r(e,n,u){if(n){var a=n[2],i=n[5],f=n[4],c=n[3],s=n[1];if(t(u)<=i){var o=p(a,u),v=o[2],l=o[1],b=r(e,f,o[3]),D=Rd(e,a,[0,c],v);return k(r(e,s,l),a,D,b)}}else if(!u)return 0;if(u){var d=u[2],w=u[4],h=u[3],m=u[1],F=p(d,n),y=F[2],E=F[1],_=r(e,F[3],w),g=Rd(e,d,y,[0,h]);return k(r(e,E,m),d,g,_)}throw[0,Wd,Uw]},function r(t,e,n){if(e){if(n){var u=n[3],a=n[2],i=e[3],f=e[2],c=n[4],s=n[1],o=e[4],v=e[1];if(n[5]<=e[5]){var l=p(f,n),D=l[2],d=l[3],w=r(t,v,l[1]),h=r(t,o,d);return D?k(w,f,Rd(t,f,i,D[1]),h):b(w,f,i,h)}var m=p(a,e),F=m[2],y=m[3],E=r(t,m[1],s),_=r(t,y,c);return F?k(E,a,Rd(t,a,F[1],u),_):b(E,a,u,_)}var g=e}else g=n;return g},function(t,e,n){for(var u=d(n,0),a=d(e,0),i=u;;){if(a){if(i){var f=i[4],c=i[3],s=i[2],o=a[4],v=a[3],l=a[2],b=Ld(r[1],a[1],i[1]);if(0===b){var D=Ld(t,l,s);if(0===D){var k=d(c,f);a=d(v,o),i=k;continue}return D}return b}return 1}return i?-1:0}},function(t,e,n){for(var u=d(n,0),a=d(e,0),i=u;;){if(a){if(i){var f=i[4],c=i[3],s=i[2],o=a[4],v=a[3],l=a[2],b=0===Ld(r[1],a[1],i[1])?1:0;if(b){var D=Ld(t,l,s);if(D){var k=d(c,f);a=d(v,o),i=k;continue}var p=D}else p=b;return p}return 0}return i?0:1}},function r(t,e){for(var n=e;;){if(!n)return 0;var u=n[4],a=n[3],i=n[2];r(t,n[1]),Ld(t,i,a);n=u}},function r(t,e,n){for(var u=e,a=n;;){if(!u)return a;var i=u[4],f=u[3],c=Rd(t,u[2],f,r(t,u[1],a));u=i,a=c}},function r(t,e){for(var n=e;;){if(n){var u=n[4],a=n[1],i=Ld(t,n[2],n[3]);if(i){var f=r(t,a);if(f){n=u;continue}var c=f}else c=i;return c}return 1}},function r(t,e){for(var n=e;;){if(n){var u=n[4],a=n[1],i=Ld(t,n[2],n[3]);if(i)var f=i;else{var c=r(t,a);if(!c){n=u;continue}f=c}return f}return 0}},function r(t,e){if(e){var n=e[4],u=e[3],a=e[2],i=e[1],f=r(t,i),c=Ld(t,a,u),s=r(t,n);return c?i===f&&n===s?e:b(f,a,u,s):D(f,s)}return 0},function r(t,e){if(e){var n=e[3],u=e[2],a=e[4],i=r(t,e[1]),f=i[2],c=i[1],s=Ld(t,u,n),o=r(t,a),v=o[2],l=o[1];if(s){var k=D(f,v);return[0,b(c,u,n,l),k]}var p=b(f,u,n,v);return[0,D(c,l),p]}return Xw},function r(t){if(t){var e=t[1],n=r(t[4]);return(r(e)+1|0)+n|0}return 0},function(r){return function r(t,e){for(var n=t,u=e;;){if(!u)return n;var a=u[3],i=u[2],f=u[1];n=[0,[0,i,a],r(n,u[4])],u=f}}(0,r)},f,c,function(r){for(var t=r;;){if(t){var e=t[4],n=t[3],u=t[2];if(e){t=e;continue}return[0,u,n]}throw qd}},function(r){for(var t=r;;){if(t){var e=t[4],n=t[3],u=t[2];if(e){t=e;continue}return[0,[0,u,n]]}return 0}},f,c,p,function(t,e){for(var n=e;;){if(!n)throw qd;var u=n[4],a=n[3],i=n[1],f=Ld(r[1],t,n[2]);if(0===f)return a;n=0<=f?u:i}},function(t,e){for(var n=e;;){if(!n)return 0;var u=n[4],a=n[3],i=n[1],f=Ld(r[1],t,n[2]);if(0===f)return[0,a];n=0<=f?u:i}},function(r,t){for(var e=t;;){if(!e)throw qd;var n=e[2],u=e[4],a=e[3],i=e[1];if(Nd(r,n))for(var f=n,c=a,s=i;;){if(!s)return[0,f,c];var o=s[2],v=s[4],l=s[3],b=s[1];if(Nd(r,o))f=o,c=l,s=b;else s=v}e=u}},function(r,t){for(var e=t;;){if(!e)return 0;var n=e[2],u=e[4],a=e[3],i=e[1];if(Nd(r,n))for(var f=n,c=a,s=i;;){if(!s)return[0,[0,f,c]];var o=s[2],v=s[4],l=s[3],b=s[1];if(Nd(r,o))f=o,c=l,s=b;else s=v}e=u}},function(r,t){for(var e=t;;){if(!e)throw qd;var n=e[2],u=e[4],a=e[3],i=e[1];if(Nd(r,n))for(var f=n,c=a,s=u;;){if(!s)return[0,f,c];var o=s[2],v=s[4],l=s[3],b=s[1];if(Nd(r,o))f=o,c=l,s=v;else s=b}e=i}},function(r,t){for(var e=t;;){if(!e)return 0;var n=e[2],u=e[4],a=e[3],i=e[1];if(Nd(r,n))for(var f=n,c=a,s=u;;){if(!s)return[0,[0,f,c]];var o=s[2],v=s[4],l=s[3],b=s[1];if(Nd(r,o))f=o,c=l,s=v;else s=b}e=i}},function r(t,e){if(e){var n=e[5],u=e[4],a=e[3],i=e[2];return[0,r(t,e[1]),i,Nd(t,a),r(t,u),n]}return 0},function r(t,e){if(e){var n=e[2],u=e[5],a=e[4],i=e[3];return[0,r(t,e[1]),n,Ld(t,n,i),r(t,a),u]}return 0},function(r){var t=d(r,0);return function(r){return h(t)}},function(t,e){for(var n=e,u=0;;){if(n){var a=n[4],i=n[3],f=n[2],c=n[1],s=Ld(r[1],f,t);if(0!==s){if(0<=s){n=c,u=[0,f,i,a,u];continue}n=a;continue}var o=[0,f,i,a,u]}else o=u;return function(r){return h(o)}}},w,function(r){return w(r,a)}]}_p(),_p(),_p();var yZr=[bc,Vw,_p()];function EZr(r){throw yZr}function _Zr(r){var t=r[1];r[1]=EZr;try{var e=Nd(t,0);return r[1]=e,function(r,t){r[0]=t}(r,Mv),e}catch(t){throw t=Pd(t),r[1]=function(r){throw t},t}}function gZr(r){var t=1<=r?r:1,e=zQr<t?zQr:t,n=Dp(e);return[0,n,0,e,n]}function CZr(r){return cZr(r[1],0,r[2])}function SZr(r,t){for(var e=[0,r[3]];;){if(!(e[1]<(r[2]+t|0))){zQr<e[1]&&((r[2]+t|0)<=zQr?e[1]=zQr:TQr(Yw));var n=Dp(e[1]);return sZr(r[1],0,n,0,r[2]),r[1]=n,r[3]=e[1],0}e[1]=2*e[1]|0}}function xZr(r,t){var e=r[2];return r[3]<=e&&SZr(r,1),up(r[1],e,t),r[2]=e+1|0,0}function TZr(r,t){var e=jp(t),n=r[2]+e|0;return r[3]<n&&SZr(r,e),oZr(t,0,r[1],r[2],e),r[2]=n,0}_p(),_p();var AZr=-6;function BZr(r){return[0,0,Dp(r)]}function IZr(r,t){var e=nd(r[2]),n=r[1]+t|0,u=e<n?1:0;if(u){var a=Dp(BQr(2*e|0,n));sZr(r[2],0,a,0,e),r[2]=a;var i=0}else i=u;return i}function OZr(r,t){return IZr(r,1),ap(r[2],r[1],t),r[1]=r[1]+1|0,0}function PZr(r,t){var e=jp(t);return IZr(r,e),oZr(t,0,r[2],r[1],e),r[1]=r[1]+e|0,0}function NZr(r){return cZr(r[2],0,r[1])}function LZr(r,t){for(var e=t;;){if("number"==typeof e)return 0;switch(e[0]){case 0:var n=e[1];PZr(r,$w);e=n;continue;case 1:var u=e[1];PZr(r,Kw);e=u;continue;case 2:var a=e[1];PZr(r,Qw);e=a;continue;case 3:var i=e[1];PZr(r,Zw);e=i;continue;case 4:var f=e[1];PZr(r,rh);e=f;continue;case 5:var c=e[1];PZr(r,th);e=c;continue;case 6:var s=e[1];PZr(r,eh);e=s;continue;case 7:var o=e[1];PZr(r,nh);e=o;continue;case 8:var v=e[2],l=e[1];PZr(r,uh),LZr(r,l),PZr(r,ah);e=v;continue;case 9:var b=e[3],D=e[1];PZr(r,ih),LZr(r,D),PZr(r,fh);e=b;continue;case 10:var k=e[1];PZr(r,ch);e=k;continue;case 11:var p=e[1];PZr(r,sh);e=p;continue;case 12:var d=e[1];PZr(r,oh);e=d;continue;case 13:var w=e[1];PZr(r,vh);e=w;continue;default:var h=e[1];PZr(r,lh);e=h;continue}}}function RZr(r){if("number"==typeof r)return 0;switch(r[0]){case 0:return[0,RZr(r[1])];case 1:return[1,RZr(r[1])];case 2:return[2,RZr(r[1])];case 3:return[3,RZr(r[1])];case 4:return[4,RZr(r[1])];case 5:return[5,RZr(r[1])];case 6:return[6,RZr(r[1])];case 7:return[7,RZr(r[1])];case 8:return[8,r[1],RZr(r[2])];case 9:return[9,r[2],r[1],RZr(r[3])];case 10:return[10,RZr(r[1])];case 11:return[11,RZr(r[1])];case 12:return[12,RZr(r[1])];case 13:return[13,RZr(r[1])];default:return[14,RZr(r[1])]}}function MZr(r){if("number"==typeof r){return[0,function(r){return 0},function(r){return 0},function(r){return 0},function(r){return 0}]}switch(r[0]){case 0:var t=MZr(r[1]),e=t[4],n=t[3],u=t[2],a=t[1];return[0,function(r){return Nd(a,0),0},function(r){return Nd(u,0),0},n,e];case 1:var i=MZr(r[1]),f=i[4],c=i[3],s=i[2],o=i[1];return[0,function(r){return Nd(o,0),0},function(r){return Nd(s,0),0},c,f];case 2:var v=MZr(r[1]),l=v[4],b=v[3],D=v[2],k=v[1];return[0,function(r){return Nd(k,0),0},function(r){return Nd(D,0),0},b,l];case 3:var p=MZr(r[1]),d=p[4],w=p[3],h=p[2],m=p[1];return[0,function(r){return Nd(m,0),0},function(r){return Nd(h,0),0},w,d];case 4:var F=MZr(r[1]),y=F[4],E=F[3],_=F[2],g=F[1];return[0,function(r){return Nd(g,0),0},function(r){return Nd(_,0),0},E,y];case 5:var C=MZr(r[1]),S=C[4],x=C[3],T=C[2],A=C[1];return[0,function(r){return Nd(A,0),0},function(r){return Nd(T,0),0},x,S];case 6:var B=MZr(r[1]),I=B[4],O=B[3],P=B[2],N=B[1];return[0,function(r){return Nd(N,0),0},function(r){return Nd(P,0),0},O,I];case 7:var L=MZr(r[1]),R=L[4],M=L[3],j=L[2],U=L[1];return[0,function(r){return Nd(U,0),0},function(r){return Nd(j,0),0},M,R];case 8:var X=MZr(r[2]),J=X[4],G=X[3],q=X[2],z=X[1];return[0,function(r){return Nd(z,0),0},function(r){return Nd(q,0),0},G,J];case 9:var V=r[2],W=r[1],Y=MZr(r[3]),H=Y[4],$=Y[3],K=Y[2],Q=Y[1],Z=MZr(jZr(RZr(W),V)),rr=Z[4],tr=Z[3],er=Z[2],nr=Z[1];return[0,function(r){return Nd(Q,0),Nd(nr,0),0},function(r){return Nd(er,0),Nd(K,0),0},function(r){return Nd($,0),Nd(tr,0),0},function(r){return Nd(rr,0),Nd(H,0),0}];case 10:var ur=MZr(r[1]),ar=ur[4],ir=ur[3],fr=ur[2],cr=ur[1];return[0,function(r){return Nd(cr,0),0},function(r){return Nd(fr,0),0},ir,ar];case 11:var sr=MZr(r[1]),or=sr[4],vr=sr[3],lr=sr[2],br=sr[1];return[0,function(r){return Nd(br,0),0},function(r){return Nd(lr,0),0},vr,or];case 12:var Dr=MZr(r[1]),kr=Dr[4],pr=Dr[3],dr=Dr[2],wr=Dr[1];return[0,function(r){return Nd(wr,0),0},function(r){return Nd(dr,0),0},pr,kr];case 13:var hr=MZr(r[1]),mr=hr[4],Fr=hr[3],yr=hr[2],Er=hr[1];return[0,function(r){return Nd(Er,0),0},function(r){return Nd(yr,0),0},function(r){return Nd(Fr,0),0},function(r){return Nd(mr,0),0}];default:var _r=MZr(r[1]),gr=_r[4],Cr=_r[3],Sr=_r[2],xr=_r[1];return[0,function(r){return Nd(xr,0),0},function(r){return Nd(Sr,0),0},function(r){return Nd(Cr,0),0},function(r){return Nd(gr,0),0}]}}function jZr(r,t){if("number"==typeof r){if("number"==typeof t)return 0;switch(t[0]){case 10:var e=0;break;case 11:e=1;break;case 12:e=2;break;case 13:e=3;break;case 14:e=4;break;case 8:e=5;break;case 9:e=6;break;default:throw[0,Wd,bh]}}else switch(r[0]){case 0:var n=r[1];if("number"==typeof t)var u=1;else switch(t[0]){case 0:return[0,jZr(n,t[1])];case 8:e=5,u=0;break;case 9:e=6,u=0;break;case 10:e=0,u=0;break;case 11:e=1,u=0;break;case 12:e=2,u=0;break;case 13:e=3,u=0;break;case 14:e=4,u=0;break;default:u=1}if(u)e=7;break;case 1:var a=r[1];if("number"==typeof t)var i=1;else switch(t[0]){case 1:return[1,jZr(a,t[1])];case 8:e=5,i=0;break;case 9:e=6,i=0;break;case 10:e=0,i=0;break;case 11:e=1,i=0;break;case 12:e=2,i=0;break;case 13:e=3,i=0;break;case 14:e=4,i=0;break;default:i=1}if(i)e=7;break;case 2:var f=r[1];if("number"==typeof t)var c=1;else switch(t[0]){case 2:return[2,jZr(f,t[1])];case 8:e=5,c=0;break;case 9:e=6,c=0;break;case 10:e=0,c=0;break;case 11:e=1,c=0;break;case 12:e=2,c=0;break;case 13:e=3,c=0;break;case 14:e=4,c=0;break;default:c=1}if(c)e=7;break;case 3:var s=r[1];if("number"==typeof t)var o=1;else switch(t[0]){case 3:return[3,jZr(s,t[1])];case 8:e=5,o=0;break;case 9:e=6,o=0;break;case 10:e=0,o=0;break;case 11:e=1,o=0;break;case 12:e=2,o=0;break;case 13:e=3,o=0;break;case 14:e=4,o=0;break;default:o=1}if(o)e=7;break;case 4:var v=r[1];if("number"==typeof t)var l=1;else switch(t[0]){case 4:return[4,jZr(v,t[1])];case 8:e=5,l=0;break;case 9:e=6,l=0;break;case 10:e=0,l=0;break;case 11:e=1,l=0;break;case 12:e=2,l=0;break;case 13:e=3,l=0;break;case 14:e=4,l=0;break;default:l=1}if(l)e=7;break;case 5:var b=r[1];if("number"==typeof t)var D=1;else switch(t[0]){case 5:return[5,jZr(b,t[1])];case 8:e=5,D=0;break;case 9:e=6,D=0;break;case 10:e=0,D=0;break;case 11:e=1,D=0;break;case 12:e=2,D=0;break;case 13:e=3,D=0;break;case 14:e=4,D=0;break;default:D=1}if(D)e=7;break;case 6:var k=r[1];if("number"==typeof t)var p=1;else switch(t[0]){case 6:return[6,jZr(k,t[1])];case 8:e=5,p=0;break;case 9:e=6,p=0;break;case 10:e=0,p=0;break;case 11:e=1,p=0;break;case 12:e=2,p=0;break;case 13:e=3,p=0;break;case 14:e=4,p=0;break;default:p=1}if(p)e=7;break;case 7:var d=r[1];if("number"==typeof t)var w=1;else switch(t[0]){case 7:return[7,jZr(d,t[1])];case 8:e=5,w=0;break;case 9:e=6,w=0;break;case 10:e=0,w=0;break;case 11:e=1,w=0;break;case 12:e=2,w=0;break;case 13:e=3,w=0;break;case 14:e=4,w=0;break;default:w=1}if(w)e=7;break;case 8:var h=r[2],m=r[1];if("number"==typeof t)var F=1;else switch(t[0]){case 8:var y=t[1],E=jZr(h,t[2]);return[8,jZr(m,y),E];case 10:e=0,F=0;break;case 11:e=1,F=0;break;case 12:e=2,F=0;break;case 13:e=3,F=0;break;case 14:e=4,F=0;break;default:F=1}if(F)throw[0,Wd,_h];break;case 9:var _=r[3],g=r[2],C=r[1];if("number"==typeof t)var S=1;else switch(t[0]){case 8:e=5,S=0;break;case 9:var x=t[3],T=t[2],A=t[1],B=MZr(jZr(RZr(g),A)),I=B[4];return Nd(B[2],0),Nd(I,0),[9,C,T,jZr(_,x)];case 10:e=0,S=0;break;case 11:e=1,S=0;break;case 12:e=2,S=0;break;case 13:e=3,S=0;break;case 14:e=4,S=0;break;default:S=1}if(S)throw[0,Wd,Ch];break;case 10:var O=r[1];if("number"!=typeof t&&10===t[0])return[10,jZr(O,t[1])];throw[0,Wd,Dh];case 11:var P=r[1];if("number"==typeof t)var N=1;else switch(t[0]){case 10:e=0,N=0;break;case 11:return[11,jZr(P,t[1])];default:N=1}if(N)throw[0,Wd,ph];break;case 12:var L=r[1];if("number"==typeof t)var R=1;else switch(t[0]){case 10:e=0,R=0;break;case 11:e=1,R=0;break;case 12:return[12,jZr(L,t[1])];default:R=1}if(R)throw[0,Wd,wh];break;case 13:var M=r[1];if("number"==typeof t)var j=1;else switch(t[0]){case 10:e=0,j=0;break;case 11:e=1,j=0;break;case 12:e=2,j=0;break;case 13:return[13,jZr(M,t[1])];default:j=1}if(j)throw[0,Wd,mh];break;default:var U=r[1];if("number"==typeof t)var X=1;else switch(t[0]){case 10:e=0,X=0;break;case 11:e=1,X=0;break;case 12:e=2,X=0;break;case 13:e=3,X=0;break;case 14:return[14,jZr(U,t[1])];default:X=1}if(X)throw[0,Wd,yh]}switch(e){case 0:throw[0,Wd,kh];case 1:throw[0,Wd,dh];case 2:throw[0,Wd,hh];case 3:throw[0,Wd,Fh];case 4:throw[0,Wd,Eh];case 5:throw[0,Wd,gh];case 6:throw[0,Wd,Sh];default:throw[0,Wd,xh]}}var UZr=[bc,uF,_p()];function XZr(r,t){if("number"==typeof r)return[0,0,t];if(0===r[0])return[0,[0,r[1],r[2]],t];if("number"!=typeof t&&2===t[0])return[0,[1,r[1]],t[1]];throw UZr}function JZr(r,t,e){var n=XZr(r,e);if("number"==typeof t){if(0===t)return[0,n[1],0,n[2]];var u=n[2];if("number"!=typeof u&&2===u[0])return[0,n[1],1,u[1]];throw UZr}return[0,n[1],[0,t[1]],n[2]]}function GZr(r,t,e){var n=qZr(t,e);return[0,[23,r,n[1]],n[2]]}function qZr(r,t){if("number"==typeof r)return[0,0,t];switch(r[0]){case 0:if("number"!=typeof t&&0===t[0]){var e=qZr(r[1],t[1]);return[0,[0,e[1]],e[2]]}break;case 1:if("number"!=typeof t&&0===t[0]){var n=qZr(r[1],t[1]);return[0,[1,n[1]],n[2]]}break;case 2:var u=r[2],a=XZr(r[1],t),i=a[2],f=a[1];if("number"!=typeof i&&1===i[0]){var c=qZr(u,i[1]);return[0,[2,f,c[1]],c[2]]}throw UZr;case 3:var s=r[2],o=XZr(r[1],t),v=o[2],l=o[1];if("number"!=typeof v&&1===v[0]){var b=qZr(s,v[1]);return[0,[3,l,b[1]],b[2]]}throw UZr;case 4:var D=r[4],k=r[1],p=JZr(r[2],r[3],t),d=p[3],w=p[2],h=p[1];if("number"!=typeof d&&2===d[0]){var m=qZr(D,d[1]);return[0,[4,k,h,w,m[1]],m[2]]}throw UZr;case 5:var F=r[4],y=r[1],E=JZr(r[2],r[3],t),_=E[3],g=E[2],C=E[1];if("number"!=typeof _&&3===_[0]){var S=qZr(F,_[1]);return[0,[5,y,C,g,S[1]],S[2]]}throw UZr;case 6:var x=r[4],T=r[1],A=JZr(r[2],r[3],t),B=A[3],I=A[2],O=A[1];if("number"!=typeof B&&4===B[0]){var P=qZr(x,B[1]);return[0,[6,T,O,I,P[1]],P[2]]}throw UZr;case 7:var N=r[4],L=r[1],R=JZr(r[2],r[3],t),M=R[3],j=R[2],U=R[1];if("number"!=typeof M&&5===M[0]){var X=qZr(N,M[1]);return[0,[7,L,U,j,X[1]],X[2]]}throw UZr;case 8:var J=r[4],G=r[1],q=JZr(r[2],r[3],t),z=q[3],V=q[2],W=q[1];if("number"!=typeof z&&6===z[0]){var Y=qZr(J,z[1]);return[0,[8,G,W,V,Y[1]],Y[2]]}throw UZr;case 9:var H=r[2],$=XZr(r[1],t),K=$[2],Q=$[1];if("number"!=typeof K&&7===K[0]){var Z=qZr(H,K[1]);return[0,[9,Q,Z[1]],Z[2]]}throw UZr;case 10:var rr=qZr(r[1],t);return[0,[10,rr[1]],rr[2]];case 11:var tr=r[1],er=qZr(r[2],t);return[0,[11,tr,er[1]],er[2]];case 12:var nr=r[1],ur=qZr(r[2],t);return[0,[12,nr,ur[1]],ur[2]];case 13:if("number"!=typeof t&&8===t[0]){var ar=t[1],ir=t[2],fr=r[3],cr=r[1];if(md([0,r[2]],[0,ar]))throw UZr;var sr=qZr(fr,ir);return[0,[13,cr,ar,sr[1]],sr[2]]}break;case 14:if("number"!=typeof t&&9===t[0]){var or=t[1],vr=t[3],lr=r[3],br=r[2],Dr=r[1],kr=[0,SQr(or)];if(md([0,SQr(br)],kr))throw UZr;var pr=qZr(lr,SQr(vr));return[0,[14,Dr,or,pr[1]],pr[2]]}break;case 15:if("number"!=typeof t&&10===t[0]){var dr=qZr(r[1],t[1]);return[0,[15,dr[1]],dr[2]]}break;case 16:if("number"!=typeof t&&11===t[0]){var wr=qZr(r[1],t[1]);return[0,[16,wr[1]],wr[2]]}break;case 17:var hr=r[1],mr=qZr(r[2],t);return[0,[17,hr,mr[1]],mr[2]];case 18:var Fr=r[2],yr=r[1];if(0===yr[0]){var Er=yr[1],_r=Er[2],gr=qZr(Er[1],t),Cr=gr[1],Sr=qZr(Fr,gr[2]);return[0,[18,[0,[0,Cr,_r]],Sr[1]],Sr[2]]}var xr=yr[1],Tr=xr[2],Ar=qZr(xr[1],t),Br=Ar[1],Ir=qZr(Fr,Ar[2]);return[0,[18,[1,[0,Br,Tr]],Ir[1]],Ir[2]];case 19:if("number"!=typeof t&&13===t[0]){var Or=qZr(r[1],t[1]);return[0,[19,Or[1]],Or[2]]}break;case 20:if("number"!=typeof t&&1===t[0]){var Pr=r[2],Nr=r[1],Lr=qZr(r[3],t[1]);return[0,[20,Nr,Pr,Lr[1]],Lr[2]]}break;case 21:if("number"!=typeof t&&2===t[0]){var Rr=r[1],Mr=qZr(r[2],t[1]);return[0,[21,Rr,Mr[1]],Mr[2]]}break;case 23:var jr=r[2],Ur=r[1];if("number"==typeof Ur)switch(Ur){case 0:case 1:return GZr(Ur,jr,t);case 2:if("number"!=typeof t&&14===t[0]){var Xr=qZr(jr,t[1]);return[0,[23,2,Xr[1]],Xr[2]]}throw UZr;default:return GZr(Ur,jr,t)}else switch(Ur[0]){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:return GZr(Ur,jr,t);case 8:return GZr([8,Ur[1],Ur[2]],jr,t);case 9:var Jr=Ur[1],Gr=zZr(Ur[2],jr,t),qr=Gr[2];return[0,[23,[9,Jr,Gr[1]],qr[1]],qr[2]];case 10:default:return GZr(Ur,jr,t)}}throw UZr}function zZr(r,t,e){if("number"==typeof r)return[0,0,qZr(t,e)];switch(r[0]){case 0:if("number"!=typeof e&&0===e[0]){var n=zZr(r[1],t,e[1]);return[0,[0,n[1]],n[2]]}break;case 1:if("number"!=typeof e&&1===e[0]){var u=zZr(r[1],t,e[1]);return[0,[1,u[1]],u[2]]}break;case 2:if("number"!=typeof e&&2===e[0]){var a=zZr(r[1],t,e[1]);return[0,[2,a[1]],a[2]]}break;case 3:if("number"!=typeof e&&3===e[0]){var i=zZr(r[1],t,e[1]);return[0,[3,i[1]],i[2]]}break;case 4:if("number"!=typeof e&&4===e[0]){var f=zZr(r[1],t,e[1]);return[0,[4,f[1]],f[2]]}break;case 5:if("number"!=typeof e&&5===e[0]){var c=zZr(r[1],t,e[1]);return[0,[5,c[1]],c[2]]}break;case 6:if("number"!=typeof e&&6===e[0]){var s=zZr(r[1],t,e[1]);return[0,[6,s[1]],s[2]]}break;case 7:if("number"!=typeof e&&7===e[0]){var o=zZr(r[1],t,e[1]);return[0,[7,o[1]],o[2]]}break;case 8:if("number"!=typeof e&&8===e[0]){var v=e[1],l=e[2],b=r[2];if(md([0,r[1]],[0,v]))throw UZr;var D=zZr(b,t,l);return[0,[8,v,D[1]],D[2]]}break;case 9:if("number"!=typeof e&&9===e[0]){var k=e[2],p=e[1],d=e[3],w=r[3],h=r[2],m=r[1],F=[0,SQr(p)];if(md([0,SQr(m)],F))throw UZr;var y=[0,SQr(k)];if(md([0,SQr(h)],y))throw UZr;var E=MZr(jZr(RZr(p),k)),_=E[4];Nd(E[2],0),Nd(_,0);var g=zZr(SQr(w),t,d),C=g[2];return[0,[9,p,k,RZr(g[1])],C]}break;case 10:if("number"!=typeof e&&10===e[0]){var S=zZr(r[1],t,e[1]);return[0,[10,S[1]],S[2]]}break;case 11:if("number"!=typeof e&&11===e[0]){var x=zZr(r[1],t,e[1]);return[0,[11,x[1]],x[2]]}break;case 13:if("number"!=typeof e&&13===e[0]){var T=zZr(r[1],t,e[1]);return[0,[13,T[1]],T[2]]}break;case 14:if("number"!=typeof e&&14===e[0]){var A=zZr(r[1],t,e[1]);return[0,[14,A[1]],A[2]]}}throw UZr}function VZr(r,t,e){var n=jp(e),u=0<=t?r:0,a=IQr(t);if(a<=n)return e;var i=aZr(a,2===u?48:32);switch(u){case 0:oZr(e,0,i,0,n);break;case 1:oZr(e,0,i,a-n|0,n);break;default:if(0<n){if(43===Cd(e,0))var f=1;else if(45===Cd(e,0))f=1;else if(32===Cd(e,0))f=1;else{var c=0;f=0}if(f){ap(i,0,Cd(e,0)),oZr(e,1,i,1+(a-n|0)|0,n-1|0);c=1}}else c=0;if(!c){if(1<n)if(48===Cd(e,0)){if(bb===Cd(e,1))var s=1;else if(88===Cd(e,1))s=1;else{var o=0;s=0}if(s){ap(i,1,Cd(e,1)),oZr(e,2,i,2+(a-n|0)|0,n-2|0);o=1}}else o=0;else o=0;o||oZr(e,0,i,a-n|0,n)}}return xd(i)}function WZr(r,t){var e=IQr(r),n=jp(t),u=Cd(t,0);if(58<=u)var a=71<=u?5<(u+Ka|0)>>>0?1:0:65<=u?0:1;else{if(32===u)var i=1;else if(43<=u)switch(u+Yr|0){case 5:if(n<(e+2|0)&&1<n)if(!(bb===Cd(t,1)?0:88===Cd(t,1)?0:1)){var f=aZr(e+2|0,48);return ap(f,1,Cd(t,1)),oZr(t,2,f,4+(e-n|0)|0,n-2|0),xd(f)}a=0,i=0;break;case 0:case 2:i=1;break;case 1:case 3:case 4:a=1,i=0;break;default:a=0,i=0}else a=1,i=0;if(i){if(n<(e+1|0)){var c=aZr(e+1|0,48);return ap(c,0,u),oZr(t,1,c,2+(e-n|0)|0,n-1|0),xd(c)}a=1}}if(!a&&n<e){var s=aZr(e,48);return oZr(t,0,s,e-n|0,n),xd(s)}return t}function YZr(r){for(var t=0,e=jp(r);;){if(e<=t)var n=r;else{var u=Up(r,t)+Ce|0;if(!(59<u>>>0?33<(u+J|0)>>>0?1:0:2===u?1:0)){t=t+1|0;continue}var a=$k(r),i=[0,0],f=nd(a)-1|0;if(!(f<0))for(var c=0;;){var s=ip(a,c);if(32<=s){var o=s-34|0;if(58<o>>>0)if(93<=o)var v=0,l=0;else l=1;else if(56<(o-1|0)>>>0)v=1,l=0;else l=1;if(l){var b=1;v=2}}else v=11<=s?13===s?1:0:8<=s?1:0;switch(v){case 0:b=4;break;case 1:b=2}i[1]=i[1]+b|0;var D=c+1|0;if(f===c)break;c=D}if(i[1]===nd(a))var k=iZr(a);else{var p=Dp(i[1]);i[1]=0;var d=nd(a)-1|0;if(!(d<0))for(var w=0;;){var h=ip(a,w);if(35<=h)var m=92===h?1:Yc<=h?0:2;else if(32<=h)m=34<=h?1:2;else if(14<=h)m=0;else switch(h){case 8:up(p,i[1],92),i[1]++,up(p,i[1],98);m=3;break;case 9:up(p,i[1],92),i[1]++,up(p,i[1],de);m=3;break;case 10:up(p,i[1],92),i[1]++,up(p,i[1],De);m=3;break;case 13:up(p,i[1],92),i[1]++,up(p,i[1],tf);m=3;break;default:m=0}switch(m){case 0:up(p,i[1],92),i[1]++,up(p,i[1],48+(h/ra|0)|0),i[1]++,up(p,i[1],48+((h/10|0)%10|0)|0),i[1]++,up(p,i[1],48+(h%10|0)|0);break;case 1:up(p,i[1],92),i[1]++,up(p,i[1],h);break;case 2:up(p,i[1],h)}i[1]++;var F=w+1|0;if(d===w)break;w=F}k=p}n=xd(k)}var y=jp(n),E=aZr(y+2|0,34);return Vk(n,0,E,1,y),xd(E)}}function HZr(r,t){switch(r){case 0:var e=Rm;break;case 1:e=Mm;break;case 2:e=jm;break;case 3:e=Um;break;case 4:e=Xm;break;case 5:e=Jm;break;case 6:e=Gm;break;case 7:e=qm;break;case 8:e=zm;break;case 9:e=Vm;break;case 10:e=Wm;break;case 11:e=Ym;break;default:e=Hm}return yp(e,t)}function $Zr(r,t){switch(r){case 0:var e=vm;break;case 1:e=lm;break;case 2:e=bm;break;case 3:e=Dm;break;case 4:e=km;break;case 5:e=pm;break;case 6:e=dm;break;case 7:e=wm;break;case 8:e=hm;break;case 9:e=mm;break;case 10:e=Fm;break;case 11:e=ym;break;default:e=Em}return yp(e,t)}function KZr(r,t){switch(r){case 0:var e=Qh;break;case 1:e=Zh;break;case 2:e=rm;break;case 3:e=tm;break;case 4:e=em;break;case 5:e=nm;break;case 6:e=um;break;case 7:e=am;break;case 8:e=im;break;case 9:e=fm;break;case 10:e=cm;break;case 11:e=sm;break;default:e=om}return yp(e,t)}function QZr(r,t){switch(r){case 0:var e=_m;break;case 1:e=gm;break;case 2:e=Cm;break;case 3:e=Sm;break;case 4:e=xm;break;case 5:e=Tm;break;case 6:e=Am;break;case 7:e=Bm;break;case 8:e=Im;break;case 9:e=Om;break;case 10:e=Pm;break;case 11:e=Nm;break;default:e=Lm}return function(r,t){var e=hp(r);e.signedconv&&function(r){return r[3]<<16<0}(t)&&(e.sign=-1,t=Mp(t));var n=bo,u=Ap(e.base);do{var a=Lp(t,u);t=a[1],n="0123456789abcdef".charAt(Rp(a[2]))+n}while(!Tp(t));if(e.prec>=0){e.filler=ak;var i=e.prec-n.length;i>0&&(n=Wk(i,Zf)+n)}return mp(e,n)}(e,t)}function ZZr(r,t,e){if(16<=r){if(17<=r)switch(r+ff|0){case 2:var n=0;break;case 0:case 3:var u=43;n=1;break;default:u=32,n=1}else n=0;if(!n)u=45;var a=function(r,t,e){if(!isFinite(r))return isNaN(r)?xp(bv):xp(r>0?xt:"-infinity");var n=0==r&&1/r==-1/0?1:r>=0?0:1;n&&(r=-r);var u=0;if(0==r);else if(r<1)for(;r<1&&u>-1022;)r*=2,u--;else for(;r>=2;)r/=2,u++;var a=u<0?bo:qo,i=bo;if(n)i=us;else switch(e){case 43:i=qo;break;case 32:i=ak}if(t>=0&&t<13){var f=Math.pow(2,4*t);r=Math.round(r*f)/f}var c=r.toString(16);if(t>=0){var s=c.indexOf(ee);if(s<0)c+=ee+Wk(t,Zf);else{var o=s+1+t;c.length<o?c+=Wk(o-c.length,Zf):c=c.substr(0,o)}}return xp(i+Lb+c+"p"+a+u.toString(10))}(e,t,u);if(19<=r){var i=$k(a),f=nd(i);if(0===f)var c=i;else{var s=Dp(f),o=f-1|0;if(!(o<0))for(var v=0;;){up(s,v,JQr(ip(i,v)));var l=v+1|0;if(o===v)break;v=l}c=s}return xd(c)}return a}if(15===r)var b=Kh;else{var D=IQr(t);switch(r){case 15:var k=70;break;case 0:case 1:case 2:k=Au;break;case 3:case 4:case 5:k=ju;break;case 6:case 7:case 8:k=69;break;case 9:case 10:case 11:k=kb;break;case 12:case 13:case 14:k=71;break;case 16:case 17:case 18:k=Eu;break;default:k=72}var p=BZr(16);switch(OZr(p,37),r){case 1:case 4:case 7:case 10:case 13:case 17:case 20:OZr(p,43);break;case 2:case 5:case 8:case 11:case 14:case 18:case 21:OZr(p,32)}OZr(p,46),PZr(p,rp(bo+D)),OZr(p,k);b=NZr(p)}var d=Fp(b,e);if(15===r){var w=function(r){return isFinite(r)?Math.abs(r)>=22250738585072014e-324?0:0!=r?1:2:isNaN(r)?4:3}(e),h=jp(d);if(3===w)return e<0?Hh:$h;if(4<=w)return Wh;for(var m=0;;){if(m===h)var F=0;else{var y=Cd(d,m)+no|0;if(!(23<y>>>0?55===y?1:0:21<(y-1|0)>>>0?1:0)){m=m+1|0;continue}F=1}return F?d:PQr(d,Yh)}}return d}function r0r(r,t,e,n,u,a,i,f){if("number"==typeof u){if("number"==typeof a)return 0===a?function(u){return i0r(r,t,[4,e,Ld(i,f,u)],n)}:function(u,a){return i0r(r,t,[4,e,WZr(u,Ld(i,f,a))],n)};var c=a[1];return function(u){return i0r(r,t,[4,e,WZr(c,Ld(i,f,u))],n)}}if(0===u[0]){var s=u[2],o=u[1];if("number"==typeof a)return 0===a?function(u){return i0r(r,t,[4,e,VZr(o,s,Ld(i,f,u))],n)}:function(u,a){return i0r(r,t,[4,e,VZr(o,s,WZr(u,Ld(i,f,a)))],n)};var v=a[1];return function(u){return i0r(r,t,[4,e,VZr(o,s,WZr(v,Ld(i,f,u)))],n)}}var l=u[1];if("number"==typeof a)return 0===a?function(u,a){return i0r(r,t,[4,e,VZr(l,u,Ld(i,f,a))],n)}:function(u,a,c){return i0r(r,t,[4,e,VZr(l,u,WZr(a,Ld(i,f,c)))],n)};var b=a[1];return function(u,a){return i0r(r,t,[4,e,VZr(l,u,WZr(b,Ld(i,f,a)))],n)}}function t0r(r,t,e,n,u,a){if("number"==typeof u)return function(u){return i0r(r,t,[4,e,Nd(a,u)],n)};if(0===u[0]){var i=u[2],f=u[1];return function(u){return i0r(r,t,[4,e,VZr(f,i,Nd(a,u))],n)}}var c=u[1];return function(u,i){return i0r(r,t,[4,e,VZr(c,u,Nd(a,i))],n)}}function e0r(r,t,e,n,u){for(var a=t,i=n,f=u;;){if("number"==typeof f)return Ld(a,e,i);switch(f[0]){case 0:var c=f[1];return function(r){return i0r(a,e,[5,i,r],c)};case 1:var s=f[1];return function(r){if(40<=r)if(92===r)var t=vw,n=2;else n=Yc<=r?0:1;else if(32<=r)if(39<=r)t=lw,n=2;else n=1;else if(14<=r)n=0;else switch(r){case 8:t=bw,n=2;break;case 9:t=Dw,n=2;break;case 10:t=kw,n=2;break;case 13:t=pw,n=2;break;default:n=0}switch(n){case 0:var u=Dp(4);up(u,0,92),up(u,1,48+(r/ra|0)|0),up(u,2,48+((r/10|0)%10|0)|0),up(u,3,48+(r%10|0)|0);t=xd(u);break;case 1:var f=Dp(1);up(f,0,r);t=xd(f)}var c=jp(t),o=aZr(c+2|0,39);return Vk(t,0,o,1,c),i0r(a,e,[4,i,xd(o)],s)};case 2:var o=f[2],v=f[1];return t0r(a,e,i,o,v,(function(r){return r}));case 3:return t0r(a,e,i,f[2],f[1],YZr);case 4:return r0r(a,e,i,f[4],f[2],f[3],HZr,f[1]);case 5:return r0r(a,e,i,f[4],f[2],f[3],$Zr,f[1]);case 6:return r0r(a,e,i,f[4],f[2],f[3],KZr,f[1]);case 7:return r0r(a,e,i,f[4],f[2],f[3],QZr,f[1]);case 8:var l=f[4],b=f[3],D=f[2],k=f[1];if("number"==typeof D){if("number"==typeof b)return 0===b?function(r){return i0r(a,e,[4,i,ZZr(k,AZr,r)],l)}:function(r,t){return i0r(a,e,[4,i,ZZr(k,r,t)],l)};var p=b[1];return function(r){return i0r(a,e,[4,i,ZZr(k,p,r)],l)}}if(0===D[0]){var d=D[2],w=D[1];if("number"==typeof b)return 0===b?function(r){return i0r(a,e,[4,i,VZr(w,d,ZZr(k,AZr,r))],l)}:function(r,t){return i0r(a,e,[4,i,VZr(w,d,ZZr(k,r,t))],l)};var h=b[1];return function(r){return i0r(a,e,[4,i,VZr(w,d,ZZr(k,h,r))],l)}}var m=D[1];if("number"==typeof b)return 0===b?function(r,t){return i0r(a,e,[4,i,VZr(m,r,ZZr(k,AZr,t))],l)}:function(r,t,n){return i0r(a,e,[4,i,VZr(m,r,ZZr(k,t,n))],l)};var F=b[1];return function(r,t){return i0r(a,e,[4,i,VZr(m,r,ZZr(k,F,t))],l)};case 9:return t0r(a,e,i,f[2],f[1],NQr);case 10:i=[7,i],f=f[1];continue;case 11:i=[2,i,f[1]],f=f[2];continue;case 12:i=[3,i,f[1]],f=f[2];continue;case 13:var y=f[3],E=f[2],_=BZr(16);LZr(_,E);var g=NZr(_);return function(r){return i0r(a,e,[4,i,g],y)};case 14:var C=f[3],S=f[2];return function(r){var t=qZr(r[1],SQr(RZr(S)));if("number"==typeof t[2])return i0r(a,e,i,xQr(t[1],C));throw UZr};case 15:var x=f[1];return function(r,t){return i0r(a,e,[6,i,function(e){return Ld(r,e,t)}],x)};case 16:var T=f[1];return function(r){return i0r(a,e,[6,i,r],T)};case 17:i=[0,i,f[1]],f=f[2];continue;case 18:var A=f[1];if(0===A[0]){var B=f[2],I=A[1][1];a=function(r,t,e){return function(n,u){return i0r(t,n,[1,r,[0,u]],e)}}(i,a,B),i=0,f=I;continue}var O=f[2],P=A[1][1];a=function(r,t,e){return function(n,u){return i0r(t,n,[1,r,[1,u]],e)}}(i,a,O),i=0,f=P;continue;case 19:throw[0,Wd,Ah];case 20:var N=f[3],L=[8,i,Bh];return function(r){return i0r(a,e,L,N)};case 21:var R=f[2];return function(r){return i0r(a,e,[4,i,yp(Th,r)],R)};case 22:var M=f[1];return function(r){return i0r(a,e,[5,i,r],M)};case 23:var j=f[2],U=f[1];if("number"==typeof U)switch(U){case 0:case 1:return r<50?u0r(r+1|0,a,e,i,j):Bd(u0r,[0,a,e,i,j]);case 2:throw[0,Wd,Ih];default:return r<50?u0r(r+1|0,a,e,i,j):Bd(u0r,[0,a,e,i,j])}else switch(U[0]){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:return r<50?u0r(r+1|0,a,e,i,j):Bd(u0r,[0,a,e,i,j]);case 9:var X=U[2];return r<50?n0r(r+1|0,a,e,i,X,j):Bd(n0r,[0,a,e,i,X,j]);case 10:default:return r<50?u0r(r+1|0,a,e,i,j):Bd(u0r,[0,a,e,i,j])}default:var J=f[3],G=f[1],q=Nd(f[2],0);return r<50?a0r(r+1|0,a,e,i,J,G,q):Bd(a0r,[0,a,e,i,J,G,q])}}}function n0r(r,t,e,n,u,a){if("number"==typeof u)return r<50?u0r(r+1|0,t,e,n,a):Bd(u0r,[0,t,e,n,a]);switch(u[0]){case 0:var i=u[1];return function(r){return f0r(t,e,n,i,a)};case 1:var f=u[1];return function(r){return f0r(t,e,n,f,a)};case 2:var c=u[1];return function(r){return f0r(t,e,n,c,a)};case 3:var s=u[1];return function(r){return f0r(t,e,n,s,a)};case 4:var o=u[1];return function(r){return f0r(t,e,n,o,a)};case 5:var v=u[1];return function(r){return f0r(t,e,n,v,a)};case 6:var l=u[1];return function(r){return f0r(t,e,n,l,a)};case 7:var b=u[1];return function(r){return f0r(t,e,n,b,a)};case 8:var D=u[2];return function(r){return f0r(t,e,n,D,a)};case 9:var k=u[3],p=u[2],d=jZr(RZr(u[1]),p);return function(r){return f0r(t,e,n,function r(t,e){if("number"==typeof t)return e;switch(t[0]){case 0:return[0,r(t[1],e)];case 1:return[1,r(t[1],e)];case 2:return[2,r(t[1],e)];case 3:return[3,r(t[1],e)];case 4:return[4,r(t[1],e)];case 5:return[5,r(t[1],e)];case 6:return[6,r(t[1],e)];case 7:return[7,r(t[1],e)];case 8:return[8,t[1],r(t[2],e)];case 9:var n=t[2];return[9,t[1],n,r(t[3],e)];case 10:return[10,r(t[1],e)];case 11:return[11,r(t[1],e)];case 12:return[12,r(t[1],e)];case 13:return[13,r(t[1],e)];default:return[14,r(t[1],e)]}}(d,k),a)};case 10:var w=u[1];return function(r,u){return f0r(t,e,n,w,a)};case 11:var h=u[1];return function(r){return f0r(t,e,n,h,a)};case 12:var m=u[1];return function(r){return f0r(t,e,n,m,a)};case 13:throw[0,Wd,Oh];default:throw[0,Wd,Ph]}}function u0r(r,t,e,n,u){var a=[8,n,Nh];return r<50?e0r(r+1|0,t,e,a,u):Bd(e0r,[0,t,e,a,u])}function a0r(r,t,e,n,u,a,i){if(a){var f=a[1];return function(r){return function(r,t,e,n,u,a){return Ad(a0r(0,r,t,e,n,u,a))}(t,e,n,u,f,Nd(i,r))}}var c=[4,n,i];return r<50?e0r(r+1|0,t,e,c,u):Bd(e0r,[0,t,e,c,u])}function i0r(r,t,e,n){return Ad(e0r(0,r,t,e,n))}function f0r(r,t,e,n,u){return Ad(n0r(0,r,t,e,n,u))}function c0r(r,t){for(var e=t;;){if("number"==typeof e)return 0;switch(e[0]){case 0:var n=e[2],u=e[1];if("number"==typeof n)switch(n){case 0:var a=$m;break;case 1:a=Km;break;case 2:a=Qm;break;case 3:a=Zm;break;case 4:a=rF;break;case 5:a=tF;break;default:a=eF}else switch(n[0]){case 0:case 1:a=n[1];break;default:a=PQr(nF,vZr(1,n[1]))}return c0r(r,u),TZr(r,a);case 1:var i=e[2],f=e[1];if(0===i[0]){var c=i[1];c0r(r,f),TZr(r,Lh);e=c;continue}var s=i[1];c0r(r,f),TZr(r,Rh);e=s;continue;case 6:var o=e[2];return c0r(r,e[1]),TZr(r,Nd(o,0));case 7:e=e[1];continue;case 8:var v=e[2];return c0r(r,e[1]),AQr(v);case 2:case 4:var l=e[2];return c0r(r,e[1]),TZr(r,l);default:var b=e[2];return c0r(r,e[1]),xZr(r,b)}}}function s0r(r){if(gd(r,jh))return Uh;var t=jp(r);function e(t){var e=Mh[1],n=gZr(gn);return Nd(i0r((function(r,t){return c0r(n,t),TQr(CZr(n))}),0,0,e),r)}function n(e){for(var n=e;;){if(n===t)return n;var u=Cd(r,n);if(9!==u&&32!==u)return n;n=n+1|0}}var u=n(0),a=function(e,n){for(var u=n;;){if(u===t)return u;if(25<(Cd(r,u)+Ka|0)>>>0)return u;u=u+1|0}}(0,u),i=lZr(r,u,a-u|0),f=n(a),c=function(e,n){for(var u=n;;){if(u===t)return u;var a=Cd(r,u);if(!(48<=a?58<=a?0:1:45===a?1:0))return u;u=u+1|0}}(0,f);if(f===c)var s=0;else try{s=Hp(lZr(r,f,c-f|0))}catch(r){if((r=Pd(r))[1]!==Jd)throw r;s=e()}if(n(c)!==t&&e(),Sd(i,Xh))if(Sd(i,Jh))if(Sd(i,Gh))if(Sd(i,qh))if(Sd(i,zh))if(Sd(i,Vh))var o=e(),v=1;else o=1,v=1;else o=2,v=1;else o=3,v=1;else o=0,v=1;else v=0;else v=0;if(!v)o=4;return[0,s,o]}function o0r(r){return i0r((function(r,t){var e=gZr(64);return c0r(e,t),CZr(e)}),0,0,r[1])}var v0r=[0,0];function l0r(r,t){var e=r[t+1];if(1-("number"==typeof e?1:0)){if(yd(e)===Qt)return Nd(o0r(dF),e);if(yd(e)===Qa)for(var n=Fp(fw,e),u=0,a=jp(n);;){if(a<=u)return PQr(n,cw);var i=Cd(n,u);if(!(48<=i?58<=i?0:1:45===i?1:0))return n;u=u+1|0}return wF}return Nd(o0r(pF),e)}function b0r(r){var t=r.length-1;if(2<t>>>0){var e=function r(t,e){if(t.length-1<=e)return aF;var n=r(t,e+1|0),u=l0r(t,e);return Ld(o0r(iF),u,n)}(r,2),n=l0r(r,1);return Ld(o0r(lF),n,e)}switch(t){case 0:return bF;case 1:return DF;default:var u=l0r(r,1);return Nd(o0r(kF),u)}}function D0r(r){return v0r[1]=[0,r,v0r[1]],0}try{var k0r=Td(mF)}catch(rp){if((rp=Pd(rp))!==qd)throw rp;try{var p0r=Td(FF)}catch(rp){if((rp=Pd(rp))!==qd)throw rp;p0r=yF}k0r=p0r}var d0r=function(r,t){return bZr(r,0,t)}(k0r,82),w0r=[Tc,function(r){for(var t=[0,(new Date).getTime()^4294967295*Math.random()],e=[0,rd(55,0),0],n=0==t.length-1?[0,0]:t,u=n.length-1,a=0;;){cp(e[1],a)[a+1]=a;var i=a+1|0;if(54===a){var f=[0,hF],c=54+BQr(55,u)|0;if(!(c<0))for(var s=0;;){var o=s%55|0,v=hd(s,u),l=cp(n,v)[v+1],b=PQr(f[1],rp(bo+l));f[1]=ed(b,0,jp(b));var D=f[1],k=Cd(D,3)<<24,p=Cd(D,2)<<16,d=Cd(D,1)<<8,w=((Cd(D,0)+d|0)+p|0)+k|0,h=(cp(e[1],o)[o+1]^w)&Ov;cp(e[1],o)[o+1]=h;var m=s+1|0;if(c===s)break;s=m}return e[2]=0,e}a=i}}];function h0r(r,t){var e=[0,r,0],n=t[1];return n?(t[1]=e,n[2]=e,0):(t[1]=e,t[2]=e,0)}var m0r=[bc,AF,_p()];function F0r(r){var t=r[2];if(t){var e=t[2],n=t[1];return r[2]=e,0===e&&(r[1]=0),n}throw m0r}function y0r(r,t){return r[13]=r[13]+t[3]|0,h0r(t,r[28])}var E0r=1000000010;function _0r(r,t){return Rd(r[17],t,0,jp(t))}function g0r(r){return Nd(r[19],0)}function C0r(r,t,e){g0r(r),r[11]=1;var n=(r[6]-e|0)+t|0,u=r[8],a=function(r,t){return+(lp(r,t,!1)<=0)}(u,n)?u:n;return r[10]=a,r[9]=r[6]-r[10]|0,Nd(r[21],r[10])}function S0r(r,t){return C0r(r,0,t)}function x0r(r,t){return r[9]=r[9]-t|0,Nd(r[20],t)}function T0r(r,t,e){if("number"==typeof e)switch(e){case 0:var n=r[3];if(n){var u=n[1][1];return u[1]=function r(t,e){if(e){var n=e[1],u=e[2];return function(r,t){return+(lp(r,t,!1)<0)}(t,n)?[0,t,e]:[0,n,r(t,u)]}return[0,t,0]}(r[6]-r[9]|0,u[1]),0}return 0;case 1:var a=r[2];return a?(r[2]=a[2],0):0;case 2:var i=r[3];return i?(r[3]=i[2],0):0;case 3:var f=r[2];return f?S0r(r,f[1][2]):g0r(r);case 4:var c=r[10]!==(r[6]-r[9]|0)?1:0;return c?function(r){var t=F0r(r[28]),e=t[1];return r[12]=r[12]-t[3]|0,r[9]=r[9]+e|0,0}(r):c;default:var s=r[5];if(s){var o=s[2];return _0r(r,Nd(r[25],s[1])),r[5]=o,0}return 0}else switch(e[0]){case 0:var v=e[1];return r[9]=r[9]-t|0,_0r(r,v),r[11]=0,0;case 1:var l=e[2],b=e[1],D=r[2];if(D){var k=D[1],p=k[2];switch(k[1]){case 0:return x0r(r,b);case 1:case 2:return C0r(r,l,p);case 3:return r[9]<t?C0r(r,l,p):x0r(r,b);case 4:return r[11]?x0r(r,b):r[9]<t?C0r(r,l,p):((r[6]-p|0)+l|0)<r[10]?C0r(r,l,p):x0r(r,b);default:return x0r(r,b)}}return 0;case 2:var d=r[6]-r[9]|0,w=r[3],h=e[2],m=e[1];if(w){var F=w[1][1],y=F[1];if(y){var E=y[1];try{var _=function(r,t){for(var e=t;;){if(!e)throw qd;var n=e[1],u=e[2];if(Sp(n,r))return n;e=u}}(d,F[1])}catch(r){if((r=Pd(r))!==qd)throw r;_=E}var g=_}else g=d;var C=g-d|0;return 0<=C?x0r(r,C+m|0):C0r(r,g+h|0,r[6])}return 0;case 3:var S=e[2],x=e[1];r[8]<(r[6]-r[9]|0)&&function(r){var t=r[2];if(t){var e=t[1],n=e[2],u=e[1],a=r[9]<n?1:0;if(a){if(0!==u)return 5<=u?0:S0r(r,n);var i=0}else i=a;return i}g0r(r)}(r);var T=r[9]-x|0,A=1===S?1:r[9]<t?S:5;return r[2]=[0,[0,A,T],r[2]],0;case 4:return r[3]=[0,e[1],r[3]],0;default:var B=e[1];return _0r(r,Nd(r[24],B)),r[5]=[0,B,r[5]],0}}function A0r(r){try{return function(r){for(;;){var t=r[28][2];if(t){var e=t[1],n=e[1],u=n<0?1:0,a=e[3],i=e[2],f=1-(u?(r[13]-r[12]|0)<r[9]?1:0:u);if(f){F0r(r[28]),T0r(r,0<=n?n:E0r,i),r[12]=a+r[12]|0;continue}return f}throw m0r}}(r)}catch(r){if((r=Pd(r))===m0r)return 0;throw r}}function B0r(r,t){return y0r(r,t),A0r(r)}function I0r(r,t,e){return B0r(r,[0,t,[0,e],t])}var O0r=[0,[0,-1,[0,-1,BF,0]],0];function P0r(r){return r[1]=O0r,0}function N0r(r,t){var e=r[1];if(e){var n=e[1],u=n[2],a=u[1],i=e[2],f=u[2];if(n[1]<r[12])return P0r(r);if("number"!=typeof f)switch(f[0]){case 3:var c=1-t;return c?(u[1]=r[13]+a|0,r[1]=i,0):c;case 1:case 2:return t?(u[1]=r[13]+a|0,r[1]=i,0):t}return 0}return 0}function L0r(r,t,e){return y0r(r,e),t&&N0r(r,1),r[1]=[0,[0,r[13],e],r[1]],0}function R0r(r,t,e){if(r[14]=r[14]+1|0,r[14]<r[15])return L0r(r,0,[0,0|-r[13],[3,t,e],0]);var n=r[14]===r[15]?1:0;if(n){var u=r[16];return I0r(r,jp(u),u)}return n}function M0r(r,t){var e=1<r[14]?1:0;if(e){r[14]<r[15]&&(y0r(r,[0,0,1,0]),N0r(r,1),N0r(r,0)),r[14]=r[14]-1|0;var n=0}else n=e;return n}function j0r(r,t){r[23]&&y0r(r,[0,0,5,0]);var e=r[22];if(e){var n=r[4];if(n){var u=n[2];return Nd(r[27],n[1]),r[4]=u,0}var a=0}else a=e;return a}function U0r(r,t){for(ZQr((function(t){return j0r(r)}),r[4]);;){if(!(1<r[14])){r[13]=E0r,A0r(r),t&&g0r(r),r[12]=1,r[13]=1;var e=r[28];return e[1]=0,e[2]=0,P0r(r),r[2]=0,r[3]=0,r[4]=0,r[5]=0,r[10]=0,r[14]=0,r[9]=r[6],R0r(r,0,3)}M0r(r)}}function X0r(r,t,e){var n=r[14]<r[15]?1:0;return n?I0r(r,t,e):n}function J0r(r,t,e){return X0r(r,t,e)}function G0r(r,t){return J0r(r,jp(t),t)}function q0r(r,t){return J0r(r,1,vZr(1,t))}function z0r(r,t){return U0r(r,0),Nd(r[18],0)}var V0r=vZr(80,32);function W0r(r,t){for(var e=t;;){var n=0<e?1:0;if(n){if(80<e){Rd(r[17],V0r,0,80);e=e-80|0;continue}return Rd(r[17],V0r,0,e)}return n}}function Y0r(r){return PQr(xF,PQr(r,SF))}function H0r(r){return PQr(CF,PQr(r,gF))}function $0r(r){return 0}function K0r(r){return 0}function Q0r(r,t){var e=[0,0,0],n=[0,-1,EF,0];h0r(n,e);var u=[0,[0,[0,1,n],O0r],0,0,0,0,78,10,68,78,0,1,1,1,1,OQr,_F,r,t,function(r){return 0},function(r){return 0},function(r){return 0},0,0,Y0r,H0r,$0r,K0r,e];return u[19]=function(r){return Rd(u[17],TF,0,1)},u[20]=function(r){return W0r(u,r)},u[21]=function(r){return W0r(u,r)},u}function Z0r(r){return Q0r((function(t,e,n){return 0<=e&&0<=n&&!((jp(t)-n|0)<e)?dd(r,t,e,n):AQr(iw)}),(function(t){return id(r)}))}function r1r(r){return Q0r((function(t,e,n){var u=e<0?1:0;if(u)var a=u;else a=(n<0?1:0)||((jp(t)-n|0)<e?1:0);a&&AQr(Ww);var i=r[2]+n|0;return r[3]<i&&SZr(r,n),oZr(t,e,r[1],r[2],n),r[2]=i,0}),(function(r){return 0}))}var t1r=Eb;function e1r(r){return gZr(t1r)}var n1r=e1r(),u1r=Z0r(RQr);function a1r(r,t){var e=gZr(16),n=r1r(e);Ld(r,n,t),z0r(n);var u=e[2];if(2<=u){var a=u-2|0;return 0<=a&&!((e[2]-a|0)<1)?cZr(e[1],1,a):AQr(Hw)}return CZr(e)}function i1r(r,t){if("number"==typeof t)return 0;switch(t[0]){case 0:var e=t[2];if(i1r(r,t[1]),"number"==typeof e)switch(e){case 0:return M0r(r);case 1:return j0r(r);case 2:return z0r(r);case 3:var n=r[14]<r[15]?1:0;return n?B0r(r,[0,0,3,0]):n;case 4:return U0r(r,1),Nd(r[18],0);case 5:return q0r(r,64);default:return q0r(r,37)}else switch(e[0]){case 0:var u=e[2],a=r[14]<r[15]?1:0,i=e[3];return a?L0r(r,1,[0,0|-r[13],[1,u,i],u]):a;case 1:return 0;default:var f=e[1];return q0r(r,64),q0r(r,f)}case 1:var c=t[2],s=t[1];if(0===c[0]){var o=c[1];i1r(r,s);var v=a1r(i1r,o);r[22]&&(r[4]=[0,v,r[4]],Nd(r[26],v));var l=r[23];return l?y0r(r,[0,0,[5,v],0]):l}var b=c[1];i1r(r,s);var D=s0r(a1r(i1r,b));return R0r(r,D[1],D[2]);case 2:var k=t[1];if("number"==typeof k)var p=1;else if(0===k[0]){var d=k[2];if("number"==typeof d)var w=1;else if(1===d[0]){var h=t[2],m=d[2],F=k[1],y=0;p=0,w=0}else w=1;if(w)p=1}else p=1;if(p){var E=t[2],_=k;y=2}break;case 3:var g=t[1];if("number"==typeof g)var C=1;else if(0===g[0]){var S=g[2];if("number"==typeof S)var x=1;else if(1===S[0]){var T=t[2],A=S[2],B=g[1];y=1,C=0,x=0}else x=1;if(x)C=1}else C=1;if(C){var I=t[2],O=g;y=3}break;case 4:var P=t[1];if("number"==typeof P)var N=1;else if(0===P[0]){var L=P[2];if("number"==typeof L)var R=1;else if(1===L[0])h=t[2],m=L[2],F=P[1],y=0,N=0,R=0;else R=1;if(R)N=1}else N=1;if(N)E=t[2],_=P,y=2;break;case 5:var M=t[1];if("number"==typeof M)var j=1;else if(0===M[0]){var U=M[2];if("number"==typeof U)var X=1;else if(1===U[0])T=t[2],A=U[2],B=M[1],y=1,j=0,X=0;else X=1;if(X)j=1}else j=1;if(j)I=t[2],O=M,y=3;break;case 6:var J=t[2];return i1r(r,t[1]),Nd(J,r);case 7:return i1r(r,t[1]),z0r(r);default:var G=t[2];return i1r(r,t[1]),AQr(G)}switch(y){case 0:return i1r(r,F),X0r(r,m,h);case 1:return i1r(r,B),X0r(r,A,vZr(1,T));case 2:return i1r(r,_),G0r(r,E);default:return i1r(r,O),q0r(r,I)}}function f1r(r){return function(t){var e=t[1];return i0r((function(r,t){return i1r(r,t),0}),r,0,e)}}function c1r(r){var t=r[1],e=e1r();return i0r((function(r,t){i1r(r,t),U0r(r,0);var n=CZr(e);return e[2]=0,e[1]=e[4],e[3]=nd(e[1]),n}),r1r(e),0,t)}function s1r(r,t){return function(r,t){return _d[dp(r)]=t,0}(r,yd(t)===bc?t:t[1])}Z0r(MQr),r1r(n1r),function(r){var t=[0,0],e=jQr[1];jQr[1]=function(n){return 1-t[1]&&(t[1]=1,Nd(r,0)),Nd(e,0)}}((function(r){return z0r(u1r)}));var o1r=2;function v1r(r){var t=[0,0],e=jp(r)-1|0;if(!(e<0))for(var n=0;;){var u=Cd(r,n);t[1]=(yo*t[1]|0)+u|0;var a=n+1|0;if(e===n)break;n=a}return t[1]=t[1]&Xs,Ov<t[1]?t[1]+2147483648|0:t[1]}var l1r=FZr([0,vp]),b1r=FZr([0,vp]),D1r=FZr([0,op]),k1r=Fd(0,0),p1r=[0,0];function d1r(r){p1r[1]++;var t=r.length-1,e=rd(2+(2*t|0)|0,k1r);cp(e,0)[1]=t;var n=((32*function r(t){return 2<t?2*r((t+1|0)/2|0)|0:t}(t)|0)/8|0)-1|0;cp(e,1)[2]=n;var u=t-1|0;if(!(u<0))for(var a=0;;){var i=3+(2*a|0)|0,f=cp(r,a)[a+1];cp(e,i)[i+1]=f;var c=a+1|0;if(u===a)break;a=c}return[0,o1r,e,b1r[1],D1r[1],0,0,l1r[1],0]}function w1r(r,t){var e=r[2].length-1,n=e<t?1:0;if(n){var u=rd(t,k1r);pZr(r[2],0,u,0,e),r[2]=u;var a=0}else a=n;return a}var h1r=[0,0],m1r=[0,0];function F1r(r){var t=r[2].length-1;return w1r(r,t+1|0),t}function y1r(r,t){try{var e;return Ld(b1r[27],t,r[3])}catch(e){if((e=Pd(e))===qd){var n=F1r(r);return r[3]=Rd(b1r[4],t,n,r[3]),r[4]=Rd(D1r[4],n,1,r[4]),n}throw e}}function E1r(r,t){return wZr((function(t){return y1r(r,t)}),t)}function _1r(r,t){try{var e;return function(r,t){for(var e=t;;){if(!e)throw qd;var n=e[1],u=e[2],a=n[2];if(0===bp(n[1],r))return a;e=u}}(t,r[6])}catch(e){if((e=Pd(e))===qd)return cp(r[2],t)[t+1];throw e}}function g1r(r){if(0===r)return 0;for(var t=r.length-1-1|0,e=0;;){if(!(0<=t))return e;var n=[0,r[t+1],e];t=t-1|0,e=n}}function C1r(r){return kp(r,0)?[0]:r}function S1r(r,t,e,n,u,a){var i=u[2],f=u[4],c=g1r(t),s=g1r(e),o=g1r(n),v=KQr((function(t){return y1r(r,t)}),s),l=KQr((function(t){return y1r(r,t)}),o);r[5]=[0,[0,r[3],r[4],r[6],r[7],v,c],r[5]];var b=l1r[1],D=r[7];r[7]=Rd(l1r[13],(function(r,t,e){return nZr(r,c)?Rd(l1r[4],r,t,e):e}),D,b);var k=[0,b1r[1]],p=[0,D1r[1]];eZr((function(t,e){k[1]=Rd(b1r[4],t,e,k[1]);var n=p[1];try{var u=Ld(D1r[27],e,r[4])}catch(r){if((r=Pd(r))!==qd)throw r;u=1}return p[1]=Rd(D1r[4],e,u,n),0}),o,l),eZr((function(r,t){return k[1]=Rd(b1r[4],r,t,k[1]),p[1]=Rd(D1r[4],t,0,p[1]),0}),s,v),r[3]=k[1],r[4]=p[1];var d=r[6];r[6]=tZr((function(r,t){return nZr(r[1],v)?t:[0,r,t]}),d,0);var w=a?Ld(i,r,f):Nd(i,r),h=WQr(r[5]),m=h[6],F=h[5],y=h[4],E=h[3],_=h[2],g=h[1];r[5]=YQr(r[5]),r[7]=rZr((function(t,e){var n=Ld(l1r[27],e,r[7]);return Rd(l1r[4],e,n,t)}),y,m),r[3]=g,r[4]=_;var C=r[6];r[6]=tZr((function(r,t){return nZr(r[1],F)?t:[0,r,t]}),C,E);var S=[0,wZr((function(t){return _1r(r,y1r(r,t))}),C1r(n)),0];return function(r){for(var t=[0];0!==r;){for(var e=r[1],n=1;n<e.length;n++)t.push(e[n]);r=r[2]}return t}([0,[0,w],[0,wZr((function(t){return function(r,t){try{return Ld(l1r[27],t,r[7])}catch(t){if((t=Pd(t))===qd)throw[0,Wd,IF];throw t}}(r,t)}),C1r(t)),S]])}function x1r(r,t){if(0===r)var e=d1r([0]);else{var n=d1r(wZr(v1r,r)),u=r.length-1-1|0;if(!(u<0))for(var a=0;;){var i=2+(2*a|0)|0;n[3]=Rd(b1r[4],r[a+1],i,n[3]),n[4]=Rd(D1r[4],i,1,n[4]);var f=a+1|0;if(u===a)break;a=f}e=n}var c=Nd(t,e);return h1r[1]=(h1r[1]+e[1]|0)-1|0,e[8]=$Qr(e[8]),w1r(e,3+((16*cp(e[2],1)[2]|0)/32|0)|0),[0,Nd(c,0),t,c,0]}function T1r(r,t){if(r)return r;var e=Fd(bc,t[1]);return e[1]=t[2],function(r){return r[2]=Ep++,r}(e)}function A1r(r,t,e){if(r)return t;var n=e[8];if(0!==n)for(var u=n;u;){var a=u[2];Nd(u[1],t);u=a}return t}function B1r(r){var t=F1r(r);if(0==(t%2|0))var e=0;else if((2+((16*cp(r[2],1)[2]|0)/32|0)|0)<t)e=0;else{var n=F1r(r);e=1}if(!e)n=t;return cp(r[2],n)[n+1]=0,n}function I1r(r,t){for(var e=[0,0],n=t.length-1;;){if(!(e[1]<n))return 0;var u=e[1],a=cp(t,u)[u+1],i=function(r){e[1]++;var n=e[1];return cp(t,n)[n+1]},f=i();if("number"==typeof f)switch(f){case 0:var c=function(r){return function(t){return r}}(i());break;case 1:c=function(r){return function(t){return t[r+1]}}(i());break;case 2:c=function(r,t){return function(e){return e[r+1][t+1]}}(i(),i());break;case 3:c=function(r){return function(t){return Nd(t[1][r+1],t)}}(i());break;case 4:c=function(r){return function(t,e){return t[r+1]=e,0}}(i());break;case 5:c=function(r,t){return function(e){return Nd(r,t)}}(i(),i());break;case 6:c=function(r,t){return function(e){return Nd(r,e[t+1])}}(i(),i());break;case 7:c=function(r,t,e){return function(n){return Nd(r,n[t+1][e+1])}}(i(),i(),i());break;case 8:c=function(r,t){return function(e){return Nd(r,Nd(e[1][t+1],e))}}(i(),i());break;case 9:c=function(r,t,e){return function(n){return Ld(r,t,e)}}(i(),i(),i());break;case 10:c=function(r,t,e){return function(n){return Ld(r,t,n[e+1])}}(i(),i(),i());break;case 11:c=function(r,t,e,n){return function(u){return Ld(r,t,u[e+1][n+1])}}(i(),i(),i(),i());break;case 12:c=function(r,t,e){return function(n){return Ld(r,t,Nd(n[1][e+1],n))}}(i(),i(),i());break;case 13:c=function(r,t,e){return function(n){return Ld(r,n[t+1],e)}}(i(),i(),i());break;case 14:c=function(r,t,e,n){return function(u){return Ld(r,u[t+1][e+1],n)}}(i(),i(),i(),i());break;case 15:c=function(r,t,e){return function(n){return Ld(r,Nd(n[1][t+1],n),e)}}(i(),i(),i());break;case 16:c=function(r,t){return function(e){return Ld(e[1][r+1],e,t)}}(i(),i());break;case 17:c=function(r,t){return function(e){return Ld(e[1][r+1],e,e[t+1])}}(i(),i());break;case 18:c=function(r,t,e){return function(n){return Ld(n[1][r+1],n,n[t+1][e+1])}}(i(),i(),i());break;case 19:c=function(r,t){return function(e){var n=Nd(e[1][t+1],e);return Ld(e[1][r+1],e,n)}}(i(),i());break;case 20:c=function(r,t,e){return function(n){return Ld(Cp(t,r,0),t,e)}}(i(),i(),B1r(r));break;case 21:c=function(r,t,e){return function(n){var u=n[t+1];return Ld(Cp(u,r,0),u,e)}}(i(),i(),B1r(r));break;case 22:c=function(r,t,e,n){return function(u){var a=u[t+1][e+1];return Ld(Cp(a,r,0),a,n)}}(i(),i(),i(),B1r(r));break;default:c=function(r,t,e){return function(n){var u=Nd(n[1][t+1],n);return Ld(Cp(u,r,0),u,e)}}(i(),i(),B1r(r))}else c=f;m1r[1]++,Ld(D1r[27],a,r[4])?(w1r(r,a+1|0),cp(r[2],a)[a+1]=c):r[6]=[0,[0,a,c],r[6]],e[1]++}}var O1r=function r(t,e,n){if("number"==typeof t)switch(t){case 0:e.fun=n;break;case 1:default:Xk(e,n)}else switch(t[0]){case 0:for(var u=1;u<t[1].length;u++)r(t[1][u],e[u],n[u])}return 0},P1r=function(r,t){function e(t){jk(Uk.Undefined_recursive_module,r)}var n=[];return function r(t,n,u){if("number"==typeof t)switch(t){case 0:n[u]={fun:e};break;case 1:n[u]=[Tc,e];break;default:n[u]=[]}else switch(t[0]){case 0:n[u]=[0];for(var a=1;a<t[1].length;a++)r(t[1][a],n[u],a);break;default:n[u]=t[1]}}(t,n,0),n[0]};try{Td(OF)}catch(rp){if((rp=Pd(rp))!==qd)throw rp}try{Td(PF)}catch(rp){if((rp=Pd(rp))!==qd)throw rp}Sd(GQr,NF)&&Sd(GQr,LF);var N1r=[bc,Zy,_p()];s1r(eE,[0,N1r,0,tE,rE]),D0r((function(r){if(r[1]===N1r){var t=r[2],e=r[4],n=r[3];if("number"==typeof t){var u=t;if(34<=u)switch(u){case 34:var a=dy;break;case 35:a=wy;break;case 36:a=hy;break;case 37:a=my;break;case 38:a=Fy;break;case 39:a=yy;break;case 40:a=Ey;break;case 41:a=_y;break;case 42:a=gy;break;case 43:a=Cy;break;case 44:a=Sy;break;case 45:a=xy;break;case 46:a=Ty;break;case 47:a=Ay;break;case 48:a=By;break;case 49:a=Iy;break;case 50:a=Oy;break;case 51:a=Py;break;case 52:a=Ny;break;case 53:a=Ly;break;case 54:a=Ry;break;case 55:a=My;break;case 56:a=jy;break;case 57:a=Uy;break;case 58:a=Xy;break;case 59:a=Jy;break;case 60:a=Gy;break;case 61:a=qy;break;case 62:a=zy;break;case 63:a=Vy;break;case 64:a=Wy;break;case 65:a=Yy;break;case 66:a=Hy;break;default:a=$y}else switch(u){case 0:a=RF;break;case 1:a=MF;break;case 2:a=jF;break;case 3:a=UF;break;case 4:a=XF;break;case 5:a=JF;break;case 6:a=GF;break;case 7:a=qF;break;case 8:a=zF;break;case 9:a=VF;break;case 10:a=WF;break;case 11:a=YF;break;case 12:a=HF;break;case 13:a=$F;break;case 14:a=KF;break;case 15:a=QF;break;case 16:a=ZF;break;case 17:a=ry;break;case 18:a=ty;break;case 19:a=ey;break;case 20:a=ny;break;case 21:a=uy;break;case 22:a=ay;break;case 23:a=iy;break;case 24:a=fy;break;case 25:a=cy;break;case 26:a=sy;break;case 27:a=oy;break;case 28:a=vy;break;case 29:a=ly;break;case 30:a=by;break;case 31:a=Dy;break;case 32:a=ky;break;default:a=py}}else{var i=t[1];a=Nd(o0r(Ky),i)}return[0,Rd(o0r(Qy),a,n,e)]}return 0})),function(r,t){for(var e=r?r[1]:d0r,n=16;;){if(t<=n||qQr<(2*n|0)){if(e){var u=yd(w0r),a=Mv===u?w0r[1]:Tc===u?_Zr(w0r):w0r;a[2]=(a[2]+1|0)%55|0;var i=a[2],f=cp(a[1],i)[i+1],c=(a[2]+24|0)%55|0,s=(cp(a[1],c)[c+1]+(f^31&(f>>>25|0))|0)&Ov,o=a[2];cp(a[1],o)[o+1]=s;var v=s}else v=0;return[0,0,rd(n,0),v,n]}n=2*n|0}}(0,7);var L1r=[bc,aE,_p()];function R1r(r){throw L1r}var M1r=[];Xk(M1r,[0,0,function(r){return E1r(r,Kd),function(t,e){return T1r(e,r)}},0,0]),x1r(0,(function(r){var t=E1r(r,Kd),e=t[1],n=t[2],u=S1r(r,0,Kd,0,M1r,1)[1];return I1r(r,[0,e,function(r){return 0},n,function(r){return function(r,t){return r+t|0}}]),function(t,e){var n=T1r(e,r);return Nd(u,n),A1r(e,n,r)}})),x1r(0,(function(r){var t=E1r(r,Kd),e=t[1],n=t[2],u=S1r(r,0,Kd,0,M1r,1)[1];return I1r(r,[0,e,function(r){return 0},n,function(r,t,e){return 0}]),function(t,e){var n=T1r(e,r);return Nd(u,n),A1r(e,n,r)}})),x1r(0,(function(r){var t=E1r(r,$d),e=t[7],n=t[1],u=t[2],a=t[3],i=t[4],f=t[5],c=t[6],s=t[8],o=t[9],v=t[10],l=t[11],b=t[12],D=t[13],k=t[14],p=t[15],d=t[16];return I1r(r,[0,d,function(r,t,e,n){var u=n.length-1-1|0;if(!(u<0))for(var a=0;;){Ld(t,e,n[a+1]);var i=a+1|0;if(u===a)break;a=i}return 0},p,function(r,t,e){return 0},k,function(r,t,e){return 0},D,function(r,t,e){return 0},b,function(r,t,e){return 0},l,function(r,t,e){return 0},v,function(r,t,e){return 0},o,function(r,t,e){return 0},s,function(r,t,e,n){var u=yd(n);return Ld(t,e,Mv===u?n[1]:Tc===u?_Zr(n):n)},e,function(r,t,n,u){if(u){var a=u[2];return Ld(t,n,u[1]),Md(r[1][e+1],r,t,n,a)}return 0},c,function(r,t,e){return 0},f,function(r,t,e,n){return n?Ld(t,e,n[1]):0},i,function(r,t,e,n){return Ld(t,e,n[1])},a,function(r,t,e,n,u){return 0===u[0]?Ld(t,n,u[1]):Ld(e,n,u[1])},u,function(r,t,e){return 0},n,function(r,t,e){return 0}]),function(t,e){return T1r(e,r)}})),x1r(0,(function(r){var t=E1r(r,$d),e=t[7],n=t[1],u=t[2],a=t[3],i=t[4],f=t[5],c=t[6],s=t[8],o=t[9],v=t[10],l=t[11],b=t[12],D=t[13],k=t[14],p=t[15],d=t[16];return I1r(r,[0,d,function(r,t,e,n){return wZr(Nd(t,e),n)},p,function(r,t,e){return e},k,function(r,t,e){return e},D,function(r,t,e){return e},b,function(r,t,e){return e},l,function(r,t,e){return e},v,function(r,t,e){return e},o,function(r,t,e){return e},s,function(r,t,e,n){return[Tc,function(r){var u=yd(n),a=Mv===u?n[1]:Tc===u?_Zr(n):n;return Ld(t,e,a)}]},e,function(r,t,n,u){if(u){var a=u[2];return[0,Ld(t,n,u[1]),Md(r[1][e+1],r,t,n,a)]}return 0},c,function(r,t,e){return e},f,function(r,t,e,n){return n?[0,Ld(t,e,n[1])]:0},i,function(r,t,e,n){return[0,Ld(t,e,n[1])]},a,function(r,t,e,n,u){return 0===u[0]?[0,Ld(t,n,u[1])]:[1,Ld(e,n,u[1])]},u,function(r,t,e){return e},n,function(r,t,e){return e}]),function(t,e){return T1r(e,r)}})),x1r(0,(function(r){var t=E1r(r,$d),e=t[7],n=t[1],u=t[2],a=t[3],i=t[4],f=t[5],c=t[6],s=t[8],o=t[9],v=t[10],l=t[11],b=t[12],D=t[13],k=t[14],p=t[15],d=t[16];return I1r(r,[0,d,function(r,t,e,n){var u=wZr(Nd(t,e),n),a=n.length-1;if(u.length-1===a)for(var i=0;;){var f=i===a?1:0;if(f)var c=f;else{var s=n[i+1]===u[i+1]?1:0;if(s){i=i+1|0;continue}c=s}return c?n:u}throw[0,Wd,nE]},p,function(r,t,e){return e},k,function(r,t,e){return e},D,function(r,t,e){return e},b,function(r,t,e){return e},l,function(r,t,e){return e},v,function(r,t,e){return e},o,function(r,t,e){return e},s,function(r,t,e,n){var u=yd(n),a=Mv===u?n[1]:Tc===u?_Zr(n):n,i=Ld(t,e,a);return a===i?n:[Mv,i]},e,function(r,t,n,u){if(u){var a=u[2],i=u[1],f=Ld(t,n,i),c=Md(r[1][e+1],r,t,n,a);return i===f&&a===c?u:[0,f,c]}return 0},c,function(r,t,e){return e},f,function(r,t,e,n){if(n){var u=n[1],a=Ld(t,e,u);return u===a?n:[0,a]}return 0},i,function(r,t,e,n){var u=n[1],a=Ld(t,e,u);return u===a?n:[0,a]},a,function(r,t,e,n,u){if(0===u[0]){var a=u[1],i=Ld(t,n,a);return a===i?u:[0,i]}var f=u[1],c=Ld(e,n,f);return f===c?u:[1,c]},u,function(r,t,e){return e},n,function(r,t,e){return e}]),function(t,e){return T1r(e,r)}}));Xk([],[0,0,function(r){var t=E1r(r,uE),e=t[1],n=t[18],u=t[19],a=t[2],i=t[3],f=t[4],c=t[5],s=t[6],o=t[7],v=t[8],l=t[9],b=t[10],D=t[11],k=t[12],p=t[13],d=t[14],w=t[15],h=t[16],m=t[17],F=S1r(r,0,Kd,0,M1r,1)[1];return I1r(r,[0,m,function(r,t,u,a){var i=[0,Nd(r[1][e+1],r)],f=a.length-1-1|0;if(!(f<0))for(var c=0;;){var s=i[1],o=Ld(t,u,a[c+1]);i[1]=Rd(r[1][n+1],r,s,o);var v=c+1|0;if(f===c)break;c=v}return i[1]},h,function(r,t,n){return Nd(r[1][e+1],r)},w,function(r,t,n){return Nd(r[1][e+1],r)},d,function(r,t,n){return Nd(r[1][e+1],r)},p,function(r,t,n){return Nd(r[1][e+1],r)},k,function(r,t,n){return Nd(r[1][e+1],r)},D,function(r,t,n){return Nd(r[1][e+1],r)},b,function(r,t,n){return Nd(r[1][e+1],r)},l,function(r,t,e,n){var u=yd(n);return Ld(t,e,Mv===u?n[1]:Tc===u?_Zr(n):n)},v,function(r,t,n,a){var i=Nd(r[1][e+1],r);return jd(r[1][u+1],r,t,n,i,a)},u,function(r,t,e,a,i){if(i){var f=i[2],c=Ld(t,e,i[1]),s=Rd(r[1][n+1],r,a,c);return jd(r[1][u+1],r,t,e,s,f)}return a},o,function(r,t,n){return Nd(r[1][e+1],r)},s,function(r,t,n,u){return u?Ld(t,n,u[1]):Nd(r[1][e+1],r)},c,function(r,t,e,n){return Ld(t,e,n[1])},f,function(r,t,e,n,u){return 0===u[0]?Ld(t,n,u[1]):Ld(e,n,u[1])},i,function(r,t,n){return Nd(r[1][e+1],r)},a,function(r,t,n){return Nd(r[1][e+1],r)}]),function(t,e){var n=T1r(e,r);return Nd(F,n),A1r(e,n,r)}},0,0]);Xk([],[0,0,function(r){var t=E1r(r,Qd),e=t[1],n=t[8],u=t[18],a=t[2],i=t[3],f=t[4],c=t[5],s=t[6],o=t[7],v=t[9],l=t[10],b=t[11],D=t[12],k=t[13],p=t[14],d=t[15],w=t[16],h=t[17],m=S1r(r,0,Kd,0,M1r,1)[1];return I1r(r,[0,h,function(r,t,n,a){var i=[0,Nd(r[1][e+1],r)];return[0,wZr((function(e){var a=Ld(t,n,e),f=a[1];return i[1]=Rd(r[1][u+1],r,i[1],a[2]),f}),a),i[1]]},w,function(r,t,n){return[0,n,Nd(r[1][e+1],r)]},d,function(r,t,n){return[0,n,Nd(r[1][e+1],r)]},p,function(r,t,n){return[0,n,Nd(r[1][e+1],r)]},k,function(r,t,n){return[0,n,Nd(r[1][e+1],r)]},D,function(r,t,n){return[0,n,Nd(r[1][e+1],r)]},b,function(r,t,n){return[0,n,Nd(r[1][e+1],r)]},l,function(r,t,n){return[0,n,Nd(r[1][e+1],r)]},v,function(r,t,e,n){var u=yd(n),a=Ld(t,e,Mv===u?n[1]:Tc===u?_Zr(n):n);return[0,[Mv,a[1]],a[2]]},n,function(r,t,a,i){if(i){var f=i[2],c=Ld(t,a,i[1]),s=c[2],o=c[1],v=Md(r[1][n+1],r,t,a,f);return[0,[0,o,v[1]],Rd(r[1][u+1],r,s,v[2])]}return[0,0,Nd(r[1][e+1],r)]},o,function(r,t,n){return[0,n,Nd(r[1][e+1],r)]},s,function(r,t,n,u){if(u){var a=Ld(t,n,u[1]);return[0,[0,a[1]],a[2]]}return[0,0,Nd(r[1][e+1],r)]},c,function(r,t,e,n){var u=Ld(t,e,n[1]);return[0,[0,u[1]],u[2]]},f,function(r,t,e,n,u){if(0===u[0]){var a=Ld(t,n,u[1]);return[0,[0,a[1]],a[2]]}var i=Ld(e,n,u[1]);return[0,[1,i[1]],i[2]]},i,function(r,t,n){return[0,n,Nd(r[1][e+1],r)]},a,function(r,t,n){return[0,n,Nd(r[1][e+1],r)]}]),function(t,e){var n=T1r(e,r);return Nd(m,n),A1r(e,n,r)}},0,0]),x1r(0,(function(r){return function(t,e){return T1r(e,r)}})),x1r(0,(function(r){var t=E1r(r,$d),e=t[7],n=t[1],u=t[2],a=t[3],i=t[4],f=t[5],c=t[6],s=t[8],o=t[9],v=t[10],l=t[11],b=t[12],D=t[13],k=t[14],p=t[15],d=t[16];return I1r(r,[0,d,function(r,t,e,n,u){if(n.length-1==u.length-1){var a=n.length-1-1|0;if(!(a<0))for(var i=0;;){Rd(t,e,n[i+1],u[i+1]);var f=i+1|0;if(a===i)break;i=f}return 0}return R1r()},p,function(r,t,e,n){return e===n?0:R1r()},k,function(r,t,e,n){return Hk(e,n)?0:R1r()},D,function(r,t,e,n){return e===n?0:R1r()},b,function(r,t,e,n){return e==n?0:R1r()},l,function(r,t,e,n){return e===n?0:R1r()},v,function(r,t,e,n){return kp(e,n)?0:R1r()},o,function(r,t,e,n){return kp(e,n)?0:R1r()},s,function(r,t,e,n){var u=yd(n),a=Mv===u?n[1]:Tc===u?_Zr(n):n;return function(r){var n=yd(r),u=Mv===n?r[1]:Tc===n?_Zr(r):r;return Rd(t,e,a,u)}},e,function(r,t,n,u,a){if(u){if(a){var i=a[2],f=u[2];return Rd(t,n,u[1],a[1]),jd(r[1][e+1],r,t,n,f,i)}}else if(!a)return 0;return R1r()},c,function(r,t,e,n){return kp(e,n)?0:R1r()},f,function(r,t,e,n,u){if(n){if(u)return Rd(t,e,n[1],u[1])}else if(!u)return 0;return R1r()},i,function(r,t,e,n,u){return Rd(t,e,n[1],u[1])},a,function(r,t,e,n,u,a){if(0===u[0]){var i=u[1];if(0===a[0])return Rd(t,n,i,a[1])}else{var f=u[1];if(0!==a[0])return Rd(e,n,f,a[1])}return R1r()},u,function(r,t,e,n){return gd(e,n)?0:R1r()},n,function(r,t,e,n){return 0}]),function(t,e){return T1r(e,r)}})),x1r(0,(function(r){var t=E1r(r,$d),e=t[7],n=t[1],u=t[2],a=t[3],i=t[4],f=t[5],c=t[6],s=t[8],o=t[9],v=t[10],l=t[11],b=t[12],D=t[13],k=t[14],p=t[15],d=t[16];return I1r(r,[0,d,function(r,t,e,n,u){if(n.length-1==u.length-1){var a=function(r,n){return Rd(t,e,n,cp(u,r)[r+1])},i=n.length-1;if(0===i)return[0];var f=rd(i,a(0,n[1])),c=i-1|0;if(!(c<1))for(var s=1;;){f[s+1]=a(s,n[s+1]);var o=s+1|0;if(c===s)break;s=o}return f}return R1r()},p,function(r,t,e,n){return e===n?e:R1r()},k,function(r,t,e,n){return Hk(e,n)?e:R1r()},D,function(r,t,e,n){return e===n?e:R1r()},b,function(r,t,e,n){return e==n?e:R1r()},l,function(r,t,e,n){return e===n?e:R1r()},v,function(r,t,e,n){return kp(e,n)?e:R1r()},o,function(r,t,e,n){return kp(e,n)?e:R1r()},s,function(r,t,e,n,u){return[Tc,function(r){var a=yd(u),i=Mv===a?u[1]:Tc===a?_Zr(u):u,f=yd(n),c=Mv===f?n[1]:Tc===f?_Zr(n):n;return Rd(t,e,c,i)}]},e,function(r,t,n,u,a){if(u){if(a){var i=a[2],f=u[2];return[0,Rd(t,n,u[1],a[1]),jd(r[1][e+1],r,t,n,f,i)]}}else if(!a)return 0;return R1r()},c,function(r,t,e,n){return kp(e,n)?e:R1r()},f,function(r,t,e,n,u){if(n){if(u)return[0,Rd(t,e,n[1],u[1])]}else if(!u)return 0;return R1r()},i,function(r,t,e,n,u){return[0,Rd(t,e,n[1],u[1])]},a,function(r,t,e,n,u,a){if(0===u[0]){var i=u[1];if(0===a[0])return[0,Rd(t,n,i,a[1])]}else{var f=u[1];if(0!==a[0])return[1,Rd(e,n,f,a[1])]}return R1r()},u,function(r,t,e,n){return gd(e,n)?e:R1r()},n,function(r,t,e,n){return 0}]),function(t,e){return T1r(e,r)}}));Xk([],[0,0,function(r){var t=E1r(r,Qd),e=t[1],n=t[18],u=t[2],a=t[3],i=t[4],f=t[5],c=t[6],s=t[7],o=t[8],v=t[9],l=t[10],b=t[11],D=t[12],k=t[13],p=t[14],d=t[15],w=t[16],h=t[17],m=S1r(r,0,Kd,0,M1r,1)[1];return I1r(r,[0,h,function(r,t,u,a,i){if(a.length-1==i.length-1){var f=[0,Nd(r[1][e+1],r)],c=a.length-1-1|0;if(!(c<0))for(var s=0;;){var o=Rd(t,u,a[s+1],i[s+1]);f[1]=Rd(r[1][n+1],r,f[1],o);var v=s+1|0;if(c===s)break;s=v}return f[1]}return R1r()},w,function(r,t,n,u){return n===u?Nd(r[1][e+1],r):R1r()},d,function(r,t,n,u){return Hk(n,u)?Nd(r[1][e+1],r):R1r()},p,function(r,t,n,u){return n===u?Nd(r[1][e+1],r):R1r()},k,function(r,t,n,u){return n==u?Nd(r[1][e+1],r):R1r()},D,function(r,t,n,u){return n===u?Nd(r[1][e+1],r):R1r()},b,function(r,t,n,u){return kp(n,u)?Nd(r[1][e+1],r):R1r()},l,function(r,t,n,u){return kp(n,u)?Nd(r[1][e+1],r):R1r()},v,function(r,t,e,n){var u=yd(n),a=Mv===u?n[1]:Tc===u?_Zr(n):n;return function(r){var n=yd(r),u=Mv===n?r[1]:Tc===n?_Zr(r):r;return Rd(t,e,a,u)}},o,function(r,t,u,a,i){var f=VQr(i);if(VQr(a)===f)for(var c=Nd(r[1][e+1],r),s=a,o=i;;){if(s){if(o){var v=o[2],l=s[2],b=Rd(t,u,s[1],o[1]);c=Rd(r[1][n+1],r,c,b),s=l,o=v;continue}}else if(!o)return c;return AQr(hw)}return R1r()},s,function(r,t,n,u){return kp(n,u)?Nd(r[1][e+1],r):R1r()},c,function(r,t,n,u,a){if(u){if(a)return Rd(t,n,u[1],a[1])}else if(!a)return Nd(r[1][e+1],r);return R1r()},f,function(r,t,e,n,u){return Rd(t,e,n[1],u[1])},i,function(r,t,e,n,u,a){if(0===u[0]){var i=u[1];if(0===a[0])return Rd(t,n,i,a[1])}else{var f=u[1];if(0!==a[0])return Rd(e,n,f,a[1])}return R1r()},a,function(r,t,n,u){return gd(n,u)?Nd(r[1][e+1],r):R1r()},u,function(r,t,n,u){return Nd(r[1][e+1],r)}]),function(t,e){var n=T1r(e,r);return Nd(m,n),A1r(e,n,r)}},0,0]);Xk([],[0,0,function(r){var t=E1r(r,Qd),e=t[1],n=t[8],u=t[18],a=t[2],i=t[3],f=t[4],c=t[5],s=t[6],o=t[7],v=t[9],l=t[10],b=t[11],D=t[12],k=t[13],p=t[14],d=t[15],w=t[16],h=t[17],m=S1r(r,0,Kd,0,M1r,1)[1];return I1r(r,[0,h,function(r,t,n,a,i){var f=a.length-1;if(f===i.length-1){var c=[0,Nd(r[1][e+1],r)];return[0,kZr(f,(function(e){var f=Rd(t,n,a[e+1],i[e+1]),s=f[1];return c[1]=Rd(r[1][u+1],r,c[1],f[2]),s})),c[1]]}return R1r()},w,function(r,t,n,u){return n===u?[0,n,Nd(r[1][e+1],r)]:R1r()},d,function(r,t,n,u){return Hk(n,u)?[0,n,Nd(r[1][e+1],r)]:R1r()},p,function(r,t,n,u){return n===u?[0,n,Nd(r[1][e+1],r)]:R1r()},k,function(r,t,n,u){return n==u?[0,n,Nd(r[1][e+1],r)]:R1r()},D,function(r,t,n,u){return n===u?[0,n,Nd(r[1][e+1],r)]:R1r()},b,function(r,t,n,u){return kp(n,u)?[0,n,Nd(r[1][e+1],r)]:R1r()},l,function(r,t,n,u){return kp(n,u)?[0,n,Nd(r[1][e+1],r)]:R1r()},v,function(r,t,e,n){var u=yd(n),a=Mv===u?n[1]:Tc===u?_Zr(n):n;return function(r){var n=yd(r),u=Mv===n?r[1]:Tc===n?_Zr(r):r,i=Rd(t,e,a,u);return[0,[Mv,i[1]],i[2]]}},n,function(r,t,a,i,f){if(i){if(f){var c=f[2],s=i[2],o=Rd(t,a,i[1],f[1]),v=o[2],l=o[1],b=jd(r[1][n+1],r,t,a,s,c);return[0,[0,l,b[1]],Rd(r[1][u+1],r,v,b[2])]}}else if(!f)return[0,0,Nd(r[1][e+1],r)];return R1r()},o,function(r,t,n,u){return kp(n,u)?[0,n,Nd(r[1][e+1],r)]:R1r()},s,function(r,t,n,u,a){if(u){if(a){var i=Rd(t,n,u[1],a[1]);return[0,[0,i[1]],i[2]]}}else if(!a)return[0,0,Nd(r[1][e+1],r)];return R1r()},c,function(r,t,e,n,u){var a=Rd(t,e,n[1],u[1]);return[0,[0,a[1]],a[2]]},f,function(r,t,e,n,u,a){if(0===u[0]){var i=u[1];if(0===a[0]){var f=Rd(t,n,i,a[1]);return[0,[0,f[1]],f[2]]}}else{var c=u[1];if(0!==a[0]){var s=Rd(e,n,c,a[1]);return[0,[1,s[1]],s[2]]}}return R1r()},i,function(r,t,n,u){return gd(n,u)?[0,n,Nd(r[1][e+1],r)]:R1r()},a,function(r,t,n,u){return[0,0,Nd(r[1][e+1],r)]}]),function(t,e){var n=T1r(e,r);return Nd(m,n),A1r(e,n,r)}},0,0]),x1r(0,(function(r){return function(t,e){return T1r(e,r)}})),_p();var j1r=[bc,fE,_p()],U1r=-1,X1r=Eb,J1r=0,G1r=0,q1r=0,z1r=0,V1r=0;function W1r(r,t,e){throw[0,Wd,iE]}function Y1r(r){var t=r.length-1;return[0,W1r,kZr(t,(function(t){return cp(r,t)[t+1]})),t,V1r,z1r,q1r,G1r,J1r,1]}function H1r(r){if(r[5]===r[3])if(r[9])var t=U1r;else{if(r[2].length-1<(r[3]+Eb|0)){var e=r[6],n=r[3]-e|0;if((n+Eb|0)<=r[2].length-1)pZr(r[2],e,r[2],0,n);else{var u=rd(2*(r[2].length-1+Eb|0)|0,0);pZr(r[2],e,u,0,n),r[2]=u}r[3]=n,r[4]=r[4]+e|0,r[5]=r[5]-e|0,r[7]=r[7]-e|0,r[6]=0}var a=Rd(r[1],r[2],r[5],X1r);if(0===a){var i=r[3];cp(r[2],i)[i+1]=U1r,r[3]=r[3]+1|0}else r[3]=r[3]+a|0;var f=r[5];t=cp(r[2],f)[f+1]}else{var c=r[5];t=cp(r[2],c)[c+1]}return-1===t?r[9]=1:r[5]=r[5]+1|0,t}function $1r(r){return r[6]=r[5],r[7]=r[5],r[8]=-1,0}function K1r(r,t){return r[7]=r[5],r[8]=t,0}function Q1r(r){return r[5]=r[7],r[8]}function Z1r(r){return r[5]=r[6],0}function r2r(r){return r[6]+r[4]|0}function t2r(r){return r[5]+r[4]|0}function e2r(r){return r[5]-r[6]|0}function n2r(r){var t=r[5]-r[6]|0,e=r[6],n=r[2];return 0<=e&&0<=t&&!((n.length-1-t|0)<e)?function(r,t,e){var n=new Array(e+1);n[0]=0;for(var u=1,a=t+1;u<=e;u++,a++)n[u]=r[a];return n}(n,e,t):AQr(xw)}for(var u2r=rd(gn,-1),a2r=0;;){cp(u2r,a2r)[a2r+1]=1;var i2r=a2r+1|0;if(Yc===a2r)for(var f2r=192;;){cp(u2r,f2r)[f2r+1]=2;var c2r=f2r+1|0;if(yo===f2r)for(var s2r=224;;){cp(u2r,s2r)[s2r+1]=3;var o2r=s2r+1|0;if(239===s2r)for(var v2r=240;;){cp(u2r,v2r)[v2r+1]=4;var l2r=v2r+1|0;if(247===v2r){var b2r=function(r){for(var t=jp(r),e=0,n=0;;){if((0|t)<=n){if(n===(0|t))for(var u=rd(e,0),a=0,i=0,f=e;;){if(0<f){var c=Cd(r,a);if(192<=c)if(240<=c)if(bc<=c)var s=0;else{var o=Cd(r,a+1|0),v=Cd(r,a+2|0),l=Cd(r,a+3|0),b=2!=(o>>>6|0)?1:0;if(b)var D=b;else D=(2!=(v>>>6|0)?1:0)||(2!=(l>>>6|0)?1:0);if(D)throw j1r;var k=(7&c)<<18|(63&o)<<12|(63&v)<<6|63&l;s=1}else if(224<=c){var p=Cd(r,a+1|0),d=Cd(r,a+2|0);if((2!=(p>>>6|0)?1:0)||(2!=(d>>>6|0)?1:0))throw j1r;var w=(15&c)<<12|(63&p)<<6|63&d,h=55296<=w?1:0;if(h?w<=57088?1:0:h)throw j1r;k=w,s=1}else{var m=Cd(r,a+1|0);if(2!=(m>>>6|0))throw j1r;k=(31&c)<<6|63&m,s=1}else if(j<=c)s=0;else k=c,s=1;if(s){cp(u,i)[i+1]=k;var F=Cd(r,a);a=a+cp(u2r,F)[F+1]|0,i=i+1|0,f=f-1|0;continue}throw j1r}return Y1r(u)}throw j1r}var y=Cd(r,n),E=cp(u2r,y)[y+1];if(!(0<E))throw j1r;e=e+1|0,n=n+E|0}},D2r=function(r,t,e){for(var n=r[6]+t|0,u=r[2],a=gZr(4*e|0),i=n,f=e;;){if(!(0<f))return CZr(a);var c=cp(u,i)[i+1];if(Yc<c)if(2047<c)if(Yb<c){if(1114111<c)throw j1r;xZr(a,XQr(240|c>>>18)),xZr(a,XQr(j|63&(c>>>12|0))),xZr(a,XQr(j|63&(c>>>6|0))),xZr(a,XQr(j|63&c))}else{var s=55296<=c?1:0;if(s?c<57344?1:0:s)throw j1r;xZr(a,XQr(224|c>>>12)),xZr(a,XQr(j|63&(c>>>6|0))),xZr(a,XQr(j|63&c))}else xZr(a,XQr(192|c>>>6)),xZr(a,XQr(j|63&c));else xZr(a,XQr(c));i=i+1|0,f=f-1|0}},k2r=function(r){return D2r(r,0,r[5]-r[6]|0)},p2r=function(r,t){function e(t){return xZr(r,t)}return 65536<=t?(e(240|t>>>18),e(j|63&(t>>>12|0)),e(j|63&(t>>>6|0)),e(j|63&t)):2048<=t?(e(224|t>>>12),e(j|63&(t>>>6|0)),e(j|63&t)):j<=t?(e(192|t>>>6),e(j|63&t)):e(t)},d2r=r,w2r=null,h2r=function(r){return void 0!==r?1:0},m2r=d2r.Array,F2r=[bc,sE,_p()],y2r=d2r.Error;s1r(oE,[0,F2r,{}]);var E2r=function(r){throw r};D0r((function(r){return r[1]===F2r?[0,xp(r[2].toString())]:0})),D0r((function(r){return r instanceof m2r?0:[0,xp(r.toString())]}));var _2r=function(r){return"number"==typeof r?_E:r[1]},g2r=function(r){if("number"==typeof r)return 1;switch(r[0]){case 0:return 2;case 3:return 4;default:return 3}},C2r=Ld(P1r,tvr,rvr),S2r=Ld(P1r,nvr,evr),x2r=Ld(P1r,avr,uvr),T2r=Ld(P1r,fvr,ivr),A2r=Ld(P1r,svr,cvr),B2r=Ld(P1r,vvr,ovr),I2r=Ld(P1r,bvr,lvr),O2r=Ld(P1r,kvr,Dvr),P2r=Ld(P1r,dvr,pvr),N2r=Ld(P1r,hvr,wvr),L2r=Ld(P1r,Fvr,mvr),R2r=Ld(P1r,Evr,yvr),M2r=Ld(P1r,gvr,_vr),j2r=Ld(P1r,Svr,Cvr),U2r=Ld(P1r,Tvr,xvr),X2r=Ld(P1r,Bvr,Avr),J2r=function r(t,e,n,u){return r.fun(t,e,n,u)},G2r=function r(t,e,n){return r.fun(t,e,n)};Xk(J2r,(function(r,t,e,n){Nd(f1r(e),Ror),Ld(f1r(e),jor,Mor);var u=n[1];Nd(f1r(e),Uor);rZr((function(t,n){return t&&Nd(f1r(e),Lor),Rd(j2r[1],(function(t){return Nd(r,t)}),e,n),1}),0,u),Nd(f1r(e),Xor),Nd(f1r(e),Jor),Nd(f1r(e),Gor),Ld(f1r(e),zor,qor);var a=n[2];Nd(f1r(e),Vor);return rZr((function(t,n){return t&&Nd(f1r(e),Nor),Rd(j2r[1],(function(t){return Nd(r,t)}),e,n),1}),0,a),Nd(f1r(e),Wor),Nd(f1r(e),Yor),Nd(f1r(e),Hor),Ld(f1r(e),Kor,$or),Ld(t,e,n[3]),Nd(f1r(e),Qor),Nd(f1r(e),Zor)})),Xk(G2r,(function(r,t,e){var n=Ld(J2r,r,t);return Ld(c1r(Por),n,e)})),Rd(O1r,Ivr,C2r,[0,J2r,G2r]);var q2r=function r(t,e,n,u){return r.fun(t,e,n,u)},z2r=function r(t,e,n){return r.fun(t,e,n)},V2r=function r(t,e,n){return r.fun(t,e,n)},W2r=function r(t,e){return r.fun(t,e)};Xk(q2r,(function(r,t,e,n){Nd(f1r(e),Bor),Ld(t,e,n[1]),Nd(f1r(e),Ior);var u=n[2];return Rd(V2r,(function(t){return Nd(r,t)}),e,u),Nd(f1r(e),Oor)})),Xk(z2r,(function(r,t,e){var n=Ld(q2r,r,t);return Ld(c1r(Aor),n,e)})),Xk(V2r,(function(r,t,e){Nd(f1r(t),dor),Ld(f1r(t),hor,wor);var n=e[1];Ld(f1r(t),mor,n),Nd(f1r(t),For),Nd(f1r(t),yor),Ld(f1r(t),_or,Eor);var u=e[2];if(u){G0r(t,gor);var a=u[1];Md(C2r[1],(function(t){return Nd(r,t)}),(function(r,t){return G0r(r,por)}),t,a),G0r(t,Cor)}else G0r(t,Sor);return Nd(f1r(t),xor),Nd(f1r(t),Tor)})),Xk(W2r,(function(r,t){var e=Nd(V2r,r);return Ld(c1r(kor),e,t)})),Rd(O1r,Ovr,S2r,[0,q2r,z2r,V2r,W2r]);var Y2r=function r(t,e,n){return r.fun(t,e,n)},H2r=function r(t,e){return r.fun(t,e)};Xk(Y2r,(function(r,t,e){Nd(f1r(t),lor),Ld(r,t,e[1]),Nd(f1r(t),bor);var n=e[2];return Md(S2r[1],(function(t){return Nd(r,t)}),(function(t){return Nd(r,t)}),t,n),Nd(f1r(t),Dor)})),Xk(H2r,(function(r,t){var e=Nd(Y2r,r);return Ld(c1r(vor),e,t)})),Rd(O1r,Pvr,x2r,[0,Y2r,H2r]);var $2r=function(r,t){Nd(f1r(r),Qsr),Ld(f1r(r),ror,Zsr);var e=t[1];Ld(f1r(r),tor,e),Nd(f1r(r),eor),Nd(f1r(r),nor),Ld(f1r(r),aor,uor);var n=t[2];return Ld(f1r(r),ior,n),Nd(f1r(r),cor),Nd(f1r(r),sor)},K2r=[0,$2r,function(r){return Ld(c1r(oor),$2r,r)}],Q2r=function r(t,e,n){return r.fun(t,e,n)},Z2r=function r(t,e){return r.fun(t,e)},r7r=function r(t,e){return r.fun(t,e)},t7r=function r(t){return r.fun(t)};Xk(Q2r,(function(r,t,e){Nd(f1r(t),Nsr),Ld(f1r(t),Rsr,Lsr),Ld(r7r,t,e[1]),Nd(f1r(t),Msr),Nd(f1r(t),jsr),Ld(f1r(t),Xsr,Usr);var n=e[2];Ld(f1r(t),Jsr,n),Nd(f1r(t),Gsr),Nd(f1r(t),qsr),Ld(f1r(t),Vsr,zsr);var u=e[3];if(u){G0r(t,Wsr);var a=u[1];Md(C2r[1],(function(t){return Nd(r,t)}),(function(r,t){return G0r(r,Psr)}),t,a),G0r(t,Ysr)}else G0r(t,Hsr);return Nd(f1r(t),$sr),Nd(f1r(t),Ksr)})),Xk(Z2r,(function(r,t){var e=Nd(Q2r,r);return Ld(c1r(Osr),e,t)})),Xk(r7r,(function(r,t){if("number"==typeof t)return G0r(r,wsr);switch(t[0]){case 0:Nd(f1r(r),hsr);var e=t[1];return Ld(f1r(r),msr,e),Nd(f1r(r),Fsr);case 1:Nd(f1r(r),ysr);var n=t[1];return Ld(f1r(r),Esr,n),Nd(f1r(r),_sr);case 2:Nd(f1r(r),gsr);var u=t[1];return Ld(f1r(r),Csr,u),Nd(f1r(r),Ssr);case 3:Nd(f1r(r),xsr);var a=t[1];return Ld(f1r(r),Tsr,a),Nd(f1r(r),Asr);default:return Nd(f1r(r),Bsr),Ld(K2r[1],r,t[1]),Nd(f1r(r),Isr)}})),Xk(t7r,(function(r){return Ld(c1r(dsr),r7r,r)})),Rd(O1r,Nvr,T2r,[0,K2r,Q2r,Z2r,r7r,t7r]);var e7r=function(r,t){Nd(f1r(r),asr),Ld(f1r(r),fsr,isr);var e=t[1];Ld(f1r(r),csr,e),Nd(f1r(r),ssr),Nd(f1r(r),osr),Ld(f1r(r),lsr,vsr);var n=t[2];return Ld(f1r(r),bsr,n),Nd(f1r(r),Dsr),Nd(f1r(r),ksr)};Rd(O1r,Lvr,A2r,[0,e7r,function(r){return Ld(c1r(psr),e7r,r)}]);var n7r=function(r,t){Nd(f1r(r),Wcr),Ld(f1r(r),Hcr,Ycr);var e=t[1];Ld(f1r(r),$cr,e),Nd(f1r(r),Kcr),Nd(f1r(r),Qcr),Ld(f1r(r),rsr,Zcr);var n=t[2];return Ld(f1r(r),tsr,n),Nd(f1r(r),esr),Nd(f1r(r),nsr)};Rd(O1r,Rvr,B2r,[0,n7r,function(r){return Ld(c1r(usr),n7r,r)}]);var u7r=function(r,t){Nd(f1r(r),Ncr),Ld(f1r(r),Rcr,Lcr);var e=t[1];Ld(f1r(r),Mcr,e),Nd(f1r(r),jcr),Nd(f1r(r),Ucr),Ld(f1r(r),Jcr,Xcr);var n=t[2];return Ld(f1r(r),Gcr,n),Nd(f1r(r),qcr),Nd(f1r(r),zcr)};Rd(O1r,Mvr,I2r,[0,u7r,function(r){return Ld(c1r(Vcr),u7r,r)}]);var a7r=function r(t,e,n){return r.fun(t,e,n)},i7r=function r(t,e){return r.fun(t,e)},f7r=function r(t,e){return r.fun(t,e)},c7r=function r(t){return r.fun(t)};Xk(a7r,(function(r,t,e){return Nd(f1r(t),Icr),Ld(r,t,e[1]),Nd(f1r(t),Ocr),Ld(f7r,t,e[2]),Nd(f1r(t),Pcr)})),Xk(i7r,(function(r,t){var e=Nd(a7r,r);return Ld(c1r(Bcr),e,t)})),Xk(f7r,(function(r,t){return G0r(r,0===t?Acr:Tcr)})),Xk(c7r,(function(r){return Ld(c1r(xcr),f7r,r)})),Rd(O1r,jvr,O2r,[0,a7r,i7r,f7r,c7r]);var s7r=function r(t,e,n,u){return r.fun(t,e,n,u)},o7r=function r(t,e,n){return r.fun(t,e,n)},v7r=function r(t,e,n,u){return r.fun(t,e,n,u)},l7r=function r(t,e,n){return r.fun(t,e,n)};Xk(s7r,(function(r,t,e,n){Nd(f1r(e),gcr),Ld(r,e,n[1]),Nd(f1r(e),Ccr);var u=n[2];return Md(v7r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Scr)})),Xk(o7r,(function(r,t,e){var n=Ld(s7r,r,t);return Ld(c1r(_cr),n,e)})),Xk(v7r,(function(r,t,e,n){Nd(f1r(e),fcr),Ld(f1r(e),scr,ccr);var u=n[1];if(u){G0r(e,ocr);var a=u[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),G0r(e,vcr)}else G0r(e,lcr);Nd(f1r(e),bcr),Nd(f1r(e),Dcr),Ld(f1r(e),pcr,kcr);var i=n[2];Md(P2r[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),dcr),Nd(f1r(e),wcr),Ld(f1r(e),mcr,hcr);var f=n[3];return Ld(f1r(e),Fcr,f),Nd(f1r(e),ycr),Nd(f1r(e),Ecr)})),Xk(l7r,(function(r,t,e){var n=Ld(v7r,r,t);return Ld(c1r(icr),n,e)}));var b7r=[0,s7r,o7r,v7r,l7r],D7r=function r(t,e,n,u){return r.fun(t,e,n,u)},k7r=function r(t,e,n){return r.fun(t,e,n)},p7r=function r(t,e,n,u){return r.fun(t,e,n,u)},d7r=function r(t,e,n){return r.fun(t,e,n)};Xk(D7r,(function(r,t,e,n){Nd(f1r(e),ncr),Ld(r,e,n[1]),Nd(f1r(e),ucr);var u=n[2];return Md(p7r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),acr)})),Xk(k7r,(function(r,t,e){var n=Ld(D7r,r,t);return Ld(c1r(ecr),n,e)})),Xk(p7r,(function(r,t,e,n){Nd(f1r(e),Kfr),Ld(f1r(e),Zfr,Qfr);var u=n[1];return Md(b7r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),rcr),Nd(f1r(e),tcr)})),Xk(d7r,(function(r,t,e){var n=Ld(p7r,r,t);return Ld(c1r($fr),n,e)}));var w7r=[0,D7r,k7r,p7r,d7r],h7r=function r(t,e,n,u){return r.fun(t,e,n,u)},m7r=function r(t,e,n){return r.fun(t,e,n)},F7r=function r(t,e,n,u){return r.fun(t,e,n,u)},y7r=function r(t,e,n){return r.fun(t,e,n)};Xk(h7r,(function(r,t,e,n){Nd(f1r(e),Wfr),Ld(r,e,n[1]),Nd(f1r(e),Yfr);var u=n[2];return Md(F7r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Hfr)})),Xk(m7r,(function(r,t,e){var n=Ld(h7r,r,t);return Ld(c1r(Vfr),n,e)})),Xk(F7r,(function(r,t,e,n){Nd(f1r(e),Ifr),Ld(f1r(e),Pfr,Ofr);var u=n[1];Nd(f1r(e),Nfr);rZr((function(n,u){return n&&Nd(f1r(e),Bfr),Md(b7r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,u),Nd(f1r(e),Lfr),Nd(f1r(e),Rfr),Nd(f1r(e),Mfr),Ld(f1r(e),Ufr,jfr);var a=n[2];if(a){G0r(e,Xfr);var i=a[1];Md(w7r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,Jfr)}else G0r(e,Gfr);return Nd(f1r(e),qfr),Nd(f1r(e),zfr)})),Xk(y7r,(function(r,t,e){var n=Ld(F7r,r,t);return Ld(c1r(Afr),n,e)}));var E7r=[0,h7r,m7r,F7r,y7r],_7r=function r(t,e,n,u){return r.fun(t,e,n,u)},g7r=function r(t,e,n){return r.fun(t,e,n)};Xk(_7r,(function(r,t,e,n){Nd(f1r(e),Dfr),Ld(f1r(e),pfr,kfr);var u=n[1];if(u){G0r(e,dfr);var a=u[1];Md(P2r[13][2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),G0r(e,wfr)}else G0r(e,hfr);Nd(f1r(e),mfr),Nd(f1r(e),Ffr),Ld(f1r(e),Efr,yfr);var i=n[2];Md(E7r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),_fr),Nd(f1r(e),gfr),Ld(f1r(e),Sfr,Cfr);var f=n[3];return Md(P2r[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),Nd(f1r(e),xfr),Nd(f1r(e),Tfr)})),Xk(g7r,(function(r,t,e){var n=Ld(_7r,r,t);return Ld(c1r(bfr),n,e)}));var C7r=[0,b7r,w7r,E7r,_7r,g7r],S7r=function r(t,e,n,u){return r.fun(t,e,n,u)},x7r=function r(t,e,n){return r.fun(t,e,n)},T7r=function r(t,e,n,u){return r.fun(t,e,n,u)},A7r=function r(t,e,n){return r.fun(t,e,n)},B7r=function r(t,e,n,u){return r.fun(t,e,n,u)},I7r=function r(t,e,n){return r.fun(t,e,n)};Xk(S7r,(function(r,t,e,n){if(0===n[0]){Nd(f1r(e),sfr);var u=n[1];return Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),ofr)}Nd(f1r(e),vfr);var a=n[1];return Md(T7r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),lfr)})),Xk(x7r,(function(r,t,e){var n=Ld(S7r,r,t);return Ld(c1r(cfr),n,e)})),Xk(T7r,(function(r,t,e,n){Nd(f1r(e),afr),Ld(r,e,n[1]),Nd(f1r(e),ifr);var u=n[2];return Md(B7r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),ffr)})),Xk(A7r,(function(r,t,e){var n=Ld(T7r,r,t);return Ld(c1r(ufr),n,e)})),Xk(B7r,(function(r,t,e,n){Nd(f1r(e),Hir),Ld(f1r(e),Kir,$ir);var u=n[1];Md(S7r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Qir),Nd(f1r(e),Zir),Ld(f1r(e),tfr,rfr);var a=n[2];return Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),efr),Nd(f1r(e),nfr)})),Xk(I7r,(function(r,t,e){var n=Ld(B7r,r,t);return Ld(c1r(Yir),n,e)}));var O7r=[0,S7r,x7r,T7r,A7r,B7r,I7r],P7r=function r(t,e,n,u){return r.fun(t,e,n,u)},N7r=function r(t,e,n){return r.fun(t,e,n)};Xk(P7r,(function(r,t,e,n){Nd(f1r(e),Lir),Ld(f1r(e),Mir,Rir);var u=n[1];Md(O7r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),jir),Nd(f1r(e),Uir),Ld(f1r(e),Jir,Xir);var a=n[2];if(a){G0r(e,Gir);var i=a[1];Md(P2r[14][1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,qir)}else G0r(e,zir);return Nd(f1r(e),Vir),Nd(f1r(e),Wir)})),Xk(N7r,(function(r,t,e){var n=Ld(P7r,r,t);return Ld(c1r(Nir),n,e)}));var L7r=[0,O7r,P7r,N7r],R7r=function r(t,e,n,u){return r.fun(t,e,n,u)},M7r=function r(t,e,n){return r.fun(t,e,n)},j7r=function r(t,e,n,u){return r.fun(t,e,n,u)},U7r=function r(t,e,n){return r.fun(t,e,n)},X7r=function r(t,e,n,u){return r.fun(t,e,n,u)},J7r=function r(t,e,n){return r.fun(t,e,n)};Xk(R7r,(function(r,t,e,n){Nd(f1r(e),Iir),Ld(r,e,n[1]),Nd(f1r(e),Oir);var u=n[2];return Md(j7r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Pir)})),Xk(M7r,(function(r,t,e){var n=Ld(R7r,r,t);return Ld(c1r(Bir),n,e)})),Xk(j7r,(function(r,t,e,n){Nd(f1r(e),Har),Ld(f1r(e),Kar,$ar);var u=n[1];Md(L2r[8][1][1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Qar),Nd(f1r(e),Zar),Ld(f1r(e),tir,rir);var a=n[2];Md(X7r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),eir),Nd(f1r(e),nir),Ld(f1r(e),air,uir);var i=n[3];Ld(f1r(e),iir,i),Nd(f1r(e),fir),Nd(f1r(e),cir),Ld(f1r(e),oir,sir);var f=n[4];Ld(f1r(e),vir,f),Nd(f1r(e),lir),Nd(f1r(e),bir),Ld(f1r(e),kir,Dir);var c=n[5];Ld(f1r(e),pir,c),Nd(f1r(e),dir),Nd(f1r(e),wir),Ld(f1r(e),mir,hir);var s=n[6];Ld(f1r(e),Fir,s),Nd(f1r(e),yir),Nd(f1r(e),Eir),Ld(f1r(e),gir,_ir);var o=n[7];if(o){G0r(e,Cir);var v=o[1];Rd(O2r[1],(function(t){return Nd(r,t)}),e,v),G0r(e,Sir)}else G0r(e,xir);return Nd(f1r(e),Tir),Nd(f1r(e),Air)})),Xk(U7r,(function(r,t,e){var n=Ld(j7r,r,t);return Ld(c1r(Yar),n,e)})),Xk(X7r,(function(r,t,e,n){switch(n[0]){case 0:Nd(f1r(e),Lar);var u=n[1];return Md(P2r[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Rar);case 1:var a=n[1];Nd(f1r(e),Mar),Nd(f1r(e),jar),Ld(r,e,a[1]),Nd(f1r(e),Uar);var i=a[2];return Md(C7r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),Xar),Nd(f1r(e),Jar);default:var f=n[1];Nd(f1r(e),Gar),Nd(f1r(e),qar),Ld(r,e,f[1]),Nd(f1r(e),zar);var c=f[2];return Md(C7r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,c),Nd(f1r(e),Var),Nd(f1r(e),War)}})),Xk(J7r,(function(r,t,e){var n=Ld(X7r,r,t);return Ld(c1r(Nar),n,e)}));var G7r=[0,R7r,M7r,j7r,U7r,X7r,J7r],q7r=function r(t,e,n,u){return r.fun(t,e,n,u)},z7r=function r(t,e,n){return r.fun(t,e,n)},V7r=function r(t,e,n,u){return r.fun(t,e,n,u)},W7r=function r(t,e,n){return r.fun(t,e,n)};Xk(q7r,(function(r,t,e,n){Nd(f1r(e),Iar),Ld(r,e,n[1]),Nd(f1r(e),Oar);var u=n[2];return Md(V7r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Par)})),Xk(z7r,(function(r,t,e){var n=Ld(q7r,r,t);return Ld(c1r(Bar),n,e)})),Xk(V7r,(function(r,t,e,n){Nd(f1r(e),Car),Ld(f1r(e),xar,Sar);var u=n[1];return Md(P2r[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Tar),Nd(f1r(e),Aar)})),Xk(W7r,(function(r,t,e){var n=Ld(V7r,r,t);return Ld(c1r(gar),n,e)}));var Y7r=[0,q7r,z7r,V7r,W7r],H7r=function r(t,e,n,u){return r.fun(t,e,n,u)},$7r=function r(t,e,n){return r.fun(t,e,n)},K7r=function r(t,e,n,u){return r.fun(t,e,n,u)},Q7r=function r(t,e,n){return r.fun(t,e,n)};Xk(H7r,(function(r,t,e,n){Nd(f1r(e),$ur),Ld(f1r(e),Qur,Kur);var u=n[1];if(u){G0r(e,Zur);var a=u[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(t){return Nd(r,t)}),e,a),G0r(e,rar)}else G0r(e,tar);Nd(f1r(e),ear),Nd(f1r(e),nar),Ld(f1r(e),aar,uar);var i=n[2];Md(P2r[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),iar),Nd(f1r(e),far),Ld(f1r(e),sar,car);var f=n[3];Md(P2r[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),Nd(f1r(e),oar),Nd(f1r(e),lar),Ld(f1r(e),Dar,bar);var c=n[4];Ld(f1r(e),kar,c),Nd(f1r(e),par),Nd(f1r(e),dar),Ld(f1r(e),har,war);var s=n[5];if(s){G0r(e,mar);var o=s[1];Rd(O2r[1],(function(t){return Nd(r,t)}),e,o),G0r(e,Far)}else G0r(e,yar);return Nd(f1r(e),Ear),Nd(f1r(e),_ar)})),Xk($7r,(function(r,t,e){var n=Ld(H7r,r,t);return Ld(c1r(Hur),n,e)})),Xk(K7r,(function(r,t,e,n){Nd(f1r(e),Vur),Ld(r,e,n[1]),Nd(f1r(e),Wur);var u=n[2];return Md(H7r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Yur)})),Xk(Q7r,(function(r,t,e){var n=Ld(K7r,r,t);return Ld(c1r(zur),n,e)}));var Z7r=[0,H7r,$7r,K7r,Q7r],r4r=function r(t,e,n,u){return r.fun(t,e,n,u)},t4r=function r(t,e,n){return r.fun(t,e,n)},e4r=function r(t,e,n,u){return r.fun(t,e,n,u)},n4r=function r(t,e,n){return r.fun(t,e,n)};Xk(r4r,(function(r,t,e,n){Nd(f1r(e),Jur),Ld(r,e,n[1]),Nd(f1r(e),Gur);var u=n[2];return Md(e4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),qur)})),Xk(t4r,(function(r,t,e){var n=Ld(r4r,r,t);return Ld(c1r(Xur),n,e)})),Xk(e4r,(function(r,t,e,n){Nd(f1r(e),xur),Ld(f1r(e),Aur,Tur);var u=n[1];Nd(f1r(e),Bur),Ld(r,e,u[1]),Nd(f1r(e),Iur);var a=u[2];Md(C7r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),Our),Nd(f1r(e),Pur),Nd(f1r(e),Nur),Ld(f1r(e),Rur,Lur);var i=n[2];return Ld(f1r(e),Mur,i),Nd(f1r(e),jur),Nd(f1r(e),Uur)})),Xk(n4r,(function(r,t,e){var n=Ld(e4r,r,t);return Ld(c1r(Sur),n,e)}));var u4r=[0,r4r,t4r,e4r,n4r],a4r=function r(t,e,n,u){return r.fun(t,e,n,u)},i4r=function r(t,e,n){return r.fun(t,e,n)},f4r=function r(t,e,n,u){return r.fun(t,e,n,u)},c4r=function r(t,e,n){return r.fun(t,e,n)};Xk(a4r,(function(r,t,e,n){Nd(f1r(e),_ur),Ld(r,e,n[1]),Nd(f1r(e),gur);var u=n[2];return Md(f4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Cur)})),Xk(i4r,(function(r,t,e){var n=Ld(a4r,r,t);return Ld(c1r(Eur),n,e)})),Xk(f4r,(function(r,t,e,n){Nd(f1r(e),Znr),Ld(f1r(e),tur,rur);var u=n[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(t){return Nd(r,t)}),e,u),Nd(f1r(e),eur),Nd(f1r(e),nur),Ld(f1r(e),aur,uur);var a=n[2];Md(P2r[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),iur),Nd(f1r(e),fur),Ld(f1r(e),sur,cur);var i=n[3];Ld(f1r(e),our,i),Nd(f1r(e),vur),Nd(f1r(e),lur),Ld(f1r(e),Dur,bur);var f=n[4];Ld(f1r(e),kur,f),Nd(f1r(e),pur),Nd(f1r(e),dur),Ld(f1r(e),hur,wur);var c=n[5];return Ld(f1r(e),mur,c),Nd(f1r(e),Fur),Nd(f1r(e),yur)})),Xk(c4r,(function(r,t,e){var n=Ld(f4r,r,t);return Ld(c1r(Qnr),n,e)}));var s4r=[0,a4r,i4r,f4r,c4r],o4r=function r(t,e,n,u){return r.fun(t,e,n,u)},v4r=function r(t,e,n){return r.fun(t,e,n)},l4r=function r(t,e,n,u){return r.fun(t,e,n,u)},b4r=function r(t,e,n){return r.fun(t,e,n)};Xk(o4r,(function(r,t,e,n){Nd(f1r(e),Nnr),Ld(f1r(e),Rnr,Lnr);var u=n[1];Ld(f1r(e),Mnr,u),Nd(f1r(e),jnr),Nd(f1r(e),Unr),Ld(f1r(e),Jnr,Xnr);var a=n[2];Ld(f1r(e),Gnr,a),Nd(f1r(e),qnr),Nd(f1r(e),znr),Ld(f1r(e),Wnr,Vnr);var i=n[3];Nd(f1r(e),Ynr);return rZr((function(n,u){return n&&Nd(f1r(e),Pnr),Md(l4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,i),Nd(f1r(e),Hnr),Nd(f1r(e),$nr),Nd(f1r(e),Knr)})),Xk(v4r,(function(r,t,e){var n=Ld(o4r,r,t);return Ld(c1r(Onr),n,e)})),Xk(l4r,(function(r,t,e,n){switch(n[0]){case 0:Nd(f1r(e),Enr);var u=n[1];return Md(G7r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),_nr);case 1:Nd(f1r(e),gnr);var a=n[1];return Md(Y7r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),Cnr);case 2:Nd(f1r(e),Snr);var i=n[1];return Md(Z7r[3],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),xnr);case 3:Nd(f1r(e),Tnr);var f=n[1];return Md(u4r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),Nd(f1r(e),Anr);default:Nd(f1r(e),Bnr);var c=n[1];return Md(s4r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,c),Nd(f1r(e),Inr)}})),Xk(b4r,(function(r,t,e){var n=Ld(l4r,r,t);return Ld(c1r(ynr),n,e)}));var D4r=[0,G7r,Y7r,Z7r,u4r,s4r,o4r,v4r,l4r,b4r],k4r=function r(t,e,n,u){return r.fun(t,e,n,u)},p4r=function r(t,e,n){return r.fun(t,e,n)};Xk(k4r,(function(r,t,e,n){Nd(f1r(e),cnr),Ld(f1r(e),onr,snr);var u=n[1];Nd(f1r(e),vnr),Ld(r,e,u[1]),Nd(f1r(e),lnr);var a=u[2];Md(D4r[6],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),bnr),Nd(f1r(e),Dnr),Nd(f1r(e),knr),Ld(f1r(e),dnr,pnr);var i=n[2];Nd(f1r(e),wnr);return rZr((function(n,u){n&&Nd(f1r(e),unr),Nd(f1r(e),anr),Ld(r,e,u[1]),Nd(f1r(e),inr);var a=u[2];return Md(L7r[2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),fnr),1}),0,i),Nd(f1r(e),hnr),Nd(f1r(e),mnr),Nd(f1r(e),Fnr)})),Xk(p4r,(function(r,t,e){var n=Ld(k4r,r,t);return Ld(c1r(nnr),n,e)}));var d4r=[0,k4r,p4r],w4r=function r(t,e,n,u){return r.fun(t,e,n,u)},h4r=function r(t,e,n){return r.fun(t,e,n)},m4r=function r(t,e,n,u){return r.fun(t,e,n,u)},F4r=function r(t,e,n){return r.fun(t,e,n)},y4r=function r(t,e,n,u){return r.fun(t,e,n,u)},E4r=function r(t,e,n){return r.fun(t,e,n)},_4r=function r(t,e,n,u){return r.fun(t,e,n,u)},g4r=function r(t,e,n){return r.fun(t,e,n)};Xk(w4r,(function(r,t,e,n){Nd(f1r(e),rnr),Ld(t,e,n[1]),Nd(f1r(e),tnr);var u=n[2];return Md(m4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),enr)})),Xk(h4r,(function(r,t,e){var n=Ld(w4r,r,t);return Ld(c1r(Zer),n,e)})),Xk(m4r,(function(r,t,e,n){if("number"==typeof n)switch(n){case 0:return G0r(e,uer);case 1:return G0r(e,aer);case 2:return G0r(e,ier);case 3:return G0r(e,fer);case 4:return G0r(e,cer);case 5:return G0r(e,ser);case 6:return G0r(e,oer);case 7:return G0r(e,ver);case 8:return G0r(e,ler);default:return G0r(e,ber)}else switch(n[0]){case 0:Nd(f1r(e),Der);var u=n[1];return Md(w4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),ker);case 1:Nd(f1r(e),per);var a=n[1];return Md(C7r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),der);case 2:Nd(f1r(e),wer);var i=n[1];return Md(D4r[6],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),her);case 3:Nd(f1r(e),mer);var f=n[1];return Md(d4r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),Nd(f1r(e),Fer);case 4:Nd(f1r(e),yer);var c=n[1];return Md(w4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,c),Nd(f1r(e),Eer);case 5:Nd(f1r(e),_er);var s=n[1];return Md(L7r[2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,s),Nd(f1r(e),ger);case 6:Nd(f1r(e),Cer);var o=n[1];Md(w4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,o),Nd(f1r(e),Ser);var v=n[2];Md(w4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,v),Nd(f1r(e),xer),Nd(f1r(e),Ter);return rZr((function(n,u){return n&&Nd(f1r(e),ner),Md(w4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,n[3]),Nd(f1r(e),Aer),Nd(f1r(e),Ber);case 7:Nd(f1r(e),Ier);var l=n[1];Md(w4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,l),Nd(f1r(e),Oer);var b=n[2];Md(w4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,b),Nd(f1r(e),Per),Nd(f1r(e),Ner);return rZr((function(n,u){return n&&Nd(f1r(e),eer),Md(w4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,n[3]),Nd(f1r(e),Ler),Nd(f1r(e),Rer);case 8:Nd(f1r(e),Mer);var D=n[1];return Md(w4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,D),Nd(f1r(e),jer);case 9:Nd(f1r(e),Uer),Nd(f1r(e),Xer);return rZr((function(n,u){return n&&Nd(f1r(e),ter),Md(w4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,n[1]),Nd(f1r(e),Jer),Nd(f1r(e),Ger);case 10:return Nd(f1r(e),qer),Ld(A2r[1],e,n[1]),Nd(f1r(e),zer);case 11:return Nd(f1r(e),Ver),Ld(B2r[1],e,n[1]),Nd(f1r(e),Wer);case 12:return Nd(f1r(e),Yer),Ld(I2r[1],e,n[1]),Nd(f1r(e),Her);default:Nd(f1r(e),$er);var k=n[1];return Ld(f1r(e),Ker,k),Nd(f1r(e),Qer)}})),Xk(F4r,(function(r,t,e){var n=Ld(m4r,r,t);return Ld(c1r(rer),n,e)})),Xk(y4r,(function(r,t,e,n){Nd(f1r(e),Ktr),Ld(r,e,n[1]),Nd(f1r(e),Qtr);var u=n[2];return Md(w4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Ztr)})),Xk(E4r,(function(r,t,e){var n=Ld(y4r,r,t);return Ld(c1r($tr),n,e)})),Xk(_4r,(function(r,t,e,n){if(0===n[0])return Nd(f1r(e),Vtr),Ld(t,e,n[1]),Nd(f1r(e),Wtr);Nd(f1r(e),Ytr);var u=n[1];return Md(P2r[9],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Htr)})),Xk(g4r,(function(r,t,e){var n=Ld(_4r,r,t);return Ld(c1r(ztr),n,e)}));var C4r=function r(t,e,n,u){return r.fun(t,e,n,u)},S4r=function r(t,e,n){return r.fun(t,e,n)},x4r=function r(t,e,n,u){return r.fun(t,e,n,u)},T4r=function r(t,e,n){return r.fun(t,e,n)};Xk(C4r,(function(r,t,e,n){Nd(f1r(e),Jtr),Ld(t,e,n[1]),Nd(f1r(e),Gtr);var u=n[2];return Md(x4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),qtr)})),Xk(S4r,(function(r,t,e){var n=Ld(C4r,r,t);return Ld(c1r(Xtr),n,e)})),Xk(x4r,(function(r,t,e,n){Nd(f1r(e),wtr),Ld(f1r(e),mtr,htr);var u=n[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Ftr),Nd(f1r(e),ytr),Ld(f1r(e),_tr,Etr);var a=n[2];Md(P2r[11],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),gtr),Nd(f1r(e),Ctr),Ld(f1r(e),xtr,Str);var i=n[3];if(i){G0r(e,Ttr);var f=i[1];Rd(O2r[1],(function(t){return Nd(r,t)}),e,f),G0r(e,Atr)}else G0r(e,Btr);Nd(f1r(e),Itr),Nd(f1r(e),Otr),Ld(f1r(e),Ntr,Ptr);var c=n[4];if(c){G0r(e,Ltr);var s=c[1];Md(P2r[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,s),G0r(e,Rtr)}else G0r(e,Mtr);return Nd(f1r(e),jtr),Nd(f1r(e),Utr)})),Xk(T4r,(function(r,t,e){var n=Ld(x4r,r,t);return Ld(c1r(dtr),n,e)}));var A4r=[0,C4r,S4r,x4r,T4r],B4r=function r(t,e,n,u){return r.fun(t,e,n,u)},I4r=function r(t,e,n){return r.fun(t,e,n)},O4r=function r(t,e,n,u){return r.fun(t,e,n,u)},P4r=function r(t,e,n){return r.fun(t,e,n)};Xk(B4r,(function(r,t,e,n){Nd(f1r(e),Dtr),Ld(r,e,n[1]),Nd(f1r(e),ktr);var u=n[2];return Md(O4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),ptr)})),Xk(I4r,(function(r,t,e){var n=Ld(B4r,r,t);return Ld(c1r(btr),n,e)})),Xk(O4r,(function(r,t,e,n){Nd(f1r(e),vtr);return rZr((function(n,u){return n&&Nd(f1r(e),otr),Md(A4r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,n),Nd(f1r(e),ltr)})),Xk(P4r,(function(r,t,e){var n=Ld(O4r,r,t);return Ld(c1r(str),n,e)}));var N4r=function r(t,e,n,u){return r.fun(t,e,n,u)},L4r=function r(t,e,n){return r.fun(t,e,n)},R4r=function r(t,e,n,u){return r.fun(t,e,n,u)},M4r=function r(t,e,n){return r.fun(t,e,n)},j4r=[0,A4r,B4r,I4r,O4r,P4r];Xk(N4r,(function(r,t,e,n){Nd(f1r(e),itr),Ld(r,e,n[1]),Nd(f1r(e),ftr);var u=n[2];return Md(R4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),ctr)})),Xk(L4r,(function(r,t,e){var n=Ld(N4r,r,t);return Ld(c1r(atr),n,e)})),Xk(R4r,(function(r,t,e,n){Nd(f1r(e),ntr);return rZr((function(n,u){return n&&Nd(f1r(e),etr),Md(P2r[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,n),Nd(f1r(e),utr)})),Xk(M4r,(function(r,t,e){var n=Ld(R4r,r,t);return Ld(c1r(ttr),n,e)}));var U4r=function r(t,e,n,u){return r.fun(t,e,n,u)},X4r=function r(t,e,n){return r.fun(t,e,n)},J4r=function r(t,e,n,u){return r.fun(t,e,n,u)},G4r=function r(t,e,n){return r.fun(t,e,n)},q4r=[0,N4r,L4r,R4r,M4r];Xk(U4r,(function(r,t,e,n){Nd(f1r(e),Qrr),Ld(r,e,n[1]),Nd(f1r(e),Zrr);var u=n[2];return Md(J4r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),rtr)})),Xk(X4r,(function(r,t,e){var n=Ld(U4r,r,t);return Ld(c1r(Krr),n,e)})),Xk(J4r,(function(r,t,e,n){if(n){Nd(f1r(e),Yrr);var u=n[1];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Hrr)}return G0r(e,$rr)})),Xk(G4r,(function(r,t,e){var n=Ld(J4r,r,t);return Ld(c1r(Wrr),n,e)})),Rd(O1r,Uvr,P2r,[0,C7r,L7r,D4r,d4r,w4r,h4r,m4r,F4r,y4r,E4r,_4r,g4r,j4r,q4r,[0,U4r,X4r,J4r,G4r]]);var z4r=function r(t,e,n,u){return r.fun(t,e,n,u)},V4r=function r(t,e,n){return r.fun(t,e,n)};Xk(z4r,(function(r,t,e,n){Nd(f1r(e),Urr),Ld(f1r(e),Jrr,Xrr);var u=n[1];Nd(f1r(e),Grr);return rZr((function(n,u){return n&&Nd(f1r(e),jrr),Md(N2r[32],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,u),Nd(f1r(e),qrr),Nd(f1r(e),zrr),Nd(f1r(e),Vrr)})),Xk(V4r,(function(r,t,e){var n=Ld(z4r,r,t);return Ld(c1r(Mrr),n,e)}));var W4r=[0,z4r,V4r],Y4r=function r(t,e,n,u){return r.fun(t,e,n,u)},H4r=function r(t,e,n){return r.fun(t,e,n)};Xk(Y4r,(function(r,t,e,n){Nd(f1r(e),krr),Ld(f1r(e),drr,prr);var u=n[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),wrr),Nd(f1r(e),hrr),Ld(f1r(e),Frr,mrr);var a=n[2];Md(N2r[32],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),yrr),Nd(f1r(e),Err),Ld(f1r(e),grr,_rr);var i=n[3];if(i){G0r(e,Crr);var f=i[1];Md(N2r[32],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),G0r(e,Srr)}else G0r(e,xrr);Nd(f1r(e),Trr),Nd(f1r(e),Arr),Ld(f1r(e),Irr,Brr);var c=n[4];if(c){G0r(e,Orr);var s=c[1];Md(C2r[1],(function(t){return Nd(r,t)}),(function(r,t){return G0r(r,Drr)}),e,s),G0r(e,Prr)}else G0r(e,Nrr);return Nd(f1r(e),Lrr),Nd(f1r(e),Rrr)})),Xk(H4r,(function(r,t,e){var n=Ld(Y4r,r,t);return Ld(c1r(brr),n,e)}));var $4r=[0,Y4r,H4r],K4r=function r(t,e,n,u){return r.fun(t,e,n,u)},Q4r=function r(t,e,n){return r.fun(t,e,n)};Xk(K4r,(function(r,t,e,n){Nd(f1r(e),urr),Ld(f1r(e),irr,arr);var u=n[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(t){return Nd(r,t)}),e,u),Nd(f1r(e),frr),Nd(f1r(e),crr),Ld(f1r(e),orr,srr);var a=n[2];return Md(N2r[32],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),vrr),Nd(f1r(e),lrr)})),Xk(Q4r,(function(r,t,e){var n=Ld(K4r,r,t);return Ld(c1r(nrr),n,e)}));var Z4r=[0,K4r,Q4r],r8r=function r(t,e,n){return r.fun(t,e,n)},t8r=function r(t,e){return r.fun(t,e)};Xk(r8r,(function(r,t,e){Nd(f1r(t),J9),Ld(f1r(t),q9,G9);var n=e[1];if(n){G0r(t,z9);var u=n[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(t){return Nd(r,t)}),t,u),G0r(t,V9)}else G0r(t,W9);Nd(f1r(t),Y9),Nd(f1r(t),H9),Ld(f1r(t),K9,$9);var a=e[2];if(a){G0r(t,Q9);var i=a[1];Md(C2r[1],(function(t){return Nd(r,t)}),(function(r,t){return G0r(r,X9)}),t,i),G0r(t,Z9)}else G0r(t,rrr);return Nd(f1r(t),trr),Nd(f1r(t),err)})),Xk(t8r,(function(r,t){var e=Nd(r8r,r);return Ld(c1r(U9),e,t)}));var e8r=[0,r8r,t8r],n8r=function r(t,e,n){return r.fun(t,e,n)},u8r=function r(t,e){return r.fun(t,e)};Xk(n8r,(function(r,t,e){Nd(f1r(t),g9),Ld(f1r(t),S9,C9);var n=e[1];if(n){G0r(t,x9);var u=n[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(t){return Nd(r,t)}),t,u),G0r(t,T9)}else G0r(t,A9);Nd(f1r(t),B9),Nd(f1r(t),I9),Ld(f1r(t),P9,O9);var a=e[2];if(a){G0r(t,N9);var i=a[1];Md(C2r[1],(function(t){return Nd(r,t)}),(function(r,t){return G0r(r,_9)}),t,i),G0r(t,L9)}else G0r(t,R9);return Nd(f1r(t),M9),Nd(f1r(t),j9)})),Xk(u8r,(function(r,t){var e=Nd(n8r,r);return Ld(c1r(E9),e,t)}));var a8r=[0,n8r,u8r],i8r=function r(t,e,n,u){return r.fun(t,e,n,u)},f8r=function r(t,e,n){return r.fun(t,e,n)};Xk(i8r,(function(r,t,e,n){Nd(f1r(e),D9),Ld(f1r(e),p9,k9);var u=n[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),d9),Nd(f1r(e),w9),Ld(f1r(e),m9,h9);var a=n[2];return Md(N2r[32],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),F9),Nd(f1r(e),y9)})),Xk(f8r,(function(r,t,e){var n=Ld(i8r,r,t);return Ld(c1r(b9),n,e)}));var c8r=[0,i8r,f8r],s8r=function r(t,e,n,u){return r.fun(t,e,n,u)},o8r=function r(t,e,n){return r.fun(t,e,n)};Xk(s8r,(function(r,t,e,n){Nd(f1r(e),K5),Ld(f1r(e),Z5,Q5);var u=n[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),r9),Nd(f1r(e),t9),Ld(f1r(e),n9,e9);var a=n[2];if(a){G0r(e,u9);var i=a[1];Md(P2r[13][2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,a9)}else G0r(e,i9);Nd(f1r(e),f9),Nd(f1r(e),c9),Ld(f1r(e),o9,s9);var f=n[3];return Md(P2r[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),Nd(f1r(e),v9),Nd(f1r(e),l9)})),Xk(o8r,(function(r,t,e){var n=Ld(s8r,r,t);return Ld(c1r($5),n,e)}));var v8r=[0,s8r,o8r],l8r=function r(t,e,n,u){return r.fun(t,e,n,u)},b8r=function r(t,e,n){return r.fun(t,e,n)};Xk(l8r,(function(r,t,e,n){Nd(f1r(e),_5),Ld(f1r(e),C5,g5);var u=n[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),S5),Nd(f1r(e),x5),Ld(f1r(e),A5,T5);var a=n[2];if(a){G0r(e,B5);var i=a[1];Md(P2r[13][2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,I5)}else G0r(e,O5);Nd(f1r(e),P5),Nd(f1r(e),N5),Ld(f1r(e),R5,L5);var f=n[3];if(f){G0r(e,M5);var c=f[1];Md(P2r[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,c),G0r(e,j5)}else G0r(e,U5);Nd(f1r(e),X5),Nd(f1r(e),J5),Ld(f1r(e),q5,G5);var s=n[4];if(s){G0r(e,z5);var o=s[1];Md(P2r[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,o),G0r(e,V5)}else G0r(e,W5);return Nd(f1r(e),Y5),Nd(f1r(e),H5)})),Xk(b8r,(function(r,t,e){var n=Ld(l8r,r,t);return Ld(c1r(E5),n,e)}));var D8r=[0,l8r,b8r],k8r=function r(t,e,n,u){return r.fun(t,e,n,u)},p8r=function r(t,e,n){return r.fun(t,e,n)},d8r=function r(t,e,n,u){return r.fun(t,e,n,u)},w8r=function r(t,e,n){return r.fun(t,e,n)};Xk(k8r,(function(r,t,e,n){Nd(f1r(e),m5),Ld(r,e,n[1]),Nd(f1r(e),F5);var u=n[2];return Md(d8r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),y5)})),Xk(p8r,(function(r,t,e){var n=Ld(k8r,r,t);return Ld(c1r(h5),n,e)})),Xk(d8r,(function(r,t,e,n){Nd(f1r(e),a5),Ld(f1r(e),f5,i5);var u=n[1];if(u){G0r(e,c5);var a=u[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),G0r(e,s5)}else G0r(e,o5);Nd(f1r(e),v5),Nd(f1r(e),l5),Ld(f1r(e),D5,b5);var i=n[2];Nd(f1r(e),k5);return rZr((function(n,u){return n&&Nd(f1r(e),u5),Md(N2r[32],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,i),Nd(f1r(e),p5),Nd(f1r(e),d5),Nd(f1r(e),w5)})),Xk(w8r,(function(r,t,e){var n=Ld(d8r,r,t);return Ld(c1r(n5),n,e)}));var h8r=[0,k8r,p8r,d8r,w8r],m8r=function r(t,e,n,u){return r.fun(t,e,n,u)},F8r=function r(t,e,n){return r.fun(t,e,n)};Xk(m8r,(function(r,t,e,n){Nd(f1r(e),V6),Ld(f1r(e),Y6,W6);var u=n[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),H6),Nd(f1r(e),$6),Ld(f1r(e),Q6,K6);var a=n[2];Nd(f1r(e),Z6);return rZr((function(n,u){return n&&Nd(f1r(e),z6),Md(h8r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,a),Nd(f1r(e),r5),Nd(f1r(e),t5),Nd(f1r(e),e5)})),Xk(F8r,(function(r,t,e){var n=Ld(m8r,r,t);return Ld(c1r(q6),n,e)}));var y8r=[0,h8r,m8r,F8r],E8r=function r(t,e,n,u){return r.fun(t,e,n,u)},_8r=function r(t,e,n){return r.fun(t,e,n)};Xk(E8r,(function(r,t,e,n){Nd(f1r(e),T6),Ld(f1r(e),B6,A6);var u=n[1];if(u){G0r(e,I6);var a=u[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),G0r(e,O6)}else G0r(e,P6);Nd(f1r(e),N6),Nd(f1r(e),L6),Ld(f1r(e),M6,R6);var i=n[2];if(i){G0r(e,j6);var f=i[1];Md(C2r[1],(function(t){return Nd(r,t)}),(function(r,t){return G0r(r,x6)}),e,f),G0r(e,U6)}else G0r(e,X6);return Nd(f1r(e),J6),Nd(f1r(e),G6)})),Xk(_8r,(function(r,t,e){var n=Ld(E8r,r,t);return Ld(c1r(S6),n,e)}));var g8r=[0,E8r,_8r],C8r=function r(t,e,n,u){return r.fun(t,e,n,u)},S8r=function r(t,e,n){return r.fun(t,e,n)};Xk(C8r,(function(r,t,e,n){Nd(f1r(e),y6),Ld(f1r(e),_6,E6);var u=n[1];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),g6),Nd(f1r(e),C6)})),Xk(S8r,(function(r,t,e){var n=Ld(C8r,r,t);return Ld(c1r(F6),n,e)}));var x8r=[0,C8r,S8r],T8r=function r(t,e,n,u){return r.fun(t,e,n,u)},A8r=function r(t,e,n){return r.fun(t,e,n)},B8r=function r(t,e,n,u){return r.fun(t,e,n,u)},I8r=function r(t,e,n){return r.fun(t,e,n)};Xk(T8r,(function(r,t,e,n){Nd(f1r(e),w6),Ld(r,e,n[1]),Nd(f1r(e),h6);var u=n[2];return Md(B8r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),m6)})),Xk(A8r,(function(r,t,e){var n=Ld(T8r,r,t);return Ld(c1r(d6),n,e)})),Xk(B8r,(function(r,t,e,n){Nd(f1r(e),H3),Ld(f1r(e),K3,$3);var u=n[1];if(u){G0r(e,Q3);var a=u[1];Md(M2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),G0r(e,Z3)}else G0r(e,r6);Nd(f1r(e),t6),Nd(f1r(e),e6),Ld(f1r(e),u6,n6);var i=n[2];Nd(f1r(e),a6),Ld(r,e,i[1]),Nd(f1r(e),i6);var f=i[2];Md(W4r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),Nd(f1r(e),f6),Nd(f1r(e),c6),Nd(f1r(e),s6),Ld(f1r(e),v6,o6);var c=n[3];if(c){G0r(e,l6);var s=c[1];Md(C2r[1],(function(t){return Nd(r,t)}),(function(r,t){return G0r(r,Y3)}),e,s),G0r(e,b6)}else G0r(e,D6);return Nd(f1r(e),k6),Nd(f1r(e),p6)})),Xk(I8r,(function(r,t,e){var n=Ld(B8r,r,t);return Ld(c1r(W3),n,e)}));var O8r=[0,T8r,A8r,B8r,I8r],P8r=function r(t,e,n,u){return r.fun(t,e,n,u)},N8r=function r(t,e,n){return r.fun(t,e,n)};Xk(P8r,(function(r,t,e,n){Nd(f1r(e),k3),Ld(f1r(e),d3,p3);var u=n[1];Nd(f1r(e),w3),Ld(r,e,u[1]),Nd(f1r(e),h3);var a=u[2];Md(W4r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),m3),Nd(f1r(e),F3),Nd(f1r(e),y3),Ld(f1r(e),_3,E3);var i=n[2];if(i){G0r(e,g3);var f=i[1];Md(O8r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),G0r(e,C3)}else G0r(e,S3);Nd(f1r(e),x3),Nd(f1r(e),T3),Ld(f1r(e),B3,A3);var c=n[3];if(c){var s=c[1];G0r(e,I3),Nd(f1r(e),O3),Ld(r,e,s[1]),Nd(f1r(e),P3);var o=s[2];Md(W4r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,o),Nd(f1r(e),N3),G0r(e,L3)}else G0r(e,R3);Nd(f1r(e),M3),Nd(f1r(e),j3),Ld(f1r(e),X3,U3);var v=n[4];if(v){G0r(e,J3);var l=v[1];Md(C2r[1],(function(t){return Nd(r,t)}),(function(r,t){return G0r(r,D3)}),e,l),G0r(e,G3)}else G0r(e,q3);return Nd(f1r(e),z3),Nd(f1r(e),V3)})),Xk(N8r,(function(r,t,e){var n=Ld(P8r,r,t);return Ld(c1r(b3),n,e)}));var L8r=[0,O8r,P8r,N8r],R8r=function r(t,e,n,u){return r.fun(t,e,n,u)},M8r=function r(t,e,n){return r.fun(t,e,n)},j8r=function r(t,e,n,u){return r.fun(t,e,n,u)},U8r=function r(t,e,n){return r.fun(t,e,n)};Xk(R8r,(function(r,t,e,n){Nd(f1r(e),o3),Ld(r,e,n[1]),Nd(f1r(e),v3);var u=n[2];return Md(j8r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),l3)})),Xk(M8r,(function(r,t,e){var n=Ld(R8r,r,t);return Ld(c1r(s3),n,e)})),Xk(j8r,(function(r,t,e,n){Nd(f1r(e),K8),Ld(f1r(e),Z8,Q8);var u=n[1];Md(M2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),r3),Nd(f1r(e),t3),Ld(f1r(e),n3,e3);var a=n[2];if(a){G0r(e,u3);var i=a[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,a3)}else G0r(e,i3);return Nd(f1r(e),f3),Nd(f1r(e),c3)})),Xk(U8r,(function(r,t,e){var n=Ld(j8r,r,t);return Ld(c1r($8),n,e)}));var X8r=[0,R8r,M8r,j8r,U8r],J8r=function r(t,e,n,u){return r.fun(t,e,n,u)},G8r=function r(t,e,n){return r.fun(t,e,n)},q8r=function r(t,e){return r.fun(t,e)},z8r=function r(t){return r.fun(t)};Xk(J8r,(function(r,t,e,n){Nd(f1r(e),j8),Ld(f1r(e),X8,U8);var u=n[1];Nd(f1r(e),J8);return rZr((function(n,u){return n&&Nd(f1r(e),M8),Md(X8r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,u),Nd(f1r(e),G8),Nd(f1r(e),q8),Nd(f1r(e),z8),Ld(f1r(e),W8,V8),Ld(q8r,e,n[2]),Nd(f1r(e),Y8),Nd(f1r(e),H8)})),Xk(G8r,(function(r,t,e){var n=Ld(J8r,r,t);return Ld(c1r(R8),n,e)})),Xk(q8r,(function(r,t){switch(t){case 0:return G0r(r,P8);case 1:return G0r(r,N8);default:return G0r(r,L8)}})),Xk(z8r,(function(r){return Ld(c1r(O8),q8r,r)}));var V8r=[0,X8r,J8r,G8r,q8r,z8r],W8r=function r(t,e,n,u){return r.fun(t,e,n,u)},Y8r=function r(t,e,n){return r.fun(t,e,n)};Xk(W8r,(function(r,t,e,n){Nd(f1r(e),_8),Ld(f1r(e),C8,g8);var u=n[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),S8),Nd(f1r(e),x8),Ld(f1r(e),A8,T8);var a=n[2];return Md(N2r[32],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),B8),Nd(f1r(e),I8)})),Xk(Y8r,(function(r,t,e){var n=Ld(W8r,r,t);return Ld(c1r(E8),n,e)}));var H8r=[0,W8r,Y8r],$8r=function r(t,e,n,u){return r.fun(t,e,n,u)},K8r=function r(t,e,n){return r.fun(t,e,n)};Xk($8r,(function(r,t,e,n){Nd(f1r(e),f8),Ld(f1r(e),s8,c8);var u=n[1];Md(N2r[32],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),o8),Nd(f1r(e),v8),Ld(f1r(e),b8,l8);var a=n[2];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),D8),Nd(f1r(e),k8),Ld(f1r(e),d8,p8);var i=n[3];if(i){G0r(e,w8);var f=i[1];Md(C2r[1],(function(t){return Nd(r,t)}),(function(r,t){return G0r(r,i8)}),e,f),G0r(e,h8)}else G0r(e,m8);return Nd(f1r(e),F8),Nd(f1r(e),y8)})),Xk(K8r,(function(r,t,e){var n=Ld($8r,r,t);return Ld(c1r(a8),n,e)}));var Q8r=[0,$8r,K8r],Z8r=function r(t,e,n,u){return r.fun(t,e,n,u)},r3r=function r(t,e,n){return r.fun(t,e,n)},t3r=function r(t,e,n,u){return r.fun(t,e,n,u)},e3r=function r(t,e,n){return r.fun(t,e,n)};Xk(Z8r,(function(r,t,e,n){Nd(f1r(e),O4),Ld(f1r(e),N4,P4);var u=n[1];if(u){G0r(e,L4);var a=u[1];Md(t3r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),G0r(e,R4)}else G0r(e,M4);Nd(f1r(e),j4),Nd(f1r(e),U4),Ld(f1r(e),J4,X4);var i=n[2];if(i){G0r(e,G4);var f=i[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),G0r(e,q4)}else G0r(e,z4);Nd(f1r(e),V4),Nd(f1r(e),W4),Ld(f1r(e),H4,Y4);var c=n[3];if(c){G0r(e,$4);var s=c[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,s),G0r(e,K4)}else G0r(e,Q4);Nd(f1r(e),Z4),Nd(f1r(e),r8),Ld(f1r(e),e8,t8);var o=n[4];return Md(N2r[32],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,o),Nd(f1r(e),n8),Nd(f1r(e),u8)})),Xk(r3r,(function(r,t,e){var n=Ld(Z8r,r,t);return Ld(c1r(I4),n,e)})),Xk(t3r,(function(r,t,e,n){if(0===n[0]){var u=n[1];Nd(f1r(e),g4),Nd(f1r(e),C4),Ld(r,e,u[1]),Nd(f1r(e),S4);var a=u[2];return Md(V8r[2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),x4),Nd(f1r(e),T4)}Nd(f1r(e),A4);var i=n[1];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),B4)})),Xk(e3r,(function(r,t,e){var n=Ld(t3r,r,t);return Ld(c1r(_4),n,e)}));var n3r=[0,Z8r,r3r,t3r,e3r],u3r=function r(t,e,n,u){return r.fun(t,e,n,u)},a3r=function r(t,e,n){return r.fun(t,e,n)},i3r=function r(t,e,n,u){return r.fun(t,e,n,u)},f3r=function r(t,e,n){return r.fun(t,e,n)};Xk(u3r,(function(r,t,e,n){Nd(f1r(e),i4),Ld(f1r(e),c4,f4);var u=n[1];Md(i3r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),s4),Nd(f1r(e),o4),Ld(f1r(e),l4,v4);var a=n[2];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),b4),Nd(f1r(e),D4),Ld(f1r(e),p4,k4);var i=n[3];Md(N2r[32],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),d4),Nd(f1r(e),w4),Ld(f1r(e),m4,h4);var f=n[4];return Ld(f1r(e),F4,f),Nd(f1r(e),y4),Nd(f1r(e),E4)})),Xk(a3r,(function(r,t,e){var n=Ld(u3r,r,t);return Ld(c1r(a4),n,e)})),Xk(i3r,(function(r,t,e,n){if(0===n[0]){var u=n[1];Nd(f1r(e),Q7),Nd(f1r(e),Z7),Ld(r,e,u[1]),Nd(f1r(e),r4);var a=u[2];return Md(V8r[2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),t4),Nd(f1r(e),e4)}Nd(f1r(e),n4);var i=n[1];return Md(M2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),u4)})),Xk(f3r,(function(r,t,e){var n=Ld(i3r,r,t);return Ld(c1r(K7),n,e)}));var c3r=[0,u3r,a3r,i3r,f3r],s3r=function r(t,e,n,u){return r.fun(t,e,n,u)},o3r=function r(t,e,n){return r.fun(t,e,n)},v3r=function r(t,e,n,u){return r.fun(t,e,n,u)},l3r=function r(t,e,n){return r.fun(t,e,n)};Xk(s3r,(function(r,t,e,n){Nd(f1r(e),O7),Ld(f1r(e),N7,P7);var u=n[1];Md(v3r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),L7),Nd(f1r(e),R7),Ld(f1r(e),j7,M7);var a=n[2];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),U7),Nd(f1r(e),X7),Ld(f1r(e),G7,J7);var i=n[3];Md(N2r[32],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),q7),Nd(f1r(e),z7),Ld(f1r(e),W7,V7);var f=n[4];return Ld(f1r(e),Y7,f),Nd(f1r(e),H7),Nd(f1r(e),$7)})),Xk(o3r,(function(r,t,e){var n=Ld(s3r,r,t);return Ld(c1r(I7),n,e)})),Xk(v3r,(function(r,t,e,n){if(0===n[0]){var u=n[1];Nd(f1r(e),g7),Nd(f1r(e),C7),Ld(r,e,u[1]),Nd(f1r(e),S7);var a=u[2];return Md(V8r[2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),x7),Nd(f1r(e),T7)}Nd(f1r(e),A7);var i=n[1];return Md(M2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),B7)})),Xk(l3r,(function(r,t,e){var n=Ld(v3r,r,t);return Ld(c1r(_7),n,e)}));var b3r=[0,s3r,o3r,v3r,l3r],D3r=function r(t,e,n){return r.fun(t,e,n)},k3r=function r(t,e){return r.fun(t,e)},p3r=function r(t,e,n){return r.fun(t,e,n)},d3r=function r(t,e){return r.fun(t,e)};Xk(D3r,(function(r,t,e){Nd(f1r(t),F7),Ld(r,t,e[1]),Nd(f1r(t),y7);var n=e[2];return Rd(p3r,(function(t){return Nd(r,t)}),t,n),Nd(f1r(t),E7)})),Xk(k3r,(function(r,t){var e=Nd(D3r,r);return Ld(c1r(m7),e,t)})),Xk(p3r,(function(r,t,e){Nd(f1r(t),k7),Ld(f1r(t),d7,p7);var n=e[1];return Md(S2r[1],(function(t){return Nd(r,t)}),(function(t){return Nd(r,t)}),t,n),Nd(f1r(t),w7),Nd(f1r(t),h7)})),Xk(d3r,(function(r,t){var e=Nd(p3r,r);return Ld(c1r(D7),e,t)}));var w3r=[0,D3r,k3r,p3r,d3r],h3r=function r(t,e,n,u){return r.fun(t,e,n,u)},m3r=function r(t,e,n){return r.fun(t,e,n)},F3r=function r(t,e,n,u){return r.fun(t,e,n,u)},y3r=function r(t,e,n){return r.fun(t,e,n)};Xk(h3r,(function(r,t,e,n){Nd(f1r(e),v7),Ld(t,e,n[1]),Nd(f1r(e),l7);var u=n[2];return Md(F3r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),b7)})),Xk(m3r,(function(r,t,e){var n=Ld(h3r,r,t);return Ld(c1r(o7),n,e)})),Xk(F3r,(function(r,t,e,n){Nd(f1r(e),Q2),Ld(f1r(e),r7,Z2);var u=n[1];Md(S2r[1],(function(r){return Nd(t,r)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),t7),Nd(f1r(e),e7),Ld(f1r(e),u7,n7);var a=n[2];return Nd(f1r(e),a7),Ld(t,e,a[1]),Nd(f1r(e),i7),Ld(r,e,a[2]),Nd(f1r(e),f7),Nd(f1r(e),c7),Nd(f1r(e),s7)})),Xk(y3r,(function(r,t,e){var n=Ld(F3r,r,t);return Ld(c1r(K2),n,e)}));var E3r=[0,h3r,m3r,F3r,y3r],_3r=function r(t,e,n){return r.fun(t,e,n)},g3r=function r(t,e){return r.fun(t,e)};Xk(_3r,(function(r,t,e){Nd(f1r(t),j2),Ld(f1r(t),X2,U2);var n=e[1];Nd(f1r(t),J2);rZr((function(e,n){return e&&Nd(f1r(t),M2),Md(E3r[1],(function(r){return Nd(f1r(r),R2)}),(function(t){return Nd(r,t)}),t,n),1}),0,n),Nd(f1r(t),G2),Nd(f1r(t),q2),Nd(f1r(t),z2),Ld(f1r(t),W2,V2);var u=e[2];return Ld(f1r(t),Y2,u),Nd(f1r(t),H2),Nd(f1r(t),$2)})),Xk(g3r,(function(r,t){var e=Nd(_3r,r);return Ld(c1r(L2),e,t)}));var C3r=[0,_3r,g3r],S3r=function r(t,e,n){return r.fun(t,e,n)},x3r=function r(t,e){return r.fun(t,e)};Xk(S3r,(function(r,t,e){Nd(f1r(t),_2),Ld(f1r(t),C2,g2);var n=e[1];Nd(f1r(t),S2);rZr((function(e,n){return e&&Nd(f1r(t),E2),Md(E3r[1],(function(r){return Nd(B2r[1],r)}),(function(t){return Nd(r,t)}),t,n),1}),0,n),Nd(f1r(t),x2),Nd(f1r(t),T2),Nd(f1r(t),A2),Ld(f1r(t),I2,B2);var u=e[2];return Ld(f1r(t),O2,u),Nd(f1r(t),P2),Nd(f1r(t),N2)})),Xk(x3r,(function(r,t){var e=Nd(S3r,r);return Ld(c1r(y2),e,t)}));var T3r=[0,S3r,x3r],A3r=function r(t,e,n){return r.fun(t,e,n)},B3r=function r(t,e){return r.fun(t,e)},I3r=function r(t,e,n,u){return r.fun(t,e,n,u)},O3r=function r(t,e,n){return r.fun(t,e,n)};Xk(A3r,(function(r,t,e){Nd(f1r(t),l2),Ld(f1r(t),D2,b2);var n=e[1];Md(I3r,(function(r){return Nd(A2r[1],r)}),(function(t){return Nd(r,t)}),t,n),Nd(f1r(t),k2),Nd(f1r(t),p2),Ld(f1r(t),w2,d2);var u=e[2];return Ld(f1r(t),h2,u),Nd(f1r(t),m2),Nd(f1r(t),F2)})),Xk(B3r,(function(r,t){var e=Nd(A3r,r);return Ld(c1r(v2),e,t)})),Xk(I3r,(function(r,t,e,n){if(0===n[0]){Nd(f1r(e),n2),Nd(f1r(e),u2);return rZr((function(r,n){return r&&Nd(f1r(e),e2),Rd(w3r[1],(function(r){return Nd(t,r)}),e,n),1}),0,n[1]),Nd(f1r(e),a2),Nd(f1r(e),i2)}Nd(f1r(e),f2),Nd(f1r(e),c2);return rZr((function(n,u){return n&&Nd(f1r(e),t2),Md(E3r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,n[1]),Nd(f1r(e),s2),Nd(f1r(e),o2)})),Xk(O3r,(function(r,t,e){var n=Ld(I3r,r,t);return Ld(c1r(r2),n,e)}));var P3r=[0,A3r,B3r,I3r,O3r],N3r=function r(t,e,n){return r.fun(t,e,n)},L3r=function r(t,e){return r.fun(t,e)};Xk(N3r,(function(r,t,e){Nd(f1r(t),W1),Ld(f1r(t),H1,Y1);var n=e[1];Nd(f1r(t),$1);return rZr((function(e,n){return e&&Nd(f1r(t),V1),Rd(w3r[1],(function(t){return Nd(r,t)}),t,n),1}),0,n),Nd(f1r(t),K1),Nd(f1r(t),Q1),Nd(f1r(t),Z1)})),Xk(L3r,(function(r,t){var e=Nd(N3r,r);return Ld(c1r(z1),e,t)}));var R3r=[0,N3r,L3r],M3r=function r(t,e,n,u){return r.fun(t,e,n,u)},j3r=function r(t,e,n){return r.fun(t,e,n)},U3r=function r(t,e,n){return r.fun(t,e,n)},X3r=function r(t,e){return r.fun(t,e)};Xk(M3r,(function(r,t,e,n){Nd(f1r(e),L1),Ld(f1r(e),M1,R1);var u=n[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),j1),Nd(f1r(e),U1),Ld(f1r(e),J1,X1);var a=n[2];return Rd(U3r,(function(t){return Nd(r,t)}),e,a),Nd(f1r(e),G1),Nd(f1r(e),q1)})),Xk(j3r,(function(r,t,e){var n=Ld(M3r,r,t);return Ld(c1r(N1),n,e)})),Xk(U3r,(function(r,t,e){switch(e[0]){case 0:Nd(f1r(t),S1);var n=e[1];return Rd(C3r[1],(function(t){return Nd(r,t)}),t,n),Nd(f1r(t),x1);case 1:Nd(f1r(t),T1);var u=e[1];return Rd(T3r[1],(function(t){return Nd(r,t)}),t,u),Nd(f1r(t),A1);case 2:Nd(f1r(t),B1);var a=e[1];return Rd(P3r[1],(function(t){return Nd(r,t)}),t,a),Nd(f1r(t),I1);default:Nd(f1r(t),O1);var i=e[1];return Rd(R3r[1],(function(t){return Nd(r,t)}),t,i),Nd(f1r(t),P1)}})),Xk(X3r,(function(r,t){var e=Nd(U3r,r);return Ld(c1r(C1),e,t)}));var J3r=[0,w3r,E3r,C3r,T3r,P3r,R3r,M3r,j3r,U3r,X3r],G3r=function r(t,e,n,u){return r.fun(t,e,n,u)},q3r=function r(t,e,n){return r.fun(t,e,n)};Xk(G3r,(function(r,t,e,n){Nd(f1r(e),t1),Ld(f1r(e),n1,e1);var u=n[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),u1),Nd(f1r(e),a1),Ld(f1r(e),f1,i1);var a=n[2];if(a){G0r(e,c1);var i=a[1];Md(P2r[13][2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,s1)}else G0r(e,o1);Nd(f1r(e),v1),Nd(f1r(e),l1),Ld(f1r(e),D1,b1);var f=n[3];Nd(f1r(e),k1);rZr((function(n,u){n&&Nd(f1r(e),K0),Nd(f1r(e),Q0),Ld(r,e,u[1]),Nd(f1r(e),Z0);var a=u[2];return Md(P2r[2][2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),r1),1}),0,f),Nd(f1r(e),p1),Nd(f1r(e),d1),Nd(f1r(e),w1),Ld(f1r(e),m1,h1);var c=n[4];Nd(f1r(e),F1),Ld(r,e,c[1]),Nd(f1r(e),y1);var s=c[2];return Md(P2r[3][6],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,s),Nd(f1r(e),E1),Nd(f1r(e),_1),Nd(f1r(e),g1)})),Xk(q3r,(function(r,t,e){var n=Ld(G3r,r,t);return Ld(c1r($0),n,e)}));var z3r=[0,G3r,q3r],V3r=function r(t,e,n,u){return r.fun(t,e,n,u)},W3r=function r(t,e,n){return r.fun(t,e,n)};Xk(V3r,(function(r,t,e,n){Nd(f1r(e),s0),Ld(f1r(e),v0,o0);var u=n[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),l0),Nd(f1r(e),b0),Ld(f1r(e),k0,D0);var a=n[2];if(a){G0r(e,p0);var i=a[1];Md(P2r[13][2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,d0)}else G0r(e,w0);Nd(f1r(e),h0),Nd(f1r(e),m0),Ld(f1r(e),y0,F0);var f=n[3];Nd(f1r(e),E0),Ld(r,e,f[1]),Nd(f1r(e),_0);var c=f[2];Md(P2r[3][6],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,c),Nd(f1r(e),g0),Nd(f1r(e),C0),Nd(f1r(e),S0),Ld(f1r(e),T0,x0);var s=n[4];if(s){var o=s[1];G0r(e,A0),Nd(f1r(e),B0),Ld(r,e,o[1]),Nd(f1r(e),I0);var v=o[2];Md(P2r[2][2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,v),Nd(f1r(e),O0),G0r(e,P0)}else G0r(e,N0);Nd(f1r(e),L0),Nd(f1r(e),R0),Ld(f1r(e),j0,M0);var l=n[5];Nd(f1r(e),U0);rZr((function(n,u){n&&Nd(f1r(e),a0),Nd(f1r(e),i0),Ld(r,e,u[1]),Nd(f1r(e),f0);var a=u[2];return Md(P2r[2][2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),c0),1}),0,l),Nd(f1r(e),X0),Nd(f1r(e),J0),Nd(f1r(e),G0),Ld(f1r(e),z0,q0);var b=n[6];Nd(f1r(e),V0);return rZr((function(n,u){return n&&Nd(f1r(e),u0),Md(U2r[5][1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,b),Nd(f1r(e),W0),Nd(f1r(e),Y0),Nd(f1r(e),H0)})),Xk(W3r,(function(r,t,e){var n=Ld(V3r,r,t);return Ld(c1r(n0),n,e)}));var Y3r=[0,V3r,W3r],H3r=function r(t,e,n,u){return r.fun(t,e,n,u)},$3r=function r(t,e,n){return r.fun(t,e,n)};Xk(H3r,(function(r,t,e,n){Nd(f1r(e),YZ),Ld(f1r(e),$Z,HZ);var u=n[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),KZ),Nd(f1r(e),QZ),Ld(f1r(e),r0,ZZ);var a=n[2];return Md(P2r[11],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),t0),Nd(f1r(e),e0)})),Xk($3r,(function(r,t,e){var n=Ld(H3r,r,t);return Ld(c1r(WZ),n,e)}));var K3r=[0,H3r,$3r],Q3r=function r(t,e,n,u){return r.fun(t,e,n,u)},Z3r=function r(t,e,n){return r.fun(t,e,n)};Xk(Q3r,(function(r,t,e,n){Nd(f1r(e),BZ),Ld(f1r(e),OZ,IZ);var u=n[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),PZ),Nd(f1r(e),NZ),Ld(f1r(e),RZ,LZ);var a=n[2];Md(P2r[9],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),MZ),Nd(f1r(e),jZ),Ld(f1r(e),XZ,UZ);var i=n[3];if(i){G0r(e,JZ);var f=i[1];Md(P2r[15][1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),G0r(e,GZ)}else G0r(e,qZ);return Nd(f1r(e),zZ),Nd(f1r(e),VZ)})),Xk(Z3r,(function(r,t,e){var n=Ld(Q3r,r,t);return Ld(c1r(AZ),n,e)}));var r6r=[0,Q3r,Z3r],t6r=function r(t,e,n,u){return r.fun(t,e,n,u)},e6r=function r(t,e,n){return r.fun(t,e,n)},n6r=function r(t,e,n){return r.fun(t,e,n)},u6r=function r(t,e){return r.fun(t,e)},a6r=function r(t,e,n,u){return r.fun(t,e,n,u)},i6r=function r(t,e,n){return r.fun(t,e,n)};Xk(t6r,(function(r,t,e,n){if(0===n[0]){Nd(f1r(e),EZ);var u=n[1];return Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),_Z)}var a=n[1];return Nd(f1r(e),gZ),Nd(f1r(e),CZ),Ld(t,e,a[1]),Nd(f1r(e),SZ),Ld(A2r[1],e,a[2]),Nd(f1r(e),xZ),Nd(f1r(e),TZ)})),Xk(e6r,(function(r,t,e){var n=Ld(t6r,r,t);return Ld(c1r(yZ),n,e)})),Xk(n6r,(function(r,t,e){return 0===e[0]?(Nd(f1r(t),wZ),Ld(r,t,e[1]),Nd(f1r(t),hZ)):(Nd(f1r(t),mZ),Ld(r,t,e[1]),Nd(f1r(t),FZ))})),Xk(u6r,(function(r,t){var e=Nd(n6r,r);return Ld(c1r(dZ),e,t)})),Xk(a6r,(function(r,t,e,n){Nd(f1r(e),tZ),Ld(f1r(e),nZ,eZ);var u=n[1];Md(t6r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),uZ),Nd(f1r(e),aZ),Ld(f1r(e),fZ,iZ);var a=n[2];Nd(f1r(e),cZ),Ld(r,e,a[1]),Nd(f1r(e),sZ);var i=a[2];Md(W4r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),oZ),Nd(f1r(e),vZ),Nd(f1r(e),lZ),Ld(f1r(e),DZ,bZ);var f=n[3];return Rd(n6r,(function(t){return Nd(r,t)}),e,f),Nd(f1r(e),kZ),Nd(f1r(e),pZ)})),Xk(i6r,(function(r,t,e){var n=Ld(a6r,r,t);return Ld(c1r(rZ),n,e)}));var f6r=[0,t6r,e6r,n6r,u6r,a6r,i6r],c6r=function r(t,e,n){return r.fun(t,e,n)},s6r=function r(t,e){return r.fun(t,e)},o6r=function r(t,e,n){return r.fun(t,e,n)},v6r=function r(t,e){return r.fun(t,e)};Xk(c6r,(function(r,t,e){Nd(f1r(t),KQ),Ld(r,t,e[1]),Nd(f1r(t),QQ);var n=e[2];return Rd(o6r,(function(t){return Nd(r,t)}),t,n),Nd(f1r(t),ZQ)})),Xk(s6r,(function(r,t){var e=Nd(c6r,r);return Ld(c1r($Q),e,t)})),Xk(o6r,(function(r,t,e){Nd(f1r(t),MQ),Ld(f1r(t),UQ,jQ);var n=e[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(t){return Nd(r,t)}),t,n),Nd(f1r(t),XQ),Nd(f1r(t),JQ),Ld(f1r(t),qQ,GQ);var u=e[2];if(u){G0r(t,zQ);var a=u[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(t){return Nd(r,t)}),t,a),G0r(t,VQ)}else G0r(t,WQ);return Nd(f1r(t),YQ),Nd(f1r(t),HQ)})),Xk(v6r,(function(r,t){var e=Nd(o6r,r);return Ld(c1r(RQ),e,t)}));var l6r=[0,c6r,s6r,o6r,v6r],b6r=function r(t,e,n,u){return r.fun(t,e,n,u)},D6r=function r(t,e,n){return r.fun(t,e,n)},k6r=function r(t,e,n){return r.fun(t,e,n)},p6r=function r(t,e){return r.fun(t,e)};Xk(b6r,(function(r,t,e,n){Nd(f1r(e),cQ),Ld(f1r(e),oQ,sQ);var u=n[1];if(u){G0r(e,vQ);var a=u[1];Md(N2r[32],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),G0r(e,lQ)}else G0r(e,bQ);Nd(f1r(e),DQ),Nd(f1r(e),kQ),Ld(f1r(e),dQ,pQ);var i=n[2];if(i){G0r(e,wQ);var f=i[1];Rd(k6r,(function(t){return Nd(r,t)}),e,f),G0r(e,hQ)}else G0r(e,mQ);Nd(f1r(e),FQ),Nd(f1r(e),yQ),Ld(f1r(e),_Q,EQ);var c=n[3];if(c){var s=c[1];G0r(e,gQ),Nd(f1r(e),CQ),Ld(r,e,s[1]),Nd(f1r(e),SQ),Ld(A2r[1],e,s[2]),Nd(f1r(e),xQ),G0r(e,TQ)}else G0r(e,AQ);return Nd(f1r(e),BQ),Nd(f1r(e),IQ),Ld(f1r(e),PQ,OQ),Ld(N2r[30],e,n[4]),Nd(f1r(e),NQ),Nd(f1r(e),LQ)})),Xk(D6r,(function(r,t,e){var n=Ld(b6r,r,t);return Ld(c1r(fQ),n,e)})),Xk(k6r,(function(r,t,e){if(0===e[0]){Nd(f1r(t),KK),Nd(f1r(t),QK);return rZr((function(e,n){return e&&Nd(f1r(t),$K),Rd(l6r[1],(function(t){return Nd(r,t)}),t,n),1}),0,e[1]),Nd(f1r(t),ZK),Nd(f1r(t),rQ)}var n=e[2];if(Nd(f1r(t),tQ),Ld(r,t,e[1]),Nd(f1r(t),eQ),n){G0r(t,nQ);var u=n[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(t){return Nd(r,t)}),t,u),G0r(t,uQ)}else G0r(t,aQ);return Nd(f1r(t),iQ)})),Xk(p6r,(function(r,t){var e=Nd(k6r,r);return Ld(c1r(HK),e,t)}));var d6r=[0,l6r,b6r,D6r,k6r,p6r],w6r=function r(t,e,n,u){return r.fun(t,e,n,u)},h6r=function r(t,e,n){return r.fun(t,e,n)},m6r=function r(t,e,n,u){return r.fun(t,e,n,u)},F6r=function r(t,e,n){return r.fun(t,e,n)};Xk(w6r,(function(r,t,e,n){Nd(f1r(e),UK),Ld(f1r(e),JK,XK),Ld(r,e,n[1]),Nd(f1r(e),GK),Nd(f1r(e),qK),Ld(f1r(e),VK,zK);var u=n[2];return Md(m6r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),WK),Nd(f1r(e),YK)})),Xk(h6r,(function(r,t,e){var n=Ld(w6r,r,t);return Ld(c1r(jK),n,e)})),Xk(m6r,(function(r,t,e,n){if(0===n[0]){Nd(f1r(e),NK);var u=n[1];return Md(N2r[32],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),LK)}Nd(f1r(e),RK);var a=n[1];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),MK)})),Xk(F6r,(function(r,t,e){var n=Ld(m6r,r,t);return Ld(c1r(PK),n,e)}));var y6r=[0,w6r,h6r,m6r,F6r],E6r=function r(t,e,n,u){return r.fun(t,e,n,u)},_6r=function r(t,e,n){return r.fun(t,e,n)},g6r=function r(t,e,n,u){return r.fun(t,e,n,u)},C6r=function r(t,e,n){return r.fun(t,e,n)};Xk(E6r,(function(r,t,e,n){switch(n[0]){case 0:var u=n[1];Nd(f1r(e),eK),Nd(f1r(e),nK),Ld(r,e,u[1]),Nd(f1r(e),uK);var a=u[2];return Md(K3r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),aK),Nd(f1r(e),iK);case 1:var i=n[1];Nd(f1r(e),fK),Nd(f1r(e),cK),Ld(r,e,i[1]),Nd(f1r(e),sK);var f=i[2];return Md(r6r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),Nd(f1r(e),oK),Nd(f1r(e),vK);case 2:var c=n[1];Nd(f1r(e),lK),Nd(f1r(e),bK),Ld(r,e,c[1]),Nd(f1r(e),DK);var s=c[2];return Md(Y3r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,s),Nd(f1r(e),kK),Nd(f1r(e),pK);case 3:Nd(f1r(e),dK);var o=n[1];return Md(P2r[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,o),Nd(f1r(e),wK);case 4:var v=n[1];Nd(f1r(e),hK),Nd(f1r(e),mK),Ld(r,e,v[1]),Nd(f1r(e),FK);var l=v[2];return Md(v8r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,l),Nd(f1r(e),yK),Nd(f1r(e),EK);case 5:var b=n[1];Nd(f1r(e),_K),Nd(f1r(e),gK),Ld(r,e,b[1]),Nd(f1r(e),CK);var D=b[2];return Md(D8r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,D),Nd(f1r(e),SK),Nd(f1r(e),xK);default:var k=n[1];Nd(f1r(e),TK),Nd(f1r(e),AK),Ld(r,e,k[1]),Nd(f1r(e),BK);var p=k[2];return Md(z3r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,p),Nd(f1r(e),IK),Nd(f1r(e),OK)}})),Xk(_6r,(function(r,t,e){var n=Ld(E6r,r,t);return Ld(c1r(tK),n,e)})),Xk(g6r,(function(r,t,e,n){Nd(f1r(e),E$),Ld(f1r(e),g$,_$);var u=n[1];u?(G0r(e,C$),Ld(r,e,u[1]),G0r(e,S$)):G0r(e,x$),Nd(f1r(e),T$),Nd(f1r(e),A$),Ld(f1r(e),I$,B$);var a=n[2];if(a){G0r(e,O$);var i=a[1];Md(E6r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,P$)}else G0r(e,N$);Nd(f1r(e),L$),Nd(f1r(e),R$),Ld(f1r(e),j$,M$);var f=n[3];if(f){G0r(e,U$);var c=f[1];Rd(d6r[4],(function(t){return Nd(r,t)}),e,c),G0r(e,X$)}else G0r(e,J$);Nd(f1r(e),G$),Nd(f1r(e),q$),Ld(f1r(e),V$,z$);var s=n[4];if(s){var o=s[1];G0r(e,W$),Nd(f1r(e),Y$),Ld(r,e,o[1]),Nd(f1r(e),H$),Ld(A2r[1],e,o[2]),Nd(f1r(e),$$),G0r(e,K$)}else G0r(e,Q$);return Nd(f1r(e),Z$),Nd(f1r(e),rK)})),Xk(C6r,(function(r,t,e){var n=Ld(g6r,r,t);return Ld(c1r(y$),n,e)}));var S6r=[0,E6r,_6r,g6r,C6r],x6r=function r(t,e){return r.fun(t,e)},T6r=function r(t){return r.fun(t)},A6r=function r(t,e,n,u){return r.fun(t,e,n,u)},B6r=function r(t,e,n){return r.fun(t,e,n)},I6r=function r(t,e,n,u){return r.fun(t,e,n,u)},O6r=function r(t,e,n){return r.fun(t,e,n)},P6r=function r(t,e,n,u){return r.fun(t,e,n,u)},N6r=function r(t,e,n){return r.fun(t,e,n)};Xk(x6r,(function(r,t){switch(t){case 0:return G0r(r,h$);case 1:return G0r(r,m$);default:return G0r(r,F$)}})),Xk(T6r,(function(r){return Ld(c1r(w$),x6r,r)})),Xk(A6r,(function(r,t,e,n){if(0===n[0]){Nd(f1r(e),s$),Nd(f1r(e),o$);return rZr((function(n,u){return n&&Nd(f1r(e),c$),Md(I6r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,n[1]),Nd(f1r(e),v$),Nd(f1r(e),l$)}var u=n[1];Nd(f1r(e),b$),Nd(f1r(e),D$),Ld(r,e,u[1]),Nd(f1r(e),k$);var a=u[2];return Md(S2r[1],(function(t){return Nd(r,t)}),(function(t){return Nd(r,t)}),e,a),Nd(f1r(e),p$),Nd(f1r(e),d$)})),Xk(B6r,(function(r,t,e){var n=Ld(A6r,r,t);return Ld(c1r(f$),n,e)})),Xk(I6r,(function(r,t,e,n){Nd(f1r(e),JH),Ld(f1r(e),qH,GH);var u=n[1];u?(G0r(e,zH),Ld(x6r,e,u[1]),G0r(e,VH)):G0r(e,WH),Nd(f1r(e),YH),Nd(f1r(e),HH),Ld(f1r(e),KH,$H);var a=n[2];if(a){G0r(e,QH);var i=a[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,ZH)}else G0r(e,r$);Nd(f1r(e),t$),Nd(f1r(e),e$),Ld(f1r(e),u$,n$);var f=n[3];return Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),Nd(f1r(e),a$),Nd(f1r(e),i$)})),Xk(O6r,(function(r,t,e){var n=Ld(I6r,r,t);return Ld(c1r(XH),n,e)})),Xk(P6r,(function(r,t,e,n){Nd(f1r(e),kH),Ld(f1r(e),dH,pH),Ld(x6r,e,n[1]),Nd(f1r(e),wH),Nd(f1r(e),hH),Ld(f1r(e),FH,mH);var u=n[2];Nd(f1r(e),yH),Ld(r,e,u[1]),Nd(f1r(e),EH),Ld(A2r[1],e,u[2]),Nd(f1r(e),_H),Nd(f1r(e),gH),Nd(f1r(e),CH),Ld(f1r(e),xH,SH);var a=n[3];if(a){G0r(e,TH);var i=a[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,AH)}else G0r(e,BH);Nd(f1r(e),IH),Nd(f1r(e),OH),Ld(f1r(e),NH,PH);var f=n[4];if(f){G0r(e,LH);var c=f[1];Md(A6r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,c),G0r(e,RH)}else G0r(e,MH);return Nd(f1r(e),jH),Nd(f1r(e),UH)})),Xk(N6r,(function(r,t,e){var n=Ld(P6r,r,t);return Ld(c1r(DH),n,e)}));var L6r=[0,x6r,T6r,A6r,B6r,I6r,O6r,P6r,N6r],R6r=function r(t,e,n,u){return r.fun(t,e,n,u)},M6r=function r(t,e,n){return r.fun(t,e,n)};Xk(R6r,(function(r,t,e,n){Nd(f1r(e),tH),Ld(f1r(e),nH,eH);var u=n[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),uH),Nd(f1r(e),aH),Ld(f1r(e),fH,iH);var a=n[2];if(a){G0r(e,cH);var i=a[1];Ld(f1r(e),sH,i),G0r(e,oH)}else G0r(e,vH);return Nd(f1r(e),lH),Nd(f1r(e),bH)})),Xk(M6r,(function(r,t,e){var n=Ld(R6r,r,t);return Ld(c1r(rH),n,e)}));var j6r=[0,R6r,M6r],U6r=function r(t,e){return r.fun(t,e)},X6r=function r(t){return r.fun(t)},J6r=function r(t,e,n,u){return r.fun(t,e,n,u)},G6r=function r(t,e,n){return r.fun(t,e,n)},q6r=function r(t,e,n,u){return r.fun(t,e,n,u)},z6r=function r(t,e,n){return r.fun(t,e,n)};Xk(U6r,(function(r,t){return G0r(r,0===t?ZY:QY)})),Xk(X6r,(function(r){return Ld(c1r(KY),U6r,r)})),Xk(J6r,(function(r,t,e,n){Nd(f1r(e),YY),Ld(r,e,n[1]),Nd(f1r(e),HY);var u=n[2];return Md(q6r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),$Y)})),Xk(G6r,(function(r,t,e){var n=Ld(J6r,r,t);return Ld(c1r(WY),n,e)})),Xk(q6r,(function(r,t,e,n){if("number"==typeof n)return G0r(e,0===n?TW:AW);switch(n[0]){case 0:Nd(f1r(e),BW);var u=n[1];return Md(W4r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),IW);case 1:Nd(f1r(e),OW);var a=n[1];return Rd(e8r[1],(function(t){return Nd(r,t)}),e,a),Nd(f1r(e),PW);case 2:Nd(f1r(e),NW);var i=n[1];return Md(U2r[8],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),LW);case 3:Nd(f1r(e),RW);var f=n[1];return Rd(a8r[1],(function(t){return Nd(r,t)}),e,f),Nd(f1r(e),MW);case 4:Nd(f1r(e),jW);var c=n[1];return Md(Y3r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,c),Nd(f1r(e),UW);case 5:Nd(f1r(e),XW);var s=n[1];return Md(S6r[3],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,s),Nd(f1r(e),JW);case 6:Nd(f1r(e),GW);var o=n[1];return Md(r6r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,o),Nd(f1r(e),qW);case 7:Nd(f1r(e),zW);var v=n[1];return Md(z3r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,v),Nd(f1r(e),VW);case 8:Nd(f1r(e),WW);var l=n[1];return Md(f6r[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,l),Nd(f1r(e),YW);case 9:Nd(f1r(e),HW);var b=n[1];return Md(P2r[9],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,b),Nd(f1r(e),$W);case 10:Nd(f1r(e),KW);var D=n[1];return Md(v8r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,D),Nd(f1r(e),QW);case 11:Nd(f1r(e),ZW);var k=n[1];return Md(D8r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,k),Nd(f1r(e),rY);case 12:Nd(f1r(e),tY);var p=n[1];return Md(K3r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,p),Nd(f1r(e),eY);case 13:Nd(f1r(e),nY);var d=n[1];return Md(Q8r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,d),Nd(f1r(e),uY);case 14:Nd(f1r(e),aY);var w=n[1];return Md(J3r[7],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,w),Nd(f1r(e),iY);case 15:Nd(f1r(e),fY);var h=n[1];return Md(y6r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,h),Nd(f1r(e),cY);case 16:Nd(f1r(e),sY);var m=n[1];return Md(d6r[2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,m),Nd(f1r(e),oY);case 17:Nd(f1r(e),vY);var F=n[1];return Md(j6r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,F),Nd(f1r(e),lY);case 18:Nd(f1r(e),bY);var y=n[1];return Md(n3r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,y),Nd(f1r(e),DY);case 19:Nd(f1r(e),kY);var E=n[1];return Md(c3r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,E),Nd(f1r(e),pY);case 20:Nd(f1r(e),dY);var _=n[1];return Md(b3r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,_),Nd(f1r(e),wY);case 21:Nd(f1r(e),hY);var g=n[1];return Md(X2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,g),Nd(f1r(e),mY);case 22:Nd(f1r(e),FY);var C=n[1];return Md($4r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,C),Nd(f1r(e),yY);case 23:Nd(f1r(e),EY);var S=n[1];return Md(L6r[7],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,S),Nd(f1r(e),_Y);case 24:Nd(f1r(e),gY);var x=n[1];return Md(z3r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,x),Nd(f1r(e),CY);case 25:Nd(f1r(e),SY);var T=n[1];return Md(Z4r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,T),Nd(f1r(e),xY);case 26:Nd(f1r(e),TY);var A=n[1];return Md(g8r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,A),Nd(f1r(e),AY);case 27:Nd(f1r(e),BY);var B=n[1];return Md(y8r[2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,B),Nd(f1r(e),IY);case 28:Nd(f1r(e),OY);var I=n[1];return Md(x8r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,I),Nd(f1r(e),PY);case 29:Nd(f1r(e),NY);var O=n[1];return Md(L8r[2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,O),Nd(f1r(e),LY);case 30:Nd(f1r(e),RY);var P=n[1];return Md(v8r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,P),Nd(f1r(e),MY);case 31:Nd(f1r(e),jY);var N=n[1];return Md(D8r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,N),Nd(f1r(e),UY);case 32:Nd(f1r(e),XY);var L=n[1];return Md(V8r[2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,L),Nd(f1r(e),JY);case 33:Nd(f1r(e),GY);var R=n[1];return Md(H8r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,R),Nd(f1r(e),qY);default:Nd(f1r(e),zY);var M=n[1];return Md(c8r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,M),Nd(f1r(e),VY)}})),Xk(z6r,(function(r,t,e){var n=Ld(q6r,r,t);return Ld(c1r(xW),n,e)})),Rd(O1r,Xvr,N2r,[0,W4r,$4r,Z4r,e8r,a8r,c8r,v8r,D8r,y8r,g8r,x8r,L8r,V8r,H8r,Q8r,n3r,c3r,b3r,J3r,z3r,Y3r,K3r,r6r,f6r,d6r,y6r,S6r,L6r,j6r,U6r,X6r,J6r,G6r,q6r,z6r]);var V6r=function r(t,e,n,u){return r.fun(t,e,n,u)},W6r=function r(t,e,n){return r.fun(t,e,n)},Y6r=function r(t,e,n,u){return r.fun(t,e,n,u)},H6r=function r(t,e,n){return r.fun(t,e,n)},$6r=function r(t,e,n,u){return r.fun(t,e,n,u)},K6r=function r(t,e,n){return r.fun(t,e,n)};Xk(V6r,(function(r,t,e,n){Nd(f1r(e),gW),Ld(r,e,n[1]),Nd(f1r(e),CW);var u=n[2];return Md($6r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),SW)})),Xk(W6r,(function(r,t,e){var n=Ld(V6r,r,t);return Ld(c1r(_W),n,e)})),Xk(Y6r,(function(r,t,e,n){if(0===n[0]){Nd(f1r(e),mW);var u=n[1];return Md(P2r[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),FW)}return Nd(f1r(e),yW),Ld(t,e,n[1]),Nd(f1r(e),EW)})),Xk(H6r,(function(r,t,e){var n=Ld(Y6r,r,t);return Ld(c1r(hW),n,e)})),Xk($6r,(function(r,t,e,n){Nd(f1r(e),dW);return rZr((function(n,u){return n&&Nd(f1r(e),pW),Md(Y6r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,n),Nd(f1r(e),wW)})),Xk(K6r,(function(r,t,e){var n=Ld($6r,r,t);return Ld(c1r(kW),n,e)}));var Q6r=function r(t,e,n,u){return r.fun(t,e,n,u)},Z6r=function r(t,e,n){return r.fun(t,e,n)},r5r=function r(t,e,n,u){return r.fun(t,e,n,u)},t5r=function r(t,e,n){return r.fun(t,e,n)},e5r=[0,V6r,W6r,Y6r,H6r,$6r,K6r];Xk(Q6r,(function(r,t,e,n){Nd(f1r(e),lW),Ld(r,e,n[1]),Nd(f1r(e),bW);var u=n[2];return Md(r5r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),DW)})),Xk(Z6r,(function(r,t,e){var n=Ld(Q6r,r,t);return Ld(c1r(vW),n,e)})),Xk(r5r,(function(r,t,e,n){Nd(f1r(e),iW),Ld(f1r(e),cW,fW);var u=n[1];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),sW),Nd(f1r(e),oW)})),Xk(t5r,(function(r,t,e){var n=Ld(r5r,r,t);return Ld(c1r(aW),n,e)}));var n5r=[0,Q6r,Z6r,r5r,t5r],u5r=function r(t,e,n,u){return r.fun(t,e,n,u)},a5r=function r(t,e,n){return r.fun(t,e,n)};Xk(u5r,(function(r,t,e,n){if(0===n[0]){Nd(f1r(e),tW);var u=n[1];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),eW)}Nd(f1r(e),nW);var a=n[1];return Md(n5r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),uW)})),Xk(a5r,(function(r,t,e){var n=Ld(u5r,r,t);return Ld(c1r(rW),n,e)}));var i5r=function r(t,e,n,u){return r.fun(t,e,n,u)},f5r=function r(t,e,n){return r.fun(t,e,n)};Xk(i5r,(function(r,t,e,n){Nd(f1r(e),UV),Ld(f1r(e),JV,XV);var u=n[1];Nd(f1r(e),GV);rZr((function(n,u){if(n&&Nd(f1r(e),LV),u){G0r(e,RV);var a=u[1];Md(u5r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),G0r(e,MV)}else G0r(e,jV);return 1}),0,u),Nd(f1r(e),qV),Nd(f1r(e),zV),Nd(f1r(e),VV),Ld(f1r(e),YV,WV);var a=n[2];if(a){G0r(e,HV);var i=a[1];Md(C2r[1],(function(t){return Nd(r,t)}),(function(r,t){return G0r(r,NV)}),e,i),G0r(e,$V)}else G0r(e,KV);return Nd(f1r(e),QV),Nd(f1r(e),ZV)})),Xk(f5r,(function(r,t,e){var n=Ld(i5r,r,t);return Ld(c1r(PV),n,e)}));var c5r=[0,i5r,f5r],s5r=function r(t,e){return r.fun(t,e)},o5r=function r(t){return r.fun(t)},v5r=function r(t,e,n){return r.fun(t,e,n)},l5r=function r(t,e){return r.fun(t,e)},b5r=function r(t,e){return r.fun(t,e)},D5r=function r(t){return r.fun(t)};Xk(s5r,(function(r,t){Nd(f1r(r),EV),Ld(f1r(r),gV,_V);var e=t[1];Ld(f1r(r),CV,e),Nd(f1r(r),SV),Nd(f1r(r),xV),Ld(f1r(r),AV,TV);var n=t[2];return Ld(f1r(r),BV,n),Nd(f1r(r),IV),Nd(f1r(r),OV)})),Xk(o5r,(function(r){return Ld(c1r(yV),s5r,r)})),Xk(v5r,(function(r,t,e){return Nd(f1r(t),hV),Ld(r,t,e[1]),Nd(f1r(t),mV),Ld(b5r,t,e[2]),Nd(f1r(t),FV)})),Xk(l5r,(function(r,t){var e=Nd(v5r,r);return Ld(c1r(wV),e,t)})),Xk(b5r,(function(r,t){Nd(f1r(r),cV),Ld(f1r(r),oV,sV),Ld(s5r,r,t[1]),Nd(f1r(r),vV),Nd(f1r(r),lV),Ld(f1r(r),DV,bV);var e=t[2];return Ld(f1r(r),kV,e),Nd(f1r(r),pV),Nd(f1r(r),dV)})),Xk(D5r,(function(r){return Ld(c1r(fV),b5r,r)}));var k5r=[0,s5r,o5r,v5r,l5r,b5r,D5r],p5r=function r(t,e,n,u){return r.fun(t,e,n,u)},d5r=function r(t,e,n){return r.fun(t,e,n)};Xk(p5r,(function(r,t,e,n){Nd(f1r(e),Yz),Ld(f1r(e),$z,Hz);var u=n[1];Nd(f1r(e),Kz);rZr((function(t,n){return t&&Nd(f1r(e),Wz),Rd(k5r[3],(function(t){return Nd(r,t)}),e,n),1}),0,u),Nd(f1r(e),Qz),Nd(f1r(e),Zz),Nd(f1r(e),rV),Ld(f1r(e),eV,tV);var a=n[2];Nd(f1r(e),nV);return rZr((function(n,u){return n&&Nd(f1r(e),Vz),Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,a),Nd(f1r(e),uV),Nd(f1r(e),aV),Nd(f1r(e),iV)})),Xk(d5r,(function(r,t,e){var n=Ld(p5r,r,t);return Ld(c1r(zz),n,e)}));var w5r=[0,k5r,p5r,d5r],h5r=function r(t,e,n,u){return r.fun(t,e,n,u)},m5r=function r(t,e,n){return r.fun(t,e,n)};Xk(h5r,(function(r,t,e,n){Nd(f1r(e),Oz),Ld(f1r(e),Nz,Pz);var u=n[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Lz),Nd(f1r(e),Rz),Ld(f1r(e),jz,Mz);var a=n[2];Nd(f1r(e),Uz),Ld(r,e,a[1]),Nd(f1r(e),Xz);var i=a[2];return Md(w5r[2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),Jz),Nd(f1r(e),Gz),Nd(f1r(e),qz)})),Xk(m5r,(function(r,t,e){var n=Ld(h5r,r,t);return Ld(c1r(Iz),n,e)}));var F5r=[0,h5r,m5r],y5r=function r(t,e,n,u){return r.fun(t,e,n,u)},E5r=function r(t,e,n){return r.fun(t,e,n)},_5r=function r(t,e,n,u){return r.fun(t,e,n,u)},g5r=function r(t,e,n){return r.fun(t,e,n)},C5r=function r(t,e,n,u){return r.fun(t,e,n,u)},S5r=function r(t,e,n){return r.fun(t,e,n)};Xk(y5r,(function(r,t,e,n){switch(n[0]){case 0:var u=n[1];Nd(f1r(e),Fz),Nd(f1r(e),yz),Ld(t,e,u[1]),Nd(f1r(e),Ez);var a=u[2];return Rd(T2r[2],(function(t){return Nd(r,t)}),e,a),Nd(f1r(e),_z),Nd(f1r(e),gz);case 1:Nd(f1r(e),Cz);var i=n[1];return Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),Sz);case 2:Nd(f1r(e),xz);var f=n[1];return Rd(x2r[1],(function(t){return Nd(r,t)}),e,f),Nd(f1r(e),Tz);default:Nd(f1r(e),Az);var c=n[1];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,c),Nd(f1r(e),Bz)}})),Xk(E5r,(function(r,t,e){var n=Ld(y5r,r,t);return Ld(c1r(mz),n,e)})),Xk(_5r,(function(r,t,e,n){Nd(f1r(e),dz),Ld(r,e,n[1]),Nd(f1r(e),wz);var u=n[2];return Md(C5r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),hz)})),Xk(g5r,(function(r,t,e){var n=Ld(_5r,r,t);return Ld(c1r(pz),n,e)})),Xk(C5r,(function(r,t,e,n){switch(n[0]){case 0:Nd(f1r(e),mq),Ld(f1r(e),yq,Fq);var u=n[1];Md(y5r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Eq),Nd(f1r(e),_q),Ld(f1r(e),Cq,gq);var a=n[2];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),Sq),Nd(f1r(e),xq),Ld(f1r(e),Aq,Tq);var i=n[3];return Ld(f1r(e),Bq,i),Nd(f1r(e),Iq),Nd(f1r(e),Oq);case 1:var f=n[2];Nd(f1r(e),Pq),Ld(f1r(e),Lq,Nq);var c=n[1];Md(y5r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,c),Nd(f1r(e),Rq),Nd(f1r(e),Mq),Ld(f1r(e),Uq,jq),Nd(f1r(e),Xq),Ld(r,e,f[1]),Nd(f1r(e),Jq);var s=f[2];return Md(X2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,s),Nd(f1r(e),Gq),Nd(f1r(e),qq),Nd(f1r(e),zq);case 2:var o=n[2];Nd(f1r(e),Vq),Ld(f1r(e),Yq,Wq);var v=n[1];Md(y5r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,v),Nd(f1r(e),Hq),Nd(f1r(e),$q),Ld(f1r(e),Qq,Kq),Nd(f1r(e),Zq),Ld(r,e,o[1]),Nd(f1r(e),rz);var l=o[2];return Md(X2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,l),Nd(f1r(e),tz),Nd(f1r(e),ez),Nd(f1r(e),nz);default:var b=n[2];Nd(f1r(e),uz),Ld(f1r(e),iz,az);var D=n[1];Md(y5r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,D),Nd(f1r(e),fz),Nd(f1r(e),cz),Ld(f1r(e),oz,sz),Nd(f1r(e),vz),Ld(r,e,b[1]),Nd(f1r(e),lz);var k=b[2];return Md(X2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,k),Nd(f1r(e),bz),Nd(f1r(e),Dz),Nd(f1r(e),kz)}})),Xk(S5r,(function(r,t,e){var n=Ld(C5r,r,t);return Ld(c1r(hq),n,e)}));var x5r=[0,y5r,E5r,_5r,g5r,C5r,S5r],T5r=function r(t,e,n,u){return r.fun(t,e,n,u)},A5r=function r(t,e,n){return r.fun(t,e,n)},B5r=function r(t,e,n,u){return r.fun(t,e,n,u)},I5r=function r(t,e,n){return r.fun(t,e,n)};Xk(T5r,(function(r,t,e,n){Nd(f1r(e),pq),Ld(r,e,n[1]),Nd(f1r(e),dq);var u=n[2];return Md(B5r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),wq)})),Xk(A5r,(function(r,t,e){var n=Ld(T5r,r,t);return Ld(c1r(kq),n,e)})),Xk(B5r,(function(r,t,e,n){Nd(f1r(e),oq),Ld(f1r(e),lq,vq);var u=n[1];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),bq),Nd(f1r(e),Dq)})),Xk(I5r,(function(r,t,e){var n=Ld(B5r,r,t);return Ld(c1r(sq),n,e)}));var O5r=[0,T5r,A5r,B5r,I5r],P5r=function r(t,e,n,u){return r.fun(t,e,n,u)},N5r=function r(t,e,n){return r.fun(t,e,n)},L5r=function r(t,e,n,u){return r.fun(t,e,n,u)},R5r=function r(t,e,n){return r.fun(t,e,n)};Xk(P5r,(function(r,t,e,n){if(0===n[0]){Nd(f1r(e),aq);var u=n[1];return Md(x5r[3],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),iq)}Nd(f1r(e),fq);var a=n[1];return Md(O5r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),cq)})),Xk(N5r,(function(r,t,e){var n=Ld(P5r,r,t);return Ld(c1r(uq),n,e)})),Xk(L5r,(function(r,t,e,n){Nd(f1r(e),qG),Ld(f1r(e),VG,zG);var u=n[1];Nd(f1r(e),WG);rZr((function(n,u){return n&&Nd(f1r(e),GG),Md(P5r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,u),Nd(f1r(e),YG),Nd(f1r(e),HG),Nd(f1r(e),$G),Ld(f1r(e),QG,KG);var a=n[2];if(a){G0r(e,ZG);var i=a[1];Md(C2r[1],(function(t){return Nd(r,t)}),(function(r,t){return G0r(r,JG)}),e,i),G0r(e,rq)}else G0r(e,tq);return Nd(f1r(e),eq),Nd(f1r(e),nq)})),Xk(R5r,(function(r,t,e){var n=Ld(L5r,r,t);return Ld(c1r(XG),n,e)}));var M5r=[0,x5r,O5r,P5r,N5r,L5r,R5r],j5r=function r(t,e,n,u){return r.fun(t,e,n,u)},U5r=function r(t,e,n){return r.fun(t,e,n)};Xk(j5r,(function(r,t,e,n){Nd(f1r(e),PG),Ld(f1r(e),LG,NG);var u=n[1];Nd(f1r(e),RG);return rZr((function(n,u){return n&&Nd(f1r(e),OG),Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,u),Nd(f1r(e),MG),Nd(f1r(e),jG),Nd(f1r(e),UG)})),Xk(U5r,(function(r,t,e){var n=Ld(j5r,r,t);return Ld(c1r(IG),n,e)}));var X5r=[0,j5r,U5r],J5r=function r(t,e){return r.fun(t,e)},G5r=function r(t){return r.fun(t)},q5r=function r(t,e,n,u){return r.fun(t,e,n,u)},z5r=function r(t,e,n){return r.fun(t,e,n)};Xk(J5r,(function(r,t){switch(t){case 0:return G0r(r,_G);case 1:return G0r(r,gG);case 2:return G0r(r,CG);case 3:return G0r(r,SG);case 4:return G0r(r,xG);case 5:return G0r(r,TG);case 6:return G0r(r,AG);default:return G0r(r,BG)}})),Xk(G5r,(function(r){return Ld(c1r(EG),J5r,r)})),Xk(q5r,(function(r,t,e,n){Nd(f1r(e),fG),Ld(f1r(e),sG,cG),Ld(J5r,e,n[1]),Nd(f1r(e),oG),Nd(f1r(e),vG),Ld(f1r(e),bG,lG);var u=n[2];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),DG),Nd(f1r(e),kG),Ld(f1r(e),dG,pG);var a=n[3];if(a){G0r(e,wG);var i=a[1];Md(C2r[1],(function(t){return Nd(r,t)}),(function(r,t){return G0r(r,iG)}),e,i),G0r(e,hG)}else G0r(e,mG);return Nd(f1r(e),FG),Nd(f1r(e),yG)})),Xk(z5r,(function(r,t,e){var n=Ld(q5r,r,t);return Ld(c1r(aG),n,e)}));var V5r=[0,J5r,G5r,q5r,z5r],W5r=function r(t,e){return r.fun(t,e)},Y5r=function r(t){return r.fun(t)},H5r=function r(t,e,n,u){return r.fun(t,e,n,u)},$5r=function r(t,e,n){return r.fun(t,e,n)};Xk(W5r,(function(r,t){switch(t){case 0:return G0r(r,RJ);case 1:return G0r(r,MJ);case 2:return G0r(r,jJ);case 3:return G0r(r,UJ);case 4:return G0r(r,XJ);case 5:return G0r(r,JJ);case 6:return G0r(r,GJ);case 7:return G0r(r,qJ);case 8:return G0r(r,zJ);case 9:return G0r(r,VJ);case 10:return G0r(r,WJ);case 11:return G0r(r,YJ);case 12:return G0r(r,HJ);case 13:return G0r(r,$J);case 14:return G0r(r,KJ);case 15:return G0r(r,QJ);case 16:return G0r(r,ZJ);case 17:return G0r(r,rG);case 18:return G0r(r,tG);case 19:return G0r(r,eG);case 20:return G0r(r,nG);default:return G0r(r,uG)}})),Xk(Y5r,(function(r){return Ld(c1r(LJ),W5r,r)})),Xk(H5r,(function(r,t,e,n){Nd(f1r(e),EJ),Ld(f1r(e),gJ,_J),Ld(W5r,e,n[1]),Nd(f1r(e),CJ),Nd(f1r(e),SJ),Ld(f1r(e),TJ,xJ);var u=n[2];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),AJ),Nd(f1r(e),BJ),Ld(f1r(e),OJ,IJ);var a=n[3];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),PJ),Nd(f1r(e),NJ)})),Xk($5r,(function(r,t,e){var n=Ld(H5r,r,t);return Ld(c1r(yJ),n,e)}));var K5r=[0,W5r,Y5r,H5r,$5r],Q5r=function r(t,e){return r.fun(t,e)},Z5r=function r(t){return r.fun(t)},r9r=function r(t,e,n,u){return r.fun(t,e,n,u)},t9r=function r(t,e,n){return r.fun(t,e,n)};Xk(Q5r,(function(r,t){switch(t){case 0:return G0r(r,oJ);case 1:return G0r(r,vJ);case 2:return G0r(r,lJ);case 3:return G0r(r,bJ);case 4:return G0r(r,DJ);case 5:return G0r(r,kJ);case 6:return G0r(r,pJ);case 7:return G0r(r,dJ);case 8:return G0r(r,wJ);case 9:return G0r(r,hJ);case 10:return G0r(r,mJ);default:return G0r(r,FJ)}})),Xk(Z5r,(function(r){return Ld(c1r(sJ),Q5r,r)})),Xk(r9r,(function(r,t,e,n){Nd(f1r(e),WX),Ld(f1r(e),HX,YX);var u=n[1];u?(G0r(e,$X),Ld(Q5r,e,u[1]),G0r(e,KX)):G0r(e,QX),Nd(f1r(e),ZX),Nd(f1r(e),rJ),Ld(f1r(e),eJ,tJ);var a=n[2];Md(M2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),nJ),Nd(f1r(e),uJ),Ld(f1r(e),iJ,aJ);var i=n[3];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),fJ),Nd(f1r(e),cJ)})),Xk(t9r,(function(r,t,e){var n=Ld(r9r,r,t);return Ld(c1r(VX),n,e)}));var e9r=[0,Q5r,Z5r,r9r,t9r],n9r=function r(t,e){return r.fun(t,e)},u9r=function r(t){return r.fun(t)},a9r=function r(t,e,n,u){return r.fun(t,e,n,u)},i9r=function r(t,e,n){return r.fun(t,e,n)};Xk(n9r,(function(r,t){return G0r(r,0===t?zX:qX)})),Xk(u9r,(function(r){return Ld(c1r(GX),n9r,r)})),Xk(a9r,(function(r,t,e,n){Nd(f1r(e),TX),Ld(f1r(e),BX,AX),Ld(n9r,e,n[1]),Nd(f1r(e),IX),Nd(f1r(e),OX),Ld(f1r(e),NX,PX);var u=n[2];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),LX),Nd(f1r(e),RX),Ld(f1r(e),jX,MX);var a=n[3];return Ld(f1r(e),UX,a),Nd(f1r(e),XX),Nd(f1r(e),JX)})),Xk(i9r,(function(r,t,e){var n=Ld(a9r,r,t);return Ld(c1r(xX),n,e)}));var f9r=[0,n9r,u9r,a9r,i9r],c9r=function r(t,e){return r.fun(t,e)},s9r=function r(t){return r.fun(t)},o9r=function r(t,e,n,u){return r.fun(t,e,n,u)},v9r=function r(t,e,n){return r.fun(t,e,n)};Xk(c9r,(function(r,t){switch(t){case 0:return G0r(r,gX);case 1:return G0r(r,CX);default:return G0r(r,SX)}})),Xk(s9r,(function(r){return Ld(c1r(_X),c9r,r)})),Xk(o9r,(function(r,t,e,n){Nd(f1r(e),vX),Ld(f1r(e),bX,lX),Ld(c9r,e,n[1]),Nd(f1r(e),DX),Nd(f1r(e),kX),Ld(f1r(e),dX,pX);var u=n[2];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),wX),Nd(f1r(e),hX),Ld(f1r(e),FX,mX);var a=n[3];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),yX),Nd(f1r(e),EX)})),Xk(v9r,(function(r,t,e){var n=Ld(o9r,r,t);return Ld(c1r(oX),n,e)}));var l9r=[0,c9r,s9r,o9r,v9r],b9r=function r(t,e,n,u){return r.fun(t,e,n,u)},D9r=function r(t,e,n){return r.fun(t,e,n)};Xk(b9r,(function(r,t,e,n){Nd(f1r(e),KU),Ld(f1r(e),ZU,QU);var u=n[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),rX),Nd(f1r(e),tX),Ld(f1r(e),nX,eX);var a=n[2];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),uX),Nd(f1r(e),aX),Ld(f1r(e),fX,iX);var i=n[3];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),cX),Nd(f1r(e),sX)})),Xk(D9r,(function(r,t,e){var n=Ld(b9r,r,t);return Ld(c1r($U),n,e)}));var k9r=[0,b9r,D9r],p9r=function r(t,e,n,u){return r.fun(t,e,n,u)},d9r=function r(t,e,n){return r.fun(t,e,n)};Xk(p9r,(function(r,t,e,n){Nd(f1r(e),gU),Ld(f1r(e),SU,CU);var u=n[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),xU),Nd(f1r(e),TU),Ld(f1r(e),BU,AU);var a=n[2];if(a){G0r(e,IU);var i=a[1];Md(L2r[1][1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,OU)}else G0r(e,PU);Nd(f1r(e),NU),Nd(f1r(e),LU),Ld(f1r(e),MU,RU);var f=n[3];Nd(f1r(e),jU);rZr((function(n,u){return n&&Nd(f1r(e),_U),Md(u5r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,f),Nd(f1r(e),UU),Nd(f1r(e),XU),Nd(f1r(e),JU),Ld(f1r(e),qU,GU);var c=n[4];if(c){G0r(e,zU);var s=c[1];Md(C2r[1],(function(t){return Nd(r,t)}),(function(r,t){return G0r(r,EU)}),e,s),G0r(e,VU)}else G0r(e,WU);return Nd(f1r(e),YU),Nd(f1r(e),HU)})),Xk(d9r,(function(r,t,e){var n=Ld(p9r,r,t);return Ld(c1r(yU),n,e)}));var w9r=[0,p9r,d9r],h9r=function r(t,e,n,u){return r.fun(t,e,n,u)},m9r=function r(t,e,n){return r.fun(t,e,n)};Xk(h9r,(function(r,t,e,n){Nd(f1r(e),uU),Ld(f1r(e),iU,aU);var u=n[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),fU),Nd(f1r(e),cU),Ld(f1r(e),oU,sU);var a=n[2];if(a){G0r(e,vU);var i=a[1];Md(L2r[1][1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,lU)}else G0r(e,bU);Nd(f1r(e),DU),Nd(f1r(e),kU),Ld(f1r(e),dU,pU);var f=n[3];Nd(f1r(e),wU);return rZr((function(n,u){return n&&Nd(f1r(e),nU),Md(u5r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,f),Nd(f1r(e),hU),Nd(f1r(e),mU),Nd(f1r(e),FU)})),Xk(m9r,(function(r,t,e){var n=Ld(h9r,r,t);return Ld(c1r(eU),n,e)}));var F9r=[0,h9r,m9r],y9r=function r(t,e,n,u){return r.fun(t,e,n,u)},E9r=function r(t,e,n){return r.fun(t,e,n)};Xk(y9r,(function(r,t,e,n){Nd(f1r(e),Vj),Ld(f1r(e),Yj,Wj);var u=n[1];Md(F9r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Hj),Nd(f1r(e),$j),Ld(f1r(e),Qj,Kj);var a=n[2];return Ld(f1r(e),Zj,a),Nd(f1r(e),rU),Nd(f1r(e),tU)})),Xk(E9r,(function(r,t,e){var n=Ld(y9r,r,t);return Ld(c1r(zj),n,e)}));var _9r=[0,y9r,E9r],g9r=function r(t,e,n,u){return r.fun(t,e,n,u)},C9r=function r(t,e,n){return r.fun(t,e,n)},S9r=function r(t,e,n,u){return r.fun(t,e,n,u)},x9r=function r(t,e,n){return r.fun(t,e,n)};Xk(g9r,(function(r,t,e,n){switch(n[0]){case 0:Nd(f1r(e),jj);var u=n[1];return Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Uj);case 1:Nd(f1r(e),Xj);var a=n[1];return Rd(x2r[1],(function(t){return Nd(r,t)}),e,a),Nd(f1r(e),Jj);default:Nd(f1r(e),Gj);var i=n[1];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),qj)}})),Xk(C9r,(function(r,t,e){var n=Ld(g9r,r,t);return Ld(c1r(Mj),n,e)})),Xk(S9r,(function(r,t,e,n){Nd(f1r(e),Tj),Ld(f1r(e),Bj,Aj);var u=n[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Ij),Nd(f1r(e),Oj),Ld(f1r(e),Nj,Pj);var a=n[2];return Md(g9r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),Lj),Nd(f1r(e),Rj)})),Xk(x9r,(function(r,t,e){var n=Ld(S9r,r,t);return Ld(c1r(xj),n,e)}));var T9r=[0,g9r,C9r,S9r,x9r],A9r=function r(t,e,n,u){return r.fun(t,e,n,u)},B9r=function r(t,e,n){return r.fun(t,e,n)};Xk(A9r,(function(r,t,e,n){Nd(f1r(e),wj),Ld(f1r(e),mj,hj);var u=n[1];Md(T9r[3],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Fj),Nd(f1r(e),yj),Ld(f1r(e),_j,Ej);var a=n[2];return Ld(f1r(e),gj,a),Nd(f1r(e),Cj),Nd(f1r(e),Sj)})),Xk(B9r,(function(r,t,e){var n=Ld(A9r,r,t);return Ld(c1r(dj),n,e)}));var I9r=[0,A9r,B9r],O9r=function r(t,e,n,u){return r.fun(t,e,n,u)},P9r=function r(t,e,n){return r.fun(t,e,n)};Xk(O9r,(function(r,t,e,n){Nd(f1r(e),KM),Ld(f1r(e),ZM,QM);var u=n[1];if(u){G0r(e,rj);var a=u[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),G0r(e,tj)}else G0r(e,ej);Nd(f1r(e),nj),Nd(f1r(e),uj),Ld(f1r(e),ij,aj);var i=n[2];if(i){G0r(e,fj);var f=i[1];Md(C2r[1],(function(t){return Nd(r,t)}),(function(r,t){return G0r(r,$M)}),e,f),G0r(e,cj)}else G0r(e,sj);Nd(f1r(e),oj),Nd(f1r(e),vj),Ld(f1r(e),bj,lj);var c=n[3];return Ld(f1r(e),Dj,c),Nd(f1r(e),kj),Nd(f1r(e),pj)})),Xk(P9r,(function(r,t,e){var n=Ld(O9r,r,t);return Ld(c1r(HM),n,e)}));var N9r=[0,O9r,P9r],L9r=function r(t,e,n,u){return r.fun(t,e,n,u)},R9r=function r(t,e,n){return r.fun(t,e,n)},M9r=function r(t,e,n,u){return r.fun(t,e,n,u)},j9r=function r(t,e,n){return r.fun(t,e,n)};Xk(L9r,(function(r,t,e,n){Nd(f1r(e),VM),Ld(r,e,n[1]),Nd(f1r(e),WM);var u=n[2];return Md(M9r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),YM)})),Xk(R9r,(function(r,t,e){var n=Ld(L9r,r,t);return Ld(c1r(zM),n,e)})),Xk(M9r,(function(r,t,e,n){Nd(f1r(e),BM),Ld(f1r(e),OM,IM);var u=n[1];Md(M2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),PM),Nd(f1r(e),NM),Ld(f1r(e),RM,LM);var a=n[2];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),MM),Nd(f1r(e),jM),Ld(f1r(e),XM,UM);var i=n[3];return Ld(f1r(e),JM,i),Nd(f1r(e),GM),Nd(f1r(e),qM)})),Xk(j9r,(function(r,t,e){var n=Ld(M9r,r,t);return Ld(c1r(AM),n,e)}));var U9r=[0,L9r,R9r,M9r,j9r],X9r=function r(t,e,n,u){return r.fun(t,e,n,u)},J9r=function r(t,e,n){return r.fun(t,e,n)};Xk(X9r,(function(r,t,e,n){Nd(f1r(e),pM),Ld(f1r(e),wM,dM);var u=n[1];Nd(f1r(e),hM);rZr((function(n,u){return n&&Nd(f1r(e),kM),Md(U9r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,u),Nd(f1r(e),mM),Nd(f1r(e),FM),Nd(f1r(e),yM),Ld(f1r(e),_M,EM);var a=n[2];if(a){G0r(e,gM);var i=a[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,CM)}else G0r(e,SM);return Nd(f1r(e),xM),Nd(f1r(e),TM)})),Xk(J9r,(function(r,t,e){var n=Ld(X9r,r,t);return Ld(c1r(DM),n,e)}));var G9r=[0,U9r,X9r,J9r],q9r=function r(t,e,n,u){return r.fun(t,e,n,u)},z9r=function r(t,e,n){return r.fun(t,e,n)};Xk(q9r,(function(r,t,e,n){Nd(f1r(e),rM),Ld(f1r(e),eM,tM);var u=n[1];Nd(f1r(e),nM);rZr((function(n,u){return n&&Nd(f1r(e),ZR),Md(G9r[1][1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,u),Nd(f1r(e),uM),Nd(f1r(e),aM),Nd(f1r(e),iM),Ld(f1r(e),cM,fM);var a=n[2];if(a){G0r(e,sM);var i=a[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,oM)}else G0r(e,vM);return Nd(f1r(e),lM),Nd(f1r(e),bM)})),Xk(z9r,(function(r,t,e){var n=Ld(q9r,r,t);return Ld(c1r(QR),n,e)}));var V9r=[0,q9r,z9r],W9r=function r(t,e,n,u){return r.fun(t,e,n,u)},Y9r=function r(t,e,n){return r.fun(t,e,n)};Xk(W9r,(function(r,t,e,n){Nd(f1r(e),GR),Ld(f1r(e),zR,qR);var u=n[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),VR),Nd(f1r(e),WR),Ld(f1r(e),HR,YR);var a=n[2];return Md(P2r[9],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),$R),Nd(f1r(e),KR)})),Xk(Y9r,(function(r,t,e){var n=Ld(W9r,r,t);return Ld(c1r(JR),n,e)}));var H9r=[0,W9r,Y9r],$9r=function r(t,e,n){return r.fun(t,e,n)},K9r=function r(t,e){return r.fun(t,e)};Xk($9r,(function(r,t,e){Nd(f1r(t),OR),Ld(f1r(t),NR,PR);var n=e[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(t){return Nd(r,t)}),t,n),Nd(f1r(t),LR),Nd(f1r(t),RR),Ld(f1r(t),jR,MR);var u=e[2];return Md(S2r[1],(function(t){return Nd(r,t)}),(function(t){return Nd(r,t)}),t,u),Nd(f1r(t),UR),Nd(f1r(t),XR)})),Xk(K9r,(function(r,t){var e=Nd($9r,r);return Ld(c1r(IR),e,t)}));var Q9r=[0,$9r,K9r],Z9r=function r(t,e,n,u){return r.fun(t,e,n,u)},rrt=function r(t,e,n){return r.fun(t,e,n)},trt=function r(t,e,n,u){return r.fun(t,e,n,u)},ert=function r(t,e,n){return r.fun(t,e,n)};Xk(Z9r,(function(r,t,e,n){Nd(f1r(e),TR),Ld(t,e,n[1]),Nd(f1r(e),AR);var u=n[2];return Md(trt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),BR)})),Xk(rrt,(function(r,t,e){var n=Ld(Z9r,r,t);return Ld(c1r(xR),n,e)})),Xk(trt,(function(r,t,e,n){if("number"==typeof n)return G0r(e,0===n?yL:EL);switch(n[0]){case 0:Nd(f1r(e),_L);var u=n[1];return Md(c5r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),gL);case 1:Nd(f1r(e),CL);var a=n[1];return Md(X2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),SL);case 2:Nd(f1r(e),xL);var i=n[1];return Md(e9r[3],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),TL);case 3:Nd(f1r(e),AL);var f=n[1];return Md(K5r[3],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),Nd(f1r(e),BL);case 4:Nd(f1r(e),IL);var c=n[1];return Md(F9r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,c),Nd(f1r(e),OL);case 5:Nd(f1r(e),PL);var s=n[1];return Md(U2r[8],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,s),Nd(f1r(e),NL);case 6:Nd(f1r(e),LL);var o=n[1];return Md(G9r[2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,o),Nd(f1r(e),RL);case 7:Nd(f1r(e),ML);var v=n[1];return Md(k9r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,v),Nd(f1r(e),jL);case 8:Nd(f1r(e),UL);var l=n[1];return Md(X2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,l),Nd(f1r(e),XL);case 9:Nd(f1r(e),JL);var b=n[1];return Md(V9r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,b),Nd(f1r(e),GL);case 10:Nd(f1r(e),qL);var D=n[1];return Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,D),Nd(f1r(e),zL);case 11:Nd(f1r(e),VL);var k=n[1];return Md(Z9r,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,k),Nd(f1r(e),WL);case 12:Nd(f1r(e),YL);var p=n[1];return Md(R2r[16],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,p),Nd(f1r(e),HL);case 13:Nd(f1r(e),$L);var d=n[1];return Md(R2r[18],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,d),Nd(f1r(e),KL);case 14:Nd(f1r(e),QL);var w=n[1];return Rd(T2r[2],(function(t){return Nd(r,t)}),e,w),Nd(f1r(e),ZL);case 15:Nd(f1r(e),rR);var h=n[1];return Md(l9r[3],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,h),Nd(f1r(e),tR);case 16:Nd(f1r(e),eR);var m=n[1];return Md(T9r[3],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,m),Nd(f1r(e),nR);case 17:Nd(f1r(e),uR);var F=n[1];return Rd(Q9r[1],(function(t){return Nd(r,t)}),e,F),Nd(f1r(e),aR);case 18:Nd(f1r(e),iR);var y=n[1];return Md(w9r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,y),Nd(f1r(e),fR);case 19:Nd(f1r(e),cR);var E=n[1];return Md(M5r[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,E),Nd(f1r(e),sR);case 20:Nd(f1r(e),oR);var _=n[1];return Md(_9r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,_),Nd(f1r(e),vR);case 21:Nd(f1r(e),lR);var g=n[1];return Md(I9r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,g),Nd(f1r(e),bR);case 22:Nd(f1r(e),DR);var C=n[1];return Md(X5r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,C),Nd(f1r(e),kR);case 23:Nd(f1r(e),pR);var S=n[1];return Md(F5r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,S),Nd(f1r(e),dR);case 24:Nd(f1r(e),wR);var x=n[1];return Md(w5r[2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,x),Nd(f1r(e),hR);case 25:Nd(f1r(e),mR);var T=n[1];return Md(H9r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,T),Nd(f1r(e),FR);case 26:Nd(f1r(e),yR);var A=n[1];return Md(V5r[3],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,A),Nd(f1r(e),ER);case 27:Nd(f1r(e),_R);var B=n[1];return Md(f9r[3],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,B),Nd(f1r(e),gR);default:Nd(f1r(e),CR);var I=n[1];return Md(N9r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,I),Nd(f1r(e),SR)}})),Xk(ert,(function(r,t,e){var n=Ld(trt,r,t);return Ld(c1r(FL),n,e)})),Rd(O1r,Jvr,L2r,[0,e5r,n5r,u5r,a5r,c5r,w5r,F5r,M5r,X5r,V5r,K5r,e9r,f9r,l9r,k9r,w9r,F9r,_9r,T9r,I9r,N9r,G9r,V9r,H9r,Q9r,Z9r,rrt,trt,ert]);var nrt=function r(t,e,n){return r.fun(t,e,n)},urt=function r(t,e){return r.fun(t,e)},art=function r(t,e){return r.fun(t,e)},irt=function r(t){return r.fun(t)};Xk(nrt,(function(r,t,e){return Nd(f1r(t),wL),Ld(r,t,e[1]),Nd(f1r(t),hL),Ld(art,t,e[2]),Nd(f1r(t),mL)})),Xk(urt,(function(r,t){var e=Nd(nrt,r);return Ld(c1r(dL),e,t)})),Xk(art,(function(r,t){Nd(f1r(r),vL),Ld(f1r(r),bL,lL);var e=t[1];return Ld(f1r(r),DL,e),Nd(f1r(r),kL),Nd(f1r(r),pL)})),Xk(irt,(function(r){return Ld(c1r(oL),art,r)}));var frt=[0,nrt,urt,art,irt],crt=function r(t,e,n,u){return r.fun(t,e,n,u)},srt=function r(t,e,n){return r.fun(t,e,n)},ort=function r(t,e,n){return r.fun(t,e,n)},vrt=function r(t,e){return r.fun(t,e)};Xk(crt,(function(r,t,e,n){Nd(f1r(e),fL),Ld(r,e,n[1]),Nd(f1r(e),cL);var u=n[2];return Rd(ort,(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),sL)})),Xk(srt,(function(r,t,e){var n=Ld(crt,r,t);return Ld(c1r(iL),n,e)})),Xk(ort,(function(r,t,e){Nd(f1r(t),KN),Ld(f1r(t),ZN,QN);var n=e[1];Rd(frt[1],(function(t){return Nd(r,t)}),t,n),Nd(f1r(t),rL),Nd(f1r(t),tL),Ld(f1r(t),nL,eL);var u=e[2];return Rd(frt[1],(function(t){return Nd(r,t)}),t,u),Nd(f1r(t),uL),Nd(f1r(t),aL)})),Xk(vrt,(function(r,t){var e=Nd(ort,r);return Ld(c1r($N),e,t)}));var lrt=[0,crt,srt,ort,vrt],brt=function r(t,e,n,u){return r.fun(t,e,n,u)},Drt=function r(t,e,n){return r.fun(t,e,n)},krt=function r(t,e,n,u){return r.fun(t,e,n,u)},prt=function r(t,e,n){return r.fun(t,e,n)};Xk(brt,(function(r,t,e,n){Nd(f1r(e),zN),Ld(f1r(e),WN,VN);var u=n[1];return Md(krt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),YN),Nd(f1r(e),HN)})),Xk(Drt,(function(r,t,e){var n=Ld(brt,r,t);return Ld(c1r(qN),n,e)})),Xk(krt,(function(r,t,e,n){if(n){Nd(f1r(e),XN);var u=n[1];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),JN)}return G0r(e,GN)})),Xk(prt,(function(r,t,e){var n=Ld(krt,r,t);return Ld(c1r(UN),n,e)}));var drt=[0,brt,Drt,krt,prt],wrt=function(r,t){Nd(f1r(r),xN),Ld(f1r(r),AN,TN);var e=t[1];Ld(f1r(r),BN,e),Nd(f1r(r),IN),Nd(f1r(r),ON),Ld(f1r(r),NN,PN);var n=t[2];return Ld(f1r(r),LN,n),Nd(f1r(r),RN),Nd(f1r(r),MN)},hrt=[0,wrt,function(r){return Ld(c1r(jN),wrt,r)}],mrt=function r(t,e,n,u){return r.fun(t,e,n,u)},Frt=function r(t,e,n){return r.fun(t,e,n)},yrt=function r(t,e,n,u){return r.fun(t,e,n,u)},Ert=function r(t,e,n){return r.fun(t,e,n)},_rt=function r(t,e,n,u){return r.fun(t,e,n,u)},grt=function r(t,e,n){return r.fun(t,e,n)},Crt=function r(t,e,n,u){return r.fun(t,e,n,u)},Srt=function r(t,e,n){return r.fun(t,e,n)};Xk(mrt,(function(r,t,e,n){Nd(f1r(e),gN),Ld(r,e,n[1]),Nd(f1r(e),CN);var u=n[2];return Md(Crt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),SN)})),Xk(Frt,(function(r,t,e){var n=Ld(mrt,r,t);return Ld(c1r(_N),n,e)})),Xk(yrt,(function(r,t,e,n){if(0===n[0]){Nd(f1r(e),mN);var u=n[1];return Rd(frt[1],(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),FN)}Nd(f1r(e),yN);var a=n[1];return Md(lrt[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),EN)})),Xk(Ert,(function(r,t,e){var n=Ld(yrt,r,t);return Ld(c1r(hN),n,e)})),Xk(_rt,(function(r,t,e,n){if(0===n[0]){Nd(f1r(e),bN),Ld(t,e,n[1]),Nd(f1r(e),DN);var u=n[2];return Rd(T2r[2],(function(t){return Nd(r,t)}),e,u),Nd(f1r(e),kN)}Nd(f1r(e),pN),Ld(t,e,n[1]),Nd(f1r(e),dN);var a=n[2];return Md(drt[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),wN)})),Xk(grt,(function(r,t,e){var n=Ld(_rt,r,t);return Ld(c1r(lN),n,e)})),Xk(Crt,(function(r,t,e,n){Nd(f1r(e),rN),Ld(f1r(e),eN,tN);var u=n[1];Md(yrt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),nN),Nd(f1r(e),uN),Ld(f1r(e),iN,aN);var a=n[2];if(a){G0r(e,fN);var i=a[1];Md(_rt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,cN)}else G0r(e,sN);return Nd(f1r(e),oN),Nd(f1r(e),vN)})),Xk(Srt,(function(r,t,e){var n=Ld(Crt,r,t);return Ld(c1r(ZP),n,e)}));var xrt=[0,mrt,Frt,yrt,Ert,_rt,grt,Crt,Srt],Trt=function r(t,e,n,u){return r.fun(t,e,n,u)},Art=function r(t,e,n){return r.fun(t,e,n)},Brt=function r(t,e,n,u){return r.fun(t,e,n,u)},Irt=function r(t,e,n){return r.fun(t,e,n)};Xk(Trt,(function(r,t,e,n){Nd(f1r(e),$P),Ld(r,e,n[1]),Nd(f1r(e),KP);var u=n[2];return Md(Brt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),QP)})),Xk(Art,(function(r,t,e){var n=Ld(Trt,r,t);return Ld(c1r(HP),n,e)})),Xk(Brt,(function(r,t,e,n){Nd(f1r(e),qP),Ld(f1r(e),VP,zP);var u=n[1];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),WP),Nd(f1r(e),YP)})),Xk(Irt,(function(r,t,e){var n=Ld(Brt,r,t);return Ld(c1r(GP),n,e)}));var Ort=[0,Trt,Art,Brt,Irt],Prt=function r(t,e,n,u){return r.fun(t,e,n,u)},Nrt=function r(t,e,n){return r.fun(t,e,n)},Lrt=function r(t,e,n,u){return r.fun(t,e,n,u)},Rrt=function r(t,e,n){return r.fun(t,e,n)},Mrt=function r(t,e,n,u){return r.fun(t,e,n,u)},jrt=function r(t,e,n){return r.fun(t,e,n)};Xk(Prt,(function(r,t,e,n){Nd(f1r(e),UP),Ld(r,e,n[1]),Nd(f1r(e),XP);var u=n[2];return Md(Mrt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),JP)})),Xk(Nrt,(function(r,t,e){var n=Ld(Prt,r,t);return Ld(c1r(jP),n,e)})),Xk(Lrt,(function(r,t,e,n){if(0===n[0]){Nd(f1r(e),NP);var u=n[1];return Rd(frt[1],(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),LP)}Nd(f1r(e),RP);var a=n[1];return Md(Prt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),MP)})),Xk(Rrt,(function(r,t,e){var n=Ld(Lrt,r,t);return Ld(c1r(PP),n,e)})),Xk(Mrt,(function(r,t,e,n){Nd(f1r(e),gP),Ld(f1r(e),SP,CP);var u=n[1];Md(Lrt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),xP),Nd(f1r(e),TP),Ld(f1r(e),BP,AP);var a=n[2];return Rd(frt[1],(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),IP),Nd(f1r(e),OP)})),Xk(jrt,(function(r,t,e){var n=Ld(Mrt,r,t);return Ld(c1r(_P),n,e)}));var Urt=[0,Prt,Nrt,Lrt,Rrt,Mrt,jrt],Xrt=function r(t,e,n,u){return r.fun(t,e,n,u)},Jrt=function r(t,e,n){return r.fun(t,e,n)};Xk(Xrt,(function(r,t,e,n){switch(n[0]){case 0:Nd(f1r(e),wP);var u=n[1];return Rd(frt[1],(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),hP);case 1:Nd(f1r(e),mP);var a=n[1];return Md(lrt[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),FP);default:Nd(f1r(e),yP);var i=n[1];return Md(Urt[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),EP)}})),Xk(Jrt,(function(r,t,e){var n=Ld(Xrt,r,t);return Ld(c1r(dP),n,e)}));var Grt=function r(t,e,n,u){return r.fun(t,e,n,u)},qrt=function r(t,e,n){return r.fun(t,e,n)},zrt=function r(t,e,n,u){return r.fun(t,e,n,u)},Vrt=function r(t,e,n){return r.fun(t,e,n)},Wrt=function r(t,e,n,u){return r.fun(t,e,n,u)},Yrt=function r(t,e,n){return r.fun(t,e,n)};Xk(Grt,(function(r,t,e,n){Nd(f1r(e),DP),Ld(r,e,n[1]),Nd(f1r(e),kP);var u=n[2];return Md(Wrt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),pP)})),Xk(qrt,(function(r,t,e){var n=Ld(Grt,r,t);return Ld(c1r(bP),n,e)})),Xk(zrt,(function(r,t,e,n){if(0===n[0]){Nd(f1r(e),sP);var u=n[1];return Md(xrt[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),oP)}Nd(f1r(e),vP);var a=n[1];return Md(Ort[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),lP)})),Xk(Vrt,(function(r,t,e){var n=Ld(zrt,r,t);return Ld(c1r(cP),n,e)})),Xk(Wrt,(function(r,t,e,n){Nd(f1r(e),VO),Ld(f1r(e),YO,WO);var u=n[1];Md(Xrt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),HO),Nd(f1r(e),$O),Ld(f1r(e),QO,KO);var a=n[2];Ld(f1r(e),ZO,a),Nd(f1r(e),rP),Nd(f1r(e),tP),Ld(f1r(e),nP,eP);var i=n[3];Nd(f1r(e),uP);return rZr((function(n,u){return n&&Nd(f1r(e),zO),Md(zrt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,i),Nd(f1r(e),aP),Nd(f1r(e),iP),Nd(f1r(e),fP)})),Xk(Yrt,(function(r,t,e){var n=Ld(Wrt,r,t);return Ld(c1r(qO),n,e)}));var Hrt=[0,Grt,qrt,zrt,Vrt,Wrt,Yrt],$rt=function r(t,e,n,u){return r.fun(t,e,n,u)},Krt=function r(t,e,n){return r.fun(t,e,n)},Qrt=function r(t,e,n,u){return r.fun(t,e,n,u)},Zrt=function r(t,e,n){return r.fun(t,e,n)};Xk($rt,(function(r,t,e,n){Nd(f1r(e),XO),Ld(r,e,n[1]),Nd(f1r(e),JO);var u=n[2];return Md(Qrt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),GO)})),Xk(Krt,(function(r,t,e){var n=Ld($rt,r,t);return Ld(c1r(UO),n,e)})),Xk(Qrt,(function(r,t,e,n){Nd(f1r(e),NO),Ld(f1r(e),RO,LO);var u=n[1];return Md(Xrt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),MO),Nd(f1r(e),jO)})),Xk(Zrt,(function(r,t,e){var n=Ld(Qrt,r,t);return Ld(c1r(PO),n,e)}));var rtt=[0,$rt,Krt,Qrt,Zrt],ttt=function r(t,e,n,u){return r.fun(t,e,n,u)},ett=function r(t,e,n){return r.fun(t,e,n)},ntt=function r(t,e,n,u){return r.fun(t,e,n,u)},utt=function r(t,e,n){return r.fun(t,e,n)},att=function r(t,e,n,u){return r.fun(t,e,n,u)},itt=function r(t,e,n){return r.fun(t,e,n)},ftt=function r(t,e,n,u){return r.fun(t,e,n,u)},ctt=function r(t,e,n){return r.fun(t,e,n)};Xk(ttt,(function(r,t,e,n){Nd(f1r(e),BO),Ld(r,e,n[1]),Nd(f1r(e),IO);var u=n[2];return Md(ntt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),OO)})),Xk(ett,(function(r,t,e){var n=Ld(ttt,r,t);return Ld(c1r(AO),n,e)})),Xk(ntt,(function(r,t,e,n){switch(n[0]){case 0:Nd(f1r(e),mO);var u=n[1];return Md(att,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),FO);case 1:Nd(f1r(e),yO);var a=n[1];return Md(ftt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),EO);case 2:Nd(f1r(e),_O);var i=n[1];return Md(drt[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),gO);case 3:Nd(f1r(e),CO);var f=n[1];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),Nd(f1r(e),SO);default:return Nd(f1r(e),xO),Ld(hrt[1],e,n[1]),Nd(f1r(e),TO)}})),Xk(utt,(function(r,t,e){var n=Ld(ntt,r,t);return Ld(c1r(hO),n,e)})),Xk(att,(function(r,t,e,n){Nd(f1r(e),QI),Ld(f1r(e),rO,ZI);var u=n[1];Md(Hrt[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),tO),Nd(f1r(e),eO),Ld(f1r(e),uO,nO);var a=n[2];if(a){G0r(e,aO);var i=a[1];Md(rtt[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,iO)}else G0r(e,fO);Nd(f1r(e),cO),Nd(f1r(e),sO),Ld(f1r(e),vO,oO);var f=n[3];Nd(f1r(e),lO),Ld(r,e,f[1]),Nd(f1r(e),bO),Nd(f1r(e),DO);return rZr((function(n,u){return n&&Nd(f1r(e),KI),Md(ttt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,f[2]),Nd(f1r(e),kO),Nd(f1r(e),pO),Nd(f1r(e),dO),Nd(f1r(e),wO)})),Xk(itt,(function(r,t,e){var n=Ld(att,r,t);return Ld(c1r($I),n,e)})),Xk(ftt,(function(r,t,e,n){Nd(f1r(e),II),Ld(f1r(e),PI,OI),Ld(r,e,n[1]),Nd(f1r(e),NI),Nd(f1r(e),LI),Ld(f1r(e),MI,RI),Ld(r,e,n[2]),Nd(f1r(e),jI),Nd(f1r(e),UI),Ld(f1r(e),JI,XI);var u=n[3];Nd(f1r(e),GI),Ld(r,e,u[1]),Nd(f1r(e),qI),Nd(f1r(e),zI);return rZr((function(n,u){return n&&Nd(f1r(e),BI),Md(ttt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,u[2]),Nd(f1r(e),VI),Nd(f1r(e),WI),Nd(f1r(e),YI),Nd(f1r(e),HI)})),Xk(ctt,(function(r,t,e){var n=Ld(ftt,r,t);return Ld(c1r(AI),n,e)})),Rd(O1r,Gvr,R2r,[0,frt,lrt,drt,hrt,xrt,Ort,Urt,Xrt,Jrt,Hrt,rtt,ttt,ett,ntt,utt,att,itt,ftt,ctt]);var stt=function r(t,e,n,u){return r.fun(t,e,n,u)},ott=function r(t,e,n){return r.fun(t,e,n)},vtt=function r(t,e,n,u){return r.fun(t,e,n,u)},ltt=function r(t,e,n){return r.fun(t,e,n)},btt=function r(t,e,n,u){return r.fun(t,e,n,u)},Dtt=function r(t,e,n){return r.fun(t,e,n)};Xk(stt,(function(r,t,e,n){switch(n[0]){case 0:var u=n[1];Nd(f1r(e),FI),Nd(f1r(e),yI),Ld(r,e,u[1]),Nd(f1r(e),EI);var a=u[2];return Rd(T2r[2],(function(t){return Nd(r,t)}),e,a),Nd(f1r(e),_I),Nd(f1r(e),gI);case 1:Nd(f1r(e),CI);var i=n[1];return Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),SI);default:Nd(f1r(e),xI);var f=n[1];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),Nd(f1r(e),TI)}})),Xk(ott,(function(r,t,e){var n=Ld(stt,r,t);return Ld(c1r(mI),n,e)})),Xk(vtt,(function(r,t,e,n){Nd(f1r(e),dI),Ld(r,e,n[1]),Nd(f1r(e),wI);var u=n[2];return Md(btt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),hI)})),Xk(ltt,(function(r,t,e){var n=Ld(vtt,r,t);return Ld(c1r(pI),n,e)})),Xk(btt,(function(r,t,e,n){Nd(f1r(e),HB),Ld(f1r(e),KB,$B);var u=n[1];Md(stt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),QB),Nd(f1r(e),ZB),Ld(f1r(e),tI,rI);var a=n[2];Md(M2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),eI),Nd(f1r(e),nI),Ld(f1r(e),aI,uI);var i=n[3];if(i){G0r(e,iI);var f=i[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),G0r(e,fI)}else G0r(e,cI);Nd(f1r(e),sI),Nd(f1r(e),oI),Ld(f1r(e),lI,vI);var c=n[4];return Ld(f1r(e),bI,c),Nd(f1r(e),DI),Nd(f1r(e),kI)})),Xk(Dtt,(function(r,t,e){var n=Ld(btt,r,t);return Ld(c1r(YB),n,e)}));var ktt=[0,stt,ott,vtt,ltt,btt,Dtt],ptt=function r(t,e,n,u){return r.fun(t,e,n,u)},dtt=function r(t,e,n){return r.fun(t,e,n)},wtt=function r(t,e,n,u){return r.fun(t,e,n,u)},htt=function r(t,e,n){return r.fun(t,e,n)};Xk(ptt,(function(r,t,e,n){Nd(f1r(e),zB),Ld(r,e,n[1]),Nd(f1r(e),VB);var u=n[2];return Md(wtt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),WB)})),Xk(dtt,(function(r,t,e){var n=Ld(ptt,r,t);return Ld(c1r(qB),n,e)})),Xk(wtt,(function(r,t,e,n){Nd(f1r(e),jB),Ld(f1r(e),XB,UB);var u=n[1];return Md(M2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),JB),Nd(f1r(e),GB)})),Xk(htt,(function(r,t,e){var n=Ld(wtt,r,t);return Ld(c1r(MB),n,e)}));var mtt=[0,ptt,dtt,wtt,htt],Ftt=function r(t,e,n,u){return r.fun(t,e,n,u)},ytt=function r(t,e,n){return r.fun(t,e,n)},Ett=function r(t,e,n,u){return r.fun(t,e,n,u)},_tt=function r(t,e,n){return r.fun(t,e,n)};Xk(Ftt,(function(r,t,e,n){if(0===n[0]){Nd(f1r(e),PB);var u=n[1];return Md(ktt[3],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),NB)}Nd(f1r(e),LB);var a=n[1];return Md(mtt[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),RB)})),Xk(ytt,(function(r,t,e){var n=Ld(Ftt,r,t);return Ld(c1r(OB),n,e)})),Xk(Ett,(function(r,t,e,n){Nd(f1r(e),yB),Ld(f1r(e),_B,EB);var u=n[1];Nd(f1r(e),gB);rZr((function(n,u){return n&&Nd(f1r(e),FB),Md(Ftt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,u),Nd(f1r(e),CB),Nd(f1r(e),SB),Nd(f1r(e),xB),Ld(f1r(e),AB,TB);var a=n[2];return Md(P2r[11],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),BB),Nd(f1r(e),IB)})),Xk(_tt,(function(r,t,e){var n=Ld(Ett,r,t);return Ld(c1r(mB),n,e)}));var gtt=[0,ktt,mtt,Ftt,ytt,Ett,_tt],Ctt=function r(t,e,n,u){return r.fun(t,e,n,u)},Stt=function r(t,e,n){return r.fun(t,e,n)},xtt=function r(t,e,n,u){return r.fun(t,e,n,u)},Ttt=function r(t,e,n){return r.fun(t,e,n)};Xk(Ctt,(function(r,t,e,n){Nd(f1r(e),dB),Ld(r,e,n[1]),Nd(f1r(e),wB);var u=n[2];return Md(xtt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),hB)})),Xk(Stt,(function(r,t,e){var n=Ld(Ctt,r,t);return Ld(c1r(pB),n,e)})),Xk(xtt,(function(r,t,e,n){Nd(f1r(e),uB),Ld(f1r(e),iB,aB);var u=n[1];Md(M2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),fB),Nd(f1r(e),cB),Ld(f1r(e),oB,sB);var a=n[2];if(a){G0r(e,vB);var i=a[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,lB)}else G0r(e,bB);return Nd(f1r(e),DB),Nd(f1r(e),kB)})),Xk(Ttt,(function(r,t,e){var n=Ld(xtt,r,t);return Ld(c1r(nB),n,e)}));var Att=[0,Ctt,Stt,xtt,Ttt],Btt=function r(t,e,n,u){return r.fun(t,e,n,u)},Itt=function r(t,e,n){return r.fun(t,e,n)},Ott=function r(t,e,n,u){return r.fun(t,e,n,u)},Ptt=function r(t,e,n){return r.fun(t,e,n)};Xk(Btt,(function(r,t,e,n){Nd(f1r(e),rB),Ld(r,e,n[1]),Nd(f1r(e),tB);var u=n[2];return Md(Ott,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),eB)})),Xk(Itt,(function(r,t,e){var n=Ld(Btt,r,t);return Ld(c1r(ZA),n,e)})),Xk(Ott,(function(r,t,e,n){Nd(f1r(e),YA),Ld(f1r(e),$A,HA);var u=n[1];return Md(M2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),KA),Nd(f1r(e),QA)})),Xk(Ptt,(function(r,t,e){var n=Ld(Ott,r,t);return Ld(c1r(WA),n,e)}));var Ntt=[0,Btt,Itt,Ott,Ptt],Ltt=function r(t,e,n,u){return r.fun(t,e,n,u)},Rtt=function r(t,e,n){return r.fun(t,e,n)},Mtt=function r(t,e,n,u){return r.fun(t,e,n,u)},jtt=function r(t,e,n){return r.fun(t,e,n)};Xk(Ltt,(function(r,t,e,n){if(0===n[0]){Nd(f1r(e),GA);var u=n[1];return Md(Att[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),qA)}Nd(f1r(e),zA);var a=n[1];return Md(Ntt[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),VA)})),Xk(Rtt,(function(r,t,e){var n=Ld(Ltt,r,t);return Ld(c1r(JA),n,e)})),Xk(Mtt,(function(r,t,e,n){Nd(f1r(e),_A),Ld(f1r(e),CA,gA);var u=n[1];Nd(f1r(e),SA);rZr((function(n,u){if(n&&Nd(f1r(e),mA),u){G0r(e,FA);var a=u[1];Md(Ltt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),G0r(e,yA)}else G0r(e,EA);return 1}),0,u),Nd(f1r(e),xA),Nd(f1r(e),TA),Nd(f1r(e),AA),Ld(f1r(e),IA,BA);var a=n[2];Md(P2r[11],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),OA),Nd(f1r(e),PA),Ld(f1r(e),LA,NA);var i=n[3];if(i){G0r(e,RA);var f=i[1];Md(C2r[1],(function(t){return Nd(r,t)}),(function(r,t){return G0r(r,hA)}),e,f),G0r(e,MA)}else G0r(e,jA);return Nd(f1r(e),UA),Nd(f1r(e),XA)})),Xk(jtt,(function(r,t,e){var n=Ld(Mtt,r,t);return Ld(c1r(wA),n,e)}));var Utt=[0,Att,Ntt,Ltt,Rtt,Mtt,jtt],Xtt=function r(t,e,n,u){return r.fun(t,e,n,u)},Jtt=function r(t,e,n){return r.fun(t,e,n)};Xk(Xtt,(function(r,t,e,n){Nd(f1r(e),uA),Ld(f1r(e),iA,aA);var u=n[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),fA),Nd(f1r(e),cA),Ld(f1r(e),oA,sA);var a=n[2];Md(P2r[11],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),vA),Nd(f1r(e),lA),Ld(f1r(e),DA,bA);var i=n[3];return Ld(f1r(e),kA,i),Nd(f1r(e),pA),Nd(f1r(e),dA)})),Xk(Jtt,(function(r,t,e){var n=Ld(Xtt,r,t);return Ld(c1r(nA),n,e)}));var Gtt=[0,Xtt,Jtt],qtt=function r(t,e,n,u){return r.fun(t,e,n,u)},ztt=function r(t,e,n){return r.fun(t,e,n)},Vtt=function r(t,e,n,u){return r.fun(t,e,n,u)},Wtt=function r(t,e,n){return r.fun(t,e,n)};Xk(qtt,(function(r,t,e,n){Nd(f1r(e),rA),Ld(t,e,n[1]),Nd(f1r(e),tA);var u=n[2];return Md(Vtt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),eA)})),Xk(ztt,(function(r,t,e){var n=Ld(qtt,r,t);return Ld(c1r(ZT),n,e)})),Xk(Vtt,(function(r,t,e,n){switch(n[0]){case 0:Nd(f1r(e),zT);var u=n[1];return Md(gtt[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),VT);case 1:Nd(f1r(e),WT);var a=n[1];return Md(Utt[5],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),YT);case 2:Nd(f1r(e),HT);var i=n[1];return Md(Gtt[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),$T);default:Nd(f1r(e),KT);var f=n[1];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),Nd(f1r(e),QT)}})),Xk(Wtt,(function(r,t,e){var n=Ld(Vtt,r,t);return Ld(c1r(qT),n,e)})),Rd(O1r,qvr,M2r,[0,gtt,Utt,Gtt,qtt,ztt,Vtt,Wtt]);var Ytt=function r(t,e,n){return r.fun(t,e,n)},Htt=function r(t,e){return r.fun(t,e)},$tt=function r(t,e){return r.fun(t,e)},Ktt=function r(t){return r.fun(t)};Xk(Ytt,(function(r,t,e){return Nd(f1r(t),XT),Ld(r,t,e[1]),Nd(f1r(t),JT),Ld($tt,t,e[2]),Nd(f1r(t),GT)})),Xk(Htt,(function(r,t){var e=Nd(Ytt,r);return Ld(c1r(UT),e,t)})),Xk($tt,(function(r,t){if(0===t[0]){Nd(f1r(r),PT);var e=t[1];return Ld(f1r(r),NT,e),Nd(f1r(r),LT)}Nd(f1r(r),RT);var n=t[1];return Ld(f1r(r),MT,n),Nd(f1r(r),jT)})),Xk(Ktt,(function(r){return Ld(c1r(OT),$tt,r)})),Rd(O1r,zvr,j2r,[0,Ytt,Htt,$tt,Ktt]);var Qtt=function r(t,e,n,u){return r.fun(t,e,n,u)},Ztt=function r(t,e,n){return r.fun(t,e,n)},ret=function r(t,e){return r.fun(t,e)},tet=function r(t){return r.fun(t)},eet=function r(t,e,n,u){return r.fun(t,e,n,u)},net=function r(t,e,n){return r.fun(t,e,n)};Xk(Qtt,(function(r,t,e,n){Nd(f1r(e),AT),Ld(t,e,n[1]),Nd(f1r(e),BT);var u=n[2];return Md(eet,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),IT)})),Xk(Ztt,(function(r,t,e){var n=Ld(Qtt,r,t);return Ld(c1r(TT),n,e)})),Xk(ret,(function(r,t){switch(t){case 0:return G0r(r,gT);case 1:return G0r(r,CT);case 2:return G0r(r,ST);default:return G0r(r,xT)}})),Xk(tet,(function(r){return Ld(c1r(_T),ret,r)})),Xk(eet,(function(r,t,e,n){Nd(f1r(e),Kx),Ld(f1r(e),Zx,Qx),Ld(ret,e,n[1]),Nd(f1r(e),rT),Nd(f1r(e),tT),Ld(f1r(e),nT,eT);var u=n[2];Md(L2r[8][1][1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),uT),Nd(f1r(e),aT),Ld(f1r(e),fT,iT);var a=n[3];Nd(f1r(e),cT),Ld(r,e,a[1]),Nd(f1r(e),sT);var i=a[2];Md(X2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),oT),Nd(f1r(e),vT),Nd(f1r(e),lT),Ld(f1r(e),DT,bT);var f=n[4];Ld(f1r(e),kT,f),Nd(f1r(e),pT),Nd(f1r(e),dT),Ld(f1r(e),hT,wT);var c=n[5];Nd(f1r(e),mT);return rZr((function(n,u){return n&&Nd(f1r(e),$x),Md(U2r[7][1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,c),Nd(f1r(e),FT),Nd(f1r(e),yT),Nd(f1r(e),ET)})),Xk(net,(function(r,t,e){var n=Ld(eet,r,t);return Ld(c1r(Hx),n,e)}));var uet=[0,Qtt,Ztt,ret,tet,eet,net],aet=function r(t,e,n,u){return r.fun(t,e,n,u)},iet=function r(t,e,n){return r.fun(t,e,n)},fet=function r(t,e,n,u){return r.fun(t,e,n,u)},cet=function r(t,e,n){return r.fun(t,e,n)};Xk(aet,(function(r,t,e,n){Nd(f1r(e),Vx),Ld(t,e,n[1]),Nd(f1r(e),Wx);var u=n[2];return Md(fet,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Yx)})),Xk(iet,(function(r,t,e){var n=Ld(aet,r,t);return Ld(c1r(zx),n,e)})),Xk(fet,(function(r,t,e,n){Nd(f1r(e),dx),Ld(f1r(e),hx,wx);var u=n[1];Md(L2r[8][1][1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),mx),Nd(f1r(e),Fx),Ld(f1r(e),Ex,yx);var a=n[2];if(a){G0r(e,_x);var i=a[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,gx)}else G0r(e,Cx);Nd(f1r(e),Sx),Nd(f1r(e),xx),Ld(f1r(e),Ax,Tx);var f=n[3];Md(P2r[11],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),Nd(f1r(e),Bx),Nd(f1r(e),Ix),Ld(f1r(e),Px,Ox);var c=n[4];Ld(f1r(e),Nx,c),Nd(f1r(e),Lx),Nd(f1r(e),Rx),Ld(f1r(e),jx,Mx);var s=n[5];if(s){G0r(e,Ux);var o=s[1];Rd(O2r[1],(function(t){return Nd(r,t)}),e,o),G0r(e,Xx)}else G0r(e,Jx);return Nd(f1r(e),Gx),Nd(f1r(e),qx)})),Xk(cet,(function(r,t,e){var n=Ld(fet,r,t);return Ld(c1r(px),n,e)}));var set=[0,aet,iet,fet,cet],oet=function r(t,e,n,u){return r.fun(t,e,n,u)},vet=function r(t,e,n){return r.fun(t,e,n)},bet=function r(t,e,n,u){return r.fun(t,e,n,u)},Det=function r(t,e,n){return r.fun(t,e,n)};Xk(oet,(function(r,t,e,n){Nd(f1r(e),bx),Ld(t,e,n[1]),Nd(f1r(e),Dx);var u=n[2];return Md(bet,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),kx)})),Xk(vet,(function(r,t,e){var n=Ld(oet,r,t);return Ld(c1r(lx),n,e)})),Xk(bet,(function(r,t,e,n){Nd(f1r(e),MS),Ld(f1r(e),US,jS);var u=n[1];Rd(x2r[1],(function(t){return Nd(r,t)}),e,u),Nd(f1r(e),XS),Nd(f1r(e),JS),Ld(f1r(e),qS,GS);var a=n[2];if(a){G0r(e,zS);var i=a[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,VS)}else G0r(e,WS);Nd(f1r(e),YS),Nd(f1r(e),HS),Ld(f1r(e),KS,$S);var f=n[3];Md(P2r[11],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),Nd(f1r(e),QS),Nd(f1r(e),ZS),Ld(f1r(e),tx,rx);var c=n[4];Ld(f1r(e),ex,c),Nd(f1r(e),nx),Nd(f1r(e),ux),Ld(f1r(e),ix,ax);var s=n[5];if(s){G0r(e,fx);var o=s[1];Rd(O2r[1],(function(t){return Nd(r,t)}),e,o),G0r(e,cx)}else G0r(e,sx);return Nd(f1r(e),ox),Nd(f1r(e),vx)})),Xk(Det,(function(r,t,e){var n=Ld(bet,r,t);return Ld(c1r(RS),n,e)}));var ket=[0,oet,vet,bet,Det],pet=function r(t,e,n,u){return r.fun(t,e,n,u)},det=function r(t,e,n){return r.fun(t,e,n)},wet=function r(t,e,n,u){return r.fun(t,e,n,u)},het=function r(t,e,n){return r.fun(t,e,n)};Xk(pet,(function(r,t,e,n){Nd(f1r(e),PS),Ld(r,e,n[1]),Nd(f1r(e),NS);var u=n[2];return Md(wet,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),LS)})),Xk(det,(function(r,t,e){var n=Ld(pet,r,t);return Ld(c1r(OS),n,e)})),Xk(wet,(function(r,t,e,n){Nd(f1r(e),FS),Ld(f1r(e),ES,yS);var u=n[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),_S),Nd(f1r(e),gS),Ld(f1r(e),SS,CS);var a=n[2];if(a){G0r(e,xS);var i=a[1];Md(P2r[14][1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,TS)}else G0r(e,AS);return Nd(f1r(e),BS),Nd(f1r(e),IS)})),Xk(het,(function(r,t,e){var n=Ld(wet,r,t);return Ld(c1r(mS),n,e)}));var met=[0,pet,det,wet,het],Fet=function r(t,e,n,u){return r.fun(t,e,n,u)},yet=function r(t,e,n){return r.fun(t,e,n)},Eet=function r(t,e,n,u){return r.fun(t,e,n,u)},_et=function r(t,e,n){return r.fun(t,e,n)};Xk(Fet,(function(r,t,e,n){Nd(f1r(e),dS),Ld(r,e,n[1]),Nd(f1r(e),wS);var u=n[2];return Md(Eet,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),hS)})),Xk(yet,(function(r,t,e){var n=Ld(Fet,r,t);return Ld(c1r(pS),n,e)})),Xk(Eet,(function(r,t,e,n){Nd(f1r(e),uS),Ld(f1r(e),iS,aS);var u=n[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),fS),Nd(f1r(e),cS),Ld(f1r(e),oS,sS);var a=n[2];if(a){G0r(e,vS);var i=a[1];Md(P2r[14][1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,lS)}else G0r(e,bS);return Nd(f1r(e),DS),Nd(f1r(e),kS)})),Xk(_et,(function(r,t,e){var n=Ld(Eet,r,t);return Ld(c1r(nS),n,e)}));var get=function r(t,e,n,u){return r.fun(t,e,n,u)},Cet=function r(t,e,n){return r.fun(t,e,n)},Set=function r(t,e,n,u){return r.fun(t,e,n,u)},xet=function r(t,e,n){return r.fun(t,e,n)},Tet=function r(t,e,n,u){return r.fun(t,e,n,u)},Aet=function r(t,e,n){return r.fun(t,e,n)},Bet=[0,Fet,yet,Eet,_et];Xk(get,(function(r,t,e,n){Nd(f1r(e),rS),Ld(t,e,n[1]),Nd(f1r(e),tS);var u=n[2];return Md(Set,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),eS)})),Xk(Cet,(function(r,t,e){var n=Ld(get,r,t);return Ld(c1r(ZC),n,e)})),Xk(Set,(function(r,t,e,n){Nd(f1r(e),VC),Ld(f1r(e),YC,WC);var u=n[1];Nd(f1r(e),HC);return rZr((function(n,u){return n&&Nd(f1r(e),zC),Md(Tet,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,u),Nd(f1r(e),$C),Nd(f1r(e),KC),Nd(f1r(e),QC)})),Xk(xet,(function(r,t,e){var n=Ld(Set,r,t);return Ld(c1r(qC),n,e)})),Xk(Tet,(function(r,t,e,n){switch(n[0]){case 0:Nd(f1r(e),MC);var u=n[1];return Md(uet[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),jC);case 1:Nd(f1r(e),UC);var a=n[1];return Md(set[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),XC);default:Nd(f1r(e),JC);var i=n[1];return Md(ket[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),GC)}})),Xk(Aet,(function(r,t,e){var n=Ld(Tet,r,t);return Ld(c1r(RC),n,e)}));var Iet=function r(t,e,n,u){return r.fun(t,e,n,u)},Oet=function r(t,e,n){return r.fun(t,e,n)},Pet=function r(t,e,n,u){return r.fun(t,e,n,u)},Net=function r(t,e,n){return r.fun(t,e,n)},Let=[0,get,Cet,Set,xet,Tet,Aet];Xk(Iet,(function(r,t,e,n){Nd(f1r(e),PC),Ld(r,e,n[1]),Nd(f1r(e),NC);var u=n[2];return Md(Pet,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),LC)})),Xk(Oet,(function(r,t,e){var n=Ld(Iet,r,t);return Ld(c1r(OC),n,e)})),Xk(Pet,(function(r,t,e,n){Nd(f1r(e),xC),Ld(f1r(e),AC,TC);var u=n[1];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),BC),Nd(f1r(e),IC)})),Xk(Net,(function(r,t,e){var n=Ld(Pet,r,t);return Ld(c1r(SC),n,e)}));var Ret=[0,Iet,Oet,Pet,Net],Met=function r(t,e,n,u){return r.fun(t,e,n,u)},jet=function r(t,e,n){return r.fun(t,e,n)};Xk(Met,(function(r,t,e,n){Nd(f1r(e),Lg),Ld(f1r(e),Mg,Rg);var u=n[1];if(u){G0r(e,jg);var a=u[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),G0r(e,Ug)}else G0r(e,Xg);Nd(f1r(e),Jg),Nd(f1r(e),Gg),Ld(f1r(e),zg,qg);var i=n[2];Md(U2r[6][1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),Vg),Nd(f1r(e),Wg),Ld(f1r(e),Hg,Yg);var f=n[3];if(f){G0r(e,$g);var c=f[1];Md(P2r[13][2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,c),G0r(e,Kg)}else G0r(e,Qg);Nd(f1r(e),Zg),Nd(f1r(e),rC),Ld(f1r(e),eC,tC);var s=n[4];if(s){G0r(e,nC);var o=s[1];Md(met[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,o),G0r(e,uC)}else G0r(e,aC);Nd(f1r(e),iC),Nd(f1r(e),fC),Ld(f1r(e),sC,cC);var v=n[5];Nd(f1r(e),oC);rZr((function(n,u){return n&&Nd(f1r(e),Ng),Md(U2r[5][1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,v),Nd(f1r(e),vC),Nd(f1r(e),lC),Nd(f1r(e),bC),Ld(f1r(e),kC,DC);var l=n[6];Nd(f1r(e),pC);rZr((function(n,u){return n&&Nd(f1r(e),Pg),Md(Ret[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,l),Nd(f1r(e),dC),Nd(f1r(e),wC),Nd(f1r(e),hC),Ld(f1r(e),FC,mC);var b=n[7];if(b){G0r(e,yC);var D=b[1];Md(C2r[1],(function(t){return Nd(r,t)}),(function(r,t){return G0r(r,Og)}),e,D),G0r(e,EC)}else G0r(e,_C);return Nd(f1r(e),gC),Nd(f1r(e),CC)})),Xk(jet,(function(r,t,e){var n=Ld(Met,r,t);return Ld(c1r(Ig),n,e)})),Rd(O1r,Vvr,U2r,[0,uet,set,ket,met,Bet,Let,Ret,Met,jet]);var Uet=function r(t,e,n,u){return r.fun(t,e,n,u)},Xet=function r(t,e,n){return r.fun(t,e,n)},Jet=function r(t,e,n,u){return r.fun(t,e,n,u)},Get=function r(t,e,n){return r.fun(t,e,n)};Xk(Uet,(function(r,t,e,n){Nd(f1r(e),Tg),Ld(r,e,n[1]),Nd(f1r(e),Ag);var u=n[2];return Md(Jet,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Bg)})),Xk(Xet,(function(r,t,e){var n=Ld(Uet,r,t);return Ld(c1r(xg),n,e)})),Xk(Jet,(function(r,t,e,n){Nd(f1r(e),Eg),Ld(f1r(e),gg,_g);var u=n[1];return Md(M2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Cg),Nd(f1r(e),Sg)})),Xk(Get,(function(r,t,e){var n=Ld(Jet,r,t);return Ld(c1r(yg),n,e)}));var qet=[0,Uet,Xet,Jet,Get],zet=function r(t,e,n,u){return r.fun(t,e,n,u)},Vet=function r(t,e,n){return r.fun(t,e,n)},Wet=function r(t,e,n,u){return r.fun(t,e,n,u)},Yet=function r(t,e,n){return r.fun(t,e,n)};Xk(zet,(function(r,t,e,n){Nd(f1r(e),hg),Ld(r,e,n[1]),Nd(f1r(e),mg);var u=n[2];return Md(Wet,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),Fg)})),Xk(Vet,(function(r,t,e){var n=Ld(zet,r,t);return Ld(c1r(wg),n,e)})),Xk(Wet,(function(r,t,e,n){Nd(f1r(e),ig),Ld(f1r(e),cg,fg);var u=n[1];Md(M2r[4],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),sg),Nd(f1r(e),og),Ld(f1r(e),lg,vg);var a=n[2];if(a){G0r(e,bg);var i=a[1];Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,Dg)}else G0r(e,kg);return Nd(f1r(e),pg),Nd(f1r(e),dg)})),Xk(Yet,(function(r,t,e){var n=Ld(Wet,r,t);return Ld(c1r(ag),n,e)}));var Het=[0,zet,Vet,Wet,Yet],$et=function r(t,e,n,u){return r.fun(t,e,n,u)},Ket=function r(t,e,n){return r.fun(t,e,n)},Qet=function r(t,e,n,u){return r.fun(t,e,n,u)},Zet=function r(t,e,n){return r.fun(t,e,n)};Xk($et,(function(r,t,e,n){Nd(f1r(e),eg),Ld(r,e,n[1]),Nd(f1r(e),ng);var u=n[2];return Md(Qet,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),Nd(f1r(e),ug)})),Xk(Ket,(function(r,t,e){var n=Ld($et,r,t);return Ld(c1r(tg),n,e)})),Xk(Qet,(function(r,t,e,n){Nd(f1r(e),X_),Ld(f1r(e),G_,J_);var u=n[1];Nd(f1r(e),q_);rZr((function(n,u){return n&&Nd(f1r(e),U_),Md(Het[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,u),Nd(f1r(e),z_),Nd(f1r(e),V_),Nd(f1r(e),W_),Ld(f1r(e),H_,Y_);var a=n[2];if(a){G0r(e,$_);var i=a[1];Md(qet[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),G0r(e,K_)}else G0r(e,Q_);return Nd(f1r(e),Z_),Nd(f1r(e),rg)})),Xk(Zet,(function(r,t,e){var n=Ld(Qet,r,t);return Ld(c1r(j_),n,e)}));var rnt=[0,$et,Ket,Qet,Zet],tnt=function r(t,e,n,u){return r.fun(t,e,n,u)},ent=function r(t,e,n){return r.fun(t,e,n)},nnt=function r(t,e,n,u){return r.fun(t,e,n,u)},unt=function r(t,e,n){return r.fun(t,e,n)};Xk(tnt,(function(r,t,e,n){Nd(f1r(e),zE),Ld(f1r(e),WE,VE);var u=n[1];if(u){G0r(e,YE);var a=u[1];Md(S2r[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),G0r(e,HE)}else G0r(e,$E);Nd(f1r(e),KE),Nd(f1r(e),QE),Ld(f1r(e),r_,ZE);var i=n[2];Md(rnt[1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),t_),Nd(f1r(e),e_),Ld(f1r(e),u_,n_);var f=n[3];Md(nnt,(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,f),Nd(f1r(e),a_),Nd(f1r(e),i_),Ld(f1r(e),c_,f_);var c=n[4];Ld(f1r(e),s_,c),Nd(f1r(e),o_),Nd(f1r(e),v_),Ld(f1r(e),b_,l_);var s=n[5];Ld(f1r(e),D_,s),Nd(f1r(e),k_),Nd(f1r(e),p_),Ld(f1r(e),w_,d_);var o=n[6];if(o){G0r(e,h_);var v=o[1];Md(P2r[15][1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,v),G0r(e,m_)}else G0r(e,F_);Nd(f1r(e),y_),Nd(f1r(e),E_),Ld(f1r(e),g_,__);var l=n[7];Md(P2r[11],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,l),Nd(f1r(e),C_),Nd(f1r(e),S_),Ld(f1r(e),T_,x_);var b=n[8];if(b){G0r(e,A_);var D=b[1];Md(P2r[13][2],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,D),G0r(e,B_)}else G0r(e,I_);return Nd(f1r(e),O_),Nd(f1r(e),P_),Ld(f1r(e),L_,N_),Ld(r,e,n[9]),Nd(f1r(e),R_),Nd(f1r(e),M_)})),Xk(ent,(function(r,t,e){var n=Ld(tnt,r,t);return Ld(c1r(qE),n,e)})),Xk(nnt,(function(r,t,e,n){if(0===n[0]){var u=n[1];Nd(f1r(e),RE),Nd(f1r(e),ME),Ld(r,e,u[1]),Nd(f1r(e),jE);var a=u[2];return Md(N2r[1][1],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,a),Nd(f1r(e),UE),Nd(f1r(e),XE)}Nd(f1r(e),JE);var i=n[1];return Md(L2r[26],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,i),Nd(f1r(e),GE)})),Xk(unt,(function(r,t,e){var n=Ld(nnt,r,t);return Ld(c1r(LE),n,e)})),Rd(O1r,Wvr,X2r,[0,qet,Het,rnt,tnt,ent,nnt,unt]);var ant=function r(t,e,n,u){return r.fun(t,e,n,u)};Xk(ant,(function(r,t,e,n){Nd(f1r(e),xE),Ld(r,e,n[1]),Nd(f1r(e),TE),Nd(f1r(e),AE);rZr((function(n,u){return n&&Nd(f1r(e),SE),Md(N2r[32],(function(t){return Nd(r,t)}),(function(r){return Nd(t,r)}),e,u),1}),0,n[2]),Nd(f1r(e),BE),Nd(f1r(e),IE),Nd(f1r(e),OE);return rZr((function(t,n){return t&&Nd(f1r(e),CE),Rd(j2r[1],(function(t){return Nd(r,t)}),e,n),1}),0,n[3]),Nd(f1r(e),PE),Nd(f1r(e),NE)})),Xk((function r(t,e,n){return r.fun(t,e,n)}),(function(r,t,e){var n=Ld(ant,r,t);return Ld(c1r(gE),n,e)}));var int=function(r,t){Nd(f1r(r),Yvr),Ld(f1r(r),$vr,Hvr);var e=t[1];Ld(f1r(r),Kvr,e),Nd(f1r(r),Qvr),Nd(f1r(r),Zvr),Ld(f1r(r),tlr,rlr);var n=t[2];return Ld(f1r(r),elr,n),Nd(f1r(r),nlr),Nd(f1r(r),ulr)},fnt=function r(t,e){return r.fun(t,e)};Xk(fnt,(function(r,t){Nd(f1r(r),ilr),Ld(f1r(r),clr,flr);var e=t[1];if(e){G0r(r,slr);var n=e[1];if("number"==typeof n)G0r(r,vE);else switch(n[0]){case 0:Nd(f1r(r),lE);var u=n[1];Ld(f1r(r),bE,u),Nd(f1r(r),DE);break;case 1:Nd(f1r(r),kE);var a=n[1];Ld(f1r(r),pE,a),Nd(f1r(r),dE);break;case 2:Nd(f1r(r),wE);var i=n[1];Ld(f1r(r),hE,i),Nd(f1r(r),mE);break;default:Nd(f1r(r),FE);var f=n[1];Ld(f1r(r),yE,f),Nd(f1r(r),EE)}G0r(r,olr)}else G0r(r,vlr);return Nd(f1r(r),llr),Nd(f1r(r),blr),Ld(f1r(r),klr,Dlr),int(r,t[2]),Nd(f1r(r),plr),Nd(f1r(r),dlr),Ld(f1r(r),hlr,wlr),int(r,t[3]),Nd(f1r(r),mlr),Nd(f1r(r),Flr)})),Xk((function r(t){return r.fun(t)}),(function(r){return Ld(c1r(alr),fnt,r)}));var cnt=function(r,t){return[0,r[1],r[2],t[3]]},snt=function(r,t){var e=r[1]-t[1]|0;return 0===e?r[2]-t[2]|0:e},ont=function r(t,e,n){return r.fun(t,e,n)};Xk(ont,(function(r,t,e){switch(e[0]){case 0:return rZr((function(t,e){var n=0===e[0]?e[1][2][2][2]:e[1][2][1][2];return Rd(ont,r,t,n)}),t,e[1][1]);case 1:return rZr((function(t,e){return e?Rd(ont,r,t,e[1][1][2][1][2]):t}),t,e[1][1]);case 2:return Ld(r,t,e[1][1]);default:return TQr(ebr)}}));var vnt=function(r){return r[2][1]},lnt=function(r){return[0,r[1],[0,r[2],0]]},bnt=function(r,t,e){var n=r?r[1]:r,u=t?t[1]:t;if(!n&&!u)return u;var a=[0,u],i=[0,n];return[0,[0,i?i[1]:i,a?a[1]:a,0]]},Dnt=function(r){return 3===r?2:1},knt=function(r,t,e){if(e){var n=e[1];if(8232===n)var u=0;else if(Of===n)u=0;else if(10===n){var a=6;u=1}else if(13===n)a=5,u=1;else if(65536<=n)a=3,u=1;else if(2048<=n)a=2,u=1;else{var i=j<=n?1:0;if(i)a=1,u=1;else a=i,u=1}if(!u)a=7;var f=a}else f=4;return[0,f,r]},pnt=[bc,fbr,_p()],dnt=function(r,t,e,n){try{var u;return cp(r,t)[t+1]}catch(u){if((u=Pd(u))[1]===Gd)throw[0,pnt,e,Rd(o0r(abr),n,t,r.length-1)];throw u}},wnt=function(r,t){if(0===t[1]&&0===t[2])return 0;var e=dnt(r,t[1]-1|0,t,nbr);return dnt(e,t[2],t,ubr)},hnt=[bc,Ykr,_p()],mnt=function(r){return[0,r[1],r[2].slice(),r[3],r[4],r[5],r[6]]},Fnt=function(r){return r[3][1]},ynt=function(r,t){return r!==t[4]?[0,t[1],t[2],t[3],r,t[5],t[6]]:t},Ent=function(r){if("number"==typeof r){var t=r;if(59<=t)switch(t){case 59:return xAr;case 60:return TAr;case 61:return AAr;case 62:return BAr;case 63:return IAr;case 64:return OAr;case 65:return PAr;case 66:return NAr;case 67:return LAr;case 68:return RAr;case 69:return MAr;case 70:return jAr;case 71:return UAr;case 72:return XAr;case 73:return JAr;case 74:return GAr;case 75:return qAr;case 76:return zAr;case 77:return VAr;case 78:return WAr;case 79:return YAr;case 80:return HAr;case 81:return $Ar;case 82:return KAr;case 83:return QAr;case 84:return ZAr;case 85:return rBr;case 86:return tBr;case 87:return eBr;case 88:return nBr;case 89:return uBr;case 90:return aBr;case 91:return iBr;case 92:return fBr;case 93:return cBr;case 94:return sBr;case 95:return oBr;case 96:return vBr;case 97:return lBr;case 98:return bBr;case 99:return DBr;case 100:return kBr;case 101:return pBr;case 102:return dBr;case 103:return wBr;case 104:return hBr;case 105:return mBr;case 106:return FBr;case 107:return yBr;case 108:return EBr;case 109:return _Br;case 110:return gBr;case 111:return CBr;case 112:return SBr;case 113:return xBr;case 114:return TBr;case 115:return ABr;case 116:return BBr;default:return IBr}switch(t){case 0:return ETr;case 1:return _Tr;case 2:return gTr;case 3:return CTr;case 4:return STr;case 5:return xTr;case 6:return TTr;case 7:return ATr;case 8:return BTr;case 9:return ITr;case 10:return OTr;case 11:return PTr;case 12:return NTr;case 13:return LTr;case 14:return RTr;case 15:return MTr;case 16:return jTr;case 17:return UTr;case 18:return XTr;case 19:return JTr;case 20:return GTr;case 21:return qTr;case 22:return zTr;case 23:return VTr;case 24:return WTr;case 25:return YTr;case 26:return HTr;case 27:return $Tr;case 28:return KTr;case 29:return QTr;case 30:return ZTr;case 31:return rAr;case 32:return tAr;case 33:return eAr;case 34:return nAr;case 35:return uAr;case 36:return aAr;case 37:return iAr;case 38:return fAr;case 39:return cAr;case 40:return sAr;case 41:return oAr;case 42:return vAr;case 43:return lAr;case 44:return bAr;case 45:return DAr;case 46:return kAr;case 47:return pAr;case 48:return dAr;case 49:return wAr;case 50:return hAr;case 51:return mAr;case 52:return FAr;case 53:return yAr;case 54:return EAr;case 55:return _Ar;case 56:return gAr;case 57:return CAr;default:return SAr}}else switch(r[0]){case 0:return OBr;case 1:return PBr;case 2:return NBr;case 3:return LBr;case 4:return RBr;case 5:return MBr;case 6:return jBr;case 7:return UBr;case 8:return XBr;case 9:return JBr;case 10:return GBr;default:return qBr}},_nt=function(r){if("number"==typeof r){var t=r;if(59<=t)switch(t){case 59:return Dxr;case 60:return kxr;case 61:return pxr;case 62:return dxr;case 63:return wxr;case 64:return hxr;case 65:return mxr;case 66:return Fxr;case 67:return yxr;case 68:return Exr;case 69:return _xr;case 70:return gxr;case 71:return Cxr;case 72:return Sxr;case 73:return xxr;case 74:return Txr;case 75:return Axr;case 76:return Bxr;case 77:return Ixr;case 78:return Oxr;case 79:return Pxr;case 80:return Nxr;case 81:return Lxr;case 82:return Rxr;case 83:return Mxr;case 84:return jxr;case 85:return Uxr;case 86:return Xxr;case 87:return Jxr;case 88:return Gxr;case 89:return qxr;case 90:return zxr;case 91:return Vxr;case 92:return Wxr;case 93:return Yxr;case 94:return Hxr;case 95:return $xr;case 96:return Kxr;case 97:return Qxr;case 98:return Zxr;case 99:return rTr;case 100:return tTr;case 101:return eTr;case 102:return nTr;case 103:return uTr;case 104:return aTr;case 105:return iTr;case 106:return fTr;case 107:return cTr;case 108:return sTr;case 109:return oTr;case 110:return vTr;case 111:return lTr;case 112:return bTr;case 113:return DTr;case 114:return kTr;case 115:return pTr;case 116:return dTr;default:return wTr}switch(t){case 0:return sSr;case 1:return oSr;case 2:return vSr;case 3:return lSr;case 4:return bSr;case 5:return DSr;case 6:return kSr;case 7:return pSr;case 8:return dSr;case 9:return wSr;case 10:return hSr;case 11:return mSr;case 12:return FSr;case 13:return ySr;case 14:return ESr;case 15:return _Sr;case 16:return gSr;case 17:return CSr;case 18:return SSr;case 19:return xSr;case 20:return TSr;case 21:return ASr;case 22:return BSr;case 23:return ISr;case 24:return OSr;case 25:return PSr;case 26:return NSr;case 27:return LSr;case 28:return RSr;case 29:return MSr;case 30:return jSr;case 31:return USr;case 32:return XSr;case 33:return JSr;case 34:return GSr;case 35:return qSr;case 36:return zSr;case 37:return VSr;case 38:return WSr;case 39:return YSr;case 40:return HSr;case 41:return $Sr;case 42:return KSr;case 43:return QSr;case 44:return ZSr;case 45:return rxr;case 46:return txr;case 47:return exr;case 48:return nxr;case 49:return uxr;case 50:return axr;case 51:return ixr;case 52:return fxr;case 53:return cxr;case 54:return sxr;case 55:return oxr;case 56:return vxr;case 57:return lxr;default:return bxr}}else switch(r[0]){case 3:return r[1][2][3];case 5:var e=r[1],n=PQr(hTr,e[3]);return PQr(mTr,PQr(e[2],n));case 9:return 0===r[1]?yTr:FTr;case 0:case 1:return r[2];case 2:case 8:return r[1][3];case 6:case 7:return r[1];default:return r[3]}},gnt=function(r){return Nd(o0r(cSr),r)},Cnt=function(r,t){var e=r?r[1]:r;if("number"==typeof t)if(De===t)var n=HCr,u=0;else u=1;else switch(t[0]){case 3:n=$Cr,u=0;break;case 5:n=KCr,u=0;break;case 6:case 9:u=1;break;case 0:case 10:var a=rSr,i=ZCr;u=2;break;case 1:case 11:a=eSr,i=tSr,u=2;break;case 2:case 8:a=uSr,i=nSr,u=2;break;default:a=iSr,i=aSr,u=2}switch(u){case 0:a=n[1],i=n[2];break;case 1:a=gnt(_nt(t)),i=QCr}return e?PQr(i,PQr(fSr,a)):a},Snt=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(GGr,r+aD|0)-1|0:-1},xnt=function(r){return 45<r?46<r?-1:0:-1},Tnt=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(zGr,r+aD|0)-1|0:-1},Ant=function(r){return 8<r?pr<r?kr<r?Xt<r?-1:db<r?iv<r?0:-1:fD<r?Ib<r?gf<r?$r<r?0:-1:0:-1:Ct<r?S<r?0:-1:0:-1:Cd(ZJr,r-9|0)-1|0:-1},Bnt=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(VGr,r+aD|0)-1|0:-1},Int=function(r){return 47<r?57<r?-1:0:-1},Ont=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd($Gr,r+aD|0)-1|0:-1},Pnt=function(r){return 47<r?Au<r?-1:Cd(RGr,r+Tl|0)-1|0:-1},Nnt=function(r){return 47<r?De<r?-1:Cd(czr,r+Tl|0)-1|0:-1},Lnt=function(r){return 35<r?O<r?-1:Cd(lGr,r+aD|0)-1|0:-1},Rnt=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(QGr,r+aD|0)-1|0:-1},Mnt=function(r){return 87<r?bb<r?-1:Cd(ew,r-88|0)-1|0:-1},jnt=function(r){return 45<r?57<r?-1:Cd(kzr,r+no|0)-1|0:-1},Unt=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(ZGr,r+aD|0)-1|0:-1},Xnt=function(r){return 35<r?O<r?-1:Cd(bGr,r+aD|0)-1|0:-1},Jnt=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(rqr,r+aD|0)-1|0:-1},Gnt=function(r){return 47<r?Gn<r?-1:Cd(azr,r+Tl|0)-1|0:-1},qnt=function(r){return 35<r?O<r?-1:Cd(DGr,r+aD|0)-1|0:-1},znt=function(r){return 8<r?pr<r?kr<r?Xt<r?-1:db<r?iv<r?0:-1:fD<r?Ib<r?gf<r?$r<r?0:-1:0:-1:Ct<r?S<r?0:-1:0:-1:Cd(rGr,r-9|0)-1|0:-1},Vnt=function(r){return 45<r?ju<r?-1:Cd(iGr,r+no|0)-1|0:-1},Wnt=function(r){return 35<r?O<r?-1:Cd(kGr,r+aD|0)-1|0:-1},Ynt=function(r){return 47<r?95<r?-1:Cd(Uqr,r+Tl|0)-1|0:-1},Hnt=function(r){return 47<r?De<r?-1:Cd(mzr,r+Tl|0)-1|0:-1},$nt=function(r){return 47<r?De<r?-1:Cd(szr,r+Tl|0)-1|0:-1},Knt=function(r){return 35<r?O<r?-1:Cd(pGr,r+aD|0)-1|0:-1},Qnt=function(r){return 8<r?pr<r?kr<r?Xt<r?-1:db<r?iv<r?0:-1:fD<r?Ib<r?gf<r?$r<r?0:-1:0:-1:Ct<r?S<r?0:-1:0:-1:Cd(tGr,r-9|0)-1|0:-1},Znt=function(r){return 44<r?57<r?-1:Cd(zqr,r+-45|0)-1|0:-1},rut=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(iqr,r+aD|0)-1|0:-1},tut=function(r){return 47<r?49<r?-1:0:-1},eut=function(r){return 47<r?95<r?-1:Cd(Vqr,r+Tl|0)-1|0:-1},nut=function(r){return 47<r?57<r?-1:Cd(Xqr,r+Tl|0)-1|0:-1},uut=function(r){return 35<r?O<r?-1:Cd(dGr,r+aD|0)-1|0:-1},aut=function(r){return tf<r?115<r?-1:0:-1},iut=function(r){return 60<r?61<r?-1:0:-1},fut=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(fqr,r+aD|0)-1|0:-1},cut=function(r){return 47<r?De<r?-1:Cd(ozr,r+Tl|0)-1|0:-1},sut=function(r){return 47<r?De<r?-1:Cd(LGr,r+Tl|0)-1|0:-1},out=function(r){return 60<r?62<r?-1:Cd(tw,r+J|0)-1|0:-1},vut=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(cqr,r+aD|0)-1|0:-1},lut=function(r){return 65<r?98<r?-1:Cd(ew,r-66|0)-1|0:-1},but=function(r){return 35<r?O<r?-1:Cd(wGr,r+aD|0)-1|0:-1},Dut=function(r){return 115<r?de<r?-1:0:-1},kut=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(Fzr,r+aD|0)-1|0:-1},put=function(r){return 47<r?55<r?-1:0:-1},dut=function(r){return 109<r?De<r?-1:0:-1},wut=function(r){return De<r?111<r?-1:0:-1},hut=function(r){return 98<r?99<r?-1:0:-1},mut=function(r){return 47<r?48<r?-1:0:-1},Fut=function(r){return 8<r?pr<r?kr<r?Xt<r?-1:db<r?iv<r?0:-1:fD<r?Ib<r?gf<r?$r<r?0:-1:0:-1:Ct<r?S<r?0:-1:0:-1:Cd(eGr,r-9|0)-1|0:-1},yut=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(sqr,r+aD|0)-1|0:-1},Eut=function(r){return 45<r?ju<r?-1:Cd(Wqr,r+no|0)-1|0:-1},_ut=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(oqr,r+aD|0)-1|0:-1},gut=function(r){return 78<r?111<r?-1:Cd(ew,r-79|0)-1|0:-1},Cut=function(r){return 41<r?42<r?-1:0:-1},Sut=function(r){return 35<r?O<r?-1:Cd(hGr,r+aD|0)-1|0:-1},xut=function(r){return 47<r?ju<r?-1:Cd(izr,r+Tl|0)-1|0:-1},Tut=function(r){return 35<r?O<r?-1:Cd(mGr,r+aD|0)-1|0:-1},Aut=function(r){return 41<r?61<r?-1:Cd(Dzr,r+-42|0)-1|0:-1},But=function(r){return 44<r?48<r?-1:Cd(BGr,r+-45|0)-1|0:-1},Iut=function(r){return 44<r?45<r?-1:0:-1},Out=function(r){return Eu<r?105<r?-1:0:-1},Put=function(r){return 107<r?108<r?-1:0:-1},Nut=function(r){return 99<r?ra<r?-1:0:-1},Lut=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(lqr,r+aD|0)-1|0:-1},Rut=function(r){return 47<r?Au<r?-1:Cd(MGr,r+Tl|0)-1|0:-1},Mut=function(r){return 113<r?tf<r?-1:0:-1},jut=function(r){return 45<r?57<r?-1:Cd(pzr,r+no|0)-1|0:-1},Uut=function(r){return 35<r?O<r?-1:Cd(FGr,r+aD|0)-1|0:-1},Xut=function(r){return 47<r?123<r?-1:Cd(yzr,r+Tl|0)-1|0:-1},Jut=function(r){return 35<r?O<r?-1:Cd(yGr,r+aD|0)-1|0:-1},Gut=function(r){return 9<r?10<r?-1:0:-1},qut=function(r){return 35<r?O<r?-1:Cd(EGr,r+aD|0)-1|0:-1},zut=function(r){return 96<r?97<r?-1:0:-1},Vut=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(kqr,r+aD|0)-1|0:-1},Wut=function(r){return 35<r?O<r?-1:Cd(_Gr,r+aD|0)-1|0:-1},Yut=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(pqr,r+aD|0)-1|0:-1},Hut=function(r){return 35<r?O<r?-1:Cd(gGr,r+aD|0)-1|0:-1},$ut=function(r){return 47<r?95<r?-1:Cd(vzr,r+Tl|0)-1|0:-1},Kut=function(r){return 35<r?O<r?-1:Cd(CGr,r+aD|0)-1|0:-1},Qut=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(Fqr,r+aD|0)-1|0:-1},Zut=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(yqr,r+aD|0)-1|0:-1},rat=function(r){return ra<r?ju<r?-1:0:-1},tat=function(r){return 8<r?pr<r?kr<r?Xt<r?-1:db<r?iv<r?0:-1:fD<r?Ib<r?gf<r?$r<r?0:-1:0:-1:Ct<r?S<r?0:-1:0:-1:Cd(nGr,r-9|0)-1|0:-1},eat=function(r){return 35<r?O<r?-1:Cd(XGr,r+aD|0)-1|0:-1},nat=function(r){return 41<r?47<r?-1:Cd(nzr,r+-42|0)-1|0:-1},uat=function(r){return 35<r?O<r?-1:Cd(SGr,r+aD|0)-1|0:-1},aat=function(r){return 35<r?O<r?-1:Cd(xGr,r+aD|0)-1|0:-1},iat=function(r){return 118<r?119<r?-1:0:-1},fat=function(r){return 35<r?O<r?-1:Cd(TGr,r+aD|0)-1|0:-1},cat=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(Sqr,r+aD|0)-1|0:-1},sat=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(xqr,r+aD|0)-1|0:-1},oat=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(Aqr,r+aD|0)-1|0:-1},vat=function(r){return 47<r?ju<r?-1:Cd(fzr,r+Tl|0)-1|0:-1},lat=function(r){return 42<r?57<r?-1:Cd($qr,r+Yr|0)-1|0:-1},bat=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(Oqr,r+aD|0)-1|0:-1},Dat=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(Pqr,r+aD|0)-1|0:-1},kat=function(r){return 45<r?95<r?-1:Cd(vGr,r+no|0)-1|0:-1},pat=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(Lqr,r+aD|0)-1|0:-1},dat=function(r){return de<r?117<r?-1:0:-1},wat=function(r){return 35<r?Al<r?ie<r?Qf<r?-1:Cl<r?Zt<r?Ea<r?pi<r?ds<r?pv<r?Or<r?He<r?0:-1:0:-1:ro<r?vc<r?0:-1:0:-1:Ob<r?sk<r?wv<r?Bl<r?0:-1:0:-1:me<r?ta<r?0:-1:0:-1:Os<r?gs<r?Gs<r?nv<r?Il<r?Se<r?Un<r?We<r?rf<r?ek<r?_s<r?MD<r?$i<r?Uo<r?sn<r?yD<r?0:-1:0:-1:Wc<r?Hu<r?0:-1:0:-1:Ic<r?it<r?Jo<r?ec<r?0:-1:0:-1:ol<r?zv<r?0:-1:0:-1:x<r?_v<r?Sv<r?Q<r?yf<r?ln<r?0:-1:0:-1:Vt<r?rb<r?0:-1:0:-1:Po<r?Gu<r?Jc<r?qt<r?0:-1:0:-1:Ei<r?Hs<r?0:-1:0:-1:Dl<r?jc<r?fi<r?tt<r?Wo<r?uc<r?Rr<r?Nu<r?0:-1:0:-1:yl<r?gv<r?0:-1:0:-1:os<r?Zc<r?an<r?gD<r?0:-1:0:-1:ru<r?zc<r?0:-1:0:-1:Jt<r?bi<r?Zo<r?Ur<r?zf<r?Ks<r?0:-1:0:-1:au<r?mr<r?0:-1:0:-1:xD<r?Wf<r?xo<r?Ao<r?0:-1:0:-1:QD<r?AD<r?0:-1:0:-1:wf<r?xk<r?Ql<r?$a<r?Wa<r?qa<r?zt<r?br<r?wb<r?qc<r?0:-1:0:-1:Pt<r?Ps<r?0:-1:0:-1:Wt<r?ha<r?vf<r?Er<r?0:-1:0:-1:Zr<r?xc<r?0:-1:0:-1:ua<r?jn<r?Uc<r?Kr<r?ke<r?zn<r?0:-1:0:-1:rs<r?Ho<r?0:-1:0:-1:dk<r?pf<r?uo<r?qu<r?0:-1:0:-1:$<r?wu<r?0:-1:0:-1:If<r?DD<r?Ub<r?Kn<r?ir<r?Pi<r?cn<r?Co<r?0:-1:0:-1:Ac<r?Qn<r?0:-1:0:-1:tn<r?Ls<r?Cr<r?hv<r?0:-1:0:-1:Wi<r?Gb<r?0:-1:0:-1:ct<r?oo<r?tc<r?e<r?Ee<r?Y<r?0:-1:0:-1:Ze<r?sa<r?0:-1:0:-1:sf<r?Ha<r?Uf<r?vt<r?0:-1:0:-1:La<r?Fv<r?0:-1:0:-1:ao<r?o<r?vu<r?Zn<r?xi<r?fe<r?Bi<r?Zs<r?HD<r?zo<r?pe<r?Tk<r?0:-1:0:-1:gi<r?ts<r?0:-1:0:-1:ps<r?hf<r?As<r?pa<r?0:-1:0:-1:as<r?Cb<r?0:-1:0:-1:jf<r?gt<r?Mu<r?ok<r?Xo<r?Ji<r?0:-1:0:-1:D<r?Yv<r?0:-1:0:-1:Lf<r?$s<r?Vl<r?Fb<r?0:-1:0:-1:Ab<r?ED<r?0:-1:0:-1:Oe<r?g<r?wk<r?Dv<r?Mo<r?_<r?Ti<r?Ve<r?0:-1:0:-1:Hl<r?An<r?0:-1:0:-1:ai<r?Hb<r?Yf<r?er<r?0:-1:0:-1:fc<r?Xl<r?0:-1:0:-1:Bv<r?_e<r?le<r?hD<r?Pf<r?Ge<r?0:-1:0:-1:Dt<r?Io<r?0:-1:0:-1:cs<r?KD<r?eu<r?hi<r?0:-1:0:-1:Js<r?Tr<r?0:-1:0:-1:Hc<r?Ma<r?mu<r?Jf<r?Af<r?Ki<r?dc<r?qi<r?hu<r?Aa<r?0:-1:0:-1:$u<r?Ak<r?0:-1:0:-1:cc<r?mf<r?Rs<r?wr<r?0:-1:0:-1:yv<r?eo<r?0:-1:0:-1:jr<r?ND<r?ck<r?Ui<r?Ar<r?Vs<r?0:-1:0:-1:Bn<r?F<r?0:-1:0:-1:Qe<r?_c<r?cr<r?Vv<r?0:-1:0:-1:ub<r?Ai<r?0:-1:0:-1:Ra<r?nn<r?bu<r?ja<r?be<r?Es<r?Fl<r?Ri<r?0:-1:0:-1:nr<r?zD<r?0:-1:0:-1:Vc<r?rD<r?Br<r?gu<r?0:-1:0:-1:qn<r?iD<r?0:-1:0:-1:Fo<r?oi<r?lt<r?av<r?xu<r?$D<r?0:-1:0:-1:It<r?zs<r?0:-1:0:-1:Ju<r?Qb<r?Do<r?VD<r?0:-1:0:-1:Ot<r?Yb<r?0:-1:0:-1:fa<r?Ne<r?Sl<r?Xi<r?rc<r?Mk<r?jb<r?ri<r?$f<r?Nv<r?Nb<r?Hi<r?$b<r?Kt<r?0:-1:0:-1:Ir<r?C<r?0:-1:0:-1:we<r?Ht<r?Lt<r?Sf<r?0:-1:0:-1:bk<r?_l<r?0:-1:0:-1:Uv<r?gc<r?gr<r?cv<r?hc<r?u<r?0:-1:0:-1:et<r?uv<r?0:-1:0:-1:ht<r?Bk<r?Ds<r?zb<r?0:-1:0:-1:Ua<r?ml<r?0:-1:0:-1:Lk<r?_D<r?Su<r?ma<r?ob<r?wc<r?Kl<r?tb<r?0:-1:0:-1:ii<r?dl<r?0:-1:0:-1:wn<r?Za<r?Ko<r?iu<r?0:-1:0:-1:tv<r?l<r?0:-1:0:-1:oc<r?mt<r?jt<r?Sc<r?Sn<r?Bs<r?0:-1:0:-1:zr<r?Ja<r?0:-1:0:-1:nu<r?hs<r?eD<r?Ro<r?0:-1:0:-1:rk<r?pt<r?0:-1:0:-1:Gv<r?Xf<r?ca<r?lf<r?Pa<r?Is<r?c<r?Bb<r?nb<r?T<r?0:-1:0:-1:Da<r?ui<r?0:-1:0:-1:vD<r?co<r?Ku<r?Wu<r?0:-1:0:-1:Rl<r?Gf<r?0:-1:0:-1:du<r?Ni<r?mi<r?Kf<r?hl<r?se<r?0:-1:0:-1:vv<r?Yu<r?0:-1:0:-1:$n<r?bn<r?da<r?Ek<r?0:-1:0:-1:d<r?oa<r?0:-1:0:-1:Mf<r?ul<r?TD<r?ni<r?mv<r?Fr<r?lk<r?Gc<r?0:-1:0:-1:dD<r?H<r?0:-1:0:-1:Rk<r?ji<r?yn<r?Sr<r?0:-1:0:-1:Qr<r?Xe<r?0:-1:0:-1:Kv<r?rv<r?Ln<r?gl<r?OD<r?P<r?0:-1:0:-1:Lc<r?i<r?0:-1:0:-1:WD<r?Wv<r?pb<r?ys<r?0:-1:0:-1:v<r?aa<r?0:-1:0:-1:ea<r?hb<r?a<r?Qu<r?wt<r?Ae<r?Nr<r?xr<r?Nc<r?kD<r?ve<r?ms<r?0:-1:0:-1:nc<r?Ca<r?0:-1:0:-1:Du<r?eb<r?To<r?tD<r?0:-1:0:-1:of<r?lu<r?0:-1:0:-1:w<r?fr<r?Kc<r?ZD<r?rl<r?Qv<r?0:-1:0:-1:Vb<r?Oo<r?0:-1:0:-1:Jr<r?Go<r?Pb<r?fu<r?0:-1:0:-1:ti<r?Mt<r?0:-1:0:-1:Fe<r?Mi<r?_i<r?Je<r?sr<r?Ol<r?Xv<r?dn<r?0:-1:0:-1:Bf<r?vr<r?0:-1:0:-1:ge<r?Ml<r?Jn<r?On<r?0:-1:0:-1:Cc<r?Sb<r?0:-1:0:-1:k<r?PD<r?$e<r?$l<r?oD<r?io<r?0:-1:0:-1:nf<r?El<r?0:-1:0:-1:qe<r?BD<r?qs<r?vs<r?0:-1:0:-1:lD<r?cu<r?0:-1:0:-1:nk<r?hk<r?zl<r?il<r?mb<r?Yl<r?Db<r?dr<r?Lr<r?fb<r?0:-1:0:-1:pu<r?gb<r?0:-1:0:-1:yr<r?Wr<r?Te<r?Bu<r?0:-1:0:-1:GD<r?So<r?0:-1:0:-1:Ik<r?Xc<r?Ga<r?Ul<r?Ba<r?Dk<r?0:-1:0:-1:Ms<r?Ck<r?0:-1:0:-1:Pv<r?Jl<r?lr<r?Iv<r?0:-1:0:-1:wl<r?bl<r?0:-1:0:-1:ot<r?Vo<r?ue<r?ye<r?al<r?n<r?mc<r?wi<r?0:-1:0:-1:fs<r?Et<r?0:-1:0:-1:ar<r?on<r?Zu<r?_u<r?0:-1:0:-1:$v<r?ws<r?0:-1:0:-1:nD<r?ae<r?mo<r?Yn<r?Df<r?Ye<r?0:-1:0:-1:Rn<r?Wb<r?0:-1:0:-1:pl<r?vi<r?JD<r?Qs<r?0:-1:0:-1:Fc<r?Ft<r?0:-1:0:-1:Cd(Rqr,r+aD|0)-1|0:-1},hat=function(r){return 46<r?47<r?-1:0:-1},mat=function(r){return 57<r?58<r?-1:0:-1},Fat=function(r){return 35<r?O<r?-1:Cd(AGr,r+aD|0)-1|0:-1},yat=function(r,t){var e=t-r[3][2]|0;return[0,Fnt(r),e]},Eat=function(r,t,e){var n=yat(r,e),u=yat(r,t);return[0,r[1],u,n]},_at=function(r,t){return yat(r,r2r(t))},gat=function(r,t){return yat(r,t2r(t))},Cat=function(r,t){var e=r2r(t);return Eat(r,e,t2r(t))},Sat=function(r){var t=r[2],e=r[1],n=e[6],u=n!==rw?[0,e[1],e[2],e[3],e[4],e[5],rw]:e;if("number"==typeof t)var a=0;else switch(t[0]){case 2:case 3:case 5:case 8:var i=t[1][1];a=1;break;default:a=0}if(!a)i=Cat(u,u[2]);var f=r[3];return[0,u,[0,t,i,$Qr(n[1]),f]]},xat=function(r,t,e){return[0,r[1],r[2],r[3],r[4],r[5],[0,[0,[0,t,e],r[6][1]]]]},Tat=function(r,t,e){return xat(r,t,[9,gnt(e)])},Aat=function(r,t){return xat(r,t,KJr)},Bat=function(r,t){var e=t2r(t),n=[0,Fnt(r)+1|0,e];return[0,r[1],r[2],n,r[4],r[5],r[6]]},Iat=function(r){var t=jp(r);return 0!==t&&De===Cd(r,t-1|0)?lZr(r,0,t-1|0):r},Oat=function(r,t,e,n,u){var a=[0,r[1],t,e],i=CZr(n);return[0,a,u?[0,i]:[1,i]]},Pat=function(r,t){if(45===Cd(t,0))var e=1,n=lZr(t,1,jp(t)-1|0);else e=0,n=t;switch(r){case 1:try{var u=Yp(Wp(PQr(WJr,n)))}catch(t){if((t=Pd(t))[1]!==Jd)throw t;u=TQr(PQr(YJr,n))}break;case 0:case 3:try{u=Yp(Wp(n))}catch(t){if((t=Pd(t))[1]!==Jd)throw t;u=TQr(PQr(HJr,n))}break;default:try{u=wp(n)}catch(t){if((t=Pd(t))[1]!==Jd)throw t;u=TQr(PQr($Jr,n))}}return[10,r,e?-u:u,t]},Nat=function(r,t){if(45===Cd(t,0))var e=1,n=lZr(t,1,jp(t)-1|0);else e=0,n=t;if(2<=r){var u=Iat(n);try{var a=wp(u)}catch(t){if((t=Pd(t))[1]!==Jd)throw t;a=TQr(PQr(zJr,u))}var i=a}else{var f=Iat(n);try{var c=Yp(Wp(f))}catch(t){if((t=Pd(t))[1]!==Jd)throw t;c=TQr(PQr(VJr,f))}i=c}return[11,r,e?-i:i,t]},Lat=function(r,t,f){var s=Y1r([0,f]);$1r(s);var p=H1r(s),m=Al<p?xD<p?Ob<p?ds<p?Qf<p?0:Or<p?He<p?2:0:pv<p?1:0:Ea<p?ro<p?vc<p?1:0:pi<p?1:0:wv<p?Bl<p?1:0:sk<p?1:0:Po<p?Ic<p?$i<p?Cl<p?me<p?ta<p?1:0:Zt<p?1:0:sn<p?yD<p?1:0:Uo<p?1:0:_s<p?Wc<p?Hu<p?1:0:MD<p?1:0:Jo<p?ec<p?1:0:it<p?1:0:Sv<p?rf<p?ol<p?zv<p?1:0:ek<p?1:0:yf<p?ln<p?1:0:Q<p?1:0:x<p?Vt<p?rb<p?1:0:_v<p?1:0:Jc<p?qt<p?1:0:Gu<p?1:0:os<p?Wo<p?Un<p?Ei<p?Hs<p?1:0:We<p?1:0:Rr<p?Nu<p?1:0:uc<p?1:0:fi<p?yl<p?gv<p?1:0:tt<p?1:0:an<p?gD<p?1:0:Zc<p?1:0:Zo<p?Dl<p?ru<p?zc<p?1:0:jc<p?1:0:zf<p?Ks<p?1:0:Ur<p?1:0:Jt<p?au<p?mr<p?1:0:bi<p?1:0:xo<p?Ao<p?1:0:Wf<p?1:0:tv<p?Oe<p?sf<p?dk<p?Wt<p?zt<p?Il<p?QD<p?AD<p?2:0:Se<p?1:0:wb<p?qc<p?1:0:br<p?1:0:Wa<p?Pt<p?Ps<p?1:0:qa<p?1:0:vf<p?Er<p?1:0:ha<p?1:0:Uc<p?Ql<p?Zr<p?xc<p?1:0:$a<p?1:0:ke<p?zn<p?1:0:Kr<p?1:0:ua<p?rs<p?Ho<p?1:0:jn<p?1:0:uo<p?qu<p?1:0:pf<p?1:0:tn<p?ir<p?wf<p?$<p?wu<p?1:0:xk<p?1:0:cn<p?Co<p?1:0:Pi<p?1:0:Ub<p?Ac<p?Qn<p?1:0:Kn<p?1:0:Cr<p?hv<p?1:0:Ls<p?1:0:tc<p?If<p?Wi<p?Gb<p?1:0:DD<p?1:0:Ee<p?Y<p?1:0:e<p?1:0:ct<p?Ze<p?sa<p?1:0:oo<p?1:0:Uf<p?vt<p?1:0:Ha<p?2:0:Fb<p?dt<p?HD<p?Gs<p?La<p?Fv<p?2:0:nv<p?2:0:pe<p?Tk<p?2:0:zo<p?2:0:Bi<p?gi<p?ts<p?2:0:Zs<p?1:0:pa<p?Mn<p?1:2:As<p?0:2:Xo<p?as<p?ps<p?hf<p?1:0:Cb<p?1:0:xi<p?fe<p?1:0:Ji<p?1:0:D<p?Mu<p?ok<p?1:0:Yv<p?1:0:jf<p?gt<p?2:0:Vf<p?2:1:Mo<p?Ab<p?kl<p?$s<p?Vl<p?0:2:Lf<p?0:1:_b<p?ov<p?2:1:ED<p?2:0:la<p?vu<p?Zn<p?2:0:Di<p?2:1:Ti<p?Ve<p?2:0:_<p?2:0:Yf<p?js<p?Hl<p?An<p?1:0:b<p?2:1:wk<p?Dv<p?2:0:er<p?2:0:ai<p?Bt<p?bD<p?2:1:Hb<p?2:0:fc<p?Xl<p?1:0:g<p?1:0:qn<p?yv<p?o<p?Bv<p?le<p?Pf<p?Ge<p?1:0:hD<p?1:0:Dt<p?Io<p?1:0:_e<p?2:0:cs<p?eu<p?hi<p?2:0:KD<p?1:0:Js<p?Tr<p?1:0:ID<p?1:2:$u<p?A<p?Aa<p?ao<p?0:2:hu<p?0:2:dc<p?qi<p?1:0:Ak<p?1:0:Rs<p?Af<p?Ki<p?1:0:wr<p?1:0:cc<p?mf<p?1:0:eo<p?1:0:ub<p?Bn<p?Ar<p?mu<p?Jf<p?1:0:Vs<p?1:0:ck<p?Ui<p?1:0:F<p?1:0:cr<p?jr<p?ND<p?1:0:Vv<p?2:0:Qe<p?_c<p?1:0:Ai<p?1:0:nr<p?Fl<p?Hc<p?Ma<p?1:0:Ri<p?1:0:be<p?Es<p?1:0:zD<p?1:0:Br<p?bu<p?ja<p?1:0:gu<p?1:0:Vc<p?rD<p?1:0:iD<p?2:0:bk<p?Ot<p?It<p?xu<p?Ra<p?nn<p?1:0:$D<p?1:0:lt<p?av<p?1:0:zs<p?1:0:Do<p?Fo<p?oi<p?1:0:VD<p?1:0:Ju<p?Qb<p?1:0:Yb<p?1:0:Ir<p?$b<p?Os<p?gs<p?1:0:Kt<p?1:0:Nb<p?Hi<p?1:0:C<p?1:0:Lt<p?$f<p?Nv<p?1:0:Sf<p?1:0:we<p?Ht<p?2:0:_l<p?1:0:Ua<p?et<p?hc<p?jb<p?ri<p?2:0:u<p?1:0:gr<p?cv<p?1:0:uv<p?2:0:Ds<p?Uv<p?gc<p?2:0:zb<p?2:0:ht<p?Bk<p?2:0:ml<p?1:0:ii<p?Kl<p?rc<p?Mk<p?1:0:tb<p?1:0:ob<p?wc<p?1:0:dl<p?1:0:Ko<p?Su<p?ma<p?1:0:iu<p?1:0:wn<p?Za<p?1:0:l<p?1:0:Nr<p?d<p?co<p?nu<p?jt<p?Fk<p?Lk<p?_D<p?1:0:ac<p?1:2:Sn<p?Bs<p?1:0:Sc<p?1:0:oc<p?zr<p?Ja<p?1:0:mt<p?1:0:eD<p?Ro<p?1:0:hs<p?1:0:c<p?Sl<p?rk<p?pt<p?1:0:Xi<p?1:0:nb<p?T<p?2:0:Bb<p?2:0:Is<p?ui<p?ne<p?2:1:Da<p?0:1:Wu<p?Pa<p?0:1:Ku<p?0:1:li<p?hl<p?lf<p?Gf<p?vD<p?0:1:Rl<p?0:1:h<p?ca<p?0:2:se<p?1:0:Yu<p?Kf<p?ze<p?2:1:mi<p?0:1:Bc<p?vv<p?0:1:Ws<p?2:1:Ni<p?Va<p?ab<p?fl<p?2:1:uk<p?2:1:wa<p?qr<p?2:1:Rc<p?2:1:da<p?Nk<p?du<p?0:2:Ek<p?1:0:$n<p?bn<p?1:0:oa<p?2:0:re<p?ni<p?lk<p?Xf<p?L<p?Ue<p?2:1:R<p?2:1:ho<p?Gv<p?0:2:Gc<p?1:0:Yi<p?Fr<p?Lo<p?2:1:mv<p?0:2:H<p?Ut<p?1:2:dD<p?0:1:Rk<p?yn<p?vk<p?TD<p?0:2:Sr<p?1:0:dv<p?rt<p?2:1:ji<p?2:0:ul<p?Qr<p?Xe<p?1:0:ib<p?1:2:P<p?Mf<p?0:2:OD<p?0:2:pb<p?Qc<p?i<p?gl<p?Iu<p?1:2:Ln<p?0:1:ya<p?Lc<p?0:2:pk<p?1:2:LD<p?Ts<p?Wl<p?1:2:Pe<p?1:2:Kv<p?rv<p?1:0:ys<p?1:0:ve<p?v<p?WD<p?Wv<p?1:0:aa<p?1:0:fa<p?Ne<p?1:0:ms<p?1:0:Nc<p?Tu<p?Cv<p?2:1:kD<p?2:0:nc<p?Ca<p?1:0:xr<p?2:0:Lr<p?sr<p?Oo<p?lu<p?Ec<p?tD<p?Qo<p?2:1:To<p?0:1:eb<p?tr<p?2:1:Du<p?0:1:Qv<p?Ae<p?of<p?0:1:wt<p?0:1:ZD<p?rl<p?0:1:Kc<p?0:1:Mt<p?fu<p?fr<p?Vb<p?0:1:w<p?0:1:Go<p?Pb<p?0:1:Jr<p?0:1:dn<p?Qu<p?ti<p?0:1:a<p?0:1:go<p?Xv<p?0:1:Ol<p?2:0:$l<p?Ml<p?_i<p?Bf<p?vr<p?1:0:Je<p?1:0:Jn<p?On<p?1:0:Hn<p?2:1:Mi<p?Sb<p?ge<p?0:1:Cc<p?0:2:io<p?Fe<p?0:1:oD<p?0:1:BD<p?PD<p?El<p?$e<p?0:1:nf<p?0:1:vs<p?k<p?0:1:qs<p?0:1:hb<p?cu<p?qe<p?0:1:lD<p?0:1:jo<p?ea<p?0:1:fb<p?2:0:nk<p?zl<p?Te<p?pu<p?Db<p?dr<p?1:0:gb<p?1:0:mb<p?Yl<p?1:0:Bu<p?1:0:Pu<p?yr<p?Wr<p?1:0:bf<p?1:2:GD<p?So<p?1:0:il<p?1:0:Ik<p?Ga<p?Ba<p?Dk<p?1:0:Ul<p?1:0:Ms<p?Ck<p?1:0:Xc<p?1:0:Pv<p?lr<p?Iv<p?1:0:Jl<p?1:0:wl<p?bl<p?1:0:hk<p?1:0:ot<p?ue<p?al<p?mc<p?wi<p?1:0:n<p?1:0:fs<p?Et<p?1:0:ye<p?1:0:ar<p?Zu<p?_u<p?1:0:on<p?1:0:$v<p?ws<p?1:0:Vo<p?2:0:nD<p?mo<p?Df<p?Ye<p?2:0:Yn<p?2:0:Rn<p?Wb<p?1:0:ae<p?1:0:pl<p?JD<p?Qs<p?1:0:vi<p?2:0:Fc<p?Ft<p?2:0:ie<p?2:0:Cd(Yqr,p+1|0)-1|0;if(3<m>>>0)var y=Q1r(s);else switch(m){case 0:y=2;break;case 1:y=0;break;case 2:y=1;break;default:if(K1r(s,2),0===dat(H1r(s))){var E=Xut(H1r(s));if(0===E)y=0===Pnt(H1r(s))&&0===Pnt(H1r(s))&&0===Pnt(H1r(s))?0:Q1r(s);else if(1===E)if(0===Pnt(H1r(s)))for(;;){var S=Gnt(H1r(s));if(0!==S){y=1===S?0:Q1r(s);break}}else y=Q1r(s);else y=Q1r(s)}else y=Q1r(s)}if(2<=y){if(!(3<=y))return xat(r,t,34)}else if(0<=y)return r;return TQr(qJr)},Rat=function(r,t,e,n,u){var a=t+r2r(e)|0;return[0,Eat(r,a,t+t2r(e)|0),D2r(e,n,(e2r(e)-n|0)-u|0)]},Mat=function(r,t){for(var e=r2r(r[2]),n=b2r(t),u=gZr(jp(t)),a=r;;){$1r(n);var i=H1r(n),f=92<i?1:Cd(OGr,i+1|0)-1|0;if(2<f>>>0)var c=Q1r(n);else switch(f){case 0:c=2;break;case 1:for(;;){K1r(n,3);var s=H1r(n);if(0!==(-1<s?91<s?92<s?0:-1:0:-1)){c=Q1r(n);break}}break;default:if(K1r(n,3),0===dat(H1r(n))){var o=Xut(H1r(n));if(0===o)c=0===Pnt(H1r(n))&&0===Pnt(H1r(n))&&0===Pnt(H1r(n))?0:Q1r(n);else if(1===o)if(0===Pnt(H1r(n)))for(;;){var v=Gnt(H1r(n));if(0!==v){c=1===v?1:Q1r(n);break}}else c=Q1r(n);else c=Q1r(n)}else c=Q1r(n)}if(3<c>>>0)return TQr(XJr);switch(c){case 0:var l=Rat(a,e,n,2,0),b=Hp(PQr(JJr,l[2])),D=Lat(a,l[1],b);p2r(u,b);a=D;continue;case 1:var k=Rat(a,e,n,3,1),p=Hp(PQr(GJr,k[2])),d=Lat(a,k[1],p);p2r(u,p);a=d;continue;case 2:return[0,a,CZr(u)];default:TZr(u,k2r(n));continue}}},jat=function(r,t,e){var n=Aat(r,Cat(r,t));return Z1r(t),Ld(e,n,t)},Uat=function(r,t,e){for(var n=r;;){$1r(e);var u=H1r(e),a=-1<u?42<u?Of<u?0:zi<u?1:0:Cd(Gqr,u)-1|0:-1;if(3<a>>>0)var i=Q1r(e);else switch(a){case 0:for(;;){K1r(e,3);var f=H1r(e);if(0!==(-1<f?41<f?42<f?zi<f?Of<f?0:-1:0:-1:Cd(UGr,f)-1|0:-1)){i=Q1r(e);break}}break;case 1:i=0;break;case 2:K1r(e,0);i=0===Gut(H1r(e))?0:Q1r(e);break;default:K1r(e,3);var c=H1r(e),s=44<c?47<c?-1:Cd(Iqr,c+-45|0)-1|0:-1;i=0===s?0===hat(H1r(e))?2:Q1r(e):1===s?1:Q1r(e)}if(3<i>>>0){var o=Aat(n,Cat(n,e));return[0,o,gat(o,e)]}switch(i){case 0:var v=Bat(n,e);TZr(t,k2r(e));n=v;continue;case 1:var l=n[4]?xat(n,Cat(n,e),[11,VBr,zBr]):n;return[0,l,gat(l,e)];case 2:if(n[4])return[0,n,gat(n,e)];TZr(t,WBr);continue;default:TZr(t,k2r(e));continue}}},Xat=function(r,t,e){for(;;){$1r(e);var n=H1r(e),u=13<n?Of<n?1:zi<n?2:1:Cd(ezr,n+1|0)-1|0;if(3<u>>>0)var a=Q1r(e);else switch(u){case 0:a=0;break;case 1:for(;;){K1r(e,2);var i=H1r(e);if(0!==(-1<i?12<i?13<i?zi<i?Of<i?0:-1:0:-1:Cd(QJr,i)-1|0:-1)){a=Q1r(e);break}}break;case 2:a=1;break;default:K1r(e,1);a=0===Gut(H1r(e))?1:Q1r(e)}if(2<a>>>0)return TQr(YBr);switch(a){case 0:return[0,r,gat(r,e)];case 1:var f=gat(r,e),c=Bat(r,e),s=e2r(e);return[0,c,[0,f[1],f[2]-s|0]];default:TZr(t,k2r(e));continue}}},Jat=function(r,t){function e(r){return K1r(r,3),0===put(H1r(r))?2:Q1r(r)}$1r(t);var n=H1r(t),u=bb<n?Of<n?1:zi<n?2:1:Cd(Hqr,n+1|0)-1|0;if(14<u>>>0)var a=Q1r(t);else switch(u){case 1:a=16;break;case 2:a=15;break;case 3:K1r(t,15);a=0===Gut(H1r(t))?15:Q1r(t);break;case 4:K1r(t,4);a=0===put(H1r(t))?e(t):Q1r(t);break;case 5:K1r(t,11);a=0===put(H1r(t))?e(t):Q1r(t);break;case 7:a=5;break;case 8:a=6;break;case 9:a=7;break;case 10:a=8;break;case 11:a=9;break;case 12:K1r(t,14);var i=Xut(H1r(t));if(0===i)a=0===Pnt(H1r(t))&&0===Pnt(H1r(t))&&0===Pnt(H1r(t))?12:Q1r(t);else if(1===i)if(0===Pnt(H1r(t)))for(;;){var f=Gnt(H1r(t));if(0!==f){a=1===f?13:Q1r(t);break}}else a=Q1r(t);else a=Q1r(t);break;case 13:a=10;break;case 14:K1r(t,14);a=0===Pnt(H1r(t))&&0===Pnt(H1r(t))?1:Q1r(t);break;default:a=0}if(16<a>>>0)return TQr(SJr);switch(a){case 1:var c=k2r(t);return[0,r,c,[0,Hp(PQr(xJr,c))],0];case 2:var s=k2r(t),o=Hp(PQr(TJr,s));return gn<=o?[0,r,s,[0,o>>>3|0,48+(7&o)|0],1]:[0,r,s,[0,o],1];case 3:var v=k2r(t);return[0,r,v,[0,Hp(PQr(AJr,v))],1];case 4:return[0,r,BJr,[0,0],0];case 5:return[0,r,IJr,[0,8],0];case 6:return[0,r,OJr,[0,12],0];case 7:return[0,r,PJr,[0,10],0];case 8:return[0,r,NJr,[0,13],0];case 9:return[0,r,LJr,[0,9],0];case 10:return[0,r,RJr,[0,11],0];case 11:var l=k2r(t);return[0,r,l,[0,Hp(PQr(MJr,l))],1];case 12:var b=k2r(t);return[0,r,b,[0,Hp(PQr(jJr,lZr(b,1,jp(b)-1|0)))],0];case 13:var D=k2r(t),k=Hp(PQr(UJr,lZr(D,2,jp(D)-3|0)));return[0,1114111<k?Aat(r,Cat(r,t)):r,D,[0,k],0];case 14:var p=k2r(t),d=n2r(t);return[0,Aat(r,Cat(r,t)),p,d,0];case 15:var w=k2r(t);return[0,Bat(r,t),w,[0],0];default:return[0,r,k2r(t),n2r(t),0]}},Gat=function(r,t,e,n,u,a){for(var i=r,f=u;;){$1r(a);var c=H1r(a),s=92<c?1:Cd(IGr,c+1|0)-1|0;if(4<s>>>0)var o=Q1r(a);else switch(s){case 0:o=3;break;case 1:for(;;){K1r(a,4);var v=H1r(a);if(0!==(-1<v?91<v?92<v?0:-1:Cd(aGr,v)-1|0:-1)){o=Q1r(a);break}}break;case 2:o=2;break;case 3:o=0;break;default:o=1}if(4<o>>>0)return TQr(HBr);switch(o){case 0:var l=k2r(a);if(TZr(n,l),gd(t,l))return[0,i,gat(i,a),f];TZr(e,l);continue;case 1:TZr(n,$Br);var b=Jat(i,a),D=b[4]||f;TZr(n,b[2]),dZr((function(r){return p2r(e,r)}),b[3]);i=b[1],f=D;continue;case 2:var k=k2r(a);TZr(n,k);var p=Bat(Aat(i,Cat(i,a)),a);return TZr(e,k),[0,p,gat(p,a),f];case 3:var d=k2r(a);TZr(n,d);var w=Aat(i,Cat(i,a));return TZr(e,d),[0,w,gat(w,a),f];default:var h=k2r(a);TZr(n,h),TZr(e,h);continue}}},qat=function(r,t,e,n,u){for(var a=r;;){$1r(u);var i=H1r(u),f=96<i?1:Cd(bzr,i+1|0)-1|0;if(6<f>>>0)var c=Q1r(u);else switch(f){case 0:c=0;break;case 1:for(;;){K1r(u,6);var s=H1r(u);if(0!==(-1<s?95<s?96<s?0:-1:Cd(uGr,s)-1|0:-1)){c=Q1r(u);break}}break;case 2:c=5;break;case 3:K1r(u,5);c=0===Gut(H1r(u))?4:Q1r(u);break;case 4:K1r(u,6);var o=H1r(u);c=0===(O<o?123<o?-1:0:-1)?2:Q1r(u);break;case 5:c=3;break;default:c=1}if(6<c>>>0)return TQr(KBr);switch(c){case 0:return[0,Aat(a,Cat(a,u)),1];case 1:return xZr(n,96),[0,a,1];case 2:return TZr(n,QBr),[0,a,0];case 3:xZr(e,92),xZr(n,92);var v=Jat(a,u),l=v[2];TZr(e,l),TZr(n,l),dZr((function(r){return p2r(t,r)}),v[3]);a=v[1];continue;case 4:TZr(e,ZBr),TZr(n,rIr),TZr(t,tIr);a=Bat(a,u);continue;case 5:var b=k2r(u);TZr(e,b),TZr(n,b),xZr(t,10);a=Bat(a,u);continue;default:var D=k2r(u);TZr(e,D),TZr(n,D),TZr(t,D);continue}}},zat=function(r,t,e,n,u){for(var a=r;;){$1r(u);var i=H1r(u),f=123<i?Of<i?1:zi<i?2:1:Cd(wzr,i+1|0)-1|0;if(5<f>>>0)var c=Q1r(u);else switch(f){case 0:c=1;break;case 1:for(;;){K1r(u,6);var s=H1r(u);if(0!==(-1<s?O<s?123<s?zi<s?Of<s?0:-1:0:-1:Cd(oGr,s)-1|0:-1)){c=Q1r(u);break}}break;case 2:c=2;break;case 3:K1r(u,2);c=0===Gut(H1r(u))?2:Q1r(u);break;case 4:c=0;break;default:K1r(u,6);var o=H1r(u),v=34<o?O<o?-1:Cd(NGr,o-35|0)-1|0:-1;if(0===v){var l=H1r(u),b=47<l?bb<l?-1:Cd(JGr,l+Tl|0)-1|0:-1;if(0===b)for(;;){var D=H1r(u),k=47<D?59<D?-1:Cd(sGr,D+Tl|0)-1|0:-1;if(0!==k){c=1===k?4:Q1r(u);break}}else if(1===b)if(0===Pnt(H1r(u)))for(;;){var p=H1r(u),d=47<p?Au<p?-1:Cd(jGr,p+Tl|0)-1|0:-1;if(0!==d){c=1===d?3:Q1r(u);break}}else c=Q1r(u);else c=Q1r(u)}else if(1===v)if(0===Fat(H1r(u))){var w=Lnt(H1r(u));if(0===w){var h=Lnt(H1r(u));if(0===h){var m=Lnt(H1r(u));if(0===m){var F=Lnt(H1r(u));if(0===F){var y=Lnt(H1r(u));if(0===y){var E=Lnt(H1r(u));if(0===E){var _=H1r(u);c=0===(58<_?59<_?-1:0:-1)?5:Q1r(u)}else c=1===E?5:Q1r(u)}else c=1===y?5:Q1r(u)}else c=1===F?5:Q1r(u)}else c=1===m?5:Q1r(u)}else c=1===h?5:Q1r(u)}else c=1===w?5:Q1r(u)}else c=Q1r(u);else c=Q1r(u)}if(6<c>>>0)return TQr(sIr);switch(c){case 0:var g=k2r(u);switch(t){case 0:var C=Sd(g,oIr)?0:1;break;case 1:C=Sd(g,vIr)?0:1;break;default:if(Sd(g,lIr))if(Sd(g,bIr)){C=0;var S=0}else S=1;else S=1;if(S)return Z1r(u),a}if(C)return a;TZr(n,g),TZr(e,g);continue;case 1:return Aat(a,Cat(a,u));case 2:var x=k2r(u);TZr(n,x),TZr(e,x);a=Bat(a,u);continue;case 3:var T=k2r(u),A=lZr(T,3,jp(T)-4|0);TZr(n,T),p2r(e,Hp(PQr(DIr,A)));continue;case 4:var B=k2r(u),I=lZr(B,2,jp(B)-3|0);TZr(n,B),p2r(e,Hp(I));continue;case 5:var P=k2r(u),N=lZr(P,1,jp(P)-2|0);TZr(n,P);var L=vp(N,kIr);if(0<=L)if(0<L){var R=vp(N,QLr);if(0<=R)if(0<R){var M=vp(N,djr);if(0<=M)if(0<M){var j=vp(N,CUr);if(0<=j)if(0<j){var U=vp(N,nXr);if(0<=U)if(0<U)if(Sd(N,wXr))if(Sd(N,hXr))if(Sd(N,mXr))if(Sd(N,FXr))if(Sd(N,yXr))if(Sd(N,EXr))var X=1,J=0,G=0,q=0,z=0;else{var V=_Xr;z=1}else V=gXr,z=1;else V=CXr,z=1;else V=SXr,z=1;else V=xXr,z=1;else V=TXr,z=1;else V=AXr,z=1;else if(Sd(N,uXr))if(Sd(N,aXr))if(Sd(N,iXr))if(Sd(N,fXr))if(Sd(N,cXr))if(Sd(N,sXr))if(Sd(N,oXr))X=1,J=0,G=0,q=0,z=0;else V=vXr,z=1;else V=lXr,z=1;else V=bXr,z=1;else V=DXr,z=1;else V=kXr,z=1;else V=pXr,z=1;else V=dXr,z=1;if(z){var W=V;q=1}}else W=BXr,q=1;else{var Y=vp(N,SUr);if(0<=Y)if(0<Y)if(Sd(N,JUr))if(Sd(N,GUr))if(Sd(N,qUr))if(Sd(N,zUr))if(Sd(N,VUr))if(Sd(N,WUr))if(Sd(N,YUr)){X=1,J=0,G=0,q=0;var H=0}else{var $=HUr;H=1}else $=$Ur,H=1;else $=KUr,H=1;else $=QUr,H=1;else $=ZUr,H=1;else $=rXr,H=1;else $=tXr,H=1;else $=eXr,H=1;else if(Sd(N,xUr))if(Sd(N,TUr))if(Sd(N,AUr))if(Sd(N,BUr))if(Sd(N,IUr))if(Sd(N,OUr))if(Sd(N,PUr))X=1,J=0,G=0,q=0,H=0;else $=NUr,H=1;else $=LUr,H=1;else $=RUr,H=1;else $=MUr,H=1;else $=jUr,H=1;else $=UUr,H=1;else $=XUr,H=1;if(H)W=$,q=1}if(q){var K=W;G=1}}else K=IXr,G=1;else{var Q=vp(N,wjr);if(0<=Q)if(0<Q){var Z=vp(N,Hjr);if(0<=Z)if(0<Z)if(Sd(N,oUr))if(Sd(N,vUr))if(Sd(N,lUr))if(Sd(N,bUr))if(Sd(N,DUr))if(Sd(N,kUr))if(Sd(N,pUr)){X=1,J=0,G=0;var rr=0,tr=0}else{var er=dUr;tr=1}else er=wUr,tr=1;else er=hUr,tr=1;else er=mUr,tr=1;else er=FUr,tr=1;else er=yUr,tr=1;else er=EUr,tr=1;else er=_Ur,tr=1;else if(Sd(N,$jr))if(Sd(N,Kjr))if(Sd(N,Qjr))if(Sd(N,Zjr))if(Sd(N,rUr))if(Sd(N,tUr))if(Sd(N,eUr))X=1,J=0,G=0,rr=0,tr=0;else er=nUr,tr=1;else er=uUr,tr=1;else er=aUr,tr=1;else er=iUr,tr=1;else er=fUr,tr=1;else er=cUr,tr=1;else er=sUr,tr=1;if(tr){var nr=er;rr=1}}else nr=gUr,rr=1;else{var ur=vp(N,hjr);if(0<=ur)if(0<ur)if(Sd(N,Pjr))if(Sd(N,Njr))if(Sd(N,Ljr))if(Sd(N,Rjr))if(Sd(N,Mjr))if(Sd(N,jjr))if(Sd(N,Ujr)){X=1,J=0,G=0,rr=0;var ar=0}else{var ir=Xjr;ar=1}else ir=Jjr,ar=1;else ir=Gjr,ar=1;else ir=qjr,ar=1;else ir=zjr,ar=1;else ir=Vjr,ar=1;else ir=Wjr,ar=1;else ir=Yjr,ar=1;else if(Sd(N,mjr))if(Sd(N,Fjr))if(Sd(N,yjr))if(Sd(N,Ejr))if(Sd(N,_jr))if(Sd(N,gjr))if(Sd(N,Cjr))X=1,J=0,G=0,rr=0,ar=0;else ir=Sjr,ar=1;else ir=xjr,ar=1;else ir=Tjr,ar=1;else ir=Ajr,ar=1;else ir=Bjr,ar=1;else ir=Ijr,ar=1;else ir=Ojr,ar=1;if(ar)nr=ir,rr=1}if(rr)K=nr,G=1}if(G){var fr=K;J=1}}else fr=OXr,J=1;else{var cr=vp(N,ZLr);if(0<=cr)if(0<cr){var sr=vp(N,cMr);if(0<=sr)if(0<sr){var or=vp(N,jMr);if(0<=or)if(0<or)if(Sd(N,rjr))if(Sd(N,tjr))if(Sd(N,ejr))if(Sd(N,njr))if(Sd(N,ujr))if(Sd(N,ajr))if(Sd(N,ijr)){X=1,J=0;var vr=0,lr=0,br=0}else{var Dr=fjr;br=1}else Dr=cjr,br=1;else Dr=sjr,br=1;else Dr=ojr,br=1;else Dr=vjr,br=1;else Dr=ljr,br=1;else Dr=bjr,br=1;else Dr=Djr,br=1;else if(Sd(N,UMr))if(Sd(N,XMr))if(Sd(N,JMr))if(Sd(N,GMr))if(Sd(N,qMr))if(Sd(N,zMr))if(Sd(N,VMr))X=1,J=0,vr=0,lr=0,br=0;else Dr=WMr,br=1;else Dr=YMr,br=1;else Dr=HMr,br=1;else Dr=$Mr,br=1;else Dr=KMr,br=1;else Dr=QMr,br=1;else Dr=ZMr,br=1;if(br){var kr=Dr;lr=1}}else kr=kjr,lr=1;else{var pr=vp(N,sMr);if(0<=pr)if(0<pr)if(Sd(N,_Mr))if(Sd(N,gMr))if(Sd(N,CMr))if(Sd(N,SMr))if(Sd(N,xMr))if(Sd(N,TMr))if(Sd(N,AMr)){X=1,J=0,vr=0,lr=0;var dr=0}else{var wr=BMr;dr=1}else wr=IMr,dr=1;else wr=OMr,dr=1;else wr=PMr,dr=1;else wr=NMr,dr=1;else wr=LMr,dr=1;else wr=RMr,dr=1;else wr=MMr,dr=1;else if(Sd(N,oMr))if(Sd(N,vMr))if(Sd(N,lMr))if(Sd(N,bMr))if(Sd(N,DMr))if(Sd(N,kMr))if(Sd(N,pMr))X=1,J=0,vr=0,lr=0,dr=0;else wr=dMr,dr=1;else wr=wMr,dr=1;else wr=hMr,dr=1;else wr=mMr,dr=1;else wr=FMr,dr=1;else wr=yMr,dr=1;else wr=EMr,dr=1;if(dr)kr=wr,lr=1}if(lr){var hr=kr;vr=1}}else hr=pjr,vr=1;else{var mr=vp(N,rRr);if(0<=mr)if(0<mr){var Fr=vp(N,BRr);if(0<=Fr)if(0<Fr)if(Sd(N,VRr))if(Sd(N,WRr))if(Sd(N,YRr))if(Sd(N,HRr))if(Sd(N,$Rr))if(Sd(N,KRr))if(Sd(N,QRr)){X=1,J=0,vr=0;var yr=0,Er=0}else{var _r=ZRr;Er=1}else _r=rMr,Er=1;else _r=tMr,Er=1;else _r=eMr,Er=1;else _r=nMr,Er=1;else _r=uMr,Er=1;else _r=aMr,Er=1;else _r=iMr,Er=1;else if(Sd(N,IRr))if(Sd(N,ORr))if(Sd(N,PRr))if(Sd(N,NRr))if(Sd(N,LRr))if(Sd(N,RRr))if(Sd(N,MRr))X=1,J=0,vr=0,yr=0,Er=0;else _r=jRr,Er=1;else _r=URr,Er=1;else _r=XRr,Er=1;else _r=JRr,Er=1;else _r=GRr,Er=1;else _r=qRr,Er=1;else _r=zRr,Er=1;if(Er){var gr=_r;yr=1}}else gr=fMr,yr=1;else{var Cr=vp(N,tRr);if(0<=Cr)if(0<Cr)if(Sd(N,pRr))if(Sd(N,dRr))if(Sd(N,wRr))if(Sd(N,hRr))if(Sd(N,mRr))if(Sd(N,FRr))if(Sd(N,yRr)){X=1,J=0,vr=0,yr=0;var Sr=0}else{var xr=ERr;Sr=1}else xr=_Rr,Sr=1;else xr=gRr,Sr=1;else xr=CRr,Sr=1;else xr=SRr,Sr=1;else xr=xRr,Sr=1;else xr=TRr,Sr=1;else xr=ARr,Sr=1;else if(Sd(N,eRr))if(Sd(N,nRr))if(Sd(N,uRr))if(Sd(N,aRr))if(Sd(N,iRr))if(Sd(N,fRr))if(Sd(N,cRr))X=1,J=0,vr=0,yr=0,Sr=0;else xr=sRr,Sr=1;else xr=oRr,Sr=1;else xr=vRr,Sr=1;else xr=lRr,Sr=1;else xr=bRr,Sr=1;else xr=DRr,Sr=1;else xr=kRr,Sr=1;if(Sr)gr=xr,yr=1}if(yr)hr=gr,vr=1}if(vr)fr=hr,J=1}if(J){var Tr=fr;X=0}}else Tr=PXr,X=0;else{var Ar=vp(N,pIr);if(0<=Ar)if(0<Ar){var Br=vp(N,NPr);if(0<=Br)if(0<Br){var Ir=vp(N,qNr);if(0<=Ir)if(0<Ir){var Or=vp(N,FLr);if(0<=Or)if(0<Or)if(Sd(N,LLr))if(Sd(N,RLr))if(Sd(N,MLr))if(Sd(N,jLr))if(Sd(N,ULr))if(Sd(N,XLr)){X=1;var Pr=0,Nr=0,Lr=0,Rr=0}else{var Mr=JLr;Rr=1}else Mr=GLr,Rr=1;else Mr=qLr,Rr=1;else Mr=zLr,Rr=1;else Mr=VLr,Rr=1;else Mr=WLr,Rr=1;else Mr=YLr,Rr=1;else if(Sd(N,yLr))if(Sd(N,ELr))if(Sd(N,_Lr))if(Sd(N,gLr))if(Sd(N,CLr))if(Sd(N,SLr))if(Sd(N,xLr))X=1,Pr=0,Nr=0,Lr=0,Rr=0;else Mr=TLr,Rr=1;else Mr=ALr,Rr=1;else Mr=BLr,Rr=1;else Mr=ILr,Rr=1;else Mr=OLr,Rr=1;else Mr=PLr,Rr=1;else Mr=NLr,Rr=1;if(Rr){var jr=Mr;Lr=1}}else jr=HLr,Lr=1;else{var Ur=vp(N,zNr);if(0<=Ur)if(0<Ur)if(Sd(N,iLr))if(Sd(N,fLr))if(Sd(N,cLr))if(Sd(N,sLr))if(Sd(N,oLr))if(Sd(N,vLr))if(Sd(N,lLr)){X=1,Pr=0,Nr=0,Lr=0;var Xr=0}else{var Jr=bLr;Xr=1}else Jr=DLr,Xr=1;else Jr=kLr,Xr=1;else Jr=pLr,Xr=1;else Jr=dLr,Xr=1;else Jr=wLr,Xr=1;else Jr=hLr,Xr=1;else Jr=mLr,Xr=1;else if(Sd(N,VNr))if(Sd(N,WNr))if(Sd(N,YNr))if(Sd(N,HNr))if(Sd(N,$Nr))if(Sd(N,KNr))if(Sd(N,QNr))X=1,Pr=0,Nr=0,Lr=0,Xr=0;else Jr=ZNr,Xr=1;else Jr=rLr,Xr=1;else Jr=tLr,Xr=1;else Jr=eLr,Xr=1;else Jr=nLr,Xr=1;else Jr=uLr,Xr=1;else Jr=aLr,Xr=1;if(Xr)jr=Jr,Lr=1}if(Lr){var Gr=jr;Nr=1}}else Gr=$Lr,Nr=1;else{var qr=vp(N,LPr);if(0<=qr)if(0<qr){var zr=vp(N,bNr);if(0<=zr)if(0<zr)if(Sd(N,xNr))if(Sd(N,TNr))if(Sd(N,ANr))if(Sd(N,BNr))if(Sd(N,INr))if(Sd(N,ONr))if(Sd(N,PNr)){X=1,Pr=0,Nr=0;var Vr=0,Wr=0}else{var Yr=NNr;Wr=1}else Yr=LNr,Wr=1;else Yr=RNr,Wr=1;else Yr=MNr,Wr=1;else Yr=jNr,Wr=1;else Yr=UNr,Wr=1;else Yr=XNr,Wr=1;else Yr=JNr,Wr=1;else if(Sd(N,DNr))if(Sd(N,kNr))if(Sd(N,pNr))if(Sd(N,dNr))if(Sd(N,wNr))if(Sd(N,hNr))if(Sd(N,mNr))X=1,Pr=0,Nr=0,Vr=0,Wr=0;else Yr=FNr,Wr=1;else Yr=yNr,Wr=1;else Yr=ENr,Wr=1;else Yr=_Nr,Wr=1;else Yr=gNr,Wr=1;else Yr=CNr,Wr=1;else Yr=SNr,Wr=1;if(Wr){var Hr=Yr;Vr=1}}else Hr=GNr,Vr=1;else{var $r=vp(N,RPr);if(0<=$r)if(0<$r)if(Sd(N,QPr))if(Sd(N,ZPr))if(Sd(N,rNr))if(Sd(N,tNr))if(Sd(N,eNr))if(Sd(N,nNr))if(Sd(N,uNr)){X=1,Pr=0,Nr=0,Vr=0;var Kr=0}else{var Qr=aNr;Kr=1}else Qr=iNr,Kr=1;else Qr=fNr,Kr=1;else Qr=cNr,Kr=1;else Qr=sNr,Kr=1;else Qr=oNr,Kr=1;else Qr=vNr,Kr=1;else Qr=lNr,Kr=1;else if(Sd(N,MPr))if(Sd(N,jPr))if(Sd(N,UPr))if(Sd(N,XPr))if(Sd(N,JPr))if(Sd(N,GPr))if(Sd(N,qPr))X=1,Pr=0,Nr=0,Vr=0,Kr=0;else Qr=zPr,Kr=1;else Qr=VPr,Kr=1;else Qr=WPr,Kr=1;else Qr=YPr,Kr=1;else Qr=HPr,Kr=1;else Qr=$Pr,Kr=1;else Qr=KPr,Kr=1;if(Kr)Hr=Qr,Vr=1}if(Vr)Gr=Hr,Nr=1}if(Nr){var Zr=Gr;Pr=1}}else Zr=KLr,Pr=1;else{var rt=vp(N,dIr);if(0<=rt)if(0<rt){var tt=vp(N,COr);if(0<=tt)if(0<tt){var et=vp(N,nPr);if(0<=et)if(0<et)if(Sd(N,wPr))if(Sd(N,hPr))if(Sd(N,mPr))if(Sd(N,FPr))if(Sd(N,yPr))if(Sd(N,EPr))if(Sd(N,_Pr)){X=1,Pr=0;var nt=0,ut=0,at=0}else{var it=gPr;at=1}else it=CPr,at=1;else it=SPr,at=1;else it=xPr,at=1;else it=TPr,at=1;else it=APr,at=1;else it=BPr,at=1;else it=IPr,at=1;else if(Sd(N,uPr))if(Sd(N,aPr))if(Sd(N,iPr))if(Sd(N,fPr))if(Sd(N,cPr))if(Sd(N,sPr))if(Sd(N,oPr))X=1,Pr=0,nt=0,ut=0,at=0;else it=vPr,at=1;else it=lPr,at=1;else it=bPr,at=1;else it=DPr,at=1;else it=kPr,at=1;else it=pPr,at=1;else it=dPr,at=1;if(at){var ft=it;ut=1}}else ft=OPr,ut=1;else{var ct=vp(N,SOr);if(0<=ct)if(0<ct)if(Sd(N,JOr))if(Sd(N,GOr))if(Sd(N,qOr))if(Sd(N,zOr))if(Sd(N,VOr))if(Sd(N,WOr))if(Sd(N,YOr)){X=1,Pr=0,nt=0,ut=0;var st=0}else{var ot=HOr;st=1}else ot=$Or,st=1;else ot=KOr,st=1;else ot=QOr,st=1;else ot=ZOr,st=1;else ot=rPr,st=1;else ot=tPr,st=1;else ot=ePr,st=1;else if(Sd(N,xOr))if(Sd(N,TOr))if(Sd(N,AOr))if(Sd(N,BOr))if(Sd(N,IOr))if(Sd(N,OOr))if(Sd(N,POr))X=1,Pr=0,nt=0,ut=0,st=0;else ot=NOr,st=1;else ot=LOr,st=1;else ot=ROr,st=1;else ot=MOr,st=1;else ot=jOr,st=1;else ot=UOr,st=1;else ot=XOr,st=1;if(st)ft=ot,ut=1}if(ut){var vt=ft;nt=1}}else vt=PPr,nt=1;else{var lt=vp(N,wIr);if(0<=lt)if(0<lt){var bt=vp(N,HIr);if(0<=bt)if(0<bt)if(Sd(N,oOr))if(Sd(N,vOr))if(Sd(N,lOr))if(Sd(N,bOr))if(Sd(N,DOr))if(Sd(N,kOr))if(Sd(N,pOr)){X=1,Pr=0,nt=0;var Dt=0,kt=0}else{var pt=dOr;kt=1}else pt=wOr,kt=1;else pt=hOr,kt=1;else pt=mOr,kt=1;else pt=FOr,kt=1;else pt=yOr,kt=1;else pt=EOr,kt=1;else pt=_Or,kt=1;else if(Sd(N,$Ir))if(Sd(N,KIr))if(Sd(N,QIr))if(Sd(N,ZIr))if(Sd(N,rOr))if(Sd(N,tOr))if(Sd(N,eOr))X=1,Pr=0,nt=0,Dt=0,kt=0;else pt=nOr,kt=1;else pt=uOr,kt=1;else pt=aOr,kt=1;else pt=iOr,kt=1;else pt=fOr,kt=1;else pt=cOr,kt=1;else pt=sOr,kt=1;if(kt){var dt=pt;Dt=1}}else dt=gOr,Dt=1;else{var wt=vp(N,hIr);if(0<=wt)if(0<wt)if(Sd(N,PIr))if(Sd(N,NIr))if(Sd(N,LIr))if(Sd(N,RIr))if(Sd(N,MIr))if(Sd(N,jIr))if(Sd(N,UIr)){X=1,Pr=0,nt=0,Dt=0;var ht=0}else{var mt=XIr;ht=1}else mt=JIr,ht=1;else mt=GIr,ht=1;else mt=qIr,ht=1;else mt=zIr,ht=1;else mt=VIr,ht=1;else mt=WIr,ht=1;else mt=YIr,ht=1;else if(Sd(N,mIr))if(Sd(N,FIr))if(Sd(N,yIr))if(Sd(N,EIr))if(Sd(N,_Ir))if(Sd(N,gIr))if(Sd(N,CIr))X=1,Pr=0,nt=0,Dt=0,ht=0;else mt=SIr,ht=1;else mt=xIr,ht=1;else mt=TIr,ht=1;else mt=AIr,ht=1;else mt=BIr,ht=1;else mt=IIr,ht=1;else mt=OIr,ht=1;if(ht)dt=mt,Dt=1}if(Dt)vt=dt,nt=1}if(nt)Zr=vt,Pr=1}if(Pr)Tr=Zr,X=0}var Ft=X?0:Tr;Ft?p2r(e,Ft[1]):TZr(e,PQr(LXr,PQr(N,NXr)));continue;default:var yt=k2r(u);TZr(n,yt),TZr(e,yt);continue}}},Vat=function(r){return function(t){for(var e=0,n=t;;){var u=Ld(r,n,n[2]);switch(u[0]){case 0:var a=$Qr(e);return Sat([0,u[1],u[2],a]);case 1:e=[0,u[2],e],n=u[1];continue;default:n=u[1];continue}}}},Wat=Vat((function(r,t){$1r(t);var e=H1r(t),n=kr<e?$r<e?iv<e?Xt<e?1:2:db<e?1:2:S<e?Ib<e?gf<e?1:2:fD<e?1:2:zi<e?Of<e?1:3:Ct<e?1:2:Cd(tzr,e+1|0)-1|0;if(5<n>>>0)var u=Q1r(t);else switch(n){case 0:u=0;break;case 1:u=6;break;case 2:if(K1r(t,2),0===Ant(H1r(t))){for(;;)if(K1r(t,2),0!==Ant(H1r(t))){u=Q1r(t);break}}else u=Q1r(t);break;case 3:u=1;break;case 4:K1r(t,1);u=0===Gut(H1r(t))?1:Q1r(t);break;default:K1r(t,5);var a=nat(H1r(t));u=0===a?4:1===a?3:Q1r(t)}if(6<u>>>0)return TQr(fJr);switch(u){case 0:return[0,r,De];case 1:return[2,Bat(r,t)];case 2:return[2,r];case 3:var i=_at(r,t),f=gZr(Yc),c=Xat(r,f,t),s=c[1];return[1,s,Oat(s,i,c[2],f,0)];case 4:var o=_at(r,t),v=gZr(Yc),l=Uat(r,v,t),b=l[1];return[1,b,Oat(b,o,l[2],v,1)];case 5:var D=_at(r,t),k=gZr(Yc),p=r;r:for(;;){$1r(t);var d=H1r(t),w=92<d?Of<d?1:zi<d?2:1:Cd(PGr,d+1|0)-1|0;if(6<w>>>0)var h=Q1r(t);else switch(w){case 0:h=0;break;case 1:for(;;){K1r(t,7);var m=H1r(t);if(0!==(-1<m?90<m?92<m?zi<m?Of<m?0:-1:0:-1:Cd(jqr,m)-1|0:-1)){h=Q1r(t);break}}break;case 2:h=6;break;case 3:K1r(t,6);h=0===Gut(H1r(t))?6:Q1r(t);break;case 4:if(K1r(t,4),0===Wnt(H1r(t))){for(;;)if(K1r(t,3),0!==Wnt(H1r(t))){h=Q1r(t);break}}else h=Q1r(t);break;case 5:h=5;break;default:K1r(t,7);var F=H1r(t),y=-1<F?13<F?Of<F?0:zi<F?1:0:Cd(Kqr,F)-1|0:-1;if(2<y>>>0)h=Q1r(t);else switch(y){case 0:h=2;break;case 1:h=1;break;default:K1r(t,1);h=0===Gut(H1r(t))?1:Q1r(t)}}if(7<h>>>0)var E=TQr(uIr);else switch(h){case 0:E=[0,xat(p,Cat(p,t),23),aIr];break;case 1:E=[0,Bat(xat(p,Cat(p,t),23),t),iIr];break;case 3:var _=k2r(t);E=[0,p,lZr(_,1,jp(_)-1|0)];break;case 4:E=[0,p,fIr];break;case 5:for(xZr(k,91);;){$1r(t);var g=H1r(t),C=93<g?1:Cd(Qqr,g+1|0)-1|0;if(3<C>>>0)var x=Q1r(t);else switch(C){case 0:x=0;break;case 1:for(;;){K1r(t,4);var T=H1r(t);if(0!==(-1<T?91<T?93<T?0:-1:0:-1)){x=Q1r(t);break}}break;case 2:K1r(t,4);var A=H1r(t),B=91<A?93<A?-1:Cd(tw,A-92|0)-1|0:-1;x=0===B?1:1===B?2:Q1r(t);break;default:x=3}if(4<x>>>0)var I=TQr(eIr);else switch(x){case 0:I=p;break;case 1:TZr(k,nIr);continue;case 2:xZr(k,92),xZr(k,93);continue;case 3:xZr(k,93);I=p;break;default:TZr(k,k2r(t));continue}p=I;continue r}case 6:E=[0,Bat(xat(p,Cat(p,t),23),t),cIr];break;default:TZr(k,k2r(t));continue}var O=E[1],P=gat(O,t),N=[0,O[1],D,P],L=E[2];return[0,O,[5,[0,N,CZr(k),L]]]}default:return[0,Aat(r,Cat(r,t)),[6,k2r(t)]]}})),Yat=Vat((function(r,t){function f(r,t){for(;;){K1r(t,12);var e=kut(H1r(t));if(0!==e)return 1===e?r<50?c(r+1|0,t):Bd(c,[0,t]):Q1r(t)}}function c(r,t){if(0===dat(H1r(t))){var e=Xut(H1r(t));if(0===e)return 0===Pnt(H1r(t))&&0===Pnt(H1r(t))&&0===Pnt(H1r(t))?r<50?f(r+1|0,t):Bd(f,[0,t]):Q1r(t);if(1===e){if(0===Pnt(H1r(t)))for(;;){var n=Gnt(H1r(t));if(0!==n)return 1===n?r<50?f(r+1|0,t):Bd(f,[0,t]):Q1r(t)}return Q1r(t)}return Q1r(t)}return Q1r(t)}function s(r){return Ad(f(0,r))}$1r(t);var o=H1r(t),D=kr<o?gs<o?Co<o?We<o?Zt<o?pi<o?pv<o?Or<o?1:6:vc<o?ds<o?1:6:ro<o?1:6:sk<o?Bl<o?Ea<o?1:6:wv<o?1:6:ta<o?Ob<o?1:6:me<o?1:6:ek<o?MD<o?Uo<o?yD<o?Cl<o?1:6:sn<o?1:6:Hu<o?$i<o?1:6:Wc<o?1:6:it<o?ec<o?_s<o?1:6:Jo<o?1:6:zv<o?Ic<o?1:6:ol<o?1:6:_v<o?Q<o?ln<o?rf<o?1:6:yf<o?1:6:rb<o?Sv<o?1:6:Vt<o?1:6:Gu<o?qt<o?x<o?1:6:Jc<o?1:6:Hs<o?Po<o?1:6:Ei<o?1:6:qc<o?jc<o?tt<o?uc<o?Nu<o?Un<o?1:6:Rr<o?1:6:gv<o?Wo<o?1:6:yl<o?1:6:Zc<o?gD<o?fi<o?1:6:an<o?1:6:zc<o?os<o?1:6:ru<o?1:6:bi<o?Ur<o?Ks<o?Dl<o?1:6:zf<o?1:6:mr<o?Zo<o?1:6:au<o?1:6:Wf<o?Ao<o?Jt<o?1:6:xo<o?1:6:Se<o?QD<o?1:6:Il<o?1:6:zn<o?Er<o?Ps<o?br<o?wb<o?1:6:zt<o?1:6:qa<o?Pt<o?1:6:Wa<o?1:6:xc<o?ha<o?vf<o?1:6:Wt<o?1:6:$a<o?Zr<o?1:6:Ql<o?1:6:qu<o?Ho<o?Kr<o?ke<o?1:6:Uc<o?1:6:jn<o?rs<o?1:6:ua<o?1:6:wu<o?pf<o?uo<o?1:6:dk<o?1:6:xk<o?$<o?1:6:wf<o?1:6:Io<o?Cb<o?Y<o?hv<o?Qn<o?Pi<o?cn<o?1:6:ir<o?1:6:Kn<o?Ac<o?1:6:Ub<o?1:6:Gb<o?Ls<o?Cr<o?1:6:tn<o?1:6:DD<o?Wi<o?1:6:If<o?1:6:vt<o?sa<o?e<o?Ee<o?1:6:tc<o?1:6:oo<o?Ze<o?1:6:ct<o?1:6:Mn<o?Zs<o?gi<o?1:6:Bi<o?1:6:hf<o?dt<o?1:6:ps<o?1:6:la<o?Yv<o?Ji<o?fe<o?as<o?1:6:xi<o?1:6:ok<o?Xo<o?1:6:Mu<o?1:6:kl<o?Fb<o?Vf<o?1:6:Lf<o?1:6:_b<o?ov<o?1:6:Di<o?1:6:Xl<o?js<o?An<o?Mo<o?1:6:b<o?1:6:Bt<o?bD<o?1:6:ai<o?1:6:Ge<o?g<o?fc<o?1:6:Oe<o?1:6:hD<o?Pf<o?1:6:le<o?1:6:Ai<o?mf<o?qi<o?Tr<o?KD<o?eu<o?1:6:cs<o?1:6:ID<o?Js<o?1:6:A<o?1:6:Ki<o?Ak<o?dc<o?1:6:$u<o?1:6:wr<o?Af<o?1:6:Rs<o?1:6:Ui<o?Jf<o?eo<o?cc<o?1:6:yv<o?1:6:Vs<o?mu<o?1:6:Ar<o?1:6:ND<o?F<o?ck<o?1:6:Bn<o?1:6:_c<o?cr<o?1:6:Qe<o?1:6:nn<o?zD<o?Ri<o?Ma<o?ub<o?1:6:Hc<o?1:6:Es<o?Fl<o?1:6:be<o?1:6:gu<o?ja<o?nr<o?1:6:bu<o?1:6:rD<o?Br<o?1:6:qn<o?1:6:oi<o?av<o?$D<o?Ra<o?1:6:xu<o?1:6:zs<o?lt<o?1:6:It<o?1:6:Qb<o?VD<o?Fo<o?1:6:Do<o?1:6:Yb<o?Ju<o?1:6:Ot<o?1:6:aa<o?co<o?iu<o?u<o?Nv<o?Hi<o?Kt<o?Os<o?1:6:$b<o?1:6:C<o?Nb<o?1:6:Ir<o?1:6:_l<o?Sf<o?$f<o?1:6:we<o?1:6:iv<o?Xt<o?1:2:jb<o?1:6:tb<o?ml<o?cv<o?hc<o?1:6:ht<o?1:6:Mk<o?Ua<o?1:6:rc<o?1:6:dl<o?wc<o?Kl<o?1:6:ob<o?1:6:ma<o?ii<o?1:6:Su<o?1:6:mt<o?ac<o?l<o?Za<o?Ko<o?1:6:wn<o?1:6:_D<o?tv<o?1:6:Lk<o?1:6:Sc<o?Bs<o?Fk<o?1:6:Sn<o?1:6:Ja<o?jt<o?1:6:zr<o?1:6:Xi<o?hs<o?Ro<o?oc<o?1:6:eD<o?1:6:pt<o?nu<o?1:6:rk<o?1:6:Is<o?ui<o?ne<o?1:6:Da<o?1:6:Wu<o?Pa<o?1:6:Ku<o?1:6:Gc<o?ab<o?Kf<o?lf<o?Gf<o?vD<o?1:6:Rl<o?1:6:se<o?h<o?1:6:ze<o?1:6:Bc<o?Yu<o?mi<o?1:6:vv<o?1:6:li<o?Ws<o?1:6:fl<o?1:6:Ek<o?wa<o?Va<o?uk<o?1:6:qr<o?1:6:Ni<o?Rc<o?1:6:Nk<o?1:6:L<o?bn<o?da<o?1:6:Ue<o?1:6:Xf<o?R<o?1:6:ho<o?1:6:Iu<o?Sr<o?Ut<o?Fr<o?Lo<o?1:6:Yi<o?1:6:ni<o?dD<o?1:6:vk<o?1:6:Xe<o?dv<o?rt<o?1:6:Rk<o?1:6:ib<o?Qr<o?1:6:re<o?1:6:Pe<o?pk<o?i<o?Ln<o?1:6:ya<o?1:6:Wl<o?Qc<o?1:6:Ts<o?1:6:ys<o?rv<o?LD<o?1:6:Kv<o?1:6:Wv<o?pb<o?1:6:WD<o?1:6:cu<o?Mt<o?lu<o?Ca<o?ms<o?Ne<o?v<o?1:6:fa<o?1:6:Tu<o?Cv<o?1:6:Nc<o?1:6:Ec<o?tD<o?Qo<o?1:6:To<o?1:6:eb<o?tr<o?1:6:Du<o?1:6:Oo<o?Qv<o?Ae<o?of<o?1:6:wt<o?1:6:ZD<o?rl<o?1:6:Kc<o?1:6:fu<o?fr<o?Vb<o?1:6:w<o?1:6:Go<o?Pb<o?1:6:Jr<o?1:6:Sb<o?vr<o?dn<o?Qu<o?ti<o?1:6:a<o?1:6:go<o?Xv<o?1:6:sr<o?1:6:On<o?Je<o?Bf<o?1:6:_i<o?1:6:Ml<o?Hn<o?1:6:ge<o?1:6:El<o?io<o?$r<o?db<o?1:2:Fe<o?1:6:$l<o?oD<o?1:6:$e<o?1:6:vs<o?PD<o?nf<o?1:6:k<o?1:6:BD<o?qs<o?1:6:qe<o?1:6:Jl<o?bf<o?gb<o?jo<o?hb<o?lD<o?1:6:ea<o?1:6:dr<o?Lr<o?1:6:Db<o?1:6:Bu<o?Yl<o?pu<o?1:6:mb<o?1:6:Wr<o?Te<o?1:6:yr<o?1:6:Ul<o?il<o?So<o?Pu<o?1:6:GD<o?1:6:Dk<o?zl<o?1:6:Ba<o?1:6:Xc<o?Ck<o?Ga<o?1:6:Ms<o?1:6:Iv<o?Ik<o?1:6:lr<o?1:6:on<o?n<o?hk<o?bl<o?Pv<o?1:6:wl<o?1:6:wi<o?nk<o?1:6:mc<o?1:6:ye<o?Et<o?al<o?1:6:fs<o?1:6:_u<o?ue<o?1:6:Zu<o?1:6:Qs<o?Wb<o?ws<o?ar<o?1:6:mo<o?1:6:ae<o?Rn<o?1:6:nD<o?1:6:S<o?Ib<o?gf<o?1:2:fD<o?1:2:zi<o?Of<o?1:3:Ct<o?1:2:Cd(uzr,o+1|0)-1|0;if(14<D>>>0)var p=Q1r(t);else switch(D){case 0:p=0;break;case 1:p=14;break;case 2:if(K1r(t,2),0===Ant(H1r(t))){for(;;)if(K1r(t,2),0!==Ant(H1r(t))){p=Q1r(t);break}}else p=Q1r(t);break;case 3:p=1;break;case 4:K1r(t,1);p=0===Gut(H1r(t))?1:Q1r(t);break;case 5:p=13;break;case 6:K1r(t,12);var d=kut(H1r(t));p=0===d?s(t):1===d?function(r){return Ad(c(0,r))}(t):Q1r(t);break;case 7:p=10;break;case 8:K1r(t,6);var m=nat(H1r(t));p=0===m?4:1===m?3:Q1r(t);break;case 9:p=9;break;case 10:p=5;break;case 11:p=11;break;case 12:p=7;break;case 13:if(K1r(t,14),0===dat(H1r(t))){var y=Xut(H1r(t));if(0===y)p=0===Pnt(H1r(t))&&0===Pnt(H1r(t))&&0===Pnt(H1r(t))?s(t):Q1r(t);else if(1===y)if(0===Pnt(H1r(t)))for(;;){var E=Gnt(H1r(t));if(0!==E){p=1===E?s(t):Q1r(t);break}}else p=Q1r(t);else p=Q1r(t)}else p=Q1r(t);break;default:p=8}if(14<p>>>0)return TQr(aJr);switch(p){case 0:return[0,r,De];case 1:return[2,Bat(r,t)];case 2:return[2,r];case 3:var _=_at(r,t),T=gZr(Yc),B=Xat(r,T,t),I=B[1];return[1,I,Oat(I,_,B[2],T,0)];case 4:var O=_at(r,t),P=gZr(Yc),N=Uat(r,P,t),M=N[1];return[1,M,Oat(M,O,N[2],P,1)];case 5:return[0,r,95];case 6:return[0,r,Au];case 7:return[0,r,96];case 8:return[0,r,0];case 9:return[0,r,83];case 10:return[0,r,10];case 11:return[0,r,79];case 12:return[0,r,[7,k2r(t)]];case 13:var j=k2r(t),U=_at(r,t),X=gZr(Yc),J=gZr(Yc);TZr(J,j);var G=gd(j,iJr)?0:1,q=zat(r,G,X,J,t),z=gat(q,t);TZr(J,j);var V=CZr(X),W=CZr(J);return[0,q,[8,[0,[0,q[1],U,z],V,W]]];default:return[0,r,[6,k2r(t)]]}})),Hat=Vat((function(r,t){$1r(t);var e=H1r(t),n=-1<e?kr<e?$r<e?iv<e?Xt<e?0:1:db<e?0:1:S<e?Ib<e?gf<e?0:1:fD<e?0:1:zi<e?Of<e?0:2:Ct<e?0:1:Cd(cGr,e)-1|0:-1;if(5<n>>>0)var u=Q1r(t);else switch(n){case 0:u=5;break;case 1:if(K1r(t,1),0===Ant(H1r(t))){for(;;)if(K1r(t,1),0!==Ant(H1r(t))){u=Q1r(t);break}}else u=Q1r(t);break;case 2:u=0;break;case 3:K1r(t,0);u=0===Gut(H1r(t))?0:Q1r(t);break;case 4:K1r(t,5);var a=nat(H1r(t));u=0===a?3:1===a?2:Q1r(t);break;default:u=4}if(5<u>>>0)return TQr(tJr);switch(u){case 0:return[2,Bat(r,t)];case 1:return[2,r];case 2:var i=_at(r,t),f=gZr(Yc),c=Xat(r,f,t),s=c[1];return[1,s,Oat(s,i,c[2],f,0)];case 3:var o=_at(r,t),v=gZr(Yc),l=Uat(r,v,t),b=l[1];return[1,b,Oat(b,o,l[2],v,1)];case 4:var D=_at(r,t),k=gZr(Yc),p=gZr(Yc),d=gZr(Yc);TZr(d,eJr);var w=qat(r,k,p,d,t),h=w[1],m=gat(h,t),F=[0,h[1],D,m],y=w[2],E=CZr(d),_=CZr(p);return[0,h,[3,[0,F,[0,CZr(k),_,E],y]]];default:var g=Aat(r,Cat(r,t));return[0,g,[3,[0,Cat(g,t),nJr,1]]]}})),$at=Vat((function(r,t){function f(r,t){for(;;){K1r(t,47);var e=Jnt(H1r(t));if(0!==e)return 1===e?r<50?s(r+1|0,t):Bd(s,[0,t]):Q1r(t)}}function s(r,t){if(0===dat(H1r(t))){var e=Xut(H1r(t));if(0===e)return 0===Pnt(H1r(t))&&0===Pnt(H1r(t))&&0===Pnt(H1r(t))?r<50?f(r+1|0,t):Bd(f,[0,t]):Q1r(t);if(1===e){if(0===Pnt(H1r(t)))for(;;){var n=Gnt(H1r(t));if(0!==n)return 1===n?r<50?f(r+1|0,t):Bd(f,[0,t]):Q1r(t)}return Q1r(t)}return Q1r(t)}return Q1r(t)}function p(r){return Ad(f(0,r))}function m(r){return Ad(s(0,r))}function y(r){for(;;)if(K1r(r,29),0!==Fat(H1r(r)))return Q1r(r)}function E(r){K1r(r,27);var t=but(H1r(r));if(0===t)for(;;)if(K1r(r,25),0!==Fat(H1r(r)))return Q1r(r);return 1===t?y(r):Q1r(r)}function B(r){for(;;)if(K1r(r,23),0!==Fat(H1r(r)))return Q1r(r)}function I(r){K1r(r,22);var t=but(H1r(r));if(0===t)for(;;)if(K1r(r,21),0!==Fat(H1r(r)))return Q1r(r);return 1===t?B(r):Q1r(r)}function O(r){for(;;)if(K1r(r,23),0!==Fat(H1r(r)))return Q1r(r)}function N(r){K1r(r,22);var t=but(H1r(r));if(0===t)for(;;)if(K1r(r,21),0!==Fat(H1r(r)))return Q1r(r);return 1===t?O(r):Q1r(r)}function M(r){r:for(;;){if(0===Int(H1r(r)))for(;;){K1r(r,24);var t=Wut(H1r(r));if(3<t>>>0)return Q1r(r);switch(t){case 0:return O(r);case 1:continue;case 2:continue r;default:return N(r)}}return Q1r(r)}}function j(r){K1r(r,29);var t=eat(H1r(r));if(3<t>>>0)return Q1r(r);switch(t){case 0:return y(r);case 1:var e=nut(H1r(r));if(0===e)for(;;){K1r(r,24);var n=qnt(H1r(r));if(2<n>>>0)return Q1r(r);switch(n){case 0:return O(r);case 1:continue;default:return N(r)}}if(1===e)for(;;){K1r(r,24);var u=Wut(H1r(r));if(3<u>>>0)return Q1r(r);switch(u){case 0:return O(r);case 1:continue;case 2:return M(r);default:return N(r)}}return Q1r(r);case 2:for(;;){K1r(r,24);var a=qnt(H1r(r));if(2<a>>>0)return Q1r(r);switch(a){case 0:return B(r);case 1:continue;default:return I(r)}}default:for(;;){K1r(r,24);var i=Wut(H1r(r));if(3<i>>>0)return Q1r(r);switch(i){case 0:return B(r);case 1:continue;case 2:return M(r);default:return I(r)}}}}function U(r){for(;;){K1r(r,30);var t=Tut(H1r(r));if(4<t>>>0)return Q1r(r);switch(t){case 0:return y(r);case 1:continue;case 2:return j(r);case 3:r:for(;;){if(0===Int(H1r(r)))for(;;){K1r(r,30);var e=Tut(H1r(r));if(4<e>>>0)return Q1r(r);switch(e){case 0:return y(r);case 1:continue;case 2:return j(r);case 3:continue r;default:return E(r)}}return Q1r(r)}default:return E(r)}}}function X(r){return 0===Int(H1r(r))?U(r):Q1r(r)}function J(r){for(;;)if(K1r(r,19),0!==Fat(H1r(r)))return Q1r(r)}function G(r){for(;;)if(K1r(r,19),0!==Fat(H1r(r)))return Q1r(r)}function q(r){K1r(r,29);var t=Xnt(H1r(r));if(0===t)return y(r);if(1===t)for(;;){K1r(r,20);var e=fat(H1r(r));if(3<e>>>0)return Q1r(r);switch(e){case 0:return G(r);case 1:continue;case 2:r:for(;;){if(0===Pnt(H1r(r)))for(;;){K1r(r,20);var n=fat(H1r(r));if(3<n>>>0)return Q1r(r);switch(n){case 0:return J(r);case 1:continue;case 2:continue r;default:K1r(r,18);var u=but(H1r(r));if(0===u)for(;;)if(K1r(r,17),0!==Fat(H1r(r)))return Q1r(r);return 1===u?J(r):Q1r(r)}}return Q1r(r)}default:K1r(r,18);var a=but(H1r(r));if(0===a)for(;;)if(K1r(r,17),0!==Fat(H1r(r)))return Q1r(r);return 1===a?G(r):Q1r(r)}}return Q1r(r)}function z(r){for(;;)if(K1r(r,13),0!==Fat(H1r(r)))return Q1r(r)}function V(r){for(;;)if(K1r(r,13),0!==Fat(H1r(r)))return Q1r(r)}function W(r){K1r(r,29);var t=qut(H1r(r));if(0===t)return y(r);if(1===t)for(;;){K1r(r,14);var e=Hut(H1r(r));if(3<e>>>0)return Q1r(r);switch(e){case 0:return V(r);case 1:continue;case 2:r:for(;;){if(0===put(H1r(r)))for(;;){K1r(r,14);var n=Hut(H1r(r));if(3<n>>>0)return Q1r(r);switch(n){case 0:return z(r);case 1:continue;case 2:continue r;default:K1r(r,12);var u=but(H1r(r));if(0===u)for(;;)if(K1r(r,11),0!==Fat(H1r(r)))return Q1r(r);return 1===u?z(r):Q1r(r)}}return Q1r(r)}default:K1r(r,12);var a=but(H1r(r));if(0===a)for(;;)if(K1r(r,11),0!==Fat(H1r(r)))return Q1r(r);return 1===a?V(r):Q1r(r)}}return Q1r(r)}function K(r){for(;;)if(K1r(r,9),0!==Fat(H1r(r)))return Q1r(r)}function Z(r){for(;;)if(K1r(r,9),0!==Fat(H1r(r)))return Q1r(r)}function rr(r){K1r(r,29);var t=Uut(H1r(r));if(0===t)return y(r);if(1===t)for(;;){K1r(r,10);var e=uat(H1r(r));if(3<e>>>0)return Q1r(r);switch(e){case 0:return Z(r);case 1:continue;case 2:r:for(;;){if(0===tut(H1r(r)))for(;;){K1r(r,10);var n=uat(H1r(r));if(3<n>>>0)return Q1r(r);switch(n){case 0:return K(r);case 1:continue;case 2:continue r;default:K1r(r,8);var u=but(H1r(r));if(0===u)for(;;)if(K1r(r,7),0!==Fat(H1r(r)))return Q1r(r);return 1===u?K(r):Q1r(r)}}return Q1r(r)}default:K1r(r,8);var a=but(H1r(r));if(0===a)for(;;)if(K1r(r,7),0!==Fat(H1r(r)))return Q1r(r);return 1===a?Z(r):Q1r(r)}}return Q1r(r)}function ur(r){K1r(r,28);var t=but(H1r(r));if(0===t)for(;;)if(K1r(r,26),0!==Fat(H1r(r)))return Q1r(r);return 1===t?y(r):Q1r(r)}function or(r){K1r(r,30);var t=qnt(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:return y(r);case 1:for(;;){K1r(r,30);var e=Wut(H1r(r));if(3<e>>>0)return Q1r(r);switch(e){case 0:return y(r);case 1:continue;case 2:r:for(;;){if(0===Int(H1r(r)))for(;;){K1r(r,30);var n=Wut(H1r(r));if(3<n>>>0)return Q1r(r);switch(n){case 0:return y(r);case 1:continue;case 2:continue r;default:return E(r)}}return Q1r(r)}default:return E(r)}}default:return E(r)}}function Dr(r){for(;;){K1r(r,30);var t=Knt(H1r(r));if(3<t>>>0)return Q1r(r);switch(t){case 0:return y(r);case 1:return or(r);case 2:continue;default:return ur(r)}}}function pr(r){for(;;)if(K1r(r,15),0!==Fat(H1r(r)))return Q1r(r)}function hr(r){K1r(r,15);var t=but(H1r(r));if(0===t)for(;;)if(K1r(r,15),0!==Fat(H1r(r)))return Q1r(r);return 1===t?pr(r):Q1r(r)}function _r(r){for(;;){K1r(r,16);var t=aat(H1r(r));if(4<t>>>0)return Q1r(r);switch(t){case 0:return pr(r);case 1:return or(r);case 2:continue;case 3:for(;;){K1r(r,15);var e=Knt(H1r(r));if(3<e>>>0)return Q1r(r);switch(e){case 0:return pr(r);case 1:return or(r);case 2:continue;default:return hr(r)}}default:return hr(r)}}}function Pr(r){K1r(r,30);var t=Sut(H1r(r));if(3<t>>>0)return Q1r(r);switch(t){case 0:return y(r);case 1:for(;;){K1r(r,30);var e=Tut(H1r(r));if(4<e>>>0)return Q1r(r);switch(e){case 0:return y(r);case 1:continue;case 2:return j(r);case 3:r:for(;;){if(0===Int(H1r(r)))for(;;){K1r(r,30);var n=Tut(H1r(r));if(4<n>>>0)return Q1r(r);switch(n){case 0:return y(r);case 1:continue;case 2:return j(r);case 3:continue r;default:return E(r)}}return Q1r(r)}default:return E(r)}}case 2:return j(r);default:return E(r)}}function Mr(r){K1r(r,30);var t=Jut(H1r(r));if(8<t>>>0)return Q1r(r);switch(t){case 0:return y(r);case 1:return Pr(r);case 2:return _r(r);case 3:return Dr(r);case 4:return rr(r);case 5:return j(r);case 6:return W(r);case 7:return q(r);default:return ur(r)}}function Xr(r){r:for(;;){if(0===Int(H1r(r)))for(;;){K1r(r,30);var t=Kut(H1r(r));if(4<t>>>0)return Q1r(r);switch(t){case 0:return y(r);case 1:return or(r);case 2:continue;case 3:continue r;default:return ur(r)}}return Q1r(r)}}function Gr(r){for(;;){K1r(r,30);var t=uut(H1r(r));if(5<t>>>0)return Q1r(r);switch(t){case 0:return y(r);case 1:return Pr(r);case 2:continue;case 3:return j(r);case 4:return Xr(r);default:return ur(r)}}}function Vr(r){return K1r(r,3),0===mat(H1r(r))?3:Q1r(r)}function Yr(r){return 0===Put(H1r(r))&&0===wut(H1r(r))&&0===iat(H1r(r))&&0===Iut(H1r(r))&&0===Out(H1r(r))&&0===dut(H1r(r))&&0===hut(H1r(r))&&0===Put(H1r(r))&&0===dat(H1r(r))&&0===Nut(H1r(r))&&0===rat(H1r(r))?3:Q1r(r)}$1r(t);var Hr=H1r(t),nt=kr<Hr?gs<Hr?Co<Hr?We<Hr?Zt<Hr?pi<Hr?pv<Hr?Or<Hr?1:6:vc<Hr?ds<Hr?1:6:ro<Hr?1:6:sk<Hr?Bl<Hr?Ea<Hr?1:6:wv<Hr?1:6:ta<Hr?Ob<Hr?1:6:me<Hr?1:6:ek<Hr?MD<Hr?Uo<Hr?yD<Hr?Cl<Hr?1:6:sn<Hr?1:6:Hu<Hr?$i<Hr?1:6:Wc<Hr?1:6:it<Hr?ec<Hr?_s<Hr?1:6:Jo<Hr?1:6:zv<Hr?Ic<Hr?1:6:ol<Hr?1:6:_v<Hr?Q<Hr?ln<Hr?rf<Hr?1:6:yf<Hr?1:6:rb<Hr?Sv<Hr?1:6:Vt<Hr?1:6:Gu<Hr?qt<Hr?x<Hr?1:6:Jc<Hr?1:6:Hs<Hr?Po<Hr?1:6:Ei<Hr?1:6:qc<Hr?jc<Hr?tt<Hr?uc<Hr?Nu<Hr?Un<Hr?1:6:Rr<Hr?1:6:gv<Hr?Wo<Hr?1:6:yl<Hr?1:6:Zc<Hr?gD<Hr?fi<Hr?1:6:an<Hr?1:6:zc<Hr?os<Hr?1:6:ru<Hr?1:6:bi<Hr?Ur<Hr?Ks<Hr?Dl<Hr?1:6:zf<Hr?1:6:mr<Hr?Zo<Hr?1:6:au<Hr?1:6:Wf<Hr?Ao<Hr?Jt<Hr?1:6:xo<Hr?1:6:Se<Hr?QD<Hr?1:6:Il<Hr?1:6:zn<Hr?Er<Hr?Ps<Hr?br<Hr?wb<Hr?1:6:zt<Hr?1:6:qa<Hr?Pt<Hr?1:6:Wa<Hr?1:6:xc<Hr?ha<Hr?vf<Hr?1:6:Wt<Hr?1:6:$a<Hr?Zr<Hr?1:6:Ql<Hr?1:6:qu<Hr?Ho<Hr?Kr<Hr?ke<Hr?1:6:Uc<Hr?1:6:jn<Hr?rs<Hr?1:6:ua<Hr?1:6:wu<Hr?pf<Hr?uo<Hr?1:6:dk<Hr?1:6:xk<Hr?$<Hr?1:6:wf<Hr?1:6:Io<Hr?Cb<Hr?Y<Hr?hv<Hr?Qn<Hr?Pi<Hr?cn<Hr?1:6:ir<Hr?1:6:Kn<Hr?Ac<Hr?1:6:Ub<Hr?1:6:Gb<Hr?Ls<Hr?Cr<Hr?1:6:tn<Hr?1:6:DD<Hr?Wi<Hr?1:6:If<Hr?1:6:vt<Hr?sa<Hr?e<Hr?Ee<Hr?1:6:tc<Hr?1:6:oo<Hr?Ze<Hr?1:6:ct<Hr?1:6:Mn<Hr?Zs<Hr?gi<Hr?1:6:Bi<Hr?1:6:hf<Hr?dt<Hr?1:6:ps<Hr?1:6:la<Hr?Yv<Hr?Ji<Hr?fe<Hr?as<Hr?1:6:xi<Hr?1:6:ok<Hr?Xo<Hr?1:6:Mu<Hr?1:6:kl<Hr?Fb<Hr?Vf<Hr?1:6:Lf<Hr?1:6:_b<Hr?ov<Hr?1:6:Di<Hr?1:6:Xl<Hr?js<Hr?An<Hr?Mo<Hr?1:6:b<Hr?1:6:Bt<Hr?bD<Hr?1:6:ai<Hr?1:6:Ge<Hr?g<Hr?fc<Hr?1:6:Oe<Hr?1:6:hD<Hr?Pf<Hr?1:6:le<Hr?1:6:Ai<Hr?mf<Hr?qi<Hr?Tr<Hr?KD<Hr?eu<Hr?1:6:cs<Hr?1:6:ID<Hr?Js<Hr?1:6:A<Hr?1:6:Ki<Hr?Ak<Hr?dc<Hr?1:6:$u<Hr?1:6:wr<Hr?Af<Hr?1:6:Rs<Hr?1:6:Ui<Hr?Jf<Hr?eo<Hr?cc<Hr?1:6:yv<Hr?1:6:Vs<Hr?mu<Hr?1:6:Ar<Hr?1:6:ND<Hr?F<Hr?ck<Hr?1:6:Bn<Hr?1:6:_c<Hr?cr<Hr?1:6:Qe<Hr?1:6:nn<Hr?zD<Hr?Ri<Hr?Ma<Hr?ub<Hr?1:6:Hc<Hr?1:6:Es<Hr?Fl<Hr?1:6:be<Hr?1:6:gu<Hr?ja<Hr?nr<Hr?1:6:bu<Hr?1:6:rD<Hr?Br<Hr?1:6:qn<Hr?1:6:oi<Hr?av<Hr?$D<Hr?Ra<Hr?1:6:xu<Hr?1:6:zs<Hr?lt<Hr?1:6:It<Hr?1:6:Qb<Hr?VD<Hr?Fo<Hr?1:6:Do<Hr?1:6:Yb<Hr?Ju<Hr?1:6:Ot<Hr?1:6:aa<Hr?co<Hr?iu<Hr?u<Hr?Nv<Hr?Hi<Hr?Kt<Hr?Os<Hr?1:6:$b<Hr?1:6:C<Hr?Nb<Hr?1:6:Ir<Hr?1:6:_l<Hr?Sf<Hr?$f<Hr?1:6:we<Hr?1:6:iv<Hr?Xt<Hr?1:2:jb<Hr?1:6:tb<Hr?ml<Hr?cv<Hr?hc<Hr?1:6:ht<Hr?1:6:Mk<Hr?Ua<Hr?1:6:rc<Hr?1:6:dl<Hr?wc<Hr?Kl<Hr?1:6:ob<Hr?1:6:ma<Hr?ii<Hr?1:6:Su<Hr?1:6:mt<Hr?ac<Hr?l<Hr?Za<Hr?Ko<Hr?1:6:wn<Hr?1:6:_D<Hr?tv<Hr?1:6:Lk<Hr?1:6:Sc<Hr?Bs<Hr?Fk<Hr?1:6:Sn<Hr?1:6:Ja<Hr?jt<Hr?1:6:zr<Hr?1:6:Xi<Hr?hs<Hr?Ro<Hr?oc<Hr?1:6:eD<Hr?1:6:pt<Hr?nu<Hr?1:6:rk<Hr?1:6:Is<Hr?ui<Hr?ne<Hr?1:6:Da<Hr?1:6:Wu<Hr?Pa<Hr?1:6:Ku<Hr?1:6:Gc<Hr?ab<Hr?Kf<Hr?lf<Hr?Gf<Hr?vD<Hr?1:6:Rl<Hr?1:6:se<Hr?h<Hr?1:6:ze<Hr?1:6:Bc<Hr?Yu<Hr?mi<Hr?1:6:vv<Hr?1:6:li<Hr?Ws<Hr?1:6:fl<Hr?1:6:Ek<Hr?wa<Hr?Va<Hr?uk<Hr?1:6:qr<Hr?1:6:Ni<Hr?Rc<Hr?1:6:Nk<Hr?1:6:L<Hr?bn<Hr?da<Hr?1:6:Ue<Hr?1:6:Xf<Hr?R<Hr?1:6:ho<Hr?1:6:Iu<Hr?Sr<Hr?Ut<Hr?Fr<Hr?Lo<Hr?1:6:Yi<Hr?1:6:ni<Hr?dD<Hr?1:6:vk<Hr?1:6:Xe<Hr?dv<Hr?rt<Hr?1:6:Rk<Hr?1:6:ib<Hr?Qr<Hr?1:6:re<Hr?1:6:Pe<Hr?pk<Hr?i<Hr?Ln<Hr?1:6:ya<Hr?1:6:Wl<Hr?Qc<Hr?1:6:Ts<Hr?1:6:ys<Hr?rv<Hr?LD<Hr?1:6:Kv<Hr?1:6:Wv<Hr?pb<Hr?1:6:WD<Hr?1:6:cu<Hr?Mt<Hr?lu<Hr?Ca<Hr?ms<Hr?Ne<Hr?v<Hr?1:6:fa<Hr?1:6:Tu<Hr?Cv<Hr?1:6:Nc<Hr?1:6:Ec<Hr?tD<Hr?Qo<Hr?1:6:To<Hr?1:6:eb<Hr?tr<Hr?1:6:Du<Hr?1:6:Oo<Hr?Qv<Hr?Ae<Hr?of<Hr?1:6:wt<Hr?1:6:ZD<Hr?rl<Hr?1:6:Kc<Hr?1:6:fu<Hr?fr<Hr?Vb<Hr?1:6:w<Hr?1:6:Go<Hr?Pb<Hr?1:6:Jr<Hr?1:6:Sb<Hr?vr<Hr?dn<Hr?Qu<Hr?ti<Hr?1:6:a<Hr?1:6:go<Hr?Xv<Hr?1:6:sr<Hr?1:6:On<Hr?Je<Hr?Bf<Hr?1:6:_i<Hr?1:6:Ml<Hr?Hn<Hr?1:6:ge<Hr?1:6:El<Hr?io<Hr?$r<Hr?db<Hr?1:2:Fe<Hr?1:6:$l<Hr?oD<Hr?1:6:$e<Hr?1:6:vs<Hr?PD<Hr?nf<Hr?1:6:k<Hr?1:6:BD<Hr?qs<Hr?1:6:qe<Hr?1:6:Jl<Hr?bf<Hr?gb<Hr?jo<Hr?hb<Hr?lD<Hr?1:6:ea<Hr?1:6:dr<Hr?Lr<Hr?1:6:Db<Hr?1:6:Bu<Hr?Yl<Hr?pu<Hr?1:6:mb<Hr?1:6:Wr<Hr?Te<Hr?1:6:yr<Hr?1:6:Ul<Hr?il<Hr?So<Hr?Pu<Hr?1:6:GD<Hr?1:6:Dk<Hr?zl<Hr?1:6:Ba<Hr?1:6:Xc<Hr?Ck<Hr?Ga<Hr?1:6:Ms<Hr?1:6:Iv<Hr?Ik<Hr?1:6:lr<Hr?1:6:on<Hr?n<Hr?hk<Hr?bl<Hr?Pv<Hr?1:6:wl<Hr?1:6:wi<Hr?nk<Hr?1:6:mc<Hr?1:6:ye<Hr?Et<Hr?al<Hr?1:6:fs<Hr?1:6:_u<Hr?ue<Hr?1:6:Zu<Hr?1:6:Qs<Hr?Wb<Hr?ws<Hr?ar<Hr?1:6:mo<Hr?1:6:ae<Hr?Rn<Hr?1:6:nD<Hr?1:6:S<Hr?Ib<Hr?gf<Hr?1:2:fD<Hr?1:2:zi<Hr?Of<Hr?1:3:Ct<Hr?1:2:Cd(Zqr,Hr+1|0)-1|0;if(40<nt>>>0)var ut=Q1r(t);else switch(nt){case 0:ut=78;break;case 1:ut=79;break;case 2:if(K1r(t,1),0===Ant(H1r(t))){for(;;)if(K1r(t,1),0!==Ant(H1r(t))){ut=Q1r(t);break}}else ut=Q1r(t);break;case 3:ut=0;break;case 4:K1r(t,0);ut=0===Gut(H1r(t))?0:Q1r(t);break;case 5:ut=6;break;case 6:K1r(t,47);var at=Jnt(H1r(t));ut=0===at?p(t):1===at?m(t):Q1r(t);break;case 7:if(K1r(t,79),0===hut(H1r(t))){var ft=H1r(t);if(0===(kb<ft?Eu<ft?-1:0:-1))if(0===rat(H1r(t)))if(0===hut(H1r(t))){var st=H1r(t);ut=0===(106<st?107<st?-1:0:-1)&&0===aut(H1r(t))?48:Q1r(t)}else ut=Q1r(t);else ut=Q1r(t);else ut=Q1r(t)}else ut=Q1r(t);break;case 8:ut=72;break;case 9:ut=55;break;case 10:ut=56;break;case 11:K1r(t,69);ut=0===hat(H1r(t))?4:Q1r(t);break;case 12:ut=76;break;case 13:ut=60;break;case 14:K1r(t,77);var bt=Fut(H1r(t));if(3<bt>>>0)ut=Q1r(t);else switch(bt){case 0:for(;;){var kt=Fut(H1r(t));if(3<kt>>>0)ut=Q1r(t);else switch(kt){case 0:continue;case 1:ut=X(t);break;case 2:ut=Mr(t);break;default:ut=Gr(t)}break}break;case 1:ut=X(t);break;case 2:ut=Mr(t);break;default:ut=Gr(t)}break;case 15:K1r(t,58);var yt=jut(H1r(t));ut=0===yt?0===xnt(H1r(t))?57:Q1r(t):1===yt?U(t):Q1r(t);break;case 16:K1r(t,79);var _t=nat(H1r(t));if(0===_t){K1r(t,2);var St=Qnt(H1r(t));if(2<St>>>0)ut=Q1r(t);else switch(St){case 0:for(;;){var xt=Qnt(H1r(t));if(2<xt>>>0)ut=Q1r(t);else switch(xt){case 0:continue;case 1:ut=Vr(t);break;default:ut=Yr(t)}break}break;case 1:ut=Vr(t);break;default:ut=Yr(t)}}else ut=1===_t?5:Q1r(t);break;case 17:K1r(t,30);var Tt=Jut(H1r(t));if(8<Tt>>>0)ut=Q1r(t);else switch(Tt){case 0:ut=y(t);break;case 1:ut=Pr(t);break;case 2:ut=_r(t);break;case 3:ut=Dr(t);break;case 4:ut=rr(t);break;case 5:ut=j(t);break;case 6:ut=W(t);break;case 7:ut=q(t);break;default:ut=ur(t)}break;case 18:K1r(t,30);var At=uut(H1r(t));if(5<At>>>0)ut=Q1r(t);else switch(At){case 0:ut=y(t);break;case 1:ut=Pr(t);break;case 2:ut=Gr(t);break;case 3:ut=j(t);break;case 4:ut=Xr(t);break;default:ut=ur(t)}break;case 19:ut=61;break;case 20:ut=59;break;case 21:ut=65;break;case 22:K1r(t,67);var Nt=H1r(t);ut=0===(61<Nt?62<Nt?-1:0:-1)?74:Q1r(t);break;case 23:ut=66;break;case 24:ut=62;break;case 25:ut=49;break;case 26:if(K1r(t,79),0===dat(H1r(t))){var Rt=Xut(H1r(t));if(0===Rt)ut=0===Pnt(H1r(t))&&0===Pnt(H1r(t))&&0===Pnt(H1r(t))?p(t):Q1r(t);else if(1===Rt)if(0===Pnt(H1r(t)))for(;;){var Gt=Gnt(H1r(t));if(0!==Gt){ut=1===Gt?p(t):Q1r(t);break}}else ut=Q1r(t);else ut=Q1r(t)}else ut=Q1r(t);break;case 27:ut=50;break;case 28:K1r(t,47);var Yt=rut(H1r(t));if(2<Yt>>>0)ut=Q1r(t);else switch(Yt){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var $t=yut(H1r(t));if(2<$t>>>0)ut=Q1r(t);else switch($t){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,31);var Qt=Jnt(H1r(t));ut=0===Qt?p(t):1===Qt?m(t):Q1r(t)}}break;case 29:K1r(t,47);var te=Dat(H1r(t));if(3<te>>>0)ut=Q1r(t);else switch(te){case 0:ut=p(t);break;case 1:ut=m(t);break;case 2:K1r(t,47);var ee=Rnt(H1r(t));if(2<ee>>>0)ut=Q1r(t);else switch(ee){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var ce=bat(H1r(t));if(2<ce>>>0)ut=Q1r(t);else switch(ce){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var oe=rut(H1r(t));if(2<oe>>>0)ut=Q1r(t);else switch(oe){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var he=Yut(H1r(t));if(2<he>>>0)ut=Q1r(t);else switch(he){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,41);var Ce=Jnt(H1r(t));ut=0===Ce?p(t):1===Ce?m(t):Q1r(t)}}}}break;default:K1r(t,47);var xe=oat(H1r(t));if(2<xe>>>0)ut=Q1r(t);else switch(xe){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Be=_ut(H1r(t));if(2<Be>>>0)ut=Q1r(t);else switch(Be){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,32);var Ie=Bnt(H1r(t));if(2<Ie>>>0)ut=Q1r(t);else switch(Ie){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Le=fut(H1r(t));if(2<Le>>>0)ut=Q1r(t);else switch(Le){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Re=rut(H1r(t));if(2<Re>>>0)ut=Q1r(t);else switch(Re){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,33);var Me=Jnt(H1r(t));ut=0===Me?p(t):1===Me?m(t):Q1r(t)}}}}}}break;case 30:K1r(t,47);var je=H1r(t),Ke=35<je?Al<je?ie<je?Qf<je?-1:Cl<je?Zt<je?Ea<je?pi<je?ds<je?pv<je?Or<je?He<je?0:-1:0:-1:ro<je?vc<je?0:-1:0:-1:Ob<je?sk<je?wv<je?Bl<je?0:-1:0:-1:me<je?ta<je?0:-1:0:-1:Os<je?gs<je?Gs<je?nv<je?Il<je?Se<je?Un<je?We<je?rf<je?ek<je?_s<je?MD<je?$i<je?Uo<je?sn<je?yD<je?0:-1:0:-1:Wc<je?Hu<je?0:-1:0:-1:Ic<je?it<je?Jo<je?ec<je?0:-1:0:-1:ol<je?zv<je?0:-1:0:-1:x<je?_v<je?Sv<je?Q<je?yf<je?ln<je?0:-1:0:-1:Vt<je?rb<je?0:-1:0:-1:Po<je?Gu<je?Jc<je?qt<je?0:-1:0:-1:Ei<je?Hs<je?0:-1:0:-1:Dl<je?jc<je?fi<je?tt<je?Wo<je?uc<je?Rr<je?Nu<je?0:-1:0:-1:yl<je?gv<je?0:-1:0:-1:os<je?Zc<je?an<je?gD<je?0:-1:0:-1:ru<je?zc<je?0:-1:0:-1:Jt<je?bi<je?Zo<je?Ur<je?zf<je?Ks<je?0:-1:0:-1:au<je?mr<je?0:-1:0:-1:xD<je?Wf<je?xo<je?Ao<je?0:-1:0:-1:QD<je?AD<je?0:-1:0:-1:wf<je?xk<je?Ql<je?$a<je?Wa<je?qa<je?zt<je?br<je?wb<je?qc<je?0:-1:0:-1:Pt<je?Ps<je?0:-1:0:-1:Wt<je?ha<je?vf<je?Er<je?0:-1:0:-1:Zr<je?xc<je?0:-1:0:-1:ua<je?jn<je?Uc<je?Kr<je?ke<je?zn<je?0:-1:0:-1:rs<je?Ho<je?0:-1:0:-1:dk<je?pf<je?uo<je?qu<je?0:-1:0:-1:$<je?wu<je?0:-1:0:-1:If<je?DD<je?Ub<je?Kn<je?ir<je?Pi<je?cn<je?Co<je?0:-1:0:-1:Ac<je?Qn<je?0:-1:0:-1:tn<je?Ls<je?Cr<je?hv<je?0:-1:0:-1:Wi<je?Gb<je?0:-1:0:-1:ct<je?oo<je?tc<je?e<je?Ee<je?Y<je?0:-1:0:-1:Ze<je?sa<je?0:-1:0:-1:sf<je?Ha<je?Uf<je?vt<je?0:-1:0:-1:La<je?Fv<je?0:-1:0:-1:ao<je?o<je?vu<je?Zn<je?xi<je?fe<je?Bi<je?Zs<je?HD<je?zo<je?pe<je?Tk<je?0:-1:0:-1:gi<je?ts<je?0:-1:0:-1:ps<je?hf<je?As<je?pa<je?0:-1:0:-1:as<je?Cb<je?0:-1:0:-1:jf<je?gt<je?Mu<je?ok<je?Xo<je?Ji<je?0:-1:0:-1:D<je?Yv<je?0:-1:0:-1:Lf<je?$s<je?Vl<je?Fb<je?0:-1:0:-1:Ab<je?ED<je?0:-1:0:-1:Oe<je?g<je?wk<je?Dv<je?Mo<je?_<je?Ti<je?Ve<je?0:-1:0:-1:Hl<je?An<je?0:-1:0:-1:ai<je?Hb<je?Yf<je?er<je?0:-1:0:-1:fc<je?Xl<je?0:-1:0:-1:Bv<je?_e<je?le<je?hD<je?Pf<je?Ge<je?0:-1:0:-1:Dt<je?Io<je?0:-1:0:-1:cs<je?KD<je?eu<je?hi<je?0:-1:0:-1:Js<je?Tr<je?0:-1:0:-1:Hc<je?Ma<je?mu<je?Jf<je?Af<je?Ki<je?dc<je?qi<je?hu<je?Aa<je?0:-1:0:-1:$u<je?Ak<je?0:-1:0:-1:cc<je?mf<je?Rs<je?wr<je?0:-1:0:-1:yv<je?eo<je?0:-1:0:-1:jr<je?ND<je?ck<je?Ui<je?Ar<je?Vs<je?0:-1:0:-1:Bn<je?F<je?0:-1:0:-1:Qe<je?_c<je?cr<je?Vv<je?0:-1:0:-1:ub<je?Ai<je?0:-1:0:-1:Ra<je?nn<je?bu<je?ja<je?be<je?Es<je?Fl<je?Ri<je?0:-1:0:-1:nr<je?zD<je?0:-1:0:-1:Vc<je?rD<je?Br<je?gu<je?0:-1:0:-1:qn<je?iD<je?0:-1:0:-1:Fo<je?oi<je?lt<je?av<je?xu<je?$D<je?0:-1:0:-1:It<je?zs<je?0:-1:0:-1:Ju<je?Qb<je?Do<je?VD<je?0:-1:0:-1:Ot<je?Yb<je?0:-1:0:-1:fa<je?Ne<je?Sl<je?Xi<je?rc<je?Mk<je?jb<je?ri<je?$f<je?Nv<je?Nb<je?Hi<je?$b<je?Kt<je?0:-1:0:-1:Ir<je?C<je?0:-1:0:-1:we<je?Ht<je?Lt<je?Sf<je?0:-1:0:-1:bk<je?_l<je?0:-1:0:-1:Uv<je?gc<je?gr<je?cv<je?hc<je?u<je?0:-1:0:-1:et<je?uv<je?0:-1:0:-1:ht<je?Bk<je?Ds<je?zb<je?0:-1:0:-1:Ua<je?ml<je?0:-1:0:-1:Lk<je?_D<je?Su<je?ma<je?ob<je?wc<je?Kl<je?tb<je?0:-1:0:-1:ii<je?dl<je?0:-1:0:-1:wn<je?Za<je?Ko<je?iu<je?0:-1:0:-1:tv<je?l<je?0:-1:0:-1:oc<je?mt<je?jt<je?Sc<je?Sn<je?Bs<je?0:-1:0:-1:zr<je?Ja<je?0:-1:0:-1:nu<je?hs<je?eD<je?Ro<je?0:-1:0:-1:rk<je?pt<je?0:-1:0:-1:Gv<je?Xf<je?ca<je?lf<je?Pa<je?Is<je?c<je?Bb<je?nb<je?T<je?0:-1:0:-1:Da<je?ui<je?0:-1:0:-1:vD<je?co<je?Ku<je?Wu<je?0:-1:0:-1:Rl<je?Gf<je?0:-1:0:-1:du<je?Ni<je?mi<je?Kf<je?hl<je?se<je?0:-1:0:-1:vv<je?Yu<je?0:-1:0:-1:$n<je?bn<je?da<je?Ek<je?0:-1:0:-1:d<je?oa<je?0:-1:0:-1:Mf<je?ul<je?TD<je?ni<je?mv<je?Fr<je?lk<je?Gc<je?0:-1:0:-1:dD<je?H<je?0:-1:0:-1:Rk<je?ji<je?yn<je?Sr<je?0:-1:0:-1:Qr<je?Xe<je?0:-1:0:-1:Kv<je?rv<je?Ln<je?gl<je?OD<je?P<je?0:-1:0:-1:Lc<je?i<je?0:-1:0:-1:WD<je?Wv<je?pb<je?ys<je?0:-1:0:-1:v<je?aa<je?0:-1:0:-1:ea<je?hb<je?a<je?Qu<je?wt<je?Ae<je?Nr<je?xr<je?Nc<je?kD<je?ve<je?ms<je?0:-1:0:-1:nc<je?Ca<je?0:-1:0:-1:Du<je?eb<je?To<je?tD<je?0:-1:0:-1:of<je?lu<je?0:-1:0:-1:w<je?fr<je?Kc<je?ZD<je?rl<je?Qv<je?0:-1:0:-1:Vb<je?Oo<je?0:-1:0:-1:Jr<je?Go<je?Pb<je?fu<je?0:-1:0:-1:ti<je?Mt<je?0:-1:0:-1:Fe<je?Mi<je?_i<je?Je<je?sr<je?Ol<je?Xv<je?dn<je?0:-1:0:-1:Bf<je?vr<je?0:-1:0:-1:ge<je?Ml<je?Jn<je?On<je?0:-1:0:-1:Cc<je?Sb<je?0:-1:0:-1:k<je?PD<je?$e<je?$l<je?oD<je?io<je?0:-1:0:-1:nf<je?El<je?0:-1:0:-1:qe<je?BD<je?qs<je?vs<je?0:-1:0:-1:lD<je?cu<je?0:-1:0:-1:nk<je?hk<je?zl<je?il<je?mb<je?Yl<je?Db<je?dr<je?Lr<je?fb<je?0:-1:0:-1:pu<je?gb<je?0:-1:0:-1:yr<je?Wr<je?Te<je?Bu<je?0:-1:0:-1:GD<je?So<je?0:-1:0:-1:Ik<je?Xc<je?Ga<je?Ul<je?Ba<je?Dk<je?0:-1:0:-1:Ms<je?Ck<je?0:-1:0:-1:Pv<je?Jl<je?lr<je?Iv<je?0:-1:0:-1:wl<je?bl<je?0:-1:0:-1:ot<je?Vo<je?ue<je?ye<je?al<je?n<je?mc<je?wi<je?0:-1:0:-1:fs<je?Et<je?0:-1:0:-1:ar<je?on<je?Zu<je?_u<je?0:-1:0:-1:$v<je?ws<je?0:-1:0:-1:nD<je?ae<je?mo<je?Yn<je?Df<je?Ye<je?0:-1:0:-1:Rn<je?Wb<je?0:-1:0:-1:pl<je?vi<je?JD<je?Qs<je?0:-1:0:-1:Fc<je?Ft<je?0:-1:0:-1:Cd(vqr,je+aD|0)-1|0:-1;if(3<Ke>>>0)ut=Q1r(t);else switch(Ke){case 0:ut=p(t);break;case 1:ut=m(t);break;case 2:K1r(t,47);var rn=Unt(H1r(t));if(2<rn>>>0)ut=Q1r(t);else switch(rn){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var en=Yut(H1r(t));if(2<en>>>0)ut=Q1r(t);else switch(en){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var un=yut(H1r(t));if(2<un>>>0)ut=Q1r(t);else switch(un){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,34);var fn=Jnt(H1r(t));ut=0===fn?p(t):1===fn?m(t):Q1r(t)}}}break;default:K1r(t,47);var vn=Yut(H1r(t));if(2<vn>>>0)ut=Q1r(t);else switch(vn){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Dn=Bnt(H1r(t));if(2<Dn>>>0)ut=Q1r(t);else switch(Dn){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var kn=rut(H1r(t));if(2<kn>>>0)ut=Q1r(t);else switch(kn){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var pn=Ont(H1r(t));if(2<pn>>>0)ut=Q1r(t);else switch(pn){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var hn=cat(H1r(t));if(2<hn>>>0)ut=Q1r(t);else switch(hn){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,35);var mn=Jnt(H1r(t));ut=0===mn?p(t):1===mn?m(t):Q1r(t)}}}}}}break;case 31:K1r(t,47);var Fn=fut(H1r(t));if(2<Fn>>>0)ut=Q1r(t);else switch(Fn){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var En=_ut(H1r(t));if(2<En>>>0)ut=Q1r(t);else switch(En){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var _n=cat(H1r(t));if(2<_n>>>0)ut=Q1r(t);else switch(_n){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var gn=Bnt(H1r(t));if(2<gn>>>0)ut=Q1r(t);else switch(gn){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,36);var Cn=Jnt(H1r(t));ut=0===Cn?p(t):1===Cn?m(t):Q1r(t)}}}}break;case 32:K1r(t,47);var xn=rut(H1r(t));if(2<xn>>>0)ut=Q1r(t);else switch(xn){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Tn=Yut(H1r(t));if(2<Tn>>>0)ut=Q1r(t);else switch(Tn){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var In=Bnt(H1r(t));if(2<In>>>0)ut=Q1r(t);else switch(In){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Pn=vut(H1r(t));if(2<Pn>>>0)ut=Q1r(t);else switch(Pn){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Nn=sat(H1r(t));if(2<Nn>>>0)ut=Q1r(t);else switch(Nn){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Xn=fut(H1r(t));if(2<Xn>>>0)ut=Q1r(t);else switch(Xn){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Vn=Lut(H1r(t));if(2<Vn>>>0)ut=Q1r(t);else switch(Vn){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Wn=Bnt(H1r(t));if(2<Wn>>>0)ut=Q1r(t);else switch(Wn){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,37);var tu=Jnt(H1r(t));ut=0===tu?p(t):1===tu?m(t):Q1r(t)}}}}}}}}break;case 33:K1r(t,47);var uu=bat(H1r(t));if(2<uu>>>0)ut=Q1r(t);else switch(uu){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var su=H1r(t),ou=35<su?Al<su?ie<su?Qf<su?-1:Cl<su?Zt<su?Ea<su?pi<su?ds<su?pv<su?Or<su?He<su?0:-1:0:-1:ro<su?vc<su?0:-1:0:-1:Ob<su?sk<su?wv<su?Bl<su?0:-1:0:-1:me<su?ta<su?0:-1:0:-1:Os<su?gs<su?Gs<su?nv<su?Il<su?Se<su?Un<su?We<su?rf<su?ek<su?_s<su?MD<su?$i<su?Uo<su?sn<su?yD<su?0:-1:0:-1:Wc<su?Hu<su?0:-1:0:-1:Ic<su?it<su?Jo<su?ec<su?0:-1:0:-1:ol<su?zv<su?0:-1:0:-1:x<su?_v<su?Sv<su?Q<su?yf<su?ln<su?0:-1:0:-1:Vt<su?rb<su?0:-1:0:-1:Po<su?Gu<su?Jc<su?qt<su?0:-1:0:-1:Ei<su?Hs<su?0:-1:0:-1:Dl<su?jc<su?fi<su?tt<su?Wo<su?uc<su?Rr<su?Nu<su?0:-1:0:-1:yl<su?gv<su?0:-1:0:-1:os<su?Zc<su?an<su?gD<su?0:-1:0:-1:ru<su?zc<su?0:-1:0:-1:Jt<su?bi<su?Zo<su?Ur<su?zf<su?Ks<su?0:-1:0:-1:au<su?mr<su?0:-1:0:-1:xD<su?Wf<su?xo<su?Ao<su?0:-1:0:-1:QD<su?AD<su?0:-1:0:-1:wf<su?xk<su?Ql<su?$a<su?Wa<su?qa<su?zt<su?br<su?wb<su?qc<su?0:-1:0:-1:Pt<su?Ps<su?0:-1:0:-1:Wt<su?ha<su?vf<su?Er<su?0:-1:0:-1:Zr<su?xc<su?0:-1:0:-1:ua<su?jn<su?Uc<su?Kr<su?ke<su?zn<su?0:-1:0:-1:rs<su?Ho<su?0:-1:0:-1:dk<su?pf<su?uo<su?qu<su?0:-1:0:-1:$<su?wu<su?0:-1:0:-1:If<su?DD<su?Ub<su?Kn<su?ir<su?Pi<su?cn<su?Co<su?0:-1:0:-1:Ac<su?Qn<su?0:-1:0:-1:tn<su?Ls<su?Cr<su?hv<su?0:-1:0:-1:Wi<su?Gb<su?0:-1:0:-1:ct<su?oo<su?tc<su?e<su?Ee<su?Y<su?0:-1:0:-1:Ze<su?sa<su?0:-1:0:-1:sf<su?Ha<su?Uf<su?vt<su?0:-1:0:-1:La<su?Fv<su?0:-1:0:-1:ao<su?o<su?vu<su?Zn<su?xi<su?fe<su?Bi<su?Zs<su?HD<su?zo<su?pe<su?Tk<su?0:-1:0:-1:gi<su?ts<su?0:-1:0:-1:ps<su?hf<su?As<su?pa<su?0:-1:0:-1:as<su?Cb<su?0:-1:0:-1:jf<su?gt<su?Mu<su?ok<su?Xo<su?Ji<su?0:-1:0:-1:D<su?Yv<su?0:-1:0:-1:Lf<su?$s<su?Vl<su?Fb<su?0:-1:0:-1:Ab<su?ED<su?0:-1:0:-1:Oe<su?g<su?wk<su?Dv<su?Mo<su?_<su?Ti<su?Ve<su?0:-1:0:-1:Hl<su?An<su?0:-1:0:-1:ai<su?Hb<su?Yf<su?er<su?0:-1:0:-1:fc<su?Xl<su?0:-1:0:-1:Bv<su?_e<su?le<su?hD<su?Pf<su?Ge<su?0:-1:0:-1:Dt<su?Io<su?0:-1:0:-1:cs<su?KD<su?eu<su?hi<su?0:-1:0:-1:Js<su?Tr<su?0:-1:0:-1:Hc<su?Ma<su?mu<su?Jf<su?Af<su?Ki<su?dc<su?qi<su?hu<su?Aa<su?0:-1:0:-1:$u<su?Ak<su?0:-1:0:-1:cc<su?mf<su?Rs<su?wr<su?0:-1:0:-1:yv<su?eo<su?0:-1:0:-1:jr<su?ND<su?ck<su?Ui<su?Ar<su?Vs<su?0:-1:0:-1:Bn<su?F<su?0:-1:0:-1:Qe<su?_c<su?cr<su?Vv<su?0:-1:0:-1:ub<su?Ai<su?0:-1:0:-1:Ra<su?nn<su?bu<su?ja<su?be<su?Es<su?Fl<su?Ri<su?0:-1:0:-1:nr<su?zD<su?0:-1:0:-1:Vc<su?rD<su?Br<su?gu<su?0:-1:0:-1:qn<su?iD<su?0:-1:0:-1:Fo<su?oi<su?lt<su?av<su?xu<su?$D<su?0:-1:0:-1:It<su?zs<su?0:-1:0:-1:Ju<su?Qb<su?Do<su?VD<su?0:-1:0:-1:Ot<su?Yb<su?0:-1:0:-1:fa<su?Ne<su?Sl<su?Xi<su?rc<su?Mk<su?jb<su?ri<su?$f<su?Nv<su?Nb<su?Hi<su?$b<su?Kt<su?0:-1:0:-1:Ir<su?C<su?0:-1:0:-1:we<su?Ht<su?Lt<su?Sf<su?0:-1:0:-1:bk<su?_l<su?0:-1:0:-1:Uv<su?gc<su?gr<su?cv<su?hc<su?u<su?0:-1:0:-1:et<su?uv<su?0:-1:0:-1:ht<su?Bk<su?Ds<su?zb<su?0:-1:0:-1:Ua<su?ml<su?0:-1:0:-1:Lk<su?_D<su?Su<su?ma<su?ob<su?wc<su?Kl<su?tb<su?0:-1:0:-1:ii<su?dl<su?0:-1:0:-1:wn<su?Za<su?Ko<su?iu<su?0:-1:0:-1:tv<su?l<su?0:-1:0:-1:oc<su?mt<su?jt<su?Sc<su?Sn<su?Bs<su?0:-1:0:-1:zr<su?Ja<su?0:-1:0:-1:nu<su?hs<su?eD<su?Ro<su?0:-1:0:-1:rk<su?pt<su?0:-1:0:-1:Gv<su?Xf<su?ca<su?lf<su?Pa<su?Is<su?c<su?Bb<su?nb<su?T<su?0:-1:0:-1:Da<su?ui<su?0:-1:0:-1:vD<su?co<su?Ku<su?Wu<su?0:-1:0:-1:Rl<su?Gf<su?0:-1:0:-1:du<su?Ni<su?mi<su?Kf<su?hl<su?se<su?0:-1:0:-1:vv<su?Yu<su?0:-1:0:-1:$n<su?bn<su?da<su?Ek<su?0:-1:0:-1:d<su?oa<su?0:-1:0:-1:Mf<su?ul<su?TD<su?ni<su?mv<su?Fr<su?lk<su?Gc<su?0:-1:0:-1:dD<su?H<su?0:-1:0:-1:Rk<su?ji<su?yn<su?Sr<su?0:-1:0:-1:Qr<su?Xe<su?0:-1:0:-1:Kv<su?rv<su?Ln<su?gl<su?OD<su?P<su?0:-1:0:-1:Lc<su?i<su?0:-1:0:-1:WD<su?Wv<su?pb<su?ys<su?0:-1:0:-1:v<su?aa<su?0:-1:0:-1:ea<su?hb<su?a<su?Qu<su?wt<su?Ae<su?Nr<su?xr<su?Nc<su?kD<su?ve<su?ms<su?0:-1:0:-1:nc<su?Ca<su?0:-1:0:-1:Du<su?eb<su?To<su?tD<su?0:-1:0:-1:of<su?lu<su?0:-1:0:-1:w<su?fr<su?Kc<su?ZD<su?rl<su?Qv<su?0:-1:0:-1:Vb<su?Oo<su?0:-1:0:-1:Jr<su?Go<su?Pb<su?fu<su?0:-1:0:-1:ti<su?Mt<su?0:-1:0:-1:Fe<su?Mi<su?_i<su?Je<su?sr<su?Ol<su?Xv<su?dn<su?0:-1:0:-1:Bf<su?vr<su?0:-1:0:-1:ge<su?Ml<su?Jn<su?On<su?0:-1:0:-1:Cc<su?Sb<su?0:-1:0:-1:k<su?PD<su?$e<su?$l<su?oD<su?io<su?0:-1:0:-1:nf<su?El<su?0:-1:0:-1:qe<su?BD<su?qs<su?vs<su?0:-1:0:-1:lD<su?cu<su?0:-1:0:-1:nk<su?hk<su?zl<su?il<su?mb<su?Yl<su?Db<su?dr<su?Lr<su?fb<su?0:-1:0:-1:pu<su?gb<su?0:-1:0:-1:yr<su?Wr<su?Te<su?Bu<su?0:-1:0:-1:GD<su?So<su?0:-1:0:-1:Ik<su?Xc<su?Ga<su?Ul<su?Ba<su?Dk<su?0:-1:0:-1:Ms<su?Ck<su?0:-1:0:-1:Pv<su?Jl<su?lr<su?Iv<su?0:-1:0:-1:wl<su?bl<su?0:-1:0:-1:ot<su?Vo<su?ue<su?ye<su?al<su?n<su?mc<su?wi<su?0:-1:0:-1:fs<su?Et<su?0:-1:0:-1:ar<su?on<su?Zu<su?_u<su?0:-1:0:-1:$v<su?ws<su?0:-1:0:-1:nD<su?ae<su?mo<su?Yn<su?Df<su?Ye<su?0:-1:0:-1:Rn<su?Wb<su?0:-1:0:-1:pl<su?vi<su?JD<su?Qs<su?0:-1:0:-1:Fc<su?Ft<su?0:-1:0:-1:Cd(tqr,su+aD|0)-1|0:-1;if(2<ou>>>0)ut=Q1r(t);else switch(ou){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var ku=Bnt(H1r(t));if(2<ku>>>0)ut=Q1r(t);else switch(ku){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Fu=Ont(H1r(t));if(2<Fu>>>0)ut=Q1r(t);else switch(Fu){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,38);var yu=Jnt(H1r(t));ut=0===yu?p(t):1===yu?m(t):Q1r(t)}}}}break;case 34:K1r(t,47);var Cu=Tnt(H1r(t));if(2<Cu>>>0)ut=Q1r(t);else switch(Cu){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Au=H1r(t),Ou=35<Au?Al<Au?ie<Au?Qf<Au?-1:Cl<Au?Zt<Au?Ea<Au?pi<Au?ds<Au?pv<Au?Or<Au?He<Au?0:-1:0:-1:ro<Au?vc<Au?0:-1:0:-1:Ob<Au?sk<Au?wv<Au?Bl<Au?0:-1:0:-1:me<Au?ta<Au?0:-1:0:-1:Os<Au?gs<Au?Gs<Au?nv<Au?Il<Au?Se<Au?Un<Au?We<Au?rf<Au?ek<Au?_s<Au?MD<Au?$i<Au?Uo<Au?sn<Au?yD<Au?0:-1:0:-1:Wc<Au?Hu<Au?0:-1:0:-1:Ic<Au?it<Au?Jo<Au?ec<Au?0:-1:0:-1:ol<Au?zv<Au?0:-1:0:-1:x<Au?_v<Au?Sv<Au?Q<Au?yf<Au?ln<Au?0:-1:0:-1:Vt<Au?rb<Au?0:-1:0:-1:Po<Au?Gu<Au?Jc<Au?qt<Au?0:-1:0:-1:Ei<Au?Hs<Au?0:-1:0:-1:Dl<Au?jc<Au?fi<Au?tt<Au?Wo<Au?uc<Au?Rr<Au?Nu<Au?0:-1:0:-1:yl<Au?gv<Au?0:-1:0:-1:os<Au?Zc<Au?an<Au?gD<Au?0:-1:0:-1:ru<Au?zc<Au?0:-1:0:-1:Jt<Au?bi<Au?Zo<Au?Ur<Au?zf<Au?Ks<Au?0:-1:0:-1:au<Au?mr<Au?0:-1:0:-1:xD<Au?Wf<Au?xo<Au?Ao<Au?0:-1:0:-1:QD<Au?AD<Au?0:-1:0:-1:wf<Au?xk<Au?Ql<Au?$a<Au?Wa<Au?qa<Au?zt<Au?br<Au?wb<Au?qc<Au?0:-1:0:-1:Pt<Au?Ps<Au?0:-1:0:-1:Wt<Au?ha<Au?vf<Au?Er<Au?0:-1:0:-1:Zr<Au?xc<Au?0:-1:0:-1:ua<Au?jn<Au?Uc<Au?Kr<Au?ke<Au?zn<Au?0:-1:0:-1:rs<Au?Ho<Au?0:-1:0:-1:dk<Au?pf<Au?uo<Au?qu<Au?0:-1:0:-1:$<Au?wu<Au?0:-1:0:-1:If<Au?DD<Au?Ub<Au?Kn<Au?ir<Au?Pi<Au?cn<Au?Co<Au?0:-1:0:-1:Ac<Au?Qn<Au?0:-1:0:-1:tn<Au?Ls<Au?Cr<Au?hv<Au?0:-1:0:-1:Wi<Au?Gb<Au?0:-1:0:-1:ct<Au?oo<Au?tc<Au?e<Au?Ee<Au?Y<Au?0:-1:0:-1:Ze<Au?sa<Au?0:-1:0:-1:sf<Au?Ha<Au?Uf<Au?vt<Au?0:-1:0:-1:La<Au?Fv<Au?0:-1:0:-1:ao<Au?o<Au?vu<Au?Zn<Au?xi<Au?fe<Au?Bi<Au?Zs<Au?HD<Au?zo<Au?pe<Au?Tk<Au?0:-1:0:-1:gi<Au?ts<Au?0:-1:0:-1:ps<Au?hf<Au?As<Au?pa<Au?0:-1:0:-1:as<Au?Cb<Au?0:-1:0:-1:jf<Au?gt<Au?Mu<Au?ok<Au?Xo<Au?Ji<Au?0:-1:0:-1:D<Au?Yv<Au?0:-1:0:-1:Lf<Au?$s<Au?Vl<Au?Fb<Au?0:-1:0:-1:Ab<Au?ED<Au?0:-1:0:-1:Oe<Au?g<Au?wk<Au?Dv<Au?Mo<Au?_<Au?Ti<Au?Ve<Au?0:-1:0:-1:Hl<Au?An<Au?0:-1:0:-1:ai<Au?Hb<Au?Yf<Au?er<Au?0:-1:0:-1:fc<Au?Xl<Au?0:-1:0:-1:Bv<Au?_e<Au?le<Au?hD<Au?Pf<Au?Ge<Au?0:-1:0:-1:Dt<Au?Io<Au?0:-1:0:-1:cs<Au?KD<Au?eu<Au?hi<Au?0:-1:0:-1:Js<Au?Tr<Au?0:-1:0:-1:Hc<Au?Ma<Au?mu<Au?Jf<Au?Af<Au?Ki<Au?dc<Au?qi<Au?hu<Au?Aa<Au?0:-1:0:-1:$u<Au?Ak<Au?0:-1:0:-1:cc<Au?mf<Au?Rs<Au?wr<Au?0:-1:0:-1:yv<Au?eo<Au?0:-1:0:-1:jr<Au?ND<Au?ck<Au?Ui<Au?Ar<Au?Vs<Au?0:-1:0:-1:Bn<Au?F<Au?0:-1:0:-1:Qe<Au?_c<Au?cr<Au?Vv<Au?0:-1:0:-1:ub<Au?Ai<Au?0:-1:0:-1:Ra<Au?nn<Au?bu<Au?ja<Au?be<Au?Es<Au?Fl<Au?Ri<Au?0:-1:0:-1:nr<Au?zD<Au?0:-1:0:-1:Vc<Au?rD<Au?Br<Au?gu<Au?0:-1:0:-1:qn<Au?iD<Au?0:-1:0:-1:Fo<Au?oi<Au?lt<Au?av<Au?xu<Au?$D<Au?0:-1:0:-1:It<Au?zs<Au?0:-1:0:-1:Ju<Au?Qb<Au?Do<Au?VD<Au?0:-1:0:-1:Ot<Au?Yb<Au?0:-1:0:-1:fa<Au?Ne<Au?Sl<Au?Xi<Au?rc<Au?Mk<Au?jb<Au?ri<Au?$f<Au?Nv<Au?Nb<Au?Hi<Au?$b<Au?Kt<Au?0:-1:0:-1:Ir<Au?C<Au?0:-1:0:-1:we<Au?Ht<Au?Lt<Au?Sf<Au?0:-1:0:-1:bk<Au?_l<Au?0:-1:0:-1:Uv<Au?gc<Au?gr<Au?cv<Au?hc<Au?u<Au?0:-1:0:-1:et<Au?uv<Au?0:-1:0:-1:ht<Au?Bk<Au?Ds<Au?zb<Au?0:-1:0:-1:Ua<Au?ml<Au?0:-1:0:-1:Lk<Au?_D<Au?Su<Au?ma<Au?ob<Au?wc<Au?Kl<Au?tb<Au?0:-1:0:-1:ii<Au?dl<Au?0:-1:0:-1:wn<Au?Za<Au?Ko<Au?iu<Au?0:-1:0:-1:tv<Au?l<Au?0:-1:0:-1:oc<Au?mt<Au?jt<Au?Sc<Au?Sn<Au?Bs<Au?0:-1:0:-1:zr<Au?Ja<Au?0:-1:0:-1:nu<Au?hs<Au?eD<Au?Ro<Au?0:-1:0:-1:rk<Au?pt<Au?0:-1:0:-1:Gv<Au?Xf<Au?ca<Au?lf<Au?Pa<Au?Is<Au?c<Au?Bb<Au?nb<Au?T<Au?0:-1:0:-1:Da<Au?ui<Au?0:-1:0:-1:vD<Au?co<Au?Ku<Au?Wu<Au?0:-1:0:-1:Rl<Au?Gf<Au?0:-1:0:-1:du<Au?Ni<Au?mi<Au?Kf<Au?hl<Au?se<Au?0:-1:0:-1:vv<Au?Yu<Au?0:-1:0:-1:$n<Au?bn<Au?da<Au?Ek<Au?0:-1:0:-1:d<Au?oa<Au?0:-1:0:-1:Mf<Au?ul<Au?TD<Au?ni<Au?mv<Au?Fr<Au?lk<Au?Gc<Au?0:-1:0:-1:dD<Au?H<Au?0:-1:0:-1:Rk<Au?ji<Au?yn<Au?Sr<Au?0:-1:0:-1:Qr<Au?Xe<Au?0:-1:0:-1:Kv<Au?rv<Au?Ln<Au?gl<Au?OD<Au?P<Au?0:-1:0:-1:Lc<Au?i<Au?0:-1:0:-1:WD<Au?Wv<Au?pb<Au?ys<Au?0:-1:0:-1:v<Au?aa<Au?0:-1:0:-1:ea<Au?hb<Au?a<Au?Qu<Au?wt<Au?Ae<Au?Nr<Au?xr<Au?Nc<Au?kD<Au?ve<Au?ms<Au?0:-1:0:-1:nc<Au?Ca<Au?0:-1:0:-1:Du<Au?eb<Au?To<Au?tD<Au?0:-1:0:-1:of<Au?lu<Au?0:-1:0:-1:w<Au?fr<Au?Kc<Au?ZD<Au?rl<Au?Qv<Au?0:-1:0:-1:Vb<Au?Oo<Au?0:-1:0:-1:Jr<Au?Go<Au?Pb<Au?fu<Au?0:-1:0:-1:ti<Au?Mt<Au?0:-1:0:-1:Fe<Au?Mi<Au?_i<Au?Je<Au?sr<Au?Ol<Au?Xv<Au?dn<Au?0:-1:0:-1:Bf<Au?vr<Au?0:-1:0:-1:ge<Au?Ml<Au?Jn<Au?On<Au?0:-1:0:-1:Cc<Au?Sb<Au?0:-1:0:-1:k<Au?PD<Au?$e<Au?$l<Au?oD<Au?io<Au?0:-1:0:-1:nf<Au?El<Au?0:-1:0:-1:qe<Au?BD<Au?qs<Au?vs<Au?0:-1:0:-1:lD<Au?cu<Au?0:-1:0:-1:nk<Au?hk<Au?zl<Au?il<Au?mb<Au?Yl<Au?Db<Au?dr<Au?Lr<Au?fb<Au?0:-1:0:-1:pu<Au?gb<Au?0:-1:0:-1:yr<Au?Wr<Au?Te<Au?Bu<Au?0:-1:0:-1:GD<Au?So<Au?0:-1:0:-1:Ik<Au?Xc<Au?Ga<Au?Ul<Au?Ba<Au?Dk<Au?0:-1:0:-1:Ms<Au?Ck<Au?0:-1:0:-1:Pv<Au?Jl<Au?lr<Au?Iv<Au?0:-1:0:-1:wl<Au?bl<Au?0:-1:0:-1:ot<Au?Vo<Au?ue<Au?ye<Au?al<Au?n<Au?mc<Au?wi<Au?0:-1:0:-1:fs<Au?Et<Au?0:-1:0:-1:ar<Au?on<Au?Zu<Au?_u<Au?0:-1:0:-1:$v<Au?ws<Au?0:-1:0:-1:nD<Au?ae<Au?mo<Au?Yn<Au?Df<Au?Ye<Au?0:-1:0:-1:Rn<Au?Wb<Au?0:-1:0:-1:pl<Au?vi<Au?JD<Au?Qs<Au?0:-1:0:-1:Fc<Au?Ft<Au?0:-1:0:-1:Cd(Cqr,Au+aD|0)-1|0:-1;if(3<Ou>>>0)ut=Q1r(t);else switch(Ou){case 0:ut=p(t);break;case 1:ut=m(t);break;case 2:K1r(t,47);var Lu=_ut(H1r(t));if(2<Lu>>>0)ut=Q1r(t);else switch(Lu){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,39);var Ru=Jnt(H1r(t));ut=0===Ru?p(t):1===Ru?m(t):Q1r(t)}break;default:K1r(t,47);var Uu=Qut(H1r(t));if(2<Uu>>>0)ut=Q1r(t);else switch(Uu){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Xu=Bnt(H1r(t));if(2<Xu>>>0)ut=Q1r(t);else switch(Xu){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var zu=vut(H1r(t));if(2<zu>>>0)ut=Q1r(t);else switch(zu){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,40);var Vu=Jnt(H1r(t));ut=0===Vu?p(t):1===Vu?m(t):Q1r(t)}}}}}break;case 35:K1r(t,47);var na=Yut(H1r(t));if(2<na>>>0)ut=Q1r(t);else switch(na){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var ia=H1r(t),va=35<ia?Al<ia?ie<ia?Qf<ia?-1:Cl<ia?Zt<ia?Ea<ia?pi<ia?ds<ia?pv<ia?Or<ia?He<ia?0:-1:0:-1:ro<ia?vc<ia?0:-1:0:-1:Ob<ia?sk<ia?wv<ia?Bl<ia?0:-1:0:-1:me<ia?ta<ia?0:-1:0:-1:Os<ia?gs<ia?Gs<ia?nv<ia?Il<ia?Se<ia?Un<ia?We<ia?rf<ia?ek<ia?_s<ia?MD<ia?$i<ia?Uo<ia?sn<ia?yD<ia?0:-1:0:-1:Wc<ia?Hu<ia?0:-1:0:-1:Ic<ia?it<ia?Jo<ia?ec<ia?0:-1:0:-1:ol<ia?zv<ia?0:-1:0:-1:x<ia?_v<ia?Sv<ia?Q<ia?yf<ia?ln<ia?0:-1:0:-1:Vt<ia?rb<ia?0:-1:0:-1:Po<ia?Gu<ia?Jc<ia?qt<ia?0:-1:0:-1:Ei<ia?Hs<ia?0:-1:0:-1:Dl<ia?jc<ia?fi<ia?tt<ia?Wo<ia?uc<ia?Rr<ia?Nu<ia?0:-1:0:-1:yl<ia?gv<ia?0:-1:0:-1:os<ia?Zc<ia?an<ia?gD<ia?0:-1:0:-1:ru<ia?zc<ia?0:-1:0:-1:Jt<ia?bi<ia?Zo<ia?Ur<ia?zf<ia?Ks<ia?0:-1:0:-1:au<ia?mr<ia?0:-1:0:-1:xD<ia?Wf<ia?xo<ia?Ao<ia?0:-1:0:-1:QD<ia?AD<ia?0:-1:0:-1:wf<ia?xk<ia?Ql<ia?$a<ia?Wa<ia?qa<ia?zt<ia?br<ia?wb<ia?qc<ia?0:-1:0:-1:Pt<ia?Ps<ia?0:-1:0:-1:Wt<ia?ha<ia?vf<ia?Er<ia?0:-1:0:-1:Zr<ia?xc<ia?0:-1:0:-1:ua<ia?jn<ia?Uc<ia?Kr<ia?ke<ia?zn<ia?0:-1:0:-1:rs<ia?Ho<ia?0:-1:0:-1:dk<ia?pf<ia?uo<ia?qu<ia?0:-1:0:-1:$<ia?wu<ia?0:-1:0:-1:If<ia?DD<ia?Ub<ia?Kn<ia?ir<ia?Pi<ia?cn<ia?Co<ia?0:-1:0:-1:Ac<ia?Qn<ia?0:-1:0:-1:tn<ia?Ls<ia?Cr<ia?hv<ia?0:-1:0:-1:Wi<ia?Gb<ia?0:-1:0:-1:ct<ia?oo<ia?tc<ia?e<ia?Ee<ia?Y<ia?0:-1:0:-1:Ze<ia?sa<ia?0:-1:0:-1:sf<ia?Ha<ia?Uf<ia?vt<ia?0:-1:0:-1:La<ia?Fv<ia?0:-1:0:-1:ao<ia?o<ia?vu<ia?Zn<ia?xi<ia?fe<ia?Bi<ia?Zs<ia?HD<ia?zo<ia?pe<ia?Tk<ia?0:-1:0:-1:gi<ia?ts<ia?0:-1:0:-1:ps<ia?hf<ia?As<ia?pa<ia?0:-1:0:-1:as<ia?Cb<ia?0:-1:0:-1:jf<ia?gt<ia?Mu<ia?ok<ia?Xo<ia?Ji<ia?0:-1:0:-1:D<ia?Yv<ia?0:-1:0:-1:Lf<ia?$s<ia?Vl<ia?Fb<ia?0:-1:0:-1:Ab<ia?ED<ia?0:-1:0:-1:Oe<ia?g<ia?wk<ia?Dv<ia?Mo<ia?_<ia?Ti<ia?Ve<ia?0:-1:0:-1:Hl<ia?An<ia?0:-1:0:-1:ai<ia?Hb<ia?Yf<ia?er<ia?0:-1:0:-1:fc<ia?Xl<ia?0:-1:0:-1:Bv<ia?_e<ia?le<ia?hD<ia?Pf<ia?Ge<ia?0:-1:0:-1:Dt<ia?Io<ia?0:-1:0:-1:cs<ia?KD<ia?eu<ia?hi<ia?0:-1:0:-1:Js<ia?Tr<ia?0:-1:0:-1:Hc<ia?Ma<ia?mu<ia?Jf<ia?Af<ia?Ki<ia?dc<ia?qi<ia?hu<ia?Aa<ia?0:-1:0:-1:$u<ia?Ak<ia?0:-1:0:-1:cc<ia?mf<ia?Rs<ia?wr<ia?0:-1:0:-1:yv<ia?eo<ia?0:-1:0:-1:jr<ia?ND<ia?ck<ia?Ui<ia?Ar<ia?Vs<ia?0:-1:0:-1:Bn<ia?F<ia?0:-1:0:-1:Qe<ia?_c<ia?cr<ia?Vv<ia?0:-1:0:-1:ub<ia?Ai<ia?0:-1:0:-1:Ra<ia?nn<ia?bu<ia?ja<ia?be<ia?Es<ia?Fl<ia?Ri<ia?0:-1:0:-1:nr<ia?zD<ia?0:-1:0:-1:Vc<ia?rD<ia?Br<ia?gu<ia?0:-1:0:-1:qn<ia?iD<ia?0:-1:0:-1:Fo<ia?oi<ia?lt<ia?av<ia?xu<ia?$D<ia?0:-1:0:-1:It<ia?zs<ia?0:-1:0:-1:Ju<ia?Qb<ia?Do<ia?VD<ia?0:-1:0:-1:Ot<ia?Yb<ia?0:-1:0:-1:fa<ia?Ne<ia?Sl<ia?Xi<ia?rc<ia?Mk<ia?jb<ia?ri<ia?$f<ia?Nv<ia?Nb<ia?Hi<ia?$b<ia?Kt<ia?0:-1:0:-1:Ir<ia?C<ia?0:-1:0:-1:we<ia?Ht<ia?Lt<ia?Sf<ia?0:-1:0:-1:bk<ia?_l<ia?0:-1:0:-1:Uv<ia?gc<ia?gr<ia?cv<ia?hc<ia?u<ia?0:-1:0:-1:et<ia?uv<ia?0:-1:0:-1:ht<ia?Bk<ia?Ds<ia?zb<ia?0:-1:0:-1:Ua<ia?ml<ia?0:-1:0:-1:Lk<ia?_D<ia?Su<ia?ma<ia?ob<ia?wc<ia?Kl<ia?tb<ia?0:-1:0:-1:ii<ia?dl<ia?0:-1:0:-1:wn<ia?Za<ia?Ko<ia?iu<ia?0:-1:0:-1:tv<ia?l<ia?0:-1:0:-1:oc<ia?mt<ia?jt<ia?Sc<ia?Sn<ia?Bs<ia?0:-1:0:-1:zr<ia?Ja<ia?0:-1:0:-1:nu<ia?hs<ia?eD<ia?Ro<ia?0:-1:0:-1:rk<ia?pt<ia?0:-1:0:-1:Gv<ia?Xf<ia?ca<ia?lf<ia?Pa<ia?Is<ia?c<ia?Bb<ia?nb<ia?T<ia?0:-1:0:-1:Da<ia?ui<ia?0:-1:0:-1:vD<ia?co<ia?Ku<ia?Wu<ia?0:-1:0:-1:Rl<ia?Gf<ia?0:-1:0:-1:du<ia?Ni<ia?mi<ia?Kf<ia?hl<ia?se<ia?0:-1:0:-1:vv<ia?Yu<ia?0:-1:0:-1:$n<ia?bn<ia?da<ia?Ek<ia?0:-1:0:-1:d<ia?oa<ia?0:-1:0:-1:Mf<ia?ul<ia?TD<ia?ni<ia?mv<ia?Fr<ia?lk<ia?Gc<ia?0:-1:0:-1:dD<ia?H<ia?0:-1:0:-1:Rk<ia?ji<ia?yn<ia?Sr<ia?0:-1:0:-1:Qr<ia?Xe<ia?0:-1:0:-1:Kv<ia?rv<ia?Ln<ia?gl<ia?OD<ia?P<ia?0:-1:0:-1:Lc<ia?i<ia?0:-1:0:-1:WD<ia?Wv<ia?pb<ia?ys<ia?0:-1:0:-1:v<ia?aa<ia?0:-1:0:-1:ea<ia?hb<ia?a<ia?Qu<ia?wt<ia?Ae<ia?Nr<ia?xr<ia?Nc<ia?kD<ia?ve<ia?ms<ia?0:-1:0:-1:nc<ia?Ca<ia?0:-1:0:-1:Du<ia?eb<ia?To<ia?tD<ia?0:-1:0:-1:of<ia?lu<ia?0:-1:0:-1:w<ia?fr<ia?Kc<ia?ZD<ia?rl<ia?Qv<ia?0:-1:0:-1:Vb<ia?Oo<ia?0:-1:0:-1:Jr<ia?Go<ia?Pb<ia?fu<ia?0:-1:0:-1:ti<ia?Mt<ia?0:-1:0:-1:Fe<ia?Mi<ia?_i<ia?Je<ia?sr<ia?Ol<ia?Xv<ia?dn<ia?0:-1:0:-1:Bf<ia?vr<ia?0:-1:0:-1:ge<ia?Ml<ia?Jn<ia?On<ia?0:-1:0:-1:Cc<ia?Sb<ia?0:-1:0:-1:k<ia?PD<ia?$e<ia?$l<ia?oD<ia?io<ia?0:-1:0:-1:nf<ia?El<ia?0:-1:0:-1:qe<ia?BD<ia?qs<ia?vs<ia?0:-1:0:-1:lD<ia?cu<ia?0:-1:0:-1:nk<ia?hk<ia?zl<ia?il<ia?mb<ia?Yl<ia?Db<ia?dr<ia?Lr<ia?fb<ia?0:-1:0:-1:pu<ia?gb<ia?0:-1:0:-1:yr<ia?Wr<ia?Te<ia?Bu<ia?0:-1:0:-1:GD<ia?So<ia?0:-1:0:-1:Ik<ia?Xc<ia?Ga<ia?Ul<ia?Ba<ia?Dk<ia?0:-1:0:-1:Ms<ia?Ck<ia?0:-1:0:-1:Pv<ia?Jl<ia?lr<ia?Iv<ia?0:-1:0:-1:wl<ia?bl<ia?0:-1:0:-1:ot<ia?Vo<ia?ue<ia?ye<ia?al<ia?n<ia?mc<ia?wi<ia?0:-1:0:-1:fs<ia?Et<ia?0:-1:0:-1:ar<ia?on<ia?Zu<ia?_u<ia?0:-1:0:-1:$v<ia?ws<ia?0:-1:0:-1:nD<ia?ae<ia?mo<ia?Yn<ia?Df<ia?Ye<ia?0:-1:0:-1:Rn<ia?Wb<ia?0:-1:0:-1:pl<ia?vi<ia?JD<ia?Qs<ia?0:-1:0:-1:Fc<ia?Ft<ia?0:-1:0:-1:Cd(nqr,ia+aD|0)-1|0:-1;if(3<va>>>0)ut=Q1r(t);else switch(va){case 0:ut=p(t);break;case 1:ut=m(t);break;case 2:K1r(t,47);var ba=Yut(H1r(t));if(2<ba>>>0)ut=Q1r(t);else switch(ba){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var ka=bat(H1r(t));if(2<ka>>>0)ut=Q1r(t);else switch(ka){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Fa=Lut(H1r(t));if(2<Fa>>>0)ut=Q1r(t);else switch(Fa){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,42);var _a=Jnt(H1r(t));ut=0===_a?p(t):1===_a?m(t):Q1r(t)}}}break;default:K1r(t,47);var ga=bat(H1r(t));if(2<ga>>>0)ut=Q1r(t);else switch(ga){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Sa=rut(H1r(t));if(2<Sa>>>0)ut=Q1r(t);else switch(Sa){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var xa=Rnt(H1r(t));if(2<xa>>>0)ut=Q1r(t);else switch(xa){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,43);var Ta=Jnt(H1r(t));ut=0===Ta?p(t):1===Ta?m(t):Q1r(t)}}}}}break;case 36:K1r(t,47);var Ia=H1r(t),Oa=35<Ia?Al<Ia?ie<Ia?Qf<Ia?-1:Cl<Ia?Zt<Ia?Ea<Ia?pi<Ia?ds<Ia?pv<Ia?Or<Ia?He<Ia?0:-1:0:-1:ro<Ia?vc<Ia?0:-1:0:-1:Ob<Ia?sk<Ia?wv<Ia?Bl<Ia?0:-1:0:-1:me<Ia?ta<Ia?0:-1:0:-1:Os<Ia?gs<Ia?Gs<Ia?nv<Ia?Il<Ia?Se<Ia?Un<Ia?We<Ia?rf<Ia?ek<Ia?_s<Ia?MD<Ia?$i<Ia?Uo<Ia?sn<Ia?yD<Ia?0:-1:0:-1:Wc<Ia?Hu<Ia?0:-1:0:-1:Ic<Ia?it<Ia?Jo<Ia?ec<Ia?0:-1:0:-1:ol<Ia?zv<Ia?0:-1:0:-1:x<Ia?_v<Ia?Sv<Ia?Q<Ia?yf<Ia?ln<Ia?0:-1:0:-1:Vt<Ia?rb<Ia?0:-1:0:-1:Po<Ia?Gu<Ia?Jc<Ia?qt<Ia?0:-1:0:-1:Ei<Ia?Hs<Ia?0:-1:0:-1:Dl<Ia?jc<Ia?fi<Ia?tt<Ia?Wo<Ia?uc<Ia?Rr<Ia?Nu<Ia?0:-1:0:-1:yl<Ia?gv<Ia?0:-1:0:-1:os<Ia?Zc<Ia?an<Ia?gD<Ia?0:-1:0:-1:ru<Ia?zc<Ia?0:-1:0:-1:Jt<Ia?bi<Ia?Zo<Ia?Ur<Ia?zf<Ia?Ks<Ia?0:-1:0:-1:au<Ia?mr<Ia?0:-1:0:-1:xD<Ia?Wf<Ia?xo<Ia?Ao<Ia?0:-1:0:-1:QD<Ia?AD<Ia?0:-1:0:-1:wf<Ia?xk<Ia?Ql<Ia?$a<Ia?Wa<Ia?qa<Ia?zt<Ia?br<Ia?wb<Ia?qc<Ia?0:-1:0:-1:Pt<Ia?Ps<Ia?0:-1:0:-1:Wt<Ia?ha<Ia?vf<Ia?Er<Ia?0:-1:0:-1:Zr<Ia?xc<Ia?0:-1:0:-1:ua<Ia?jn<Ia?Uc<Ia?Kr<Ia?ke<Ia?zn<Ia?0:-1:0:-1:rs<Ia?Ho<Ia?0:-1:0:-1:dk<Ia?pf<Ia?uo<Ia?qu<Ia?0:-1:0:-1:$<Ia?wu<Ia?0:-1:0:-1:If<Ia?DD<Ia?Ub<Ia?Kn<Ia?ir<Ia?Pi<Ia?cn<Ia?Co<Ia?0:-1:0:-1:Ac<Ia?Qn<Ia?0:-1:0:-1:tn<Ia?Ls<Ia?Cr<Ia?hv<Ia?0:-1:0:-1:Wi<Ia?Gb<Ia?0:-1:0:-1:ct<Ia?oo<Ia?tc<Ia?e<Ia?Ee<Ia?Y<Ia?0:-1:0:-1:Ze<Ia?sa<Ia?0:-1:0:-1:sf<Ia?Ha<Ia?Uf<Ia?vt<Ia?0:-1:0:-1:La<Ia?Fv<Ia?0:-1:0:-1:ao<Ia?o<Ia?vu<Ia?Zn<Ia?xi<Ia?fe<Ia?Bi<Ia?Zs<Ia?HD<Ia?zo<Ia?pe<Ia?Tk<Ia?0:-1:0:-1:gi<Ia?ts<Ia?0:-1:0:-1:ps<Ia?hf<Ia?As<Ia?pa<Ia?0:-1:0:-1:as<Ia?Cb<Ia?0:-1:0:-1:jf<Ia?gt<Ia?Mu<Ia?ok<Ia?Xo<Ia?Ji<Ia?0:-1:0:-1:D<Ia?Yv<Ia?0:-1:0:-1:Lf<Ia?$s<Ia?Vl<Ia?Fb<Ia?0:-1:0:-1:Ab<Ia?ED<Ia?0:-1:0:-1:Oe<Ia?g<Ia?wk<Ia?Dv<Ia?Mo<Ia?_<Ia?Ti<Ia?Ve<Ia?0:-1:0:-1:Hl<Ia?An<Ia?0:-1:0:-1:ai<Ia?Hb<Ia?Yf<Ia?er<Ia?0:-1:0:-1:fc<Ia?Xl<Ia?0:-1:0:-1:Bv<Ia?_e<Ia?le<Ia?hD<Ia?Pf<Ia?Ge<Ia?0:-1:0:-1:Dt<Ia?Io<Ia?0:-1:0:-1:cs<Ia?KD<Ia?eu<Ia?hi<Ia?0:-1:0:-1:Js<Ia?Tr<Ia?0:-1:0:-1:Hc<Ia?Ma<Ia?mu<Ia?Jf<Ia?Af<Ia?Ki<Ia?dc<Ia?qi<Ia?hu<Ia?Aa<Ia?0:-1:0:-1:$u<Ia?Ak<Ia?0:-1:0:-1:cc<Ia?mf<Ia?Rs<Ia?wr<Ia?0:-1:0:-1:yv<Ia?eo<Ia?0:-1:0:-1:jr<Ia?ND<Ia?ck<Ia?Ui<Ia?Ar<Ia?Vs<Ia?0:-1:0:-1:Bn<Ia?F<Ia?0:-1:0:-1:Qe<Ia?_c<Ia?cr<Ia?Vv<Ia?0:-1:0:-1:ub<Ia?Ai<Ia?0:-1:0:-1:Ra<Ia?nn<Ia?bu<Ia?ja<Ia?be<Ia?Es<Ia?Fl<Ia?Ri<Ia?0:-1:0:-1:nr<Ia?zD<Ia?0:-1:0:-1:Vc<Ia?rD<Ia?Br<Ia?gu<Ia?0:-1:0:-1:qn<Ia?iD<Ia?0:-1:0:-1:Fo<Ia?oi<Ia?lt<Ia?av<Ia?xu<Ia?$D<Ia?0:-1:0:-1:It<Ia?zs<Ia?0:-1:0:-1:Ju<Ia?Qb<Ia?Do<Ia?VD<Ia?0:-1:0:-1:Ot<Ia?Yb<Ia?0:-1:0:-1:fa<Ia?Ne<Ia?Sl<Ia?Xi<Ia?rc<Ia?Mk<Ia?jb<Ia?ri<Ia?$f<Ia?Nv<Ia?Nb<Ia?Hi<Ia?$b<Ia?Kt<Ia?0:-1:0:-1:Ir<Ia?C<Ia?0:-1:0:-1:we<Ia?Ht<Ia?Lt<Ia?Sf<Ia?0:-1:0:-1:bk<Ia?_l<Ia?0:-1:0:-1:Uv<Ia?gc<Ia?gr<Ia?cv<Ia?hc<Ia?u<Ia?0:-1:0:-1:et<Ia?uv<Ia?0:-1:0:-1:ht<Ia?Bk<Ia?Ds<Ia?zb<Ia?0:-1:0:-1:Ua<Ia?ml<Ia?0:-1:0:-1:Lk<Ia?_D<Ia?Su<Ia?ma<Ia?ob<Ia?wc<Ia?Kl<Ia?tb<Ia?0:-1:0:-1:ii<Ia?dl<Ia?0:-1:0:-1:wn<Ia?Za<Ia?Ko<Ia?iu<Ia?0:-1:0:-1:tv<Ia?l<Ia?0:-1:0:-1:oc<Ia?mt<Ia?jt<Ia?Sc<Ia?Sn<Ia?Bs<Ia?0:-1:0:-1:zr<Ia?Ja<Ia?0:-1:0:-1:nu<Ia?hs<Ia?eD<Ia?Ro<Ia?0:-1:0:-1:rk<Ia?pt<Ia?0:-1:0:-1:Gv<Ia?Xf<Ia?ca<Ia?lf<Ia?Pa<Ia?Is<Ia?c<Ia?Bb<Ia?nb<Ia?T<Ia?0:-1:0:-1:Da<Ia?ui<Ia?0:-1:0:-1:vD<Ia?co<Ia?Ku<Ia?Wu<Ia?0:-1:0:-1:Rl<Ia?Gf<Ia?0:-1:0:-1:du<Ia?Ni<Ia?mi<Ia?Kf<Ia?hl<Ia?se<Ia?0:-1:0:-1:vv<Ia?Yu<Ia?0:-1:0:-1:$n<Ia?bn<Ia?da<Ia?Ek<Ia?0:-1:0:-1:d<Ia?oa<Ia?0:-1:0:-1:Mf<Ia?ul<Ia?TD<Ia?ni<Ia?mv<Ia?Fr<Ia?lk<Ia?Gc<Ia?0:-1:0:-1:dD<Ia?H<Ia?0:-1:0:-1:Rk<Ia?ji<Ia?yn<Ia?Sr<Ia?0:-1:0:-1:Qr<Ia?Xe<Ia?0:-1:0:-1:Kv<Ia?rv<Ia?Ln<Ia?gl<Ia?OD<Ia?P<Ia?0:-1:0:-1:Lc<Ia?i<Ia?0:-1:0:-1:WD<Ia?Wv<Ia?pb<Ia?ys<Ia?0:-1:0:-1:v<Ia?aa<Ia?0:-1:0:-1:ea<Ia?hb<Ia?a<Ia?Qu<Ia?wt<Ia?Ae<Ia?Nr<Ia?xr<Ia?Nc<Ia?kD<Ia?ve<Ia?ms<Ia?0:-1:0:-1:nc<Ia?Ca<Ia?0:-1:0:-1:Du<Ia?eb<Ia?To<Ia?tD<Ia?0:-1:0:-1:of<Ia?lu<Ia?0:-1:0:-1:w<Ia?fr<Ia?Kc<Ia?ZD<Ia?rl<Ia?Qv<Ia?0:-1:0:-1:Vb<Ia?Oo<Ia?0:-1:0:-1:Jr<Ia?Go<Ia?Pb<Ia?fu<Ia?0:-1:0:-1:ti<Ia?Mt<Ia?0:-1:0:-1:Fe<Ia?Mi<Ia?_i<Ia?Je<Ia?sr<Ia?Ol<Ia?Xv<Ia?dn<Ia?0:-1:0:-1:Bf<Ia?vr<Ia?0:-1:0:-1:ge<Ia?Ml<Ia?Jn<Ia?On<Ia?0:-1:0:-1:Cc<Ia?Sb<Ia?0:-1:0:-1:k<Ia?PD<Ia?$e<Ia?$l<Ia?oD<Ia?io<Ia?0:-1:0:-1:nf<Ia?El<Ia?0:-1:0:-1:qe<Ia?BD<Ia?qs<Ia?vs<Ia?0:-1:0:-1:lD<Ia?cu<Ia?0:-1:0:-1:nk<Ia?hk<Ia?zl<Ia?il<Ia?mb<Ia?Yl<Ia?Db<Ia?dr<Ia?Lr<Ia?fb<Ia?0:-1:0:-1:pu<Ia?gb<Ia?0:-1:0:-1:yr<Ia?Wr<Ia?Te<Ia?Bu<Ia?0:-1:0:-1:GD<Ia?So<Ia?0:-1:0:-1:Ik<Ia?Xc<Ia?Ga<Ia?Ul<Ia?Ba<Ia?Dk<Ia?0:-1:0:-1:Ms<Ia?Ck<Ia?0:-1:0:-1:Pv<Ia?Jl<Ia?lr<Ia?Iv<Ia?0:-1:0:-1:wl<Ia?bl<Ia?0:-1:0:-1:ot<Ia?Vo<Ia?ue<Ia?ye<Ia?al<Ia?n<Ia?mc<Ia?wi<Ia?0:-1:0:-1:fs<Ia?Et<Ia?0:-1:0:-1:ar<Ia?on<Ia?Zu<Ia?_u<Ia?0:-1:0:-1:$v<Ia?ws<Ia?0:-1:0:-1:nD<Ia?ae<Ia?mo<Ia?Yn<Ia?Df<Ia?Ye<Ia?0:-1:0:-1:Rn<Ia?Wb<Ia?0:-1:0:-1:pl<Ia?vi<Ia?JD<Ia?Qs<Ia?0:-1:0:-1:Fc<Ia?Ft<Ia?0:-1:0:-1:Cd(Mqr,Ia+aD|0)-1|0:-1;if(3<Oa>>>0)ut=Q1r(t);else switch(Oa){case 0:ut=p(t);break;case 1:ut=m(t);break;case 2:K1r(t,47);var Na=Tnt(H1r(t));if(2<Na>>>0)ut=Q1r(t);else switch(Na){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Xa=Bnt(H1r(t));if(2<Xa>>>0)ut=Q1r(t);else switch(Xa){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,44);var za=Jnt(H1r(t));ut=0===za?p(t):1===za?m(t):Q1r(t)}}break;default:K1r(t,47);var Ya=Unt(H1r(t));if(2<Ya>>>0)ut=Q1r(t);else switch(Ya){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Ka=Bnt(H1r(t));if(2<Ka>>>0)ut=Q1r(t);else switch(Ka){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var Qa=oat(H1r(t));if(2<Qa>>>0)ut=Q1r(t);else switch(Qa){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var ei=sat(H1r(t));if(2<ei>>>0)ut=Q1r(t);else switch(ei){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,45);var ci=Jnt(H1r(t));ut=0===ci?p(t):1===ci?m(t):Q1r(t)}}}}}break;case 37:K1r(t,47);var si=oat(H1r(t));if(2<si>>>0)ut=Q1r(t);else switch(si){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var ki=bat(H1r(t));if(2<ki>>>0)ut=Q1r(t);else switch(ki){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,47);var di=Ont(H1r(t));if(2<di>>>0)ut=Q1r(t);else switch(di){case 0:ut=p(t);break;case 1:ut=m(t);break;default:K1r(t,46);var Fi=Jnt(H1r(t));ut=0===Fi?p(t):1===Fi?m(t):Q1r(t)}}}break;case 38:K1r(t,51);var yi=H1r(t);ut=0===(123<yi?124<yi?-1:0:-1)?53:Q1r(t);break;case 39:K1r(t,71);var Ci=H1r(t);ut=0===(124<Ci?Gn<Ci?-1:0:-1)?54:Q1r(t);break;default:ut=52}if(79<ut>>>0)return TQr(HXr);var Si=ut;if(40<=Si)switch(Si){case 40:return[0,r,tf];case 41:return[0,r,115];case 42:return[0,r,42];case 43:return[0,r,de];case 44:return[0,r,31];case 46:return[0,r,117];case 47:var Ii=Cat(r,t),Oi=k2r(t),Li=Mat(r,Oi);return[0,Li[1],[4,Ii,Li[2],Oi]];case 48:return[0,r,66];case 51:return[0,r,0];case 52:return[0,r,1];case 53:return[0,r,2];case 54:return[0,r,3];case 55:return[0,r,4];case 56:return[0,r,5];case 57:return[0,r,12];case 58:return[0,r,10];case 59:return[0,r,8];case 60:return[0,r,9];case 65:return[0,r,95];case 66:return[0,r,96];case 69:return[0,r,kb];case 71:return[0,r,86];case 72:return[0,r,88];case 74:return[0,r,11];case 76:return[0,r,ra];case 77:return[0,r,ju];case 78:return[0,r[4]?xat(r,Cat(r,t),4):r,De];case 79:return[0,r,[6,k2r(t)]];case 45:case 73:return[0,r,46];case 49:case 63:return[0,r,6];case 50:case 64:return[0,r,7];case 61:case 70:return[0,r,83];case 62:case 68:return[0,r,82];default:return[0,r,79]}switch(Si){case 0:return[2,Bat(r,t)];case 1:return[2,r];case 2:var Gi=_at(r,t),Vi=gZr(Yc),Qi=Uat(r,Vi,t),Zi=Qi[1];return[1,Zi,Oat(Zi,Gi,Qi[2],Vi,1)];case 3:var ef=k2r(t);if(r[5]){var uf=r[4]?Tat(r,Cat(r,t),ef):r,af=ynt(1,uf),ff=e2r(t);return gd(D2r(t,ff-1|0,1),$Xr)&&Sd(D2r(t,ff-2|0,1),KXr)?[0,af,83]:[2,af]}var cf=_at(r,t),kf=gZr(Yc);TZr(kf,ef);var df=Uat(r,kf,t),Ff=df[1];return[1,Ff,Oat(Ff,cf,df[2],kf,1)];case 4:return r[4]?[2,ynt(0,r)]:(Z1r(t),$1r(t),0===(0===Cut(H1r(t))?0:Q1r(t))?[0,r,kb]:TQr(QXr));case 5:var Ef=_at(r,t),_f=gZr(Yc),Cf=Xat(r,_f,t),xf=Cf[1];return[1,xf,Oat(xf,Ef,Cf[2],_f,0)];case 6:var Tf=k2r(t),Nf=_at(r,t),Rf=gZr(Yc),qf=gZr(Yc);TZr(qf,Tf);var Hf=Gat(r,Tf,Rf,qf,0,t),Zf=Hf[1],ic=[0,Zf[1],Nf,Hf[2]],sc=Hf[3],lc=CZr(qf);return[0,Zf,[2,[0,ic,CZr(Rf),lc,sc]]];case 7:return jat(r,t,(function(r,t){function e(r){if(0===lut(H1r(r))){if(0===tut(H1r(r)))for(;;){var t=Hnt(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:continue;case 1:r:for(;;){if(0===tut(H1r(r)))for(;;){var e=Hnt(H1r(r));if(2<e>>>0)return Q1r(r);switch(e){case 0:continue;case 1:continue r;default:return 0}}return Q1r(r)}default:return 0}}return Q1r(r)}return Q1r(r)}$1r(t);var n=But(H1r(t));if(0===n)for(;;){var u=znt(H1r(t));if(0!==u){var a=1===u?e(t):Q1r(t);break}}else a=1===n?e(t):Q1r(t);return 0===a?[0,r,Nat(0,k2r(t))]:TQr(YXr)}));case 8:return[0,r,Nat(0,k2r(t))];case 9:return jat(r,t,(function(r,t){function e(r){if(0===lut(H1r(r))){if(0===tut(H1r(r)))for(;;){K1r(r,0);var t=Ynt(H1r(r));if(0!==t){if(1===t)r:for(;;){if(0===tut(H1r(r)))for(;;){K1r(r,0);var e=Ynt(H1r(r));if(0!==e){if(1===e)continue r;return Q1r(r)}}return Q1r(r)}return Q1r(r)}}return Q1r(r)}return Q1r(r)}$1r(t);var n=But(H1r(t));if(0===n)for(;;){var u=znt(H1r(t));if(0!==u){var a=1===u?e(t):Q1r(t);break}}else a=1===n?e(t):Q1r(t);return 0===a?[0,r,Pat(0,k2r(t))]:TQr(WXr)}));case 10:return[0,r,Pat(0,k2r(t))];case 11:return jat(r,t,(function(r,t){function e(r){if(0===gut(H1r(r))){if(0===put(H1r(r)))for(;;){var t=sut(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:continue;case 1:r:for(;;){if(0===put(H1r(r)))for(;;){var e=sut(H1r(r));if(2<e>>>0)return Q1r(r);switch(e){case 0:continue;case 1:continue r;default:return 0}}return Q1r(r)}default:return 0}}return Q1r(r)}return Q1r(r)}$1r(t);var n=But(H1r(t));if(0===n)for(;;){var u=znt(H1r(t));if(0!==u){var a=1===u?e(t):Q1r(t);break}}else a=1===n?e(t):Q1r(t);return 0===a?[0,r,Nat(1,k2r(t))]:TQr(VXr)}));case 12:return[0,r,Nat(1,k2r(t))];case 13:return jat(r,t,(function(r,t){function e(r){if(0===gut(H1r(r))){if(0===put(H1r(r)))for(;;){K1r(r,0);var t=eut(H1r(r));if(0!==t){if(1===t)r:for(;;){if(0===put(H1r(r)))for(;;){K1r(r,0);var e=eut(H1r(r));if(0!==e){if(1===e)continue r;return Q1r(r)}}return Q1r(r)}return Q1r(r)}}return Q1r(r)}return Q1r(r)}$1r(t);var n=But(H1r(t));if(0===n)for(;;){var u=znt(H1r(t));if(0!==u){var a=1===u?e(t):Q1r(t);break}}else a=1===n?e(t):Q1r(t);return 0===a?[0,r,Pat(3,k2r(t))]:TQr(zXr)}));case 14:return[0,r,Pat(3,k2r(t))];case 15:return jat(r,t,(function(r,t){function e(r){if(0===put(H1r(r)))for(;;)if(K1r(r,0),0!==put(H1r(r)))return Q1r(r);return Q1r(r)}$1r(t);var n=But(H1r(t));if(0===n)for(;;){var u=znt(H1r(t));if(0!==u){var a=1===u?e(t):Q1r(t);break}}else a=1===n?e(t):Q1r(t);return 0===a?[0,r,Pat(1,k2r(t))]:TQr(qXr)}));case 16:return[0,r,Pat(1,k2r(t))];case 17:return jat(r,t,(function(r,t){function e(r){if(0===Mnt(H1r(r))){if(0===Pnt(H1r(r)))for(;;){var t=$nt(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:continue;case 1:r:for(;;){if(0===Pnt(H1r(r)))for(;;){var e=$nt(H1r(r));if(2<e>>>0)return Q1r(r);switch(e){case 0:continue;case 1:continue r;default:return 0}}return Q1r(r)}default:return 0}}return Q1r(r)}return Q1r(r)}$1r(t);var n=But(H1r(t));if(0===n)for(;;){var u=znt(H1r(t));if(0!==u){var a=1===u?e(t):Q1r(t);break}}else a=1===n?e(t):Q1r(t);return 0===a?[0,r,Nat(2,k2r(t))]:TQr(GXr)}));case 19:return jat(r,t,(function(r,t){function e(r){if(0===Mnt(H1r(r))){if(0===Pnt(H1r(r)))for(;;){K1r(r,0);var t=Rut(H1r(r));if(0!==t){if(1===t)r:for(;;){if(0===Pnt(H1r(r)))for(;;){K1r(r,0);var e=Rut(H1r(r));if(0!==e){if(1===e)continue r;return Q1r(r)}}return Q1r(r)}return Q1r(r)}}return Q1r(r)}return Q1r(r)}$1r(t);var n=But(H1r(t));if(0===n)for(;;){var u=znt(H1r(t));if(0!==u){var a=1===u?e(t):Q1r(t);break}}else a=1===n?e(t):Q1r(t);return 0===a?[0,r,Pat(4,k2r(t))]:TQr(JXr)}));case 21:return jat(r,t,(function(r,t){function e(r){for(;;){var t=Nnt(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:continue;case 1:r:for(;;){if(0===Int(H1r(r)))for(;;){var e=Nnt(H1r(r));if(2<e>>>0)return Q1r(r);switch(e){case 0:continue;case 1:continue r;default:return 0}}return Q1r(r)}default:return 0}}}function n(r){for(;;){var t=cut(H1r(r));if(0!==t)return 1===t?0:Q1r(r)}}function u(r){var t=lat(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:var u=nut(H1r(r));return 0===u?n(r):1===u?e(r):Q1r(r);case 1:return n(r);default:return e(r)}}function a(r){if(0===Int(H1r(r)))for(;;){var t=vat(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:continue;case 1:return u(r);default:r:for(;;){if(0===Int(H1r(r)))for(;;){var e=vat(H1r(r));if(2<e>>>0)return Q1r(r);switch(e){case 0:continue;case 1:return u(r);default:continue r}}return Q1r(r)}}}return Q1r(r)}function i(r){var t=xut(H1r(r));if(0===t)for(;;){var e=vat(H1r(r));if(2<e>>>0)return Q1r(r);switch(e){case 0:continue;case 1:return u(r);default:r:for(;;){if(0===Int(H1r(r)))for(;;){var n=vat(H1r(r));if(2<n>>>0)return Q1r(r);switch(n){case 0:continue;case 1:return u(r);default:continue r}}return Q1r(r)}}}return 1===t?u(r):Q1r(r)}function f(r){var t=Vnt(H1r(r));return 0===t?i(r):1===t?u(r):Q1r(r)}function c(r){for(;;){var t=Eut(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:return i(r);case 1:continue;default:return u(r)}}}$1r(t);var s=Znt(H1r(t));if(3<s>>>0)var o=Q1r(t);else switch(s){case 0:for(;;){var v=Fut(H1r(t));if(3<v>>>0)o=Q1r(t);else switch(v){case 0:continue;case 1:o=a(t);break;case 2:o=f(t);break;default:o=c(t)}break}break;case 1:o=a(t);break;case 2:o=f(t);break;default:o=c(t)}if(0===o){var l=k2r(t);return[0,xat(r,Cat(r,t),21),Nat(2,l)]}return TQr(XXr)}));case 22:var bc=k2r(t);return[0,xat(r,Cat(r,t),21),Nat(2,bc)];case 23:return jat(r,t,(function(r,t){function e(r){for(;;){K1r(r,0);var t=$ut(H1r(r));if(0!==t){if(1===t)r:for(;;){if(0===Int(H1r(r)))for(;;){K1r(r,0);var e=$ut(H1r(r));if(0!==e){if(1===e)continue r;return Q1r(r)}}return Q1r(r)}return Q1r(r)}}}function n(r){for(;;)if(K1r(r,0),0!==Int(H1r(r)))return Q1r(r)}function u(r){var t=lat(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:var u=nut(H1r(r));return 0===u?n(r):1===u?e(r):Q1r(r);case 1:return n(r);default:return e(r)}}function a(r){if(0===Int(H1r(r)))for(;;){var t=vat(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:continue;case 1:return u(r);default:r:for(;;){if(0===Int(H1r(r)))for(;;){var e=vat(H1r(r));if(2<e>>>0)return Q1r(r);switch(e){case 0:continue;case 1:return u(r);default:continue r}}return Q1r(r)}}}return Q1r(r)}function i(r){var t=xut(H1r(r));if(0===t)for(;;){var e=vat(H1r(r));if(2<e>>>0)return Q1r(r);switch(e){case 0:continue;case 1:return u(r);default:r:for(;;){if(0===Int(H1r(r)))for(;;){var n=vat(H1r(r));if(2<n>>>0)return Q1r(r);switch(n){case 0:continue;case 1:return u(r);default:continue r}}return Q1r(r)}}}return 1===t?u(r):Q1r(r)}function f(r){var t=Vnt(H1r(r));return 0===t?i(r):1===t?u(r):Q1r(r)}function c(r){for(;;){var t=Eut(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:return i(r);case 1:continue;default:return u(r)}}}$1r(t);var s=Znt(H1r(t));if(3<s>>>0)var o=Q1r(t);else switch(s){case 0:for(;;){var v=Fut(H1r(t));if(3<v>>>0)o=Q1r(t);else switch(v){case 0:continue;case 1:o=a(t);break;case 2:o=f(t);break;default:o=c(t)}break}break;case 1:o=a(t);break;case 2:o=f(t);break;default:o=c(t)}return 0===o?[0,r,Pat(4,k2r(t))]:TQr(UXr)}));case 25:return jat(r,t,(function(r,t){function e(r){for(;;){var t=Nnt(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:continue;case 1:r:for(;;){if(0===Int(H1r(r)))for(;;){var e=Nnt(H1r(r));if(2<e>>>0)return Q1r(r);switch(e){case 0:continue;case 1:continue r;default:return 0}}return Q1r(r)}default:return 0}}}function n(r){return 0===Int(H1r(r))?e(r):Q1r(r)}function u(r){var t=cut(H1r(r));return 0===t?e(r):1===t?0:Q1r(r)}function a(r){for(;;){var t=jut(H1r(r));if(0===t)return u(r);if(1!==t)return Q1r(r)}}function i(r){for(;;){var t=kat(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:return u(r);case 1:continue;default:r:for(;;){if(0===Int(H1r(r)))for(;;){var e=kat(H1r(r));if(2<e>>>0)return Q1r(r);switch(e){case 0:return u(r);case 1:continue;default:continue r}}return Q1r(r)}}}}$1r(t);var f=Znt(H1r(t));if(3<f>>>0)var c=Q1r(t);else switch(f){case 0:for(;;){var s=Fut(H1r(t));if(3<s>>>0)c=Q1r(t);else switch(s){case 0:continue;case 1:c=n(t);break;case 2:c=a(t);break;default:c=i(t)}break}break;case 1:c=n(t);break;case 2:c=a(t);break;default:c=i(t)}if(0===c){var o=k2r(t);return[0,xat(r,Cat(r,t),20),Nat(2,o)]}return TQr(jXr)}));case 26:return jat(r,t,(function(r,t){function e(r){for(;;){var t=cut(H1r(r));if(0!==t)return 1===t?0:Q1r(r)}}function n(r){for(;;){var t=Nnt(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:continue;case 1:r:for(;;){if(0===Int(H1r(r)))for(;;){var e=Nnt(H1r(r));if(2<e>>>0)return Q1r(r);switch(e){case 0:continue;case 1:continue r;default:return 0}}return Q1r(r)}default:return 0}}}$1r(t);var u=H1r(t),a=44<u?57<u?-1:Cd(Jqr,u+-45|0)-1|0:-1;if(2<a>>>0)var i=Q1r(t);else switch(a){case 0:for(;;){var f=tat(H1r(t));if(2<f>>>0)i=Q1r(t);else switch(f){case 0:continue;case 1:i=e(t);break;default:i=n(t)}break}break;case 1:i=e(t);break;default:i=n(t)}return 0===i?[0,r,Nat(2,k2r(t))]:TQr(MXr)}));case 27:var Dc=k2r(t);return[0,xat(r,Cat(r,t),20),Nat(2,Dc)];case 29:return jat(r,t,(function(r,t){function e(r){for(;;){K1r(r,0);var t=$ut(H1r(r));if(0!==t){if(1===t)r:for(;;){if(0===Int(H1r(r)))for(;;){K1r(r,0);var e=$ut(H1r(r));if(0!==e){if(1===e)continue r;return Q1r(r)}}return Q1r(r)}return Q1r(r)}}}function n(r){return K1r(r,0),0===Int(H1r(r))?e(r):Q1r(r)}$1r(t);var u=Znt(H1r(t));if(3<u>>>0)var a=Q1r(t);else switch(u){case 0:for(;;){var i=tat(H1r(t));if(2<i>>>0)a=Q1r(t);else switch(i){case 0:continue;case 1:for(;;){K1r(t,0);var f=jut(H1r(t));if(0===f)a=0;else{if(1===f)continue;a=Q1r(t)}break}break;default:for(;;){K1r(t,0);var c=kat(H1r(t));if(2<c>>>0)a=Q1r(t);else switch(c){case 0:a=0;break;case 1:continue;default:r:for(;;){if(0===Int(H1r(t)))for(;;){K1r(t,0);var s=kat(H1r(t));if(2<s>>>0)var o=Q1r(t);else switch(s){case 0:o=0;break;case 1:continue;default:continue r}break}else o=Q1r(t);a=o;break}}break}}break}break;case 1:a=0===Int(H1r(t))?e(t):Q1r(t);break;case 2:for(;;){K1r(t,0);var v=jut(H1r(t));if(0===v)a=n(t);else{if(1===v)continue;a=Q1r(t)}break}break;default:for(;;){K1r(t,0);var l=kat(H1r(t));if(2<l>>>0)a=Q1r(t);else switch(l){case 0:a=n(t);break;case 1:continue;default:r:for(;;){if(0===Int(H1r(t)))for(;;){K1r(t,0);var b=kat(H1r(t));if(2<b>>>0)var D=Q1r(t);else switch(b){case 0:D=n(t);break;case 1:continue;default:continue r}break}else D=Q1r(t);a=D;break}}break}}return 0===a?[0,r,Pat(4,k2r(t))]:TQr(RXr)}));case 31:return[0,r,111];case 32:return[0,r,ZXr];case 33:return[0,r,rJr];case 34:return[0,r,113];case 35:return[0,r,41];case 36:return[0,r,30];case 37:return[0,r,53];case 38:return[0,r,112];case 39:return[0,r,29];case 18:case 28:return[0,r,Nat(2,k2r(t))];default:return[0,r,Pat(4,k2r(t))]}})),Kat=Vat((function(r,t){function f(r,t){for(;;){K1r(t,87);var e=Jnt(H1r(t));if(0!==e)return 1===e?r<50?s(r+1|0,t):Bd(s,[0,t]):Q1r(t)}}function s(r,t){if(0===dat(H1r(t))){var e=Xut(H1r(t));if(0===e)return 0===Pnt(H1r(t))&&0===Pnt(H1r(t))&&0===Pnt(H1r(t))?r<50?f(r+1|0,t):Bd(f,[0,t]):Q1r(t);if(1===e){if(0===Pnt(H1r(t)))for(;;){var n=Gnt(H1r(t));if(0!==n)return 1===n?r<50?f(r+1|0,t):Bd(f,[0,t]):Q1r(t)}return Q1r(t)}return Q1r(t)}return Q1r(t)}function p(r){return Ad(f(0,r))}function m(r){return Ad(s(0,r))}function y(r){for(;;)if(K1r(r,34),0!==Fat(H1r(r)))return Q1r(r)}function E(r){for(;;)if(K1r(r,28),0!==Fat(H1r(r)))return Q1r(r)}function B(r){K1r(r,27);var t=but(H1r(r));if(0===t)for(;;)if(K1r(r,26),0!==Fat(H1r(r)))return Q1r(r);return 1===t?E(r):Q1r(r)}function I(r){for(;;)if(K1r(r,28),0!==Fat(H1r(r)))return Q1r(r)}function N(r){K1r(r,27);var t=but(H1r(r));if(0===t)for(;;)if(K1r(r,26),0!==Fat(H1r(r)))return Q1r(r);return 1===t?I(r):Q1r(r)}function M(r){r:for(;;){if(0===Int(H1r(r)))for(;;){K1r(r,29);var t=Wut(H1r(r));if(3<t>>>0)return Q1r(r);switch(t){case 0:return I(r);case 1:continue;case 2:continue r;default:return N(r)}}return Q1r(r)}}function U(r){K1r(r,34);var t=eat(H1r(r));if(3<t>>>0)return Q1r(r);switch(t){case 0:return y(r);case 1:var e=nut(H1r(r));if(0===e)for(;;){K1r(r,29);var n=qnt(H1r(r));if(2<n>>>0)return Q1r(r);switch(n){case 0:return I(r);case 1:continue;default:return N(r)}}if(1===e)for(;;){K1r(r,29);var u=Wut(H1r(r));if(3<u>>>0)return Q1r(r);switch(u){case 0:return I(r);case 1:continue;case 2:return M(r);default:return N(r)}}return Q1r(r);case 2:for(;;){K1r(r,29);var a=qnt(H1r(r));if(2<a>>>0)return Q1r(r);switch(a){case 0:return E(r);case 1:continue;default:return B(r)}}default:for(;;){K1r(r,29);var i=Wut(H1r(r));if(3<i>>>0)return Q1r(r);switch(i){case 0:return E(r);case 1:continue;case 2:return M(r);default:return B(r)}}}}function X(r){K1r(r,32);var t=but(H1r(r));if(0===t)for(;;)if(K1r(r,30),0!==Fat(H1r(r)))return Q1r(r);return 1===t?y(r):Q1r(r)}function G(r){return K1r(r,4),0===mat(H1r(r))?4:Q1r(r)}function q(r){return 0===Put(H1r(r))&&0===wut(H1r(r))&&0===iat(H1r(r))&&0===Iut(H1r(r))&&0===Out(H1r(r))&&0===dut(H1r(r))&&0===hut(H1r(r))&&0===Put(H1r(r))&&0===dat(H1r(r))&&0===Nut(H1r(r))&&0===rat(H1r(r))?4:Q1r(r)}function z(r){K1r(r,35);var t=Sut(H1r(r));if(3<t>>>0)return Q1r(r);switch(t){case 0:return y(r);case 1:for(;;){K1r(r,35);var e=Tut(H1r(r));if(4<e>>>0)return Q1r(r);switch(e){case 0:return y(r);case 1:continue;case 2:return U(r);case 3:r:for(;;){if(0===Int(H1r(r)))for(;;){K1r(r,35);var n=Tut(H1r(r));if(4<n>>>0)return Q1r(r);switch(n){case 0:return y(r);case 1:continue;case 2:return U(r);case 3:continue r;default:return X(r)}}return Q1r(r)}default:return X(r)}}case 2:return U(r);default:return X(r)}}function V(r){for(;;)if(K1r(r,20),0!==Fat(H1r(r)))return Q1r(r)}function W(r){K1r(r,35);var t=qnt(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:return y(r);case 1:for(;;){K1r(r,35);var e=Wut(H1r(r));if(3<e>>>0)return Q1r(r);switch(e){case 0:return y(r);case 1:continue;case 2:r:for(;;){if(0===Int(H1r(r)))for(;;){K1r(r,35);var n=Wut(H1r(r));if(3<n>>>0)return Q1r(r);switch(n){case 0:return y(r);case 1:continue;case 2:continue r;default:return X(r)}}return Q1r(r)}default:return X(r)}}default:return X(r)}}function K(r){for(;;)if(K1r(r,18),0!==Fat(H1r(r)))return Q1r(r)}function Z(r){for(;;)if(K1r(r,18),0!==Fat(H1r(r)))return Q1r(r)}function rr(r){for(;;)if(K1r(r,12),0!==Fat(H1r(r)))return Q1r(r)}function ur(r){for(;;)if(K1r(r,12),0!==Fat(H1r(r)))return Q1r(r)}function or(r){for(;;)if(K1r(r,16),0!==Fat(H1r(r)))return Q1r(r)}function Dr(r){for(;;)if(K1r(r,16),0!==Fat(H1r(r)))return Q1r(r)}function pr(r){for(;;)if(K1r(r,24),0!==Fat(H1r(r)))return Q1r(r)}function hr(r){for(;;)if(K1r(r,24),0!==Fat(H1r(r)))return Q1r(r)}function _r(r){K1r(r,33);var t=but(H1r(r));if(0===t)for(;;)if(K1r(r,31),0!==Fat(H1r(r)))return Q1r(r);return 1===t?y(r):Q1r(r)}function Pr(r){r:for(;;){if(0===Int(H1r(r)))for(;;){K1r(r,35);var t=Kut(H1r(r));if(4<t>>>0)return Q1r(r);switch(t){case 0:return y(r);case 1:return W(r);case 2:continue;case 3:continue r;default:return _r(r)}}return Q1r(r)}}$1r(t);var Mr=H1r(t),Xr=kr<Mr?gs<Mr?Co<Mr?We<Mr?Zt<Mr?pi<Mr?pv<Mr?Or<Mr?1:8:vc<Mr?ds<Mr?1:8:ro<Mr?1:8:sk<Mr?Bl<Mr?Ea<Mr?1:8:wv<Mr?1:8:ta<Mr?Ob<Mr?1:8:me<Mr?1:8:ek<Mr?MD<Mr?Uo<Mr?yD<Mr?Cl<Mr?1:8:sn<Mr?1:8:Hu<Mr?$i<Mr?1:8:Wc<Mr?1:8:it<Mr?ec<Mr?_s<Mr?1:8:Jo<Mr?1:8:zv<Mr?Ic<Mr?1:8:ol<Mr?1:8:_v<Mr?Q<Mr?ln<Mr?rf<Mr?1:8:yf<Mr?1:8:rb<Mr?Sv<Mr?1:8:Vt<Mr?1:8:Gu<Mr?qt<Mr?x<Mr?1:8:Jc<Mr?1:8:Hs<Mr?Po<Mr?1:8:Ei<Mr?1:8:qc<Mr?jc<Mr?tt<Mr?uc<Mr?Nu<Mr?Un<Mr?1:8:Rr<Mr?1:8:gv<Mr?Wo<Mr?1:8:yl<Mr?1:8:Zc<Mr?gD<Mr?fi<Mr?1:8:an<Mr?1:8:zc<Mr?os<Mr?1:8:ru<Mr?1:8:bi<Mr?Ur<Mr?Ks<Mr?Dl<Mr?1:8:zf<Mr?1:8:mr<Mr?Zo<Mr?1:8:au<Mr?1:8:Wf<Mr?Ao<Mr?Jt<Mr?1:8:xo<Mr?1:8:Se<Mr?QD<Mr?1:8:Il<Mr?1:8:zn<Mr?Er<Mr?Ps<Mr?br<Mr?wb<Mr?1:8:zt<Mr?1:8:qa<Mr?Pt<Mr?1:8:Wa<Mr?1:8:xc<Mr?ha<Mr?vf<Mr?1:8:Wt<Mr?1:8:$a<Mr?Zr<Mr?1:8:Ql<Mr?1:8:qu<Mr?Ho<Mr?Kr<Mr?ke<Mr?1:8:Uc<Mr?1:8:jn<Mr?rs<Mr?1:8:ua<Mr?1:8:wu<Mr?pf<Mr?uo<Mr?1:8:dk<Mr?1:8:xk<Mr?$<Mr?1:8:wf<Mr?1:8:Io<Mr?Cb<Mr?Y<Mr?hv<Mr?Qn<Mr?Pi<Mr?cn<Mr?1:8:ir<Mr?1:8:Kn<Mr?Ac<Mr?1:8:Ub<Mr?1:8:Gb<Mr?Ls<Mr?Cr<Mr?1:8:tn<Mr?1:8:DD<Mr?Wi<Mr?1:8:If<Mr?1:8:vt<Mr?sa<Mr?e<Mr?Ee<Mr?1:8:tc<Mr?1:8:oo<Mr?Ze<Mr?1:8:ct<Mr?1:8:Mn<Mr?Zs<Mr?gi<Mr?1:8:Bi<Mr?1:8:hf<Mr?dt<Mr?1:8:ps<Mr?1:8:la<Mr?Yv<Mr?Ji<Mr?fe<Mr?as<Mr?1:8:xi<Mr?1:8:ok<Mr?Xo<Mr?1:8:Mu<Mr?1:8:kl<Mr?Fb<Mr?Vf<Mr?1:8:Lf<Mr?1:8:_b<Mr?ov<Mr?1:8:Di<Mr?1:8:Xl<Mr?js<Mr?An<Mr?Mo<Mr?1:8:b<Mr?1:8:Bt<Mr?bD<Mr?1:8:ai<Mr?1:8:Ge<Mr?g<Mr?fc<Mr?1:8:Oe<Mr?1:8:hD<Mr?Pf<Mr?1:8:le<Mr?1:8:Ai<Mr?mf<Mr?qi<Mr?Tr<Mr?KD<Mr?eu<Mr?1:8:cs<Mr?1:8:ID<Mr?Js<Mr?1:8:A<Mr?1:8:Ki<Mr?Ak<Mr?dc<Mr?1:8:$u<Mr?1:8:wr<Mr?Af<Mr?1:8:Rs<Mr?1:8:Ui<Mr?Jf<Mr?eo<Mr?cc<Mr?1:8:yv<Mr?1:8:Vs<Mr?mu<Mr?1:8:Ar<Mr?1:8:ND<Mr?F<Mr?ck<Mr?1:8:Bn<Mr?1:8:_c<Mr?cr<Mr?1:8:Qe<Mr?1:8:nn<Mr?zD<Mr?Ri<Mr?Ma<Mr?ub<Mr?1:8:Hc<Mr?1:8:Es<Mr?Fl<Mr?1:8:be<Mr?1:8:gu<Mr?ja<Mr?nr<Mr?1:8:bu<Mr?1:8:rD<Mr?Br<Mr?1:8:qn<Mr?1:8:oi<Mr?av<Mr?$D<Mr?Ra<Mr?1:8:xu<Mr?1:8:zs<Mr?lt<Mr?1:8:It<Mr?1:8:Qb<Mr?VD<Mr?Fo<Mr?1:8:Do<Mr?1:8:Yb<Mr?Ju<Mr?1:8:Ot<Mr?1:8:aa<Mr?co<Mr?iu<Mr?u<Mr?Nv<Mr?Hi<Mr?Kt<Mr?Os<Mr?1:8:$b<Mr?1:8:C<Mr?Nb<Mr?1:8:Ir<Mr?1:8:_l<Mr?Sf<Mr?$f<Mr?1:8:we<Mr?1:8:iv<Mr?Xt<Mr?1:2:jb<Mr?1:8:tb<Mr?ml<Mr?cv<Mr?hc<Mr?1:8:ht<Mr?1:8:Mk<Mr?Ua<Mr?1:8:rc<Mr?1:8:dl<Mr?wc<Mr?Kl<Mr?1:8:ob<Mr?1:8:ma<Mr?ii<Mr?1:8:Su<Mr?1:8:mt<Mr?ac<Mr?l<Mr?Za<Mr?Ko<Mr?1:8:wn<Mr?1:8:_D<Mr?tv<Mr?1:8:Lk<Mr?1:8:Sc<Mr?Bs<Mr?Fk<Mr?1:8:Sn<Mr?1:8:Ja<Mr?jt<Mr?1:8:zr<Mr?1:8:Xi<Mr?hs<Mr?Ro<Mr?oc<Mr?1:8:eD<Mr?1:8:pt<Mr?nu<Mr?1:8:rk<Mr?1:8:Is<Mr?ui<Mr?ne<Mr?1:8:Da<Mr?1:8:Wu<Mr?Pa<Mr?1:8:Ku<Mr?1:8:Gc<Mr?ab<Mr?Kf<Mr?lf<Mr?Gf<Mr?vD<Mr?1:8:Rl<Mr?1:8:se<Mr?h<Mr?1:8:ze<Mr?1:8:Bc<Mr?Yu<Mr?mi<Mr?1:8:vv<Mr?1:8:li<Mr?Ws<Mr?1:8:fl<Mr?1:8:Ek<Mr?wa<Mr?Va<Mr?uk<Mr?1:8:qr<Mr?1:8:Ni<Mr?Rc<Mr?1:8:Nk<Mr?1:8:L<Mr?bn<Mr?da<Mr?1:8:Ue<Mr?1:8:Xf<Mr?R<Mr?1:8:ho<Mr?1:8:Iu<Mr?Sr<Mr?Ut<Mr?Fr<Mr?Lo<Mr?1:8:Yi<Mr?1:8:ni<Mr?dD<Mr?1:8:vk<Mr?1:8:Xe<Mr?dv<Mr?rt<Mr?1:8:Rk<Mr?1:8:ib<Mr?Qr<Mr?1:8:re<Mr?1:8:Pe<Mr?pk<Mr?i<Mr?Ln<Mr?1:8:ya<Mr?1:8:Wl<Mr?Qc<Mr?1:8:Ts<Mr?1:8:ys<Mr?rv<Mr?LD<Mr?1:8:Kv<Mr?1:8:Wv<Mr?pb<Mr?1:8:WD<Mr?1:8:cu<Mr?Mt<Mr?lu<Mr?Ca<Mr?ms<Mr?Ne<Mr?v<Mr?1:8:fa<Mr?1:8:Tu<Mr?Cv<Mr?1:8:Nc<Mr?1:8:Ec<Mr?tD<Mr?Qo<Mr?1:8:To<Mr?1:8:eb<Mr?tr<Mr?1:8:Du<Mr?1:8:Oo<Mr?Qv<Mr?Ae<Mr?of<Mr?1:8:wt<Mr?1:8:ZD<Mr?rl<Mr?1:8:Kc<Mr?1:8:fu<Mr?fr<Mr?Vb<Mr?1:8:w<Mr?1:8:Go<Mr?Pb<Mr?1:8:Jr<Mr?1:8:Sb<Mr?vr<Mr?dn<Mr?Qu<Mr?ti<Mr?1:8:a<Mr?1:8:go<Mr?Xv<Mr?1:8:sr<Mr?1:8:On<Mr?Je<Mr?Bf<Mr?1:8:_i<Mr?1:8:Ml<Mr?Hn<Mr?1:8:ge<Mr?1:8:El<Mr?io<Mr?$r<Mr?db<Mr?1:2:Fe<Mr?1:8:$l<Mr?oD<Mr?1:8:$e<Mr?1:8:vs<Mr?PD<Mr?nf<Mr?1:8:k<Mr?1:8:BD<Mr?qs<Mr?1:8:qe<Mr?1:8:Jl<Mr?bf<Mr?gb<Mr?jo<Mr?hb<Mr?lD<Mr?1:8:ea<Mr?1:8:dr<Mr?Lr<Mr?1:8:Db<Mr?1:8:Bu<Mr?Yl<Mr?pu<Mr?1:8:mb<Mr?1:8:Wr<Mr?Te<Mr?1:8:yr<Mr?1:8:Ul<Mr?il<Mr?So<Mr?Pu<Mr?1:8:GD<Mr?1:8:Dk<Mr?zl<Mr?1:8:Ba<Mr?1:8:Xc<Mr?Ck<Mr?Ga<Mr?1:8:Ms<Mr?1:8:Iv<Mr?Ik<Mr?1:8:lr<Mr?1:8:on<Mr?n<Mr?hk<Mr?bl<Mr?Pv<Mr?1:8:wl<Mr?1:8:wi<Mr?nk<Mr?1:8:mc<Mr?1:8:ye<Mr?Et<Mr?al<Mr?1:8:fs<Mr?1:8:_u<Mr?ue<Mr?1:8:Zu<Mr?1:8:Qs<Mr?Wb<Mr?ws<Mr?ar<Mr?1:8:mo<Mr?1:8:ae<Mr?Rn<Mr?1:8:nD<Mr?1:8:S<Mr?Ib<Mr?gf<Mr?1:2:fD<Mr?1:2:zi<Mr?Of<Mr?1:3:Ct<Mr?1:2:Cd(rzr,Mr+1|0)-1|0;if(53<Xr>>>0)var Gr=Q1r(t);else switch(Xr){case 0:Gr=146;break;case 1:Gr=147;break;case 2:if(K1r(t,2),0===Ant(H1r(t))){for(;;)if(K1r(t,2),0!==Ant(H1r(t))){Gr=Q1r(t);break}}else Gr=Q1r(t);break;case 3:Gr=0;break;case 4:K1r(t,0);Gr=0===Gut(H1r(t))?0:Q1r(t);break;case 5:K1r(t,138);Gr=0===iut(H1r(t))?(K1r(t,111),0===iut(H1r(t))?107:Q1r(t)):Q1r(t);break;case 6:Gr=8;break;case 7:K1r(t,145);var Vr=H1r(t);Gr=0===(32<Vr?33<Vr?-1:0:-1)?7:Q1r(t);break;case 8:K1r(t,87);var Hr=Jnt(H1r(t));Gr=0===Hr?p(t):1===Hr?m(t):Q1r(t);break;case 9:K1r(t,134);Gr=0===iut(H1r(t))?124:Q1r(t);break;case 10:K1r(t,136);var nt=H1r(t),ut=37<nt?61<nt?-1:Cd(Ezr,nt-38|0)-1|0:-1;Gr=0===ut?Eu:1===ut?Gn:Q1r(t);break;case 11:Gr=91;break;case 12:Gr=92;break;case 13:K1r(t,132);var at=Aut(H1r(t));if(2<at>>>0)Gr=Q1r(t);else switch(at){case 0:K1r(t,133);Gr=0===iut(H1r(t))?123:Q1r(t);break;case 1:Gr=5;break;default:Gr=O}break;case 14:K1r(t,130);var ft=H1r(t),st=42<ft?61<ft?-1:Cd(_zr,ft+Yr|0)-1|0:-1;Gr=0===st?112:1===st?bb:Q1r(t);break;case 15:Gr=98;break;case 16:K1r(t,131);var bt=H1r(t),kt=44<bt?61<bt?-1:Cd(fGr,bt+-45|0)-1|0:-1;Gr=0===kt?113:1===kt?121:Q1r(t);break;case 17:K1r(t,96);var yt=jut(H1r(t));if(0===yt)Gr=0===xnt(H1r(t))?95:Q1r(t);else if(1===yt)for(;;){K1r(t,35);var _t=Tut(H1r(t));if(4<_t>>>0)Gr=Q1r(t);else switch(_t){case 0:Gr=y(t);break;case 1:continue;case 2:Gr=U(t);break;case 3:r:for(;;){if(0===Int(H1r(t)))for(;;){K1r(t,35);var St=Tut(H1r(t));if(4<St>>>0)var xt=Q1r(t);else switch(St){case 0:xt=y(t);break;case 1:continue;case 2:xt=U(t);break;case 3:continue r;default:xt=X(t)}break}else xt=Q1r(t);Gr=xt;break}break;default:Gr=X(t)}break}else Gr=Q1r(t);break;case 18:K1r(t,143);var Tt=Aut(H1r(t));if(2<Tt>>>0)Gr=Q1r(t);else switch(Tt){case 0:K1r(t,3);var At=Qnt(H1r(t));if(2<At>>>0)Gr=Q1r(t);else switch(At){case 0:for(;;){var Nt=Qnt(H1r(t));if(2<Nt>>>0)Gr=Q1r(t);else switch(Nt){case 0:continue;case 1:Gr=G(t);break;default:Gr=q(t)}break}break;case 1:Gr=G(t);break;default:Gr=q(t)}break;case 1:Gr=6;break;default:Gr=142}break;case 19:K1r(t,35);var Rt=Jut(H1r(t));if(8<Rt>>>0)Gr=Q1r(t);else switch(Rt){case 0:Gr=y(t);break;case 1:Gr=z(t);break;case 2:for(;;){K1r(t,21);var Gt=aat(H1r(t));if(4<Gt>>>0)Gr=Q1r(t);else switch(Gt){case 0:Gr=V(t);break;case 1:Gr=W(t);break;case 2:continue;case 3:for(;;){K1r(t,19);var Yt=Knt(H1r(t));if(3<Yt>>>0)Gr=Q1r(t);else switch(Yt){case 0:Gr=K(t);break;case 1:Gr=W(t);break;case 2:continue;default:K1r(t,18);var $t=but(H1r(t));if(0===$t){for(;;)if(K1r(t,18),0!==Fat(H1r(t))){Gr=Q1r(t);break}}else Gr=1===$t?K(t):Q1r(t)}break}break;default:K1r(t,20);var Qt=but(H1r(t));if(0===Qt){for(;;)if(K1r(t,20),0!==Fat(H1r(t))){Gr=Q1r(t);break}}else Gr=1===Qt?V(t):Q1r(t)}break}break;case 3:for(;;){K1r(t,19);var te=Knt(H1r(t));if(3<te>>>0)Gr=Q1r(t);else switch(te){case 0:Gr=Z(t);break;case 1:Gr=W(t);break;case 2:continue;default:K1r(t,18);var ee=but(H1r(t));if(0===ee){for(;;)if(K1r(t,18),0!==Fat(H1r(t))){Gr=Q1r(t);break}}else Gr=1===ee?Z(t):Q1r(t)}break}break;case 4:K1r(t,34);var ce=Uut(H1r(t));if(0===ce)Gr=y(t);else if(1===ce)for(;;){K1r(t,13);var oe=uat(H1r(t));if(3<oe>>>0)Gr=Q1r(t);else switch(oe){case 0:Gr=rr(t);break;case 1:continue;case 2:r:for(;;){if(0===tut(H1r(t)))for(;;){K1r(t,13);var he=uat(H1r(t));if(3<he>>>0)var Ce=Q1r(t);else switch(he){case 0:Ce=ur(t);break;case 1:continue;case 2:continue r;default:K1r(t,11);var xe=but(H1r(t));if(0===xe){for(;;)if(K1r(t,10),0!==Fat(H1r(t))){Ce=Q1r(t);break}}else Ce=1===xe?ur(t):Q1r(t)}break}else Ce=Q1r(t);Gr=Ce;break}break;default:K1r(t,11);var Be=but(H1r(t));if(0===Be){for(;;)if(K1r(t,10),0!==Fat(H1r(t))){Gr=Q1r(t);break}}else Gr=1===Be?rr(t):Q1r(t)}break}else Gr=Q1r(t);break;case 5:Gr=U(t);break;case 6:K1r(t,34);var Ie=qut(H1r(t));if(0===Ie)Gr=y(t);else if(1===Ie)for(;;){K1r(t,17);var Le=Hut(H1r(t));if(3<Le>>>0)Gr=Q1r(t);else switch(Le){case 0:Gr=or(t);break;case 1:continue;case 2:r:for(;;){if(0===put(H1r(t)))for(;;){K1r(t,17);var Re=Hut(H1r(t));if(3<Re>>>0)var Me=Q1r(t);else switch(Re){case 0:Me=Dr(t);break;case 1:continue;case 2:continue r;default:K1r(t,15);var je=but(H1r(t));if(0===je){for(;;)if(K1r(t,14),0!==Fat(H1r(t))){Me=Q1r(t);break}}else Me=1===je?Dr(t):Q1r(t)}break}else Me=Q1r(t);Gr=Me;break}break;default:K1r(t,15);var Ke=but(H1r(t));if(0===Ke){for(;;)if(K1r(t,14),0!==Fat(H1r(t))){Gr=Q1r(t);break}}else Gr=1===Ke?or(t):Q1r(t)}break}else Gr=Q1r(t);break;case 7:K1r(t,34);var rn=Xnt(H1r(t));if(0===rn)Gr=y(t);else if(1===rn)for(;;){K1r(t,25);var en=fat(H1r(t));if(3<en>>>0)Gr=Q1r(t);else switch(en){case 0:Gr=pr(t);break;case 1:continue;case 2:r:for(;;){if(0===Pnt(H1r(t)))for(;;){K1r(t,25);var un=fat(H1r(t));if(3<un>>>0)var fn=Q1r(t);else switch(un){case 0:fn=hr(t);break;case 1:continue;case 2:continue r;default:K1r(t,23);var vn=but(H1r(t));if(0===vn){for(;;)if(K1r(t,22),0!==Fat(H1r(t))){fn=Q1r(t);break}}else fn=1===vn?hr(t):Q1r(t)}break}else fn=Q1r(t);Gr=fn;break}break;default:K1r(t,23);var Dn=but(H1r(t));if(0===Dn){for(;;)if(K1r(t,22),0!==Fat(H1r(t))){Gr=Q1r(t);break}}else Gr=1===Dn?pr(t):Q1r(t)}break}else Gr=Q1r(t);break;default:Gr=_r(t)}break;case 20:K1r(t,35);var kn=uut(H1r(t));if(5<kn>>>0)Gr=Q1r(t);else switch(kn){case 0:Gr=y(t);break;case 1:Gr=z(t);break;case 2:for(;;){K1r(t,35);var pn=uut(H1r(t));if(5<pn>>>0)Gr=Q1r(t);else switch(pn){case 0:Gr=y(t);break;case 1:Gr=z(t);break;case 2:continue;case 3:Gr=U(t);break;case 4:Gr=Pr(t);break;default:Gr=_r(t)}break}break;case 3:Gr=U(t);break;case 4:Gr=Pr(t);break;default:Gr=_r(t)}break;case 21:Gr=99;break;case 22:Gr=97;break;case 23:K1r(t,j);var hn=H1r(t),mn=59<hn?61<hn?-1:Cd(tw,hn-60|0)-1|0:-1;Gr=0===mn?(K1r(t,115),0===iut(H1r(t))?tf:Q1r(t)):1===mn?108:Q1r(t);break;case 24:K1r(t,140);var Fn=out(H1r(t));Gr=0===Fn?(K1r(t,De),0===iut(H1r(t))?106:Q1r(t)):1===Fn?141:Q1r(t);break;case 25:K1r(t,129);var En=out(H1r(t));if(0===En)Gr=109;else if(1===En){K1r(t,119);var _n=out(H1r(t));Gr=0===_n?de:1===_n?(K1r(t,118),0===iut(H1r(t))?117:Q1r(t)):Q1r(t)}else Gr=Q1r(t);break;case 26:K1r(t,kb);var gn=H1r(t),Cn=45<gn?63<gn?-1:Cd(qqr,gn+no|0)-1|0:-1;Gr=0===Cn?(K1r(t,ju),0===Int(H1r(t))?ra:Q1r(t)):1===Cn?Au:Q1r(t);break;case 27:K1r(t,144);var xn=H1r(t);if(0===(63<xn?64<xn?-1:0:-1)){var Tn=H1r(t),In=96<Tn?105<Tn?-1:Cd(lzr,Tn+Ka|0)-1|0:-1;if(0===In)if(0===aut(H1r(t))){var Pn=H1r(t);if(0===(bb<Pn?121<Pn?-1:0:-1))if(0===dut(H1r(t)))if(0===hut(H1r(t))){var Nn=H1r(t);Gr=0===(72<Nn?73<Nn?-1:0:-1)&&0===Dut(H1r(t))&&0===rat(H1r(t))&&0===Mut(H1r(t))&&0===zut(H1r(t))&&0===Dut(H1r(t))&&0===wut(H1r(t))&&0===Mut(H1r(t))?88:Q1r(t)}else Gr=Q1r(t);else Gr=Q1r(t);else Gr=Q1r(t)}else Gr=Q1r(t);else Gr=1===In&&0===Dut(H1r(t))&&0===rat(H1r(t))&&0===Mut(H1r(t))&&0===zut(H1r(t))&&0===Dut(H1r(t))&&0===wut(H1r(t))&&0===Mut(H1r(t))?88:Q1r(t)}else Gr=Q1r(t);break;case 28:Gr=93;break;case 29:if(K1r(t,1),0===dat(H1r(t))){var Xn=Xut(H1r(t));if(0===Xn)Gr=0===Pnt(H1r(t))&&0===Pnt(H1r(t))&&0===Pnt(H1r(t))?p(t):Q1r(t);else if(1===Xn)if(0===Pnt(H1r(t)))for(;;){var Vn=Gnt(H1r(t));if(0!==Vn){Gr=1===Vn?p(t):Q1r(t);break}}else Gr=Q1r(t);else Gr=Q1r(t)}else Gr=Q1r(t);break;case 30:Gr=94;break;case 31:K1r(t,137);Gr=0===iut(H1r(t))?Yc:Q1r(t);break;case 32:Gr=9;break;case 33:K1r(t,87);var Wn=H1r(t),tu=35<Wn?Al<Wn?ie<Wn?Qf<Wn?-1:Cl<Wn?Zt<Wn?Ea<Wn?pi<Wn?ds<Wn?pv<Wn?Or<Wn?He<Wn?0:-1:0:-1:ro<Wn?vc<Wn?0:-1:0:-1:Ob<Wn?sk<Wn?wv<Wn?Bl<Wn?0:-1:0:-1:me<Wn?ta<Wn?0:-1:0:-1:Os<Wn?gs<Wn?Gs<Wn?nv<Wn?Il<Wn?Se<Wn?Un<Wn?We<Wn?rf<Wn?ek<Wn?_s<Wn?MD<Wn?$i<Wn?Uo<Wn?sn<Wn?yD<Wn?0:-1:0:-1:Wc<Wn?Hu<Wn?0:-1:0:-1:Ic<Wn?it<Wn?Jo<Wn?ec<Wn?0:-1:0:-1:ol<Wn?zv<Wn?0:-1:0:-1:x<Wn?_v<Wn?Sv<Wn?Q<Wn?yf<Wn?ln<Wn?0:-1:0:-1:Vt<Wn?rb<Wn?0:-1:0:-1:Po<Wn?Gu<Wn?Jc<Wn?qt<Wn?0:-1:0:-1:Ei<Wn?Hs<Wn?0:-1:0:-1:Dl<Wn?jc<Wn?fi<Wn?tt<Wn?Wo<Wn?uc<Wn?Rr<Wn?Nu<Wn?0:-1:0:-1:yl<Wn?gv<Wn?0:-1:0:-1:os<Wn?Zc<Wn?an<Wn?gD<Wn?0:-1:0:-1:ru<Wn?zc<Wn?0:-1:0:-1:Jt<Wn?bi<Wn?Zo<Wn?Ur<Wn?zf<Wn?Ks<Wn?0:-1:0:-1:au<Wn?mr<Wn?0:-1:0:-1:xD<Wn?Wf<Wn?xo<Wn?Ao<Wn?0:-1:0:-1:QD<Wn?AD<Wn?0:-1:0:-1:wf<Wn?xk<Wn?Ql<Wn?$a<Wn?Wa<Wn?qa<Wn?zt<Wn?br<Wn?wb<Wn?qc<Wn?0:-1:0:-1:Pt<Wn?Ps<Wn?0:-1:0:-1:Wt<Wn?ha<Wn?vf<Wn?Er<Wn?0:-1:0:-1:Zr<Wn?xc<Wn?0:-1:0:-1:ua<Wn?jn<Wn?Uc<Wn?Kr<Wn?ke<Wn?zn<Wn?0:-1:0:-1:rs<Wn?Ho<Wn?0:-1:0:-1:dk<Wn?pf<Wn?uo<Wn?qu<Wn?0:-1:0:-1:$<Wn?wu<Wn?0:-1:0:-1:If<Wn?DD<Wn?Ub<Wn?Kn<Wn?ir<Wn?Pi<Wn?cn<Wn?Co<Wn?0:-1:0:-1:Ac<Wn?Qn<Wn?0:-1:0:-1:tn<Wn?Ls<Wn?Cr<Wn?hv<Wn?0:-1:0:-1:Wi<Wn?Gb<Wn?0:-1:0:-1:ct<Wn?oo<Wn?tc<Wn?e<Wn?Ee<Wn?Y<Wn?0:-1:0:-1:Ze<Wn?sa<Wn?0:-1:0:-1:sf<Wn?Ha<Wn?Uf<Wn?vt<Wn?0:-1:0:-1:La<Wn?Fv<Wn?0:-1:0:-1:ao<Wn?o<Wn?vu<Wn?Zn<Wn?xi<Wn?fe<Wn?Bi<Wn?Zs<Wn?HD<Wn?zo<Wn?pe<Wn?Tk<Wn?0:-1:0:-1:gi<Wn?ts<Wn?0:-1:0:-1:ps<Wn?hf<Wn?As<Wn?pa<Wn?0:-1:0:-1:as<Wn?Cb<Wn?0:-1:0:-1:jf<Wn?gt<Wn?Mu<Wn?ok<Wn?Xo<Wn?Ji<Wn?0:-1:0:-1:D<Wn?Yv<Wn?0:-1:0:-1:Lf<Wn?$s<Wn?Vl<Wn?Fb<Wn?0:-1:0:-1:Ab<Wn?ED<Wn?0:-1:0:-1:Oe<Wn?g<Wn?wk<Wn?Dv<Wn?Mo<Wn?_<Wn?Ti<Wn?Ve<Wn?0:-1:0:-1:Hl<Wn?An<Wn?0:-1:0:-1:ai<Wn?Hb<Wn?Yf<Wn?er<Wn?0:-1:0:-1:fc<Wn?Xl<Wn?0:-1:0:-1:Bv<Wn?_e<Wn?le<Wn?hD<Wn?Pf<Wn?Ge<Wn?0:-1:0:-1:Dt<Wn?Io<Wn?0:-1:0:-1:cs<Wn?KD<Wn?eu<Wn?hi<Wn?0:-1:0:-1:Js<Wn?Tr<Wn?0:-1:0:-1:Hc<Wn?Ma<Wn?mu<Wn?Jf<Wn?Af<Wn?Ki<Wn?dc<Wn?qi<Wn?hu<Wn?Aa<Wn?0:-1:0:-1:$u<Wn?Ak<Wn?0:-1:0:-1:cc<Wn?mf<Wn?Rs<Wn?wr<Wn?0:-1:0:-1:yv<Wn?eo<Wn?0:-1:0:-1:jr<Wn?ND<Wn?ck<Wn?Ui<Wn?Ar<Wn?Vs<Wn?0:-1:0:-1:Bn<Wn?F<Wn?0:-1:0:-1:Qe<Wn?_c<Wn?cr<Wn?Vv<Wn?0:-1:0:-1:ub<Wn?Ai<Wn?0:-1:0:-1:Ra<Wn?nn<Wn?bu<Wn?ja<Wn?be<Wn?Es<Wn?Fl<Wn?Ri<Wn?0:-1:0:-1:nr<Wn?zD<Wn?0:-1:0:-1:Vc<Wn?rD<Wn?Br<Wn?gu<Wn?0:-1:0:-1:qn<Wn?iD<Wn?0:-1:0:-1:Fo<Wn?oi<Wn?lt<Wn?av<Wn?xu<Wn?$D<Wn?0:-1:0:-1:It<Wn?zs<Wn?0:-1:0:-1:Ju<Wn?Qb<Wn?Do<Wn?VD<Wn?0:-1:0:-1:Ot<Wn?Yb<Wn?0:-1:0:-1:fa<Wn?Ne<Wn?Sl<Wn?Xi<Wn?rc<Wn?Mk<Wn?jb<Wn?ri<Wn?$f<Wn?Nv<Wn?Nb<Wn?Hi<Wn?$b<Wn?Kt<Wn?0:-1:0:-1:Ir<Wn?C<Wn?0:-1:0:-1:we<Wn?Ht<Wn?Lt<Wn?Sf<Wn?0:-1:0:-1:bk<Wn?_l<Wn?0:-1:0:-1:Uv<Wn?gc<Wn?gr<Wn?cv<Wn?hc<Wn?u<Wn?0:-1:0:-1:et<Wn?uv<Wn?0:-1:0:-1:ht<Wn?Bk<Wn?Ds<Wn?zb<Wn?0:-1:0:-1:Ua<Wn?ml<Wn?0:-1:0:-1:Lk<Wn?_D<Wn?Su<Wn?ma<Wn?ob<Wn?wc<Wn?Kl<Wn?tb<Wn?0:-1:0:-1:ii<Wn?dl<Wn?0:-1:0:-1:wn<Wn?Za<Wn?Ko<Wn?iu<Wn?0:-1:0:-1:tv<Wn?l<Wn?0:-1:0:-1:oc<Wn?mt<Wn?jt<Wn?Sc<Wn?Sn<Wn?Bs<Wn?0:-1:0:-1:zr<Wn?Ja<Wn?0:-1:0:-1:nu<Wn?hs<Wn?eD<Wn?Ro<Wn?0:-1:0:-1:rk<Wn?pt<Wn?0:-1:0:-1:Gv<Wn?Xf<Wn?ca<Wn?lf<Wn?Pa<Wn?Is<Wn?c<Wn?Bb<Wn?nb<Wn?T<Wn?0:-1:0:-1:Da<Wn?ui<Wn?0:-1:0:-1:vD<Wn?co<Wn?Ku<Wn?Wu<Wn?0:-1:0:-1:Rl<Wn?Gf<Wn?0:-1:0:-1:du<Wn?Ni<Wn?mi<Wn?Kf<Wn?hl<Wn?se<Wn?0:-1:0:-1:vv<Wn?Yu<Wn?0:-1:0:-1:$n<Wn?bn<Wn?da<Wn?Ek<Wn?0:-1:0:-1:d<Wn?oa<Wn?0:-1:0:-1:Mf<Wn?ul<Wn?TD<Wn?ni<Wn?mv<Wn?Fr<Wn?lk<Wn?Gc<Wn?0:-1:0:-1:dD<Wn?H<Wn?0:-1:0:-1:Rk<Wn?ji<Wn?yn<Wn?Sr<Wn?0:-1:0:-1:Qr<Wn?Xe<Wn?0:-1:0:-1:Kv<Wn?rv<Wn?Ln<Wn?gl<Wn?OD<Wn?P<Wn?0:-1:0:-1:Lc<Wn?i<Wn?0:-1:0:-1:WD<Wn?Wv<Wn?pb<Wn?ys<Wn?0:-1:0:-1:v<Wn?aa<Wn?0:-1:0:-1:ea<Wn?hb<Wn?a<Wn?Qu<Wn?wt<Wn?Ae<Wn?Nr<Wn?xr<Wn?Nc<Wn?kD<Wn?ve<Wn?ms<Wn?0:-1:0:-1:nc<Wn?Ca<Wn?0:-1:0:-1:Du<Wn?eb<Wn?To<Wn?tD<Wn?0:-1:0:-1:of<Wn?lu<Wn?0:-1:0:-1:w<Wn?fr<Wn?Kc<Wn?ZD<Wn?rl<Wn?Qv<Wn?0:-1:0:-1:Vb<Wn?Oo<Wn?0:-1:0:-1:Jr<Wn?Go<Wn?Pb<Wn?fu<Wn?0:-1:0:-1:ti<Wn?Mt<Wn?0:-1:0:-1:Fe<Wn?Mi<Wn?_i<Wn?Je<Wn?sr<Wn?Ol<Wn?Xv<Wn?dn<Wn?0:-1:0:-1:Bf<Wn?vr<Wn?0:-1:0:-1:ge<Wn?Ml<Wn?Jn<Wn?On<Wn?0:-1:0:-1:Cc<Wn?Sb<Wn?0:-1:0:-1:k<Wn?PD<Wn?$e<Wn?$l<Wn?oD<Wn?io<Wn?0:-1:0:-1:nf<Wn?El<Wn?0:-1:0:-1:qe<Wn?BD<Wn?qs<Wn?vs<Wn?0:-1:0:-1:lD<Wn?cu<Wn?0:-1:0:-1:nk<Wn?hk<Wn?zl<Wn?il<Wn?mb<Wn?Yl<Wn?Db<Wn?dr<Wn?Lr<Wn?fb<Wn?0:-1:0:-1:pu<Wn?gb<Wn?0:-1:0:-1:yr<Wn?Wr<Wn?Te<Wn?Bu<Wn?0:-1:0:-1:GD<Wn?So<Wn?0:-1:0:-1:Ik<Wn?Xc<Wn?Ga<Wn?Ul<Wn?Ba<Wn?Dk<Wn?0:-1:0:-1:Ms<Wn?Ck<Wn?0:-1:0:-1:Pv<Wn?Jl<Wn?lr<Wn?Iv<Wn?0:-1:0:-1:wl<Wn?bl<Wn?0:-1:0:-1:ot<Wn?Vo<Wn?ue<Wn?ye<Wn?al<Wn?n<Wn?mc<Wn?wi<Wn?0:-1:0:-1:fs<Wn?Et<Wn?0:-1:0:-1:ar<Wn?on<Wn?Zu<Wn?_u<Wn?0:-1:0:-1:$v<Wn?ws<Wn?0:-1:0:-1:nD<Wn?ae<Wn?mo<Wn?Yn<Wn?Df<Wn?Ye<Wn?0:-1:0:-1:Rn<Wn?Wb<Wn?0:-1:0:-1:pl<Wn?vi<Wn?JD<Wn?Qs<Wn?0:-1:0:-1:Fc<Wn?Ft<Wn?0:-1:0:-1:Cd(qGr,Wn+aD|0)-1|0:-1;if(3<tu>>>0)Gr=Q1r(t);else switch(tu){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var uu=yut(H1r(t));if(2<uu>>>0)Gr=Q1r(t);else switch(uu){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var su=rut(H1r(t));if(2<su>>>0)Gr=Q1r(t);else switch(su){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var ou=Lut(H1r(t));if(2<ou>>>0)Gr=Q1r(t);else switch(ou){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,36);var ku=Jnt(H1r(t));Gr=0===ku?p(t):1===ku?m(t):Q1r(t)}}}break;default:K1r(t,87);var Fu=fut(H1r(t));if(2<Fu>>>0)Gr=Q1r(t);else switch(Fu){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var yu=bat(H1r(t));if(2<yu>>>0)Gr=Q1r(t);else switch(yu){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Cu=Yut(H1r(t));if(2<Cu>>>0)Gr=Q1r(t);else switch(Cu){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,37);var Ou=Jnt(H1r(t));Gr=0===Ou?p(t):1===Ou?m(t):Q1r(t)}}}}break;case 34:K1r(t,87);var Lu=vut(H1r(t));if(2<Lu>>>0)Gr=Q1r(t);else switch(Lu){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Ru=Bnt(H1r(t));if(2<Ru>>>0)Gr=Q1r(t);else switch(Ru){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Uu=fut(H1r(t));if(2<Uu>>>0)Gr=Q1r(t);else switch(Uu){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Xu=Snt(H1r(t));if(2<Xu>>>0)Gr=Q1r(t);else switch(Xu){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,38);var zu=Jnt(H1r(t));Gr=0===zu?p(t):1===zu?m(t):Q1r(t)}}}}break;case 35:K1r(t,87);var Vu=H1r(t),na=35<Vu?Al<Vu?ie<Vu?Qf<Vu?-1:Cl<Vu?Zt<Vu?Ea<Vu?pi<Vu?ds<Vu?pv<Vu?Or<Vu?He<Vu?0:-1:0:-1:ro<Vu?vc<Vu?0:-1:0:-1:Ob<Vu?sk<Vu?wv<Vu?Bl<Vu?0:-1:0:-1:me<Vu?ta<Vu?0:-1:0:-1:Os<Vu?gs<Vu?Gs<Vu?nv<Vu?Il<Vu?Se<Vu?Un<Vu?We<Vu?rf<Vu?ek<Vu?_s<Vu?MD<Vu?$i<Vu?Uo<Vu?sn<Vu?yD<Vu?0:-1:0:-1:Wc<Vu?Hu<Vu?0:-1:0:-1:Ic<Vu?it<Vu?Jo<Vu?ec<Vu?0:-1:0:-1:ol<Vu?zv<Vu?0:-1:0:-1:x<Vu?_v<Vu?Sv<Vu?Q<Vu?yf<Vu?ln<Vu?0:-1:0:-1:Vt<Vu?rb<Vu?0:-1:0:-1:Po<Vu?Gu<Vu?Jc<Vu?qt<Vu?0:-1:0:-1:Ei<Vu?Hs<Vu?0:-1:0:-1:Dl<Vu?jc<Vu?fi<Vu?tt<Vu?Wo<Vu?uc<Vu?Rr<Vu?Nu<Vu?0:-1:0:-1:yl<Vu?gv<Vu?0:-1:0:-1:os<Vu?Zc<Vu?an<Vu?gD<Vu?0:-1:0:-1:ru<Vu?zc<Vu?0:-1:0:-1:Jt<Vu?bi<Vu?Zo<Vu?Ur<Vu?zf<Vu?Ks<Vu?0:-1:0:-1:au<Vu?mr<Vu?0:-1:0:-1:xD<Vu?Wf<Vu?xo<Vu?Ao<Vu?0:-1:0:-1:QD<Vu?AD<Vu?0:-1:0:-1:wf<Vu?xk<Vu?Ql<Vu?$a<Vu?Wa<Vu?qa<Vu?zt<Vu?br<Vu?wb<Vu?qc<Vu?0:-1:0:-1:Pt<Vu?Ps<Vu?0:-1:0:-1:Wt<Vu?ha<Vu?vf<Vu?Er<Vu?0:-1:0:-1:Zr<Vu?xc<Vu?0:-1:0:-1:ua<Vu?jn<Vu?Uc<Vu?Kr<Vu?ke<Vu?zn<Vu?0:-1:0:-1:rs<Vu?Ho<Vu?0:-1:0:-1:dk<Vu?pf<Vu?uo<Vu?qu<Vu?0:-1:0:-1:$<Vu?wu<Vu?0:-1:0:-1:If<Vu?DD<Vu?Ub<Vu?Kn<Vu?ir<Vu?Pi<Vu?cn<Vu?Co<Vu?0:-1:0:-1:Ac<Vu?Qn<Vu?0:-1:0:-1:tn<Vu?Ls<Vu?Cr<Vu?hv<Vu?0:-1:0:-1:Wi<Vu?Gb<Vu?0:-1:0:-1:ct<Vu?oo<Vu?tc<Vu?e<Vu?Ee<Vu?Y<Vu?0:-1:0:-1:Ze<Vu?sa<Vu?0:-1:0:-1:sf<Vu?Ha<Vu?Uf<Vu?vt<Vu?0:-1:0:-1:La<Vu?Fv<Vu?0:-1:0:-1:ao<Vu?o<Vu?vu<Vu?Zn<Vu?xi<Vu?fe<Vu?Bi<Vu?Zs<Vu?HD<Vu?zo<Vu?pe<Vu?Tk<Vu?0:-1:0:-1:gi<Vu?ts<Vu?0:-1:0:-1:ps<Vu?hf<Vu?As<Vu?pa<Vu?0:-1:0:-1:as<Vu?Cb<Vu?0:-1:0:-1:jf<Vu?gt<Vu?Mu<Vu?ok<Vu?Xo<Vu?Ji<Vu?0:-1:0:-1:D<Vu?Yv<Vu?0:-1:0:-1:Lf<Vu?$s<Vu?Vl<Vu?Fb<Vu?0:-1:0:-1:Ab<Vu?ED<Vu?0:-1:0:-1:Oe<Vu?g<Vu?wk<Vu?Dv<Vu?Mo<Vu?_<Vu?Ti<Vu?Ve<Vu?0:-1:0:-1:Hl<Vu?An<Vu?0:-1:0:-1:ai<Vu?Hb<Vu?Yf<Vu?er<Vu?0:-1:0:-1:fc<Vu?Xl<Vu?0:-1:0:-1:Bv<Vu?_e<Vu?le<Vu?hD<Vu?Pf<Vu?Ge<Vu?0:-1:0:-1:Dt<Vu?Io<Vu?0:-1:0:-1:cs<Vu?KD<Vu?eu<Vu?hi<Vu?0:-1:0:-1:Js<Vu?Tr<Vu?0:-1:0:-1:Hc<Vu?Ma<Vu?mu<Vu?Jf<Vu?Af<Vu?Ki<Vu?dc<Vu?qi<Vu?hu<Vu?Aa<Vu?0:-1:0:-1:$u<Vu?Ak<Vu?0:-1:0:-1:cc<Vu?mf<Vu?Rs<Vu?wr<Vu?0:-1:0:-1:yv<Vu?eo<Vu?0:-1:0:-1:jr<Vu?ND<Vu?ck<Vu?Ui<Vu?Ar<Vu?Vs<Vu?0:-1:0:-1:Bn<Vu?F<Vu?0:-1:0:-1:Qe<Vu?_c<Vu?cr<Vu?Vv<Vu?0:-1:0:-1:ub<Vu?Ai<Vu?0:-1:0:-1:Ra<Vu?nn<Vu?bu<Vu?ja<Vu?be<Vu?Es<Vu?Fl<Vu?Ri<Vu?0:-1:0:-1:nr<Vu?zD<Vu?0:-1:0:-1:Vc<Vu?rD<Vu?Br<Vu?gu<Vu?0:-1:0:-1:qn<Vu?iD<Vu?0:-1:0:-1:Fo<Vu?oi<Vu?lt<Vu?av<Vu?xu<Vu?$D<Vu?0:-1:0:-1:It<Vu?zs<Vu?0:-1:0:-1:Ju<Vu?Qb<Vu?Do<Vu?VD<Vu?0:-1:0:-1:Ot<Vu?Yb<Vu?0:-1:0:-1:fa<Vu?Ne<Vu?Sl<Vu?Xi<Vu?rc<Vu?Mk<Vu?jb<Vu?ri<Vu?$f<Vu?Nv<Vu?Nb<Vu?Hi<Vu?$b<Vu?Kt<Vu?0:-1:0:-1:Ir<Vu?C<Vu?0:-1:0:-1:we<Vu?Ht<Vu?Lt<Vu?Sf<Vu?0:-1:0:-1:bk<Vu?_l<Vu?0:-1:0:-1:Uv<Vu?gc<Vu?gr<Vu?cv<Vu?hc<Vu?u<Vu?0:-1:0:-1:et<Vu?uv<Vu?0:-1:0:-1:ht<Vu?Bk<Vu?Ds<Vu?zb<Vu?0:-1:0:-1:Ua<Vu?ml<Vu?0:-1:0:-1:Lk<Vu?_D<Vu?Su<Vu?ma<Vu?ob<Vu?wc<Vu?Kl<Vu?tb<Vu?0:-1:0:-1:ii<Vu?dl<Vu?0:-1:0:-1:wn<Vu?Za<Vu?Ko<Vu?iu<Vu?0:-1:0:-1:tv<Vu?l<Vu?0:-1:0:-1:oc<Vu?mt<Vu?jt<Vu?Sc<Vu?Sn<Vu?Bs<Vu?0:-1:0:-1:zr<Vu?Ja<Vu?0:-1:0:-1:nu<Vu?hs<Vu?eD<Vu?Ro<Vu?0:-1:0:-1:rk<Vu?pt<Vu?0:-1:0:-1:Gv<Vu?Xf<Vu?ca<Vu?lf<Vu?Pa<Vu?Is<Vu?c<Vu?Bb<Vu?nb<Vu?T<Vu?0:-1:0:-1:Da<Vu?ui<Vu?0:-1:0:-1:vD<Vu?co<Vu?Ku<Vu?Wu<Vu?0:-1:0:-1:Rl<Vu?Gf<Vu?0:-1:0:-1:du<Vu?Ni<Vu?mi<Vu?Kf<Vu?hl<Vu?se<Vu?0:-1:0:-1:vv<Vu?Yu<Vu?0:-1:0:-1:$n<Vu?bn<Vu?da<Vu?Ek<Vu?0:-1:0:-1:d<Vu?oa<Vu?0:-1:0:-1:Mf<Vu?ul<Vu?TD<Vu?ni<Vu?mv<Vu?Fr<Vu?lk<Vu?Gc<Vu?0:-1:0:-1:dD<Vu?H<Vu?0:-1:0:-1:Rk<Vu?ji<Vu?yn<Vu?Sr<Vu?0:-1:0:-1:Qr<Vu?Xe<Vu?0:-1:0:-1:Kv<Vu?rv<Vu?Ln<Vu?gl<Vu?OD<Vu?P<Vu?0:-1:0:-1:Lc<Vu?i<Vu?0:-1:0:-1:WD<Vu?Wv<Vu?pb<Vu?ys<Vu?0:-1:0:-1:v<Vu?aa<Vu?0:-1:0:-1:ea<Vu?hb<Vu?a<Vu?Qu<Vu?wt<Vu?Ae<Vu?Nr<Vu?xr<Vu?Nc<Vu?kD<Vu?ve<Vu?ms<Vu?0:-1:0:-1:nc<Vu?Ca<Vu?0:-1:0:-1:Du<Vu?eb<Vu?To<Vu?tD<Vu?0:-1:0:-1:of<Vu?lu<Vu?0:-1:0:-1:w<Vu?fr<Vu?Kc<Vu?ZD<Vu?rl<Vu?Qv<Vu?0:-1:0:-1:Vb<Vu?Oo<Vu?0:-1:0:-1:Jr<Vu?Go<Vu?Pb<Vu?fu<Vu?0:-1:0:-1:ti<Vu?Mt<Vu?0:-1:0:-1:Fe<Vu?Mi<Vu?_i<Vu?Je<Vu?sr<Vu?Ol<Vu?Xv<Vu?dn<Vu?0:-1:0:-1:Bf<Vu?vr<Vu?0:-1:0:-1:ge<Vu?Ml<Vu?Jn<Vu?On<Vu?0:-1:0:-1:Cc<Vu?Sb<Vu?0:-1:0:-1:k<Vu?PD<Vu?$e<Vu?$l<Vu?oD<Vu?io<Vu?0:-1:0:-1:nf<Vu?El<Vu?0:-1:0:-1:qe<Vu?BD<Vu?qs<Vu?vs<Vu?0:-1:0:-1:lD<Vu?cu<Vu?0:-1:0:-1:nk<Vu?hk<Vu?zl<Vu?il<Vu?mb<Vu?Yl<Vu?Db<Vu?dr<Vu?Lr<Vu?fb<Vu?0:-1:0:-1:pu<Vu?gb<Vu?0:-1:0:-1:yr<Vu?Wr<Vu?Te<Vu?Bu<Vu?0:-1:0:-1:GD<Vu?So<Vu?0:-1:0:-1:Ik<Vu?Xc<Vu?Ga<Vu?Ul<Vu?Ba<Vu?Dk<Vu?0:-1:0:-1:Ms<Vu?Ck<Vu?0:-1:0:-1:Pv<Vu?Jl<Vu?lr<Vu?Iv<Vu?0:-1:0:-1:wl<Vu?bl<Vu?0:-1:0:-1:ot<Vu?Vo<Vu?ue<Vu?ye<Vu?al<Vu?n<Vu?mc<Vu?wi<Vu?0:-1:0:-1:fs<Vu?Et<Vu?0:-1:0:-1:ar<Vu?on<Vu?Zu<Vu?_u<Vu?0:-1:0:-1:$v<Vu?ws<Vu?0:-1:0:-1:nD<Vu?ae<Vu?mo<Vu?Yn<Vu?Df<Vu?Ye<Vu?0:-1:0:-1:Rn<Vu?Wb<Vu?0:-1:0:-1:pl<Vu?vi<Vu?JD<Vu?Qs<Vu?0:-1:0:-1:Fc<Vu?Ft<Vu?0:-1:0:-1:Cd(Tqr,Vu+aD|0)-1|0:-1;if(4<na>>>0)Gr=Q1r(t);else switch(na){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var ia=Zut(H1r(t));if(3<ia>>>0)Gr=Q1r(t);else switch(ia){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var va=Bnt(H1r(t));if(2<va>>>0)Gr=Q1r(t);else switch(va){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,39);var ba=Jnt(H1r(t));Gr=0===ba?p(t):1===ba?m(t):Q1r(t)}break;default:K1r(t,87);var ka=Lut(H1r(t));if(2<ka>>>0)Gr=Q1r(t);else switch(ka){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Fa=pat(H1r(t));if(2<Fa>>>0)Gr=Q1r(t);else switch(Fa){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,40);var _a=Jnt(H1r(t));Gr=0===_a?p(t):1===_a?m(t):Q1r(t)}}}break;case 3:K1r(t,87);var ga=fut(H1r(t));if(2<ga>>>0)Gr=Q1r(t);else switch(ga){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Sa=cat(H1r(t));if(2<Sa>>>0)Gr=Q1r(t);else switch(Sa){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var xa=cat(H1r(t));if(2<xa>>>0)Gr=Q1r(t);else switch(xa){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,41);var Ta=Jnt(H1r(t));Gr=0===Ta?p(t):1===Ta?m(t):Q1r(t)}}}break;default:K1r(t,87);var Ia=rut(H1r(t));if(2<Ia>>>0)Gr=Q1r(t);else switch(Ia){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Oa=Zut(H1r(t));if(3<Oa>>>0)Gr=Q1r(t);else switch(Oa){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var Na=Yut(H1r(t));if(2<Na>>>0)Gr=Q1r(t);else switch(Na){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,42);var Xa=Jnt(H1r(t));Gr=0===Xa?p(t):1===Xa?m(t):Q1r(t)}break;default:K1r(t,87);var za=bat(H1r(t));if(2<za>>>0)Gr=Q1r(t);else switch(za){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Ya=rut(H1r(t));if(2<Ya>>>0)Gr=Q1r(t);else switch(Ya){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Qa=Tnt(H1r(t));if(2<Qa>>>0)Gr=Q1r(t);else switch(Qa){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var ei=Bnt(H1r(t));if(2<ei>>>0)Gr=Q1r(t);else switch(ei){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,43);var ci=Jnt(H1r(t));Gr=0===ci?p(t):1===ci?m(t):Q1r(t)}}}}}}}break;case 36:K1r(t,87);var si=H1r(t),ki=35<si?Al<si?ie<si?Qf<si?-1:Cl<si?Zt<si?Ea<si?pi<si?ds<si?pv<si?Or<si?He<si?0:-1:0:-1:ro<si?vc<si?0:-1:0:-1:Ob<si?sk<si?wv<si?Bl<si?0:-1:0:-1:me<si?ta<si?0:-1:0:-1:Os<si?gs<si?Gs<si?nv<si?Il<si?Se<si?Un<si?We<si?rf<si?ek<si?_s<si?MD<si?$i<si?Uo<si?sn<si?yD<si?0:-1:0:-1:Wc<si?Hu<si?0:-1:0:-1:Ic<si?it<si?Jo<si?ec<si?0:-1:0:-1:ol<si?zv<si?0:-1:0:-1:x<si?_v<si?Sv<si?Q<si?yf<si?ln<si?0:-1:0:-1:Vt<si?rb<si?0:-1:0:-1:Po<si?Gu<si?Jc<si?qt<si?0:-1:0:-1:Ei<si?Hs<si?0:-1:0:-1:Dl<si?jc<si?fi<si?tt<si?Wo<si?uc<si?Rr<si?Nu<si?0:-1:0:-1:yl<si?gv<si?0:-1:0:-1:os<si?Zc<si?an<si?gD<si?0:-1:0:-1:ru<si?zc<si?0:-1:0:-1:Jt<si?bi<si?Zo<si?Ur<si?zf<si?Ks<si?0:-1:0:-1:au<si?mr<si?0:-1:0:-1:xD<si?Wf<si?xo<si?Ao<si?0:-1:0:-1:QD<si?AD<si?0:-1:0:-1:wf<si?xk<si?Ql<si?$a<si?Wa<si?qa<si?zt<si?br<si?wb<si?qc<si?0:-1:0:-1:Pt<si?Ps<si?0:-1:0:-1:Wt<si?ha<si?vf<si?Er<si?0:-1:0:-1:Zr<si?xc<si?0:-1:0:-1:ua<si?jn<si?Uc<si?Kr<si?ke<si?zn<si?0:-1:0:-1:rs<si?Ho<si?0:-1:0:-1:dk<si?pf<si?uo<si?qu<si?0:-1:0:-1:$<si?wu<si?0:-1:0:-1:If<si?DD<si?Ub<si?Kn<si?ir<si?Pi<si?cn<si?Co<si?0:-1:0:-1:Ac<si?Qn<si?0:-1:0:-1:tn<si?Ls<si?Cr<si?hv<si?0:-1:0:-1:Wi<si?Gb<si?0:-1:0:-1:ct<si?oo<si?tc<si?e<si?Ee<si?Y<si?0:-1:0:-1:Ze<si?sa<si?0:-1:0:-1:sf<si?Ha<si?Uf<si?vt<si?0:-1:0:-1:La<si?Fv<si?0:-1:0:-1:ao<si?o<si?vu<si?Zn<si?xi<si?fe<si?Bi<si?Zs<si?HD<si?zo<si?pe<si?Tk<si?0:-1:0:-1:gi<si?ts<si?0:-1:0:-1:ps<si?hf<si?As<si?pa<si?0:-1:0:-1:as<si?Cb<si?0:-1:0:-1:jf<si?gt<si?Mu<si?ok<si?Xo<si?Ji<si?0:-1:0:-1:D<si?Yv<si?0:-1:0:-1:Lf<si?$s<si?Vl<si?Fb<si?0:-1:0:-1:Ab<si?ED<si?0:-1:0:-1:Oe<si?g<si?wk<si?Dv<si?Mo<si?_<si?Ti<si?Ve<si?0:-1:0:-1:Hl<si?An<si?0:-1:0:-1:ai<si?Hb<si?Yf<si?er<si?0:-1:0:-1:fc<si?Xl<si?0:-1:0:-1:Bv<si?_e<si?le<si?hD<si?Pf<si?Ge<si?0:-1:0:-1:Dt<si?Io<si?0:-1:0:-1:cs<si?KD<si?eu<si?hi<si?0:-1:0:-1:Js<si?Tr<si?0:-1:0:-1:Hc<si?Ma<si?mu<si?Jf<si?Af<si?Ki<si?dc<si?qi<si?hu<si?Aa<si?0:-1:0:-1:$u<si?Ak<si?0:-1:0:-1:cc<si?mf<si?Rs<si?wr<si?0:-1:0:-1:yv<si?eo<si?0:-1:0:-1:jr<si?ND<si?ck<si?Ui<si?Ar<si?Vs<si?0:-1:0:-1:Bn<si?F<si?0:-1:0:-1:Qe<si?_c<si?cr<si?Vv<si?0:-1:0:-1:ub<si?Ai<si?0:-1:0:-1:Ra<si?nn<si?bu<si?ja<si?be<si?Es<si?Fl<si?Ri<si?0:-1:0:-1:nr<si?zD<si?0:-1:0:-1:Vc<si?rD<si?Br<si?gu<si?0:-1:0:-1:qn<si?iD<si?0:-1:0:-1:Fo<si?oi<si?lt<si?av<si?xu<si?$D<si?0:-1:0:-1:It<si?zs<si?0:-1:0:-1:Ju<si?Qb<si?Do<si?VD<si?0:-1:0:-1:Ot<si?Yb<si?0:-1:0:-1:fa<si?Ne<si?Sl<si?Xi<si?rc<si?Mk<si?jb<si?ri<si?$f<si?Nv<si?Nb<si?Hi<si?$b<si?Kt<si?0:-1:0:-1:Ir<si?C<si?0:-1:0:-1:we<si?Ht<si?Lt<si?Sf<si?0:-1:0:-1:bk<si?_l<si?0:-1:0:-1:Uv<si?gc<si?gr<si?cv<si?hc<si?u<si?0:-1:0:-1:et<si?uv<si?0:-1:0:-1:ht<si?Bk<si?Ds<si?zb<si?0:-1:0:-1:Ua<si?ml<si?0:-1:0:-1:Lk<si?_D<si?Su<si?ma<si?ob<si?wc<si?Kl<si?tb<si?0:-1:0:-1:ii<si?dl<si?0:-1:0:-1:wn<si?Za<si?Ko<si?iu<si?0:-1:0:-1:tv<si?l<si?0:-1:0:-1:oc<si?mt<si?jt<si?Sc<si?Sn<si?Bs<si?0:-1:0:-1:zr<si?Ja<si?0:-1:0:-1:nu<si?hs<si?eD<si?Ro<si?0:-1:0:-1:rk<si?pt<si?0:-1:0:-1:Gv<si?Xf<si?ca<si?lf<si?Pa<si?Is<si?c<si?Bb<si?nb<si?T<si?0:-1:0:-1:Da<si?ui<si?0:-1:0:-1:vD<si?co<si?Ku<si?Wu<si?0:-1:0:-1:Rl<si?Gf<si?0:-1:0:-1:du<si?Ni<si?mi<si?Kf<si?hl<si?se<si?0:-1:0:-1:vv<si?Yu<si?0:-1:0:-1:$n<si?bn<si?da<si?Ek<si?0:-1:0:-1:d<si?oa<si?0:-1:0:-1:Mf<si?ul<si?TD<si?ni<si?mv<si?Fr<si?lk<si?Gc<si?0:-1:0:-1:dD<si?H<si?0:-1:0:-1:Rk<si?ji<si?yn<si?Sr<si?0:-1:0:-1:Qr<si?Xe<si?0:-1:0:-1:Kv<si?rv<si?Ln<si?gl<si?OD<si?P<si?0:-1:0:-1:Lc<si?i<si?0:-1:0:-1:WD<si?Wv<si?pb<si?ys<si?0:-1:0:-1:v<si?aa<si?0:-1:0:-1:ea<si?hb<si?a<si?Qu<si?wt<si?Ae<si?Nr<si?xr<si?Nc<si?kD<si?ve<si?ms<si?0:-1:0:-1:nc<si?Ca<si?0:-1:0:-1:Du<si?eb<si?To<si?tD<si?0:-1:0:-1:of<si?lu<si?0:-1:0:-1:w<si?fr<si?Kc<si?ZD<si?rl<si?Qv<si?0:-1:0:-1:Vb<si?Oo<si?0:-1:0:-1:Jr<si?Go<si?Pb<si?fu<si?0:-1:0:-1:ti<si?Mt<si?0:-1:0:-1:Fe<si?Mi<si?_i<si?Je<si?sr<si?Ol<si?Xv<si?dn<si?0:-1:0:-1:Bf<si?vr<si?0:-1:0:-1:ge<si?Ml<si?Jn<si?On<si?0:-1:0:-1:Cc<si?Sb<si?0:-1:0:-1:k<si?PD<si?$e<si?$l<si?oD<si?io<si?0:-1:0:-1:nf<si?El<si?0:-1:0:-1:qe<si?BD<si?qs<si?vs<si?0:-1:0:-1:lD<si?cu<si?0:-1:0:-1:nk<si?hk<si?zl<si?il<si?mb<si?Yl<si?Db<si?dr<si?Lr<si?fb<si?0:-1:0:-1:pu<si?gb<si?0:-1:0:-1:yr<si?Wr<si?Te<si?Bu<si?0:-1:0:-1:GD<si?So<si?0:-1:0:-1:Ik<si?Xc<si?Ga<si?Ul<si?Ba<si?Dk<si?0:-1:0:-1:Ms<si?Ck<si?0:-1:0:-1:Pv<si?Jl<si?lr<si?Iv<si?0:-1:0:-1:wl<si?bl<si?0:-1:0:-1:ot<si?Vo<si?ue<si?ye<si?al<si?n<si?mc<si?wi<si?0:-1:0:-1:fs<si?Et<si?0:-1:0:-1:ar<si?on<si?Zu<si?_u<si?0:-1:0:-1:$v<si?ws<si?0:-1:0:-1:nD<si?ae<si?mo<si?Yn<si?Df<si?Ye<si?0:-1:0:-1:Rn<si?Wb<si?0:-1:0:-1:pl<si?vi<si?JD<si?Qs<si?0:-1:0:-1:Fc<si?Ft<si?0:-1:0:-1:Cd(_qr,si+aD|0)-1|0:-1;if(3<ki>>>0)Gr=Q1r(t);else switch(ki){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var di=H1r(t),Fi=35<di?Al<di?ie<di?Qf<di?-1:Cl<di?Zt<di?Ea<di?pi<di?ds<di?pv<di?Or<di?He<di?0:-1:0:-1:ro<di?vc<di?0:-1:0:-1:Ob<di?sk<di?wv<di?Bl<di?0:-1:0:-1:me<di?ta<di?0:-1:0:-1:Os<di?gs<di?Gs<di?nv<di?Il<di?Se<di?Un<di?We<di?rf<di?ek<di?_s<di?MD<di?$i<di?Uo<di?sn<di?yD<di?0:-1:0:-1:Wc<di?Hu<di?0:-1:0:-1:Ic<di?it<di?Jo<di?ec<di?0:-1:0:-1:ol<di?zv<di?0:-1:0:-1:x<di?_v<di?Sv<di?Q<di?yf<di?ln<di?0:-1:0:-1:Vt<di?rb<di?0:-1:0:-1:Po<di?Gu<di?Jc<di?qt<di?0:-1:0:-1:Ei<di?Hs<di?0:-1:0:-1:Dl<di?jc<di?fi<di?tt<di?Wo<di?uc<di?Rr<di?Nu<di?0:-1:0:-1:yl<di?gv<di?0:-1:0:-1:os<di?Zc<di?an<di?gD<di?0:-1:0:-1:ru<di?zc<di?0:-1:0:-1:Jt<di?bi<di?Zo<di?Ur<di?zf<di?Ks<di?0:-1:0:-1:au<di?mr<di?0:-1:0:-1:xD<di?Wf<di?xo<di?Ao<di?0:-1:0:-1:QD<di?AD<di?0:-1:0:-1:wf<di?xk<di?Ql<di?$a<di?Wa<di?qa<di?zt<di?br<di?wb<di?qc<di?0:-1:0:-1:Pt<di?Ps<di?0:-1:0:-1:Wt<di?ha<di?vf<di?Er<di?0:-1:0:-1:Zr<di?xc<di?0:-1:0:-1:ua<di?jn<di?Uc<di?Kr<di?ke<di?zn<di?0:-1:0:-1:rs<di?Ho<di?0:-1:0:-1:dk<di?pf<di?uo<di?qu<di?0:-1:0:-1:$<di?wu<di?0:-1:0:-1:If<di?DD<di?Ub<di?Kn<di?ir<di?Pi<di?cn<di?Co<di?0:-1:0:-1:Ac<di?Qn<di?0:-1:0:-1:tn<di?Ls<di?Cr<di?hv<di?0:-1:0:-1:Wi<di?Gb<di?0:-1:0:-1:ct<di?oo<di?tc<di?e<di?Ee<di?Y<di?0:-1:0:-1:Ze<di?sa<di?0:-1:0:-1:sf<di?Ha<di?Uf<di?vt<di?0:-1:0:-1:La<di?Fv<di?0:-1:0:-1:ao<di?o<di?vu<di?Zn<di?xi<di?fe<di?Bi<di?Zs<di?HD<di?zo<di?pe<di?Tk<di?0:-1:0:-1:gi<di?ts<di?0:-1:0:-1:ps<di?hf<di?As<di?pa<di?0:-1:0:-1:as<di?Cb<di?0:-1:0:-1:jf<di?gt<di?Mu<di?ok<di?Xo<di?Ji<di?0:-1:0:-1:D<di?Yv<di?0:-1:0:-1:Lf<di?$s<di?Vl<di?Fb<di?0:-1:0:-1:Ab<di?ED<di?0:-1:0:-1:Oe<di?g<di?wk<di?Dv<di?Mo<di?_<di?Ti<di?Ve<di?0:-1:0:-1:Hl<di?An<di?0:-1:0:-1:ai<di?Hb<di?Yf<di?er<di?0:-1:0:-1:fc<di?Xl<di?0:-1:0:-1:Bv<di?_e<di?le<di?hD<di?Pf<di?Ge<di?0:-1:0:-1:Dt<di?Io<di?0:-1:0:-1:cs<di?KD<di?eu<di?hi<di?0:-1:0:-1:Js<di?Tr<di?0:-1:0:-1:Hc<di?Ma<di?mu<di?Jf<di?Af<di?Ki<di?dc<di?qi<di?hu<di?Aa<di?0:-1:0:-1:$u<di?Ak<di?0:-1:0:-1:cc<di?mf<di?Rs<di?wr<di?0:-1:0:-1:yv<di?eo<di?0:-1:0:-1:jr<di?ND<di?ck<di?Ui<di?Ar<di?Vs<di?0:-1:0:-1:Bn<di?F<di?0:-1:0:-1:Qe<di?_c<di?cr<di?Vv<di?0:-1:0:-1:ub<di?Ai<di?0:-1:0:-1:Ra<di?nn<di?bu<di?ja<di?be<di?Es<di?Fl<di?Ri<di?0:-1:0:-1:nr<di?zD<di?0:-1:0:-1:Vc<di?rD<di?Br<di?gu<di?0:-1:0:-1:qn<di?iD<di?0:-1:0:-1:Fo<di?oi<di?lt<di?av<di?xu<di?$D<di?0:-1:0:-1:It<di?zs<di?0:-1:0:-1:Ju<di?Qb<di?Do<di?VD<di?0:-1:0:-1:Ot<di?Yb<di?0:-1:0:-1:fa<di?Ne<di?Sl<di?Xi<di?rc<di?Mk<di?jb<di?ri<di?$f<di?Nv<di?Nb<di?Hi<di?$b<di?Kt<di?0:-1:0:-1:Ir<di?C<di?0:-1:0:-1:we<di?Ht<di?Lt<di?Sf<di?0:-1:0:-1:bk<di?_l<di?0:-1:0:-1:Uv<di?gc<di?gr<di?cv<di?hc<di?u<di?0:-1:0:-1:et<di?uv<di?0:-1:0:-1:ht<di?Bk<di?Ds<di?zb<di?0:-1:0:-1:Ua<di?ml<di?0:-1:0:-1:Lk<di?_D<di?Su<di?ma<di?ob<di?wc<di?Kl<di?tb<di?0:-1:0:-1:ii<di?dl<di?0:-1:0:-1:wn<di?Za<di?Ko<di?iu<di?0:-1:0:-1:tv<di?l<di?0:-1:0:-1:oc<di?mt<di?jt<di?Sc<di?Sn<di?Bs<di?0:-1:0:-1:zr<di?Ja<di?0:-1:0:-1:nu<di?hs<di?eD<di?Ro<di?0:-1:0:-1:rk<di?pt<di?0:-1:0:-1:Gv<di?Xf<di?ca<di?lf<di?Pa<di?Is<di?c<di?Bb<di?nb<di?T<di?0:-1:0:-1:Da<di?ui<di?0:-1:0:-1:vD<di?co<di?Ku<di?Wu<di?0:-1:0:-1:Rl<di?Gf<di?0:-1:0:-1:du<di?Ni<di?mi<di?Kf<di?hl<di?se<di?0:-1:0:-1:vv<di?Yu<di?0:-1:0:-1:$n<di?bn<di?da<di?Ek<di?0:-1:0:-1:d<di?oa<di?0:-1:0:-1:Mf<di?ul<di?TD<di?ni<di?mv<di?Fr<di?lk<di?Gc<di?0:-1:0:-1:dD<di?H<di?0:-1:0:-1:Rk<di?ji<di?yn<di?Sr<di?0:-1:0:-1:Qr<di?Xe<di?0:-1:0:-1:Kv<di?rv<di?Ln<di?gl<di?OD<di?P<di?0:-1:0:-1:Lc<di?i<di?0:-1:0:-1:WD<di?Wv<di?pb<di?ys<di?0:-1:0:-1:v<di?aa<di?0:-1:0:-1:ea<di?hb<di?a<di?Qu<di?wt<di?Ae<di?Nr<di?xr<di?Nc<di?kD<di?ve<di?ms<di?0:-1:0:-1:nc<di?Ca<di?0:-1:0:-1:Du<di?eb<di?To<di?tD<di?0:-1:0:-1:of<di?lu<di?0:-1:0:-1:w<di?fr<di?Kc<di?ZD<di?rl<di?Qv<di?0:-1:0:-1:Vb<di?Oo<di?0:-1:0:-1:Jr<di?Go<di?Pb<di?fu<di?0:-1:0:-1:ti<di?Mt<di?0:-1:0:-1:Fe<di?Mi<di?_i<di?Je<di?sr<di?Ol<di?Xv<di?dn<di?0:-1:0:-1:Bf<di?vr<di?0:-1:0:-1:ge<di?Ml<di?Jn<di?On<di?0:-1:0:-1:Cc<di?Sb<di?0:-1:0:-1:k<di?PD<di?$e<di?$l<di?oD<di?io<di?0:-1:0:-1:nf<di?El<di?0:-1:0:-1:qe<di?BD<di?qs<di?vs<di?0:-1:0:-1:lD<di?cu<di?0:-1:0:-1:nk<di?hk<di?zl<di?il<di?mb<di?Yl<di?Db<di?dr<di?Lr<di?fb<di?0:-1:0:-1:pu<di?gb<di?0:-1:0:-1:yr<di?Wr<di?Te<di?Bu<di?0:-1:0:-1:GD<di?So<di?0:-1:0:-1:Ik<di?Xc<di?Ga<di?Ul<di?Ba<di?Dk<di?0:-1:0:-1:Ms<di?Ck<di?0:-1:0:-1:Pv<di?Jl<di?lr<di?Iv<di?0:-1:0:-1:wl<di?bl<di?0:-1:0:-1:ot<di?Vo<di?ue<di?ye<di?al<di?n<di?mc<di?wi<di?0:-1:0:-1:fs<di?Et<di?0:-1:0:-1:ar<di?on<di?Zu<di?_u<di?0:-1:0:-1:$v<di?ws<di?0:-1:0:-1:nD<di?ae<di?mo<di?Yn<di?Df<di?Ye<di?0:-1:0:-1:Rn<di?Wb<di?0:-1:0:-1:pl<di?vi<di?JD<di?Qs<di?0:-1:0:-1:Fc<di?Ft<di?0:-1:0:-1:Cd(wqr,di+aD|0)-1|0:-1;if(5<Fi>>>0)Gr=Q1r(t);else switch(Fi){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var yi=Tnt(H1r(t));if(2<yi>>>0)Gr=Q1r(t);else switch(yi){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Ci=Rnt(H1r(t));if(2<Ci>>>0)Gr=Q1r(t);else switch(Ci){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Si=Rnt(H1r(t));if(2<Si>>>0)Gr=Q1r(t);else switch(Si){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Ii=Bnt(H1r(t));if(2<Ii>>>0)Gr=Q1r(t);else switch(Ii){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Oi=vut(H1r(t));if(2<Oi>>>0)Gr=Q1r(t);else switch(Oi){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,44);var Li=Jnt(H1r(t));Gr=0===Li?p(t):1===Li?m(t):Q1r(t)}}}}}break;case 3:K1r(t,87);var Gi=_ut(H1r(t));if(2<Gi>>>0)Gr=Q1r(t);else switch(Gi){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Vi=fut(H1r(t));if(2<Vi>>>0)Gr=Q1r(t);else switch(Vi){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Qi=vut(H1r(t));if(2<Qi>>>0)Gr=Q1r(t);else switch(Qi){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Zi=Bnt(H1r(t));if(2<Zi>>>0)Gr=Q1r(t);else switch(Zi){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,45);var ef=Jnt(H1r(t));Gr=0===ef?p(t):1===ef?m(t):Q1r(t)}}}}break;case 4:K1r(t,87);var uf=fut(H1r(t));if(2<uf>>>0)Gr=Q1r(t);else switch(uf){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var af=Tnt(H1r(t));if(2<af>>>0)Gr=Q1r(t);else switch(af){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var ff=_ut(H1r(t));if(2<ff>>>0)Gr=Q1r(t);else switch(ff){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var cf=Yut(H1r(t));if(2<cf>>>0)Gr=Q1r(t);else switch(cf){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,46);var kf=Jnt(H1r(t));Gr=0===kf?p(t):1===kf?m(t):Q1r(t)}}}}break;default:K1r(t,87);var df=Bnt(H1r(t));if(2<df>>>0)Gr=Q1r(t);else switch(df){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Ff=Yut(H1r(t));if(2<Ff>>>0)Gr=Q1r(t);else switch(Ff){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Ef=Bnt(H1r(t));if(2<Ef>>>0)Gr=Q1r(t);else switch(Ef){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,47);var _f=Jnt(H1r(t));Gr=0===_f?p(t):1===_f?m(t):Q1r(t)}}}}break;default:K1r(t,48);var Cf=Jnt(H1r(t));Gr=0===Cf?p(t):1===Cf?m(t):Q1r(t)}break;case 37:K1r(t,87);var xf=H1r(t),Tf=35<xf?Al<xf?ie<xf?Qf<xf?-1:Cl<xf?Zt<xf?Ea<xf?pi<xf?ds<xf?pv<xf?Or<xf?He<xf?0:-1:0:-1:ro<xf?vc<xf?0:-1:0:-1:Ob<xf?sk<xf?wv<xf?Bl<xf?0:-1:0:-1:me<xf?ta<xf?0:-1:0:-1:Os<xf?gs<xf?Gs<xf?nv<xf?Il<xf?Se<xf?Un<xf?We<xf?rf<xf?ek<xf?_s<xf?MD<xf?$i<xf?Uo<xf?sn<xf?yD<xf?0:-1:0:-1:Wc<xf?Hu<xf?0:-1:0:-1:Ic<xf?it<xf?Jo<xf?ec<xf?0:-1:0:-1:ol<xf?zv<xf?0:-1:0:-1:x<xf?_v<xf?Sv<xf?Q<xf?yf<xf?ln<xf?0:-1:0:-1:Vt<xf?rb<xf?0:-1:0:-1:Po<xf?Gu<xf?Jc<xf?qt<xf?0:-1:0:-1:Ei<xf?Hs<xf?0:-1:0:-1:Dl<xf?jc<xf?fi<xf?tt<xf?Wo<xf?uc<xf?Rr<xf?Nu<xf?0:-1:0:-1:yl<xf?gv<xf?0:-1:0:-1:os<xf?Zc<xf?an<xf?gD<xf?0:-1:0:-1:ru<xf?zc<xf?0:-1:0:-1:Jt<xf?bi<xf?Zo<xf?Ur<xf?zf<xf?Ks<xf?0:-1:0:-1:au<xf?mr<xf?0:-1:0:-1:xD<xf?Wf<xf?xo<xf?Ao<xf?0:-1:0:-1:QD<xf?AD<xf?0:-1:0:-1:wf<xf?xk<xf?Ql<xf?$a<xf?Wa<xf?qa<xf?zt<xf?br<xf?wb<xf?qc<xf?0:-1:0:-1:Pt<xf?Ps<xf?0:-1:0:-1:Wt<xf?ha<xf?vf<xf?Er<xf?0:-1:0:-1:Zr<xf?xc<xf?0:-1:0:-1:ua<xf?jn<xf?Uc<xf?Kr<xf?ke<xf?zn<xf?0:-1:0:-1:rs<xf?Ho<xf?0:-1:0:-1:dk<xf?pf<xf?uo<xf?qu<xf?0:-1:0:-1:$<xf?wu<xf?0:-1:0:-1:If<xf?DD<xf?Ub<xf?Kn<xf?ir<xf?Pi<xf?cn<xf?Co<xf?0:-1:0:-1:Ac<xf?Qn<xf?0:-1:0:-1:tn<xf?Ls<xf?Cr<xf?hv<xf?0:-1:0:-1:Wi<xf?Gb<xf?0:-1:0:-1:ct<xf?oo<xf?tc<xf?e<xf?Ee<xf?Y<xf?0:-1:0:-1:Ze<xf?sa<xf?0:-1:0:-1:sf<xf?Ha<xf?Uf<xf?vt<xf?0:-1:0:-1:La<xf?Fv<xf?0:-1:0:-1:ao<xf?o<xf?vu<xf?Zn<xf?xi<xf?fe<xf?Bi<xf?Zs<xf?HD<xf?zo<xf?pe<xf?Tk<xf?0:-1:0:-1:gi<xf?ts<xf?0:-1:0:-1:ps<xf?hf<xf?As<xf?pa<xf?0:-1:0:-1:as<xf?Cb<xf?0:-1:0:-1:jf<xf?gt<xf?Mu<xf?ok<xf?Xo<xf?Ji<xf?0:-1:0:-1:D<xf?Yv<xf?0:-1:0:-1:Lf<xf?$s<xf?Vl<xf?Fb<xf?0:-1:0:-1:Ab<xf?ED<xf?0:-1:0:-1:Oe<xf?g<xf?wk<xf?Dv<xf?Mo<xf?_<xf?Ti<xf?Ve<xf?0:-1:0:-1:Hl<xf?An<xf?0:-1:0:-1:ai<xf?Hb<xf?Yf<xf?er<xf?0:-1:0:-1:fc<xf?Xl<xf?0:-1:0:-1:Bv<xf?_e<xf?le<xf?hD<xf?Pf<xf?Ge<xf?0:-1:0:-1:Dt<xf?Io<xf?0:-1:0:-1:cs<xf?KD<xf?eu<xf?hi<xf?0:-1:0:-1:Js<xf?Tr<xf?0:-1:0:-1:Hc<xf?Ma<xf?mu<xf?Jf<xf?Af<xf?Ki<xf?dc<xf?qi<xf?hu<xf?Aa<xf?0:-1:0:-1:$u<xf?Ak<xf?0:-1:0:-1:cc<xf?mf<xf?Rs<xf?wr<xf?0:-1:0:-1:yv<xf?eo<xf?0:-1:0:-1:jr<xf?ND<xf?ck<xf?Ui<xf?Ar<xf?Vs<xf?0:-1:0:-1:Bn<xf?F<xf?0:-1:0:-1:Qe<xf?_c<xf?cr<xf?Vv<xf?0:-1:0:-1:ub<xf?Ai<xf?0:-1:0:-1:Ra<xf?nn<xf?bu<xf?ja<xf?be<xf?Es<xf?Fl<xf?Ri<xf?0:-1:0:-1:nr<xf?zD<xf?0:-1:0:-1:Vc<xf?rD<xf?Br<xf?gu<xf?0:-1:0:-1:qn<xf?iD<xf?0:-1:0:-1:Fo<xf?oi<xf?lt<xf?av<xf?xu<xf?$D<xf?0:-1:0:-1:It<xf?zs<xf?0:-1:0:-1:Ju<xf?Qb<xf?Do<xf?VD<xf?0:-1:0:-1:Ot<xf?Yb<xf?0:-1:0:-1:fa<xf?Ne<xf?Sl<xf?Xi<xf?rc<xf?Mk<xf?jb<xf?ri<xf?$f<xf?Nv<xf?Nb<xf?Hi<xf?$b<xf?Kt<xf?0:-1:0:-1:Ir<xf?C<xf?0:-1:0:-1:we<xf?Ht<xf?Lt<xf?Sf<xf?0:-1:0:-1:bk<xf?_l<xf?0:-1:0:-1:Uv<xf?gc<xf?gr<xf?cv<xf?hc<xf?u<xf?0:-1:0:-1:et<xf?uv<xf?0:-1:0:-1:ht<xf?Bk<xf?Ds<xf?zb<xf?0:-1:0:-1:Ua<xf?ml<xf?0:-1:0:-1:Lk<xf?_D<xf?Su<xf?ma<xf?ob<xf?wc<xf?Kl<xf?tb<xf?0:-1:0:-1:ii<xf?dl<xf?0:-1:0:-1:wn<xf?Za<xf?Ko<xf?iu<xf?0:-1:0:-1:tv<xf?l<xf?0:-1:0:-1:oc<xf?mt<xf?jt<xf?Sc<xf?Sn<xf?Bs<xf?0:-1:0:-1:zr<xf?Ja<xf?0:-1:0:-1:nu<xf?hs<xf?eD<xf?Ro<xf?0:-1:0:-1:rk<xf?pt<xf?0:-1:0:-1:Gv<xf?Xf<xf?ca<xf?lf<xf?Pa<xf?Is<xf?c<xf?Bb<xf?nb<xf?T<xf?0:-1:0:-1:Da<xf?ui<xf?0:-1:0:-1:vD<xf?co<xf?Ku<xf?Wu<xf?0:-1:0:-1:Rl<xf?Gf<xf?0:-1:0:-1:du<xf?Ni<xf?mi<xf?Kf<xf?hl<xf?se<xf?0:-1:0:-1:vv<xf?Yu<xf?0:-1:0:-1:$n<xf?bn<xf?da<xf?Ek<xf?0:-1:0:-1:d<xf?oa<xf?0:-1:0:-1:Mf<xf?ul<xf?TD<xf?ni<xf?mv<xf?Fr<xf?lk<xf?Gc<xf?0:-1:0:-1:dD<xf?H<xf?0:-1:0:-1:Rk<xf?ji<xf?yn<xf?Sr<xf?0:-1:0:-1:Qr<xf?Xe<xf?0:-1:0:-1:Kv<xf?rv<xf?Ln<xf?gl<xf?OD<xf?P<xf?0:-1:0:-1:Lc<xf?i<xf?0:-1:0:-1:WD<xf?Wv<xf?pb<xf?ys<xf?0:-1:0:-1:v<xf?aa<xf?0:-1:0:-1:ea<xf?hb<xf?a<xf?Qu<xf?wt<xf?Ae<xf?Nr<xf?xr<xf?Nc<xf?kD<xf?ve<xf?ms<xf?0:-1:0:-1:nc<xf?Ca<xf?0:-1:0:-1:Du<xf?eb<xf?To<xf?tD<xf?0:-1:0:-1:of<xf?lu<xf?0:-1:0:-1:w<xf?fr<xf?Kc<xf?ZD<xf?rl<xf?Qv<xf?0:-1:0:-1:Vb<xf?Oo<xf?0:-1:0:-1:Jr<xf?Go<xf?Pb<xf?fu<xf?0:-1:0:-1:ti<xf?Mt<xf?0:-1:0:-1:Fe<xf?Mi<xf?_i<xf?Je<xf?sr<xf?Ol<xf?Xv<xf?dn<xf?0:-1:0:-1:Bf<xf?vr<xf?0:-1:0:-1:ge<xf?Ml<xf?Jn<xf?On<xf?0:-1:0:-1:Cc<xf?Sb<xf?0:-1:0:-1:k<xf?PD<xf?$e<xf?$l<xf?oD<xf?io<xf?0:-1:0:-1:nf<xf?El<xf?0:-1:0:-1:qe<xf?BD<xf?qs<xf?vs<xf?0:-1:0:-1:lD<xf?cu<xf?0:-1:0:-1:nk<xf?hk<xf?zl<xf?il<xf?mb<xf?Yl<xf?Db<xf?dr<xf?Lr<xf?fb<xf?0:-1:0:-1:pu<xf?gb<xf?0:-1:0:-1:yr<xf?Wr<xf?Te<xf?Bu<xf?0:-1:0:-1:GD<xf?So<xf?0:-1:0:-1:Ik<xf?Xc<xf?Ga<xf?Ul<xf?Ba<xf?Dk<xf?0:-1:0:-1:Ms<xf?Ck<xf?0:-1:0:-1:Pv<xf?Jl<xf?lr<xf?Iv<xf?0:-1:0:-1:wl<xf?bl<xf?0:-1:0:-1:ot<xf?Vo<xf?ue<xf?ye<xf?al<xf?n<xf?mc<xf?wi<xf?0:-1:0:-1:fs<xf?Et<xf?0:-1:0:-1:ar<xf?on<xf?Zu<xf?_u<xf?0:-1:0:-1:$v<xf?ws<xf?0:-1:0:-1:nD<xf?ae<xf?mo<xf?Yn<xf?Df<xf?Ye<xf?0:-1:0:-1:Rn<xf?Wb<xf?0:-1:0:-1:pl<xf?vi<xf?JD<xf?Qs<xf?0:-1:0:-1:Fc<xf?Ft<xf?0:-1:0:-1:Cd(Nqr,xf+aD|0)-1|0:-1;if(4<Tf>>>0)Gr=Q1r(t);else switch(Tf){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var Nf=cat(H1r(t));if(2<Nf>>>0)Gr=Q1r(t);else switch(Nf){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Rf=Bnt(H1r(t));if(2<Rf>>>0)Gr=Q1r(t);else switch(Rf){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,49);var qf=Jnt(H1r(t));Gr=0===qf?p(t):1===qf?m(t):Q1r(t)}}break;case 3:K1r(t,87);var Hf=Tnt(H1r(t));if(2<Hf>>>0)Gr=Q1r(t);else switch(Hf){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Zf=Vut(H1r(t));if(2<Zf>>>0)Gr=Q1r(t);else switch(Zf){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,50);var ic=Jnt(H1r(t));Gr=0===ic?p(t):1===ic?m(t):Q1r(t)}}break;default:K1r(t,87);var sc=H1r(t),lc=35<sc?Al<sc?ie<sc?Qf<sc?-1:Cl<sc?Zt<sc?Ea<sc?pi<sc?ds<sc?pv<sc?Or<sc?He<sc?0:-1:0:-1:ro<sc?vc<sc?0:-1:0:-1:Ob<sc?sk<sc?wv<sc?Bl<sc?0:-1:0:-1:me<sc?ta<sc?0:-1:0:-1:Os<sc?gs<sc?Gs<sc?nv<sc?Il<sc?Se<sc?Un<sc?We<sc?rf<sc?ek<sc?_s<sc?MD<sc?$i<sc?Uo<sc?sn<sc?yD<sc?0:-1:0:-1:Wc<sc?Hu<sc?0:-1:0:-1:Ic<sc?it<sc?Jo<sc?ec<sc?0:-1:0:-1:ol<sc?zv<sc?0:-1:0:-1:x<sc?_v<sc?Sv<sc?Q<sc?yf<sc?ln<sc?0:-1:0:-1:Vt<sc?rb<sc?0:-1:0:-1:Po<sc?Gu<sc?Jc<sc?qt<sc?0:-1:0:-1:Ei<sc?Hs<sc?0:-1:0:-1:Dl<sc?jc<sc?fi<sc?tt<sc?Wo<sc?uc<sc?Rr<sc?Nu<sc?0:-1:0:-1:yl<sc?gv<sc?0:-1:0:-1:os<sc?Zc<sc?an<sc?gD<sc?0:-1:0:-1:ru<sc?zc<sc?0:-1:0:-1:Jt<sc?bi<sc?Zo<sc?Ur<sc?zf<sc?Ks<sc?0:-1:0:-1:au<sc?mr<sc?0:-1:0:-1:xD<sc?Wf<sc?xo<sc?Ao<sc?0:-1:0:-1:QD<sc?AD<sc?0:-1:0:-1:wf<sc?xk<sc?Ql<sc?$a<sc?Wa<sc?qa<sc?zt<sc?br<sc?wb<sc?qc<sc?0:-1:0:-1:Pt<sc?Ps<sc?0:-1:0:-1:Wt<sc?ha<sc?vf<sc?Er<sc?0:-1:0:-1:Zr<sc?xc<sc?0:-1:0:-1:ua<sc?jn<sc?Uc<sc?Kr<sc?ke<sc?zn<sc?0:-1:0:-1:rs<sc?Ho<sc?0:-1:0:-1:dk<sc?pf<sc?uo<sc?qu<sc?0:-1:0:-1:$<sc?wu<sc?0:-1:0:-1:If<sc?DD<sc?Ub<sc?Kn<sc?ir<sc?Pi<sc?cn<sc?Co<sc?0:-1:0:-1:Ac<sc?Qn<sc?0:-1:0:-1:tn<sc?Ls<sc?Cr<sc?hv<sc?0:-1:0:-1:Wi<sc?Gb<sc?0:-1:0:-1:ct<sc?oo<sc?tc<sc?e<sc?Ee<sc?Y<sc?0:-1:0:-1:Ze<sc?sa<sc?0:-1:0:-1:sf<sc?Ha<sc?Uf<sc?vt<sc?0:-1:0:-1:La<sc?Fv<sc?0:-1:0:-1:ao<sc?o<sc?vu<sc?Zn<sc?xi<sc?fe<sc?Bi<sc?Zs<sc?HD<sc?zo<sc?pe<sc?Tk<sc?0:-1:0:-1:gi<sc?ts<sc?0:-1:0:-1:ps<sc?hf<sc?As<sc?pa<sc?0:-1:0:-1:as<sc?Cb<sc?0:-1:0:-1:jf<sc?gt<sc?Mu<sc?ok<sc?Xo<sc?Ji<sc?0:-1:0:-1:D<sc?Yv<sc?0:-1:0:-1:Lf<sc?$s<sc?Vl<sc?Fb<sc?0:-1:0:-1:Ab<sc?ED<sc?0:-1:0:-1:Oe<sc?g<sc?wk<sc?Dv<sc?Mo<sc?_<sc?Ti<sc?Ve<sc?0:-1:0:-1:Hl<sc?An<sc?0:-1:0:-1:ai<sc?Hb<sc?Yf<sc?er<sc?0:-1:0:-1:fc<sc?Xl<sc?0:-1:0:-1:Bv<sc?_e<sc?le<sc?hD<sc?Pf<sc?Ge<sc?0:-1:0:-1:Dt<sc?Io<sc?0:-1:0:-1:cs<sc?KD<sc?eu<sc?hi<sc?0:-1:0:-1:Js<sc?Tr<sc?0:-1:0:-1:Hc<sc?Ma<sc?mu<sc?Jf<sc?Af<sc?Ki<sc?dc<sc?qi<sc?hu<sc?Aa<sc?0:-1:0:-1:$u<sc?Ak<sc?0:-1:0:-1:cc<sc?mf<sc?Rs<sc?wr<sc?0:-1:0:-1:yv<sc?eo<sc?0:-1:0:-1:jr<sc?ND<sc?ck<sc?Ui<sc?Ar<sc?Vs<sc?0:-1:0:-1:Bn<sc?F<sc?0:-1:0:-1:Qe<sc?_c<sc?cr<sc?Vv<sc?0:-1:0:-1:ub<sc?Ai<sc?0:-1:0:-1:Ra<sc?nn<sc?bu<sc?ja<sc?be<sc?Es<sc?Fl<sc?Ri<sc?0:-1:0:-1:nr<sc?zD<sc?0:-1:0:-1:Vc<sc?rD<sc?Br<sc?gu<sc?0:-1:0:-1:qn<sc?iD<sc?0:-1:0:-1:Fo<sc?oi<sc?lt<sc?av<sc?xu<sc?$D<sc?0:-1:0:-1:It<sc?zs<sc?0:-1:0:-1:Ju<sc?Qb<sc?Do<sc?VD<sc?0:-1:0:-1:Ot<sc?Yb<sc?0:-1:0:-1:fa<sc?Ne<sc?Sl<sc?Xi<sc?rc<sc?Mk<sc?jb<sc?ri<sc?$f<sc?Nv<sc?Nb<sc?Hi<sc?$b<sc?Kt<sc?0:-1:0:-1:Ir<sc?C<sc?0:-1:0:-1:we<sc?Ht<sc?Lt<sc?Sf<sc?0:-1:0:-1:bk<sc?_l<sc?0:-1:0:-1:Uv<sc?gc<sc?gr<sc?cv<sc?hc<sc?u<sc?0:-1:0:-1:et<sc?uv<sc?0:-1:0:-1:ht<sc?Bk<sc?Ds<sc?zb<sc?0:-1:0:-1:Ua<sc?ml<sc?0:-1:0:-1:Lk<sc?_D<sc?Su<sc?ma<sc?ob<sc?wc<sc?Kl<sc?tb<sc?0:-1:0:-1:ii<sc?dl<sc?0:-1:0:-1:wn<sc?Za<sc?Ko<sc?iu<sc?0:-1:0:-1:tv<sc?l<sc?0:-1:0:-1:oc<sc?mt<sc?jt<sc?Sc<sc?Sn<sc?Bs<sc?0:-1:0:-1:zr<sc?Ja<sc?0:-1:0:-1:nu<sc?hs<sc?eD<sc?Ro<sc?0:-1:0:-1:rk<sc?pt<sc?0:-1:0:-1:Gv<sc?Xf<sc?ca<sc?lf<sc?Pa<sc?Is<sc?c<sc?Bb<sc?nb<sc?T<sc?0:-1:0:-1:Da<sc?ui<sc?0:-1:0:-1:vD<sc?co<sc?Ku<sc?Wu<sc?0:-1:0:-1:Rl<sc?Gf<sc?0:-1:0:-1:du<sc?Ni<sc?mi<sc?Kf<sc?hl<sc?se<sc?0:-1:0:-1:vv<sc?Yu<sc?0:-1:0:-1:$n<sc?bn<sc?da<sc?Ek<sc?0:-1:0:-1:d<sc?oa<sc?0:-1:0:-1:Mf<sc?ul<sc?TD<sc?ni<sc?mv<sc?Fr<sc?lk<sc?Gc<sc?0:-1:0:-1:dD<sc?H<sc?0:-1:0:-1:Rk<sc?ji<sc?yn<sc?Sr<sc?0:-1:0:-1:Qr<sc?Xe<sc?0:-1:0:-1:Kv<sc?rv<sc?Ln<sc?gl<sc?OD<sc?P<sc?0:-1:0:-1:Lc<sc?i<sc?0:-1:0:-1:WD<sc?Wv<sc?pb<sc?ys<sc?0:-1:0:-1:v<sc?aa<sc?0:-1:0:-1:ea<sc?hb<sc?a<sc?Qu<sc?wt<sc?Ae<sc?Nr<sc?xr<sc?Nc<sc?kD<sc?ve<sc?ms<sc?0:-1:0:-1:nc<sc?Ca<sc?0:-1:0:-1:Du<sc?eb<sc?To<sc?tD<sc?0:-1:0:-1:of<sc?lu<sc?0:-1:0:-1:w<sc?fr<sc?Kc<sc?ZD<sc?rl<sc?Qv<sc?0:-1:0:-1:Vb<sc?Oo<sc?0:-1:0:-1:Jr<sc?Go<sc?Pb<sc?fu<sc?0:-1:0:-1:ti<sc?Mt<sc?0:-1:0:-1:Fe<sc?Mi<sc?_i<sc?Je<sc?sr<sc?Ol<sc?Xv<sc?dn<sc?0:-1:0:-1:Bf<sc?vr<sc?0:-1:0:-1:ge<sc?Ml<sc?Jn<sc?On<sc?0:-1:0:-1:Cc<sc?Sb<sc?0:-1:0:-1:k<sc?PD<sc?$e<sc?$l<sc?oD<sc?io<sc?0:-1:0:-1:nf<sc?El<sc?0:-1:0:-1:qe<sc?BD<sc?qs<sc?vs<sc?0:-1:0:-1:lD<sc?cu<sc?0:-1:0:-1:nk<sc?hk<sc?zl<sc?il<sc?mb<sc?Yl<sc?Db<sc?dr<sc?Lr<sc?fb<sc?0:-1:0:-1:pu<sc?gb<sc?0:-1:0:-1:yr<sc?Wr<sc?Te<sc?Bu<sc?0:-1:0:-1:GD<sc?So<sc?0:-1:0:-1:Ik<sc?Xc<sc?Ga<sc?Ul<sc?Ba<sc?Dk<sc?0:-1:0:-1:Ms<sc?Ck<sc?0:-1:0:-1:Pv<sc?Jl<sc?lr<sc?Iv<sc?0:-1:0:-1:wl<sc?bl<sc?0:-1:0:-1:ot<sc?Vo<sc?ue<sc?ye<sc?al<sc?n<sc?mc<sc?wi<sc?0:-1:0:-1:fs<sc?Et<sc?0:-1:0:-1:ar<sc?on<sc?Zu<sc?_u<sc?0:-1:0:-1:$v<sc?ws<sc?0:-1:0:-1:nD<sc?ae<sc?mo<sc?Yn<sc?Df<sc?Ye<sc?0:-1:0:-1:Rn<sc?Wb<sc?0:-1:0:-1:pl<sc?vi<sc?JD<sc?Qs<sc?0:-1:0:-1:Fc<sc?Ft<sc?0:-1:0:-1:Cd(Eqr,sc+aD|0)-1|0:-1;if(3<lc>>>0)Gr=Q1r(t);else switch(lc){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var bc=oat(H1r(t));if(2<bc>>>0)Gr=Q1r(t);else switch(bc){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Dc=vut(H1r(t));if(2<Dc>>>0)Gr=Q1r(t);else switch(Dc){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var kc=Yut(H1r(t));if(2<kc>>>0)Gr=Q1r(t);else switch(kc){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,51);var pc=Jnt(H1r(t));Gr=0===pc?p(t):1===pc?m(t):Q1r(t)}}}break;default:K1r(t,87);var yc=Bnt(H1r(t));if(2<yc>>>0)Gr=Q1r(t);else switch(yc){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Tc=rut(H1r(t));if(2<Tc>>>0)Gr=Q1r(t);else switch(Tc){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Oc=Ont(H1r(t));if(2<Oc>>>0)Gr=Q1r(t);else switch(Oc){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Pc=cat(H1r(t));if(2<Pc>>>0)Gr=Q1r(t);else switch(Pc){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,52);var Mc=Jnt(H1r(t));Gr=0===Mc?p(t):1===Mc?m(t):Q1r(t)}}}}}}break;case 38:K1r(t,87);var $c=H1r(t),es=35<$c?Al<$c?ie<$c?Qf<$c?-1:Cl<$c?Zt<$c?Ea<$c?pi<$c?ds<$c?pv<$c?Or<$c?He<$c?0:-1:0:-1:ro<$c?vc<$c?0:-1:0:-1:Ob<$c?sk<$c?wv<$c?Bl<$c?0:-1:0:-1:me<$c?ta<$c?0:-1:0:-1:Os<$c?gs<$c?Gs<$c?nv<$c?Il<$c?Se<$c?Un<$c?We<$c?rf<$c?ek<$c?_s<$c?MD<$c?$i<$c?Uo<$c?sn<$c?yD<$c?0:-1:0:-1:Wc<$c?Hu<$c?0:-1:0:-1:Ic<$c?it<$c?Jo<$c?ec<$c?0:-1:0:-1:ol<$c?zv<$c?0:-1:0:-1:x<$c?_v<$c?Sv<$c?Q<$c?yf<$c?ln<$c?0:-1:0:-1:Vt<$c?rb<$c?0:-1:0:-1:Po<$c?Gu<$c?Jc<$c?qt<$c?0:-1:0:-1:Ei<$c?Hs<$c?0:-1:0:-1:Dl<$c?jc<$c?fi<$c?tt<$c?Wo<$c?uc<$c?Rr<$c?Nu<$c?0:-1:0:-1:yl<$c?gv<$c?0:-1:0:-1:os<$c?Zc<$c?an<$c?gD<$c?0:-1:0:-1:ru<$c?zc<$c?0:-1:0:-1:Jt<$c?bi<$c?Zo<$c?Ur<$c?zf<$c?Ks<$c?0:-1:0:-1:au<$c?mr<$c?0:-1:0:-1:xD<$c?Wf<$c?xo<$c?Ao<$c?0:-1:0:-1:QD<$c?AD<$c?0:-1:0:-1:wf<$c?xk<$c?Ql<$c?$a<$c?Wa<$c?qa<$c?zt<$c?br<$c?wb<$c?qc<$c?0:-1:0:-1:Pt<$c?Ps<$c?0:-1:0:-1:Wt<$c?ha<$c?vf<$c?Er<$c?0:-1:0:-1:Zr<$c?xc<$c?0:-1:0:-1:ua<$c?jn<$c?Uc<$c?Kr<$c?ke<$c?zn<$c?0:-1:0:-1:rs<$c?Ho<$c?0:-1:0:-1:dk<$c?pf<$c?uo<$c?qu<$c?0:-1:0:-1:$<$c?wu<$c?0:-1:0:-1:If<$c?DD<$c?Ub<$c?Kn<$c?ir<$c?Pi<$c?cn<$c?Co<$c?0:-1:0:-1:Ac<$c?Qn<$c?0:-1:0:-1:tn<$c?Ls<$c?Cr<$c?hv<$c?0:-1:0:-1:Wi<$c?Gb<$c?0:-1:0:-1:ct<$c?oo<$c?tc<$c?e<$c?Ee<$c?Y<$c?0:-1:0:-1:Ze<$c?sa<$c?0:-1:0:-1:sf<$c?Ha<$c?Uf<$c?vt<$c?0:-1:0:-1:La<$c?Fv<$c?0:-1:0:-1:ao<$c?o<$c?vu<$c?Zn<$c?xi<$c?fe<$c?Bi<$c?Zs<$c?HD<$c?zo<$c?pe<$c?Tk<$c?0:-1:0:-1:gi<$c?ts<$c?0:-1:0:-1:ps<$c?hf<$c?As<$c?pa<$c?0:-1:0:-1:as<$c?Cb<$c?0:-1:0:-1:jf<$c?gt<$c?Mu<$c?ok<$c?Xo<$c?Ji<$c?0:-1:0:-1:D<$c?Yv<$c?0:-1:0:-1:Lf<$c?$s<$c?Vl<$c?Fb<$c?0:-1:0:-1:Ab<$c?ED<$c?0:-1:0:-1:Oe<$c?g<$c?wk<$c?Dv<$c?Mo<$c?_<$c?Ti<$c?Ve<$c?0:-1:0:-1:Hl<$c?An<$c?0:-1:0:-1:ai<$c?Hb<$c?Yf<$c?er<$c?0:-1:0:-1:fc<$c?Xl<$c?0:-1:0:-1:Bv<$c?_e<$c?le<$c?hD<$c?Pf<$c?Ge<$c?0:-1:0:-1:Dt<$c?Io<$c?0:-1:0:-1:cs<$c?KD<$c?eu<$c?hi<$c?0:-1:0:-1:Js<$c?Tr<$c?0:-1:0:-1:Hc<$c?Ma<$c?mu<$c?Jf<$c?Af<$c?Ki<$c?dc<$c?qi<$c?hu<$c?Aa<$c?0:-1:0:-1:$u<$c?Ak<$c?0:-1:0:-1:cc<$c?mf<$c?Rs<$c?wr<$c?0:-1:0:-1:yv<$c?eo<$c?0:-1:0:-1:jr<$c?ND<$c?ck<$c?Ui<$c?Ar<$c?Vs<$c?0:-1:0:-1:Bn<$c?F<$c?0:-1:0:-1:Qe<$c?_c<$c?cr<$c?Vv<$c?0:-1:0:-1:ub<$c?Ai<$c?0:-1:0:-1:Ra<$c?nn<$c?bu<$c?ja<$c?be<$c?Es<$c?Fl<$c?Ri<$c?0:-1:0:-1:nr<$c?zD<$c?0:-1:0:-1:Vc<$c?rD<$c?Br<$c?gu<$c?0:-1:0:-1:qn<$c?iD<$c?0:-1:0:-1:Fo<$c?oi<$c?lt<$c?av<$c?xu<$c?$D<$c?0:-1:0:-1:It<$c?zs<$c?0:-1:0:-1:Ju<$c?Qb<$c?Do<$c?VD<$c?0:-1:0:-1:Ot<$c?Yb<$c?0:-1:0:-1:fa<$c?Ne<$c?Sl<$c?Xi<$c?rc<$c?Mk<$c?jb<$c?ri<$c?$f<$c?Nv<$c?Nb<$c?Hi<$c?$b<$c?Kt<$c?0:-1:0:-1:Ir<$c?C<$c?0:-1:0:-1:we<$c?Ht<$c?Lt<$c?Sf<$c?0:-1:0:-1:bk<$c?_l<$c?0:-1:0:-1:Uv<$c?gc<$c?gr<$c?cv<$c?hc<$c?u<$c?0:-1:0:-1:et<$c?uv<$c?0:-1:0:-1:ht<$c?Bk<$c?Ds<$c?zb<$c?0:-1:0:-1:Ua<$c?ml<$c?0:-1:0:-1:Lk<$c?_D<$c?Su<$c?ma<$c?ob<$c?wc<$c?Kl<$c?tb<$c?0:-1:0:-1:ii<$c?dl<$c?0:-1:0:-1:wn<$c?Za<$c?Ko<$c?iu<$c?0:-1:0:-1:tv<$c?l<$c?0:-1:0:-1:oc<$c?mt<$c?jt<$c?Sc<$c?Sn<$c?Bs<$c?0:-1:0:-1:zr<$c?Ja<$c?0:-1:0:-1:nu<$c?hs<$c?eD<$c?Ro<$c?0:-1:0:-1:rk<$c?pt<$c?0:-1:0:-1:Gv<$c?Xf<$c?ca<$c?lf<$c?Pa<$c?Is<$c?c<$c?Bb<$c?nb<$c?T<$c?0:-1:0:-1:Da<$c?ui<$c?0:-1:0:-1:vD<$c?co<$c?Ku<$c?Wu<$c?0:-1:0:-1:Rl<$c?Gf<$c?0:-1:0:-1:du<$c?Ni<$c?mi<$c?Kf<$c?hl<$c?se<$c?0:-1:0:-1:vv<$c?Yu<$c?0:-1:0:-1:$n<$c?bn<$c?da<$c?Ek<$c?0:-1:0:-1:d<$c?oa<$c?0:-1:0:-1:Mf<$c?ul<$c?TD<$c?ni<$c?mv<$c?Fr<$c?lk<$c?Gc<$c?0:-1:0:-1:dD<$c?H<$c?0:-1:0:-1:Rk<$c?ji<$c?yn<$c?Sr<$c?0:-1:0:-1:Qr<$c?Xe<$c?0:-1:0:-1:Kv<$c?rv<$c?Ln<$c?gl<$c?OD<$c?P<$c?0:-1:0:-1:Lc<$c?i<$c?0:-1:0:-1:WD<$c?Wv<$c?pb<$c?ys<$c?0:-1:0:-1:v<$c?aa<$c?0:-1:0:-1:ea<$c?hb<$c?a<$c?Qu<$c?wt<$c?Ae<$c?Nr<$c?xr<$c?Nc<$c?kD<$c?ve<$c?ms<$c?0:-1:0:-1:nc<$c?Ca<$c?0:-1:0:-1:Du<$c?eb<$c?To<$c?tD<$c?0:-1:0:-1:of<$c?lu<$c?0:-1:0:-1:w<$c?fr<$c?Kc<$c?ZD<$c?rl<$c?Qv<$c?0:-1:0:-1:Vb<$c?Oo<$c?0:-1:0:-1:Jr<$c?Go<$c?Pb<$c?fu<$c?0:-1:0:-1:ti<$c?Mt<$c?0:-1:0:-1:Fe<$c?Mi<$c?_i<$c?Je<$c?sr<$c?Ol<$c?Xv<$c?dn<$c?0:-1:0:-1:Bf<$c?vr<$c?0:-1:0:-1:ge<$c?Ml<$c?Jn<$c?On<$c?0:-1:0:-1:Cc<$c?Sb<$c?0:-1:0:-1:k<$c?PD<$c?$e<$c?$l<$c?oD<$c?io<$c?0:-1:0:-1:nf<$c?El<$c?0:-1:0:-1:qe<$c?BD<$c?qs<$c?vs<$c?0:-1:0:-1:lD<$c?cu<$c?0:-1:0:-1:nk<$c?hk<$c?zl<$c?il<$c?mb<$c?Yl<$c?Db<$c?dr<$c?Lr<$c?fb<$c?0:-1:0:-1:pu<$c?gb<$c?0:-1:0:-1:yr<$c?Wr<$c?Te<$c?Bu<$c?0:-1:0:-1:GD<$c?So<$c?0:-1:0:-1:Ik<$c?Xc<$c?Ga<$c?Ul<$c?Ba<$c?Dk<$c?0:-1:0:-1:Ms<$c?Ck<$c?0:-1:0:-1:Pv<$c?Jl<$c?lr<$c?Iv<$c?0:-1:0:-1:wl<$c?bl<$c?0:-1:0:-1:ot<$c?Vo<$c?ue<$c?ye<$c?al<$c?n<$c?mc<$c?wi<$c?0:-1:0:-1:fs<$c?Et<$c?0:-1:0:-1:ar<$c?on<$c?Zu<$c?_u<$c?0:-1:0:-1:$v<$c?ws<$c?0:-1:0:-1:nD<$c?ae<$c?mo<$c?Yn<$c?Df<$c?Ye<$c?0:-1:0:-1:Rn<$c?Wb<$c?0:-1:0:-1:pl<$c?vi<$c?JD<$c?Qs<$c?0:-1:0:-1:Fc<$c?Ft<$c?0:-1:0:-1:Cd(Dqr,$c+aD|0)-1|0:-1;if(5<es>>>0)Gr=Q1r(t);else switch(es){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var ns=_ut(H1r(t));if(2<ns>>>0)Gr=Q1r(t);else switch(ns){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var us=cat(H1r(t));if(2<us>>>0)Gr=Q1r(t);else switch(us){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var is=Bnt(H1r(t));if(2<is>>>0)Gr=Q1r(t);else switch(is){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,53);var ss=Jnt(H1r(t));Gr=0===ss?p(t):1===ss?m(t):Q1r(t)}}}break;case 3:K1r(t,87);var ls=rut(H1r(t));if(2<ls>>>0)Gr=Q1r(t);else switch(ls){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var bs=fut(H1r(t));if(2<bs>>>0)Gr=Q1r(t);else switch(bs){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var ks=_ut(H1r(t));if(2<ks>>>0)Gr=Q1r(t);else switch(ks){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Fs=_ut(H1r(t));if(2<Fs>>>0)Gr=Q1r(t);else switch(Fs){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Cs=yut(H1r(t));if(2<Cs>>>0)Gr=Q1r(t);else switch(Cs){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,54);var Ss=Jnt(H1r(t));Gr=0===Ss?p(t):1===Ss?m(t):Q1r(t)}}}}}break;case 4:K1r(t,87);var xs=vut(H1r(t));if(2<xs>>>0)Gr=Q1r(t);else switch(xs){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,55);var Ns=Jnt(H1r(t));Gr=0===Ns?p(t):1===Ns?m(t):Q1r(t)}break;default:K1r(t,87);var Us=rut(H1r(t));if(2<Us>>>0)Gr=Q1r(t);else switch(Us){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Xs=Lut(H1r(t));if(2<Xs>>>0)Gr=Q1r(t);else switch(Xs){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Ys=Yut(H1r(t));if(2<Ys>>>0)Gr=Q1r(t);else switch(Ys){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var to=bat(H1r(t));if(2<to>>>0)Gr=Q1r(t);else switch(to){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var fo=oat(H1r(t));if(2<fo>>>0)Gr=Q1r(t);else switch(fo){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var so=rut(H1r(t));if(2<so>>>0)Gr=Q1r(t);else switch(so){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,56);var vo=Jnt(H1r(t));Gr=0===vo?p(t):1===vo?m(t):Q1r(t)}}}}}}}break;case 39:K1r(t,87);var lo=H1r(t),bo=35<lo?Al<lo?ie<lo?Qf<lo?-1:Cl<lo?Zt<lo?Ea<lo?pi<lo?ds<lo?pv<lo?Or<lo?He<lo?0:-1:0:-1:ro<lo?vc<lo?0:-1:0:-1:Ob<lo?sk<lo?wv<lo?Bl<lo?0:-1:0:-1:me<lo?ta<lo?0:-1:0:-1:Os<lo?gs<lo?Gs<lo?nv<lo?Il<lo?Se<lo?Un<lo?We<lo?rf<lo?ek<lo?_s<lo?MD<lo?$i<lo?Uo<lo?sn<lo?yD<lo?0:-1:0:-1:Wc<lo?Hu<lo?0:-1:0:-1:Ic<lo?it<lo?Jo<lo?ec<lo?0:-1:0:-1:ol<lo?zv<lo?0:-1:0:-1:x<lo?_v<lo?Sv<lo?Q<lo?yf<lo?ln<lo?0:-1:0:-1:Vt<lo?rb<lo?0:-1:0:-1:Po<lo?Gu<lo?Jc<lo?qt<lo?0:-1:0:-1:Ei<lo?Hs<lo?0:-1:0:-1:Dl<lo?jc<lo?fi<lo?tt<lo?Wo<lo?uc<lo?Rr<lo?Nu<lo?0:-1:0:-1:yl<lo?gv<lo?0:-1:0:-1:os<lo?Zc<lo?an<lo?gD<lo?0:-1:0:-1:ru<lo?zc<lo?0:-1:0:-1:Jt<lo?bi<lo?Zo<lo?Ur<lo?zf<lo?Ks<lo?0:-1:0:-1:au<lo?mr<lo?0:-1:0:-1:xD<lo?Wf<lo?xo<lo?Ao<lo?0:-1:0:-1:QD<lo?AD<lo?0:-1:0:-1:wf<lo?xk<lo?Ql<lo?$a<lo?Wa<lo?qa<lo?zt<lo?br<lo?wb<lo?qc<lo?0:-1:0:-1:Pt<lo?Ps<lo?0:-1:0:-1:Wt<lo?ha<lo?vf<lo?Er<lo?0:-1:0:-1:Zr<lo?xc<lo?0:-1:0:-1:ua<lo?jn<lo?Uc<lo?Kr<lo?ke<lo?zn<lo?0:-1:0:-1:rs<lo?Ho<lo?0:-1:0:-1:dk<lo?pf<lo?uo<lo?qu<lo?0:-1:0:-1:$<lo?wu<lo?0:-1:0:-1:If<lo?DD<lo?Ub<lo?Kn<lo?ir<lo?Pi<lo?cn<lo?Co<lo?0:-1:0:-1:Ac<lo?Qn<lo?0:-1:0:-1:tn<lo?Ls<lo?Cr<lo?hv<lo?0:-1:0:-1:Wi<lo?Gb<lo?0:-1:0:-1:ct<lo?oo<lo?tc<lo?e<lo?Ee<lo?Y<lo?0:-1:0:-1:Ze<lo?sa<lo?0:-1:0:-1:sf<lo?Ha<lo?Uf<lo?vt<lo?0:-1:0:-1:La<lo?Fv<lo?0:-1:0:-1:ao<lo?o<lo?vu<lo?Zn<lo?xi<lo?fe<lo?Bi<lo?Zs<lo?HD<lo?zo<lo?pe<lo?Tk<lo?0:-1:0:-1:gi<lo?ts<lo?0:-1:0:-1:ps<lo?hf<lo?As<lo?pa<lo?0:-1:0:-1:as<lo?Cb<lo?0:-1:0:-1:jf<lo?gt<lo?Mu<lo?ok<lo?Xo<lo?Ji<lo?0:-1:0:-1:D<lo?Yv<lo?0:-1:0:-1:Lf<lo?$s<lo?Vl<lo?Fb<lo?0:-1:0:-1:Ab<lo?ED<lo?0:-1:0:-1:Oe<lo?g<lo?wk<lo?Dv<lo?Mo<lo?_<lo?Ti<lo?Ve<lo?0:-1:0:-1:Hl<lo?An<lo?0:-1:0:-1:ai<lo?Hb<lo?Yf<lo?er<lo?0:-1:0:-1:fc<lo?Xl<lo?0:-1:0:-1:Bv<lo?_e<lo?le<lo?hD<lo?Pf<lo?Ge<lo?0:-1:0:-1:Dt<lo?Io<lo?0:-1:0:-1:cs<lo?KD<lo?eu<lo?hi<lo?0:-1:0:-1:Js<lo?Tr<lo?0:-1:0:-1:Hc<lo?Ma<lo?mu<lo?Jf<lo?Af<lo?Ki<lo?dc<lo?qi<lo?hu<lo?Aa<lo?0:-1:0:-1:$u<lo?Ak<lo?0:-1:0:-1:cc<lo?mf<lo?Rs<lo?wr<lo?0:-1:0:-1:yv<lo?eo<lo?0:-1:0:-1:jr<lo?ND<lo?ck<lo?Ui<lo?Ar<lo?Vs<lo?0:-1:0:-1:Bn<lo?F<lo?0:-1:0:-1:Qe<lo?_c<lo?cr<lo?Vv<lo?0:-1:0:-1:ub<lo?Ai<lo?0:-1:0:-1:Ra<lo?nn<lo?bu<lo?ja<lo?be<lo?Es<lo?Fl<lo?Ri<lo?0:-1:0:-1:nr<lo?zD<lo?0:-1:0:-1:Vc<lo?rD<lo?Br<lo?gu<lo?0:-1:0:-1:qn<lo?iD<lo?0:-1:0:-1:Fo<lo?oi<lo?lt<lo?av<lo?xu<lo?$D<lo?0:-1:0:-1:It<lo?zs<lo?0:-1:0:-1:Ju<lo?Qb<lo?Do<lo?VD<lo?0:-1:0:-1:Ot<lo?Yb<lo?0:-1:0:-1:fa<lo?Ne<lo?Sl<lo?Xi<lo?rc<lo?Mk<lo?jb<lo?ri<lo?$f<lo?Nv<lo?Nb<lo?Hi<lo?$b<lo?Kt<lo?0:-1:0:-1:Ir<lo?C<lo?0:-1:0:-1:we<lo?Ht<lo?Lt<lo?Sf<lo?0:-1:0:-1:bk<lo?_l<lo?0:-1:0:-1:Uv<lo?gc<lo?gr<lo?cv<lo?hc<lo?u<lo?0:-1:0:-1:et<lo?uv<lo?0:-1:0:-1:ht<lo?Bk<lo?Ds<lo?zb<lo?0:-1:0:-1:Ua<lo?ml<lo?0:-1:0:-1:Lk<lo?_D<lo?Su<lo?ma<lo?ob<lo?wc<lo?Kl<lo?tb<lo?0:-1:0:-1:ii<lo?dl<lo?0:-1:0:-1:wn<lo?Za<lo?Ko<lo?iu<lo?0:-1:0:-1:tv<lo?l<lo?0:-1:0:-1:oc<lo?mt<lo?jt<lo?Sc<lo?Sn<lo?Bs<lo?0:-1:0:-1:zr<lo?Ja<lo?0:-1:0:-1:nu<lo?hs<lo?eD<lo?Ro<lo?0:-1:0:-1:rk<lo?pt<lo?0:-1:0:-1:Gv<lo?Xf<lo?ca<lo?lf<lo?Pa<lo?Is<lo?c<lo?Bb<lo?nb<lo?T<lo?0:-1:0:-1:Da<lo?ui<lo?0:-1:0:-1:vD<lo?co<lo?Ku<lo?Wu<lo?0:-1:0:-1:Rl<lo?Gf<lo?0:-1:0:-1:du<lo?Ni<lo?mi<lo?Kf<lo?hl<lo?se<lo?0:-1:0:-1:vv<lo?Yu<lo?0:-1:0:-1:$n<lo?bn<lo?da<lo?Ek<lo?0:-1:0:-1:d<lo?oa<lo?0:-1:0:-1:Mf<lo?ul<lo?TD<lo?ni<lo?mv<lo?Fr<lo?lk<lo?Gc<lo?0:-1:0:-1:dD<lo?H<lo?0:-1:0:-1:Rk<lo?ji<lo?yn<lo?Sr<lo?0:-1:0:-1:Qr<lo?Xe<lo?0:-1:0:-1:Kv<lo?rv<lo?Ln<lo?gl<lo?OD<lo?P<lo?0:-1:0:-1:Lc<lo?i<lo?0:-1:0:-1:WD<lo?Wv<lo?pb<lo?ys<lo?0:-1:0:-1:v<lo?aa<lo?0:-1:0:-1:ea<lo?hb<lo?a<lo?Qu<lo?wt<lo?Ae<lo?Nr<lo?xr<lo?Nc<lo?kD<lo?ve<lo?ms<lo?0:-1:0:-1:nc<lo?Ca<lo?0:-1:0:-1:Du<lo?eb<lo?To<lo?tD<lo?0:-1:0:-1:of<lo?lu<lo?0:-1:0:-1:w<lo?fr<lo?Kc<lo?ZD<lo?rl<lo?Qv<lo?0:-1:0:-1:Vb<lo?Oo<lo?0:-1:0:-1:Jr<lo?Go<lo?Pb<lo?fu<lo?0:-1:0:-1:ti<lo?Mt<lo?0:-1:0:-1:Fe<lo?Mi<lo?_i<lo?Je<lo?sr<lo?Ol<lo?Xv<lo?dn<lo?0:-1:0:-1:Bf<lo?vr<lo?0:-1:0:-1:ge<lo?Ml<lo?Jn<lo?On<lo?0:-1:0:-1:Cc<lo?Sb<lo?0:-1:0:-1:k<lo?PD<lo?$e<lo?$l<lo?oD<lo?io<lo?0:-1:0:-1:nf<lo?El<lo?0:-1:0:-1:qe<lo?BD<lo?qs<lo?vs<lo?0:-1:0:-1:lD<lo?cu<lo?0:-1:0:-1:nk<lo?hk<lo?zl<lo?il<lo?mb<lo?Yl<lo?Db<lo?dr<lo?Lr<lo?fb<lo?0:-1:0:-1:pu<lo?gb<lo?0:-1:0:-1:yr<lo?Wr<lo?Te<lo?Bu<lo?0:-1:0:-1:GD<lo?So<lo?0:-1:0:-1:Ik<lo?Xc<lo?Ga<lo?Ul<lo?Ba<lo?Dk<lo?0:-1:0:-1:Ms<lo?Ck<lo?0:-1:0:-1:Pv<lo?Jl<lo?lr<lo?Iv<lo?0:-1:0:-1:wl<lo?bl<lo?0:-1:0:-1:ot<lo?Vo<lo?ue<lo?ye<lo?al<lo?n<lo?mc<lo?wi<lo?0:-1:0:-1:fs<lo?Et<lo?0:-1:0:-1:ar<lo?on<lo?Zu<lo?_u<lo?0:-1:0:-1:$v<lo?ws<lo?0:-1:0:-1:nD<lo?ae<lo?mo<lo?Yn<lo?Df<lo?Ye<lo?0:-1:0:-1:Rn<lo?Wb<lo?0:-1:0:-1:pl<lo?vi<lo?JD<lo?Qs<lo?0:-1:0:-1:Fc<lo?Ft<lo?0:-1:0:-1:Cd(bqr,lo+aD|0)-1|0:-1;if(4<bo>>>0)Gr=Q1r(t);else switch(bo){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,57);var ko=Jnt(H1r(t));Gr=0===ko?p(t):1===ko?m(t):Q1r(t);break;case 3:K1r(t,87);var po=Unt(H1r(t));if(2<po>>>0)Gr=Q1r(t);else switch(po){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var wo=H1r(t),yo=35<wo?Al<wo?ie<wo?Qf<wo?-1:Cl<wo?Zt<wo?Ea<wo?pi<wo?ds<wo?pv<wo?Or<wo?He<wo?0:-1:0:-1:ro<wo?vc<wo?0:-1:0:-1:Ob<wo?sk<wo?wv<wo?Bl<wo?0:-1:0:-1:me<wo?ta<wo?0:-1:0:-1:Os<wo?gs<wo?Gs<wo?nv<wo?Il<wo?Se<wo?Un<wo?We<wo?rf<wo?ek<wo?_s<wo?MD<wo?$i<wo?Uo<wo?sn<wo?yD<wo?0:-1:0:-1:Wc<wo?Hu<wo?0:-1:0:-1:Ic<wo?it<wo?Jo<wo?ec<wo?0:-1:0:-1:ol<wo?zv<wo?0:-1:0:-1:x<wo?_v<wo?Sv<wo?Q<wo?yf<wo?ln<wo?0:-1:0:-1:Vt<wo?rb<wo?0:-1:0:-1:Po<wo?Gu<wo?Jc<wo?qt<wo?0:-1:0:-1:Ei<wo?Hs<wo?0:-1:0:-1:Dl<wo?jc<wo?fi<wo?tt<wo?Wo<wo?uc<wo?Rr<wo?Nu<wo?0:-1:0:-1:yl<wo?gv<wo?0:-1:0:-1:os<wo?Zc<wo?an<wo?gD<wo?0:-1:0:-1:ru<wo?zc<wo?0:-1:0:-1:Jt<wo?bi<wo?Zo<wo?Ur<wo?zf<wo?Ks<wo?0:-1:0:-1:au<wo?mr<wo?0:-1:0:-1:xD<wo?Wf<wo?xo<wo?Ao<wo?0:-1:0:-1:QD<wo?AD<wo?0:-1:0:-1:wf<wo?xk<wo?Ql<wo?$a<wo?Wa<wo?qa<wo?zt<wo?br<wo?wb<wo?qc<wo?0:-1:0:-1:Pt<wo?Ps<wo?0:-1:0:-1:Wt<wo?ha<wo?vf<wo?Er<wo?0:-1:0:-1:Zr<wo?xc<wo?0:-1:0:-1:ua<wo?jn<wo?Uc<wo?Kr<wo?ke<wo?zn<wo?0:-1:0:-1:rs<wo?Ho<wo?0:-1:0:-1:dk<wo?pf<wo?uo<wo?qu<wo?0:-1:0:-1:$<wo?wu<wo?0:-1:0:-1:If<wo?DD<wo?Ub<wo?Kn<wo?ir<wo?Pi<wo?cn<wo?Co<wo?0:-1:0:-1:Ac<wo?Qn<wo?0:-1:0:-1:tn<wo?Ls<wo?Cr<wo?hv<wo?0:-1:0:-1:Wi<wo?Gb<wo?0:-1:0:-1:ct<wo?oo<wo?tc<wo?e<wo?Ee<wo?Y<wo?0:-1:0:-1:Ze<wo?sa<wo?0:-1:0:-1:sf<wo?Ha<wo?Uf<wo?vt<wo?0:-1:0:-1:La<wo?Fv<wo?0:-1:0:-1:ao<wo?o<wo?vu<wo?Zn<wo?xi<wo?fe<wo?Bi<wo?Zs<wo?HD<wo?zo<wo?pe<wo?Tk<wo?0:-1:0:-1:gi<wo?ts<wo?0:-1:0:-1:ps<wo?hf<wo?As<wo?pa<wo?0:-1:0:-1:as<wo?Cb<wo?0:-1:0:-1:jf<wo?gt<wo?Mu<wo?ok<wo?Xo<wo?Ji<wo?0:-1:0:-1:D<wo?Yv<wo?0:-1:0:-1:Lf<wo?$s<wo?Vl<wo?Fb<wo?0:-1:0:-1:Ab<wo?ED<wo?0:-1:0:-1:Oe<wo?g<wo?wk<wo?Dv<wo?Mo<wo?_<wo?Ti<wo?Ve<wo?0:-1:0:-1:Hl<wo?An<wo?0:-1:0:-1:ai<wo?Hb<wo?Yf<wo?er<wo?0:-1:0:-1:fc<wo?Xl<wo?0:-1:0:-1:Bv<wo?_e<wo?le<wo?hD<wo?Pf<wo?Ge<wo?0:-1:0:-1:Dt<wo?Io<wo?0:-1:0:-1:cs<wo?KD<wo?eu<wo?hi<wo?0:-1:0:-1:Js<wo?Tr<wo?0:-1:0:-1:Hc<wo?Ma<wo?mu<wo?Jf<wo?Af<wo?Ki<wo?dc<wo?qi<wo?hu<wo?Aa<wo?0:-1:0:-1:$u<wo?Ak<wo?0:-1:0:-1:cc<wo?mf<wo?Rs<wo?wr<wo?0:-1:0:-1:yv<wo?eo<wo?0:-1:0:-1:jr<wo?ND<wo?ck<wo?Ui<wo?Ar<wo?Vs<wo?0:-1:0:-1:Bn<wo?F<wo?0:-1:0:-1:Qe<wo?_c<wo?cr<wo?Vv<wo?0:-1:0:-1:ub<wo?Ai<wo?0:-1:0:-1:Ra<wo?nn<wo?bu<wo?ja<wo?be<wo?Es<wo?Fl<wo?Ri<wo?0:-1:0:-1:nr<wo?zD<wo?0:-1:0:-1:Vc<wo?rD<wo?Br<wo?gu<wo?0:-1:0:-1:qn<wo?iD<wo?0:-1:0:-1:Fo<wo?oi<wo?lt<wo?av<wo?xu<wo?$D<wo?0:-1:0:-1:It<wo?zs<wo?0:-1:0:-1:Ju<wo?Qb<wo?Do<wo?VD<wo?0:-1:0:-1:Ot<wo?Yb<wo?0:-1:0:-1:fa<wo?Ne<wo?Sl<wo?Xi<wo?rc<wo?Mk<wo?jb<wo?ri<wo?$f<wo?Nv<wo?Nb<wo?Hi<wo?$b<wo?Kt<wo?0:-1:0:-1:Ir<wo?C<wo?0:-1:0:-1:we<wo?Ht<wo?Lt<wo?Sf<wo?0:-1:0:-1:bk<wo?_l<wo?0:-1:0:-1:Uv<wo?gc<wo?gr<wo?cv<wo?hc<wo?u<wo?0:-1:0:-1:et<wo?uv<wo?0:-1:0:-1:ht<wo?Bk<wo?Ds<wo?zb<wo?0:-1:0:-1:Ua<wo?ml<wo?0:-1:0:-1:Lk<wo?_D<wo?Su<wo?ma<wo?ob<wo?wc<wo?Kl<wo?tb<wo?0:-1:0:-1:ii<wo?dl<wo?0:-1:0:-1:wn<wo?Za<wo?Ko<wo?iu<wo?0:-1:0:-1:tv<wo?l<wo?0:-1:0:-1:oc<wo?mt<wo?jt<wo?Sc<wo?Sn<wo?Bs<wo?0:-1:0:-1:zr<wo?Ja<wo?0:-1:0:-1:nu<wo?hs<wo?eD<wo?Ro<wo?0:-1:0:-1:rk<wo?pt<wo?0:-1:0:-1:Gv<wo?Xf<wo?ca<wo?lf<wo?Pa<wo?Is<wo?c<wo?Bb<wo?nb<wo?T<wo?0:-1:0:-1:Da<wo?ui<wo?0:-1:0:-1:vD<wo?co<wo?Ku<wo?Wu<wo?0:-1:0:-1:Rl<wo?Gf<wo?0:-1:0:-1:du<wo?Ni<wo?mi<wo?Kf<wo?hl<wo?se<wo?0:-1:0:-1:vv<wo?Yu<wo?0:-1:0:-1:$n<wo?bn<wo?da<wo?Ek<wo?0:-1:0:-1:d<wo?oa<wo?0:-1:0:-1:Mf<wo?ul<wo?TD<wo?ni<wo?mv<wo?Fr<wo?lk<wo?Gc<wo?0:-1:0:-1:dD<wo?H<wo?0:-1:0:-1:Rk<wo?ji<wo?yn<wo?Sr<wo?0:-1:0:-1:Qr<wo?Xe<wo?0:-1:0:-1:Kv<wo?rv<wo?Ln<wo?gl<wo?OD<wo?P<wo?0:-1:0:-1:Lc<wo?i<wo?0:-1:0:-1:WD<wo?Wv<wo?pb<wo?ys<wo?0:-1:0:-1:v<wo?aa<wo?0:-1:0:-1:ea<wo?hb<wo?a<wo?Qu<wo?wt<wo?Ae<wo?Nr<wo?xr<wo?Nc<wo?kD<wo?ve<wo?ms<wo?0:-1:0:-1:nc<wo?Ca<wo?0:-1:0:-1:Du<wo?eb<wo?To<wo?tD<wo?0:-1:0:-1:of<wo?lu<wo?0:-1:0:-1:w<wo?fr<wo?Kc<wo?ZD<wo?rl<wo?Qv<wo?0:-1:0:-1:Vb<wo?Oo<wo?0:-1:0:-1:Jr<wo?Go<wo?Pb<wo?fu<wo?0:-1:0:-1:ti<wo?Mt<wo?0:-1:0:-1:Fe<wo?Mi<wo?_i<wo?Je<wo?sr<wo?Ol<wo?Xv<wo?dn<wo?0:-1:0:-1:Bf<wo?vr<wo?0:-1:0:-1:ge<wo?Ml<wo?Jn<wo?On<wo?0:-1:0:-1:Cc<wo?Sb<wo?0:-1:0:-1:k<wo?PD<wo?$e<wo?$l<wo?oD<wo?io<wo?0:-1:0:-1:nf<wo?El<wo?0:-1:0:-1:qe<wo?BD<wo?qs<wo?vs<wo?0:-1:0:-1:lD<wo?cu<wo?0:-1:0:-1:nk<wo?hk<wo?zl<wo?il<wo?mb<wo?Yl<wo?Db<wo?dr<wo?Lr<wo?fb<wo?0:-1:0:-1:pu<wo?gb<wo?0:-1:0:-1:yr<wo?Wr<wo?Te<wo?Bu<wo?0:-1:0:-1:GD<wo?So<wo?0:-1:0:-1:Ik<wo?Xc<wo?Ga<wo?Ul<wo?Ba<wo?Dk<wo?0:-1:0:-1:Ms<wo?Ck<wo?0:-1:0:-1:Pv<wo?Jl<wo?lr<wo?Iv<wo?0:-1:0:-1:wl<wo?bl<wo?0:-1:0:-1:ot<wo?Vo<wo?ue<wo?ye<wo?al<wo?n<wo?mc<wo?wi<wo?0:-1:0:-1:fs<wo?Et<wo?0:-1:0:-1:ar<wo?on<wo?Zu<wo?_u<wo?0:-1:0:-1:$v<wo?ws<wo?0:-1:0:-1:nD<wo?ae<wo?mo<wo?Yn<wo?Df<wo?Ye<wo?0:-1:0:-1:Rn<wo?Wb<wo?0:-1:0:-1:pl<wo?vi<wo?JD<wo?Qs<wo?0:-1:0:-1:Fc<wo?Ft<wo?0:-1:0:-1:Cd(KGr,wo+aD|0)-1|0:-1;if(3<yo>>>0)Gr=Q1r(t);else switch(yo){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var Eo=Bnt(H1r(t));if(2<Eo>>>0)Gr=Q1r(t);else switch(Eo){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var _o=Vut(H1r(t));if(2<_o>>>0)Gr=Q1r(t);else switch(_o){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Bo=Bnt(H1r(t));if(2<Bo>>>0)Gr=Q1r(t);else switch(Bo){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var No=rut(H1r(t));if(2<No>>>0)Gr=Q1r(t);else switch(No){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var qo=Yut(H1r(t));if(2<qo>>>0)Gr=Q1r(t);else switch(qo){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Yo=cat(H1r(t));if(2<Yo>>>0)Gr=Q1r(t);else switch(Yo){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,58);var $o=Jnt(H1r(t));Gr=0===$o?p(t):1===$o?m(t):Q1r(t)}}}}}}break;default:K1r(t,87);var ev=vut(H1r(t));if(2<ev>>>0)Gr=Q1r(t);else switch(ev){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var fv=Yut(H1r(t));if(2<fv>>>0)Gr=Q1r(t);else switch(fv){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,59);var sv=Jnt(H1r(t));Gr=0===sv?p(t):1===sv?m(t):Q1r(t)}}}}break;default:K1r(t,60);var lv=Zut(H1r(t));if(3<lv>>>0)Gr=Q1r(t);else switch(lv){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var bv=Yut(H1r(t));if(2<bv>>>0)Gr=Q1r(t);else switch(bv){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var kv=fut(H1r(t));if(2<kv>>>0)Gr=Q1r(t);else switch(kv){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Ev=rut(H1r(t));if(2<Ev>>>0)Gr=Q1r(t);else switch(Ev){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var xv=Lut(H1r(t));if(2<xv>>>0)Gr=Q1r(t);else switch(xv){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Tv=Bnt(H1r(t));if(2<Tv>>>0)Gr=Q1r(t);else switch(Tv){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Av=oat(H1r(t));if(2<Av>>>0)Gr=Q1r(t);else switch(Av){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Ov=sat(H1r(t));if(2<Ov>>>0)Gr=Q1r(t);else switch(Ov){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,61);var Lv=Jnt(H1r(t));Gr=0===Lv?p(t):1===Lv?m(t):Q1r(t)}}}}}}}break;default:K1r(t,87);var Rv=Bnt(H1r(t));if(2<Rv>>>0)Gr=Q1r(t);else switch(Rv){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Mv=vut(H1r(t));if(2<Mv>>>0)Gr=Q1r(t);else switch(Mv){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var jv=sat(H1r(t));if(2<jv>>>0)Gr=Q1r(t);else switch(jv){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Jv=fut(H1r(t));if(2<Jv>>>0)Gr=Q1r(t);else switch(Jv){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var qv=Lut(H1r(t));if(2<qv>>>0)Gr=Q1r(t);else switch(qv){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Hv=Bnt(H1r(t));if(2<Hv>>>0)Gr=Q1r(t);else switch(Hv){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,62);var Zv=Jnt(H1r(t));Gr=0===Zv?p(t):1===Zv?m(t):Q1r(t)}}}}}}}}break;case 40:K1r(t,87);var tl=Bnt(H1r(t));if(2<tl>>>0)Gr=Q1r(t);else switch(tl){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var el=Yut(H1r(t));if(2<el>>>0)Gr=Q1r(t);else switch(el){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,63);var nl=Jnt(H1r(t));Gr=0===nl?p(t):1===nl?m(t):Q1r(t)}}break;case 41:K1r(t,87);var cl=H1r(t),sl=35<cl?Al<cl?ie<cl?Qf<cl?-1:Cl<cl?Zt<cl?Ea<cl?pi<cl?ds<cl?pv<cl?Or<cl?He<cl?0:-1:0:-1:ro<cl?vc<cl?0:-1:0:-1:Ob<cl?sk<cl?wv<cl?Bl<cl?0:-1:0:-1:me<cl?ta<cl?0:-1:0:-1:Os<cl?gs<cl?Gs<cl?nv<cl?Il<cl?Se<cl?Un<cl?We<cl?rf<cl?ek<cl?_s<cl?MD<cl?$i<cl?Uo<cl?sn<cl?yD<cl?0:-1:0:-1:Wc<cl?Hu<cl?0:-1:0:-1:Ic<cl?it<cl?Jo<cl?ec<cl?0:-1:0:-1:ol<cl?zv<cl?0:-1:0:-1:x<cl?_v<cl?Sv<cl?Q<cl?yf<cl?ln<cl?0:-1:0:-1:Vt<cl?rb<cl?0:-1:0:-1:Po<cl?Gu<cl?Jc<cl?qt<cl?0:-1:0:-1:Ei<cl?Hs<cl?0:-1:0:-1:Dl<cl?jc<cl?fi<cl?tt<cl?Wo<cl?uc<cl?Rr<cl?Nu<cl?0:-1:0:-1:yl<cl?gv<cl?0:-1:0:-1:os<cl?Zc<cl?an<cl?gD<cl?0:-1:0:-1:ru<cl?zc<cl?0:-1:0:-1:Jt<cl?bi<cl?Zo<cl?Ur<cl?zf<cl?Ks<cl?0:-1:0:-1:au<cl?mr<cl?0:-1:0:-1:xD<cl?Wf<cl?xo<cl?Ao<cl?0:-1:0:-1:QD<cl?AD<cl?0:-1:0:-1:wf<cl?xk<cl?Ql<cl?$a<cl?Wa<cl?qa<cl?zt<cl?br<cl?wb<cl?qc<cl?0:-1:0:-1:Pt<cl?Ps<cl?0:-1:0:-1:Wt<cl?ha<cl?vf<cl?Er<cl?0:-1:0:-1:Zr<cl?xc<cl?0:-1:0:-1:ua<cl?jn<cl?Uc<cl?Kr<cl?ke<cl?zn<cl?0:-1:0:-1:rs<cl?Ho<cl?0:-1:0:-1:dk<cl?pf<cl?uo<cl?qu<cl?0:-1:0:-1:$<cl?wu<cl?0:-1:0:-1:If<cl?DD<cl?Ub<cl?Kn<cl?ir<cl?Pi<cl?cn<cl?Co<cl?0:-1:0:-1:Ac<cl?Qn<cl?0:-1:0:-1:tn<cl?Ls<cl?Cr<cl?hv<cl?0:-1:0:-1:Wi<cl?Gb<cl?0:-1:0:-1:ct<cl?oo<cl?tc<cl?e<cl?Ee<cl?Y<cl?0:-1:0:-1:Ze<cl?sa<cl?0:-1:0:-1:sf<cl?Ha<cl?Uf<cl?vt<cl?0:-1:0:-1:La<cl?Fv<cl?0:-1:0:-1:ao<cl?o<cl?vu<cl?Zn<cl?xi<cl?fe<cl?Bi<cl?Zs<cl?HD<cl?zo<cl?pe<cl?Tk<cl?0:-1:0:-1:gi<cl?ts<cl?0:-1:0:-1:ps<cl?hf<cl?As<cl?pa<cl?0:-1:0:-1:as<cl?Cb<cl?0:-1:0:-1:jf<cl?gt<cl?Mu<cl?ok<cl?Xo<cl?Ji<cl?0:-1:0:-1:D<cl?Yv<cl?0:-1:0:-1:Lf<cl?$s<cl?Vl<cl?Fb<cl?0:-1:0:-1:Ab<cl?ED<cl?0:-1:0:-1:Oe<cl?g<cl?wk<cl?Dv<cl?Mo<cl?_<cl?Ti<cl?Ve<cl?0:-1:0:-1:Hl<cl?An<cl?0:-1:0:-1:ai<cl?Hb<cl?Yf<cl?er<cl?0:-1:0:-1:fc<cl?Xl<cl?0:-1:0:-1:Bv<cl?_e<cl?le<cl?hD<cl?Pf<cl?Ge<cl?0:-1:0:-1:Dt<cl?Io<cl?0:-1:0:-1:cs<cl?KD<cl?eu<cl?hi<cl?0:-1:0:-1:Js<cl?Tr<cl?0:-1:0:-1:Hc<cl?Ma<cl?mu<cl?Jf<cl?Af<cl?Ki<cl?dc<cl?qi<cl?hu<cl?Aa<cl?0:-1:0:-1:$u<cl?Ak<cl?0:-1:0:-1:cc<cl?mf<cl?Rs<cl?wr<cl?0:-1:0:-1:yv<cl?eo<cl?0:-1:0:-1:jr<cl?ND<cl?ck<cl?Ui<cl?Ar<cl?Vs<cl?0:-1:0:-1:Bn<cl?F<cl?0:-1:0:-1:Qe<cl?_c<cl?cr<cl?Vv<cl?0:-1:0:-1:ub<cl?Ai<cl?0:-1:0:-1:Ra<cl?nn<cl?bu<cl?ja<cl?be<cl?Es<cl?Fl<cl?Ri<cl?0:-1:0:-1:nr<cl?zD<cl?0:-1:0:-1:Vc<cl?rD<cl?Br<cl?gu<cl?0:-1:0:-1:qn<cl?iD<cl?0:-1:0:-1:Fo<cl?oi<cl?lt<cl?av<cl?xu<cl?$D<cl?0:-1:0:-1:It<cl?zs<cl?0:-1:0:-1:Ju<cl?Qb<cl?Do<cl?VD<cl?0:-1:0:-1:Ot<cl?Yb<cl?0:-1:0:-1:fa<cl?Ne<cl?Sl<cl?Xi<cl?rc<cl?Mk<cl?jb<cl?ri<cl?$f<cl?Nv<cl?Nb<cl?Hi<cl?$b<cl?Kt<cl?0:-1:0:-1:Ir<cl?C<cl?0:-1:0:-1:we<cl?Ht<cl?Lt<cl?Sf<cl?0:-1:0:-1:bk<cl?_l<cl?0:-1:0:-1:Uv<cl?gc<cl?gr<cl?cv<cl?hc<cl?u<cl?0:-1:0:-1:et<cl?uv<cl?0:-1:0:-1:ht<cl?Bk<cl?Ds<cl?zb<cl?0:-1:0:-1:Ua<cl?ml<cl?0:-1:0:-1:Lk<cl?_D<cl?Su<cl?ma<cl?ob<cl?wc<cl?Kl<cl?tb<cl?0:-1:0:-1:ii<cl?dl<cl?0:-1:0:-1:wn<cl?Za<cl?Ko<cl?iu<cl?0:-1:0:-1:tv<cl?l<cl?0:-1:0:-1:oc<cl?mt<cl?jt<cl?Sc<cl?Sn<cl?Bs<cl?0:-1:0:-1:zr<cl?Ja<cl?0:-1:0:-1:nu<cl?hs<cl?eD<cl?Ro<cl?0:-1:0:-1:rk<cl?pt<cl?0:-1:0:-1:Gv<cl?Xf<cl?ca<cl?lf<cl?Pa<cl?Is<cl?c<cl?Bb<cl?nb<cl?T<cl?0:-1:0:-1:Da<cl?ui<cl?0:-1:0:-1:vD<cl?co<cl?Ku<cl?Wu<cl?0:-1:0:-1:Rl<cl?Gf<cl?0:-1:0:-1:du<cl?Ni<cl?mi<cl?Kf<cl?hl<cl?se<cl?0:-1:0:-1:vv<cl?Yu<cl?0:-1:0:-1:$n<cl?bn<cl?da<cl?Ek<cl?0:-1:0:-1:d<cl?oa<cl?0:-1:0:-1:Mf<cl?ul<cl?TD<cl?ni<cl?mv<cl?Fr<cl?lk<cl?Gc<cl?0:-1:0:-1:dD<cl?H<cl?0:-1:0:-1:Rk<cl?ji<cl?yn<cl?Sr<cl?0:-1:0:-1:Qr<cl?Xe<cl?0:-1:0:-1:Kv<cl?rv<cl?Ln<cl?gl<cl?OD<cl?P<cl?0:-1:0:-1:Lc<cl?i<cl?0:-1:0:-1:WD<cl?Wv<cl?pb<cl?ys<cl?0:-1:0:-1:v<cl?aa<cl?0:-1:0:-1:ea<cl?hb<cl?a<cl?Qu<cl?wt<cl?Ae<cl?Nr<cl?xr<cl?Nc<cl?kD<cl?ve<cl?ms<cl?0:-1:0:-1:nc<cl?Ca<cl?0:-1:0:-1:Du<cl?eb<cl?To<cl?tD<cl?0:-1:0:-1:of<cl?lu<cl?0:-1:0:-1:w<cl?fr<cl?Kc<cl?ZD<cl?rl<cl?Qv<cl?0:-1:0:-1:Vb<cl?Oo<cl?0:-1:0:-1:Jr<cl?Go<cl?Pb<cl?fu<cl?0:-1:0:-1:ti<cl?Mt<cl?0:-1:0:-1:Fe<cl?Mi<cl?_i<cl?Je<cl?sr<cl?Ol<cl?Xv<cl?dn<cl?0:-1:0:-1:Bf<cl?vr<cl?0:-1:0:-1:ge<cl?Ml<cl?Jn<cl?On<cl?0:-1:0:-1:Cc<cl?Sb<cl?0:-1:0:-1:k<cl?PD<cl?$e<cl?$l<cl?oD<cl?io<cl?0:-1:0:-1:nf<cl?El<cl?0:-1:0:-1:qe<cl?BD<cl?qs<cl?vs<cl?0:-1:0:-1:lD<cl?cu<cl?0:-1:0:-1:nk<cl?hk<cl?zl<cl?il<cl?mb<cl?Yl<cl?Db<cl?dr<cl?Lr<cl?fb<cl?0:-1:0:-1:pu<cl?gb<cl?0:-1:0:-1:yr<cl?Wr<cl?Te<cl?Bu<cl?0:-1:0:-1:GD<cl?So<cl?0:-1:0:-1:Ik<cl?Xc<cl?Ga<cl?Ul<cl?Ba<cl?Dk<cl?0:-1:0:-1:Ms<cl?Ck<cl?0:-1:0:-1:Pv<cl?Jl<cl?lr<cl?Iv<cl?0:-1:0:-1:wl<cl?bl<cl?0:-1:0:-1:ot<cl?Vo<cl?ue<cl?ye<cl?al<cl?n<cl?mc<cl?wi<cl?0:-1:0:-1:fs<cl?Et<cl?0:-1:0:-1:ar<cl?on<cl?Zu<cl?_u<cl?0:-1:0:-1:$v<cl?ws<cl?0:-1:0:-1:nD<cl?ae<cl?mo<cl?Yn<cl?Df<cl?Ye<cl?0:-1:0:-1:Rn<cl?Wb<cl?0:-1:0:-1:pl<cl?vi<cl?JD<cl?Qs<cl?0:-1:0:-1:Fc<cl?Ft<cl?0:-1:0:-1:Cd(dqr,cl+aD|0)-1|0:-1;if(3<sl>>>0)Gr=Q1r(t);else switch(sl){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var vl=wat(H1r(t));if(2<vl>>>0)Gr=Q1r(t);else switch(vl){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,64);var ll=Jnt(H1r(t));Gr=0===ll?p(t):1===ll?m(t):Q1r(t)}break;default:K1r(t,87);var xl=_ut(H1r(t));if(2<xl>>>0)Gr=Q1r(t);else switch(xl){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Pl=_ut(H1r(t));if(2<Pl>>>0)Gr=Q1r(t);else switch(Pl){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,65);var Nl=Jnt(H1r(t));Gr=0===Nl?p(t):1===Nl?m(t):Q1r(t)}}}break;case 42:K1r(t,87);var Ll=H1r(t),jl=35<Ll?Al<Ll?ie<Ll?Qf<Ll?-1:Cl<Ll?Zt<Ll?Ea<Ll?pi<Ll?ds<Ll?pv<Ll?Or<Ll?He<Ll?0:-1:0:-1:ro<Ll?vc<Ll?0:-1:0:-1:Ob<Ll?sk<Ll?wv<Ll?Bl<Ll?0:-1:0:-1:me<Ll?ta<Ll?0:-1:0:-1:Os<Ll?gs<Ll?Gs<Ll?nv<Ll?Il<Ll?Se<Ll?Un<Ll?We<Ll?rf<Ll?ek<Ll?_s<Ll?MD<Ll?$i<Ll?Uo<Ll?sn<Ll?yD<Ll?0:-1:0:-1:Wc<Ll?Hu<Ll?0:-1:0:-1:Ic<Ll?it<Ll?Jo<Ll?ec<Ll?0:-1:0:-1:ol<Ll?zv<Ll?0:-1:0:-1:x<Ll?_v<Ll?Sv<Ll?Q<Ll?yf<Ll?ln<Ll?0:-1:0:-1:Vt<Ll?rb<Ll?0:-1:0:-1:Po<Ll?Gu<Ll?Jc<Ll?qt<Ll?0:-1:0:-1:Ei<Ll?Hs<Ll?0:-1:0:-1:Dl<Ll?jc<Ll?fi<Ll?tt<Ll?Wo<Ll?uc<Ll?Rr<Ll?Nu<Ll?0:-1:0:-1:yl<Ll?gv<Ll?0:-1:0:-1:os<Ll?Zc<Ll?an<Ll?gD<Ll?0:-1:0:-1:ru<Ll?zc<Ll?0:-1:0:-1:Jt<Ll?bi<Ll?Zo<Ll?Ur<Ll?zf<Ll?Ks<Ll?0:-1:0:-1:au<Ll?mr<Ll?0:-1:0:-1:xD<Ll?Wf<Ll?xo<Ll?Ao<Ll?0:-1:0:-1:QD<Ll?AD<Ll?0:-1:0:-1:wf<Ll?xk<Ll?Ql<Ll?$a<Ll?Wa<Ll?qa<Ll?zt<Ll?br<Ll?wb<Ll?qc<Ll?0:-1:0:-1:Pt<Ll?Ps<Ll?0:-1:0:-1:Wt<Ll?ha<Ll?vf<Ll?Er<Ll?0:-1:0:-1:Zr<Ll?xc<Ll?0:-1:0:-1:ua<Ll?jn<Ll?Uc<Ll?Kr<Ll?ke<Ll?zn<Ll?0:-1:0:-1:rs<Ll?Ho<Ll?0:-1:0:-1:dk<Ll?pf<Ll?uo<Ll?qu<Ll?0:-1:0:-1:$<Ll?wu<Ll?0:-1:0:-1:If<Ll?DD<Ll?Ub<Ll?Kn<Ll?ir<Ll?Pi<Ll?cn<Ll?Co<Ll?0:-1:0:-1:Ac<Ll?Qn<Ll?0:-1:0:-1:tn<Ll?Ls<Ll?Cr<Ll?hv<Ll?0:-1:0:-1:Wi<Ll?Gb<Ll?0:-1:0:-1:ct<Ll?oo<Ll?tc<Ll?e<Ll?Ee<Ll?Y<Ll?0:-1:0:-1:Ze<Ll?sa<Ll?0:-1:0:-1:sf<Ll?Ha<Ll?Uf<Ll?vt<Ll?0:-1:0:-1:La<Ll?Fv<Ll?0:-1:0:-1:ao<Ll?o<Ll?vu<Ll?Zn<Ll?xi<Ll?fe<Ll?Bi<Ll?Zs<Ll?HD<Ll?zo<Ll?pe<Ll?Tk<Ll?0:-1:0:-1:gi<Ll?ts<Ll?0:-1:0:-1:ps<Ll?hf<Ll?As<Ll?pa<Ll?0:-1:0:-1:as<Ll?Cb<Ll?0:-1:0:-1:jf<Ll?gt<Ll?Mu<Ll?ok<Ll?Xo<Ll?Ji<Ll?0:-1:0:-1:D<Ll?Yv<Ll?0:-1:0:-1:Lf<Ll?$s<Ll?Vl<Ll?Fb<Ll?0:-1:0:-1:Ab<Ll?ED<Ll?0:-1:0:-1:Oe<Ll?g<Ll?wk<Ll?Dv<Ll?Mo<Ll?_<Ll?Ti<Ll?Ve<Ll?0:-1:0:-1:Hl<Ll?An<Ll?0:-1:0:-1:ai<Ll?Hb<Ll?Yf<Ll?er<Ll?0:-1:0:-1:fc<Ll?Xl<Ll?0:-1:0:-1:Bv<Ll?_e<Ll?le<Ll?hD<Ll?Pf<Ll?Ge<Ll?0:-1:0:-1:Dt<Ll?Io<Ll?0:-1:0:-1:cs<Ll?KD<Ll?eu<Ll?hi<Ll?0:-1:0:-1:Js<Ll?Tr<Ll?0:-1:0:-1:Hc<Ll?Ma<Ll?mu<Ll?Jf<Ll?Af<Ll?Ki<Ll?dc<Ll?qi<Ll?hu<Ll?Aa<Ll?0:-1:0:-1:$u<Ll?Ak<Ll?0:-1:0:-1:cc<Ll?mf<Ll?Rs<Ll?wr<Ll?0:-1:0:-1:yv<Ll?eo<Ll?0:-1:0:-1:jr<Ll?ND<Ll?ck<Ll?Ui<Ll?Ar<Ll?Vs<Ll?0:-1:0:-1:Bn<Ll?F<Ll?0:-1:0:-1:Qe<Ll?_c<Ll?cr<Ll?Vv<Ll?0:-1:0:-1:ub<Ll?Ai<Ll?0:-1:0:-1:Ra<Ll?nn<Ll?bu<Ll?ja<Ll?be<Ll?Es<Ll?Fl<Ll?Ri<Ll?0:-1:0:-1:nr<Ll?zD<Ll?0:-1:0:-1:Vc<Ll?rD<Ll?Br<Ll?gu<Ll?0:-1:0:-1:qn<Ll?iD<Ll?0:-1:0:-1:Fo<Ll?oi<Ll?lt<Ll?av<Ll?xu<Ll?$D<Ll?0:-1:0:-1:It<Ll?zs<Ll?0:-1:0:-1:Ju<Ll?Qb<Ll?Do<Ll?VD<Ll?0:-1:0:-1:Ot<Ll?Yb<Ll?0:-1:0:-1:fa<Ll?Ne<Ll?Sl<Ll?Xi<Ll?rc<Ll?Mk<Ll?jb<Ll?ri<Ll?$f<Ll?Nv<Ll?Nb<Ll?Hi<Ll?$b<Ll?Kt<Ll?0:-1:0:-1:Ir<Ll?C<Ll?0:-1:0:-1:we<Ll?Ht<Ll?Lt<Ll?Sf<Ll?0:-1:0:-1:bk<Ll?_l<Ll?0:-1:0:-1:Uv<Ll?gc<Ll?gr<Ll?cv<Ll?hc<Ll?u<Ll?0:-1:0:-1:et<Ll?uv<Ll?0:-1:0:-1:ht<Ll?Bk<Ll?Ds<Ll?zb<Ll?0:-1:0:-1:Ua<Ll?ml<Ll?0:-1:0:-1:Lk<Ll?_D<Ll?Su<Ll?ma<Ll?ob<Ll?wc<Ll?Kl<Ll?tb<Ll?0:-1:0:-1:ii<Ll?dl<Ll?0:-1:0:-1:wn<Ll?Za<Ll?Ko<Ll?iu<Ll?0:-1:0:-1:tv<Ll?l<Ll?0:-1:0:-1:oc<Ll?mt<Ll?jt<Ll?Sc<Ll?Sn<Ll?Bs<Ll?0:-1:0:-1:zr<Ll?Ja<Ll?0:-1:0:-1:nu<Ll?hs<Ll?eD<Ll?Ro<Ll?0:-1:0:-1:rk<Ll?pt<Ll?0:-1:0:-1:Gv<Ll?Xf<Ll?ca<Ll?lf<Ll?Pa<Ll?Is<Ll?c<Ll?Bb<Ll?nb<Ll?T<Ll?0:-1:0:-1:Da<Ll?ui<Ll?0:-1:0:-1:vD<Ll?co<Ll?Ku<Ll?Wu<Ll?0:-1:0:-1:Rl<Ll?Gf<Ll?0:-1:0:-1:du<Ll?Ni<Ll?mi<Ll?Kf<Ll?hl<Ll?se<Ll?0:-1:0:-1:vv<Ll?Yu<Ll?0:-1:0:-1:$n<Ll?bn<Ll?da<Ll?Ek<Ll?0:-1:0:-1:d<Ll?oa<Ll?0:-1:0:-1:Mf<Ll?ul<Ll?TD<Ll?ni<Ll?mv<Ll?Fr<Ll?lk<Ll?Gc<Ll?0:-1:0:-1:dD<Ll?H<Ll?0:-1:0:-1:Rk<Ll?ji<Ll?yn<Ll?Sr<Ll?0:-1:0:-1:Qr<Ll?Xe<Ll?0:-1:0:-1:Kv<Ll?rv<Ll?Ln<Ll?gl<Ll?OD<Ll?P<Ll?0:-1:0:-1:Lc<Ll?i<Ll?0:-1:0:-1:WD<Ll?Wv<Ll?pb<Ll?ys<Ll?0:-1:0:-1:v<Ll?aa<Ll?0:-1:0:-1:ea<Ll?hb<Ll?a<Ll?Qu<Ll?wt<Ll?Ae<Ll?Nr<Ll?xr<Ll?Nc<Ll?kD<Ll?ve<Ll?ms<Ll?0:-1:0:-1:nc<Ll?Ca<Ll?0:-1:0:-1:Du<Ll?eb<Ll?To<Ll?tD<Ll?0:-1:0:-1:of<Ll?lu<Ll?0:-1:0:-1:w<Ll?fr<Ll?Kc<Ll?ZD<Ll?rl<Ll?Qv<Ll?0:-1:0:-1:Vb<Ll?Oo<Ll?0:-1:0:-1:Jr<Ll?Go<Ll?Pb<Ll?fu<Ll?0:-1:0:-1:ti<Ll?Mt<Ll?0:-1:0:-1:Fe<Ll?Mi<Ll?_i<Ll?Je<Ll?sr<Ll?Ol<Ll?Xv<Ll?dn<Ll?0:-1:0:-1:Bf<Ll?vr<Ll?0:-1:0:-1:ge<Ll?Ml<Ll?Jn<Ll?On<Ll?0:-1:0:-1:Cc<Ll?Sb<Ll?0:-1:0:-1:k<Ll?PD<Ll?$e<Ll?$l<Ll?oD<Ll?io<Ll?0:-1:0:-1:nf<Ll?El<Ll?0:-1:0:-1:qe<Ll?BD<Ll?qs<Ll?vs<Ll?0:-1:0:-1:lD<Ll?cu<Ll?0:-1:0:-1:nk<Ll?hk<Ll?zl<Ll?il<Ll?mb<Ll?Yl<Ll?Db<Ll?dr<Ll?Lr<Ll?fb<Ll?0:-1:0:-1:pu<Ll?gb<Ll?0:-1:0:-1:yr<Ll?Wr<Ll?Te<Ll?Bu<Ll?0:-1:0:-1:GD<Ll?So<Ll?0:-1:0:-1:Ik<Ll?Xc<Ll?Ga<Ll?Ul<Ll?Ba<Ll?Dk<Ll?0:-1:0:-1:Ms<Ll?Ck<Ll?0:-1:0:-1:Pv<Ll?Jl<Ll?lr<Ll?Iv<Ll?0:-1:0:-1:wl<Ll?bl<Ll?0:-1:0:-1:ot<Ll?Vo<Ll?ue<Ll?ye<Ll?al<Ll?n<Ll?mc<Ll?wi<Ll?0:-1:0:-1:fs<Ll?Et<Ll?0:-1:0:-1:ar<Ll?on<Ll?Zu<Ll?_u<Ll?0:-1:0:-1:$v<Ll?ws<Ll?0:-1:0:-1:nD<Ll?ae<Ll?mo<Ll?Yn<Ll?Df<Ll?Ye<Ll?0:-1:0:-1:Rn<Ll?Wb<Ll?0:-1:0:-1:pl<Ll?vi<Ll?JD<Ll?Qs<Ll?0:-1:0:-1:Fc<Ll?Ft<Ll?0:-1:0:-1:Cd(mqr,Ll+aD|0)-1|0:-1;if(3<jl>>>0)Gr=Q1r(t);else switch(jl){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,66);var Gl=Jnt(H1r(t));Gr=0===Gl?p(t):1===Gl?m(t):Q1r(t);break;default:K1r(t,87);var ql=fut(H1r(t));if(2<ql>>>0)Gr=Q1r(t);else switch(ql){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Zl=H1r(t),cb=35<Zl?Al<Zl?ie<Zl?Qf<Zl?-1:Cl<Zl?Zt<Zl?Ea<Zl?pi<Zl?ds<Zl?pv<Zl?Or<Zl?He<Zl?0:-1:0:-1:ro<Zl?vc<Zl?0:-1:0:-1:Ob<Zl?sk<Zl?wv<Zl?Bl<Zl?0:-1:0:-1:me<Zl?ta<Zl?0:-1:0:-1:Os<Zl?gs<Zl?Gs<Zl?nv<Zl?Il<Zl?Se<Zl?Un<Zl?We<Zl?rf<Zl?ek<Zl?_s<Zl?MD<Zl?$i<Zl?Uo<Zl?sn<Zl?yD<Zl?0:-1:0:-1:Wc<Zl?Hu<Zl?0:-1:0:-1:Ic<Zl?it<Zl?Jo<Zl?ec<Zl?0:-1:0:-1:ol<Zl?zv<Zl?0:-1:0:-1:x<Zl?_v<Zl?Sv<Zl?Q<Zl?yf<Zl?ln<Zl?0:-1:0:-1:Vt<Zl?rb<Zl?0:-1:0:-1:Po<Zl?Gu<Zl?Jc<Zl?qt<Zl?0:-1:0:-1:Ei<Zl?Hs<Zl?0:-1:0:-1:Dl<Zl?jc<Zl?fi<Zl?tt<Zl?Wo<Zl?uc<Zl?Rr<Zl?Nu<Zl?0:-1:0:-1:yl<Zl?gv<Zl?0:-1:0:-1:os<Zl?Zc<Zl?an<Zl?gD<Zl?0:-1:0:-1:ru<Zl?zc<Zl?0:-1:0:-1:Jt<Zl?bi<Zl?Zo<Zl?Ur<Zl?zf<Zl?Ks<Zl?0:-1:0:-1:au<Zl?mr<Zl?0:-1:0:-1:xD<Zl?Wf<Zl?xo<Zl?Ao<Zl?0:-1:0:-1:QD<Zl?AD<Zl?0:-1:0:-1:wf<Zl?xk<Zl?Ql<Zl?$a<Zl?Wa<Zl?qa<Zl?zt<Zl?br<Zl?wb<Zl?qc<Zl?0:-1:0:-1:Pt<Zl?Ps<Zl?0:-1:0:-1:Wt<Zl?ha<Zl?vf<Zl?Er<Zl?0:-1:0:-1:Zr<Zl?xc<Zl?0:-1:0:-1:ua<Zl?jn<Zl?Uc<Zl?Kr<Zl?ke<Zl?zn<Zl?0:-1:0:-1:rs<Zl?Ho<Zl?0:-1:0:-1:dk<Zl?pf<Zl?uo<Zl?qu<Zl?0:-1:0:-1:$<Zl?wu<Zl?0:-1:0:-1:If<Zl?DD<Zl?Ub<Zl?Kn<Zl?ir<Zl?Pi<Zl?cn<Zl?Co<Zl?0:-1:0:-1:Ac<Zl?Qn<Zl?0:-1:0:-1:tn<Zl?Ls<Zl?Cr<Zl?hv<Zl?0:-1:0:-1:Wi<Zl?Gb<Zl?0:-1:0:-1:ct<Zl?oo<Zl?tc<Zl?e<Zl?Ee<Zl?Y<Zl?0:-1:0:-1:Ze<Zl?sa<Zl?0:-1:0:-1:sf<Zl?Ha<Zl?Uf<Zl?vt<Zl?0:-1:0:-1:La<Zl?Fv<Zl?0:-1:0:-1:ao<Zl?o<Zl?vu<Zl?Zn<Zl?xi<Zl?fe<Zl?Bi<Zl?Zs<Zl?HD<Zl?zo<Zl?pe<Zl?Tk<Zl?0:-1:0:-1:gi<Zl?ts<Zl?0:-1:0:-1:ps<Zl?hf<Zl?As<Zl?pa<Zl?0:-1:0:-1:as<Zl?Cb<Zl?0:-1:0:-1:jf<Zl?gt<Zl?Mu<Zl?ok<Zl?Xo<Zl?Ji<Zl?0:-1:0:-1:D<Zl?Yv<Zl?0:-1:0:-1:Lf<Zl?$s<Zl?Vl<Zl?Fb<Zl?0:-1:0:-1:Ab<Zl?ED<Zl?0:-1:0:-1:Oe<Zl?g<Zl?wk<Zl?Dv<Zl?Mo<Zl?_<Zl?Ti<Zl?Ve<Zl?0:-1:0:-1:Hl<Zl?An<Zl?0:-1:0:-1:ai<Zl?Hb<Zl?Yf<Zl?er<Zl?0:-1:0:-1:fc<Zl?Xl<Zl?0:-1:0:-1:Bv<Zl?_e<Zl?le<Zl?hD<Zl?Pf<Zl?Ge<Zl?0:-1:0:-1:Dt<Zl?Io<Zl?0:-1:0:-1:cs<Zl?KD<Zl?eu<Zl?hi<Zl?0:-1:0:-1:Js<Zl?Tr<Zl?0:-1:0:-1:Hc<Zl?Ma<Zl?mu<Zl?Jf<Zl?Af<Zl?Ki<Zl?dc<Zl?qi<Zl?hu<Zl?Aa<Zl?0:-1:0:-1:$u<Zl?Ak<Zl?0:-1:0:-1:cc<Zl?mf<Zl?Rs<Zl?wr<Zl?0:-1:0:-1:yv<Zl?eo<Zl?0:-1:0:-1:jr<Zl?ND<Zl?ck<Zl?Ui<Zl?Ar<Zl?Vs<Zl?0:-1:0:-1:Bn<Zl?F<Zl?0:-1:0:-1:Qe<Zl?_c<Zl?cr<Zl?Vv<Zl?0:-1:0:-1:ub<Zl?Ai<Zl?0:-1:0:-1:Ra<Zl?nn<Zl?bu<Zl?ja<Zl?be<Zl?Es<Zl?Fl<Zl?Ri<Zl?0:-1:0:-1:nr<Zl?zD<Zl?0:-1:0:-1:Vc<Zl?rD<Zl?Br<Zl?gu<Zl?0:-1:0:-1:qn<Zl?iD<Zl?0:-1:0:-1:Fo<Zl?oi<Zl?lt<Zl?av<Zl?xu<Zl?$D<Zl?0:-1:0:-1:It<Zl?zs<Zl?0:-1:0:-1:Ju<Zl?Qb<Zl?Do<Zl?VD<Zl?0:-1:0:-1:Ot<Zl?Yb<Zl?0:-1:0:-1:fa<Zl?Ne<Zl?Sl<Zl?Xi<Zl?rc<Zl?Mk<Zl?jb<Zl?ri<Zl?$f<Zl?Nv<Zl?Nb<Zl?Hi<Zl?$b<Zl?Kt<Zl?0:-1:0:-1:Ir<Zl?C<Zl?0:-1:0:-1:we<Zl?Ht<Zl?Lt<Zl?Sf<Zl?0:-1:0:-1:bk<Zl?_l<Zl?0:-1:0:-1:Uv<Zl?gc<Zl?gr<Zl?cv<Zl?hc<Zl?u<Zl?0:-1:0:-1:et<Zl?uv<Zl?0:-1:0:-1:ht<Zl?Bk<Zl?Ds<Zl?zb<Zl?0:-1:0:-1:Ua<Zl?ml<Zl?0:-1:0:-1:Lk<Zl?_D<Zl?Su<Zl?ma<Zl?ob<Zl?wc<Zl?Kl<Zl?tb<Zl?0:-1:0:-1:ii<Zl?dl<Zl?0:-1:0:-1:wn<Zl?Za<Zl?Ko<Zl?iu<Zl?0:-1:0:-1:tv<Zl?l<Zl?0:-1:0:-1:oc<Zl?mt<Zl?jt<Zl?Sc<Zl?Sn<Zl?Bs<Zl?0:-1:0:-1:zr<Zl?Ja<Zl?0:-1:0:-1:nu<Zl?hs<Zl?eD<Zl?Ro<Zl?0:-1:0:-1:rk<Zl?pt<Zl?0:-1:0:-1:Gv<Zl?Xf<Zl?ca<Zl?lf<Zl?Pa<Zl?Is<Zl?c<Zl?Bb<Zl?nb<Zl?T<Zl?0:-1:0:-1:Da<Zl?ui<Zl?0:-1:0:-1:vD<Zl?co<Zl?Ku<Zl?Wu<Zl?0:-1:0:-1:Rl<Zl?Gf<Zl?0:-1:0:-1:du<Zl?Ni<Zl?mi<Zl?Kf<Zl?hl<Zl?se<Zl?0:-1:0:-1:vv<Zl?Yu<Zl?0:-1:0:-1:$n<Zl?bn<Zl?da<Zl?Ek<Zl?0:-1:0:-1:d<Zl?oa<Zl?0:-1:0:-1:Mf<Zl?ul<Zl?TD<Zl?ni<Zl?mv<Zl?Fr<Zl?lk<Zl?Gc<Zl?0:-1:0:-1:dD<Zl?H<Zl?0:-1:0:-1:Rk<Zl?ji<Zl?yn<Zl?Sr<Zl?0:-1:0:-1:Qr<Zl?Xe<Zl?0:-1:0:-1:Kv<Zl?rv<Zl?Ln<Zl?gl<Zl?OD<Zl?P<Zl?0:-1:0:-1:Lc<Zl?i<Zl?0:-1:0:-1:WD<Zl?Wv<Zl?pb<Zl?ys<Zl?0:-1:0:-1:v<Zl?aa<Zl?0:-1:0:-1:ea<Zl?hb<Zl?a<Zl?Qu<Zl?wt<Zl?Ae<Zl?Nr<Zl?xr<Zl?Nc<Zl?kD<Zl?ve<Zl?ms<Zl?0:-1:0:-1:nc<Zl?Ca<Zl?0:-1:0:-1:Du<Zl?eb<Zl?To<Zl?tD<Zl?0:-1:0:-1:of<Zl?lu<Zl?0:-1:0:-1:w<Zl?fr<Zl?Kc<Zl?ZD<Zl?rl<Zl?Qv<Zl?0:-1:0:-1:Vb<Zl?Oo<Zl?0:-1:0:-1:Jr<Zl?Go<Zl?Pb<Zl?fu<Zl?0:-1:0:-1:ti<Zl?Mt<Zl?0:-1:0:-1:Fe<Zl?Mi<Zl?_i<Zl?Je<Zl?sr<Zl?Ol<Zl?Xv<Zl?dn<Zl?0:-1:0:-1:Bf<Zl?vr<Zl?0:-1:0:-1:ge<Zl?Ml<Zl?Jn<Zl?On<Zl?0:-1:0:-1:Cc<Zl?Sb<Zl?0:-1:0:-1:k<Zl?PD<Zl?$e<Zl?$l<Zl?oD<Zl?io<Zl?0:-1:0:-1:nf<Zl?El<Zl?0:-1:0:-1:qe<Zl?BD<Zl?qs<Zl?vs<Zl?0:-1:0:-1:lD<Zl?cu<Zl?0:-1:0:-1:nk<Zl?hk<Zl?zl<Zl?il<Zl?mb<Zl?Yl<Zl?Db<Zl?dr<Zl?Lr<Zl?fb<Zl?0:-1:0:-1:pu<Zl?gb<Zl?0:-1:0:-1:yr<Zl?Wr<Zl?Te<Zl?Bu<Zl?0:-1:0:-1:GD<Zl?So<Zl?0:-1:0:-1:Ik<Zl?Xc<Zl?Ga<Zl?Ul<Zl?Ba<Zl?Dk<Zl?0:-1:0:-1:Ms<Zl?Ck<Zl?0:-1:0:-1:Pv<Zl?Jl<Zl?lr<Zl?Iv<Zl?0:-1:0:-1:wl<Zl?bl<Zl?0:-1:0:-1:ot<Zl?Vo<Zl?ue<Zl?ye<Zl?al<Zl?n<Zl?mc<Zl?wi<Zl?0:-1:0:-1:fs<Zl?Et<Zl?0:-1:0:-1:ar<Zl?on<Zl?Zu<Zl?_u<Zl?0:-1:0:-1:$v<Zl?ws<Zl?0:-1:0:-1:nD<Zl?ae<Zl?mo<Zl?Yn<Zl?Df<Zl?Ye<Zl?0:-1:0:-1:Rn<Zl?Wb<Zl?0:-1:0:-1:pl<Zl?vi<Zl?JD<Zl?Qs<Zl?0:-1:0:-1:Fc<Zl?Ft<Zl?0:-1:0:-1:Cd(HGr,Zl+aD|0)-1|0:-1;if(2<cb>>>0)Gr=Q1r(t);else switch(cb){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var sb=Tnt(H1r(t));if(2<sb>>>0)Gr=Q1r(t);else switch(sb){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var vb=Bnt(H1r(t));if(2<vb>>>0)Gr=Q1r(t);else switch(vb){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,67);var lb=Jnt(H1r(t));Gr=0===lb?p(t):1===lb?m(t):Q1r(t)}}}}}break;case 43:K1r(t,87);var yb=H1r(t),Eb=35<yb?Al<yb?ie<yb?Qf<yb?-1:Cl<yb?Zt<yb?Ea<yb?pi<yb?ds<yb?pv<yb?Or<yb?He<yb?0:-1:0:-1:ro<yb?vc<yb?0:-1:0:-1:Ob<yb?sk<yb?wv<yb?Bl<yb?0:-1:0:-1:me<yb?ta<yb?0:-1:0:-1:Os<yb?gs<yb?Gs<yb?nv<yb?Il<yb?Se<yb?Un<yb?We<yb?rf<yb?ek<yb?_s<yb?MD<yb?$i<yb?Uo<yb?sn<yb?yD<yb?0:-1:0:-1:Wc<yb?Hu<yb?0:-1:0:-1:Ic<yb?it<yb?Jo<yb?ec<yb?0:-1:0:-1:ol<yb?zv<yb?0:-1:0:-1:x<yb?_v<yb?Sv<yb?Q<yb?yf<yb?ln<yb?0:-1:0:-1:Vt<yb?rb<yb?0:-1:0:-1:Po<yb?Gu<yb?Jc<yb?qt<yb?0:-1:0:-1:Ei<yb?Hs<yb?0:-1:0:-1:Dl<yb?jc<yb?fi<yb?tt<yb?Wo<yb?uc<yb?Rr<yb?Nu<yb?0:-1:0:-1:yl<yb?gv<yb?0:-1:0:-1:os<yb?Zc<yb?an<yb?gD<yb?0:-1:0:-1:ru<yb?zc<yb?0:-1:0:-1:Jt<yb?bi<yb?Zo<yb?Ur<yb?zf<yb?Ks<yb?0:-1:0:-1:au<yb?mr<yb?0:-1:0:-1:xD<yb?Wf<yb?xo<yb?Ao<yb?0:-1:0:-1:QD<yb?AD<yb?0:-1:0:-1:wf<yb?xk<yb?Ql<yb?$a<yb?Wa<yb?qa<yb?zt<yb?br<yb?wb<yb?qc<yb?0:-1:0:-1:Pt<yb?Ps<yb?0:-1:0:-1:Wt<yb?ha<yb?vf<yb?Er<yb?0:-1:0:-1:Zr<yb?xc<yb?0:-1:0:-1:ua<yb?jn<yb?Uc<yb?Kr<yb?ke<yb?zn<yb?0:-1:0:-1:rs<yb?Ho<yb?0:-1:0:-1:dk<yb?pf<yb?uo<yb?qu<yb?0:-1:0:-1:$<yb?wu<yb?0:-1:0:-1:If<yb?DD<yb?Ub<yb?Kn<yb?ir<yb?Pi<yb?cn<yb?Co<yb?0:-1:0:-1:Ac<yb?Qn<yb?0:-1:0:-1:tn<yb?Ls<yb?Cr<yb?hv<yb?0:-1:0:-1:Wi<yb?Gb<yb?0:-1:0:-1:ct<yb?oo<yb?tc<yb?e<yb?Ee<yb?Y<yb?0:-1:0:-1:Ze<yb?sa<yb?0:-1:0:-1:sf<yb?Ha<yb?Uf<yb?vt<yb?0:-1:0:-1:La<yb?Fv<yb?0:-1:0:-1:ao<yb?o<yb?vu<yb?Zn<yb?xi<yb?fe<yb?Bi<yb?Zs<yb?HD<yb?zo<yb?pe<yb?Tk<yb?0:-1:0:-1:gi<yb?ts<yb?0:-1:0:-1:ps<yb?hf<yb?As<yb?pa<yb?0:-1:0:-1:as<yb?Cb<yb?0:-1:0:-1:jf<yb?gt<yb?Mu<yb?ok<yb?Xo<yb?Ji<yb?0:-1:0:-1:D<yb?Yv<yb?0:-1:0:-1:Lf<yb?$s<yb?Vl<yb?Fb<yb?0:-1:0:-1:Ab<yb?ED<yb?0:-1:0:-1:Oe<yb?g<yb?wk<yb?Dv<yb?Mo<yb?_<yb?Ti<yb?Ve<yb?0:-1:0:-1:Hl<yb?An<yb?0:-1:0:-1:ai<yb?Hb<yb?Yf<yb?er<yb?0:-1:0:-1:fc<yb?Xl<yb?0:-1:0:-1:Bv<yb?_e<yb?le<yb?hD<yb?Pf<yb?Ge<yb?0:-1:0:-1:Dt<yb?Io<yb?0:-1:0:-1:cs<yb?KD<yb?eu<yb?hi<yb?0:-1:0:-1:Js<yb?Tr<yb?0:-1:0:-1:Hc<yb?Ma<yb?mu<yb?Jf<yb?Af<yb?Ki<yb?dc<yb?qi<yb?hu<yb?Aa<yb?0:-1:0:-1:$u<yb?Ak<yb?0:-1:0:-1:cc<yb?mf<yb?Rs<yb?wr<yb?0:-1:0:-1:yv<yb?eo<yb?0:-1:0:-1:jr<yb?ND<yb?ck<yb?Ui<yb?Ar<yb?Vs<yb?0:-1:0:-1:Bn<yb?F<yb?0:-1:0:-1:Qe<yb?_c<yb?cr<yb?Vv<yb?0:-1:0:-1:ub<yb?Ai<yb?0:-1:0:-1:Ra<yb?nn<yb?bu<yb?ja<yb?be<yb?Es<yb?Fl<yb?Ri<yb?0:-1:0:-1:nr<yb?zD<yb?0:-1:0:-1:Vc<yb?rD<yb?Br<yb?gu<yb?0:-1:0:-1:qn<yb?iD<yb?0:-1:0:-1:Fo<yb?oi<yb?lt<yb?av<yb?xu<yb?$D<yb?0:-1:0:-1:It<yb?zs<yb?0:-1:0:-1:Ju<yb?Qb<yb?Do<yb?VD<yb?0:-1:0:-1:Ot<yb?Yb<yb?0:-1:0:-1:fa<yb?Ne<yb?Sl<yb?Xi<yb?rc<yb?Mk<yb?jb<yb?ri<yb?$f<yb?Nv<yb?Nb<yb?Hi<yb?$b<yb?Kt<yb?0:-1:0:-1:Ir<yb?C<yb?0:-1:0:-1:we<yb?Ht<yb?Lt<yb?Sf<yb?0:-1:0:-1:bk<yb?_l<yb?0:-1:0:-1:Uv<yb?gc<yb?gr<yb?cv<yb?hc<yb?u<yb?0:-1:0:-1:et<yb?uv<yb?0:-1:0:-1:ht<yb?Bk<yb?Ds<yb?zb<yb?0:-1:0:-1:Ua<yb?ml<yb?0:-1:0:-1:Lk<yb?_D<yb?Su<yb?ma<yb?ob<yb?wc<yb?Kl<yb?tb<yb?0:-1:0:-1:ii<yb?dl<yb?0:-1:0:-1:wn<yb?Za<yb?Ko<yb?iu<yb?0:-1:0:-1:tv<yb?l<yb?0:-1:0:-1:oc<yb?mt<yb?jt<yb?Sc<yb?Sn<yb?Bs<yb?0:-1:0:-1:zr<yb?Ja<yb?0:-1:0:-1:nu<yb?hs<yb?eD<yb?Ro<yb?0:-1:0:-1:rk<yb?pt<yb?0:-1:0:-1:Gv<yb?Xf<yb?ca<yb?lf<yb?Pa<yb?Is<yb?c<yb?Bb<yb?nb<yb?T<yb?0:-1:0:-1:Da<yb?ui<yb?0:-1:0:-1:vD<yb?co<yb?Ku<yb?Wu<yb?0:-1:0:-1:Rl<yb?Gf<yb?0:-1:0:-1:du<yb?Ni<yb?mi<yb?Kf<yb?hl<yb?se<yb?0:-1:0:-1:vv<yb?Yu<yb?0:-1:0:-1:$n<yb?bn<yb?da<yb?Ek<yb?0:-1:0:-1:d<yb?oa<yb?0:-1:0:-1:Mf<yb?ul<yb?TD<yb?ni<yb?mv<yb?Fr<yb?lk<yb?Gc<yb?0:-1:0:-1:dD<yb?H<yb?0:-1:0:-1:Rk<yb?ji<yb?yn<yb?Sr<yb?0:-1:0:-1:Qr<yb?Xe<yb?0:-1:0:-1:Kv<yb?rv<yb?Ln<yb?gl<yb?OD<yb?P<yb?0:-1:0:-1:Lc<yb?i<yb?0:-1:0:-1:WD<yb?Wv<yb?pb<yb?ys<yb?0:-1:0:-1:v<yb?aa<yb?0:-1:0:-1:ea<yb?hb<yb?a<yb?Qu<yb?wt<yb?Ae<yb?Nr<yb?xr<yb?Nc<yb?kD<yb?ve<yb?ms<yb?0:-1:0:-1:nc<yb?Ca<yb?0:-1:0:-1:Du<yb?eb<yb?To<yb?tD<yb?0:-1:0:-1:of<yb?lu<yb?0:-1:0:-1:w<yb?fr<yb?Kc<yb?ZD<yb?rl<yb?Qv<yb?0:-1:0:-1:Vb<yb?Oo<yb?0:-1:0:-1:Jr<yb?Go<yb?Pb<yb?fu<yb?0:-1:0:-1:ti<yb?Mt<yb?0:-1:0:-1:Fe<yb?Mi<yb?_i<yb?Je<yb?sr<yb?Ol<yb?Xv<yb?dn<yb?0:-1:0:-1:Bf<yb?vr<yb?0:-1:0:-1:ge<yb?Ml<yb?Jn<yb?On<yb?0:-1:0:-1:Cc<yb?Sb<yb?0:-1:0:-1:k<yb?PD<yb?$e<yb?$l<yb?oD<yb?io<yb?0:-1:0:-1:nf<yb?El<yb?0:-1:0:-1:qe<yb?BD<yb?qs<yb?vs<yb?0:-1:0:-1:lD<yb?cu<yb?0:-1:0:-1:nk<yb?hk<yb?zl<yb?il<yb?mb<yb?Yl<yb?Db<yb?dr<yb?Lr<yb?fb<yb?0:-1:0:-1:pu<yb?gb<yb?0:-1:0:-1:yr<yb?Wr<yb?Te<yb?Bu<yb?0:-1:0:-1:GD<yb?So<yb?0:-1:0:-1:Ik<yb?Xc<yb?Ga<yb?Ul<yb?Ba<yb?Dk<yb?0:-1:0:-1:Ms<yb?Ck<yb?0:-1:0:-1:Pv<yb?Jl<yb?lr<yb?Iv<yb?0:-1:0:-1:wl<yb?bl<yb?0:-1:0:-1:ot<yb?Vo<yb?ue<yb?ye<yb?al<yb?n<yb?mc<yb?wi<yb?0:-1:0:-1:fs<yb?Et<yb?0:-1:0:-1:ar<yb?on<yb?Zu<yb?_u<yb?0:-1:0:-1:$v<yb?ws<yb?0:-1:0:-1:nD<yb?ae<yb?mo<yb?Yn<yb?Df<yb?Ye<yb?0:-1:0:-1:Rn<yb?Wb<yb?0:-1:0:-1:pl<yb?vi<yb?JD<yb?Qs<yb?0:-1:0:-1:Fc<yb?Ft<yb?0:-1:0:-1:Cd(Bqr,yb+aD|0)-1|0:-1;if(4<Eb>>>0)Gr=Q1r(t);else switch(Eb){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var xb=Lut(H1r(t));if(2<xb>>>0)Gr=Q1r(t);else switch(xb){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Tb=Snt(H1r(t));if(2<Tb>>>0)Gr=Q1r(t);else switch(Tb){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Lb=fut(H1r(t));if(2<Lb>>>0)Gr=Q1r(t);else switch(Lb){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Rb=Rnt(H1r(t));if(2<Rb>>>0)Gr=Q1r(t);else switch(Rb){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Mb=Bnt(H1r(t));if(2<Mb>>>0)Gr=Q1r(t);else switch(Mb){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,68);var Xb=Jnt(H1r(t));Gr=0===Xb?p(t):1===Xb?m(t):Q1r(t)}}}}}break;case 3:K1r(t,87);var Jb=Dat(H1r(t));if(3<Jb>>>0)Gr=Q1r(t);else switch(Jb){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var qb=H1r(t),Kb=35<qb?Al<qb?ie<qb?Qf<qb?-1:Cl<qb?Zt<qb?Ea<qb?pi<qb?ds<qb?pv<qb?Or<qb?He<qb?0:-1:0:-1:ro<qb?vc<qb?0:-1:0:-1:Ob<qb?sk<qb?wv<qb?Bl<qb?0:-1:0:-1:me<qb?ta<qb?0:-1:0:-1:Os<qb?gs<qb?Gs<qb?nv<qb?Il<qb?Se<qb?Un<qb?We<qb?rf<qb?ek<qb?_s<qb?MD<qb?$i<qb?Uo<qb?sn<qb?yD<qb?0:-1:0:-1:Wc<qb?Hu<qb?0:-1:0:-1:Ic<qb?it<qb?Jo<qb?ec<qb?0:-1:0:-1:ol<qb?zv<qb?0:-1:0:-1:x<qb?_v<qb?Sv<qb?Q<qb?yf<qb?ln<qb?0:-1:0:-1:Vt<qb?rb<qb?0:-1:0:-1:Po<qb?Gu<qb?Jc<qb?qt<qb?0:-1:0:-1:Ei<qb?Hs<qb?0:-1:0:-1:Dl<qb?jc<qb?fi<qb?tt<qb?Wo<qb?uc<qb?Rr<qb?Nu<qb?0:-1:0:-1:yl<qb?gv<qb?0:-1:0:-1:os<qb?Zc<qb?an<qb?gD<qb?0:-1:0:-1:ru<qb?zc<qb?0:-1:0:-1:Jt<qb?bi<qb?Zo<qb?Ur<qb?zf<qb?Ks<qb?0:-1:0:-1:au<qb?mr<qb?0:-1:0:-1:xD<qb?Wf<qb?xo<qb?Ao<qb?0:-1:0:-1:QD<qb?AD<qb?0:-1:0:-1:wf<qb?xk<qb?Ql<qb?$a<qb?Wa<qb?qa<qb?zt<qb?br<qb?wb<qb?qc<qb?0:-1:0:-1:Pt<qb?Ps<qb?0:-1:0:-1:Wt<qb?ha<qb?vf<qb?Er<qb?0:-1:0:-1:Zr<qb?xc<qb?0:-1:0:-1:ua<qb?jn<qb?Uc<qb?Kr<qb?ke<qb?zn<qb?0:-1:0:-1:rs<qb?Ho<qb?0:-1:0:-1:dk<qb?pf<qb?uo<qb?qu<qb?0:-1:0:-1:$<qb?wu<qb?0:-1:0:-1:If<qb?DD<qb?Ub<qb?Kn<qb?ir<qb?Pi<qb?cn<qb?Co<qb?0:-1:0:-1:Ac<qb?Qn<qb?0:-1:0:-1:tn<qb?Ls<qb?Cr<qb?hv<qb?0:-1:0:-1:Wi<qb?Gb<qb?0:-1:0:-1:ct<qb?oo<qb?tc<qb?e<qb?Ee<qb?Y<qb?0:-1:0:-1:Ze<qb?sa<qb?0:-1:0:-1:sf<qb?Ha<qb?Uf<qb?vt<qb?0:-1:0:-1:La<qb?Fv<qb?0:-1:0:-1:ao<qb?o<qb?vu<qb?Zn<qb?xi<qb?fe<qb?Bi<qb?Zs<qb?HD<qb?zo<qb?pe<qb?Tk<qb?0:-1:0:-1:gi<qb?ts<qb?0:-1:0:-1:ps<qb?hf<qb?As<qb?pa<qb?0:-1:0:-1:as<qb?Cb<qb?0:-1:0:-1:jf<qb?gt<qb?Mu<qb?ok<qb?Xo<qb?Ji<qb?0:-1:0:-1:D<qb?Yv<qb?0:-1:0:-1:Lf<qb?$s<qb?Vl<qb?Fb<qb?0:-1:0:-1:Ab<qb?ED<qb?0:-1:0:-1:Oe<qb?g<qb?wk<qb?Dv<qb?Mo<qb?_<qb?Ti<qb?Ve<qb?0:-1:0:-1:Hl<qb?An<qb?0:-1:0:-1:ai<qb?Hb<qb?Yf<qb?er<qb?0:-1:0:-1:fc<qb?Xl<qb?0:-1:0:-1:Bv<qb?_e<qb?le<qb?hD<qb?Pf<qb?Ge<qb?0:-1:0:-1:Dt<qb?Io<qb?0:-1:0:-1:cs<qb?KD<qb?eu<qb?hi<qb?0:-1:0:-1:Js<qb?Tr<qb?0:-1:0:-1:Hc<qb?Ma<qb?mu<qb?Jf<qb?Af<qb?Ki<qb?dc<qb?qi<qb?hu<qb?Aa<qb?0:-1:0:-1:$u<qb?Ak<qb?0:-1:0:-1:cc<qb?mf<qb?Rs<qb?wr<qb?0:-1:0:-1:yv<qb?eo<qb?0:-1:0:-1:jr<qb?ND<qb?ck<qb?Ui<qb?Ar<qb?Vs<qb?0:-1:0:-1:Bn<qb?F<qb?0:-1:0:-1:Qe<qb?_c<qb?cr<qb?Vv<qb?0:-1:0:-1:ub<qb?Ai<qb?0:-1:0:-1:Ra<qb?nn<qb?bu<qb?ja<qb?be<qb?Es<qb?Fl<qb?Ri<qb?0:-1:0:-1:nr<qb?zD<qb?0:-1:0:-1:Vc<qb?rD<qb?Br<qb?gu<qb?0:-1:0:-1:qn<qb?iD<qb?0:-1:0:-1:Fo<qb?oi<qb?lt<qb?av<qb?xu<qb?$D<qb?0:-1:0:-1:It<qb?zs<qb?0:-1:0:-1:Ju<qb?Qb<qb?Do<qb?VD<qb?0:-1:0:-1:Ot<qb?Yb<qb?0:-1:0:-1:fa<qb?Ne<qb?Sl<qb?Xi<qb?rc<qb?Mk<qb?jb<qb?ri<qb?$f<qb?Nv<qb?Nb<qb?Hi<qb?$b<qb?Kt<qb?0:-1:0:-1:Ir<qb?C<qb?0:-1:0:-1:we<qb?Ht<qb?Lt<qb?Sf<qb?0:-1:0:-1:bk<qb?_l<qb?0:-1:0:-1:Uv<qb?gc<qb?gr<qb?cv<qb?hc<qb?u<qb?0:-1:0:-1:et<qb?uv<qb?0:-1:0:-1:ht<qb?Bk<qb?Ds<qb?zb<qb?0:-1:0:-1:Ua<qb?ml<qb?0:-1:0:-1:Lk<qb?_D<qb?Su<qb?ma<qb?ob<qb?wc<qb?Kl<qb?tb<qb?0:-1:0:-1:ii<qb?dl<qb?0:-1:0:-1:wn<qb?Za<qb?Ko<qb?iu<qb?0:-1:0:-1:tv<qb?l<qb?0:-1:0:-1:oc<qb?mt<qb?jt<qb?Sc<qb?Sn<qb?Bs<qb?0:-1:0:-1:zr<qb?Ja<qb?0:-1:0:-1:nu<qb?hs<qb?eD<qb?Ro<qb?0:-1:0:-1:rk<qb?pt<qb?0:-1:0:-1:Gv<qb?Xf<qb?ca<qb?lf<qb?Pa<qb?Is<qb?c<qb?Bb<qb?nb<qb?T<qb?0:-1:0:-1:Da<qb?ui<qb?0:-1:0:-1:vD<qb?co<qb?Ku<qb?Wu<qb?0:-1:0:-1:Rl<qb?Gf<qb?0:-1:0:-1:du<qb?Ni<qb?mi<qb?Kf<qb?hl<qb?se<qb?0:-1:0:-1:vv<qb?Yu<qb?0:-1:0:-1:$n<qb?bn<qb?da<qb?Ek<qb?0:-1:0:-1:d<qb?oa<qb?0:-1:0:-1:Mf<qb?ul<qb?TD<qb?ni<qb?mv<qb?Fr<qb?lk<qb?Gc<qb?0:-1:0:-1:dD<qb?H<qb?0:-1:0:-1:Rk<qb?ji<qb?yn<qb?Sr<qb?0:-1:0:-1:Qr<qb?Xe<qb?0:-1:0:-1:Kv<qb?rv<qb?Ln<qb?gl<qb?OD<qb?P<qb?0:-1:0:-1:Lc<qb?i<qb?0:-1:0:-1:WD<qb?Wv<qb?pb<qb?ys<qb?0:-1:0:-1:v<qb?aa<qb?0:-1:0:-1:ea<qb?hb<qb?a<qb?Qu<qb?wt<qb?Ae<qb?Nr<qb?xr<qb?Nc<qb?kD<qb?ve<qb?ms<qb?0:-1:0:-1:nc<qb?Ca<qb?0:-1:0:-1:Du<qb?eb<qb?To<qb?tD<qb?0:-1:0:-1:of<qb?lu<qb?0:-1:0:-1:w<qb?fr<qb?Kc<qb?ZD<qb?rl<qb?Qv<qb?0:-1:0:-1:Vb<qb?Oo<qb?0:-1:0:-1:Jr<qb?Go<qb?Pb<qb?fu<qb?0:-1:0:-1:ti<qb?Mt<qb?0:-1:0:-1:Fe<qb?Mi<qb?_i<qb?Je<qb?sr<qb?Ol<qb?Xv<qb?dn<qb?0:-1:0:-1:Bf<qb?vr<qb?0:-1:0:-1:ge<qb?Ml<qb?Jn<qb?On<qb?0:-1:0:-1:Cc<qb?Sb<qb?0:-1:0:-1:k<qb?PD<qb?$e<qb?$l<qb?oD<qb?io<qb?0:-1:0:-1:nf<qb?El<qb?0:-1:0:-1:qe<qb?BD<qb?qs<qb?vs<qb?0:-1:0:-1:lD<qb?cu<qb?0:-1:0:-1:nk<qb?hk<qb?zl<qb?il<qb?mb<qb?Yl<qb?Db<qb?dr<qb?Lr<qb?fb<qb?0:-1:0:-1:pu<qb?gb<qb?0:-1:0:-1:yr<qb?Wr<qb?Te<qb?Bu<qb?0:-1:0:-1:GD<qb?So<qb?0:-1:0:-1:Ik<qb?Xc<qb?Ga<qb?Ul<qb?Ba<qb?Dk<qb?0:-1:0:-1:Ms<qb?Ck<qb?0:-1:0:-1:Pv<qb?Jl<qb?lr<qb?Iv<qb?0:-1:0:-1:wl<qb?bl<qb?0:-1:0:-1:ot<qb?Vo<qb?ue<qb?ye<qb?al<qb?n<qb?mc<qb?wi<qb?0:-1:0:-1:fs<qb?Et<qb?0:-1:0:-1:ar<qb?on<qb?Zu<qb?_u<qb?0:-1:0:-1:$v<qb?ws<qb?0:-1:0:-1:nD<qb?ae<qb?mo<qb?Yn<qb?Df<qb?Ye<qb?0:-1:0:-1:Rn<qb?Wb<qb?0:-1:0:-1:pl<qb?vi<qb?JD<qb?Qs<qb?0:-1:0:-1:Fc<qb?Ft<qb?0:-1:0:-1:Cd(gqr,qb+aD|0)-1|0:-1;if(2<Kb>>>0)Gr=Q1r(t);else switch(Kb){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Zb=fut(H1r(t));if(2<Zb>>>0)Gr=Q1r(t);else switch(Zb){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var uD=Yut(H1r(t));if(2<uD>>>0)Gr=Q1r(t);else switch(uD){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var cD=Bnt(H1r(t));if(2<cD>>>0)Gr=Q1r(t);else switch(cD){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,69);var sD=Jnt(H1r(t));Gr=0===sD?p(t):1===sD?m(t):Q1r(t)}}}}break;default:K1r(t,87);var pD=Yut(H1r(t));if(2<pD>>>0)Gr=Q1r(t);else switch(pD){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var wD=Bnt(H1r(t));if(2<wD>>>0)Gr=Q1r(t);else switch(wD){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var mD=Lut(H1r(t));if(2<mD>>>0)Gr=Q1r(t);else switch(mD){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var FD=Yut(H1r(t));if(2<FD>>>0)Gr=Q1r(t);else switch(FD){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var CD=Bnt(H1r(t));if(2<CD>>>0)Gr=Q1r(t);else switch(CD){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var SD=Ont(H1r(t));if(2<SD>>>0)Gr=Q1r(t);else switch(SD){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,70);var RD=Jnt(H1r(t));Gr=0===RD?p(t):1===RD?m(t):Q1r(t)}}}}}}}break;default:K1r(t,87);var jD=Qut(H1r(t));if(2<jD>>>0)Gr=Q1r(t);else switch(jD){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var UD=_ut(H1r(t));if(2<UD>>>0)Gr=Q1r(t);else switch(UD){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var XD=bat(H1r(t));if(2<XD>>>0)Gr=Q1r(t);else switch(XD){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var qD=Lut(H1r(t));if(2<qD>>>0)Gr=Q1r(t);else switch(qD){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,71);var YD=Jnt(H1r(t));Gr=0===YD?p(t):1===YD?m(t):Q1r(t)}}}}}break;case 44:K1r(t,87);var tk=Bnt(H1r(t));if(2<tk>>>0)Gr=Q1r(t);else switch(tk){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var ak=Yut(H1r(t));if(2<ak>>>0)Gr=Q1r(t);else switch(ak){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var ik=Tnt(H1r(t));if(2<ik>>>0)Gr=Q1r(t);else switch(ik){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var fk=vut(H1r(t));if(2<fk>>>0)Gr=Q1r(t);else switch(fk){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var kk=rut(H1r(t));if(2<kk>>>0)Gr=Q1r(t);else switch(kk){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,72);var mk=Jnt(H1r(t));Gr=0===mk?p(t):1===mk?m(t):Q1r(t)}}}}}break;case 45:K1r(t,87);var yk=H1r(t),_k=35<yk?Al<yk?ie<yk?Qf<yk?-1:Cl<yk?Zt<yk?Ea<yk?pi<yk?ds<yk?pv<yk?Or<yk?He<yk?0:-1:0:-1:ro<yk?vc<yk?0:-1:0:-1:Ob<yk?sk<yk?wv<yk?Bl<yk?0:-1:0:-1:me<yk?ta<yk?0:-1:0:-1:Os<yk?gs<yk?Gs<yk?nv<yk?Il<yk?Se<yk?Un<yk?We<yk?rf<yk?ek<yk?_s<yk?MD<yk?$i<yk?Uo<yk?sn<yk?yD<yk?0:-1:0:-1:Wc<yk?Hu<yk?0:-1:0:-1:Ic<yk?it<yk?Jo<yk?ec<yk?0:-1:0:-1:ol<yk?zv<yk?0:-1:0:-1:x<yk?_v<yk?Sv<yk?Q<yk?yf<yk?ln<yk?0:-1:0:-1:Vt<yk?rb<yk?0:-1:0:-1:Po<yk?Gu<yk?Jc<yk?qt<yk?0:-1:0:-1:Ei<yk?Hs<yk?0:-1:0:-1:Dl<yk?jc<yk?fi<yk?tt<yk?Wo<yk?uc<yk?Rr<yk?Nu<yk?0:-1:0:-1:yl<yk?gv<yk?0:-1:0:-1:os<yk?Zc<yk?an<yk?gD<yk?0:-1:0:-1:ru<yk?zc<yk?0:-1:0:-1:Jt<yk?bi<yk?Zo<yk?Ur<yk?zf<yk?Ks<yk?0:-1:0:-1:au<yk?mr<yk?0:-1:0:-1:xD<yk?Wf<yk?xo<yk?Ao<yk?0:-1:0:-1:QD<yk?AD<yk?0:-1:0:-1:wf<yk?xk<yk?Ql<yk?$a<yk?Wa<yk?qa<yk?zt<yk?br<yk?wb<yk?qc<yk?0:-1:0:-1:Pt<yk?Ps<yk?0:-1:0:-1:Wt<yk?ha<yk?vf<yk?Er<yk?0:-1:0:-1:Zr<yk?xc<yk?0:-1:0:-1:ua<yk?jn<yk?Uc<yk?Kr<yk?ke<yk?zn<yk?0:-1:0:-1:rs<yk?Ho<yk?0:-1:0:-1:dk<yk?pf<yk?uo<yk?qu<yk?0:-1:0:-1:$<yk?wu<yk?0:-1:0:-1:If<yk?DD<yk?Ub<yk?Kn<yk?ir<yk?Pi<yk?cn<yk?Co<yk?0:-1:0:-1:Ac<yk?Qn<yk?0:-1:0:-1:tn<yk?Ls<yk?Cr<yk?hv<yk?0:-1:0:-1:Wi<yk?Gb<yk?0:-1:0:-1:ct<yk?oo<yk?tc<yk?e<yk?Ee<yk?Y<yk?0:-1:0:-1:Ze<yk?sa<yk?0:-1:0:-1:sf<yk?Ha<yk?Uf<yk?vt<yk?0:-1:0:-1:La<yk?Fv<yk?0:-1:0:-1:ao<yk?o<yk?vu<yk?Zn<yk?xi<yk?fe<yk?Bi<yk?Zs<yk?HD<yk?zo<yk?pe<yk?Tk<yk?0:-1:0:-1:gi<yk?ts<yk?0:-1:0:-1:ps<yk?hf<yk?As<yk?pa<yk?0:-1:0:-1:as<yk?Cb<yk?0:-1:0:-1:jf<yk?gt<yk?Mu<yk?ok<yk?Xo<yk?Ji<yk?0:-1:0:-1:D<yk?Yv<yk?0:-1:0:-1:Lf<yk?$s<yk?Vl<yk?Fb<yk?0:-1:0:-1:Ab<yk?ED<yk?0:-1:0:-1:Oe<yk?g<yk?wk<yk?Dv<yk?Mo<yk?_<yk?Ti<yk?Ve<yk?0:-1:0:-1:Hl<yk?An<yk?0:-1:0:-1:ai<yk?Hb<yk?Yf<yk?er<yk?0:-1:0:-1:fc<yk?Xl<yk?0:-1:0:-1:Bv<yk?_e<yk?le<yk?hD<yk?Pf<yk?Ge<yk?0:-1:0:-1:Dt<yk?Io<yk?0:-1:0:-1:cs<yk?KD<yk?eu<yk?hi<yk?0:-1:0:-1:Js<yk?Tr<yk?0:-1:0:-1:Hc<yk?Ma<yk?mu<yk?Jf<yk?Af<yk?Ki<yk?dc<yk?qi<yk?hu<yk?Aa<yk?0:-1:0:-1:$u<yk?Ak<yk?0:-1:0:-1:cc<yk?mf<yk?Rs<yk?wr<yk?0:-1:0:-1:yv<yk?eo<yk?0:-1:0:-1:jr<yk?ND<yk?ck<yk?Ui<yk?Ar<yk?Vs<yk?0:-1:0:-1:Bn<yk?F<yk?0:-1:0:-1:Qe<yk?_c<yk?cr<yk?Vv<yk?0:-1:0:-1:ub<yk?Ai<yk?0:-1:0:-1:Ra<yk?nn<yk?bu<yk?ja<yk?be<yk?Es<yk?Fl<yk?Ri<yk?0:-1:0:-1:nr<yk?zD<yk?0:-1:0:-1:Vc<yk?rD<yk?Br<yk?gu<yk?0:-1:0:-1:qn<yk?iD<yk?0:-1:0:-1:Fo<yk?oi<yk?lt<yk?av<yk?xu<yk?$D<yk?0:-1:0:-1:It<yk?zs<yk?0:-1:0:-1:Ju<yk?Qb<yk?Do<yk?VD<yk?0:-1:0:-1:Ot<yk?Yb<yk?0:-1:0:-1:fa<yk?Ne<yk?Sl<yk?Xi<yk?rc<yk?Mk<yk?jb<yk?ri<yk?$f<yk?Nv<yk?Nb<yk?Hi<yk?$b<yk?Kt<yk?0:-1:0:-1:Ir<yk?C<yk?0:-1:0:-1:we<yk?Ht<yk?Lt<yk?Sf<yk?0:-1:0:-1:bk<yk?_l<yk?0:-1:0:-1:Uv<yk?gc<yk?gr<yk?cv<yk?hc<yk?u<yk?0:-1:0:-1:et<yk?uv<yk?0:-1:0:-1:ht<yk?Bk<yk?Ds<yk?zb<yk?0:-1:0:-1:Ua<yk?ml<yk?0:-1:0:-1:Lk<yk?_D<yk?Su<yk?ma<yk?ob<yk?wc<yk?Kl<yk?tb<yk?0:-1:0:-1:ii<yk?dl<yk?0:-1:0:-1:wn<yk?Za<yk?Ko<yk?iu<yk?0:-1:0:-1:tv<yk?l<yk?0:-1:0:-1:oc<yk?mt<yk?jt<yk?Sc<yk?Sn<yk?Bs<yk?0:-1:0:-1:zr<yk?Ja<yk?0:-1:0:-1:nu<yk?hs<yk?eD<yk?Ro<yk?0:-1:0:-1:rk<yk?pt<yk?0:-1:0:-1:Gv<yk?Xf<yk?ca<yk?lf<yk?Pa<yk?Is<yk?c<yk?Bb<yk?nb<yk?T<yk?0:-1:0:-1:Da<yk?ui<yk?0:-1:0:-1:vD<yk?co<yk?Ku<yk?Wu<yk?0:-1:0:-1:Rl<yk?Gf<yk?0:-1:0:-1:du<yk?Ni<yk?mi<yk?Kf<yk?hl<yk?se<yk?0:-1:0:-1:vv<yk?Yu<yk?0:-1:0:-1:$n<yk?bn<yk?da<yk?Ek<yk?0:-1:0:-1:d<yk?oa<yk?0:-1:0:-1:Mf<yk?ul<yk?TD<yk?ni<yk?mv<yk?Fr<yk?lk<yk?Gc<yk?0:-1:0:-1:dD<yk?H<yk?0:-1:0:-1:Rk<yk?ji<yk?yn<yk?Sr<yk?0:-1:0:-1:Qr<yk?Xe<yk?0:-1:0:-1:Kv<yk?rv<yk?Ln<yk?gl<yk?OD<yk?P<yk?0:-1:0:-1:Lc<yk?i<yk?0:-1:0:-1:WD<yk?Wv<yk?pb<yk?ys<yk?0:-1:0:-1:v<yk?aa<yk?0:-1:0:-1:ea<yk?hb<yk?a<yk?Qu<yk?wt<yk?Ae<yk?Nr<yk?xr<yk?Nc<yk?kD<yk?ve<yk?ms<yk?0:-1:0:-1:nc<yk?Ca<yk?0:-1:0:-1:Du<yk?eb<yk?To<yk?tD<yk?0:-1:0:-1:of<yk?lu<yk?0:-1:0:-1:w<yk?fr<yk?Kc<yk?ZD<yk?rl<yk?Qv<yk?0:-1:0:-1:Vb<yk?Oo<yk?0:-1:0:-1:Jr<yk?Go<yk?Pb<yk?fu<yk?0:-1:0:-1:ti<yk?Mt<yk?0:-1:0:-1:Fe<yk?Mi<yk?_i<yk?Je<yk?sr<yk?Ol<yk?Xv<yk?dn<yk?0:-1:0:-1:Bf<yk?vr<yk?0:-1:0:-1:ge<yk?Ml<yk?Jn<yk?On<yk?0:-1:0:-1:Cc<yk?Sb<yk?0:-1:0:-1:k<yk?PD<yk?$e<yk?$l<yk?oD<yk?io<yk?0:-1:0:-1:nf<yk?El<yk?0:-1:0:-1:qe<yk?BD<yk?qs<yk?vs<yk?0:-1:0:-1:lD<yk?cu<yk?0:-1:0:-1:nk<yk?hk<yk?zl<yk?il<yk?mb<yk?Yl<yk?Db<yk?dr<yk?Lr<yk?fb<yk?0:-1:0:-1:pu<yk?gb<yk?0:-1:0:-1:yr<yk?Wr<yk?Te<yk?Bu<yk?0:-1:0:-1:GD<yk?So<yk?0:-1:0:-1:Ik<yk?Xc<yk?Ga<yk?Ul<yk?Ba<yk?Dk<yk?0:-1:0:-1:Ms<yk?Ck<yk?0:-1:0:-1:Pv<yk?Jl<yk?lr<yk?Iv<yk?0:-1:0:-1:wl<yk?bl<yk?0:-1:0:-1:ot<yk?Vo<yk?ue<yk?ye<yk?al<yk?n<yk?mc<yk?wi<yk?0:-1:0:-1:fs<yk?Et<yk?0:-1:0:-1:ar<yk?on<yk?Zu<yk?_u<yk?0:-1:0:-1:$v<yk?ws<yk?0:-1:0:-1:nD<yk?ae<yk?mo<yk?Yn<yk?Df<yk?Ye<yk?0:-1:0:-1:Rn<yk?Wb<yk?0:-1:0:-1:pl<yk?vi<yk?JD<yk?Qs<yk?0:-1:0:-1:Fc<yk?Ft<yk?0:-1:0:-1:Cd(aqr,yk+aD|0)-1|0:-1;if(4<_k>>>0)Gr=Q1r(t);else switch(_k){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var gk=fut(H1r(t));if(2<gk>>>0)Gr=Q1r(t);else switch(gk){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Sk=Yut(H1r(t));if(2<Sk>>>0)Gr=Q1r(t);else switch(Sk){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Ok=bat(H1r(t));if(2<Ok>>>0)Gr=Q1r(t);else switch(Ok){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Pk=Lut(H1r(t));if(2<Pk>>>0)Gr=Q1r(t);else switch(Pk){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,73);var jk=Jnt(H1r(t));Gr=0===jk?p(t):1===jk?m(t):Q1r(t)}}}}break;case 3:K1r(t,87);var Uk=Unt(H1r(t));if(2<Uk>>>0)Gr=Q1r(t);else switch(Uk){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Xk=Bnt(H1r(t));if(2<Xk>>>0)Gr=Q1r(t);else switch(Xk){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Jk=vut(H1r(t));if(2<Jk>>>0)Gr=Q1r(t);else switch(Jk){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,74);var Gk=Jnt(H1r(t));Gr=0===Gk?p(t):1===Gk?m(t):Q1r(t)}}}break;default:K1r(t,87);var qk=bat(H1r(t));if(2<qk>>>0)Gr=Q1r(t);else switch(qk){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var zk=Yut(H1r(t));if(2<zk>>>0)Gr=Q1r(t);else switch(zk){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Vk=Lut(H1r(t));if(2<Vk>>>0)Gr=Q1r(t);else switch(Vk){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Wk=pat(H1r(t));if(2<Wk>>>0)Gr=Q1r(t);else switch(Wk){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,75);var Yk=Jnt(H1r(t));Gr=0===Yk?p(t):1===Yk?m(t):Q1r(t)}}}}}break;case 46:K1r(t,87);var Hk=H1r(t),$k=35<Hk?Al<Hk?ie<Hk?Qf<Hk?-1:Cl<Hk?Zt<Hk?Ea<Hk?pi<Hk?ds<Hk?pv<Hk?Or<Hk?He<Hk?0:-1:0:-1:ro<Hk?vc<Hk?0:-1:0:-1:Ob<Hk?sk<Hk?wv<Hk?Bl<Hk?0:-1:0:-1:me<Hk?ta<Hk?0:-1:0:-1:Os<Hk?gs<Hk?Gs<Hk?nv<Hk?Il<Hk?Se<Hk?Un<Hk?We<Hk?rf<Hk?ek<Hk?_s<Hk?MD<Hk?$i<Hk?Uo<Hk?sn<Hk?yD<Hk?0:-1:0:-1:Wc<Hk?Hu<Hk?0:-1:0:-1:Ic<Hk?it<Hk?Jo<Hk?ec<Hk?0:-1:0:-1:ol<Hk?zv<Hk?0:-1:0:-1:x<Hk?_v<Hk?Sv<Hk?Q<Hk?yf<Hk?ln<Hk?0:-1:0:-1:Vt<Hk?rb<Hk?0:-1:0:-1:Po<Hk?Gu<Hk?Jc<Hk?qt<Hk?0:-1:0:-1:Ei<Hk?Hs<Hk?0:-1:0:-1:Dl<Hk?jc<Hk?fi<Hk?tt<Hk?Wo<Hk?uc<Hk?Rr<Hk?Nu<Hk?0:-1:0:-1:yl<Hk?gv<Hk?0:-1:0:-1:os<Hk?Zc<Hk?an<Hk?gD<Hk?0:-1:0:-1:ru<Hk?zc<Hk?0:-1:0:-1:Jt<Hk?bi<Hk?Zo<Hk?Ur<Hk?zf<Hk?Ks<Hk?0:-1:0:-1:au<Hk?mr<Hk?0:-1:0:-1:xD<Hk?Wf<Hk?xo<Hk?Ao<Hk?0:-1:0:-1:QD<Hk?AD<Hk?0:-1:0:-1:wf<Hk?xk<Hk?Ql<Hk?$a<Hk?Wa<Hk?qa<Hk?zt<Hk?br<Hk?wb<Hk?qc<Hk?0:-1:0:-1:Pt<Hk?Ps<Hk?0:-1:0:-1:Wt<Hk?ha<Hk?vf<Hk?Er<Hk?0:-1:0:-1:Zr<Hk?xc<Hk?0:-1:0:-1:ua<Hk?jn<Hk?Uc<Hk?Kr<Hk?ke<Hk?zn<Hk?0:-1:0:-1:rs<Hk?Ho<Hk?0:-1:0:-1:dk<Hk?pf<Hk?uo<Hk?qu<Hk?0:-1:0:-1:$<Hk?wu<Hk?0:-1:0:-1:If<Hk?DD<Hk?Ub<Hk?Kn<Hk?ir<Hk?Pi<Hk?cn<Hk?Co<Hk?0:-1:0:-1:Ac<Hk?Qn<Hk?0:-1:0:-1:tn<Hk?Ls<Hk?Cr<Hk?hv<Hk?0:-1:0:-1:Wi<Hk?Gb<Hk?0:-1:0:-1:ct<Hk?oo<Hk?tc<Hk?e<Hk?Ee<Hk?Y<Hk?0:-1:0:-1:Ze<Hk?sa<Hk?0:-1:0:-1:sf<Hk?Ha<Hk?Uf<Hk?vt<Hk?0:-1:0:-1:La<Hk?Fv<Hk?0:-1:0:-1:ao<Hk?o<Hk?vu<Hk?Zn<Hk?xi<Hk?fe<Hk?Bi<Hk?Zs<Hk?HD<Hk?zo<Hk?pe<Hk?Tk<Hk?0:-1:0:-1:gi<Hk?ts<Hk?0:-1:0:-1:ps<Hk?hf<Hk?As<Hk?pa<Hk?0:-1:0:-1:as<Hk?Cb<Hk?0:-1:0:-1:jf<Hk?gt<Hk?Mu<Hk?ok<Hk?Xo<Hk?Ji<Hk?0:-1:0:-1:D<Hk?Yv<Hk?0:-1:0:-1:Lf<Hk?$s<Hk?Vl<Hk?Fb<Hk?0:-1:0:-1:Ab<Hk?ED<Hk?0:-1:0:-1:Oe<Hk?g<Hk?wk<Hk?Dv<Hk?Mo<Hk?_<Hk?Ti<Hk?Ve<Hk?0:-1:0:-1:Hl<Hk?An<Hk?0:-1:0:-1:ai<Hk?Hb<Hk?Yf<Hk?er<Hk?0:-1:0:-1:fc<Hk?Xl<Hk?0:-1:0:-1:Bv<Hk?_e<Hk?le<Hk?hD<Hk?Pf<Hk?Ge<Hk?0:-1:0:-1:Dt<Hk?Io<Hk?0:-1:0:-1:cs<Hk?KD<Hk?eu<Hk?hi<Hk?0:-1:0:-1:Js<Hk?Tr<Hk?0:-1:0:-1:Hc<Hk?Ma<Hk?mu<Hk?Jf<Hk?Af<Hk?Ki<Hk?dc<Hk?qi<Hk?hu<Hk?Aa<Hk?0:-1:0:-1:$u<Hk?Ak<Hk?0:-1:0:-1:cc<Hk?mf<Hk?Rs<Hk?wr<Hk?0:-1:0:-1:yv<Hk?eo<Hk?0:-1:0:-1:jr<Hk?ND<Hk?ck<Hk?Ui<Hk?Ar<Hk?Vs<Hk?0:-1:0:-1:Bn<Hk?F<Hk?0:-1:0:-1:Qe<Hk?_c<Hk?cr<Hk?Vv<Hk?0:-1:0:-1:ub<Hk?Ai<Hk?0:-1:0:-1:Ra<Hk?nn<Hk?bu<Hk?ja<Hk?be<Hk?Es<Hk?Fl<Hk?Ri<Hk?0:-1:0:-1:nr<Hk?zD<Hk?0:-1:0:-1:Vc<Hk?rD<Hk?Br<Hk?gu<Hk?0:-1:0:-1:qn<Hk?iD<Hk?0:-1:0:-1:Fo<Hk?oi<Hk?lt<Hk?av<Hk?xu<Hk?$D<Hk?0:-1:0:-1:It<Hk?zs<Hk?0:-1:0:-1:Ju<Hk?Qb<Hk?Do<Hk?VD<Hk?0:-1:0:-1:Ot<Hk?Yb<Hk?0:-1:0:-1:fa<Hk?Ne<Hk?Sl<Hk?Xi<Hk?rc<Hk?Mk<Hk?jb<Hk?ri<Hk?$f<Hk?Nv<Hk?Nb<Hk?Hi<Hk?$b<Hk?Kt<Hk?0:-1:0:-1:Ir<Hk?C<Hk?0:-1:0:-1:we<Hk?Ht<Hk?Lt<Hk?Sf<Hk?0:-1:0:-1:bk<Hk?_l<Hk?0:-1:0:-1:Uv<Hk?gc<Hk?gr<Hk?cv<Hk?hc<Hk?u<Hk?0:-1:0:-1:et<Hk?uv<Hk?0:-1:0:-1:ht<Hk?Bk<Hk?Ds<Hk?zb<Hk?0:-1:0:-1:Ua<Hk?ml<Hk?0:-1:0:-1:Lk<Hk?_D<Hk?Su<Hk?ma<Hk?ob<Hk?wc<Hk?Kl<Hk?tb<Hk?0:-1:0:-1:ii<Hk?dl<Hk?0:-1:0:-1:wn<Hk?Za<Hk?Ko<Hk?iu<Hk?0:-1:0:-1:tv<Hk?l<Hk?0:-1:0:-1:oc<Hk?mt<Hk?jt<Hk?Sc<Hk?Sn<Hk?Bs<Hk?0:-1:0:-1:zr<Hk?Ja<Hk?0:-1:0:-1:nu<Hk?hs<Hk?eD<Hk?Ro<Hk?0:-1:0:-1:rk<Hk?pt<Hk?0:-1:0:-1:Gv<Hk?Xf<Hk?ca<Hk?lf<Hk?Pa<Hk?Is<Hk?c<Hk?Bb<Hk?nb<Hk?T<Hk?0:-1:0:-1:Da<Hk?ui<Hk?0:-1:0:-1:vD<Hk?co<Hk?Ku<Hk?Wu<Hk?0:-1:0:-1:Rl<Hk?Gf<Hk?0:-1:0:-1:du<Hk?Ni<Hk?mi<Hk?Kf<Hk?hl<Hk?se<Hk?0:-1:0:-1:vv<Hk?Yu<Hk?0:-1:0:-1:$n<Hk?bn<Hk?da<Hk?Ek<Hk?0:-1:0:-1:d<Hk?oa<Hk?0:-1:0:-1:Mf<Hk?ul<Hk?TD<Hk?ni<Hk?mv<Hk?Fr<Hk?lk<Hk?Gc<Hk?0:-1:0:-1:dD<Hk?H<Hk?0:-1:0:-1:Rk<Hk?ji<Hk?yn<Hk?Sr<Hk?0:-1:0:-1:Qr<Hk?Xe<Hk?0:-1:0:-1:Kv<Hk?rv<Hk?Ln<Hk?gl<Hk?OD<Hk?P<Hk?0:-1:0:-1:Lc<Hk?i<Hk?0:-1:0:-1:WD<Hk?Wv<Hk?pb<Hk?ys<Hk?0:-1:0:-1:v<Hk?aa<Hk?0:-1:0:-1:ea<Hk?hb<Hk?a<Hk?Qu<Hk?wt<Hk?Ae<Hk?Nr<Hk?xr<Hk?Nc<Hk?kD<Hk?ve<Hk?ms<Hk?0:-1:0:-1:nc<Hk?Ca<Hk?0:-1:0:-1:Du<Hk?eb<Hk?To<Hk?tD<Hk?0:-1:0:-1:of<Hk?lu<Hk?0:-1:0:-1:w<Hk?fr<Hk?Kc<Hk?ZD<Hk?rl<Hk?Qv<Hk?0:-1:0:-1:Vb<Hk?Oo<Hk?0:-1:0:-1:Jr<Hk?Go<Hk?Pb<Hk?fu<Hk?0:-1:0:-1:ti<Hk?Mt<Hk?0:-1:0:-1:Fe<Hk?Mi<Hk?_i<Hk?Je<Hk?sr<Hk?Ol<Hk?Xv<Hk?dn<Hk?0:-1:0:-1:Bf<Hk?vr<Hk?0:-1:0:-1:ge<Hk?Ml<Hk?Jn<Hk?On<Hk?0:-1:0:-1:Cc<Hk?Sb<Hk?0:-1:0:-1:k<Hk?PD<Hk?$e<Hk?$l<Hk?oD<Hk?io<Hk?0:-1:0:-1:nf<Hk?El<Hk?0:-1:0:-1:qe<Hk?BD<Hk?qs<Hk?vs<Hk?0:-1:0:-1:lD<Hk?cu<Hk?0:-1:0:-1:nk<Hk?hk<Hk?zl<Hk?il<Hk?mb<Hk?Yl<Hk?Db<Hk?dr<Hk?Lr<Hk?fb<Hk?0:-1:0:-1:pu<Hk?gb<Hk?0:-1:0:-1:yr<Hk?Wr<Hk?Te<Hk?Bu<Hk?0:-1:0:-1:GD<Hk?So<Hk?0:-1:0:-1:Ik<Hk?Xc<Hk?Ga<Hk?Ul<Hk?Ba<Hk?Dk<Hk?0:-1:0:-1:Ms<Hk?Ck<Hk?0:-1:0:-1:Pv<Hk?Jl<Hk?lr<Hk?Iv<Hk?0:-1:0:-1:wl<Hk?bl<Hk?0:-1:0:-1:ot<Hk?Vo<Hk?ue<Hk?ye<Hk?al<Hk?n<Hk?mc<Hk?wi<Hk?0:-1:0:-1:fs<Hk?Et<Hk?0:-1:0:-1:ar<Hk?on<Hk?Zu<Hk?_u<Hk?0:-1:0:-1:$v<Hk?ws<Hk?0:-1:0:-1:nD<Hk?ae<Hk?mo<Hk?Yn<Hk?Df<Hk?Ye<Hk?0:-1:0:-1:Rn<Hk?Wb<Hk?0:-1:0:-1:pl<Hk?vi<Hk?JD<Hk?Qs<Hk?0:-1:0:-1:Fc<Hk?Ft<Hk?0:-1:0:-1:Cd(uqr,Hk+aD|0)-1|0:-1;if(4<$k>>>0)Gr=Q1r(t);else switch($k){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var Kk=H1r(t),Qk=35<Kk?Al<Kk?ie<Kk?Qf<Kk?-1:Cl<Kk?Zt<Kk?Ea<Kk?pi<Kk?ds<Kk?pv<Kk?Or<Kk?He<Kk?0:-1:0:-1:ro<Kk?vc<Kk?0:-1:0:-1:Ob<Kk?sk<Kk?wv<Kk?Bl<Kk?0:-1:0:-1:me<Kk?ta<Kk?0:-1:0:-1:Os<Kk?gs<Kk?Gs<Kk?nv<Kk?Il<Kk?Se<Kk?Un<Kk?We<Kk?rf<Kk?ek<Kk?_s<Kk?MD<Kk?$i<Kk?Uo<Kk?sn<Kk?yD<Kk?0:-1:0:-1:Wc<Kk?Hu<Kk?0:-1:0:-1:Ic<Kk?it<Kk?Jo<Kk?ec<Kk?0:-1:0:-1:ol<Kk?zv<Kk?0:-1:0:-1:x<Kk?_v<Kk?Sv<Kk?Q<Kk?yf<Kk?ln<Kk?0:-1:0:-1:Vt<Kk?rb<Kk?0:-1:0:-1:Po<Kk?Gu<Kk?Jc<Kk?qt<Kk?0:-1:0:-1:Ei<Kk?Hs<Kk?0:-1:0:-1:Dl<Kk?jc<Kk?fi<Kk?tt<Kk?Wo<Kk?uc<Kk?Rr<Kk?Nu<Kk?0:-1:0:-1:yl<Kk?gv<Kk?0:-1:0:-1:os<Kk?Zc<Kk?an<Kk?gD<Kk?0:-1:0:-1:ru<Kk?zc<Kk?0:-1:0:-1:Jt<Kk?bi<Kk?Zo<Kk?Ur<Kk?zf<Kk?Ks<Kk?0:-1:0:-1:au<Kk?mr<Kk?0:-1:0:-1:xD<Kk?Wf<Kk?xo<Kk?Ao<Kk?0:-1:0:-1:QD<Kk?AD<Kk?0:-1:0:-1:wf<Kk?xk<Kk?Ql<Kk?$a<Kk?Wa<Kk?qa<Kk?zt<Kk?br<Kk?wb<Kk?qc<Kk?0:-1:0:-1:Pt<Kk?Ps<Kk?0:-1:0:-1:Wt<Kk?ha<Kk?vf<Kk?Er<Kk?0:-1:0:-1:Zr<Kk?xc<Kk?0:-1:0:-1:ua<Kk?jn<Kk?Uc<Kk?Kr<Kk?ke<Kk?zn<Kk?0:-1:0:-1:rs<Kk?Ho<Kk?0:-1:0:-1:dk<Kk?pf<Kk?uo<Kk?qu<Kk?0:-1:0:-1:$<Kk?wu<Kk?0:-1:0:-1:If<Kk?DD<Kk?Ub<Kk?Kn<Kk?ir<Kk?Pi<Kk?cn<Kk?Co<Kk?0:-1:0:-1:Ac<Kk?Qn<Kk?0:-1:0:-1:tn<Kk?Ls<Kk?Cr<Kk?hv<Kk?0:-1:0:-1:Wi<Kk?Gb<Kk?0:-1:0:-1:ct<Kk?oo<Kk?tc<Kk?e<Kk?Ee<Kk?Y<Kk?0:-1:0:-1:Ze<Kk?sa<Kk?0:-1:0:-1:sf<Kk?Ha<Kk?Uf<Kk?vt<Kk?0:-1:0:-1:La<Kk?Fv<Kk?0:-1:0:-1:ao<Kk?o<Kk?vu<Kk?Zn<Kk?xi<Kk?fe<Kk?Bi<Kk?Zs<Kk?HD<Kk?zo<Kk?pe<Kk?Tk<Kk?0:-1:0:-1:gi<Kk?ts<Kk?0:-1:0:-1:ps<Kk?hf<Kk?As<Kk?pa<Kk?0:-1:0:-1:as<Kk?Cb<Kk?0:-1:0:-1:jf<Kk?gt<Kk?Mu<Kk?ok<Kk?Xo<Kk?Ji<Kk?0:-1:0:-1:D<Kk?Yv<Kk?0:-1:0:-1:Lf<Kk?$s<Kk?Vl<Kk?Fb<Kk?0:-1:0:-1:Ab<Kk?ED<Kk?0:-1:0:-1:Oe<Kk?g<Kk?wk<Kk?Dv<Kk?Mo<Kk?_<Kk?Ti<Kk?Ve<Kk?0:-1:0:-1:Hl<Kk?An<Kk?0:-1:0:-1:ai<Kk?Hb<Kk?Yf<Kk?er<Kk?0:-1:0:-1:fc<Kk?Xl<Kk?0:-1:0:-1:Bv<Kk?_e<Kk?le<Kk?hD<Kk?Pf<Kk?Ge<Kk?0:-1:0:-1:Dt<Kk?Io<Kk?0:-1:0:-1:cs<Kk?KD<Kk?eu<Kk?hi<Kk?0:-1:0:-1:Js<Kk?Tr<Kk?0:-1:0:-1:Hc<Kk?Ma<Kk?mu<Kk?Jf<Kk?Af<Kk?Ki<Kk?dc<Kk?qi<Kk?hu<Kk?Aa<Kk?0:-1:0:-1:$u<Kk?Ak<Kk?0:-1:0:-1:cc<Kk?mf<Kk?Rs<Kk?wr<Kk?0:-1:0:-1:yv<Kk?eo<Kk?0:-1:0:-1:jr<Kk?ND<Kk?ck<Kk?Ui<Kk?Ar<Kk?Vs<Kk?0:-1:0:-1:Bn<Kk?F<Kk?0:-1:0:-1:Qe<Kk?_c<Kk?cr<Kk?Vv<Kk?0:-1:0:-1:ub<Kk?Ai<Kk?0:-1:0:-1:Ra<Kk?nn<Kk?bu<Kk?ja<Kk?be<Kk?Es<Kk?Fl<Kk?Ri<Kk?0:-1:0:-1:nr<Kk?zD<Kk?0:-1:0:-1:Vc<Kk?rD<Kk?Br<Kk?gu<Kk?0:-1:0:-1:qn<Kk?iD<Kk?0:-1:0:-1:Fo<Kk?oi<Kk?lt<Kk?av<Kk?xu<Kk?$D<Kk?0:-1:0:-1:It<Kk?zs<Kk?0:-1:0:-1:Ju<Kk?Qb<Kk?Do<Kk?VD<Kk?0:-1:0:-1:Ot<Kk?Yb<Kk?0:-1:0:-1:fa<Kk?Ne<Kk?Sl<Kk?Xi<Kk?rc<Kk?Mk<Kk?jb<Kk?ri<Kk?$f<Kk?Nv<Kk?Nb<Kk?Hi<Kk?$b<Kk?Kt<Kk?0:-1:0:-1:Ir<Kk?C<Kk?0:-1:0:-1:we<Kk?Ht<Kk?Lt<Kk?Sf<Kk?0:-1:0:-1:bk<Kk?_l<Kk?0:-1:0:-1:Uv<Kk?gc<Kk?gr<Kk?cv<Kk?hc<Kk?u<Kk?0:-1:0:-1:et<Kk?uv<Kk?0:-1:0:-1:ht<Kk?Bk<Kk?Ds<Kk?zb<Kk?0:-1:0:-1:Ua<Kk?ml<Kk?0:-1:0:-1:Lk<Kk?_D<Kk?Su<Kk?ma<Kk?ob<Kk?wc<Kk?Kl<Kk?tb<Kk?0:-1:0:-1:ii<Kk?dl<Kk?0:-1:0:-1:wn<Kk?Za<Kk?Ko<Kk?iu<Kk?0:-1:0:-1:tv<Kk?l<Kk?0:-1:0:-1:oc<Kk?mt<Kk?jt<Kk?Sc<Kk?Sn<Kk?Bs<Kk?0:-1:0:-1:zr<Kk?Ja<Kk?0:-1:0:-1:nu<Kk?hs<Kk?eD<Kk?Ro<Kk?0:-1:0:-1:rk<Kk?pt<Kk?0:-1:0:-1:Gv<Kk?Xf<Kk?ca<Kk?lf<Kk?Pa<Kk?Is<Kk?c<Kk?Bb<Kk?nb<Kk?T<Kk?0:-1:0:-1:Da<Kk?ui<Kk?0:-1:0:-1:vD<Kk?co<Kk?Ku<Kk?Wu<Kk?0:-1:0:-1:Rl<Kk?Gf<Kk?0:-1:0:-1:du<Kk?Ni<Kk?mi<Kk?Kf<Kk?hl<Kk?se<Kk?0:-1:0:-1:vv<Kk?Yu<Kk?0:-1:0:-1:$n<Kk?bn<Kk?da<Kk?Ek<Kk?0:-1:0:-1:d<Kk?oa<Kk?0:-1:0:-1:Mf<Kk?ul<Kk?TD<Kk?ni<Kk?mv<Kk?Fr<Kk?lk<Kk?Gc<Kk?0:-1:0:-1:dD<Kk?H<Kk?0:-1:0:-1:Rk<Kk?ji<Kk?yn<Kk?Sr<Kk?0:-1:0:-1:Qr<Kk?Xe<Kk?0:-1:0:-1:Kv<Kk?rv<Kk?Ln<Kk?gl<Kk?OD<Kk?P<Kk?0:-1:0:-1:Lc<Kk?i<Kk?0:-1:0:-1:WD<Kk?Wv<Kk?pb<Kk?ys<Kk?0:-1:0:-1:v<Kk?aa<Kk?0:-1:0:-1:ea<Kk?hb<Kk?a<Kk?Qu<Kk?wt<Kk?Ae<Kk?Nr<Kk?xr<Kk?Nc<Kk?kD<Kk?ve<Kk?ms<Kk?0:-1:0:-1:nc<Kk?Ca<Kk?0:-1:0:-1:Du<Kk?eb<Kk?To<Kk?tD<Kk?0:-1:0:-1:of<Kk?lu<Kk?0:-1:0:-1:w<Kk?fr<Kk?Kc<Kk?ZD<Kk?rl<Kk?Qv<Kk?0:-1:0:-1:Vb<Kk?Oo<Kk?0:-1:0:-1:Jr<Kk?Go<Kk?Pb<Kk?fu<Kk?0:-1:0:-1:ti<Kk?Mt<Kk?0:-1:0:-1:Fe<Kk?Mi<Kk?_i<Kk?Je<Kk?sr<Kk?Ol<Kk?Xv<Kk?dn<Kk?0:-1:0:-1:Bf<Kk?vr<Kk?0:-1:0:-1:ge<Kk?Ml<Kk?Jn<Kk?On<Kk?0:-1:0:-1:Cc<Kk?Sb<Kk?0:-1:0:-1:k<Kk?PD<Kk?$e<Kk?$l<Kk?oD<Kk?io<Kk?0:-1:0:-1:nf<Kk?El<Kk?0:-1:0:-1:qe<Kk?BD<Kk?qs<Kk?vs<Kk?0:-1:0:-1:lD<Kk?cu<Kk?0:-1:0:-1:nk<Kk?hk<Kk?zl<Kk?il<Kk?mb<Kk?Yl<Kk?Db<Kk?dr<Kk?Lr<Kk?fb<Kk?0:-1:0:-1:pu<Kk?gb<Kk?0:-1:0:-1:yr<Kk?Wr<Kk?Te<Kk?Bu<Kk?0:-1:0:-1:GD<Kk?So<Kk?0:-1:0:-1:Ik<Kk?Xc<Kk?Ga<Kk?Ul<Kk?Ba<Kk?Dk<Kk?0:-1:0:-1:Ms<Kk?Ck<Kk?0:-1:0:-1:Pv<Kk?Jl<Kk?lr<Kk?Iv<Kk?0:-1:0:-1:wl<Kk?bl<Kk?0:-1:0:-1:ot<Kk?Vo<Kk?ue<Kk?ye<Kk?al<Kk?n<Kk?mc<Kk?wi<Kk?0:-1:0:-1:fs<Kk?Et<Kk?0:-1:0:-1:ar<Kk?on<Kk?Zu<Kk?_u<Kk?0:-1:0:-1:$v<Kk?ws<Kk?0:-1:0:-1:nD<Kk?ae<Kk?mo<Kk?Yn<Kk?Df<Kk?Ye<Kk?0:-1:0:-1:Rn<Kk?Wb<Kk?0:-1:0:-1:pl<Kk?vi<Kk?JD<Kk?Qs<Kk?0:-1:0:-1:Fc<Kk?Ft<Kk?0:-1:0:-1:Cd(eqr,Kk+aD|0)-1|0:-1;if(3<Qk>>>0)Gr=Q1r(t);else switch(Qk){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var Zk=cat(H1r(t));if(2<Zk>>>0)Gr=Q1r(t);else switch(Zk){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,76);var rp=Jnt(H1r(t));Gr=0===rp?p(t):1===rp?m(t):Q1r(t)}break;default:K1r(t,87);var tp=oat(H1r(t));if(2<tp>>>0)Gr=Q1r(t);else switch(tp){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var ep=wat(H1r(t));if(2<ep>>>0)Gr=Q1r(t);else switch(ep){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,77);var np=Jnt(H1r(t));Gr=0===np?p(t):1===np?m(t):Q1r(t)}}}break;case 3:K1r(t,87);var up=H1r(t),ap=35<up?Al<up?ie<up?Qf<up?-1:Cl<up?Zt<up?Ea<up?pi<up?ds<up?pv<up?Or<up?He<up?0:-1:0:-1:ro<up?vc<up?0:-1:0:-1:Ob<up?sk<up?wv<up?Bl<up?0:-1:0:-1:me<up?ta<up?0:-1:0:-1:Os<up?gs<up?Gs<up?nv<up?Il<up?Se<up?Un<up?We<up?rf<up?ek<up?_s<up?MD<up?$i<up?Uo<up?sn<up?yD<up?0:-1:0:-1:Wc<up?Hu<up?0:-1:0:-1:Ic<up?it<up?Jo<up?ec<up?0:-1:0:-1:ol<up?zv<up?0:-1:0:-1:x<up?_v<up?Sv<up?Q<up?yf<up?ln<up?0:-1:0:-1:Vt<up?rb<up?0:-1:0:-1:Po<up?Gu<up?Jc<up?qt<up?0:-1:0:-1:Ei<up?Hs<up?0:-1:0:-1:Dl<up?jc<up?fi<up?tt<up?Wo<up?uc<up?Rr<up?Nu<up?0:-1:0:-1:yl<up?gv<up?0:-1:0:-1:os<up?Zc<up?an<up?gD<up?0:-1:0:-1:ru<up?zc<up?0:-1:0:-1:Jt<up?bi<up?Zo<up?Ur<up?zf<up?Ks<up?0:-1:0:-1:au<up?mr<up?0:-1:0:-1:xD<up?Wf<up?xo<up?Ao<up?0:-1:0:-1:QD<up?AD<up?0:-1:0:-1:wf<up?xk<up?Ql<up?$a<up?Wa<up?qa<up?zt<up?br<up?wb<up?qc<up?0:-1:0:-1:Pt<up?Ps<up?0:-1:0:-1:Wt<up?ha<up?vf<up?Er<up?0:-1:0:-1:Zr<up?xc<up?0:-1:0:-1:ua<up?jn<up?Uc<up?Kr<up?ke<up?zn<up?0:-1:0:-1:rs<up?Ho<up?0:-1:0:-1:dk<up?pf<up?uo<up?qu<up?0:-1:0:-1:$<up?wu<up?0:-1:0:-1:If<up?DD<up?Ub<up?Kn<up?ir<up?Pi<up?cn<up?Co<up?0:-1:0:-1:Ac<up?Qn<up?0:-1:0:-1:tn<up?Ls<up?Cr<up?hv<up?0:-1:0:-1:Wi<up?Gb<up?0:-1:0:-1:ct<up?oo<up?tc<up?e<up?Ee<up?Y<up?0:-1:0:-1:Ze<up?sa<up?0:-1:0:-1:sf<up?Ha<up?Uf<up?vt<up?0:-1:0:-1:La<up?Fv<up?0:-1:0:-1:ao<up?o<up?vu<up?Zn<up?xi<up?fe<up?Bi<up?Zs<up?HD<up?zo<up?pe<up?Tk<up?0:-1:0:-1:gi<up?ts<up?0:-1:0:-1:ps<up?hf<up?As<up?pa<up?0:-1:0:-1:as<up?Cb<up?0:-1:0:-1:jf<up?gt<up?Mu<up?ok<up?Xo<up?Ji<up?0:-1:0:-1:D<up?Yv<up?0:-1:0:-1:Lf<up?$s<up?Vl<up?Fb<up?0:-1:0:-1:Ab<up?ED<up?0:-1:0:-1:Oe<up?g<up?wk<up?Dv<up?Mo<up?_<up?Ti<up?Ve<up?0:-1:0:-1:Hl<up?An<up?0:-1:0:-1:ai<up?Hb<up?Yf<up?er<up?0:-1:0:-1:fc<up?Xl<up?0:-1:0:-1:Bv<up?_e<up?le<up?hD<up?Pf<up?Ge<up?0:-1:0:-1:Dt<up?Io<up?0:-1:0:-1:cs<up?KD<up?eu<up?hi<up?0:-1:0:-1:Js<up?Tr<up?0:-1:0:-1:Hc<up?Ma<up?mu<up?Jf<up?Af<up?Ki<up?dc<up?qi<up?hu<up?Aa<up?0:-1:0:-1:$u<up?Ak<up?0:-1:0:-1:cc<up?mf<up?Rs<up?wr<up?0:-1:0:-1:yv<up?eo<up?0:-1:0:-1:jr<up?ND<up?ck<up?Ui<up?Ar<up?Vs<up?0:-1:0:-1:Bn<up?F<up?0:-1:0:-1:Qe<up?_c<up?cr<up?Vv<up?0:-1:0:-1:ub<up?Ai<up?0:-1:0:-1:Ra<up?nn<up?bu<up?ja<up?be<up?Es<up?Fl<up?Ri<up?0:-1:0:-1:nr<up?zD<up?0:-1:0:-1:Vc<up?rD<up?Br<up?gu<up?0:-1:0:-1:qn<up?iD<up?0:-1:0:-1:Fo<up?oi<up?lt<up?av<up?xu<up?$D<up?0:-1:0:-1:It<up?zs<up?0:-1:0:-1:Ju<up?Qb<up?Do<up?VD<up?0:-1:0:-1:Ot<up?Yb<up?0:-1:0:-1:fa<up?Ne<up?Sl<up?Xi<up?rc<up?Mk<up?jb<up?ri<up?$f<up?Nv<up?Nb<up?Hi<up?$b<up?Kt<up?0:-1:0:-1:Ir<up?C<up?0:-1:0:-1:we<up?Ht<up?Lt<up?Sf<up?0:-1:0:-1:bk<up?_l<up?0:-1:0:-1:Uv<up?gc<up?gr<up?cv<up?hc<up?u<up?0:-1:0:-1:et<up?uv<up?0:-1:0:-1:ht<up?Bk<up?Ds<up?zb<up?0:-1:0:-1:Ua<up?ml<up?0:-1:0:-1:Lk<up?_D<up?Su<up?ma<up?ob<up?wc<up?Kl<up?tb<up?0:-1:0:-1:ii<up?dl<up?0:-1:0:-1:wn<up?Za<up?Ko<up?iu<up?0:-1:0:-1:tv<up?l<up?0:-1:0:-1:oc<up?mt<up?jt<up?Sc<up?Sn<up?Bs<up?0:-1:0:-1:zr<up?Ja<up?0:-1:0:-1:nu<up?hs<up?eD<up?Ro<up?0:-1:0:-1:rk<up?pt<up?0:-1:0:-1:Gv<up?Xf<up?ca<up?lf<up?Pa<up?Is<up?c<up?Bb<up?nb<up?T<up?0:-1:0:-1:Da<up?ui<up?0:-1:0:-1:vD<up?co<up?Ku<up?Wu<up?0:-1:0:-1:Rl<up?Gf<up?0:-1:0:-1:du<up?Ni<up?mi<up?Kf<up?hl<up?se<up?0:-1:0:-1:vv<up?Yu<up?0:-1:0:-1:$n<up?bn<up?da<up?Ek<up?0:-1:0:-1:d<up?oa<up?0:-1:0:-1:Mf<up?ul<up?TD<up?ni<up?mv<up?Fr<up?lk<up?Gc<up?0:-1:0:-1:dD<up?H<up?0:-1:0:-1:Rk<up?ji<up?yn<up?Sr<up?0:-1:0:-1:Qr<up?Xe<up?0:-1:0:-1:Kv<up?rv<up?Ln<up?gl<up?OD<up?P<up?0:-1:0:-1:Lc<up?i<up?0:-1:0:-1:WD<up?Wv<up?pb<up?ys<up?0:-1:0:-1:v<up?aa<up?0:-1:0:-1:ea<up?hb<up?a<up?Qu<up?wt<up?Ae<up?Nr<up?xr<up?Nc<up?kD<up?ve<up?ms<up?0:-1:0:-1:nc<up?Ca<up?0:-1:0:-1:Du<up?eb<up?To<up?tD<up?0:-1:0:-1:of<up?lu<up?0:-1:0:-1:w<up?fr<up?Kc<up?ZD<up?rl<up?Qv<up?0:-1:0:-1:Vb<up?Oo<up?0:-1:0:-1:Jr<up?Go<up?Pb<up?fu<up?0:-1:0:-1:ti<up?Mt<up?0:-1:0:-1:Fe<up?Mi<up?_i<up?Je<up?sr<up?Ol<up?Xv<up?dn<up?0:-1:0:-1:Bf<up?vr<up?0:-1:0:-1:ge<up?Ml<up?Jn<up?On<up?0:-1:0:-1:Cc<up?Sb<up?0:-1:0:-1:k<up?PD<up?$e<up?$l<up?oD<up?io<up?0:-1:0:-1:nf<up?El<up?0:-1:0:-1:qe<up?BD<up?qs<up?vs<up?0:-1:0:-1:lD<up?cu<up?0:-1:0:-1:nk<up?hk<up?zl<up?il<up?mb<up?Yl<up?Db<up?dr<up?Lr<up?fb<up?0:-1:0:-1:pu<up?gb<up?0:-1:0:-1:yr<up?Wr<up?Te<up?Bu<up?0:-1:0:-1:GD<up?So<up?0:-1:0:-1:Ik<up?Xc<up?Ga<up?Ul<up?Ba<up?Dk<up?0:-1:0:-1:Ms<up?Ck<up?0:-1:0:-1:Pv<up?Jl<up?lr<up?Iv<up?0:-1:0:-1:wl<up?bl<up?0:-1:0:-1:ot<up?Vo<up?ue<up?ye<up?al<up?n<up?mc<up?wi<up?0:-1:0:-1:fs<up?Et<up?0:-1:0:-1:ar<up?on<up?Zu<up?_u<up?0:-1:0:-1:$v<up?ws<up?0:-1:0:-1:nD<up?ae<up?mo<up?Yn<up?Df<up?Ye<up?0:-1:0:-1:Rn<up?Wb<up?0:-1:0:-1:pl<up?vi<up?JD<up?Qs<up?0:-1:0:-1:Fc<up?Ft<up?0:-1:0:-1:Cd(YGr,up+aD|0)-1|0:-1;if(3<ap>>>0)Gr=Q1r(t);else switch(ap){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var ip=Bnt(H1r(t));if(2<ip>>>0)Gr=Q1r(t);else switch(ip){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,78);var fp=Jnt(H1r(t));Gr=0===fp?p(t):1===fp?m(t):Q1r(t)}break;default:K1r(t,79);var cp=Jnt(H1r(t));Gr=0===cp?p(t):1===cp?m(t):Q1r(t)}break;default:K1r(t,87);var sp=Unt(H1r(t));if(2<sp>>>0)Gr=Q1r(t);else switch(sp){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var op=Bnt(H1r(t));if(2<op>>>0)Gr=Q1r(t);else switch(op){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,80);var vp=oat(H1r(t));if(2<vp>>>0)Gr=Q1r(t);else switch(vp){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var lp=sat(H1r(t));if(2<lp>>>0)Gr=Q1r(t);else switch(lp){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,81);var bp=Jnt(H1r(t));Gr=0===bp?p(t):1===bp?m(t):Q1r(t)}}}}}break;case 47:K1r(t,87);var Dp=H1r(t),kp=35<Dp?Al<Dp?ie<Dp?Qf<Dp?-1:Cl<Dp?Zt<Dp?Ea<Dp?pi<Dp?ds<Dp?pv<Dp?Or<Dp?He<Dp?0:-1:0:-1:ro<Dp?vc<Dp?0:-1:0:-1:Ob<Dp?sk<Dp?wv<Dp?Bl<Dp?0:-1:0:-1:me<Dp?ta<Dp?0:-1:0:-1:Os<Dp?gs<Dp?Gs<Dp?nv<Dp?Il<Dp?Se<Dp?Un<Dp?We<Dp?rf<Dp?ek<Dp?_s<Dp?MD<Dp?$i<Dp?Uo<Dp?sn<Dp?yD<Dp?0:-1:0:-1:Wc<Dp?Hu<Dp?0:-1:0:-1:Ic<Dp?it<Dp?Jo<Dp?ec<Dp?0:-1:0:-1:ol<Dp?zv<Dp?0:-1:0:-1:x<Dp?_v<Dp?Sv<Dp?Q<Dp?yf<Dp?ln<Dp?0:-1:0:-1:Vt<Dp?rb<Dp?0:-1:0:-1:Po<Dp?Gu<Dp?Jc<Dp?qt<Dp?0:-1:0:-1:Ei<Dp?Hs<Dp?0:-1:0:-1:Dl<Dp?jc<Dp?fi<Dp?tt<Dp?Wo<Dp?uc<Dp?Rr<Dp?Nu<Dp?0:-1:0:-1:yl<Dp?gv<Dp?0:-1:0:-1:os<Dp?Zc<Dp?an<Dp?gD<Dp?0:-1:0:-1:ru<Dp?zc<Dp?0:-1:0:-1:Jt<Dp?bi<Dp?Zo<Dp?Ur<Dp?zf<Dp?Ks<Dp?0:-1:0:-1:au<Dp?mr<Dp?0:-1:0:-1:xD<Dp?Wf<Dp?xo<Dp?Ao<Dp?0:-1:0:-1:QD<Dp?AD<Dp?0:-1:0:-1:wf<Dp?xk<Dp?Ql<Dp?$a<Dp?Wa<Dp?qa<Dp?zt<Dp?br<Dp?wb<Dp?qc<Dp?0:-1:0:-1:Pt<Dp?Ps<Dp?0:-1:0:-1:Wt<Dp?ha<Dp?vf<Dp?Er<Dp?0:-1:0:-1:Zr<Dp?xc<Dp?0:-1:0:-1:ua<Dp?jn<Dp?Uc<Dp?Kr<Dp?ke<Dp?zn<Dp?0:-1:0:-1:rs<Dp?Ho<Dp?0:-1:0:-1:dk<Dp?pf<Dp?uo<Dp?qu<Dp?0:-1:0:-1:$<Dp?wu<Dp?0:-1:0:-1:If<Dp?DD<Dp?Ub<Dp?Kn<Dp?ir<Dp?Pi<Dp?cn<Dp?Co<Dp?0:-1:0:-1:Ac<Dp?Qn<Dp?0:-1:0:-1:tn<Dp?Ls<Dp?Cr<Dp?hv<Dp?0:-1:0:-1:Wi<Dp?Gb<Dp?0:-1:0:-1:ct<Dp?oo<Dp?tc<Dp?e<Dp?Ee<Dp?Y<Dp?0:-1:0:-1:Ze<Dp?sa<Dp?0:-1:0:-1:sf<Dp?Ha<Dp?Uf<Dp?vt<Dp?0:-1:0:-1:La<Dp?Fv<Dp?0:-1:0:-1:ao<Dp?o<Dp?vu<Dp?Zn<Dp?xi<Dp?fe<Dp?Bi<Dp?Zs<Dp?HD<Dp?zo<Dp?pe<Dp?Tk<Dp?0:-1:0:-1:gi<Dp?ts<Dp?0:-1:0:-1:ps<Dp?hf<Dp?As<Dp?pa<Dp?0:-1:0:-1:as<Dp?Cb<Dp?0:-1:0:-1:jf<Dp?gt<Dp?Mu<Dp?ok<Dp?Xo<Dp?Ji<Dp?0:-1:0:-1:D<Dp?Yv<Dp?0:-1:0:-1:Lf<Dp?$s<Dp?Vl<Dp?Fb<Dp?0:-1:0:-1:Ab<Dp?ED<Dp?0:-1:0:-1:Oe<Dp?g<Dp?wk<Dp?Dv<Dp?Mo<Dp?_<Dp?Ti<Dp?Ve<Dp?0:-1:0:-1:Hl<Dp?An<Dp?0:-1:0:-1:ai<Dp?Hb<Dp?Yf<Dp?er<Dp?0:-1:0:-1:fc<Dp?Xl<Dp?0:-1:0:-1:Bv<Dp?_e<Dp?le<Dp?hD<Dp?Pf<Dp?Ge<Dp?0:-1:0:-1:Dt<Dp?Io<Dp?0:-1:0:-1:cs<Dp?KD<Dp?eu<Dp?hi<Dp?0:-1:0:-1:Js<Dp?Tr<Dp?0:-1:0:-1:Hc<Dp?Ma<Dp?mu<Dp?Jf<Dp?Af<Dp?Ki<Dp?dc<Dp?qi<Dp?hu<Dp?Aa<Dp?0:-1:0:-1:$u<Dp?Ak<Dp?0:-1:0:-1:cc<Dp?mf<Dp?Rs<Dp?wr<Dp?0:-1:0:-1:yv<Dp?eo<Dp?0:-1:0:-1:jr<Dp?ND<Dp?ck<Dp?Ui<Dp?Ar<Dp?Vs<Dp?0:-1:0:-1:Bn<Dp?F<Dp?0:-1:0:-1:Qe<Dp?_c<Dp?cr<Dp?Vv<Dp?0:-1:0:-1:ub<Dp?Ai<Dp?0:-1:0:-1:Ra<Dp?nn<Dp?bu<Dp?ja<Dp?be<Dp?Es<Dp?Fl<Dp?Ri<Dp?0:-1:0:-1:nr<Dp?zD<Dp?0:-1:0:-1:Vc<Dp?rD<Dp?Br<Dp?gu<Dp?0:-1:0:-1:qn<Dp?iD<Dp?0:-1:0:-1:Fo<Dp?oi<Dp?lt<Dp?av<Dp?xu<Dp?$D<Dp?0:-1:0:-1:It<Dp?zs<Dp?0:-1:0:-1:Ju<Dp?Qb<Dp?Do<Dp?VD<Dp?0:-1:0:-1:Ot<Dp?Yb<Dp?0:-1:0:-1:fa<Dp?Ne<Dp?Sl<Dp?Xi<Dp?rc<Dp?Mk<Dp?jb<Dp?ri<Dp?$f<Dp?Nv<Dp?Nb<Dp?Hi<Dp?$b<Dp?Kt<Dp?0:-1:0:-1:Ir<Dp?C<Dp?0:-1:0:-1:we<Dp?Ht<Dp?Lt<Dp?Sf<Dp?0:-1:0:-1:bk<Dp?_l<Dp?0:-1:0:-1:Uv<Dp?gc<Dp?gr<Dp?cv<Dp?hc<Dp?u<Dp?0:-1:0:-1:et<Dp?uv<Dp?0:-1:0:-1:ht<Dp?Bk<Dp?Ds<Dp?zb<Dp?0:-1:0:-1:Ua<Dp?ml<Dp?0:-1:0:-1:Lk<Dp?_D<Dp?Su<Dp?ma<Dp?ob<Dp?wc<Dp?Kl<Dp?tb<Dp?0:-1:0:-1:ii<Dp?dl<Dp?0:-1:0:-1:wn<Dp?Za<Dp?Ko<Dp?iu<Dp?0:-1:0:-1:tv<Dp?l<Dp?0:-1:0:-1:oc<Dp?mt<Dp?jt<Dp?Sc<Dp?Sn<Dp?Bs<Dp?0:-1:0:-1:zr<Dp?Ja<Dp?0:-1:0:-1:nu<Dp?hs<Dp?eD<Dp?Ro<Dp?0:-1:0:-1:rk<Dp?pt<Dp?0:-1:0:-1:Gv<Dp?Xf<Dp?ca<Dp?lf<Dp?Pa<Dp?Is<Dp?c<Dp?Bb<Dp?nb<Dp?T<Dp?0:-1:0:-1:Da<Dp?ui<Dp?0:-1:0:-1:vD<Dp?co<Dp?Ku<Dp?Wu<Dp?0:-1:0:-1:Rl<Dp?Gf<Dp?0:-1:0:-1:du<Dp?Ni<Dp?mi<Dp?Kf<Dp?hl<Dp?se<Dp?0:-1:0:-1:vv<Dp?Yu<Dp?0:-1:0:-1:$n<Dp?bn<Dp?da<Dp?Ek<Dp?0:-1:0:-1:d<Dp?oa<Dp?0:-1:0:-1:Mf<Dp?ul<Dp?TD<Dp?ni<Dp?mv<Dp?Fr<Dp?lk<Dp?Gc<Dp?0:-1:0:-1:dD<Dp?H<Dp?0:-1:0:-1:Rk<Dp?ji<Dp?yn<Dp?Sr<Dp?0:-1:0:-1:Qr<Dp?Xe<Dp?0:-1:0:-1:Kv<Dp?rv<Dp?Ln<Dp?gl<Dp?OD<Dp?P<Dp?0:-1:0:-1:Lc<Dp?i<Dp?0:-1:0:-1:WD<Dp?Wv<Dp?pb<Dp?ys<Dp?0:-1:0:-1:v<Dp?aa<Dp?0:-1:0:-1:ea<Dp?hb<Dp?a<Dp?Qu<Dp?wt<Dp?Ae<Dp?Nr<Dp?xr<Dp?Nc<Dp?kD<Dp?ve<Dp?ms<Dp?0:-1:0:-1:nc<Dp?Ca<Dp?0:-1:0:-1:Du<Dp?eb<Dp?To<Dp?tD<Dp?0:-1:0:-1:of<Dp?lu<Dp?0:-1:0:-1:w<Dp?fr<Dp?Kc<Dp?ZD<Dp?rl<Dp?Qv<Dp?0:-1:0:-1:Vb<Dp?Oo<Dp?0:-1:0:-1:Jr<Dp?Go<Dp?Pb<Dp?fu<Dp?0:-1:0:-1:ti<Dp?Mt<Dp?0:-1:0:-1:Fe<Dp?Mi<Dp?_i<Dp?Je<Dp?sr<Dp?Ol<Dp?Xv<Dp?dn<Dp?0:-1:0:-1:Bf<Dp?vr<Dp?0:-1:0:-1:ge<Dp?Ml<Dp?Jn<Dp?On<Dp?0:-1:0:-1:Cc<Dp?Sb<Dp?0:-1:0:-1:k<Dp?PD<Dp?$e<Dp?$l<Dp?oD<Dp?io<Dp?0:-1:0:-1:nf<Dp?El<Dp?0:-1:0:-1:qe<Dp?BD<Dp?qs<Dp?vs<Dp?0:-1:0:-1:lD<Dp?cu<Dp?0:-1:0:-1:nk<Dp?hk<Dp?zl<Dp?il<Dp?mb<Dp?Yl<Dp?Db<Dp?dr<Dp?Lr<Dp?fb<Dp?0:-1:0:-1:pu<Dp?gb<Dp?0:-1:0:-1:yr<Dp?Wr<Dp?Te<Dp?Bu<Dp?0:-1:0:-1:GD<Dp?So<Dp?0:-1:0:-1:Ik<Dp?Xc<Dp?Ga<Dp?Ul<Dp?Ba<Dp?Dk<Dp?0:-1:0:-1:Ms<Dp?Ck<Dp?0:-1:0:-1:Pv<Dp?Jl<Dp?lr<Dp?Iv<Dp?0:-1:0:-1:wl<Dp?bl<Dp?0:-1:0:-1:ot<Dp?Vo<Dp?ue<Dp?ye<Dp?al<Dp?n<Dp?mc<Dp?wi<Dp?0:-1:0:-1:fs<Dp?Et<Dp?0:-1:0:-1:ar<Dp?on<Dp?Zu<Dp?_u<Dp?0:-1:0:-1:$v<Dp?ws<Dp?0:-1:0:-1:nD<Dp?ae<Dp?mo<Dp?Yn<Dp?Df<Dp?Ye<Dp?0:-1:0:-1:Rn<Dp?Wb<Dp?0:-1:0:-1:pl<Dp?vi<Dp?JD<Dp?Qs<Dp?0:-1:0:-1:Fc<Dp?Ft<Dp?0:-1:0:-1:Cd(WGr,Dp+aD|0)-1|0:-1;if(3<kp>>>0)Gr=Q1r(t);else switch(kp){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var pp=vut(H1r(t));if(2<pp>>>0)Gr=Q1r(t);else switch(pp){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,82);var dp=Jnt(H1r(t));Gr=0===dp?p(t):1===dp?m(t):Q1r(t)}break;default:K1r(t,87);var wp=bat(H1r(t));if(2<wp>>>0)Gr=Q1r(t);else switch(wp){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var hp=Ont(H1r(t));if(2<hp>>>0)Gr=Q1r(t);else switch(hp){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,83);var mp=Jnt(H1r(t));Gr=0===mp?p(t):1===mp?m(t):Q1r(t)}}}break;case 48:K1r(t,87);var Fp=H1r(t),yp=35<Fp?Al<Fp?ie<Fp?Qf<Fp?-1:Cl<Fp?Zt<Fp?Ea<Fp?pi<Fp?ds<Fp?pv<Fp?Or<Fp?He<Fp?0:-1:0:-1:ro<Fp?vc<Fp?0:-1:0:-1:Ob<Fp?sk<Fp?wv<Fp?Bl<Fp?0:-1:0:-1:me<Fp?ta<Fp?0:-1:0:-1:Os<Fp?gs<Fp?Gs<Fp?nv<Fp?Il<Fp?Se<Fp?Un<Fp?We<Fp?rf<Fp?ek<Fp?_s<Fp?MD<Fp?$i<Fp?Uo<Fp?sn<Fp?yD<Fp?0:-1:0:-1:Wc<Fp?Hu<Fp?0:-1:0:-1:Ic<Fp?it<Fp?Jo<Fp?ec<Fp?0:-1:0:-1:ol<Fp?zv<Fp?0:-1:0:-1:x<Fp?_v<Fp?Sv<Fp?Q<Fp?yf<Fp?ln<Fp?0:-1:0:-1:Vt<Fp?rb<Fp?0:-1:0:-1:Po<Fp?Gu<Fp?Jc<Fp?qt<Fp?0:-1:0:-1:Ei<Fp?Hs<Fp?0:-1:0:-1:Dl<Fp?jc<Fp?fi<Fp?tt<Fp?Wo<Fp?uc<Fp?Rr<Fp?Nu<Fp?0:-1:0:-1:yl<Fp?gv<Fp?0:-1:0:-1:os<Fp?Zc<Fp?an<Fp?gD<Fp?0:-1:0:-1:ru<Fp?zc<Fp?0:-1:0:-1:Jt<Fp?bi<Fp?Zo<Fp?Ur<Fp?zf<Fp?Ks<Fp?0:-1:0:-1:au<Fp?mr<Fp?0:-1:0:-1:xD<Fp?Wf<Fp?xo<Fp?Ao<Fp?0:-1:0:-1:QD<Fp?AD<Fp?0:-1:0:-1:wf<Fp?xk<Fp?Ql<Fp?$a<Fp?Wa<Fp?qa<Fp?zt<Fp?br<Fp?wb<Fp?qc<Fp?0:-1:0:-1:Pt<Fp?Ps<Fp?0:-1:0:-1:Wt<Fp?ha<Fp?vf<Fp?Er<Fp?0:-1:0:-1:Zr<Fp?xc<Fp?0:-1:0:-1:ua<Fp?jn<Fp?Uc<Fp?Kr<Fp?ke<Fp?zn<Fp?0:-1:0:-1:rs<Fp?Ho<Fp?0:-1:0:-1:dk<Fp?pf<Fp?uo<Fp?qu<Fp?0:-1:0:-1:$<Fp?wu<Fp?0:-1:0:-1:If<Fp?DD<Fp?Ub<Fp?Kn<Fp?ir<Fp?Pi<Fp?cn<Fp?Co<Fp?0:-1:0:-1:Ac<Fp?Qn<Fp?0:-1:0:-1:tn<Fp?Ls<Fp?Cr<Fp?hv<Fp?0:-1:0:-1:Wi<Fp?Gb<Fp?0:-1:0:-1:ct<Fp?oo<Fp?tc<Fp?e<Fp?Ee<Fp?Y<Fp?0:-1:0:-1:Ze<Fp?sa<Fp?0:-1:0:-1:sf<Fp?Ha<Fp?Uf<Fp?vt<Fp?0:-1:0:-1:La<Fp?Fv<Fp?0:-1:0:-1:ao<Fp?o<Fp?vu<Fp?Zn<Fp?xi<Fp?fe<Fp?Bi<Fp?Zs<Fp?HD<Fp?zo<Fp?pe<Fp?Tk<Fp?0:-1:0:-1:gi<Fp?ts<Fp?0:-1:0:-1:ps<Fp?hf<Fp?As<Fp?pa<Fp?0:-1:0:-1:as<Fp?Cb<Fp?0:-1:0:-1:jf<Fp?gt<Fp?Mu<Fp?ok<Fp?Xo<Fp?Ji<Fp?0:-1:0:-1:D<Fp?Yv<Fp?0:-1:0:-1:Lf<Fp?$s<Fp?Vl<Fp?Fb<Fp?0:-1:0:-1:Ab<Fp?ED<Fp?0:-1:0:-1:Oe<Fp?g<Fp?wk<Fp?Dv<Fp?Mo<Fp?_<Fp?Ti<Fp?Ve<Fp?0:-1:0:-1:Hl<Fp?An<Fp?0:-1:0:-1:ai<Fp?Hb<Fp?Yf<Fp?er<Fp?0:-1:0:-1:fc<Fp?Xl<Fp?0:-1:0:-1:Bv<Fp?_e<Fp?le<Fp?hD<Fp?Pf<Fp?Ge<Fp?0:-1:0:-1:Dt<Fp?Io<Fp?0:-1:0:-1:cs<Fp?KD<Fp?eu<Fp?hi<Fp?0:-1:0:-1:Js<Fp?Tr<Fp?0:-1:0:-1:Hc<Fp?Ma<Fp?mu<Fp?Jf<Fp?Af<Fp?Ki<Fp?dc<Fp?qi<Fp?hu<Fp?Aa<Fp?0:-1:0:-1:$u<Fp?Ak<Fp?0:-1:0:-1:cc<Fp?mf<Fp?Rs<Fp?wr<Fp?0:-1:0:-1:yv<Fp?eo<Fp?0:-1:0:-1:jr<Fp?ND<Fp?ck<Fp?Ui<Fp?Ar<Fp?Vs<Fp?0:-1:0:-1:Bn<Fp?F<Fp?0:-1:0:-1:Qe<Fp?_c<Fp?cr<Fp?Vv<Fp?0:-1:0:-1:ub<Fp?Ai<Fp?0:-1:0:-1:Ra<Fp?nn<Fp?bu<Fp?ja<Fp?be<Fp?Es<Fp?Fl<Fp?Ri<Fp?0:-1:0:-1:nr<Fp?zD<Fp?0:-1:0:-1:Vc<Fp?rD<Fp?Br<Fp?gu<Fp?0:-1:0:-1:qn<Fp?iD<Fp?0:-1:0:-1:Fo<Fp?oi<Fp?lt<Fp?av<Fp?xu<Fp?$D<Fp?0:-1:0:-1:It<Fp?zs<Fp?0:-1:0:-1:Ju<Fp?Qb<Fp?Do<Fp?VD<Fp?0:-1:0:-1:Ot<Fp?Yb<Fp?0:-1:0:-1:fa<Fp?Ne<Fp?Sl<Fp?Xi<Fp?rc<Fp?Mk<Fp?jb<Fp?ri<Fp?$f<Fp?Nv<Fp?Nb<Fp?Hi<Fp?$b<Fp?Kt<Fp?0:-1:0:-1:Ir<Fp?C<Fp?0:-1:0:-1:we<Fp?Ht<Fp?Lt<Fp?Sf<Fp?0:-1:0:-1:bk<Fp?_l<Fp?0:-1:0:-1:Uv<Fp?gc<Fp?gr<Fp?cv<Fp?hc<Fp?u<Fp?0:-1:0:-1:et<Fp?uv<Fp?0:-1:0:-1:ht<Fp?Bk<Fp?Ds<Fp?zb<Fp?0:-1:0:-1:Ua<Fp?ml<Fp?0:-1:0:-1:Lk<Fp?_D<Fp?Su<Fp?ma<Fp?ob<Fp?wc<Fp?Kl<Fp?tb<Fp?0:-1:0:-1:ii<Fp?dl<Fp?0:-1:0:-1:wn<Fp?Za<Fp?Ko<Fp?iu<Fp?0:-1:0:-1:tv<Fp?l<Fp?0:-1:0:-1:oc<Fp?mt<Fp?jt<Fp?Sc<Fp?Sn<Fp?Bs<Fp?0:-1:0:-1:zr<Fp?Ja<Fp?0:-1:0:-1:nu<Fp?hs<Fp?eD<Fp?Ro<Fp?0:-1:0:-1:rk<Fp?pt<Fp?0:-1:0:-1:Gv<Fp?Xf<Fp?ca<Fp?lf<Fp?Pa<Fp?Is<Fp?c<Fp?Bb<Fp?nb<Fp?T<Fp?0:-1:0:-1:Da<Fp?ui<Fp?0:-1:0:-1:vD<Fp?co<Fp?Ku<Fp?Wu<Fp?0:-1:0:-1:Rl<Fp?Gf<Fp?0:-1:0:-1:du<Fp?Ni<Fp?mi<Fp?Kf<Fp?hl<Fp?se<Fp?0:-1:0:-1:vv<Fp?Yu<Fp?0:-1:0:-1:$n<Fp?bn<Fp?da<Fp?Ek<Fp?0:-1:0:-1:d<Fp?oa<Fp?0:-1:0:-1:Mf<Fp?ul<Fp?TD<Fp?ni<Fp?mv<Fp?Fr<Fp?lk<Fp?Gc<Fp?0:-1:0:-1:dD<Fp?H<Fp?0:-1:0:-1:Rk<Fp?ji<Fp?yn<Fp?Sr<Fp?0:-1:0:-1:Qr<Fp?Xe<Fp?0:-1:0:-1:Kv<Fp?rv<Fp?Ln<Fp?gl<Fp?OD<Fp?P<Fp?0:-1:0:-1:Lc<Fp?i<Fp?0:-1:0:-1:WD<Fp?Wv<Fp?pb<Fp?ys<Fp?0:-1:0:-1:v<Fp?aa<Fp?0:-1:0:-1:ea<Fp?hb<Fp?a<Fp?Qu<Fp?wt<Fp?Ae<Fp?Nr<Fp?xr<Fp?Nc<Fp?kD<Fp?ve<Fp?ms<Fp?0:-1:0:-1:nc<Fp?Ca<Fp?0:-1:0:-1:Du<Fp?eb<Fp?To<Fp?tD<Fp?0:-1:0:-1:of<Fp?lu<Fp?0:-1:0:-1:w<Fp?fr<Fp?Kc<Fp?ZD<Fp?rl<Fp?Qv<Fp?0:-1:0:-1:Vb<Fp?Oo<Fp?0:-1:0:-1:Jr<Fp?Go<Fp?Pb<Fp?fu<Fp?0:-1:0:-1:ti<Fp?Mt<Fp?0:-1:0:-1:Fe<Fp?Mi<Fp?_i<Fp?Je<Fp?sr<Fp?Ol<Fp?Xv<Fp?dn<Fp?0:-1:0:-1:Bf<Fp?vr<Fp?0:-1:0:-1:ge<Fp?Ml<Fp?Jn<Fp?On<Fp?0:-1:0:-1:Cc<Fp?Sb<Fp?0:-1:0:-1:k<Fp?PD<Fp?$e<Fp?$l<Fp?oD<Fp?io<Fp?0:-1:0:-1:nf<Fp?El<Fp?0:-1:0:-1:qe<Fp?BD<Fp?qs<Fp?vs<Fp?0:-1:0:-1:lD<Fp?cu<Fp?0:-1:0:-1:nk<Fp?hk<Fp?zl<Fp?il<Fp?mb<Fp?Yl<Fp?Db<Fp?dr<Fp?Lr<Fp?fb<Fp?0:-1:0:-1:pu<Fp?gb<Fp?0:-1:0:-1:yr<Fp?Wr<Fp?Te<Fp?Bu<Fp?0:-1:0:-1:GD<Fp?So<Fp?0:-1:0:-1:Ik<Fp?Xc<Fp?Ga<Fp?Ul<Fp?Ba<Fp?Dk<Fp?0:-1:0:-1:Ms<Fp?Ck<Fp?0:-1:0:-1:Pv<Fp?Jl<Fp?lr<Fp?Iv<Fp?0:-1:0:-1:wl<Fp?bl<Fp?0:-1:0:-1:ot<Fp?Vo<Fp?ue<Fp?ye<Fp?al<Fp?n<Fp?mc<Fp?wi<Fp?0:-1:0:-1:fs<Fp?Et<Fp?0:-1:0:-1:ar<Fp?on<Fp?Zu<Fp?_u<Fp?0:-1:0:-1:$v<Fp?ws<Fp?0:-1:0:-1:nD<Fp?ae<Fp?mo<Fp?Yn<Fp?Df<Fp?Ye<Fp?0:-1:0:-1:Rn<Fp?Wb<Fp?0:-1:0:-1:pl<Fp?vi<Fp?JD<Fp?Qs<Fp?0:-1:0:-1:Fc<Fp?Ft<Fp?0:-1:0:-1:Cd(hqr,Fp+aD|0)-1|0:-1;if(3<yp>>>0)Gr=Q1r(t);else switch(yp){case 0:Gr=p(t);break;case 1:Gr=m(t);break;case 2:K1r(t,87);var Ep=bat(H1r(t));if(2<Ep>>>0)Gr=Q1r(t);else switch(Ep){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var _p=_ut(H1r(t));if(2<_p>>>0)Gr=Q1r(t);else switch(_p){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var gp=Bnt(H1r(t));if(2<gp>>>0)Gr=Q1r(t);else switch(gp){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,84);var Cp=Jnt(H1r(t));Gr=0===Cp?p(t):1===Cp?m(t):Q1r(t)}}}break;default:K1r(t,87);var Sp=Yut(H1r(t));if(2<Sp>>>0)Gr=Q1r(t);else switch(Sp){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var xp=pat(H1r(t));if(2<xp>>>0)Gr=Q1r(t);else switch(xp){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,85);var Tp=Jnt(H1r(t));Gr=0===Tp?p(t):1===Tp?m(t):Q1r(t)}}}break;case 49:K1r(t,87);var Ap=bat(H1r(t));if(2<Ap>>>0)Gr=Q1r(t);else switch(Ap){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Bp=Bnt(H1r(t));if(2<Bp>>>0)Gr=Q1r(t);else switch(Bp){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Ip=_ut(H1r(t));if(2<Ip>>>0)Gr=Q1r(t);else switch(Ip){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,87);var Op=Ont(H1r(t));if(2<Op>>>0)Gr=Q1r(t);else switch(Op){case 0:Gr=p(t);break;case 1:Gr=m(t);break;default:K1r(t,86);var Pp=Jnt(H1r(t));Gr=0===Pp?p(t):1===Pp?m(t):Q1r(t)}}}}break;case 50:Gr=89;break;case 51:K1r(t,135);var Np=H1r(t),Lp=60<Np?124<Np?-1:Cd(gzr,Np+J|0)-1|0:-1;Gr=0===Lp?126:1===Lp?105:Q1r(t);break;case 52:Gr=90;break;default:Gr=139}if(147<Gr>>>0)return TQr(FJr);var Rp=Gr;if(74<=Rp){if(111<=Rp)switch(Rp){case 111:return[0,r,90];case 112:return[0,r,108];case 113:return[0,r,109];case 114:return[0,r,69];case 115:return[0,r,97];case 116:return[0,r,68];case 117:return[0,r,67];case 118:return[0,r,99];case 119:return[0,r,98];case 120:return[0,r,78];case 121:return[0,r,77];case 122:return[0,r,75];case 123:return[0,r,76];case 124:return[0,r,73];case 125:return[0,r,72];case 126:return[0,r,71];case 127:return[0,r,70];case 128:return[0,r,95];case 129:return[0,r,96];case 130:return[0,r,ra];case 131:return[0,r,ju];case 132:return[0,r,kb];case 133:return[0,r,Eu];case 134:return[0,r,105];case 135:return[0,r,86];case 136:return[0,r,88];case 137:return[0,r,87];case 138:return[0,r,106];case 139:return[0,r,107];case 140:return[0,r,79];case 141:return[0,r,11];case 142:return[0,r,74];case 143:return[0,r,Au];case 144:return[0,r,13];case 145:return[0,r,14];case 146:return[0,r[4]?xat(r,Cat(r,t),4):r,De];default:return[0,Aat(r,Cat(r,t)),[6,k2r(t)]]}switch(Rp){case 74:return[0,r,51];case 75:return[0,r,20];case 76:return[0,r,21];case 77:return[0,r,22];case 78:return[0,r,31];case 79:return[0,r,23];case 80:return[0,r,61];case 81:return[0,r,46];case 82:return[0,r,24];case 83:return[0,r,47];case 84:return[0,r,25];case 85:return[0,r,26];case 86:return[0,r,58];case 87:var Mp=Cat(r,t),Up=k2r(t),Xp=Mat(r,Up);return[0,Xp[1],[4,Mp,Xp[2],Up]];case 88:var Jp=Cat(r,t),Gp=k2r(t);return[0,r,[4,Jp,Gp,Gp]];case 89:return[0,r,0];case 90:return[0,r,1];case 91:return[0,r,4];case 92:return[0,r,5];case 93:return[0,r,6];case 94:return[0,r,7];case 95:return[0,r,12];case 96:return[0,r,10];case 97:return[0,r,8];case 98:return[0,r,9];case 99:return[0,r,83];case 100:Z1r(t),$1r(t);var qp=H1r(t);return 0===(0===(62<qp?63<qp?-1:0:-1)?0:Q1r(t))?[0,r,82]:TQr(CJr);case 101:return[0,r,80];case 102:return[0,r,81];case 103:return[0,r,82];case 104:return[0,r,85];case 105:return[0,r,84];case 106:return[0,r,91];case 107:return[0,r,92];case 108:return[0,r,93];case 109:return[0,r,94];default:return[0,r,89]}}if(37<=Rp)switch(Rp){case 37:return[0,r,65];case 38:return[0,r,32];case 39:return[0,r,33];case 40:return[0,r,34];case 41:return[0,r,40];case 42:return[0,r,27];case 43:return[0,r,35];case 44:return[0,r,59];case 45:return[0,r,60];case 46:return[0,r,36];case 47:return[0,r,45];case 48:return[0,r,37];case 49:return[0,r,43];case 50:return[0,r,48];case 51:return[0,r,49];case 52:return[0,r,41];case 53:return[0,r,30];case 54:return[0,r,38];case 55:return[0,r,39];case 56:return[0,r,15];case 57:return[0,r,16];case 58:return[0,r,52];case 59:return[0,r,50];case 60:return[0,r,17];case 61:return[0,r,18];case 62:return[0,r,53];case 63:return[0,r,28];case 64:return[0,r,44];case 65:return[0,r,29];case 66:return[0,r,63];case 67:return[0,r,62];case 68:return[0,r,54];case 69:return[0,r,55];case 70:return[0,r,56];case 71:return[0,r,57];case 72:return[0,r,19];default:return[0,r,42]}switch(Rp){case 0:return[2,Bat(r,t)];case 1:return[2,Aat(r,Cat(r,t))];case 2:return[2,r];case 3:var zp=_at(r,t),Vp=gZr(Yc),Wp=Uat(r,Vp,t),Yp=Wp[1];return[1,Yp,Oat(Yp,zp,Wp[2],Vp,1)];case 4:var Hp=k2r(t);if(r[5]){var $p=r[4]?Tat(r,Cat(r,t),Hp):r,Kp=ynt(1,$p),Qp=e2r(t);return gd(D2r(t,Qp-1|0,1),yJr)&&Sd(D2r(t,Qp-2|0,1),EJr)?[0,Kp,83]:[2,Kp]}var Zp=_at(r,t),rd=gZr(Yc);TZr(rd,lZr(Hp,2,jp(Hp)-2|0));var td=Uat(r,rd,t),ed=td[1];return[1,ed,Oat(ed,Zp,td[2],rd,1)];case 5:return r[4]?[2,ynt(0,r)]:(Z1r(t),$1r(t),0===(0===Cut(H1r(t))?0:Q1r(t))?[0,r,kb]:TQr(_Jr));case 6:var nd=_at(r,t),ud=gZr(Yc),ad=Xat(r,ud,t),id=ad[1];return[1,id,Oat(id,nd,ad[2],ud,0)];case 7:return 0===r2r(t)?[2,Xat(r,gZr(Yc),t)[1]]:[0,r,gJr];case 8:var fd=k2r(t),cd=_at(r,t),sd=gZr(Yc),od=gZr(Yc);TZr(od,fd);var vd=Gat(r,fd,sd,od,0,t),ld=vd[1],bd=[0,ld[1],cd,vd[2]],Dd=vd[3],kd=CZr(od);return[0,ld,[2,[0,bd,CZr(sd),kd,Dd]]];case 9:var pd=gZr(Yc),dd=gZr(Yc),wd=gZr(Yc);TZr(wd,k2r(t));var hd=_at(r,t),md=qat(r,pd,dd,wd,t),Fd=md[1],yd=gat(Fd,t),Ed=[0,Fd[1],hd,yd],_d=md[2],xd=CZr(wd),Td=CZr(dd);return[0,Fd,[3,[0,Ed,[0,CZr(pd),Td,xd],_d]]];case 10:return jat(r,t,(function(r,t){if($1r(t),0===mut(H1r(t)))if(0===lut(H1r(t)))if(0===tut(H1r(t)))for(;;){var e=Hnt(H1r(t));if(2<e>>>0)var n=Q1r(t);else switch(e){case 0:continue;case 1:r:for(;;){if(0===tut(H1r(t)))for(;;){var u=Hnt(H1r(t));if(2<u>>>0)var a=Q1r(t);else switch(u){case 0:continue;case 1:continue r;default:a=0}break}else a=Q1r(t);n=a;break}break;default:n=0}break}else n=Q1r(t);else n=Q1r(t);else n=Q1r(t);return 0===n?[0,r,[1,0,k2r(t)]]:TQr(mJr)}));case 11:return[0,r,[1,0,k2r(t)]];case 12:return jat(r,t,(function(r,t){if($1r(t),0===mut(H1r(t)))if(0===lut(H1r(t)))if(0===tut(H1r(t)))for(;;){K1r(t,0);var e=Ynt(H1r(t));if(0!==e){if(1===e)r:for(;;){if(0===tut(H1r(t)))for(;;){K1r(t,0);var n=Ynt(H1r(t));if(0!==n){if(1===n)continue r;var u=Q1r(t);break}}else u=Q1r(t);var a=u;break}else a=Q1r(t);break}}else a=Q1r(t);else a=Q1r(t);else a=Q1r(t);return 0===a?[0,r,[0,0,k2r(t)]]:TQr(hJr)}));case 13:return[0,r,[0,0,k2r(t)]];case 14:return jat(r,t,(function(r,t){if($1r(t),0===mut(H1r(t)))if(0===gut(H1r(t)))if(0===put(H1r(t)))for(;;){var e=sut(H1r(t));if(2<e>>>0)var n=Q1r(t);else switch(e){case 0:continue;case 1:r:for(;;){if(0===put(H1r(t)))for(;;){var u=sut(H1r(t));if(2<u>>>0)var a=Q1r(t);else switch(u){case 0:continue;case 1:continue r;default:a=0}break}else a=Q1r(t);n=a;break}break;default:n=0}break}else n=Q1r(t);else n=Q1r(t);else n=Q1r(t);return 0===n?[0,r,[1,1,k2r(t)]]:TQr(wJr)}));case 15:return[0,r,[1,1,k2r(t)]];case 16:return jat(r,t,(function(r,t){if($1r(t),0===mut(H1r(t)))if(0===gut(H1r(t)))if(0===put(H1r(t)))for(;;){K1r(t,0);var e=eut(H1r(t));if(0!==e){if(1===e)r:for(;;){if(0===put(H1r(t)))for(;;){K1r(t,0);var n=eut(H1r(t));if(0!==n){if(1===n)continue r;var u=Q1r(t);break}}else u=Q1r(t);var a=u;break}else a=Q1r(t);break}}else a=Q1r(t);else a=Q1r(t);else a=Q1r(t);return 0===a?[0,r,[0,3,k2r(t)]]:TQr(dJr)}));case 17:return[0,r,[0,3,k2r(t)]];case 18:return jat(r,t,(function(r,t){if($1r(t),0===mut(H1r(t)))for(;;){var e=H1r(t),n=47<e?57<e?-1:Cd(dzr,e+Tl|0)-1|0:-1;if(0!==n){if(1===n){for(;;)if(K1r(t,0),0!==Int(H1r(t))){var u=Q1r(t);break}}else u=Q1r(t);break}}else u=Q1r(t);return 0===u?[0,r,[0,2,k2r(t)]]:TQr(pJr)}));case 19:return[0,r,[0,2,k2r(t)]];case 20:return jat(r,t,(function(r,t){if($1r(t),0===mut(H1r(t)))if(0===put(H1r(t))){for(;;)if(K1r(t,0),0!==put(H1r(t))){var e=Q1r(t);break}}else e=Q1r(t);else e=Q1r(t);return 0===e?[0,r,[0,1,k2r(t)]]:TQr(kJr)}));case 21:return[0,r,[0,1,k2r(t)]];case 22:return jat(r,t,(function(r,t){if($1r(t),0===mut(H1r(t)))if(0===Mnt(H1r(t)))if(0===Pnt(H1r(t)))for(;;){var e=$nt(H1r(t));if(2<e>>>0)var n=Q1r(t);else switch(e){case 0:continue;case 1:r:for(;;){if(0===Pnt(H1r(t)))for(;;){var u=$nt(H1r(t));if(2<u>>>0)var a=Q1r(t);else switch(u){case 0:continue;case 1:continue r;default:a=0}break}else a=Q1r(t);n=a;break}break;default:n=0}break}else n=Q1r(t);else n=Q1r(t);else n=Q1r(t);return 0===n?[0,r,[1,2,k2r(t)]]:TQr(DJr)}));case 24:return jat(r,t,(function(r,t){if($1r(t),0===mut(H1r(t)))if(0===Mnt(H1r(t)))if(0===Pnt(H1r(t)))for(;;){K1r(t,0);var e=Rut(H1r(t));if(0!==e){if(1===e)r:for(;;){if(0===Pnt(H1r(t)))for(;;){K1r(t,0);var n=Rut(H1r(t));if(0!==n){if(1===n)continue r;var u=Q1r(t);break}}else u=Q1r(t);var a=u;break}else a=Q1r(t);break}}else a=Q1r(t);else a=Q1r(t);else a=Q1r(t);return 0===a?[0,r,[0,4,k2r(t)]]:TQr(bJr)}));case 26:return jat(r,t,(function(r,t){function e(r){for(;;){var t=Nnt(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:continue;case 1:r:for(;;){if(0===Int(H1r(r)))for(;;){var e=Nnt(H1r(r));if(2<e>>>0)return Q1r(r);switch(e){case 0:continue;case 1:continue r;default:return 0}}return Q1r(r)}default:return 0}}}function n(r){for(;;){var t=cut(H1r(r));if(0!==t)return 1===t?0:Q1r(r)}}function u(r){var t=lat(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:var u=nut(H1r(r));return 0===u?n(r):1===u?e(r):Q1r(r);case 1:return n(r);default:return e(r)}}function a(r){var t=xut(H1r(r));if(0===t)for(;;){var e=vat(H1r(r));if(2<e>>>0)return Q1r(r);switch(e){case 0:continue;case 1:return u(r);default:r:for(;;){if(0===Int(H1r(r)))for(;;){var n=vat(H1r(r));if(2<n>>>0)return Q1r(r);switch(n){case 0:continue;case 1:return u(r);default:continue r}}return Q1r(r)}}}return 1===t?u(r):Q1r(r)}$1r(t);var i=jnt(H1r(t));if(2<i>>>0)var f=Q1r(t);else switch(i){case 0:if(0===Int(H1r(t)))for(;;){var c=vat(H1r(t));if(2<c>>>0)f=Q1r(t);else switch(c){case 0:continue;case 1:f=u(t);break;default:r:for(;;){if(0===Int(H1r(t)))for(;;){var s=vat(H1r(t));if(2<s>>>0)var o=Q1r(t);else switch(s){case 0:continue;case 1:o=u(t);break;default:continue r}break}else o=Q1r(t);f=o;break}}break}else f=Q1r(t);break;case 1:var v=Vnt(H1r(t));f=0===v?a(t):1===v?u(t):Q1r(t);break;default:for(;;){var l=Eut(H1r(t));if(2<l>>>0)f=Q1r(t);else switch(l){case 0:f=a(t);break;case 1:continue;default:f=u(t)}break}}return 0===f?[0,xat(r,Cat(r,t),21),[1,2,k2r(t)]]:TQr(lJr)}));case 27:return[0,xat(r,Cat(r,t),21),[1,2,k2r(t)]];case 28:return jat(r,t,(function(r,t){function e(r){for(;;){K1r(r,0);var t=$ut(H1r(r));if(0!==t){if(1===t)r:for(;;){if(0===Int(H1r(r)))for(;;){K1r(r,0);var e=$ut(H1r(r));if(0!==e){if(1===e)continue r;return Q1r(r)}}return Q1r(r)}return Q1r(r)}}}function n(r){for(;;)if(K1r(r,0),0!==Int(H1r(r)))return Q1r(r)}function u(r){var t=lat(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:var u=nut(H1r(r));return 0===u?n(r):1===u?e(r):Q1r(r);case 1:return n(r);default:return e(r)}}function a(r){var t=xut(H1r(r));if(0===t)for(;;){var e=vat(H1r(r));if(2<e>>>0)return Q1r(r);switch(e){case 0:continue;case 1:return u(r);default:r:for(;;){if(0===Int(H1r(r)))for(;;){var n=vat(H1r(r));if(2<n>>>0)return Q1r(r);switch(n){case 0:continue;case 1:return u(r);default:continue r}}return Q1r(r)}}}return 1===t?u(r):Q1r(r)}$1r(t);var i=jnt(H1r(t));if(2<i>>>0)var f=Q1r(t);else switch(i){case 0:if(0===Int(H1r(t)))for(;;){var c=vat(H1r(t));if(2<c>>>0)f=Q1r(t);else switch(c){case 0:continue;case 1:f=u(t);break;default:r:for(;;){if(0===Int(H1r(t)))for(;;){var s=vat(H1r(t));if(2<s>>>0)var o=Q1r(t);else switch(s){case 0:continue;case 1:o=u(t);break;default:continue r}break}else o=Q1r(t);f=o;break}}break}else f=Q1r(t);break;case 1:var v=Vnt(H1r(t));f=0===v?a(t):1===v?u(t):Q1r(t);break;default:for(;;){var l=Eut(H1r(t));if(2<l>>>0)f=Q1r(t);else switch(l){case 0:f=a(t);break;case 1:continue;default:f=u(t)}break}}return 0===f?[0,r,[0,4,k2r(t)]]:TQr(vJr)}));case 30:return jat(r,t,(function(r,t){function e(r){for(;;){var t=Nnt(H1r(r));if(2<t>>>0)return Q1r(r);switch(t){case 0:continue;case 1:r:for(;;){if(0===Int(H1r(r)))for(;;){var e=Nnt(H1r(r));if(2<e>>>0)return Q1r(r);switch(e){case 0:continue;case 1:continue r;default:return 0}}return Q1r(r)}default:return 0}}}function n(r){var t=cut(H1r(r));return 0===t?e(r):1===t?0:Q1r(r)}$1r(t);var u=jnt(H1r(t));if(2<u>>>0)var a=Q1r(t);else switch(u){case 0:a=0===Int(H1r(t))?e(t):Q1r(t);break;case 1:for(;;){var i=jut(H1r(t));if(0===i)a=n(t);else{if(1===i)continue;a=Q1r(t)}break}break;default:for(;;){var f=kat(H1r(t));if(2<f>>>0)a=Q1r(t);else switch(f){case 0:a=n(t);break;case 1:continue;default:r:for(;;){if(0===Int(H1r(t)))for(;;){var c=kat(H1r(t));if(2<c>>>0)var s=Q1r(t);else switch(c){case 0:s=n(t);break;case 1:continue;default:continue r}break}else s=Q1r(t);a=s;break}}break}}return 0===a?[0,xat(r,Cat(r,t),20),[1,2,k2r(t)]]:TQr(oJr)}));case 31:return jat(r,t,(function(r,t){$1r(t);var e=nut(H1r(t));if(0===e)for(;;){var n=cut(H1r(t));if(0!==n){var u=1===n?0:Q1r(t);break}}else if(1===e)for(;;){var a=Nnt(H1r(t));if(2<a>>>0)u=Q1r(t);else switch(a){case 0:continue;case 1:r:for(;;){if(0===Int(H1r(t)))for(;;){var i=Nnt(H1r(t));if(2<i>>>0)var f=Q1r(t);else switch(i){case 0:continue;case 1:continue r;default:f=0}break}else f=Q1r(t);u=f;break}break;default:u=0}break}else u=Q1r(t);return 0===u?[0,r,[1,2,k2r(t)]]:TQr(sJr)}));case 32:return[0,xat(r,Cat(r,t),20),[1,2,k2r(t)]];case 34:return jat(r,t,(function(r,t){function e(r){for(;;){K1r(r,0);var t=$ut(H1r(r));if(0!==t){if(1===t)r:for(;;){if(0===Int(H1r(r)))for(;;){K1r(r,0);var e=$ut(H1r(r));if(0!==e){if(1===e)continue r;return Q1r(r)}}return Q1r(r)}return Q1r(r)}}}function n(r){return K1r(r,0),0===Int(H1r(r))?e(r):Q1r(r)}$1r(t);var u=jnt(H1r(t));if(2<u>>>0)var a=Q1r(t);else switch(u){case 0:a=0===Int(H1r(t))?e(t):Q1r(t);break;case 1:for(;;){K1r(t,0);var i=jut(H1r(t));if(0===i)a=n(t);else{if(1===i)continue;a=Q1r(t)}break}break;default:for(;;){K1r(t,0);var f=kat(H1r(t));if(2<f>>>0)a=Q1r(t);else switch(f){case 0:a=n(t);break;case 1:continue;default:r:for(;;){if(0===Int(H1r(t)))for(;;){K1r(t,0);var c=kat(H1r(t));if(2<c>>>0)var s=Q1r(t);else switch(c){case 0:s=n(t);break;case 1:continue;default:continue r}break}else s=Q1r(t);a=s;break}}break}}return 0===a?[0,r,[0,4,k2r(t)]]:TQr(cJr)}));case 36:return[0,r,64];case 23:case 33:return[0,r,[1,2,k2r(t)]];default:return[0,r,[0,4,k2r(t)]]}})),Qat=mZr([0,DZr]),Zat=function(r,t){return[0,[0],0,t,mnt(r)]},rit=function(r,t){var e=t+1|0;if(r[1].length-1<e)for(var n=1;;){if(e<=n){r[1]=kZr(n,(function(t){var e=t<r[1].length-1?1:0;return e?cp(r[1],t)[t+1]:e}));break}n=2*n|0}for(;;){if(!(r[2]<=t))return 0;var u=r[4];switch(r[3]){case 0:var a=Nd(Kat,u);break;case 1:a=Nd($at,u);break;case 2:a=Nd(Yat,u);break;case 3:var i=gat(u,u[2]),f=gZr(Yc),c=gZr(Yc),s=u[2];$1r(s);var o=H1r(s),v=123<o?Of<o?1:zi<o?2:1:Cd(hzr,o+1|0)-1|0;if(5<v>>>0)var l=Q1r(s);else switch(v){case 0:l=1;break;case 1:l=4;break;case 2:l=0;break;case 3:K1r(s,0);l=0===Gut(H1r(s))?0:Q1r(s);break;case 4:l=2;break;default:l=3}if(4<l>>>0)var b=TQr(uJr);else switch(l){case 0:var D=k2r(s);TZr(c,D),TZr(f,D);var k=zat(Bat(u,s),2,f,c,s),p=gat(k,s),d=CZr(f),w=CZr(c);b=[0,k,[8,[0,[0,k[1],i,p],d,w]]];break;case 1:b=[0,u,De];break;case 2:b=[0,u,95];break;case 3:b=[0,u,0];break;default:Z1r(s);var h=zat(u,2,f,c,s),m=gat(h,s),F=CZr(f),y=CZr(c);b=[0,h,[8,[0,[0,h[1],i,m],F,y]]]}a=Sat([0,b[1],b[2],0]);break;case 4:a=Nd(Hat,u);break;default:a=Nd(Wat,u)}var E=a[1],_=mnt(E);r[4]=E;var g=r[2],C=[0,[0,_,a[2]]];cp(r[1],g)[g+1]=C,r[2]=r[2]+1|0}},tit=function(r,t,e,n){var u=r?r[1]:r,a=t?t[1]:t;try{var i=b2r(n),f=0}catch(t){if((t=Pd(t))!==j1r)throw t;var c=[0,[0,[0,e,Zd[2],Zd[3]],80],0];i=b2r(WVr),f=c}var s=a?a[1]:nw,o=function(r,t,e){return[0,r,t,YCr,0,e,rw]}(e,i,s[8]),v=[0,Zat(o,0)];return[0,[0,f],[0,0],Qat[1],[0,Qat[1]],[0,0],s[9],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[0,YVr],[0,o],v,[0,u],s,e,[0,0]]},eit=function(r){return WQr(r[22][1])},nit=function(r){return r[26][8]},uit=function(r,t){var e=t[2];r[1][1]=[0,[0,t[1],e],r[1][1]];var n=r[21];return n?Ld(n[1],r,e):n},ait=function(r,t){var e=t[2][1];if(gd(e,VVr))return 0;if(Ld(Qat[3],e,r[4][1]))return uit(r,[0,t[1],[17,e]]);var n=Ld(Qat[4],e,r[4][1]);return r[4][1]=n,0},iit=function(r,t){if(r<2){var e=t[24][1];rit(e,r);var n=cp(e[1],r)[r+1];return n?n[1][2]:TQr($Vr)}throw[0,Wd,GVr]},fit=function(r,t){return[0,t[1],t[2],t[3],t[4],t[5],r,t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15],t[16],t[17],t[18],t[19],t[20],t[21],t[22],t[23],t[24],t[25],t[26],t[27],t[28]]},cit=function(r,t){return[0,t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15],t[16],r,t[18],t[19],t[20],t[21],t[22],t[23],t[24],t[25],t[26],t[27],t[28]]},sit=function(r,t){return[0,t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15],t[16],t[17],r,t[19],t[20],t[21],t[22],t[23],t[24],t[25],t[26],t[27],t[28]]},oit=function(r,t){return[0,t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15],t[16],t[17],t[18],r,t[20],t[21],t[22],t[23],t[24],t[25],t[26],t[27],t[28]]},vit=function(r,t){return[0,t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15],t[16],t[17],t[18],t[19],r,t[21],t[22],t[23],t[24],t[25],t[26],t[27],t[28]]},lit=function(r,t){return[0,t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],r,t[15],t[16],t[17],t[18],t[19],t[20],t[21],t[22],t[23],t[24],t[25],t[26],t[27],t[28]]},bit=function(r,t){return[0,t[1],t[2],t[3],t[4],t[5],t[6],t[7],r,t[9],t[10],t[11],t[12],t[13],t[14],t[15],t[16],t[17],t[18],t[19],t[20],t[21],t[22],t[23],t[24],t[25],t[26],t[27],t[28]]},Dit=function(r,t){return[0,t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],r,t[13],t[14],t[15],t[16],t[17],t[18],t[19],t[20],t[21],t[22],t[23],t[24],t[25],t[26],t[27],t[28]]},kit=function(r,t){return[0,t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],r,t[16],t[17],t[18],t[19],t[20],t[21],t[22],t[23],t[24],t[25],t[26],t[27],t[28]]},pit=function(r,t){return[0,t[1],t[2],t[3],t[4],t[5],t[6],r,t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15],t[16],t[17],t[18],t[19],t[20],t[21],t[22],t[23],t[24],t[25],t[26],t[27],t[28]]},dit=function(r,t){return[0,t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],r,t[14],t[15],t[16],t[17],t[18],t[19],t[20],t[21],t[22],t[23],t[24],t[25],t[26],t[27],t[28]]},wit=function(r,t){return[0,t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15],t[16],t[17],t[18],t[19],t[20],[0,r],t[22],t[23],t[24],t[25],t[26],t[27],t[28]]},hit=function(r){function t(t){return uit(r,t)}return function(r){return ZQr(t,r)}},mit=function(r){var t=r[5][1];return t?[0,t[1][2]]:t},Fit=function(r){var t=r[5][1];return t?[0,t[1][1]]:t},yit=function(r){return[0,r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11],r[12],r[13],r[14],r[15],r[16],r[17],r[18],r[19],r[20],0,r[22],r[23],r[24],r[25],r[26],r[27],r[28]]},Eit=function(r,t,e){return[0,r[1],r[2],Qat[1],r[4],r[5],r[6],r[7],0,0,0,1,r[12],r[13],r[14],r[15],r[16],e,t,r[19],r[20],r[21],r[22],r[23],r[24],r[25],r[26],r[27],r[28]]},_it=function(r){return Sd(r,cVr)?0:1},git=function(r){if("number"==typeof r){if(48===r)return 1}else if(4===r[0]&&_it(r[3]))return 1;return 0},Cit=function(r){return Sd(r,rVr)&&Sd(r,tVr)&&Sd(r,eVr)&&Sd(r,nVr)&&Sd(r,uVr)&&Sd(r,aVr)&&Sd(r,iVr)&&Sd(r,fVr)?0:1},Sit=function(r){if("number"==typeof r)switch(r){case 42:case 52:case 53:case 54:case 55:case 56:case 57:case 58:return 1}else if(4===r[0]&&Cit(r[3]))return 1;return 0},xit=function(r){return Sd(r,Qzr)&&Sd(r,Zzr)?0:1},Tit=function(r){var t=vp(r,sVr);if(0<=t)if(0<t)var e=vp(r,SVr),n=0<=e?0<e&&Sd(r,LVr)&&Sd(r,RVr)&&Sd(r,MVr)&&Sd(r,jVr)&&Sd(r,UVr)&&Sd(r,XVr)&&Sd(r,JVr)?0:1:Sd(r,xVr)&&Sd(r,TVr)&&Sd(r,AVr)&&Sd(r,BVr)&&Sd(r,IVr)&&Sd(r,OVr)&&Sd(r,PVr)&&Sd(r,NVr)?0:1;else n=1;else{var u=vp(r,oVr);n=0<=u?0<u&&Sd(r,hVr)&&Sd(r,mVr)&&Sd(r,FVr)&&Sd(r,yVr)&&Sd(r,EVr)&&Sd(r,_Vr)&&Sd(r,gVr)&&Sd(r,CVr)?0:1:Sd(r,vVr)&&Sd(r,lVr)&&Sd(r,bVr)&&Sd(r,DVr)&&Sd(r,kVr)&&Sd(r,pVr)&&Sd(r,dVr)&&Sd(r,wVr)?0:1}var a=n?1:0;if(a)var i=a;else{var f=_it(r);if(f)i=f;else{if(Sd(r,Hzr)&&Sd(r,$zr)&&Sd(r,Kzr))return 0;i=1}}return i},Ait=function(r){var t=vp(r,Izr);return(0<=t?0<t&&Sd(r,Xzr)&&Sd(r,Jzr)&&Sd(r,Gzr)&&Sd(r,qzr)&&Sd(r,zzr)&&Sd(r,Vzr)&&Sd(r,Wzr)&&Sd(r,Yzr)?0:1:Sd(r,Ozr)&&Sd(r,Pzr)&&Sd(r,Nzr)&&Sd(r,Lzr)&&Sd(r,Rzr)&&Sd(r,Mzr)&&Sd(r,jzr)&&Sd(r,Uzr)?0:1)?1:0},Bit=function(r,t){return iit(r,t)[1]},Iit=function(r,t){return iit(r,t)[2]},Oit=function(r){return Bit(0,r)},Pit=function(r){return Iit(0,r)},Nit=function(r){var t=mit(r),e=t?t[1]:TQr(Bzr);return[0,e[1],e[3],e[3]]},Lit=function(r){return iit(0,r)[3]},Rit=function(r){return iit(0,r)[4]},Mit=function(r,t){var e=0<r?[0,Iit(r-1|0,t)]:mit(t);if(e)var n=e[1][2][1]<Iit(r,t)[2][1]?1:0;else n=e;return n},jit=function(r){return Mit(0,r)},Uit=function(r){var t=Oit(r);if("number"==typeof t){var e=t-2|0;if(107<e>>>0){if(!(109<(e+1|0)>>>0))return 1}else{var n=6!==e?1:0;if(!n)return n}}return jit(r)},Xit=function(r,t){var e=Bit(r,t);if(Sit(e))return 1;if(git(e))return 1;if("number"==typeof e)var n=0;else if(4===e[0])if(xit(e[3])){var u=1;n=1}else n=0;else n=0;if(!n)u=0;if(u)return 1;if("number"==typeof e)switch(e){case 14:case 28:case 60:case 61:case 62:case 63:case 64:case 65:var a=1;break;default:a=0}else a=4===e[0]?1:0;return a?1:0},Jit=function(r){return Xit(0,r)},Git=function(r){var t=15===Oit(r)?1:0;if(t)var e=t;else{var n=64===Oit(r)?1:0;if(n){var u=15===Bit(1,r)?1:0;if(u){var a=Iit(1,r)[2][1];e=Pit(r)[3][1]===a?1:0}else e=u}else e=n}return e},qit=function(r){var t=Oit(r);if("number"==typeof t&&(13===t?1:40===t?1:0))return 1;return 0},zit=function(r,t){return uit(r,[0,Pit(r),t])},Vit=function(r,t){var e=Lit(t);Nd(hit(t),e);var n=Oit(t);if(git(n))var u=0;else if(Sit(n))u=50;else{var a=Cnt(0,n);u=r?[10,a,r[1]]:[9,a]}return zit(t,u)},Wit=function(r){function t(t){return uit(r,[0,t[1],70])}return function(r){return ZQr(t,r)}},Yit=function(r,t){var e=r[6];return e?zit(r,t):e},Hit=function(r,t){var e=r[6];return e?uit(r,[0,t[1],t[2]]):e},$it=function(r,t){return uit(r,[0,t,[16,r[6]]])},Kit=function(r){var t=r[25][1];if(t){var e=eit(r),n=Oit(r),u=[0,Pit(r),n,e];Nd(t[1],u)}var a=r[24][1];rit(a,0);var i=cp(a[1],0)[1],f=i?i[1][1]:TQr(HVr);r[23][1]=f;var c=Lit(r);Nd(hit(r),c);var s=r[2][1],o=HQr(Rit(r),s);r[2][1]=o;var v=[0,iit(0,r)];r[5][1]=v;var l=r[24][1];rit(l,0),1<l[2]&&pZr(l[1],1,l[1],0,l[2]-1|0);var b=l[2]-1|0;return cp(l[1],b)[b+1]=0,l[2]=l[2]-1|0,0},Qit=function(r,t){r[22][1]=[0,t,r[22][1]];var e=eit(r),n=Zat(r[23][1],e);return r[24][1]=n,0},Zit=function(r){var t=r[22][1],e=t?t[2]:TQr(Azr);r[22][1]=e;var n=eit(r),u=Zat(r[23][1],n);return r[24][1]=u,0},rft=function(r,t){var e=r?r[1]:xzr,n=1-Uit(t);return n?8===Oit(t)?Kit(t):Vit([0,e],t):n},tft=function(r,t){return Vit([0,Cnt(Szr,t)],r)},eft=function(r,t){return md(Oit(r),t)&&tft(r,t),Kit(r)},nft=function(r,t){var e=Oit(r);return("number"==typeof e?0:4===e[0]&&gd(e[3],t)?1:0)||Vit([0,Nd(o0r(Czr),t)],r),Kit(r)},uft=function(r,t){var e=kp(Oit(r),t);return e?(Kit(r),1):e},aft=[bc,KVr,_p()],ift=function(r,t,e){if(e){var n=e[1],u=n[1];if(t[25][1]=[0,u],r)for(var a=n[2][2];;){if(!a)return 0;var i=a[2];Nd(u,a[1]);a=i}var f=r}else f=e;return f},fft=function(r,t){var e=function(r){var t=r[25][1];if(t){var e=[0,0,0,0],n=[0,function(r){var t=[0,r,0],n=e[3];return n?(e[1]=e[1]+1|0,n[2]=t,e[3]=t,0):(e[1]=1,e[2]=t,e[3]=t,0)}];r[25][1]=n;var u=[0,[0,t[1],e]]}else u=t;return[0,r[1][1],r[2][1],r[5][1],r[22][1],r[23][1],u]}(r);try{return function(r,t,e){return ift(1,r,t[6]),[0,e]}(r,e,Nd(t,r))}catch(t){if((t=Pd(t))===aft)return function(r,t){ift(0,r,t[6]),r[1][1]=t[1],r[2][1]=t[2],r[5][1]=t[3],r[22][1]=t[4],r[23][1]=t[5];var e=eit(r),n=Zat(r[23][1],e);return r[24][1]=n,0}(r,e);throw t}},cft=function(r,t,e){var n=fft(r,e);return n?n[1]:t},sft=function(r){var t=Pit(r),e=Rit(r),n=Oit(r);if("number"==typeof n)switch(n){case 15:var u=QVr,a=1;break;case 16:u=ZVr,a=1;break;case 17:u=rWr,a=1;break;case 18:u=tWr,a=1;break;case 19:u=eWr,a=1;break;case 20:u=nWr,a=1;break;case 21:u=uWr,a=1;break;case 22:u=aWr,a=1;break;case 23:u=iWr,a=1;break;case 24:u=fWr,a=1;break;case 25:u=cWr,a=1;break;case 26:u=sWr,a=1;break;case 27:u=oWr,a=1;break;case 28:u=vWr,a=1;break;case 29:u=lWr,a=1;break;case 30:u=bWr,a=1;break;case 31:u=DWr,a=1;break;case 32:u=kWr,a=1;break;case 33:u=pWr,a=1;break;case 34:u=dWr,a=1;break;case 35:u=wWr,a=1;break;case 36:u=hWr,a=1;break;case 37:u=mWr,a=1;break;case 38:u=FWr,a=1;break;case 39:u=yWr,a=1;break;case 40:u=EWr,a=1;break;case 41:u=_Wr,a=1;break;case 42:u=gWr,a=1;break;case 43:u=CWr,a=1;break;case 44:u=SWr,a=1;break;case 45:u=xWr,a=1;break;case 46:u=TWr,a=1;break;case 47:u=AWr,a=1;break;case 48:u=BWr,a=1;break;case 49:u=IWr,a=1;break;case 50:u=OWr,a=1;break;case 51:u=PWr,a=1;break;case 52:u=NWr,a=1;break;case 53:u=LWr,a=1;break;case 54:u=RWr,a=1;break;case 55:u=MWr,a=1;break;case 56:u=jWr,a=1;break;case 57:u=UWr,a=1;break;case 58:u=XWr,a=1;break;case 59:u=JWr,a=1;break;case 60:u=GWr,a=1;break;case 61:u=qWr,a=1;break;case 62:u=zWr,a=1;break;case 63:u=VWr,a=1;break;case 64:u=WWr,a=1;break;case 65:u=YWr,a=1;break;case 111:u=HWr,a=1;break;case 112:u=$Wr,a=1;break;case 113:u=KWr,a=1;break;case 114:u=QWr,a=1;break;case 115:u=ZWr,a=1;break;case 116:u=rYr,a=1;break;case 117:u=tYr,a=1;break;default:a=0}else switch(n[0]){case 4:u=n[2],a=1;break;case 9:if(0===n[1])u=nYr,a=1;else u=eYr,a=1;break;default:a=0}if(!a){Vit(uYr,r);u=aYr}return Kit(r),[0,t,[0,u,bnt([0,e],[0,Rit(r)],0)]]},oft=function(r){for(var t=r;;){var e=t[2];if("number"==typeof e||25!==e[0])return 0;var n=e[1][2],u=n[2];if("number"!=typeof u&&21===u[0])return 1;t=n}},vft=function(r,t,e){var n=r?r[1]:Pit(e),u=Nd(t,e),a=mit(e);return[0,a?cnt(n,a[1]):n,u]},lft=mZr([0,DZr]),bft=mZr([0,DZr]),Dft=FZr([0,DZr]),kft=function(r){return[0,Nit(r)]},pft=mZr([0,DZr]),dft=mZr([0,function(r,t){var e=t[1],n=r[1],u=e[1],a=n[1];if(a)if(u){var i=u[1],f=a[1],c=g2r(i),s=g2r(f)-c|0;if(0===s)var o=_2r(i),v=vp(_2r(f),o);else v=s}else v=-1;else v=u?1:0;if(0===v)var l=snt(n[2],e[2]),b=0===l?snt(n[3],e[3]):l;else b=v;return 0===b?bp(r[2],t[2]):b}]),wft=Ld(P1r,fQr,iQr),hft=function(r){function t(r){var t=Pit(r),e=Oit(r);if("number"==typeof e){if(ra===e)return Kit(r),[0,[0,t,0]];if(ju===e)return Kit(r),[0,[0,t,1]]}return 0}var e=function r(t){return r.fun(t)},n=function r(t){return r.fun(t)},u=function r(t){return r.fun(t)},a=function r(t,e){return r.fun(t,e)},i=function r(t){return r.fun(t)},f=function r(t,e){return r.fun(t,e)},c=function r(t){return r.fun(t)},s=function r(t,e){return r.fun(t,e)},o=function r(t){return r.fun(t)},v=function r(t){return r.fun(t)},l=function r(t,e){return r.fun(t,e)},b=function r(t){return r.fun(t)},D=function r(t){return r.fun(t)},k=function r(t){return r.fun(t)},p=function r(t,e){return r.fun(t,e)},d=function r(t){return r.fun(t)},w=function r(t){return r.fun(t)},h=function r(t){return r.fun(t)},m=function r(t){return r.fun(t)},F=function r(t){return r.fun(t)},y=function r(t){return r.fun(t)},E=function r(t){return r.fun(t)},_=function r(t,e,n,u){return r.fun(t,e,n,u)},g=function r(t,e,n,u){return r.fun(t,e,n,u)},C=function r(t){return r.fun(t)},S=function r(t){return r.fun(t)},x=function r(t){return r.fun(t)},T=function r(t){return r.fun(t)},A=function r(t){return r.fun(t)},B=function r(t){return r.fun(t)},I=function r(t,e){return r.fun(t,e)},O=function r(t,e){return r.fun(t,e)},P=function r(t){return r.fun(t)};function N(r){var t=Bit(1,r);return"number"!=typeof t||1<(t+so|0)>>>0?Ld(p,r,Nd(e,r)):Nd(d,r)}function L(r,t,n){return vft([0,t],(function(r){var t=Nd(h,r);return eft(r,83),[0,n,t,Nd(e,r)]}),r)}function R(r,t,e,n){var u=L(r,t,Nd(T,r)),a=[0,u[1],[1,u[2]]];return[0,[0,a[1],[0,n,[0,a],0,0!==e?1:0,0,1,0]]]}function M(r,t,n,u,a,i){return 1-nit(r)&&zit(r,10),[0,vft([0,t],(function(r){var t=uft(r,82);return eft(r,83),[0,i,[0,Nd(e,r)],t,0!==u?1:0,0!==a?1:0,0,n]}),r)]}function j(r,t){var e=Oit(t);if("number"==typeof e&&!(10<=e))switch(e){case 1:if(!r)return 0;break;case 3:if(r)return 0;break;case 8:case 9:return Kit(t)}return Vit(0,t)}function U(r,t){return t?uit(r,[0,t[1][1],5]):t}function X(r,t){return t?uit(r,[0,t[1],7]):t}function J(t){eft(t,66);var e=4===Oit(t)?1:0;if(e){eft(t,4),Qit(t,0);var n=Nd(r[9],t);Zit(t),eft(t,5);var u=[0,n]}else u=e;return u}Xk(e,(function(r){return Nd(u,r)})),Xk(n,(function(r){return 1-nit(r)&&zit(r,10),vft(0,(function(r){return eft(r,83),Nd(e,r)}),r)})),Xk(u,(function(r){return uft(r,86),Ld(a,r,Nd(i,r))})),Xk(a,(function(r,t){if(86===Oit(r)){var e=[0,t,0];return vft([0,t[1]],(function(r){for(var t=e;;){var n=Oit(r);if("number"!=typeof n||86!==n){var u=$Qr(t);if(u){var a=u[2];if(a)return[6,u[1],a[1],a[2]]}throw[0,Wd,jYr]}eft(r,86);t=[0,Nd(i,r),t]}}),r)}return t})),Xk(i,(function(r){return uft(r,88),Ld(f,r,Nd(c,r))})),Xk(f,(function(r,t){if(88===Oit(r)){var e=[0,t,0];return vft([0,t[1]],(function(r){for(var t=e;;){var n=Oit(r);if("number"!=typeof n||88!==n){var u=$Qr(t);if(u){var a=u[2];if(a)return[7,u[1],a[1],a[2]]}throw[0,Wd,MYr]}eft(r,88);t=[0,Nd(c,r),t]}}),r)}return t})),Xk(c,(function(r){return Ld(s,r,Nd(o,r))})),Xk(s,(function(r,t){var e=Oit(r);if("number"==typeof e&&11===e&&!r[15]){var n=Ld(p,r,t);return Md(_,r,n[1],0,[0,n[1],[0,[0,n,0],0]])}return t})),Xk(o,(function(r){var t=Oit(r);return"number"==typeof t&&82===t?vft(0,(function(r){return eft(r,82),[0,Nd(o,r)]}),r):Nd(v,r)})),Xk(v,(function(r){return Ld(l,r,Nd(b,r))})),Xk(l,(function(r,t){if(!jit(r)&&uft(r,6)){return Ld(l,r,vft([0,t[1]],(function(r){return eft(r,7),[4,t]}),r))}return t})),Xk(b,(function(r){var t=Pit(r),e=Oit(r);if("number"==typeof e)switch(e){case 4:return Nd(y,r);case 6:return Nd(k,r);case 46:return vft(0,(function(r){return eft(r,46),[8,Nd(b,r)]}),r);case 53:return vft(0,(function(r){return eft(r,53),[3,Nd(C,r)]}),r);case 95:return Nd(E,r);case 103:return eft(r,kb),[0,t,9];case 42:var n=1;break;case 0:case 2:var u=Md(g,0,1,1,r);return[0,u[1],[2,u[2]]];case 30:case 31:return eft(r,e),[0,t,[13,31===e?1:0]];default:n=0}else switch(e[0]){case 2:var a=e[1],i=a[4],f=a[3],c=a[2],s=a[1];return i&&Yit(r,41),eft(r,[2,[0,s,c,f,i]]),[0,s,[10,[0,c,f]]];case 10:var o=e[3],v=e[2],l=e[1];return eft(r,[10,l,v,o]),1===l&&Yit(r,41),[0,t,[11,[0,v,o]]];case 11:var p=e[3],d=e[2];return eft(r,[11,e[1],d,p]),[0,t,[12,[0,d,p]]];case 4:n=1;break;default:n=0}if(n){var w=Nd(B,r);return[0,w[1],[5,w[2]]]}var h=Nd(D,e);return h?(eft(r,e),[0,t,h[1]]):(Vit(0,r),[0,t,0])})),Xk(D,(function(r){if("number"==typeof r)switch(r){case 29:return TYr;case 111:return AYr;case 112:return BYr;case 113:return IYr;case 114:return OYr;case 115:return PYr;case 116:return NYr;case 117:return LYr}else if(9===r[0])return RYr;return 0})),Xk(k,(function(r){return vft(0,(function(r){eft(r,6);for(var t=kit(0,r),n=0;;){var u=Oit(t);if("number"==typeof u)if(7===u?1:De===u?1:0){var a=$Qr(n);return eft(r,7),[9,a]}var i=[0,Nd(e,t),n];7!==Oit(t)&&eft(t,9);n=i}}),r)})),Xk(p,(function(r,t){return[0,t[1],[0,0,t,0]]})),Xk(d,(function(t){return vft(0,(function(t){var n=Ld(r[13],0,t);1-nit(t)&&zit(t,10);var u=uft(t,82);return eft(t,83),[0,[0,n],Nd(e,t),u]}),t)})),Xk(w,(function(r){return function(t){for(var e=t;;){var n=Oit(r);if("number"==typeof n){var u=n-5|0;if(7<u>>>0?105===u?1:0:5<(u-1|0)>>>0?1:0){var a=12===n?1:0,i=a?[0,vft(0,(function(r){return eft(r,12),[0,N(r)]}),r)]:a;return[0,$Qr(e),i]}}var f=[0,N(r),e];5!==Oit(r)&&eft(r,9);e=f}}})),Xk(h,(function(r){return vft(0,(function(r){eft(r,4);var t=Ld(w,r,0);return eft(r,5),t}),r)})),Xk(m,(function(r){eft(r,4);var t=kit(0,r),n=Oit(t);if("number"==typeof n)switch(n){case 5:var u=xYr,a=2;break;case 42:a=1;break;case 12:case 110:u=[0,Ld(w,t,0)],a=2;break;default:a=0}else a=4===n[0]?1:0;switch(a){case 0:if(Nd(D,n)){var i=Bit(1,t);if("number"==typeof i)if(1<(i+so|0)>>>0)var f=0;else{var c=[0,Ld(w,t,0)];f=1}else f=0;if(!f)c=[1,Nd(e,t)];var s=c}else s=[1,Nd(e,t)];u=s;break;case 1:u=Nd(F,t)}if(0===u[0])var o=u;else{var v=u[1];if(r[15])var l=u;else{var b=Oit(r);if("number"==typeof b)if(5===b)if(11===Bit(1,r))var k=[0,Ld(w,r,[0,Ld(p,r,v),0])],d=1;else k=[1,v],d=1;else if(9===b){eft(r,9);k=[0,Ld(w,r,[0,Ld(p,r,v),0])],d=1}else d=0;else d=0;if(!d)k=u;l=k}o=l}return eft(r,5),o})),Xk(F,(function(r){var t=Bit(1,r);return"number"!=typeof t||1<(t+so|0)>>>0?[1,Ld(a,r,Ld(f,r,Ld(s,r,Ld(l,r,Ld(O,r,Nd(S,r))))))]:[0,Ld(w,r,0)]})),Xk(y,(function(r){var t=Pit(r),e=vft(0,m,r),n=e[2];return 0===n[0]?Md(_,r,t,0,[0,e[1],n[1]]):n[1]})),Xk(E,(function(r){var t=Pit(r),e=Nd(T,r);return Md(_,r,t,e,Nd(h,r))})),Xk(_,(function(r,t,n,u){return vft([0,t],(function(r){return eft(r,11),[1,[0,n,u,Nd(e,r)]]}),r)})),Xk(g,(function(n,u,a,i){var f=u?2===Oit(i)?1:0:u,c=u?1-f:u;return vft(0,(function(u){eft(u,f?2:f);var i=kit(0,u),s=gYr;r:for(;;){var o=s[2],v=s[1];if(n&&a)throw[0,Wd,DYr];if(c&&!a)throw[0,Wd,kYr];var l=Pit(i),b=Oit(i);if("number"==typeof b){if(13<=b)if(De===b)var D=[0,$Qr(v),o],k=1;else k=0;else if(0===b)k=0;else switch(b-1|0){case 0:if(f)k=0;else D=[0,$Qr(v),o],k=1;break;case 2:if(f)D=[0,$Qr(v),o],k=1;else k=0;break;case 11:if(!a){Kit(i);var p=Oit(i);if("number"==typeof p&&!(10<=p))switch(p){case 1:case 3:case 8:case 9:uit(i,[0,l,18]),j(f,i);continue}var d=Lit(i);Nd(hit(i),d),uit(i,[0,l,15]),Kit(i),j(f,i);continue}Kit(i);var w=Oit(i);if("number"==typeof w)if(10<=w)var h=1;else switch(w){case 1:case 3:case 8:case 9:j(f,i);var m=Oit(i);if("number"==typeof m){var F=m-1|0;if(2<F>>>0)var y=1;else switch(F){case 0:if(c)D=[0,$Qr(v),1],k=1,h=0,y=0;else y=1;break;case 1:y=1;break;default:uit(i,[0,l,17]);D=[0,$Qr(v),o],k=1,h=0,y=0}}else y=1;if(y){uit(i,[0,l,16]);continue}break;default:h=1}else h=1;if(h){var E=[1,vft([0,l],(function(r){return[0,Nd(e,r)]}),i)];j(f,i);s=[0,[0,E,v],o];continue}break;default:k=0}if(k)return eft(u,f?3:1),[0,f,D[2],D[1]]}for(var _=n,g=n,C=0,S=0,x=0;;){var A=Oit(i);if("number"==typeof A)switch(A){case 6:X(i,x),eft(i,6);var B=Oit(i);if("number"==typeof B)if(6===B){U(i,C);var I=[4,vft([0,l],function(r,t){return function(n){eft(n,6);var u=sft(n);eft(n,7),eft(n,7);var a=Oit(n);if("number"==typeof a){if(4===a)var i=1;else if(95===a)i=1;else{var f=0;i=0}if(i){var c=L(n,r,Nd(T,n)),s=0,o=1,v=[0,c[1],[1,c[2]]];f=1}}else f=0;if(!f){var l=uft(n,82);eft(n,83);s=l,o=0,v=Nd(e,n)}return[0,u,v,s,0!==t?1:0,o]}}(l,S),i)],O=1,P=0}else P=1;else P=1;if(P)I=[2,vft([0,l],function(r,t){return function(n){var u=83===Bit(1,n)?1:0;if(u){var a=sft(n);eft(n,83);var i=[0,a]}else i=u;var f=Nd(e,n);return eft(n,7),eft(n,83),[0,i,f,Nd(e,n),0!==r?1:0,t]}}(S,C),i)],O=1;break;case 42:if(_){if(0===C){var N=[0,Pit(i)];Kit(i);_=0,g=0,S=N;continue}throw[0,Wd,pYr]}O=0;break;case 100:case 101:if(0===C){_=0,g=0,C=t(i);continue}O=0;break;case 4:case 95:X(i,x),U(i,C);I=[3,vft([0,l],function(r){return function(t){var e=Nd(T,t);return[0,L(t,Pit(t),e),0!==r?1:0]}}(S),i)],O=1;break;default:O=0}else if(4===A[0])if(Sd(A[3],dYr))O=0;else{if(g){if(0===C){var J=[0,Pit(i)];Kit(i);_=0,g=0,x=J;continue}throw[0,Wd,wYr]}O=0}else O=0;if(!O){if(S)if(x){I=TQr(hYr);var G=1}else if("number"==typeof A)if(1<(A+so|0)>>>0)G=0;else I=M(i,l,C,0,x,[1,lnt([0,S[1],mYr])]),G=1;else G=0;else if(x)if("number"==typeof A)if(1<(A+so|0)>>>0)G=0;else I=M(i,l,C,S,0,[1,lnt([0,x[1],FYr])]),G=1;else G=0;else G=0;if(!G){var q=function(t){Qit(t,0);var e=Ld(r[21],0,t);return Zit(t),e},z=q(i)[2];if(1===z[0]){var V=z[1][2][1];if(Sd(V,yYr))if(Sd(V,EYr))var W=0,Y=0;else Y=1;else Y=1;if(Y){var H=Oit(i);if("number"==typeof H){var $=H-5|0;if(89<$>>>0)if(91<($+1|0)>>>0)var K=1;else{X(i,x),U(i,C);I=R(i,l,S,z),W=1,K=0}else if(1<($-77|0)>>>0)K=1;else I=M(i,l,C,S,x,z),W=1,K=0}else K=1;if(K){var Q=q(i),Z=gd(V,_Yr);X(i,x),U(i,C);I=[0,vft([0,l],function(r,t,e,n){return function(u){var a=L(u,r,0),i=a[2][2],f=e[1];if(0===n){var c=i[2],s=c[1];if(c[2])uit(u,[0,f,75]);else(s?s[2]?0:1:0)||uit(u,[0,f,75])}else{var o=i[2];(o[1]?0:o[2]?0:1)||uit(u,[0,f,74])}var v=0!==t?1:0,l=n?[1,a]:[2,a];return[0,e[2],l,0,v,0,0,0]}}(l,S,Q,Z),i)],W=1}}}else W=0;if(!W){var rr=Oit(i);if("number"==typeof rr){if(4===rr)var tr=1;else if(95===rr)tr=1;else{var er=0;tr=0}if(tr){X(i,x),U(i,C);I=R(i,l,S,z),er=1}}else er=0;if(!er){var nr=0!==S?1:0;if(1===z[0]){var ur=z[1],ar=ur[2][1];if(n){if(gd(CYr,ar))var ir=1;else if(nr)if(gd(SYr,ar))ir=1;else ir=0;else ir=0;ir&&uit(i,[0,ur[1],[19,ar,nr,0]])}}I=M(i,l,C,S,x,z)}}}}j(f,i);s=[0,[0,I,v],o];continue r}}}),i)})),Xk(C,(function(r){var t=41===Oit(r)?1:0;if(t){eft(r,41);for(var e=0;;){var n=[0,Nd(B,r),e],u=Oit(r);if("number"!=typeof u||9!==u){var a=$Qr(n);break}eft(r,9);e=n}}else a=t;return[0,Md(g,0,0,0,r),a]})),Xk(S,(function(r){var t=sft(r),e=t[2],n=e[1],u=t[1];return Ait(n)&&uit(r,[0,u,1]),[0,u,[0,n,e[2]]]})),Xk(x,(function(r){return vft(0,(function(r){return[0,Nd(S,r),83===Oit(r)?[1,Nd(n,r)]:[0,Nit(r)]]}),r)})),Xk(T,(function(r){var n=95===Oit(r)?1:0;if(n){1-nit(r)&&zit(r,10);var u=[0,vft(0,(function(r){eft(r,95);for(var n=0,u=0;;){var a=vft(0,function(r){return function(n){var u=t(n),a=Nd(x,n),i=a[2],f=Oit(n);if("number"==typeof f)if(79===f){Kit(n);var c=[0,Nd(e,n)],s=1,o=1}else o=0;else o=0;if(!o){r&&uit(n,[0,a[1],71]);c=0,s=r}return[0,u,i[1],i[2],c,s]}}(n),r),i=a[2],f=[0,[0,a[1],[0,i[2],i[3],i[1],i[4]]],u],c=Oit(r);if("number"==typeof c){if(96===c)var s=1;else if(De===c)s=1;else{var o=0;s=0}if(s){var v=$Qr(f);o=1}}else o=0;if(!o){if(eft(r,9),96!==Oit(r)){n=i[5],u=f;continue}v=$Qr(f)}return eft(r,96),v}}),r)]}else u=n;return u})),Xk(A,(function(r){var t=95===Oit(r)?1:0;return t?[0,vft(0,(function(r){eft(r,95);for(var t=kit(0,r),n=0;;){var u=Oit(t);if("number"==typeof u)if(96===u?1:De===u?1:0){var a=$Qr(n);return eft(t,96),a}var i=[0,Nd(e,t),n];96!==Oit(t)&&eft(t,9);n=i}}),r)]:t})),Xk(B,(function(r){return Ld(I,r,Nd(S,r))})),Xk(I,(function(r,t){return vft([0,t[1]],(function(r){for(var e=[0,t[1],[0,t]];;){var n=e[2],u=e[1];if(10!==Oit(r))return[0,n,Nd(A,r)];var a=vft([0,u],function(r){return function(t){return eft(t,10),[0,r,Nd(S,t)]}}(n),r),i=a[1];e=[0,i,[1,[0,i,a[2]]]]}}),r)})),Xk(O,(function(r,t){var e=Ld(I,r,t);return[0,e[1],[5,e[2]]]})),Xk(P,(function(r){var t=Oit(r);return"number"==typeof t&&83===t?[1,Nd(n,r)]:[0,Nit(r)]}));var G=0;function q(r){var t=kit(0,r),e=Oit(t);return"number"==typeof e&&66===e?[0,vft(G,J,t)]:0}function z(r){var t=Oit(r),e=Bit(1,r);if("number"==typeof t&&83===t){if("number"==typeof e&&66===e){eft(r,83);var n=q(r);return[0,[0,Nit(r)],n]}return[0,Nd(P,r),q(r)]}return[0,[0,Nit(r)],0]}function V(r,t){var e=fit(1,t);Qit(e,1);var n=Nd(r,e);return Zit(e),n}return[0,function(r){return V(e,r)},function(r){return V(S,r)},function(r){return V(T,r)},function(r){return V(A,r)},function(r){return V(B,r)},function(r,t){return V(Rd(g,r,0,0),t)},function(r){return V(C,r)},function(r){return V(h,r)},function(r){return V(n,r)},function(r){return V(P,r)},function(r){return V(q,r)},function(r){return V(z,r)}]}(wft),mft=function(r){var t=[0,bYr,lft[1]];function e(r){var t=Oit(r);if("number"==typeof t&&(1===t?1:9===t?1:0))return 1;return 0}function n(r){var t=sft(r),n=uft(r,79);if(n){var u=Pit(r),a=Oit(r);if("number"==typeof a)switch(a){case 30:case 31:if(Kit(r),e(r))var i=[1,u,31===a?1:0],f=1;else i=[0,u],f=1;break;default:f=0}else switch(a[0]){case 0:var c=a[2],s=Rd(wft[25],r,a[1],c);if(e(r))i=[2,u,[0,s,c]],f=1;else i=[0,u],f=1;break;case 2:var o=a[1],v=o[1];if(o[4]&&Yit(r,41),Kit(r),e(r))i=[3,v,[0,o[2],o[3]]],f=1;else i=[0,v],f=1;break;default:f=0}if(!f){Kit(r);i=[0,u]}var l=i}else l=n;return[0,t,l]}var u=0;function a(r,t,e,n,u){var a=VQr(n),i=VQr(u);function f(r){return[2,[0,[0,u],e]]}function c(r){return[2,[0,[1,n],e]]}return 0===a?f():0===i?c():a<i?(ZQr((function(e){return uit(r,[0,e[1],[8,t]])}),n),f()):(ZQr((function(e){return uit(r,[0,e[1],[8,t]])}),u),c())}function i(r){eft(r,48);var e=Ld(wft[13],0,r),i=e[2][1],f=uft(r,63);if(f){Qit(r,1);var c=Oit(r);if("number"==typeof c)switch(c){case 114:var s=fYr,o=1;break;case 116:s=cYr,o=1;break;default:o=0}else switch(c[0]){case 4:var v=c[2];s=Sd(v,sYr)?(zit(r,[4,i,[0,v]]),0):oYr,o=1;break;case 9:if(0===c[1])o=0;else s=vYr,o=1;break;default:o=0}if(!o){zit(r,[4,i,0]);s=0}Kit(r),Zit(r);var l=s}else l=f;eft(r,0);for(var b=t;;){var D=Oit(r);if("number"==typeof D)if(1===D?1:De===D?1:0){var k=$Qr(b[1][4]),p=$Qr(b[1][3]),d=$Qr(b[1][2]),w=$Qr(b[1][1]);if(l)switch(l[1]){case 0:var h=[0,[0,w,1]];break;case 1:h=[1,[0,d,1]];break;case 2:h=a(r,i,1,p,k);break;default:h=[3,[0,k]]}else{var m=VQr(w),F=VQr(d),y=VQr(p),E=VQr(k),_=function(r){return iYr};if(0===m)if(0===F){if(0===y)if(0===E)var g=_(),C=1,S=0;else S=1;else S=1;if(S)g=a(r,i,0,p,k),C=1}else C=0;else C=0;if(!C){if(0===F)if(0===y)if(E<=m){ZQr((function(t){return uit(r,[0,t[1],[1,i,t[2][1][2][1]]])}),k);g=[0,[0,w,0]];var x=1}else x=0;else x=0;else x=0;if(!x){if(0===m)if(0===y)if(E<=F){ZQr((function(t){return uit(r,[0,t[1],[7,i,t[2][1][2][1]]])}),k);g=[1,[0,d,0]];var T=1}else T=0;else T=0;else T=0;if(!T){uit(r,[0,e[1],[3,i]]);g=_()}}}h=g}return eft(r,1),[14,[0,e,h]]}var A=b[2],B=b[1],I=vft(u,n,r),P=I[2],N=P[1],L=N[2][1];if(gd(L,lYr))var R=b;else{var M=N[1],j=P[2],U=I[1],X=Cd(L,0),J=97<=X?1:0;(J?X<=O?1:0:J)&&uit(r,[0,M,[6,i,L]]),Ld(lft[3],L,A)&&uit(r,[0,M,[2,i,L]]);var G=Ld(lft[4],L,A),q=[0,b[1],G],z=function(t){return function(e,n){return l&&l[1]!==e?uit(r,[0,n,[5,i,l,t]]):0}}(L);if("number"==typeof j){if(l){var V=l[1];if(1===V){uit(r,[0,U,[7,i,L]]);R=q;var W=1}else if(0===V){uit(r,[0,U,[1,i,L]]);R=q,W=1}else W=0}else W=0;if(!W)R=[0,[0,B[1],B[2],B[3],[0,[0,U,[0,N]],B[4]]],G]}else switch(j[0]){case 0:uit(r,[0,j[1],[5,i,l,L]]);R=q;break;case 1:var Y=j[1];z(0,Y);R=[0,[0,[0,[0,U,[0,N,[0,Y,j[2]]]],B[1]],B[2],B[3],B[4]],G];break;case 2:var H=j[1];z(1,H);R=[0,[0,B[1],[0,[0,U,[0,N,[0,H,j[2]]]],B[2]],B[3],B[4]],G];break;default:var $=j[1];z(2,$);R=[0,[0,B[1],B[2],[0,[0,U,[0,N,[0,$,j[2]]]],B[3]],B[4]],G]}}1!==Oit(r)&&eft(r,9);b=R}}var f=0;function c(r,t){var e=t[2];switch(e[0]){case 0:return rZr(s,r,e[1][1]);case 1:return rZr(o,r,e[1][1]);case 2:var n=e[1][1],u=n[2][1],a=r[2],i=r[1];Ld(bft[3],u,a)&&uit(i,[0,n[1],39]);var f=v([0,i,a],n),c=Ld(bft[4],u,f[2]);return[0,f[1],c];default:return uit(r[1],[0,t[1],28]),r}}function s(r,t){if(0===t[0]){var e=t[1][2],n=e[1];return c(1===n[0]?v(r,n[1]):r,e[2])}return c(r,t[1][2][1])}function o(r,t){return t?c(r,t[1][1][2][1]):r}function v(r,t){var e=t[2][1],n=t[1],u=r[1];return xit(e)&&Hit(u,[0,n,38]),(_it(e)||Cit(e))&&Hit(u,[0,n,50]),[0,u,r[2]]}function l(r,t,e,n,u){var a=t||1-e;if(a){var i=u[2],f=i[2],s=t?fit(1-r[6],r):r;if(n){var o=n[1],v=o[2][1],l=o[1];xit(v)&&Hit(s,[0,l,40]),(_it(v)||Cit(v))&&Hit(s,[0,l,50])}var b=i[1],D=rZr((function(r,t){return c(r,t[2][1])}),[0,s,bft[1]],b),k=f?(c(D,f[1][2][1]),0):f}else k=a;return k}var b=function r(t,e){return r.fun(t,e)};function D(r){var t=Ld(wft[19],r,38),e=79===Oit(r)?1:0;return[0,t,e?(eft(r,79),[0,Nd(wft[10],r)]):e]}function k(r,t){function e(e){var n=cit(t,sit(r,e)),u=[0,n[1],n[2],n[3],n[4],n[5],n[6],n[7],n[8],n[9],1,n[11],n[12],n[13],n[14],n[15],n[16],n[17],n[18],n[19],n[20],n[21],n[22],n[23],n[24],n[25],n[26],n[27],n[28]];eft(u,4);var a=Ld(b,u,0);return eft(u,5),a}return function(r){return vft(0,e,r)}}function p(r,t,e){var n=Eit(r,t,e),u=Nd(wft[17],n);return[0,[0,[0,u[1],u[2]]],u[3]]}function d(r){return uft(r,kb)}function w(r){var t=64===Oit(r)?1:0,e=t?1-Mit(1,r):t;return e?(Kit(r),1):e}function h(r){var t=r[2],e=0===t[2]?1:0;if(e)for(var n=t[1];;){if(n){var u=n[1][2],a=n[2];if(2===u[1][2][0])if(u[2])var i=0;else{var f=1;i=1}else i=0;if(!i)f=0;if(f){n=a;continue}return f}return 1}return e}function m(t){var e=w(t),n=vft(0,(function(t){eft(t,15);var n=d(t),u=t[7],a=Oit(t);if(0===u)var i=0;else if("number"==typeof a)if(4===a){var f=0,c=0;i=1}else if(95===a)f=Nd(r[3],t),c=4===Oit(t)?0:[0,Ld(wft[13],UYr,t)],i=1;else i=0;else i=0;if(!i){var s=[0,Ld(wft[13],XYr,t)];f=Nd(r[3],t),c=s}var o=Nd(k(e,n),t),v=Nd(r[12],t);return[0,n,f,c,o,v[1],v[2]]}),t),u=n[2],a=u[4],i=u[3],f=u[1],c=p(t,e,f),s=h(a);return l(t,c[2],s,i,a),[21,[0,i,a,c[1],e,f,u[6],u[5],u[2],n[1]]]}Xk(b,(function(r,t){var e=Oit(r);if("number"==typeof e){var n=e-5|0;if(7<n>>>0?105===n?1:0:5<(n-1|0)>>>0?1:0){var u=12===e?1:0;if(u)var a=vft(0,(function(r){return eft(r,12),Ld(wft[19],r,38)}),r),i=[0,[0,a[1],[0,a[2]]]];else i=u;return 5!==Oit(r)&&zit(r,59),[0,$Qr(t),i]}}var f=vft(0,D,r);return 5!==Oit(r)&&eft(r,9),Ld(b,r,[0,f,t])}));var F=0;function y(r,t,e){eft(e,r);for(var n=0,u=0;;){var a=vft(0,(function(r){var t=Ld(wft[19],r,37);if(79===Oit(r)){eft(r,79);var e=[0,Nd(wft[10],r)],n=0}else if(2===t[2][0])e=uw[1],n=uw[2];else e=0,n=[0,[0,t[1],54],0];return[0,[0,t,e],n]}),e),i=a[2],f=[0,[0,a[1],i[1]],n],c=LQr(i[2],u);if(9!==Oit(e)){var s=$Qr(c);return[0,[0,$Qr(f),t],s]}eft(e,9);n=f,u=c}}var E=0,_=24;return[0,w,d,function(r,t,e){var n=Pit(r),u=Oit(r);if("number"==typeof u)if(ra===u){Kit(r);var a=[0,[0,n,0]],i=1}else if(ju===u){Kit(r);a=[0,[0,n,1]],i=1}else i=0;else i=0;if(!i)a=0;return a&&!(t?0:e?0:1)?(uit(r,[0,a[1][1],5]),0):a},k,p,h,l,function(r){return y(28,1,lit(1,r))},function(r){var t=y(27,2,lit(1,r)),e=t[1],n=e[1];return[0,e,$Qr(rZr((function(r,t){return t[2][2]?r:[0,[0,t[1],53],r]}),t[2],n))]},function(r){return y(_,E,r)},function(r){return vft(F,m,r)},function(r){return vft(f,i,r)}]}(hft),Fft=function(r){return[0,function(r,t){return 0===t[0]?t[1]:(ZQr((function(t){return uit(r,t)}),t[2][1]),t[1])},function(t,e,n){var u=t?t[1]:24;if(0===n[0])var a=n[1];else{ZQr((function(r){return uit(e,r)}),n[2][2]);a=n[1]}1-Nd(r[24],a)&&uit(e,[0,a[1],u]);var i=a[2];return"number"==typeof i||10===i[0]&&xit(i[1][2][1])&&Hit(e,[0,a[1],47]),Ld(r[20],e,a)},JYr,function(r,t){var e=HQr(r[2],t[2]);return[0,HQr(r[1],t[1]),e]},function(r){var t=$Qr(r[2]);return[0,$Qr(r[1]),t]}]}(wft),yft=function(r){var t=r[1],e=function r(t){return r.fun(t)},n=function r(t){return r.fun(t)},u=function r(t){return r.fun(t)},a=function r(t){return r.fun(t)},i=function r(t){return r.fun(t)},f=function r(t){return r.fun(t)},c=function r(t){return r.fun(t)},s=function r(t){return r.fun(t)},o=function r(t){return r.fun(t)},v=function r(t){return r.fun(t)},l=function r(t){return r.fun(t)},b=function r(t){return r.fun(t)},D=function r(t){return r.fun(t)},k=function r(t){return r.fun(t)},p=function r(t){return r.fun(t)},d=function r(t){return r.fun(t)},w=function r(t){return r.fun(t)},h=function r(t,e,n,u,a){return r.fun(t,e,n,u,a)},m=function r(t,e,n,u){return r.fun(t,e,n,u)},F=function r(t){return r.fun(t)},y=function r(t){return r.fun(t)},E=function r(t){return r.fun(t)},_=function r(t,e,n,u,a){return r.fun(t,e,n,u,a)},g=function r(t,e,n,u){return r.fun(t,e,n,u)},C=function r(t){return r.fun(t)},S=function r(t,e,n){return r.fun(t,e,n)},x=function r(t){return r.fun(t)},T=function r(t,e,n){return r.fun(t,e,n)},A=function r(t){return r.fun(t)},B=function r(t){return r.fun(t)},I=function r(t,e){return r.fun(t,e)},O=function r(t,e,n,u){return r.fun(t,e,n,u)},P=function r(t){return r.fun(t)},N=function r(t){return r.fun(t)},L=function r(t){return r.fun(t)},R=function r(t){return r.fun(t)},M=function r(t,e){return r.fun(t,e)},j=function r(t){return r.fun(t)},U=r[2];function X(r){var t=Nd(f,r),e=Nd(i,r);if(e){var u=Rd(U,0,r,t),a=Nd(n,r);return[0,[0,cnt(u[1],a[1]),[2,[0,e[1],u,a]]]]}return t}function J(r,t){if("number"==typeof t){var e=50!==t?1:0;if(!e)return e}throw aft}function G(r){var t=wit(J,r),e=X(t),n=Oit(t);if("number"==typeof n){if(11===n)throw aft;if(83===n&&kp(Fit(t),_$r))throw aft}if(Jit(t)){if(0===e[0]){var u=e[1][2];if("number"==typeof u);else if(10===u[0])if(Sd(u[1][2][1],g$r));else if(!jit(t))throw aft}return e}return e}function q(r,e,n,u,a){return[0,[0,a,[15,[0,u,Ld(t,r,e),Ld(t,r,n)]]]]}function z(r,t,e){for(var n=t,u=e;;){var a=Oit(r);if("number"!=typeof a||85!==a)return[0,u,n];eft(r,85);var i=vft(0,o,r),f=cnt(u,i[1]),c=W(0,r,q(r,n,i[2],1,f),f);n=c[2],u=c[1]}}function V(r,t,e){for(var n=t,u=e;;){var a=Oit(r);if("number"!=typeof a||84!==a)return[0,u,n];eft(r,84);var i=vft(0,o,r),f=z(r,i[2],i[1]),c=cnt(u,f[1]),s=W(0,r,q(r,n,f[2],0,c),c);n=s[2],u=s[1]}}function W(r,t,e,n){for(var u=r,a=e,i=n;;){var f=Oit(t);if("number"!=typeof f||81!==f)return[0,i,a];1-t[26][7]&&zit(t,97),1-u&&zit(t,c$r),eft(t,81);var c=vft(0,o,t),s=c[2],v=c[1],l=Oit(t);if("number"==typeof l)if(1<(l-84|0)>>>0)var b=0;else{zit(t,[21,_nt(l)]);var D=z(t,s,v),k=V(t,D[2],D[1]),p=k[1],d=k[2];b=1}else b=0;if(!b)p=v,d=s;var w=cnt(i,p);u=1,a=q(t,a,d,2,w),i=w}}function Y(r,t,e,n){return[0,n,[3,[0,e,r,t]]]}function H(r,e,n,u,a,i){var f=r?r[1]:1,c=e?e[1]:e,s=n?n[1]:n,o=dit(0,u),v=Nd(wft[7],o),l=Pit(u);eft(u,7);var b=cnt(a,l),D=[0,Ld(t,u,i),[2,v]];return jd(h,[0,f],[0,c],u,a,[0,[0,b,c?[21,[0,D,s]]:[16,D]]])}function $(r,e,n,u,a,i){var f=r?r[1]:1,c=e?e[1]:e,s=n?n[1]:n,o=Nd(j,u),v=o[3],l=o[2],b=o[1];if(v){var D=vnt(l),k=u[28][1];if(k){var p=k[1];u[28][1]=[0,[0,p[1],[0,[0,D,b],p[2]]],k[2]]}else uit(u,[0,b,84])}var d=cnt(a,b),w=v?[1,[0,b,l]]:[0,l];if(0===i[0]){var m=i[1][2];"number"==typeof m&&0===m&&v&&uit(u,[0,d,85])}else;var F=[0,Ld(t,u,i),w];return jd(h,[0,f],[0,c],u,a,[0,[0,d,c?[21,[0,F,s]]:[16,F]]])}function K(r,t){if("number"==typeof t){if(55<=t)var e=t-56|0,n=29<e>>>0?31<=e?0:1:3===e?1:0;else n=38===t?1:50===t?1:0;if(n)return 0}throw aft}return Xk(e,(function(r){var t=Oit(r),e=Jit(r);if("number"==typeof t){var n=t-5|0;if(89<n>>>0)var a=91<(n+1|0)>>>0?0:1;else if(53===n){if(r[17])return[0,Nd(u,r)];a=0}else a=0}else a=0;if(!a&&0===e)return X(r);var i=fft(r,G);if(i)return i[1];var f=fft(r,R);return f?f[1]:X(r)})),Xk(n,(function(r){return Ld(t,r,Nd(e,r))})),Xk(u,(function(r){return vft(0,(function(r){r[10]&&zit(r,86);var t=Rit(r);if(eft(r,58),Uit(r))var e=0,u=0;else{var a=uft(r,kb),i=Oit(r);if("number"==typeof i){if(83===i)var f=1;else if(10<=i){var c=0;f=0}else switch(i){case 0:case 2:case 3:case 4:case 6:c=0,f=0;break;default:f=1}if(f){var s=0;c=1}}else c=0;if(!c)s=1;var o=a||s;e=o?[0,Nd(n,r)]:o,u=a}var v=e?0:Rit(r);return[28,[0,e,bnt([0,t],[0,v],0),u]]}),r)})),Xk(a,(function(r){var t=r[2];if("number"==typeof t)var e=0;else switch(t[0]){case 17:var n=t[1];if(!Sd(n[1][2][1],y$r)){var u=Sd(n[2][2][1],E$r);if(!u)return u}e=1;break;case 10:case 16:e=1;break;default:e=0}return e?1:0})),Xk(i,(function(r){var t=Oit(r);if("number"==typeof t){var e=t-67|0;if(12<e>>>0)var n=0;else{switch(e){case 0:var u=s$r;break;case 1:u=o$r;break;case 2:u=v$r;break;case 3:u=l$r;break;case 4:u=b$r;break;case 5:u=D$r;break;case 6:u=k$r;break;case 7:u=p$r;break;case 8:u=d$r;break;case 9:u=w$r;break;case 10:u=h$r;break;case 11:u=m$r;break;default:u=F$r}var a=u;n=1}}else n=0;if(!n)a=0;return 0!==a&&Kit(r),a})),Xk(f,(function(r){var e=Pit(r),u=Nd(s,r);if(82===Oit(r)){eft(r,82);var a=Nd(n,Dit(0,r));eft(r,83);var i=vft(0,n,r),f=cnt(e,i[1]),c=i[2];return[0,[0,f,[7,[0,Ld(t,r,u),a,c]]]]}return u})),Xk(c,(function(r){return Ld(t,r,Nd(f,r))})),Xk(s,(function(r){var t=vft(0,o,r),e=t[2],n=t[1],u=Oit(r);if("number"==typeof u)if(81===u)var a=W(1,r,e,n),i=1;else i=0;else i=0;if(!i){var f=z(r,e,n);a=V(r,f[2],f[1])}return a[2]})),Xk(o,(function(r){var e=0;r:for(;;){var n=vft(0,(function(r){return[0,0!==Nd(v,r)?1:0,Nd(l,Dit(0,r))]}),r),u=n[2],a=u[2],i=n[1];if(95===Oit(r))if(0===a[0]){var f=a[1][2];"number"==typeof f||12===f[0]&&zit(r,58)}else;var c=Oit(r);if("number"==typeof c){var s=c+ff|0;if(1<s>>>0)if(69<=s)switch(s-69|0){case 0:var o=UHr,b=1;break;case 1:o=XHr,b=1;break;case 2:o=JHr,b=1;break;case 3:o=GHr,b=1;break;case 4:o=qHr,b=1;break;case 5:o=zHr,b=1;break;case 6:o=VHr,b=1;break;case 7:o=WHr,b=1;break;case 8:o=YHr,b=1;break;case 9:o=HHr,b=1;break;case 10:o=$Hr,b=1;break;case 11:o=KHr,b=1;break;case 12:o=QHr,b=1;break;case 13:o=ZHr,b=1;break;case 14:o=r$r,b=1;break;case 15:o=t$r,b=1;break;case 16:o=e$r,b=1;break;case 17:o=n$r,b=1;break;case 18:o=u$r,b=1;break;case 19:o=a$r,b=1;break;default:var D=0;b=0}else D=0,b=0;else if(0===s)if(r[12])o=0,b=1;else o=f$r,b=1;else o=i$r,b=1;if(b){var k=o;D=1}}else D=0;if(!D)k=0;if(0!==k&&Kit(r),!e&&!k)return a;if(k){var p=k[1],d=p[1],w=u[1];(w?14===d?1:0:w)&&uit(r,[0,i,25]);for(var h=Ld(t,r,a),m=[0,d,p[2]],F=i,y=e;;){var E=m[2],_=m[1];if(y){var g=y[1],C=g[2],S=C[2],x=0===S[0]?S[1]:S[1]-1|0;if(E[1]<=x){var T=cnt(g[3],F);h=Y(g[1],h,C[1],T),m=[0,_,E],F=T,y=y[2];continue}}e=[0,[0,h,[0,_,E],F],y];continue r}}for(var A=Ld(t,r,a),B=i,I=e;;){if(!I)return[0,A];var O=I[1],P=cnt(O[3],B),N=I[2];A=Y(O[1],A,O[2][1],P),B=P,I=N}}})),Xk(v,(function(r){var t=Oit(r);if("number"==typeof t)if(48<=t){if(ra<=t){if(!(108<=t))switch(t-100|0){case 0:return IHr;case 1:return OHr;case 6:return PHr;case 7:return NHr}}else if(65===t&&r[18])return LHr}else if(45<=t)switch(t+-45|0){case 0:return RHr;case 1:return MHr;default:return jHr}return 0})),Xk(l,(function(r){var t=Pit(r),e=Rit(r),n=Nd(v,r);if(n){var u=n[1];Kit(r);var i=vft(0,b,r),f=i[2],c=cnt(t,i[1]);if(6===u){var s=f[2];if("number"==typeof s);else switch(s[0]){case 10:Hit(r,[0,c,43]);break;case 16:1===s[1][2][0]&&uit(r,[0,c,83])}}return[0,[0,c,[26,[0,u,f,bnt([0,e],0,0)]]]]}var o=Oit(r);if("number"==typeof o)if(108===o)var l=BHr,k=1;else if(109===o)l=AHr,k=1;else k=0;else k=0;if(!k)l=0;if(l){Kit(r);var p=vft(0,b,r),d=p[2];1-Nd(a,d)&&uit(r,[0,d[1],24]);var w=d[2];"number"==typeof w||10===w[0]&&xit(w[1][2][1])&&Yit(r,49);return[0,[0,cnt(t,p[1]),[27,[0,l[1],d,1]]]]}return Nd(D,r)})),Xk(b,(function(r){return Ld(t,r,Nd(l,r))})),Xk(D,(function(r){var e=Nd(k,r);if(jit(r))return e;var n=Oit(r);if("number"==typeof n)if(108===n)var u=THr,i=1;else if(109===n)u=xHr,i=1;else i=0;else i=0;if(!i)u=0;if(u){var f=Ld(t,r,e);1-Nd(a,f)&&uit(r,[0,f[1],24]);var c=f[2],s=("number"==typeof c||10===c[0]&&xit(c[1][2][1])&&Yit(r,48),Pit(r));return Kit(r),[0,[0,cnt(f[1],s),[27,[0,u[1],f,0]]]]}return e})),Xk(k,(function(r){var t=Pit(r),e=[0,r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],r[9],r[10],r[11],r[12],r[13],r[14],r[15],0,r[17],r[18],r[19],r[20],r[21],r[22],r[23],r[24],r[25],r[26],r[27],r[28]],n=1-r[16],u=Oit(e);if("number"==typeof u){var a=u-44|0;if(7<a>>>0)var i=0;else{switch(a){case 0:if(n)var f=[0,Nd(F,e)],c=1;else i=0,c=0;break;case 6:f=[0,Nd(w,e)],c=1;break;case 7:f=[0,Nd(d,e)],c=1;break;default:i=0,c=0}if(c){var s=f;i=1}}}else i=0;if(!i)s=Git(e)?[0,Nd(C,e)]:Nd(A,e);return jd(h,0,0,e,t,s)})),Xk(p,(function(r){return Ld(t,r,Nd(k,r))})),Xk(d,(function(r){switch(r[20]){case 0:var t=mHr;break;case 1:t=FHr;break;default:t=yHr}var e=t[1],n=Pit(r);eft(r,51);var u=[0,n,0],a=Oit(r);if("number"==typeof a&&!(11<=a))switch(a){case 4:var i=t[2]?u:(uit(r,[0,n,3]),[0,n,[10,lnt([0,n,EHr])]]);return Md(m,_Hr,r,n,i);case 6:case 10:var f=e?u:(uit(r,[0,n,2]),[0,n,[10,lnt([0,n,CHr])]]);return Md(m,SHr,r,n,f)}return e?Vit(gHr,r):uit(r,[0,n,2]),u})),Xk(w,(function(r){return vft(0,(function(r){eft(r,50),eft(r,4);var t=Nd(n,Dit(0,r));return eft(r,5),[11,t]}),r)})),Xk(h,(function(r,e,n,u,a){var i=r?r[1]:1,f=e?e[1]:e,c=jd(_,[0,i],[0,f],n,u,a),s=kp(Fit(n),hHr);function o(r,e){var n=Nd(E,e),a=cnt(u,n[1]),o=n[2],v=[0,Ld(t,e,c),r,o];if(s)var l=0;else if(f)l=0;else{var b=[4,v];l=1}if(!l)b=[20,[0,v,s]];return jd(h,[0,i],[0,f],e,u,[0,[0,a,b]])}if(n[13])return c;var v=Oit(n);if("number"==typeof v){if(4===v)return o(0,n);if(95===v&&nit(n)){var l=wit((function(r,t){throw aft}),n);return cft(l,c,(function(r){return o(Nd(y,r),r)}))}}return c})),Xk(m,(function(r,e,n,u){var a=r?r[1]:1;return Ld(t,e,jd(h,[0,a],0,e,n,[0,u]))})),Xk(F,(function(r){var t=Pit(r),e=Rit(r);if(eft(r,44),r[11]&&10===Oit(r)){eft(r,10);var n=lnt([0,t,kHr]),u=Oit(r);if("number"!=typeof u&&4===u[0]&&!Sd(u[3],pHr)){var a=Ld(wft[13],0,r);return[0,cnt(t,a[1]),[17,[0,n,a]]]}return Vit(dHr,r),Kit(r),[0,t,[10,n]]}var i=Pit(r),f=Oit(r);if("number"==typeof f)if(44===f)var c=Nd(F,r),s=1;else if(51===f)c=Nd(d,dit(1,r)),s=1;else s=0;else s=0;if(!s)c=Git(r)?Nd(C,r):Nd(B,r);var o=Md(g,wHr,dit(1,r),i,c),v=Oit(r);if("number"==typeof v)var l=0;else if(3===v[0]){var b=Md(O,r,i,o,v[1]);l=1}else l=0;if(!l)b=o;var D=nit(r),k=D?cft(wit((function(r,t){throw aft}),r),0,y):D,p=Oit(r);if("number"==typeof p)if(4===p)var w=Nd(E,r),h=w[1],m=w[2],_=1;else _=0;else _=0;if(!_)if(k)h=k[1][1],m=0;else h=b[1],m=0;var S=[18,[0,b,k,m,bnt([0,e],[0,Rit(r)],0)]];return[0,cnt(t,h),S]})),Xk(y,(function(r){var t=95===Oit(r)?1:0;return t?[0,vft(0,(function(r){eft(r,95);for(var t=0;;){var e=Oit(r);if("number"==typeof e)if(96===e?1:De===e?1:0){var n=$Qr(t);return eft(r,96),n}var u=Oit(r);if("number"==typeof u)var a=0;else if(4===u[0])if(Sd(u[2],bHr))a=0;else{var i=Pit(r);nft(r,DHr);var f=[1,i];a=1}else a=0;if(!a)f=[0,Nd(hft[1],r)];var c=[0,f,t];96!==Oit(r)&&eft(r,9);t=c}}),r)]:t})),Xk(E,(function(r){var t=Pit(r);eft(r,4);for(var e=0;;){var u=Oit(r);if("number"==typeof u)if(5===u?1:De===u?1:0){var a=$Qr(e),i=Pit(r);return eft(r,5),[0,cnt(t,i),a]}var f=Oit(r);if("number"==typeof f)if(12===f){var c=Pit(r);eft(r,12);var s=Nd(n,r),o=[1,[0,cnt(c,s[1]),[0,s]]],v=1}else v=0;else v=0;if(!v)o=[0,Nd(n,r)];var l=[0,o,e];5!==Oit(r)&&eft(r,9);e=l}})),Xk(_,(function(r,e,n,u,a){var i=r?r[1]:1,f=e?e[1]:e,c=n[26],s=Oit(n);if("number"==typeof s)switch(s){case 6:return eft(n,6),H([0,i],[0,f],0,n,u,a);case 10:return eft(n,10),$([0,i],[0,f],0,n,u,a);case 80:1-c[6]&&zit(n,94),1-i&&zit(n,95),eft(n,80);var o=Oit(n);if("number"==typeof o)switch(o){case 4:return a;case 6:return eft(n,6),H([0,i],sHr,cHr,n,u,a);case 95:if(nit(n))return a}else if(3===o[0])return zit(n,96),a;return $([0,i],vHr,oHr,n,u,a)}else if(3===s[0]){f&&zit(n,96);var v=s[1];return jd(h,lHr,0,n,u,[0,Md(O,n,u,Ld(t,n,a),v)])}return a})),Xk(g,(function(r,e,n,u){var a=r?r[1]:1;return Ld(t,e,jd(_,[0,a],0,e,n,[0,u]))})),Xk(C,(function(r){return vft(0,(function(r){var t=Nd(mft[1],r),e=vft(0,(function(r){eft(r,15);var e=Nd(mft[2],r);if(4===Oit(r))var n=0,u=0;else{var a=Oit(r);if("number"==typeof a){var i=95!==a?1:0;if(i)var f=0;else{var c=i;f=1}}else f=0;if(!f){var s=cit(e,sit(t,r));c=[0,Ld(wft[13],fHr,s)]}n=c,u=Nd(hft[3],r)}var o=vit(0,r),v=Rd(mft[4],t,e,o),l=Nd(hft[12],o);return[0,n,v,e,l[2],l[1],u]}),r),n=e[2],u=n[3],a=n[2],i=n[1],f=Rd(mft[5],r,t,u),c=Nd(mft[6],a);return jd(mft[7],r,f[2],c,i,a),[8,[0,i,a,f[1],t,u,n[4],n[5],n[6],e[1]]]}),r)})),Xk(S,(function(r,t,e){switch(t){case 1:Yit(r,41);try{var n=Yp(Wp(PQr(eHr,e)))}catch(r){if((r=Pd(r))[1]!==Jd)throw r;n=TQr(PQr(nHr,e))}break;case 2:Yit(r,42);try{n=wp(e)}catch(r){if((r=Pd(r))[1]!==Jd)throw r;n=TQr(PQr(uHr,e))}break;case 4:try{n=wp(e)}catch(r){if((r=Pd(r))[1]!==Jd)throw r;n=TQr(PQr(aHr,e))}break;default:try{n=Yp(Wp(e))}catch(r){if((r=Pd(r))[1]!==Jd)throw r;n=TQr(PQr(iHr,e))}}return eft(r,[0,t,e]),n})),Xk(x,(function(r){var t=jp(r);return 0!==t&&De===Cd(r,t-1|0)?lZr(r,0,t-1|0):r})),Xk(T,(function(r,t,e){if(2<=t){var n=Nd(x,e);try{var u=wp(n)}catch(r){if((r=Pd(r))[1]!==Jd)throw r;u=TQr(PQr(rHr,n))}var a=u}else{var i=Nd(x,e);try{var f=Yp(Wp(i))}catch(r){if((r=Pd(r))[1]!==Jd)throw r;f=TQr(PQr(tHr,i))}a=f}return eft(r,[1,t,e]),a})),Xk(A,(function(r){var t=Pit(r),e=Rit(r),n=Oit(r);if("number"==typeof n)switch(n){case 0:var u=Nd(wft[12],r);return[1,[0,u[1],[19,u[2]]],u[3]];case 4:return[0,Nd(P,r)];case 6:var a=Nd(N,r);return[1,[0,a[1],[0,a[2]]],a[3]];case 21:return eft(r,21),[0,[0,t,1]];case 29:return eft(r,29),[0,[0,t,[14,[0,0,$Yr,bnt([0,e],[0,Rit(r)],0)]]]];case 40:return[0,Nd(wft[23],r)];case 95:var i=Nd(wft[18],r),f=i[2];return[0,[0,i[1],In<=f[1]?[13,f[2]]:[12,f[2]]]];case 30:case 31:eft(r,n);var c=31===n?1:0;return[0,[0,t,[14,[0,[1,c],c?QYr:ZYr,bnt([0,e],[0,Rit(r)],0)]]]];case 74:case 102:return[0,Nd(L,r)]}else switch(n[0]){case 0:var s=n[2];return[0,[0,t,[14,[0,[2,Rd(S,r,n[1],s)],s,bnt([0,e],[0,Rit(r)],0)]]]];case 1:var o=n[2];return[0,[0,t,[14,[0,[3,Rd(T,r,n[1],o)],o,bnt([0,e],[0,Rit(r)],0)]]]];case 2:var v=n[1],l=v[4],b=v[3],D=v[2],k=v[1];return l&&Yit(r,41),eft(r,[2,[0,k,D,b,l]]),[0,[0,k,[14,[0,[0,D],b,bnt([0,e],[0,Rit(r)],0)]]]];case 3:var p=Ld(I,r,n[1]);return[0,[0,p[1],[24,p[2]]]]}if(Jit(r)){var d=Ld(wft[13],0,r);return[0,[0,d[1],[10,d]]]}Vit(0,r);"number"==typeof n||6===n[0]&&Kit(r);return[0,[0,t,[14,[0,0,KYr,bnt([0,e],[0,0],0)]]]]})),Xk(B,(function(r){return Ld(t,r,Nd(A,r))})),Xk(I,(function(r,t){var e=t[3],n=t[2],u=t[1];eft(r,[3,t]);var a=[0,u,[0,[0,n[2],n[1]],e]];if(e)var i=u,f=[0,a,0],c=0;else for(var s=[0,a,0],o=0;;){var v=Nd(wft[7],r),l=[0,v,o],b=Oit(r);if("number"==typeof b)if(1===b){Qit(r,4);var D=Oit(r);if("number"==typeof D)var k=1;else if(3===D[0]){var p=D[1],d=p[3],w=p[2];Kit(r);var h=p[1],m=[0,[0,w[2],w[1]],d];Zit(r);var F=[0,[0,h,m],s];if(!d){s=F,o=l;continue}var y=$Qr(l),E=[0,h,$Qr(F),y],_=1;k=0}else k=1;if(k)throw[0,Wd,WYr]}else _=0;else _=0;if(!_){Vit(YYr,r);var g=[0,v[1],HYr],C=$Qr(l),S=$Qr([0,g,s]);E=[0,v[1],S,C]}i=E[1],f=E[2],c=E[3];break}return[0,cnt(u,i),[0,f,c]]})),Xk(O,(function(r,t,e,n){var u=Ld(I,r,n);return[0,cnt(t,u[1]),[23,[0,e,u]]]})),Xk(P,(function(r){eft(r,4);var t=Nd(n,r),e=Oit(r);if("number"==typeof e)if(9===e)var u=Ld(M,r,[0,t,0]),a=1;else if(83===e){var i=Nd(hft[9],r);u=[0,cnt(t[1],i[1]),[25,[0,t,i]]],a=1}else a=0;else a=0;if(!a)u=t;return eft(r,5),u})),Xk(N,(function(t){var n=vft(0,(function(t){var n=Rit(t);eft(t,6);for(var u=[0,0,r[3]];;){var a=u[2],i=u[1],f=Oit(t);if("number"==typeof f){if(13<=f)var c=De===f?1:0;else if(7<=f)switch(f-7|0){case 2:eft(t,9);u=[0,[0,0,i],a];continue;case 5:var s=vft(0,(function(t){eft(t,12);var n=Nd(e,t);return 0===n[0]?[0,n[1],r[3]]:[0,n[1],n[2]]}),t),o=s[2],v=o[2],l=s[1],b=[1,[0,l,[0,o[1]]]],D=7===Oit(t)?1:0;if(D)var k=0;else if(7===Bit(1,t)){var p=[0,v[1],[0,[0,l,60],v[2]]];k=1}else k=0;if(!k)p=v;1-D&&eft(t,9);u=[0,[0,[0,b],i],Ld(r[4],p,a)];continue;case 0:c=1;break;default:c=0}else c=0;if(c){var d=Nd(r[5],a),w=$Qr(i);return eft(t,7),[0,[0,w,bnt([0,n],[0,Rit(t)],0)],d]}}var h=Nd(e,t),m=0===h[0]?[0,h[1],r[3]]:[0,h[1],h[2]];7!==Oit(t)&&eft(t,9);u=[0,[0,[0,[0,m[1]]],i],Ld(r[4],m[2],a)]}}),t),u=n[2];return[0,n[1],u[1],u[2]]})),Xk(L,(function(r){Qit(r,5);var t=Pit(r),e=Rit(r),n=Oit(r),u=Rit(r);if("number"!=typeof n&&5===n[0]){var a=n[1],i=a[3],f=a[2];Kit(r);var c=PQr(zYr,PQr(f,PQr(qYr,i)));Zit(r);var s=gZr(jp(i)),o=jp(i)-1|0;if(!(o<0))for(var v=0;;){var l=Up(i,v),b=l-103|0;if(18<b>>>0);else switch(b){case 0:case 2:case 6:case 12:case 14:case 18:xZr(s,l)}var D=v+1|0;if(o===v)break;v=D}var k=CZr(s);return Sd(k,i)&&zit(r,[12,i]),[0,t,[14,[0,[4,[0,f,k]],c,bnt([0,e],[0,u],0)]]]}throw[0,Wd,VYr]})),Xk(R,(function(r){var t=wit(K,r),e=Pit(t),n=11!==Bit(1,t)?1:0,u=n?Nd(mft[1],t):n,a=vft(0,(function(r){var t=Nd(hft[3],r);if(Jit(r)&&0===t){var e=Ld(wft[13],GYr,r),n=e[1];return[0,t,[0,n,[0,[0,[0,n,[0,[0,n,[2,[0,e,[0,Nit(r)],0]]],0]],0],0]],[0,[0,n[1],n[3],n[3]]],0]}var u=Rd(mft[4],r[18],r[17],r),a=kit(1,r),i=Nd(hft[12],a);return[0,t,u,i[1],i[2]]}),t),i=a[2],f=i[2],c=f[2];if(c[2])var s=0;else if(c[1]){var o=t;s=1}else s=0;if(!s)o=yit(t);var v=jit(o);(v?11===Oit(o)?1:0:v)&&zit(o,55),eft(o,11);var l=yit(o),b=vft(0,(function(r){var t=Eit(r,u,0),e=Oit(t);if("number"==typeof e&&0===e){var n=Nd(wft[17],t);return[0,[0,[0,n[1],n[2]]],n[3]]}return[0,[1,Nd(wft[10],t)],t[6]]}),l),D=b[2],k=Nd(mft[6],f);return jd(mft[7],l,D[2],k,0,f),[0,[0,cnt(e,b[1]),[1,[0,0,f,D[1],u,0,i[4],i[3],i[1],a[1]]]]]})),Xk(M,(function(r,t){var e=Oit(r);if("number"==typeof e&&9===e)return eft(r,9),Ld(M,r,[0,Nd(n,r),t]);var u=WQr(t),a=$Qr(t),i=WQr(a);return[0,cnt(i[1],u[1]),[22,[0,a]]]})),Xk(j,(function(r){var t=Pit(r),e=vft(0,(function(r){return[0,uft(r,14),sft(r)]}),r),n=e[2],u=n[2],a=n[1],i=e[1];return(a?md(t[3],u[1][2]):a)&&uit(r,[0,i,98]),[0,i,u,a]})),[0,n,e,c,j,function(r){var t=r[2];if("number"==typeof t)var e=0;else switch(t[0]){case 17:var n=t[1];if(!Sd(n[1][2][1],C$r)){var u=Sd(n[2][2][1],S$r);if(!u)return u}e=1;break;case 0:case 10:case 16:case 19:e=1;break;default:e=0}return e?1:0},p,S,M]}(Fft),Eft=function(r){function t(r){return Kit(r),[0,Nd(yft[6],r)]}function e(r){var e=r[26][4];if(e)for(var n=0;;){var u=Oit(r);if("number"!=typeof u||13!==u)return $Qr(n);n=[0,vft(0,t,r),n]}return e}function n(r,t){var e=r?r[1]:r,n=Rit(t),u=Oit(t),a=Rit(t);if("number"==typeof u)switch(u){case 6:return vft(0,(function(r){eft(r,6);var t=Dit(0,r),e=Nd(wft[10],t);return eft(r,7),[3,e]}),t);case 14:if(e){var i=Nd(yft[4],t),f=i[2],c=i[1],s=vnt(f),o=t[28][1];if(o){var v=o[1],l=o[2],b=v[2],D=[0,[0,Ld(Qat[4],s,v[1]),b],l];t[28][1]=D}else TQr(qVr);return[0,c,[2,[0,c,f]]]}}else switch(u[0]){case 0:var k=u[2],p=Pit(t);return[0,p,[0,[0,p,[0,[2,Rd(yft[7],t,u[1],k)],k,bnt([0,n],[0,a],0)]]]];case 2:var d=u[1],w=d[4],h=d[3],m=d[2],F=d[1];return w&&Yit(t,41),eft(t,[2,[0,F,m,h,w]]),[0,F,[0,[0,F,[0,[0,m],h,bnt([0,n],[0,a],0)]]]]}var y=Nd(yft[4],t),E=y[1];return y[3]&&uit(t,[0,E,84]),[0,E,[1,y[2]]]}function u(r,t,e){var u=Nd(mft[2],r),a=n([0,t],r),i=a[1],f=vft(0,(function(r){var t=vit(1,r),n=vft(0,(function(r){var t=Rd(mft[4],0,0,r);if(0===e){var n=t[2],u=n[1];if(n[2])uit(r,[0,i,75]);else(u?u[2]?0:1:0)||uit(r,[0,i,75])}else{var a=t[2];(a[1]?0:a[2]?0:1)||uit(r,[0,i,74])}return[0,0,t,Nd(hft[10],r)]}),t),a=n[2],f=a[2],c=Rd(mft[5],t,0,u),s=Nd(mft[6],f);return jd(mft[7],t,c[2],s,0,f),[0,0,f,c[1],0,u,0,a[3],a[1],n[1]]}),r);return[0,a[2],f]}function a(t){var e=Nd(yft[2],t);return 0===e[0]?[0,e[1],r[3]]:[0,e[1],e[2]]}function i(r,t){function e(e){var n=vit(1,e),u=vft(0,(function(e){var n=Nd(hft[3],e);if(0===r)if(0===t)var u=0,a=0;else u=1,a=0;else if(0===t)u=0,a=e[18];else u=1,a=1;return[0,n,Rd(mft[4],a,u,e),Nd(hft[10],e)]}),n),a=u[2],i=a[2],f=Rd(mft[5],n,r,t),c=Nd(mft[6],i);return jd(mft[7],n,f[2],c,0,i),[0,0,i,f[1],r,t,0,a[3],a[1],u[1]]}return function(r){return vft(0,e,r)}}function f(r){return eft(r,83),a(r)}function c(t,e,n,u,a){var c=vft([0,e],(function(t){if(!u&&!a){var e=Oit(t);if("number"==typeof e){if(79===e){if(1===n[0])var c=n[1],s=Pit(t),o=[0,vft([0,c[1]],(function(r){return eft(r,79),[2,[0,0,Ld(wft[20],r,[0,c[1],[10,c]]),Nd(wft[10],r)]]}),t),[0,[0,[0,s,[9,gnt(H$r)]],0],0]];else o=f(t);return[0,[0,n,o[1],1],o[2]]}if(95===e)var v=1;else if(10<=e)v=0;else switch(e){case 4:v=1;break;case 1:case 9:switch(n[0]){case 0:var l=n[1],b=l[1];uit(t,[0,b,90]);var D=[0,b,[14,l[2]]];break;case 1:var k=n[1],p=k[2][1],d=k[1];(Tit(p)&&Sd(p,$$r)&&Sd(p,K$r)?(uit(t,[0,d,0]),1):0)||Cit(p)&&Hit(t,[0,d,50]);D=[0,d,[10,k]];break;case 2:D=TQr(Q$r);break;default:var w=n[1];uit(t,[0,w[1],91]);D=w}return[0,[0,n,D,1],r[3]];default:v=0}if(v)return[0,[1,n,Nd(i(u,a),t)],r[3]]}var h=f(t);return[0,[0,n,h[1],0],h[2]]}return[0,[1,n,Nd(i(u,a),t)],r[3]]}),t),s=c[2];return[0,[0,[0,c[1],s[1]]],s[2]]}function s(r,t){for(var e=t;;){var n=[0,vft(0,(function(r){return[0,Nd(hft[2],r),Nd(hft[4],r)]}),r),e],u=Oit(r);if("number"!=typeof u||9!==u)return $Qr(n);eft(r,9);e=n}}var o=function r(t){return r.fun(t)},v=function r(t,e,n,u){return r.fun(t,e,n,u)},l=function r(t,e,n,u){return r.fun(t,e,n,u)},b=function r(t){return r.fun(t)},D=function r(t){return r.fun(t)};function k(r){var t=cit(0,r);return[0,Nd(yft[6],t),Nd(hft[4],r)]}function p(r,t){return t?uit(r,[0,t[1][1],5]):t}function d(r,t,e,n,u){var a=vft([0,t],(function(r){var t=Nd(hft[10],r),e=r[26],u=79===Oit(r)?1:0;if(u){var a=n?e[3]:n;if(a)var i=a;else{var f=1-n;i=f?e[2]:f}if(i){eft(r,79);var c=vit(1,r),s=[0,Nd(wft[7],c)]}else s=i}else s=u;uft(r,8)||((6===Oit(r)?1:0)||(4===Oit(r)?1:0))&&Vit(0,r);return[0,t,s]}),r),i=a[2],f=i[2],c=i[1],s=a[1];return 2===e[0]?[2,[0,s,[0,e[1],f,c,n,u]]]:[1,[0,s,[0,e,f,c,n,u]]]}function w(r,t,e,n,u,a,i,f){for(;;){var c=Oit(r);if("number"==typeof c){var s=c-1|0;if(7<s>>>0){var o=s-78|0;if(4<o>>>0)var v=1;else switch(o){case 3:Vit(0,r),Kit(r);continue;case 0:case 4:v=0;break;default:v=1}}else v=5<(s-1|0)>>>0?0:1;if(!v&&!u&&!a)return d(r,t,n,i,f)}if(Uit(r))return d(r,t,n,i,f);if(p(r,f),0===i){switch(n[0]){case 0:var l=n[1][2][1];if("number"==typeof l)var b=1;else if(0===l[0])if(Sd(l[1],N$r)){var D=0,k=0;b=0}else k=1,b=0;else b=1;if(b)D=0,k=0;break;case 1:if(Sd(n[1][2][1],L$r))D=0,k=0;else k=1;break;default:D=0,k=0}if(k){var w=0,h=vit(2,r);D=1}}else D=0;if(!D)w=1,h=vit(1,r);var m=vft(0,(function(r){var t=vft(0,(function(r){var t=Nd(hft[3],r);if(0===u)if(0===a)var e=0,n=0;else e=1,n=0;else if(0===a)e=0,n=r[18];else e=1,n=1;return[0,t,Rd(mft[4],n,e,r),Nd(hft[10],r)]}),r),e=t[2],n=e[2],i=Rd(mft[5],r,u,a),f=Nd(mft[6],n);return jd(mft[7],r,i[2],f,0,n),[0,0,n,i[1],u,a,0,e[3],e[1],t[1]]}),h);return[0,[0,cnt(t,m[1]),[0,w,n,m,i,e]]]}}function h(r,t){var e=Bit(r,t);if("number"==typeof e){if(83<=e)var n=95===e?1:84<=e?0:1;else if(79===e)n=1;else if(9<=e)n=0;else switch(e){case 1:case 4:case 8:n=1;break;default:n=0}if(n)return 1}return 0}Xk(o,(function(r){var t=uft(r,41),e=t?[0,vft(0,k,r)]:t,n=52===Oit(r)?1:0;if(n){1-nit(r)&&zit(r,14),eft(r,52);var u=s(r,0)}else u=n;return[0,Nd(b,r),e,u]})),Xk(v,(function(r,t,e,n){var u=gd(e,z$r);if(u)var a=u;else{var i=gd(e,V$r);a=i?n:i}return a?uit(r,[0,t,[19,e,n,0]]):a})),Xk(l,(function(r,t,e,n){var u=e[2][2][1],a=e[1];if(gd(u,q$r))return uit(r,[0,a,[19,u,0,1]]),t;var i=Ld(Dft[28],u,t);if(i){var f=i[1];return(Zb===n?Fu===f?1:0:Fu===n&&Zb===f?1:0)||uit(r,[0,a,[18,u]]),Rd(Dft[4],u,Nn,t)}return Rd(Dft[4],u,n,t)})),Xk(b,(function(r){return vft(0,(function(r){if(uft(r,0)){r[28][1]=[0,[0,Qat[1],0],r[28][1]];for(var t=0,e=Dft[1],n=0;;){var u=Oit(r);if("number"==typeof u){var a=u-2|0;if(107<a>>>0){if(!(109<(a+1|0)>>>0)){var i=$Qr(n),f=function(r,t){for(var e=0,n=t;;){if(!n)return $Qr(e);var u=n[2],a=n[1];if(1-Ld(Qat[3],a[1],r))e=[0,a,e],n=u;else n=u}},c=r[28][1];if(c){var s=c[2],o=c[1],b=o[2],k=o[1];if(s){var p=f(k,b),d=WQr(s),w=YQr(s),h=LQr(d[2],p);r[28][1]=[0,[0,d[1],h],w]}else{ZQr((function(t){return uit(r,[0,t[2],[20,t[1]]])}),f(k,b)),r[28][1]=0}}else TQr(zVr);return eft(r,1),[0,i]}}else if(6===a){eft(r,8);continue}}var m=Nd(D,r);switch(m[0]){case 0:var F=m[1],y=F[2],E=F[1];switch(y[1]){case 0:if(y[4])var _=[0,t,e];else{t&&uit(r,[0,E,81]);_=[0,1,e]}break;case 1:2===y[2][0]&&uit(r,[0,E,82]);_=[0,t,e];break;case 2:var g=y[2];_=[0,t,2===g[0]?Md(l,r,e,g[1],Zb):e];break;default:var C=y[2];_=[0,t,2===C[0]?Md(l,r,e,C[1],Fu):e]}var S=_;break;case 1:var x=m[1][2],T=x[1];switch(T[0]){case 0:var A=T[1],B=A[2][1];if("number"==typeof B)var I=1;else if(0===B[0]){var O=B[1],P=A[1],N=0;I=0}else I=1;if(I)N=1;break;case 1:var L=T[1];O=L[2][1],P=L[1],N=0;break;case 2:TQr(J$r);N=2;break;default:N=1}switch(N){case 0:Md(v,r,P,O,x[4])}S=[0,t,e];break;default:S=[0,t,Md(l,r,e,m[1][2][1],Nn)]}t=S[1],e=S[2],n=[0,m,n]}}return tft(r,0),G$r}),r)}));var m=0;function F(r){return h(m,r)}function y(r){var t=fit(1,r),n=e(t),u=Rit(t);eft(t,40);var a=Oit(t);if("number"==typeof a){if(52<=a)if(95===a)var i=1;else if(53<=a){var f=0;i=0}else i=1;else if(41===a)i=1;else if(0===a)i=1;else f=0,i=0;if(i){var c=0,s=0;f=1}}else f=0;if(!f)c=[0,Ld(wft[13],0,t)],s=Nd(hft[3],t);var v=c?0:Rit(t),l=Nd(o,t),b=bnt([0,u],[0,v],0);return[5,[0,c,l[1],s,l[2],l[3],n,b]]}Xk(D,(function(r){var t=Pit(r),a=e(r),i=4!==Bit(1,r)?1:0;if(i)var f=95!==Bit(1,r)?1:0,c=f?uft(r,42):f;else c=i;var s=64===Oit(r)?1:0;if(s)var o=1-h(1,r),v=o?1-Mit(1,r):o;else v=s;v&&Kit(r);var l=Nd(mft[2],r),b=Rd(mft[3],r,v,l);if(0===l)if(b)var D=Nd(mft[2],r),k=1;else k=0;else k=0;if(!k)D=l;var d=Oit(r);if(0===v&&0===D&&"number"!=typeof d&&4===d[0]){var m=d[3];if(!Sd(m,R$r)){var y=n(U$r,r);if(F(r))return w(r,t,a,y[2],v,D,c,b);p(r,b);var E=vft([0,t],(function(r){return u(r,1,1)}),r),_=E[2];return[0,[0,E[1],[0,2,_[1],_[2],c,a]]]}if(!Sd(m,M$r)){var g=n(j$r,r);if(F(r))return w(r,t,a,g[2],v,D,c,b);p(r,b);var C=vft([0,t],(function(r){return u(r,1,0)}),r),S=C[2];return[0,[0,C[1],[0,3,S[1],S[2],c,a]]]}}return w(r,t,a,n(X$r,r)[2],v,D,c,b)}));return[0,n,function(t){var e=vft(0,(function(t){var e=Rit(t);eft(t,0);for(var i=0,f=[0,0,r[3]];;){var s=f[2],o=f[1],v=Oit(t);if("number"==typeof v)if(1===v?1:De===v?1:0){var l=i?[0,s[1],[0,[0,i[1],93],s[2]]]:s,b=Nd(r[5],l),D=$Qr(o);return eft(t,1),[0,[0,D,bnt([0,e],[0,Rit(t)],0)],b]}if(12===Oit(t))var k=vft(0,(function(r){return eft(r,12),a(r)}),t),p=k[2],d=[0,[1,[0,k[1],[0,p[1]]]],p[2]];else{var w=Pit(t),h=Bit(1,t);if("number"==typeof h){if(83<=h)if(95===h)var m=1;else if(84<=h){var F=0;m=0}else m=1;else if(79===h)m=1;else if(10<=h)F=0,m=0;else switch(h){case 1:case 4:case 9:m=1;break;default:F=0,m=0}if(m){var y=0;F=1}}else F=0;if(!F)y=Nd(mft[1],t);var E=Nd(mft[2],t),_=Oit(t);if(0===y)if(0===E)if("number"==typeof _)var g=0;else if(4===_[0]){var C=_[3];if(Sd(C,W$r))if(Sd(C,Y$r))g=0;else{var S=n(0,t),x=Oit(t);if("number"==typeof x){if(83<=x)if(95===x)var T=1;else if(84<=x){var A=1;T=0}else T=1;else if(79===x)T=1;else if(10<=x)A=1,T=0;else switch(x){case 1:case 4:case 9:T=1;break;default:A=1,T=0}if(T)d=c(t,w,S[2],0,0),g=1,A=0}else A=1;if(A){var B=r[3],I=vft([0,w],(function(r){return u(r,0,0)}),t),O=I[2];d=[0,[0,[0,I[1],[3,O[1],O[2]]]],B],g=1}}else{var P=n(0,t),N=Oit(t);if("number"==typeof N){if(83<=N)if(95===N)var L=1;else if(84<=N){var R=1;L=0}else L=1;else if(79===N)L=1;else if(10<=N)R=1,L=0;else switch(N){case 1:case 4:case 9:L=1;break;default:R=1,L=0}if(L)d=c(t,w,P[2],0,0),g=1,R=0}else R=1;if(R){var M=r[3],j=vft([0,w],(function(r){return u(r,0,1)}),t),U=j[2];d=[0,[0,[0,j[1],[2,U[1],U[2]]]],M],g=1}}}else g=0;else g=0;else g=0;if(!g)d=c(t,w,n(0,t)[2],y,E)}var X=d[1];if(1===X[0])if(9===Oit(t))var J=[0,Pit(t)],G=1;else G=0;else G=0;if(!G)J=0;1!==Oit(t)&&eft(t,9);i=J,f=[0,[0,X,o],Ld(r[4],d[2],s)]}}),t),i=e[2];return[0,e[1],i[1],i[2]]},function(r,t){return vft(0,(function(r){var n=fit(1,r),u=LQr(t,e(n)),a=Rit(n);eft(n,40);var i=lit(1,n),f=n[7],c=Jit(i);if(0===f)var s=0;else{var v=0!==c?1:0;if(v)s=0;else{var l=v;s=1}}if(!s)l=[0,Ld(wft[13],0,i)];var b=Nd(hft[3],n),D=Nd(o,n),k=l?0:Rit(n),p=bnt([0,a],[0,k],0);return[2,[0,l,D[1],b,D[2],D[3],u,p]]}),r)},function(r){return vft(0,y,r)},s,e]}(Fft),_ft=function(r){function t(r){var t=Nd(mft[11],r);if(r[6])$it(r,t[1]);else{var e=t[2],n=t[1];if("number"==typeof e);else if(21===e[0]){var u=e[1];0===u[4]?0===u[5]||uit(r,[0,n,57]):uit(r,[0,n,56])}}return t}var e=function r(t){return r.fun(t)},n=function r(t){return r.fun(t)},u=function r(t){return r.fun(t)},a=function r(t){return r.fun(t)},i=function r(t){return r.fun(t)},f=function r(t){return r.fun(t)},c=function r(t){return r.fun(t)},s=function r(t){return r.fun(t)},o=function r(t,e){return r.fun(t,e)},v=function r(t){return r.fun(t)},l=function r(t){return r.fun(t)},b=function r(t){return r.fun(t)},D=function r(t){return r.fun(t)},k=function r(t){return r.fun(t)},p=function r(t){return r.fun(t)},d=function r(t){return r.fun(t)},w=function r(t){return r.fun(t)},h=function r(t){return r.fun(t)},m=function r(t){return r.fun(t)},F=function r(t){return r.fun(t)},y=function r(t,e){return r.fun(t,e)},E=function r(t){return r.fun(t)},_=function r(t,e){return r.fun(t,e)},g=function r(t){return r.fun(t)},C=function r(t){return r.fun(t)},S=function r(t,e,n){return r.fun(t,e,n)},x=function r(t,e){return r.fun(t,e)},T=function r(t){return r.fun(t)},A=function r(t){return r.fun(t)};function B(r){return eft(r,59),rft(0,r),0}var I=0;function O(r){var t=Rit(r);eft(r,37);var e=bit(1,r),n=Nd(wft[2],e),u=1-r[6];(u?oft(n):u)&&$it(r,n[1]);var a=Rit(r);eft(r,25);var i=Rit(r);eft(r,4);var f=Nd(wft[7],r);eft(r,5);var c=Rit(r);return 8===Oit(r)&&rft(0,r),[13,[0,n,f,bnt([0,t],[0,LQr(a,LQr(i,c))],0)]]}var P=0;function N(r,t,e){var n=e[2][1];if(n&&!n[1][2][2]){var u=n[2];if(!u)return u}return uit(r,[0,e[1],t])}function L(r,t){var e=1-r[6],n=e?oft(t):e;return n?$it(r,t[1]):n}function R(t){eft(t,39);var e=t[18],n=e?uft(t,65):e;eft(t,4);var u=Dit(1,t),a=Oit(u);if("number"==typeof a)if(24<=a)if(29<=a)var i=0;else{switch(a-24|0){case 0:var f=vft(0,mft[10],u),c=f[2],s=[0,[0,[1,[0,f[1],c[1]]]],c[2]],o=1;break;case 3:var v=vft(0,mft[9],u),l=v[2];s=[0,[0,[1,[0,v[1],l[1]]]],l[2]],o=1;break;case 4:var b=vft(0,mft[8],u),D=b[2];s=[0,[0,[1,[0,b[1],D[1]]]],D[2]],o=1;break;default:i=0,o=0}if(o){var k=s[1],p=s[2];i=1}}else if(8===a)k=0,p=0,i=1;else i=0;else i=0;if(!i){var d=lit(1,u);k=[0,[0,Nd(wft[8],d)]],p=0}var w=Oit(t);if(63!==w&&!n){if("number"==typeof w&&17===w){if(k){var h=k[1];if(0===h[0])var m=[1,Rd(r[2],HKr,t,h[1])];else{var F=h[1];N(t,26,F);m=[0,F]}eft(t,17);var y=Nd(wft[7],t);eft(t,5);var E=bit(1,t),_=Nd(wft[2],E);return L(t,_),[19,[0,m,y,_,0]]}throw[0,Wd,$Kr]}if(ZQr((function(r){return uit(t,r)}),p),eft(t,8),k)var g=k[1],C=0===g[0]?[0,[1,Ld(r[1],t,g[1])]]:[0,[0,g[1]]];else C=k;var S=Oit(t);if("number"==typeof S){var x=8!==S?1:0;if(x)var T=0;else{var A=x;T=1}}else T=0;if(!T)A=[0,Nd(wft[7],t)];eft(t,8);var B=Oit(t);if("number"==typeof B){var I=5!==B?1:0;if(I)var O=0;else{var P=I;O=1}}else O=0;if(!O)P=[0,Nd(wft[7],t)];eft(t,5);var R=bit(1,t),M=Nd(wft[2],R);return L(t,M),[18,[0,C,A,P,M]]}if(k){var j=k[1];if(0===j[0])var U=[1,Rd(r[2],WKr,t,j[1])];else{var X=j[1];N(t,27,X);U=[0,X]}eft(t,63);var J=Nd(wft[10],t);eft(t,5);var G=bit(1,t),q=Nd(wft[2],G);return L(t,q),[20,[0,U,J,q,n]]}throw[0,Wd,YKr]}var M=0;function j(r){var e=Git(r)?t(r):Nd(wft[2],r),n=1-r[6];return(n?oft(e):n)&&$it(r,e[1]),e}function U(r){var t=Rit(r);eft(r,16);var e=LQr(t,Rit(r));eft(r,4);var n=Nd(wft[7],r);eft(r,5);var u=Rit(r),a=j(r),i=43===Oit(r)?1:0;return[22,[0,n,a,i?(eft(r,43),[0,j(r)]):i,bnt([0,e],[0,u],0)]]}var X=0;function J(r){1-r[11]&&zit(r,33);var t=Rit(r);if(eft(r,19),8===Oit(r))var e=0;else if(Uit(r))e=0;else{var n=[0,Nd(wft[7],r)],u=0;e=1}if(!e)n=0,u=Rit(r);return rft(0,r),[26,[0,n,bnt([0,t],[0,u],0)]]}var G=0;function q(r){eft(r,20),eft(r,4);var t=Nd(wft[7],r);eft(r,5),eft(r,0);for(var e=VKr;;){var n=e[2],u=e[1],a=Oit(r);if("number"==typeof a)if(1===a?1:De===a?1:0){var i=$Qr(n);return eft(r,1),[27,[0,t,i]]}var f=Pit(r),c=Oit(r);if("number"==typeof c)if(36===c){u&&zit(r,29),eft(r,36);var s=0,o=1}else o=0;else o=0;if(!o){eft(r,33);s=[0,Nd(wft[7],r)]}var v=u||(0===s?1:0),l=Pit(r);eft(r,83);var b=Ld(wft[4],(function(r){if("number"==typeof r){var t=r-1|0;if(32<t>>>0?35===t?1:0:30<(t-1|0)>>>0?1:0)return 1}return 0}),[0,r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8],1,r[10],r[11],r[12],r[13],r[14],r[15],r[16],r[17],r[18],r[19],r[20],r[21],r[22],r[23],r[24],r[25],r[26],r[27],r[28]]),D=$Qr(b),k=D?D[1][1]:l;e=[0,v,[0,[0,cnt(f,k),[0,s,b]],n]]}}var z=0;function V(r){var t=Pit(r);eft(r,22),jit(r)&&uit(r,[0,t,19]);var e=Nd(wft[7],r);return rft(0,r),[28,[0,e]]}var W=0;function Y(r){var t=Rit(r);eft(r,23);var e=Rit(r),n=Nd(wft[16],r),u=Oit(r);if("number"==typeof u)if(34===u)var a=[0,vft(0,(function(r){var t=Rit(r);eft(r,34);var e=Rit(r),n=4===Oit(r)?1:0;if(n){eft(r,4);var u=[0,Ld(wft[19],r,36)];eft(r,5);var a=u}else a=n;return[0,a,Nd(wft[16],r),bnt([0,t],[0,e],0)]}),r)],i=1;else i=0;else i=0;if(!i)a=0;var f=Oit(r);if("number"==typeof f)if(38===f){eft(r,38);var c=[0,Nd(wft[16],r)],s=1}else s=0;else s=0;if(!s)c=0;var o=0===a?1:0;return(o?0===c?1:0:o)&&uit(r,[0,n[1],30]),[29,[0,n,a,c,bnt([0,t],[0,e],0)]]}var H=0;function $(r){var t=Nd(mft[10],r);return rft(0,r),ZQr((function(t){return uit(r,t)}),t[2]),[32,t[1]]}var K=0;function Q(r){var t=Nd(mft[9],r);return rft(0,r),ZQr((function(t){return uit(r,t)}),t[2]),[32,t[1]]}var Z=0;function rr(r){var t=Nd(mft[8],r);return rft(0,r),ZQr((function(t){return uit(r,t)}),t[2]),[32,t[1]]}var tr=0;function er(r){eft(r,25),eft(r,4);var t=Nd(wft[7],r);eft(r,5);var e=bit(1,r),n=Nd(wft[2],e),u=1-r[6];return(u?oft(n):u)&&$it(r,n[1]),[33,[0,t,n]]}var nr=0;function ur(r){var e=Nd(wft[7],r),n=Oit(r),u=e[2];if("number"!=typeof u&&10===u[0]&&"number"==typeof n&&83===n){var a=u[1],i=a[2][1];eft(r,83),Ld(pft[3],i,r[3])&&uit(r,[0,e[1],[14,qKr,i]]);var f=r[28],c=r[27],s=r[26],o=r[25],v=r[24],l=r[23],b=r[22],D=r[21],k=r[20],p=r[19],d=r[18],w=r[17],h=r[16],m=r[15],F=r[14],y=r[13],E=r[12],_=r[11],g=r[10],C=r[9],S=r[8],x=r[7],T=r[6],A=r[5],B=r[4],I=Ld(Qat[4],i,r[3]),O=[0,r[1],r[2],I,B,A,T,x,S,C,g,_,E,y,F,m,h,w,d,p,k,D,b,l,v,o,s,c,f];return[25,[0,a,Git(O)?t(O):Nd(wft[2],O)]]}return rft(zKr,r),[17,[0,e,0]]}var ar=0;function ir(r){var t=Nd(wft[7],r);rft(GKr,r);var e=r[19];if(e){var n=t[2];if("number"==typeof n)var u=0;else if(14===n[0]){var a=n[1],i=a[1];if("number"==typeof i)var f=1;else if(0===i[0]){var c=a[2],s=[0,lZr(c,1,jp(c)-2|0)];u=1,f=0}else f=1;if(f)u=0}else u=0;if(!u)s=0;var o=s}else o=e;return[17,[0,t,o]]}var fr=0;function cr(r){return vft(fr,ir,r)}function sr(r,t){var e=t[2];switch(e[0]){case 0:return rZr((function(r,t){return sr(r,0===t[0]?t[1][2][2]:t[1][2][1])}),r,e[1][1]);case 1:return rZr((function(r,t){return t?sr(r,t[1][1][2][1]):r}),r,e[1][1]);case 2:return[0,e[1][1],r];default:return TQr(JKr)}}function or(r){nft(r,jKr);var t=Oit(r);if("number"!=typeof t&&2===t[0]){var e=t[1],n=e[4],u=e[3],a=e[2],i=e[1];return n&&Yit(r,41),eft(r,[2,[0,i,a,u,n]]),[0,i,[0,a,u]]}var f=[0,Pit(r),UKr];return Vit(XKr,r),f}function vr(r,t,e){function n(t){return r?Nd(hft[2],t):Ld(wft[13],0,t)}var u=Bit(1,e);if("number"==typeof u)switch(u){case 1:case 9:case 110:return[0,n(e),0]}else if(4===u[0]&&!Sd(u[3],MKr)){var a=sft(e);return Kit(e),[0,a,[0,n(e)]]}var i=Oit(e);if(t&&"number"==typeof i&&!(46===i?0:61===i?0:1))return zit(e,t[1]),Kit(e),[0,Nd(hft[2],e),0];return[0,n(e),0]}function lr(r,t){var e=Pit(r),n=Oit(r);if("number"==typeof n&&kb===n){eft(r,kb),nft(r,BKr);var u=2<=t?Ld(wft[13],0,r):Nd(hft[2],r);return[1,[0,cnt(e,u[1]),u]]}eft(r,0);for(var a=0,i=0;;){var f=a?a[1]:1,c=Oit(r);if("number"==typeof c)if(1===c?1:De===c?1:0){var s=$Qr(i);return eft(r,1),[0,s]}switch(1-f&&zit(r,78),t){case 0:var o=vr(1,OKr,r),v=[0,0,o[2],o[1]];break;case 1:var l=vr(1,IKr,r);v=[0,0,l[2],l[1]];break;default:var b=Oit(r);if("number"==typeof b)if(46===b)var D=NKr,k=1;else if(61===b)D=PKr,k=1;else k=0;else k=0;if(!k)D=0;var p=Oit(r);if("number"==typeof p){if(46===p)var d=1;else if(61===p)d=1;else{var w=0;d=0}if(d){var h=1;w=1}}else w=0;if(!w)h=0;if(h){var m=sft(r),F=Oit(r);if("number"==typeof F)switch(F){case 1:case 9:case 110:Rd(wft[15],0,r,m);var y=[0,0,0,m],E=1;break;default:E=0}else if(4===F[0])if(Sd(F[3],LKr))E=0;else{var _=Bit(1,r);if("number"==typeof _)switch(_){case 1:case 9:case 110:y=[0,D,0,Nd(hft[2],r)],E=1;var g=0;break;default:g=1}else if(4===_[0])if(Sd(_[3],RKr))g=1;else{var C=sft(r);Kit(r);y=[0,D,[0,Nd(hft[2],r)],C],E=1,g=0}else g=1;if(g){Rd(wft[15],0,r,m),Kit(r);y=[0,0,[0,Ld(wft[13],0,r)],m],E=1}}else E=0;if(!E){var S=vr(1,0,r);y=[0,D,S[2],S[1]]}}else{var x=vr(0,0,r);y=[0,0,x[2],x[1]]}v=y}a=[0,uft(r,9)],i=[0,v,i]}}function br(r,t){var e=[0,lr(t,r)],n=or(t);return rft(0,t),[23,[0,r,n,0,e]]}function Dr(r,t){var e=2<=r?Ld(wft[13],0,t):Nd(hft[2],t),n=Oit(t);if("number"==typeof n)if(9===n){eft(t,9);var u=[0,lr(t,r)],a=1}else a=0;else a=0;if(!a)u=0;var i=or(t);return rft(0,t),[23,[0,r,i,[0,e],u]]}function kr(r){var t=fit(1,r);eft(t,50);var e=Oit(t);if("number"==typeof e)switch(e){case 46:if(nit(t)){eft(t,46);var n=Oit(t);if("number"==typeof n)if(kb===n?1:0===n?1:0)return br(1,t);return Dr(1,t)}break;case 61:if(nit(t)){var u=Bit(1,t);if("number"==typeof u)switch(u){case 0:return Kit(t),br(0,t);case 103:return Kit(t),Vit(0,t),br(0,t);case 9:var a=1;break;default:a=0}else a=4===u[0]?Sd(u[3],AKr)?0:1:0;return a?Dr(2,t):(Kit(t),Dr(0,t))}break;case 0:case 103:return br(2,t)}else if(2===e[0]){var i=e[1],f=i[4],c=i[3],s=i[2],o=i[1];return f&&Yit(t,41),eft(t,[2,[0,o,s,c,f]]),rft(0,t),[23,[0,2,[0,o,[0,s,c]],0,0]]}return Dr(2,t)}var pr=0;function dr(r){return vft(pr,kr,r)}return Xk(e,(function(r){var t=Pit(r);return eft(r,8),[0,t,1]})),Xk(n,(function(r){var t=Rit(r),e=vft(0,(function(r){if(eft(r,32),8===Oit(r))var t=0;else if(Uit(r))t=0;else{var e=Ld(wft[13],0,r),n=e[2][1];1-Ld(pft[3],n,r[3])&&zit(r,[13,n]);var u=[0,e];t=1}if(!t)u=0;var a=Rit(r);return rft(0,r),[0,u,a]}),r),n=e[2],u=n[1],a=e[1],i=0===u?1:0;if(i)var f=1-(r[8]||r[9]);else f=i;return f&&uit(r,[0,a,32]),[0,a,[1,[0,u,bnt([0,t],[0,n[2]],0)]]]})),Xk(u,(function(r){var t=[0,0],e=Rit(r),n=vft(0,(function(r){if(eft(r,35),t[1]=Rit(r),8===Oit(r))var e=0;else if(Uit(r))e=0;else{var n=Ld(wft[13],0,r),u=n[2][1];1-Ld(pft[3],u,r[3])&&zit(r,[13,u]);var a=[0,n];e=1}if(!e)a=0;return rft(0,r),a}),r),u=n[1];1-r[8]&&uit(r,[0,u,31]);var a=bnt([0,e],[0,t[1]],0);return[0,u,[3,[0,n[2],a]]]})),Xk(a,(function(r){var t=vft(0,(function(r){eft(r,26),eft(r,4);var t=Nd(wft[7],r);eft(r,5);var e=Nd(wft[2],r),n=1-r[6];return(n?oft(e):n)&&$it(r,e[1]),[34,[0,t,e]]}),r),e=t[1];return Hit(r,[0,e,35]),[0,e,t[2]]})),Xk(i,(function(r){var t=Nd(wft[16],r);return[0,t[1],[0,t[2]]]})),Xk(f,(function(r){1-nit(r)&&zit(r,8),eft(r,61),Qit(r,1);var t=Nd(hft[2],r),e=Nd(hft[3],r);eft(r,79);var n=Nd(hft[1],r);return rft(0,r),Zit(r),[0,t,e,n]})),Xk(c,(function(r){return vft(0,(function(r){return eft(r,60),[10,Nd(f,r)]}),r)})),Xk(s,(function(r){if(Xit(1,r)){var t=vft(0,f,r);return[0,t[1],[30,t[2]]]}return Nd(wft[2],r)})),Xk(o,(function(r,t){var e=r?r[1]:r;1-nit(t)&&zit(t,9),eft(t,62),eft(t,61),Qit(t,1);var n=Nd(hft[2],t),u=Nd(hft[3],t),a=Oit(t);if("number"==typeof a)if(83===a){eft(t,83);var i=[0,Nd(hft[1],t)],f=1}else f=0;else f=0;if(!f)i=0;var c=1-e,s=c?(eft(t,79),[0,Nd(hft[1],t)]):c;return rft(0,t),Zit(t),[0,n,u,s,i]})),Xk(v,(function(r){return vft(0,(function(r){return eft(r,60),[11,Ld(o,TKr,r)]}),r)})),Xk(l,(function(r){var t=Bit(1,r);if("number"==typeof t&&61===t){var e=vft(0,Nd(o,xKr),r);return[0,e[1],[31,e[2]]]}return Nd(wft[2],r)})),Xk(b,(function(r){1-nit(r)&&zit(r,14),eft(r,53);var t=Nd(hft[2],r),e=Nd(hft[3],r),n=Nd(hft[7],r);return[0,t,e,n[2],n[1]]})),Xk(D,(function(r){return vft(0,(function(r){return eft(r,60),[7,Nd(b,r)]}),r)})),Xk(k,(function(r){var t=Xit(1,r);if(t)var e=t;else{var n=eit(r);if(1===n){var u=Bit(1,r);if("number"==typeof u)var a=0;else if(4===u[0])e=1,a=1;else a=0;if(!a)e=0}else if(0===n){var i=Bit(1,r);if("number"==typeof i)switch(i){case 42:case 46:case 47:e=0;var f=1;break;case 15:case 16:case 17:case 18:case 19:case 20:case 21:case 22:case 23:case 24:case 25:case 26:case 27:case 28:case 29:case 30:case 31:case 32:case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 43:case 44:case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 65:case 111:case 112:case 113:case 114:case 115:case 116:case 117:f=0;break;default:e=0,f=1}else switch(i[0]){case 4:if(Ait(i[3]))e=0,f=1;else f=0;break;case 9:case 10:case 11:f=0;break;default:e=0,f=1}if(!f)e=1}else e=0}if(e){var c=vft(0,b,r);return[0,c[1],[24,c[2]]]}return cr(r)})),Xk(p,(function(r){var t=fit(1,r);eft(t,40);var e=Ld(wft[13],0,t),n=Nd(hft[3],t),u=uft(t,41),a=u?[0,Nd(hft[5],t)]:u,i=Oit(t);if("number"==typeof i)var f=0;else if(4===i[0])if(Sd(i[3],SKr))f=0;else{Kit(t);for(var c=0;;){var s=[0,Nd(hft[5],t),c],o=Oit(t);if("number"!=typeof o||9!==o){var v=$Qr(s);f=1;break}eft(t,9);c=s}}else f=0;if(!f)v=0;var l=Oit(t);if("number"==typeof l)if(52===l){Kit(t);var b=Ld(Eft[5],t,0),D=1}else D=0;else D=0;if(!D)b=0;return[0,e,n,Ld(hft[6],1,t),a,v,b]})),Xk(d,(function(r){return vft(0,(function(r){return eft(r,60),[4,Nd(p,r)]}),r)})),Xk(w,(function(r){eft(r,15);var t=Ld(wft[13],0,r),e=Pit(r),n=Nd(hft[3],r),u=Nd(hft[8],r);eft(r,83);var a=Nd(hft[1],r),i=[0,cnt(e,a[1]),[1,[0,n,u,a]]],f=[0,i[1],i],c=Nd(hft[11],r);return rft(0,r),[0,t,f,c]})),Xk(h,(function(r){return vft(0,(function(r){eft(r,60);var t=Oit(r);"number"==typeof t&&64===t&&(zit(r,62),eft(r,64));return[6,Nd(w,r)]}),r)})),Xk(m,(function(r){eft(r,24);var t=Rd(wft[14],r,CKr,37)[2];return rft(0,r),[0,t[1],t[2]]})),Xk(F,(function(r){return vft(0,(function(r){return eft(r,60),[12,Nd(m,r)]}),r)})),Xk(y,(function(r,t){var e=r?r[1]:r,n=Pit(t);if(eft(t,60),nft(t,gKr),!e&&10!==Oit(t)){var u=Oit(t);if("number"==typeof u)var a=0;else if(2===u[0]){var i=u[1],f=i[4],c=i[3],s=i[2],o=i[1];f&&Yit(t,41),eft(t,[2,[0,o,s,c,f]]);var v=[1,[0,o,[0,s,c]]];a=1}else a=0;if(!a)v=[0,Ld(wft[13],0,t)];var l=vft(0,(function(r){eft(r,0);for(var t=0,e=0;;){var n=Oit(r);if("number"==typeof n)if(1===n?1:De===n?1:0){var u=[0,t,$Qr(e)];return eft(r,1),u}var a=Ld(_,_Kr,r),i=a[2],f=a[1];if(t)if(0===t[1][0])if("number"==typeof i)var c=0;else switch(i[0]){case 5:var s=i[1][2];if(s)switch(s[1][0]){case 4:case 6:var o=1;break;default:o=0}else o=0;o||zit(r,73);var v=t;c=1;break;case 9:zit(r,72);v=t,c=1;break;default:c=0}else if("number"==typeof i)c=0;else if(9===i[0]){zit(r,73);v=t,c=1}else c=0;else if("number"==typeof i)c=0;else switch(i[0]){case 5:var l=i[1][2];if(l)switch(l[1][0]){case 4:case 6:var b=t,D=1;break;default:D=0}else D=0;if(!D)b=[0,[1,f]];v=b,c=1;break;case 9:v=[0,[0,f]],c=1;break;default:c=0}if(!c)v=t;t=v,e=[0,a,e]}}),t),b=l[2],D=b[1],k=l[1],p=[0,k,[0,b[2]]],d=cnt(n,k);return[0,d,[8,[0,v,p,D?D[1]:[0,d]]]]}var w=vft(0,E,t),h=w[2];return[0,cnt(n,w[1]),h]})),Xk(E,(function(r){eft(r,10),nft(r,EKr);var t=Nd(hft[9],r);return rft(0,r),[9,t]})),Xk(_,(function(r,t){var e=r?r[1]:r;1-nit(t)&&zit(t,11);var n=Bit(1,t);if("number"==typeof n)switch(n){case 24:return Nd(F,t);case 40:return Nd(d,t);case 46:if(50===Oit(t))return dr(t);break;case 49:if(e)return Ld(A,[0,e],t);break;case 53:return Nd(D,t);case 61:var u=Oit(t);return"number"==typeof u&&50===u&&e?dr(t):Nd(c,t);case 62:return Nd(v,t);case 15:case 64:return Nd(h,t)}else if(4===n[0]&&!Sd(n[3],yKr))return Ld(y,[0,e],t);if(e){var a=Oit(t);return"number"==typeof a&&50===a?(zit(t,76),Nd(wft[2],t)):Nd(F,t)}return Nd(wft[2],t)})),Xk(g,(function(r){nft(r,hKr);var t=Oit(r);if("number"!=typeof t&&2===t[0]){var e=t[1],n=e[4],u=e[3],a=e[2],i=e[1];return n&&Yit(r,41),eft(r,[2,[0,i,a,u,n]]),[0,i,[0,a,u]]}var f=[0,Pit(r),mKr];return Vit(FKr,r),f})),Xk(C,(function(r){return r[2][1]})),Xk(S,(function(r,t,e){var n=r?r[1]:1,u=Oit(t);if("number"==typeof u&&(1===u?1:De===u?1:0))return $Qr(e);1-n&&zit(t,79);var a=vft(0,(function(r){var t=sft(r),e=Oit(r);if("number"==typeof e)var n=0;else if(4===e[0])if(Sd(e[3],wKr))n=0;else{Kit(r);var u=sft(r);ait(r,u);var a=[0,u];n=1}else n=0;if(!n){ait(r,t);a=0}return[0,t,a]}),t);return Rd(S,[0,uft(t,9)],t,[0,a,e])})),Xk(x,(function(r,t){return ZQr((function(t){var e=t[2];return e[2]?0:Rd(wft[15],dKr,r,e[1])}),t)})),Xk(T,(function(r){function t(t){var e=pit(1,fit(1,t)),n=Pit(e);eft(e,49);var u=Oit(e);if("number"==typeof u)if(65<=u){if(kb===u){var a=Pit(e);eft(e,kb);var i=e[26][5],c=Oit(e);if("number"==typeof c)var s=0;else if(4===c[0])if(Sd(c[3],vKr))s=0;else{Kit(e);var v=i?[0,Ld(wft[13],0,e)]:(zit(e,11),0);s=1}else s=0;if(!s)v=0;var l=[0,Nd(g,e)];return rft(0,e),[16,[0,0,[0,[1,a,v]],l,1]]}}else if(13<=u)switch(u-13|0){case 23:var b=vft(0,(function(r){return eft(r,36)}),e);if(ait(e,lnt([0,cnt(n,Pit(e)),lKr])),Git(e))var D=[0,Nd(mft[11],e)];else if(qit(e))D=[0,Ld(Eft[3],e,r)];else if(48===Oit(e))D=[0,Nd(mft[12],e)];else{var p=Nd(wft[10],e);rft(0,e);D=[1,p]}return[15,[0,b[1],D]];case 40:1-nit(e)&&zit(e,13);var d=Nd(k,e),w=d[2];if("number"==typeof w)var h=0;else if(24===w[0]){var m=Nd(C,w[1][1]);ait(e,lnt([0,d[1],m]));h=1}else h=0;return h||TQr(PQr(DKr,bKr)),[16,[0,[0,d],0,0,0]];case 48:if(0!==Bit(1,e)){1-nit(e)&&zit(e,13);var F=Bit(1,e);if("number"==typeof F&&kb===F){eft(e,61);var y=Pit(e);eft(e,kb);var E=Nd(g,e);return rft(0,e),[16,[0,0,[0,[1,y,0]],[0,E],0]]}var _=vft(0,f,e),T=_[2],A=_[1];return ait(e,lnt([0,A,Nd(C,T[1])])),[16,[0,[0,[0,A,[30,T]]],0,0,0]]}break;case 49:var B=vft(0,(function(r){return Ld(o,0,r)}),e),I=B[2],O=B[1];return ait(e,lnt([0,O,Nd(C,I[1])])),[16,[0,[0,[0,O,[31,I]]],0,0,0]];case 0:case 2:case 11:case 14:case 15:case 27:case 35:case 51:var P=Ld(wft[3],[0,r],e),N=P[2],L=P[1];if("number"==typeof N)var R=0;else switch(N[0]){case 2:var M=N[1][1];if(M){var j=M[1];R=2}else{uit(e,[0,L,68]);var U=0;R=1}break;case 14:j=N[1][1],R=2;break;case 21:var X=N[1][1];if(X)j=X[1],R=2;else{uit(e,[0,L,69]);U=0,R=1}break;case 32:U=rZr((function(r,t){return rZr(sr,r,[0,t[2][1],0])}),0,N[1][1]),R=1;break;default:R=0}switch(R){case 0:U=TQr(pKr);var J=0;break;case 1:J=0;break;default:var G=[0,lnt([0,L,Nd(C,j)]),0];J=1}if(!J)G=U;return ZQr((function(r){return ait(e,r)}),G),[16,[0,[0,P],0,0,1]]}var q=Oit(e);if("number"==typeof q)if(61===q){Kit(e);var z=0,V=1}else V=0;else V=0;if(!V)z=1;eft(e,0);var W=Rd(S,0,e,0);eft(e,1);var Y=Oit(e);if("number"==typeof Y)var H=0;else if(4===Y[0])if(Sd(Y[3],kKr))H=0;else{var $=[0,Nd(g,e)];H=1}else H=0;if(!H){Ld(x,e,W);$=0}return rft(0,e),[16,[0,0,[0,[0,W]],$,z]]}return function(r){return vft(0,t,r)}})),Xk(A,(function(r){var t=r?r[1]:r;function e(r){1-nit(r)&&zit(r,11),eft(r,60);var e=pit(1,fit(1,r));eft(e,49);var n=Oit(e);if("number"==typeof n)if(53<=n){if(kb===n){var u=Pit(e);eft(e,kb);var a=e[26][5],i=Oit(e);if("number"==typeof i)var c=0;else if(4===i[0])if(Sd(i[3],cKr))c=0;else{Kit(e);var s=a?[0,Ld(wft[13],0,e)]:(zit(e,11),0);c=1}else c=0;if(!c)s=0;var v=Nd(g,e);return rft(0,e),[5,[0,0,0,[0,[1,u,s]],[0,v]]]}if(!(63<=n))switch(n-53|0){case 0:if(t)return[5,[0,0,[0,[6,vft(0,b,e)]],0,0]];break;case 8:if(t)return[5,[0,0,[0,[4,vft(0,f,e)]],0,0]];break;case 9:return[5,[0,0,[0,[5,vft(0,Nd(o,fKr),e)]],0,0]]}}else{var l=n-15|0;if(!(25<l>>>0))switch(l){case 21:var D=vft(0,(function(r){return eft(r,36)}),e),k=Oit(e);if("number"==typeof k)if(15===k)var d=[0,[1,vft(0,w,e)]],h=1;else if(40===k)d=[0,[2,vft(0,p,e)]],h=1;else h=0;else h=0;if(!h){var F=Nd(hft[1],e);rft(0,e);d=[0,[3,F]]}return[5,[0,[0,D[1]],d,0,0]];case 0:case 9:case 12:case 13:case 25:var y=Oit(e);if("number"==typeof y){if(25<=y)if(29<=y)if(40===y)var E=[0,[2,vft(0,p,e)]],_=2;else _=0;else _=27<=y?1:0;else if(15===y)E=[0,[1,vft(0,w,e)]],_=2;else _=24<=y?1:0;switch(_){case 0:var C=0;break;case 1:"number"==typeof y&&(27===y?zit(e,64):28===y&&zit(e,63)),E=[0,[0,vft(0,m,e)]],C=1;break;default:C=1}if(C)return[5,[0,0,E,0,0]]}throw[0,Wd,oKr]}}var T=Oit(e);"number"==typeof T&&(53===T?zit(e,66):61===T&&zit(e,65));eft(e,0);var A=Rd(S,0,e,0);eft(e,1);var B=Oit(e);if("number"==typeof B)var I=0;else if(4===B[0])if(Sd(B[3],sKr))I=0;else{var O=[0,Nd(g,e)];I=1}else I=0;if(!I){Ld(x,e,A);O=0}return rft(0,e),[5,[0,0,0,[0,[0,A]],O]]}return function(r){return vft(0,e,r)}})),[0,function(r){return vft(M,R,r)},function(r){return vft(X,U,r)},function(r){return vft(tr,rr,r)},function(r){return vft(H,Y,r)},function(r){return vft(nr,er,r)},a,i,n,u,function(r){return vft(I,B,r)},_,A,v,function(r){return vft(P,O,r)},e,T,cr,dr,k,function(r){return vft(ar,ur,r)},l,function(r){return vft(G,J,r)},function(r){return vft(z,q,r)},function(r){return vft(W,V,r)},s,function(r){return vft(K,$,r)},function(r){return vft(Z,Q,r)}]}(Fft),gft=function(r){var t=function r(t,e){return r.fun(t,e)},e=function r(t,e){return r.fun(t,e)},n=function r(t,e){return r.fun(t,e)};function u(r,t){return Nd(wft[24],t)?[0,Ld(n,r,t)]:(uit(r,[0,t[1],24]),0)}function a(t){function e(r){var t=Oit(r);return"number"==typeof t&&79===t?(eft(r,79),[0,Nd(wft[10],r)]):0}function n(n){eft(n,0);for(var u=0,a=0,i=0;;){var c=Oit(n);if("number"==typeof c)if(1===c?1:De===c?1:0){a&&uit(n,[0,a[1],93]);var s=$Qr(i);return eft(n,1),[0,[0,s,83===Oit(n)?[1,Nd(r[9],n)]:kft(n)]]}if(12===Oit(n))var o=vft(0,(function(r){return eft(r,12),f(r,t)}),n),v=[0,[1,[0,o[1],[0,o[2]]]]];else{var l=Pit(n),b=Ld(wft[21],0,n),D=Oit(n);if("number"==typeof D)if(83===D){eft(n,83);var k=vft([0,l],(function(r){return[0,f(r,t),e(r)]}),n),p=k[2],d=b[2];switch(d[0]){case 0:var w=[0,d[1]];break;case 1:w=[1,d[1]];break;case 2:w=TQr(Z$r);break;default:w=[2,d[1]]}v=[0,[0,[0,k[1],[0,w,p[1],p[2],0]]]];var h=1}else h=0;else h=0;if(!h){var m=b[2];if(1===m[0]){var F=m[1],y=F[2][1],E=F[1];(Tit(y)&&Sd(y,tKr)&&Sd(y,eKr)?(uit(n,[0,E,0]),1):0)||Cit(y)&&Hit(n,[0,E,50]);var _=vft([0,l],function(r,t){return function(n){return[0,[0,t,[2,[0,r,kft(n),0]]],e(n)]}}(F,E),n),g=_[2];v=[0,[0,[0,_[1],[0,[1,F],g[1],g[2],1]]]]}else{Vit(rKr,n);v=0}}}if(v){var C=v[1],S=u?(uit(n,[0,C[1][1],61]),0):a;if(0===C[0])var x=u,T=S;else{var A=9===Oit(n)?1:0;x=1,T=A?[0,Pit(n)]:A}1!==Oit(n)&&eft(n,9);u=x,a=T,i=[0,C,i]}else;}}return function(r){return vft(0,n,r)}}function i(t){function e(e){var n=Rit(e);eft(e,6);for(var u=0;;){var a=Oit(e);if("number"==typeof a){if(13<=a)var i=De===a?1:0;else if(7<=a)switch(a-7|0){case 2:eft(e,9);u=[0,0,u];continue;case 5:var c=vft(0,(function(r){return eft(r,12),f(r,t)}),e),s=c[1],o=[1,[0,s,[0,c[2]]]];7!==Oit(e)&&(uit(e,[0,s,60]),9===Oit(e)&&Kit(e));u=[0,[0,o],u];continue;case 0:i=1;break;default:i=0}else i=0;if(i){var v=$Qr(u);return eft(e,7),[1,[0,v,83===Oit(e)?[1,Nd(r[9],e)]:kft(e),bnt([0,n],[0,Rit(e)],0)]]}}var l=vft(0,(function(r){var e=f(r,t),n=Oit(r);if("number"==typeof n)if(79===n){eft(r,79);var u=[0,Nd(wft[10],r)],a=1}else a=0;else a=0;if(!a)u=0;return[0,e,u]}),e),b=l[2],D=[0,[0,l[1],[0,b[1],b[2]]]];7!==Oit(e)&&eft(e,9);u=[0,[0,D],u]}}return function(r){return vft(0,e,r)}}function f(r,t){var e=Oit(r);if("number"==typeof e){if(6===e)return Nd(i(t),r);if(0===e)return Nd(a(t),r)}var n=Rd(wft[14],r,0,t);return[0,n[1],[2,n[2]]]}return Xk(t,(function(r,t){for(var e=kft(r),u=0,a=t[2][1];;){if(!a){var i=[0,[0,$Qr(u),e]];return[0,t[1],i]}var f=a[1];if(0!==f[0]){var c=a[2],s=f[1],o=s[1];if(c){uit(r,[0,o,61]);a=c}else u=[0,[1,[0,o,[0,Ld(n,r,s[2][1])]]],u],a=0}else{var v=f[1],l=v[2];switch(l[0]){case 0:var b=l[2],D=l[1];switch(D[0]){case 0:var k=[0,D[1]];break;case 1:k=[1,D[1]];break;case 2:k=TQr(aKr);break;default:k=[2,D[1]]}var p=b[2];if("number"==typeof p)var d=0;else if(2===p[0]){var w=p[1];if(w[1])d=0;else{var h=w[2],m=[0,w[3]];d=1}}else d=0;if(!d)h=Ld(n,r,b),m=0;var F=[0,[0,[0,v[1],[0,k,h,m,l[3]]]],u];break;case 1:uit(r,[0,l[2][1],92]);F=u;break;default:uit(r,[0,l[2][1],iKr]);F=u}var u=F,a=a[2]}}})),Xk(e,(function(r,t){for(var e=t[2],n=e[2],a=kft(r),i=0,f=e[1];;){if(!f){var c=[1,[0,$Qr(i),a,n]];return[0,t[1],c]}var s=f[1];if(s){var o=s[1];if(0===o[0]){var v=o[1],l=v[2];if("number"!=typeof l&&2===l[0]){var b=l[1];if(!b[1]){i=[0,[0,[0,[0,v[1],[0,b[2],[0,b[3]]]]]],i],f=f[2];continue}}var D=u(r,v);if(D)var k=D[1],p=[0,[0,[0,[0,k[1],[0,k,0]]]],i];else p=i;i=p,f=f[2];continue}var d=f[2],w=o[1],h=w[1];if(d){uit(r,[0,h,60]);f=d;continue}var m=u(r,w[2][1]);i=m?[0,[0,[1,[0,h,[0,m[1]]]]],i]:i,f=0}else i=[0,0,i],f=f[2]}})),Xk(n,(function(r,n){var u=n[2],a=n[1];if("number"!=typeof u)switch(u[0]){case 0:return Ld(e,r,[0,a,u[1]]);case 10:var i=u[1],f=i[2][1],c=i[1];if(!(r[6]&&xit(f)?(uit(r,[0,c,47]),1):0)&&1-r[6])if(!(r[17]&&gd(f,nKr)?(uit(r,[0,c,88]),1):0)){var s=r[18];(s?gd(f,uKr):s)&&uit(r,[0,c,87])}return[0,a,[2,[0,i,kft(r),0]]];case 19:return Ld(t,r,[0,a,u[1]])}return[0,a,[3,[0,a,u]]]})),[0,t,e,n,a,i,f]}(hft),Cft=function r(t){return r.fun(t)},Sft=function r(t,e,n){return r.fun(t,e,n)},xft=function r(t){return r.fun(t)},Tft=function r(t,e){return r.fun(t,e)},Aft=function r(t,e){return r.fun(t,e)},Bft=function r(t,e){return r.fun(t,e)},Ift=function r(t,e){return r.fun(t,e)},Oft=function r(t,e){return r.fun(t,e)},Pft=function r(t){return r.fun(t)},Nft=function r(t){return r.fun(t)},Lft=function r(t){return r.fun(t)},Rft=function r(t,e,n){return r.fun(t,e,n)},Mft=function r(t,e){return r.fun(t,e)},jft=function r(t,e,n){return r.fun(t,e,n)},Uft=function r(t){return r.fun(t)},Xft=function r(t){return r.fun(t)},Jft=function(r){function t(t){Qit(t,0);var e=vft(0,(function(t){eft(t,0),eft(t,12);var e=Nd(r[10],t);return eft(t,1),[0,e]}),t);return Zit(t),e}function e(t){return[0,1===Oit(t)?0:[0,Nd(r[7],t)]]}function n(r){Qit(r,0);var t=vft(0,(function(r){eft(r,0);var t=e(r);return eft(r,1),t}),r);return Zit(r),t}function u(t){Qit(t,0);var n=vft(0,(function(t){eft(t,0);var n=Oit(t);if("number"==typeof n)if(12===n){eft(t,12);var u=[3,Nd(r[10],t)],a=1}else a=0;else a=0;if(!a)u=[2,e(t)];return eft(t,1),u}),t);return Zit(t),[0,n[1],n[2]]}function a(r){var t=Pit(r),e=Oit(r);if("number"==typeof e)var n=0;else if(7===e[0]){var u=e[1];n=1}else n=0;if(!n){Vit(O$r,r);u=P$r}return Kit(r),[0,t,[0,u]]}function i(r){var t=Bit(1,r);if("number"==typeof t){if(10===t)for(var e=vft(0,(function(r){var t=[0,a(r)];return eft(r,10),[0,t,a(r)]}),r);;){var n=Oit(r);if("number"!=typeof n||10!==n)return[2,e];var u=function(r){return function(t){return eft(t,10),[0,[1,r],a(t)]}}(e);e=vft([0,e[1]],u,r)}if(83===t)return[1,vft(0,(function(r){var t=a(r);return eft(r,83),[0,t,a(r)]}),r)]}return[0,a(r)]}function f(r){return vft(0,(function(r){var t=Bit(1,r);if("number"==typeof t)if(83===t)var e=[1,vft(0,(function(r){var t=a(r);return eft(r,83),[0,t,a(r)]}),r)],u=1;else u=0;else u=0;if(!u)e=[0,a(r)];var i=Oit(r);if("number"==typeof i)if(79===i){eft(r,79);var f=Rit(r),c=Oit(r),s=Rit(r);if("number"==typeof c)if(0===c){var o=n(r),v=o[2],l=o[1];v[1]||uit(r,[0,l,51]);var b=[0,[1,l,v]],D=1}else D=0;else if(8===c[0]){var k=c[1];eft(r,c);var p=[0,k[2]],d=bnt([0,f],[0,s],0);b=[0,[0,k[1],[0,p,k[3],d]]],D=1}else D=0;if(!D){zit(r,52);b=[0,[0,Pit(r),[0,I$r,B$r,bnt([0,f],[0,s],0)]]]}var w=b,h=1}else h=0;else h=0;if(!h)w=0;return[0,e,w]}),r)}function c(r){return vft(0,(function(r){eft(r,95);var e=Oit(r);if("number"==typeof e)if(96===e)var n=In,u=1;else u=0;else u=0;if(!u)for(var a=0,c=i(r);;){var s=Oit(r);if("number"==typeof s){if(Au<=s)if(De===s)var o=1;else if(kb<=s){var v=0;o=0}else o=1;else if(96===s)o=1;else{if(0===s){a=[0,[1,t(r)],a];continue}v=0,o=0}if(o){var l=$Qr(a);n=[0,ns,[0,c,uft(r,Au),l]],v=1}}else v=0;if(v)break;a=[0,[0,f(r)],a]}return eft(r,96),n}),r)}function s(r){return vft(0,(function(r){eft(r,95),eft(r,Au);var t=Oit(r);if("number"==typeof t)if(96===t)var e=In,n=1;else n=0;else n=0;if(!n)e=[0,ns,[0,i(r)]];return eft(r,96),e}),r)}var o=function r(t){return r.fun(t)},v=function r(t){return r.fun(t)},l=function r(t){return r.fun(t)};function b(r){switch(r[0]){case 0:return r[1][2][1];case 1:var t=r[1][2],e=PQr(x$r,t[2][2][1]);return PQr(t[1][2][1],e);default:var n=r[1][2],u=n[1];return PQr(0===u[0]?u[1][2][1]:b([2,u[1]]),PQr(T$r,n[2][2][1]))}}return Xk(o,(function(r){var t=Oit(r);if("number"==typeof t){if(0===t)return u(r)}else if(8===t[0]){var e=t[1];return eft(r,t),[0,e[1],[4,[0,e[2],e[3]]]]}var n=Nd(l,r),a=n[2],i=n[1];return In<=a[1]?[0,i,[1,a[2]]]:[0,i,[0,a[2]]]})),Xk(v,(function(r){var t=c(r);Zit(r);var e=t[2];if("number"==typeof e?0:e[2][2])var n=vft(0,(function(r){return 0}),r),u=870530776;else{Qit(r,3);for(var a=Pit(r),i=0;;){var f=mit(r),l=Oit(r);if("number"==typeof l){if(95===l){Qit(r,2);var D=Oit(r),k=Bit(1,r);if("number"==typeof D)if(95===D)if("number"==typeof k){if(Au===k)var p=1;else if(De===k)p=1;else{var d=1;p=0}if(p){var w=s(r),h=w[2],m=w[1],F="number"==typeof h?[0,In,m]:[0,ns,[0,m,h[2]]],y=r[22][1];if(y){var E=y[2];if(E)var _=E[2],g=1;else g=0}else g=0;if(!g)_=TQr(Tzr);r[22][1]=_;var C=eit(r),S=Zat(r[23][1],C);r[24][1]=S;var x=[0,$Qr(i),f,F],T=1;d=0}}else d=1;else d=1;else d=1;if(d){var A=Nd(v,r),B=A[2],I=A[1];i=[0,In<=B[1]?[0,I,[1,B[2]]]:[0,I,[0,B[2]]],i];continue}}else if(De===l){Vit(0,r);x=[0,$Qr(i),f,un],T=1}else{var O=1;T=0}if(T){var P=f?f[1]:a;n=[0,cnt(a,P),x[1]],u=x[3],O=0}}else O=1;if(!O)break;i=[0,Nd(o,r),i]}}if("number"==typeof u)var N=0;else{var L=u[1];if(ns===L){var R=u[2],M=t[2];if("number"==typeof M)zit(r,A$r);else{var j=b(M[2][1]);Sd(b(R[2][1]),j)&&zit(r,[15,j])}var U=R[1],X=1}else if(In===L){var J=t[2];"number"==typeof J||ns===J[1]&&zit(r,[15,b(J[2][1])]),U=u[2],X=1}else N=0,X=0;if(X){var G=U;N=1}}if(!N)G=t[1];var q=t[2],z=t[1];if("number"==typeof q){if("number"==typeof u)var V=0;else{var W=u[1];if(ns===W)var Y=u[2][1],H=1;else if(In===W)Y=u[2],H=1;else V=0,H=0;if(H){var $=Y;V=1}}if(!V)$=G;var K=[0,In,[0,z,$,n]]}else{if("number"==typeof u)var Q=0;else if(ns===u[1]){var Z=[0,u[2]];Q=1}else Q=0;if(!Q)Z=0;K=[0,ns,[0,[0,z,q[2]],Z,n]]}return[0,cnt(t[1],G),K]})),Xk(l,(function(r){return Qit(r,2),Nd(v,r)})),[0,t,e,n,u,a,i,f,c,s,o,v,l]}(wft),Gft=Eft[3],qft=yft[3],zft=yft[1],Vft=yft[6],Wft=Eft[2],Yft=Eft[1],Hft=Eft[4],$ft=yft[5],Kft=yft[7],Qft=Jft[12],Zft=gft[6],rct=gft[3];Xk(Cft,(function(r){var t=Ld(Tft,r,(function(r){return 0})),e=Pit(r);if(eft(r,De),t)var n=WQr($Qr(t))[1],u=cnt(WQr(t)[1],n);else u=e;return[0,u,t,$Qr(r[2][1])]})),Xk(Sft,(function(r,t,e){for(var n=oit(1,r),u=nQr;;){var a=u[2],i=u[1],f=Oit(n);if("number"==typeof f)if(De===f)var c=[0,n,i,a],s=1;else s=0;else s=0;if(!s)if(Nd(t,f))c=[0,n,i,a];else{if("number"==typeof f)var o=0;else if(2===f[0]){var v=Nd(e,n),l=[0,v,a],b=v[2];if("number"!=typeof b&&17===b[0]){var D=b[1][2];if(D){var k=n[6]||gd(D[1],eQr);n=fit(k,n),u=[0,[0,f,i],l];continue}}c=[0,n,i,l],o=1}else o=0;if(!o)c=[0,n,i,a]}var p=oit(0,n);return ZQr((function(r){if("number"!=typeof r&&2===r[0]){var t=r[1],e=t[4];return e?Hit(p,[0,t[1],41]):e}return TQr(PQr(aQr,PQr(Ent(r),uQr)))}),$Qr(i)),[0,p,c[3]]}})),Xk(xft,(function(r){var t=Nd(Eft[6],r),e=Oit(r);if("number"==typeof e){var n=e-49|0;if(!(11<n>>>0))switch(n){case 0:return Ld(_ft[16],t,r);case 1:Nd(Wit(r),t);var u=Bit(1,r);return Nd("number"==typeof u&&4===u?_ft[17]:_ft[18],r);case 11:if(49===Bit(1,r))return Nd(Wit(r),t),Ld(_ft[12],0,r)}}return Ld(Oft,[0,t],r)})),Xk(Tft,(function(r,t){var e=Rd(Sft,r,t,xft);return rZr((function(r,t){return[0,t,r]}),Ld(Aft,t,e[1]),e[2])})),Xk(Aft,(function(r,t){for(var e=0;;){var n=Oit(t);if("number"==typeof n&&De===n)return $Qr(e);if(Nd(r,n))return $Qr(e);e=[0,Nd(xft,t),e]}})),Xk(Bft,(function(r,t){var e=Rd(Sft,t,r,(function(r){return Ld(Oft,0,r)})),n=e[1];return[0,rZr((function(r,t){return[0,t,r]}),Ld(Ift,r,n),e[2]),n[6]]})),Xk(Ift,(function(r,t){for(var e=0;;){var n=Oit(t);if("number"==typeof n&&De===n)return $Qr(e);if(Nd(r,n))return $Qr(e);e=[0,Ld(Oft,0,t),e]}})),Xk(Oft,(function(r,t){var e=r?r[1]:r;1-qit(t)&&Nd(Wit(t),e);var n=Oit(t);if("number"==typeof n){if(27===n)return Nd(_ft[27],t);if(28===n)return Nd(_ft[3],t)}if(Git(t))return Nd(mft[11],t);if(qit(t))return Ld(Gft,t,e);if("number"==typeof n){var u=n+Tl|0;if(!(14<u>>>0))switch(u){case 0:if(t[26][1])return Nd(mft[12],t);break;case 5:return Nd(_ft[19],t);case 12:return Ld(_ft[11],0,t);case 13:return Nd(_ft[25],t);case 14:return Nd(_ft[21],t)}}return Nd(Pft,t)})),Xk(Pft,(function(r){var t=Oit(r);if("number"==typeof t)switch(t){case 0:return Nd(_ft[7],r);case 8:return Nd(_ft[15],r);case 19:return Nd(_ft[22],r);case 20:return Nd(_ft[23],r);case 22:return Nd(_ft[24],r);case 23:return Nd(_ft[4],r);case 24:return Nd(_ft[26],r);case 25:return Nd(_ft[5],r);case 26:return Nd(_ft[6],r);case 32:return Nd(_ft[8],r);case 35:return Nd(_ft[9],r);case 37:return Nd(_ft[14],r);case 39:return Nd(_ft[1],r);case 59:return Nd(_ft[10],r);case 110:return Vit(rQr,r),[0,Pit(r),1];case 16:case 43:return Nd(_ft[2],r);case 1:case 5:case 7:case 9:case 10:case 11:case 12:case 17:case 18:case 33:case 34:case 36:case 38:case 41:case 42:case 49:case 80:case 83:return Vit(tQr,r),Kit(r),Nd(Pft,r)}if(Git(r)){var e=Nd(mft[11],r);return $it(r,e[1]),e}if("number"==typeof t&&28===t&&6===Bit(1,r)){var n=Iit(1,r);return uit(r,[0,cnt(Pit(r),n),89]),Nd(_ft[17],r)}return Jit(r)?Nd(_ft[20],r):qit(r)?(Vit(0,r),Kit(r),Nd(_ft[17],r)):Nd(_ft[17],r)})),Xk(Nft,(function(r){var t=Nd(yft[1],r),e=Oit(r);return"number"==typeof e&&9===e?Ld(yft[8],r,[0,t,0]):t})),Xk(Lft,(function(r){var t=Nd(yft[2],r),e=Oit(r);if("number"==typeof e&&9===e){var n=[0,Ld(Fft[1],r,t),0];return[0,Ld(yft[8],r,n)]}return t})),Xk(Rft,(function(r,t,e){var n=e[2][1],u=e[1];if(Sd(n,KKr)){if(Sd(n,QKr))return Sd(n,ZKr)?Cit(n)?Hit(t,[0,u,50]):Tit(n)?uit(t,[0,u,[9,gnt(n)]]):r&&xit(n)?Hit(t,[0,u,r[1]]):0:t[17]?uit(t,[0,u,0]):Hit(t,[0,u,50]);if(t[6])return Hit(t,[0,u,50]);var a=t[14];return a?uit(t,[0,u,[9,gnt(n)]]):a}var i=t[18];return i?uit(t,[0,u,0]):i})),Xk(Mft,(function(r,t){var e=sft(t);return Rd(Rft,r,t,e),e})),Xk(jft,(function(r,t,e){var n=t?t[1]:t;return vft(0,(function(r){var t=1-n,u=Ld(Mft,[0,e],r),a=t?82===Oit(r)?1:0:t;return a&&(1-nit(r)&&zit(r,10),eft(r,82)),[0,u,Nd(hft[10],r),a]}),r)})),Xk(Uft,(function(r){var t=Pit(r);eft(r,0);var e=Ld(Ift,(function(r){return 1===r?1:0}),r),n=Pit(r);return eft(r,1),[0,cnt(t,n),[0,e]]})),Xk(Xft,(function(r){var t=Pit(r);eft(r,0);var e=Ld(Bft,(function(r){return 1===r?1:0}),r),n=Pit(r);eft(r,1);var u=e[2],a=[0,e[1]];return[0,cnt(t,n),a,u]})),Rd(O1r,cQr,wft,[0,Cft,Pft,Oft,Ift,Bft,Aft,Nft,Lft,qft,zft,Vft,Wft,Mft,jft,Rft,Uft,Xft,Qft,Zft,rct,Yft,Gft,Hft,$ft,Kft]);var tct=[0,0],ect=Qp,nct=Kp,uct=function(r){return Zp(hZr(r))},act=function(r){return $p(hZr(r))},ict=function(r,t,e){try{var n=new RegExp(t.toString(),e.toString())}catch(t){tct[1]=[0,[0,r,22],tct[1]];n=new RegExp(bo,e.toString())}return n},fct=function(r){function t(r,t){return act($Qr(QQr(r,t)))}function e(r,t){return t?Nd(r,t[1]):w2r}function n(r,t){return 0===t[0]?w2r:Nd(r,t[1])}function u(r){return uct([0,[0,WCr,r[1]],[0,[0,VCr,r[2]],0]])}function a(r){var t=r[1];if(t)var e=t[1],n="number"==typeof e?Tn:e[1].toString();else n=w2r;var a=[0,[0,GCr,u(r[3])],0];return uct([0,[0,zCr,n],[0,[0,qCr,u(r[2])],a]])}function i(u){function i(t,e,n,i){var f=r[1];if(f){if(u)var c=u[1],s=[0,wnt(c,e[3]),0],o=[0,[0,Hkr,act([0,wnt(c,e[2]),s])],0];else o=u;var v=LQr(o,[0,[0,$kr,a(e)],0])}else v=f;if(0===r[3])var l=0;else if(n){var b=n[1],D=b[1];if(D){var k=b[2];if(k)var p=[0,[0,Kkr,pr(k)],0],d=[0,[0,Qkr,pr(D)],p];else d=[0,[0,Zkr,pr(D)],0];var w=d}else{var h=b[2];w=h?[0,[0,rpr,pr(h)],0]:h}var m=w;l=1}else l=0;if(!l)m=0;return uct(HQr(LQr(v,LQr(m,[0,[0,tpr,t.toString()],0])),i))}function f(r){return t(d,r)}function c(r){var e=r[2];switch(e[2]){case 0:var n=gEr;break;case 1:n=CEr;break;default:n=SEr}var u=[0,[0,xEr,n.toString()],0],a=[0,[0,TEr,t(z,e[1])],u];return i(AEr,r[1],0,a)}function s(r){var n=r[2],u=[0,[0,YFr,t(P,n[3])],0],a=[0,[0,HFr,Y(0,n[4])],u],f=[0,[0,$Fr,e(er,n[2])],a],c=[0,[0,KFr,y(n[1])],f];return i(QFr,r[1],0,c)}function o(r,n){var u=n[2],a=u[4];if(a)var f=a[1][2],c=[0,f[1]],s=f[2];else c=0,s=0;var o=[0,[0,Lmr,t(B,u[6])],0],v=[0,[0,Rmr,t(I,u[5])],o],l=[0,[0,Mmr,e(ur,s)],v],b=[0,[0,jmr,e(_,c)],l],D=[0,[0,Umr,e(er,u[3])],b],k=u[2],p=[0,[0,Ymr,t(O,k[2][1])],0],d=[0,[0,Xmr,i(Hmr,k[1],0,p)],D],w=[0,[0,Jmr,e(y,u[1])],d];return i(r,n[1],u[7],w)}function v(r,t){var n=t[2],u=r?xmr:Tmr,a=[0,[0,Amr,e($,n[4])],0],f=[0,[0,Bmr,e($,n[3])],a],c=[0,[0,Imr,e(er,n[2])],f],s=[0,[0,Omr,y(n[1])],c];return i(u,t[1],0,s)}function l(r){var t=r[2],n=[0,[0,_mr,$(t[3])],0],u=[0,[0,gmr,e(er,t[2])],n],a=[0,[0,Cmr,y(t[1])],u];return i(Smr,r[1],0,a)}function b(r){var n=r[2],u=n[4],a=act(u?[0,P(u[1]),0]:0),f=[0,[0,umr,t(P,n[5])],0],c=[0,[0,imr,a],[0,[0,amr,t(I,n[6])],f]],s=[0,[0,fmr,Y(0,n[3])],c],o=[0,[0,cmr,e(er,n[2])],s],v=[0,[0,smr,y(n[1])],o];return i(omr,r[1],0,v)}function D(r){var t=r[2],n=t[2],u=t[1],a=cnt(u[1],n[1]),f=[0,[0,tmr,e(wr,t[3])],0],c=[0,[0,emr,C(a,[0,u,[1,n],0])],f];return i(nmr,r[1],0,c)}function k(r){var t=r[2],e=t[2],n=t[1],u=0===e[0]?n[1]:e[1][1],a=[0,[0,Zhr,C(cnt(n[1],u),[0,n,e,0])],0];return i(rmr,r[1],0,a)}function p(r){var t=[0,[0,Khr,f(r[2][1])],0];return i(Qhr,r[1],0,t)}function d(r){var n=r[2],u=r[1];if("number"==typeof n)return i(0===n?ipr:fpr,u,0,0);switch(n[0]){case 0:return p([0,u,n[1]]);case 1:var a=n[1],f=[0,[0,cpr,e(y,a[1])],0];return i(spr,u,a[2],f);case 2:return o(Pmr,[0,u,n[1]]);case 3:var w=n[1],h=[0,[0,opr,e(y,w[1])],0];return i(vpr,u,w[2],h);case 4:return b([0,u,n[1]]);case 5:var m=n[1],F=m[4],E=m[3],g=m[2];if(E){var C=E[1];if(0!==C[0]&&!C[2])return i(bpr,u,0,[0,[0,lpr,e(G,F)],0])}if(g){var B=g[1];switch(B[0]){case 0:var I=k(B[1]);break;case 1:I=D(B[1]);break;case 2:I=b(B[1]);break;case 3:I=$(B[1]);break;case 4:I=l(B[1]);break;case 5:I=v(1,B[1]);break;default:I=s(B[1])}var O=I}else O=w2r;var L=[0,[0,Dpr,e(G,F)],0],M=[0,[0,ppr,O],[0,[0,kpr,A(E)],L]],j=m[1];return i(wpr,u,0,[0,[0,dpr,!!(j?1:j)],M]);case 6:return D([0,u,n[1]]);case 7:var U=n[1],X=[0,[0,vmr,t(P,U[3])],0],J=[0,[0,lmr,Y(0,U[4])],X],q=[0,[0,bmr,e(er,U[2])],J];return i(kmr,u,0,[0,[0,Dmr,y(U[1])],q]);case 8:var z=n[1],V=z[1],W=0===V[0]?y(V[1]):G(V[1]),H=0===z[3][0]?"CommonJS":"ES";return i(ypr,u,0,[0,[0,Fpr,W],[0,[0,mpr,p(z[2])],[0,[0,hpr,H],0]]]);case 9:return i(_pr,u,0,[0,[0,Epr,tr(n[1])],0]);case 10:var K=n[1],Q=[0,[0,mmr,$(K[3])],0],Z=[0,[0,Fmr,e(er,K[2])],Q];return i(Emr,u,0,[0,[0,ymr,y(K[1])],Z]);case 11:return v(1,[0,u,n[1]]);case 12:return k([0,u,n[1]]);case 13:var rr=n[1],nr=[0,[0,gpr,_(rr[2])],0],ur=[0,[0,Cpr,d(rr[1])],nr];return i(Spr,u,rr[3],ur);case 14:var ar=n[1],ir=ar[2];switch(ir[0]){case 0:var fr=ir[1],cr=[0,[0,PFr,!!fr[2]],0],sr=fr[1],or=i(LFr,u,0,[0,[0,NFr,t((function(r){var t=r[2],e=[0,[0,BFr,!!t[2][2]],0],n=[0,[0,IFr,y(t[1])],e];return i(OFr,r[1],0,n)}),sr)],cr]);break;case 1:var vr=ir[1],lr=[0,[0,RFr,!!vr[2]],0],br=vr[1];or=i(jFr,u,0,[0,[0,MFr,t((function(r){var t=r[2],e=t[2],n=e[2],u=[0,[0,xFr,i(fEr,e[1],0,[0,[0,iEr,n[1]],[0,[0,aEr,n[2].toString()],0]])],0],a=[0,[0,TFr,y(t[1])],u];return i(AFr,r[1],0,a)}),br)],lr]);break;case 2:var Dr=ir[1],kr=Dr[1];if(0===kr[0])var pr=KQr((function(r){var t=[0,[0,CFr,y(r[2][1])],0];return i(SFr,r[1],0,t)}),kr[1]);else pr=KQr((function(r){var t=r[2],e=[0,[0,EFr,G(t[2])],0],n=[0,[0,_Fr,y(t[1])],e];return i(gFr,r[1],0,n)}),kr[1]);var dr=[0,[0,UFr,!!Dr[2]],0];or=i(JFr,u,0,[0,[0,XFr,act(pr)],dr]);break;default:var hr=ir[1][1];or=i(qFr,u,0,[0,[0,GFr,t((function(r){var t=[0,[0,FFr,y(r[2][1])],0];return i(yFr,r[1],0,t)}),hr)],0])}return i(WFr,u,0,[0,[0,VFr,y(ar[1])],[0,[0,zFr,or],0]]);case 15:var mr=n[1][2],Fr=0===mr[0]?d(mr[1]):_(mr[1]);return i(Apr,u,0,[0,[0,Tpr,Fr],[0,[0,xpr,T(1).toString()],0]]);case 16:var yr=n[1],Er=yr[4],_r=yr[3],gr=yr[2];if(gr){var Cr=gr[1];if(0!==Cr[0]&&!Cr[2]){var Sr=[0,[0,Bpr,T(Er).toString()],0];return i(Opr,u,0,[0,[0,Ipr,e(G,_r)],Sr])}}var xr=[0,[0,Ppr,T(Er).toString()],0],Tr=[0,[0,Npr,e(G,_r)],xr],Ar=[0,[0,Lpr,A(gr)],Tr];return i(Mpr,u,0,[0,[0,Rpr,e(d,yr[1])],Ar]);case 17:var Br=n[1],Ir=[0,[0,jpr,e(ect,Br[2])],0];return i(Xpr,u,0,[0,[0,Upr,_(Br[1])],Ir]);case 18:var Or=n[1],Pr=[0,[0,Jpr,d(Or[4])],0],Nr=[0,[0,Gpr,e(_,Or[3])],Pr],Lr=[0,[0,qpr,e(_,Or[2])],Nr];return i(Vpr,u,0,[0,[0,zpr,e((function(r){return 0===r[0]?c(r[1]):_(r[1])}),Or[1])],Lr]);case 19:var Rr=n[1],Mr=Rr[1],jr=0===Mr[0]?c(Mr[1]):N(Mr[1]),Ur=[0,[0,Wpr,!!Rr[4]],0],Xr=[0,[0,Ypr,d(Rr[3])],Ur];return i(Kpr,u,0,[0,[0,$pr,jr],[0,[0,Hpr,_(Rr[2])],Xr]]);case 20:var Jr=n[1],Gr=Jr[1],qr=Jr[4]?Qpr:Zpr,zr=0===Gr[0]?c(Gr[1]):N(Gr[1]),Vr=[0,[0,rdr,d(Jr[3])],0];return i(qr,u,0,[0,[0,edr,zr],[0,[0,tdr,_(Jr[2])],Vr]]);case 21:var Wr=n[1],Yr=Wr[7],Hr=Wr[3],$r=0===Hr[0]?Hr[1]:TQr(bhr),Kr=0===Yr[0]?0:[0,Yr[1]],Qr=[0,[0,Dhr,e(er,Wr[8])],0],Zr=[0,[0,phr,!1],[0,[0,khr,e(tr,Kr)],Qr]],rt=[0,[0,dhr,e(wr,Wr[6])],Zr],tt=[0,[0,hhr,!!Wr[4]],[0,[0,whr,!!Wr[5]],rt]],et=[0,[0,mhr,p($r)],tt],nt=[0,[0,Fhr,R(Wr[2])],et];return i(Ehr,u,0,[0,[0,yhr,e(y,Wr[1])],nt]);case 22:var ut=n[1],at=[0,[0,ndr,e(d,ut[3])],0],it=[0,[0,udr,d(ut[2])],at],ft=[0,[0,adr,_(ut[1])],it];return i(idr,u,ut[4],ft);case 23:var ct=n[1],st=ct[4],ot=ct[3];if(st){var vt=st[1];if(0===vt[0])var lt=KQr((function(r){var t=r[1],e=r[3],n=r[2],u=n?cnt(e[1],n[1][1]):e[1],a=n?n[1]:e;if(t)switch(t[1]){case 0:var f=bt,c=1;break;case 1:f=Ss,c=1;break;default:c=0}else c=0;if(!c)f=w2r;var s=[0,[0,CCr,y(a)],[0,[0,gCr,f],0]];return i(xCr,u,0,[0,[0,SCr,y(e)],s])}),vt[1]);else{var Dt=vt[1],kt=[0,[0,ECr,y(Dt[2])],0];lt=[0,i(_Cr,Dt[1],0,kt),0]}var pt=lt}else pt=st;if(ot)var dt=ot[1],wt=[0,[0,FCr,y(dt)],0],ht=[0,i(yCr,dt[1],0,wt),pt];else ht=pt;switch(ct[1]){case 0:var mt=fdr;break;case 1:mt=cdr;break;default:mt=sdr}var Ft=[0,[0,odr,mt.toString()],0],yt=[0,[0,vdr,G(ct[2])],Ft];return i(bdr,u,0,[0,[0,ldr,act(ht)],yt]);case 24:return s([0,u,n[1]]);case 25:var Et=n[1],_t=[0,[0,Ddr,d(Et[2])],0];return i(pdr,u,0,[0,[0,kdr,y(Et[1])],_t]);case 26:var gt=n[1],Ct=[0,[0,ddr,e(_,gt[1])],0];return i(wdr,u,gt[2],Ct);case 27:var St=n[1],xt=[0,[0,hdr,t(S,St[2])],0];return i(Fdr,u,0,[0,[0,mdr,_(St[1])],xt]);case 28:return i(Edr,u,0,[0,[0,ydr,_(n[1][1])],0]);case 29:var Tt=n[1],At=[0,[0,_dr,e(p,Tt[3])],0],Bt=[0,[0,gdr,e(x,Tt[2])],At],It=[0,[0,Cdr,p(Tt[1])],Bt];return i(Sdr,u,Tt[4],It);case 30:return l([0,u,n[1]]);case 31:return v(0,[0,u,n[1]]);case 32:return c([0,u,n[1]]);case 33:var Ot=n[1],Pt=[0,[0,xdr,d(Ot[2])],0];return i(Adr,u,0,[0,[0,Tdr,_(Ot[1])],Pt]);default:var Nt=n[1],Lt=[0,[0,Bdr,d(Nt[2])],0];return i(Odr,u,0,[0,[0,Idr,_(Nt[1])],Lt])}}function w(r){var e=r[2],n=[0,[0,jgr,i($gr,e[2],0,0)],0],u=[0,[0,Ugr,t(sr,e[3][2])],n],a=[0,[0,Xgr,i(Wgr,e[1],0,0)],u];return i(Jgr,r[1],0,a)}function h(r){var n=r[2],u=[0,[0,Ngr,t(sr,n[3][2])],0],a=[0,[0,Lgr,e(fr,n[2])],u],f=n[1],c=f[2],s=[0,[0,Ggr,!!c[2]],0],o=[0,[0,qgr,t(ir,c[3])],s],v=[0,[0,zgr,br(c[1])],o],l=[0,[0,Rgr,i(Vgr,f[1],0,v)],a];return i(Mgr,r[1],0,l)}function m(r){var e=r[2],n=[0,[0,DEr,t(_,e[2])],0],u=[0,[0,kEr,t(q,e[1])],n];return i(pEr,r[1],0,u)}function F(r){var t=r[2],e=t[2],n=t[1],u=r[1];if("number"==typeof n)var a=w2r;else switch(n[0]){case 0:a=n[1].toString();break;case 1:a=!!n[1];break;case 2:a=n[1];break;case 3:a=TQr($yr);break;default:var f=n[1];a=ict(u,f[1],f[2])}if("number"==typeof n)var c=0;else if(4===n[0]){var s=n[1],o=[0,[0,Zyr,uct([0,[0,Qyr,s[1].toString()],[0,[0,Kyr,s[2].toString()],0]])],0],v=[0,[0,tEr,a],[0,[0,rEr,e.toString()],o]];c=1}else c=0;if(!c)v=[0,[0,nEr,a],[0,[0,eEr,e.toString()],0]];return i(uEr,u,t[3],v)}function y(r){var t=r[2];return i(Mhr,r[1],t[2],[0,[0,Rhr,t[1].toString()],[0,[0,Lhr,w2r],[0,[0,Nhr,!1],0]]])}function E(r){var t=r[2],n=t[7],u=t[3],a=0===u[0]?u[1]:TQr(_hr),f=0===n[0]?0:[0,n[1]],c=[0,[0,ghr,e(er,t[8])],0],s=[0,[0,Shr,!1],[0,[0,Chr,e(tr,f)],c]],o=[0,[0,xhr,e(wr,t[6])],s],v=[0,[0,Ahr,!!t[4]],[0,[0,Thr,!!t[5]],o]],l=[0,[0,Bhr,p(a)],v],b=[0,[0,Ihr,R(t[2])],l],D=[0,[0,Ohr,e(y,t[1])],b];return i(Phr,r[1],0,D)}function _(r){var n=r[2],u=r[1];if("number"==typeof n)return i(0===n?Pdr:Ndr,u,0,0);switch(n[0]){case 0:var a=n[1],f=a[1],c=[0,[0,Ldr,t((function(r){return e(X,r)}),f)],0];return i(Rdr,u,a[2],c);case 1:var s=n[1],v=s[7],l=s[3],b=0===l[0]?[0,p(l[1]),0]:[0,_(l[1]),1],D=0===v[0]?0:[0,v[1]],k=[0,[0,Mdr,e(er,s[8])],0],d=[0,[0,jdr,e(tr,D)],k],g=[0,[0,Udr,!!b[2]],d],C=[0,[0,Jdr,!1],[0,[0,Xdr,e(wr,s[6])],g]],S=[0,[0,qdr,b[1]],[0,[0,Gdr,!!s[4]],C]];return i(Wdr,u,0,[0,[0,Vdr,w2r],[0,[0,zdr,R(s[2])],S]]);case 2:var x=n[1],T=x[1];if(T){switch(T[1]){case 0:var A=qlr;break;case 1:A=zlr;break;case 2:A=Vlr;break;case 3:A=Wlr;break;case 4:A=Ylr;break;case 5:A=Hlr;break;case 6:A=$lr;break;case 7:A=Klr;break;case 8:A=Qlr;break;case 9:A=Zlr;break;case 10:A=rbr;break;default:A=tbr}var B=A}else B=Ydr;var I=[0,[0,Hdr,_(x[3])],0],O=[0,[0,$dr,N(x[2])],I];return i(Qdr,u,0,[0,[0,Kdr,B.toString()],O]);case 3:var P=n[1],L=[0,[0,Zdr,_(P[3])],0],M=[0,[0,rwr,_(P[2])],L];switch(P[1]){case 0:var U=ylr;break;case 1:U=Elr;break;case 2:U=_lr;break;case 3:U=glr;break;case 4:U=Clr;break;case 5:U=Slr;break;case 6:U=xlr;break;case 7:U=Tlr;break;case 8:U=Alr;break;case 9:U=Blr;break;case 10:U=Ilr;break;case 11:U=Olr;break;case 12:U=Plr;break;case 13:U=Nlr;break;case 14:U=Llr;break;case 15:U=Rlr;break;case 16:U=Mlr;break;case 17:U=jlr;break;case 18:U=Ulr;break;case 19:U=Xlr;break;case 20:U=Jlr;break;default:U=Glr}return i(ewr,u,0,[0,[0,twr,U.toString()],M]);case 4:return i(nwr,u,0,hr(n[1]));case 5:return o(Nmr,[0,u,n[1]]);case 6:var G=n[1],q=[0,[0,uwr,e(_,G[2])],0];return i(iwr,u,0,[0,[0,awr,t(J,G[1])],q]);case 7:var z=n[1],V=[0,[0,fwr,_(z[3])],0],W=[0,[0,cwr,_(z[2])],V];return i(owr,u,0,[0,[0,swr,_(z[1])],W]);case 8:return E([0,u,n[1]]);case 9:var Y=n[1],H=[0,[0,vwr,e(_,Y[2])],0];return i(bwr,u,0,[0,[0,lwr,t(J,Y[1])],H]);case 10:return y(n[1]);case 11:var $=n[1],K=[0,[0,Dwr,t(_,[0,$,0])],0];return i(dwr,u,0,[0,[0,pwr,i(kwr,cnt(u,$[1]),0,0)],K]);case 12:return h([0,u,n[1]]);case 13:return w([0,u,n[1]]);case 14:var Q=n[1],Z=Q[1];return"number"!=typeof Z&&3===Z[0]?i(oEr,u,0,[0,[0,sEr,w2r],[0,[0,cEr,Q[2].toString()],0]]):F([0,u,Q]);case 15:var rr=n[1];switch(rr[1]){case 0:var nr=wwr;break;case 1:nr=hwr;break;default:nr=mwr}var ur=[0,[0,Fwr,_(rr[3])],0],ir=[0,[0,ywr,_(rr[2])],ur];return i(_wr,u,0,[0,[0,Ewr,nr.toString()],ir]);case 16:return i(gwr,u,0,mr(n[1]));case 17:var fr=n[1],cr=[0,[0,Cwr,y(fr[2])],0];return i(xwr,u,0,[0,[0,Swr,y(fr[1])],cr]);case 18:var sr=n[1],or=[0,[0,Twr,t(X,sr[3])],0],vr=[0,[0,Awr,e(ar,sr[2])],or],lr=[0,[0,Bwr,_(sr[1])],vr];return i(Iwr,u,sr[4],lr);case 19:var br=n[1],Dr=[0,[0,Owr,t(j,br[1])],0];return i(Pwr,u,br[2],Dr);case 20:var kr=n[1],pr=[0,[0,Nwr,!!kr[2]],0];return i(Lwr,u,0,LQr(hr(kr[1]),pr));case 21:var dr=n[1],Fr=[0,[0,Rwr,!!dr[2]],0];return i(Mwr,u,0,LQr(mr(dr[1]),Fr));case 22:return i(Uwr,u,0,[0,[0,jwr,t(_,n[1][1])],0]);case 23:var yr=n[1],Er=[0,[0,yEr,m(yr[2])],0];return i(_Er,u,0,[0,[0,EEr,_(yr[1])],Er]);case 24:return m([0,u,n[1]]);case 25:var _r=n[1],gr=[0,[0,Xwr,tr(_r[2])],0];return i(Gwr,u,0,[0,[0,Jwr,_(_r[1])],gr]);case 26:var Cr=n[1],Sr=Cr[3],xr=Cr[2],Tr=Cr[1];if(7<=Tr)return i(zwr,u,Sr,[0,[0,qwr,_(xr)],0]);switch(Tr){case 0:var Ar=Vwr;break;case 1:Ar=Wwr;break;case 2:Ar=Ywr;break;case 3:Ar=Hwr;break;case 4:Ar=$wr;break;case 5:Ar=Kwr;break;case 6:Ar=Qwr;break;default:Ar=TQr(Zwr)}var Br=[0,[0,thr,!0],[0,[0,rhr,_(xr)],0]];return i(nhr,u,Sr,[0,[0,ehr,Ar.toString()],Br]);case 27:var Ir=n[1],Or=0===Ir[1]?ahr:uhr,Pr=[0,[0,ihr,!!Ir[3]],0],Nr=[0,[0,fhr,_(Ir[2])],Pr];return i(shr,u,0,[0,[0,chr,Or.toString()],Nr]);default:var Lr=n[1],Rr=[0,[0,ohr,!!Lr[3]],0],Mr=[0,[0,vhr,e(_,Lr[1])],Rr];return i(lhr,u,Lr[2],Mr)}}function g(r){var t=[0,[0,jhr,y(r[2])],0];return i(Uhr,r[1],0,t)}function C(r,t){var e=[0,[0,Xhr,!!t[3]],0],u=[0,[0,Jhr,n(tr,t[2])],e];return i(qhr,r,0,[0,[0,Ghr,t[1][2][1].toString()],u])}function S(r){var n=r[2],u=[0,[0,zhr,t(d,n[2])],0],a=[0,[0,Vhr,e(_,n[1])],u];return i(Whr,r[1],0,a)}function x(r){var t=r[2],n=[0,[0,Yhr,p(t[2])],0],u=[0,[0,Hhr,e(N,t[1])],n];return i($hr,r[1],t[3],u)}function T(r){return 0===r?dmr:pmr}function A(r){if(r){var e=r[1];if(0===e[0])return t(kr,e[1]);var n=e[2];if(n){var u=[0,[0,wmr,y(n[1])],0];return act([0,i(hmr,e[1],0,u),0])}return act(0)}return act(0)}function B(r){var t=[0,[0,Gmr,_(r[2][1])],0];return i(qmr,r[1],0,t)}function I(r){var t=r[2],n=[0,[0,zmr,e(ur,t[2])],0],u=[0,[0,Vmr,y(t[1])],n];return i(Wmr,r[1],0,u)}function O(r){switch(r[0]){case 0:var u=r[1],a=u[2],f=a[2];switch(f[0]){case 0:var c=[0,F(f[1]),0];break;case 1:c=[0,y(f[1]),0];break;case 2:c=[0,g(f[1]),0];break;default:c=[0,_(f[1]),1]}switch(a[1]){case 0:var s=$mr;break;case 1:s=Kmr;break;case 2:s=Qmr;break;default:s=Zmr}var o=[0,[0,rFr,t(B,a[5])],0],v=[0,[0,nFr,s.toString()],[0,[0,eFr,!!a[4]],[0,[0,tFr,!!c[2]],o]]],l=[0,[0,uFr,E(a[3])],v];return i(iFr,u[1],0,[0,[0,aFr,c[1]],l]);case 1:var b=r[1],D=b[2],k=D[1];switch(k[0]){case 0:var p=[0,F(k[1]),0];break;case 1:p=[0,y(k[1]),0];break;case 2:p=TQr(bFr);break;default:p=[0,_(k[1]),1]}var d=[0,[0,DFr,e(V,D[5])],0],w=[0,[0,pFr,!!p[2]],[0,[0,kFr,!!D[4]],d]],h=[0,[0,dFr,n(tr,D[3])],w],m=[0,[0,wFr,e(_,D[2])],h];return i(mFr,b[1],0,[0,[0,hFr,p[1]],m]);default:var C=r[1],S=C[2],x=[0,[0,fFr,e(V,S[5])],0],T=[0,[0,cFr,!!S[4]],x],A=[0,[0,sFr,n(tr,S[3])],T],I=[0,[0,oFr,e(_,S[2])],A],O=[0,[0,vFr,y(S[1][2])],I];return i(lFr,C[1],0,O)}}function P(r){var t=r[2],n=t[1],u=0===n[0]?y(n[1]):rr(n[1]),a=[0,[0,ryr,u],[0,[0,ZFr,e(ur,t[2])],0]];return i(tyr,r[1],0,a)}function N(r){var u=r[2],a=r[1];switch(u[0]){case 0:var f=u[1],c=[0,[0,eyr,n(tr,f[2])],0];return i(uyr,a,0,[0,[0,nyr,t(U,f[1])],c]);case 1:var s=u[1],o=[0,[0,ayr,n(tr,s[2])],0],v=s[1],l=[0,[0,iyr,t((function(r){return e(M,r)}),v)],o];return i(fyr,a,s[3],l);case 2:return C(a,u[1]);default:return _(u[1])}}function L(r){var t=r[2],e=t[2],n=t[1];if(e){var u=[0,[0,cyr,_(e[1])],0],a=[0,[0,syr,N(n)],u];return i(oyr,r[1],0,a)}return N(n)}function R(r){var e=r[2],n=e[2],u=e[1];if(n){var a=n[1],f=[0,[0,vyr,N(a[2][1])],0],c=i(lyr,a[1],0,f);return act($Qr([0,c,QQr(L,u)]))}return t(L,u)}function M(r){if(0===r[0]){var t=r[1],e=t[2],n=e[2],u=e[1];if(n){var a=[0,[0,byr,_(n[1])],0],f=[0,[0,Dyr,N(u)],a];return i(kyr,t[1],0,f)}return N(u)}var c=r[1],s=[0,[0,pyr,N(c[2][1])],0];return i(dyr,c[1],0,s)}function j(r){if(0===r[0]){var t=r[1],e=t[2];switch(e[0]){case 0:var n=e[3],u=_(e[2]),a=[0,e[1],u,wyr,0,n];break;case 1:var f=e[2],c=E([0,f[1],f[2]]);a=[0,e[1],c,hyr,1,0];break;case 2:var s=e[2],o=E([0,s[1],s[2]]);a=[0,e[1],o,myr,0,0];break;default:var v=e[2],l=E([0,v[1],v[2]]);a=[0,e[1],l,Fyr,0,0]}var b=a[1];switch(b[0]){case 0:var D=[0,F(b[1]),0];break;case 1:D=[0,y(b[1]),0];break;case 2:D=TQr(yyr);break;default:D=[0,_(b[1]),1]}return i(Tyr,t[1],0,[0,[0,xyr,D[1]],[0,[0,Syr,a[2]],[0,[0,Cyr,a[3].toString()],[0,[0,gyr,!!a[4]],[0,[0,_yr,!!a[5]],[0,[0,Eyr,!!D[2]],0]]]]]])}var k=r[1],p=[0,[0,Ayr,_(k[2][1])],0];return i(Byr,k[1],0,p)}function U(r){if(0===r[0]){var t=r[1],e=t[2],n=e[3],u=e[2],a=e[1];switch(a[0]){case 0:var f=[0,F(a[1]),0];break;case 1:f=[0,y(a[1]),0];break;default:f=[0,_(a[1]),1]}if(n)var c=n[1],s=cnt(u[1],c[1]),o=[0,[0,Iyr,_(c)],0],v=i(Pyr,s,0,[0,[0,Oyr,N(u)],o]);else v=N(u);return i(Xyr,t[1],0,[0,[0,Uyr,f[1]],[0,[0,jyr,v],[0,[0,Myr,Oa],[0,[0,Ryr,!1],[0,[0,Lyr,!!e[4]],[0,[0,Nyr,!!f[2]],0]]]]]])}var l=r[1],b=[0,[0,Jyr,N(l[2][1])],0];return i(Gyr,l[1],0,b)}function X(r){if(0===r[0])return _(r[1]);var t=r[1],e=[0,[0,qyr,_(t[2][1])],0];return i(zyr,t[1],0,e)}function J(r){var t=r[2],e=[0,[0,Vyr,!!t[3]],0],n=[0,[0,Wyr,_(t[2])],e],u=[0,[0,Yyr,N(t[1])],n];return i(Hyr,r[1],0,u)}function G(r){var t=r[2];return i(bEr,r[1],0,[0,[0,lEr,t[1].toString()],[0,[0,vEr,t[2].toString()],0]])}function q(r){var t=r[2],e=t[1],n=uct([0,[0,wEr,e[1].toString()],[0,[0,dEr,e[2].toString()],0]]);return i(FEr,r[1],0,[0,[0,mEr,n],[0,[0,hEr,!!t[2]],0]])}function z(r){var t=r[2],n=[0,[0,BEr,e(_,t[2])],0],u=[0,[0,IEr,N(t[1])],n];return i(OEr,r[1],0,u)}function V(r){var t=0===r[2]?qb:Vi;return i(NEr,r[1],0,[0,[0,PEr,t],0])}function W(r){var t=r[2],n=t[1],u=0===n[0]?y(n[1]):rr(n[1]),a=[0,[0,K_r,u],[0,[0,$_r,e(ur,t[2])],0]];return i(Q_r,r[1],0,a)}function Y(r,t){var n=t[2],u=n[3],a=rZr((function(r,t){var n=r[4],u=r[3],a=r[2],f=r[1];switch(t[0]){case 0:var c=t[1],s=c[2],o=s[2],v=s[1];switch(v[0]){case 0:var l=F(v[1]);break;case 1:l=y(v[1]);break;case 2:l=TQr(v_r);break;default:l=TQr(l_r)}switch(o[0]){case 0:var b=[0,$(o[1]),b_r];break;case 1:var D=o[1];b=[0,H([0,D[1],D[2]]),D_r];break;default:var k=o[1];b=[0,H([0,k[1],k[2]]),k_r]}var p=[0,[0,p_r,b[2].toString()],0],d=[0,[0,d_r,e(V,s[7])],p];return[0,[0,i(__r,c[1],0,[0,[0,E_r,l],[0,[0,y_r,b[1]],[0,[0,F_r,!!s[6]],[0,[0,m_r,!!s[3]],[0,[0,h_r,!!s[4]],[0,[0,w_r,!!s[5]],d]]]]]]),f],a,u,n];case 1:var w=t[1],h=[0,[0,g_r,$(w[2][1])],0];return[0,[0,i(C_r,w[1],0,h),f],a,u,n];case 2:var m=t[1],E=m[2],_=[0,[0,S_r,e(V,E[5])],0],g=[0,[0,x_r,!!E[4]],_],C=[0,[0,T_r,$(E[3])],g],S=[0,[0,A_r,$(E[2])],C],x=[0,[0,B_r,e(y,E[1])],S];return[0,f,[0,i(I_r,m[1],0,x),a],u,n];case 3:var T=t[1],A=T[2],B=[0,[0,O_r,!!A[2]],0],I=[0,[0,P_r,H(A[1])],B];return[0,f,a,[0,i(N_r,T[1],0,I),u],n];default:var O=t[1],P=O[2],N=[0,[0,L_r,$(P[2])],0],L=[0,[0,j_r,!!P[3]],[0,[0,M_r,!!P[4]],[0,[0,R_r,!!P[5]],N]]],R=[0,[0,U_r,y(P[1])],L];return[0,f,a,u,[0,i(X_r,O[1],0,R),n]]}}),n_r,u),f=[0,[0,u_r,act($Qr(a[4]))],0],c=[0,[0,a_r,act($Qr(a[3]))],f],s=[0,[0,i_r,act($Qr(a[2]))],c],o=[0,[0,f_r,act($Qr(a[1]))],s],v=[0,[0,c_r,!!n[1]],o],l=r?[0,[0,s_r,!!n[2]],v]:v;return i(o_r,t[1],0,l)}function H(r){var n=r[2],u=n[2][2],a=[0,[0,YEr,e(er,n[1])],0],f=[0,[0,HEr,e(Z,u[2])],a],c=[0,[0,$Er,$(n[3])],f],s=[0,[0,KEr,t(Q,u[1])],c];return i(QEr,r[1],0,s)}function $(r){var e=r[2],n=r[1];if("number"==typeof e)switch(e){case 0:return i(REr,n,0,0);case 1:return i(MEr,n,0,0);case 2:return i(jEr,n,0,0);case 3:return i(UEr,n,0,0);case 4:return i(XEr,n,0,0);case 5:return i(JEr,n,0,0);case 6:return i(GEr,n,0,0);case 7:return i(qEr,n,0,0);case 8:return i(zEr,n,0,0);default:return i(Fgr,n,0,0)}else switch(e[0]){case 0:return i(WEr,n,0,[0,[0,VEr,$(e[1])],0]);case 1:return H([0,n,e[1]]);case 2:return Y(1,[0,n,e[1]]);case 3:var u=e[1],a=[0,[0,J_r,Y(0,u[1])],0];return i(q_r,n,0,[0,[0,G_r,t(P,u[2])],a]);case 4:return i(V_r,n,0,[0,[0,z_r,$(e[1])],0]);case 5:return W([0,n,e[1]]);case 6:return i(rgr,n,0,[0,[0,Z_r,t($,[0,e[1],[0,e[2],e[3]]])],0]);case 7:return i(egr,n,0,[0,[0,tgr,t($,[0,e[1],[0,e[2],e[3]]])],0]);case 8:return i(ugr,n,0,[0,[0,ngr,$(e[1])],0]);case 9:return i(igr,n,0,[0,[0,agr,t($,e[1])],0]);case 10:var f=e[1];return i(sgr,n,0,[0,[0,cgr,f[1].toString()],[0,[0,fgr,f[2].toString()],0]]);case 11:var c=e[1];return i(lgr,n,0,[0,[0,vgr,c[1]],[0,[0,ogr,c[2].toString()],0]]);case 12:return i(kgr,n,0,[0,[0,Dgr,w2r],[0,[0,bgr,e[1][2].toString()],0]]);default:var s=e[1];return i(mgr,n,0,[0,[0,hgr,!!s],[0,[0,wgr,(s?pgr:dgr).toString()],0]])}}function K(r){if(0===r[0])return $(r[1]);var t=r[1];return W([0,t,[0,[0,lnt([0,t,LEr])],0]])}function Q(r){var t=r[2],n=[0,[0,ZEr,!!t[3]],0],u=[0,[0,r_r,$(t[2])],n],a=[0,[0,t_r,e(y,t[1])],u];return i(e_r,r[1],0,a)}function Z(r){return Q(r[2][1])}function rr(r){var t=r[2],e=t[1],n=0===e[0]?y(e[1]):rr(e[1]),u=[0,[0,Y_r,n],[0,[0,W_r,y(t[2])],0]];return i(H_r,r[1],0,u)}function tr(r){var t=[0,[0,ygr,$(r[2])],0];return i(Egr,r[1],0,t)}function er(r){var e=[0,[0,_gr,t(nr,r[2])],0];return i(ggr,r[1],0,e)}function nr(r){var t=r[2],u=[0,[0,Cgr,e($,t[4])],0],a=[0,[0,Sgr,e(V,t[3])],u],f=[0,[0,xgr,n(tr,t[2])],a];return i(Agr,r[1],0,[0,[0,Tgr,t[1][2][1].toString()],f])}function ur(r){var e=[0,[0,Bgr,t($,r[2])],0];return i(Igr,r[1],0,e)}function ar(r){var e=[0,[0,Ogr,t(K,r[2])],0];return i(Pgr,r[1],0,e)}function ir(r){if(0===r[0]){var t=r[1],n=t[2],u=n[1],a=0===u[0]?or(u[1]):vr(u[1]),f=[0,[0,rCr,a],[0,[0,Zgr,e(Dr,n[2])],0]];return i(tCr,t[1],0,f)}var c=r[1],s=[0,[0,eCr,_(c[2][1])],0];return i(nCr,c[1],0,s)}function fr(r){var t=[0,[0,Ygr,br(r[2][1])],0];return i(Hgr,r[1],0,t)}function cr(r){var t=r[2][1],e=r[1],n=t?_(t[1]):i(uCr,[0,e[1],[0,e[2][1],e[2][2]+1|0],[0,e[3][1],e[3][2]-1|0]],0,0);return i(iCr,e,0,[0,[0,aCr,n],0])}function sr(r){var t=r[2],e=r[1];switch(t[0]){case 0:return h([0,e,t[1]]);case 1:return w([0,e,t[1]]);case 2:return cr([0,e,t[1]]);case 3:return i(Qgr,e,0,[0,[0,Kgr,_(t[1])],0]);default:var n=t[1];return i(sCr,e,0,[0,[0,cCr,n[1].toString()],[0,[0,fCr,n[2].toString()],0]])}}function or(r){return i(dCr,r[1],0,[0,[0,pCr,r[2][1].toString()],0])}function vr(r){var t=r[2],e=[0,[0,bCr,or(t[2])],0],n=[0,[0,DCr,or(t[1])],e];return i(kCr,r[1],0,n)}function lr(r){var t=r[2],e=t[1],n=0===e[0]?or(e[1]):lr(e[1]),u=[0,[0,vCr,n],[0,[0,oCr,or(t[2])],0]];return i(lCr,r[1],0,u)}function br(r){switch(r[0]){case 0:return or(r[1]);case 1:return vr(r[1]);default:return lr(r[1])}}function Dr(r){return 0===r[0]?F([0,r[1],r[2]]):cr([0,r[1],r[2]])}function kr(r){var t=r[2],e=t[2],n=t[1],u=y(e?e[1]:n),a=[0,[0,hCr,y(n)],[0,[0,wCr,u],0]];return i(mCr,r[1],0,a)}function pr(r){return t(dr,r)}function dr(r){var t=r[2],e=0===t[0]?[0,TCr,t[1]]:[0,ACr,t[1]];return i(e[1],r[1],0,[0,[0,BCr,e[2].toString()],0])}function wr(r){var t=r[2];if(t)var e=OCr,n=[0,[0,ICr,_(t[1])],0];else e=PCr,n=0;return i(e,r[1],0,n)}function hr(r){var n=[0,[0,NCr,t(X,r[3])],0],u=[0,[0,LCr,e(ar,r[2])],n];return[0,[0,RCr,_(r[1])],u]}function mr(r){var t=r[2];switch(t[0]){case 0:var e=[0,y(t[1]),0];break;case 1:e=[0,g(t[1]),0];break;default:e=[0,_(t[1]),1]}var n=[0,[0,jCr,e[1]],[0,[0,MCr,!!e[2]],0]];return[0,[0,UCr,_(r[1])],n]}return[0,function(t){var e=f(t[2]),n=r[2]?[0,[0,npr,e],[0,[0,epr,pr(t[3])],0]]:[0,[0,upr,e],0];return i(apr,t[1],0,n)},_]}return[0,function(r){return i(r)[1]},function(r){return i(r)[2]},function(r){return t((function(r){var t=r[2];if("number"==typeof t){var e=t;if(50<=e)switch(e){case 50:var n=sDr;break;case 51:n=oDr;break;case 52:n=vDr;break;case 53:n=lDr;break;case 54:n=bDr;break;case 55:n=DDr;break;case 56:n=PQr(pDr,kDr);break;case 57:n=PQr(wDr,dDr);break;case 58:n=PQr(mDr,hDr);break;case 59:n=FDr;break;case 60:n=yDr;break;case 61:n=EDr;break;case 62:n=_Dr;break;case 63:n=gDr;break;case 64:n=CDr;break;case 65:n=SDr;break;case 66:n=xDr;break;case 67:n=TDr;break;case 68:n=ADr;break;case 69:n=BDr;break;case 70:n=IDr;break;case 71:n=ODr;break;case 72:n=PDr;break;case 73:n=NDr;break;case 74:n=LDr;break;case 75:n=RDr;break;case 76:n=PQr(jDr,MDr);break;case 77:n=UDr;break;case 78:n=XDr;break;case 79:n=JDr;break;case 80:n=GDr;break;case 81:n=qDr;break;case 82:n=zDr;break;case 83:n=VDr;break;case 84:n=WDr;break;case 85:n=YDr;break;case 86:n=HDr;break;case 87:n=$Dr;break;case 88:n=KDr;break;case 89:n=PQr(ZDr,QDr);break;case 90:n=rkr;break;case 91:n=tkr;break;case 92:n=ekr;break;case 93:n=nkr;break;case 94:n=ukr;break;case 95:n=akr;break;case 96:n=ikr;break;case 97:n=fkr;break;default:n=ckr}else switch(e){case 0:n=lbr;break;case 1:n=bbr;break;case 2:n=Dbr;break;case 3:n=kbr;break;case 4:n=pbr;break;case 5:n=dbr;break;case 6:n=wbr;break;case 7:n=hbr;break;case 8:n=mbr;break;case 9:n=Fbr;break;case 10:n=ybr;break;case 11:n=Ebr;break;case 12:n=_br;break;case 13:n=gbr;break;case 14:n=Cbr;break;case 15:n=Sbr;break;case 16:n=xbr;break;case 17:n=Tbr;break;case 18:n=Abr;break;case 19:n=Bbr;break;case 20:n=Ibr;break;case 21:n=Obr;break;case 22:n=Pbr;break;case 23:n=Nbr;break;case 24:n=Lbr;break;case 25:n=Rbr;break;case 26:n=Mbr;break;case 27:n=jbr;break;case 28:n=PQr(Xbr,Ubr);break;case 29:n=Jbr;break;case 30:n=Gbr;break;case 31:n=qbr;break;case 32:n=zbr;break;case 33:n=Vbr;break;case 34:n=Wbr;break;case 35:n=Ybr;break;case 36:n=Hbr;break;case 37:n=$br;break;case 38:n=Kbr;break;case 39:n=Qbr;break;case 40:n=Zbr;break;case 41:n=rDr;break;case 42:n=tDr;break;case 43:n=eDr;break;case 44:n=nDr;break;case 45:n=uDr;break;case 46:n=aDr;break;case 47:n=iDr;break;case 48:n=fDr;break;default:n=cDr}}else switch(t[0]){case 0:n=PQr(skr,t[1]);break;case 1:var u=t[2],i=t[1];n=Rd(o0r(okr),u,u,i);break;case 2:var f=t[1],c=t[2];n=Ld(o0r(vkr),c,f);break;case 3:var s=t[1];n=Nd(o0r(lkr),s);break;case 4:var o=t[2],v=t[1],l=Nd(o0r(bkr),v);if(o){var b=o[1];n=Ld(o0r(Dkr),b,l)}else n=Nd(o0r(kkr),l);break;case 5:var D=t[3],k=t[2],p=t[1];if(k){var d=k[1];if(3<=d)n=Ld(o0r(pkr),D,p);else{switch(d){case 0:var w=cbr;break;case 1:w=sbr;break;case 2:w=obr;break;default:w=vbr}n=Md(o0r(dkr),p,w,D,w)}}else n=Ld(o0r(wkr),D,p);break;case 6:var h=t[2],m=$k(h);if(0===nd(m))var F=m;else{var y=iZr(m);up(y,0,JQr(ip(m,0)));F=y}var E=t[1];n=Rd(o0r(hkr),h,xd(F),E);break;case 7:var _=t[1],g=t[2];n=Ld(o0r(mkr),g,_);break;case 8:var C=t[1];n=Nd(o0r(Fkr),C);break;case 9:var S=t[1];n=Nd(o0r(ykr),S);break;case 10:var x=t[2],T=t[1];n=Ld(o0r(Ekr),T,x);break;case 11:var A=t[2],B=t[1];n=Ld(o0r(_kr),B,A);break;case 12:n=PQr(Ckr,PQr(t[1],gkr));break;case 13:n=PQr(xkr,PQr(t[1],Skr));break;case 14:var I=PQr(Akr,PQr(t[2],Tkr));n=PQr(t[1],I);break;case 15:n=PQr(Bkr,t[1]);break;case 16:n=t[1]?PQr(Okr,Ikr):PQr(Nkr,Pkr);break;case 17:var O=t[1];n=Nd(o0r(Lkr),O);break;case 18:n=PQr(Mkr,PQr(t[1],Rkr));break;case 19:var P=t[1],N=t[2]?jkr:Ukr,L=t[3]?PQr(Xkr,P):P;n=PQr(qkr,PQr(N,PQr(Gkr,PQr(L,Jkr))));break;case 20:n=PQr(Vkr,PQr(t[1],zkr));break;default:var R=t[1];n=Nd(o0r(Wkr),R)}var M=[0,[0,XCr,n.toString()],0];return uct([0,[0,JCr,a(r[1])],M])}),r)}]}([0,1,1,0]),cct=function(r){function t(t,e){var n=e[2],u=e[1],a=_nt(n),i=[0,[0,sQr,Nd(r[1],a)],0],f=wnt(t,u[3]),c=[0,Nd(r[5],f),0],s=wnt(t,u[2]),o=[0,Nd(r[5],s),c],v=[0,[0,oQr,Nd(r[4],o)],i],l=[0,[0,vQr,Nd(r[5],u[3][2])],0],b=[0,[0,lQr,Nd(r[5],u[3][1])],l],D=[0,[0,bQr,Nd(r[3],b)],0],k=[0,[0,DQr,Nd(r[5],u[2][2])],0],p=[0,[0,kQr,Nd(r[5],u[2][1])],k],d=[0,[0,pQr,Nd(r[3],p)],D],w=[0,[0,dQr,Nd(r[3],d)],v];switch(e[3]){case 0:var h=wQr;break;case 1:h=hQr;break;case 2:h=mQr;break;case 3:h=FQr;break;case 4:h=yQr;break;default:h=EQr}var m=[0,[0,_Qr,Nd(r[1],h)],w],F=Ent(n),y=[0,[0,gQr,Nd(r[1],F)],m];return Nd(r[3],y)}return[0,t,function(e,n){var u=$Qr(QQr((function(r){return t(e,r)}),n));return Nd(r[4],u)}]}([0,ect,nct,uct,act,function(r){return r},function(r){return r},w2r,ict]),sct=function(r,t){var e=kp(t,void 0)?{}:t,n=xp(r),u=e.enums,a=h2r(u)?[0,0|u,nw[2],nw[3],nw[4],nw[5],nw[6],nw[7],nw[8],nw[9]]:nw,i=e.esproposal_decorators,f=h2r(i)?[0,a[1],a[2],a[3],0|i,a[5],a[6],a[7],a[8],a[9]]:a,c=e.esproposal_class_instance_fields,s=h2r(c)?[0,f[1],0|c,f[3],f[4],f[5],f[6],f[7],f[8],f[9]]:f,o=e.esproposal_class_static_fields,v=h2r(o)?[0,s[1],s[2],0|o,s[4],s[5],s[6],s[7],s[8],s[9]]:s,l=e.esproposal_export_star_as,b=h2r(l)?[0,v[1],v[2],v[3],v[4],0|l,v[6],v[7],v[8],v[9]]:v,D=e.esproposal_optional_chaining,k=h2r(D)?[0,b[1],b[2],b[3],b[4],b[5],0|D,b[7],b[8],b[9]]:b,p=e.esproposal_nullish_coalescing,d=h2r(p)?[0,k[1],k[2],k[3],k[4],k[5],k[6],0|p,k[8],k[9]]:k,w=e.types,h=h2r(w)?[0,d[1],d[2],d[3],d[4],d[5],d[6],d[7],0|w,d[9]]:d,m=e.tokens,F=h2r(m),y=F?0|m:F,E=[0,0],_=[0,[0,h]],g=[0,y?[0,function(r){return E[1]=[0,r,E[1]],0}]:y],C=aw?aw[1]:1,S=[0,_?_[1]:_],x=[0,g?g[1]:g],T=tit([0,x?x[1]:x],[0,S?S[1]:S],0,n),A=Nd(wft[1],T),B=$Qr(T[1][1]),I=$Qr(rZr((function(r,t){var e=r[2],n=r[1];return Ld(dft[3],t,n)?[0,n,e]:[0,Ld(dft[4],t,n),[0,t,e]]}),[0,dft[1],0],B)[2]);if(C?0!==I?1:0:C)throw[0,hnt,I];tct[1]=0;for(var O=jp(n)-0|0,P=$k(n),N=0,L=0;;){if(L===O)var R=N;else{var M=ip(P,L);if(0<=M)if(Yc<M)var j=0;else{var U=1;j=1}else j=0;if(!j){if(194<=M)if(yo<M)var X=0;else U=2,X=1;else X=0;if(!X){if(224<=M)if(239<M)var J=0;else U=3,J=1;else J=0;if(!J){if(240<=M)if(244<M)var G=0;else U=4,G=1;else G=0;if(!G)U=0}}}if(0===U){N=knt(N,0,0),L=L+1|0;continue}if(!((O-L|0)<U)){var q=U-1|0,z=L+U|0;if(3<q>>>0)throw[0,Wd,cE];switch(q){case 0:var V=ip(P,L);break;case 1:V=(31&ip(P,L))<<6|63&ip(P,L+1|0);break;case 2:V=(15&ip(P,L))<<12|(63&ip(P,L+1|0))<<6|63&ip(P,L+2|0);break;default:V=(7&ip(P,L))<<18|(63&ip(P,L+1|0))<<12|(63&ip(P,L+2|0))<<6|63&ip(P,L+3|0)}N=knt(N,0,[0,V]),L=z;continue}R=knt(N,0,0)}for(var W=ibr,Y=$Qr([0,6,R]);;){var H=W[3],$=W[2],K=W[1];if(!Y){var Q=hZr($Qr(H)),Z=Ld(fct[1],[0,Q],A),rr=LQr(I,tct[1]);if(Z.errors=Nd(fct[3],rr),y){var tr=E[1];Z.tokens=act(QQr(Nd(cct[1],Q),tr))}return Z}var er=Y[1];if(5===er){var nr=Y[2];if(nr&&6===nr[1]){W=[0,K+2|0,0,[0,hZr($Qr([0,K,$])),H]],Y=nr[2];continue}}else if(!(6<=er)){var ur=Y[2];W=[0,K+Dnt(er)|0,[0,K,$],H],Y=ur;continue}var ar=hZr($Qr([0,K,$])),ir=Y[2];W=[0,K+Dnt(er)|0,0,[0,ar,H]],Y=ir}}},oct=function(r){if(r[1]===F2r)return Nd(E2r,r[2]);return Nd(E2r,new y2r(PQr(CQr,function(t){for(var e=t;;){if(!e){if(r===Ud)return fF;if(r===Vd)return cF;if(r[1]===zd){var n=r[2],u=n[3],a=n[2],i=n[1];return jd(o0r(Hd),i,a,u,u+5|0,sF)}if(r[1]===Wd){var f=r[2],c=f[3],s=f[2],o=f[1];return jd(o0r(Hd),o,s,c,c+6|0,oF)}if(r[1]===Yd){var v=r[2],l=v[3],b=v[2],D=v[1];return jd(o0r(Hd),D,b,l,l+6|0,vF)}return 0===yd(r)?PQr(r[1][1],b0r(r)):r[1]}var k=e[2],p=e[1];try{var d=Nd(p,r)}catch(r){d=0}if(d)return d[1];e=k}}(v0r[1])).toString()))};return t.parse=function(r,t){try{return sct(r,t)}catch(t){return t=Pd(t),oct(t)}},void Nd(jQr[1],0)}v2r=l2r}else s2r=o2r}else f2r=c2r}else a2r=i2r}}(function(){return this}())})),er=o;var nr={parsers:{flow:Object.assign({parse:function(r,n,u){var a=tr.parse(r,{enums:!0,esproposal_class_instance_fields:!0,esproposal_class_static_fields:!0,esproposal_export_star_as:!0,esproposal_optional_chaining:!0,esproposal_nullish_coalescing:!0});if(a.errors.length>0){var i=a.errors[0].loc;throw t(a.errors[0].message,{start:{line:i.start.line,column:i.start.column+1},end:{line:i.end.line,column:i.end.column+1}})}return e(r,a),$(a,Object.assign({},u,{originalText:r}))},astFormat:"estree",hasPragma:er},l)}},ur=nr.parsers;r.default=nr,r.parsers=ur,Object.defineProperty(r,"__esModule",{value:!0})}));
diff --git a/node_modules/prettier/parser-glimmer.js b/node_modules/prettier/parser-glimmer.js
new file mode 100644
index 0000000..1565232
--- /dev/null
+++ b/node_modules/prettier/parser-glimmer.js
@@ -0,0 +1 @@
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e(((t=t||self).prettierPlugins=t.prettierPlugins||{},t.prettierPlugins.glimmer={}))}(this,(function(t){"use strict";var e=function(t,e){var r=new SyntaxError(t+" ("+e.start.line+":"+e.start.column+")");return r.loc=e,r};function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){for(var r=0;r<e.length;r++){var a=e[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(t,a.key,a)}}function i(t,e,r){return e&&n(t.prototype,e),r&&n(t,r),t}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&l(t,e)}function s(t){return(s=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function l(t,e){return(l=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function c(t,e){return!e||"object"!=typeof e&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function u(t,e){return f(t)||function(t,e){if(!(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t)))return;var r=[],a=!0,n=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(a=(o=s.next()).done)&&(r.push(o.value),!e||r.length!==e);a=!0);}catch(t){n=!0,i=t}finally{try{a||null==s.return||s.return()}finally{if(n)throw i}}return r}(t,e)||m()}function h(t){return f(t)||d(t)||m()}function p(t){return function(t){if(Array.isArray(t)){for(var e=0,r=new Array(t.length);e<t.length;e++)r[e]=t[e];return r}}(t)||d(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}function f(t){if(Array.isArray(t))return t}function d(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}function m(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}var g=("undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{}).performance||{},v=(g.now||g.mozNow||g.msNow||g.oNow||g.webkitNow,Object.freeze([]),new(function(){function t(e,r){a(this,t),this._head=e,this._tail=r}return i(t,[{key:"forEachNode",value:function(t){for(var e=this._head;null!==e;)t(e),e=this.nextNode(e)}},{key:"head",value:function(){return this._head}},{key:"tail",value:function(){return this._tail}},{key:"toArray",value:function(){var t=[];return this.forEachNode((function(e){return t.push(e)})),t}},{key:"nextNode",value:function(t){return t===this._tail?null:t.next}}]),t}())(null,null),Object.keys);function b(t){for(var e=1;e<arguments.length;e++){var a=arguments[e];if(null!==a&&"object"===r(a))for(var n=v(a),i=0;i<n.length;i++){var o=n[i];t[o]=a[o]}}return t}var y=function(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];return e};function k(t,e,r,a){return{type:"ElementModifierStatement",path:_(t),params:e||[],hash:r||N([]),loc:O(a||null)}}function S(t){return Array.isArray(t)&&2===t.length&&"loc"===t[0]}function w(t){if("string"==typeof t)return k(t);var e,a,n,i=function(t){return"string"==typeof t?_(t):_(t[1],t[2]&&t[2][1])}(t[0]),o=null,s=t.slice(1),l=s.shift();return n=l,Array.isArray(n)&&!S(n)&&(e=l,function(t){return!("object"!==r(t)||!t||Array.isArray(t))}(l=s.shift())&&(a=function(t,e){var r=[];return Object.keys(t).forEach((function(e){r.push(L(e,t[e]))})),N(r,e)}(l))),S(l)&&(o=l[1]),k(i,e,a,o)}function x(t){return P(t[0],"string"==typeof t[1]?A(t[1]):t[1],t[2]?t[2][1]:void 0)}function E(){for(var t={},e=arguments.length,r=new Array(e),a=0;a<e;a++)r[a]=arguments[a];for(var n=0,i=r;n<i.length;n++){var o=i[n];switch(o[0]){case"attrs":var s=h(o).slice(1);t.attrs=s.map(x);break;case"modifiers":var l=h(o).slice(1);t.modifiers=l.map(w);break;case"body":var c=h(o).slice(1);t.children=c;break;case"comments":var p=h(o).slice(1);t.comments=p;break;case"as":var f=h(o).slice(1);t.blockParams=f;break;case"loc":var d=u(o,2)[1];t.loc=d}}return t}function P(t,e,r){return{type:"AttrNode",name:t,value:e,loc:O(r||null)}}function A(t,e){return{type:"TextNode",chars:t||"",loc:O(e||null)}}function _(t,e){if("string"!=typeof t)return t;var r=t.split("."),a=!1;return"this"===r[0]&&(a=!0,r=r.slice(1)),{type:"PathExpression",original:t,this:a,parts:r,data:!1,loc:O(e||null)}}function T(t,e,r){return{type:t,value:e,original:e,loc:O(r||null)}}function N(t,e){return{type:"Hash",pairs:t||[],loc:O(e||null)}}function L(t,e,r){return{type:"HashPair",key:t,value:e,loc:O(r||null)}}function C(t){return t||null}function D(t,e){return{line:t,column:e}}var q={source:"(synthetic)",start:{line:1,column:0},end:{line:1,column:0}};function O(){for(var t=arguments.length,e=new Array(t),a=0;a<t;a++)e[a]=arguments[a];if(1===e.length){var n=e[0];return n&&"object"===r(n)?{source:C(n.source),start:D(n.start.line,n.start.column),end:D(n.end.line,n.end.column)}:q}var i=e[0],o=e[1],s=e[2],l=e[3];return{source:C(e[4]),start:D(i,o),end:D(s,l)}}var I={mustache:function(t,e,r,a,n){return"string"==typeof t&&(t=_(t)),{type:"MustacheStatement",path:t,params:e||[],hash:r||N([]),escaped:!a,loc:O(n||null)}},block:function(t,e,r,a,n,i){var o,s;return o="Template"===a.type?b({},a,{type:"Block"}):a,s=null!=n&&"Template"===n.type?b({},n,{type:"Block"}):n,{type:"BlockStatement",path:_(t),params:e||[],hash:r||N([]),program:o||null,inverse:s||null,loc:O(i||null)}},partial:function(t,e,r,a,n){return{type:"PartialStatement",name:t,params:e||[],hash:r||N([]),indent:a||"",strip:{open:!1,close:!1},loc:O(n||null)}},comment:function(t,e){return{type:"CommentStatement",value:t,loc:O(e||null)}},mustacheComment:function(t,e){return{type:"MustacheCommentStatement",value:t,loc:O(e||null)}},element:function(t,e){var a;if(Array.isArray(e)){for(var n=arguments.length,i=new Array(n>2?n-2:0),o=2;o<n;o++)i[o-2]=arguments[o];a=E.apply(void 0,[e].concat(i))}else a=e||{};var s=a,l=s.attrs,c=s.blockParams,u=s.modifiers,h=s.comments,p=s.children,f=s.loc,d=!1;return"object"===r(t)?(d=t.selfClosing,t=t.name):"/"===t.slice(-1)&&(t=t.slice(0,-1),d=!0),{type:"ElementNode",tag:t||"",selfClosing:d,attributes:l||[],blockParams:c||[],modifiers:u||[],comments:h||[],children:p||[],loc:O(f||null)}},elementModifier:k,attr:P,text:A,sexpr:function(t,e,r,a){return{type:"SubExpression",path:_(t),params:e||[],hash:r||N([]),loc:O(a||null)}},path:_,concat:function(t,e){return{type:"ConcatStatement",parts:t||[],loc:O(e||null)}},hash:N,pair:L,literal:T,program:function(t,e,r){return{type:"Template",body:t||[],blockParams:e||[],loc:O(r||null)}},blockItself:function(t,e){return{type:"Block",body:t||[],blockParams:e||[],chained:arguments.length>2&&void 0!==arguments[2]&&arguments[2],loc:O((arguments.length>3?arguments[3]:void 0)||null)}},template:function(t,e,r){return{type:"Template",body:t||[],blockParams:e||[],loc:O(r||null)}},loc:O,pos:D,string:B("StringLiteral"),boolean:B("BooleanLiteral"),number:B("NumberLiteral"),undefined:function(t){function e(){return t.apply(this,arguments)}return e.toString=function(){return t.toString()},e}((function(){return T("UndefinedLiteral",void 0)})),null:function(){return T("NullLiteral",null)}};function B(t){return function(e){return T(t,e)}}var R=function(){function t(t,e){var r=Error.call(this,t);this.message=t,this.stack=r.stack,this.location=e}return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}(),V=/[!"#%-,\.\/;->@\[-\^`\{-~]/;function H(t){var e=function(t){for(var e=t.attributes.length,r=[],a=0;a<e;a++)r.push(t.attributes[a].name);var n=r.indexOf("as");if(-1!==n&&e>n&&"|"===r[n+1].charAt(0)){var i=r.slice(n).join(" ");if("|"!==i.charAt(i.length-1)||2!==i.match(/\|/g).length)throw new R("Invalid block parameters syntax: '"+i+"'",t.loc);for(var o=[],s=n+1;s<e;s++){var l=r[s].replace(/\|/g,"");if(""!==l){if(V.test(l))throw new R("Invalid identifier for block parameters: '"+l+"' in '"+i+"'",t.loc);o.push(l)}}if(0===o.length)throw new R("Cannot use zero block parameters: '"+i+"'",t.loc);return t.attributes=t.attributes.slice(0,n),o}return null}(t);e&&(t.blockParams=e)}function M(t,e){(function(t){switch(t.type){case"Block":case"Template":return t.body;case"ElementNode":return t.children}})(t).push(e)}function j(t){return"StringLiteral"===t.type||"BooleanLiteral"===t.type||"NumberLiteral"===t.type||"NullLiteral"===t.type||"UndefinedLiteral"===t.type}function U(t){return"UndefinedLiteral"===t.type?"undefined":JSON.stringify(t.value)}var $={Aacute:"Á",aacute:"á",Abreve:"Ă",abreve:"ă",ac:"∾",acd:"∿",acE:"∾̳",Acirc:"Â",acirc:"â",acute:"´",Acy:"А",acy:"а",AElig:"Æ",aelig:"æ",af:"⁡",Afr:"𝔄",afr:"𝔞",Agrave:"À",agrave:"à",alefsym:"ℵ",aleph:"ℵ",Alpha:"Α",alpha:"α",Amacr:"Ā",amacr:"ā",amalg:"⨿",amp:"&",AMP:"&",andand:"⩕",And:"⩓",and:"∧",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angmsd:"∡",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",Aogon:"Ą",aogon:"ą",Aopf:"𝔸",aopf:"𝕒",apacir:"⩯",ap:"≈",apE:"⩰",ape:"≊",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",Aring:"Å",aring:"å",Ascr:"𝒜",ascr:"𝒶",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",barwed:"⌅",Barwed:"⌆",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",Bcy:"Б",bcy:"б",bdquo:"„",becaus:"∵",because:"∵",Because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",Beta:"Β",beta:"β",beth:"ℶ",between:"≬",Bfr:"𝔅",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bNot:"⫭",bnot:"⌐",Bopf:"𝔹",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxdl:"┐",boxdL:"╕",boxDl:"╖",boxDL:"╗",boxdr:"┌",boxdR:"╒",boxDr:"╓",boxDR:"╔",boxh:"─",boxH:"═",boxhd:"┬",boxHd:"╤",boxhD:"╥",boxHD:"╦",boxhu:"┴",boxHu:"╧",boxhU:"╨",boxHU:"╩",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxul:"┘",boxuL:"╛",boxUl:"╜",boxUL:"╝",boxur:"└",boxuR:"╘",boxUr:"╙",boxUR:"╚",boxv:"│",boxV:"║",boxvh:"┼",boxvH:"╪",boxVh:"╫",boxVH:"╬",boxvl:"┤",boxvL:"╡",boxVl:"╢",boxVL:"╣",boxvr:"├",boxvR:"╞",boxVr:"╟",boxVR:"╠",bprime:"‵",breve:"˘",Breve:"˘",brvbar:"¦",bscr:"𝒷",Bscr:"ℬ",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsolb:"⧅",bsol:"\\",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",Bumpeq:"≎",bumpeq:"≏",Cacute:"Ć",cacute:"ć",capand:"⩄",capbrcup:"⩉",capcap:"⩋",cap:"∩",Cap:"⋒",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",Ccaron:"Č",ccaron:"č",Ccedil:"Ç",ccedil:"ç",Ccirc:"Ĉ",ccirc:"ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",Cdot:"Ċ",cdot:"ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",centerdot:"·",CenterDot:"·",cfr:"𝔠",Cfr:"ℭ",CHcy:"Ч",chcy:"ч",check:"✓",checkmark:"✓",Chi:"Χ",chi:"χ",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cir:"○",cirE:"⧃",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",colon:":",Colon:"∷",Colone:"⩴",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",conint:"∮",Conint:"∯",ContourIntegral:"∮",copf:"𝕔",Copf:"ℂ",coprod:"∐",Coproduct:"∐",copy:"©",COPY:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",cross:"✗",Cross:"⨯",Cscr:"𝒞",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cupbrcap:"⩈",cupcap:"⩆",CupCap:"≍",cup:"∪",Cup:"⋓",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dagger:"†",Dagger:"‡",daleth:"ℸ",darr:"↓",Darr:"↡",dArr:"⇓",dash:"‐",Dashv:"⫤",dashv:"⊣",dbkarow:"⤏",dblac:"˝",Dcaron:"Ď",dcaron:"ď",Dcy:"Д",dcy:"д",ddagger:"‡",ddarr:"⇊",DD:"ⅅ",dd:"ⅆ",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",Delta:"Δ",delta:"δ",demptyv:"⦱",dfisht:"⥿",Dfr:"𝔇",dfr:"𝔡",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",diamond:"⋄",Diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",DJcy:"Ђ",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",Dopf:"𝔻",dopf:"𝕕",Dot:"¨",dot:"˙",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrowBar:"⤓",downarrow:"↓",DownArrow:"↓",Downarrow:"⇓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVectorBar:"⥖",DownLeftVector:"↽",DownRightTeeVector:"⥟",DownRightVectorBar:"⥗",DownRightVector:"⇁",DownTeeArrow:"↧",DownTee:"⊤",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",Dscr:"𝒟",dscr:"𝒹",DScy:"Ѕ",dscy:"ѕ",dsol:"⧶",Dstrok:"Đ",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",DZcy:"Џ",dzcy:"џ",dzigrarr:"⟿",Eacute:"É",eacute:"é",easter:"⩮",Ecaron:"Ě",ecaron:"ě",Ecirc:"Ê",ecirc:"ê",ecir:"≖",ecolon:"≕",Ecy:"Э",ecy:"э",eDDot:"⩷",Edot:"Ė",edot:"ė",eDot:"≑",ee:"ⅇ",efDot:"≒",Efr:"𝔈",efr:"𝔢",eg:"⪚",Egrave:"È",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",Emacr:"Ē",emacr:"ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp13:" ",emsp14:" ",emsp:" ",ENG:"Ŋ",eng:"ŋ",ensp:" ",Eogon:"Ę",eogon:"ę",Eopf:"𝔼",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",Epsilon:"Ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",escr:"ℯ",Escr:"ℰ",esdot:"≐",Esim:"⩳",esim:"≂",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",exponentiale:"ⅇ",ExponentialE:"ⅇ",fallingdotseq:"≒",Fcy:"Ф",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",Ffr:"𝔉",ffr:"𝔣",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",Fopf:"𝔽",fopf:"𝕗",forall:"∀",ForAll:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",Fscr:"ℱ",gacute:"ǵ",Gamma:"Γ",gamma:"γ",Gammad:"Ϝ",gammad:"ϝ",gap:"⪆",Gbreve:"Ğ",gbreve:"ğ",Gcedil:"Ģ",Gcirc:"Ĝ",gcirc:"ĝ",Gcy:"Г",gcy:"г",Gdot:"Ġ",gdot:"ġ",ge:"≥",gE:"≧",gEl:"⪌",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",gescc:"⪩",ges:"⩾",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",Gfr:"𝔊",gfr:"𝔤",gg:"≫",Gg:"⋙",ggg:"⋙",gimel:"ℷ",GJcy:"Ѓ",gjcy:"ѓ",gla:"⪥",gl:"≷",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gnE:"≩",gneq:"⪈",gneqq:"≩",gnsim:"⋧",Gopf:"𝔾",gopf:"𝕘",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",gtcc:"⪧",gtcir:"⩺",gt:">",GT:">",Gt:"≫",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",harrcir:"⥈",harr:"↔",hArr:"⇔",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",Hfr:"ℌ",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",Hopf:"ℍ",horbar:"―",HorizontalLine:"─",hscr:"𝒽",Hscr:"ℋ",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"⁣",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",ifr:"𝔦",Ifr:"ℑ",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",Im:"ℑ",imof:"⊷",imped:"Ƶ",Implies:"⇒",incare:"℅",in:"∈",infin:"∞",infintie:"⧝",inodot:"ı",intcal:"⊺",int:"∫",Int:"∬",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",iscr:"𝒾",Iscr:"ℐ",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",lang:"⟨",Lang:"⟪",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",larrb:"⇤",larrbfs:"⤟",larr:"←",Larr:"↞",lArr:"⇐",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",latail:"⤙",lAtail:"⤛",lat:"⪫",late:"⪭",lates:"⪭︀",lbarr:"⤌",lBarr:"⤎",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",lE:"≦",LeftAngleBracket:"⟨",LeftArrowBar:"⇤",leftarrow:"←",LeftArrow:"←",Leftarrow:"⇐",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVectorBar:"⥙",LeftDownVector:"⇃",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTeeArrow:"↤",LeftTee:"⊣",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangleBar:"⧏",LeftTriangle:"⊲",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVectorBar:"⥘",LeftUpVector:"↿",LeftVectorBar:"⥒",LeftVector:"↼",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",lescc:"⪨",les:"⩽",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",llarr:"⇇",ll:"≪",Ll:"⋘",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoustache:"⎰",lmoust:"⎰",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lnE:"≨",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftrightarrow:"⟷",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longmapsto:"⟼",longrightarrow:"⟶",LongRightArrow:"⟶",Longrightarrow:"⟹",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",Lscr:"ℒ",lsh:"↰",Lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",ltcc:"⪦",ltcir:"⩹",lt:"<",LT:"<",Lt:"≪",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",midast:"*",midcir:"⫰",mid:"∣",middot:"·",minusb:"⊟",minus:"−",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",mscr:"𝓂",Mscr:"ℳ",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natural:"♮",naturals:"ℕ",natur:"♮",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",nearhk:"⤤",nearr:"↗",neArr:"⇗",nearrow:"↗",ne:"≠",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nharr:"↮",nhArr:"⇎",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlarr:"↚",nlArr:"⇍",nldr:"‥",nlE:"≦̸",nle:"≰",nleftarrow:"↚",nLeftarrow:"⇍",nleftrightarrow:"↮",nLeftrightarrow:"⇎",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",nopf:"𝕟",Nopf:"ℕ",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangleBar:"⧏̸",NotLeftTriangle:"⋪",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangleBar:"⧐̸",NotRightTriangle:"⋫",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",nparallel:"∦",npar:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",nprec:"⊀",npreceq:"⪯̸",npre:"⪯̸",nrarrc:"⤳̸",nrarr:"↛",nrArr:"⇏",nrarrw:"↝̸",nrightarrow:"↛",nRightarrow:"⇏",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nvdash:"⊬",nvDash:"⊭",nVdash:"⊮",nVDash:"⊯",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwarr:"↖",nwArr:"⇖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",Ocirc:"Ô",ocirc:"ô",ocir:"⊚",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",orarr:"↻",Or:"⩔",or:"∨",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",otimesas:"⨶",Otimes:"⨷",otimes:"⊗",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",para:"¶",parallel:"∥",par:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plus:"+",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",popf:"𝕡",Popf:"ℙ",pound:"£",prap:"⪷",Pr:"⪻",pr:"≺",prcue:"≼",precapprox:"⪷",prec:"≺",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",pre:"⪯",prE:"⪳",precsim:"≾",prime:"′",Prime:"″",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportional:"∝",Proportion:"∷",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",qopf:"𝕢",Qopf:"ℚ",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quot:'"',QUOT:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",Rang:"⟫",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarr:"→",Rarr:"↠",rArr:"⇒",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",ratail:"⤚",rAtail:"⤜",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rBarr:"⤏",RBarr:"⤐",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",Re:"ℜ",rect:"▭",reg:"®",REG:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",Rfr:"ℜ",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrowBar:"⇥",rightarrow:"→",RightArrow:"→",Rightarrow:"⇒",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVectorBar:"⥕",RightDownVector:"⇂",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTeeArrow:"↦",RightTee:"⊢",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangleBar:"⧐",RightTriangle:"⊳",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVectorBar:"⥔",RightUpVector:"↾",RightVectorBar:"⥓",RightVector:"⇀",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoustache:"⎱",rmoust:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",Ropf:"ℝ",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",rscr:"𝓇",Rscr:"ℛ",rsh:"↱",Rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",scap:"⪸",Scaron:"Š",scaron:"š",Sc:"⪼",sc:"≻",sccue:"≽",sce:"⪰",scE:"⪴",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdotb:"⊡",sdot:"⋅",sdote:"⩦",searhk:"⤥",searr:"↘",seArr:"⇘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",solbar:"⌿",solb:"⧄",sol:"/",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",square:"□",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squ:"□",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",Sub:"⋐",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",Subset:"⋐",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succapprox:"⪸",succ:"≻",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",sum:"∑",Sum:"∑",sung:"♪",sup1:"¹",sup2:"²",sup3:"³",sup:"⊃",Sup:"⋑",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",Supset:"⋑",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swarr:"↙",swArr:"⇙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",therefore:"∴",Therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",ThinSpace:" ",thinsp:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",tilde:"˜",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",timesbar:"⨱",timesb:"⊠",times:"×",timesd:"⨰",tint:"∭",toea:"⤨",topbot:"⌶",topcir:"⫱",top:"⊤",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",TRADE:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",uarr:"↑",Uarr:"↟",uArr:"⇑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrowBar:"⤒",uparrow:"↑",UpArrow:"↑",Uparrow:"⇑",UpArrowDownArrow:"⇅",updownarrow:"↕",UpDownArrow:"↕",Updownarrow:"⇕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",upsi:"υ",Upsi:"ϒ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTeeArrow:"↥",UpTee:"⊥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",vArr:"⇕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vBar:"⫨",Vbar:"⫫",vBarv:"⫩",Vcy:"В",vcy:"в",vdash:"⊢",vDash:"⊨",Vdash:"⊩",VDash:"⊫",Vdashl:"⫦",veebar:"⊻",vee:"∨",Vee:"⋁",veeeq:"≚",vellip:"⋮",verbar:"|",Verbar:"‖",vert:"|",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",Wedge:"⋀",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xharr:"⟷",xhArr:"⟺",Xi:"Ξ",xi:"ξ",xlarr:"⟵",xlArr:"⟸",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrarr:"⟶",xrArr:"⟹",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",yuml:"ÿ",Yuml:"Ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"​",Zeta:"Ζ",zeta:"ζ",zfr:"𝔷",Zfr:"ℨ",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",Zopf:"ℤ",Zscr:"𝒵",zscr:"𝓏",zwj:"‍",zwnj:"‌"},z=/^#[xX]([A-Fa-f0-9]+)$/,F=/^#([0-9]+)$/,G=/^([A-Za-z0-9]+)$/,K=function(){function t(t){this.named=t}return t.prototype.parse=function(t){if(t){var e=t.match(z);return e?String.fromCharCode(parseInt(e[1],16)):(e=t.match(F))?String.fromCharCode(parseInt(e[1],10)):(e=t.match(G))?this.named[e[1]]:void 0}},t}(),J=/[\t\n\f ]/,Q=/[A-Za-z]/,W=/\r\n?/g;function Y(t){return J.test(t)}function Z(t){return Q.test(t)}var X=function(){function t(t,e){this.delegate=t,this.entityParser=e,this.state="beforeData",this.line=-1,this.column=-1,this.input="",this.index=-1,this.tagNameBuffer="",this.states={beforeData:function(){var t=this.peek();if("<"===t)this.transitionTo("tagOpen"),this.markTagStart(),this.consume();else{if("\n"===t){var e=this.tagNameBuffer.toLowerCase();"pre"!==e&&"textarea"!==e||this.consume()}this.transitionTo("data"),this.delegate.beginData()}},data:function(){var t=this.peek();"<"===t?(this.delegate.finishData(),this.transitionTo("tagOpen"),this.markTagStart(),this.consume()):"&"===t?(this.consume(),this.delegate.appendToData(this.consumeCharRef()||"&")):(this.consume(),this.delegate.appendToData(t))},tagOpen:function(){var t=this.consume();"!"===t?this.transitionTo("markupDeclarationOpen"):"/"===t?this.transitionTo("endTagOpen"):("@"===t||":"===t||Z(t))&&(this.transitionTo("tagName"),this.tagNameBuffer="",this.delegate.beginStartTag(),this.appendToTagName(t))},markupDeclarationOpen:function(){"-"===this.consume()&&"-"===this.input.charAt(this.index)&&(this.consume(),this.transitionTo("commentStart"),this.delegate.beginComment())},commentStart:function(){var t=this.consume();"-"===t?this.transitionTo("commentStartDash"):">"===t?(this.delegate.finishComment(),this.transitionTo("beforeData")):(this.delegate.appendToCommentData(t),this.transitionTo("comment"))},commentStartDash:function(){var t=this.consume();"-"===t?this.transitionTo("commentEnd"):">"===t?(this.delegate.finishComment(),this.transitionTo("beforeData")):(this.delegate.appendToCommentData("-"),this.transitionTo("comment"))},comment:function(){var t=this.consume();"-"===t?this.transitionTo("commentEndDash"):this.delegate.appendToCommentData(t)},commentEndDash:function(){var t=this.consume();"-"===t?this.transitionTo("commentEnd"):(this.delegate.appendToCommentData("-"+t),this.transitionTo("comment"))},commentEnd:function(){var t=this.consume();">"===t?(this.delegate.finishComment(),this.transitionTo("beforeData")):(this.delegate.appendToCommentData("--"+t),this.transitionTo("comment"))},tagName:function(){var t=this.consume();Y(t)?this.transitionTo("beforeAttributeName"):"/"===t?this.transitionTo("selfClosingStartTag"):">"===t?(this.delegate.finishTag(),this.transitionTo("beforeData")):this.appendToTagName(t)},beforeAttributeName:function(){var t=this.peek();Y(t)?this.consume():"/"===t?(this.transitionTo("selfClosingStartTag"),this.consume()):">"===t?(this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):"="===t?(this.delegate.reportSyntaxError("attribute name cannot start with equals sign"),this.transitionTo("attributeName"),this.delegate.beginAttribute(),this.consume(),this.delegate.appendToAttributeName(t)):(this.transitionTo("attributeName"),this.delegate.beginAttribute())},attributeName:function(){var t=this.peek();Y(t)?(this.transitionTo("afterAttributeName"),this.consume()):"/"===t?(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.consume(),this.transitionTo("selfClosingStartTag")):"="===t?(this.transitionTo("beforeAttributeValue"),this.consume()):">"===t?(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):'"'===t||"'"===t||"<"===t?(this.delegate.reportSyntaxError(t+" is not a valid character within attribute names"),this.consume(),this.delegate.appendToAttributeName(t)):(this.consume(),this.delegate.appendToAttributeName(t))},afterAttributeName:function(){var t=this.peek();Y(t)?this.consume():"/"===t?(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.consume(),this.transitionTo("selfClosingStartTag")):"="===t?(this.consume(),this.transitionTo("beforeAttributeValue")):">"===t?(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.transitionTo("attributeName"),this.delegate.beginAttribute(),this.consume(),this.delegate.appendToAttributeName(t))},beforeAttributeValue:function(){var t=this.peek();Y(t)?this.consume():'"'===t?(this.transitionTo("attributeValueDoubleQuoted"),this.delegate.beginAttributeValue(!0),this.consume()):"'"===t?(this.transitionTo("attributeValueSingleQuoted"),this.delegate.beginAttributeValue(!0),this.consume()):">"===t?(this.delegate.beginAttributeValue(!1),this.delegate.finishAttributeValue(),this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):(this.transitionTo("attributeValueUnquoted"),this.delegate.beginAttributeValue(!1),this.consume(),this.delegate.appendToAttributeValue(t))},attributeValueDoubleQuoted:function(){var t=this.consume();'"'===t?(this.delegate.finishAttributeValue(),this.transitionTo("afterAttributeValueQuoted")):"&"===t?this.delegate.appendToAttributeValue(this.consumeCharRef()||"&"):this.delegate.appendToAttributeValue(t)},attributeValueSingleQuoted:function(){var t=this.consume();"'"===t?(this.delegate.finishAttributeValue(),this.transitionTo("afterAttributeValueQuoted")):"&"===t?this.delegate.appendToAttributeValue(this.consumeCharRef()||"&"):this.delegate.appendToAttributeValue(t)},attributeValueUnquoted:function(){var t=this.peek();Y(t)?(this.delegate.finishAttributeValue(),this.consume(),this.transitionTo("beforeAttributeName")):"/"===t?(this.delegate.finishAttributeValue(),this.consume(),this.transitionTo("selfClosingStartTag")):"&"===t?(this.consume(),this.delegate.appendToAttributeValue(this.consumeCharRef()||"&")):">"===t?(this.delegate.finishAttributeValue(),this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):(this.consume(),this.delegate.appendToAttributeValue(t))},afterAttributeValueQuoted:function(){var t=this.peek();Y(t)?(this.consume(),this.transitionTo("beforeAttributeName")):"/"===t?(this.consume(),this.transitionTo("selfClosingStartTag")):">"===t?(this.consume(),this.delegate.finishTag(),this.transitionTo("beforeData")):this.transitionTo("beforeAttributeName")},selfClosingStartTag:function(){">"===this.peek()?(this.consume(),this.delegate.markTagAsSelfClosing(),this.delegate.finishTag(),this.transitionTo("beforeData")):this.transitionTo("beforeAttributeName")},endTagOpen:function(){var t=this.consume();("@"===t||":"===t||Z(t))&&(this.transitionTo("tagName"),this.tagNameBuffer="",this.delegate.beginEndTag(),this.appendToTagName(t))}},this.reset()}return t.prototype.reset=function(){this.transitionTo("beforeData"),this.input="",this.index=0,this.line=1,this.column=0,this.delegate.reset()},t.prototype.transitionTo=function(t){this.state=t},t.prototype.tokenize=function(t){this.reset(),this.tokenizePart(t),this.tokenizeEOF()},t.prototype.tokenizePart=function(t){for(this.input+=function(t){return t.replace(W,"\n")}(t);this.index<this.input.length;){var e=this.states[this.state];if(void 0===e)throw new Error("unhandled state "+this.state);e.call(this)}},t.prototype.tokenizeEOF=function(){this.flushData()},t.prototype.flushData=function(){"data"===this.state&&(this.delegate.finishData(),this.transitionTo("beforeData"))},t.prototype.peek=function(){return this.input.charAt(this.index)},t.prototype.consume=function(){var t=this.peek();return this.index++,"\n"===t?(this.line++,this.column=0):this.column++,t},t.prototype.consumeCharRef=function(){var t=this.input.indexOf(";",this.index);if(-1!==t){var e=this.input.slice(this.index,t),r=this.entityParser.parse(e);if(r){for(var a=e.length;a;)this.consume(),a--;return this.consume(),r}}},t.prototype.markTagStart=function(){this.delegate.tagOpen()},t.prototype.appendToTagName=function(t){this.tagNameBuffer+=t,this.delegate.appendToTagName(t)},t}(),tt=function(t){function e(){var t;return a(this,e),(t=c(this,s(e).apply(this,arguments))).cursorCount=0,t}return o(e,t),i(e,[{key:"cursor",value:function(){return"%cursor:".concat(this.cursorCount++,"%")}},{key:"Program",value:function(t){var e,r=[];this.cursorCount=0,e=this.isTopLevel?I.template(r,t.blockParams,t.loc):I.blockItself(r,t.blockParams,t.chained,t.loc);var a,n=t.body.length;if(this.elementStack.push(e),0===n)return this.elementStack.pop();for(a=0;a<n;a++)this.acceptNode(t.body[a]);var i=this.elementStack.pop();if(i!==e){var o=i;throw new R("Unclosed element `"+o.tag+"` (on line "+o.loc.start.line+").",o.loc)}return e}},{key:"BlockStatement",value:function(t){if("comment"!==this.tokenizer.state){if("comment"!==this.tokenizer.state&&"data"!==this.tokenizer.state&&"beforeData"!==this.tokenizer.state)throw new R("A block may only be used inside an HTML element or another block.",t.loc);var e=et(this,t),r=e.path,a=e.params,n=e.hash,i=this.Program(t.program),o=t.inverse?this.Program(t.inverse):null;"in-element"===r.original&&(n=function(t,e,r){var a=!1;e.pairs.forEach((function(t){if("guid"===t.key)throw new R("Cannot pass `guid` from user space",r);"insertBefore"===t.key&&(a=!0)}));var n=I.literal("StringLiteral",t),i=I.pair("guid",n);if(e.pairs.unshift(i),!a){var o=I.literal("UndefinedLiteral",void 0),s=I.pair("insertBefore",o);e.pairs.push(s)}return e}(this.cursor(),n,t.loc));var s=I.block(r,a,n,i,o,t.loc);M(this.currentElement(),s)}else this.appendToCommentData(this.sourceForNode(t))}},{key:"MustacheStatement",value:function(t){var e=this.tokenizer;if("comment"!==e.state){var r,a=t.escaped,n=t.loc;if(j(t.path))r={type:"MustacheStatement",path:this.acceptNode(t.path),params:[],hash:I.hash(),escaped:a,loc:n};else{var i=et(this,t),o=i.path,s=i.params,l=i.hash;r=I.mustache(o,s,l,!a,n)}switch(e.state){case"tagOpen":case"tagName":throw new R("Cannot use mustaches in an elements tagname: `".concat(this.sourceForNode(t,t.path),"` at L").concat(n.start.line,":C").concat(n.start.column),r.loc);case"beforeAttributeName":rt(this.currentStartTag,r);break;case"attributeName":case"afterAttributeName":this.beginAttributeValue(!1),this.finishAttributeValue(),rt(this.currentStartTag,r),e.transitionTo("beforeAttributeName");break;case"afterAttributeValueQuoted":rt(this.currentStartTag,r),e.transitionTo("beforeAttributeName");break;case"beforeAttributeValue":this.beginAttributeValue(!1),at(this.currentAttribute,r),e.transitionTo("attributeValueUnquoted");break;case"attributeValueDoubleQuoted":case"attributeValueSingleQuoted":case"attributeValueUnquoted":at(this.currentAttribute,r);break;default:M(this.currentElement(),r)}return r}this.appendToCommentData(this.sourceForNode(t))}},{key:"ContentStatement",value:function(t){!function(t,e){var r=e.loc.start.line,a=e.loc.start.column,n=function(t,e){if(""===e)return{lines:t.split("\n").length-1,columns:0};var r=t.split(e)[0].split(/\n/),a=r.length-1;return{lines:a,columns:r[a].length}}(e.original,e.value);r+=n.lines,n.lines?a=n.columns:a+=n.columns;t.line=r,t.column=a}(this.tokenizer,t),this.tokenizer.tokenizePart(t.value),this.tokenizer.flushData()}},{key:"CommentStatement",value:function(t){var e=this.tokenizer;if("comment"===e.state)return this.appendToCommentData(this.sourceForNode(t)),null;var r=t.value,a=t.loc,n=I.mustacheComment(r,a);switch(e.state){case"beforeAttributeName":this.currentStartTag.comments.push(n);break;case"beforeData":case"data":M(this.currentElement(),n);break;default:throw new R("Using a Handlebars comment when in the `".concat(e.state,'` state is not supported: "').concat(n.value,'" on line ').concat(a.start.line,":").concat(a.start.column),t.loc)}return n}},{key:"PartialStatement",value:function(t){var e=t.loc;throw new R('Handlebars partials are not supported: "'.concat(this.sourceForNode(t,t.name),'" at L').concat(e.start.line,":C").concat(e.start.column),t.loc)}},{key:"PartialBlockStatement",value:function(t){var e=t.loc;throw new R('Handlebars partial blocks are not supported: "'.concat(this.sourceForNode(t,t.name),'" at L').concat(e.start.line,":C").concat(e.start.column),t.loc)}},{key:"Decorator",value:function(t){var e=t.loc;throw new R('Handlebars decorators are not supported: "'.concat(this.sourceForNode(t,t.path),'" at L').concat(e.start.line,":C").concat(e.start.column),t.loc)}},{key:"DecoratorBlock",value:function(t){var e=t.loc;throw new R('Handlebars decorator blocks are not supported: "'.concat(this.sourceForNode(t,t.path),'" at L').concat(e.start.line,":C").concat(e.start.column),t.loc)}},{key:"SubExpression",value:function(t){var e=et(this,t),r=e.path,a=e.params,n=e.hash;return I.sexpr(r,a,n,t.loc)}},{key:"PathExpression",value:function(t){var e,r=t.original,a=t.loc;if(-1!==r.indexOf("/")){if("./"===r.slice(0,2))throw new R('Using "./" is not supported in Glimmer and unnecessary: "'.concat(t.original,'" on line ').concat(a.start.line,"."),t.loc);if("../"===r.slice(0,3))throw new R('Changing context using "../" is not supported in Glimmer: "'.concat(t.original,'" on line ').concat(a.start.line,"."),t.loc);if(-1!==r.indexOf("."))throw new R("Mixing '.' and '/' in paths is not supported in Glimmer; use only '.' to separate property paths: \"".concat(t.original,'" on line ').concat(a.start.line,"."),t.loc);e=[t.parts.join("/")]}else{if("."===r){var n="L".concat(a.start.line,":C").concat(a.start.column);throw new R("'.' is not a supported path in Glimmer; check for a path with a trailing '.' at ".concat(n,"."),t.loc)}e=t.parts}var i=!1;return r.match(/^this(\..+)?$/)&&(i=!0),{type:"PathExpression",original:t.original,this:i,parts:e,data:t.data,loc:t.loc}}},{key:"Hash",value:function(t){for(var e=[],r=0;r<t.pairs.length;r++){var a=t.pairs[r];e.push(I.pair(a.key,this.acceptNode(a.value),a.loc))}return I.hash(e,t.loc)}},{key:"StringLiteral",value:function(t){return I.literal("StringLiteral",t.value,t.loc)}},{key:"BooleanLiteral",value:function(t){return I.literal("BooleanLiteral",t.value,t.loc)}},{key:"NumberLiteral",value:function(t){return I.literal("NumberLiteral",t.value,t.loc)}},{key:"UndefinedLiteral",value:function(t){return I.literal("UndefinedLiteral",void 0,t.loc)}},{key:"NullLiteral",value:function(t){return I.literal("NullLiteral",null,t.loc)}},{key:"isTopLevel",get:function(){return 0===this.elementStack.length}}]),e}(function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new K($);a(this,t),this.elementStack=[],this.currentAttribute=null,this.currentNode=null,this.source=e.split(/(?:\r\n?|\n)/g),this.tokenizer=new X(this,r)}return i(t,[{key:"acceptTemplate",value:function(t){return this[t.type](t)}},{key:"acceptNode",value:function(t){return this[t.type](t)}},{key:"currentElement",value:function(){return this.elementStack[this.elementStack.length-1]}},{key:"sourceForNode",value:function(t,e){var r,a,n,i=t.loc.start.line-1,o=i-1,s=t.loc.start.column,l=[];for(e?(a=e.loc.end.line-1,n=e.loc.end.column):(a=t.loc.end.line-1,n=t.loc.end.column);o<a;)o++,r=this.source[o],o===i?i===a?l.push(r.slice(s,n)):l.push(r.slice(s)):o===a?l.push(r.slice(0,n)):l.push(r);return l.join("\n")}},{key:"currentAttr",get:function(){return this.currentAttribute}},{key:"currentTag",get:function(){return this.currentNode}},{key:"currentStartTag",get:function(){return this.currentNode}},{key:"currentEndTag",get:function(){return this.currentNode}},{key:"currentComment",get:function(){return this.currentNode}},{key:"currentData",get:function(){return this.currentNode}}]),t}());function et(t,e){return{path:t.PathExpression(e.path),params:e.params?e.params.map((function(e){return t.acceptNode(e)})):[],hash:e.hash?t.Hash(e.hash):I.hash()}}function rt(t,e){var r=e.path,a=e.params,n=e.hash,i=e.loc;if(j(r)){var o="{{".concat(U(r),"}}"),s="<".concat(t.name," ... ").concat(o," ...");throw new R("In ".concat(s,", ").concat(o,' is not a valid modifier: "').concat(r.original,'" on line ').concat(i&&i.start.line,"."),e.loc)}var l=I.elementModifier(r,a,n,i);t.modifiers.push(l)}function at(t,e){t.isDynamic=!0,t.parts.push(e)}var nt={Program:y("body"),Template:y("body"),Block:y("body"),MustacheStatement:y("path","params","hash"),BlockStatement:y("path","params","hash","program","inverse"),ElementModifierStatement:y("path","params","hash"),PartialStatement:y("name","params","hash"),CommentStatement:y(),MustacheCommentStatement:y(),ElementNode:y("attributes","modifiers","children","comments"),AttrNode:y("value"),TextNode:y(),ConcatStatement:y("parts"),SubExpression:y("path","params","hash"),PathExpression:y(),StringLiteral:y(),BooleanLiteral:y(),NumberLiteral:y(),NullLiteral:y(),UndefinedLiteral:y(),Hash:y("pairs"),HashPair:y("value")},it=function(){function t(t,e,r,a){var n=Error.call(this,t);this.key=a,this.message=t,this.node=e,this.parent=r,this.stack=n.stack}return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t}();function ot(t,e,r){return new it("Cannot remove a node unless it is part of an array",t,e,r)}function st(t,e,r){return new it("Cannot replace a node with multiple nodes unless it is part of an array",t,e,r)}function lt(t,e){return new it("Replacing and removing in key handlers is not yet supported.",t,null,e)}function ct(t){return"function"==typeof t?t:t.enter}function ut(t){return"function"==typeof t?void 0:t.exit}function ht(t,e){var r,a,n,i=function(t,e){if(("Template"===e||"Block"===e)&&t.Program)return t.Program;var r=t[e];return void 0!==r?r:t.All}(t,e.type);if(void 0!==i&&(r=ct(i),a=ut(i)),void 0!==r&&(n=r(e)),null!=n){if(JSON.stringify(e)!==JSON.stringify(n))return Array.isArray(n)?(dt(t,n),n):ht(t,n)||n;n=void 0}if(void 0===n){for(var o=nt[e.type],s=0;s<o.length;s++){ft(t,i,e,o[s])}void 0!==a&&(n=a(e))}return n}function pt(t,e,r){t[e]=r}function ft(t,e,r,a){var n=function(t,e){return t[e]}(r,a);if(n){var i,o;if(void 0!==e){var s=function(t,e){var r="function"!=typeof t?t.keys:void 0;if(void 0!==r){var a=r[e];return void 0!==a?a:r.All}}(e,a);void 0!==s&&(i=ct(s),o=ut(s))}if(void 0!==i&&void 0!==i(r,a))throw lt(r,a);if(Array.isArray(n))dt(t,n);else{var l=ht(t,n);void 0!==l&&function(t,e,r,a){if(null===a)throw ot(r,t,e);if(Array.isArray(a)){if(1!==a.length)throw 0===a.length?ot(r,t,e):st(r,t,e);pt(t,e,a[0])}else pt(t,e,a)}(r,a,n,l)}if(void 0!==o&&void 0!==o(r,a))throw lt(r,a)}}function dt(t,e){for(var r=0;r<e.length;r++){var a=ht(t,e[r]);void 0!==a&&(r+=mt(e,r,a)-1)}}function mt(t,e,r){return null===r?(t.splice(e,1),0):Array.isArray(r)?(t.splice.apply(t,[e,1].concat(p(r))),r.length):(t.splice(e,1,r),1)}function gt(t,e){ht(e,t)}var vt=/[\xA0"&]/,bt=new RegExp(vt.source,"g"),yt=/[\xA0&<>]/,kt=new RegExp(yt.source,"g");function St(t){switch(t.charCodeAt(0)){case 160:return"&nbsp;";case 34:return"&quot;";case 38:return"&amp;";default:return t}}function wt(t){switch(t.charCodeAt(0)){case 160:return"&nbsp;";case 38:return"&amp;";case 60:return"&lt;";case 62:return"&gt;";default:return t}}function xt(t){return vt.test(t)?t.replace(bt,St):t}function Et(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{entityEncoding:"transformed"};if(!t)return"";function r(t){return t.map((function(t){return Et(t,e)}))}function a(t){var a;switch(t.type){case"MustacheStatement":case"SubExpression":case"ElementModifierStatement":case"BlockStatement":a=Et(t.path,e);break;case"PartialStatement":a=Et(t.name,e);break;default:return function(){throw new Error("unreachable")}()}return n([a,r(t.params).join(" "),Et(t.hash,e)]," ")}function n(t,e){return function(t){var e=[];return t.forEach((function(t){null!=t&&""!==t&&e.push(t)})),e}(t).join(e||"")}function i(t){var e=t.program.blockParams;return e.length?" as |".concat(e.join(" "),"|"):null}var o,s,l=[];switch(t.type){case"Program":case"Block":case"Template":var c=t.chained&&t.body[0];c&&(c.chained=!0);var u=r(t.body).join("");l.push(u);break;case"ElementNode":l.push("<",t.tag),t.attributes.length&&l.push(" ",r(t.attributes).join(" ")),t.modifiers.length&&l.push(" ",r(t.modifiers).join(" ")),t.comments.length&&l.push(" ",r(t.comments).join(" ")),t.blockParams.length&&l.push(" ","as"," ","|".concat(t.blockParams.join(" "),"|")),ie[t.tag]?(t.selfClosing&&l.push(" /"),l.push(">")):t.selfClosing?l.push(" />"):(l.push(">"),l.push.apply(l,r(t.children)),l.push("</",t.tag,">"));break;case"AttrNode":"TextNode"===t.value.type?""!==t.value.chars?(l.push(t.name,"="),l.push('"',"raw"===e.entityEncoding?t.value.chars:xt(t.value.chars),'"')):l.push(t.name):(l.push(t.name,"="),l.push(Et(t.value,e)));break;case"ConcatStatement":l.push('"'),t.parts.forEach((function(t){"TextNode"===t.type?l.push("raw"===e.entityEncoding?t.chars:xt(t.chars)):l.push(Et(t,e))})),l.push('"');break;case"TextNode":l.push("raw"===e.entityEncoding?t.chars:(s=t.chars,yt.test(s)?s.replace(kt,wt):s));break;case"MustacheStatement":l.push(n(["{{",a(t),"}}"]));break;case"MustacheCommentStatement":l.push(n(["{{!--",t.value,"--}}"]));break;case"ElementModifierStatement":l.push(n(["{{",a(t),"}}"]));break;case"PathExpression":l.push(t.original);break;case"SubExpression":l.push("(",a(t),")");break;case"BooleanLiteral":l.push(t.value?"true":"false");break;case"BlockStatement":var h=[];t.chained?h.push(["{{else ",a(t),"}}"].join("")):h.push(["{{#",a(o=t),i(o),"}}"].join("")),h.push(Et(t.program,e)),t.inverse&&(t.inverse.chained||h.push("{{else}}"),h.push(Et(t.inverse,e))),t.chained||h.push(function(t){return["{{/",Et(t.path,e),"}}"].join("")}(t)),l.push(h.join(""));break;case"PartialStatement":l.push(n(["{{>",a(t),"}}"]));break;case"CommentStatement":l.push(n(["\x3c!--",t.value,"--\x3e"]));break;case"StringLiteral":l.push('"'.concat(t.value,'"'));break;case"NumberLiteral":l.push(String(t.value));break;case"UndefinedLiteral":l.push("undefined");break;case"NullLiteral":l.push("null");break;case"Hash":l.push(t.pairs.map((function(t){return Et(t,e)})).join(" "));break;case"HashPair":l.push("".concat(t.key,"=").concat(Et(t.value,e)))}return l.join("")}var Pt=function(){function t(e){a(this,t),this.order=e,this.stack=[]}return i(t,[{key:"visit",value:function(t,e){t&&(this.stack.push(t),"post"===this.order?(this.children(t,e),e(t,this)):(e(t,this),this.children(t,e)),this.stack.pop())}},{key:"children",value:function(t,e){var r;r="Block"===t.type||"Template"===t.type&&At.Program?"Program":t.type;var a=At[r];a&&a(this,t,e)}}]),t}(),At={Program:function(t,e,r){for(var a=0;a<e.body.length;a++)t.visit(e.body[a],r)},Template:function(t,e,r){for(var a=0;a<e.body.length;a++)t.visit(e.body[a],r)},Block:function(t,e,r){for(var a=0;a<e.body.length;a++)t.visit(e.body[a],r)},ElementNode:function(t,e,r){for(var a=0;a<e.children.length;a++)t.visit(e.children[a],r)},BlockStatement:function(t,e,r){t.visit(e.program,r),t.visit(e.inverse||null,r)}},_t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function Tt(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}function Nt(t,e){return t(e={exports:{}},e.exports),e.exports}var Lt=Nt((function(t,e){e.__esModule=!0,e.extend=s,e.indexOf=function(t,e){for(var r=0,a=t.length;r<a;r++)if(t[r]===e)return r;return-1},e.escapeExpression=function(t){if("string"!=typeof t){if(t&&t.toHTML)return t.toHTML();if(null==t)return"";if(!t)return t+"";t=""+t}if(!i.test(t))return t;return t.replace(n,o)},e.isEmpty=function(t){return!t&&0!==t||!(!u(t)||0!==t.length)},e.createFrame=function(t){var e=s({},t);return e._parent=t,e},e.blockParams=function(t,e){return t.path=e,t},e.appendContextPath=function(t,e){return(t?t+".":"")+e};var a={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;","=":"&#x3D;"},n=/[&<>"'`=]/g,i=/[&<>"'`=]/;function o(t){return a[t]}function s(t){for(var e=1;e<arguments.length;e++)for(var r in arguments[e])Object.prototype.hasOwnProperty.call(arguments[e],r)&&(t[r]=arguments[e][r]);return t}var l=Object.prototype.toString;e.toString=l;var c=function(t){return"function"==typeof t};c(/x/)&&(e.isFunction=c=function(t){return"function"==typeof t&&"[object Function]"===l.call(t)}),e.isFunction=c;var u=Array.isArray||function(t){return!(!t||"object"!==r(t))&&"[object Array]"===l.call(t)};e.isArray=u}));Tt(Lt);Lt.extend,Lt.indexOf,Lt.escapeExpression,Lt.isEmpty,Lt.createFrame,Lt.blockParams,Lt.appendContextPath,Lt.isFunction,Lt.isArray;var Ct=Nt((function(t,e){e.__esModule=!0;var r=["description","fileName","lineNumber","message","name","number","stack"];function a(t,e){var n=e&&e.loc,i=void 0,o=void 0;n&&(t+=" - "+(i=n.start.line)+":"+(o=n.start.column));for(var s=Error.prototype.constructor.call(this,t),l=0;l<r.length;l++)this[r[l]]=s[r[l]];Error.captureStackTrace&&Error.captureStackTrace(this,a);try{n&&(this.lineNumber=i,Object.defineProperty?Object.defineProperty(this,"column",{value:o,enumerable:!0}):this.column=o)}catch(t){}}a.prototype=new Error,e.default=a,t.exports=e.default}));Tt(Ct);var Dt=Nt((function(t,e){e.__esModule=!0,e.default=function(t){t.registerHelper("blockHelperMissing",(function(e,r){var a=r.inverse,n=r.fn;if(!0===e)return n(this);if(!1===e||null==e)return a(this);if(Lt.isArray(e))return e.length>0?(r.ids&&(r.ids=[r.name]),t.helpers.each(e,r)):a(this);if(r.data&&r.ids){var i=Lt.createFrame(r.data);i.contextPath=Lt.appendContextPath(r.data.contextPath,r.name),r={data:i}}return n(e,r)}))},t.exports=e.default}));Tt(Dt);var qt=Nt((function(t,e){e.__esModule=!0;var a,n=(a=Ct)&&a.__esModule?a:{default:a};e.default=function(t){t.registerHelper("each",(function(t,e){if(!e)throw new n.default("Must pass iterator to #each");var a=e.fn,i=e.inverse,o=0,s="",l=void 0,c=void 0;function u(e,r,n){l&&(l.key=e,l.index=r,l.first=0===r,l.last=!!n,c&&(l.contextPath=c+e)),s+=a(t[e],{data:l,blockParams:Lt.blockParams([t[e],e],[c+e,null])})}if(e.data&&e.ids&&(c=Lt.appendContextPath(e.data.contextPath,e.ids[0])+"."),Lt.isFunction(t)&&(t=t.call(this)),e.data&&(l=Lt.createFrame(e.data)),t&&"object"===r(t))if(Lt.isArray(t))for(var h=t.length;o<h;o++)o in t&&u(o,o,o===t.length-1);else if(_t.Symbol&&t[_t.Symbol.iterator]){for(var p=[],f=t[_t.Symbol.iterator](),d=f.next();!d.done;d=f.next())p.push(d.value);for(h=(t=p).length;o<h;o++)u(o,o,o===t.length-1)}else{var m=void 0;for(var g in t)t.hasOwnProperty(g)&&(void 0!==m&&u(m,o-1),m=g,o++);void 0!==m&&u(m,o-1,!0)}return 0===o&&(s=i(this)),s}))},t.exports=e.default}));Tt(qt);var Ot=Nt((function(t,e){e.__esModule=!0;var r,a=(r=Ct)&&r.__esModule?r:{default:r};e.default=function(t){t.registerHelper("helperMissing",(function(){if(1!==arguments.length)throw new a.default('Missing helper: "'+arguments[arguments.length-1].name+'"')}))},t.exports=e.default}));Tt(Ot);var It=Nt((function(t,e){e.__esModule=!0,e.default=function(t){t.registerHelper("if",(function(t,e){return Lt.isFunction(t)&&(t=t.call(this)),!e.hash.includeZero&&!t||Lt.isEmpty(t)?e.inverse(this):e.fn(this)})),t.registerHelper("unless",(function(e,r){return t.helpers.if.call(this,e,{fn:r.inverse,inverse:r.fn,hash:r.hash})}))},t.exports=e.default}));Tt(It);var Bt=Nt((function(t,e){e.__esModule=!0,e.default=function(t){t.registerHelper("log",(function(){for(var e=[void 0],r=arguments[arguments.length-1],a=0;a<arguments.length-1;a++)e.push(arguments[a]);var n=1;null!=r.hash.level?n=r.hash.level:r.data&&null!=r.data.level&&(n=r.data.level),e[0]=n,t.log.apply(t,e)}))},t.exports=e.default}));Tt(Bt);var Rt=Nt((function(t,e){e.__esModule=!0,e.default=function(t){t.registerHelper("lookup",(function(t,e){return t?"constructor"!==e||t.propertyIsEnumerable(e)?t[e]:void 0:t}))},t.exports=e.default}));Tt(Rt);var Vt=Nt((function(t,e){e.__esModule=!0,e.default=function(t){t.registerHelper("with",(function(t,e){Lt.isFunction(t)&&(t=t.call(this));var r=e.fn;if(Lt.isEmpty(t))return e.inverse(this);var a=e.data;return e.data&&e.ids&&((a=Lt.createFrame(e.data)).contextPath=Lt.appendContextPath(e.data.contextPath,e.ids[0])),r(t,{data:a,blockParams:Lt.blockParams([t],[a&&a.contextPath])})}))},t.exports=e.default}));Tt(Vt);var Ht=Nt((function(t,e){function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0,e.registerDefaultHelpers=function(t){a.default(t),n.default(t),i.default(t),o.default(t),s.default(t),l.default(t),c.default(t)},e.moveHelperToHooks=function(t,e,r){t.helpers[e]&&(t.hooks[e]=t.helpers[e],r||delete t.helpers[e])};var a=r(Dt),n=r(qt),i=r(Ot),o=r(It),s=r(Bt),l=r(Rt),c=r(Vt)}));Tt(Ht);Ht.registerDefaultHelpers,Ht.moveHelperToHooks;var Mt=Nt((function(t,e){e.__esModule=!0,e.default=function(t){t.registerDecorator("inline",(function(t,e,r,a){var n=t;return e.partials||(e.partials={},n=function(a,n){var i=r.partials;r.partials=Lt.extend({},i,e.partials);var o=t(a,n);return r.partials=i,o}),e.partials[a.args[0]]=a.fn,n}))},t.exports=e.default}));Tt(Mt);var jt=Nt((function(t,e){e.__esModule=!0,e.registerDefaultDecorators=function(t){a.default(t)};var r,a=(r=Mt)&&r.__esModule?r:{default:r}}));Tt(jt);jt.registerDefaultDecorators;var Ut=Nt((function(t,e){e.__esModule=!0;var r={methodMap:["debug","info","warn","error"],level:"info",lookupLevel:function(t){if("string"==typeof t){var e=Lt.indexOf(r.methodMap,t.toLowerCase());t=e>=0?e:parseInt(t,10)}return t},log:function(t){if(t=r.lookupLevel(t),"undefined"!=typeof console&&r.lookupLevel(r.level)<=t){var e=r.methodMap[t];console[e]||(e="log");for(var a=arguments.length,n=Array(a>1?a-1:0),i=1;i<a;i++)n[i-1]=arguments[i];console[e].apply(console,n)}}};e.default=r,t.exports=e.default}));Tt(Ut);var $t=Nt((function(t,e){function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0,e.HandlebarsEnvironment=i;var a=r(Ct),n=r(Ut);e.VERSION="4.4.5";e.COMPILER_REVISION=8;e.LAST_COMPATIBLE_COMPILER_REVISION=7;e.REVISION_CHANGES={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};function i(t,e,r){this.helpers=t||{},this.partials=e||{},this.decorators=r||{},Ht.registerDefaultHelpers(this),jt.registerDefaultDecorators(this)}i.prototype={constructor:i,logger:n.default,log:n.default.log,registerHelper:function(t,e){if("[object Object]"===Lt.toString.call(t)){if(e)throw new a.default("Arg not supported with multiple helpers");Lt.extend(this.helpers,t)}else this.helpers[t]=e},unregisterHelper:function(t){delete this.helpers[t]},registerPartial:function(t,e){if("[object Object]"===Lt.toString.call(t))Lt.extend(this.partials,t);else{if(void 0===e)throw new a.default('Attempting to register a partial called "'+t+'" as undefined');this.partials[t]=e}},unregisterPartial:function(t){delete this.partials[t]},registerDecorator:function(t,e){if("[object Object]"===Lt.toString.call(t)){if(e)throw new a.default("Arg not supported with multiple decorators");Lt.extend(this.decorators,t)}else this.decorators[t]=e},unregisterDecorator:function(t){delete this.decorators[t]}};var o=n.default.log;e.log=o,e.createFrame=Lt.createFrame,e.logger=n.default}));Tt($t);$t.HandlebarsEnvironment,$t.VERSION,$t.COMPILER_REVISION,$t.LAST_COMPATIBLE_COMPILER_REVISION,$t.REVISION_CHANGES,$t.log,$t.createFrame,$t.logger;var zt=Nt((function(t,e){function r(t){this.string=t}e.__esModule=!0,r.prototype.toString=r.prototype.toHTML=function(){return""+this.string},e.default=r,t.exports=e.default}));Tt(zt);var Ft=Nt((function(t,e){e.__esModule=!0,e.checkRevision=function(t){var e=t&&t[0]||1,r=$t.COMPILER_REVISION;if(e>=$t.LAST_COMPATIBLE_COMPILER_REVISION&&e<=$t.COMPILER_REVISION)return;if(e<$t.LAST_COMPATIBLE_COMPILER_REVISION){var a=$t.REVISION_CHANGES[r],n=$t.REVISION_CHANGES[e];throw new i.default("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+a+") or downgrade your runtime to an older version ("+n+").")}throw new i.default("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+t[1]+").")},e.template=function(t,e){if(!e)throw new i.default("No environment passed to template");if(!t||!t.main)throw new i.default("Unknown template object: "+r(t));t.main.decorator=t.main_d,e.VM.checkRevision(t.compiler);var a=t.compiler&&7===t.compiler[0];var s={strict:function(t,e){if(!(e in t))throw new i.default('"'+e+'" not defined in '+t);return t[e]},lookup:function(t,e){for(var r=t.length,a=0;a<r;a++)if(t[a]&&null!=t[a][e])return t[a][e]},lambda:function(t,e){return"function"==typeof t?t.call(e):t},escapeExpression:n.escapeExpression,invokePartial:function(r,a,o){o.hash&&(a=n.extend({},a,o.hash),o.ids&&(o.ids[0]=!0)),r=e.VM.resolvePartial.call(this,r,a,o);var s=n.extend({},o,{hooks:this.hooks}),l=e.VM.invokePartial.call(this,r,a,s);if(null==l&&e.compile&&(o.partials[o.name]=e.compile(r,t.compilerOptions,e),l=o.partials[o.name](a,s)),null!=l){if(o.indent){for(var c=l.split("\n"),u=0,h=c.length;u<h&&(c[u]||u+1!==h);u++)c[u]=o.indent+c[u];l=c.join("\n")}return l}throw new i.default("The partial "+o.name+" could not be compiled when running in runtime-only mode")},fn:function(e){var r=t[e];return r.decorator=t[e+"_d"],r},programs:[],program:function(t,e,r,a,n){var i=this.programs[t],s=this.fn(t);return e||n||a||r?i=o(this,t,s,e,r,a,n):i||(i=this.programs[t]=o(this,t,s)),i},data:function(t,e){for(;t&&e--;)t=t._parent;return t},nullContext:Object.seal({}),noop:e.VM.noop,compilerInfo:t.compiler};function c(e){var r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],a=r.data;c._setup(r),!r.partial&&t.useData&&(a=function(t,e){e&&"root"in e||((e=e?$t.createFrame(e):{}).root=t);return e}(e,a));var n=void 0,i=t.useBlockParams?[]:void 0;function o(e){return""+t.main(s,e,s.helpers,s.partials,a,i,n)}return t.useDepths&&(n=r.depths?e!=r.depths[0]?[e].concat(r.depths):r.depths:[e]),(o=l(t.main,o,s,r.depths||[],a,i))(e,r)}return c.isTop=!0,c._setup=function(r){if(r.partial)s.helpers=r.helpers,s.partials=r.partials,s.decorators=r.decorators,s.hooks=r.hooks;else{s.helpers=n.extend({},e.helpers,r.helpers),t.usePartial&&(s.partials=n.extend({},e.partials,r.partials)),(t.usePartial||t.useDecorators)&&(s.decorators=n.extend({},e.decorators,r.decorators)),s.hooks={};var i=r.allowCallsToHelperMissing||a;Ht.moveHelperToHooks(s,"helperMissing",i),Ht.moveHelperToHooks(s,"blockHelperMissing",i)}},c._child=function(e,r,a,n){if(t.useBlockParams&&!a)throw new i.default("must pass block params");if(t.useDepths&&!n)throw new i.default("must pass parent depths");return o(s,e,t[e],r,0,a,n)},c},e.wrapProgram=o,e.resolvePartial=function(t,e,r){t?t.call||r.name||(r.name=t,t=r.partials[t]):t="@partial-block"===r.name?r.data["partial-block"]:r.partials[r.name];return t},e.invokePartial=function(t,e,r){var a=r.data&&r.data["partial-block"];r.partial=!0,r.ids&&(r.data.contextPath=r.ids[0]||r.data.contextPath);var o=void 0;r.fn&&r.fn!==s&&function(){r.data=$t.createFrame(r.data);var t=r.fn;o=r.data["partial-block"]=function(e){var r=arguments.length<=1||void 0===arguments[1]?{}:arguments[1];return r.data=$t.createFrame(r.data),r.data["partial-block"]=a,t(e,r)},t.partials&&(r.partials=n.extend({},r.partials,t.partials))}();void 0===t&&o&&(t=o);if(void 0===t)throw new i.default("The partial "+r.name+" could not be found");if(t instanceof Function)return t(e,r)},e.noop=s;var a,n=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}(Lt),i=(a=Ct)&&a.__esModule?a:{default:a};function o(t,e,r,a,n,i,o){function s(e){var n=arguments.length<=1||void 0===arguments[1]?{}:arguments[1],s=o;return!o||e==o[0]||e===t.nullContext&&null===o[0]||(s=[e].concat(o)),r(t,e,t.helpers,t.partials,n.data||a,i&&[n.blockParams].concat(i),s)}return(s=l(r,s,t,o,a,i)).program=e,s.depth=o?o.length:0,s.blockParams=n||0,s}function s(){return""}function l(t,e,r,a,i,o){if(t.decorator){var s={};e=t.decorator(e,s,r,a&&a[0],i,o,a),n.extend(e,s)}return e}}));Tt(Ft);Ft.checkRevision,Ft.template,Ft.wrapProgram,Ft.resolvePartial,Ft.invokePartial,Ft.noop;var Gt=Nt((function(t,e){e.__esModule=!0,e.default=function(t){var e=void 0!==_t?_t:window,r=e.Handlebars;t.noConflict=function(){return e.Handlebars===t&&(e.Handlebars=r),t}},t.exports=e.default}));Tt(Gt);var Kt=Nt((function(t,e){function r(t){return t&&t.__esModule?t:{default:t}}function a(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}e.__esModule=!0;var n=a($t),i=r(zt),o=r(Ct),s=a(Lt),l=a(Ft),c=r(Gt);function u(){var t=new n.HandlebarsEnvironment;return s.extend(t,n),t.SafeString=i.default,t.Exception=o.default,t.Utils=s,t.escapeExpression=s.escapeExpression,t.VM=l,t.template=function(e){return l.template(e,t)},t}var h=u();h.create=u,c.default(h),h.default=h,e.default=h,t.exports=e.default}));Tt(Kt);var Jt=Nt((function(t,e){e.__esModule=!0;var r={helpers:{helperExpression:function(t){return"SubExpression"===t.type||("MustacheStatement"===t.type||"BlockStatement"===t.type)&&!!(t.params&&t.params.length||t.hash)},scopedId:function(t){return/^\.|this\b/.test(t.original)},simpleId:function(t){return 1===t.parts.length&&!r.helpers.scopedId(t)&&!t.depth}}};e.default=r,t.exports=e.default}));Tt(Jt);var Qt=Nt((function(t,e){e.__esModule=!0;var r=function(){var t={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,partialBlock:12,content:13,COMMENT:14,CONTENT:15,openRawBlock:16,rawBlock_repetition0:17,END_RAW_BLOCK:18,OPEN_RAW_BLOCK:19,helperName:20,openRawBlock_repetition0:21,openRawBlock_option0:22,CLOSE_RAW_BLOCK:23,openBlock:24,block_option0:25,closeBlock:26,openInverse:27,block_option1:28,OPEN_BLOCK:29,openBlock_repetition0:30,openBlock_option0:31,openBlock_option1:32,CLOSE:33,OPEN_INVERSE:34,openInverse_repetition0:35,openInverse_option0:36,openInverse_option1:37,openInverseChain:38,OPEN_INVERSE_CHAIN:39,openInverseChain_repetition0:40,openInverseChain_option0:41,openInverseChain_option1:42,inverseAndProgram:43,INVERSE:44,inverseChain:45,inverseChain_option0:46,OPEN_ENDBLOCK:47,OPEN:48,mustache_repetition0:49,mustache_option0:50,OPEN_UNESCAPED:51,mustache_repetition1:52,mustache_option1:53,CLOSE_UNESCAPED:54,OPEN_PARTIAL:55,partialName:56,partial_repetition0:57,partial_option0:58,openPartialBlock:59,OPEN_PARTIAL_BLOCK:60,openPartialBlock_repetition0:61,openPartialBlock_option0:62,param:63,sexpr:64,OPEN_SEXPR:65,sexpr_repetition0:66,sexpr_option0:67,CLOSE_SEXPR:68,hash:69,hash_repetition_plus0:70,hashSegment:71,ID:72,EQUALS:73,blockParams:74,OPEN_BLOCK_PARAMS:75,blockParams_repetition_plus0:76,CLOSE_BLOCK_PARAMS:77,path:78,dataName:79,STRING:80,NUMBER:81,BOOLEAN:82,UNDEFINED:83,NULL:84,DATA:85,pathSegments:86,SEP:87,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",14:"COMMENT",15:"CONTENT",18:"END_RAW_BLOCK",19:"OPEN_RAW_BLOCK",23:"CLOSE_RAW_BLOCK",29:"OPEN_BLOCK",33:"CLOSE",34:"OPEN_INVERSE",39:"OPEN_INVERSE_CHAIN",44:"INVERSE",47:"OPEN_ENDBLOCK",48:"OPEN",51:"OPEN_UNESCAPED",54:"CLOSE_UNESCAPED",55:"OPEN_PARTIAL",60:"OPEN_PARTIAL_BLOCK",65:"OPEN_SEXPR",68:"CLOSE_SEXPR",72:"ID",73:"EQUALS",75:"OPEN_BLOCK_PARAMS",77:"CLOSE_BLOCK_PARAMS",80:"STRING",81:"NUMBER",82:"BOOLEAN",83:"UNDEFINED",84:"NULL",85:"DATA",87:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,0],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],performAction:function(t,e,r,a,n,i,o){var s=i.length-1;switch(n){case 1:return i[s-1];case 2:this.$=a.prepareProgram(i[s]);break;case 3:case 4:case 5:case 6:case 7:case 8:this.$=i[s];break;case 9:this.$={type:"CommentStatement",value:a.stripComment(i[s]),strip:a.stripFlags(i[s],i[s]),loc:a.locInfo(this._$)};break;case 10:this.$={type:"ContentStatement",original:i[s],value:i[s],loc:a.locInfo(this._$)};break;case 11:this.$=a.prepareRawBlock(i[s-2],i[s-1],i[s],this._$);break;case 12:this.$={path:i[s-3],params:i[s-2],hash:i[s-1]};break;case 13:this.$=a.prepareBlock(i[s-3],i[s-2],i[s-1],i[s],!1,this._$);break;case 14:this.$=a.prepareBlock(i[s-3],i[s-2],i[s-1],i[s],!0,this._$);break;case 15:this.$={open:i[s-5],path:i[s-4],params:i[s-3],hash:i[s-2],blockParams:i[s-1],strip:a.stripFlags(i[s-5],i[s])};break;case 16:case 17:this.$={path:i[s-4],params:i[s-3],hash:i[s-2],blockParams:i[s-1],strip:a.stripFlags(i[s-5],i[s])};break;case 18:this.$={strip:a.stripFlags(i[s-1],i[s-1]),program:i[s]};break;case 19:var l=a.prepareBlock(i[s-2],i[s-1],i[s],i[s],!1,this._$),c=a.prepareProgram([l],i[s-1].loc);c.chained=!0,this.$={strip:i[s-2].strip,program:c,chain:!0};break;case 20:this.$=i[s];break;case 21:this.$={path:i[s-1],strip:a.stripFlags(i[s-2],i[s])};break;case 22:case 23:this.$=a.prepareMustache(i[s-3],i[s-2],i[s-1],i[s-4],a.stripFlags(i[s-4],i[s]),this._$);break;case 24:this.$={type:"PartialStatement",name:i[s-3],params:i[s-2],hash:i[s-1],indent:"",strip:a.stripFlags(i[s-4],i[s]),loc:a.locInfo(this._$)};break;case 25:this.$=a.preparePartialBlock(i[s-2],i[s-1],i[s],this._$);break;case 26:this.$={path:i[s-3],params:i[s-2],hash:i[s-1],strip:a.stripFlags(i[s-4],i[s])};break;case 27:case 28:this.$=i[s];break;case 29:this.$={type:"SubExpression",path:i[s-3],params:i[s-2],hash:i[s-1],loc:a.locInfo(this._$)};break;case 30:this.$={type:"Hash",pairs:i[s],loc:a.locInfo(this._$)};break;case 31:this.$={type:"HashPair",key:a.id(i[s-2]),value:i[s],loc:a.locInfo(this._$)};break;case 32:this.$=a.id(i[s-1]);break;case 33:case 34:this.$=i[s];break;case 35:this.$={type:"StringLiteral",value:i[s],original:i[s],loc:a.locInfo(this._$)};break;case 36:this.$={type:"NumberLiteral",value:Number(i[s]),original:Number(i[s]),loc:a.locInfo(this._$)};break;case 37:this.$={type:"BooleanLiteral",value:"true"===i[s],original:"true"===i[s],loc:a.locInfo(this._$)};break;case 38:this.$={type:"UndefinedLiteral",original:void 0,value:void 0,loc:a.locInfo(this._$)};break;case 39:this.$={type:"NullLiteral",original:null,value:null,loc:a.locInfo(this._$)};break;case 40:case 41:this.$=i[s];break;case 42:this.$=a.preparePath(!0,i[s],this._$);break;case 43:this.$=a.preparePath(!1,i[s],this._$);break;case 44:i[s-2].push({part:a.id(i[s]),original:i[s],separator:i[s-1]}),this.$=i[s-2];break;case 45:this.$=[{part:a.id(i[s]),original:i[s]}];break;case 46:this.$=[];break;case 47:i[s-1].push(i[s]);break;case 48:this.$=[];break;case 49:i[s-1].push(i[s]);break;case 50:this.$=[];break;case 51:i[s-1].push(i[s]);break;case 58:this.$=[];break;case 59:i[s-1].push(i[s]);break;case 64:this.$=[];break;case 65:i[s-1].push(i[s]);break;case 70:this.$=[];break;case 71:i[s-1].push(i[s]);break;case 78:this.$=[];break;case 79:i[s-1].push(i[s]);break;case 82:this.$=[];break;case 83:i[s-1].push(i[s]);break;case 86:this.$=[];break;case 87:i[s-1].push(i[s]);break;case 90:this.$=[];break;case 91:i[s-1].push(i[s]);break;case 94:this.$=[];break;case 95:i[s-1].push(i[s]);break;case 98:this.$=[i[s]];break;case 99:i[s-1].push(i[s]);break;case 100:this.$=[i[s]];break;case 101:i[s-1].push(i[s])}},table:[{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{15:[2,48],17:39,18:[2,48]},{20:41,56:40,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:44,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:45,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:41,56:48,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:49,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,50]},{72:[1,35],86:51},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:52,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:53,38:55,39:[1,57],43:56,44:[1,58],45:54,47:[2,54]},{28:59,43:60,44:[1,58],47:[2,56]},{13:62,15:[1,20],18:[1,61]},{33:[2,86],57:63,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:64,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:65,47:[1,66]},{30:67,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:68,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:69,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:70,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:74,33:[2,80],50:71,63:72,64:75,65:[1,43],69:73,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,79]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,50]},{20:74,53:80,54:[2,84],63:81,64:75,65:[1,43],69:82,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:83,47:[1,66]},{47:[2,55]},{4:84,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:85,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:86,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:87,47:[1,66]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:74,33:[2,88],58:88,63:89,64:75,65:[1,43],69:90,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:91,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:92,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,31:93,33:[2,60],63:94,64:75,65:[1,43],69:95,70:76,71:77,72:[1,78],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,66],36:96,63:97,64:75,65:[1,43],69:98,70:76,71:77,72:[1,78],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,22:99,23:[2,52],63:100,64:75,65:[1,43],69:101,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,92],62:102,63:103,64:75,65:[1,43],69:104,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,105]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:106,72:[1,107],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,108],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,109]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:55,39:[1,57],43:56,44:[1,58],45:111,46:110,47:[2,76]},{33:[2,70],40:112,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,113]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:74,63:115,64:75,65:[1,43],67:114,68:[2,96],69:116,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,117]},{32:118,33:[2,62],74:119,75:[1,120]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:121,74:122,75:[1,120]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,123]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,124]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,108]},{20:74,63:125,64:75,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:74,33:[2,72],41:126,63:127,64:75,65:[1,43],69:128,70:76,71:77,72:[1,78],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,129]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,130]},{33:[2,63]},{72:[1,132],76:131},{33:[1,133]},{33:[2,69]},{15:[2,12],18:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:134,74:135,75:[1,120]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,137],77:[1,136]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,138]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],defaultActions:{4:[2,1],54:[2,55],56:[2,20],60:[2,57],73:[2,81],82:[2,85],86:[2,18],90:[2,89],101:[2,53],104:[2,93],110:[2,19],111:[2,77],116:[2,97],119:[2,63],122:[2,69],135:[2,75],136:[2,32]},parseError:function(t,e){throw new Error(t)},parse:function(t){var e=this,r=[0],a=[null],n=[],i=this.table,o="",s=0,l=0,c=0;this.lexer.setInput(t),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,void 0===this.lexer.yylloc&&(this.lexer.yylloc={});var u=this.lexer.yylloc;n.push(u);var h=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var p,f,d,m,g,v,b,y,k,S,w={};;){if(d=r[r.length-1],this.defaultActions[d]?m=this.defaultActions[d]:(null==p&&(S=void 0,"number"!=typeof(S=e.lexer.lex()||1)&&(S=e.symbols_[S]||S),p=S),m=i[d]&&i[d][p]),void 0===m||!m.length||!m[0]){var x="";if(!c){for(v in k=[],i[d])this.terminals_[v]&&v>2&&k.push("'"+this.terminals_[v]+"'");x=this.lexer.showPosition?"Parse error on line "+(s+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[p]||p)+"'":"Parse error on line "+(s+1)+": Unexpected "+(1==p?"end of input":"'"+(this.terminals_[p]||p)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[p]||p,line:this.lexer.yylineno,loc:u,expected:k})}}if(m[0]instanceof Array&&m.length>1)throw new Error("Parse Error: multiple actions possible at state: "+d+", token: "+p);switch(m[0]){case 1:r.push(p),a.push(this.lexer.yytext),n.push(this.lexer.yylloc),r.push(m[1]),p=null,f?(p=f,f=null):(l=this.lexer.yyleng,o=this.lexer.yytext,s=this.lexer.yylineno,u=this.lexer.yylloc,c>0&&c--);break;case 2:if(b=this.productions_[m[1]][1],w.$=a[a.length-b],w._$={first_line:n[n.length-(b||1)].first_line,last_line:n[n.length-1].last_line,first_column:n[n.length-(b||1)].first_column,last_column:n[n.length-1].last_column},h&&(w._$.range=[n[n.length-(b||1)].range[0],n[n.length-1].range[1]]),void 0!==(g=this.performAction.call(w,o,l,s,this.yy,m[1],a,n)))return g;b&&(r=r.slice(0,-1*b*2),a=a.slice(0,-1*b),n=n.slice(0,-1*b)),r.push(this.productions_[m[1]][0]),a.push(w.$),n.push(w._$),y=i[r[r.length-2]][r[r.length-1]],r.push(y);break;case 3:return!0}}return!0}},e=function(){var t={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t){return this._input=t,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,r=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e-1),this.offset-=e;var a=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),r.length-1&&(this.yylineno-=r.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:r?(r.length===a.length?this.yylloc.first_column:0)+a[a.length-r.length].length-r[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this},more:function(){return this._more=!0,this},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},next:function(){if(this.done)return this.EOF;var t,e,r,a,n;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),o=0;o<i.length&&(!(r=this._input.match(this.rules[i[o]]))||e&&!(r[0].length>e[0].length)||(e=r,a=o,this.options.flex));o++);return e?((n=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],t=this.performAction.call(this,this.yy,this,i[a],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),t||void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return void 0!==t?t:this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(t){this.begin(t)},options:{},performAction:function(t,e,r,a){function n(t,r){return e.yytext=e.yytext.substring(t,e.yyleng-r+t)}switch(r){case 0:if("\\\\"===e.yytext.slice(-2)?(n(0,1),this.begin("mu")):"\\"===e.yytext.slice(-1)?(n(0,1),this.begin("emu")):this.begin("mu"),e.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),"raw"===this.conditionStack[this.conditionStack.length-1]?15:(n(5,9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(e.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return e.yytext=n(1,2).replace(/\\"/g,'"'),80;case 32:return e.yytext=n(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return e.yytext=e.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},rules:[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]+?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],conditions:{mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}}};return t}();function r(){this.yy={}}return t.lexer=e,r.prototype=t,t.Parser=r,new r}();e.default=r,t.exports=e.default}));Tt(Qt);var Wt=Nt((function(t,e){e.__esModule=!0;var r,a=(r=Ct)&&r.__esModule?r:{default:r};function n(){this.parents=[]}function i(t){this.acceptRequired(t,"path"),this.acceptArray(t.params),this.acceptKey(t,"hash")}function o(t){i.call(this,t),this.acceptKey(t,"program"),this.acceptKey(t,"inverse")}function s(t){this.acceptRequired(t,"name"),this.acceptArray(t.params),this.acceptKey(t,"hash")}n.prototype={constructor:n,mutating:!1,acceptKey:function(t,e){var r=this.accept(t[e]);if(this.mutating){if(r&&!n.prototype[r.type])throw new a.default('Unexpected node type "'+r.type+'" found when accepting '+e+" on "+t.type);t[e]=r}},acceptRequired:function(t,e){if(this.acceptKey(t,e),!t[e])throw new a.default(t.type+" requires "+e)},acceptArray:function(t){for(var e=0,r=t.length;e<r;e++)this.acceptKey(t,e),t[e]||(t.splice(e,1),e--,r--)},accept:function(t){if(t){if(!this[t.type])throw new a.default("Unknown type: "+t.type,t);this.current&&this.parents.unshift(this.current),this.current=t;var e=this[t.type](t);return this.current=this.parents.shift(),!this.mutating||e?e:!1!==e?t:void 0}},Program:function(t){this.acceptArray(t.body)},MustacheStatement:i,Decorator:i,BlockStatement:o,DecoratorBlock:o,PartialStatement:s,PartialBlockStatement:function(t){s.call(this,t),this.acceptKey(t,"program")},ContentStatement:function(){},CommentStatement:function(){},SubExpression:i,PathExpression:function(){},StringLiteral:function(){},NumberLiteral:function(){},BooleanLiteral:function(){},UndefinedLiteral:function(){},NullLiteral:function(){},Hash:function(t){this.acceptArray(t.pairs)},HashPair:function(t){this.acceptRequired(t,"value")}},e.default=n,t.exports=e.default}));Tt(Wt);var Yt=Nt((function(t,e){e.__esModule=!0;var r,a=(r=Wt)&&r.__esModule?r:{default:r};function n(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0];this.options=t}function i(t,e,r){void 0===e&&(e=t.length);var a=t[e-1],n=t[e-2];return a?"ContentStatement"===a.type?(n||!r?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(a.original):void 0:r}function o(t,e,r){void 0===e&&(e=-1);var a=t[e+1],n=t[e+2];return a?"ContentStatement"===a.type?(n||!r?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(a.original):void 0:r}function s(t,e,r){var a=t[null==e?0:e+1];if(a&&"ContentStatement"===a.type&&(r||!a.rightStripped)){var n=a.value;a.value=a.value.replace(r?/^\s+/:/^[ \t]*\r?\n?/,""),a.rightStripped=a.value!==n}}function l(t,e,r){var a=t[null==e?t.length-1:e-1];if(a&&"ContentStatement"===a.type&&(r||!a.leftStripped)){var n=a.value;return a.value=a.value.replace(r?/\s+$/:/[ \t]+$/,""),a.leftStripped=a.value!==n,a.leftStripped}}n.prototype=new a.default,n.prototype.Program=function(t){var e=!this.options.ignoreStandalone,r=!this.isRootSeen;this.isRootSeen=!0;for(var a=t.body,n=0,c=a.length;n<c;n++){var u=a[n],h=this.accept(u);if(h){var p=i(a,n,r),f=o(a,n,r),d=h.openStandalone&&p,m=h.closeStandalone&&f,g=h.inlineStandalone&&p&&f;h.close&&s(a,n,!0),h.open&&l(a,n,!0),e&&g&&(s(a,n),l(a,n)&&"PartialStatement"===u.type&&(u.indent=/([ \t]+$)/.exec(a[n-1].original)[1])),e&&d&&(s((u.program||u.inverse).body),l(a,n)),e&&m&&(s(a,n),l((u.inverse||u.program).body))}}return t},n.prototype.BlockStatement=n.prototype.DecoratorBlock=n.prototype.PartialBlockStatement=function(t){this.accept(t.program),this.accept(t.inverse);var e=t.program||t.inverse,r=t.program&&t.inverse,a=r,n=r;if(r&&r.chained)for(a=r.body[0].program;n.chained;)n=n.body[n.body.length-1].program;var c={open:t.openStrip.open,close:t.closeStrip.close,openStandalone:o(e.body),closeStandalone:i((a||e).body)};if(t.openStrip.close&&s(e.body,null,!0),r){var u=t.inverseStrip;u.open&&l(e.body,null,!0),u.close&&s(a.body,null,!0),t.closeStrip.open&&l(n.body,null,!0),!this.options.ignoreStandalone&&i(e.body)&&o(a.body)&&(l(e.body),s(a.body))}else t.closeStrip.open&&l(e.body,null,!0);return c},n.prototype.Decorator=n.prototype.MustacheStatement=function(t){return t.strip},n.prototype.PartialStatement=n.prototype.CommentStatement=function(t){var e=t.strip||{};return{inlineStandalone:!0,open:e.open,close:e.close}},e.default=n,t.exports=e.default}));Tt(Yt);var Zt=Nt((function(t,e){e.__esModule=!0,e.SourceLocation=function(t,e){this.source=t,this.start={line:e.first_line,column:e.first_column},this.end={line:e.last_line,column:e.last_column}},e.id=function(t){return/^\[.*\]$/.test(t)?t.substring(1,t.length-1):t},e.stripFlags=function(t,e){return{open:"~"===t.charAt(2),close:"~"===e.charAt(e.length-3)}},e.stripComment=function(t){return t.replace(/^\{\{~?!-?-?/,"").replace(/-?-?~?\}\}$/,"")},e.preparePath=function(t,e,r){r=this.locInfo(r);for(var n=t?"@":"",i=[],o=0,s=0,l=e.length;s<l;s++){var c=e[s].part,u=e[s].original!==c;if(n+=(e[s].separator||"")+c,u||".."!==c&&"."!==c&&"this"!==c)i.push(c);else{if(i.length>0)throw new a.default("Invalid path: "+n,{loc:r});".."===c&&o++}}return{type:"PathExpression",data:t,depth:o,parts:i,original:n,loc:r}},e.prepareMustache=function(t,e,r,a,n,i){var o=a.charAt(3)||a.charAt(2),s="{"!==o&&"&"!==o;return{type:/\*/.test(a)?"Decorator":"MustacheStatement",path:t,params:e,hash:r,escaped:s,strip:n,loc:this.locInfo(i)}},e.prepareRawBlock=function(t,e,r,a){n(t,r),a=this.locInfo(a);var i={type:"Program",body:e,strip:{},loc:a};return{type:"BlockStatement",path:t.path,params:t.params,hash:t.hash,program:i,openStrip:{},inverseStrip:{},closeStrip:{},loc:a}},e.prepareBlock=function(t,e,r,i,o,s){i&&i.path&&n(t,i);var l=/\*/.test(t.open);e.blockParams=t.blockParams;var c=void 0,u=void 0;if(r){if(l)throw new a.default("Unexpected inverse block on decorator",r);r.chain&&(r.program.body[0].closeStrip=i.strip),u=r.strip,c=r.program}o&&(o=c,c=e,e=o);return{type:l?"DecoratorBlock":"BlockStatement",path:t.path,params:t.params,hash:t.hash,program:e,inverse:c,openStrip:t.strip,inverseStrip:u,closeStrip:i&&i.strip,loc:this.locInfo(s)}},e.prepareProgram=function(t,e){if(!e&&t.length){var r=t[0].loc,a=t[t.length-1].loc;r&&a&&(e={source:r.source,start:{line:r.start.line,column:r.start.column},end:{line:a.end.line,column:a.end.column}})}return{type:"Program",body:t,strip:{},loc:e}},e.preparePartialBlock=function(t,e,r,a){return n(t,r),{type:"PartialBlockStatement",name:t.path,params:t.params,hash:t.hash,program:e,openStrip:t.strip,closeStrip:r&&r.strip,loc:this.locInfo(a)}};var r,a=(r=Ct)&&r.__esModule?r:{default:r};function n(t,e){if(e=e.path?e.path.original:e,t.path.original!==e){var r={loc:t.path.loc};throw new a.default(t.path.original+" doesn't match "+e,r)}}}));Tt(Zt);Zt.SourceLocation,Zt.id,Zt.stripFlags,Zt.stripComment,Zt.preparePath,Zt.prepareMustache,Zt.prepareRawBlock,Zt.prepareBlock,Zt.prepareProgram,Zt.preparePartialBlock;var Xt=Nt((function(t,e){function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0,e.parse=function(t,e){if("Program"===t.type)return t;return a.default.yy=o,o.locInfo=function(t){return new o.SourceLocation(e&&e.srcName,t)},new n.default(e).accept(a.default.parse(t))};var a=r(Qt),n=r(Yt),i=function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e.default=t,e}(Zt);e.parser=a.default;var o={};Lt.extend(o,i)}));Tt(Xt);Xt.parse,Xt.parser;var te=Nt((function(t,e){function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0,e.Compiler=o,e.precompile=function(t,e,r){if(null==t||"string"!=typeof t&&"Program"!==t.type)throw new a.default("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+t);"data"in(e=e||{})||(e.data=!0);e.compat&&(e.useDepths=!0);var n=r.parse(t,e),i=(new r.Compiler).compile(n,e);return(new r.JavaScriptCompiler).compile(i,e)},e.compile=function(t,e,r){void 0===e&&(e={});if(null==t||"string"!=typeof t&&"Program"!==t.type)throw new a.default("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+t);"data"in(e=Lt.extend({},e))||(e.data=!0);e.compat&&(e.useDepths=!0);var n=void 0;function i(){var a=r.parse(t,e),n=(new r.Compiler).compile(a,e),i=(new r.JavaScriptCompiler).compile(n,e,void 0,!0);return r.template(i)}function o(t,e){return n||(n=i()),n.call(this,t,e)}return o._setup=function(t){return n||(n=i()),n._setup(t)},o._child=function(t,e,r,a){return n||(n=i()),n._child(t,e,r,a)},o};var a=r(Ct),n=r(Jt),i=[].slice;function o(){}function s(t,e){if(t===e)return!0;if(Lt.isArray(t)&&Lt.isArray(e)&&t.length===e.length){for(var r=0;r<t.length;r++)if(!s(t[r],e[r]))return!1;return!0}}function l(t){if(!t.path.parts){var e=t.path;t.path={type:"PathExpression",data:!1,depth:0,parts:[e.original+""],original:e.original+"",loc:e.loc}}}o.prototype={compiler:o,equals:function(t){var e=this.opcodes.length;if(t.opcodes.length!==e)return!1;for(var r=0;r<e;r++){var a=this.opcodes[r],n=t.opcodes[r];if(a.opcode!==n.opcode||!s(a.args,n.args))return!1}e=this.children.length;for(r=0;r<e;r++)if(!this.children[r].equals(t.children[r]))return!1;return!0},guid:0,compile:function(t,e){this.sourceNode=[],this.opcodes=[],this.children=[],this.options=e,this.stringParams=e.stringParams,this.trackIds=e.trackIds,e.blockParams=e.blockParams||[];var r=e.knownHelpers;if(e.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,if:!0,unless:!0,with:!0,log:!0,lookup:!0},r)for(var a in r)this.options.knownHelpers[a]=r[a];return this.accept(t)},compileProgram:function(t){var e=(new this.compiler).compile(t,this.options),r=this.guid++;return this.usePartial=this.usePartial||e.usePartial,this.children[r]=e,this.useDepths=this.useDepths||e.useDepths,r},accept:function(t){if(!this[t.type])throw new a.default("Unknown type: "+t.type,t);this.sourceNode.unshift(t);var e=this[t.type](t);return this.sourceNode.shift(),e},Program:function(t){this.options.blockParams.unshift(t.blockParams);for(var e=t.body,r=e.length,a=0;a<r;a++)this.accept(e[a]);return this.options.blockParams.shift(),this.isSimple=1===r,this.blockParams=t.blockParams?t.blockParams.length:0,this},BlockStatement:function(t){l(t);var e=t.program,r=t.inverse;e=e&&this.compileProgram(e),r=r&&this.compileProgram(r);var a=this.classifySexpr(t);"helper"===a?this.helperSexpr(t,e,r):"simple"===a?(this.simpleSexpr(t),this.opcode("pushProgram",e),this.opcode("pushProgram",r),this.opcode("emptyHash"),this.opcode("blockValue",t.path.original)):(this.ambiguousSexpr(t,e,r),this.opcode("pushProgram",e),this.opcode("pushProgram",r),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},DecoratorBlock:function(t){var e=t.program&&this.compileProgram(t.program),r=this.setupFullMustacheParams(t,e,void 0),a=t.path;this.useDecorators=!0,this.opcode("registerDecorator",r.length,a.original)},PartialStatement:function(t){this.usePartial=!0;var e=t.program;e&&(e=this.compileProgram(t.program));var r=t.params;if(r.length>1)throw new a.default("Unsupported number of partial arguments: "+r.length,t);r.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):r.push({type:"PathExpression",parts:[],depth:0}));var n=t.name.original,i="SubExpression"===t.name.type;i&&this.accept(t.name),this.setupFullMustacheParams(t,e,void 0,!0);var o=t.indent||"";this.options.preventIndent&&o&&(this.opcode("appendContent",o),o=""),this.opcode("invokePartial",i,n,o),this.opcode("append")},PartialBlockStatement:function(t){this.PartialStatement(t)},MustacheStatement:function(t){this.SubExpression(t),t.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(t){this.DecoratorBlock(t)},ContentStatement:function(t){t.value&&this.opcode("appendContent",t.value)},CommentStatement:function(){},SubExpression:function(t){l(t);var e=this.classifySexpr(t);"simple"===e?this.simpleSexpr(t):"helper"===e?this.helperSexpr(t):this.ambiguousSexpr(t)},ambiguousSexpr:function(t,e,r){var a=t.path,n=a.parts[0],i=null!=e||null!=r;this.opcode("getContext",a.depth),this.opcode("pushProgram",e),this.opcode("pushProgram",r),a.strict=!0,this.accept(a),this.opcode("invokeAmbiguous",n,i)},simpleSexpr:function(t){var e=t.path;e.strict=!0,this.accept(e),this.opcode("resolvePossibleLambda")},helperSexpr:function(t,e,r){var i=this.setupFullMustacheParams(t,e,r),o=t.path,s=o.parts[0];if(this.options.knownHelpers[s])this.opcode("invokeKnownHelper",i.length,s);else{if(this.options.knownHelpersOnly)throw new a.default("You specified knownHelpersOnly, but used the unknown helper "+s,t);o.strict=!0,o.falsy=!0,this.accept(o),this.opcode("invokeHelper",i.length,o.original,n.default.helpers.simpleId(o))}},PathExpression:function(t){this.addDepth(t.depth),this.opcode("getContext",t.depth);var e=t.parts[0],r=n.default.helpers.scopedId(t),a=!t.depth&&!r&&this.blockParamIndex(e);a?this.opcode("lookupBlockParam",a,t.parts):e?t.data?(this.options.data=!0,this.opcode("lookupData",t.depth,t.parts,t.strict)):this.opcode("lookupOnContext",t.parts,t.falsy,t.strict,r):this.opcode("pushContext")},StringLiteral:function(t){this.opcode("pushString",t.value)},NumberLiteral:function(t){this.opcode("pushLiteral",t.value)},BooleanLiteral:function(t){this.opcode("pushLiteral",t.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(t){var e=t.pairs,r=0,a=e.length;for(this.opcode("pushHash");r<a;r++)this.pushParam(e[r].value);for(;r--;)this.opcode("assignToHash",e[r].key);this.opcode("popHash")},opcode:function(t){this.opcodes.push({opcode:t,args:i.call(arguments,1),loc:this.sourceNode[0].loc})},addDepth:function(t){t&&(this.useDepths=!0)},classifySexpr:function(t){var e=n.default.helpers.simpleId(t.path),r=e&&!!this.blockParamIndex(t.path.parts[0]),a=!r&&n.default.helpers.helperExpression(t),i=!r&&(a||e);if(i&&!a){var o=t.path.parts[0],s=this.options;s.knownHelpers[o]?a=!0:s.knownHelpersOnly&&(i=!1)}return a?"helper":i?"ambiguous":"simple"},pushParams:function(t){for(var e=0,r=t.length;e<r;e++)this.pushParam(t[e])},pushParam:function(t){var e=null!=t.value?t.value:t.original||"";if(this.stringParams)e.replace&&(e=e.replace(/^(\.?\.\/)*/g,"").replace(/\//g,".")),t.depth&&this.addDepth(t.depth),this.opcode("getContext",t.depth||0),this.opcode("pushStringParam",e,t.type),"SubExpression"===t.type&&this.accept(t);else{if(this.trackIds){var r=void 0;if(!t.parts||n.default.helpers.scopedId(t)||t.depth||(r=this.blockParamIndex(t.parts[0])),r){var a=t.parts.slice(1).join(".");this.opcode("pushId","BlockParam",r,a)}else(e=t.original||e).replace&&(e=e.replace(/^this(?:\.|$)/,"").replace(/^\.\//,"").replace(/^\.$/,"")),this.opcode("pushId",t.type,e)}this.accept(t)}},setupFullMustacheParams:function(t,e,r,a){var n=t.params;return this.pushParams(n),this.opcode("pushProgram",e),this.opcode("pushProgram",r),t.hash?this.accept(t.hash):this.opcode("emptyHash",a),n},blockParamIndex:function(t){for(var e=0,r=this.options.blockParams.length;e<r;e++){var a=this.options.blockParams[e],n=a&&Lt.indexOf(a,t);if(a&&n>=0)return[e,n]}}}}));Tt(te);te.Compiler,te.precompile,te.compile;var ee=Nt((function(t,e){e.__esModule=!0;var r=void 0;try{var a=require("source-map");r=a.SourceNode}catch(t){}function n(t,e,r){if(Lt.isArray(t)){for(var a=[],n=0,i=t.length;n<i;n++)a.push(e.wrap(t[n],r));return a}return"boolean"==typeof t||"number"==typeof t?t+"":t}function i(t){this.srcFile=t,this.source=[]}r||((r=function(t,e,r,a){this.src="",a&&this.add(a)}).prototype={add:function(t){Lt.isArray(t)&&(t=t.join("")),this.src+=t},prepend:function(t){Lt.isArray(t)&&(t=t.join("")),this.src=t+this.src},toStringWithSourceMap:function(){return{code:this.toString()}},toString:function(){return this.src}}),i.prototype={isEmpty:function(){return!this.source.length},prepend:function(t,e){this.source.unshift(this.wrap(t,e))},push:function(t,e){this.source.push(this.wrap(t,e))},merge:function(){var t=this.empty();return this.each((function(e){t.add([" ",e,"\n"])})),t},each:function(t){for(var e=0,r=this.source.length;e<r;e++)t(this.source[e])},empty:function(){var t=this.currentLocation||{start:{}};return new r(t.start.line,t.start.column,this.srcFile)},wrap:function(t){var e=arguments.length<=1||void 0===arguments[1]?this.currentLocation||{start:{}}:arguments[1];return t instanceof r?t:(t=n(t,this,e),new r(e.start.line,e.start.column,this.srcFile,t))},functionCall:function(t,e,r){return r=this.generateList(r),this.wrap([t,e?"."+e+"(":"(",r,")"])},quotedString:function(t){return'"'+(t+"").replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(t){var e=[];for(var r in t)if(t.hasOwnProperty(r)){var a=n(t[r],this);"undefined"!==a&&e.push([this.quotedString(r),":",a])}var i=this.generateList(e);return i.prepend("{"),i.add("}"),i},generateList:function(t){for(var e=this.empty(),r=0,a=t.length;r<a;r++)r&&e.add(","),e.add(n(t[r],this));return e},generateArray:function(t){var e=this.generateList(t);return e.prepend("["),e.add("]"),e}},e.default=i,t.exports=e.default}));Tt(ee);var re=Nt((function(t,e){function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var a=r(Ct),n=r(ee);function i(t){this.value=t}function o(){}o.prototype={nameLookup:function(t,e){var r=[this.aliasable("container.propertyIsEnumerable"),".call(",t,',"constructor")'];return"constructor"===e?["(",r,"?",a()," : undefined)"]:a();function a(){return o.isValidJavaScriptVariableName(e)?[t,".",e]:[t,"[",JSON.stringify(e),"]"]}},depthedLookup:function(t){return[this.aliasable("container.lookup"),'(depths, "',t,'")']},compilerInfo:function(){var t=$t.COMPILER_REVISION;return[t,$t.REVISION_CHANGES[t]]},appendToBuffer:function(t,e,r){return Lt.isArray(t)||(t=[t]),t=this.source.wrap(t,e),this.environment.isSimple?["return ",t,";"]:r?["buffer += ",t,";"]:(t.appendToBuffer=!0,t)},initializeBuffer:function(){return this.quotedString("")},compile:function(t,e,r,n){this.environment=t,this.options=e,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!n,this.name=this.environment.name,this.isChild=!!r,this.context=r||{decorators:[],programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.blockParams=[],this.compileChildren(t,e),this.useDepths=this.useDepths||t.useDepths||t.useDecorators||this.options.compat,this.useBlockParams=this.useBlockParams||t.useBlockParams;var i=t.opcodes,o=void 0,s=void 0,l=void 0,c=void 0;for(l=0,c=i.length;l<c;l++)o=i[l],this.source.currentLocation=o.loc,s=s||o.loc,this[o.opcode].apply(this,o.args);if(this.source.currentLocation=s,this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new a.default("Compile completed with content left on stack");this.decorators.isEmpty()?this.decorators=void 0:(this.useDecorators=!0,this.decorators.prepend("var decorators = container.decorators;\n"),this.decorators.push("return fn;"),n?this.decorators=Function.apply(this,["fn","props","container","depth0","data","blockParams","depths",this.decorators.merge()]):(this.decorators.prepend("function(fn, props, container, depth0, data, blockParams, depths) {\n"),this.decorators.push("}\n"),this.decorators=this.decorators.merge()));var u=this.createFunctionContext(n);if(this.isChild)return u;var h={compiler:this.compilerInfo(),main:u};this.decorators&&(h.main_d=this.decorators,h.useDecorators=!0);var p=this.context,f=p.programs,d=p.decorators;for(l=0,c=f.length;l<c;l++)f[l]&&(h[l]=f[l],d[l]&&(h[l+"_d"]=d[l],h.useDecorators=!0));return this.environment.usePartial&&(h.usePartial=!0),this.options.data&&(h.useData=!0),this.useDepths&&(h.useDepths=!0),this.useBlockParams&&(h.useBlockParams=!0),this.options.compat&&(h.compat=!0),n?h.compilerOptions=this.options:(h.compiler=JSON.stringify(h.compiler),this.source.currentLocation={start:{line:1,column:0}},h=this.objectLiteral(h),e.srcName?(h=h.toStringWithSourceMap({file:e.destName})).map=h.map&&h.map.toString():h=h.toString()),h},preamble:function(){this.lastContext=0,this.source=new n.default(this.options.srcName),this.decorators=new n.default(this.options.srcName)},createFunctionContext:function(t){var e="",r=this.stackVars.concat(this.registers.list);r.length>0&&(e+=", "+r.join(", "));var a=0;for(var n in this.aliases){var i=this.aliases[n];this.aliases.hasOwnProperty(n)&&i.children&&i.referenceCount>1&&(e+=", alias"+ ++a+"="+n,i.children[0]="alias"+a)}var o=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&o.push("blockParams"),this.useDepths&&o.push("depths");var s=this.mergeSource(e);return t?(o.push(s),Function.apply(this,o)):this.source.wrap(["function(",o.join(","),") {\n ",s,"}"])},mergeSource:function(t){var e=this.environment.isSimple,r=!this.forceBuffer,a=void 0,n=void 0,i=void 0,o=void 0;return this.source.each((function(t){t.appendToBuffer?(i?t.prepend(" + "):i=t,o=t):(i&&(n?i.prepend("buffer += "):a=!0,o.add(";"),i=o=void 0),n=!0,e||(r=!1))})),r?i?(i.prepend("return "),o.add(";")):n||this.source.push('return "";'):(t+=", buffer = "+(a?"":this.initializeBuffer()),i?(i.prepend("return buffer + "),o.add(";")):this.source.push("return buffer;")),t&&this.source.prepend("var "+t.substring(2)+(a?"":";\n")),this.source.merge()},blockValue:function(t){var e=this.aliasable("container.hooks.blockHelperMissing"),r=[this.contextName(0)];this.setupHelperArgs(t,0,r);var a=this.popStack();r.splice(1,0,a),this.push(this.source.functionCall(e,"call",r))},ambiguousBlockValue:function(){var t=this.aliasable("container.hooks.blockHelperMissing"),e=[this.contextName(0)];this.setupHelperArgs("",0,e,!0),this.flushInline();var r=this.topStack();e.splice(1,0,r),this.pushSource(["if (!",this.lastHelper,") { ",r," = ",this.source.functionCall(t,"call",e),"}"])},appendContent:function(t){this.pendingContent?t=this.pendingContent+t:this.pendingLocation=this.source.currentLocation,this.pendingContent=t},append:function(){if(this.isInline())this.replaceStack((function(t){return[" != null ? ",t,' : ""']})),this.pushSource(this.appendToBuffer(this.popStack()));else{var t=this.popStack();this.pushSource(["if (",t," != null) { ",this.appendToBuffer(t,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(t){this.lastContext=t},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(t,e,r,a){var n=0;a||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(t[n++])),this.resolvePath("context",t,n,e,r)},lookupBlockParam:function(t,e){this.useBlockParams=!0,this.push(["blockParams[",t[0],"][",t[1],"]"]),this.resolvePath("context",e,1)},lookupData:function(t,e,r){t?this.pushStackLiteral("container.data(data, "+t+")"):this.pushStackLiteral("data"),this.resolvePath("data",e,0,!0,r)},resolvePath:function(t,e,r,a,n){var i=this;if(this.options.strict||this.options.assumeObjects)this.push(function(t,e,r,a){var n=e.popStack(),i=0,o=r.length;t&&o--;for(;i<o;i++)n=e.nameLookup(n,r[i],a);return t?[e.aliasable("container.strict"),"(",n,", ",e.quotedString(r[i]),")"]:n}(this.options.strict&&n,this,e,t));else for(var o=e.length;r<o;r++)this.replaceStack((function(n){var o=i.nameLookup(n,e[r],t);return a?[" && ",o]:[" != null ? ",o," : ",n]}))},resolvePossibleLambda:function(){this.push([this.aliasable("container.lambda"),"(",this.popStack(),", ",this.contextName(0),")"])},pushStringParam:function(t,e){this.pushContext(),this.pushString(e),"SubExpression"!==e&&("string"==typeof t?this.pushString(t):this.pushStackLiteral(t))},emptyHash:function(t){this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}")),this.pushStackLiteral(t?"undefined":"{}")},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var t=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push(this.objectLiteral(t.ids)),this.stringParams&&(this.push(this.objectLiteral(t.contexts)),this.push(this.objectLiteral(t.types))),this.push(this.objectLiteral(t.values))},pushString:function(t){this.pushStackLiteral(this.quotedString(t))},pushLiteral:function(t){this.pushStackLiteral(t)},pushProgram:function(t){null!=t?this.pushStackLiteral(this.programExpression(t)):this.pushStackLiteral(null)},registerDecorator:function(t,e){var r=this.nameLookup("decorators",e,"decorator"),a=this.setupHelperArgs(e,t);this.decorators.push(["fn = ",this.decorators.functionCall(r,"",["fn","props","container",a])," || fn;"])},invokeHelper:function(t,e,r){var a=this.popStack(),n=this.setupHelper(t,e),i=[];r&&i.push(n.name),i.push(a),this.options.strict||i.push(this.aliasable("container.hooks.helperMissing"));var o=["(",this.itemsSeparatedBy(i,"||"),")"],s=this.source.functionCall(o,"call",n.callParams);this.push(s)},itemsSeparatedBy:function(t,e){var r=[];r.push(t[0]);for(var a=1;a<t.length;a++)r.push(e,t[a]);return r},invokeKnownHelper:function(t,e){var r=this.setupHelper(t,e);this.push(this.source.functionCall(r.name,"call",r.callParams))},invokeAmbiguous:function(t,e){this.useRegister("helper");var r=this.popStack();this.emptyHash();var a=this.setupHelper(0,t,e),n=["(","(helper = ",this.lastHelper=this.nameLookup("helpers",t,"helper")," || ",r,")"];this.options.strict||(n[0]="(helper = ",n.push(" != null ? helper : ",this.aliasable("container.hooks.helperMissing"))),this.push(["(",n,a.paramsInit?["),(",a.paramsInit]:[],"),","(typeof helper === ",this.aliasable('"function"')," ? ",this.source.functionCall("helper","call",a.callParams)," : helper))"])},invokePartial:function(t,e,r){var a=[],n=this.setupParams(e,1,a);t&&(e=this.popStack(),delete n.name),r&&(n.indent=JSON.stringify(r)),n.helpers="helpers",n.partials="partials",n.decorators="container.decorators",t?a.unshift(e):a.unshift(this.nameLookup("partials",e,"partial")),this.options.compat&&(n.depths="depths"),n=this.objectLiteral(n),a.push(n),this.push(this.source.functionCall("container.invokePartial","",a))},assignToHash:function(t){var e=this.popStack(),r=void 0,a=void 0,n=void 0;this.trackIds&&(n=this.popStack()),this.stringParams&&(a=this.popStack(),r=this.popStack());var i=this.hash;r&&(i.contexts[t]=r),a&&(i.types[t]=a),n&&(i.ids[t]=n),i.values[t]=e},pushId:function(t,e,r){"BlockParam"===t?this.pushStackLiteral("blockParams["+e[0]+"].path["+e[1]+"]"+(r?" + "+JSON.stringify("."+r):"")):"PathExpression"===t?this.pushString(e):"SubExpression"===t?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:o,compileChildren:function(t,e){for(var r=t.children,a=void 0,n=void 0,i=0,o=r.length;i<o;i++){a=r[i],n=new this.compiler;var s=this.matchExistingProgram(a);if(null==s){this.context.programs.push("");var l=this.context.programs.length;a.index=l,a.name="program"+l,this.context.programs[l]=n.compile(a,e,this.context,!this.precompile),this.context.decorators[l]=n.decorators,this.context.environments[l]=a,this.useDepths=this.useDepths||n.useDepths,this.useBlockParams=this.useBlockParams||n.useBlockParams,a.useDepths=this.useDepths,a.useBlockParams=this.useBlockParams}else a.index=s.index,a.name="program"+s.index,this.useDepths=this.useDepths||s.useDepths,this.useBlockParams=this.useBlockParams||s.useBlockParams}},matchExistingProgram:function(t){for(var e=0,r=this.context.environments.length;e<r;e++){var a=this.context.environments[e];if(a&&a.equals(t))return a}},programExpression:function(t){var e=this.environment.children[t],r=[e.index,"data",e.blockParams];return(this.useBlockParams||this.useDepths)&&r.push("blockParams"),this.useDepths&&r.push("depths"),"container.program("+r.join(", ")+")"},useRegister:function(t){this.registers[t]||(this.registers[t]=!0,this.registers.list.push(t))},push:function(t){return t instanceof i||(t=this.source.wrap(t)),this.inlineStack.push(t),t},pushStackLiteral:function(t){this.push(new i(t))},pushSource:function(t){this.pendingContent&&(this.source.push(this.appendToBuffer(this.source.quotedString(this.pendingContent),this.pendingLocation)),this.pendingContent=void 0),t&&this.source.push(t)},replaceStack:function(t){var e=["("],r=void 0,n=void 0,o=void 0;if(!this.isInline())throw new a.default("replaceStack on non-inline");var s=this.popStack(!0);if(s instanceof i)e=["(",r=[s.value]],o=!0;else{n=!0;var l=this.incrStack();e=["((",this.push(l)," = ",s,")"],r=this.topStack()}var c=t.call(this,r);o||this.popStack(),n&&this.stackSlot--,this.push(e.concat(c,")"))},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var t=this.inlineStack;this.inlineStack=[];for(var e=0,r=t.length;e<r;e++){var a=t[e];if(a instanceof i)this.compileStack.push(a);else{var n=this.incrStack();this.pushSource([n," = ",a,";"]),this.compileStack.push(n)}}},isInline:function(){return this.inlineStack.length},popStack:function(t){var e=this.isInline(),r=(e?this.inlineStack:this.compileStack).pop();if(!t&&r instanceof i)return r.value;if(!e){if(!this.stackSlot)throw new a.default("Invalid stack pop");this.stackSlot--}return r},topStack:function(){var t=this.isInline()?this.inlineStack:this.compileStack,e=t[t.length-1];return e instanceof i?e.value:e},contextName:function(t){return this.useDepths&&t?"depths["+t+"]":"depth"+t},quotedString:function(t){return this.source.quotedString(t)},objectLiteral:function(t){return this.source.objectLiteral(t)},aliasable:function(t){var e=this.aliases[t];return e?(e.referenceCount++,e):((e=this.aliases[t]=this.source.wrap(t)).aliasable=!0,e.referenceCount=1,e)},setupHelper:function(t,e,r){var a=[];return{params:a,paramsInit:this.setupHelperArgs(e,t,a,r),name:this.nameLookup("helpers",e,"helper"),callParams:[this.aliasable(this.contextName(0)+" != null ? "+this.contextName(0)+" : (container.nullContext || {})")].concat(a)}},setupParams:function(t,e,r){var a={},n=[],i=[],o=[],s=!r,l=void 0;s&&(r=[]),a.name=this.quotedString(t),a.hash=this.popStack(),this.trackIds&&(a.hashIds=this.popStack()),this.stringParams&&(a.hashTypes=this.popStack(),a.hashContexts=this.popStack());var c=this.popStack(),u=this.popStack();(u||c)&&(a.fn=u||"container.noop",a.inverse=c||"container.noop");for(var h=e;h--;)l=this.popStack(),r[h]=l,this.trackIds&&(o[h]=this.popStack()),this.stringParams&&(i[h]=this.popStack(),n[h]=this.popStack());return s&&(a.args=this.source.generateArray(r)),this.trackIds&&(a.ids=this.source.generateArray(o)),this.stringParams&&(a.types=this.source.generateArray(i),a.contexts=this.source.generateArray(n)),this.options.data&&(a.data="data"),this.useBlockParams&&(a.blockParams="blockParams"),a},setupHelperArgs:function(t,e,r,a){var n=this.setupParams(t,e,r);return n=this.objectLiteral(n),a?(this.useRegister("options"),r.push("options"),["options=",n]):r?(r.push(n),""):n}},function(){for(var t="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield await null true false".split(" "),e=o.RESERVED_WORDS={},r=0,a=t.length;r<a;r++)e[t[r]]=!0}(),o.isValidJavaScriptVariableName=function(t){return!o.RESERVED_WORDS[t]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(t)},e.default=o,t.exports=e.default}));Tt(re);var ae=Nt((function(t,e){function r(t){return t&&t.__esModule?t:{default:t}}e.__esModule=!0;var a=r(Kt),n=r(Jt),i=r(re),o=r(Wt),s=r(Gt),l=a.default.create;function c(){var t=l();return t.compile=function(e,r){return te.compile(e,r,t)},t.precompile=function(e,r){return te.precompile(e,r,t)},t.AST=n.default,t.Compiler=te.Compiler,t.JavaScriptCompiler=i.default,t.Parser=Xt.parser,t.parse=Xt.parse,t}var u=c();u.create=c,s.default(u),u.Visitor=o.default,u.default=u,e.default=u,t.exports=e.default}));Tt(ae);var ne=ae.parse,ie=Object.create(null);"area base br col command embed hr img input keygen link meta param source track wbr".split(" ").forEach((function(t){ie[t]=!0}));var oe=function(t){function e(){var t;return a(this,e),(t=c(this,s(e).apply(this,arguments))).tagOpenLine=0,t.tagOpenColumn=0,t}return o(e,t),i(e,[{key:"reset",value:function(){this.currentNode=null}},{key:"beginComment",value:function(){this.currentNode=I.comment(""),this.currentNode.loc={source:null,start:I.pos(this.tagOpenLine,this.tagOpenColumn),end:null}}},{key:"appendToCommentData",value:function(t){this.currentComment.value+=t}},{key:"finishComment",value:function(){this.currentComment.loc.end=I.pos(this.tokenizer.line,this.tokenizer.column),M(this.currentElement(),this.currentComment)}},{key:"beginData",value:function(){this.currentNode=I.text(),this.currentNode.loc={source:null,start:I.pos(this.tokenizer.line,this.tokenizer.column),end:null}}},{key:"appendToData",value:function(t){this.currentData.chars+=t}},{key:"finishData",value:function(){this.currentData.loc.end=I.pos(this.tokenizer.line,this.tokenizer.column),M(this.currentElement(),this.currentData)}},{key:"tagOpen",value:function(){this.tagOpenLine=this.tokenizer.line,this.tagOpenColumn=this.tokenizer.column}},{key:"beginStartTag",value:function(){this.currentNode={type:"StartTag",name:"",attributes:[],modifiers:[],comments:[],selfClosing:!1,loc:q}}},{key:"beginEndTag",value:function(){this.currentNode={type:"EndTag",name:"",attributes:[],modifiers:[],comments:[],selfClosing:!1,loc:q}}},{key:"finishTag",value:function(){var t=this.tokenizer,e=t.line,r=t.column,a=this.currentTag;a.loc=I.loc(this.tagOpenLine,this.tagOpenColumn,e,r),"StartTag"===a.type?(this.finishStartTag(),(ie[a.name]||a.selfClosing)&&this.finishEndTag(!0)):"EndTag"===a.type&&this.finishEndTag(!1)}},{key:"finishStartTag",value:function(){var t=this.currentStartTag,e=t.name,r=t.attributes,a=t.modifiers,n=t.comments,i=t.selfClosing,o=I.loc(this.tagOpenLine,this.tagOpenColumn),s=I.element({name:e,selfClosing:i},{attrs:r,modifiers:a,comments:n,loc:o});this.elementStack.push(s)}},{key:"finishEndTag",value:function(t){var e=this.currentTag,r=this.elementStack.pop(),a=this.currentElement();!function(t,e,r){var a;ie[t.name]&&!r?a="Invalid end tag "+se(t)+" (void elements cannot have end tags).":void 0===e.tag?a="Closing tag "+se(t)+" without an open tag.":e.tag!==t.name&&(a="Closing tag "+se(t)+" did not match last open tag `"+e.tag+"` (on line "+e.loc.start.line+").");if(a)throw new R(a,e.loc)}(e,r,t),r.loc.end.line=this.tokenizer.line,r.loc.end.column=this.tokenizer.column,H(r),M(a,r)}},{key:"markTagAsSelfClosing",value:function(){this.currentTag.selfClosing=!0}},{key:"appendToTagName",value:function(t){this.currentTag.name+=t}},{key:"beginAttribute",value:function(){var t=this.currentTag;if("EndTag"===t.type)throw new R("Invalid end tag: closing tag must not have attributes, "+"in `".concat(t.name,"` (on line ").concat(this.tokenizer.line,")."),t.loc);this.currentAttribute={name:"",parts:[],isQuoted:!1,isDynamic:!1,start:I.pos(this.tokenizer.line,this.tokenizer.column),valueStartLine:0,valueStartColumn:0}}},{key:"appendToAttributeName",value:function(t){this.currentAttr.name+=t}},{key:"beginAttributeValue",value:function(t){this.currentAttr.isQuoted=t,this.currentAttr.valueStartLine=this.tokenizer.line,this.currentAttr.valueStartColumn=this.tokenizer.column}},{key:"appendToAttributeValue",value:function(t){var e=this.currentAttr.parts,r=e[e.length-1];if(r&&"TextNode"===r.type)r.chars+=t,r.loc.end.line=this.tokenizer.line,r.loc.end.column=this.tokenizer.column;else{var a=I.loc(this.tokenizer.line,this.tokenizer.column,this.tokenizer.line,this.tokenizer.column);"\n"===t&&(a.start.line-=1,a.start.column=r?r.loc.end.column:this.currentAttr.valueStartColumn);var n=I.text(t,a);e.push(n)}}},{key:"finishAttributeValue",value:function(){var t=this.currentAttr,e=t.name,r=t.parts,a=t.isQuoted,n=t.isDynamic,i=t.valueStartLine,o=t.valueStartColumn,s=function(t,e,r,a){if(r){if(e)return function(t){for(var e=0;e<t.length;e++){var r=t[e];if("MustacheStatement"!==r.type&&"TextNode"!==r.type)throw new R("Unsupported node in quoted attribute value: "+r.type,r.loc)}return I.concat(t)}(t);if(1===t.length||2===t.length&&"TextNode"===t[1].type&&"/"===t[1].chars)return t[0];throw new R("An unquoted attribute value must be a string or a mustache, preceeded by whitespace or a '=' character, and "+"followed by whitespace, a '>' character, or '/>' (on line ".concat(a,")"),I.loc(a,0))}return t.length>0?t[0]:I.text("")}(r,a,n,this.tokenizer.line);s.loc=I.loc(i,o,this.tokenizer.line,this.tokenizer.column);var l=I.loc(this.currentAttr.start.line,this.currentAttr.start.column,this.tokenizer.line,this.tokenizer.column),c=I.attr(e,s,l);this.currentStartTag.attributes.push(c)}},{key:"reportSyntaxError",value:function(t){throw new R("Syntax error at line ".concat(this.tokenizer.line," col ").concat(this.tokenizer.column,": ").concat(t),I.loc(this.tokenizer.line,this.tokenizer.column))}}]),e}(tt);function se(t){return"`"+t.name+"` (on line "+t.loc.end.line+")"}var le={parse:ce,builders:I,print:Et,traverse:gt,Walker:Pt};function ce(t){var e,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=a.mode||"precompile";if("object"===r(t))e=t;else{var i=a.parseOptions||{};"codemod"===n&&(i.ignoreStandalone=!0),e=ne(t,i)}var o=void 0;"codemod"===n&&(o=new K({}));var s=new oe(t,o).acceptTemplate(e);if(a&&a.plugins&&a.plugins.ast)for(var l=0,c=a.plugins.ast.length;l<c;l++){gt(s,(0,a.plugins.ast[l])(b({},a,{syntax:le},{plugins:void 0})).visitor)}return s}var ue=Object.freeze({__proto__:null}),he=Object.freeze({__proto__:null,AST:ue,preprocess:ce,builders:I,TraversalError:it,cannotRemoveNode:ot,cannotReplaceNode:st,cannotReplaceOrRemoveInKeyHandlerYet:lt,traverse:gt,Walker:Pt,print:Et,SyntaxError:R,isLiteral:j,printLiteral:U});var pe={parsers:{glimmer:{parse:function(t){try{return(0,he.preprocess)(t,{plugins:{ast:[]},mode:"codemod"})}catch(t){var r=t.message.match(/on line (\d+)/);throw r?e(t.message,{start:{line:Number(r[1]),column:0}}):t}},astFormat:"glimmer",locStart:function(t){return t.loc&&t.loc.start},locEnd:function(t){return t.loc&&t.loc.end}}}},fe=pe.parsers;t.default=pe,t.parsers=fe,Object.defineProperty(t,"__esModule",{value:!0})}));
diff --git a/node_modules/prettier/parser-graphql.js b/node_modules/prettier/parser-graphql.js
new file mode 100644
index 0000000..cdbb687
--- /dev/null
+++ b/node_modules/prettier/parser-graphql.js
@@ -0,0 +1 @@
+!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n(((e=e||self).prettierPlugins=e.prettierPlugins||{},e.prettierPlugins.graphql={}))}(this,(function(e){"use strict";function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var t=function(e,n){var t=new SyntaxError(e+" ("+n.start.line+":"+n.start.column+")");return t.loc=n,t};var i=function(e){return/^\s*#[^\n\S]*@(format|prettier)\s*(\n|$)/.test(e)};function r(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function o(e,n){return e(n={exports:{}},n.exports),n.exports}var a=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n){if(!Boolean(e))throw new Error(n)}}));r(a);var s=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){"function"==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e.prototype,Symbol.toStringTag,{get:function(){return this.constructor.name}})}}));r(s);var c=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.Source=void 0;var t=r(a),i=r(s);function r(e){return e&&e.__esModule?e:{default:e}}var o=function(e,n,i){this.body=e,this.name=n||"GraphQL request",this.locationOffset=i||{line:1,column:1},this.locationOffset.line>0||(0,t.default)(0,"line in locationOffset is 1-indexed and must be positive"),this.locationOffset.column>0||(0,t.default)(0,"column in locationOffset is 1-indexed and must be positive")};n.Source=o,(0,i.default)(o)}));r(c);c.Source;var u=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.getLocation=function(e,n){var t,i=/\r\n|[\n\r]/g,r=1,o=n+1;for(;(t=i.exec(e.body))&&t.index<n;)r+=1,o=n+1-(t.index+t[0].length);return{line:r,column:o}}}));r(u);u.getLocation;var l=o((function(e,n){function t(e,n){var t=e.locationOffset.column-1,o=r(t)+e.body,a=n.line-1,s=e.locationOffset.line-1,c=n.line+s,u=1===n.line?t:0,l=n.column+u,d="".concat(e.name,":").concat(c,":").concat(l,"\n"),p=o.split(/\r\n|[\n\r]/g),f=p[a];if(f.length>120){for(var h=Math.floor(l/80),T=l%80,v=[],E=0;E<f.length;E+=80)v.push(f.slice(E,E+80));return d+i([["".concat(c),v[0]]].concat(v.slice(1,h+1).map((function(e){return["",e]})),[[" ",r(T-1)+"^"],["",v[h+1]]]))}return d+i([["".concat(c-1),p[a-1]],["".concat(c),f],["",r(l-1)+"^"],["".concat(c+1),p[a+1]]])}function i(e){var n=e.filter((function(e){e[0];return void 0!==e[1]})),t=Math.max.apply(Math,n.map((function(e){return e[0].length})));return n.map((function(e){var n,i=e[0],o=e[1];return r(t-(n=i).length)+n+(o?" | "+o:" |")})).join("\n")}function r(e){return Array(e+1).join(" ")}Object.defineProperty(n,"__esModule",{value:!0}),n.printLocation=function(e){return t(e.source,(0,u.getLocation)(e.source,e.start))},n.printSourceLocation=t}));r(l);l.printLocation,l.printSourceLocation;var d=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.Kind=void 0;var t=Object.freeze({NAME:"Name",DOCUMENT:"Document",OPERATION_DEFINITION:"OperationDefinition",VARIABLE_DEFINITION:"VariableDefinition",SELECTION_SET:"SelectionSet",FIELD:"Field",ARGUMENT:"Argument",FRAGMENT_SPREAD:"FragmentSpread",INLINE_FRAGMENT:"InlineFragment",FRAGMENT_DEFINITION:"FragmentDefinition",VARIABLE:"Variable",INT:"IntValue",FLOAT:"FloatValue",STRING:"StringValue",BOOLEAN:"BooleanValue",NULL:"NullValue",ENUM:"EnumValue",LIST:"ListValue",OBJECT:"ObjectValue",OBJECT_FIELD:"ObjectField",DIRECTIVE:"Directive",NAMED_TYPE:"NamedType",LIST_TYPE:"ListType",NON_NULL_TYPE:"NonNullType",SCHEMA_DEFINITION:"SchemaDefinition",OPERATION_TYPE_DEFINITION:"OperationTypeDefinition",SCALAR_TYPE_DEFINITION:"ScalarTypeDefinition",OBJECT_TYPE_DEFINITION:"ObjectTypeDefinition",FIELD_DEFINITION:"FieldDefinition",INPUT_VALUE_DEFINITION:"InputValueDefinition",INTERFACE_TYPE_DEFINITION:"InterfaceTypeDefinition",UNION_TYPE_DEFINITION:"UnionTypeDefinition",ENUM_TYPE_DEFINITION:"EnumTypeDefinition",ENUM_VALUE_DEFINITION:"EnumValueDefinition",INPUT_OBJECT_TYPE_DEFINITION:"InputObjectTypeDefinition",DIRECTIVE_DEFINITION:"DirectiveDefinition",SCHEMA_EXTENSION:"SchemaExtension",SCALAR_TYPE_EXTENSION:"ScalarTypeExtension",OBJECT_TYPE_EXTENSION:"ObjectTypeExtension",INTERFACE_TYPE_EXTENSION:"InterfaceTypeExtension",UNION_TYPE_EXTENSION:"UnionTypeExtension",ENUM_TYPE_EXTENSION:"EnumTypeExtension",INPUT_OBJECT_TYPE_EXTENSION:"InputObjectTypeExtension"});n.Kind=t}));r(d);d.Kind;var p=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.TokenKind=void 0;var t=Object.freeze({SOF:"<SOF>",EOF:"<EOF>",BANG:"!",DOLLAR:"$",AMP:"&",PAREN_L:"(",PAREN_R:")",SPREAD:"...",COLON:":",EQUALS:"=",AT:"@",BRACKET_L:"[",BRACKET_R:"]",BRACE_L:"{",PIPE:"|",BRACE_R:"}",NAME:"Name",INT:"Int",FLOAT:"Float",STRING:"String",BLOCK_STRING:"BlockString",COMMENT:"Comment"});n.TokenKind=t}));r(p);p.TokenKind;var f=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.default=void 0;var t="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):void 0;n.default=t}));r(f);var h=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.prototype.toString;e.prototype.toJSON=n,e.prototype.inspect=n,i.default&&(e.prototype[i.default]=n)};var t,i=(t=f)&&t.__esModule?t:{default:t}}));r(h);var T=o((function(e,t){function i(e){return(i="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(e){return n(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":n(e)})(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return"object"==i(e)&&null!==e}}));r(T);var v=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.GraphQLError=r,n.printError=o;var t,i=(t=T)&&t.__esModule?t:{default:t};function r(e,n,t,o,a,s,c){var l=Array.isArray(n)?0!==n.length?n:void 0:n?[n]:void 0,d=t;if(!d&&l){var p=l[0];d=p&&p.loc&&p.loc.source}var f,h=o;!h&&l&&(h=l.reduce((function(e,n){return n.loc&&e.push(n.loc.start),e}),[])),h&&0===h.length&&(h=void 0),o&&t?f=o.map((function(e){return(0,u.getLocation)(t,e)})):l&&(f=l.reduce((function(e,n){return n.loc&&e.push((0,u.getLocation)(n.loc.source,n.loc.start)),e}),[]));var T=c;if(null==T&&null!=s){var v=s.extensions;(0,i.default)(v)&&(T=v)}Object.defineProperties(this,{message:{value:e,enumerable:!0,writable:!0},locations:{value:f||void 0,enumerable:Boolean(f)},path:{value:a||void 0,enumerable:Boolean(a)},nodes:{value:l||void 0},source:{value:d||void 0},positions:{value:h||void 0},originalError:{value:s},extensions:{value:T||void 0,enumerable:Boolean(T)}}),s&&s.stack?Object.defineProperty(this,"stack",{value:s.stack,writable:!0,configurable:!0}):Error.captureStackTrace?Error.captureStackTrace(this,r):Object.defineProperty(this,"stack",{value:Error().stack,writable:!0,configurable:!0})}function o(e){var n=e.message;if(e.nodes)for(var t=0,i=e.nodes;t<i.length;t++){var r=i[t];r.loc&&(n+="\n\n"+(0,l.printLocation)(r.loc))}else if(e.source&&e.locations)for(var o=0,a=e.locations;o<a.length;o++){var s=a[o];n+="\n\n"+(0,l.printSourceLocation)(e.source,s)}return n}r.prototype=Object.create(Error.prototype,{constructor:{value:r},name:{value:"GraphQLError"},toString:{value:function(){return o(this)}}})}));r(v);v.GraphQLError,v.printError;var E=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.syntaxError=function(e,n,t){return new v.GraphQLError("Syntax Error: ".concat(t),void 0,e,[n])}}));r(E);E.syntaxError;var y=o((function(e,n){function t(e){for(var n=null,t=1;t<e.length;t++){var r=e[t],o=i(r);if(o!==r.length&&((null===n||o<n)&&0===(n=o)))break}return null===n?0:n}function i(e){for(var n=0;n<e.length&&(" "===e[n]||"\t"===e[n]);)n++;return n}function r(e){return i(e)===e.length}Object.defineProperty(n,"__esModule",{value:!0}),n.dedentBlockStringValue=function(e){var n=e.split(/\r\n|[\n\r]/g),i=t(n);if(0!==i)for(var o=1;o<n.length;o++)n[o]=n[o].slice(i);for(;n.length>0&&r(n[0]);)n.shift();for(;n.length>0&&r(n[n.length-1]);)n.pop();return n.join("\n")},n.getBlockStringIndentation=t,n.printBlockString=function(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=-1===e.indexOf("\n"),r=" "===e[0]||"\t"===e[0],o='"'===e[e.length-1],a=!i||o||t,s="";!a||i&&r||(s+="\n"+n);s+=n?e.replace(/\n/g,"\n"+n):e,a&&(s+="\n");return'"""'+s.replace(/"""/g,'\\"""')+'"""'}}));r(y);y.dedentBlockStringValue,y.getBlockStringIndentation,y.printBlockString;var N=o((function(e,n){var t;function i(){return this.lastToken=this.token,this.token=this.lookahead()}function r(){var e=this.token;if(e.kind!==p.TokenKind.EOF)do{e=e.next||(e.next=s(this,e))}while(e.kind===p.TokenKind.COMMENT);return e}function o(e,n,t,i,r,o,a){this.kind=e,this.start=n,this.end=t,this.line=i,this.column=r,this.value=a,this.prev=o,this.next=null}function a(e){return isNaN(e)?p.TokenKind.EOF:e<127?JSON.stringify(String.fromCharCode(e)):'"\\u'.concat(("00"+e.toString(16).toUpperCase()).slice(-4),'"')}function s(e,n){var t=e.source,i=t.body,r=i.length,s=function(e,n,t){var i=e.length,r=n;for(;r<i;){var o=e.charCodeAt(r);if(9===o||32===o||44===o||65279===o)++r;else if(10===o)++r,++t.line,t.lineStart=r;else{if(13!==o)break;10===e.charCodeAt(r+1)?r+=2:++r,++t.line,t.lineStart=r}}return r}(i,n.end,e),l=e.line,d=1+s-e.lineStart;if(s>=r)return new o(p.TokenKind.EOF,r,r,l,d,n);var f=i.charCodeAt(s);switch(f){case 33:return new o(p.TokenKind.BANG,s,s+1,l,d,n);case 35:return function(e,n,t,i,r){var a,s=e.body,c=n;do{a=s.charCodeAt(++c)}while(!isNaN(a)&&(a>31||9===a));return new o(p.TokenKind.COMMENT,n,c,t,i,r,s.slice(n+1,c))}(t,s,l,d,n);case 36:return new o(p.TokenKind.DOLLAR,s,s+1,l,d,n);case 38:return new o(p.TokenKind.AMP,s,s+1,l,d,n);case 40:return new o(p.TokenKind.PAREN_L,s,s+1,l,d,n);case 41:return new o(p.TokenKind.PAREN_R,s,s+1,l,d,n);case 46:if(46===i.charCodeAt(s+1)&&46===i.charCodeAt(s+2))return new o(p.TokenKind.SPREAD,s,s+3,l,d,n);break;case 58:return new o(p.TokenKind.COLON,s,s+1,l,d,n);case 61:return new o(p.TokenKind.EQUALS,s,s+1,l,d,n);case 64:return new o(p.TokenKind.AT,s,s+1,l,d,n);case 91:return new o(p.TokenKind.BRACKET_L,s,s+1,l,d,n);case 93:return new o(p.TokenKind.BRACKET_R,s,s+1,l,d,n);case 123:return new o(p.TokenKind.BRACE_L,s,s+1,l,d,n);case 124:return new o(p.TokenKind.PIPE,s,s+1,l,d,n);case 125:return new o(p.TokenKind.BRACE_R,s,s+1,l,d,n);case 65:case 66:case 67:case 68:case 69:case 70:case 71:case 72:case 73:case 74:case 75:case 76:case 77:case 78:case 79:case 80:case 81:case 82:case 83:case 84:case 85:case 86:case 87:case 88:case 89:case 90:case 95:case 97:case 98:case 99:case 100:case 101:case 102:case 103:case 104:case 105:case 106:case 107:case 108:case 109:case 110:case 111:case 112:case 113:case 114:case 115:case 116:case 117:case 118:case 119:case 120:case 121:case 122:return function(e,n,t,i,r){var a=e.body,s=a.length,c=n+1,u=0;for(;c!==s&&!isNaN(u=a.charCodeAt(c))&&(95===u||u>=48&&u<=57||u>=65&&u<=90||u>=97&&u<=122);)++c;return new o(p.TokenKind.NAME,n,c,t,i,r,a.slice(n,c))}(t,s,l,d,n);case 45:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return function(e,n,t,i,r,s){var u=e.body,l=t,d=n,f=!1;45===l&&(l=u.charCodeAt(++d));if(48===l){if((l=u.charCodeAt(++d))>=48&&l<=57)throw(0,E.syntaxError)(e,d,"Invalid number, unexpected digit after 0: ".concat(a(l),"."))}else d=c(e,d,l),l=u.charCodeAt(d);46===l&&(f=!0,l=u.charCodeAt(++d),d=c(e,d,l),l=u.charCodeAt(d));69!==l&&101!==l||(f=!0,43!==(l=u.charCodeAt(++d))&&45!==l||(l=u.charCodeAt(++d)),d=c(e,d,l),l=u.charCodeAt(d));if(46===l||69===l||101===l)throw(0,E.syntaxError)(e,d,"Invalid number, expected digit but got: ".concat(a(l),"."));return new o(f?p.TokenKind.FLOAT:p.TokenKind.INT,n,d,i,r,s,u.slice(n,d))}(t,s,f,l,d,n);case 34:return 34===i.charCodeAt(s+1)&&34===i.charCodeAt(s+2)?function(e,n,t,i,r,s){var c=e.body,u=n+3,l=u,d=0,f="";for(;u<c.length&&!isNaN(d=c.charCodeAt(u));){if(34===d&&34===c.charCodeAt(u+1)&&34===c.charCodeAt(u+2))return f+=c.slice(l,u),new o(p.TokenKind.BLOCK_STRING,n,u+3,t,i,r,(0,y.dedentBlockStringValue)(f));if(d<32&&9!==d&&10!==d&&13!==d)throw(0,E.syntaxError)(e,u,"Invalid character within String: ".concat(a(d),"."));10===d?(++u,++s.line,s.lineStart=u):13===d?(10===c.charCodeAt(u+1)?u+=2:++u,++s.line,s.lineStart=u):92===d&&34===c.charCodeAt(u+1)&&34===c.charCodeAt(u+2)&&34===c.charCodeAt(u+3)?(f+=c.slice(l,u)+'"""',l=u+=4):++u}throw(0,E.syntaxError)(e,u,"Unterminated string.")}(t,s,l,d,n,e):function(e,n,t,i,r){var s=e.body,c=n+1,l=c,d=0,f="";for(;c<s.length&&!isNaN(d=s.charCodeAt(c))&&10!==d&&13!==d;){if(34===d)return f+=s.slice(l,c),new o(p.TokenKind.STRING,n,c+1,t,i,r,f);if(d<32&&9!==d)throw(0,E.syntaxError)(e,c,"Invalid character within String: ".concat(a(d),"."));if(++c,92===d){switch(f+=s.slice(l,c-1),d=s.charCodeAt(c)){case 34:f+='"';break;case 47:f+="/";break;case 92:f+="\\";break;case 98:f+="\b";break;case 102:f+="\f";break;case 110:f+="\n";break;case 114:f+="\r";break;case 116:f+="\t";break;case 117:var h=(v=s.charCodeAt(c+1),y=s.charCodeAt(c+2),N=s.charCodeAt(c+3),m=s.charCodeAt(c+4),u(v)<<12|u(y)<<8|u(N)<<4|u(m));if(h<0){var T=s.slice(c+1,c+5);throw(0,E.syntaxError)(e,c,"Invalid character escape sequence: \\u".concat(T,"."))}f+=String.fromCharCode(h),c+=4;break;default:throw(0,E.syntaxError)(e,c,"Invalid character escape sequence: \\".concat(String.fromCharCode(d),"."))}l=++c}}var v,y,N,m;throw(0,E.syntaxError)(e,c,"Unterminated string.")}(t,s,l,d,n)}throw(0,E.syntaxError)(t,s,function(e){if(e<32&&9!==e&&10!==e&&13!==e)return"Cannot contain the invalid character ".concat(a(e),".");if(39===e)return"Unexpected single quote character ('), did you mean to use a double quote (\")?";return"Cannot parse the unexpected character ".concat(a(e),".")}(f))}function c(e,n,t){var i=e.body,r=n,o=t;if(o>=48&&o<=57){do{o=i.charCodeAt(++r)}while(o>=48&&o<=57);return r}throw(0,E.syntaxError)(e,r,"Invalid number, expected digit but got: ".concat(a(o),"."))}function u(e){return e>=48&&e<=57?e-48:e>=65&&e<=70?e-55:e>=97&&e<=102?e-87:-1}Object.defineProperty(n,"__esModule",{value:!0}),n.createLexer=function(e,n){var t=new o(p.TokenKind.SOF,0,0,0,0,null);return{source:e,options:n,lastToken:t,token:t,line:1,lineStart:0,advance:i,lookahead:r}},n.isPunctuatorToken=function(e){var n=e.kind;return n===p.TokenKind.BANG||n===p.TokenKind.DOLLAR||n===p.TokenKind.AMP||n===p.TokenKind.PAREN_L||n===p.TokenKind.PAREN_R||n===p.TokenKind.SPREAD||n===p.TokenKind.COLON||n===p.TokenKind.EQUALS||n===p.TokenKind.AT||n===p.TokenKind.BRACKET_L||n===p.TokenKind.BRACKET_R||n===p.TokenKind.BRACE_L||n===p.TokenKind.PIPE||n===p.TokenKind.BRACE_R},(0,((t=h)&&t.__esModule?t:{default:t}).default)(o,(function(){return{kind:this.kind,value:this.value,line:this.line,column:this.column}}))}));r(N);N.createLexer,N.isPunctuatorToken;var m=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return c(e,[])};var i,r=(i=f)&&i.__esModule?i:{default:i};function o(e){return(o="function"==typeof Symbol&&"symbol"===n(Symbol.iterator)?function(e){return n(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":n(e)})(e)}var a=10,s=2;function c(e,n){switch(o(e)){case"string":return JSON.stringify(e);case"function":return e.name?"[function ".concat(e.name,"]"):"[function]";case"object":return null===e?"null":function(e,n){if(-1!==n.indexOf(e))return"[Circular]";var t=[].concat(n,[e]),i=function(e){var n=e[String(r.default)];if("function"==typeof n)return n;if("function"==typeof e.inspect)return e.inspect}(e);if(void 0!==i){var o=i.call(e);if(o!==e)return"string"==typeof o?o:c(o,t)}else if(Array.isArray(e))return function(e,n){if(0===e.length)return"[]";if(n.length>s)return"[Array]";for(var t=Math.min(a,e.length),i=e.length-t,r=[],o=0;o<t;++o)r.push(c(e[o],n));1===i?r.push("... 1 more item"):i>1&&r.push("... ".concat(i," more items"));return"["+r.join(", ")+"]"}(e,t);return function(e,n){var t=Object.keys(e);if(0===t.length)return"{}";if(n.length>s)return"["+function(e){var n=Object.prototype.toString.call(e).replace(/^\[object /,"").replace(/]$/,"");if("Object"===n&&"function"==typeof e.constructor){var t=e.constructor.name;if("string"==typeof t&&""!==t)return t}return n}(e)+"]";return"{ "+t.map((function(t){return t+": "+c(e[t],n)})).join(", ")+" }"}(e,t)}(e,n);default:return String(e)}}}));r(m);var k=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.DirectiveLocation=void 0;var t=Object.freeze({QUERY:"QUERY",MUTATION:"MUTATION",SUBSCRIPTION:"SUBSCRIPTION",FIELD:"FIELD",FRAGMENT_DEFINITION:"FRAGMENT_DEFINITION",FRAGMENT_SPREAD:"FRAGMENT_SPREAD",INLINE_FRAGMENT:"INLINE_FRAGMENT",VARIABLE_DEFINITION:"VARIABLE_DEFINITION",SCHEMA:"SCHEMA",SCALAR:"SCALAR",OBJECT:"OBJECT",FIELD_DEFINITION:"FIELD_DEFINITION",ARGUMENT_DEFINITION:"ARGUMENT_DEFINITION",INTERFACE:"INTERFACE",UNION:"UNION",ENUM:"ENUM",ENUM_VALUE:"ENUM_VALUE",INPUT_OBJECT:"INPUT_OBJECT",INPUT_FIELD_DEFINITION:"INPUT_FIELD_DEFINITION"});n.DirectiveLocation=t}));r(k);k.DirectiveLocation;var I=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.parse=function(e,n){return new s(e,n).parseDocument()},n.parseValue=function(e,n){var t=new s(e,n);t.expectToken(p.TokenKind.SOF);var i=t.parseValueLiteral(!1);return t.expectToken(p.TokenKind.EOF),i},n.parseType=function(e,n){var t=new s(e,n);t.expectToken(p.TokenKind.SOF);var i=t.parseTypeReference();return t.expectToken(p.TokenKind.EOF),i};var t=o(m),i=o(a),r=o(h);function o(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(e,n){var r="string"==typeof e?new c.Source(e):e;r instanceof c.Source||(0,i.default)(0,"Must provide Source. Received: ".concat((0,t.default)(r))),this._lexer=(0,N.createLexer)(r),this._options=n||{}}var n=e.prototype;return n.parseName=function(){var e=this.expectToken(p.TokenKind.NAME);return{kind:d.Kind.NAME,value:e.value,loc:this.loc(e)}},n.parseDocument=function(){var e=this._lexer.token;return{kind:d.Kind.DOCUMENT,definitions:this.many(p.TokenKind.SOF,this.parseDefinition,p.TokenKind.EOF),loc:this.loc(e)}},n.parseDefinition=function(){if(this.peek(p.TokenKind.NAME))switch(this._lexer.token.value){case"query":case"mutation":case"subscription":return this.parseOperationDefinition();case"fragment":return this.parseFragmentDefinition();case"schema":case"scalar":case"type":case"interface":case"union":case"enum":case"input":case"directive":return this.parseTypeSystemDefinition();case"extend":return this.parseTypeSystemExtension()}else{if(this.peek(p.TokenKind.BRACE_L))return this.parseOperationDefinition();if(this.peekDescription())return this.parseTypeSystemDefinition()}throw this.unexpected()},n.parseOperationDefinition=function(){var e=this._lexer.token;if(this.peek(p.TokenKind.BRACE_L))return{kind:d.Kind.OPERATION_DEFINITION,operation:"query",name:void 0,variableDefinitions:[],directives:[],selectionSet:this.parseSelectionSet(),loc:this.loc(e)};var n,t=this.parseOperationType();return this.peek(p.TokenKind.NAME)&&(n=this.parseName()),{kind:d.Kind.OPERATION_DEFINITION,operation:t,name:n,variableDefinitions:this.parseVariableDefinitions(),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(e)}},n.parseOperationType=function(){var e=this.expectToken(p.TokenKind.NAME);switch(e.value){case"query":return"query";case"mutation":return"mutation";case"subscription":return"subscription"}throw this.unexpected(e)},n.parseVariableDefinitions=function(){return this.optionalMany(p.TokenKind.PAREN_L,this.parseVariableDefinition,p.TokenKind.PAREN_R)},n.parseVariableDefinition=function(){var e=this._lexer.token;return{kind:d.Kind.VARIABLE_DEFINITION,variable:this.parseVariable(),type:(this.expectToken(p.TokenKind.COLON),this.parseTypeReference()),defaultValue:this.expectOptionalToken(p.TokenKind.EQUALS)?this.parseValueLiteral(!0):void 0,directives:this.parseDirectives(!0),loc:this.loc(e)}},n.parseVariable=function(){var e=this._lexer.token;return this.expectToken(p.TokenKind.DOLLAR),{kind:d.Kind.VARIABLE,name:this.parseName(),loc:this.loc(e)}},n.parseSelectionSet=function(){var e=this._lexer.token;return{kind:d.Kind.SELECTION_SET,selections:this.many(p.TokenKind.BRACE_L,this.parseSelection,p.TokenKind.BRACE_R),loc:this.loc(e)}},n.parseSelection=function(){return this.peek(p.TokenKind.SPREAD)?this.parseFragment():this.parseField()},n.parseField=function(){var e,n,t=this._lexer.token,i=this.parseName();return this.expectOptionalToken(p.TokenKind.COLON)?(e=i,n=this.parseName()):n=i,{kind:d.Kind.FIELD,alias:e,name:n,arguments:this.parseArguments(!1),directives:this.parseDirectives(!1),selectionSet:this.peek(p.TokenKind.BRACE_L)?this.parseSelectionSet():void 0,loc:this.loc(t)}},n.parseArguments=function(e){var n=e?this.parseConstArgument:this.parseArgument;return this.optionalMany(p.TokenKind.PAREN_L,n,p.TokenKind.PAREN_R)},n.parseArgument=function(){var e=this._lexer.token,n=this.parseName();return this.expectToken(p.TokenKind.COLON),{kind:d.Kind.ARGUMENT,name:n,value:this.parseValueLiteral(!1),loc:this.loc(e)}},n.parseConstArgument=function(){var e=this._lexer.token;return{kind:d.Kind.ARGUMENT,name:this.parseName(),value:(this.expectToken(p.TokenKind.COLON),this.parseValueLiteral(!0)),loc:this.loc(e)}},n.parseFragment=function(){var e=this._lexer.token;this.expectToken(p.TokenKind.SPREAD);var n=this.expectOptionalKeyword("on");return!n&&this.peek(p.TokenKind.NAME)?{kind:d.Kind.FRAGMENT_SPREAD,name:this.parseFragmentName(),directives:this.parseDirectives(!1),loc:this.loc(e)}:{kind:d.Kind.INLINE_FRAGMENT,typeCondition:n?this.parseNamedType():void 0,directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(e)}},n.parseFragmentDefinition=function(){var e=this._lexer.token;return this.expectKeyword("fragment"),this._options.experimentalFragmentVariables?{kind:d.Kind.FRAGMENT_DEFINITION,name:this.parseFragmentName(),variableDefinitions:this.parseVariableDefinitions(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(e)}:{kind:d.Kind.FRAGMENT_DEFINITION,name:this.parseFragmentName(),typeCondition:(this.expectKeyword("on"),this.parseNamedType()),directives:this.parseDirectives(!1),selectionSet:this.parseSelectionSet(),loc:this.loc(e)}},n.parseFragmentName=function(){if("on"===this._lexer.token.value)throw this.unexpected();return this.parseName()},n.parseValueLiteral=function(e){var n=this._lexer.token;switch(n.kind){case p.TokenKind.BRACKET_L:return this.parseList(e);case p.TokenKind.BRACE_L:return this.parseObject(e);case p.TokenKind.INT:return this._lexer.advance(),{kind:d.Kind.INT,value:n.value,loc:this.loc(n)};case p.TokenKind.FLOAT:return this._lexer.advance(),{kind:d.Kind.FLOAT,value:n.value,loc:this.loc(n)};case p.TokenKind.STRING:case p.TokenKind.BLOCK_STRING:return this.parseStringLiteral();case p.TokenKind.NAME:return"true"===n.value||"false"===n.value?(this._lexer.advance(),{kind:d.Kind.BOOLEAN,value:"true"===n.value,loc:this.loc(n)}):"null"===n.value?(this._lexer.advance(),{kind:d.Kind.NULL,loc:this.loc(n)}):(this._lexer.advance(),{kind:d.Kind.ENUM,value:n.value,loc:this.loc(n)});case p.TokenKind.DOLLAR:if(!e)return this.parseVariable()}throw this.unexpected()},n.parseStringLiteral=function(){var e=this._lexer.token;return this._lexer.advance(),{kind:d.Kind.STRING,value:e.value,block:e.kind===p.TokenKind.BLOCK_STRING,loc:this.loc(e)}},n.parseList=function(e){var n=this,t=this._lexer.token;return{kind:d.Kind.LIST,values:this.any(p.TokenKind.BRACKET_L,(function(){return n.parseValueLiteral(e)}),p.TokenKind.BRACKET_R),loc:this.loc(t)}},n.parseObject=function(e){var n=this,t=this._lexer.token;return{kind:d.Kind.OBJECT,fields:this.any(p.TokenKind.BRACE_L,(function(){return n.parseObjectField(e)}),p.TokenKind.BRACE_R),loc:this.loc(t)}},n.parseObjectField=function(e){var n=this._lexer.token,t=this.parseName();return this.expectToken(p.TokenKind.COLON),{kind:d.Kind.OBJECT_FIELD,name:t,value:this.parseValueLiteral(e),loc:this.loc(n)}},n.parseDirectives=function(e){for(var n=[];this.peek(p.TokenKind.AT);)n.push(this.parseDirective(e));return n},n.parseDirective=function(e){var n=this._lexer.token;return this.expectToken(p.TokenKind.AT),{kind:d.Kind.DIRECTIVE,name:this.parseName(),arguments:this.parseArguments(e),loc:this.loc(n)}},n.parseTypeReference=function(){var e,n=this._lexer.token;return this.expectOptionalToken(p.TokenKind.BRACKET_L)?(e=this.parseTypeReference(),this.expectToken(p.TokenKind.BRACKET_R),e={kind:d.Kind.LIST_TYPE,type:e,loc:this.loc(n)}):e=this.parseNamedType(),this.expectOptionalToken(p.TokenKind.BANG)?{kind:d.Kind.NON_NULL_TYPE,type:e,loc:this.loc(n)}:e},n.parseNamedType=function(){var e=this._lexer.token;return{kind:d.Kind.NAMED_TYPE,name:this.parseName(),loc:this.loc(e)}},n.parseTypeSystemDefinition=function(){var e=this.peekDescription()?this._lexer.lookahead():this._lexer.token;if(e.kind===p.TokenKind.NAME)switch(e.value){case"schema":return this.parseSchemaDefinition();case"scalar":return this.parseScalarTypeDefinition();case"type":return this.parseObjectTypeDefinition();case"interface":return this.parseInterfaceTypeDefinition();case"union":return this.parseUnionTypeDefinition();case"enum":return this.parseEnumTypeDefinition();case"input":return this.parseInputObjectTypeDefinition();case"directive":return this.parseDirectiveDefinition()}throw this.unexpected(e)},n.peekDescription=function(){return this.peek(p.TokenKind.STRING)||this.peek(p.TokenKind.BLOCK_STRING)},n.parseDescription=function(){if(this.peekDescription())return this.parseStringLiteral()},n.parseSchemaDefinition=function(){var e=this._lexer.token;this.expectKeyword("schema");var n=this.parseDirectives(!0),t=this.many(p.TokenKind.BRACE_L,this.parseOperationTypeDefinition,p.TokenKind.BRACE_R);return{kind:d.Kind.SCHEMA_DEFINITION,directives:n,operationTypes:t,loc:this.loc(e)}},n.parseOperationTypeDefinition=function(){var e=this._lexer.token,n=this.parseOperationType();this.expectToken(p.TokenKind.COLON);var t=this.parseNamedType();return{kind:d.Kind.OPERATION_TYPE_DEFINITION,operation:n,type:t,loc:this.loc(e)}},n.parseScalarTypeDefinition=function(){var e=this._lexer.token,n=this.parseDescription();this.expectKeyword("scalar");var t=this.parseName(),i=this.parseDirectives(!0);return{kind:d.Kind.SCALAR_TYPE_DEFINITION,description:n,name:t,directives:i,loc:this.loc(e)}},n.parseObjectTypeDefinition=function(){var e=this._lexer.token,n=this.parseDescription();this.expectKeyword("type");var t=this.parseName(),i=this.parseImplementsInterfaces(),r=this.parseDirectives(!0),o=this.parseFieldsDefinition();return{kind:d.Kind.OBJECT_TYPE_DEFINITION,description:n,name:t,interfaces:i,directives:r,fields:o,loc:this.loc(e)}},n.parseImplementsInterfaces=function(){var e=[];if(this.expectOptionalKeyword("implements")){this.expectOptionalToken(p.TokenKind.AMP);do{e.push(this.parseNamedType())}while(this.expectOptionalToken(p.TokenKind.AMP)||this._options.allowLegacySDLImplementsInterfaces&&this.peek(p.TokenKind.NAME))}return e},n.parseFieldsDefinition=function(){return this._options.allowLegacySDLEmptyFields&&this.peek(p.TokenKind.BRACE_L)&&this._lexer.lookahead().kind===p.TokenKind.BRACE_R?(this._lexer.advance(),this._lexer.advance(),[]):this.optionalMany(p.TokenKind.BRACE_L,this.parseFieldDefinition,p.TokenKind.BRACE_R)},n.parseFieldDefinition=function(){var e=this._lexer.token,n=this.parseDescription(),t=this.parseName(),i=this.parseArgumentDefs();this.expectToken(p.TokenKind.COLON);var r=this.parseTypeReference(),o=this.parseDirectives(!0);return{kind:d.Kind.FIELD_DEFINITION,description:n,name:t,arguments:i,type:r,directives:o,loc:this.loc(e)}},n.parseArgumentDefs=function(){return this.optionalMany(p.TokenKind.PAREN_L,this.parseInputValueDef,p.TokenKind.PAREN_R)},n.parseInputValueDef=function(){var e=this._lexer.token,n=this.parseDescription(),t=this.parseName();this.expectToken(p.TokenKind.COLON);var i,r=this.parseTypeReference();this.expectOptionalToken(p.TokenKind.EQUALS)&&(i=this.parseValueLiteral(!0));var o=this.parseDirectives(!0);return{kind:d.Kind.INPUT_VALUE_DEFINITION,description:n,name:t,type:r,defaultValue:i,directives:o,loc:this.loc(e)}},n.parseInterfaceTypeDefinition=function(){var e=this._lexer.token,n=this.parseDescription();this.expectKeyword("interface");var t=this.parseName(),i=this.parseDirectives(!0),r=this.parseFieldsDefinition();return{kind:d.Kind.INTERFACE_TYPE_DEFINITION,description:n,name:t,directives:i,fields:r,loc:this.loc(e)}},n.parseUnionTypeDefinition=function(){var e=this._lexer.token,n=this.parseDescription();this.expectKeyword("union");var t=this.parseName(),i=this.parseDirectives(!0),r=this.parseUnionMemberTypes();return{kind:d.Kind.UNION_TYPE_DEFINITION,description:n,name:t,directives:i,types:r,loc:this.loc(e)}},n.parseUnionMemberTypes=function(){var e=[];if(this.expectOptionalToken(p.TokenKind.EQUALS)){this.expectOptionalToken(p.TokenKind.PIPE);do{e.push(this.parseNamedType())}while(this.expectOptionalToken(p.TokenKind.PIPE))}return e},n.parseEnumTypeDefinition=function(){var e=this._lexer.token,n=this.parseDescription();this.expectKeyword("enum");var t=this.parseName(),i=this.parseDirectives(!0),r=this.parseEnumValuesDefinition();return{kind:d.Kind.ENUM_TYPE_DEFINITION,description:n,name:t,directives:i,values:r,loc:this.loc(e)}},n.parseEnumValuesDefinition=function(){return this.optionalMany(p.TokenKind.BRACE_L,this.parseEnumValueDefinition,p.TokenKind.BRACE_R)},n.parseEnumValueDefinition=function(){var e=this._lexer.token,n=this.parseDescription(),t=this.parseName(),i=this.parseDirectives(!0);return{kind:d.Kind.ENUM_VALUE_DEFINITION,description:n,name:t,directives:i,loc:this.loc(e)}},n.parseInputObjectTypeDefinition=function(){var e=this._lexer.token,n=this.parseDescription();this.expectKeyword("input");var t=this.parseName(),i=this.parseDirectives(!0),r=this.parseInputFieldsDefinition();return{kind:d.Kind.INPUT_OBJECT_TYPE_DEFINITION,description:n,name:t,directives:i,fields:r,loc:this.loc(e)}},n.parseInputFieldsDefinition=function(){return this.optionalMany(p.TokenKind.BRACE_L,this.parseInputValueDef,p.TokenKind.BRACE_R)},n.parseTypeSystemExtension=function(){var e=this._lexer.lookahead();if(e.kind===p.TokenKind.NAME)switch(e.value){case"schema":return this.parseSchemaExtension();case"scalar":return this.parseScalarTypeExtension();case"type":return this.parseObjectTypeExtension();case"interface":return this.parseInterfaceTypeExtension();case"union":return this.parseUnionTypeExtension();case"enum":return this.parseEnumTypeExtension();case"input":return this.parseInputObjectTypeExtension()}throw this.unexpected(e)},n.parseSchemaExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("schema");var n=this.parseDirectives(!0),t=this.optionalMany(p.TokenKind.BRACE_L,this.parseOperationTypeDefinition,p.TokenKind.BRACE_R);if(0===n.length&&0===t.length)throw this.unexpected();return{kind:d.Kind.SCHEMA_EXTENSION,directives:n,operationTypes:t,loc:this.loc(e)}},n.parseScalarTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("scalar");var n=this.parseName(),t=this.parseDirectives(!0);if(0===t.length)throw this.unexpected();return{kind:d.Kind.SCALAR_TYPE_EXTENSION,name:n,directives:t,loc:this.loc(e)}},n.parseObjectTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("type");var n=this.parseName(),t=this.parseImplementsInterfaces(),i=this.parseDirectives(!0),r=this.parseFieldsDefinition();if(0===t.length&&0===i.length&&0===r.length)throw this.unexpected();return{kind:d.Kind.OBJECT_TYPE_EXTENSION,name:n,interfaces:t,directives:i,fields:r,loc:this.loc(e)}},n.parseInterfaceTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("interface");var n=this.parseName(),t=this.parseDirectives(!0),i=this.parseFieldsDefinition();if(0===t.length&&0===i.length)throw this.unexpected();return{kind:d.Kind.INTERFACE_TYPE_EXTENSION,name:n,directives:t,fields:i,loc:this.loc(e)}},n.parseUnionTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("union");var n=this.parseName(),t=this.parseDirectives(!0),i=this.parseUnionMemberTypes();if(0===t.length&&0===i.length)throw this.unexpected();return{kind:d.Kind.UNION_TYPE_EXTENSION,name:n,directives:t,types:i,loc:this.loc(e)}},n.parseEnumTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("enum");var n=this.parseName(),t=this.parseDirectives(!0),i=this.parseEnumValuesDefinition();if(0===t.length&&0===i.length)throw this.unexpected();return{kind:d.Kind.ENUM_TYPE_EXTENSION,name:n,directives:t,values:i,loc:this.loc(e)}},n.parseInputObjectTypeExtension=function(){var e=this._lexer.token;this.expectKeyword("extend"),this.expectKeyword("input");var n=this.parseName(),t=this.parseDirectives(!0),i=this.parseInputFieldsDefinition();if(0===t.length&&0===i.length)throw this.unexpected();return{kind:d.Kind.INPUT_OBJECT_TYPE_EXTENSION,name:n,directives:t,fields:i,loc:this.loc(e)}},n.parseDirectiveDefinition=function(){var e=this._lexer.token,n=this.parseDescription();this.expectKeyword("directive"),this.expectToken(p.TokenKind.AT);var t=this.parseName(),i=this.parseArgumentDefs(),r=this.expectOptionalKeyword("repeatable");this.expectKeyword("on");var o=this.parseDirectiveLocations();return{kind:d.Kind.DIRECTIVE_DEFINITION,description:n,name:t,arguments:i,repeatable:r,locations:o,loc:this.loc(e)}},n.parseDirectiveLocations=function(){this.expectOptionalToken(p.TokenKind.PIPE);var e=[];do{e.push(this.parseDirectiveLocation())}while(this.expectOptionalToken(p.TokenKind.PIPE));return e},n.parseDirectiveLocation=function(){var e=this._lexer.token,n=this.parseName();if(void 0!==k.DirectiveLocation[n.value])return n;throw this.unexpected(e)},n.loc=function(e){if(!this._options.noLocation)return new u(e,this._lexer.lastToken,this._lexer.source)},n.peek=function(e){return this._lexer.token.kind===e},n.expectToken=function(e){var n=this._lexer.token;if(n.kind===e)return this._lexer.advance(),n;throw(0,E.syntaxError)(this._lexer.source,n.start,"Expected ".concat(e,", found ").concat(l(n)))},n.expectOptionalToken=function(e){var n=this._lexer.token;if(n.kind===e)return this._lexer.advance(),n},n.expectKeyword=function(e){var n=this._lexer.token;if(n.kind!==p.TokenKind.NAME||n.value!==e)throw(0,E.syntaxError)(this._lexer.source,n.start,'Expected "'.concat(e,'", found ').concat(l(n)));this._lexer.advance()},n.expectOptionalKeyword=function(e){var n=this._lexer.token;return n.kind===p.TokenKind.NAME&&n.value===e&&(this._lexer.advance(),!0)},n.unexpected=function(e){var n=e||this._lexer.token;return(0,E.syntaxError)(this._lexer.source,n.start,"Unexpected ".concat(l(n)))},n.any=function(e,n,t){this.expectToken(e);for(var i=[];!this.expectOptionalToken(t);)i.push(n.call(this));return i},n.optionalMany=function(e,n,t){if(this.expectOptionalToken(e)){var i=[];do{i.push(n.call(this))}while(!this.expectOptionalToken(t));return i}return[]},n.many=function(e,n,t){this.expectToken(e);var i=[];do{i.push(n.call(this))}while(!this.expectOptionalToken(t));return i},e}();function u(e,n,t){this.start=e.start,this.end=n.end,this.startToken=e,this.endToken=n,this.source=t}function l(e){var n=e.value;return n?"".concat(e.kind,' "').concat(n,'"'):e.kind}(0,r.default)(u,(function(){return{start:this.start,end:this.end}}))}));r(I);I.parse,I.parseValue,I.parseType;var _=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.visit=function(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:r,c=void 0,u=Array.isArray(e),l=[e],d=-1,p=[],f=void 0,h=void 0,T=void 0,v=[],E=[],y=e;do{var N=++d===l.length,m=N&&0!==p.length;if(N){if(h=0===E.length?void 0:v[v.length-1],f=T,T=E.pop(),m){if(u)f=f.slice();else{for(var k={},I=0,_=Object.keys(f);I<_.length;I++){var O=_[I];k[O]=f[O]}f=k}for(var D=0,x=0;x<p.length;x++){var K=p[x][0],A=p[x][1];u&&(K-=D),u&&null===A?(f.splice(K,1),D++):f[K]=A}}d=c.index,l=c.keys,p=c.edits,u=c.inArray,c=c.prev}else{if(h=T?u?d:l[d]:void 0,null==(f=T?T[h]:y))continue;T&&v.push(h)}var b=void 0;if(!Array.isArray(f)){if(!a(f))throw new Error("Invalid AST Node: "+(0,i.default)(f));var S=s(n,f.kind,N);if(S){if((b=S.call(n,f,h,T,v,E))===o)break;if(!1===b){if(!N){v.pop();continue}}else if(void 0!==b&&(p.push([h,b]),!N)){if(!a(b)){v.pop();continue}f=b}}}void 0===b&&m&&p.push([h,f]),N?v.pop():(c={inArray:u,index:d,keys:l,edits:p,prev:c},u=Array.isArray(f),l=u?f:t[f.kind]||[],d=-1,p=[],T&&E.push(T),T=f)}while(void 0!==c);0!==p.length&&(y=p[p.length-1][1]);return y},n.visitInParallel=function(e){var n=new Array(e.length);return{enter:function(t){for(var i=0;i<e.length;i++)if(!n[i]){var r=s(e[i],t.kind,!1);if(r){var a=r.apply(e[i],arguments);if(!1===a)n[i]=t;else if(a===o)n[i]=o;else if(void 0!==a)return a}}},leave:function(t){for(var i=0;i<e.length;i++)if(n[i])n[i]===t&&(n[i]=null);else{var r=s(e[i],t.kind,!0);if(r){var a=r.apply(e[i],arguments);if(a===o)n[i]=o;else if(void 0!==a&&!1!==a)return a}}}}},n.visitWithTypeInfo=function(e,n){return{enter:function(t){e.enter(t);var i=s(n,t.kind,!1);if(i){var r=i.apply(n,arguments);return void 0!==r&&(e.leave(t),a(r)&&e.enter(r)),r}},leave:function(t){var i,r=s(n,t.kind,!0);return r&&(i=r.apply(n,arguments)),e.leave(t),i}}},n.getVisitFn=s,n.BREAK=n.QueryDocumentKeys=void 0;var t,i=(t=m)&&t.__esModule?t:{default:t};var r={Name:[],Document:["definitions"],OperationDefinition:["name","variableDefinitions","directives","selectionSet"],VariableDefinition:["variable","type","defaultValue","directives"],Variable:["name"],SelectionSet:["selections"],Field:["alias","name","arguments","directives","selectionSet"],Argument:["name","value"],FragmentSpread:["name","directives"],InlineFragment:["typeCondition","directives","selectionSet"],FragmentDefinition:["name","variableDefinitions","typeCondition","directives","selectionSet"],IntValue:[],FloatValue:[],StringValue:[],BooleanValue:[],NullValue:[],EnumValue:[],ListValue:["values"],ObjectValue:["fields"],ObjectField:["name","value"],Directive:["name","arguments"],NamedType:["name"],ListType:["type"],NonNullType:["type"],SchemaDefinition:["directives","operationTypes"],OperationTypeDefinition:["type"],ScalarTypeDefinition:["description","name","directives"],ObjectTypeDefinition:["description","name","interfaces","directives","fields"],FieldDefinition:["description","name","arguments","type","directives"],InputValueDefinition:["description","name","type","defaultValue","directives"],InterfaceTypeDefinition:["description","name","directives","fields"],UnionTypeDefinition:["description","name","directives","types"],EnumTypeDefinition:["description","name","directives","values"],EnumValueDefinition:["description","name","directives"],InputObjectTypeDefinition:["description","name","directives","fields"],DirectiveDefinition:["description","name","arguments","locations"],SchemaExtension:["directives","operationTypes"],ScalarTypeExtension:["name","directives"],ObjectTypeExtension:["name","interfaces","directives","fields"],InterfaceTypeExtension:["name","directives","fields"],UnionTypeExtension:["name","directives","types"],EnumTypeExtension:["name","directives","values"],InputObjectTypeExtension:["name","directives","fields"]};n.QueryDocumentKeys=r;var o=Object.freeze({});function a(e){return Boolean(e&&"string"==typeof e.kind)}function s(e,n,t){var i=e[n];if(i){if(!t&&"function"==typeof i)return i;var r=t?i.leave:i.enter;if("function"==typeof r)return r}else{var o=t?e.leave:e.enter;if(o){if("function"==typeof o)return o;var a=o[n];if("function"==typeof a)return a}}}n.BREAK=o}));r(_);_.visit,_.visitInParallel,_.visitWithTypeInfo,_.getVisitFn,_.BREAK,_.QueryDocumentKeys;var O=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.print=function(e){return(0,_.visit)(e,{leave:t})};var t={Name:function(e){return e.value},Variable:function(e){return"$"+e.name},Document:function(e){return r(e.definitions,"\n\n")+"\n"},OperationDefinition:function(e){var n=e.operation,t=e.name,i=a("(",r(e.variableDefinitions,", "),")"),o=r(e.directives," "),s=e.selectionSet;return t||o||i||"query"!==n?r([n,r([t,i]),o,s]," "):s},VariableDefinition:function(e){var n=e.variable,t=e.type,i=e.defaultValue,o=e.directives;return n+": "+t+a(" = ",i)+a(" ",r(o," "))},SelectionSet:function(e){return o(e.selections)},Field:function(e){var n=e.alias,t=e.name,i=e.arguments,o=e.directives,s=e.selectionSet;return r([a("",n,": ")+t+a("(",r(i,", "),")"),r(o," "),s]," ")},Argument:function(e){return e.name+": "+e.value},FragmentSpread:function(e){return"..."+e.name+a(" ",r(e.directives," "))},InlineFragment:function(e){var n=e.typeCondition,t=e.directives,i=e.selectionSet;return r(["...",a("on ",n),r(t," "),i]," ")},FragmentDefinition:function(e){var n=e.name,t=e.typeCondition,i=e.variableDefinitions,o=e.directives,s=e.selectionSet;return("fragment ".concat(n).concat(a("(",r(i,", "),")")," ")+"on ".concat(t," ").concat(a("",r(o," ")," "))+s)},IntValue:function(e){return e.value},FloatValue:function(e){return e.value},StringValue:function(e,n){var t=e.value;return e.block?(0,y.printBlockString)(t,"description"===n?"":" "):JSON.stringify(t)},BooleanValue:function(e){return e.value?"true":"false"},NullValue:function(){return"null"},EnumValue:function(e){return e.value},ListValue:function(e){return"["+r(e.values,", ")+"]"},ObjectValue:function(e){return"{"+r(e.fields,", ")+"}"},ObjectField:function(e){return e.name+": "+e.value},Directive:function(e){return"@"+e.name+a("(",r(e.arguments,", "),")")},NamedType:function(e){return e.name},ListType:function(e){return"["+e.type+"]"},NonNullType:function(e){return e.type+"!"},SchemaDefinition:function(e){var n=e.directives,t=e.operationTypes;return r(["schema",r(n," "),o(t)]," ")},OperationTypeDefinition:function(e){return e.operation+": "+e.type},ScalarTypeDefinition:i((function(e){return r(["scalar",e.name,r(e.directives," ")]," ")})),ObjectTypeDefinition:i((function(e){var n=e.name,t=e.interfaces,i=e.directives,s=e.fields;return r(["type",n,a("implements ",r(t," & ")),r(i," "),o(s)]," ")})),FieldDefinition:i((function(e){var n=e.name,t=e.arguments,i=e.type,o=e.directives;return n+(u(t)?a("(\n",s(r(t,"\n")),"\n)"):a("(",r(t,", "),")"))+": "+i+a(" ",r(o," "))})),InputValueDefinition:i((function(e){var n=e.name,t=e.type,i=e.defaultValue,o=e.directives;return r([n+": "+t,a("= ",i),r(o," ")]," ")})),InterfaceTypeDefinition:i((function(e){var n=e.name,t=e.directives,i=e.fields;return r(["interface",n,r(t," "),o(i)]," ")})),UnionTypeDefinition:i((function(e){var n=e.name,t=e.directives,i=e.types;return r(["union",n,r(t," "),i&&0!==i.length?"= "+r(i," | "):""]," ")})),EnumTypeDefinition:i((function(e){var n=e.name,t=e.directives,i=e.values;return r(["enum",n,r(t," "),o(i)]," ")})),EnumValueDefinition:i((function(e){return r([e.name,r(e.directives," ")]," ")})),InputObjectTypeDefinition:i((function(e){var n=e.name,t=e.directives,i=e.fields;return r(["input",n,r(t," "),o(i)]," ")})),DirectiveDefinition:i((function(e){var n=e.name,t=e.arguments,i=e.repeatable,o=e.locations;return"directive @"+n+(u(t)?a("(\n",s(r(t,"\n")),"\n)"):a("(",r(t,", "),")"))+(i?" repeatable":"")+" on "+r(o," | ")})),SchemaExtension:function(e){var n=e.directives,t=e.operationTypes;return r(["extend schema",r(n," "),o(t)]," ")},ScalarTypeExtension:function(e){return r(["extend scalar",e.name,r(e.directives," ")]," ")},ObjectTypeExtension:function(e){var n=e.name,t=e.interfaces,i=e.directives,s=e.fields;return r(["extend type",n,a("implements ",r(t," & ")),r(i," "),o(s)]," ")},InterfaceTypeExtension:function(e){var n=e.name,t=e.directives,i=e.fields;return r(["extend interface",n,r(t," "),o(i)]," ")},UnionTypeExtension:function(e){var n=e.name,t=e.directives,i=e.types;return r(["extend union",n,r(t," "),i&&0!==i.length?"= "+r(i," | "):""]," ")},EnumTypeExtension:function(e){var n=e.name,t=e.directives,i=e.values;return r(["extend enum",n,r(t," "),o(i)]," ")},InputObjectTypeExtension:function(e){var n=e.name,t=e.directives,i=e.fields;return r(["extend input",n,r(t," "),o(i)]," ")}};function i(e){return function(n){return r([n.description,e(n)],"\n")}}function r(e,n){return e?e.filter((function(e){return e})).join(n||""):""}function o(e){return e&&0!==e.length?"{\n"+s(r(e,"\n"))+"\n}":""}function a(e,n,t){return n?e+n+(t||""):""}function s(e){return e&&" "+e.replace(/\n/g,"\n ")}function c(e){return-1!==e.indexOf("\n")}function u(e){return e&&e.some(c)}}));r(O);O.print;var D=o((function(e,n){function t(e){return e.kind===d.Kind.OPERATION_DEFINITION||e.kind===d.Kind.FRAGMENT_DEFINITION}function i(e){return e.kind===d.Kind.SCHEMA_DEFINITION||r(e)||e.kind===d.Kind.DIRECTIVE_DEFINITION}function r(e){return e.kind===d.Kind.SCALAR_TYPE_DEFINITION||e.kind===d.Kind.OBJECT_TYPE_DEFINITION||e.kind===d.Kind.INTERFACE_TYPE_DEFINITION||e.kind===d.Kind.UNION_TYPE_DEFINITION||e.kind===d.Kind.ENUM_TYPE_DEFINITION||e.kind===d.Kind.INPUT_OBJECT_TYPE_DEFINITION}function o(e){return e.kind===d.Kind.SCHEMA_EXTENSION||a(e)}function a(e){return e.kind===d.Kind.SCALAR_TYPE_EXTENSION||e.kind===d.Kind.OBJECT_TYPE_EXTENSION||e.kind===d.Kind.INTERFACE_TYPE_EXTENSION||e.kind===d.Kind.UNION_TYPE_EXTENSION||e.kind===d.Kind.ENUM_TYPE_EXTENSION||e.kind===d.Kind.INPUT_OBJECT_TYPE_EXTENSION}Object.defineProperty(n,"__esModule",{value:!0}),n.isDefinitionNode=function(e){return t(e)||i(e)||o(e)},n.isExecutableDefinitionNode=t,n.isSelectionNode=function(e){return e.kind===d.Kind.FIELD||e.kind===d.Kind.FRAGMENT_SPREAD||e.kind===d.Kind.INLINE_FRAGMENT},n.isValueNode=function(e){return e.kind===d.Kind.VARIABLE||e.kind===d.Kind.INT||e.kind===d.Kind.FLOAT||e.kind===d.Kind.STRING||e.kind===d.Kind.BOOLEAN||e.kind===d.Kind.NULL||e.kind===d.Kind.ENUM||e.kind===d.Kind.LIST||e.kind===d.Kind.OBJECT},n.isTypeNode=function(e){return e.kind===d.Kind.NAMED_TYPE||e.kind===d.Kind.LIST_TYPE||e.kind===d.Kind.NON_NULL_TYPE},n.isTypeSystemDefinitionNode=i,n.isTypeDefinitionNode=r,n.isTypeSystemExtensionNode=o,n.isTypeExtensionNode=a}));r(D);D.isDefinitionNode,D.isExecutableDefinitionNode,D.isSelectionNode,D.isValueNode,D.isTypeNode,D.isTypeSystemDefinitionNode,D.isTypeDefinitionNode,D.isTypeSystemExtensionNode,D.isTypeExtensionNode;var x=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"Source",{enumerable:!0,get:function(){return c.Source}}),Object.defineProperty(n,"getLocation",{enumerable:!0,get:function(){return u.getLocation}}),Object.defineProperty(n,"printLocation",{enumerable:!0,get:function(){return l.printLocation}}),Object.defineProperty(n,"printSourceLocation",{enumerable:!0,get:function(){return l.printSourceLocation}}),Object.defineProperty(n,"Kind",{enumerable:!0,get:function(){return d.Kind}}),Object.defineProperty(n,"TokenKind",{enumerable:!0,get:function(){return p.TokenKind}}),Object.defineProperty(n,"createLexer",{enumerable:!0,get:function(){return N.createLexer}}),Object.defineProperty(n,"parse",{enumerable:!0,get:function(){return I.parse}}),Object.defineProperty(n,"parseValue",{enumerable:!0,get:function(){return I.parseValue}}),Object.defineProperty(n,"parseType",{enumerable:!0,get:function(){return I.parseType}}),Object.defineProperty(n,"print",{enumerable:!0,get:function(){return O.print}}),Object.defineProperty(n,"visit",{enumerable:!0,get:function(){return _.visit}}),Object.defineProperty(n,"visitInParallel",{enumerable:!0,get:function(){return _.visitInParallel}}),Object.defineProperty(n,"visitWithTypeInfo",{enumerable:!0,get:function(){return _.visitWithTypeInfo}}),Object.defineProperty(n,"getVisitFn",{enumerable:!0,get:function(){return _.getVisitFn}}),Object.defineProperty(n,"BREAK",{enumerable:!0,get:function(){return _.BREAK}}),Object.defineProperty(n,"isDefinitionNode",{enumerable:!0,get:function(){return D.isDefinitionNode}}),Object.defineProperty(n,"isExecutableDefinitionNode",{enumerable:!0,get:function(){return D.isExecutableDefinitionNode}}),Object.defineProperty(n,"isSelectionNode",{enumerable:!0,get:function(){return D.isSelectionNode}}),Object.defineProperty(n,"isValueNode",{enumerable:!0,get:function(){return D.isValueNode}}),Object.defineProperty(n,"isTypeNode",{enumerable:!0,get:function(){return D.isTypeNode}}),Object.defineProperty(n,"isTypeSystemDefinitionNode",{enumerable:!0,get:function(){return D.isTypeSystemDefinitionNode}}),Object.defineProperty(n,"isTypeDefinitionNode",{enumerable:!0,get:function(){return D.isTypeDefinitionNode}}),Object.defineProperty(n,"isTypeSystemExtensionNode",{enumerable:!0,get:function(){return D.isTypeSystemExtensionNode}}),Object.defineProperty(n,"isTypeExtensionNode",{enumerable:!0,get:function(){return D.isTypeExtensionNode}}),Object.defineProperty(n,"DirectiveLocation",{enumerable:!0,get:function(){return k.DirectiveLocation}})}));r(x);var K=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.locatedError=function(e,n,t){if(e&&Array.isArray(e.path))return e;return new v.GraphQLError(e&&e.message,e&&e.nodes||n,e&&e.source,e&&e.positions,t,e)}}));r(K);K.locatedError;var A=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.formatError=function(e){e||(0,i.default)(0,"Received null or undefined error.");var n=e.message||"An unknown error occurred.",t=e.locations,r=e.path,o=e.extensions;return o?{message:n,locations:t,path:r,extensions:o}:{message:n,locations:t,path:r}};var t,i=(t=a)&&t.__esModule?t:{default:t}}));r(A);A.formatError;var b=o((function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"GraphQLError",{enumerable:!0,get:function(){return v.GraphQLError}}),Object.defineProperty(n,"printError",{enumerable:!0,get:function(){return v.printError}}),Object.defineProperty(n,"syntaxError",{enumerable:!0,get:function(){return E.syntaxError}}),Object.defineProperty(n,"locatedError",{enumerable:!0,get:function(){return K.locatedError}}),Object.defineProperty(n,"formatError",{enumerable:!0,get:function(){return A.formatError}})}));r(b);var S={parsers:{graphql:{parse:function(e){var i=x;try{var r=function(e,n){var t={allowLegacySDLImplementsInterfaces:!1,experimentalFragmentVariables:!0};try{return e(n,t)}catch(i){return t.allowLegacySDLImplementsInterfaces=!0,e(n,t)}}(i.parse,e);return r.comments=function(e){for(var n=[],t=e.loc.startToken.next;"<EOF>"!==t.kind;)"Comment"===t.kind&&(Object.assign(t,{column:t.column-1}),n.push(t)),t=t.next;return n}(r),function e(t){if(t&&"object"===n(t))for(var i in delete t.startToken,delete t.endToken,delete t.prev,delete t.next,t)e(t[i]);return t}(r),r}catch(e){throw e instanceof b.GraphQLError?t(e.message,{start:{line:e.locations[0].line,column:e.locations[0].column}}):e}},astFormat:"graphql",hasPragma:i,locStart:function(e){return"number"==typeof e.start?e.start:e.loc&&e.loc.start},locEnd:function(e){return"number"==typeof e.end?e.end:e.loc&&e.loc.end}}}},g=S.parsers;e.default=S,e.parsers=g,Object.defineProperty(e,"__esModule",{value:!0})}));
diff --git a/node_modules/prettier/parser-html.js b/node_modules/prettier/parser-html.js
new file mode 100644
index 0000000..4973c2c
--- /dev/null
+++ b/node_modules/prettier/parser-html.js
@@ -0,0 +1,113 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(((e=e||self).prettierPlugins=e.prettierPlugins||{},e.prettierPlugins.html={}))}(this,(function(e){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function i(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),e}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&s(e,t)}function o(e){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function s(e,t){return(s=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function l(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function c(e,t,r){return(c="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=o(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(r):i.value}})(e,t,r||e)}function u(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var r=[],n=!0,i=!1,a=void 0;try{for(var o,s=e[Symbol.iterator]();!(n=(o=s.next()).done)&&(r.push(o.value),!t||r.length!==t);n=!0);}catch(e){i=!0,a=e}finally{try{n||null==s.return||s.return()}finally{if(i)throw a}}return r}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var p=/[|\\{}()[\]^$+*?.]/g,h=function(e){if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(p,"\\$&")},d={"---":"yaml","+++":"toml"};var f=function(e){var t=Object.keys(d).map(h).join("|"),r=e.match(new RegExp("^(".concat(t,")[^\\n\\S]*\\n(?:([\\s\\S]*?)\\n)?\\1[^\\n\\S]*(\\n|$)")));if(null===r)return{frontMatter:null,content:e};var n=r[0].replace(/\n$/,""),i=r[1],a=r[2];return{frontMatter:{type:d[i],value:a,raw:n},content:r[0].replace(/[^\n]/g," ")+e.slice(r[0].length)}},m={area:"none",base:"none",basefont:"none",datalist:"none",head:"none",link:"none",meta:"none",noembed:"none",noframes:"none",param:"none",rp:"none",script:"block",source:"block",style:"none",template:"inline",track:"block",title:"none",html:"block",body:"block",address:"block",blockquote:"block",center:"block",div:"block",figure:"block",figcaption:"block",footer:"block",form:"block",header:"block",hr:"block",legend:"block",listing:"block",main:"block",p:"block",plaintext:"block",pre:"block",xmp:"block",slot:"contents",ruby:"ruby",rt:"ruby-text",article:"block",aside:"block",h1:"block",h2:"block",h3:"block",h4:"block",h5:"block",h6:"block",hgroup:"block",nav:"block",section:"block",dir:"block",dd:"block",dl:"block",dt:"block",ol:"block",ul:"block",li:"list-item",table:"table",caption:"table-caption",colgroup:"table-column-group",col:"table-column",thead:"table-header-group",tbody:"table-row-group",tfoot:"table-footer-group",tr:"table-row",td:"table-cell",th:"table-cell",fieldset:"block",button:"inline-block",video:"inline-block",audio:"inline-block"},g="inline",v={listing:"pre",plaintext:"pre",pre:"pre",xmp:"pre",nobr:"nowrap",table:"initial",textarea:"pre-wrap"},y="normal",_=Object.freeze({__proto__:null,default:["a","abbr","acronym","address","applet","area","article","aside","audio","b","base","basefont","bdi","bdo","bgsound","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","command","content","data","datalist","dd","del","details","dfn","dialog","dir","div","dl","dt","element","em","embed","fieldset","figcaption","figure","font","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","image","img","input","ins","isindex","kbd","keygen","label","legend","li","link","listing","main","map","mark","marquee","math","menu","menuitem","meta","meter","multicol","nav","nextid","nobr","noembed","noframes","noscript","object","ol","optgroup","option","output","p","param","picture","plaintext","pre","progress","q","rb","rbc","rp","rt","rtc","ruby","s","samp","script","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","tt","u","ul","var","video","wbr","xmp"]}),T=["accesskey","charset","coords","download","href","hreflang","name","ping","referrerpolicy","rel","rev","shape","tabindex","target","type"],b=["title"],S=["align","alt","archive","code","codebase","height","hspace","name","object","vspace","width"],C=["accesskey","alt","coords","download","href","hreflang","nohref","ping","referrerpolicy","rel","shape","tabindex","target","type"],E=["autoplay","controls","crossorigin","loop","muted","preload","src"],k=["href","target"],A=["color","face","size"],w=["dir"],N=["cite"],x=["alink","background","bgcolor","link","text","vlink"],P=["clear"],D=["accesskey","autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","tabindex","type","value"],O=["height","width"],L=["align"],q=["align","char","charoff","span","valign","width"],R=["align","char","charoff","span","valign","width"],$=["value"],I=["cite","datetime"],M=["open"],B=["title"],U=["open"],F=["compact"],V=["align"],j=["compact"],G=["height","src","type","width"],H=["disabled","form","name"],X=["color","face","size"],z=["accept","accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],W=["frameborder","longdesc","marginheight","marginwidth","name","noresize","scrolling","src"],Q=["cols","rows"],J=["align"],K=["align"],Y=["align"],Z=["align"],ee=["align"],te=["align"],re=["profile"],ne=["align","noshade","size","width"],ie=["manifest","version"],ae=["align","allow","allowfullscreen","allowpaymentrequest","allowusermedia","frameborder","height","longdesc","marginheight","marginwidth","name","referrerpolicy","sandbox","scrolling","src","srcdoc","width"],oe=["align","alt","border","crossorigin","decoding","height","hspace","ismap","longdesc","name","referrerpolicy","sizes","src","srcset","usemap","vspace","width"],se=["accept","accesskey","align","alt","autocomplete","autofocus","checked","dirname","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","ismap","list","max","maxlength","min","minlength","multiple","name","pattern","placeholder","readonly","required","size","src","step","tabindex","title","type","usemap","value","width"],le=["cite","datetime"],ce=["prompt"],ue=["accesskey","for","form"],pe=["accesskey","align"],he=["type","value"],de=["as","charset","color","crossorigin","href","hreflang","imagesizes","imagesrcset","integrity","media","nonce","referrerpolicy","rel","rev","sizes","target","title","type"],fe=["name"],me=["compact"],ge=["charset","content","http-equiv","name","scheme"],ve=["high","low","max","min","optimum","value"],ye=["align","archive","border","classid","codebase","codetype","data","declare","form","height","hspace","name","standby","tabindex","type","typemustmatch","usemap","vspace","width"],_e=["compact","reversed","start","type"],Te=["disabled","label"],be=["disabled","label","selected","value"],Se=["for","form","name"],Ce=["align"],Ee=["name","type","value","valuetype"],ke=["width"],Ae=["max","value"],we=["cite"],Ne=["async","charset","crossorigin","defer","integrity","language","nomodule","nonce","referrerpolicy","src","type"],xe=["autocomplete","autofocus","disabled","form","multiple","name","required","size","tabindex"],Pe=["name"],De=["media","sizes","src","srcset","type"],Oe=["media","nonce","title","type"],Le=["align","bgcolor","border","cellpadding","cellspacing","frame","rules","summary","width"],qe=["align","char","charoff","valign"],Re=["abbr","align","axis","bgcolor","char","charoff","colspan","headers","height","nowrap","rowspan","scope","valign","width"],$e=["accesskey","autocomplete","autofocus","cols","dirname","disabled","form","maxlength","minlength","name","placeholder","readonly","required","rows","tabindex","wrap"],Ie=["align","char","charoff","valign"],Me=["abbr","align","axis","bgcolor","char","charoff","colspan","headers","height","nowrap","rowspan","scope","valign","width"],Be=["align","char","charoff","valign"],Ue=["datetime"],Fe=["align","bgcolor","char","charoff","valign"],Ve=["default","kind","label","src","srclang"],je=["compact","type"],Ge=["autoplay","controls","crossorigin","height","loop","muted","playsinline","poster","preload","src","width"],He={"*":["accesskey","autocapitalize","autofocus","class","contenteditable","dir","draggable","enterkeyhint","hidden","id","inputmode","is","itemid","itemprop","itemref","itemscope","itemtype","lang","nonce","slot","spellcheck","style","tabindex","title","translate"],a:T,abbr:b,applet:S,area:C,audio:E,base:k,basefont:A,bdo:w,blockquote:N,body:x,br:P,button:D,canvas:O,caption:L,col:q,colgroup:R,data:$,del:I,details:M,dfn:B,dialog:U,dir:F,div:V,dl:j,embed:G,fieldset:H,font:X,form:z,frame:W,frameset:Q,h1:J,h2:K,h3:Y,h4:Z,h5:ee,h6:te,head:re,hr:ne,html:ie,iframe:ae,img:oe,input:se,ins:le,isindex:ce,label:ue,legend:pe,li:he,link:de,map:fe,menu:me,meta:ge,meter:ve,object:ye,ol:_e,optgroup:Te,option:be,output:Se,p:Ce,param:Ee,pre:ke,progress:Ae,q:we,script:Ne,select:xe,slot:Pe,source:De,style:Oe,table:Le,tbody:qe,td:Re,textarea:$e,tfoot:Ie,th:Me,thead:Be,time:Ue,tr:Fe,track:Ve,ul:je,video:Ge},Xe=Object.freeze({__proto__:null,a:T,abbr:b,applet:S,area:C,audio:E,base:k,basefont:A,bdo:w,blockquote:N,body:x,br:P,button:D,canvas:O,caption:L,col:q,colgroup:R,data:$,del:I,details:M,dfn:B,dialog:U,dir:F,div:V,dl:j,embed:G,fieldset:H,font:X,form:z,frame:W,frameset:Q,h1:J,h2:K,h3:Y,h4:Z,h5:ee,h6:te,head:re,hr:ne,html:ie,iframe:ae,img:oe,input:se,ins:le,isindex:ce,label:ue,legend:pe,li:he,link:de,map:fe,menu:me,meta:ge,meter:ve,object:ye,ol:_e,optgroup:Te,option:be,output:Se,p:Ce,param:Ee,pre:ke,progress:Ae,q:we,script:Ne,select:xe,slot:Pe,source:De,style:Oe,table:Le,tbody:qe,td:Re,textarea:$e,tfoot:Ie,th:Me,thead:Be,time:Ue,tr:Fe,track:Ve,ul:je,video:Ge,default:He});function ze(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function We(e,t){return e(t={exports:{}},t.exports),t.exports}function Qe(e){return e&&e.default||e}var Je=Qe(_),Ke=Qe(Xe),Ye=m,Ze=g,et=v,tt=y,rt=nt(Je);function nt(e){var t=Object.create(null),r=!0,n=!1,i=void 0;try{for(var a,o=e[Symbol.iterator]();!(r=(a=o.next()).done);r=!0){t[a.value]=!0}}catch(e){n=!0,i=e}finally{try{r||null==o.return||o.return()}finally{if(n)throw i}}return t}function it(e,t){return!("element"!==e.type||"template"!==e.fullName||!e.attrMap.lang||"html"===e.attrMap.lang)||(!("ieConditionalComment"!==e.type||!e.lastChild||e.lastChild.isSelfClosing||e.lastChild.endSourceSpan)||("ieConditionalComment"===e.type&&!e.complete||("vue"===t.parser&&"element"===e.type&&"root"===e.parent.type&&-1===["template","style","script","html"].indexOf(e.fullName)||!(!vt(e)||!e.children.some((function(e){return"text"!==e.type&&"interpolation"!==e.type}))))))}function at(e){return"attribute"!==e.type&&!ot(e)&&(!!e.parent&&("number"==typeof e.index&&0!==e.index&&function(e){return"comment"===e.type&&"prettier-ignore"===e.value.trim()}(e.parent.children[e.index-1])))}function ot(e){return"text"===e.type||"comment"===e.type}function st(e){return"element"===e.type&&("script"===e.fullName||"style"===e.fullName||"svg:style"===e.fullName)}function lt(e){return"yaml"===e.type||"toml"===e.type}function ct(e){return yt(e).startsWith("pre")}function ut(e){return"element"===e.type&&0!==e.children.length&&(-1!==["html","head","ul","ol","select"].indexOf(e.name)||e.cssDisplay.startsWith("table")&&"table-cell"!==e.cssDisplay)}function pt(e){return mt(e)||"element"===e.type&&"br"===e.fullName||ht(e)}function ht(e){return dt(e)&&ft(e)}function dt(e){return e.hasLeadingSpaces&&(e.prev?e.prev.sourceSpan.end.line<e.sourceSpan.start.line:"root"===e.parent.type||e.parent.startSourceSpan.end.line<e.sourceSpan.start.line)}function ft(e){return e.hasTrailingSpaces&&(e.next?e.next.sourceSpan.start.line>e.sourceSpan.end.line:"root"===e.parent.type||e.parent.endSourceSpan.start.line>e.sourceSpan.end.line)}function mt(e){switch(e.type){case"ieConditionalComment":case"comment":case"directive":return!0;case"element":return-1!==["script","select"].indexOf(e.name)}return!1}function gt(e){return"block"===e||"list-item"===e||e.startsWith("table")}function vt(e){return yt(e).startsWith("pre")}function yt(e){return"element"===e.type&&!e.namespace&&et[e.name]||tt}var _t={HTML_ELEMENT_ATTRIBUTES:function(e,t){for(var r=Object.create(null),n=0,i=Object.keys(e);n<i.length;n++){var a=i[n];r[a]=t(e[a],a)}return r}(Ke,nt),HTML_TAGS:rt,canHaveInterpolation:function(e){return e.children&&!st(e)},countChars:function(e,t){for(var r=0,n=0;n<e.length;n++)e[n]===t&&r++;return r},countParents:function(e){for(var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){return!0},n=0,i=e.stack.length-1;i>=0;i--){var a=e.stack[i];a&&"object"===t(a)&&!Array.isArray(a)&&r(a)&&n++}return n},dedentString:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e){var t=1/0,r=!0,n=!1,i=void 0;try{for(var a,o=e.split("\n")[Symbol.iterator]();!(r=(a=o.next()).done);r=!0){var s=a.value;if(0!==s.length){if(/\S/.test(s[0]))return 0;var l=s.match(/^\s*/)[0].length;s.length!==l&&l<t&&(t=l)}}}catch(e){n=!0,i=e}finally{try{r||null==o.return||o.return()}finally{if(n)throw i}}return t===1/0?0:t}(e);return 0===t?e:e.split("\n").map((function(e){return e.slice(t)})).join("\n")},forceBreakChildren:ut,forceBreakContent:function(e){return ut(e)||"element"===e.type&&0!==e.children.length&&(-1!==["body","script","style"].indexOf(e.name)||e.children.some((function(e){return function(e){return e.children&&e.children.some((function(e){return"text"!==e.type}))}(e)})))||e.firstChild&&e.firstChild===e.lastChild&&dt(e.firstChild)&&(!e.lastChild.isTrailingSpaceSensitive||ft(e.lastChild))},forceNextEmptyLine:function(e){return lt(e)||e.next&&e.sourceSpan.end.line+1<e.next.sourceSpan.start.line},getLastDescendant:function e(t){return t.lastChild?e(t.lastChild):t},getNodeCssStyleDisplay:function(e,t){if(e.prev&&"comment"===e.prev.type){var r=e.prev.value.match(/^\s*display:\s*([a-z]+)\s*$/);if(r)return r[1]}var n=!1;if("element"===e.type&&"svg"===e.namespace){if(!function(e,t){for(var r=e;r;){if(t(r))return!0;r=r.parent}return!1}(e,(function(e){return"svg:foreignObject"===e.fullName})))return"svg"===e.name?"inline-block":"block";n=!0}switch(t.htmlWhitespaceSensitivity){case"strict":return"inline";case"ignore":return"block";default:return"element"===e.type&&(!e.namespace||n)&&Ye[e.name]||Ze}},getNodeCssStyleWhiteSpace:yt,getPrettierIgnoreAttributeCommentData:function(e){var t=e.trim().match(/^prettier-ignore-attribute(?:\s+([^]+))?$/);return!!t&&(!t[1]||t[1].split(/\s+/))},hasPrettierIgnore:at,identity:function(e){return e},inferScriptParser:function(e){if("script"===e.name&&!e.attrMap.src){if(!e.attrMap.lang&&!e.attrMap.type||"module"===e.attrMap.type||"text/javascript"===e.attrMap.type||"text/babel"===e.attrMap.type||"application/javascript"===e.attrMap.type)return"babel";if("application/x-typescript"===e.attrMap.type||"ts"===e.attrMap.lang||"tsx"===e.attrMap.lang)return"typescript";if("text/markdown"===e.attrMap.type)return"markdown";if(e.attrMap.type.endsWith("json")||e.attrMap.type.endsWith("importmap"))return"json"}if("style"===e.name){if(!e.attrMap.lang||"postcss"===e.attrMap.lang||"css"===e.attrMap.lang)return"css";if("scss"===e.attrMap.lang)return"scss";if("less"===e.attrMap.lang)return"less"}return null},isDanglingSpaceSensitiveNode:function(e){return!gt(t=e.cssDisplay)&&"inline-block"!==t&&!st(e);var t},isFrontMatterNode:lt,isIndentationSensitiveNode:ct,isLeadingSpaceSensitiveNode:function(e){var t=function(){if(lt(e))return!1;if(("text"===e.type||"interpolation"===e.type)&&e.prev&&("text"===e.prev.type||"interpolation"===e.prev.type))return!0;if(!e.parent||"none"===e.parent.cssDisplay)return!1;if(vt(e.parent))return!0;if(!e.prev&&("root"===e.parent.type||st(e.parent)||(t=e.parent.cssDisplay,gt(t)||"inline-block"===t)))return!1;var t;if(e.prev&&!function(e){return!gt(e)}(e.prev.cssDisplay))return!1;return!0}();return t&&!e.prev&&e.parent&&e.parent.tagDefinition&&e.parent.tagDefinition.ignoreFirstLf?"interpolation"===e.type:t},isPreLikeNode:vt,isScriptLikeTag:st,isTextLikeNode:ot,isTrailingSpaceSensitiveNode:function(e){return!lt(e)&&(!("text"!==e.type&&"interpolation"!==e.type||!e.next||"text"!==e.next.type&&"interpolation"!==e.next.type)||!(!e.parent||"none"===e.parent.cssDisplay)&&(!!vt(e.parent)||!(!e.next&&("root"===e.parent.type||st(e.parent)||(t=e.parent.cssDisplay,gt(t)||"inline-block"===t)))&&!(e.next&&!function(e){return!gt(e)}(e.next.cssDisplay))));var t},isWhitespaceSensitiveNode:function(e){return st(e)||"interpolation"===e.type||ct(e)},normalizeParts:function(e){for(var t=[],r=e.slice();0!==r.length;){var n=r.shift();n&&("concat"!==n.type?0===t.length||"string"!=typeof t[t.length-1]||"string"!=typeof n?t.push(n):t.push(t.pop()+n):Array.prototype.unshift.apply(r,n.parts))}return t},preferHardlineAsLeadingSpaces:function(e){return mt(e)||e.prev&&pt(e.prev)||ht(e)},preferHardlineAsTrailingSpaces:pt,shouldNotPrintClosingTag:function(e,t){return!e.isSelfClosing&&!e.endSourceSpan&&(at(e)||it(e.parent,t))},shouldPreserveContent:it,unescapeQuoteEntities:function(e){return e.replace(/&apos;/g,"'").replace(/&quot;/g,'"')}};var Tt=function(e){return/^\s*<!--\s*@(format|prettier)\s*-->/.test(e)};var bt=function(e,t){var r=new SyntaxError(e+" ("+t.start.line+":"+t.start.column+")");return r.loc=t,r},St={attrs:!0,children:!0},Ct=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r(this,e);for(var n=0,i=Object.keys(t);n<i.length;n++){var a=i[n],o=t[a];a in St?this._setNodes(a,o):this[a]=o}}return i(e,[{key:"_setNodes",value:function(e,t){t!==this[e]&&(this[e]=kt(t,this),"attrs"===e&&At(this,{attrMap:this[e].reduce((function(e,t){return e[t.fullName]=t.value,e}),Object.create(null))}))}},{key:"map",value:function(t){var r=null;for(var n in St){var i=this[n];if(i){var a=Et(i,(function(e){return e.map(t)}));r!==i&&(r||(r=new e),r._setNodes(n,a))}}if(r){for(var o in this)o in St||(r[o]=this[o]);At(r,{index:this.index,siblings:this.siblings,prev:this.prev,next:this.next,parent:this.parent})}return t(r||this)}},{key:"clone",value:function(t){return new e(t?Object.assign({},this,t):this)}},{key:"firstChild",get:function(){return this.children&&0!==this.children.length?this.children[0]:null}},{key:"lastChild",get:function(){return this.children&&0!==this.children.length?this.children[this.children.length-1]:null}},{key:"rawName",get:function(){return this.hasExplicitNamespace?this.fullName:this.name}},{key:"fullName",get:function(){return this.namespace?this.namespace+":"+this.name:this.name}}]),e}();function Et(e,t){var r=e.map(t);return r.some((function(t,r){return t!==e[r]}))?r:e}function kt(e,t){for(var r=e.map((function(e){return e instanceof Ct?e.clone():new Ct(e)})),n=null,i=r[0],a=r[1]||null,o=0;o<r.length;o++)At(i,{index:o,siblings:r,prev:n,next:a,parent:t}),n=i,i=a,a=r[o+2]||null;return r}function At(e,t){var r=Object.keys(t).reduce((function(e,r){return e[r]={value:t[r],enumerable:!1},e}),{});Object.defineProperties(e,r)}var wt={Node:Ct},Nt=[[/^(\[if([^\]]*?)\]>)([\s\S]*?)<!\s*\[endif\]$/,function(e,t,r){var n=u(r,4),i=n[1],a=n[2],o=n[3],s="\x3c!--".length+i.length,l=e.sourceSpan.start.moveBy(s),c=l.moveBy(o.length),p=e.sourceSpan.constructor,h=u(function(){try{return[!0,t(o,l).children]}catch(e){return[!1,[{type:"text",value:o,sourceSpan:new p(l,c)}]]}}(),2),d=h[0],f=h[1];return{type:"ieConditionalComment",complete:d,children:f,condition:a.trim().replace(/\s+/g," "),sourceSpan:e.sourceSpan,startSourceSpan:new p(e.sourceSpan.start,l),endSourceSpan:new p(c,e.sourceSpan.end)}}],[/^\[if([^\]]*?)\]><!$/,function(e,t,r){return{type:"ieConditionalStartComment",condition:u(r,2)[1].trim().replace(/\s+/g," "),sourceSpan:e.sourceSpan}}],[/^<!\s*\[endif\]$/,function(e){return{type:"ieConditionalEndComment",sourceSpan:e.sourceSpan}}]];var xt=function(e,t){if(e.value){var r,n=!0,i=!1,a=void 0;try{for(var o,s=Nt[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var l=u(o.value,2),c=l[0],p=l[1];if(r=e.value.match(c))return p(e,t,r)}}catch(e){i=!0,a=e}finally{try{n||null==s.return||s.return()}finally{if(i)throw a}}}return null},Pt=We((function(e,t){function r(e){if(":"!=e[0])return[null,e];var t=e.indexOf(":",1);if(-1==t)throw new Error('Unsupported format "'.concat(e,'" expecting ":namespace:name"'));return[e.slice(1,t),e.slice(t+1)]}
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.RAW_TEXT=0]="RAW_TEXT",e[e.ESCAPABLE_RAW_TEXT=1]="ESCAPABLE_RAW_TEXT",e[e.PARSABLE_DATA=2]="PARSABLE_DATA"}(t.TagContentType||(t.TagContentType={})),t.splitNsName=r,t.isNgContainer=function(e){return"ng-container"===r(e)[1]},t.isNgContent=function(e){return"ng-content"===r(e)[1]},t.isNgTemplate=function(e){return"ng-template"===r(e)[1]},t.getNsPrefix=function(e){return null===e?null:r(e)[0]},t.mergeNsAndName=function(e,t){return e?":".concat(e,":").concat(t):t},t.NAMED_ENTITIES={Aacute:"Á",aacute:"á",Abreve:"Ă",abreve:"ă",ac:"∾",acd:"∿",acE:"∾̳",Acirc:"Â",acirc:"â",acute:"´",Acy:"А",acy:"а",AElig:"Æ",aelig:"æ",af:"⁡",Afr:"𝔄",afr:"𝔞",Agrave:"À",agrave:"à",alefsym:"ℵ",aleph:"ℵ",Alpha:"Α",alpha:"α",Amacr:"Ā",amacr:"ā",amalg:"⨿",AMP:"&",amp:"&",And:"⩓",and:"∧",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",Aogon:"Ą",aogon:"ą",Aopf:"𝔸",aopf:"𝕒",ap:"≈",apacir:"⩯",apE:"⩰",ape:"≊",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",Aring:"Å",aring:"å",Ascr:"𝒜",ascr:"𝒶",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",Barwed:"⌆",barwed:"⌅",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",Bcy:"Б",bcy:"б",bdquo:"„",becaus:"∵",Because:"∵",because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",Beta:"Β",beta:"β",beth:"ℶ",between:"≬",Bfr:"𝔅",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bNot:"⫭",bnot:"⌐",Bopf:"𝔹",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxDL:"╗",boxDl:"╖",boxdL:"╕",boxdl:"┐",boxDR:"╔",boxDr:"╓",boxdR:"╒",boxdr:"┌",boxH:"═",boxh:"─",boxHD:"╦",boxHd:"╤",boxhD:"╥",boxhd:"┬",boxHU:"╩",boxHu:"╧",boxhU:"╨",boxhu:"┴",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxUL:"╝",boxUl:"╜",boxuL:"╛",boxul:"┘",boxUR:"╚",boxUr:"╙",boxuR:"╘",boxur:"└",boxV:"║",boxv:"│",boxVH:"╬",boxVh:"╫",boxvH:"╪",boxvh:"┼",boxVL:"╣",boxVl:"╢",boxvL:"╡",boxvl:"┤",boxVR:"╠",boxVr:"╟",boxvR:"╞",boxvr:"├",bprime:"‵",Breve:"˘",breve:"˘",brvbar:"¦",Bscr:"ℬ",bscr:"𝒷",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",Bumpeq:"≎",bumpeq:"≏",Cacute:"Ć",cacute:"ć",Cap:"⋒",cap:"∩",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",Ccaron:"Č",ccaron:"č",Ccedil:"Ç",ccedil:"ç",Ccirc:"Ĉ",ccirc:"ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",Cdot:"Ċ",cdot:"ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",CenterDot:"·",centerdot:"·",Cfr:"ℭ",cfr:"𝔠",CHcy:"Ч",chcy:"ч",check:"✓",checkmark:"✓",Chi:"Χ",chi:"χ",cir:"○",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cirE:"⧃",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",Colon:"∷",colon:":",Colone:"⩴",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",Conint:"∯",conint:"∮",ContourIntegral:"∮",Copf:"ℂ",copf:"𝕔",coprod:"∐",Coproduct:"∐",COPY:"©",copy:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",Cross:"⨯",cross:"✗",Cscr:"𝒞",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",Cup:"⋓",cup:"∪",cupbrcap:"⩈",CupCap:"≍",cupcap:"⩆",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",Dagger:"‡",dagger:"†",daleth:"ℸ",Darr:"↡",dArr:"⇓",darr:"↓",dash:"‐",Dashv:"⫤",dashv:"⊣",dbkarow:"⤏",dblac:"˝",Dcaron:"Ď",dcaron:"ď",Dcy:"Д",dcy:"д",DD:"ⅅ",dd:"ⅆ",ddagger:"‡",ddarr:"⇊",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",Delta:"Δ",delta:"δ",demptyv:"⦱",dfisht:"⥿",Dfr:"𝔇",dfr:"𝔡",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",Diamond:"⋄",diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",DJcy:"Ђ",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",Dopf:"𝔻",dopf:"𝕕",Dot:"¨",dot:"˙",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrow:"↓",Downarrow:"⇓",downarrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",Dscr:"𝒟",dscr:"𝒹",DScy:"Ѕ",dscy:"ѕ",dsol:"⧶",Dstrok:"Đ",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",DZcy:"Џ",dzcy:"џ",dzigrarr:"⟿",Eacute:"É",eacute:"é",easter:"⩮",Ecaron:"Ě",ecaron:"ě",ecir:"≖",Ecirc:"Ê",ecirc:"ê",ecolon:"≕",Ecy:"Э",ecy:"э",eDDot:"⩷",Edot:"Ė",eDot:"≑",edot:"ė",ee:"ⅇ",efDot:"≒",Efr:"𝔈",efr:"𝔢",eg:"⪚",Egrave:"È",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",Emacr:"Ē",emacr:"ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp:" ",emsp13:" ",emsp14:" ",ENG:"Ŋ",eng:"ŋ",ensp:" ",Eogon:"Ę",eogon:"ę",Eopf:"𝔼",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",Epsilon:"Ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",Escr:"ℰ",escr:"ℯ",esdot:"≐",Esim:"⩳",esim:"≂",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",ExponentialE:"ⅇ",exponentiale:"ⅇ",fallingdotseq:"≒",Fcy:"Ф",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",Ffr:"𝔉",ffr:"𝔣",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",Fopf:"𝔽",fopf:"𝕗",ForAll:"∀",forall:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",Fscr:"ℱ",fscr:"𝒻",gacute:"ǵ",Gamma:"Γ",gamma:"γ",Gammad:"Ϝ",gammad:"ϝ",gap:"⪆",Gbreve:"Ğ",gbreve:"ğ",Gcedil:"Ģ",Gcirc:"Ĝ",gcirc:"ĝ",Gcy:"Г",gcy:"г",Gdot:"Ġ",gdot:"ġ",gE:"≧",ge:"≥",gEl:"⪌",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",Gfr:"𝔊",gfr:"𝔤",Gg:"⋙",gg:"≫",ggg:"⋙",gimel:"ℷ",GJcy:"Ѓ",gjcy:"ѓ",gl:"≷",gla:"⪥",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gnE:"≩",gne:"⪈",gneq:"⪈",gneqq:"≩",gnsim:"⋧",Gopf:"𝔾",gopf:"𝕘",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",GT:">",Gt:"≫",gt:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",hArr:"⇔",harr:"↔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",Hfr:"ℌ",hfr:"𝔥",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",Hopf:"ℍ",hopf:"𝕙",horbar:"―",HorizontalLine:"─",Hscr:"ℋ",hscr:"𝒽",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"⁣",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",Ifr:"ℑ",ifr:"𝔦",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Im:"ℑ",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",Int:"∬",int:"∫",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",Iscr:"ℐ",iscr:"𝒾",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",Lang:"⟪",lang:"⟨",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",Larr:"↞",lArr:"⇐",larr:"←",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",lAtail:"⤛",latail:"⤙",late:"⪭",lates:"⪭︀",lBarr:"⤎",lbarr:"⤌",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",lE:"≦",le:"≤",LeftAngleBracket:"⟨",LeftArrow:"←",Leftarrow:"⇐",leftarrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",Ll:"⋘",ll:"≪",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lnE:"≨",lne:"⪇",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftarrow:"⟵",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longleftrightarrow:"⟷",longmapsto:"⟼",LongRightArrow:"⟶",Longrightarrow:"⟹",longrightarrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",Lscr:"ℒ",lscr:"𝓁",Lsh:"↰",lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",LT:"<",Lt:"≪",lt:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",Mscr:"ℳ",mscr:"𝓂",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",ne:"≠",nearhk:"⤤",neArr:"⇗",nearr:"↗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nhArr:"⇎",nharr:"↮",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlArr:"⇍",nlarr:"↚",nldr:"‥",nlE:"≦̸",nle:"≰",nLeftarrow:"⇍",nleftarrow:"↚",nLeftrightarrow:"⇎",nleftrightarrow:"↮",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",Nopf:"ℕ",nopf:"𝕟",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrArr:"⇏",nrarr:"↛",nrarrc:"⤳̸",nrarrw:"↝̸",nRightarrow:"⇏",nrightarrow:"↛",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nVDash:"⊯",nVdash:"⊮",nvDash:"⊭",nvdash:"⊬",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwArr:"⇖",nwarr:"↖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",ocir:"⊚",Ocirc:"Ô",ocirc:"ô",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",Or:"⩔",or:"∨",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",Otimes:"⨷",otimes:"⊗",otimesas:"⨶",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",Popf:"ℙ",popf:"𝕡",pound:"£",Pr:"⪻",pr:"≺",prap:"⪷",prcue:"≼",prE:"⪳",pre:"⪯",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",Prime:"″",prime:"′",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",Qopf:"ℚ",qopf:"𝕢",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",QUOT:'"',quot:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",Rang:"⟫",rang:"⟩",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",Rarr:"↠",rArr:"⇒",rarr:"→",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",rAtail:"⤜",ratail:"⤚",ratio:"∶",rationals:"ℚ",RBarr:"⤐",rBarr:"⤏",rbarr:"⤍",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",REG:"®",reg:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",Rfr:"ℜ",rfr:"𝔯",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrow:"→",Rightarrow:"⇒",rightarrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",Ropf:"ℝ",ropf:"𝕣",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",Rscr:"ℛ",rscr:"𝓇",Rsh:"↱",rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",Sc:"⪼",sc:"≻",scap:"⪸",Scaron:"Š",scaron:"š",sccue:"≽",scE:"⪴",sce:"⪰",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",seArr:"⇘",searr:"↘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",sol:"/",solb:"⧄",solbar:"⌿",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",Square:"□",square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",Sub:"⋐",sub:"⊂",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",Subset:"⋐",subset:"⊂",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",Sum:"∑",sum:"∑",sung:"♪",Sup:"⋑",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",Supset:"⋑",supset:"⊃",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swArr:"⇙",swarr:"↙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",Therefore:"∴",therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",Tilde:"∼",tilde:"˜",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",TRADE:"™",trade:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",Uarr:"↟",uArr:"⇑",uarr:"↑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrow:"↑",Uparrow:"⇑",uparrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",UpDownArrow:"↕",Updownarrow:"⇕",updownarrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",Upsi:"ϒ",upsi:"υ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",vArr:"⇕",varr:"↕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",Vbar:"⫫",vBar:"⫨",vBarv:"⫩",Vcy:"В",vcy:"в",VDash:"⊫",Vdash:"⊩",vDash:"⊨",vdash:"⊢",Vdashl:"⫦",Vee:"⋁",vee:"∨",veebar:"⊻",veeeq:"≚",vellip:"⋮",Verbar:"‖",verbar:"|",Vert:"‖",vert:"|",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",Wedge:"⋀",wedge:"∧",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xhArr:"⟺",xharr:"⟷",Xi:"Ξ",xi:"ξ",xlArr:"⟸",xlarr:"⟵",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrArr:"⟹",xrarr:"⟶",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",Yuml:"Ÿ",yuml:"ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"​",Zeta:"Ζ",zeta:"ζ",Zfr:"ℨ",zfr:"𝔷",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",Zopf:"ℤ",zopf:"𝕫",Zscr:"𝒵",zscr:"𝓏",zwj:"‍",zwnj:"‌"},t.NGSP_UNICODE="",t.NAMED_ENTITIES.ngsp=t.NGSP_UNICODE}));ze(Pt);Pt.TagContentType,Pt.splitNsName,Pt.isNgContainer,Pt.isNgContent,Pt.isNgTemplate,Pt.getNsPrefix,Pt.mergeNsAndName,Pt.NAMED_ENTITIES,Pt.NGSP_UNICODE;var Dt=We((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0});var n,a,o=function(){function e(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=n.closedByChildren,a=n.requiredParents,o=n.implicitNamespacePrefix,s=n.contentType,l=void 0===s?Pt.TagContentType.PARSABLE_DATA:s,c=n.closedByParent,u=void 0!==c&&c,p=n.isVoid,h=void 0!==p&&p,d=n.ignoreFirstLf,f=void 0!==d&&d;r(this,e),this.closedByChildren={},this.closedByParent=!1,this.canSelfClose=!1,i&&i.length>0&&i.forEach((function(e){return t.closedByChildren[e]=!0})),this.isVoid=h,this.closedByParent=u||h,a&&a.length>0&&(this.requiredParents={},this.parentToAdd=a[0],a.forEach((function(e){return t.requiredParents[e]=!0}))),this.implicitNamespacePrefix=o||null,this.contentType=l,this.ignoreFirstLf=f}return i(e,[{key:"requireExtraParent",value:function(e){if(!this.requiredParents)return!1;if(!e)return!0;var t=e.toLowerCase();return!("template"===t||"ng-template"===e)&&1!=this.requiredParents[t]}},{key:"isClosedByChild",value:function(e){return this.isVoid||e.toLowerCase()in this.closedByChildren}}]),e}();t.HtmlTagDefinition=o,t.getHtmlTagDefinition=function(e){return a||(n=new o,a={base:new o({isVoid:!0}),meta:new o({isVoid:!0}),area:new o({isVoid:!0}),embed:new o({isVoid:!0}),link:new o({isVoid:!0}),img:new o({isVoid:!0}),input:new o({isVoid:!0}),param:new o({isVoid:!0}),hr:new o({isVoid:!0}),br:new o({isVoid:!0}),source:new o({isVoid:!0}),track:new o({isVoid:!0}),wbr:new o({isVoid:!0}),p:new o({closedByChildren:["address","article","aside","blockquote","div","dl","fieldset","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","main","nav","ol","p","pre","section","table","ul"],closedByParent:!0}),thead:new o({closedByChildren:["tbody","tfoot"]}),tbody:new o({closedByChildren:["tbody","tfoot"],closedByParent:!0}),tfoot:new o({closedByChildren:["tbody"],closedByParent:!0}),tr:new o({closedByChildren:["tr"],requiredParents:["tbody","tfoot","thead"],closedByParent:!0}),td:new o({closedByChildren:["td","th"],closedByParent:!0}),th:new o({closedByChildren:["td","th"],closedByParent:!0}),col:new o({requiredParents:["colgroup"],isVoid:!0}),svg:new o({implicitNamespacePrefix:"svg"}),math:new o({implicitNamespacePrefix:"math"}),li:new o({closedByChildren:["li"],closedByParent:!0}),dt:new o({closedByChildren:["dt","dd"]}),dd:new o({closedByChildren:["dt","dd"],closedByParent:!0}),rb:new o({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rt:new o({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rtc:new o({closedByChildren:["rb","rtc","rp"],closedByParent:!0}),rp:new o({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),optgroup:new o({closedByChildren:["optgroup"],closedByParent:!0}),option:new o({closedByChildren:["option","optgroup"],closedByParent:!0}),pre:new o({ignoreFirstLf:!0}),listing:new o({ignoreFirstLf:!0}),style:new o({contentType:Pt.TagContentType.RAW_TEXT}),script:new o({contentType:Pt.TagContentType.RAW_TEXT}),title:new o({contentType:Pt.TagContentType.ESCAPABLE_RAW_TEXT}),textarea:new o({contentType:Pt.TagContentType.ESCAPABLE_RAW_TEXT,ignoreFirstLf:!0})}),a[e]||n}}));ze(Dt);Dt.HtmlTagDefinition,Dt.getHtmlTagDefinition;var Ot=We((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0}),t.assertArrayOfStrings=function(e,t){if(null!=t){if(!Array.isArray(t))throw new Error("Expected '".concat(e,"' to be an array of strings."));for(var r=0;r<t.length;r+=1)if("string"!=typeof t[r])throw new Error("Expected '".concat(e,"' to be an array of strings."))}};var r=[/^\s*$/,/[<>]/,/^[{}]$/,/&(#|[a-z])/i,/^\/\//];t.assertInterpolationSymbols=function(e,t){if(!(null==t||Array.isArray(t)&&2==t.length))throw new Error("Expected '".concat(e,"' to be an array, [start, end]."));if(null!=t){var n=t[0],i=t[1];r.forEach((function(e){if(e.test(n)||e.test(i))throw new Error("['".concat(n,"', '").concat(i,"'] contains unusable interpolation symbol."))}))}}}));ze(Ot);Ot.assertArrayOfStrings,Ot.assertInterpolationSymbols;var Lt=We((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(t,n){r(this,e),this.start=t,this.end=n}return i(e,null,[{key:"fromArray",value:function(r){return r?(Ot.assertInterpolationSymbols("interpolation",r),new e(r[0],r[1])):t.DEFAULT_INTERPOLATION_CONFIG}}]),e}();t.InterpolationConfig=n,t.DEFAULT_INTERPOLATION_CONFIG=new n("{{","}}")}));ze(Lt);Lt.InterpolationConfig,Lt.DEFAULT_INTERPOLATION_CONFIG;var qt=We((function(e,t){function r(e){return t.$0<=e&&e<=t.$9}
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0}),t.$EOF=0,t.$TAB=9,t.$LF=10,t.$VTAB=11,t.$FF=12,t.$CR=13,t.$SPACE=32,t.$BANG=33,t.$DQ=34,t.$HASH=35,t.$$=36,t.$PERCENT=37,t.$AMPERSAND=38,t.$SQ=39,t.$LPAREN=40,t.$RPAREN=41,t.$STAR=42,t.$PLUS=43,t.$COMMA=44,t.$MINUS=45,t.$PERIOD=46,t.$SLASH=47,t.$COLON=58,t.$SEMICOLON=59,t.$LT=60,t.$EQ=61,t.$GT=62,t.$QUESTION=63,t.$0=48,t.$9=57,t.$A=65,t.$E=69,t.$F=70,t.$X=88,t.$Z=90,t.$LBRACKET=91,t.$BACKSLASH=92,t.$RBRACKET=93,t.$CARET=94,t.$_=95,t.$a=97,t.$e=101,t.$f=102,t.$n=110,t.$r=114,t.$t=116,t.$u=117,t.$v=118,t.$x=120,t.$z=122,t.$LBRACE=123,t.$BAR=124,t.$RBRACE=125,t.$NBSP=160,t.$PIPE=124,t.$TILDA=126,t.$AT=64,t.$BT=96,t.isWhitespace=function(e){return e>=t.$TAB&&e<=t.$SPACE||e==t.$NBSP},t.isDigit=r,t.isAsciiLetter=function(e){return e>=t.$a&&e<=t.$z||e>=t.$A&&e<=t.$Z},t.isAsciiHexDigit=function(e){return e>=t.$a&&e<=t.$f||e>=t.$A&&e<=t.$F||r(e)}}));ze(qt);qt.$EOF,qt.$TAB,qt.$LF,qt.$VTAB,qt.$FF,qt.$CR,qt.$SPACE,qt.$BANG,qt.$DQ,qt.$HASH,qt.$$,qt.$PERCENT,qt.$AMPERSAND,qt.$SQ,qt.$LPAREN,qt.$RPAREN,qt.$STAR,qt.$PLUS,qt.$COMMA,qt.$MINUS,qt.$PERIOD,qt.$SLASH,qt.$COLON,qt.$SEMICOLON,qt.$LT,qt.$EQ,qt.$GT,qt.$QUESTION,qt.$0,qt.$9,qt.$A,qt.$E,qt.$F,qt.$X,qt.$Z,qt.$LBRACKET,qt.$BACKSLASH,qt.$RBRACKET,qt.$CARET,qt.$_,qt.$a,qt.$e,qt.$f,qt.$n,qt.$r,qt.$t,qt.$u,qt.$v,qt.$x,qt.$z,qt.$LBRACE,qt.$BAR,qt.$RBRACE,qt.$NBSP,qt.$PIPE,qt.$TILDA,qt.$AT,qt.$BT,qt.isWhitespace,qt.isDigit,qt.isAsciiLetter,qt.isAsciiHexDigit;var Rt=We((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(t,n,i){r(this,e),this.filePath=t,this.name=n,this.members=i}return i(e,[{key:"assertNoMembers",value:function(){if(this.members.length)throw new Error("Illegal state: symbol without members expected, but got ".concat(JSON.stringify(this),"."))}}]),e}();t.StaticSymbol=n;var a=function(){function e(){r(this,e),this.cache=new Map}return i(e,[{key:"get",value:function(e,t,r){var i=(r=r||[]).length?".".concat(r.join(".")):"",a='"'.concat(e,'".').concat(t).concat(i),o=this.cache.get(a);return o||(o=new n(e,t,r),this.cache.set(a,o)),o}}]),e}();t.StaticSymbolCache=a}));ze(Rt);Rt.StaticSymbol,Rt.StaticSymbolCache;var $t=We((function(e,n){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(n,"__esModule",{value:!0});var a=/-+([a-z0-9])/g;function o(e,t,r){var n=e.indexOf(t);return-1==n?r:[e.slice(0,n).trim(),e.slice(n+1).trim()]}function s(e,r,n){return Array.isArray(e)?r.visitArray(e,n):"object"===t(i=e)&&null!==i&&Object.getPrototypeOf(i)===p?r.visitStringMap(e,n):null==e||"string"==typeof e||"number"==typeof e||"boolean"==typeof e?r.visitPrimitive(e,n):r.visitOther(e,n);var i}n.dashCaseToCamelCase=function(e){return e.replace(a,(function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return t[1].toUpperCase()}))},n.splitAtColon=function(e,t){return o(e,":",t)},n.splitAtPeriod=function(e,t){return o(e,".",t)},n.visitValue=s,n.isDefined=function(e){return null!=e},n.noUndefined=function(e){return void 0===e?null:e};var l=function(){function e(){r(this,e)}return i(e,[{key:"visitArray",value:function(e,t){var r=this;return e.map((function(e){return s(e,r,t)}))}},{key:"visitStringMap",value:function(e,t){var r=this,n={};return Object.keys(e).forEach((function(i){n[i]=s(e[i],r,t)})),n}},{key:"visitPrimitive",value:function(e,t){return e}},{key:"visitOther",value:function(e,t){return e}}]),e}();n.ValueTransformer=l,n.SyncAsync={assertSync:function(e){if(h(e))throw new Error("Illegal state: value cannot be a promise");return e},then:function(e,t){return h(e)?e.then(t):t(e)},all:function(e){return e.some(h)?Promise.all(e):e}},n.error=function(e){throw new Error("Internal Error: ".concat(e))},n.syntaxError=function(e,t){var r=Error(e);return r[c]=!0,t&&(r[u]=t),r};var c="ngSyntaxError",u="ngParseErrors";n.isSyntaxError=function(e){return e[c]},n.getParseErrors=function(e){return e[u]||[]},n.escapeRegExp=function(e){return e.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")};var p=Object.getPrototypeOf({});function h(e){return!!e&&"function"==typeof e.then}n.utf8Encode=function(e){for(var t="",r=0;r<e.length;r++){var n=e.charCodeAt(r);if(n>=55296&&n<=56319&&e.length>r+1){var i=e.charCodeAt(r+1);i>=56320&&i<=57343&&(r++,n=(n-55296<<10)+i-56320+65536)}n<=127?t+=String.fromCharCode(n):n<=2047?t+=String.fromCharCode(n>>6&31|192,63&n|128):n<=65535?t+=String.fromCharCode(n>>12|224,n>>6&63|128,63&n|128):n<=2097151&&(t+=String.fromCharCode(n>>18&7|240,n>>12&63|128,n>>6&63|128,63&n|128))}return t},n.stringify=function e(t){if("string"==typeof t)return t;if(t instanceof Array)return"["+t.map(e).join(", ")+"]";if(null==t)return""+t;if(t.overriddenName)return"".concat(t.overriddenName);if(t.name)return"".concat(t.name);var r=t.toString();if(null==r)return""+r;var n=r.indexOf("\n");return-1===n?r:r.substring(0,n)},n.resolveForwardRef=function(e){return"function"==typeof e&&e.hasOwnProperty("__forward_ref__")?e():e},n.isPromise=h;n.Version=function e(t){r(this,e),this.full=t;var n=t.split(".");this.major=n[0],this.minor=n[1],this.patch=n.slice(2).join(".")}}));ze($t);$t.dashCaseToCamelCase,$t.splitAtColon,$t.splitAtPeriod,$t.visitValue,$t.isDefined,$t.noUndefined,$t.ValueTransformer,$t.SyncAsync,$t.error,$t.syntaxError,$t.isSyntaxError,$t.getParseErrors,$t.escapeRegExp,$t.utf8Encode,$t.stringify,$t.resolveForwardRef,$t.isPromise,$t.Version;var It=We((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0});var n=/^(?:(?:\[([^\]]+)\])|(?:\(([^\)]+)\)))|(\@[-\w]+)$/;function a(e){return e.replace(/\W/g,"_")}t.sanitizeIdentifier=a;var o,s=0;function l(e){if(!e||!e.reference)return null;var t=e.reference;if(t instanceof Rt.StaticSymbol)return t.name;if(t.__anonymousType)return t.__anonymousType;var r=$t.stringify(t);return r.indexOf("(")>=0?(r="anonymous_".concat(s++),t.__anonymousType=r):r=a(r),r}t.identifierName=l,t.identifierModuleUrl=function(e){var t=e.reference;return t instanceof Rt.StaticSymbol?t.filePath:"./".concat($t.stringify(t))},t.viewClassName=function(e,t){return"View_".concat(l({reference:e}),"_").concat(t)},t.rendererTypeName=function(e){return"RenderType_".concat(l({reference:e}))},t.hostViewClassName=function(e){return"HostView_".concat(l({reference:e}))},t.componentFactoryName=function(e){return"".concat(l({reference:e}),"NgFactory")},function(e){e[e.Pipe=0]="Pipe",e[e.Directive=1]="Directive",e[e.NgModule=2]="NgModule",e[e.Injectable=3]="Injectable"}(o=t.CompileSummaryKind||(t.CompileSummaryKind={})),t.tokenName=function(e){return null!=e.value?a(e.value):l(e.identifier)},t.tokenReference=function(e){return null!=e.identifier?e.identifier.reference:e.value};t.CompileStylesheetMetadata=function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.moduleUrl,i=t.styles,a=t.styleUrls;r(this,e),this.moduleUrl=n||null,this.styles=f(i),this.styleUrls=f(a)};var c=function(){function e(t){var n=t.encapsulation,i=t.template,a=t.templateUrl,o=t.htmlAst,s=t.styles,l=t.styleUrls,c=t.externalStylesheets,u=t.animations,p=t.ngContentSelectors,h=t.interpolation,d=t.isInline,g=t.preserveWhitespaces;if(r(this,e),this.encapsulation=n,this.template=i,this.templateUrl=a,this.htmlAst=o,this.styles=f(s),this.styleUrls=f(l),this.externalStylesheets=f(c),this.animations=u?m(u):[],this.ngContentSelectors=p||[],h&&2!=h.length)throw new Error("'interpolation' should have a start and an end symbol.");this.interpolation=h,this.isInline=d,this.preserveWhitespaces=g}return i(e,[{key:"toSummary",value:function(){return{ngContentSelectors:this.ngContentSelectors,encapsulation:this.encapsulation,styles:this.styles,animations:this.animations}}}]),e}();t.CompileTemplateMetadata=c;var u=function(){function e(t){var n=t.isHost,i=t.type,a=t.isComponent,o=t.selector,s=t.exportAs,l=t.changeDetection,c=t.inputs,u=t.outputs,p=t.hostListeners,h=t.hostProperties,d=t.hostAttributes,m=t.providers,g=t.viewProviders,v=t.queries,y=t.guards,_=t.viewQueries,T=t.entryComponents,b=t.template,S=t.componentViewType,C=t.rendererType,E=t.componentFactory;r(this,e),this.isHost=!!n,this.type=i,this.isComponent=a,this.selector=o,this.exportAs=s,this.changeDetection=l,this.inputs=c,this.outputs=u,this.hostListeners=p,this.hostProperties=h,this.hostAttributes=d,this.providers=f(m),this.viewProviders=f(g),this.queries=f(v),this.guards=y,this.viewQueries=f(_),this.entryComponents=f(T),this.template=b,this.componentViewType=S,this.rendererType=C,this.componentFactory=E}return i(e,null,[{key:"create",value:function(t){var r=t.isHost,i=t.type,a=t.isComponent,o=t.selector,s=t.exportAs,l=t.changeDetection,c=t.inputs,u=t.outputs,p=t.host,h=t.providers,d=t.viewProviders,f=t.queries,m=t.guards,g=t.viewQueries,v=t.entryComponents,y=t.template,_=t.componentViewType,T=t.rendererType,b=t.componentFactory,S={},C={},E={};null!=p&&Object.keys(p).forEach((function(e){var t=p[e],r=e.match(n);null===r?E[e]=t:null!=r[1]?C[r[1]]=t:null!=r[2]&&(S[r[2]]=t)}));var k={};null!=c&&c.forEach((function(e){var t=$t.splitAtColon(e,[e,e]);k[t[0]]=t[1]}));var A={};return null!=u&&u.forEach((function(e){var t=$t.splitAtColon(e,[e,e]);A[t[0]]=t[1]})),new e({isHost:r,type:i,isComponent:!!a,selector:o,exportAs:s,changeDetection:l,inputs:k,outputs:A,hostListeners:S,hostProperties:C,hostAttributes:E,providers:h,viewProviders:d,queries:f,guards:m,viewQueries:g,entryComponents:v,template:y,componentViewType:_,rendererType:T,componentFactory:b})}}]),i(e,[{key:"toSummary",value:function(){return{summaryKind:o.Directive,type:this.type,isComponent:this.isComponent,selector:this.selector,exportAs:this.exportAs,inputs:this.inputs,outputs:this.outputs,hostListeners:this.hostListeners,hostProperties:this.hostProperties,hostAttributes:this.hostAttributes,providers:this.providers,viewProviders:this.viewProviders,queries:this.queries,guards:this.guards,viewQueries:this.viewQueries,entryComponents:this.entryComponents,changeDetection:this.changeDetection,template:this.template&&this.template.toSummary(),componentViewType:this.componentViewType,rendererType:this.rendererType,componentFactory:this.componentFactory}}}]),e}();t.CompileDirectiveMetadata=u;var p=function(){function e(t){var n=t.type,i=t.name,a=t.pure;r(this,e),this.type=n,this.name=i,this.pure=!!a}return i(e,[{key:"toSummary",value:function(){return{summaryKind:o.Pipe,type:this.type,name:this.name,pure:this.pure}}}]),e}();t.CompilePipeMetadata=p;t.CompileShallowModuleMetadata=function e(){r(this,e)};var h=function(){function e(t){var n=t.type,i=t.providers,a=t.declaredDirectives,o=t.exportedDirectives,s=t.declaredPipes,l=t.exportedPipes,c=t.entryComponents,u=t.bootstrapComponents,p=t.importedModules,h=t.exportedModules,d=t.schemas,m=t.transitiveModule,g=t.id;r(this,e),this.type=n||null,this.declaredDirectives=f(a),this.exportedDirectives=f(o),this.declaredPipes=f(s),this.exportedPipes=f(l),this.providers=f(i),this.entryComponents=f(c),this.bootstrapComponents=f(u),this.importedModules=f(p),this.exportedModules=f(h),this.schemas=f(d),this.id=g||null,this.transitiveModule=m||null}return i(e,[{key:"toSummary",value:function(){var e=this.transitiveModule;return{summaryKind:o.NgModule,type:this.type,entryComponents:e.entryComponents,providers:e.providers,modules:e.modules,exportedDirectives:e.exportedDirectives,exportedPipes:e.exportedPipes}}}]),e}();t.CompileNgModuleMetadata=h;var d=function(){function e(){r(this,e),this.directivesSet=new Set,this.directives=[],this.exportedDirectivesSet=new Set,this.exportedDirectives=[],this.pipesSet=new Set,this.pipes=[],this.exportedPipesSet=new Set,this.exportedPipes=[],this.modulesSet=new Set,this.modules=[],this.entryComponentsSet=new Set,this.entryComponents=[],this.providers=[]}return i(e,[{key:"addProvider",value:function(e,t){this.providers.push({provider:e,module:t})}},{key:"addDirective",value:function(e){this.directivesSet.has(e.reference)||(this.directivesSet.add(e.reference),this.directives.push(e))}},{key:"addExportedDirective",value:function(e){this.exportedDirectivesSet.has(e.reference)||(this.exportedDirectivesSet.add(e.reference),this.exportedDirectives.push(e))}},{key:"addPipe",value:function(e){this.pipesSet.has(e.reference)||(this.pipesSet.add(e.reference),this.pipes.push(e))}},{key:"addExportedPipe",value:function(e){this.exportedPipesSet.has(e.reference)||(this.exportedPipesSet.add(e.reference),this.exportedPipes.push(e))}},{key:"addModule",value:function(e){this.modulesSet.has(e.reference)||(this.modulesSet.add(e.reference),this.modules.push(e))}},{key:"addEntryComponent",value:function(e){this.entryComponentsSet.has(e.componentType)||(this.entryComponentsSet.add(e.componentType),this.entryComponents.push(e))}}]),e}();function f(e){return e||[]}t.TransitiveCompileNgModuleMetadata=d;function m(e){return e.reduce((function(e,t){var r=Array.isArray(t)?m(t):t;return e.concat(r)}),[])}function g(e){return e.replace(/(\w+:\/\/[\w:-]+)?(\/+)?/,"ng:///")}t.ProviderMeta=function e(t,n){var i=n.useClass,a=n.useValue,o=n.useExisting,s=n.useFactory,l=n.deps,c=n.multi;r(this,e),this.token=t,this.useClass=i||null,this.useValue=a,this.useExisting=o,this.useFactory=s||null,this.dependencies=l||null,this.multi=!!c},t.flatten=m,t.templateSourceUrl=function(e,t,r){var n;return n=r.isInline?t.type.reference instanceof Rt.StaticSymbol?"".concat(t.type.reference.filePath,".").concat(t.type.reference.name,".html"):"".concat(l(e),"/").concat(l(t.type),".html"):r.templateUrl,t.type.reference instanceof Rt.StaticSymbol?n:g(n)},t.sharedStylesheetJitUrl=function(e,t){var r=e.moduleUrl.split(/\/\\/g),n=r[r.length-1];return g("css/".concat(t).concat(n,".ngstyle.js"))},t.ngModuleJitUrl=function(e){return g("".concat(l(e.type),"/module.ngfactory.js"))},t.templateJitUrl=function(e,t){return g("".concat(l(e),"/").concat(l(t.type),".ngfactory.js"))}}));ze(It);It.sanitizeIdentifier,It.identifierName,It.identifierModuleUrl,It.viewClassName,It.rendererTypeName,It.hostViewClassName,It.componentFactoryName,It.CompileSummaryKind,It.tokenName,It.tokenReference,It.CompileStylesheetMetadata,It.CompileTemplateMetadata,It.CompileDirectiveMetadata,It.CompilePipeMetadata,It.CompileShallowModuleMetadata,It.CompileNgModuleMetadata,It.TransitiveCompileNgModuleMetadata,It.ProviderMeta,It.flatten,It.templateSourceUrl,It.sharedStylesheetJitUrl,It.ngModuleJitUrl,It.templateJitUrl;var Mt=We((function(e,t){Object.defineProperty(t,"__esModule",{value:!0});
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+var n=function(){function e(t,n,i,a){r(this,e),this.file=t,this.offset=n,this.line=i,this.col=a}return i(e,[{key:"toString",value:function(){return null!=this.offset?"".concat(this.file.url,"@").concat(this.line,":").concat(this.col):this.file.url}},{key:"moveBy",value:function(t){for(var r=this.file.content,n=r.length,i=this.offset,a=this.line,o=this.col;i>0&&t<0;){if(i--,t++,r.charCodeAt(i)==qt.$LF){a--;var s=r.substr(0,i-1).lastIndexOf(String.fromCharCode(qt.$LF));o=s>0?i-s:i}else o--}for(;i<n&&t>0;){var l=r.charCodeAt(i);i++,t--,l==qt.$LF?(a++,o=0):o++}return new e(this.file,i,a,o)}},{key:"getContext",value:function(e,t){var r=this.file.content,n=this.offset;if(null!=n){n>r.length-1&&(n=r.length-1);for(var i=n,a=0,o=0;a<e&&n>0&&(a++,"\n"!=r[--n]||++o!=t););for(a=0,o=0;a<e&&i<r.length-1&&(a++,"\n"!=r[++i]||++o!=t););return{before:r.substring(n,this.offset),after:r.substring(this.offset,i+1)}}return null}}]),e}();t.ParseLocation=n;var a=function e(t,n){r(this,e),this.content=t,this.url=n};t.ParseSourceFile=a;var o,s=function(){function e(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;r(this,e),this.start=t,this.end=n,this.details=i}return i(e,[{key:"toString",value:function(){return this.start.file.content.substring(this.start.offset,this.end.offset)}}]),e}();t.ParseSourceSpan=s,function(e){e[e.WARNING=0]="WARNING",e[e.ERROR=1]="ERROR"}(o=t.ParseErrorLevel||(t.ParseErrorLevel={}));var l=function(){function e(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.ERROR;r(this,e),this.span=t,this.msg=n,this.level=i}return i(e,[{key:"contextualMessage",value:function(){var e=this.span.start.getContext(100,3);return e?"".concat(this.msg,' ("').concat(e.before,"[").concat(o[this.level]," ->]").concat(e.after,'")'):this.msg}},{key:"toString",value:function(){var e=this.span.details?", ".concat(this.span.details):"";return"".concat(this.contextualMessage(),": ").concat(this.span.start).concat(e)}}]),e}();t.ParseError=l,t.typeSourceSpan=function(e,t){var r=It.identifierModuleUrl(t),i=null!=r?"in ".concat(e," ").concat(It.identifierName(t)," in ").concat(r):"in ".concat(e," ").concat(It.identifierName(t)),o=new a("",i);return new s(new n(o,-1,-1,-1),new n(o,-1,-1,-1))}}));ze(Mt);Mt.ParseLocation,Mt.ParseSourceFile,Mt.ParseSourceSpan,Mt.ParseErrorLevel,Mt.ParseError,Mt.typeSourceSpan;var Bt=We((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;r(this,e),this.path=t,this.position=n}return i(e,[{key:"parentOf",value:function(e){return e&&this.path[this.path.indexOf(e)-1]}},{key:"childOf",value:function(e){return this.path[this.path.indexOf(e)+1]}},{key:"first",value:function(e){for(var t=this.path.length-1;t>=0;t--){var r=this.path[t];if(r instanceof e)return r}}},{key:"push",value:function(e){this.path.push(e)}},{key:"pop",value:function(){return this.path.pop()}},{key:"empty",get:function(){return!this.path||!this.path.length}},{key:"head",get:function(){return this.path[0]}},{key:"tail",get:function(){return this.path[this.path.length-1]}}]),e}();t.AstPath=n}));ze(Bt);Bt.AstPath;var Ut=We((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(t,n){r(this,e),this.value=t,this.sourceSpan=n}return i(e,[{key:"visit",value:function(e,t){return e.visitText(this,t)}}]),e}();t.Text=n;var s=function(){function e(t,n){r(this,e),this.value=t,this.sourceSpan=n}return i(e,[{key:"visit",value:function(e,t){return e.visitCdata(this,t)}}]),e}();t.CDATA=s;var c=function(){function e(t,n,i,a,o){r(this,e),this.switchValue=t,this.type=n,this.cases=i,this.sourceSpan=a,this.switchValueSourceSpan=o}return i(e,[{key:"visit",value:function(e,t){return e.visitExpansion(this,t)}}]),e}();t.Expansion=c;var u=function(){function e(t,n,i,a,o){r(this,e),this.value=t,this.expression=n,this.sourceSpan=i,this.valueSourceSpan=a,this.expSourceSpan=o}return i(e,[{key:"visit",value:function(e,t){return e.visitExpansionCase(this,t)}}]),e}();t.ExpansionCase=u;var p=function(){function e(t,n,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;r(this,e),this.name=t,this.value=n,this.sourceSpan=i,this.valueSpan=a,this.nameSpan=o}return i(e,[{key:"visit",value:function(e,t){return e.visitAttribute(this,t)}}]),e}();t.Attribute=p;var h=function(){function e(t,n,i,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,l=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null;r(this,e),this.name=t,this.attrs=n,this.children=i,this.sourceSpan=a,this.startSourceSpan=o,this.endSourceSpan=s,this.nameSpan=l}return i(e,[{key:"visit",value:function(e,t){return e.visitElement(this,t)}}]),e}();t.Element=h;var d=function(){function e(t,n){r(this,e),this.value=t,this.sourceSpan=n}return i(e,[{key:"visit",value:function(e,t){return e.visitComment(this,t)}}]),e}();t.Comment=d;var f=function(){function e(t,n){r(this,e),this.value=t,this.sourceSpan=n}return i(e,[{key:"visit",value:function(e,t){return e.visitDocType(this,t)}}]),e}();function m(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=[],i=e.visit?function(t){return e.visit(t,r)||t.visit(e,r)}:function(t){return t.visit(e,r)};return t.forEach((function(e){var t=i(e);t&&n.push(t)})),n}t.DocType=f,t.visitAll=m;var g=function(){function e(){r(this,e)}return i(e,[{key:"visitElement",value:function(e,t){this.visitChildren(t,(function(t){t(e.attrs),t(e.children)}))}},{key:"visitAttribute",value:function(e,t){}},{key:"visitText",value:function(e,t){}},{key:"visitCdata",value:function(e,t){}},{key:"visitComment",value:function(e,t){}},{key:"visitDocType",value:function(e,t){}},{key:"visitExpansion",value:function(e,t){return this.visitChildren(t,(function(t){t(e.cases)}))}},{key:"visitExpansionCase",value:function(e,t){}},{key:"visitChildren",value:function(e,t){var r=[],n=this;return t((function(t){t&&r.push(m(n,t,e))})),[].concat.apply([],r)}}]),e}();t.RecursiveVisitor=g,t.findNode=function(e,t){var n=[];return m(new(function(e){function s(){return r(this,s),l(this,o(s).apply(this,arguments))}return a(s,e),i(s,[{key:"visit",value:function(e,r){var i=function e(t){var r=t.sourceSpan.start.offset,n=t.sourceSpan.end.offset;return t instanceof h&&(t.endSourceSpan?n=t.endSourceSpan.end.offset:t.children&&t.children.length&&(n=e(t.children[t.children.length-1]).end)),{start:r,end:n}}(e);if(!(i.start<=t&&t<i.end))return!0;n.push(e)}}]),s}(g)),e),new Bt.AstPath(n,t)}}));ze(Ut);Ut.Text,Ut.CDATA,Ut.Expansion,Ut.ExpansionCase,Ut.Attribute,Ut.Element,Ut.Comment,Ut.DocType,Ut.visitAll,Ut.RecursiveVisitor,Ut.findNode;var Ft=We((function(e,t){var n;
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.TAG_OPEN_START=0]="TAG_OPEN_START",e[e.TAG_OPEN_END=1]="TAG_OPEN_END",e[e.TAG_OPEN_END_VOID=2]="TAG_OPEN_END_VOID",e[e.TAG_CLOSE=3]="TAG_CLOSE",e[e.TEXT=4]="TEXT",e[e.ESCAPABLE_RAW_TEXT=5]="ESCAPABLE_RAW_TEXT",e[e.RAW_TEXT=6]="RAW_TEXT",e[e.COMMENT_START=7]="COMMENT_START",e[e.COMMENT_END=8]="COMMENT_END",e[e.CDATA_START=9]="CDATA_START",e[e.CDATA_END=10]="CDATA_END",e[e.ATTR_NAME=11]="ATTR_NAME",e[e.ATTR_VALUE=12]="ATTR_VALUE",e[e.DOC_TYPE_START=13]="DOC_TYPE_START",e[e.DOC_TYPE_END=14]="DOC_TYPE_END",e[e.EXPANSION_FORM_START=15]="EXPANSION_FORM_START",e[e.EXPANSION_CASE_VALUE=16]="EXPANSION_CASE_VALUE",e[e.EXPANSION_CASE_EXP_START=17]="EXPANSION_CASE_EXP_START",e[e.EXPANSION_CASE_EXP_END=18]="EXPANSION_CASE_EXP_END",e[e.EXPANSION_FORM_END=19]="EXPANSION_FORM_END",e[e.EOF=20]="EOF"}(n=t.TokenType||(t.TokenType={}));var s=function e(t,n,i){r(this,e),this.type=t,this.parts=n,this.sourceSpan=i};t.Token=s;var c=function(e){function t(e,n,i){var a;return r(this,t),(a=l(this,o(t).call(this,i,e))).tokenType=n,a}return a(t,e),t}(Mt.ParseError);t.TokenError=c;var u=function e(t,n){r(this,e),this.tokens=t,this.errors=n};t.TokenizeResult=u,t.tokenize=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:Lt.DEFAULT_INTERPOLATION_CONFIG,a=arguments.length>5&&void 0!==arguments[5]&&arguments[5],o=arguments.length>6&&void 0!==arguments[6]&&arguments[6];return new m(new Mt.ParseSourceFile(e,t),r,n,i,a,o).tokenize()};var p=/\r\n?/g;function h(e){var t=e===qt.$EOF?"EOF":String.fromCharCode(e);return'Unexpected character "'.concat(t,'"')}function d(e){return'Unknown entity "'.concat(e,'" - use the "&#<decimal>;" or "&#x<hex>;" syntax')}var f=function e(t){r(this,e),this.error=t},m=function(){function e(t,n,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Lt.DEFAULT_INTERPOLATION_CONFIG,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],s=arguments.length>5&&void 0!==arguments[5]&&arguments[5];r(this,e),this._file=t,this._getTagDefinition=n,this._tokenizeIcu=i,this._interpolationConfig=a,this.canSelfClose=o,this.allowHtmComponentClosingTags=s,this._peek=-1,this._nextPeek=-1,this._index=-1,this._line=0,this._column=-1,this._expansionCaseStack=[],this._inInterpolation=!1,this.tokens=[],this.errors=[],this._input=t.content,this._length=t.content.length,this._advance()}return i(e,[{key:"_processCarriageReturns",value:function(e){return e.replace(p,"\n")}},{key:"tokenize",value:function(){for(;this._peek!==qt.$EOF;){var e=this._getLocation();try{if(this._attemptCharCode(qt.$LT))if(this._attemptCharCode(qt.$BANG))this._attemptStr("[CDATA[")?this._consumeCdata(e):this._attemptStr("--")?this._consumeComment(e):this._attemptStrCaseInsensitive("doctype")?this._consumeDocType(e):this._consumeBogusComment(e);else if(this._attemptCharCode(qt.$SLASH))this._consumeTagClose(e);else{var t=this._savePosition();this._attemptCharCode(qt.$QUESTION)?(this._restorePosition(t),this._consumeBogusComment(e)):this._consumeTagOpen(e)}else this._tokenizeIcu&&this._tokenizeExpansionForm()||this._consumeText()}catch(e){if(!(e instanceof f))throw e;this.errors.push(e.error)}}return this._beginToken(n.EOF),this._endToken([]),new u(function(e){for(var t=[],r=void 0,i=0;i<e.length;i++){var a=e[i];r&&r.type==n.TEXT&&a.type==n.TEXT?(r.parts[0]+=a.parts[0],r.sourceSpan.end=a.sourceSpan.end):(r=a,t.push(r))}return t}(this.tokens),this.errors)}},{key:"_tokenizeExpansionForm",value:function(){if(T(this._input,this._index,this._interpolationConfig))return this._consumeExpansionFormStart(),!0;if(((e=this._peek)===qt.$EQ||qt.isAsciiLetter(e)||qt.isDigit(e))&&this._isInExpansionForm())return this._consumeExpansionCaseStart(),!0;var e;if(this._peek===qt.$RBRACE){if(this._isInExpansionCase())return this._consumeExpansionCaseEnd(),!0;if(this._isInExpansionForm())return this._consumeExpansionFormEnd(),!0}return!1}},{key:"_getLocation",value:function(){return new Mt.ParseLocation(this._file,this._index,this._line,this._column)}},{key:"_getSpan",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._getLocation(),t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getLocation();return new Mt.ParseSourceSpan(e,t)}},{key:"_beginToken",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getLocation();this._currentTokenStart=t,this._currentTokenType=e}},{key:"_endToken",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getLocation(),r=new s(this._currentTokenType,e,new Mt.ParseSourceSpan(this._currentTokenStart,t));return this.tokens.push(r),this._currentTokenStart=null,this._currentTokenType=null,r}},{key:"_createError",value:function(e,t){this._isInExpansionForm()&&(e+=' (Do you have an unescaped "{" in your template? Use "{{ \'{\' }}") to escape it.)');var r=new c(e,this._currentTokenType,t);return this._currentTokenStart=null,this._currentTokenType=null,new f(r)}},{key:"_advance",value:function(){if(this._index>=this._length)throw this._createError(h(qt.$EOF),this._getSpan());this._peek===qt.$LF?(this._line++,this._column=0):this._peek!==qt.$LF&&this._peek!==qt.$CR&&this._column++,this._index++,this._peek=this._index>=this._length?qt.$EOF:this._input.charCodeAt(this._index),this._nextPeek=this._index+1>=this._length?qt.$EOF:this._input.charCodeAt(this._index+1)}},{key:"_attemptCharCode",value:function(e){return this._peek===e&&(this._advance(),!0)}},{key:"_attemptCharCodeCaseInsensitive",value:function(e){return t=this._peek,r=e,b(t)==b(r)&&(this._advance(),!0);var t,r}},{key:"_requireCharCode",value:function(e){var t=this._getLocation();if(!this._attemptCharCode(e))throw this._createError(h(this._peek),this._getSpan(t,t))}},{key:"_attemptStr",value:function(e){var t=e.length;if(this._index+t>this._length)return!1;for(var r=this._savePosition(),n=0;n<t;n++)if(!this._attemptCharCode(e.charCodeAt(n)))return this._restorePosition(r),!1;return!0}},{key:"_attemptStrCaseInsensitive",value:function(e){for(var t=0;t<e.length;t++)if(!this._attemptCharCodeCaseInsensitive(e.charCodeAt(t)))return!1;return!0}},{key:"_requireStr",value:function(e){var t=this._getLocation();if(!this._attemptStr(e))throw this._createError(h(this._peek),this._getSpan(t))}},{key:"_requireStrCaseInsensitive",value:function(e){var t=this._getLocation();if(!this._attemptStrCaseInsensitive(e))throw this._createError(h(this._peek),this._getSpan(t))}},{key:"_attemptCharCodeUntilFn",value:function(e){for(;!e(this._peek);)this._advance()}},{key:"_requireCharCodeUntilFn",value:function(e,t){var r=this._getLocation();if(this._attemptCharCodeUntilFn(e),this._index-r.offset<t)throw this._createError(h(this._peek),this._getSpan(r,r))}},{key:"_attemptUntilChar",value:function(e){for(;this._peek!==e;)this._advance()}},{key:"_readChar",value:function(e){if(e&&this._peek===qt.$AMPERSAND)return this._decodeEntity();var t=this._index;return this._advance(),this._input[t]}},{key:"_decodeEntity",value:function(){var e=this._getLocation();if(this._advance(),!this._attemptCharCode(qt.$HASH)){var t=this._savePosition();if(this._attemptCharCodeUntilFn(_),this._peek!=qt.$SEMICOLON)return this._restorePosition(t),"&";this._advance();var r=this._input.substring(e.offset+1,this._index-1),n=Pt.NAMED_ENTITIES[r];if(!n)throw this._createError(d(r),this._getSpan(e));return n}var i=this._attemptCharCode(qt.$x)||this._attemptCharCode(qt.$X),a=this._getLocation().offset;if(this._attemptCharCodeUntilFn(y),this._peek!=qt.$SEMICOLON)throw this._createError(h(this._peek),this._getSpan());this._advance();var o=this._input.substring(a,this._index-1);try{var s=parseInt(o,i?16:10);return String.fromCharCode(s)}catch(t){var l=this._input.substring(e.offset+1,this._index-1);throw this._createError(d(l),this._getSpan(e))}}},{key:"_consumeRawText",value:function(e,t,r){var i,a=this._getLocation();this._beginToken(e?n.ESCAPABLE_RAW_TEXT:n.RAW_TEXT,a);for(var o=[];i=this._getLocation(),!this._attemptCharCode(t)||!r();)for(this._index>i.offset&&o.push(this._input.substring(i.offset,this._index));this._peek!==t;)o.push(this._readChar(e));return this._endToken([this._processCarriageReturns(o.join(""))],i)}},{key:"_consumeComment",value:function(e){var t=this;this._beginToken(n.COMMENT_START,e),this._endToken([]);var r=this._consumeRawText(!1,qt.$MINUS,(function(){return t._attemptStr("->")}));this._beginToken(n.COMMENT_END,r.sourceSpan.end),this._endToken([])}},{key:"_consumeBogusComment",value:function(e){this._beginToken(n.COMMENT_START,e),this._endToken([]);var t=this._consumeRawText(!1,qt.$GT,(function(){return!0}));this._beginToken(n.COMMENT_END,t.sourceSpan.end),this._endToken([])}},{key:"_consumeCdata",value:function(e){var t=this;this._beginToken(n.CDATA_START,e),this._endToken([]);var r=this._consumeRawText(!1,qt.$RBRACKET,(function(){return t._attemptStr("]>")}));this._beginToken(n.CDATA_END,r.sourceSpan.end),this._endToken([])}},{key:"_consumeDocType",value:function(e){this._beginToken(n.DOC_TYPE_START,e),this._endToken([]);var t=this._consumeRawText(!1,qt.$GT,(function(){return!0}));this._beginToken(n.DOC_TYPE_END,t.sourceSpan.end),this._endToken([])}},{key:"_consumePrefixAndName",value:function(){for(var e,t,r=this._index,n=null;this._peek!==qt.$COLON&&!(((e=this._peek)<qt.$a||qt.$z<e)&&(e<qt.$A||qt.$Z<e)&&(e<qt.$0||e>qt.$9));)this._advance();return this._peek===qt.$COLON?(this._advance(),n=this._input.substring(r,this._index-1),t=this._index):t=r,this._requireCharCodeUntilFn(v,this._index===t?1:0),[n,this._input.substring(t,this._index)]}},{key:"_consumeTagOpen",value:function(e){var t,r,i=this._savePosition();try{if(!qt.isAsciiLetter(this._peek))throw this._createError(h(this._peek),this._getSpan());var a=this._index;for(this._consumeTagOpenStart(e),r=(t=this._input.substring(a,this._index)).toLowerCase(),this._attemptCharCodeUntilFn(g);this._peek!==qt.$SLASH&&this._peek!==qt.$GT;)this._consumeAttributeName(),this._attemptCharCodeUntilFn(g),this._attemptCharCode(qt.$EQ)&&(this._attemptCharCodeUntilFn(g),this._consumeAttributeValue()),this._attemptCharCodeUntilFn(g);this._consumeTagOpenEnd()}catch(t){if(t instanceof f)return this._restorePosition(i),this._beginToken(n.TEXT,e),void this._endToken(["<"]);throw t}if(!this.canSelfClose||this.tokens[this.tokens.length-1].type!==n.TAG_OPEN_END_VOID){var o=this._getTagDefinition(t).contentType;o===Pt.TagContentType.RAW_TEXT?this._consumeRawTextWithTagClose(r,!1):o===Pt.TagContentType.ESCAPABLE_RAW_TEXT&&this._consumeRawTextWithTagClose(r,!0)}}},{key:"_consumeRawTextWithTagClose",value:function(e,t){var r=this,i=this._consumeRawText(t,qt.$LT,(function(){return!!r._attemptCharCode(qt.$SLASH)&&(r._attemptCharCodeUntilFn(g),!!r._attemptStrCaseInsensitive(e)&&(r._attemptCharCodeUntilFn(g),r._attemptCharCode(qt.$GT)))}));this._beginToken(n.TAG_CLOSE,i.sourceSpan.end),this._endToken([null,e])}},{key:"_consumeTagOpenStart",value:function(e){this._beginToken(n.TAG_OPEN_START,e);var t=this._consumePrefixAndName();this._endToken(t)}},{key:"_consumeAttributeName",value:function(){this._beginToken(n.ATTR_NAME);var e=this._consumePrefixAndName();this._endToken(e)}},{key:"_consumeAttributeValue",value:function(){var e;if(this._beginToken(n.ATTR_VALUE),this._peek===qt.$SQ||this._peek===qt.$DQ){var t=this._peek;this._advance();for(var r=[];this._peek!==t;)r.push(this._readChar(!0));e=r.join(""),this._advance()}else{var i=this._index;this._requireCharCodeUntilFn(v,1),e=this._input.substring(i,this._index)}this._endToken([this._processCarriageReturns(e)])}},{key:"_consumeTagOpenEnd",value:function(){var e=this._attemptCharCode(qt.$SLASH)?n.TAG_OPEN_END_VOID:n.TAG_OPEN_END;this._beginToken(e),this._requireCharCode(qt.$GT),this._endToken([])}},{key:"_consumeTagClose",value:function(e){if(this._beginToken(n.TAG_CLOSE,e),this._attemptCharCodeUntilFn(g),this.allowHtmComponentClosingTags&&this._attemptCharCode(qt.$SLASH))this._attemptCharCodeUntilFn(g),this._requireCharCode(qt.$GT),this._endToken([]);else{var t=this._consumePrefixAndName();this._attemptCharCodeUntilFn(g),this._requireCharCode(qt.$GT),this._endToken(t)}}},{key:"_consumeExpansionFormStart",value:function(){this._beginToken(n.EXPANSION_FORM_START,this._getLocation()),this._requireCharCode(qt.$LBRACE),this._endToken([]),this._expansionCaseStack.push(n.EXPANSION_FORM_START),this._beginToken(n.RAW_TEXT,this._getLocation());var e=this._readUntil(qt.$COMMA);this._endToken([e],this._getLocation()),this._requireCharCode(qt.$COMMA),this._attemptCharCodeUntilFn(g),this._beginToken(n.RAW_TEXT,this._getLocation());var t=this._readUntil(qt.$COMMA);this._endToken([t],this._getLocation()),this._requireCharCode(qt.$COMMA),this._attemptCharCodeUntilFn(g)}},{key:"_consumeExpansionCaseStart",value:function(){this._beginToken(n.EXPANSION_CASE_VALUE,this._getLocation());var e=this._readUntil(qt.$LBRACE).trim();this._endToken([e],this._getLocation()),this._attemptCharCodeUntilFn(g),this._beginToken(n.EXPANSION_CASE_EXP_START,this._getLocation()),this._requireCharCode(qt.$LBRACE),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(g),this._expansionCaseStack.push(n.EXPANSION_CASE_EXP_START)}},{key:"_consumeExpansionCaseEnd",value:function(){this._beginToken(n.EXPANSION_CASE_EXP_END,this._getLocation()),this._requireCharCode(qt.$RBRACE),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(g),this._expansionCaseStack.pop()}},{key:"_consumeExpansionFormEnd",value:function(){this._beginToken(n.EXPANSION_FORM_END,this._getLocation()),this._requireCharCode(qt.$RBRACE),this._endToken([]),this._expansionCaseStack.pop()}},{key:"_consumeText",value:function(){var e=this._getLocation();this._beginToken(n.TEXT,e);var t=[];do{this._interpolationConfig&&this._attemptStr(this._interpolationConfig.start)?(t.push(this._interpolationConfig.start),this._inInterpolation=!0):this._interpolationConfig&&this._inInterpolation&&this._attemptStr(this._interpolationConfig.end)?(t.push(this._interpolationConfig.end),this._inInterpolation=!1):t.push(this._readChar(!0))}while(!this._isTextEnd());this._endToken([this._processCarriageReturns(t.join(""))])}},{key:"_isTextEnd",value:function(){if(this._peek===qt.$LT||this._peek===qt.$EOF)return!0;if(this._tokenizeIcu&&!this._inInterpolation){if(T(this._input,this._index,this._interpolationConfig))return!0;if(this._peek===qt.$RBRACE&&this._isInExpansionCase())return!0}return!1}},{key:"_savePosition",value:function(){return[this._peek,this._index,this._column,this._line,this.tokens.length]}},{key:"_readUntil",value:function(e){var t=this._index;return this._attemptUntilChar(e),this._input.substring(t,this._index)}},{key:"_restorePosition",value:function(e){this._peek=e[0],this._index=e[1],this._column=e[2],this._line=e[3];var t=e[4];t<this.tokens.length&&(this.tokens=this.tokens.slice(0,t))}},{key:"_isInExpansionCase",value:function(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===n.EXPANSION_CASE_EXP_START}},{key:"_isInExpansionForm",value:function(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===n.EXPANSION_FORM_START}}]),e}();function g(e){return!qt.isWhitespace(e)||e===qt.$EOF}function v(e){return qt.isWhitespace(e)||e===qt.$GT||e===qt.$SLASH||e===qt.$SQ||e===qt.$DQ||e===qt.$EQ}function y(e){return e==qt.$SEMICOLON||e==qt.$EOF||!qt.isAsciiHexDigit(e)}function _(e){return e==qt.$SEMICOLON||e==qt.$EOF||!qt.isAsciiLetter(e)}function T(e,t,r){var n=!!r&&e.indexOf(r.start,t)==t;return e.charCodeAt(t)==qt.$LBRACE&&!n}function b(e){return e>=qt.$a&&e<=qt.$z?e-qt.$a+qt.$A:e}}));ze(Ft);Ft.TokenType,Ft.Token,Ft.TokenError,Ft.TokenizeResult,Ft.tokenize;var Vt=We((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){function t(e,n,i){var a;return r(this,t),(a=l(this,o(t).call(this,n,i))).elementName=e,a}return a(t,e),i(t,null,[{key:"create",value:function(e,r,n){return new t(e,r,n)}}]),t}(Mt.ParseError);t.TreeError=n;var s=function e(t,n){r(this,e),this.rootNodes=t,this.errors=n};t.ParseTreeResult=s;var c=function(){function e(t){r(this,e),this.getTagDefinition=t}return i(e,[{key:"parse",value:function(e,t){var r=this,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Lt.DEFAULT_INTERPOLATION_CONFIG,a=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=arguments.length>5&&void 0!==arguments[5]&&arguments[5],l=arguments.length>6&&void 0!==arguments[6]&&arguments[6],c=l?this.getTagDefinition:function(e){return r.getTagDefinition(e.toLowerCase())},p=Ft.tokenize(e,t,c,n,i,a,o),h=new u(p.tokens,c,a,o,l).build();return new s(h.rootNodes,p.errors.concat(h.errors))}}]),e}();t.Parser=c;var u=function(){function e(t,n,i,a,o){r(this,e),this.tokens=t,this.getTagDefinition=n,this.canSelfClose=i,this.allowHtmComponentClosingTags=a,this.isTagNameCaseSensitive=o,this._index=-1,this._rootNodes=[],this._errors=[],this._elementStack=[],this._advance()}return i(e,[{key:"build",value:function(){for(;this._peek.type!==Ft.TokenType.EOF;)this._peek.type===Ft.TokenType.TAG_OPEN_START?this._consumeStartTag(this._advance()):this._peek.type===Ft.TokenType.TAG_CLOSE?this._consumeEndTag(this._advance()):this._peek.type===Ft.TokenType.CDATA_START?(this._closeVoidElement(),this._consumeCdata(this._advance())):this._peek.type===Ft.TokenType.COMMENT_START?(this._closeVoidElement(),this._consumeComment(this._advance())):this._peek.type===Ft.TokenType.TEXT||this._peek.type===Ft.TokenType.RAW_TEXT||this._peek.type===Ft.TokenType.ESCAPABLE_RAW_TEXT?(this._closeVoidElement(),this._consumeText(this._advance())):this._peek.type===Ft.TokenType.EXPANSION_FORM_START?this._consumeExpansion(this._advance()):this._peek.type===Ft.TokenType.DOC_TYPE_START?this._consumeDocType(this._advance()):this._advance();return new s(this._rootNodes,this._errors)}},{key:"_advance",value:function(){var e=this._peek;return this._index<this.tokens.length-1&&this._index++,this._peek=this.tokens[this._index],e}},{key:"_advanceIf",value:function(e){return this._peek.type===e?this._advance():null}},{key:"_consumeCdata",value:function(e){var t=this._advance(),r=this._getText(t),n=this._advanceIf(Ft.TokenType.CDATA_END);this._addToParent(new Ut.CDATA(r,new Mt.ParseSourceSpan(e.sourceSpan.start,(n||t).sourceSpan.end)))}},{key:"_consumeComment",value:function(e){var t=this._advanceIf(Ft.TokenType.RAW_TEXT),r=this._advanceIf(Ft.TokenType.COMMENT_END),n=null!=t?t.parts[0].trim():null,i=new Mt.ParseSourceSpan(e.sourceSpan.start,(r||t||e).sourceSpan.end);this._addToParent(new Ut.Comment(n,i))}},{key:"_consumeDocType",value:function(e){var t=this._advanceIf(Ft.TokenType.RAW_TEXT),r=this._advanceIf(Ft.TokenType.DOC_TYPE_END),n=null!=t?t.parts[0].trim():null,i=new Mt.ParseSourceSpan(e.sourceSpan.start,(r||t||e).sourceSpan.end);this._addToParent(new Ut.DocType(n,i))}},{key:"_consumeExpansion",value:function(e){for(var t=this._advance(),r=this._advance(),i=[];this._peek.type===Ft.TokenType.EXPANSION_CASE_VALUE;){var a=this._parseExpansionCase();if(!a)return;i.push(a)}if(this._peek.type===Ft.TokenType.EXPANSION_FORM_END){var o=new Mt.ParseSourceSpan(e.sourceSpan.start,this._peek.sourceSpan.end);this._addToParent(new Ut.Expansion(t.parts[0],r.parts[0],i,o,t.sourceSpan)),this._advance()}else this._errors.push(n.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '}'."))}},{key:"_parseExpansionCase",value:function(){var t=this._advance();if(this._peek.type!==Ft.TokenType.EXPANSION_CASE_EXP_START)return this._errors.push(n.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '{'.")),null;var r=this._advance(),i=this._collectExpansionExpTokens(r);if(!i)return null;var a=this._advance();i.push(new Ft.Token(Ft.TokenType.EOF,[],a.sourceSpan));var o=new e(i,this.getTagDefinition,this.canSelfClose,this.allowHtmComponentClosingTags,this.isTagNameCaseSensitive).build();if(o.errors.length>0)return this._errors=this._errors.concat(o.errors),null;var s=new Mt.ParseSourceSpan(t.sourceSpan.start,a.sourceSpan.end),l=new Mt.ParseSourceSpan(r.sourceSpan.start,a.sourceSpan.end);return new Ut.ExpansionCase(t.parts[0],o.rootNodes,s,t.sourceSpan,l)}},{key:"_collectExpansionExpTokens",value:function(e){for(var t=[],r=[Ft.TokenType.EXPANSION_CASE_EXP_START];;){if(this._peek.type!==Ft.TokenType.EXPANSION_FORM_START&&this._peek.type!==Ft.TokenType.EXPANSION_CASE_EXP_START||r.push(this._peek.type),this._peek.type===Ft.TokenType.EXPANSION_CASE_EXP_END){if(!p(r,Ft.TokenType.EXPANSION_CASE_EXP_START))return this._errors.push(n.create(null,e.sourceSpan,"Invalid ICU message. Missing '}'.")),null;if(r.pop(),0==r.length)return t}if(this._peek.type===Ft.TokenType.EXPANSION_FORM_END){if(!p(r,Ft.TokenType.EXPANSION_FORM_START))return this._errors.push(n.create(null,e.sourceSpan,"Invalid ICU message. Missing '}'.")),null;r.pop()}if(this._peek.type===Ft.TokenType.EOF)return this._errors.push(n.create(null,e.sourceSpan,"Invalid ICU message. Missing '}'.")),null;t.push(this._advance())}}},{key:"_getText",value:function(e){var t=e.parts[0];if(t.length>0&&"\n"==t[0]){var r=this._getParentElement();null!=r&&0==r.children.length&&this.getTagDefinition(r.name).ignoreFirstLf&&(t=t.substring(1))}return t}},{key:"_consumeText",value:function(e){var t=this._getText(e);t.length>0&&this._addToParent(new Ut.Text(t,e.sourceSpan))}},{key:"_closeVoidElement",value:function(){var e=this._getParentElement();e&&this.getTagDefinition(e.name).isVoid&&this._elementStack.pop()}},{key:"_consumeStartTag",value:function(e){for(var t=e.parts[0],r=e.parts[1],i=[];this._peek.type===Ft.TokenType.ATTR_NAME;)i.push(this._consumeAttr(this._advance()));var a=this._getElementFullName(t,r,this._getParentElement()),o=!1;if(this._peek.type===Ft.TokenType.TAG_OPEN_END_VOID){this._advance(),o=!0;var s=this.getTagDefinition(a);this.canSelfClose||s.canSelfClose||null!==Pt.getNsPrefix(a)||s.isVoid||this._errors.push(n.create(a,e.sourceSpan,'Only void and foreign elements can be self closed "'.concat(e.parts[1],'"')))}else this._peek.type===Ft.TokenType.TAG_OPEN_END&&(this._advance(),o=!1);var l=this._peek.sourceSpan.start,c=new Mt.ParseSourceSpan(e.sourceSpan.start,l),u=new Mt.ParseSourceSpan(e.sourceSpan.start.moveBy(1),e.sourceSpan.end),p=new Ut.Element(a,i,[],c,c,void 0,u);this._pushElement(p),o&&(this._popElement(a),p.endSourceSpan=c)}},{key:"_pushElement",value:function(e){var t=this._getParentElement();t&&this.getTagDefinition(t.name).isClosedByChild(e.name)&&this._elementStack.pop();var r=this.getTagDefinition(e.name),n=this._getParentElementSkippingContainers(),i=n.parent,a=n.container;if(i&&r.requireExtraParent(i.name)){var o=new Ut.Element(r.parentToAdd,[],[],e.sourceSpan,e.startSourceSpan,e.endSourceSpan);this._insertBeforeContainer(i,a,o)}this._addToParent(e),this._elementStack.push(e)}},{key:"_consumeEndTag",value:function(e){var t=this.allowHtmComponentClosingTags&&0===e.parts.length?null:this._getElementFullName(e.parts[0],e.parts[1],this._getParentElement());if(this._getParentElement()&&(this._getParentElement().endSourceSpan=e.sourceSpan),t&&this.getTagDefinition(t).isVoid)this._errors.push(n.create(t,e.sourceSpan,'Void elements do not have end tags "'.concat(e.parts[1],'"')));else if(!this._popElement(t)){var r='Unexpected closing tag "'.concat(t,'". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags');this._errors.push(n.create(t,e.sourceSpan,r))}}},{key:"_popElement",value:function(e){for(var t=this._elementStack.length-1;t>=0;t--){var r=this._elementStack[t];if(!e||(Pt.getNsPrefix(r.name)?r.name==e:r.name.toLowerCase()==e.toLowerCase()))return this._elementStack.splice(t,this._elementStack.length-t),!0;if(!this.getTagDefinition(r.name).closedByParent)return!1}return!1}},{key:"_consumeAttr",value:function(e){var t=Pt.mergeNsAndName(e.parts[0],e.parts[1]),r=e.sourceSpan.end,n="",i=void 0;if(this._peek.type===Ft.TokenType.ATTR_VALUE){var a=this._advance();n=a.parts[0],r=a.sourceSpan.end,i=a.sourceSpan}return new Ut.Attribute(t,n,new Mt.ParseSourceSpan(e.sourceSpan.start,r),i,e.sourceSpan)}},{key:"_getParentElement",value:function(){return this._elementStack.length>0?this._elementStack[this._elementStack.length-1]:null}},{key:"_getParentElementSkippingContainers",value:function(){for(var e=null,t=this._elementStack.length-1;t>=0;t--){if(!Pt.isNgContainer(this._elementStack[t].name))return{parent:this._elementStack[t],container:e};e=this._elementStack[t]}return{parent:null,container:e}}},{key:"_addToParent",value:function(e){var t=this._getParentElement();null!=t?t.children.push(e):this._rootNodes.push(e)}},{key:"_insertBeforeContainer",value:function(e,t,r){if(t){if(e){var n=e.children.indexOf(t);e.children[n]=r}else this._rootNodes.push(r);r.children.push(t),this._elementStack.splice(this._elementStack.indexOf(t),0,r)}else this._addToParent(r),this._elementStack.push(r)}},{key:"_getElementFullName",value:function(e,t,r){return null==e&&null==(e=this.getTagDefinition(t).implicitNamespacePrefix)&&null!=r&&(e=Pt.getNsPrefix(r.name)),Pt.mergeNsAndName(e,t)}}]),e}();function p(e,t){return e.length>0&&e[e.length-1]===t}}));ze(Vt);Vt.TreeError,Vt.ParseTreeResult,Vt.Parser;var jt=We((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0});var n=Vt;t.ParseTreeResult=n.ParseTreeResult,t.TreeError=n.TreeError;var s=function(e){function t(){return r(this,t),l(this,o(t).call(this,Dt.getHtmlTagDefinition))}return a(t,e),i(t,[{key:"parse",value:function(e,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Lt.DEFAULT_INTERPOLATION_CONFIG,a=arguments.length>4&&void 0!==arguments[4]&&arguments[4],s=arguments.length>5&&void 0!==arguments[5]&&arguments[5],l=arguments.length>6&&void 0!==arguments[6]&&arguments[6];return c(o(t.prototype),"parse",this).call(this,e,r,n,i,a,s,l)}}]),t}(Vt.Parser);t.HtmlParser=s}));ze(jt);jt.ParseTreeResult,jt.TreeError,jt.HtmlParser;var Gt=We((function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var r=null,n=function(){return r||(r=new jt.HtmlParser),r};t.parse=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.canSelfClose,i=void 0!==r&&r,a=t.allowHtmComponentClosingTags,o=void 0!==a&&a,s=t.isTagNameCaseSensitive,l=void 0!==s&&s;return n().parse(e,"angular-html-parser",!1,void 0,i,o,l)}}));ze(Gt);Gt.parse;var Ht=_t.HTML_ELEMENT_ATTRIBUTES,Xt=_t.HTML_TAGS,zt=Tt,Wt=wt.Node,Qt=xt;function Jt(e,t){var n=t.recognizeSelfClosing,s=t.normalizeTagName,c=t.normalizeAttributeName,u=t.allowHtmComponentClosingTags,p=t.isTagNameCaseSensitive,h=Gt,d=Ut.RecursiveVisitor,f=Ut.visitAll,m=Ut.Attribute,g=Ut.CDATA,v=Ut.Comment,y=Ut.DocType,_=Ut.Element,T=Ut.Text,b=Mt.ParseSourceSpan,S=Dt.getHtmlTagDefinition,C=h.parse(e,{canSelfClose:n,allowHtmComponentClosingTags:u,isTagNameCaseSensitive:p}),E=C.rootNodes,k=C.errors;if(0!==k.length){var A=k[0],w=A.msg,N=A.span.start,x=N.line,P=N.col;throw bt(w,{start:{line:x+1,column:P+1}})}var D=function(e){var t=e.name.startsWith(":")?e.name.slice(1).split(":")[0]:null,r=e.nameSpan?e.nameSpan.toString():e.name,n=r.startsWith("".concat(t,":")),i=n?r.slice(t.length+1):r;e.name=i,e.namespace=t,e.hasExplicitNamespace=n},O=function(e,t){var r=e.toLowerCase();return t(r)?r:e};return f(new(function(e){function t(){return r(this,t),l(this,o(t).apply(this,arguments))}return a(t,e),i(t,[{key:"visit",value:function(e){!function(e){if(e instanceof m)e.type="attribute";else if(e instanceof g)e.type="cdata";else if(e instanceof v)e.type="comment";else if(e instanceof y)e.type="docType";else if(e instanceof _)e.type="element";else{if(!(e instanceof T))throw new Error("Unexpected node ".concat(JSON.stringify(e)));e.type="text"}}(e),function(e){e instanceof _?(D(e),e.attrs.forEach((function(e){D(e),e.valueSpan?(e.value=e.valueSpan.toString(),/['"]/.test(e.value[0])&&(e.value=e.value.slice(1,-1))):e.value=null}))):e instanceof v?e.value=e.sourceSpan.toString().slice("\x3c!--".length,-"--\x3e".length):e instanceof T&&(e.value=e.sourceSpan.toString())}(e),function(e){if(e instanceof _){var t=S(p?e.name:e.name.toLowerCase());e.namespace&&e.namespace!==t.implicitNamespacePrefix?e.tagDefinition=S(""):e.tagDefinition=t}}(e),function(e){if(e instanceof _&&(!s||e.namespace&&e.namespace!==e.tagDefinition.implicitNamespacePrefix||(e.name=O(e.name,(function(e){return e in Xt}))),c)){var t=Ht[e.name]||Object.create(null);e.attrs.forEach((function(r){r.namespace||(r.name=O(r.name,(function(r){return e.name in Ht&&(r in Ht["*"]||r in t)})))}))}}(e),function(e){e.sourceSpan&&e.endSourceSpan&&(e.sourceSpan=new b(e.sourceSpan.start,e.endSourceSpan.end))}(e)}}]),t}(d)),E),E}function Kt(e){return e.sourceSpan.start.offset}function Yt(e){return e.sourceSpan.end.offset}function Zt(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.recognizeSelfClosing,r=void 0!==t&&t,n=e.normalizeTagName,i=void 0!==n&&n,a=e.normalizeAttributeName,o=void 0!==a&&a,s=e.allowHtmComponentClosingTags,l=void 0!==s&&s,c=e.isTagNameCaseSensitive,u=void 0!==c&&c;return{parse:function(e,t,n){return function e(t,r,n){var i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3]?f(t):{frontMatter:null,content:t},a=i.frontMatter,o=i.content,s={type:"root",sourceSpan:{start:{offset:0},end:{offset:t.length}},children:Jt(o,n)};a&&s.children.unshift(a);var l=new Wt(s),c=function(i,a){var o=a.offset,s=e(t.slice(0,o).replace(/[^\r\n]/g," ")+i,r,n,!1),l=s.children[0].sourceSpan.constructor;s.sourceSpan=new l(a,s.children[s.children.length-1].sourceSpan.end);var c=s.children[0];return c.length===o?s.children.shift():(c.sourceSpan=new l(c.sourceSpan.start.moveBy(o),c.sourceSpan.end),c.value=c.value.slice(o)),s},u=function(e){return"element"===e.type&&!e.nameSpan};return l.map((function(e){if(e.children&&e.children.some(u)){var t=[],r=!0,n=!1,i=void 0;try{for(var a,o=e.children[Symbol.iterator]();!(r=(a=o.next()).done);r=!0){var s=a.value;u(s)?Array.prototype.push.apply(t,s.children):t.push(s)}}catch(e){n=!0,i=e}finally{try{r||null==o.return||o.return()}finally{if(n)throw i}}return e.clone({children:t})}if("comment"===e.type){var l=Qt(e,c);if(l)return l}return e}))}(e,n,{recognizeSelfClosing:r,normalizeTagName:i,normalizeAttributeName:o,allowHtmComponentClosingTags:l,isTagNameCaseSensitive:u})},hasPragma:zt,astFormat:"html",locStart:Kt,locEnd:Yt}}var er={parsers:{html:Zt({recognizeSelfClosing:!0,normalizeTagName:!0,normalizeAttributeName:!0,allowHtmComponentClosingTags:!0}),angular:Zt(),vue:Zt({recognizeSelfClosing:!0,isTagNameCaseSensitive:!0}),lwc:Zt()}},tr=er.parsers;e.default=er,e.parsers=tr,Object.defineProperty(e,"__esModule",{value:!0})}));
diff --git a/node_modules/prettier/parser-markdown.js b/node_modules/prettier/parser-markdown.js
new file mode 100644
index 0000000..a572722
--- /dev/null
+++ b/node_modules/prettier/parser-markdown.js
@@ -0,0 +1,132 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(((e=e||self).prettierPlugins=e.prettierPlugins||{},e.prettierPlugins.markdown={}))}(this,(function(e){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function i(e,t,r){return t&&n(e.prototype,t),r&&n(e,r),e}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&u(e,t)}function o(e){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function u(e,t){return(u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function s(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function c(e,t,r){return(c="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=o(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(r):i.value}})(e,t,r||e)}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var r=[],n=!0,i=!1,a=void 0;try{for(var o,u=e[Symbol.iterator]();!(n=(o=u.next()).done)&&(r.push(o.value),!t||r.length!==t);n=!0);}catch(e){i=!0,a=e}finally{try{n||null==u.return||u.return()}finally{if(i)throw a}}return r}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}var p=function(){for(var e={},t=0;t<arguments.length;t++){var r=arguments[t];for(var n in r)f.call(r,n)&&(e[n]=r[n])}return e},f=Object.prototype.hasOwnProperty;function h(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function d(e,t){return e(t={exports:{}},t.exports),t.exports}function D(e){return e&&e.default||e}var g=Object.freeze({__proto__:null,default:{}}),m=d((function(e){"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}})),v=D(g),b=d((function(e){try{var t=v;if("function"!=typeof t.inherits)throw"";e.exports=t.inherits}catch(t){e.exports=m}})),y=function(e){var r,n,i;for(n in b(o,e),b(a,o),r=o.prototype)(i=r[n])&&"object"===t(i)&&(r[n]="concat"in i?i.concat():p(i));return o;function a(t){return e.apply(this,t)}function o(){return this instanceof o?e.apply(this,arguments):new a(arguments)}}
+/**
+ * @author Titus Wormer
+ * @copyright 2016 Titus Wormer
+ * @license MIT
+ * @module state-toggle
+ * @fileoverview Enter/exit a state.
+ */;var E=function(e,t,r){return function(){var n=r||this,i=n[e];return n[e]=!t,function(){n[e]=i}}};var C=function(e){var t=function(e){var t=[],r=e.indexOf("\n");for(;-1!==r;)t.push(r+1),r=e.indexOf("\n",r+1);return t.push(e.length+1),t}(String(e));return{toPosition:A(t),toOffset:w(t)}};function A(e){return function(t){var r=-1,n=e.length;if(t<0)return{};for(;++r<n;)if(e[r]>t)return{line:r+1,column:t-(e[r-1]||0)+1,offset:t};return{}}}function w(e){return function(t){var r=t&&t.line,n=t&&t.column;if(!isNaN(r)&&!isNaN(n)&&r-1 in e)return(e[r-2]||0)+n-1||0;return-1}}var k=function(e,t){return function(r){var n,i=0,a=r.indexOf("\\"),o=e[t],u=[];for(;-1!==a;)u.push(r.slice(i,a)),i=a+1,(n=r.charAt(i))&&-1!==o.indexOf(n)||u.push("\\"),a=r.indexOf("\\",i);return u.push(r.slice(i)),u.join("")}};var T={AEli:"Æ",AElig:"Æ",AM:"&",AMP:"&",Aacut:"Á",Aacute:"Á",Abreve:"Ă",Acir:"Â",Acirc:"Â",Acy:"А",Afr:"𝔄",Agrav:"À",Agrave:"À",Alpha:"Α",Amacr:"Ā",And:"⩓",Aogon:"Ą",Aopf:"𝔸",ApplyFunction:"⁡",Arin:"Å",Aring:"Å",Ascr:"𝒜",Assign:"≔",Atild:"Ã",Atilde:"Ã",Aum:"Ä",Auml:"Ä",Backslash:"∖",Barv:"⫧",Barwed:"⌆",Bcy:"Б",Because:"∵",Bernoullis:"ℬ",Beta:"Β",Bfr:"𝔅",Bopf:"𝔹",Breve:"˘",Bscr:"ℬ",Bumpeq:"≎",CHcy:"Ч",COP:"©",COPY:"©",Cacute:"Ć",Cap:"⋒",CapitalDifferentialD:"ⅅ",Cayleys:"ℭ",Ccaron:"Č",Ccedi:"Ç",Ccedil:"Ç",Ccirc:"Ĉ",Cconint:"∰",Cdot:"Ċ",Cedilla:"¸",CenterDot:"·",Cfr:"ℭ",Chi:"Χ",CircleDot:"⊙",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",Colon:"∷",Colone:"⩴",Congruent:"≡",Conint:"∯",ContourIntegral:"∮",Copf:"ℂ",Coproduct:"∐",CounterClockwiseContourIntegral:"∳",Cross:"⨯",Cscr:"𝒞",Cup:"⋓",CupCap:"≍",DD:"ⅅ",DDotrahd:"⤑",DJcy:"Ђ",DScy:"Ѕ",DZcy:"Џ",Dagger:"‡",Darr:"↡",Dashv:"⫤",Dcaron:"Ď",Dcy:"Д",Del:"∇",Delta:"Δ",Dfr:"𝔇",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",Diamond:"⋄",DifferentialD:"ⅆ",Dopf:"𝔻",Dot:"¨",DotDot:"⃜",DotEqual:"≐",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",Downarrow:"⇓",Dscr:"𝒟",Dstrok:"Đ",ENG:"Ŋ",ET:"Ð",ETH:"Ð",Eacut:"É",Eacute:"É",Ecaron:"Ě",Ecir:"Ê",Ecirc:"Ê",Ecy:"Э",Edot:"Ė",Efr:"𝔈",Egrav:"È",Egrave:"È",Element:"∈",Emacr:"Ē",EmptySmallSquare:"◻",EmptyVerySmallSquare:"▫",Eogon:"Ę",Eopf:"𝔼",Epsilon:"Ε",Equal:"⩵",EqualTilde:"≂",Equilibrium:"⇌",Escr:"ℰ",Esim:"⩳",Eta:"Η",Eum:"Ë",Euml:"Ë",Exists:"∃",ExponentialE:"ⅇ",Fcy:"Ф",Ffr:"𝔉",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",Fopf:"𝔽",ForAll:"∀",Fouriertrf:"ℱ",Fscr:"ℱ",GJcy:"Ѓ",G:">",GT:">",Gamma:"Γ",Gammad:"Ϝ",Gbreve:"Ğ",Gcedil:"Ģ",Gcirc:"Ĝ",Gcy:"Г",Gdot:"Ġ",Gfr:"𝔊",Gg:"⋙",Gopf:"𝔾",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",Gt:"≫",HARDcy:"Ъ",Hacek:"ˇ",Hat:"^",Hcirc:"Ĥ",Hfr:"ℌ",HilbertSpace:"ℋ",Hopf:"ℍ",HorizontalLine:"─",Hscr:"ℋ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",IEcy:"Е",IJlig:"IJ",IOcy:"Ё",Iacut:"Í",Iacute:"Í",Icir:"Î",Icirc:"Î",Icy:"И",Idot:"İ",Ifr:"ℑ",Igrav:"Ì",Igrave:"Ì",Im:"ℑ",Imacr:"Ī",ImaginaryI:"ⅈ",Implies:"⇒",Int:"∬",Integral:"∫",Intersection:"⋂",InvisibleComma:"⁣",InvisibleTimes:"⁢",Iogon:"Į",Iopf:"𝕀",Iota:"Ι",Iscr:"ℐ",Itilde:"Ĩ",Iukcy:"І",Ium:"Ï",Iuml:"Ï",Jcirc:"Ĵ",Jcy:"Й",Jfr:"𝔍",Jopf:"𝕁",Jscr:"𝒥",Jsercy:"Ј",Jukcy:"Є",KHcy:"Х",KJcy:"Ќ",Kappa:"Κ",Kcedil:"Ķ",Kcy:"К",Kfr:"𝔎",Kopf:"𝕂",Kscr:"𝒦",LJcy:"Љ",L:"<",LT:"<",Lacute:"Ĺ",Lambda:"Λ",Lang:"⟪",Laplacetrf:"ℒ",Larr:"↞",Lcaron:"Ľ",Lcedil:"Ļ",Lcy:"Л",LeftAngleBracket:"⟨",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",LeftRightArrow:"↔",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",Leftarrow:"⇐",Leftrightarrow:"⇔",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",LessLess:"⪡",LessSlantEqual:"⩽",LessTilde:"≲",Lfr:"𝔏",Ll:"⋘",Lleftarrow:"⇚",Lmidot:"Ŀ",LongLeftArrow:"⟵",LongLeftRightArrow:"⟷",LongRightArrow:"⟶",Longleftarrow:"⟸",Longleftrightarrow:"⟺",Longrightarrow:"⟹",Lopf:"𝕃",LowerLeftArrow:"↙",LowerRightArrow:"↘",Lscr:"ℒ",Lsh:"↰",Lstrok:"Ł",Lt:"≪",Map:"⤅",Mcy:"М",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",MinusPlus:"∓",Mopf:"𝕄",Mscr:"ℳ",Mu:"Μ",NJcy:"Њ",Nacute:"Ń",Ncaron:"Ň",Ncedil:"Ņ",Ncy:"Н",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",Nfr:"𝔑",NoBreak:"⁠",NonBreakingSpace:" ",Nopf:"ℕ",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",Nscr:"𝒩",Ntild:"Ñ",Ntilde:"Ñ",Nu:"Ν",OElig:"Œ",Oacut:"Ó",Oacute:"Ó",Ocir:"Ô",Ocirc:"Ô",Ocy:"О",Odblac:"Ő",Ofr:"𝔒",Ograv:"Ò",Ograve:"Ò",Omacr:"Ō",Omega:"Ω",Omicron:"Ο",Oopf:"𝕆",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",Or:"⩔",Oscr:"𝒪",Oslas:"Ø",Oslash:"Ø",Otild:"Õ",Otilde:"Õ",Otimes:"⨷",Oum:"Ö",Ouml:"Ö",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",PartialD:"∂",Pcy:"П",Pfr:"𝔓",Phi:"Φ",Pi:"Π",PlusMinus:"±",Poincareplane:"ℌ",Popf:"ℙ",Pr:"⪻",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",Prime:"″",Product:"∏",Proportion:"∷",Proportional:"∝",Pscr:"𝒫",Psi:"Ψ",QUO:'"',QUOT:'"',Qfr:"𝔔",Qopf:"ℚ",Qscr:"𝒬",RBarr:"⤐",RE:"®",REG:"®",Racute:"Ŕ",Rang:"⟫",Rarr:"↠",Rarrtl:"⤖",Rcaron:"Ř",Rcedil:"Ŗ",Rcy:"Р",Re:"ℜ",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",Rfr:"ℜ",Rho:"Ρ",RightAngleBracket:"⟩",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",Rightarrow:"⇒",Ropf:"ℝ",RoundImplies:"⥰",Rrightarrow:"⇛",Rscr:"ℛ",Rsh:"↱",RuleDelayed:"⧴",SHCHcy:"Щ",SHcy:"Ш",SOFTcy:"Ь",Sacute:"Ś",Sc:"⪼",Scaron:"Š",Scedil:"Ş",Scirc:"Ŝ",Scy:"С",Sfr:"𝔖",ShortDownArrow:"↓",ShortLeftArrow:"←",ShortRightArrow:"→",ShortUpArrow:"↑",Sigma:"Σ",SmallCircle:"∘",Sopf:"𝕊",Sqrt:"√",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",Sscr:"𝒮",Star:"⋆",Sub:"⋐",Subset:"⋐",SubsetEqual:"⊆",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",SuchThat:"∋",Sum:"∑",Sup:"⋑",Superset:"⊃",SupersetEqual:"⊇",Supset:"⋑",THOR:"Þ",THORN:"Þ",TRADE:"™",TSHcy:"Ћ",TScy:"Ц",Tab:"\t",Tau:"Τ",Tcaron:"Ť",Tcedil:"Ţ",Tcy:"Т",Tfr:"𝔗",Therefore:"∴",Theta:"Θ",ThickSpace:"  ",ThinSpace:" ",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",Topf:"𝕋",TripleDot:"⃛",Tscr:"𝒯",Tstrok:"Ŧ",Uacut:"Ú",Uacute:"Ú",Uarr:"↟",Uarrocir:"⥉",Ubrcy:"Ў",Ubreve:"Ŭ",Ucir:"Û",Ucirc:"Û",Ucy:"У",Udblac:"Ű",Ufr:"𝔘",Ugrav:"Ù",Ugrave:"Ù",Umacr:"Ū",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",Uopf:"𝕌",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",UpDownArrow:"↕",UpEquilibrium:"⥮",UpTee:"⊥",UpTeeArrow:"↥",Uparrow:"⇑",Updownarrow:"⇕",UpperLeftArrow:"↖",UpperRightArrow:"↗",Upsi:"ϒ",Upsilon:"Υ",Uring:"Ů",Uscr:"𝒰",Utilde:"Ũ",Uum:"Ü",Uuml:"Ü",VDash:"⊫",Vbar:"⫫",Vcy:"В",Vdash:"⊩",Vdashl:"⫦",Vee:"⋁",Verbar:"‖",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",Vopf:"𝕍",Vscr:"𝒱",Vvdash:"⊪",Wcirc:"Ŵ",Wedge:"⋀",Wfr:"𝔚",Wopf:"𝕎",Wscr:"𝒲",Xfr:"𝔛",Xi:"Ξ",Xopf:"𝕏",Xscr:"𝒳",YAcy:"Я",YIcy:"Ї",YUcy:"Ю",Yacut:"Ý",Yacute:"Ý",Ycirc:"Ŷ",Ycy:"Ы",Yfr:"𝔜",Yopf:"𝕐",Yscr:"𝒴",Yuml:"Ÿ",ZHcy:"Ж",Zacute:"Ź",Zcaron:"Ž",Zcy:"З",Zdot:"Ż",ZeroWidthSpace:"​",Zeta:"Ζ",Zfr:"ℨ",Zopf:"ℤ",Zscr:"𝒵",aacut:"á",aacute:"á",abreve:"ă",ac:"∾",acE:"∾̳",acd:"∿",acir:"â",acirc:"â",acut:"´",acute:"´",acy:"а",aeli:"æ",aelig:"æ",af:"⁡",afr:"𝔞",agrav:"à",agrave:"à",alefsym:"ℵ",aleph:"ℵ",alpha:"α",amacr:"ā",amalg:"⨿",am:"&",amp:"&",and:"∧",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",aopf:"𝕒",ap:"≈",apE:"⩰",apacir:"⩯",ape:"≊",apid:"≋",apos:"'",approx:"≈",approxeq:"≊",arin:"å",aring:"å",ascr:"𝒶",ast:"*",asymp:"≈",asympeq:"≍",atild:"ã",atilde:"ã",aum:"ä",auml:"ä",awconint:"∳",awint:"⨑",bNot:"⫭",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",barvee:"⊽",barwed:"⌅",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",bdquo:"„",becaus:"∵",because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",beta:"β",beth:"ℶ",between:"≬",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxDL:"╗",boxDR:"╔",boxDl:"╖",boxDr:"╓",boxH:"═",boxHD:"╦",boxHU:"╩",boxHd:"╤",boxHu:"╧",boxUL:"╝",boxUR:"╚",boxUl:"╜",boxUr:"╙",boxV:"║",boxVH:"╬",boxVL:"╣",boxVR:"╠",boxVh:"╫",boxVl:"╢",boxVr:"╟",boxbox:"⧉",boxdL:"╕",boxdR:"╒",boxdl:"┐",boxdr:"┌",boxh:"─",boxhD:"╥",boxhU:"╨",boxhd:"┬",boxhu:"┴",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxuL:"╛",boxuR:"╘",boxul:"┘",boxur:"└",boxv:"│",boxvH:"╪",boxvL:"╡",boxvR:"╞",boxvh:"┼",boxvl:"┤",boxvr:"├",bprime:"‵",breve:"˘",brvba:"¦",brvbar:"¦",bscr:"𝒷",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",bumpeq:"≏",cacute:"ć",cap:"∩",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",caps:"∩︀",caret:"⁁",caron:"ˇ",ccaps:"⩍",ccaron:"č",ccedi:"ç",ccedil:"ç",ccirc:"ĉ",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",cedi:"¸",cedil:"¸",cemptyv:"⦲",cen:"¢",cent:"¢",centerdot:"·",cfr:"𝔠",chcy:"ч",check:"✓",checkmark:"✓",chi:"χ",cir:"○",cirE:"⧃",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledR:"®",circledS:"Ⓢ",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",clubs:"♣",clubsuit:"♣",colon:":",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",conint:"∮",copf:"𝕔",coprod:"∐",cop:"©",copy:"©",copysr:"℗",crarr:"↵",cross:"✗",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",cupbrcap:"⩈",cupcap:"⩆",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curre:"¤",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dArr:"⇓",dHar:"⥥",dagger:"†",daleth:"ℸ",darr:"↓",dash:"‐",dashv:"⊣",dbkarow:"⤏",dblac:"˝",dcaron:"ď",dcy:"д",dd:"ⅆ",ddagger:"‡",ddarr:"⇊",ddotseq:"⩷",de:"°",deg:"°",delta:"δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",dharl:"⇃",dharr:"⇂",diam:"⋄",diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",digamma:"ϝ",disin:"⋲",div:"÷",divid:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",dot:"˙",doteq:"≐",doteqdot:"≑",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",downarrow:"↓",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",dscy:"ѕ",dsol:"⧶",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",dzigrarr:"⟿",eDDot:"⩷",eDot:"≑",eacut:"é",eacute:"é",easter:"⩮",ecaron:"ě",ecir:"ê",ecirc:"ê",ecolon:"≕",ecy:"э",edot:"ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",eg:"⪚",egrav:"è",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",empty:"∅",emptyset:"∅",emptyv:"∅",emsp13:" ",emsp14:" ",emsp:" ",eng:"ŋ",ensp:" ",eogon:"ę",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",equals:"=",equest:"≟",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erDot:"≓",erarr:"⥱",escr:"ℯ",esdot:"≐",esim:"≂",eta:"η",et:"ð",eth:"ð",eum:"ë",euml:"ë",euro:"€",excl:"!",exist:"∃",expectation:"ℰ",exponentiale:"ⅇ",fallingdotseq:"≒",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",ffr:"𝔣",filig:"fi",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",fopf:"𝕗",forall:"∀",fork:"⋔",forkv:"⫙",fpartint:"⨍",frac1:"¼",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac3:"¾",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",gE:"≧",gEl:"⪌",gacute:"ǵ",gamma:"γ",gammad:"ϝ",gap:"⪆",gbreve:"ğ",gcirc:"ĝ",gcy:"г",gdot:"ġ",ge:"≥",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",gg:"≫",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",gl:"≷",glE:"⪒",gla:"⪥",glj:"⪤",gnE:"≩",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",grave:"`",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",g:">",gt:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",hArr:"⇔",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",harr:"↔",harrcir:"⥈",harrw:"↭",hbar:"ℏ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",horbar:"―",hscr:"𝒽",hslash:"ℏ",hstrok:"ħ",hybull:"⁃",hyphen:"‐",iacut:"í",iacute:"í",ic:"⁣",icir:"î",icirc:"î",icy:"и",iecy:"е",iexc:"¡",iexcl:"¡",iff:"⇔",ifr:"𝔦",igrav:"ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ij",imacr:"ī",image:"ℑ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",intcal:"⊺",integers:"ℤ",intercal:"⊺",intlarhk:"⨗",intprod:"⨼",iocy:"ё",iogon:"į",iopf:"𝕚",iota:"ι",iprod:"⨼",iques:"¿",iquest:"¿",iscr:"𝒾",isin:"∈",isinE:"⋹",isindot:"⋵",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",iukcy:"і",ium:"ï",iuml:"ï",jcirc:"ĵ",jcy:"й",jfr:"𝔧",jmath:"ȷ",jopf:"𝕛",jscr:"𝒿",jsercy:"ј",jukcy:"є",kappa:"κ",kappav:"ϰ",kcedil:"ķ",kcy:"к",kfr:"𝔨",kgreen:"ĸ",khcy:"х",kjcy:"ќ",kopf:"𝕜",kscr:"𝓀",lAarr:"⇚",lArr:"⇐",lAtail:"⤛",lBarr:"⤎",lE:"≦",lEg:"⪋",lHar:"⥢",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",lang:"⟨",langd:"⦑",langle:"⟨",lap:"⪅",laqu:"«",laquo:"«",larr:"←",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",late:"⪭",lates:"⪭︀",lbarr:"⤌",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",lcedil:"ļ",lceil:"⌈",lcub:"{",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",leftarrow:"←",leftarrowtail:"↢",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",leftthreetimes:"⋋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",lessgtr:"≶",lesssim:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",lg:"≶",lgE:"⪑",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",ll:"≪",llarr:"⇇",llcorner:"⌞",llhard:"⥫",lltri:"◺",lmidot:"ŀ",lmoust:"⎰",lmoustache:"⎰",lnE:"≨",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",longleftrightarrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",l:"<",lt:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltrPar:"⦖",ltri:"◃",ltrie:"⊴",ltrif:"◂",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",mDDot:"∺",mac:"¯",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",mdash:"—",measuredangle:"∡",mfr:"𝔪",mho:"℧",micr:"µ",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middo:"·",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",mp:"∓",mscr:"𝓂",mstpos:"∾",mu:"μ",multimap:"⊸",mumap:"⊸",nGg:"⋙̸",nGt:"≫⃒",nGtv:"≫̸",nLeftarrow:"⇍",nLeftrightarrow:"⇎",nLl:"⋘̸",nLt:"≪⃒",nLtv:"≪̸",nRightarrow:"⇏",nVDash:"⊯",nVdash:"⊮",nabla:"∇",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbs:" ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",ndash:"–",ne:"≠",neArr:"⇗",nearhk:"⤤",nearr:"↗",nearrow:"↗",nedot:"≐̸",nequiv:"≢",nesear:"⤨",nesim:"≂̸",nexist:"∄",nexists:"∄",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",ngsim:"≵",ngt:"≯",ngtr:"≯",nhArr:"⇎",nharr:"↮",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",nlArr:"⇍",nlE:"≦̸",nlarr:"↚",nldr:"‥",nle:"≰",nleftarrow:"↚",nleftrightarrow:"↮",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nlsim:"≴",nlt:"≮",nltri:"⋪",nltrie:"⋬",nmid:"∤",nopf:"𝕟",no:"¬",not:"¬",notin:"∉",notinE:"⋹̸",notindot:"⋵̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrArr:"⇏",nrarr:"↛",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntild:"ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",num:"#",numero:"№",numsp:" ",nvDash:"⊭",nvHarr:"⤄",nvap:"≍⃒",nvdash:"⊬",nvge:"≥⃒",nvgt:">⃒",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwArr:"⇖",nwarhk:"⤣",nwarr:"↖",nwarrow:"↖",nwnear:"⤧",oS:"Ⓢ",oacut:"ó",oacute:"ó",oast:"⊛",ocir:"ô",ocirc:"ô",ocy:"о",odash:"⊝",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",ofcir:"⦿",ofr:"𝔬",ogon:"˛",ograv:"ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",omega:"ω",omicron:"ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",opar:"⦷",operp:"⦹",oplus:"⊕",or:"∨",orarr:"↻",ord:"º",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oscr:"ℴ",oslas:"ø",oslash:"ø",osol:"⊘",otild:"õ",otilde:"õ",otimes:"⊗",otimesas:"⨶",oum:"ö",ouml:"ö",ovbar:"⌽",par:"¶",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",plusm:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",pointint:"⨕",popf:"𝕡",poun:"£",pound:"£",pr:"≺",prE:"⪳",prap:"⪷",prcue:"≼",pre:"⪯",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",primes:"ℙ",prnE:"⪵",prnap:"⪹",prnsim:"⋨",prod:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",psi:"ψ",puncsp:" ",qfr:"𝔮",qint:"⨌",qopf:"𝕢",qprime:"⁗",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quo:'"',quot:'"',rAarr:"⇛",rArr:"⇒",rAtail:"⤜",rBarr:"⤏",rHar:"⥤",race:"∽̱",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",rangd:"⦒",range:"⦥",rangle:"⟩",raqu:"»",raquo:"»",rarr:"→",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",rarrw:"↝",ratail:"⤚",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",rcedil:"ŗ",rceil:"⌉",rcub:"}",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",re:"®",reg:"®",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",rhov:"ϱ",rightarrow:"→",rightarrowtail:"↣",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",rightthreetimes:"⋌",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",roplus:"⨮",rotimes:"⨵",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",rsaquo:"›",rscr:"𝓇",rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",ruluhar:"⥨",rx:"℞",sacute:"ś",sbquo:"‚",sc:"≻",scE:"⪴",scap:"⪸",scaron:"š",sccue:"≽",sce:"⪰",scedil:"ş",scirc:"ŝ",scnE:"⪶",scnap:"⪺",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",sdot:"⋅",sdotb:"⊡",sdote:"⩦",seArr:"⇘",searhk:"⤥",searr:"↘",searrow:"↘",sec:"§",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",sfrown:"⌢",sharp:"♯",shchcy:"щ",shcy:"ш",shortmid:"∣",shortparallel:"∥",sh:"­",shy:"­",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",subE:"⫅",subdot:"⪽",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",subseteq:"⊆",subseteqq:"⫅",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",sum:"∑",sung:"♪",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supE:"⫆",supdot:"⪾",supdsub:"⫘",supe:"⊇",supedot:"⫄",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swArr:"⇙",swarhk:"⤦",swarr:"↙",swarrow:"↙",swnwar:"⤪",szli:"ß",szlig:"ß",target:"⌖",tau:"τ",tbrk:"⎴",tcaron:"ť",tcedil:"ţ",tcy:"т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",there4:"∴",therefore:"∴",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",thinsp:" ",thkap:"≈",thksim:"∼",thor:"þ",thorn:"þ",tilde:"˜",time:"×",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",tscy:"ц",tshcy:"ћ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uArr:"⇑",uHar:"⥣",uacut:"ú",uacute:"ú",uarr:"↑",ubrcy:"ў",ubreve:"ŭ",ucir:"û",ucirc:"û",ucy:"у",udarr:"⇅",udblac:"ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",ugrav:"ù",ugrave:"ù",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",um:"¨",uml:"¨",uogon:"ų",uopf:"𝕦",uparrow:"↑",updownarrow:"↕",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",upsi:"υ",upsih:"ϒ",upsilon:"υ",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",urtri:"◹",uscr:"𝓊",utdot:"⋰",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uum:"ü",uuml:"ü",uwangle:"⦧",vArr:"⇕",vBar:"⫨",vBarv:"⫩",vDash:"⊨",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vcy:"в",vdash:"⊢",vee:"∨",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",vert:"|",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",vprop:"∝",vrtri:"⊳",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",vzigzag:"⦚",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",wedgeq:"≙",weierp:"℘",wfr:"𝔴",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",xhArr:"⟺",xharr:"⟷",xi:"ξ",xlArr:"⟸",xlarr:"⟵",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrArr:"⟹",xrarr:"⟶",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacut:"ý",yacute:"ý",yacy:"я",ycirc:"ŷ",ycy:"ы",ye:"¥",yen:"¥",yfr:"𝔶",yicy:"ї",yopf:"𝕪",yscr:"𝓎",yucy:"ю",yum:"ÿ",yuml:"ÿ",zacute:"ź",zcaron:"ž",zcy:"з",zdot:"ż",zeetrf:"ℨ",zeta:"ζ",zfr:"𝔷",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",zscr:"𝓏",zwj:"‍",zwnj:"‌"},_=Object.freeze({__proto__:null,AEli:"Æ",AElig:"Æ",AM:"&",AMP:"&",Aacut:"Á",Aacute:"Á",Abreve:"Ă",Acir:"Â",Acirc:"Â",Acy:"А",Afr:"𝔄",Agrav:"À",Agrave:"À",Alpha:"Α",Amacr:"Ā",And:"⩓",Aogon:"Ą",Aopf:"𝔸",ApplyFunction:"⁡",Arin:"Å",Aring:"Å",Ascr:"𝒜",Assign:"≔",Atild:"Ã",Atilde:"Ã",Aum:"Ä",Auml:"Ä",Backslash:"∖",Barv:"⫧",Barwed:"⌆",Bcy:"Б",Because:"∵",Bernoullis:"ℬ",Beta:"Β",Bfr:"𝔅",Bopf:"𝔹",Breve:"˘",Bscr:"ℬ",Bumpeq:"≎",CHcy:"Ч",COP:"©",COPY:"©",Cacute:"Ć",Cap:"⋒",CapitalDifferentialD:"ⅅ",Cayleys:"ℭ",Ccaron:"Č",Ccedi:"Ç",Ccedil:"Ç",Ccirc:"Ĉ",Cconint:"∰",Cdot:"Ċ",Cedilla:"¸",CenterDot:"·",Cfr:"ℭ",Chi:"Χ",CircleDot:"⊙",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",Colon:"∷",Colone:"⩴",Congruent:"≡",Conint:"∯",ContourIntegral:"∮",Copf:"ℂ",Coproduct:"∐",CounterClockwiseContourIntegral:"∳",Cross:"⨯",Cscr:"𝒞",Cup:"⋓",CupCap:"≍",DD:"ⅅ",DDotrahd:"⤑",DJcy:"Ђ",DScy:"Ѕ",DZcy:"Џ",Dagger:"‡",Darr:"↡",Dashv:"⫤",Dcaron:"Ď",Dcy:"Д",Del:"∇",Delta:"Δ",Dfr:"𝔇",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",Diamond:"⋄",DifferentialD:"ⅆ",Dopf:"𝔻",Dot:"¨",DotDot:"⃜",DotEqual:"≐",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",Downarrow:"⇓",Dscr:"𝒟",Dstrok:"Đ",ENG:"Ŋ",ET:"Ð",ETH:"Ð",Eacut:"É",Eacute:"É",Ecaron:"Ě",Ecir:"Ê",Ecirc:"Ê",Ecy:"Э",Edot:"Ė",Efr:"𝔈",Egrav:"È",Egrave:"È",Element:"∈",Emacr:"Ē",EmptySmallSquare:"◻",EmptyVerySmallSquare:"▫",Eogon:"Ę",Eopf:"𝔼",Epsilon:"Ε",Equal:"⩵",EqualTilde:"≂",Equilibrium:"⇌",Escr:"ℰ",Esim:"⩳",Eta:"Η",Eum:"Ë",Euml:"Ë",Exists:"∃",ExponentialE:"ⅇ",Fcy:"Ф",Ffr:"𝔉",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",Fopf:"𝔽",ForAll:"∀",Fouriertrf:"ℱ",Fscr:"ℱ",GJcy:"Ѓ",G:">",GT:">",Gamma:"Γ",Gammad:"Ϝ",Gbreve:"Ğ",Gcedil:"Ģ",Gcirc:"Ĝ",Gcy:"Г",Gdot:"Ġ",Gfr:"𝔊",Gg:"⋙",Gopf:"𝔾",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",Gt:"≫",HARDcy:"Ъ",Hacek:"ˇ",Hat:"^",Hcirc:"Ĥ",Hfr:"ℌ",HilbertSpace:"ℋ",Hopf:"ℍ",HorizontalLine:"─",Hscr:"ℋ",Hstrok:"Ħ",HumpDownHump:"≎",HumpEqual:"≏",IEcy:"Е",IJlig:"IJ",IOcy:"Ё",Iacut:"Í",Iacute:"Í",Icir:"Î",Icirc:"Î",Icy:"И",Idot:"İ",Ifr:"ℑ",Igrav:"Ì",Igrave:"Ì",Im:"ℑ",Imacr:"Ī",ImaginaryI:"ⅈ",Implies:"⇒",Int:"∬",Integral:"∫",Intersection:"⋂",InvisibleComma:"⁣",InvisibleTimes:"⁢",Iogon:"Į",Iopf:"𝕀",Iota:"Ι",Iscr:"ℐ",Itilde:"Ĩ",Iukcy:"І",Ium:"Ï",Iuml:"Ï",Jcirc:"Ĵ",Jcy:"Й",Jfr:"𝔍",Jopf:"𝕁",Jscr:"𝒥",Jsercy:"Ј",Jukcy:"Є",KHcy:"Х",KJcy:"Ќ",Kappa:"Κ",Kcedil:"Ķ",Kcy:"К",Kfr:"𝔎",Kopf:"𝕂",Kscr:"𝒦",LJcy:"Љ",L:"<",LT:"<",Lacute:"Ĺ",Lambda:"Λ",Lang:"⟪",Laplacetrf:"ℒ",Larr:"↞",Lcaron:"Ľ",Lcedil:"Ļ",Lcy:"Л",LeftAngleBracket:"⟨",LeftArrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",LeftRightArrow:"↔",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",Leftarrow:"⇐",Leftrightarrow:"⇔",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",LessLess:"⪡",LessSlantEqual:"⩽",LessTilde:"≲",Lfr:"𝔏",Ll:"⋘",Lleftarrow:"⇚",Lmidot:"Ŀ",LongLeftArrow:"⟵",LongLeftRightArrow:"⟷",LongRightArrow:"⟶",Longleftarrow:"⟸",Longleftrightarrow:"⟺",Longrightarrow:"⟹",Lopf:"𝕃",LowerLeftArrow:"↙",LowerRightArrow:"↘",Lscr:"ℒ",Lsh:"↰",Lstrok:"Ł",Lt:"≪",Mcy:"М",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",MinusPlus:"∓",Mopf:"𝕄",Mscr:"ℳ",Mu:"Μ",NJcy:"Њ",Nacute:"Ń",Ncaron:"Ň",Ncedil:"Ņ",Ncy:"Н",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",Nfr:"𝔑",NoBreak:"⁠",NonBreakingSpace:" ",Nopf:"ℕ",Not:"⫬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",Nscr:"𝒩",Ntild:"Ñ",Ntilde:"Ñ",Nu:"Ν",OElig:"Œ",Oacut:"Ó",Oacute:"Ó",Ocir:"Ô",Ocirc:"Ô",Ocy:"О",Odblac:"Ő",Ofr:"𝔒",Ograv:"Ò",Ograve:"Ò",Omacr:"Ō",Omega:"Ω",Omicron:"Ο",Oopf:"𝕆",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",Or:"⩔",Oscr:"𝒪",Oslas:"Ø",Oslash:"Ø",Otild:"Õ",Otilde:"Õ",Otimes:"⨷",Oum:"Ö",Ouml:"Ö",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",PartialD:"∂",Pcy:"П",Pfr:"𝔓",Phi:"Φ",Pi:"Π",PlusMinus:"±",Poincareplane:"ℌ",Popf:"ℙ",Pr:"⪻",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",Prime:"″",Product:"∏",Proportion:"∷",Proportional:"∝",Pscr:"𝒫",Psi:"Ψ",QUO:'"',QUOT:'"',Qfr:"𝔔",Qopf:"ℚ",Qscr:"𝒬",RBarr:"⤐",RE:"®",REG:"®",Racute:"Ŕ",Rang:"⟫",Rarr:"↠",Rarrtl:"⤖",Rcaron:"Ř",Rcedil:"Ŗ",Rcy:"Р",Re:"ℜ",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",Rfr:"ℜ",Rho:"Ρ",RightAngleBracket:"⟩",RightArrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",Rightarrow:"⇒",Ropf:"ℝ",RoundImplies:"⥰",Rrightarrow:"⇛",Rscr:"ℛ",Rsh:"↱",RuleDelayed:"⧴",SHCHcy:"Щ",SHcy:"Ш",SOFTcy:"Ь",Sacute:"Ś",Sc:"⪼",Scaron:"Š",Scedil:"Ş",Scirc:"Ŝ",Scy:"С",Sfr:"𝔖",ShortDownArrow:"↓",ShortLeftArrow:"←",ShortRightArrow:"→",ShortUpArrow:"↑",Sigma:"Σ",SmallCircle:"∘",Sopf:"𝕊",Sqrt:"√",Square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",Sscr:"𝒮",Star:"⋆",Sub:"⋐",Subset:"⋐",SubsetEqual:"⊆",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",SuchThat:"∋",Sum:"∑",Sup:"⋑",Superset:"⊃",SupersetEqual:"⊇",Supset:"⋑",THOR:"Þ",THORN:"Þ",TRADE:"™",TSHcy:"Ћ",TScy:"Ц",Tab:"\t",Tau:"Τ",Tcaron:"Ť",Tcedil:"Ţ",Tcy:"Т",Tfr:"𝔗",Therefore:"∴",Theta:"Θ",ThickSpace:"  ",ThinSpace:" ",Tilde:"∼",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",Topf:"𝕋",TripleDot:"⃛",Tscr:"𝒯",Tstrok:"Ŧ",Uacut:"Ú",Uacute:"Ú",Uarr:"↟",Uarrocir:"⥉",Ubrcy:"Ў",Ubreve:"Ŭ",Ucir:"Û",Ucirc:"Û",Ucy:"У",Udblac:"Ű",Ufr:"𝔘",Ugrav:"Ù",Ugrave:"Ù",Umacr:"Ū",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",Uopf:"𝕌",UpArrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",UpDownArrow:"↕",UpEquilibrium:"⥮",UpTee:"⊥",UpTeeArrow:"↥",Uparrow:"⇑",Updownarrow:"⇕",UpperLeftArrow:"↖",UpperRightArrow:"↗",Upsi:"ϒ",Upsilon:"Υ",Uring:"Ů",Uscr:"𝒰",Utilde:"Ũ",Uum:"Ü",Uuml:"Ü",VDash:"⊫",Vbar:"⫫",Vcy:"В",Vdash:"⊩",Vdashl:"⫦",Vee:"⋁",Verbar:"‖",Vert:"‖",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",Vopf:"𝕍",Vscr:"𝒱",Vvdash:"⊪",Wcirc:"Ŵ",Wedge:"⋀",Wfr:"𝔚",Wopf:"𝕎",Wscr:"𝒲",Xfr:"𝔛",Xi:"Ξ",Xopf:"𝕏",Xscr:"𝒳",YAcy:"Я",YIcy:"Ї",YUcy:"Ю",Yacut:"Ý",Yacute:"Ý",Ycirc:"Ŷ",Ycy:"Ы",Yfr:"𝔜",Yopf:"𝕐",Yscr:"𝒴",Yuml:"Ÿ",ZHcy:"Ж",Zacute:"Ź",Zcaron:"Ž",Zcy:"З",Zdot:"Ż",ZeroWidthSpace:"​",Zeta:"Ζ",Zfr:"ℨ",Zopf:"ℤ",Zscr:"𝒵",aacut:"á",aacute:"á",abreve:"ă",ac:"∾",acE:"∾̳",acd:"∿",acir:"â",acirc:"â",acut:"´",acute:"´",acy:"а",aeli:"æ",aelig:"æ",af:"⁡",afr:"𝔞",agrav:"à",agrave:"à",alefsym:"ℵ",aleph:"ℵ",alpha:"α",amacr:"ā",amalg:"⨿",am:"&",amp:"&",and:"∧",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",aogon:"ą",aopf:"𝕒",ap:"≈",apE:"⩰",apacir:"⩯",ape:"≊",apid:"≋",apos:"'",approx:"≈",approxeq:"≊",arin:"å",aring:"å",ascr:"𝒶",ast:"*",asymp:"≈",asympeq:"≍",atild:"ã",atilde:"ã",aum:"ä",auml:"ä",awconint:"∳",awint:"⨑",bNot:"⫭",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",barvee:"⊽",barwed:"⌅",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",bcy:"б",bdquo:"„",becaus:"∵",because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",beta:"β",beth:"ℶ",between:"≬",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bnot:"⌐",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxDL:"╗",boxDR:"╔",boxDl:"╖",boxDr:"╓",boxH:"═",boxHD:"╦",boxHU:"╩",boxHd:"╤",boxHu:"╧",boxUL:"╝",boxUR:"╚",boxUl:"╜",boxUr:"╙",boxV:"║",boxVH:"╬",boxVL:"╣",boxVR:"╠",boxVh:"╫",boxVl:"╢",boxVr:"╟",boxbox:"⧉",boxdL:"╕",boxdR:"╒",boxdl:"┐",boxdr:"┌",boxh:"─",boxhD:"╥",boxhU:"╨",boxhd:"┬",boxhu:"┴",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxuL:"╛",boxuR:"╘",boxul:"┘",boxur:"└",boxv:"│",boxvH:"╪",boxvL:"╡",boxvR:"╞",boxvh:"┼",boxvl:"┤",boxvr:"├",bprime:"‵",breve:"˘",brvba:"¦",brvbar:"¦",bscr:"𝒷",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",bumpeq:"≏",cacute:"ć",cap:"∩",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",caps:"∩︀",caret:"⁁",caron:"ˇ",ccaps:"⩍",ccaron:"č",ccedi:"ç",ccedil:"ç",ccirc:"ĉ",ccups:"⩌",ccupssm:"⩐",cdot:"ċ",cedi:"¸",cedil:"¸",cemptyv:"⦲",cen:"¢",cent:"¢",centerdot:"·",cfr:"𝔠",chcy:"ч",check:"✓",checkmark:"✓",chi:"χ",cir:"○",cirE:"⧃",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledR:"®",circledS:"Ⓢ",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",clubs:"♣",clubsuit:"♣",colon:":",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",conint:"∮",copf:"𝕔",coprod:"∐",cop:"©",copy:"©",copysr:"℗",crarr:"↵",cross:"✗",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",cup:"∪",cupbrcap:"⩈",cupcap:"⩆",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curre:"¤",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",dArr:"⇓",dHar:"⥥",dagger:"†",daleth:"ℸ",darr:"↓",dash:"‐",dashv:"⊣",dbkarow:"⤏",dblac:"˝",dcaron:"ď",dcy:"д",dd:"ⅆ",ddagger:"‡",ddarr:"⇊",ddotseq:"⩷",de:"°",deg:"°",delta:"δ",demptyv:"⦱",dfisht:"⥿",dfr:"𝔡",dharl:"⇃",dharr:"⇂",diam:"⋄",diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",digamma:"ϝ",disin:"⋲",div:"÷",divid:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",dopf:"𝕕",dot:"˙",doteq:"≐",doteqdot:"≑",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",downarrow:"↓",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",dscr:"𝒹",dscy:"ѕ",dsol:"⧶",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",dzcy:"џ",dzigrarr:"⟿",eDDot:"⩷",eDot:"≑",eacut:"é",eacute:"é",easter:"⩮",ecaron:"ě",ecir:"ê",ecirc:"ê",ecolon:"≕",ecy:"э",edot:"ė",ee:"ⅇ",efDot:"≒",efr:"𝔢",eg:"⪚",egrav:"è",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",emacr:"ē",empty:"∅",emptyset:"∅",emptyv:"∅",emsp13:" ",emsp14:" ",emsp:" ",eng:"ŋ",ensp:" ",eogon:"ę",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",equals:"=",equest:"≟",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erDot:"≓",erarr:"⥱",escr:"ℯ",esdot:"≐",esim:"≂",eta:"η",et:"ð",eth:"ð",eum:"ë",euml:"ë",euro:"€",excl:"!",exist:"∃",expectation:"ℰ",exponentiale:"ⅇ",fallingdotseq:"≒",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",ffr:"𝔣",filig:"fi",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",fopf:"𝕗",forall:"∀",fork:"⋔",forkv:"⫙",fpartint:"⨍",frac1:"¼",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac3:"¾",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",fscr:"𝒻",gE:"≧",gEl:"⪌",gacute:"ǵ",gamma:"γ",gammad:"ϝ",gap:"⪆",gbreve:"ğ",gcirc:"ĝ",gcy:"г",gdot:"ġ",ge:"≥",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",gfr:"𝔤",gg:"≫",ggg:"⋙",gimel:"ℷ",gjcy:"ѓ",gl:"≷",glE:"⪒",gla:"⪥",glj:"⪤",gnE:"≩",gnap:"⪊",gnapprox:"⪊",gne:"⪈",gneq:"⪈",gneqq:"≩",gnsim:"⋧",gopf:"𝕘",grave:"`",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",g:">",gt:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",hArr:"⇔",hairsp:" ",half:"½",hamilt:"ℋ",hardcy:"ъ",harr:"↔",harrcir:"⥈",harrw:"↭",hbar:"ℏ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",hfr:"𝔥",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",hopf:"𝕙",horbar:"―",hscr:"𝒽",hslash:"ℏ",hstrok:"ħ",hybull:"⁃",hyphen:"‐",iacut:"í",iacute:"í",ic:"⁣",icir:"î",icirc:"î",icy:"и",iecy:"е",iexc:"¡",iexcl:"¡",iff:"⇔",ifr:"𝔦",igrav:"ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",ijlig:"ij",imacr:"ī",image:"ℑ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",int:"∫",intcal:"⊺",integers:"ℤ",intercal:"⊺",intlarhk:"⨗",intprod:"⨼",iocy:"ё",iogon:"į",iopf:"𝕚",iota:"ι",iprod:"⨼",iques:"¿",iquest:"¿",iscr:"𝒾",isin:"∈",isinE:"⋹",isindot:"⋵",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",itilde:"ĩ",iukcy:"і",ium:"ï",iuml:"ï",jcirc:"ĵ",jcy:"й",jfr:"𝔧",jmath:"ȷ",jopf:"𝕛",jscr:"𝒿",jsercy:"ј",jukcy:"є",kappa:"κ",kappav:"ϰ",kcedil:"ķ",kcy:"к",kfr:"𝔨",kgreen:"ĸ",khcy:"х",kjcy:"ќ",kopf:"𝕜",kscr:"𝓀",lAarr:"⇚",lArr:"⇐",lAtail:"⤛",lBarr:"⤎",lE:"≦",lEg:"⪋",lHar:"⥢",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",lambda:"λ",lang:"⟨",langd:"⦑",langle:"⟨",lap:"⪅",laqu:"«",laquo:"«",larr:"←",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",latail:"⤙",late:"⪭",lates:"⪭︀",lbarr:"⤌",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",lcaron:"ľ",lcedil:"ļ",lceil:"⌈",lcub:"{",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",le:"≤",leftarrow:"←",leftarrowtail:"↢",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",leftrightarrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",leftthreetimes:"⋋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",lessgtr:"≶",lesssim:"≲",lfisht:"⥼",lfloor:"⌊",lfr:"𝔩",lg:"≶",lgE:"⪑",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",ljcy:"љ",ll:"≪",llarr:"⇇",llcorner:"⌞",llhard:"⥫",lltri:"◺",lmidot:"ŀ",lmoust:"⎰",lmoustache:"⎰",lnE:"≨",lnap:"⪉",lnapprox:"⪉",lne:"⪇",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",longleftarrow:"⟵",longleftrightarrow:"⟷",longmapsto:"⟼",longrightarrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",lscr:"𝓁",lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",lstrok:"ł",l:"<",lt:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltrPar:"⦖",ltri:"◃",ltrie:"⊴",ltrif:"◂",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",mDDot:"∺",mac:"¯",macr:"¯",male:"♂",malt:"✠",maltese:"✠",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",mcy:"м",mdash:"—",measuredangle:"∡",mfr:"𝔪",mho:"℧",micr:"µ",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middo:"·",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",mopf:"𝕞",mp:"∓",mscr:"𝓂",mstpos:"∾",mu:"μ",multimap:"⊸",mumap:"⊸",nGg:"⋙̸",nGt:"≫⃒",nGtv:"≫̸",nLeftarrow:"⇍",nLeftrightarrow:"⇎",nLl:"⋘̸",nLt:"≪⃒",nLtv:"≪̸",nRightarrow:"⇏",nVDash:"⊯",nVdash:"⊮",nabla:"∇",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbs:" ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",ncaron:"ň",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",ncy:"н",ndash:"–",ne:"≠",neArr:"⇗",nearhk:"⤤",nearr:"↗",nearrow:"↗",nedot:"≐̸",nequiv:"≢",nesear:"⤨",nesim:"≂̸",nexist:"∄",nexists:"∄",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",ngsim:"≵",ngt:"≯",ngtr:"≯",nhArr:"⇎",nharr:"↮",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",njcy:"њ",nlArr:"⇍",nlE:"≦̸",nlarr:"↚",nldr:"‥",nle:"≰",nleftarrow:"↚",nleftrightarrow:"↮",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nlsim:"≴",nlt:"≮",nltri:"⋪",nltrie:"⋬",nmid:"∤",nopf:"𝕟",no:"¬",not:"¬",notin:"∉",notinE:"⋹̸",notindot:"⋵̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrArr:"⇏",nrarr:"↛",nrarrc:"⤳̸",nrarrw:"↝̸",nrightarrow:"↛",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",ntild:"ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",nu:"ν",num:"#",numero:"№",numsp:" ",nvDash:"⊭",nvHarr:"⤄",nvap:"≍⃒",nvdash:"⊬",nvge:"≥⃒",nvgt:">⃒",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwArr:"⇖",nwarhk:"⤣",nwarr:"↖",nwarrow:"↖",nwnear:"⤧",oS:"Ⓢ",oacut:"ó",oacute:"ó",oast:"⊛",ocir:"ô",ocirc:"ô",ocy:"о",odash:"⊝",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",oelig:"œ",ofcir:"⦿",ofr:"𝔬",ogon:"˛",ograv:"ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",omacr:"ō",omega:"ω",omicron:"ο",omid:"⦶",ominus:"⊖",oopf:"𝕠",opar:"⦷",operp:"⦹",oplus:"⊕",or:"∨",orarr:"↻",ord:"º",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oscr:"ℴ",oslas:"ø",oslash:"ø",osol:"⊘",otild:"õ",otilde:"õ",otimes:"⊗",otimesas:"⨶",oum:"ö",ouml:"ö",ovbar:"⌽",par:"¶",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",pfr:"𝔭",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",plusm:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",pointint:"⨕",popf:"𝕡",poun:"£",pound:"£",pr:"≺",prE:"⪳",prap:"⪷",prcue:"≼",pre:"⪯",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",prime:"′",primes:"ℙ",prnE:"⪵",prnap:"⪹",prnsim:"⋨",prod:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",propto:"∝",prsim:"≾",prurel:"⊰",pscr:"𝓅",psi:"ψ",puncsp:" ",qfr:"𝔮",qint:"⨌",qopf:"𝕢",qprime:"⁗",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",quo:'"',quot:'"',rAarr:"⇛",rArr:"⇒",rAtail:"⤜",rBarr:"⤏",rHar:"⥤",race:"∽̱",racute:"ŕ",radic:"√",raemptyv:"⦳",rang:"⟩",rangd:"⦒",range:"⦥",rangle:"⟩",raqu:"»",raquo:"»",rarr:"→",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",rarrtl:"↣",rarrw:"↝",ratail:"⤚",ratio:"∶",rationals:"ℚ",rbarr:"⤍",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",rcaron:"ř",rcedil:"ŗ",rceil:"⌉",rcub:"}",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",re:"®",reg:"®",rfisht:"⥽",rfloor:"⌋",rfr:"𝔯",rhard:"⇁",rharu:"⇀",rharul:"⥬",rho:"ρ",rhov:"ϱ",rightarrow:"→",rightarrowtail:"↣",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",rightthreetimes:"⋌",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",ropf:"𝕣",roplus:"⨮",rotimes:"⨵",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",rsaquo:"›",rscr:"𝓇",rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",ruluhar:"⥨",rx:"℞",sacute:"ś",sbquo:"‚",sc:"≻",scE:"⪴",scap:"⪸",scaron:"š",sccue:"≽",sce:"⪰",scedil:"ş",scirc:"ŝ",scnE:"⪶",scnap:"⪺",scnsim:"⋩",scpolint:"⨓",scsim:"≿",scy:"с",sdot:"⋅",sdotb:"⊡",sdote:"⩦",seArr:"⇘",searhk:"⤥",searr:"↘",searrow:"↘",sec:"§",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",sfr:"𝔰",sfrown:"⌢",sharp:"♯",shchcy:"щ",shcy:"ш",shortmid:"∣",shortparallel:"∥",sh:"­",shy:"­",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",softcy:"ь",sol:"/",solb:"⧄",solbar:"⌿",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",square:"□",squarf:"▪",squf:"▪",srarr:"→",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",sub:"⊂",subE:"⫅",subdot:"⪽",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",subset:"⊂",subseteq:"⊆",subseteqq:"⫅",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",sum:"∑",sung:"♪",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supE:"⫆",supdot:"⪾",supdsub:"⫘",supe:"⊇",supedot:"⫄",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",supset:"⊃",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swArr:"⇙",swarhk:"⤦",swarr:"↙",swarrow:"↙",swnwar:"⤪",szli:"ß",szlig:"ß",target:"⌖",tau:"τ",tbrk:"⎴",tcaron:"ť",tcedil:"ţ",tcy:"т",tdot:"⃛",telrec:"⌕",tfr:"𝔱",there4:"∴",therefore:"∴",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",thinsp:" ",thkap:"≈",thksim:"∼",thor:"þ",thorn:"þ",tilde:"˜",time:"×",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",trade:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",tscr:"𝓉",tscy:"ц",tshcy:"ћ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",uArr:"⇑",uHar:"⥣",uacut:"ú",uacute:"ú",uarr:"↑",ubrcy:"ў",ubreve:"ŭ",ucir:"û",ucirc:"û",ucy:"у",udarr:"⇅",udblac:"ű",udhar:"⥮",ufisht:"⥾",ufr:"𝔲",ugrav:"ù",ugrave:"ù",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",umacr:"ū",um:"¨",uml:"¨",uogon:"ų",uopf:"𝕦",uparrow:"↑",updownarrow:"↕",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",upsi:"υ",upsih:"ϒ",upsilon:"υ",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",uring:"ů",urtri:"◹",uscr:"𝓊",utdot:"⋰",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",uum:"ü",uuml:"ü",uwangle:"⦧",vArr:"⇕",vBar:"⫨",vBarv:"⫩",vDash:"⊨",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",varr:"↕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",vcy:"в",vdash:"⊢",vee:"∨",veebar:"⊻",veeeq:"≚",vellip:"⋮",verbar:"|",vert:"|",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",vopf:"𝕧",vprop:"∝",vrtri:"⊳",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",vzigzag:"⦚",wcirc:"ŵ",wedbar:"⩟",wedge:"∧",wedgeq:"≙",weierp:"℘",wfr:"𝔴",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",xfr:"𝔵",xhArr:"⟺",xharr:"⟷",xi:"ξ",xlArr:"⟸",xlarr:"⟵",xmap:"⟼",xnis:"⋻",xodot:"⨀",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrArr:"⟹",xrarr:"⟶",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",yacut:"ý",yacute:"ý",yacy:"я",ycirc:"ŷ",ycy:"ы",ye:"¥",yen:"¥",yfr:"𝔶",yicy:"ї",yopf:"𝕪",yscr:"𝓎",yucy:"ю",yum:"ÿ",yuml:"ÿ",zacute:"ź",zcaron:"ž",zcy:"з",zdot:"ż",zeetrf:"ℨ",zeta:"ζ",zfr:"𝔷",zhcy:"ж",zigrarr:"⇝",zopf:"𝕫",zscr:"𝓏",zwj:"‍",zwnj:"‌",default:T}),S={AElig:"Æ",AMP:"&",Aacute:"Á",Acirc:"Â",Agrave:"À",Aring:"Å",Atilde:"Ã",Auml:"Ä",COPY:"©",Ccedil:"Ç",ETH:"Ð",Eacute:"É",Ecirc:"Ê",Egrave:"È",Euml:"Ë",GT:">",Iacute:"Í",Icirc:"Î",Igrave:"Ì",Iuml:"Ï",LT:"<",Ntilde:"Ñ",Oacute:"Ó",Ocirc:"Ô",Ograve:"Ò",Oslash:"Ø",Otilde:"Õ",Ouml:"Ö",QUOT:'"',REG:"®",THORN:"Þ",Uacute:"Ú",Ucirc:"Û",Ugrave:"Ù",Uuml:"Ü",Yacute:"Ý",aacute:"á",acirc:"â",acute:"´",aelig:"æ",agrave:"à",amp:"&",aring:"å",atilde:"ã",auml:"ä",brvbar:"¦",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",ecirc:"ê",egrave:"è",eth:"ð",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",iacute:"í",icirc:"î",iexcl:"¡",igrave:"ì",iquest:"¿",iuml:"ï",laquo:"«",lt:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",oacute:"ó",ocirc:"ô",ograve:"ò",ordf:"ª",ordm:"º",oslash:"ø",otilde:"õ",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',raquo:"»",reg:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",times:"×",uacute:"ú",ucirc:"û",ugrave:"ù",uml:"¨",uuml:"ü",yacute:"ý",yen:"¥",yuml:"ÿ"},F=Object.freeze({__proto__:null,AElig:"Æ",AMP:"&",Aacute:"Á",Acirc:"Â",Agrave:"À",Aring:"Å",Atilde:"Ã",Auml:"Ä",COPY:"©",Ccedil:"Ç",ETH:"Ð",Eacute:"É",Ecirc:"Ê",Egrave:"È",Euml:"Ë",GT:">",Iacute:"Í",Icirc:"Î",Igrave:"Ì",Iuml:"Ï",LT:"<",Ntilde:"Ñ",Oacute:"Ó",Ocirc:"Ô",Ograve:"Ò",Oslash:"Ø",Otilde:"Õ",Ouml:"Ö",QUOT:'"',REG:"®",THORN:"Þ",Uacute:"Ú",Ucirc:"Û",Ugrave:"Ù",Uuml:"Ü",Yacute:"Ý",aacute:"á",acirc:"â",acute:"´",aelig:"æ",agrave:"à",amp:"&",aring:"å",atilde:"ã",auml:"ä",brvbar:"¦",ccedil:"ç",cedil:"¸",cent:"¢",copy:"©",curren:"¤",deg:"°",divide:"÷",eacute:"é",ecirc:"ê",egrave:"è",eth:"ð",euml:"ë",frac12:"½",frac14:"¼",frac34:"¾",gt:">",iacute:"í",icirc:"î",iexcl:"¡",igrave:"ì",iquest:"¿",iuml:"ï",laquo:"«",lt:"<",macr:"¯",micro:"µ",middot:"·",nbsp:" ",not:"¬",ntilde:"ñ",oacute:"ó",ocirc:"ô",ograve:"ò",ordf:"ª",ordm:"º",oslash:"ø",otilde:"õ",ouml:"ö",para:"¶",plusmn:"±",pound:"£",quot:'"',raquo:"»",reg:"®",sect:"§",shy:"­",sup1:"¹",sup2:"²",sup3:"³",szlig:"ß",thorn:"þ",times:"×",uacute:"ú",ucirc:"û",ugrave:"ù",uml:"¨",uuml:"ü",yacute:"ý",yen:"¥",yuml:"ÿ",default:S}),x=Object.freeze({__proto__:null,default:{0:"�",128:"€",130:"‚",131:"ƒ",132:"„",133:"…",134:"†",135:"‡",136:"ˆ",137:"‰",138:"Š",139:"‹",140:"Œ",142:"Ž",145:"‘",146:"’",147:"“",148:"”",149:"•",150:"–",151:"—",152:"˜",153:"™",154:"š",155:"›",156:"œ",158:"ž",159:"Ÿ"}}),q=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=48&&t<=57};var N=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=102||t>=65&&t<=70||t>=48&&t<=57};var L=function(e){var t="string"==typeof e?e.charCodeAt(0):e;return t>=97&&t<=122||t>=65&&t<=90};var B=function(e){return L(e)||q(e)};var P=D(_),O=D(F),R=D(x),I=function(e,t){var r,n,i={};t||(t={});for(n in te)r=t[n],i[n]=null==r?te[n]:r;(i.position.indent||i.position.start)&&(i.indent=i.position.indent||[],i.position=i.position.start);return function(e,t){var r,n,i,a,o,u,s,c,l,p,f,h,d,D,g,m,v,b,y=t.additional,E=t.nonTerminated,C=t.text,A=t.reference,w=t.warning,k=t.textContext,T=t.referenceContext,_=t.warningContext,S=t.position,F=t.indent||[],x=e.length,q=0,N=-1,L=S.column||1,I=S.line||1,te=K,de=[];g=ge(),s=w?function(e,t){var r=ge();r.column+=t,r.offset+=t,w.call(_,me[e],r,e)}:V,q--,x++;for(;++q<x;)if(a===X&&(L=F[N]||1),(a=be(q))!==z)a===X&&(I++,N++,L=0),a?(te+=a,L++):ye();else{if((u=be(q+1))===ee||u===X||u===j||u===Y||u===Z||u===z||u===K||y&&u===y){te+=a,L++;continue}for(f=h=q+1,b=h,u!==G?d=re:(b=++f,(u=be(b))===W||u===Q?(d=ne,b=++f):d=ie),r=K,p=K,i=K,D=oe[d],b--;++b<x&&(u=be(b),D(u));)i+=u,d===re&&U.call(O,i)&&(r=i,p=O[i]);(n=be(b)===H)&&(b++,d===re&&U.call(P,i)&&(r=i,p=P[i])),v=1+b-h,(n||E)&&(i?d===re?(n&&!p?s(pe,1):(r!==i&&(b=f+r.length,v=1+b-f,n=!1),n||(c=r?ue:ce,t.attribute?(u=be(b))===J?(s(c,v),p=null):B(u)?p=null:s(c,v):s(c,v))),o=p):(n||s(se,v),o=parseInt(i,ae[d]),(De=o)>=55296&&De<=57343||De>1114111?(s(he,v),o=M):o in R?(s(fe,v),o=R[o]):(l=K,ve(o)&&s(fe,v),o>65535&&(l+=$((o-=65536)>>>10|55296),o=56320|1023&o),o=l+$(o))):d!==re&&s(le,v)),o?(ye(),g=ge(),q=b-1,L+=b-h+1,de.push(o),(m=ge()).offset++,A&&A.call(T,o,{start:g,end:m},e.slice(h-1,b)),g=m):(i=e.slice(h-1,b),te+=i,L+=i.length,q=b-1)}var De;return de.join(K);function ge(){return{line:I,column:L,offset:q+(S.offset||0)}}function be(t){return e.charAt(t)}function ye(){te&&(de.push(te),C&&C.call(k,te,{start:g,end:ge()}),te=K)}}(e,i)},U={}.hasOwnProperty,$=String.fromCharCode,V=Function.prototype,M="�",j="\f",z="&",G="#",H=";",X="\n",W="x",Q="X",Y=" ",Z="<",J="=",K="",ee="\t",te={warning:null,reference:null,text:null,warningContext:null,referenceContext:null,textContext:null,position:{},additional:null,attribute:!1,nonTerminated:!0},re="named",ne="hexadecimal",ie="decimal",ae={};ae[ne]=16,ae[ie]=10;var oe={};oe[re]=B,oe[ie]=q,oe[ne]=N;var ue=1,se=2,ce=3,le=4,pe=5,fe=6,he=7,de="Numeric character references",De=" must be terminated by a semicolon",ge=" cannot be empty",me={};function ve(e){return e>=1&&e<=8||11===e||e>=13&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||65535==(65535&e)||65534==(65535&e)}me[ue]="Named character references"+De,me[se]=de+De,me[ce]="Named character references"+ge,me[le]=de+ge,me[pe]="Named character references must be known",me[fe]=de+" cannot be disallowed",me[he]=de+" cannot be outside the permissible Unicode range";var be=function(e){return n.raw=function(e,n,i){return I(e,p(i,{position:t(n),warning:r}))},n;function t(t){for(var r=e.offset,n=t.line,i=[];++n&&n in r;)i.push((r[n]||0)+1);return{start:t,indent:i}}function r(t,r,n){3!==n&&e.file.message(t,r)}function n(n,i,a){I(n,{position:t(i),warning:r,text:a,reference:a,textContext:e,referenceContext:e})}};var ye=function(e){return function(t,r){var n,i,a,o,u,s,c=this,l=c.offset,p=[],f=c[e+"Methods"],h=c[e+"Tokenizers"],d=r.line,D=r.column;if(!t)return p;b.now=m,b.file=c.file,g("");for(;t;){for(n=-1,i=f.length,u=!1;++n<i&&(o=f[n],!(a=h[o])||a.onlyAtStart&&!c.atStart||a.notInList&&c.inList||a.notInBlock&&c.inBlock||a.notInLink&&c.inLink||(s=t.length,a.apply(c,[b,t]),!(u=s!==t.length))););u||c.file.fail(new Error("Infinite loop"),b.now())}return c.eof=m(),p;function g(e){for(var t=-1,r=e.indexOf("\n");-1!==r;)d++,t=r,r=e.indexOf("\n",r+1);-1===t?D+=e.length:D=e.length-t,d in l&&(-1!==t?D+=l[d]:D<=l[d]&&(D=l[d]+1))}function m(){var e={line:d,column:D};return e.offset=c.toOffset(e),e}function v(e){this.start=e,this.end=m()}function b(e){var r,n=function(){var e=[],t=d+1;return function(){for(var r=d+1;t<r;)e.push((l[t]||0)+1),t++;return e}}(),i=(r=m(),function(e,t){var n=e.position,i=n?n.start:r,a=[],o=n&&n.end.line,u=r.line;if(e.position=new v(i),n&&t&&n.indent){if(a=n.indent,o<u){for(;++o<u;)a.push((l[o]||0)+1);a.push(r.column)}t=a.concat(t)}return e.position.indent=t||[],e}),a=m();return function(e){t.substring(0,e.length)!==e&&c.file.fail(new Error("Incorrectly eaten value: please report this warning on http://git.io/vg5Ft"),m())}(e),o.reset=u,u.test=s,o.test=s,t=t.substring(e.length),g(e),n=n(),o;function o(e,t){return i(function(e,t){var r=t?t.children:p,n=r[r.length-1];return n&&e.type===n.type&&e.type in Ee&&Ce(n)&&Ce(e)&&(e=Ee[e.type].call(c,n,e)),e!==n&&r.push(e),c.atStart&&0!==p.length&&c.exitStart(),e}(i(e),t),n)}function u(){var r=o.apply(null,arguments);return d=a.line,D=a.column,t=e+t,r}function s(){var r=i({});return d=a.line,D=a.column,t=e+t,r.position}}}},Ee={text:function(e,t){return e.value+=t.value,e},blockquote:function(e,t){if(this.options.commonmark)return t;return e.children=e.children.concat(t.children),e}};function Ce(e){var t,r;return"text"!==e.type||!e.position||(t=e.position.start,r=e.position.end,t.line!==r.line||r.column-t.column===e.value.length)}var Ae=_e,we=["\\","`","*","{","}","[","]","(",")","#","+","-",".","!","_",">"],ke=we.concat(["~","|"]),Te=ke.concat(["\n",'"',"$","%","&","'",",","/",":",";","<","=","?","@","^"]);function _e(e){var t=e||{};return t.commonmark?Te:t.gfm?ke:we}_e.default=we,_e.gfm=ke,_e.commonmark=Te;var Se={position:!0,gfm:!0,commonmark:!1,footnotes:!1,pedantic:!1,blocks:D(Object.freeze({__proto__:null,default:["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","iframe","legend","li","link","main","menu","menuitem","meta","nav","noframes","ol","optgroup","option","p","param","pre","section","source","title","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"]}))},Fe=function(e){var r,n,i=this.options;if(null==e)e={};else{if("object"!==t(e))throw new Error("Invalid value `"+e+"` for setting `options`");e=p(e)}for(r in Se){if(null==(n=e[r])&&(n=i[r]),"blocks"!==r&&"boolean"!=typeof n||"blocks"===r&&"object"!==t(n))throw new Error("Invalid value `"+n+"` for setting `options."+r+"`");e[r]=n}return this.options=e,this.escape=Ae(e),this};var xe=function(e,t,r,n){"function"==typeof t&&(n=r,r=t,t=null);function i(e,a,o){var u;return a=a||(o?0:null),t&&e.type!==t||(u=r(e,a,o||null)),e.children&&!1!==u?function(e,t){var r,a=n?-1:1,o=e.length,u=(n?o:-1)+a;for(;u>-1&&u<o;){if((r=e[u])&&!1===i(r,u,t))return!1;u+=a}return!0}(e.children,e):u}i(e)};var qe=function(e,t){return xe(e,t?Ne:Le),e};function Ne(e){delete e.position}function Le(e){e.position=void 0}var Be=function(){var e,t=String(this.file),r={line:1,column:1,offset:0},n=p(r);65279===(t=t.replace(Oe,Pe)).charCodeAt(0)&&(t=t.slice(1),n.column++,n.offset++);e={type:"root",children:this.tokenizeBlock(t,n),position:{start:r,end:this.eof||p(r)}},this.options.position||qe(e,!0);return e},Pe="\n",Oe=/\r\n|\r/g;var Re=function(e){return Ue.test("number"==typeof e?Ie(e):e.charAt(0))},Ie=String.fromCharCode,Ue=/\s/;var $e=function(e,t,r){var n,i,a,o,u=t.charAt(0);if("\n"!==u)return;if(r)return!0;o=1,n=t.length,i=u,a="";for(;o<n&&(u=t.charAt(o),Re(u));)a+=u,"\n"===u&&(i+=a,a=""),o++;e(i)}
+/*!
+ * repeat-string <https://github.com/jonschlinkert/repeat-string>
+ *
+ * Copyright (c) 2014-2015, Jon Schlinkert.
+ * Licensed under the MIT License.
+ */;var Ve,Me="",je=function(e,t){if("string"!=typeof e)throw new TypeError("expected a string");if(1===t)return e;if(2===t)return e+e;var r=e.length*t;if(Ve!==e||void 0===Ve)Ve=e,Me="";else if(Me.length>=r)return Me.substr(0,r);for(;r>Me.length&&t>1;)1&t&&(Me+=e),t>>=1,e+=e;return Me=(Me+=e).substr(0,r)};var ze=function(e){var t=String(e),r=t.length;for(;t.charAt(--r)===Ge;);return t.slice(0,r+1)},Ge="\n";var He=function(e,t,r){var n,i,a,o=-1,u=t.length,s="",c="",l="",p="";for(;++o<u;)if(n=t.charAt(o),a)if(a=!1,s+=l,c+=p,l="",p="",n===Xe)l=n,p=n;else for(s+=n,c+=n;++o<u;){if(!(n=t.charAt(o))||n===Xe){p=n,l=n;break}s+=n,c+=n}else if(n===Qe&&t.charAt(o+1)===n&&t.charAt(o+2)===n&&t.charAt(o+3)===n)l+=Ye,o+=3,a=!0;else if(n===We)l+=n,a=!0;else{for(i="";n===We||n===Qe;)i+=n,n=t.charAt(++o);if(n!==Xe)break;l+=i+n,p+=n}if(c)return!!r||e(s)({type:"code",lang:null,value:ze(c)})},Xe="\n",We="\t",Qe=" ",Ye=je(Qe,4);var Ze=function(e,t,r){var n,i,a,o,u,s,c,l,p,f,h,d=this.options,D=t.length+1,g=0,m="";if(!d.gfm)return;for(;g<D&&((a=t.charAt(g))===et||a===Ke);)m+=a,g++;if(f=g,(a=t.charAt(g))!==tt&&a!==rt)return;g++,i=a,n=1,m+=a;for(;g<D&&(a=t.charAt(g))===i;)m+=a,n++,g++;if(n<nt)return;for(;g<D&&((a=t.charAt(g))===et||a===Ke);)m+=a,g++;o="",u="";for(;g<D&&(a=t.charAt(g))!==Je&&a!==tt&&a!==rt;)a===et||a===Ke?u+=a:(o+=u+a,u=""),g++;if((a=t.charAt(g))&&a!==Je)return;if(r)return!0;(h=e.now()).column+=m.length,h.offset+=m.length,m+=o,o=this.decode.raw(this.unescape(o),h),u&&(m+=u);u="",l="",p="",s="",c="";for(;g<D;)if(a=t.charAt(g),s+=l,c+=p,l="",p="",a===Je){for(s?(l+=a,p+=a):m+=a,u="",g++;g<D&&(a=t.charAt(g))===et;)u+=a,g++;if(l+=u,p+=u.slice(f),!(u.length>=it)){for(u="";g<D&&(a=t.charAt(g))===i;)u+=a,g++;if(l+=u,p+=u,!(u.length<n)){for(u="";g<D&&((a=t.charAt(g))===et||a===Ke);)l+=a,p+=a,g++;if(!a||a===Je)break}}}else s+=a,p+=a,g++;return e(m+=s+l)({type:"code",lang:o||null,value:ze(c)})},Je="\n",Ke="\t",et=" ",tt="~",rt="`",nt=3,it=4;var at=d((function(e,t){(t=e.exports=function(e){return e.replace(/^\s*|\s*$/g,"")}).left=function(e){return e.replace(/^\s*/,"")},t.right=function(e){return e.replace(/\s*$/,"")}})),ot=(at.left,at.right,function(e,t,r,n){var i,a,o,u,s,c,l=["pedantic","commonmark"],p=l.length,f=e.length,h=-1;for(;++h<f;){for(i=e[h],a=i[1]||{},o=i[0],u=-1,c=!1;++u<p;)if(void 0!==a[s=l[u]]&&a[s]!==r.options[s]){c=!0;break}if(!c&&t[o].apply(r,n))return!0}return!1});var ut=function(e,t,r){var n,i,a,o,u,s,c,l,p,f=this.offset,h=this.blockTokenizers,d=this.interruptBlockquote,D=e.now(),g=D.line,m=t.length,v=[],b=[],y=[],E=0;for(;E<m&&((i=t.charAt(E))===lt||i===ct);)E++;if(t.charAt(E)!==pt)return;if(r)return!0;E=0;for(;E<m;){for(o=t.indexOf(st,E),c=E,l=!1,-1===o&&(o=m);E<m&&((i=t.charAt(E))===lt||i===ct);)E++;if(t.charAt(E)===pt?(E++,l=!0,t.charAt(E)===lt&&E++):E=c,u=t.slice(E,o),!l&&!at(u)){E=c;break}if(!l&&(a=t.slice(E),ot(d,h,this,[e,a,!0])))break;s=c===E?u:t.slice(c,o),y.push(E-c),v.push(s),b.push(u),E=o+1}E=-1,m=y.length,n=e(v.join(st));for(;++E<m;)f[g]=(f[g]||0)+y[E],g++;return p=this.enterBlock(),b=this.tokenizeBlock(b.join(st),D),p(),n({type:"blockquote",children:b})},st="\n",ct="\t",lt=" ",pt=">";var ft=function(e,t,r){var n,i,a,o=this.options,u=t.length+1,s=-1,c=e.now(),l="",p="";for(;++s<u;){if((n=t.charAt(s))!==Dt&&n!==dt){s--;break}l+=n}a=0;for(;++s<=u;){if((n=t.charAt(s))!==gt){s--;break}l+=n,a++}if(a>mt)return;if(!a||!o.pedantic&&t.charAt(s+1)===gt)return;u=t.length+1,i="";for(;++s<u;){if((n=t.charAt(s))!==Dt&&n!==dt){s--;break}i+=n}if(!o.pedantic&&0===i.length&&n&&n!==ht)return;if(r)return!0;l+=i,i="",p="";for(;++s<u&&(n=t.charAt(s))&&n!==ht;)if(n===Dt||n===dt||n===gt){for(;n===Dt||n===dt;)i+=n,n=t.charAt(++s);for(;n===gt;)i+=n,n=t.charAt(++s);for(;n===Dt||n===dt;)i+=n,n=t.charAt(++s);s--}else p+=i+n,i="";return c.column+=l.length,c.offset+=l.length,e(l+=p+i)({type:"heading",depth:a,children:this.tokenizeInline(p,c)})},ht="\n",dt="\t",Dt=" ",gt="#",mt=6;var vt=function(e,t,r){var n,i,a,o,u=-1,s=t.length+1,c="";for(;++u<s&&((n=t.charAt(u))===yt||n===Et);)c+=n;if(n!==Ct&&n!==wt&&n!==At)return;i=n,c+=n,a=1,o="";for(;++u<s;)if((n=t.charAt(u))===i)a++,c+=o+i,o="";else{if(n!==Et)return a>=kt&&(!n||n===bt)?(c+=o,!!r||e(c)({type:"thematicBreak"})):void 0;o+=n}},bt="\n",yt="\t",Et=" ",Ct="*",At="_",wt="-",kt=3;var Tt=function(e){var t,r=0,n=0,i=e.charAt(r),a={};for(;i in _t;)t=_t[i],n+=t,t>1&&(n=Math.floor(n/t)*t),a[n]=r,i=e.charAt(++r);return{indent:n,stops:a}},_t={" ":1,"\t":4};var St=function(e,t){var r,n,i,a,o=e.split(xt),u=o.length+1,s=1/0,c=[];o.unshift(je(Ft,t)+"!");for(;u--;)if(n=Tt(o[u]),c[u]=n.stops,0!==at(o[u]).length){if(!n.indent){s=1/0;break}n.indent>0&&n.indent<s&&(s=n.indent)}if(s!==1/0)for(u=o.length;u--;){for(i=c[u],r=s;r&&!(r in i);)r--;a=0!==at(o[u]).length&&s&&r!==s?qt:"",o[u]=a+o[u].slice(r in i?i[r]+1:0)}return o.shift(),o.join(xt)},Ft=" ",xt="\n",qt="\t";var Nt=function(e,t,r){var n,i,a,o,u,s,c,l,p,f,h,d,D,g,m,v,b,y,E,C,A,w,k,T,_=this.options.commonmark,S=this.options.pedantic,F=this.blockTokenizers,x=this.interruptList,N=0,L=t.length,B=null,P=0;for(;N<L;){if((o=t.charAt(N))===It)P+=$t-P%$t;else{if(o!==Ot)break;P++}N++}if(P>=$t)return;if(o=t.charAt(N),n=_?Wt:Xt,!0===Ht[o])u=o,a=!1;else{for(a=!0,i="";N<L&&(o=t.charAt(N),q(o));)i+=o,N++;if(o=t.charAt(N),!i||!0!==n[o])return;B=parseInt(i,10),u=o}if((o=t.charAt(++N))!==Ot&&o!==It)return;if(r)return!0;N=0,g=[],m=[],v=[];for(;N<L;){for(s=t.indexOf(Rt,N),c=N,l=!1,T=!1,-1===s&&(s=L),k=N+$t,P=0;N<L;){if((o=t.charAt(N))===It)P+=$t-P%$t;else{if(o!==Ot)break;P++}N++}if(P>=$t&&(T=!0),b&&P>=b.indent&&(T=!0),o=t.charAt(N),p=null,!T){if(!0===Ht[o])p=o,N++,P++;else{for(i="";N<L&&(o=t.charAt(N),q(o));)i+=o,N++;o=t.charAt(N),N++,i&&!0===n[o]&&(p=o,P+=i.length+1)}if(p)if((o=t.charAt(N))===It)P+=$t-P%$t,N++;else if(o===Ot){for(k=N+$t;N<k&&t.charAt(N)===Ot;)N++,P++;N===k&&t.charAt(N)===Ot&&(N-=$t-1,P-=$t-1)}else o!==Rt&&""!==o&&(p=null)}if(p){if(!S&&u!==p)break;l=!0}else _||T||t.charAt(c)!==Ot?_&&b&&(T=P>=b.indent||P>$t):T=!0,l=!1,N=c;if(h=t.slice(c,s),f=c===N?h:t.slice(N,s),(p===Lt||p===Bt||p===Pt)&&F.thematicBreak.call(this,e,h,!0))break;if(d=D,D=!at(f).length,T&&b)b.value=b.value.concat(v,h),m=m.concat(v,h),v=[];else if(l)0!==v.length&&(b.value.push(""),b.trail=v.concat()),b={value:[h],indent:P,trail:[]},g.push(b),m=m.concat(v,h),v=[];else if(D){if(d)break;v.push(h)}else{if(d)break;if(ot(x,F,this,[e,h,!0]))break;b.value=b.value.concat(v,h),m=m.concat(v,h),v=[]}N=s+1}A=e(m.join(Rt)).reset({type:"list",ordered:a,start:B,loose:null,children:[]}),y=this.enterList(),E=this.enterBlock(),C=!1,N=-1,L=g.length;for(;++N<L;)b=g[N].value.join(Rt),w=e.now(),(b=e(b)(Qt(this,b,w),A)).loose&&(C=!0),b=g[N].trail.join(Rt),N!==L-1&&(b+=Rt),e(b);return y(),E(),A.loose=C,A},Lt="*",Bt="_",Pt="-",Ot=" ",Rt="\n",It="\t",Ut="x",$t=4,Vt=/\n\n(?!\s*$)/,Mt=/^\[([ \t]|x|X)][ \t]/,jt=/^([ \t]*)([*+-]|\d+[.)])( {1,4}(?! )| |\t|$|(?=\n))([^\n]*)/,zt=/^([ \t]*)([*+-]|\d+[.)])([ \t]+)/,Gt=/^( {1,4}|\t)?/gm,Ht={};Ht[Lt]=!0,Ht["+"]=!0,Ht[Pt]=!0;var Xt={".":!0},Wt={};function Qt(e,t,r){var n,i,a=e.offset,o=null;return t=(e.options.pedantic?Yt:Zt).apply(null,arguments),e.options.gfm&&(n=t.match(Mt))&&(i=n[0].length,o=n[1].toLowerCase()===Ut,a[r.line]+=i,t=t.slice(i)),{type:"listItem",loose:Vt.test(t)||t.charAt(t.length-1)===Rt,checked:o,children:e.tokenizeBlock(t,r)}}function Yt(e,t,r){var n=e.offset,i=r.line;return t=t.replace(zt,a),i=r.line,t.replace(Gt,a);function a(e){return n[i]=(n[i]||0)+e.length,i++,""}}function Zt(e,t,r){var n,i,a,o,u,s,c,l=e.offset,p=r.line;for(o=(t=t.replace(jt,(function(e,t,r,o,u){i=t+r+o,a=u,Number(r)<10&&i.length%2==1&&(r=Ot+r);return(n=t+je(Ot,r.length)+o)+a}))).split(Rt),(u=St(t,Tt(n).indent).split(Rt))[0]=a,l[p]=(l[p]||0)+i.length,p++,s=0,c=o.length;++s<c;)l[p]=(l[p]||0)+o[s].length-u[s].length,p++;return u.join(Rt)}Wt["."]=!0,Wt[")"]=!0;var Jt=function(e,t,r){var n,i,a,o,u,s=e.now(),c=t.length,l=-1,p="";for(;++l<c;){if((a=t.charAt(l))!==tr||l>=rr){l--;break}p+=a}n="",i="";for(;++l<c;){if((a=t.charAt(l))===Kt){l--;break}a===tr||a===er?i+=a:(n+=i+a,i="")}if(s.column+=p.length,s.offset+=p.length,p+=n+i,a=t.charAt(++l),o=t.charAt(++l),a!==Kt||!nr[o])return;p+=a,i=o,u=nr[o];for(;++l<c;){if((a=t.charAt(l))!==o){if(a!==Kt)return;l--;break}i+=a}if(r)return!0;return e(p+i)({type:"heading",depth:u,children:this.tokenizeInline(n,s)})},Kt="\n",er="\t",tr=" ",rr=3,nr={};nr["="]=1,nr["-"]=2;var ir="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\u0000-\\u0020]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",ar="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",or={openCloseTag:new RegExp("^(?:"+ir+"|"+ar+")"),tag:new RegExp("^(?:"+ir+"|"+ar+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?].*?[?]>|<![A-Za-z]+\\s+[^>]*>|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>)")},ur=or.openCloseTag,sr=function(e,t,r){var n,i,a,o,u,s,c,l=this.options.blocks,p=t.length,f=0,h=[[/^<(script|pre|style)(?=(\s|>|$))/i,/<\/(script|pre|style)>/i,!0],[/^<!--/,/-->/,!0],[/^<\?/,/\?>/,!0],[/^<![A-Za-z]/,/>/,!0],[/^<!\[CDATA\[/,/\]\]>/,!0],[new RegExp("^</?("+l.join("|")+")(?=(\\s|/?>|$))","i"),/^$/,!0],[new RegExp(ur.source+"\\s*$"),/^$/,!1]];for(;f<p&&((o=t.charAt(f))===cr||o===lr);)f++;if(t.charAt(f)!==fr)return;n=-1===(n=t.indexOf(pr,f+1))?p:n,i=t.slice(f,n),a=-1,u=h.length;for(;++a<u;)if(h[a][0].test(i)){s=h[a];break}if(!s)return;if(r)return s[2];if(f=n,!s[1].test(i))for(;f<p;){if(n=-1===(n=t.indexOf(pr,f+1))?p:n,i=t.slice(f+1,n),s[1].test(i)){i&&(f=n);break}f=n}return c=t.slice(0,f),e(c)({type:"html",value:c})},cr="\t",lr=" ",pr="\n",fr="<";var hr=function(e){return String(e).replace(/\s+/g," ")};var dr=function(e){return hr(e).toLowerCase()};var Dr=kr;kr.notInList=!0,kr.notInBlock=!0;var gr="\\",mr="\n",vr="\t",br=" ",yr="[",Er="]",Cr="^",Ar=":",wr=/^( {4}|\t)?/gm;function kr(e,t,r){var n,i,a,o,u,s,c,l,p,f,h,d,D=this.offset;if(this.options.footnotes){for(n=0,i=t.length,a="",o=e.now(),u=o.line;n<i&&(p=t.charAt(n),Re(p));)a+=p,n++;if(t.charAt(n)===yr&&t.charAt(n+1)===Cr){for(n=(a+=yr+Cr).length,c="";n<i&&(p=t.charAt(n))!==Er;)p===gr&&(c+=p,n++,p=t.charAt(n)),c+=p,n++;if(c&&t.charAt(n)===Er&&t.charAt(n+1)===Ar){if(r)return!0;for(f=dr(c),n=(a+=c+Er+Ar).length;n<i&&((p=t.charAt(n))===vr||p===br);)a+=p,n++;for(o.column+=a.length,o.offset+=a.length,c="",s="",l="";n<i;){if((p=t.charAt(n))===mr){for(l=p,n++;n<i&&(p=t.charAt(n))===mr;)l+=p,n++;for(c+=l,l="";n<i&&(p=t.charAt(n))===br;)l+=p,n++;if(0===l.length)break;c+=l}c&&(s+=c,c=""),s+=p,n++}return a+=s,s=s.replace(wr,(function(e){return D[u]=(D[u]||0)+e.length,u++,""})),h=e(a),d=this.enterBlock(),s=this.tokenizeBlock(s,o),d(),h({type:"footnoteDefinition",identifier:f,children:s})}}}}var Tr=$r;$r.notInList=!0,$r.notInBlock=!0;var _r='"',Sr="'",Fr="\\",xr="\n",qr="\t",Nr=" ",Lr="[",Br="]",Pr="(",Or=")",Rr=":",Ir="<",Ur=">";function $r(e,t,r){for(var n,i,a,o,u,s,c,l,p=this.options.commonmark,f=0,h=t.length,d="";f<h&&((o=t.charAt(f))===Nr||o===qr);)d+=o,f++;if((o=t.charAt(f))===Lr){for(f++,d+=o,a="";f<h&&(o=t.charAt(f))!==Br;)o===Fr&&(a+=o,f++,o=t.charAt(f)),a+=o,f++;if(a&&t.charAt(f)===Br&&t.charAt(f+1)===Rr){for(s=a,f=(d+=a+Br+Rr).length,a="";f<h&&((o=t.charAt(f))===qr||o===Nr||o===xr);)d+=o,f++;if(a="",n=d,(o=t.charAt(f))===Ir){for(f++;f<h&&Vr(o=t.charAt(f));)a+=o,f++;if((o=t.charAt(f))===Vr.delimiter)d+=Ir+a+o,f++;else{if(p)return;f-=a.length+1,a=""}}if(!a){for(;f<h&&Mr(o=t.charAt(f));)a+=o,f++;d+=a}if(a){for(c=a,a="";f<h&&((o=t.charAt(f))===qr||o===Nr||o===xr);)a+=o,f++;if(u=null,(o=t.charAt(f))===_r?u=_r:o===Sr?u=Sr:o===Pr&&(u=Or),u){if(!a)return;for(f=(d+=a+o).length,a="";f<h&&(o=t.charAt(f))!==u;){if(o===xr){if(f++,(o=t.charAt(f))===xr||o===u)return;a+=xr}a+=o,f++}if((o=t.charAt(f))!==u)return;i=d,d+=a+o,f++,l=a,a=""}else a="",f=d.length;for(;f<h&&((o=t.charAt(f))===qr||o===Nr);)d+=o,f++;return(o=t.charAt(f))&&o!==xr?void 0:!!r||(n=e(n).test().end,c=this.decode.raw(this.unescape(c),n,{nonTerminated:!1}),l&&(i=e(i).test().end,l=this.decode.raw(this.unescape(l),i)),e(d)({type:"definition",identifier:dr(s),title:l||null,url:c}))}}}}function Vr(e){return e!==Ur&&e!==Lr&&e!==Br}function Mr(e){return e!==Lr&&e!==Br&&!Re(e)}Vr.delimiter=Ur;var jr=function(e,t,r){var n,i,a,o,u,s,c,l,p,f,h,d,D,g,m,v,b,y,E,C,A,w,k,T;if(!this.options.gfm)return;n=0,y=0,s=t.length+1,c=[];for(;n<s;){if(w=t.indexOf(Yr,n),k=t.indexOf(Xr,n+1),-1===w&&(w=t.length),-1===k||k>w){if(y<Kr)return;break}c.push(t.slice(n,w)),y++,n=w+1}o=c.join(Yr),i=c.splice(1,1)[0]||[],n=0,s=i.length,y--,a=!1,h=[];for(;n<s;){if((p=i.charAt(n))===Xr){if(f=null,!1===a){if(!1===T)return}else h.push(a),a=!1;T=!1}else if(p===Hr)f=!0,a=a||nn;else if(p===Wr)a=a===en?tn:f&&a===nn?rn:en;else if(!Re(p))return;n++}!1!==a&&h.push(a);if(h.length<Jr)return;if(r)return!0;b=-1,C=[],A=e(o).reset({type:"table",align:h,children:C});for(;++b<y;){for(E=c[b],u={type:"tableRow",children:[]},b&&e(Yr),e(E).reset(u,A),s=E.length+1,n=0,l="",d="",D=!0,g=null,m=null;n<s;)if((p=E.charAt(n))!==Zr&&p!==Qr){if(""===p||p===Xr)if(D)e(p);else{if(p&&m){l+=p,n++;continue}!d&&!p||D||(o=d,l.length>1&&(p?(o+=l.slice(0,l.length-1),l=l.charAt(l.length-1)):(o+=l,l="")),v=e.now(),e(o)({type:"tableCell",children:this.tokenizeInline(d,v)},u)),e(l+p),l="",d=""}else if(l&&(d+=l,l=""),d+=p,p===zr&&n!==s-2&&(d+=E.charAt(n+1),n++),p===Gr){for(g=1;E.charAt(n+1)===p;)d+=p,n++,g++;m?g>=m&&(m=0):m=g}D=!1,n++}else d?l+=p:e(p),n++;b||e(Yr+i)}return A},zr="\\",Gr="`",Hr="-",Xr="|",Wr=":",Qr=" ",Yr="\n",Zr="\t",Jr=1,Kr=2,en="left",tn="center",rn="right",nn=null;var an=function(e,t,r){var n,i,a,o,u,s=this.options,c=s.commonmark,l=s.gfm,p=this.blockTokenizers,f=this.interruptParagraph,h=t.indexOf(on),d=t.length;for(;h<d;){if(-1===h){h=d;break}if(t.charAt(h+1)===on)break;if(c){for(o=0,n=h+1;n<d;){if((a=t.charAt(n))===un){o=cn;break}if(a!==sn)break;o++,n++}if(o>=cn){h=t.indexOf(on,h+1);continue}}if(i=t.slice(h+1),ot(f,p,this,[e,i,!0]))break;if(p.list.call(this,e,i,!0)&&(this.inList||c||l&&!q(at.left(i).charAt(0))))break;if(n=h,-1!==(h=t.indexOf(on,h+1))&&""===at(t.slice(n,h))){h=n;break}}if(i=t.slice(0,h),""===at(i))return e(i),null;if(r)return!0;return u=e.now(),i=ze(i),e(i)({type:"paragraph",children:this.tokenizeInline(i,u)})},on="\n",un="\t",sn=" ",cn=4;var ln=function(e,t){return e.indexOf("\\",t)};var pn=fn;function fn(e,t,r){var n,i;if("\\"===t.charAt(0)&&(n=t.charAt(1),-1!==this.escape.indexOf(n)))return!!r||(i="\n"===n?{type:"break"}:{type:"text",value:n},e("\\"+n)(i))}fn.locator=ln;var hn=function(e,t){return e.indexOf("<",t)};var dn=En;En.locator=hn,En.notInLink=!0;var Dn="<",gn=">",mn="@",vn="/",bn="mailto:",yn=bn.length;function En(e,t,r){var n,i,a,o,u,s,c,l,p,f,h;if(t.charAt(0)===Dn){for(this,n="",i=t.length,a=0,o="",s=!1,c="",a++,n=Dn;a<i&&(u=t.charAt(a),!(Re(u)||u===gn||u===mn||":"===u&&t.charAt(a+1)===vn));)o+=u,a++;if(o){if(c+=o,o="",c+=u=t.charAt(a),a++,u===mn)s=!0;else{if(":"!==u||t.charAt(a+1)!==vn)return;c+=vn,a++}for(;a<i&&(u=t.charAt(a),!Re(u)&&u!==gn);)o+=u,a++;if(u=t.charAt(a),o&&u===gn)return!!r||(p=c+=o,n+=c+u,(l=e.now()).column++,l.offset++,s&&(c.slice(0,yn).toLowerCase()===bn?(p=p.substr(yn),l.column+=yn,l.offset+=yn):c=bn+c),f=this.inlineTokenizers,this.inlineTokenizers={text:f.text},h=this.enterLink(),p=this.tokenizeInline(p,l),this.inlineTokenizers=f,h(),e(n)({type:"link",title:null,url:I(c,{nonTerminated:!1}),children:p}))}}}var Cn=function(e,t){var r,n=An.length,i=-1,a=-1;if(!this.options.gfm)return-1;for(;++i<n;)-1!==(r=e.indexOf(An[i],t))&&(r<a||-1===a)&&(a=r);return a},An=["https://","http://","mailto:"];var wn=Bn;Bn.locator=Cn,Bn.notInLink=!0;var kn="[",Tn="]",_n="(",Sn=")",Fn="<",xn="@",qn="mailto:",Nn=["http://","https://",qn],Ln=Nn.length;function Bn(e,t,r){var n,i,a,o,u,s,c,l,p,f,h,d;if(this.options.gfm){for(n="",o=-1,l=Ln;++o<l;)if(s=Nn[o],(c=t.slice(0,s.length)).toLowerCase()===s){n=c;break}if(n){for(o=n.length,l=t.length,p="",f=0;o<l&&(a=t.charAt(o),!Re(a)&&a!==Fn)&&("."!==a&&","!==a&&":"!==a&&";"!==a&&'"'!==a&&"'"!==a&&")"!==a&&"]"!==a||(h=t.charAt(o+1))&&!Re(h))&&(a!==_n&&a!==kn||f++,a!==Sn&&a!==Tn||!(--f<0));)p+=a,o++;if(p){if(i=n+=p,s===qn){if(-1===(u=p.indexOf(xn))||u===l-1)return;i=i.substr(qn.length)}return!!r||(d=this.enterLink(),i=this.tokenizeInline(i,e.now()),d(),e(n)({type:"link",title:null,url:I(n,{nonTerminated:!1}),children:i}))}}}}var Pn=or.tag,On=Un;Un.locator=hn;var Rn=/^<a /i,In=/^<\/a>/i;function Un(e,t,r){var n,i,a=t.length;if(!("<"!==t.charAt(0)||a<3)&&(n=t.charAt(1),(L(n)||"?"===n||"!"===n||"/"===n)&&(i=t.match(Pn))))return!!r||(i=i[0],!this.inLink&&Rn.test(i)?this.inLink=!0:this.inLink&&In.test(i)&&(this.inLink=!1),e(i)({type:"html",value:i}))}var $n=function(e,t){var r=e.indexOf("[",t),n=e.indexOf("![",t);if(-1===n)return r;return r<n?r:n};var Vn=Kn;Kn.locator=$n;var Mn={}.hasOwnProperty,jn="\\",zn="[",Gn="]",Hn="(",Xn=")",Wn="<",Qn=">",Yn="`",Zn={'"':'"',"'":"'"},Jn={};function Kn(e,t,r){var n,i,a,o,u,s,c,l,p,f,h,d,D,g,m,v,b,y,E,C="",A=0,w=t.charAt(0),k=this.options.pedantic,T=this.options.commonmark,_=this.options.gfm;if("!"===w&&(p=!0,C=w,w=t.charAt(++A)),w===zn&&(p||!this.inLink)){for(C+=w,m="",A++,d=t.length,g=0,(b=e.now()).column+=A,b.offset+=A;A<d;){if(s=w=t.charAt(A),w===Yn){for(i=1;t.charAt(A+1)===Yn;)s+=w,A++,i++;a?i>=a&&(a=0):a=i}else if(w===jn)A++,s+=t.charAt(A);else if(a&&!_||w!==zn){if((!a||_)&&w===Gn){if(!g){if(!k)for(;A<d&&(w=t.charAt(A+1),Re(w));)s+=w,A++;if(t.charAt(A+1)!==Hn)return;s+=Hn,n=!0,A++;break}g--}}else g++;m+=s,s="",A++}if(n){for(f=m,C+=m+s,A++;A<d&&(w=t.charAt(A),Re(w));)C+=w,A++;if(w=t.charAt(A),l=T?Jn:Zn,m="",o=C,w===Wn){for(A++,o+=Wn;A<d&&(w=t.charAt(A))!==Qn;){if(T&&"\n"===w)return;m+=w,A++}if(t.charAt(A)!==Qn)return;C+=Wn+m+Qn,v=m,A++}else{for(w=null,s="";A<d&&(w=t.charAt(A),!s||!Mn.call(l,w));){if(Re(w)){if(!k)break;s+=w}else{if(w===Hn)g++;else if(w===Xn){if(0===g)break;g--}m+=s,s="",w===jn&&(m+=jn,w=t.charAt(++A)),m+=w}A++}v=m,A=(C+=m).length}for(m="";A<d&&(w=t.charAt(A),Re(w));)m+=w,A++;if(w=t.charAt(A),C+=m,m&&Mn.call(l,w))if(A++,C+=w,m="",h=l[w],u=C,T){for(;A<d&&(w=t.charAt(A))!==h;)w===jn&&(m+=jn,w=t.charAt(++A)),A++,m+=w;if((w=t.charAt(A))!==h)return;for(D=m,C+=m+w,A++;A<d&&(w=t.charAt(A),Re(w));)C+=w,A++}else for(s="";A<d;){if((w=t.charAt(A))===h)c&&(m+=h+s,s=""),c=!0;else if(c){if(w===Xn){C+=m+h+s,D=m;break}Re(w)?s+=w:(m+=h+s+w,s="",c=!1)}else m+=w;A++}if(t.charAt(A)===Xn)return!!r||(C+=Xn,v=this.decode.raw(this.unescape(v),e(o).test().end,{nonTerminated:!1}),D&&(u=e(u).test().end,D=this.decode.raw(this.unescape(D),u)),E={type:p?"image":"link",title:D||null,url:v},p?E.alt=this.decode.raw(this.unescape(f),b)||null:(y=this.enterLink(),E.children=this.tokenizeInline(f,b),y()),e(C)(E))}}}Jn['"']='"',Jn["'"]="'",Jn[Hn]=Xn;var ei=pi;pi.locator=$n;var ti="link",ri="image",ni="footnote",ii="shortcut",ai="collapsed",oi="full",ui="^",si="\\",ci="[",li="]";function pi(e,t,r){var n,i,a,o,u,s,c,l,p=t.charAt(0),f=0,h=t.length,d="",D="",g=ti,m=ii;if("!"===p&&(g=ri,D=p,p=t.charAt(++f)),p===ci){if(f++,D+=p,s="",this.options.footnotes&&t.charAt(f)===ui){if(g===ri)return;D+=ui,f++,g=ni}for(l=0;f<h;){if((p=t.charAt(f))===ci)c=!0,l++;else if(p===li){if(!l)break;l--}p===si&&(s+=si,p=t.charAt(++f)),s+=p,f++}if(d=s,n=s,(p=t.charAt(f))===li){for(f++,d+=p,s="";f<h&&(p=t.charAt(f),Re(p));)s+=p,f++;if(p=t.charAt(f),g!==ni&&p===ci){for(i="",s+=p,f++;f<h&&(p=t.charAt(f))!==ci&&p!==li;)p===si&&(i+=si,p=t.charAt(++f)),i+=p,f++;(p=t.charAt(f))===li?(m=i?oi:ai,s+=i+p,f++):i="",d+=s,s=""}else{if(!n)return;i=n}if(m===oi||!c)return d=D+d,g===ti&&this.inLink?null:!!r||(g===ni&&-1!==n.indexOf(" ")?e(d)({type:"footnote",children:this.tokenizeInline(n,e.now())}):((a=e.now()).column+=D.length,a.offset+=D.length,o={type:g+"Reference",identifier:dr(i=m===oi?i:n)},g!==ti&&g!==ri||(o.referenceType=m),g===ti?(u=this.enterLink(),o.children=this.tokenizeInline(n,a),u()):g===ri&&(o.alt=this.decode.raw(this.unescape(n),a)||null),e(d)(o)))}}}var fi=function(e,t){var r=e.indexOf("**",t),n=e.indexOf("__",t);if(-1===n)return r;if(-1===r)return n;return n<r?n:r};var hi=gi;gi.locator=fi;var di="*",Di="_";function gi(e,t,r){var n,i,a,o,u,s,c,l=0,p=t.charAt(l);if(!(p!==di&&p!==Di||t.charAt(++l)!==p||(i=this.options.pedantic,u=(a=p)+a,s=t.length,l++,o="",p="",i&&Re(t.charAt(l)))))for(;l<s;){if(c=p,!((p=t.charAt(l))!==a||t.charAt(l+1)!==a||i&&Re(c))&&(p=t.charAt(l+2))!==a){if(!at(o))return;return!!r||((n=e.now()).column+=2,n.offset+=2,e(u+o+u)({type:"strong",children:this.tokenizeInline(o,n)}))}i||"\\"!==p||(o+=p,p=t.charAt(++l)),o+=p,l++}}var mi=function(e){return bi.test("number"==typeof e?vi(e):e.charAt(0))},vi=String.fromCharCode,bi=/\w/;var yi=function(e,t){var r=e.indexOf("*",t),n=e.indexOf("_",t);if(-1===n)return r;if(-1===r)return n;return n<r?n:r};var Ei=wi;wi.locator=yi;var Ci="*",Ai="_";function wi(e,t,r){var n,i,a,o,u,s,c,l=0,p=t.charAt(l);if(!(p!==Ci&&p!==Ai||(i=this.options.pedantic,u=p,a=p,s=t.length,l++,o="",p="",i&&Re(t.charAt(l)))))for(;l<s;){if(c=p,!((p=t.charAt(l))!==a||i&&Re(c))){if((p=t.charAt(++l))!==a){if(!at(o)||c===a)return;if(!i&&a===Ai&&mi(p)){o+=a;continue}return!!r||((n=e.now()).column++,n.offset++,e(u+o+a)({type:"emphasis",children:this.tokenizeInline(o,n)}))}o+=a}i||"\\"!==p||(o+=p,p=t.charAt(++l)),o+=p,l++}}var ki=function(e,t){return e.indexOf("~~",t)};var Ti=Fi;Fi.locator=ki;var _i="~",Si="~~";function Fi(e,t,r){var n,i,a,o="",u="",s="",c="";if(this.options.gfm&&t.charAt(0)===_i&&t.charAt(1)===_i&&!Re(t.charAt(2)))for(n=1,i=t.length,(a=e.now()).column+=2,a.offset+=2;++n<i;){if(!((o=t.charAt(n))!==_i||u!==_i||s&&Re(s)))return!!r||e(Si+c+Si)({type:"delete",children:this.tokenizeInline(c,a)});c+=u,s=u,u=o}}var xi=function(e,t){return e.indexOf("`",t)};var qi=Li;Li.locator=xi;var Ni="`";function Li(e,t,r){for(var n,i,a,o,u,s,c,l,p=t.length,f=0,h="",d="";f<p&&t.charAt(f)===Ni;)h+=Ni,f++;if(h){for(u=h,o=f,h="",l=t.charAt(f),a=0;f<p;){if(s=l,l=t.charAt(f+1),s===Ni?(a++,d+=s):(a=0,h+=s),a&&l!==Ni){if(a===o){u+=h+d,c=!0;break}h+=d,d=""}f++}if(!c){if(o%2!=0)return;h=""}if(r)return!0;for(n="",i="",p=h.length,f=-1;++f<p;)s=h.charAt(f),Re(s)?i+=s:(i&&(n&&(n+=i),i=""),n+=s);return e(u)({type:"inlineCode",value:n})}}var Bi=function(e,t){var r=e.indexOf("\n",t);for(;r>t&&" "===e.charAt(r-1);)r--;return r};var Pi=Ri;Ri.locator=Bi;var Oi=2;function Ri(e,t,r){for(var n,i=t.length,a=-1,o="";++a<i;){if("\n"===(n=t.charAt(a))){if(a<Oi)return;return!!r||e(o+=n)({type:"break"})}if(" "!==n)return;o+=n}}var Ii=function(e,t,r){var n,i,a,o,u,s,c,l,p,f;if(r)return!0;n=this.inlineMethods,o=n.length,i=this.inlineTokenizers,a=-1,p=t.length;for(;++a<o;)"text"!==(l=n[a])&&i[l]&&((c=i[l].locator)||e.file.fail("Missing locator: `"+l+"`"),-1!==(s=c.call(this,t,1))&&s<p&&(p=s));u=t.slice(0,p),f=e.now(),this.decode(u,f,(function(t,r,n){e(n||t)({type:"text",value:t})}))};var Ui=$i;function $i(e,t){this.file=t,this.offset={},this.options=p(this.options),this.setOptions({}),this.inList=!1,this.inBlock=!1,this.inLink=!1,this.atStart=!0,this.toOffset=C(t).toOffset,this.unescape=k(this,"escape"),this.decode=be(this)}var Vi=$i.prototype;function Mi(e){var t,r=[];for(t in e)r.push(t);return r}Vi.setOptions=Fe,Vi.parse=Be,Vi.options=Se,Vi.exitStart=E("atStart",!0),Vi.enterList=E("inList",!1),Vi.enterLink=E("inLink",!1),Vi.enterBlock=E("inBlock",!1),Vi.interruptParagraph=[["thematicBreak"],["atxHeading"],["fencedCode"],["blockquote"],["html"],["setextHeading",{commonmark:!1}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],Vi.interruptList=[["atxHeading",{pedantic:!1}],["fencedCode",{pedantic:!1}],["thematicBreak",{pedantic:!1}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],Vi.interruptBlockquote=[["indentedCode",{commonmark:!0}],["fencedCode",{commonmark:!0}],["atxHeading",{commonmark:!0}],["setextHeading",{commonmark:!0}],["thematicBreak",{commonmark:!0}],["html",{commonmark:!0}],["list",{commonmark:!0}],["definition",{commonmark:!1}],["footnote",{commonmark:!1}]],Vi.blockTokenizers={newline:$e,indentedCode:He,fencedCode:Ze,blockquote:ut,atxHeading:ft,thematicBreak:vt,list:Nt,setextHeading:Jt,html:sr,footnote:Dr,definition:Tr,table:jr,paragraph:an},Vi.inlineTokenizers={escape:pn,autoLink:dn,url:wn,html:On,link:Vn,reference:ei,strong:hi,emphasis:Ei,deletion:Ti,code:qi,break:Pi,text:Ii},Vi.blockMethods=Mi(Vi.blockTokenizers),Vi.inlineMethods=Mi(Vi.inlineTokenizers),Vi.tokenizeBlock=ye("block"),Vi.tokenizeInline=ye("inline"),Vi.tokenizeFactory=ye;var ji=zi;function zi(e){var t=y(Ui);t.prototype.options=p(t.prototype.options,this.data("settings"),e),this.Parser=t}zi.Parser=Ui;var Gi=Object.prototype.hasOwnProperty,Hi=Object.prototype.toString,Xi=Object.defineProperty,Wi=Object.getOwnPropertyDescriptor,Qi=function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===Hi.call(e)},Yi=function(e){if(!e||"[object Object]"!==Hi.call(e))return!1;var t,r=Gi.call(e,"constructor"),n=e.constructor&&e.constructor.prototype&&Gi.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!r&&!n)return!1;for(t in e);return void 0===t||Gi.call(e,t)},Zi=function(e,t){Xi&&"__proto__"===t.name?Xi(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},Ji=function(e,t){if("__proto__"===t){if(!Gi.call(e,t))return;if(Wi)return Wi(e,t).value}return e[t]},Ki=function e(){var r,n,i,a,o,u,s=arguments[0],c=1,l=arguments.length,p=!1;for("boolean"==typeof s&&(p=s,s=arguments[1]||{},c=2),(null==s||"object"!==t(s)&&"function"!=typeof s)&&(s={});c<l;++c)if(null!=(r=arguments[c]))for(n in r)i=Ji(s,n),s!==(a=Ji(r,n))&&(p&&a&&(Yi(a)||(o=Qi(a)))?(o?(o=!1,u=i&&Qi(i)?i:[]):u=i&&Yi(i)?i:{},Zi(s,{name:n,newValue:e(p,u,a)})):void 0!==a&&Zi(s,{name:n,newValue:a}));return s},ea=function(e){if(e)throw e};var ta={}.hasOwnProperty,ra=function(e){if(!e||"object"!==t(e))return"";if(ta.call(e,"position")||ta.call(e,"type"))return ia(e.position);if(ta.call(e,"start")||ta.call(e,"end"))return ia(e);if(ta.call(e,"line")||ta.call(e,"column"))return na(e);return""};function na(e){return e&&"object"===t(e)||(e={}),aa(e.line)+":"+aa(e.column)}function ia(e){return e&&"object"===t(e)||(e={}),na(e.start)+"-"+na(e.end)}function aa(e){return e&&"number"==typeof e?e:1}var oa=ca;function ua(){}ua.prototype=Error.prototype,ca.prototype=new ua;var sa=ca.prototype;function ca(e,t,r){var n,i,a;"string"==typeof t&&(r=t,t=null),n=function(e){var t,r=[null,null];"string"==typeof e&&(-1===(t=e.indexOf(":"))?r[1]=e:(r[0]=e.slice(0,t),r[1]=e.slice(t+1)));return r}(r),i=ra(t)||"1:1",a={start:{line:null,column:null},end:{line:null,column:null}},t&&t.position&&(t=t.position),t&&(t.start?(a=t,t=t.start):a.start=t),e.stack&&(this.stack=e.stack,e=e.message),this.message=e,this.name=i,this.reason=e,this.line=t?t.line:null,this.column=t?t.column:null,this.location=a,this.source=n[0],this.ruleId=n[1]}sa.file="",sa.name="",sa.reason="",sa.message="",sa.stack="",sa.fatal=null,sa.column=null,sa.line=null;var la="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function pa(){throw new Error("setTimeout has not been defined")}function fa(){throw new Error("clearTimeout has not been defined")}var ha=pa,da=fa;function Da(e){if(ha===setTimeout)return setTimeout(e,0);if((ha===pa||!ha)&&setTimeout)return ha=setTimeout,setTimeout(e,0);try{return ha(e,0)}catch(t){try{return ha.call(null,e,0)}catch(t){return ha.call(this,e,0)}}}"function"==typeof la.setTimeout&&(ha=setTimeout),"function"==typeof la.clearTimeout&&(da=clearTimeout);var ga,ma=[],va=!1,ba=-1;function ya(){va&&ga&&(va=!1,ga.length?ma=ga.concat(ma):ba=-1,ma.length&&Ea())}function Ea(){if(!va){var e=Da(ya);va=!0;for(var t=ma.length;t;){for(ga=ma,ma=[];++ba<t;)ga&&ga[ba].run();ba=-1,t=ma.length}ga=null,va=!1,function(e){if(da===clearTimeout)return clearTimeout(e);if((da===fa||!da)&&clearTimeout)return da=clearTimeout,clearTimeout(e);try{da(e)}catch(t){try{return da.call(null,e)}catch(t){return da.call(this,e)}}}(e)}}function Ca(e,t){this.fun=e,this.array=t}Ca.prototype.run=function(){this.fun.apply(null,this.array)};function Aa(){}var wa=Aa,ka=Aa,Ta=Aa,_a=Aa,Sa=Aa,Fa=Aa,xa=Aa;var qa=la.performance||{},Na=qa.now||qa.mozNow||qa.msNow||qa.oNow||qa.webkitNow||function(){return(new Date).getTime()};var La=new Date;var Ba={nextTick:function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];ma.push(new Ca(e,t)),1!==ma.length||va||Da(Ea)},title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:wa,addListener:ka,once:Ta,off:_a,removeListener:Sa,removeAllListeners:Fa,emit:xa,binding:function(e){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(e){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(e){var t=.001*Na.call(qa),r=Math.floor(t),n=Math.floor(t%1*1e9);return e&&(r-=e[0],(n-=e[1])<0&&(r--,n+=1e9)),[r,n]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-La)/1e3}};var Pa=D(Object.freeze({__proto__:null,extname:function(e){var t=e.lastIndexOf(".");return-1===t?"":e.slice(t)}}));var Oa=function(e,t){if("string"!=typeof e)return e;if(0===e.length)return e;var r=Pa.basename(e,Pa.extname(e))+t;return Pa.join(Pa.dirname(e),r)},Ra=function(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},Ia=Ma,Ua={}.hasOwnProperty,$a=Ma.prototype,Va=["history","path","basename","stem","extname","dirname"];
+/*!
+ * Determine if an object is a Buffer
+ *
+ * @author Feross Aboukhadijeh <https://feross.org>
+ * @license MIT
+ */function Ma(e){var t,r,n;if(e){if("string"==typeof e||Ra(e))e={contents:e};else if("message"in e&&"messages"in e)return e}else e={};if(!(this instanceof Ma))return new Ma(e);for(this.data={},this.messages=[],this.history=[],this.cwd=Ba.cwd(),r=-1,n=Va.length;++r<n;)t=Va[r],Ua.call(e,t)&&(this[t]=e[t]);for(t in e)-1===Va.indexOf(t)&&(this[t]=e[t])}function ja(e,t){if(-1!==e.indexOf(Pa.sep))throw new Error("`"+t+"` cannot be a path: did not expect `"+Pa.sep+"`")}function za(e,t){if(!e)throw new Error("`"+t+"` cannot be empty")}function Ga(e,t){if(!e)throw new Error("Setting `"+t+"` requires `path` to be set too")}$a.toString=function(e){var t=this.contents||"";return Ra(t)?t.toString(e):String(t)},Object.defineProperty($a,"path",{get:function(){return this.history[this.history.length-1]},set:function(e){za(e,"path"),e!==this.path&&this.history.push(e)}}),Object.defineProperty($a,"dirname",{get:function(){return"string"==typeof this.path?Pa.dirname(this.path):void 0},set:function(e){Ga(this.path,"dirname"),this.path=Pa.join(e||"",this.basename)}}),Object.defineProperty($a,"basename",{get:function(){return"string"==typeof this.path?Pa.basename(this.path):void 0},set:function(e){za(e,"basename"),ja(e,"basename"),this.path=Pa.join(this.dirname||"",e)}}),Object.defineProperty($a,"extname",{get:function(){return"string"==typeof this.path?Pa.extname(this.path):void 0},set:function(e){var t=e||"";if(ja(t,"extname"),Ga(this.path,"extname"),t){if("."!==t.charAt(0))throw new Error("`extname` must start with `.`");if(-1!==t.indexOf(".",1))throw new Error("`extname` cannot contain multiple dots")}this.path=Oa(this.path,t)}}),Object.defineProperty($a,"stem",{get:function(){return"string"==typeof this.path?Pa.basename(this.path,this.extname):void 0},set:function(e){za(e,"stem"),ja(e,"stem"),this.path=Pa.join(this.dirname||"",e+(this.extname||""))}});var Ha=Ia,Xa=Ia.prototype;Xa.message=function(e,t,r){var n=this.path,i=new oa(e,t,r);n&&(i.name=n+":"+i.name,i.file=n);return i.fatal=!1,this.messages.push(i),i},Xa.info=function(){var e=this.message.apply(this,arguments);return e.fatal=null,e},Xa.fail=function(){var e=this.message.apply(this,arguments);throw e.fatal=!0,e};var Wa=function(){var e=[],t={};return t.run=function(){var t=-1,r=Qa.call(arguments,0,-1),n=arguments[arguments.length-1];if("function"!=typeof n)throw new Error("Expected function as last argument, not "+n);(function i(a){var o=e[++t],u=Qa.call(arguments,0).slice(1),s=r.length,c=-1;if(a)n(a);else{for(;++c<s;)null!==u[c]&&void 0!==u[c]||(u[c]=r[c]);r=u,o?function(e,t){var r;return function(){var t,a=Qa.call(arguments,0),o=e.length>a.length;o&&a.push(n);try{t=e.apply(null,a)}catch(e){if(o&&r)throw e;return n(e)}o||(t&&"function"==typeof t.then?t.then(i,n):t instanceof Error?n(t):i(t))};function n(){r||(r=!0,t.apply(null,arguments))}function i(e){n(null,e)}}(o,i).apply(null,r):n.apply(null,[null].concat(r))}}).apply(null,[null].concat(r))},t.use=function(r){if("function"!=typeof r)throw new Error("Expected `fn` to be a function, not "+r);return e.push(r),t},t},Qa=[].slice;var Ya=function(e){if("[object Object]"!==Object.prototype.toString.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.getPrototypeOf({})},Za=function e(){var r=[];var n=Wa();var i={};var a=!1;var o=-1;u.data=function(e,t){if("string"==typeof e)return 2===arguments.length?(io("data",a),i[e]=t,u):Ka.call(i,e)&&i[e]||null;if(e)return io("data",a),i=e,u;return i};u.freeze=s;u.attachers=r;u.use=function(e){var n;if(io("use",a),null==e);else if("function"==typeof e)l.apply(null,arguments);else{if("object"!==t(e))throw new Error("Expected usable value, not `"+e+"`");"length"in e?c(e):o(e)}n&&(i.settings=Ki(i.settings||{},n));return u;function o(e){c(e.plugins),e.settings&&(n=Ki(n||{},e.settings))}function s(e){if("function"==typeof e)l(e);else{if("object"!==t(e))throw new Error("Expected usable value, not `"+e+"`");"length"in e?l.apply(null,e):o(e)}}function c(e){var r,n;if(null==e);else{if(!("object"===t(e)&&"length"in e))throw new Error("Expected a list of plugins, not `"+e+"`");for(r=e.length,n=-1;++n<r;)s(e[n])}}function l(e,t){var n=function(e){var t,n=r.length,i=-1;for(;++i<n;)if((t=r[i])[0]===e)return t}(e);n?(Ya(n[1])&&Ya(t)&&(t=Ki(n[1],t)),n[1]=t):r.push(Ja.call(arguments))}};u.parse=function(e){var t,r=Ha(e);if(s(),ro("parse",t=u.Parser),to(t,"parse"))return new t(String(r),r).parse();return t(String(r),r)};u.stringify=function(e,t){var r,n=Ha(t);if(s(),no("stringify",r=u.Compiler),ao(e),to(r,"compile"))return new r(e,n).compile();return r(e,n)};u.run=c;u.runSync=function(e,t){var r,n=!1;return c(e,t,(function(e,t){n=!0,ea(e),r=t})),oo("runSync","run",n),r};u.process=l;u.processSync=function(e){var t,r=!1;return s(),ro("processSync",u.Parser),no("processSync",u.Compiler),l(t=Ha(e),(function(e){r=!0,ea(e)})),oo("processSync","process",r),t};return u;function u(){for(var t=e(),n=r.length,a=-1;++a<n;)t.use.apply(null,r[a]);return t.data(Ki(!0,{},i)),t}function s(){var e,t,i,s;if(a)return u;for(;++o<r.length;)t=(e=r[o])[0],null,!1!==(i=e[1])&&(!0===i&&(e[1]=void 0),"function"==typeof(s=t.apply(u,e.slice(1)))&&n.use(s));return a=!0,o=1/0,u}function c(e,t,r){if(ao(e),s(),r||"function"!=typeof t||(r=t,t=null),!r)return new Promise(i);function i(i,a){n.run(e,Ha(t),(function(t,n,o){n=n||e,t?a(t):i?i(n):r(null,n,o)}))}i(null,r)}function l(e,t){if(s(),ro("process",u.Parser),no("process",u.Compiler),!t)return new Promise(r);function r(r,n){var i=Ha(e);eo.run(u,{file:i},(function(e){e?n(e):r?r(i):t(null,i)}))}r(null,t)}}().freeze(),Ja=[].slice,Ka={}.hasOwnProperty,eo=Wa().use((function(e,t){t.tree=e.parse(t.file)})).use((function(e,t,r){e.run(t.tree,t.file,(function(e,n,i){e?r(e):(t.tree=n,t.file=i,r())}))})).use((function(e,t){t.file.contents=e.stringify(t.tree,t.file)}));function to(e,t){return"function"==typeof e&&e.prototype&&(function(e){var t;for(t in e)return!0;return!1}(e.prototype)||t in e.prototype)}function ro(e,t){if("function"!=typeof t)throw new Error("Cannot `"+e+"` without `Parser`")}function no(e,t){if("function"!=typeof t)throw new Error("Cannot `"+e+"` without `Compiler`")}function io(e,t){if(t)throw new Error("Cannot invoke `"+e+"` on a frozen processor.\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.")}function ao(e){if(!e||"string"!=typeof e.type)throw new Error("Expected node, got `"+e+"`")}function oo(e,t,r){if(!r)throw new Error("`"+e+"` finished async. Use `"+t+"` instead")}var uo=/[|\\{}()[\]^$+*?.]/g,so=function(e){if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(uo,"\\$&")},co={"---":"yaml","+++":"toml"};var lo=function(e){var t=Object.keys(co).map(so).join("|"),r=e.match(new RegExp("^(".concat(t,")[^\\n\\S]*\\n(?:([\\s\\S]*?)\\n)?\\1[^\\n\\S]*(\\n|$)")));if(null===r)return{frontMatter:null,content:e};var n=r[0].replace(/\n$/,""),i=r[1],a=r[2];return{frontMatter:{type:co[i],value:a,raw:n},content:r[0].replace(/[^\n]/g," ")+e.slice(r[0].length)}},po=["format","prettier"];function fo(e){var t="@(".concat(po.join("|"),")"),r=new RegExp(["\x3c!--\\s*".concat(t,"\\s*--\x3e"),"\x3c!--.*\r?\n[\\s\\S]*(^|\n)[^\\S\n]*".concat(t,"[^\\S\n]*($|\n)[\\s\\S]*\n.*--\x3e")].join("|"),"m"),n=e.match(r);return n&&0===n.index}var ho={startWithPragma:fo,hasPragma:function(e){return fo(lo(e).content.trimLeft())},insertPragma:function(e){var t=lo(e),r="\x3c!-- @".concat(po[0]," --\x3e");return t.frontMatter?"".concat(t.frontMatter.raw,"\n\n").concat(r,"\n\n").concat(t.content):"".concat(r,"\n\n").concat(t.content)}},Do="[\\u02ea-\\u02eb\\u1100-\\u11ff\\u2e80-\\u2e99\\u2e9b-\\u2ef3\\u2f00-\\u2fd5\\u3000-\\u303f\\u3041-\\u3096\\u3099-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u3190-\\u3191\\u3196-\\u31ba\\u31c0-\\u31e3\\u31f0-\\u321e\\u322a-\\u3247\\u3260-\\u327e\\u328a-\\u32b0\\u32c0-\\u32cb\\u32d0-\\u3370\\u337b-\\u337f\\u33e0-\\u33fe\\u3400-\\u4db5\\u4e00-\\u9fef\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufe10-\\ufe1f\\ufe30-\\ufe6f\\uff00-\\uffef]|[\\ud840-\\ud868\\ud86a-\\ud86c\\ud86f-\\ud872\\ud874-\\ud879][\\udc00-\\udfff]|\\ud82c[\\udc00-\\udd1e\\udd50-\\udd52\\udd64-\\udd67]|\\ud83c[\\ude00\\ude50-\\ude51]|\\ud869[\\udc00-\\uded6\\udf00-\\udfff]|\\ud86d[\\udc00-\\udf34\\udf40-\\udfff]|\\ud86e[\\udc00-\\udc1d\\udc20-\\udfff]|\\ud873[\\udc00-\\udea1\\udeb0-\\udfff]|\\ud87a[\\udc00-\\udfe0]|\\ud87e[\\udc00-\\ude1d]",go="[\\u1100-\\u11ff\\u3001-\\u3003\\u3008-\\u3011\\u3013-\\u301f\\u302e-\\u3030\\u3037\\u30fb\\u3131-\\u318e\\u3200-\\u321e\\u3260-\\u327e\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\ufe45-\\ufe46\\uff61-\\uff65\\uffa0-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc]",mo="[\\u0021-\\u002f\\u003a-\\u0040\\u005b-\\u0060\\u007b-\\u007e\\u00a1\\u00a7\\u00ab\\u00b6-\\u00b7\\u00bb\\u00bf\\u037e\\u0387\\u055a-\\u055f\\u0589-\\u058a\\u05be\\u05c0\\u05c3\\u05c6\\u05f3-\\u05f4\\u0609-\\u060a\\u060c-\\u060d\\u061b\\u061e-\\u061f\\u066a-\\u066d\\u06d4\\u0700-\\u070d\\u07f7-\\u07f9\\u0830-\\u083e\\u085e\\u0964-\\u0965\\u0970\\u09fd\\u0a76\\u0af0\\u0c77\\u0c84\\u0df4\\u0e4f\\u0e5a-\\u0e5b\\u0f04-\\u0f12\\u0f14\\u0f3a-\\u0f3d\\u0f85\\u0fd0-\\u0fd4\\u0fd9-\\u0fda\\u104a-\\u104f\\u10fb\\u1360-\\u1368\\u1400\\u166e\\u169b-\\u169c\\u16eb-\\u16ed\\u1735-\\u1736\\u17d4-\\u17d6\\u17d8-\\u17da\\u1800-\\u180a\\u1944-\\u1945\\u1a1e-\\u1a1f\\u1aa0-\\u1aa6\\u1aa8-\\u1aad\\u1b5a-\\u1b60\\u1bfc-\\u1bff\\u1c3b-\\u1c3f\\u1c7e-\\u1c7f\\u1cc0-\\u1cc7\\u1cd3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205e\\u207d-\\u207e\\u208d-\\u208e\\u2308-\\u230b\\u2329-\\u232a\\u2768-\\u2775\\u27c5-\\u27c6\\u27e6-\\u27ef\\u2983-\\u2998\\u29d8-\\u29db\\u29fc-\\u29fd\\u2cf9-\\u2cfc\\u2cfe-\\u2cff\\u2d70\\u2e00-\\u2e2e\\u2e30-\\u2e4f\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301f\\u3030\\u303d\\u30a0\\u30fb\\ua4fe-\\ua4ff\\ua60d-\\ua60f\\ua673\\ua67e\\ua6f2-\\ua6f7\\ua874-\\ua877\\ua8ce-\\ua8cf\\ua8f8-\\ua8fa\\ua8fc\\ua92e-\\ua92f\\ua95f\\ua9c1-\\ua9cd\\ua9de-\\ua9df\\uaa5c-\\uaa5f\\uaade-\\uaadf\\uaaf0-\\uaaf1\\uabeb\\ufd3e-\\ufd3f\\ufe10-\\ufe19\\ufe30-\\ufe52\\ufe54-\\ufe61\\ufe63\\ufe68\\ufe6a-\\ufe6b\\uff01-\\uff03\\uff05-\\uff0a\\uff0c-\\uff0f\\uff1a-\\uff1b\\uff1f-\\uff20\\uff3b-\\uff3d\\uff3f\\uff5b\\uff5d\\uff5f-\\uff65]|\\ud800[\\udd00-\\udd02\\udf9f\\udfd0]|\\ud801[\\udd6f]|\\ud802[\\udc57\\udd1f\\udd3f\\ude50-\\ude58\\ude7f\\udef0-\\udef6\\udf39-\\udf3f\\udf99-\\udf9c]|\\ud803[\\udf55-\\udf59]|\\ud804[\\udc47-\\udc4d\\udcbb-\\udcbc\\udcbe-\\udcc1\\udd40-\\udd43\\udd74-\\udd75\\uddc5-\\uddc8\\uddcd\\udddb\\udddd-\\udddf\\ude38-\\ude3d\\udea9]|\\ud805[\\udc4b-\\udc4f\\udc5b\\udc5d\\udcc6\\uddc1-\\uddd7\\ude41-\\ude43\\ude60-\\ude6c\\udf3c-\\udf3e]|\\ud806[\\udc3b\\udde2\\ude3f-\\ude46\\ude9a-\\ude9c\\ude9e-\\udea2]|\\ud807[\\udc41-\\udc45\\udc70-\\udc71\\udef7-\\udef8\\udfff]|\\ud809[\\udc70-\\udc74]|\\ud81a[\\ude6e-\\ude6f\\udef5\\udf37-\\udf3b\\udf44]|\\ud81b[\\ude97-\\ude9a\\udfe2]|\\ud82f[\\udc9f]|\\ud836[\\ude87-\\ude8b]|\\ud83a[\\udd5e-\\udd5f]",vo=function(e){return"string"==typeof e?e.replace(function(e){e=Object.assign({onlyFirst:!1},e);var t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e.onlyFirst?void 0:"g")}(),""):e},bo=vo,yo=vo;bo.default=yo;var Eo=function(e){return!Number.isNaN(e)&&(e>=4352&&(e<=4447||9001===e||9002===e||11904<=e&&e<=12871&&12351!==e||12880<=e&&e<=19903||19968<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65131||65281<=e&&e<=65376||65504<=e&&e<=65510||110592<=e&&e<=110593||127488<=e&&e<=127569||131072<=e&&e<=262141))},Co=Eo,Ao=Eo;Co.default=Ao;var wo=function(e){if("string"!=typeof(e=e.replace(/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g," "))||0===e.length)return 0;e=bo(e);for(var t=0,r=0;r<e.length;r++){var n=e.codePointAt(r);n<=31||n>=127&&n<=159||(n>=768&&n<=879||(n>65535&&r++,t+=Co(n)?2:1))}return t},ko=wo,To=wo;ko.default=To;function _o(e){return function(t,r,n){var i=n&&n.backwards;if(!1===r)return!1;for(var a=t.length,o=r;o>=0&&o<a;){var u=t.charAt(o);if(e instanceof RegExp){if(!e.test(u))return o}else if(-1===e.indexOf(u))return o;i?o--:o++}return(-1===o||o===a)&&o}}_o(/\s/),_o(" \t"),_o(",; \t"),_o(/[^\r\n]/);var So={};[["|>"],["??"],["||"],["&&"],["|"],["^"],["&"],["==","===","!=","!=="],["<",">","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"],["**"]].forEach((function(e,t){e.forEach((function(e){So[e]=t}))}));var Fo=Do,xo=go,qo=mo,No=function(e){return e.length>0?e[e.length-1]:null},Lo=["liquidNode","inlineCode","emphasis","strong","delete","link","linkReference","image","imageReference","footnote","footnoteReference","sentence","whitespace","word","break","inlineMath"],Bo=Lo.concat(["tableCell","paragraph","heading"]),Po=new RegExp(xo),Oo=new RegExp(qo);var Ro={mapAst:function(e,t){return function e(r,n,i){var a=t(r,n,i=i||[]);return Array.isArray(a)?a:((a=Object.assign({},a)).children&&(a.children=a.children.reduce((function(t,r,n){var o=e(r,n,[a].concat(i));return Array.isArray(o)||(o=[o]),t.push.apply(t,o),t}),[])),a)}(e,null,null)},splitText:function(e,t){var r="non-cjk",n="cj-letter",i="cjk-punctuation",a=[];return("preserve"===t.proseWrap?e:e.replace(new RegExp("(".concat(Fo,")\n(").concat(Fo,")"),"g"),"$1$2")).split(/([ \t\n]+)/).forEach((function(e,t,u){t%2!=1?(0!==t&&t!==u.length-1||""!==e)&&e.split(new RegExp("(".concat(Fo,")"))).forEach((function(e,t,a){(0!==t&&t!==a.length-1||""!==e)&&(t%2!=0?o(Oo.test(e)?{type:"word",value:e,kind:i,hasLeadingPunctuation:!0,hasTrailingPunctuation:!0}:{type:"word",value:e,kind:Po.test(e)?"k-letter":n,hasLeadingPunctuation:!1,hasTrailingPunctuation:!1}):""!==e&&o({type:"word",value:e,kind:r,hasLeadingPunctuation:Oo.test(e[0]),hasTrailingPunctuation:Oo.test(No(e))}))})):a.push({type:"whitespace",value:/\n/.test(e)?"\n":" "})})),a;function o(e){var t,o,u=No(a);u&&"word"===u.type&&(u.kind===r&&e.kind===n&&!u.hasTrailingPunctuation||u.kind===n&&e.kind===r&&!e.hasLeadingPunctuation?a.push({type:"whitespace",value:" "}):(t=r,o=i,u.kind===t&&e.kind===o||u.kind===o&&e.kind===t||[u.value,e.value].some((function(e){return/\u3000/.test(e)}))||a.push({type:"whitespace",value:""}))),a.push(e)}},punctuationPattern:qo,getFencedCodeBlockValue:function(e,t){var r=t.slice(e.position.start.offset,e.position.end.offset),n=r.match(/^\s*/)[0].length,i=new RegExp("^\\s{0,".concat(n,"}")),a=r.split("\n"),o=r[n],u=r.slice(n).match(new RegExp("^[".concat(o,"]+")))[0],s=new RegExp("^\\s{0,3}".concat(u)).test(a[a.length-1].slice(c(a.length-1)));return a.slice(1,s?-1:void 0).map((function(e,t){return e.slice(c(t+1)).replace(i,"")})).join("\n");function c(t){return e.position.indent[t-1]-1}},getOrderedListItemInfo:function(e,t){var r=l(t.slice(e.position.start.offset,e.position.end.offset).match(/^\s*(\d+)(\.|\))(\s*)/),4);return{numberText:r[1],marker:r[2],leadingSpaces:r[3]}},INLINE_NODE_TYPES:Lo,INLINE_NODE_WRAPPER_TYPES:Bo},Io=/^import\s/,Uo=/^export\s/,$o=function(e){return Io.test(e)},Vo=function(e){return Uo.test(e)},Mo=function(e,t){var r=t.indexOf("\n\n"),n=t.slice(0,r);if(Vo(n)||$o(n))return e(n)({type:Vo(n)?"export":"import",value:n})};Mo.locator=function(e){return Vo(e)||$o(e)?-1:1};var jo={esSyntax:function(){var e=this.Parser,t=e.prototype.blockTokenizers,r=e.prototype.blockMethods;t.esSyntax=Mo,r.splice(r.indexOf("paragraph"),0,"esSyntax")},BLOCKS_REGEX:"[a-z\\.]*(\\.){0,1}[a-z][a-z0-9\\.]*",COMMENT_REGEX:"\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e"};function zo(e,t){return e.indexOf("$",t)}var Go=/^\\\$/,Ho=/^\$((?:\\\$|[^$])+)\$/,Xo=/^\$\$((?:\\\$|[^$])+)\$\$/,Wo=function(e){function t(t,r,n){var i=!0,a=Xo.exec(r);a||(a=Ho.exec(r),i=!1);var o=Go.exec(r);if(o)return!!n||t(o[0])({type:"text",value:"$"});if("\\$"===r.slice(-2))return t(r)({type:"text",value:r.slice(0,-2)+"$"});if(a){if(n)return!0;if(a[0].includes("`")&&r.slice(a[0].length).includes("`")){var u=r.slice(0,r.indexOf("`"));return t(u)({type:"text",value:u})}var s=a[1].trim();return t(a[0])({type:"inlineMath",value:s,data:{hName:"span",hProperties:{className:"inlineMath"+(i&&e.inlineMathDouble?" inlineMathDouble":"")},hChildren:[{type:"text",value:s}]}})}}t.locator=zo;var r=this.Parser,n=r.prototype.inlineTokenizers,i=r.prototype.inlineMethods;n.math=t,i.splice(i.indexOf("text"),0,"math");var a=this.Compiler;null!=a&&(a.prototype.visitors.inlineMath=function(e){return"$"+e.value+"$"})},Qo="\n",Yo="\t",Zo=" ",Jo="$",Ko=2,eu=4,tu=function(e){var t=this.Parser,r=t.prototype.blockTokenizers,n=t.prototype.blockMethods;r.math=function(e,t,r){for(var n,i,a,o,u,s,c,l,p,f,h=t.length+1,d=0,D="";d<h&&((a=t.charAt(d))===Zo||a===Yo);)D+=a,d++;if(p=d,(a=t.charAt(d))===Jo){for(d++,i=a,n=1,D+=a;d<h&&(a=t.charAt(d))===i;)D+=a,n++,d++;if(!(n<Ko)){for(;d<h&&(a=t.charAt(d))!==Qo;){if(a===Jo)return;D+=a,d++}if(a=t.charAt(d),r)return!0;for((f=e.now()).column+=D.length,f.offset+=D.length,o=c=l=u=s="";d<h;)if(u+=c,s+=l,c=l="",(a=t.charAt(d))===Qo){for(u?(c+=a,l+=a):D+=a,o="",d++;d<h&&(a=t.charAt(d))===Zo;)o+=a,d++;if(c+=o,l+=o.slice(p),!(o.length>=eu)){for(o="";d<h&&(a=t.charAt(d))===i;)o+=a,d++;if(c+=o,l+=o,!(o.length<n)){for(o="";d<h&&(a=t.charAt(d))!==Qo;)c+=a,l+=a,d++;break}}}else u+=a,l+=a,d++;D+=u+c;var g=ze(s);return e(D)({type:"math",value:g,data:{hName:"div",hProperties:{className:"math"},hChildren:[{type:"text",value:g}]}})}}},n.splice(n.indexOf("fencedCode")+1,0,"math");var i=t.prototype.interruptParagraph,a=t.prototype.interruptList,o=t.prototype.interruptBlockquote;i.splice(i.indexOf("fencedCode")+1,0,["math"]),a.splice(a.indexOf("fencedCode")+1,0,["math"]),o.splice(o.indexOf("fencedCode")+1,0,["math"]);var u=this.Compiler;null!=u&&(u.prototype.visitors.math=function(e){return"$$\n"+e.value+"\n$$"})},ru=function(e){null==e&&(e={}),tu.call(this,e),Wo.call(this,e)},nu={area:"none",base:"none",basefont:"none",datalist:"none",head:"none",link:"none",meta:"none",noembed:"none",noframes:"none",param:"none",rp:"none",script:"block",source:"block",style:"none",template:"inline",track:"block",title:"none",html:"block",body:"block",address:"block",blockquote:"block",center:"block",div:"block",figure:"block",figcaption:"block",footer:"block",form:"block",header:"block",hr:"block",legend:"block",listing:"block",main:"block",p:"block",plaintext:"block",pre:"block",xmp:"block",slot:"contents",ruby:"ruby",rt:"ruby-text",article:"block",aside:"block",h1:"block",h2:"block",h3:"block",h4:"block",h5:"block",h6:"block",hgroup:"block",nav:"block",section:"block",dir:"block",dd:"block",dl:"block",dt:"block",ol:"block",ul:"block",li:"list-item",table:"table",caption:"table-caption",colgroup:"table-column-group",col:"table-column",thead:"table-header-group",tbody:"table-row-group",tfoot:"table-footer-group",tr:"table-row",td:"table-cell",th:"table-cell",fieldset:"block",button:"inline-block",video:"inline-block",audio:"inline-block"},iu="inline",au={listing:"pre",plaintext:"pre",pre:"pre",xmp:"pre",nobr:"nowrap",table:"initial",textarea:"pre-wrap"},ou="normal",uu=Object.freeze({__proto__:null,default:["a","abbr","acronym","address","applet","area","article","aside","audio","b","base","basefont","bdi","bdo","bgsound","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","command","content","data","datalist","dd","del","details","dfn","dialog","dir","div","dl","dt","element","em","embed","fieldset","figcaption","figure","font","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","image","img","input","ins","isindex","kbd","keygen","label","legend","li","link","listing","main","map","mark","marquee","math","menu","menuitem","meta","meter","multicol","nav","nextid","nobr","noembed","noframes","noscript","object","ol","optgroup","option","output","p","param","picture","plaintext","pre","progress","q","rb","rbc","rp","rt","rtc","ruby","s","samp","script","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","tt","u","ul","var","video","wbr","xmp"]}),su=["accesskey","charset","coords","download","href","hreflang","name","ping","referrerpolicy","rel","rev","shape","tabindex","target","type"],cu=["title"],lu=["align","alt","archive","code","codebase","height","hspace","name","object","vspace","width"],pu=["accesskey","alt","coords","download","href","hreflang","nohref","ping","referrerpolicy","rel","shape","tabindex","target","type"],fu=["autoplay","controls","crossorigin","loop","muted","preload","src"],hu=["href","target"],du=["color","face","size"],Du=["dir"],gu=["cite"],mu=["alink","background","bgcolor","link","text","vlink"],vu=["clear"],bu=["accesskey","autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","tabindex","type","value"],yu=["height","width"],Eu=["align"],Cu=["align","char","charoff","span","valign","width"],Au=["align","char","charoff","span","valign","width"],wu=["value"],ku=["cite","datetime"],Tu=["open"],_u=["title"],Su=["open"],Fu=["compact"],xu=["align"],qu=["compact"],Nu=["height","src","type","width"],Lu=["disabled","form","name"],Bu=["color","face","size"],Pu=["accept","accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],Ou=["frameborder","longdesc","marginheight","marginwidth","name","noresize","scrolling","src"],Ru=["cols","rows"],Iu=["align"],Uu=["align"],$u=["align"],Vu=["align"],Mu=["align"],ju=["align"],zu=["profile"],Gu=["align","noshade","size","width"],Hu=["manifest","version"],Xu=["align","allow","allowfullscreen","allowpaymentrequest","allowusermedia","frameborder","height","longdesc","marginheight","marginwidth","name","referrerpolicy","sandbox","scrolling","src","srcdoc","width"],Wu=["align","alt","border","crossorigin","decoding","height","hspace","ismap","longdesc","name","referrerpolicy","sizes","src","srcset","usemap","vspace","width"],Qu=["accept","accesskey","align","alt","autocomplete","autofocus","checked","dirname","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","ismap","list","max","maxlength","min","minlength","multiple","name","pattern","placeholder","readonly","required","size","src","step","tabindex","title","type","usemap","value","width"],Yu=["cite","datetime"],Zu=["prompt"],Ju=["accesskey","for","form"],Ku=["accesskey","align"],es=["type","value"],ts=["as","charset","color","crossorigin","href","hreflang","imagesizes","imagesrcset","integrity","media","nonce","referrerpolicy","rel","rev","sizes","target","title","type"],rs=["name"],ns=["compact"],is=["charset","content","http-equiv","name","scheme"],as=["high","low","max","min","optimum","value"],os=["align","archive","border","classid","codebase","codetype","data","declare","form","height","hspace","name","standby","tabindex","type","typemustmatch","usemap","vspace","width"],us=["compact","reversed","start","type"],ss=["disabled","label"],cs=["disabled","label","selected","value"],ls=["for","form","name"],ps=["align"],fs=["name","type","value","valuetype"],hs=["width"],ds=["max","value"],Ds=["cite"],gs=["async","charset","crossorigin","defer","integrity","language","nomodule","nonce","referrerpolicy","src","type"],ms=["autocomplete","autofocus","disabled","form","multiple","name","required","size","tabindex"],vs=["name"],bs=["media","sizes","src","srcset","type"],ys=["media","nonce","title","type"],Es=["align","bgcolor","border","cellpadding","cellspacing","frame","rules","summary","width"],Cs=["align","char","charoff","valign"],As=["abbr","align","axis","bgcolor","char","charoff","colspan","headers","height","nowrap","rowspan","scope","valign","width"],ws=["accesskey","autocomplete","autofocus","cols","dirname","disabled","form","maxlength","minlength","name","placeholder","readonly","required","rows","tabindex","wrap"],ks=["align","char","charoff","valign"],Ts=["abbr","align","axis","bgcolor","char","charoff","colspan","headers","height","nowrap","rowspan","scope","valign","width"],_s=["align","char","charoff","valign"],Ss=["datetime"],Fs=["align","bgcolor","char","charoff","valign"],xs=["default","kind","label","src","srclang"],qs=["compact","type"],Ns=["autoplay","controls","crossorigin","height","loop","muted","playsinline","poster","preload","src","width"],Ls={"*":["accesskey","autocapitalize","autofocus","class","contenteditable","dir","draggable","enterkeyhint","hidden","id","inputmode","is","itemid","itemprop","itemref","itemscope","itemtype","lang","nonce","slot","spellcheck","style","tabindex","title","translate"],a:su,abbr:cu,applet:lu,area:pu,audio:fu,base:hu,basefont:du,bdo:Du,blockquote:gu,body:mu,br:vu,button:bu,canvas:yu,caption:Eu,col:Cu,colgroup:Au,data:wu,del:ku,details:Tu,dfn:_u,dialog:Su,dir:Fu,div:xu,dl:qu,embed:Nu,fieldset:Lu,font:Bu,form:Pu,frame:Ou,frameset:Ru,h1:Iu,h2:Uu,h3:$u,h4:Vu,h5:Mu,h6:ju,head:zu,hr:Gu,html:Hu,iframe:Xu,img:Wu,input:Qu,ins:Yu,isindex:Zu,label:Ju,legend:Ku,li:es,link:ts,map:rs,menu:ns,meta:is,meter:as,object:os,ol:us,optgroup:ss,option:cs,output:ls,p:ps,param:fs,pre:hs,progress:ds,q:Ds,script:gs,select:ms,slot:vs,source:bs,style:ys,table:Es,tbody:Cs,td:As,textarea:ws,tfoot:ks,th:Ts,thead:_s,time:Ss,tr:Fs,track:xs,ul:qs,video:Ns},Bs=Object.freeze({__proto__:null,a:su,abbr:cu,applet:lu,area:pu,audio:fu,base:hu,basefont:du,bdo:Du,blockquote:gu,body:mu,br:vu,button:bu,canvas:yu,caption:Eu,col:Cu,colgroup:Au,data:wu,del:ku,details:Tu,dfn:_u,dialog:Su,dir:Fu,div:xu,dl:qu,embed:Nu,fieldset:Lu,font:Bu,form:Pu,frame:Ou,frameset:Ru,h1:Iu,h2:Uu,h3:$u,h4:Vu,h5:Mu,h6:ju,head:zu,hr:Gu,html:Hu,iframe:Xu,img:Wu,input:Qu,ins:Yu,isindex:Zu,label:Ju,legend:Ku,li:es,link:ts,map:rs,menu:ns,meta:is,meter:as,object:os,ol:us,optgroup:ss,option:cs,output:ls,p:ps,param:fs,pre:hs,progress:ds,q:Ds,script:gs,select:ms,slot:vs,source:bs,style:ys,table:Es,tbody:Cs,td:As,textarea:ws,tfoot:ks,th:Ts,thead:_s,time:Ss,tr:Fs,track:xs,ul:qs,video:Ns,default:Ls}),Ps=D(uu),Os=D(Bs),Rs=nu,Is=iu,Us=au,$s=ou,Vs=Ms(Ps);function Ms(e){var t=Object.create(null),r=!0,n=!1,i=void 0;try{for(var a,o=e[Symbol.iterator]();!(r=(a=o.next()).done);r=!0){t[a.value]=!0}}catch(e){n=!0,i=e}finally{try{r||null==o.return||o.return()}finally{if(n)throw i}}return t}function js(e,t){return!("element"!==e.type||"template"!==e.fullName||!e.attrMap.lang||"html"===e.attrMap.lang)||(!("ieConditionalComment"!==e.type||!e.lastChild||e.lastChild.isSelfClosing||e.lastChild.endSourceSpan)||("ieConditionalComment"===e.type&&!e.complete||("vue"===t.parser&&"element"===e.type&&"root"===e.parent.type&&-1===["template","style","script","html"].indexOf(e.fullName)||!(!rc(e)||!e.children.some((function(e){return"text"!==e.type&&"interpolation"!==e.type}))))))}function zs(e){return"attribute"!==e.type&&!Gs(e)&&(!!e.parent&&("number"==typeof e.index&&0!==e.index&&function(e){return"comment"===e.type&&"prettier-ignore"===e.value.trim()}(e.parent.children[e.index-1])))}function Gs(e){return"text"===e.type||"comment"===e.type}function Hs(e){return"element"===e.type&&("script"===e.fullName||"style"===e.fullName||"svg:style"===e.fullName)}function Xs(e){return"yaml"===e.type||"toml"===e.type}function Ws(e){return nc(e).startsWith("pre")}function Qs(e){return"element"===e.type&&0!==e.children.length&&(-1!==["html","head","ul","ol","select"].indexOf(e.name)||e.cssDisplay.startsWith("table")&&"table-cell"!==e.cssDisplay)}function Ys(e){return ec(e)||"element"===e.type&&"br"===e.fullName||Zs(e)}function Zs(e){return Js(e)&&Ks(e)}function Js(e){return e.hasLeadingSpaces&&(e.prev?e.prev.sourceSpan.end.line<e.sourceSpan.start.line:"root"===e.parent.type||e.parent.startSourceSpan.end.line<e.sourceSpan.start.line)}function Ks(e){return e.hasTrailingSpaces&&(e.next?e.next.sourceSpan.start.line>e.sourceSpan.end.line:"root"===e.parent.type||e.parent.endSourceSpan.start.line>e.sourceSpan.end.line)}function ec(e){switch(e.type){case"ieConditionalComment":case"comment":case"directive":return!0;case"element":return-1!==["script","select"].indexOf(e.name)}return!1}function tc(e){return"block"===e||"list-item"===e||e.startsWith("table")}function rc(e){return nc(e).startsWith("pre")}function nc(e){return"element"===e.type&&!e.namespace&&Us[e.name]||$s}var ic={HTML_ELEMENT_ATTRIBUTES:function(e,t){for(var r=Object.create(null),n=0,i=Object.keys(e);n<i.length;n++){var a=i[n];r[a]=t(e[a],a)}return r}(Os,Ms),HTML_TAGS:Vs,canHaveInterpolation:function(e){return e.children&&!Hs(e)},countChars:function(e,t){for(var r=0,n=0;n<e.length;n++)e[n]===t&&r++;return r},countParents:function(e){for(var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(){return!0},n=0,i=e.stack.length-1;i>=0;i--){var a=e.stack[i];a&&"object"===t(a)&&!Array.isArray(a)&&r(a)&&n++}return n},dedentString:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:function(e){var t=1/0,r=!0,n=!1,i=void 0;try{for(var a,o=e.split("\n")[Symbol.iterator]();!(r=(a=o.next()).done);r=!0){var u=a.value;if(0!==u.length){if(/\S/.test(u[0]))return 0;var s=u.match(/^\s*/)[0].length;u.length!==s&&s<t&&(t=s)}}}catch(e){n=!0,i=e}finally{try{r||null==o.return||o.return()}finally{if(n)throw i}}return t===1/0?0:t}(e);return 0===t?e:e.split("\n").map((function(e){return e.slice(t)})).join("\n")},forceBreakChildren:Qs,forceBreakContent:function(e){return Qs(e)||"element"===e.type&&0!==e.children.length&&(-1!==["body","script","style"].indexOf(e.name)||e.children.some((function(e){return function(e){return e.children&&e.children.some((function(e){return"text"!==e.type}))}(e)})))||e.firstChild&&e.firstChild===e.lastChild&&Js(e.firstChild)&&(!e.lastChild.isTrailingSpaceSensitive||Ks(e.lastChild))},forceNextEmptyLine:function(e){return Xs(e)||e.next&&e.sourceSpan.end.line+1<e.next.sourceSpan.start.line},getLastDescendant:function e(t){return t.lastChild?e(t.lastChild):t},getNodeCssStyleDisplay:function(e,t){if(e.prev&&"comment"===e.prev.type){var r=e.prev.value.match(/^\s*display:\s*([a-z]+)\s*$/);if(r)return r[1]}var n=!1;if("element"===e.type&&"svg"===e.namespace){if(!function(e,t){for(var r=e;r;){if(t(r))return!0;r=r.parent}return!1}(e,(function(e){return"svg:foreignObject"===e.fullName})))return"svg"===e.name?"inline-block":"block";n=!0}switch(t.htmlWhitespaceSensitivity){case"strict":return"inline";case"ignore":return"block";default:return"element"===e.type&&(!e.namespace||n)&&Rs[e.name]||Is}},getNodeCssStyleWhiteSpace:nc,getPrettierIgnoreAttributeCommentData:function(e){var t=e.trim().match(/^prettier-ignore-attribute(?:\s+([^]+))?$/);return!!t&&(!t[1]||t[1].split(/\s+/))},hasPrettierIgnore:zs,identity:function(e){return e},inferScriptParser:function(e){if("script"===e.name&&!e.attrMap.src){if(!e.attrMap.lang&&!e.attrMap.type||"module"===e.attrMap.type||"text/javascript"===e.attrMap.type||"text/babel"===e.attrMap.type||"application/javascript"===e.attrMap.type)return"babel";if("application/x-typescript"===e.attrMap.type||"ts"===e.attrMap.lang||"tsx"===e.attrMap.lang)return"typescript";if("text/markdown"===e.attrMap.type)return"markdown";if(e.attrMap.type.endsWith("json")||e.attrMap.type.endsWith("importmap"))return"json"}if("style"===e.name){if(!e.attrMap.lang||"postcss"===e.attrMap.lang||"css"===e.attrMap.lang)return"css";if("scss"===e.attrMap.lang)return"scss";if("less"===e.attrMap.lang)return"less"}return null},isDanglingSpaceSensitiveNode:function(e){return!tc(t=e.cssDisplay)&&"inline-block"!==t&&!Hs(e);var t},isFrontMatterNode:Xs,isIndentationSensitiveNode:Ws,isLeadingSpaceSensitiveNode:function(e){var t=function(){if(Xs(e))return!1;if(("text"===e.type||"interpolation"===e.type)&&e.prev&&("text"===e.prev.type||"interpolation"===e.prev.type))return!0;if(!e.parent||"none"===e.parent.cssDisplay)return!1;if(rc(e.parent))return!0;if(!e.prev&&("root"===e.parent.type||Hs(e.parent)||(t=e.parent.cssDisplay,tc(t)||"inline-block"===t)))return!1;var t;if(e.prev&&!function(e){return!tc(e)}(e.prev.cssDisplay))return!1;return!0}();return t&&!e.prev&&e.parent&&e.parent.tagDefinition&&e.parent.tagDefinition.ignoreFirstLf?"interpolation"===e.type:t},isPreLikeNode:rc,isScriptLikeTag:Hs,isTextLikeNode:Gs,isTrailingSpaceSensitiveNode:function(e){return!Xs(e)&&(!("text"!==e.type&&"interpolation"!==e.type||!e.next||"text"!==e.next.type&&"interpolation"!==e.next.type)||!(!e.parent||"none"===e.parent.cssDisplay)&&(!!rc(e.parent)||!(!e.next&&("root"===e.parent.type||Hs(e.parent)||(t=e.parent.cssDisplay,tc(t)||"inline-block"===t)))&&!(e.next&&!function(e){return!tc(e)}(e.next.cssDisplay))));var t},isWhitespaceSensitiveNode:function(e){return Hs(e)||"interpolation"===e.type||Ws(e)},normalizeParts:function(e){for(var t=[],r=e.slice();0!==r.length;){var n=r.shift();n&&("concat"!==n.type?0===t.length||"string"!=typeof t[t.length-1]||"string"!=typeof n?t.push(n):t.push(t.pop()+n):Array.prototype.unshift.apply(r,n.parts))}return t},preferHardlineAsLeadingSpaces:function(e){return ec(e)||e.prev&&Ys(e.prev)||Zs(e)},preferHardlineAsTrailingSpaces:Ys,shouldNotPrintClosingTag:function(e,t){return!e.isSelfClosing&&!e.endSourceSpan&&(zs(e)||js(e.parent,t))},shouldPreserveContent:js,unescapeQuoteEntities:function(e){return e.replace(/&apos;/g,"'").replace(/&quot;/g,'"')}};var ac=function(e){return/^\s*<!--\s*@(format|prettier)\s*-->/.test(e)};var oc=function(e,t){var r=new SyntaxError(e+" ("+t.start.line+":"+t.start.column+")");return r.loc=t,r},uc={attrs:!0,children:!0},sc=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r(this,e);for(var n=0,i=Object.keys(t);n<i.length;n++){var a=i[n],o=t[a];a in uc?this._setNodes(a,o):this[a]=o}}return i(e,[{key:"_setNodes",value:function(e,t){t!==this[e]&&(this[e]=lc(t,this),"attrs"===e&&pc(this,{attrMap:this[e].reduce((function(e,t){return e[t.fullName]=t.value,e}),Object.create(null))}))}},{key:"map",value:function(t){var r=null;for(var n in uc){var i=this[n];if(i){var a=cc(i,(function(e){return e.map(t)}));r!==i&&(r||(r=new e),r._setNodes(n,a))}}if(r){for(var o in this)o in uc||(r[o]=this[o]);pc(r,{index:this.index,siblings:this.siblings,prev:this.prev,next:this.next,parent:this.parent})}return t(r||this)}},{key:"clone",value:function(t){return new e(t?Object.assign({},this,t):this)}},{key:"firstChild",get:function(){return this.children&&0!==this.children.length?this.children[0]:null}},{key:"lastChild",get:function(){return this.children&&0!==this.children.length?this.children[this.children.length-1]:null}},{key:"rawName",get:function(){return this.hasExplicitNamespace?this.fullName:this.name}},{key:"fullName",get:function(){return this.namespace?this.namespace+":"+this.name:this.name}}]),e}();function cc(e,t){var r=e.map(t);return r.some((function(t,r){return t!==e[r]}))?r:e}function lc(e,t){for(var r=e.map((function(e){return e instanceof sc?e.clone():new sc(e)})),n=null,i=r[0],a=r[1]||null,o=0;o<r.length;o++)pc(i,{index:o,siblings:r,prev:n,next:a,parent:t}),n=i,i=a,a=r[o+2]||null;return r}function pc(e,t){var r=Object.keys(t).reduce((function(e,r){return e[r]={value:t[r],enumerable:!1},e}),{});Object.defineProperties(e,r)}var fc={Node:sc},hc=[[/^(\[if([^\]]*?)\]>)([\s\S]*?)<!\s*\[endif\]$/,function(e,t,r){var n=l(r,4),i=n[1],a=n[2],o=n[3],u="\x3c!--".length+i.length,s=e.sourceSpan.start.moveBy(u),c=s.moveBy(o.length),p=e.sourceSpan.constructor,f=l(function(){try{return[!0,t(o,s).children]}catch(e){return[!1,[{type:"text",value:o,sourceSpan:new p(s,c)}]]}}(),2),h=f[0],d=f[1];return{type:"ieConditionalComment",complete:h,children:d,condition:a.trim().replace(/\s+/g," "),sourceSpan:e.sourceSpan,startSourceSpan:new p(e.sourceSpan.start,s),endSourceSpan:new p(c,e.sourceSpan.end)}}],[/^\[if([^\]]*?)\]><!$/,function(e,t,r){return{type:"ieConditionalStartComment",condition:l(r,2)[1].trim().replace(/\s+/g," "),sourceSpan:e.sourceSpan}}],[/^<!\s*\[endif\]$/,function(e){return{type:"ieConditionalEndComment",sourceSpan:e.sourceSpan}}]];var dc=function(e,t){if(e.value){var r,n=!0,i=!1,a=void 0;try{for(var o,u=hc[Symbol.iterator]();!(n=(o=u.next()).done);n=!0){var s=l(o.value,2),c=s[0],p=s[1];if(r=e.value.match(c))return p(e,t,r)}}catch(e){i=!0,a=e}finally{try{n||null==u.return||u.return()}finally{if(i)throw a}}}return null},Dc=d((function(e,t){function r(e){if(":"!=e[0])return[null,e];var t=e.indexOf(":",1);if(-1==t)throw new Error('Unsupported format "'.concat(e,'" expecting ":namespace:name"'));return[e.slice(1,t),e.slice(t+1)]}
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.RAW_TEXT=0]="RAW_TEXT",e[e.ESCAPABLE_RAW_TEXT=1]="ESCAPABLE_RAW_TEXT",e[e.PARSABLE_DATA=2]="PARSABLE_DATA"}(t.TagContentType||(t.TagContentType={})),t.splitNsName=r,t.isNgContainer=function(e){return"ng-container"===r(e)[1]},t.isNgContent=function(e){return"ng-content"===r(e)[1]},t.isNgTemplate=function(e){return"ng-template"===r(e)[1]},t.getNsPrefix=function(e){return null===e?null:r(e)[0]},t.mergeNsAndName=function(e,t){return e?":".concat(e,":").concat(t):t},t.NAMED_ENTITIES={Aacute:"Á",aacute:"á",Abreve:"Ă",abreve:"ă",ac:"∾",acd:"∿",acE:"∾̳",Acirc:"Â",acirc:"â",acute:"´",Acy:"А",acy:"а",AElig:"Æ",aelig:"æ",af:"⁡",Afr:"𝔄",afr:"𝔞",Agrave:"À",agrave:"à",alefsym:"ℵ",aleph:"ℵ",Alpha:"Α",alpha:"α",Amacr:"Ā",amacr:"ā",amalg:"⨿",AMP:"&",amp:"&",And:"⩓",and:"∧",andand:"⩕",andd:"⩜",andslope:"⩘",andv:"⩚",ang:"∠",ange:"⦤",angle:"∠",angmsd:"∡",angmsdaa:"⦨",angmsdab:"⦩",angmsdac:"⦪",angmsdad:"⦫",angmsdae:"⦬",angmsdaf:"⦭",angmsdag:"⦮",angmsdah:"⦯",angrt:"∟",angrtvb:"⊾",angrtvbd:"⦝",angsph:"∢",angst:"Å",angzarr:"⍼",Aogon:"Ą",aogon:"ą",Aopf:"𝔸",aopf:"𝕒",ap:"≈",apacir:"⩯",apE:"⩰",ape:"≊",apid:"≋",apos:"'",ApplyFunction:"⁡",approx:"≈",approxeq:"≊",Aring:"Å",aring:"å",Ascr:"𝒜",ascr:"𝒶",Assign:"≔",ast:"*",asymp:"≈",asympeq:"≍",Atilde:"Ã",atilde:"ã",Auml:"Ä",auml:"ä",awconint:"∳",awint:"⨑",backcong:"≌",backepsilon:"϶",backprime:"‵",backsim:"∽",backsimeq:"⋍",Backslash:"∖",Barv:"⫧",barvee:"⊽",Barwed:"⌆",barwed:"⌅",barwedge:"⌅",bbrk:"⎵",bbrktbrk:"⎶",bcong:"≌",Bcy:"Б",bcy:"б",bdquo:"„",becaus:"∵",Because:"∵",because:"∵",bemptyv:"⦰",bepsi:"϶",bernou:"ℬ",Bernoullis:"ℬ",Beta:"Β",beta:"β",beth:"ℶ",between:"≬",Bfr:"𝔅",bfr:"𝔟",bigcap:"⋂",bigcirc:"◯",bigcup:"⋃",bigodot:"⨀",bigoplus:"⨁",bigotimes:"⨂",bigsqcup:"⨆",bigstar:"★",bigtriangledown:"▽",bigtriangleup:"△",biguplus:"⨄",bigvee:"⋁",bigwedge:"⋀",bkarow:"⤍",blacklozenge:"⧫",blacksquare:"▪",blacktriangle:"▴",blacktriangledown:"▾",blacktriangleleft:"◂",blacktriangleright:"▸",blank:"␣",blk12:"▒",blk14:"░",blk34:"▓",block:"█",bne:"=⃥",bnequiv:"≡⃥",bNot:"⫭",bnot:"⌐",Bopf:"𝔹",bopf:"𝕓",bot:"⊥",bottom:"⊥",bowtie:"⋈",boxbox:"⧉",boxDL:"╗",boxDl:"╖",boxdL:"╕",boxdl:"┐",boxDR:"╔",boxDr:"╓",boxdR:"╒",boxdr:"┌",boxH:"═",boxh:"─",boxHD:"╦",boxHd:"╤",boxhD:"╥",boxhd:"┬",boxHU:"╩",boxHu:"╧",boxhU:"╨",boxhu:"┴",boxminus:"⊟",boxplus:"⊞",boxtimes:"⊠",boxUL:"╝",boxUl:"╜",boxuL:"╛",boxul:"┘",boxUR:"╚",boxUr:"╙",boxuR:"╘",boxur:"└",boxV:"║",boxv:"│",boxVH:"╬",boxVh:"╫",boxvH:"╪",boxvh:"┼",boxVL:"╣",boxVl:"╢",boxvL:"╡",boxvl:"┤",boxVR:"╠",boxVr:"╟",boxvR:"╞",boxvr:"├",bprime:"‵",Breve:"˘",breve:"˘",brvbar:"¦",Bscr:"ℬ",bscr:"𝒷",bsemi:"⁏",bsim:"∽",bsime:"⋍",bsol:"\\",bsolb:"⧅",bsolhsub:"⟈",bull:"•",bullet:"•",bump:"≎",bumpE:"⪮",bumpe:"≏",Bumpeq:"≎",bumpeq:"≏",Cacute:"Ć",cacute:"ć",Cap:"⋒",cap:"∩",capand:"⩄",capbrcup:"⩉",capcap:"⩋",capcup:"⩇",capdot:"⩀",CapitalDifferentialD:"ⅅ",caps:"∩︀",caret:"⁁",caron:"ˇ",Cayleys:"ℭ",ccaps:"⩍",Ccaron:"Č",ccaron:"č",Ccedil:"Ç",ccedil:"ç",Ccirc:"Ĉ",ccirc:"ĉ",Cconint:"∰",ccups:"⩌",ccupssm:"⩐",Cdot:"Ċ",cdot:"ċ",cedil:"¸",Cedilla:"¸",cemptyv:"⦲",cent:"¢",CenterDot:"·",centerdot:"·",Cfr:"ℭ",cfr:"𝔠",CHcy:"Ч",chcy:"ч",check:"✓",checkmark:"✓",Chi:"Χ",chi:"χ",cir:"○",circ:"ˆ",circeq:"≗",circlearrowleft:"↺",circlearrowright:"↻",circledast:"⊛",circledcirc:"⊚",circleddash:"⊝",CircleDot:"⊙",circledR:"®",circledS:"Ⓢ",CircleMinus:"⊖",CirclePlus:"⊕",CircleTimes:"⊗",cirE:"⧃",cire:"≗",cirfnint:"⨐",cirmid:"⫯",cirscir:"⧂",ClockwiseContourIntegral:"∲",CloseCurlyDoubleQuote:"”",CloseCurlyQuote:"’",clubs:"♣",clubsuit:"♣",Colon:"∷",colon:":",Colone:"⩴",colone:"≔",coloneq:"≔",comma:",",commat:"@",comp:"∁",compfn:"∘",complement:"∁",complexes:"ℂ",cong:"≅",congdot:"⩭",Congruent:"≡",Conint:"∯",conint:"∮",ContourIntegral:"∮",Copf:"ℂ",copf:"𝕔",coprod:"∐",Coproduct:"∐",COPY:"©",copy:"©",copysr:"℗",CounterClockwiseContourIntegral:"∳",crarr:"↵",Cross:"⨯",cross:"✗",Cscr:"𝒞",cscr:"𝒸",csub:"⫏",csube:"⫑",csup:"⫐",csupe:"⫒",ctdot:"⋯",cudarrl:"⤸",cudarrr:"⤵",cuepr:"⋞",cuesc:"⋟",cularr:"↶",cularrp:"⤽",Cup:"⋓",cup:"∪",cupbrcap:"⩈",CupCap:"≍",cupcap:"⩆",cupcup:"⩊",cupdot:"⊍",cupor:"⩅",cups:"∪︀",curarr:"↷",curarrm:"⤼",curlyeqprec:"⋞",curlyeqsucc:"⋟",curlyvee:"⋎",curlywedge:"⋏",curren:"¤",curvearrowleft:"↶",curvearrowright:"↷",cuvee:"⋎",cuwed:"⋏",cwconint:"∲",cwint:"∱",cylcty:"⌭",Dagger:"‡",dagger:"†",daleth:"ℸ",Darr:"↡",dArr:"⇓",darr:"↓",dash:"‐",Dashv:"⫤",dashv:"⊣",dbkarow:"⤏",dblac:"˝",Dcaron:"Ď",dcaron:"ď",Dcy:"Д",dcy:"д",DD:"ⅅ",dd:"ⅆ",ddagger:"‡",ddarr:"⇊",DDotrahd:"⤑",ddotseq:"⩷",deg:"°",Del:"∇",Delta:"Δ",delta:"δ",demptyv:"⦱",dfisht:"⥿",Dfr:"𝔇",dfr:"𝔡",dHar:"⥥",dharl:"⇃",dharr:"⇂",DiacriticalAcute:"´",DiacriticalDot:"˙",DiacriticalDoubleAcute:"˝",DiacriticalGrave:"`",DiacriticalTilde:"˜",diam:"⋄",Diamond:"⋄",diamond:"⋄",diamondsuit:"♦",diams:"♦",die:"¨",DifferentialD:"ⅆ",digamma:"ϝ",disin:"⋲",div:"÷",divide:"÷",divideontimes:"⋇",divonx:"⋇",DJcy:"Ђ",djcy:"ђ",dlcorn:"⌞",dlcrop:"⌍",dollar:"$",Dopf:"𝔻",dopf:"𝕕",Dot:"¨",dot:"˙",DotDot:"⃜",doteq:"≐",doteqdot:"≑",DotEqual:"≐",dotminus:"∸",dotplus:"∔",dotsquare:"⊡",doublebarwedge:"⌆",DoubleContourIntegral:"∯",DoubleDot:"¨",DoubleDownArrow:"⇓",DoubleLeftArrow:"⇐",DoubleLeftRightArrow:"⇔",DoubleLeftTee:"⫤",DoubleLongLeftArrow:"⟸",DoubleLongLeftRightArrow:"⟺",DoubleLongRightArrow:"⟹",DoubleRightArrow:"⇒",DoubleRightTee:"⊨",DoubleUpArrow:"⇑",DoubleUpDownArrow:"⇕",DoubleVerticalBar:"∥",DownArrow:"↓",Downarrow:"⇓",downarrow:"↓",DownArrowBar:"⤓",DownArrowUpArrow:"⇵",DownBreve:"̑",downdownarrows:"⇊",downharpoonleft:"⇃",downharpoonright:"⇂",DownLeftRightVector:"⥐",DownLeftTeeVector:"⥞",DownLeftVector:"↽",DownLeftVectorBar:"⥖",DownRightTeeVector:"⥟",DownRightVector:"⇁",DownRightVectorBar:"⥗",DownTee:"⊤",DownTeeArrow:"↧",drbkarow:"⤐",drcorn:"⌟",drcrop:"⌌",Dscr:"𝒟",dscr:"𝒹",DScy:"Ѕ",dscy:"ѕ",dsol:"⧶",Dstrok:"Đ",dstrok:"đ",dtdot:"⋱",dtri:"▿",dtrif:"▾",duarr:"⇵",duhar:"⥯",dwangle:"⦦",DZcy:"Џ",dzcy:"џ",dzigrarr:"⟿",Eacute:"É",eacute:"é",easter:"⩮",Ecaron:"Ě",ecaron:"ě",ecir:"≖",Ecirc:"Ê",ecirc:"ê",ecolon:"≕",Ecy:"Э",ecy:"э",eDDot:"⩷",Edot:"Ė",eDot:"≑",edot:"ė",ee:"ⅇ",efDot:"≒",Efr:"𝔈",efr:"𝔢",eg:"⪚",Egrave:"È",egrave:"è",egs:"⪖",egsdot:"⪘",el:"⪙",Element:"∈",elinters:"⏧",ell:"ℓ",els:"⪕",elsdot:"⪗",Emacr:"Ē",emacr:"ē",empty:"∅",emptyset:"∅",EmptySmallSquare:"◻",emptyv:"∅",EmptyVerySmallSquare:"▫",emsp:" ",emsp13:" ",emsp14:" ",ENG:"Ŋ",eng:"ŋ",ensp:" ",Eogon:"Ę",eogon:"ę",Eopf:"𝔼",eopf:"𝕖",epar:"⋕",eparsl:"⧣",eplus:"⩱",epsi:"ε",Epsilon:"Ε",epsilon:"ε",epsiv:"ϵ",eqcirc:"≖",eqcolon:"≕",eqsim:"≂",eqslantgtr:"⪖",eqslantless:"⪕",Equal:"⩵",equals:"=",EqualTilde:"≂",equest:"≟",Equilibrium:"⇌",equiv:"≡",equivDD:"⩸",eqvparsl:"⧥",erarr:"⥱",erDot:"≓",Escr:"ℰ",escr:"ℯ",esdot:"≐",Esim:"⩳",esim:"≂",Eta:"Η",eta:"η",ETH:"Ð",eth:"ð",Euml:"Ë",euml:"ë",euro:"€",excl:"!",exist:"∃",Exists:"∃",expectation:"ℰ",ExponentialE:"ⅇ",exponentiale:"ⅇ",fallingdotseq:"≒",Fcy:"Ф",fcy:"ф",female:"♀",ffilig:"ffi",fflig:"ff",ffllig:"ffl",Ffr:"𝔉",ffr:"𝔣",filig:"fi",FilledSmallSquare:"◼",FilledVerySmallSquare:"▪",fjlig:"fj",flat:"♭",fllig:"fl",fltns:"▱",fnof:"ƒ",Fopf:"𝔽",fopf:"𝕗",ForAll:"∀",forall:"∀",fork:"⋔",forkv:"⫙",Fouriertrf:"ℱ",fpartint:"⨍",frac12:"½",frac13:"⅓",frac14:"¼",frac15:"⅕",frac16:"⅙",frac18:"⅛",frac23:"⅔",frac25:"⅖",frac34:"¾",frac35:"⅗",frac38:"⅜",frac45:"⅘",frac56:"⅚",frac58:"⅝",frac78:"⅞",frasl:"⁄",frown:"⌢",Fscr:"ℱ",fscr:"𝒻",gacute:"ǵ",Gamma:"Γ",gamma:"γ",Gammad:"Ϝ",gammad:"ϝ",gap:"⪆",Gbreve:"Ğ",gbreve:"ğ",Gcedil:"Ģ",Gcirc:"Ĝ",gcirc:"ĝ",Gcy:"Г",gcy:"г",Gdot:"Ġ",gdot:"ġ",gE:"≧",ge:"≥",gEl:"⪌",gel:"⋛",geq:"≥",geqq:"≧",geqslant:"⩾",ges:"⩾",gescc:"⪩",gesdot:"⪀",gesdoto:"⪂",gesdotol:"⪄",gesl:"⋛︀",gesles:"⪔",Gfr:"𝔊",gfr:"𝔤",Gg:"⋙",gg:"≫",ggg:"⋙",gimel:"ℷ",GJcy:"Ѓ",gjcy:"ѓ",gl:"≷",gla:"⪥",glE:"⪒",glj:"⪤",gnap:"⪊",gnapprox:"⪊",gnE:"≩",gne:"⪈",gneq:"⪈",gneqq:"≩",gnsim:"⋧",Gopf:"𝔾",gopf:"𝕘",grave:"`",GreaterEqual:"≥",GreaterEqualLess:"⋛",GreaterFullEqual:"≧",GreaterGreater:"⪢",GreaterLess:"≷",GreaterSlantEqual:"⩾",GreaterTilde:"≳",Gscr:"𝒢",gscr:"ℊ",gsim:"≳",gsime:"⪎",gsiml:"⪐",GT:">",Gt:"≫",gt:">",gtcc:"⪧",gtcir:"⩺",gtdot:"⋗",gtlPar:"⦕",gtquest:"⩼",gtrapprox:"⪆",gtrarr:"⥸",gtrdot:"⋗",gtreqless:"⋛",gtreqqless:"⪌",gtrless:"≷",gtrsim:"≳",gvertneqq:"≩︀",gvnE:"≩︀",Hacek:"ˇ",hairsp:" ",half:"½",hamilt:"ℋ",HARDcy:"Ъ",hardcy:"ъ",hArr:"⇔",harr:"↔",harrcir:"⥈",harrw:"↭",Hat:"^",hbar:"ℏ",Hcirc:"Ĥ",hcirc:"ĥ",hearts:"♥",heartsuit:"♥",hellip:"…",hercon:"⊹",Hfr:"ℌ",hfr:"𝔥",HilbertSpace:"ℋ",hksearow:"⤥",hkswarow:"⤦",hoarr:"⇿",homtht:"∻",hookleftarrow:"↩",hookrightarrow:"↪",Hopf:"ℍ",hopf:"𝕙",horbar:"―",HorizontalLine:"─",Hscr:"ℋ",hscr:"𝒽",hslash:"ℏ",Hstrok:"Ħ",hstrok:"ħ",HumpDownHump:"≎",HumpEqual:"≏",hybull:"⁃",hyphen:"‐",Iacute:"Í",iacute:"í",ic:"⁣",Icirc:"Î",icirc:"î",Icy:"И",icy:"и",Idot:"İ",IEcy:"Е",iecy:"е",iexcl:"¡",iff:"⇔",Ifr:"ℑ",ifr:"𝔦",Igrave:"Ì",igrave:"ì",ii:"ⅈ",iiiint:"⨌",iiint:"∭",iinfin:"⧜",iiota:"℩",IJlig:"IJ",ijlig:"ij",Im:"ℑ",Imacr:"Ī",imacr:"ī",image:"ℑ",ImaginaryI:"ⅈ",imagline:"ℐ",imagpart:"ℑ",imath:"ı",imof:"⊷",imped:"Ƶ",Implies:"⇒",in:"∈",incare:"℅",infin:"∞",infintie:"⧝",inodot:"ı",Int:"∬",int:"∫",intcal:"⊺",integers:"ℤ",Integral:"∫",intercal:"⊺",Intersection:"⋂",intlarhk:"⨗",intprod:"⨼",InvisibleComma:"⁣",InvisibleTimes:"⁢",IOcy:"Ё",iocy:"ё",Iogon:"Į",iogon:"į",Iopf:"𝕀",iopf:"𝕚",Iota:"Ι",iota:"ι",iprod:"⨼",iquest:"¿",Iscr:"ℐ",iscr:"𝒾",isin:"∈",isindot:"⋵",isinE:"⋹",isins:"⋴",isinsv:"⋳",isinv:"∈",it:"⁢",Itilde:"Ĩ",itilde:"ĩ",Iukcy:"І",iukcy:"і",Iuml:"Ï",iuml:"ï",Jcirc:"Ĵ",jcirc:"ĵ",Jcy:"Й",jcy:"й",Jfr:"𝔍",jfr:"𝔧",jmath:"ȷ",Jopf:"𝕁",jopf:"𝕛",Jscr:"𝒥",jscr:"𝒿",Jsercy:"Ј",jsercy:"ј",Jukcy:"Є",jukcy:"є",Kappa:"Κ",kappa:"κ",kappav:"ϰ",Kcedil:"Ķ",kcedil:"ķ",Kcy:"К",kcy:"к",Kfr:"𝔎",kfr:"𝔨",kgreen:"ĸ",KHcy:"Х",khcy:"х",KJcy:"Ќ",kjcy:"ќ",Kopf:"𝕂",kopf:"𝕜",Kscr:"𝒦",kscr:"𝓀",lAarr:"⇚",Lacute:"Ĺ",lacute:"ĺ",laemptyv:"⦴",lagran:"ℒ",Lambda:"Λ",lambda:"λ",Lang:"⟪",lang:"⟨",langd:"⦑",langle:"⟨",lap:"⪅",Laplacetrf:"ℒ",laquo:"«",Larr:"↞",lArr:"⇐",larr:"←",larrb:"⇤",larrbfs:"⤟",larrfs:"⤝",larrhk:"↩",larrlp:"↫",larrpl:"⤹",larrsim:"⥳",larrtl:"↢",lat:"⪫",lAtail:"⤛",latail:"⤙",late:"⪭",lates:"⪭︀",lBarr:"⤎",lbarr:"⤌",lbbrk:"❲",lbrace:"{",lbrack:"[",lbrke:"⦋",lbrksld:"⦏",lbrkslu:"⦍",Lcaron:"Ľ",lcaron:"ľ",Lcedil:"Ļ",lcedil:"ļ",lceil:"⌈",lcub:"{",Lcy:"Л",lcy:"л",ldca:"⤶",ldquo:"“",ldquor:"„",ldrdhar:"⥧",ldrushar:"⥋",ldsh:"↲",lE:"≦",le:"≤",LeftAngleBracket:"⟨",LeftArrow:"←",Leftarrow:"⇐",leftarrow:"←",LeftArrowBar:"⇤",LeftArrowRightArrow:"⇆",leftarrowtail:"↢",LeftCeiling:"⌈",LeftDoubleBracket:"⟦",LeftDownTeeVector:"⥡",LeftDownVector:"⇃",LeftDownVectorBar:"⥙",LeftFloor:"⌊",leftharpoondown:"↽",leftharpoonup:"↼",leftleftarrows:"⇇",LeftRightArrow:"↔",Leftrightarrow:"⇔",leftrightarrow:"↔",leftrightarrows:"⇆",leftrightharpoons:"⇋",leftrightsquigarrow:"↭",LeftRightVector:"⥎",LeftTee:"⊣",LeftTeeArrow:"↤",LeftTeeVector:"⥚",leftthreetimes:"⋋",LeftTriangle:"⊲",LeftTriangleBar:"⧏",LeftTriangleEqual:"⊴",LeftUpDownVector:"⥑",LeftUpTeeVector:"⥠",LeftUpVector:"↿",LeftUpVectorBar:"⥘",LeftVector:"↼",LeftVectorBar:"⥒",lEg:"⪋",leg:"⋚",leq:"≤",leqq:"≦",leqslant:"⩽",les:"⩽",lescc:"⪨",lesdot:"⩿",lesdoto:"⪁",lesdotor:"⪃",lesg:"⋚︀",lesges:"⪓",lessapprox:"⪅",lessdot:"⋖",lesseqgtr:"⋚",lesseqqgtr:"⪋",LessEqualGreater:"⋚",LessFullEqual:"≦",LessGreater:"≶",lessgtr:"≶",LessLess:"⪡",lesssim:"≲",LessSlantEqual:"⩽",LessTilde:"≲",lfisht:"⥼",lfloor:"⌊",Lfr:"𝔏",lfr:"𝔩",lg:"≶",lgE:"⪑",lHar:"⥢",lhard:"↽",lharu:"↼",lharul:"⥪",lhblk:"▄",LJcy:"Љ",ljcy:"љ",Ll:"⋘",ll:"≪",llarr:"⇇",llcorner:"⌞",Lleftarrow:"⇚",llhard:"⥫",lltri:"◺",Lmidot:"Ŀ",lmidot:"ŀ",lmoust:"⎰",lmoustache:"⎰",lnap:"⪉",lnapprox:"⪉",lnE:"≨",lne:"⪇",lneq:"⪇",lneqq:"≨",lnsim:"⋦",loang:"⟬",loarr:"⇽",lobrk:"⟦",LongLeftArrow:"⟵",Longleftarrow:"⟸",longleftarrow:"⟵",LongLeftRightArrow:"⟷",Longleftrightarrow:"⟺",longleftrightarrow:"⟷",longmapsto:"⟼",LongRightArrow:"⟶",Longrightarrow:"⟹",longrightarrow:"⟶",looparrowleft:"↫",looparrowright:"↬",lopar:"⦅",Lopf:"𝕃",lopf:"𝕝",loplus:"⨭",lotimes:"⨴",lowast:"∗",lowbar:"_",LowerLeftArrow:"↙",LowerRightArrow:"↘",loz:"◊",lozenge:"◊",lozf:"⧫",lpar:"(",lparlt:"⦓",lrarr:"⇆",lrcorner:"⌟",lrhar:"⇋",lrhard:"⥭",lrm:"‎",lrtri:"⊿",lsaquo:"‹",Lscr:"ℒ",lscr:"𝓁",Lsh:"↰",lsh:"↰",lsim:"≲",lsime:"⪍",lsimg:"⪏",lsqb:"[",lsquo:"‘",lsquor:"‚",Lstrok:"Ł",lstrok:"ł",LT:"<",Lt:"≪",lt:"<",ltcc:"⪦",ltcir:"⩹",ltdot:"⋖",lthree:"⋋",ltimes:"⋉",ltlarr:"⥶",ltquest:"⩻",ltri:"◃",ltrie:"⊴",ltrif:"◂",ltrPar:"⦖",lurdshar:"⥊",luruhar:"⥦",lvertneqq:"≨︀",lvnE:"≨︀",macr:"¯",male:"♂",malt:"✠",maltese:"✠",Map:"⤅",map:"↦",mapsto:"↦",mapstodown:"↧",mapstoleft:"↤",mapstoup:"↥",marker:"▮",mcomma:"⨩",Mcy:"М",mcy:"м",mdash:"—",mDDot:"∺",measuredangle:"∡",MediumSpace:" ",Mellintrf:"ℳ",Mfr:"𝔐",mfr:"𝔪",mho:"℧",micro:"µ",mid:"∣",midast:"*",midcir:"⫰",middot:"·",minus:"−",minusb:"⊟",minusd:"∸",minusdu:"⨪",MinusPlus:"∓",mlcp:"⫛",mldr:"…",mnplus:"∓",models:"⊧",Mopf:"𝕄",mopf:"𝕞",mp:"∓",Mscr:"ℳ",mscr:"𝓂",mstpos:"∾",Mu:"Μ",mu:"μ",multimap:"⊸",mumap:"⊸",nabla:"∇",Nacute:"Ń",nacute:"ń",nang:"∠⃒",nap:"≉",napE:"⩰̸",napid:"≋̸",napos:"ʼn",napprox:"≉",natur:"♮",natural:"♮",naturals:"ℕ",nbsp:" ",nbump:"≎̸",nbumpe:"≏̸",ncap:"⩃",Ncaron:"Ň",ncaron:"ň",Ncedil:"Ņ",ncedil:"ņ",ncong:"≇",ncongdot:"⩭̸",ncup:"⩂",Ncy:"Н",ncy:"н",ndash:"–",ne:"≠",nearhk:"⤤",neArr:"⇗",nearr:"↗",nearrow:"↗",nedot:"≐̸",NegativeMediumSpace:"​",NegativeThickSpace:"​",NegativeThinSpace:"​",NegativeVeryThinSpace:"​",nequiv:"≢",nesear:"⤨",nesim:"≂̸",NestedGreaterGreater:"≫",NestedLessLess:"≪",NewLine:"\n",nexist:"∄",nexists:"∄",Nfr:"𝔑",nfr:"𝔫",ngE:"≧̸",nge:"≱",ngeq:"≱",ngeqq:"≧̸",ngeqslant:"⩾̸",nges:"⩾̸",nGg:"⋙̸",ngsim:"≵",nGt:"≫⃒",ngt:"≯",ngtr:"≯",nGtv:"≫̸",nhArr:"⇎",nharr:"↮",nhpar:"⫲",ni:"∋",nis:"⋼",nisd:"⋺",niv:"∋",NJcy:"Њ",njcy:"њ",nlArr:"⇍",nlarr:"↚",nldr:"‥",nlE:"≦̸",nle:"≰",nLeftarrow:"⇍",nleftarrow:"↚",nLeftrightarrow:"⇎",nleftrightarrow:"↮",nleq:"≰",nleqq:"≦̸",nleqslant:"⩽̸",nles:"⩽̸",nless:"≮",nLl:"⋘̸",nlsim:"≴",nLt:"≪⃒",nlt:"≮",nltri:"⋪",nltrie:"⋬",nLtv:"≪̸",nmid:"∤",NoBreak:"⁠",NonBreakingSpace:" ",Nopf:"ℕ",nopf:"𝕟",Not:"⫬",not:"¬",NotCongruent:"≢",NotCupCap:"≭",NotDoubleVerticalBar:"∦",NotElement:"∉",NotEqual:"≠",NotEqualTilde:"≂̸",NotExists:"∄",NotGreater:"≯",NotGreaterEqual:"≱",NotGreaterFullEqual:"≧̸",NotGreaterGreater:"≫̸",NotGreaterLess:"≹",NotGreaterSlantEqual:"⩾̸",NotGreaterTilde:"≵",NotHumpDownHump:"≎̸",NotHumpEqual:"≏̸",notin:"∉",notindot:"⋵̸",notinE:"⋹̸",notinva:"∉",notinvb:"⋷",notinvc:"⋶",NotLeftTriangle:"⋪",NotLeftTriangleBar:"⧏̸",NotLeftTriangleEqual:"⋬",NotLess:"≮",NotLessEqual:"≰",NotLessGreater:"≸",NotLessLess:"≪̸",NotLessSlantEqual:"⩽̸",NotLessTilde:"≴",NotNestedGreaterGreater:"⪢̸",NotNestedLessLess:"⪡̸",notni:"∌",notniva:"∌",notnivb:"⋾",notnivc:"⋽",NotPrecedes:"⊀",NotPrecedesEqual:"⪯̸",NotPrecedesSlantEqual:"⋠",NotReverseElement:"∌",NotRightTriangle:"⋫",NotRightTriangleBar:"⧐̸",NotRightTriangleEqual:"⋭",NotSquareSubset:"⊏̸",NotSquareSubsetEqual:"⋢",NotSquareSuperset:"⊐̸",NotSquareSupersetEqual:"⋣",NotSubset:"⊂⃒",NotSubsetEqual:"⊈",NotSucceeds:"⊁",NotSucceedsEqual:"⪰̸",NotSucceedsSlantEqual:"⋡",NotSucceedsTilde:"≿̸",NotSuperset:"⊃⃒",NotSupersetEqual:"⊉",NotTilde:"≁",NotTildeEqual:"≄",NotTildeFullEqual:"≇",NotTildeTilde:"≉",NotVerticalBar:"∤",npar:"∦",nparallel:"∦",nparsl:"⫽⃥",npart:"∂̸",npolint:"⨔",npr:"⊀",nprcue:"⋠",npre:"⪯̸",nprec:"⊀",npreceq:"⪯̸",nrArr:"⇏",nrarr:"↛",nrarrc:"⤳̸",nrarrw:"↝̸",nRightarrow:"⇏",nrightarrow:"↛",nrtri:"⋫",nrtrie:"⋭",nsc:"⊁",nsccue:"⋡",nsce:"⪰̸",Nscr:"𝒩",nscr:"𝓃",nshortmid:"∤",nshortparallel:"∦",nsim:"≁",nsime:"≄",nsimeq:"≄",nsmid:"∤",nspar:"∦",nsqsube:"⋢",nsqsupe:"⋣",nsub:"⊄",nsubE:"⫅̸",nsube:"⊈",nsubset:"⊂⃒",nsubseteq:"⊈",nsubseteqq:"⫅̸",nsucc:"⊁",nsucceq:"⪰̸",nsup:"⊅",nsupE:"⫆̸",nsupe:"⊉",nsupset:"⊃⃒",nsupseteq:"⊉",nsupseteqq:"⫆̸",ntgl:"≹",Ntilde:"Ñ",ntilde:"ñ",ntlg:"≸",ntriangleleft:"⋪",ntrianglelefteq:"⋬",ntriangleright:"⋫",ntrianglerighteq:"⋭",Nu:"Ν",nu:"ν",num:"#",numero:"№",numsp:" ",nvap:"≍⃒",nVDash:"⊯",nVdash:"⊮",nvDash:"⊭",nvdash:"⊬",nvge:"≥⃒",nvgt:">⃒",nvHarr:"⤄",nvinfin:"⧞",nvlArr:"⤂",nvle:"≤⃒",nvlt:"<⃒",nvltrie:"⊴⃒",nvrArr:"⤃",nvrtrie:"⊵⃒",nvsim:"∼⃒",nwarhk:"⤣",nwArr:"⇖",nwarr:"↖",nwarrow:"↖",nwnear:"⤧",Oacute:"Ó",oacute:"ó",oast:"⊛",ocir:"⊚",Ocirc:"Ô",ocirc:"ô",Ocy:"О",ocy:"о",odash:"⊝",Odblac:"Ő",odblac:"ő",odiv:"⨸",odot:"⊙",odsold:"⦼",OElig:"Œ",oelig:"œ",ofcir:"⦿",Ofr:"𝔒",ofr:"𝔬",ogon:"˛",Ograve:"Ò",ograve:"ò",ogt:"⧁",ohbar:"⦵",ohm:"Ω",oint:"∮",olarr:"↺",olcir:"⦾",olcross:"⦻",oline:"‾",olt:"⧀",Omacr:"Ō",omacr:"ō",Omega:"Ω",omega:"ω",Omicron:"Ο",omicron:"ο",omid:"⦶",ominus:"⊖",Oopf:"𝕆",oopf:"𝕠",opar:"⦷",OpenCurlyDoubleQuote:"“",OpenCurlyQuote:"‘",operp:"⦹",oplus:"⊕",Or:"⩔",or:"∨",orarr:"↻",ord:"⩝",order:"ℴ",orderof:"ℴ",ordf:"ª",ordm:"º",origof:"⊶",oror:"⩖",orslope:"⩗",orv:"⩛",oS:"Ⓢ",Oscr:"𝒪",oscr:"ℴ",Oslash:"Ø",oslash:"ø",osol:"⊘",Otilde:"Õ",otilde:"õ",Otimes:"⨷",otimes:"⊗",otimesas:"⨶",Ouml:"Ö",ouml:"ö",ovbar:"⌽",OverBar:"‾",OverBrace:"⏞",OverBracket:"⎴",OverParenthesis:"⏜",par:"∥",para:"¶",parallel:"∥",parsim:"⫳",parsl:"⫽",part:"∂",PartialD:"∂",Pcy:"П",pcy:"п",percnt:"%",period:".",permil:"‰",perp:"⊥",pertenk:"‱",Pfr:"𝔓",pfr:"𝔭",Phi:"Φ",phi:"φ",phiv:"ϕ",phmmat:"ℳ",phone:"☎",Pi:"Π",pi:"π",pitchfork:"⋔",piv:"ϖ",planck:"ℏ",planckh:"ℎ",plankv:"ℏ",plus:"+",plusacir:"⨣",plusb:"⊞",pluscir:"⨢",plusdo:"∔",plusdu:"⨥",pluse:"⩲",PlusMinus:"±",plusmn:"±",plussim:"⨦",plustwo:"⨧",pm:"±",Poincareplane:"ℌ",pointint:"⨕",Popf:"ℙ",popf:"𝕡",pound:"£",Pr:"⪻",pr:"≺",prap:"⪷",prcue:"≼",prE:"⪳",pre:"⪯",prec:"≺",precapprox:"⪷",preccurlyeq:"≼",Precedes:"≺",PrecedesEqual:"⪯",PrecedesSlantEqual:"≼",PrecedesTilde:"≾",preceq:"⪯",precnapprox:"⪹",precneqq:"⪵",precnsim:"⋨",precsim:"≾",Prime:"″",prime:"′",primes:"ℙ",prnap:"⪹",prnE:"⪵",prnsim:"⋨",prod:"∏",Product:"∏",profalar:"⌮",profline:"⌒",profsurf:"⌓",prop:"∝",Proportion:"∷",Proportional:"∝",propto:"∝",prsim:"≾",prurel:"⊰",Pscr:"𝒫",pscr:"𝓅",Psi:"Ψ",psi:"ψ",puncsp:" ",Qfr:"𝔔",qfr:"𝔮",qint:"⨌",Qopf:"ℚ",qopf:"𝕢",qprime:"⁗",Qscr:"𝒬",qscr:"𝓆",quaternions:"ℍ",quatint:"⨖",quest:"?",questeq:"≟",QUOT:'"',quot:'"',rAarr:"⇛",race:"∽̱",Racute:"Ŕ",racute:"ŕ",radic:"√",raemptyv:"⦳",Rang:"⟫",rang:"⟩",rangd:"⦒",range:"⦥",rangle:"⟩",raquo:"»",Rarr:"↠",rArr:"⇒",rarr:"→",rarrap:"⥵",rarrb:"⇥",rarrbfs:"⤠",rarrc:"⤳",rarrfs:"⤞",rarrhk:"↪",rarrlp:"↬",rarrpl:"⥅",rarrsim:"⥴",Rarrtl:"⤖",rarrtl:"↣",rarrw:"↝",rAtail:"⤜",ratail:"⤚",ratio:"∶",rationals:"ℚ",RBarr:"⤐",rBarr:"⤏",rbarr:"⤍",rbbrk:"❳",rbrace:"}",rbrack:"]",rbrke:"⦌",rbrksld:"⦎",rbrkslu:"⦐",Rcaron:"Ř",rcaron:"ř",Rcedil:"Ŗ",rcedil:"ŗ",rceil:"⌉",rcub:"}",Rcy:"Р",rcy:"р",rdca:"⤷",rdldhar:"⥩",rdquo:"”",rdquor:"”",rdsh:"↳",Re:"ℜ",real:"ℜ",realine:"ℛ",realpart:"ℜ",reals:"ℝ",rect:"▭",REG:"®",reg:"®",ReverseElement:"∋",ReverseEquilibrium:"⇋",ReverseUpEquilibrium:"⥯",rfisht:"⥽",rfloor:"⌋",Rfr:"ℜ",rfr:"𝔯",rHar:"⥤",rhard:"⇁",rharu:"⇀",rharul:"⥬",Rho:"Ρ",rho:"ρ",rhov:"ϱ",RightAngleBracket:"⟩",RightArrow:"→",Rightarrow:"⇒",rightarrow:"→",RightArrowBar:"⇥",RightArrowLeftArrow:"⇄",rightarrowtail:"↣",RightCeiling:"⌉",RightDoubleBracket:"⟧",RightDownTeeVector:"⥝",RightDownVector:"⇂",RightDownVectorBar:"⥕",RightFloor:"⌋",rightharpoondown:"⇁",rightharpoonup:"⇀",rightleftarrows:"⇄",rightleftharpoons:"⇌",rightrightarrows:"⇉",rightsquigarrow:"↝",RightTee:"⊢",RightTeeArrow:"↦",RightTeeVector:"⥛",rightthreetimes:"⋌",RightTriangle:"⊳",RightTriangleBar:"⧐",RightTriangleEqual:"⊵",RightUpDownVector:"⥏",RightUpTeeVector:"⥜",RightUpVector:"↾",RightUpVectorBar:"⥔",RightVector:"⇀",RightVectorBar:"⥓",ring:"˚",risingdotseq:"≓",rlarr:"⇄",rlhar:"⇌",rlm:"‏",rmoust:"⎱",rmoustache:"⎱",rnmid:"⫮",roang:"⟭",roarr:"⇾",robrk:"⟧",ropar:"⦆",Ropf:"ℝ",ropf:"𝕣",roplus:"⨮",rotimes:"⨵",RoundImplies:"⥰",rpar:")",rpargt:"⦔",rppolint:"⨒",rrarr:"⇉",Rrightarrow:"⇛",rsaquo:"›",Rscr:"ℛ",rscr:"𝓇",Rsh:"↱",rsh:"↱",rsqb:"]",rsquo:"’",rsquor:"’",rthree:"⋌",rtimes:"⋊",rtri:"▹",rtrie:"⊵",rtrif:"▸",rtriltri:"⧎",RuleDelayed:"⧴",ruluhar:"⥨",rx:"℞",Sacute:"Ś",sacute:"ś",sbquo:"‚",Sc:"⪼",sc:"≻",scap:"⪸",Scaron:"Š",scaron:"š",sccue:"≽",scE:"⪴",sce:"⪰",Scedil:"Ş",scedil:"ş",Scirc:"Ŝ",scirc:"ŝ",scnap:"⪺",scnE:"⪶",scnsim:"⋩",scpolint:"⨓",scsim:"≿",Scy:"С",scy:"с",sdot:"⋅",sdotb:"⊡",sdote:"⩦",searhk:"⤥",seArr:"⇘",searr:"↘",searrow:"↘",sect:"§",semi:";",seswar:"⤩",setminus:"∖",setmn:"∖",sext:"✶",Sfr:"𝔖",sfr:"𝔰",sfrown:"⌢",sharp:"♯",SHCHcy:"Щ",shchcy:"щ",SHcy:"Ш",shcy:"ш",ShortDownArrow:"↓",ShortLeftArrow:"←",shortmid:"∣",shortparallel:"∥",ShortRightArrow:"→",ShortUpArrow:"↑",shy:"­",Sigma:"Σ",sigma:"σ",sigmaf:"ς",sigmav:"ς",sim:"∼",simdot:"⩪",sime:"≃",simeq:"≃",simg:"⪞",simgE:"⪠",siml:"⪝",simlE:"⪟",simne:"≆",simplus:"⨤",simrarr:"⥲",slarr:"←",SmallCircle:"∘",smallsetminus:"∖",smashp:"⨳",smeparsl:"⧤",smid:"∣",smile:"⌣",smt:"⪪",smte:"⪬",smtes:"⪬︀",SOFTcy:"Ь",softcy:"ь",sol:"/",solb:"⧄",solbar:"⌿",Sopf:"𝕊",sopf:"𝕤",spades:"♠",spadesuit:"♠",spar:"∥",sqcap:"⊓",sqcaps:"⊓︀",sqcup:"⊔",sqcups:"⊔︀",Sqrt:"√",sqsub:"⊏",sqsube:"⊑",sqsubset:"⊏",sqsubseteq:"⊑",sqsup:"⊐",sqsupe:"⊒",sqsupset:"⊐",sqsupseteq:"⊒",squ:"□",Square:"□",square:"□",SquareIntersection:"⊓",SquareSubset:"⊏",SquareSubsetEqual:"⊑",SquareSuperset:"⊐",SquareSupersetEqual:"⊒",SquareUnion:"⊔",squarf:"▪",squf:"▪",srarr:"→",Sscr:"𝒮",sscr:"𝓈",ssetmn:"∖",ssmile:"⌣",sstarf:"⋆",Star:"⋆",star:"☆",starf:"★",straightepsilon:"ϵ",straightphi:"ϕ",strns:"¯",Sub:"⋐",sub:"⊂",subdot:"⪽",subE:"⫅",sube:"⊆",subedot:"⫃",submult:"⫁",subnE:"⫋",subne:"⊊",subplus:"⪿",subrarr:"⥹",Subset:"⋐",subset:"⊂",subseteq:"⊆",subseteqq:"⫅",SubsetEqual:"⊆",subsetneq:"⊊",subsetneqq:"⫋",subsim:"⫇",subsub:"⫕",subsup:"⫓",succ:"≻",succapprox:"⪸",succcurlyeq:"≽",Succeeds:"≻",SucceedsEqual:"⪰",SucceedsSlantEqual:"≽",SucceedsTilde:"≿",succeq:"⪰",succnapprox:"⪺",succneqq:"⪶",succnsim:"⋩",succsim:"≿",SuchThat:"∋",Sum:"∑",sum:"∑",sung:"♪",Sup:"⋑",sup:"⊃",sup1:"¹",sup2:"²",sup3:"³",supdot:"⪾",supdsub:"⫘",supE:"⫆",supe:"⊇",supedot:"⫄",Superset:"⊃",SupersetEqual:"⊇",suphsol:"⟉",suphsub:"⫗",suplarr:"⥻",supmult:"⫂",supnE:"⫌",supne:"⊋",supplus:"⫀",Supset:"⋑",supset:"⊃",supseteq:"⊇",supseteqq:"⫆",supsetneq:"⊋",supsetneqq:"⫌",supsim:"⫈",supsub:"⫔",supsup:"⫖",swarhk:"⤦",swArr:"⇙",swarr:"↙",swarrow:"↙",swnwar:"⤪",szlig:"ß",Tab:"\t",target:"⌖",Tau:"Τ",tau:"τ",tbrk:"⎴",Tcaron:"Ť",tcaron:"ť",Tcedil:"Ţ",tcedil:"ţ",Tcy:"Т",tcy:"т",tdot:"⃛",telrec:"⌕",Tfr:"𝔗",tfr:"𝔱",there4:"∴",Therefore:"∴",therefore:"∴",Theta:"Θ",theta:"θ",thetasym:"ϑ",thetav:"ϑ",thickapprox:"≈",thicksim:"∼",ThickSpace:"  ",thinsp:" ",ThinSpace:" ",thkap:"≈",thksim:"∼",THORN:"Þ",thorn:"þ",Tilde:"∼",tilde:"˜",TildeEqual:"≃",TildeFullEqual:"≅",TildeTilde:"≈",times:"×",timesb:"⊠",timesbar:"⨱",timesd:"⨰",tint:"∭",toea:"⤨",top:"⊤",topbot:"⌶",topcir:"⫱",Topf:"𝕋",topf:"𝕥",topfork:"⫚",tosa:"⤩",tprime:"‴",TRADE:"™",trade:"™",triangle:"▵",triangledown:"▿",triangleleft:"◃",trianglelefteq:"⊴",triangleq:"≜",triangleright:"▹",trianglerighteq:"⊵",tridot:"◬",trie:"≜",triminus:"⨺",TripleDot:"⃛",triplus:"⨹",trisb:"⧍",tritime:"⨻",trpezium:"⏢",Tscr:"𝒯",tscr:"𝓉",TScy:"Ц",tscy:"ц",TSHcy:"Ћ",tshcy:"ћ",Tstrok:"Ŧ",tstrok:"ŧ",twixt:"≬",twoheadleftarrow:"↞",twoheadrightarrow:"↠",Uacute:"Ú",uacute:"ú",Uarr:"↟",uArr:"⇑",uarr:"↑",Uarrocir:"⥉",Ubrcy:"Ў",ubrcy:"ў",Ubreve:"Ŭ",ubreve:"ŭ",Ucirc:"Û",ucirc:"û",Ucy:"У",ucy:"у",udarr:"⇅",Udblac:"Ű",udblac:"ű",udhar:"⥮",ufisht:"⥾",Ufr:"𝔘",ufr:"𝔲",Ugrave:"Ù",ugrave:"ù",uHar:"⥣",uharl:"↿",uharr:"↾",uhblk:"▀",ulcorn:"⌜",ulcorner:"⌜",ulcrop:"⌏",ultri:"◸",Umacr:"Ū",umacr:"ū",uml:"¨",UnderBar:"_",UnderBrace:"⏟",UnderBracket:"⎵",UnderParenthesis:"⏝",Union:"⋃",UnionPlus:"⊎",Uogon:"Ų",uogon:"ų",Uopf:"𝕌",uopf:"𝕦",UpArrow:"↑",Uparrow:"⇑",uparrow:"↑",UpArrowBar:"⤒",UpArrowDownArrow:"⇅",UpDownArrow:"↕",Updownarrow:"⇕",updownarrow:"↕",UpEquilibrium:"⥮",upharpoonleft:"↿",upharpoonright:"↾",uplus:"⊎",UpperLeftArrow:"↖",UpperRightArrow:"↗",Upsi:"ϒ",upsi:"υ",upsih:"ϒ",Upsilon:"Υ",upsilon:"υ",UpTee:"⊥",UpTeeArrow:"↥",upuparrows:"⇈",urcorn:"⌝",urcorner:"⌝",urcrop:"⌎",Uring:"Ů",uring:"ů",urtri:"◹",Uscr:"𝒰",uscr:"𝓊",utdot:"⋰",Utilde:"Ũ",utilde:"ũ",utri:"▵",utrif:"▴",uuarr:"⇈",Uuml:"Ü",uuml:"ü",uwangle:"⦧",vangrt:"⦜",varepsilon:"ϵ",varkappa:"ϰ",varnothing:"∅",varphi:"ϕ",varpi:"ϖ",varpropto:"∝",vArr:"⇕",varr:"↕",varrho:"ϱ",varsigma:"ς",varsubsetneq:"⊊︀",varsubsetneqq:"⫋︀",varsupsetneq:"⊋︀",varsupsetneqq:"⫌︀",vartheta:"ϑ",vartriangleleft:"⊲",vartriangleright:"⊳",Vbar:"⫫",vBar:"⫨",vBarv:"⫩",Vcy:"В",vcy:"в",VDash:"⊫",Vdash:"⊩",vDash:"⊨",vdash:"⊢",Vdashl:"⫦",Vee:"⋁",vee:"∨",veebar:"⊻",veeeq:"≚",vellip:"⋮",Verbar:"‖",verbar:"|",Vert:"‖",vert:"|",VerticalBar:"∣",VerticalLine:"|",VerticalSeparator:"❘",VerticalTilde:"≀",VeryThinSpace:" ",Vfr:"𝔙",vfr:"𝔳",vltri:"⊲",vnsub:"⊂⃒",vnsup:"⊃⃒",Vopf:"𝕍",vopf:"𝕧",vprop:"∝",vrtri:"⊳",Vscr:"𝒱",vscr:"𝓋",vsubnE:"⫋︀",vsubne:"⊊︀",vsupnE:"⫌︀",vsupne:"⊋︀",Vvdash:"⊪",vzigzag:"⦚",Wcirc:"Ŵ",wcirc:"ŵ",wedbar:"⩟",Wedge:"⋀",wedge:"∧",wedgeq:"≙",weierp:"℘",Wfr:"𝔚",wfr:"𝔴",Wopf:"𝕎",wopf:"𝕨",wp:"℘",wr:"≀",wreath:"≀",Wscr:"𝒲",wscr:"𝓌",xcap:"⋂",xcirc:"◯",xcup:"⋃",xdtri:"▽",Xfr:"𝔛",xfr:"𝔵",xhArr:"⟺",xharr:"⟷",Xi:"Ξ",xi:"ξ",xlArr:"⟸",xlarr:"⟵",xmap:"⟼",xnis:"⋻",xodot:"⨀",Xopf:"𝕏",xopf:"𝕩",xoplus:"⨁",xotime:"⨂",xrArr:"⟹",xrarr:"⟶",Xscr:"𝒳",xscr:"𝓍",xsqcup:"⨆",xuplus:"⨄",xutri:"△",xvee:"⋁",xwedge:"⋀",Yacute:"Ý",yacute:"ý",YAcy:"Я",yacy:"я",Ycirc:"Ŷ",ycirc:"ŷ",Ycy:"Ы",ycy:"ы",yen:"¥",Yfr:"𝔜",yfr:"𝔶",YIcy:"Ї",yicy:"ї",Yopf:"𝕐",yopf:"𝕪",Yscr:"𝒴",yscr:"𝓎",YUcy:"Ю",yucy:"ю",Yuml:"Ÿ",yuml:"ÿ",Zacute:"Ź",zacute:"ź",Zcaron:"Ž",zcaron:"ž",Zcy:"З",zcy:"з",Zdot:"Ż",zdot:"ż",zeetrf:"ℨ",ZeroWidthSpace:"​",Zeta:"Ζ",zeta:"ζ",Zfr:"ℨ",zfr:"𝔷",ZHcy:"Ж",zhcy:"ж",zigrarr:"⇝",Zopf:"ℤ",zopf:"𝕫",Zscr:"𝒵",zscr:"𝓏",zwj:"‍",zwnj:"‌"},t.NGSP_UNICODE="",t.NAMED_ENTITIES.ngsp=t.NGSP_UNICODE}));h(Dc);Dc.TagContentType,Dc.splitNsName,Dc.isNgContainer,Dc.isNgContent,Dc.isNgTemplate,Dc.getNsPrefix,Dc.mergeNsAndName,Dc.NAMED_ENTITIES,Dc.NGSP_UNICODE;var gc=d((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0});var n,a,o=function(){function e(){var t=this,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},i=n.closedByChildren,a=n.requiredParents,o=n.implicitNamespacePrefix,u=n.contentType,s=void 0===u?Dc.TagContentType.PARSABLE_DATA:u,c=n.closedByParent,l=void 0!==c&&c,p=n.isVoid,f=void 0!==p&&p,h=n.ignoreFirstLf,d=void 0!==h&&h;r(this,e),this.closedByChildren={},this.closedByParent=!1,this.canSelfClose=!1,i&&i.length>0&&i.forEach((function(e){return t.closedByChildren[e]=!0})),this.isVoid=f,this.closedByParent=l||f,a&&a.length>0&&(this.requiredParents={},this.parentToAdd=a[0],a.forEach((function(e){return t.requiredParents[e]=!0}))),this.implicitNamespacePrefix=o||null,this.contentType=s,this.ignoreFirstLf=d}return i(e,[{key:"requireExtraParent",value:function(e){if(!this.requiredParents)return!1;if(!e)return!0;var t=e.toLowerCase();return!("template"===t||"ng-template"===e)&&1!=this.requiredParents[t]}},{key:"isClosedByChild",value:function(e){return this.isVoid||e.toLowerCase()in this.closedByChildren}}]),e}();t.HtmlTagDefinition=o,t.getHtmlTagDefinition=function(e){return a||(n=new o,a={base:new o({isVoid:!0}),meta:new o({isVoid:!0}),area:new o({isVoid:!0}),embed:new o({isVoid:!0}),link:new o({isVoid:!0}),img:new o({isVoid:!0}),input:new o({isVoid:!0}),param:new o({isVoid:!0}),hr:new o({isVoid:!0}),br:new o({isVoid:!0}),source:new o({isVoid:!0}),track:new o({isVoid:!0}),wbr:new o({isVoid:!0}),p:new o({closedByChildren:["address","article","aside","blockquote","div","dl","fieldset","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","hr","main","nav","ol","p","pre","section","table","ul"],closedByParent:!0}),thead:new o({closedByChildren:["tbody","tfoot"]}),tbody:new o({closedByChildren:["tbody","tfoot"],closedByParent:!0}),tfoot:new o({closedByChildren:["tbody"],closedByParent:!0}),tr:new o({closedByChildren:["tr"],requiredParents:["tbody","tfoot","thead"],closedByParent:!0}),td:new o({closedByChildren:["td","th"],closedByParent:!0}),th:new o({closedByChildren:["td","th"],closedByParent:!0}),col:new o({requiredParents:["colgroup"],isVoid:!0}),svg:new o({implicitNamespacePrefix:"svg"}),math:new o({implicitNamespacePrefix:"math"}),li:new o({closedByChildren:["li"],closedByParent:!0}),dt:new o({closedByChildren:["dt","dd"]}),dd:new o({closedByChildren:["dt","dd"],closedByParent:!0}),rb:new o({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rt:new o({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),rtc:new o({closedByChildren:["rb","rtc","rp"],closedByParent:!0}),rp:new o({closedByChildren:["rb","rt","rtc","rp"],closedByParent:!0}),optgroup:new o({closedByChildren:["optgroup"],closedByParent:!0}),option:new o({closedByChildren:["option","optgroup"],closedByParent:!0}),pre:new o({ignoreFirstLf:!0}),listing:new o({ignoreFirstLf:!0}),style:new o({contentType:Dc.TagContentType.RAW_TEXT}),script:new o({contentType:Dc.TagContentType.RAW_TEXT}),title:new o({contentType:Dc.TagContentType.ESCAPABLE_RAW_TEXT}),textarea:new o({contentType:Dc.TagContentType.ESCAPABLE_RAW_TEXT,ignoreFirstLf:!0})}),a[e]||n}}));h(gc);gc.HtmlTagDefinition,gc.getHtmlTagDefinition;var mc=d((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0}),t.assertArrayOfStrings=function(e,t){if(null!=t){if(!Array.isArray(t))throw new Error("Expected '".concat(e,"' to be an array of strings."));for(var r=0;r<t.length;r+=1)if("string"!=typeof t[r])throw new Error("Expected '".concat(e,"' to be an array of strings."))}};var r=[/^\s*$/,/[<>]/,/^[{}]$/,/&(#|[a-z])/i,/^\/\//];t.assertInterpolationSymbols=function(e,t){if(!(null==t||Array.isArray(t)&&2==t.length))throw new Error("Expected '".concat(e,"' to be an array, [start, end]."));if(null!=t){var n=t[0],i=t[1];r.forEach((function(e){if(e.test(n)||e.test(i))throw new Error("['".concat(n,"', '").concat(i,"'] contains unusable interpolation symbol."))}))}}}));h(mc);mc.assertArrayOfStrings,mc.assertInterpolationSymbols;var vc=d((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(t,n){r(this,e),this.start=t,this.end=n}return i(e,null,[{key:"fromArray",value:function(r){return r?(mc.assertInterpolationSymbols("interpolation",r),new e(r[0],r[1])):t.DEFAULT_INTERPOLATION_CONFIG}}]),e}();t.InterpolationConfig=n,t.DEFAULT_INTERPOLATION_CONFIG=new n("{{","}}")}));h(vc);vc.InterpolationConfig,vc.DEFAULT_INTERPOLATION_CONFIG;var bc=d((function(e,t){function r(e){return t.$0<=e&&e<=t.$9}
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0}),t.$EOF=0,t.$TAB=9,t.$LF=10,t.$VTAB=11,t.$FF=12,t.$CR=13,t.$SPACE=32,t.$BANG=33,t.$DQ=34,t.$HASH=35,t.$$=36,t.$PERCENT=37,t.$AMPERSAND=38,t.$SQ=39,t.$LPAREN=40,t.$RPAREN=41,t.$STAR=42,t.$PLUS=43,t.$COMMA=44,t.$MINUS=45,t.$PERIOD=46,t.$SLASH=47,t.$COLON=58,t.$SEMICOLON=59,t.$LT=60,t.$EQ=61,t.$GT=62,t.$QUESTION=63,t.$0=48,t.$9=57,t.$A=65,t.$E=69,t.$F=70,t.$X=88,t.$Z=90,t.$LBRACKET=91,t.$BACKSLASH=92,t.$RBRACKET=93,t.$CARET=94,t.$_=95,t.$a=97,t.$e=101,t.$f=102,t.$n=110,t.$r=114,t.$t=116,t.$u=117,t.$v=118,t.$x=120,t.$z=122,t.$LBRACE=123,t.$BAR=124,t.$RBRACE=125,t.$NBSP=160,t.$PIPE=124,t.$TILDA=126,t.$AT=64,t.$BT=96,t.isWhitespace=function(e){return e>=t.$TAB&&e<=t.$SPACE||e==t.$NBSP},t.isDigit=r,t.isAsciiLetter=function(e){return e>=t.$a&&e<=t.$z||e>=t.$A&&e<=t.$Z},t.isAsciiHexDigit=function(e){return e>=t.$a&&e<=t.$f||e>=t.$A&&e<=t.$F||r(e)}}));h(bc);bc.$EOF,bc.$TAB,bc.$LF,bc.$VTAB,bc.$FF,bc.$CR,bc.$SPACE,bc.$BANG,bc.$DQ,bc.$HASH,bc.$$,bc.$PERCENT,bc.$AMPERSAND,bc.$SQ,bc.$LPAREN,bc.$RPAREN,bc.$STAR,bc.$PLUS,bc.$COMMA,bc.$MINUS,bc.$PERIOD,bc.$SLASH,bc.$COLON,bc.$SEMICOLON,bc.$LT,bc.$EQ,bc.$GT,bc.$QUESTION,bc.$0,bc.$9,bc.$A,bc.$E,bc.$F,bc.$X,bc.$Z,bc.$LBRACKET,bc.$BACKSLASH,bc.$RBRACKET,bc.$CARET,bc.$_,bc.$a,bc.$e,bc.$f,bc.$n,bc.$r,bc.$t,bc.$u,bc.$v,bc.$x,bc.$z,bc.$LBRACE,bc.$BAR,bc.$RBRACE,bc.$NBSP,bc.$PIPE,bc.$TILDA,bc.$AT,bc.$BT,bc.isWhitespace,bc.isDigit,bc.isAsciiLetter,bc.isAsciiHexDigit;var yc=d((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(t,n,i){r(this,e),this.filePath=t,this.name=n,this.members=i}return i(e,[{key:"assertNoMembers",value:function(){if(this.members.length)throw new Error("Illegal state: symbol without members expected, but got ".concat(JSON.stringify(this),"."))}}]),e}();t.StaticSymbol=n;var a=function(){function e(){r(this,e),this.cache=new Map}return i(e,[{key:"get",value:function(e,t,r){var i=(r=r||[]).length?".".concat(r.join(".")):"",a='"'.concat(e,'".').concat(t).concat(i),o=this.cache.get(a);return o||(o=new n(e,t,r),this.cache.set(a,o)),o}}]),e}();t.StaticSymbolCache=a}));h(yc);yc.StaticSymbol,yc.StaticSymbolCache;var Ec=d((function(e,n){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(n,"__esModule",{value:!0});var a=/-+([a-z0-9])/g;function o(e,t,r){var n=e.indexOf(t);return-1==n?r:[e.slice(0,n).trim(),e.slice(n+1).trim()]}function u(e,r,n){return Array.isArray(e)?r.visitArray(e,n):"object"===t(i=e)&&null!==i&&Object.getPrototypeOf(i)===p?r.visitStringMap(e,n):null==e||"string"==typeof e||"number"==typeof e||"boolean"==typeof e?r.visitPrimitive(e,n):r.visitOther(e,n);var i}n.dashCaseToCamelCase=function(e){return e.replace(a,(function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return t[1].toUpperCase()}))},n.splitAtColon=function(e,t){return o(e,":",t)},n.splitAtPeriod=function(e,t){return o(e,".",t)},n.visitValue=u,n.isDefined=function(e){return null!=e},n.noUndefined=function(e){return void 0===e?null:e};var s=function(){function e(){r(this,e)}return i(e,[{key:"visitArray",value:function(e,t){var r=this;return e.map((function(e){return u(e,r,t)}))}},{key:"visitStringMap",value:function(e,t){var r=this,n={};return Object.keys(e).forEach((function(i){n[i]=u(e[i],r,t)})),n}},{key:"visitPrimitive",value:function(e,t){return e}},{key:"visitOther",value:function(e,t){return e}}]),e}();n.ValueTransformer=s,n.SyncAsync={assertSync:function(e){if(f(e))throw new Error("Illegal state: value cannot be a promise");return e},then:function(e,t){return f(e)?e.then(t):t(e)},all:function(e){return e.some(f)?Promise.all(e):e}},n.error=function(e){throw new Error("Internal Error: ".concat(e))},n.syntaxError=function(e,t){var r=Error(e);return r[c]=!0,t&&(r[l]=t),r};var c="ngSyntaxError",l="ngParseErrors";n.isSyntaxError=function(e){return e[c]},n.getParseErrors=function(e){return e[l]||[]},n.escapeRegExp=function(e){return e.replace(/([.*+?^=!:${}()|[\]\/\\])/g,"\\$1")};var p=Object.getPrototypeOf({});function f(e){return!!e&&"function"==typeof e.then}n.utf8Encode=function(e){for(var t="",r=0;r<e.length;r++){var n=e.charCodeAt(r);if(n>=55296&&n<=56319&&e.length>r+1){var i=e.charCodeAt(r+1);i>=56320&&i<=57343&&(r++,n=(n-55296<<10)+i-56320+65536)}n<=127?t+=String.fromCharCode(n):n<=2047?t+=String.fromCharCode(n>>6&31|192,63&n|128):n<=65535?t+=String.fromCharCode(n>>12|224,n>>6&63|128,63&n|128):n<=2097151&&(t+=String.fromCharCode(n>>18&7|240,n>>12&63|128,n>>6&63|128,63&n|128))}return t},n.stringify=function e(t){if("string"==typeof t)return t;if(t instanceof Array)return"["+t.map(e).join(", ")+"]";if(null==t)return""+t;if(t.overriddenName)return"".concat(t.overriddenName);if(t.name)return"".concat(t.name);var r=t.toString();if(null==r)return""+r;var n=r.indexOf("\n");return-1===n?r:r.substring(0,n)},n.resolveForwardRef=function(e){return"function"==typeof e&&e.hasOwnProperty("__forward_ref__")?e():e},n.isPromise=f;n.Version=function e(t){r(this,e),this.full=t;var n=t.split(".");this.major=n[0],this.minor=n[1],this.patch=n.slice(2).join(".")}}));h(Ec);Ec.dashCaseToCamelCase,Ec.splitAtColon,Ec.splitAtPeriod,Ec.visitValue,Ec.isDefined,Ec.noUndefined,Ec.ValueTransformer,Ec.SyncAsync,Ec.error,Ec.syntaxError,Ec.isSyntaxError,Ec.getParseErrors,Ec.escapeRegExp,Ec.utf8Encode,Ec.stringify,Ec.resolveForwardRef,Ec.isPromise,Ec.Version;var Cc=d((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0});var n=/^(?:(?:\[([^\]]+)\])|(?:\(([^\)]+)\)))|(\@[-\w]+)$/;function a(e){return e.replace(/\W/g,"_")}t.sanitizeIdentifier=a;var o,u=0;function s(e){if(!e||!e.reference)return null;var t=e.reference;if(t instanceof yc.StaticSymbol)return t.name;if(t.__anonymousType)return t.__anonymousType;var r=Ec.stringify(t);return r.indexOf("(")>=0?(r="anonymous_".concat(u++),t.__anonymousType=r):r=a(r),r}t.identifierName=s,t.identifierModuleUrl=function(e){var t=e.reference;return t instanceof yc.StaticSymbol?t.filePath:"./".concat(Ec.stringify(t))},t.viewClassName=function(e,t){return"View_".concat(s({reference:e}),"_").concat(t)},t.rendererTypeName=function(e){return"RenderType_".concat(s({reference:e}))},t.hostViewClassName=function(e){return"HostView_".concat(s({reference:e}))},t.componentFactoryName=function(e){return"".concat(s({reference:e}),"NgFactory")},function(e){e[e.Pipe=0]="Pipe",e[e.Directive=1]="Directive",e[e.NgModule=2]="NgModule",e[e.Injectable=3]="Injectable"}(o=t.CompileSummaryKind||(t.CompileSummaryKind={})),t.tokenName=function(e){return null!=e.value?a(e.value):s(e.identifier)},t.tokenReference=function(e){return null!=e.identifier?e.identifier.reference:e.value};t.CompileStylesheetMetadata=function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.moduleUrl,i=t.styles,a=t.styleUrls;r(this,e),this.moduleUrl=n||null,this.styles=d(i),this.styleUrls=d(a)};var c=function(){function e(t){var n=t.encapsulation,i=t.template,a=t.templateUrl,o=t.htmlAst,u=t.styles,s=t.styleUrls,c=t.externalStylesheets,l=t.animations,p=t.ngContentSelectors,f=t.interpolation,h=t.isInline,g=t.preserveWhitespaces;if(r(this,e),this.encapsulation=n,this.template=i,this.templateUrl=a,this.htmlAst=o,this.styles=d(u),this.styleUrls=d(s),this.externalStylesheets=d(c),this.animations=l?D(l):[],this.ngContentSelectors=p||[],f&&2!=f.length)throw new Error("'interpolation' should have a start and an end symbol.");this.interpolation=f,this.isInline=h,this.preserveWhitespaces=g}return i(e,[{key:"toSummary",value:function(){return{ngContentSelectors:this.ngContentSelectors,encapsulation:this.encapsulation,styles:this.styles,animations:this.animations}}}]),e}();t.CompileTemplateMetadata=c;var l=function(){function e(t){var n=t.isHost,i=t.type,a=t.isComponent,o=t.selector,u=t.exportAs,s=t.changeDetection,c=t.inputs,l=t.outputs,p=t.hostListeners,f=t.hostProperties,h=t.hostAttributes,D=t.providers,g=t.viewProviders,m=t.queries,v=t.guards,b=t.viewQueries,y=t.entryComponents,E=t.template,C=t.componentViewType,A=t.rendererType,w=t.componentFactory;r(this,e),this.isHost=!!n,this.type=i,this.isComponent=a,this.selector=o,this.exportAs=u,this.changeDetection=s,this.inputs=c,this.outputs=l,this.hostListeners=p,this.hostProperties=f,this.hostAttributes=h,this.providers=d(D),this.viewProviders=d(g),this.queries=d(m),this.guards=v,this.viewQueries=d(b),this.entryComponents=d(y),this.template=E,this.componentViewType=C,this.rendererType=A,this.componentFactory=w}return i(e,null,[{key:"create",value:function(t){var r=t.isHost,i=t.type,a=t.isComponent,o=t.selector,u=t.exportAs,s=t.changeDetection,c=t.inputs,l=t.outputs,p=t.host,f=t.providers,h=t.viewProviders,d=t.queries,D=t.guards,g=t.viewQueries,m=t.entryComponents,v=t.template,b=t.componentViewType,y=t.rendererType,E=t.componentFactory,C={},A={},w={};null!=p&&Object.keys(p).forEach((function(e){var t=p[e],r=e.match(n);null===r?w[e]=t:null!=r[1]?A[r[1]]=t:null!=r[2]&&(C[r[2]]=t)}));var k={};null!=c&&c.forEach((function(e){var t=Ec.splitAtColon(e,[e,e]);k[t[0]]=t[1]}));var T={};return null!=l&&l.forEach((function(e){var t=Ec.splitAtColon(e,[e,e]);T[t[0]]=t[1]})),new e({isHost:r,type:i,isComponent:!!a,selector:o,exportAs:u,changeDetection:s,inputs:k,outputs:T,hostListeners:C,hostProperties:A,hostAttributes:w,providers:f,viewProviders:h,queries:d,guards:D,viewQueries:g,entryComponents:m,template:v,componentViewType:b,rendererType:y,componentFactory:E})}}]),i(e,[{key:"toSummary",value:function(){return{summaryKind:o.Directive,type:this.type,isComponent:this.isComponent,selector:this.selector,exportAs:this.exportAs,inputs:this.inputs,outputs:this.outputs,hostListeners:this.hostListeners,hostProperties:this.hostProperties,hostAttributes:this.hostAttributes,providers:this.providers,viewProviders:this.viewProviders,queries:this.queries,guards:this.guards,viewQueries:this.viewQueries,entryComponents:this.entryComponents,changeDetection:this.changeDetection,template:this.template&&this.template.toSummary(),componentViewType:this.componentViewType,rendererType:this.rendererType,componentFactory:this.componentFactory}}}]),e}();t.CompileDirectiveMetadata=l;var p=function(){function e(t){var n=t.type,i=t.name,a=t.pure;r(this,e),this.type=n,this.name=i,this.pure=!!a}return i(e,[{key:"toSummary",value:function(){return{summaryKind:o.Pipe,type:this.type,name:this.name,pure:this.pure}}}]),e}();t.CompilePipeMetadata=p;t.CompileShallowModuleMetadata=function e(){r(this,e)};var f=function(){function e(t){var n=t.type,i=t.providers,a=t.declaredDirectives,o=t.exportedDirectives,u=t.declaredPipes,s=t.exportedPipes,c=t.entryComponents,l=t.bootstrapComponents,p=t.importedModules,f=t.exportedModules,h=t.schemas,D=t.transitiveModule,g=t.id;r(this,e),this.type=n||null,this.declaredDirectives=d(a),this.exportedDirectives=d(o),this.declaredPipes=d(u),this.exportedPipes=d(s),this.providers=d(i),this.entryComponents=d(c),this.bootstrapComponents=d(l),this.importedModules=d(p),this.exportedModules=d(f),this.schemas=d(h),this.id=g||null,this.transitiveModule=D||null}return i(e,[{key:"toSummary",value:function(){var e=this.transitiveModule;return{summaryKind:o.NgModule,type:this.type,entryComponents:e.entryComponents,providers:e.providers,modules:e.modules,exportedDirectives:e.exportedDirectives,exportedPipes:e.exportedPipes}}}]),e}();t.CompileNgModuleMetadata=f;var h=function(){function e(){r(this,e),this.directivesSet=new Set,this.directives=[],this.exportedDirectivesSet=new Set,this.exportedDirectives=[],this.pipesSet=new Set,this.pipes=[],this.exportedPipesSet=new Set,this.exportedPipes=[],this.modulesSet=new Set,this.modules=[],this.entryComponentsSet=new Set,this.entryComponents=[],this.providers=[]}return i(e,[{key:"addProvider",value:function(e,t){this.providers.push({provider:e,module:t})}},{key:"addDirective",value:function(e){this.directivesSet.has(e.reference)||(this.directivesSet.add(e.reference),this.directives.push(e))}},{key:"addExportedDirective",value:function(e){this.exportedDirectivesSet.has(e.reference)||(this.exportedDirectivesSet.add(e.reference),this.exportedDirectives.push(e))}},{key:"addPipe",value:function(e){this.pipesSet.has(e.reference)||(this.pipesSet.add(e.reference),this.pipes.push(e))}},{key:"addExportedPipe",value:function(e){this.exportedPipesSet.has(e.reference)||(this.exportedPipesSet.add(e.reference),this.exportedPipes.push(e))}},{key:"addModule",value:function(e){this.modulesSet.has(e.reference)||(this.modulesSet.add(e.reference),this.modules.push(e))}},{key:"addEntryComponent",value:function(e){this.entryComponentsSet.has(e.componentType)||(this.entryComponentsSet.add(e.componentType),this.entryComponents.push(e))}}]),e}();function d(e){return e||[]}t.TransitiveCompileNgModuleMetadata=h;function D(e){return e.reduce((function(e,t){var r=Array.isArray(t)?D(t):t;return e.concat(r)}),[])}function g(e){return e.replace(/(\w+:\/\/[\w:-]+)?(\/+)?/,"ng:///")}t.ProviderMeta=function e(t,n){var i=n.useClass,a=n.useValue,o=n.useExisting,u=n.useFactory,s=n.deps,c=n.multi;r(this,e),this.token=t,this.useClass=i||null,this.useValue=a,this.useExisting=o,this.useFactory=u||null,this.dependencies=s||null,this.multi=!!c},t.flatten=D,t.templateSourceUrl=function(e,t,r){var n;return n=r.isInline?t.type.reference instanceof yc.StaticSymbol?"".concat(t.type.reference.filePath,".").concat(t.type.reference.name,".html"):"".concat(s(e),"/").concat(s(t.type),".html"):r.templateUrl,t.type.reference instanceof yc.StaticSymbol?n:g(n)},t.sharedStylesheetJitUrl=function(e,t){var r=e.moduleUrl.split(/\/\\/g),n=r[r.length-1];return g("css/".concat(t).concat(n,".ngstyle.js"))},t.ngModuleJitUrl=function(e){return g("".concat(s(e.type),"/module.ngfactory.js"))},t.templateJitUrl=function(e,t){return g("".concat(s(e),"/").concat(s(t.type),".ngfactory.js"))}}));h(Cc);Cc.sanitizeIdentifier,Cc.identifierName,Cc.identifierModuleUrl,Cc.viewClassName,Cc.rendererTypeName,Cc.hostViewClassName,Cc.componentFactoryName,Cc.CompileSummaryKind,Cc.tokenName,Cc.tokenReference,Cc.CompileStylesheetMetadata,Cc.CompileTemplateMetadata,Cc.CompileDirectiveMetadata,Cc.CompilePipeMetadata,Cc.CompileShallowModuleMetadata,Cc.CompileNgModuleMetadata,Cc.TransitiveCompileNgModuleMetadata,Cc.ProviderMeta,Cc.flatten,Cc.templateSourceUrl,Cc.sharedStylesheetJitUrl,Cc.ngModuleJitUrl,Cc.templateJitUrl;var Ac=d((function(e,t){Object.defineProperty(t,"__esModule",{value:!0});
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+var n=function(){function e(t,n,i,a){r(this,e),this.file=t,this.offset=n,this.line=i,this.col=a}return i(e,[{key:"toString",value:function(){return null!=this.offset?"".concat(this.file.url,"@").concat(this.line,":").concat(this.col):this.file.url}},{key:"moveBy",value:function(t){for(var r=this.file.content,n=r.length,i=this.offset,a=this.line,o=this.col;i>0&&t<0;){if(i--,t++,r.charCodeAt(i)==bc.$LF){a--;var u=r.substr(0,i-1).lastIndexOf(String.fromCharCode(bc.$LF));o=u>0?i-u:i}else o--}for(;i<n&&t>0;){var s=r.charCodeAt(i);i++,t--,s==bc.$LF?(a++,o=0):o++}return new e(this.file,i,a,o)}},{key:"getContext",value:function(e,t){var r=this.file.content,n=this.offset;if(null!=n){n>r.length-1&&(n=r.length-1);for(var i=n,a=0,o=0;a<e&&n>0&&(a++,"\n"!=r[--n]||++o!=t););for(a=0,o=0;a<e&&i<r.length-1&&(a++,"\n"!=r[++i]||++o!=t););return{before:r.substring(n,this.offset),after:r.substring(this.offset,i+1)}}return null}}]),e}();t.ParseLocation=n;var a=function e(t,n){r(this,e),this.content=t,this.url=n};t.ParseSourceFile=a;var o,u=function(){function e(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;r(this,e),this.start=t,this.end=n,this.details=i}return i(e,[{key:"toString",value:function(){return this.start.file.content.substring(this.start.offset,this.end.offset)}}]),e}();t.ParseSourceSpan=u,function(e){e[e.WARNING=0]="WARNING",e[e.ERROR=1]="ERROR"}(o=t.ParseErrorLevel||(t.ParseErrorLevel={}));var s=function(){function e(t,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:o.ERROR;r(this,e),this.span=t,this.msg=n,this.level=i}return i(e,[{key:"contextualMessage",value:function(){var e=this.span.start.getContext(100,3);return e?"".concat(this.msg,' ("').concat(e.before,"[").concat(o[this.level]," ->]").concat(e.after,'")'):this.msg}},{key:"toString",value:function(){var e=this.span.details?", ".concat(this.span.details):"";return"".concat(this.contextualMessage(),": ").concat(this.span.start).concat(e)}}]),e}();t.ParseError=s,t.typeSourceSpan=function(e,t){var r=Cc.identifierModuleUrl(t),i=null!=r?"in ".concat(e," ").concat(Cc.identifierName(t)," in ").concat(r):"in ".concat(e," ").concat(Cc.identifierName(t)),o=new a("",i);return new u(new n(o,-1,-1,-1),new n(o,-1,-1,-1))}}));h(Ac);Ac.ParseLocation,Ac.ParseSourceFile,Ac.ParseSourceSpan,Ac.ParseErrorLevel,Ac.ParseError,Ac.typeSourceSpan;var wc=d((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:-1;r(this,e),this.path=t,this.position=n}return i(e,[{key:"parentOf",value:function(e){return e&&this.path[this.path.indexOf(e)-1]}},{key:"childOf",value:function(e){return this.path[this.path.indexOf(e)+1]}},{key:"first",value:function(e){for(var t=this.path.length-1;t>=0;t--){var r=this.path[t];if(r instanceof e)return r}}},{key:"push",value:function(e){this.path.push(e)}},{key:"pop",value:function(){return this.path.pop()}},{key:"empty",get:function(){return!this.path||!this.path.length}},{key:"head",get:function(){return this.path[0]}},{key:"tail",get:function(){return this.path[this.path.length-1]}}]),e}();t.AstPath=n}));h(wc);wc.AstPath;var kc=d((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(t,n){r(this,e),this.value=t,this.sourceSpan=n}return i(e,[{key:"visit",value:function(e,t){return e.visitText(this,t)}}]),e}();t.Text=n;var u=function(){function e(t,n){r(this,e),this.value=t,this.sourceSpan=n}return i(e,[{key:"visit",value:function(e,t){return e.visitCdata(this,t)}}]),e}();t.CDATA=u;var c=function(){function e(t,n,i,a,o){r(this,e),this.switchValue=t,this.type=n,this.cases=i,this.sourceSpan=a,this.switchValueSourceSpan=o}return i(e,[{key:"visit",value:function(e,t){return e.visitExpansion(this,t)}}]),e}();t.Expansion=c;var l=function(){function e(t,n,i,a,o){r(this,e),this.value=t,this.expression=n,this.sourceSpan=i,this.valueSourceSpan=a,this.expSourceSpan=o}return i(e,[{key:"visit",value:function(e,t){return e.visitExpansionCase(this,t)}}]),e}();t.ExpansionCase=l;var p=function(){function e(t,n,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;r(this,e),this.name=t,this.value=n,this.sourceSpan=i,this.valueSpan=a,this.nameSpan=o}return i(e,[{key:"visit",value:function(e,t){return e.visitAttribute(this,t)}}]),e}();t.Attribute=p;var f=function(){function e(t,n,i,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null,u=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null;r(this,e),this.name=t,this.attrs=n,this.children=i,this.sourceSpan=a,this.startSourceSpan=o,this.endSourceSpan=u,this.nameSpan=s}return i(e,[{key:"visit",value:function(e,t){return e.visitElement(this,t)}}]),e}();t.Element=f;var h=function(){function e(t,n){r(this,e),this.value=t,this.sourceSpan=n}return i(e,[{key:"visit",value:function(e,t){return e.visitComment(this,t)}}]),e}();t.Comment=h;var d=function(){function e(t,n){r(this,e),this.value=t,this.sourceSpan=n}return i(e,[{key:"visit",value:function(e,t){return e.visitDocType(this,t)}}]),e}();function D(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=[],i=e.visit?function(t){return e.visit(t,r)||t.visit(e,r)}:function(t){return t.visit(e,r)};return t.forEach((function(e){var t=i(e);t&&n.push(t)})),n}t.DocType=d,t.visitAll=D;var g=function(){function e(){r(this,e)}return i(e,[{key:"visitElement",value:function(e,t){this.visitChildren(t,(function(t){t(e.attrs),t(e.children)}))}},{key:"visitAttribute",value:function(e,t){}},{key:"visitText",value:function(e,t){}},{key:"visitCdata",value:function(e,t){}},{key:"visitComment",value:function(e,t){}},{key:"visitDocType",value:function(e,t){}},{key:"visitExpansion",value:function(e,t){return this.visitChildren(t,(function(t){t(e.cases)}))}},{key:"visitExpansionCase",value:function(e,t){}},{key:"visitChildren",value:function(e,t){var r=[],n=this;return t((function(t){t&&r.push(D(n,t,e))})),[].concat.apply([],r)}}]),e}();t.RecursiveVisitor=g,t.findNode=function(e,t){var n=[];return D(new(function(e){function u(){return r(this,u),s(this,o(u).apply(this,arguments))}return a(u,e),i(u,[{key:"visit",value:function(e,r){var i=function e(t){var r=t.sourceSpan.start.offset,n=t.sourceSpan.end.offset;return t instanceof f&&(t.endSourceSpan?n=t.endSourceSpan.end.offset:t.children&&t.children.length&&(n=e(t.children[t.children.length-1]).end)),{start:r,end:n}}(e);if(!(i.start<=t&&t<i.end))return!0;n.push(e)}}]),u}(g)),e),new wc.AstPath(n,t)}}));h(kc);kc.Text,kc.CDATA,kc.Expansion,kc.ExpansionCase,kc.Attribute,kc.Element,kc.Comment,kc.DocType,kc.visitAll,kc.RecursiveVisitor,kc.findNode;var Tc=d((function(e,t){var n;
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.TAG_OPEN_START=0]="TAG_OPEN_START",e[e.TAG_OPEN_END=1]="TAG_OPEN_END",e[e.TAG_OPEN_END_VOID=2]="TAG_OPEN_END_VOID",e[e.TAG_CLOSE=3]="TAG_CLOSE",e[e.TEXT=4]="TEXT",e[e.ESCAPABLE_RAW_TEXT=5]="ESCAPABLE_RAW_TEXT",e[e.RAW_TEXT=6]="RAW_TEXT",e[e.COMMENT_START=7]="COMMENT_START",e[e.COMMENT_END=8]="COMMENT_END",e[e.CDATA_START=9]="CDATA_START",e[e.CDATA_END=10]="CDATA_END",e[e.ATTR_NAME=11]="ATTR_NAME",e[e.ATTR_VALUE=12]="ATTR_VALUE",e[e.DOC_TYPE_START=13]="DOC_TYPE_START",e[e.DOC_TYPE_END=14]="DOC_TYPE_END",e[e.EXPANSION_FORM_START=15]="EXPANSION_FORM_START",e[e.EXPANSION_CASE_VALUE=16]="EXPANSION_CASE_VALUE",e[e.EXPANSION_CASE_EXP_START=17]="EXPANSION_CASE_EXP_START",e[e.EXPANSION_CASE_EXP_END=18]="EXPANSION_CASE_EXP_END",e[e.EXPANSION_FORM_END=19]="EXPANSION_FORM_END",e[e.EOF=20]="EOF"}(n=t.TokenType||(t.TokenType={}));var u=function e(t,n,i){r(this,e),this.type=t,this.parts=n,this.sourceSpan=i};t.Token=u;var c=function(e){function t(e,n,i){var a;return r(this,t),(a=s(this,o(t).call(this,i,e))).tokenType=n,a}return a(t,e),t}(Ac.ParseError);t.TokenError=c;var l=function e(t,n){r(this,e),this.tokens=t,this.errors=n};t.TokenizeResult=l,t.tokenize=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:vc.DEFAULT_INTERPOLATION_CONFIG,a=arguments.length>5&&void 0!==arguments[5]&&arguments[5],o=arguments.length>6&&void 0!==arguments[6]&&arguments[6];return new D(new Ac.ParseSourceFile(e,t),r,n,i,a,o).tokenize()};var p=/\r\n?/g;function f(e){var t=e===bc.$EOF?"EOF":String.fromCharCode(e);return'Unexpected character "'.concat(t,'"')}function h(e){return'Unknown entity "'.concat(e,'" - use the "&#<decimal>;" or "&#x<hex>;" syntax')}var d=function e(t){r(this,e),this.error=t},D=function(){function e(t,n,i){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:vc.DEFAULT_INTERPOLATION_CONFIG,o=arguments.length>4&&void 0!==arguments[4]&&arguments[4],u=arguments.length>5&&void 0!==arguments[5]&&arguments[5];r(this,e),this._file=t,this._getTagDefinition=n,this._tokenizeIcu=i,this._interpolationConfig=a,this.canSelfClose=o,this.allowHtmComponentClosingTags=u,this._peek=-1,this._nextPeek=-1,this._index=-1,this._line=0,this._column=-1,this._expansionCaseStack=[],this._inInterpolation=!1,this.tokens=[],this.errors=[],this._input=t.content,this._length=t.content.length,this._advance()}return i(e,[{key:"_processCarriageReturns",value:function(e){return e.replace(p,"\n")}},{key:"tokenize",value:function(){for(;this._peek!==bc.$EOF;){var e=this._getLocation();try{if(this._attemptCharCode(bc.$LT))if(this._attemptCharCode(bc.$BANG))this._attemptStr("[CDATA[")?this._consumeCdata(e):this._attemptStr("--")?this._consumeComment(e):this._attemptStrCaseInsensitive("doctype")?this._consumeDocType(e):this._consumeBogusComment(e);else if(this._attemptCharCode(bc.$SLASH))this._consumeTagClose(e);else{var t=this._savePosition();this._attemptCharCode(bc.$QUESTION)?(this._restorePosition(t),this._consumeBogusComment(e)):this._consumeTagOpen(e)}else this._tokenizeIcu&&this._tokenizeExpansionForm()||this._consumeText()}catch(e){if(!(e instanceof d))throw e;this.errors.push(e.error)}}return this._beginToken(n.EOF),this._endToken([]),new l(function(e){for(var t=[],r=void 0,i=0;i<e.length;i++){var a=e[i];r&&r.type==n.TEXT&&a.type==n.TEXT?(r.parts[0]+=a.parts[0],r.sourceSpan.end=a.sourceSpan.end):(r=a,t.push(r))}return t}(this.tokens),this.errors)}},{key:"_tokenizeExpansionForm",value:function(){if(y(this._input,this._index,this._interpolationConfig))return this._consumeExpansionFormStart(),!0;if(((e=this._peek)===bc.$EQ||bc.isAsciiLetter(e)||bc.isDigit(e))&&this._isInExpansionForm())return this._consumeExpansionCaseStart(),!0;var e;if(this._peek===bc.$RBRACE){if(this._isInExpansionCase())return this._consumeExpansionCaseEnd(),!0;if(this._isInExpansionForm())return this._consumeExpansionFormEnd(),!0}return!1}},{key:"_getLocation",value:function(){return new Ac.ParseLocation(this._file,this._index,this._line,this._column)}},{key:"_getSpan",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this._getLocation(),t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getLocation();return new Ac.ParseSourceSpan(e,t)}},{key:"_beginToken",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getLocation();this._currentTokenStart=t,this._currentTokenType=e}},{key:"_endToken",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._getLocation(),r=new u(this._currentTokenType,e,new Ac.ParseSourceSpan(this._currentTokenStart,t));return this.tokens.push(r),this._currentTokenStart=null,this._currentTokenType=null,r}},{key:"_createError",value:function(e,t){this._isInExpansionForm()&&(e+=' (Do you have an unescaped "{" in your template? Use "{{ \'{\' }}") to escape it.)');var r=new c(e,this._currentTokenType,t);return this._currentTokenStart=null,this._currentTokenType=null,new d(r)}},{key:"_advance",value:function(){if(this._index>=this._length)throw this._createError(f(bc.$EOF),this._getSpan());this._peek===bc.$LF?(this._line++,this._column=0):this._peek!==bc.$LF&&this._peek!==bc.$CR&&this._column++,this._index++,this._peek=this._index>=this._length?bc.$EOF:this._input.charCodeAt(this._index),this._nextPeek=this._index+1>=this._length?bc.$EOF:this._input.charCodeAt(this._index+1)}},{key:"_attemptCharCode",value:function(e){return this._peek===e&&(this._advance(),!0)}},{key:"_attemptCharCodeCaseInsensitive",value:function(e){return t=this._peek,r=e,E(t)==E(r)&&(this._advance(),!0);var t,r}},{key:"_requireCharCode",value:function(e){var t=this._getLocation();if(!this._attemptCharCode(e))throw this._createError(f(this._peek),this._getSpan(t,t))}},{key:"_attemptStr",value:function(e){var t=e.length;if(this._index+t>this._length)return!1;for(var r=this._savePosition(),n=0;n<t;n++)if(!this._attemptCharCode(e.charCodeAt(n)))return this._restorePosition(r),!1;return!0}},{key:"_attemptStrCaseInsensitive",value:function(e){for(var t=0;t<e.length;t++)if(!this._attemptCharCodeCaseInsensitive(e.charCodeAt(t)))return!1;return!0}},{key:"_requireStr",value:function(e){var t=this._getLocation();if(!this._attemptStr(e))throw this._createError(f(this._peek),this._getSpan(t))}},{key:"_requireStrCaseInsensitive",value:function(e){var t=this._getLocation();if(!this._attemptStrCaseInsensitive(e))throw this._createError(f(this._peek),this._getSpan(t))}},{key:"_attemptCharCodeUntilFn",value:function(e){for(;!e(this._peek);)this._advance()}},{key:"_requireCharCodeUntilFn",value:function(e,t){var r=this._getLocation();if(this._attemptCharCodeUntilFn(e),this._index-r.offset<t)throw this._createError(f(this._peek),this._getSpan(r,r))}},{key:"_attemptUntilChar",value:function(e){for(;this._peek!==e;)this._advance()}},{key:"_readChar",value:function(e){if(e&&this._peek===bc.$AMPERSAND)return this._decodeEntity();var t=this._index;return this._advance(),this._input[t]}},{key:"_decodeEntity",value:function(){var e=this._getLocation();if(this._advance(),!this._attemptCharCode(bc.$HASH)){var t=this._savePosition();if(this._attemptCharCodeUntilFn(b),this._peek!=bc.$SEMICOLON)return this._restorePosition(t),"&";this._advance();var r=this._input.substring(e.offset+1,this._index-1),n=Dc.NAMED_ENTITIES[r];if(!n)throw this._createError(h(r),this._getSpan(e));return n}var i=this._attemptCharCode(bc.$x)||this._attemptCharCode(bc.$X),a=this._getLocation().offset;if(this._attemptCharCodeUntilFn(v),this._peek!=bc.$SEMICOLON)throw this._createError(f(this._peek),this._getSpan());this._advance();var o=this._input.substring(a,this._index-1);try{var u=parseInt(o,i?16:10);return String.fromCharCode(u)}catch(t){var s=this._input.substring(e.offset+1,this._index-1);throw this._createError(h(s),this._getSpan(e))}}},{key:"_consumeRawText",value:function(e,t,r){var i,a=this._getLocation();this._beginToken(e?n.ESCAPABLE_RAW_TEXT:n.RAW_TEXT,a);for(var o=[];i=this._getLocation(),!this._attemptCharCode(t)||!r();)for(this._index>i.offset&&o.push(this._input.substring(i.offset,this._index));this._peek!==t;)o.push(this._readChar(e));return this._endToken([this._processCarriageReturns(o.join(""))],i)}},{key:"_consumeComment",value:function(e){var t=this;this._beginToken(n.COMMENT_START,e),this._endToken([]);var r=this._consumeRawText(!1,bc.$MINUS,(function(){return t._attemptStr("->")}));this._beginToken(n.COMMENT_END,r.sourceSpan.end),this._endToken([])}},{key:"_consumeBogusComment",value:function(e){this._beginToken(n.COMMENT_START,e),this._endToken([]);var t=this._consumeRawText(!1,bc.$GT,(function(){return!0}));this._beginToken(n.COMMENT_END,t.sourceSpan.end),this._endToken([])}},{key:"_consumeCdata",value:function(e){var t=this;this._beginToken(n.CDATA_START,e),this._endToken([]);var r=this._consumeRawText(!1,bc.$RBRACKET,(function(){return t._attemptStr("]>")}));this._beginToken(n.CDATA_END,r.sourceSpan.end),this._endToken([])}},{key:"_consumeDocType",value:function(e){this._beginToken(n.DOC_TYPE_START,e),this._endToken([]);var t=this._consumeRawText(!1,bc.$GT,(function(){return!0}));this._beginToken(n.DOC_TYPE_END,t.sourceSpan.end),this._endToken([])}},{key:"_consumePrefixAndName",value:function(){for(var e,t,r=this._index,n=null;this._peek!==bc.$COLON&&!(((e=this._peek)<bc.$a||bc.$z<e)&&(e<bc.$A||bc.$Z<e)&&(e<bc.$0||e>bc.$9));)this._advance();return this._peek===bc.$COLON?(this._advance(),n=this._input.substring(r,this._index-1),t=this._index):t=r,this._requireCharCodeUntilFn(m,this._index===t?1:0),[n,this._input.substring(t,this._index)]}},{key:"_consumeTagOpen",value:function(e){var t,r,i=this._savePosition();try{if(!bc.isAsciiLetter(this._peek))throw this._createError(f(this._peek),this._getSpan());var a=this._index;for(this._consumeTagOpenStart(e),r=(t=this._input.substring(a,this._index)).toLowerCase(),this._attemptCharCodeUntilFn(g);this._peek!==bc.$SLASH&&this._peek!==bc.$GT;)this._consumeAttributeName(),this._attemptCharCodeUntilFn(g),this._attemptCharCode(bc.$EQ)&&(this._attemptCharCodeUntilFn(g),this._consumeAttributeValue()),this._attemptCharCodeUntilFn(g);this._consumeTagOpenEnd()}catch(t){if(t instanceof d)return this._restorePosition(i),this._beginToken(n.TEXT,e),void this._endToken(["<"]);throw t}if(!this.canSelfClose||this.tokens[this.tokens.length-1].type!==n.TAG_OPEN_END_VOID){var o=this._getTagDefinition(t).contentType;o===Dc.TagContentType.RAW_TEXT?this._consumeRawTextWithTagClose(r,!1):o===Dc.TagContentType.ESCAPABLE_RAW_TEXT&&this._consumeRawTextWithTagClose(r,!0)}}},{key:"_consumeRawTextWithTagClose",value:function(e,t){var r=this,i=this._consumeRawText(t,bc.$LT,(function(){return!!r._attemptCharCode(bc.$SLASH)&&(r._attemptCharCodeUntilFn(g),!!r._attemptStrCaseInsensitive(e)&&(r._attemptCharCodeUntilFn(g),r._attemptCharCode(bc.$GT)))}));this._beginToken(n.TAG_CLOSE,i.sourceSpan.end),this._endToken([null,e])}},{key:"_consumeTagOpenStart",value:function(e){this._beginToken(n.TAG_OPEN_START,e);var t=this._consumePrefixAndName();this._endToken(t)}},{key:"_consumeAttributeName",value:function(){this._beginToken(n.ATTR_NAME);var e=this._consumePrefixAndName();this._endToken(e)}},{key:"_consumeAttributeValue",value:function(){var e;if(this._beginToken(n.ATTR_VALUE),this._peek===bc.$SQ||this._peek===bc.$DQ){var t=this._peek;this._advance();for(var r=[];this._peek!==t;)r.push(this._readChar(!0));e=r.join(""),this._advance()}else{var i=this._index;this._requireCharCodeUntilFn(m,1),e=this._input.substring(i,this._index)}this._endToken([this._processCarriageReturns(e)])}},{key:"_consumeTagOpenEnd",value:function(){var e=this._attemptCharCode(bc.$SLASH)?n.TAG_OPEN_END_VOID:n.TAG_OPEN_END;this._beginToken(e),this._requireCharCode(bc.$GT),this._endToken([])}},{key:"_consumeTagClose",value:function(e){if(this._beginToken(n.TAG_CLOSE,e),this._attemptCharCodeUntilFn(g),this.allowHtmComponentClosingTags&&this._attemptCharCode(bc.$SLASH))this._attemptCharCodeUntilFn(g),this._requireCharCode(bc.$GT),this._endToken([]);else{var t=this._consumePrefixAndName();this._attemptCharCodeUntilFn(g),this._requireCharCode(bc.$GT),this._endToken(t)}}},{key:"_consumeExpansionFormStart",value:function(){this._beginToken(n.EXPANSION_FORM_START,this._getLocation()),this._requireCharCode(bc.$LBRACE),this._endToken([]),this._expansionCaseStack.push(n.EXPANSION_FORM_START),this._beginToken(n.RAW_TEXT,this._getLocation());var e=this._readUntil(bc.$COMMA);this._endToken([e],this._getLocation()),this._requireCharCode(bc.$COMMA),this._attemptCharCodeUntilFn(g),this._beginToken(n.RAW_TEXT,this._getLocation());var t=this._readUntil(bc.$COMMA);this._endToken([t],this._getLocation()),this._requireCharCode(bc.$COMMA),this._attemptCharCodeUntilFn(g)}},{key:"_consumeExpansionCaseStart",value:function(){this._beginToken(n.EXPANSION_CASE_VALUE,this._getLocation());var e=this._readUntil(bc.$LBRACE).trim();this._endToken([e],this._getLocation()),this._attemptCharCodeUntilFn(g),this._beginToken(n.EXPANSION_CASE_EXP_START,this._getLocation()),this._requireCharCode(bc.$LBRACE),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(g),this._expansionCaseStack.push(n.EXPANSION_CASE_EXP_START)}},{key:"_consumeExpansionCaseEnd",value:function(){this._beginToken(n.EXPANSION_CASE_EXP_END,this._getLocation()),this._requireCharCode(bc.$RBRACE),this._endToken([],this._getLocation()),this._attemptCharCodeUntilFn(g),this._expansionCaseStack.pop()}},{key:"_consumeExpansionFormEnd",value:function(){this._beginToken(n.EXPANSION_FORM_END,this._getLocation()),this._requireCharCode(bc.$RBRACE),this._endToken([]),this._expansionCaseStack.pop()}},{key:"_consumeText",value:function(){var e=this._getLocation();this._beginToken(n.TEXT,e);var t=[];do{this._interpolationConfig&&this._attemptStr(this._interpolationConfig.start)?(t.push(this._interpolationConfig.start),this._inInterpolation=!0):this._interpolationConfig&&this._inInterpolation&&this._attemptStr(this._interpolationConfig.end)?(t.push(this._interpolationConfig.end),this._inInterpolation=!1):t.push(this._readChar(!0))}while(!this._isTextEnd());this._endToken([this._processCarriageReturns(t.join(""))])}},{key:"_isTextEnd",value:function(){if(this._peek===bc.$LT||this._peek===bc.$EOF)return!0;if(this._tokenizeIcu&&!this._inInterpolation){if(y(this._input,this._index,this._interpolationConfig))return!0;if(this._peek===bc.$RBRACE&&this._isInExpansionCase())return!0}return!1}},{key:"_savePosition",value:function(){return[this._peek,this._index,this._column,this._line,this.tokens.length]}},{key:"_readUntil",value:function(e){var t=this._index;return this._attemptUntilChar(e),this._input.substring(t,this._index)}},{key:"_restorePosition",value:function(e){this._peek=e[0],this._index=e[1],this._column=e[2],this._line=e[3];var t=e[4];t<this.tokens.length&&(this.tokens=this.tokens.slice(0,t))}},{key:"_isInExpansionCase",value:function(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===n.EXPANSION_CASE_EXP_START}},{key:"_isInExpansionForm",value:function(){return this._expansionCaseStack.length>0&&this._expansionCaseStack[this._expansionCaseStack.length-1]===n.EXPANSION_FORM_START}}]),e}();function g(e){return!bc.isWhitespace(e)||e===bc.$EOF}function m(e){return bc.isWhitespace(e)||e===bc.$GT||e===bc.$SLASH||e===bc.$SQ||e===bc.$DQ||e===bc.$EQ}function v(e){return e==bc.$SEMICOLON||e==bc.$EOF||!bc.isAsciiHexDigit(e)}function b(e){return e==bc.$SEMICOLON||e==bc.$EOF||!bc.isAsciiLetter(e)}function y(e,t,r){var n=!!r&&e.indexOf(r.start,t)==t;return e.charCodeAt(t)==bc.$LBRACE&&!n}function E(e){return e>=bc.$a&&e<=bc.$z?e-bc.$a+bc.$A:e}}));h(Tc);Tc.TokenType,Tc.Token,Tc.TokenError,Tc.TokenizeResult,Tc.tokenize;var _c=d((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0});var n=function(e){function t(e,n,i){var a;return r(this,t),(a=s(this,o(t).call(this,n,i))).elementName=e,a}return a(t,e),i(t,null,[{key:"create",value:function(e,r,n){return new t(e,r,n)}}]),t}(Ac.ParseError);t.TreeError=n;var u=function e(t,n){r(this,e),this.rootNodes=t,this.errors=n};t.ParseTreeResult=u;var c=function(){function e(t){r(this,e),this.getTagDefinition=t}return i(e,[{key:"parse",value:function(e,t){var r=this,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:vc.DEFAULT_INTERPOLATION_CONFIG,a=arguments.length>4&&void 0!==arguments[4]&&arguments[4],o=arguments.length>5&&void 0!==arguments[5]&&arguments[5],s=arguments.length>6&&void 0!==arguments[6]&&arguments[6],c=s?this.getTagDefinition:function(e){return r.getTagDefinition(e.toLowerCase())},p=Tc.tokenize(e,t,c,n,i,a,o),f=new l(p.tokens,c,a,o,s).build();return new u(f.rootNodes,p.errors.concat(f.errors))}}]),e}();t.Parser=c;var l=function(){function e(t,n,i,a,o){r(this,e),this.tokens=t,this.getTagDefinition=n,this.canSelfClose=i,this.allowHtmComponentClosingTags=a,this.isTagNameCaseSensitive=o,this._index=-1,this._rootNodes=[],this._errors=[],this._elementStack=[],this._advance()}return i(e,[{key:"build",value:function(){for(;this._peek.type!==Tc.TokenType.EOF;)this._peek.type===Tc.TokenType.TAG_OPEN_START?this._consumeStartTag(this._advance()):this._peek.type===Tc.TokenType.TAG_CLOSE?this._consumeEndTag(this._advance()):this._peek.type===Tc.TokenType.CDATA_START?(this._closeVoidElement(),this._consumeCdata(this._advance())):this._peek.type===Tc.TokenType.COMMENT_START?(this._closeVoidElement(),this._consumeComment(this._advance())):this._peek.type===Tc.TokenType.TEXT||this._peek.type===Tc.TokenType.RAW_TEXT||this._peek.type===Tc.TokenType.ESCAPABLE_RAW_TEXT?(this._closeVoidElement(),this._consumeText(this._advance())):this._peek.type===Tc.TokenType.EXPANSION_FORM_START?this._consumeExpansion(this._advance()):this._peek.type===Tc.TokenType.DOC_TYPE_START?this._consumeDocType(this._advance()):this._advance();return new u(this._rootNodes,this._errors)}},{key:"_advance",value:function(){var e=this._peek;return this._index<this.tokens.length-1&&this._index++,this._peek=this.tokens[this._index],e}},{key:"_advanceIf",value:function(e){return this._peek.type===e?this._advance():null}},{key:"_consumeCdata",value:function(e){var t=this._advance(),r=this._getText(t),n=this._advanceIf(Tc.TokenType.CDATA_END);this._addToParent(new kc.CDATA(r,new Ac.ParseSourceSpan(e.sourceSpan.start,(n||t).sourceSpan.end)))}},{key:"_consumeComment",value:function(e){var t=this._advanceIf(Tc.TokenType.RAW_TEXT),r=this._advanceIf(Tc.TokenType.COMMENT_END),n=null!=t?t.parts[0].trim():null,i=new Ac.ParseSourceSpan(e.sourceSpan.start,(r||t||e).sourceSpan.end);this._addToParent(new kc.Comment(n,i))}},{key:"_consumeDocType",value:function(e){var t=this._advanceIf(Tc.TokenType.RAW_TEXT),r=this._advanceIf(Tc.TokenType.DOC_TYPE_END),n=null!=t?t.parts[0].trim():null,i=new Ac.ParseSourceSpan(e.sourceSpan.start,(r||t||e).sourceSpan.end);this._addToParent(new kc.DocType(n,i))}},{key:"_consumeExpansion",value:function(e){for(var t=this._advance(),r=this._advance(),i=[];this._peek.type===Tc.TokenType.EXPANSION_CASE_VALUE;){var a=this._parseExpansionCase();if(!a)return;i.push(a)}if(this._peek.type===Tc.TokenType.EXPANSION_FORM_END){var o=new Ac.ParseSourceSpan(e.sourceSpan.start,this._peek.sourceSpan.end);this._addToParent(new kc.Expansion(t.parts[0],r.parts[0],i,o,t.sourceSpan)),this._advance()}else this._errors.push(n.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '}'."))}},{key:"_parseExpansionCase",value:function(){var t=this._advance();if(this._peek.type!==Tc.TokenType.EXPANSION_CASE_EXP_START)return this._errors.push(n.create(null,this._peek.sourceSpan,"Invalid ICU message. Missing '{'.")),null;var r=this._advance(),i=this._collectExpansionExpTokens(r);if(!i)return null;var a=this._advance();i.push(new Tc.Token(Tc.TokenType.EOF,[],a.sourceSpan));var o=new e(i,this.getTagDefinition,this.canSelfClose,this.allowHtmComponentClosingTags,this.isTagNameCaseSensitive).build();if(o.errors.length>0)return this._errors=this._errors.concat(o.errors),null;var u=new Ac.ParseSourceSpan(t.sourceSpan.start,a.sourceSpan.end),s=new Ac.ParseSourceSpan(r.sourceSpan.start,a.sourceSpan.end);return new kc.ExpansionCase(t.parts[0],o.rootNodes,u,t.sourceSpan,s)}},{key:"_collectExpansionExpTokens",value:function(e){for(var t=[],r=[Tc.TokenType.EXPANSION_CASE_EXP_START];;){if(this._peek.type!==Tc.TokenType.EXPANSION_FORM_START&&this._peek.type!==Tc.TokenType.EXPANSION_CASE_EXP_START||r.push(this._peek.type),this._peek.type===Tc.TokenType.EXPANSION_CASE_EXP_END){if(!p(r,Tc.TokenType.EXPANSION_CASE_EXP_START))return this._errors.push(n.create(null,e.sourceSpan,"Invalid ICU message. Missing '}'.")),null;if(r.pop(),0==r.length)return t}if(this._peek.type===Tc.TokenType.EXPANSION_FORM_END){if(!p(r,Tc.TokenType.EXPANSION_FORM_START))return this._errors.push(n.create(null,e.sourceSpan,"Invalid ICU message. Missing '}'.")),null;r.pop()}if(this._peek.type===Tc.TokenType.EOF)return this._errors.push(n.create(null,e.sourceSpan,"Invalid ICU message. Missing '}'.")),null;t.push(this._advance())}}},{key:"_getText",value:function(e){var t=e.parts[0];if(t.length>0&&"\n"==t[0]){var r=this._getParentElement();null!=r&&0==r.children.length&&this.getTagDefinition(r.name).ignoreFirstLf&&(t=t.substring(1))}return t}},{key:"_consumeText",value:function(e){var t=this._getText(e);t.length>0&&this._addToParent(new kc.Text(t,e.sourceSpan))}},{key:"_closeVoidElement",value:function(){var e=this._getParentElement();e&&this.getTagDefinition(e.name).isVoid&&this._elementStack.pop()}},{key:"_consumeStartTag",value:function(e){for(var t=e.parts[0],r=e.parts[1],i=[];this._peek.type===Tc.TokenType.ATTR_NAME;)i.push(this._consumeAttr(this._advance()));var a=this._getElementFullName(t,r,this._getParentElement()),o=!1;if(this._peek.type===Tc.TokenType.TAG_OPEN_END_VOID){this._advance(),o=!0;var u=this.getTagDefinition(a);this.canSelfClose||u.canSelfClose||null!==Dc.getNsPrefix(a)||u.isVoid||this._errors.push(n.create(a,e.sourceSpan,'Only void and foreign elements can be self closed "'.concat(e.parts[1],'"')))}else this._peek.type===Tc.TokenType.TAG_OPEN_END&&(this._advance(),o=!1);var s=this._peek.sourceSpan.start,c=new Ac.ParseSourceSpan(e.sourceSpan.start,s),l=new Ac.ParseSourceSpan(e.sourceSpan.start.moveBy(1),e.sourceSpan.end),p=new kc.Element(a,i,[],c,c,void 0,l);this._pushElement(p),o&&(this._popElement(a),p.endSourceSpan=c)}},{key:"_pushElement",value:function(e){var t=this._getParentElement();t&&this.getTagDefinition(t.name).isClosedByChild(e.name)&&this._elementStack.pop();var r=this.getTagDefinition(e.name),n=this._getParentElementSkippingContainers(),i=n.parent,a=n.container;if(i&&r.requireExtraParent(i.name)){var o=new kc.Element(r.parentToAdd,[],[],e.sourceSpan,e.startSourceSpan,e.endSourceSpan);this._insertBeforeContainer(i,a,o)}this._addToParent(e),this._elementStack.push(e)}},{key:"_consumeEndTag",value:function(e){var t=this.allowHtmComponentClosingTags&&0===e.parts.length?null:this._getElementFullName(e.parts[0],e.parts[1],this._getParentElement());if(this._getParentElement()&&(this._getParentElement().endSourceSpan=e.sourceSpan),t&&this.getTagDefinition(t).isVoid)this._errors.push(n.create(t,e.sourceSpan,'Void elements do not have end tags "'.concat(e.parts[1],'"')));else if(!this._popElement(t)){var r='Unexpected closing tag "'.concat(t,'". It may happen when the tag has already been closed by another tag. For more info see https://www.w3.org/TR/html5/syntax.html#closing-elements-that-have-implied-end-tags');this._errors.push(n.create(t,e.sourceSpan,r))}}},{key:"_popElement",value:function(e){for(var t=this._elementStack.length-1;t>=0;t--){var r=this._elementStack[t];if(!e||(Dc.getNsPrefix(r.name)?r.name==e:r.name.toLowerCase()==e.toLowerCase()))return this._elementStack.splice(t,this._elementStack.length-t),!0;if(!this.getTagDefinition(r.name).closedByParent)return!1}return!1}},{key:"_consumeAttr",value:function(e){var t=Dc.mergeNsAndName(e.parts[0],e.parts[1]),r=e.sourceSpan.end,n="",i=void 0;if(this._peek.type===Tc.TokenType.ATTR_VALUE){var a=this._advance();n=a.parts[0],r=a.sourceSpan.end,i=a.sourceSpan}return new kc.Attribute(t,n,new Ac.ParseSourceSpan(e.sourceSpan.start,r),i,e.sourceSpan)}},{key:"_getParentElement",value:function(){return this._elementStack.length>0?this._elementStack[this._elementStack.length-1]:null}},{key:"_getParentElementSkippingContainers",value:function(){for(var e=null,t=this._elementStack.length-1;t>=0;t--){if(!Dc.isNgContainer(this._elementStack[t].name))return{parent:this._elementStack[t],container:e};e=this._elementStack[t]}return{parent:null,container:e}}},{key:"_addToParent",value:function(e){var t=this._getParentElement();null!=t?t.children.push(e):this._rootNodes.push(e)}},{key:"_insertBeforeContainer",value:function(e,t,r){if(t){if(e){var n=e.children.indexOf(t);e.children[n]=r}else this._rootNodes.push(r);r.children.push(t),this._elementStack.splice(this._elementStack.indexOf(t),0,r)}else this._addToParent(r),this._elementStack.push(r)}},{key:"_getElementFullName",value:function(e,t,r){return null==e&&null==(e=this.getTagDefinition(t).implicitNamespacePrefix)&&null!=r&&(e=Dc.getNsPrefix(r.name)),Dc.mergeNsAndName(e,t)}}]),e}();function p(e,t){return e.length>0&&e[e.length-1]===t}}));h(_c);_c.TreeError,_c.ParseTreeResult,_c.Parser;var Sc=d((function(e,t){
+/**
+ * @license
+ * Copyright Google Inc. All Rights Reserved.
+ *
+ * Use of this source code is governed by an MIT-style license that can be
+ * found in the LICENSE file at https://angular.io/license
+ */
+Object.defineProperty(t,"__esModule",{value:!0});var n=_c;t.ParseTreeResult=n.ParseTreeResult,t.TreeError=n.TreeError;var u=function(e){function t(){return r(this,t),s(this,o(t).call(this,gc.getHtmlTagDefinition))}return a(t,e),i(t,[{key:"parse",value:function(e,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:vc.DEFAULT_INTERPOLATION_CONFIG,a=arguments.length>4&&void 0!==arguments[4]&&arguments[4],u=arguments.length>5&&void 0!==arguments[5]&&arguments[5],s=arguments.length>6&&void 0!==arguments[6]&&arguments[6];return c(o(t.prototype),"parse",this).call(this,e,r,n,i,a,u,s)}}]),t}(_c.Parser);t.HtmlParser=u}));h(Sc);Sc.ParseTreeResult,Sc.TreeError,Sc.HtmlParser;var Fc=d((function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var r=null,n=function(){return r||(r=new Sc.HtmlParser),r};t.parse=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.canSelfClose,i=void 0!==r&&r,a=t.allowHtmComponentClosingTags,o=void 0!==a&&a,u=t.isTagNameCaseSensitive,s=void 0!==u&&u;return n().parse(e,"angular-html-parser",!1,void 0,i,o,s)}}));h(Fc);Fc.parse;var xc=ic.HTML_ELEMENT_ATTRIBUTES,qc=ic.HTML_TAGS,Nc=ac,Lc=fc.Node,Bc=dc;function Pc(e,t){var n=t.recognizeSelfClosing,u=t.normalizeTagName,c=t.normalizeAttributeName,l=t.allowHtmComponentClosingTags,p=t.isTagNameCaseSensitive,f=Fc,h=kc.RecursiveVisitor,d=kc.visitAll,D=kc.Attribute,g=kc.CDATA,m=kc.Comment,v=kc.DocType,b=kc.Element,y=kc.Text,E=Ac.ParseSourceSpan,C=gc.getHtmlTagDefinition,A=f.parse(e,{canSelfClose:n,allowHtmComponentClosingTags:l,isTagNameCaseSensitive:p}),w=A.rootNodes,k=A.errors;if(0!==k.length){var T=k[0],_=T.msg,S=T.span.start,F=S.line,x=S.col;throw oc(_,{start:{line:F+1,column:x+1}})}var q=function(e){var t=e.name.startsWith(":")?e.name.slice(1).split(":")[0]:null,r=e.nameSpan?e.nameSpan.toString():e.name,n=r.startsWith("".concat(t,":")),i=n?r.slice(t.length+1):r;e.name=i,e.namespace=t,e.hasExplicitNamespace=n},N=function(e,t){var r=e.toLowerCase();return t(r)?r:e};return d(new(function(e){function t(){return r(this,t),s(this,o(t).apply(this,arguments))}return a(t,e),i(t,[{key:"visit",value:function(e){!function(e){if(e instanceof D)e.type="attribute";else if(e instanceof g)e.type="cdata";else if(e instanceof m)e.type="comment";else if(e instanceof v)e.type="docType";else if(e instanceof b)e.type="element";else{if(!(e instanceof y))throw new Error("Unexpected node ".concat(JSON.stringify(e)));e.type="text"}}(e),function(e){e instanceof b?(q(e),e.attrs.forEach((function(e){q(e),e.valueSpan?(e.value=e.valueSpan.toString(),/['"]/.test(e.value[0])&&(e.value=e.value.slice(1,-1))):e.value=null}))):e instanceof m?e.value=e.sourceSpan.toString().slice("\x3c!--".length,-"--\x3e".length):e instanceof y&&(e.value=e.sourceSpan.toString())}(e),function(e){if(e instanceof b){var t=C(p?e.name:e.name.toLowerCase());e.namespace&&e.namespace!==t.implicitNamespacePrefix?e.tagDefinition=C(""):e.tagDefinition=t}}(e),function(e){if(e instanceof b&&(!u||e.namespace&&e.namespace!==e.tagDefinition.implicitNamespacePrefix||(e.name=N(e.name,(function(e){return e in qc}))),c)){var t=xc[e.name]||Object.create(null);e.attrs.forEach((function(r){r.namespace||(r.name=N(r.name,(function(r){return e.name in xc&&(r in xc["*"]||r in t)})))}))}}(e),function(e){e.sourceSpan&&e.endSourceSpan&&(e.sourceSpan=new E(e.sourceSpan.start,e.endSourceSpan.end))}(e)}}]),t}(h)),w),w}function Oc(e){return e.sourceSpan.start.offset}function Rc(e){return e.sourceSpan.end.offset}function Ic(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.recognizeSelfClosing,r=void 0!==t&&t,n=e.normalizeTagName,i=void 0!==n&&n,a=e.normalizeAttributeName,o=void 0!==a&&a,u=e.allowHtmComponentClosingTags,s=void 0!==u&&u,c=e.isTagNameCaseSensitive,l=void 0!==c&&c;return{parse:function(e,t,n){return function e(t,r,n){var i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3]?lo(t):{frontMatter:null,content:t},a=i.frontMatter,o=i.content,u={type:"root",sourceSpan:{start:{offset:0},end:{offset:t.length}},children:Pc(o,n)};a&&u.children.unshift(a);var s=new Lc(u),c=function(i,a){var o=a.offset,u=e(t.slice(0,o).replace(/[^\r\n]/g," ")+i,r,n,!1),s=u.children[0].sourceSpan.constructor;u.sourceSpan=new s(a,u.children[u.children.length-1].sourceSpan.end);var c=u.children[0];return c.length===o?u.children.shift():(c.sourceSpan=new s(c.sourceSpan.start.moveBy(o),c.sourceSpan.end),c.value=c.value.slice(o)),u},l=function(e){return"element"===e.type&&!e.nameSpan};return s.map((function(e){if(e.children&&e.children.some(l)){var t=[],r=!0,n=!1,i=void 0;try{for(var a,o=e.children[Symbol.iterator]();!(r=(a=o.next()).done);r=!0){var u=a.value;l(u)?Array.prototype.push.apply(t,u.children):t.push(u)}}catch(e){n=!0,i=e}finally{try{r||null==o.return||o.return()}finally{if(n)throw i}}return e.clone({children:t})}if("comment"===e.type){var s=Bc(e,c);if(s)return s}return e}))}(e,n,{recognizeSelfClosing:r,normalizeTagName:i,normalizeAttributeName:o,allowHtmComponentClosingTags:s,isTagNameCaseSensitive:l})},hasPragma:Nc,astFormat:"html",locStart:Oc,locEnd:Rc}}var Uc={parsers:{html:Ic({recognizeSelfClosing:!0,normalizeTagName:!0,normalizeAttributeName:!0,allowHtmComponentClosingTags:!0}),angular:Ic(),vue:Ic({recognizeSelfClosing:!0,isTagNameCaseSensitive:!0}),lwc:Ic()}},$c=Ro.mapAst,Vc=Ro.INLINE_NODE_WRAPPER_TYPES,Mc=Uc.parsers.html;function jc(e){var t=e.isMDX;return function(e){var r=Za().use(ji,Object.assign({footnotes:!0,commonmark:!0},t&&{blocks:[jo.BLOCKS_REGEX]})).use(Hc).use(ru).use(t?jo.esSyntax:zc).use(Xc).use(t?Gc:zc);return r.runSync(r.parse(e))}}function zc(e){return e}function Gc(){return function(e){return $c(e,(function(e,t,r){var n=l(r,1)[0];if("html"!==e.type||e.value.match(jo.COMMENT_REGEX)||-1!==Vc.indexOf(n.type))return e;var i=Mc.parse(e.value).children;return i.length<=1?Object.assign({},e,{type:"jsx"}):i.reduce((function(t,r){var n=r.sourceSpan,i=r.type,a=e.value.slice(n.start.offset,n.end.offset);return a&&t.push({type:"element"===i?"jsx":i,value:a,position:n}),t}),[])}))}}function Hc(){var e=this.Parser.prototype;function t(e,t){var r=lo(t);if(r.frontMatter)return e(r.frontMatter.raw)(r.frontMatter)}e.blockMethods=["frontMatter"].concat(e.blockMethods),e.blockTokenizers.frontMatter=t,t.onlyAtStart=!0}function Xc(){var e=this.Parser.prototype,t=e.inlineMethods;function r(e,t){var r=t.match(/^({%[\s\S]*?%}|{{[\s\S]*?}})/);if(r)return e(r[0])({type:"liquidNode",value:r[0]})}t.splice(t.indexOf("text"),0,"liquid"),e.inlineTokenizers.liquid=r,r.locator=function(e,t){return e.indexOf("{",t)}}var Wc={astFormat:"mdast",hasPragma:ho.hasPragma,locStart:function(e){return e.position.start.offset},locEnd:function(e){return e.position.end.offset},preprocess:function(e){return e.replace(/\n\s+$/,"\n")}},Qc=Object.assign({},Wc,{parse:jc({isMDX:!1})}),Yc={parsers:{remark:Qc,markdown:Qc,mdx:Object.assign({},Wc,{parse:jc({isMDX:!0})})}},Zc=Yc.parsers;e.default=Yc,e.parsers=Zc,Object.defineProperty(e,"__esModule",{value:!0})}));
diff --git a/node_modules/prettier/parser-postcss.js b/node_modules/prettier/parser-postcss.js
new file mode 100644
index 0000000..0faeae7
--- /dev/null
+++ b/node_modules/prettier/parser-postcss.js
@@ -0,0 +1,8 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.postcss=t():(e.prettierPlugins=e.prettierPlugins||{},e.prettierPlugins.postcss=t())}(new Function("return this")(),(function(){return function(e){var t={};function __webpack_require__(r){if(t[r])return t[r].exports;var n=t[r]={i:r,l:!1,exports:{}};return e[r].call(n.exports,n,n.exports,__webpack_require__),n.l=!0,n.exports}return __webpack_require__.m=e,__webpack_require__.c=t,__webpack_require__.d=function(e,t,r){__webpack_require__.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},__webpack_require__.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},__webpack_require__.t=function(e,t){if(1&t&&(e=__webpack_require__(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(__webpack_require__.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)__webpack_require__.d(r,n,function(t){return e[t]}.bind(null,n));return r},__webpack_require__.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return __webpack_require__.d(t,"a",t),t},__webpack_require__.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},__webpack_require__.p="",__webpack_require__(__webpack_require__.s=87)}([function(e,t,r){"use strict";t.__esModule=!0;t.TAG="tag",t.STRING="string",t.SELECTOR="selector",t.ROOT="root",t.PSEUDO="pseudo",t.NESTING="nesting",t.ID="id",t.COMMENT="comment",t.COMBINATOR="combinator",t.CLASS="class",t.ATTRIBUTE="attribute",t.UNIVERSAL="universal"},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _get(e,t,r){return(_get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=_getPrototypeOf(e)););return e}(e,t);if(n){var o=Object.getOwnPropertyDescriptor(n,t);return o.get?o.get.call(r):o.value}})(e,t,r||e)}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var n=function(e){function Container(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Container),(t=_possibleConstructorReturn(this,_getPrototypeOf(Container).call(this,e))).nodes||(t.nodes=[]),t}var t,r,n;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(Container,e),t=Container,(r=[{key:"push",value:function(e){return e.parent=this,this.nodes.push(e),this}},{key:"each",value:function(e){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;var t,r,n=this.lastEach;if(this.indexes[n]=0,this.nodes){for(;this.indexes[n]<this.nodes.length&&(t=this.indexes[n],!1!==(r=e(this.nodes[t],t)));)this.indexes[n]+=1;return delete this.indexes[n],r}}},{key:"walk",value:function(e){return this.each((function(t,r){var n=e(t,r);return!1!==n&&t.walk&&(n=t.walk(e)),n}))}},{key:"walkType",value:function(e,t){var r=this;if(!e||!t)throw new Error("Parameters {type} and {callback} are required.");return e=e.name&&e.prototype?e.name:e,this.walk((function(n,o){if(n.type===e)return t.call(r,n,o)}))}},{key:"append",value:function(e){return e.parent=this,this.nodes.push(e),this}},{key:"prepend",value:function(e){return e.parent=this,this.nodes.unshift(e),this}},{key:"cleanRaws",value:function(e){if(_get(_getPrototypeOf(Container.prototype),"cleanRaws",this).call(this,e),this.nodes){var t=!0,r=!1,n=void 0;try{for(var o,i=this.nodes[Symbol.iterator]();!(t=(o=i.next()).done);t=!0)o.value.cleanRaws(e)}catch(e){r=!0,n=e}finally{try{t||null==i.return||i.return()}finally{if(r)throw n}}}}},{key:"insertAfter",value:function(e,t){var r,n=this.index(e);for(var o in this.nodes.splice(n+1,0,t),this.indexes)n<=(r=this.indexes[o])&&(this.indexes[o]=r+this.nodes.length);return this}},{key:"insertBefore",value:function(e,t){var r,n=this.index(e);for(var o in this.nodes.splice(n,0,t),this.indexes)n<=(r=this.indexes[o])&&(this.indexes[o]=r+this.nodes.length);return this}},{key:"removeChild",value:function(e){var t;for(var r in e=this.index(e),this.nodes[e].parent=void 0,this.nodes.splice(e,1),this.indexes)(t=this.indexes[r])>=e&&(this.indexes[r]=t-1);return this}},{key:"removeAll",value:function(){var e=!0,t=!1,r=void 0;try{for(var n,o=this.nodes[Symbol.iterator]();!(e=(n=o.next()).done);e=!0)n.value.parent=void 0}catch(e){t=!0,r=e}finally{try{e||null==o.return||o.return()}finally{if(t)throw r}}return this.nodes=[],this}},{key:"every",value:function(e){return this.nodes.every(e)}},{key:"some",value:function(e){return this.nodes.some(e)}},{key:"index",value:function(e){return"number"==typeof e?e:this.nodes.indexOf(e)}},{key:"toString",value:function(){var e=this.nodes.map(String).join("");return this.value&&(e=this.value+e),this.raws.before&&(e=this.raws.before+e),this.raws.after&&(e+=this.raws.after),e}},{key:"first",get:function(){if(this.nodes)return this.nodes[0]}},{key:"last",get:function(){if(this.nodes)return this.nodes[this.nodes.length-1]}}])&&_defineProperties(t.prototype,r),n&&_defineProperties(t,n),Container}(r(3));n.registerWalker=function(e){var t="walk"+e.name;t.lastIndexOf("s")!==t.length-1&&(t+="s"),n.prototype[t]||(n.prototype[t]=function(t){return this.walkType(e,t)})},e.exports=n},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.singleQuote="'".charCodeAt(0),t.doubleQuote='"'.charCodeAt(0),t.backslash="\\".charCodeAt(0),t.backTick="`".charCodeAt(0),t.slash="/".charCodeAt(0),t.newline="\n".charCodeAt(0),t.space=" ".charCodeAt(0),t.feed="\f".charCodeAt(0),t.tab="\t".charCodeAt(0),t.carriageReturn="\r".charCodeAt(0),t.openedParenthesis="(".charCodeAt(0),t.closedParenthesis=")".charCodeAt(0),t.openedCurlyBracket="{".charCodeAt(0),t.closedCurlyBracket="}".charCodeAt(0),t.openSquareBracket="[".charCodeAt(0),t.closeSquareBracket="]".charCodeAt(0),t.semicolon=";".charCodeAt(0),t.asterisk="*".charCodeAt(0),t.colon=":".charCodeAt(0),t.comma=",".charCodeAt(0),t.dot=".".charCodeAt(0),t.atRule="@".charCodeAt(0),t.tilde="~".charCodeAt(0),t.hash="#".charCodeAt(0),t.atEndPattern=/[ \n\t\r\f\{\(\)'"\\;/\[\]#]/g,t.wordEndPattern=/[ \n\t\r\f\(\)\{\}:,;@!'"\\\]\[#]|\/(?=\*)/g,t.badBracketPattern=/.[\\\/\("'\n]/,t.pageSelectorPattern=/^@page[^\w-]+/,t.variableSpaceColonPattern=/^\s*:/,t.variablePattern=/^@[^:\(\{]+:/,t.hashColorPattern=/^#[0-9a-fA-F]{6}$|^#[0-9a-fA-F]{3}$/},function(e,t,r){"use strict";function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}e.exports=function(){function Node(e){for(var t in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Node),e=e||{},this.raws={before:"",after:""},e)this[t]=e[t]}var e,t,r;return e=Node,(t=[{key:"remove",value:function(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}},{key:"toString",value:function(){return[this.raws.before,String(this.value),this.raws.after].join("")}},{key:"clone",value:function(e){e=e||{};var t=function cloneNode(e,t){var r=new e.constructor;for(var n in e)if(e.hasOwnProperty(n)){var o=e[n],i=_typeof(o);"parent"===n&&"object"===i?t&&(r[n]=t):"source"===n?r[n]=o:o instanceof Array?r[n]=o.map((function(e){return cloneNode(e,r)})):"before"!==n&&"after"!==n&&"between"!==n&&"semicolon"!==n&&("object"===i&&null!==o&&(o=cloneNode(o)),r[n]=o)}return r}(this);for(var r in e)t[r]=e[r];return t}},{key:"cloneBefore",value:function(e){e=e||{};var t=this.clone(e);return this.parent.insertBefore(this,t),t}},{key:"cloneAfter",value:function(e){e=e||{};var t=this.clone(e);return this.parent.insertAfter(this,t),t}},{key:"replaceWith",value:function(){var e=Array.prototype.slice.call(arguments);if(this.parent){var t=!0,r=!1,n=void 0;try{for(var o,i=e[Symbol.iterator]();!(t=(o=i.next()).done);t=!0){var s=o.value;this.parent.insertBefore(this,s)}}catch(e){r=!0,n=e}finally{try{t||null==i.return||i.return()}finally{if(r)throw n}}this.remove()}return this}},{key:"moveTo",value:function(e){return this.cleanRaws(this.root()===e.root()),this.remove(),e.append(this),this}},{key:"moveBefore",value:function(e){return this.cleanRaws(this.root()===e.root()),this.remove(),e.parent.insertBefore(e,this),this}},{key:"moveAfter",value:function(e){return this.cleanRaws(this.root()===e.root()),this.remove(),e.parent.insertAfter(e,this),this}},{key:"next",value:function(){var e=this.parent.index(this);return this.parent.nodes[e+1]}},{key:"prev",value:function(){var e=this.parent.index(this);return this.parent.nodes[e-1]}},{key:"toJSON",value:function(){var e={};for(var t in this)if(this.hasOwnProperty(t)&&"parent"!==t){var r=this[t];r instanceof Array?e[t]=r.map((function(e){return"object"===_typeof(e)&&e.toJSON?e.toJSON():e})):"object"===_typeof(r)&&r.toJSON?e[t]=r.toJSON():e[t]=r}return e}},{key:"root",value:function(){for(var e=this;e.parent;)e=e.parent;return e}},{key:"cleanRaws",value:function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}},{key:"positionInside",value:function(e){for(var t=this.toString(),r=this.source.start.column,n=this.source.start.line,o=0;o<e;o++)"\n"===t[o]?(r=1,n+=1):r+=1;return{line:n,column:r}}},{key:"positionBy",value:function(e){var t=this.source.start;if(e.index)t=this.positionInside(e.index);else if(e.word){var r=this.toString().indexOf(e.word);-1!==r&&(t=this.positionInside(r))}return t}}])&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Node}()},function(e,t,r){"use strict";t.__esModule=!0,t.default=function(e){if(n[e])return;n[e]=!0,"undefined"!=typeof console&&console.warn&&console.warn(e)};var n={};e.exports=t.default},function(e,t,r){"use strict";function _typeof2(e){return(_typeof2="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n="function"==typeof Symbol&&"symbol"===_typeof2(Symbol.iterator)?function(e){return _typeof2(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":_typeof2(e)};var o=function cloneNode(e,t){if("object"!==(void 0===e?"undefined":n(e)))return e;var r=new e.constructor;for(var o in e)if(e.hasOwnProperty(o)){var i=e[o],s=void 0===i?"undefined":n(i);"parent"===o&&"object"===s?t&&(r[o]=t):i instanceof Array?r[o]=i.map((function(e){return cloneNode(e,r)})):r[o]=cloneNode(i,r)}return r},i=function(){function _class(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(var t in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,_class),e)this[t]=e[t];var r=e.spaces,n=(r=void 0===r?{}:r).before,o=void 0===n?"":n,i=r.after,s=void 0===i?"":i;this.spaces={before:o,after:s}}return _class.prototype.remove=function(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this},_class.prototype.replaceWith=function(){if(this.parent){for(var e in arguments)this.parent.insertBefore(this,arguments[e]);this.remove()}return this},_class.prototype.next=function(){return this.parent.at(this.parent.index(this)+1)},_class.prototype.prev=function(){return this.parent.at(this.parent.index(this)-1)},_class.prototype.clone=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=o(this);for(var r in e)t[r]=e[r];return t},_class.prototype.toString=function(){return[this.spaces.before,String(this.value),this.spaces.after].join("")},_class}();t.default=i,e.exports=t.default},function(e,t,r){(function(e){function normalizeArray(e,t){for(var r=0,n=e.length-1;n>=0;n--){var o=e[n];"."===o?e.splice(n,1):".."===o?(e.splice(n,1),r++):r&&(e.splice(n,1),r--)}if(t)for(;r--;r)e.unshift("..");return e}function filter(e,t){if(e.filter)return e.filter(t);for(var r=[],n=0;n<e.length;n++)t(e[n],n,e)&&r.push(e[n]);return r}t.resolve=function(){for(var t="",r=!1,n=arguments.length-1;n>=-1&&!r;n--){var o=n>=0?arguments[n]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(t=o+"/"+t,r="/"===o.charAt(0))}return(r?"/":"")+(t=normalizeArray(filter(t.split("/"),(function(e){return!!e})),!r).join("/"))||"."},t.normalize=function(e){var n=t.isAbsolute(e),o="/"===r(e,-1);return(e=normalizeArray(filter(e.split("/"),(function(e){return!!e})),!n).join("/"))||n||(e="."),e&&o&&(e+="/"),(n?"/":"")+e},t.isAbsolute=function(e){return"/"===e.charAt(0)},t.join=function(){var e=Array.prototype.slice.call(arguments,0);return t.normalize(filter(e,(function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e})).join("/"))},t.relative=function(e,r){function trim(e){for(var t=0;t<e.length&&""===e[t];t++);for(var r=e.length-1;r>=0&&""===e[r];r--);return t>r?[]:e.slice(t,r-t+1)}e=t.resolve(e).substr(1),r=t.resolve(r).substr(1);for(var n=trim(e.split("/")),o=trim(r.split("/")),i=Math.min(n.length,o.length),s=i,u=0;u<i;u++)if(n[u]!==o[u]){s=u;break}var a=[];for(u=s;u<n.length;u++)a.push("..");return(a=a.concat(o.slice(s))).join("/")},t.sep="/",t.delimiter=":",t.dirname=function(e){if("string"!=typeof e&&(e+=""),0===e.length)return".";for(var t=e.charCodeAt(0),r=47===t,n=-1,o=!0,i=e.length-1;i>=1;--i)if(47===(t=e.charCodeAt(i))){if(!o){n=i;break}}else o=!1;return-1===n?r?"/":".":r&&1===n?"/":e.slice(0,n)},t.basename=function(e,t){var r=function(e){"string"!=typeof e&&(e+="");var t,r=0,n=-1,o=!0;for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!o){r=t+1;break}}else-1===n&&(o=!1,n=t+1);return-1===n?"":e.slice(r,n)}(e);return t&&r.substr(-1*t.length)===t&&(r=r.substr(0,r.length-t.length)),r},t.extname=function(e){"string"!=typeof e&&(e+="");for(var t=-1,r=0,n=-1,o=!0,i=0,s=e.length-1;s>=0;--s){var u=e.charCodeAt(s);if(47!==u)-1===n&&(o=!1,n=s+1),46===u?-1===t?t=s:1!==i&&(i=1):-1!==t&&(i=-1);else if(!o){r=s+1;break}}return-1===t||-1===n||0===i||1===i&&t===n-1&&t===r+1?"":e.slice(t,n)};var r="b"==="ab".substr(-1)?function(e,t,r){return e.substr(t,r)}:function(e,t,r){return t<0&&(t=e.length+t),e.substr(t,r)}}).call(this,r(12))},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n,o=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),i=r(5);var s=function(e){function Namespace(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Namespace),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Namespace,e),Namespace.prototype.toString=function(){return[this.spaces.before,this.ns,String(this.value),this.spaces.after].join("")},o(Namespace,[{key:"ns",get:function(){var e=this.namespace;return e?("string"==typeof e?e:"")+"|":""}}]),Namespace}(((n=i)&&n.__esModule?n:{default:n}).default);t.default=s,e.exports=t.default},function(e,t){t.getArg=function(e,t,r){if(t in e)return e[t];if(3===arguments.length)return r;throw new Error('"'+t+'" is a required argument.')};var r=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,n=/^data:.+\,.+$/;function urlParse(e){var t=e.match(r);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}function urlGenerate(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}function normalize(e){var r=e,n=urlParse(e);if(n){if(!n.path)return e;r=n.path}for(var o,i=t.isAbsolute(r),s=r.split(/\/+/),u=0,a=s.length-1;a>=0;a--)"."===(o=s[a])?s.splice(a,1):".."===o?u++:u>0&&(""===o?(s.splice(a+1,u),u=0):(s.splice(a,2),u--));return""===(r=s.join("/"))&&(r=i?"/":"."),n?(n.path=r,urlGenerate(n)):r}function join(e,t){""===e&&(e="."),""===t&&(t=".");var r=urlParse(t),o=urlParse(e);if(o&&(e=o.path||"/"),r&&!r.scheme)return o&&(r.scheme=o.scheme),urlGenerate(r);if(r||t.match(n))return t;if(o&&!o.host&&!o.path)return o.host=t,urlGenerate(o);var i="/"===t.charAt(0)?t:normalize(e.replace(/\/+$/,"")+"/"+t);return o?(o.path=i,urlGenerate(o)):i}t.urlParse=urlParse,t.urlGenerate=urlGenerate,t.normalize=normalize,t.join=join,t.isAbsolute=function(e){return"/"===e.charAt(0)||r.test(e)},t.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==t.indexOf(e+"/");){var n=e.lastIndexOf("/");if(n<0)return t;if((e=e.slice(0,n)).match(/^([^\/]+:\/)?\/*$/))return t;++r}return Array(r+1).join("../")+t.substr(e.length+1)};var o=!("__proto__"in Object.create(null));function identity(e){return e}function isProtoString(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var r=t-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function strcmp(e,t){return e===t?0:null===e?1:null===t?-1:e>t?1:-1}t.toSetString=o?identity:function(e){return isProtoString(e)?"$"+e:e},t.fromSetString=o?identity:function(e){return isProtoString(e)?e.slice(1):e},t.compareByOriginalPositions=function(e,t,r){var n=strcmp(e.source,t.source);return 0!==n?n:0!==(n=e.originalLine-t.originalLine)?n:0!==(n=e.originalColumn-t.originalColumn)||r?n:0!==(n=e.generatedColumn-t.generatedColumn)?n:0!==(n=e.generatedLine-t.generatedLine)?n:strcmp(e.name,t.name)},t.compareByGeneratedPositionsDeflated=function(e,t,r){var n=e.generatedLine-t.generatedLine;return 0!==n?n:0!==(n=e.generatedColumn-t.generatedColumn)||r?n:0!==(n=strcmp(e.source,t.source))?n:0!==(n=e.originalLine-t.originalLine)?n:0!==(n=e.originalColumn-t.originalColumn)?n:strcmp(e.name,t.name)},t.compareByGeneratedPositionsInflated=function(e,t){var r=e.generatedLine-t.generatedLine;return 0!==r?r:0!==(r=e.generatedColumn-t.generatedColumn)?r:0!==(r=strcmp(e.source,t.source))?r:0!==(r=e.originalLine-t.originalLine)?r:0!==(r=e.originalColumn-t.originalColumn)?r:strcmp(e.name,t.name)},t.parseSourceMapInput=function(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))},t.computeSourceURL=function(e,t,r){if(t=t||"",e&&("/"!==e[e.length-1]&&"/"!==t[0]&&(e+="/"),t=e+t),r){var n=urlParse(r);if(!n)throw new Error("sourceMapURL could not be parsed");if(n.path){var o=n.path.lastIndexOf("/");o>=0&&(n.path=n.path.substring(0,o+1))}t=join(urlGenerate(n),t)}return normalize(t)}},function(e,t){t.getArg=function(e,t,r){if(t in e)return e[t];if(3===arguments.length)return r;throw new Error('"'+t+'" is a required argument.')};var r=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,n=/^data:.+\,.+$/;function urlParse(e){var t=e.match(r);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}function urlGenerate(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}function normalize(e){var r=e,n=urlParse(e);if(n){if(!n.path)return e;r=n.path}for(var o,i=t.isAbsolute(r),s=r.split(/\/+/),u=0,a=s.length-1;a>=0;a--)"."===(o=s[a])?s.splice(a,1):".."===o?u++:u>0&&(""===o?(s.splice(a+1,u),u=0):(s.splice(a,2),u--));return""===(r=s.join("/"))&&(r=i?"/":"."),n?(n.path=r,urlGenerate(n)):r}t.urlParse=urlParse,t.urlGenerate=urlGenerate,t.normalize=normalize,t.join=function(e,t){""===e&&(e="."),""===t&&(t=".");var r=urlParse(t),o=urlParse(e);if(o&&(e=o.path||"/"),r&&!r.scheme)return o&&(r.scheme=o.scheme),urlGenerate(r);if(r||t.match(n))return t;if(o&&!o.host&&!o.path)return o.host=t,urlGenerate(o);var i="/"===t.charAt(0)?t:normalize(e.replace(/\/+$/,"")+"/"+t);return o?(o.path=i,urlGenerate(o)):i},t.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(r)},t.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==t.indexOf(e+"/");){var n=e.lastIndexOf("/");if(n<0)return t;if((e=e.slice(0,n)).match(/^([^\/]+:\/)?\/*$/))return t;++r}return Array(r+1).join("../")+t.substr(e.length+1)};var o=!("__proto__"in Object.create(null));function identity(e){return e}function isProtoString(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var r=t-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function strcmp(e,t){return e===t?0:e>t?1:-1}t.toSetString=o?identity:function(e){return isProtoString(e)?"$"+e:e},t.fromSetString=o?identity:function(e){return isProtoString(e)?e.slice(1):e},t.compareByOriginalPositions=function(e,t,r){var n=e.source-t.source;return 0!==n?n:0!==(n=e.originalLine-t.originalLine)?n:0!==(n=e.originalColumn-t.originalColumn)||r?n:0!==(n=e.generatedColumn-t.generatedColumn)?n:0!==(n=e.generatedLine-t.generatedLine)?n:e.name-t.name},t.compareByGeneratedPositionsDeflated=function(e,t,r){var n=e.generatedLine-t.generatedLine;return 0!==n?n:0!==(n=e.generatedColumn-t.generatedColumn)||r?n:0!==(n=e.source-t.source)?n:0!==(n=e.originalLine-t.originalLine)?n:0!==(n=e.originalColumn-t.originalColumn)?n:e.name-t.name},t.compareByGeneratedPositionsInflated=function(e,t){var r=e.generatedLine-t.generatedLine;return 0!==r?r:0!==(r=e.generatedColumn-t.generatedColumn)?r:0!==(r=strcmp(e.source,t.source))?r:0!==(r=e.originalLine-t.originalLine)?r:0!==(r=e.originalColumn-t.originalColumn)?r:strcmp(e.name,t.name)}},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),o=_interopRequireDefault(r(24)),i=_interopRequireDefault(r(4)),s=_interopRequireDefault(r(162));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var u=function(e){function Rule(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Rule);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type="rule",r.nodes||(r.nodes=[]),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Rule,e),n(Rule,[{key:"selectors",get:function(){return s.default.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}},{key:"_selector",get:function(){return(0,i.default)("Rule#_selector is deprecated. Use Rule#raws.selector"),this.raws.selector},set:function(e){(0,i.default)("Rule#_selector is deprecated. Use Rule#raws.selector"),this.raws.selector=e}}]),Rule}(o.default);t.default=u,e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){throw e.input.error("Unclosed "+t,e.line,e.pos-e.offset)},e.exports=t.default},function(e,t){var r,n,o=e.exports={};function defaultSetTimout(){throw new Error("setTimeout has not been defined")}function defaultClearTimeout(){throw new Error("clearTimeout has not been defined")}function runTimeout(e){if(r===setTimeout)return setTimeout(e,0);if((r===defaultSetTimout||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(e){r=defaultSetTimout}try{n="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(e){n=defaultClearTimeout}}();var i,s=[],u=!1,a=-1;function cleanUpNextTick(){u&&i&&(u=!1,i.length?s=i.concat(s):a=-1,s.length&&drainQueue())}function drainQueue(){if(!u){var e=runTimeout(cleanUpNextTick);u=!0;for(var t=s.length;t;){for(i=s,s=[];++a<t;)i&&i[a].run();a=-1,t=s.length}i=null,u=!1,function(e){if(n===clearTimeout)return clearTimeout(e);if((n===defaultClearTimeout||!n)&&clearTimeout)return n=clearTimeout,clearTimeout(e);try{n(e)}catch(t){try{return n.call(null,e)}catch(t){return n.call(this,e)}}}(e)}}function Item(e,t){this.fun=e,this.array=t}function noop(){}o.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];s.push(new Item(e,t)),1!==s.length||u||runTimeout(drainQueue)},Item.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=noop,o.addListener=noop,o.once=noop,o.off=noop,o.removeListener=noop,o.removeAllListeners=noop,o.emit=noop,o.prependListener=noop,o.prependOnceListener=noop,o.listeners=function(e){return[]},o.binding=function(e){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(e){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n=_interopRequireDefault(r(67)),o=_interopRequireDefault(r(18));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var i=function(e){var t,i;function Container(){return e.apply(this,arguments)||this}i=e,(t=Container).prototype=Object.create(i.prototype),t.prototype.constructor=t,t.__proto__=i;var s,u,a,c=Container.prototype;return c.push=function(e){return e.parent=this,this.nodes.push(e),this},c.each=function(e){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;var t=this.lastEach;if(this.indexes[t]=0,this.nodes){for(var r,n;this.indexes[t]<this.nodes.length&&(r=this.indexes[t],!1!==(n=e(this.nodes[r],r)));)this.indexes[t]+=1;return delete this.indexes[t],n}},c.walk=function(e){return this.each((function(t,r){var n;try{n=e(t,r)}catch(e){if(e.postcssNode=t,e.stack&&t.source&&/\n\s{4}at /.test(e.stack)){var o=t.source;e.stack=e.stack.replace(/\n\s{4}at /,"$&"+o.input.from+":"+o.start.line+":"+o.start.column+"$&")}throw e}return!1!==n&&t.walk&&(n=t.walk(e)),n}))},c.walkDecls=function(e,t){return t?e instanceof RegExp?this.walk((function(r,n){if("decl"===r.type&&e.test(r.prop))return t(r,n)})):this.walk((function(r,n){if("decl"===r.type&&r.prop===e)return t(r,n)})):(t=e,this.walk((function(e,r){if("decl"===e.type)return t(e,r)})))},c.walkRules=function(e,t){return t?e instanceof RegExp?this.walk((function(r,n){if("rule"===r.type&&e.test(r.selector))return t(r,n)})):this.walk((function(r,n){if("rule"===r.type&&r.selector===e)return t(r,n)})):(t=e,this.walk((function(e,r){if("rule"===e.type)return t(e,r)})))},c.walkAtRules=function(e,t){return t?e instanceof RegExp?this.walk((function(r,n){if("atrule"===r.type&&e.test(r.name))return t(r,n)})):this.walk((function(r,n){if("atrule"===r.type&&r.name===e)return t(r,n)})):(t=e,this.walk((function(e,r){if("atrule"===e.type)return t(e,r)})))},c.walkComments=function(e){return this.walk((function(t,r){if("comment"===t.type)return e(t,r)}))},c.append=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];for(var n=0;n<t.length;n++){var o=t[n],i=this.normalize(o,this.last),s=i,u=Array.isArray(s),a=0;for(s=u?s:s[Symbol.iterator]();;){var c;if(u){if(a>=s.length)break;c=s[a++]}else{if((a=s.next()).done)break;c=a.value}var l=c;this.nodes.push(l)}}return this},c.prepend=function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];var n=t=t.reverse(),o=Array.isArray(n),i=0;for(n=o?n:n[Symbol.iterator]();;){var s;if(o){if(i>=n.length)break;s=n[i++]}else{if((i=n.next()).done)break;s=i.value}var u=s,a=this.normalize(u,this.first,"prepend").reverse(),c=a,l=Array.isArray(c),f=0;for(c=l?c:c[Symbol.iterator]();;){var p;if(l){if(f>=c.length)break;p=c[f++]}else{if((f=c.next()).done)break;p=f.value}var h=p;this.nodes.unshift(h)}for(var d in this.indexes)this.indexes[d]=this.indexes[d]+a.length}return this},c.cleanRaws=function(t){if(e.prototype.cleanRaws.call(this,t),this.nodes){var r=this.nodes,n=Array.isArray(r),o=0;for(r=n?r:r[Symbol.iterator]();;){var i;if(n){if(o>=r.length)break;i=r[o++]}else{if((o=r.next()).done)break;i=o.value}i.cleanRaws(t)}}},c.insertBefore=function(e,t){var r,n=0===(e=this.index(e))&&"prepend",o=this.normalize(t,this.nodes[e],n).reverse(),i=o,s=Array.isArray(i),u=0;for(i=s?i:i[Symbol.iterator]();;){var a;if(s){if(u>=i.length)break;a=i[u++]}else{if((u=i.next()).done)break;a=u.value}var c=a;this.nodes.splice(e,0,c)}for(var l in this.indexes)e<=(r=this.indexes[l])&&(this.indexes[l]=r+o.length);return this},c.insertAfter=function(e,t){e=this.index(e);var r,n=this.normalize(t,this.nodes[e]).reverse(),o=n,i=Array.isArray(o),s=0;for(o=i?o:o[Symbol.iterator]();;){var u;if(i){if(s>=o.length)break;u=o[s++]}else{if((s=o.next()).done)break;u=s.value}var a=u;this.nodes.splice(e+1,0,a)}for(var c in this.indexes)e<(r=this.indexes[c])&&(this.indexes[c]=r+n.length);return this},c.removeChild=function(e){var t;for(var r in e=this.index(e),this.nodes[e].parent=void 0,this.nodes.splice(e,1),this.indexes)(t=this.indexes[r])>=e&&(this.indexes[r]=t-1);return this},c.removeAll=function(){var e=this.nodes,t=Array.isArray(e),r=0;for(e=t?e:e[Symbol.iterator]();;){var n;if(t){if(r>=e.length)break;n=e[r++]}else{if((r=e.next()).done)break;n=r.value}n.parent=void 0}return this.nodes=[],this},c.replaceValues=function(e,t,r){return r||(r=t,t={}),this.walkDecls((function(n){t.props&&-1===t.props.indexOf(n.prop)||t.fast&&-1===n.value.indexOf(t.fast)||(n.value=n.value.replace(e,r))})),this},c.every=function(e){return this.nodes.every(e)},c.some=function(e){return this.nodes.some(e)},c.index=function(e){return"number"==typeof e?e:this.nodes.indexOf(e)},c.normalize=function(e,t){var i=this;if("string"==typeof e)e=function cleanSource(e){return e.map((function(e){return e.nodes&&(e.nodes=cleanSource(e.nodes)),delete e.source,e}))}(r(69)(e).nodes);else if(Array.isArray(e)){var s=e=e.slice(0),u=Array.isArray(s),a=0;for(s=u?s:s[Symbol.iterator]();;){var c;if(u){if(a>=s.length)break;c=s[a++]}else{if((a=s.next()).done)break;c=a.value}var l=c;l.parent&&l.parent.removeChild(l,"ignore")}}else if("root"===e.type){var f=e=e.nodes.slice(0),p=Array.isArray(f),h=0;for(f=p?f:f[Symbol.iterator]();;){var d;if(p){if(h>=f.length)break;d=f[h++]}else{if((h=f.next()).done)break;d=h.value}var y=d;y.parent&&y.parent.removeChild(y,"ignore")}}else if(e.type)e=[e];else if(e.prop){if(void 0===e.value)throw new Error("Value field is missed in node creation");"string"!=typeof e.value&&(e.value=String(e.value)),e=[new n.default(e)]}else if(e.selector){e=[new(r(70))(e)]}else if(e.name){e=[new(r(68))(e)]}else{if(!e.text)throw new Error("Unknown node type in node creation");e=[new o.default(e)]}return e.map((function(e){return e.parent&&e.parent.removeChild(e),void 0===e.raws.before&&t&&void 0!==t.raws.before&&(e.raws.before=t.raws.before.replace(/[^\s]/g,"")),e.parent=i,e}))},s=Container,(u=[{key:"first",get:function(){if(this.nodes)return this.nodes[0]}},{key:"last",get:function(){if(this.nodes)return this.nodes[this.nodes.length-1]}}])&&_defineProperties(s.prototype,u),a&&_defineProperties(s,a),Container}(_interopRequireDefault(r(19)).default);t.default=i,e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){new i.default(t).stringify(e)};var n,o=r(163),i=(n=o)&&n.__esModule?n:{default:n};e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n,o=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),i=r(5),s=(n=i)&&n.__esModule?n:{default:n},u=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(r(0));var a=function(e){function Container(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Container);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.nodes||(r.nodes=[]),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Container,e),Container.prototype.append=function(e){return e.parent=this,this.nodes.push(e),this},Container.prototype.prepend=function(e){return e.parent=this,this.nodes.unshift(e),this},Container.prototype.at=function(e){return this.nodes[e]},Container.prototype.index=function(e){return"number"==typeof e?e:this.nodes.indexOf(e)},Container.prototype.removeChild=function(e){e=this.index(e),this.at(e).parent=void 0,this.nodes.splice(e,1);var t=void 0;for(var r in this.indexes)(t=this.indexes[r])>=e&&(this.indexes[r]=t-1);return this},Container.prototype.removeAll=function(){var e=this.nodes,t=Array.isArray(e),r=0;for(e=t?e:e[Symbol.iterator]();;){var n;if(t){if(r>=e.length)break;n=e[r++]}else{if((r=e.next()).done)break;n=r.value}n.parent=void 0}return this.nodes=[],this},Container.prototype.empty=function(){return this.removeAll()},Container.prototype.insertAfter=function(e,t){var r=this.index(e);this.nodes.splice(r+1,0,t);var n=void 0;for(var o in this.indexes)r<=(n=this.indexes[o])&&(this.indexes[o]=n+this.nodes.length);return this},Container.prototype.insertBefore=function(e,t){var r=this.index(e);this.nodes.splice(r,0,t);var n=void 0;for(var o in this.indexes)r<=(n=this.indexes[o])&&(this.indexes[o]=n+this.nodes.length);return this},Container.prototype.each=function(e){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach++;var t=this.lastEach;if(this.indexes[t]=0,this.length){for(var r=void 0,n=void 0;this.indexes[t]<this.length&&(r=this.indexes[t],!1!==(n=e(this.at(r),r)));)this.indexes[t]+=1;return delete this.indexes[t],!1!==n&&void 0}},Container.prototype.walk=function(e){return this.each((function(t,r){var n=e(t,r);if(!1!==n&&t.length&&(n=t.walk(e)),!1===n)return!1}))},Container.prototype.walkAttributes=function(e){var t=this;return this.walk((function(r){if(r.type===u.ATTRIBUTE)return e.call(t,r)}))},Container.prototype.walkClasses=function(e){var t=this;return this.walk((function(r){if(r.type===u.CLASS)return e.call(t,r)}))},Container.prototype.walkCombinators=function(e){var t=this;return this.walk((function(r){if(r.type===u.COMBINATOR)return e.call(t,r)}))},Container.prototype.walkComments=function(e){var t=this;return this.walk((function(r){if(r.type===u.COMMENT)return e.call(t,r)}))},Container.prototype.walkIds=function(e){var t=this;return this.walk((function(r){if(r.type===u.ID)return e.call(t,r)}))},Container.prototype.walkNesting=function(e){var t=this;return this.walk((function(r){if(r.type===u.NESTING)return e.call(t,r)}))},Container.prototype.walkPseudos=function(e){var t=this;return this.walk((function(r){if(r.type===u.PSEUDO)return e.call(t,r)}))},Container.prototype.walkTags=function(e){var t=this;return this.walk((function(r){if(r.type===u.TAG)return e.call(t,r)}))},Container.prototype.walkUniversals=function(e){var t=this;return this.walk((function(r){if(r.type===u.UNIVERSAL)return e.call(t,r)}))},Container.prototype.split=function(e){var t=this,r=[];return this.reduce((function(n,o,i){var s=e.call(t,o);return r.push(o),s?(n.push(r),r=[]):i===t.length-1&&n.push(r),n}),[])},Container.prototype.map=function(e){return this.nodes.map(e)},Container.prototype.reduce=function(e,t){return this.nodes.reduce(e,t)},Container.prototype.every=function(e){return this.nodes.every(e)},Container.prototype.some=function(e){return this.nodes.some(e)},Container.prototype.filter=function(e){return this.nodes.filter(e)},Container.prototype.sort=function(e){return this.nodes.sort(e)},Container.prototype.toString=function(){return this.map(String).join("")},o(Container,[{key:"first",get:function(){return this.at(0)}},{key:"last",get:function(){return this.at(this.length-1)}},{key:"length",get:function(){return this.nodes.length}}]),Container}(s.default);t.default=a,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n={colon:": ",indent:" ",beforeDecl:"\n",beforeRule:"\n",beforeOpen:" ",beforeClose:"\n",beforeComment:"\n",after:"\n",emptyBody:"",commentLeft:" ",commentRight:" "};var o=function(){function Stringifier(e){this.builder=e}var e=Stringifier.prototype;return e.stringify=function(e,t){this[e.type](e,t)},e.root=function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)},e.comment=function(e){var t=this.raw(e,"left","commentLeft"),r=this.raw(e,"right","commentRight");this.builder("/*"+t+e.text+r+"*/",e)},e.decl=function(e,t){var r=this.raw(e,"between","colon"),n=e.prop+r+this.rawValue(e,"value");e.important&&(n+=e.raws.important||" !important"),t&&(n+=";"),this.builder(n,e)},e.rule=function(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(e.raws.ownSemicolon,e,"end")},e.atrule=function(e,t){var r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{var o=(e.raws.between||"")+(t?";":"");this.builder(r+n+o,e)}},e.body=function(e){for(var t=e.nodes.length-1;t>0&&"comment"===e.nodes[t].type;)t-=1;for(var r=this.raw(e,"semicolon"),n=0;n<e.nodes.length;n++){var o=e.nodes[n],i=this.raw(o,"before");i&&this.builder(i),this.stringify(o,t!==n||r)}},e.block=function(e,t){var r,n=this.raw(e,"between","beforeOpen");this.builder(t+n+"{",e,"start"),e.nodes&&e.nodes.length?(this.body(e),r=this.raw(e,"after")):r=this.raw(e,"after","emptyBody"),r&&this.builder(r),this.builder("}",e,"end")},e.raw=function(e,t,r){var o;if(r||(r=t),t&&void 0!==(o=e.raws[t]))return o;var i=e.parent;if("before"===r&&(!i||"root"===i.type&&i.first===e))return"";if(!i)return n[r];var s=e.root();if(s.rawCache||(s.rawCache={}),void 0!==s.rawCache[r])return s.rawCache[r];if("before"===r||"after"===r)return this.beforeAfter(e,r);var u,a="raw"+((u=r)[0].toUpperCase()+u.slice(1));return this[a]?o=this[a](s,e):s.walk((function(e){if(void 0!==(o=e.raws[t]))return!1})),void 0===o&&(o=n[r]),s.rawCache[r]=o,o},e.rawSemicolon=function(e){var t;return e.walk((function(e){if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&void 0!==(t=e.raws.semicolon))return!1})),t},e.rawEmptyBody=function(e){var t;return e.walk((function(e){if(e.nodes&&0===e.nodes.length&&void 0!==(t=e.raws.after))return!1})),t},e.rawIndent=function(e){return e.raws.indent?e.raws.indent:(e.walk((function(r){var n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&void 0!==r.raws.before){var o=r.raws.before.split("\n");return t=(t=o[o.length-1]).replace(/[^\s]/g,""),!1}})),t);var t},e.rawBeforeComment=function(e,t){var r;return e.walkComments((function(e){if(void 0!==e.raws.before)return-1!==(r=e.raws.before).indexOf("\n")&&(r=r.replace(/[^\n]+$/,"")),!1})),void 0===r?r=this.raw(t,null,"beforeDecl"):r&&(r=r.replace(/[^\s]/g,"")),r},e.rawBeforeDecl=function(e,t){var r;return e.walkDecls((function(e){if(void 0!==e.raws.before)return-1!==(r=e.raws.before).indexOf("\n")&&(r=r.replace(/[^\n]+$/,"")),!1})),void 0===r?r=this.raw(t,null,"beforeRule"):r&&(r=r.replace(/[^\s]/g,"")),r},e.rawBeforeRule=function(e){var t;return e.walk((function(r){if(r.nodes&&(r.parent!==e||e.first!==r)&&void 0!==r.raws.before)return-1!==(t=r.raws.before).indexOf("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/[^\s]/g,"")),t},e.rawBeforeClose=function(e){var t;return e.walk((function(e){if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return-1!==(t=e.raws.after).indexOf("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t&&(t=t.replace(/[^\s]/g,"")),t},e.rawBeforeOpen=function(e){var t;return e.walk((function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1})),t},e.rawColon=function(e){var t;return e.walkDecls((function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t},e.beforeAfter=function(e,t){var r;r="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var n=e.parent,o=0;n&&"root"!==n.type;)o+=1,n=n.parent;if(-1!==r.indexOf("\n")){var i=this.raw(e,null,"indent");if(i.length)for(var s=0;s<o;s++)r+=i}return r},e.rawValue=function(e,t){var r=e[t],n=e.raws[t];return n&&n.value===r?n.raw:r},Stringifier}();t.default=o,e.exports=t.default},function(e,t,r){"use strict";(function(e){
+/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
+ * @license MIT
+ */
+var n=r(121),o=r(122),i=r(123);function kMaxLength(){return Buffer.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function createBuffer(e,t){if(kMaxLength()<t)throw new RangeError("Invalid typed array length");return Buffer.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=Buffer.prototype:(null===e&&(e=new Buffer(t)),e.length=t),e}function Buffer(e,t,r){if(!(Buffer.TYPED_ARRAY_SUPPORT||this instanceof Buffer))return new Buffer(e,t,r);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return allocUnsafe(this,e)}return from(this,e,t,r)}function from(e,t,r,n){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,r,n){if(t.byteLength,r<0||t.byteLength<r)throw new RangeError("'offset' is out of bounds");if(t.byteLength<r+(n||0))throw new RangeError("'length' is out of bounds");t=void 0===r&&void 0===n?new Uint8Array(t):void 0===n?new Uint8Array(t,r):new Uint8Array(t,r,n);Buffer.TYPED_ARRAY_SUPPORT?(e=t).__proto__=Buffer.prototype:e=fromArrayLike(e,t);return e}(e,t,r,n):"string"==typeof t?function(e,t,r){"string"==typeof r&&""!==r||(r="utf8");if(!Buffer.isEncoding(r))throw new TypeError('"encoding" must be a valid string encoding');var n=0|byteLength(t,r),o=(e=createBuffer(e,n)).write(t,r);o!==n&&(e=e.slice(0,o));return e}(e,t,r):function(e,t){if(Buffer.isBuffer(t)){var r=0|checked(t.length);return 0===(e=createBuffer(e,r)).length?e:(t.copy(e,0,0,r),e)}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(n=t.length)!=n?createBuffer(e,0):fromArrayLike(e,t);if("Buffer"===t.type&&i(t.data))return fromArrayLike(e,t.data)}var n;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function assertSize(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function allocUnsafe(e,t){if(assertSize(t),e=createBuffer(e,t<0?0:0|checked(t)),!Buffer.TYPED_ARRAY_SUPPORT)for(var r=0;r<t;++r)e[r]=0;return e}function fromArrayLike(e,t){var r=t.length<0?0:0|checked(t.length);e=createBuffer(e,r);for(var n=0;n<r;n+=1)e[n]=255&t[n];return e}function checked(e){if(e>=kMaxLength())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+kMaxLength().toString(16)+" bytes");return 0|e}function byteLength(e,t){if(Buffer.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return utf8ToBytes(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return base64ToBytes(e).length;default:if(n)return utf8ToBytes(e).length;t=(""+t).toLowerCase(),n=!0}}function slowToString(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return hexSlice(this,t,r);case"utf8":case"utf-8":return utf8Slice(this,t,r);case"ascii":return asciiSlice(this,t,r);case"latin1":case"binary":return latin1Slice(this,t,r);case"base64":return base64Slice(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return utf16leSlice(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function swap(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function bidirectionalIndexOf(e,t,r,n,o){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(o)return-1;r=e.length-1}else if(r<0){if(!o)return-1;r=0}if("string"==typeof t&&(t=Buffer.from(t,n)),Buffer.isBuffer(t))return 0===t.length?-1:arrayIndexOf(e,t,r,n,o);if("number"==typeof t)return t&=255,Buffer.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?o?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):arrayIndexOf(e,[t],r,n,o);throw new TypeError("val must be string, number or Buffer")}function arrayIndexOf(e,t,r,n,o){var i,s=1,u=e.length,a=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;s=2,u/=2,a/=2,r/=2}function read(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(o){var c=-1;for(i=r;i<u;i++)if(read(e,i)===read(t,-1===c?0:i-c)){if(-1===c&&(c=i),i-c+1===a)return c*s}else-1!==c&&(i-=i-c),c=-1}else for(r+a>u&&(r=u-a),i=r;i>=0;i--){for(var l=!0,f=0;f<a;f++)if(read(e,i+f)!==read(t,f)){l=!1;break}if(l)return i}return-1}function hexWrite(e,t,r,n){r=Number(r)||0;var o=e.length-r;n?(n=Number(n))>o&&(n=o):n=o;var i=t.length;if(i%2!=0)throw new TypeError("Invalid hex string");n>i/2&&(n=i/2);for(var s=0;s<n;++s){var u=parseInt(t.substr(2*s,2),16);if(isNaN(u))return s;e[r+s]=u}return s}function utf8Write(e,t,r,n){return blitBuffer(utf8ToBytes(t,e.length-r),e,r,n)}function asciiWrite(e,t,r,n){return blitBuffer(function(e){for(var t=[],r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,n)}function latin1Write(e,t,r,n){return asciiWrite(e,t,r,n)}function base64Write(e,t,r,n){return blitBuffer(base64ToBytes(t),e,r,n)}function ucs2Write(e,t,r,n){return blitBuffer(function(e,t){for(var r,n,o,i=[],s=0;s<e.length&&!((t-=2)<0);++s)r=e.charCodeAt(s),n=r>>8,o=r%256,i.push(o),i.push(n);return i}(t,e.length-r),e,r,n)}function base64Slice(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function utf8Slice(e,t,r){r=Math.min(e.length,r);for(var n=[],o=t;o<r;){var i,u,a,c,l=e[o],f=null,p=l>239?4:l>223?3:l>191?2:1;if(o+p<=r)switch(p){case 1:l<128&&(f=l);break;case 2:128==(192&(i=e[o+1]))&&(c=(31&l)<<6|63&i)>127&&(f=c);break;case 3:i=e[o+1],u=e[o+2],128==(192&i)&&128==(192&u)&&(c=(15&l)<<12|(63&i)<<6|63&u)>2047&&(c<55296||c>57343)&&(f=c);break;case 4:i=e[o+1],u=e[o+2],a=e[o+3],128==(192&i)&&128==(192&u)&&128==(192&a)&&(c=(15&l)<<18|(63&i)<<12|(63&u)<<6|63&a)>65535&&c<1114112&&(f=c)}null===f?(f=65533,p=1):f>65535&&(f-=65536,n.push(f>>>10&1023|55296),f=56320|1023&f),n.push(f),o+=p}return function(e){var t=e.length;if(t<=s)return String.fromCharCode.apply(String,e);var r="",n=0;for(;n<t;)r+=String.fromCharCode.apply(String,e.slice(n,n+=s));return r}(n)}t.Buffer=Buffer,t.SlowBuffer=function(e){+e!=e&&(e=0);return Buffer.alloc(+e)},t.INSPECT_MAX_BYTES=50,Buffer.TYPED_ARRAY_SUPPORT=void 0!==e.TYPED_ARRAY_SUPPORT?e.TYPED_ARRAY_SUPPORT:function(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(e){return!1}}(),t.kMaxLength=kMaxLength(),Buffer.poolSize=8192,Buffer._augment=function(e){return e.__proto__=Buffer.prototype,e},Buffer.from=function(e,t,r){return from(null,e,t,r)},Buffer.TYPED_ARRAY_SUPPORT&&(Buffer.prototype.__proto__=Uint8Array.prototype,Buffer.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&Buffer[Symbol.species]===Buffer&&Object.defineProperty(Buffer,Symbol.species,{value:null,configurable:!0})),Buffer.alloc=function(e,t,r){return function(e,t,r,n){return assertSize(t),t<=0?createBuffer(e,t):void 0!==r?"string"==typeof n?createBuffer(e,t).fill(r,n):createBuffer(e,t).fill(r):createBuffer(e,t)}(null,e,t,r)},Buffer.allocUnsafe=function(e){return allocUnsafe(null,e)},Buffer.allocUnsafeSlow=function(e){return allocUnsafe(null,e)},Buffer.isBuffer=function(e){return!(null==e||!e._isBuffer)},Buffer.compare=function(e,t){if(!Buffer.isBuffer(e)||!Buffer.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var r=e.length,n=t.length,o=0,i=Math.min(r,n);o<i;++o)if(e[o]!==t[o]){r=e[o],n=t[o];break}return r<n?-1:n<r?1:0},Buffer.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Buffer.concat=function(e,t){if(!i(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return Buffer.alloc(0);var r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var n=Buffer.allocUnsafe(t),o=0;for(r=0;r<e.length;++r){var s=e[r];if(!Buffer.isBuffer(s))throw new TypeError('"list" argument must be an Array of Buffers');s.copy(n,o),o+=s.length}return n},Buffer.byteLength=byteLength,Buffer.prototype._isBuffer=!0,Buffer.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)swap(this,t,t+1);return this},Buffer.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)swap(this,t,t+3),swap(this,t+1,t+2);return this},Buffer.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)swap(this,t,t+7),swap(this,t+1,t+6),swap(this,t+2,t+5),swap(this,t+3,t+4);return this},Buffer.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?utf8Slice(this,0,e):slowToString.apply(this,arguments)},Buffer.prototype.equals=function(e){if(!Buffer.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===Buffer.compare(this,e)},Buffer.prototype.inspect=function(){var e="",r=t.INSPECT_MAX_BYTES;return this.length>0&&(e=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(e+=" ... ")),"<Buffer "+e+">"},Buffer.prototype.compare=function(e,t,r,n,o){if(!Buffer.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),t<0||r>e.length||n<0||o>this.length)throw new RangeError("out of range index");if(n>=o&&t>=r)return 0;if(n>=o)return-1;if(t>=r)return 1;if(this===e)return 0;for(var i=(o>>>=0)-(n>>>=0),s=(r>>>=0)-(t>>>=0),u=Math.min(i,s),a=this.slice(n,o),c=e.slice(t,r),l=0;l<u;++l)if(a[l]!==c[l]){i=a[l],s=c[l];break}return i<s?-1:s<i?1:0},Buffer.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},Buffer.prototype.indexOf=function(e,t,r){return bidirectionalIndexOf(this,e,t,r,!0)},Buffer.prototype.lastIndexOf=function(e,t,r){return bidirectionalIndexOf(this,e,t,r,!1)},Buffer.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(r)?(r|=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var o=this.length-t;if((void 0===r||r>o)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var i=!1;;)switch(n){case"hex":return hexWrite(this,e,t,r);case"utf8":case"utf-8":return utf8Write(this,e,t,r);case"ascii":return asciiWrite(this,e,t,r);case"latin1":case"binary":return latin1Write(this,e,t,r);case"base64":return base64Write(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return ucs2Write(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),i=!0}},Buffer.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var s=4096;function asciiSlice(e,t,r){var n="";r=Math.min(e.length,r);for(var o=t;o<r;++o)n+=String.fromCharCode(127&e[o]);return n}function latin1Slice(e,t,r){var n="";r=Math.min(e.length,r);for(var o=t;o<r;++o)n+=String.fromCharCode(e[o]);return n}function hexSlice(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var o="",i=t;i<r;++i)o+=toHex(e[i]);return o}function utf16leSlice(e,t,r){for(var n=e.slice(t,r),o="",i=0;i<n.length;i+=2)o+=String.fromCharCode(n[i]+256*n[i+1]);return o}function checkOffset(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function checkInt(e,t,r,n,o,i){if(!Buffer.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>o||t<i)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function objectWriteUInt16(e,t,r,n){t<0&&(t=65535+t+1);for(var o=0,i=Math.min(e.length-r,2);o<i;++o)e[r+o]=(t&255<<8*(n?o:1-o))>>>8*(n?o:1-o)}function objectWriteUInt32(e,t,r,n){t<0&&(t=4294967295+t+1);for(var o=0,i=Math.min(e.length-r,4);o<i;++o)e[r+o]=t>>>8*(n?o:3-o)&255}function checkIEEE754(e,t,r,n,o,i){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function writeFloat(e,t,r,n,i){return i||checkIEEE754(e,0,r,4),o.write(e,t,r,n,23,4),r+4}function writeDouble(e,t,r,n,i){return i||checkIEEE754(e,0,r,8),o.write(e,t,r,n,52,8),r+8}Buffer.prototype.slice=function(e,t){var r,n=this.length;if((e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t<e&&(t=e),Buffer.TYPED_ARRAY_SUPPORT)(r=this.subarray(e,t)).__proto__=Buffer.prototype;else{var o=t-e;r=new Buffer(o,void 0);for(var i=0;i<o;++i)r[i]=this[i+e]}return r},Buffer.prototype.readUIntLE=function(e,t,r){e|=0,t|=0,r||checkOffset(e,t,this.length);for(var n=this[e],o=1,i=0;++i<t&&(o*=256);)n+=this[e+i]*o;return n},Buffer.prototype.readUIntBE=function(e,t,r){e|=0,t|=0,r||checkOffset(e,t,this.length);for(var n=this[e+--t],o=1;t>0&&(o*=256);)n+=this[e+--t]*o;return n},Buffer.prototype.readUInt8=function(e,t){return t||checkOffset(e,1,this.length),this[e]},Buffer.prototype.readUInt16LE=function(e,t){return t||checkOffset(e,2,this.length),this[e]|this[e+1]<<8},Buffer.prototype.readUInt16BE=function(e,t){return t||checkOffset(e,2,this.length),this[e]<<8|this[e+1]},Buffer.prototype.readUInt32LE=function(e,t){return t||checkOffset(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Buffer.prototype.readUInt32BE=function(e,t){return t||checkOffset(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Buffer.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||checkOffset(e,t,this.length);for(var n=this[e],o=1,i=0;++i<t&&(o*=256);)n+=this[e+i]*o;return n>=(o*=128)&&(n-=Math.pow(2,8*t)),n},Buffer.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||checkOffset(e,t,this.length);for(var n=t,o=1,i=this[e+--n];n>0&&(o*=256);)i+=this[e+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},Buffer.prototype.readInt8=function(e,t){return t||checkOffset(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Buffer.prototype.readInt16LE=function(e,t){t||checkOffset(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt16BE=function(e,t){t||checkOffset(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},Buffer.prototype.readInt32LE=function(e,t){return t||checkOffset(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Buffer.prototype.readInt32BE=function(e,t){return t||checkOffset(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Buffer.prototype.readFloatLE=function(e,t){return t||checkOffset(e,4,this.length),o.read(this,e,!0,23,4)},Buffer.prototype.readFloatBE=function(e,t){return t||checkOffset(e,4,this.length),o.read(this,e,!1,23,4)},Buffer.prototype.readDoubleLE=function(e,t){return t||checkOffset(e,8,this.length),o.read(this,e,!0,52,8)},Buffer.prototype.readDoubleBE=function(e,t){return t||checkOffset(e,8,this.length),o.read(this,e,!1,52,8)},Buffer.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||checkInt(this,e,t,r,Math.pow(2,8*r)-1,0);var o=1,i=0;for(this[t]=255&e;++i<r&&(o*=256);)this[t+i]=e/o&255;return t+r},Buffer.prototype.writeUIntBE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||checkInt(this,e,t,r,Math.pow(2,8*r)-1,0);var o=r-1,i=1;for(this[t+o]=255&e;--o>=0&&(i*=256);)this[t+o]=e/i&255;return t+r},Buffer.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,1,255,0),Buffer.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},Buffer.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,2,65535,0),Buffer.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):objectWriteUInt16(this,e,t,!0),t+2},Buffer.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,2,65535,0),Buffer.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):objectWriteUInt16(this,e,t,!1),t+2},Buffer.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,4,4294967295,0),Buffer.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):objectWriteUInt32(this,e,t,!0),t+4},Buffer.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,4,4294967295,0),Buffer.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):objectWriteUInt32(this,e,t,!1),t+4},Buffer.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var o=Math.pow(2,8*r-1);checkInt(this,e,t,r,o-1,-o)}var i=0,s=1,u=0;for(this[t]=255&e;++i<r&&(s*=256);)e<0&&0===u&&0!==this[t+i-1]&&(u=1),this[t+i]=(e/s>>0)-u&255;return t+r},Buffer.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var o=Math.pow(2,8*r-1);checkInt(this,e,t,r,o-1,-o)}var i=r-1,s=1,u=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===u&&0!==this[t+i+1]&&(u=1),this[t+i]=(e/s>>0)-u&255;return t+r},Buffer.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,1,127,-128),Buffer.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},Buffer.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,2,32767,-32768),Buffer.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):objectWriteUInt16(this,e,t,!0),t+2},Buffer.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,2,32767,-32768),Buffer.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):objectWriteUInt16(this,e,t,!1),t+2},Buffer.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,4,2147483647,-2147483648),Buffer.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):objectWriteUInt32(this,e,t,!0),t+4},Buffer.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||checkInt(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),Buffer.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):objectWriteUInt32(this,e,t,!1),t+4},Buffer.prototype.writeFloatLE=function(e,t,r){return writeFloat(this,e,t,!0,r)},Buffer.prototype.writeFloatBE=function(e,t,r){return writeFloat(this,e,t,!1,r)},Buffer.prototype.writeDoubleLE=function(e,t,r){return writeDouble(this,e,t,!0,r)},Buffer.prototype.writeDoubleBE=function(e,t,r){return writeDouble(this,e,t,!1,r)},Buffer.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var o,i=n-r;if(this===e&&r<t&&t<n)for(o=i-1;o>=0;--o)e[o+t]=this[o+r];else if(i<1e3||!Buffer.TYPED_ARRAY_SUPPORT)for(o=0;o<i;++o)e[o+t]=this[o+r];else Uint8Array.prototype.set.call(e,this.subarray(r,r+i),t);return i},Buffer.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),1===e.length){var o=e.charCodeAt(0);o<256&&(e=o)}if(void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!Buffer.isEncoding(n))throw new TypeError("Unknown encoding: "+n)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;var i;if(t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i<r;++i)this[i]=e;else{var s=Buffer.isBuffer(e)?e:utf8ToBytes(new Buffer(e,n).toString()),u=s.length;for(i=0;i<r-t;++i)this[i+t]=s[i%u]}return this};var u=/[^+\/0-9A-Za-z-_]/g;function toHex(e){return e<16?"0"+e.toString(16):e.toString(16)}function utf8ToBytes(e,t){var r;t=t||1/0;for(var n=e.length,o=null,i=[],s=0;s<n;++s){if((r=e.charCodeAt(s))>55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(s+1===n){(t-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function base64ToBytes(e){return n.toByteArray(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(u,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function blitBuffer(e,t,r,n){for(var o=0;o<n&&!(o+r>=t.length||o>=e.length);++o)t[o+r]=e[o];return o}}).call(this,r(60))},function(e,t,r){"use strict";var n;t.__esModule=!0,t.default=void 0;var o=function(e){var t,r;function Comment(t){var r;return(r=e.call(this,t)||this).type="comment",r}return r=e,(t=Comment).prototype=Object.create(r.prototype),t.prototype.constructor=t,t.__proto__=r,Comment}(((n=r(19))&&n.__esModule?n:{default:n}).default);t.default=o,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0,t.default=void 0;var n=_interopRequireDefault(r(59)),o=_interopRequireDefault(r(16)),i=_interopRequireDefault(r(65));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var s=function(){function Node(e){for(var t in void 0===e&&(e={}),this.raws={},e)this[t]=e[t]}var e=Node.prototype;return e.error=function(e,t){if(void 0===t&&(t={}),this.source){var r=this.positionBy(t);return this.source.input.error(e,r.line,r.column,t)}return new n.default(e)},e.warn=function(e,t,r){var n={node:this};for(var o in r)n[o]=r[o];return e.warn(t,n)},e.remove=function(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this},e.toString=function(e){void 0===e&&(e=i.default),e.stringify&&(e=e.stringify);var t="";return e(this,(function(e){t+=e})),t},e.clone=function(e){void 0===e&&(e={});var t=function cloneNode(e,t){var r=new e.constructor;for(var n in e)if(e.hasOwnProperty(n)){var o=e[n],i=_typeof(o);"parent"===n&&"object"===i?t&&(r[n]=t):"source"===n?r[n]=o:o instanceof Array?r[n]=o.map((function(e){return cloneNode(e,r)})):("object"===i&&null!==o&&(o=cloneNode(o)),r[n]=o)}return r}(this);for(var r in e)t[r]=e[r];return t},e.cloneBefore=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertBefore(this,t),t},e.cloneAfter=function(e){void 0===e&&(e={});var t=this.clone(e);return this.parent.insertAfter(this,t),t},e.replaceWith=function(){if(this.parent){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];for(var n=0;n<t.length;n++){var o=t[n];this.parent.insertBefore(this,o)}this.remove()}return this},e.next=function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e+1]}},e.prev=function(){if(this.parent){var e=this.parent.index(this);return this.parent.nodes[e-1]}},e.before=function(e){return this.parent.insertBefore(this,e),this},e.after=function(e){return this.parent.insertAfter(this,e),this},e.toJSON=function(){var e={};for(var t in this)if(this.hasOwnProperty(t)&&"parent"!==t){var r=this[t];r instanceof Array?e[t]=r.map((function(e){return"object"===_typeof(e)&&e.toJSON?e.toJSON():e})):"object"===_typeof(r)&&r.toJSON?e[t]=r.toJSON():e[t]=r}return e},e.raw=function(e,t){return(new o.default).raw(this,e,t)},e.root=function(){for(var e=this;e.parent;)e=e.parent;return e},e.cleanRaws=function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between},e.positionInside=function(e){for(var t=this.toString(),r=this.source.start.column,n=this.source.start.line,o=0;o<e;o++)"\n"===t[o]?(r=1,n+=1):r+=1;return{line:n,column:r}},e.positionBy=function(e){var t=this.source.start;if(e.index)t=this.positionInside(e.index);else if(e.word){var r=this.toString().indexOf(e.word);-1!==r&&(t=this.positionInside(r))}return t},Node}();t.default=s,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),o=_interopRequireDefault(r(4));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var i=function(e){function Comment(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Comment);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type="comment",r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Comment,e),n(Comment,[{key:"left",get:function(){return(0,o.default)("Comment#left was deprecated. Use Comment#raws.left"),this.raws.left},set:function(e){(0,o.default)("Comment#left was deprecated. Use Comment#raws.left"),this.raws.left=e}},{key:"right",get:function(){return(0,o.default)("Comment#right was deprecated. Use Comment#raws.right"),this.raws.right},set:function(e){(0,o.default)("Comment#right was deprecated. Use Comment#raws.right"),this.raws.right=e}}]),Comment}(_interopRequireDefault(r(21)).default);t.default=i,e.exports=t.default},function(e,t,r){"use strict";function _typeof2(e){return(_typeof2="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),o="function"==typeof Symbol&&"symbol"===_typeof2(Symbol.iterator)?function(e){return _typeof2(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":_typeof2(e)},i=_interopRequireDefault(r(73)),s=_interopRequireDefault(r(23)),u=_interopRequireDefault(r(82)),a=_interopRequireDefault(r(4));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var c=function cloneNode(e,t){var r=new e.constructor;for(var n in e)if(e.hasOwnProperty(n)){var i=e[n],s=void 0===i?"undefined":o(i);"parent"===n&&"object"===s?t&&(r[n]=t):"source"===n?r[n]=i:i instanceof Array?r[n]=i.map((function(e){return cloneNode(e,r)})):"before"!==n&&"after"!==n&&"between"!==n&&"semicolon"!==n&&("object"===s&&null!==i&&(i=cloneNode(i)),r[n]=i)}return r},l=function(){function Node(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Node),this.raws={},"object"!==(void 0===e?"undefined":o(e))&&void 0!==e)throw new Error("PostCSS nodes constructor accepts object, not "+JSON.stringify(e));for(var t in e)this[t]=e[t]}return Node.prototype.error=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.source){var r=this.positionBy(t);return this.source.input.error(e,r.line,r.column,t)}return new i.default(e)},Node.prototype.warn=function(e,t,r){var n={node:this};for(var o in r)n[o]=r[o];return e.warn(t,n)},Node.prototype.remove=function(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this},Node.prototype.toString=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:u.default;e.stringify&&(e=e.stringify);var t="";return e(this,(function(e){t+=e})),t},Node.prototype.clone=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=c(this);for(var r in e)t[r]=e[r];return t},Node.prototype.cloneBefore=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.clone(e);return this.parent.insertBefore(this,t),t},Node.prototype.cloneAfter=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.clone(e);return this.parent.insertAfter(this,t),t},Node.prototype.replaceWith=function(){if(this.parent){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];var n=t,o=Array.isArray(n),i=0;for(n=o?n:n[Symbol.iterator]();;){var s;if(o){if(i>=n.length)break;s=n[i++]}else{if((i=n.next()).done)break;s=i.value}var u=s;this.parent.insertBefore(this,u)}this.remove()}return this},Node.prototype.moveTo=function(e){return this.cleanRaws(this.root()===e.root()),this.remove(),e.append(this),this},Node.prototype.moveBefore=function(e){return this.cleanRaws(this.root()===e.root()),this.remove(),e.parent.insertBefore(e,this),this},Node.prototype.moveAfter=function(e){return this.cleanRaws(this.root()===e.root()),this.remove(),e.parent.insertAfter(e,this),this},Node.prototype.next=function(){var e=this.parent.index(this);return this.parent.nodes[e+1]},Node.prototype.prev=function(){var e=this.parent.index(this);return this.parent.nodes[e-1]},Node.prototype.toJSON=function(){var e={};for(var t in this)if(this.hasOwnProperty(t)&&"parent"!==t){var r=this[t];r instanceof Array?e[t]=r.map((function(e){return"object"===(void 0===e?"undefined":o(e))&&e.toJSON?e.toJSON():e})):"object"===(void 0===r?"undefined":o(r))&&r.toJSON?e[t]=r.toJSON():e[t]=r}return e},Node.prototype.raw=function(e,t){return(new s.default).raw(this,e,t)},Node.prototype.root=function(){for(var e=this;e.parent;)e=e.parent;return e},Node.prototype.cleanRaws=function(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between},Node.prototype.positionInside=function(e){for(var t=this.toString(),r=this.source.start.column,n=this.source.start.line,o=0;o<e;o++)"\n"===t[o]?(r=1,n+=1):r+=1;return{line:n,column:r}},Node.prototype.positionBy=function(e){var t=this.source.start;if(e.index)t=this.positionInside(e.index);else if(e.word){var r=this.toString().indexOf(e.word);-1!==r&&(t=this.positionInside(r))}return t},Node.prototype.removeSelf=function(){return(0,a.default)("Node#removeSelf is deprecated. Use Node#remove."),this.remove()},Node.prototype.replace=function(e){return(0,a.default)("Node#replace is deprecated. Use Node#replaceWith"),this.replaceWith(e)},Node.prototype.style=function(e,t){return(0,a.default)("Node#style() is deprecated. Use Node#raw()"),this.raw(e,t)},Node.prototype.cleanStyles=function(e){return(0,a.default)("Node#cleanStyles() is deprecated. Use Node#cleanRaws()"),this.cleanRaws(e)},n(Node,[{key:"before",get:function(){return(0,a.default)("Node#before is deprecated. Use Node#raws.before"),this.raws.before},set:function(e){(0,a.default)("Node#before is deprecated. Use Node#raws.before"),this.raws.before=e}},{key:"between",get:function(){return(0,a.default)("Node#between is deprecated. Use Node#raws.between"),this.raws.between},set:function(e){(0,a.default)("Node#between is deprecated. Use Node#raws.between"),this.raws.between=e}}]),Node}();t.default=l,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0;var n=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),o=_interopRequireDefault(r(73)),i=_interopRequireDefault(r(149)),s=_interopRequireDefault(r(6));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var u=0,a=function(){function Input(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Input),this.css=e.toString(),"\ufeff"!==this.css[0]&&"￾"!==this.css[0]||(this.css=this.css.slice(1)),t.from&&(/^\w+:\/\//.test(t.from)?this.file=t.from:this.file=s.default.resolve(t.from));var r=new i.default(this.css,t);if(r.text){this.map=r;var n=r.consumer().file;!this.file&&n&&(this.file=this.mapResolve(n))}this.file||(u+=1,this.id="<input css "+u+">"),this.map&&(this.map.file=this.from)}return Input.prototype.error=function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=void 0,s=this.origin(t,r);return(i=s?new o.default(e,s.line,s.column,s.source,s.file,n.plugin):new o.default(e,t,r,this.css,this.file,n.plugin)).input={line:t,column:r,source:this.css},this.file&&(i.input.file=this.file),i},Input.prototype.origin=function(e,t){if(!this.map)return!1;var r=this.map.consumer(),n=r.originalPositionFor({line:e,column:t});if(!n.source)return!1;var o={file:this.mapResolve(n.source),line:n.line,column:n.column},i=r.sourceContentFor(n.source);return i&&(o.source=i),o},Input.prototype.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:s.default.resolve(this.map.consumer().sourceRoot||".",e)},n(Input,[{key:"from",get:function(){return this.file||this.id}}]),Input}();t.default=a,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0;var n={colon:": ",indent:" ",beforeDecl:"\n",beforeRule:"\n",beforeOpen:" ",beforeClose:"\n",beforeComment:"\n",after:"\n",emptyBody:"",commentLeft:" ",commentRight:" "};var o=function(){function Stringifier(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Stringifier),this.builder=e}return Stringifier.prototype.stringify=function(e,t){this[e.type](e,t)},Stringifier.prototype.root=function(e){this.body(e),e.raws.after&&this.builder(e.raws.after)},Stringifier.prototype.comment=function(e){var t=this.raw(e,"left","commentLeft"),r=this.raw(e,"right","commentRight");this.builder("/*"+t+e.text+r+"*/",e)},Stringifier.prototype.decl=function(e,t){var r=this.raw(e,"between","colon"),n=e.prop+r+this.rawValue(e,"value");e.important&&(n+=e.raws.important||" !important"),t&&(n+=";"),this.builder(n,e)},Stringifier.prototype.rule=function(e){this.block(e,this.rawValue(e,"selector"))},Stringifier.prototype.atrule=function(e,t){var r="@"+e.name,n=e.params?this.rawValue(e,"params"):"";if(void 0!==e.raws.afterName?r+=e.raws.afterName:n&&(r+=" "),e.nodes)this.block(e,r+n);else{var o=(e.raws.between||"")+(t?";":"");this.builder(r+n+o,e)}},Stringifier.prototype.body=function(e){for(var t=e.nodes.length-1;t>0&&"comment"===e.nodes[t].type;)t-=1;for(var r=this.raw(e,"semicolon"),n=0;n<e.nodes.length;n++){var o=e.nodes[n],i=this.raw(o,"before");i&&this.builder(i),this.stringify(o,t!==n||r)}},Stringifier.prototype.block=function(e,t){var r=this.raw(e,"between","beforeOpen");this.builder(t+r+"{",e,"start");var n=void 0;e.nodes&&e.nodes.length?(this.body(e),n=this.raw(e,"after")):n=this.raw(e,"after","emptyBody"),n&&this.builder(n),this.builder("}",e,"end")},Stringifier.prototype.raw=function(e,t,r){var o=void 0;if(r||(r=t),t&&void 0!==(o=e.raws[t]))return o;var i=e.parent;if("before"===r&&(!i||"root"===i.type&&i.first===e))return"";if(!i)return n[r];var s=e.root();if(s.rawCache||(s.rawCache={}),void 0!==s.rawCache[r])return s.rawCache[r];if("before"===r||"after"===r)return this.beforeAfter(e,r);var u,a="raw"+((u=r)[0].toUpperCase()+u.slice(1));return this[a]?o=this[a](s,e):s.walk((function(e){if(void 0!==(o=e.raws[t]))return!1})),void 0===o&&(o=n[r]),s.rawCache[r]=o,o},Stringifier.prototype.rawSemicolon=function(e){var t=void 0;return e.walk((function(e){if(e.nodes&&e.nodes.length&&"decl"===e.last.type&&void 0!==(t=e.raws.semicolon))return!1})),t},Stringifier.prototype.rawEmptyBody=function(e){var t=void 0;return e.walk((function(e){if(e.nodes&&0===e.nodes.length&&void 0!==(t=e.raws.after))return!1})),t},Stringifier.prototype.rawIndent=function(e){if(e.raws.indent)return e.raws.indent;var t=void 0;return e.walk((function(r){var n=r.parent;if(n&&n!==e&&n.parent&&n.parent===e&&void 0!==r.raws.before){var o=r.raws.before.split("\n");return t=(t=o[o.length-1]).replace(/[^\s]/g,""),!1}})),t},Stringifier.prototype.rawBeforeComment=function(e,t){var r=void 0;return e.walkComments((function(e){if(void 0!==e.raws.before)return-1!==(r=e.raws.before).indexOf("\n")&&(r=r.replace(/[^\n]+$/,"")),!1})),void 0===r&&(r=this.raw(t,null,"beforeDecl")),r},Stringifier.prototype.rawBeforeDecl=function(e,t){var r=void 0;return e.walkDecls((function(e){if(void 0!==e.raws.before)return-1!==(r=e.raws.before).indexOf("\n")&&(r=r.replace(/[^\n]+$/,"")),!1})),void 0===r&&(r=this.raw(t,null,"beforeRule")),r},Stringifier.prototype.rawBeforeRule=function(e){var t=void 0;return e.walk((function(r){if(r.nodes&&(r.parent!==e||e.first!==r)&&void 0!==r.raws.before)return-1!==(t=r.raws.before).indexOf("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t},Stringifier.prototype.rawBeforeClose=function(e){var t=void 0;return e.walk((function(e){if(e.nodes&&e.nodes.length>0&&void 0!==e.raws.after)return-1!==(t=e.raws.after).indexOf("\n")&&(t=t.replace(/[^\n]+$/,"")),!1})),t},Stringifier.prototype.rawBeforeOpen=function(e){var t=void 0;return e.walk((function(e){if("decl"!==e.type&&void 0!==(t=e.raws.between))return!1})),t},Stringifier.prototype.rawColon=function(e){var t=void 0;return e.walkDecls((function(e){if(void 0!==e.raws.between)return t=e.raws.between.replace(/[^\s:]/g,""),!1})),t},Stringifier.prototype.beforeAfter=function(e,t){var r=void 0;r="decl"===e.type?this.raw(e,null,"beforeDecl"):"comment"===e.type?this.raw(e,null,"beforeComment"):"before"===t?this.raw(e,null,"beforeRule"):this.raw(e,null,"beforeClose");for(var n=e.parent,o=0;n&&"root"!==n.type;)o+=1,n=n.parent;if(-1!==r.indexOf("\n")){var i=this.raw(e,null,"indent");if(i.length)for(var s=0;s<o;s++)r+=i}return r},Stringifier.prototype.rawValue=function(e,t){var r=e[t],n=e.raws[t];return n&&n.value===r?n.raw:r},Stringifier}();t.default=o,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),o=_interopRequireDefault(r(83)),i=_interopRequireDefault(r(4)),s=_interopRequireDefault(r(20));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var u=function(e){function Container(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Container),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Container,e),Container.prototype.push=function(e){return e.parent=this,this.nodes.push(e),this},Container.prototype.each=function(e){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;var t=this.lastEach;if(this.indexes[t]=0,this.nodes){for(var r=void 0,n=void 0;this.indexes[t]<this.nodes.length&&(r=this.indexes[t],!1!==(n=e(this.nodes[r],r)));)this.indexes[t]+=1;return delete this.indexes[t],n}},Container.prototype.walk=function(e){return this.each((function(t,r){var n=e(t,r);return!1!==n&&t.walk&&(n=t.walk(e)),n}))},Container.prototype.walkDecls=function(e,t){return t?e instanceof RegExp?this.walk((function(r,n){if("decl"===r.type&&e.test(r.prop))return t(r,n)})):this.walk((function(r,n){if("decl"===r.type&&r.prop===e)return t(r,n)})):(t=e,this.walk((function(e,r){if("decl"===e.type)return t(e,r)})))},Container.prototype.walkRules=function(e,t){return t?e instanceof RegExp?this.walk((function(r,n){if("rule"===r.type&&e.test(r.selector))return t(r,n)})):this.walk((function(r,n){if("rule"===r.type&&r.selector===e)return t(r,n)})):(t=e,this.walk((function(e,r){if("rule"===e.type)return t(e,r)})))},Container.prototype.walkAtRules=function(e,t){return t?e instanceof RegExp?this.walk((function(r,n){if("atrule"===r.type&&e.test(r.name))return t(r,n)})):this.walk((function(r,n){if("atrule"===r.type&&r.name===e)return t(r,n)})):(t=e,this.walk((function(e,r){if("atrule"===e.type)return t(e,r)})))},Container.prototype.walkComments=function(e){return this.walk((function(t,r){if("comment"===t.type)return e(t,r)}))},Container.prototype.append=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];var n=t,o=Array.isArray(n),i=0;for(n=o?n:n[Symbol.iterator]();;){var s;if(o){if(i>=n.length)break;s=n[i++]}else{if((i=n.next()).done)break;s=i.value}var u=s,a=this.normalize(u,this.last),c=a,l=Array.isArray(c),f=0;for(c=l?c:c[Symbol.iterator]();;){var p;if(l){if(f>=c.length)break;p=c[f++]}else{if((f=c.next()).done)break;p=f.value}var h=p;this.nodes.push(h)}}return this},Container.prototype.prepend=function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];var n=t=t.reverse(),o=Array.isArray(n),i=0;for(n=o?n:n[Symbol.iterator]();;){var s;if(o){if(i>=n.length)break;s=n[i++]}else{if((i=n.next()).done)break;s=i.value}var u=s,a=this.normalize(u,this.first,"prepend").reverse(),c=a,l=Array.isArray(c),f=0;for(c=l?c:c[Symbol.iterator]();;){var p;if(l){if(f>=c.length)break;p=c[f++]}else{if((f=c.next()).done)break;p=f.value}var h=p;this.nodes.unshift(h)}for(var d in this.indexes)this.indexes[d]=this.indexes[d]+a.length}return this},Container.prototype.cleanRaws=function(t){if(e.prototype.cleanRaws.call(this,t),this.nodes){var r=this.nodes,n=Array.isArray(r),o=0;for(r=n?r:r[Symbol.iterator]();;){var i;if(n){if(o>=r.length)break;i=r[o++]}else{if((o=r.next()).done)break;i=o.value}i.cleanRaws(t)}}},Container.prototype.insertBefore=function(e,t){var r=0===(e=this.index(e))&&"prepend",n=this.normalize(t,this.nodes[e],r).reverse(),o=n,i=Array.isArray(o),s=0;for(o=i?o:o[Symbol.iterator]();;){var u;if(i){if(s>=o.length)break;u=o[s++]}else{if((s=o.next()).done)break;u=s.value}var a=u;this.nodes.splice(e,0,a)}var c=void 0;for(var l in this.indexes)e<=(c=this.indexes[l])&&(this.indexes[l]=c+n.length);return this},Container.prototype.insertAfter=function(e,t){e=this.index(e);var r=this.normalize(t,this.nodes[e]).reverse(),n=r,o=Array.isArray(n),i=0;for(n=o?n:n[Symbol.iterator]();;){var s;if(o){if(i>=n.length)break;s=n[i++]}else{if((i=n.next()).done)break;s=i.value}var u=s;this.nodes.splice(e+1,0,u)}var a=void 0;for(var c in this.indexes)e<(a=this.indexes[c])&&(this.indexes[c]=a+r.length);return this},Container.prototype.remove=function(t){return void 0!==t?((0,i.default)("Container#remove is deprecated. Use Container#removeChild"),this.removeChild(t)):e.prototype.remove.call(this),this},Container.prototype.removeChild=function(e){e=this.index(e),this.nodes[e].parent=void 0,this.nodes.splice(e,1);var t=void 0;for(var r in this.indexes)(t=this.indexes[r])>=e&&(this.indexes[r]=t-1);return this},Container.prototype.removeAll=function(){var e=this.nodes,t=Array.isArray(e),r=0;for(e=t?e:e[Symbol.iterator]();;){var n;if(t){if(r>=e.length)break;n=e[r++]}else{if((r=e.next()).done)break;n=r.value}n.parent=void 0}return this.nodes=[],this},Container.prototype.replaceValues=function(e,t,r){return r||(r=t,t={}),this.walkDecls((function(n){t.props&&-1===t.props.indexOf(n.prop)||t.fast&&-1===n.value.indexOf(t.fast)||(n.value=n.value.replace(e,r))})),this},Container.prototype.every=function(e){return this.nodes.every(e)},Container.prototype.some=function(e){return this.nodes.some(e)},Container.prototype.index=function(e){return"number"==typeof e?e:this.nodes.indexOf(e)},Container.prototype.normalize=function(e,t){var n=this;if("string"==typeof e)e=function cleanSource(e){return e.map((function(e){return e.nodes&&(e.nodes=cleanSource(e.nodes)),delete e.source,e}))}(r(84)(e).nodes);else if(!Array.isArray(e))if("root"===e.type)e=e.nodes;else if(e.type)e=[e];else if(e.prop){if(void 0===e.value)throw new Error("Value field is missed in node creation");"string"!=typeof e.value&&(e.value=String(e.value)),e=[new o.default(e)]}else if(e.selector){e=[new(r(10))(e)]}else if(e.name){e=[new(r(25))(e)]}else{if(!e.text)throw new Error("Unknown node type in node creation");e=[new s.default(e)]}return e.map((function(e){return void 0===e.raws&&(e=n.rebuild(e)),e.parent&&(e=e.clone()),void 0===e.raws.before&&t&&void 0!==t.raws.before&&(e.raws.before=t.raws.before.replace(/[^\s]/g,"")),e.parent=n,e}))},Container.prototype.rebuild=function(e,t){var n=this,i=void 0;if("root"===e.type){var u=r(26);i=new u}else if("atrule"===e.type){var a=r(25);i=new a}else if("rule"===e.type){var c=r(10);i=new c}else"decl"===e.type?i=new o.default:"comment"===e.type&&(i=new s.default);for(var l in e)"nodes"===l?i.nodes=e.nodes.map((function(e){return n.rebuild(e,i)})):"parent"===l&&t?i.parent=t:e.hasOwnProperty(l)&&(i[l]=e[l]);return i},Container.prototype.eachInside=function(e){return(0,i.default)("Container#eachInside is deprecated. Use Container#walk instead."),this.walk(e)},Container.prototype.eachDecl=function(e,t){return(0,i.default)("Container#eachDecl is deprecated. Use Container#walkDecls instead."),this.walkDecls(e,t)},Container.prototype.eachRule=function(e,t){return(0,i.default)("Container#eachRule is deprecated. Use Container#walkRules instead."),this.walkRules(e,t)},Container.prototype.eachAtRule=function(e,t){return(0,i.default)("Container#eachAtRule is deprecated. Use Container#walkAtRules instead."),this.walkAtRules(e,t)},Container.prototype.eachComment=function(e){return(0,i.default)("Container#eachComment is deprecated. Use Container#walkComments instead."),this.walkComments(e)},n(Container,[{key:"first",get:function(){if(this.nodes)return this.nodes[0]}},{key:"last",get:function(){if(this.nodes)return this.nodes[this.nodes.length-1]}},{key:"semicolon",get:function(){return(0,i.default)("Node#semicolon is deprecated. Use Node#raws.semicolon"),this.raws.semicolon},set:function(e){(0,i.default)("Node#semicolon is deprecated. Use Node#raws.semicolon"),this.raws.semicolon=e}},{key:"after",get:function(){return(0,i.default)("Node#after is deprecated. Use Node#raws.after"),this.raws.after},set:function(e){(0,i.default)("Node#after is deprecated. Use Node#raws.after"),this.raws.after=e}}]),Container}(_interopRequireDefault(r(21)).default);t.default=u,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),o=_interopRequireDefault(r(24)),i=_interopRequireDefault(r(4));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var s=function(e){function AtRule(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,AtRule);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type="atrule",r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(AtRule,e),AtRule.prototype.append=function(){var t;this.nodes||(this.nodes=[]);for(var r=arguments.length,n=Array(r),o=0;o<r;o++)n[o]=arguments[o];return(t=e.prototype.append).call.apply(t,[this].concat(n))},AtRule.prototype.prepend=function(){var t;this.nodes||(this.nodes=[]);for(var r=arguments.length,n=Array(r),o=0;o<r;o++)n[o]=arguments[o];return(t=e.prototype.prepend).call.apply(t,[this].concat(n))},n(AtRule,[{key:"afterName",get:function(){return(0,i.default)("AtRule#afterName was deprecated. Use AtRule#raws.afterName"),this.raws.afterName},set:function(e){(0,i.default)("AtRule#afterName was deprecated. Use AtRule#raws.afterName"),this.raws.afterName=e}},{key:"_params",get:function(){return(0,i.default)("AtRule#_params was deprecated. Use AtRule#raws.params"),this.raws.params},set:function(e){(0,i.default)("AtRule#_params was deprecated. Use AtRule#raws.params"),this.raws.params=e}}]),AtRule}(o.default);t.default=s,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n=_interopRequireDefault(r(24)),o=_interopRequireDefault(r(4));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var i=function(e){function Root(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Root);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type="root",r.nodes||(r.nodes=[]),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Root,e),Root.prototype.removeChild=function(t){return 0===(t=this.index(t))&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[t].raws.before),e.prototype.removeChild.call(this,t)},Root.prototype.normalize=function(t,r,n){var o=e.prototype.normalize.call(this,t);if(r)if("prepend"===n)this.nodes.length>1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r){var i=o,s=Array.isArray(i),u=0;for(i=s?i:i[Symbol.iterator]();;){var a;if(s){if(u>=i.length)break;a=i[u++]}else{if((u=i.next()).done)break;a=u.value}a.raws.before=r.raws.before}}return o},Root.prototype.toResult=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=r(86),n=r(161),o=new t(new n,this,e);return o.stringify()},Root.prototype.remove=function(e){(0,o.default)("Root#remove is deprecated. Use Root#removeChild"),this.removeChild(e)},Root.prototype.prevMap=function(){return(0,o.default)("Root#prevMap is deprecated. Use Root#source.input.map"),this.source.input.map},Root}(n.default);t.default=i,e.exports=t.default},function(e,t,r){"use strict";var n=r(28),o={"---":"yaml","+++":"toml"};e.exports=function(e){var t=Object.keys(o).map(n).join("|"),r=e.match(new RegExp("^(".concat(t,")[^\\n\\S]*\\n(?:([\\s\\S]*?)\\n)?\\1[^\\n\\S]*(\\n|$)")));if(null===r)return{frontMatter:null,content:e};var i=r[0].replace(/\n$/,""),s=r[1],u=r[2];return{frontMatter:{type:o[s],value:u,raw:i},content:r[0].replace(/[^\n]/g," ")+e.slice(r[0].length)}}},function(e,t,r){"use strict";var n=/[|\\{}()[\]^$+*?.]/g;e.exports=function(e){if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(n,"\\$&")}},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var n=r(1);e.exports=function(e){function Value(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Value),(t=_possibleConstructorReturn(this,_getPrototypeOf(Value).call(this,e))).type="value",t.unbalanced=0,t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(Value,e),Value}(n)},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var n=r(1),o=function(e){function AtWord(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,AtWord),(t=_possibleConstructorReturn(this,_getPrototypeOf(AtWord).call(this,e))).type="atword",t}var t,r,n;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(AtWord,e),t=AtWord,(r=[{key:"toString",value:function(){return this.quoted&&this.raws.quote,[this.raws.before,"@",String.prototype.toString.call(this.value),this.raws.after].join("")}}])&&_defineProperties(t.prototype,r),n&&_defineProperties(t,n),AtWord}(n);n.registerWalker(o),e.exports=o},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var n=r(1),o=function(e){function Colon(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Colon),(t=_possibleConstructorReturn(this,_getPrototypeOf(Colon).call(this,e))).type="colon",t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(Colon,e),Colon}(r(3));n.registerWalker(o),e.exports=o},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var n=r(1),o=function(e){function Comma(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Comma),(t=_possibleConstructorReturn(this,_getPrototypeOf(Comma).call(this,e))).type="comma",t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(Comma,e),Comma}(r(3));n.registerWalker(o),e.exports=o},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var n=r(1),o=function(e){function Comment(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Comment),(t=_possibleConstructorReturn(this,_getPrototypeOf(Comment).call(this,e))).type="comment",t.inline=e.inline||!1,t}var t,r,n;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(Comment,e),t=Comment,(r=[{key:"toString",value:function(){return[this.raws.before,this.inline?"//":"/*",String(this.value),this.inline?"":"*/",this.raws.after].join("")}}])&&_defineProperties(t.prototype,r),n&&_defineProperties(t,n),Comment}(r(3));n.registerWalker(o),e.exports=o},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var n=r(1),o=function(e){function FunctionNode(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,FunctionNode),(t=_possibleConstructorReturn(this,_getPrototypeOf(FunctionNode).call(this,e))).type="func",t.unbalanced=-1,t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(FunctionNode,e),FunctionNode}(n);n.registerWalker(o),e.exports=o},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var n=r(1),o=function(e){function NumberNode(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,NumberNode),(t=_possibleConstructorReturn(this,_getPrototypeOf(NumberNode).call(this,e))).type="number",t.unit=e.unit||"",t}var t,r,n;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(NumberNode,e),t=NumberNode,(r=[{key:"toString",value:function(){return[this.raws.before,String(this.value),this.unit,this.raws.after].join("")}}])&&_defineProperties(t.prototype,r),n&&_defineProperties(t,n),NumberNode}(r(3));n.registerWalker(o),e.exports=o},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var n=r(1),o=function(e){function Operator(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Operator),(t=_possibleConstructorReturn(this,_getPrototypeOf(Operator).call(this,e))).type="operator",t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(Operator,e),Operator}(r(3));n.registerWalker(o),e.exports=o},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var n=r(1),o=function(e){function Parenthesis(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Parenthesis),(t=_possibleConstructorReturn(this,_getPrototypeOf(Parenthesis).call(this,e))).type="paren",t.parenType="",t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(Parenthesis,e),Parenthesis}(r(3));n.registerWalker(o),e.exports=o},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var n=r(1),o=function(e){function StringNode(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,StringNode),(t=_possibleConstructorReturn(this,_getPrototypeOf(StringNode).call(this,e))).type="string",t}var t,r,n;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(StringNode,e),t=StringNode,(r=[{key:"toString",value:function(){var e=this.quoted?this.raws.quote:"";return[this.raws.before,e,this.value+"",e,this.raws.after].join("")}}])&&_defineProperties(t.prototype,r),n&&_defineProperties(t,n),StringNode}(r(3));n.registerWalker(o),e.exports=o},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var n=r(1),o=function(e){function Word(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Word),(t=_possibleConstructorReturn(this,_getPrototypeOf(Word).call(this,e))).type="word",t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(Word,e),Word}(r(3));n.registerWalker(o),e.exports=o},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var n=r(1),o=function(e){function UnicodeRange(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,UnicodeRange),(t=_possibleConstructorReturn(this,_getPrototypeOf(UnicodeRange).call(this,e))).type="unicode-range",t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(UnicodeRange,e),UnicodeRange}(r(3));n.registerWalker(o),e.exports=o},function(e,t){e.exports=function(e,t){return(t="number"==typeof t?t:1/0)?function _flatten(e,r){return e.reduce((function(e,n){return Array.isArray(n)&&r<t?e.concat(_flatten(n,r+1)):e.concat(n)}),[])}(e,1):Array.isArray(e)?e.map((function(e){return e})):e}},function(e,t){e.exports=function(e,t){for(var r=-1,n=[];-1!==(r=e.indexOf(t,r+1));)n.push(r);return n}},function(e,t,r){"use strict";e.exports=function(e,t,r){return 0===e.length?e:t?(r||e.sort(t),function(e,t){for(var r=1,n=e.length,o=e[0],i=e[0],s=1;s<n;++s)if(i=o,t(o=e[s],i)){if(s===r){r++;continue}e[r++]=o}return e.length=r,e}(e,t)):(r||e.sort(),function(e){for(var t=1,r=e.length,n=e[0],o=e[0],i=1;i<r;++i,o=n)if(o=n,(n=e[i])!==o){if(i===t){t++;continue}e[t++]=n}return e.length=t,e}(e))}},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n,o=r(15),i=(n=o)&&n.__esModule?n:{default:n},s=r(0);var u=function(e){function Root(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Root);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type=s.ROOT,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Root,e),Root.prototype.toString=function(){var e=this.reduce((function(e,t){var r=String(t);return r?e+r+",":""}),"").slice(0,-1);return this.trailingComma?e+",":e},Root}(i.default);t.default=u,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n,o=r(15),i=(n=o)&&n.__esModule?n:{default:n},s=r(0);var u=function(e){function Selector(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Selector);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type=s.SELECTOR,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Selector,e),Selector}(i.default);t.default=u,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n,o=r(7),i=(n=o)&&n.__esModule?n:{default:n},s=r(0);var u=function(e){function ClassName(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,ClassName);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type=s.CLASS,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(ClassName,e),ClassName.prototype.toString=function(){return[this.spaces.before,this.ns,String("."+this.value),this.spaces.after].join("")},ClassName}(i.default);t.default=u,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n,o=r(5),i=(n=o)&&n.__esModule?n:{default:n},s=r(0);var u=function(e){function Comment(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Comment);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type=s.COMMENT,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Comment,e),Comment}(i.default);t.default=u,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n,o=r(7),i=(n=o)&&n.__esModule?n:{default:n},s=r(0);var u=function(e){function ID(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,ID);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type=s.ID,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(ID,e),ID.prototype.toString=function(){return[this.spaces.before,this.ns,String("#"+this.value),this.spaces.after].join("")},ID}(i.default);t.default=u,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n,o=r(7),i=(n=o)&&n.__esModule?n:{default:n},s=r(0);var u=function(e){function Tag(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Tag);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type=s.TAG,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Tag,e),Tag}(i.default);t.default=u,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n,o=r(5),i=(n=o)&&n.__esModule?n:{default:n},s=r(0);var u=function(e){function String(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,String);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type=s.STRING,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(String,e),String}(i.default);t.default=u,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n,o=r(15),i=(n=o)&&n.__esModule?n:{default:n},s=r(0);var u=function(e){function Pseudo(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Pseudo);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type=s.PSEUDO,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Pseudo,e),Pseudo.prototype.toString=function(){var e=this.length?"("+this.map(String).join(",")+")":"";return[this.spaces.before,String(this.value),e,this.spaces.after].join("")},Pseudo}(i.default);t.default=u,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n,o=r(7),i=(n=o)&&n.__esModule?n:{default:n},s=r(0);var u=function(e){function Attribute(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Attribute);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type=s.ATTRIBUTE,r.raws={},r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Attribute,e),Attribute.prototype.toString=function(){var e=[this.spaces.before,"[",this.ns,this.attribute];return this.operator&&e.push(this.operator),this.value&&e.push(this.value),this.raws.insensitive?e.push(this.raws.insensitive):this.insensitive&&e.push(" i"),e.push("]"),e.concat(this.spaces.after).join("")},Attribute}(i.default);t.default=u,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n,o=r(7),i=(n=o)&&n.__esModule?n:{default:n},s=r(0);var u=function(e){function Universal(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Universal);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type=s.UNIVERSAL,r.value="*",r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Universal,e),Universal}(i.default);t.default=u,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n,o=r(5),i=(n=o)&&n.__esModule?n:{default:n},s=r(0);var u=function(e){function Combinator(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Combinator);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type=s.COMBINATOR,r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Combinator,e),Combinator}(i.default);t.default=u,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n,o=r(5),i=(n=o)&&n.__esModule?n:{default:n},s=r(0);var u=function(e){function Nesting(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Nesting);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type=s.NESTING,r.value="&",r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Nesting,e),Nesting}(i.default);t.default=u,e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n,o=r(57),i=(n=o)&&n.__esModule?n:{default:n};function Container(e){var t=this;this.constructor(e),this.nodes=e.nodes,void 0===this.after&&(this.after=this.nodes.length>0?this.nodes[this.nodes.length-1].after:""),void 0===this.before&&(this.before=this.nodes.length>0?this.nodes[0].before:""),void 0===this.sourceIndex&&(this.sourceIndex=this.before.length),this.nodes.forEach((function(e){e.parent=t}))}Container.prototype=Object.create(i.default.prototype),Container.constructor=i.default,Container.prototype.walk=function(e,t){for(var r="string"==typeof e||e instanceof RegExp,n=r?t:e,o="string"==typeof e?new RegExp(e):e,i=0;i<this.nodes.length;i++){var s=this.nodes[i];if((!r||o.test(s.type))&&n&&!1===n(s,i,this.nodes))return!1;if(s.nodes&&!1===s.walk(e,t))return!1}return!0},Container.prototype.each=function(){for(var e=arguments.length<=0||void 0===arguments[0]?function(){}:arguments[0],t=0;t<this.nodes.length;t++){var r=this.nodes[t];if(!1===e(r,t,this.nodes))return!1}return!0},t.default=Container},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){this.after=e.after,this.before=e.before,this.type=e.type,this.value=e.value,this.sourceIndex=e.sourceIndex}},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0,t.default=void 0;var n=_interopRequireDefault(r(59)),o=_interopRequireDefault(r(120)),i=_interopRequireDefault(r(6));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var s=0,u=function(){function Input(e,t){if(void 0===t&&(t={}),null===e||"object"===_typeof(e)&&!e.toString)throw new Error("PostCSS received "+e+" instead of CSS string");this.css=e.toString(),"\ufeff"!==this.css[0]&&"￾"!==this.css[0]||(this.css=this.css.slice(1)),t.from&&(/^\w+:\/\//.test(t.from)?this.file=t.from:this.file=i.default.resolve(t.from));var r=new o.default(this.css,t);if(r.text){this.map=r;var n=r.consumer().file;!this.file&&n&&(this.file=this.mapResolve(n))}this.file||(s+=1,this.id="<input css "+s+">"),this.map&&(this.map.file=this.from)}var e,t,r,u=Input.prototype;return u.error=function(e,t,r,o){var i;void 0===o&&(o={});var s=this.origin(t,r);return(i=s?new n.default(e,s.line,s.column,s.source,s.file,o.plugin):new n.default(e,t,r,this.css,this.file,o.plugin)).input={line:t,column:r,source:this.css},this.file&&(i.input.file=this.file),i},u.origin=function(e,t){if(!this.map)return!1;var r=this.map.consumer(),n=r.originalPositionFor({line:e,column:t});if(!n.source)return!1;var o={file:this.mapResolve(n.source),line:n.line,column:n.column},i=r.sourceContentFor(n.source);return i&&(o.source=i),o},u.mapResolve=function(e){return/^\w+:\/\//.test(e)?e:i.default.resolve(this.map.consumer().sourceRoot||".",e)},e=Input,(t=[{key:"from",get:function(){return this.file||this.id}}])&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Input}();t.default=u,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n=_interopRequireDefault(r(117)),o=_interopRequireDefault(r(118)),i=_interopRequireDefault(r(119));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var s=function(){function CssSyntaxError(e,t,r,n,o,i){this.name="CssSyntaxError",this.reason=e,o&&(this.file=o),n&&(this.source=n),i&&(this.plugin=i),void 0!==t&&void 0!==r&&(this.line=t,this.column=r),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,CssSyntaxError)}var e=CssSyntaxError.prototype;return e.setMessage=function(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},e.showSourceCode=function(e){var t=this;if(!this.source)return"";var r=this.source;i.default&&(void 0===e&&(e=n.default.stdout),e&&(r=(0,i.default)(r)));var s=r.split(/\r?\n/),u=Math.max(this.line-3,0),a=Math.min(this.line+2,s.length),c=String(a).length;function mark(t){return e&&o.default.red?o.default.red.bold(t):t}function aside(t){return e&&o.default.gray?o.default.gray(t):t}return s.slice(u,a).map((function(e,r){var n=u+1+r,o=" "+(" "+n).slice(-c)+" | ";if(n===t.line){var i=aside(o.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return mark(">")+aside(o)+e+"\n "+i+mark("^")}return" "+aside(o)+e})).join("\n")},e.toString=function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e},CssSyntaxError}();t.default=s,e.exports=t.default},function(e,t){function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"===("undefined"==typeof window?"undefined":_typeof(window))&&(r=window)}e.exports=r},function(e,t,r){t.SourceMapGenerator=r(62).SourceMapGenerator,t.SourceMapConsumer=r(126).SourceMapConsumer,t.SourceNode=r(129).SourceNode},function(e,t,r){var n=r(63),o=r(8),i=r(64).ArraySet,s=r(125).MappingList;function SourceMapGenerator(e){e||(e={}),this._file=o.getArg(e,"file",null),this._sourceRoot=o.getArg(e,"sourceRoot",null),this._skipValidation=o.getArg(e,"skipValidation",!1),this._sources=new i,this._names=new i,this._mappings=new s,this._sourcesContents=null}SourceMapGenerator.prototype._version=3,SourceMapGenerator.fromSourceMap=function(e){var t=e.sourceRoot,r=new SourceMapGenerator({file:e.file,sourceRoot:t});return e.eachMapping((function(e){var n={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(n.source=e.source,null!=t&&(n.source=o.relative(t,n.source)),n.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(n.name=e.name)),r.addMapping(n)})),e.sources.forEach((function(n){var i=n;null!==t&&(i=o.relative(t,n)),r._sources.has(i)||r._sources.add(i);var s=e.sourceContentFor(n);null!=s&&r.setSourceContent(n,s)})),r},SourceMapGenerator.prototype.addMapping=function(e){var t=o.getArg(e,"generated"),r=o.getArg(e,"original",null),n=o.getArg(e,"source",null),i=o.getArg(e,"name",null);this._skipValidation||this._validateMapping(t,r,n,i),null!=n&&(n=String(n),this._sources.has(n)||this._sources.add(n)),null!=i&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:n,name:i})},SourceMapGenerator.prototype.setSourceContent=function(e,t){var r=e;null!=this._sourceRoot&&(r=o.relative(this._sourceRoot,r)),null!=t?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[o.toSetString(r)]=t):this._sourcesContents&&(delete this._sourcesContents[o.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},SourceMapGenerator.prototype.applySourceMap=function(e,t,r){var n=t;if(null==t){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');n=e.file}var s=this._sourceRoot;null!=s&&(n=o.relative(s,n));var u=new i,a=new i;this._mappings.unsortedForEach((function(t){if(t.source===n&&null!=t.originalLine){var i=e.originalPositionFor({line:t.originalLine,column:t.originalColumn});null!=i.source&&(t.source=i.source,null!=r&&(t.source=o.join(r,t.source)),null!=s&&(t.source=o.relative(s,t.source)),t.originalLine=i.line,t.originalColumn=i.column,null!=i.name&&(t.name=i.name))}var c=t.source;null==c||u.has(c)||u.add(c);var l=t.name;null==l||a.has(l)||a.add(l)}),this),this._sources=u,this._names=a,e.sources.forEach((function(t){var n=e.sourceContentFor(t);null!=n&&(null!=r&&(t=o.join(r,t)),null!=s&&(t=o.relative(s,t)),this.setSourceContent(t,n))}),this)},SourceMapGenerator.prototype._validateMapping=function(e,t,r,n){if(t&&"number"!=typeof t.line&&"number"!=typeof t.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||t||r||n)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:t,name:n}))},SourceMapGenerator.prototype._serializeMappings=function(){for(var e,t,r,i,s=0,u=1,a=0,c=0,l=0,f=0,p="",h=this._mappings.toArray(),d=0,y=h.length;d<y;d++){if(e="",(t=h[d]).generatedLine!==u)for(s=0;t.generatedLine!==u;)e+=";",u++;else if(d>0){if(!o.compareByGeneratedPositionsInflated(t,h[d-1]))continue;e+=","}e+=n.encode(t.generatedColumn-s),s=t.generatedColumn,null!=t.source&&(i=this._sources.indexOf(t.source),e+=n.encode(i-f),f=i,e+=n.encode(t.originalLine-1-c),c=t.originalLine-1,e+=n.encode(t.originalColumn-a),a=t.originalColumn,null!=t.name&&(r=this._names.indexOf(t.name),e+=n.encode(r-l),l=r)),p+=e}return p},SourceMapGenerator.prototype._generateSourcesContent=function(e,t){return e.map((function(e){if(!this._sourcesContents)return null;null!=t&&(e=o.relative(t,e));var r=o.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null}),this)},SourceMapGenerator.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},SourceMapGenerator.prototype.toString=function(){return JSON.stringify(this.toJSON())},t.SourceMapGenerator=SourceMapGenerator},function(e,t,r){var n=r(124);t.encode=function(e){var t,r="",o=function(e){return e<0?1+(-e<<1):0+(e<<1)}(e);do{t=31&o,(o>>>=5)>0&&(t|=32),r+=n.encode(t)}while(o>0);return r},t.decode=function(e,t,r){var o,i,s,u,a=e.length,c=0,l=0;do{if(t>=a)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(i=n.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));o=!!(32&i),c+=(i&=31)<<l,l+=5}while(o);r.value=(u=(s=c)>>1,1==(1&s)?-u:u),r.rest=t}},function(e,t,r){var n=r(8),o=Object.prototype.hasOwnProperty,i="undefined"!=typeof Map;function ArraySet(){this._array=[],this._set=i?new Map:Object.create(null)}ArraySet.fromArray=function(e,t){for(var r=new ArraySet,n=0,o=e.length;n<o;n++)r.add(e[n],t);return r},ArraySet.prototype.size=function(){return i?this._set.size:Object.getOwnPropertyNames(this._set).length},ArraySet.prototype.add=function(e,t){var r=i?e:n.toSetString(e),s=i?this.has(e):o.call(this._set,r),u=this._array.length;s&&!t||this._array.push(e),s||(i?this._set.set(e,u):this._set[r]=u)},ArraySet.prototype.has=function(e){if(i)return this._set.has(e);var t=n.toSetString(e);return o.call(this._set,t)},ArraySet.prototype.indexOf=function(e){if(i){var t=this._set.get(e);if(t>=0)return t}else{var r=n.toSetString(e);if(o.call(this._set,r))return this._set[r]}throw new Error('"'+e+'" is not in the set.')},ArraySet.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw new Error("No element indexed by "+e)},ArraySet.prototype.toArray=function(){return this._array.slice()},t.ArraySet=ArraySet},function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n,o=(n=r(16))&&n.__esModule?n:{default:n};var _default=function(e,t){new o.default(t).stringify(e)};t.default=_default,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n=_interopRequireDefault(r(67)),o=_interopRequireDefault(r(132)),i=_interopRequireDefault(r(18)),s=_interopRequireDefault(r(68)),u=_interopRequireDefault(r(134)),a=_interopRequireDefault(r(70));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var c=function(){function Parser(e){this.input=e,this.root=new u.default,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{line:1,column:1}}}var e=Parser.prototype;return e.createTokenizer=function(){this.tokenizer=(0,o.default)(this.input)},e.parse=function(){for(var e;!this.tokenizer.endOfFile();)switch((e=this.tokenizer.nextToken())[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e)}this.endFile()},e.comment=function(e){var t=new i.default;this.init(t,e[2],e[3]),t.source.end={line:e[4],column:e[5]};var r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{var n=r.match(/^(\s*)([^]*[^\s])(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}},e.emptyRule=function(e){var t=new a.default;this.init(t,e[2],e[3]),t.selector="",t.raws.between="",this.current=t},e.other=function(e){for(var t=!1,r=null,n=!1,o=null,i=[],s=[],u=e;u;){if(r=u[0],s.push(u),"("===r||"["===r)o||(o=u),i.push("("===r?")":"]");else if(0===i.length){if(";"===r){if(n)return void this.decl(s);break}if("{"===r)return void this.rule(s);if("}"===r){this.tokenizer.back(s.pop()),t=!0;break}":"===r&&(n=!0)}else r===i[i.length-1]&&(i.pop(),0===i.length&&(o=null));u=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(t=!0),i.length>0&&this.unclosedBracket(o),t&&n){for(;s.length&&("space"===(u=s[s.length-1][0])||"comment"===u);)this.tokenizer.back(s.pop());this.decl(s)}else this.unknownWord(s)},e.rule=function(e){e.pop();var t=new a.default;this.init(t,e[0][2],e[0][3]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t},e.decl=function(e){var t=new n.default;this.init(t);var r,o=e[e.length-1];for(";"===o[0]&&(this.semicolon=!0,e.pop()),o[4]?t.source.end={line:o[4],column:o[5]}:t.source.end={line:o[2],column:o[3]};"word"!==e[0][0];)1===e.length&&this.unknownWord(e),t.raws.before+=e.shift()[1];for(t.source.start={line:e[0][2],column:e[0][3]},t.prop="";e.length;){var i=e[0][0];if(":"===i||"space"===i||"comment"===i)break;t.prop+=e.shift()[1]}for(t.raws.between="";e.length;){if(":"===(r=e.shift())[0]){t.raws.between+=r[1];break}t.raws.between+=r[1]}"_"!==t.prop[0]&&"*"!==t.prop[0]||(t.raws.before+=t.prop[0],t.prop=t.prop.slice(1)),t.raws.between+=this.spacesAndCommentsFromStart(e),this.precheckMissedSemicolon(e);for(var s=e.length-1;s>0;s--){if("!important"===(r=e[s])[1].toLowerCase()){t.important=!0;var u=this.stringFrom(e,s);" !important"!==(u=this.spacesFromEnd(e)+u)&&(t.raws.important=u);break}if("important"===r[1].toLowerCase()){for(var a=e.slice(0),c="",l=s;l>0;l--){var f=a[l][0];if(0===c.trim().indexOf("!")&&"space"!==f)break;c=a.pop()[1]+c}0===c.trim().indexOf("!")&&(t.important=!0,t.raws.important=c,e=a)}if("space"!==r[0]&&"comment"!==r[0])break}this.raw(t,"value",e),-1!==t.value.indexOf(":")&&this.checkMissedSemicolon(e)},e.atrule=function(e){var t,r,n=new s.default;n.name=e[1].slice(1),""===n.name&&this.unnamedAtrule(n,e),this.init(n,e[2],e[3]);for(var o=!1,i=!1,u=[];!this.tokenizer.endOfFile();){if(";"===(e=this.tokenizer.nextToken())[0]){n.source.end={line:e[2],column:e[3]},this.semicolon=!0;break}if("{"===e[0]){i=!0;break}if("}"===e[0]){if(u.length>0){for(t=u[r=u.length-1];t&&"space"===t[0];)t=u[--r];t&&(n.source.end={line:t[4],column:t[5]})}this.end(e);break}if(u.push(e),this.tokenizer.endOfFile()){o=!0;break}}n.raws.between=this.spacesAndCommentsFromEnd(u),u.length?(n.raws.afterName=this.spacesAndCommentsFromStart(u),this.raw(n,"params",u),o&&(e=u[u.length-1],n.source.end={line:e[4],column:e[5]},this.spaces=n.raws.between,n.raws.between="")):(n.raws.afterName="",n.params=""),i&&(n.nodes=[],this.current=n)},e.end=function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end={line:e[2],column:e[3]},this.current=this.current.parent):this.unexpectedClose(e)},e.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces},e.freeSemicolon=function(e){if(this.spaces+=e[1],this.current.nodes){var t=this.current.nodes[this.current.nodes.length-1];t&&"rule"===t.type&&!t.raws.ownSemicolon&&(t.raws.ownSemicolon=this.spaces,this.spaces="")}},e.init=function(e,t,r){this.current.push(e),e.source={start:{line:t,column:r},input:this.input},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)},e.raw=function(e,t,r){for(var n,o,i,s,u=r.length,a="",c=!0,l=/^([.|#])?([\w])+/i,f=0;f<u;f+=1)"comment"!==(o=(n=r[f])[0])||"rule"!==e.type?"comment"===o||"space"===o&&f===u-1?c=!1:a+=n[1]:(s=r[f-1],i=r[f+1],"space"!==s[0]&&"space"!==i[0]&&l.test(s[1])&&l.test(i[1])?a+=n[1]:c=!1);if(!c){var p=r.reduce((function(e,t){return e+t[1]}),"");e.raws[t]={value:a,raw:p}}e[t]=a},e.spacesAndCommentsFromEnd=function(e){for(var t,r="";e.length&&("space"===(t=e[e.length-1][0])||"comment"===t);)r=e.pop()[1]+r;return r},e.spacesAndCommentsFromStart=function(e){for(var t,r="";e.length&&("space"===(t=e[0][0])||"comment"===t);)r+=e.shift()[1];return r},e.spacesFromEnd=function(e){for(var t="";e.length&&"space"===e[e.length-1][0];)t=e.pop()[1]+t;return t},e.stringFrom=function(e,t){for(var r="",n=t;n<e.length;n++)r+=e[n][1];return e.splice(t,e.length-t),r},e.colon=function(e){for(var t,r,n,o=0,i=0;i<e.length;i++){if("("===(r=(t=e[i])[0])&&(o+=1),")"===r&&(o-=1),0===o&&":"===r){if(n){if("word"===n[0]&&"progid"===n[1])continue;return i}this.doubleColon(t)}n=t}return!1},e.unclosedBracket=function(e){throw this.input.error("Unclosed bracket",e[2],e[3])},e.unknownWord=function(e){throw this.input.error("Unknown word",e[0][2],e[0][3])},e.unexpectedClose=function(e){throw this.input.error("Unexpected }",e[2],e[3])},e.unclosedBlock=function(){var e=this.current.source.start;throw this.input.error("Unclosed block",e.line,e.column)},e.doubleColon=function(e){throw this.input.error("Double colon",e[2],e[3])},e.unnamedAtrule=function(e,t){throw this.input.error("At-rule without name",t[2],t[3])},e.precheckMissedSemicolon=function(){},e.checkMissedSemicolon=function(e){var t=this.colon(e);if(!1!==t){for(var r,n=0,o=t-1;o>=0&&("space"===(r=e[o])[0]||2!==(n+=1));o--);throw this.input.error("Missed semicolon",r[2],r[3])}},Parser}();t.default=c,e.exports=t.default},function(e,t,r){"use strict";var n;t.__esModule=!0,t.default=void 0;var o=function(e){var t,r;function Declaration(t){var r;return(r=e.call(this,t)||this).type="decl",r}return r=e,(t=Declaration).prototype=Object.create(r.prototype),t.prototype.constructor=t,t.__proto__=r,Declaration}(((n=r(19))&&n.__esModule?n:{default:n}).default);t.default=o,e.exports=t.default},function(e,t,r){"use strict";var n;t.__esModule=!0,t.default=void 0;var o=function(e){var t,r;function AtRule(t){var r;return(r=e.call(this,t)||this).type="atrule",r}r=e,(t=AtRule).prototype=Object.create(r.prototype),t.prototype.constructor=t,t.__proto__=r;var n=AtRule.prototype;return n.append=function(){var t;this.nodes||(this.nodes=[]);for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return(t=e.prototype.append).call.apply(t,[this].concat(n))},n.prepend=function(){var t;this.nodes||(this.nodes=[]);for(var r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return(t=e.prototype.prepend).call.apply(t,[this].concat(n))},AtRule}(((n=r(13))&&n.__esModule?n:{default:n}).default);t.default=o,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n=_interopRequireDefault(r(66)),o=_interopRequireDefault(r(58));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=function(e,t){var r=new o.default(e,t),i=new n.default(r);try{i.parse()}catch(e){throw e}return i.root};t.default=_default,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n=_interopRequireDefault(r(13)),o=_interopRequireDefault(r(133));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var i=function(e){var t,r,n,i,s;function Rule(t){var r;return(r=e.call(this,t)||this).type="rule",r.nodes||(r.nodes=[]),r}return r=e,(t=Rule).prototype=Object.create(r.prototype),t.prototype.constructor=t,t.__proto__=r,n=Rule,(i=[{key:"selectors",get:function(){return o.default.comma(this.selector)},set:function(e){var t=this.selector?this.selector.match(/,\s*/):null,r=t?t[0]:","+this.raw("between","beforeOpen");this.selector=e.join(r)}}])&&_defineProperties(n.prototype,i),s&&_defineProperties(n,s),Rule}(n.default);t.default=i,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0,t.default=void 0;var n=_interopRequireDefault(r(135)),o=_interopRequireDefault(r(65)),i=(_interopRequireDefault(r(136)),_interopRequireDefault(r(137))),s=_interopRequireDefault(r(69));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function isPromise(e){return"object"===_typeof(e)&&"function"==typeof e.then}var u=function(){function LazyResult(e,t,r){var n;if(this.stringified=!1,this.processed=!1,"object"===_typeof(t)&&null!==t&&"root"===t.type)n=t;else if(t instanceof LazyResult||t instanceof i.default)n=t.root,t.map&&(void 0===r.map&&(r.map={}),r.map.inline||(r.map.inline=!1),r.map.prev=t.map);else{var o=s.default;r.syntax&&(o=r.syntax.parse),r.parser&&(o=r.parser),o.parse&&(o=o.parse);try{n=o(t,r)}catch(e){this.error=e}}this.result=new i.default(e,n,r)}var e,t,r,u=LazyResult.prototype;return u.warnings=function(){return this.sync().warnings()},u.toString=function(){return this.css},u.then=function(e,t){return this.async().then(e,t)},u.catch=function(e){return this.async().catch(e)},u.finally=function(e){return this.async().then(e,e)},u.handleError=function(e,t){try{if(this.error=e,"CssSyntaxError"!==e.name||e.plugin){if(t.postcssVersion);}else e.plugin=t.postcssPlugin,e.setMessage()}catch(e){console&&console.error&&console.error(e)}},u.asyncTick=function(e,t){var r=this;if(this.plugin>=this.processor.plugins.length)return this.processed=!0,e();try{var n=this.processor.plugins[this.plugin],o=this.run(n);this.plugin+=1,isPromise(o)?o.then((function(){r.asyncTick(e,t)})).catch((function(e){r.handleError(e,n),r.processed=!0,t(e)})):this.asyncTick(e,t)}catch(e){this.processed=!0,t(e)}},u.async=function(){var e=this;return this.processed?new Promise((function(t,r){e.error?r(e.error):t(e.stringify())})):this.processing?this.processing:(this.processing=new Promise((function(t,r){if(e.error)return r(e.error);e.plugin=0,e.asyncTick(t,r)})).then((function(){return e.processed=!0,e.stringify()})),this.processing)},u.sync=function(){if(this.processed)return this.result;if(this.processed=!0,this.processing)throw new Error("Use process(css).then(cb) to work with async plugins");if(this.error)throw this.error;var e=this.result.processor.plugins,t=Array.isArray(e),r=0;for(e=t?e:e[Symbol.iterator]();;){var n;if(t){if(r>=e.length)break;n=e[r++]}else{if((r=e.next()).done)break;n=r.value}var o=n;if(isPromise(this.run(o)))throw new Error("Use process(css).then(cb) to work with async plugins")}return this.result},u.run=function(e){this.result.lastPlugin=e;try{return e(this.result.root,this.result)}catch(t){throw this.handleError(t,e),t}},u.stringify=function(){if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=o.default;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var r=new n.default(t,this.result.root,this.result.opts).generate();return this.result.css=r[0],this.result.map=r[1],this.result},e=LazyResult,(t=[{key:"processor",get:function(){return this.result.processor}},{key:"opts",get:function(){return this.result.opts}},{key:"css",get:function(){return this.stringify().css}},{key:"content",get:function(){return this.stringify().content}},{key:"map",get:function(){return this.stringify().map}},{key:"root",get:function(){return this.sync().root}},{key:"messages",get:function(){return this.sync().messages}}])&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),LazyResult}();t.default=u,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),o=function get(e,t,r){null===e&&(e=Function.prototype);var n=Object.getOwnPropertyDescriptor(e,t);if(void 0===n){var o=Object.getPrototypeOf(e);return null===o?void 0:get(o,t,r)}if("value"in n)return n.value;var i=n.get;return void 0!==i?i.call(r):void 0},i=_interopRequireDefault(r(20)),s=_interopRequireDefault(r(157)),u=_interopRequireDefault(r(85)),a=_interopRequireDefault(r(164)),c=_interopRequireDefault(r(165)),l=_interopRequireDefault(r(166)),f=_interopRequireDefault(r(167)),p=_interopRequireDefault(r(168));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var h=/\*\/$/,d=function(e){function LessParser(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,LessParser);var t=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,(LessParser.__proto__||Object.getPrototypeOf(LessParser)).call(this,e));return t.root=new c.default,t.current=t.root,t.root.source={input:e,start:{line:1,column:1}},t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(LessParser,e),n(LessParser,[{key:"atrule",value:function(e){"@import"===e[1]?this.import(e):o(LessParser.prototype.__proto__||Object.getPrototypeOf(LessParser.prototype),"atrule",this).call(this,e)}},{key:"comment",value:function(e){var t=new i.default,r=e[1],n=r.slice(2).replace(h,"");if(this.init(t,e[2],e[3]),t.source.end={line:e[4],column:e[5]},t.raws.content=r,t.raws.begin=r[0]+r[1],t.inline="inline"===e[6],t.block=!t.inline,/^\s*$/.test(n))t.text="",t.raws.left=n,t.raws.right="";else{var o=n.match(/^(\s*)([^]*[^\s])(\s*)$/);t.text=o[2],t.raws.left=o[1]||" ",t.raws.right=o[3]||" "}}},{key:"createDeclaration",value:function(e){this.decl(this.tokens.slice(e.start,this.pos+1))}},{key:"createRule",value:function(e){var t=";"===this.tokens[this.pos][0],r=this.pos+(e.empty&&t?2:1),n=this.tokens.slice(e.start,r),o=this.rule(n);e.params[0]&&(e.mixin||e.extend)&&this.raw(o,"params",e.params),e.empty&&(t&&(o.raws.semicolon=this.semicolon=!0,o.selector=o.selector.replace(/;$/,"")),e.extend&&(o.extend=!0),e.mixin&&(o.mixin=!0),o.empty=!0,delete this.current.nodes,/!\s*important/i.test(o.selector)&&(o.important=!0,/\s*!\s*important/i.test(o.selector)&&(o.raws.important=o.selector.match(/(\s*!\s*important)/i)[1]),o.selector=o.selector.replace(/\s*!\s*important/i,"")),t||this.pos--,this.end(this.tokens[this.pos]))}},{key:"end",value:function(e){var t=this.current;t.nodes&&t.nodes.length&&t.last.raws.semicolon&&!t.last.nodes&&(this.semicolon=!0),o(LessParser.prototype.__proto__||Object.getPrototypeOf(LessParser.prototype),"end",this).call(this,e)}},{key:"import",value:function(e){var t=!1,r=!1,n={line:0,column:0},o=[],i=new s.default;for(i.name=e[1].slice(1),this.init(i,e[2],e[3]),this.pos+=1;this.pos<this.tokens.length;){var u=this.tokens[this.pos];if(";"===u[0]){n={line:u[2],column:u[3]},i.raws.semicolon=!0;break}if("{"===u[0]){r=!0;break}if("}"===u[0]){this.end(u);break}if("brackets"===u[0]?i.urlFunc?i.importPath=u[1].replace(/[()]/g,""):o.push(u):"space"===u[0]?o.length?i.raws.between=u[1]:i.urlFunc?i.raws.beforeUrl=u[1]:i.importPath?i.urlFunc?i.raws.afterUrl=u[1]:i.raws.after=u[1]:i.raws.afterName=u[1]:"word"===u[0]&&"url"===u[1]?i.urlFunc=!0:"("!==u[0]&&")"!==u[0]&&(i.importPath=u[1]),this.pos===this.tokens.length){t=!0;break}this.pos+=1}i.raws.between&&!i.raws.afterName&&(i.raws.afterName=i.raws.between,i.raws.between=""),i.source.end=n,o.length?(this.raw(i,"directives",o),t&&(e=o[o.length-1],i.source.end={line:e[4],column:e[5]},this.spaces=i.raws.between,i.raws.between="")):i.directives="",r&&(i.nodes=[],this.current=i)}},{key:"other",value:function(){var e=[],t=[],r=this.pos,n=!1,o=!1,i=null;if("brackets"!==this.tokens[r][0]){for(var s=(0,f.default)(this.tokens[r]),u=Boolean((0,l.default)(this.tokens,r));this.pos<this.tokens.length;){var a=this.tokens[this.pos],c=a[0];if("("===c||"["===c)i||(i=a),e.push("("===c?")":"]");else if(0===e.length){if(";"===c){if(this.ruleEnd({start:r,params:t,colon:o,mixin:s,extend:u}))return;break}if("{"===c)return void this.createRule({start:r,params:t,mixin:s});if("}"===c){this.pos-=1,n=!0;break}":"===c&&(o=!0)}else c===e[e.length-1]&&(e.pop(),0===e.length&&(i=null));!u&&o||!(e.length>0||"brackets"===c||t[0])||"]"===e[0]||t.push(a),this.pos+=1}if(this.pos===this.tokens.length&&(this.pos-=1,n=!0),e.length>0&&this.unclosedBracket(i),n&&this.tokens.length>1)if(r===this.pos&&(this.pos+=1),this.ruleEnd({start:r,params:t,colon:o,mixin:s,extend:u,isEndOfBlock:!0}))return;this.unknownWord(r)}else this.spaces+=this.tokens[r][1]}},{key:"rule",value:function(e){e.pop();var t=new a.default;return this.init(t,e[0][2],e[0][3]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t,t}},{key:"ruleEnd",value:function(e){var t=e.start;if(e.extend||e.mixin)return this.createRule(Object.assign(e,{empty:!0})),!0;if(e.colon){if(e.isEndOfBlock)for(;this.pos>t;){var r=this.tokens[this.pos][0];if("space"!==r&&"comment"!==r)break;this.pos-=1}return this.createDeclaration({start:t}),!0}return!1}},{key:"tokenize",value:function(){this.tokens=(0,p.default)(this.input)}}]),LessParser}(u.default);t.default=d,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0;var n=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),o=_interopRequireDefault(r(142)),i=_interopRequireDefault(r(74)),s=_interopRequireDefault(r(148)),u=_interopRequireDefault(r(4));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var a=function(){function CssSyntaxError(e,t,r,n,o,i){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,CssSyntaxError),this.name="CssSyntaxError",this.reason=e,o&&(this.file=o),n&&(this.source=n),i&&(this.plugin=i),void 0!==t&&void 0!==r&&(this.line=t,this.column=r),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,CssSyntaxError)}return CssSyntaxError.prototype.setMessage=function(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",void 0!==this.line&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason},CssSyntaxError.prototype.showSourceCode=function(e){var t=this;if(!this.source)return"";var r=this.source;void 0===e&&(e=o.default),e&&(r=(0,s.default)(r));var n=r.split(/\r?\n/),u=Math.max(this.line-3,0),a=Math.min(this.line+2,n.length),c=String(a).length,l=new i.default.constructor({enabled:!0});function mark(t){return e?l.red.bold(t):t}function aside(t){return e?l.gray(t):t}return n.slice(u,a).map((function(e,r){var n=u+1+r,o=" "+(" "+n).slice(-c)+" | ";if(n===t.line){var i=aside(o.replace(/\d/g," "))+e.slice(0,t.column-1).replace(/[^\t]/g," ");return mark(">")+aside(o)+e+"\n "+i+mark("^")}return" "+aside(o)+e})).join("\n")},CssSyntaxError.prototype.toString=function(){var e=this.showSourceCode();return e&&(e="\n\n"+e+"\n"),this.name+": "+this.message+e},n(CssSyntaxError,[{key:"generated",get:function(){return(0,u.default)("CssSyntaxError#generated is deprecated. Use input instead."),this.input}}]),CssSyntaxError}();t.default=a,e.exports=t.default},function(e,t,r){"use strict";(function(t){var n=r(28),o=r(143),i=r(145),s=r(146),u=r(147),a=Object.defineProperties,c="win32"===t.platform&&!/^xterm/i.test(t.env.TERM);function Chalk(e){this.enabled=e&&void 0!==e.enabled?e.enabled:u}c&&(o.blue.open="");var l,f=(l={},Object.keys(o).forEach((function(e){o[e].closeRe=new RegExp(n(o[e].close),"g"),l[e]={get:function(){return build.call(this,this._styles.concat(e))}}})),l),p=a((function(){}),f);function build(e){var t=function builder(){return applyStyle.apply(builder,arguments)};return t._styles=e,t.enabled=this.enabled,t.__proto__=p,t}function applyStyle(){var e=arguments,t=e.length,r=0!==t&&String(arguments[0]);if(t>1)for(var n=1;n<t;n++)r+=" "+e[n];if(!this.enabled||!r)return r;var i=this._styles,s=i.length,u=o.dim.open;for(!c||-1===i.indexOf("gray")&&-1===i.indexOf("grey")||(o.dim.open="");s--;){var a=o[i[s]];r=a.open+r.replace(a.closeRe,a.open)+a.close}return o.dim.open=u,r}a(Chalk.prototype,function(){var e={};return Object.keys(f).forEach((function(t){e[t]={get:function(){return build.call(this,[t])}}})),e}()),e.exports=new Chalk,e.exports.styles=o,e.exports.hasColor=s,e.exports.stripColor=i,e.exports.supportsColor=u}).call(this,r(12))},function(e,t,r){"use strict";e.exports=function(){return/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]/g}},function(e,t,r){"use strict";t.__esModule=!0,t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=[],O=e.css.valueOf(),P=t.ignoreErrors,x=void 0,A=void 0,R=void 0,M=void 0,E=void 0,T=void 0,j=void 0,N=void 0,B=void 0,L=void 0,D=void 0,I=void 0,U=void 0,q=O.length,G=-1,F=1,W=0;function unclosed(t){throw e.error("Unclosed "+t,F,W-G)}for(;W<q;){switch(((x=O.charCodeAt(W))===u||x===c||x===f&&O.charCodeAt(W+1)!==u)&&(G=W,F+=1),x){case u:case a:case l:case f:case c:A=W;do{A+=1,(x=O.charCodeAt(A))===u&&(G=A,F+=1)}while(x===a||x===u||x===l||x===f||x===c);r.push(["space",O.slice(W,A)]),W=A-1;break;case p:r.push(["[","[",F,W-G]);break;case h:r.push(["]","]",F,W-G]);break;case m:r.push(["{","{",F,W-G]);break;case g:r.push(["}","}",F,W-G]);break;case w:r.push([":",":",F,W-G]);break;case v:r.push([";",";",F,W-G]);break;case d:if(I=r.length?r[r.length-1][1]:"",U=O.charCodeAt(W+1),"url"===I&&U!==n&&U!==o&&U!==a&&U!==u&&U!==l&&U!==c&&U!==f){A=W;do{if(L=!1,-1===(A=O.indexOf(")",A+1))){if(P){A=W;break}unclosed("bracket")}for(D=A;O.charCodeAt(D-1)===i;)D-=1,L=!L}while(L);r.push(["brackets",O.slice(W,A+1),F,W-G,F,A-G]),W=A}else A=O.indexOf(")",W+1),T=O.slice(W,A+1),-1===A||k.test(T)?r.push(["(","(",F,W-G]):(r.push(["brackets",T,F,W-G,F,A-G]),W=A);break;case y:r.push([")",")",F,W-G]);break;case n:case o:R=x===n?"'":'"',A=W;do{if(L=!1,-1===(A=O.indexOf(R,A+1))){if(P){A=W+1;break}unclosed("string")}for(D=A;O.charCodeAt(D-1)===i;)D-=1,L=!L}while(L);T=O.slice(W,A+1),M=T.split("\n"),(E=M.length-1)>0?(N=F+E,B=A-M[E].length):(N=F,B=G),r.push(["string",O.slice(W,A+1),F,W-G,N,A-B]),G=B,F=N,W=A;break;case _:S.lastIndex=W+1,S.test(O),A=0===S.lastIndex?O.length-1:S.lastIndex-2,r.push(["at-word",O.slice(W,A+1),F,W-G,F,A-G]),W=A;break;case i:for(A=W,j=!0;O.charCodeAt(A+1)===i;)A+=1,j=!j;x=O.charCodeAt(A+1),j&&x!==s&&x!==a&&x!==u&&x!==l&&x!==f&&x!==c&&(A+=1),r.push(["word",O.slice(W,A+1),F,W-G,F,A-G]),W=A;break;default:x===s&&O.charCodeAt(W+1)===b?(0===(A=O.indexOf("*/",W+2)+1)&&(P?A=O.length:unclosed("comment")),T=O.slice(W,A+1),M=T.split("\n"),(E=M.length-1)>0?(N=F+E,B=A-M[E].length):(N=F,B=G),r.push(["comment",T,F,W-G,N,A-B]),G=B,F=N,W=A):(C.lastIndex=W+1,C.test(O),A=0===C.lastIndex?O.length-1:C.lastIndex-2,r.push(["word",O.slice(W,A+1),F,W-G,F,A-G]),W=A)}W++}return r};var n=39,o=34,i=92,s=47,u=10,a=32,c=12,l=9,f=13,p=91,h=93,d=40,y=41,m=123,g=125,v=59,b=42,w=58,_=64,S=/[ \n\t\r\f\{\(\)'"\\;/\[\]#]/g,C=/[ \n\t\r\f\(\)\{\}:;@!'"\\\]\[#]|\/(?=\*)/g,k=/.[\\\/\("'\n]/;e.exports=t.default},function(e,t,r){(function(n){var o;!function(n){"use strict";var i,s=n.Base64;if(e.exports)try{i=r(17).Buffer}catch(e){}var u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=function(e){for(var t={},r=0,n=e.length;r<n;r++)t[e.charAt(r)]=r;return t}(u),c=String.fromCharCode,cb_utob=function(e){if(e.length<2)return(t=e.charCodeAt(0))<128?e:t<2048?c(192|t>>>6)+c(128|63&t):c(224|t>>>12&15)+c(128|t>>>6&63)+c(128|63&t);var t=65536+1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320);return c(240|t>>>18&7)+c(128|t>>>12&63)+c(128|t>>>6&63)+c(128|63&t)},l=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,utob=function(e){return e.replace(l,cb_utob)},cb_encode=function(e){var t=[0,2,1][e.length%3],r=e.charCodeAt(0)<<16|(e.length>1?e.charCodeAt(1):0)<<8|(e.length>2?e.charCodeAt(2):0);return[u.charAt(r>>>18),u.charAt(r>>>12&63),t>=2?"=":u.charAt(r>>>6&63),t>=1?"=":u.charAt(63&r)].join("")},f=n.btoa?function(e){return n.btoa(e)}:function(e){return e.replace(/[\s\S]{1,3}/g,cb_encode)},p=i?i.from&&i.from!==Uint8Array.from?function(e){return(e.constructor===i.constructor?e:i.from(e)).toString("base64")}:function(e){return(e.constructor===i.constructor?e:new i(e)).toString("base64")}:function(e){return f(utob(e))},encode=function(e,t){return t?p(String(e)).replace(/[+\/]/g,(function(e){return"+"==e?"-":"_"})).replace(/=/g,""):p(String(e))},h=new RegExp(["[À-ß][€-¿]","[à-ï][€-¿]{2}","[ð-÷][€-¿]{3}"].join("|"),"g"),cb_btou=function(e){switch(e.length){case 4:var t=((7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3))-65536;return c(55296+(t>>>10))+c(56320+(1023&t));case 3:return c((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return c((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},btou=function(e){return e.replace(h,cb_btou)},cb_decode=function(e){var t=e.length,r=t%4,n=(t>0?a[e.charAt(0)]<<18:0)|(t>1?a[e.charAt(1)]<<12:0)|(t>2?a[e.charAt(2)]<<6:0)|(t>3?a[e.charAt(3)]:0),o=[c(n>>>16),c(n>>>8&255),c(255&n)];return o.length-=[0,0,2,1][r],o.join("")},d=n.atob?function(e){return n.atob(e)}:function(e){return e.replace(/[\s\S]{1,4}/g,cb_decode)},y=i?i.from&&i.from!==Uint8Array.from?function(e){return(e.constructor===i.constructor?e:i.from(e,"base64")).toString()}:function(e){return(e.constructor===i.constructor?e:new i(e,"base64")).toString()}:function(e){return btou(d(e))},decode=function(e){return y(String(e).replace(/[-_]/g,(function(e){return"-"==e?"+":"/"})).replace(/[^A-Za-z0-9\+\/]/g,""))};if(n.Base64={VERSION:"2.3.2",atob:d,btoa:f,fromBase64:decode,toBase64:encode,utob:utob,encode:encode,encodeURI:function(e){return encode(e,!0)},btou:btou,decode:decode,noConflict:function(){var e=n.Base64;return n.Base64=s,e}},"function"==typeof Object.defineProperty){var noEnum=function(e){return{value:e,enumerable:!1,writable:!0,configurable:!0}};n.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",noEnum((function(){return decode(this)}))),Object.defineProperty(String.prototype,"toBase64",noEnum((function(e){return encode(this,e)}))),Object.defineProperty(String.prototype,"toBase64URI",noEnum((function(){return encode(this,!0)})))}}n.Meteor&&(Base64=n.Base64),e.exports?e.exports.Base64=n.Base64:void 0===(o=function(){return n.Base64}.apply(t,[]))||(e.exports=o)}("undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n?n:this)}).call(this,r(60))},function(e,t,r){t.SourceMapGenerator=r(79).SourceMapGenerator,t.SourceMapConsumer=r(152).SourceMapConsumer,t.SourceNode=r(155).SourceNode},function(e,t,r){var n=r(80),o=r(9),i=r(81).ArraySet,s=r(151).MappingList;function SourceMapGenerator(e){e||(e={}),this._file=o.getArg(e,"file",null),this._sourceRoot=o.getArg(e,"sourceRoot",null),this._skipValidation=o.getArg(e,"skipValidation",!1),this._sources=new i,this._names=new i,this._mappings=new s,this._sourcesContents=null}SourceMapGenerator.prototype._version=3,SourceMapGenerator.fromSourceMap=function(e){var t=e.sourceRoot,r=new SourceMapGenerator({file:e.file,sourceRoot:t});return e.eachMapping((function(e){var n={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(n.source=e.source,null!=t&&(n.source=o.relative(t,n.source)),n.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(n.name=e.name)),r.addMapping(n)})),e.sources.forEach((function(t){var n=e.sourceContentFor(t);null!=n&&r.setSourceContent(t,n)})),r},SourceMapGenerator.prototype.addMapping=function(e){var t=o.getArg(e,"generated"),r=o.getArg(e,"original",null),n=o.getArg(e,"source",null),i=o.getArg(e,"name",null);this._skipValidation||this._validateMapping(t,r,n,i),null!=n&&(n=String(n),this._sources.has(n)||this._sources.add(n)),null!=i&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:n,name:i})},SourceMapGenerator.prototype.setSourceContent=function(e,t){var r=e;null!=this._sourceRoot&&(r=o.relative(this._sourceRoot,r)),null!=t?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[o.toSetString(r)]=t):this._sourcesContents&&(delete this._sourcesContents[o.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},SourceMapGenerator.prototype.applySourceMap=function(e,t,r){var n=t;if(null==t){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');n=e.file}var s=this._sourceRoot;null!=s&&(n=o.relative(s,n));var u=new i,a=new i;this._mappings.unsortedForEach((function(t){if(t.source===n&&null!=t.originalLine){var i=e.originalPositionFor({line:t.originalLine,column:t.originalColumn});null!=i.source&&(t.source=i.source,null!=r&&(t.source=o.join(r,t.source)),null!=s&&(t.source=o.relative(s,t.source)),t.originalLine=i.line,t.originalColumn=i.column,null!=i.name&&(t.name=i.name))}var c=t.source;null==c||u.has(c)||u.add(c);var l=t.name;null==l||a.has(l)||a.add(l)}),this),this._sources=u,this._names=a,e.sources.forEach((function(t){var n=e.sourceContentFor(t);null!=n&&(null!=r&&(t=o.join(r,t)),null!=s&&(t=o.relative(s,t)),this.setSourceContent(t,n))}),this)},SourceMapGenerator.prototype._validateMapping=function(e,t,r,n){if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||t||r||n)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:t,name:n}))},SourceMapGenerator.prototype._serializeMappings=function(){for(var e,t,r,i,s=0,u=1,a=0,c=0,l=0,f=0,p="",h=this._mappings.toArray(),d=0,y=h.length;d<y;d++){if(e="",(t=h[d]).generatedLine!==u)for(s=0;t.generatedLine!==u;)e+=";",u++;else if(d>0){if(!o.compareByGeneratedPositionsInflated(t,h[d-1]))continue;e+=","}e+=n.encode(t.generatedColumn-s),s=t.generatedColumn,null!=t.source&&(i=this._sources.indexOf(t.source),e+=n.encode(i-f),f=i,e+=n.encode(t.originalLine-1-c),c=t.originalLine-1,e+=n.encode(t.originalColumn-a),a=t.originalColumn,null!=t.name&&(r=this._names.indexOf(t.name),e+=n.encode(r-l),l=r)),p+=e}return p},SourceMapGenerator.prototype._generateSourcesContent=function(e,t){return e.map((function(e){if(!this._sourcesContents)return null;null!=t&&(e=o.relative(t,e));var r=o.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null}),this)},SourceMapGenerator.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},SourceMapGenerator.prototype.toString=function(){return JSON.stringify(this.toJSON())},t.SourceMapGenerator=SourceMapGenerator},function(e,t,r){var n=r(150);t.encode=function(e){var t,r="",o=function(e){return e<0?1+(-e<<1):0+(e<<1)}(e);do{t=31&o,(o>>>=5)>0&&(t|=32),r+=n.encode(t)}while(o>0);return r},t.decode=function(e,t,r){var o,i,s,u,a=e.length,c=0,l=0;do{if(t>=a)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(i=n.decode(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));o=!!(32&i),c+=(i&=31)<<l,l+=5}while(o);r.value=(u=(s=c)>>1,1==(1&s)?-u:u),r.rest=t}},function(e,t,r){var n=r(9),o=Object.prototype.hasOwnProperty;function ArraySet(){this._array=[],this._set=Object.create(null)}ArraySet.fromArray=function(e,t){for(var r=new ArraySet,n=0,o=e.length;n<o;n++)r.add(e[n],t);return r},ArraySet.prototype.size=function(){return Object.getOwnPropertyNames(this._set).length},ArraySet.prototype.add=function(e,t){var r=n.toSetString(e),i=o.call(this._set,r),s=this._array.length;i&&!t||this._array.push(e),i||(this._set[r]=s)},ArraySet.prototype.has=function(e){var t=n.toSetString(e);return o.call(this._set,t)},ArraySet.prototype.indexOf=function(e){var t=n.toSetString(e);if(o.call(this._set,t))return this._set[t];throw new Error('"'+e+'" is not in the set.')},ArraySet.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw new Error("No element indexed by "+e)},ArraySet.prototype.toArray=function(){return this._array.slice()},t.ArraySet=ArraySet},function(e,t,r){"use strict";t.__esModule=!0,t.default=function(e,t){new i.default(t).stringify(e)};var n,o=r(23),i=(n=o)&&n.__esModule?n:{default:n};e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),o=_interopRequireDefault(r(4));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var i=function(e){function Declaration(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Declaration);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type="decl",r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Declaration,e),n(Declaration,[{key:"_value",get:function(){return(0,o.default)("Node#_value was deprecated. Use Node#raws.value"),this.raws.value},set:function(e){(0,o.default)("Node#_value was deprecated. Use Node#raws.value"),this.raws.value=e}},{key:"_important",get:function(){return(0,o.default)("Node#_important was deprecated. Use Node#raws.important"),this.raws.important},set:function(e){(0,o.default)("Node#_important was deprecated. Use Node#raws.important"),this.raws.important=e}}]),Declaration}(_interopRequireDefault(r(21)).default);t.default=i,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.default=function(e,t){if(t&&t.safe)throw new Error('Option safe was removed. Use parser: require("postcss-safe-parser")');var r=new o.default(e,t),i=new n.default(r);try{i.tokenize(),i.loop()}catch(e){throw"CssSyntaxError"===e.name&&t&&t.from&&(/\.scss$/i.test(t.from)?e.message+="\nYou tried to parse SCSS with the standard CSS parser; try again with the postcss-scss parser":/\.sass/i.test(t.from)?e.message+="\nYou tried to parse Sass with the standard CSS parser; try again with the postcss-sass parser":/\.less$/i.test(t.from)&&(e.message+="\nYou tried to parse Less with the standard CSS parser; try again with the postcss-less parser")),e}return i.root};var n=_interopRequireDefault(r(85)),o=_interopRequireDefault(r(22));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0;var n=_interopRequireDefault(r(83)),o=_interopRequireDefault(r(76)),i=_interopRequireDefault(r(20)),s=_interopRequireDefault(r(25)),u=_interopRequireDefault(r(26)),a=_interopRequireDefault(r(10));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var c=function(){function Parser(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Parser),this.input=e,this.pos=0,this.root=new u.default,this.current=this.root,this.spaces="",this.semicolon=!1,this.root.source={input:e,start:{line:1,column:1}}}return Parser.prototype.tokenize=function(){this.tokens=(0,o.default)(this.input)},Parser.prototype.loop=function(){for(var e=void 0;this.pos<this.tokens.length;){switch((e=this.tokens[this.pos])[0]){case"space":case";":this.spaces+=e[1];break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other()}this.pos+=1}this.endFile()},Parser.prototype.comment=function(e){var t=new i.default;this.init(t,e[2],e[3]),t.source.end={line:e[4],column:e[5]};var r=e[1].slice(2,-2);if(/^\s*$/.test(r))t.text="",t.raws.left=r,t.raws.right="";else{var n=r.match(/^(\s*)([^]*[^\s])(\s*)$/);t.text=n[2],t.raws.left=n[1],t.raws.right=n[3]}},Parser.prototype.emptyRule=function(e){var t=new a.default;this.init(t,e[2],e[3]),t.selector="",t.raws.between="",this.current=t},Parser.prototype.other=function(){for(var e=void 0,t=!1,r=null,n=!1,o=null,i=[],s=this.pos;this.pos<this.tokens.length;){if("("===(r=(e=this.tokens[this.pos])[0])||"["===r)o||(o=e),i.push("("===r?")":"]");else if(0===i.length){if(";"===r){if(n)return void this.decl(this.tokens.slice(s,this.pos+1));break}if("{"===r)return void this.rule(this.tokens.slice(s,this.pos+1));if("}"===r){this.pos-=1,t=!0;break}":"===r&&(n=!0)}else r===i[i.length-1]&&(i.pop(),0===i.length&&(o=null));this.pos+=1}if(this.pos===this.tokens.length&&(this.pos-=1,t=!0),i.length>0&&this.unclosedBracket(o),t&&n){for(;this.pos>s&&("space"===(e=this.tokens[this.pos][0])||"comment"===e);)this.pos-=1;this.decl(this.tokens.slice(s,this.pos+1))}else this.unknownWord(s)},Parser.prototype.rule=function(e){e.pop();var t=new a.default;this.init(t,e[0][2],e[0][3]),t.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(t,"selector",e),this.current=t},Parser.prototype.decl=function(e){var t=new n.default;this.init(t);var r=e[e.length-1];for(";"===r[0]&&(this.semicolon=!0,e.pop()),r[4]?t.source.end={line:r[4],column:r[5]}:t.source.end={line:r[2],column:r[3]};"word"!==e[0][0];)t.raws.before+=e.shift()[1];for(t.source.start={line:e[0][2],column:e[0][3]},t.prop="";e.length;){var o=e[0][0];if(":"===o||"space"===o||"comment"===o)break;t.prop+=e.shift()[1]}t.raws.between="";for(var i=void 0;e.length;){if(":"===(i=e.shift())[0]){t.raws.between+=i[1];break}t.raws.between+=i[1]}"_"!==t.prop[0]&&"*"!==t.prop[0]||(t.raws.before+=t.prop[0],t.prop=t.prop.slice(1)),t.raws.between+=this.spacesAndCommentsFromStart(e),this.precheckMissedSemicolon(e);for(var s=e.length-1;s>0;s--){if("!important"===(i=e[s])[1]){t.important=!0;var u=this.stringFrom(e,s);" !important"!==(u=this.spacesFromEnd(e)+u)&&(t.raws.important=u);break}if("important"===i[1]){for(var a=e.slice(0),c="",l=s;l>0;l--){var f=a[l][0];if(0===c.trim().indexOf("!")&&"space"!==f)break;c=a.pop()[1]+c}0===c.trim().indexOf("!")&&(t.important=!0,t.raws.important=c,e=a)}if("space"!==i[0]&&"comment"!==i[0])break}this.raw(t,"value",e),-1!==t.value.indexOf(":")&&this.checkMissedSemicolon(e)},Parser.prototype.atrule=function(e){var t=new s.default;t.name=e[1].slice(1),""===t.name&&this.unnamedAtrule(t,e),this.init(t,e[2],e[3]);var r=!1,n=!1,o=[];for(this.pos+=1;this.pos<this.tokens.length;){if(";"===(e=this.tokens[this.pos])[0]){t.source.end={line:e[2],column:e[3]},this.semicolon=!0;break}if("{"===e[0]){n=!0;break}if("}"===e[0]){this.end(e);break}o.push(e),this.pos+=1}this.pos===this.tokens.length&&(r=!0),t.raws.between=this.spacesAndCommentsFromEnd(o),o.length?(t.raws.afterName=this.spacesAndCommentsFromStart(o),this.raw(t,"params",o),r&&(e=o[o.length-1],t.source.end={line:e[4],column:e[5]},this.spaces=t.raws.between,t.raws.between="")):(t.raws.afterName="",t.params=""),n&&(t.nodes=[],this.current=t)},Parser.prototype.end=function(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end={line:e[2],column:e[3]},this.current=this.current.parent):this.unexpectedClose(e)},Parser.prototype.endFile=function(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces},Parser.prototype.init=function(e,t,r){this.current.push(e),e.source={start:{line:t,column:r},input:this.input},e.raws.before=this.spaces,this.spaces="","comment"!==e.type&&(this.semicolon=!1)},Parser.prototype.raw=function(e,t,r){for(var n=void 0,o=void 0,i=r.length,s="",u=!0,a=0;a<i;a+=1)"comment"===(o=(n=r[a])[0])||"space"===o&&a===i-1?u=!1:s+=n[1];if(!u){var c=r.reduce((function(e,t){return e+t[1]}),"");e.raws[t]={value:s,raw:c}}e[t]=s},Parser.prototype.spacesAndCommentsFromEnd=function(e){for(var t=void 0,r="";e.length&&("space"===(t=e[e.length-1][0])||"comment"===t);)r=e.pop()[1]+r;return r},Parser.prototype.spacesAndCommentsFromStart=function(e){for(var t=void 0,r="";e.length&&("space"===(t=e[0][0])||"comment"===t);)r+=e.shift()[1];return r},Parser.prototype.spacesFromEnd=function(e){for(var t="";e.length&&"space"===e[e.length-1][0];)t=e.pop()[1]+t;return t},Parser.prototype.stringFrom=function(e,t){for(var r="",n=t;n<e.length;n++)r+=e[n][1];return e.splice(t,e.length-t),r},Parser.prototype.colon=function(e){for(var t=0,r=void 0,n=void 0,o=void 0,i=0;i<e.length;i++){if("("===(n=(r=e[i])[0]))t+=1;else if(")"===n)t-=1;else if(0===t&&":"===n){if(o){if("word"===o[0]&&"progid"===o[1])continue;return i}this.doubleColon(r)}o=r}return!1},Parser.prototype.unclosedBracket=function(e){throw this.input.error("Unclosed bracket",e[2],e[3])},Parser.prototype.unknownWord=function(e){var t=this.tokens[e];throw this.input.error("Unknown word",t[2],t[3])},Parser.prototype.unexpectedClose=function(e){throw this.input.error("Unexpected }",e[2],e[3])},Parser.prototype.unclosedBlock=function(){var e=this.current.source.start;throw this.input.error("Unclosed block",e.line,e.column)},Parser.prototype.doubleColon=function(e){throw this.input.error("Double colon",e[2],e[3])},Parser.prototype.unnamedAtrule=function(e,t){throw this.input.error("At-rule without name",t[2],t[3])},Parser.prototype.precheckMissedSemicolon=function(e){},Parser.prototype.checkMissedSemicolon=function(e){var t=this.colon(e);if(!1!==t){for(var r=0,n=void 0,o=t-1;o>=0&&("space"===(n=e[o])[0]||2!==(r+=1));o--);throw this.input.error("Missed semicolon",n[2],n[3])}},Parser}();t.default=c,e.exports=t.default},function(e,t,r){"use strict";function _typeof2(e){return(_typeof2="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),o="function"==typeof Symbol&&"symbol"===_typeof2(Symbol.iterator)?function(e){return _typeof2(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":_typeof2(e)},i=_interopRequireDefault(r(158)),s=_interopRequireDefault(r(82)),u=_interopRequireDefault(r(4)),a=_interopRequireDefault(r(159)),c=_interopRequireDefault(r(84));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function isPromise(e){return"object"===(void 0===e?"undefined":o(e))&&"function"==typeof e.then}var l=function(){function LazyResult(e,t,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,LazyResult),this.stringified=!1,this.processed=!1;var n=void 0;if("object"===(void 0===t?"undefined":o(t))&&"root"===t.type)n=t;else if(t instanceof LazyResult||t instanceof a.default)n=t.root,t.map&&(void 0===r.map&&(r.map={}),r.map.inline||(r.map.inline=!1),r.map.prev=t.map);else{var i=c.default;r.syntax&&(i=r.syntax.parse),r.parser&&(i=r.parser),i.parse&&(i=i.parse);try{n=i(t,r)}catch(e){this.error=e}}this.result=new a.default(e,n,r)}return LazyResult.prototype.warnings=function(){return this.sync().warnings()},LazyResult.prototype.toString=function(){return this.css},LazyResult.prototype.then=function(e,t){return this.async().then(e,t)},LazyResult.prototype.catch=function(e){return this.async().catch(e)},LazyResult.prototype.handleError=function(e,t){try{if(this.error=e,"CssSyntaxError"!==e.name||e.plugin){if(t.postcssVersion){var r=t.postcssPlugin,n=t.postcssVersion,o=this.result.processor.version,i=n.split("."),s=o.split(".");(i[0]!==s[0]||parseInt(i[1])>parseInt(s[1]))&&(0,u.default)("Your current PostCSS version is "+o+", but "+r+" uses "+n+". Perhaps this is the source of the error below.")}}else e.plugin=t.postcssPlugin,e.setMessage()}catch(e){console&&console.error&&console.error(e)}},LazyResult.prototype.asyncTick=function(e,t){var r=this;if(this.plugin>=this.processor.plugins.length)return this.processed=!0,e();try{var n=this.processor.plugins[this.plugin],o=this.run(n);this.plugin+=1,isPromise(o)?o.then((function(){r.asyncTick(e,t)})).catch((function(e){r.handleError(e,n),r.processed=!0,t(e)})):this.asyncTick(e,t)}catch(e){this.processed=!0,t(e)}},LazyResult.prototype.async=function(){var e=this;return this.processed?new Promise((function(t,r){e.error?r(e.error):t(e.stringify())})):this.processing?this.processing:(this.processing=new Promise((function(t,r){if(e.error)return r(e.error);e.plugin=0,e.asyncTick(t,r)})).then((function(){return e.processed=!0,e.stringify()})),this.processing)},LazyResult.prototype.sync=function(){if(this.processed)return this.result;if(this.processed=!0,this.processing)throw new Error("Use process(css).then(cb) to work with async plugins");if(this.error)throw this.error;var e=this.result.processor.plugins,t=Array.isArray(e),r=0;for(e=t?e:e[Symbol.iterator]();;){var n;if(t){if(r>=e.length)break;n=e[r++]}else{if((r=e.next()).done)break;n=r.value}var o=n;if(isPromise(this.run(o)))throw new Error("Use process(css).then(cb) to work with async plugins")}return this.result},LazyResult.prototype.run=function(e){this.result.lastPlugin=e;try{return e(this.result.root,this.result)}catch(t){throw this.handleError(t,e),t}},LazyResult.prototype.stringify=function(){if(this.stringified)return this.result;this.stringified=!0,this.sync();var e=this.result.opts,t=s.default;e.syntax&&(t=e.syntax.stringify),e.stringifier&&(t=e.stringifier),t.stringify&&(t=t.stringify);var r=new i.default(t,this.result.root,this.result.opts).generate();return this.result.css=r[0],this.result.map=r[1],this.result},n(LazyResult,[{key:"processor",get:function(){return this.result.processor}},{key:"opts",get:function(){return this.result.opts}},{key:"css",get:function(){return this.stringify().css}},{key:"content",get:function(){return this.stringify().content}},{key:"map",get:function(){return this.stringify().map}},{key:"root",get:function(){return this.sync().root}},{key:"messages",get:function(){return this.sync().messages}}]),LazyResult}();t.default=l,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var n=r(88),o=r(27),i=r(89),s=r(90).hasPragma,u=r(95),a=u.isSCSS,c=u.isSCSSNestedPropertyNode;function parseValueNodes(e){for(var t={open:null,close:null,groups:[],type:"paren_group"},r=[t],n=t,o={groups:[],type:"comma_group"},i=[o],s=0;s<e.length;++s){var u=e[s];if("func"===u.type&&"url"===u.value&&u.group&&u.group.groups&&u.group.groups[0]&&u.group.groups[0].groups&&u.group.groups[0].groups.length>2&&"word"===u.group.groups[0].groups[0].type&&"data"===u.group.groups[0].groups[0].value&&"colon"===u.group.groups[0].groups[1].type&&":"===u.group.groups[0].groups[1].value&&(u.group.groups=[stringifyGroup(u)]),"paren"===u.type&&"("===u.value)t={open:u,close:null,groups:[],type:"paren_group"},r.push(t),o={groups:[],type:"comma_group"},i.push(o);else if("paren"===u.type&&")"===u.value){if(o.groups.length&&t.groups.push(o),t.close=u,1===i.length)throw new Error("Unbalanced parenthesis");i.pop(),(o=i[i.length-1]).groups.push(t),r.pop(),t=r[r.length-1]}else"comma"===u.type?(t.groups.push(o),o={groups:[],type:"comma_group"},i[i.length-1]=o):o.groups.push(u)}return o.groups.length>0&&t.groups.push(o),n}function stringifyGroup(e){return e.group?stringifyGroup(e.group):e.groups?e.groups.reduce((function(t,r,n){return t+stringifyGroup(r)+("comma_group"===r.type&&n!==e.groups.length-1?",":"")}),""):(e.raws&&e.raws.before?e.raws.before:"")+(e.value?e.value:"")+(e.unit?e.unit:"")+(e.raws&&e.raws.after?e.raws.after:"")}function flattenGroups(e){return"paren_group"!==e.type||e.open||e.close||1!==e.groups.length?"comma_group"===e.type&&1===e.groups.length?flattenGroups(e.groups[0]):"paren_group"===e.type||"comma_group"===e.type?Object.assign({},e,{groups:e.groups.map(flattenGroups)}):e:flattenGroups(e.groups[0])}function addTypePrefix(e,t){if(e&&"object"===_typeof(e))for(var r in delete e.parent,e)addTypePrefix(e[r],t),"type"===r&&"string"==typeof e[r]&&(e[r].startsWith(t)||(e[r]=t+e[r]));return e}function parseValue(e){var t=r(97),n=null;try{n=t(e,{loose:!0}).parse()}catch(t){return{type:"value-unknown",value:e}}return addTypePrefix(function parseNestedValue(e){if(e&&"object"===_typeof(e))for(var t in delete e.parent,e)parseNestedValue(e[t]),"nodes"===t&&(e.group=flattenGroups(parseValueNodes(e[t])),delete e[t]);return e}(n),"value-")}function parseSelector(e){if(e.match(/\/\/|\/\*/))return{type:"selector-unknown",value:e.replace(/^ +/,"").replace(/ +$/,"")};var t=r(106),n=null;try{t((function(e){n=e})).process(e)}catch(t){return{type:"selector-unknown",value:e}}return addTypePrefix(n,"selector-")}function parseMediaQuery(e){var t=r(111).default,n=null;try{n=t(e)}catch(t){return{type:"selector-unknown",value:e}}return addTypePrefix(function addMissingType(e){if(e&&"object"===_typeof(e)){for(var t in delete e.parent,e)addMissingType(e[t]);Array.isArray(e)||!e.value||e.type||(e.type="unknown")}return e}(n),"media-")}var l=/(\s*?)(!default).*$/,f=/(\s*?)(!global).*$/;function parseWithParser(e,t,r){var i,s=o(t),u=s.frontMatter;t=s.content;try{i=e.parse(t)}catch(e){if("number"!=typeof e.line)throw e;throw n("(postcss) "+e.name+" "+e.reason,{start:e})}return i=function parseNestedCSS(e,t){if(e&&"object"===_typeof(e)){for(var r in delete e.parent,e)parseNestedCSS(e[r],t);if(!e.type)return e;e.raws||(e.raws={});var n="";"string"==typeof e.selector&&(n=e.raws.selector?e.raws.selector.scss?e.raws.selector.scss:e.raws.selector.raw:e.selector,e.raws.between&&e.raws.between.trim().length>0&&(n+=e.raws.between),e.raws.selector=n),"css"===t.parser&&"css-decl"===e.type&&"@custom-selector"===e.prop&&(n=e.value,e.raws.value=n);var o="";"string"==typeof e.value&&(o=(o=e.raws.value?e.raws.value.scss?e.raws.value.scss:e.raws.value.raw:e.value).trim(),e.raws.value=n);var i="";if("string"==typeof e.params&&(i=e.raws.params?e.raws.params.scss?e.raws.params.scss:e.raws.params.raw:e.params,e.raws.afterName&&e.raws.afterName.trim().length>0&&(i=e.raws.afterName+i),e.raws.between&&e.raws.between.trim().length>0&&(i+=e.raws.between),i=i.trim(),e.raws.params=i),n.trim().length>0)return n.startsWith("@")&&n.endsWith(":")?e:e.mixin?(e.selector=parseValue(n),e):(c(e)&&(e.isSCSSNesterProperty=!0),e.selector=parseSelector(n),e);if(o.length>0){var s=o.match(l);s&&(o=o.substring(0,s.index),e.scssDefault=!0,"!default"!==s[0].trim()&&(e.raws.scssDefault=s[0]));var u=o.match(f);if(u&&(o=o.substring(0,u.index),e.scssGlobal=!0,"!global"!==u[0].trim()&&(e.raws.scssGlobal=u[0])),o.startsWith("progid:"))return{type:"value-unknown",value:o};e.value=parseValue(o)}if("css-atrule"===e.type&&i.length>0){var a=e.name,p=e.name.toLowerCase();if("warn"===a||"error"===a)return e.params={type:"media-unknown",value:i},e;if("extend"===a||"nest"===a)return e.selector=parseSelector(i),delete e.params,e;if("at-root"===a)return/^\(\s*(without|with)\s*:[\s\S]+\)$/.test(i)?e.params=parseValue(i):(e.selector=parseSelector(i),delete e.params),e;if("import"===p)return e.params=parseValue(i),e;if(-1!==["namespace","supports","if","else","for","each","while","debug","mixin","include","function","return","define-mixin","add-mixin"].indexOf(a))return i=(i=i.replace(/(\$\S+?)\s+?\.\.\./,"$1...")).replace(/^(?!if)(\S+)\s+\(/,"$1("),e.value=parseValue(i),delete e.params,e;if("custom-selector"===a){var h=i.match(/:--\S+?\s+/)[0].trim();return e.customSelector=h,e.selector=parseSelector(i.substring(h.length)),delete e.params,e}return-1!==["media","custom-media"].indexOf(p)?i.includes("#{")?{type:"media-unknown",value:i}:(e.params=parseMediaQuery(i),e):(e.params=i,e)}}return e}(addTypePrefix(i,"css-"),r),u&&i.nodes.unshift(u),i}function requireParser(e){if(e)return r(113);var t=r(72);return t.prototype.atrule=function(){return Object.getPrototypeOf(t.prototype).atrule.apply(this,arguments)},r(182)}var p={parse:function(e,t,r){var n="less"===r.parser||"scss"===r.parser,o=a(r.parser,e);try{return parseWithParser(requireParser(o),e,r)}catch(t){if(n)throw t;try{return parseWithParser(requireParser(!o),e,r)}catch(e){throw t}}},astFormat:"postcss",hasPragma:s,locStart:function(e){return e.source?i(e.source.start,e.source.input.css)-1:null},locEnd:function(e){var t=e.nodes&&e.nodes[e.nodes.length-1];return t&&e.source&&!e.source.end&&(e=t),e.source&&e.source.end?i(e.source.end,e.source.input.css):null}};e.exports={parsers:{css:p,less:p,scss:p}}},function(e,t,r){"use strict";e.exports=function(e,t){var r=new SyntaxError(e+" ("+t.start.line+":"+t.start.column+")");return r.loc=t,r}},function(e,t,r){"use strict";e.exports=function(e,t){for(var r=0,n=0;n<e.line-1;++n)if(-1===(r=t.indexOf("\n",r)+1))return-1;return r+e.column}},function(e,t,r){"use strict";var n=r(91),o=r(27);e.exports={hasPragma:function(e){return n.hasPragma(o(e).content)},insertPragma:function(e){var t=o(e),r=t.frontMatter,i=t.content;return(r?r.raw+"\n\n":"")+n.insertPragma(i)}}},function(e,t,r){"use strict";var n=r(92);e.exports={hasPragma:function(e){var t=Object.keys(n.parse(n.extract(e)));return-1!==t.indexOf("prettier")||-1!==t.indexOf("format")},insertPragma:function(e){var t=n.parseWithComments(n.extract(e)),r=Object.assign({format:""},t.pragmas),o=n.print({pragmas:r,comments:t.comments.replace(/^(\s+?\r?\n)+/,"")}).replace(/(\r\n|\r)/g,"\n"),i=n.strip(e);return o+(i.startsWith("\n")?"\n":"\n\n")+i}}},function(e,t,r){"use strict";function _os(){var e=r(93);return _os=function(){return e},e}function _detectNewline(){var e,t=(e=r(94))&&e.__esModule?e:{default:e};return _detectNewline=function(){return t},t}Object.defineProperty(t,"__esModule",{value:!0}),t.extract=function(e){var t=e.match(i);return t?t[0].trimLeft():""},t.strip=function(e){var t=e.match(i);return t&&t[0]?e.substring(t[0].length):e},t.parse=function(e){return parseWithComments(e).pragmas},t.parseWithComments=parseWithComments,t.print=function(e){var t=e.comments,r=void 0===t?"":t,n=e.pragmas,o=void 0===n?{}:n,i=(0,_detectNewline().default)(r)||_os().EOL,s=Object.keys(o),u=s.map((function(e){return printKeyValues(e,o[e])})).reduce((function(e,t){return e.concat(t)}),[]).map((function(e){return" * "+e+i})).join("");if(!r){if(0===s.length)return"";if(1===s.length&&!Array.isArray(o[s[0]])){var a=o[s[0]];return"".concat("/**"," ").concat(printKeyValues(s[0],a)[0]).concat(" */")}}var c=r.split(i).map((function(e){return"".concat(" *"," ").concat(e)})).join(i)+i;return"/**"+i+(r?c:"")+(r&&s.length?" *"+i:"")+u+" */"};var n=/\*\/$/,o=/^\/\*\*/,i=/^\s*(\/\*\*?(.|\r?\n)*?\*\/)/,s=/(^|\s+)\/\/([^\r\n]*)/g,u=/^(\r?\n)+/,a=/(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g,c=/(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g,l=/(\r?\n|^) *\* ?/g;function parseWithComments(e){var t=(0,_detectNewline().default)(e)||_os().EOL;e=e.replace(o,"").replace(n,"").replace(l,"$1");for(var r="";r!==e;)r=e,e=e.replace(a,"".concat(t,"$1 $2").concat(t));e=e.replace(u,"").trimRight();for(var i,f=Object.create(null),p=e.replace(c,"").replace(u,"").trimRight();i=c.exec(e);){var h=i[2].replace(s,"");"string"==typeof f[i[1]]||Array.isArray(f[i[1]])?f[i[1]]=[].concat(f[i[1]],h):f[i[1]]=h}return{comments:p,pragmas:f}}function printKeyValues(e,t){return[].concat(t).map((function(t){return"@".concat(e," ").concat(t).trim()}))}},function(e,t){t.endianness=function(){return"LE"},t.hostname=function(){return"undefined"!=typeof location?location.hostname:""},t.loadavg=function(){return[]},t.uptime=function(){return 0},t.freemem=function(){return Number.MAX_VALUE},t.totalmem=function(){return Number.MAX_VALUE},t.cpus=function(){return[]},t.type=function(){return"Browser"},t.release=function(){return"undefined"!=typeof navigator?navigator.appVersion:""},t.networkInterfaces=t.getNetworkInterfaces=function(){return{}},t.arch=function(){return"javascript"},t.platform=function(){return"browser"},t.tmpdir=t.tmpDir=function(){return"/tmp"},t.EOL="\n",t.homedir=function(){return"/"}},function(e,t,r){"use strict";e.exports=function(e){if("string"!=typeof e)throw new TypeError("Expected a string");var t=e.match(/(?:\r?\n)/g)||[];if(0===t.length)return null;var r=t.filter((function(e){return"\r\n"===e})).length;return r>t.length-r?"\r\n":"\n"},e.exports.graceful=function(t){return e.exports(t)||"\n"}},function(e,t,r){"use strict";var n=r(96),o=["red","green","blue","alpha","a","rgb","hue","h","saturation","s","lightness","l","whiteness","w","blackness","b","tint","shade","blend","blenda","contrast","hsl","hsla","hwb","hwba"];function getAncestorCounter(e,t){for(var r,n=[].concat(t),o=-1;r=e.getParentNode(++o);)if(-1!==n.indexOf(r.type))return o;return-1}function getAncestorNode(e,t){var r=getAncestorCounter(e,t);return-1===r?null:e.getParentNode(r)}function isMultiplicationNode(e){return"value-operator"===e.type&&"*"===e.value}function isDivisionNode(e){return"value-operator"===e.type&&"/"===e.value}function isAdditionNode(e){return"value-operator"===e.type&&"+"===e.value}function isSubtractionNode(e){return"value-operator"===e.type&&"-"===e.value}function isModuloNode(e){return"value-operator"===e.type&&"%"===e.value}function isKeyValuePairNode(e){return"value-comma_group"===e.type&&e.groups&&e.groups[1]&&"value-colon"===e.groups[1].type}function isKeyValuePairInParenGroupNode(e){return"value-paren_group"===e.type&&e.groups&&e.groups[0]&&isKeyValuePairNode(e.groups[0])}e.exports={getAncestorCounter:getAncestorCounter,getAncestorNode:getAncestorNode,getPropOfDeclNode:function(e){var t=getAncestorNode(e,"css-decl");return t&&t.prop&&t.prop.toLowerCase()},maybeToLowerCase:function(e){return e.includes("$")||e.includes("@")||e.includes("#")||e.startsWith("%")||e.startsWith("--")||e.startsWith(":--")||e.includes("(")&&e.includes(")")?e:e.toLowerCase()},insideValueFunctionNode:function(e,t){var r=getAncestorNode(e,"value-func");return r&&r.value&&r.value.toLowerCase()===t},insideICSSRuleNode:function(e){var t=getAncestorNode(e,"css-rule");return t&&t.raws&&t.raws.selector&&(t.raws.selector.startsWith(":import")||t.raws.selector.startsWith(":export"))},insideAtRuleNode:function(e,t){var r=[].concat(t),n=getAncestorNode(e,"css-atrule");return n&&-1!==r.indexOf(n.name.toLowerCase())},insideURLFunctionInImportAtRuleNode:function(e){var t=e.getValue(),r=getAncestorNode(e,"css-atrule");return r&&"import"===r.name&&"url"===t.groups[0].value&&2===t.groups.length},isKeyframeAtRuleKeywords:function(e,t){var r=getAncestorNode(e,"css-atrule");return r&&r.name&&r.name.toLowerCase().endsWith("keyframes")&&-1!==["from","to"].indexOf(t.toLowerCase())},isHTMLTag:function(e){return-1!==n.indexOf(e.toLowerCase())},isWideKeywords:function(e){return-1!==["initial","inherit","unset","revert"].indexOf(e.toLowerCase())},isSCSS:function(e,t){return"less"===e||"scss"===e?"scss"===e:/(\w\s*: [^}:]+|#){|@import[^\n]+(url|,)/.test(t)},isLastNode:function(e,t){var r=e.getParentNode();if(!r)return!1;var n=r.nodes;return n&&n.indexOf(t)===n.length-1},isSCSSControlDirectiveNode:function(e){return"css-atrule"===e.type&&-1!==["if","else","for","each","while"].indexOf(e.name)},isDetachedRulesetDeclarationNode:function(e){return!!e.selector&&("string"==typeof e.selector&&/^@.+:.*$/.test(e.selector)||e.selector.value&&/^@.+:.*$/.test(e.selector.value))},isRelationalOperatorNode:function(e){return"value-word"===e.type&&-1!==["<",">","<=",">="].indexOf(e.value)},isEqualityOperatorNode:function(e){return"value-word"===e.type&&-1!==["==","!="].indexOf(e.value)},isMultiplicationNode:isMultiplicationNode,isDivisionNode:isDivisionNode,isAdditionNode:isAdditionNode,isSubtractionNode:isSubtractionNode,isModuloNode:isModuloNode,isMathOperatorNode:function(e){return isMultiplicationNode(e)||isDivisionNode(e)||isAdditionNode(e)||isSubtractionNode(e)||isModuloNode(e)},isEachKeywordNode:function(e){return"value-word"===e.type&&"in"===e.value},isForKeywordNode:function(e){return"value-word"===e.type&&-1!==["from","through","end"].indexOf(e.value)},isURLFunctionNode:function(e){return"value-func"===e.type&&"url"===e.value.toLowerCase()},isIfElseKeywordNode:function(e){return"value-word"===e.type&&-1!==["and","or","not"].indexOf(e.value)},hasComposesNode:function(e){return e.value&&"value-root"===e.value.type&&e.value.group&&"value-value"===e.value.group.type&&"composes"===e.prop.toLowerCase()},hasParensAroundNode:function(e){return e.value&&e.value.group&&e.value.group.group&&"value-paren_group"===e.value.group.group.type&&null!==e.value.group.group.open&&null!==e.value.group.group.close},hasEmptyRawBefore:function(e){return e.raws&&""===e.raws.before},isSCSSNestedPropertyNode:function(e){return!!e.selector&&e.selector.replace(/\/\*.*?\*\//,"").replace(/\/\/.*?\n/,"").trim().endsWith(":")},isDetachedRulesetCallNode:function(e){return e.raws&&e.raws.params&&/^\(\s*\)$/.test(e.raws.params)},isTemplatePlaceholderNode:function(e){return e.name.startsWith("prettier-placeholder")},isTemplatePropNode:function(e){return e.prop.startsWith("@prettier-placeholder")},isPostcssSimpleVarNode:function(e,t){return"$$"===e.value&&"value-func"===e.type&&t&&"value-word"===t.type&&!t.raws.before},isKeyValuePairNode:isKeyValuePairNode,isKeyValuePairInParenGroupNode:isKeyValuePairInParenGroupNode,isSCSSMapItemNode:function(e){var t=e.getValue();if(0===t.groups.length)return!1;var r=e.getParentNode(1);if(!(isKeyValuePairInParenGroupNode(t)||r&&isKeyValuePairInParenGroupNode(r)))return!1;var n=getAncestorNode(e,"css-decl");return!!(n&&n.prop&&n.prop.startsWith("$"))||(!!isKeyValuePairInParenGroupNode(r)||"value-func"===r.type)},isInlineValueCommentNode:function(e){return"value-comment"===e.type&&e.inline},isHashNode:function(e){return"value-word"===e.type&&"#"===e.value},isLeftCurlyBraceNode:function(e){return"value-word"===e.type&&"{"===e.value},isRightCurlyBraceNode:function(e){return"value-word"===e.type&&"}"===e.value},isWordNode:function(e){return-1!==["value-word","value-atword"].indexOf(e.type)},isColonNode:function(e){return"value-colon"===e.type},isMediaAndSupportsKeywords:function(e){return e.value&&-1!==["not","and","or"].indexOf(e.value.toLowerCase())},isColorAdjusterFuncNode:function(e){return"value-func"===e.type&&-1!==o.indexOf(e.value.toLowerCase())}}},function(e){e.exports=JSON.parse('["a","abbr","acronym","address","applet","area","article","aside","audio","b","base","basefont","bdi","bdo","bgsound","big","blink","blockquote","body","br","button","canvas","caption","center","cite","code","col","colgroup","command","content","data","datalist","dd","del","details","dfn","dialog","dir","div","dl","dt","element","em","embed","fieldset","figcaption","figure","font","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","image","img","input","ins","isindex","kbd","keygen","label","legend","li","link","listing","main","map","mark","marquee","math","menu","menuitem","meta","meter","multicol","nav","nextid","nobr","noembed","noframes","noscript","object","ol","optgroup","option","output","p","param","picture","plaintext","pre","progress","q","rb","rbc","rp","rt","rtc","ruby","s","samp","script","section","select","shadow","slot","small","source","spacer","span","strike","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","tt","u","ul","var","video","wbr","xmp"]')},function(e,t,r){"use strict";var n=r(98),o=r(30),i=r(31),s=r(32),u=r(33),a=r(34),c=r(35),l=r(36),f=r(37),p=r(38),h=r(40),d=r(29),y=r(39),parser=function(e,t){return new n(e,t)};parser.atword=function(e){return new o(e)},parser.colon=function(e){return e.value=e.value||":",new i(e)},parser.comma=function(e){return e.value=e.value||",",new s(e)},parser.comment=function(e){return new u(e)},parser.func=function(e){return new a(e)},parser.number=function(e){return new c(e)},parser.operator=function(e){return new l(e)},parser.paren=function(e){return e.value=e.value||"(",new f(e)},parser.string=function(e){return e.quote=e.quote||"'",new p(e)},parser.value=function(e){return new d(e)},parser.word=function(e){return new y(e)},parser.unicodeRange=function(e){return new h(e)},e.exports=parser},function(e,t,r){"use strict";function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var n=r(99),o=r(29),i=r(30),s=r(31),u=r(32),a=r(33),c=r(34),l=r(35),f=r(36),p=r(37),h=r(38),d=r(39),y=r(40),m=r(100),g=r(41),v=r(42),b=r(43),w=r(105);e.exports=function(){function Parser(e,t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Parser);this.cache=[],this.input=e,this.options=Object.assign({},{loose:!1},t),this.position=0,this.unbalanced=0,this.root=new n;var r=new o;this.root.append(r),this.current=r,this.tokens=m(e,this.options)}var e,t,r;return e=Parser,(t=[{key:"parse",value:function(){return this.loop()}},{key:"colon",value:function(){var e=this.currToken;this.newNode(new s({value:e[1],source:{start:{line:e[2],column:e[3]},end:{line:e[4],column:e[5]}},sourceIndex:e[6]})),this.position++}},{key:"comma",value:function(){var e=this.currToken;this.newNode(new u({value:e[1],source:{start:{line:e[2],column:e[3]},end:{line:e[4],column:e[5]}},sourceIndex:e[6]})),this.position++}},{key:"comment",value:function(){var e,t=!1,r=this.currToken[1].replace(/\/\*|\*\//g,"");this.options.loose&&r.startsWith("//")&&(r=r.substring(2),t=!0),e=new a({value:r,inline:t,source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[4],column:this.currToken[5]}},sourceIndex:this.currToken[6]}),this.newNode(e),this.position++}},{key:"error",value:function(e,t){throw new w(e+" at line: ".concat(t[2],", column ").concat(t[3]))}},{key:"loop",value:function(){for(;this.position<this.tokens.length;)this.parseTokens();return!this.current.last&&this.spaces?this.current.raws.before+=this.spaces:this.spaces&&(this.current.last.raws.after+=this.spaces),this.spaces="",this.root}},{key:"operator",value:function(){var e,t=this.currToken[1];if("+"===t||"-"===t)if(this.options.loose||this.position>0&&("func"===this.current.type&&"calc"===this.current.value?"space"!==this.prevToken[0]&&"("!==this.prevToken[0]?this.error("Syntax Error",this.currToken):"space"!==this.nextToken[0]&&"word"!==this.nextToken[0]?this.error("Syntax Error",this.currToken):"word"===this.nextToken[0]&&"operator"!==this.current.last.type&&"("!==this.current.last.value&&this.error("Syntax Error",this.currToken):"space"!==this.nextToken[0]&&"operator"!==this.nextToken[0]&&"operator"!==this.prevToken[0]||this.error("Syntax Error",this.currToken)),this.options.loose){if((!this.current.nodes.length||this.current.last&&"operator"===this.current.last.type)&&"word"===this.nextToken[0])return this.word()}else if("word"===this.nextToken[0])return this.word();return e=new f({value:this.currToken[1],source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[2],column:this.currToken[3]}},sourceIndex:this.currToken[4]}),this.position++,this.newNode(e)}},{key:"parseTokens",value:function(){switch(this.currToken[0]){case"space":this.space();break;case"colon":this.colon();break;case"comma":this.comma();break;case"comment":this.comment();break;case"(":this.parenOpen();break;case")":this.parenClose();break;case"atword":case"word":this.word();break;case"operator":this.operator();break;case"string":this.string();break;case"unicoderange":this.unicodeRange();break;default:this.word()}}},{key:"parenOpen",value:function(){for(var e,t=1,r=this.position+1,n=this.currToken;r<this.tokens.length&&t;){var o=this.tokens[r];"("===o[0]&&t++,")"===o[0]&&t--,r++}if(t&&this.error("Expected closing parenthesis",n),(e=this.current.last)&&"func"===e.type&&e.unbalanced<0&&(e.unbalanced=0,this.current=e),this.current.unbalanced++,this.newNode(new p({value:n[1],source:{start:{line:n[2],column:n[3]},end:{line:n[4],column:n[5]}},sourceIndex:n[6]})),this.position++,"func"===this.current.type&&this.current.unbalanced&&"url"===this.current.value&&"string"!==this.currToken[0]&&")"!==this.currToken[0]&&!this.options.loose){for(var i=this.nextToken,s=this.currToken[1],u={line:this.currToken[2],column:this.currToken[3]};i&&")"!==i[0]&&this.current.unbalanced;)this.position++,s+=this.currToken[1],i=this.nextToken;this.position!==this.tokens.length-1&&(this.position++,this.newNode(new d({value:s,source:{start:u,end:{line:this.currToken[4],column:this.currToken[5]}},sourceIndex:this.currToken[6]})))}}},{key:"parenClose",value:function(){var e=this.currToken;this.newNode(new p({value:e[1],source:{start:{line:e[2],column:e[3]},end:{line:e[4],column:e[5]}},sourceIndex:e[6]})),this.position++,this.position>=this.tokens.length-1&&!this.current.unbalanced||(this.current.unbalanced--,this.current.unbalanced<0&&this.error("Expected opening parenthesis",e),!this.current.unbalanced&&this.cache.length&&(this.current=this.cache.pop()))}},{key:"space",value:function(){var e=this.currToken;this.position===this.tokens.length-1||","===this.nextToken[0]||")"===this.nextToken[0]?(this.current.last.raws.after+=e[1],this.position++):(this.spaces=e[1],this.position++)}},{key:"unicodeRange",value:function(){var e=this.currToken;this.newNode(new y({value:e[1],source:{start:{line:e[2],column:e[3]},end:{line:e[4],column:e[5]}},sourceIndex:e[6]})),this.position++}},{key:"splitWord",value:function(){var e,t,r,n=this,o=this.nextToken,s=this.currToken[1],u=/^[\+\-]?((\d+(\.\d*)?)|(\.\d+))([eE][\+\-]?\d+)?/;if(!/^(?!\#([a-z0-9]+))[\#\{\}]/gi.test(s))for(;o&&"word"===o[0];){this.position++;var a=this.currToken[1];s+=a,o=this.nextToken}e=v(s,"@"),r=b(g([[0],e])),(t=r.sort((function(e,t){return e-t}))).forEach((function(r,a){var f,p=t[a+1]||s.length,h=s.slice(r,p);if(~e.indexOf(r))f=new i({value:h.slice(1),source:{start:{line:n.currToken[2],column:n.currToken[3]+r},end:{line:n.currToken[4],column:n.currToken[3]+(p-1)}},sourceIndex:n.currToken[6]+t[a]});else if(u.test(n.currToken[1])){var y=h.replace(u,"");f=new l({value:h.replace(y,""),source:{start:{line:n.currToken[2],column:n.currToken[3]+r},end:{line:n.currToken[4],column:n.currToken[3]+(p-1)}},sourceIndex:n.currToken[6]+t[a],unit:y})}else"Word"===(f=new(o&&"("===o[0]?c:d)({value:h,source:{start:{line:n.currToken[2],column:n.currToken[3]+r},end:{line:n.currToken[4],column:n.currToken[3]+(p-1)}},sourceIndex:n.currToken[6]+t[a]})).constructor.name?(f.isHex=/^#(.+)/.test(h),f.isColor=/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.test(h)):n.cache.push(n.current);n.newNode(f)})),this.position++}},{key:"string",value:function(){var e,t=this.currToken,r=this.currToken[1],n=/^(\"|\')/,o=n.test(r),i="";o&&(i=r.match(n)[0],r=r.slice(1,r.length-1)),(e=new h({value:r,source:{start:{line:t[2],column:t[3]},end:{line:t[4],column:t[5]}},sourceIndex:t[6],quoted:o})).raws.quote=i,this.newNode(e),this.position++}},{key:"word",value:function(){return this.splitWord()}},{key:"newNode",value:function(e){return this.spaces&&(e.raws.before+=this.spaces,this.spaces=""),this.current.append(e)}},{key:"currToken",get:function(){return this.tokens[this.position]}},{key:"nextToken",get:function(){return this.tokens[this.position+1]}},{key:"prevToken",get:function(){return this.tokens[this.position-1]}}])&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Parser}()},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _possibleConstructorReturn(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var n=r(1);e.exports=function(e){function Root(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Root),(t=_possibleConstructorReturn(this,_getPrototypeOf(Root).call(this,e))).type="root",t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(Root,e),Root}(n)},function(e,t,r){"use strict";var n="{".charCodeAt(0),o="}".charCodeAt(0),i="(".charCodeAt(0),s=")".charCodeAt(0),u="'".charCodeAt(0),a='"'.charCodeAt(0),c="\\".charCodeAt(0),l="/".charCodeAt(0),f=".".charCodeAt(0),p=",".charCodeAt(0),h=":".charCodeAt(0),d="*".charCodeAt(0),y="-".charCodeAt(0),m="+".charCodeAt(0),g="#".charCodeAt(0),v="\n".charCodeAt(0),b=" ".charCodeAt(0),w="\f".charCodeAt(0),_="\t".charCodeAt(0),S="\r".charCodeAt(0),C="@".charCodeAt(0),k="e".charCodeAt(0),O="E".charCodeAt(0),P="0".charCodeAt(0),x="9".charCodeAt(0),A="u".charCodeAt(0),R="U".charCodeAt(0),M=/[ \n\t\r\{\(\)'"\\;,/]/g,E=/[ \n\t\r\(\)\{\}\*:;@!&'"\+\|~>,\[\]\\]|\/(?=\*)/g,T=/[ \n\t\r\(\)\{\}\*:;@!&'"\-\+\|~>,\[\]\\]|\//g,j=/^[a-z0-9]/i,N=/^[a-f0-9?\-]/i,B=r(101),L=r(104);e.exports=function(e,t){t=t||{};var r,D,I,U,q,G,F,W,z,$,V,Y=[],J=e.valueOf(),Q=J.length,K=-1,H=1,Z=0,X=0,ee=null;function unclosed(e){var t=B.format("Unclosed %s at line: %d, column: %d, token: %d",e,H,Z-K,Z);throw new L(t)}for(;Z<Q;){switch((r=J.charCodeAt(Z))===v&&(K=Z,H+=1),r){case v:case b:case _:case S:case w:D=Z;do{D+=1,(r=J.charCodeAt(D))===v&&(K=D,H+=1)}while(r===b||r===v||r===_||r===S||r===w);Y.push(["space",J.slice(Z,D),H,Z-K,H,D-K,Z]),Z=D-1;break;case h:D=Z+1,Y.push(["colon",J.slice(Z,D),H,Z-K,H,D-K,Z]),Z=D-1;break;case p:D=Z+1,Y.push(["comma",J.slice(Z,D),H,Z-K,H,D-K,Z]),Z=D-1;break;case n:Y.push(["{","{",H,Z-K,H,D-K,Z]);break;case o:Y.push(["}","}",H,Z-K,H,D-K,Z]);break;case i:X++,ee=!ee&&1===X&&Y.length>0&&"word"===Y[Y.length-1][0]&&"url"===Y[Y.length-1][1],Y.push(["(","(",H,Z-K,H,D-K,Z]);break;case s:X--,ee=!ee&&1===X,Y.push([")",")",H,Z-K,H,D-K,Z]);break;case u:case a:I=r===u?"'":'"',D=Z;do{for(z=!1,-1===(D=J.indexOf(I,D+1))&&unclosed("quote"),$=D;J.charCodeAt($-1)===c;)$-=1,z=!z}while(z);Y.push(["string",J.slice(Z,D+1),H,Z-K,H,D-K,Z]),Z=D;break;case C:M.lastIndex=Z+1,M.test(J),D=0===M.lastIndex?J.length-1:M.lastIndex-2,Y.push(["atword",J.slice(Z,D+1),H,Z-K,H,D-K,Z]),Z=D;break;case c:D=Z,r=J.charCodeAt(D+1),Y.push(["word",J.slice(Z,D+1),H,Z-K,H,D-K,Z]),Z=D;break;case m:case y:case d:D=Z+1,V=J.slice(Z+1,D+1);J.slice(Z-1,Z);if(r===y&&V.charCodeAt(0)===y){D++,Y.push(["word",J.slice(Z,D),H,Z-K,H,D-K,Z]),Z=D-1;break}Y.push(["operator",J.slice(Z,D),H,Z-K,H,D-K,Z]),Z=D-1;break;default:if(r===l&&(J.charCodeAt(Z+1)===d||t.loose&&!ee&&J.charCodeAt(Z+1)===l)){if(J.charCodeAt(Z+1)===d)0===(D=J.indexOf("*/",Z+2)+1)&&unclosed("comment");else{var te=J.indexOf("\n",Z+2);D=-1!==te?te-1:Q}(q=(U=(G=J.slice(Z,D+1)).split("\n")).length-1)>0?(F=H+q,W=D-U[q].length):(F=H,W=K),Y.push(["comment",G,H,Z-K,F,D-W,Z]),K=W,H=F,Z=D}else if(r!==g||j.test(J.slice(Z+1,Z+2)))if(r!==A&&r!==R||J.charCodeAt(Z+1)!==m)if(r===l)D=Z+1,Y.push(["operator",J.slice(Z,D),H,Z-K,H,D-K,Z]),Z=D-1;else{var re=E;if(r>=P&&r<=x&&(re=T),re.lastIndex=Z+1,re.test(J),D=0===re.lastIndex?J.length-1:re.lastIndex-2,re===T||r===f){var ne=J.charCodeAt(D),oe=J.charCodeAt(D+1),ie=J.charCodeAt(D+2);(ne===k||ne===O)&&(oe===y||oe===m)&&ie>=P&&ie<=x&&(T.lastIndex=D+2,T.test(J),D=0===T.lastIndex?J.length-1:T.lastIndex-2)}Y.push(["word",J.slice(Z,D+1),H,Z-K,H,D-K,Z]),Z=D}else{D=Z+2;do{D+=1,r=J.charCodeAt(D)}while(D<Q&&N.test(J.slice(D,D+1)));Y.push(["unicoderange",J.slice(Z,D),H,Z-K,H,D-K,Z]),Z=D-1}else D=Z+1,Y.push(["#",J.slice(Z,D),H,Z-K,H,D-K,Z]),Z=D-1}Z++}return Y}},function(e,t,r){(function(e){function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var n=Object.getOwnPropertyDescriptors||function(e){for(var t=Object.keys(e),r={},n=0;n<t.length;n++)r[t[n]]=Object.getOwnPropertyDescriptor(e,t[n]);return r},o=/%[sdj%]/g;t.format=function(e){if(!isString(e)){for(var t=[],r=0;r<arguments.length;r++)t.push(inspect(arguments[r]));return t.join(" ")}r=1;for(var n=arguments,i=n.length,s=String(e).replace(o,(function(e){if("%%"===e)return"%";if(r>=i)return e;switch(e){case"%s":return String(n[r++]);case"%d":return Number(n[r++]);case"%j":try{return JSON.stringify(n[r++])}catch(e){return"[Circular]"}default:return e}})),u=n[r];r<i;u=n[++r])isNull(u)||!isObject(u)?s+=" "+u:s+=" "+inspect(u);return s},t.deprecate=function(r,n){if(void 0!==e&&!0===e.noDeprecation)return r;if(void 0===e)return function(){return t.deprecate(r,n).apply(this,arguments)};var o=!1;return function(){if(!o){if(e.throwDeprecation)throw new Error(n);e.traceDeprecation?console.trace(n):console.error(n),o=!0}return r.apply(this,arguments)}};var i,s={};function inspect(e,r){var n={seen:[],stylize:stylizeNoColor};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),isBoolean(r)?n.showHidden=r:r&&t._extend(n,r),isUndefined(n.showHidden)&&(n.showHidden=!1),isUndefined(n.depth)&&(n.depth=2),isUndefined(n.colors)&&(n.colors=!1),isUndefined(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=stylizeWithColor),formatValue(n,e,n.depth)}function stylizeWithColor(e,t){var r=inspect.styles[t];return r?"["+inspect.colors[r][0]+"m"+e+"["+inspect.colors[r][1]+"m":e}function stylizeNoColor(e,t){return e}function formatValue(e,r,n){if(e.customInspect&&r&&isFunction(r.inspect)&&r.inspect!==t.inspect&&(!r.constructor||r.constructor.prototype!==r)){var o=r.inspect(n,e);return isString(o)||(o=formatValue(e,o,n)),o}var i=function(e,t){if(isUndefined(t))return e.stylize("undefined","undefined");if(isString(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}if(isNumber(t))return e.stylize(""+t,"number");if(isBoolean(t))return e.stylize(""+t,"boolean");if(isNull(t))return e.stylize("null","null")}(e,r);if(i)return i;var s=Object.keys(r),u=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(r)),isError(r)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return formatError(r);if(0===s.length){if(isFunction(r)){var a=r.name?": "+r.name:"";return e.stylize("[Function"+a+"]","special")}if(isRegExp(r))return e.stylize(RegExp.prototype.toString.call(r),"regexp");if(isDate(r))return e.stylize(Date.prototype.toString.call(r),"date");if(isError(r))return formatError(r)}var c,l="",f=!1,p=["{","}"];(isArray(r)&&(f=!0,p=["[","]"]),isFunction(r))&&(l=" [Function"+(r.name?": "+r.name:"")+"]");return isRegExp(r)&&(l=" "+RegExp.prototype.toString.call(r)),isDate(r)&&(l=" "+Date.prototype.toUTCString.call(r)),isError(r)&&(l=" "+formatError(r)),0!==s.length||f&&0!=r.length?n<0?isRegExp(r)?e.stylize(RegExp.prototype.toString.call(r),"regexp"):e.stylize("[Object]","special"):(e.seen.push(r),c=f?function(e,t,r,n,o){for(var i=[],s=0,u=t.length;s<u;++s)hasOwnProperty(t,String(s))?i.push(formatProperty(e,t,r,n,String(s),!0)):i.push("");return o.forEach((function(o){o.match(/^\d+$/)||i.push(formatProperty(e,t,r,n,o,!0))})),i}(e,r,n,u,s):s.map((function(t){return formatProperty(e,r,n,u,t,f)})),e.seen.pop(),function(e,t,r){if(e.reduce((function(e,t){return t.indexOf("\n")>=0&&0,e+t.replace(/\u001b\[\d\d?m/g,"").length+1}),0)>60)return r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1];return r[0]+t+" "+e.join(", ")+" "+r[1]}(c,l,p)):p[0]+l+p[1]}function formatError(e){return"["+Error.prototype.toString.call(e)+"]"}function formatProperty(e,t,r,n,o,i){var s,u,a;if((a=Object.getOwnPropertyDescriptor(t,o)||{value:t[o]}).get?u=a.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):a.set&&(u=e.stylize("[Setter]","special")),hasOwnProperty(n,o)||(s="["+o+"]"),u||(e.seen.indexOf(a.value)<0?(u=isNull(r)?formatValue(e,a.value,null):formatValue(e,a.value,r-1)).indexOf("\n")>-1&&(u=i?u.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+u.split("\n").map((function(e){return" "+e})).join("\n")):u=e.stylize("[Circular]","special")),isUndefined(s)){if(i&&o.match(/^\d+$/))return u;(s=JSON.stringify(""+o)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+u}function isArray(e){return Array.isArray(e)}function isBoolean(e){return"boolean"==typeof e}function isNull(e){return null===e}function isNumber(e){return"number"==typeof e}function isString(e){return"string"==typeof e}function isUndefined(e){return void 0===e}function isRegExp(e){return isObject(e)&&"[object RegExp]"===objectToString(e)}function isObject(e){return"object"===_typeof(e)&&null!==e}function isDate(e){return isObject(e)&&"[object Date]"===objectToString(e)}function isError(e){return isObject(e)&&("[object Error]"===objectToString(e)||e instanceof Error)}function isFunction(e){return"function"==typeof e}function objectToString(e){return Object.prototype.toString.call(e)}function pad(e){return e<10?"0"+e.toString(10):e.toString(10)}t.debuglog=function(r){if(isUndefined(i)&&(i=e.env.NODE_DEBUG||""),r=r.toUpperCase(),!s[r])if(new RegExp("\\b"+r+"\\b","i").test(i)){var n=e.pid;s[r]=function(){var e=t.format.apply(t,arguments);console.error("%s %d: %s",r,n,e)}}else s[r]=function(){};return s[r]},t.inspect=inspect,inspect.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},inspect.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},t.isArray=isArray,t.isBoolean=isBoolean,t.isNull=isNull,t.isNullOrUndefined=function(e){return null==e},t.isNumber=isNumber,t.isString=isString,t.isSymbol=function(e){return"symbol"===_typeof(e)},t.isUndefined=isUndefined,t.isRegExp=isRegExp,t.isObject=isObject,t.isDate=isDate,t.isError=isError,t.isFunction=isFunction,t.isPrimitive=function(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"===_typeof(e)||void 0===e},t.isBuffer=r(102);var u=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function timestamp(){var e=new Date,t=[pad(e.getHours()),pad(e.getMinutes()),pad(e.getSeconds())].join(":");return[e.getDate(),u[e.getMonth()],t].join(" ")}function hasOwnProperty(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.log=function(){console.log("%s - %s",timestamp(),t.format.apply(t,arguments))},t.inherits=r(103),t._extend=function(e,t){if(!t||!isObject(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e};var a="undefined"!=typeof Symbol?Symbol("util.promisify.custom"):void 0;function callbackifyOnRejected(e,t){if(!e){var r=new Error("Promise was rejected with a falsy value");r.reason=e,e=r}return t(e)}t.promisify=function(e){if("function"!=typeof e)throw new TypeError('The "original" argument must be of type Function');if(a&&e[a]){var t;if("function"!=typeof(t=e[a]))throw new TypeError('The "util.promisify.custom" argument must be of type Function');return Object.defineProperty(t,a,{value:t,enumerable:!1,writable:!1,configurable:!0}),t}function t(){for(var t,r,n=new Promise((function(e,n){t=e,r=n})),o=[],i=0;i<arguments.length;i++)o.push(arguments[i]);o.push((function(e,n){e?r(e):t(n)}));try{e.apply(this,o)}catch(e){r(e)}return n}return Object.setPrototypeOf(t,Object.getPrototypeOf(e)),a&&Object.defineProperty(t,a,{value:t,enumerable:!1,writable:!1,configurable:!0}),Object.defineProperties(t,n(e))},t.promisify.custom=a,t.callbackify=function(t){if("function"!=typeof t)throw new TypeError('The "original" argument must be of type Function');function callbackified(){for(var r=[],n=0;n<arguments.length;n++)r.push(arguments[n]);var o=r.pop();if("function"!=typeof o)throw new TypeError("The last argument must be of type Function");var i=this,cb=function(){return o.apply(i,arguments)};t.apply(this,r).then((function(t){e.nextTick(cb,null,t)}),(function(t){e.nextTick(callbackifyOnRejected,t,cb)}))}return Object.setPrototypeOf(callbackified,Object.getPrototypeOf(t)),Object.defineProperties(callbackified,n(t)),callbackified}}).call(this,r(12))},function(e,t){function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}e.exports=function(e){return e&&"object"===_typeof(e)&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:e.exports=function(e,t){e.super_=t;var TempCtor=function(){};TempCtor.prototype=t.prototype,e.prototype=new TempCtor,e.prototype.constructor=e}},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _wrapNativeSuper(e){var t="function"==typeof Map?new Map:void 0;return(_wrapNativeSuper=function(e){if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;var r;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,Wrapper)}function Wrapper(){return _construct(e,arguments,_getPrototypeOf(this).constructor)}return Wrapper.prototype=Object.create(e.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),_setPrototypeOf(Wrapper,e)})(e)}function _construct(e,t,r){return(_construct=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var o=new(Function.bind.apply(e,n));return r&&_setPrototypeOf(o,r.prototype),o}).apply(null,arguments)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var n=function(e){function TokenizeError(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,TokenizeError),(t=function(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?_assertThisInitialized(e):t}(this,_getPrototypeOf(TokenizeError).call(this,e))).name=t.constructor.name,t.message=e||"An error ocurred while tokzenizing.","function"==typeof Error.captureStackTrace?Error.captureStackTrace(_assertThisInitialized(t),t.constructor):t.stack=new Error(e).stack,t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(TokenizeError,e),TokenizeError}(_wrapNativeSuper(Error));e.exports=n},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _wrapNativeSuper(e){var t="function"==typeof Map?new Map:void 0;return(_wrapNativeSuper=function(e){if(null===e||(r=e,-1===Function.toString.call(r).indexOf("[native code]")))return e;var r;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,Wrapper)}function Wrapper(){return _construct(e,arguments,_getPrototypeOf(this).constructor)}return Wrapper.prototype=Object.create(e.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),_setPrototypeOf(Wrapper,e)})(e)}function _construct(e,t,r){return(_construct=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var o=new(Function.bind.apply(e,n));return r&&_setPrototypeOf(o,r.prototype),o}).apply(null,arguments)}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var n=function(e){function ParserError(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,ParserError),(t=function(e,t){return!t||"object"!==_typeof(t)&&"function"!=typeof t?_assertThisInitialized(e):t}(this,_getPrototypeOf(ParserError).call(this,e))).name=t.constructor.name,t.message=e||"An error ocurred while parsing.","function"==typeof Error.captureStackTrace?Error.captureStackTrace(_assertThisInitialized(t),t.constructor):t.stack=new Error(e).stack,t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&_setPrototypeOf(e,t)}(ParserError,e),ParserError}(_wrapNativeSuper(Error));e.exports=n},function(e,t,r){"use strict";t.__esModule=!0;var n=_interopRequireDefault(r(107)),o=_interopRequireDefault(r(52)),i=_interopRequireDefault(r(46)),s=_interopRequireDefault(r(54)),u=_interopRequireDefault(r(47)),a=_interopRequireDefault(r(48)),c=_interopRequireDefault(r(55)),l=_interopRequireDefault(r(51)),f=_interopRequireDefault(r(44)),p=_interopRequireDefault(r(45)),h=_interopRequireDefault(r(50)),d=_interopRequireDefault(r(49)),y=_interopRequireDefault(r(53)),m=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(r(0));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var parser=function(e){return new n.default(e)};parser.attribute=function(e){return new o.default(e)},parser.className=function(e){return new i.default(e)},parser.combinator=function(e){return new s.default(e)},parser.comment=function(e){return new u.default(e)},parser.id=function(e){return new a.default(e)},parser.nesting=function(e){return new c.default(e)},parser.pseudo=function(e){return new l.default(e)},parser.root=function(e){return new f.default(e)},parser.selector=function(e){return new p.default(e)},parser.string=function(e){return new h.default(e)},parser.tag=function(e){return new d.default(e)},parser.universal=function(e){return new y.default(e)},Object.keys(m).forEach((function(e){"__esModule"!==e&&(parser[e]=m[e])})),t.default=parser,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0;var n,o=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),i=r(108),s=(n=i)&&n.__esModule?n:{default:n};var u=function(){function Processor(e){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Processor),this.func=e||function(){},this}return Processor.prototype.process=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=new s.default({css:e,error:function(e){throw new Error(e)},options:t});return this.res=r,this.func(r),this},o(Processor,[{key:"result",get:function(){return String(this.res)}}]),Processor}();t.default=u,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0;var n=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),o=_interopRequireDefault(r(41)),i=_interopRequireDefault(r(42)),s=_interopRequireDefault(r(43)),u=_interopRequireDefault(r(44)),a=_interopRequireDefault(r(45)),c=_interopRequireDefault(r(46)),l=_interopRequireDefault(r(47)),f=_interopRequireDefault(r(48)),p=_interopRequireDefault(r(49)),h=_interopRequireDefault(r(50)),d=_interopRequireDefault(r(51)),y=_interopRequireDefault(r(52)),m=_interopRequireDefault(r(53)),g=_interopRequireDefault(r(54)),v=_interopRequireDefault(r(55)),b=_interopRequireDefault(r(109)),w=_interopRequireDefault(r(110)),_=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}(r(0));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var S=function(){function Parser(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Parser),this.input=e,this.lossy=!1===e.options.lossless,this.position=0,this.root=new u.default;var t=new a.default;return this.root.append(t),this.current=t,this.lossy?this.tokens=(0,w.default)({safe:e.safe,css:e.css.trim()}):this.tokens=(0,w.default)(e),this.loop()}return Parser.prototype.attribute=function(){var e="",t=void 0,r=this.currToken;for(this.position++;this.position<this.tokens.length&&"]"!==this.currToken[0];)e+=this.tokens[this.position][1],this.position++;this.position!==this.tokens.length||~e.indexOf("]")||this.error("Expected a closing square bracket.");var n=e.split(/((?:[*~^$|]?=))([^]*)/),o=n[0].split(/(\|)/g),i={operator:n[1],value:n[2],source:{start:{line:r[2],column:r[3]},end:{line:this.currToken[2],column:this.currToken[3]}},sourceIndex:r[4]};if(o.length>1?(""===o[0]&&(o[0]=!0),i.attribute=this.parseValue(o[2]),i.namespace=this.parseNamespace(o[0])):i.attribute=this.parseValue(n[0]),t=new y.default(i),n[2]){var s=n[2].split(/(\s+i\s*?)$/),u=s[0].trim();t.value=this.lossy?u:s[0],s[1]&&(t.insensitive=!0,this.lossy||(t.raws.insensitive=s[1])),t.quoted="'"===u[0]||'"'===u[0],t.raws.unquoted=t.quoted?u.slice(1,-1):u}this.newNode(t),this.position++},Parser.prototype.combinator=function(){if("|"===this.currToken[1])return this.namespace();for(var e=new g.default({value:"",source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[2],column:this.currToken[3]}},sourceIndex:this.currToken[4]});this.position<this.tokens.length&&this.currToken&&("space"===this.currToken[0]||"combinator"===this.currToken[0]);)this.nextToken&&"combinator"===this.nextToken[0]?(e.spaces.before=this.parseSpace(this.currToken[1]),e.source.start.line=this.nextToken[2],e.source.start.column=this.nextToken[3],e.source.end.column=this.nextToken[3],e.source.end.line=this.nextToken[2],e.sourceIndex=this.nextToken[4]):this.prevToken&&"combinator"===this.prevToken[0]?e.spaces.after=this.parseSpace(this.currToken[1]):"combinator"===this.currToken[0]?e.value=this.currToken[1]:"space"===this.currToken[0]&&(e.value=this.parseSpace(this.currToken[1]," ")),this.position++;return this.newNode(e)},Parser.prototype.comma=function(){if(this.position===this.tokens.length-1)return this.root.trailingComma=!0,void this.position++;var e=new a.default;this.current.parent.append(e),this.current=e,this.position++},Parser.prototype.comment=function(){var e=new l.default({value:this.currToken[1],source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[4],column:this.currToken[5]}},sourceIndex:this.currToken[6]});this.newNode(e),this.position++},Parser.prototype.error=function(e){throw new this.input.error(e)},Parser.prototype.missingBackslash=function(){return this.error("Expected a backslash preceding the semicolon.")},Parser.prototype.missingParenthesis=function(){return this.error("Expected opening parenthesis.")},Parser.prototype.missingSquareBracket=function(){return this.error("Expected opening square bracket.")},Parser.prototype.namespace=function(){var e=this.prevToken&&this.prevToken[1]||!0;return"word"===this.nextToken[0]?(this.position++,this.word(e)):"*"===this.nextToken[0]?(this.position++,this.universal(e)):void 0},Parser.prototype.nesting=function(){this.newNode(new v.default({value:this.currToken[1],source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[2],column:this.currToken[3]}},sourceIndex:this.currToken[4]})),this.position++},Parser.prototype.parentheses=function(){var e=this.current.last;if(e&&e.type===_.PSEUDO){var t=new a.default,r=this.current;e.append(t),this.current=t;var n=1;for(this.position++;this.position<this.tokens.length&&n;)"("===this.currToken[0]&&n++,")"===this.currToken[0]&&n--,n?this.parse():(t.parent.source.end.line=this.currToken[2],t.parent.source.end.column=this.currToken[3],this.position++);n&&this.error("Expected closing parenthesis."),this.current=r}else{var o=1;for(this.position++,e.value+="(";this.position<this.tokens.length&&o;)"("===this.currToken[0]&&o++,")"===this.currToken[0]&&o--,e.value+=this.parseParenthesisToken(this.currToken),this.position++;o&&this.error("Expected closing parenthesis.")}},Parser.prototype.pseudo=function(){for(var e=this,t="",r=this.currToken;this.currToken&&":"===this.currToken[0];)t+=this.currToken[1],this.position++;if(!this.currToken)return this.error("Expected pseudo-class or pseudo-element");if("word"===this.currToken[0]){var n=void 0;this.splitWord(!1,(function(o,i){t+=o,n=new d.default({value:t,source:{start:{line:r[2],column:r[3]},end:{line:e.currToken[4],column:e.currToken[5]}},sourceIndex:r[4]}),e.newNode(n),i>1&&e.nextToken&&"("===e.nextToken[0]&&e.error("Misplaced parenthesis.")}))}else this.error('Unexpected "'+this.currToken[0]+'" found.')},Parser.prototype.space=function(){var e=this.currToken;0===this.position||","===this.prevToken[0]||"("===this.prevToken[0]?(this.spaces=this.parseSpace(e[1]),this.position++):this.position===this.tokens.length-1||","===this.nextToken[0]||")"===this.nextToken[0]?(this.current.last.spaces.after=this.parseSpace(e[1]),this.position++):this.combinator()},Parser.prototype.string=function(){var e=this.currToken;this.newNode(new h.default({value:this.currToken[1],source:{start:{line:e[2],column:e[3]},end:{line:e[4],column:e[5]}},sourceIndex:e[6]})),this.position++},Parser.prototype.universal=function(e){var t=this.nextToken;if(t&&"|"===t[1])return this.position++,this.namespace();this.newNode(new m.default({value:this.currToken[1],source:{start:{line:this.currToken[2],column:this.currToken[3]},end:{line:this.currToken[2],column:this.currToken[3]}},sourceIndex:this.currToken[4]}),e),this.position++},Parser.prototype.splitWord=function(e,t){for(var r=this,n=this.nextToken,u=this.currToken[1];n&&"word"===n[0];){this.position++;var a=this.currToken[1];if(u+=a,a.lastIndexOf("\\")===a.length-1){var l=this.nextToken;l&&"space"===l[0]&&(u+=this.parseSpace(l[1]," "),this.position++)}n=this.nextToken}var h=(0,i.default)(u,"."),d=(0,i.default)(u,"#"),y=(0,i.default)(u,"#{");y.length&&(d=d.filter((function(e){return!~y.indexOf(e)})));var m=(0,b.default)((0,s.default)((0,o.default)([[0],h,d])));m.forEach((function(n,o){var i=m[o+1]||u.length,s=u.slice(n,i);if(0===o&&t)return t.call(r,s,m.length);var a=void 0;a=~h.indexOf(n)?new c.default({value:s.slice(1),source:{start:{line:r.currToken[2],column:r.currToken[3]+n},end:{line:r.currToken[4],column:r.currToken[3]+(i-1)}},sourceIndex:r.currToken[6]+m[o]}):~d.indexOf(n)?new f.default({value:s.slice(1),source:{start:{line:r.currToken[2],column:r.currToken[3]+n},end:{line:r.currToken[4],column:r.currToken[3]+(i-1)}},sourceIndex:r.currToken[6]+m[o]}):new p.default({value:s,source:{start:{line:r.currToken[2],column:r.currToken[3]+n},end:{line:r.currToken[4],column:r.currToken[3]+(i-1)}},sourceIndex:r.currToken[6]+m[o]}),r.newNode(a,e)})),this.position++},Parser.prototype.word=function(e){var t=this.nextToken;return t&&"|"===t[1]?(this.position++,this.namespace()):this.splitWord(e)},Parser.prototype.loop=function(){for(;this.position<this.tokens.length;)this.parse(!0);return this.root},Parser.prototype.parse=function(e){switch(this.currToken[0]){case"space":this.space();break;case"comment":this.comment();break;case"(":this.parentheses();break;case")":e&&this.missingParenthesis();break;case"[":this.attribute();break;case"]":this.missingSquareBracket();break;case"at-word":case"word":this.word();break;case":":this.pseudo();break;case";":this.missingBackslash();break;case",":this.comma();break;case"*":this.universal();break;case"&":this.nesting();break;case"combinator":this.combinator();break;case"string":this.string()}},Parser.prototype.parseNamespace=function(e){if(this.lossy&&"string"==typeof e){var t=e.trim();return!t.length||t}return e},Parser.prototype.parseSpace=function(e,t){return this.lossy?t||"":e},Parser.prototype.parseValue=function(e){return this.lossy&&e&&"string"==typeof e?e.trim():e},Parser.prototype.parseParenthesisToken=function(e){return this.lossy?"space"===e[0]?this.parseSpace(e[1]," "):this.parseValue(e[1]):e[1]},Parser.prototype.newNode=function(e,t){return t&&(e.namespace=this.parseNamespace(t)),this.spaces&&(e.spaces.before=this.spaces,this.spaces=""),this.current.append(e)},n(Parser,[{key:"currToken",get:function(){return this.tokens[this.position]}},{key:"nextToken",get:function(){return this.tokens[this.position+1]}},{key:"prevToken",get:function(){return this.tokens[this.position-1]}}]),Parser}();t.default=S,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.default=function(e){return e.sort((function(e,t){return e-t}))},e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.default=function(e){var t=[],r=e.css.valueOf(),A=void 0,R=void 0,M=void 0,E=void 0,T=void 0,j=void 0,N=void 0,B=void 0,L=void 0,D=void 0,I=void 0,U=r.length,q=-1,G=1,F=0,unclosed=function(t,n){if(!e.safe)throw e.error("Unclosed "+t,G,F-q,F);R=(r+=n).length-1};for(;F<U;){switch((A=r.charCodeAt(F))===u&&(q=F,G+=1),A){case u:case a:case l:case f:case c:R=F;do{R+=1,(A=r.charCodeAt(R))===u&&(q=R,G+=1)}while(A===a||A===u||A===l||A===f||A===c);t.push(["space",r.slice(F,R),G,F-q,F]),F=R-1;break;case p:case h:case d:case y:R=F;do{R+=1,A=r.charCodeAt(R)}while(A===p||A===h||A===d||A===y);t.push(["combinator",r.slice(F,R),G,F-q,F]),F=R-1;break;case S:t.push(["*","*",G,F-q,F]);break;case k:t.push(["&","&",G,F-q,F]);break;case m:t.push([",",",",G,F-q,F]);break;case b:t.push(["[","[",G,F-q,F]);break;case w:t.push(["]","]",G,F-q,F]);break;case C:t.push([":",":",G,F-q,F]);break;case _:t.push([";",";",G,F-q,F]);break;case g:t.push(["(","(",G,F-q,F]);break;case v:t.push([")",")",G,F-q,F]);break;case n:case o:M=A===n?"'":'"',R=F;do{for(D=!1,-1===(R=r.indexOf(M,R+1))&&unclosed("quote",M),I=R;r.charCodeAt(I-1)===i;)I-=1,D=!D}while(D);t.push(["string",r.slice(F,R+1),G,F-q,G,R-q,F]),F=R;break;case O:P.lastIndex=F+1,P.test(r),R=0===P.lastIndex?r.length-1:P.lastIndex-2,t.push(["at-word",r.slice(F,R+1),G,F-q,G,R-q,F]),F=R;break;case i:for(R=F,N=!0;r.charCodeAt(R+1)===i;)R+=1,N=!N;A=r.charCodeAt(R+1),N&&A!==s&&A!==a&&A!==u&&A!==l&&A!==f&&A!==c&&(R+=1),t.push(["word",r.slice(F,R+1),G,F-q,G,R-q,F]),F=R;break;default:A===s&&r.charCodeAt(F+1)===S?(0===(R=r.indexOf("*/",F+2)+1)&&unclosed("comment","*/"),j=r.slice(F,R+1),E=j.split("\n"),(T=E.length-1)>0?(B=G+T,L=R-E[T].length):(B=G,L=q),t.push(["comment",j,G,F-q,B,R-L,F]),q=L,G=B,F=R):(x.lastIndex=F+1,x.test(r),R=0===x.lastIndex?r.length-1:x.lastIndex-2,t.push(["word",r.slice(F,R+1),G,F-q,G,R-q,F]),F=R)}F++}return t};var n=39,o=34,i=92,s=47,u=10,a=32,c=12,l=9,f=13,p=43,h=62,d=126,y=124,m=44,g=40,v=41,b=91,w=93,_=59,S=42,C=58,k=38,O=64,P=/[ \n\t\r\{\(\)'"\\;/]/g,x=/[ \n\t\r\(\)\*:;@!&'"\+\|~>,\[\]\\]|\/(?=\*)/g;e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return new i.default({nodes:(0,s.parseMediaList)(e),type:"media-query-list",value:e.trim()})};var n,o=r(56),i=(n=o)&&n.__esModule?n:{default:n},s=r(112)},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseMediaFeature=parseMediaFeature,t.parseMediaQuery=parseMediaQuery,t.parseMediaList=function(e){var t=[],r=0,i=0,s=/^(\s*)url\s*\(/.exec(e);if(null!==s){for(var u=s[0].length,a=1;a>0;){var c=e[u];"("===c&&a++,")"===c&&a--,u++}t.unshift(new n.default({type:"url",value:e.substring(0,u).trim(),sourceIndex:s[1].length,before:s[1],after:/^(\s*)/.exec(e.substring(u))[1]})),r=u}for(var l=r;l<e.length;l++){var f=e[l];if("("===f&&i++,")"===f&&i--,0===i&&","===f){var p=e.substring(r,l),h=/^(\s*)/.exec(p)[1];t.push(new o.default({type:"media-query",value:p.trim(),sourceIndex:r+h.length,nodes:parseMediaQuery(p,r),before:h,after:/(\s*)$/.exec(p)[1]})),r=l+1}}var d=e.substring(r),y=/^(\s*)/.exec(d)[1];return t.push(new o.default({type:"media-query",value:d.trim(),sourceIndex:r+y.length,nodes:parseMediaQuery(d,r),before:y,after:/(\s*)$/.exec(d)[1]})),t};var n=_interopRequireDefault(r(57)),o=_interopRequireDefault(r(56));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function parseMediaFeature(e){var t=[{mode:"normal",character:null}],r=[],n=0,o="",i=null,s=null,u=arguments.length<=1||void 0===arguments[1]?0:arguments[1],a=e;"("===e[0]&&")"===e[e.length-1]&&(a=e.substring(1,e.length-1),u++);for(var c=0;c<a.length;c++){var l=a[c];if("'"!==l&&'"'!==l||(!0===t[n].isCalculationEnabled?(t.push({mode:"string",isCalculationEnabled:!1,character:l}),n++):"string"===t[n].mode&&t[n].character===l&&"\\"!==a[c-1]&&(t.pop(),n--)),"{"===l?(t.push({mode:"interpolation",isCalculationEnabled:!0}),n++):"}"===l&&(t.pop(),n--),"normal"===t[n].mode&&":"===l){var f=a.substring(c+1);(s={type:"value",before:/^(\s*)/.exec(f)[1],after:/(\s*)$/.exec(f)[1],value:f.trim()}).sourceIndex=s.before.length+c+1+u,i={type:"colon",sourceIndex:c+u,after:s.before,value:":"};break}o+=l}return(o={type:"media-feature",before:/^(\s*)/.exec(o)[1],after:/(\s*)$/.exec(o)[1],value:o.trim()}).sourceIndex=o.before.length+u,r.push(o),null!==i&&(i.before=o.after,r.push(i)),null!==s&&r.push(s),r}function parseMediaQuery(e){var t=arguments.length<=1||void 0===arguments[1]?0:arguments[1],r=[],i=0,s=!1,u=void 0;u={before:"",after:"",value:""};for(var a=0;a<e.length;a++){var c=e[a];s?(u.value+=c,"{"!==c&&"("!==c||i++,")"!==c&&"}"!==c||i--):-1!==c.search(/\s/)?u.before+=c:("("===c&&(u.type="media-feature-expression",i++),u.value=c,u.sourceIndex=t+a,s=!0),!s||0!==i||")"!==c&&a!==e.length-1&&-1===e[a+1].search(/\s/)||(-1!==["not","only","and"].indexOf(u.value)&&(u.type="keyword"),"media-feature-expression"===u.type&&(u.nodes=parseMediaFeature(u.value,u.sourceIndex)),r.push(Array.isArray(u.nodes)?new o.default(u):new n.default(u)),u={before:"",after:"",value:""},s=!1)}for(var l=0;l<r.length;l++)if(u=r[l],l>0&&(r[l-1].after=u.before),void 0===u.type){if(l>0){if("media-feature-expression"===r[l-1].type){u.type="keyword";continue}if("not"===r[l-1].value||"only"===r[l-1].value){u.type="media-type";continue}if("and"===r[l-1].value){u.type="media-feature-expression";continue}"media-type"===r[l-1].type&&(r[l+1]?u.type="media-feature-expression"===r[l+1].type?"keyword":"media-feature-expression":u.type="media-feature-expression")}if(0===l){if(!r[l+1]){u.type="media-type";continue}if(r[l+1]&&("media-feature-expression"===r[l+1].type||"keyword"===r[l+1].type)){u.type="media-type";continue}if(r[l+2]){if("media-feature-expression"===r[l+2].type){u.type="media-type",r[l+1].type="keyword";continue}if("keyword"===r[l+2].type){u.type="keyword",r[l+1].type="media-type";continue}}if(r[l+3]&&"media-feature-expression"===r[l+3].type){u.type="keyword",r[l+1].type="media-type",r[l+2].type="keyword";continue}}}return r}},function(e,t,r){"use strict";var n=r(114),o=r(116);e.exports={parse:o,stringify:n}},function(e,t,r){"use strict";var n=r(115);e.exports=function(e,t){new n(t).stringify(e)}},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var n=function(e){function ScssStringifier(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,ScssStringifier),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(ScssStringifier,e),ScssStringifier.prototype.comment=function(e){var t=this.raw(e,"left","commentLeft"),r=this.raw(e,"right","commentRight");if(e.raws.inline){var n=e.raws.text||e.text;this.builder("//"+t+n+r,e)}else this.builder("/*"+t+e.text+r+"*/",e)},ScssStringifier.prototype.decl=function(t,r){if(t.isNested){var n=this.raw(t,"between","colon"),o=t.prop+n+this.rawValue(t,"value");t.important&&(o+=t.raws.important||" !important"),this.builder(o+"{",t,"start");var i=void 0;t.nodes&&t.nodes.length?(this.body(t),i=this.raw(t,"after")):i=this.raw(t,"after","emptyBody"),i&&this.builder(i),this.builder("}",t,"end")}else e.prototype.decl.call(this,t,r)},ScssStringifier.prototype.rawValue=function(e,t){var r=e[t],n=e.raws[t];return n&&n.value===r?n.scss?n.scss:n.raw:r},ScssStringifier}(r(16));e.exports=n},function(e,t,r){"use strict";var n=r(58),o=r(131);e.exports=function(e,t){var r=new n(e,t),i=new o(r);return i.parse(),i.root}},function(e,t){},function(e,t){},function(e,t){},function(e,t,r){"use strict";(function(n){function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0,t.default=void 0;var o=_interopRequireDefault(r(61)),i=_interopRequireDefault(r(6)),s=_interopRequireDefault(r(130));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var u=function(){function PreviousMap(e,t){this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");var r=t.map?t.map.prev:void 0,n=this.loadMap(t.from,r);n&&(this.text=n)}var e=PreviousMap.prototype;return e.consumer=function(){return this.consumerCache||(this.consumerCache=new o.default.SourceMapConsumer(this.text)),this.consumerCache},e.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},e.startWith=function(e,t){return!!e&&e.substr(0,t.length)===t},e.loadAnnotation=function(e){var t=e.match(/\/\*\s*# sourceMappingURL=(.*)\s*\*\//);t&&(this.annotation=t[1].trim())},e.decodeInline=function(e){var t,r="data:application/json,";if(this.startWith(e,r))return decodeURIComponent(e.substr(r.length));if(/^data:application\/json;charset=utf-?8;base64,/.test(e)||/^data:application\/json;base64,/.test(e))return t=e.substr(RegExp.lastMatch.length),n?n.from(t,"base64").toString():window.atob(t);var o=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+o)},e.loadMap=function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"==typeof t){var r=t(e);if(r&&s.default.existsSync&&s.default.existsSync(r))return s.default.readFileSync(r,"utf-8").toString().trim();throw new Error("Unable to load previous source map: "+r.toString())}if(t instanceof o.default.SourceMapConsumer)return o.default.SourceMapGenerator.fromSourceMap(t).toString();if(t instanceof o.default.SourceMapGenerator)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var n=this.annotation;return e&&(n=i.default.join(i.default.dirname(e),n)),this.root=i.default.dirname(n),!(!s.default.existsSync||!s.default.existsSync(n))&&s.default.readFileSync(n,"utf-8").toString().trim()}},e.isMap=function(e){return"object"===_typeof(e)&&("string"==typeof e.mappings||"string"==typeof e._mappings)},PreviousMap}();t.default=u,e.exports=t.default}).call(this,r(17).Buffer)},function(e,t,r){"use strict";t.byteLength=function(e){return 3*e.length/4-placeHoldersCount(e)},t.toByteArray=function(e){var t,r,n,s,u,a,c=e.length;u=placeHoldersCount(e),a=new i(3*c/4-u),n=u>0?c-4:c;var l=0;for(t=0,r=0;t<n;t+=4,r+=3)s=o[e.charCodeAt(t)]<<18|o[e.charCodeAt(t+1)]<<12|o[e.charCodeAt(t+2)]<<6|o[e.charCodeAt(t+3)],a[l++]=s>>16&255,a[l++]=s>>8&255,a[l++]=255&s;2===u?(s=o[e.charCodeAt(t)]<<2|o[e.charCodeAt(t+1)]>>4,a[l++]=255&s):1===u&&(s=o[e.charCodeAt(t)]<<10|o[e.charCodeAt(t+1)]<<4|o[e.charCodeAt(t+2)]>>2,a[l++]=s>>8&255,a[l++]=255&s);return a},t.fromByteArray=function(e){for(var t,r=e.length,o=r%3,i="",s=[],u=0,a=r-o;u<a;u+=16383)s.push(encodeChunk(e,u,u+16383>a?a:u+16383));1===o?(t=e[r-1],i+=n[t>>2],i+=n[t<<4&63],i+="=="):2===o&&(t=(e[r-2]<<8)+e[r-1],i+=n[t>>10],i+=n[t>>4&63],i+=n[t<<2&63],i+="=");return s.push(i),s.join("")};for(var n=[],o=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=0,a=s.length;u<a;++u)n[u]=s[u],o[s.charCodeAt(u)]=u;function placeHoldersCount(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function encodeChunk(e,t,r){for(var o,i,s=[],u=t;u<r;u+=3)o=(e[u]<<16)+(e[u+1]<<8)+e[u+2],s.push(n[(i=o)>>18&63]+n[i>>12&63]+n[i>>6&63]+n[63&i]);return s.join("")}o["-".charCodeAt(0)]=62,o["_".charCodeAt(0)]=63},function(e,t){t.read=function(e,t,r,n,o){var i,s,u=8*o-n-1,a=(1<<u)-1,c=a>>1,l=-7,f=r?o-1:0,p=r?-1:1,h=e[t+f];for(f+=p,i=h&(1<<-l)-1,h>>=-l,l+=u;l>0;i=256*i+e[t+f],f+=p,l-=8);for(s=i&(1<<-l)-1,i>>=-l,l+=n;l>0;s=256*s+e[t+f],f+=p,l-=8);if(0===i)i=1-c;else{if(i===a)return s?NaN:1/0*(h?-1:1);s+=Math.pow(2,n),i-=c}return(h?-1:1)*s*Math.pow(2,i-n)},t.write=function(e,t,r,n,o,i){var s,u,a,c=8*i-o-1,l=(1<<c)-1,f=l>>1,p=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,h=n?0:i-1,d=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(u=isNaN(t)?1:0,s=l):(s=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-s))<1&&(s--,a*=2),(t+=s+f>=1?p/a:p*Math.pow(2,1-f))*a>=2&&(s++,a/=2),s+f>=l?(u=0,s=l):s+f>=1?(u=(t*a-1)*Math.pow(2,o),s+=f):(u=t*Math.pow(2,f-1)*Math.pow(2,o),s=0));o>=8;e[r+h]=255&u,h+=d,u/=256,o-=8);for(s=s<<o|u,c+=o;c>0;e[r+h]=255&s,h+=d,s/=256,c-=8);e[r+h-d]|=128*y}},function(e,t){var r={}.toString;e.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},function(e,t){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");t.encode=function(e){if(0<=e&&e<r.length)return r[e];throw new TypeError("Must be between 0 and 63: "+e)},t.decode=function(e){return 65<=e&&e<=90?e-65:97<=e&&e<=122?e-97+26:48<=e&&e<=57?e-48+52:43==e?62:47==e?63:-1}},function(e,t,r){var n=r(8);function MappingList(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}MappingList.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},MappingList.prototype.add=function(e){var t,r,o,i,s,u;t=this._last,r=e,o=t.generatedLine,i=r.generatedLine,s=t.generatedColumn,u=r.generatedColumn,i>o||i==o&&u>=s||n.compareByGeneratedPositionsInflated(t,r)<=0?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},MappingList.prototype.toArray=function(){return this._sorted||(this._array.sort(n.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},t.MappingList=MappingList},function(e,t,r){var n=r(8),o=r(127),i=r(64).ArraySet,s=r(63),u=r(128).quickSort;function SourceMapConsumer(e,t){var r=e;return"string"==typeof e&&(r=n.parseSourceMapInput(e)),null!=r.sections?new IndexedSourceMapConsumer(r,t):new BasicSourceMapConsumer(r,t)}function BasicSourceMapConsumer(e,t){var r=e;"string"==typeof e&&(r=n.parseSourceMapInput(e));var o=n.getArg(r,"version"),s=n.getArg(r,"sources"),u=n.getArg(r,"names",[]),a=n.getArg(r,"sourceRoot",null),c=n.getArg(r,"sourcesContent",null),l=n.getArg(r,"mappings"),f=n.getArg(r,"file",null);if(o!=this._version)throw new Error("Unsupported version: "+o);a&&(a=n.normalize(a)),s=s.map(String).map(n.normalize).map((function(e){return a&&n.isAbsolute(a)&&n.isAbsolute(e)?n.relative(a,e):e})),this._names=i.fromArray(u.map(String),!0),this._sources=i.fromArray(s,!0),this._absoluteSources=this._sources.toArray().map((function(e){return n.computeSourceURL(a,e,t)})),this.sourceRoot=a,this.sourcesContent=c,this._mappings=l,this._sourceMapURL=t,this.file=f}function Mapping(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function IndexedSourceMapConsumer(e,t){var r=e;"string"==typeof e&&(r=n.parseSourceMapInput(e));var o=n.getArg(r,"version"),s=n.getArg(r,"sections");if(o!=this._version)throw new Error("Unsupported version: "+o);this._sources=new i,this._names=new i;var u={line:-1,column:0};this._sections=s.map((function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var r=n.getArg(e,"offset"),o=n.getArg(r,"line"),i=n.getArg(r,"column");if(o<u.line||o===u.line&&i<u.column)throw new Error("Section offsets must be ordered and non-overlapping.");return u=r,{generatedOffset:{generatedLine:o+1,generatedColumn:i+1},consumer:new SourceMapConsumer(n.getArg(e,"map"),t)}}))}SourceMapConsumer.fromSourceMap=function(e,t){return BasicSourceMapConsumer.fromSourceMap(e,t)},SourceMapConsumer.prototype._version=3,SourceMapConsumer.prototype.__generatedMappings=null,Object.defineProperty(SourceMapConsumer.prototype,"_generatedMappings",{configurable:!0,enumerable:!0,get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}}),SourceMapConsumer.prototype.__originalMappings=null,Object.defineProperty(SourceMapConsumer.prototype,"_originalMappings",{configurable:!0,enumerable:!0,get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}}),SourceMapConsumer.prototype._charIsMappingSeparator=function(e,t){var r=e.charAt(t);return";"===r||","===r},SourceMapConsumer.prototype._parseMappings=function(e,t){throw new Error("Subclasses must implement _parseMappings")},SourceMapConsumer.GENERATED_ORDER=1,SourceMapConsumer.ORIGINAL_ORDER=2,SourceMapConsumer.GREATEST_LOWER_BOUND=1,SourceMapConsumer.LEAST_UPPER_BOUND=2,SourceMapConsumer.prototype.eachMapping=function(e,t,r){var o,i=t||null;switch(r||SourceMapConsumer.GENERATED_ORDER){case SourceMapConsumer.GENERATED_ORDER:o=this._generatedMappings;break;case SourceMapConsumer.ORIGINAL_ORDER:o=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var s=this.sourceRoot;o.map((function(e){var t=null===e.source?null:this._sources.at(e.source);return{source:t=n.computeSourceURL(s,t,this._sourceMapURL),generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:null===e.name?null:this._names.at(e.name)}}),this).forEach(e,i)},SourceMapConsumer.prototype.allGeneratedPositionsFor=function(e){var t=n.getArg(e,"line"),r={source:n.getArg(e,"source"),originalLine:t,originalColumn:n.getArg(e,"column",0)};if(r.source=this._findSourceIndex(r.source),r.source<0)return[];var i=[],s=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",n.compareByOriginalPositions,o.LEAST_UPPER_BOUND);if(s>=0){var u=this._originalMappings[s];if(void 0===e.column)for(var a=u.originalLine;u&&u.originalLine===a;)i.push({line:n.getArg(u,"generatedLine",null),column:n.getArg(u,"generatedColumn",null),lastColumn:n.getArg(u,"lastGeneratedColumn",null)}),u=this._originalMappings[++s];else for(var c=u.originalColumn;u&&u.originalLine===t&&u.originalColumn==c;)i.push({line:n.getArg(u,"generatedLine",null),column:n.getArg(u,"generatedColumn",null),lastColumn:n.getArg(u,"lastGeneratedColumn",null)}),u=this._originalMappings[++s]}return i},t.SourceMapConsumer=SourceMapConsumer,BasicSourceMapConsumer.prototype=Object.create(SourceMapConsumer.prototype),BasicSourceMapConsumer.prototype.consumer=SourceMapConsumer,BasicSourceMapConsumer.prototype._findSourceIndex=function(e){var t,r=e;if(null!=this.sourceRoot&&(r=n.relative(this.sourceRoot,r)),this._sources.has(r))return this._sources.indexOf(r);for(t=0;t<this._absoluteSources.length;++t)if(this._absoluteSources[t]==e)return t;return-1},BasicSourceMapConsumer.fromSourceMap=function(e,t){var r=Object.create(BasicSourceMapConsumer.prototype),o=r._names=i.fromArray(e._names.toArray(),!0),s=r._sources=i.fromArray(e._sources.toArray(),!0);r.sourceRoot=e._sourceRoot,r.sourcesContent=e._generateSourcesContent(r._sources.toArray(),r.sourceRoot),r.file=e._file,r._sourceMapURL=t,r._absoluteSources=r._sources.toArray().map((function(e){return n.computeSourceURL(r.sourceRoot,e,t)}));for(var a=e._mappings.toArray().slice(),c=r.__generatedMappings=[],l=r.__originalMappings=[],f=0,p=a.length;f<p;f++){var h=a[f],d=new Mapping;d.generatedLine=h.generatedLine,d.generatedColumn=h.generatedColumn,h.source&&(d.source=s.indexOf(h.source),d.originalLine=h.originalLine,d.originalColumn=h.originalColumn,h.name&&(d.name=o.indexOf(h.name)),l.push(d)),c.push(d)}return u(r.__originalMappings,n.compareByOriginalPositions),r},BasicSourceMapConsumer.prototype._version=3,Object.defineProperty(BasicSourceMapConsumer.prototype,"sources",{get:function(){return this._absoluteSources.slice()}}),BasicSourceMapConsumer.prototype._parseMappings=function(e,t){for(var r,o,i,a,c,l=1,f=0,p=0,h=0,d=0,y=0,m=e.length,g=0,v={},b={},w=[],_=[];g<m;)if(";"===e.charAt(g))l++,g++,f=0;else if(","===e.charAt(g))g++;else{for((r=new Mapping).generatedLine=l,a=g;a<m&&!this._charIsMappingSeparator(e,a);a++);if(i=v[o=e.slice(g,a)])g+=o.length;else{for(i=[];g<a;)s.decode(e,g,b),c=b.value,g=b.rest,i.push(c);if(2===i.length)throw new Error("Found a source, but no line and column");if(3===i.length)throw new Error("Found a source and line, but no column");v[o]=i}r.generatedColumn=f+i[0],f=r.generatedColumn,i.length>1&&(r.source=d+i[1],d+=i[1],r.originalLine=p+i[2],p=r.originalLine,r.originalLine+=1,r.originalColumn=h+i[3],h=r.originalColumn,i.length>4&&(r.name=y+i[4],y+=i[4])),_.push(r),"number"==typeof r.originalLine&&w.push(r)}u(_,n.compareByGeneratedPositionsDeflated),this.__generatedMappings=_,u(w,n.compareByOriginalPositions),this.__originalMappings=w},BasicSourceMapConsumer.prototype._findMapping=function(e,t,r,n,i,s){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[n]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[n]);return o.search(e,t,i,s)},BasicSourceMapConsumer.prototype.computeColumnSpans=function(){for(var e=0;e<this._generatedMappings.length;++e){var t=this._generatedMappings[e];if(e+1<this._generatedMappings.length){var r=this._generatedMappings[e+1];if(t.generatedLine===r.generatedLine){t.lastGeneratedColumn=r.generatedColumn-1;continue}}t.lastGeneratedColumn=1/0}},BasicSourceMapConsumer.prototype.originalPositionFor=function(e){var t={generatedLine:n.getArg(e,"line"),generatedColumn:n.getArg(e,"column")},r=this._findMapping(t,this._generatedMappings,"generatedLine","generatedColumn",n.compareByGeneratedPositionsDeflated,n.getArg(e,"bias",SourceMapConsumer.GREATEST_LOWER_BOUND));if(r>=0){var o=this._generatedMappings[r];if(o.generatedLine===t.generatedLine){var i=n.getArg(o,"source",null);null!==i&&(i=this._sources.at(i),i=n.computeSourceURL(this.sourceRoot,i,this._sourceMapURL));var s=n.getArg(o,"name",null);return null!==s&&(s=this._names.at(s)),{source:i,line:n.getArg(o,"originalLine",null),column:n.getArg(o,"originalColumn",null),name:s}}}return{source:null,line:null,column:null,name:null}},BasicSourceMapConsumer.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some((function(e){return null==e})))},BasicSourceMapConsumer.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var r=this._findSourceIndex(e);if(r>=0)return this.sourcesContent[r];var o,i=e;if(null!=this.sourceRoot&&(i=n.relative(this.sourceRoot,i)),null!=this.sourceRoot&&(o=n.urlParse(this.sourceRoot))){var s=i.replace(/^file:\/\//,"");if("file"==o.scheme&&this._sources.has(s))return this.sourcesContent[this._sources.indexOf(s)];if((!o.path||"/"==o.path)&&this._sources.has("/"+i))return this.sourcesContent[this._sources.indexOf("/"+i)]}if(t)return null;throw new Error('"'+i+'" is not in the SourceMap.')},BasicSourceMapConsumer.prototype.generatedPositionFor=function(e){var t=n.getArg(e,"source");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var r={source:t,originalLine:n.getArg(e,"line"),originalColumn:n.getArg(e,"column")},o=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",n.compareByOriginalPositions,n.getArg(e,"bias",SourceMapConsumer.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===r.source)return{line:n.getArg(i,"generatedLine",null),column:n.getArg(i,"generatedColumn",null),lastColumn:n.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},t.BasicSourceMapConsumer=BasicSourceMapConsumer,IndexedSourceMapConsumer.prototype=Object.create(SourceMapConsumer.prototype),IndexedSourceMapConsumer.prototype.constructor=SourceMapConsumer,IndexedSourceMapConsumer.prototype._version=3,Object.defineProperty(IndexedSourceMapConsumer.prototype,"sources",{get:function(){for(var e=[],t=0;t<this._sections.length;t++)for(var r=0;r<this._sections[t].consumer.sources.length;r++)e.push(this._sections[t].consumer.sources[r]);return e}}),IndexedSourceMapConsumer.prototype.originalPositionFor=function(e){var t={generatedLine:n.getArg(e,"line"),generatedColumn:n.getArg(e,"column")},r=o.search(t,this._sections,(function(e,t){var r=e.generatedLine-t.generatedOffset.generatedLine;return r||e.generatedColumn-t.generatedOffset.generatedColumn})),i=this._sections[r];return i?i.consumer.originalPositionFor({line:t.generatedLine-(i.generatedOffset.generatedLine-1),column:t.generatedColumn-(i.generatedOffset.generatedLine===t.generatedLine?i.generatedOffset.generatedColumn-1:0),bias:e.bias}):{source:null,line:null,column:null,name:null}},IndexedSourceMapConsumer.prototype.hasContentsOfAllSources=function(){return this._sections.every((function(e){return e.consumer.hasContentsOfAllSources()}))},IndexedSourceMapConsumer.prototype.sourceContentFor=function(e,t){for(var r=0;r<this._sections.length;r++){var n=this._sections[r].consumer.sourceContentFor(e,!0);if(n)return n}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},IndexedSourceMapConsumer.prototype.generatedPositionFor=function(e){for(var t=0;t<this._sections.length;t++){var r=this._sections[t];if(-1!==r.consumer._findSourceIndex(n.getArg(e,"source"))){var o=r.consumer.generatedPositionFor(e);if(o)return{line:o.line+(r.generatedOffset.generatedLine-1),column:o.column+(r.generatedOffset.generatedLine===o.line?r.generatedOffset.generatedColumn-1:0)}}}return{line:null,column:null}},IndexedSourceMapConsumer.prototype._parseMappings=function(e,t){this.__generatedMappings=[],this.__originalMappings=[];for(var r=0;r<this._sections.length;r++)for(var o=this._sections[r],i=o.consumer._generatedMappings,s=0;s<i.length;s++){var a=i[s],c=o.consumer._sources.at(a.source);c=n.computeSourceURL(o.consumer.sourceRoot,c,this._sourceMapURL),this._sources.add(c),c=this._sources.indexOf(c);var l=null;a.name&&(l=o.consumer._names.at(a.name),this._names.add(l),l=this._names.indexOf(l));var f={source:c,generatedLine:a.generatedLine+(o.generatedOffset.generatedLine-1),generatedColumn:a.generatedColumn+(o.generatedOffset.generatedLine===a.generatedLine?o.generatedOffset.generatedColumn-1:0),originalLine:a.originalLine,originalColumn:a.originalColumn,name:l};this.__generatedMappings.push(f),"number"==typeof f.originalLine&&this.__originalMappings.push(f)}u(this.__generatedMappings,n.compareByGeneratedPositionsDeflated),u(this.__originalMappings,n.compareByOriginalPositions)},t.IndexedSourceMapConsumer=IndexedSourceMapConsumer},function(e,t){t.GREATEST_LOWER_BOUND=1,t.LEAST_UPPER_BOUND=2,t.search=function(e,r,n,o){if(0===r.length)return-1;var i=function recursiveSearch(e,r,n,o,i,s){var u=Math.floor((r-e)/2)+e,a=i(n,o[u],!0);return 0===a?u:a>0?r-u>1?recursiveSearch(u,r,n,o,i,s):s==t.LEAST_UPPER_BOUND?r<o.length?r:-1:u:u-e>1?recursiveSearch(e,u,n,o,i,s):s==t.LEAST_UPPER_BOUND?u:e<0?-1:e}(-1,r.length,e,r,n,o||t.GREATEST_LOWER_BOUND);if(i<0)return-1;for(;i-1>=0&&0===n(r[i],r[i-1],!0);)--i;return i}},function(e,t){function swap(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function doQuickSort(e,t,r,n){if(r<n){var o=r-1;swap(e,(a=r,c=n,Math.round(a+Math.random()*(c-a))),n);for(var i=e[n],s=r;s<n;s++)t(e[s],i)<=0&&swap(e,o+=1,s);swap(e,o+1,s);var u=o+1;doQuickSort(e,t,r,u-1),doQuickSort(e,t,u+1,n)}var a,c}t.quickSort=function(e,t){doQuickSort(e,t,0,e.length-1)}},function(e,t,r){var n=r(62).SourceMapGenerator,o=r(8),i=/(\r?\n)/,s="$$$isSourceNode$$$";function SourceNode(e,t,r,n,o){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==r?null:r,this.name=null==o?null:o,this[s]=!0,null!=n&&this.add(n)}SourceNode.fromStringWithSourceMap=function(e,t,r){var n=new SourceNode,s=e.split(i),u=0,shiftNextLine=function(){return getNextLine()+(getNextLine()||"");function getNextLine(){return u<s.length?s[u++]:void 0}},a=1,c=0,l=null;return t.eachMapping((function(e){if(null!==l){if(!(a<e.generatedLine)){var t=(r=s[u]||"").substr(0,e.generatedColumn-c);return s[u]=r.substr(e.generatedColumn-c),c=e.generatedColumn,addMappingWithCode(l,t),void(l=e)}addMappingWithCode(l,shiftNextLine()),a++,c=0}for(;a<e.generatedLine;)n.add(shiftNextLine()),a++;if(c<e.generatedColumn){var r=s[u]||"";n.add(r.substr(0,e.generatedColumn)),s[u]=r.substr(e.generatedColumn),c=e.generatedColumn}l=e}),this),u<s.length&&(l&&addMappingWithCode(l,shiftNextLine()),n.add(s.splice(u).join(""))),t.sources.forEach((function(e){var i=t.sourceContentFor(e);null!=i&&(null!=r&&(e=o.join(r,e)),n.setSourceContent(e,i))})),n;function addMappingWithCode(e,t){if(null===e||void 0===e.source)n.add(t);else{var i=r?o.join(r,e.source):e.source;n.add(new SourceNode(e.originalLine,e.originalColumn,i,t,e.name))}}},SourceNode.prototype.add=function(e){if(Array.isArray(e))e.forEach((function(e){this.add(e)}),this);else{if(!e[s]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},SourceNode.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else{if(!e[s]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},SourceNode.prototype.walk=function(e){for(var t,r=0,n=this.children.length;r<n;r++)(t=this.children[r])[s]?t.walk(e):""!==t&&e(t,{source:this.source,line:this.line,column:this.column,name:this.name})},SourceNode.prototype.join=function(e){var t,r,n=this.children.length;if(n>0){for(t=[],r=0;r<n-1;r++)t.push(this.children[r]),t.push(e);t.push(this.children[r]),this.children=t}return this},SourceNode.prototype.replaceRight=function(e,t){var r=this.children[this.children.length-1];return r[s]?r.replaceRight(e,t):"string"==typeof r?this.children[this.children.length-1]=r.replace(e,t):this.children.push("".replace(e,t)),this},SourceNode.prototype.setSourceContent=function(e,t){this.sourceContents[o.toSetString(e)]=t},SourceNode.prototype.walkSourceContents=function(e){for(var t=0,r=this.children.length;t<r;t++)this.children[t][s]&&this.children[t].walkSourceContents(e);var n=Object.keys(this.sourceContents);for(t=0,r=n.length;t<r;t++)e(o.fromSetString(n[t]),this.sourceContents[n[t]])},SourceNode.prototype.toString=function(){var e="";return this.walk((function(t){e+=t})),e},SourceNode.prototype.toStringWithSourceMap=function(e){var t={code:"",line:1,column:0},r=new n(e),o=!1,i=null,s=null,u=null,a=null;return this.walk((function(e,n){t.code+=e,null!==n.source&&null!==n.line&&null!==n.column?(i===n.source&&s===n.line&&u===n.column&&a===n.name||r.addMapping({source:n.source,original:{line:n.line,column:n.column},generated:{line:t.line,column:t.column},name:n.name}),i=n.source,s=n.line,u=n.column,a=n.name,o=!0):o&&(r.addMapping({generated:{line:t.line,column:t.column}}),i=null,o=!1);for(var c=0,l=e.length;c<l;c++)10===e.charCodeAt(c)?(t.line++,t.column=0,c+1===l?(i=null,o=!1):o&&r.addMapping({source:n.source,original:{line:n.line,column:n.column},generated:{line:t.line,column:t.column},name:n.name})):t.column++})),this.walkSourceContents((function(e,t){r.setSourceContent(e,t)})),{code:t.code,map:r}},t.SourceNode=SourceNode},function(e,t){},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var n=r(18),o=r(66),i=r(140),s=r(141),u=function(e){function ScssParser(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,ScssParser),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(ScssParser,e),ScssParser.prototype.createTokenizer=function(){this.tokenizer=s(this.input)},ScssParser.prototype.rule=function(t){var r=!1,n=0,o="",s=t,u=Array.isArray(s),a=0;for(s=u?s:s[Symbol.iterator]();;){var c;if(u){if(a>=s.length)break;c=s[a++]}else{if((a=s.next()).done)break;c=a.value}var l=c;if(r)"comment"!==l[0]&&"{"!==l[0]&&(o+=l[1]);else{if("space"===l[0]&&-1!==l[1].indexOf("\n"))break;"("===l[0]?n+=1:")"===l[0]?n-=1:0===n&&":"===l[0]&&(r=!0)}}if(!r||""===o.trim()||/^[a-zA-Z-:#]/.test(o))e.prototype.rule.call(this,t);else{t.pop();var f=new i;this.init(f);var p=t[t.length-1];for(p[4]?f.source.end={line:p[4],column:p[5]}:f.source.end={line:p[2],column:p[3]};"word"!==t[0][0];)f.raws.before+=t.shift()[1];for(f.source.start={line:t[0][2],column:t[0][3]},f.prop="";t.length;){var h=t[0][0];if(":"===h||"space"===h||"comment"===h)break;f.prop+=t.shift()[1]}f.raws.between="";for(var d=void 0;t.length;){if(":"===(d=t.shift())[0]){f.raws.between+=d[1];break}f.raws.between+=d[1]}"_"!==f.prop[0]&&"*"!==f.prop[0]||(f.raws.before+=f.prop[0],f.prop=f.prop.slice(1)),f.raws.between+=this.spacesAndCommentsFromStart(t),this.precheckMissedSemicolon(t);for(var y=t.length-1;y>0;y--){if("!important"===(d=t[y])[1]){f.important=!0;var m=this.stringFrom(t,y);" !important"!==(m=this.spacesFromEnd(t)+m)&&(f.raws.important=m);break}if("important"===d[1]){for(var g=t.slice(0),v="",b=y;b>0;b--){var w=g[b][0];if(0===v.trim().indexOf("!")&&"space"!==w)break;v=g.pop()[1]+v}0===v.trim().indexOf("!")&&(f.important=!0,f.raws.important=v,t=g)}if("space"!==d[0]&&"comment"!==d[0])break}this.raw(f,"value",t),-1!==f.value.indexOf(":")&&this.checkMissedSemicolon(t),this.current=f}},ScssParser.prototype.comment=function(t){if("inline"===t[6]){var r=new n;this.init(r,t[2],t[3]),r.raws.inline=!0,r.source.end={line:t[4],column:t[5]};var o=t[1].slice(2);if(/^\s*$/.test(o))r.text="",r.raws.left=o,r.raws.right="";else{var i=o.match(/^(\s*)([^]*[^\s])(\s*)$/),s=i[2].replace(/(\*\/|\/\*)/g,"*//*");r.text=s,r.raws.left=i[1],r.raws.right=i[3],r.raws.text=i[2]}}else e.prototype.comment.call(this,t)},ScssParser.prototype.raw=function(t,r,n){if(e.prototype.raw.call(this,t,r,n),t.raws[r]){var o=t.raws[r].raw;t.raws[r].raw=n.reduce((function(e,t){return"comment"===t[0]&&"inline"===t[6]?e+"/*"+t[1].slice(2).replace(/(\*\/|\/\*)/g,"*//*")+"*/":e+t[1]}),""),o!==t.raws[r].raw&&(t.raws[r].scss=o)}},ScssParser}(o);e.exports=u},function(e,t,r){"use strict";t.__esModule=!0,t.default=function(e,t){void 0===t&&(t={});var r,P,x,A,R,M,E,T,j,N,B,L,D,I,U=e.css.valueOf(),q=t.ignoreErrors,G=U.length,F=-1,W=1,z=0,$=[],V=[];function unclosed(t){throw e.error("Unclosed "+t,W,z-F)}return{back:function(e){V.push(e)},nextToken:function(e){if(V.length)return V.pop();if(!(z>=G)){var t=!!e&&e.ignoreUnclosed;switch(((r=U.charCodeAt(z))===u||r===c||r===f&&U.charCodeAt(z+1)!==u)&&(F=z,W+=1),r){case u:case a:case l:case f:case c:P=z;do{P+=1,(r=U.charCodeAt(P))===u&&(F=P,W+=1)}while(r===a||r===u||r===l||r===f||r===c);I=["space",U.slice(z,P)],z=P-1;break;case p:case h:case m:case g:case w:case v:case y:var Y=String.fromCharCode(r);I=[Y,Y,W,z-F];break;case d:if(L=$.length?$.pop()[1]:"",D=U.charCodeAt(z+1),"url"===L&&D!==n&&D!==o&&D!==a&&D!==u&&D!==l&&D!==c&&D!==f){P=z;do{if(N=!1,-1===(P=U.indexOf(")",P+1))){if(q||t){P=z;break}unclosed("bracket")}for(B=P;U.charCodeAt(B-1)===i;)B-=1,N=!N}while(N);I=["brackets",U.slice(z,P+1),W,z-F,W,P-F],z=P}else P=U.indexOf(")",z+1),M=U.slice(z,P+1),-1===P||k.test(M)?I=["(","(",W,z-F]:(I=["brackets",M,W,z-F,W,P-F],z=P);break;case n:case o:x=r===n?"'":'"',P=z;do{if(N=!1,-1===(P=U.indexOf(x,P+1))){if(q||t){P=z+1;break}unclosed("string")}for(B=P;U.charCodeAt(B-1)===i;)B-=1,N=!N}while(N);M=U.slice(z,P+1),A=M.split("\n"),(R=A.length-1)>0?(T=W+R,j=P-A[R].length):(T=W,j=F),I=["string",U.slice(z,P+1),W,z-F,T,P-j],F=j,W=T,z=P;break;case _:S.lastIndex=z+1,S.test(U),P=0===S.lastIndex?U.length-1:S.lastIndex-2,I=["at-word",U.slice(z,P+1),W,z-F,W,P-F],z=P;break;case i:for(P=z,E=!0;U.charCodeAt(P+1)===i;)P+=1,E=!E;if(r=U.charCodeAt(P+1),E&&r!==s&&r!==a&&r!==u&&r!==l&&r!==f&&r!==c&&(P+=1,O.test(U.charAt(P)))){for(;O.test(U.charAt(P+1));)P+=1;U.charCodeAt(P+1)===a&&(P+=1)}I=["word",U.slice(z,P+1),W,z-F,W,P-F],z=P;break;default:r===s&&U.charCodeAt(z+1)===b?(0===(P=U.indexOf("*/",z+2)+1)&&(q||t?P=U.length:unclosed("comment")),M=U.slice(z,P+1),A=M.split("\n"),(R=A.length-1)>0?(T=W+R,j=P-A[R].length):(T=W,j=F),I=["comment",M,W,z-F,T,P-j],F=j,W=T,z=P):(C.lastIndex=z+1,C.test(U),P=0===C.lastIndex?U.length-1:C.lastIndex-2,I=["word",U.slice(z,P+1),W,z-F,W,P-F],$.push(I),z=P)}return z++,I}},endOfFile:function(){return 0===V.length&&z>=G}}};var n="'".charCodeAt(0),o='"'.charCodeAt(0),i="\\".charCodeAt(0),s="/".charCodeAt(0),u="\n".charCodeAt(0),a=" ".charCodeAt(0),c="\f".charCodeAt(0),l="\t".charCodeAt(0),f="\r".charCodeAt(0),p="[".charCodeAt(0),h="]".charCodeAt(0),d="(".charCodeAt(0),y=")".charCodeAt(0),m="{".charCodeAt(0),g="}".charCodeAt(0),v=";".charCodeAt(0),b="*".charCodeAt(0),w=":".charCodeAt(0),_="@".charCodeAt(0),S=/[ \n\t\r\f{}()'"\\;/[\]#]/g,C=/[ \n\t\r\f(){}:;@!'"\\\][#]|\/(?=\*)/g,k=/.[\\/("'\n]/,O=/[a-f0-9]/i;e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n={split:function(e,t,r){for(var n=[],o="",i=!1,s=0,u=!1,a=!1,c=0;c<e.length;c++){var l=e[c];u?a?a=!1:"\\"===l?a=!0:l===u&&(u=!1):'"'===l||"'"===l?u=l:"("===l?s+=1:")"===l?s>0&&(s-=1):0===s&&-1!==t.indexOf(l)&&(i=!0),i?(""!==o&&n.push(o.trim()),o="",i=!1):o+=l}return(r||""!==o)&&n.push(o.trim()),n},space:function(e){return n.split(e,[" ","\n","\t"])},comma:function(e){return n.split(e,[","],!0)}},o=n;t.default=o,e.exports=t.default},function(e,t,r){"use strict";var n;t.__esModule=!0,t.default=void 0;var o=function(e){var t,n;function Root(t){var r;return(r=e.call(this,t)||this).type="root",r.nodes||(r.nodes=[]),r}n=e,(t=Root).prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n;var o=Root.prototype;return o.removeChild=function(t,r){var n=this.index(t);return!r&&0===n&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[n].raws.before),e.prototype.removeChild.call(this,t)},o.normalize=function(t,r,n){var o=e.prototype.normalize.call(this,t);if(r)if("prepend"===n)this.nodes.length>1?r.raws.before=this.nodes[1].raws.before:delete r.raws.before;else if(this.first!==r){var i=o,s=Array.isArray(i),u=0;for(i=s?i:i[Symbol.iterator]();;){var a;if(s){if(u>=i.length)break;a=i[u++]}else{if((u=i.next()).done)break;a=u.value}a.raws.before=r.raws.before}}return o},o.toResult=function(e){return void 0===e&&(e={}),new(r(71))(new(r(139)),this,e).stringify()},Root}(((n=r(13))&&n.__esModule?n:{default:n}).default);t.default=o,e.exports=t.default},function(e,t,r){"use strict";(function(n){t.__esModule=!0,t.default=void 0;var o=_interopRequireDefault(r(61)),i=_interopRequireDefault(r(6));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var s=function(){function MapGenerator(e,t,r){this.stringify=e,this.mapOpts=r.map||{},this.root=t,this.opts=r}var e=MapGenerator.prototype;return e.isMap=function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0},e.previous=function(){var e=this;return this.previousMaps||(this.previousMaps=[],this.root.walk((function(t){if(t.source&&t.source.input.map){var r=t.source.input.map;-1===e.previousMaps.indexOf(r)&&e.previousMaps.push(r)}}))),this.previousMaps},e.isInline=function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((function(e){return e.inline})))},e.isSourcesContent=function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((function(e){return e.withContent()}))},e.clearAnnotation=function(){if(!1!==this.mapOpts.annotation)for(var e,t=this.root.nodes.length-1;t>=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)},e.setSourcesContent=function(){var e=this,t={};this.root.walk((function(r){if(r.source){var n=r.source.input.from;if(n&&!t[n]){t[n]=!0;var o=e.relative(n);e.map.setSourceContent(o,r.source.input.css)}}}))},e.applyPrevMaps=function(){var e=this.previous(),t=Array.isArray(e),r=0;for(e=t?e:e[Symbol.iterator]();;){var n;if(t){if(r>=e.length)break;n=e[r++]}else{if((r=e.next()).done)break;n=r.value}var s=n,u=this.relative(s.file),a=s.root||i.default.dirname(s.file),c=void 0;!1===this.mapOpts.sourcesContent?(c=new o.default.SourceMapConsumer(s.text)).sourcesContent&&(c.sourcesContent=c.sourcesContent.map((function(){return null}))):c=s.consumer(),this.map.applySourceMap(c,u,this.relative(a))}},e.isAnnotation=function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((function(e){return e.annotation})))},e.toBase64=function(e){return n?n.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))},e.addAnnotation=function(){var e;e=this.isInline()?"data:application/json;base64,"+this.toBase64(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:this.outputFile()+".map";var t="\n";-1!==this.css.indexOf("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"},e.outputFile=function(){return this.opts.to?this.relative(this.opts.to):this.opts.from?this.relative(this.opts.from):"to.css"},e.generateMap=function(){return this.generateString(),this.isSourcesContent()&&this.setSourcesContent(),this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},e.relative=function(e){if(0===e.indexOf("<"))return e;if(/^\w+:\/\//.test(e))return e;var t=this.opts.to?i.default.dirname(this.opts.to):".";return"string"==typeof this.mapOpts.annotation&&(t=i.default.dirname(i.default.resolve(t,this.mapOpts.annotation))),e=i.default.relative(t,e),"\\"===i.default.sep?e.replace(/\\/g,"/"):e},e.sourcePath=function(e){return this.mapOpts.from?this.mapOpts.from:this.relative(e.source.input.from)},e.generateString=function(){var e=this;this.css="",this.map=new o.default.SourceMapGenerator({file:this.outputFile()});var t,r,n=1,i=1;this.stringify(this.root,(function(o,s,u){e.css+=o,s&&"end"!==u&&(s.source&&s.source.start?e.map.addMapping({source:e.sourcePath(s),generated:{line:n,column:i-1},original:{line:s.source.start.line,column:s.source.start.column-1}}):e.map.addMapping({source:"<no source>",original:{line:1,column:0},generated:{line:n,column:i-1}})),(t=o.match(/\n/g))?(n+=t.length,r=o.lastIndexOf("\n"),i=o.length-r):i+=o.length,s&&"start"!==u&&(s.source&&s.source.end?e.map.addMapping({source:e.sourcePath(s),generated:{line:n,column:i-1},original:{line:s.source.end.line,column:s.source.end.column}}):e.map.addMapping({source:"<no source>",original:{line:1,column:0},generated:{line:n,column:i-1}}))}))},e.generate=function(){if(this.clearAnnotation(),this.isMap())return this.generateMap();var e="";return this.stringify(this.root,(function(t){e+=t})),[e]},MapGenerator}();t.default=s,e.exports=t.default}).call(this,r(17).Buffer)},function(e,t,r){"use strict";t.__esModule=!0,t.default=function(e){if(n[e])return;n[e]=!0,"undefined"!=typeof console&&console.warn&&console.warn(e)};var n={};e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n,o=(n=r(138))&&n.__esModule?n:{default:n};function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var i=function(){function Result(e,t,r){this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}var e,t,r,n=Result.prototype;return n.toString=function(){return this.css},n.warn=function(e,t){void 0===t&&(t={}),t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var r=new o.default(e,t);return this.messages.push(r),r},n.warnings=function(){return this.messages.filter((function(e){return"warning"===e.type}))},e=Result,(t=[{key:"content",get:function(){return this.css}}])&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Result}();t.default=i,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0,t.default=void 0;var n=function(){function Warning(e,t){if(void 0===t&&(t={}),this.type="warning",this.text=e,t.node&&t.node.source){var r=t.node.positionBy(t);this.line=r.line,this.column=r.column}for(var n in t)this[n]=t[n]}return Warning.prototype.toString=function(){return this.node?this.node.error(this.text,{plugin:this.plugin,index:this.index,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},Warning}();t.default=n,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0,t.default=void 0;var n,o=(n=r(71))&&n.__esModule?n:{default:n};var i=function(){function Processor(e){void 0===e&&(e=[]),this.version="7.0.5",this.plugins=this.normalize(e)}var e=Processor.prototype;return e.use=function(e){return this.plugins=this.plugins.concat(this.normalize([e])),this},e.process=function(e){function process(t){return e.apply(this,arguments)}return process.toString=function(){return e.toString()},process}((function(e,t){return void 0===t&&(t={}),0===this.plugins.length&&(t.parser,t.stringifier),new o.default(this,e,t)})),e.normalize=function(e){var t=[],r=e,n=Array.isArray(r),o=0;for(r=n?r:r[Symbol.iterator]();;){var i;if(n){if(o>=r.length)break;i=r[o++]}else{if((o=r.next()).done)break;i=o.value}var s=i;if(s.postcss&&(s=s.postcss),"object"===_typeof(s)&&Array.isArray(s.plugins))t=t.concat(s.plugins);else if("function"==typeof s)t.push(s);else{if("object"!==_typeof(s)||!s.parse&&!s.stringify)throw new Error(s+" is not a PostCSS plugin")}}return t},Processor}();t.default=i,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var n=function(e){function NestedDeclaration(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,NestedDeclaration);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,e.call(this,t));return r.type="decl",r.isNested=!0,r.nodes||(r.nodes=[]),r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(NestedDeclaration,e),NestedDeclaration}(r(13));e.exports=n},function(e,t,r){"use strict";var n=39,o=34,i=92,s=47,u=10,a=32,c=12,l=9,f=13,p=91,h=93,d=40,y=41,m=123,g=125,v=59,b=42,w=58,_=64,S=44,C=35,k=/[ \n\t\r\f{}()'"\\;/[\]#]/g,O=/[ \n\t\r\f(){}:;@!'"\\\][#]|\/(?=\*)/g,P=/.[\\/("'\n]/,x=/[a-f0-9]/i,A=/[\r\f\n]/g;e.exports=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=e.css.valueOf(),R=t.ignoreErrors,M=void 0,E=void 0,T=void 0,j=void 0,N=void 0,B=void 0,L=void 0,D=void 0,I=void 0,U=void 0,q=void 0,G=void 0,F=void 0,W=void 0,z=r.length,$=-1,V=1,Y=0,J=[],Q=[];function unclosed(t){throw e.error("Unclosed "+t,V,Y-$)}function endOfFile(){return 0===Q.length&&Y>=z}function interpolation(){for(var e=1,t=!1,s=!1;e>0;)E+=1,r.length<=E&&unclosed("interpolation"),M=r.charCodeAt(E),G=r.charCodeAt(E+1),t?s||M!==t?M===i?s=!U:s&&(s=!1):(t=!1,s=!1):M===n||M===o?t=M:M===g?e-=1:M===C&&G===m&&(e+=1)}function nextToken(){if(Q.length)return Q.pop();if(!(Y>=z)){switch(((M=r.charCodeAt(Y))===u||M===c||M===f&&r.charCodeAt(Y+1)!==u)&&($=Y,V+=1),M){case u:case a:case l:case f:case c:E=Y;do{E+=1,(M=r.charCodeAt(E))===u&&($=E,V+=1)}while(M===a||M===u||M===l||M===f||M===c);F=["space",r.slice(Y,E)],Y=E-1;break;case p:F=["[","[",V,Y-$];break;case h:F=["]","]",V,Y-$];break;case m:F=["{","{",V,Y-$];break;case g:F=["}","}",V,Y-$];break;case S:F=["word",",",V,Y-$,V,Y-$+1];break;case w:F=[":",":",V,Y-$];break;case v:F=[";",";",V,Y-$];break;case d:if(q=J.length?J.pop()[1]:"",G=r.charCodeAt(Y+1),"url"===q&&G!==n&&G!==o){for(W=1,U=!1,E=Y+1;E<=r.length-1;){if((G=r.charCodeAt(E))===i)U=!U;else if(G===d)W+=1;else if(G===y&&0===(W-=1))break;E+=1}B=r.slice(Y,E+1),j=B.split("\n"),(N=j.length-1)>0?(D=V+N,I=E-j[N].length):(D=V,I=$),F=["brackets",B,V,Y-$,D,E-I],$=I,V=D,Y=E}else E=r.indexOf(")",Y+1),B=r.slice(Y,E+1),-1===E||P.test(B)?F=["(","(",V,Y-$]:(F=["brackets",B,V,Y-$,V,E-$],Y=E);break;case y:F=[")",")",V,Y-$];break;case n:case o:for(T=M,E=Y,U=!1;E<z&&(++E===z&&unclosed("string"),M=r.charCodeAt(E),G=r.charCodeAt(E+1),U||M!==T);)M===i?U=!U:U?U=!1:M===C&&G===m&&interpolation();B=r.slice(Y,E+1),j=B.split("\n"),(N=j.length-1)>0?(D=V+N,I=E-j[N].length):(D=V,I=$),F=["string",r.slice(Y,E+1),V,Y-$,D,E-I],$=I,V=D,Y=E;break;case _:k.lastIndex=Y+1,k.test(r),E=0===k.lastIndex?r.length-1:k.lastIndex-2,F=["at-word",r.slice(Y,E+1),V,Y-$,V,E-$],Y=E;break;case i:for(E=Y,L=!0;r.charCodeAt(E+1)===i;)E+=1,L=!L;if(M=r.charCodeAt(E+1),L&&M!==s&&M!==a&&M!==u&&M!==l&&M!==f&&M!==c&&(E+=1,x.test(r.charAt(E)))){for(;x.test(r.charAt(E+1));)E+=1;r.charCodeAt(E+1)===a&&(E+=1)}F=["word",r.slice(Y,E+1),V,Y-$,V,E-$],Y=E;break;default:G=r.charCodeAt(Y+1),M===C&&G===m?(E=Y,interpolation(),B=r.slice(Y,E+1),j=B.split("\n"),(N=j.length-1)>0?(D=V+N,I=E-j[N].length):(D=V,I=$),F=["word",B,V,Y-$,D,E-I],$=I,V=D,Y=E):M===s&&G===b?(0===(E=r.indexOf("*/",Y+2)+1)&&(R?E=r.length:unclosed("comment")),B=r.slice(Y,E+1),j=B.split("\n"),(N=j.length-1)>0?(D=V+N,I=E-j[N].length):(D=V,I=$),F=["comment",B,V,Y-$,D,E-I],$=I,V=D,Y=E):M===s&&G===s?(A.lastIndex=Y+1,A.test(r),E=0===A.lastIndex?r.length-1:A.lastIndex-2,B=r.slice(Y,E+1),F=["comment",B,V,Y-$,V,E-$,"inline"],Y=E):(O.lastIndex=Y+1,O.test(r),E=0===O.lastIndex?r.length-1:O.lastIndex-2,F=["word",r.slice(Y,E+1),V,Y-$,V,E-$],J.push(F),Y=E)}return Y++,F}}function back(e){Q.push(e)}return{back:back,nextToken:nextToken,endOfFile:endOfFile}}},function(e,t,r){"use strict";e.exports=!1},function(e,t,r){"use strict";(function(e){Object.defineProperty(e,"exports",{enumerable:!0,get:function(){var e={modifiers:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},colors:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],gray:[90,39]},bgColors:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49]}};return e.colors.grey=e.colors.gray,Object.keys(e).forEach((function(t){var r=e[t];Object.keys(r).forEach((function(t){var n=r[t];e[t]=r[t]={open:"["+n[0]+"m",close:"["+n[1]+"m"}})),Object.defineProperty(e,t,{value:r,enumerable:!1})})),e}})}).call(this,r(144)(e))},function(e,t){e.exports=function(e){return e.webpackPolyfill||(e.deprecate=function(){},e.paths=[],e.children||(e.children=[]),Object.defineProperty(e,"loaded",{enumerable:!0,get:function(){return e.l}}),Object.defineProperty(e,"id",{enumerable:!0,get:function(){return e.i}}),e.webpackPolyfill=1),e}},function(e,t,r){"use strict";var n=r(75)();e.exports=function(e){return"string"==typeof e?e.replace(n,""):e}},function(e,t,r){"use strict";var n=r(75),o=new RegExp(n().source);e.exports=o.test.bind(o)},function(e,t,r){"use strict";(function(t){var r=t.argv,n=r.indexOf("--"),hasFlag=function(e){e="--"+e;var t=r.indexOf(e);return-1!==t&&(-1===n||t<n)};e.exports="FORCE_COLOR"in t.env||!(hasFlag("no-color")||hasFlag("no-colors")||hasFlag("color=false"))&&(!!(hasFlag("color")||hasFlag("colors")||hasFlag("color=true")||hasFlag("color=always"))||!(t.stdout&&!t.stdout.isTTY)&&("win32"===t.platform||"COLORTERM"in t.env||"dumb"!==t.env.TERM&&!!/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(t.env.TERM)))}).call(this,r(12))},function(e,t,r){"use strict";t.__esModule=!0;var n=_interopRequireDefault(r(74)),o=_interopRequireDefault(r(76)),i=_interopRequireDefault(r(22));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var s=new n.default.constructor({enabled:!0}),u={brackets:s.cyan,"at-word":s.cyan,call:s.cyan,comment:s.gray,string:s.green,class:s.yellow,hash:s.magenta,"(":s.cyan,")":s.cyan,"{":s.yellow,"}":s.yellow,"[":s.yellow,"]":s.yellow,":":s.yellow,";":s.yellow};t.default=function(e){var t=(0,o.default)(new i.default(e),{ignoreErrors:!0});return t.map((function(e,r){var n=u[function(e,t,r){var n=e[0],o=e[1];if("word"===n){if("."===o[0])return"class";if("#"===o[0])return"hash"}var i=r[t+1];return!i||"brackets"!==i[0]&&"("!==i[0]?n:"call"}(e,r,t)];return n?e[1].split(/\r?\n/).map((function(e){return n(e)})).join("\n"):e[1]})).join("")},e.exports=t.default},function(e,t,r){"use strict";function _typeof2(e){return(_typeof2="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n="function"==typeof Symbol&&"symbol"===_typeof2(Symbol.iterator)?function(e){return _typeof2(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":_typeof2(e)},o=r(77),i=_interopRequireDefault(r(78)),s=_interopRequireDefault(r(6)),u=_interopRequireDefault(r(156));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var a=function(){function PreviousMap(e,t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,PreviousMap),this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");var r=t.map?t.map.prev:void 0,n=this.loadMap(t.from,r);n&&(this.text=n)}return PreviousMap.prototype.consumer=function(){return this.consumerCache||(this.consumerCache=new i.default.SourceMapConsumer(this.text)),this.consumerCache},PreviousMap.prototype.withContent=function(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)},PreviousMap.prototype.startWith=function(e,t){return!!e&&e.substr(0,t.length)===t},PreviousMap.prototype.loadAnnotation=function(e){var t=e.match(/\/\*\s*# sourceMappingURL=(.*)\s*\*\//);t&&(this.annotation=t[1].trim())},PreviousMap.prototype.decodeInline=function(e){var t="data:application/json;charset=utf-8;base64,",r="data:application/json;charset=utf8;base64,",n="data:application/json;base64,",i="data:application/json,";if(this.startWith(e,i))return decodeURIComponent(e.substr(i.length));if(this.startWith(e,n))return o.Base64.decode(e.substr(n.length));if(this.startWith(e,r))return o.Base64.decode(e.substr(r.length));if(this.startWith(e,t))return o.Base64.decode(e.substr(t.length));var s=e.match(/data:application\/json;([^,]+),/)[1];throw new Error("Unsupported source map encoding "+s)},PreviousMap.prototype.loadMap=function(e,t){if(!1===t)return!1;if(t){if("string"==typeof t)return t;if("function"==typeof t){var r=t(e);if(r&&u.default.existsSync&&u.default.existsSync(r))return u.default.readFileSync(r,"utf-8").toString().trim();throw new Error("Unable to load previous source map: "+r.toString())}if(t instanceof i.default.SourceMapConsumer)return i.default.SourceMapGenerator.fromSourceMap(t).toString();if(t instanceof i.default.SourceMapGenerator)return t.toString();if(this.isMap(t))return JSON.stringify(t);throw new Error("Unsupported previous source map format: "+t.toString())}if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){var n=this.annotation;return e&&(n=s.default.join(s.default.dirname(e),n)),this.root=s.default.dirname(n),!(!u.default.existsSync||!u.default.existsSync(n))&&u.default.readFileSync(n,"utf-8").toString().trim()}},PreviousMap.prototype.isMap=function(e){return"object"===(void 0===e?"undefined":n(e))&&("string"==typeof e.mappings||"string"==typeof e._mappings)},PreviousMap}();t.default=a,e.exports=t.default},function(e,t){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");t.encode=function(e){if(0<=e&&e<r.length)return r[e];throw new TypeError("Must be between 0 and 63: "+e)},t.decode=function(e){return 65<=e&&e<=90?e-65:97<=e&&e<=122?e-97+26:48<=e&&e<=57?e-48+52:43==e?62:47==e?63:-1}},function(e,t,r){var n=r(9);function MappingList(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}MappingList.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},MappingList.prototype.add=function(e){var t,r,o,i,s,u;t=this._last,r=e,o=t.generatedLine,i=r.generatedLine,s=t.generatedColumn,u=r.generatedColumn,i>o||i==o&&u>=s||n.compareByGeneratedPositionsInflated(t,r)<=0?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},MappingList.prototype.toArray=function(){return this._sorted||(this._array.sort(n.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},t.MappingList=MappingList},function(e,t,r){var n=r(9),o=r(153),i=r(81).ArraySet,s=r(80),u=r(154).quickSort;function SourceMapConsumer(e){var t=e;return"string"==typeof e&&(t=JSON.parse(e.replace(/^\)\]\}'/,""))),null!=t.sections?new IndexedSourceMapConsumer(t):new BasicSourceMapConsumer(t)}function BasicSourceMapConsumer(e){var t=e;"string"==typeof e&&(t=JSON.parse(e.replace(/^\)\]\}'/,"")));var r=n.getArg(t,"version"),o=n.getArg(t,"sources"),s=n.getArg(t,"names",[]),u=n.getArg(t,"sourceRoot",null),a=n.getArg(t,"sourcesContent",null),c=n.getArg(t,"mappings"),l=n.getArg(t,"file",null);if(r!=this._version)throw new Error("Unsupported version: "+r);o=o.map(String).map(n.normalize).map((function(e){return u&&n.isAbsolute(u)&&n.isAbsolute(e)?n.relative(u,e):e})),this._names=i.fromArray(s.map(String),!0),this._sources=i.fromArray(o,!0),this.sourceRoot=u,this.sourcesContent=a,this._mappings=c,this.file=l}function Mapping(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function IndexedSourceMapConsumer(e){var t=e;"string"==typeof e&&(t=JSON.parse(e.replace(/^\)\]\}'/,"")));var r=n.getArg(t,"version"),o=n.getArg(t,"sections");if(r!=this._version)throw new Error("Unsupported version: "+r);this._sources=new i,this._names=new i;var s={line:-1,column:0};this._sections=o.map((function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var t=n.getArg(e,"offset"),r=n.getArg(t,"line"),o=n.getArg(t,"column");if(r<s.line||r===s.line&&o<s.column)throw new Error("Section offsets must be ordered and non-overlapping.");return s=t,{generatedOffset:{generatedLine:r+1,generatedColumn:o+1},consumer:new SourceMapConsumer(n.getArg(e,"map"))}}))}SourceMapConsumer.fromSourceMap=function(e){return BasicSourceMapConsumer.fromSourceMap(e)},SourceMapConsumer.prototype._version=3,SourceMapConsumer.prototype.__generatedMappings=null,Object.defineProperty(SourceMapConsumer.prototype,"_generatedMappings",{get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}}),SourceMapConsumer.prototype.__originalMappings=null,Object.defineProperty(SourceMapConsumer.prototype,"_originalMappings",{get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}}),SourceMapConsumer.prototype._charIsMappingSeparator=function(e,t){var r=e.charAt(t);return";"===r||","===r},SourceMapConsumer.prototype._parseMappings=function(e,t){throw new Error("Subclasses must implement _parseMappings")},SourceMapConsumer.GENERATED_ORDER=1,SourceMapConsumer.ORIGINAL_ORDER=2,SourceMapConsumer.GREATEST_LOWER_BOUND=1,SourceMapConsumer.LEAST_UPPER_BOUND=2,SourceMapConsumer.prototype.eachMapping=function(e,t,r){var o,i=t||null;switch(r||SourceMapConsumer.GENERATED_ORDER){case SourceMapConsumer.GENERATED_ORDER:o=this._generatedMappings;break;case SourceMapConsumer.ORIGINAL_ORDER:o=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var s=this.sourceRoot;o.map((function(e){var t=null===e.source?null:this._sources.at(e.source);return null!=t&&null!=s&&(t=n.join(s,t)),{source:t,generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:null===e.name?null:this._names.at(e.name)}}),this).forEach(e,i)},SourceMapConsumer.prototype.allGeneratedPositionsFor=function(e){var t=n.getArg(e,"line"),r={source:n.getArg(e,"source"),originalLine:t,originalColumn:n.getArg(e,"column",0)};if(null!=this.sourceRoot&&(r.source=n.relative(this.sourceRoot,r.source)),!this._sources.has(r.source))return[];r.source=this._sources.indexOf(r.source);var i=[],s=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",n.compareByOriginalPositions,o.LEAST_UPPER_BOUND);if(s>=0){var u=this._originalMappings[s];if(void 0===e.column)for(var a=u.originalLine;u&&u.originalLine===a;)i.push({line:n.getArg(u,"generatedLine",null),column:n.getArg(u,"generatedColumn",null),lastColumn:n.getArg(u,"lastGeneratedColumn",null)}),u=this._originalMappings[++s];else for(var c=u.originalColumn;u&&u.originalLine===t&&u.originalColumn==c;)i.push({line:n.getArg(u,"generatedLine",null),column:n.getArg(u,"generatedColumn",null),lastColumn:n.getArg(u,"lastGeneratedColumn",null)}),u=this._originalMappings[++s]}return i},t.SourceMapConsumer=SourceMapConsumer,BasicSourceMapConsumer.prototype=Object.create(SourceMapConsumer.prototype),BasicSourceMapConsumer.prototype.consumer=SourceMapConsumer,BasicSourceMapConsumer.fromSourceMap=function(e){var t=Object.create(BasicSourceMapConsumer.prototype),r=t._names=i.fromArray(e._names.toArray(),!0),o=t._sources=i.fromArray(e._sources.toArray(),!0);t.sourceRoot=e._sourceRoot,t.sourcesContent=e._generateSourcesContent(t._sources.toArray(),t.sourceRoot),t.file=e._file;for(var s=e._mappings.toArray().slice(),a=t.__generatedMappings=[],c=t.__originalMappings=[],l=0,f=s.length;l<f;l++){var p=s[l],h=new Mapping;h.generatedLine=p.generatedLine,h.generatedColumn=p.generatedColumn,p.source&&(h.source=o.indexOf(p.source),h.originalLine=p.originalLine,h.originalColumn=p.originalColumn,p.name&&(h.name=r.indexOf(p.name)),c.push(h)),a.push(h)}return u(t.__originalMappings,n.compareByOriginalPositions),t},BasicSourceMapConsumer.prototype._version=3,Object.defineProperty(BasicSourceMapConsumer.prototype,"sources",{get:function(){return this._sources.toArray().map((function(e){return null!=this.sourceRoot?n.join(this.sourceRoot,e):e}),this)}}),BasicSourceMapConsumer.prototype._parseMappings=function(e,t){for(var r,o,i,a,c,l=1,f=0,p=0,h=0,d=0,y=0,m=e.length,g=0,v={},b={},w=[],_=[];g<m;)if(";"===e.charAt(g))l++,g++,f=0;else if(","===e.charAt(g))g++;else{for((r=new Mapping).generatedLine=l,a=g;a<m&&!this._charIsMappingSeparator(e,a);a++);if(i=v[o=e.slice(g,a)])g+=o.length;else{for(i=[];g<a;)s.decode(e,g,b),c=b.value,g=b.rest,i.push(c);if(2===i.length)throw new Error("Found a source, but no line and column");if(3===i.length)throw new Error("Found a source and line, but no column");v[o]=i}r.generatedColumn=f+i[0],f=r.generatedColumn,i.length>1&&(r.source=d+i[1],d+=i[1],r.originalLine=p+i[2],p=r.originalLine,r.originalLine+=1,r.originalColumn=h+i[3],h=r.originalColumn,i.length>4&&(r.name=y+i[4],y+=i[4])),_.push(r),"number"==typeof r.originalLine&&w.push(r)}u(_,n.compareByGeneratedPositionsDeflated),this.__generatedMappings=_,u(w,n.compareByOriginalPositions),this.__originalMappings=w},BasicSourceMapConsumer.prototype._findMapping=function(e,t,r,n,i,s){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[n]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[n]);return o.search(e,t,i,s)},BasicSourceMapConsumer.prototype.computeColumnSpans=function(){for(var e=0;e<this._generatedMappings.length;++e){var t=this._generatedMappings[e];if(e+1<this._generatedMappings.length){var r=this._generatedMappings[e+1];if(t.generatedLine===r.generatedLine){t.lastGeneratedColumn=r.generatedColumn-1;continue}}t.lastGeneratedColumn=1/0}},BasicSourceMapConsumer.prototype.originalPositionFor=function(e){var t={generatedLine:n.getArg(e,"line"),generatedColumn:n.getArg(e,"column")},r=this._findMapping(t,this._generatedMappings,"generatedLine","generatedColumn",n.compareByGeneratedPositionsDeflated,n.getArg(e,"bias",SourceMapConsumer.GREATEST_LOWER_BOUND));if(r>=0){var o=this._generatedMappings[r];if(o.generatedLine===t.generatedLine){var i=n.getArg(o,"source",null);null!==i&&(i=this._sources.at(i),null!=this.sourceRoot&&(i=n.join(this.sourceRoot,i)));var s=n.getArg(o,"name",null);return null!==s&&(s=this._names.at(s)),{source:i,line:n.getArg(o,"originalLine",null),column:n.getArg(o,"originalColumn",null),name:s}}}return{source:null,line:null,column:null,name:null}},BasicSourceMapConsumer.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some((function(e){return null==e})))},BasicSourceMapConsumer.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=n.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var r;if(null!=this.sourceRoot&&(r=n.urlParse(this.sourceRoot))){var o=e.replace(/^file:\/\//,"");if("file"==r.scheme&&this._sources.has(o))return this.sourcesContent[this._sources.indexOf(o)];if((!r.path||"/"==r.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},BasicSourceMapConsumer.prototype.generatedPositionFor=function(e){var t=n.getArg(e,"source");if(null!=this.sourceRoot&&(t=n.relative(this.sourceRoot,t)),!this._sources.has(t))return{line:null,column:null,lastColumn:null};var r={source:t=this._sources.indexOf(t),originalLine:n.getArg(e,"line"),originalColumn:n.getArg(e,"column")},o=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",n.compareByOriginalPositions,n.getArg(e,"bias",SourceMapConsumer.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===r.source)return{line:n.getArg(i,"generatedLine",null),column:n.getArg(i,"generatedColumn",null),lastColumn:n.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},t.BasicSourceMapConsumer=BasicSourceMapConsumer,IndexedSourceMapConsumer.prototype=Object.create(SourceMapConsumer.prototype),IndexedSourceMapConsumer.prototype.constructor=SourceMapConsumer,IndexedSourceMapConsumer.prototype._version=3,Object.defineProperty(IndexedSourceMapConsumer.prototype,"sources",{get:function(){for(var e=[],t=0;t<this._sections.length;t++)for(var r=0;r<this._sections[t].consumer.sources.length;r++)e.push(this._sections[t].consumer.sources[r]);return e}}),IndexedSourceMapConsumer.prototype.originalPositionFor=function(e){var t={generatedLine:n.getArg(e,"line"),generatedColumn:n.getArg(e,"column")},r=o.search(t,this._sections,(function(e,t){var r=e.generatedLine-t.generatedOffset.generatedLine;return r||e.generatedColumn-t.generatedOffset.generatedColumn})),i=this._sections[r];return i?i.consumer.originalPositionFor({line:t.generatedLine-(i.generatedOffset.generatedLine-1),column:t.generatedColumn-(i.generatedOffset.generatedLine===t.generatedLine?i.generatedOffset.generatedColumn-1:0),bias:e.bias}):{source:null,line:null,column:null,name:null}},IndexedSourceMapConsumer.prototype.hasContentsOfAllSources=function(){return this._sections.every((function(e){return e.consumer.hasContentsOfAllSources()}))},IndexedSourceMapConsumer.prototype.sourceContentFor=function(e,t){for(var r=0;r<this._sections.length;r++){var n=this._sections[r].consumer.sourceContentFor(e,!0);if(n)return n}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},IndexedSourceMapConsumer.prototype.generatedPositionFor=function(e){for(var t=0;t<this._sections.length;t++){var r=this._sections[t];if(-1!==r.consumer.sources.indexOf(n.getArg(e,"source"))){var o=r.consumer.generatedPositionFor(e);if(o)return{line:o.line+(r.generatedOffset.generatedLine-1),column:o.column+(r.generatedOffset.generatedLine===o.line?r.generatedOffset.generatedColumn-1:0)}}}return{line:null,column:null}},IndexedSourceMapConsumer.prototype._parseMappings=function(e,t){this.__generatedMappings=[],this.__originalMappings=[];for(var r=0;r<this._sections.length;r++)for(var o=this._sections[r],i=o.consumer._generatedMappings,s=0;s<i.length;s++){var a=i[s],c=o.consumer._sources.at(a.source);null!==o.consumer.sourceRoot&&(c=n.join(o.consumer.sourceRoot,c)),this._sources.add(c),c=this._sources.indexOf(c);var l=o.consumer._names.at(a.name);this._names.add(l),l=this._names.indexOf(l);var f={source:c,generatedLine:a.generatedLine+(o.generatedOffset.generatedLine-1),generatedColumn:a.generatedColumn+(o.generatedOffset.generatedLine===a.generatedLine?o.generatedOffset.generatedColumn-1:0),originalLine:a.originalLine,originalColumn:a.originalColumn,name:l};this.__generatedMappings.push(f),"number"==typeof f.originalLine&&this.__originalMappings.push(f)}u(this.__generatedMappings,n.compareByGeneratedPositionsDeflated),u(this.__originalMappings,n.compareByOriginalPositions)},t.IndexedSourceMapConsumer=IndexedSourceMapConsumer},function(e,t){t.GREATEST_LOWER_BOUND=1,t.LEAST_UPPER_BOUND=2,t.search=function(e,r,n,o){if(0===r.length)return-1;var i=function recursiveSearch(e,r,n,o,i,s){var u=Math.floor((r-e)/2)+e,a=i(n,o[u],!0);return 0===a?u:a>0?r-u>1?recursiveSearch(u,r,n,o,i,s):s==t.LEAST_UPPER_BOUND?r<o.length?r:-1:u:u-e>1?recursiveSearch(e,u,n,o,i,s):s==t.LEAST_UPPER_BOUND?u:e<0?-1:e}(-1,r.length,e,r,n,o||t.GREATEST_LOWER_BOUND);if(i<0)return-1;for(;i-1>=0&&0===n(r[i],r[i-1],!0);)--i;return i}},function(e,t){function swap(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function doQuickSort(e,t,r,n){if(r<n){var o=r-1;swap(e,(a=r,c=n,Math.round(a+Math.random()*(c-a))),n);for(var i=e[n],s=r;s<n;s++)t(e[s],i)<=0&&swap(e,o+=1,s);swap(e,o+1,s);var u=o+1;doQuickSort(e,t,r,u-1),doQuickSort(e,t,u+1,n)}var a,c}t.quickSort=function(e,t){doQuickSort(e,t,0,e.length-1)}},function(e,t,r){var n=r(79).SourceMapGenerator,o=r(9),i=/(\r?\n)/,s="$$$isSourceNode$$$";function SourceNode(e,t,r,n,o){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==r?null:r,this.name=null==o?null:o,this[s]=!0,null!=n&&this.add(n)}SourceNode.fromStringWithSourceMap=function(e,t,r){var n=new SourceNode,s=e.split(i),shiftNextLine=function(){return s.shift()+(s.shift()||"")},u=1,a=0,c=null;return t.eachMapping((function(e){if(null!==c){if(!(u<e.generatedLine)){var t=(r=s[0]).substr(0,e.generatedColumn-a);return s[0]=r.substr(e.generatedColumn-a),a=e.generatedColumn,addMappingWithCode(c,t),void(c=e)}addMappingWithCode(c,shiftNextLine()),u++,a=0}for(;u<e.generatedLine;)n.add(shiftNextLine()),u++;if(a<e.generatedColumn){var r=s[0];n.add(r.substr(0,e.generatedColumn)),s[0]=r.substr(e.generatedColumn),a=e.generatedColumn}c=e}),this),s.length>0&&(c&&addMappingWithCode(c,shiftNextLine()),n.add(s.join(""))),t.sources.forEach((function(e){var i=t.sourceContentFor(e);null!=i&&(null!=r&&(e=o.join(r,e)),n.setSourceContent(e,i))})),n;function addMappingWithCode(e,t){if(null===e||void 0===e.source)n.add(t);else{var i=r?o.join(r,e.source):e.source;n.add(new SourceNode(e.originalLine,e.originalColumn,i,t,e.name))}}},SourceNode.prototype.add=function(e){if(Array.isArray(e))e.forEach((function(e){this.add(e)}),this);else{if(!e[s]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},SourceNode.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else{if(!e[s]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},SourceNode.prototype.walk=function(e){for(var t,r=0,n=this.children.length;r<n;r++)(t=this.children[r])[s]?t.walk(e):""!==t&&e(t,{source:this.source,line:this.line,column:this.column,name:this.name})},SourceNode.prototype.join=function(e){var t,r,n=this.children.length;if(n>0){for(t=[],r=0;r<n-1;r++)t.push(this.children[r]),t.push(e);t.push(this.children[r]),this.children=t}return this},SourceNode.prototype.replaceRight=function(e,t){var r=this.children[this.children.length-1];return r[s]?r.replaceRight(e,t):"string"==typeof r?this.children[this.children.length-1]=r.replace(e,t):this.children.push("".replace(e,t)),this},SourceNode.prototype.setSourceContent=function(e,t){this.sourceContents[o.toSetString(e)]=t},SourceNode.prototype.walkSourceContents=function(e){for(var t=0,r=this.children.length;t<r;t++)this.children[t][s]&&this.children[t].walkSourceContents(e);var n=Object.keys(this.sourceContents);for(t=0,r=n.length;t<r;t++)e(o.fromSetString(n[t]),this.sourceContents[n[t]])},SourceNode.prototype.toString=function(){var e="";return this.walk((function(t){e+=t})),e},SourceNode.prototype.toStringWithSourceMap=function(e){var t={code:"",line:1,column:0},r=new n(e),o=!1,i=null,s=null,u=null,a=null;return this.walk((function(e,n){t.code+=e,null!==n.source&&null!==n.line&&null!==n.column?(i===n.source&&s===n.line&&u===n.column&&a===n.name||r.addMapping({source:n.source,original:{line:n.line,column:n.column},generated:{line:t.line,column:t.column},name:n.name}),i=n.source,s=n.line,u=n.column,a=n.name,o=!0):o&&(r.addMapping({generated:{line:t.line,column:t.column}}),i=null,o=!1);for(var c=0,l=e.length;c<l;c++)10===e.charCodeAt(c)?(t.line++,t.column=0,c+1===l?(i=null,o=!1):o&&r.addMapping({source:n.source,original:{line:n.line,column:n.column},generated:{line:t.line,column:t.column},name:n.name})):t.column++})),this.walkSourceContents((function(e,t){r.setSourceContent(e,t)})),{code:t.code,map:r}},t.SourceNode=SourceNode},function(e,t){},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),o=_interopRequireDefault(r(10)),i=_interopRequireDefault(r(14));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var s=function(e){function Import(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Import);var t=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,(Import.__proto__||Object.getPrototypeOf(Import)).call(this,e));return t.type="import",t}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Import,e),n(Import,[{key:"toString",value:function(e){return e||(e={stringify:i.default}),function get(e,t,r){null===e&&(e=Function.prototype);var n=Object.getOwnPropertyDescriptor(e,t);if(void 0===n){var o=Object.getPrototypeOf(e);return null===o?void 0:get(o,t,r)}if("value"in n)return n.value;var i=n.get;return void 0!==i?i.call(r):void 0}(Import.prototype.__proto__||Object.getPrototypeOf(Import.prototype),"toString",this).call(this,e)}}]),Import}(o.default);t.default=s,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0;var n=r(77),o=_interopRequireDefault(r(78)),i=_interopRequireDefault(r(6));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var s=function(){function MapGenerator(e,t,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,MapGenerator),this.stringify=e,this.mapOpts=r.map||{},this.root=t,this.opts=r}return MapGenerator.prototype.isMap=function(){return void 0!==this.opts.map?!!this.opts.map:this.previous().length>0},MapGenerator.prototype.previous=function(){var e=this;return this.previousMaps||(this.previousMaps=[],this.root.walk((function(t){if(t.source&&t.source.input.map){var r=t.source.input.map;-1===e.previousMaps.indexOf(r)&&e.previousMaps.push(r)}}))),this.previousMaps},MapGenerator.prototype.isInline=function(){if(void 0!==this.mapOpts.inline)return this.mapOpts.inline;var e=this.mapOpts.annotation;return(void 0===e||!0===e)&&(!this.previous().length||this.previous().some((function(e){return e.inline})))},MapGenerator.prototype.isSourcesContent=function(){return void 0!==this.mapOpts.sourcesContent?this.mapOpts.sourcesContent:!this.previous().length||this.previous().some((function(e){return e.withContent()}))},MapGenerator.prototype.clearAnnotation=function(){if(!1!==this.mapOpts.annotation)for(var e=void 0,t=this.root.nodes.length-1;t>=0;t--)"comment"===(e=this.root.nodes[t]).type&&0===e.text.indexOf("# sourceMappingURL=")&&this.root.removeChild(t)},MapGenerator.prototype.setSourcesContent=function(){var e=this,t={};this.root.walk((function(r){if(r.source){var n=r.source.input.from;if(n&&!t[n]){t[n]=!0;var o=e.relative(n);e.map.setSourceContent(o,r.source.input.css)}}}))},MapGenerator.prototype.applyPrevMaps=function(){var e=this.previous(),t=Array.isArray(e),r=0;for(e=t?e:e[Symbol.iterator]();;){var n;if(t){if(r>=e.length)break;n=e[r++]}else{if((r=e.next()).done)break;n=r.value}var s=n,u=this.relative(s.file),a=s.root||i.default.dirname(s.file),c=void 0;!1===this.mapOpts.sourcesContent?(c=new o.default.SourceMapConsumer(s.text)).sourcesContent&&(c.sourcesContent=c.sourcesContent.map((function(){return null}))):c=s.consumer(),this.map.applySourceMap(c,u,this.relative(a))}},MapGenerator.prototype.isAnnotation=function(){return!!this.isInline()||(void 0!==this.mapOpts.annotation?this.mapOpts.annotation:!this.previous().length||this.previous().some((function(e){return e.annotation})))},MapGenerator.prototype.addAnnotation=function(){var e=void 0;e=this.isInline()?"data:application/json;base64,"+n.Base64.encode(this.map.toString()):"string"==typeof this.mapOpts.annotation?this.mapOpts.annotation:this.outputFile()+".map";var t="\n";-1!==this.css.indexOf("\r\n")&&(t="\r\n"),this.css+=t+"/*# sourceMappingURL="+e+" */"},MapGenerator.prototype.outputFile=function(){return this.opts.to?this.relative(this.opts.to):this.opts.from?this.relative(this.opts.from):"to.css"},MapGenerator.prototype.generateMap=function(){return this.generateString(),this.isSourcesContent()&&this.setSourcesContent(),this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]},MapGenerator.prototype.relative=function(e){if(0===e.indexOf("<"))return e;if(/^\w+:\/\//.test(e))return e;var t=this.opts.to?i.default.dirname(this.opts.to):".";return"string"==typeof this.mapOpts.annotation&&(t=i.default.dirname(i.default.resolve(t,this.mapOpts.annotation))),e=i.default.relative(t,e),"\\"===i.default.sep?e.replace(/\\/g,"/"):e},MapGenerator.prototype.sourcePath=function(e){return this.mapOpts.from?this.mapOpts.from:this.relative(e.source.input.from)},MapGenerator.prototype.generateString=function(){var e=this;this.css="",this.map=new o.default.SourceMapGenerator({file:this.outputFile()});var t=1,r=1,n=void 0,i=void 0;this.stringify(this.root,(function(o,s,u){e.css+=o,s&&"end"!==u&&(s.source&&s.source.start?e.map.addMapping({source:e.sourcePath(s),generated:{line:t,column:r-1},original:{line:s.source.start.line,column:s.source.start.column-1}}):e.map.addMapping({source:"<no source>",original:{line:1,column:0},generated:{line:t,column:r-1}})),(n=o.match(/\n/g))?(t+=n.length,i=o.lastIndexOf("\n"),r=o.length-i):r+=o.length,s&&"start"!==u&&(s.source&&s.source.end?e.map.addMapping({source:e.sourcePath(s),generated:{line:t,column:r-1},original:{line:s.source.end.line,column:s.source.end.column}}):e.map.addMapping({source:"<no source>",original:{line:1,column:0},generated:{line:t,column:r-1}}))}))},MapGenerator.prototype.generate=function(){if(this.clearAnnotation(),this.isMap())return this.generateMap();var e="";return this.stringify(this.root,(function(t){e+=t})),[e]},MapGenerator}();t.default=s,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0;var n,o=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),i=r(160),s=(n=i)&&n.__esModule?n:{default:n};var u=function(){function Result(e,t,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Result),this.processor=e,this.messages=[],this.root=t,this.opts=r,this.css=void 0,this.map=void 0}return Result.prototype.toString=function(){return this.css},Result.prototype.warn=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(t.plugin=this.lastPlugin.postcssPlugin);var r=new s.default(e,t);return this.messages.push(r),r},Result.prototype.warnings=function(){return this.messages.filter((function(e){return"warning"===e.type}))},o(Result,[{key:"content",get:function(){return this.css}}]),Result}();t.default=u,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0;var n=function(){function Warning(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Warning),this.type="warning",this.text=e,t.node&&t.node.source){var r=t.node.positionBy(t);this.line=r.line,this.column=r.column}for(var n in t)this[n]=t[n]}return Warning.prototype.toString=function(){return this.node?this.node.error(this.text,{plugin:this.plugin,index:this.index,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text},Warning}();t.default=n,e.exports=t.default},function(e,t,r){"use strict";function _typeof2(e){return(_typeof2="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}t.__esModule=!0;var n,o="function"==typeof Symbol&&"symbol"===_typeof2(Symbol.iterator)?function(e){return _typeof2(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":_typeof2(e)},i=r(86),s=(n=i)&&n.__esModule?n:{default:n};var u=function(){function Processor(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Processor),this.version="5.2.17",this.plugins=this.normalize(e)}return Processor.prototype.use=function(e){return this.plugins=this.plugins.concat(this.normalize([e])),this},Processor.prototype.process=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return new s.default(this,e,t)},Processor.prototype.normalize=function(e){var t=[],r=e,n=Array.isArray(r),i=0;for(r=n?r:r[Symbol.iterator]();;){var s;if(n){if(i>=r.length)break;s=r[i++]}else{if((i=r.next()).done)break;s=i.value}var u=s;if(u.postcss&&(u=u.postcss),"object"===(void 0===u?"undefined":o(u))&&Array.isArray(u.plugins))t=t.concat(u.plugins);else{if("function"!=typeof u)throw"object"===(void 0===u?"undefined":o(u))&&(u.parse||u.stringify)?new Error("PostCSS syntaxes cannot be used as plugins. Instead, please use one of the syntax/parser/stringifier options as outlined in your PostCSS runner documentation."):new Error(u+" is not a PostCSS plugin");t.push(u)}}return t},Processor}();t.default=u,e.exports=t.default},function(e,t,r){"use strict";t.__esModule=!0;var n={split:function(e,t,r){for(var n=[],o="",i=!1,s=0,u=!1,a=!1,c=0;c<e.length;c++){var l=e[c];u?a?a=!1:"\\"===l?a=!0:l===u&&(u=!1):'"'===l||"'"===l?u=l:"("===l?s+=1:")"===l?s>0&&(s-=1):0===s&&-1!==t.indexOf(l)&&(i=!0),i?(""!==o&&n.push(o.trim()),o="",i=!1):o+=l}return(r||""!==o)&&n.push(o.trim()),n},space:function(e){return n.split(e,[" ","\n","\t"])},comma:function(e){return n.split(e,[","],!0)}};t.default=n,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0});var n,o=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),i=r(23);var s=function(e){function LessStringifier(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,LessStringifier),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,(LessStringifier.__proto__||Object.getPrototypeOf(LessStringifier)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(LessStringifier,e),o(LessStringifier,[{key:"comment",value:function(e){this.builder(e.raws.content,e)}},{key:"import",value:function(e){this.builder("@"+e.name),this.builder((e.raws.afterName||"")+(e.directives||"")+(e.raws.between||"")+(e.urlFunc?"url(":"")+(e.raws.beforeUrl||"")+(e.importPath||"")+(e.raws.afterUrl||"")+(e.urlFunc?")":"")+(e.raws.after||"")),e.raws.semicolon&&this.builder(";")}},{key:"rule",value:function(e){(function get(e,t,r){null===e&&(e=Function.prototype);var n=Object.getOwnPropertyDescriptor(e,t);if(void 0===n){var o=Object.getPrototypeOf(e);return null===o?void 0:get(o,t,r)}if("value"in n)return n.value;var i=n.get;return void 0!==i?i.call(r):void 0})(LessStringifier.prototype.__proto__||Object.getPrototypeOf(LessStringifier.prototype),"rule",this).call(this,e),e.empty&&e.raws.semicolon&&(e.important&&(e.raws.important?this.builder(e.raws.important):this.builder(" !important")),e.raws.semicolon&&this.builder(";"))}},{key:"block",value:function(e,t){var r=e.empty,n=this.raw(e,"between","beforeOpen"),o="";r?this.builder(t+n,e,"start"):this.builder(t+n+"{",e,"start"),e.nodes&&e.nodes.length?(this.body(e),o=this.raw(e,"after")):o=this.raw(e,"after","emptyBody"),o&&this.builder(o),r||this.builder("}",e,"end")}}]),LessStringifier}(((n=i)&&n.__esModule?n:{default:n}).default);t.default=s,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),o=_interopRequireDefault(r(10)),i=_interopRequireDefault(r(14));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var s=function(e){function Rule(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Rule),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,(Rule.__proto__||Object.getPrototypeOf(Rule)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Rule,e),n(Rule,[{key:"toString",value:function(e){return e||(e={stringify:i.default}),function get(e,t,r){null===e&&(e=Function.prototype);var n=Object.getOwnPropertyDescriptor(e,t);if(void 0===n){var o=Object.getPrototypeOf(e);return null===o?void 0:get(o,t,r)}if("value"in n)return n.value;var i=n.get;return void 0!==i?i.call(r):void 0}(Rule.prototype.__proto__||Object.getPrototypeOf(Rule.prototype),"toString",this).call(this,e)}}]),Rule}(o.default);t.default=s,e.exports=t.default},function(e,t,r){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(e,t,r){return t&&defineProperties(e.prototype,t),r&&defineProperties(e,r),e}}(),o=_interopRequireDefault(r(26)),i=_interopRequireDefault(r(14));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var s=function(e){function Root(){return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,Root),function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==_typeof(t)&&"function"!=typeof t?e:t}(this,(Root.__proto__||Object.getPrototypeOf(Root)).apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+_typeof(t));e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(Root,e),n(Root,[{key:"toString",value:function(e){return e||(e={stringify:i.default}),function get(e,t,r){null===e&&(e=Function.prototype);var n=Object.getOwnPropertyDescriptor(e,t);if(void 0===n){var o=Object.getPrototypeOf(e);return null===o?void 0:get(o,t,r)}if("value"in n)return n.value;var i=n.get;return void 0!==i?i.call(r):void 0}(Root.prototype.__proto__||Object.getPrototypeOf(Root.prototype),"toString",this).call(this,e)}}]),Root}(o.default);t.default=s,e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=[],i=e.length,s=t;for(;s<i;){var u=e[s];if(n.indexOf(u[1])>=0)r.push(u[1]);else if("space"!==u[0])break;s++}for(var a=0;a<o;a++)if(r[a]!==n[a])return null;return e.slice(t,s)};var n=["&",":","extend"],o=n.length;e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e[1],r=t?t[0].charCodeAt(0):null;return(r===n.dot||r===n.hash)&&!1===n.hashColorPattern.test(t)&&!1===o.test(t)};var n=r(2),o=/\.[0-9]/;e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t={input:e,tokens:[],css:e.css.valueOf(),offset:-1,line:1,pos:0};t.length=t.css.length;for(;t.pos<t.length;)t.symbolCode=t.css.charCodeAt(t.pos),t.symbol=t.css[t.pos],t.nextPos=null,t.escaped=null,t.lines=null,t.lastLine=null,t.cssPart=null,t.escape=null,t.nextLine=null,t.nextOffset=null,t.escapePos=null,t.token=null,t.symbolCode===o.newline&&(t.offset=t.pos,t.line+=1),(0,s.default)(t),t.pos++;return t.tokens};var n,o=r(2),i=r(169),s=(n=i)&&n.__esModule?n:{default:n};e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){switch(e.symbolCode){case n.newline:case n.space:case n.tab:case n.carriageReturn:case n.feed:(0,f.default)(e);break;case n.comma:(0,u.default)(e);break;case n.colon:case n.semicolon:case n.openedCurlyBracket:case n.closedCurlyBracket:case n.closedParenthesis:case n.openSquareBracket:case n.closeSquareBracket:(0,s.default)(e);break;case n.openedParenthesis:(0,c.default)(e);break;case n.singleQuote:case n.doubleQuote:(0,l.default)(e);break;case n.atRule:(0,o.default)(e);break;case n.backslash:(0,i.default)(e);break;default:(0,a.default)(e)}};var n=r(2),o=_interopRequireDefault(r(170)),i=_interopRequireDefault(r(171)),s=_interopRequireDefault(r(172)),u=_interopRequireDefault(r(173)),a=_interopRequireDefault(r(174)),c=_interopRequireDefault(r(179)),l=_interopRequireDefault(r(180)),f=_interopRequireDefault(r(181));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){if(e.css.charCodeAt(e.pos+1)===o.openedCurlyBracket)e.nextPos=e.css.indexOf("}",e.pos+2),-1===e.nextPos&&(0,s.default)(e,"interpolation"),e.cssPart=e.css.slice(e.pos,e.nextPos+1),e.lines=e.cssPart.split("\n"),e.lastLine=e.lines.length-1,e.lastLine>0?(e.nextLine=e.line+e.lastLine,e.nextOffset=e.nextPos-e.lines[e.lastLine].length):(e.nextLine=e.line,e.nextOffset=e.offset),e.tokens.push(["word",e.cssPart,e.line,e.pos-e.offset,e.nextLine,e.nextPos-e.nextOffset]),e.offset=e.nextOffset,e.line=e.nextLine;else{if(o.atEndPattern.lastIndex=e.pos+1,o.atEndPattern.test(e.css),0===o.atEndPattern.lastIndex)e.nextPos=e.css.length-1;else{var t=e.css.slice(o.atEndPattern.lastIndex),r=e.css.slice(e.pos,o.atEndPattern.lastIndex+1);o.variableSpaceColonPattern.test(t)&&!o.pageSelectorPattern.test(r)?e.nextPos=o.atEndPattern.lastIndex+t.search(":"):e.nextPos=o.atEndPattern.lastIndex-2}e.cssPart=e.css.slice(e.pos,e.nextPos+1),e.token="at-word",o.variablePattern.test(e.cssPart)&&(o.wordEndPattern.lastIndex=e.pos+1,o.wordEndPattern.test(e.css),0===o.wordEndPattern.lastIndex?e.nextPos=e.css.length-1:e.nextPos=o.wordEndPattern.lastIndex-2,e.cssPart=e.css.slice(e.pos,e.nextPos+1),e.token="word"),e.tokens.push([e.token,e.cssPart,e.line,e.pos-e.offset,e.line,e.nextPos-e.offset])}e.pos=e.nextPos};var n,o=r(2),i=r(11),s=(n=i)&&n.__esModule?n:{default:n};e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.nextPos=e.pos,e.escape=!0;for(;e.css.charCodeAt(e.nextPos+1)===n.backslash;)e.nextPos+=1,e.escape=!e.escape;e.symbolCode=e.css.charCodeAt(e.nextPos+1),e.escape&&e.symbolCode!==n.slash&&e.symbolCode!==n.space&&e.symbolCode!==n.newline&&e.symbolCode!==n.tab&&e.symbolCode!==n.carriageReturn&&e.symbolCode!==n.feed&&(e.nextPos+=1);e.tokens.push(["word",e.css.slice(e.pos,e.nextPos+1),e.line,e.pos-e.offset,e.line,e.nextPos-e.offset]),e.pos=e.nextPos};var n=r(2);e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.tokens.push([e.symbol,e.symbol,e.line,e.pos-e.offset])},e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.tokens.push(["word",e.symbol,e.line,e.pos-e.offset,e.line,e.pos-e.offset+1])},e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.css.charCodeAt(e.pos+1);if(e.symbolCode===n.slash&&t===n.asterisk)(0,u.default)(e);else if(e.symbolCode===n.slash&&t===n.slash)(0,s.default)(e);else{if((0,i.default)(e)){var r=(0,o.default)(e);r<0?(0,a.default)(e,"escaping"):e.nextPos=r}else n.wordEndPattern.lastIndex=e.pos+1,n.wordEndPattern.test(e.css),0===n.wordEndPattern.lastIndex?e.nextPos=e.css.length-1:e.nextPos=n.wordEndPattern.lastIndex-2;e.cssPart=e.css.slice(e.pos,e.nextPos+1),e.tokens.push(["word",e.cssPart,e.line,e.pos-e.offset,e.line,e.nextPos-e.offset]),e.pos=e.nextPos}};var n=r(2),o=_interopRequireDefault(r(175)),i=_interopRequireDefault(r(176)),s=_interopRequireDefault(r(177)),u=_interopRequireDefault(r(178)),a=_interopRequireDefault(r(11));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){for(var t=0,r=-1,o=e.pos+1;o<e.length;o++){var i=e.css.charCodeAt(o);if(e.css.charCodeAt(o-1)!==n.backslash&&(i===n.singleQuote||i===n.doubleQuote||i===n.backTick))if(-1===r)r=i,t++;else if(i===r&&!--t)return o}return-1};var n=r(2);e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.css.charCodeAt(e.pos+1);return e.symbolCode===n.tilde&&o.indexOf(t)>=0};var n=r(2),o=[n.backTick,n.doubleQuote,n.singleQuote];e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.nextPos=e.css.indexOf("\n",e.pos+2)-1,-2===e.nextPos&&(e.nextPos=e.css.length-1);e.tokens.push(["comment",e.css.slice(e.pos,e.nextPos+1),e.line,e.pos-e.offset,e.line,e.nextPos-e.offset,"inline"]),e.pos=e.nextPos},e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.nextPos=e.css.indexOf("*/",e.pos+2)+1,0===e.nextPos&&(0,i.default)(e,"comment");e.cssPart=e.css.slice(e.pos,e.nextPos+1),e.lines=e.cssPart.split("\n"),e.lastLine=e.lines.length-1,e.lastLine>0?(e.nextLine=e.line+e.lastLine,e.nextOffset=e.nextPos-e.lines[e.lastLine].length):(e.nextLine=e.line,e.nextOffset=e.offset);e.tokens.push(["comment",e.cssPart,e.line,e.pos-e.offset,e.nextLine,e.nextPos-e.nextOffset]),e.offset=e.nextOffset,e.line=e.nextLine,e.pos=e.nextPos};var n,o=r(11),i=(n=o)&&n.__esModule?n:{default:n};e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=e.css.charCodeAt(e.pos+1),r=e.tokens.length;if("url"===(r?e.tokens[r-1][1]:"")&&t!==o.singleQuote&&t!==o.doubleQuote&&t!==o.space&&t!==o.newline&&t!==o.tab&&t!==o.feed&&t!==o.carriageReturn){e.nextPos=e.pos;do{for(e.escaped=!1,e.nextPos=e.css.indexOf(")",e.nextPos+1),-1===e.nextPos&&(0,s.default)(e,"bracket"),e.escapePos=e.nextPos;e.css.charCodeAt(e.escapePos-1)===o.backslash;)e.escapePos-=1,e.escaped=!e.escaped}while(e.escaped);e.tokens.push(["brackets",e.css.slice(e.pos,e.nextPos+1),e.line,e.pos-e.offset,e.line,e.nextPos-e.offset]),e.pos=e.nextPos}else{e.nextPos=function(e,t,r){for(var n=0,o=r;o<t;o++){var i=e[o];if("("===i)n++;else if(")"===i&&!--n)return o}return-1}(e.css,e.length,e.pos),e.cssPart=e.css.slice(e.pos,e.nextPos+1);var n=e.cssPart.indexOf("@")>=0,i=/['"]/.test(e.cssPart);if(0===e.cssPart.length||"..."===e.cssPart||n&&!i)-1===e.nextPos&&(0,s.default)(e,"bracket"),e.tokens.push([e.symbol,e.symbol,e.line,e.pos-e.offset]);else{var u=o.badBracketPattern.test(e.cssPart);-1===e.nextPos||u?e.tokens.push([e.symbol,e.symbol,e.line,e.pos-e.offset]):(e.tokens.push(["brackets",e.cssPart,e.line,e.pos-e.offset,e.line,e.nextPos-e.offset]),e.pos=e.nextPos)}}};var n,o=r(2),i=r(11),s=(n=i)&&n.__esModule?n:{default:n};e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.nextPos=e.pos;do{for(e.escaped=!1,e.nextPos=e.css.indexOf(e.symbol,e.nextPos+1),-1===e.nextPos&&(0,s.default)(e,"quote"),e.escapePos=e.nextPos;e.css.charCodeAt(e.escapePos-1)===o.backslash;)e.escapePos-=1,e.escaped=!e.escaped}while(e.escaped);e.tokens.push(["string",e.css.slice(e.pos,e.nextPos+1),e.line,e.pos-e.offset,e.line,e.nextPos-e.offset]),e.pos=e.nextPos};var n,o=r(2),i=r(11),s=(n=i)&&n.__esModule?n:{default:n};e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){e.nextPos=e.pos;do{e.nextPos+=1,e.symbolCode=e.css.charCodeAt(e.nextPos),e.symbolCode===n.newline&&(e.offset=e.nextPos,e.line+=1)}while(e.symbolCode===n.space||e.symbolCode===n.newline||e.symbolCode===n.tab||e.symbolCode===n.carriageReturn||e.symbolCode===n.feed);e.tokens.push(["space",e.css.slice(e.pos,e.nextPos)]),e.pos=e.nextPos-1};var n=r(2);e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=_interopRequireDefault(r(183)),o=_interopRequireDefault(r(14));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}t.default={parse:n.default,stringify:o.default},e.exports=t.default},function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){var r=new n.default(e,t),i=new o.default(r,t);return i.tokenize(),i.loop(),i.root};var n=_interopRequireDefault(r(22)),o=_interopRequireDefault(r(72));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}e.exports=t.default}])})); \ No newline at end of file
diff --git a/node_modules/prettier/parser-typescript.js b/node_modules/prettier/parser-typescript.js
new file mode 100644
index 0000000..e0c2370
--- /dev/null
+++ b/node_modules/prettier/parser-typescript.js
@@ -0,0 +1,14 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(((e=e||self).prettierPlugins=e.prettierPlugins||{},e.prettierPlugins.typescript={}))}(this,(function(e){"use strict";var t=function(e,t){var r=new SyntaxError(e+" ("+t.start.line+":"+t.start.column+")");return r.loc=t,r};var r=function(e,t){if(e.startsWith("#!")){var r=e.indexOf("\n"),n={type:"Line",value:e.slice(2,r),range:[0,r],loc:{source:null,start:{line:1,column:0},end:{line:1,column:r}}};t.comments=[n].concat(t.comments)}},n="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function i(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function a(e,t){return e(t={exports:{}},t.exports),t.exports}function o(e){return e&&e.default||e}var s=Object.freeze({__proto__:null,default:{EOL:"\n"}}),c=a((function(e){e.exports=function(e){if("string"!=typeof e)throw new TypeError("Expected a string");var t=e.match(/(?:\r?\n)/g)||[];if(0===t.length)return null;var r=t.filter((function(e){return"\r\n"===e})).length;return r>t.length-r?"\r\n":"\n"},e.exports.graceful=function(t){return e.exports(t)||"\n"}})),u=(c.graceful,o(s)),l=a((function(e,t){function r(){var e=u;return r=function(){return e},e}function n(){var e,t=(e=c)&&e.__esModule?e:{default:e};return n=function(){return t},t}Object.defineProperty(t,"__esModule",{value:!0}),t.extract=function(e){var t=e.match(o);return t?t[0].trimLeft():""},t.strip=function(e){var t=e.match(o);return t&&t[0]?e.substring(t[0].length):e},t.parse=function(e){return f(e).pragmas},t.parseWithComments=f,t.print=function(e){var t=e.comments,i=void 0===t?"":t,a=e.pragmas,o=void 0===a?{}:a,s=(0,n().default)(i)||r().EOL,c=Object.keys(o),u=c.map((function(e){return m(e,o[e])})).reduce((function(e,t){return e.concat(t)}),[]).map((function(e){return" * "+e+s})).join("");if(!i){if(0===c.length)return"";if(1===c.length&&!Array.isArray(o[c[0]])){var l=o[c[0]];return"".concat("/**"," ").concat(m(c[0],l)[0]).concat(" */")}}var _=i.split(s).map((function(e){return"".concat(" *"," ").concat(e)})).join(s)+s;return"/**"+s+(i?_:"")+(i&&c.length?" *"+s:"")+u+" */"};var i=/\*\/$/,a=/^\/\*\*/,o=/^\s*(\/\*\*?(.|\r?\n)*?\*\/)/,s=/(^|\s+)\/\/([^\r\n]*)/g,l=/^(\r?\n)+/,_=/(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g,d=/(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g,p=/(\r?\n|^) *\* ?/g;function f(e){var t=(0,n().default)(e)||r().EOL;e=e.replace(a,"").replace(i,"").replace(p,"$1");for(var o="";o!==e;)o=e,e=e.replace(_,"".concat(t,"$1 $2").concat(t));e=e.replace(l,"").trimRight();for(var c,u=Object.create(null),f=e.replace(d,"").replace(l,"").trimRight();c=d.exec(e);){var m=c[2].replace(s,"");"string"==typeof u[c[1]]||Array.isArray(u[c[1]])?u[c[1]]=[].concat(u[c[1]],m):u[c[1]]=m}return{comments:f,pragmas:u}}function m(e,t){return[].concat(t).map((function(t){return"@".concat(e," ").concat(t).trim()}))}}));i(l);l.extract,l.strip,l.parse,l.parseWithComments,l.print;var _=function(e){var t=Object.keys(l.parse(l.extract(e)));return-1!==t.indexOf("prettier")||-1!==t.indexOf("format")},d=function(e){return e.length>0?e[e.length-1]:null};var p={locStart:function e(t,r){return!(r=r||{}).ignoreDecorators&&t.declaration&&t.declaration.decorators&&t.declaration.decorators.length>0?e(t.declaration.decorators[0]):!r.ignoreDecorators&&t.decorators&&t.decorators.length>0?e(t.decorators[0]):t.__location?t.__location.startOffset:t.range?t.range[0]:"number"==typeof t.start?t.start:t.loc?t.loc.start:null},locEnd:function e(t){var r=t.nodes&&d(t.nodes);if(r&&t.source&&!t.source.end&&(t=r),t.__location)return t.__location.endOffset;var n=t.range?t.range[1]:"number"==typeof t.end?t.end:null;return t.typeAnnotation?Math.max(n,e(t.typeAnnotation)):t.loc&&!n?t.loc.end:n}};function f(e){return(f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function m(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function g(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function y(e,t,r){return t&&g(e.prototype,t),r&&g(e,r),e}function h(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function v(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&x(e,t)}function b(e){return(b=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function x(e,t){return(x=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function D(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function S(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?D(e):t}function T(e,t,r){return(T="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=b(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(r):i.value}})(e,t,r||e)}function E(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var C=function(e){return"string"==typeof e?e.replace(function(e){e=Object.assign({onlyFirst:!1},e);var t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(t,e.onlyFirst?void 0:"g")}(),""):e},k=C,N=C;k.default=N;var A=function(e){return!Number.isNaN(e)&&(e>=4352&&(e<=4447||9001===e||9002===e||11904<=e&&e<=12871&&12351!==e||12880<=e&&e<=19903||19968<=e&&e<=42182||43360<=e&&e<=43388||44032<=e&&e<=55203||63744<=e&&e<=64255||65040<=e&&e<=65049||65072<=e&&e<=65131||65281<=e&&e<=65376||65504<=e&&e<=65510||110592<=e&&e<=110593||127488<=e&&e<=127569||131072<=e&&e<=262141))},F=A,P=A;F.default=P;var w=function(e){if("string"!=typeof(e=e.replace(/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g," "))||0===e.length)return 0;e=k(e);for(var t=0,r=0;r<e.length;r++){var n=e.codePointAt(r);n<=31||n>=127&&n<=159||(n>=768&&n<=879||(n>65535&&r++,t+=F(n)?2:1))}return t},I=w,O=w;I.default=O;var M=/[|\\{}()[\]^$+*?.]/g,L=function(e){if("string"!=typeof e)throw new TypeError("Expected a string");return e.replace(M,"\\$&")},R=/[^\x20-\x7F]/;function B(e){if(e)switch(e.type){case"ExportDefaultDeclaration":case"ExportDefaultSpecifier":case"DeclareExportDeclaration":case"ExportNamedDeclaration":case"ExportAllDeclaration":return!0}return!1}function j(e){return function(t,r,n){var i=n&&n.backwards;if(!1===r)return!1;for(var a=t.length,o=r;o>=0&&o<a;){var s=t.charAt(o);if(e instanceof RegExp){if(!e.test(s))return o}else if(-1===e.indexOf(s))return o;i?o--:o++}return(-1===o||o===a)&&o}}var K=j(/\s/),J=j(" \t"),z=j(",; \t"),U=j(/[^\r\n]/);function V(e,t){if(!1===t)return!1;if("/"===e.charAt(t)&&"*"===e.charAt(t+1))for(var r=t+2;r<e.length;++r)if("*"===e.charAt(r)&&"/"===e.charAt(r+1))return r+2;return t}function q(e,t){return!1!==t&&("/"===e.charAt(t)&&"/"===e.charAt(t+1)?U(e,t):t)}function W(e,t,r){var n=r&&r.backwards;if(!1===t)return!1;var i=e.charAt(t);if(n){if("\r"===e.charAt(t-1)&&"\n"===i)return t-2;if("\n"===i||"\r"===i||"\u2028"===i||"\u2029"===i)return t-1}else{if("\r"===i&&"\n"===e.charAt(t+1))return t+2;if("\n"===i||"\r"===i||"\u2028"===i||"\u2029"===i)return t+1}return t}function G(e,t,r){var n=J(e,(r=r||{}).backwards?t-1:t,r);return n!==W(e,n,r)}function H(e,t){for(var r=null,n=t;n!==r;)r=n,n=V(e,n=z(e,n)),n=J(e,n);return!1!==(n=W(e,n=q(e,n)))&&G(e,n)}function Y(e,t){for(var r=null,n=t;n!==r;)r=n,n=W(e,n=q(e,n=V(e,n=J(e,n))));return n}function X(e,t,r){return Y(e,r(t))}var Q={};function $(e){return Q[e]}[["|>"],["??"],["||"],["&&"],["|"],["^"],["&"],["==","===","!=","!=="],["<",">","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"],["**"]].forEach((function(e,t){e.forEach((function(e){Q[e]=t}))}));var Z={"==":!0,"!=":!0,"===":!0,"!==":!0},ee={"*":!0,"/":!0,"%":!0},te={">>":!0,">>>":!0,"<<":!0};function re(e,t,r){for(var n=0,i=r=r||0;i<e.length;++i)"\t"===e[i]?n=n+t-n%t:n++;return n}function ne(e,t){var r=e.slice(1,-1),n={quote:'"',regex:/"/g},i={quote:"'",regex:/'/g},a="'"===t?i:n,o=a===i?n:i,s=a.quote;(r.includes(a.quote)||r.includes(o.quote))&&(s=(r.match(a.regex)||[]).length>(r.match(o.regex)||[]).length?o.quote:a.quote);return s}function ie(e,t,r){var n='"'===t?"'":'"',i=e.replace(/\\([\s\S])|(['"])/g,(function(e,i,a){return i===n?i:a===t?"\\"+a:a||(r&&/^[^\\nrvtbfux\r\n\u2028\u2029"'0-7]$/.test(i)?i:"\\"+i)}));return t+i+t}function ae(e){return e&&e.comments&&e.comments.length>0&&e.comments.some((function(e){return"prettier-ignore"===e.value.trim()}))}function oe(e,t){(e.comments||(e.comments=[])).push(t),t.printed=!1,"JSXText"===e.type&&(t.printed=!0)}var se={replaceEndOfLineWith:function(e,t){var r=[],n=!0,i=!1,a=void 0;try{for(var o,s=e.split("\n")[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var c=o.value;0!==r.length&&r.push(t),r.push(c)}}catch(e){i=!0,a=e}finally{try{n||null==s.return||s.return()}finally{if(i)throw a}}return r},getStringWidth:function(e){return e?R.test(e)?I(e):e.length:0},getMaxContinuousCount:function(e,t){var r=e.match(new RegExp("(".concat(L(t),")+"),"g"));return null===r?0:r.reduce((function(e,r){return Math.max(e,r.length/t.length)}),0)},getMinNotPresentContinuousCount:function(e,t){var r=e.match(new RegExp("(".concat(L(t),")+"),"g"));if(null===r)return 0;var n=new Map,i=0,a=!0,o=!1,s=void 0;try{for(var c,u=r[Symbol.iterator]();!(a=(c=u.next()).done);a=!0){var l=c.value.length/t.length;n.set(l,!0),l>i&&(i=l)}}catch(e){o=!0,s=e}finally{try{a||null==u.return||u.return()}finally{if(o)throw s}}for(var _=1;_<i;_++)if(!n.get(_))return _;return i+1},getPrecedence:$,shouldFlatten:function(e,t){return $(t)===$(e)&&("**"!==e&&((!Z[e]||!Z[t])&&(!("%"===t&&ee[e]||"%"===e&&ee[t])&&((t===e||!ee[t]||!ee[e])&&(!te[e]||!te[t])))))},isBitwiseOperator:function(e){return!!te[e]||"|"===e||"^"===e||"&"===e},isExportDeclaration:B,getParentExportDeclaration:function(e){var t=e.getParentNode();return"declaration"===e.getName()&&B(t)?t:null},getPenultimate:function(e){return e.length>1?e[e.length-2]:null},getLast:d,getNextNonSpaceNonCommentCharacterIndexWithStartIndex:Y,getNextNonSpaceNonCommentCharacterIndex:X,getNextNonSpaceNonCommentCharacter:function(e,t,r){return e.charAt(X(e,t,r))},skip:j,skipWhitespace:K,skipSpaces:J,skipToLineEnd:z,skipEverythingButNewLine:U,skipInlineComment:V,skipTrailingComment:q,skipNewline:W,isNextLineEmptyAfterIndex:H,isNextLineEmpty:function(e,t,r){return H(e,r(t))},isPreviousLineEmpty:function(e,t,r){var n=r(t)-1;return n=W(e,n=J(e,n,{backwards:!0}),{backwards:!0}),(n=J(e,n,{backwards:!0}))!==W(e,n,{backwards:!0})},hasNewline:G,hasNewlineInRange:function(e,t,r){for(var n=t;n<r;++n)if("\n"===e.charAt(n))return!0;return!1},hasSpaces:function(e,t,r){return J(e,(r=r||{}).backwards?t-1:t,r)!==t},setLocStart:function(e,t){e.range?e.range[0]=t:e.start=t},setLocEnd:function(e,t){e.range?e.range[1]=t:e.end=t},startsWithNoLookaheadToken:function e(t,r){switch((t=function e(t){if(t.left)return e(t.left);return t}(t)).type){case"FunctionExpression":case"ClassExpression":case"DoExpression":return r;case"ObjectExpression":return!0;case"MemberExpression":case"OptionalMemberExpression":return e(t.object,r);case"TaggedTemplateExpression":return"FunctionExpression"!==t.tag.type&&e(t.tag,r);case"CallExpression":case"OptionalCallExpression":return"FunctionExpression"!==t.callee.type&&e(t.callee,r);case"ConditionalExpression":return e(t.test,r);case"UpdateExpression":return!t.prefix&&e(t.argument,r);case"BindExpression":return t.object&&e(t.object,r);case"SequenceExpression":return e(t.expressions[0],r);case"TSAsExpression":return e(t.expression,r);default:return!1}},getAlignmentSize:re,getIndentSize:function(e,t){var r=e.lastIndexOf("\n");return-1===r?0:re(e.slice(r+1).match(/^[ \t]*/)[0],t)},getPreferredQuote:ne,printString:function(e,t,r){var n=e.slice(1,-1),i=!n.includes('"')&&!n.includes("'"),a="json"===t.parser?'"':t.__isInHtmlAttribute?"'":ne(e,t.singleQuote?"'":'"');return r?i?a+n+a:e:ie(n,a,!("css"===t.parser||"less"===t.parser||"scss"===t.parser||t.embeddedInHtml))},printNumber:function(e){return e.toLowerCase().replace(/^([+-]?[\d.]+e)(?:\+|(-))?0*(\d)/,"$1$2$3").replace(/^([+-]?[\d.]+)e[+-]?0+$/,"$1").replace(/^([+-])?\./,"$10.").replace(/(\.\d+?)0+(?=e|$)/,"$1").replace(/\.(?=e|$)/,"")},hasIgnoreComment:function(e){return ae(e.getValue())},hasNodeIgnoreComment:ae,makeString:ie,matchAncestorTypes:function(e,t,r){for(r=r||0,t=t.slice();t.length;){var n=e.getParentNode(r),i=t.shift();if(!n||n.type!==i)return!1;r++}return!0},addLeadingComment:function(e,t){t.leading=!0,t.trailing=!1,oe(e,t)},addDanglingComment:function(e,t){t.leading=!1,t.trailing=!1,oe(e,t)},addTrailingComment:function(e,t){t.leading=!1,t.trailing=!0,oe(e,t)},isWithinParentArrayProperty:function(e,t){var r=e.getValue(),n=e.getParentNode();if(null==n)return!1;if(!Array.isArray(n[t]))return!1;var i=e.getName();return n[t][i]===r}}.getLast;var ce=function(e,t){return function e(t,r,n,i){if(!t||"object"!==f(t))return;if(Array.isArray(t)){for(var a=0;a<t.length;a++)e(t[a],r,t,a);return}if("string"!=typeof t.type)return;for(var o=0,s=Object.keys(t);o<s.length;o++){var c=s[o];e(t[c],r,t,c)}var u=r(t);u&&(n[i]=u)}(e,(function(e){switch(e.type){case"VariableDeclaration":var r=se(e.declarations);r&&r.init&&function(e,r){if(";"===t.originalText[function(e){return"flow"===t.parser?e.range[1]:e.end}(r)])return;"flow"===t.parser?e.range=[e.range[0],r.range[1]]:e.end=r.end;e.loc=Object.assign({},e.loc,{end:e.loc.end})}(e,r);break;case"TSParenthesizedType":return e.typeAnnotation;case"TSUnionType":case"TSIntersectionType":if(1===e.types.length)return Object.assign({},e.types[0],{loc:e.loc,range:e.range});break;case"EnumDeclaration":"flow"===t.parser&&e.body.range[0]===e.range[0]&&e.body.range[1]===e.range[1]&&(e.body.range=[e.id.range[1],e.range[1]-1]),"babel-flow"===t.parser&&(e.body.start=e.id.end,e.body.end=e.end-1)}})),e},ue="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};function le(){throw new Error("setTimeout has not been defined")}function _e(){throw new Error("clearTimeout has not been defined")}var de=le,pe=_e;function fe(e){if(de===setTimeout)return setTimeout(e,0);if((de===le||!de)&&setTimeout)return de=setTimeout,setTimeout(e,0);try{return de(e,0)}catch(t){try{return de.call(null,e,0)}catch(t){return de.call(this,e,0)}}}"function"==typeof ue.setTimeout&&(de=setTimeout),"function"==typeof ue.clearTimeout&&(pe=clearTimeout);var me,ge=[],ye=!1,he=-1;function ve(){ye&&me&&(ye=!1,me.length?ge=me.concat(ge):he=-1,ge.length&&be())}function be(){if(!ye){var e=fe(ve);ye=!0;for(var t=ge.length;t;){for(me=ge,ge=[];++he<t;)me&&me[he].run();he=-1,t=ge.length}me=null,ye=!1,function(e){if(pe===clearTimeout)return clearTimeout(e);if((pe===_e||!pe)&&clearTimeout)return pe=clearTimeout,clearTimeout(e);try{pe(e)}catch(t){try{return pe.call(null,e)}catch(t){return pe.call(this,e)}}}(e)}}function xe(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];ge.push(new De(e,t)),1!==ge.length||ye||fe(be)}function De(e,t){this.fun=e,this.array=t}De.prototype.run=function(){this.fun.apply(null,this.array)};function Se(){}var Te=Se,Ee=Se,Ce=Se,ke=Se,Ne=Se,Ae=Se,Fe=Se;var Pe=ue.performance||{},we=Pe.now||Pe.mozNow||Pe.msNow||Pe.oNow||Pe.webkitNow||function(){return(new Date).getTime()};var Ie=new Date;var Oe={nextTick:xe,title:"browser",browser:!0,env:{},argv:[],version:"",versions:{},on:Te,addListener:Ee,once:Ce,off:ke,removeListener:Ne,removeAllListeners:Ae,emit:Fe,binding:function(e){throw new Error("process.binding is not supported")},cwd:function(){return"/"},chdir:function(e){throw new Error("process.chdir is not supported")},umask:function(){return 0},hrtime:function(e){var t=.001*we.call(Pe),r=Math.floor(t),n=Math.floor(t%1*1e9);return e&&(r-=e[0],(n-=e[1])<0&&(r--,n+=1e9)),[r,n]},platform:"browser",release:{},config:{},uptime:function(){return(new Date-Ie)/1e3}},Me=a((function(e,t){var r;t=e.exports=d,r="object"===f(Oe)&&Oe.env&&Oe.env.NODE_DEBUG&&/\bsemver\b/i.test(Oe.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},t.SEMVER_SPEC_VERSION="2.0.0";var n=256,i=Number.MAX_SAFE_INTEGER||9007199254740991,a=t.re=[],o=t.src=[],s=t.tokens={},c=0;function u(e){s[e]=c++}u("NUMERICIDENTIFIER"),o[s.NUMERICIDENTIFIER]="0|[1-9]\\d*",u("NUMERICIDENTIFIERLOOSE"),o[s.NUMERICIDENTIFIERLOOSE]="[0-9]+",u("NONNUMERICIDENTIFIER"),o[s.NONNUMERICIDENTIFIER]="\\d*[a-zA-Z-][a-zA-Z0-9-]*",u("MAINVERSION"),o[s.MAINVERSION]="("+o[s.NUMERICIDENTIFIER]+")\\.("+o[s.NUMERICIDENTIFIER]+")\\.("+o[s.NUMERICIDENTIFIER]+")",u("MAINVERSIONLOOSE"),o[s.MAINVERSIONLOOSE]="("+o[s.NUMERICIDENTIFIERLOOSE]+")\\.("+o[s.NUMERICIDENTIFIERLOOSE]+")\\.("+o[s.NUMERICIDENTIFIERLOOSE]+")",u("PRERELEASEIDENTIFIER"),o[s.PRERELEASEIDENTIFIER]="(?:"+o[s.NUMERICIDENTIFIER]+"|"+o[s.NONNUMERICIDENTIFIER]+")",u("PRERELEASEIDENTIFIERLOOSE"),o[s.PRERELEASEIDENTIFIERLOOSE]="(?:"+o[s.NUMERICIDENTIFIERLOOSE]+"|"+o[s.NONNUMERICIDENTIFIER]+")",u("PRERELEASE"),o[s.PRERELEASE]="(?:-("+o[s.PRERELEASEIDENTIFIER]+"(?:\\."+o[s.PRERELEASEIDENTIFIER]+")*))",u("PRERELEASELOOSE"),o[s.PRERELEASELOOSE]="(?:-?("+o[s.PRERELEASEIDENTIFIERLOOSE]+"(?:\\."+o[s.PRERELEASEIDENTIFIERLOOSE]+")*))",u("BUILDIDENTIFIER"),o[s.BUILDIDENTIFIER]="[0-9A-Za-z-]+",u("BUILD"),o[s.BUILD]="(?:\\+("+o[s.BUILDIDENTIFIER]+"(?:\\."+o[s.BUILDIDENTIFIER]+")*))",u("FULL"),u("FULLPLAIN"),o[s.FULLPLAIN]="v?"+o[s.MAINVERSION]+o[s.PRERELEASE]+"?"+o[s.BUILD]+"?",o[s.FULL]="^"+o[s.FULLPLAIN]+"$",u("LOOSEPLAIN"),o[s.LOOSEPLAIN]="[v=\\s]*"+o[s.MAINVERSIONLOOSE]+o[s.PRERELEASELOOSE]+"?"+o[s.BUILD]+"?",u("LOOSE"),o[s.LOOSE]="^"+o[s.LOOSEPLAIN]+"$",u("GTLT"),o[s.GTLT]="((?:<|>)?=?)",u("XRANGEIDENTIFIERLOOSE"),o[s.XRANGEIDENTIFIERLOOSE]=o[s.NUMERICIDENTIFIERLOOSE]+"|x|X|\\*",u("XRANGEIDENTIFIER"),o[s.XRANGEIDENTIFIER]=o[s.NUMERICIDENTIFIER]+"|x|X|\\*",u("XRANGEPLAIN"),o[s.XRANGEPLAIN]="[v=\\s]*("+o[s.XRANGEIDENTIFIER]+")(?:\\.("+o[s.XRANGEIDENTIFIER]+")(?:\\.("+o[s.XRANGEIDENTIFIER]+")(?:"+o[s.PRERELEASE]+")?"+o[s.BUILD]+"?)?)?",u("XRANGEPLAINLOOSE"),o[s.XRANGEPLAINLOOSE]="[v=\\s]*("+o[s.XRANGEIDENTIFIERLOOSE]+")(?:\\.("+o[s.XRANGEIDENTIFIERLOOSE]+")(?:\\.("+o[s.XRANGEIDENTIFIERLOOSE]+")(?:"+o[s.PRERELEASELOOSE]+")?"+o[s.BUILD]+"?)?)?",u("XRANGE"),o[s.XRANGE]="^"+o[s.GTLT]+"\\s*"+o[s.XRANGEPLAIN]+"$",u("XRANGELOOSE"),o[s.XRANGELOOSE]="^"+o[s.GTLT]+"\\s*"+o[s.XRANGEPLAINLOOSE]+"$",u("COERCE"),o[s.COERCE]="(^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])",u("COERCERTL"),a[s.COERCERTL]=new RegExp(o[s.COERCE],"g"),u("LONETILDE"),o[s.LONETILDE]="(?:~>?)",u("TILDETRIM"),o[s.TILDETRIM]="(\\s*)"+o[s.LONETILDE]+"\\s+",a[s.TILDETRIM]=new RegExp(o[s.TILDETRIM],"g");u("TILDE"),o[s.TILDE]="^"+o[s.LONETILDE]+o[s.XRANGEPLAIN]+"$",u("TILDELOOSE"),o[s.TILDELOOSE]="^"+o[s.LONETILDE]+o[s.XRANGEPLAINLOOSE]+"$",u("LONECARET"),o[s.LONECARET]="(?:\\^)",u("CARETTRIM"),o[s.CARETTRIM]="(\\s*)"+o[s.LONECARET]+"\\s+",a[s.CARETTRIM]=new RegExp(o[s.CARETTRIM],"g");u("CARET"),o[s.CARET]="^"+o[s.LONECARET]+o[s.XRANGEPLAIN]+"$",u("CARETLOOSE"),o[s.CARETLOOSE]="^"+o[s.LONECARET]+o[s.XRANGEPLAINLOOSE]+"$",u("COMPARATORLOOSE"),o[s.COMPARATORLOOSE]="^"+o[s.GTLT]+"\\s*("+o[s.LOOSEPLAIN]+")$|^$",u("COMPARATOR"),o[s.COMPARATOR]="^"+o[s.GTLT]+"\\s*("+o[s.FULLPLAIN]+")$|^$",u("COMPARATORTRIM"),o[s.COMPARATORTRIM]="(\\s*)"+o[s.GTLT]+"\\s*("+o[s.LOOSEPLAIN]+"|"+o[s.XRANGEPLAIN]+")",a[s.COMPARATORTRIM]=new RegExp(o[s.COMPARATORTRIM],"g");u("HYPHENRANGE"),o[s.HYPHENRANGE]="^\\s*("+o[s.XRANGEPLAIN]+")\\s+-\\s+("+o[s.XRANGEPLAIN]+")\\s*$",u("HYPHENRANGELOOSE"),o[s.HYPHENRANGELOOSE]="^\\s*("+o[s.XRANGEPLAINLOOSE]+")\\s+-\\s+("+o[s.XRANGEPLAINLOOSE]+")\\s*$",u("STAR"),o[s.STAR]="(<|>)?=?\\s*\\*";for(var l=0;l<c;l++)r(l,o[l]),a[l]||(a[l]=new RegExp(o[l]));function _(e,t){if(t&&"object"===f(t)||(t={loose:!!t,includePrerelease:!1}),e instanceof d)return e;if("string"!=typeof e)return null;if(e.length>n)return null;if(!(t.loose?a[s.LOOSE]:a[s.FULL]).test(e))return null;try{return new d(e,t)}catch(e){return null}}function d(e,t){if(t&&"object"===f(t)||(t={loose:!!t,includePrerelease:!1}),e instanceof d){if(e.loose===t.loose)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>n)throw new TypeError("version is longer than "+n+" characters");if(!(this instanceof d))return new d(e,t);r("SemVer",e,t),this.options=t,this.loose=!!t.loose;var o=e.trim().match(t.loose?a[s.LOOSE]:a[s.FULL]);if(!o)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+o[1],this.minor=+o[2],this.patch=+o[3],this.major>i||this.major<0)throw new TypeError("Invalid major version");if(this.minor>i||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>i||this.patch<0)throw new TypeError("Invalid patch version");o[4]?this.prerelease=o[4].split(".").map((function(e){if(/^[0-9]+$/.test(e)){var t=+e;if(t>=0&&t<i)return t}return e})):this.prerelease=[],this.build=o[5]?o[5].split("."):[],this.format()}t.parse=_,t.valid=function(e,t){var r=_(e,t);return r?r.version:null},t.clean=function(e,t){var r=_(e.trim().replace(/^[=v]+/,""),t);return r?r.version:null},t.SemVer=d,d.prototype.format=function(){return this.version=this.major+"."+this.minor+"."+this.patch,this.prerelease.length&&(this.version+="-"+this.prerelease.join(".")),this.version},d.prototype.toString=function(){return this.version},d.prototype.compare=function(e){return r("SemVer.compare",this.version,this.options,e),e instanceof d||(e=new d(e,this.options)),this.compareMain(e)||this.comparePre(e)},d.prototype.compareMain=function(e){return e instanceof d||(e=new d(e,this.options)),m(this.major,e.major)||m(this.minor,e.minor)||m(this.patch,e.patch)},d.prototype.comparePre=function(e){if(e instanceof d||(e=new d(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;var t=0;do{var n=this.prerelease[t],i=e.prerelease[t];if(r("prerelease compare",t,n,i),void 0===n&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===n)return-1;if(n!==i)return m(n,i)}while(++t)},d.prototype.compareBuild=function(e){e instanceof d||(e=new d(e,this.options));var t=0;do{var n=this.build[t],i=e.build[t];if(r("prerelease compare",t,n,i),void 0===n&&void 0===i)return 0;if(void 0===i)return 1;if(void 0===n)return-1;if(n!==i)return m(n,i)}while(++t)},d.prototype.inc=function(e,t){switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t),this.inc("pre",t);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",t),this.inc("pre",t);break;case"major":0===this.minor&&0===this.patch&&0!==this.prerelease.length||this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":0===this.patch&&0!==this.prerelease.length||this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":if(0===this.prerelease.length)this.prerelease=[0];else{for(var r=this.prerelease.length;--r>=0;)"number"==typeof this.prerelease[r]&&(this.prerelease[r]++,r=-2);-1===r&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},t.inc=function(e,t,r,n){"string"==typeof r&&(n=r,r=void 0);try{return new d(e,r).inc(t,n).version}catch(e){return null}},t.diff=function(e,t){if(v(e,t))return null;var r=_(e),n=_(t),i="";if(r.prerelease.length||n.prerelease.length){i="pre";var a="prerelease"}for(var o in r)if(("major"===o||"minor"===o||"patch"===o)&&r[o]!==n[o])return i+o;return a},t.compareIdentifiers=m;var p=/^[0-9]+$/;function m(e,t){var r=p.test(e),n=p.test(t);return r&&n&&(e=+e,t=+t),e===t?0:r&&!n?-1:n&&!r?1:e<t?-1:1}function g(e,t,r){return new d(e,r).compare(new d(t,r))}function y(e,t,r){return g(e,t,r)>0}function h(e,t,r){return g(e,t,r)<0}function v(e,t,r){return 0===g(e,t,r)}function b(e,t,r){return 0!==g(e,t,r)}function x(e,t,r){return g(e,t,r)>=0}function D(e,t,r){return g(e,t,r)<=0}function S(e,t,r,n){switch(t){case"===":return"object"===f(e)&&(e=e.version),"object"===f(r)&&(r=r.version),e===r;case"!==":return"object"===f(e)&&(e=e.version),"object"===f(r)&&(r=r.version),e!==r;case"":case"=":case"==":return v(e,r,n);case"!=":return b(e,r,n);case">":return y(e,r,n);case">=":return x(e,r,n);case"<":return h(e,r,n);case"<=":return D(e,r,n);default:throw new TypeError("Invalid operator: "+t)}}function T(e,t){if(t&&"object"===f(t)||(t={loose:!!t,includePrerelease:!1}),e instanceof T){if(e.loose===!!t.loose)return e;e=e.value}if(!(this instanceof T))return new T(e,t);r("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===E?this.value="":this.value=this.operator+this.semver.version,r("comp",this)}t.rcompareIdentifiers=function(e,t){return m(t,e)},t.major=function(e,t){return new d(e,t).major},t.minor=function(e,t){return new d(e,t).minor},t.patch=function(e,t){return new d(e,t).patch},t.compare=g,t.compareLoose=function(e,t){return g(e,t,!0)},t.compareBuild=function(e,t,r){var n=new d(e,r),i=new d(t,r);return n.compare(i)||n.compareBuild(i)},t.rcompare=function(e,t,r){return g(t,e,r)},t.sort=function(e,r){return e.sort((function(e,n){return t.compareBuild(e,n,r)}))},t.rsort=function(e,r){return e.sort((function(e,n){return t.compareBuild(n,e,r)}))},t.gt=y,t.lt=h,t.eq=v,t.neq=b,t.gte=x,t.lte=D,t.cmp=S,t.Comparator=T;var E={};function C(e,t){if(t&&"object"===f(t)||(t={loose:!!t,includePrerelease:!1}),e instanceof C)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new C(e.raw,t);if(e instanceof T)return new C(e.value,t);if(!(this instanceof C))return new C(e,t);if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e,this.set=e.split(/\s*\|\|\s*/).map((function(e){return this.parseRange(e.trim())}),this).filter((function(e){return e.length})),!this.set.length)throw new TypeError("Invalid SemVer Range: "+e);this.format()}function k(e,t){for(var r=!0,n=e.slice(),i=n.pop();r&&n.length;)r=n.every((function(e){return i.intersects(e,t)})),i=n.pop();return r}function N(e){return!e||"x"===e.toLowerCase()||"*"===e}function A(e,t,r,n,i,a,o,s,c,u,l,_,d){return((t=N(r)?"":N(n)?">="+r+".0.0":N(i)?">="+r+"."+n+".0":">="+t)+" "+(s=N(c)?"":N(u)?"<"+(+c+1)+".0.0":N(l)?"<"+c+"."+(+u+1)+".0":_?"<="+c+"."+u+"."+l+"-"+_:"<="+s)).trim()}function F(e,t,n){for(var i=0;i<e.length;i++)if(!e[i].test(t))return!1;if(t.prerelease.length&&!n.includePrerelease){for(i=0;i<e.length;i++)if(r(e[i].semver),e[i].semver!==E&&e[i].semver.prerelease.length>0){var a=e[i].semver;if(a.major===t.major&&a.minor===t.minor&&a.patch===t.patch)return!0}return!1}return!0}function P(e,t,r){try{t=new C(t,r)}catch(e){return!1}return t.test(e)}function w(e,t,r,n){var i,a,o,s,c;switch(e=new d(e,n),t=new C(t,n),r){case">":i=y,a=D,o=h,s=">",c=">=";break;case"<":i=h,a=x,o=y,s="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(P(e,t,n))return!1;for(var u=0;u<t.set.length;++u){var l=t.set[u],_=null,p=null;if(l.forEach((function(e){e.semver===E&&(e=new T(">=0.0.0")),_=_||e,p=p||e,i(e.semver,_.semver,n)?_=e:o(e.semver,p.semver,n)&&(p=e)})),_.operator===s||_.operator===c)return!1;if((!p.operator||p.operator===s)&&a(e,p.semver))return!1;if(p.operator===c&&o(e,p.semver))return!1}return!0}T.prototype.parse=function(e){var t=this.options.loose?a[s.COMPARATORLOOSE]:a[s.COMPARATOR],r=e.match(t);if(!r)throw new TypeError("Invalid comparator: "+e);this.operator=void 0!==r[1]?r[1]:"","="===this.operator&&(this.operator=""),r[2]?this.semver=new d(r[2],this.options.loose):this.semver=E},T.prototype.toString=function(){return this.value},T.prototype.test=function(e){if(r("Comparator.test",e,this.options.loose),this.semver===E||e===E)return!0;if("string"==typeof e)try{e=new d(e,this.options)}catch(e){return!1}return S(e,this.operator,this.semver,this.options)},T.prototype.intersects=function(e,t){if(!(e instanceof T))throw new TypeError("a Comparator is required");var r;if(t&&"object"===f(t)||(t={loose:!!t,includePrerelease:!1}),""===this.operator)return""===this.value||(r=new C(e.value,t),P(this.value,r,t));if(""===e.operator)return""===e.value||(r=new C(this.value,t),P(e.semver,r,t));var n=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),i=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),a=this.semver.version===e.semver.version,o=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),s=S(this.semver,"<",e.semver,t)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),c=S(this.semver,">",e.semver,t)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return n||i||a&&o||s||c},t.Range=C,C.prototype.format=function(){return this.range=this.set.map((function(e){return e.join(" ").trim()})).join("||").trim(),this.range},C.prototype.toString=function(){return this.range},C.prototype.parseRange=function(e){var t=this.options.loose;e=e.trim();var n=t?a[s.HYPHENRANGELOOSE]:a[s.HYPHENRANGE];e=e.replace(n,A),r("hyphen replace",e),e=e.replace(a[s.COMPARATORTRIM],"$1$2$3"),r("comparator trim",e,a[s.COMPARATORTRIM]),e=(e=(e=e.replace(a[s.TILDETRIM],"$1~")).replace(a[s.CARETTRIM],"$1^")).split(/\s+/).join(" ");var i=t?a[s.COMPARATORLOOSE]:a[s.COMPARATOR],o=e.split(" ").map((function(e){return function(e,t){return r("comp",e,t),e=function(e,t){return e.trim().split(/\s+/).map((function(e){return function(e,t){r("caret",e,t);var n=t.loose?a[s.CARETLOOSE]:a[s.CARET];return e.replace(n,(function(t,n,i,a,o){var s;return r("caret",e,t,n,i,a,o),N(n)?s="":N(i)?s=">="+n+".0.0 <"+(+n+1)+".0.0":N(a)?s="0"===n?">="+n+"."+i+".0 <"+n+"."+(+i+1)+".0":">="+n+"."+i+".0 <"+(+n+1)+".0.0":o?(r("replaceCaret pr",o),s="0"===n?"0"===i?">="+n+"."+i+"."+a+"-"+o+" <"+n+"."+i+"."+(+a+1):">="+n+"."+i+"."+a+"-"+o+" <"+n+"."+(+i+1)+".0":">="+n+"."+i+"."+a+"-"+o+" <"+(+n+1)+".0.0"):(r("no pr"),s="0"===n?"0"===i?">="+n+"."+i+"."+a+" <"+n+"."+i+"."+(+a+1):">="+n+"."+i+"."+a+" <"+n+"."+(+i+1)+".0":">="+n+"."+i+"."+a+" <"+(+n+1)+".0.0"),r("caret return",s),s}))}(e,t)})).join(" ")}(e,t),r("caret",e),e=function(e,t){return e.trim().split(/\s+/).map((function(e){return function(e,t){var n=t.loose?a[s.TILDELOOSE]:a[s.TILDE];return e.replace(n,(function(t,n,i,a,o){var s;return r("tilde",e,t,n,i,a,o),N(n)?s="":N(i)?s=">="+n+".0.0 <"+(+n+1)+".0.0":N(a)?s=">="+n+"."+i+".0 <"+n+"."+(+i+1)+".0":o?(r("replaceTilde pr",o),s=">="+n+"."+i+"."+a+"-"+o+" <"+n+"."+(+i+1)+".0"):s=">="+n+"."+i+"."+a+" <"+n+"."+(+i+1)+".0",r("tilde return",s),s}))}(e,t)})).join(" ")}(e,t),r("tildes",e),e=function(e,t){return r("replaceXRanges",e,t),e.split(/\s+/).map((function(e){return function(e,t){e=e.trim();var n=t.loose?a[s.XRANGELOOSE]:a[s.XRANGE];return e.replace(n,(function(n,i,a,o,s,c){r("xRange",e,n,i,a,o,s,c);var u=N(a),l=u||N(o),_=l||N(s),d=_;return"="===i&&d&&(i=""),c=t.includePrerelease?"-0":"",u?n=">"===i||"<"===i?"<0.0.0-0":"*":i&&d?(l&&(o=0),s=0,">"===i?(i=">=",l?(a=+a+1,o=0,s=0):(o=+o+1,s=0)):"<="===i&&(i="<",l?a=+a+1:o=+o+1),n=i+a+"."+o+"."+s+c):l?n=">="+a+".0.0"+c+" <"+(+a+1)+".0.0"+c:_&&(n=">="+a+"."+o+".0"+c+" <"+a+"."+(+o+1)+".0"+c),r("xRange return",n),n}))}(e,t)})).join(" ")}(e,t),r("xrange",e),e=function(e,t){return r("replaceStars",e,t),e.trim().replace(a[s.STAR],"")}(e,t),r("stars",e),e}(e,this.options)}),this).join(" ").split(/\s+/);return this.options.loose&&(o=o.filter((function(e){return!!e.match(i)}))),o=o.map((function(e){return new T(e,this.options)}),this)},C.prototype.intersects=function(e,t){if(!(e instanceof C))throw new TypeError("a Range is required");return this.set.some((function(r){return k(r,t)&&e.set.some((function(e){return k(e,t)&&r.every((function(r){return e.every((function(e){return r.intersects(e,t)}))}))}))}))},t.toComparators=function(e,t){return new C(e,t).set.map((function(e){return e.map((function(e){return e.value})).join(" ").trim().split(" ")}))},C.prototype.test=function(e){if(!e)return!1;if("string"==typeof e)try{e=new d(e,this.options)}catch(e){return!1}for(var t=0;t<this.set.length;t++)if(F(this.set[t],e,this.options))return!0;return!1},t.satisfies=P,t.maxSatisfying=function(e,t,r){var n=null,i=null;try{var a=new C(t,r)}catch(e){return null}return e.forEach((function(e){a.test(e)&&(n&&-1!==i.compare(e)||(i=new d(n=e,r)))})),n},t.minSatisfying=function(e,t,r){var n=null,i=null;try{var a=new C(t,r)}catch(e){return null}return e.forEach((function(e){a.test(e)&&(n&&1!==i.compare(e)||(i=new d(n=e,r)))})),n},t.minVersion=function(e,t){e=new C(e,t);var r=new d("0.0.0");if(e.test(r))return r;if(r=new d("0.0.0-0"),e.test(r))return r;r=null;for(var n=0;n<e.set.length;++n){e.set[n].forEach((function(e){var t=new d(e.semver.version);switch(e.operator){case">":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":r&&!y(r,t)||(r=t);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+e.operator)}}))}if(r&&e.test(r))return r;return null},t.validRange=function(e,t){try{return new C(e,t).range||"*"}catch(e){return null}},t.ltr=function(e,t,r){return w(e,t,"<",r)},t.gtr=function(e,t,r){return w(e,t,">",r)},t.outside=w,t.prerelease=function(e,t){var r=_(e,t);return r&&r.prerelease.length?r.prerelease:null},t.intersects=function(e,t,r){return e=new C(e,r),t=new C(t,r),e.intersects(t)},t.coerce=function(e,t){if(e instanceof d)return e;"number"==typeof e&&(e=String(e));if("string"!=typeof e)return null;var r=null;if((t=t||{}).rtl){for(var n;(n=a[s.COERCERTL].exec(e))&&(!r||r.index+r[0].length!==e.length);)r&&n.index+n[0].length===r.index+r[0].length||(r=n),a[s.COERCERTL].lastIndex=n.index+n[1].length+n[2].length;a[s.COERCERTL].lastIndex=-1}else r=e.match(a[s.COERCE]);if(null===r)return null;return _(r[2]+"."+(r[3]||"0")+"."+(r[4]||"0"),t)}})),Le=(Me.SEMVER_SPEC_VERSION,Me.re,Me.src,Me.tokens,Me.parse,Me.valid,Me.clean,Me.SemVer,Me.inc,Me.diff,Me.compareIdentifiers,Me.rcompareIdentifiers,Me.major,Me.minor,Me.patch,Me.compare,Me.compareLoose,Me.compareBuild,Me.rcompare,Me.sort,Me.rsort,Me.gt,Me.lt,Me.eq,Me.neq,Me.gte,Me.lte,Me.cmp,Me.Comparator,Me.Range,Me.toComparators,Me.satisfies,Me.maxSatisfying,Me.minSatisfying,Me.minVersion,Me.validRange,Me.ltr,Me.gtr,Me.outside,Me.prerelease,Me.intersects,Me.coerce,"/Users/lydell/forks/prettier/node_modules/typescript/lib"),Re=Object.freeze({__proto__:null,default:{}});var Be=Object.freeze({__proto__:null,extname:function(e){var t=e.lastIndexOf(".");return-1===t?"":e.slice(t)}}),je=Object.freeze({__proto__:null,default:{}}),Ke=Object.freeze({__proto__:null,default:{}}),Je="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),ze=function(e){if(0<=e&&e<Je.length)return Je[e];throw new TypeError("Must be between 0 and 63: "+e)},Ue=function(e){return 65<=e&&e<=90?e-65:97<=e&&e<=122?e-97+26:48<=e&&e<=57?e-48+52:43==e?62:47==e?63:-1};var Ve=function(e){var t,r="",n=function(e){return e<0?1+(-e<<1):0+(e<<1)}(e);do{t=31&n,(n>>>=5)>0&&(t|=32),r+=ze(t)}while(n>0);return r},qe=function(e,t,r){var n,i,a,o,s=e.length,c=0,u=0;do{if(t>=s)throw new Error("Expected more digits in base 64 VLQ value.");if(-1===(i=Ue(e.charCodeAt(t++))))throw new Error("Invalid base64 digit: "+e.charAt(t-1));n=!!(32&i),c+=(i&=31)<<u,u+=5}while(n);r.value=(o=(a=c)>>1,1==(1&a)?-o:o),r.rest=t},We=a((function(e,t){t.getArg=function(e,t,r){if(t in e)return e[t];if(3===arguments.length)return r;throw new Error('"'+t+'" is a required argument.')};var r=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.-]*)(?::(\d+))?(.*)$/,n=/^data:.+\,.+$/;function i(e){var t=e.match(r);return t?{scheme:t[1],auth:t[2],host:t[3],port:t[4],path:t[5]}:null}function a(e){var t="";return e.scheme&&(t+=e.scheme+":"),t+="//",e.auth&&(t+=e.auth+"@"),e.host&&(t+=e.host),e.port&&(t+=":"+e.port),e.path&&(t+=e.path),t}function o(e){var r=e,n=i(e);if(n){if(!n.path)return e;r=n.path}for(var o,s=t.isAbsolute(r),c=r.split(/\/+/),u=0,l=c.length-1;l>=0;l--)"."===(o=c[l])?c.splice(l,1):".."===o?u++:u>0&&(""===o?(c.splice(l+1,u),u=0):(c.splice(l,2),u--));return""===(r=c.join("/"))&&(r=s?"/":"."),n?(n.path=r,a(n)):r}function s(e,t){""===e&&(e="."),""===t&&(t=".");var r=i(t),s=i(e);if(s&&(e=s.path||"/"),r&&!r.scheme)return s&&(r.scheme=s.scheme),a(r);if(r||t.match(n))return t;if(s&&!s.host&&!s.path)return s.host=t,a(s);var c="/"===t.charAt(0)?t:o(e.replace(/\/+$/,"")+"/"+t);return s?(s.path=c,a(s)):c}t.urlParse=i,t.urlGenerate=a,t.normalize=o,t.join=s,t.isAbsolute=function(e){return"/"===e.charAt(0)||r.test(e)},t.relative=function(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==t.indexOf(e+"/");){var n=e.lastIndexOf("/");if(n<0)return t;if((e=e.slice(0,n)).match(/^([^\/]+:\/)?\/*$/))return t;++r}return Array(r+1).join("../")+t.substr(e.length+1)};var c=!("__proto__"in Object.create(null));function u(e){return e}function l(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var r=t-10;r>=0;r--)if(36!==e.charCodeAt(r))return!1;return!0}function _(e,t){return e===t?0:null===e?1:null===t?-1:e>t?1:-1}t.toSetString=c?u:function(e){return l(e)?"$"+e:e},t.fromSetString=c?u:function(e){return l(e)?e.slice(1):e},t.compareByOriginalPositions=function(e,t,r){var n=_(e.source,t.source);return 0!==n?n:0!==(n=e.originalLine-t.originalLine)?n:0!==(n=e.originalColumn-t.originalColumn)||r?n:0!==(n=e.generatedColumn-t.generatedColumn)?n:0!==(n=e.generatedLine-t.generatedLine)?n:_(e.name,t.name)},t.compareByGeneratedPositionsDeflated=function(e,t,r){var n=e.generatedLine-t.generatedLine;return 0!==n?n:0!==(n=e.generatedColumn-t.generatedColumn)||r?n:0!==(n=_(e.source,t.source))?n:0!==(n=e.originalLine-t.originalLine)?n:0!==(n=e.originalColumn-t.originalColumn)?n:_(e.name,t.name)},t.compareByGeneratedPositionsInflated=function(e,t){var r=e.generatedLine-t.generatedLine;return 0!==r?r:0!==(r=e.generatedColumn-t.generatedColumn)?r:0!==(r=_(e.source,t.source))?r:0!==(r=e.originalLine-t.originalLine)?r:0!==(r=e.originalColumn-t.originalColumn)?r:_(e.name,t.name)},t.parseSourceMapInput=function(e){return JSON.parse(e.replace(/^\)]}'[^\n]*\n/,""))},t.computeSourceURL=function(e,t,r){if(t=t||"",e&&("/"!==e[e.length-1]&&"/"!==t[0]&&(e+="/"),t=e+t),r){var n=i(r);if(!n)throw new Error("sourceMapURL could not be parsed");if(n.path){var c=n.path.lastIndexOf("/");c>=0&&(n.path=n.path.substring(0,c+1))}t=s(a(n),t)}return o(t)}})),Ge=(We.getArg,We.urlParse,We.urlGenerate,We.normalize,We.join,We.isAbsolute,We.relative,We.toSetString,We.fromSetString,We.compareByOriginalPositions,We.compareByGeneratedPositionsDeflated,We.compareByGeneratedPositionsInflated,We.parseSourceMapInput,We.computeSourceURL,Object.prototype.hasOwnProperty),He="undefined"!=typeof Map;function Ye(){this._array=[],this._set=He?new Map:Object.create(null)}Ye.fromArray=function(e,t){for(var r=new Ye,n=0,i=e.length;n<i;n++)r.add(e[n],t);return r},Ye.prototype.size=function(){return He?this._set.size:Object.getOwnPropertyNames(this._set).length},Ye.prototype.add=function(e,t){var r=He?e:We.toSetString(e),n=He?this.has(e):Ge.call(this._set,r),i=this._array.length;n&&!t||this._array.push(e),n||(He?this._set.set(e,i):this._set[r]=i)},Ye.prototype.has=function(e){if(He)return this._set.has(e);var t=We.toSetString(e);return Ge.call(this._set,t)},Ye.prototype.indexOf=function(e){if(He){var t=this._set.get(e);if(t>=0)return t}else{var r=We.toSetString(e);if(Ge.call(this._set,r))return this._set[r]}throw new Error('"'+e+'" is not in the set.')},Ye.prototype.at=function(e){if(e>=0&&e<this._array.length)return this._array[e];throw new Error("No element indexed by "+e)},Ye.prototype.toArray=function(){return this._array.slice()};var Xe={ArraySet:Ye};function Qe(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}Qe.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},Qe.prototype.add=function(e){var t,r,n,i,a,o;t=this._last,r=e,n=t.generatedLine,i=r.generatedLine,a=t.generatedColumn,o=r.generatedColumn,i>n||i==n&&o>=a||We.compareByGeneratedPositionsInflated(t,r)<=0?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},Qe.prototype.toArray=function(){return this._sorted||(this._array.sort(We.compareByGeneratedPositionsInflated),this._sorted=!0),this._array};var $e=Xe.ArraySet,Ze={MappingList:Qe}.MappingList;function et(e){e||(e={}),this._file=We.getArg(e,"file",null),this._sourceRoot=We.getArg(e,"sourceRoot",null),this._skipValidation=We.getArg(e,"skipValidation",!1),this._sources=new $e,this._names=new $e,this._mappings=new Ze,this._sourcesContents=null}et.prototype._version=3,et.fromSourceMap=function(e){var t=e.sourceRoot,r=new et({file:e.file,sourceRoot:t});return e.eachMapping((function(e){var n={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(n.source=e.source,null!=t&&(n.source=We.relative(t,n.source)),n.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(n.name=e.name)),r.addMapping(n)})),e.sources.forEach((function(n){var i=n;null!==t&&(i=We.relative(t,n)),r._sources.has(i)||r._sources.add(i);var a=e.sourceContentFor(n);null!=a&&r.setSourceContent(n,a)})),r},et.prototype.addMapping=function(e){var t=We.getArg(e,"generated"),r=We.getArg(e,"original",null),n=We.getArg(e,"source",null),i=We.getArg(e,"name",null);this._skipValidation||this._validateMapping(t,r,n,i),null!=n&&(n=String(n),this._sources.has(n)||this._sources.add(n)),null!=i&&(i=String(i),this._names.has(i)||this._names.add(i)),this._mappings.add({generatedLine:t.line,generatedColumn:t.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:n,name:i})},et.prototype.setSourceContent=function(e,t){var r=e;null!=this._sourceRoot&&(r=We.relative(this._sourceRoot,r)),null!=t?(this._sourcesContents||(this._sourcesContents=Object.create(null)),this._sourcesContents[We.toSetString(r)]=t):this._sourcesContents&&(delete this._sourcesContents[We.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},et.prototype.applySourceMap=function(e,t,r){var n=t;if(null==t){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');n=e.file}var i=this._sourceRoot;null!=i&&(n=We.relative(i,n));var a=new $e,o=new $e;this._mappings.unsortedForEach((function(t){if(t.source===n&&null!=t.originalLine){var s=e.originalPositionFor({line:t.originalLine,column:t.originalColumn});null!=s.source&&(t.source=s.source,null!=r&&(t.source=We.join(r,t.source)),null!=i&&(t.source=We.relative(i,t.source)),t.originalLine=s.line,t.originalColumn=s.column,null!=s.name&&(t.name=s.name))}var c=t.source;null==c||a.has(c)||a.add(c);var u=t.name;null==u||o.has(u)||o.add(u)}),this),this._sources=a,this._names=o,e.sources.forEach((function(t){var n=e.sourceContentFor(t);null!=n&&(null!=r&&(t=We.join(r,t)),null!=i&&(t=We.relative(i,t)),this.setSourceContent(t,n))}),this)},et.prototype._validateMapping=function(e,t,r,n){if(t&&"number"!=typeof t.line&&"number"!=typeof t.column)throw new Error("original.line and original.column are not numbers -- you probably meant to omit the original mapping entirely and only map the generated position. If so, pass null for the original mapping instead of an object with empty or null values.");if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||t||r||n)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:t,name:n}))},et.prototype._serializeMappings=function(){for(var e,t,r,n,i=0,a=1,o=0,s=0,c=0,u=0,l="",_=this._mappings.toArray(),d=0,p=_.length;d<p;d++){if(e="",(t=_[d]).generatedLine!==a)for(i=0;t.generatedLine!==a;)e+=";",a++;else if(d>0){if(!We.compareByGeneratedPositionsInflated(t,_[d-1]))continue;e+=","}e+=Ve(t.generatedColumn-i),i=t.generatedColumn,null!=t.source&&(n=this._sources.indexOf(t.source),e+=Ve(n-u),u=n,e+=Ve(t.originalLine-1-s),s=t.originalLine-1,e+=Ve(t.originalColumn-o),o=t.originalColumn,null!=t.name&&(r=this._names.indexOf(t.name),e+=Ve(r-c),c=r)),l+=e}return l},et.prototype._generateSourcesContent=function(e,t){return e.map((function(e){if(!this._sourcesContents)return null;null!=t&&(e=We.relative(t,e));var r=We.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null}),this)},et.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},et.prototype.toString=function(){return JSON.stringify(this.toJSON())};var tt={SourceMapGenerator:et},rt=a((function(e,t){t.GREATEST_LOWER_BOUND=1,t.LEAST_UPPER_BOUND=2,t.search=function(e,r,n,i){if(0===r.length)return-1;var a=function e(r,n,i,a,o,s){var c=Math.floor((n-r)/2)+r,u=o(i,a[c],!0);return 0===u?c:u>0?n-c>1?e(c,n,i,a,o,s):s==t.LEAST_UPPER_BOUND?n<a.length?n:-1:c:c-r>1?e(r,c,i,a,o,s):s==t.LEAST_UPPER_BOUND?c:r<0?-1:r}(-1,r.length,e,r,n,i||t.GREATEST_LOWER_BOUND);if(a<0)return-1;for(;a-1>=0&&0===n(r[a],r[a-1],!0);)--a;return a}}));rt.GREATEST_LOWER_BOUND,rt.LEAST_UPPER_BOUND,rt.search;function nt(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function it(e,t,r,n){if(r<n){var i=r-1;nt(e,(c=r,u=n,Math.round(c+Math.random()*(u-c))),n);for(var a=e[n],o=r;o<n;o++)t(e[o],a)<=0&&nt(e,i+=1,o);nt(e,i+1,o);var s=i+1;it(e,t,r,s-1),it(e,t,s+1,n)}var c,u}var at=Xe.ArraySet,ot=function(e,t){it(e,t,0,e.length-1)};function st(e,t){var r=e;return"string"==typeof e&&(r=We.parseSourceMapInput(e)),null!=r.sections?new lt(r,t):new ct(r,t)}st.fromSourceMap=function(e,t){return ct.fromSourceMap(e,t)},st.prototype._version=3,st.prototype.__generatedMappings=null,Object.defineProperty(st.prototype,"_generatedMappings",{configurable:!0,enumerable:!0,get:function(){return this.__generatedMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__generatedMappings}}),st.prototype.__originalMappings=null,Object.defineProperty(st.prototype,"_originalMappings",{configurable:!0,enumerable:!0,get:function(){return this.__originalMappings||this._parseMappings(this._mappings,this.sourceRoot),this.__originalMappings}}),st.prototype._charIsMappingSeparator=function(e,t){var r=e.charAt(t);return";"===r||","===r},st.prototype._parseMappings=function(e,t){throw new Error("Subclasses must implement _parseMappings")},st.GENERATED_ORDER=1,st.ORIGINAL_ORDER=2,st.GREATEST_LOWER_BOUND=1,st.LEAST_UPPER_BOUND=2,st.prototype.eachMapping=function(e,t,r){var n,i=t||null;switch(r||st.GENERATED_ORDER){case st.GENERATED_ORDER:n=this._generatedMappings;break;case st.ORIGINAL_ORDER:n=this._originalMappings;break;default:throw new Error("Unknown order of iteration.")}var a=this.sourceRoot;n.map((function(e){var t=null===e.source?null:this._sources.at(e.source);return{source:t=We.computeSourceURL(a,t,this._sourceMapURL),generatedLine:e.generatedLine,generatedColumn:e.generatedColumn,originalLine:e.originalLine,originalColumn:e.originalColumn,name:null===e.name?null:this._names.at(e.name)}}),this).forEach(e,i)},st.prototype.allGeneratedPositionsFor=function(e){var t=We.getArg(e,"line"),r={source:We.getArg(e,"source"),originalLine:t,originalColumn:We.getArg(e,"column",0)};if(r.source=this._findSourceIndex(r.source),r.source<0)return[];var n=[],i=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",We.compareByOriginalPositions,rt.LEAST_UPPER_BOUND);if(i>=0){var a=this._originalMappings[i];if(void 0===e.column)for(var o=a.originalLine;a&&a.originalLine===o;)n.push({line:We.getArg(a,"generatedLine",null),column:We.getArg(a,"generatedColumn",null),lastColumn:We.getArg(a,"lastGeneratedColumn",null)}),a=this._originalMappings[++i];else for(var s=a.originalColumn;a&&a.originalLine===t&&a.originalColumn==s;)n.push({line:We.getArg(a,"generatedLine",null),column:We.getArg(a,"generatedColumn",null),lastColumn:We.getArg(a,"lastGeneratedColumn",null)}),a=this._originalMappings[++i]}return n};function ct(e,t){var r=e;"string"==typeof e&&(r=We.parseSourceMapInput(e));var n=We.getArg(r,"version"),i=We.getArg(r,"sources"),a=We.getArg(r,"names",[]),o=We.getArg(r,"sourceRoot",null),s=We.getArg(r,"sourcesContent",null),c=We.getArg(r,"mappings"),u=We.getArg(r,"file",null);if(n!=this._version)throw new Error("Unsupported version: "+n);o&&(o=We.normalize(o)),i=i.map(String).map(We.normalize).map((function(e){return o&&We.isAbsolute(o)&&We.isAbsolute(e)?We.relative(o,e):e})),this._names=at.fromArray(a.map(String),!0),this._sources=at.fromArray(i,!0),this._absoluteSources=this._sources.toArray().map((function(e){return We.computeSourceURL(o,e,t)})),this.sourceRoot=o,this.sourcesContent=s,this._mappings=c,this._sourceMapURL=t,this.file=u}function ut(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}ct.prototype=Object.create(st.prototype),ct.prototype.consumer=st,ct.prototype._findSourceIndex=function(e){var t,r=e;if(null!=this.sourceRoot&&(r=We.relative(this.sourceRoot,r)),this._sources.has(r))return this._sources.indexOf(r);for(t=0;t<this._absoluteSources.length;++t)if(this._absoluteSources[t]==e)return t;return-1},ct.fromSourceMap=function(e,t){var r=Object.create(ct.prototype),n=r._names=at.fromArray(e._names.toArray(),!0),i=r._sources=at.fromArray(e._sources.toArray(),!0);r.sourceRoot=e._sourceRoot,r.sourcesContent=e._generateSourcesContent(r._sources.toArray(),r.sourceRoot),r.file=e._file,r._sourceMapURL=t,r._absoluteSources=r._sources.toArray().map((function(e){return We.computeSourceURL(r.sourceRoot,e,t)}));for(var a=e._mappings.toArray().slice(),o=r.__generatedMappings=[],s=r.__originalMappings=[],c=0,u=a.length;c<u;c++){var l=a[c],_=new ut;_.generatedLine=l.generatedLine,_.generatedColumn=l.generatedColumn,l.source&&(_.source=i.indexOf(l.source),_.originalLine=l.originalLine,_.originalColumn=l.originalColumn,l.name&&(_.name=n.indexOf(l.name)),s.push(_)),o.push(_)}return ot(r.__originalMappings,We.compareByOriginalPositions),r},ct.prototype._version=3,Object.defineProperty(ct.prototype,"sources",{get:function(){return this._absoluteSources.slice()}}),ct.prototype._parseMappings=function(e,t){for(var r,n,i,a,o,s=1,c=0,u=0,l=0,_=0,d=0,p=e.length,f=0,m={},g={},y=[],h=[];f<p;)if(";"===e.charAt(f))s++,f++,c=0;else if(","===e.charAt(f))f++;else{for((r=new ut).generatedLine=s,a=f;a<p&&!this._charIsMappingSeparator(e,a);a++);if(i=m[n=e.slice(f,a)])f+=n.length;else{for(i=[];f<a;)qe(e,f,g),o=g.value,f=g.rest,i.push(o);if(2===i.length)throw new Error("Found a source, but no line and column");if(3===i.length)throw new Error("Found a source and line, but no column");m[n]=i}r.generatedColumn=c+i[0],c=r.generatedColumn,i.length>1&&(r.source=_+i[1],_+=i[1],r.originalLine=u+i[2],u=r.originalLine,r.originalLine+=1,r.originalColumn=l+i[3],l=r.originalColumn,i.length>4&&(r.name=d+i[4],d+=i[4])),h.push(r),"number"==typeof r.originalLine&&y.push(r)}ot(h,We.compareByGeneratedPositionsDeflated),this.__generatedMappings=h,ot(y,We.compareByOriginalPositions),this.__originalMappings=y},ct.prototype._findMapping=function(e,t,r,n,i,a){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[n]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[n]);return rt.search(e,t,i,a)},ct.prototype.computeColumnSpans=function(){for(var e=0;e<this._generatedMappings.length;++e){var t=this._generatedMappings[e];if(e+1<this._generatedMappings.length){var r=this._generatedMappings[e+1];if(t.generatedLine===r.generatedLine){t.lastGeneratedColumn=r.generatedColumn-1;continue}}t.lastGeneratedColumn=1/0}},ct.prototype.originalPositionFor=function(e){var t={generatedLine:We.getArg(e,"line"),generatedColumn:We.getArg(e,"column")},r=this._findMapping(t,this._generatedMappings,"generatedLine","generatedColumn",We.compareByGeneratedPositionsDeflated,We.getArg(e,"bias",st.GREATEST_LOWER_BOUND));if(r>=0){var n=this._generatedMappings[r];if(n.generatedLine===t.generatedLine){var i=We.getArg(n,"source",null);null!==i&&(i=this._sources.at(i),i=We.computeSourceURL(this.sourceRoot,i,this._sourceMapURL));var a=We.getArg(n,"name",null);return null!==a&&(a=this._names.at(a)),{source:i,line:We.getArg(n,"originalLine",null),column:We.getArg(n,"originalColumn",null),name:a}}}return{source:null,line:null,column:null,name:null}},ct.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some((function(e){return null==e})))},ct.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;var r=this._findSourceIndex(e);if(r>=0)return this.sourcesContent[r];var n,i=e;if(null!=this.sourceRoot&&(i=We.relative(this.sourceRoot,i)),null!=this.sourceRoot&&(n=We.urlParse(this.sourceRoot))){var a=i.replace(/^file:\/\//,"");if("file"==n.scheme&&this._sources.has(a))return this.sourcesContent[this._sources.indexOf(a)];if((!n.path||"/"==n.path)&&this._sources.has("/"+i))return this.sourcesContent[this._sources.indexOf("/"+i)]}if(t)return null;throw new Error('"'+i+'" is not in the SourceMap.')},ct.prototype.generatedPositionFor=function(e){var t=We.getArg(e,"source");if((t=this._findSourceIndex(t))<0)return{line:null,column:null,lastColumn:null};var r={source:t,originalLine:We.getArg(e,"line"),originalColumn:We.getArg(e,"column")},n=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",We.compareByOriginalPositions,We.getArg(e,"bias",st.GREATEST_LOWER_BOUND));if(n>=0){var i=this._originalMappings[n];if(i.source===r.source)return{line:We.getArg(i,"generatedLine",null),column:We.getArg(i,"generatedColumn",null),lastColumn:We.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}};function lt(e,t){var r=e;"string"==typeof e&&(r=We.parseSourceMapInput(e));var n=We.getArg(r,"version"),i=We.getArg(r,"sections");if(n!=this._version)throw new Error("Unsupported version: "+n);this._sources=new at,this._names=new at;var a={line:-1,column:0};this._sections=i.map((function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var r=We.getArg(e,"offset"),n=We.getArg(r,"line"),i=We.getArg(r,"column");if(n<a.line||n===a.line&&i<a.column)throw new Error("Section offsets must be ordered and non-overlapping.");return a=r,{generatedOffset:{generatedLine:n+1,generatedColumn:i+1},consumer:new st(We.getArg(e,"map"),t)}}))}lt.prototype=Object.create(st.prototype),lt.prototype.constructor=st,lt.prototype._version=3,Object.defineProperty(lt.prototype,"sources",{get:function(){for(var e=[],t=0;t<this._sections.length;t++)for(var r=0;r<this._sections[t].consumer.sources.length;r++)e.push(this._sections[t].consumer.sources[r]);return e}}),lt.prototype.originalPositionFor=function(e){var t={generatedLine:We.getArg(e,"line"),generatedColumn:We.getArg(e,"column")},r=rt.search(t,this._sections,(function(e,t){var r=e.generatedLine-t.generatedOffset.generatedLine;return r||e.generatedColumn-t.generatedOffset.generatedColumn})),n=this._sections[r];return n?n.consumer.originalPositionFor({line:t.generatedLine-(n.generatedOffset.generatedLine-1),column:t.generatedColumn-(n.generatedOffset.generatedLine===t.generatedLine?n.generatedOffset.generatedColumn-1:0),bias:e.bias}):{source:null,line:null,column:null,name:null}},lt.prototype.hasContentsOfAllSources=function(){return this._sections.every((function(e){return e.consumer.hasContentsOfAllSources()}))},lt.prototype.sourceContentFor=function(e,t){for(var r=0;r<this._sections.length;r++){var n=this._sections[r].consumer.sourceContentFor(e,!0);if(n)return n}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},lt.prototype.generatedPositionFor=function(e){for(var t=0;t<this._sections.length;t++){var r=this._sections[t];if(-1!==r.consumer._findSourceIndex(We.getArg(e,"source"))){var n=r.consumer.generatedPositionFor(e);if(n)return{line:n.line+(r.generatedOffset.generatedLine-1),column:n.column+(r.generatedOffset.generatedLine===n.line?r.generatedOffset.generatedColumn-1:0)}}}return{line:null,column:null}},lt.prototype._parseMappings=function(e,t){this.__generatedMappings=[],this.__originalMappings=[];for(var r=0;r<this._sections.length;r++)for(var n=this._sections[r],i=n.consumer._generatedMappings,a=0;a<i.length;a++){var o=i[a],s=n.consumer._sources.at(o.source);s=We.computeSourceURL(n.consumer.sourceRoot,s,this._sourceMapURL),this._sources.add(s),s=this._sources.indexOf(s);var c=null;o.name&&(c=n.consumer._names.at(o.name),this._names.add(c),c=this._names.indexOf(c));var u={source:s,generatedLine:o.generatedLine+(n.generatedOffset.generatedLine-1),generatedColumn:o.generatedColumn+(n.generatedOffset.generatedLine===o.generatedLine?n.generatedOffset.generatedColumn-1:0),originalLine:o.originalLine,originalColumn:o.originalColumn,name:c};this.__generatedMappings.push(u),"number"==typeof u.originalLine&&this.__originalMappings.push(u)}ot(this.__generatedMappings,We.compareByGeneratedPositionsDeflated),ot(this.__originalMappings,We.compareByOriginalPositions)};var _t=tt.SourceMapGenerator,dt=/(\r?\n)/,pt="$$$isSourceNode$$$";function ft(e,t,r,n,i){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==r?null:r,this.name=null==i?null:i,this[pt]=!0,null!=n&&this.add(n)}ft.fromStringWithSourceMap=function(e,t,r){var n=new ft,i=e.split(dt),a=0,o=function(){return e()+(e()||"");function e(){return a<i.length?i[a++]:void 0}},s=1,c=0,u=null;return t.eachMapping((function(e){if(null!==u){if(!(s<e.generatedLine)){var t=(r=i[a]||"").substr(0,e.generatedColumn-c);return i[a]=r.substr(e.generatedColumn-c),c=e.generatedColumn,l(u,t),void(u=e)}l(u,o()),s++,c=0}for(;s<e.generatedLine;)n.add(o()),s++;if(c<e.generatedColumn){var r=i[a]||"";n.add(r.substr(0,e.generatedColumn)),i[a]=r.substr(e.generatedColumn),c=e.generatedColumn}u=e}),this),a<i.length&&(u&&l(u,o()),n.add(i.splice(a).join(""))),t.sources.forEach((function(e){var i=t.sourceContentFor(e);null!=i&&(null!=r&&(e=We.join(r,e)),n.setSourceContent(e,i))})),n;function l(e,t){if(null===e||void 0===e.source)n.add(t);else{var i=r?We.join(r,e.source):e.source;n.add(new ft(e.originalLine,e.originalColumn,i,t,e.name))}}},ft.prototype.add=function(e){if(Array.isArray(e))e.forEach((function(e){this.add(e)}),this);else{if(!e[pt]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},ft.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else{if(!e[pt]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},ft.prototype.walk=function(e){for(var t,r=0,n=this.children.length;r<n;r++)(t=this.children[r])[pt]?t.walk(e):""!==t&&e(t,{source:this.source,line:this.line,column:this.column,name:this.name})},ft.prototype.join=function(e){var t,r,n=this.children.length;if(n>0){for(t=[],r=0;r<n-1;r++)t.push(this.children[r]),t.push(e);t.push(this.children[r]),this.children=t}return this},ft.prototype.replaceRight=function(e,t){var r=this.children[this.children.length-1];return r[pt]?r.replaceRight(e,t):"string"==typeof r?this.children[this.children.length-1]=r.replace(e,t):this.children.push("".replace(e,t)),this},ft.prototype.setSourceContent=function(e,t){this.sourceContents[We.toSetString(e)]=t},ft.prototype.walkSourceContents=function(e){for(var t=0,r=this.children.length;t<r;t++)this.children[t][pt]&&this.children[t].walkSourceContents(e);var n=Object.keys(this.sourceContents);for(t=0,r=n.length;t<r;t++)e(We.fromSetString(n[t]),this.sourceContents[n[t]])},ft.prototype.toString=function(){var e="";return this.walk((function(t){e+=t})),e},ft.prototype.toStringWithSourceMap=function(e){var t={code:"",line:1,column:0},r=new _t(e),n=!1,i=null,a=null,o=null,s=null;return this.walk((function(e,c){t.code+=e,null!==c.source&&null!==c.line&&null!==c.column?(i===c.source&&a===c.line&&o===c.column&&s===c.name||r.addMapping({source:c.source,original:{line:c.line,column:c.column},generated:{line:t.line,column:t.column},name:c.name}),i=c.source,a=c.line,o=c.column,s=c.name,n=!0):n&&(r.addMapping({generated:{line:t.line,column:t.column}}),i=null,n=!1);for(var u=0,l=e.length;u<l;u++)10===e.charCodeAt(u)?(t.line++,t.column=0,u+1===l?(i=null,n=!1):n&&r.addMapping({source:c.source,original:{line:c.line,column:c.column},generated:{line:t.line,column:t.column},name:c.name})):t.column++})),this.walkSourceContents((function(e,t){r.setSourceContent(e,t)})),{code:t.code,map:r}};var mt=[],gt=[],yt="undefined"!=typeof Uint8Array?Uint8Array:Array,ht=!1;function vt(){ht=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,r=e.length;t<r;++t)mt[t]=e[t],gt[e.charCodeAt(t)]=t;gt["-".charCodeAt(0)]=62,gt["_".charCodeAt(0)]=63}function bt(e,t,r){for(var n,i,a=[],o=t;o<r;o+=3)n=(e[o]<<16)+(e[o+1]<<8)+e[o+2],a.push(mt[(i=n)>>18&63]+mt[i>>12&63]+mt[i>>6&63]+mt[63&i]);return a.join("")}function xt(e){var t;ht||vt();for(var r=e.length,n=r%3,i="",a=[],o=0,s=r-n;o<s;o+=16383)a.push(bt(e,o,o+16383>s?s:o+16383));return 1===n?(t=e[r-1],i+=mt[t>>2],i+=mt[t<<4&63],i+="=="):2===n&&(t=(e[r-2]<<8)+e[r-1],i+=mt[t>>10],i+=mt[t>>4&63],i+=mt[t<<2&63],i+="="),a.push(i),a.join("")}function Dt(e,t,r,n,i){var a,o,s=8*i-n-1,c=(1<<s)-1,u=c>>1,l=-7,_=r?i-1:0,d=r?-1:1,p=e[t+_];for(_+=d,a=p&(1<<-l)-1,p>>=-l,l+=s;l>0;a=256*a+e[t+_],_+=d,l-=8);for(o=a&(1<<-l)-1,a>>=-l,l+=n;l>0;o=256*o+e[t+_],_+=d,l-=8);if(0===a)a=1-u;else{if(a===c)return o?NaN:1/0*(p?-1:1);o+=Math.pow(2,n),a-=u}return(p?-1:1)*o*Math.pow(2,a-n)}function St(e,t,r,n,i,a){var o,s,c,u=8*a-i-1,l=(1<<u)-1,_=l>>1,d=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,p=n?0:a-1,f=n?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(c=Math.pow(2,-o))<1&&(o--,c*=2),(t+=o+_>=1?d/c:d*Math.pow(2,1-_))*c>=2&&(o++,c/=2),o+_>=l?(s=0,o=l):o+_>=1?(s=(t*c-1)*Math.pow(2,i),o+=_):(s=t*Math.pow(2,_-1)*Math.pow(2,i),o=0));i>=8;e[r+p]=255&s,p+=f,s/=256,i-=8);for(o=o<<i|s,u+=i;u>0;e[r+p]=255&o,p+=f,o/=256,u-=8);e[r+p-f]|=128*m}var Tt={}.toString,Et=Array.isArray||function(e){return"[object Array]"==Tt.call(e)};function Ct(){return Nt.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function kt(e,t){if(Ct()<t)throw new RangeError("Invalid typed array length");return Nt.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=Nt.prototype:(null===e&&(e=new Nt(t)),e.length=t),e}function Nt(e,t,r){if(!(Nt.TYPED_ARRAY_SUPPORT||this instanceof Nt))return new Nt(e,t,r);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return Pt(this,e)}return At(this,e,t,r)}function At(e,t,r,n){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,r,n){if(t.byteLength,r<0||t.byteLength<r)throw new RangeError("'offset' is out of bounds");if(t.byteLength<r+(n||0))throw new RangeError("'length' is out of bounds");t=void 0===r&&void 0===n?new Uint8Array(t):void 0===n?new Uint8Array(t,r):new Uint8Array(t,r,n);Nt.TYPED_ARRAY_SUPPORT?(e=t).__proto__=Nt.prototype:e=wt(e,t);return e}(e,t,r,n):"string"==typeof t?function(e,t,r){"string"==typeof r&&""!==r||(r="utf8");if(!Nt.isEncoding(r))throw new TypeError('"encoding" must be a valid string encoding');var n=0|Mt(t,r),i=(e=kt(e,n)).write(t,r);i!==n&&(e=e.slice(0,i));return e}(e,t,r):function(e,t){if(Ot(t)){var r=0|It(t.length);return 0===(e=kt(e,r)).length?e:(t.copy(e,0,0,r),e)}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(n=t.length)!=n?kt(e,0):wt(e,t);if("Buffer"===t.type&&Et(t.data))return wt(e,t.data)}var n;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function Ft(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function Pt(e,t){if(Ft(t),e=kt(e,t<0?0:0|It(t)),!Nt.TYPED_ARRAY_SUPPORT)for(var r=0;r<t;++r)e[r]=0;return e}function wt(e,t){var r=t.length<0?0:0|It(t.length);e=kt(e,r);for(var n=0;n<r;n+=1)e[n]=255&t[n];return e}function It(e){if(e>=Ct())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Ct().toString(16)+" bytes");return 0|e}function Ot(e){return!(null==e||!e._isBuffer)}function Mt(e,t){if(Ot(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var n=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return cr(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return ur(e).length;default:if(n)return cr(e).length;t=(""+t).toLowerCase(),n=!0}}function Lt(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return Qt(this,t,r);case"utf8":case"utf-8":return Gt(this,t,r);case"ascii":return Yt(this,t,r);case"latin1":case"binary":return Xt(this,t,r);case"base64":return Wt(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return $t(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function Rt(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function Bt(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=Nt.from(t,n)),Ot(t))return 0===t.length?-1:jt(e,t,r,n,i);if("number"==typeof t)return t&=255,Nt.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):jt(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function jt(e,t,r,n,i){var a,o=1,s=e.length,c=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;o=2,s/=2,c/=2,r/=2}function u(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var l=-1;for(a=r;a<s;a++)if(u(e,a)===u(t,-1===l?0:a-l)){if(-1===l&&(l=a),a-l+1===c)return l*o}else-1!==l&&(a-=a-l),l=-1}else for(r+c>s&&(r=s-c),a=r;a>=0;a--){for(var _=!0,d=0;d<c;d++)if(u(e,a+d)!==u(t,d)){_=!1;break}if(_)return a}return-1}function Kt(e,t,r,n){r=Number(r)||0;var i=e.length-r;n?(n=Number(n))>i&&(n=i):n=i;var a=t.length;if(a%2!=0)throw new TypeError("Invalid hex string");n>a/2&&(n=a/2);for(var o=0;o<n;++o){var s=parseInt(t.substr(2*o,2),16);if(isNaN(s))return o;e[r+o]=s}return o}function Jt(e,t,r,n){return lr(cr(t,e.length-r),e,r,n)}function zt(e,t,r,n){return lr(function(e){for(var t=[],r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,n)}function Ut(e,t,r,n){return zt(e,t,r,n)}function Vt(e,t,r,n){return lr(ur(t),e,r,n)}function qt(e,t,r,n){return lr(function(e,t){for(var r,n,i,a=[],o=0;o<e.length&&!((t-=2)<0);++o)r=e.charCodeAt(o),n=r>>8,i=r%256,a.push(i),a.push(n);return a}(t,e.length-r),e,r,n)}function Wt(e,t,r){return 0===t&&r===e.length?xt(e):xt(e.slice(t,r))}function Gt(e,t,r){r=Math.min(e.length,r);for(var n=[],i=t;i<r;){var a,o,s,c,u=e[i],l=null,_=u>239?4:u>223?3:u>191?2:1;if(i+_<=r)switch(_){case 1:u<128&&(l=u);break;case 2:128==(192&(a=e[i+1]))&&(c=(31&u)<<6|63&a)>127&&(l=c);break;case 3:a=e[i+1],o=e[i+2],128==(192&a)&&128==(192&o)&&(c=(15&u)<<12|(63&a)<<6|63&o)>2047&&(c<55296||c>57343)&&(l=c);break;case 4:a=e[i+1],o=e[i+2],s=e[i+3],128==(192&a)&&128==(192&o)&&128==(192&s)&&(c=(15&u)<<18|(63&a)<<12|(63&o)<<6|63&s)>65535&&c<1114112&&(l=c)}null===l?(l=65533,_=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),i+=_}return function(e){var t=e.length;if(t<=Ht)return String.fromCharCode.apply(String,e);var r="",n=0;for(;n<t;)r+=String.fromCharCode.apply(String,e.slice(n,n+=Ht));return r}(n)}Nt.TYPED_ARRAY_SUPPORT=void 0===ue.TYPED_ARRAY_SUPPORT||ue.TYPED_ARRAY_SUPPORT,Nt.poolSize=8192,Nt._augment=function(e){return e.__proto__=Nt.prototype,e},Nt.from=function(e,t,r){return At(null,e,t,r)},Nt.TYPED_ARRAY_SUPPORT&&(Nt.prototype.__proto__=Uint8Array.prototype,Nt.__proto__=Uint8Array),Nt.alloc=function(e,t,r){return function(e,t,r,n){return Ft(t),t<=0?kt(e,t):void 0!==r?"string"==typeof n?kt(e,t).fill(r,n):kt(e,t).fill(r):kt(e,t)}(null,e,t,r)},Nt.allocUnsafe=function(e){return Pt(null,e)},Nt.allocUnsafeSlow=function(e){return Pt(null,e)},Nt.isBuffer=function(e){return null!=e&&(!!e._isBuffer||_r(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&_r(e.slice(0,0))}(e))},Nt.compare=function(e,t){if(!Ot(e)||!Ot(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var r=e.length,n=t.length,i=0,a=Math.min(r,n);i<a;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return r<n?-1:n<r?1:0},Nt.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},Nt.concat=function(e,t){if(!Et(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return Nt.alloc(0);var r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;var n=Nt.allocUnsafe(t),i=0;for(r=0;r<e.length;++r){var a=e[r];if(!Ot(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(n,i),i+=a.length}return n},Nt.byteLength=Mt,Nt.prototype._isBuffer=!0,Nt.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)Rt(this,t,t+1);return this},Nt.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)Rt(this,t,t+3),Rt(this,t+1,t+2);return this},Nt.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)Rt(this,t,t+7),Rt(this,t+1,t+6),Rt(this,t+2,t+5),Rt(this,t+3,t+4);return this},Nt.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?Gt(this,0,e):Lt.apply(this,arguments)},Nt.prototype.equals=function(e){if(!Ot(e))throw new TypeError("Argument must be a Buffer");return this===e||0===Nt.compare(this,e)},Nt.prototype.inspect=function(){var e="";return this.length>0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),"<Buffer "+e+">"},Nt.prototype.compare=function(e,t,r,n,i){if(!Ot(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;for(var a=(i>>>=0)-(n>>>=0),o=(r>>>=0)-(t>>>=0),s=Math.min(a,o),c=this.slice(n,i),u=e.slice(t,r),l=0;l<s;++l)if(c[l]!==u[l]){a=c[l],o=u[l];break}return a<o?-1:o<a?1:0},Nt.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},Nt.prototype.indexOf=function(e,t,r){return Bt(this,e,t,r,!0)},Nt.prototype.lastIndexOf=function(e,t,r){return Bt(this,e,t,r,!1)},Nt.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(r)?(r|=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}var i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var a=!1;;)switch(n){case"hex":return Kt(this,e,t,r);case"utf8":case"utf-8":return Jt(this,e,t,r);case"ascii":return zt(this,e,t,r);case"latin1":case"binary":return Ut(this,e,t,r);case"base64":return Vt(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return qt(this,e,t,r);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}},Nt.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Ht=4096;function Yt(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(127&e[i]);return n}function Xt(e,t,r){var n="";r=Math.min(e.length,r);for(var i=t;i<r;++i)n+=String.fromCharCode(e[i]);return n}function Qt(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var i="",a=t;a<r;++a)i+=sr(e[a]);return i}function $t(e,t,r){for(var n=e.slice(t,r),i="",a=0;a<n.length;a+=2)i+=String.fromCharCode(n[a]+256*n[a+1]);return i}function Zt(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function er(e,t,r,n,i,a){if(!Ot(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<a)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function tr(e,t,r,n){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-r,2);i<a;++i)e[r+i]=(t&255<<8*(n?i:1-i))>>>8*(n?i:1-i)}function rr(e,t,r,n){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-r,4);i<a;++i)e[r+i]=t>>>8*(n?i:3-i)&255}function nr(e,t,r,n,i,a){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function ir(e,t,r,n,i){return i||nr(e,0,r,4),St(e,t,r,n,23,4),r+4}function ar(e,t,r,n,i){return i||nr(e,0,r,8),St(e,t,r,n,52,8),r+8}Nt.prototype.slice=function(e,t){var r,n=this.length;if((e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t<e&&(t=e),Nt.TYPED_ARRAY_SUPPORT)(r=this.subarray(e,t)).__proto__=Nt.prototype;else{var i=t-e;r=new Nt(i,void 0);for(var a=0;a<i;++a)r[a]=this[a+e]}return r},Nt.prototype.readUIntLE=function(e,t,r){e|=0,t|=0,r||Zt(e,t,this.length);for(var n=this[e],i=1,a=0;++a<t&&(i*=256);)n+=this[e+a]*i;return n},Nt.prototype.readUIntBE=function(e,t,r){e|=0,t|=0,r||Zt(e,t,this.length);for(var n=this[e+--t],i=1;t>0&&(i*=256);)n+=this[e+--t]*i;return n},Nt.prototype.readUInt8=function(e,t){return t||Zt(e,1,this.length),this[e]},Nt.prototype.readUInt16LE=function(e,t){return t||Zt(e,2,this.length),this[e]|this[e+1]<<8},Nt.prototype.readUInt16BE=function(e,t){return t||Zt(e,2,this.length),this[e]<<8|this[e+1]},Nt.prototype.readUInt32LE=function(e,t){return t||Zt(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},Nt.prototype.readUInt32BE=function(e,t){return t||Zt(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},Nt.prototype.readIntLE=function(e,t,r){e|=0,t|=0,r||Zt(e,t,this.length);for(var n=this[e],i=1,a=0;++a<t&&(i*=256);)n+=this[e+a]*i;return n>=(i*=128)&&(n-=Math.pow(2,8*t)),n},Nt.prototype.readIntBE=function(e,t,r){e|=0,t|=0,r||Zt(e,t,this.length);for(var n=t,i=1,a=this[e+--n];n>0&&(i*=256);)a+=this[e+--n]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*t)),a},Nt.prototype.readInt8=function(e,t){return t||Zt(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},Nt.prototype.readInt16LE=function(e,t){t||Zt(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},Nt.prototype.readInt16BE=function(e,t){t||Zt(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},Nt.prototype.readInt32LE=function(e,t){return t||Zt(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},Nt.prototype.readInt32BE=function(e,t){return t||Zt(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},Nt.prototype.readFloatLE=function(e,t){return t||Zt(e,4,this.length),Dt(this,e,!0,23,4)},Nt.prototype.readFloatBE=function(e,t){return t||Zt(e,4,this.length),Dt(this,e,!1,23,4)},Nt.prototype.readDoubleLE=function(e,t){return t||Zt(e,8,this.length),Dt(this,e,!0,52,8)},Nt.prototype.readDoubleBE=function(e,t){return t||Zt(e,8,this.length),Dt(this,e,!1,52,8)},Nt.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||er(this,e,t,r,Math.pow(2,8*r)-1,0);var i=1,a=0;for(this[t]=255&e;++a<r&&(i*=256);)this[t+a]=e/i&255;return t+r},Nt.prototype.writeUIntBE=function(e,t,r,n){(e=+e,t|=0,r|=0,n)||er(this,e,t,r,Math.pow(2,8*r)-1,0);var i=r-1,a=1;for(this[t+i]=255&e;--i>=0&&(a*=256);)this[t+i]=e/a&255;return t+r},Nt.prototype.writeUInt8=function(e,t,r){return e=+e,t|=0,r||er(this,e,t,1,255,0),Nt.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},Nt.prototype.writeUInt16LE=function(e,t,r){return e=+e,t|=0,r||er(this,e,t,2,65535,0),Nt.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):tr(this,e,t,!0),t+2},Nt.prototype.writeUInt16BE=function(e,t,r){return e=+e,t|=0,r||er(this,e,t,2,65535,0),Nt.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):tr(this,e,t,!1),t+2},Nt.prototype.writeUInt32LE=function(e,t,r){return e=+e,t|=0,r||er(this,e,t,4,4294967295,0),Nt.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):rr(this,e,t,!0),t+4},Nt.prototype.writeUInt32BE=function(e,t,r){return e=+e,t|=0,r||er(this,e,t,4,4294967295,0),Nt.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):rr(this,e,t,!1),t+4},Nt.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);er(this,e,t,r,i-1,-i)}var a=0,o=1,s=0;for(this[t]=255&e;++a<r&&(o*=256);)e<0&&0===s&&0!==this[t+a-1]&&(s=1),this[t+a]=(e/o>>0)-s&255;return t+r},Nt.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t|=0,!n){var i=Math.pow(2,8*r-1);er(this,e,t,r,i-1,-i)}var a=r-1,o=1,s=0;for(this[t+a]=255&e;--a>=0&&(o*=256);)e<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(e/o>>0)-s&255;return t+r},Nt.prototype.writeInt8=function(e,t,r){return e=+e,t|=0,r||er(this,e,t,1,127,-128),Nt.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},Nt.prototype.writeInt16LE=function(e,t,r){return e=+e,t|=0,r||er(this,e,t,2,32767,-32768),Nt.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):tr(this,e,t,!0),t+2},Nt.prototype.writeInt16BE=function(e,t,r){return e=+e,t|=0,r||er(this,e,t,2,32767,-32768),Nt.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):tr(this,e,t,!1),t+2},Nt.prototype.writeInt32LE=function(e,t,r){return e=+e,t|=0,r||er(this,e,t,4,2147483647,-2147483648),Nt.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):rr(this,e,t,!0),t+4},Nt.prototype.writeInt32BE=function(e,t,r){return e=+e,t|=0,r||er(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),Nt.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):rr(this,e,t,!1),t+4},Nt.prototype.writeFloatLE=function(e,t,r){return ir(this,e,t,!0,r)},Nt.prototype.writeFloatBE=function(e,t,r){return ir(this,e,t,!1,r)},Nt.prototype.writeDoubleLE=function(e,t,r){return ar(this,e,t,!0,r)},Nt.prototype.writeDoubleBE=function(e,t,r){return ar(this,e,t,!1,r)},Nt.prototype.copy=function(e,t,r,n){if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);var i,a=n-r;if(this===e&&r<t&&t<n)for(i=a-1;i>=0;--i)e[i+t]=this[i+r];else if(a<1e3||!Nt.TYPED_ARRAY_SUPPORT)for(i=0;i<a;++i)e[i+t]=this[i+r];else Uint8Array.prototype.set.call(e,this.subarray(r,r+a),t);return a},Nt.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),1===e.length){var i=e.charCodeAt(0);i<256&&(e=i)}if(void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!Nt.isEncoding(n))throw new TypeError("Unknown encoding: "+n)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;var a;if(t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(a=t;a<r;++a)this[a]=e;else{var o=Ot(e)?e:cr(new Nt(e,n).toString()),s=o.length;for(a=0;a<r-t;++a)this[a+t]=o[a%s]}return this};var or=/[^+\/0-9A-Za-z-_]/g;function sr(e){return e<16?"0"+e.toString(16):e.toString(16)}function cr(e,t){var r;t=t||1/0;for(var n=e.length,i=null,a=[],o=0;o<n;++o){if((r=e.charCodeAt(o))>55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===n){(t-=3)>-1&&a.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&a.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;a.push(r)}else if(r<2048){if((t-=2)<0)break;a.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;a.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return a}function ur(e){return function(e){var t,r,n,i,a,o;ht||vt();var s=e.length;if(s%4>0)throw new Error("Invalid string. Length must be a multiple of 4");a="="===e[s-2]?2:"="===e[s-1]?1:0,o=new yt(3*s/4-a),n=a>0?s-4:s;var c=0;for(t=0,r=0;t<n;t+=4,r+=3)i=gt[e.charCodeAt(t)]<<18|gt[e.charCodeAt(t+1)]<<12|gt[e.charCodeAt(t+2)]<<6|gt[e.charCodeAt(t+3)],o[c++]=i>>16&255,o[c++]=i>>8&255,o[c++]=255&i;return 2===a?(i=gt[e.charCodeAt(t)]<<2|gt[e.charCodeAt(t+1)]>>4,o[c++]=255&i):1===a&&(i=gt[e.charCodeAt(t)]<<10|gt[e.charCodeAt(t+1)]<<4|gt[e.charCodeAt(t+2)]>>2,o[c++]=i>>8&255,o[c++]=255&i),o}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(or,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function lr(e,t,r,n){for(var i=0;i<n&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function _r(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}var dr=Object.prototype.toString,pr="function"==typeof Nt.alloc&&"function"==typeof Nt.allocUnsafe&&"function"==typeof Nt.from;var fr,mr=function(e,t,r){if("number"==typeof e)throw new TypeError('"value" argument must not be a number');return n=e,"ArrayBuffer"===dr.call(n).slice(8,-1)?function(e,t,r){t>>>=0;var n=e.byteLength-t;if(n<0)throw new RangeError("'offset' is out of bounds");if(void 0===r)r=n;else if((r>>>=0)>n)throw new RangeError("'length' is out of bounds");return pr?Nt.from(e.slice(t,t+r)):new Nt(new Uint8Array(e.slice(t,t+r)))}(e,t,r):"string"==typeof e?function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!Nt.isEncoding(t))throw new TypeError('"encoding" must be a valid string encoding');return pr?Nt.from(e,t):new Nt(e,t)}(e,t):pr?Nt.from(e):new Nt(e);var n},gr=Object.freeze({__proto__:null,default:{}}),yr=o(Be),hr=o(Re),vr=(o(gr),yr);try{(fr=hr).existsSync&&fr.readFileSync||(fr=null)}catch(e){}var br="auto",xr={},Dr=/^data:application\/json[^,]+base64,/,Sr=[],Tr=[];function Er(){return"browser"===br||"node"!==br&&("undefined"!=typeof window&&"function"==typeof XMLHttpRequest&&!(window.require&&window.module&&window.process&&"renderer"===window.process.type))}function Cr(e){return function(t){for(var r=0;r<e.length;r++){var n=e[r](t);if(n)return n}return null}}var kr=Cr(Sr);function Nr(e,t){if(!e)return t;var r=vr.dirname(e),n=/^\w+:\/\/[^\/]*/.exec(r),i=n?n[0]:"",a=r.slice(i.length);return i&&/^\/\w\:/.test(a)?(i+="/")+vr.resolve(r.slice(i.length),t).replace(/\\/g,"/"):i+vr.resolve(r.slice(i.length),t)}Sr.push((function(e){if(e=e.trim(),/^file:/.test(e)&&(e=e.replace(/file:\/\/\/(\w:)?/,(function(e,t){return t?"":"/"}))),e in xr)return xr[e];var t="";try{if(fr)fr.existsSync(e)&&(t=fr.readFileSync(e,"utf8"));else{var r=new XMLHttpRequest;r.open("GET",e,!1),r.send(null),4===r.readyState&&200===r.status&&(t=r.responseText)}}catch(e){}return xr[e]=t}));Cr(Tr);Tr.push((function(e){var t,r=function(e){var t;if(Er())try{var r=new XMLHttpRequest;r.open("GET",e,!1),r.send(null),t=4===r.readyState?r.responseText:null;var n=r.getResponseHeader("SourceMap")||r.getResponseHeader("X-SourceMap");if(n)return n}catch(e){}t=kr(e);for(var i,a,o=/(?:\/\/[@#][\s]*sourceMappingURL=([^\s'"]+)[\s]*$)|(?:\/\*[@#][\s]*sourceMappingURL=([^\s*'"]+)[\s]*(?:\*\/)[\s]*$)/gm;a=o.exec(t);)i=a;return i?i[1]:null}(e);if(!r)return null;if(Dr.test(r)){var n=r.slice(r.indexOf(",")+1);t=mr(n,"base64").toString(),r=e}else r=Nr(e,r),t=kr(r);return t?{url:r,map:t}:null}));Sr.slice(0),Tr.slice(0);var Ar=Object.freeze({__proto__:null,default:{}}),Fr=(o(je),o(Ke),o(Ar),a((function(e){var t=n&&n.__spreadArrays||function(){for(var e=0,t=0,r=arguments.length;t<r;t++)e+=arguments[t].length;var n=Array(e),i=0;for(t=0;t<r;t++)for(var a=arguments[t],o=0,s=a.length;o<s;o++,i++)n[i]=a[o];return n},r=n&&n.__assign||function(){return(r=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},i=n&&n.__generator||function(e,t){var r,n,i,a,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=(i=o.trys).length>0&&i[i.length-1])&&(6===a[0]||2===a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){o.label=a[1];break}if(6===a[0]&&o.label<i[1]){o.label=i[1],i=a;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(a);break}i[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}},a=n&&n.__makeTemplateObject||function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},o=n&&n.__extends||function(){var e=function(t,r){return(e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(t,r)};return function(t,r){function n(){this.constructor=t}e(t,r),t.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}}();!function(e){e.createMapShim=function(){function e(){var e=Object.create(null);return e.__=void 0,delete e.__,e}var t=function(){function e(e,t){this.currentEntry=e,this.selector=t}return e.prototype.next=function(){for(;this.currentEntry;){var e=!!this.currentEntry.skipNext;if(this.currentEntry=this.currentEntry.nextEntry,!e)break}return this.currentEntry?{value:this.selector(this.currentEntry.key,this.currentEntry.value),done:!1}:{value:void 0,done:!0}},e}();return(function(){function r(){this.data=e(),this.size=0,this.firstEntry={},this.lastEntry=this.firstEntry}return r.prototype.get=function(e){var t=this.data[e];return t&&t.value},r.prototype.set=function(e,t){if(this.has(e))this.data[e].value=t;else{this.size++;var r={key:e,value:t};this.data[e]=r;var n=this.lastEntry;n.nextEntry=r,r.previousEntry=n,this.lastEntry=r}return this},r.prototype.has=function(e){return e in this.data},r.prototype.delete=function(e){if(this.has(e)){this.size--;var t=this.data[e];delete this.data[e];var r=t.previousEntry;return r.nextEntry=t.nextEntry,t.nextEntry&&(t.nextEntry.previousEntry=r),this.lastEntry===t&&(this.lastEntry=r),t.previousEntry=void 0,t.nextEntry=r,t.skipNext=!0,!0}return!1},r.prototype.clear=function(){this.data=e(),this.size=0;for(var t=this.firstEntry,r=t.nextEntry;r;){var n=r.nextEntry;r.previousEntry=void 0,r.nextEntry=t,r.skipNext=!0,r=n}t.nextEntry=void 0,this.lastEntry=t},r.prototype.keys=function(){return new t(this.firstEntry,(function(e){return e}))},r.prototype.values=function(){return new t(this.firstEntry,(function(e,t){return t}))},r.prototype.entries=function(){return new t(this.firstEntry,(function(e,t){return[e,t]}))},r.prototype.forEach=function(e){for(var t=this.entries();;){var r=t.next();if(r.done)break;var n=r.value,i=n[0];e(n[1],i)}},r}())}}(s||(s={})),function(e){e.versionMajorMinor="3.7",e.version=e.versionMajorMinor+".2"}(s||(s={})),function(e){!function(e){e[e.LessThan=-1]="LessThan",e[e.EqualTo=0]="EqualTo",e[e.GreaterThan=1]="GreaterThan"}(e.Comparison||(e.Comparison={}))}(s||(s={})),function(e){e.tryGetNativeMap=function(){return"undefined"!=typeof Map&&"entries"in Map.prototype?Map:void 0}}(s||(s={})),function(e){function r(){return new e.Map}function n(e,t,r){if(void 0===r&&(r=k),e)for(var n=0,i=e;n<i.length;n++){if(r(i[n],t))return!0}return!1}function i(e,t){if(e){if(!t)return e.length>0;for(var r=0,n=e;r<n.length;r++){if(t(n[r]))return!0}}return!1}function a(e,t){return void 0===t?e:void 0===e?[t]:(e.push(t),e)}function o(e,t){return t<0?e.length+t:t}function s(e,t,r,n){if(void 0===t||0===t.length)return e;if(void 0===e)return t.slice(r,n);r=void 0===r?0:o(t,r),n=void 0===n?t.length:o(t,n);for(var i=r;i<n&&i<t.length;i++)void 0!==t[i]&&e.push(t[i]);return e}function c(e,t,r){return!n(e,t,r)&&(e.push(t),!0)}function u(e,t,r){t.sort((function(t,n){return r(e[t],e[n])||A(t,n)}))}function l(e,t){return 0===e.length?e:e.slice().sort(t)}function _(e){var t=0;return{next:function(){return t===e.length?{value:void 0,done:!0}:{value:e[++t-1],done:!1}}}}function d(e,t,r,n,i){return p(e,r(t),r,n,i)}function p(e,t,r,n,a){if(!i(e))return-1;for(var o=a||0,s=e.length-1;o<=s;){var c=o+(s-o>>1);switch(n(r(e[c]),t)){case-1:o=c+1;break;case 0:return c;case 1:s=c-1}}return~o}function m(e,t,r,n,i){if(e&&e.length>0){var a=e.length;if(a>0){var o=void 0===n||n<0?0:n,s=void 0===i||o+i>a-1?a-1:o+i,c=void 0;for(arguments.length<=2?(c=e[o],o++):c=r;o<=s;)c=t(c,e[o],o),o++;return c}}return r}e.emptyArray=[],e.Map=e.tryGetNativeMap()||function(){if("function"==typeof e.createMapShim)return e.createMapShim();throw new Error("TypeScript requires an environment that provides a compatible native Map implementation.")}(),e.createMap=r,e.createMapFromEntries=function(e){for(var t=r(),n=0,i=e;n<i.length;n++){var a=i[n],o=a[0],s=a[1];t.set(o,s)}return t},e.createMapFromTemplate=function(t){var r=new e.Map;for(var n in t)g.call(t,n)&&r.set(n,t[n]);return r},e.length=function(e){return e?e.length:0},e.forEach=function(e,t){if(e)for(var r=0;r<e.length;r++){var n=t(e[r],r);if(n)return n}},e.forEachRight=function(e,t){if(e)for(var r=e.length-1;r>=0;r--){var n=t(e[r],r);if(n)return n}},e.firstDefined=function(e,t){if(void 0!==e)for(var r=0;r<e.length;r++){var n=t(e[r],r);if(void 0!==n)return n}},e.firstDefinedIterator=function(e,t){for(;;){var r=e.next();if(r.done)return;var n=t(r.value);if(void 0!==n)return n}},e.zipWith=function(t,r,n){var i=[];e.Debug.assertEqual(t.length,r.length);for(var a=0;a<t.length;a++)i.push(n(t[a],r[a],a));return i},e.zipToIterator=function(t,r){e.Debug.assertEqual(t.length,r.length);var n=0;return{next:function(){return n===t.length?{value:void 0,done:!0}:{value:[t[++n-1],r[n-1]],done:!1}}}},e.zipToMap=function(t,n){e.Debug.assert(t.length===n.length);for(var i=r(),a=0;a<t.length;++a)i.set(t[a],n[a]);return i},e.every=function(e,t){if(e)for(var r=0;r<e.length;r++)if(!t(e[r],r))return!1;return!0},e.find=function(e,t){for(var r=0;r<e.length;r++){var n=e[r];if(t(n,r))return n}},e.findLast=function(e,t){for(var r=e.length-1;r>=0;r--){var n=e[r];if(t(n,r))return n}},e.findIndex=function(e,t,r){for(var n=r||0;n<e.length;n++)if(t(e[n],n))return n;return-1},e.findLastIndex=function(e,t,r){for(var n=void 0===r?e.length-1:r;n>=0;n--)if(t(e[n],n))return n;return-1},e.findMap=function(t,r){for(var n=0;n<t.length;n++){var i=r(t[n],n);if(i)return i}return e.Debug.fail()},e.contains=n,e.arraysEqual=function(e,t,r){return void 0===r&&(r=k),e.length===t.length&&e.every((function(e,n){return r(e,t[n])}))},e.indexOfAnyCharCode=function(e,t,r){for(var i=r||0;i<e.length;i++)if(n(t,e.charCodeAt(i)))return i;return-1},e.countWhere=function(e,t){var r=0;if(e)for(var n=0;n<e.length;n++){t(e[n],n)&&r++}return r},e.filter=function(e,t){if(e){for(var r=e.length,n=0;n<r&&t(e[n]);)n++;if(n<r){var i=e.slice(0,n);for(n++;n<r;){var a=e[n];t(a)&&i.push(a),n++}return i}}return e},e.filterMutate=function(e,t){for(var r=0,n=0;n<e.length;n++)t(e[n],n,e)&&(e[r]=e[n],r++);e.length=r},e.clear=function(e){e.length=0},e.map=function(e,t){var r;if(e){r=[];for(var n=0;n<e.length;n++)r.push(t(e[n],n))}return r},e.mapIterator=function(e,t){return{next:function(){var r=e.next();return r.done?r:{value:t(r.value),done:!1}}}},e.sameMap=function(e,t){if(e)for(var r=0;r<e.length;r++){var n=e[r],i=t(n,r);if(n!==i){var a=e.slice(0,r);for(a.push(i),r++;r<e.length;r++)a.push(t(e[r],r));return a}}return e},e.flatten=function(e){for(var t=[],r=0,n=e;r<n.length;r++){var i=n[r];i&&(S(i)?s(t,i):t.push(i))}return t},e.flatMap=function(t,r){var n;if(t)for(var i=0;i<t.length;i++){var o=r(t[i],i);o&&(n=S(o)?s(n,o):a(n,o))}return n||e.emptyArray},e.flatMapToMutable=function(e,t){var r=[];if(e)for(var n=0;n<e.length;n++){var i=t(e[n],n);i&&(S(i)?s(r,i):r.push(i))}return r},e.flatMapIterator=function(t,r){var n=t.next();if(n.done)return e.emptyIterator;var i=a(n.value);return{next:function(){for(;;){var e=i.next();if(!e.done)return e;var r=t.next();if(r.done)return r;i=a(r.value)}}};function a(t){var n=r(t);return void 0===n?e.emptyIterator:S(n)?_(n):n}},e.sameFlatMap=function(e,t){var r;if(e)for(var n=0;n<e.length;n++){var i=e[n],a=t(i,n);(r||i!==a||S(a))&&(r||(r=e.slice(0,n)),S(a)?s(r,a):r.push(a))}return r||e},e.mapAllOrFail=function(e,t){for(var r=[],n=0;n<e.length;n++){var i=t(e[n],n);if(void 0===i)return;r.push(i)}return r},e.mapDefined=function(e,t){var r=[];if(e)for(var n=0;n<e.length;n++){var i=t(e[n],n);void 0!==i&&r.push(i)}return r},e.mapDefinedIterator=function(e,t){return{next:function(){for(;;){var r=e.next();if(r.done)return r;var n=t(r.value);if(void 0!==n)return{value:n,done:!1}}}}},e.emptyIterator={next:function(){return{value:void 0,done:!0}}},e.singleIterator=function(e){var t=!1;return{next:function(){var r=t;return t=!0,r?{value:void 0,done:!0}:{value:e,done:!1}}}},e.spanMap=function(e,t,r){var n;if(e){n=[];for(var i=e.length,a=void 0,o=void 0,s=0,c=0;s<i;){for(;c<i;){if(o=t(e[c],c),0===c)a=o;else if(o!==a)break;c++}if(s<c){var u=r(e.slice(s,c),a,s,c);u&&n.push(u),s=c}a=o,c++}}return n},e.mapEntries=function(e,t){if(e){var n=r();return e.forEach((function(e,r){var i=t(r,e),a=i[0],o=i[1];n.set(a,o)})),n}},e.some=i,e.getRangesWhere=function(e,t,r){for(var n,i=0;i<e.length;i++)t(e[i])?n=void 0===n?i:n:void 0!==n&&(r(n,i),n=void 0);void 0!==n&&r(n,e.length)},e.concatenate=function(e,r){return i(r)?i(e)?t(e,r):r:e},e.deduplicate=function(e,t,r){return 0===e.length?[]:1===e.length?e.slice():r?function(e,t,r){var n=e.map((function(e,t){return t}));u(e,n,r);for(var i=e[n[0]],a=[n[0]],o=1;o<n.length;o++){var s=n[o],c=e[s];t(i,c)||(a.push(s),i=c)}return a.sort(),a.map((function(t){return e[t]}))}(e,t,r):function(e,t){for(var r=[],n=0,i=e;n<i.length;n++){c(r,i[n],t)}return r}(e,t)},e.insertSorted=function(e,t,r){if(0!==e.length){var n=d(e,t,E,r);n<0&&e.splice(~n,0,t)}else e.push(t)},e.sortAndDeduplicate=function(t,r,n){return function(t,r){if(0===t.length)return e.emptyArray;for(var n=t[0],i=[n],a=1;a<t.length;a++){var o=t[a];switch(r(o,n)){case!0:case 0:continue;case-1:return e.Debug.fail("Array is unsorted.")}i.push(n=o)}return i}(l(t,r),n||r||P)},e.arrayIsEqualTo=function(e,t,r){if(void 0===r&&(r=k),!e||!t)return e===t;if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(!r(e[n],t[n],n))return!1;return!0},e.compact=function(e){var t;if(e)for(var r=0;r<e.length;r++){var n=e[r];!t&&n||(t||(t=e.slice(0,r)),n&&t.push(n))}return t||e},e.relativeComplement=function(t,r,n){if(!r||!t||0===r.length||0===t.length)return r;var i=[];e:for(var a=0,o=0;o<r.length;o++){o>0&&e.Debug.assertGreaterThanOrEqual(n(r[o],r[o-1]),0);t:for(var s=a;a<t.length;a++)switch(a>s&&e.Debug.assertGreaterThanOrEqual(n(t[a],t[a-1]),0),n(r[o],t[a])){case-1:i.push(r[o]);continue e;case 0:continue e;case 1:continue t}}return i},e.sum=function(e,t){for(var r=0,n=0,i=e;n<i.length;n++){r+=i[n][t]}return r},e.append=a,e.addRange=s,e.pushIfUnique=c,e.appendIfUnique=function(e,t,r){return e?(c(e,t,r),e):[t]},e.sort=l,e.arrayIterator=_,e.arrayReverseIterator=function(e){var t=e.length;return{next:function(){return 0===t?{value:void 0,done:!0}:{value:e[--t],done:!1}}}},e.stableSort=function(e,t){var r=e.map((function(e,t){return t}));return u(e,r,t),r.map((function(t){return e[t]}))},e.rangeEquals=function(e,t,r,n){for(;r<n;){if(e[r]!==t[r])return!1;r++}return!0},e.elementAt=function(e,t){if(e&&(t=o(e,t))<e.length)return e[t]},e.firstOrUndefined=function(e){return 0===e.length?void 0:e[0]},e.first=function(t){return e.Debug.assert(0!==t.length),t[0]},e.lastOrUndefined=function(e){return 0===e.length?void 0:e[e.length-1]},e.last=function(t){return e.Debug.assert(0!==t.length),t[t.length-1]},e.singleOrUndefined=function(e){return e&&1===e.length?e[0]:void 0},e.singleOrMany=function(e){return e&&1===e.length?e[0]:e},e.replaceElement=function(e,t,r){var n=e.slice(0);return n[t]=r,n},e.binarySearch=d,e.binarySearchKey=p,e.reduceLeft=m;var g=Object.prototype.hasOwnProperty;function y(e,t){return g.call(e,t)}function h(e,t){for(var r=[],n=e.next();!n.done;n=e.next())r.push(t?t(n.value):n.value);return r}function v(e,t,r){void 0===r&&(r=E);for(var n=b(),i=0,a=e;i<a.length;i++){var o=a[i];n.add(t(o),r(o))}return n}function b(){var e=r();return e.add=x,e.remove=D,e}function x(e,t){var r=this.get(e);return r?r.push(t):this.set(e,r=[t]),r}function D(e,t){var r=this.get(e);r&&(j(r,t),r.length||this.delete(e))}function S(e){return Array.isArray?Array.isArray(e):e instanceof Array}function T(e){}function E(e){return e}function C(e){return e.toLowerCase()}function k(e,t){return e===t}function N(e,t){return e===t?0:void 0===e?-1:void 0===t?1:e<t?-1:1}function A(e,t){return N(e,t)}function F(e,t){return e===t?0:void 0===e?-1:void 0===t?1:(e=e.toUpperCase())<(t=t.toUpperCase())?-1:e>t?1:0}function P(e,t){return N(e,t)}e.hasProperty=y,e.getProperty=function(e,t){return g.call(e,t)?e[t]:void 0},e.getOwnKeys=function(e){var t=[];for(var r in e)g.call(e,r)&&t.push(r);return t},e.getAllKeys=function(e){var t=[];do{for(var r=0,n=Object.getOwnPropertyNames(e);r<n.length;r++){c(t,n[r])}}while(e=Object.getPrototypeOf(e));return t},e.getOwnValues=function(e){var t=[];for(var r in e)g.call(e,r)&&t.push(e[r]);return t},e.arrayFrom=h,e.assign=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];for(var n=0,i=t;n<i.length;n++){var a=i[n];if(void 0!==a)for(var o in a)y(a,o)&&(e[o]=a[o])}return e},e.equalOwnProperties=function(e,t,r){if(void 0===r&&(r=k),e===t)return!0;if(!e||!t)return!1;for(var n in e)if(g.call(e,n)){if(!g.call(t,n))return!1;if(!r(e[n],t[n]))return!1}for(var n in t)if(g.call(t,n)&&!g.call(e,n))return!1;return!0},e.arrayToMap=function(e,t,n){void 0===n&&(n=E);for(var i=r(),a=0,o=e;a<o.length;a++){var s=o[a],c=t(s);void 0!==c&&i.set(c,n(s))}return i},e.arrayToNumericMap=function(e,t,r){void 0===r&&(r=E);for(var n=[],i=0,a=e;i<a.length;i++){var o=a[i];n[t(o)]=r(o)}return n},e.arrayToMultiMap=v,e.group=function(e,t){return h(v(e,t).values())},e.clone=function(e){var t={};for(var r in e)g.call(e,r)&&(t[r]=e[r]);return t},e.extend=function(e,t){var r={};for(var n in t)g.call(t,n)&&(r[n]=t[n]);for(var n in e)g.call(e,n)&&(r[n]=e[n]);return r},e.copyProperties=function(e,t){for(var r in t)g.call(t,r)&&(e[r]=t[r])},e.maybeBind=function(e,t){return t?t.bind(e):void 0},e.mapMap=function(e,t){var n=r();return e.forEach((function(e,r){return n.set.apply(n,t(e,r))})),n},e.createMultiMap=b,e.isArray=S,e.toArray=function(e){return S(e)?e:[e]},e.isString=function(e){return"string"==typeof e},e.isNumber=function(e){return"number"==typeof e},e.tryCast=function(e,t){return void 0!==e&&t(e)?e:void 0},e.cast=function(t,r){return void 0!==t&&r(t)?t:e.Debug.fail("Invalid cast. The supplied value "+t+" did not pass the test '"+e.Debug.getFunctionName(r)+"'.")},e.noop=T,e.returnFalse=function(){return!1},e.returnTrue=function(){return!0},e.returnUndefined=function(){},e.identity=E,e.toLowerCase=C,e.notImplemented=function(){throw new Error("Not implemented")},e.memoize=function(e){var t;return function(){return e&&(t=e(),e=void 0),t}},e.compose=function(e,t,r,n,i){if(i){for(var a=[],o=0;o<arguments.length;o++)a[o]=arguments[o];return function(e){return m(a,(function(e,t){return t(e)}),e)}}return n?function(i){return n(r(t(e(i))))}:r?function(n){return r(t(e(n)))}:t?function(r){return t(e(r))}:e?function(t){return e(t)}:function(e){return e}},function(e){e[e.None=0]="None",e[e.Normal=1]="Normal",e[e.Aggressive=2]="Aggressive",e[e.VeryAggressive=3]="VeryAggressive"}(e.AssertionLevel||(e.AssertionLevel={})),e.equateValues=k,e.equateStringsCaseInsensitive=function(e,t){return e===t||void 0!==e&&void 0!==t&&e.toUpperCase()===t.toUpperCase()},e.equateStringsCaseSensitive=function(e,t){return k(e,t)},e.compareValues=A,e.min=function(e,t,r){return-1===r(e,t)?e:t},e.compareStringsCaseInsensitive=F,e.compareStringsCaseSensitive=P,e.getStringComparer=function(e){return e?F:P};var w,I,O=function(){var e,t,r=function(){if("object"===("undefined"==typeof Intl?"undefined":f(Intl))&&"function"==typeof Intl.Collator)return i;if("function"==typeof String.prototype.localeCompare&&"function"==typeof String.prototype.toLocaleUpperCase&&"a".localeCompare("B")<0)return a;return o}();return function(n){return void 0===n?e||(e=r(n)):"en-US"===n?t||(t=r(n)):r(n)};function n(e,t,r){if(e===t)return 0;if(void 0===e)return-1;if(void 0===t)return 1;var n=r(e,t);return n<0?-1:n>0?1:0}function i(e){var t=new Intl.Collator(e,{usage:"sort",sensitivity:"variant"}).compare;return function(e,r){return n(e,r,t)}}function a(e){return void 0!==e?o():function(e,r){return n(e,r,t)};function t(e,t){return e.localeCompare(t)}}function o(){return function(t,r){return n(t,r,e)};function e(e,r){return t(e.toUpperCase(),r.toUpperCase())||t(e,r)}function t(e,t){return e<t?-1:e>t?1:0}}}();function M(e,t,r){for(var n=new Array(t.length+1),i=new Array(t.length+1),a=r+1,o=0;o<=t.length;o++)n[o]=o;for(o=1;o<=e.length;o++){var s=e.charCodeAt(o-1),c=o>r?o-r:1,u=t.length>r+o?r+o:t.length;i[0]=o;for(var l=o,_=1;_<c;_++)i[_]=a;for(_=c;_<=u;_++){var d=s===t.charCodeAt(_-1)?n[_-1]:Math.min(n[_]+1,i[_-1]+1,n[_-1]+2);i[_]=d,l=Math.min(l,d)}for(_=u+1;_<=t.length;_++)i[_]=a;if(l>r)return;var p=n;n=i,i=p}var f=n[t.length];return f>r?void 0:f}function L(e,t){var r=e.length-t.length;return r>=0&&e.indexOf(t,r)===r}function R(e,t){for(var r=t;r<e.length-1;r++)e[r]=e[r+1];e.pop()}function B(e,t){e[t]=e[e.length-1],e.pop()}function j(e,t){return function(e,t){for(var r=0;r<e.length;r++)if(t(e[r]))return B(e,r),!0;return!1}(e,(function(e){return e===t}))}function K(e,t){return 0===e.lastIndexOf(t,0)}function J(e,t){var r=e.prefix,n=e.suffix;return t.length>=r.length+n.length&&K(t,r)&&L(t,n)}e.getUILocale=function(){return I},e.setUILocale=function(e){I!==e&&(I=e,w=void 0)},e.compareStringsCaseSensitiveUI=function(e,t){return(w||(w=O(I)))(e,t)},e.compareProperties=function(e,t,r,n){return e===t?0:void 0===e?-1:void 0===t?1:n(e[r],t[r])},e.compareBooleans=function(e,t){return A(e?1:0,t?1:0)},e.getSpellingSuggestion=function(t,r,n){for(var i,a=Math.min(2,Math.floor(.34*t.length)),o=Math.floor(.4*t.length)+1,s=!1,c=t.toLowerCase(),u=0,l=r;u<l.length;u++){var _=l[u],d=n(_);if(void 0!==d&&Math.abs(d.length-c.length)<=a){var p=d.toLowerCase();if(p===c){if(d===t)continue;return _}if(s)continue;if(d.length<3)continue;var f=M(c,p,o-1);if(void 0===f)continue;f<3?(s=!0,i=_):(e.Debug.assert(f<o),o=f,i=_)}}return i},e.endsWith=L,e.removeSuffix=function(e,t){return L(e,t)?e.slice(0,e.length-t.length):e},e.tryRemoveSuffix=function(e,t){return L(e,t)?e.slice(0,e.length-t.length):void 0},e.stringContains=function(e,t){return-1!==e.indexOf(t)},e.removeMinAndVersionNumbers=function(e){var t=/[.-]((min)|(\d+(\.\d+)*))$/;return e.replace(t,"").replace(t,"")},e.orderedRemoveItem=function(e,t){for(var r=0;r<e.length;r++)if(e[r]===t)return R(e,r),!0;return!1},e.orderedRemoveItemAt=R,e.unorderedRemoveItemAt=B,e.unorderedRemoveItem=j,e.createGetCanonicalFileName=function(e){return e?E:C},e.patternText=function(e){return e.prefix+"*"+e.suffix},e.matchedText=function(t,r){return e.Debug.assert(J(t,r)),r.substring(t.prefix.length,r.length-t.suffix.length)},e.findBestPatternMatch=function(e,t,r){for(var n,i=-1,a=0,o=e;a<o.length;a++){var s=o[a],c=t(s);J(c,r)&&c.prefix.length>i&&(i=c.prefix.length,n=s)}return n},e.startsWith=K,e.removePrefix=function(e,t){return K(e,t)?e.substr(t.length):e},e.tryRemovePrefix=function(e,t,r){return void 0===r&&(r=E),K(r(e),r(t))?e.substring(t.length):void 0},e.and=function(e,t){return function(r){return e(r)&&t(r)}},e.or=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return function(t){for(var r=0,n=e;r<n.length;r++){if((0,n[r])(t))return!0}return!1}},e.not=function(e){return function(){for(var t=[],r=0;r<arguments.length;r++)t[r]=arguments[r];return!e.apply(void 0,t)}},e.assertType=function(e){},e.singleElementArray=function(e){return void 0===e?void 0:[e]},e.enumerateInsertsAndDeletes=function(e,t,r,n,i,a){a=a||T;for(var o=0,s=0,c=e.length,u=t.length;o<c&&s<u;){var l=e[o],_=t[s],d=r(l,_);-1===d?(n(l),o++):1===d?(i(_),s++):(a(_,l),o++,s++)}for(;o<c;)n(e[o++]);for(;s<u;)i(t[s++])},e.fill=function(e,t){for(var r=Array(e),n=0;n<e;n++)r[n]=t(n);return r},e.cartesianProduct=function(e){var t=[];return function e(t,r,n,i){for(var a=0,o=t[i];a<o.length;a++){var s=o[a],c=void 0;n?(c=n.slice()).push(s):c=[s],i===t.length-1?r.push(c):e(t,r,c,i+1)}}(e,t,void 0,0),t}}(s||(s={})),function(e){!function(t){function r(e){return t.currentAssertionLevel>=e}function n(e,t,r,a){e||(r&&(t+="\r\nVerbose Debug Information: "+("string"==typeof r?r:r())),i(t?"False expression: "+t:"False expression.",a||n))}function i(e,t){var r=new Error(e?"Debug Failure. "+e:"Debug Failure.");throw Error.captureStackTrace&&Error.captureStackTrace(r,t||i),r}function a(e,t){return null==e?i(t):e}function o(e){if("function"!=typeof e)return"";if(e.hasOwnProperty("name"))return e.name;var t=Function.prototype.toString.call(e),r=/^function\s+([\w\$]+)\s*\(/.exec(t);return r?r[1]:""}function s(t,r,n){void 0===t&&(t=0);var i=function(t){var r=[];for(var n in t){var i=t[n];"number"==typeof i&&r.push([i,n])}return e.stableSort(r,(function(t,r){return e.compareValues(t[0],r[0])}))}(r);if(0===t)return i.length>0&&0===i[0][0]?i[0][1]:"0";if(n){for(var a="",o=t,s=i.length-1;s>=0&&0!==o;s--){var c=i[s],u=c[0],l=c[1];0!==u&&(o&u)===u&&(o&=~u,a=l+(a?"|":"")+a)}if(0===o)return a}else for(var _=0,d=i;_<d.length;_++){var p=d[_];u=p[0],l=p[1];if(u===t)return l}return t.toString()}function c(t){return s(t,e.SyntaxKind,!1)}function u(t){return s(t,e.NodeFlags,!0)}function l(t){return s(t,e.ModifierFlags,!0)}function _(t){return s(t,e.TransformFlags,!0)}function d(t){return s(t,e.EmitFlags,!0)}function p(t){return s(t,e.SymbolFlags,!0)}function m(t){return s(t,e.TypeFlags,!0)}function g(t){return s(t,e.ObjectFlags,!0)}t.currentAssertionLevel=0,t.isDebugging=!1,t.shouldAssert=r,t.assert=n,t.assertEqual=function(e,t,r,n){e!==t&&i("Expected "+e+" === "+t+". "+(r?n?r+" "+n:r:""))},t.assertLessThan=function(e,t,r){e>=t&&i("Expected "+e+" < "+t+". "+(r||""))},t.assertLessThanOrEqual=function(e,t){e>t&&i("Expected "+e+" <= "+t)},t.assertGreaterThanOrEqual=function(e,t){e<t&&i("Expected "+e+" >= "+t)},t.fail=i,t.assertDefined=a,t.assertEachDefined=function(e,t){for(var r=0,n=e;r<n.length;r++){a(n[r],t)}return e},t.assertNever=function t(r,n,a){return void 0===n&&(n="Illegal value:"),i(n+" "+("object"===f(r)&&e.hasProperty(r,"kind")&&e.hasProperty(r,"pos")&&c?"SyntaxKind: "+c(r.kind):JSON.stringify(r)),a||t)},t.getFunctionName=o,t.formatSymbol=function(t){return"{ name: "+e.unescapeLeadingUnderscores(t.escapedName)+"; flags: "+p(t.flags)+"; declarations: "+e.map(t.declarations,(function(e){return c(e.kind)}))+" }"},t.formatEnum=s,t.formatSyntaxKind=c,t.formatNodeFlags=u,t.formatModifierFlags=l,t.formatTransformFlags=_,t.formatEmitFlags=d,t.formatSymbolFlags=p,t.formatTypeFlags=m,t.formatObjectFlags=g,t.failBadSyntaxKind=function e(t,r){return i((r||"Unexpected node.")+"\r\nNode "+c(t.kind)+" was unexpected.",e)},t.assertEachNode=r(1)?function(r,i,a){return n(void 0===i||e.every(r,i),a||"Unexpected node.",(function(){return"Node array did not pass test '"+o(i)+"'."}),t.assertEachNode)}:e.noop,t.assertNode=r(1)?function(e,r,i){return n(void 0===r||r(e),i||"Unexpected node.",(function(){return"Node "+c(e.kind)+" did not pass test '"+o(r)+"'."}),t.assertNode)}:e.noop,t.assertNotNode=r(1)?function(e,r,i){return n(void 0===r||!r(e),i||"Unexpected node.",(function(){return"Node "+c(e.kind)+" should not have passed test '"+o(r)+"'."}),t.assertNode)}:e.noop,t.assertOptionalNode=r(1)?function(e,r,i){return n(void 0===r||void 0===e||r(e),i||"Unexpected node.",(function(){return"Node "+c(e.kind)+" did not pass test '"+o(r)+"'."}),t.assertOptionalNode)}:e.noop,t.assertOptionalToken=r(1)?function(e,r,i){return n(void 0===r||void 0===e||e.kind===r,i||"Unexpected node.",(function(){return"Node "+c(e.kind)+" was not a '"+c(r)+"' token."}),t.assertOptionalToken)}:e.noop,t.assertMissingNode=r(1)?function(e,r){return n(void 0===e,r||"Unexpected node.",(function(){return"Node "+c(e.kind)+" was unexpected'."}),t.assertMissingNode)}:e.noop;var y,h=!1;function v(e){return function(){if(b(),!y)throw new Error("Debugging helpers could not be loaded.");return y}().formatControlFlowGraph(e)}function b(){if(!h){Object.defineProperties(e.objectAllocator.getSymbolConstructor().prototype,{__debugFlags:{get:function(){return p(this.flags)}}}),Object.defineProperties(e.objectAllocator.getTypeConstructor().prototype,{__debugFlags:{get:function(){return m(this.flags)}},__debugObjectFlags:{get:function(){return 524288&this.flags?g(this.objectFlags):""}},__debugTypeToString:{value:function(){return this.checker.typeToString(this)}}});for(var t=0,r=[e.objectAllocator.getNodeConstructor(),e.objectAllocator.getIdentifierConstructor(),e.objectAllocator.getTokenConstructor(),e.objectAllocator.getSourceFileConstructor()];t<r.length;t++){var n=r[t];n.prototype.hasOwnProperty("__debugKind")||Object.defineProperties(n.prototype,{__debugKind:{get:function(){return c(this.kind)}},__debugNodeFlags:{get:function(){return u(this.flags)}},__debugModifierFlags:{get:function(){return l(e.getModifierFlagsNoCache(this))}},__debugTransformFlags:{get:function(){return _(this.transformFlags)}},__debugIsParseTreeNode:{get:function(){return e.isParseTreeNode(this)}},__debugEmitFlags:{get:function(){return d(e.getEmitFlags(this))}},__debugGetText:{value:function(t){if(e.nodeIsSynthesized(this))return"";var r=e.getParseTreeNode(this),n=r&&e.getSourceFileOfNode(r);return n?e.getSourceTextOfNodeFromSourceFile(n,r,t):""}}})}try{if(e.sys&&e.sys.require){var i=e.getDirectoryPath(e.resolvePath(e.sys.getExecutingFilePath())),a=e.sys.require(i,"./compiler-debug");a.error||(a.module.init(e),y=a.module)}}catch(e){}h=!0}}t.printControlFlowGraph=function(e){return console.log(v(e))},t.formatControlFlowGraph=v,t.attachFlowNodeDebugInfo=function(t){h&&("__debugFlowFlags"in t||Object.defineProperties(t,{__debugFlowFlags:{get:function(){return s(this.flags,e.FlowFlags,!0)}},__debugToString:{value:function(){return v(this)}}}))},t.enableDebugInfo=b}(e.Debug||(e.Debug={}))}(s||(s={})),function(e){e.timestamp="undefined"!=typeof performance&&performance.now?function(){return performance.now()}:Date.now?Date.now:function(){return+new Date}}(s||(s={})),function(e){!function(t){var r,n,i,a="function"==typeof onProfilerEvent&&!0===onProfilerEvent.profiler?onProfilerEvent:function(){},o=!1,s=0;function c(t,r,n){var i=0;return{enter:function(){1==++i&&u(r)},exit:function(){0==--i?(u(n),l(t,r,n)):i<0&&e.Debug.fail("enter/exit count does not match.")}}}function u(t){o&&(n.set(t,e.timestamp()),r.set(t,(r.get(t)||0)+1),a(t))}function l(t,r,a){if(o){var c=a&&n.get(a)||e.timestamp(),u=r&&n.get(r)||s;i.set(t,(i.get(t)||0)+(c-u))}}t.createTimerIf=function(e,r,n,i){return e?c(r,n,i):t.nullTimer},t.createTimer=c,t.nullTimer={enter:e.noop,exit:e.noop},t.mark=u,t.measure=l,t.getCount=function(e){return r&&r.get(e)||0},t.getDuration=function(e){return i&&i.get(e)||0},t.forEachMeasure=function(e){i.forEach((function(t,r){e(r,t)}))},t.enable=function(){r=e.createMap(),n=e.createMap(),i=e.createMap(),o=!0,s=e.timestamp()},t.disable=function(){o=!1}}(e.performance||(e.performance={}))}(s||(s={})),function(e){var t,r={logEvent:e.noop,logErrEvent:e.noop,logPerfEvent:e.noop,logInfoEvent:e.noop,logStartCommand:e.noop,logStopCommand:e.noop,logStartUpdateProgram:e.noop,logStopUpdateProgram:e.noop,logStartUpdateGraph:e.noop,logStopUpdateGraph:e.noop,logStartResolveModule:e.noop,logStopResolveModule:e.noop,logStartParseSourceFile:e.noop,logStopParseSourceFile:e.noop,logStartReadFile:e.noop,logStopReadFile:e.noop,logStartBindFile:e.noop,logStopBindFile:e.noop,logStartScheduledOperation:e.noop,logStopScheduledOperation:e.noop};try{t=require("@microsoft/typescript-etw")}catch(e){t=void 0}e.perfLogger=t&&t.logEvent?t:r}(s||(s={})),function(e){var t=/^(0|[1-9]\d*)(?:\.(0|[1-9]\d*)(?:\.(0|[1-9]\d*)(?:\-([a-z0-9-.]+))?(?:\+([a-z0-9-.]+))?)?)?$/i,r=/^(?:0|[1-9]\d*|[a-z-][a-z0-9-]*)(?:\.(?:0|[1-9]\d*|[a-z-][a-z0-9-]*))*$/i,n=/^[a-z0-9-]+(?:\.[a-z0-9-]+)*$/i,i=/^(0|[1-9]\d*)$/,a=function(){function t(t,i,a,s,c){if(void 0===i&&(i=0),void 0===a&&(a=0),void 0===s&&(s=""),void 0===c&&(c=""),"string"==typeof t){var u=e.Debug.assertDefined(o(t),"Invalid version");t=u.major,i=u.minor,a=u.patch,s=u.prerelease,c=u.build}e.Debug.assert(t>=0,"Invalid argument: major"),e.Debug.assert(i>=0,"Invalid argument: minor"),e.Debug.assert(a>=0,"Invalid argument: patch"),e.Debug.assert(!s||r.test(s),"Invalid argument: prerelease"),e.Debug.assert(!c||n.test(c),"Invalid argument: build"),this.major=t,this.minor=i,this.patch=a,this.prerelease=s?s.split("."):e.emptyArray,this.build=c?c.split("."):e.emptyArray}return t.tryParse=function(e){var r=o(e);if(r)return new t(r.major,r.minor,r.patch,r.prerelease,r.build)},t.prototype.compareTo=function(t){return this===t?0:void 0===t?1:e.compareValues(this.major,t.major)||e.compareValues(this.minor,t.minor)||e.compareValues(this.patch,t.patch)||function(t,r){if(t===r)return 0;if(0===t.length)return 0===r.length?0:1;if(0===r.length)return-1;for(var n=Math.min(t.length,r.length),a=0;a<n;a++){var o=t[a],s=r[a];if(o!==s){var c=i.test(o),u=i.test(s);if(c||u){if(c!==u)return c?-1:1;if(l=e.compareValues(+o,+s))return l}else{var l;if(l=e.compareStringsCaseSensitive(o,s))return l}}}return e.compareValues(t.length,r.length)}(this.prerelease,t.prerelease)},t.prototype.increment=function(r){switch(r){case"major":return new t(this.major+1,0,0);case"minor":return new t(this.major,this.minor+1,0);case"patch":return new t(this.major,this.minor,this.patch+1);default:return e.Debug.assertNever(r)}},t.prototype.toString=function(){var t=this.major+"."+this.minor+"."+this.patch;return e.some(this.prerelease)&&(t+="-"+this.prerelease.join(".")),e.some(this.build)&&(t+="+"+this.build.join(".")),t},t.zero=new t(0,0,0),t}();function o(e){var i=t.exec(e);if(i){var a=i[1],o=i[2],s=void 0===o?"0":o,c=i[3],u=void 0===c?"0":c,l=i[4],_=void 0===l?"":l,d=i[5],p=void 0===d?"":d;if((!_||r.test(_))&&(!p||n.test(p)))return{major:parseInt(a,10),minor:parseInt(s,10),patch:parseInt(u,10),prerelease:_,build:p}}}e.Version=a;var s=function(){function t(t){this._alternatives=t?e.Debug.assertDefined(p(t),"Invalid range spec."):e.emptyArray}return t.tryParse=function(e){var r=p(e);if(r){var n=new t("");return n._alternatives=r,n}},t.prototype.test=function(e){return"string"==typeof e&&(e=new a(e)),function(e,t){if(0===t.length)return!0;for(var r=0,n=t;r<n.length;r++){var i=n[r];if(v(e,i))return!0}return!1}(e,this._alternatives)},t.prototype.toString=function(){return t=this._alternatives,e.map(t,x).join(" || ")||"*";var t},t}();e.VersionRange=s;var c=/\s*\|\|\s*/g,u=/\s+/g,l=/^([xX*0]|[1-9]\d*)(?:\.([xX*0]|[1-9]\d*)(?:\.([xX*0]|[1-9]\d*)(?:-([a-z0-9-.]+))?(?:\+([a-z0-9-.]+))?)?)?$/i,_=/^\s*([a-z0-9-+.*]+)\s+-\s+([a-z0-9-+.*]+)\s*$/i,d=/^\s*(~|\^|<|<=|>|>=|=)?\s*([a-z0-9-+.*]+)$/i;function p(e){for(var t=[],r=0,n=e.trim().split(c);r<n.length;r++){var i=n[r];if(i){var a=[],o=_.exec(i);if(o){if(!m(o[1],o[2],a))return}else for(var s=0,l=i.split(u);s<l.length;s++){var p=l[s],f=d.exec(p);if(!f||!g(f[1],f[2],a))return}t.push(a)}}return t}function f(e){var t=l.exec(e);if(t){var r=t[1],n=t[2],i=void 0===n?"*":n,o=t[3],s=void 0===o?"*":o,c=t[4],u=t[5];return{version:new a(y(r)?0:parseInt(r,10),y(r)||y(i)?0:parseInt(i,10),y(r)||y(i)||y(s)?0:parseInt(s,10),c,u),major:r,minor:i,patch:s}}}function m(e,t,r){var n=f(e);if(!n)return!1;var i=f(t);return!!i&&(y(n.major)||r.push(h(">=",n.version)),y(i.major)||r.push(y(i.minor)?h("<",i.version.increment("major")):y(i.patch)?h("<",i.version.increment("minor")):h("<=",i.version)),!0)}function g(e,t,r){var n=f(t);if(!n)return!1;var i=n.version,o=n.major,s=n.minor,c=n.patch;if(y(o))"<"!==e&&">"!==e||r.push(h("<",a.zero));else switch(e){case"~":r.push(h(">=",i)),r.push(h("<",i.increment(y(s)?"major":"minor")));break;case"^":r.push(h(">=",i)),r.push(h("<",i.increment(i.major>0||y(s)?"major":i.minor>0||y(c)?"minor":"patch")));break;case"<":case">=":r.push(h(e,i));break;case"<=":case">":r.push(y(s)?h("<="===e?"<":">=",i.increment("major")):y(c)?h("<="===e?"<":">=",i.increment("minor")):h(e,i));break;case"=":case void 0:y(s)||y(c)?(r.push(h(">=",i)),r.push(h("<",i.increment(y(s)?"major":"minor")))):r.push(h("=",i));break;default:return!1}return!0}function y(e){return"*"===e||"x"===e||"X"===e}function h(e,t){return{operator:e,operand:t}}function v(e,t){for(var r=0,n=t;r<n.length;r++){var i=n[r];if(!b(e,i.operator,i.operand))return!1}return!0}function b(t,r,n){var i=t.compareTo(n);switch(r){case"<":return i<0;case"<=":return i<=0;case">":return i>0;case">=":return i>=0;case"=":return 0===i;default:return e.Debug.assertNever(r)}}function x(t){return e.map(t,D).join(" ")}function D(e){return""+e.operator+e.operand}}(s||(s={})),function(e){!function(e){e[e.Unknown=0]="Unknown",e[e.EndOfFileToken=1]="EndOfFileToken",e[e.SingleLineCommentTrivia=2]="SingleLineCommentTrivia",e[e.MultiLineCommentTrivia=3]="MultiLineCommentTrivia",e[e.NewLineTrivia=4]="NewLineTrivia",e[e.WhitespaceTrivia=5]="WhitespaceTrivia",e[e.ShebangTrivia=6]="ShebangTrivia",e[e.ConflictMarkerTrivia=7]="ConflictMarkerTrivia",e[e.NumericLiteral=8]="NumericLiteral",e[e.BigIntLiteral=9]="BigIntLiteral",e[e.StringLiteral=10]="StringLiteral",e[e.JsxText=11]="JsxText",e[e.JsxTextAllWhiteSpaces=12]="JsxTextAllWhiteSpaces",e[e.RegularExpressionLiteral=13]="RegularExpressionLiteral",e[e.NoSubstitutionTemplateLiteral=14]="NoSubstitutionTemplateLiteral",e[e.TemplateHead=15]="TemplateHead",e[e.TemplateMiddle=16]="TemplateMiddle",e[e.TemplateTail=17]="TemplateTail",e[e.OpenBraceToken=18]="OpenBraceToken",e[e.CloseBraceToken=19]="CloseBraceToken",e[e.OpenParenToken=20]="OpenParenToken",e[e.CloseParenToken=21]="CloseParenToken",e[e.OpenBracketToken=22]="OpenBracketToken",e[e.CloseBracketToken=23]="CloseBracketToken",e[e.DotToken=24]="DotToken",e[e.DotDotDotToken=25]="DotDotDotToken",e[e.SemicolonToken=26]="SemicolonToken",e[e.CommaToken=27]="CommaToken",e[e.QuestionDotToken=28]="QuestionDotToken",e[e.LessThanToken=29]="LessThanToken",e[e.LessThanSlashToken=30]="LessThanSlashToken",e[e.GreaterThanToken=31]="GreaterThanToken",e[e.LessThanEqualsToken=32]="LessThanEqualsToken",e[e.GreaterThanEqualsToken=33]="GreaterThanEqualsToken",e[e.EqualsEqualsToken=34]="EqualsEqualsToken",e[e.ExclamationEqualsToken=35]="ExclamationEqualsToken",e[e.EqualsEqualsEqualsToken=36]="EqualsEqualsEqualsToken",e[e.ExclamationEqualsEqualsToken=37]="ExclamationEqualsEqualsToken",e[e.EqualsGreaterThanToken=38]="EqualsGreaterThanToken",e[e.PlusToken=39]="PlusToken",e[e.MinusToken=40]="MinusToken",e[e.AsteriskToken=41]="AsteriskToken",e[e.AsteriskAsteriskToken=42]="AsteriskAsteriskToken",e[e.SlashToken=43]="SlashToken",e[e.PercentToken=44]="PercentToken",e[e.PlusPlusToken=45]="PlusPlusToken",e[e.MinusMinusToken=46]="MinusMinusToken",e[e.LessThanLessThanToken=47]="LessThanLessThanToken",e[e.GreaterThanGreaterThanToken=48]="GreaterThanGreaterThanToken",e[e.GreaterThanGreaterThanGreaterThanToken=49]="GreaterThanGreaterThanGreaterThanToken",e[e.AmpersandToken=50]="AmpersandToken",e[e.BarToken=51]="BarToken",e[e.CaretToken=52]="CaretToken",e[e.ExclamationToken=53]="ExclamationToken",e[e.TildeToken=54]="TildeToken",e[e.AmpersandAmpersandToken=55]="AmpersandAmpersandToken",e[e.BarBarToken=56]="BarBarToken",e[e.QuestionToken=57]="QuestionToken",e[e.ColonToken=58]="ColonToken",e[e.AtToken=59]="AtToken",e[e.QuestionQuestionToken=60]="QuestionQuestionToken",e[e.BacktickToken=61]="BacktickToken",e[e.EqualsToken=62]="EqualsToken",e[e.PlusEqualsToken=63]="PlusEqualsToken",e[e.MinusEqualsToken=64]="MinusEqualsToken",e[e.AsteriskEqualsToken=65]="AsteriskEqualsToken",e[e.AsteriskAsteriskEqualsToken=66]="AsteriskAsteriskEqualsToken",e[e.SlashEqualsToken=67]="SlashEqualsToken",e[e.PercentEqualsToken=68]="PercentEqualsToken",e[e.LessThanLessThanEqualsToken=69]="LessThanLessThanEqualsToken",e[e.GreaterThanGreaterThanEqualsToken=70]="GreaterThanGreaterThanEqualsToken",e[e.GreaterThanGreaterThanGreaterThanEqualsToken=71]="GreaterThanGreaterThanGreaterThanEqualsToken",e[e.AmpersandEqualsToken=72]="AmpersandEqualsToken",e[e.BarEqualsToken=73]="BarEqualsToken",e[e.CaretEqualsToken=74]="CaretEqualsToken",e[e.Identifier=75]="Identifier",e[e.BreakKeyword=76]="BreakKeyword",e[e.CaseKeyword=77]="CaseKeyword",e[e.CatchKeyword=78]="CatchKeyword",e[e.ClassKeyword=79]="ClassKeyword",e[e.ConstKeyword=80]="ConstKeyword",e[e.ContinueKeyword=81]="ContinueKeyword",e[e.DebuggerKeyword=82]="DebuggerKeyword",e[e.DefaultKeyword=83]="DefaultKeyword",e[e.DeleteKeyword=84]="DeleteKeyword",e[e.DoKeyword=85]="DoKeyword",e[e.ElseKeyword=86]="ElseKeyword",e[e.EnumKeyword=87]="EnumKeyword",e[e.ExportKeyword=88]="ExportKeyword",e[e.ExtendsKeyword=89]="ExtendsKeyword",e[e.FalseKeyword=90]="FalseKeyword",e[e.FinallyKeyword=91]="FinallyKeyword",e[e.ForKeyword=92]="ForKeyword",e[e.FunctionKeyword=93]="FunctionKeyword",e[e.IfKeyword=94]="IfKeyword",e[e.ImportKeyword=95]="ImportKeyword",e[e.InKeyword=96]="InKeyword",e[e.InstanceOfKeyword=97]="InstanceOfKeyword",e[e.NewKeyword=98]="NewKeyword",e[e.NullKeyword=99]="NullKeyword",e[e.ReturnKeyword=100]="ReturnKeyword",e[e.SuperKeyword=101]="SuperKeyword",e[e.SwitchKeyword=102]="SwitchKeyword",e[e.ThisKeyword=103]="ThisKeyword",e[e.ThrowKeyword=104]="ThrowKeyword",e[e.TrueKeyword=105]="TrueKeyword",e[e.TryKeyword=106]="TryKeyword",e[e.TypeOfKeyword=107]="TypeOfKeyword",e[e.VarKeyword=108]="VarKeyword",e[e.VoidKeyword=109]="VoidKeyword",e[e.WhileKeyword=110]="WhileKeyword",e[e.WithKeyword=111]="WithKeyword",e[e.ImplementsKeyword=112]="ImplementsKeyword",e[e.InterfaceKeyword=113]="InterfaceKeyword",e[e.LetKeyword=114]="LetKeyword",e[e.PackageKeyword=115]="PackageKeyword",e[e.PrivateKeyword=116]="PrivateKeyword",e[e.ProtectedKeyword=117]="ProtectedKeyword",e[e.PublicKeyword=118]="PublicKeyword",e[e.StaticKeyword=119]="StaticKeyword",e[e.YieldKeyword=120]="YieldKeyword",e[e.AbstractKeyword=121]="AbstractKeyword",e[e.AsKeyword=122]="AsKeyword",e[e.AssertsKeyword=123]="AssertsKeyword",e[e.AnyKeyword=124]="AnyKeyword",e[e.AsyncKeyword=125]="AsyncKeyword",e[e.AwaitKeyword=126]="AwaitKeyword",e[e.BooleanKeyword=127]="BooleanKeyword",e[e.ConstructorKeyword=128]="ConstructorKeyword",e[e.DeclareKeyword=129]="DeclareKeyword",e[e.GetKeyword=130]="GetKeyword",e[e.InferKeyword=131]="InferKeyword",e[e.IsKeyword=132]="IsKeyword",e[e.KeyOfKeyword=133]="KeyOfKeyword",e[e.ModuleKeyword=134]="ModuleKeyword",e[e.NamespaceKeyword=135]="NamespaceKeyword",e[e.NeverKeyword=136]="NeverKeyword",e[e.ReadonlyKeyword=137]="ReadonlyKeyword",e[e.RequireKeyword=138]="RequireKeyword",e[e.NumberKeyword=139]="NumberKeyword",e[e.ObjectKeyword=140]="ObjectKeyword",e[e.SetKeyword=141]="SetKeyword",e[e.StringKeyword=142]="StringKeyword",e[e.SymbolKeyword=143]="SymbolKeyword",e[e.TypeKeyword=144]="TypeKeyword",e[e.UndefinedKeyword=145]="UndefinedKeyword",e[e.UniqueKeyword=146]="UniqueKeyword",e[e.UnknownKeyword=147]="UnknownKeyword",e[e.FromKeyword=148]="FromKeyword",e[e.GlobalKeyword=149]="GlobalKeyword",e[e.BigIntKeyword=150]="BigIntKeyword",e[e.OfKeyword=151]="OfKeyword",e[e.QualifiedName=152]="QualifiedName",e[e.ComputedPropertyName=153]="ComputedPropertyName",e[e.TypeParameter=154]="TypeParameter",e[e.Parameter=155]="Parameter",e[e.Decorator=156]="Decorator",e[e.PropertySignature=157]="PropertySignature",e[e.PropertyDeclaration=158]="PropertyDeclaration",e[e.MethodSignature=159]="MethodSignature",e[e.MethodDeclaration=160]="MethodDeclaration",e[e.Constructor=161]="Constructor",e[e.GetAccessor=162]="GetAccessor",e[e.SetAccessor=163]="SetAccessor",e[e.CallSignature=164]="CallSignature",e[e.ConstructSignature=165]="ConstructSignature",e[e.IndexSignature=166]="IndexSignature",e[e.TypePredicate=167]="TypePredicate",e[e.TypeReference=168]="TypeReference",e[e.FunctionType=169]="FunctionType",e[e.ConstructorType=170]="ConstructorType",e[e.TypeQuery=171]="TypeQuery",e[e.TypeLiteral=172]="TypeLiteral",e[e.ArrayType=173]="ArrayType",e[e.TupleType=174]="TupleType",e[e.OptionalType=175]="OptionalType",e[e.RestType=176]="RestType",e[e.UnionType=177]="UnionType",e[e.IntersectionType=178]="IntersectionType",e[e.ConditionalType=179]="ConditionalType",e[e.InferType=180]="InferType",e[e.ParenthesizedType=181]="ParenthesizedType",e[e.ThisType=182]="ThisType",e[e.TypeOperator=183]="TypeOperator",e[e.IndexedAccessType=184]="IndexedAccessType",e[e.MappedType=185]="MappedType",e[e.LiteralType=186]="LiteralType",e[e.ImportType=187]="ImportType",e[e.ObjectBindingPattern=188]="ObjectBindingPattern",e[e.ArrayBindingPattern=189]="ArrayBindingPattern",e[e.BindingElement=190]="BindingElement",e[e.ArrayLiteralExpression=191]="ArrayLiteralExpression",e[e.ObjectLiteralExpression=192]="ObjectLiteralExpression",e[e.PropertyAccessExpression=193]="PropertyAccessExpression",e[e.ElementAccessExpression=194]="ElementAccessExpression",e[e.CallExpression=195]="CallExpression",e[e.NewExpression=196]="NewExpression",e[e.TaggedTemplateExpression=197]="TaggedTemplateExpression",e[e.TypeAssertionExpression=198]="TypeAssertionExpression",e[e.ParenthesizedExpression=199]="ParenthesizedExpression",e[e.FunctionExpression=200]="FunctionExpression",e[e.ArrowFunction=201]="ArrowFunction",e[e.DeleteExpression=202]="DeleteExpression",e[e.TypeOfExpression=203]="TypeOfExpression",e[e.VoidExpression=204]="VoidExpression",e[e.AwaitExpression=205]="AwaitExpression",e[e.PrefixUnaryExpression=206]="PrefixUnaryExpression",e[e.PostfixUnaryExpression=207]="PostfixUnaryExpression",e[e.BinaryExpression=208]="BinaryExpression",e[e.ConditionalExpression=209]="ConditionalExpression",e[e.TemplateExpression=210]="TemplateExpression",e[e.YieldExpression=211]="YieldExpression",e[e.SpreadElement=212]="SpreadElement",e[e.ClassExpression=213]="ClassExpression",e[e.OmittedExpression=214]="OmittedExpression",e[e.ExpressionWithTypeArguments=215]="ExpressionWithTypeArguments",e[e.AsExpression=216]="AsExpression",e[e.NonNullExpression=217]="NonNullExpression",e[e.MetaProperty=218]="MetaProperty",e[e.SyntheticExpression=219]="SyntheticExpression",e[e.TemplateSpan=220]="TemplateSpan",e[e.SemicolonClassElement=221]="SemicolonClassElement",e[e.Block=222]="Block",e[e.EmptyStatement=223]="EmptyStatement",e[e.VariableStatement=224]="VariableStatement",e[e.ExpressionStatement=225]="ExpressionStatement",e[e.IfStatement=226]="IfStatement",e[e.DoStatement=227]="DoStatement",e[e.WhileStatement=228]="WhileStatement",e[e.ForStatement=229]="ForStatement",e[e.ForInStatement=230]="ForInStatement",e[e.ForOfStatement=231]="ForOfStatement",e[e.ContinueStatement=232]="ContinueStatement",e[e.BreakStatement=233]="BreakStatement",e[e.ReturnStatement=234]="ReturnStatement",e[e.WithStatement=235]="WithStatement",e[e.SwitchStatement=236]="SwitchStatement",e[e.LabeledStatement=237]="LabeledStatement",e[e.ThrowStatement=238]="ThrowStatement",e[e.TryStatement=239]="TryStatement",e[e.DebuggerStatement=240]="DebuggerStatement",e[e.VariableDeclaration=241]="VariableDeclaration",e[e.VariableDeclarationList=242]="VariableDeclarationList",e[e.FunctionDeclaration=243]="FunctionDeclaration",e[e.ClassDeclaration=244]="ClassDeclaration",e[e.InterfaceDeclaration=245]="InterfaceDeclaration",e[e.TypeAliasDeclaration=246]="TypeAliasDeclaration",e[e.EnumDeclaration=247]="EnumDeclaration",e[e.ModuleDeclaration=248]="ModuleDeclaration",e[e.ModuleBlock=249]="ModuleBlock",e[e.CaseBlock=250]="CaseBlock",e[e.NamespaceExportDeclaration=251]="NamespaceExportDeclaration",e[e.ImportEqualsDeclaration=252]="ImportEqualsDeclaration",e[e.ImportDeclaration=253]="ImportDeclaration",e[e.ImportClause=254]="ImportClause",e[e.NamespaceImport=255]="NamespaceImport",e[e.NamedImports=256]="NamedImports",e[e.ImportSpecifier=257]="ImportSpecifier",e[e.ExportAssignment=258]="ExportAssignment",e[e.ExportDeclaration=259]="ExportDeclaration",e[e.NamedExports=260]="NamedExports",e[e.ExportSpecifier=261]="ExportSpecifier",e[e.MissingDeclaration=262]="MissingDeclaration",e[e.ExternalModuleReference=263]="ExternalModuleReference",e[e.JsxElement=264]="JsxElement",e[e.JsxSelfClosingElement=265]="JsxSelfClosingElement",e[e.JsxOpeningElement=266]="JsxOpeningElement",e[e.JsxClosingElement=267]="JsxClosingElement",e[e.JsxFragment=268]="JsxFragment",e[e.JsxOpeningFragment=269]="JsxOpeningFragment",e[e.JsxClosingFragment=270]="JsxClosingFragment",e[e.JsxAttribute=271]="JsxAttribute",e[e.JsxAttributes=272]="JsxAttributes",e[e.JsxSpreadAttribute=273]="JsxSpreadAttribute",e[e.JsxExpression=274]="JsxExpression",e[e.CaseClause=275]="CaseClause",e[e.DefaultClause=276]="DefaultClause",e[e.HeritageClause=277]="HeritageClause",e[e.CatchClause=278]="CatchClause",e[e.PropertyAssignment=279]="PropertyAssignment",e[e.ShorthandPropertyAssignment=280]="ShorthandPropertyAssignment",e[e.SpreadAssignment=281]="SpreadAssignment",e[e.EnumMember=282]="EnumMember",e[e.UnparsedPrologue=283]="UnparsedPrologue",e[e.UnparsedPrepend=284]="UnparsedPrepend",e[e.UnparsedText=285]="UnparsedText",e[e.UnparsedInternalText=286]="UnparsedInternalText",e[e.UnparsedSyntheticReference=287]="UnparsedSyntheticReference",e[e.SourceFile=288]="SourceFile",e[e.Bundle=289]="Bundle",e[e.UnparsedSource=290]="UnparsedSource",e[e.InputFiles=291]="InputFiles",e[e.JSDocTypeExpression=292]="JSDocTypeExpression",e[e.JSDocAllType=293]="JSDocAllType",e[e.JSDocUnknownType=294]="JSDocUnknownType",e[e.JSDocNullableType=295]="JSDocNullableType",e[e.JSDocNonNullableType=296]="JSDocNonNullableType",e[e.JSDocOptionalType=297]="JSDocOptionalType",e[e.JSDocFunctionType=298]="JSDocFunctionType",e[e.JSDocVariadicType=299]="JSDocVariadicType",e[e.JSDocNamepathType=300]="JSDocNamepathType",e[e.JSDocComment=301]="JSDocComment",e[e.JSDocTypeLiteral=302]="JSDocTypeLiteral",e[e.JSDocSignature=303]="JSDocSignature",e[e.JSDocTag=304]="JSDocTag",e[e.JSDocAugmentsTag=305]="JSDocAugmentsTag",e[e.JSDocAuthorTag=306]="JSDocAuthorTag",e[e.JSDocClassTag=307]="JSDocClassTag",e[e.JSDocCallbackTag=308]="JSDocCallbackTag",e[e.JSDocEnumTag=309]="JSDocEnumTag",e[e.JSDocParameterTag=310]="JSDocParameterTag",e[e.JSDocReturnTag=311]="JSDocReturnTag",e[e.JSDocThisTag=312]="JSDocThisTag",e[e.JSDocTypeTag=313]="JSDocTypeTag",e[e.JSDocTemplateTag=314]="JSDocTemplateTag",e[e.JSDocTypedefTag=315]="JSDocTypedefTag",e[e.JSDocPropertyTag=316]="JSDocPropertyTag",e[e.SyntaxList=317]="SyntaxList",e[e.NotEmittedStatement=318]="NotEmittedStatement",e[e.PartiallyEmittedExpression=319]="PartiallyEmittedExpression",e[e.CommaListExpression=320]="CommaListExpression",e[e.MergeDeclarationMarker=321]="MergeDeclarationMarker",e[e.EndOfDeclarationMarker=322]="EndOfDeclarationMarker",e[e.SyntheticReferenceExpression=323]="SyntheticReferenceExpression",e[e.Count=324]="Count",e[e.FirstAssignment=62]="FirstAssignment",e[e.LastAssignment=74]="LastAssignment",e[e.FirstCompoundAssignment=63]="FirstCompoundAssignment",e[e.LastCompoundAssignment=74]="LastCompoundAssignment",e[e.FirstReservedWord=76]="FirstReservedWord",e[e.LastReservedWord=111]="LastReservedWord",e[e.FirstKeyword=76]="FirstKeyword",e[e.LastKeyword=151]="LastKeyword",e[e.FirstFutureReservedWord=112]="FirstFutureReservedWord",e[e.LastFutureReservedWord=120]="LastFutureReservedWord",e[e.FirstTypeNode=167]="FirstTypeNode",e[e.LastTypeNode=187]="LastTypeNode",e[e.FirstPunctuation=18]="FirstPunctuation",e[e.LastPunctuation=74]="LastPunctuation",e[e.FirstToken=0]="FirstToken",e[e.LastToken=151]="LastToken",e[e.FirstTriviaToken=2]="FirstTriviaToken",e[e.LastTriviaToken=7]="LastTriviaToken",e[e.FirstLiteralToken=8]="FirstLiteralToken",e[e.LastLiteralToken=14]="LastLiteralToken",e[e.FirstTemplateToken=14]="FirstTemplateToken",e[e.LastTemplateToken=17]="LastTemplateToken",e[e.FirstBinaryOperator=29]="FirstBinaryOperator",e[e.LastBinaryOperator=74]="LastBinaryOperator",e[e.FirstStatement=224]="FirstStatement",e[e.LastStatement=240]="LastStatement",e[e.FirstNode=152]="FirstNode",e[e.FirstJSDocNode=292]="FirstJSDocNode",e[e.LastJSDocNode=316]="LastJSDocNode",e[e.FirstJSDocTagNode=304]="FirstJSDocTagNode",e[e.LastJSDocTagNode=316]="LastJSDocTagNode",e[e.FirstContextualKeyword=121]="FirstContextualKeyword",e[e.LastContextualKeyword=151]="LastContextualKeyword"}(e.SyntaxKind||(e.SyntaxKind={})),function(e){e[e.None=0]="None",e[e.Let=1]="Let",e[e.Const=2]="Const",e[e.NestedNamespace=4]="NestedNamespace",e[e.Synthesized=8]="Synthesized",e[e.Namespace=16]="Namespace",e[e.OptionalChain=32]="OptionalChain",e[e.ExportContext=64]="ExportContext",e[e.ContainsThis=128]="ContainsThis",e[e.HasImplicitReturn=256]="HasImplicitReturn",e[e.HasExplicitReturn=512]="HasExplicitReturn",e[e.GlobalAugmentation=1024]="GlobalAugmentation",e[e.HasAsyncFunctions=2048]="HasAsyncFunctions",e[e.DisallowInContext=4096]="DisallowInContext",e[e.YieldContext=8192]="YieldContext",e[e.DecoratorContext=16384]="DecoratorContext",e[e.AwaitContext=32768]="AwaitContext",e[e.ThisNodeHasError=65536]="ThisNodeHasError",e[e.JavaScriptFile=131072]="JavaScriptFile",e[e.ThisNodeOrAnySubNodesHasError=262144]="ThisNodeOrAnySubNodesHasError",e[e.HasAggregatedChildData=524288]="HasAggregatedChildData",e[e.PossiblyContainsDynamicImport=1048576]="PossiblyContainsDynamicImport",e[e.PossiblyContainsImportMeta=2097152]="PossiblyContainsImportMeta",e[e.JSDoc=4194304]="JSDoc",e[e.Ambient=8388608]="Ambient",e[e.InWithStatement=16777216]="InWithStatement",e[e.JsonFile=33554432]="JsonFile",e[e.BlockScoped=3]="BlockScoped",e[e.ReachabilityCheckFlags=768]="ReachabilityCheckFlags",e[e.ReachabilityAndEmitFlags=2816]="ReachabilityAndEmitFlags",e[e.ContextFlags=25358336]="ContextFlags",e[e.TypeExcludesFlags=40960]="TypeExcludesFlags",e[e.PermanentlySetIncrementalFlags=3145728]="PermanentlySetIncrementalFlags"}(e.NodeFlags||(e.NodeFlags={})),function(e){e[e.None=0]="None",e[e.Export=1]="Export",e[e.Ambient=2]="Ambient",e[e.Public=4]="Public",e[e.Private=8]="Private",e[e.Protected=16]="Protected",e[e.Static=32]="Static",e[e.Readonly=64]="Readonly",e[e.Abstract=128]="Abstract",e[e.Async=256]="Async",e[e.Default=512]="Default",e[e.Const=2048]="Const",e[e.HasComputedFlags=536870912]="HasComputedFlags",e[e.AccessibilityModifier=28]="AccessibilityModifier",e[e.ParameterPropertyModifier=92]="ParameterPropertyModifier",e[e.NonPublicAccessibilityModifier=24]="NonPublicAccessibilityModifier",e[e.TypeScriptModifier=2270]="TypeScriptModifier",e[e.ExportDefault=513]="ExportDefault",e[e.All=3071]="All"}(e.ModifierFlags||(e.ModifierFlags={})),function(e){e[e.None=0]="None",e[e.IntrinsicNamedElement=1]="IntrinsicNamedElement",e[e.IntrinsicIndexedElement=2]="IntrinsicIndexedElement",e[e.IntrinsicElement=3]="IntrinsicElement"}(e.JsxFlags||(e.JsxFlags={})),function(e){e[e.Succeeded=1]="Succeeded",e[e.Failed=2]="Failed",e[e.Reported=4]="Reported",e[e.ReportsUnmeasurable=8]="ReportsUnmeasurable",e[e.ReportsUnreliable=16]="ReportsUnreliable",e[e.ReportsMask=24]="ReportsMask"}(e.RelationComparisonResult||(e.RelationComparisonResult={})),function(e){e[e.None=0]="None",e[e.Auto=1]="Auto",e[e.Loop=2]="Loop",e[e.Unique=3]="Unique",e[e.Node=4]="Node",e[e.KindMask=7]="KindMask",e[e.ReservedInNestedScopes=8]="ReservedInNestedScopes",e[e.Optimistic=16]="Optimistic",e[e.FileLevel=32]="FileLevel"}(e.GeneratedIdentifierFlags||(e.GeneratedIdentifierFlags={})),function(e){e[e.None=0]="None",e[e.PrecedingLineBreak=1]="PrecedingLineBreak",e[e.PrecedingJSDocComment=2]="PrecedingJSDocComment",e[e.Unterminated=4]="Unterminated",e[e.ExtendedUnicodeEscape=8]="ExtendedUnicodeEscape",e[e.Scientific=16]="Scientific",e[e.Octal=32]="Octal",e[e.HexSpecifier=64]="HexSpecifier",e[e.BinarySpecifier=128]="BinarySpecifier",e[e.OctalSpecifier=256]="OctalSpecifier",e[e.ContainsSeparator=512]="ContainsSeparator",e[e.UnicodeEscape=1024]="UnicodeEscape",e[e.BinaryOrOctalSpecifier=384]="BinaryOrOctalSpecifier",e[e.NumericLiteralFlags=1008]="NumericLiteralFlags"}(e.TokenFlags||(e.TokenFlags={})),function(e){e[e.Unreachable=1]="Unreachable",e[e.Start=2]="Start",e[e.BranchLabel=4]="BranchLabel",e[e.LoopLabel=8]="LoopLabel",e[e.Assignment=16]="Assignment",e[e.TrueCondition=32]="TrueCondition",e[e.FalseCondition=64]="FalseCondition",e[e.SwitchClause=128]="SwitchClause",e[e.ArrayMutation=256]="ArrayMutation",e[e.Call=512]="Call",e[e.Referenced=1024]="Referenced",e[e.Shared=2048]="Shared",e[e.PreFinally=4096]="PreFinally",e[e.AfterFinally=8192]="AfterFinally",e[e.Cached=16384]="Cached",e[e.Label=12]="Label",e[e.Condition=96]="Condition"}(e.FlowFlags||(e.FlowFlags={}));var t,r=function(){};e.OperationCanceledException=r,function(e){e[e.Import=0]="Import",e[e.ReferenceFile=1]="ReferenceFile",e[e.TypeReferenceDirective=2]="TypeReferenceDirective"}(e.RefFileKind||(e.RefFileKind={})),function(e){e[e.Not=0]="Not",e[e.SafeModules=1]="SafeModules",e[e.Completely=2]="Completely"}(e.StructureIsReused||(e.StructureIsReused={})),function(e){e[e.Success=0]="Success",e[e.DiagnosticsPresent_OutputsSkipped=1]="DiagnosticsPresent_OutputsSkipped",e[e.DiagnosticsPresent_OutputsGenerated=2]="DiagnosticsPresent_OutputsGenerated",e[e.InvalidProject_OutputsSkipped=3]="InvalidProject_OutputsSkipped",e[e.ProjectReferenceCycle_OutputsSkipped=4]="ProjectReferenceCycle_OutputsSkipped",e[e.ProjectReferenceCycle_OutputsSkupped=4]="ProjectReferenceCycle_OutputsSkupped"}(e.ExitStatus||(e.ExitStatus={})),function(e){e[e.None=0]="None",e[e.Literal=1]="Literal",e[e.Subtype=2]="Subtype"}(e.UnionReduction||(e.UnionReduction={})),function(e){e[e.None=0]="None",e[e.Signature=1]="Signature",e[e.NoConstraints=2]="NoConstraints",e[e.Completion=4]="Completion"}(e.ContextFlags||(e.ContextFlags={})),function(e){e[e.None=0]="None",e[e.NoTruncation=1]="NoTruncation",e[e.WriteArrayAsGenericType=2]="WriteArrayAsGenericType",e[e.GenerateNamesForShadowedTypeParams=4]="GenerateNamesForShadowedTypeParams",e[e.UseStructuralFallback=8]="UseStructuralFallback",e[e.ForbidIndexedAccessSymbolReferences=16]="ForbidIndexedAccessSymbolReferences",e[e.WriteTypeArgumentsOfSignature=32]="WriteTypeArgumentsOfSignature",e[e.UseFullyQualifiedType=64]="UseFullyQualifiedType",e[e.UseOnlyExternalAliasing=128]="UseOnlyExternalAliasing",e[e.SuppressAnyReturnType=256]="SuppressAnyReturnType",e[e.WriteTypeParametersInQualifiedName=512]="WriteTypeParametersInQualifiedName",e[e.MultilineObjectLiterals=1024]="MultilineObjectLiterals",e[e.WriteClassExpressionAsTypeLiteral=2048]="WriteClassExpressionAsTypeLiteral",e[e.UseTypeOfFunction=4096]="UseTypeOfFunction",e[e.OmitParameterModifiers=8192]="OmitParameterModifiers",e[e.UseAliasDefinedOutsideCurrentScope=16384]="UseAliasDefinedOutsideCurrentScope",e[e.AllowThisInObjectLiteral=32768]="AllowThisInObjectLiteral",e[e.AllowQualifedNameInPlaceOfIdentifier=65536]="AllowQualifedNameInPlaceOfIdentifier",e[e.AllowAnonymousIdentifier=131072]="AllowAnonymousIdentifier",e[e.AllowEmptyUnionOrIntersection=262144]="AllowEmptyUnionOrIntersection",e[e.AllowEmptyTuple=524288]="AllowEmptyTuple",e[e.AllowUniqueESSymbolType=1048576]="AllowUniqueESSymbolType",e[e.AllowEmptyIndexInfoType=2097152]="AllowEmptyIndexInfoType",e[e.AllowNodeModulesRelativePaths=67108864]="AllowNodeModulesRelativePaths",e[e.DoNotIncludeSymbolChain=134217728]="DoNotIncludeSymbolChain",e[e.IgnoreErrors=70221824]="IgnoreErrors",e[e.InObjectTypeLiteral=4194304]="InObjectTypeLiteral",e[e.InTypeAlias=8388608]="InTypeAlias",e[e.InInitialEntityName=16777216]="InInitialEntityName",e[e.InReverseMappedType=33554432]="InReverseMappedType"}(e.NodeBuilderFlags||(e.NodeBuilderFlags={})),function(e){e[e.None=0]="None",e[e.NoTruncation=1]="NoTruncation",e[e.WriteArrayAsGenericType=2]="WriteArrayAsGenericType",e[e.UseStructuralFallback=8]="UseStructuralFallback",e[e.WriteTypeArgumentsOfSignature=32]="WriteTypeArgumentsOfSignature",e[e.UseFullyQualifiedType=64]="UseFullyQualifiedType",e[e.SuppressAnyReturnType=256]="SuppressAnyReturnType",e[e.MultilineObjectLiterals=1024]="MultilineObjectLiterals",e[e.WriteClassExpressionAsTypeLiteral=2048]="WriteClassExpressionAsTypeLiteral",e[e.UseTypeOfFunction=4096]="UseTypeOfFunction",e[e.OmitParameterModifiers=8192]="OmitParameterModifiers",e[e.UseAliasDefinedOutsideCurrentScope=16384]="UseAliasDefinedOutsideCurrentScope",e[e.AllowUniqueESSymbolType=1048576]="AllowUniqueESSymbolType",e[e.AddUndefined=131072]="AddUndefined",e[e.WriteArrowStyleSignature=262144]="WriteArrowStyleSignature",e[e.InArrayType=524288]="InArrayType",e[e.InElementType=2097152]="InElementType",e[e.InFirstTypeArgument=4194304]="InFirstTypeArgument",e[e.InTypeAlias=8388608]="InTypeAlias",e[e.WriteOwnNameForAnyLike=0]="WriteOwnNameForAnyLike",e[e.NodeBuilderFlagsMask=9469291]="NodeBuilderFlagsMask"}(e.TypeFormatFlags||(e.TypeFormatFlags={})),function(e){e[e.None=0]="None",e[e.WriteTypeParametersOrArguments=1]="WriteTypeParametersOrArguments",e[e.UseOnlyExternalAliasing=2]="UseOnlyExternalAliasing",e[e.AllowAnyNodeKind=4]="AllowAnyNodeKind",e[e.UseAliasDefinedOutsideCurrentScope=8]="UseAliasDefinedOutsideCurrentScope",e[e.DoNotIncludeSymbolChain=16]="DoNotIncludeSymbolChain"}(e.SymbolFormatFlags||(e.SymbolFormatFlags={})),function(e){e[e.Accessible=0]="Accessible",e[e.NotAccessible=1]="NotAccessible",e[e.CannotBeNamed=2]="CannotBeNamed"}(e.SymbolAccessibility||(e.SymbolAccessibility={})),function(e){e[e.UnionOrIntersection=0]="UnionOrIntersection",e[e.Spread=1]="Spread"}(e.SyntheticSymbolKind||(e.SyntheticSymbolKind={})),function(e){e[e.This=0]="This",e[e.Identifier=1]="Identifier",e[e.AssertsThis=2]="AssertsThis",e[e.AssertsIdentifier=3]="AssertsIdentifier"}(e.TypePredicateKind||(e.TypePredicateKind={})),function(e){e[e.Unknown=0]="Unknown",e[e.TypeWithConstructSignatureAndValue=1]="TypeWithConstructSignatureAndValue",e[e.VoidNullableOrNeverType=2]="VoidNullableOrNeverType",e[e.NumberLikeType=3]="NumberLikeType",e[e.BigIntLikeType=4]="BigIntLikeType",e[e.StringLikeType=5]="StringLikeType",e[e.BooleanType=6]="BooleanType",e[e.ArrayLikeType=7]="ArrayLikeType",e[e.ESSymbolType=8]="ESSymbolType",e[e.Promise=9]="Promise",e[e.TypeWithCallSignature=10]="TypeWithCallSignature",e[e.ObjectType=11]="ObjectType"}(e.TypeReferenceSerializationKind||(e.TypeReferenceSerializationKind={})),function(e){e[e.None=0]="None",e[e.FunctionScopedVariable=1]="FunctionScopedVariable",e[e.BlockScopedVariable=2]="BlockScopedVariable",e[e.Property=4]="Property",e[e.EnumMember=8]="EnumMember",e[e.Function=16]="Function",e[e.Class=32]="Class",e[e.Interface=64]="Interface",e[e.ConstEnum=128]="ConstEnum",e[e.RegularEnum=256]="RegularEnum",e[e.ValueModule=512]="ValueModule",e[e.NamespaceModule=1024]="NamespaceModule",e[e.TypeLiteral=2048]="TypeLiteral",e[e.ObjectLiteral=4096]="ObjectLiteral",e[e.Method=8192]="Method",e[e.Constructor=16384]="Constructor",e[e.GetAccessor=32768]="GetAccessor",e[e.SetAccessor=65536]="SetAccessor",e[e.Signature=131072]="Signature",e[e.TypeParameter=262144]="TypeParameter",e[e.TypeAlias=524288]="TypeAlias",e[e.ExportValue=1048576]="ExportValue",e[e.Alias=2097152]="Alias",e[e.Prototype=4194304]="Prototype",e[e.ExportStar=8388608]="ExportStar",e[e.Optional=16777216]="Optional",e[e.Transient=33554432]="Transient",e[e.Assignment=67108864]="Assignment",e[e.ModuleExports=134217728]="ModuleExports",e[e.All=67108863]="All",e[e.Enum=384]="Enum",e[e.Variable=3]="Variable",e[e.Value=111551]="Value",e[e.Type=788968]="Type",e[e.Namespace=1920]="Namespace",e[e.Module=1536]="Module",e[e.Accessor=98304]="Accessor",e[e.FunctionScopedVariableExcludes=111550]="FunctionScopedVariableExcludes",e[e.BlockScopedVariableExcludes=111551]="BlockScopedVariableExcludes",e[e.ParameterExcludes=111551]="ParameterExcludes",e[e.PropertyExcludes=0]="PropertyExcludes",e[e.EnumMemberExcludes=900095]="EnumMemberExcludes",e[e.FunctionExcludes=110991]="FunctionExcludes",e[e.ClassExcludes=899503]="ClassExcludes",e[e.InterfaceExcludes=788872]="InterfaceExcludes",e[e.RegularEnumExcludes=899327]="RegularEnumExcludes",e[e.ConstEnumExcludes=899967]="ConstEnumExcludes",e[e.ValueModuleExcludes=110735]="ValueModuleExcludes",e[e.NamespaceModuleExcludes=0]="NamespaceModuleExcludes",e[e.MethodExcludes=103359]="MethodExcludes",e[e.GetAccessorExcludes=46015]="GetAccessorExcludes",e[e.SetAccessorExcludes=78783]="SetAccessorExcludes",e[e.TypeParameterExcludes=526824]="TypeParameterExcludes",e[e.TypeAliasExcludes=788968]="TypeAliasExcludes",e[e.AliasExcludes=2097152]="AliasExcludes",e[e.ModuleMember=2623475]="ModuleMember",e[e.ExportHasLocal=944]="ExportHasLocal",e[e.BlockScoped=418]="BlockScoped",e[e.PropertyOrAccessor=98308]="PropertyOrAccessor",e[e.ClassMember=106500]="ClassMember",e[e.ExportSupportsDefaultModifier=112]="ExportSupportsDefaultModifier",e[e.ExportDoesNotSupportDefaultModifier=-113]="ExportDoesNotSupportDefaultModifier",e[e.Classifiable=2885600]="Classifiable",e[e.LateBindingContainer=6256]="LateBindingContainer"}(e.SymbolFlags||(e.SymbolFlags={})),function(e){e[e.Numeric=0]="Numeric",e[e.Literal=1]="Literal"}(e.EnumKind||(e.EnumKind={})),function(e){e[e.Instantiated=1]="Instantiated",e[e.SyntheticProperty=2]="SyntheticProperty",e[e.SyntheticMethod=4]="SyntheticMethod",e[e.Readonly=8]="Readonly",e[e.ReadPartial=16]="ReadPartial",e[e.WritePartial=32]="WritePartial",e[e.HasNonUniformType=64]="HasNonUniformType",e[e.HasLiteralType=128]="HasLiteralType",e[e.ContainsPublic=256]="ContainsPublic",e[e.ContainsProtected=512]="ContainsProtected",e[e.ContainsPrivate=1024]="ContainsPrivate",e[e.ContainsStatic=2048]="ContainsStatic",e[e.Late=4096]="Late",e[e.ReverseMapped=8192]="ReverseMapped",e[e.OptionalParameter=16384]="OptionalParameter",e[e.RestParameter=32768]="RestParameter",e[e.DeferredType=65536]="DeferredType",e[e.Synthetic=6]="Synthetic",e[e.Discriminant=192]="Discriminant",e[e.Partial=48]="Partial"}(e.CheckFlags||(e.CheckFlags={})),function(e){e.Call="__call",e.Constructor="__constructor",e.New="__new",e.Index="__index",e.ExportStar="__export",e.Global="__global",e.Missing="__missing",e.Type="__type",e.Object="__object",e.JSXAttributes="__jsxAttributes",e.Class="__class",e.Function="__function",e.Computed="__computed",e.Resolving="__resolving__",e.ExportEquals="export=",e.Default="default",e.This="this"}(e.InternalSymbolName||(e.InternalSymbolName={})),function(e){e[e.TypeChecked=1]="TypeChecked",e[e.LexicalThis=2]="LexicalThis",e[e.CaptureThis=4]="CaptureThis",e[e.CaptureNewTarget=8]="CaptureNewTarget",e[e.SuperInstance=256]="SuperInstance",e[e.SuperStatic=512]="SuperStatic",e[e.ContextChecked=1024]="ContextChecked",e[e.AsyncMethodWithSuper=2048]="AsyncMethodWithSuper",e[e.AsyncMethodWithSuperBinding=4096]="AsyncMethodWithSuperBinding",e[e.CaptureArguments=8192]="CaptureArguments",e[e.EnumValuesComputed=16384]="EnumValuesComputed",e[e.LexicalModuleMergesWithClass=32768]="LexicalModuleMergesWithClass",e[e.LoopWithCapturedBlockScopedBinding=65536]="LoopWithCapturedBlockScopedBinding",e[e.ContainsCapturedBlockScopeBinding=131072]="ContainsCapturedBlockScopeBinding",e[e.CapturedBlockScopedBinding=262144]="CapturedBlockScopedBinding",e[e.BlockScopedBindingInLoop=524288]="BlockScopedBindingInLoop",e[e.ClassWithBodyScopedClassBinding=1048576]="ClassWithBodyScopedClassBinding",e[e.BodyScopedClassBinding=2097152]="BodyScopedClassBinding",e[e.NeedsLoopOutParameter=4194304]="NeedsLoopOutParameter",e[e.AssignmentsMarked=8388608]="AssignmentsMarked",e[e.ClassWithConstructorReference=16777216]="ClassWithConstructorReference",e[e.ConstructorReferenceInClass=33554432]="ConstructorReferenceInClass"}(e.NodeCheckFlags||(e.NodeCheckFlags={})),function(e){e[e.Any=1]="Any",e[e.Unknown=2]="Unknown",e[e.String=4]="String",e[e.Number=8]="Number",e[e.Boolean=16]="Boolean",e[e.Enum=32]="Enum",e[e.BigInt=64]="BigInt",e[e.StringLiteral=128]="StringLiteral",e[e.NumberLiteral=256]="NumberLiteral",e[e.BooleanLiteral=512]="BooleanLiteral",e[e.EnumLiteral=1024]="EnumLiteral",e[e.BigIntLiteral=2048]="BigIntLiteral",e[e.ESSymbol=4096]="ESSymbol",e[e.UniqueESSymbol=8192]="UniqueESSymbol",e[e.Void=16384]="Void",e[e.Undefined=32768]="Undefined",e[e.Null=65536]="Null",e[e.Never=131072]="Never",e[e.TypeParameter=262144]="TypeParameter",e[e.Object=524288]="Object",e[e.Union=1048576]="Union",e[e.Intersection=2097152]="Intersection",e[e.Index=4194304]="Index",e[e.IndexedAccess=8388608]="IndexedAccess",e[e.Conditional=16777216]="Conditional",e[e.Substitution=33554432]="Substitution",e[e.NonPrimitive=67108864]="NonPrimitive",e[e.AnyOrUnknown=3]="AnyOrUnknown",e[e.Nullable=98304]="Nullable",e[e.Literal=2944]="Literal",e[e.Unit=109440]="Unit",e[e.StringOrNumberLiteral=384]="StringOrNumberLiteral",e[e.StringOrNumberLiteralOrUnique=8576]="StringOrNumberLiteralOrUnique",e[e.DefinitelyFalsy=117632]="DefinitelyFalsy",e[e.PossiblyFalsy=117724]="PossiblyFalsy",e[e.Intrinsic=67359327]="Intrinsic",e[e.Primitive=131068]="Primitive",e[e.StringLike=132]="StringLike",e[e.NumberLike=296]="NumberLike",e[e.BigIntLike=2112]="BigIntLike",e[e.BooleanLike=528]="BooleanLike",e[e.EnumLike=1056]="EnumLike",e[e.ESSymbolLike=12288]="ESSymbolLike",e[e.VoidLike=49152]="VoidLike",e[e.DisjointDomains=67238908]="DisjointDomains",e[e.UnionOrIntersection=3145728]="UnionOrIntersection",e[e.StructuredType=3670016]="StructuredType",e[e.TypeVariable=8650752]="TypeVariable",e[e.InstantiableNonPrimitive=58982400]="InstantiableNonPrimitive",e[e.InstantiablePrimitive=4194304]="InstantiablePrimitive",e[e.Instantiable=63176704]="Instantiable",e[e.StructuredOrInstantiable=66846720]="StructuredOrInstantiable",e[e.ObjectFlagsType=3899392]="ObjectFlagsType",e[e.Simplifiable=25165824]="Simplifiable",e[e.Narrowable=133970943]="Narrowable",e[e.NotUnionOrUnit=67637251]="NotUnionOrUnit",e[e.NotPrimitiveUnion=66994211]="NotPrimitiveUnion",e[e.IncludesMask=68943871]="IncludesMask",e[e.IncludesStructuredOrInstantiable=262144]="IncludesStructuredOrInstantiable",e[e.IncludesNonWideningType=2097152]="IncludesNonWideningType",e[e.IncludesWildcard=4194304]="IncludesWildcard",e[e.IncludesEmptyObject=8388608]="IncludesEmptyObject",e[e.GenericMappedType=131072]="GenericMappedType"}(e.TypeFlags||(e.TypeFlags={})),function(e){e[e.Class=1]="Class",e[e.Interface=2]="Interface",e[e.Reference=4]="Reference",e[e.Tuple=8]="Tuple",e[e.Anonymous=16]="Anonymous",e[e.Mapped=32]="Mapped",e[e.Instantiated=64]="Instantiated",e[e.ObjectLiteral=128]="ObjectLiteral",e[e.EvolvingArray=256]="EvolvingArray",e[e.ObjectLiteralPatternWithComputedProperties=512]="ObjectLiteralPatternWithComputedProperties",e[e.ContainsSpread=1024]="ContainsSpread",e[e.ReverseMapped=2048]="ReverseMapped",e[e.JsxAttributes=4096]="JsxAttributes",e[e.MarkerType=8192]="MarkerType",e[e.JSLiteral=16384]="JSLiteral",e[e.FreshLiteral=32768]="FreshLiteral",e[e.ArrayLiteral=65536]="ArrayLiteral",e[e.PrimitiveUnion=131072]="PrimitiveUnion",e[e.ContainsWideningType=262144]="ContainsWideningType",e[e.ContainsObjectOrArrayLiteral=524288]="ContainsObjectOrArrayLiteral",e[e.NonInferrableType=1048576]="NonInferrableType",e[e.ClassOrInterface=3]="ClassOrInterface",e[e.RequiresWidening=786432]="RequiresWidening",e[e.PropagatingFlags=1835008]="PropagatingFlags"}(e.ObjectFlags||(e.ObjectFlags={})),function(e){e[e.Invariant=0]="Invariant",e[e.Covariant=1]="Covariant",e[e.Contravariant=2]="Contravariant",e[e.Bivariant=3]="Bivariant",e[e.Independent=4]="Independent",e[e.VarianceMask=7]="VarianceMask",e[e.Unmeasurable=8]="Unmeasurable",e[e.Unreliable=16]="Unreliable",e[e.AllowsStructuralFallback=24]="AllowsStructuralFallback"}(e.VarianceFlags||(e.VarianceFlags={})),function(e){e[e.Component=0]="Component",e[e.Function=1]="Function",e[e.Mixed=2]="Mixed"}(e.JsxReferenceKind||(e.JsxReferenceKind={})),function(e){e[e.Call=0]="Call",e[e.Construct=1]="Construct"}(e.SignatureKind||(e.SignatureKind={})),function(e){e[e.None=0]="None",e[e.HasRestParameter=1]="HasRestParameter",e[e.HasLiteralTypes=2]="HasLiteralTypes",e[e.IsOptionalCall=4]="IsOptionalCall",e[e.PropagatingFlags=3]="PropagatingFlags"}(e.SignatureFlags||(e.SignatureFlags={})),function(e){e[e.String=0]="String",e[e.Number=1]="Number"}(e.IndexKind||(e.IndexKind={})),function(e){e[e.NakedTypeVariable=1]="NakedTypeVariable",e[e.HomomorphicMappedType=2]="HomomorphicMappedType",e[e.PartialHomomorphicMappedType=4]="PartialHomomorphicMappedType",e[e.MappedTypeConstraint=8]="MappedTypeConstraint",e[e.ReturnType=16]="ReturnType",e[e.LiteralKeyof=32]="LiteralKeyof",e[e.NoConstraints=64]="NoConstraints",e[e.AlwaysStrict=128]="AlwaysStrict",e[e.MaxValue=256]="MaxValue",e[e.PriorityImpliesCombination=56]="PriorityImpliesCombination",e[e.Circularity=-1]="Circularity"}(e.InferencePriority||(e.InferencePriority={})),function(e){e[e.None=0]="None",e[e.NoDefault=1]="NoDefault",e[e.AnyDefault=2]="AnyDefault",e[e.SkippedGenericFunction=4]="SkippedGenericFunction"}(e.InferenceFlags||(e.InferenceFlags={})),function(e){e[e.False=0]="False",e[e.Maybe=1]="Maybe",e[e.True=-1]="True"}(e.Ternary||(e.Ternary={})),function(e){e[e.None=0]="None",e[e.ExportsProperty=1]="ExportsProperty",e[e.ModuleExports=2]="ModuleExports",e[e.PrototypeProperty=3]="PrototypeProperty",e[e.ThisProperty=4]="ThisProperty",e[e.Property=5]="Property",e[e.Prototype=6]="Prototype",e[e.ObjectDefinePropertyValue=7]="ObjectDefinePropertyValue",e[e.ObjectDefinePropertyExports=8]="ObjectDefinePropertyExports",e[e.ObjectDefinePrototypeProperty=9]="ObjectDefinePrototypeProperty"}(e.AssignmentDeclarationKind||(e.AssignmentDeclarationKind={})),function(e){e[e.Warning=0]="Warning",e[e.Error=1]="Error",e[e.Suggestion=2]="Suggestion",e[e.Message=3]="Message"}(t=e.DiagnosticCategory||(e.DiagnosticCategory={})),e.diagnosticCategoryName=function(e,r){void 0===r&&(r=!0);var n=t[e.category];return r?n.toLowerCase():n},function(e){e[e.Classic=1]="Classic",e[e.NodeJs=2]="NodeJs"}(e.ModuleResolutionKind||(e.ModuleResolutionKind={})),function(e){e[e.None=0]="None",e[e.CommonJS=1]="CommonJS",e[e.AMD=2]="AMD",e[e.UMD=3]="UMD",e[e.System=4]="System",e[e.ES2015=5]="ES2015",e[e.ESNext=99]="ESNext"}(e.ModuleKind||(e.ModuleKind={})),function(e){e[e.None=0]="None",e[e.Preserve=1]="Preserve",e[e.React=2]="React",e[e.ReactNative=3]="ReactNative"}(e.JsxEmit||(e.JsxEmit={})),function(e){e[e.CarriageReturnLineFeed=0]="CarriageReturnLineFeed",e[e.LineFeed=1]="LineFeed"}(e.NewLineKind||(e.NewLineKind={})),function(e){e[e.Unknown=0]="Unknown",e[e.JS=1]="JS",e[e.JSX=2]="JSX",e[e.TS=3]="TS",e[e.TSX=4]="TSX",e[e.External=5]="External",e[e.JSON=6]="JSON",e[e.Deferred=7]="Deferred"}(e.ScriptKind||(e.ScriptKind={})),function(e){e[e.ES3=0]="ES3",e[e.ES5=1]="ES5",e[e.ES2015=2]="ES2015",e[e.ES2016=3]="ES2016",e[e.ES2017=4]="ES2017",e[e.ES2018=5]="ES2018",e[e.ES2019=6]="ES2019",e[e.ES2020=7]="ES2020",e[e.ESNext=99]="ESNext",e[e.JSON=100]="JSON",e[e.Latest=99]="Latest"}(e.ScriptTarget||(e.ScriptTarget={})),function(e){e[e.Standard=0]="Standard",e[e.JSX=1]="JSX"}(e.LanguageVariant||(e.LanguageVariant={})),function(e){e[e.None=0]="None",e[e.Recursive=1]="Recursive"}(e.WatchDirectoryFlags||(e.WatchDirectoryFlags={})),function(e){e[e.nullCharacter=0]="nullCharacter",e[e.maxAsciiCharacter=127]="maxAsciiCharacter",e[e.lineFeed=10]="lineFeed",e[e.carriageReturn=13]="carriageReturn",e[e.lineSeparator=8232]="lineSeparator",e[e.paragraphSeparator=8233]="paragraphSeparator",e[e.nextLine=133]="nextLine",e[e.space=32]="space",e[e.nonBreakingSpace=160]="nonBreakingSpace",e[e.enQuad=8192]="enQuad",e[e.emQuad=8193]="emQuad",e[e.enSpace=8194]="enSpace",e[e.emSpace=8195]="emSpace",e[e.threePerEmSpace=8196]="threePerEmSpace",e[e.fourPerEmSpace=8197]="fourPerEmSpace",e[e.sixPerEmSpace=8198]="sixPerEmSpace",e[e.figureSpace=8199]="figureSpace",e[e.punctuationSpace=8200]="punctuationSpace",e[e.thinSpace=8201]="thinSpace",e[e.hairSpace=8202]="hairSpace",e[e.zeroWidthSpace=8203]="zeroWidthSpace",e[e.narrowNoBreakSpace=8239]="narrowNoBreakSpace",e[e.ideographicSpace=12288]="ideographicSpace",e[e.mathematicalSpace=8287]="mathematicalSpace",e[e.ogham=5760]="ogham",e[e._=95]="_",e[e.$=36]="$",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.ampersand=38]="ampersand",e[e.asterisk=42]="asterisk",e[e.at=64]="at",e[e.backslash=92]="backslash",e[e.backtick=96]="backtick",e[e.bar=124]="bar",e[e.caret=94]="caret",e[e.closeBrace=125]="closeBrace",e[e.closeBracket=93]="closeBracket",e[e.closeParen=41]="closeParen",e[e.colon=58]="colon",e[e.comma=44]="comma",e[e.dot=46]="dot",e[e.doubleQuote=34]="doubleQuote",e[e.equals=61]="equals",e[e.exclamation=33]="exclamation",e[e.greaterThan=62]="greaterThan",e[e.hash=35]="hash",e[e.lessThan=60]="lessThan",e[e.minus=45]="minus",e[e.openBrace=123]="openBrace",e[e.openBracket=91]="openBracket",e[e.openParen=40]="openParen",e[e.percent=37]="percent",e[e.plus=43]="plus",e[e.question=63]="question",e[e.semicolon=59]="semicolon",e[e.singleQuote=39]="singleQuote",e[e.slash=47]="slash",e[e.tilde=126]="tilde",e[e.backspace=8]="backspace",e[e.formFeed=12]="formFeed",e[e.byteOrderMark=65279]="byteOrderMark",e[e.tab=9]="tab",e[e.verticalTab=11]="verticalTab"}(e.CharacterCodes||(e.CharacterCodes={})),function(e){e.Ts=".ts",e.Tsx=".tsx",e.Dts=".d.ts",e.Js=".js",e.Jsx=".jsx",e.Json=".json",e.TsBuildInfo=".tsbuildinfo"}(e.Extension||(e.Extension={})),function(e){e[e.None=0]="None",e[e.ContainsTypeScript=1]="ContainsTypeScript",e[e.ContainsJsx=2]="ContainsJsx",e[e.ContainsESNext=4]="ContainsESNext",e[e.ContainsES2019=8]="ContainsES2019",e[e.ContainsES2018=16]="ContainsES2018",e[e.ContainsES2017=32]="ContainsES2017",e[e.ContainsES2016=64]="ContainsES2016",e[e.ContainsES2015=128]="ContainsES2015",e[e.ContainsGenerator=256]="ContainsGenerator",e[e.ContainsDestructuringAssignment=512]="ContainsDestructuringAssignment",e[e.ContainsTypeScriptClassSyntax=1024]="ContainsTypeScriptClassSyntax",e[e.ContainsLexicalThis=2048]="ContainsLexicalThis",e[e.ContainsRestOrSpread=4096]="ContainsRestOrSpread",e[e.ContainsObjectRestOrSpread=8192]="ContainsObjectRestOrSpread",e[e.ContainsComputedPropertyName=16384]="ContainsComputedPropertyName",e[e.ContainsBlockScopedBinding=32768]="ContainsBlockScopedBinding",e[e.ContainsBindingPattern=65536]="ContainsBindingPattern",e[e.ContainsYield=131072]="ContainsYield",e[e.ContainsHoistedDeclarationOrCompletion=262144]="ContainsHoistedDeclarationOrCompletion",e[e.ContainsDynamicImport=524288]="ContainsDynamicImport",e[e.ContainsClassFields=1048576]="ContainsClassFields",e[e.HasComputedFlags=536870912]="HasComputedFlags",e[e.AssertTypeScript=1]="AssertTypeScript",e[e.AssertJsx=2]="AssertJsx",e[e.AssertESNext=4]="AssertESNext",e[e.AssertES2019=8]="AssertES2019",e[e.AssertES2018=16]="AssertES2018",e[e.AssertES2017=32]="AssertES2017",e[e.AssertES2016=64]="AssertES2016",e[e.AssertES2015=128]="AssertES2015",e[e.AssertGenerator=256]="AssertGenerator",e[e.AssertDestructuringAssignment=512]="AssertDestructuringAssignment",e[e.OuterExpressionExcludes=536870912]="OuterExpressionExcludes",e[e.PropertyAccessExcludes=536870912]="PropertyAccessExcludes",e[e.NodeExcludes=536870912]="NodeExcludes",e[e.ArrowFunctionExcludes=537371648]="ArrowFunctionExcludes",e[e.FunctionExcludes=537373696]="FunctionExcludes",e[e.ConstructorExcludes=537372672]="ConstructorExcludes",e[e.MethodOrAccessorExcludes=537372672]="MethodOrAccessorExcludes",e[e.PropertyExcludes=536872960]="PropertyExcludes",e[e.ClassExcludes=536888320]="ClassExcludes",e[e.ModuleExcludes=537168896]="ModuleExcludes",e[e.TypeExcludes=-2]="TypeExcludes",e[e.ObjectLiteralExcludes=536896512]="ObjectLiteralExcludes",e[e.ArrayLiteralOrCallOrNewExcludes=536875008]="ArrayLiteralOrCallOrNewExcludes",e[e.VariableDeclarationListExcludes=536944640]="VariableDeclarationListExcludes",e[e.ParameterExcludes=536870912]="ParameterExcludes",e[e.CatchClauseExcludes=536879104]="CatchClauseExcludes",e[e.BindingPatternExcludes=536875008]="BindingPatternExcludes",e[e.PropertyNamePropagatingFlags=2048]="PropertyNamePropagatingFlags"}(e.TransformFlags||(e.TransformFlags={})),function(e){e[e.None=0]="None",e[e.SingleLine=1]="SingleLine",e[e.AdviseOnEmitNode=2]="AdviseOnEmitNode",e[e.NoSubstitution=4]="NoSubstitution",e[e.CapturesThis=8]="CapturesThis",e[e.NoLeadingSourceMap=16]="NoLeadingSourceMap",e[e.NoTrailingSourceMap=32]="NoTrailingSourceMap",e[e.NoSourceMap=48]="NoSourceMap",e[e.NoNestedSourceMaps=64]="NoNestedSourceMaps",e[e.NoTokenLeadingSourceMaps=128]="NoTokenLeadingSourceMaps",e[e.NoTokenTrailingSourceMaps=256]="NoTokenTrailingSourceMaps",e[e.NoTokenSourceMaps=384]="NoTokenSourceMaps",e[e.NoLeadingComments=512]="NoLeadingComments",e[e.NoTrailingComments=1024]="NoTrailingComments",e[e.NoComments=1536]="NoComments",e[e.NoNestedComments=2048]="NoNestedComments",e[e.HelperName=4096]="HelperName",e[e.ExportName=8192]="ExportName",e[e.LocalName=16384]="LocalName",e[e.InternalName=32768]="InternalName",e[e.Indented=65536]="Indented",e[e.NoIndentation=131072]="NoIndentation",e[e.AsyncFunctionBody=262144]="AsyncFunctionBody",e[e.ReuseTempVariableScope=524288]="ReuseTempVariableScope",e[e.CustomPrologue=1048576]="CustomPrologue",e[e.NoHoisting=2097152]="NoHoisting",e[e.HasEndOfDeclarationMarker=4194304]="HasEndOfDeclarationMarker",e[e.Iterator=8388608]="Iterator",e[e.NoAsciiEscaping=16777216]="NoAsciiEscaping",e[e.TypeScriptClassWrapper=33554432]="TypeScriptClassWrapper",e[e.NeverApplyImportHelper=67108864]="NeverApplyImportHelper"}(e.EmitFlags||(e.EmitFlags={})),function(e){e[e.Extends=1]="Extends",e[e.Assign=2]="Assign",e[e.Rest=4]="Rest",e[e.Decorate=8]="Decorate",e[e.Metadata=16]="Metadata",e[e.Param=32]="Param",e[e.Awaiter=64]="Awaiter",e[e.Generator=128]="Generator",e[e.Values=256]="Values",e[e.Read=512]="Read",e[e.Spread=1024]="Spread",e[e.SpreadArrays=2048]="SpreadArrays",e[e.Await=4096]="Await",e[e.AsyncGenerator=8192]="AsyncGenerator",e[e.AsyncDelegator=16384]="AsyncDelegator",e[e.AsyncValues=32768]="AsyncValues",e[e.ExportStar=65536]="ExportStar",e[e.MakeTemplateObject=131072]="MakeTemplateObject",e[e.FirstEmitHelper=1]="FirstEmitHelper",e[e.LastEmitHelper=131072]="LastEmitHelper",e[e.ForOfIncludes=256]="ForOfIncludes",e[e.ForAwaitOfIncludes=32768]="ForAwaitOfIncludes",e[e.AsyncGeneratorIncludes=12288]="AsyncGeneratorIncludes",e[e.AsyncDelegatorIncludes=53248]="AsyncDelegatorIncludes",e[e.SpreadIncludes=1536]="SpreadIncludes"}(e.ExternalEmitHelpers||(e.ExternalEmitHelpers={})),function(e){e[e.SourceFile=0]="SourceFile",e[e.Expression=1]="Expression",e[e.IdentifierName=2]="IdentifierName",e[e.MappedTypeParameter=3]="MappedTypeParameter",e[e.Unspecified=4]="Unspecified",e[e.EmbeddedStatement=5]="EmbeddedStatement"}(e.EmitHint||(e.EmitHint={})),function(e){e.Prologue="prologue",e.EmitHelpers="emitHelpers",e.NoDefaultLib="no-default-lib",e.Reference="reference",e.Type="type",e.Lib="lib",e.Prepend="prepend",e.Text="text",e.Internal="internal"}(e.BundleFileSectionKind||(e.BundleFileSectionKind={})),function(e){e[e.None=0]="None",e[e.SingleLine=0]="SingleLine",e[e.MultiLine=1]="MultiLine",e[e.PreserveLines=2]="PreserveLines",e[e.LinesMask=3]="LinesMask",e[e.NotDelimited=0]="NotDelimited",e[e.BarDelimited=4]="BarDelimited",e[e.AmpersandDelimited=8]="AmpersandDelimited",e[e.CommaDelimited=16]="CommaDelimited",e[e.AsteriskDelimited=32]="AsteriskDelimited",e[e.DelimitersMask=60]="DelimitersMask",e[e.AllowTrailingComma=64]="AllowTrailingComma",e[e.Indented=128]="Indented",e[e.SpaceBetweenBraces=256]="SpaceBetweenBraces",e[e.SpaceBetweenSiblings=512]="SpaceBetweenSiblings",e[e.Braces=1024]="Braces",e[e.Parenthesis=2048]="Parenthesis",e[e.AngleBrackets=4096]="AngleBrackets",e[e.SquareBrackets=8192]="SquareBrackets",e[e.BracketsMask=15360]="BracketsMask",e[e.OptionalIfUndefined=16384]="OptionalIfUndefined",e[e.OptionalIfEmpty=32768]="OptionalIfEmpty",e[e.Optional=49152]="Optional",e[e.PreferNewLine=65536]="PreferNewLine",e[e.NoTrailingNewLine=131072]="NoTrailingNewLine",e[e.NoInterveningComments=262144]="NoInterveningComments",e[e.NoSpaceIfEmpty=524288]="NoSpaceIfEmpty",e[e.SingleElement=1048576]="SingleElement",e[e.Modifiers=262656]="Modifiers",e[e.HeritageClauses=512]="HeritageClauses",e[e.SingleLineTypeLiteralMembers=768]="SingleLineTypeLiteralMembers",e[e.MultiLineTypeLiteralMembers=32897]="MultiLineTypeLiteralMembers",e[e.TupleTypeElements=528]="TupleTypeElements",e[e.UnionTypeConstituents=516]="UnionTypeConstituents",e[e.IntersectionTypeConstituents=520]="IntersectionTypeConstituents",e[e.ObjectBindingPatternElements=525136]="ObjectBindingPatternElements",e[e.ArrayBindingPatternElements=524880]="ArrayBindingPatternElements",e[e.ObjectLiteralExpressionProperties=526226]="ObjectLiteralExpressionProperties",e[e.ArrayLiteralExpressionElements=8914]="ArrayLiteralExpressionElements",e[e.CommaListElements=528]="CommaListElements",e[e.CallExpressionArguments=2576]="CallExpressionArguments",e[e.NewExpressionArguments=18960]="NewExpressionArguments",e[e.TemplateExpressionSpans=262144]="TemplateExpressionSpans",e[e.SingleLineBlockStatements=768]="SingleLineBlockStatements",e[e.MultiLineBlockStatements=129]="MultiLineBlockStatements",e[e.VariableDeclarationList=528]="VariableDeclarationList",e[e.SingleLineFunctionBodyStatements=768]="SingleLineFunctionBodyStatements",e[e.MultiLineFunctionBodyStatements=1]="MultiLineFunctionBodyStatements",e[e.ClassHeritageClauses=0]="ClassHeritageClauses",e[e.ClassMembers=129]="ClassMembers",e[e.InterfaceMembers=129]="InterfaceMembers",e[e.EnumMembers=145]="EnumMembers",e[e.CaseBlockClauses=129]="CaseBlockClauses",e[e.NamedImportsOrExportsElements=525136]="NamedImportsOrExportsElements",e[e.JsxElementOrFragmentChildren=262144]="JsxElementOrFragmentChildren",e[e.JsxElementAttributes=262656]="JsxElementAttributes",e[e.CaseOrDefaultClauseStatements=163969]="CaseOrDefaultClauseStatements",e[e.HeritageClauseTypes=528]="HeritageClauseTypes",e[e.SourceFileStatements=131073]="SourceFileStatements",e[e.Decorators=49153]="Decorators",e[e.TypeArguments=53776]="TypeArguments",e[e.TypeParameters=53776]="TypeParameters",e[e.Parameters=2576]="Parameters",e[e.IndexSignatureParameters=8848]="IndexSignatureParameters",e[e.JSDocComment=33]="JSDocComment"}(e.ListFormat||(e.ListFormat={})),function(e){e[e.None=0]="None",e[e.TripleSlashXML=1]="TripleSlashXML",e[e.SingleLine=2]="SingleLine",e[e.MultiLine=4]="MultiLine",e[e.All=7]="All",e[e.Default=7]="Default"}(e.PragmaKindFlags||(e.PragmaKindFlags={})),e.commentPragmas={reference:{args:[{name:"types",optional:!0,captureSpan:!0},{name:"lib",optional:!0,captureSpan:!0},{name:"path",optional:!0,captureSpan:!0},{name:"no-default-lib",optional:!0}],kind:1},"amd-dependency":{args:[{name:"path"},{name:"name",optional:!0}],kind:1},"amd-module":{args:[{name:"name"}],kind:1},"ts-check":{kind:2},"ts-nocheck":{kind:2},jsx:{args:[{name:"factory"}],kind:4}}}(s||(s={})),function(e){function t(e){for(var t=5381,r=0;r<e.length;r++)t=(t<<5)+t+e.charCodeAt(r);return t.toString()}var n,i;function a(e){var t;return(t={})[i.Low]=e.Low,t[i.Medium]=e.Medium,t[i.High]=e.High,t}e.generateDjb2Hash=t,e.setStackTraceLimit=function(){Error.stackTraceLimit<100&&(Error.stackTraceLimit=100)},function(e){e[e.Created=0]="Created",e[e.Changed=1]="Changed",e[e.Deleted=2]="Deleted"}(n=e.FileWatcherEventKind||(e.FileWatcherEventKind={})),function(e){e[e.High=2e3]="High",e[e.Medium=500]="Medium",e[e.Low=250]="Low"}(i=e.PollingInterval||(e.PollingInterval={})),e.missingFileModifiedTime=new Date(0);var o,s,c={Low:32,Medium:64,High:256},u=a(c);function l(t){if(t.getEnvironmentVariable){var n=function(e,t){var r=o(e);if(r)return n("Low"),n("Medium"),n("High"),!0;return!1;function n(e){t[e]=r[e]||t[e]}}("TSC_WATCH_POLLINGINTERVAL",i);u=s("TSC_WATCH_POLLINGCHUNKSIZE",c)||u,e.unchangedPollThresholds=s("TSC_WATCH_UNCHANGEDPOLLTHRESHOLDS",c)||e.unchangedPollThresholds}function o(e){var r;return n("Low"),n("Medium"),n("High"),r;function n(n){var i=function(e,r){return t.getEnvironmentVariable(e+"_"+r.toUpperCase())}(e,n);i&&((r||(r={}))[n]=Number(i))}}function s(e,t){var i=o(e);return(n||i)&&a(i?r(r({},t),i):t)}}function _(t){var r=[],n=[],a=c(i.Low),o=c(i.Medium),s=c(i.High);return function(t,n,i){var a={fileName:t,callback:n,unchangedPolls:0,mtime:v(t)};return r.push(a),m(a,i),{close:function(){a.isClosed=!0,e.unorderedRemoveItem(r,a)}}};function c(e){var t=[];return t.pollingInterval=e,t.pollIndex=0,t.pollScheduled=!1,t}function l(t){t.pollIndex=d(t,t.pollingInterval,t.pollIndex,u[t.pollingInterval]),t.length?h(t.pollingInterval):(e.Debug.assert(0===t.pollIndex),t.pollScheduled=!1)}function _(e){d(n,i.Low,0,n.length),l(e),!e.pollScheduled&&n.length&&h(i.Low)}function d(t,r,a,o){for(var s=t.length,c=a,u=0;u<o&&s>0;d(),s--){var l=t[a];if(l)if(l.isClosed)t[a]=void 0;else{u++;var _=p(l,v(l.fileName));l.isClosed?t[a]=void 0:_?(l.unchangedPolls=0,t!==n&&(t[a]=void 0,g(l))):l.unchangedPolls!==e.unchangedPollThresholds[r]?l.unchangedPolls++:t===n?(l.unchangedPolls=1,t[a]=void 0,m(l,i.Low)):r!==i.High&&(l.unchangedPolls++,t[a]=void 0,m(l,r===i.Low?i.Medium:i.High)),t[a]&&(c<a&&(t[c]=l,t[a]=void 0),c++)}}return a;function d(){++a===t.length&&(c<a&&(t.length=c),a=0,c=0)}}function f(e){switch(e){case i.Low:return a;case i.Medium:return o;case i.High:return s}}function m(e,t){f(t).push(e),y(t)}function g(e){n.push(e),y(i.Low)}function y(e){f(e).pollScheduled||h(e)}function h(e){f(e).pollScheduled=t.setTimeout(e===i.Low?_:l,e,f(e))}function v(r){return t.getModifiedTime(r)||e.missingFileModifiedTime}}function d(t,r){var n=e.createMap(),i=e.createMultiMap(),a=e.createGetCanonicalFileName(r);return function(r,o,s){var c=a(r),u=n.get(c);return u?u.refCount++:n.set(c,{watcher:t(r,(function(t,r){return e.forEach(i.get(c),(function(e){return e(t,r)}))}),s),refCount:1}),i.add(c,o),{close:function(){var t=e.Debug.assertDefined(n.get(c));i.remove(c,o),t.refCount--,t.refCount||(n.delete(c),e.closeFileWatcherOf(t))}}}}function p(e,t){var r=e.mtime.getTime(),n=t.getTime();return r!==n&&(e.mtime=t,e.callback(e.fileName,f(r,n)),!0)}function f(e,t){return 0===e?n.Created:0===t?n.Deleted:n.Changed}function m(t){var r=e.createMap(),n=e.createMultiMap(),i=e.getStringComparer(!t.useCaseSensitiveFileNames),a=e.createGetCanonicalFileName(t.useCaseSensitiveFileNames);return o;function o(i,o){var u=a(i),l=r.get(u);return l?l.refCount++:(l={watcher:t.watchDirectory(i,(function(t){c(t)||(n.forEach((function(r,n){(n===u||e.startsWith(u,n)&&u[n.length]===e.directorySeparator)&&r.forEach((function(e){return e(t)}))})),s(i,u))})),refCount:1,childWatches:e.emptyArray},r.set(u,l),s(i,u)),o&&n.add(u,o),{dirName:i,close:function(){var t=e.Debug.assertDefined(r.get(u));o&&n.remove(u,o),t.refCount--,t.refCount||(r.delete(u),e.closeFileWatcherOf(t),t.childWatches.forEach(e.closeFileWatcher))}}}function s(n,a){var s=r.get(a);s&&(s.childWatches=function(r,n){var a;return e.enumerateInsertsAndDeletes(t.directoryExists(r)?e.mapDefined(t.getAccessibleSortedChildDirectories(r),(function(n){var a=e.getNormalizedAbsolutePath(n,r);return c(a)||0!==i(a,e.normalizePath(t.realpath(a)))?void 0:a})):e.emptyArray,n,(function(e,t){return i(e,t.dirName)}),(function(e){s(o(e))}),e.closeFileWatcher,s),a||e.emptyArray;function s(e){(a||(a=[])).push(e)}}(n,s.childWatches))}function c(r){return e.some(e.ignoredPaths,(function(n){return function(r,n){return!!e.stringContains(r,n)||!t.useCaseSensitiveFileNames&&e.stringContains(a(r),n)}(r,n)}))}}function g(t){var r=t.writeFile;t.writeFile=function(n,i,a){var o=e.getDirectoryPath(e.normalizeSlashes(n));o&&!t.directoryExists(o)&&function t(r,n){var i=e.getDirectoryPath(r),a=""!==i&&r!==i&&!n.directoryExists(i);a&&t(i,n),!a&&n.directoryExists(r)||n.createDirectory(r)}(o,t),r.call(t,n,i,a)}}function y(){if(void 0!==Oe){var e=Oe.version;if(e){var t=e.indexOf(".");if(-1!==t)return parseInt(e.substring(1,t))}}}e.unchangedPollThresholds=a(c),e.setCustomPollingValues=l,e.createDynamicPriorityPollingWatchFile=_,e.createSingleFileWatcherPerName=d,e.onWatchedFileStat=p,e.getFileWatcherEventKind=f,e.ignoredPaths=["/node_modules/.","/.git","/.#"],e.sysLog=e.noop,e.createRecursiveDirectoryWatcher=m,e.patchWriteFileEnsuringDirectory=g,e.getNodeMajorVersion=y,e.sys=(s="\ufeff","undefined"!=typeof ChakraHost&&(o=function(){var t=ChakraHost.realpath&&function(e){return ChakraHost.realpath(e)};return{newLine:ChakraHost.newLine||"\r\n",args:ChakraHost.args,useCaseSensitiveFileNames:!!ChakraHost.useCaseSensitiveFileNames,write:ChakraHost.echo,readFile:function(e,t){return ChakraHost.readFile(e)},writeFile:function(e,t,r){r&&(t=s+t),ChakraHost.writeFile(e,t)},resolvePath:ChakraHost.resolvePath,fileExists:ChakraHost.fileExists,deleteFile:ChakraHost.deleteFile,getModifiedTime:ChakraHost.getModifiedTime,setModifiedTime:ChakraHost.setModifiedTime,directoryExists:ChakraHost.directoryExists,createDirectory:ChakraHost.createDirectory,getExecutingFilePath:function(){return ChakraHost.executingFile},getCurrentDirectory:function(){return ChakraHost.currentDirectory},getDirectories:ChakraHost.getDirectories,getEnvironmentVariable:ChakraHost.getEnvironmentVariable||function(){return""},readDirectory:function(t,r,n,i,a){var o=e.getFileMatcherPatterns(t,n,i,!!ChakraHost.useCaseSensitiveFileNames,ChakraHost.currentDirectory);return ChakraHost.readDirectory(t,r,o.basePaths,o.excludePattern,o.includeFilePattern,o.includeDirectoryPattern)},exit:ChakraHost.quit,realpath:t}}()),o&&g(o),o),e.sys&&e.sys.getEnvironmentVariable&&(l(e.sys),e.Debug.currentAssertionLevel=/^development$/i.test(e.sys.getEnvironmentVariable("NODE_ENV"))?1:0),e.sys&&e.sys.debugMode&&(e.Debug.isDebugging=!0)}(s||(s={})),function(e){e.directorySeparator="/";var r="\\",n="://",i=/\\/g;function a(e){return 47===e||92===e}function o(e){return d(e)>0}function s(e){return 0!==d(e)}function c(e){return/^\.\.?($|[\\/])/.test(e)}function u(t,r){return t.length>r.length&&e.endsWith(t,r)}function l(e){return e.length>0&&a(e.charCodeAt(e.length-1))}function _(e){return e>=97&&e<=122||e>=65&&e<=90}function d(t){if(!t)return 0;var i=t.charCodeAt(0);if(47===i||92===i){if(t.charCodeAt(1)!==i)return 1;var a=t.indexOf(47===i?e.directorySeparator:r,2);return a<0?t.length:a+1}if(_(i)&&58===t.charCodeAt(1)){var o=t.charCodeAt(2);if(47===o||92===o)return 3;if(2===t.length)return 2}var s=t.indexOf(n);if(-1!==s){var c=s+n.length,u=t.indexOf(e.directorySeparator,c);if(-1!==u){var l=t.slice(0,s),d=t.slice(c,u);if("file"===l&&(""===d||"localhost"===d)&&_(t.charCodeAt(u+1))){var p=function(e,t){var r=e.charCodeAt(t);if(58===r)return t+1;if(37===r&&51===e.charCodeAt(t+1)){var n=e.charCodeAt(t+2);if(97===n||65===n)return t+3}return-1}(t,u+2);if(-1!==p){if(47===t.charCodeAt(p))return~(p+1);if(p===t.length)return~p}}return~(u+1)}return~t.length}return 0}function p(e){var t=d(e);return t<0?~t:t}function f(t){var r=p(t=b(t));return r===t.length?t:(t=k(t)).slice(0,Math.max(r,t.lastIndexOf(e.directorySeparator)))}function m(t,r,n){if(p(t=b(t))===t.length)return"";var i=(t=k(t)).slice(Math.max(p(t),t.lastIndexOf(e.directorySeparator)+1)),a=void 0!==r&&void 0!==n?y(i,r,n):void 0;return a?i.slice(0,i.length-a.length):i}function g(t,r,n){if(e.startsWith(r,".")||(r="."+r),t.length>=r.length&&46===t.charCodeAt(t.length-r.length)){var i=t.slice(t.length-r.length);if(n(i,r))return i}}function y(t,r,n){if(r)return function(e,t,r){if("string"==typeof t)return g(e,t,r)||"";for(var n=0,i=t;n<i.length;n++){var a=g(e,i[n],r);if(a)return a}return""}(k(t),r,n?e.equateStringsCaseInsensitive:e.equateStringsCaseSensitive);var i=m(t),a=i.lastIndexOf(".");return a>=0?i.substring(a):""}function h(r,n){return void 0===n&&(n=""),function(r,n){var i=r.substring(0,n),a=r.substring(n).split(e.directorySeparator);return a.length&&!e.lastOrUndefined(a)&&a.pop(),t([i],a)}(r=D(n,r),p(r))}function v(t){return 0===t.length?"":(t[0]&&N(t[0]))+t.slice(1).join(e.directorySeparator)}function b(t){return t.replace(i,e.directorySeparator)}function x(t){if(!e.some(t))return[];for(var r=[t[0]],n=1;n<t.length;n++){var i=t[n];if(i&&"."!==i){if(".."===i)if(r.length>1){if(".."!==r[r.length-1]){r.pop();continue}}else if(r[0])continue;r.push(i)}}return r}function D(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];e&&(e=b(e));for(var n=0,i=t;n<i.length;n++){var a=i[n];a&&(a=b(a),e=e&&0===p(a)?N(e)+a:a)}return e}function S(r){for(var n=[],i=1;i<arguments.length;i++)n[i-1]=arguments[i];return C(e.some(n)?D.apply(void 0,t([r],n)):b(r))}function T(e,t){return x(h(e,t))}function E(e,t){return v(T(e,t))}function C(e){var t=v(x(h(e=b(e))));return t&&l(e)?N(t):t}function k(e){return l(e)?e.substr(0,e.length-1):e}function N(t){return l(t)?t:t+e.directorySeparator}function A(e){return s(e)||c(e)?e:"./"+e}e.isAnyDirectorySeparator=a,e.isUrl=function(e){return d(e)<0},e.isRootedDiskPath=o,e.isDiskPathRoot=function(e){var t=d(e);return t>0&&t===e.length},e.pathIsAbsolute=s,e.pathIsRelative=c,e.hasExtension=function(t){return e.stringContains(m(t),".")},e.fileExtensionIs=u,e.fileExtensionIsOneOf=function(e,t){for(var r=0,n=t;r<n.length;r++){if(u(e,n[r]))return!0}return!1},e.hasTrailingDirectorySeparator=l,e.getRootLength=p,e.getDirectoryPath=f,e.getBaseFileName=m,e.getAnyExtensionFromPath=y,e.getPathComponents=h,e.getPathFromPathComponents=v,e.normalizeSlashes=b,e.reducePathComponents=x,e.combinePaths=D,e.resolvePath=S,e.getNormalizedPathComponents=T,e.getNormalizedAbsolutePath=E,e.normalizePath=C,e.getNormalizedAbsolutePathWithoutRoot=function(t,r){return function(t){return 0===t.length?"":t.slice(1).join(e.directorySeparator)}(T(t,r))},e.toPath=function(e,t,r){return r(o(e)?C(e):E(e,t))},e.normalizePathAndParts=function(t){var r=x(h(t=b(t))),n=r[0],i=r.slice(1);if(i.length){var a=n+i.join(e.directorySeparator);return{path:l(t)?N(a):a,parts:i}}return{path:n,parts:i}},e.removeTrailingDirectorySeparator=k,e.ensureTrailingDirectorySeparator=N,e.ensurePathIsNonModuleName=A,e.changeAnyExtension=function(t,r,n,i){var a=void 0!==n&&void 0!==i?y(t,n,i):y(t);return a?t.slice(0,t.length-a.length)+(e.startsWith(r,".")?r:"."+r):t};var F=/(^|\/)\.{0,2}($|\/)/;function P(t,r,n){if(t===r)return 0;if(void 0===t)return-1;if(void 0===r)return 1;var i=t.substring(0,p(t)),a=r.substring(0,p(r)),o=e.compareStringsCaseInsensitive(i,a);if(0!==o)return o;var s=t.substring(i.length),c=r.substring(a.length);if(!F.test(s)&&!F.test(c))return n(s,c);for(var u=x(h(t)),l=x(h(r)),_=Math.min(u.length,l.length),d=1;d<_;d++){var f=n(u[d],l[d]);if(0!==f)return f}return e.compareValues(u.length,l.length)}function w(r,n,i,a){var o,s=x(h(r)),c=x(h(n));for(o=0;o<s.length&&o<c.length;o++){var u=a(s[o]),l=a(c[o]);if(!(0===o?e.equateStringsCaseInsensitive:i)(u,l))break}if(0===o)return c;for(var _=c.slice(o),d=[];o<s.length;o++)d.push("..");return t([""],d,_)}function I(t,r,n){e.Debug.assert(p(t)>0==p(r)>0,"Paths must either both be absolute or both be relative");var i="function"==typeof n?n:e.identity;return v(w(t,r,"boolean"==typeof n&&n?e.equateStringsCaseInsensitive:e.equateStringsCaseSensitive,i))}function O(t,r,n,i,a){var s=w(S(n,t),S(n,r),e.equateStringsCaseSensitive,i),c=s[0];if(a&&o(c)){var u=c.charAt(0)===e.directorySeparator?"file://":"file:///";s[0]=u+c}return v(s)}e.comparePathsCaseSensitive=function(t,r){return P(t,r,e.compareStringsCaseSensitive)},e.comparePathsCaseInsensitive=function(t,r){return P(t,r,e.compareStringsCaseInsensitive)},e.comparePaths=function(t,r,n,i){return"string"==typeof n?(t=D(n,t),r=D(n,r)):"boolean"==typeof n&&(i=n),P(t,r,e.getStringComparer(i))},e.containsPath=function(t,r,n,i){if("string"==typeof n?(t=D(n,t),r=D(n,r)):"boolean"==typeof n&&(i=n),void 0===t||void 0===r)return!1;if(t===r)return!0;var a=x(h(t)),o=x(h(r));if(o.length<a.length)return!1;for(var s=i?e.equateStringsCaseInsensitive:e.equateStringsCaseSensitive,c=0;c<a.length;c++){if(!(0===c?e.equateStringsCaseInsensitive:s)(a[c],o[c]))return!1}return!0},e.startsWithDirectory=function(t,r,n){var i=n(t),a=n(r);return e.startsWith(i,a+"/")||e.startsWith(i,a+"\\")},e.getPathComponentsRelativeTo=w,e.getRelativePathFromDirectory=I,e.convertToRelativePath=function(e,t,r){return o(e)?O(t,e,t,r,!1):e},e.getRelativePathFromFile=function(e,t,r){return A(I(f(e),t,r))},e.getRelativePathToDirectoryOrUrl=O,e.forEachAncestorDirectory=function(e,t){for(;;){var r=t(e);if(void 0!==r)return r;var n=f(e);if(n===e)return;e=n}}}(s||(s={})),function(e){function t(e,t,r,n,i,a){return{code:e,category:t,key:r,message:n,reportsUnnecessary:i,elidedInCompatabilityPyramid:a}}e.Diagnostics={Unterminated_string_literal:t(1002,e.DiagnosticCategory.Error,"Unterminated_string_literal_1002","Unterminated string literal."),Identifier_expected:t(1003,e.DiagnosticCategory.Error,"Identifier_expected_1003","Identifier expected."),_0_expected:t(1005,e.DiagnosticCategory.Error,"_0_expected_1005","'{0}' expected."),A_file_cannot_have_a_reference_to_itself:t(1006,e.DiagnosticCategory.Error,"A_file_cannot_have_a_reference_to_itself_1006","A file cannot have a reference to itself."),Trailing_comma_not_allowed:t(1009,e.DiagnosticCategory.Error,"Trailing_comma_not_allowed_1009","Trailing comma not allowed."),Asterisk_Slash_expected:t(1010,e.DiagnosticCategory.Error,"Asterisk_Slash_expected_1010","'*/' expected."),An_element_access_expression_should_take_an_argument:t(1011,e.DiagnosticCategory.Error,"An_element_access_expression_should_take_an_argument_1011","An element access expression should take an argument."),Unexpected_token:t(1012,e.DiagnosticCategory.Error,"Unexpected_token_1012","Unexpected token."),A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma:t(1013,e.DiagnosticCategory.Error,"A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma_1013","A rest parameter or binding pattern may not have a trailing comma."),A_rest_parameter_must_be_last_in_a_parameter_list:t(1014,e.DiagnosticCategory.Error,"A_rest_parameter_must_be_last_in_a_parameter_list_1014","A rest parameter must be last in a parameter list."),Parameter_cannot_have_question_mark_and_initializer:t(1015,e.DiagnosticCategory.Error,"Parameter_cannot_have_question_mark_and_initializer_1015","Parameter cannot have question mark and initializer."),A_required_parameter_cannot_follow_an_optional_parameter:t(1016,e.DiagnosticCategory.Error,"A_required_parameter_cannot_follow_an_optional_parameter_1016","A required parameter cannot follow an optional parameter."),An_index_signature_cannot_have_a_rest_parameter:t(1017,e.DiagnosticCategory.Error,"An_index_signature_cannot_have_a_rest_parameter_1017","An index signature cannot have a rest parameter."),An_index_signature_parameter_cannot_have_an_accessibility_modifier:t(1018,e.DiagnosticCategory.Error,"An_index_signature_parameter_cannot_have_an_accessibility_modifier_1018","An index signature parameter cannot have an accessibility modifier."),An_index_signature_parameter_cannot_have_a_question_mark:t(1019,e.DiagnosticCategory.Error,"An_index_signature_parameter_cannot_have_a_question_mark_1019","An index signature parameter cannot have a question mark."),An_index_signature_parameter_cannot_have_an_initializer:t(1020,e.DiagnosticCategory.Error,"An_index_signature_parameter_cannot_have_an_initializer_1020","An index signature parameter cannot have an initializer."),An_index_signature_must_have_a_type_annotation:t(1021,e.DiagnosticCategory.Error,"An_index_signature_must_have_a_type_annotation_1021","An index signature must have a type annotation."),An_index_signature_parameter_must_have_a_type_annotation:t(1022,e.DiagnosticCategory.Error,"An_index_signature_parameter_must_have_a_type_annotation_1022","An index signature parameter must have a type annotation."),An_index_signature_parameter_type_must_be_either_string_or_number:t(1023,e.DiagnosticCategory.Error,"An_index_signature_parameter_type_must_be_either_string_or_number_1023","An index signature parameter type must be either 'string' or 'number'."),readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature:t(1024,e.DiagnosticCategory.Error,"readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature_1024","'readonly' modifier can only appear on a property declaration or index signature."),Accessibility_modifier_already_seen:t(1028,e.DiagnosticCategory.Error,"Accessibility_modifier_already_seen_1028","Accessibility modifier already seen."),_0_modifier_must_precede_1_modifier:t(1029,e.DiagnosticCategory.Error,"_0_modifier_must_precede_1_modifier_1029","'{0}' modifier must precede '{1}' modifier."),_0_modifier_already_seen:t(1030,e.DiagnosticCategory.Error,"_0_modifier_already_seen_1030","'{0}' modifier already seen."),_0_modifier_cannot_appear_on_a_class_element:t(1031,e.DiagnosticCategory.Error,"_0_modifier_cannot_appear_on_a_class_element_1031","'{0}' modifier cannot appear on a class element."),super_must_be_followed_by_an_argument_list_or_member_access:t(1034,e.DiagnosticCategory.Error,"super_must_be_followed_by_an_argument_list_or_member_access_1034","'super' must be followed by an argument list or member access."),Only_ambient_modules_can_use_quoted_names:t(1035,e.DiagnosticCategory.Error,"Only_ambient_modules_can_use_quoted_names_1035","Only ambient modules can use quoted names."),Statements_are_not_allowed_in_ambient_contexts:t(1036,e.DiagnosticCategory.Error,"Statements_are_not_allowed_in_ambient_contexts_1036","Statements are not allowed in ambient contexts."),A_declare_modifier_cannot_be_used_in_an_already_ambient_context:t(1038,e.DiagnosticCategory.Error,"A_declare_modifier_cannot_be_used_in_an_already_ambient_context_1038","A 'declare' modifier cannot be used in an already ambient context."),Initializers_are_not_allowed_in_ambient_contexts:t(1039,e.DiagnosticCategory.Error,"Initializers_are_not_allowed_in_ambient_contexts_1039","Initializers are not allowed in ambient contexts."),_0_modifier_cannot_be_used_in_an_ambient_context:t(1040,e.DiagnosticCategory.Error,"_0_modifier_cannot_be_used_in_an_ambient_context_1040","'{0}' modifier cannot be used in an ambient context."),_0_modifier_cannot_be_used_with_a_class_declaration:t(1041,e.DiagnosticCategory.Error,"_0_modifier_cannot_be_used_with_a_class_declaration_1041","'{0}' modifier cannot be used with a class declaration."),_0_modifier_cannot_be_used_here:t(1042,e.DiagnosticCategory.Error,"_0_modifier_cannot_be_used_here_1042","'{0}' modifier cannot be used here."),_0_modifier_cannot_appear_on_a_data_property:t(1043,e.DiagnosticCategory.Error,"_0_modifier_cannot_appear_on_a_data_property_1043","'{0}' modifier cannot appear on a data property."),_0_modifier_cannot_appear_on_a_module_or_namespace_element:t(1044,e.DiagnosticCategory.Error,"_0_modifier_cannot_appear_on_a_module_or_namespace_element_1044","'{0}' modifier cannot appear on a module or namespace element."),A_0_modifier_cannot_be_used_with_an_interface_declaration:t(1045,e.DiagnosticCategory.Error,"A_0_modifier_cannot_be_used_with_an_interface_declaration_1045","A '{0}' modifier cannot be used with an interface declaration."),Top_level_declarations_in_d_ts_files_must_start_with_either_a_declare_or_export_modifier:t(1046,e.DiagnosticCategory.Error,"Top_level_declarations_in_d_ts_files_must_start_with_either_a_declare_or_export_modifier_1046","Top-level declarations in .d.ts files must start with either a 'declare' or 'export' modifier."),A_rest_parameter_cannot_be_optional:t(1047,e.DiagnosticCategory.Error,"A_rest_parameter_cannot_be_optional_1047","A rest parameter cannot be optional."),A_rest_parameter_cannot_have_an_initializer:t(1048,e.DiagnosticCategory.Error,"A_rest_parameter_cannot_have_an_initializer_1048","A rest parameter cannot have an initializer."),A_set_accessor_must_have_exactly_one_parameter:t(1049,e.DiagnosticCategory.Error,"A_set_accessor_must_have_exactly_one_parameter_1049","A 'set' accessor must have exactly one parameter."),A_set_accessor_cannot_have_an_optional_parameter:t(1051,e.DiagnosticCategory.Error,"A_set_accessor_cannot_have_an_optional_parameter_1051","A 'set' accessor cannot have an optional parameter."),A_set_accessor_parameter_cannot_have_an_initializer:t(1052,e.DiagnosticCategory.Error,"A_set_accessor_parameter_cannot_have_an_initializer_1052","A 'set' accessor parameter cannot have an initializer."),A_set_accessor_cannot_have_rest_parameter:t(1053,e.DiagnosticCategory.Error,"A_set_accessor_cannot_have_rest_parameter_1053","A 'set' accessor cannot have rest parameter."),A_get_accessor_cannot_have_parameters:t(1054,e.DiagnosticCategory.Error,"A_get_accessor_cannot_have_parameters_1054","A 'get' accessor cannot have parameters."),Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value:t(1055,e.DiagnosticCategory.Error,"Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Prom_1055","Type '{0}' is not a valid async function return type in ES5/ES3 because it does not refer to a Promise-compatible constructor value."),Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher:t(1056,e.DiagnosticCategory.Error,"Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher_1056","Accessors are only available when targeting ECMAScript 5 and higher."),An_async_function_or_method_must_have_a_valid_awaitable_return_type:t(1057,e.DiagnosticCategory.Error,"An_async_function_or_method_must_have_a_valid_awaitable_return_type_1057","An async function or method must have a valid awaitable return type."),The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member:t(1058,e.DiagnosticCategory.Error,"The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_t_1058","The return type of an async function must either be a valid promise or must not contain a callable 'then' member."),A_promise_must_have_a_then_method:t(1059,e.DiagnosticCategory.Error,"A_promise_must_have_a_then_method_1059","A promise must have a 'then' method."),The_first_parameter_of_the_then_method_of_a_promise_must_be_a_callback:t(1060,e.DiagnosticCategory.Error,"The_first_parameter_of_the_then_method_of_a_promise_must_be_a_callback_1060","The first parameter of the 'then' method of a promise must be a callback."),Enum_member_must_have_initializer:t(1061,e.DiagnosticCategory.Error,"Enum_member_must_have_initializer_1061","Enum member must have initializer."),Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method:t(1062,e.DiagnosticCategory.Error,"Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method_1062","Type is referenced directly or indirectly in the fulfillment callback of its own 'then' method."),An_export_assignment_cannot_be_used_in_a_namespace:t(1063,e.DiagnosticCategory.Error,"An_export_assignment_cannot_be_used_in_a_namespace_1063","An export assignment cannot be used in a namespace."),The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type:t(1064,e.DiagnosticCategory.Error,"The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_1064","The return type of an async function or method must be the global Promise<T> type."),In_ambient_enum_declarations_member_initializer_must_be_constant_expression:t(1066,e.DiagnosticCategory.Error,"In_ambient_enum_declarations_member_initializer_must_be_constant_expression_1066","In ambient enum declarations member initializer must be constant expression."),Unexpected_token_A_constructor_method_accessor_or_property_was_expected:t(1068,e.DiagnosticCategory.Error,"Unexpected_token_A_constructor_method_accessor_or_property_was_expected_1068","Unexpected token. A constructor, method, accessor, or property was expected."),Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces:t(1069,e.DiagnosticCategory.Error,"Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces_1069","Unexpected token. A type parameter name was expected without curly braces."),_0_modifier_cannot_appear_on_a_type_member:t(1070,e.DiagnosticCategory.Error,"_0_modifier_cannot_appear_on_a_type_member_1070","'{0}' modifier cannot appear on a type member."),_0_modifier_cannot_appear_on_an_index_signature:t(1071,e.DiagnosticCategory.Error,"_0_modifier_cannot_appear_on_an_index_signature_1071","'{0}' modifier cannot appear on an index signature."),A_0_modifier_cannot_be_used_with_an_import_declaration:t(1079,e.DiagnosticCategory.Error,"A_0_modifier_cannot_be_used_with_an_import_declaration_1079","A '{0}' modifier cannot be used with an import declaration."),Invalid_reference_directive_syntax:t(1084,e.DiagnosticCategory.Error,"Invalid_reference_directive_syntax_1084","Invalid 'reference' directive syntax."),Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher_Use_the_syntax_0:t(1085,e.DiagnosticCategory.Error,"Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher_Use_the_syntax_0_1085","Octal literals are not available when targeting ECMAScript 5 and higher. Use the syntax '{0}'."),_0_modifier_cannot_appear_on_a_constructor_declaration:t(1089,e.DiagnosticCategory.Error,"_0_modifier_cannot_appear_on_a_constructor_declaration_1089","'{0}' modifier cannot appear on a constructor declaration."),_0_modifier_cannot_appear_on_a_parameter:t(1090,e.DiagnosticCategory.Error,"_0_modifier_cannot_appear_on_a_parameter_1090","'{0}' modifier cannot appear on a parameter."),Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement:t(1091,e.DiagnosticCategory.Error,"Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement_1091","Only a single variable declaration is allowed in a 'for...in' statement."),Type_parameters_cannot_appear_on_a_constructor_declaration:t(1092,e.DiagnosticCategory.Error,"Type_parameters_cannot_appear_on_a_constructor_declaration_1092","Type parameters cannot appear on a constructor declaration."),Type_annotation_cannot_appear_on_a_constructor_declaration:t(1093,e.DiagnosticCategory.Error,"Type_annotation_cannot_appear_on_a_constructor_declaration_1093","Type annotation cannot appear on a constructor declaration."),An_accessor_cannot_have_type_parameters:t(1094,e.DiagnosticCategory.Error,"An_accessor_cannot_have_type_parameters_1094","An accessor cannot have type parameters."),A_set_accessor_cannot_have_a_return_type_annotation:t(1095,e.DiagnosticCategory.Error,"A_set_accessor_cannot_have_a_return_type_annotation_1095","A 'set' accessor cannot have a return type annotation."),An_index_signature_must_have_exactly_one_parameter:t(1096,e.DiagnosticCategory.Error,"An_index_signature_must_have_exactly_one_parameter_1096","An index signature must have exactly one parameter."),_0_list_cannot_be_empty:t(1097,e.DiagnosticCategory.Error,"_0_list_cannot_be_empty_1097","'{0}' list cannot be empty."),Type_parameter_list_cannot_be_empty:t(1098,e.DiagnosticCategory.Error,"Type_parameter_list_cannot_be_empty_1098","Type parameter list cannot be empty."),Type_argument_list_cannot_be_empty:t(1099,e.DiagnosticCategory.Error,"Type_argument_list_cannot_be_empty_1099","Type argument list cannot be empty."),Invalid_use_of_0_in_strict_mode:t(1100,e.DiagnosticCategory.Error,"Invalid_use_of_0_in_strict_mode_1100","Invalid use of '{0}' in strict mode."),with_statements_are_not_allowed_in_strict_mode:t(1101,e.DiagnosticCategory.Error,"with_statements_are_not_allowed_in_strict_mode_1101","'with' statements are not allowed in strict mode."),delete_cannot_be_called_on_an_identifier_in_strict_mode:t(1102,e.DiagnosticCategory.Error,"delete_cannot_be_called_on_an_identifier_in_strict_mode_1102","'delete' cannot be called on an identifier in strict mode."),A_for_await_of_statement_is_only_allowed_within_an_async_function_or_async_generator:t(1103,e.DiagnosticCategory.Error,"A_for_await_of_statement_is_only_allowed_within_an_async_function_or_async_generator_1103","A 'for-await-of' statement is only allowed within an async function or async generator."),A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement:t(1104,e.DiagnosticCategory.Error,"A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement_1104","A 'continue' statement can only be used within an enclosing iteration statement."),A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement:t(1105,e.DiagnosticCategory.Error,"A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement_1105","A 'break' statement can only be used within an enclosing iteration or switch statement."),Jump_target_cannot_cross_function_boundary:t(1107,e.DiagnosticCategory.Error,"Jump_target_cannot_cross_function_boundary_1107","Jump target cannot cross function boundary."),A_return_statement_can_only_be_used_within_a_function_body:t(1108,e.DiagnosticCategory.Error,"A_return_statement_can_only_be_used_within_a_function_body_1108","A 'return' statement can only be used within a function body."),Expression_expected:t(1109,e.DiagnosticCategory.Error,"Expression_expected_1109","Expression expected."),Type_expected:t(1110,e.DiagnosticCategory.Error,"Type_expected_1110","Type expected."),A_default_clause_cannot_appear_more_than_once_in_a_switch_statement:t(1113,e.DiagnosticCategory.Error,"A_default_clause_cannot_appear_more_than_once_in_a_switch_statement_1113","A 'default' clause cannot appear more than once in a 'switch' statement."),Duplicate_label_0:t(1114,e.DiagnosticCategory.Error,"Duplicate_label_0_1114","Duplicate label '{0}'."),A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement:t(1115,e.DiagnosticCategory.Error,"A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement_1115","A 'continue' statement can only jump to a label of an enclosing iteration statement."),A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement:t(1116,e.DiagnosticCategory.Error,"A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement_1116","A 'break' statement can only jump to a label of an enclosing statement."),An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode:t(1117,e.DiagnosticCategory.Error,"An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode_1117","An object literal cannot have multiple properties with the same name in strict mode."),An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name:t(1118,e.DiagnosticCategory.Error,"An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name_1118","An object literal cannot have multiple get/set accessors with the same name."),An_object_literal_cannot_have_property_and_accessor_with_the_same_name:t(1119,e.DiagnosticCategory.Error,"An_object_literal_cannot_have_property_and_accessor_with_the_same_name_1119","An object literal cannot have property and accessor with the same name."),An_export_assignment_cannot_have_modifiers:t(1120,e.DiagnosticCategory.Error,"An_export_assignment_cannot_have_modifiers_1120","An export assignment cannot have modifiers."),Octal_literals_are_not_allowed_in_strict_mode:t(1121,e.DiagnosticCategory.Error,"Octal_literals_are_not_allowed_in_strict_mode_1121","Octal literals are not allowed in strict mode."),Variable_declaration_list_cannot_be_empty:t(1123,e.DiagnosticCategory.Error,"Variable_declaration_list_cannot_be_empty_1123","Variable declaration list cannot be empty."),Digit_expected:t(1124,e.DiagnosticCategory.Error,"Digit_expected_1124","Digit expected."),Hexadecimal_digit_expected:t(1125,e.DiagnosticCategory.Error,"Hexadecimal_digit_expected_1125","Hexadecimal digit expected."),Unexpected_end_of_text:t(1126,e.DiagnosticCategory.Error,"Unexpected_end_of_text_1126","Unexpected end of text."),Invalid_character:t(1127,e.DiagnosticCategory.Error,"Invalid_character_1127","Invalid character."),Declaration_or_statement_expected:t(1128,e.DiagnosticCategory.Error,"Declaration_or_statement_expected_1128","Declaration or statement expected."),Statement_expected:t(1129,e.DiagnosticCategory.Error,"Statement_expected_1129","Statement expected."),case_or_default_expected:t(1130,e.DiagnosticCategory.Error,"case_or_default_expected_1130","'case' or 'default' expected."),Property_or_signature_expected:t(1131,e.DiagnosticCategory.Error,"Property_or_signature_expected_1131","Property or signature expected."),Enum_member_expected:t(1132,e.DiagnosticCategory.Error,"Enum_member_expected_1132","Enum member expected."),Variable_declaration_expected:t(1134,e.DiagnosticCategory.Error,"Variable_declaration_expected_1134","Variable declaration expected."),Argument_expression_expected:t(1135,e.DiagnosticCategory.Error,"Argument_expression_expected_1135","Argument expression expected."),Property_assignment_expected:t(1136,e.DiagnosticCategory.Error,"Property_assignment_expected_1136","Property assignment expected."),Expression_or_comma_expected:t(1137,e.DiagnosticCategory.Error,"Expression_or_comma_expected_1137","Expression or comma expected."),Parameter_declaration_expected:t(1138,e.DiagnosticCategory.Error,"Parameter_declaration_expected_1138","Parameter declaration expected."),Type_parameter_declaration_expected:t(1139,e.DiagnosticCategory.Error,"Type_parameter_declaration_expected_1139","Type parameter declaration expected."),Type_argument_expected:t(1140,e.DiagnosticCategory.Error,"Type_argument_expected_1140","Type argument expected."),String_literal_expected:t(1141,e.DiagnosticCategory.Error,"String_literal_expected_1141","String literal expected."),Line_break_not_permitted_here:t(1142,e.DiagnosticCategory.Error,"Line_break_not_permitted_here_1142","Line break not permitted here."),or_expected:t(1144,e.DiagnosticCategory.Error,"or_expected_1144","'{' or ';' expected."),Declaration_expected:t(1146,e.DiagnosticCategory.Error,"Declaration_expected_1146","Declaration expected."),Import_declarations_in_a_namespace_cannot_reference_a_module:t(1147,e.DiagnosticCategory.Error,"Import_declarations_in_a_namespace_cannot_reference_a_module_1147","Import declarations in a namespace cannot reference a module."),Cannot_use_imports_exports_or_module_augmentations_when_module_is_none:t(1148,e.DiagnosticCategory.Error,"Cannot_use_imports_exports_or_module_augmentations_when_module_is_none_1148","Cannot use imports, exports, or module augmentations when '--module' is 'none'."),File_name_0_differs_from_already_included_file_name_1_only_in_casing:t(1149,e.DiagnosticCategory.Error,"File_name_0_differs_from_already_included_file_name_1_only_in_casing_1149","File name '{0}' differs from already included file name '{1}' only in casing."),const_declarations_must_be_initialized:t(1155,e.DiagnosticCategory.Error,"const_declarations_must_be_initialized_1155","'const' declarations must be initialized."),const_declarations_can_only_be_declared_inside_a_block:t(1156,e.DiagnosticCategory.Error,"const_declarations_can_only_be_declared_inside_a_block_1156","'const' declarations can only be declared inside a block."),let_declarations_can_only_be_declared_inside_a_block:t(1157,e.DiagnosticCategory.Error,"let_declarations_can_only_be_declared_inside_a_block_1157","'let' declarations can only be declared inside a block."),Unterminated_template_literal:t(1160,e.DiagnosticCategory.Error,"Unterminated_template_literal_1160","Unterminated template literal."),Unterminated_regular_expression_literal:t(1161,e.DiagnosticCategory.Error,"Unterminated_regular_expression_literal_1161","Unterminated regular expression literal."),An_object_member_cannot_be_declared_optional:t(1162,e.DiagnosticCategory.Error,"An_object_member_cannot_be_declared_optional_1162","An object member cannot be declared optional."),A_yield_expression_is_only_allowed_in_a_generator_body:t(1163,e.DiagnosticCategory.Error,"A_yield_expression_is_only_allowed_in_a_generator_body_1163","A 'yield' expression is only allowed in a generator body."),Computed_property_names_are_not_allowed_in_enums:t(1164,e.DiagnosticCategory.Error,"Computed_property_names_are_not_allowed_in_enums_1164","Computed property names are not allowed in enums."),A_computed_property_name_in_an_ambient_context_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type:t(1165,e.DiagnosticCategory.Error,"A_computed_property_name_in_an_ambient_context_must_refer_to_an_expression_whose_type_is_a_literal_t_1165","A computed property name in an ambient context must refer to an expression whose type is a literal type or a 'unique symbol' type."),A_computed_property_name_in_a_class_property_declaration_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type:t(1166,e.DiagnosticCategory.Error,"A_computed_property_name_in_a_class_property_declaration_must_refer_to_an_expression_whose_type_is_a_1166","A computed property name in a class property declaration must refer to an expression whose type is a literal type or a 'unique symbol' type."),A_computed_property_name_in_a_method_overload_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type:t(1168,e.DiagnosticCategory.Error,"A_computed_property_name_in_a_method_overload_must_refer_to_an_expression_whose_type_is_a_literal_ty_1168","A computed property name in a method overload must refer to an expression whose type is a literal type or a 'unique symbol' type."),A_computed_property_name_in_an_interface_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type:t(1169,e.DiagnosticCategory.Error,"A_computed_property_name_in_an_interface_must_refer_to_an_expression_whose_type_is_a_literal_type_or_1169","A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type."),A_computed_property_name_in_a_type_literal_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type:t(1170,e.DiagnosticCategory.Error,"A_computed_property_name_in_a_type_literal_must_refer_to_an_expression_whose_type_is_a_literal_type__1170","A computed property name in a type literal must refer to an expression whose type is a literal type or a 'unique symbol' type."),A_comma_expression_is_not_allowed_in_a_computed_property_name:t(1171,e.DiagnosticCategory.Error,"A_comma_expression_is_not_allowed_in_a_computed_property_name_1171","A comma expression is not allowed in a computed property name."),extends_clause_already_seen:t(1172,e.DiagnosticCategory.Error,"extends_clause_already_seen_1172","'extends' clause already seen."),extends_clause_must_precede_implements_clause:t(1173,e.DiagnosticCategory.Error,"extends_clause_must_precede_implements_clause_1173","'extends' clause must precede 'implements' clause."),Classes_can_only_extend_a_single_class:t(1174,e.DiagnosticCategory.Error,"Classes_can_only_extend_a_single_class_1174","Classes can only extend a single class."),implements_clause_already_seen:t(1175,e.DiagnosticCategory.Error,"implements_clause_already_seen_1175","'implements' clause already seen."),Interface_declaration_cannot_have_implements_clause:t(1176,e.DiagnosticCategory.Error,"Interface_declaration_cannot_have_implements_clause_1176","Interface declaration cannot have 'implements' clause."),Binary_digit_expected:t(1177,e.DiagnosticCategory.Error,"Binary_digit_expected_1177","Binary digit expected."),Octal_digit_expected:t(1178,e.DiagnosticCategory.Error,"Octal_digit_expected_1178","Octal digit expected."),Unexpected_token_expected:t(1179,e.DiagnosticCategory.Error,"Unexpected_token_expected_1179","Unexpected token. '{' expected."),Property_destructuring_pattern_expected:t(1180,e.DiagnosticCategory.Error,"Property_destructuring_pattern_expected_1180","Property destructuring pattern expected."),Array_element_destructuring_pattern_expected:t(1181,e.DiagnosticCategory.Error,"Array_element_destructuring_pattern_expected_1181","Array element destructuring pattern expected."),A_destructuring_declaration_must_have_an_initializer:t(1182,e.DiagnosticCategory.Error,"A_destructuring_declaration_must_have_an_initializer_1182","A destructuring declaration must have an initializer."),An_implementation_cannot_be_declared_in_ambient_contexts:t(1183,e.DiagnosticCategory.Error,"An_implementation_cannot_be_declared_in_ambient_contexts_1183","An implementation cannot be declared in ambient contexts."),Modifiers_cannot_appear_here:t(1184,e.DiagnosticCategory.Error,"Modifiers_cannot_appear_here_1184","Modifiers cannot appear here."),Merge_conflict_marker_encountered:t(1185,e.DiagnosticCategory.Error,"Merge_conflict_marker_encountered_1185","Merge conflict marker encountered."),A_rest_element_cannot_have_an_initializer:t(1186,e.DiagnosticCategory.Error,"A_rest_element_cannot_have_an_initializer_1186","A rest element cannot have an initializer."),A_parameter_property_may_not_be_declared_using_a_binding_pattern:t(1187,e.DiagnosticCategory.Error,"A_parameter_property_may_not_be_declared_using_a_binding_pattern_1187","A parameter property may not be declared using a binding pattern."),Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement:t(1188,e.DiagnosticCategory.Error,"Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement_1188","Only a single variable declaration is allowed in a 'for...of' statement."),The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer:t(1189,e.DiagnosticCategory.Error,"The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer_1189","The variable declaration of a 'for...in' statement cannot have an initializer."),The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer:t(1190,e.DiagnosticCategory.Error,"The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer_1190","The variable declaration of a 'for...of' statement cannot have an initializer."),An_import_declaration_cannot_have_modifiers:t(1191,e.DiagnosticCategory.Error,"An_import_declaration_cannot_have_modifiers_1191","An import declaration cannot have modifiers."),Module_0_has_no_default_export:t(1192,e.DiagnosticCategory.Error,"Module_0_has_no_default_export_1192","Module '{0}' has no default export."),An_export_declaration_cannot_have_modifiers:t(1193,e.DiagnosticCategory.Error,"An_export_declaration_cannot_have_modifiers_1193","An export declaration cannot have modifiers."),Export_declarations_are_not_permitted_in_a_namespace:t(1194,e.DiagnosticCategory.Error,"Export_declarations_are_not_permitted_in_a_namespace_1194","Export declarations are not permitted in a namespace."),Catch_clause_variable_cannot_have_a_type_annotation:t(1196,e.DiagnosticCategory.Error,"Catch_clause_variable_cannot_have_a_type_annotation_1196","Catch clause variable cannot have a type annotation."),Catch_clause_variable_cannot_have_an_initializer:t(1197,e.DiagnosticCategory.Error,"Catch_clause_variable_cannot_have_an_initializer_1197","Catch clause variable cannot have an initializer."),An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive:t(1198,e.DiagnosticCategory.Error,"An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive_1198","An extended Unicode escape value must be between 0x0 and 0x10FFFF inclusive."),Unterminated_Unicode_escape_sequence:t(1199,e.DiagnosticCategory.Error,"Unterminated_Unicode_escape_sequence_1199","Unterminated Unicode escape sequence."),Line_terminator_not_permitted_before_arrow:t(1200,e.DiagnosticCategory.Error,"Line_terminator_not_permitted_before_arrow_1200","Line terminator not permitted before arrow."),Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead:t(1202,e.DiagnosticCategory.Error,"Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_1202","Import assignment cannot be used when targeting ECMAScript modules. Consider using 'import * as ns from \"mod\"', 'import {a} from \"mod\"', 'import d from \"mod\"', or another module format instead."),Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or_another_module_format_instead:t(1203,e.DiagnosticCategory.Error,"Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or__1203","Export assignment cannot be used when targeting ECMAScript modules. Consider using 'export default' or another module format instead."),Cannot_re_export_a_type_when_the_isolatedModules_flag_is_provided:t(1205,e.DiagnosticCategory.Error,"Cannot_re_export_a_type_when_the_isolatedModules_flag_is_provided_1205","Cannot re-export a type when the '--isolatedModules' flag is provided."),Decorators_are_not_valid_here:t(1206,e.DiagnosticCategory.Error,"Decorators_are_not_valid_here_1206","Decorators are not valid here."),Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name:t(1207,e.DiagnosticCategory.Error,"Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name_1207","Decorators cannot be applied to multiple get/set accessors of the same name."),All_files_must_be_modules_when_the_isolatedModules_flag_is_provided:t(1208,e.DiagnosticCategory.Error,"All_files_must_be_modules_when_the_isolatedModules_flag_is_provided_1208","All files must be modules when the '--isolatedModules' flag is provided."),Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode:t(1210,e.DiagnosticCategory.Error,"Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode_1210","Invalid use of '{0}'. Class definitions are automatically in strict mode."),A_class_declaration_without_the_default_modifier_must_have_a_name:t(1211,e.DiagnosticCategory.Error,"A_class_declaration_without_the_default_modifier_must_have_a_name_1211","A class declaration without the 'default' modifier must have a name."),Identifier_expected_0_is_a_reserved_word_in_strict_mode:t(1212,e.DiagnosticCategory.Error,"Identifier_expected_0_is_a_reserved_word_in_strict_mode_1212","Identifier expected. '{0}' is a reserved word in strict mode."),Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode:t(1213,e.DiagnosticCategory.Error,"Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_stric_1213","Identifier expected. '{0}' is a reserved word in strict mode. Class definitions are automatically in strict mode."),Identifier_expected_0_is_a_reserved_word_in_strict_mode_Modules_are_automatically_in_strict_mode:t(1214,e.DiagnosticCategory.Error,"Identifier_expected_0_is_a_reserved_word_in_strict_mode_Modules_are_automatically_in_strict_mode_1214","Identifier expected. '{0}' is a reserved word in strict mode. Modules are automatically in strict mode."),Invalid_use_of_0_Modules_are_automatically_in_strict_mode:t(1215,e.DiagnosticCategory.Error,"Invalid_use_of_0_Modules_are_automatically_in_strict_mode_1215","Invalid use of '{0}'. Modules are automatically in strict mode."),Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules:t(1216,e.DiagnosticCategory.Error,"Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules_1216","Identifier expected. '__esModule' is reserved as an exported marker when transforming ECMAScript modules."),Export_assignment_is_not_supported_when_module_flag_is_system:t(1218,e.DiagnosticCategory.Error,"Export_assignment_is_not_supported_when_module_flag_is_system_1218","Export assignment is not supported when '--module' flag is 'system'."),Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning:t(1219,e.DiagnosticCategory.Error,"Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_t_1219","Experimental support for decorators is a feature that is subject to change in a future release. Set the 'experimentalDecorators' option in your 'tsconfig' or 'jsconfig' to remove this warning."),Generators_are_only_available_when_targeting_ECMAScript_2015_or_higher:t(1220,e.DiagnosticCategory.Error,"Generators_are_only_available_when_targeting_ECMAScript_2015_or_higher_1220","Generators are only available when targeting ECMAScript 2015 or higher."),Generators_are_not_allowed_in_an_ambient_context:t(1221,e.DiagnosticCategory.Error,"Generators_are_not_allowed_in_an_ambient_context_1221","Generators are not allowed in an ambient context."),An_overload_signature_cannot_be_declared_as_a_generator:t(1222,e.DiagnosticCategory.Error,"An_overload_signature_cannot_be_declared_as_a_generator_1222","An overload signature cannot be declared as a generator."),_0_tag_already_specified:t(1223,e.DiagnosticCategory.Error,"_0_tag_already_specified_1223","'{0}' tag already specified."),Signature_0_must_be_a_type_predicate:t(1224,e.DiagnosticCategory.Error,"Signature_0_must_be_a_type_predicate_1224","Signature '{0}' must be a type predicate."),Cannot_find_parameter_0:t(1225,e.DiagnosticCategory.Error,"Cannot_find_parameter_0_1225","Cannot find parameter '{0}'."),Type_predicate_0_is_not_assignable_to_1:t(1226,e.DiagnosticCategory.Error,"Type_predicate_0_is_not_assignable_to_1_1226","Type predicate '{0}' is not assignable to '{1}'."),Parameter_0_is_not_in_the_same_position_as_parameter_1:t(1227,e.DiagnosticCategory.Error,"Parameter_0_is_not_in_the_same_position_as_parameter_1_1227","Parameter '{0}' is not in the same position as parameter '{1}'."),A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods:t(1228,e.DiagnosticCategory.Error,"A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods_1228","A type predicate is only allowed in return type position for functions and methods."),A_type_predicate_cannot_reference_a_rest_parameter:t(1229,e.DiagnosticCategory.Error,"A_type_predicate_cannot_reference_a_rest_parameter_1229","A type predicate cannot reference a rest parameter."),A_type_predicate_cannot_reference_element_0_in_a_binding_pattern:t(1230,e.DiagnosticCategory.Error,"A_type_predicate_cannot_reference_element_0_in_a_binding_pattern_1230","A type predicate cannot reference element '{0}' in a binding pattern."),An_export_assignment_can_only_be_used_in_a_module:t(1231,e.DiagnosticCategory.Error,"An_export_assignment_can_only_be_used_in_a_module_1231","An export assignment can only be used in a module."),An_import_declaration_can_only_be_used_in_a_namespace_or_module:t(1232,e.DiagnosticCategory.Error,"An_import_declaration_can_only_be_used_in_a_namespace_or_module_1232","An import declaration can only be used in a namespace or module."),An_export_declaration_can_only_be_used_in_a_module:t(1233,e.DiagnosticCategory.Error,"An_export_declaration_can_only_be_used_in_a_module_1233","An export declaration can only be used in a module."),An_ambient_module_declaration_is_only_allowed_at_the_top_level_in_a_file:t(1234,e.DiagnosticCategory.Error,"An_ambient_module_declaration_is_only_allowed_at_the_top_level_in_a_file_1234","An ambient module declaration is only allowed at the top level in a file."),A_namespace_declaration_is_only_allowed_in_a_namespace_or_module:t(1235,e.DiagnosticCategory.Error,"A_namespace_declaration_is_only_allowed_in_a_namespace_or_module_1235","A namespace declaration is only allowed in a namespace or module."),The_return_type_of_a_property_decorator_function_must_be_either_void_or_any:t(1236,e.DiagnosticCategory.Error,"The_return_type_of_a_property_decorator_function_must_be_either_void_or_any_1236","The return type of a property decorator function must be either 'void' or 'any'."),The_return_type_of_a_parameter_decorator_function_must_be_either_void_or_any:t(1237,e.DiagnosticCategory.Error,"The_return_type_of_a_parameter_decorator_function_must_be_either_void_or_any_1237","The return type of a parameter decorator function must be either 'void' or 'any'."),Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression:t(1238,e.DiagnosticCategory.Error,"Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression_1238","Unable to resolve signature of class decorator when called as an expression."),Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression:t(1239,e.DiagnosticCategory.Error,"Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression_1239","Unable to resolve signature of parameter decorator when called as an expression."),Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression:t(1240,e.DiagnosticCategory.Error,"Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression_1240","Unable to resolve signature of property decorator when called as an expression."),Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression:t(1241,e.DiagnosticCategory.Error,"Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression_1241","Unable to resolve signature of method decorator when called as an expression."),abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration:t(1242,e.DiagnosticCategory.Error,"abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration_1242","'abstract' modifier can only appear on a class, method, or property declaration."),_0_modifier_cannot_be_used_with_1_modifier:t(1243,e.DiagnosticCategory.Error,"_0_modifier_cannot_be_used_with_1_modifier_1243","'{0}' modifier cannot be used with '{1}' modifier."),Abstract_methods_can_only_appear_within_an_abstract_class:t(1244,e.DiagnosticCategory.Error,"Abstract_methods_can_only_appear_within_an_abstract_class_1244","Abstract methods can only appear within an abstract class."),Method_0_cannot_have_an_implementation_because_it_is_marked_abstract:t(1245,e.DiagnosticCategory.Error,"Method_0_cannot_have_an_implementation_because_it_is_marked_abstract_1245","Method '{0}' cannot have an implementation because it is marked abstract."),An_interface_property_cannot_have_an_initializer:t(1246,e.DiagnosticCategory.Error,"An_interface_property_cannot_have_an_initializer_1246","An interface property cannot have an initializer."),A_type_literal_property_cannot_have_an_initializer:t(1247,e.DiagnosticCategory.Error,"A_type_literal_property_cannot_have_an_initializer_1247","A type literal property cannot have an initializer."),A_class_member_cannot_have_the_0_keyword:t(1248,e.DiagnosticCategory.Error,"A_class_member_cannot_have_the_0_keyword_1248","A class member cannot have the '{0}' keyword."),A_decorator_can_only_decorate_a_method_implementation_not_an_overload:t(1249,e.DiagnosticCategory.Error,"A_decorator_can_only_decorate_a_method_implementation_not_an_overload_1249","A decorator can only decorate a method implementation, not an overload."),Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5:t(1250,e.DiagnosticCategory.Error,"Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_1250","Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'."),Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Class_definitions_are_automatically_in_strict_mode:t(1251,e.DiagnosticCategory.Error,"Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Class_d_1251","Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. Class definitions are automatically in strict mode."),Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Modules_are_automatically_in_strict_mode:t(1252,e.DiagnosticCategory.Error,"Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Modules_1252","Function declarations are not allowed inside blocks in strict mode when targeting 'ES3' or 'ES5'. Modules are automatically in strict mode."),_0_tag_cannot_be_used_independently_as_a_top_level_JSDoc_tag:t(1253,e.DiagnosticCategory.Error,"_0_tag_cannot_be_used_independently_as_a_top_level_JSDoc_tag_1253","'{0}' tag cannot be used independently as a top level JSDoc tag."),A_const_initializer_in_an_ambient_context_must_be_a_string_or_numeric_literal_or_literal_enum_reference:t(1254,e.DiagnosticCategory.Error,"A_const_initializer_in_an_ambient_context_must_be_a_string_or_numeric_literal_or_literal_enum_refere_1254","A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference."),A_definite_assignment_assertion_is_not_permitted_in_this_context:t(1255,e.DiagnosticCategory.Error,"A_definite_assignment_assertion_is_not_permitted_in_this_context_1255","A definite assignment assertion '!' is not permitted in this context."),A_rest_element_must_be_last_in_a_tuple_type:t(1256,e.DiagnosticCategory.Error,"A_rest_element_must_be_last_in_a_tuple_type_1256","A rest element must be last in a tuple type."),A_required_element_cannot_follow_an_optional_element:t(1257,e.DiagnosticCategory.Error,"A_required_element_cannot_follow_an_optional_element_1257","A required element cannot follow an optional element."),Definite_assignment_assertions_can_only_be_used_along_with_a_type_annotation:t(1258,e.DiagnosticCategory.Error,"Definite_assignment_assertions_can_only_be_used_along_with_a_type_annotation_1258","Definite assignment assertions can only be used along with a type annotation."),Module_0_can_only_be_default_imported_using_the_1_flag:t(1259,e.DiagnosticCategory.Error,"Module_0_can_only_be_default_imported_using_the_1_flag_1259","Module '{0}' can only be default-imported using the '{1}' flag"),Keywords_cannot_contain_escape_characters:t(1260,e.DiagnosticCategory.Error,"Keywords_cannot_contain_escape_characters_1260","Keywords cannot contain escape characters."),with_statements_are_not_allowed_in_an_async_function_block:t(1300,e.DiagnosticCategory.Error,"with_statements_are_not_allowed_in_an_async_function_block_1300","'with' statements are not allowed in an async function block."),await_expression_is_only_allowed_within_an_async_function:t(1308,e.DiagnosticCategory.Error,"await_expression_is_only_allowed_within_an_async_function_1308","'await' expression is only allowed within an async function."),can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment:t(1312,e.DiagnosticCategory.Error,"can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment_1312","'=' can only be used in an object literal property inside a destructuring assignment."),The_body_of_an_if_statement_cannot_be_the_empty_statement:t(1313,e.DiagnosticCategory.Error,"The_body_of_an_if_statement_cannot_be_the_empty_statement_1313","The body of an 'if' statement cannot be the empty statement."),Global_module_exports_may_only_appear_in_module_files:t(1314,e.DiagnosticCategory.Error,"Global_module_exports_may_only_appear_in_module_files_1314","Global module exports may only appear in module files."),Global_module_exports_may_only_appear_in_declaration_files:t(1315,e.DiagnosticCategory.Error,"Global_module_exports_may_only_appear_in_declaration_files_1315","Global module exports may only appear in declaration files."),Global_module_exports_may_only_appear_at_top_level:t(1316,e.DiagnosticCategory.Error,"Global_module_exports_may_only_appear_at_top_level_1316","Global module exports may only appear at top level."),A_parameter_property_cannot_be_declared_using_a_rest_parameter:t(1317,e.DiagnosticCategory.Error,"A_parameter_property_cannot_be_declared_using_a_rest_parameter_1317","A parameter property cannot be declared using a rest parameter."),An_abstract_accessor_cannot_have_an_implementation:t(1318,e.DiagnosticCategory.Error,"An_abstract_accessor_cannot_have_an_implementation_1318","An abstract accessor cannot have an implementation."),A_default_export_can_only_be_used_in_an_ECMAScript_style_module:t(1319,e.DiagnosticCategory.Error,"A_default_export_can_only_be_used_in_an_ECMAScript_style_module_1319","A default export can only be used in an ECMAScript-style module."),Type_of_await_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member:t(1320,e.DiagnosticCategory.Error,"Type_of_await_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member_1320","Type of 'await' operand must either be a valid promise or must not contain a callable 'then' member."),Type_of_yield_operand_in_an_async_generator_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member:t(1321,e.DiagnosticCategory.Error,"Type_of_yield_operand_in_an_async_generator_must_either_be_a_valid_promise_or_must_not_contain_a_cal_1321","Type of 'yield' operand in an async generator must either be a valid promise or must not contain a callable 'then' member."),Type_of_iterated_elements_of_a_yield_Asterisk_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member:t(1322,e.DiagnosticCategory.Error,"Type_of_iterated_elements_of_a_yield_Asterisk_operand_must_either_be_a_valid_promise_or_must_not_con_1322","Type of iterated elements of a 'yield*' operand must either be a valid promise or must not contain a callable 'then' member."),Dynamic_imports_are_only_supported_when_the_module_flag_is_set_to_esnext_commonjs_amd_system_or_umd:t(1323,e.DiagnosticCategory.Error,"Dynamic_imports_are_only_supported_when_the_module_flag_is_set_to_esnext_commonjs_amd_system_or_umd_1323","Dynamic imports are only supported when the '--module' flag is set to 'esnext', 'commonjs', 'amd', 'system', or 'umd'."),Dynamic_import_must_have_one_specifier_as_an_argument:t(1324,e.DiagnosticCategory.Error,"Dynamic_import_must_have_one_specifier_as_an_argument_1324","Dynamic import must have one specifier as an argument."),Specifier_of_dynamic_import_cannot_be_spread_element:t(1325,e.DiagnosticCategory.Error,"Specifier_of_dynamic_import_cannot_be_spread_element_1325","Specifier of dynamic import cannot be spread element."),Dynamic_import_cannot_have_type_arguments:t(1326,e.DiagnosticCategory.Error,"Dynamic_import_cannot_have_type_arguments_1326","Dynamic import cannot have type arguments"),String_literal_with_double_quotes_expected:t(1327,e.DiagnosticCategory.Error,"String_literal_with_double_quotes_expected_1327","String literal with double quotes expected."),Property_value_can_only_be_string_literal_numeric_literal_true_false_null_object_literal_or_array_literal:t(1328,e.DiagnosticCategory.Error,"Property_value_can_only_be_string_literal_numeric_literal_true_false_null_object_literal_or_array_li_1328","Property value can only be string literal, numeric literal, 'true', 'false', 'null', object literal or array literal."),_0_accepts_too_few_arguments_to_be_used_as_a_decorator_here_Did_you_mean_to_call_it_first_and_write_0:t(1329,e.DiagnosticCategory.Error,"_0_accepts_too_few_arguments_to_be_used_as_a_decorator_here_Did_you_mean_to_call_it_first_and_write__1329","'{0}' accepts too few arguments to be used as a decorator here. Did you mean to call it first and write '@{0}()'?"),A_property_of_an_interface_or_type_literal_whose_type_is_a_unique_symbol_type_must_be_readonly:t(1330,e.DiagnosticCategory.Error,"A_property_of_an_interface_or_type_literal_whose_type_is_a_unique_symbol_type_must_be_readonly_1330","A property of an interface or type literal whose type is a 'unique symbol' type must be 'readonly'."),A_property_of_a_class_whose_type_is_a_unique_symbol_type_must_be_both_static_and_readonly:t(1331,e.DiagnosticCategory.Error,"A_property_of_a_class_whose_type_is_a_unique_symbol_type_must_be_both_static_and_readonly_1331","A property of a class whose type is a 'unique symbol' type must be both 'static' and 'readonly'."),A_variable_whose_type_is_a_unique_symbol_type_must_be_const:t(1332,e.DiagnosticCategory.Error,"A_variable_whose_type_is_a_unique_symbol_type_must_be_const_1332","A variable whose type is a 'unique symbol' type must be 'const'."),unique_symbol_types_may_not_be_used_on_a_variable_declaration_with_a_binding_name:t(1333,e.DiagnosticCategory.Error,"unique_symbol_types_may_not_be_used_on_a_variable_declaration_with_a_binding_name_1333","'unique symbol' types may not be used on a variable declaration with a binding name."),unique_symbol_types_are_only_allowed_on_variables_in_a_variable_statement:t(1334,e.DiagnosticCategory.Error,"unique_symbol_types_are_only_allowed_on_variables_in_a_variable_statement_1334","'unique symbol' types are only allowed on variables in a variable statement."),unique_symbol_types_are_not_allowed_here:t(1335,e.DiagnosticCategory.Error,"unique_symbol_types_are_not_allowed_here_1335","'unique symbol' types are not allowed here."),An_index_signature_parameter_type_cannot_be_a_type_alias_Consider_writing_0_Colon_1_Colon_2_instead:t(1336,e.DiagnosticCategory.Error,"An_index_signature_parameter_type_cannot_be_a_type_alias_Consider_writing_0_Colon_1_Colon_2_instead_1336","An index signature parameter type cannot be a type alias. Consider writing '[{0}: {1}]: {2}' instead."),An_index_signature_parameter_type_cannot_be_a_union_type_Consider_using_a_mapped_object_type_instead:t(1337,e.DiagnosticCategory.Error,"An_index_signature_parameter_type_cannot_be_a_union_type_Consider_using_a_mapped_object_type_instead_1337","An index signature parameter type cannot be a union type. Consider using a mapped object type instead."),infer_declarations_are_only_permitted_in_the_extends_clause_of_a_conditional_type:t(1338,e.DiagnosticCategory.Error,"infer_declarations_are_only_permitted_in_the_extends_clause_of_a_conditional_type_1338","'infer' declarations are only permitted in the 'extends' clause of a conditional type."),Module_0_does_not_refer_to_a_value_but_is_used_as_a_value_here:t(1339,e.DiagnosticCategory.Error,"Module_0_does_not_refer_to_a_value_but_is_used_as_a_value_here_1339","Module '{0}' does not refer to a value, but is used as a value here."),Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0:t(1340,e.DiagnosticCategory.Error,"Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0_1340","Module '{0}' does not refer to a type, but is used as a type here. Did you mean 'typeof import('{0}')'?"),Type_arguments_cannot_be_used_here:t(1342,e.DiagnosticCategory.Error,"Type_arguments_cannot_be_used_here_1342","Type arguments cannot be used here."),The_import_meta_meta_property_is_only_allowed_when_the_module_option_is_esnext_or_system:t(1343,e.DiagnosticCategory.Error,"The_import_meta_meta_property_is_only_allowed_when_the_module_option_is_esnext_or_system_1343","The 'import.meta' meta-property is only allowed when the '--module' option is 'esnext' or 'system'."),A_label_is_not_allowed_here:t(1344,e.DiagnosticCategory.Error,"A_label_is_not_allowed_here_1344","'A label is not allowed here."),An_expression_of_type_void_cannot_be_tested_for_truthiness:t(1345,e.DiagnosticCategory.Error,"An_expression_of_type_void_cannot_be_tested_for_truthiness_1345","An expression of type 'void' cannot be tested for truthiness"),This_parameter_is_not_allowed_with_use_strict_directive:t(1346,e.DiagnosticCategory.Error,"This_parameter_is_not_allowed_with_use_strict_directive_1346","This parameter is not allowed with 'use strict' directive."),use_strict_directive_cannot_be_used_with_non_simple_parameter_list:t(1347,e.DiagnosticCategory.Error,"use_strict_directive_cannot_be_used_with_non_simple_parameter_list_1347","'use strict' directive cannot be used with non-simple parameter list."),Non_simple_parameter_declared_here:t(1348,e.DiagnosticCategory.Error,"Non_simple_parameter_declared_here_1348","Non-simple parameter declared here."),use_strict_directive_used_here:t(1349,e.DiagnosticCategory.Error,"use_strict_directive_used_here_1349","'use strict' directive used here."),Print_the_final_configuration_instead_of_building:t(1350,e.DiagnosticCategory.Message,"Print_the_final_configuration_instead_of_building_1350","Print the final configuration instead of building."),An_identifier_or_keyword_cannot_immediately_follow_a_numeric_literal:t(1351,e.DiagnosticCategory.Error,"An_identifier_or_keyword_cannot_immediately_follow_a_numeric_literal_1351","An identifier or keyword cannot immediately follow a numeric literal."),A_bigint_literal_cannot_use_exponential_notation:t(1352,e.DiagnosticCategory.Error,"A_bigint_literal_cannot_use_exponential_notation_1352","A bigint literal cannot use exponential notation."),A_bigint_literal_must_be_an_integer:t(1353,e.DiagnosticCategory.Error,"A_bigint_literal_must_be_an_integer_1353","A bigint literal must be an integer."),readonly_type_modifier_is_only_permitted_on_array_and_tuple_literal_types:t(1354,e.DiagnosticCategory.Error,"readonly_type_modifier_is_only_permitted_on_array_and_tuple_literal_types_1354","'readonly' type modifier is only permitted on array and tuple literal types."),A_const_assertions_can_only_be_applied_to_references_to_enum_members_or_string_number_boolean_array_or_object_literals:t(1355,e.DiagnosticCategory.Error,"A_const_assertions_can_only_be_applied_to_references_to_enum_members_or_string_number_boolean_array__1355","A 'const' assertions can only be applied to references to enum members, or string, number, boolean, array, or object literals."),Did_you_mean_to_mark_this_function_as_async:t(1356,e.DiagnosticCategory.Error,"Did_you_mean_to_mark_this_function_as_async_1356","Did you mean to mark this function as 'async'?"),An_enum_member_name_must_be_followed_by_a_or:t(1357,e.DiagnosticCategory.Error,"An_enum_member_name_must_be_followed_by_a_or_1357","An enum member name must be followed by a ',', '=', or '}'."),Tagged_template_expressions_are_not_permitted_in_an_optional_chain:t(1358,e.DiagnosticCategory.Error,"Tagged_template_expressions_are_not_permitted_in_an_optional_chain_1358","Tagged template expressions are not permitted in an optional chain."),Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here:t(1359,e.DiagnosticCategory.Error,"Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here_1359","Identifier expected. '{0}' is a reserved word that cannot be used here."),The_types_of_0_are_incompatible_between_these_types:t(2200,e.DiagnosticCategory.Error,"The_types_of_0_are_incompatible_between_these_types_2200","The types of '{0}' are incompatible between these types."),The_types_returned_by_0_are_incompatible_between_these_types:t(2201,e.DiagnosticCategory.Error,"The_types_returned_by_0_are_incompatible_between_these_types_2201","The types returned by '{0}' are incompatible between these types."),Call_signature_return_types_0_and_1_are_incompatible:t(2202,e.DiagnosticCategory.Error,"Call_signature_return_types_0_and_1_are_incompatible_2202","Call signature return types '{0}' and '{1}' are incompatible.",void 0,!0),Construct_signature_return_types_0_and_1_are_incompatible:t(2203,e.DiagnosticCategory.Error,"Construct_signature_return_types_0_and_1_are_incompatible_2203","Construct signature return types '{0}' and '{1}' are incompatible.",void 0,!0),Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1:t(2204,e.DiagnosticCategory.Error,"Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1_2204","Call signatures with no arguments have incompatible return types '{0}' and '{1}'.",void 0,!0),Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1:t(2205,e.DiagnosticCategory.Error,"Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1_2205","Construct signatures with no arguments have incompatible return types '{0}' and '{1}'.",void 0,!0),Duplicate_identifier_0:t(2300,e.DiagnosticCategory.Error,"Duplicate_identifier_0_2300","Duplicate identifier '{0}'."),Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor:t(2301,e.DiagnosticCategory.Error,"Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor_2301","Initializer of instance member variable '{0}' cannot reference identifier '{1}' declared in the constructor."),Static_members_cannot_reference_class_type_parameters:t(2302,e.DiagnosticCategory.Error,"Static_members_cannot_reference_class_type_parameters_2302","Static members cannot reference class type parameters."),Circular_definition_of_import_alias_0:t(2303,e.DiagnosticCategory.Error,"Circular_definition_of_import_alias_0_2303","Circular definition of import alias '{0}'."),Cannot_find_name_0:t(2304,e.DiagnosticCategory.Error,"Cannot_find_name_0_2304","Cannot find name '{0}'."),Module_0_has_no_exported_member_1:t(2305,e.DiagnosticCategory.Error,"Module_0_has_no_exported_member_1_2305","Module '{0}' has no exported member '{1}'."),File_0_is_not_a_module:t(2306,e.DiagnosticCategory.Error,"File_0_is_not_a_module_2306","File '{0}' is not a module."),Cannot_find_module_0:t(2307,e.DiagnosticCategory.Error,"Cannot_find_module_0_2307","Cannot find module '{0}'."),Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity:t(2308,e.DiagnosticCategory.Error,"Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambig_2308","Module {0} has already exported a member named '{1}'. Consider explicitly re-exporting to resolve the ambiguity."),An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements:t(2309,e.DiagnosticCategory.Error,"An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements_2309","An export assignment cannot be used in a module with other exported elements."),Type_0_recursively_references_itself_as_a_base_type:t(2310,e.DiagnosticCategory.Error,"Type_0_recursively_references_itself_as_a_base_type_2310","Type '{0}' recursively references itself as a base type."),A_class_may_only_extend_another_class:t(2311,e.DiagnosticCategory.Error,"A_class_may_only_extend_another_class_2311","A class may only extend another class."),An_interface_can_only_extend_an_object_type_or_intersection_of_object_types_with_statically_known_members:t(2312,e.DiagnosticCategory.Error,"An_interface_can_only_extend_an_object_type_or_intersection_of_object_types_with_statically_known_me_2312","An interface can only extend an object type or intersection of object types with statically known members."),Type_parameter_0_has_a_circular_constraint:t(2313,e.DiagnosticCategory.Error,"Type_parameter_0_has_a_circular_constraint_2313","Type parameter '{0}' has a circular constraint."),Generic_type_0_requires_1_type_argument_s:t(2314,e.DiagnosticCategory.Error,"Generic_type_0_requires_1_type_argument_s_2314","Generic type '{0}' requires {1} type argument(s)."),Type_0_is_not_generic:t(2315,e.DiagnosticCategory.Error,"Type_0_is_not_generic_2315","Type '{0}' is not generic."),Global_type_0_must_be_a_class_or_interface_type:t(2316,e.DiagnosticCategory.Error,"Global_type_0_must_be_a_class_or_interface_type_2316","Global type '{0}' must be a class or interface type."),Global_type_0_must_have_1_type_parameter_s:t(2317,e.DiagnosticCategory.Error,"Global_type_0_must_have_1_type_parameter_s_2317","Global type '{0}' must have {1} type parameter(s)."),Cannot_find_global_type_0:t(2318,e.DiagnosticCategory.Error,"Cannot_find_global_type_0_2318","Cannot find global type '{0}'."),Named_property_0_of_types_1_and_2_are_not_identical:t(2319,e.DiagnosticCategory.Error,"Named_property_0_of_types_1_and_2_are_not_identical_2319","Named property '{0}' of types '{1}' and '{2}' are not identical."),Interface_0_cannot_simultaneously_extend_types_1_and_2:t(2320,e.DiagnosticCategory.Error,"Interface_0_cannot_simultaneously_extend_types_1_and_2_2320","Interface '{0}' cannot simultaneously extend types '{1}' and '{2}'."),Excessive_stack_depth_comparing_types_0_and_1:t(2321,e.DiagnosticCategory.Error,"Excessive_stack_depth_comparing_types_0_and_1_2321","Excessive stack depth comparing types '{0}' and '{1}'."),Type_0_is_not_assignable_to_type_1:t(2322,e.DiagnosticCategory.Error,"Type_0_is_not_assignable_to_type_1_2322","Type '{0}' is not assignable to type '{1}'."),Cannot_redeclare_exported_variable_0:t(2323,e.DiagnosticCategory.Error,"Cannot_redeclare_exported_variable_0_2323","Cannot redeclare exported variable '{0}'."),Property_0_is_missing_in_type_1:t(2324,e.DiagnosticCategory.Error,"Property_0_is_missing_in_type_1_2324","Property '{0}' is missing in type '{1}'."),Property_0_is_private_in_type_1_but_not_in_type_2:t(2325,e.DiagnosticCategory.Error,"Property_0_is_private_in_type_1_but_not_in_type_2_2325","Property '{0}' is private in type '{1}' but not in type '{2}'."),Types_of_property_0_are_incompatible:t(2326,e.DiagnosticCategory.Error,"Types_of_property_0_are_incompatible_2326","Types of property '{0}' are incompatible."),Property_0_is_optional_in_type_1_but_required_in_type_2:t(2327,e.DiagnosticCategory.Error,"Property_0_is_optional_in_type_1_but_required_in_type_2_2327","Property '{0}' is optional in type '{1}' but required in type '{2}'."),Types_of_parameters_0_and_1_are_incompatible:t(2328,e.DiagnosticCategory.Error,"Types_of_parameters_0_and_1_are_incompatible_2328","Types of parameters '{0}' and '{1}' are incompatible."),Index_signature_is_missing_in_type_0:t(2329,e.DiagnosticCategory.Error,"Index_signature_is_missing_in_type_0_2329","Index signature is missing in type '{0}'."),Index_signatures_are_incompatible:t(2330,e.DiagnosticCategory.Error,"Index_signatures_are_incompatible_2330","Index signatures are incompatible."),this_cannot_be_referenced_in_a_module_or_namespace_body:t(2331,e.DiagnosticCategory.Error,"this_cannot_be_referenced_in_a_module_or_namespace_body_2331","'this' cannot be referenced in a module or namespace body."),this_cannot_be_referenced_in_current_location:t(2332,e.DiagnosticCategory.Error,"this_cannot_be_referenced_in_current_location_2332","'this' cannot be referenced in current location."),this_cannot_be_referenced_in_constructor_arguments:t(2333,e.DiagnosticCategory.Error,"this_cannot_be_referenced_in_constructor_arguments_2333","'this' cannot be referenced in constructor arguments."),this_cannot_be_referenced_in_a_static_property_initializer:t(2334,e.DiagnosticCategory.Error,"this_cannot_be_referenced_in_a_static_property_initializer_2334","'this' cannot be referenced in a static property initializer."),super_can_only_be_referenced_in_a_derived_class:t(2335,e.DiagnosticCategory.Error,"super_can_only_be_referenced_in_a_derived_class_2335","'super' can only be referenced in a derived class."),super_cannot_be_referenced_in_constructor_arguments:t(2336,e.DiagnosticCategory.Error,"super_cannot_be_referenced_in_constructor_arguments_2336","'super' cannot be referenced in constructor arguments."),Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors:t(2337,e.DiagnosticCategory.Error,"Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors_2337","Super calls are not permitted outside constructors or in nested functions inside constructors."),super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class:t(2338,e.DiagnosticCategory.Error,"super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_der_2338","'super' property access is permitted only in a constructor, member function, or member accessor of a derived class."),Property_0_does_not_exist_on_type_1:t(2339,e.DiagnosticCategory.Error,"Property_0_does_not_exist_on_type_1_2339","Property '{0}' does not exist on type '{1}'."),Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword:t(2340,e.DiagnosticCategory.Error,"Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword_2340","Only public and protected methods of the base class are accessible via the 'super' keyword."),Property_0_is_private_and_only_accessible_within_class_1:t(2341,e.DiagnosticCategory.Error,"Property_0_is_private_and_only_accessible_within_class_1_2341","Property '{0}' is private and only accessible within class '{1}'."),An_index_expression_argument_must_be_of_type_string_number_symbol_or_any:t(2342,e.DiagnosticCategory.Error,"An_index_expression_argument_must_be_of_type_string_number_symbol_or_any_2342","An index expression argument must be of type 'string', 'number', 'symbol', or 'any'."),This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_version_of_0:t(2343,e.DiagnosticCategory.Error,"This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_ve_2343","This syntax requires an imported helper named '{1}' which does not exist in '{0}'. Consider upgrading your version of '{0}'."),Type_0_does_not_satisfy_the_constraint_1:t(2344,e.DiagnosticCategory.Error,"Type_0_does_not_satisfy_the_constraint_1_2344","Type '{0}' does not satisfy the constraint '{1}'."),Argument_of_type_0_is_not_assignable_to_parameter_of_type_1:t(2345,e.DiagnosticCategory.Error,"Argument_of_type_0_is_not_assignable_to_parameter_of_type_1_2345","Argument of type '{0}' is not assignable to parameter of type '{1}'."),Call_target_does_not_contain_any_signatures:t(2346,e.DiagnosticCategory.Error,"Call_target_does_not_contain_any_signatures_2346","Call target does not contain any signatures."),Untyped_function_calls_may_not_accept_type_arguments:t(2347,e.DiagnosticCategory.Error,"Untyped_function_calls_may_not_accept_type_arguments_2347","Untyped function calls may not accept type arguments."),Value_of_type_0_is_not_callable_Did_you_mean_to_include_new:t(2348,e.DiagnosticCategory.Error,"Value_of_type_0_is_not_callable_Did_you_mean_to_include_new_2348","Value of type '{0}' is not callable. Did you mean to include 'new'?"),This_expression_is_not_callable:t(2349,e.DiagnosticCategory.Error,"This_expression_is_not_callable_2349","This expression is not callable."),Only_a_void_function_can_be_called_with_the_new_keyword:t(2350,e.DiagnosticCategory.Error,"Only_a_void_function_can_be_called_with_the_new_keyword_2350","Only a void function can be called with the 'new' keyword."),This_expression_is_not_constructable:t(2351,e.DiagnosticCategory.Error,"This_expression_is_not_constructable_2351","This expression is not constructable."),Conversion_of_type_0_to_type_1_may_be_a_mistake_because_neither_type_sufficiently_overlaps_with_the_other_If_this_was_intentional_convert_the_expression_to_unknown_first:t(2352,e.DiagnosticCategory.Error,"Conversion_of_type_0_to_type_1_may_be_a_mistake_because_neither_type_sufficiently_overlaps_with_the__2352","Conversion of type '{0}' to type '{1}' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first."),Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1:t(2353,e.DiagnosticCategory.Error,"Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1_2353","Object literal may only specify known properties, and '{0}' does not exist in type '{1}'."),This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found:t(2354,e.DiagnosticCategory.Error,"This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found_2354","This syntax requires an imported helper but module '{0}' cannot be found."),A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value:t(2355,e.DiagnosticCategory.Error,"A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value_2355","A function whose declared type is neither 'void' nor 'any' must return a value."),An_arithmetic_operand_must_be_of_type_any_number_bigint_or_an_enum_type:t(2356,e.DiagnosticCategory.Error,"An_arithmetic_operand_must_be_of_type_any_number_bigint_or_an_enum_type_2356","An arithmetic operand must be of type 'any', 'number', 'bigint' or an enum type."),The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access:t(2357,e.DiagnosticCategory.Error,"The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access_2357","The operand of an increment or decrement operator must be a variable or a property access."),The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter:t(2358,e.DiagnosticCategory.Error,"The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_paramete_2358","The left-hand side of an 'instanceof' expression must be of type 'any', an object type or a type parameter."),The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type:t(2359,e.DiagnosticCategory.Error,"The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_F_2359","The right-hand side of an 'instanceof' expression must be of type 'any' or of a type assignable to the 'Function' interface type."),The_left_hand_side_of_an_in_expression_must_be_of_type_any_string_number_or_symbol:t(2360,e.DiagnosticCategory.Error,"The_left_hand_side_of_an_in_expression_must_be_of_type_any_string_number_or_symbol_2360","The left-hand side of an 'in' expression must be of type 'any', 'string', 'number', or 'symbol'."),The_right_hand_side_of_an_in_expression_must_be_of_type_any_an_object_type_or_a_type_parameter:t(2361,e.DiagnosticCategory.Error,"The_right_hand_side_of_an_in_expression_must_be_of_type_any_an_object_type_or_a_type_parameter_2361","The right-hand side of an 'in' expression must be of type 'any', an object type or a type parameter."),The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type:t(2362,e.DiagnosticCategory.Error,"The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type_2362","The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type."),The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type:t(2363,e.DiagnosticCategory.Error,"The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type_2363","The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type."),The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access:t(2364,e.DiagnosticCategory.Error,"The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access_2364","The left-hand side of an assignment expression must be a variable or a property access."),Operator_0_cannot_be_applied_to_types_1_and_2:t(2365,e.DiagnosticCategory.Error,"Operator_0_cannot_be_applied_to_types_1_and_2_2365","Operator '{0}' cannot be applied to types '{1}' and '{2}'."),Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined:t(2366,e.DiagnosticCategory.Error,"Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined_2366","Function lacks ending return statement and return type does not include 'undefined'."),This_condition_will_always_return_0_since_the_types_1_and_2_have_no_overlap:t(2367,e.DiagnosticCategory.Error,"This_condition_will_always_return_0_since_the_types_1_and_2_have_no_overlap_2367","This condition will always return '{0}' since the types '{1}' and '{2}' have no overlap."),Type_parameter_name_cannot_be_0:t(2368,e.DiagnosticCategory.Error,"Type_parameter_name_cannot_be_0_2368","Type parameter name cannot be '{0}'."),A_parameter_property_is_only_allowed_in_a_constructor_implementation:t(2369,e.DiagnosticCategory.Error,"A_parameter_property_is_only_allowed_in_a_constructor_implementation_2369","A parameter property is only allowed in a constructor implementation."),A_rest_parameter_must_be_of_an_array_type:t(2370,e.DiagnosticCategory.Error,"A_rest_parameter_must_be_of_an_array_type_2370","A rest parameter must be of an array type."),A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation:t(2371,e.DiagnosticCategory.Error,"A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation_2371","A parameter initializer is only allowed in a function or constructor implementation."),Parameter_0_cannot_be_referenced_in_its_initializer:t(2372,e.DiagnosticCategory.Error,"Parameter_0_cannot_be_referenced_in_its_initializer_2372","Parameter '{0}' cannot be referenced in its initializer."),Initializer_of_parameter_0_cannot_reference_identifier_1_declared_after_it:t(2373,e.DiagnosticCategory.Error,"Initializer_of_parameter_0_cannot_reference_identifier_1_declared_after_it_2373","Initializer of parameter '{0}' cannot reference identifier '{1}' declared after it."),Duplicate_string_index_signature:t(2374,e.DiagnosticCategory.Error,"Duplicate_string_index_signature_2374","Duplicate string index signature."),Duplicate_number_index_signature:t(2375,e.DiagnosticCategory.Error,"Duplicate_number_index_signature_2375","Duplicate number index signature."),A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties:t(2376,e.DiagnosticCategory.Error,"A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_proper_2376","A 'super' call must be the first statement in the constructor when a class contains initialized properties or has parameter properties."),Constructors_for_derived_classes_must_contain_a_super_call:t(2377,e.DiagnosticCategory.Error,"Constructors_for_derived_classes_must_contain_a_super_call_2377","Constructors for derived classes must contain a 'super' call."),A_get_accessor_must_return_a_value:t(2378,e.DiagnosticCategory.Error,"A_get_accessor_must_return_a_value_2378","A 'get' accessor must return a value."),Getter_and_setter_accessors_do_not_agree_in_visibility:t(2379,e.DiagnosticCategory.Error,"Getter_and_setter_accessors_do_not_agree_in_visibility_2379","Getter and setter accessors do not agree in visibility."),get_and_set_accessor_must_have_the_same_type:t(2380,e.DiagnosticCategory.Error,"get_and_set_accessor_must_have_the_same_type_2380","'get' and 'set' accessor must have the same type."),A_signature_with_an_implementation_cannot_use_a_string_literal_type:t(2381,e.DiagnosticCategory.Error,"A_signature_with_an_implementation_cannot_use_a_string_literal_type_2381","A signature with an implementation cannot use a string literal type."),Specialized_overload_signature_is_not_assignable_to_any_non_specialized_signature:t(2382,e.DiagnosticCategory.Error,"Specialized_overload_signature_is_not_assignable_to_any_non_specialized_signature_2382","Specialized overload signature is not assignable to any non-specialized signature."),Overload_signatures_must_all_be_exported_or_non_exported:t(2383,e.DiagnosticCategory.Error,"Overload_signatures_must_all_be_exported_or_non_exported_2383","Overload signatures must all be exported or non-exported."),Overload_signatures_must_all_be_ambient_or_non_ambient:t(2384,e.DiagnosticCategory.Error,"Overload_signatures_must_all_be_ambient_or_non_ambient_2384","Overload signatures must all be ambient or non-ambient."),Overload_signatures_must_all_be_public_private_or_protected:t(2385,e.DiagnosticCategory.Error,"Overload_signatures_must_all_be_public_private_or_protected_2385","Overload signatures must all be public, private or protected."),Overload_signatures_must_all_be_optional_or_required:t(2386,e.DiagnosticCategory.Error,"Overload_signatures_must_all_be_optional_or_required_2386","Overload signatures must all be optional or required."),Function_overload_must_be_static:t(2387,e.DiagnosticCategory.Error,"Function_overload_must_be_static_2387","Function overload must be static."),Function_overload_must_not_be_static:t(2388,e.DiagnosticCategory.Error,"Function_overload_must_not_be_static_2388","Function overload must not be static."),Function_implementation_name_must_be_0:t(2389,e.DiagnosticCategory.Error,"Function_implementation_name_must_be_0_2389","Function implementation name must be '{0}'."),Constructor_implementation_is_missing:t(2390,e.DiagnosticCategory.Error,"Constructor_implementation_is_missing_2390","Constructor implementation is missing."),Function_implementation_is_missing_or_not_immediately_following_the_declaration:t(2391,e.DiagnosticCategory.Error,"Function_implementation_is_missing_or_not_immediately_following_the_declaration_2391","Function implementation is missing or not immediately following the declaration."),Multiple_constructor_implementations_are_not_allowed:t(2392,e.DiagnosticCategory.Error,"Multiple_constructor_implementations_are_not_allowed_2392","Multiple constructor implementations are not allowed."),Duplicate_function_implementation:t(2393,e.DiagnosticCategory.Error,"Duplicate_function_implementation_2393","Duplicate function implementation."),This_overload_signature_is_not_compatible_with_its_implementation_signature:t(2394,e.DiagnosticCategory.Error,"This_overload_signature_is_not_compatible_with_its_implementation_signature_2394","This overload signature is not compatible with its implementation signature."),Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local:t(2395,e.DiagnosticCategory.Error,"Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local_2395","Individual declarations in merged declaration '{0}' must be all exported or all local."),Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters:t(2396,e.DiagnosticCategory.Error,"Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters_2396","Duplicate identifier 'arguments'. Compiler uses 'arguments' to initialize rest parameters."),Declaration_name_conflicts_with_built_in_global_identifier_0:t(2397,e.DiagnosticCategory.Error,"Declaration_name_conflicts_with_built_in_global_identifier_0_2397","Declaration name conflicts with built-in global identifier '{0}'."),Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference:t(2399,e.DiagnosticCategory.Error,"Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference_2399","Duplicate identifier '_this'. Compiler uses variable declaration '_this' to capture 'this' reference."),Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference:t(2400,e.DiagnosticCategory.Error,"Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference_2400","Expression resolves to variable declaration '_this' that compiler uses to capture 'this' reference."),Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference:t(2401,e.DiagnosticCategory.Error,"Duplicate_identifier_super_Compiler_uses_super_to_capture_base_class_reference_2401","Duplicate identifier '_super'. Compiler uses '_super' to capture base class reference."),Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference:t(2402,e.DiagnosticCategory.Error,"Expression_resolves_to_super_that_compiler_uses_to_capture_base_class_reference_2402","Expression resolves to '_super' that compiler uses to capture base class reference."),Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2:t(2403,e.DiagnosticCategory.Error,"Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_t_2403","Subsequent variable declarations must have the same type. Variable '{0}' must be of type '{1}', but here has type '{2}'."),The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation:t(2404,e.DiagnosticCategory.Error,"The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation_2404","The left-hand side of a 'for...in' statement cannot use a type annotation."),The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any:t(2405,e.DiagnosticCategory.Error,"The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any_2405","The left-hand side of a 'for...in' statement must be of type 'string' or 'any'."),The_left_hand_side_of_a_for_in_statement_must_be_a_variable_or_a_property_access:t(2406,e.DiagnosticCategory.Error,"The_left_hand_side_of_a_for_in_statement_must_be_a_variable_or_a_property_access_2406","The left-hand side of a 'for...in' statement must be a variable or a property access."),The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter_but_here_has_type_0:t(2407,e.DiagnosticCategory.Error,"The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter_but_2407","The right-hand side of a 'for...in' statement must be of type 'any', an object type or a type parameter, but here has type '{0}'."),Setters_cannot_return_a_value:t(2408,e.DiagnosticCategory.Error,"Setters_cannot_return_a_value_2408","Setters cannot return a value."),Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class:t(2409,e.DiagnosticCategory.Error,"Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class_2409","Return type of constructor signature must be assignable to the instance type of the class."),The_with_statement_is_not_supported_All_symbols_in_a_with_block_will_have_type_any:t(2410,e.DiagnosticCategory.Error,"The_with_statement_is_not_supported_All_symbols_in_a_with_block_will_have_type_any_2410","The 'with' statement is not supported. All symbols in a 'with' block will have type 'any'."),Property_0_of_type_1_is_not_assignable_to_string_index_type_2:t(2411,e.DiagnosticCategory.Error,"Property_0_of_type_1_is_not_assignable_to_string_index_type_2_2411","Property '{0}' of type '{1}' is not assignable to string index type '{2}'."),Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2:t(2412,e.DiagnosticCategory.Error,"Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2_2412","Property '{0}' of type '{1}' is not assignable to numeric index type '{2}'."),Numeric_index_type_0_is_not_assignable_to_string_index_type_1:t(2413,e.DiagnosticCategory.Error,"Numeric_index_type_0_is_not_assignable_to_string_index_type_1_2413","Numeric index type '{0}' is not assignable to string index type '{1}'."),Class_name_cannot_be_0:t(2414,e.DiagnosticCategory.Error,"Class_name_cannot_be_0_2414","Class name cannot be '{0}'."),Class_0_incorrectly_extends_base_class_1:t(2415,e.DiagnosticCategory.Error,"Class_0_incorrectly_extends_base_class_1_2415","Class '{0}' incorrectly extends base class '{1}'."),Property_0_in_type_1_is_not_assignable_to_the_same_property_in_base_type_2:t(2416,e.DiagnosticCategory.Error,"Property_0_in_type_1_is_not_assignable_to_the_same_property_in_base_type_2_2416","Property '{0}' in type '{1}' is not assignable to the same property in base type '{2}'."),Class_static_side_0_incorrectly_extends_base_class_static_side_1:t(2417,e.DiagnosticCategory.Error,"Class_static_side_0_incorrectly_extends_base_class_static_side_1_2417","Class static side '{0}' incorrectly extends base class static side '{1}'."),Type_of_computed_property_s_value_is_0_which_is_not_assignable_to_type_1:t(2418,e.DiagnosticCategory.Error,"Type_of_computed_property_s_value_is_0_which_is_not_assignable_to_type_1_2418","Type of computed property's value is '{0}', which is not assignable to type '{1}'."),Class_0_incorrectly_implements_interface_1:t(2420,e.DiagnosticCategory.Error,"Class_0_incorrectly_implements_interface_1_2420","Class '{0}' incorrectly implements interface '{1}'."),A_class_can_only_implement_an_object_type_or_intersection_of_object_types_with_statically_known_members:t(2422,e.DiagnosticCategory.Error,"A_class_can_only_implement_an_object_type_or_intersection_of_object_types_with_statically_known_memb_2422","A class can only implement an object type or intersection of object types with statically known members."),Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor:t(2423,e.DiagnosticCategory.Error,"Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_access_2423","Class '{0}' defines instance member function '{1}', but extended class '{2}' defines it as instance member accessor."),Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function:t(2425,e.DiagnosticCategory.Error,"Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_functi_2425","Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member function."),Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function:t(2426,e.DiagnosticCategory.Error,"Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_functi_2426","Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member function."),Interface_name_cannot_be_0:t(2427,e.DiagnosticCategory.Error,"Interface_name_cannot_be_0_2427","Interface name cannot be '{0}'."),All_declarations_of_0_must_have_identical_type_parameters:t(2428,e.DiagnosticCategory.Error,"All_declarations_of_0_must_have_identical_type_parameters_2428","All declarations of '{0}' must have identical type parameters."),Interface_0_incorrectly_extends_interface_1:t(2430,e.DiagnosticCategory.Error,"Interface_0_incorrectly_extends_interface_1_2430","Interface '{0}' incorrectly extends interface '{1}'."),Enum_name_cannot_be_0:t(2431,e.DiagnosticCategory.Error,"Enum_name_cannot_be_0_2431","Enum name cannot be '{0}'."),In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element:t(2432,e.DiagnosticCategory.Error,"In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enu_2432","In an enum with multiple declarations, only one declaration can omit an initializer for its first enum element."),A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged:t(2433,e.DiagnosticCategory.Error,"A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merg_2433","A namespace declaration cannot be in a different file from a class or function with which it is merged."),A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged:t(2434,e.DiagnosticCategory.Error,"A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged_2434","A namespace declaration cannot be located prior to a class or function with which it is merged."),Ambient_modules_cannot_be_nested_in_other_modules_or_namespaces:t(2435,e.DiagnosticCategory.Error,"Ambient_modules_cannot_be_nested_in_other_modules_or_namespaces_2435","Ambient modules cannot be nested in other modules or namespaces."),Ambient_module_declaration_cannot_specify_relative_module_name:t(2436,e.DiagnosticCategory.Error,"Ambient_module_declaration_cannot_specify_relative_module_name_2436","Ambient module declaration cannot specify relative module name."),Module_0_is_hidden_by_a_local_declaration_with_the_same_name:t(2437,e.DiagnosticCategory.Error,"Module_0_is_hidden_by_a_local_declaration_with_the_same_name_2437","Module '{0}' is hidden by a local declaration with the same name."),Import_name_cannot_be_0:t(2438,e.DiagnosticCategory.Error,"Import_name_cannot_be_0_2438","Import name cannot be '{0}'."),Import_or_export_declaration_in_an_ambient_module_declaration_cannot_reference_module_through_relative_module_name:t(2439,e.DiagnosticCategory.Error,"Import_or_export_declaration_in_an_ambient_module_declaration_cannot_reference_module_through_relati_2439","Import or export declaration in an ambient module declaration cannot reference module through relative module name."),Import_declaration_conflicts_with_local_declaration_of_0:t(2440,e.DiagnosticCategory.Error,"Import_declaration_conflicts_with_local_declaration_of_0_2440","Import declaration conflicts with local declaration of '{0}'."),Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module:t(2441,e.DiagnosticCategory.Error,"Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_2441","Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module."),Types_have_separate_declarations_of_a_private_property_0:t(2442,e.DiagnosticCategory.Error,"Types_have_separate_declarations_of_a_private_property_0_2442","Types have separate declarations of a private property '{0}'."),Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2:t(2443,e.DiagnosticCategory.Error,"Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2_2443","Property '{0}' is protected but type '{1}' is not a class derived from '{2}'."),Property_0_is_protected_in_type_1_but_public_in_type_2:t(2444,e.DiagnosticCategory.Error,"Property_0_is_protected_in_type_1_but_public_in_type_2_2444","Property '{0}' is protected in type '{1}' but public in type '{2}'."),Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses:t(2445,e.DiagnosticCategory.Error,"Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses_2445","Property '{0}' is protected and only accessible within class '{1}' and its subclasses."),Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1:t(2446,e.DiagnosticCategory.Error,"Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1_2446","Property '{0}' is protected and only accessible through an instance of class '{1}'."),The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead:t(2447,e.DiagnosticCategory.Error,"The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead_2447","The '{0}' operator is not allowed for boolean types. Consider using '{1}' instead."),Block_scoped_variable_0_used_before_its_declaration:t(2448,e.DiagnosticCategory.Error,"Block_scoped_variable_0_used_before_its_declaration_2448","Block-scoped variable '{0}' used before its declaration."),Class_0_used_before_its_declaration:t(2449,e.DiagnosticCategory.Error,"Class_0_used_before_its_declaration_2449","Class '{0}' used before its declaration."),Enum_0_used_before_its_declaration:t(2450,e.DiagnosticCategory.Error,"Enum_0_used_before_its_declaration_2450","Enum '{0}' used before its declaration."),Cannot_redeclare_block_scoped_variable_0:t(2451,e.DiagnosticCategory.Error,"Cannot_redeclare_block_scoped_variable_0_2451","Cannot redeclare block-scoped variable '{0}'."),An_enum_member_cannot_have_a_numeric_name:t(2452,e.DiagnosticCategory.Error,"An_enum_member_cannot_have_a_numeric_name_2452","An enum member cannot have a numeric name."),The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_type_arguments_explicitly:t(2453,e.DiagnosticCategory.Error,"The_type_argument_for_type_parameter_0_cannot_be_inferred_from_the_usage_Consider_specifying_the_typ_2453","The type argument for type parameter '{0}' cannot be inferred from the usage. Consider specifying the type arguments explicitly."),Variable_0_is_used_before_being_assigned:t(2454,e.DiagnosticCategory.Error,"Variable_0_is_used_before_being_assigned_2454","Variable '{0}' is used before being assigned."),Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0:t(2455,e.DiagnosticCategory.Error,"Type_argument_candidate_1_is_not_a_valid_type_argument_because_it_is_not_a_supertype_of_candidate_0_2455","Type argument candidate '{1}' is not a valid type argument because it is not a supertype of candidate '{0}'."),Type_alias_0_circularly_references_itself:t(2456,e.DiagnosticCategory.Error,"Type_alias_0_circularly_references_itself_2456","Type alias '{0}' circularly references itself."),Type_alias_name_cannot_be_0:t(2457,e.DiagnosticCategory.Error,"Type_alias_name_cannot_be_0_2457","Type alias name cannot be '{0}'."),An_AMD_module_cannot_have_multiple_name_assignments:t(2458,e.DiagnosticCategory.Error,"An_AMD_module_cannot_have_multiple_name_assignments_2458","An AMD module cannot have multiple name assignments."),Type_0_is_not_an_array_type:t(2461,e.DiagnosticCategory.Error,"Type_0_is_not_an_array_type_2461","Type '{0}' is not an array type."),A_rest_element_must_be_last_in_a_destructuring_pattern:t(2462,e.DiagnosticCategory.Error,"A_rest_element_must_be_last_in_a_destructuring_pattern_2462","A rest element must be last in a destructuring pattern."),A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature:t(2463,e.DiagnosticCategory.Error,"A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature_2463","A binding pattern parameter cannot be optional in an implementation signature."),A_computed_property_name_must_be_of_type_string_number_symbol_or_any:t(2464,e.DiagnosticCategory.Error,"A_computed_property_name_must_be_of_type_string_number_symbol_or_any_2464","A computed property name must be of type 'string', 'number', 'symbol', or 'any'."),this_cannot_be_referenced_in_a_computed_property_name:t(2465,e.DiagnosticCategory.Error,"this_cannot_be_referenced_in_a_computed_property_name_2465","'this' cannot be referenced in a computed property name."),super_cannot_be_referenced_in_a_computed_property_name:t(2466,e.DiagnosticCategory.Error,"super_cannot_be_referenced_in_a_computed_property_name_2466","'super' cannot be referenced in a computed property name."),A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type:t(2467,e.DiagnosticCategory.Error,"A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type_2467","A computed property name cannot reference a type parameter from its containing type."),Cannot_find_global_value_0:t(2468,e.DiagnosticCategory.Error,"Cannot_find_global_value_0_2468","Cannot find global value '{0}'."),The_0_operator_cannot_be_applied_to_type_symbol:t(2469,e.DiagnosticCategory.Error,"The_0_operator_cannot_be_applied_to_type_symbol_2469","The '{0}' operator cannot be applied to type 'symbol'."),Symbol_reference_does_not_refer_to_the_global_Symbol_constructor_object:t(2470,e.DiagnosticCategory.Error,"Symbol_reference_does_not_refer_to_the_global_Symbol_constructor_object_2470","'Symbol' reference does not refer to the global Symbol constructor object."),A_computed_property_name_of_the_form_0_must_be_of_type_symbol:t(2471,e.DiagnosticCategory.Error,"A_computed_property_name_of_the_form_0_must_be_of_type_symbol_2471","A computed property name of the form '{0}' must be of type 'symbol'."),Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_5_and_higher:t(2472,e.DiagnosticCategory.Error,"Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_5_and_higher_2472","Spread operator in 'new' expressions is only available when targeting ECMAScript 5 and higher."),Enum_declarations_must_all_be_const_or_non_const:t(2473,e.DiagnosticCategory.Error,"Enum_declarations_must_all_be_const_or_non_const_2473","Enum declarations must all be const or non-const."),const_enum_member_initializers_can_only_contain_literal_values_and_other_computed_enum_values:t(2474,e.DiagnosticCategory.Error,"const_enum_member_initializers_can_only_contain_literal_values_and_other_computed_enum_values_2474","const enum member initializers can only contain literal values and other computed enum values."),const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment_or_type_query:t(2475,e.DiagnosticCategory.Error,"const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_im_2475","'const' enums can only be used in property or index access expressions or the right hand side of an import declaration or export assignment or type query."),A_const_enum_member_can_only_be_accessed_using_a_string_literal:t(2476,e.DiagnosticCategory.Error,"A_const_enum_member_can_only_be_accessed_using_a_string_literal_2476","A const enum member can only be accessed using a string literal."),const_enum_member_initializer_was_evaluated_to_a_non_finite_value:t(2477,e.DiagnosticCategory.Error,"const_enum_member_initializer_was_evaluated_to_a_non_finite_value_2477","'const' enum member initializer was evaluated to a non-finite value."),const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN:t(2478,e.DiagnosticCategory.Error,"const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN_2478","'const' enum member initializer was evaluated to disallowed value 'NaN'."),Property_0_does_not_exist_on_const_enum_1:t(2479,e.DiagnosticCategory.Error,"Property_0_does_not_exist_on_const_enum_1_2479","Property '{0}' does not exist on 'const' enum '{1}'."),let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations:t(2480,e.DiagnosticCategory.Error,"let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations_2480","'let' is not allowed to be used as a name in 'let' or 'const' declarations."),Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1:t(2481,e.DiagnosticCategory.Error,"Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1_2481","Cannot initialize outer scoped variable '{0}' in the same scope as block scoped declaration '{1}'."),The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation:t(2483,e.DiagnosticCategory.Error,"The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation_2483","The left-hand side of a 'for...of' statement cannot use a type annotation."),Export_declaration_conflicts_with_exported_declaration_of_0:t(2484,e.DiagnosticCategory.Error,"Export_declaration_conflicts_with_exported_declaration_of_0_2484","Export declaration conflicts with exported declaration of '{0}'."),The_left_hand_side_of_a_for_of_statement_must_be_a_variable_or_a_property_access:t(2487,e.DiagnosticCategory.Error,"The_left_hand_side_of_a_for_of_statement_must_be_a_variable_or_a_property_access_2487","The left-hand side of a 'for...of' statement must be a variable or a property access."),Type_0_must_have_a_Symbol_iterator_method_that_returns_an_iterator:t(2488,e.DiagnosticCategory.Error,"Type_0_must_have_a_Symbol_iterator_method_that_returns_an_iterator_2488","Type '{0}' must have a '[Symbol.iterator]()' method that returns an iterator."),An_iterator_must_have_a_next_method:t(2489,e.DiagnosticCategory.Error,"An_iterator_must_have_a_next_method_2489","An iterator must have a 'next()' method."),The_type_returned_by_the_0_method_of_an_iterator_must_have_a_value_property:t(2490,e.DiagnosticCategory.Error,"The_type_returned_by_the_0_method_of_an_iterator_must_have_a_value_property_2490","The type returned by the '{0}()' method of an iterator must have a 'value' property."),The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern:t(2491,e.DiagnosticCategory.Error,"The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern_2491","The left-hand side of a 'for...in' statement cannot be a destructuring pattern."),Cannot_redeclare_identifier_0_in_catch_clause:t(2492,e.DiagnosticCategory.Error,"Cannot_redeclare_identifier_0_in_catch_clause_2492","Cannot redeclare identifier '{0}' in catch clause."),Tuple_type_0_of_length_1_has_no_element_at_index_2:t(2493,e.DiagnosticCategory.Error,"Tuple_type_0_of_length_1_has_no_element_at_index_2_2493","Tuple type '{0}' of length '{1}' has no element at index '{2}'."),Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher:t(2494,e.DiagnosticCategory.Error,"Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher_2494","Using a string in a 'for...of' statement is only supported in ECMAScript 5 and higher."),Type_0_is_not_an_array_type_or_a_string_type:t(2495,e.DiagnosticCategory.Error,"Type_0_is_not_an_array_type_or_a_string_type_2495","Type '{0}' is not an array type or a string type."),The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_standard_function_expression:t(2496,e.DiagnosticCategory.Error,"The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_stand_2496","The 'arguments' object cannot be referenced in an arrow function in ES3 and ES5. Consider using a standard function expression."),This_module_can_only_be_referenced_with_ECMAScript_imports_Slashexports_by_turning_on_the_0_flag_and_referencing_its_default_export:t(2497,e.DiagnosticCategory.Error,"This_module_can_only_be_referenced_with_ECMAScript_imports_Slashexports_by_turning_on_the_0_flag_and_2497","This module can only be referenced with ECMAScript imports/exports by turning on the '{0}' flag and referencing its default export."),Module_0_uses_export_and_cannot_be_used_with_export_Asterisk:t(2498,e.DiagnosticCategory.Error,"Module_0_uses_export_and_cannot_be_used_with_export_Asterisk_2498","Module '{0}' uses 'export =' and cannot be used with 'export *'."),An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments:t(2499,e.DiagnosticCategory.Error,"An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments_2499","An interface can only extend an identifier/qualified-name with optional type arguments."),A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments:t(2500,e.DiagnosticCategory.Error,"A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments_2500","A class can only implement an identifier/qualified-name with optional type arguments."),A_rest_element_cannot_contain_a_binding_pattern:t(2501,e.DiagnosticCategory.Error,"A_rest_element_cannot_contain_a_binding_pattern_2501","A rest element cannot contain a binding pattern."),_0_is_referenced_directly_or_indirectly_in_its_own_type_annotation:t(2502,e.DiagnosticCategory.Error,"_0_is_referenced_directly_or_indirectly_in_its_own_type_annotation_2502","'{0}' is referenced directly or indirectly in its own type annotation."),Cannot_find_namespace_0:t(2503,e.DiagnosticCategory.Error,"Cannot_find_namespace_0_2503","Cannot find namespace '{0}'."),Type_0_must_have_a_Symbol_asyncIterator_method_that_returns_an_async_iterator:t(2504,e.DiagnosticCategory.Error,"Type_0_must_have_a_Symbol_asyncIterator_method_that_returns_an_async_iterator_2504","Type '{0}' must have a '[Symbol.asyncIterator]()' method that returns an async iterator."),A_generator_cannot_have_a_void_type_annotation:t(2505,e.DiagnosticCategory.Error,"A_generator_cannot_have_a_void_type_annotation_2505","A generator cannot have a 'void' type annotation."),_0_is_referenced_directly_or_indirectly_in_its_own_base_expression:t(2506,e.DiagnosticCategory.Error,"_0_is_referenced_directly_or_indirectly_in_its_own_base_expression_2506","'{0}' is referenced directly or indirectly in its own base expression."),Type_0_is_not_a_constructor_function_type:t(2507,e.DiagnosticCategory.Error,"Type_0_is_not_a_constructor_function_type_2507","Type '{0}' is not a constructor function type."),No_base_constructor_has_the_specified_number_of_type_arguments:t(2508,e.DiagnosticCategory.Error,"No_base_constructor_has_the_specified_number_of_type_arguments_2508","No base constructor has the specified number of type arguments."),Base_constructor_return_type_0_is_not_an_object_type_or_intersection_of_object_types_with_statically_known_members:t(2509,e.DiagnosticCategory.Error,"Base_constructor_return_type_0_is_not_an_object_type_or_intersection_of_object_types_with_statically_2509","Base constructor return type '{0}' is not an object type or intersection of object types with statically known members."),Base_constructors_must_all_have_the_same_return_type:t(2510,e.DiagnosticCategory.Error,"Base_constructors_must_all_have_the_same_return_type_2510","Base constructors must all have the same return type."),Cannot_create_an_instance_of_an_abstract_class:t(2511,e.DiagnosticCategory.Error,"Cannot_create_an_instance_of_an_abstract_class_2511","Cannot create an instance of an abstract class."),Overload_signatures_must_all_be_abstract_or_non_abstract:t(2512,e.DiagnosticCategory.Error,"Overload_signatures_must_all_be_abstract_or_non_abstract_2512","Overload signatures must all be abstract or non-abstract."),Abstract_method_0_in_class_1_cannot_be_accessed_via_super_expression:t(2513,e.DiagnosticCategory.Error,"Abstract_method_0_in_class_1_cannot_be_accessed_via_super_expression_2513","Abstract method '{0}' in class '{1}' cannot be accessed via super expression."),Classes_containing_abstract_methods_must_be_marked_abstract:t(2514,e.DiagnosticCategory.Error,"Classes_containing_abstract_methods_must_be_marked_abstract_2514","Classes containing abstract methods must be marked abstract."),Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2:t(2515,e.DiagnosticCategory.Error,"Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2_2515","Non-abstract class '{0}' does not implement inherited abstract member '{1}' from class '{2}'."),All_declarations_of_an_abstract_method_must_be_consecutive:t(2516,e.DiagnosticCategory.Error,"All_declarations_of_an_abstract_method_must_be_consecutive_2516","All declarations of an abstract method must be consecutive."),Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type:t(2517,e.DiagnosticCategory.Error,"Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type_2517","Cannot assign an abstract constructor type to a non-abstract constructor type."),A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard:t(2518,e.DiagnosticCategory.Error,"A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard_2518","A 'this'-based type guard is not compatible with a parameter-based type guard."),An_async_iterator_must_have_a_next_method:t(2519,e.DiagnosticCategory.Error,"An_async_iterator_must_have_a_next_method_2519","An async iterator must have a 'next()' method."),Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions:t(2520,e.DiagnosticCategory.Error,"Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions_2520","Duplicate identifier '{0}'. Compiler uses declaration '{1}' to support async functions."),Expression_resolves_to_variable_declaration_0_that_compiler_uses_to_support_async_functions:t(2521,e.DiagnosticCategory.Error,"Expression_resolves_to_variable_declaration_0_that_compiler_uses_to_support_async_functions_2521","Expression resolves to variable declaration '{0}' that compiler uses to support async functions."),The_arguments_object_cannot_be_referenced_in_an_async_function_or_method_in_ES3_and_ES5_Consider_using_a_standard_function_or_method:t(2522,e.DiagnosticCategory.Error,"The_arguments_object_cannot_be_referenced_in_an_async_function_or_method_in_ES3_and_ES5_Consider_usi_2522","The 'arguments' object cannot be referenced in an async function or method in ES3 and ES5. Consider using a standard function or method."),yield_expressions_cannot_be_used_in_a_parameter_initializer:t(2523,e.DiagnosticCategory.Error,"yield_expressions_cannot_be_used_in_a_parameter_initializer_2523","'yield' expressions cannot be used in a parameter initializer."),await_expressions_cannot_be_used_in_a_parameter_initializer:t(2524,e.DiagnosticCategory.Error,"await_expressions_cannot_be_used_in_a_parameter_initializer_2524","'await' expressions cannot be used in a parameter initializer."),Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value:t(2525,e.DiagnosticCategory.Error,"Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value_2525","Initializer provides no value for this binding element and the binding element has no default value."),A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface:t(2526,e.DiagnosticCategory.Error,"A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface_2526","A 'this' type is available only in a non-static member of a class or interface."),The_inferred_type_of_0_references_an_inaccessible_1_type_A_type_annotation_is_necessary:t(2527,e.DiagnosticCategory.Error,"The_inferred_type_of_0_references_an_inaccessible_1_type_A_type_annotation_is_necessary_2527","The inferred type of '{0}' references an inaccessible '{1}' type. A type annotation is necessary."),A_module_cannot_have_multiple_default_exports:t(2528,e.DiagnosticCategory.Error,"A_module_cannot_have_multiple_default_exports_2528","A module cannot have multiple default exports."),Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions:t(2529,e.DiagnosticCategory.Error,"Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_func_2529","Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module containing async functions."),Property_0_is_incompatible_with_index_signature:t(2530,e.DiagnosticCategory.Error,"Property_0_is_incompatible_with_index_signature_2530","Property '{0}' is incompatible with index signature."),Object_is_possibly_null:t(2531,e.DiagnosticCategory.Error,"Object_is_possibly_null_2531","Object is possibly 'null'."),Object_is_possibly_undefined:t(2532,e.DiagnosticCategory.Error,"Object_is_possibly_undefined_2532","Object is possibly 'undefined'."),Object_is_possibly_null_or_undefined:t(2533,e.DiagnosticCategory.Error,"Object_is_possibly_null_or_undefined_2533","Object is possibly 'null' or 'undefined'."),A_function_returning_never_cannot_have_a_reachable_end_point:t(2534,e.DiagnosticCategory.Error,"A_function_returning_never_cannot_have_a_reachable_end_point_2534","A function returning 'never' cannot have a reachable end point."),Enum_type_0_has_members_with_initializers_that_are_not_literals:t(2535,e.DiagnosticCategory.Error,"Enum_type_0_has_members_with_initializers_that_are_not_literals_2535","Enum type '{0}' has members with initializers that are not literals."),Type_0_cannot_be_used_to_index_type_1:t(2536,e.DiagnosticCategory.Error,"Type_0_cannot_be_used_to_index_type_1_2536","Type '{0}' cannot be used to index type '{1}'."),Type_0_has_no_matching_index_signature_for_type_1:t(2537,e.DiagnosticCategory.Error,"Type_0_has_no_matching_index_signature_for_type_1_2537","Type '{0}' has no matching index signature for type '{1}'."),Type_0_cannot_be_used_as_an_index_type:t(2538,e.DiagnosticCategory.Error,"Type_0_cannot_be_used_as_an_index_type_2538","Type '{0}' cannot be used as an index type."),Cannot_assign_to_0_because_it_is_not_a_variable:t(2539,e.DiagnosticCategory.Error,"Cannot_assign_to_0_because_it_is_not_a_variable_2539","Cannot assign to '{0}' because it is not a variable."),Cannot_assign_to_0_because_it_is_a_read_only_property:t(2540,e.DiagnosticCategory.Error,"Cannot_assign_to_0_because_it_is_a_read_only_property_2540","Cannot assign to '{0}' because it is a read-only property."),The_target_of_an_assignment_must_be_a_variable_or_a_property_access:t(2541,e.DiagnosticCategory.Error,"The_target_of_an_assignment_must_be_a_variable_or_a_property_access_2541","The target of an assignment must be a variable or a property access."),Index_signature_in_type_0_only_permits_reading:t(2542,e.DiagnosticCategory.Error,"Index_signature_in_type_0_only_permits_reading_2542","Index signature in type '{0}' only permits reading."),Duplicate_identifier_newTarget_Compiler_uses_variable_declaration_newTarget_to_capture_new_target_meta_property_reference:t(2543,e.DiagnosticCategory.Error,"Duplicate_identifier_newTarget_Compiler_uses_variable_declaration_newTarget_to_capture_new_target_me_2543","Duplicate identifier '_newTarget'. Compiler uses variable declaration '_newTarget' to capture 'new.target' meta-property reference."),Expression_resolves_to_variable_declaration_newTarget_that_compiler_uses_to_capture_new_target_meta_property_reference:t(2544,e.DiagnosticCategory.Error,"Expression_resolves_to_variable_declaration_newTarget_that_compiler_uses_to_capture_new_target_meta__2544","Expression resolves to variable declaration '_newTarget' that compiler uses to capture 'new.target' meta-property reference."),A_mixin_class_must_have_a_constructor_with_a_single_rest_parameter_of_type_any:t(2545,e.DiagnosticCategory.Error,"A_mixin_class_must_have_a_constructor_with_a_single_rest_parameter_of_type_any_2545","A mixin class must have a constructor with a single rest parameter of type 'any[]'."),Property_0_has_conflicting_declarations_and_is_inaccessible_in_type_1:t(2546,e.DiagnosticCategory.Error,"Property_0_has_conflicting_declarations_and_is_inaccessible_in_type_1_2546","Property '{0}' has conflicting declarations and is inaccessible in type '{1}'."),The_type_returned_by_the_0_method_of_an_async_iterator_must_be_a_promise_for_a_type_with_a_value_property:t(2547,e.DiagnosticCategory.Error,"The_type_returned_by_the_0_method_of_an_async_iterator_must_be_a_promise_for_a_type_with_a_value_pro_2547","The type returned by the '{0}()' method of an async iterator must be a promise for a type with a 'value' property."),Type_0_is_not_an_array_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator:t(2548,e.DiagnosticCategory.Error,"Type_0_is_not_an_array_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator_2548","Type '{0}' is not an array type or does not have a '[Symbol.iterator]()' method that returns an iterator."),Type_0_is_not_an_array_type_or_a_string_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator:t(2549,e.DiagnosticCategory.Error,"Type_0_is_not_an_array_type_or_a_string_type_or_does_not_have_a_Symbol_iterator_method_that_returns__2549","Type '{0}' is not an array type or a string type or does not have a '[Symbol.iterator]()' method that returns an iterator."),Property_0_does_not_exist_on_type_1_Did_you_mean_2:t(2551,e.DiagnosticCategory.Error,"Property_0_does_not_exist_on_type_1_Did_you_mean_2_2551","Property '{0}' does not exist on type '{1}'. Did you mean '{2}'?"),Cannot_find_name_0_Did_you_mean_1:t(2552,e.DiagnosticCategory.Error,"Cannot_find_name_0_Did_you_mean_1_2552","Cannot find name '{0}'. Did you mean '{1}'?"),Computed_values_are_not_permitted_in_an_enum_with_string_valued_members:t(2553,e.DiagnosticCategory.Error,"Computed_values_are_not_permitted_in_an_enum_with_string_valued_members_2553","Computed values are not permitted in an enum with string valued members."),Expected_0_arguments_but_got_1:t(2554,e.DiagnosticCategory.Error,"Expected_0_arguments_but_got_1_2554","Expected {0} arguments, but got {1}."),Expected_at_least_0_arguments_but_got_1:t(2555,e.DiagnosticCategory.Error,"Expected_at_least_0_arguments_but_got_1_2555","Expected at least {0} arguments, but got {1}."),Expected_0_arguments_but_got_1_or_more:t(2556,e.DiagnosticCategory.Error,"Expected_0_arguments_but_got_1_or_more_2556","Expected {0} arguments, but got {1} or more."),Expected_at_least_0_arguments_but_got_1_or_more:t(2557,e.DiagnosticCategory.Error,"Expected_at_least_0_arguments_but_got_1_or_more_2557","Expected at least {0} arguments, but got {1} or more."),Expected_0_type_arguments_but_got_1:t(2558,e.DiagnosticCategory.Error,"Expected_0_type_arguments_but_got_1_2558","Expected {0} type arguments, but got {1}."),Type_0_has_no_properties_in_common_with_type_1:t(2559,e.DiagnosticCategory.Error,"Type_0_has_no_properties_in_common_with_type_1_2559","Type '{0}' has no properties in common with type '{1}'."),Value_of_type_0_has_no_properties_in_common_with_type_1_Did_you_mean_to_call_it:t(2560,e.DiagnosticCategory.Error,"Value_of_type_0_has_no_properties_in_common_with_type_1_Did_you_mean_to_call_it_2560","Value of type '{0}' has no properties in common with type '{1}'. Did you mean to call it?"),Object_literal_may_only_specify_known_properties_but_0_does_not_exist_in_type_1_Did_you_mean_to_write_2:t(2561,e.DiagnosticCategory.Error,"Object_literal_may_only_specify_known_properties_but_0_does_not_exist_in_type_1_Did_you_mean_to_writ_2561","Object literal may only specify known properties, but '{0}' does not exist in type '{1}'. Did you mean to write '{2}'?"),Base_class_expressions_cannot_reference_class_type_parameters:t(2562,e.DiagnosticCategory.Error,"Base_class_expressions_cannot_reference_class_type_parameters_2562","Base class expressions cannot reference class type parameters."),The_containing_function_or_module_body_is_too_large_for_control_flow_analysis:t(2563,e.DiagnosticCategory.Error,"The_containing_function_or_module_body_is_too_large_for_control_flow_analysis_2563","The containing function or module body is too large for control flow analysis."),Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor:t(2564,e.DiagnosticCategory.Error,"Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor_2564","Property '{0}' has no initializer and is not definitely assigned in the constructor."),Property_0_is_used_before_being_assigned:t(2565,e.DiagnosticCategory.Error,"Property_0_is_used_before_being_assigned_2565","Property '{0}' is used before being assigned."),A_rest_element_cannot_have_a_property_name:t(2566,e.DiagnosticCategory.Error,"A_rest_element_cannot_have_a_property_name_2566","A rest element cannot have a property name."),Enum_declarations_can_only_merge_with_namespace_or_other_enum_declarations:t(2567,e.DiagnosticCategory.Error,"Enum_declarations_can_only_merge_with_namespace_or_other_enum_declarations_2567","Enum declarations can only merge with namespace or other enum declarations."),Type_0_is_not_an_array_type_or_a_string_type_Use_compiler_option_downlevelIteration_to_allow_iterating_of_iterators:t(2569,e.DiagnosticCategory.Error,"Type_0_is_not_an_array_type_or_a_string_type_Use_compiler_option_downlevelIteration_to_allow_iterati_2569","Type '{0}' is not an array type or a string type. Use compiler option '--downlevelIteration' to allow iterating of iterators."),Object_is_of_type_unknown:t(2571,e.DiagnosticCategory.Error,"Object_is_of_type_unknown_2571","Object is of type 'unknown'."),Rest_signatures_are_incompatible:t(2572,e.DiagnosticCategory.Error,"Rest_signatures_are_incompatible_2572","Rest signatures are incompatible."),Property_0_is_incompatible_with_rest_element_type:t(2573,e.DiagnosticCategory.Error,"Property_0_is_incompatible_with_rest_element_type_2573","Property '{0}' is incompatible with rest element type."),A_rest_element_type_must_be_an_array_type:t(2574,e.DiagnosticCategory.Error,"A_rest_element_type_must_be_an_array_type_2574","A rest element type must be an array type."),No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments:t(2575,e.DiagnosticCategory.Error,"No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments_2575","No overload expects {0} arguments, but overloads do exist that expect either {1} or {2} arguments."),Property_0_is_a_static_member_of_type_1:t(2576,e.DiagnosticCategory.Error,"Property_0_is_a_static_member_of_type_1_2576","Property '{0}' is a static member of type '{1}'"),Return_type_annotation_circularly_references_itself:t(2577,e.DiagnosticCategory.Error,"Return_type_annotation_circularly_references_itself_2577","Return type annotation circularly references itself."),Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_types_Slashnode:t(2580,e.DiagnosticCategory.Error,"Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_types_Slashnode_2580","Cannot find name '{0}'. Do you need to install type definitions for node? Try `npm i @types/node`."),Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_types_Slashjquery:t(2581,e.DiagnosticCategory.Error,"Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_types_Slashjquery_2581","Cannot find name '{0}'. Do you need to install type definitions for jQuery? Try `npm i @types/jquery`."),Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_types_Slashjest_or_npm_i_types_Slashmocha:t(2582,e.DiagnosticCategory.Error,"Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_types_Slashje_2582","Cannot find name '{0}'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`."),Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_es2015_or_later:t(2583,e.DiagnosticCategory.Error,"Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_2583","Cannot find name '{0}'. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later."),Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_include_dom:t(2584,e.DiagnosticCategory.Error,"Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_2584","Cannot find name '{0}'. Do you need to change your target library? Try changing the `lib` compiler option to include 'dom'."),_0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_es2015_or_later:t(2585,e.DiagnosticCategory.Error,"_0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Do_you_need_to_change_your_target_library_2585","'{0}' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later."),Enum_type_0_circularly_references_itself:t(2586,e.DiagnosticCategory.Error,"Enum_type_0_circularly_references_itself_2586","Enum type '{0}' circularly references itself."),JSDoc_type_0_circularly_references_itself:t(2587,e.DiagnosticCategory.Error,"JSDoc_type_0_circularly_references_itself_2587","JSDoc type '{0}' circularly references itself."),Cannot_assign_to_0_because_it_is_a_constant:t(2588,e.DiagnosticCategory.Error,"Cannot_assign_to_0_because_it_is_a_constant_2588","Cannot assign to '{0}' because it is a constant."),Type_instantiation_is_excessively_deep_and_possibly_infinite:t(2589,e.DiagnosticCategory.Error,"Type_instantiation_is_excessively_deep_and_possibly_infinite_2589","Type instantiation is excessively deep and possibly infinite."),Expression_produces_a_union_type_that_is_too_complex_to_represent:t(2590,e.DiagnosticCategory.Error,"Expression_produces_a_union_type_that_is_too_complex_to_represent_2590","Expression produces a union type that is too complex to represent."),Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_types_Slashnode_and_then_add_node_to_the_types_field_in_your_tsconfig:t(2591,e.DiagnosticCategory.Error,"Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_types_Slashnode_and_th_2591","Cannot find name '{0}'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig."),Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_types_Slashjquery_and_then_add_jquery_to_the_types_field_in_your_tsconfig:t(2592,e.DiagnosticCategory.Error,"Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_types_Slashjquery_an_2592","Cannot find name '{0}'. Do you need to install type definitions for jQuery? Try `npm i @types/jquery` and then add `jquery` to the types field in your tsconfig."),Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_types_Slashjest_or_npm_i_types_Slashmocha_and_then_add_jest_or_mocha_to_the_types_field_in_your_tsconfig:t(2593,e.DiagnosticCategory.Error,"Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_types_Slashje_2593","Cannot find name '{0}'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig."),This_module_is_declared_with_using_export_and_can_only_be_used_with_a_default_import_when_using_the_0_flag:t(2594,e.DiagnosticCategory.Error,"This_module_is_declared_with_using_export_and_can_only_be_used_with_a_default_import_when_using_the__2594","This module is declared with using 'export =', and can only be used with a default import when using the '{0}' flag."),JSX_element_attributes_type_0_may_not_be_a_union_type:t(2600,e.DiagnosticCategory.Error,"JSX_element_attributes_type_0_may_not_be_a_union_type_2600","JSX element attributes type '{0}' may not be a union type."),The_return_type_of_a_JSX_element_constructor_must_return_an_object_type:t(2601,e.DiagnosticCategory.Error,"The_return_type_of_a_JSX_element_constructor_must_return_an_object_type_2601","The return type of a JSX element constructor must return an object type."),JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist:t(2602,e.DiagnosticCategory.Error,"JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist_2602","JSX element implicitly has type 'any' because the global type 'JSX.Element' does not exist."),Property_0_in_type_1_is_not_assignable_to_type_2:t(2603,e.DiagnosticCategory.Error,"Property_0_in_type_1_is_not_assignable_to_type_2_2603","Property '{0}' in type '{1}' is not assignable to type '{2}'."),JSX_element_type_0_does_not_have_any_construct_or_call_signatures:t(2604,e.DiagnosticCategory.Error,"JSX_element_type_0_does_not_have_any_construct_or_call_signatures_2604","JSX element type '{0}' does not have any construct or call signatures."),JSX_element_type_0_is_not_a_constructor_function_for_JSX_elements:t(2605,e.DiagnosticCategory.Error,"JSX_element_type_0_is_not_a_constructor_function_for_JSX_elements_2605","JSX element type '{0}' is not a constructor function for JSX elements."),Property_0_of_JSX_spread_attribute_is_not_assignable_to_target_property:t(2606,e.DiagnosticCategory.Error,"Property_0_of_JSX_spread_attribute_is_not_assignable_to_target_property_2606","Property '{0}' of JSX spread attribute is not assignable to target property."),JSX_element_class_does_not_support_attributes_because_it_does_not_have_a_0_property:t(2607,e.DiagnosticCategory.Error,"JSX_element_class_does_not_support_attributes_because_it_does_not_have_a_0_property_2607","JSX element class does not support attributes because it does not have a '{0}' property."),The_global_type_JSX_0_may_not_have_more_than_one_property:t(2608,e.DiagnosticCategory.Error,"The_global_type_JSX_0_may_not_have_more_than_one_property_2608","The global type 'JSX.{0}' may not have more than one property."),JSX_spread_child_must_be_an_array_type:t(2609,e.DiagnosticCategory.Error,"JSX_spread_child_must_be_an_array_type_2609","JSX spread child must be an array type."),Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_property:t(2610,e.DiagnosticCategory.Error,"Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_proper_2610","Class '{0}' defines instance member accessor '{1}', but extended class '{2}' defines it as instance member property."),Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_accessor:t(2611,e.DiagnosticCategory.Error,"Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_access_2611","Class '{0}' defines instance member property '{1}', but extended class '{2}' defines it as instance member accessor."),Property_0_will_overwrite_the_base_property_in_1_If_this_is_intentional_add_an_initializer_Otherwise_add_a_declare_modifier_or_remove_the_redundant_declaration:t(2612,e.DiagnosticCategory.Error,"Property_0_will_overwrite_the_base_property_in_1_If_this_is_intentional_add_an_initializer_Otherwise_2612","Property '{0}' will overwrite the base property in '{1}'. If this is intentional, add an initializer. Otherwise, add a 'declare' modifier or remove the redundant declaration."),Module_0_has_no_default_export_Did_you_mean_to_use_import_1_from_0_instead:t(2613,e.DiagnosticCategory.Error,"Module_0_has_no_default_export_Did_you_mean_to_use_import_1_from_0_instead_2613","Module '{0}' has no default export. Did you mean to use 'import { {1} } from {0}' instead?"),Module_0_has_no_exported_member_1_Did_you_mean_to_use_import_1_from_0_instead:t(2614,e.DiagnosticCategory.Error,"Module_0_has_no_exported_member_1_Did_you_mean_to_use_import_1_from_0_instead_2614","Module '{0}' has no exported member '{1}'. Did you mean to use 'import {1} from {0}' instead?"),Cannot_augment_module_0_with_value_exports_because_it_resolves_to_a_non_module_entity:t(2649,e.DiagnosticCategory.Error,"Cannot_augment_module_0_with_value_exports_because_it_resolves_to_a_non_module_entity_2649","Cannot augment module '{0}' with value exports because it resolves to a non-module entity."),A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums:t(2651,e.DiagnosticCategory.Error,"A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_memb_2651","A member initializer in a enum declaration cannot reference members declared after it, including members defined in other enums."),Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_default_0_declaration_instead:t(2652,e.DiagnosticCategory.Error,"Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_d_2652","Merged declaration '{0}' cannot include a default export declaration. Consider adding a separate 'export default {0}' declaration instead."),Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1:t(2653,e.DiagnosticCategory.Error,"Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1_2653","Non-abstract class expression does not implement inherited abstract member '{0}' from class '{1}'."),Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_package_author_to_update_the_package_definition:t(2654,e.DiagnosticCategory.Error,"Exported_external_package_typings_file_cannot_contain_tripleslash_references_Please_contact_the_pack_2654","Exported external package typings file cannot contain tripleslash references. Please contact the package author to update the package definition."),Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_the_package_definition:t(2656,e.DiagnosticCategory.Error,"Exported_external_package_typings_file_0_is_not_a_module_Please_contact_the_package_author_to_update_2656","Exported external package typings file '{0}' is not a module. Please contact the package author to update the package definition."),JSX_expressions_must_have_one_parent_element:t(2657,e.DiagnosticCategory.Error,"JSX_expressions_must_have_one_parent_element_2657","JSX expressions must have one parent element."),Type_0_provides_no_match_for_the_signature_1:t(2658,e.DiagnosticCategory.Error,"Type_0_provides_no_match_for_the_signature_1_2658","Type '{0}' provides no match for the signature '{1}'."),super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher:t(2659,e.DiagnosticCategory.Error,"super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_highe_2659","'super' is only allowed in members of object literal expressions when option 'target' is 'ES2015' or higher."),super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions:t(2660,e.DiagnosticCategory.Error,"super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions_2660","'super' can only be referenced in members of derived classes or object literal expressions."),Cannot_export_0_Only_local_declarations_can_be_exported_from_a_module:t(2661,e.DiagnosticCategory.Error,"Cannot_export_0_Only_local_declarations_can_be_exported_from_a_module_2661","Cannot export '{0}'. Only local declarations can be exported from a module."),Cannot_find_name_0_Did_you_mean_the_static_member_1_0:t(2662,e.DiagnosticCategory.Error,"Cannot_find_name_0_Did_you_mean_the_static_member_1_0_2662","Cannot find name '{0}'. Did you mean the static member '{1}.{0}'?"),Cannot_find_name_0_Did_you_mean_the_instance_member_this_0:t(2663,e.DiagnosticCategory.Error,"Cannot_find_name_0_Did_you_mean_the_instance_member_this_0_2663","Cannot find name '{0}'. Did you mean the instance member 'this.{0}'?"),Invalid_module_name_in_augmentation_module_0_cannot_be_found:t(2664,e.DiagnosticCategory.Error,"Invalid_module_name_in_augmentation_module_0_cannot_be_found_2664","Invalid module name in augmentation, module '{0}' cannot be found."),Invalid_module_name_in_augmentation_Module_0_resolves_to_an_untyped_module_at_1_which_cannot_be_augmented:t(2665,e.DiagnosticCategory.Error,"Invalid_module_name_in_augmentation_Module_0_resolves_to_an_untyped_module_at_1_which_cannot_be_augm_2665","Invalid module name in augmentation. Module '{0}' resolves to an untyped module at '{1}', which cannot be augmented."),Exports_and_export_assignments_are_not_permitted_in_module_augmentations:t(2666,e.DiagnosticCategory.Error,"Exports_and_export_assignments_are_not_permitted_in_module_augmentations_2666","Exports and export assignments are not permitted in module augmentations."),Imports_are_not_permitted_in_module_augmentations_Consider_moving_them_to_the_enclosing_external_module:t(2667,e.DiagnosticCategory.Error,"Imports_are_not_permitted_in_module_augmentations_Consider_moving_them_to_the_enclosing_external_mod_2667","Imports are not permitted in module augmentations. Consider moving them to the enclosing external module."),export_modifier_cannot_be_applied_to_ambient_modules_and_module_augmentations_since_they_are_always_visible:t(2668,e.DiagnosticCategory.Error,"export_modifier_cannot_be_applied_to_ambient_modules_and_module_augmentations_since_they_are_always__2668","'export' modifier cannot be applied to ambient modules and module augmentations since they are always visible."),Augmentations_for_the_global_scope_can_only_be_directly_nested_in_external_modules_or_ambient_module_declarations:t(2669,e.DiagnosticCategory.Error,"Augmentations_for_the_global_scope_can_only_be_directly_nested_in_external_modules_or_ambient_module_2669","Augmentations for the global scope can only be directly nested in external modules or ambient module declarations."),Augmentations_for_the_global_scope_should_have_declare_modifier_unless_they_appear_in_already_ambient_context:t(2670,e.DiagnosticCategory.Error,"Augmentations_for_the_global_scope_should_have_declare_modifier_unless_they_appear_in_already_ambien_2670","Augmentations for the global scope should have 'declare' modifier unless they appear in already ambient context."),Cannot_augment_module_0_because_it_resolves_to_a_non_module_entity:t(2671,e.DiagnosticCategory.Error,"Cannot_augment_module_0_because_it_resolves_to_a_non_module_entity_2671","Cannot augment module '{0}' because it resolves to a non-module entity."),Cannot_assign_a_0_constructor_type_to_a_1_constructor_type:t(2672,e.DiagnosticCategory.Error,"Cannot_assign_a_0_constructor_type_to_a_1_constructor_type_2672","Cannot assign a '{0}' constructor type to a '{1}' constructor type."),Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration:t(2673,e.DiagnosticCategory.Error,"Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration_2673","Constructor of class '{0}' is private and only accessible within the class declaration."),Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration:t(2674,e.DiagnosticCategory.Error,"Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration_2674","Constructor of class '{0}' is protected and only accessible within the class declaration."),Cannot_extend_a_class_0_Class_constructor_is_marked_as_private:t(2675,e.DiagnosticCategory.Error,"Cannot_extend_a_class_0_Class_constructor_is_marked_as_private_2675","Cannot extend a class '{0}'. Class constructor is marked as private."),Accessors_must_both_be_abstract_or_non_abstract:t(2676,e.DiagnosticCategory.Error,"Accessors_must_both_be_abstract_or_non_abstract_2676","Accessors must both be abstract or non-abstract."),A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type:t(2677,e.DiagnosticCategory.Error,"A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type_2677","A type predicate's type must be assignable to its parameter's type."),Type_0_is_not_comparable_to_type_1:t(2678,e.DiagnosticCategory.Error,"Type_0_is_not_comparable_to_type_1_2678","Type '{0}' is not comparable to type '{1}'."),A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void:t(2679,e.DiagnosticCategory.Error,"A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void_2679","A function that is called with the 'new' keyword cannot have a 'this' type that is 'void'."),A_0_parameter_must_be_the_first_parameter:t(2680,e.DiagnosticCategory.Error,"A_0_parameter_must_be_the_first_parameter_2680","A '{0}' parameter must be the first parameter."),A_constructor_cannot_have_a_this_parameter:t(2681,e.DiagnosticCategory.Error,"A_constructor_cannot_have_a_this_parameter_2681","A constructor cannot have a 'this' parameter."),get_and_set_accessor_must_have_the_same_this_type:t(2682,e.DiagnosticCategory.Error,"get_and_set_accessor_must_have_the_same_this_type_2682","'get' and 'set' accessor must have the same 'this' type."),this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation:t(2683,e.DiagnosticCategory.Error,"this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_2683","'this' implicitly has type 'any' because it does not have a type annotation."),The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1:t(2684,e.DiagnosticCategory.Error,"The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1_2684","The 'this' context of type '{0}' is not assignable to method's 'this' of type '{1}'."),The_this_types_of_each_signature_are_incompatible:t(2685,e.DiagnosticCategory.Error,"The_this_types_of_each_signature_are_incompatible_2685","The 'this' types of each signature are incompatible."),_0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead:t(2686,e.DiagnosticCategory.Error,"_0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead_2686","'{0}' refers to a UMD global, but the current file is a module. Consider adding an import instead."),All_declarations_of_0_must_have_identical_modifiers:t(2687,e.DiagnosticCategory.Error,"All_declarations_of_0_must_have_identical_modifiers_2687","All declarations of '{0}' must have identical modifiers."),Cannot_find_type_definition_file_for_0:t(2688,e.DiagnosticCategory.Error,"Cannot_find_type_definition_file_for_0_2688","Cannot find type definition file for '{0}'."),Cannot_extend_an_interface_0_Did_you_mean_implements:t(2689,e.DiagnosticCategory.Error,"Cannot_extend_an_interface_0_Did_you_mean_implements_2689","Cannot extend an interface '{0}'. Did you mean 'implements'?"),An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead:t(2691,e.DiagnosticCategory.Error,"An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead_2691","An import path cannot end with a '{0}' extension. Consider importing '{1}' instead."),_0_is_a_primitive_but_1_is_a_wrapper_object_Prefer_using_0_when_possible:t(2692,e.DiagnosticCategory.Error,"_0_is_a_primitive_but_1_is_a_wrapper_object_Prefer_using_0_when_possible_2692","'{0}' is a primitive, but '{1}' is a wrapper object. Prefer using '{0}' when possible."),_0_only_refers_to_a_type_but_is_being_used_as_a_value_here:t(2693,e.DiagnosticCategory.Error,"_0_only_refers_to_a_type_but_is_being_used_as_a_value_here_2693","'{0}' only refers to a type, but is being used as a value here."),Namespace_0_has_no_exported_member_1:t(2694,e.DiagnosticCategory.Error,"Namespace_0_has_no_exported_member_1_2694","Namespace '{0}' has no exported member '{1}'."),Left_side_of_comma_operator_is_unused_and_has_no_side_effects:t(2695,e.DiagnosticCategory.Error,"Left_side_of_comma_operator_is_unused_and_has_no_side_effects_2695","Left side of comma operator is unused and has no side effects.",!0),The_Object_type_is_assignable_to_very_few_other_types_Did_you_mean_to_use_the_any_type_instead:t(2696,e.DiagnosticCategory.Error,"The_Object_type_is_assignable_to_very_few_other_types_Did_you_mean_to_use_the_any_type_instead_2696","The 'Object' type is assignable to very few other types. Did you mean to use the 'any' type instead?"),An_async_function_or_method_must_return_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_include_ES2015_in_your_lib_option:t(2697,e.DiagnosticCategory.Error,"An_async_function_or_method_must_return_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_in_2697","An async function or method must return a 'Promise'. Make sure you have a declaration for 'Promise' or include 'ES2015' in your `--lib` option."),Spread_types_may_only_be_created_from_object_types:t(2698,e.DiagnosticCategory.Error,"Spread_types_may_only_be_created_from_object_types_2698","Spread types may only be created from object types."),Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1:t(2699,e.DiagnosticCategory.Error,"Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1_2699","Static property '{0}' conflicts with built-in property 'Function.{0}' of constructor function '{1}'."),Rest_types_may_only_be_created_from_object_types:t(2700,e.DiagnosticCategory.Error,"Rest_types_may_only_be_created_from_object_types_2700","Rest types may only be created from object types."),The_target_of_an_object_rest_assignment_must_be_a_variable_or_a_property_access:t(2701,e.DiagnosticCategory.Error,"The_target_of_an_object_rest_assignment_must_be_a_variable_or_a_property_access_2701","The target of an object rest assignment must be a variable or a property access."),_0_only_refers_to_a_type_but_is_being_used_as_a_namespace_here:t(2702,e.DiagnosticCategory.Error,"_0_only_refers_to_a_type_but_is_being_used_as_a_namespace_here_2702","'{0}' only refers to a type, but is being used as a namespace here."),The_operand_of_a_delete_operator_must_be_a_property_reference:t(2703,e.DiagnosticCategory.Error,"The_operand_of_a_delete_operator_must_be_a_property_reference_2703","The operand of a delete operator must be a property reference."),The_operand_of_a_delete_operator_cannot_be_a_read_only_property:t(2704,e.DiagnosticCategory.Error,"The_operand_of_a_delete_operator_cannot_be_a_read_only_property_2704","The operand of a delete operator cannot be a read-only property."),An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option:t(2705,e.DiagnosticCategory.Error,"An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_de_2705","An async function or method in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your `--lib` option."),Required_type_parameters_may_not_follow_optional_type_parameters:t(2706,e.DiagnosticCategory.Error,"Required_type_parameters_may_not_follow_optional_type_parameters_2706","Required type parameters may not follow optional type parameters."),Generic_type_0_requires_between_1_and_2_type_arguments:t(2707,e.DiagnosticCategory.Error,"Generic_type_0_requires_between_1_and_2_type_arguments_2707","Generic type '{0}' requires between {1} and {2} type arguments."),Cannot_use_namespace_0_as_a_value:t(2708,e.DiagnosticCategory.Error,"Cannot_use_namespace_0_as_a_value_2708","Cannot use namespace '{0}' as a value."),Cannot_use_namespace_0_as_a_type:t(2709,e.DiagnosticCategory.Error,"Cannot_use_namespace_0_as_a_type_2709","Cannot use namespace '{0}' as a type."),_0_are_specified_twice_The_attribute_named_0_will_be_overwritten:t(2710,e.DiagnosticCategory.Error,"_0_are_specified_twice_The_attribute_named_0_will_be_overwritten_2710","'{0}' are specified twice. The attribute named '{0}' will be overwritten."),A_dynamic_import_call_returns_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_include_ES2015_in_your_lib_option:t(2711,e.DiagnosticCategory.Error,"A_dynamic_import_call_returns_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_include_ES20_2711","A dynamic import call returns a 'Promise'. Make sure you have a declaration for 'Promise' or include 'ES2015' in your `--lib` option."),A_dynamic_import_call_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option:t(2712,e.DiagnosticCategory.Error,"A_dynamic_import_call_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declarat_2712","A dynamic import call in ES5/ES3 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your `--lib` option."),Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_property_1_in_0_with_0_1:t(2713,e.DiagnosticCategory.Error,"Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_p_2713","Cannot access '{0}.{1}' because '{0}' is a type, but not a namespace. Did you mean to retrieve the type of the property '{1}' in '{0}' with '{0}[\"{1}\"]'?"),The_expression_of_an_export_assignment_must_be_an_identifier_or_qualified_name_in_an_ambient_context:t(2714,e.DiagnosticCategory.Error,"The_expression_of_an_export_assignment_must_be_an_identifier_or_qualified_name_in_an_ambient_context_2714","The expression of an export assignment must be an identifier or qualified name in an ambient context."),Abstract_property_0_in_class_1_cannot_be_accessed_in_the_constructor:t(2715,e.DiagnosticCategory.Error,"Abstract_property_0_in_class_1_cannot_be_accessed_in_the_constructor_2715","Abstract property '{0}' in class '{1}' cannot be accessed in the constructor."),Type_parameter_0_has_a_circular_default:t(2716,e.DiagnosticCategory.Error,"Type_parameter_0_has_a_circular_default_2716","Type parameter '{0}' has a circular default."),Subsequent_property_declarations_must_have_the_same_type_Property_0_must_be_of_type_1_but_here_has_type_2:t(2717,e.DiagnosticCategory.Error,"Subsequent_property_declarations_must_have_the_same_type_Property_0_must_be_of_type_1_but_here_has_t_2717","Subsequent property declarations must have the same type. Property '{0}' must be of type '{1}', but here has type '{2}'."),Duplicate_property_0:t(2718,e.DiagnosticCategory.Error,"Duplicate_property_0_2718","Duplicate property '{0}'."),Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated:t(2719,e.DiagnosticCategory.Error,"Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated_2719","Type '{0}' is not assignable to type '{1}'. Two different types with this name exist, but they are unrelated."),Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass:t(2720,e.DiagnosticCategory.Error,"Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclas_2720","Class '{0}' incorrectly implements class '{1}'. Did you mean to extend '{1}' and inherit its members as a subclass?"),Cannot_invoke_an_object_which_is_possibly_null:t(2721,e.DiagnosticCategory.Error,"Cannot_invoke_an_object_which_is_possibly_null_2721","Cannot invoke an object which is possibly 'null'."),Cannot_invoke_an_object_which_is_possibly_undefined:t(2722,e.DiagnosticCategory.Error,"Cannot_invoke_an_object_which_is_possibly_undefined_2722","Cannot invoke an object which is possibly 'undefined'."),Cannot_invoke_an_object_which_is_possibly_null_or_undefined:t(2723,e.DiagnosticCategory.Error,"Cannot_invoke_an_object_which_is_possibly_null_or_undefined_2723","Cannot invoke an object which is possibly 'null' or 'undefined'."),Module_0_has_no_exported_member_1_Did_you_mean_2:t(2724,e.DiagnosticCategory.Error,"Module_0_has_no_exported_member_1_Did_you_mean_2_2724","Module '{0}' has no exported member '{1}'. Did you mean '{2}'?"),Class_name_cannot_be_Object_when_targeting_ES5_with_module_0:t(2725,e.DiagnosticCategory.Error,"Class_name_cannot_be_Object_when_targeting_ES5_with_module_0_2725","Class name cannot be 'Object' when targeting ES5 with module {0}."),Cannot_find_lib_definition_for_0:t(2726,e.DiagnosticCategory.Error,"Cannot_find_lib_definition_for_0_2726","Cannot find lib definition for '{0}'."),Cannot_find_lib_definition_for_0_Did_you_mean_1:t(2727,e.DiagnosticCategory.Error,"Cannot_find_lib_definition_for_0_Did_you_mean_1_2727","Cannot find lib definition for '{0}'. Did you mean '{1}'?"),_0_is_declared_here:t(2728,e.DiagnosticCategory.Message,"_0_is_declared_here_2728","'{0}' is declared here."),Property_0_is_used_before_its_initialization:t(2729,e.DiagnosticCategory.Error,"Property_0_is_used_before_its_initialization_2729","Property '{0}' is used before its initialization."),An_arrow_function_cannot_have_a_this_parameter:t(2730,e.DiagnosticCategory.Error,"An_arrow_function_cannot_have_a_this_parameter_2730","An arrow function cannot have a 'this' parameter."),Implicit_conversion_of_a_symbol_to_a_string_will_fail_at_runtime_Consider_wrapping_this_expression_in_String:t(2731,e.DiagnosticCategory.Error,"Implicit_conversion_of_a_symbol_to_a_string_will_fail_at_runtime_Consider_wrapping_this_expression_i_2731","Implicit conversion of a 'symbol' to a 'string' will fail at runtime. Consider wrapping this expression in 'String(...)'."),Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension:t(2732,e.DiagnosticCategory.Error,"Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension_2732","Cannot find module '{0}'. Consider using '--resolveJsonModule' to import module with '.json' extension"),Property_0_was_also_declared_here:t(2733,e.DiagnosticCategory.Error,"Property_0_was_also_declared_here_2733","Property '{0}' was also declared here."),It_is_highly_likely_that_you_are_missing_a_semicolon:t(2734,e.DiagnosticCategory.Error,"It_is_highly_likely_that_you_are_missing_a_semicolon_2734","It is highly likely that you are missing a semicolon."),Did_you_mean_for_0_to_be_constrained_to_type_new_args_Colon_any_1:t(2735,e.DiagnosticCategory.Error,"Did_you_mean_for_0_to_be_constrained_to_type_new_args_Colon_any_1_2735","Did you mean for '{0}' to be constrained to type 'new (...args: any[]) => {1}'?"),Operator_0_cannot_be_applied_to_type_1:t(2736,e.DiagnosticCategory.Error,"Operator_0_cannot_be_applied_to_type_1_2736","Operator '{0}' cannot be applied to type '{1}'."),BigInt_literals_are_not_available_when_targeting_lower_than_ESNext:t(2737,e.DiagnosticCategory.Error,"BigInt_literals_are_not_available_when_targeting_lower_than_ESNext_2737","BigInt literals are not available when targeting lower than ESNext."),An_outer_value_of_this_is_shadowed_by_this_container:t(2738,e.DiagnosticCategory.Message,"An_outer_value_of_this_is_shadowed_by_this_container_2738","An outer value of 'this' is shadowed by this container."),Type_0_is_missing_the_following_properties_from_type_1_Colon_2:t(2739,e.DiagnosticCategory.Error,"Type_0_is_missing_the_following_properties_from_type_1_Colon_2_2739","Type '{0}' is missing the following properties from type '{1}': {2}"),Type_0_is_missing_the_following_properties_from_type_1_Colon_2_and_3_more:t(2740,e.DiagnosticCategory.Error,"Type_0_is_missing_the_following_properties_from_type_1_Colon_2_and_3_more_2740","Type '{0}' is missing the following properties from type '{1}': {2}, and {3} more."),Property_0_is_missing_in_type_1_but_required_in_type_2:t(2741,e.DiagnosticCategory.Error,"Property_0_is_missing_in_type_1_but_required_in_type_2_2741","Property '{0}' is missing in type '{1}' but required in type '{2}'."),The_inferred_type_of_0_cannot_be_named_without_a_reference_to_1_This_is_likely_not_portable_A_type_annotation_is_necessary:t(2742,e.DiagnosticCategory.Error,"The_inferred_type_of_0_cannot_be_named_without_a_reference_to_1_This_is_likely_not_portable_A_type_a_2742","The inferred type of '{0}' cannot be named without a reference to '{1}'. This is likely not portable. A type annotation is necessary."),No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments:t(2743,e.DiagnosticCategory.Error,"No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments_2743","No overload expects {0} type arguments, but overloads do exist that expect either {1} or {2} type arguments."),Type_parameter_defaults_can_only_reference_previously_declared_type_parameters:t(2744,e.DiagnosticCategory.Error,"Type_parameter_defaults_can_only_reference_previously_declared_type_parameters_2744","Type parameter defaults can only reference previously declared type parameters."),This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_provided:t(2745,e.DiagnosticCategory.Error,"This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_pr_2745","This JSX tag's '{0}' prop expects type '{1}' which requires multiple children, but only a single child was provided."),This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided:t(2746,e.DiagnosticCategory.Error,"This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided_2746","This JSX tag's '{0}' prop expects a single child of type '{1}', but multiple children were provided."),_0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_type_of_1_is_2:t(2747,e.DiagnosticCategory.Error,"_0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_t_2747","'{0}' components don't accept text as child elements. Text in JSX has the type 'string', but the expected type of '{1}' is '{2}'."),Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided:t(2748,e.DiagnosticCategory.Error,"Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided_2748","Cannot access ambient const enums when the '--isolatedModules' flag is provided."),_0_refers_to_a_value_but_is_being_used_as_a_type_here:t(2749,e.DiagnosticCategory.Error,"_0_refers_to_a_value_but_is_being_used_as_a_type_here_2749","'{0}' refers to a value, but is being used as a type here."),The_implementation_signature_is_declared_here:t(2750,e.DiagnosticCategory.Error,"The_implementation_signature_is_declared_here_2750","The implementation signature is declared here."),Circularity_originates_in_type_at_this_location:t(2751,e.DiagnosticCategory.Error,"Circularity_originates_in_type_at_this_location_2751","Circularity originates in type at this location."),The_first_export_default_is_here:t(2752,e.DiagnosticCategory.Error,"The_first_export_default_is_here_2752","The first export default is here."),Another_export_default_is_here:t(2753,e.DiagnosticCategory.Error,"Another_export_default_is_here_2753","Another export default is here."),super_may_not_use_type_arguments:t(2754,e.DiagnosticCategory.Error,"super_may_not_use_type_arguments_2754","'super' may not use type arguments."),No_constituent_of_type_0_is_callable:t(2755,e.DiagnosticCategory.Error,"No_constituent_of_type_0_is_callable_2755","No constituent of type '{0}' is callable."),Not_all_constituents_of_type_0_are_callable:t(2756,e.DiagnosticCategory.Error,"Not_all_constituents_of_type_0_are_callable_2756","Not all constituents of type '{0}' are callable."),Type_0_has_no_call_signatures:t(2757,e.DiagnosticCategory.Error,"Type_0_has_no_call_signatures_2757","Type '{0}' has no call signatures."),Each_member_of_the_union_type_0_has_signatures_but_none_of_those_signatures_are_compatible_with_each_other:t(2758,e.DiagnosticCategory.Error,"Each_member_of_the_union_type_0_has_signatures_but_none_of_those_signatures_are_compatible_with_each_2758","Each member of the union type '{0}' has signatures, but none of those signatures are compatible with each other."),No_constituent_of_type_0_is_constructable:t(2759,e.DiagnosticCategory.Error,"No_constituent_of_type_0_is_constructable_2759","No constituent of type '{0}' is constructable."),Not_all_constituents_of_type_0_are_constructable:t(2760,e.DiagnosticCategory.Error,"Not_all_constituents_of_type_0_are_constructable_2760","Not all constituents of type '{0}' are constructable."),Type_0_has_no_construct_signatures:t(2761,e.DiagnosticCategory.Error,"Type_0_has_no_construct_signatures_2761","Type '{0}' has no construct signatures."),Each_member_of_the_union_type_0_has_construct_signatures_but_none_of_those_signatures_are_compatible_with_each_other:t(2762,e.DiagnosticCategory.Error,"Each_member_of_the_union_type_0_has_construct_signatures_but_none_of_those_signatures_are_compatible_2762","Each member of the union type '{0}' has construct signatures, but none of those signatures are compatible with each other."),Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_for_of_will_always_send_0:t(2763,e.DiagnosticCategory.Error,"Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_for_of_will_always_s_2763","Cannot iterate value because the 'next' method of its iterator expects type '{1}', but for-of will always send '{0}'."),Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_spread_will_always_send_0:t(2764,e.DiagnosticCategory.Error,"Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_spread_will_al_2764","Cannot iterate value because the 'next' method of its iterator expects type '{1}', but array spread will always send '{0}'."),Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_destructuring_will_always_send_0:t(2765,e.DiagnosticCategory.Error,"Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_destructuring__2765","Cannot iterate value because the 'next' method of its iterator expects type '{1}', but array destructuring will always send '{0}'."),Cannot_delegate_iteration_to_value_because_the_next_method_of_its_iterator_expects_type_1_but_the_containing_generator_will_always_send_0:t(2766,e.DiagnosticCategory.Error,"Cannot_delegate_iteration_to_value_because_the_next_method_of_its_iterator_expects_type_1_but_the_co_2766","Cannot delegate iteration to value because the 'next' method of its iterator expects type '{1}', but the containing generator will always send '{0}'."),The_0_property_of_an_iterator_must_be_a_method:t(2767,e.DiagnosticCategory.Error,"The_0_property_of_an_iterator_must_be_a_method_2767","The '{0}' property of an iterator must be a method."),The_0_property_of_an_async_iterator_must_be_a_method:t(2768,e.DiagnosticCategory.Error,"The_0_property_of_an_async_iterator_must_be_a_method_2768","The '{0}' property of an async iterator must be a method."),No_overload_matches_this_call:t(2769,e.DiagnosticCategory.Error,"No_overload_matches_this_call_2769","No overload matches this call."),The_last_overload_gave_the_following_error:t(2770,e.DiagnosticCategory.Error,"The_last_overload_gave_the_following_error_2770","The last overload gave the following error."),The_last_overload_is_declared_here:t(2771,e.DiagnosticCategory.Error,"The_last_overload_is_declared_here_2771","The last overload is declared here."),Overload_0_of_1_2_gave_the_following_error:t(2772,e.DiagnosticCategory.Error,"Overload_0_of_1_2_gave_the_following_error_2772","Overload {0} of {1}, '{2}', gave the following error."),Did_you_forget_to_use_await:t(2773,e.DiagnosticCategory.Error,"Did_you_forget_to_use_await_2773","Did you forget to use 'await'?"),This_condition_will_always_return_true_since_the_function_is_always_defined_Did_you_mean_to_call_it_instead:t(2774,e.DiagnosticCategory.Error,"This_condition_will_always_return_true_since_the_function_is_always_defined_Did_you_mean_to_call_it__2774","This condition will always return true since the function is always defined. Did you mean to call it instead?"),Assertions_require_every_name_in_the_call_target_to_be_declared_with_an_explicit_type_annotation:t(2775,e.DiagnosticCategory.Error,"Assertions_require_every_name_in_the_call_target_to_be_declared_with_an_explicit_type_annotation_2775","Assertions require every name in the call target to be declared with an explicit type annotation."),Assertions_require_the_call_target_to_be_an_identifier_or_qualified_name:t(2776,e.DiagnosticCategory.Error,"Assertions_require_the_call_target_to_be_an_identifier_or_qualified_name_2776","Assertions require the call target to be an identifier or qualified name."),The_operand_of_an_increment_or_decrement_operator_may_not_be_an_optional_property_access:t(2777,e.DiagnosticCategory.Error,"The_operand_of_an_increment_or_decrement_operator_may_not_be_an_optional_property_access_2777","The operand of an increment or decrement operator may not be an optional property access."),The_target_of_an_object_rest_assignment_may_not_be_an_optional_property_access:t(2778,e.DiagnosticCategory.Error,"The_target_of_an_object_rest_assignment_may_not_be_an_optional_property_access_2778","The target of an object rest assignment may not be an optional property access."),The_left_hand_side_of_an_assignment_expression_may_not_be_an_optional_property_access:t(2779,e.DiagnosticCategory.Error,"The_left_hand_side_of_an_assignment_expression_may_not_be_an_optional_property_access_2779","The left-hand side of an assignment expression may not be an optional property access."),The_left_hand_side_of_a_for_in_statement_may_not_be_an_optional_property_access:t(2780,e.DiagnosticCategory.Error,"The_left_hand_side_of_a_for_in_statement_may_not_be_an_optional_property_access_2780","The left-hand side of a 'for...in' statement may not be an optional property access."),The_left_hand_side_of_a_for_of_statement_may_not_be_an_optional_property_access:t(2781,e.DiagnosticCategory.Error,"The_left_hand_side_of_a_for_of_statement_may_not_be_an_optional_property_access_2781","The left-hand side of a 'for...of' statement may not be an optional property access."),Import_declaration_0_is_using_private_name_1:t(4e3,e.DiagnosticCategory.Error,"Import_declaration_0_is_using_private_name_1_4000","Import declaration '{0}' is using private name '{1}'."),Type_parameter_0_of_exported_class_has_or_is_using_private_name_1:t(4002,e.DiagnosticCategory.Error,"Type_parameter_0_of_exported_class_has_or_is_using_private_name_1_4002","Type parameter '{0}' of exported class has or is using private name '{1}'."),Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1:t(4004,e.DiagnosticCategory.Error,"Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1_4004","Type parameter '{0}' of exported interface has or is using private name '{1}'."),Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1:t(4006,e.DiagnosticCategory.Error,"Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1_4006","Type parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'."),Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1:t(4008,e.DiagnosticCategory.Error,"Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1_4008","Type parameter '{0}' of call signature from exported interface has or is using private name '{1}'."),Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1:t(4010,e.DiagnosticCategory.Error,"Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1_4010","Type parameter '{0}' of public static method from exported class has or is using private name '{1}'."),Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1:t(4012,e.DiagnosticCategory.Error,"Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1_4012","Type parameter '{0}' of public method from exported class has or is using private name '{1}'."),Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1:t(4014,e.DiagnosticCategory.Error,"Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1_4014","Type parameter '{0}' of method from exported interface has or is using private name '{1}'."),Type_parameter_0_of_exported_function_has_or_is_using_private_name_1:t(4016,e.DiagnosticCategory.Error,"Type_parameter_0_of_exported_function_has_or_is_using_private_name_1_4016","Type parameter '{0}' of exported function has or is using private name '{1}'."),Implements_clause_of_exported_class_0_has_or_is_using_private_name_1:t(4019,e.DiagnosticCategory.Error,"Implements_clause_of_exported_class_0_has_or_is_using_private_name_1_4019","Implements clause of exported class '{0}' has or is using private name '{1}'."),extends_clause_of_exported_class_0_has_or_is_using_private_name_1:t(4020,e.DiagnosticCategory.Error,"extends_clause_of_exported_class_0_has_or_is_using_private_name_1_4020","'extends' clause of exported class '{0}' has or is using private name '{1}'."),extends_clause_of_exported_interface_0_has_or_is_using_private_name_1:t(4022,e.DiagnosticCategory.Error,"extends_clause_of_exported_interface_0_has_or_is_using_private_name_1_4022","'extends' clause of exported interface '{0}' has or is using private name '{1}'."),Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:t(4023,e.DiagnosticCategory.Error,"Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4023","Exported variable '{0}' has or is using name '{1}' from external module {2} but cannot be named."),Exported_variable_0_has_or_is_using_name_1_from_private_module_2:t(4024,e.DiagnosticCategory.Error,"Exported_variable_0_has_or_is_using_name_1_from_private_module_2_4024","Exported variable '{0}' has or is using name '{1}' from private module '{2}'."),Exported_variable_0_has_or_is_using_private_name_1:t(4025,e.DiagnosticCategory.Error,"Exported_variable_0_has_or_is_using_private_name_1_4025","Exported variable '{0}' has or is using private name '{1}'."),Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:t(4026,e.DiagnosticCategory.Error,"Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot__4026","Public static property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named."),Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:t(4027,e.DiagnosticCategory.Error,"Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2_4027","Public static property '{0}' of exported class has or is using name '{1}' from private module '{2}'."),Public_static_property_0_of_exported_class_has_or_is_using_private_name_1:t(4028,e.DiagnosticCategory.Error,"Public_static_property_0_of_exported_class_has_or_is_using_private_name_1_4028","Public static property '{0}' of exported class has or is using private name '{1}'."),Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:t(4029,e.DiagnosticCategory.Error,"Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_name_4029","Public property '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named."),Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:t(4030,e.DiagnosticCategory.Error,"Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2_4030","Public property '{0}' of exported class has or is using name '{1}' from private module '{2}'."),Public_property_0_of_exported_class_has_or_is_using_private_name_1:t(4031,e.DiagnosticCategory.Error,"Public_property_0_of_exported_class_has_or_is_using_private_name_1_4031","Public property '{0}' of exported class has or is using private name '{1}'."),Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2:t(4032,e.DiagnosticCategory.Error,"Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2_4032","Property '{0}' of exported interface has or is using name '{1}' from private module '{2}'."),Property_0_of_exported_interface_has_or_is_using_private_name_1:t(4033,e.DiagnosticCategory.Error,"Property_0_of_exported_interface_has_or_is_using_private_name_1_4033","Property '{0}' of exported interface has or is using private name '{1}'."),Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2:t(4034,e.DiagnosticCategory.Error,"Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_name_1_from_private_mod_4034","Parameter type of public static setter '{0}' from exported class has or is using name '{1}' from private module '{2}'."),Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_private_name_1:t(4035,e.DiagnosticCategory.Error,"Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_private_name_1_4035","Parameter type of public static setter '{0}' from exported class has or is using private name '{1}'."),Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2:t(4036,e.DiagnosticCategory.Error,"Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2_4036","Parameter type of public setter '{0}' from exported class has or is using name '{1}' from private module '{2}'."),Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_private_name_1:t(4037,e.DiagnosticCategory.Error,"Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_private_name_1_4037","Parameter type of public setter '{0}' from exported class has or is using private name '{1}'."),Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:t(4038,e.DiagnosticCategory.Error,"Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_external_modul_4038","Return type of public static getter '{0}' from exported class has or is using name '{1}' from external module {2} but cannot be named."),Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2:t(4039,e.DiagnosticCategory.Error,"Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_4039","Return type of public static getter '{0}' from exported class has or is using name '{1}' from private module '{2}'."),Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_private_name_1:t(4040,e.DiagnosticCategory.Error,"Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_private_name_1_4040","Return type of public static getter '{0}' from exported class has or is using private name '{1}'."),Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:t(4041,e.DiagnosticCategory.Error,"Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_4041","Return type of public getter '{0}' from exported class has or is using name '{1}' from external module {2} but cannot be named."),Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2:t(4042,e.DiagnosticCategory.Error,"Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2_4042","Return type of public getter '{0}' from exported class has or is using name '{1}' from private module '{2}'."),Return_type_of_public_getter_0_from_exported_class_has_or_is_using_private_name_1:t(4043,e.DiagnosticCategory.Error,"Return_type_of_public_getter_0_from_exported_class_has_or_is_using_private_name_1_4043","Return type of public getter '{0}' from exported class has or is using private name '{1}'."),Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:t(4044,e.DiagnosticCategory.Error,"Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_mod_4044","Return type of constructor signature from exported interface has or is using name '{0}' from private module '{1}'."),Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0:t(4045,e.DiagnosticCategory.Error,"Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0_4045","Return type of constructor signature from exported interface has or is using private name '{0}'."),Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:t(4046,e.DiagnosticCategory.Error,"Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1_4046","Return type of call signature from exported interface has or is using name '{0}' from private module '{1}'."),Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0:t(4047,e.DiagnosticCategory.Error,"Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0_4047","Return type of call signature from exported interface has or is using private name '{0}'."),Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:t(4048,e.DiagnosticCategory.Error,"Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1_4048","Return type of index signature from exported interface has or is using name '{0}' from private module '{1}'."),Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0:t(4049,e.DiagnosticCategory.Error,"Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0_4049","Return type of index signature from exported interface has or is using private name '{0}'."),Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:t(4050,e.DiagnosticCategory.Error,"Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module__4050","Return type of public static method from exported class has or is using name '{0}' from external module {1} but cannot be named."),Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1:t(4051,e.DiagnosticCategory.Error,"Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1_4051","Return type of public static method from exported class has or is using name '{0}' from private module '{1}'."),Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0:t(4052,e.DiagnosticCategory.Error,"Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0_4052","Return type of public static method from exported class has or is using private name '{0}'."),Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:t(4053,e.DiagnosticCategory.Error,"Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_c_4053","Return type of public method from exported class has or is using name '{0}' from external module {1} but cannot be named."),Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1:t(4054,e.DiagnosticCategory.Error,"Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1_4054","Return type of public method from exported class has or is using name '{0}' from private module '{1}'."),Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0:t(4055,e.DiagnosticCategory.Error,"Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0_4055","Return type of public method from exported class has or is using private name '{0}'."),Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1:t(4056,e.DiagnosticCategory.Error,"Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1_4056","Return type of method from exported interface has or is using name '{0}' from private module '{1}'."),Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0:t(4057,e.DiagnosticCategory.Error,"Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0_4057","Return type of method from exported interface has or is using private name '{0}'."),Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:t(4058,e.DiagnosticCategory.Error,"Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named_4058","Return type of exported function has or is using name '{0}' from external module {1} but cannot be named."),Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1:t(4059,e.DiagnosticCategory.Error,"Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1_4059","Return type of exported function has or is using name '{0}' from private module '{1}'."),Return_type_of_exported_function_has_or_is_using_private_name_0:t(4060,e.DiagnosticCategory.Error,"Return_type_of_exported_function_has_or_is_using_private_name_0_4060","Return type of exported function has or is using private name '{0}'."),Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:t(4061,e.DiagnosticCategory.Error,"Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_can_4061","Parameter '{0}' of constructor from exported class has or is using name '{1}' from external module {2} but cannot be named."),Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2:t(4062,e.DiagnosticCategory.Error,"Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2_4062","Parameter '{0}' of constructor from exported class has or is using name '{1}' from private module '{2}'."),Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1:t(4063,e.DiagnosticCategory.Error,"Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1_4063","Parameter '{0}' of constructor from exported class has or is using private name '{1}'."),Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:t(4064,e.DiagnosticCategory.Error,"Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_mod_4064","Parameter '{0}' of constructor signature from exported interface has or is using name '{1}' from private module '{2}'."),Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1:t(4065,e.DiagnosticCategory.Error,"Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1_4065","Parameter '{0}' of constructor signature from exported interface has or is using private name '{1}'."),Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:t(4066,e.DiagnosticCategory.Error,"Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2_4066","Parameter '{0}' of call signature from exported interface has or is using name '{1}' from private module '{2}'."),Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1:t(4067,e.DiagnosticCategory.Error,"Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1_4067","Parameter '{0}' of call signature from exported interface has or is using private name '{1}'."),Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:t(4068,e.DiagnosticCategory.Error,"Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module__4068","Parameter '{0}' of public static method from exported class has or is using name '{1}' from external module {2} but cannot be named."),Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2:t(4069,e.DiagnosticCategory.Error,"Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2_4069","Parameter '{0}' of public static method from exported class has or is using name '{1}' from private module '{2}'."),Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1:t(4070,e.DiagnosticCategory.Error,"Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1_4070","Parameter '{0}' of public static method from exported class has or is using private name '{1}'."),Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:t(4071,e.DiagnosticCategory.Error,"Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_c_4071","Parameter '{0}' of public method from exported class has or is using name '{1}' from external module {2} but cannot be named."),Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2:t(4072,e.DiagnosticCategory.Error,"Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2_4072","Parameter '{0}' of public method from exported class has or is using name '{1}' from private module '{2}'."),Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1:t(4073,e.DiagnosticCategory.Error,"Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1_4073","Parameter '{0}' of public method from exported class has or is using private name '{1}'."),Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2:t(4074,e.DiagnosticCategory.Error,"Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2_4074","Parameter '{0}' of method from exported interface has or is using name '{1}' from private module '{2}'."),Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1:t(4075,e.DiagnosticCategory.Error,"Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1_4075","Parameter '{0}' of method from exported interface has or is using private name '{1}'."),Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:t(4076,e.DiagnosticCategory.Error,"Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4076","Parameter '{0}' of exported function has or is using name '{1}' from external module {2} but cannot be named."),Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2:t(4077,e.DiagnosticCategory.Error,"Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2_4077","Parameter '{0}' of exported function has or is using name '{1}' from private module '{2}'."),Parameter_0_of_exported_function_has_or_is_using_private_name_1:t(4078,e.DiagnosticCategory.Error,"Parameter_0_of_exported_function_has_or_is_using_private_name_1_4078","Parameter '{0}' of exported function has or is using private name '{1}'."),Exported_type_alias_0_has_or_is_using_private_name_1:t(4081,e.DiagnosticCategory.Error,"Exported_type_alias_0_has_or_is_using_private_name_1_4081","Exported type alias '{0}' has or is using private name '{1}'."),Default_export_of_the_module_has_or_is_using_private_name_0:t(4082,e.DiagnosticCategory.Error,"Default_export_of_the_module_has_or_is_using_private_name_0_4082","Default export of the module has or is using private name '{0}'."),Type_parameter_0_of_exported_type_alias_has_or_is_using_private_name_1:t(4083,e.DiagnosticCategory.Error,"Type_parameter_0_of_exported_type_alias_has_or_is_using_private_name_1_4083","Type parameter '{0}' of exported type alias has or is using private name '{1}'."),Conflicting_definitions_for_0_found_at_1_and_2_Consider_installing_a_specific_version_of_this_library_to_resolve_the_conflict:t(4090,e.DiagnosticCategory.Error,"Conflicting_definitions_for_0_found_at_1_and_2_Consider_installing_a_specific_version_of_this_librar_4090","Conflicting definitions for '{0}' found at '{1}' and '{2}'. Consider installing a specific version of this library to resolve the conflict."),Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:t(4091,e.DiagnosticCategory.Error,"Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2_4091","Parameter '{0}' of index signature from exported interface has or is using name '{1}' from private module '{2}'."),Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_private_name_1:t(4092,e.DiagnosticCategory.Error,"Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_private_name_1_4092","Parameter '{0}' of index signature from exported interface has or is using private name '{1}'."),Property_0_of_exported_class_expression_may_not_be_private_or_protected:t(4094,e.DiagnosticCategory.Error,"Property_0_of_exported_class_expression_may_not_be_private_or_protected_4094","Property '{0}' of exported class expression may not be private or protected."),Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:t(4095,e.DiagnosticCategory.Error,"Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_4095","Public static method '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named."),Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:t(4096,e.DiagnosticCategory.Error,"Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2_4096","Public static method '{0}' of exported class has or is using name '{1}' from private module '{2}'."),Public_static_method_0_of_exported_class_has_or_is_using_private_name_1:t(4097,e.DiagnosticCategory.Error,"Public_static_method_0_of_exported_class_has_or_is_using_private_name_1_4097","Public static method '{0}' of exported class has or is using private name '{1}'."),Public_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:t(4098,e.DiagnosticCategory.Error,"Public_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4098","Public method '{0}' of exported class has or is using name '{1}' from external module {2} but cannot be named."),Public_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:t(4099,e.DiagnosticCategory.Error,"Public_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2_4099","Public method '{0}' of exported class has or is using name '{1}' from private module '{2}'."),Public_method_0_of_exported_class_has_or_is_using_private_name_1:t(4100,e.DiagnosticCategory.Error,"Public_method_0_of_exported_class_has_or_is_using_private_name_1_4100","Public method '{0}' of exported class has or is using private name '{1}'."),Method_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2:t(4101,e.DiagnosticCategory.Error,"Method_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2_4101","Method '{0}' of exported interface has or is using name '{1}' from private module '{2}'."),Method_0_of_exported_interface_has_or_is_using_private_name_1:t(4102,e.DiagnosticCategory.Error,"Method_0_of_exported_interface_has_or_is_using_private_name_1_4102","Method '{0}' of exported interface has or is using private name '{1}'."),Type_parameter_0_of_exported_mapped_object_type_is_using_private_name_1:t(4103,e.DiagnosticCategory.Error,"Type_parameter_0_of_exported_mapped_object_type_is_using_private_name_1_4103","Type parameter '{0}' of exported mapped object type is using private name '{1}'."),The_type_0_is_readonly_and_cannot_be_assigned_to_the_mutable_type_1:t(4104,e.DiagnosticCategory.Error,"The_type_0_is_readonly_and_cannot_be_assigned_to_the_mutable_type_1_4104","The type '{0}' is 'readonly' and cannot be assigned to the mutable type '{1}'."),Private_or_protected_member_0_cannot_be_accessed_on_a_type_parameter:t(4105,e.DiagnosticCategory.Error,"Private_or_protected_member_0_cannot_be_accessed_on_a_type_parameter_4105","Private or protected member '{0}' cannot be accessed on a type parameter."),Parameter_0_of_accessor_has_or_is_using_private_name_1:t(4106,e.DiagnosticCategory.Error,"Parameter_0_of_accessor_has_or_is_using_private_name_1_4106","Parameter '{0}' of accessor has or is using private name '{1}'."),Parameter_0_of_accessor_has_or_is_using_name_1_from_private_module_2:t(4107,e.DiagnosticCategory.Error,"Parameter_0_of_accessor_has_or_is_using_name_1_from_private_module_2_4107","Parameter '{0}' of accessor has or is using name '{1}' from private module '{2}'."),Parameter_0_of_accessor_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:t(4108,e.DiagnosticCategory.Error,"Parameter_0_of_accessor_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named_4108","Parameter '{0}' of accessor has or is using name '{1}' from external module '{2}' but cannot be named."),Type_arguments_for_0_circularly_reference_themselves:t(4109,e.DiagnosticCategory.Error,"Type_arguments_for_0_circularly_reference_themselves_4109","Type arguments for '{0}' circularly reference themselves."),Tuple_type_arguments_circularly_reference_themselves:t(4110,e.DiagnosticCategory.Error,"Tuple_type_arguments_circularly_reference_themselves_4110","Tuple type arguments circularly reference themselves."),The_current_host_does_not_support_the_0_option:t(5001,e.DiagnosticCategory.Error,"The_current_host_does_not_support_the_0_option_5001","The current host does not support the '{0}' option."),Cannot_find_the_common_subdirectory_path_for_the_input_files:t(5009,e.DiagnosticCategory.Error,"Cannot_find_the_common_subdirectory_path_for_the_input_files_5009","Cannot find the common subdirectory path for the input files."),File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0:t(5010,e.DiagnosticCategory.Error,"File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0_5010","File specification cannot end in a recursive directory wildcard ('**'): '{0}'."),Cannot_read_file_0_Colon_1:t(5012,e.DiagnosticCategory.Error,"Cannot_read_file_0_Colon_1_5012","Cannot read file '{0}': {1}."),Failed_to_parse_file_0_Colon_1:t(5014,e.DiagnosticCategory.Error,"Failed_to_parse_file_0_Colon_1_5014","Failed to parse file '{0}': {1}."),Unknown_compiler_option_0:t(5023,e.DiagnosticCategory.Error,"Unknown_compiler_option_0_5023","Unknown compiler option '{0}'."),Compiler_option_0_requires_a_value_of_type_1:t(5024,e.DiagnosticCategory.Error,"Compiler_option_0_requires_a_value_of_type_1_5024","Compiler option '{0}' requires a value of type {1}."),Could_not_write_file_0_Colon_1:t(5033,e.DiagnosticCategory.Error,"Could_not_write_file_0_Colon_1_5033","Could not write file '{0}': {1}."),Option_project_cannot_be_mixed_with_source_files_on_a_command_line:t(5042,e.DiagnosticCategory.Error,"Option_project_cannot_be_mixed_with_source_files_on_a_command_line_5042","Option 'project' cannot be mixed with source files on a command line."),Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES2015_or_higher:t(5047,e.DiagnosticCategory.Error,"Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES_5047","Option 'isolatedModules' can only be used when either option '--module' is provided or option 'target' is 'ES2015' or higher."),Option_0_cannot_be_specified_when_option_target_is_ES3:t(5048,e.DiagnosticCategory.Error,"Option_0_cannot_be_specified_when_option_target_is_ES3_5048","Option '{0}' cannot be specified when option 'target' is 'ES3'."),Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided:t(5051,e.DiagnosticCategory.Error,"Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided_5051","Option '{0} can only be used when either option '--inlineSourceMap' or option '--sourceMap' is provided."),Option_0_cannot_be_specified_without_specifying_option_1:t(5052,e.DiagnosticCategory.Error,"Option_0_cannot_be_specified_without_specifying_option_1_5052","Option '{0}' cannot be specified without specifying option '{1}'."),Option_0_cannot_be_specified_with_option_1:t(5053,e.DiagnosticCategory.Error,"Option_0_cannot_be_specified_with_option_1_5053","Option '{0}' cannot be specified with option '{1}'."),A_tsconfig_json_file_is_already_defined_at_Colon_0:t(5054,e.DiagnosticCategory.Error,"A_tsconfig_json_file_is_already_defined_at_Colon_0_5054","A 'tsconfig.json' file is already defined at: '{0}'."),Cannot_write_file_0_because_it_would_overwrite_input_file:t(5055,e.DiagnosticCategory.Error,"Cannot_write_file_0_because_it_would_overwrite_input_file_5055","Cannot write file '{0}' because it would overwrite input file."),Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files:t(5056,e.DiagnosticCategory.Error,"Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files_5056","Cannot write file '{0}' because it would be overwritten by multiple input files."),Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0:t(5057,e.DiagnosticCategory.Error,"Cannot_find_a_tsconfig_json_file_at_the_specified_directory_Colon_0_5057","Cannot find a tsconfig.json file at the specified directory: '{0}'."),The_specified_path_does_not_exist_Colon_0:t(5058,e.DiagnosticCategory.Error,"The_specified_path_does_not_exist_Colon_0_5058","The specified path does not exist: '{0}'."),Invalid_value_for_reactNamespace_0_is_not_a_valid_identifier:t(5059,e.DiagnosticCategory.Error,"Invalid_value_for_reactNamespace_0_is_not_a_valid_identifier_5059","Invalid value for '--reactNamespace'. '{0}' is not a valid identifier."),Option_paths_cannot_be_used_without_specifying_baseUrl_option:t(5060,e.DiagnosticCategory.Error,"Option_paths_cannot_be_used_without_specifying_baseUrl_option_5060","Option 'paths' cannot be used without specifying '--baseUrl' option."),Pattern_0_can_have_at_most_one_Asterisk_character:t(5061,e.DiagnosticCategory.Error,"Pattern_0_can_have_at_most_one_Asterisk_character_5061","Pattern '{0}' can have at most one '*' character."),Substitution_0_in_pattern_1_in_can_have_at_most_one_Asterisk_character:t(5062,e.DiagnosticCategory.Error,"Substitution_0_in_pattern_1_in_can_have_at_most_one_Asterisk_character_5062","Substitution '{0}' in pattern '{1}' in can have at most one '*' character."),Substitutions_for_pattern_0_should_be_an_array:t(5063,e.DiagnosticCategory.Error,"Substitutions_for_pattern_0_should_be_an_array_5063","Substitutions for pattern '{0}' should be an array."),Substitution_0_for_pattern_1_has_incorrect_type_expected_string_got_2:t(5064,e.DiagnosticCategory.Error,"Substitution_0_for_pattern_1_has_incorrect_type_expected_string_got_2_5064","Substitution '{0}' for pattern '{1}' has incorrect type, expected 'string', got '{2}'."),File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0:t(5065,e.DiagnosticCategory.Error,"File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildca_5065","File specification cannot contain a parent directory ('..') that appears after a recursive directory wildcard ('**'): '{0}'."),Substitutions_for_pattern_0_shouldn_t_be_an_empty_array:t(5066,e.DiagnosticCategory.Error,"Substitutions_for_pattern_0_shouldn_t_be_an_empty_array_5066","Substitutions for pattern '{0}' shouldn't be an empty array."),Invalid_value_for_jsxFactory_0_is_not_a_valid_identifier_or_qualified_name:t(5067,e.DiagnosticCategory.Error,"Invalid_value_for_jsxFactory_0_is_not_a_valid_identifier_or_qualified_name_5067","Invalid value for 'jsxFactory'. '{0}' is not a valid identifier or qualified-name."),Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript_files_Learn_more_at_https_Colon_Slash_Slashaka_ms_Slashtsconfig:t(5068,e.DiagnosticCategory.Error,"Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript__5068","Adding a tsconfig.json file will help organize projects that contain both TypeScript and JavaScript files. Learn more at https://aka.ms/tsconfig."),Option_0_cannot_be_specified_without_specifying_option_1_or_option_2:t(5069,e.DiagnosticCategory.Error,"Option_0_cannot_be_specified_without_specifying_option_1_or_option_2_5069","Option '{0}' cannot be specified without specifying option '{1}' or option '{2}'."),Option_resolveJsonModule_cannot_be_specified_without_node_module_resolution_strategy:t(5070,e.DiagnosticCategory.Error,"Option_resolveJsonModule_cannot_be_specified_without_node_module_resolution_strategy_5070","Option '--resolveJsonModule' cannot be specified without 'node' module resolution strategy."),Option_resolveJsonModule_can_only_be_specified_when_module_code_generation_is_commonjs_amd_es2015_or_esNext:t(5071,e.DiagnosticCategory.Error,"Option_resolveJsonModule_can_only_be_specified_when_module_code_generation_is_commonjs_amd_es2015_or_5071","Option '--resolveJsonModule' can only be specified when module code generation is 'commonjs', 'amd', 'es2015' or 'esNext'."),Unknown_build_option_0:t(5072,e.DiagnosticCategory.Error,"Unknown_build_option_0_5072","Unknown build option '{0}'."),Build_option_0_requires_a_value_of_type_1:t(5073,e.DiagnosticCategory.Error,"Build_option_0_requires_a_value_of_type_1_5073","Build option '{0}' requires a value of type {1}."),Option_incremental_can_only_be_specified_using_tsconfig_emitting_to_single_file_or_when_option_tsBuildInfoFile_is_specified:t(5074,e.DiagnosticCategory.Error,"Option_incremental_can_only_be_specified_using_tsconfig_emitting_to_single_file_or_when_option_tsBui_5074","Option '--incremental' can only be specified using tsconfig, emitting to single file or when option `--tsBuildInfoFile` is specified."),_0_is_assignable_to_the_constraint_of_type_1_but_1_could_be_instantiated_with_a_different_subtype_of_constraint_2:t(5075,e.DiagnosticCategory.Error,"_0_is_assignable_to_the_constraint_of_type_1_but_1_could_be_instantiated_with_a_different_subtype_of_5075","'{0}' is assignable to the constraint of type '{1}', but '{1}' could be instantiated with a different subtype of constraint '{2}'."),_0_and_1_operations_cannot_be_mixed_without_parentheses:t(5076,e.DiagnosticCategory.Error,"_0_and_1_operations_cannot_be_mixed_without_parentheses_5076","'{0}' and '{1}' operations cannot be mixed without parentheses."),Generates_a_sourcemap_for_each_corresponding_d_ts_file:t(6e3,e.DiagnosticCategory.Message,"Generates_a_sourcemap_for_each_corresponding_d_ts_file_6000","Generates a sourcemap for each corresponding '.d.ts' file."),Concatenate_and_emit_output_to_single_file:t(6001,e.DiagnosticCategory.Message,"Concatenate_and_emit_output_to_single_file_6001","Concatenate and emit output to single file."),Generates_corresponding_d_ts_file:t(6002,e.DiagnosticCategory.Message,"Generates_corresponding_d_ts_file_6002","Generates corresponding '.d.ts' file."),Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations:t(6003,e.DiagnosticCategory.Message,"Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations_6003","Specify the location where debugger should locate map files instead of generated locations."),Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations:t(6004,e.DiagnosticCategory.Message,"Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations_6004","Specify the location where debugger should locate TypeScript files instead of source locations."),Watch_input_files:t(6005,e.DiagnosticCategory.Message,"Watch_input_files_6005","Watch input files."),Redirect_output_structure_to_the_directory:t(6006,e.DiagnosticCategory.Message,"Redirect_output_structure_to_the_directory_6006","Redirect output structure to the directory."),Do_not_erase_const_enum_declarations_in_generated_code:t(6007,e.DiagnosticCategory.Message,"Do_not_erase_const_enum_declarations_in_generated_code_6007","Do not erase const enum declarations in generated code."),Do_not_emit_outputs_if_any_errors_were_reported:t(6008,e.DiagnosticCategory.Message,"Do_not_emit_outputs_if_any_errors_were_reported_6008","Do not emit outputs if any errors were reported."),Do_not_emit_comments_to_output:t(6009,e.DiagnosticCategory.Message,"Do_not_emit_comments_to_output_6009","Do not emit comments to output."),Do_not_emit_outputs:t(6010,e.DiagnosticCategory.Message,"Do_not_emit_outputs_6010","Do not emit outputs."),Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking:t(6011,e.DiagnosticCategory.Message,"Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typech_6011","Allow default imports from modules with no default export. This does not affect code emit, just typechecking."),Skip_type_checking_of_declaration_files:t(6012,e.DiagnosticCategory.Message,"Skip_type_checking_of_declaration_files_6012","Skip type checking of declaration files."),Do_not_resolve_the_real_path_of_symlinks:t(6013,e.DiagnosticCategory.Message,"Do_not_resolve_the_real_path_of_symlinks_6013","Do not resolve the real path of symlinks."),Only_emit_d_ts_declaration_files:t(6014,e.DiagnosticCategory.Message,"Only_emit_d_ts_declaration_files_6014","Only emit '.d.ts' declaration files."),Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_ES2019_or_ESNEXT:t(6015,e.DiagnosticCategory.Message,"Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_ES2019_or_ESNEXT_6015","Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'."),Specify_module_code_generation_Colon_none_commonjs_amd_system_umd_es2015_or_ESNext:t(6016,e.DiagnosticCategory.Message,"Specify_module_code_generation_Colon_none_commonjs_amd_system_umd_es2015_or_ESNext_6016","Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'."),Print_this_message:t(6017,e.DiagnosticCategory.Message,"Print_this_message_6017","Print this message."),Print_the_compiler_s_version:t(6019,e.DiagnosticCategory.Message,"Print_the_compiler_s_version_6019","Print the compiler's version."),Compile_the_project_given_the_path_to_its_configuration_file_or_to_a_folder_with_a_tsconfig_json:t(6020,e.DiagnosticCategory.Message,"Compile_the_project_given_the_path_to_its_configuration_file_or_to_a_folder_with_a_tsconfig_json_6020","Compile the project given the path to its configuration file, or to a folder with a 'tsconfig.json'."),Syntax_Colon_0:t(6023,e.DiagnosticCategory.Message,"Syntax_Colon_0_6023","Syntax: {0}"),options:t(6024,e.DiagnosticCategory.Message,"options_6024","options"),file:t(6025,e.DiagnosticCategory.Message,"file_6025","file"),Examples_Colon_0:t(6026,e.DiagnosticCategory.Message,"Examples_Colon_0_6026","Examples: {0}"),Options_Colon:t(6027,e.DiagnosticCategory.Message,"Options_Colon_6027","Options:"),Version_0:t(6029,e.DiagnosticCategory.Message,"Version_0_6029","Version {0}"),Insert_command_line_options_and_files_from_a_file:t(6030,e.DiagnosticCategory.Message,"Insert_command_line_options_and_files_from_a_file_6030","Insert command line options and files from a file."),Starting_compilation_in_watch_mode:t(6031,e.DiagnosticCategory.Message,"Starting_compilation_in_watch_mode_6031","Starting compilation in watch mode..."),File_change_detected_Starting_incremental_compilation:t(6032,e.DiagnosticCategory.Message,"File_change_detected_Starting_incremental_compilation_6032","File change detected. Starting incremental compilation..."),KIND:t(6034,e.DiagnosticCategory.Message,"KIND_6034","KIND"),FILE:t(6035,e.DiagnosticCategory.Message,"FILE_6035","FILE"),VERSION:t(6036,e.DiagnosticCategory.Message,"VERSION_6036","VERSION"),LOCATION:t(6037,e.DiagnosticCategory.Message,"LOCATION_6037","LOCATION"),DIRECTORY:t(6038,e.DiagnosticCategory.Message,"DIRECTORY_6038","DIRECTORY"),STRATEGY:t(6039,e.DiagnosticCategory.Message,"STRATEGY_6039","STRATEGY"),FILE_OR_DIRECTORY:t(6040,e.DiagnosticCategory.Message,"FILE_OR_DIRECTORY_6040","FILE OR DIRECTORY"),Generates_corresponding_map_file:t(6043,e.DiagnosticCategory.Message,"Generates_corresponding_map_file_6043","Generates corresponding '.map' file."),Compiler_option_0_expects_an_argument:t(6044,e.DiagnosticCategory.Error,"Compiler_option_0_expects_an_argument_6044","Compiler option '{0}' expects an argument."),Unterminated_quoted_string_in_response_file_0:t(6045,e.DiagnosticCategory.Error,"Unterminated_quoted_string_in_response_file_0_6045","Unterminated quoted string in response file '{0}'."),Argument_for_0_option_must_be_Colon_1:t(6046,e.DiagnosticCategory.Error,"Argument_for_0_option_must_be_Colon_1_6046","Argument for '{0}' option must be: {1}."),Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1:t(6048,e.DiagnosticCategory.Error,"Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1_6048","Locale must be of the form <language> or <language>-<territory>. For example '{0}' or '{1}'."),Unsupported_locale_0:t(6049,e.DiagnosticCategory.Error,"Unsupported_locale_0_6049","Unsupported locale '{0}'."),Unable_to_open_file_0:t(6050,e.DiagnosticCategory.Error,"Unable_to_open_file_0_6050","Unable to open file '{0}'."),Corrupted_locale_file_0:t(6051,e.DiagnosticCategory.Error,"Corrupted_locale_file_0_6051","Corrupted locale file {0}."),Raise_error_on_expressions_and_declarations_with_an_implied_any_type:t(6052,e.DiagnosticCategory.Message,"Raise_error_on_expressions_and_declarations_with_an_implied_any_type_6052","Raise error on expressions and declarations with an implied 'any' type."),File_0_not_found:t(6053,e.DiagnosticCategory.Error,"File_0_not_found_6053","File '{0}' not found."),File_0_has_unsupported_extension_The_only_supported_extensions_are_1:t(6054,e.DiagnosticCategory.Error,"File_0_has_unsupported_extension_The_only_supported_extensions_are_1_6054","File '{0}' has unsupported extension. The only supported extensions are {1}."),Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures:t(6055,e.DiagnosticCategory.Message,"Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures_6055","Suppress noImplicitAny errors for indexing objects lacking index signatures."),Do_not_emit_declarations_for_code_that_has_an_internal_annotation:t(6056,e.DiagnosticCategory.Message,"Do_not_emit_declarations_for_code_that_has_an_internal_annotation_6056","Do not emit declarations for code that has an '@internal' annotation."),Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir:t(6058,e.DiagnosticCategory.Message,"Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir_6058","Specify the root directory of input files. Use to control the output directory structure with --outDir."),File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files:t(6059,e.DiagnosticCategory.Error,"File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files_6059","File '{0}' is not under 'rootDir' '{1}'. 'rootDir' is expected to contain all source files."),Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix:t(6060,e.DiagnosticCategory.Message,"Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix_6060","Specify the end of line sequence to be used when emitting files: 'CRLF' (dos) or 'LF' (unix)."),NEWLINE:t(6061,e.DiagnosticCategory.Message,"NEWLINE_6061","NEWLINE"),Option_0_can_only_be_specified_in_tsconfig_json_file:t(6064,e.DiagnosticCategory.Error,"Option_0_can_only_be_specified_in_tsconfig_json_file_6064","Option '{0}' can only be specified in 'tsconfig.json' file."),Enables_experimental_support_for_ES7_decorators:t(6065,e.DiagnosticCategory.Message,"Enables_experimental_support_for_ES7_decorators_6065","Enables experimental support for ES7 decorators."),Enables_experimental_support_for_emitting_type_metadata_for_decorators:t(6066,e.DiagnosticCategory.Message,"Enables_experimental_support_for_emitting_type_metadata_for_decorators_6066","Enables experimental support for emitting type metadata for decorators."),Enables_experimental_support_for_ES7_async_functions:t(6068,e.DiagnosticCategory.Message,"Enables_experimental_support_for_ES7_async_functions_6068","Enables experimental support for ES7 async functions."),Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6:t(6069,e.DiagnosticCategory.Message,"Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6_6069","Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6)."),Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file:t(6070,e.DiagnosticCategory.Message,"Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file_6070","Initializes a TypeScript project and creates a tsconfig.json file."),Successfully_created_a_tsconfig_json_file:t(6071,e.DiagnosticCategory.Message,"Successfully_created_a_tsconfig_json_file_6071","Successfully created a tsconfig.json file."),Suppress_excess_property_checks_for_object_literals:t(6072,e.DiagnosticCategory.Message,"Suppress_excess_property_checks_for_object_literals_6072","Suppress excess property checks for object literals."),Stylize_errors_and_messages_using_color_and_context_experimental:t(6073,e.DiagnosticCategory.Message,"Stylize_errors_and_messages_using_color_and_context_experimental_6073","Stylize errors and messages using color and context (experimental)."),Do_not_report_errors_on_unused_labels:t(6074,e.DiagnosticCategory.Message,"Do_not_report_errors_on_unused_labels_6074","Do not report errors on unused labels."),Report_error_when_not_all_code_paths_in_function_return_a_value:t(6075,e.DiagnosticCategory.Message,"Report_error_when_not_all_code_paths_in_function_return_a_value_6075","Report error when not all code paths in function return a value."),Report_errors_for_fallthrough_cases_in_switch_statement:t(6076,e.DiagnosticCategory.Message,"Report_errors_for_fallthrough_cases_in_switch_statement_6076","Report errors for fallthrough cases in switch statement."),Do_not_report_errors_on_unreachable_code:t(6077,e.DiagnosticCategory.Message,"Do_not_report_errors_on_unreachable_code_6077","Do not report errors on unreachable code."),Disallow_inconsistently_cased_references_to_the_same_file:t(6078,e.DiagnosticCategory.Message,"Disallow_inconsistently_cased_references_to_the_same_file_6078","Disallow inconsistently-cased references to the same file."),Specify_library_files_to_be_included_in_the_compilation:t(6079,e.DiagnosticCategory.Message,"Specify_library_files_to_be_included_in_the_compilation_6079","Specify library files to be included in the compilation."),Specify_JSX_code_generation_Colon_preserve_react_native_or_react:t(6080,e.DiagnosticCategory.Message,"Specify_JSX_code_generation_Colon_preserve_react_native_or_react_6080","Specify JSX code generation: 'preserve', 'react-native', or 'react'."),File_0_has_an_unsupported_extension_so_skipping_it:t(6081,e.DiagnosticCategory.Message,"File_0_has_an_unsupported_extension_so_skipping_it_6081","File '{0}' has an unsupported extension, so skipping it."),Only_amd_and_system_modules_are_supported_alongside_0:t(6082,e.DiagnosticCategory.Error,"Only_amd_and_system_modules_are_supported_alongside_0_6082","Only 'amd' and 'system' modules are supported alongside --{0}."),Base_directory_to_resolve_non_absolute_module_names:t(6083,e.DiagnosticCategory.Message,"Base_directory_to_resolve_non_absolute_module_names_6083","Base directory to resolve non-absolute module names."),Deprecated_Use_jsxFactory_instead_Specify_the_object_invoked_for_createElement_when_targeting_react_JSX_emit:t(6084,e.DiagnosticCategory.Message,"Deprecated_Use_jsxFactory_instead_Specify_the_object_invoked_for_createElement_when_targeting_react__6084","[Deprecated] Use '--jsxFactory' instead. Specify the object invoked for createElement when targeting 'react' JSX emit"),Enable_tracing_of_the_name_resolution_process:t(6085,e.DiagnosticCategory.Message,"Enable_tracing_of_the_name_resolution_process_6085","Enable tracing of the name resolution process."),Resolving_module_0_from_1:t(6086,e.DiagnosticCategory.Message,"Resolving_module_0_from_1_6086","======== Resolving module '{0}' from '{1}'. ========"),Explicitly_specified_module_resolution_kind_Colon_0:t(6087,e.DiagnosticCategory.Message,"Explicitly_specified_module_resolution_kind_Colon_0_6087","Explicitly specified module resolution kind: '{0}'."),Module_resolution_kind_is_not_specified_using_0:t(6088,e.DiagnosticCategory.Message,"Module_resolution_kind_is_not_specified_using_0_6088","Module resolution kind is not specified, using '{0}'."),Module_name_0_was_successfully_resolved_to_1:t(6089,e.DiagnosticCategory.Message,"Module_name_0_was_successfully_resolved_to_1_6089","======== Module name '{0}' was successfully resolved to '{1}'. ========"),Module_name_0_was_not_resolved:t(6090,e.DiagnosticCategory.Message,"Module_name_0_was_not_resolved_6090","======== Module name '{0}' was not resolved. ========"),paths_option_is_specified_looking_for_a_pattern_to_match_module_name_0:t(6091,e.DiagnosticCategory.Message,"paths_option_is_specified_looking_for_a_pattern_to_match_module_name_0_6091","'paths' option is specified, looking for a pattern to match module name '{0}'."),Module_name_0_matched_pattern_1:t(6092,e.DiagnosticCategory.Message,"Module_name_0_matched_pattern_1_6092","Module name '{0}', matched pattern '{1}'."),Trying_substitution_0_candidate_module_location_Colon_1:t(6093,e.DiagnosticCategory.Message,"Trying_substitution_0_candidate_module_location_Colon_1_6093","Trying substitution '{0}', candidate module location: '{1}'."),Resolving_module_name_0_relative_to_base_url_1_2:t(6094,e.DiagnosticCategory.Message,"Resolving_module_name_0_relative_to_base_url_1_2_6094","Resolving module name '{0}' relative to base url '{1}' - '{2}'."),Loading_module_as_file_Slash_folder_candidate_module_location_0_target_file_type_1:t(6095,e.DiagnosticCategory.Message,"Loading_module_as_file_Slash_folder_candidate_module_location_0_target_file_type_1_6095","Loading module as file / folder, candidate module location '{0}', target file type '{1}'."),File_0_does_not_exist:t(6096,e.DiagnosticCategory.Message,"File_0_does_not_exist_6096","File '{0}' does not exist."),File_0_exist_use_it_as_a_name_resolution_result:t(6097,e.DiagnosticCategory.Message,"File_0_exist_use_it_as_a_name_resolution_result_6097","File '{0}' exist - use it as a name resolution result."),Loading_module_0_from_node_modules_folder_target_file_type_1:t(6098,e.DiagnosticCategory.Message,"Loading_module_0_from_node_modules_folder_target_file_type_1_6098","Loading module '{0}' from 'node_modules' folder, target file type '{1}'."),Found_package_json_at_0:t(6099,e.DiagnosticCategory.Message,"Found_package_json_at_0_6099","Found 'package.json' at '{0}'."),package_json_does_not_have_a_0_field:t(6100,e.DiagnosticCategory.Message,"package_json_does_not_have_a_0_field_6100","'package.json' does not have a '{0}' field."),package_json_has_0_field_1_that_references_2:t(6101,e.DiagnosticCategory.Message,"package_json_has_0_field_1_that_references_2_6101","'package.json' has '{0}' field '{1}' that references '{2}'."),Allow_javascript_files_to_be_compiled:t(6102,e.DiagnosticCategory.Message,"Allow_javascript_files_to_be_compiled_6102","Allow javascript files to be compiled."),Option_0_should_have_array_of_strings_as_a_value:t(6103,e.DiagnosticCategory.Error,"Option_0_should_have_array_of_strings_as_a_value_6103","Option '{0}' should have array of strings as a value."),Checking_if_0_is_the_longest_matching_prefix_for_1_2:t(6104,e.DiagnosticCategory.Message,"Checking_if_0_is_the_longest_matching_prefix_for_1_2_6104","Checking if '{0}' is the longest matching prefix for '{1}' - '{2}'."),Expected_type_of_0_field_in_package_json_to_be_1_got_2:t(6105,e.DiagnosticCategory.Message,"Expected_type_of_0_field_in_package_json_to_be_1_got_2_6105","Expected type of '{0}' field in 'package.json' to be '{1}', got '{2}'."),baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1:t(6106,e.DiagnosticCategory.Message,"baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1_6106","'baseUrl' option is set to '{0}', using this value to resolve non-relative module name '{1}'."),rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0:t(6107,e.DiagnosticCategory.Message,"rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0_6107","'rootDirs' option is set, using it to resolve relative module name '{0}'."),Longest_matching_prefix_for_0_is_1:t(6108,e.DiagnosticCategory.Message,"Longest_matching_prefix_for_0_is_1_6108","Longest matching prefix for '{0}' is '{1}'."),Loading_0_from_the_root_dir_1_candidate_location_2:t(6109,e.DiagnosticCategory.Message,"Loading_0_from_the_root_dir_1_candidate_location_2_6109","Loading '{0}' from the root dir '{1}', candidate location '{2}'."),Trying_other_entries_in_rootDirs:t(6110,e.DiagnosticCategory.Message,"Trying_other_entries_in_rootDirs_6110","Trying other entries in 'rootDirs'."),Module_resolution_using_rootDirs_has_failed:t(6111,e.DiagnosticCategory.Message,"Module_resolution_using_rootDirs_has_failed_6111","Module resolution using 'rootDirs' has failed."),Do_not_emit_use_strict_directives_in_module_output:t(6112,e.DiagnosticCategory.Message,"Do_not_emit_use_strict_directives_in_module_output_6112","Do not emit 'use strict' directives in module output."),Enable_strict_null_checks:t(6113,e.DiagnosticCategory.Message,"Enable_strict_null_checks_6113","Enable strict null checks."),Unknown_option_excludes_Did_you_mean_exclude:t(6114,e.DiagnosticCategory.Error,"Unknown_option_excludes_Did_you_mean_exclude_6114","Unknown option 'excludes'. Did you mean 'exclude'?"),Raise_error_on_this_expressions_with_an_implied_any_type:t(6115,e.DiagnosticCategory.Message,"Raise_error_on_this_expressions_with_an_implied_any_type_6115","Raise error on 'this' expressions with an implied 'any' type."),Resolving_type_reference_directive_0_containing_file_1_root_directory_2:t(6116,e.DiagnosticCategory.Message,"Resolving_type_reference_directive_0_containing_file_1_root_directory_2_6116","======== Resolving type reference directive '{0}', containing file '{1}', root directory '{2}'. ========"),Resolving_using_primary_search_paths:t(6117,e.DiagnosticCategory.Message,"Resolving_using_primary_search_paths_6117","Resolving using primary search paths..."),Resolving_from_node_modules_folder:t(6118,e.DiagnosticCategory.Message,"Resolving_from_node_modules_folder_6118","Resolving from node_modules folder..."),Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2:t(6119,e.DiagnosticCategory.Message,"Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2_6119","======== Type reference directive '{0}' was successfully resolved to '{1}', primary: {2}. ========"),Type_reference_directive_0_was_not_resolved:t(6120,e.DiagnosticCategory.Message,"Type_reference_directive_0_was_not_resolved_6120","======== Type reference directive '{0}' was not resolved. ========"),Resolving_with_primary_search_path_0:t(6121,e.DiagnosticCategory.Message,"Resolving_with_primary_search_path_0_6121","Resolving with primary search path '{0}'."),Root_directory_cannot_be_determined_skipping_primary_search_paths:t(6122,e.DiagnosticCategory.Message,"Root_directory_cannot_be_determined_skipping_primary_search_paths_6122","Root directory cannot be determined, skipping primary search paths."),Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set:t(6123,e.DiagnosticCategory.Message,"Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set_6123","======== Resolving type reference directive '{0}', containing file '{1}', root directory not set. ========"),Type_declaration_files_to_be_included_in_compilation:t(6124,e.DiagnosticCategory.Message,"Type_declaration_files_to_be_included_in_compilation_6124","Type declaration files to be included in compilation."),Looking_up_in_node_modules_folder_initial_location_0:t(6125,e.DiagnosticCategory.Message,"Looking_up_in_node_modules_folder_initial_location_0_6125","Looking up in 'node_modules' folder, initial location '{0}'."),Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_modules_folder:t(6126,e.DiagnosticCategory.Message,"Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_mod_6126","Containing file is not specified and root directory cannot be determined, skipping lookup in 'node_modules' folder."),Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1:t(6127,e.DiagnosticCategory.Message,"Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1_6127","======== Resolving type reference directive '{0}', containing file not set, root directory '{1}'. ========"),Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set:t(6128,e.DiagnosticCategory.Message,"Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set_6128","======== Resolving type reference directive '{0}', containing file not set, root directory not set. ========"),Resolving_real_path_for_0_result_1:t(6130,e.DiagnosticCategory.Message,"Resolving_real_path_for_0_result_1_6130","Resolving real path for '{0}', result '{1}'."),Cannot_compile_modules_using_option_0_unless_the_module_flag_is_amd_or_system:t(6131,e.DiagnosticCategory.Error,"Cannot_compile_modules_using_option_0_unless_the_module_flag_is_amd_or_system_6131","Cannot compile modules using option '{0}' unless the '--module' flag is 'amd' or 'system'."),File_name_0_has_a_1_extension_stripping_it:t(6132,e.DiagnosticCategory.Message,"File_name_0_has_a_1_extension_stripping_it_6132","File name '{0}' has a '{1}' extension - stripping it."),_0_is_declared_but_its_value_is_never_read:t(6133,e.DiagnosticCategory.Error,"_0_is_declared_but_its_value_is_never_read_6133","'{0}' is declared but its value is never read.",!0),Report_errors_on_unused_locals:t(6134,e.DiagnosticCategory.Message,"Report_errors_on_unused_locals_6134","Report errors on unused locals."),Report_errors_on_unused_parameters:t(6135,e.DiagnosticCategory.Message,"Report_errors_on_unused_parameters_6135","Report errors on unused parameters."),The_maximum_dependency_depth_to_search_under_node_modules_and_load_JavaScript_files:t(6136,e.DiagnosticCategory.Message,"The_maximum_dependency_depth_to_search_under_node_modules_and_load_JavaScript_files_6136","The maximum dependency depth to search under node_modules and load JavaScript files."),Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1:t(6137,e.DiagnosticCategory.Error,"Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1_6137","Cannot import type declaration files. Consider importing '{0}' instead of '{1}'."),Property_0_is_declared_but_its_value_is_never_read:t(6138,e.DiagnosticCategory.Error,"Property_0_is_declared_but_its_value_is_never_read_6138","Property '{0}' is declared but its value is never read.",!0),Import_emit_helpers_from_tslib:t(6139,e.DiagnosticCategory.Message,"Import_emit_helpers_from_tslib_6139","Import emit helpers from 'tslib'."),Auto_discovery_for_typings_is_enabled_in_project_0_Running_extra_resolution_pass_for_module_1_using_cache_location_2:t(6140,e.DiagnosticCategory.Error,"Auto_discovery_for_typings_is_enabled_in_project_0_Running_extra_resolution_pass_for_module_1_using__6140","Auto discovery for typings is enabled in project '{0}'. Running extra resolution pass for module '{1}' using cache location '{2}'."),Parse_in_strict_mode_and_emit_use_strict_for_each_source_file:t(6141,e.DiagnosticCategory.Message,"Parse_in_strict_mode_and_emit_use_strict_for_each_source_file_6141",'Parse in strict mode and emit "use strict" for each source file.'),Module_0_was_resolved_to_1_but_jsx_is_not_set:t(6142,e.DiagnosticCategory.Error,"Module_0_was_resolved_to_1_but_jsx_is_not_set_6142","Module '{0}' was resolved to '{1}', but '--jsx' is not set."),Module_0_was_resolved_as_locally_declared_ambient_module_in_file_1:t(6144,e.DiagnosticCategory.Message,"Module_0_was_resolved_as_locally_declared_ambient_module_in_file_1_6144","Module '{0}' was resolved as locally declared ambient module in file '{1}'."),Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified:t(6145,e.DiagnosticCategory.Message,"Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified_6145","Module '{0}' was resolved as ambient module declared in '{1}' since this file was not modified."),Specify_the_JSX_factory_function_to_use_when_targeting_react_JSX_emit_e_g_React_createElement_or_h:t(6146,e.DiagnosticCategory.Message,"Specify_the_JSX_factory_function_to_use_when_targeting_react_JSX_emit_e_g_React_createElement_or_h_6146","Specify the JSX factory function to use when targeting 'react' JSX emit, e.g. 'React.createElement' or 'h'."),Resolution_for_module_0_was_found_in_cache_from_location_1:t(6147,e.DiagnosticCategory.Message,"Resolution_for_module_0_was_found_in_cache_from_location_1_6147","Resolution for module '{0}' was found in cache from location '{1}'."),Directory_0_does_not_exist_skipping_all_lookups_in_it:t(6148,e.DiagnosticCategory.Message,"Directory_0_does_not_exist_skipping_all_lookups_in_it_6148","Directory '{0}' does not exist, skipping all lookups in it."),Show_diagnostic_information:t(6149,e.DiagnosticCategory.Message,"Show_diagnostic_information_6149","Show diagnostic information."),Show_verbose_diagnostic_information:t(6150,e.DiagnosticCategory.Message,"Show_verbose_diagnostic_information_6150","Show verbose diagnostic information."),Emit_a_single_file_with_source_maps_instead_of_having_a_separate_file:t(6151,e.DiagnosticCategory.Message,"Emit_a_single_file_with_source_maps_instead_of_having_a_separate_file_6151","Emit a single file with source maps instead of having a separate file."),Emit_the_source_alongside_the_sourcemaps_within_a_single_file_requires_inlineSourceMap_or_sourceMap_to_be_set:t(6152,e.DiagnosticCategory.Message,"Emit_the_source_alongside_the_sourcemaps_within_a_single_file_requires_inlineSourceMap_or_sourceMap__6152","Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set."),Transpile_each_file_as_a_separate_module_similar_to_ts_transpileModule:t(6153,e.DiagnosticCategory.Message,"Transpile_each_file_as_a_separate_module_similar_to_ts_transpileModule_6153","Transpile each file as a separate module (similar to 'ts.transpileModule')."),Print_names_of_generated_files_part_of_the_compilation:t(6154,e.DiagnosticCategory.Message,"Print_names_of_generated_files_part_of_the_compilation_6154","Print names of generated files part of the compilation."),Print_names_of_files_part_of_the_compilation:t(6155,e.DiagnosticCategory.Message,"Print_names_of_files_part_of_the_compilation_6155","Print names of files part of the compilation."),The_locale_used_when_displaying_messages_to_the_user_e_g_en_us:t(6156,e.DiagnosticCategory.Message,"The_locale_used_when_displaying_messages_to_the_user_e_g_en_us_6156","The locale used when displaying messages to the user (e.g. 'en-us')"),Do_not_generate_custom_helper_functions_like_extends_in_compiled_output:t(6157,e.DiagnosticCategory.Message,"Do_not_generate_custom_helper_functions_like_extends_in_compiled_output_6157","Do not generate custom helper functions like '__extends' in compiled output."),Do_not_include_the_default_library_file_lib_d_ts:t(6158,e.DiagnosticCategory.Message,"Do_not_include_the_default_library_file_lib_d_ts_6158","Do not include the default library file (lib.d.ts)."),Do_not_add_triple_slash_references_or_imported_modules_to_the_list_of_compiled_files:t(6159,e.DiagnosticCategory.Message,"Do_not_add_triple_slash_references_or_imported_modules_to_the_list_of_compiled_files_6159","Do not add triple-slash references or imported modules to the list of compiled files."),Deprecated_Use_skipLibCheck_instead_Skip_type_checking_of_default_library_declaration_files:t(6160,e.DiagnosticCategory.Message,"Deprecated_Use_skipLibCheck_instead_Skip_type_checking_of_default_library_declaration_files_6160","[Deprecated] Use '--skipLibCheck' instead. Skip type checking of default library declaration files."),List_of_folders_to_include_type_definitions_from:t(6161,e.DiagnosticCategory.Message,"List_of_folders_to_include_type_definitions_from_6161","List of folders to include type definitions from."),Disable_size_limitations_on_JavaScript_projects:t(6162,e.DiagnosticCategory.Message,"Disable_size_limitations_on_JavaScript_projects_6162","Disable size limitations on JavaScript projects."),The_character_set_of_the_input_files:t(6163,e.DiagnosticCategory.Message,"The_character_set_of_the_input_files_6163","The character set of the input files."),Emit_a_UTF_8_Byte_Order_Mark_BOM_in_the_beginning_of_output_files:t(6164,e.DiagnosticCategory.Message,"Emit_a_UTF_8_Byte_Order_Mark_BOM_in_the_beginning_of_output_files_6164","Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files."),Do_not_truncate_error_messages:t(6165,e.DiagnosticCategory.Message,"Do_not_truncate_error_messages_6165","Do not truncate error messages."),Output_directory_for_generated_declaration_files:t(6166,e.DiagnosticCategory.Message,"Output_directory_for_generated_declaration_files_6166","Output directory for generated declaration files."),A_series_of_entries_which_re_map_imports_to_lookup_locations_relative_to_the_baseUrl:t(6167,e.DiagnosticCategory.Message,"A_series_of_entries_which_re_map_imports_to_lookup_locations_relative_to_the_baseUrl_6167","A series of entries which re-map imports to lookup locations relative to the 'baseUrl'."),List_of_root_folders_whose_combined_content_represents_the_structure_of_the_project_at_runtime:t(6168,e.DiagnosticCategory.Message,"List_of_root_folders_whose_combined_content_represents_the_structure_of_the_project_at_runtime_6168","List of root folders whose combined content represents the structure of the project at runtime."),Show_all_compiler_options:t(6169,e.DiagnosticCategory.Message,"Show_all_compiler_options_6169","Show all compiler options."),Deprecated_Use_outFile_instead_Concatenate_and_emit_output_to_single_file:t(6170,e.DiagnosticCategory.Message,"Deprecated_Use_outFile_instead_Concatenate_and_emit_output_to_single_file_6170","[Deprecated] Use '--outFile' instead. Concatenate and emit output to single file"),Command_line_Options:t(6171,e.DiagnosticCategory.Message,"Command_line_Options_6171","Command-line Options"),Basic_Options:t(6172,e.DiagnosticCategory.Message,"Basic_Options_6172","Basic Options"),Strict_Type_Checking_Options:t(6173,e.DiagnosticCategory.Message,"Strict_Type_Checking_Options_6173","Strict Type-Checking Options"),Module_Resolution_Options:t(6174,e.DiagnosticCategory.Message,"Module_Resolution_Options_6174","Module Resolution Options"),Source_Map_Options:t(6175,e.DiagnosticCategory.Message,"Source_Map_Options_6175","Source Map Options"),Additional_Checks:t(6176,e.DiagnosticCategory.Message,"Additional_Checks_6176","Additional Checks"),Experimental_Options:t(6177,e.DiagnosticCategory.Message,"Experimental_Options_6177","Experimental Options"),Advanced_Options:t(6178,e.DiagnosticCategory.Message,"Advanced_Options_6178","Advanced Options"),Provide_full_support_for_iterables_in_for_of_spread_and_destructuring_when_targeting_ES5_or_ES3:t(6179,e.DiagnosticCategory.Message,"Provide_full_support_for_iterables_in_for_of_spread_and_destructuring_when_targeting_ES5_or_ES3_6179","Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'."),Enable_all_strict_type_checking_options:t(6180,e.DiagnosticCategory.Message,"Enable_all_strict_type_checking_options_6180","Enable all strict type-checking options."),List_of_language_service_plugins:t(6181,e.DiagnosticCategory.Message,"List_of_language_service_plugins_6181","List of language service plugins."),Scoped_package_detected_looking_in_0:t(6182,e.DiagnosticCategory.Message,"Scoped_package_detected_looking_in_0_6182","Scoped package detected, looking in '{0}'"),Reusing_resolution_of_module_0_to_file_1_from_old_program:t(6183,e.DiagnosticCategory.Message,"Reusing_resolution_of_module_0_to_file_1_from_old_program_6183","Reusing resolution of module '{0}' to file '{1}' from old program."),Reusing_module_resolutions_originating_in_0_since_resolutions_are_unchanged_from_old_program:t(6184,e.DiagnosticCategory.Message,"Reusing_module_resolutions_originating_in_0_since_resolutions_are_unchanged_from_old_program_6184","Reusing module resolutions originating in '{0}' since resolutions are unchanged from old program."),Disable_strict_checking_of_generic_signatures_in_function_types:t(6185,e.DiagnosticCategory.Message,"Disable_strict_checking_of_generic_signatures_in_function_types_6185","Disable strict checking of generic signatures in function types."),Enable_strict_checking_of_function_types:t(6186,e.DiagnosticCategory.Message,"Enable_strict_checking_of_function_types_6186","Enable strict checking of function types."),Enable_strict_checking_of_property_initialization_in_classes:t(6187,e.DiagnosticCategory.Message,"Enable_strict_checking_of_property_initialization_in_classes_6187","Enable strict checking of property initialization in classes."),Numeric_separators_are_not_allowed_here:t(6188,e.DiagnosticCategory.Error,"Numeric_separators_are_not_allowed_here_6188","Numeric separators are not allowed here."),Multiple_consecutive_numeric_separators_are_not_permitted:t(6189,e.DiagnosticCategory.Error,"Multiple_consecutive_numeric_separators_are_not_permitted_6189","Multiple consecutive numeric separators are not permitted."),Whether_to_keep_outdated_console_output_in_watch_mode_instead_of_clearing_the_screen:t(6191,e.DiagnosticCategory.Message,"Whether_to_keep_outdated_console_output_in_watch_mode_instead_of_clearing_the_screen_6191","Whether to keep outdated console output in watch mode instead of clearing the screen."),All_imports_in_import_declaration_are_unused:t(6192,e.DiagnosticCategory.Error,"All_imports_in_import_declaration_are_unused_6192","All imports in import declaration are unused.",!0),Found_1_error_Watching_for_file_changes:t(6193,e.DiagnosticCategory.Message,"Found_1_error_Watching_for_file_changes_6193","Found 1 error. Watching for file changes."),Found_0_errors_Watching_for_file_changes:t(6194,e.DiagnosticCategory.Message,"Found_0_errors_Watching_for_file_changes_6194","Found {0} errors. Watching for file changes."),Resolve_keyof_to_string_valued_property_names_only_no_numbers_or_symbols:t(6195,e.DiagnosticCategory.Message,"Resolve_keyof_to_string_valued_property_names_only_no_numbers_or_symbols_6195","Resolve 'keyof' to string valued property names only (no numbers or symbols)."),_0_is_declared_but_never_used:t(6196,e.DiagnosticCategory.Error,"_0_is_declared_but_never_used_6196","'{0}' is declared but never used.",!0),Include_modules_imported_with_json_extension:t(6197,e.DiagnosticCategory.Message,"Include_modules_imported_with_json_extension_6197","Include modules imported with '.json' extension"),All_destructured_elements_are_unused:t(6198,e.DiagnosticCategory.Error,"All_destructured_elements_are_unused_6198","All destructured elements are unused.",!0),All_variables_are_unused:t(6199,e.DiagnosticCategory.Error,"All_variables_are_unused_6199","All variables are unused.",!0),Definitions_of_the_following_identifiers_conflict_with_those_in_another_file_Colon_0:t(6200,e.DiagnosticCategory.Error,"Definitions_of_the_following_identifiers_conflict_with_those_in_another_file_Colon_0_6200","Definitions of the following identifiers conflict with those in another file: {0}"),Conflicts_are_in_this_file:t(6201,e.DiagnosticCategory.Message,"Conflicts_are_in_this_file_6201","Conflicts are in this file."),Project_references_may_not_form_a_circular_graph_Cycle_detected_Colon_0:t(6202,e.DiagnosticCategory.Error,"Project_references_may_not_form_a_circular_graph_Cycle_detected_Colon_0_6202","Project references may not form a circular graph. Cycle detected: {0}"),_0_was_also_declared_here:t(6203,e.DiagnosticCategory.Message,"_0_was_also_declared_here_6203","'{0}' was also declared here."),and_here:t(6204,e.DiagnosticCategory.Message,"and_here_6204","and here."),All_type_parameters_are_unused:t(6205,e.DiagnosticCategory.Error,"All_type_parameters_are_unused_6205","All type parameters are unused"),package_json_has_a_typesVersions_field_with_version_specific_path_mappings:t(6206,e.DiagnosticCategory.Message,"package_json_has_a_typesVersions_field_with_version_specific_path_mappings_6206","'package.json' has a 'typesVersions' field with version-specific path mappings."),package_json_does_not_have_a_typesVersions_entry_that_matches_version_0:t(6207,e.DiagnosticCategory.Message,"package_json_does_not_have_a_typesVersions_entry_that_matches_version_0_6207","'package.json' does not have a 'typesVersions' entry that matches version '{0}'."),package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_match_module_name_2:t(6208,e.DiagnosticCategory.Message,"package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_ma_6208","'package.json' has a 'typesVersions' entry '{0}' that matches compiler version '{1}', looking for a pattern to match module name '{2}'."),package_json_has_a_typesVersions_entry_0_that_is_not_a_valid_semver_range:t(6209,e.DiagnosticCategory.Message,"package_json_has_a_typesVersions_entry_0_that_is_not_a_valid_semver_range_6209","'package.json' has a 'typesVersions' entry '{0}' that is not a valid semver range."),An_argument_for_0_was_not_provided:t(6210,e.DiagnosticCategory.Message,"An_argument_for_0_was_not_provided_6210","An argument for '{0}' was not provided."),An_argument_matching_this_binding_pattern_was_not_provided:t(6211,e.DiagnosticCategory.Message,"An_argument_matching_this_binding_pattern_was_not_provided_6211","An argument matching this binding pattern was not provided."),Did_you_mean_to_call_this_expression:t(6212,e.DiagnosticCategory.Message,"Did_you_mean_to_call_this_expression_6212","Did you mean to call this expression?"),Did_you_mean_to_use_new_with_this_expression:t(6213,e.DiagnosticCategory.Message,"Did_you_mean_to_use_new_with_this_expression_6213","Did you mean to use 'new' with this expression?"),Enable_strict_bind_call_and_apply_methods_on_functions:t(6214,e.DiagnosticCategory.Message,"Enable_strict_bind_call_and_apply_methods_on_functions_6214","Enable strict 'bind', 'call', and 'apply' methods on functions."),Using_compiler_options_of_project_reference_redirect_0:t(6215,e.DiagnosticCategory.Message,"Using_compiler_options_of_project_reference_redirect_0_6215","Using compiler options of project reference redirect '{0}'."),Found_1_error:t(6216,e.DiagnosticCategory.Message,"Found_1_error_6216","Found 1 error."),Found_0_errors:t(6217,e.DiagnosticCategory.Message,"Found_0_errors_6217","Found {0} errors."),Module_name_0_was_successfully_resolved_to_1_with_Package_ID_2:t(6218,e.DiagnosticCategory.Message,"Module_name_0_was_successfully_resolved_to_1_with_Package_ID_2_6218","======== Module name '{0}' was successfully resolved to '{1}' with Package ID '{2}'. ========"),Type_reference_directive_0_was_successfully_resolved_to_1_with_Package_ID_2_primary_Colon_3:t(6219,e.DiagnosticCategory.Message,"Type_reference_directive_0_was_successfully_resolved_to_1_with_Package_ID_2_primary_Colon_3_6219","======== Type reference directive '{0}' was successfully resolved to '{1}' with Package ID '{2}', primary: {3}. ========"),package_json_had_a_falsy_0_field:t(6220,e.DiagnosticCategory.Message,"package_json_had_a_falsy_0_field_6220","'package.json' had a falsy '{0}' field."),Disable_use_of_source_files_instead_of_declaration_files_from_referenced_projects:t(6221,e.DiagnosticCategory.Message,"Disable_use_of_source_files_instead_of_declaration_files_from_referenced_projects_6221","Disable use of source files instead of declaration files from referenced projects."),Emit_class_fields_with_Define_instead_of_Set:t(6222,e.DiagnosticCategory.Message,"Emit_class_fields_with_Define_instead_of_Set_6222","Emit class fields with Define instead of Set."),Generates_a_CPU_profile:t(6223,e.DiagnosticCategory.Message,"Generates_a_CPU_profile_6223","Generates a CPU profile."),Projects_to_reference:t(6300,e.DiagnosticCategory.Message,"Projects_to_reference_6300","Projects to reference"),Enable_project_compilation:t(6302,e.DiagnosticCategory.Message,"Enable_project_compilation_6302","Enable project compilation"),Composite_projects_may_not_disable_declaration_emit:t(6304,e.DiagnosticCategory.Error,"Composite_projects_may_not_disable_declaration_emit_6304","Composite projects may not disable declaration emit."),Output_file_0_has_not_been_built_from_source_file_1:t(6305,e.DiagnosticCategory.Error,"Output_file_0_has_not_been_built_from_source_file_1_6305","Output file '{0}' has not been built from source file '{1}'."),Referenced_project_0_must_have_setting_composite_Colon_true:t(6306,e.DiagnosticCategory.Error,"Referenced_project_0_must_have_setting_composite_Colon_true_6306","Referenced project '{0}' must have setting \"composite\": true."),File_0_is_not_listed_within_the_file_list_of_project_1_Projects_must_list_all_files_or_use_an_include_pattern:t(6307,e.DiagnosticCategory.Error,"File_0_is_not_listed_within_the_file_list_of_project_1_Projects_must_list_all_files_or_use_an_includ_6307","File '{0}' is not listed within the file list of project '{1}'. Projects must list all files or use an 'include' pattern."),Cannot_prepend_project_0_because_it_does_not_have_outFile_set:t(6308,e.DiagnosticCategory.Error,"Cannot_prepend_project_0_because_it_does_not_have_outFile_set_6308","Cannot prepend project '{0}' because it does not have 'outFile' set"),Output_file_0_from_project_1_does_not_exist:t(6309,e.DiagnosticCategory.Error,"Output_file_0_from_project_1_does_not_exist_6309","Output file '{0}' from project '{1}' does not exist"),Project_0_is_out_of_date_because_oldest_output_1_is_older_than_newest_input_2:t(6350,e.DiagnosticCategory.Message,"Project_0_is_out_of_date_because_oldest_output_1_is_older_than_newest_input_2_6350","Project '{0}' is out of date because oldest output '{1}' is older than newest input '{2}'"),Project_0_is_up_to_date_because_newest_input_1_is_older_than_oldest_output_2:t(6351,e.DiagnosticCategory.Message,"Project_0_is_up_to_date_because_newest_input_1_is_older_than_oldest_output_2_6351","Project '{0}' is up to date because newest input '{1}' is older than oldest output '{2}'"),Project_0_is_out_of_date_because_output_file_1_does_not_exist:t(6352,e.DiagnosticCategory.Message,"Project_0_is_out_of_date_because_output_file_1_does_not_exist_6352","Project '{0}' is out of date because output file '{1}' does not exist"),Project_0_is_out_of_date_because_its_dependency_1_is_out_of_date:t(6353,e.DiagnosticCategory.Message,"Project_0_is_out_of_date_because_its_dependency_1_is_out_of_date_6353","Project '{0}' is out of date because its dependency '{1}' is out of date"),Project_0_is_up_to_date_with_d_ts_files_from_its_dependencies:t(6354,e.DiagnosticCategory.Message,"Project_0_is_up_to_date_with_d_ts_files_from_its_dependencies_6354","Project '{0}' is up to date with .d.ts files from its dependencies"),Projects_in_this_build_Colon_0:t(6355,e.DiagnosticCategory.Message,"Projects_in_this_build_Colon_0_6355","Projects in this build: {0}"),A_non_dry_build_would_delete_the_following_files_Colon_0:t(6356,e.DiagnosticCategory.Message,"A_non_dry_build_would_delete_the_following_files_Colon_0_6356","A non-dry build would delete the following files: {0}"),A_non_dry_build_would_build_project_0:t(6357,e.DiagnosticCategory.Message,"A_non_dry_build_would_build_project_0_6357","A non-dry build would build project '{0}'"),Building_project_0:t(6358,e.DiagnosticCategory.Message,"Building_project_0_6358","Building project '{0}'..."),Updating_output_timestamps_of_project_0:t(6359,e.DiagnosticCategory.Message,"Updating_output_timestamps_of_project_0_6359","Updating output timestamps of project '{0}'..."),delete_this_Project_0_is_up_to_date_because_it_was_previously_built:t(6360,e.DiagnosticCategory.Message,"delete_this_Project_0_is_up_to_date_because_it_was_previously_built_6360","delete this - Project '{0}' is up to date because it was previously built"),Project_0_is_up_to_date:t(6361,e.DiagnosticCategory.Message,"Project_0_is_up_to_date_6361","Project '{0}' is up to date"),Skipping_build_of_project_0_because_its_dependency_1_has_errors:t(6362,e.DiagnosticCategory.Message,"Skipping_build_of_project_0_because_its_dependency_1_has_errors_6362","Skipping build of project '{0}' because its dependency '{1}' has errors"),Project_0_can_t_be_built_because_its_dependency_1_has_errors:t(6363,e.DiagnosticCategory.Message,"Project_0_can_t_be_built_because_its_dependency_1_has_errors_6363","Project '{0}' can't be built because its dependency '{1}' has errors"),Build_one_or_more_projects_and_their_dependencies_if_out_of_date:t(6364,e.DiagnosticCategory.Message,"Build_one_or_more_projects_and_their_dependencies_if_out_of_date_6364","Build one or more projects and their dependencies, if out of date"),Delete_the_outputs_of_all_projects:t(6365,e.DiagnosticCategory.Message,"Delete_the_outputs_of_all_projects_6365","Delete the outputs of all projects"),Enable_verbose_logging:t(6366,e.DiagnosticCategory.Message,"Enable_verbose_logging_6366","Enable verbose logging"),Show_what_would_be_built_or_deleted_if_specified_with_clean:t(6367,e.DiagnosticCategory.Message,"Show_what_would_be_built_or_deleted_if_specified_with_clean_6367","Show what would be built (or deleted, if specified with '--clean')"),Build_all_projects_including_those_that_appear_to_be_up_to_date:t(6368,e.DiagnosticCategory.Message,"Build_all_projects_including_those_that_appear_to_be_up_to_date_6368","Build all projects, including those that appear to be up to date"),Option_build_must_be_the_first_command_line_argument:t(6369,e.DiagnosticCategory.Error,"Option_build_must_be_the_first_command_line_argument_6369","Option '--build' must be the first command line argument."),Options_0_and_1_cannot_be_combined:t(6370,e.DiagnosticCategory.Error,"Options_0_and_1_cannot_be_combined_6370","Options '{0}' and '{1}' cannot be combined."),Updating_unchanged_output_timestamps_of_project_0:t(6371,e.DiagnosticCategory.Message,"Updating_unchanged_output_timestamps_of_project_0_6371","Updating unchanged output timestamps of project '{0}'..."),Project_0_is_out_of_date_because_output_of_its_dependency_1_has_changed:t(6372,e.DiagnosticCategory.Message,"Project_0_is_out_of_date_because_output_of_its_dependency_1_has_changed_6372","Project '{0}' is out of date because output of its dependency '{1}' has changed"),Updating_output_of_project_0:t(6373,e.DiagnosticCategory.Message,"Updating_output_of_project_0_6373","Updating output of project '{0}'..."),A_non_dry_build_would_update_timestamps_for_output_of_project_0:t(6374,e.DiagnosticCategory.Message,"A_non_dry_build_would_update_timestamps_for_output_of_project_0_6374","A non-dry build would update timestamps for output of project '{0}'"),A_non_dry_build_would_update_output_of_project_0:t(6375,e.DiagnosticCategory.Message,"A_non_dry_build_would_update_output_of_project_0_6375","A non-dry build would update output of project '{0}'"),Cannot_update_output_of_project_0_because_there_was_error_reading_file_1:t(6376,e.DiagnosticCategory.Message,"Cannot_update_output_of_project_0_because_there_was_error_reading_file_1_6376","Cannot update output of project '{0}' because there was error reading file '{1}'"),Cannot_write_file_0_because_it_will_overwrite_tsbuildinfo_file_generated_by_referenced_project_1:t(6377,e.DiagnosticCategory.Error,"Cannot_write_file_0_because_it_will_overwrite_tsbuildinfo_file_generated_by_referenced_project_1_6377","Cannot write file '{0}' because it will overwrite '.tsbuildinfo' file generated by referenced project '{1}'"),Enable_incremental_compilation:t(6378,e.DiagnosticCategory.Message,"Enable_incremental_compilation_6378","Enable incremental compilation"),Composite_projects_may_not_disable_incremental_compilation:t(6379,e.DiagnosticCategory.Error,"Composite_projects_may_not_disable_incremental_compilation_6379","Composite projects may not disable incremental compilation."),Specify_file_to_store_incremental_compilation_information:t(6380,e.DiagnosticCategory.Message,"Specify_file_to_store_incremental_compilation_information_6380","Specify file to store incremental compilation information"),Project_0_is_out_of_date_because_output_for_it_was_generated_with_version_1_that_differs_with_current_version_2:t(6381,e.DiagnosticCategory.Message,"Project_0_is_out_of_date_because_output_for_it_was_generated_with_version_1_that_differs_with_curren_6381","Project '{0}' is out of date because output for it was generated with version '{1}' that differs with current version '{2}'"),Skipping_build_of_project_0_because_its_dependency_1_was_not_built:t(6382,e.DiagnosticCategory.Message,"Skipping_build_of_project_0_because_its_dependency_1_was_not_built_6382","Skipping build of project '{0}' because its dependency '{1}' was not built"),Project_0_can_t_be_built_because_its_dependency_1_was_not_built:t(6383,e.DiagnosticCategory.Message,"Project_0_can_t_be_built_because_its_dependency_1_was_not_built_6383","Project '{0}' can't be built because its dependency '{1}' was not built"),The_expected_type_comes_from_property_0_which_is_declared_here_on_type_1:t(6500,e.DiagnosticCategory.Message,"The_expected_type_comes_from_property_0_which_is_declared_here_on_type_1_6500","The expected type comes from property '{0}' which is declared here on type '{1}'"),The_expected_type_comes_from_this_index_signature:t(6501,e.DiagnosticCategory.Message,"The_expected_type_comes_from_this_index_signature_6501","The expected type comes from this index signature."),The_expected_type_comes_from_the_return_type_of_this_signature:t(6502,e.DiagnosticCategory.Message,"The_expected_type_comes_from_the_return_type_of_this_signature_6502","The expected type comes from the return type of this signature."),Print_names_of_files_that_are_part_of_the_compilation_and_then_stop_processing:t(6503,e.DiagnosticCategory.Message,"Print_names_of_files_that_are_part_of_the_compilation_and_then_stop_processing_6503","Print names of files that are part of the compilation and then stop processing."),Variable_0_implicitly_has_an_1_type:t(7005,e.DiagnosticCategory.Error,"Variable_0_implicitly_has_an_1_type_7005","Variable '{0}' implicitly has an '{1}' type."),Parameter_0_implicitly_has_an_1_type:t(7006,e.DiagnosticCategory.Error,"Parameter_0_implicitly_has_an_1_type_7006","Parameter '{0}' implicitly has an '{1}' type."),Member_0_implicitly_has_an_1_type:t(7008,e.DiagnosticCategory.Error,"Member_0_implicitly_has_an_1_type_7008","Member '{0}' implicitly has an '{1}' type."),new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type:t(7009,e.DiagnosticCategory.Error,"new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type_7009","'new' expression, whose target lacks a construct signature, implicitly has an 'any' type."),_0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type:t(7010,e.DiagnosticCategory.Error,"_0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type_7010","'{0}', which lacks return-type annotation, implicitly has an '{1}' return type."),Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type:t(7011,e.DiagnosticCategory.Error,"Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type_7011","Function expression, which lacks return-type annotation, implicitly has an '{0}' return type."),Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type:t(7013,e.DiagnosticCategory.Error,"Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type_7013","Construct signature, which lacks return-type annotation, implicitly has an 'any' return type."),Function_type_which_lacks_return_type_annotation_implicitly_has_an_0_return_type:t(7014,e.DiagnosticCategory.Error,"Function_type_which_lacks_return_type_annotation_implicitly_has_an_0_return_type_7014","Function type, which lacks return-type annotation, implicitly has an '{0}' return type."),Element_implicitly_has_an_any_type_because_index_expression_is_not_of_type_number:t(7015,e.DiagnosticCategory.Error,"Element_implicitly_has_an_any_type_because_index_expression_is_not_of_type_number_7015","Element implicitly has an 'any' type because index expression is not of type 'number'."),Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type:t(7016,e.DiagnosticCategory.Error,"Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type_7016","Could not find a declaration file for module '{0}'. '{1}' implicitly has an 'any' type."),Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature:t(7017,e.DiagnosticCategory.Error,"Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature_7017","Element implicitly has an 'any' type because type '{0}' has no index signature."),Object_literal_s_property_0_implicitly_has_an_1_type:t(7018,e.DiagnosticCategory.Error,"Object_literal_s_property_0_implicitly_has_an_1_type_7018","Object literal's property '{0}' implicitly has an '{1}' type."),Rest_parameter_0_implicitly_has_an_any_type:t(7019,e.DiagnosticCategory.Error,"Rest_parameter_0_implicitly_has_an_any_type_7019","Rest parameter '{0}' implicitly has an 'any[]' type."),Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type:t(7020,e.DiagnosticCategory.Error,"Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type_7020","Call signature, which lacks return-type annotation, implicitly has an 'any' return type."),_0_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer:t(7022,e.DiagnosticCategory.Error,"_0_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_and_is_referenced_directly_or__7022","'{0}' implicitly has type 'any' because it does not have a type annotation and is referenced directly or indirectly in its own initializer."),_0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions:t(7023,e.DiagnosticCategory.Error,"_0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_reference_7023","'{0}' implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions."),Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions:t(7024,e.DiagnosticCategory.Error,"Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_ref_7024","Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions."),Generator_implicitly_has_yield_type_0_because_it_does_not_yield_any_values_Consider_supplying_a_return_type_annotation:t(7025,e.DiagnosticCategory.Error,"Generator_implicitly_has_yield_type_0_because_it_does_not_yield_any_values_Consider_supplying_a_retu_7025","Generator implicitly has yield type '{0}' because it does not yield any values. Consider supplying a return type annotation."),JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists:t(7026,e.DiagnosticCategory.Error,"JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists_7026","JSX element implicitly has type 'any' because no interface 'JSX.{0}' exists."),Unreachable_code_detected:t(7027,e.DiagnosticCategory.Error,"Unreachable_code_detected_7027","Unreachable code detected.",!0),Unused_label:t(7028,e.DiagnosticCategory.Error,"Unused_label_7028","Unused label.",!0),Fallthrough_case_in_switch:t(7029,e.DiagnosticCategory.Error,"Fallthrough_case_in_switch_7029","Fallthrough case in switch."),Not_all_code_paths_return_a_value:t(7030,e.DiagnosticCategory.Error,"Not_all_code_paths_return_a_value_7030","Not all code paths return a value."),Binding_element_0_implicitly_has_an_1_type:t(7031,e.DiagnosticCategory.Error,"Binding_element_0_implicitly_has_an_1_type_7031","Binding element '{0}' implicitly has an '{1}' type."),Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation:t(7032,e.DiagnosticCategory.Error,"Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation_7032","Property '{0}' implicitly has type 'any', because its set accessor lacks a parameter type annotation."),Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation:t(7033,e.DiagnosticCategory.Error,"Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation_7033","Property '{0}' implicitly has type 'any', because its get accessor lacks a return type annotation."),Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined:t(7034,e.DiagnosticCategory.Error,"Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined_7034","Variable '{0}' implicitly has type '{1}' in some locations where its type cannot be determined."),Try_npm_install_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare_module_0:t(7035,e.DiagnosticCategory.Error,"Try_npm_install_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare_mod_7035","Try `npm install @types/{1}` if it exists or add a new declaration (.d.ts) file containing `declare module '{0}';`"),Dynamic_import_s_specifier_must_be_of_type_string_but_here_has_type_0:t(7036,e.DiagnosticCategory.Error,"Dynamic_import_s_specifier_must_be_of_type_string_but_here_has_type_0_7036","Dynamic import's specifier must be of type 'string', but here has type '{0}'."),Enables_emit_interoperability_between_CommonJS_and_ES_Modules_via_creation_of_namespace_objects_for_all_imports_Implies_allowSyntheticDefaultImports:t(7037,e.DiagnosticCategory.Message,"Enables_emit_interoperability_between_CommonJS_and_ES_Modules_via_creation_of_namespace_objects_for__7037","Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'."),Type_originates_at_this_import_A_namespace_style_import_cannot_be_called_or_constructed_and_will_cause_a_failure_at_runtime_Consider_using_a_default_import_or_import_require_here_instead:t(7038,e.DiagnosticCategory.Message,"Type_originates_at_this_import_A_namespace_style_import_cannot_be_called_or_constructed_and_will_cau_7038","Type originates at this import. A namespace-style import cannot be called or constructed, and will cause a failure at runtime. Consider using a default import or import require here instead."),Mapped_object_type_implicitly_has_an_any_template_type:t(7039,e.DiagnosticCategory.Error,"Mapped_object_type_implicitly_has_an_any_template_type_7039","Mapped object type implicitly has an 'any' template type."),If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_Slash_Slashgithub_com_SlashDefinitelyTyped_SlashDefinitelyTyped_Slashtree_Slashmaster_Slashtypes_Slash_1:t(7040,e.DiagnosticCategory.Error,"If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_S_7040","If the '{0}' package actually exposes this module, consider sending a pull request to amend 'https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/{1}`"),The_containing_arrow_function_captures_the_global_value_of_this:t(7041,e.DiagnosticCategory.Error,"The_containing_arrow_function_captures_the_global_value_of_this_7041","The containing arrow function captures the global value of 'this'."),Module_0_was_resolved_to_1_but_resolveJsonModule_is_not_used:t(7042,e.DiagnosticCategory.Error,"Module_0_was_resolved_to_1_but_resolveJsonModule_is_not_used_7042","Module '{0}' was resolved to '{1}', but '--resolveJsonModule' is not used."),Variable_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage:t(7043,e.DiagnosticCategory.Suggestion,"Variable_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage_7043","Variable '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage."),Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage:t(7044,e.DiagnosticCategory.Suggestion,"Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage_7044","Parameter '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage."),Member_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage:t(7045,e.DiagnosticCategory.Suggestion,"Member_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage_7045","Member '{0}' implicitly has an '{1}' type, but a better type may be inferred from usage."),Variable_0_implicitly_has_type_1_in_some_locations_but_a_better_type_may_be_inferred_from_usage:t(7046,e.DiagnosticCategory.Suggestion,"Variable_0_implicitly_has_type_1_in_some_locations_but_a_better_type_may_be_inferred_from_usage_7046","Variable '{0}' implicitly has type '{1}' in some locations, but a better type may be inferred from usage."),Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage:t(7047,e.DiagnosticCategory.Suggestion,"Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage_7047","Rest parameter '{0}' implicitly has an 'any[]' type, but a better type may be inferred from usage."),Property_0_implicitly_has_type_any_but_a_better_type_for_its_get_accessor_may_be_inferred_from_usage:t(7048,e.DiagnosticCategory.Suggestion,"Property_0_implicitly_has_type_any_but_a_better_type_for_its_get_accessor_may_be_inferred_from_usage_7048","Property '{0}' implicitly has type 'any', but a better type for its get accessor may be inferred from usage."),Property_0_implicitly_has_type_any_but_a_better_type_for_its_set_accessor_may_be_inferred_from_usage:t(7049,e.DiagnosticCategory.Suggestion,"Property_0_implicitly_has_type_any_but_a_better_type_for_its_set_accessor_may_be_inferred_from_usage_7049","Property '{0}' implicitly has type 'any', but a better type for its set accessor may be inferred from usage."),_0_implicitly_has_an_1_return_type_but_a_better_type_may_be_inferred_from_usage:t(7050,e.DiagnosticCategory.Suggestion,"_0_implicitly_has_an_1_return_type_but_a_better_type_may_be_inferred_from_usage_7050","'{0}' implicitly has an '{1}' return type, but a better type may be inferred from usage."),Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1:t(7051,e.DiagnosticCategory.Error,"Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1_7051","Parameter has a name but no type. Did you mean '{0}: {1}'?"),Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature_Did_you_mean_to_call_1:t(7052,e.DiagnosticCategory.Error,"Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature_Did_you_mean_to_call_1_7052","Element implicitly has an 'any' type because type '{0}' has no index signature. Did you mean to call '{1}' ?"),Element_implicitly_has_an_any_type_because_expression_of_type_0_can_t_be_used_to_index_type_1:t(7053,e.DiagnosticCategory.Error,"Element_implicitly_has_an_any_type_because_expression_of_type_0_can_t_be_used_to_index_type_1_7053","Element implicitly has an 'any' type because expression of type '{0}' can't be used to index type '{1}'."),No_index_signature_with_a_parameter_of_type_0_was_found_on_type_1:t(7054,e.DiagnosticCategory.Error,"No_index_signature_with_a_parameter_of_type_0_was_found_on_type_1_7054","No index signature with a parameter of type '{0}' was found on type '{1}'."),_0_which_lacks_return_type_annotation_implicitly_has_an_1_yield_type:t(7055,e.DiagnosticCategory.Error,"_0_which_lacks_return_type_annotation_implicitly_has_an_1_yield_type_7055","'{0}', which lacks return-type annotation, implicitly has an '{1}' yield type."),You_cannot_rename_this_element:t(8e3,e.DiagnosticCategory.Error,"You_cannot_rename_this_element_8000","You cannot rename this element."),You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library:t(8001,e.DiagnosticCategory.Error,"You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library_8001","You cannot rename elements that are defined in the standard TypeScript library."),import_can_only_be_used_in_a_ts_file:t(8002,e.DiagnosticCategory.Error,"import_can_only_be_used_in_a_ts_file_8002","'import ... =' can only be used in a .ts file."),export_can_only_be_used_in_a_ts_file:t(8003,e.DiagnosticCategory.Error,"export_can_only_be_used_in_a_ts_file_8003","'export=' can only be used in a .ts file."),type_parameter_declarations_can_only_be_used_in_a_ts_file:t(8004,e.DiagnosticCategory.Error,"type_parameter_declarations_can_only_be_used_in_a_ts_file_8004","'type parameter declarations' can only be used in a .ts file."),implements_clauses_can_only_be_used_in_a_ts_file:t(8005,e.DiagnosticCategory.Error,"implements_clauses_can_only_be_used_in_a_ts_file_8005","'implements clauses' can only be used in a .ts file."),interface_declarations_can_only_be_used_in_a_ts_file:t(8006,e.DiagnosticCategory.Error,"interface_declarations_can_only_be_used_in_a_ts_file_8006","'interface declarations' can only be used in a .ts file."),module_declarations_can_only_be_used_in_a_ts_file:t(8007,e.DiagnosticCategory.Error,"module_declarations_can_only_be_used_in_a_ts_file_8007","'module declarations' can only be used in a .ts file."),type_aliases_can_only_be_used_in_a_ts_file:t(8008,e.DiagnosticCategory.Error,"type_aliases_can_only_be_used_in_a_ts_file_8008","'type aliases' can only be used in a .ts file."),_0_can_only_be_used_in_a_ts_file:t(8009,e.DiagnosticCategory.Error,"_0_can_only_be_used_in_a_ts_file_8009","'{0}' can only be used in a .ts file."),types_can_only_be_used_in_a_ts_file:t(8010,e.DiagnosticCategory.Error,"types_can_only_be_used_in_a_ts_file_8010","'types' can only be used in a .ts file."),type_arguments_can_only_be_used_in_a_ts_file:t(8011,e.DiagnosticCategory.Error,"type_arguments_can_only_be_used_in_a_ts_file_8011","'type arguments' can only be used in a .ts file."),parameter_modifiers_can_only_be_used_in_a_ts_file:t(8012,e.DiagnosticCategory.Error,"parameter_modifiers_can_only_be_used_in_a_ts_file_8012","'parameter modifiers' can only be used in a .ts file."),non_null_assertions_can_only_be_used_in_a_ts_file:t(8013,e.DiagnosticCategory.Error,"non_null_assertions_can_only_be_used_in_a_ts_file_8013","'non-null assertions' can only be used in a .ts file."),enum_declarations_can_only_be_used_in_a_ts_file:t(8015,e.DiagnosticCategory.Error,"enum_declarations_can_only_be_used_in_a_ts_file_8015","'enum declarations' can only be used in a .ts file."),type_assertion_expressions_can_only_be_used_in_a_ts_file:t(8016,e.DiagnosticCategory.Error,"type_assertion_expressions_can_only_be_used_in_a_ts_file_8016","'type assertion expressions' can only be used in a .ts file."),Octal_literal_types_must_use_ES2015_syntax_Use_the_syntax_0:t(8017,e.DiagnosticCategory.Error,"Octal_literal_types_must_use_ES2015_syntax_Use_the_syntax_0_8017","Octal literal types must use ES2015 syntax. Use the syntax '{0}'."),Octal_literals_are_not_allowed_in_enums_members_initializer_Use_the_syntax_0:t(8018,e.DiagnosticCategory.Error,"Octal_literals_are_not_allowed_in_enums_members_initializer_Use_the_syntax_0_8018","Octal literals are not allowed in enums members initializer. Use the syntax '{0}'."),Report_errors_in_js_files:t(8019,e.DiagnosticCategory.Message,"Report_errors_in_js_files_8019","Report errors in .js files."),JSDoc_types_can_only_be_used_inside_documentation_comments:t(8020,e.DiagnosticCategory.Error,"JSDoc_types_can_only_be_used_inside_documentation_comments_8020","JSDoc types can only be used inside documentation comments."),JSDoc_typedef_tag_should_either_have_a_type_annotation_or_be_followed_by_property_or_member_tags:t(8021,e.DiagnosticCategory.Error,"JSDoc_typedef_tag_should_either_have_a_type_annotation_or_be_followed_by_property_or_member_tags_8021","JSDoc '@typedef' tag should either have a type annotation or be followed by '@property' or '@member' tags."),JSDoc_0_is_not_attached_to_a_class:t(8022,e.DiagnosticCategory.Error,"JSDoc_0_is_not_attached_to_a_class_8022","JSDoc '@{0}' is not attached to a class."),JSDoc_0_1_does_not_match_the_extends_2_clause:t(8023,e.DiagnosticCategory.Error,"JSDoc_0_1_does_not_match_the_extends_2_clause_8023","JSDoc '@{0} {1}' does not match the 'extends {2}' clause."),JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name:t(8024,e.DiagnosticCategory.Error,"JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name_8024","JSDoc '@param' tag has name '{0}', but there is no parameter with that name."),Class_declarations_cannot_have_more_than_one_augments_or_extends_tag:t(8025,e.DiagnosticCategory.Error,"Class_declarations_cannot_have_more_than_one_augments_or_extends_tag_8025","Class declarations cannot have more than one `@augments` or `@extends` tag."),Expected_0_type_arguments_provide_these_with_an_extends_tag:t(8026,e.DiagnosticCategory.Error,"Expected_0_type_arguments_provide_these_with_an_extends_tag_8026","Expected {0} type arguments; provide these with an '@extends' tag."),Expected_0_1_type_arguments_provide_these_with_an_extends_tag:t(8027,e.DiagnosticCategory.Error,"Expected_0_1_type_arguments_provide_these_with_an_extends_tag_8027","Expected {0}-{1} type arguments; provide these with an '@extends' tag."),JSDoc_may_only_appear_in_the_last_parameter_of_a_signature:t(8028,e.DiagnosticCategory.Error,"JSDoc_may_only_appear_in_the_last_parameter_of_a_signature_8028","JSDoc '...' may only appear in the last parameter of a signature."),JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name_It_would_match_arguments_if_it_had_an_array_type:t(8029,e.DiagnosticCategory.Error,"JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name_It_would_match_arguments_if_it_h_8029","JSDoc '@param' tag has name '{0}', but there is no parameter with that name. It would match 'arguments' if it had an array type."),The_type_of_a_function_declaration_must_match_the_function_s_signature:t(8030,e.DiagnosticCategory.Error,"The_type_of_a_function_declaration_must_match_the_function_s_signature_8030","The type of a function declaration must match the function's signature."),You_cannot_rename_a_module_via_a_global_import:t(8031,e.DiagnosticCategory.Error,"You_cannot_rename_a_module_via_a_global_import_8031","You cannot rename a module via a global import."),Qualified_name_0_is_not_allowed_without_a_leading_param_object_1:t(8032,e.DiagnosticCategory.Error,"Qualified_name_0_is_not_allowed_without_a_leading_param_object_1_8032","Qualified name '{0}' is not allowed without a leading '@param {object} {1}'."),Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_class_extends_clause:t(9002,e.DiagnosticCategory.Error,"Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_clas_9002","Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clause."),class_expressions_are_not_currently_supported:t(9003,e.DiagnosticCategory.Error,"class_expressions_are_not_currently_supported_9003","'class' expressions are not currently supported."),Language_service_is_disabled:t(9004,e.DiagnosticCategory.Error,"Language_service_is_disabled_9004","Language service is disabled."),Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_declaration_emit:t(9005,e.DiagnosticCategory.Error,"Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_9005","Declaration emit for this file requires using private name '{0}'. An explicit type annotation may unblock declaration emit."),Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotation_may_unblock_declaration_emit:t(9006,e.DiagnosticCategory.Error,"Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotati_9006","Declaration emit for this file requires using private name '{0}' from module '{1}'. An explicit type annotation may unblock declaration emit."),JSX_attributes_must_only_be_assigned_a_non_empty_expression:t(17e3,e.DiagnosticCategory.Error,"JSX_attributes_must_only_be_assigned_a_non_empty_expression_17000","JSX attributes must only be assigned a non-empty 'expression'."),JSX_elements_cannot_have_multiple_attributes_with_the_same_name:t(17001,e.DiagnosticCategory.Error,"JSX_elements_cannot_have_multiple_attributes_with_the_same_name_17001","JSX elements cannot have multiple attributes with the same name."),Expected_corresponding_JSX_closing_tag_for_0:t(17002,e.DiagnosticCategory.Error,"Expected_corresponding_JSX_closing_tag_for_0_17002","Expected corresponding JSX closing tag for '{0}'."),JSX_attribute_expected:t(17003,e.DiagnosticCategory.Error,"JSX_attribute_expected_17003","JSX attribute expected."),Cannot_use_JSX_unless_the_jsx_flag_is_provided:t(17004,e.DiagnosticCategory.Error,"Cannot_use_JSX_unless_the_jsx_flag_is_provided_17004","Cannot use JSX unless the '--jsx' flag is provided."),A_constructor_cannot_contain_a_super_call_when_its_class_extends_null:t(17005,e.DiagnosticCategory.Error,"A_constructor_cannot_contain_a_super_call_when_its_class_extends_null_17005","A constructor cannot contain a 'super' call when its class extends 'null'."),An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses:t(17006,e.DiagnosticCategory.Error,"An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_ex_17006","An unary expression with the '{0}' operator is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses."),A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses:t(17007,e.DiagnosticCategory.Error,"A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Con_17007","A type assertion expression is not allowed in the left-hand side of an exponentiation expression. Consider enclosing the expression in parentheses."),JSX_element_0_has_no_corresponding_closing_tag:t(17008,e.DiagnosticCategory.Error,"JSX_element_0_has_no_corresponding_closing_tag_17008","JSX element '{0}' has no corresponding closing tag."),super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class:t(17009,e.DiagnosticCategory.Error,"super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class_17009","'super' must be called before accessing 'this' in the constructor of a derived class."),Unknown_type_acquisition_option_0:t(17010,e.DiagnosticCategory.Error,"Unknown_type_acquisition_option_0_17010","Unknown type acquisition option '{0}'."),super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class:t(17011,e.DiagnosticCategory.Error,"super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class_17011","'super' must be called before accessing a property of 'super' in the constructor of a derived class."),_0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2:t(17012,e.DiagnosticCategory.Error,"_0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2_17012","'{0}' is not a valid meta-property for keyword '{1}'. Did you mean '{2}'?"),Meta_property_0_is_only_allowed_in_the_body_of_a_function_declaration_function_expression_or_constructor:t(17013,e.DiagnosticCategory.Error,"Meta_property_0_is_only_allowed_in_the_body_of_a_function_declaration_function_expression_or_constru_17013","Meta-property '{0}' is only allowed in the body of a function declaration, function expression, or constructor."),JSX_fragment_has_no_corresponding_closing_tag:t(17014,e.DiagnosticCategory.Error,"JSX_fragment_has_no_corresponding_closing_tag_17014","JSX fragment has no corresponding closing tag."),Expected_corresponding_closing_tag_for_JSX_fragment:t(17015,e.DiagnosticCategory.Error,"Expected_corresponding_closing_tag_for_JSX_fragment_17015","Expected corresponding closing tag for JSX fragment."),JSX_fragment_is_not_supported_when_using_jsxFactory:t(17016,e.DiagnosticCategory.Error,"JSX_fragment_is_not_supported_when_using_jsxFactory_17016","JSX fragment is not supported when using --jsxFactory"),JSX_fragment_is_not_supported_when_using_an_inline_JSX_factory_pragma:t(17017,e.DiagnosticCategory.Error,"JSX_fragment_is_not_supported_when_using_an_inline_JSX_factory_pragma_17017","JSX fragment is not supported when using an inline JSX factory pragma"),Circularity_detected_while_resolving_configuration_Colon_0:t(18e3,e.DiagnosticCategory.Error,"Circularity_detected_while_resolving_configuration_Colon_0_18000","Circularity detected while resolving configuration: {0}"),A_path_in_an_extends_option_must_be_relative_or_rooted_but_0_is_not:t(18001,e.DiagnosticCategory.Error,"A_path_in_an_extends_option_must_be_relative_or_rooted_but_0_is_not_18001","A path in an 'extends' option must be relative or rooted, but '{0}' is not."),The_files_list_in_config_file_0_is_empty:t(18002,e.DiagnosticCategory.Error,"The_files_list_in_config_file_0_is_empty_18002","The 'files' list in config file '{0}' is empty."),No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2:t(18003,e.DiagnosticCategory.Error,"No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2_18003","No inputs were found in config file '{0}'. Specified 'include' paths were '{1}' and 'exclude' paths were '{2}'."),File_is_a_CommonJS_module_it_may_be_converted_to_an_ES6_module:t(80001,e.DiagnosticCategory.Suggestion,"File_is_a_CommonJS_module_it_may_be_converted_to_an_ES6_module_80001","File is a CommonJS module; it may be converted to an ES6 module."),This_constructor_function_may_be_converted_to_a_class_declaration:t(80002,e.DiagnosticCategory.Suggestion,"This_constructor_function_may_be_converted_to_a_class_declaration_80002","This constructor function may be converted to a class declaration."),Import_may_be_converted_to_a_default_import:t(80003,e.DiagnosticCategory.Suggestion,"Import_may_be_converted_to_a_default_import_80003","Import may be converted to a default import."),JSDoc_types_may_be_moved_to_TypeScript_types:t(80004,e.DiagnosticCategory.Suggestion,"JSDoc_types_may_be_moved_to_TypeScript_types_80004","JSDoc types may be moved to TypeScript types."),require_call_may_be_converted_to_an_import:t(80005,e.DiagnosticCategory.Suggestion,"require_call_may_be_converted_to_an_import_80005","'require' call may be converted to an import."),This_may_be_converted_to_an_async_function:t(80006,e.DiagnosticCategory.Suggestion,"This_may_be_converted_to_an_async_function_80006","This may be converted to an async function."),await_has_no_effect_on_the_type_of_this_expression:t(80007,e.DiagnosticCategory.Suggestion,"await_has_no_effect_on_the_type_of_this_expression_80007","'await' has no effect on the type of this expression."),Numeric_literals_with_absolute_values_equal_to_2_53_or_greater_are_too_large_to_be_represented_accurately_as_integers:t(80008,e.DiagnosticCategory.Suggestion,"Numeric_literals_with_absolute_values_equal_to_2_53_or_greater_are_too_large_to_be_represented_accur_80008","Numeric literals with absolute values equal to 2^53 or greater are too large to be represented accurately as integers."),Add_missing_super_call:t(90001,e.DiagnosticCategory.Message,"Add_missing_super_call_90001","Add missing 'super()' call"),Make_super_call_the_first_statement_in_the_constructor:t(90002,e.DiagnosticCategory.Message,"Make_super_call_the_first_statement_in_the_constructor_90002","Make 'super()' call the first statement in the constructor"),Change_extends_to_implements:t(90003,e.DiagnosticCategory.Message,"Change_extends_to_implements_90003","Change 'extends' to 'implements'"),Remove_declaration_for_Colon_0:t(90004,e.DiagnosticCategory.Message,"Remove_declaration_for_Colon_0_90004","Remove declaration for: '{0}'"),Remove_import_from_0:t(90005,e.DiagnosticCategory.Message,"Remove_import_from_0_90005","Remove import from '{0}'"),Implement_interface_0:t(90006,e.DiagnosticCategory.Message,"Implement_interface_0_90006","Implement interface '{0}'"),Implement_inherited_abstract_class:t(90007,e.DiagnosticCategory.Message,"Implement_inherited_abstract_class_90007","Implement inherited abstract class"),Add_0_to_unresolved_variable:t(90008,e.DiagnosticCategory.Message,"Add_0_to_unresolved_variable_90008","Add '{0}.' to unresolved variable"),Remove_destructuring:t(90009,e.DiagnosticCategory.Message,"Remove_destructuring_90009","Remove destructuring"),Remove_variable_statement:t(90010,e.DiagnosticCategory.Message,"Remove_variable_statement_90010","Remove variable statement"),Remove_template_tag:t(90011,e.DiagnosticCategory.Message,"Remove_template_tag_90011","Remove template tag"),Remove_type_parameters:t(90012,e.DiagnosticCategory.Message,"Remove_type_parameters_90012","Remove type parameters"),Import_0_from_module_1:t(90013,e.DiagnosticCategory.Message,"Import_0_from_module_1_90013","Import '{0}' from module \"{1}\""),Change_0_to_1:t(90014,e.DiagnosticCategory.Message,"Change_0_to_1_90014","Change '{0}' to '{1}'"),Add_0_to_existing_import_declaration_from_1:t(90015,e.DiagnosticCategory.Message,"Add_0_to_existing_import_declaration_from_1_90015","Add '{0}' to existing import declaration from \"{1}\""),Declare_property_0:t(90016,e.DiagnosticCategory.Message,"Declare_property_0_90016","Declare property '{0}'"),Add_index_signature_for_property_0:t(90017,e.DiagnosticCategory.Message,"Add_index_signature_for_property_0_90017","Add index signature for property '{0}'"),Disable_checking_for_this_file:t(90018,e.DiagnosticCategory.Message,"Disable_checking_for_this_file_90018","Disable checking for this file"),Ignore_this_error_message:t(90019,e.DiagnosticCategory.Message,"Ignore_this_error_message_90019","Ignore this error message"),Initialize_property_0_in_the_constructor:t(90020,e.DiagnosticCategory.Message,"Initialize_property_0_in_the_constructor_90020","Initialize property '{0}' in the constructor"),Initialize_static_property_0:t(90021,e.DiagnosticCategory.Message,"Initialize_static_property_0_90021","Initialize static property '{0}'"),Change_spelling_to_0:t(90022,e.DiagnosticCategory.Message,"Change_spelling_to_0_90022","Change spelling to '{0}'"),Declare_method_0:t(90023,e.DiagnosticCategory.Message,"Declare_method_0_90023","Declare method '{0}'"),Declare_static_method_0:t(90024,e.DiagnosticCategory.Message,"Declare_static_method_0_90024","Declare static method '{0}'"),Prefix_0_with_an_underscore:t(90025,e.DiagnosticCategory.Message,"Prefix_0_with_an_underscore_90025","Prefix '{0}' with an underscore"),Rewrite_as_the_indexed_access_type_0:t(90026,e.DiagnosticCategory.Message,"Rewrite_as_the_indexed_access_type_0_90026","Rewrite as the indexed access type '{0}'"),Declare_static_property_0:t(90027,e.DiagnosticCategory.Message,"Declare_static_property_0_90027","Declare static property '{0}'"),Call_decorator_expression:t(90028,e.DiagnosticCategory.Message,"Call_decorator_expression_90028","Call decorator expression"),Add_async_modifier_to_containing_function:t(90029,e.DiagnosticCategory.Message,"Add_async_modifier_to_containing_function_90029","Add async modifier to containing function"),Replace_infer_0_with_unknown:t(90030,e.DiagnosticCategory.Message,"Replace_infer_0_with_unknown_90030","Replace 'infer {0}' with 'unknown'"),Replace_all_unused_infer_with_unknown:t(90031,e.DiagnosticCategory.Message,"Replace_all_unused_infer_with_unknown_90031","Replace all unused 'infer' with 'unknown'"),Import_default_0_from_module_1:t(90032,e.DiagnosticCategory.Message,"Import_default_0_from_module_1_90032","Import default '{0}' from module \"{1}\""),Add_default_import_0_to_existing_import_declaration_from_1:t(90033,e.DiagnosticCategory.Message,"Add_default_import_0_to_existing_import_declaration_from_1_90033","Add default import '{0}' to existing import declaration from \"{1}\""),Add_parameter_name:t(90034,e.DiagnosticCategory.Message,"Add_parameter_name_90034","Add parameter name"),Convert_function_to_an_ES2015_class:t(95001,e.DiagnosticCategory.Message,"Convert_function_to_an_ES2015_class_95001","Convert function to an ES2015 class"),Convert_function_0_to_class:t(95002,e.DiagnosticCategory.Message,"Convert_function_0_to_class_95002","Convert function '{0}' to class"),Extract_to_0_in_1:t(95004,e.DiagnosticCategory.Message,"Extract_to_0_in_1_95004","Extract to {0} in {1}"),Extract_function:t(95005,e.DiagnosticCategory.Message,"Extract_function_95005","Extract function"),Extract_constant:t(95006,e.DiagnosticCategory.Message,"Extract_constant_95006","Extract constant"),Extract_to_0_in_enclosing_scope:t(95007,e.DiagnosticCategory.Message,"Extract_to_0_in_enclosing_scope_95007","Extract to {0} in enclosing scope"),Extract_to_0_in_1_scope:t(95008,e.DiagnosticCategory.Message,"Extract_to_0_in_1_scope_95008","Extract to {0} in {1} scope"),Annotate_with_type_from_JSDoc:t(95009,e.DiagnosticCategory.Message,"Annotate_with_type_from_JSDoc_95009","Annotate with type from JSDoc"),Annotate_with_types_from_JSDoc:t(95010,e.DiagnosticCategory.Message,"Annotate_with_types_from_JSDoc_95010","Annotate with types from JSDoc"),Infer_type_of_0_from_usage:t(95011,e.DiagnosticCategory.Message,"Infer_type_of_0_from_usage_95011","Infer type of '{0}' from usage"),Infer_parameter_types_from_usage:t(95012,e.DiagnosticCategory.Message,"Infer_parameter_types_from_usage_95012","Infer parameter types from usage"),Convert_to_default_import:t(95013,e.DiagnosticCategory.Message,"Convert_to_default_import_95013","Convert to default import"),Install_0:t(95014,e.DiagnosticCategory.Message,"Install_0_95014","Install '{0}'"),Replace_import_with_0:t(95015,e.DiagnosticCategory.Message,"Replace_import_with_0_95015","Replace import with '{0}'."),Use_synthetic_default_member:t(95016,e.DiagnosticCategory.Message,"Use_synthetic_default_member_95016","Use synthetic 'default' member."),Convert_to_ES6_module:t(95017,e.DiagnosticCategory.Message,"Convert_to_ES6_module_95017","Convert to ES6 module"),Add_undefined_type_to_property_0:t(95018,e.DiagnosticCategory.Message,"Add_undefined_type_to_property_0_95018","Add 'undefined' type to property '{0}'"),Add_initializer_to_property_0:t(95019,e.DiagnosticCategory.Message,"Add_initializer_to_property_0_95019","Add initializer to property '{0}'"),Add_definite_assignment_assertion_to_property_0:t(95020,e.DiagnosticCategory.Message,"Add_definite_assignment_assertion_to_property_0_95020","Add definite assignment assertion to property '{0}'"),Add_all_missing_members:t(95022,e.DiagnosticCategory.Message,"Add_all_missing_members_95022","Add all missing members"),Infer_all_types_from_usage:t(95023,e.DiagnosticCategory.Message,"Infer_all_types_from_usage_95023","Infer all types from usage"),Delete_all_unused_declarations:t(95024,e.DiagnosticCategory.Message,"Delete_all_unused_declarations_95024","Delete all unused declarations"),Prefix_all_unused_declarations_with_where_possible:t(95025,e.DiagnosticCategory.Message,"Prefix_all_unused_declarations_with_where_possible_95025","Prefix all unused declarations with '_' where possible"),Fix_all_detected_spelling_errors:t(95026,e.DiagnosticCategory.Message,"Fix_all_detected_spelling_errors_95026","Fix all detected spelling errors"),Add_initializers_to_all_uninitialized_properties:t(95027,e.DiagnosticCategory.Message,"Add_initializers_to_all_uninitialized_properties_95027","Add initializers to all uninitialized properties"),Add_definite_assignment_assertions_to_all_uninitialized_properties:t(95028,e.DiagnosticCategory.Message,"Add_definite_assignment_assertions_to_all_uninitialized_properties_95028","Add definite assignment assertions to all uninitialized properties"),Add_undefined_type_to_all_uninitialized_properties:t(95029,e.DiagnosticCategory.Message,"Add_undefined_type_to_all_uninitialized_properties_95029","Add undefined type to all uninitialized properties"),Change_all_jsdoc_style_types_to_TypeScript:t(95030,e.DiagnosticCategory.Message,"Change_all_jsdoc_style_types_to_TypeScript_95030","Change all jsdoc-style types to TypeScript"),Change_all_jsdoc_style_types_to_TypeScript_and_add_undefined_to_nullable_types:t(95031,e.DiagnosticCategory.Message,"Change_all_jsdoc_style_types_to_TypeScript_and_add_undefined_to_nullable_types_95031","Change all jsdoc-style types to TypeScript (and add '| undefined' to nullable types)"),Implement_all_unimplemented_interfaces:t(95032,e.DiagnosticCategory.Message,"Implement_all_unimplemented_interfaces_95032","Implement all unimplemented interfaces"),Install_all_missing_types_packages:t(95033,e.DiagnosticCategory.Message,"Install_all_missing_types_packages_95033","Install all missing types packages"),Rewrite_all_as_indexed_access_types:t(95034,e.DiagnosticCategory.Message,"Rewrite_all_as_indexed_access_types_95034","Rewrite all as indexed access types"),Convert_all_to_default_imports:t(95035,e.DiagnosticCategory.Message,"Convert_all_to_default_imports_95035","Convert all to default imports"),Make_all_super_calls_the_first_statement_in_their_constructor:t(95036,e.DiagnosticCategory.Message,"Make_all_super_calls_the_first_statement_in_their_constructor_95036","Make all 'super()' calls the first statement in their constructor"),Add_qualifier_to_all_unresolved_variables_matching_a_member_name:t(95037,e.DiagnosticCategory.Message,"Add_qualifier_to_all_unresolved_variables_matching_a_member_name_95037","Add qualifier to all unresolved variables matching a member name"),Change_all_extended_interfaces_to_implements:t(95038,e.DiagnosticCategory.Message,"Change_all_extended_interfaces_to_implements_95038","Change all extended interfaces to 'implements'"),Add_all_missing_super_calls:t(95039,e.DiagnosticCategory.Message,"Add_all_missing_super_calls_95039","Add all missing super calls"),Implement_all_inherited_abstract_classes:t(95040,e.DiagnosticCategory.Message,"Implement_all_inherited_abstract_classes_95040","Implement all inherited abstract classes"),Add_all_missing_async_modifiers:t(95041,e.DiagnosticCategory.Message,"Add_all_missing_async_modifiers_95041","Add all missing 'async' modifiers"),Add_ts_ignore_to_all_error_messages:t(95042,e.DiagnosticCategory.Message,"Add_ts_ignore_to_all_error_messages_95042","Add '@ts-ignore' to all error messages"),Annotate_everything_with_types_from_JSDoc:t(95043,e.DiagnosticCategory.Message,"Annotate_everything_with_types_from_JSDoc_95043","Annotate everything with types from JSDoc"),Add_to_all_uncalled_decorators:t(95044,e.DiagnosticCategory.Message,"Add_to_all_uncalled_decorators_95044","Add '()' to all uncalled decorators"),Convert_all_constructor_functions_to_classes:t(95045,e.DiagnosticCategory.Message,"Convert_all_constructor_functions_to_classes_95045","Convert all constructor functions to classes"),Generate_get_and_set_accessors:t(95046,e.DiagnosticCategory.Message,"Generate_get_and_set_accessors_95046","Generate 'get' and 'set' accessors"),Convert_require_to_import:t(95047,e.DiagnosticCategory.Message,"Convert_require_to_import_95047","Convert 'require' to 'import'"),Convert_all_require_to_import:t(95048,e.DiagnosticCategory.Message,"Convert_all_require_to_import_95048","Convert all 'require' to 'import'"),Move_to_a_new_file:t(95049,e.DiagnosticCategory.Message,"Move_to_a_new_file_95049","Move to a new file"),Remove_unreachable_code:t(95050,e.DiagnosticCategory.Message,"Remove_unreachable_code_95050","Remove unreachable code"),Remove_all_unreachable_code:t(95051,e.DiagnosticCategory.Message,"Remove_all_unreachable_code_95051","Remove all unreachable code"),Add_missing_typeof:t(95052,e.DiagnosticCategory.Message,"Add_missing_typeof_95052","Add missing 'typeof'"),Remove_unused_label:t(95053,e.DiagnosticCategory.Message,"Remove_unused_label_95053","Remove unused label"),Remove_all_unused_labels:t(95054,e.DiagnosticCategory.Message,"Remove_all_unused_labels_95054","Remove all unused labels"),Convert_0_to_mapped_object_type:t(95055,e.DiagnosticCategory.Message,"Convert_0_to_mapped_object_type_95055","Convert '{0}' to mapped object type"),Convert_namespace_import_to_named_imports:t(95056,e.DiagnosticCategory.Message,"Convert_namespace_import_to_named_imports_95056","Convert namespace import to named imports"),Convert_named_imports_to_namespace_import:t(95057,e.DiagnosticCategory.Message,"Convert_named_imports_to_namespace_import_95057","Convert named imports to namespace import"),Add_or_remove_braces_in_an_arrow_function:t(95058,e.DiagnosticCategory.Message,"Add_or_remove_braces_in_an_arrow_function_95058","Add or remove braces in an arrow function"),Add_braces_to_arrow_function:t(95059,e.DiagnosticCategory.Message,"Add_braces_to_arrow_function_95059","Add braces to arrow function"),Remove_braces_from_arrow_function:t(95060,e.DiagnosticCategory.Message,"Remove_braces_from_arrow_function_95060","Remove braces from arrow function"),Convert_default_export_to_named_export:t(95061,e.DiagnosticCategory.Message,"Convert_default_export_to_named_export_95061","Convert default export to named export"),Convert_named_export_to_default_export:t(95062,e.DiagnosticCategory.Message,"Convert_named_export_to_default_export_95062","Convert named export to default export"),Add_missing_enum_member_0:t(95063,e.DiagnosticCategory.Message,"Add_missing_enum_member_0_95063","Add missing enum member '{0}'"),Add_all_missing_imports:t(95064,e.DiagnosticCategory.Message,"Add_all_missing_imports_95064","Add all missing imports"),Convert_to_async_function:t(95065,e.DiagnosticCategory.Message,"Convert_to_async_function_95065","Convert to async function"),Convert_all_to_async_functions:t(95066,e.DiagnosticCategory.Message,"Convert_all_to_async_functions_95066","Convert all to async functions"),Add_unknown_conversion_for_non_overlapping_types:t(95069,e.DiagnosticCategory.Message,"Add_unknown_conversion_for_non_overlapping_types_95069","Add 'unknown' conversion for non-overlapping types"),Add_unknown_to_all_conversions_of_non_overlapping_types:t(95070,e.DiagnosticCategory.Message,"Add_unknown_to_all_conversions_of_non_overlapping_types_95070","Add 'unknown' to all conversions of non-overlapping types"),Add_missing_new_operator_to_call:t(95071,e.DiagnosticCategory.Message,"Add_missing_new_operator_to_call_95071","Add missing 'new' operator to call"),Add_missing_new_operator_to_all_calls:t(95072,e.DiagnosticCategory.Message,"Add_missing_new_operator_to_all_calls_95072","Add missing 'new' operator to all calls"),Add_names_to_all_parameters_without_names:t(95073,e.DiagnosticCategory.Message,"Add_names_to_all_parameters_without_names_95073","Add names to all parameters without names"),Enable_the_experimentalDecorators_option_in_your_configuration_file:t(95074,e.DiagnosticCategory.Message,"Enable_the_experimentalDecorators_option_in_your_configuration_file_95074","Enable the 'experimentalDecorators' option in your configuration file"),Convert_parameters_to_destructured_object:t(95075,e.DiagnosticCategory.Message,"Convert_parameters_to_destructured_object_95075","Convert parameters to destructured object"),Allow_accessing_UMD_globals_from_modules:t(95076,e.DiagnosticCategory.Message,"Allow_accessing_UMD_globals_from_modules_95076","Allow accessing UMD globals from modules."),Extract_type:t(95077,e.DiagnosticCategory.Message,"Extract_type_95077","Extract type"),Extract_to_type_alias:t(95078,e.DiagnosticCategory.Message,"Extract_to_type_alias_95078","Extract to type alias"),Extract_to_typedef:t(95079,e.DiagnosticCategory.Message,"Extract_to_typedef_95079","Extract to typedef"),Infer_this_type_of_0_from_usage:t(95080,e.DiagnosticCategory.Message,"Infer_this_type_of_0_from_usage_95080","Infer 'this' type of '{0}' from usage"),Add_const_to_unresolved_variable:t(95081,e.DiagnosticCategory.Message,"Add_const_to_unresolved_variable_95081","Add 'const' to unresolved variable"),Add_const_to_all_unresolved_variables:t(95082,e.DiagnosticCategory.Message,"Add_const_to_all_unresolved_variables_95082","Add 'const' to all unresolved variables"),Add_await:t(95083,e.DiagnosticCategory.Message,"Add_await_95083","Add 'await'"),Add_await_to_initializer_for_0:t(95084,e.DiagnosticCategory.Message,"Add_await_to_initializer_for_0_95084","Add 'await' to initializer for '{0}'"),Fix_all_expressions_possibly_missing_await:t(95085,e.DiagnosticCategory.Message,"Fix_all_expressions_possibly_missing_await_95085","Fix all expressions possibly missing 'await'"),Remove_unnecessary_await:t(95086,e.DiagnosticCategory.Message,"Remove_unnecessary_await_95086","Remove unnecessary 'await'"),Remove_all_unnecessary_uses_of_await:t(95087,e.DiagnosticCategory.Message,"Remove_all_unnecessary_uses_of_await_95087","Remove all unnecessary uses of 'await'"),Enable_the_jsx_flag_in_your_configuration_file:t(95088,e.DiagnosticCategory.Message,"Enable_the_jsx_flag_in_your_configuration_file_95088","Enable the '--jsx' flag in your configuration file"),Add_await_to_initializers:t(95089,e.DiagnosticCategory.Message,"Add_await_to_initializers_95089","Add 'await' to initializers"),Extract_to_interface:t(95090,e.DiagnosticCategory.Message,"Extract_to_interface_95090","Extract to interface"),Convert_to_a_bigint_numeric_literal:t(95091,e.DiagnosticCategory.Message,"Convert_to_a_bigint_numeric_literal_95091","Convert to a bigint numeric literal"),Convert_all_to_bigint_numeric_literals:t(95092,e.DiagnosticCategory.Message,"Convert_all_to_bigint_numeric_literals_95092","Convert all to bigint numeric literals"),Convert_const_to_let:t(95093,e.DiagnosticCategory.Message,"Convert_const_to_let_95093","Convert 'const' to 'let'"),Prefix_with_declare:t(95094,e.DiagnosticCategory.Message,"Prefix_with_declare_95094","Prefix with 'declare'"),Prefix_all_incorrect_property_declarations_with_declare:t(95095,e.DiagnosticCategory.Message,"Prefix_all_incorrect_property_declarations_with_declare_95095","Prefix all incorrect property declarations with 'declare'"),No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer:t(18004,e.DiagnosticCategory.Error,"No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer_18004","No value exists in scope for the shorthand property '{0}'. Either declare one or provide an initializer."),Classes_may_not_have_a_field_named_constructor:t(18006,e.DiagnosticCategory.Error,"Classes_may_not_have_a_field_named_constructor_18006","Classes may not have a field named 'constructor'."),JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array:t(18007,e.DiagnosticCategory.Error,"JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array_18007","JSX expressions may not use the comma operator. Did you mean to write an array?")}}(s||(s={})),function(e){var t;function n(e){return e>=75}e.tokenIsIdentifierOrKeyword=n,e.tokenIsIdentifierOrKeywordOrGreaterThan=function(e){return 31===e||n(e)};var i=((t={abstract:121,any:124,as:122,asserts:123,bigint:150,boolean:127,break:76,case:77,catch:78,class:79,continue:81,const:80}).constructor=128,t.debugger=82,t.declare=129,t.default=83,t.delete=84,t.do=85,t.else=86,t.enum=87,t.export=88,t.extends=89,t.false=90,t.finally=91,t.for=92,t.from=148,t.function=93,t.get=130,t.if=94,t.implements=112,t.import=95,t.in=96,t.infer=131,t.instanceof=97,t.interface=113,t.is=132,t.keyof=133,t.let=114,t.module=134,t.namespace=135,t.never=136,t.new=98,t.null=99,t.number=139,t.object=140,t.package=115,t.private=116,t.protected=117,t.public=118,t.readonly=137,t.require=138,t.global=149,t.return=100,t.set=141,t.static=119,t.string=142,t.super=101,t.switch=102,t.symbol=143,t.this=103,t.throw=104,t.true=105,t.try=106,t.type=144,t.typeof=107,t.undefined=145,t.unique=146,t.unknown=147,t.var=108,t.void=109,t.while=110,t.with=111,t.yield=120,t.async=125,t.await=126,t.of=151,t),a=e.createMapFromTemplate(i),o=e.createMapFromTemplate(r(r({},i),{"{":18,"}":19,"(":20,")":21,"[":22,"]":23,".":24,"...":25,";":26,",":27,"<":29,">":31,"<=":32,">=":33,"==":34,"!=":35,"===":36,"!==":37,"=>":38,"+":39,"-":40,"**":42,"*":41,"/":43,"%":44,"++":45,"--":46,"<<":47,"</":30,">>":48,">>>":49,"&":50,"|":51,"^":52,"!":53,"~":54,"&&":55,"||":56,"?":57,"??":60,"?.":28,":":58,"=":62,"+=":63,"-=":64,"*=":65,"**=":66,"/=":67,"%=":68,"<<=":69,">>=":70,">>>=":71,"&=":72,"|=":73,"^=":74,"@":59,"`":61})),s=[170,170,181,181,186,186,192,214,216,246,248,543,546,563,592,685,688,696,699,705,720,721,736,740,750,750,890,890,902,902,904,906,908,908,910,929,931,974,976,983,986,1011,1024,1153,1164,1220,1223,1224,1227,1228,1232,1269,1272,1273,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1569,1594,1600,1610,1649,1747,1749,1749,1765,1766,1786,1788,1808,1808,1810,1836,1920,1957,2309,2361,2365,2365,2384,2384,2392,2401,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2699,2701,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2784,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2870,2873,2877,2877,2908,2909,2911,2913,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,2997,2999,3001,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3294,3294,3296,3297,3333,3340,3342,3344,3346,3368,3370,3385,3424,3425,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3805,3840,3840,3904,3911,3913,3946,3976,3979,4096,4129,4131,4135,4137,4138,4176,4181,4256,4293,4304,4342,4352,4441,4447,4514,4520,4601,4608,4614,4616,4678,4680,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4742,4744,4744,4746,4749,4752,4782,4784,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4814,4816,4822,4824,4846,4848,4878,4880,4880,4882,4885,4888,4894,4896,4934,4936,4954,5024,5108,5121,5740,5743,5750,5761,5786,5792,5866,6016,6067,6176,6263,6272,6312,7680,7835,7840,7929,7936,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8319,8319,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8497,8499,8505,8544,8579,12293,12295,12321,12329,12337,12341,12344,12346,12353,12436,12445,12446,12449,12538,12540,12542,12549,12588,12593,12686,12704,12727,13312,19893,19968,40869,40960,42124,44032,55203,63744,64045,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65138,65140,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],c=[170,170,181,181,186,186,192,214,216,246,248,543,546,563,592,685,688,696,699,705,720,721,736,740,750,750,768,846,864,866,890,890,902,902,904,906,908,908,910,929,931,974,976,983,986,1011,1024,1153,1155,1158,1164,1220,1223,1224,1227,1228,1232,1269,1272,1273,1329,1366,1369,1369,1377,1415,1425,1441,1443,1465,1467,1469,1471,1471,1473,1474,1476,1476,1488,1514,1520,1522,1569,1594,1600,1621,1632,1641,1648,1747,1749,1756,1759,1768,1770,1773,1776,1788,1808,1836,1840,1866,1920,1968,2305,2307,2309,2361,2364,2381,2384,2388,2392,2403,2406,2415,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2492,2494,2500,2503,2504,2507,2509,2519,2519,2524,2525,2527,2531,2534,2545,2562,2562,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2649,2652,2654,2654,2662,2676,2689,2691,2693,2699,2701,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2784,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2870,2873,2876,2883,2887,2888,2891,2893,2902,2903,2908,2909,2911,2913,2918,2927,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,2997,2999,3001,3006,3010,3014,3016,3018,3021,3031,3031,3047,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3134,3140,3142,3144,3146,3149,3157,3158,3168,3169,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3262,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3297,3302,3311,3330,3331,3333,3340,3342,3344,3346,3368,3370,3385,3390,3395,3398,3400,3402,3405,3415,3415,3424,3425,3430,3439,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3805,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3946,3953,3972,3974,3979,3984,3991,3993,4028,4038,4038,4096,4129,4131,4135,4137,4138,4140,4146,4150,4153,4160,4169,4176,4185,4256,4293,4304,4342,4352,4441,4447,4514,4520,4601,4608,4614,4616,4678,4680,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4742,4744,4744,4746,4749,4752,4782,4784,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4814,4816,4822,4824,4846,4848,4878,4880,4880,4882,4885,4888,4894,4896,4934,4936,4954,4969,4977,5024,5108,5121,5740,5743,5750,5761,5786,5792,5866,6016,6099,6112,6121,6160,6169,6176,6263,6272,6313,7680,7835,7840,7929,7936,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8255,8256,8319,8319,8400,8412,8417,8417,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8497,8499,8505,8544,8579,12293,12295,12321,12335,12337,12341,12344,12346,12353,12436,12441,12442,12445,12446,12449,12542,12549,12588,12593,12686,12704,12727,13312,19893,19968,40869,40960,42124,44032,55203,63744,64045,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65056,65059,65075,65076,65101,65103,65136,65138,65140,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65381,65470,65474,65479,65482,65487,65490,65495,65498,65500],u=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1319,1329,1366,1369,1369,1377,1415,1488,1514,1520,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2208,2208,2210,2220,2308,2361,2365,2365,2384,2384,2392,2401,2417,2423,2425,2431,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3133,3160,3161,3168,3169,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3424,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6263,6272,6312,6314,6314,6320,6389,6400,6428,6480,6509,6512,6516,6528,6571,6593,6599,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7401,7404,7406,7409,7413,7414,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42647,42656,42735,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43648,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],l=[170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1319,1329,1366,1369,1369,1377,1415,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1520,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2048,2093,2112,2139,2208,2208,2210,2220,2276,2302,2304,2403,2406,2415,2417,2423,2425,2431,2433,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3073,3075,3077,3084,3086,3088,3090,3112,3114,3123,3125,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3161,3168,3171,3174,3183,3202,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3330,3331,3333,3340,3342,3344,3346,3386,3389,3396,3398,3400,3402,3406,3415,3415,3424,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3719,3720,3722,3722,3725,3725,3732,3735,3737,3743,3745,3747,3749,3749,3751,3751,3754,3755,3757,3769,3771,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5108,5121,5740,5743,5759,5761,5786,5792,5866,5870,5872,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6263,6272,6314,6320,6389,6400,6428,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7376,7378,7380,7414,7424,7654,7676,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8204,8205,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12589,12593,12686,12704,12730,12784,12799,13312,19893,19968,40908,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42647,42655,42737,42775,42783,42786,42888,42891,42894,42896,42899,42912,42922,43e3,43047,43072,43123,43136,43204,43216,43225,43232,43255,43259,43259,43264,43309,43312,43347,43360,43388,43392,43456,43471,43481,43520,43574,43584,43597,43600,43609,43616,43638,43642,43643,43648,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43968,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65062,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500],_=[65,90,97,122,170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1327,1329,1366,1369,1369,1376,1416,1488,1514,1519,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2144,2154,2208,2228,2230,2237,2308,2361,2365,2365,2384,2384,2392,2401,2417,2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2809,2809,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3129,3133,3133,3160,3162,3168,3169,3200,3200,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3294,3294,3296,3297,3313,3314,3333,3340,3342,3344,3346,3386,3389,3389,3406,3406,3412,3414,3423,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5900,5902,5905,5920,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6264,6272,6312,6314,6314,6320,6389,6400,6430,6480,6509,6512,6516,6528,6571,6576,6601,6656,6678,6688,6740,6823,6823,6917,6963,6981,6987,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7296,7304,7312,7354,7357,7359,7401,7404,7406,7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8472,8477,8484,8484,8486,8486,8488,8488,8490,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12443,12447,12449,12538,12540,12543,12549,12591,12593,12686,12704,12730,12784,12799,13312,19893,19968,40943,40960,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42653,42656,42735,42775,42783,42786,42888,42891,42943,42946,42950,42999,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43261,43262,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43488,43492,43494,43503,43514,43518,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43646,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43879,43888,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66176,66204,66208,66256,66304,66335,66349,66378,66384,66421,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66736,66771,66776,66811,66816,66855,66864,66915,67072,67382,67392,67413,67424,67431,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897,67968,68023,68030,68031,68096,68096,68112,68115,68117,68119,68121,68149,68192,68220,68224,68252,68288,68295,68297,68324,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68899,69376,69404,69415,69415,69424,69445,69600,69622,69635,69687,69763,69807,69840,69864,69891,69926,69956,69956,69968,70002,70006,70006,70019,70066,70081,70084,70106,70106,70108,70108,70144,70161,70163,70187,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70366,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70461,70461,70480,70480,70493,70497,70656,70708,70727,70730,70751,70751,70784,70831,70852,70853,70855,70855,71040,71086,71128,71131,71168,71215,71236,71236,71296,71338,71352,71352,71424,71450,71680,71723,71840,71903,71935,71935,72096,72103,72106,72144,72161,72161,72163,72163,72192,72192,72203,72242,72250,72250,72272,72272,72284,72329,72349,72349,72384,72440,72704,72712,72714,72750,72768,72768,72818,72847,72960,72966,72968,72969,72971,73008,73030,73030,73056,73061,73063,73064,73066,73097,73112,73112,73440,73458,73728,74649,74752,74862,74880,75075,77824,78894,82944,83526,92160,92728,92736,92766,92880,92909,92928,92975,92992,92995,93027,93047,93053,93071,93760,93823,93952,94026,94032,94032,94099,94111,94176,94177,94179,94179,94208,100343,100352,101106,110592,110878,110928,110930,110948,110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,113817,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,123136,123180,123191,123197,123214,123214,123584,123627,124928,125124,125184,125251,125259,125259,126464,126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,131072,173782,173824,177972,177984,178205,178208,183969,183984,191456,194560,195101],d=[48,57,65,90,95,95,97,122,170,170,181,181,183,183,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,895,895,902,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1327,1329,1366,1369,1369,1376,1416,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1519,1522,1552,1562,1568,1641,1646,1747,1749,1756,1759,1768,1770,1788,1791,1791,1808,1866,1869,1969,1984,2037,2042,2042,2045,2045,2048,2093,2112,2139,2144,2154,2208,2228,2230,2237,2259,2273,2275,2403,2406,2415,2417,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2556,2556,2558,2558,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2809,2815,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2902,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3072,3084,3086,3088,3090,3112,3114,3129,3133,3140,3142,3144,3146,3149,3157,3158,3160,3162,3168,3171,3174,3183,3200,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3294,3294,3296,3299,3302,3311,3313,3314,3328,3331,3333,3340,3342,3344,3346,3396,3398,3400,3402,3406,3412,3415,3423,3427,3430,3439,3450,3455,3458,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3558,3567,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3773,3776,3780,3782,3782,3784,3789,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4969,4977,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5900,5902,5908,5920,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6157,6160,6169,6176,6264,6272,6314,6320,6389,6400,6430,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6618,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6832,6845,6912,6987,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7296,7304,7312,7354,7357,7359,7376,7378,7380,7418,7424,7673,7675,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8255,8256,8276,8276,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8472,8477,8484,8484,8486,8486,8488,8488,8490,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11310,11312,11358,11360,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12447,12449,12538,12540,12543,12549,12591,12593,12686,12704,12730,12784,12799,13312,19893,19968,40943,40960,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42737,42775,42783,42786,42888,42891,42943,42946,42950,42999,43047,43072,43123,43136,43205,43216,43225,43232,43255,43259,43259,43261,43309,43312,43347,43360,43388,43392,43456,43471,43481,43488,43518,43520,43574,43584,43597,43600,43609,43616,43638,43642,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43879,43888,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65071,65075,65076,65101,65103,65136,65140,65142,65276,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66045,66045,66176,66204,66208,66256,66272,66272,66304,66335,66349,66378,66384,66426,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66720,66729,66736,66771,66776,66811,66816,66855,66864,66915,67072,67382,67392,67413,67424,67431,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897,67968,68023,68030,68031,68096,68099,68101,68102,68108,68115,68117,68119,68121,68149,68152,68154,68159,68159,68192,68220,68224,68252,68288,68295,68297,68326,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68903,68912,68921,69376,69404,69415,69415,69424,69456,69600,69622,69632,69702,69734,69743,69759,69818,69840,69864,69872,69881,69888,69940,69942,69951,69956,69958,69968,70003,70006,70006,70016,70084,70089,70092,70096,70106,70108,70108,70144,70161,70163,70199,70206,70206,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70378,70384,70393,70400,70403,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70459,70468,70471,70472,70475,70477,70480,70480,70487,70487,70493,70499,70502,70508,70512,70516,70656,70730,70736,70745,70750,70751,70784,70853,70855,70855,70864,70873,71040,71093,71096,71104,71128,71133,71168,71232,71236,71236,71248,71257,71296,71352,71360,71369,71424,71450,71453,71467,71472,71481,71680,71738,71840,71913,71935,71935,72096,72103,72106,72151,72154,72161,72163,72164,72192,72254,72263,72263,72272,72345,72349,72349,72384,72440,72704,72712,72714,72758,72760,72768,72784,72793,72818,72847,72850,72871,72873,72886,72960,72966,72968,72969,72971,73014,73018,73018,73020,73021,73023,73031,73040,73049,73056,73061,73063,73064,73066,73102,73104,73105,73107,73112,73120,73129,73440,73462,73728,74649,74752,74862,74880,75075,77824,78894,82944,83526,92160,92728,92736,92766,92768,92777,92880,92909,92912,92916,92928,92982,92992,92995,93008,93017,93027,93047,93053,93071,93760,93823,93952,94026,94031,94087,94095,94111,94176,94177,94179,94179,94208,100343,100352,101106,110592,110878,110928,110930,110948,110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,113817,113821,113822,119141,119145,119149,119154,119163,119170,119173,119179,119210,119213,119362,119364,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,120782,120831,121344,121398,121403,121452,121461,121461,121476,121476,121499,121503,121505,121519,122880,122886,122888,122904,122907,122913,122915,122916,122918,122922,123136,123180,123184,123197,123200,123209,123214,123214,123584,123641,124928,125124,125136,125142,125184,125259,125264,125273,126464,126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,131072,173782,173824,177972,177984,178205,178208,183969,183984,191456,194560,195101,917760,917999];function p(e,t){if(e<t[0])return!1;for(var r,n=0,i=t.length;n+1<i;){if(r=n+(i-n)/2,t[r-=r%2]<=e&&e<=t[r+1])return!0;e<t[r]?i=r:n=r+2}return!1}function f(e,t){return p(e,t>=2?_:1===t?u:s)}e.isUnicodeIdentifierStart=f;var m,g=(m=[],o.forEach((function(e,t){m[e]=t})),m);function y(e){for(var t=new Array,r=0,n=0;r<e.length;){var i=e.charCodeAt(r);switch(r++,i){case 13:10===e.charCodeAt(r)&&r++;case 10:t.push(n),n=r;break;default:i>127&&S(i)&&(t.push(n),n=r)}}return t.push(n),t}function h(t,r,n,i,a){(r<0||r>=t.length)&&(a?r=r<0?0:r>=t.length?t.length-1:r:e.Debug.fail("Bad line number. Line: "+r+", lineStarts.length: "+t.length+" , line map is correct? "+(void 0!==i?e.arraysEqual(t,y(i)):"unknown")));var o=t[r]+n;return a?o>t[r+1]?t[r+1]:"string"==typeof i&&o>i.length?i.length:o:(r<t.length-1?e.Debug.assert(o<t[r+1]):void 0!==i&&e.Debug.assert(o<=i.length),o)}function v(e){return e.lineMap||(e.lineMap=y(e.text))}function b(t,r){var n=e.binarySearch(t,r,e.identity,e.compareValues);return n<0&&(n=~n-1,e.Debug.assert(-1!==n,"position cannot precede the beginning of the file")),{line:n,character:r-t[n]}}function x(e){return D(e)||S(e)}function D(e){return 32===e||9===e||11===e||12===e||160===e||133===e||5760===e||e>=8192&&e<=8203||8239===e||8287===e||12288===e||65279===e}function S(e){return 10===e||13===e||8232===e||8233===e}function T(e){return e>=48&&e<=57}function E(e){return e>=48&&e<=55}e.tokenToString=function(e){return g[e]},e.stringToToken=function(e){return o.get(e)},e.computeLineStarts=y,e.getPositionOfLineAndCharacter=function(e,t,r,n){return e.getPositionOfLineAndCharacter?e.getPositionOfLineAndCharacter(t,r,n):h(v(e),t,r,e.text,n)},e.computePositionOfLineAndCharacter=h,e.getLineStarts=v,e.computeLineAndCharacterOfPosition=b,e.getLineAndCharacterOfPosition=function(e,t){return b(v(e),t)},e.isWhiteSpaceLike=x,e.isWhiteSpaceSingleLine=D,e.isLineBreak=S,e.isOctalDigit=E,e.couldStartTrivia=function(e,t){var r=e.charCodeAt(t);switch(r){case 13:case 10:case 9:case 11:case 12:case 32:case 47:case 60:case 124:case 61:case 62:return!0;case 35:return 0===t;default:return r>127}},e.skipTrivia=function(t,r,n,i){if(void 0===i&&(i=!1),e.positionIsSynthesized(r))return r;for(;;){var a=t.charCodeAt(r);switch(a){case 13:10===t.charCodeAt(r+1)&&r++;case 10:if(r++,n)return r;continue;case 9:case 11:case 12:case 32:r++;continue;case 47:if(i)break;if(47===t.charCodeAt(r+1)){for(r+=2;r<t.length&&!S(t.charCodeAt(r));)r++;continue}if(42===t.charCodeAt(r+1)){for(r+=2;r<t.length;){if(42===t.charCodeAt(r)&&47===t.charCodeAt(r+1)){r+=2;break}r++}continue}break;case 60:case 124:case 61:case 62:if(k(t,r)){r=N(t,r);continue}break;case 35:if(0===r&&F(t,r)){r=P(t,r);continue}break;default:if(a>127&&x(a)){r++;continue}}return r}};var C="<<<<<<<".length;function k(t,r){if(e.Debug.assert(r>=0),0===r||S(t.charCodeAt(r-1))){var n=t.charCodeAt(r);if(r+C<t.length){for(var i=0;i<C;i++)if(t.charCodeAt(r+i)!==n)return!1;return 61===n||32===t.charCodeAt(r+C)}}return!1}function N(t,r,n){n&&n(e.Diagnostics.Merge_conflict_marker_encountered,r,C);var i=t.charCodeAt(r),a=t.length;if(60===i||62===i)for(;r<a&&!S(t.charCodeAt(r));)r++;else for(e.Debug.assert(124===i||61===i);r<a;){var o=t.charCodeAt(r);if((61===o||62===o)&&o!==i&&k(t,r))break;r++}return r}var A=/^#!.*/;function F(t,r){return e.Debug.assert(0===r),A.test(t)}function P(e,t){return t+=A.exec(e)[0].length}function w(e,t,r,n,i,a,o){var s,c,u,l,_=!1,d=n,p=o;if(0===r){d=!0;var f=L(t);f&&(r=f.length)}e:for(;r>=0&&r<t.length;){var m=t.charCodeAt(r);switch(m){case 13:10===t.charCodeAt(r+1)&&r++;case 10:if(r++,n)break e;d=!0,_&&(l=!0);continue;case 9:case 11:case 12:case 32:r++;continue;case 47:var g=t.charCodeAt(r+1),y=!1;if(47===g||42===g){var h=47===g?2:3,v=r;if(r+=2,47===g)for(;r<t.length;){if(S(t.charCodeAt(r))){y=!0;break}r++}else for(;r<t.length;){if(42===t.charCodeAt(r)&&47===t.charCodeAt(r+1)){r+=2;break}r++}if(d){if(_&&(p=i(s,c,u,l,a,p),!e&&p))return p;s=v,c=r,u=h,l=y,_=!0}continue}break e;default:if(m>127&&x(m)){_&&S(m)&&(l=!0),r++;continue}break e}}return _&&(p=i(s,c,u,l,a,p)),p}function I(e,t,r,n,i){return w(!0,e,t,!1,r,n,i)}function O(e,t,r,n,i){return w(!0,e,t,!0,r,n,i)}function M(e,t,r,n,i,a){return a||(a=[]),a.push({kind:r,pos:e,end:t,hasTrailingNewLine:n}),a}function L(e){var t=A.exec(e);if(t)return t[0]}function R(e,t){return e>=65&&e<=90||e>=97&&e<=122||36===e||95===e||e>127&&f(e,t)}function B(e,t){return e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||36===e||95===e||e>127&&function(e,t){return p(e,t>=2?d:1===t?l:c)}(e,t)}e.isShebangTrivia=F,e.scanShebangTrivia=P,e.forEachLeadingCommentRange=function(e,t,r,n){return w(!1,e,t,!1,r,n)},e.forEachTrailingCommentRange=function(e,t,r,n){return w(!1,e,t,!0,r,n)},e.reduceEachLeadingCommentRange=I,e.reduceEachTrailingCommentRange=O,e.getLeadingCommentRanges=function(e,t){return I(e,t,M,void 0,void 0)},e.getTrailingCommentRanges=function(e,t){return O(e,t,M,void 0,void 0)},e.getShebang=L,e.isIdentifierStart=R,e.isIdentifierPart=B,e.isIdentifierText=function(e,t){var r=j(e,0);if(!R(r,t))return!1;for(var n=K(r);n<e.length;n+=K(r))if(!B(r=j(e,n),t))return!1;return!0},e.createScanner=function(t,r,i,o,s,c,u){void 0===i&&(i=0);var l,_,d,p,f,m,g,y=o,h=0;re(y,c,u);var v={getStartPos:function(){return d},getTextPos:function(){return l},getToken:function(){return f},getTokenPos:function(){return p},getTokenText:function(){return y.substring(p,l)},getTokenValue:function(){return m},hasUnicodeEscape:function(){return 0!=(1024&g)},hasExtendedUnicodeEscape:function(){return 0!=(8&g)},hasPrecedingLineBreak:function(){return 0!=(1&g)},isIdentifier:function(){return 75===f||f>111},isReservedWord:function(){return f>=76&&f<=111},isUnterminated:function(){return 0!=(4&g)},getTokenFlags:function(){return g},reScanGreaterToken:function(){if(31===f){if(62===y.charCodeAt(l))return 62===y.charCodeAt(l+1)?61===y.charCodeAt(l+2)?(l+=3,f=71):(l+=2,f=49):61===y.charCodeAt(l+1)?(l+=2,f=70):(l++,f=48);if(61===y.charCodeAt(l))return l++,f=33}return f},reScanSlashToken:function(){if(43===f||67===f){for(var r=p+1,n=!1,i=!1;;){if(r>=_){g|=4,b(e.Diagnostics.Unterminated_regular_expression_literal);break}var a=y.charCodeAt(r);if(S(a)){g|=4,b(e.Diagnostics.Unterminated_regular_expression_literal);break}if(n)n=!1;else{if(47===a&&!i){r++;break}91===a?i=!0:92===a?n=!0:93===a&&(i=!1)}r++}for(;r<_&&B(y.charCodeAt(r),t);)r++;l=r,m=y.substring(p,l),f=13}return f},reScanTemplateToken:function(){return e.Debug.assert(19===f,"'reScanTemplateToken' should only be called on a '}'"),l=p,f=z()},scanJsxIdentifier:function(){if(n(f))for(;l<_;){if(45!==y.charCodeAt(l)){var e=l;if(m+=Y(),l===e)break}else m+="-",l++}return f},scanJsxAttributeValue:function(){switch(d=l,y.charCodeAt(l)){case 34:case 39:return m=J(!0),f=10;default:return Z()}},reScanJsxToken:function(){return l=p=d,f=ee()},reScanLessThanToken:function(){if(47===f)return l=p+1,f=29;return f},reScanQuestionToken:function(){return e.Debug.assert(60===f,"'reScanQuestionToken' should only be called on a '??'"),l=p+1,f=57},scanJsxToken:ee,scanJsDocToken:function(){if(d=p=l,g=0,l>=_)return f=1;var e=j(y,l);switch(l+=K(e),e){case 9:case 11:case 12:case 32:for(;l<_&&D(y.charCodeAt(l));)l++;return f=5;case 64:return f=59;case 10:case 13:return g|=1,f=4;case 42:return f=41;case 123:return f=18;case 125:return f=19;case 91:return f=22;case 93:return f=23;case 60:return f=29;case 62:return f=31;case 61:return f=62;case 44:return f=27;case 46:return f=24;case 96:return f=61;case 92:l--;var r=H();if(r>=0&&R(r,t))return l+=3,g|=8,m=q()+Y(),f=X();var n=G();return n>=0&&R(n,t)?(l+=6,g|=1024,m=String.fromCharCode(n)+Y(),f=X()):(l++,f=0)}if(R(e,t)){for(var i=e;l<_&&B(i=j(y,l),t)||45===y.charCodeAt(l);)l+=K(i);return m=y.substring(p,l),92===i&&(m+=Y()),f=X()}return f=0},scan:Z,getText:function(){return y},setText:re,setScriptTarget:function(e){t=e},setLanguageVariant:function(e){i=e},setOnError:function(e){s=e},setTextPos:ne,setInJSDocType:function(e){h+=e?1:-1},tryScan:function(e){return te(e,!1)},lookAhead:function(e){return te(e,!0)},scanRange:function(e,t,r){var n=_,i=l,a=d,o=p,s=f,c=m,u=g;re(y,e,t);var h=r();return _=n,l=i,d=a,p=o,f=s,m=c,g=u,h}};return e.Debug.isDebugging&&Object.defineProperty(v,"__debugShowCurrentPositionInText",{get:function(){var e=v.getText();return e.slice(0,v.getStartPos())+"║"+e.slice(v.getStartPos())}}),v;function b(e,t,r){if(void 0===t&&(t=l),s){var n=l;l=t,s(e,r||0),l=n}}function C(){for(var t=l,r=!1,n=!1,i="";;){var a=y.charCodeAt(l);if(95!==a){if(!T(a))break;r=!0,n=!1,l++}else g|=512,r?(r=!1,n=!0,i+=y.substring(t,l)):b(n?e.Diagnostics.Multiple_consecutive_numeric_separators_are_not_permitted:e.Diagnostics.Numeric_separators_are_not_allowed_here,l,1),t=++l}return 95===y.charCodeAt(l-1)&&b(e.Diagnostics.Numeric_separators_are_not_allowed_here,l-1,1),i+y.substring(t,l)}function A(){var t,r,n=l,i=C();46===y.charCodeAt(l)&&(l++,t=C());var a,o=l;if(69===y.charCodeAt(l)||101===y.charCodeAt(l)){l++,g|=16,43!==y.charCodeAt(l)&&45!==y.charCodeAt(l)||l++;var s=l,c=C();c?(r=y.substring(o,s)+c,o=l):b(e.Diagnostics.Digit_expected)}if(512&g?(a=i,t&&(a+="."+t),r&&(a+=r)):a=y.substring(n,o),void 0!==t||16&g)return w(n,void 0===t&&!!(16&g)),{type:8,value:""+ +a};m=a;var u=$();return w(n),{type:u,value:m}}function w(r,n){if(R(j(y,l),t)){var i=l,a=Y().length;1===a&&"n"===y[i]?b(n?e.Diagnostics.A_bigint_literal_cannot_use_exponential_notation:e.Diagnostics.A_bigint_literal_must_be_an_integer,r,i-r+1):(b(e.Diagnostics.An_identifier_or_keyword_cannot_immediately_follow_a_numeric_literal,i,a),l=i)}}function I(){for(var e=l;E(y.charCodeAt(l));)l++;return+y.substring(e,l)}function O(e,t){var r=L(e,!1,t);return r?parseInt(r,16):-1}function M(e,t){return L(e,!0,t)}function L(t,r,n){for(var i=[],a=!1,o=!1;i.length<t||r;){var s=y.charCodeAt(l);if(n&&95===s)g|=512,a?(a=!1,o=!0):b(o?e.Diagnostics.Multiple_consecutive_numeric_separators_are_not_permitted:e.Diagnostics.Numeric_separators_are_not_allowed_here,l,1),l++;else{if(a=n,s>=65&&s<=70)s+=32;else if(!(s>=48&&s<=57||s>=97&&s<=102))break;i.push(s),l++,o=!1}}return i.length<t&&(i=[]),95===y.charCodeAt(l-1)&&b(e.Diagnostics.Numeric_separators_are_not_allowed_here,l-1,1),String.fromCharCode.apply(String,i)}function J(t){void 0===t&&(t=!1);for(var r=y.charCodeAt(l),n="",i=++l;;){if(l>=_){n+=y.substring(i,l),g|=4,b(e.Diagnostics.Unterminated_string_literal);break}var a=y.charCodeAt(l);if(a===r){n+=y.substring(i,l),l++;break}if(92!==a||t){if(S(a)&&!t){n+=y.substring(i,l),g|=4,b(e.Diagnostics.Unterminated_string_literal);break}l++}else n+=y.substring(i,l),n+=U(),i=l}return n}function z(){for(var t,r=96===y.charCodeAt(l),n=++l,i="";;){if(l>=_){i+=y.substring(n,l),g|=4,b(e.Diagnostics.Unterminated_template_literal),t=r?14:17;break}var a=y.charCodeAt(l);if(96===a){i+=y.substring(n,l),l++,t=r?14:17;break}if(36===a&&l+1<_&&123===y.charCodeAt(l+1)){i+=y.substring(n,l),l+=2,t=r?15:16;break}92!==a?13!==a?l++:(i+=y.substring(n,l),++l<_&&10===y.charCodeAt(l)&&l++,i+="\n",n=l):(i+=y.substring(n,l),i+=U(),n=l)}return e.Debug.assert(void 0!==t),m=i,t}function U(){if(++l>=_)return b(e.Diagnostics.Unexpected_end_of_text),"";var t=y.charCodeAt(l);switch(l++,t){case 48:return"\0";case 98:return"\b";case 116:return"\t";case 110:return"\n";case 118:return"\v";case 102:return"\f";case 114:return"\r";case 39:return"'";case 34:return'"';case 117:return l<_&&123===y.charCodeAt(l)?(g|=8,l++,q()):(g|=1024,V(4));case 120:return V(2);case 13:l<_&&10===y.charCodeAt(l)&&l++;case 10:case 8232:case 8233:return"";default:return String.fromCharCode(t)}}function V(t){var r=O(t,!1);return r>=0?String.fromCharCode(r):(b(e.Diagnostics.Hexadecimal_digit_expected),"")}function q(){var t=M(1,!1),r=t?parseInt(t,16):-1,n=!1;return r<0?(b(e.Diagnostics.Hexadecimal_digit_expected),n=!0):r>1114111&&(b(e.Diagnostics.An_extended_Unicode_escape_value_must_be_between_0x0_and_0x10FFFF_inclusive),n=!0),l>=_?(b(e.Diagnostics.Unexpected_end_of_text),n=!0):125===y.charCodeAt(l)?l++:(b(e.Diagnostics.Unterminated_Unicode_escape_sequence),n=!0),n?"":W(r)}function W(t){if(e.Debug.assert(0<=t&&t<=1114111),t<=65535)return String.fromCharCode(t);var r=Math.floor((t-65536)/1024)+55296,n=(t-65536)%1024+56320;return String.fromCharCode(r,n)}function G(){if(l+5<_&&117===y.charCodeAt(l+1)){var e=l;l+=2;var t=O(4,!1);return l=e,t}return-1}function H(){if(t>=2&&117===j(y,l+1)&&123===j(y,l+2)){var e=l;l+=3;var r=M(1,!1),n=r?parseInt(r,16):-1;return l=e,n}return-1}function Y(){for(var e="",r=l;l<_;){var n=j(y,l);if(B(n,t))l+=K(n);else{if(92!==n)break;if((n=H())>=0&&B(n,t)){l+=3,g|=8,e+=q(),r=l;continue}if(!((n=G())>=0&&B(n,t)))break;g|=1024,e+=y.substring(r,l),e+=W(n),r=l+=6}}return e+=y.substring(r,l)}function X(){var e=m.length;if(e>=2&&e<=11){var t=m.charCodeAt(0);if(t>=97&&t<=122){var r=a.get(m);if(void 0!==r)return f=r}}return f=75}function Q(t){for(var r="",n=!1,i=!1;;){var a=y.charCodeAt(l);if(95!==a){if(n=!0,!T(a)||a-48>=t)break;r+=y[l],l++,i=!1}else g|=512,n?(n=!1,i=!0):b(i?e.Diagnostics.Multiple_consecutive_numeric_separators_are_not_permitted:e.Diagnostics.Numeric_separators_are_not_allowed_here,l,1),l++}return 95===y.charCodeAt(l-1)&&b(e.Diagnostics.Numeric_separators_are_not_allowed_here,l-1,1),r}function $(){if(110===y.charCodeAt(l))return m+="n",384&g&&(m=e.parsePseudoBigInt(m)+"n"),l++,9;var t=128&g?parseInt(m.slice(2),2):256&g?parseInt(m.slice(2),8):+m;return m=""+t,8}function Z(){var n;d=l,g=0;for(var a=!1;;){if(p=l,l>=_)return f=1;var o=j(y,l);if(35===o&&0===l&&F(y,l)){if(l=P(y,l),r)continue;return f=6}switch(o){case 10:case 13:if(g|=1,r){l++;continue}return 13===o&&l+1<_&&10===y.charCodeAt(l+1)?l+=2:l++,f=4;case 9:case 11:case 12:case 32:case 160:case 5760:case 8192:case 8193:case 8194:case 8195:case 8196:case 8197:case 8198:case 8199:case 8200:case 8201:case 8202:case 8203:case 8239:case 8287:case 12288:case 65279:if(r){l++;continue}for(;l<_&&D(y.charCodeAt(l));)l++;return f=5;case 33:return 61===y.charCodeAt(l+1)?61===y.charCodeAt(l+2)?(l+=3,f=37):(l+=2,f=35):(l++,f=53);case 34:case 39:return m=J(),f=10;case 96:return f=z();case 37:return 61===y.charCodeAt(l+1)?(l+=2,f=68):(l++,f=44);case 38:return 38===y.charCodeAt(l+1)?(l+=2,f=55):61===y.charCodeAt(l+1)?(l+=2,f=72):(l++,f=50);case 40:return l++,f=20;case 41:return l++,f=21;case 42:if(61===y.charCodeAt(l+1))return l+=2,f=65;if(42===y.charCodeAt(l+1))return 61===y.charCodeAt(l+2)?(l+=3,f=66):(l+=2,f=42);if(l++,h&&!a&&1&g){a=!0;continue}return f=41;case 43:return 43===y.charCodeAt(l+1)?(l+=2,f=45):61===y.charCodeAt(l+1)?(l+=2,f=63):(l++,f=39);case 44:return l++,f=27;case 45:return 45===y.charCodeAt(l+1)?(l+=2,f=46):61===y.charCodeAt(l+1)?(l+=2,f=64):(l++,f=40);case 46:return T(y.charCodeAt(l+1))?(m=A().value,f=8):46===y.charCodeAt(l+1)&&46===y.charCodeAt(l+2)?(l+=3,f=25):(l++,f=24);case 47:if(47===y.charCodeAt(l+1)){for(l+=2;l<_&&!S(y.charCodeAt(l));)l++;if(r)continue;return f=2}if(42===y.charCodeAt(l+1)){l+=2,42===y.charCodeAt(l)&&47!==y.charCodeAt(l+1)&&(g|=2);for(var s=!1;l<_;){var c=y.charCodeAt(l);if(42===c&&47===y.charCodeAt(l+1)){l+=2,s=!0;break}S(c)&&(g|=1),l++}if(s||b(e.Diagnostics.Asterisk_Slash_expected),r)continue;return s||(g|=4),f=3}return 61===y.charCodeAt(l+1)?(l+=2,f=67):(l++,f=43);case 48:if(l+2<_&&(88===y.charCodeAt(l+1)||120===y.charCodeAt(l+1)))return l+=2,(m=M(1,!0))||(b(e.Diagnostics.Hexadecimal_digit_expected),m="0"),m="0x"+m,g|=64,f=$();if(l+2<_&&(66===y.charCodeAt(l+1)||98===y.charCodeAt(l+1)))return l+=2,(m=Q(2))||(b(e.Diagnostics.Binary_digit_expected),m="0"),m="0b"+m,g|=128,f=$();if(l+2<_&&(79===y.charCodeAt(l+1)||111===y.charCodeAt(l+1)))return l+=2,(m=Q(8))||(b(e.Diagnostics.Octal_digit_expected),m="0"),m="0o"+m,g|=256,f=$();if(l+1<_&&E(y.charCodeAt(l+1)))return m=""+I(),g|=32,f=8;case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return n=A(),f=n.type,m=n.value,f;case 58:return l++,f=58;case 59:return l++,f=26;case 60:if(k(y,l)){if(l=N(y,l,b),r)continue;return f=7}return 60===y.charCodeAt(l+1)?61===y.charCodeAt(l+2)?(l+=3,f=69):(l+=2,f=47):61===y.charCodeAt(l+1)?(l+=2,f=32):1===i&&47===y.charCodeAt(l+1)&&42!==y.charCodeAt(l+2)?(l+=2,f=30):(l++,f=29);case 61:if(k(y,l)){if(l=N(y,l,b),r)continue;return f=7}return 61===y.charCodeAt(l+1)?61===y.charCodeAt(l+2)?(l+=3,f=36):(l+=2,f=34):62===y.charCodeAt(l+1)?(l+=2,f=38):(l++,f=62);case 62:if(k(y,l)){if(l=N(y,l,b),r)continue;return f=7}return l++,f=31;case 63:return l++,46!==y.charCodeAt(l)||T(y.charCodeAt(l+1))?63===y.charCodeAt(l)?(l++,f=60):f=57:(l++,f=28);case 91:return l++,f=22;case 93:return l++,f=23;case 94:return 61===y.charCodeAt(l+1)?(l+=2,f=74):(l++,f=52);case 123:return l++,f=18;case 124:if(k(y,l)){if(l=N(y,l,b),r)continue;return f=7}return 124===y.charCodeAt(l+1)?(l+=2,f=56):61===y.charCodeAt(l+1)?(l+=2,f=73):(l++,f=51);case 125:return l++,f=19;case 126:return l++,f=54;case 64:return l++,f=59;case 92:var u=H();if(u>=0&&R(u,t))return l+=3,g|=8,m=q()+Y(),f=X();var v=G();return v>=0&&R(v,t)?(l+=6,g|=1024,m=String.fromCharCode(v)+Y(),f=X()):(b(e.Diagnostics.Invalid_character),l++,f=0);default:if(R(o,t)){for(l+=K(o);l<_&&B(o=j(y,l),t);)l+=K(o);return m=y.substring(p,l),92===o&&(m+=Y()),f=X()}if(D(o)){l+=K(o);continue}if(S(o)){g|=1,l+=K(o);continue}return b(e.Diagnostics.Invalid_character),l+=K(o),f=0}}}function ee(){if(d=p=l,l>=_)return f=1;var e=y.charCodeAt(l);if(60===e)return 47===y.charCodeAt(l+1)?(l+=2,f=30):(l++,f=29);if(123===e)return l++,f=18;for(var t=0;l<_&&123!==(e=y.charCodeAt(l));){if(60===e){if(k(y,l))return l=N(y,l,b),f=7;break}S(e)&&0===t?t=-1:x(e)||(t=l),l++}return m=y.substring(d,l),-1===t?12:11}function te(e,t){var r=l,n=d,i=p,a=f,o=m,s=g,c=e();return c&&!t||(l=r,d=n,p=i,f=a,m=o,g=s),c}function re(e,t,r){y=e||"",_=void 0===r?y.length:t+r,ne(t||0)}function ne(t){e.Debug.assert(t>=0),l=t,d=t,p=t,f=0,m=void 0,g=0}};var j=String.prototype.codePointAt?function(e,t){return e.codePointAt(t)}:function(e,t){var r=e.length;if(!(t<0||t>=r)){var n=e.charCodeAt(t);if(n>=55296&&n<=56319&&r>t+1){var i=e.charCodeAt(t+1);if(i>=56320&&i<=57343)return 1024*(n-55296)+i-56320+65536}return n}};function K(e){return e>=65536?2:1}}(s||(s={})),function(e){e.isExternalModuleNameRelative=function(t){return e.pathIsRelative(t)||e.isRootedDiskPath(t)},e.sortAndDeduplicateDiagnostics=function(t){return e.sortAndDeduplicate(t,e.compareDiagnostics)}}(s||(s={})),function(e){e.resolvingEmptyArray=[],e.emptyMap=e.createMap(),e.emptyUnderscoreEscapedMap=e.emptyMap,e.externalHelpersModuleNameText="tslib",e.defaultMaximumTruncationLength=160,e.getDeclarationOfKind=function(e,t){var r=e.declarations;if(r)for(var n=0,i=r;n<i.length;n++){var a=i[n];if(a.kind===t)return a}},e.createUnderscoreEscapedMap=function(){return new e.Map},e.hasEntries=function(e){return!!e&&!!e.size},e.createSymbolTable=function(t){var r=e.createMap();if(t)for(var n=0,i=t;n<i.length;n++){var a=i[n];r.set(a.escapedName,a)}return r};var n,i,a=(n="",{getText:function(){return n},write:i=function(e){return n+=e},rawWrite:i,writeKeyword:i,writeOperator:i,writePunctuation:i,writeSpace:i,writeStringLiteral:i,writeLiteral:i,writeParameter:i,writeProperty:i,writeSymbol:function(e,t){return i(e)},writeTrailingSemicolon:i,writeComment:i,getTextPos:function(){return n.length},getLine:function(){return 0},getColumn:function(){return 0},getIndent:function(){return 0},isAtStartOfLine:function(){return!1},hasTrailingComment:function(){return!1},hasTrailingWhitespace:function(){return!!n.length&&e.isWhiteSpaceLike(n.charCodeAt(n.length-1))},writeLine:function(){return n+=" "},increaseIndent:e.noop,decreaseIndent:e.noop,clear:function(){return n=""},trackSymbol:e.noop,reportInaccessibleThisError:e.noop,reportInaccessibleUniqueSymbolError:e.noop,reportPrivateInBaseOfClassExpression:e.noop});function o(t,r){return e.moduleResolutionOptionDeclarations.some((function(n){return!e.isJsonEqual(e.getCompilerOptionValue(t,n),e.getCompilerOptionValue(r,n))}))}function s(e,t){for(;e;){var r=t(e);if("quit"===r)return;if(r)return e;e=e.parent}}function c(e,t){e.forEach((function(e,r){t.set(r,e)}))}function u(e){return e.end-e.pos}function l(t){return function(t){if(!(524288&t.flags)){(0!=(65536&t.flags)||e.forEachChild(t,l))&&(t.flags|=262144),t.flags|=524288}}(t),0!=(262144&t.flags)}function _(e){for(;e&&288!==e.kind;)e=e.parent;return e}function d(t,r){e.Debug.assert(t>=0);var n=e.getLineStarts(r),i=t,a=r.text;if(i+1===n.length)return a.length-1;var o=n[i],s=n[i+1]-1;for(e.Debug.assert(e.isLineBreak(a.charCodeAt(s)));o<=s&&e.isLineBreak(a.charCodeAt(s));)s--;return s}function p(e){return void 0===e||e.pos===e.end&&e.pos>=0&&1!==e.kind}function m(e){return!p(e)}function g(e,r,n){if(void 0===r||0===r.length)return e;for(var i=0;i<e.length&&n(e[i]);++i);return e.splice.apply(e,t([i,0],r)),e}function y(e,t,r){if(void 0===t)return e;for(var n=0;n<e.length&&r(e[n]);++n);return e.splice(n,0,t),e}function h(e){return U(e)||!!(1048576&E(e))}function v(e,t){return 42===e.charCodeAt(t+1)&&33===e.charCodeAt(t+2)}function b(t,r,n){return p(t)?t.pos:e.isJSDocNode(t)?e.skipTrivia((r||_(t)).text,t.pos,!1,!0):n&&e.hasJSDocNodes(t)?b(t.jsDoc[0]):317===t.kind&&t._children.length>0?b(t._children[0],r,n):e.skipTrivia((r||_(t)).text,t.pos)}function x(e,t,r){return void 0===r&&(r=!1),D(e.text,t,r)}function D(t,r,n){if(void 0===n&&(n=!1),p(r))return"";var i=t.substring(n?r.pos:e.skipTrivia(t,r.pos),r.end);return function e(t){return 292===t.kind||t.parent&&e(t.parent)}(r)&&(i=i.replace(/(^|\r?\n|\r)\s*\*\s*/g,"$1")),i}function S(e,t){return void 0===t&&(t=!1),x(_(e),e,t)}function T(e){return e.pos}function E(e){var t=e.emitNode;return t&&t.flags||0}function C(e){var t=lt(e);return 241===t.kind&&278===t.parent.kind}function k(t){return e.isModuleDeclaration(t)&&(10===t.name.kind||N(t))}function N(e){return!!(1024&e.flags)}function A(e){return k(e)&&F(e)}function F(t){switch(t.parent.kind){case 288:return e.isExternalModule(t.parent);case 249:return k(t.parent.parent)&&e.isSourceFile(t.parent.parent.parent)&&!e.isExternalModule(t.parent.parent.parent)}return!1}function P(t,r){switch(t.kind){case 288:case 250:case 278:case 248:case 229:case 230:case 231:case 161:case 160:case 162:case 163:case 243:case 200:case 201:return!0;case 222:return!e.isFunctionLike(r)}return!1}function w(t){switch(t.kind){case 164:case 165:case 159:case 166:case 169:case 170:case 298:case 244:case 213:case 245:case 246:case 314:case 243:case 160:case 161:case 162:case 163:case 200:case 201:return!0;default:return e.assertType(t),!1}}function I(e){switch(e.kind){case 253:case 252:return!0;default:return!1}}function O(e){return e&&0!==u(e)?S(e):"(Missing)"}function M(t){switch(t.kind){case 75:return t.escapedText;case 10:case 8:case 14:return e.escapeLeadingUnderscores(t.text);case 153:return et(t.expression)?e.escapeLeadingUnderscores(t.expression.text):e.Debug.fail("Text of property name cannot be read from non-literal-valued ComputedPropertyNames");default:return e.Debug.assertNever(t)}}function L(t,r,n,i,a,o,s){var c=B(t,r);return e.createFileDiagnostic(t,c.start,c.length,n,i,a,o,s)}function R(t,r){var n=e.createScanner(t.languageVersion,!0,t.languageVariant,t.text,void 0,r);n.scan();var i=n.getTokenPos();return e.createTextSpanFromBounds(i,n.getTextPos())}function B(t,r){var n=r;switch(r.kind){case 288:var i=e.skipTrivia(t.text,0,!1);return i===t.text.length?e.createTextSpan(0,0):R(t,i);case 241:case 190:case 244:case 213:case 245:case 248:case 247:case 282:case 243:case 200:case 160:case 162:case 163:case 246:case 158:case 157:n=r.name;break;case 201:return function(t,r){var n=e.skipTrivia(t.text,r.pos);if(r.body&&222===r.body.kind){var i=e.getLineAndCharacterOfPosition(t,r.body.pos).line;if(i<e.getLineAndCharacterOfPosition(t,r.body.end).line)return e.createTextSpan(n,d(i,t)-n+1)}return e.createTextSpanFromBounds(n,r.end)}(t,r);case 275:case 276:var a=e.skipTrivia(t.text,r.pos),o=r.statements.length>0?r.statements[0].pos:r.end;return e.createTextSpanFromBounds(a,o)}if(void 0===n)return R(t,r.pos);e.Debug.assert(!e.isJSDoc(n));var s=p(n),c=s||e.isJsxText(r)?n.pos:e.skipTrivia(t.text,n.pos);return s?(e.Debug.assert(c===n.pos,"This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809"),e.Debug.assert(c===n.end,"This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809")):(e.Debug.assert(c>=n.pos,"This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809"),e.Debug.assert(c<=n.end,"This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809")),e.createTextSpanFromBounds(c,n.end)}function j(e){return 6===e.scriptKind}function K(t){return!!(2&e.getCombinedNodeFlags(t))}function J(e){return 195===e.kind&&95===e.expression.kind}function z(t){return e.isImportTypeNode(t)&&e.isLiteralTypeNode(t.argument)&&e.isStringLiteral(t.argument.literal)}function U(e){return 225===e.kind&&10===e.expression.kind}e.changesAffectModuleResolution=function(e,t){return e.configFilePath!==t.configFilePath||o(e,t)},e.optionsHaveModuleResolutionChanges=o,e.findAncestor=s,e.forEachAncestor=function(t,r){for(;;){var n=r(t);if("quit"===n)return;if(void 0!==n)return n;if(e.isSourceFile(t))return;t=t.parent}},e.forEachEntry=function(e,t){for(var r=e.entries(),n=r.next();!n.done;n=r.next()){var i=n.value,a=i[0],o=t(i[1],a);if(o)return o}},e.forEachKey=function(e,t){for(var r=e.keys(),n=r.next();!n.done;n=r.next()){var i=t(n.value);if(i)return i}},e.copyEntries=c,e.arrayToSet=function(t,r){return e.arrayToMap(t,r||function(e){return e},e.returnTrue)},e.cloneMap=function(t){var r=e.createMap();return c(t,r),r},e.usingSingleLineStringWriter=function(e){var t=a.getText();try{return e(a),a.getText()}finally{a.clear(),a.writeKeyword(t)}},e.getFullWidth=u,e.getResolvedModule=function(e,t){return e&&e.resolvedModules&&e.resolvedModules.get(t)},e.setResolvedModule=function(t,r,n){t.resolvedModules||(t.resolvedModules=e.createMap()),t.resolvedModules.set(r,n)},e.setResolvedTypeReferenceDirective=function(t,r,n){t.resolvedTypeReferenceDirectiveNames||(t.resolvedTypeReferenceDirectiveNames=e.createMap()),t.resolvedTypeReferenceDirectiveNames.set(r,n)},e.projectReferenceIsEqualTo=function(e,t){return e.path===t.path&&!e.prepend==!t.prepend&&!e.circular==!t.circular},e.moduleResolutionIsEqualTo=function(e,t){return e.isExternalLibraryImport===t.isExternalLibraryImport&&e.extension===t.extension&&e.resolvedFileName===t.resolvedFileName&&e.originalPath===t.originalPath&&(r=e.packageId,n=t.packageId,r===n||!!r&&!!n&&r.name===n.name&&r.subModuleName===n.subModuleName&&r.version===n.version);var r,n},e.packageIdToString=function(e){var t=e.name,r=e.subModuleName;return(r?t+"/"+r:t)+"@"+e.version},e.typeDirectiveIsEqualTo=function(e,t){return e.resolvedFileName===t.resolvedFileName&&e.primary===t.primary},e.hasChangesInResolutions=function(t,r,n,i){e.Debug.assert(t.length===r.length);for(var a=0;a<t.length;a++){var o=r[a],s=n&&n.get(t[a]);if(s?!o||!i(s,o):o)return!0}return!1},e.containsParseError=l,e.getSourceFileOfNode=_,e.isStatementWithLocals=function(e){switch(e.kind){case 222:case 250:case 229:case 230:case 231:return!0}return!1},e.getStartPositionOfLine=function(t,r){return e.Debug.assert(t>=0),e.getLineStarts(r)[t]},e.nodePosToString=function(t){var r=_(t),n=e.getLineAndCharacterOfPosition(r,t.pos);return r.fileName+"("+(n.line+1)+","+(n.character+1)+")"},e.getEndLinePosition=d,e.isFileLevelUniqueName=function(e,t,r){return!(r&&r(t)||e.identifiers.has(t))},e.nodeIsMissing=p,e.nodeIsPresent=m,e.insertStatementsAfterStandardPrologue=function(e,t){return g(e,t,U)},e.insertStatementsAfterCustomPrologue=function(e,t){return g(e,t,h)},e.insertStatementAfterStandardPrologue=function(e,t){return y(e,t,U)},e.insertStatementAfterCustomPrologue=function(e,t){return y(e,t,h)},e.isRecognizedTripleSlashComment=function(t,r,n){if(47===t.charCodeAt(r+1)&&r+2<n&&47===t.charCodeAt(r+2)){var i=t.substring(r,n);return!!(i.match(e.fullTripleSlashReferencePathRegEx)||i.match(e.fullTripleSlashAMDReferencePathRegEx)||i.match(V)||i.match(q))}return!1},e.isPinnedComment=v,e.getTokenPosOfNode=b,e.getNonDecoratorTokenPosOfNode=function(t,r){return p(t)||!t.decorators?b(t,r):e.skipTrivia((r||_(t)).text,t.decorators.end)},e.getSourceTextOfNodeFromSourceFile=x,e.getTextOfNodeFromSourceText=D,e.getTextOfNode=S,e.indexOfNode=function(t,r){return e.binarySearch(t,r,T,e.compareValues)},e.getEmitFlags=E,e.getLiteralText=function(t,r,n){if(!_t(t)&&t.parent&&!(e.isNumericLiteral(t)&&512&t.numericLiteralFlags||e.isBigIntLiteral(t)))return x(r,t);var i=n||16777216&E(t)?xt:Et;switch(t.kind){case 10:return t.singleQuote?"'"+i(t.text,39)+"'":'"'+i(t.text,34)+'"';case 14:case 15:case 16:case 17:var a=t.rawText||function(e){return e.replace(gt,"\\${")}(i(t.text,96));switch(t.kind){case 14:return"`"+a+"`";case 15:return"`"+a+"${";case 16:return"}"+a+"${";case 17:return"}"+a+"`"}break;case 8:case 9:case 13:return t.text}return e.Debug.fail("Literal kind '"+t.kind+"' not accounted for.")},e.getTextOfConstantValue=function(t){return e.isString(t)?'"'+Et(t)+'"':""+t},e.makeIdentifierFromModuleName=function(t){return e.getBaseFileName(t).replace(/^(\d)/,"_$1").replace(/\W/g,"_")},e.isBlockOrCatchScoped=function(t){return 0!=(3&e.getCombinedNodeFlags(t))||C(t)},e.isCatchClauseVariableDeclarationOrBindingElement=C,e.isAmbientModule=k,e.isModuleWithStringLiteralName=function(t){return e.isModuleDeclaration(t)&&10===t.name.kind},e.isNonGlobalAmbientModule=function(t){return e.isModuleDeclaration(t)&&e.isStringLiteral(t.name)},e.isEffectiveModuleDeclaration=function(t){return e.isModuleDeclaration(t)||e.isIdentifier(t)},e.isShorthandAmbientModuleSymbol=function(e){return function(e){return e&&248===e.kind&&!e.body}(e.valueDeclaration)},e.isBlockScopedContainerTopLevel=function(t){return 288===t.kind||248===t.kind||e.isFunctionLike(t)},e.isGlobalScopeAugmentation=N,e.isExternalModuleAugmentation=A,e.isModuleAugmentationExternal=F,e.getNonAugmentationDeclaration=function(t){return e.find(t.declarations,(function(t){return!(A(t)||e.isModuleDeclaration(t)&&N(t))}))},e.isEffectiveExternalModule=function(t,r){return e.isExternalModule(t)||r.isolatedModules||e.getEmitModuleKind(r)===e.ModuleKind.CommonJS&&!!t.commonJsModuleIndicator},e.isEffectiveStrictModeSourceFile=function(t,r){switch(t.scriptKind){case 1:case 3:case 2:case 4:break;default:return!1}return!t.isDeclarationFile&&(!!e.getStrictOptionValue(r,"alwaysStrict")||(!!e.startsWithUseStrict(t.statements)||!(!e.isExternalModule(t)&&!r.isolatedModules)&&(e.getEmitModuleKind(r)>=e.ModuleKind.ES2015||!r.noImplicitUseStrict)))},e.isBlockScope=P,e.isDeclarationWithTypeParameters=function(t){switch(t.kind){case 308:case 315:case 303:return!0;default:return e.assertType(t),w(t)}},e.isDeclarationWithTypeParameterChildren=w,e.isAnyImportSyntax=I,e.isLateVisibilityPaintedStatement=function(e){switch(e.kind){case 253:case 252:case 224:case 244:case 243:case 248:case 246:case 245:case 247:return!0;default:return!1}},e.isAnyImportOrReExport=function(t){return I(t)||e.isExportDeclaration(t)},e.getEnclosingBlockScopeContainer=function(e){return s(e.parent,(function(e){return P(e,e.parent)}))},e.declarationNameToString=O,e.getNameFromIndexInfo=function(e){return e.declaration?O(e.declaration.parameters[0].name):void 0},e.getTextOfPropertyName=M,e.entityNameToString=function t(r){switch(r.kind){case 75:return 0===u(r)?e.idText(r):S(r);case 152:return t(r.left)+"."+t(r.right);case 193:return t(r.expression)+"."+t(r.name);default:throw e.Debug.assertNever(r)}},e.createDiagnosticForNode=function(e,t,r,n,i,a){return L(_(e),e,t,r,n,i,a)},e.createDiagnosticForNodeArray=function(t,r,n,i,a,o,s){var c=e.skipTrivia(t.text,r.pos);return e.createFileDiagnostic(t,c,r.end-c,n,i,a,o,s)},e.createDiagnosticForNodeInSourceFile=L,e.createDiagnosticForNodeFromMessageChain=function(e,t,r){var n=_(e),i=B(n,e);return{file:n,start:i.start,length:i.length,code:t.code,category:t.category,messageText:t.next?t:t.messageText,relatedInformation:r}},e.getSpanOfTokenAtPosition=R,e.getErrorSpanForNode=B,e.isExternalOrCommonJsModule=function(e){return void 0!==(e.externalModuleIndicator||e.commonJsModuleIndicator)},e.isJsonSourceFile=j,e.isEnumConst=function(t){return!!(2048&e.getCombinedModifierFlags(t))},e.isDeclarationReadonly=function(t){return!(!(64&e.getCombinedModifierFlags(t))||e.isParameterPropertyDeclaration(t,t.parent))},e.isVarConst=K,e.isLet=function(t){return!!(1&e.getCombinedNodeFlags(t))},e.isSuperCall=function(e){return 195===e.kind&&101===e.expression.kind},e.isImportCall=J,e.isImportMeta=function(t){return e.isMetaProperty(t)&&95===t.keywordToken&&"meta"===t.name.escapedText},e.isLiteralImportTypeNode=z,e.isPrologueDirective=U,e.getLeadingCommentRangesOfNode=function(t,r){return 11!==t.kind?e.getLeadingCommentRanges(r.text,t.pos):void 0},e.getJSDocCommentRanges=function(t,r){var n=155===t.kind||154===t.kind||200===t.kind||201===t.kind||199===t.kind?e.concatenate(e.getTrailingCommentRanges(r,t.pos),e.getLeadingCommentRanges(r,t.pos)):e.getLeadingCommentRanges(r,t.pos);return e.filter(n,(function(e){return 42===r.charCodeAt(e.pos+1)&&42===r.charCodeAt(e.pos+2)&&47!==r.charCodeAt(e.pos+3)}))},e.fullTripleSlashReferencePathRegEx=/^(\/\/\/\s*<reference\s+path\s*=\s*)('|")(.+?)\2.*?\/>/;var V=/^(\/\/\/\s*<reference\s+types\s*=\s*)('|")(.+?)\2.*?\/>/;e.fullTripleSlashAMDReferencePathRegEx=/^(\/\/\/\s*<amd-dependency\s+path\s*=\s*)('|")(.+?)\2.*?\/>/;var q=/^(\/\/\/\s*<reference\s+no-default-lib\s*=\s*)('|")(.+?)\2\s*\/>/;function W(t){if(167<=t.kind&&t.kind<=187)return!0;switch(t.kind){case 124:case 147:case 139:case 150:case 142:case 127:case 143:case 140:case 145:case 136:return!0;case 109:return 204!==t.parent.kind;case 215:return!ir(t);case 154:return 185===t.parent.kind||180===t.parent.kind;case 75:152===t.parent.kind&&t.parent.right===t?t=t.parent:193===t.parent.kind&&t.parent.name===t&&(t=t.parent),e.Debug.assert(75===t.kind||152===t.kind||193===t.kind,"'node' was expected to be a qualified name, identifier or property access in 'isPartOfTypeNode'.");case 152:case 193:case 103:var r=t.parent;if(171===r.kind)return!1;if(187===r.kind)return!r.isTypeOf;if(167<=r.kind&&r.kind<=187)return!0;switch(r.kind){case 215:return!ir(r);case 154:case 314:return t===r.constraint;case 158:case 157:case 155:case 241:return t===r.type;case 243:case 200:case 201:case 161:case 160:case 159:case 162:case 163:return t===r.type;case 164:case 165:case 166:case 198:return t===r.type;case 195:case 196:return e.contains(r.typeArguments,t);case 197:return!1}}return!1}function G(e){if(e)switch(e.kind){case 190:case 282:case 155:case 279:case 158:case 157:case 280:case 241:return!0}return!1}function H(e){return 242===e.parent.kind&&224===e.parent.parent.kind}function Y(e,t,r){return e.properties.filter((function(e){if(279===e.kind){var n=M(e.name);return t===n||!!r&&r===n}return!1}))}function X(t){if(t&&t.statements.length){var r=t.statements[0].expression;return e.tryCast(r,e.isObjectLiteralExpression)}}function Q(t,r){var n=X(t);return n?Y(n,r):e.emptyArray}function $(t,r){for(e.Debug.assert(288!==t.kind);;){if(!(t=t.parent))return e.Debug.fail();switch(t.kind){case 153:if(e.isClassLike(t.parent.parent))return t;t=t.parent;break;case 156:155===t.parent.kind&&e.isClassElement(t.parent.parent)?t=t.parent.parent:e.isClassElement(t.parent)&&(t=t.parent);break;case 201:if(!r)continue;case 243:case 200:case 248:case 158:case 157:case 160:case 159:case 161:case 162:case 163:case 164:case 165:case 166:case 247:case 288:return t}}}function Z(e){var t=e.kind;return(193===t||194===t)&&101===e.expression.kind}function ee(e,t,r){switch(e.kind){case 244:return!0;case 158:return 244===t.kind;case 162:case 163:case 160:return void 0!==e.body&&244===t.kind;case 155:return void 0!==t.body&&(161===t.kind||160===t.kind||163===t.kind)&&244===r.kind}return!1}function te(e,t,r){return void 0!==e.decorators&&ee(e,t,r)}function re(e,t,r){return te(e,t,r)||ne(e,t)}function ne(t,r){switch(t.kind){case 244:return e.some(t.members,(function(e){return re(e,t,r)}));case 160:case 163:return e.some(t.parameters,(function(e){return te(e,t,r)}));default:return!1}}function ie(e){var t=e.parent;return(266===t.kind||265===t.kind||267===t.kind)&&t.tagName===e}function ae(e){switch(e.kind){case 101:case 99:case 105:case 90:case 13:case 191:case 192:case 193:case 194:case 195:case 196:case 197:case 216:case 198:case 217:case 199:case 200:case 213:case 201:case 204:case 202:case 203:case 206:case 207:case 208:case 209:case 212:case 210:case 214:case 264:case 265:case 268:case 211:case 205:case 218:return!0;case 152:for(;152===e.parent.kind;)e=e.parent;return 171===e.parent.kind||ie(e);case 75:if(171===e.parent.kind||ie(e))return!0;case 8:case 9:case 10:case 14:case 103:return oe(e);default:return!1}}function oe(e){var t=e.parent;switch(t.kind){case 241:case 155:case 158:case 157:case 282:case 279:case 190:return t.initializer===e;case 225:case 226:case 227:case 228:case 234:case 235:case 236:case 275:case 238:return t.expression===e;case 229:var r=t;return r.initializer===e&&242!==r.initializer.kind||r.condition===e||r.incrementor===e;case 230:case 231:var n=t;return n.initializer===e&&242!==n.initializer.kind||n.expression===e;case 198:case 216:case 220:case 153:return e===t.expression;case 156:case 274:case 273:case 281:return!0;case 215:return t.expression===e&&ir(t);case 280:return t.objectAssignmentInitializer===e;default:return ae(t)}}function se(e){return 252===e.kind&&263===e.moduleReference.kind}function ce(e){return ue(e)}function ue(e){return!!e&&!!(131072&e.flags)}function le(t,r){if(195!==t.kind)return!1;var n=t,i=n.expression,a=n.arguments;if(75!==i.kind||"require"!==i.escapedText)return!1;if(1!==a.length)return!1;var o=a[0];return!r||e.isStringLiteralLike(o)}function _e(t){return ue(t)&&t.initializer&&e.isBinaryExpression(t.initializer)&&(56===t.initializer.operatorToken.kind||60===t.initializer.operatorToken.kind)&&t.name&&ar(t.name)&&pe(t.name,t.initializer.left)?t.initializer.right:t.initializer}function de(t,r){if(e.isCallExpression(t)){var n=ze(t.expression);return 200===n.kind||201===n.kind?t:void 0}return 200===t.kind||213===t.kind||201===t.kind?t:e.isObjectLiteralExpression(t)&&(0===t.properties.length||r)?t:void 0}function pe(t,r){return ot(t)&&ot(r)?st(t)==st(t):e.isIdentifier(t)&&he(r)?(103===r.expression.kind||e.isIdentifier(r.expression)&&("window"===r.expression.escapedText||"self"===r.expression.escapedText||"global"===r.expression.escapedText))&&pe(t,Se(r)):!(!he(t)||!he(r))&&(Ee(t)===Ee(r)&&pe(t.expression,r.expression))}function fe(t){return e.isIdentifier(t)&&"exports"===t.escapedText}function me(t){return(e.isPropertyAccessExpression(t)||ve(t))&&e.isIdentifier(t.expression)&&"module"===t.expression.escapedText&&"exports"===Ee(t)}function ge(t){var r=function(t){if(e.isCallExpression(t)){if(!ye(t))return 0;var r=t.arguments[0];return fe(r)||me(r)?8:be(r)&&"prototype"===Ee(r)?9:7}if(62!==t.operatorToken.kind||!Cr(t.left))return 0;if(De(t.left.expression,!0)&&"prototype"===Ee(t.left)&&e.isObjectLiteralExpression(ke(t)))return 6;return Ce(t.left)}(t);return 5===r||ue(t)?r:0}function ye(t){return 3===e.length(t.arguments)&&e.isPropertyAccessExpression(t.expression)&&e.isIdentifier(t.expression.expression)&&"Object"===e.idText(t.expression.expression)&&"defineProperty"===e.idText(t.expression.name)&&et(t.arguments[1])&&De(t.arguments[0],!0)}function he(t){return e.isPropertyAccessExpression(t)||ve(t)}function ve(t){return e.isElementAccessExpression(t)&&(et(t.argumentExpression)||it(t.argumentExpression))}function be(t,r){return e.isPropertyAccessExpression(t)&&(!r&&103===t.expression.kind||De(t.expression,!0))||xe(t,r)}function xe(e,t){return ve(e)&&(!t&&103===e.expression.kind||ar(e.expression)||be(e.expression,!0))}function De(e,t){return ar(e)||be(e,t)}function Se(t){return e.isPropertyAccessExpression(t)?t.name:t.argumentExpression}function Te(t){if(e.isPropertyAccessExpression(t))return t.name;var r=ze(t.argumentExpression);return e.isNumericLiteral(r)||e.isStringLiteralLike(r)?r:t}function Ee(t){var r=Te(t);if(r){if(e.isIdentifier(r))return r.escapedText;if(e.isStringLiteralLike(r)||e.isNumericLiteral(r))return e.escapeLeadingUnderscores(r.text)}if(e.isElementAccessExpression(t)&&it(t.argumentExpression))return ct(e.idText(t.argumentExpression.name))}function Ce(t){if(103===t.expression.kind)return 4;if(me(t))return 2;if(De(t.expression,!0)){if(sr(t.expression))return 3;for(var r=t;!e.isIdentifier(r.expression);)r=r.expression;var n=r.expression;if(("exports"===n.escapedText||"module"===n.escapedText&&"exports"===Ee(r))&&be(t))return 1;if(De(t,!0)||e.isElementAccessExpression(t)&&nt(t)&&103!==t.expression.kind)return 5}return 0}function ke(t){for(;e.isBinaryExpression(t.right);)t=t.right;return t.right}function Ne(t){switch(t.parent.kind){case 253:case 259:return t.parent;case 263:return t.parent.parent;case 195:return J(t.parent)||le(t.parent,!1)?t.parent:void 0;case 186:return e.Debug.assert(e.isStringLiteral(t)),e.tryCast(t.parent.parent,e.isImportTypeNode);default:return}}function Ae(e){return 315===e.kind||308===e.kind||309===e.kind}function Fe(t){return e.isExpressionStatement(t)&&e.isBinaryExpression(t.expression)&&0!==ge(t.expression)&&e.isBinaryExpression(t.expression.right)&&(56===t.expression.right.operatorToken.kind||60===t.expression.right.operatorToken.kind)?t.expression.right.right:void 0}function Pe(e){switch(e.kind){case 224:var t=we(e);return t&&t.initializer;case 158:case 279:return e.initializer}}function we(t){return e.isVariableStatement(t)?e.firstOrUndefined(t.declarationList.declarations):void 0}function Ie(t){return e.isModuleDeclaration(t)&&t.body&&248===t.body.kind?t.body:void 0}function Oe(t){var r=t.parent;return 279===r.kind||258===r.kind||158===r.kind||225===r.kind&&193===t.kind||Ie(r)||e.isBinaryExpression(t)&&62===t.operatorToken.kind?r:r.parent&&(we(r.parent)===t||e.isBinaryExpression(r)&&62===r.operatorToken.kind)?r.parent:r.parent&&r.parent.parent&&(we(r.parent.parent)||Pe(r.parent.parent)===t||Fe(r.parent.parent))?r.parent.parent:void 0}function Me(e){return Le(Re(e))}function Le(t){var r=Fe(t)||function(t){return e.isExpressionStatement(t)&&t.expression&&e.isBinaryExpression(t.expression)&&62===t.expression.operatorToken.kind?t.expression.right:void 0}(t)||Pe(t)||we(t)||Ie(t)||t;return r&&e.isFunctionLike(r)?r:void 0}function Re(t){return e.Debug.assertDefined(s(t.parent,e.isJSDoc)).parent}function Be(t){var r=e.isJSDocParameterTag(t)?t.typeExpression&&t.typeExpression.type:t.type;return void 0!==t.dotDotDotToken||!!r&&299===r.kind}function je(e){for(var t=e.parent;;){switch(t.kind){case 208:var r=t.operatorToken.kind;return er(r)&&t.left===e?62===r?1:2:0;case 206:case 207:var n=t.operator;return 45===n||46===n?2:0;case 230:case 231:return t.initializer===e?1:0;case 199:case 191:case 212:case 217:e=t;break;case 280:if(t.name!==e)return 0;e=t.parent;break;case 279:if(t.name===e)return 0;e=t.parent;break;default:return 0}t=e.parent}}function Ke(e,t){for(;e&&e.kind===t;)e=e.parent;return e}function Je(e){return Ke(e,199)}function ze(e){for(;199===e.kind;)e=e.expression;return e}function Ue(t){return ar(t)||e.isClassExpression(t)}function Ve(e){return Ue(qe(e))}function qe(t){return e.isExportAssignment(t)?t.expression:t.right}function We(t){var r=Ge(t);if(r&&ue(t)){var n=e.getJSDocAugmentsTag(t);if(n)return n.class}return r}function Ge(e){var t=Xe(e.heritageClauses,89);return t&&t.types.length>0?t.types[0]:void 0}function He(e){var t=Xe(e.heritageClauses,112);return t?t.types:void 0}function Ye(e){var t=Xe(e.heritageClauses,89);return t?t.types:void 0}function Xe(e,t){if(e)for(var r=0,n=e;r<n.length;r++){var i=n[r];if(i.token===t)return i}}function Qe(e){return 76<=e&&e<=151}function $e(e){return 121<=e&&e<=151}function Ze(e){return Qe(e)&&!$e(e)}function et(t){return e.isStringLiteralLike(t)||e.isNumericLiteral(t)}function tt(t){return e.isPrefixUnaryExpression(t)&&(39===t.operator||40===t.operator)&&e.isNumericLiteral(t.operand)}function rt(t){var r=e.getNameOfDeclaration(t);return!!r&&nt(r)}function nt(t){if(153!==t.kind&&194!==t.kind)return!1;var r=e.isElementAccessExpression(t)?t.argumentExpression:t.expression;return!et(r)&&!tt(r)&&!it(r)}function it(t){return e.isPropertyAccessExpression(t)&&ut(t.expression)}function at(t){switch(t.kind){case 75:return t.escapedText;case 10:case 8:return e.escapeLeadingUnderscores(t.text);case 153:var r=t.expression;return it(r)?ct(e.idText(r.name)):et(r)?e.escapeLeadingUnderscores(r.text):void 0;default:return e.Debug.assertNever(t)}}function ot(e){switch(e.kind){case 75:case 10:case 14:case 8:return!0;default:return!1}}function st(t){return 75===t.kind?e.idText(t):t.text}function ct(e){return"__@"+e}function ut(e){return 75===e.kind&&"Symbol"===e.escapedText}function lt(e){for(;190===e.kind;)e=e.parent.parent;return e}function _t(t){return e.positionIsSynthesized(t.pos)||e.positionIsSynthesized(t.end)}function dt(e,t,r){switch(e){case 196:return r?0:1;case 206:case 203:case 204:case 202:case 205:case 209:case 211:return 1;case 208:switch(t){case 42:case 62:case 63:case 64:case 66:case 65:case 67:case 68:case 69:case 70:case 71:case 72:case 74:case 73:return 1}}return 0}function pt(e){return 208===e.kind?e.operatorToken.kind:206===e.kind||207===e.kind?e.operator:e.kind}function ft(e,t,r){switch(e){case 320:return 0;case 212:return 1;case 211:return 2;case 209:return 4;case 208:switch(t){case 27:return 0;case 62:case 63:case 64:case 66:case 65:case 67:case 68:case 69:case 70:case 71:case 72:case 74:case 73:return 3;default:return mt(t)}case 206:case 203:case 204:case 202:case 205:return 16;case 207:return 17;case 195:return 18;case 196:return r?19:18;case 197:case 193:case 194:return 19;case 103:case 101:case 75:case 99:case 105:case 90:case 8:case 9:case 10:case 191:case 192:case 200:case 201:case 213:case 264:case 265:case 268:case 13:case 14:case 210:case 199:case 214:return 20;default:return-1}}function mt(e){switch(e){case 60:return 4;case 56:return 5;case 55:return 6;case 51:return 7;case 52:return 8;case 50:return 9;case 34:case 35:case 36:case 37:return 10;case 29:case 31:case 32:case 33:case 97:case 96:case 122:return 11;case 47:case 48:case 49:return 12;case 39:case 40:return 13;case 41:case 43:case 44:return 14;case 42:return 15}return-1}e.isPartOfTypeNode=W,e.isChildOfNodeWithKind=function(e,t){for(;e;){if(e.kind===t)return!0;e=e.parent}return!1},e.forEachReturnStatement=function(t,r){return function t(n){switch(n.kind){case 234:return r(n);case 250:case 222:case 226:case 227:case 228:case 229:case 230:case 231:case 235:case 236:case 275:case 276:case 237:case 239:case 278:return e.forEachChild(n,t)}}(t)},e.forEachYieldExpression=function(t,r){return function t(n){switch(n.kind){case 211:r(n);var i=n.expression;return void(i&&t(i));case 247:case 245:case 248:case 246:case 244:case 213:return;default:if(e.isFunctionLike(n)){if(n.name&&153===n.name.kind)return void t(n.name.expression)}else W(n)||e.forEachChild(n,t)}}(t)},e.getRestParameterElementType=function(t){return t&&173===t.kind?t.elementType:t&&168===t.kind?e.singleOrUndefined(t.typeArguments):void 0},e.getMembersOfDeclaration=function(e){switch(e.kind){case 245:case 244:case 213:case 172:return e.members;case 192:return e.properties}},e.isVariableLike=G,e.isVariableLikeOrAccessor=function(t){return G(t)||e.isAccessor(t)},e.isVariableDeclarationInVariableStatement=H,e.isValidESSymbolDeclaration=function(t){return e.isVariableDeclaration(t)?K(t)&&e.isIdentifier(t.name)&&H(t):e.isPropertyDeclaration(t)?Yt(t)&&Ht(t):e.isPropertySignature(t)&&Yt(t)},e.introducesArgumentsExoticObject=function(e){switch(e.kind){case 160:case 159:case 161:case 162:case 163:case 243:case 200:return!0}return!1},e.unwrapInnermostStatementOfLabel=function(e,t){for(;;){if(t&&t(e),237!==e.statement.kind)return e.statement;e=e.statement}},e.isFunctionBlock=function(t){return t&&222===t.kind&&e.isFunctionLike(t.parent)},e.isObjectLiteralMethod=function(e){return e&&160===e.kind&&192===e.parent.kind},e.isObjectLiteralOrClassExpressionMethod=function(e){return 160===e.kind&&(192===e.parent.kind||213===e.parent.kind)},e.isIdentifierTypePredicate=function(e){return e&&1===e.kind},e.isThisTypePredicate=function(e){return e&&0===e.kind},e.getPropertyAssignment=Y,e.getTsConfigObjectLiteralExpression=X,e.getTsConfigPropArrayElementValue=function(t,r,n){return e.firstDefined(Q(t,r),(function(t){return e.isArrayLiteralExpression(t.initializer)?e.find(t.initializer.elements,(function(t){return e.isStringLiteral(t)&&t.text===n})):void 0}))},e.getTsConfigPropArray=Q,e.getContainingFunction=function(t){return s(t.parent,e.isFunctionLike)},e.getContainingFunctionDeclaration=function(t){return s(t.parent,e.isFunctionLikeDeclaration)},e.getContainingClass=function(t){return s(t.parent,e.isClassLike)},e.getThisContainer=$,e.getNewTargetContainer=function(e){var t=$(e,!1);if(t)switch(t.kind){case 161:case 243:case 200:return t}},e.getSuperContainer=function(t,r){for(;;){if(!(t=t.parent))return t;switch(t.kind){case 153:t=t.parent;break;case 243:case 200:case 201:if(!r)continue;case 158:case 157:case 160:case 159:case 161:case 162:case 163:return t;case 156:155===t.parent.kind&&e.isClassElement(t.parent.parent)?t=t.parent.parent:e.isClassElement(t.parent)&&(t=t.parent)}}},e.getImmediatelyInvokedFunctionExpression=function(e){if(200===e.kind||201===e.kind){for(var t=e,r=e.parent;199===r.kind;)t=r,r=r.parent;if(195===r.kind&&r.expression===t)return r}},e.isSuperOrSuperProperty=function(e){return 101===e.kind||Z(e)},e.isSuperProperty=Z,e.isThisProperty=function(e){var t=e.kind;return(193===t||194===t)&&103===e.expression.kind},e.getEntityNameFromTypeNode=function(e){switch(e.kind){case 168:return e.typeName;case 215:return ar(e.expression)?e.expression:void 0;case 75:case 152:return e}},e.getInvokedExpression=function(e){switch(e.kind){case 197:return e.tag;case 266:case 265:return e.tagName;default:return e.expression}},e.nodeCanBeDecorated=ee,e.nodeIsDecorated=te,e.nodeOrChildIsDecorated=re,e.childIsDecorated=ne,e.isJSXTagName=ie,e.isExpressionNode=ae,e.isInExpressionContext=oe,e.isExternalModuleImportEqualsDeclaration=se,e.getExternalModuleImportEqualsDeclarationExpression=function(t){return e.Debug.assert(se(t)),t.moduleReference.expression},e.isInternalModuleImportEqualsDeclaration=function(e){return 252===e.kind&&263!==e.moduleReference.kind},e.isSourceFileJS=ce,e.isSourceFileNotJS=function(e){return!ue(e)},e.isInJSFile=ue,e.isInJsonFile=function(e){return!!e&&!!(33554432&e.flags)},e.isInJSDoc=function(e){return!!e&&!!(4194304&e.flags)},e.isJSDocIndexSignature=function(t){return e.isTypeReferenceNode(t)&&e.isIdentifier(t.typeName)&&"Object"===t.typeName.escapedText&&t.typeArguments&&2===t.typeArguments.length&&(142===t.typeArguments[0].kind||139===t.typeArguments[0].kind)},e.isRequireCall=le,e.isSingleOrDoubleQuote=function(e){return 39===e||34===e},e.isStringDoubleQuoted=function(e,t){return 34===x(t,e).charCodeAt(0)},e.getDeclarationOfExpando=function(t){if(t.parent){var r,n;if(e.isVariableDeclaration(t.parent)&&t.parent.initializer===t){if(!ue(t)&&!K(t.parent))return;r=t.parent.name,n=t.parent}else if(e.isBinaryExpression(t.parent)){var i=t.parent,a=t.parent.operatorToken.kind;if(62===a&&i.right===t)n=r=i.left;else if(!(56!==a&&60!==a||(e.isVariableDeclaration(i.parent)&&i.parent.initializer===i?(r=i.parent.name,n=i.parent):e.isBinaryExpression(i.parent)&&62===i.parent.operatorToken.kind&&i.parent.right===i&&(n=r=i.parent.left),r&&De(r)&&pe(r,i.left))))return}if(r&&de(t,sr(r)))return n}},e.isAssignmentDeclaration=function(t){return e.isBinaryExpression(t)||Cr(t)||e.isIdentifier(t)||e.isCallExpression(t)},e.getEffectiveInitializer=_e,e.getDeclaredExpandoInitializer=function(e){var t=_e(e);return t&&de(t,sr(e.name))},e.getAssignedExpandoInitializer=function(t){if(t&&t.parent&&e.isBinaryExpression(t.parent)&&62===t.parent.operatorToken.kind){var r=sr(t.parent.left);return de(t.parent.right,r)||function(t,r,n){var i=e.isBinaryExpression(r)&&(56===r.operatorToken.kind||60===r.operatorToken.kind)&&de(r.right,n);if(i&&pe(t,r.left))return i}(t.parent.left,t.parent.right,r)}if(t&&e.isCallExpression(t)&&ye(t)){var n=function(t,r){return e.forEach(t.properties,(function(t){return e.isPropertyAssignment(t)&&e.isIdentifier(t.name)&&"value"===t.name.escapedText&&t.initializer&&de(t.initializer,r)}))}(t.arguments[2],"prototype"===t.arguments[1].text);if(n)return n}},e.getExpandoInitializer=de,e.isDefaultedExpandoInitializer=function(t){var r=e.isVariableDeclaration(t.parent)?t.parent.name:e.isBinaryExpression(t.parent)&&62===t.parent.operatorToken.kind?t.parent.left:void 0;return r&&de(t.right,sr(r))&&ar(r)&&pe(r,t.left)},e.getNameOfExpando=function(t){if(e.isBinaryExpression(t.parent)){var r=56!==t.parent.operatorToken.kind&&60!==t.parent.operatorToken.kind||!e.isBinaryExpression(t.parent.parent)?t.parent:t.parent.parent;if(62===r.operatorToken.kind&&e.isIdentifier(r.left))return r.left}else if(e.isVariableDeclaration(t.parent))return t.parent.name},e.getRightMostAssignedExpression=function(e){for(;nr(e,!0);)e=e.right;return e},e.isExportsIdentifier=fe,e.isModuleExportsAccessExpression=me,e.getAssignmentDeclarationKind=ge,e.isBindableObjectDefinePropertyCall=ye,e.isLiteralLikeAccess=he,e.isLiteralLikeElementAccess=ve,e.isBindableStaticAccessExpression=be,e.isBindableStaticElementAccessExpression=xe,e.isBindableStaticNameExpression=De,e.getNameOrArgument=Se,e.getElementOrPropertyAccessArgumentExpressionOrName=Te,e.getElementOrPropertyAccessName=Ee,e.getAssignmentDeclarationPropertyAccessKind=Ce,e.getInitializerOfBinaryExpression=ke,e.isPrototypePropertyAssignment=function(t){return e.isBinaryExpression(t)&&3===ge(t)},e.isSpecialPropertyDeclaration=function(t){return ue(t)&&t.parent&&225===t.parent.kind&&(!e.isElementAccessExpression(t)||ve(t))&&!!e.getJSDocTypeTag(t.parent)},e.isFunctionSymbol=function(t){if(!t||!t.valueDeclaration)return!1;var r=t.valueDeclaration;return 243===r.kind||e.isVariableDeclaration(r)&&r.initializer&&e.isFunctionLike(r.initializer)},e.importFromModuleSpecifier=function(t){return Ne(t)||e.Debug.failBadSyntaxKind(t.parent)},e.tryGetImportFromModuleSpecifier=Ne,e.getExternalModuleName=function(t){switch(t.kind){case 253:case 259:return t.moduleSpecifier;case 252:return 263===t.moduleReference.kind?t.moduleReference.expression:void 0;case 187:return z(t)?t.argument.literal:void 0;default:return e.Debug.assertNever(t)}},e.getNamespaceDeclarationNode=function(t){switch(t.kind){case 253:return t.importClause&&e.tryCast(t.importClause.namedBindings,e.isNamespaceImport);case 252:return t;case 259:return;default:return e.Debug.assertNever(t)}},e.isDefaultImport=function(e){return 253===e.kind&&!!e.importClause&&!!e.importClause.name},e.hasQuestionToken=function(e){if(e)switch(e.kind){case 155:case 160:case 159:case 280:case 279:case 158:case 157:return void 0!==e.questionToken}return!1},e.isJSDocConstructSignature=function(t){var r=e.isJSDocFunctionType(t)?e.firstOrUndefined(t.parameters):void 0,n=e.tryCast(r&&r.name,e.isIdentifier);return!!n&&"new"===n.escapedText},e.isJSDocTypeAlias=Ae,e.isTypeAlias=function(t){return Ae(t)||e.isTypeAliasDeclaration(t)},e.getSingleInitializerOfVariableStatementOrPropertyDeclaration=Pe,e.getJSDocCommentsAndTags=function(t){var r;G(t)&&e.hasInitializer(t)&&e.hasJSDocNodes(t.initializer)&&(r=e.append(r,e.last(t.initializer.jsDoc)));for(var n=t;n&&n.parent;){if(e.hasJSDocNodes(n)&&(r=e.append(r,e.last(n.jsDoc))),155===n.kind){r=e.addRange(r,e.getJSDocParameterTags(n));break}if(154===n.kind){r=e.addRange(r,e.getJSDocTypeParameterTags(n));break}n=Oe(n)}return r||e.emptyArray},e.getParameterSymbolFromJSDoc=function(t){if(t.symbol)return t.symbol;if(e.isIdentifier(t.name)){var r=t.name.escapedText,n=Me(t);if(n){var i=e.find(n.parameters,(function(e){return 75===e.name.kind&&e.name.escapedText===r}));return i&&i.symbol}}},e.getHostSignatureFromJSDoc=Me,e.getHostSignatureFromJSDocHost=Le,e.getJSDocHost=Re,e.getTypeParameterFromJsDoc=function(t){var r=t.name.escapedText,n=t.parent.parent.parent.typeParameters;return n&&e.find(n,(function(e){return e.name.escapedText===r}))},e.hasRestParameter=function(t){var r=e.lastOrUndefined(t.parameters);return!!r&&Be(r)},e.isRestParameter=Be,function(e){e[e.None=0]="None",e[e.Definite=1]="Definite",e[e.Compound=2]="Compound"}(e.AssignmentKind||(e.AssignmentKind={})),e.getAssignmentTargetKind=je,e.isAssignmentTarget=function(e){return 0!==je(e)},e.isNodeWithPossibleHoistedDeclaration=function(e){switch(e.kind){case 222:case 224:case 235:case 226:case 236:case 250:case 275:case 276:case 237:case 229:case 230:case 231:case 227:case 228:case 239:case 278:return!0}return!1},e.isValueSignatureDeclaration=function(t){return e.isFunctionExpression(t)||e.isArrowFunction(t)||e.isMethodOrAccessor(t)||e.isFunctionDeclaration(t)||e.isConstructorDeclaration(t)},e.walkUpParenthesizedTypes=function(e){return Ke(e,181)},e.walkUpParenthesizedExpressions=Je,e.skipParentheses=ze,e.isDeleteTarget=function(e){return(193===e.kind||194===e.kind)&&((e=Je(e.parent))&&202===e.kind)},e.isNodeDescendantOf=function(e,t){for(;e;){if(e===t)return!0;e=e.parent}return!1},e.isDeclarationName=function(t){return!e.isSourceFile(t)&&!e.isBindingPattern(t)&&e.isDeclaration(t.parent)&&t.parent.name===t},e.getDeclarationFromName=function(t){var r=t.parent;switch(t.kind){case 10:case 14:case 8:if(e.isComputedPropertyName(r))return r.parent;case 75:if(e.isDeclaration(r))return r.name===t?r:void 0;if(e.isQualifiedName(r)){var n=r.parent;return e.isJSDocParameterTag(n)&&n.name===r?n:void 0}var i=r.parent;return e.isBinaryExpression(i)&&0!==ge(i)&&(i.left.symbol||i.symbol)&&e.getNameOfDeclaration(i)===t?i:void 0;default:return}},e.isLiteralComputedPropertyDeclarationName=function(t){return et(t)&&153===t.parent.kind&&e.isDeclaration(t.parent.parent)},e.isIdentifierName=function(e){var t=e.parent;switch(t.kind){case 158:case 157:case 160:case 159:case 162:case 163:case 282:case 279:case 193:return t.name===e;case 152:if(t.right===e){for(;152===t.kind;)t=t.parent;return 171===t.kind||168===t.kind}return!1;case 190:case 257:return t.propertyName===e;case 261:case 271:return!0}return!1},e.isAliasSymbolDeclaration=function(t){return 252===t.kind||251===t.kind||254===t.kind&&!!t.name||255===t.kind||257===t.kind||261===t.kind||258===t.kind&&Ve(t)||e.isBinaryExpression(t)&&2===ge(t)&&Ve(t)||e.isPropertyAccessExpression(t)&&e.isBinaryExpression(t.parent)&&t.parent.left===t&&62===t.parent.operatorToken.kind&&Ue(t.parent.right)||280===t.kind||279===t.kind&&Ue(t.initializer)},e.exportAssignmentIsAlias=Ve,e.getExportAssignmentExpression=qe,e.getPropertyAssignmentAliasLikeExpression=function(e){return 280===e.kind?e.name:279===e.kind?e.initializer:e.parent.right},e.getEffectiveBaseTypeNode=We,e.getClassExtendsHeritageElement=Ge,e.getClassImplementsHeritageClauseElements=He,e.getAllSuperTypeNodes=function(t){return e.isInterfaceDeclaration(t)?Ye(t)||e.emptyArray:e.isClassLike(t)&&e.concatenate(e.singleElementArray(We(t)),He(t))||e.emptyArray},e.getInterfaceBaseTypeNodes=Ye,e.getHeritageClause=Xe,e.getAncestor=function(e,t){for(;e;){if(e.kind===t)return e;e=e.parent}},e.isKeyword=Qe,e.isContextualKeyword=$e,e.isNonContextualKeyword=Ze,e.isFutureReservedKeyword=function(e){return 112<=e&&e<=120},e.isStringANonContextualKeyword=function(t){var r=e.stringToToken(t);return void 0!==r&&Ze(r)},e.isStringAKeyword=function(t){var r=e.stringToToken(t);return void 0!==r&&Qe(r)},e.isIdentifierANonContextualKeyword=function(e){var t=e.originalKeywordKind;return!!t&&!$e(t)},e.isTrivia=function(e){return 2<=e&&e<=7},function(e){e[e.Normal=0]="Normal",e[e.Generator=1]="Generator",e[e.Async=2]="Async",e[e.Invalid=4]="Invalid",e[e.AsyncGenerator=3]="AsyncGenerator"}(e.FunctionFlags||(e.FunctionFlags={})),e.getFunctionFlags=function(e){if(!e)return 4;var t=0;switch(e.kind){case 243:case 200:case 160:e.asteriskToken&&(t|=1);case 201:Gt(e,256)&&(t|=2)}return e.body||(t|=4),t},e.isAsyncFunction=function(e){switch(e.kind){case 243:case 200:case 201:case 160:return void 0!==e.body&&void 0===e.asteriskToken&&Gt(e,256)}return!1},e.isStringOrNumericLiteralLike=et,e.isSignedNumericLiteral=tt,e.hasDynamicName=rt,e.isDynamicName=nt,e.isWellKnownSymbolSyntactically=it,e.getPropertyNameForPropertyNameNode=at,e.isPropertyNameLiteral=ot,e.getTextOfIdentifierOrLiteral=st,e.getEscapedTextOfIdentifierOrLiteral=function(t){return 75===t.kind?t.escapedText:e.escapeLeadingUnderscores(t.text)},e.getPropertyNameForKnownSymbolName=ct,e.isKnownSymbol=function(t){return e.startsWith(t.escapedName,"__@")},e.isESSymbolIdentifier=ut,e.isPushOrUnshiftIdentifier=function(e){return"push"===e.escapedText||"unshift"===e.escapedText},e.isParameterDeclaration=function(e){return 155===lt(e).kind},e.getRootDeclaration=lt,e.nodeStartsNewLexicalEnvironment=function(e){var t=e.kind;return 161===t||200===t||243===t||201===t||160===t||162===t||163===t||248===t||288===t},e.nodeIsSynthesized=_t,e.getOriginalSourceFile=function(t){return e.getParseTreeNode(t,e.isSourceFile)||t},function(e){e[e.Left=0]="Left",e[e.Right=1]="Right"}(e.Associativity||(e.Associativity={})),e.getExpressionAssociativity=function(e){var t=pt(e),r=196===e.kind&&void 0!==e.arguments;return dt(e.kind,t,r)},e.getOperatorAssociativity=dt,e.getExpressionPrecedence=function(e){var t=pt(e),r=196===e.kind&&void 0!==e.arguments;return ft(e.kind,t,r)},e.getOperator=pt,e.getOperatorPrecedence=ft,e.getBinaryOperatorPrecedence=mt,e.createDiagnosticCollection=function(){var t=[],r=[],n=e.createMap(),i=!1;return{add:function(a){var o;a.file?(o=n.get(a.file.fileName))||(o=[],n.set(a.file.fileName,o),e.insertSorted(r,a.file.fileName,e.compareStringsCaseSensitive)):(i&&(i=!1,t=t.slice()),o=t);e.insertSorted(o,a,e.compareDiagnostics)},lookup:function(r){var i;i=r.file?n.get(r.file.fileName):t;if(!i)return;var a=e.binarySearch(i,r,e.identity,e.compareDiagnosticsSkipRelatedInformation);if(a>=0)return i[a];return},getGlobalDiagnostics:function(){return i=!0,t},getDiagnostics:function(i){if(i)return n.get(i)||[];var a=e.flatMapToMutable(r,(function(e){return n.get(e)}));if(!t.length)return a;return a.unshift.apply(a,t),a},reattachFileDiagnostics:function(t){e.forEach(n.get(t.fileName),(function(e){return e.file=t}))}}};var gt=/\$\{/g;var yt=/[\\\"\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g,ht=/[\\\'\u0000-\u001f\t\v\f\b\r\n\u2028\u2029\u0085]/g,vt=/[\\\`]/g,bt=e.createMapFromTemplate({"\t":"\\t","\v":"\\v","\f":"\\f","\b":"\\b","\r":"\\r","\n":"\\n","\\":"\\\\",'"':'\\"',"'":"\\'","`":"\\`","\u2028":"\\u2028","\u2029":"\\u2029","…":"\\u0085"});function xt(e,t){var r=96===t?vt:39===t?ht:yt;return e.replace(r,Dt)}function Dt(e,t,r){if(0===e.charCodeAt(0)){var n=r.charCodeAt(t+e.length);return n>=48&&n<=57?"\\x00":"\\0"}return bt.get(e)||St(e.charCodeAt(0))}function St(e){return"\\u"+("0000"+e.toString(16).toUpperCase()).slice(-4)}e.escapeString=xt,e.stripQuotes=function(e){var t,r=e.length;return r>=2&&e.charCodeAt(0)===e.charCodeAt(r-1)&&(39===(t=e.charCodeAt(0))||34===t||96===t)?e.substring(1,r-1):e},e.isIntrinsicJsxName=function(t){var r=t.charCodeAt(0);return r>=97&&r<=122||e.stringContains(t,"-")};var Tt=/[^\u0000-\u007F]/g;function Et(e,t){return e=xt(e,t),Tt.test(e)?e.replace(Tt,(function(e){return St(e.charCodeAt(0))})):e}e.escapeNonAsciiString=Et;var Ct=[""," "];function kt(e){return void 0===Ct[e]&&(Ct[e]=kt(e-1)+Ct[1]),Ct[e]}function Nt(){return Ct[1].length}function At(e,t,r){return t.moduleName||Ft(e,t.fileName,r&&r.fileName)}function Ft(t,r,n){var i=function(e){return t.getCanonicalFileName(e)},a=e.toPath(n?e.getDirectoryPath(n):t.getCommonSourceDirectory(),t.getCurrentDirectory(),i),o=e.getNormalizedAbsolutePath(r,t.getCurrentDirectory()),s=e.getRelativePathToDirectoryOrUrl(a,o,a,i,!1),c=e.removeFileExtension(s);return n?e.ensurePathIsNonModuleName(c):c}function Pt(t,r,n,i,a){var o=r.declarationDir||r.outDir,s=o?Ot(t,o,n,i,a):t;return e.removeFileExtension(s)+".d.ts"}function wt(e,t,r,n){return!(t.noEmitForJsFiles&&ce(e)||e.isDeclarationFile||r(e)||j(e)&&n(e.fileName))}function It(e,t,r){return Ot(e,r,t.getCurrentDirectory(),t.getCommonSourceDirectory(),(function(e){return t.getCanonicalFileName(e)}))}function Ot(t,r,n,i,a){var o=e.getNormalizedAbsolutePath(t,n);return o=0===a(o).indexOf(a(i))?o.substring(i.length):o,e.combinePaths(r,o)}function Mt(t,r){return e.getLineAndCharacterOfPosition(t,r).line}function Lt(t,r){return e.computeLineAndCharacterOfPosition(t,r).line}function Rt(e){if(e&&e.parameters.length>0){var t=2===e.parameters.length&&Bt(e.parameters[0]);return e.parameters[t?1:0]}}function Bt(e){return jt(e.name)}function jt(e){return!!e&&75===e.kind&&Kt(e)}function Kt(e){return 103===e.originalKeywordKind}function Jt(t){var r=t.type;return r||!ue(t)?r:e.isJSDocPropertyLikeTag(t)?t.typeExpression&&t.typeExpression.type:e.getJSDocType(t)}function zt(e,t,r,n){Ut(e,t,r.pos,n)}function Ut(e,t,r,n){n&&n.length&&r!==n[0].pos&&Lt(e,r)!==Lt(e,n[0].pos)&&t.writeLine()}function Vt(e,t,r,n,i,a,o,s){if(n&&n.length>0){i&&r.writeSpace(" ");for(var c=!1,u=0,l=n;u<l.length;u++){var _=l[u];c&&(r.writeSpace(" "),c=!1),s(e,t,r,_.pos,_.end,o),_.hasTrailingNewLine?r.writeLine():c=!0}c&&a&&r.writeSpace(" ")}}function qt(e,t,r,n,i,a){var o=Math.min(t,a-1),s=e.substring(i,o).replace(/^\s+|\s+$/g,"");s?(r.writeComment(s),o!==t&&r.writeLine()):r.rawWrite(n)}function Wt(t,r,n){for(var i=0;r<n&&e.isWhiteSpaceSingleLine(t.charCodeAt(r));r++)9===t.charCodeAt(r)?i+=Nt()-i%Nt():i++;return i}function Gt(e,t){return!!Xt(e,t)}function Ht(e){return Gt(e,32)}function Yt(e){return Gt(e,64)}function Xt(e,t){return Qt(e)&t}function Qt(e){if(536870912&e.modifierFlagsCache)return-536870913&e.modifierFlagsCache;var t=$t(e);return e.modifierFlagsCache=536870912|t,t}function $t(e){var t=0;if(e.modifiers)for(var r=0,n=e.modifiers;r<n.length;r++){t|=Zt(n[r].kind)}return(4&e.flags||75===e.kind&&e.isInJSDocNamespace)&&(t|=1),t}function Zt(e){switch(e){case 119:return 32;case 118:return 4;case 117:return 16;case 116:return 8;case 121:return 128;case 88:return 1;case 129:return 2;case 80:return 2048;case 83:return 512;case 125:return 256;case 137:return 64}return 0}function er(e){return e>=62&&e<=74}function tr(e){var t=rr(e);return t&&!t.isImplements?t.class:void 0}function rr(t){return e.isExpressionWithTypeArguments(t)&&e.isHeritageClause(t.parent)&&e.isClassLike(t.parent.parent)?{class:t.parent.parent,isImplements:112===t.parent.token}:void 0}function nr(t,r){return e.isBinaryExpression(t)&&(r?62===t.operatorToken.kind:er(t.operatorToken.kind))&&e.isLeftHandSideExpression(t.left)}function ir(e){return void 0!==tr(e)}function ar(e){return 75===e.kind||or(e)}function or(t){return e.isPropertyAccessExpression(t)&&ar(t.expression)}function sr(e){return be(e)&&"prototype"===Ee(e)}e.getIndentString=kt,e.getIndentSize=Nt,e.createTextWriter=function(t){var r,n,i,a,o,s=!1;function c(t){var n=e.computeLineStarts(t);n.length>1?(a=a+n.length-1,o=r.length-t.length+e.last(n),i=o-r.length==0):i=!1}function u(e){e&&e.length&&(i&&(e=kt(n)+e,i=!1),r+=e,c(e))}function l(e){e&&(s=!1),u(e)}function _(){r="",n=0,i=!0,a=0,o=0,s=!1}return _(),{write:l,rawWrite:function(e){void 0!==e&&(r+=e,c(e),s=!1)},writeLiteral:function(e){e&&e.length&&l(e)},writeLine:function(){i||(a++,o=(r+=t).length,i=!0,s=!1)},increaseIndent:function(){n++},decreaseIndent:function(){n--},getIndent:function(){return n},getTextPos:function(){return r.length},getLine:function(){return a},getColumn:function(){return i?n*Nt():r.length-o},getText:function(){return r},isAtStartOfLine:function(){return i},hasTrailingComment:function(){return s},hasTrailingWhitespace:function(){return!!r.length&&e.isWhiteSpaceLike(r.charCodeAt(r.length-1))},clear:_,reportInaccessibleThisError:e.noop,reportPrivateInBaseOfClassExpression:e.noop,reportInaccessibleUniqueSymbolError:e.noop,trackSymbol:e.noop,writeKeyword:l,writeOperator:l,writeParameter:l,writeProperty:l,writePunctuation:l,writeSpace:l,writeStringLiteral:l,writeSymbol:function(e,t){return l(e)},writeTrailingSemicolon:l,writeComment:function(e){e&&(s=!0),u(e)},getTextPosWithWriteLine:function(){return i?r.length:r.length+t.length}}},e.getTrailingSemicolonDeferringWriter=function(e){var t=!1;function n(){t&&(e.writeTrailingSemicolon(";"),t=!1)}return r(r({},e),{writeTrailingSemicolon:function(){t=!0},writeLiteral:function(t){n(),e.writeLiteral(t)},writeStringLiteral:function(t){n(),e.writeStringLiteral(t)},writeSymbol:function(t,r){n(),e.writeSymbol(t,r)},writePunctuation:function(t){n(),e.writePunctuation(t)},writeKeyword:function(t){n(),e.writeKeyword(t)},writeOperator:function(t){n(),e.writeOperator(t)},writeParameter:function(t){n(),e.writeParameter(t)},writeSpace:function(t){n(),e.writeSpace(t)},writeProperty:function(t){n(),e.writeProperty(t)},writeComment:function(t){n(),e.writeComment(t)},writeLine:function(){n(),e.writeLine()},increaseIndent:function(){n(),e.increaseIndent()},decreaseIndent:function(){n(),e.decreaseIndent()}})},e.getResolvedExternalModuleName=At,e.getExternalModuleNameFromDeclaration=function(e,t,r){var n=t.getExternalModuleFileFromDeclaration(r);if(n&&!n.isDeclarationFile)return At(e,n)},e.getExternalModuleNameFromPath=Ft,e.getOwnEmitOutputFilePath=function(t,r,n){var i=r.getCompilerOptions();return(i.outDir?e.removeFileExtension(It(t,r,i.outDir)):e.removeFileExtension(t))+n},e.getDeclarationEmitOutputFilePath=function(e,t){return Pt(e,t.getCompilerOptions(),t.getCurrentDirectory(),t.getCommonSourceDirectory(),(function(e){return t.getCanonicalFileName(e)}))},e.getDeclarationEmitOutputFilePathWorker=Pt,e.getSourceFilesToEmit=function(t,r){var n=t.getCompilerOptions(),i=function(e){return t.isSourceFileFromExternalLibrary(e)},a=function(e){return t.getResolvedProjectReferenceToRedirect(e)};if(n.outFile||n.out){var o=e.getEmitModuleKind(n),s=n.emitDeclarationOnly||o===e.ModuleKind.AMD||o===e.ModuleKind.System;return e.filter(t.getSourceFiles(),(function(t){return(s||!e.isExternalModule(t))&&wt(t,n,i,a)}))}var c=void 0===r?t.getSourceFiles():[r];return e.filter(c,(function(e){return wt(e,n,i,a)}))},e.sourceFileMayBeEmitted=wt,e.getSourceFilePathInNewDir=It,e.getSourceFilePathInNewDirWorker=Ot,e.writeFile=function(t,r,n,i,a,o){t.writeFile(n,i,a,(function(t){r.add(e.createCompilerDiagnostic(e.Diagnostics.Could_not_write_file_0_Colon_1,n,t))}),o)},e.getLineOfLocalPosition=Mt,e.getLineOfLocalPositionFromLineMap=Lt,e.getFirstConstructorWithBody=function(t){return e.find(t.members,(function(t){return e.isConstructorDeclaration(t)&&m(t.body)}))},e.getSetAccessorValueParameter=Rt,e.getSetAccessorTypeAnnotationNode=function(e){var t=Rt(e);return t&&t.type},e.getThisParameter=function(t){if(t.parameters.length&&!e.isJSDocSignature(t)){var r=t.parameters[0];if(Bt(r))return r}},e.parameterIsThisKeyword=Bt,e.isThisIdentifier=jt,e.identifierIsThisKeyword=Kt,e.getAllAccessorDeclarations=function(t,r){var n,i,a,o;return rt(r)?(n=r,162===r.kind?a=r:163===r.kind?o=r:e.Debug.fail("Accessor has wrong kind")):e.forEach(t,(function(t){e.isAccessor(t)&&Gt(t,32)===Gt(r,32)&&(at(t.name)===at(r.name)&&(n?i||(i=t):n=t,162!==t.kind||a||(a=t),163!==t.kind||o||(o=t)))})),{firstAccessor:n,secondAccessor:i,getAccessor:a,setAccessor:o}},e.getEffectiveTypeAnnotationNode=Jt,e.getTypeAnnotationNode=function(e){return e.type},e.getEffectiveReturnTypeNode=function(t){return e.isJSDocSignature(t)?t.type&&t.type.typeExpression&&t.type.typeExpression.type:t.type||(ue(t)?e.getJSDocReturnType(t):void 0)},e.getJSDocTypeParameterDeclarations=function(t){return e.flatMap(e.getJSDocTags(t),(function(t){return function(t){return e.isJSDocTemplateTag(t)&&!(301===t.parent.kind&&t.parent.tags.some(Ae))}(t)?t.typeParameters:void 0}))},e.getEffectiveSetAccessorTypeAnnotationNode=function(e){var t=Rt(e);return t&&Jt(t)},e.emitNewLineBeforeLeadingComments=zt,e.emitNewLineBeforeLeadingCommentsOfPosition=Ut,e.emitNewLineBeforeLeadingCommentOfPosition=function(e,t,r,n){r!==n&&Lt(e,r)!==Lt(e,n)&&t.writeLine()},e.emitComments=Vt,e.emitDetachedComments=function(t,r,n,i,a,o,s){var c,u;if(s?0===a.pos&&(c=e.filter(e.getLeadingCommentRanges(t,a.pos),(function(e){return v(t,e.pos)}))):c=e.getLeadingCommentRanges(t,a.pos),c){for(var l=[],_=void 0,d=0,p=c;d<p.length;d++){var f=p[d];if(_){var m=Lt(r,_.end);if(Lt(r,f.pos)>=m+2)break}l.push(f),_=f}if(l.length){m=Lt(r,e.last(l).end);Lt(r,e.skipTrivia(t,a.pos))>=m+2&&(zt(r,n,a,c),Vt(t,r,n,l,!1,!0,o,i),u={nodePos:a.pos,detachedCommentEndPos:e.last(l).end})}}return u},e.writeCommentRange=function(t,r,n,i,a,o){if(42===t.charCodeAt(i+1))for(var s=e.computeLineAndCharacterOfPosition(r,i),c=r.length,u=void 0,l=i,_=s.line;l<a;_++){var d=_+1===c?t.length+1:r[_+1];if(l!==i){void 0===u&&(u=Wt(t,r[s.line],i));var p=n.getIndent()*Nt()-u+Wt(t,l,d);if(p>0){var f=p%Nt(),m=kt((p-f)/Nt());for(n.rawWrite(m);f;)n.rawWrite(" "),f--}else n.rawWrite("")}qt(t,a,n,o,l,d),l=d}else n.writeComment(t.substring(i,a))},e.hasModifiers=function(e){return 0!==Qt(e)},e.hasModifier=Gt,e.hasStaticModifier=Ht,e.hasReadonlyModifier=Yt,e.getSelectedModifierFlags=Xt,e.getModifierFlags=Qt,e.getModifierFlagsNoCache=$t,e.modifierToFlag=Zt,e.isLogicalOperator=function(e){return 56===e||55===e||53===e},e.isAssignmentOperator=er,e.tryGetClassExtendingExpressionWithTypeArguments=tr,e.tryGetClassImplementingOrExtendingExpressionWithTypeArguments=rr,e.isAssignmentExpression=nr,e.isDestructuringAssignment=function(e){if(nr(e,!0)){var t=e.left.kind;return 192===t||191===t}return!1},e.isExpressionWithTypeArgumentsInClassExtendsClause=ir,e.isEntityNameExpression=ar,e.getFirstIdentifier=function(e){switch(e.kind){case 75:return e;case 152:do{e=e.left}while(75!==e.kind);return e;case 193:do{e=e.expression}while(75!==e.kind);return e}},e.isDottedName=function e(t){return 75===t.kind||103===t.kind||193===t.kind&&e(t.expression)||199===t.kind&&e(t.expression)},e.isPropertyAccessEntityNameExpression=or,e.tryGetPropertyAccessOrIdentifierToString=function t(r){return e.isPropertyAccessExpression(r)?t(r.expression)+"."+r.name:e.isIdentifier(r)?e.unescapeLeadingUnderscores(r.escapedText):void 0},e.isPrototypeAccess=sr,e.isRightSideOfQualifiedNameOrPropertyAccess=function(e){return 152===e.parent.kind&&e.parent.right===e||193===e.parent.kind&&e.parent.name===e},e.isEmptyObjectLiteral=function(e){return 192===e.kind&&0===e.properties.length},e.isEmptyArrayLiteral=function(e){return 191===e.kind&&0===e.elements.length},e.getLocalSymbolForExportDefault=function(t){return function(t){return t&&e.length(t.declarations)>0&&Gt(t.declarations[0],512)}(t)?t.declarations[0].localSymbol:void 0},e.tryExtractTSExtension=function(t){return e.find(e.supportedTSExtensionsForExtractExtension,(function(r){return e.fileExtensionIs(t,r)}))};var cr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";function ur(t){for(var r,n,i,a,o="",s=function(t){for(var r=[],n=t.length,i=0;i<n;i++){var a=t.charCodeAt(i);a<128?r.push(a):a<2048?(r.push(a>>6|192),r.push(63&a|128)):a<65536?(r.push(a>>12|224),r.push(a>>6&63|128),r.push(63&a|128)):a<131072?(r.push(a>>18|240),r.push(a>>12&63|128),r.push(a>>6&63|128),r.push(63&a|128)):e.Debug.assert(!1,"Unexpected code point")}return r}(t),c=0,u=s.length;c<u;)r=s[c]>>2,n=(3&s[c])<<4|s[c+1]>>4,i=(15&s[c+1])<<2|s[c+2]>>6,a=63&s[c+2],c+1>=u?i=a=64:c+2>=u&&(a=64),o+=cr.charAt(r)+cr.charAt(n)+cr.charAt(i)+cr.charAt(a),c+=3;return o}e.convertToBase64=ur,e.base64encode=function(e,t){return e&&e.base64encode?e.base64encode(t):ur(t)},e.base64decode=function(e,t){if(e&&e.base64decode)return e.base64decode(t);for(var r=t.length,n=[],i=0;i<r&&t.charCodeAt(i)!==cr.charCodeAt(64);){var a=cr.indexOf(t[i]),o=cr.indexOf(t[i+1]),s=cr.indexOf(t[i+2]),c=cr.indexOf(t[i+3]),u=(63&a)<<2|o>>4&3,l=(15&o)<<4|s>>2&15,_=(3&s)<<6|63&c;0===l&&0!==s?n.push(u):0===_&&0!==c?n.push(u,l):n.push(u,l,_),i+=4}return function(e){for(var t="",r=0,n=e.length;r<n;){var i=e[r];if(i<128)t+=String.fromCharCode(i),r++;else if(192==(192&i)){for(var a=63&i,o=e[++r];128==(192&o);)a=a<<6|63&o,o=e[++r];t+=String.fromCharCode(a)}else t+=String.fromCharCode(i),r++}return t}(n)},e.readJson=function(t,r){try{var n=r.readFile(t);if(!n)return{};var i=e.parseConfigFileTextToJson(t,n);return i.error?{}:i.config}catch(e){return{}}},e.directoryProbablyExists=function(e,t){return!t.directoryExists||t.directoryExists(e)};var lr,_r="\r\n",dr="\n";function pr(t,r){return void 0===r&&(r=t),e.Debug.assert(r>=t||-1===r),{pos:t,end:r}}function fr(e,t){return pr(t,e.end)}function mr(e){return e.decorators&&e.decorators.length>0?fr(e,e.decorators.end):e}function gr(e,t,r){return yr(hr(e,r),t.end,r)}function yr(e,t,r){return e===t||Mt(r,e)===Mt(r,t)}function hr(t,r){return e.positionIsSynthesized(t.pos)?-1:e.skipTrivia(r.text,t.pos)}function vr(e){return void 0!==e.initializer}function br(e){return 33554432&e.flags?e.checkFlags:0}function xr(t){var r=t.parent;if(!r)return 0;switch(r.kind){case 199:return xr(r);case 207:case 206:var n=r.operator;return 45===n||46===n?c():0;case 208:var i=r,a=i.left,o=i.operatorToken;return a===t&&er(o.kind)?62===o.kind?1:c():0;case 193:return r.name!==t?0:xr(r);case 279:var s=xr(r.parent);return t===r.name?function(t){switch(t){case 0:return 1;case 1:return 0;case 2:return 2;default:return e.Debug.assertNever(t)}}(s):s;case 280:return t===r.objectAssignmentInitializer?0:xr(r.parent);case 191:return xr(r);default:return 0}function c(){return r.parent&&225===function(e){for(;199===e.kind;)e=e.parent;return e}(r.parent).kind?1:2}}function Dr(e,t,r){var n=r.onDeleteValue,i=r.onExistingValue;e.forEach((function(r,a){var o=t.get(a);void 0===o?(e.delete(a),n(r,a)):i&&i(r,o,a)}))}function Sr(e){if(32&e.flags){var t=Tr(e);return!!t&&Gt(t,128)}return!1}function Tr(t){return e.find(t.declarations,e.isClassLike)}function Er(e){return 3899392&e.flags?e.objectFlags:0}function Cr(e){return 193===e.kind||194===e.kind}e.getNewLineCharacter=function(t,r){switch(t.newLine){case 0:return _r;case 1:return dr}return r?r():e.sys?e.sys.newLine:_r},e.createRange=pr,e.moveRangeEnd=function(e,t){return pr(e.pos,t)},e.moveRangePos=fr,e.moveRangePastDecorators=mr,e.moveRangePastModifiers=function(e){return e.modifiers&&e.modifiers.length>0?fr(e,e.modifiers.end):mr(e)},e.isCollapsedRange=function(e){return e.pos===e.end},e.createTokenRange=function(t,r){return pr(t,t+e.tokenToString(r).length)},e.rangeIsOnSingleLine=function(e,t){return gr(e,e,t)},e.rangeStartPositionsAreOnSameLine=function(e,t,r){return yr(hr(e,r),hr(t,r),r)},e.rangeEndPositionsAreOnSameLine=function(e,t,r){return yr(e.end,t.end,r)},e.rangeStartIsOnSameLineAsRangeEnd=gr,e.rangeEndIsOnSameLineAsRangeStart=function(e,t,r){return yr(e.end,hr(t,r),r)},e.isNodeArrayMultiLine=function(e,t){return!yr(e.pos,e.end,t)},e.positionsAreOnSameLine=yr,e.getStartPositionOfRange=hr,e.isDeclarationNameOfEnumOrNamespace=function(t){var r=e.getParseTreeNode(t);if(r)switch(r.parent.kind){case 247:case 248:return r===r.parent.name}return!1},e.getInitializedVariables=function(t){return e.filter(t.declarations,vr)},e.isWatchSet=function(e){return e.watch&&e.hasOwnProperty("watch")},e.closeFileWatcher=function(e){e.close()},e.getCheckFlags=br,e.getDeclarationModifierFlagsFromSymbol=function(t){if(t.valueDeclaration){var r=e.getCombinedModifierFlags(t.valueDeclaration);return t.parent&&32&t.parent.flags?r:-29&r}if(6&br(t)){var n=t.checkFlags;return(1024&n?8:256&n?4:16)|(2048&n?32:0)}return 4194304&t.flags?36:0},e.skipAlias=function(e,t){return 2097152&e.flags?t.getAliasedSymbol(e):e},e.getCombinedLocalAndExportSymbolFlags=function(e){return e.exportSymbol?e.exportSymbol.flags|e.flags:e.flags},e.isWriteOnlyAccess=function(e){return 1===xr(e)},e.isWriteAccess=function(e){return 0!==xr(e)},function(e){e[e.Read=0]="Read",e[e.Write=1]="Write",e[e.ReadWrite=2]="ReadWrite"}(lr||(lr={})),e.compareDataObjects=function e(t,r){if(!t||!r||Object.keys(t).length!==Object.keys(r).length)return!1;for(var n in t)if("object"===f(t[n])){if(!e(t[n],r[n]))return!1}else if("function"!=typeof t[n]&&t[n]!==r[n])return!1;return!0},e.clearMap=function(e,t){e.forEach(t),e.clear()},e.mutateMapSkippingNewValues=Dr,e.mutateMap=function(e,t,r){Dr(e,t,r);var n=r.createNewValue;t.forEach((function(t,r){e.has(r)||e.set(r,n(r,t))}))},e.isAbstractConstructorType=function(e){return!!(16&Er(e))&&!!e.symbol&&Sr(e.symbol)},e.isAbstractConstructorSymbol=Sr,e.getClassLikeDeclarationOfSymbol=Tr,e.getObjectFlags=Er,e.typeHasCallOrConstructSignatures=function(e,t){return 0!==t.getSignaturesOfType(e,0).length||0!==t.getSignaturesOfType(e,1).length},e.forSomeAncestorDirectory=function(t,r){return!!e.forEachAncestorDirectory(t,(function(e){return!!r(e)||void 0}))},e.isUMDExportSymbol=function(t){return!!t&&!!t.declarations&&!!t.declarations[0]&&e.isNamespaceExportDeclaration(t.declarations[0])},e.showModuleSpecifier=function(t){var r=t.moduleSpecifier;return e.isStringLiteral(r)?r.text:S(r)},e.getLastChild=function(t){var r;return e.forEachChild(t,(function(e){m(e)&&(r=e)}),(function(e){for(var t=e.length-1;t>=0;t--)if(m(e[t])){r=e[t];break}})),r},e.addToSeen=function(e,t,r){return void 0===r&&(r=!0),t=String(t),!e.has(t)&&(e.set(t,r),!0)},e.isObjectTypeDeclaration=function(t){return e.isClassLike(t)||e.isInterfaceDeclaration(t)||e.isTypeLiteralNode(t)},e.isTypeNodeKind=function(e){return e>=167&&e<=187||124===e||147===e||139===e||150===e||140===e||127===e||142===e||143===e||103===e||109===e||145===e||99===e||136===e||215===e||293===e||294===e||295===e||296===e||297===e||298===e||299===e},e.isAccessExpression=Cr,e.isBundleFileTextLike=function(e){switch(e.kind){case"text":case"internal":return!0;default:return!1}},e.getDotOrQuestionDotToken=function(t){return t.questionDotToken||e.createNode(24,t.expression.end,t.name.pos)}}(s||(s={})),function(e){function t(e){return e.start+e.length}function r(e){return 0===e.length}function n(e,t){var r=a(e,t);return r&&0===r.length?void 0:r}function i(e,t,r,n){return r<=e+t&&r+n>=e}function a(e,r){var n=Math.max(e.start,r.start),i=Math.min(t(e),t(r));return n<=i?s(n,i):void 0}function o(e,t){if(e<0)throw new Error("start < 0");if(t<0)throw new Error("length < 0");return{start:e,length:t}}function s(e,t){return o(e,t-e)}function c(e,t){if(t<0)throw new Error("newLength < 0");return{span:e,newLength:t}}function u(t){return!!e.isBindingPattern(t)&&e.every(t.elements,l)}function l(t){return!!e.isOmittedExpression(t)||u(t.name)}function _(t){for(var r=t.parent;e.isBindingElement(r.parent);)r=r.parent.parent;return r.parent}function d(t,r){e.isBindingElement(t)&&(t=_(t));var n=r(t);return 241===t.kind&&(t=t.parent),t&&242===t.kind&&(n|=r(t),t=t.parent),t&&224===t.kind&&(n|=r(t)),n}function p(e,t){if(e)for(;void 0!==e.original;)e=e.original;return!t||t(e)?e:void 0}function f(e){return 0==(8&e.flags)}function m(e){var t=e;return t.length>=3&&95===t.charCodeAt(0)&&95===t.charCodeAt(1)&&95===t.charCodeAt(2)?t.substr(1):t}function g(e){return m(e.escapedText)}function y(t){var r=t.parent.parent;if(r){if(e.isDeclaration(r))return h(r);switch(r.kind){case 224:if(r.declarationList&&r.declarationList.declarations[0])return h(r.declarationList.declarations[0]);break;case 225:var n=r.expression;switch(208===n.kind&&62===n.operatorToken.kind&&(n=n.left),n.kind){case 193:return n.name;case 194:var i=n.argumentExpression;if(e.isIdentifier(i))return i}break;case 199:return h(r.expression);case 237:if(e.isDeclaration(r.statement)||e.isExpression(r.statement))return h(r.statement)}}}function h(t){var r=D(t);return r&&e.isIdentifier(r)?r:void 0}function v(e){return e.name||y(e)}function b(e){return!!e.name}function x(t){switch(t.kind){case 75:return t;case 316:case 310:var r=t.name;if(152===r.kind)return r.right;break;case 195:case 208:var n=t;switch(e.getAssignmentDeclarationKind(n)){case 1:case 4:case 5:case 3:return e.getElementOrPropertyAccessArgumentExpressionOrName(n.left);case 7:case 8:case 9:return n.arguments[1];default:return}case 315:return v(t);case 309:return y(t);case 258:var i=t.expression;return e.isIdentifier(i)?i:void 0;case 194:var a=t;if(e.isBindableStaticElementAccessExpression(a))return a.argumentExpression}return t.name}function D(t){if(void 0!==t)return x(t)||(e.isFunctionExpression(t)||e.isClassExpression(t)?function(t){if(!t.parent)return;if(e.isPropertyAssignment(t.parent)||e.isBindingElement(t.parent))return t.parent.name;if(e.isBinaryExpression(t.parent)&&t===t.parent.right){if(e.isIdentifier(t.parent.left))return t.parent.left;if(e.isAccessExpression(t.parent.left))return e.getElementOrPropertyAccessArgumentExpressionOrName(t.parent.left)}else if(e.isVariableDeclaration(t.parent)&&e.isIdentifier(t.parent.name))return t.parent.name}(t):void 0)}function S(t){if(t.name){if(e.isIdentifier(t.name)){var r=t.name.escapedText;return k(t.parent).filter((function(t){return e.isJSDocParameterTag(t)&&e.isIdentifier(t.name)&&t.name.escapedText===r}))}var n=t.parent.parameters.indexOf(t);e.Debug.assert(n>-1,"Parameters should always be in their parents' parameter list");var i=k(t.parent).filter(e.isJSDocParameterTag);if(n<i.length)return[i[n]]}return e.emptyArray}function T(t){return N(t,e.isJSDocReturnTag)}function E(t){var r=N(t,e.isJSDocTypeTag);if(r&&r.typeExpression&&r.typeExpression.type)return r}function C(t){var r=N(t,e.isJSDocTypeTag);return!r&&e.isParameter(t)&&(r=e.find(S(t),(function(e){return!!e.typeExpression}))),r&&r.typeExpression&&r.typeExpression.type}function k(t){var r=t.jsDocCache;if(void 0===r){var n=e.getJSDocCommentsAndTags(t);e.Debug.assert(n.length<2||n[0]!==n[1]),t.jsDocCache=r=e.flatMap(n,(function(t){return e.isJSDoc(t)?t.tags:t}))}return r}function N(t,r){return e.find(k(t),r)}e.getDefaultLibFileName=function(e){switch(e.target){case 99:return"lib.esnext.full.d.ts";case 7:return"lib.es2020.full.d.ts";case 6:return"lib.es2019.full.d.ts";case 5:return"lib.es2018.full.d.ts";case 4:return"lib.es2017.full.d.ts";case 3:return"lib.es2016.full.d.ts";case 2:return"lib.es6.d.ts";default:return"lib.d.ts"}},e.textSpanEnd=t,e.textSpanIsEmpty=r,e.textSpanContainsPosition=function(e,r){return r>=e.start&&r<t(e)},e.textRangeContainsPositionInclusive=function(e,t){return t>=e.pos&&t<=e.end},e.textSpanContainsTextSpan=function(e,r){return r.start>=e.start&&t(r)<=t(e)},e.textSpanOverlapsWith=function(e,t){return void 0!==n(e,t)},e.textSpanOverlap=n,e.textSpanIntersectsWithTextSpan=function(e,t){return i(e.start,e.length,t.start,t.length)},e.textSpanIntersectsWith=function(e,t,r){return i(e.start,e.length,t,r)},e.decodedTextSpanIntersectsWith=i,e.textSpanIntersectsWithPosition=function(e,r){return r<=t(e)&&r>=e.start},e.textSpanIntersection=a,e.createTextSpan=o,e.createTextSpanFromBounds=s,e.textChangeRangeNewSpan=function(e){return o(e.span.start,e.newLength)},e.textChangeRangeIsUnchanged=function(e){return r(e.span)&&0===e.newLength},e.createTextChangeRange=c,e.unchangedTextChangeRange=c(o(0,0),0),e.collapseTextChangeRangesAcrossMultipleVersions=function(r){if(0===r.length)return e.unchangedTextChangeRange;if(1===r.length)return r[0];for(var n=r[0],i=n.span.start,a=t(n.span),o=i+n.newLength,u=1;u<r.length;u++){var l=r[u],_=i,d=a,p=o,f=l.span.start,m=t(l.span),g=f+l.newLength;i=Math.min(_,f),a=Math.max(d,d+(m-p)),o=Math.max(g,g+(p-m))}return c(s(i,a),o-i)},e.getTypeParameterOwner=function(t){if(t&&154===t.kind)for(var r=t;r;r=r.parent)if(e.isFunctionLike(r)||e.isClassLike(r)||245===r.kind)return r},e.isParameterPropertyDeclaration=function(t,r){return e.hasModifier(t,92)&&161===r.kind},e.isEmptyBindingPattern=u,e.isEmptyBindingElement=l,e.walkUpBindingElementsAndPatterns=_,e.getCombinedModifierFlags=function(t){return d(t,e.getModifierFlags)},e.getCombinedNodeFlags=function(e){return d(e,(function(e){return e.flags}))},e.validateLocaleAndSetLanguage=function(t,r,n){var i=/^([a-z]+)([_\-]([a-z]+))?$/.exec(t.toLowerCase());if(i){var a=i[1];o(a,i[3],n)||o(a,void 0,n),e.setUILocale(t)}else n&&n.push(e.createCompilerDiagnostic(e.Diagnostics.Locale_must_be_of_the_form_language_or_language_territory_For_example_0_or_1,"en","ja-jp"));function o(t,n,i){var a=e.normalizePath(r.getExecutingFilePath()),o=e.getDirectoryPath(a),s=e.combinePaths(o,t);if(n&&(s=s+"-"+n),s=r.resolvePath(e.combinePaths(s,"diagnosticMessages.generated.json")),!r.fileExists(s))return!1;var c="";try{c=r.readFile(s)}catch(t){return i&&i.push(e.createCompilerDiagnostic(e.Diagnostics.Unable_to_open_file_0,s)),!1}try{e.localizedDiagnosticMessages=JSON.parse(c)}catch(t){return i&&i.push(e.createCompilerDiagnostic(e.Diagnostics.Corrupted_locale_file_0,s)),!1}return!0}},e.getOriginalNode=p,e.isParseTreeNode=f,e.getParseTreeNode=function(e,t){return void 0===e||f(e)?e:!f(e=p(e))||t&&!t(e)?void 0:e},e.escapeLeadingUnderscores=function(e){return e.length>=2&&95===e.charCodeAt(0)&&95===e.charCodeAt(1)?"_"+e:e},e.unescapeLeadingUnderscores=m,e.idText=g,e.symbolName=function(e){return m(e.escapedName)},e.nodeHasName=function t(r,n){return!(!b(r)||!e.isIdentifier(r.name)||g(r.name)!==g(n))||!(!e.isVariableStatement(r)||!e.some(r.declarationList.declarations,(function(e){return t(e,n)})))},e.getNameOfJSDocTypedef=v,e.isNamedDeclaration=b,e.getNonAssignedNameOfDeclaration=x,e.getNameOfDeclaration=D,e.getJSDocParameterTags=S,e.getJSDocTypeParameterTags=function(t){var r=t.name.escapedText;return k(t.parent).filter((function(t){return e.isJSDocTemplateTag(t)&&t.typeParameters.some((function(e){return e.name.escapedText===r}))}))},e.hasJSDocParameterTags=function(t){return!!N(t,e.isJSDocParameterTag)},e.getJSDocAugmentsTag=function(t){return N(t,e.isJSDocAugmentsTag)},e.getJSDocClassTag=function(t){return N(t,e.isJSDocClassTag)},e.getJSDocEnumTag=function(t){return N(t,e.isJSDocEnumTag)},e.getJSDocThisTag=function(t){return N(t,e.isJSDocThisTag)},e.getJSDocReturnTag=T,e.getJSDocTemplateTag=function(t){return N(t,e.isJSDocTemplateTag)},e.getJSDocTypeTag=E,e.getJSDocType=C,e.getJSDocReturnType=function(t){var r=T(t);if(r&&r.typeExpression)return r.typeExpression.type;var n=E(t);if(n&&n.typeExpression){var i=n.typeExpression.type;if(e.isTypeLiteralNode(i)){var a=e.find(i.members,e.isCallSignatureDeclaration);return a&&a.type}if(e.isFunctionTypeNode(i))return i.type}},e.getJSDocTags=k,e.getAllJSDocTagsOfKind=function(e,t){return k(e).filter((function(e){return e.kind===t}))},e.getEffectiveTypeParameterDeclarations=function(t){if(e.isJSDocSignature(t))return e.emptyArray;if(e.isJSDocTypeAlias(t))return e.Debug.assert(301===t.parent.kind),e.flatMap(t.parent.tags,(function(t){return e.isJSDocTemplateTag(t)?t.typeParameters:void 0}));if(t.typeParameters)return t.typeParameters;if(e.isInJSFile(t)){var r=e.getJSDocTypeParameterDeclarations(t);if(r.length)return r;var n=C(t);if(n&&e.isFunctionTypeNode(n)&&n.typeParameters)return n.typeParameters}return e.emptyArray},e.getEffectiveConstraintOfTypeParameter=function(t){return t.constraint?t.constraint:e.isJSDocTemplateTag(t.parent)&&t===t.parent.typeParameters[0]?t.parent.constraint:void 0}}(s||(s={})),function(e){function t(e){return 75===e.kind}function r(e){return 168===e.kind}function n(e){return 193===e.kind}function i(e){return 194===e.kind}function a(e){return 195===e.kind}function o(e){switch(e.kind){case 285:case 286:return!0;default:return!1}}e.isNumericLiteral=function(e){return 8===e.kind},e.isBigIntLiteral=function(e){return 9===e.kind},e.isStringLiteral=function(e){return 10===e.kind},e.isJsxText=function(e){return 11===e.kind},e.isRegularExpressionLiteral=function(e){return 13===e.kind},e.isNoSubstitutionTemplateLiteral=function(e){return 14===e.kind},e.isTemplateHead=function(e){return 15===e.kind},e.isTemplateMiddle=function(e){return 16===e.kind},e.isTemplateTail=function(e){return 17===e.kind},e.isIdentifier=t,e.isQualifiedName=function(e){return 152===e.kind},e.isComputedPropertyName=function(e){return 153===e.kind},e.isTypeParameterDeclaration=function(e){return 154===e.kind},e.isParameter=function(e){return 155===e.kind},e.isDecorator=function(e){return 156===e.kind},e.isPropertySignature=function(e){return 157===e.kind},e.isPropertyDeclaration=function(e){return 158===e.kind},e.isMethodSignature=function(e){return 159===e.kind},e.isMethodDeclaration=function(e){return 160===e.kind},e.isConstructorDeclaration=function(e){return 161===e.kind},e.isGetAccessorDeclaration=function(e){return 162===e.kind},e.isSetAccessorDeclaration=function(e){return 163===e.kind},e.isCallSignatureDeclaration=function(e){return 164===e.kind},e.isConstructSignatureDeclaration=function(e){return 165===e.kind},e.isIndexSignatureDeclaration=function(e){return 166===e.kind},e.isGetOrSetAccessorDeclaration=function(e){return 163===e.kind||162===e.kind},e.isTypePredicateNode=function(e){return 167===e.kind},e.isTypeReferenceNode=r,e.isFunctionTypeNode=function(e){return 169===e.kind},e.isConstructorTypeNode=function(e){return 170===e.kind},e.isTypeQueryNode=function(e){return 171===e.kind},e.isTypeLiteralNode=function(e){return 172===e.kind},e.isArrayTypeNode=function(e){return 173===e.kind},e.isTupleTypeNode=function(e){return 174===e.kind},e.isUnionTypeNode=function(e){return 177===e.kind},e.isIntersectionTypeNode=function(e){return 178===e.kind},e.isConditionalTypeNode=function(e){return 179===e.kind},e.isInferTypeNode=function(e){return 180===e.kind},e.isParenthesizedTypeNode=function(e){return 181===e.kind},e.isThisTypeNode=function(e){return 182===e.kind},e.isTypeOperatorNode=function(e){return 183===e.kind},e.isIndexedAccessTypeNode=function(e){return 184===e.kind},e.isMappedTypeNode=function(e){return 185===e.kind},e.isLiteralTypeNode=function(e){return 186===e.kind},e.isImportTypeNode=function(e){return 187===e.kind},e.isObjectBindingPattern=function(e){return 188===e.kind},e.isArrayBindingPattern=function(e){return 189===e.kind},e.isBindingElement=function(e){return 190===e.kind},e.isArrayLiteralExpression=function(e){return 191===e.kind},e.isObjectLiteralExpression=function(e){return 192===e.kind},e.isPropertyAccessExpression=n,e.isPropertyAccessChain=function(e){return n(e)&&!!(32&e.flags)},e.isElementAccessExpression=i,e.isElementAccessChain=function(e){return i(e)&&!!(32&e.flags)},e.isCallExpression=a,e.isCallChain=function(e){return a(e)&&!!(32&e.flags)},e.isOptionalChain=function(e){var t=e.kind;return!!(32&e.flags)&&(193===t||194===t||195===t)},e.isExpressionOfOptionalChainRoot=function(t){return e.isOptionalChainRoot(t.parent)&&t.parent.expression===t},e.isNullishCoalesce=function(e){return 208===e.kind&&60===e.operatorToken.kind},e.isNewExpression=function(e){return 196===e.kind},e.isTaggedTemplateExpression=function(e){return 197===e.kind},e.isTypeAssertion=function(e){return 198===e.kind},e.isConstTypeReference=function(e){return r(e)&&t(e.typeName)&&"const"===e.typeName.escapedText&&!e.typeArguments},e.isParenthesizedExpression=function(e){return 199===e.kind},e.skipPartiallyEmittedExpressions=function(e){for(;319===e.kind;)e=e.expression;return e},e.isFunctionExpression=function(e){return 200===e.kind},e.isArrowFunction=function(e){return 201===e.kind},e.isDeleteExpression=function(e){return 202===e.kind},e.isTypeOfExpression=function(e){return 203===e.kind},e.isVoidExpression=function(e){return 204===e.kind},e.isAwaitExpression=function(e){return 205===e.kind},e.isPrefixUnaryExpression=function(e){return 206===e.kind},e.isPostfixUnaryExpression=function(e){return 207===e.kind},e.isBinaryExpression=function(e){return 208===e.kind},e.isConditionalExpression=function(e){return 209===e.kind},e.isTemplateExpression=function(e){return 210===e.kind},e.isYieldExpression=function(e){return 211===e.kind},e.isSpreadElement=function(e){return 212===e.kind},e.isClassExpression=function(e){return 213===e.kind},e.isOmittedExpression=function(e){return 214===e.kind},e.isExpressionWithTypeArguments=function(e){return 215===e.kind},e.isAsExpression=function(e){return 216===e.kind},e.isNonNullExpression=function(e){return 217===e.kind},e.isMetaProperty=function(e){return 218===e.kind},e.isTemplateSpan=function(e){return 220===e.kind},e.isSemicolonClassElement=function(e){return 221===e.kind},e.isBlock=function(e){return 222===e.kind},e.isVariableStatement=function(e){return 224===e.kind},e.isEmptyStatement=function(e){return 223===e.kind},e.isExpressionStatement=function(e){return 225===e.kind},e.isIfStatement=function(e){return 226===e.kind},e.isDoStatement=function(e){return 227===e.kind},e.isWhileStatement=function(e){return 228===e.kind},e.isForStatement=function(e){return 229===e.kind},e.isForInStatement=function(e){return 230===e.kind},e.isForOfStatement=function(e){return 231===e.kind},e.isContinueStatement=function(e){return 232===e.kind},e.isBreakStatement=function(e){return 233===e.kind},e.isBreakOrContinueStatement=function(e){return 233===e.kind||232===e.kind},e.isReturnStatement=function(e){return 234===e.kind},e.isWithStatement=function(e){return 235===e.kind},e.isSwitchStatement=function(e){return 236===e.kind},e.isLabeledStatement=function(e){return 237===e.kind},e.isThrowStatement=function(e){return 238===e.kind},e.isTryStatement=function(e){return 239===e.kind},e.isDebuggerStatement=function(e){return 240===e.kind},e.isVariableDeclaration=function(e){return 241===e.kind},e.isVariableDeclarationList=function(e){return 242===e.kind},e.isFunctionDeclaration=function(e){return 243===e.kind},e.isClassDeclaration=function(e){return 244===e.kind},e.isInterfaceDeclaration=function(e){return 245===e.kind},e.isTypeAliasDeclaration=function(e){return 246===e.kind},e.isEnumDeclaration=function(e){return 247===e.kind},e.isModuleDeclaration=function(e){return 248===e.kind},e.isModuleBlock=function(e){return 249===e.kind},e.isCaseBlock=function(e){return 250===e.kind},e.isNamespaceExportDeclaration=function(e){return 251===e.kind},e.isImportEqualsDeclaration=function(e){return 252===e.kind},e.isImportDeclaration=function(e){return 253===e.kind},e.isImportClause=function(e){return 254===e.kind},e.isNamespaceImport=function(e){return 255===e.kind},e.isNamedImports=function(e){return 256===e.kind},e.isImportSpecifier=function(e){return 257===e.kind},e.isExportAssignment=function(e){return 258===e.kind},e.isExportDeclaration=function(e){return 259===e.kind},e.isNamedExports=function(e){return 260===e.kind},e.isExportSpecifier=function(e){return 261===e.kind},e.isMissingDeclaration=function(e){return 262===e.kind},e.isExternalModuleReference=function(e){return 263===e.kind},e.isJsxElement=function(e){return 264===e.kind},e.isJsxSelfClosingElement=function(e){return 265===e.kind},e.isJsxOpeningElement=function(e){return 266===e.kind},e.isJsxClosingElement=function(e){return 267===e.kind},e.isJsxFragment=function(e){return 268===e.kind},e.isJsxOpeningFragment=function(e){return 269===e.kind},e.isJsxClosingFragment=function(e){return 270===e.kind},e.isJsxAttribute=function(e){return 271===e.kind},e.isJsxAttributes=function(e){return 272===e.kind},e.isJsxSpreadAttribute=function(e){return 273===e.kind},e.isJsxExpression=function(e){return 274===e.kind},e.isCaseClause=function(e){return 275===e.kind},e.isDefaultClause=function(e){return 276===e.kind},e.isHeritageClause=function(e){return 277===e.kind},e.isCatchClause=function(e){return 278===e.kind},e.isPropertyAssignment=function(e){return 279===e.kind},e.isShorthandPropertyAssignment=function(e){return 280===e.kind},e.isSpreadAssignment=function(e){return 281===e.kind},e.isEnumMember=function(e){return 282===e.kind},e.isSourceFile=function(e){return 288===e.kind},e.isBundle=function(e){return 289===e.kind},e.isUnparsedSource=function(e){return 290===e.kind},e.isUnparsedPrepend=function(e){return 284===e.kind},e.isUnparsedTextLike=o,e.isUnparsedNode=function(e){return o(e)||283===e.kind||287===e.kind},e.isJSDocTypeExpression=function(e){return 292===e.kind},e.isJSDocAllType=function(e){return 293===e.kind},e.isJSDocUnknownType=function(e){return 294===e.kind},e.isJSDocNullableType=function(e){return 295===e.kind},e.isJSDocNonNullableType=function(e){return 296===e.kind},e.isJSDocOptionalType=function(e){return 297===e.kind},e.isJSDocFunctionType=function(e){return 298===e.kind},e.isJSDocVariadicType=function(e){return 299===e.kind},e.isJSDoc=function(e){return 301===e.kind},e.isJSDocAuthorTag=function(e){return 306===e.kind},e.isJSDocAugmentsTag=function(e){return 305===e.kind},e.isJSDocClassTag=function(e){return 307===e.kind},e.isJSDocEnumTag=function(e){return 309===e.kind},e.isJSDocThisTag=function(e){return 312===e.kind},e.isJSDocParameterTag=function(e){return 310===e.kind},e.isJSDocReturnTag=function(e){return 311===e.kind},e.isJSDocTypeTag=function(e){return 313===e.kind},e.isJSDocTemplateTag=function(e){return 314===e.kind},e.isJSDocTypedefTag=function(e){return 315===e.kind},e.isJSDocPropertyTag=function(e){return 316===e.kind},e.isJSDocPropertyLikeTag=function(e){return 316===e.kind||310===e.kind},e.isJSDocTypeLiteral=function(e){return 302===e.kind},e.isJSDocCallbackTag=function(e){return 308===e.kind},e.isJSDocSignature=function(e){return 303===e.kind}}(s||(s={})),function(e){function t(e){return e>=152}function r(e){return 8<=e&&e<=14}function n(e){return 14<=e&&e<=17}function i(e){switch(e){case 121:case 125:case 80:case 129:case 83:case 88:case 118:case 116:case 117:case 137:case 119:return!0}return!1}function a(t){return!!(92&e.modifierToFlag(t))}function o(e){return e&&c(e.kind)}function s(e){switch(e){case 243:case 160:case 161:case 162:case 163:case 200:case 201:return!0;default:return!1}}function c(e){switch(e){case 159:case 164:case 303:case 165:case 166:case 169:case 298:case 170:return!0;default:return s(e)}}function u(e){var t=e.kind;return 161===t||158===t||160===t||162===t||163===t||166===t||221===t}function l(e){var t=e.kind;return 165===t||164===t||157===t||159===t||166===t}function _(e){var t=e.kind;return 279===t||280===t||281===t||160===t||162===t||163===t}function d(e){switch(e.kind){case 188:case 192:return!0}return!1}function p(e){switch(e.kind){case 189:case 191:return!0}return!1}function f(e){switch(e){case 193:case 194:case 196:case 195:case 264:case 265:case 268:case 197:case 191:case 199:case 192:case 213:case 200:case 75:case 13:case 8:case 9:case 10:case 14:case 210:case 90:case 99:case 103:case 105:case 101:case 217:case 218:case 95:return!0;default:return!1}}function m(e){switch(e){case 206:case 207:case 202:case 203:case 204:case 205:case 198:return!0;default:return f(e)}}function g(t){return function(e){switch(e){case 209:case 211:case 201:case 208:case 212:case 216:case 214:case 320:case 319:return!0;default:return m(e)}}(e.skipPartiallyEmittedExpressions(t).kind)}function y(e){return 319===e.kind}function h(e){return 318===e.kind}function v(t){return e.isExportAssignment(t)||e.isExportDeclaration(t)}function b(e){return 243===e||262===e||244===e||245===e||246===e||247===e||248===e||253===e||252===e||259===e||258===e||251===e}function x(e){return 233===e||232===e||240===e||227===e||225===e||223===e||230===e||231===e||229===e||226===e||237===e||234===e||236===e||238===e||239===e||224===e||228===e||235===e||318===e||322===e||321===e}function D(e){return e.kind>=304&&e.kind<=316}function S(e){return!!e.initializer}e.isSyntaxList=function(e){return 317===e.kind},e.isNode=function(e){return t(e.kind)},e.isNodeKind=t,e.isToken=function(e){return e.kind>=0&&e.kind<=151},e.isNodeArray=function(e){return e.hasOwnProperty("pos")&&e.hasOwnProperty("end")},e.isLiteralKind=r,e.isLiteralExpression=function(e){return r(e.kind)},e.isTemplateLiteralKind=n,e.isTemplateLiteralToken=function(e){return n(e.kind)},e.isTemplateMiddleOrTemplateTail=function(e){var t=e.kind;return 16===t||17===t},e.isImportOrExportSpecifier=function(t){return e.isImportSpecifier(t)||e.isExportSpecifier(t)},e.isStringTextContainingNode=function(e){return 10===e.kind||n(e.kind)},e.isGeneratedIdentifier=function(t){return e.isIdentifier(t)&&(7&t.autoGenerateFlags)>0},e.isModifierKind=i,e.isParameterPropertyModifier=a,e.isClassMemberModifier=function(e){return a(e)||119===e},e.isModifier=function(e){return i(e.kind)},e.isEntityName=function(e){var t=e.kind;return 152===t||75===t},e.isPropertyName=function(e){var t=e.kind;return 75===t||10===t||8===t||153===t},e.isBindingName=function(e){var t=e.kind;return 75===t||188===t||189===t},e.isFunctionLike=o,e.isFunctionLikeDeclaration=function(e){return e&&s(e.kind)},e.isFunctionLikeKind=c,e.isFunctionOrModuleBlock=function(t){return e.isSourceFile(t)||e.isModuleBlock(t)||e.isBlock(t)&&o(t.parent)},e.isClassElement=u,e.isClassLike=function(e){return e&&(244===e.kind||213===e.kind)},e.isAccessor=function(e){return e&&(162===e.kind||163===e.kind)},e.isMethodOrAccessor=function(e){switch(e.kind){case 160:case 162:case 163:return!0;default:return!1}},e.isTypeElement=l,e.isClassOrTypeElement=function(e){return l(e)||u(e)},e.isObjectLiteralElementLike=_,e.isTypeNode=function(t){return e.isTypeNodeKind(t.kind)},e.isFunctionOrConstructorTypeNode=function(e){switch(e.kind){case 169:case 170:return!0}return!1},e.isBindingPattern=function(e){if(e){var t=e.kind;return 189===t||188===t}return!1},e.isAssignmentPattern=function(e){var t=e.kind;return 191===t||192===t},e.isArrayBindingElement=function(e){var t=e.kind;return 190===t||214===t},e.isDeclarationBindingElement=function(e){switch(e.kind){case 241:case 155:case 190:return!0}return!1},e.isBindingOrAssignmentPattern=function(e){return d(e)||p(e)},e.isObjectBindingOrAssignmentPattern=d,e.isArrayBindingOrAssignmentPattern=p,e.isPropertyAccessOrQualifiedNameOrImportTypeNode=function(e){var t=e.kind;return 193===t||152===t||187===t},e.isPropertyAccessOrQualifiedName=function(e){var t=e.kind;return 193===t||152===t},e.isCallLikeExpression=function(e){switch(e.kind){case 266:case 265:case 195:case 196:case 197:case 156:return!0;default:return!1}},e.isCallOrNewExpression=function(e){return 195===e.kind||196===e.kind},e.isTemplateLiteral=function(e){var t=e.kind;return 210===t||14===t},e.isLeftHandSideExpression=function(t){return f(e.skipPartiallyEmittedExpressions(t).kind)},e.isUnaryExpression=function(t){return m(e.skipPartiallyEmittedExpressions(t).kind)},e.isUnaryExpressionWithWrite=function(e){switch(e.kind){case 207:return!0;case 206:return 45===e.operator||46===e.operator;default:return!1}},e.isExpression=g,e.isAssertionExpression=function(e){var t=e.kind;return 198===t||216===t},e.isPartiallyEmittedExpression=y,e.isNotEmittedStatement=h,e.isSyntheticReference=function(e){return 323===e.kind},e.isNotEmittedOrPartiallyEmittedNode=function(e){return h(e)||y(e)},e.isIterationStatement=function e(t,r){switch(t.kind){case 229:case 230:case 231:case 227:case 228:return!0;case 237:return r&&e(t.statement,r)}return!1},e.isScopeMarker=v,e.hasScopeMarker=function(t){return e.some(t,v)},e.needsScopeMarker=function(t){return!(e.isAnyImportOrReExport(t)||e.isExportAssignment(t)||e.hasModifier(t,1)||e.isAmbientModule(t))},e.isExternalModuleIndicator=function(t){return e.isAnyImportOrReExport(t)||e.isExportAssignment(t)||e.hasModifier(t,1)},e.isForInOrOfStatement=function(e){return 230===e.kind||231===e.kind},e.isConciseBody=function(t){return e.isBlock(t)||g(t)},e.isFunctionBody=function(t){return e.isBlock(t)},e.isForInitializer=function(t){return e.isVariableDeclarationList(t)||g(t)},e.isModuleBody=function(e){var t=e.kind;return 249===t||248===t||75===t},e.isNamespaceBody=function(e){var t=e.kind;return 249===t||248===t},e.isJSDocNamespaceBody=function(e){var t=e.kind;return 75===t||248===t},e.isNamedImportBindings=function(e){var t=e.kind;return 256===t||255===t},e.isModuleOrEnumDeclaration=function(e){return 248===e.kind||247===e.kind},e.isDeclaration=function(t){return 154===t.kind?t.parent&&314!==t.parent.kind||e.isInJSFile(t):201===(r=t.kind)||190===r||244===r||213===r||161===r||247===r||282===r||261===r||243===r||200===r||162===r||254===r||252===r||257===r||245===r||271===r||160===r||159===r||248===r||251===r||255===r||155===r||279===r||158===r||157===r||163===r||280===r||246===r||154===r||241===r||315===r||308===r||316===r;var r},e.isDeclarationStatement=function(e){return b(e.kind)},e.isStatementButNotDeclaration=function(e){return x(e.kind)},e.isStatement=function(t){var r=t.kind;return x(r)||b(r)||function(t){if(222!==t.kind)return!1;if(void 0!==t.parent&&(239===t.parent.kind||278===t.parent.kind))return!1;return!e.isFunctionBlock(t)}(t)},e.isModuleReference=function(e){var t=e.kind;return 263===t||152===t||75===t},e.isJsxTagNameExpression=function(e){var t=e.kind;return 103===t||75===t||193===t},e.isJsxChild=function(e){var t=e.kind;return 264===t||274===t||265===t||11===t||268===t},e.isJsxAttributeLike=function(e){var t=e.kind;return 271===t||273===t},e.isStringLiteralOrJsxExpression=function(e){var t=e.kind;return 10===t||274===t},e.isJsxOpeningLikeElement=function(e){var t=e.kind;return 266===t||265===t},e.isCaseOrDefaultClause=function(e){var t=e.kind;return 275===t||276===t},e.isJSDocNode=function(e){return e.kind>=292&&e.kind<=316},e.isJSDocCommentContainingNode=function(t){return 301===t.kind||D(t)||e.isJSDocTypeLiteral(t)||e.isJSDocSignature(t)},e.isJSDocTag=D,e.isSetAccessor=function(e){return 163===e.kind},e.isGetAccessor=function(e){return 162===e.kind},e.isOptionalChainRoot=function(t){return e.isOptionalChain(t)&&!!t.questionDotToken},e.hasJSDocNodes=function(e){var t=e.jsDoc;return!!t&&t.length>0},e.hasType=function(e){return!!e.type},e.hasInitializer=S,e.hasOnlyExpressionInitializer=function(t){return S(t)&&!e.isForStatement(t)&&!e.isForInStatement(t)&&!e.isForOfStatement(t)&&!e.isJsxAttribute(t)},e.isObjectLiteralElement=function(e){return 271===e.kind||273===e.kind||_(e)},e.isTypeReferenceType=function(e){return 168===e.kind||215===e.kind};var T=1073741823;e.guessIndentation=function(t){for(var r=T,n=0,i=t;n<i.length;n++){var a=i[n];if(a.length){for(var o=0;o<a.length&&o<r&&e.isWhiteSpaceLike(a.charCodeAt(o));o++);if(o<r&&(r=o),0===r)return 0}}return r===T?void 0:r},e.isStringLiteralLike=function(e){return 10===e.kind||14===e.kind}}(s||(s={})),function(e){function t(e,t){this.flags=e,this.escapedName=t,this.declarations=void 0,this.valueDeclaration=void 0,this.id=void 0,this.mergeId=void 0,this.parent=void 0}function r(t,r){this.flags=r,e.Debug.isDebugging&&(this.checker=t)}function n(t,r){this.flags=r,e.Debug.isDebugging&&(this.checker=t)}function i(e,t,r){this.pos=t,this.end=r,this.kind=e,this.id=0,this.flags=0,this.modifierFlagsCache=0,this.transformFlags=0,this.parent=void 0,this.original=void 0}function a(e,t,r){this.fileName=e,this.text=t,this.skipTrivia=r||function(e){return e}}function o(t,r,n){return void 0===n&&(n=0),t.replace(/{(\d+)}/g,(function(t,i){return""+e.Debug.assertDefined(r[+i+n])}))}function s(t){return e.localizedDiagnosticMessages&&e.localizedDiagnosticMessages[t.key]||t.message}function c(e){return e.file?e.file.path:void 0}function u(t,r){return l(t,r)||function(t,r){if(!t.relatedInformation&&!r.relatedInformation)return 0;if(t.relatedInformation&&r.relatedInformation)return e.compareValues(t.relatedInformation.length,r.relatedInformation.length)||e.forEach(t.relatedInformation,(function(e,t){return u(e,r.relatedInformation[t])}))||0;return t.relatedInformation?-1:1}(t,r)||0}function l(t,r){return e.compareStringsCaseSensitive(c(t),c(r))||e.compareValues(t.start,r.start)||e.compareValues(t.length,r.length)||e.compareValues(t.code,r.code)||function t(r,n){if("string"==typeof r&&"string"==typeof n)return e.compareStringsCaseSensitive(r,n);if("string"==typeof r)return-1;if("string"==typeof n)return 1;var i=e.compareStringsCaseSensitive(r.messageText,n.messageText);if(i)return i;if(!r.next&&!n.next)return 0;if(!r.next)return-1;if(!n.next)return 1;var a=Math.min(r.next.length,n.next.length);for(var o=0;o<a;o++)if(i=t(r.next[o],n.next[o]))return i;if(r.next.length<n.next.length)return-1;if(r.next.length>n.next.length)return 1;return 0}(t.messageText,r.messageText)||0}function _(e){return e.target||0}function d(t){return"number"==typeof t.module?t.module:_(t)>=2?e.ModuleKind.ES2015:e.ModuleKind.CommonJS}function p(e){return!(!e.declaration&&!e.composite)}function f(e,t){return void 0===e[t]?!!e.strict:!!e[t]}function m(e,t){return t.strictFlag?f(e,t.name):e[t.name]}function g(t,r,n,i){for(var a=e.getPathComponents(e.toPath(t,n,i)),o=e.getPathComponents(e.toPath(r,n,i));!y(a[a.length-2],i)&&!y(o[o.length-2],i)&&i(a[a.length-1])===i(o[o.length-1]);)a.pop(),o.pop();return[e.getPathFromPathComponents(a),e.getPathFromPathComponents(o)]}function y(t,r){return"node_modules"===r(t)||e.startsWith(t,"@")}e.isNamedImportsOrExports=function(e){return 256===e.kind||260===e.kind},e.objectAllocator={getNodeConstructor:function(){return i},getTokenConstructor:function(){return i},getIdentifierConstructor:function(){return i},getSourceFileConstructor:function(){return i},getSymbolConstructor:function(){return t},getTypeConstructor:function(){return r},getSignatureConstructor:function(){return n},getSourceMapSourceConstructor:function(){return a}},e.formatStringFromArgs=o,e.getLocaleSpecificMessage=s,e.createFileDiagnostic=function(t,r,n,i){e.Debug.assertGreaterThanOrEqual(r,0),e.Debug.assertGreaterThanOrEqual(n,0),t&&(e.Debug.assertLessThanOrEqual(r,t.text.length),e.Debug.assertLessThanOrEqual(r+n,t.text.length));var a=s(i);return arguments.length>4&&(a=o(a,arguments,4)),{file:t,start:r,length:n,messageText:a,category:i.category,code:i.code,reportsUnnecessary:i.reportsUnnecessary}},e.formatMessage=function(e,t){var r=s(t);return arguments.length>2&&(r=o(r,arguments,2)),r},e.createCompilerDiagnostic=function(e){var t=s(e);return arguments.length>1&&(t=o(t,arguments,1)),{file:void 0,start:void 0,length:void 0,messageText:t,category:e.category,code:e.code,reportsUnnecessary:e.reportsUnnecessary}},e.createCompilerDiagnosticFromMessageChain=function(e){return{file:void 0,start:void 0,length:void 0,code:e.code,category:e.category,messageText:e.next?e:e.messageText}},e.chainDiagnosticMessages=function(e,t){var r=s(t);return arguments.length>2&&(r=o(r,arguments,2)),{messageText:r,category:t.category,code:t.code,next:void 0===e||Array.isArray(e)?e:[e]}},e.concatenateDiagnosticMessageChains=function(e,t){for(var r=e;r.next;)r=r.next[0];r.next=[t]},e.compareDiagnostics=u,e.compareDiagnosticsSkipRelatedInformation=l,e.getEmitScriptTarget=_,e.getEmitModuleKind=d,e.getEmitModuleResolutionKind=function(t){var r=t.moduleResolution;return void 0===r&&(r=d(t)===e.ModuleKind.CommonJS?e.ModuleResolutionKind.NodeJs:e.ModuleResolutionKind.Classic),r},e.hasJsonModuleEmitEnabled=function(t){switch(d(t)){case e.ModuleKind.CommonJS:case e.ModuleKind.AMD:case e.ModuleKind.ES2015:case e.ModuleKind.ESNext:return!0;default:return!1}},e.unreachableCodeIsError=function(e){return!1===e.allowUnreachableCode},e.unusedLabelIsError=function(e){return!1===e.allowUnusedLabels},e.getAreDeclarationMapsEnabled=function(e){return!(!p(e)||!e.declarationMap)},e.getAllowSyntheticDefaultImports=function(t){var r=d(t);return void 0!==t.allowSyntheticDefaultImports?t.allowSyntheticDefaultImports:t.esModuleInterop||r===e.ModuleKind.System},e.getEmitDeclarations=p,e.isIncrementalCompilation=function(e){return!(!e.incremental&&!e.composite)},e.getStrictOptionValue=f,e.compilerOptionsAffectSemanticDiagnostics=function(t,r){return r!==t&&e.semanticDiagnosticsOptionDeclarations.some((function(n){return!e.isJsonEqual(m(r,n),m(t,n))}))},e.compilerOptionsAffectEmit=function(t,r){return r!==t&&e.affectsEmitOptionDeclarations.some((function(n){return!e.isJsonEqual(m(r,n),m(t,n))}))},e.getCompilerOptionValue=m,e.hasZeroOrOneAsteriskCharacter=function(e){for(var t=!1,r=0;r<e.length;r++)if(42===e.charCodeAt(r)){if(t)return!1;t=!0}return!0},e.discoverProbableSymlinks=function(t,r,n){for(var i=e.createMap(),a=0,o=e.flatten(e.mapDefined(t,(function(t){return t.resolvedModules&&e.compact(e.arrayFrom(e.mapIterator(t.resolvedModules.values(),(function(e){return e&&e.originalPath&&e.resolvedFileName!==e.originalPath?[e.resolvedFileName,e.originalPath]:void 0}))))})));a<o.length;a++){var s=o[a],c=g(s[0],s[1],n,r),u=c[0],l=c[1];i.set(l,u)}return i}}(s||(s={})),function(e){e.tryRemoveDirectoryPrefix=function(t,r,n){var i=e.tryRemovePrefix(t,r,n);return void 0===i?void 0:function(t){return e.isAnyDirectorySeparator(t.charCodeAt(0))?t.slice(1):void 0}(i)};var r=/[^\w\s\/]/g;function n(e){return"\\"+e}e.regExpEscape=function(e){return e.replace(r,n)};var i=[42,63];e.commonPackageFolders=["node_modules","bower_components","jspm_packages"];var a="(?!("+e.commonPackageFolders.join("|")+")(/|$))",o={singleAsteriskRegexFragment:"([^./]|(\\.(?!min\\.js$))?)*",doubleAsteriskRegexFragment:"(/"+a+"[^/.][^/]*)*?",replaceWildcardCharacter:function(e){return p(e,o.singleAsteriskRegexFragment)}},s={singleAsteriskRegexFragment:"[^/]*",doubleAsteriskRegexFragment:"(/"+a+"[^/.][^/]*)*?",replaceWildcardCharacter:function(e){return p(e,s.singleAsteriskRegexFragment)}},c={singleAsteriskRegexFragment:"[^/]*",doubleAsteriskRegexFragment:"(/.+?)?",replaceWildcardCharacter:function(e){return p(e,c.singleAsteriskRegexFragment)}},u={files:o,directories:s,exclude:c};function l(e,t,r){var n=_(e,t,r);if(n&&n.length)return"^("+n.map((function(e){return"("+e+")"})).join("|")+")"+("exclude"===r?"($|/)":"$")}function _(t,n,i){if(void 0!==t&&0!==t.length)return e.flatMap(t,(function(t){return t&&function(t,n,i,o){var s=o.singleAsteriskRegexFragment,c=o.doubleAsteriskRegexFragment,u=o.replaceWildcardCharacter,l="",_=!1,p=e.getNormalizedPathComponents(t,n),f=e.last(p);if("exclude"!==i&&"**"===f)return;p[0]=e.removeTrailingDirectorySeparator(p[0]),d(f)&&p.push("**","*");for(var m=0,g=0,y=p;g<y.length;g++){var h=y[g];if("**"===h)l+=c;else if("directories"===i&&(l+="(",m++),_&&(l+=e.directorySeparator),"exclude"!==i){var v="";42===h.charCodeAt(0)?(v+="([^./]"+s+")?",h=h.substr(1)):63===h.charCodeAt(0)&&(v+="[^./]",h=h.substr(1)),(v+=h.replace(r,u))!==h&&(l+=a),l+=v}else l+=h.replace(r,u);_=!0}for(;m>0;)l+=")?",m--;return l}(t,n,i,u[i])}))}function d(e){return!/[.*?]/.test(e)}function p(e,t){return"*"===e?t:"?"===e?"[^/]":"\\"+e}function m(t,r,n,i,a){t=e.normalizePath(t),a=e.normalizePath(a);var o=e.combinePaths(a,t);return{includeFilePatterns:e.map(_(n,o,"files"),(function(e){return"^"+e+"$"})),includeFilePattern:l(n,o,"files"),includeDirectoryPattern:l(n,o,"directories"),excludePattern:l(r,o,"exclude"),basePaths:y(t,n,i)}}function g(e,t){return new RegExp(e,t?"":"i")}function y(t,r,n){var i=[t];if(r){for(var a=[],o=0,s=r;o<s.length;o++){var c=s[o],u=e.isRootedDiskPath(c)?c:e.normalizePath(e.combinePaths(t,c));a.push(h(u))}a.sort(e.getStringComparer(!n));for(var l=function(r){e.every(i,(function(i){return!e.containsPath(i,r,t,!n)}))&&i.push(r)},_=0,d=a;_<d.length;_++){l(d[_])}}return i}function h(t){var r=e.indexOfAnyCharCode(t,i);return r<0?e.hasExtension(t)?e.removeTrailingDirectorySeparator(e.getDirectoryPath(t)):t:t.substring(0,t.lastIndexOf(e.directorySeparator,r))}function v(e){switch(e.substr(e.lastIndexOf(".")).toLowerCase()){case".js":return 1;case".jsx":return 2;case".ts":return 3;case".tsx":return 4;case".json":return 6;default:return 0}}e.getRegularExpressionForWildcard=l,e.getRegularExpressionsForWildcards=_,e.isImplicitGlob=d,e.getFileMatcherPatterns=m,e.getRegexFromPattern=g,e.matchFiles=function(t,r,n,i,a,o,s,c,u){t=e.normalizePath(t),o=e.normalizePath(o);for(var l=m(t,n,i,a,o),_=l.includeFilePatterns&&l.includeFilePatterns.map((function(e){return g(e,a)})),d=l.includeDirectoryPattern&&g(l.includeDirectoryPattern,a),p=l.excludePattern&&g(l.excludePattern,a),f=_?_.map((function(){return[]})):[[]],y=e.createMap(),h=e.createGetCanonicalFileName(a),v=0,b=l.basePaths;v<b.length;v++){var x=b[v];D(x,e.combinePaths(o,x),s)}return e.flatten(f);function D(t,n,i){var a=h(u(n));if(!y.has(a)){y.set(a,!0);for(var o=c(t),s=o.files,l=o.directories,m=function(i){var a=e.combinePaths(t,i),o=e.combinePaths(n,i);if(r&&!e.fileExtensionIsOneOf(a,r))return"continue";if(p&&p.test(o))return"continue";if(_){var s=e.findIndex(_,(function(e){return e.test(o)}));-1!==s&&f[s].push(a)}else f[0].push(a)},g=0,v=e.sort(s,e.compareStringsCaseSensitive);g<v.length;g++){m(S=v[g])}if(void 0===i||0!=--i)for(var b=0,x=e.sort(l,e.compareStringsCaseSensitive);b<x.length;b++){var S=x[b],T=e.combinePaths(t,S),E=e.combinePaths(n,S);d&&!d.test(E)||p&&p.test(E)||D(T,E,i)}}}},e.ensureScriptKind=function(e,t){return t||v(e)||3},e.getScriptKindFromFileName=v,e.supportedTSExtensions=[".ts",".tsx",".d.ts"],e.supportedTSExtensionsWithJson=[".ts",".tsx",".d.ts",".json"],e.supportedTSExtensionsForExtractExtension=[".d.ts",".ts",".tsx"],e.supportedJSExtensions=[".js",".jsx"],e.supportedJSAndJsonExtensions=[".js",".jsx",".json"];var b=t(e.supportedTSExtensions,e.supportedJSExtensions),x=t(e.supportedTSExtensions,e.supportedJSExtensions,[".json"]);function D(r,n){var i=r&&r.allowJs;if(!n||0===n.length)return i?b:e.supportedTSExtensions;var a=t(i?b:e.supportedTSExtensions,e.mapDefined(n,(function(e){return 7===e.scriptKind||i&&(1===(t=e.scriptKind)||2===t)?e.extension:void 0;var t})));return e.deduplicate(a,e.equateStringsCaseSensitive,e.compareStringsCaseSensitive)}function S(r,n){return r&&r.resolveJsonModule?n===b?x:n===e.supportedTSExtensions?e.supportedTSExtensionsWithJson:t(n,[".json"]):n}function T(e,t){return e<2?0:e<t.length?2:t.length}e.getSupportedExtensions=D,e.getSuppoertedExtensionsWithJsonIfResolveJsonModule=S,e.hasJSFileExtension=function(t){return e.some(e.supportedJSExtensions,(function(r){return e.fileExtensionIs(t,r)}))},e.hasJSOrJsonFileExtension=function(t){return e.supportedJSAndJsonExtensions.some((function(r){return e.fileExtensionIs(t,r)}))},e.hasTSFileExtension=function(t){return e.some(e.supportedTSExtensions,(function(r){return e.fileExtensionIs(t,r)}))},e.isSupportedSourceFileName=function(t,r,n){if(!t)return!1;for(var i=0,a=S(r,D(r,n));i<a.length;i++){var o=a[i];if(e.fileExtensionIs(t,o))return!0}return!1},function(e){e[e.TypeScriptFiles=0]="TypeScriptFiles",e[e.DeclarationAndJavaScriptFiles=2]="DeclarationAndJavaScriptFiles",e[e.Highest=0]="Highest",e[e.Lowest=2]="Lowest"}(e.ExtensionPriority||(e.ExtensionPriority={})),e.getExtensionPriority=function(t,r){for(var n=r.length-1;n>=0;n--)if(e.fileExtensionIs(t,r[n]))return T(n,r);return 0},e.adjustExtensionPriority=T,e.getNextLowestExtensionPriority=function(e,t){return e<2?2:t.length};var E=[".d.ts",".ts",".js",".tsx",".jsx",".json"];function C(t,r){return e.fileExtensionIs(t,r)?k(t,r):void 0}function k(e,t){return e.substring(0,e.length-t.length)}function N(t){e.Debug.assert(e.hasZeroOrOneAsteriskCharacter(t));var r=t.indexOf("*");return-1===r?void 0:{prefix:t.substr(0,r),suffix:t.substr(r+1)}}function A(e){return".ts"===e||".tsx"===e||".d.ts"===e}function F(t){return e.find(E,(function(r){return e.fileExtensionIs(t,r)}))}e.removeFileExtension=function(e){for(var t=0,r=E;t<r.length;t++){var n=C(e,r[t]);if(void 0!==n)return n}return e},e.tryRemoveExtension=C,e.removeExtension=k,e.changeExtension=function(t,r){return e.changeAnyExtension(t,r,E,!1)},e.tryParsePattern=N,e.positionIsSynthesized=function(e){return!(e>=0)},e.extensionIsTS=A,e.resolutionExtensionIsTSOrJson=function(e){return A(e)||".json"===e},e.extensionFromPath=function(t){var r=F(t);return void 0!==r?r:e.Debug.fail("File "+t+" has unknown extension.")},e.isAnySupportedFileExtension=function(e){return void 0!==F(e)},e.tryGetExtensionFromPath=F,e.isCheckJsEnabledForFile=function(e,t){return e.checkJsDirective?e.checkJsDirective.enabled:t.checkJs},e.emptyFileSystemEntries={files:e.emptyArray,directories:e.emptyArray},e.matchPatternOrExact=function(t,r){for(var n=[],i=0,a=t;i<a.length;i++){var o=a[i],s=N(o);if(s)n.push(s);else if(o===r)return o}return e.findBestPatternMatch(n,(function(e){return e}),r)},e.sliceAfter=function(t,r){var n=t.indexOf(r);return e.Debug.assert(-1!==n),t.slice(n)},e.addRelatedInfo=function(e){for(var t,r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return e.relatedInformation||(e.relatedInformation=[]),(t=e.relatedInformation).push.apply(t,r),e},e.minAndMax=function(t,r){e.Debug.assert(0!==t.length);for(var n=r(t[0]),i=n,a=1;a<t.length;a++){var o=r(t[a]);o<n?n=o:o>i&&(i=o)}return{min:n,max:i}};var P=function(){function t(){this.map=e.createMap()}return t.prototype.add=function(t){this.map.set(String(e.getNodeId(t)),t)},t.prototype.tryAdd=function(e){return!this.has(e)&&(this.add(e),!0)},t.prototype.has=function(t){return this.map.has(String(e.getNodeId(t)))},t.prototype.forEach=function(e){this.map.forEach(e)},t.prototype.some=function(t){return e.forEachEntry(this.map,t)||!1},t}();e.NodeSet=P;var w=function(){function t(){this.map=e.createMap()}return t.prototype.get=function(t){var r=this.map.get(String(e.getNodeId(t)));return r&&r.value},t.prototype.getOrUpdate=function(e,t){var r=this.get(e);if(r)return r;var n=t();return this.set(e,n),n},t.prototype.set=function(t,r){this.map.set(String(e.getNodeId(t)),{node:t,value:r})},t.prototype.has=function(t){return this.map.has(String(e.getNodeId(t)))},t.prototype.forEach=function(e){this.map.forEach((function(t){var r=t.node,n=t.value;return e(n,r)}))},t}();e.NodeMap=w,e.rangeOfNode=function(t){return{pos:e.getTokenPosOfNode(t),end:t.end}},e.rangeOfTypeParameters=function(e){return{pos:e.pos-1,end:e.end+1}},e.skipTypeChecking=function(e,t,r){return t.skipLibCheck&&e.isDeclarationFile||t.skipDefaultLibCheck&&e.hasNoDefaultLib||r.isSourceOfProjectReferenceRedirect(e.fileName)},e.isJsonEqual=function t(r,n){return r===n||"object"===f(r)&&null!==r&&"object"===f(n)&&null!==n&&e.equalOwnProperties(r,n,t)},e.getOrUpdate=function(e,t,r){var n=e.get(t);if(void 0===n){var i=r();return e.set(t,i),i}return n},e.parsePseudoBigInt=function(e){var t;switch(e.charCodeAt(1)){case 98:case 66:t=1;break;case 111:case 79:t=3;break;case 120:case 88:t=4;break;default:for(var r=e.length-1,n=0;48===e.charCodeAt(n);)n++;return e.slice(n,r)||"0"}for(var i=e.length-1,a=(i-2)*t,o=new Uint16Array((a>>>4)+(15&a?1:0)),s=i-1,c=0;s>=2;s--,c+=t){var u=c>>>4,l=e.charCodeAt(s),_=(l<=57?l-48:10+l-(l<=70?65:97))<<(15&c);o[u]|=_;var d=_>>>16;d&&(o[u+1]|=d)}for(var p="",f=o.length-1,m=!0;m;){var g=0;m=!1;for(u=f;u>=0;u--){var y=g<<16|o[u],h=y/10|0;o[u]=h,g=y-10*h,h&&!m&&(f=u,m=!0)}p=g+p}return p},e.pseudoBigIntToString=function(e){var t=e.negative,r=e.base10Value;return(t&&"0"!==r?"-":"")+r}}(s||(s={})),function(e){var t,r,n,i,a,o,s;function c(e,t){return t&&e(t)}function u(e,t,r){if(r){if(t)return t(r);for(var n=0,i=r;n<i.length;n++){var a=e(i[n]);if(a)return a}}}function l(e,t){return 42===e.charCodeAt(t+1)&&42===e.charCodeAt(t+2)&&47!==e.charCodeAt(t+3)}function _(t,r,n){if(t&&!(t.kind<=151))switch(t.kind){case 152:return c(r,t.left)||c(r,t.right);case 154:return c(r,t.name)||c(r,t.constraint)||c(r,t.default)||c(r,t.expression);case 280:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.name)||c(r,t.questionToken)||c(r,t.exclamationToken)||c(r,t.equalsToken)||c(r,t.objectAssignmentInitializer);case 281:return c(r,t.expression);case 155:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.dotDotDotToken)||c(r,t.name)||c(r,t.questionToken)||c(r,t.type)||c(r,t.initializer);case 158:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.name)||c(r,t.questionToken)||c(r,t.exclamationToken)||c(r,t.type)||c(r,t.initializer);case 157:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.name)||c(r,t.questionToken)||c(r,t.type)||c(r,t.initializer);case 279:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.name)||c(r,t.questionToken)||c(r,t.initializer);case 241:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.name)||c(r,t.exclamationToken)||c(r,t.type)||c(r,t.initializer);case 190:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.dotDotDotToken)||c(r,t.propertyName)||c(r,t.name)||c(r,t.initializer);case 169:case 170:case 164:case 165:case 166:return u(r,n,t.decorators)||u(r,n,t.modifiers)||u(r,n,t.typeParameters)||u(r,n,t.parameters)||c(r,t.type);case 160:case 159:case 161:case 162:case 163:case 200:case 243:case 201:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.asteriskToken)||c(r,t.name)||c(r,t.questionToken)||c(r,t.exclamationToken)||u(r,n,t.typeParameters)||u(r,n,t.parameters)||c(r,t.type)||c(r,t.equalsGreaterThanToken)||c(r,t.body);case 168:return c(r,t.typeName)||u(r,n,t.typeArguments);case 167:return c(r,t.assertsModifier)||c(r,t.parameterName)||c(r,t.type);case 171:return c(r,t.exprName);case 172:return u(r,n,t.members);case 173:return c(r,t.elementType);case 174:return u(r,n,t.elementTypes);case 177:case 178:return u(r,n,t.types);case 179:return c(r,t.checkType)||c(r,t.extendsType)||c(r,t.trueType)||c(r,t.falseType);case 180:return c(r,t.typeParameter);case 187:return c(r,t.argument)||c(r,t.qualifier)||u(r,n,t.typeArguments);case 181:case 183:return c(r,t.type);case 184:return c(r,t.objectType)||c(r,t.indexType);case 185:return c(r,t.readonlyToken)||c(r,t.typeParameter)||c(r,t.questionToken)||c(r,t.type);case 186:return c(r,t.literal);case 188:case 189:case 191:return u(r,n,t.elements);case 192:return u(r,n,t.properties);case 193:return c(r,t.expression)||c(r,t.questionDotToken)||c(r,t.name);case 194:return c(r,t.expression)||c(r,t.questionDotToken)||c(r,t.argumentExpression);case 195:case 196:return c(r,t.expression)||c(r,t.questionDotToken)||u(r,n,t.typeArguments)||u(r,n,t.arguments);case 197:return c(r,t.tag)||c(r,t.questionDotToken)||u(r,n,t.typeArguments)||c(r,t.template);case 198:return c(r,t.type)||c(r,t.expression);case 199:case 202:case 203:case 204:return c(r,t.expression);case 206:return c(r,t.operand);case 211:return c(r,t.asteriskToken)||c(r,t.expression);case 205:return c(r,t.expression);case 207:return c(r,t.operand);case 208:return c(r,t.left)||c(r,t.operatorToken)||c(r,t.right);case 216:return c(r,t.expression)||c(r,t.type);case 217:return c(r,t.expression);case 218:return c(r,t.name);case 209:return c(r,t.condition)||c(r,t.questionToken)||c(r,t.whenTrue)||c(r,t.colonToken)||c(r,t.whenFalse);case 212:return c(r,t.expression);case 222:case 249:return u(r,n,t.statements);case 288:return u(r,n,t.statements)||c(r,t.endOfFileToken);case 224:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.declarationList);case 242:return u(r,n,t.declarations);case 225:return c(r,t.expression);case 226:return c(r,t.expression)||c(r,t.thenStatement)||c(r,t.elseStatement);case 227:return c(r,t.statement)||c(r,t.expression);case 228:return c(r,t.expression)||c(r,t.statement);case 229:return c(r,t.initializer)||c(r,t.condition)||c(r,t.incrementor)||c(r,t.statement);case 230:return c(r,t.initializer)||c(r,t.expression)||c(r,t.statement);case 231:return c(r,t.awaitModifier)||c(r,t.initializer)||c(r,t.expression)||c(r,t.statement);case 232:case 233:return c(r,t.label);case 234:return c(r,t.expression);case 235:return c(r,t.expression)||c(r,t.statement);case 236:return c(r,t.expression)||c(r,t.caseBlock);case 250:return u(r,n,t.clauses);case 275:return c(r,t.expression)||u(r,n,t.statements);case 276:return u(r,n,t.statements);case 237:return c(r,t.label)||c(r,t.statement);case 238:return c(r,t.expression);case 239:return c(r,t.tryBlock)||c(r,t.catchClause)||c(r,t.finallyBlock);case 278:return c(r,t.variableDeclaration)||c(r,t.block);case 156:return c(r,t.expression);case 244:case 213:case 245:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.name)||u(r,n,t.typeParameters)||u(r,n,t.heritageClauses)||u(r,n,t.members);case 246:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.name)||u(r,n,t.typeParameters)||c(r,t.type);case 247:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.name)||u(r,n,t.members);case 282:return c(r,t.name)||c(r,t.initializer);case 248:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.name)||c(r,t.body);case 252:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.name)||c(r,t.moduleReference);case 253:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.importClause)||c(r,t.moduleSpecifier);case 254:return c(r,t.name)||c(r,t.namedBindings);case 251:case 255:return c(r,t.name);case 256:case 260:return u(r,n,t.elements);case 259:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.exportClause)||c(r,t.moduleSpecifier);case 257:case 261:return c(r,t.propertyName)||c(r,t.name);case 258:return u(r,n,t.decorators)||u(r,n,t.modifiers)||c(r,t.expression);case 210:return c(r,t.head)||u(r,n,t.templateSpans);case 220:return c(r,t.expression)||c(r,t.literal);case 153:return c(r,t.expression);case 277:return u(r,n,t.types);case 215:return c(r,t.expression)||u(r,n,t.typeArguments);case 263:return c(r,t.expression);case 262:return u(r,n,t.decorators);case 320:return u(r,n,t.elements);case 264:return c(r,t.openingElement)||u(r,n,t.children)||c(r,t.closingElement);case 268:return c(r,t.openingFragment)||u(r,n,t.children)||c(r,t.closingFragment);case 265:case 266:return c(r,t.tagName)||u(r,n,t.typeArguments)||c(r,t.attributes);case 272:return u(r,n,t.properties);case 271:return c(r,t.name)||c(r,t.initializer);case 273:return c(r,t.expression);case 274:return c(r,t.dotDotDotToken)||c(r,t.expression);case 267:return c(r,t.tagName);case 175:case 176:case 292:case 296:case 295:case 297:case 299:return c(r,t.type);case 298:return u(r,n,t.parameters)||c(r,t.type);case 301:return u(r,n,t.tags);case 310:case 316:return c(r,t.tagName)||(t.isNameFirst?c(r,t.name)||c(r,t.typeExpression):c(r,t.typeExpression)||c(r,t.name));case 306:return c(r,t.tagName);case 305:return c(r,t.tagName)||c(r,t.class);case 314:return c(r,t.tagName)||c(r,t.constraint)||u(r,n,t.typeParameters);case 315:return c(r,t.tagName)||(t.typeExpression&&292===t.typeExpression.kind?c(r,t.typeExpression)||c(r,t.fullName):c(r,t.fullName)||c(r,t.typeExpression));case 308:return c(r,t.tagName)||c(r,t.fullName)||c(r,t.typeExpression);case 311:case 313:case 312:case 309:return c(r,t.tagName)||c(r,t.typeExpression);case 303:return e.forEach(t.typeParameters,r)||e.forEach(t.parameters,r)||c(r,t.type);case 302:return e.forEach(t.jsDocPropertyTags,r);case 304:case 307:return c(r,t.tagName);case 319:return c(r,t.expression)}}function d(t){return e.fileExtensionIs(t,".d.ts")}function p(t,r){for(var n=[],i=0,a=e.getLeadingCommentRanges(r,0)||e.emptyArray;i<a.length;i++){var o=a[i];v(n,o,r.substring(o.pos,o.end))}t.pragmas=e.createMap();for(var s=0,c=n;s<c.length;s++){var u=c[s];if(t.pragmas.has(u.name)){var l=t.pragmas.get(u.name);l instanceof Array?l.push(u.args):t.pragmas.set(u.name,[l,u.args])}else t.pragmas.set(u.name,u.args)}}function f(t,r){t.checkJsDirective=void 0,t.referencedFiles=[],t.typeReferenceDirectives=[],t.libReferenceDirectives=[],t.amdDependencies=[],t.hasNoDefaultLib=!1,t.pragmas.forEach((function(n,i){switch(i){case"reference":var a=t.referencedFiles,o=t.typeReferenceDirectives,s=t.libReferenceDirectives;e.forEach(e.toArray(n),(function(n){var i=n.arguments,c=i.types,u=i.lib,l=i.path;n.arguments["no-default-lib"]?t.hasNoDefaultLib=!0:c?o.push({pos:c.pos,end:c.end,fileName:c.value}):u?s.push({pos:u.pos,end:u.end,fileName:u.value}):l?a.push({pos:l.pos,end:l.end,fileName:l.value}):r(n.range.pos,n.range.end-n.range.pos,e.Diagnostics.Invalid_reference_directive_syntax)}));break;case"amd-dependency":t.amdDependencies=e.map(e.toArray(n),(function(e){return{name:e.arguments.name,path:e.arguments.path}}));break;case"amd-module":if(n instanceof Array)for(var c=0,u=n;c<u.length;c++){var l=u[c];t.moduleName&&r(l.range.pos,l.range.end-l.range.pos,e.Diagnostics.An_AMD_module_cannot_have_multiple_name_assignments),t.moduleName=l.arguments.name}else t.moduleName=n.arguments.name;break;case"ts-nocheck":case"ts-check":e.forEach(e.toArray(n),(function(e){(!t.checkJsDirective||e.range.pos>t.checkJsDirective.pos)&&(t.checkJsDirective={enabled:"ts-check"===i,end:e.range.end,pos:e.range.pos})}));break;case"jsx":return;default:e.Debug.fail("Unhandled pragma kind")}}))}!function(e){e[e.None=0]="None",e[e.Yield=1]="Yield",e[e.Await=2]="Await",e[e.Type=4]="Type",e[e.IgnoreMissingOpenBrace=16]="IgnoreMissingOpenBrace",e[e.JSDoc=32]="JSDoc"}(t||(t={})),e.createNode=function(t,o,s){return 288===t?new(a||(a=e.objectAllocator.getSourceFileConstructor()))(t,o,s):75===t?new(i||(i=e.objectAllocator.getIdentifierConstructor()))(t,o,s):e.isNodeKind(t)?new(r||(r=e.objectAllocator.getNodeConstructor()))(t,o,s):new(n||(n=e.objectAllocator.getTokenConstructor()))(t,o,s)},e.isJSDocLikeText=l,e.forEachChild=_,e.createSourceFile=function(t,r,n,i,a){var s;return void 0===i&&(i=!1),e.performance.mark("beforeParse"),e.perfLogger.logStartParseSourceFile(t),s=100===n?o.parseSourceFile(t,r,n,void 0,i,6):o.parseSourceFile(t,r,n,void 0,i,a),e.perfLogger.logStopParseSourceFile(),e.performance.mark("afterParse"),e.performance.measure("Parse","beforeParse","afterParse"),s},e.parseIsolatedEntityName=function(e,t){return o.parseIsolatedEntityName(e,t)},e.parseJsonText=function(e,t){return o.parseJsonText(e,t)},e.isExternalModule=function(e){return void 0!==e.externalModuleIndicator},e.updateSourceFile=function(e,t,r,n){void 0===n&&(n=!1);var i=s.updateSourceFile(e,t,r,n);return i.flags|=3145728&e.flags,i},e.parseIsolatedJSDocComment=function(e,t,r){var n=o.JSDocParser.parseIsolatedJSDocComment(e,t,r);return n&&n.jsDoc&&o.fixupParentReferences(n.jsDoc),n},e.parseJSDocTypeExpressionForTests=function(e,t,r){return o.JSDocParser.parseJSDocTypeExpressionForTests(e,t,r)},function(t){var r,n,i,a,o,s,c,u,m,g,y,h,v,b,D,S,T,E,C=e.createScanner(99,!0),k=20480,N=!1;function A(t,r,n,i,a){void 0===n&&(n=2),P(r,n,i,6),(o=L(t,2,6,!1)).flags=D,ae();var c=re();if(1===ne())o.statements=Ee([],c,c),o.endOfFileToken=be();else{var u=Se(225);switch(ne()){case 22:u.expression=jr();break;case 105:case 90:case 99:u.expression=be();break;case 40:de((function(){return 8===ae()&&58!==ae()}))?u.expression=gr():u.expression=Jr();break;case 8:case 10:if(de((function(){return 58!==ae()}))){u.expression=ut();break}default:u.expression=Jr()}Ce(u),o.statements=Ee([u],c),o.endOfFileToken=ve(1,e.Diagnostics.Unexpected_token)}a&&M(o),o.nodeCount=g,o.identifierCount=h,o.identifiers=y,o.parseDiagnostics=s;var l=o;return w(),l}function F(e){return 4===e||2===e||1===e||6===e?1:0}function P(t,o,u,l){switch(r=e.objectAllocator.getNodeConstructor(),n=e.objectAllocator.getTokenConstructor(),i=e.objectAllocator.getIdentifierConstructor(),a=e.objectAllocator.getSourceFileConstructor(),m=t,c=u,s=[],v=0,y=e.createMap(),h=0,g=0,l){case 1:case 2:D=131072;break;case 6:D=33685504;break;default:D=0}N=!1,C.setText(m),C.setOnError(te),C.setScriptTarget(o),C.setLanguageVariant(F(l))}function w(){C.setText(""),C.setOnError(void 0),s=void 0,o=void 0,y=void 0,c=void 0,m=void 0,b=void 0}function I(t,r,n,i){var a=d(t);return a&&(D|=8388608),(o=L(t,r,i,a)).flags=D,ae(),p(o,m),f(o,(function(t,r,n){s.push(e.createFileDiagnostic(o,t,r,n))})),o.statements=Ye(0,an),e.Debug.assert(1===ne()),o.endOfFileToken=O(be()),function(t){t.externalModuleIndicator=e.forEach(t.statements,Hn)||function(e){return 2097152&e.flags?Yn(e):void 0}(t)}(o),o.nodeCount=g,o.identifierCount=h,o.identifiers=y,o.parseDiagnostics=s,n&&M(o),o}function O(t){e.Debug.assert(!t.jsDoc);var r=e.mapDefined(e.getJSDocCommentRanges(t,o.text),(function(e){return E.parseJSDocComment(t,e.pos,e.end-e.pos)}));return r.length&&(t.jsDoc=r),t}function M(t){var r=t;return void _(t,(function t(n){if(n.parent!==r){n.parent=r;var i=r;if(r=n,_(n,t),e.hasJSDocNodes(n))for(var a=0,o=n.jsDoc;a<o.length;a++){var s=o[a];s.parent=n,r=s,_(s,t)}r=i}}))}function L(t,r,n,i){var o=new a(288,0,m.length);return g++,o.text=m,o.bindDiagnostics=[],o.bindSuggestionDiagnostics=void 0,o.languageVersion=r,o.fileName=e.normalizePath(t),o.languageVariant=F(n),o.isDeclarationFile=i,o.scriptKind=n,o}function R(e,t){e?D|=t:D&=~t}function B(e){R(e,4096)}function j(e){R(e,8192)}function K(e){R(e,16384)}function J(e){R(e,32768)}function z(e,t){var r=e&D;if(r){R(!1,r);var n=t();return R(!0,r),n}return t()}function U(e,t){var r=e&~D;if(r){R(!0,r);var n=t();return R(!1,r),n}return t()}function V(e){return z(4096,e)}function q(e){return U(32768,e)}function W(e){return 0!=(D&e)}function G(){return W(8192)}function H(){return W(4096)}function Y(){return W(16384)}function X(){return W(32768)}function Q(e,t){Z(C.getTokenPos(),C.getTextPos(),e,t)}function $(t,r,n,i){var a=e.lastOrUndefined(s);a&&t===a.start||s.push(e.createFileDiagnostic(o,t,r,n,i)),N=!0}function Z(e,t,r,n){$(e,t-e,r,n)}function ee(e,t,r){Z(e.pos,e.end,t,r)}function te(e,t){$(C.getTextPos(),t,e)}function re(){return C.getStartPos()}function ne(){return u}function ie(){return u=C.scan()}function ae(){return e.isKeyword(u)&&(C.hasUnicodeEscape()||C.hasExtendedUnicodeEscape())&&Z(C.getTokenPos(),C.getTextPos(),e.Diagnostics.Keywords_cannot_contain_escape_characters),ie()}function oe(){return u=C.scanJsDocToken()}function se(){return u=C.reScanGreaterToken()}function ce(){return u=C.reScanLessThanToken()}function ue(){return u=C.scanJsxIdentifier()}function le(){return u=C.scanJsxToken()}function _e(t,r){var n=u,i=s.length,a=N,o=D,c=r?C.lookAhead(t):C.tryScan(t);return e.Debug.assert(o===D),c&&!r||(u=n,s.length=i,N=a),c}function de(e){return _e(e,!0)}function pe(e){return _e(e,!1)}function fe(){return 75===ne()||(120!==ne()||!G())&&((126!==ne()||!X())&&ne()>111)}function me(t,r,n){return void 0===n&&(n=!0),ne()===t?(n&&ae(),!0):(r?Q(r):Q(e.Diagnostics._0_expected,e.tokenToString(t)),!1)}function ge(e){return ne()===e&&(ae(),!0)}function ye(e){if(ne()===e)return be()}function he(e){if(ne()===e)return function(){var e=Se(ne());return oe(),Ce(e)}()}function ve(t,r,n){return ye(t)||ke(t,!1,r||e.Diagnostics._0_expected,n||e.tokenToString(t))}function be(){var e=Se(ne());return ae(),Ce(e)}function xe(){return 26===ne()||(19===ne()||1===ne()||C.hasPrecedingLineBreak())}function De(){return xe()?(26===ne()&&ae(),!0):me(26)}function Se(t,a){g++;var o=a>=0?a:C.getStartPos();return e.isNodeKind(t)||0===t?new r(t,o,o):75===t?new i(t,o,o):new n(t,o,o)}function Te(e,t){var r=Se(e,t);return 2&C.getTokenFlags()&&O(r),r}function Ee(e,t,r){var n=e.length,i=n>=1&&n<=4?e.slice():e;return i.pos=t,i.end=void 0===r?C.getStartPos():r,i}function Ce(e,t){return e.end=void 0===t?C.getStartPos():t,D&&(e.flags|=D),N&&(N=!1,e.flags|=65536),e}function ke(t,r,n,i){r?$(C.getStartPos(),0,n,i):n&&Q(n,i);var a=Se(t);return 75===t?a.escapedText="":(e.isLiteralKind(t)||e.isTemplateLiteralKind(t))&&(a.text=""),Ce(a)}function Ne(e){var t=y.get(e);return void 0===t&&y.set(e,t=e),t}function Ae(t,r){if(h++,t){var n=Se(75);return 75!==ne()&&(n.originalKeywordKind=ne()),n.escapedText=e.escapeLeadingUnderscores(Ne(C.getTokenValue())),ie(),Ce(n)}var i=1===ne(),a=C.isReservedWord(),o=C.getTokenText(),s=a?e.Diagnostics.Identifier_expected_0_is_a_reserved_word_that_cannot_be_used_here:e.Diagnostics.Identifier_expected;return ke(75,i,r||s,o)}function Fe(e){return Ae(fe(),e)}function Pe(t){return Ae(e.tokenIsIdentifierOrKeyword(ne()),t)}function we(){return e.tokenIsIdentifierOrKeyword(ne())||10===ne()||8===ne()}function Ie(e){if(10===ne()||8===ne()){var t=ut();return t.text=Ne(t.text),t}return e&&22===ne()?function(){var e=Se(153);return me(22),e.expression=V(rr),me(23),Ce(e)}():Pe()}function Oe(){return Ie(!0)}function Me(e){return ne()===e&&pe(Re)}function Le(){return ae(),!C.hasPrecedingLineBreak()&&Be()}function Re(){switch(ne()){case 80:return 87===ae();case 88:return ae(),83===ne()?de(je):41!==ne()&&122!==ne()&&18!==ne()&&Be();case 83:return je();case 119:case 130:case 141:return ae(),Be();default:return Le()}}function Be(){return 22===ne()||18===ne()||41===ne()||25===ne()||we()}function je(){return ae(),79===ne()||93===ne()||113===ne()||121===ne()&&de(Qr)||125===ne()&&de($r)}function Ke(t,r){if(Qe(t))return!0;switch(t){case 0:case 1:case 3:return!(26===ne()&&r)&&rn();case 2:return 77===ne()||83===ne();case 4:return de(kt);case 5:return de(Cn)||26===ne()&&!r;case 6:return 22===ne()||we();case 12:switch(ne()){case 22:case 41:case 25:case 24:return!0;default:return we()}case 18:return we();case 9:return 22===ne()||25===ne()||we();case 7:return 18===ne()?de(Je):r?fe()&&!qe():er()&&!qe();case 8:return pn();case 10:return 27===ne()||25===ne()||pn();case 19:return fe();case 15:switch(ne()){case 27:case 24:return!0}case 11:return 25===ne()||tr();case 16:return vt(!1);case 17:return vt(!0);case 20:case 21:return 27===ne()||zt();case 22:return Rn();case 23:return e.tokenIsIdentifierOrKeyword(ne());case 13:return e.tokenIsIdentifierOrKeyword(ne())||18===ne();case 14:return!0}return e.Debug.fail("Non-exhaustive case in 'isListElement'.")}function Je(){if(e.Debug.assert(18===ne()),19===ae()){var t=ae();return 27===t||18===t||89===t||112===t}return!0}function ze(){return ae(),fe()}function Ue(){return ae(),e.tokenIsIdentifierOrKeyword(ne())}function Ve(){return ae(),e.tokenIsIdentifierOrKeywordOrGreaterThan(ne())}function qe(){return(112===ne()||89===ne())&&de(We)}function We(){return ae(),tr()}function Ge(){return ae(),zt()}function He(e){if(1===ne())return!0;switch(e){case 1:case 2:case 4:case 5:case 6:case 12:case 9:case 23:return 19===ne();case 3:return 19===ne()||77===ne()||83===ne();case 7:return 18===ne()||89===ne()||112===ne();case 8:return function(){if(xe())return!0;if(dr(ne()))return!0;if(38===ne())return!0;return!1}();case 19:return 31===ne()||20===ne()||18===ne()||89===ne()||112===ne();case 11:return 21===ne()||26===ne();case 15:case 21:case 10:return 23===ne();case 17:case 16:case 18:return 21===ne()||23===ne();case 20:return 27!==ne();case 22:return 18===ne()||19===ne();case 13:return 31===ne()||43===ne();case 14:return 29===ne()&&de(zn);default:return!1}}function Ye(e,t){var r=v;v|=1<<e;for(var n=[],i=re();!He(e);)if(Ke(e,!1)){var a=Xe(e,t);n.push(a)}else if(Ze(e))break;return v=r,Ee(n,i)}function Xe(e,t){var r=Qe(e);return r?$e(r):t()}function Qe(t){if(c&&function(e){switch(e){case 5:case 2:case 0:case 1:case 3:case 6:case 4:case 8:case 17:case 16:return!0}return!1}(t)&&!N){var r=c.currentNode(C.getStartPos());if(!(e.nodeIsMissing(r)||r.intersectsChange||e.containsParseError(r)))if((25358336&r.flags)===D&&function(e,t){switch(t){case 5:return function(e){if(e)switch(e.kind){case 161:case 166:case 162:case 163:case 158:case 221:return!0;case 160:var t=e;return!(75===t.name.kind&&128===t.name.originalKeywordKind)}return!1}(e);case 2:return function(e){if(e)switch(e.kind){case 275:case 276:return!0}return!1}(e);case 0:case 1:case 3:return function(e){if(e)switch(e.kind){case 243:case 224:case 222:case 226:case 225:case 238:case 234:case 236:case 233:case 232:case 230:case 231:case 229:case 228:case 235:case 223:case 239:case 237:case 227:case 240:case 253:case 252:case 259:case 258:case 248:case 244:case 245:case 247:case 246:return!0}return!1}(e);case 6:return function(e){return 282===e.kind}(e);case 4:return function(e){if(e)switch(e.kind){case 165:case 159:case 166:case 157:case 164:return!0}return!1}(e);case 8:return function(e){if(241!==e.kind)return!1;return void 0===e.initializer}(e);case 17:case 16:return function(e){if(155!==e.kind)return!1;return void 0===e.initializer}(e)}return!1}(r,t))return r.jsDocCache&&(r.jsDocCache=void 0),r}}function $e(e){return C.setTextPos(e.end),ae(),e}function Ze(t){return Q(function(t){switch(t){case 0:case 1:return e.Diagnostics.Declaration_or_statement_expected;case 2:return e.Diagnostics.case_or_default_expected;case 3:return e.Diagnostics.Statement_expected;case 18:case 4:return e.Diagnostics.Property_or_signature_expected;case 5:return e.Diagnostics.Unexpected_token_A_constructor_method_accessor_or_property_was_expected;case 6:return e.Diagnostics.Enum_member_expected;case 7:return e.Diagnostics.Expression_expected;case 8:return e.Diagnostics.Variable_declaration_expected;case 9:return e.Diagnostics.Property_destructuring_pattern_expected;case 10:return e.Diagnostics.Array_element_destructuring_pattern_expected;case 11:return e.Diagnostics.Argument_expression_expected;case 12:return e.Diagnostics.Property_assignment_expected;case 15:return e.Diagnostics.Expression_or_comma_expected;case 17:case 16:return e.Diagnostics.Parameter_declaration_expected;case 19:return e.Diagnostics.Type_parameter_declaration_expected;case 20:return e.Diagnostics.Type_argument_expected;case 21:return e.Diagnostics.Type_expected;case 22:return e.Diagnostics.Unexpected_token_expected;case 23:case 13:case 14:return e.Diagnostics.Identifier_expected;default:return}}(t)),!!function(){for(var e=0;e<24;e++)if(v&1<<e&&(Ke(e,!0)||He(e)))return!0;return!1}()||(ae(),!1)}function et(e,t,r){var n=v;v|=1<<e;for(var i=[],a=re(),o=-1;;)if(Ke(e,!1)){var s=C.getStartPos();if(i.push(Xe(e,t)),o=C.getTokenPos(),ge(27))continue;if(o=-1,He(e))break;me(27,tt(e)),r&&26===ne()&&!C.hasPrecedingLineBreak()&&ae(),s===C.getStartPos()&&ae()}else{if(He(e))break;if(Ze(e))break}v=n;var c=Ee(i,a);return o>=0&&(c.hasTrailingComma=!0),c}function tt(t){return 6===t?e.Diagnostics.An_enum_member_name_must_be_followed_by_a_or:void 0}function rt(){var e=Ee([],re());return e.isMissingList=!0,e}function nt(e,t,r,n){if(me(r)){var i=et(e,t);return me(n),i}return rt()}function it(e,t){for(var r=e?Pe(t):Fe(t),n=C.getStartPos();ge(24);){if(29===ne()){r.jsdocDotPos=n;break}n=C.getStartPos(),r=at(r,ot(e))}return r}function at(e,t){var r=Se(152,e.pos);return r.left=e,r.right=t,Ce(r)}function ot(t){if(C.hasPrecedingLineBreak()&&e.tokenIsIdentifierOrKeyword(ne())&&de(Xr))return ke(75,!0,e.Diagnostics.Identifier_expected);return t?Pe():Fe()}function st(){var t,r=Se(210);r.head=(t=lt(ne()),e.Debug.assert(15===t.kind,"Template head has wrong token kind"),t),e.Debug.assert(15===r.head.kind,"Template head has wrong token kind");var n=[],i=re();do{n.push(ct())}while(16===e.last(n).literal.kind);return r.templateSpans=Ee(n,i),Ce(r)}function ct(){var t,r,n=Se(220);return n.expression=V(rr),19===ne()?(u=C.reScanTemplateToken(),r=lt(ne()),e.Debug.assert(16===r.kind||17===r.kind,"Template fragment has wrong token kind"),t=r):t=ve(17,e.Diagnostics._0_expected,e.tokenToString(19)),n.literal=t,Ce(n)}function ut(){return lt(ne())}function lt(e){var t=Se(e);switch(t.text=C.getTokenValue(),e){case 14:case 15:case 16:case 17:var r=14===e||17===e,n=C.getTokenText();t.rawText=n.substring(1,n.length-(C.isUnterminated()?0:r?1:2))}return C.hasExtendedUnicodeEscape()&&(t.hasExtendedUnicodeEscape=!0),C.isUnterminated()&&(t.isUnterminated=!0),8===t.kind&&(t.numericLiteralFlags=1008&C.getTokenFlags()),ae(),Ce(t),t}function _t(){var t=Se(168);return t.typeName=it(!0,e.Diagnostics.Type_expected),C.hasPrecedingLineBreak()||29!==ce()||(t.typeArguments=nt(20,Qt,29,31)),Ce(t)}function dt(){var e=Se(182);return ae(),Ce(e)}function pt(e){var t=Se(293);return e?Vt(297,t):(ae(),Ce(t))}function ft(){var e=Se(155);return 103!==ne()&&98!==ne()||(e.name=Pe(),me(58)),e.type=mt(),Ce(e)}function mt(){C.setInJSDocType(!0);var e=ye(134);if(e){var t=Se(300,e.pos);e:for(;;)switch(ne()){case 19:case 1:case 27:case 5:break e;default:oe()}return C.setInJSDocType(!1),Ce(t)}var r=ye(25),n=Yt();if(C.setInJSDocType(!1),r){var i=Se(299,r.pos);i.type=n,n=Ce(i)}return 62===ne()?Vt(297,n):n}function gt(){var e=Se(154);return e.name=Fe(),ge(89)&&(zt()||!tr()?e.constraint=Qt():e.expression=yr()),ge(62)&&(e.default=Qt()),Ce(e)}function yt(){if(29===ne())return nt(19,gt,29,31)}function ht(){if(ge(58))return Qt()}function vt(t){return 25===ne()||pn()||e.isModifierKind(ne())||59===ne()||zt(!t)}function bt(){var t=Te(155);return 103===ne()?(t.name=Ae(!0),t.type=ht(),Ce(t)):(t.decorators=kn(),t.modifiers=Nn(),t.dotDotDotToken=ye(25),t.name=fn(),0===e.getFullWidth(t.name)&&!e.hasModifiers(t)&&e.isModifierKind(ne())&&ae(),t.questionToken=ye(57),t.type=ht(),t.initializer=nr(),Ce(t))}function xt(t,r,n){32&r||(n.typeParameters=yt());var i=function(e,t){if(!me(20))return e.parameters=rt(),!1;var r=G(),n=X();return j(!!(1&t)),J(!!(2&t)),e.parameters=32&t?et(17,ft):et(16,bt),j(r),J(n),me(21)}(n,r);return(!function(t,r){if(38===t)return me(t),!0;if(ge(58))return!0;if(r&&38===ne())return Q(e.Diagnostics._0_expected,e.tokenToString(58)),ae(),!0;return!1}(t,!!(4&r))||(n.type=Yt(),!function t(r){switch(r.kind){case 168:return e.nodeIsMissing(r.typeName);case 169:case 170:var n=r,i=n.parameters,a=n.type;return!!i.isMissingList||t(a);case 181:return t(r.type);default:return!1}}(n.type)))&&i}function Dt(){ge(27)||De()}function St(e){var t=Te(e);return 165===e&&me(98),xt(58,4,t),Dt(),Ce(t)}function Tt(){return 22===ne()&&de(Et)}function Et(){if(ae(),25===ne()||23===ne())return!0;if(e.isModifierKind(ne())){if(ae(),fe())return!0}else{if(!fe())return!1;ae()}return 58===ne()||27===ne()||57===ne()&&(ae(),58===ne()||27===ne()||23===ne())}function Ct(e){return e.kind=166,e.parameters=nt(16,bt,22,23),e.type=Zt(),Dt(),Ce(e)}function kt(){if(20===ne()||29===ne())return!0;for(var t=!1;e.isModifierKind(ne());)t=!0,ae();return 22===ne()||(we()&&(t=!0,ae()),!!t&&(20===ne()||29===ne()||57===ne()||58===ne()||27===ne()||xe()))}function Nt(){if(20===ne()||29===ne())return St(164);if(98===ne()&&de(At))return St(165);var e=Te(0);return e.modifiers=Nn(),Tt()?Ct(e):function(e){return e.name=Oe(),e.questionToken=ye(57),20===ne()||29===ne()?(e.kind=159,xt(58,4,e)):(e.kind=157,e.type=Zt(),62===ne()&&(e.initializer=nr())),Dt(),Ce(e)}(e)}function At(){return ae(),20===ne()||29===ne()}function Ft(){return 24===ae()}function Pt(){switch(ae()){case 20:case 29:case 24:return!0}return!1}function wt(){var e;return me(18)?(e=Ye(4,Nt),me(19)):e=rt(),e}function It(){return ae(),39===ne()||40===ne()?137===ae():(137===ne()&&ae(),22===ne()&&ze()&&96===ae())}function Ot(){var e=Se(185);return me(18),137!==ne()&&39!==ne()&&40!==ne()||(e.readonlyToken=be(),137!==e.readonlyToken.kind&&ve(137)),me(22),e.typeParameter=function(){var e=Se(154);return e.name=Fe(),me(96),e.constraint=Qt(),Ce(e)}(),me(23),57!==ne()&&39!==ne()&&40!==ne()||(e.questionToken=be(),57!==e.questionToken.kind&&ve(57)),e.type=Zt(),De(),me(19),Ce(e)}function Mt(){var e=re();if(ge(25)){var t=Se(176,e);return t.type=Qt(),Ce(t)}var r=Qt();return 4194304&D||295!==r.kind||r.pos!==r.type.pos||(r.kind=175),r}function Lt(){var e=be();return 24===ne()?void 0:e}function Rt(e){var t,r=Se(186);e&&((t=Se(206)).operator=40,ae());var n=105===ne()||90===ne()?be():lt(ne());return e&&(t.operand=n,Ce(t),n=t),r.literal=n,Ce(r)}function Bt(){return ae(),95===ne()}function jt(){o.flags|=1048576;var t=Se(187);return ge(107)&&(t.isTypeOf=!0),me(95),me(20),t.argument=Qt(),me(21),ge(24)&&(t.qualifier=it(!0,e.Diagnostics.Type_expected)),C.hasPrecedingLineBreak()||29!==ce()||(t.typeArguments=nt(20,Qt,29,31)),Ce(t)}function Kt(){return ae(),8===ne()||9===ne()}function Jt(){switch(ne()){case 124:case 147:case 142:case 139:case 150:case 143:case 127:case 145:case 136:case 140:return pe(Lt)||_t();case 41:return pt(!1);case 65:return pt(!0);case 60:C.reScanQuestionToken();case 57:return r=C.getStartPos(),ae(),27===ne()||19===ne()||21===ne()||31===ne()||62===ne()||51===ne()?Ce(t=Se(294,r)):((t=Se(295,r)).type=Qt(),Ce(t));case 93:return function(){if(de(Jn)){var e=Te(298);return ae(),xt(58,36,e),Ce(e)}var t=Se(168);return t.typeName=Pe(),Ce(t)}();case 53:return function(){var e=Se(296);return ae(),e.type=Jt(),Ce(e)}();case 14:case 10:case 8:case 9:case 105:case 90:return Rt();case 40:return de(Kt)?Rt(!0):_t();case 109:case 99:return be();case 103:var e=dt();return 132!==ne()||C.hasPrecedingLineBreak()?e:function(e){ae();var t=Se(167,e.pos);return t.parameterName=e,t.type=Qt(),Ce(t)}(e);case 107:return de(Bt)?jt():function(){var e=Se(171);return me(107),e.exprName=it(!0),Ce(e)}();case 18:return de(It)?Ot():function(){var e=Se(172);return e.members=wt(),Ce(e)}();case 22:return function(){var e=Se(174);return e.elementTypes=nt(21,Mt,22,23),Ce(e)}();case 20:return function(){var e=Se(181);return me(20),e.type=Qt(),me(21),Ce(e)}();case 95:return jt();case 123:return de(Xr)?function(){var e=Se(167);return e.assertsModifier=ve(123),e.parameterName=103===ne()?dt():Fe(),e.type=ge(132)?Qt():void 0,Ce(e)}():_t();default:return _t()}var t,r}function zt(e){switch(ne()){case 124:case 147:case 142:case 139:case 150:case 127:case 137:case 143:case 146:case 109:case 145:case 99:case 103:case 107:case 136:case 18:case 22:case 29:case 51:case 50:case 98:case 10:case 8:case 9:case 105:case 90:case 140:case 41:case 57:case 53:case 25:case 131:case 95:case 123:return!0;case 93:return!e;case 40:return!e&&de(Kt);case 20:return!e&&de(Ut);default:return fe()}}function Ut(){return ae(),21===ne()||vt(!1)||zt()}function Vt(e,t){ae();var r=Se(e,t.pos);return r.type=t,Ce(r)}function qt(){var e=ne();switch(e){case 133:case 146:case 137:return function(e){var t=Se(183);return me(e),t.operator=e,t.type=qt(),Ce(t)}(e);case 131:return function(){var e=Se(180);me(131);var t=Se(154);return t.name=Fe(),e.typeParameter=Ce(t),Ce(e)}()}return function(){for(var e=Jt();!C.hasPrecedingLineBreak();)switch(ne()){case 53:e=Vt(296,e);break;case 57:if(!(4194304&D)&&de(Ge))return e;e=Vt(295,e);break;case 22:var t;if(me(22),zt())(t=Se(184,e.pos)).objectType=e,t.indexType=Qt(),me(23),e=Ce(t);else(t=Se(173,e.pos)).elementType=e,me(23),e=Ce(t);break;default:return e}return e}()}function Wt(e,t,r){var n=C.getStartPos(),i=ge(r),a=t();if(ne()===r||i){for(var o=[a];ge(r);)o.push(t());var s=Se(e,n);s.types=Ee(o,n),a=Ce(s)}return a}function Gt(){return Wt(178,qt,50)}function Ht(){if(ae(),21===ne()||25===ne())return!0;if(function(){if(e.isModifierKind(ne())&&Nn(),fe()||103===ne())return ae(),!0;if(22===ne()||18===ne()){var t=s.length;return fn(),t===s.length}return!1}()){if(58===ne()||27===ne()||57===ne()||62===ne())return!0;if(21===ne()&&(ae(),38===ne()))return!0}return!1}function Yt(){var e=fe()&&pe(Xt),t=Qt();if(e){var r=Se(167,e.pos);return r.assertsModifier=void 0,r.parameterName=e,r.type=t,Ce(r)}return t}function Xt(){var e=Fe();if(132===ne()&&!C.hasPrecedingLineBreak())return ae(),e}function Qt(){return z(40960,$t)}function $t(e){if(29===ne()||20===ne()&&de(Ht)||98===ne())return function(){var e=re(),t=Te(ge(98)?170:169,e);return xt(38,4,t),Ce(t)}();var t=Wt(177,Gt,51);if(!e&&!C.hasPrecedingLineBreak()&&ge(89)){var r=Se(179,t.pos);return r.checkType=t,r.extendsType=$t(!0),me(57),r.trueType=$t(),me(58),r.falseType=$t(),Ce(r)}return t}function Zt(){return ge(58)?Qt():void 0}function er(){switch(ne()){case 103:case 101:case 99:case 105:case 90:case 8:case 9:case 10:case 14:case 15:case 20:case 22:case 18:case 93:case 79:case 98:case 43:case 67:case 75:return!0;case 95:return de(Pt);default:return fe()}}function tr(){if(er())return!0;switch(ne()){case 39:case 40:case 54:case 53:case 84:case 107:case 109:case 45:case 46:case 29:case 126:case 120:return!0;default:return!!function(){if(H()&&96===ne())return!1;return e.getBinaryOperatorPrecedence(ne())>0}()||fe()}}function rr(){var e=Y();e&&K(!1);for(var t,r=ir();t=ye(27);)r=fr(r,t,ir());return e&&K(!0),r}function nr(){return ge(62)?ir():void 0}function ir(){if(function(){if(120===ne())return!!G()||de(Zr);return!1}())return function(){var e=Se(211);return ae(),C.hasPrecedingLineBreak()||41!==ne()&&!tr()?Ce(e):(e.asteriskToken=ye(41),e.expression=ir(),Ce(e))}();var t=function(){var t=function(){if(20===ne()||29===ne()||125===ne())return de(or);if(38===ne())return 1;return 0}();if(0===t)return;var r=1===t?ur(!0):pe(sr);if(!r)return;var n=e.hasModifier(r,256),i=ne();return r.equalsGreaterThanToken=ve(38),r.body=38===i||18===i?lr(n):Fe(),Ce(r)}()||function(){if(125===ne()&&1===de(cr)){var e=An();return ar(_r(0),e)}return}();if(t)return t;var r=_r(0);return 75===r.kind&&38===ne()?ar(r):e.isLeftHandSideExpression(r)&&e.isAssignmentOperator(se())?fr(r,be(),ir()):function(t){var r=ye(57);if(!r)return t;var n=Se(209,t.pos);return n.condition=t,n.questionToken=r,n.whenTrue=z(k,ir),n.colonToken=ve(58),n.whenFalse=e.nodeIsPresent(n.colonToken)?ir():ke(75,!1,e.Diagnostics._0_expected,e.tokenToString(58)),Ce(n)}(r)}function ar(t,r){var n;e.Debug.assert(38===ne(),"parseSimpleArrowFunctionExpression should only have been called if we had a =>"),r?(n=Se(201,r.pos)).modifiers=r:n=Se(201,t.pos);var i=Se(155,t.pos);return i.name=t,Ce(i),n.parameters=Ee([i],i.pos,i.end),n.equalsGreaterThanToken=ve(38),n.body=lr(!!r),O(Ce(n))}function or(){if(125===ne()){if(ae(),C.hasPrecedingLineBreak())return 0;if(20!==ne()&&29!==ne())return 0}var t=ne(),r=ae();if(20===t){if(21===r)switch(ae()){case 38:case 58:case 18:return 1;default:return 0}if(22===r||18===r)return 2;if(25===r)return 1;if(e.isModifierKind(r)&&125!==r&&de(ze))return 1;if(!fe()&&103!==r)return 0;switch(ae()){case 58:return 1;case 57:return ae(),58===ne()||27===ne()||62===ne()||21===ne()?1:0;case 27:case 62:case 21:return 2}return 0}return e.Debug.assert(29===t),fe()?1===o.languageVariant?de((function(){var e=ae();if(89===e)switch(ae()){case 62:case 31:return!1;default:return!0}else if(27===e)return!0;return!1}))?1:0:2:0}function sr(){var t=C.getTokenPos();if(!b||!b.has(t.toString())){var r=ur(!1);return r||(b||(b=e.createMap())).set(t.toString(),!0),r}}function cr(){if(125===ne()){if(ae(),C.hasPrecedingLineBreak()||38===ne())return 0;var e=_r(0);if(!C.hasPrecedingLineBreak()&&75===e.kind&&38===ne())return 1}return 0}function ur(t){var r=Te(201);if(r.modifiers=An(),xt(58,e.hasModifier(r,256)?2:0,r)||t){var n=r.type&&e.isJSDocFunctionType(r.type);if(t||38===ne()||!n&&18===ne())return r}}function lr(e){return 18===ne()?qr(e?2:0):26===ne()||93===ne()||79===ne()||!rn()||18!==ne()&&93!==ne()&&79!==ne()&&59!==ne()&&tr()?e?q(ir):z(32768,ir):qr(16|(e?2:0))}function _r(e){return pr(e,yr())}function dr(e){return 96===e||151===e}function pr(t,r){for(;;){se();var n=e.getBinaryOperatorPrecedence(ne());if(!(42===ne()?n>=t:n>t))break;if(96===ne()&&H())break;if(122===ne()){if(C.hasPrecedingLineBreak())break;ae(),r=mr(r,Qt())}else r=fr(r,be(),_r(n))}return r}function fr(e,t,r){var n=Se(208,e.pos);return n.left=e,n.operatorToken=t,n.right=r,Ce(n)}function mr(e,t){var r=Se(216,e.pos);return r.expression=e,r.type=t,Ce(r)}function gr(){var e=Se(206);return e.operator=ne(),ae(),e.operand=hr(),Ce(e)}function yr(){if(function(){switch(ne()){case 39:case 40:case 54:case 53:case 84:case 107:case 109:case 126:return!1;case 29:if(1!==o.languageVariant)return!1;default:return!0}}()){var t=vr();return 42===ne()?pr(e.getBinaryOperatorPrecedence(ne()),t):t}var r=ne(),n=hr();if(42===ne()){var i=e.skipTrivia(m,n.pos),a=n.end;198===n.kind?Z(i,a,e.Diagnostics.A_type_assertion_expression_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses):Z(i,a,e.Diagnostics.An_unary_expression_with_the_0_operator_is_not_allowed_in_the_left_hand_side_of_an_exponentiation_expression_Consider_enclosing_the_expression_in_parentheses,e.tokenToString(r))}return n}function hr(){switch(ne()){case 39:case 40:case 54:case 53:return gr();case 84:return function(){var e=Se(202);return ae(),e.expression=hr(),Ce(e)}();case 107:return function(){var e=Se(203);return ae(),e.expression=hr(),Ce(e)}();case 109:return function(){var e=Se(204);return ae(),e.expression=hr(),Ce(e)}();case 29:return function(){var e=Se(198);return me(29),e.type=Qt(),me(31),e.expression=hr(),Ce(e)}();case 126:if(126===ne()&&(X()||de(Zr)))return function(){var e=Se(205);return ae(),e.expression=hr(),Ce(e)}();default:return vr()}}function vr(){if(45===ne()||46===ne())return(t=Se(206)).operator=ne(),ae(),t.operand=br(),Ce(t);if(1===o.languageVariant&&29===ne()&&de(Ve))return Dr(!0);var t,r=br();return e.Debug.assert(e.isLeftHandSideExpression(r)),45!==ne()&&46!==ne()||C.hasPrecedingLineBreak()?r:((t=Se(207,r.pos)).operand=r,t.operator=ne(),ae(),Ce(t))}function br(){var t;if(95===ne())if(de(At))o.flags|=1048576,t=be();else if(de(Ft)){var r=C.getStartPos();ae(),ae();var n=Se(218,r);n.keywordToken=95,n.name=Pe(),t=Ce(n),o.flags|=2097152}else t=xr();else t=101===ne()?function(){var t=be();if(29===ne()){var r=re();void 0!==pe(Mr)&&Z(r,re(),e.Diagnostics.super_may_not_use_type_arguments)}if(20===ne()||24===ne()||22===ne())return t;var n=Se(193,t.pos);return n.expression=t,ve(24,e.Diagnostics.super_must_be_followed_by_an_argument_list_or_member_access),n.name=ot(!0),Ce(n)}():xr();return function(t){for(;;){t=Pr(t,!0);var r=ye(28);if(29===ne()||47===ne()){var n=pe(Mr);if(n){if(wr()){t=Ir(t,r,n);continue}(i=Se(195,t.pos)).expression=t,i.questionDotToken=r,i.typeArguments=n,i.arguments=Or(),(r||32&t.flags)&&(i.flags|=32),t=Ce(i);continue}}else if(20===ne()){var i;(i=Se(195,t.pos)).expression=t,i.questionDotToken=r,i.arguments=Or(),(r||32&t.flags)&&(i.flags|=32),t=Ce(i);continue}if(r){var a=Se(193,t.pos);a.expression=t,a.questionDotToken=r,a.name=ke(75,!1,e.Diagnostics.Identifier_expected),a.flags|=32,t=Ce(a)}break}return t}(t)}function xr(){return Pr(Lr(),!0)}function Dr(t){var r,n=function(e){var t=C.getStartPos();if(me(29),31===ne()){var r=Se(269,t);return le(),Ce(r)}var n,i=Er(),a=Ln(),o=(s=Se(272),s.properties=Ye(13,kr),Ce(s));var s;31===ne()?(n=Se(266,t),le()):(me(43),e?me(31):(me(31,void 0,!1),le()),n=Se(265,t));return n.tagName=i,n.typeArguments=a,n.attributes=o,Ce(n)}(t);if(266===n.kind)(i=Se(264,n.pos)).openingElement=n,i.children=Tr(i.openingElement),i.closingElement=function(e){var t=Se(267);me(30),t.tagName=Er(),e?me(31):(me(31,void 0,!1),le());return Ce(t)}(t),x(i.openingElement.tagName,i.closingElement.tagName)||ee(i.closingElement,e.Diagnostics.Expected_corresponding_JSX_closing_tag_for_0,e.getTextOfNodeFromSourceText(m,i.openingElement.tagName)),r=Ce(i);else if(269===n.kind){var i;(i=Se(268,n.pos)).openingFragment=n,i.children=Tr(i.openingFragment),i.closingFragment=function(t){var r=Se(270);me(30),e.tokenIsIdentifierOrKeyword(ne())&&ee(Er(),e.Diagnostics.Expected_corresponding_closing_tag_for_JSX_fragment);t?me(31):(me(31,void 0,!1),le());return Ce(r)}(t),r=Ce(i)}else e.Debug.assert(265===n.kind),r=n;if(t&&29===ne()){var a=pe((function(){return Dr(!0)}));if(a){Q(e.Diagnostics.JSX_expressions_must_have_one_parent_element);var o=Se(208,r.pos);return o.end=a.end,o.left=r,o.right=a,o.operatorToken=ke(27,!1),o.operatorToken.pos=o.operatorToken.end=o.right.pos,o}}return r}function Sr(t,r){switch(r){case 1:return void(e.isJsxOpeningFragment(t)?ee(t,e.Diagnostics.JSX_fragment_has_no_corresponding_closing_tag):ee(t.tagName,e.Diagnostics.JSX_element_0_has_no_corresponding_closing_tag,e.getTextOfNodeFromSourceText(m,t.tagName)));case 30:case 7:return;case 11:case 12:return function(){var e=Se(11);return e.text=C.getTokenValue(),e.containsOnlyTriviaWhiteSpaces=12===u,u=C.scanJsxToken(),Ce(e)}();case 18:return Cr(!1);case 29:return Dr(!1);default:return e.Debug.assertNever(r)}}function Tr(e){var t=[],r=re(),n=v;for(v|=16384;;){var i=Sr(e,u=C.reScanJsxToken());if(!i)break;t.push(i)}return v=n,Ee(t,r)}function Er(){ue();for(var e=103===ne()?be():Pe();ge(24);){var t=Se(193,e.pos);t.expression=e,t.name=ot(!0),e=Ce(t)}return e}function Cr(e){var t=Se(274);if(me(18))return 19!==ne()&&(t.dotDotDotToken=ye(25),t.expression=rr()),e?me(19):me(19,void 0,!1)&&le(),Ce(t)}function kr(){if(18===ne())return function(){var e=Se(273);return me(18),me(25),e.expression=rr(),me(19),Ce(e)}();ue();var e=Se(271);if(e.name=Pe(),62===ne())switch(u=C.scanJsxAttributeValue()){case 10:e.initializer=ut();break;default:e.initializer=Cr(!0)}return Ce(e)}function Nr(){return ae(),e.tokenIsIdentifierOrKeyword(ne())||22===ne()||wr()}function Ar(e,t){var r=Se(193,e.pos);return r.expression=e,r.questionDotToken=t,r.name=ot(!0),(t||32&e.flags)&&(r.flags|=32),Ce(r)}function Fr(t,r){var n=Se(194,t.pos);if(n.expression=t,n.questionDotToken=r,23===ne())n.argumentExpression=ke(75,!0,e.Diagnostics.An_element_access_expression_should_take_an_argument);else{var i=V(rr);e.isStringOrNumericLiteralLike(i)&&(i.text=Ne(i.text)),n.argumentExpression=i}return me(23),(r||32&t.flags)&&(n.flags|=32),Ce(n)}function Pr(t,r){for(;;){var n=void 0,i=!1;if(r&&28===ne()&&de(Nr)?(n=ve(28),i=e.tokenIsIdentifierOrKeyword(ne())):i=ge(24),i)t=Ar(t,n);else if(n||53!==ne()||C.hasPrecedingLineBreak())if(!n&&Y()||!ge(22)){if(!wr())return t;t=Ir(t,n,void 0)}else t=Fr(t,n);else{ae();var a=Se(217,t.pos);a.expression=t,t=Ce(a)}}}function wr(){return 14===ne()||15===ne()}function Ir(e,t,r){var n=Se(197,e.pos);return n.tag=e,n.questionDotToken=t,n.typeArguments=r,n.template=14===ne()?ut():st(),(t||32&e.flags)&&(n.flags|=32),Ce(n)}function Or(){me(20);var e=et(11,Br);return me(21),e}function Mr(){if(29===ce()){ae();var e=et(20,Qt);if(me(31))return e&&function(){switch(ne()){case 20:case 14:case 15:case 24:case 21:case 23:case 58:case 26:case 57:case 34:case 36:case 35:case 37:case 55:case 56:case 60:case 52:case 50:case 51:case 19:case 1:return!0;case 27:case 18:default:return!1}}()?e:void 0}}function Lr(){switch(ne()){case 8:case 9:case 10:case 14:return ut();case 103:case 101:case 99:case 105:case 90:return be();case 20:return function(){var e=Te(199);return me(20),e.expression=V(rr),me(21),Ce(e)}();case 22:return jr();case 18:return Jr();case 125:if(!de($r))break;return zr();case 79:return wn(Te(0),213);case 93:return zr();case 98:return function(){var t=C.getStartPos();if(me(98),ge(24)){var r=Se(218,t);return r.keywordToken=98,r.name=Pe(),Ce(r)}var n,i=Lr();for(;;){i=Pr(i,!1),n=pe(Mr),wr()&&(e.Debug.assert(!!n,"Expected a type argument list; all plain tagged template starts should be consumed in 'parseMemberExpressionRest'"),i=Ir(i,void 0,n),n=void 0);break}var a=Se(196,t);a.expression=i,a.typeArguments=n,(a.typeArguments||20===ne())&&(a.arguments=Or());return Ce(a)}();case 43:case 67:if(13===(u=C.reScanSlashToken()))return ut();break;case 15:return st()}return Fe(e.Diagnostics.Expression_expected)}function Rr(){return 25===ne()?function(){var e=Se(212);return me(25),e.expression=ir(),Ce(e)}():27===ne()?Se(214):ir()}function Br(){return z(k,Rr)}function jr(){var e=Se(191);return me(22),C.hasPrecedingLineBreak()&&(e.multiLine=!0),e.elements=et(15,Rr),me(23),Ce(e)}function Kr(){var e=Te(0);if(ye(25))return e.kind=281,e.expression=ir(),Ce(e);if(e.decorators=kn(),e.modifiers=Nn(),Me(130))return En(e,162);if(Me(141))return En(e,163);var t=ye(41),r=fe();if(e.name=Oe(),e.questionToken=ye(57),e.exclamationToken=ye(53),t||20===ne()||29===ne())return Dn(e,t);if(r&&58!==ne()){e.kind=280;var n=ye(62);n&&(e.equalsToken=n,e.objectAssignmentInitializer=V(ir))}else e.kind=279,me(58),e.initializer=V(ir);return Ce(e)}function Jr(){var e=Se(192);return me(18),C.hasPrecedingLineBreak()&&(e.multiLine=!0),e.properties=et(12,Kr,!0),me(19),Ce(e)}function zr(){var t=Y();t&&K(!1);var r=Te(200);r.modifiers=Nn(),me(93),r.asteriskToken=ye(41);var n=r.asteriskToken?1:0,i=e.hasModifier(r,256)?2:0;return r.name=n&&i?U(40960,Ur):n?function(e){return U(8192,e)}(Ur):i?q(Ur):Ur(),xt(58,n|i,r),r.body=qr(n|i),t&&K(!0),Ce(r)}function Ur(){return fe()?Fe():void 0}function Vr(e,t){var r=Se(222);return me(18,t)||e?(C.hasPrecedingLineBreak()&&(r.multiLine=!0),r.statements=Ye(1,an),me(19)):r.statements=rt(),Ce(r)}function qr(e,t){var r=G();j(!!(1&e));var n=X();J(!!(2&e));var i=Y();i&&K(!1);var a=Vr(!!(16&e),t);return i&&K(!0),j(r),J(n),a}function Wr(){var e=re();me(92);var t,r,n=ye(126);if(me(20),26!==ne()&&(t=108===ne()||114===ne()||80===ne()?yn(!0):U(4096,rr)),n?me(151):ge(151)){var i=Se(231,e);i.awaitModifier=n,i.initializer=t,i.expression=V(ir),me(21),r=i}else if(ge(96)){var a=Se(230,e);a.initializer=t,a.expression=V(rr),me(21),r=a}else{var o=Se(229,e);o.initializer=t,me(26),26!==ne()&&21!==ne()&&(o.condition=V(rr)),me(26),21!==ne()&&(o.incrementor=V(rr)),me(21),r=o}return r.statement=an(),Ce(r)}function Gr(e){var t=Se(e);return me(233===e?76:81),xe()||(t.label=Fe()),De(),Ce(t)}function Hr(){return 77===ne()?function(){var e=Se(275);return me(77),e.expression=V(rr),me(58),e.statements=Ye(3,an),Ce(e)}():function(){var e=Se(276);return me(83),me(58),e.statements=Ye(3,an),Ce(e)}()}function Yr(){var e=Se(239);return me(106),e.tryBlock=Vr(!1),e.catchClause=78===ne()?function(){var e=Se(278);me(78),ge(20)?(e.variableDeclaration=gn(),me(21)):e.variableDeclaration=void 0;return e.block=Vr(!1),Ce(e)}():void 0,e.catchClause&&91!==ne()||(me(91),e.finallyBlock=Vr(!1)),Ce(e)}function Xr(){return ae(),e.tokenIsIdentifierOrKeyword(ne())&&!C.hasPrecedingLineBreak()}function Qr(){return ae(),79===ne()&&!C.hasPrecedingLineBreak()}function $r(){return ae(),93===ne()&&!C.hasPrecedingLineBreak()}function Zr(){return ae(),(e.tokenIsIdentifierOrKeyword(ne())||8===ne()||9===ne()||10===ne())&&!C.hasPrecedingLineBreak()}function en(){for(;;)switch(ne()){case 108:case 114:case 80:case 93:case 79:case 87:return!0;case 113:case 144:return ae(),!C.hasPrecedingLineBreak()&&fe();case 134:case 135:return un();case 121:case 125:case 129:case 116:case 117:case 118:case 137:if(ae(),C.hasPrecedingLineBreak())return!1;continue;case 149:return ae(),18===ne()||75===ne()||88===ne();case 95:return ae(),10===ne()||41===ne()||18===ne()||e.tokenIsIdentifierOrKeyword(ne());case 88:if(ae(),62===ne()||41===ne()||18===ne()||83===ne()||122===ne())return!0;continue;case 119:ae();continue;default:return!1}}function tn(){return de(en)}function rn(){switch(ne()){case 59:case 26:case 18:case 108:case 114:case 93:case 79:case 87:case 94:case 85:case 110:case 92:case 81:case 76:case 100:case 111:case 102:case 104:case 106:case 82:case 78:case 91:return!0;case 95:return tn()||de(Pt);case 80:case 88:return tn();case 125:case 129:case 113:case 134:case 135:case 144:case 149:return!0;case 118:case 116:case 117:case 119:case 137:return tn()||!de(Xr);default:return tr()}}function nn(){return ae(),fe()||18===ne()||22===ne()}function an(){switch(ne()){case 26:return function(){var e=Se(223);return me(26),Ce(e)}();case 18:return Vr(!1);case 108:return vn(Te(241));case 114:if(de(nn))return vn(Te(241));break;case 93:return bn(Te(243));case 79:return Pn(Te(244));case 94:return function(){var e=Se(226);return me(94),me(20),e.expression=V(rr),me(21),e.thenStatement=an(),e.elseStatement=ge(86)?an():void 0,Ce(e)}();case 85:return function(){var e=Se(227);return me(85),e.statement=an(),me(110),me(20),e.expression=V(rr),me(21),ge(26),Ce(e)}();case 110:return function(){var e=Se(228);return me(110),me(20),e.expression=V(rr),me(21),e.statement=an(),Ce(e)}();case 92:return Wr();case 81:return Gr(232);case 76:return Gr(233);case 100:return function(){var e=Se(234);return me(100),xe()||(e.expression=V(rr)),De(),Ce(e)}();case 111:return function(){var e=Se(235);return me(111),me(20),e.expression=V(rr),me(21),e.statement=U(16777216,an),Ce(e)}();case 102:return function(){var e=Se(236);me(102),me(20),e.expression=V(rr),me(21);var t=Se(250);return me(18),t.clauses=Ye(2,Hr),me(19),e.caseBlock=Ce(t),Ce(e)}();case 104:return function(){var e=Se(238);return me(104),e.expression=C.hasPrecedingLineBreak()?void 0:V(rr),De(),Ce(e)}();case 106:case 78:case 91:return Yr();case 82:return function(){var e=Se(240);return me(82),De(),Ce(e)}();case 59:return sn();case 125:case 113:case 144:case 134:case 135:case 129:case 80:case 87:case 88:case 95:case 116:case 117:case 118:case 121:case 119:case 137:case 149:if(tn())return sn()}return function(){var e=Te(0),t=V(rr);return 75===t.kind&&ge(58)?(e.kind=237,e.label=t,e.statement=an()):(e.kind=225,e.expression=t,De()),Ce(e)}()}function on(e){return 129===e.kind}function sn(){var t=de((function(){return kn(),Nn()})),r=e.some(t,on);if(r){var n=U(8388608,(function(){var e=Qe(v);if(e)return $e(e)}));if(n)return n}var i=Te(0);if(i.decorators=kn(),i.modifiers=Nn(),r){for(var a=0,o=i.modifiers;a<o.length;a++){o[a].flags|=8388608}return U(8388608,(function(){return cn(i)}))}return cn(i)}function cn(t){switch(ne()){case 108:case 114:case 80:return vn(t);case 93:return bn(t);case 79:return Pn(t);case 113:return function(e){return e.kind=245,me(113),e.name=Fe(),e.typeParameters=yt(),e.heritageClauses=In(),e.members=wt(),Ce(e)}(t);case 144:return function(e){return e.kind=246,me(144),e.name=Fe(),e.typeParameters=yt(),me(62),e.type=Qt(),De(),Ce(e)}(t);case 87:return function(e){e.kind=247,me(87),e.name=Fe(),me(18)?(e.members=et(6,Bn),me(19)):e.members=rt();return Ce(e)}(t);case 149:case 134:case 135:return function(e){var t=0;if(149===ne())return Kn(e);if(ge(135))t|=16;else if(me(134),10===ne())return Kn(e);return function e(t,r){t.kind=248;var n=16&r;t.flags|=r;t.name=Fe();t.body=ge(24)?e(Se(0),4|n):jn();return Ce(t)}(e,t)}(t);case 95:return function(e){me(95);var t,r=C.getStartPos();if(fe()&&(t=Fe(),27!==ne()&&148!==ne()))return function(e,t){return e.kind=252,e.name=t,me(62),e.moduleReference=function(){return 138===ne()&&de(Jn)?function(){var e=Se(263);return me(138),me(20),e.expression=Un(),me(21),Ce(e)}():it(!1)}(),De(),Ce(e)}(e,t);e.kind=253,(t||41===ne()||18===ne())&&(e.importClause=function(e,t){var r=Se(254,t);e&&(r.name=e);r.name&&!ge(27)||(r.namedBindings=41===ne()?(n=Se(255),me(41),me(122),n.name=Fe(),Ce(n)):Vn(256));var n;return Ce(r)}(t,r),me(148));return e.moduleSpecifier=Un(),De(),Ce(e)}(t);case 88:switch(ae(),ne()){case 83:case 62:return function(e){e.kind=258,ge(62)?e.isExportEquals=!0:me(83);return e.expression=ir(),De(),Ce(e)}(t);case 122:return function(e){return e.kind=251,me(122),me(135),e.name=Fe(),De(),Ce(e)}(t);default:return function(e){e.kind=259,ge(41)?(me(148),e.moduleSpecifier=Un()):(e.exportClause=Vn(260),(148===ne()||10===ne()&&!C.hasPrecedingLineBreak())&&(me(148),e.moduleSpecifier=Un()));return De(),Ce(e)}(t)}default:if(t.decorators||t.modifiers){var r=ke(262,!0,e.Diagnostics.Declaration_expected);return r.pos=t.pos,r.decorators=t.decorators,r.modifiers=t.modifiers,Ce(r)}return}}function un(){return ae(),!C.hasPrecedingLineBreak()&&(fe()||10===ne())}function ln(e,t){if(18===ne()||!xe())return qr(e,t);De()}function _n(){if(27===ne())return Se(214);var e=Se(190);return e.dotDotDotToken=ye(25),e.name=fn(),e.initializer=nr(),Ce(e)}function dn(){var e=Se(190);e.dotDotDotToken=ye(25);var t=fe(),r=Oe();return t&&58!==ne()?e.name=r:(me(58),e.propertyName=r,e.name=fn()),e.initializer=nr(),Ce(e)}function pn(){return 18===ne()||22===ne()||fe()}function fn(){return 22===ne()?function(){var e=Se(189);return me(22),e.elements=et(10,_n),me(23),Ce(e)}():18===ne()?function(){var e=Se(188);return me(18),e.elements=et(9,dn),me(19),Ce(e)}():Fe()}function mn(){return gn(!0)}function gn(e){var t=Se(241);return t.name=fn(),e&&75===t.name.kind&&53===ne()&&!C.hasPrecedingLineBreak()&&(t.exclamationToken=be()),t.type=Zt(),dr(ne())||(t.initializer=nr()),Ce(t)}function yn(t){var r=Se(242);switch(ne()){case 108:break;case 114:r.flags|=1;break;case 80:r.flags|=2;break;default:e.Debug.fail()}if(ae(),151===ne()&&de(hn))r.declarations=rt();else{var n=H();B(t),r.declarations=et(8,t?gn:mn),B(n)}return Ce(r)}function hn(){return ze()&&21===ae()}function vn(e){return e.kind=224,e.declarationList=yn(!1),De(),Ce(e)}function bn(t){t.kind=243,me(93),t.asteriskToken=ye(41),t.name=e.hasModifier(t,512)?Ur():Fe();var r=t.asteriskToken?1:0,n=e.hasModifier(t,256)?2:0;return xt(58,r|n,t),t.body=ln(r|n,e.Diagnostics.or_expected),Ce(t)}function xn(t){return pe((function(){if(128===ne()?me(128):10===ne()&&20===de(ae)?pe((function(){var e=ut();return"constructor"===e.text?e:void 0})):void 0)return t.kind=161,xt(58,0,t),t.body=ln(0,e.Diagnostics.or_expected),Ce(t)}))}function Dn(t,r,n){t.kind=160,t.asteriskToken=r;var i=r?1:0,a=e.hasModifier(t,256)?2:0;return xt(58,i|a,t),t.body=ln(i|a,n),Ce(t)}function Sn(t){return t.kind=158,t.questionToken||53!==ne()||C.hasPrecedingLineBreak()||(t.exclamationToken=be()),t.type=Zt(),t.initializer=e.hasModifier(t,32)?V(nr):z(12288,nr),De(),Ce(t)}function Tn(t){var r=ye(41);return t.name=Oe(),t.questionToken=ye(57),r||20===ne()||29===ne()?Dn(t,r,e.Diagnostics.or_expected):Sn(t)}function En(e,t){return e.kind=t,e.name=Oe(),xt(58,0,e),e.body=ln(0),Ce(e)}function Cn(){var t;if(59===ne())return!0;for(;e.isModifierKind(ne());){if(t=ne(),e.isClassMemberModifier(t))return!0;ae()}if(41===ne())return!0;if(we()&&(t=ne(),ae()),22===ne())return!0;if(void 0!==t){if(!e.isKeyword(t)||141===t||130===t)return!0;switch(ne()){case 20:case 29:case 53:case 58:case 62:case 57:return!0;default:return xe()}}return!1}function kn(){for(var e,t=re();;){var r=re();if(!ge(59))break;var n=Se(156,r);n.expression=U(16384,br),Ce(n),(e||(e=[])).push(n)}return e&&Ee(e,t)}function Nn(t){for(var r,n=re();;){var i=C.getStartPos(),a=ne();if(80===ne()&&t){if(!pe(Le))break}else if(!e.isModifierKind(ne())||!pe(Re))break;var o=Ce(Se(a,i));(r||(r=[])).push(o)}return r&&Ee(r,n)}function An(){var e;if(125===ne()){var t=C.getStartPos(),r=ne();ae(),e=Ee([Ce(Se(r,t))],t)}return e}function Fn(){if(26===ne()){var t=Se(221);return ae(),Ce(t)}var r=Te(0);if(r.decorators=kn(),r.modifiers=Nn(!0),Me(130))return En(r,162);if(Me(141))return En(r,163);if(128===ne()||10===ne()){var n=xn(r);if(n)return n}if(Tt())return Ct(r);if(e.tokenIsIdentifierOrKeyword(ne())||10===ne()||8===ne()||41===ne()||22===ne()){if(r.modifiers&&e.some(r.modifiers,on)){for(var i=0,a=r.modifiers;i<a.length;i++){a[i].flags|=8388608}return U(8388608,(function(){return Tn(r)}))}return Tn(r)}return r.decorators||r.modifiers?(r.name=ke(75,!0,e.Diagnostics.Declaration_expected),Sn(r)):e.Debug.fail("Should not have attempted to parse class member declaration.")}function Pn(e){return wn(e,244)}function wn(e,t){return e.kind=t,me(79),e.name=!fe()||112===ne()&&de(Ue)?void 0:Fe(),e.typeParameters=yt(),e.heritageClauses=In(),me(18)?(e.members=Ye(5,Fn),me(19)):e.members=rt(),Ce(e)}function In(){if(Rn())return Ye(22,On)}function On(){var t=ne();e.Debug.assert(89===t||112===t);var r=Se(277);return r.token=t,ae(),r.types=et(7,Mn),Ce(r)}function Mn(){var e=Se(215);return e.expression=br(),e.typeArguments=Ln(),Ce(e)}function Ln(){return 29===ne()?nt(20,Qt,29,31):void 0}function Rn(){return 89===ne()||112===ne()}function Bn(){var e=Te(282);return e.name=Oe(),e.initializer=V(nr),Ce(e)}function jn(){var e=Se(249);return me(18)?(e.statements=Ye(1,an),me(19)):e.statements=rt(),Ce(e)}function Kn(e){return e.kind=248,149===ne()?(e.name=Fe(),e.flags|=1024):(e.name=ut(),e.name.text=Ne(e.name.text)),18===ne()?e.body=jn():De(),Ce(e)}function Jn(){return 20===ae()}function zn(){return 43===ae()}function Un(){if(10===ne()){var e=ut();return e.text=Ne(e.text),e}return rr()}function Vn(e){var t=Se(e);return t.elements=nt(23,256===e?Wn:qn,18,19),Ce(t)}function qn(){return Gn(261)}function Wn(){return Gn(257)}function Gn(t){var r=Se(t),n=e.isKeyword(ne())&&!fe(),i=C.getTokenPos(),a=C.getTextPos(),o=Pe();return 122===ne()?(r.propertyName=o,me(122),n=e.isKeyword(ne())&&!fe(),i=C.getTokenPos(),a=C.getTextPos(),r.name=Pe()):r.name=o,257===t&&n&&Z(i,a,e.Diagnostics.Identifier_expected),Ce(r)}function Hn(t){return e.hasModifier(t,1)||252===t.kind&&263===t.moduleReference.kind||253===t.kind||258===t.kind||259===t.kind?t:void 0}function Yn(t){return function(t){return e.isMetaProperty(t)&&95===t.keywordToken&&"meta"===t.name.escapedText}(t)?t:_(t,Yn)}t.parseSourceFile=function(t,r,n,i,a,o){if(void 0===a&&(a=!1),6===(o=e.ensureScriptKind(t,o))){var s=A(t,r,n,i,a);return e.convertToObjectWorker(s,s.parseDiagnostics,!1,void 0,void 0),s.referencedFiles=e.emptyArray,s.typeReferenceDirectives=e.emptyArray,s.libReferenceDirectives=e.emptyArray,s.amdDependencies=e.emptyArray,s.hasNoDefaultLib=!1,s.pragmas=e.emptyMap,s}P(r,n,i,o);var c=I(t,n,a,o);return w(),c},t.parseIsolatedEntityName=function(e,t){P(e,t,void 0,1),ae();var r=it(!0),n=1===ne()&&!s.length;return w(),n?r:void 0},t.parseJsonText=A,t.fixupParentReferences=M,function(e){e[e.SourceElements=0]="SourceElements",e[e.BlockStatements=1]="BlockStatements",e[e.SwitchClauses=2]="SwitchClauses",e[e.SwitchClauseStatements=3]="SwitchClauseStatements",e[e.TypeMembers=4]="TypeMembers",e[e.ClassMembers=5]="ClassMembers",e[e.EnumMembers=6]="EnumMembers",e[e.HeritageClauseElement=7]="HeritageClauseElement",e[e.VariableDeclarations=8]="VariableDeclarations",e[e.ObjectBindingElements=9]="ObjectBindingElements",e[e.ArrayBindingElements=10]="ArrayBindingElements",e[e.ArgumentExpressions=11]="ArgumentExpressions",e[e.ObjectLiteralMembers=12]="ObjectLiteralMembers",e[e.JsxAttributes=13]="JsxAttributes",e[e.JsxChildren=14]="JsxChildren",e[e.ArrayLiteralMembers=15]="ArrayLiteralMembers",e[e.Parameters=16]="Parameters",e[e.JSDocParameters=17]="JSDocParameters",e[e.RestProperties=18]="RestProperties",e[e.TypeParameters=19]="TypeParameters",e[e.TypeArguments=20]="TypeArguments",e[e.TupleElementTypes=21]="TupleElementTypes",e[e.HeritageClauses=22]="HeritageClauses",e[e.ImportOrExportSpecifiers=23]="ImportOrExportSpecifiers",e[e.Count=24]="Count"}(S||(S={})),function(e){e[e.False=0]="False",e[e.True=1]="True",e[e.Unknown=2]="Unknown"}(T||(T={})),function(t){function r(t){var r,n=Se(292),i=(t?ge:me)(18);return n.type=U(4194304,mt),t&&!i||(r=19,ne()===r?oe():Q(e.Diagnostics._0_expected,e.tokenToString(r))),M(n),Ce(n)}var n,i;function a(t,n){void 0===t&&(t=0);var i=m,a=void 0===n?i.length:t+n;if(n=a-t,e.Debug.assert(t>=0),e.Debug.assert(t<=a),e.Debug.assert(a<=i.length),l(i,t)){var o,s,c,u=[];return C.scanRange(t+3,n-5,(function(){var e,r,n=1,l=t-Math.max(i.lastIndexOf("\n",t),0)+4;function p(t){e||(e=l),u.push(t),l+=t.length}for(oe();I(5););I(4)&&(n=0,l=0);e:for(;;){switch(ne()){case 59:0===n||1===n?(d(u),b(y(l)),n=0,e=void 0):p(C.getTokenText());break;case 4:u.push(C.getTokenText()),n=0,l=0;break;case 41:var f=C.getTokenText();1===n||2===n?(n=2,p(f)):(n=1,l+=f.length);break;case 5:var m=C.getTokenText();2===n?u.push(m):void 0!==e&&l+m.length>e&&u.push(m.slice(e-l-1)),l+=m.length;break;case 1:break e;default:n=2,p(C.getTokenText())}oe()}return _(u),d(u),(r=Se(301,t)).tags=o&&Ee(o,s,c),r.comment=u.length?u.join(""):void 0,Ce(r,a)}))}function _(e){for(;e.length&&("\n"===e[0]||"\r"===e[0]);)e.shift()}function d(e){for(;e.length&&""===e[e.length-1].trim();)e.pop()}function p(){for(;;){if(oe(),1===ne())return!0;if(5!==ne()&&4!==ne())return!1}}function f(){if(5!==ne()&&4!==ne()||!de(p))for(;5===ne()||4===ne();)oe()}function g(){if((5===ne()||4===ne())&&de(p))return"";for(var e=C.hasPrecedingLineBreak(),t=!1,r="";e&&41===ne()||5===ne()||4===ne();)r+=C.getTokenText(),4===ne()?(e=!0,t=!0,r=""):41===ne()&&(e=!1),oe();return t?r:""}function y(t){e.Debug.assert(59===ne());var n=C.getTokenPos();oe();var i,a=O(void 0),s=g();switch(a.escapedText){case"author":i=function(e,t,r){var n=Se(306,e);n.tagName=t;var i=pe((function(){return function(){var e=[],t=!1,r=!1,n=C.getToken();e:for(;;){switch(n){case 75:case 5:case 24:case 59:e.push(C.getTokenText());break;case 29:if(t||r)return;t=!0,e.push(C.getTokenText());break;case 31:if(!t||r)return;r=!0,e.push(C.getTokenText()),C.setTextPos(C.getTokenPos()+1);break e;case 4:case 1:break e}n=oe()}if(t&&r)return 0===e.length?void 0:e.join("")}()}));if(!i)return Ce(n);if(n.comment=i,de((function(){return 4!==ae()}))){var a=v(r);a&&(n.comment+=a)}return Ce(n)}(n,a,t);break;case"augments":case"extends":i=function(e,t){var r=Se(305,e);return r.tagName=t,r.class=function(){var e=ge(18),t=Se(215);t.expression=function(){var e=O();for(;ge(24);){var t=Se(193,e.pos);t.expression=e,t.name=O(),e=Ce(t)}return e}(),t.typeArguments=Ln();var r=Ce(t);e&&me(19);return r}(),Ce(r)}(n,a);break;case"class":case"constructor":i=function(e,t){var r=Se(307,e);return r.tagName=t,Ce(r)}(n,a);break;case"this":i=function(e,t){var n=Se(312,e);return n.tagName=t,n.typeExpression=r(!0),f(),Ce(n)}(n,a);break;case"enum":i=function(e,t){var n=Se(309,e);return n.tagName=t,n.typeExpression=r(!0),f(),Ce(n)}(n,a);break;case"arg":case"argument":case"param":return T(n,a,2,t);case"return":case"returns":i=function(t,r){e.some(o,e.isJSDocReturnTag)&&Z(r.pos,C.getTokenPos(),e.Diagnostics._0_tag_already_specified,r.escapedText);var n=Se(311,t);return n.tagName=r,n.typeExpression=x(),Ce(n)}(n,a);break;case"template":i=function(t,n){var i;18===ne()&&(i=r());var a=[],o=re();do{f();var s=Se(154);s.name=O(e.Diagnostics.Unexpected_token_A_type_parameter_name_was_expected_without_curly_braces),Ce(s),f(),a.push(s)}while(I(27));var c=Se(314,t);return c.tagName=n,c.constraint=i,c.typeParameters=Ee(a,o),Ce(c),c}(n,a);break;case"type":i=E(n,a);break;case"typedef":i=function(t,r,n){var i=x();g();var a,o=Se(315,t);if(o.tagName=r,o.fullName=k(),o.name=N(o.fullName),f(),o.comment=v(n),o.typeExpression=i,!i||S(i.type)){for(var s=void 0,c=void 0,u=void 0;s=pe((function(){return F(n)}));)if(c||(c=Se(302,t)),313===s.kind){if(u)break;u=s}else c.jsDocPropertyTags=e.append(c.jsDocPropertyTags,s);c&&(i&&173===i.type.kind&&(c.isArrayType=!0),o.typeExpression=u&&u.typeExpression&&!S(u.typeExpression.type)?u.typeExpression:Ce(c),a=o.typeExpression.end)}return Ce(o,a||void 0!==o.comment?C.getStartPos():(o.fullName||o.typeExpression||o.tagName).end)}(n,a,t);break;case"callback":i=function(t,r,n){var i,a=Se(308,t);a.tagName=r,a.fullName=k(),a.name=N(a.fullName),f(),a.comment=v(n);var o=Se(303,t);o.parameters=[];for(;i=pe((function(){return P(4,n)}));)o.parameters=e.append(o.parameters,i);var s=pe((function(){if(I(59)){var e=y(n);if(e&&311===e.kind)return e}}));s&&(o.type=s);return a.typeExpression=Ce(o),Ce(a)}(n,a,t);break;default:i=function(e,t){var r=Se(304,e);return r.tagName=t,Ce(r)}(n,a)}return i.comment||(s||(t+=i.end-i.pos),i.comment=v(t,s.slice(t))),i}function v(t,r){var n,i=[],a=0;function o(e){n||(n=t),i.push(e),t+=e.length}r&&(o(r),a=2);var s=ne();e:for(;;){switch(s){case 4:a>=1&&(a=0,i.push(C.getTokenText())),t=0;break;case 59:if(3===a){i.push(C.getTokenText());break}C.setTextPos(C.getTextPos()-1);case 1:break e;case 5:if(2===a||3===a)o(C.getTokenText());else{var c=C.getTokenText();void 0!==n&&t+c.length>n&&i.push(c.slice(n-t)),t+=c.length}break;case 18:a=2,de((function(){return 59===oe()&&e.tokenIsIdentifierOrKeyword(oe())&&"link"===C.getTokenText()}))&&(o(C.getTokenText()),oe(),o(C.getTokenText()),oe()),o(C.getTokenText());break;case 61:a=3===a?2:3,o(C.getTokenText());break;case 41:if(0===a){a=1,t+=1;break}default:3!==a&&(a=2),o(C.getTokenText())}s=oe()}return _(i),d(i),0===i.length?void 0:i.join("")}function b(e){e&&(o?o.push(e):(o=[e],s=e.pos),c=e.end)}function x(){return g(),18===ne()?r():void 0}function D(){var t=I(22);t&&f();var r,n=I(61),i=function(){var e=O();ge(22)&&me(23);for(;ge(24);){var t=O();ge(22)&&me(23),e=at(e,t)}return e}();return n&&(he(r=61)||ke(r,!1,e.Diagnostics._0_expected,e.tokenToString(r))),t&&(f(),ye(62)&&rr(),me(23)),{name:i,isBracketed:t}}function S(t){switch(t.kind){case 140:return!0;case 173:return S(t.elementType);default:return e.isTypeReferenceNode(t)&&e.isIdentifier(t.typeName)&&"Object"===t.typeName.escapedText}}function T(t,r,n,i){var a=x(),o=!a;g();var s=D(),c=s.name,u=s.isBracketed;f(),o&&(a=x());var l=Se(1===n?316:310,t),_=v(i+C.getStartPos()-t),d=4!==n&&function(t,r,n,i){if(t&&S(t.type)){for(var a=Se(292,C.getTokenPos()),o=void 0,s=void 0,c=C.getStartPos(),u=void 0;o=pe((function(){return P(n,i,r)}));)310!==o.kind&&316!==o.kind||(u=e.append(u,o));if(u)return(s=Se(302,c)).jsDocPropertyTags=u,173===t.type.kind&&(s.isArrayType=!0),a.type=Ce(s),Ce(a)}}(a,c,n,i);return d&&(a=d,o=!0),l.tagName=r,l.typeExpression=a,l.name=c,l.isNameFirst=o,l.isBracketed=u,l.comment=_,Ce(l)}function E(t,n){e.some(o,e.isJSDocTypeTag)&&Z(n.pos,C.getTokenPos(),e.Diagnostics._0_tag_already_specified,n.escapedText);var i=Se(313,t);return i.tagName=n,i.typeExpression=r(!0),Ce(i)}function k(t){var r=C.getTokenPos();if(e.tokenIsIdentifierOrKeyword(ne())){var n=O();if(ge(24)){var i=Se(248,r);return t&&(i.flags|=4),i.name=n,i.body=k(!0),Ce(i)}return t&&(n.isInJSDocNamespace=!0),n}}function N(t){if(t)for(var r=t;;){if(e.isIdentifier(r)||!r.body)return e.isIdentifier(r)?r:r.name;r=r.body}}function A(t,r){for(;!e.isIdentifier(t)||!e.isIdentifier(r);){if(e.isIdentifier(t)||e.isIdentifier(r)||t.right.escapedText!==r.right.escapedText)return!1;t=t.left,r=r.left}return t.escapedText===r.escapedText}function F(e){return P(1,e)}function P(t,r,n){for(var i=!0,a=!1;;)switch(oe()){case 59:if(i){var o=w(t,r);return!(o&&(310===o.kind||316===o.kind)&&4!==t&&n&&(e.isIdentifier(o.name)||!A(n,o.name.left)))&&o}a=!1;break;case 4:i=!0,a=!1;break;case 41:a&&(i=!1),a=!0;break;case 75:i=!1;break;case 1:return!1}}function w(t,r){e.Debug.assert(59===ne());var n=C.getStartPos();oe();var i,a=O();switch(f(),a.escapedText){case"type":return 1===t&&E(n,a);case"prop":case"property":i=1;break;case"arg":case"argument":case"param":i=6;break;default:return!1}return!!(t&i)&&T(n,a,t,r)}function I(e){return ne()===e&&(oe(),!0)}function O(t){if(!e.tokenIsIdentifierOrKeyword(ne()))return ke(75,!t,t||e.Diagnostics.Identifier_expected);h++;var r=C.getTokenPos(),n=C.getTextPos(),i=Se(75,r);return 75!==ne()&&(i.originalKeywordKind=ne()),i.escapedText=e.escapeLeadingUnderscores(Ne(C.getTokenValue())),Ce(i,n),oe(),i}}t.parseJSDocTypeExpressionForTests=function(e,t,n){P(e,99,void 0,1),o=L("file.js",99,1,!1),C.setText(e,t,n),u=C.scan();var i=r(),a=s;return w(),i?{jsDocTypeExpression:i,diagnostics:a}:void 0},t.parseJSDocTypeExpression=r,t.parseIsolatedJSDocComment=function(e,t,r){P(e,99,void 0,1),o={languageVariant:0,text:e};var n=U(4194304,(function(){return a(t,r)})),i=s;return w(),n?{jsDoc:n,diagnostics:i}:void 0},t.parseJSDocComment=function(e,t,r){var n,i=u,c=s.length,l=N,_=U(4194304,(function(){return a(t,r)}));return _&&(_.parent=e),131072&D&&(o.jsDocDiagnostics||(o.jsDocDiagnostics=[]),(n=o.jsDocDiagnostics).push.apply(n,s)),u=i,s.length=c,N=l,_},function(e){e[e.BeginningOfLine=0]="BeginningOfLine",e[e.SawAsterisk=1]="SawAsterisk",e[e.SavingComments=2]="SavingComments",e[e.SavingBackticks=3]="SavingBackticks"}(n||(n={})),function(e){e[e.Property=1]="Property",e[e.Parameter=2]="Parameter",e[e.CallbackParameter=4]="CallbackParameter"}(i||(i={}))}(E=t.JSDocParser||(t.JSDocParser={}))}(o||(o={})),function(t){function r(t,r,i,o,s,c){return void(r?l(t):u(t));function u(t){var r="";if(c&&n(t)&&(r=o.substring(t.pos,t.end)),t._children&&(t._children=void 0),t.pos+=i,t.end+=i,c&&n(t)&&e.Debug.assert(r===s.substring(t.pos,t.end)),_(t,u,l),e.hasJSDocNodes(t))for(var d=0,p=t.jsDoc;d<p.length;d++){u(p[d])}a(t,c)}function l(e){e._children=void 0,e.pos+=i,e.end+=i;for(var t=0,r=e;t<r.length;t++){u(r[t])}}}function n(e){switch(e.kind){case 10:case 8:case 75:return!0}return!1}function i(t,r,n,i,a){e.Debug.assert(t.end>=r,"Adjusting an element that was entirely before the change range"),e.Debug.assert(t.pos<=n,"Adjusting an element that was entirely after the change range"),e.Debug.assert(t.pos<=t.end),t.pos=Math.min(t.pos,i),t.end>=n?t.end+=a:t.end=Math.min(t.end,i),e.Debug.assert(t.pos<=t.end),t.parent&&(e.Debug.assert(t.pos>=t.parent.pos),e.Debug.assert(t.end<=t.parent.end))}function a(t,r){if(r){var n=t.pos,i=function(t){e.Debug.assert(t.pos>=n),n=t.end};if(e.hasJSDocNodes(t))for(var a=0,o=t.jsDoc;a<o.length;a++){i(o[a])}_(t,i),e.Debug.assert(n<=t.end)}}function s(t,r){var n,i=t;if(_(t,(function t(a){if(e.nodeIsMissing(a))return;if(!(a.pos<=r))return e.Debug.assert(a.pos>r),!0;if(a.pos>=i.pos&&(i=a),r<a.end)return _(a,t),!0;e.Debug.assert(a.end<=r),n=a})),n){var a=function(t){for(;;){var r=e.getLastChild(t);if(!r)return t;t=r}}(n);a.pos>i.pos&&(i=a)}return i}function c(t,r,n,i){var a=t.text;if(n&&(e.Debug.assert(a.length-n.span.length+n.newLength===r.length),i||e.Debug.shouldAssert(3))){var o=a.substr(0,n.span.start),s=r.substr(0,n.span.start);e.Debug.assert(o===s);var c=a.substring(e.textSpanEnd(n.span),a.length),u=r.substring(e.textSpanEnd(e.textChangeRangeNewSpan(n)),r.length);e.Debug.assert(c===u)}}var u;t.updateSourceFile=function(t,n,u,l){if(c(t,n,u,l=l||e.Debug.shouldAssert(2)),e.textChangeRangeIsUnchanged(u))return t;if(0===t.statements.length)return o.parseSourceFile(t.fileName,n,t.languageVersion,void 0,!0,t.scriptKind);var d=t;e.Debug.assert(!d.hasBeenIncrementallyParsed),d.hasBeenIncrementallyParsed=!0;var p=t.text,f=function(t){var r=t.statements,n=0;e.Debug.assert(n<r.length);var i=r[n],a=-1;return{currentNode:function(o){return o!==a&&(i&&i.end===o&&n<r.length-1&&(i=r[++n]),i&&i.pos===o||function(e){return r=void 0,n=-1,i=void 0,void _(t,a,o);function a(t){return e>=t.pos&&e<t.end&&(_(t,a,o),!0)}function o(t){if(e>=t.pos&&e<t.end)for(var s=0;s<t.length;s++){var c=t[s];if(c){if(c.pos===e)return r=t,n=s,i=c,!0;if(c.pos<e&&e<c.end)return _(c,a,o),!0}}return!1}}(o)),a=o,e.Debug.assert(!i||i.pos===o),i}}}(t),m=function(t,r){for(var n=r.span.start,i=0;n>0&&i<=1;i++){var a=s(t,n);e.Debug.assert(a.pos<=n);var o=a.pos;n=Math.max(0,o-1)}var c=e.createTextSpanFromBounds(n,e.textSpanEnd(r.span)),u=r.newLength+(r.span.start-n);return e.createTextChangeRange(c,u)}(t,u);c(t,n,m,l),e.Debug.assert(m.span.start<=u.span.start),e.Debug.assert(e.textSpanEnd(m.span)===e.textSpanEnd(u.span)),e.Debug.assert(e.textSpanEnd(e.textChangeRangeNewSpan(m))===e.textSpanEnd(e.textChangeRangeNewSpan(u)));var g=e.textChangeRangeNewSpan(m).length-m.span.length;return function(t,n,o,s,c,u,l,d){return void p(t);function p(t){if(e.Debug.assert(t.pos<=t.end),t.pos>o)r(t,!1,c,u,l,d);else{var m=t.end;if(m>=n){if(t.intersectsChange=!0,t._children=void 0,i(t,n,o,s,c),_(t,p,f),e.hasJSDocNodes(t))for(var g=0,y=t.jsDoc;g<y.length;g++){p(y[g])}a(t,d)}else e.Debug.assert(m<n)}}function f(t){if(e.Debug.assert(t.pos<=t.end),t.pos>o)r(t,!0,c,u,l,d);else{var a=t.end;if(a>=n){t.intersectsChange=!0,t._children=void 0,i(t,n,o,s,c);for(var _=0,f=t;_<f.length;_++){p(f[_])}}else e.Debug.assert(a<n)}}}(d,m.span.start,e.textSpanEnd(m.span),e.textSpanEnd(e.textChangeRangeNewSpan(m)),g,p,n,l),o.parseSourceFile(t.fileName,n,t.languageVersion,f,!0,t.scriptKind)},function(e){e[e.Value=-1]="Value"}(u||(u={}))}(s||(s={})),e.isDeclarationFileName=d,e.processCommentPragmas=p,e.processPragmasIntoFields=f;var m=e.createMap();function g(e){if(m.has(e))return m.get(e);var t=new RegExp("(\\s"+e+"\\s*=\\s*)('|\")(.+?)\\2","im");return m.set(e,t),t}var y=/^\/\/\/\s*<(\S+)\s.*?\/>/im,h=/^\/\/\/?\s*@(\S+)\s*(.*)\s*$/im;function v(t,r,n){var i=2===r.kind&&y.exec(n);if(i){var a=i[1].toLowerCase(),o=e.commentPragmas[a];if(!(o&&1&o.kind))return;if(o.args){for(var s={},c=0,u=o.args;c<u.length;c++){var l=u[c],_=g(l.name).exec(n);if(!_&&!l.optional)return;if(_)if(l.captureSpan){var d=r.pos+_.index+_[1].length+_[2].length;s[l.name]={value:_[3],pos:d,end:d+_[3].length}}else s[l.name]=_[3]}t.push({name:a,args:{arguments:s,range:r}})}else t.push({name:a,args:{arguments:{},range:r}})}else{var p=2===r.kind&&h.exec(n);if(p)return b(t,r,2,p);if(3===r.kind)for(var f=/\s*@(\S+)\s*(.*)\s*$/gim,m=void 0;m=f.exec(n);)b(t,r,4,m)}}function b(t,r,n,i){if(i){var a=i[1].toLowerCase(),o=e.commentPragmas[a];if(o&&o.kind&n){var s=function(t,r){if(!r)return{};if(!t.args)return{};for(var n=r.split(/\s+/),i={},a=0;a<t.args.length;a++){var o=t.args[a];if(!n[a]&&!o.optional)return"fail";if(o.captureSpan)return e.Debug.fail("Capture spans not yet implemented for non-xml pragmas");i[o.name]=n[a]}return i}(o,i[2]);"fail"!==s&&t.push({name:a,args:{arguments:s,range:r}})}}}function x(e,t){return e.kind===t.kind&&(75===e.kind?e.escapedText===t.escapedText:103===e.kind||e.name.escapedText===t.name.escapedText&&x(e.expression,t.expression))}e.tagNamesAreEquivalent=x}(s||(s={})),function(e){e.compileOnSaveCommandLineOption={name:"compileOnSave",type:"boolean"};var n,i,a=[["es5","lib.es5.d.ts"],["es6","lib.es2015.d.ts"],["es2015","lib.es2015.d.ts"],["es7","lib.es2016.d.ts"],["es2016","lib.es2016.d.ts"],["es2017","lib.es2017.d.ts"],["es2018","lib.es2018.d.ts"],["es2019","lib.es2019.d.ts"],["es2020","lib.es2020.d.ts"],["esnext","lib.esnext.d.ts"],["dom","lib.dom.d.ts"],["dom.iterable","lib.dom.iterable.d.ts"],["webworker","lib.webworker.d.ts"],["webworker.importscripts","lib.webworker.importscripts.d.ts"],["scripthost","lib.scripthost.d.ts"],["es2015.core","lib.es2015.core.d.ts"],["es2015.collection","lib.es2015.collection.d.ts"],["es2015.generator","lib.es2015.generator.d.ts"],["es2015.iterable","lib.es2015.iterable.d.ts"],["es2015.promise","lib.es2015.promise.d.ts"],["es2015.proxy","lib.es2015.proxy.d.ts"],["es2015.reflect","lib.es2015.reflect.d.ts"],["es2015.symbol","lib.es2015.symbol.d.ts"],["es2015.symbol.wellknown","lib.es2015.symbol.wellknown.d.ts"],["es2016.array.include","lib.es2016.array.include.d.ts"],["es2017.object","lib.es2017.object.d.ts"],["es2017.sharedmemory","lib.es2017.sharedmemory.d.ts"],["es2017.string","lib.es2017.string.d.ts"],["es2017.intl","lib.es2017.intl.d.ts"],["es2017.typedarrays","lib.es2017.typedarrays.d.ts"],["es2018.asyncgenerator","lib.es2018.asyncgenerator.d.ts"],["es2018.asynciterable","lib.es2018.asynciterable.d.ts"],["es2018.intl","lib.es2018.intl.d.ts"],["es2018.promise","lib.es2018.promise.d.ts"],["es2018.regexp","lib.es2018.regexp.d.ts"],["es2019.array","lib.es2019.array.d.ts"],["es2019.object","lib.es2019.object.d.ts"],["es2019.string","lib.es2019.string.d.ts"],["es2019.symbol","lib.es2019.symbol.d.ts"],["es2020.string","lib.es2020.string.d.ts"],["es2020.symbol.wellknown","lib.es2020.symbol.wellknown.d.ts"],["esnext.array","lib.es2019.array.d.ts"],["esnext.symbol","lib.es2019.symbol.d.ts"],["esnext.asynciterable","lib.es2018.asynciterable.d.ts"],["esnext.intl","lib.esnext.intl.d.ts"],["esnext.bigint","lib.esnext.bigint.d.ts"]];function o(e){return e&&void 0!==e.enableAutoDiscovery&&void 0===e.enable?{enable:e.enableAutoDiscovery,include:e.include||[],exclude:e.exclude||[]}:e}function s(){return n||(n=c(e.optionDeclarations))}function c(t){var r=e.createMap(),n=e.createMap();return e.forEach(t,(function(e){r.set(e.name.toLowerCase(),e),e.shortName&&n.set(e.shortName,e.name)})),{optionNameMap:r,shortOptionNames:n}}function u(t){return l(t,e.createCompilerDiagnostic)}function l(t,r){var n=e.arrayFrom(t.type.keys()).map((function(e){return"'"+e+"'"})).join(", ");return r(e.Diagnostics.Argument_for_0_option_must_be_Colon_1,"--"+t.name,n)}function _(e,t,r){return G(e,H(t||""),r)}function d(t,r,n){if(void 0===r&&(r=""),r=H(r),!e.startsWith(r,"-")){if(""===r)return[];var i=r.split(",");switch(t.element.type){case"number":return e.map(i,parseInt);case"string":return e.map(i,(function(e){return e||""}));default:return e.mapDefined(i,(function(e){return _(t.element,e,n)}))}}}function p(t,r,n,i){var a=r[0],o=r[1],s={},c=[],u=[];return l(n),{options:s,fileNames:c,errors:u};function l(r){for(var n=0;n<r.length;){var i=r[n];if(n++,64===i.charCodeAt(0))p(i.slice(1));else if(45===i.charCodeAt(0)){var l=g(t,i.slice(45===i.charCodeAt(1)?2:1),!0);if(l)if(l.isTSConfigOnly)u.push(e.createCompilerDiagnostic(e.Diagnostics.Option_0_can_only_be_specified_in_tsconfig_json_file,l.name));else switch(r[n]||"boolean"===l.type||u.push(e.createCompilerDiagnostic(o,l.name)),l.type){case"number":s[l.name]=parseInt(r[n]),n++;break;case"boolean":var f=r[n];s[l.name]="false"!==f,"false"!==f&&"true"!==f||n++;break;case"string":s[l.name]=r[n]||"",n++;break;case"list":var m=d(l,r[n],u);s[l.name]=m||[],m&&n++;break;default:s[l.name]=_(l,r[n],u),n++}else u.push(e.createCompilerDiagnostic(a,i))}else c.push(i)}}function p(t){var r=i?i(t):e.sys.readFile(t);if(r){for(var n=[],a=0;;){for(;a<r.length&&r.charCodeAt(a)<=32;)a++;if(a>=r.length)break;var o=a;if(34===r.charCodeAt(o)){for(a++;a<r.length&&34!==r.charCodeAt(a);)a++;a<r.length?(n.push(r.substring(o+1,a)),a++):u.push(e.createCompilerDiagnostic(e.Diagnostics.Unterminated_quoted_string_in_response_file_0,t))}else{for(;r.charCodeAt(a)>32;)a++;n.push(r.substring(o,a))}}l(n)}else u.push(e.createCompilerDiagnostic(e.Diagnostics.File_0_not_found,t))}}function m(e,t){return g(s,e,t)}function g(e,t,r){void 0===r&&(r=!1),t=t.toLowerCase();var n=e(),i=n.optionNameMap,a=n.shortOptionNames;if(r){var o=a.get(t);void 0!==o&&(t=o)}return i.get(t)}function y(t,r){var n=e.parseJsonText(t,r);return{config:x(n,n.parseDiagnostics),error:n.parseDiagnostics.length?n.parseDiagnostics[0]:void 0}}function h(t,r){var n=v(t,r);return e.isString(n)?e.parseJsonText(t,n):{parseDiagnostics:[n]}}function v(t,r){var n;try{n=r(t)}catch(r){return e.createCompilerDiagnostic(e.Diagnostics.Cannot_read_file_0_Colon_1,t,r.message)}return void 0===n?e.createCompilerDiagnostic(e.Diagnostics.The_specified_path_does_not_exist_Colon_0,t):n}function b(t){return e.arrayToMap(t,(function(e){return e.name}))}function x(e,t){return D(e,t,!0,void 0,void 0)}function D(t,r,n,i,a){return t.statements.length?c(t.statements[0].expression,i):n?{}:void 0;function o(e){return i&&i.elementOptions===e}function s(i,s,l,_){for(var d=n?{}:void 0,p=0,f=i.properties;p<f.length;p++){var m=f[p];if(279===m.kind){m.questionToken&&r.push(e.createDiagnosticForNodeInSourceFile(t,m.questionToken,e.Diagnostics._0_can_only_be_used_in_a_ts_file,"?")),u(m.name)||r.push(e.createDiagnosticForNodeInSourceFile(t,m.name,e.Diagnostics.String_literal_with_double_quotes_expected));var g=e.getTextOfPropertyName(m.name),y=g&&e.unescapeLeadingUnderscores(g),h=y&&s?s.get(y):void 0;y&&l&&!h&&r.push(e.createDiagnosticForNodeInSourceFile(t,m.name,l,y));var v=c(m.initializer,h);if(void 0!==y&&(n&&(d[y]=v),a&&(_||o(s)))){var b=T(h,v);_?b&&a.onSetValidOptionKeyValueInParent(_,h,v):o(s)&&(b?a.onSetValidOptionKeyValueInRoot(y,m.name,v,m.initializer):h||a.onSetUnknownOptionKeyValueInRoot(y,m.name,v,m.initializer))}}else r.push(e.createDiagnosticForNodeInSourceFile(t,m,e.Diagnostics.Property_assignment_expected))}return d}function c(i,a){switch(i.kind){case 105:return g(a&&"boolean"!==a.type),!0;case 90:return g(a&&"boolean"!==a.type),!1;case 99:return g(a&&"extends"===a.name),null;case 10:u(i)||r.push(e.createDiagnosticForNodeInSourceFile(t,i,e.Diagnostics.String_literal_with_double_quotes_expected)),g(a&&e.isString(a.type)&&"string"!==a.type);var o=i.text;if(a&&!e.isString(a.type)){var _=a;_.type.has(o.toLowerCase())||r.push(l(_,(function(r,n,a){return e.createDiagnosticForNodeInSourceFile(t,i,r,n,a)})))}return o;case 8:return g(a&&"number"!==a.type),Number(i.text);case 206:if(40!==i.operator||8!==i.operand.kind)break;return g(a&&"number"!==a.type),-Number(i.operand.text);case 192:g(a&&"object"!==a.type);var d=i;if(a){var p=a;return s(d,p.elementOptions,p.extraKeyDiagnosticMessage,p.name)}return s(d,void 0,void 0,void 0);case 191:return g(a&&"list"!==a.type),f=i.elements,m=a&&a.element,n?e.filter(f.map((function(e){return c(e,m)})),(function(e){return void 0!==e})):f.forEach((function(e){return c(e,m)}))}var f,m;return void(a?g(!0):r.push(e.createDiagnosticForNodeInSourceFile(t,i,e.Diagnostics.Property_value_can_only_be_string_literal_numeric_literal_true_false_null_object_literal_or_array_literal)));function g(n){n&&r.push(e.createDiagnosticForNodeInSourceFile(t,i,e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1,a.name,S(a)))}}function u(r){return e.isStringLiteral(r)&&e.isStringDoubleQuoted(r,t)}}function S(t){return"list"===t.type?"Array":e.isString(t.type)?t.type:"string"}function T(t,r){if(t){if(P(r))return!0;if("list"===t.type)return e.isArray(r);var n=e.isString(t.type)?t.type:"string";return f(r)===n}return!1}function E(t){if(e.length(t)){if(1!==e.length(t))return t;if("**/*"!==t[0])return t}}function C(t,r){return e.forEachEntry(r,(function(e,r){if(e===t)return r}))}function k(t,r){var n=e.createMap(),i=s().optionNameMap,a=r&&e.createGetCanonicalFileName(r.useCaseSensitiveFileNames),o=function(o){if(e.hasProperty(t,o)){if(i.has(o)&&i.get(o).category===e.Diagnostics.Command_line_Options)return"continue";var s=t[o],c=i.get(o.toLowerCase());if(c){var u=function e(t){return"string"===t.type||"number"===t.type||"boolean"===t.type||"object"===t.type?void 0:"list"===t.type?e(t.element):t.type}(c);u?"list"===c.type?n.set(o,s.map((function(e){return C(e,u)}))):n.set(o,C(s,u)):r&&c.isFilePath?n.set(o,e.getRelativePathFromFile(r.configFilePath,e.getNormalizedAbsolutePath(s,e.getDirectoryPath(r.configFilePath)),a)):n.set(o,s)}}};for(var c in t)o(c);return n}function N(e,t,r){if(e)if("list"===e.type){var n=t;if(e.element.isFilePath&&n.length)return n.map(r)}else if(e.isFilePath)return r(t);return t}function A(e,t,r,n,i,a,o,s){return I(void 0,e,t,r,n,i,a,o,s)}function F(e,t){t&&Object.defineProperty(e,"configFile",{enumerable:!1,writable:!1,value:t})}function P(e){return null==e}function w(t,r){return e.getDirectoryPath(e.getNormalizedAbsolutePath(t,r))}function I(t,r,n,i,a,o,s,c,u){void 0===a&&(a={}),void 0===s&&(s=[]),void 0===c&&(c=[]),e.Debug.assert(void 0===t&&void 0!==r||void 0!==t&&void 0===r);var l,_=[],d=B(t,r,n,i,o,s,_,u),p=d.raw,f=e.extend(a,d.options||{});f.configFilePath=o&&e.normalizeSlashes(o),F(f,r);var m=function(){var t,a,u;if(e.hasProperty(p,"files")&&!P(p.files))if(e.isArray(p.files)){t=p.files;var d=!(e.hasProperty(p,"references")&&!P(p.references))||0===p.references.length,m=e.hasProperty(p,"extends");if(0===t.length&&d&&!m)if(r){var g=o||"tsconfig.json",y=e.Diagnostics.The_files_list_in_config_file_0_is_empty,h=e.firstDefined(e.getTsConfigPropArray(r,"files"),(function(e){return e.initializer})),b=h?e.createDiagnosticForNodeInSourceFile(r,h,y,g):e.createCompilerDiagnostic(y,g);_.push(b)}else v(e.Diagnostics.The_files_list_in_config_file_0_is_empty,o||"tsconfig.json")}else v(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1,"files","Array");e.hasProperty(p,"include")&&!P(p.include)&&(e.isArray(p.include)?a=p.include:v(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1,"include","Array"));if(e.hasProperty(p,"exclude")&&!P(p.exclude))e.isArray(p.exclude)?u=p.exclude:v(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1,"exclude","Array");else if(p.compilerOptions){var x=p.compilerOptions.outDir,D=p.compilerOptions.declarationDir;(x||D)&&(u=[x,D].filter((function(e){return!!e})))}void 0===t&&void 0===a&&(a=["**/*"]);var S=function(t,r,n,i,a,o,s,c,u){var l,_;i=e.normalizePath(i),r&&(l=ee(r,s,!1,u,"include"));n&&(_=ee(n,s,!0,u,"exclude"));var d=function(t,r,n,i){var a=e.getRegularExpressionForWildcard(r,n,"exclude"),o=a&&new RegExp(a,i?"":"i"),s={};if(void 0!==t){for(var c=[],u=0,l=t;u<l.length;u++){var _=l[u],d=e.normalizePath(e.combinePaths(n,_));if(!o||!o.test(d)){var p=te(d,i);if(p){var f=p.key,m=p.flags,g=s[f];(void 0===g||g<m)&&(s[f]=m,1===m&&c.push(f))}}}for(var f in s)if(e.hasProperty(s,f))for(var y=0,h=c;y<h.length;y++){var v=h[y];f!==v&&e.containsPath(v,f,n,!i)&&delete s[f]}}return s}(l,_,i,o.useCaseSensitiveFileNames);return Z({filesSpecs:t,includeSpecs:r,excludeSpecs:n,validatedIncludeSpecs:l,validatedExcludeSpecs:_,wildcardDirectories:d},i,a,o,c)}(t,a,u,o?w(o,i):i,f,n,_,c,r);M(S,L(p),s)&&_.push(O(S.spec,o));if(e.hasProperty(p,"references")&&!P(p.references))if(e.isArray(p.references))for(var T=0,E=p.references;T<E.length;T++){var C=E[T];"string"!=typeof C.path?v(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1,"reference.path","string"):(l||(l=[])).push({path:e.getNormalizedAbsolutePath(C.path,i),originalPath:C.path,prepend:C.prepend,circular:C.circular})}else v(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1,"references","Array");return S}(),g=m.fileNames,y=m.wildcardDirectories,h=m.spec;return{options:f,fileNames:g,projectReferences:l,typeAcquisition:d.typeAcquisition||z(),raw:p,errors:_,wildcardDirectories:y,compileOnSave:!!p.compileOnSave,configFileSpecs:h};function v(t,n,i){r||_.push(e.createCompilerDiagnostic(t,n,i))}}function O(t,r){var n=t.includeSpecs,i=t.excludeSpecs;return e.createCompilerDiagnostic(e.Diagnostics.No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2,r||"tsconfig.json",JSON.stringify(n||[]),JSON.stringify(i||[]))}function M(e,t,r){return 0===e.fileNames.length&&t&&(!r||0===r.length)}function L(t){return!e.hasProperty(t,"files")&&!e.hasProperty(t,"references")}function R(e){return!!e.options}function B(r,n,a,o,s,c,u,l){o=e.normalizeSlashes(o);var _=e.getNormalizedAbsolutePath(s||"",o);if(c.indexOf(_)>=0)return u.push(e.createCompilerDiagnostic(e.Diagnostics.Circularity_detected_while_resolving_configuration_Colon_0,t(c,[_]).join(" -> "))),{raw:r||x(n,u)};var d=r?function(t,r,n,i,a){e.hasProperty(t,"excludes")&&a.push(e.createCompilerDiagnostic(e.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude));var o,s=J(t.compilerOptions,n,a,i),c=U(t.typeAcquisition||t.typingOptions,n,a,i);if(t.compileOnSave=function(t,r,n){if(!e.hasProperty(t,e.compileOnSaveCommandLineOption.name))return!1;var i=q(e.compileOnSaveCommandLineOption,t.compileOnSave,r,n);return"boolean"==typeof i&&i}(t,n,a),t.extends)if(e.isString(t.extends)){var u=i?w(i,n):n;o=j(t.extends,r,u,a,e.createCompilerDiagnostic)}else a.push(e.createCompilerDiagnostic(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1,"extends","string"));return{raw:t,options:s,typeAcquisition:c,extendedConfigPath:o}}(r,a,o,s,u):function(t,r,n,a,o){var s,c,u,l=K(a),_={onSetValidOptionKeyValueInParent:function(t,r,i){e.Debug.assert("compilerOptions"===t||"typeAcquisition"===t||"typingOptions"===t),("compilerOptions"===t?l:"typeAcquisition"===t?s||(s=z(a)):c||(c=z(a)))[r.name]=function t(r,n,i){if(P(i))return;if("list"===r.type){var a=r;return a.element.isFilePath||!e.isString(a.element.type)?e.filter(e.map(i,(function(e){return t(a.element,n,e)})),(function(e){return!!e})):i}if(!e.isString(r.type))return r.type.get(e.isString(i)?i.toLowerCase():i);return W(r,n,i)}(r,n,i)},onSetValidOptionKeyValueInRoot:function(i,s,c,l){switch(i){case"extends":var _=a?w(a,n):n;return void(u=j(c,r,_,o,(function(r,n){return e.createDiagnosticForNodeInSourceFile(t,l,r,n)})))}},onSetUnknownOptionKeyValueInRoot:function(r,n,i,a){"excludes"===r&&o.push(e.createDiagnosticForNodeInSourceFile(t,n,e.Diagnostics.Unknown_option_excludes_Did_you_mean_exclude))}},d=D(t,o,!0,(void 0===i&&(i={name:void 0,type:"object",elementOptions:b([{name:"compilerOptions",type:"object",elementOptions:b(e.optionDeclarations),extraKeyDiagnosticMessage:e.Diagnostics.Unknown_compiler_option_0},{name:"typingOptions",type:"object",elementOptions:b(e.typeAcquisitionDeclarations),extraKeyDiagnosticMessage:e.Diagnostics.Unknown_type_acquisition_option_0},{name:"typeAcquisition",type:"object",elementOptions:b(e.typeAcquisitionDeclarations),extraKeyDiagnosticMessage:e.Diagnostics.Unknown_type_acquisition_option_0},{name:"extends",type:"string"},{name:"references",type:"list",element:{name:"references",type:"object"}},{name:"files",type:"list",element:{name:"files",type:"string"}},{name:"include",type:"list",element:{name:"include",type:"string"}},{name:"exclude",type:"list",element:{name:"exclude",type:"string"}},e.compileOnSaveCommandLineOption])}),i),_);s||(s=c?void 0!==c.enableAutoDiscovery?{enable:c.enableAutoDiscovery,include:c.include,exclude:c.exclude}:c:z(a));return{raw:d,options:l,typeAcquisition:s,extendedConfigPath:u}}(n,a,o,s,u);if(d.extendedConfigPath){c=c.concat([_]);var p=function(t,r,n,i,a,o,s){var c,u,l,_,d=n.useCaseSensitiveFileNames?r:e.toLowerCase(r);if(s&&(u=s.get(d)))l=u.extendedResult,_=u.extendedConfig;else{if(!(l=h(r,(function(e){return n.readFile(e)}))).parseDiagnostics.length){var p=e.getDirectoryPath(r);if(R(_=B(void 0,l,n,p,e.getBaseFileName(r),a,o,s))){var f=e.convertToRelativePath(p,i,e.identity),m=function(t){return e.isRootedDiskPath(t)?t:e.combinePaths(f,t)},g=function(t){y[t]&&(y[t]=e.map(y[t],m))},y=_.raw;g("include"),g("exclude"),g("files")}}s&&s.set(d,{extendedResult:l,extendedConfig:_})}t&&(t.extendedSourceFiles=[l.fileName],l.extendedSourceFiles&&(c=t.extendedSourceFiles).push.apply(c,l.extendedSourceFiles));if(l.parseDiagnostics.length)return void o.push.apply(o,l.parseDiagnostics);return _}(n,d.extendedConfigPath,a,o,c,u,l);if(p&&R(p)){var f=p.raw,m=d.raw,g=function(e){var t=m[e]||f[e];t&&(m[e]=t)};g("include"),g("exclude"),g("files"),void 0===m.compileOnSave&&(m.compileOnSave=f.compileOnSave),d.options=e.assign({},p.options,d.options)}}return d}function j(t,r,n,i,a){if(t=e.normalizeSlashes(t),e.isRootedDiskPath(t)||e.startsWith(t,"./")||e.startsWith(t,"../")){var o=e.getNormalizedAbsolutePath(t,n);return r.fileExists(o)||e.endsWith(o,".json")||(o+=".json",r.fileExists(o))?o:void i.push(a(e.Diagnostics.File_0_not_found,t))}var s=e.nodeModuleNameResolver(t,e.combinePaths(n,"tsconfig.json"),{moduleResolution:e.ModuleResolutionKind.NodeJs},r,void 0,void 0,!0);if(s.resolvedModule)return s.resolvedModule.resolvedFileName;i.push(a(e.Diagnostics.File_0_not_found,t))}function K(t){return t&&"jsconfig.json"===e.getBaseFileName(t)?{allowJs:!0,maxNodeModuleJsDepth:2,allowSyntheticDefaultImports:!0,skipLibCheck:!0,noEmit:!0}:{}}function J(t,r,n,i){var a=K(i);return V(e.optionDeclarations,t,r,a,e.Diagnostics.Unknown_compiler_option_0,n),i&&(a.configFilePath=e.normalizeSlashes(i)),a}function z(t){return{enable:!!t&&"jsconfig.json"===e.getBaseFileName(t),include:[],exclude:[]}}function U(t,r,n,i){var a=z(i),s=o(t);return V(e.typeAcquisitionDeclarations,s,r,a,e.Diagnostics.Unknown_type_acquisition_option_0,n),a}function V(t,r,n,i,a,o){if(r){var s=b(t);for(var c in r){var u=s.get(c);u?i[u.name]=q(u,r[c],n,o):o.push(e.createCompilerDiagnostic(a,c))}}}function q(t,r,n,i){if(T(t,r)){var a=t.type;return"list"===a&&e.isArray(r)?function(t,r,n,i){return e.filter(e.map(r,(function(e){return q(t.element,e,n,i)})),(function(e){return!!e}))}(t,r,n,i):e.isString(a)?W(t,n,r):G(t,r,i)}i.push(e.createCompilerDiagnostic(e.Diagnostics.Compiler_option_0_requires_a_value_of_type_1,t.name,S(t)))}function W(t,r,n){return t.isFilePath&&""===(n=e.getNormalizedAbsolutePath(n,r))&&(n="."),n}function G(e,t,r){if(!P(t)){var n=t.toLowerCase(),i=e.type.get(n);if(void 0!==i)return i;r.push(u(e))}}function H(e){return"function"==typeof e.trim?e.trim():e.replace(/^[\s]+|[\s]+$/g,"")}e.libs=a.map((function(e){return e[0]})),e.libMap=e.createMapFromEntries(a),e.commonOptionsWithBuild=[{name:"help",shortName:"h",type:"boolean",showInSimplifiedHelpView:!0,category:e.Diagnostics.Command_line_Options,description:e.Diagnostics.Print_this_message},{name:"help",shortName:"?",type:"boolean"},{name:"watch",shortName:"w",type:"boolean",showInSimplifiedHelpView:!0,category:e.Diagnostics.Command_line_Options,description:e.Diagnostics.Watch_input_files},{name:"preserveWatchOutput",type:"boolean",showInSimplifiedHelpView:!1,category:e.Diagnostics.Command_line_Options,description:e.Diagnostics.Whether_to_keep_outdated_console_output_in_watch_mode_instead_of_clearing_the_screen},{name:"listFiles",type:"boolean",category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Print_names_of_files_part_of_the_compilation},{name:"listEmittedFiles",type:"boolean",category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Print_names_of_generated_files_part_of_the_compilation},{name:"pretty",type:"boolean",showInSimplifiedHelpView:!0,category:e.Diagnostics.Command_line_Options,description:e.Diagnostics.Stylize_errors_and_messages_using_color_and_context_experimental},{name:"traceResolution",type:"boolean",category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Enable_tracing_of_the_name_resolution_process},{name:"diagnostics",type:"boolean",category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Show_diagnostic_information},{name:"extendedDiagnostics",type:"boolean",category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Show_verbose_diagnostic_information},{name:"generateCpuProfile",type:"string",isFilePath:!0,paramType:e.Diagnostics.FILE_OR_DIRECTORY,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Generates_a_CPU_profile},{name:"incremental",shortName:"i",type:"boolean",category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Enable_incremental_compilation,transpileOptionValue:void 0},{name:"locale",type:"string",category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.The_locale_used_when_displaying_messages_to_the_user_e_g_en_us}],e.optionDeclarations=t(e.commonOptionsWithBuild,[{name:"all",type:"boolean",showInSimplifiedHelpView:!0,category:e.Diagnostics.Command_line_Options,description:e.Diagnostics.Show_all_compiler_options},{name:"version",shortName:"v",type:"boolean",showInSimplifiedHelpView:!0,category:e.Diagnostics.Command_line_Options,description:e.Diagnostics.Print_the_compiler_s_version},{name:"init",type:"boolean",showInSimplifiedHelpView:!0,category:e.Diagnostics.Command_line_Options,description:e.Diagnostics.Initializes_a_TypeScript_project_and_creates_a_tsconfig_json_file},{name:"project",shortName:"p",type:"string",isFilePath:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Command_line_Options,paramType:e.Diagnostics.FILE_OR_DIRECTORY,description:e.Diagnostics.Compile_the_project_given_the_path_to_its_configuration_file_or_to_a_folder_with_a_tsconfig_json},{name:"build",type:"boolean",shortName:"b",showInSimplifiedHelpView:!0,category:e.Diagnostics.Command_line_Options,description:e.Diagnostics.Build_one_or_more_projects_and_their_dependencies_if_out_of_date},{name:"showConfig",type:"boolean",category:e.Diagnostics.Command_line_Options,isCommandLineOnly:!0,description:e.Diagnostics.Print_the_final_configuration_instead_of_building},{name:"listFilesOnly",type:"boolean",category:e.Diagnostics.Command_line_Options,affectsSemanticDiagnostics:!0,affectsEmit:!0,isCommandLineOnly:!0,description:e.Diagnostics.Print_names_of_files_that_are_part_of_the_compilation_and_then_stop_processing},{name:"target",shortName:"t",type:e.createMapFromTemplate({es3:0,es5:1,es6:2,es2015:2,es2016:3,es2017:4,es2018:5,es2019:6,es2020:7,esnext:99}),affectsSourceFile:!0,affectsModuleResolution:!0,affectsEmit:!0,paramType:e.Diagnostics.VERSION,showInSimplifiedHelpView:!0,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Specify_ECMAScript_target_version_Colon_ES3_default_ES5_ES2015_ES2016_ES2017_ES2018_ES2019_or_ESNEXT},{name:"module",shortName:"m",type:e.createMapFromTemplate({none:e.ModuleKind.None,commonjs:e.ModuleKind.CommonJS,amd:e.ModuleKind.AMD,system:e.ModuleKind.System,umd:e.ModuleKind.UMD,es6:e.ModuleKind.ES2015,es2015:e.ModuleKind.ES2015,esnext:e.ModuleKind.ESNext}),affectsModuleResolution:!0,affectsEmit:!0,paramType:e.Diagnostics.KIND,showInSimplifiedHelpView:!0,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Specify_module_code_generation_Colon_none_commonjs_amd_system_umd_es2015_or_ESNext},{name:"lib",type:"list",element:{name:"lib",type:e.libMap},affectsModuleResolution:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Specify_library_files_to_be_included_in_the_compilation,transpileOptionValue:void 0},{name:"allowJs",type:"boolean",affectsModuleResolution:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Allow_javascript_files_to_be_compiled},{name:"checkJs",type:"boolean",category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Report_errors_in_js_files},{name:"jsx",type:e.createMapFromTemplate({preserve:1,"react-native":3,react:2}),affectsSourceFile:!0,paramType:e.Diagnostics.KIND,showInSimplifiedHelpView:!0,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Specify_JSX_code_generation_Colon_preserve_react_native_or_react},{name:"declaration",shortName:"d",type:"boolean",affectsEmit:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Generates_corresponding_d_ts_file,transpileOptionValue:void 0},{name:"declarationMap",type:"boolean",affectsEmit:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Generates_a_sourcemap_for_each_corresponding_d_ts_file,transpileOptionValue:void 0},{name:"emitDeclarationOnly",type:"boolean",affectsEmit:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Only_emit_d_ts_declaration_files,transpileOptionValue:void 0},{name:"sourceMap",type:"boolean",affectsEmit:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Generates_corresponding_map_file},{name:"outFile",type:"string",affectsEmit:!0,isFilePath:!0,paramType:e.Diagnostics.FILE,showInSimplifiedHelpView:!0,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Concatenate_and_emit_output_to_single_file,transpileOptionValue:void 0},{name:"outDir",type:"string",affectsEmit:!0,isFilePath:!0,paramType:e.Diagnostics.DIRECTORY,showInSimplifiedHelpView:!0,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Redirect_output_structure_to_the_directory},{name:"rootDir",type:"string",affectsEmit:!0,isFilePath:!0,paramType:e.Diagnostics.LOCATION,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Specify_the_root_directory_of_input_files_Use_to_control_the_output_directory_structure_with_outDir},{name:"composite",type:"boolean",affectsEmit:!0,isTSConfigOnly:!0,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Enable_project_compilation,transpileOptionValue:void 0},{name:"tsBuildInfoFile",type:"string",affectsEmit:!0,isFilePath:!0,paramType:e.Diagnostics.FILE,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Specify_file_to_store_incremental_compilation_information,transpileOptionValue:void 0},{name:"removeComments",type:"boolean",affectsEmit:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Do_not_emit_comments_to_output},{name:"noEmit",type:"boolean",affectsEmit:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Do_not_emit_outputs,transpileOptionValue:void 0},{name:"importHelpers",type:"boolean",affectsEmit:!0,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Import_emit_helpers_from_tslib},{name:"downlevelIteration",type:"boolean",affectsEmit:!0,category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Provide_full_support_for_iterables_in_for_of_spread_and_destructuring_when_targeting_ES5_or_ES3},{name:"isolatedModules",type:"boolean",category:e.Diagnostics.Basic_Options,description:e.Diagnostics.Transpile_each_file_as_a_separate_module_similar_to_ts_transpileModule,transpileOptionValue:!0},{name:"strict",type:"boolean",showInSimplifiedHelpView:!0,category:e.Diagnostics.Strict_Type_Checking_Options,description:e.Diagnostics.Enable_all_strict_type_checking_options},{name:"noImplicitAny",type:"boolean",affectsSemanticDiagnostics:!0,strictFlag:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Strict_Type_Checking_Options,description:e.Diagnostics.Raise_error_on_expressions_and_declarations_with_an_implied_any_type},{name:"strictNullChecks",type:"boolean",affectsSemanticDiagnostics:!0,strictFlag:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Strict_Type_Checking_Options,description:e.Diagnostics.Enable_strict_null_checks},{name:"strictFunctionTypes",type:"boolean",affectsSemanticDiagnostics:!0,strictFlag:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Strict_Type_Checking_Options,description:e.Diagnostics.Enable_strict_checking_of_function_types},{name:"strictBindCallApply",type:"boolean",strictFlag:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Strict_Type_Checking_Options,description:e.Diagnostics.Enable_strict_bind_call_and_apply_methods_on_functions},{name:"strictPropertyInitialization",type:"boolean",affectsSemanticDiagnostics:!0,strictFlag:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Strict_Type_Checking_Options,description:e.Diagnostics.Enable_strict_checking_of_property_initialization_in_classes},{name:"noImplicitThis",type:"boolean",affectsSemanticDiagnostics:!0,strictFlag:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Strict_Type_Checking_Options,description:e.Diagnostics.Raise_error_on_this_expressions_with_an_implied_any_type},{name:"alwaysStrict",type:"boolean",affectsSourceFile:!0,strictFlag:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Strict_Type_Checking_Options,description:e.Diagnostics.Parse_in_strict_mode_and_emit_use_strict_for_each_source_file},{name:"noUnusedLocals",type:"boolean",affectsSemanticDiagnostics:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Additional_Checks,description:e.Diagnostics.Report_errors_on_unused_locals},{name:"noUnusedParameters",type:"boolean",affectsSemanticDiagnostics:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Additional_Checks,description:e.Diagnostics.Report_errors_on_unused_parameters},{name:"noImplicitReturns",type:"boolean",affectsSemanticDiagnostics:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Additional_Checks,description:e.Diagnostics.Report_error_when_not_all_code_paths_in_function_return_a_value},{name:"noFallthroughCasesInSwitch",type:"boolean",affectsBindDiagnostics:!0,affectsSemanticDiagnostics:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Additional_Checks,description:e.Diagnostics.Report_errors_for_fallthrough_cases_in_switch_statement},{name:"moduleResolution",type:e.createMapFromTemplate({node:e.ModuleResolutionKind.NodeJs,classic:e.ModuleResolutionKind.Classic}),affectsModuleResolution:!0,paramType:e.Diagnostics.STRATEGY,category:e.Diagnostics.Module_Resolution_Options,description:e.Diagnostics.Specify_module_resolution_strategy_Colon_node_Node_js_or_classic_TypeScript_pre_1_6},{name:"baseUrl",type:"string",affectsModuleResolution:!0,isFilePath:!0,category:e.Diagnostics.Module_Resolution_Options,description:e.Diagnostics.Base_directory_to_resolve_non_absolute_module_names},{name:"paths",type:"object",affectsModuleResolution:!0,isTSConfigOnly:!0,category:e.Diagnostics.Module_Resolution_Options,description:e.Diagnostics.A_series_of_entries_which_re_map_imports_to_lookup_locations_relative_to_the_baseUrl,transpileOptionValue:void 0},{name:"rootDirs",type:"list",isTSConfigOnly:!0,element:{name:"rootDirs",type:"string",isFilePath:!0},affectsModuleResolution:!0,category:e.Diagnostics.Module_Resolution_Options,description:e.Diagnostics.List_of_root_folders_whose_combined_content_represents_the_structure_of_the_project_at_runtime,transpileOptionValue:void 0},{name:"typeRoots",type:"list",element:{name:"typeRoots",type:"string",isFilePath:!0},affectsModuleResolution:!0,category:e.Diagnostics.Module_Resolution_Options,description:e.Diagnostics.List_of_folders_to_include_type_definitions_from},{name:"types",type:"list",element:{name:"types",type:"string"},affectsModuleResolution:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Module_Resolution_Options,description:e.Diagnostics.Type_declaration_files_to_be_included_in_compilation,transpileOptionValue:void 0},{name:"allowSyntheticDefaultImports",type:"boolean",affectsSemanticDiagnostics:!0,category:e.Diagnostics.Module_Resolution_Options,description:e.Diagnostics.Allow_default_imports_from_modules_with_no_default_export_This_does_not_affect_code_emit_just_typechecking},{name:"esModuleInterop",type:"boolean",affectsSemanticDiagnostics:!0,affectsEmit:!0,showInSimplifiedHelpView:!0,category:e.Diagnostics.Module_Resolution_Options,description:e.Diagnostics.Enables_emit_interoperability_between_CommonJS_and_ES_Modules_via_creation_of_namespace_objects_for_all_imports_Implies_allowSyntheticDefaultImports},{name:"preserveSymlinks",type:"boolean",category:e.Diagnostics.Module_Resolution_Options,description:e.Diagnostics.Do_not_resolve_the_real_path_of_symlinks},{name:"allowUmdGlobalAccess",type:"boolean",affectsSemanticDiagnostics:!0,category:e.Diagnostics.Module_Resolution_Options,description:e.Diagnostics.Allow_accessing_UMD_globals_from_modules},{name:"sourceRoot",type:"string",affectsEmit:!0,paramType:e.Diagnostics.LOCATION,category:e.Diagnostics.Source_Map_Options,description:e.Diagnostics.Specify_the_location_where_debugger_should_locate_TypeScript_files_instead_of_source_locations},{name:"mapRoot",type:"string",affectsEmit:!0,paramType:e.Diagnostics.LOCATION,category:e.Diagnostics.Source_Map_Options,description:e.Diagnostics.Specify_the_location_where_debugger_should_locate_map_files_instead_of_generated_locations},{name:"inlineSourceMap",type:"boolean",affectsEmit:!0,category:e.Diagnostics.Source_Map_Options,description:e.Diagnostics.Emit_a_single_file_with_source_maps_instead_of_having_a_separate_file},{name:"inlineSources",type:"boolean",affectsEmit:!0,category:e.Diagnostics.Source_Map_Options,description:e.Diagnostics.Emit_the_source_alongside_the_sourcemaps_within_a_single_file_requires_inlineSourceMap_or_sourceMap_to_be_set},{name:"experimentalDecorators",type:"boolean",category:e.Diagnostics.Experimental_Options,description:e.Diagnostics.Enables_experimental_support_for_ES7_decorators},{name:"emitDecoratorMetadata",type:"boolean",category:e.Diagnostics.Experimental_Options,description:e.Diagnostics.Enables_experimental_support_for_emitting_type_metadata_for_decorators},{name:"jsxFactory",type:"string",category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Specify_the_JSX_factory_function_to_use_when_targeting_react_JSX_emit_e_g_React_createElement_or_h},{name:"resolveJsonModule",type:"boolean",category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Include_modules_imported_with_json_extension},{name:"out",type:"string",affectsEmit:!0,isFilePath:!1,category:e.Diagnostics.Advanced_Options,paramType:e.Diagnostics.FILE,description:e.Diagnostics.Deprecated_Use_outFile_instead_Concatenate_and_emit_output_to_single_file,transpileOptionValue:void 0},{name:"reactNamespace",type:"string",affectsEmit:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Deprecated_Use_jsxFactory_instead_Specify_the_object_invoked_for_createElement_when_targeting_react_JSX_emit},{name:"skipDefaultLibCheck",type:"boolean",category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Deprecated_Use_skipLibCheck_instead_Skip_type_checking_of_default_library_declaration_files},{name:"charset",type:"string",category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.The_character_set_of_the_input_files},{name:"emitBOM",type:"boolean",affectsEmit:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Emit_a_UTF_8_Byte_Order_Mark_BOM_in_the_beginning_of_output_files},{name:"newLine",type:e.createMapFromTemplate({crlf:0,lf:1}),affectsEmit:!0,paramType:e.Diagnostics.NEWLINE,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Specify_the_end_of_line_sequence_to_be_used_when_emitting_files_Colon_CRLF_dos_or_LF_unix},{name:"noErrorTruncation",type:"boolean",category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Do_not_truncate_error_messages},{name:"noLib",type:"boolean",affectsModuleResolution:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Do_not_include_the_default_library_file_lib_d_ts,transpileOptionValue:!0},{name:"noResolve",type:"boolean",affectsModuleResolution:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Do_not_add_triple_slash_references_or_imported_modules_to_the_list_of_compiled_files,transpileOptionValue:!0},{name:"stripInternal",type:"boolean",affectsEmit:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Do_not_emit_declarations_for_code_that_has_an_internal_annotation},{name:"disableSizeLimit",type:"boolean",affectsSourceFile:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Disable_size_limitations_on_JavaScript_projects},{name:"disableSourceOfProjectReferenceRedirect",type:"boolean",category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Disable_use_of_source_files_instead_of_declaration_files_from_referenced_projects},{name:"noImplicitUseStrict",type:"boolean",affectsSemanticDiagnostics:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Do_not_emit_use_strict_directives_in_module_output},{name:"noEmitHelpers",type:"boolean",affectsEmit:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Do_not_generate_custom_helper_functions_like_extends_in_compiled_output},{name:"noEmitOnError",type:"boolean",affectsEmit:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Do_not_emit_outputs_if_any_errors_were_reported,transpileOptionValue:void 0},{name:"preserveConstEnums",type:"boolean",affectsEmit:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Do_not_erase_const_enum_declarations_in_generated_code},{name:"declarationDir",type:"string",affectsEmit:!0,isFilePath:!0,paramType:e.Diagnostics.DIRECTORY,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Output_directory_for_generated_declaration_files,transpileOptionValue:void 0},{name:"skipLibCheck",type:"boolean",category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Skip_type_checking_of_declaration_files},{name:"allowUnusedLabels",type:"boolean",affectsBindDiagnostics:!0,affectsSemanticDiagnostics:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Do_not_report_errors_on_unused_labels},{name:"allowUnreachableCode",type:"boolean",affectsBindDiagnostics:!0,affectsSemanticDiagnostics:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Do_not_report_errors_on_unreachable_code},{name:"suppressExcessPropertyErrors",type:"boolean",affectsSemanticDiagnostics:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Suppress_excess_property_checks_for_object_literals},{name:"suppressImplicitAnyIndexErrors",type:"boolean",affectsSemanticDiagnostics:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Suppress_noImplicitAny_errors_for_indexing_objects_lacking_index_signatures},{name:"forceConsistentCasingInFileNames",type:"boolean",category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Disallow_inconsistently_cased_references_to_the_same_file},{name:"maxNodeModuleJsDepth",type:"number",affectsModuleResolution:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.The_maximum_dependency_depth_to_search_under_node_modules_and_load_JavaScript_files},{name:"noStrictGenericChecks",type:"boolean",affectsSemanticDiagnostics:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Disable_strict_checking_of_generic_signatures_in_function_types},{name:"useDefineForClassFields",type:"boolean",affectsSemanticDiagnostics:!0,category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Emit_class_fields_with_Define_instead_of_Set},{name:"keyofStringsOnly",type:"boolean",category:e.Diagnostics.Advanced_Options,description:e.Diagnostics.Resolve_keyof_to_string_valued_property_names_only_no_numbers_or_symbols},{name:"plugins",type:"list",isTSConfigOnly:!0,element:{name:"plugin",type:"object"},description:e.Diagnostics.List_of_language_service_plugins}]),e.semanticDiagnosticsOptionDeclarations=e.optionDeclarations.filter((function(e){return!!e.affectsSemanticDiagnostics})),e.affectsEmitOptionDeclarations=e.optionDeclarations.filter((function(e){return!!e.affectsEmit})),e.moduleResolutionOptionDeclarations=e.optionDeclarations.filter((function(e){return!!e.affectsModuleResolution})),e.sourceFileAffectingCompilerOptions=e.optionDeclarations.filter((function(e){return!!e.affectsSourceFile||!!e.affectsModuleResolution||!!e.affectsBindDiagnostics})),e.transpileOptionValueCompilerOptions=e.optionDeclarations.filter((function(t){return e.hasProperty(t,"transpileOptionValue")})),e.buildOpts=t(e.commonOptionsWithBuild,[{name:"verbose",shortName:"v",category:e.Diagnostics.Command_line_Options,description:e.Diagnostics.Enable_verbose_logging,type:"boolean"},{name:"dry",shortName:"d",category:e.Diagnostics.Command_line_Options,description:e.Diagnostics.Show_what_would_be_built_or_deleted_if_specified_with_clean,type:"boolean"},{name:"force",shortName:"f",category:e.Diagnostics.Command_line_Options,description:e.Diagnostics.Build_all_projects_including_those_that_appear_to_be_up_to_date,type:"boolean"},{name:"clean",category:e.Diagnostics.Command_line_Options,description:e.Diagnostics.Delete_the_outputs_of_all_projects,type:"boolean"}]),e.typeAcquisitionDeclarations=[{name:"enableAutoDiscovery",type:"boolean"},{name:"enable",type:"boolean"},{name:"include",type:"list",element:{name:"include",type:"string"}},{name:"exclude",type:"list",element:{name:"exclude",type:"string"}}],e.defaultInitCompilerOptions={module:e.ModuleKind.CommonJS,target:1,strict:!0,esModuleInterop:!0,forceConsistentCasingInFileNames:!0},e.convertEnableAutoDiscoveryToEnable=o,e.getOptionNameMap=s,e.createOptionNameMap=c,e.createCompilerDiagnosticForInvalidCustomType=u,e.parseCustomTypeOption=_,e.parseListTypeOption=d,e.parseCommandLine=function(t,r){return p(s,[e.Diagnostics.Unknown_compiler_option_0,e.Diagnostics.Compiler_option_0_expects_an_argument],t,r)},e.getOptionFromName=m,e.parseBuildCommand=function(t){var r,n=p((function(){return r||(r=c(e.buildOpts))}),[e.Diagnostics.Unknown_build_option_0,e.Diagnostics.Build_option_0_requires_a_value_of_type_1],t),i=n.options,a=n.fileNames,o=n.errors,s=i;return 0===a.length&&a.push("."),s.clean&&s.force&&o.push(e.createCompilerDiagnostic(e.Diagnostics.Options_0_and_1_cannot_be_combined,"clean","force")),s.clean&&s.verbose&&o.push(e.createCompilerDiagnostic(e.Diagnostics.Options_0_and_1_cannot_be_combined,"clean","verbose")),s.clean&&s.watch&&o.push(e.createCompilerDiagnostic(e.Diagnostics.Options_0_and_1_cannot_be_combined,"clean","watch")),s.watch&&s.dry&&o.push(e.createCompilerDiagnostic(e.Diagnostics.Options_0_and_1_cannot_be_combined,"watch","dry")),{buildOptions:s,projects:a,errors:o}},e.getDiagnosticText=function(t){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return e.createCompilerDiagnostic.apply(void 0,arguments).messageText},e.getParsedCommandLineOfConfigFile=function(t,r,n,i){var a;try{a=n.readFile(t)}catch(r){var o=e.createCompilerDiagnostic(e.Diagnostics.Cannot_read_file_0_Colon_1,t,r.message);return void n.onUnRecoverableConfigFileDiagnostic(o)}if(a){var s=e.parseJsonText(t,a),c=n.getCurrentDirectory();return s.path=e.toPath(t,c,e.createGetCanonicalFileName(n.useCaseSensitiveFileNames)),s.resolvedPath=s.path,s.originalFileName=s.fileName,A(s,n,e.getNormalizedAbsolutePath(e.getDirectoryPath(t),c),r,e.getNormalizedAbsolutePath(t,c),void 0,void 0,i)}o=e.createCompilerDiagnostic(e.Diagnostics.File_0_not_found,t),n.onUnRecoverableConfigFileDiagnostic(o)},e.readConfigFile=function(t,r){var n=v(t,r);return e.isString(n)?y(t,n):{config:{},error:n}},e.parseConfigFileTextToJson=y,e.readJsonConfigFile=h,e.convertToObject=x,e.convertToObjectWorker=D,e.convertToTSConfig=function(t,n,i){var a=e.createGetCanonicalFileName(i.useCaseSensitiveFileNames),o=e.map(e.filter(t.fileNames,t.configFileSpecs&&t.configFileSpecs.validatedIncludeSpecs?function(t,r,n,i){if(!r)return function(e){return!0};var a=e.getFileMatcherPatterns(t,n,r,i.useCaseSensitiveFileNames,i.getCurrentDirectory()),o=a.excludePattern&&e.getRegexFromPattern(a.excludePattern,i.useCaseSensitiveFileNames),s=a.includeFilePattern&&e.getRegexFromPattern(a.includeFilePattern,i.useCaseSensitiveFileNames);if(s)return o?function(e){return!(s.test(e)&&!o.test(e))}:function(e){return!s.test(e)};if(o)return function(e){return o.test(e)};return function(e){return!0}}(n,t.configFileSpecs.validatedIncludeSpecs,t.configFileSpecs.validatedExcludeSpecs,i):function(e){return!0}),(function(t){return e.getRelativePathFromFile(e.getNormalizedAbsolutePath(n,i.getCurrentDirectory()),e.getNormalizedAbsolutePath(t,i.getCurrentDirectory()),a)})),s=k(t.options,{configFilePath:e.getNormalizedAbsolutePath(n,i.getCurrentDirectory()),useCaseSensitiveFileNames:i.useCaseSensitiveFileNames});return r(r({compilerOptions:r(r({},e.arrayFrom(s.entries()).reduce((function(e,t){var n;return r(r({},e),((n={})[t[0]]=t[1],n))}),{})),{showConfig:void 0,configFile:void 0,configFilePath:void 0,help:void 0,init:void 0,listFiles:void 0,listEmittedFiles:void 0,project:void 0,build:void 0,version:void 0}),references:e.map(t.projectReferences,(function(e){return r(r({},e),{path:e.originalPath?e.originalPath:"",originalPath:void 0})})),files:e.length(o)?o:void 0},t.configFileSpecs?{include:E(t.configFileSpecs.validatedIncludeSpecs),exclude:t.configFileSpecs.validatedExcludeSpecs}:{}),{compileOnSave:!!t.compileOnSave||void 0})},e.generateTSConfig=function(t,r,n){var i=k(e.extend(t,e.defaultInitCompilerOptions));return function(){for(var t=e.createMultiMap(),c=0,u=e.optionDeclarations;c<u.length;c++){var l=u[c],_=l.category;s(l)&&t.add(e.getLocaleSpecificMessage(_),l)}var d=0,p=0,f=[],m=[];t.forEach((function(t,r){0!==f.length&&(f.push(""),m.push("")),f.push("/* "+r+" */"),m.push("");for(var n=0,o=t;n<o.length;n++){var s=o[n],c=void 0;c=i.has(s.name)?'"'+s.name+'": '+JSON.stringify(i.get(s.name))+((p+=1)===i.size?"":","):'// "'+s.name+'": '+JSON.stringify(a(s))+",",f.push(c),m.push("/* "+(s.description&&e.getLocaleSpecificMessage(s.description)||s.name)+" */"),d=Math.max(c.length,d)}}));var g=o(2),y=[];y.push("{"),y.push(g+'"compilerOptions": {');for(var h=0;h<f.length;h++){var v=f[h],b=m[h];y.push(v&&""+g+g+v+(b&&o(d-v.length+2)+b))}if(r.length){y.push(g+"},"),y.push(g+'"files": [');for(h=0;h<r.length;h++)y.push(""+g+g+JSON.stringify(r[h])+(h===r.length-1?"":","));y.push(g+"]")}else y.push(g+"}");return y.push("}"),y.join(n)+n}();function a(t){switch(t.type){case"number":return 1;case"boolean":return!0;case"string":return t.isFilePath?"./":"";case"list":return[];case"object":return{};default:var r=t.type.keys().next();return r.done?e.Debug.fail("Expected 'option.type' to have entries."):r.value}}function o(e){return Array(e+1).join(" ")}function s(t){var r=t.category,n=t.name;return void 0!==r&&r!==e.Diagnostics.Command_line_Options&&(r!==e.Diagnostics.Advanced_Options||i.has(n))}},e.convertToOptionsWithAbsolutePaths=function(t,r){var n={},i=s().optionNameMap;for(var a in t)e.hasProperty(t,a)&&(n[a]=N(i.get(a.toLowerCase()),t[a],r));return n.configFilePath&&(n.configFilePath=r(n.configFilePath)),n},e.parseJsonConfigFileContent=function(e,t,r,n,i,a,o,s){return I(e,void 0,t,r,n,i,a,o,s)},e.parseJsonSourceFileConfigFileContent=A,e.setConfigFileInOptions=F,e.canJsonReportNoInutFiles=L,e.updateErrorForNoInputFiles=function(t,r,n,i,a){var o=i.length;return M(t,a)?i.push(O(n,r)):e.filterMutate(i,(function(t){return!function(t){return t.code===e.Diagnostics.No_inputs_were_found_in_config_file_0_Specified_include_paths_were_1_and_exclude_paths_were_2.code}(t)})),o!==i.length},e.convertCompilerOptionsFromJson=function(e,t,r){var n=[];return{options:J(e,t,n,r),errors:n}},e.convertTypeAcquisitionFromJson=function(e,t,r){var n=[];return{options:U(e,t,n,r),errors:n}};var Y=/(^|\/)\*\*\/?$/,X=/(^|\/)\*\*\/(.*\/)?\.\.($|\/)/,Q=/\/[^/]*?[*?][^/]*\//,$=/^[^*?]*(?=\/[^/]*[*?])/;function Z(t,r,n,i,a){void 0===a&&(a=[]),r=e.normalizePath(r);var o,s=i.useCaseSensitiveFileNames?e.identity:e.toLowerCase,c=e.createMap(),u=e.createMap(),l=e.createMap(),_=t.filesSpecs,d=t.validatedIncludeSpecs,p=t.validatedExcludeSpecs,f=t.wildcardDirectories,m=e.getSupportedExtensions(n,a),g=e.getSuppoertedExtensionsWithJsonIfResolveJsonModule(n,m);if(_)for(var y=0,h=_;y<h.length;y++){var v=h[y],b=e.getNormalizedAbsolutePath(v,r);c.set(s(b),b)}if(d&&d.length>0)for(var x=function(t){if(e.fileExtensionIs(t,".json")){if(!o){var n=d.filter((function(t){return e.endsWith(t,".json")})),a=e.map(e.getRegularExpressionsForWildcards(n,r,"files"),(function(e){return"^"+e+"$"}));o=a?a.map((function(t){return e.getRegexFromPattern(t,i.useCaseSensitiveFileNames)})):e.emptyArray}if(-1!==e.findIndex(o,(function(e){return e.test(t)}))){var _=s(t);c.has(_)||l.has(_)||l.set(_,t)}return"continue"}if(function(t,r,n,i,a){for(var o=e.getExtensionPriority(t,i),s=e.adjustExtensionPriority(o,i),c=0;c<s;c++){var u=i[c],l=a(e.changeExtension(t,u));if(r.has(l)||n.has(l))return!0}return!1}(t,c,u,m,s))return"continue";!function(t,r,n,i){for(var a=e.getExtensionPriority(t,n),o=e.getNextLowestExtensionPriority(a,n);o<n.length;o++){var s=n[o],c=i(e.changeExtension(t,s));r.delete(c)}}(t,u,m,s);var p=s(t);c.has(p)||u.has(p)||u.set(p,t)},D=0,S=i.readDirectory(r,g,p,d,void 0);D<S.length;D++){x(b=S[D])}var T=e.arrayFrom(c.values()),E=e.arrayFrom(u.values());return{fileNames:T.concat(E,e.arrayFrom(l.values())),wildcardDirectories:f,spec:t}}function ee(t,r,n,i,a){return t.filter((function(t){var o=function(t,r){if(!r&&Y.test(t))return e.Diagnostics.File_specification_cannot_end_in_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0;if(X.test(t))return e.Diagnostics.File_specification_cannot_contain_a_parent_directory_that_appears_after_a_recursive_directory_wildcard_Asterisk_Asterisk_Colon_0}(t,n);return void 0!==o&&r.push(function(t,r){var n=e.getTsConfigPropArrayElementValue(i,a,r);return n?e.createDiagnosticForNodeInSourceFile(i,n,t,r):e.createCompilerDiagnostic(t,r)}(o,t)),void 0===o}))}function te(t,r){var n=$.exec(t);return n?{key:r?n[0]:n[0].toLowerCase(),flags:Q.test(t)?1:0}:e.isImplicitGlob(t)?{key:t,flags:1}:void 0}function re(t,r){switch(r.type){case"object":case"string":return"";case"number":return"number"==typeof t?t:"";case"boolean":return"boolean"==typeof t?t:"";case"list":var n=r.element;return e.isArray(t)?t.map((function(e){return re(e,n)})):"";default:return e.forEachEntry(r.type,(function(e,r){if(e===t)return r}))}}e.getFileNamesFromConfigSpecs=Z,e.convertCompilerOptionsForTelemetry=function(e){var t={};for(var r in e)if(e.hasOwnProperty(r)){var n=m(r);void 0!==n&&(t[r]=re(e[r],n))}return t}}(s||(s={})),function(e){function n(t){t.trace(e.formatMessage.apply(void 0,arguments))}function i(e,t){return!!e.traceResolution&&void 0!==t.trace}function a(t,r){var n;if(r&&t){var i=t.packageJsonContent;"string"==typeof i.name&&"string"==typeof i.version&&(n={name:i.name,subModuleName:r.path.slice(t.packageDirectory.length+e.directorySeparator.length),version:i.version})}return r&&{path:r.path,extension:r.ext,packageId:n}}function o(e){return a(void 0,e)}function s(t){if(t)return e.Debug.assert(void 0===t.packageId),{path:t.path,ext:t.extension}}var c,u;function l(t){if(t)return e.Debug.assert(e.extensionIsTS(t.extension)),{fileName:t.path,packageId:t.packageId}}function _(e,t,r){return{resolvedModule:e&&{resolvedFileName:e.path,originalPath:!0===e.originalPath?void 0:e.originalPath,extension:e.extension,isExternalLibraryImport:t,packageId:e.packageId},failedLookupLocations:r}}function d(t,r,i,a){if(e.hasProperty(t,r)){var o=t[r];if(f(o)===i&&null!==o)return o;a.traceEnabled&&n(a.host,e.Diagnostics.Expected_type_of_0_field_in_package_json_to_be_1_got_2,r,i,null===o?"null":f(o))}else a.traceEnabled&&n(a.host,e.Diagnostics.package_json_does_not_have_a_0_field,r)}function p(t,r,i,a){var o=d(t,r,"string",a);if(void 0!==o){if(o){var s=e.normalizePath(e.combinePaths(i,o));return a.traceEnabled&&n(a.host,e.Diagnostics.package_json_has_0_field_1_that_references_2,r,o,s),s}a.traceEnabled&&n(a.host,e.Diagnostics.package_json_had_a_falsy_0_field,r)}}function m(e,t,r){return p(e,"typings",t,r)||p(e,"types",t,r)}function g(e,t,r){return p(e,"main",t,r)}function y(t,r){var i=function(t,r){var i=d(t,"typesVersions","object",r);if(void 0!==i)return r.traceEnabled&&n(r.host,e.Diagnostics.package_json_has_a_typesVersions_field_with_version_specific_path_mappings),i}(t,r);if(void 0!==i){if(r.traceEnabled)for(var a in i)e.hasProperty(i,a)&&!e.VersionRange.tryParse(a)&&n(r.host,e.Diagnostics.package_json_has_a_typesVersions_entry_0_that_is_not_a_valid_semver_range,a);var o=h(i);if(o){var s=o.version,c=o.paths;if("object"===f(c))return o;r.traceEnabled&&n(r.host,e.Diagnostics.Expected_type_of_0_field_in_package_json_to_be_1_got_2,"typesVersions['"+s+"']","object",f(c))}else r.traceEnabled&&n(r.host,e.Diagnostics.package_json_does_not_have_a_typesVersions_entry_that_matches_version_0,e.versionMajorMinor)}}function h(t){for(var r in u||(u=new e.Version(e.version)),t)if(e.hasProperty(t,r)){var n=e.VersionRange.tryParse(r);if(void 0!==n&&n.test(u))return{version:r,paths:t[r]}}}function v(t,r){return t.typeRoots?t.typeRoots:(t.configFilePath?n=e.getDirectoryPath(t.configFilePath):r.getCurrentDirectory&&(n=r.getCurrentDirectory()),void 0!==n?function(t,r){if(!r.directoryExists)return[e.combinePaths(t,b)];var n;return e.forEachAncestorDirectory(e.normalizePath(t),(function(t){var i=e.combinePaths(t,b);r.directoryExists(i)&&(n||(n=[])).push(i)})),n}(n,r):void 0);var n}e.trace=n,e.isTraceEnabled=i,function(e){e[e.TypeScript=0]="TypeScript",e[e.JavaScript=1]="JavaScript",e[e.Json=2]="Json",e[e.TSConfig=3]="TSConfig",e[e.DtsOnly=4]="DtsOnly"}(c||(c={})),e.getPackageJsonTypesVersionsPaths=h,e.getEffectiveTypeRoots=v;var b=e.combinePaths("node_modules","@types");function x(t){var r=e.createMap(),n=e.createMap();return{ownMap:r,redirectsMap:n,getOrCreateMapOfCacheRedirects:function(i){if(!i)return r;var a=i.sourceFile.path,o=n.get(a);o||(o=!t||e.optionsHaveModuleResolutionChanges(t,i.commandLine.options)?e.createMap():r,n.set(a,o));return o},clear:function(){r.clear(),n.clear()},setOwnOptions:function(e){t=e},setOwnMap:function(e){r=e}}}function D(t,r,n,i){return{getOrCreateCacheForDirectory:function(r,o){var s=e.toPath(r,n,i);return a(t,o,s,e.createMap)},getOrCreateCacheForModuleName:function(t,n){return e.Debug.assert(!e.isExternalModuleNameRelative(t)),a(r,n,t,o)},directoryToModuleNameMap:t,moduleNameToDirectoryMap:r};function a(e,t,r,n){var i=e.getOrCreateMapOfCacheRedirects(t),a=i.get(r);return a||(a=n(),i.set(r,a)),a}function o(){var t=e.createMap();return{get:function(r){return t.get(e.toPath(r,n,i))},set:function(r,a){var o=e.toPath(r,n,i);if(t.has(o))return;t.set(o,a);var s=a.resolvedModule&&(a.resolvedModule.originalPath||a.resolvedModule.resolvedFileName),c=s&&function(t,r){var a=e.toPath(e.getDirectoryPath(r),n,i),o=0,s=Math.min(t.length,a.length);for(;o<s&&t.charCodeAt(o)===a.charCodeAt(o);)o++;if(o===t.length&&(a.length===o||a[o]===e.directorySeparator))return t;var c=e.getRootLength(t);if(o<c)return;var u=t.lastIndexOf(e.directorySeparator,o-1);if(-1===u)return;return t.substr(0,Math.max(u,c))}(o,s),u=o;for(;u!==c;){var l=e.getDirectoryPath(u);if(l===u||t.has(l))break;t.set(l,a),u=l}}}}}function S(t,r,i,a,o){var s=function(t,r,i,a){var o=a.compilerOptions,s=o.baseUrl,c=o.paths;if(s&&c&&!e.pathIsRelative(r))return a.traceEnabled&&(n(a.host,e.Diagnostics.baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1,s,r),n(a.host,e.Diagnostics.paths_option_is_specified_looking_for_a_pattern_to_match_module_name_0,r)),G(t,r,s,c,i,!1,a)}(t,r,a,o);return s?s.value:e.isExternalModuleNameRelative(r)?function(t,r,i,a,o){if(!o.compilerOptions.rootDirs)return;o.traceEnabled&&n(o.host,e.Diagnostics.rootDirs_option_is_set_using_it_to_resolve_relative_module_name_0,r);for(var s,c,u=e.normalizePath(e.combinePaths(i,r)),l=0,_=o.compilerOptions.rootDirs;l<_.length;l++){var d=_[l],p=e.normalizePath(d);e.endsWith(p,e.directorySeparator)||(p+=e.directorySeparator);var f=e.startsWith(u,p)&&(void 0===c||c.length<p.length);o.traceEnabled&&n(o.host,e.Diagnostics.Checking_if_0_is_the_longest_matching_prefix_for_1_2,p,u,f),f&&(c=p,s=d)}if(c){o.traceEnabled&&n(o.host,e.Diagnostics.Longest_matching_prefix_for_0_is_1,u,c);var m=u.substr(c.length);o.traceEnabled&&n(o.host,e.Diagnostics.Loading_0_from_the_root_dir_1_candidate_location_2,m,c,u);var g=a(t,u,!e.directoryProbablyExists(i,o.host),o);if(g)return g;o.traceEnabled&&n(o.host,e.Diagnostics.Trying_other_entries_in_rootDirs);for(var y=0,h=o.compilerOptions.rootDirs;y<h.length;y++){if((d=h[y])!==s){var v=e.combinePaths(e.normalizePath(d),m);o.traceEnabled&&n(o.host,e.Diagnostics.Loading_0_from_the_root_dir_1_candidate_location_2,m,d,v);var b=e.getDirectoryPath(v),x=a(t,v,!e.directoryProbablyExists(b,o.host),o);if(x)return x}}o.traceEnabled&&n(o.host,e.Diagnostics.Module_resolution_using_rootDirs_has_failed)}return}(t,r,i,a,o):function(t,r,i,a){var o=a.compilerOptions.baseUrl;if(!o)return;a.traceEnabled&&n(a.host,e.Diagnostics.baseUrl_option_is_set_to_0_using_this_value_to_resolve_non_relative_module_name_1,o,r);var s=e.normalizePath(e.combinePaths(o,r));a.traceEnabled&&n(a.host,e.Diagnostics.Resolving_module_name_0_relative_to_base_url_1_2,r,o,s);return i(t,s,!e.directoryProbablyExists(e.getDirectoryPath(s),a.host),a)}(t,r,a,o)}e.resolveTypeReferenceDirective=function(t,r,a,o,s){var u=i(a,o);s&&(a=s.commandLine.options);var _=[],d={compilerOptions:a,host:o,traceEnabled:u,failedLookupLocations:_},p=v(a,o);u&&(void 0===r?void 0===p?n(o,e.Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_not_set,t):n(o,e.Diagnostics.Resolving_type_reference_directive_0_containing_file_not_set_root_directory_1,t,p):void 0===p?n(o,e.Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_not_set,t,r):n(o,e.Diagnostics.Resolving_type_reference_directive_0_containing_file_1_root_directory_2,t,r,p),s&&n(o,e.Diagnostics.Using_compiler_options_of_project_reference_redirect_0,s.sourceFile.fileName));var f,m=function(){if(p&&p.length)return u&&n(o,e.Diagnostics.Resolving_with_primary_search_path_0,p.join(", ")),e.firstDefined(p,(function(r){var i=e.combinePaths(r,t),a=e.getDirectoryPath(i),s=e.directoryProbablyExists(a,o);return!s&&u&&n(o,e.Diagnostics.Directory_0_does_not_exist_skipping_all_lookups_in_it,a),l(j(c.DtsOnly,i,!s,d))}));u&&n(o,e.Diagnostics.Root_directory_cannot_be_determined_skipping_primary_search_paths)}(),g=!0;if(m||(m=function(){var i=r&&e.getDirectoryPath(r);if(void 0!==i){u&&n(o,e.Diagnostics.Looking_up_in_node_modules_folder_initial_location_0,i);var a=void 0;if(e.isExternalModuleNameRelative(t)){var s=e.normalizePathAndParts(e.combinePaths(i,t)).path;a=w(c.DtsOnly,s,!1,d,!0)}else{var _=U(c.DtsOnly,t,i,d,void 0,void 0);a=_&&_.value}var p=l(a);return!p&&u&&n(o,e.Diagnostics.Type_reference_directive_0_was_not_resolved,t),p}u&&n(o,e.Diagnostics.Containing_file_is_not_specified_and_root_directory_cannot_be_determined_skipping_lookup_in_node_modules_folder)}(),g=!1),m){var y=m.fileName,h=m.packageId,b=a.preserveSymlinks?y:P(y,o,u);u&&(h?n(o,e.Diagnostics.Type_reference_directive_0_was_successfully_resolved_to_1_with_Package_ID_2_primary_Colon_3,t,b,e.packageIdToString(h),g):n(o,e.Diagnostics.Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2,t,b,g)),f={primary:g,resolvedFileName:b,packageId:h,isExternalLibraryImport:I(y)}}return{resolvedTypeReferenceDirective:f,failedLookupLocations:_}},e.getAutomaticTypeDirectiveNames=function(t,r){if(t.types)return t.types;var n=[];if(r.directoryExists&&r.getDirectories){var i=v(t,r);if(i)for(var a=0,o=i;a<o.length;a++){var s=o[a];if(r.directoryExists(s))for(var c=0,u=r.getDirectories(s);c<u.length;c++){var l=u[c],_=e.normalizePath(l),d=e.combinePaths(s,_,"package.json");if(!(r.fileExists(d)&&null===e.readJson(d,r).typings)){var p=e.getBaseFileName(_);46!==p.charCodeAt(0)&&n.push(p)}}}}return n},e.createModuleResolutionCache=function(e,t,r){return D(x(r),x(r),e,t)},e.createCacheWithRedirects=x,e.createModuleResolutionCacheWithMaps=D,e.resolveModuleNameFromCache=function(t,r,n){var i=e.getDirectoryPath(r),a=n&&n.getOrCreateCacheForDirectory(i);return a&&a.get(t)},e.resolveModuleName=function(t,r,a,o,s,c){var u=i(a,o);c&&(a=c.commandLine.options),u&&(n(o,e.Diagnostics.Resolving_module_0_from_1,t,r),c&&n(o,e.Diagnostics.Using_compiler_options_of_project_reference_redirect_0,c.sourceFile.fileName));var l=e.getDirectoryPath(r),_=s&&s.getOrCreateCacheForDirectory(l,c),d=_&&_.get(t);if(d)u&&n(o,e.Diagnostics.Resolution_for_module_0_was_found_in_cache_from_location_1,t,l);else{var p=a.moduleResolution;switch(void 0===p?(p=e.getEmitModuleKind(a)===e.ModuleKind.CommonJS?e.ModuleResolutionKind.NodeJs:e.ModuleResolutionKind.Classic,u&&n(o,e.Diagnostics.Module_resolution_kind_is_not_specified_using_0,e.ModuleResolutionKind[p])):u&&n(o,e.Diagnostics.Explicitly_specified_module_resolution_kind_Colon_0,e.ModuleResolutionKind[p]),e.perfLogger.logStartResolveModule(t),p){case e.ModuleResolutionKind.NodeJs:d=A(t,r,a,o,s,c);break;case e.ModuleResolutionKind.Classic:d=$(t,r,a,o,s,c);break;default:return e.Debug.fail("Unexpected moduleResolution: "+p)}d&&d.resolvedModule&&e.perfLogger.logInfoEvent('Module "'+t+'" resolved to "'+d.resolvedModule.resolvedFileName+'"'),e.perfLogger.logStopResolveModule(d&&d.resolvedModule?""+d.resolvedModule.resolvedFileName:"null"),_&&(_.set(t,d),e.isExternalModuleNameRelative(t)||s.getOrCreateCacheForModuleName(t,c).set(l,d))}return u&&(d.resolvedModule?d.resolvedModule.packageId?n(o,e.Diagnostics.Module_name_0_was_successfully_resolved_to_1_with_Package_ID_2,t,d.resolvedModule.resolvedFileName,e.packageIdToString(d.resolvedModule.packageId)):n(o,e.Diagnostics.Module_name_0_was_successfully_resolved_to_1,t,d.resolvedModule.resolvedFileName):n(o,e.Diagnostics.Module_name_0_was_not_resolved,t)),d},e.resolveJSModule=function(e,t,r){var n=N(e,t,r),i=n.resolvedModule,a=n.failedLookupLocations;if(!i)throw new Error("Could not resolve JS module '"+e+"' starting at '"+t+"'. Looked in: "+a.join(", "));return i.resolvedFileName},e.tryResolveJSModule=function(e,t,r){var n=N(e,t,r).resolvedModule;return n&&n.resolvedFileName};var T=[c.JavaScript],E=[c.TypeScript,c.JavaScript],C=t(E,[c.Json]),k=[c.TSConfig];function N(t,r,n){return F(t,r,{moduleResolution:e.ModuleResolutionKind.NodeJs,allowJs:!0},n,void 0,T,void 0)}function A(t,r,n,i,a,o,s){return F(t,e.getDirectoryPath(r),n,i,a,s?k:n.resolveJsonModule?C:E,o)}function F(t,a,o,s,u,l,d){var p=i(o,s),f=[],m={compilerOptions:o,host:s,traceEnabled:p,failedLookupLocations:f},g=e.forEach(l,(function(i){return function(i){var l=S(i,t,a,(function(e,t,r,n){return w(e,t,r,n,!0)}),m);if(l)return Z({resolved:l,isExternalLibraryImport:I(l.path)});if(e.isExternalModuleNameRelative(t)){var _=e.normalizePathAndParts(e.combinePaths(a,t)),f=_.path,g=_.parts,y=w(i,f,!1,m,!0);return y&&Z({resolved:y,isExternalLibraryImport:e.contains(g,"node_modules")})}p&&n(s,e.Diagnostics.Loading_module_0_from_node_modules_folder_target_file_type_1,t,c[i]);var h=U(i,t,a,m,u,d);if(!h)return;var v=h.value;if(!o.preserveSymlinks&&v&&!v.originalPath){var b=P(v.path,s,p),x=b===v.path?void 0:v.path;v=r(r({},v),{path:b,originalPath:x})}return{value:v&&{resolved:v,isExternalLibraryImport:!0}}}(i)}));if(g&&g.value){var y=g.value;return _(y.resolved,y.isExternalLibraryImport,f)}return{resolvedModule:void 0,failedLookupLocations:f}}function P(t,r,i){if(!r.realpath)return t;var a=e.normalizePath(r.realpath(t));return i&&n(r,e.Diagnostics.Resolving_real_path_for_0_result_1,t,a),e.Debug.assert(r.fileExists(a),t+" linked to nonexistent file "+a),a}function w(t,r,i,o,s){if(o.traceEnabled&&n(o.host,e.Diagnostics.Loading_module_as_file_Slash_folder_candidate_module_location_0_target_file_type_1,r,c[t]),!e.hasTrailingDirectorySeparator(r)){if(!i){var u=e.getDirectoryPath(r);e.directoryProbablyExists(u,o.host)||(o.traceEnabled&&n(o.host,e.Diagnostics.Directory_0_does_not_exist_skipping_all_lookups_in_it,u),i=!0)}var l=L(t,r,i,o);if(l){var _=s?function(t){var r=e.normalizePath(t.path),n=r.lastIndexOf(e.nodeModulesPathPart);if(-1===n)return;var i=n+e.nodeModulesPathPart.length,a=O(r,i);64===r.charCodeAt(i)&&(a=O(r,a));return r.slice(0,a)}(l):void 0;return a(_?K(_,!1,o):void 0,l)}}i||(e.directoryProbablyExists(r,o.host)||(o.traceEnabled&&n(o.host,e.Diagnostics.Directory_0_does_not_exist_skipping_all_lookups_in_it,r),i=!0));return j(t,r,i,o,s)}function I(t){return e.stringContains(t,e.nodeModulesPathPart)}function O(t,r){var n=t.indexOf(e.directorySeparator,r+1);return-1===n?r:n}function M(e,t,r,n){return o(L(e,t,r,n))}function L(t,r,i,a){if(t===c.Json||t===c.TSConfig){var o=e.tryRemoveExtension(r,".json");return void 0===o&&t===c.Json?void 0:R(o||r,t,i,a)}var s=R(r,t,i,a);if(s)return s;if(e.hasJSFileExtension(r)){var u=e.removeFileExtension(r);if(a.traceEnabled){var l=r.substring(u.length);n(a.host,e.Diagnostics.File_name_0_has_a_1_extension_stripping_it,r,l)}return R(u,t,i,a)}}function R(t,r,n,i){if(!n){var a=e.getDirectoryPath(t);a&&(n=!e.directoryProbablyExists(a,i.host))}switch(r){case c.DtsOnly:return o(".d.ts");case c.TypeScript:return o(".ts")||o(".tsx")||o(".d.ts");case c.JavaScript:return o(".js")||o(".jsx");case c.TSConfig:case c.Json:return o(".json")}function o(e){var r=B(t+e,n,i);return void 0===r?void 0:{path:r,ext:e}}}function B(t,r,i){if(!r){if(i.host.fileExists(t))return i.traceEnabled&&n(i.host,e.Diagnostics.File_0_exist_use_it_as_a_name_resolution_result,t),t;i.traceEnabled&&n(i.host,e.Diagnostics.File_0_does_not_exist,t)}i.failedLookupLocations.push(t)}function j(e,t,r,n,i){void 0===i&&(i=!0);var o=i?K(t,r,n):void 0;return a(o,J(e,t,r,n,o&&o.packageJsonContent,o&&o.versionPaths))}function K(t,r,i){var a=i.host,o=i.traceEnabled,s=!r&&e.directoryProbablyExists(t,a),c=e.combinePaths(t,"package.json");if(s&&a.fileExists(c)){var u=e.readJson(c,a);return o&&n(a,e.Diagnostics.Found_package_json_at_0,c),{packageDirectory:t,packageJsonContent:u,versionPaths:y(u,i)}}s&&o&&n(a,e.Diagnostics.File_0_does_not_exist,c),i.failedLookupLocations.push(c)}function J(t,r,i,a,u,l){var _;if(u)switch(t){case c.JavaScript:case c.Json:_=g(u,r,a);break;case c.TypeScript:_=m(u,r,a)||g(u,r,a);break;case c.DtsOnly:_=m(u,r,a);break;case c.TSConfig:_=function(e,t,r){return p(e,"tsconfig",t,r)}(u,r,a);break;default:return e.Debug.assertNever(t)}var d=function(t,r,i,a){var s=B(r,i,a);if(s){var u=function(t,r){var n=e.tryGetExtensionFromPath(r);return void 0!==n&&function(e,t){switch(e){case c.JavaScript:return".js"===t||".jsx"===t;case c.TSConfig:case c.Json:return".json"===t;case c.TypeScript:return".ts"===t||".tsx"===t||".d.ts"===t;case c.DtsOnly:return".d.ts"===t}}(t,n)?{path:r,ext:n}:void 0}(t,s);if(u)return o(u);a.traceEnabled&&n(a.host,e.Diagnostics.File_0_has_an_unsupported_extension_so_skipping_it,s)}return w(t===c.DtsOnly?c.TypeScript:t,r,i,a,!1)},f=_?!e.directoryProbablyExists(e.getDirectoryPath(_),a.host):void 0,y=i||!e.directoryProbablyExists(r,a.host),h=e.combinePaths(r,t===c.TSConfig?"tsconfig":"index");if(l&&(!_||e.containsPath(r,_))){var v=e.getRelativePathFromDirectory(r,_||h,!1);a.traceEnabled&&n(a.host,e.Diagnostics.package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_match_module_name_2,l.version,e.version,v);var b=G(t,v,r,l.paths,d,f||y,a);if(b)return s(b.value)}var x=_&&s(d(t,_,f,a));return x||L(t,h,y,a)}function z(t){var r=t.indexOf(e.directorySeparator);return"@"===t[0]&&(r=t.indexOf(e.directorySeparator,r+1)),-1===r?{packageName:t,rest:""}:{packageName:t.slice(0,r),rest:t.slice(r+1)}}function U(e,t,r,n,i,a){return V(e,t,r,n,!1,i,a)}function V(t,r,n,i,a,o,s){var c=o&&o.getOrCreateCacheForModuleName(r,s);return e.forEachAncestorDirectory(e.normalizeSlashes(n),(function(n){if("node_modules"!==e.getBaseFileName(n)){var o=Q(c,r,n,i);return o||Z(q(t,r,n,i,a))}}))}function q(t,r,i,a,o){var s=e.combinePaths(i,"node_modules"),u=e.directoryProbablyExists(s,a.host);!u&&a.traceEnabled&&n(a.host,e.Diagnostics.Directory_0_does_not_exist_skipping_all_lookups_in_it,s);var l=o?void 0:W(t,r,s,u,a);if(l)return l;if(t===c.TypeScript||t===c.DtsOnly){var _=e.combinePaths(s,"@types"),d=u;return u&&!e.directoryProbablyExists(_,a.host)&&(a.traceEnabled&&n(a.host,e.Diagnostics.Directory_0_does_not_exist_skipping_all_lookups_in_it,_),d=!1),W(c.DtsOnly,function(t,r){var i=Y(t);r.traceEnabled&&i!==t&&n(r.host,e.Diagnostics.Scoped_package_detected_looking_in_0,i);return i}(r,a),_,d,a)}}function W(t,r,i,s,c){var u=e.normalizePath(e.combinePaths(i,r)),l=K(u,!s,c);if(l){var _=L(t,u,!s,c);if(_)return o(_);var d=J(t,u,!s,c,l.packageJsonContent,l.versionPaths);return a(l,d)}var p=function(e,t,r,n){var i=L(e,t,r,n)||J(e,t,r,n,l&&l.packageJsonContent,l&&l.versionPaths);return a(l,i)},f=z(r),m=f.packageName,g=f.rest;if(""!==g){var y=e.combinePaths(i,m);if((l=K(y,!s,c))&&l.versionPaths){c.traceEnabled&&n(c.host,e.Diagnostics.package_json_has_a_typesVersions_entry_0_that_matches_compiler_version_1_looking_for_a_pattern_to_match_module_name_2,l.versionPaths.version,e.version,g);var h=s&&e.directoryProbablyExists(y,c.host),v=G(t,g,y,l.versionPaths.paths,p,!h,c);if(v)return v.value}}return p(t,u,!s,c)}function G(t,r,i,a,s,c,u){var l=e.matchPatternOrExact(e.getOwnKeys(a),r);if(l){var _=e.isString(l)?void 0:e.matchedText(l,r),d=e.isString(l)?l:e.patternText(l);return u.traceEnabled&&n(u.host,e.Diagnostics.Module_name_0_matched_pattern_1,r,d),{value:e.forEach(a[d],(function(r){var a=_?r.replace("*",_):r,l=e.normalizePath(e.combinePaths(i,a));u.traceEnabled&&n(u.host,e.Diagnostics.Trying_substitution_0_candidate_module_location_Colon_1,r,a);var d=e.tryGetExtensionFromPath(l);if(void 0!==d){var p=B(l,c,u);if(void 0!==p)return o({path:p,ext:d})}return s(t,l,c||!e.directoryProbablyExists(e.getDirectoryPath(l),u.host),u)}))}}}e.nodeModuleNameResolver=A,e.nodeModulesPathPart="/node_modules/",e.pathContainsNodeModules=I,e.parsePackageName=z;var H="__";function Y(t){if(e.startsWith(t,"@")){var r=t.replace(e.directorySeparator,H);if(r!==t)return r.slice(1)}return t}function X(t){return e.stringContains(t,H)?"@"+t.replace(H,e.directorySeparator):t}function Q(t,r,i,a){var o,s=t&&t.get(i);if(s)return a.traceEnabled&&n(a.host,e.Diagnostics.Resolution_for_module_0_was_found_in_cache_from_location_1,r,i),(o=a.failedLookupLocations).push.apply(o,s.failedLookupLocations),{value:s.resolvedModule&&{path:s.resolvedModule.resolvedFileName,originalPath:s.resolvedModule.originalPath||!0,extension:s.resolvedModule.extension,packageId:s.resolvedModule.packageId}}}function $(t,r,n,a,o,s){var u=[],l={compilerOptions:n,host:a,traceEnabled:i(n,a),failedLookupLocations:u},d=e.getDirectoryPath(r),p=f(c.TypeScript)||f(c.JavaScript);return _(p&&p.value,!1,u);function f(r){var n=S(r,t,d,M,l);if(n)return{value:n};if(e.isExternalModuleNameRelative(t)){var i=e.normalizePath(e.combinePaths(d,t));return Z(M(r,i,!1,l))}var a=o&&o.getOrCreateCacheForModuleName(t,s),u=e.forEachAncestorDirectory(d,(function(n){var i=Q(a,t,n,l);if(i)return i;var o=e.normalizePath(e.combinePaths(n,t));return Z(M(r,o,!1,l))}));return u||(r===c.TypeScript?function(e,t,r){return V(c.DtsOnly,e,t,r,!0,void 0,void 0)}(t,d,l):void 0)}}function Z(e){return void 0!==e?{value:e}:void 0}e.getTypesPackageName=function(e){return"@types/"+Y(e)},e.mangleScopedPackageName=Y,e.getPackageNameFromTypesPackageName=function(t){var r=e.removePrefix(t,"@types/");return r!==t?X(r):t},e.unmangleScopedPackageName=X,e.classicNameResolver=$,e.loadModuleFromGlobalCache=function(t,r,a,o,s){var u=i(a,o);u&&n(o,e.Diagnostics.Auto_discovery_for_typings_is_enabled_in_project_0_Running_extra_resolution_pass_for_module_1_using_cache_location_2,r,t,s);var l=[],d={compilerOptions:a,host:o,traceEnabled:u,failedLookupLocations:l};return _(q(c.DtsOnly,t,s,d,!1),!0,l)}}(s||(s={})),function(e){var n;function i(e,t){return e.body&&!e.body.parent&&g(e,e.body),e.body?a(e.body,t):1}function a(t,r){void 0===r&&(r=e.createMap());var n=""+e.getNodeId(t);if(r.has(n))return r.get(n)||0;r.set(n,void 0);var s=function(t,r){switch(t.kind){case 245:case 246:return 0;case 247:if(e.isEnumConst(t))return 2;break;case 253:case 252:if(!e.hasModifier(t,1))return 0;break;case 259:if(!t.moduleSpecifier&&t.exportClause){for(var n=0,s=0,c=t.exportClause.elements;s<c.length;s++){var u=o(c[s],r);if(u>n&&(n=u),1===n)return n}return n}break;case 249:var l=0;return e.forEachChild(t,(function(t){var n=a(t,r);switch(n){case 0:return;case 2:return void(l=2);case 1:return l=1,!0;default:e.Debug.assertNever(n)}})),l;case 248:return i(t,r);case 75:if(t.isInJSDocNamespace)return 0}return 1}(t,r);return r.set(n,s),s}function o(t,r){for(var n=t.propertyName||t.name,i=t.parent;i;){if(e.isBlock(i)||e.isModuleBlock(i)||e.isSourceFile(i)){for(var o=void 0,s=0,c=i.statements;s<c.length;s++){var u=c[s];if(e.nodeHasName(u,n)){u.parent||g(i,u);var l=a(u,r);if((void 0===o||l>o)&&(o=l),1===o)return o}}if(void 0!==o)return o}i=i.parent}return 1}function s(t){return e.Debug.attachFlowNodeDebugInfo(t),t}!function(e){e[e.NonInstantiated=0]="NonInstantiated",e[e.Instantiated=1]="Instantiated",e[e.ConstEnumOnly=2]="ConstEnumOnly"}(e.ModuleInstanceState||(e.ModuleInstanceState={})),e.getModuleInstanceState=i,function(e){e[e.None=0]="None",e[e.IsContainer=1]="IsContainer",e[e.IsBlockScopedContainer=2]="IsBlockScopedContainer",e[e.IsControlFlowContainer=4]="IsControlFlowContainer",e[e.IsFunctionLike=8]="IsFunctionLike",e[e.IsFunctionExpression=16]="IsFunctionExpression",e[e.HasLocals=32]="HasLocals",e[e.IsInterface=64]="IsInterface",e[e.IsObjectLiteralOrClassExpressionMethod=128]="IsObjectLiteralOrClassExpressionMethod"}(n||(n={}));var c=s,u=function(){var n,a,o,u,f,y,h,v,b,x,D,S,T,E,C,k,N,A,F,P,w,I,O,M,L=0,R={flags:1},B={flags:1},j=0;function K(t,r,i,a,o){return e.createDiagnosticForNodeInSourceFile(e.getSourceFileOfNode(t)||n,t,r,i,a,o)}return function(t,r){n=t,a=r,o=e.getEmitScriptTarget(a),w=function(t,r){return!(!e.getStrictOptionValue(r,"alwaysStrict")||t.isDeclarationFile)||!!t.externalModuleIndicator}(n,r),O=e.createUnderscoreEscapedMap(),L=0,M=n.isDeclarationFile,I=e.objectAllocator.getSymbolConstructor(),e.Debug.attachFlowNodeDebugInfo(R),e.Debug.attachFlowNodeDebugInfo(B),n.locals||(Be(n),n.symbolCount=L,n.classifiableNames=O,function(){if(!b)return;for(var t=f,r=v,i=h,a=u,o=D,c=0,l=b;c<l.length;c++){var _=l[c],d=e.getJSDocHost(_);f=e.findAncestor(d.parent,(function(e){return!!(1&Ee(e))}))||n,h=e.getEnclosingBlockScopeContainer(d)||n,D=s({flags:2}),u=_,Be(_.typeExpression);var p=e.getNameOfDeclaration(_);if((e.isJSDocEnumTag(_)||!_.fullName)&&p&&e.isPropertyAccessEntityNameExpression(p.parent)){var m=$e(p.parent);if(m){Xe(n.symbol,p.parent,m,!!e.findAncestor(p,(function(t){return e.isPropertyAccessExpression(t)&&"prototype"===t.name.escapedText})),!1);var g=f;switch(e.getAssignmentDeclarationPropertyAccessKind(p.parent)){case 1:case 2:f=e.isExternalOrCommonJsModule(n)?n:void 0;break;case 4:f=p.parent.expression;break;case 3:f=p.parent.expression.name;break;case 5:f=e.isPropertyAccessExpression(p.parent.expression)?p.parent.expression.name:p.parent.expression;break;case 0:return e.Debug.fail("Shouldn't have detected typedef or enum on non-assignment declaration")}f&&G(_,524288,788968),f=g}}else e.isJSDocEnumTag(_)||!_.fullName||75===_.fullName.kind?(u=_.parent,Pe(_,524288,788968)):Be(_.fullName)}f=t,v=r,h=i,u=a,D=o}()),n=void 0,a=void 0,o=void 0,u=void 0,f=void 0,y=void 0,h=void 0,v=void 0,b=void 0,x=!1,D=void 0,S=void 0,T=void 0,E=void 0,C=void 0,k=void 0,A=void 0,F=!1,P=0,j=0};function J(e,t){return L++,new I(e,t)}function z(t,r,n){t.flags|=n,r.symbol=t,t.declarations=e.appendIfUnique(t.declarations,r),1955&n&&!t.exports&&(t.exports=e.createSymbolTable()),6240&n&&!t.members&&(t.members=e.createSymbolTable()),t.constEnumOnlyModule&&304&t.flags&&(t.constEnumOnlyModule=!1),111551&n&&U(t,r)}function U(t,r){var n=t.valueDeclaration;(!n||e.isAssignmentDeclaration(n)&&!e.isAssignmentDeclaration(r)||n.kind!==r.kind&&e.isEffectiveModuleDeclaration(n))&&(t.valueDeclaration=r)}function V(t){if(258===t.kind)return t.isExportEquals?"export=":"default";var r=e.getNameOfDeclaration(t);if(r){if(e.isAmbientModule(t)){var n=e.getTextOfIdentifierOrLiteral(r);return e.isGlobalScopeAugmentation(t)?"__global":'"'+n+'"'}if(153===r.kind){var i=r.expression;return e.isStringOrNumericLiteralLike(i)?e.escapeLeadingUnderscores(i.text):e.isSignedNumericLiteral(i)?e.tokenToString(i.operator)+i.operand.text:(e.Debug.assert(e.isWellKnownSymbolSyntactically(i)),e.getPropertyNameForKnownSymbolName(e.idText(i.name)))}return e.isWellKnownSymbolSyntactically(r)?e.getPropertyNameForKnownSymbolName(e.idText(r.name)):e.isPropertyNameLiteral(r)?e.getEscapedTextOfIdentifierOrLiteral(r):void 0}switch(t.kind){case 161:return"__constructor";case 169:case 164:case 303:return"__call";case 170:case 165:return"__new";case 166:return"__index";case 259:return"__export";case 288:return"export=";case 208:if(2===e.getAssignmentDeclarationKind(t))return"export=";e.Debug.fail("Unknown binary declaration kind");break;case 298:return e.isJSDocConstructSignature(t)?"__new":"__call";case 155:return e.Debug.assert(298===t.parent.kind,"Impossible parameter parent kind",(function(){return"parent is: "+(e.SyntaxKind?e.SyntaxKind[t.parent.kind]:t.parent.kind)+", expected JSDocFunctionType"})),"arg"+t.parent.parameters.indexOf(t)}}function q(t){return e.isNamedDeclaration(t)?e.declarationNameToString(t.name):e.unescapeLeadingUnderscores(e.Debug.assertDefined(V(t)))}function W(r,i,a,o,s,c){e.Debug.assert(!e.hasDynamicName(a));var u,l=e.hasModifier(a,512),_=l&&i?"default":V(a);if(void 0===_)u=J(0,"__missing");else if(u=r.get(_),2885600&o&&O.set(_,!0),u){if(c&&!u.isReplaceableByMethod)return u;if(u.flags&s)if(u.isReplaceableByMethod)r.set(_,u=J(0,_));else if(!(3&o&&67108864&u.flags)){e.isNamedDeclaration(a)&&(a.name.parent=a);var d=2&u.flags?e.Diagnostics.Cannot_redeclare_block_scoped_variable_0:e.Diagnostics.Duplicate_identifier_0,p=!0;(384&u.flags||384&o)&&(d=e.Diagnostics.Enum_declarations_can_only_merge_with_namespace_or_other_enum_declarations,p=!1);var f=!1;e.length(u.declarations)&&(l?(d=e.Diagnostics.A_module_cannot_have_multiple_default_exports,p=!1,f=!0):u.declarations&&u.declarations.length&&258===a.kind&&!a.isExportEquals&&(d=e.Diagnostics.A_module_cannot_have_multiple_default_exports,p=!1,f=!0));var m=e.getNameOfDeclaration(a)||a,g=[];e.forEach(u.declarations,(function(t,r){var i=e.getNameOfDeclaration(t)||t,a=K(i,d,p?q(t):void 0);n.bindDiagnostics.push(f?e.addRelatedInfo(a,K(m,0===r?e.Diagnostics.Another_export_default_is_here:e.Diagnostics.and_here)):a),f&&g.push(K(i,e.Diagnostics.The_first_export_default_is_here))}));var y=K(m,d,p?q(a):void 0);n.bindDiagnostics.push(f?e.addRelatedInfo.apply(void 0,t([y],g)):y),u=J(0,_)}}else r.set(_,u=J(0,_)),c&&(u.isReplaceableByMethod=!0);return z(u,a,o),u.parent?e.Debug.assert(u.parent===i,"Existing symbol parent should match new one"):u.parent=i,u}function G(t,r,n){var i=1&e.getCombinedModifierFlags(t);if(2097152&r)return 261===t.kind||252===t.kind&&i?W(f.symbol.exports,f.symbol,t,r,n):W(f.locals,void 0,t,r,n);if(e.isJSDocTypeAlias(t)&&e.Debug.assert(e.isInJSFile(t)),!e.isAmbientModule(t)&&(i||64&f.flags)||e.isJSDocTypeAlias(t)){if(!f.locals||e.hasModifier(t,512)&&!V(t))return W(f.symbol.exports,f.symbol,t,r,n);var a=111551&r?1048576:0,o=W(f.locals,void 0,t,a,n);return o.exportSymbol=W(f.symbol.exports,f.symbol,t,r,n),t.localSymbol=o,o}return W(f.locals,void 0,t,r,n)}function H(e){if(M)$(e);else if(536870912&e.transformFlags)M=!0,$(e),M=!1,j|=e.transformFlags&~m(e.kind);else{var t=j;j=0,$(e),j=t|p(e,j)}}function Y(e){X(e,(function(e){return 243===e.kind?Be(e):void 0})),X(e,(function(e){return 243!==e.kind?Be(e):void 0}))}function X(t,r){if(void 0===r&&(r=Be),void 0!==t)if(M)e.forEach(t,r);else{var n=j;j=0;for(var i=0,a=0,o=t;a<o.length;a++){var s=o[a];r(s),i|=-536870913&s.transformFlags}t.transformFlags=536870912|i,j|=n}}function Q(t){e.forEachChild(t,Be,X)}function $(t){if(function(t){if(!(1&D.flags))return!1;if(D===R){if((e.isStatementButNotDeclaration(t)&&223!==t.kind||244===t.kind||248===t.kind&&function(e){var t=i(e);return 1===t||2===t&&!!a.preserveConstEnums}(t))&&(D=B,!a.allowUnreachableCode)){var r=e.unreachableCodeIsError(a)&&!(8388608&t.flags)&&(!e.isVariableStatement(t)||!!(3&e.getCombinedNodeFlags(t.declarationList))||t.declarationList.declarations.some((function(e){return!!e.initializer})));!function(t,r){if(e.isStatement(t)&&l(t)&&e.isBlock(t.parent)){var n=t.parent.statements,i=e.sliceAfter(n,t);e.getRangesWhere(i,l,(function(e,t){return r(i[e],i[t-1])}))}else r(t,t)}(t,(function(t,n){return Re(r,t,n,e.Diagnostics.Unreachable_code_detected)}))}}return!0}(t))return Q(t),void je(t);switch(t.kind>=224&&t.kind<=240&&!a.allowUnreachableCode&&(t.flowNode=D),t.kind){case 228:!function(e){var t=ie(),r=ne(),n=ne();oe(t,D),D=t,me(e.expression,r,n),D=_e(r),ge(e.statement,n,t),oe(t,D),D=_e(n)}(t);break;case 227:!function(t){var r=ie(),n=237===t.parent.kind?e.lastOrUndefined(A):void 0,i=n?n.continueTarget:ne(),a=n?n.breakTarget:ne();oe(r,D),D=r,ge(t.statement,a,i),oe(i,D),D=_e(i),me(t.expression,r,a),D=_e(a)}(t);break;case 229:!function(e){var t=ie(),r=ne(),n=ne();Be(e.initializer),oe(t,D),D=t,me(e.condition,r,n),D=_e(r),ge(e.statement,n,t),Be(e.incrementor),oe(t,D),D=_e(n)}(t);break;case 230:case 231:!function(e){var t=ie(),r=ne();Be(e.expression),oe(t,D),D=t,231===e.kind&&Be(e.awaitModifier);oe(r,D),Be(e.initializer),242!==e.initializer.kind&&ve(e.initializer);ge(e.statement,r,t),oe(t,D),D=_e(r)}(t);break;case 226:!function(e){var t=ne(),r=ne(),n=ne();me(e.expression,t,r),D=_e(t),Be(e.thenStatement),oe(n,D),D=_e(r),Be(e.elseStatement),oe(n,D),D=_e(n)}(t);break;case 234:case 238:!function(e){Be(e.expression),234===e.kind&&(F=!0,E&&oe(E,D));D=R}(t);break;case 233:case 232:!function(e){if(Be(e.label),e.label){var t=function(e){if(A)for(var t=0,r=A;t<r.length;t++){var n=r[t];if(n.name===e)return n}return}(e.label.escapedText);t&&(t.referenced=!0,ye(e,t.breakTarget,t.continueTarget))}else ye(e,S,T)}(t);break;case 239:!function(e){var t=ne(),r=D,n=[],i=c;(e.catchClause||e.finallyBlock)&&(c=function(e){return n.push(e),s(e)});Be(e.tryBlock),c=i,oe(t,D);var a=D,o=R;if(e.catchClause){if(D=r,n.length){var u=ne();oe(u,D);for(var l=0,_=n;l<_.length;l++){var d=_[l];oe(u,d)}D=_e(u)}Be(e.catchClause),oe(t,D),o=D}if(e.finallyBlock){var p=r;if(!e.catchClause&&n.length){var f=ne();oe(f,r);for(var m=0,g=n;m<g.length;m++){d=g[m];oe(f,d)}p=_e(f)}var y=s({flags:4096,antecedent:p,lock:{}});if(oe(t,y),D=_e(t),Be(e.finallyBlock),1&D.flags||1&a.flags&&1&o.flags&&(D=a===B||o===B?B:R),!(1&D.flags)){var h=c({flags:8192,antecedent:D});y.lock=h,D=h}}else D=_e(t)}(t);break;case 236:!function(t){var r=ne();Be(t.expression);var n=S,i=N;S=r,N=D,Be(t.caseBlock),oe(r,D);var a=e.forEach(t.caseBlock.clauses,(function(e){return 276===e.kind}));t.possiblyExhaustive=!a&&!r.antecedents,a||oe(r,ce(N,t,0,0));S=n,N=i,D=_e(r)}(t);break;case 250:!function(e){var t=j;j=0;for(var r=e.clauses,n=R,i=0;i<r.length;i++){for(var o=i;!r[i].statements.length&&i+1<r.length;)Be(r[i]),i++;var s=ne();oe(s,ce(N,e.parent,o,i+1)),oe(s,n),D=_e(s);var c=r[i];Be(c),n=D,1&D.flags||i===r.length-1||!a.noFallthroughCasesInSwitch||(c.fallthroughFlowNode=D)}r.transformFlags=536870912|j,j|=t}(t);break;case 275:!function(e){var t=D;D=N,Be(e.expression),D=t,X(e.statements)}(t);break;case 225:!function(t){if(Be(t.expression),195===t.expression.kind){var r=t.expression;e.isDottedName(r.expression)&&(D=function(e,t){return ae(e),c({flags:512,antecedent:e,node:t})}(D,r))}}(t);break;case 237:!function(t){var r=ie(),n=ne();Be(t.label),oe(r,D);var i=function(e,t,r){var n={name:e,breakTarget:t,continueTarget:r,referenced:!1};return(A||(A=[])).push(n),n}(t.label.escapedText,n,r);Be(t.statement),A.pop(),i.referenced||a.allowUnusedLabels||function(e,t,r){Re(e,t,t,r)}(e.unusedLabelIsError(a),t.label,e.Diagnostics.Unused_label);t.statement&&227===t.statement.kind||(oe(n,D),D=_e(n))}(t);break;case 206:!function(e){if(53===e.operator){var t=C;C=k,k=t,Q(e),k=C,C=t}else Q(e),45!==e.operator&&46!==e.operator||ve(e.operand)}(t);break;case 207:!function(e){Q(e),(45===e.operator||46===e.operator)&&ve(e.operand)}(t);break;case 208:!function(t){var r=t.operatorToken.kind;if(55===r||56===r||60===r)if(pe(t)){var n=ne();be(t,n,n),D=_e(n)}else be(t,C,k);else{if(Q(t),e.isAssignmentOperator(r)&&!e.isAssignmentTarget(t))if(ve(t.left),62===r&&194===t.left.kind)re(t.left.expression)&&(D=le(D,t))}}(t);break;case 202:!function(e){Q(e),193===e.expression.kind&&ve(e.expression)}(t);break;case 209:!function(e){var t=ne(),r=ne(),n=ne();me(e.condition,t,r),D=_e(t),Be(e.questionToken),Be(e.whenTrue),oe(n,D),D=_e(r),Be(e.colonToken),Be(e.whenFalse),oe(n,D),D=_e(n)}(t);break;case 241:!function(t){Q(t),(t.initializer||e.isForInOrOfStatement(t.parent.parent))&&function t(r){var n=e.isOmittedExpression(r)?void 0:r.name;if(e.isBindingPattern(n))for(var i=0,a=n.elements;i<a.length;i++){var o=a[i];t(o)}else D=ue(D,r)}(t)}(t);break;case 193:case 194:!function(t){e.isOptionalChain(t)?Te(t):Q(t)}(t);break;case 195:!function(t){if(e.isOptionalChain(t))Te(t);else{var r=e.skipParentheses(t.expression);200===r.kind||201===r.kind?(X(t.typeArguments),X(t.arguments),Be(t.expression)):Q(t)}if(193===t.expression.kind){var n=t.expression;re(n.expression)&&e.isPushOrUnshiftIdentifier(n.name)&&(D=le(D,t))}}(t);break;case 315:case 308:case 309:!function(e){e.tagName.parent=e,309!==e.kind&&e.fullName&&g(e,e.fullName)}(t);break;case 288:Y(t.statements),Be(t.endOfFileToken);break;case 222:case 249:Y(t.statements);break;default:Q(t)}je(t)}function Z(t){switch(t.kind){case 75:case 103:case 193:case 194:return ee(t);case 195:return function(e){if(e.arguments)for(var t=0,r=e.arguments;t<r.length;t++){if(ee(r[t]))return!0}if(193===e.expression.kind&&ee(e.expression.expression))return!0;return!1}(t);case 199:return Z(t.expression);case 208:return function(t){switch(t.operatorToken.kind){case 62:return ee(t.left);case 34:case 35:case 36:case 37:return re(t.left)||re(t.right)||te(t.right,t.left)||te(t.left,t.right);case 97:return re(t.left);case 96:return r=t.left,n=t.right,e.isStringLiteralLike(r)&&Z(n);case 27:return Z(t.right)}var r,n;return!1}(t);case 206:return 53===t.operator&&Z(t.operand);case 203:return Z(t.expression)}return!1}function ee(t){return 75===t.kind||103===t.kind||101===t.kind||(e.isPropertyAccessExpression(t)||e.isNonNullExpression(t)||e.isParenthesizedExpression(t))&&ee(t.expression)||e.isElementAccessExpression(t)&&e.isStringOrNumericLiteralLike(t.argumentExpression)&&ee(t.expression)||e.isOptionalChain(t)}function te(t,r){return e.isTypeOfExpression(t)&&re(t.expression)&&e.isStringLiteralLike(r)}function re(e){switch(e.kind){case 199:return re(e.expression);case 208:switch(e.operatorToken.kind){case 62:return re(e.left);case 27:return re(e.right)}}return ee(e)}function ne(){return s({flags:4,antecedents:void 0})}function ie(){return s({flags:8,antecedents:void 0})}function ae(e){e.flags|=1024&e.flags?2048:1024}function oe(t,r){1&r.flags||e.contains(t.antecedents,r)||((t.antecedents||(t.antecedents=[])).push(r),ae(r))}function se(t,r,n){return 1&r.flags?r:n?!(105===n.kind&&64&t||90===n.kind&&32&t)||e.isExpressionOfOptionalChainRoot(n)||e.isNullishCoalesce(n.parent)?Z(n)?(ae(r),c({flags:t,antecedent:r,node:n})):r:R:32&t?r:R}function ce(e,t,r,n){return Z(t.expression)?(ae(e),c({flags:128,antecedent:e,switchStatement:t,clauseStart:r,clauseEnd:n})):e}function ue(e,t){return ae(e),c({flags:16,antecedent:e,node:t})}function le(e,t){return ae(e),c({flags:256,antecedent:e,node:t})}function _e(e){var t=e.antecedents;return t?1===t.length?t[0]:e:R}function de(e){for(;;)if(199===e.kind)e=e.expression;else{if(206!==e.kind||53!==e.operator)return 208===e.kind&&(55===e.operatorToken.kind||56===e.operatorToken.kind||60===e.operatorToken.kind);e=e.operand}}function pe(t){for(;e.isParenthesizedExpression(t.parent)||e.isPrefixUnaryExpression(t.parent)&&53===t.parent.operator;)t=t.parent;return!(function(e){var t=e.parent;switch(t.kind){case 226:case 228:case 227:return t.expression===e;case 229:case 209:return t.condition===e}return!1}(t)||de(t.parent)||e.isOptionalChain(t.parent)&&t.parent.expression===t)}function fe(e,t,r,n){var i=C,a=k;C=r,k=n,e(t),C=i,k=a}function me(t,r,n){fe(Be,t,r,n),t&&(de(t)||e.isOptionalChain(t)&&xe(t))||(oe(r,se(32,D,t)),oe(n,se(64,D,t)))}function ge(e,t,r){var n=S,i=T;S=t,T=r,Be(e),S=n,T=i}function ye(e,t,r){var n=233===e.kind?t:r;n&&(oe(n,D),D=R)}function he(e){208===e.kind&&62===e.operatorToken.kind?ve(e.left):ve(e)}function ve(e){if(ee(e))D=ue(D,e);else if(191===e.kind)for(var t=0,r=e.elements;t<r.length;t++){var n=r[t];212===n.kind?ve(n.expression):he(n)}else if(192===e.kind)for(var i=0,a=e.properties;i<a.length;i++){var o=a[i];279===o.kind?he(o.initializer):280===o.kind?ve(o.name):281===o.kind&&ve(o.expression)}}function be(e,t,r){var n=ne();55===e.operatorToken.kind?me(e.left,n,r):me(e.left,t,n),D=_e(n),Be(e.operatorToken),me(e.right,t,r)}function xe(t){return!e.isOptionalChain(t.parent)||e.isOptionalChainRoot(t.parent)||t!==t.parent.expression}function De(e){switch(Be(e.questionDotToken),e.kind){case 193:Be(e.name);break;case 194:Be(e.argumentExpression);break;case 195:X(e.typeArguments),X(e.arguments)}}function Se(t,r,n){var i=t.questionDotToken?ne():void 0;!function(t,r,n){fe(Be,t,r,n),e.isOptionalChain(t)&&!xe(t)||(oe(r,se(32,D,t)),oe(n,se(64,D,t)))}(t.expression,i||r,n),i&&(D=_e(i)),fe(De,t,r,n),xe(t)&&(oe(r,se(32,D,t)),oe(n,se(64,D,t)))}function Te(e){if(pe(e)){var t=ne();Se(e,t,t),D=_e(t)}else Se(e,C,k)}function Ee(t){switch(t.kind){case 213:case 244:case 247:case 192:case 172:case 302:case 272:return 1;case 245:return 65;case 248:case 246:case 185:return 33;case 288:return 37;case 160:if(e.isObjectLiteralOrClassExpressionMethod(t))return 173;case 161:case 243:case 159:case 162:case 163:case 164:case 303:case 298:case 169:case 165:case 166:case 170:return 45;case 200:case 201:return 61;case 249:return 4;case 158:return t.initializer?4:0;case 278:case 229:case 230:case 231:case 250:return 2;case 222:return e.isFunctionLike(t.parent)?0:2}return 0}function Ce(e){v&&(v.nextContainer=e),v=e}function ke(t,r,i){switch(f.kind){case 248:return G(t,r,i);case 288:return function(t,r,i){return e.isExternalModule(n)?G(t,r,i):W(n.locals,void 0,t,r,i)}(t,r,i);case 213:case 244:return function(t,r,n){return e.hasModifier(t,32)?W(f.symbol.exports,f.symbol,t,r,n):W(f.symbol.members,f.symbol,t,r,n)}(t,r,i);case 247:return W(f.symbol.exports,f.symbol,t,r,i);case 172:case 302:case 192:case 245:case 272:return W(f.symbol.members,f.symbol,t,r,i);case 169:case 170:case 164:case 165:case 303:case 166:case 160:case 159:case 161:case 162:case 163:case 243:case 200:case 201:case 298:case 315:case 308:case 246:case 185:return W(f.locals,void 0,t,r,i)}}function Ne(t){8388608&t.flags&&!function(t){var r=e.isSourceFile(t)?t:e.tryCast(t.body,e.isModuleBlock);return!!r&&r.statements.some((function(t){return e.isExportDeclaration(t)||e.isExportAssignment(t)}))}(t)?t.flags|=64:t.flags&=-65}function Ae(e){var t=i(e),r=0!==t;return ke(e,r?512:1024,r?110735:0),t}function Fe(e,t,r){var n=J(t,r);return 106508&t&&(n.parent=f.symbol),z(n,e,t),n}function Pe(t,r,n){switch(h.kind){case 248:G(t,r,n);break;case 288:if(e.isExternalOrCommonJsModule(f)){G(t,r,n);break}default:h.locals||(h.locals=e.createSymbolTable(),Ce(h)),W(h.locals,void 0,t,r,n)}}function we(t){!(w&&t.originalKeywordKind>=112&&t.originalKeywordKind<=120)||e.isIdentifierName(t)||8388608&t.flags||4194304&t.flags||n.parseDiagnostics.length||n.bindDiagnostics.push(K(t,function(t){if(e.getContainingClass(t))return e.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Class_definitions_are_automatically_in_strict_mode;if(n.externalModuleIndicator)return e.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode_Modules_are_automatically_in_strict_mode;return e.Diagnostics.Identifier_expected_0_is_a_reserved_word_in_strict_mode}(t),e.declarationNameToString(t)))}function Ie(t,r){if(r&&75===r.kind){var i=r;if(function(t){return e.isIdentifier(t)&&("eval"===t.escapedText||"arguments"===t.escapedText)}(i)){var a=e.getErrorSpanForNode(n,r);n.bindDiagnostics.push(e.createFileDiagnostic(n,a.start,a.length,function(t){if(e.getContainingClass(t))return e.Diagnostics.Invalid_use_of_0_Class_definitions_are_automatically_in_strict_mode;if(n.externalModuleIndicator)return e.Diagnostics.Invalid_use_of_0_Modules_are_automatically_in_strict_mode;return e.Diagnostics.Invalid_use_of_0_in_strict_mode}(t),e.idText(i)))}}}function Oe(e){w&&Ie(e,e.name)}function Me(t){if(o<2&&288!==h.kind&&248!==h.kind&&!e.isFunctionLike(h)){var r=e.getErrorSpanForNode(n,t);n.bindDiagnostics.push(e.createFileDiagnostic(n,r.start,r.length,function(t){return e.getContainingClass(t)?e.Diagnostics.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Class_definitions_are_automatically_in_strict_mode:n.externalModuleIndicator?e.Diagnostics.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5_Modules_are_automatically_in_strict_mode:e.Diagnostics.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES3_or_ES5}(t)))}}function Le(t,r,i,a,o){var s=e.getSpanOfTokenAtPosition(n,t.pos);n.bindDiagnostics.push(e.createFileDiagnostic(n,s.start,s.length,r,i,a,o))}function Re(t,i,a,o){!function(t,i,a){var o=e.createFileDiagnostic(n,i.pos,i.end-i.pos,a);t?n.bindDiagnostics.push(o):n.bindSuggestionDiagnostics=e.append(n.bindSuggestionDiagnostics,r(r({},o),{category:e.DiagnosticCategory.Suggestion}))}(t,{pos:e.getTokenPosOfNode(i,n),end:a.end},o)}function Be(t){if(t){t.parent=u;var r=w;if(function(t){switch(t.kind){case 75:if(t.isInJSDocNamespace){for(var r=t.parent;r&&!e.isJSDocTypeAlias(r);)r=r.parent;Pe(r,524288,788968);break}case 103:return D&&(e.isExpression(t)||280===u.kind)&&(t.flowNode=D),we(t);case 193:case 194:var i=t;D&&ee(i)&&(i.flowNode=D),e.isSpecialPropertyDeclaration(i)&&function(t){103===t.expression.kind?qe(t):e.isBindableStaticAccessExpression(t)&&288===t.parent.parent.kind&&(e.isPrototypeAccess(t.expression)?He(t,t.parent):Ye(t))}(i),e.isInJSFile(i)&&n.commonJsModuleIndicator&&e.isModuleExportsAccessExpression(i)&&!d(h,"module")&&W(n.locals,void 0,i.expression,134217729,111550);break;case 208:switch(e.getAssignmentDeclarationKind(t)){case 1:Ve(t);break;case 2:!function(t){if(!Ue(t))return;var r=e.getRightMostAssignedExpression(t.right);if(e.isEmptyObjectLiteral(r)||f===n&&_(n,r))return;var i=e.exportAssignmentIsAlias(t)?2097152:1049092;U(W(n.symbol.exports,n.symbol,t,67108864|i,0),t)}(t);break;case 3:He(t.left,t);break;case 6:!function(e){e.left.parent=e,e.right.parent=e,Ze(e.left.expression,e.left,!1,!0)}(t);break;case 4:qe(t);break;case 5:!function(t){var r=et(t.left.expression);if(!e.isInJSFile(t)&&!e.isFunctionSymbol(r))return;if(t.left.parent=t,t.right.parent=t,e.isIdentifier(t.left.expression)&&f===n&&_(n,t.left.expression))Ve(t);else if(e.hasDynamicName(t)){Fe(t,67108868,"__computed");var i=Xe(r,t.left.expression,$e(t.left),!1,!1);Ge(t,i)}else Ye(e.cast(t.left,e.isBindableStaticAccessExpression))}(t);break;case 0:break;default:e.Debug.fail("Unknown binary expression special property assignment kind")}return function(t){w&&e.isLeftHandSideExpression(t.left)&&e.isAssignmentOperator(t.operatorToken.kind)&&Ie(t,t.left)}(t);case 278:return function(e){w&&e.variableDeclaration&&Ie(e,e.variableDeclaration.name)}(t);case 202:return function(t){if(w&&75===t.expression.kind){var r=e.getErrorSpanForNode(n,t.expression);n.bindDiagnostics.push(e.createFileDiagnostic(n,r.start,r.length,e.Diagnostics.delete_cannot_be_called_on_an_identifier_in_strict_mode))}}(t);case 8:return function(t){w&&32&t.numericLiteralFlags&&n.bindDiagnostics.push(K(t,e.Diagnostics.Octal_literals_are_not_allowed_in_strict_mode))}(t);case 207:return function(e){w&&Ie(e,e.operand)}(t);case 206:return function(e){w&&(45!==e.operator&&46!==e.operator||Ie(e,e.operand))}(t);case 235:return function(t){w&&Le(t,e.Diagnostics.with_statements_are_not_allowed_in_strict_mode)}(t);case 237:return function(t){w&&a.target>=2&&(e.isDeclarationStatement(t.statement)||e.isVariableStatement(t.statement))&&Le(t.label,e.Diagnostics.A_label_is_not_allowed_here)}(t);case 182:return void(x=!0);case 167:break;case 154:return function(t){if(e.isJSDocTemplateTag(t.parent)){var r=e.find(t.parent.parent.tags,e.isJSDocTypeAlias)||e.getHostSignatureFromJSDoc(t.parent);r?(r.locals||(r.locals=e.createSymbolTable()),W(r.locals,void 0,t,262144,526824)):ke(t,262144,526824)}else if(180===t.parent.kind){var n=function(t){var r=e.findAncestor(t,(function(t){return t.parent&&e.isConditionalTypeNode(t.parent)&&t.parent.extendsType===t}));return r&&r.parent}(t.parent);n?(n.locals||(n.locals=e.createSymbolTable()),W(n.locals,void 0,t,262144,526824)):Fe(t,262144,V(t))}else ke(t,262144,526824)}(t);case 155:return nt(t);case 241:return rt(t);case 190:return t.flowNode=D,rt(t);case 158:case 157:return function(e){return it(e,4|(e.questionToken?16777216:0),0)}(t);case 279:case 280:return it(t,4,0);case 282:return it(t,8,900095);case 164:case 165:case 166:return ke(t,131072,0);case 160:case 159:return it(t,8192|(t.questionToken?16777216:0),e.isObjectLiteralMethod(t)?0:103359);case 243:return function(t){n.isDeclarationFile||8388608&t.flags||e.isAsyncFunction(t)&&(P|=2048);Oe(t),w?(Me(t),Pe(t,16,110991)):ke(t,16,110991)}(t);case 161:return ke(t,16384,0);case 162:return it(t,32768,46015);case 163:return it(t,65536,78783);case 169:case 298:case 303:case 170:return function(t){var r=J(131072,V(t));z(r,t,131072);var n=J(2048,"__type");z(n,t,2048),n.members=e.createSymbolTable(),n.members.set(r.escapedName,r)}(t);case 172:case 302:case 185:return function(e){return Fe(e,2048,"__type")}(t);case 307:return function(t){Q(t);var r=e.getHostSignatureFromJSDoc(t);r&&160!==r.kind&&z(r.symbol,r,32)}(t);case 192:return function(t){var r;if(function(e){e[e.Property=1]="Property",e[e.Accessor=2]="Accessor"}(r||(r={})),w)for(var i=e.createUnderscoreEscapedMap(),a=0,o=t.properties;a<o.length;a++){var s=o[a];if(281!==s.kind&&75===s.name.kind){var c=s.name,u=279===s.kind||280===s.kind||160===s.kind?1:2,l=i.get(c.escapedText);if(l){if(1===u&&1===l){var _=e.getErrorSpanForNode(n,c);n.bindDiagnostics.push(e.createFileDiagnostic(n,_.start,_.length,e.Diagnostics.An_object_literal_cannot_have_multiple_properties_with_the_same_name_in_strict_mode))}}else i.set(c.escapedText,u)}}return Fe(t,4096,"__object")}(t);case 200:case 201:return function(t){n.isDeclarationFile||8388608&t.flags||e.isAsyncFunction(t)&&(P|=2048);D&&(t.flowNode=D);Oe(t);var r=t.name?t.name.escapedText:"__function";return Fe(t,16,r)}(t);case 195:switch(e.getAssignmentDeclarationKind(t)){case 7:return function(e){var t=et(e.arguments[0]),r=288===e.parent.parent.kind;t=Xe(t,e.arguments[0],r,!1,!1),Qe(e,t,!1)}(t);case 8:return function(e){if(!Ue(e))return;var t=tt(e.arguments[0],void 0,(function(e,t){return t&&z(t,e,67110400),t}));if(t){W(t.exports,t,e,1048580,0)}}(t);case 9:return function(e){var t=et(e.arguments[0].expression);t&&z(t,t.valueDeclaration,32);Qe(e,t,!0)}(t);case 0:break;default:return e.Debug.fail("Unknown call expression assignment declaration kind")}e.isInJSFile(t)&&function(t){!n.commonJsModuleIndicator&&e.isRequireCall(t,!1)&&Ue(t)}(t);break;case 213:case 244:return w=!0,function(t){if(244===t.kind)Pe(t,32,899503);else{var r=t.name?t.name.escapedText:"__class";Fe(t,32,r),t.name&&O.set(t.name.escapedText,!0)}var i=t.symbol,a=J(4194308,"prototype"),o=i.exports.get(a.escapedName);o&&(t.name&&(t.name.parent=t),n.bindDiagnostics.push(K(o.declarations[0],e.Diagnostics.Duplicate_identifier_0,e.symbolName(a))));i.exports.set(a.escapedName,a),a.parent=i}(t);case 245:return Pe(t,64,788872);case 246:return Pe(t,524288,788968);case 247:return function(t){return e.isEnumConst(t)?Pe(t,128,899967):Pe(t,256,899327)}(t);case 248:return function(t){if(Ne(t),e.isAmbientModule(t))if(e.hasModifier(t,1)&&Le(t,e.Diagnostics.export_modifier_cannot_be_applied_to_ambient_modules_and_module_augmentations_since_they_are_always_visible),e.isModuleAugmentationExternal(t))Ae(t);else{var r=void 0;if(10===t.name.kind){var i=t.name.text;e.hasZeroOrOneAsteriskCharacter(i)?r=e.tryParsePattern(i):Le(t.name,e.Diagnostics.Pattern_0_can_have_at_most_one_Asterisk_character,i)}var a=ke(t,512,110735);n.patternAmbientModules=e.append(n.patternAmbientModules,r&&{pattern:r,symbol:a})}else{var o=Ae(t);if(0!==o)(a=t.symbol).constEnumOnlyModule=!(304&a.flags)&&2===o&&!1!==a.constEnumOnlyModule}}(t);case 272:return function(e){return Fe(e,4096,"__jsxAttributes")}(t);case 271:return function(e,t,r){return ke(e,t,r)}(t,4,0);case 252:case 255:case 257:case 261:return ke(t,2097152,2097152);case 251:return function(t){t.modifiers&&t.modifiers.length&&n.bindDiagnostics.push(K(t,e.Diagnostics.Modifiers_cannot_appear_here));var r=e.isSourceFile(t.parent)?e.isExternalModule(t.parent)?t.parent.isDeclarationFile?void 0:e.Diagnostics.Global_module_exports_may_only_appear_in_declaration_files:e.Diagnostics.Global_module_exports_may_only_appear_in_module_files:e.Diagnostics.Global_module_exports_may_only_appear_at_top_level;r?n.bindDiagnostics.push(K(t,r)):(n.symbol.globalExports=n.symbol.globalExports||e.createSymbolTable(),W(n.symbol.globalExports,n.symbol,t,2097152,2097152))}(t);case 254:return function(e){e.name&&ke(e,2097152,2097152)}(t);case 259:return function(e){f.symbol&&f.symbol.exports?e.exportClause||W(f.symbol.exports,f.symbol,e,8388608,0):Fe(e,8388608,V(e))}(t);case 258:return function(t){if(f.symbol&&f.symbol.exports){var r=e.exportAssignmentIsAlias(t)?2097152:4,n=W(f.symbol.exports,f.symbol,t,r,67108863);t.isExportEquals&&U(n,t)}else Fe(t,2097152,V(t))}(t);case 288:return Ke(t.statements),function(){if(Ne(n),e.isExternalModule(n))ze();else if(e.isJsonSourceFile(n)){ze();var t=n.symbol;W(n.symbol.exports,n.symbol,n,4,67108863),n.symbol=t}}();case 222:if(!e.isFunctionLike(t.parent))return;case 249:return Ke(t.statements);case 310:if(303===t.parent.kind)return nt(t);if(302!==t.parent.kind)break;case 316:var o=t,s=o.isBracketed||o.typeExpression&&297===o.typeExpression.type.kind?16777220:4;return ke(o,s,0);case 315:case 308:case 309:(b||(b=[])).push(t)}}(t),t.kind>151){var i=u;u=t;var o=Ee(t);0===o?H(t):function(t,r){var n=f,i=y,a=h;if(1&r?(201!==t.kind&&(y=f),f=h=t,32&r&&(f.locals=e.createSymbolTable()),Ce(f)):2&r&&((h=t).locals=void 0),4&r){var o=c,u=D,l=S,_=T,d=E,p=A,m=F,g=16&r&&!e.hasModifier(t,256)&&!t.asteriskToken&&!!e.getImmediatelyInvokedFunctionExpression(t);g||(D=s({flags:2}),144&r&&(D.node=t)),E=g||161===t.kind?ne():void 0,S=void 0,T=void 0,A=void 0,F=!1,c=s,H(t),t.flags&=-2817,!(1&D.flags)&&8&r&&e.nodeIsPresent(t.body)&&(t.flags|=256,F&&(t.flags|=512),t.endFlowNode=D),288===t.kind&&(t.flags|=P),E&&(oe(E,D),D=_e(E),161===t.kind&&(t.returnFlowNode=D)),g||(D=u),S=l,T=_,E=d,A=p,F=m,c=o}else 64&r?(x=!1,H(t),t.flags=x?128|t.flags:-129&t.flags):H(t);f=n,y=i,h=a}(t,o),u=i}else if(!M&&0==(536870912&t.transformFlags)){j|=p(t,0);i=u;1===t.kind&&(u=t),je(t),u=i}w=r}}function je(t){if(e.hasJSDocNodes(t))if(e.isInJSFile(t))for(var r=0,n=t.jsDoc;r<n.length;r++){Be(n[r])}else for(var i=0,a=t.jsDoc;i<a.length;i++){g(t,a[i])}}function Ke(t){if(!w)for(var r=0,n=t;r<n.length;r++){var i=n[r];if(!e.isPrologueDirective(i))return;if(Je(i))return void(w=!0)}}function Je(t){var r=e.getSourceTextOfNodeFromSourceFile(n,t.expression);return'"use strict"'===r||"'use strict'"===r}function ze(){Fe(n,512,'"'+e.removeFileExtension(n.fileName)+'"')}function Ue(e){return!n.externalModuleIndicator&&(n.commonJsModuleIndicator||(n.commonJsModuleIndicator=e,ze()),!0)}function Ve(t){if(Ue(t)){var r=tt(t.left.expression,void 0,(function(e,t){return t&&z(t,e,67110400),t}));if(r){var n=e.isClassExpression(t.right)?1048612:1048580;W(r.exports,r,t.left,n,0)}}}function qe(t){e.Debug.assert(e.isInJSFile(t));var r=e.getThisContainer(t,!1);switch(r.kind){case 243:case 200:var n=r.symbol;if(e.isBinaryExpression(r.parent)&&62===r.parent.operatorToken.kind){var i=r.parent.left;e.isBindableStaticAccessExpression(i)&&e.isPrototypeAccess(i.expression)&&(n=et(i.expression.expression,y))}n&&n.valueDeclaration&&(n.members=n.members||e.createSymbolTable(),e.hasDynamicName(t)?We(t,n):W(n.members,n,t,67108868,0),z(n,n.valueDeclaration,32));break;case 161:case 158:case 160:case 162:case 163:var a=r.parent,o=e.hasModifier(r,32)?a.symbol.exports:a.symbol.members;e.hasDynamicName(t)?We(t,a.symbol):W(o,a.symbol,t,67108868,0,!0);break;case 288:r.commonJsModuleIndicator?W(r.symbol.exports,r.symbol,t,1048580,0):ke(t,1,111550);break;default:e.Debug.failBadSyntaxKind(r)}}function We(e,t){Fe(e,4,"__computed"),Ge(e,t)}function Ge(t,r){r&&(r.assignmentDeclarationMembers||(r.assignmentDeclarationMembers=e.createMap())).set(""+e.getNodeId(t),t)}function He(e,t){var r=e.expression,n=r.expression;e.parent=t,n.parent=r,r.parent=e,Ze(n,e,!0,!0)}function Ye(e){e.expression.parent=e,Ze(e.expression,e,!1,!1)}function Xe(t,r,i,a,o){if(i&&!a){t=tt(r,t,(function(t,r,i){return r?(z(r,t,67110400),r):W(i?i.exports:n.jsGlobalAugmentations||(n.jsGlobalAugmentations=e.createSymbolTable()),i,t,67110400,110735)}))}return o&&t&&t.valueDeclaration&&z(t,t.valueDeclaration,32),t}function Qe(t,r,n){if(r&&function(t){if(1072&t.flags)return!0;var r=t.valueDeclaration;if(r&&e.isCallExpression(r))return!!e.getAssignedExpandoInitializer(r);var n=r?e.isVariableDeclaration(r)?r.initializer:e.isBinaryExpression(r)?r.right:e.isPropertyAccessExpression(r)&&e.isBinaryExpression(r.parent)?r.parent.right:void 0:void 0;if(n=n&&e.getRightMostAssignedExpression(n)){var i=e.isPrototypeAccess(e.isVariableDeclaration(r)?r.name:e.isBinaryExpression(r)?r.left:r);return!!e.getExpandoInitializer(!e.isBinaryExpression(n)||56!==n.operatorToken.kind&&60!==n.operatorToken.kind?n:n.right,i)}return!1}(r)){var i=n?r.members||(r.members=e.createSymbolTable()):r.exports||(r.exports=e.createSymbolTable()),a=0,o=0;e.isFunctionLikeDeclaration(e.getAssignedExpandoInitializer(t))?(a=8192,o=103359):e.isCallExpression(t)&&e.isBindableObjectDefinePropertyCall(t)&&(e.some(t.arguments[2].properties,(function(t){var r=e.getNameOfDeclaration(t);return!!r&&e.isIdentifier(r)&&"set"===e.idText(r)}))&&(a|=65540,o|=78783),e.some(t.arguments[2].properties,(function(t){var r=e.getNameOfDeclaration(t);return!!r&&e.isIdentifier(r)&&"get"===e.idText(r)}))&&(a|=32772,o|=46015)),0===a&&(a=4,o=0),W(i,r,t,67108864|a,-67108865&o)}}function $e(t){return e.isBinaryExpression(t.parent)?288===function(t){for(;e.isBinaryExpression(t.parent);)t=t.parent;return t.parent}(t.parent).parent.kind:288===t.parent.parent.kind}function Ze(e,t,r,n){var i=et(e),a=$e(t);Qe(t,i=Xe(i,t.expression,a,r,n),r)}function et(t,r){if(void 0===r&&(r=f),e.isIdentifier(t))return d(r,t.escapedText);var n=et(t.expression);return n&&n.exports&&n.exports.get(e.getElementOrPropertyAccessName(t))}function tt(t,r,i){if(_(n,t))return n.symbol;if(e.isIdentifier(t))return i(t,et(t),r);var a=tt(t.expression,r,i);return i(e.getNameOrArgument(t),a&&a.exports&&a.exports.get(e.getElementOrPropertyAccessName(t)),a)}function rt(t){w&&Ie(t,t.name),e.isBindingPattern(t.name)||(e.isBlockOrCatchScoped(t)?Pe(t,2,111551):e.isParameterDeclaration(t)?ke(t,1,111551):ke(t,1,111550))}function nt(t){if((310!==t.kind||303===f.kind)&&(!w||8388608&t.flags||Ie(t,t.name),e.isBindingPattern(t.name)?Fe(t,1,"__"+t.parent.parameters.indexOf(t)):ke(t,1,111551),e.isParameterPropertyDeclaration(t,t.parent))){var r=t.parent.parent;W(r.symbol.members,r.symbol,t,4|(t.questionToken?16777216:0),0)}}function it(t,r,i){return n.isDeclarationFile||8388608&t.flags||!e.isAsyncFunction(t)||(P|=2048),D&&e.isObjectLiteralOrClassExpressionMethod(t)&&(t.flowNode=D),e.hasDynamicName(t)?Fe(t,r,"__computed"):ke(t,r,i)}}();function l(t){return!(e.isFunctionDeclaration(t)||function(t){switch(t.kind){case 245:case 246:return!0;case 248:return 1!==i(t);case 247:return e.hasModifier(t,2048);default:return!1}}(t)||e.isEnumDeclaration(t)||e.isVariableStatement(t)&&!(3&e.getCombinedNodeFlags(t))&&t.declarationList.declarations.some((function(e){return!e.initializer})))}function _(t,r){for(var n=0,i=[r];i.length&&n<100;){if(n++,r=i.shift(),e.isExportsIdentifier(r)||e.isModuleExportsAccessExpression(r))return!0;if(e.isIdentifier(r)){var a=d(t,r.escapedText);if(a&&a.valueDeclaration&&e.isVariableDeclaration(a.valueDeclaration)&&a.valueDeclaration.initializer){var o=a.valueDeclaration.initializer;i.push(o),e.isAssignmentExpression(o,!0)&&(i.push(o.left),i.push(o.right))}}}return!1}function d(t,r){var n=t.locals&&t.locals.get(r);return n?n.exportSymbol||n:e.isSourceFile(t)&&t.jsGlobalAugmentations&&t.jsGlobalAugmentations.has(r)?t.jsGlobalAugmentations.get(r):t.symbol&&t.symbol.exports&&t.symbol.exports.get(r)}function p(t,r){var n=t.kind;switch(n){case 195:return function(t,r){var n=r,i=e.skipOuterExpressions(t.expression),a=t.expression;32&t.flags&&(n|=4);t.typeArguments&&(n|=1);(4096&r||e.isSuperOrSuperProperty(i))&&(n|=128,e.isSuperProperty(i)&&(n|=2048));95===a.kind&&(n|=524288);return t.transformFlags=536870912|n,-536875009&n}(t,r);case 196:return function(e,t){var r=t;e.typeArguments&&(r|=1);4096&t&&(r|=128);return e.transformFlags=536870912|r,-536875009&r}(t,r);case 248:return function(t,r){var n=1;0==(2&e.getModifierFlags(t))&&(n|=r);return t.transformFlags=536870912|n,-537168897&n}(t,r);case 199:return function(e,t){var r=t,n=e.expression.kind;216!==n&&198!==n||(r|=1);return e.transformFlags=536870912|r,-536870913&r}(t,r);case 208:return function(e,t){var r=t,n=e.operatorToken.kind,i=e.left.kind;60===n?r|=4:62===n&&192===i?r|=656:62===n&&191===i?r|=640:42!==n&&66!==n||(r|=64);return e.transformFlags=536870912|r,-536870913&r}(t,r);case 225:return function(e,t){var r=t;return e.transformFlags=536870912|r,-536870913&r}(t,r);case 155:return function(t,r){var n=r,i=t.name,a=t.initializer,o=t.dotDotDotToken;(t.questionToken||t.type||1024&r&&e.some(t.decorators)||e.isThisIdentifier(i))&&(n|=1);e.hasModifier(t,92)&&(n|=1025);8192&r&&(n|=16);(65536&r||a||o)&&(n|=128);return t.transformFlags=536870912|n,-536870913&n}(t,r);case 201:return function(t,r){var n=128|r;(e.hasModifier(t,2270)||t.typeParameters||t.type)&&(n|=1);e.hasModifier(t,256)&&(n|=32);8192&r&&(n|=16);return t.transformFlags=536870912|n,-537371649&n}(t,r);case 200:return function(t,r){var n=r;(e.hasModifier(t,2270)||t.typeParameters||t.type)&&(n|=1);e.hasModifier(t,256)&&(n|=t.asteriskToken?16:32);8192&r&&(n|=16);t.asteriskToken&&(n|=256);return t.transformFlags=536870912|n,-537373697&n}(t,r);case 243:return function(t,r){var n,i=e.getModifierFlags(t);!t.body||2&i?n=1:(n=262144|r,(2270&i||t.typeParameters||t.type)&&(n|=1),256&i&&(n|=t.asteriskToken?16:32),8192&r&&(n|=16),t.asteriskToken&&(n|=256));return t.transformFlags=536870912|n,-537373697&n}(t,r);case 241:return function(e,t){var r=t;r|=65664,8192&t&&(r|=16);e.type&&(r|=1);return e.transformFlags=536870912|r,-536870913&r}(t,r);case 242:return function(e,t){var r=262144|t;65536&t&&(r|=128);3&e.flags&&(r|=32896);return e.transformFlags=536870912|r,-536944641&r}(t,r);case 224:return function(t,r){var n,i=t.declarationList.transformFlags;e.hasModifier(t,2)?n=1:(n=r,65536&i&&(n|=128));return t.transformFlags=536870912|n,-536870913&n}(t,r);case 237:return function(t,r){var n=r;32768&r&&e.isIterationStatement(t,!0)&&(n|=128);return t.transformFlags=536870912|n,-536870913&n}(t,r);case 244:return function(t,r){var n;e.hasModifier(t,2)?n=1:(n=128|r,(1024&r||t.typeParameters)&&(n|=1));return t.transformFlags=536870912|n,-536888321&n}(t,r);case 213:return function(e,t){var r=128|t;(1024&t||e.typeParameters)&&(r|=1);return e.transformFlags=536870912|r,-536888321&r}(t,r);case 277:return function(t,r){var n=r;switch(t.token){case 89:n|=128;break;case 112:n|=1;break;default:e.Debug.fail("Unexpected token for heritage clause")}return t.transformFlags=536870912|n,-536870913&n}(t,r);case 278:return function(t,r){var n=r;t.variableDeclaration?e.isBindingPattern(t.variableDeclaration.name)&&(n|=128):n|=8;return t.transformFlags=536870912|n,-536879105&n}(t,r);case 215:return function(e,t){var r=128|t;e.typeArguments&&(r|=1);return e.transformFlags=536870912|r,-536870913&r}(t,r);case 161:return function(t,r){var n=r;!e.hasModifier(t,2270)&&t.body||(n|=1);8192&r&&(n|=16);return t.transformFlags=536870912|n,-537372673&n}(t,r);case 158:return function(t,r){var n=1048576|r;(e.some(t.decorators)||e.hasModifier(t,2270)||t.type)&&(n|=1);(e.isComputedPropertyName(t.name)||e.hasStaticModifier(t)&&t.initializer)&&(n|=1024);return t.transformFlags=536870912|n,f(t.name,-536872961&n)}(t,r);case 160:return function(t,r){var n=128|r;(t.decorators||e.hasModifier(t,2270)||t.typeParameters||t.type||!t.body)&&(n|=1);8192&r&&(n|=16);e.hasModifier(t,256)&&(n|=t.asteriskToken?16:32);t.asteriskToken&&(n|=256);return t.transformFlags=536870912|n,f(t.name,-537372673&n)}(t,r);case 162:case 163:return function(t,r){var n=r;(t.decorators||e.hasModifier(t,2270)||t.type||!t.body)&&(n|=1);8192&r&&(n|=16);return t.transformFlags=536870912|n,f(t.name,-537372673&n)}(t,r);case 252:return function(t,r){var n=r;e.isExternalModuleImportEqualsDeclaration(t)||(n|=1);return t.transformFlags=536870912|n,-536870913&n}(t,r);case 193:case 194:return function(e,t){var r=t;32&e.flags&&(r|=4);101===e.expression.kind&&(r|=48);return e.transformFlags=536870912|r,-536870913&r}(t,r);default:return function(e,t,r){var n=r,i=536870912;switch(t){case 125:case 205:n|=48;break;case 198:case 216:case 319:n|=1,i=536870912;break;case 118:case 116:case 117:case 121:case 129:case 80:case 247:case 282:case 217:case 137:n|=1;break;case 264:case 265:case 266:case 11:case 267:case 268:case 269:case 270:case 271:case 272:case 273:case 274:n|=2;break;case 14:case 15:case 16:case 17:case 210:case 197:case 280:case 119:case 218:n|=128;break;case 10:e.hasExtendedUnicodeEscape&&(n|=128);break;case 8:384&e.numericLiteralFlags&&(n|=128);break;case 9:n|=4;break;case 231:e.awaitModifier&&(n|=16),n|=128;break;case 211:n|=131216;break;case 124:case 139:case 150:case 136:case 140:case 142:case 127:case 143:case 109:case 154:case 157:case 159:case 164:case 165:case 166:case 167:case 168:case 169:case 170:case 171:case 172:case 173:case 174:case 175:case 176:case 177:case 178:case 179:case 180:case 181:case 245:case 246:case 182:case 183:case 184:case 185:case 186:case 251:n=1,i=-2;break;case 153:n|=16384;break;case 212:n|=4224;break;case 281:n|=8208;break;case 101:n|=128,i=536870912;break;case 103:n|=2048;break;case 188:n|=65664,4096&r&&(n|=8208),i=536875008;break;case 189:n|=65664,i=536875008;break;case 190:n|=128,e.dotDotDotToken&&(n|=4096);break;case 156:n|=1025;break;case 192:i=536896512,16384&r&&(n|=128),8192&r&&(n|=16);break;case 191:i=536875008;break;case 227:case 228:case 229:case 230:32768&r&&(n|=128);break;case 288:break;case 234:n|=262160;break;case 232:case 233:n|=262144}return e.transformFlags=536870912|n,n&~i}(t,n,r)}}function f(e,t){return t|2048&e.transformFlags}function m(e){if(e>=167&&e<=187)return-2;switch(e){case 195:case 196:case 191:return 536875008;case 248:return 537168896;case 155:return 536870912;case 201:return 537371648;case 200:case 243:return 537373696;case 242:return 536944640;case 244:case 213:return 536888320;case 161:return 537372672;case 160:case 162:case 163:return 537372672;case 124:case 139:case 150:case 136:case 142:case 140:case 127:case 143:case 109:case 154:case 157:case 159:case 164:case 165:case 166:case 245:case 246:return-2;case 192:return 536896512;case 278:return 536879104;case 188:case 189:return 536875008;case 198:case 216:case 319:case 199:case 101:return 536870912;case 193:case 194:default:return 536870912}}function g(t,r){r.parent=t,e.forEachChild(r,(function(e){return g(r,e)}))}e.bindSourceFile=function(t,r){e.performance.mark("beforeBind"),e.perfLogger.logStartBindFile(""+t.fileName),u(t,r),e.perfLogger.logStopBindFile(),e.performance.mark("afterBind"),e.performance.measure("Bind","beforeBind","afterBind")},e.isExportsOrModuleExportsOrAlias=_,e.computeTransformFlagsForNode=p,e.getTransformFlagsSubtreeExclusions=m}(s||(s={})),function(e){e.createGetSymbolWalker=function(t,r,n,i,a,o,s,c,u,l,_){return function(d){void 0===d&&(d=function(){return!0});var p=[],f=[];return{walkType:function(t){try{return m(t),{visitedTypes:e.getOwnValues(p),visitedSymbols:e.getOwnValues(f)}}finally{e.clear(p),e.clear(f)}},walkSymbol:function(t){try{return h(t),{visitedTypes:e.getOwnValues(p),visitedSymbols:e.getOwnValues(f)}}finally{e.clear(p),e.clear(f)}}};function m(t){if(t&&(!p[t.id]&&(p[t.id]=t,!h(t.symbol)))){if(524288&t.flags){var r=t,n=r.objectFlags;4&n&&function(t){m(t.target),e.forEach(_(t),m)}(t),32&n&&function(e){m(e.typeParameter),m(e.constraintType),m(e.templateType),m(e.modifiersType)}(t),3&n&&(y(a=t),e.forEach(a.typeParameters,m),e.forEach(i(a),m),m(a.thisType)),24&n&&y(r)}var a;262144&t.flags&&function(e){m(u(e))}(t),3145728&t.flags&&function(t){e.forEach(t.types,m)}(t),4194304&t.flags&&function(e){m(e.type)}(t),8388608&t.flags&&function(e){m(e.objectType),m(e.indexType),m(e.constraint)}(t)}}function g(i){var a=r(i);a&&m(a.type),e.forEach(i.typeParameters,m);for(var o=0,s=i.parameters;o<s.length;o++){h(s[o])}m(t(i)),m(n(i))}function y(e){m(c(e,0)),m(c(e,1));for(var t=a(e),r=0,n=t.callSignatures;r<n.length;r++){g(n[r])}for(var i=0,o=t.constructSignatures;i<o.length;i++){g(o[i])}for(var s=0,u=t.properties;s<u.length;s++){h(u[s])}}function h(t){if(!t)return!1;var r=e.getSymbolId(t);return!f[r]&&(f[r]=t,!d(t)||(m(o(t)),t.exports&&t.exports.forEach(h),e.forEach(t.declarations,(function(e){if(e.type&&171===e.type.kind){var t=e.type;h(s(l(t.exprName)))}})),!1))}}}}(s||(s={})),function(e){var n,a,o,s,c=/^".+"$/,u=1,l=1,_=1,d=1;!function(e){e[e.AllowsSyncIterablesFlag=1]="AllowsSyncIterablesFlag",e[e.AllowsAsyncIterablesFlag=2]="AllowsAsyncIterablesFlag",e[e.AllowsStringInputFlag=4]="AllowsStringInputFlag",e[e.ForOfFlag=8]="ForOfFlag",e[e.YieldStarFlag=16]="YieldStarFlag",e[e.SpreadFlag=32]="SpreadFlag",e[e.DestructuringFlag=64]="DestructuringFlag",e[e.Element=1]="Element",e[e.Spread=33]="Spread",e[e.Destructuring=65]="Destructuring",e[e.ForOf=13]="ForOf",e[e.ForAwaitOf=15]="ForAwaitOf",e[e.YieldStar=17]="YieldStar",e[e.AsyncYieldStar=19]="AsyncYieldStar",e[e.GeneratorReturnType=1]="GeneratorReturnType",e[e.AsyncGeneratorReturnType=2]="AsyncGeneratorReturnType"}(n||(n={})),function(e){e[e.Yield=0]="Yield",e[e.Return=1]="Return",e[e.Next=2]="Next"}(a||(a={})),function(e){e[e.Normal=0]="Normal",e[e.GeneratorYield=1]="GeneratorYield"}(o||(o={})),function(e){e[e.None=0]="None",e[e.TypeofEQString=1]="TypeofEQString",e[e.TypeofEQNumber=2]="TypeofEQNumber",e[e.TypeofEQBigInt=4]="TypeofEQBigInt",e[e.TypeofEQBoolean=8]="TypeofEQBoolean",e[e.TypeofEQSymbol=16]="TypeofEQSymbol",e[e.TypeofEQObject=32]="TypeofEQObject",e[e.TypeofEQFunction=64]="TypeofEQFunction",e[e.TypeofEQHostObject=128]="TypeofEQHostObject",e[e.TypeofNEString=256]="TypeofNEString",e[e.TypeofNENumber=512]="TypeofNENumber",e[e.TypeofNEBigInt=1024]="TypeofNEBigInt",e[e.TypeofNEBoolean=2048]="TypeofNEBoolean",e[e.TypeofNESymbol=4096]="TypeofNESymbol",e[e.TypeofNEObject=8192]="TypeofNEObject",e[e.TypeofNEFunction=16384]="TypeofNEFunction",e[e.TypeofNEHostObject=32768]="TypeofNEHostObject",e[e.EQUndefined=65536]="EQUndefined",e[e.EQNull=131072]="EQNull",e[e.EQUndefinedOrNull=262144]="EQUndefinedOrNull",e[e.NEUndefined=524288]="NEUndefined",e[e.NENull=1048576]="NENull",e[e.NEUndefinedOrNull=2097152]="NEUndefinedOrNull",e[e.Truthy=4194304]="Truthy",e[e.Falsy=8388608]="Falsy",e[e.All=16777215]="All",e[e.BaseStringStrictFacts=3735041]="BaseStringStrictFacts",e[e.BaseStringFacts=12582401]="BaseStringFacts",e[e.StringStrictFacts=16317953]="StringStrictFacts",e[e.StringFacts=16776705]="StringFacts",e[e.EmptyStringStrictFacts=12123649]="EmptyStringStrictFacts",e[e.EmptyStringFacts=12582401]="EmptyStringFacts",e[e.NonEmptyStringStrictFacts=7929345]="NonEmptyStringStrictFacts",e[e.NonEmptyStringFacts=16776705]="NonEmptyStringFacts",e[e.BaseNumberStrictFacts=3734786]="BaseNumberStrictFacts",e[e.BaseNumberFacts=12582146]="BaseNumberFacts",e[e.NumberStrictFacts=16317698]="NumberStrictFacts",e[e.NumberFacts=16776450]="NumberFacts",e[e.ZeroNumberStrictFacts=12123394]="ZeroNumberStrictFacts",e[e.ZeroNumberFacts=12582146]="ZeroNumberFacts",e[e.NonZeroNumberStrictFacts=7929090]="NonZeroNumberStrictFacts",e[e.NonZeroNumberFacts=16776450]="NonZeroNumberFacts",e[e.BaseBigIntStrictFacts=3734276]="BaseBigIntStrictFacts",e[e.BaseBigIntFacts=12581636]="BaseBigIntFacts",e[e.BigIntStrictFacts=16317188]="BigIntStrictFacts",e[e.BigIntFacts=16775940]="BigIntFacts",e[e.ZeroBigIntStrictFacts=12122884]="ZeroBigIntStrictFacts",e[e.ZeroBigIntFacts=12581636]="ZeroBigIntFacts",e[e.NonZeroBigIntStrictFacts=7928580]="NonZeroBigIntStrictFacts",e[e.NonZeroBigIntFacts=16775940]="NonZeroBigIntFacts",e[e.BaseBooleanStrictFacts=3733256]="BaseBooleanStrictFacts",e[e.BaseBooleanFacts=12580616]="BaseBooleanFacts",e[e.BooleanStrictFacts=16316168]="BooleanStrictFacts",e[e.BooleanFacts=16774920]="BooleanFacts",e[e.FalseStrictFacts=12121864]="FalseStrictFacts",e[e.FalseFacts=12580616]="FalseFacts",e[e.TrueStrictFacts=7927560]="TrueStrictFacts",e[e.TrueFacts=16774920]="TrueFacts",e[e.SymbolStrictFacts=7925520]="SymbolStrictFacts",e[e.SymbolFacts=16772880]="SymbolFacts",e[e.ObjectStrictFacts=7888800]="ObjectStrictFacts",e[e.ObjectFacts=16736160]="ObjectFacts",e[e.FunctionStrictFacts=7880640]="FunctionStrictFacts",e[e.FunctionFacts=16728e3]="FunctionFacts",e[e.UndefinedFacts=9830144]="UndefinedFacts",e[e.NullFacts=9363232]="NullFacts",e[e.EmptyObjectStrictFacts=16318463]="EmptyObjectStrictFacts",e[e.EmptyObjectFacts=16777215]="EmptyObjectFacts"}(s||(s={}));var p,m,g,y,h,v,b,x,D=e.createMapFromTemplate({string:1,number:2,bigint:4,boolean:8,symbol:16,undefined:65536,object:32,function:64}),S=e.createMapFromTemplate({string:256,number:512,bigint:1024,boolean:2048,symbol:4096,undefined:524288,object:8192,function:16384});!function(e){e[e.Type=0]="Type",e[e.ResolvedBaseConstructorType=1]="ResolvedBaseConstructorType",e[e.DeclaredType=2]="DeclaredType",e[e.ResolvedReturnType=3]="ResolvedReturnType",e[e.ImmediateBaseConstraint=4]="ImmediateBaseConstraint",e[e.EnumTagType=5]="EnumTagType",e[e.JSDocTypeReference=6]="JSDocTypeReference",e[e.ResolvedTypeArguments=7]="ResolvedTypeArguments"}(p||(p={})),function(e){e[e.Normal=0]="Normal",e[e.Contextual=1]="Contextual",e[e.Inferential=2]="Inferential",e[e.SkipContextSensitive=4]="SkipContextSensitive",e[e.SkipGenericFunctions=8]="SkipGenericFunctions",e[e.IsForSignatureHelp=16]="IsForSignatureHelp"}(m||(m={})),function(e){e[e.None=0]="None",e[e.NoIndexSignatures=1]="NoIndexSignatures",e[e.Writing=2]="Writing",e[e.CacheSymbol=4]="CacheSymbol",e[e.NoTupleBoundsCheck=8]="NoTupleBoundsCheck"}(g||(g={})),function(e){e[e.None=0]="None",e[e.Bivariant=1]="Bivariant",e[e.Strict=2]="Strict"}(y||(y={})),function(e){e[e.IncludeReadonly=1]="IncludeReadonly",e[e.ExcludeReadonly=2]="ExcludeReadonly",e[e.IncludeOptional=4]="IncludeOptional",e[e.ExcludeOptional=8]="ExcludeOptional"}(h||(h={})),function(e){e[e.None=0]="None",e[e.Source=1]="Source",e[e.Target=2]="Target",e[e.Both=3]="Both"}(v||(v={})),function(e){e.resolvedExports="resolvedExports",e.resolvedMembers="resolvedMembers"}(b||(b={})),function(e){e[e.Local=0]="Local",e[e.Parameter=1]="Parameter"}(x||(x={}));var T,E,C,k=e.and(P,(function(t){return!e.isAccessor(t)}));function N(e){return e.id||(e.id=l,l++),e.id}function A(e){return e.id||(e.id=u,u++),e.id}function F(t,r){var n=e.getModuleInstanceState(t);return 1===n||r&&2===n}function P(e){return 243!==e.kind&&160!==e.kind||!!e.body}function w(t){switch(t.parent.kind){case 257:case 261:return e.isIdentifier(t);default:return e.isDeclarationName(t)}}function I(e){switch(e.kind){case 254:case 252:case 255:case 257:return!0;case 75:return 257===e.parent.kind;default:return!1}}function O(e){switch(e){case 0:return"yieldType";case 1:return"returnType";case 2:return"nextType"}}function M(e){return!!(1&e.flags)}function L(e){return!!(2&e.flags)}function R(e){return!!(4&e.flags)}!function(e){e[e.GetAccessor=1]="GetAccessor",e[e.SetAccessor=2]="SetAccessor",e[e.PropertyAssignment=4]="PropertyAssignment",e[e.Method=8]="Method",e[e.GetOrSetAccessor=3]="GetOrSetAccessor",e[e.PropertyAssignmentOrMethod=12]="PropertyAssignmentOrMethod"}(T||(T={})),function(e){e[e.None=0]="None",e[e.ExportValue=1]="ExportValue",e[e.ExportType=2]="ExportType",e[e.ExportNamespace=4]="ExportNamespace"}(E||(E={})),e.getNodeId=N,e.getSymbolId=A,e.isInstantiatedModule=F,e.createTypeChecker=function(n,a){var o,s,u,l,p=e.memoize((function(){var t=e.createMap();return n.getSourceFiles().forEach((function(r){r.resolvedModules&&e.forEachEntry(r.resolvedModules,(function(e){e&&e.packageId&&t.set(e.packageId.name,!0)}))})),t})),m=e.objectAllocator.getSymbolConstructor(),g=e.objectAllocator.getTypeConstructor(),y=e.objectAllocator.getSignatureConstructor(),h=0,v=0,b=0,x=0,T=0,E=0,B=e.createSymbolTable(),j=e.identity,K=n.getCompilerOptions(),J=e.getEmitScriptTarget(K),z=e.getEmitModuleKind(K),U=e.getAllowSyntheticDefaultImports(K),V=e.getStrictOptionValue(K,"strictNullChecks"),q=e.getStrictOptionValue(K,"strictFunctionTypes"),W=e.getStrictOptionValue(K,"strictBindCallApply"),G=e.getStrictOptionValue(K,"strictPropertyInitialization"),H=e.getStrictOptionValue(K,"noImplicitAny"),Y=e.getStrictOptionValue(K,"noImplicitThis"),X=!!K.keyofStringsOnly,Q=K.suppressExcessPropertyErrors?0:32768,$=function(){var t,r=n.getResolvedTypeReferenceDirectives();r&&(t=e.createMap(),r.forEach((function(r,i){r&&r.resolvedFileName&&function r(i,a){if(t.has(i.path))return;t.set(i.path,a);for(var o=0,s=i.referencedFiles;o<s.length;o++){var c=s[o].fileName,u=e.resolveTripleslashReference(c,i.originalFileName),l=n.getSourceFile(u);l&&r(l,a)}}(n.getSourceFile(r.resolvedFileName),i)})));return{getReferencedExportContainer:hb,getReferencedImportDeclaration:vb,getReferencedDeclarationWithCollidingName:xb,isDeclarationWithCollidingName:Db,isValueAliasDeclaration:function(t){return!(t=e.getParseTreeNode(t))||Sb(t)},hasGlobalName:Jb,isReferencedAliasDeclaration:function(t,r){return!(t=e.getParseTreeNode(t))||function t(r,n){if(e.isAliasSymbolDeclaration(r)){var i=ri(r);if(i&&_n(i).referenced)return!0;var a=_n(i).target;if(a&&1&e.getModifierFlags(r)&&111551&a.flags&&(K.preserveConstEnums||!Cb(a)))return!0}if(n)return!!e.forEachChild(r,(function(e){return t(e,n)}));return!1}(t,r)},getNodeCheckFlags:function(t){return(t=e.getParseTreeNode(t))?wb(t):0},isTopLevelValueImportEqualsWithEntityName:Tb,isDeclarationVisible:Ui,isImplementationOfOverload:kb,isRequiredInitializedParameter:Nb,isOptionalUninitializedParameterProperty:Ab,isExpandoFunctionDeclaration:Fb,getPropertiesOfContainerFunction:Pb,createTypeOfDeclaration:Bb,createReturnTypeOfSignatureDeclaration:jb,createTypeOfExpression:Kb,createLiteralConstValue:qb,isSymbolAccessible:Ei,isEntityNameVisible:Fi,getConstantValue:function(t){var r=e.getParseTreeNode(t,Ob);return r?Mb(r):void 0},collectLinkedAliases:Vi,getReferencedValueDeclaration:Ub,getTypeReferenceSerializationKind:Rb,isOptionalParameter:Ps,moduleExportsSomeValue:yb,isArgumentsLocalBinding:gb,getExternalModuleFileFromDeclaration:Wb,getTypeReferenceDirectivesForEntityName:function(e){if(!t)return;var r=790504;(75===e.kind&&Md(e)||193===e.kind&&!function(e){return e.parent&&215===e.parent.kind&&e.parent.parent&&277===e.parent.parent.kind}(e))&&(r=1160127);var n=Kn(e,r,!0);return n&&n!==ge?i(n,r):void 0},getTypeReferenceDirectivesForSymbol:i,isLiteralConstDeclaration:Vb,isLateBound:function(t){var r=e.getParseTreeNode(t,e.isDeclaration),n=r&&ri(r);return!!(n&&4096&e.getCheckFlags(n))},getJsxFactoryEntity:function(t){return t?(Yr(t),e.getSourceFileOfNode(t).localJsxFactory||Ht):Ht},getAllAccessorDeclarations:function(t){var r=163===(t=e.getParseTreeNode(t,e.isGetOrSetAccessorDeclaration)).kind?162:163,n=e.getDeclarationOfKind(ri(t),r);return{firstAccessor:n&&n.pos<t.pos?n:t,secondAccessor:n&&n.pos<t.pos?t:n,setAccessor:163===t.kind?t:n,getAccessor:162===t.kind?t:n}},getSymbolOfExternalModuleSpecifier:function(e){return Un(e,e,void 0)},isBindingCapturedByNode:function(t,r){var n=e.getParseTreeNode(t),i=e.getParseTreeNode(r);return!!n&&!!i&&(e.isVariableDeclaration(i)||e.isBindingElement(i))&&function(t,r){var n=dn(t);return!!n&&e.contains(n.capturedBlockScopeBindings,ri(r))}(n,i)},getDeclarationStatementsForSourceFile:function(t,r,n,i){var a=e.getParseTreeNode(t);e.Debug.assert(a&&288===a.kind,"Non-sourcefile node passed into getDeclarationsForSourceFile");var o=ri(t);return o?o.exports?Z.symbolTableToDeclarationStatements(o.exports,t,r,n,i):[]:t.locals?Z.symbolTableToDeclarationStatements(t.locals,t,r,n,i):[]}};function i(r,n){if(t&&function(r){if(!r.declarations)return!1;var n=r;for(;;){var i=ni(n);if(!i)break;n=i}if(n.valueDeclaration&&288===n.valueDeclaration.kind&&512&n.flags)return!1;for(var a=0,o=r.declarations;a<o.length;a++){var s=o[a],c=e.getSourceFileOfNode(s);if(t.has(c.path))return!0}return!1}(r)){for(var i,a=0,o=r.declarations;a<o.length;a++){var s=o[a];if(s.symbol&&s.symbol.flags&n){var c=e.getSourceFileOfNode(s),u=t.get(c.path);if(!u)return;(i||(i=[])).push(u)}}return i}}}(),Z=function(){return{typeToTypeNode:function(e,t,r,n){return i(t,r,n,(function(t){return s(e,t)}))},indexInfoToIndexSignatureDeclaration:function(e,t,r,n,a){return i(r,n,a,(function(r){return d(e,t,r)}))},signatureToSignatureDeclaration:function(e,t,r,n,a){return i(r,n,a,(function(r){return p(e,t,r)}))},symbolToEntityName:function(e,t,r,n,a){return i(r,n,a,(function(r){return C(e,r,t,!1)}))},symbolToExpression:function(e,t,r,n,a){return i(r,n,a,(function(r){return k(e,r,t)}))},symbolToTypeParameterDeclarations:function(e,t,r,n){return i(t,r,n,(function(t){return b(e,t)}))},symbolToParameterDeclaration:function(e,t,r,n){return i(t,r,n,(function(t){return g(e,t)}))},typeParameterToDeclaration:function(e,t,r,n){return i(t,r,n,(function(t){return m(e,t)}))},symbolTableToDeclarationStatements:function(a,o,c,u,l){return i(o,c,u,(function(i){return function(i,a,o){var c,u=U(e.createProperty,160,!0),l=U((function(t,r,n,i,a,o){return e.createPropertySignature(r,n,i,a,o)}),159,!1),_=a.enclosingDeclaration,f=[],g=e.createMap(),y=a;a=r(r({},y),{usedSymbolNames:e.createMap(),remappedSymbolNames:e.createMap(),tracker:r(r({},y.tracker),{trackSymbol:function(e,t,r){if(0===Ei(e,t,r,!1).accessibility){var n=v(e,a,r);4&e.flags||w(n[0])}else y.tracker&&y.tracker.trackSymbol&&y.tracker.trackSymbol(e,t,r)}})}),y.usedSymbolNames&&y.usedSymbolNames.forEach((function(e,t){a.usedSymbolNames.set(t,!0)}));e.forEachEntry(i,(function(t,r){Q(t,e.unescapeLeadingUnderscores(r))}));var h=!o,b=i.get("export=");b&&i.size>1&&2097152&b.flags&&(i=e.createSymbolTable()).set("export=",b);return N(i),function(r){r=function(t){var r=e.find(t,(function(t){return e.isExportDeclaration(t)&&!t.moduleSpecifier&&!!t.exportClause}));if(r){var n=e.mapDefined(r.exportClause.elements,(function(r){if(!r.propertyName){var n=e.filter(t,(function(t){return e.nodeHasName(t,r.name)}));if(e.length(n)&&e.every(n,S))return void e.forEach(n,T)}return r}));e.length(n)?r.exportClause.elements=e.createNodeArray(n):t=e.filter(t,(function(e){return e!==r}))}return t}(r=function(r){var n=e.filter(r,(function(t){return e.isExportDeclaration(t)&&!t.moduleSpecifier&&!!t.exportClause}));if(e.length(n)>1){var i=e.filter(r,(function(t){return!e.isExportDeclaration(t)||!!t.moduleSpecifier||!t.exportClause}));r=t(i,[e.createExportDeclaration(void 0,void 0,e.createNamedExports(e.flatMap(n,(function(e){return e.exportClause.elements}))),void 0)])}var a=e.filter(r,(function(t){return e.isExportDeclaration(t)&&!!t.moduleSpecifier&&!!t.exportClause}));if(e.length(a)>1){var o=e.group(a,(function(t){return e.isStringLiteral(t.moduleSpecifier)?">"+t.moduleSpecifier.text:">"}));if(o.length!==a.length)for(var s=function(n){n.length>1&&(r=t(e.filter(r,(function(e){return-1===n.indexOf(e)})),[e.createExportDeclaration(void 0,void 0,e.createNamedExports(e.flatMap(n,(function(e){return e.exportClause.elements}))),n[0].moduleSpecifier)]))},c=0,u=o;c<u.length;c++){var l=u[c];s(l)}}return r}(r=function(r){var n=e.find(r,e.isExportAssignment),i=e.find(r,e.isModuleDeclaration);if(i&&n&&n.isExportEquals&&e.isIdentifier(n.expression)&&e.isIdentifier(i.name)&&e.idText(i.name)===e.idText(n.expression)&&i.body&&e.isModuleBlock(i.body)){var a=e.filter(r,(function(t){return!!(1&e.getModifierFlags(t))}));e.length(a)&&(i.body.statements=e.createNodeArray(t(i.body.statements,[e.createExportDeclaration(void 0,void 0,e.createNamedExports(e.map(e.flatMap(a,(function(t){return function(t){if(e.isVariableStatement(t))return e.filter(e.map(t.declarationList.declarations,e.getNameOfDeclaration),x);return e.filter([e.getNameOfDeclaration(t)],x)}(t)})),(function(t){return e.createExportSpecifier(void 0,t)}))),void 0)]))),e.find(r,(function(t){return t!==i&&e.nodeHasName(t,i.name)}))||(f=[],e.forEach(i.body.statements,(function(e){I(e,0)})),r=t(e.filter(r,(function(e){return e!==i&&e!==n})),f))}return r}(r))),_&&(e.isSourceFile(_)&&e.isExternalOrCommonJsModule(_)||e.isModuleDeclaration(_))&&(!e.some(r,e.isExternalModuleIndicator)||!e.hasScopeMarker(r)&&e.some(r,e.needsScopeMarker))&&r.push(e.createEmptyExports());return r}(f);function x(e){return!!e&&75===e.kind}function S(t){return e.isEnumDeclaration(t)||e.isVariableStatement(t)||e.isFunctionDeclaration(t)||e.isClassDeclaration(t)||e.isModuleDeclaration(t)&&!e.isExternalModuleAugmentation(t)&&!e.isGlobalScopeAugmentation(t)||e.isInterfaceDeclaration(t)||rb(t)}function T(t){var r=-3&(1|e.getModifierFlags(t));t.modifiers=e.createNodeArray(e.createModifiersFromModifierFlags(r)),t.modifierFlagsCache=0}function N(t,r,n){var i=c;r||(c=e.createMap()),t.forEach((function(e){P(e,!1,!!n)})),r||c.forEach((function(e){P(e,!0,!!n)})),c=i}function P(n,i,o){var c=ti(n);if(!g.has(""+A(c))&&(g.set(""+A(c),!0),!i||e.length(n.declarations)&&e.some(n.declarations,(function(t){return!!e.findAncestor(t,(function(e){return e===_}))})))){var d=a;a=function(t){var n=r({},t);n.typeParameterNames&&(n.typeParameterNames=e.cloneMap(n.typeParameterNames));n.typeParameterNamesByText&&(n.typeParameterNamesByText=e.cloneMap(n.typeParameterNamesByText));n.typeParameterSymbolList&&(n.typeParameterSymbolList=e.cloneMap(n.typeParameterSymbolList));return n}(a);var p=function(r,n,i){var o=e.unescapeLeadingUnderscores(r.escapedName),c="default"===r.escapedName;if(e.isStringANonContextualKeyword(o)&&!c)return void(a.encounteredError=!0);var _=c&&!!(-113&r.flags||16&r.flags&&e.length(ts(wa(r))))&&!(2097152&r.flags);_&&(n=!0);var d=(n?0:1)|(c&&!_?512:0),p=1536&r.flags&&7&r.flags&&"export="!==r.escapedName,f=p&&z(wa(r),r);(16&r.flags||f)&&M(wa(r),r,Q(r,o),d);524288&r.flags&&function(t,r,n){var i=Ya(t),o=_n(t).typeParameters,c=e.map(o,(function(e){return m(e,a)})),u=e.find(t.declarations,e.isJSDocTypeAlias),l=u?u.comment||u.parent.comment:void 0,_=a.flags;a.flags|=8388608,I(e.setSyntheticLeadingComments(e.createTypeAliasDeclaration(void 0,void 0,Q(t,r),c,s(i,a)),l?[{kind:3,text:"*\n * "+l.replace(/\n/g,"\n * ")+"\n ",pos:-1,end:-1,hasTrailingNewLine:!0}]:[]),n),a.flags=_}(r,o,d);!(7&r.flags&&"export="!==r.escapedName)||4194304&r.flags||32&r.flags||f||function(t,r,n,i,a,o){if(a)j(t);else{var s=wa(t),c=Q(t,r);if(16&t.flags||!z(s,t)){var u=2&t.flags?Bp(t)?2:1:void 0,l=!i&&4&t.flags?Y(c,t):c,_=t.declarations&&e.find(t.declarations,(function(t){return e.isVariableDeclaration(t)}));_&&e.isVariableDeclarationList(_.parent)&&1===_.parent.declarations.length&&(_=_.parent.parent),I(e.setTextRange(e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(l,q(s,t))],u)),_),l!==c?-2&o:o),l===c||n||I(e.createExportDeclaration(void 0,void 0,e.createNamedExports([e.createExportSpecifier(l,c)])),0)}else M(s,t,c,o)}}(r,o,n,_,i,d);384&r.flags&&function(t,r,n){I(e.createEnumDeclaration(void 0,e.createModifiersFromModifierFlags(hy(t)?2048:0),Q(t,r),e.map(e.filter(ts(wa(t)),(function(e){return!!(8&e.flags)})),(function(t){var r=t.declarations&&t.declarations[0]&&e.isEnumMember(t.declarations[0])&&Mb(t.declarations[0]);return e.createEnumMember(e.unescapeLeadingUnderscores(t.escapedName),void 0===r?void 0:e.createLiteral(r))}))),n)}(r,o,d);32&r.flags&&(4&r.flags?R(r,Q(r,o),d):function(r,n,i){for(var o=ja(r),c=e.map(o,(function(e){return m(e,a)})),l=Ha(r),_=Wa(l),d=wa(r),p=qa(d),f=e.length(_)?[e.createHeritageClause(89,e.map(_,(function(t){return function(t,r,n){var i=H(t);if(i)return i;var o=Y(n+"_base");return I(e.createVariableStatement(undefined,e.createVariableDeclarationList([e.createVariableDeclaration(o,s(r,a))],2)),0),e.createExpressionWithTypeArguments(void 0,e.createIdentifier(o))}(t,p,n)})))]:void 0,g=e.flatMap(ts(l),(function(e){return u(e,!1,_[0])})),y=528&r.flags?[]:e.flatMap(e.filter(ts(d),(function(e){return!(4194304&e.flags)&&"prototype"!==e.escapedName})),(function(e){return u(e,!0,p)})),h=W(1,d,_[0],161),v=0,b=h;v<b.length;v++){var x=b[v];x.type=void 0,x.typeParameters=void 0}var D=G(l,_[0]);I(e.setTextRange(e.createClassDeclaration(void 0,void 0,n,c,f,t(D,y,h,g)),r.declarations&&e.filter(r.declarations,(function(t){return e.isClassDeclaration(t)||e.isClassExpression(t)}))[0]),i)}(r,Q(r,o),d));(1536&r.flags&&(!p||function(t){return e.every(O(t),(function(e){return!(111551&On(e).flags)}))}(r))||f)&&function(t,r,n){var i=O(t),a=e.arrayToMultiMap(i,(function(e){return e.parent&&e.parent===t?"real":"merged"})),o=a.get("real")||e.emptyArray,s=a.get("merged")||e.emptyArray;if(e.length(o)){var c=Q(t,r);L(o,c,n,!!(67108880&t.flags))}if(e.length(s)){c=Q(t,r);var u=e.createModuleBlock([e.createExportDeclaration(void 0,void 0,e.createNamedExports(e.map(e.filter(s,(function(e){return"export="!==e.escapedName})),(function(t){var r=e.unescapeLeadingUnderscores(t.escapedName),n=Q(t,r),i=t.declarations&&En(t),a=i&&wn(i,!0);w(a||t);var o=a?Q(a,e.unescapeLeadingUnderscores(a.escapedName)):n;return e.createExportSpecifier(r===o?void 0:o,r)}))))]);I(e.createModuleDeclaration(void 0,void 0,e.createIdentifier(c),u,16),0)}}(r,o,d);64&r.flags&&function(r,n,i){var o=Ha(r),s=ja(r),c=e.map(s,(function(e){return m(e,a)})),u=Wa(o),_=e.length(u)?iu(u):void 0,d=e.flatMap(ts(o),(function(e){return function(e,t){return l(e,!1,t)}(e,_)})),p=W(0,o,_,164),f=W(1,o,_,165),g=G(o,_),y=e.length(u)?[e.createHeritageClause(89,e.mapDefined(u,(function(e){return H(e)})))]:void 0;I(e.createInterfaceDeclaration(void 0,void 0,Q(r,n),c,y,t(g,f,p,d)),i)}(r,o,d);2097152&r.flags&&R(r,Q(r,o),d);4&r.flags&&"export="===r.escapedName&&j(r);if(8388608&r.flags)for(var g=0,y=r.declarations;g<y.length;g++){var h=y[g],v=zn(h,h.moduleSpecifier);v&&I(e.createExportDeclaration(void 0,void 0,void 0,e.createLiteral(D(v,a))),0)}_&&I(e.createExportAssignment(void 0,void 0,!1,e.createIdentifier(Q(r,o))),0)}(n,i,o);return a=d,p}}function w(t){e.some(t.declarations,e.isParameterDeclaration)||(e.Debug.assertDefined(c),Y(e.unescapeLeadingUnderscores(t.escapedName),t),c.set(""+A(t),t))}function I(t,r){var n=0;1&r&&_&&function(t){return e.isSourceFile(t)&&(e.isExternalOrCommonJsModule(t)||e.isJsonSourceFile(t))||e.isAmbientModule(t)&&!e.isGlobalScopeAugmentation(t)}(_)&&S(t)&&(n|=1),!h||1&n||_&&8388608&_.flags||!(e.isEnumDeclaration(t)||e.isVariableStatement(t)||e.isFunctionDeclaration(t)||e.isClassDeclaration(t)||e.isModuleDeclaration(t))||(n|=2),512&r&&(e.isClassDeclaration(t)||e.isInterfaceDeclaration(t)||e.isFunctionDeclaration(t))&&(n|=512),n&&(t.modifiers=e.createNodeArray(e.createModifiersFromModifierFlags(n|e.getModifierFlags(t))),t.modifierFlagsCache=0),f.push(t)}function O(t){return t.exports?e.filter(e.arrayFrom(t.exports.values()),(function(e){return!(4194304&e.flags||"prototype"===e.escapedName)})):[]}function M(t,r,n,i){for(var o=0,s=xs(t,0);o<s.length;o++){var c=s[o],u=p(c,243,a);u.name=e.createIdentifier(n),I(e.setTextRange(u,c.declaration),i)}1536&r.flags&&r.exports&&r.exports.size||L(e.filter(ts(t),(function(e){return!(4194304&e.flags||"prototype"===e.escapedName)})),n,i,!0)}function L(t,n,i,o){if(e.length(t)){var s=e.arrayToMultiMap(t,(function(t){return!e.length(t.declarations)||e.some(t.declarations,(function(t){return e.getSourceFileOfNode(t)===e.getSourceFileOfNode(a.enclosingDeclaration)}))?"local":"remote"})).get("local")||e.emptyArray,c=e.createModuleDeclaration(void 0,void 0,e.createIdentifier(n),e.createModuleBlock([]),16);c.flags^=8,c.parent=_,c.locals=e.createSymbolTable(t),c.symbol=t[0].parent;var u=f;f=[];var l=h;h=!1;var d=r(r({},a),{enclosingDeclaration:c}),p=a;a=d,N(e.createSymbolTable(s),o,!0),a=p,h=l;var m=f;f=u,c.flags^=8,c.parent=void 0,c.locals=void 0,c.symbol=void 0,c.body=e.createModuleBlock(m),I(c,i)}}function R(t,r,n){var i=En(t);if(!i)return e.Debug.fail();var o=ti(wn(i,!0));if(o){var s=e.unescapeLeadingUnderscores(o.escapedName);"export="===s&&(K.esModuleInterop||K.allowSyntheticDefaultImports)&&(s="default");var c=Q(o,s);switch(w(o),i.kind){case 252:var u=!(512&o.flags);I(e.createImportEqualsDeclaration(void 0,void 0,e.createIdentifier(r),u?C(o,a,67108863,!1):e.createExternalModuleReference(e.createLiteral(D(t,a)))),u?n:0);break;case 251:I(e.createNamespaceExportDeclaration(e.idText(i.name)),0);break;case 254:I(e.createImportDeclaration(void 0,void 0,e.createImportClause(e.createIdentifier(r),void 0),e.createLiteral(D(o.parent||o,a))),0);break;case 255:I(e.createImportDeclaration(void 0,void 0,e.createImportClause(void 0,e.createNamespaceImport(e.createIdentifier(r))),e.createLiteral(D(o,a))),0);break;case 257:I(e.createImportDeclaration(void 0,void 0,e.createImportClause(void 0,e.createNamedImports([e.createImportSpecifier(r!==s?e.createIdentifier(s):void 0,e.createIdentifier(r))])),e.createLiteral(D(o.parent||o,a))),0);break;case 261:var l=i.parent.parent.moduleSpecifier;B(e.unescapeLeadingUnderscores(t.escapedName),l?s:c,l&&e.isStringLiteralLike(l)?e.createLiteral(l.text):void 0);break;case 258:j(t);break;case 208:case 193:"default"===t.escapedName||"export="===t.escapedName?j(t):B(r,c);break;default:return e.Debug.failBadSyntaxKind(i,"Unhandled alias declaration kind in symbol serializer!")}}}function B(t,r,n){I(e.createExportDeclaration(void 0,void 0,e.createNamedExports([e.createExportSpecifier(t!==r?r:void 0,t)]),n),0)}function j(t){if(!(4194304&t.flags)){var r=e.unescapeLeadingUnderscores(t.escapedName),n="export="===r,i=n||"default"===r,o=t.declarations&&En(t),s=o&&wn(o,!0);if(s&&e.length(s.declarations)&&e.some(s.declarations,(function(t){return e.getSourceFileOfNode(t)===e.getSourceFileOfNode(_)}))){var c=i?e.getExportAssignmentExpression(o):e.getPropertyAssignmentAliasLikeExpression(o),u=e.isEntityNameExpression(c)?function(t){switch(t.kind){case 75:return t;case 152:do{t=t.left}while(75!==t.kind);return t;case 193:do{if(e.isModuleExportsAccessExpression(t.expression))return t.name;t=t.expression}while(75!==t.kind);return t}}(c):void 0,l=u&&Kn(u,67108863,!0,!0,_);(l||s)&&w(l||s);var d=a.tracker.trackSymbol;if(a.tracker.trackSymbol=e.noop,i)f.push(e.createExportAssignment(void 0,void 0,n,k(s,a,67108863)));else if(u===c)B(r,e.idText(u));else if(e.isClassExpression(c))B(r,Q(s,e.symbolName(s)));else{var p=Y(r,t);I(e.createImportEqualsDeclaration(void 0,void 0,e.createIdentifier(p),C(s,a,67108863,!1)),0),B(r,p)}a.tracker.trackSymbol=d}else{p=Y(r,t);var m=rd(wa(t));if(z(m,t))M(m,t,p,i?0:1);else I(e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(p,q(m,t))],2)),r===p?1:0);i?f.push(e.createExportAssignment(void 0,void 0,n,e.createIdentifier(p))):r!==p&&B(r,p)}}}function z(t,r){var n=e.getSourceFileOfNode(a.enclosingDeclaration);return 48&e.getObjectFlags(t)&&!Ts(t,0)&&!Ts(t,1)&&!(!e.length(ts(t))&&!e.length(xs(t,0)))&&!e.length(xs(t,1))&&!V(r)&&!(t.symbol&&e.some(t.symbol.declarations,(function(t){return e.getSourceFileOfNode(t)!==n})))&&!e.some(ts(t),(function(e){return fo(e.escapedName)}))&&!e.some(ts(t),(function(t){return e.some(t.declarations,(function(t){return e.getSourceFileOfNode(t)!==n}))}))&&e.every(ts(t),(function(t){return e.isIdentifierText(e.symbolName(t),J)&&!e.isStringAKeyword(e.symbolName(t))}))}function U(t,r,n){return function(i,o,s){if(o&&2887656&i.flags)return[];if(4194304&i.flags||s&&vs(s,i.escapedName)&&uy(vs(s,i.escapedName))===uy(i)&&(16777216&i.flags)==(16777216&vs(s,i.escapedName).flags)&&El(wa(i),Xi(s,i.escapedName)))return[];var c=o?32:0,u=function(t,r){var n=function(t,r){var n=t.nameType;if(n){if(384&n.flags){var i=""+n.value;return e.isIdentifierText(i,K.target)||Mf(i)?Mf(i)&&e.startsWith(i,"-")?e.createComputedPropertyName(e.createLiteral(+i)):F(i):e.createLiteral(i)}if(8192&n.flags)return e.createComputedPropertyName(k(n.symbol,r,111551))}}(t,r);if(n)return n;return F(e.unescapeLeadingUnderscores(t.escapedName))}(i,a),l=e.find(i.declarations,e.or(e.isPropertyDeclaration,e.isAccessor,e.isVariableDeclaration,e.isPropertySignature,e.isBinaryExpression,e.isPropertyAccessExpression));if(98304&i.flags&&n){var _=[];return 65536&i.flags&&_.push(e.setTextRange(e.createSetAccessor(void 0,e.createModifiersFromModifierFlags(c),u,[e.createParameter(void 0,void 0,void 0,"arg",void 0,q(wa(i),i))],void 0),e.find(i.declarations,e.isSetAccessor)||l)),32768&i.flags&&_.push(e.setTextRange(e.createGetAccessor(void 0,e.createModifiersFromModifierFlags(c),u,[],q(wa(i),i),void 0),e.find(i.declarations,e.isGetAccessor)||l)),_}if(7&i.flags)return e.setTextRange(t(void 0,e.createModifiersFromModifierFlags((uy(i)?64:0)|c),u,16777216&i.flags?e.createToken(57):void 0,q(wa(i),i),void 0),e.find(i.declarations,e.or(e.isPropertyDeclaration,e.isVariableDeclaration))||l);if(8208&i.flags){for(var d=[],f=0,m=xs(wa(i),0);f<m.length;f++){var g=m[f],y=p(g,r,a);y.name=u,c&&(y.modifiers=e.createNodeArray(e.createModifiersFromModifierFlags(c))),16777216&i.flags&&(y.questionToken=e.createToken(57)),d.push(e.setTextRange(y,g.declaration))}return d}return e.Debug.fail("Unhandled class member kind! "+(i.__debugFlags||i.flags))}}function V(t){return e.find(t.declarations,(function(t){return!!e.getEffectiveTypeAnnotationNode(t)&&!!e.findAncestor(t,(function(e){return e===_}))}))}function q(t,r){var i=V(r);if(i&&!e.isFunctionLikeDeclaration(i)){var c=e.getEffectiveTypeAnnotationNode(i),u=e.visitNode(c,(function t(r){if(e.isJSDocAllType(r))return e.createKeywordTypeNode(124);if(e.isJSDocUnknownType(r))return e.createKeywordTypeNode(147);if(e.isJSDocNullableType(r))return e.createUnionTypeNode([e.visitNode(r.type,t),e.createKeywordTypeNode(99)]);if(e.isJSDocOptionalType(r))return e.createUnionTypeNode([e.visitNode(r.type,t),e.createKeywordTypeNode(145)]);if(e.isJSDocNonNullableType(r))return e.visitNode(r.type,t);if((e.isExpressionWithTypeArguments(r)||e.isTypeReferenceNode(r))&&e.isJSDocIndexSignature(r))return e.createTypeLiteralNode([e.createIndexSignature(void 0,void 0,[e.createParameter(void 0,void 0,void 0,"x",void 0,e.visitNode(r.typeArguments[0],t))],e.visitNode(r.typeArguments[1],t))]);if(e.isJSDocFunctionType(r)){var i;return e.isJSDocConstructSignature(r)?e.createConstructorTypeNode(e.visitNodes(r.typeParameters,t),e.mapDefined(r.parameters,(function(r,n){return r.name&&e.isIdentifier(r.name)&&"new"===r.name.escapedText?void(i=r.type):e.createParameter(void 0,void 0,r.dotDotDotToken,r.name||r.dotDotDotToken?"args":"arg"+n,r.questionToken,e.visitNode(r.type,t),void 0)})),e.visitNode(i||r.type,t)):e.createFunctionTypeNode(e.visitNodes(r.typeParameters,t),e.map(r.parameters,(function(r,n){return e.createParameter(void 0,void 0,r.dotDotDotToken,r.name||r.dotDotDotToken?"args":"arg"+n,r.questionToken,e.visitNode(r.type,t),void 0)})),e.visitNode(r.type,t))}if(e.isLiteralImportTypeNode(r))return e.updateImportTypeNode(r,e.updateLiteralTypeNode(r.argument,function(t,r){if(o){if(a.tracker&&a.tracker.moduleResolverHost){var i=Wb(t);if(i){var s={getCanonicalFileName:e.createGetCanonicalFileName(!!n.useCaseSensitiveFileNames),getCurrentDirectory:a.tracker.moduleResolverHost.getCurrentDirectory?function(){return a.tracker.moduleResolverHost.getCurrentDirectory()}:function(){return""},getCommonSourceDirectory:function(){return a.tracker.moduleResolverHost.getCommonSourceDirectory()}},c=e.getResolvedExternalModuleName(s,i);return e.createLiteral(c)}}}else if(a.tracker&&a.tracker.trackExternalModuleSymbolOfImportTypeNode){var u=Un(r,r,void 0);u&&a.tracker.trackExternalModuleSymbolOfImportTypeNode(u)}return r}(r,r.argument.literal)),r.qualifier,e.visitNodes(r.typeArguments,t,e.isTypeNode),r.isTypeOf);if(e.isEntityName(r)||e.isEntityNameExpression(r)){var s=Kn(e.getFirstIdentifier(r),67108863,!0,!0);if(s&&(w(s),e.isIdentifier(r)&&262144&s.flags)){var c=E(ro(s),a);return e.idText(c)!==e.idText(r)?c:r}}return e.visitEachChild(r,t,e.nullTransformationContext)}));return u===c?e.getMutableClone(c):u}var l=a.flags;8192&t.flags&&t.symbol===r&&(a.flags|=1048576);var _=s(t,a);return a.flags=l,_}function W(t,r,n,i){var o=xs(r,t);if(1===t){if(!n&&e.every(o,(function(t){return 0===e.length(t.parameters)})))return[];if(n){var s=xs(n,1);if(!e.length(s)&&e.every(o,(function(t){return 0===e.length(t.parameters)})))return[];if(s.length===o.length){for(var c=!1,u=0;u<s.length;u++)if(!m_(o[u],s[u],!1,!1,!0,Cl)){c=!0;break}if(!c)return[]}}}for(var l=[],_=0,d=o;_<d.length;_++){var f=d[_],m=p(f,i,a);l.push(e.setTextRange(m,f.declaration))}return l}function G(e,t){for(var r=[],n=0,i=[0,1];n<i.length;n++){var o=i[n],s=Ts(e,o);if(s){if(t){var c=Ts(t,o);if(c&&El(s.type,c.type))continue}r.push(d(s,o,a))}}return r}function H(t){var r,n;if(t.target&&xi(t.target.symbol,_,111551,!1)?(r=e.map(_c(t),(function(e){return s(e,a)})),n=k(t.target.symbol,a,788968)):t.symbol&&xi(t.symbol,_,111551,!1)&&(n=k(t.symbol,a,788968)),n)return e.createExpressionWithTypeArguments(r,n)}function Y(e,t){if(t&&a.remappedSymbolNames.has(""+A(t)))return a.remappedSymbolNames.get(""+A(t));t&&(e=X(t,e));for(var r=0,n=e;a.usedSymbolNames.has(e);)e=n+"_"+ ++r;return a.usedSymbolNames.set(e,!0),t&&a.remappedSymbolNames.set(""+A(t),e),e}function X(t,r){if("default"===r||"__class"===r||"__function"===r){var n=a.flags;a.flags|=16777216;var i=zi(t,a);a.flags=n,r=i.length>0&&e.isSingleOrDoubleQuote(i.charCodeAt(0))?e.stripQuotes(i):i}return"default"===r?r="_default":"export="===r&&(r="_exports"),r=e.isIdentifierText(r,J)&&!e.isStringANonContextualKeyword(r)?r:"_"+r.replace(/[^a-zA-Z0-9]/g,"_")}function Q(e,t){return a.remappedSymbolNames.has(""+A(e))?a.remappedSymbolNames.get(""+A(e)):(t=X(e,t),a.remappedSymbolNames.set(""+A(e),t),t)}}(a,i,l)}))}};function i(t,r,i,a){e.Debug.assert(void 0===t||0==(8&t.flags));var o={enclosingDeclaration:t,flags:r||0,tracker:i&&i.trackSymbol?i:{trackSymbol:e.noop,moduleResolverHost:134217728&r?{getCommonSourceDirectory:n.getCommonSourceDirectory?function(){return n.getCommonSourceDirectory()}:function(){return""},getSourceFiles:function(){return n.getSourceFiles()},getCurrentDirectory:e.maybeBind(n,n.getCurrentDirectory),getProbableSymlinks:e.maybeBind(n,n.getProbableSymlinks)}:void 0},encounteredError:!1,visitedTypes:void 0,symbolDepth:void 0,inferTypeParameters:void 0,approximateLength:0},s=a(o);return o.encounteredError?void 0:s}function a(t){return t.truncating?t.truncating:t.truncating=!(1&t.flags)&&t.approximateLength>e.defaultMaximumTruncationLength}function s(t,r){o&&o.throwIfCancellationRequested&&o.throwIfCancellationRequested();var n=8388608&r.flags;if(r.flags&=-8388609,t){if(1&t.flags)return r.approximateLength+=3,e.createKeywordTypeNode(124);if(2&t.flags)return e.createKeywordTypeNode(147);if(4&t.flags)return r.approximateLength+=6,e.createKeywordTypeNode(142);if(8&t.flags)return r.approximateLength+=6,e.createKeywordTypeNode(139);if(64&t.flags)return r.approximateLength+=6,e.createKeywordTypeNode(150);if(16&t.flags)return r.approximateLength+=7,e.createKeywordTypeNode(127);if(1024&t.flags&&!(1048576&t.flags)){var i=ni(t.symbol),c=S(i,r,788968);return ro(i)===t?c:R(c,e.createTypeReferenceNode(e.symbolName(t.symbol),void 0))}if(1056&t.flags)return S(t.symbol,r,788968);if(128&t.flags)return r.approximateLength+=t.value.length+2,e.createLiteralTypeNode(e.setEmitFlags(e.createLiteral(t.value),16777216));if(256&t.flags){var m=t.value;return r.approximateLength+=(""+m).length,e.createLiteralTypeNode(m<0?e.createPrefix(40,e.createLiteral(-m)):e.createLiteral(m))}if(2048&t.flags)return r.approximateLength+=e.pseudoBigIntToString(t.value).length+1,e.createLiteralTypeNode(e.createLiteral(t.value));if(512&t.flags)return r.approximateLength+=t.intrinsicName.length,"true"===t.intrinsicName?e.createTrue():e.createFalse();if(8192&t.flags){if(!(1048576&r.flags)){if(Ti(t.symbol,r.enclosingDeclaration))return r.approximateLength+=6,S(t.symbol,r,111551);r.tracker.reportInaccessibleUniqueSymbolError&&r.tracker.reportInaccessibleUniqueSymbolError()}return r.approximateLength+=13,e.createTypeOperatorNode(146,e.createKeywordTypeNode(143))}if(16384&t.flags)return r.approximateLength+=4,e.createKeywordTypeNode(109);if(32768&t.flags)return r.approximateLength+=9,e.createKeywordTypeNode(145);if(65536&t.flags)return r.approximateLength+=4,e.createKeywordTypeNode(99);if(131072&t.flags)return r.approximateLength+=5,e.createKeywordTypeNode(136);if(4096&t.flags)return r.approximateLength+=6,e.createKeywordTypeNode(143);if(67108864&t.flags)return r.approximateLength+=6,e.createKeywordTypeNode(140);if(hu(t))return 4194304&r.flags&&(r.encounteredError||32768&r.flags||(r.encounteredError=!0),r.tracker.reportInaccessibleThisError&&r.tracker.reportInaccessibleThisError()),r.approximateLength+=4,e.createThis();if(!n&&t.aliasSymbol&&(16384&r.flags||Si(t.aliasSymbol,r.enclosingDeclaration))){var g=_(t.aliasTypeArguments,r);return!mi(t.aliasSymbol.escapedName)||32&t.aliasSymbol.flags?S(t.aliasSymbol,r,788968,g):e.createTypeReferenceNode(e.createIdentifier(""),g)}var y=e.getObjectFlags(t);if(4&y)return e.Debug.assert(!!(524288&t.flags)),t.node?O(t,L):L(t);if(262144&t.flags||3&y){if(262144&t.flags&&e.contains(r.inferTypeParameters,t))return r.approximateLength+=e.symbolName(t.symbol).length+6,e.createInferTypeNode(f(t,r,void 0));if(4&r.flags&&262144&t.flags&&!Si(t.symbol,r.enclosingDeclaration)){var h=E(t,r);return r.approximateLength+=e.idText(h).length,e.createTypeReferenceNode(e.createIdentifier(e.idText(h)),void 0)}return t.symbol?S(t.symbol,r,788968):e.createTypeReferenceNode(e.createIdentifier("?"),void 0)}if(3145728&t.flags){var v=1048576&t.flags?function(e){for(var t=[],r=0,n=0;n<e.length;n++){var i=e[n];if(r|=i.flags,!(98304&i.flags)){if(1536&i.flags){var a=512&i.flags?Me:$a(i);if(1048576&a.flags){var o=a.types.length;if(n+o<=e.length&&Vu(e[n+o-1])===Vu(a.types[o-1])){t.push(a),n+=o-1;continue}}}t.push(i)}}65536&r&&t.push(Ce);32768&r&&t.push(Se);return t||e}(t.types):t.types;if(1===e.length(v))return s(v[0],r);var b=_(v,r,!0);return b&&b.length>0?e.createUnionOrIntersectionTypeNode(1048576&t.flags?177:178,b):void(r.encounteredError||262144&r.flags||(r.encounteredError=!0))}if(48&y)return e.Debug.assert(!!(524288&t.flags)),I(t);if(4194304&t.flags){var x=t.type;r.approximateLength+=6;var D=s(x,r);return e.createTypeOperatorNode(D)}if(8388608&t.flags){var T=s(t.objectType,r);D=s(t.indexType,r);return r.approximateLength+=2,e.createIndexedAccessTypeNode(T,D)}if(16777216&t.flags){var C=s(t.checkType,r),k=r.inferTypeParameters;r.inferTypeParameters=t.root.inferTypeParameters;var F=s(t.extendsType,r);r.inferTypeParameters=k;var P=s(Au(t),r),w=s(Fu(t),r);return r.approximateLength+=15,e.createConditionalTypeNode(C,F,P,w)}return 33554432&t.flags?s(t.typeVariable,r):e.Debug.fail("Should be unreachable.")}function I(t){var n=""+t.id,i=t.symbol;if(i){if(Sg(i.valueDeclaration)){var a=t===Ha(i)?788968:111551;return S(i,r,a)}if(32&i.flags&&!Na(i)&&!(213===i.valueDeclaration.kind&&2048&r.flags)||896&i.flags||function(){var t=!!(8192&i.flags)&&e.some(i.declarations,(function(t){return e.hasModifier(t,32)})),a=!!(16&i.flags)&&(i.parent||e.forEach(i.declarations,(function(e){return 288===e.parent.kind||249===e.parent.kind})));if(t||a)return(!!(4096&r.flags)||r.visitedTypes&&r.visitedTypes.has(n))&&(!(8&r.flags)||Ti(i,r.enclosingDeclaration))}())return S(i,r,111551);if(r.visitedTypes&&r.visitedTypes.has(n)){var o=function(t){if(t.symbol&&2048&t.symbol.flags){var r=e.findAncestor(t.symbol.declarations[0].parent,(function(e){return 181!==e.kind}));if(246===r.kind)return ri(r)}return}(t);return o?S(o,r,788968):u(r)}return O(t,M)}return M(t)}function O(t,n){var i,a=""+t.id,o=16&e.getObjectFlags(t)&&t.symbol&&32&t.symbol.flags,s=4&e.getObjectFlags(t)&&t.node?"N"+N(t.node):t.symbol?(o?"+":"")+A(t.symbol):void 0;if(r.visitedTypes||(r.visitedTypes=e.createMap()),s&&!r.symbolDepth&&(r.symbolDepth=e.createMap()),s){if((i=r.symbolDepth.get(s)||0)>10)return u(r);r.symbolDepth.set(s,i+1)}r.visitedTypes.set(a,!0);var c=n(t);return r.visitedTypes.delete(a),s&&r.symbolDepth.set(s,i),c}function M(t){if(Xo(t))return function(t){e.Debug.assert(!!(524288&t.flags));var n,i=t.declaration.readonlyToken?e.createToken(t.declaration.readonlyToken.kind):void 0,a=t.declaration.questionToken?e.createToken(t.declaration.questionToken.kind):void 0;n=qo(t)?e.createTypeOperatorNode(s(Wo(t),r)):s(zo(t),r);var o=f(Jo(t),r,n),c=s(Uo(t),r),u=e.createMappedTypeNode(i,o,a,c);return r.approximateLength+=10,e.setEmitFlags(u,1)}(t);var n=Qo(t);if(!n.properties.length&&!n.stringIndexInfo&&!n.numberIndexInfo){if(!n.callSignatures.length&&!n.constructSignatures.length)return r.approximateLength+=2,e.setEmitFlags(e.createTypeLiteralNode(void 0),1);if(1===n.callSignatures.length&&!n.constructSignatures.length)return p(n.callSignatures[0],169,r);if(1===n.constructSignatures.length&&!n.callSignatures.length)return p(n.constructSignatures[0],170,r)}var i=r.flags;r.flags|=4194304;var o=function(t){if(a(r))return[e.createPropertySignature(void 0,"...",void 0,void 0,void 0)];for(var n=[],i=0,o=t.callSignatures;i<o.length;i++){var s=o[i];n.push(p(s,164,r))}for(var c=0,_=t.constructSignatures;c<_.length;c++){s=_[c];n.push(p(s,165,r))}if(t.stringIndexInfo){var f=void 0;2048&t.objectFlags?(f=d(tc(he,t.stringIndexInfo.isReadonly,t.stringIndexInfo.declaration),0,r)).type=u(r):f=d(t.stringIndexInfo,0,r),n.push(f)}t.numberIndexInfo&&n.push(d(t.numberIndexInfo,1,r));var m=t.properties;if(!m)return n;for(var g=0,y=0,h=m;y<h.length;y++){var v=h[y];if(g++,2048&r.flags){if(4194304&v.flags)continue;24&e.getDeclarationModifierFlagsFromSymbol(v)&&r.tracker.reportPrivateInBaseOfClassExpression&&r.tracker.reportPrivateInBaseOfClassExpression(e.unescapeLeadingUnderscores(v.escapedName))}if(a(r)&&g+2<m.length-1){n.push(e.createPropertySignature(void 0,"... "+(m.length-g)+" more ...",void 0,void 0,void 0)),l(m[m.length-1],r,n);break}l(v,r,n)}return n.length?n:void 0}(n);r.flags=i;var c=e.createTypeLiteralNode(o);return r.approximateLength+=2,e.setEmitFlags(c,1024&r.flags?0:1)}function L(t){var n=_c(t);if(t.target===dt||t.target===pt){if(2&r.flags){var i=s(n[0],r);return e.createTypeReferenceNode(t.target===dt?"Array":"ReadonlyArray",[i])}var a=s(n[0],r),o=e.createArrayTypeNode(a);return t.target===dt?o:e.createTypeOperatorNode(137,o)}if(!(8&t.target.objectFlags)){if(2048&r.flags&&t.symbol.valueDeclaration&&e.isClassLike(t.symbol.valueDeclaration)&&!Ti(t.symbol,r.enclosingDeclaration))return I(t);var c=t.target.outerTypeParameters,u=(E=0,void 0);if(c)for(var l=c.length;E<l;){var d=E,p=ac(c[E]);do{E++}while(E<l&&ac(c[E])===p);if(!e.rangeEquals(c,n,d,E)){var f=_(n.slice(d,E),r),m=r.flags;r.flags|=16;var g=S(p,r,788968,f);r.flags=m,u=u?R(u,g):g}}var y=void 0;if(n.length>0){var h=(t.target.typeParameters||e.emptyArray).length;y=_(n.slice(E,h),r)}var v=r.flags;r.flags|=16;var b=S(t.symbol,r,788968,y);return r.flags=v,u?R(u,b):b}if(n.length>0){var x=dc(t),D=_(n.slice(0,x),r),T=t.target.hasRestElement;if(D){for(var E=t.target.minLength;E<Math.min(x,D.length);E++)D[E]=T&&E===x-1?e.createRestTypeNode(e.createArrayTypeNode(D[E])):e.createOptionalTypeNode(D[E]);var C=e.createTupleTypeNode(D);return t.target.readonly?e.createTypeOperatorNode(137,C):C}}if(r.encounteredError||524288&r.flags){C=e.createTupleTypeNode([]);return t.target.readonly?e.createTypeOperatorNode(137,C):C}r.encounteredError=!0}function R(t,r){if(e.isImportTypeNode(t)){var n=t.typeArguments;t.qualifier&&((e.isIdentifier(t.qualifier)?t.qualifier:t.qualifier.right).typeArguments=n),t.typeArguments=r.typeArguments;for(var i=0,a=B(r);i<a.length;i++){var o=a[i];t.qualifier=t.qualifier?e.createQualifiedName(t.qualifier,o):o}return t}n=t.typeArguments;(e.isIdentifier(t.typeName)?t.typeName:t.typeName.right).typeArguments=n,t.typeArguments=r.typeArguments;for(var s=0,c=B(r);s<c.length;s++){o=c[s];t.typeName=e.createQualifiedName(t.typeName,o)}return t}function B(t){for(var r=t.typeName,n=[];!e.isIdentifier(r);)n.unshift(r.right),r=r.left;return n.unshift(r),n}r.encounteredError=!0}function u(t){return t.approximateLength+=3,1&t.flags?e.createKeywordTypeNode(124):e.createTypeReferenceNode(e.createIdentifier("..."),void 0)}function l(t,r,n){var i=!!(8192&e.getCheckFlags(t)),a=i&&33554432&r.flags?he:wa(t),o=r.enclosingDeclaration;if(r.enclosingDeclaration=void 0,r.tracker.trackSymbol&&4096&e.getCheckFlags(t)){var c=e.first(t.declarations);if(mo(c))if(e.isBinaryExpression(c)){var l=e.getNameOfDeclaration(c);l&&e.isElementAccessExpression(l)&&e.isPropertyAccessEntityNameExpression(l.argumentExpression)&&y(l.argumentExpression,o,r)}else y(c.name.expression,o,r)}var _=C(t,r,111551,!0);r.approximateLength+=e.symbolName(t).length+1,r.enclosingDeclaration=o;var d=16777216&t.flags?e.createToken(57):void 0;if(8208&t.flags&&!$o(a).length&&!uy(t))for(var f=0,m=xs(_p(a,(function(e){return!(32768&e.flags)})),0);f<m.length;f++){var g=p(m[f],159,r);g.name=_,g.questionToken=d,n.push(D(g))}else{var h=r.flags;r.flags|=i?33554432:0;var v=void 0;v=i&&33554432&h?u(r):a?s(a,r):e.createKeywordTypeNode(124),r.flags=h;var b=uy(t)?[e.createToken(137)]:void 0;b&&(r.approximateLength+=9);var x=e.createPropertySignature(b,_,d,v,void 0);n.push(D(x))}function D(r){if(e.some(t.declarations,(function(e){return 316===e.kind}))){var n=e.find(t.declarations,(function(e){return 316===e.kind})).comment;n&&e.setSyntheticLeadingComments(r,[{kind:3,text:"*\n * "+n.replace(/\n/g,"\n * ")+"\n ",pos:-1,end:-1,hasTrailingNewLine:!0}])}else t.valueDeclaration&&e.setCommentRange(r,t.valueDeclaration);return r}}function _(t,r,n){if(e.some(t)){if(a(r)){if(!n)return[e.createTypeReferenceNode("...",void 0)];if(t.length>2)return[s(t[0],r),e.createTypeReferenceNode("... "+(t.length-2)+" more ...",void 0),s(t[t.length-1],r)]}for(var i=[],o=0,c=0,u=t;c<u.length;c++){var l=u[c];if(o++,a(r)&&o+2<t.length-1){i.push(e.createTypeReferenceNode("... "+(t.length-o)+" more ...",void 0));var _=s(t[t.length-1],r);_&&i.push(_);break}r.approximateLength+=2;var d=s(l,r);d&&i.push(d)}return i}}function d(t,r,n){var i=e.getNameFromIndexInfo(t)||"x",a=e.createKeywordTypeNode(0===r?142:139),o=e.createParameter(void 0,void 0,void 0,i,void 0,a,void 0),c=s(t.type||he,n);return t.type||2097152&n.flags||(n.encounteredError=!0),n.approximateLength+=i.length+4,e.createIndexSignature(void 0,t.isReadonly?[e.createToken(137)]:void 0,[o],c)}function p(t,r,n){var i,a;32&n.flags&&t.target&&t.mapper&&t.target.typeParameters?a=t.target.typeParameters.map((function(e){return s(gl(e,t.mapper),n)})):i=t.typeParameters&&t.typeParameters.map((function(e){return m(e,n)}));var o,c=No(t).map((function(e){return g(e,n,161===r)}));if(t.thisParameter){var u=g(t.thisParameter,n);c.unshift(u)}var l=Js(t);if(l){var _=2===l.kind||3===l.kind?e.createToken(123):void 0,d=1===l.kind||3===l.kind?e.setEmitFlags(e.createIdentifier(l.parameterName),16777216):e.createThisTypeNode(),p=l.type&&s(l.type,n);o=e.createTypePredicateNodeWithModifier(_,d,p)}else{var f=zs(t);o=f&&s(f,n)}return 256&n.flags?o&&124===o.kind&&(o=void 0):o||(o=e.createKeywordTypeNode(124)),n.approximateLength+=3,e.createSignatureDeclaration(r,i,c,o,a)}function f(t,r,n){var i=r.flags;r.flags&=-513;var a=E(t,r),o=ps(t),c=o&&s(o,r);return r.flags=i,e.createTypeParameterDeclaration(a,n,c)}function m(e,t,r){return void 0===r&&(r=ns(e)),f(e,t,r&&s(r,t))}function g(t,r,n){var i=e.getDeclarationOfKind(t,155);i||tn(t)||(i=e.getDeclarationOfKind(t,310));var a=wa(t);i&&Nb(i)&&(a=z_(a));var o=s(a,r),c=!(8192&r.flags)&&n&&i&&i.modifiers?i.modifiers.map(e.getSynthesizedClone):void 0,u=i&&e.isRestParameter(i)||32768&e.getCheckFlags(t)?e.createToken(25):void 0,l=i&&i.name?75===i.name.kind?e.setEmitFlags(e.getSynthesizedClone(i.name),16777216):152===i.name.kind?e.setEmitFlags(e.getSynthesizedClone(i.name.right),16777216):function(t){return function t(n){r.tracker.trackSymbol&&e.isComputedPropertyName(n)&&po(n)&&y(n.expression,r.enclosingDeclaration,r);var i=e.visitEachChild(n,t,e.nullTransformationContext,void 0,t);var a=e.nodeIsSynthesized(i)?i:e.getSynthesizedClone(i);190===a.kind&&(a.initializer=void 0);return e.setEmitFlags(a,16777217)}(t)}(i.name):e.symbolName(t),_=i&&Ps(i)||16384&e.getCheckFlags(t)?e.createToken(57):void 0,d=e.createParameter(void 0,c,u,l,_,o,void 0);return r.approximateLength+=e.symbolName(t).length+3,d}function y(t,r,n){if(n.tracker.trackSymbol){var i=e.getFirstIdentifier(t),a=gn(i,i.escapedText,1160127,void 0,void 0,!0);a&&n.tracker.trackSymbol(a,r,111551)}}function h(e,t,r,n){return t.tracker.trackSymbol(e,t.enclosingDeclaration,r),v(e,t,r,n)}function v(t,r,n,i){var a;return 262144&t.flags||!(r.enclosingDeclaration||64&r.flags)||134217728&r.flags?a=[t]:(a=e.Debug.assertDefined(function t(n,a,o){var s=xi(n,r.enclosingDeclaration,a,!!(128&r.flags));var c;if(!s||Di(s[0],r.enclosingDeclaration,1===s.length?a:bi(a))){var u=ii(s?s[0]:n,r.enclosingDeclaration);if(e.length(u)){c=u.map((function(t){return e.some(t.declarations,Ni)?D(t,r):void 0}));var l=u.map((function(e,t){return t}));l.sort((function(t,r){var n=c[t],i=c[r];if(n&&i){var a=e.pathIsRelative(i);return e.pathIsRelative(n)===a?e.moduleSpecifiers.countPathComponents(n)-e.moduleSpecifiers.countPathComponents(i):a?-1:1}return 0}));for(var _=l.map((function(e){return u[e]})),d=0,p=_;d<p.length;d++){var f=p[d],m=t(f,bi(a),!1);if(m){if(f.exports&&f.exports.get("export=")&&oi(f.exports.get("export="),n)){s=m;break}s=m.concat(s||[ai(f,n)||n]);break}}}}if(s)return s;if(o||!(6144&n.flags)){if(!o&&!i&&e.forEach(n.declarations,Ni))return;return[n]}}(t,n,!0)),e.Debug.assert(a&&a.length>0)),a}function b(t,r){var n;return 524384&Iv(t).flags&&(n=e.createNodeArray(e.map(ja(t),(function(e){return m(e,r)})))),n}function x(t,r,n){e.Debug.assert(t&&0<=r&&r<t.length);var i=t[r],a=""+A(i);if(!n.typeParameterSymbolList||!n.typeParameterSymbolList.get(a)){var o;if((n.typeParameterSymbolList||(n.typeParameterSymbolList=e.createMap())).set(a,!0),512&n.flags&&r<t.length-1){var s=i,c=t[r+1];if(1&e.getCheckFlags(c)){var u=function(t){return e.concatenate(Ba(t),ja(t))}(2097152&s.flags?Mn(s):s);o=_(e.map(u,c.mapper),n)}else o=b(i,n)}return o}}function D(t,i){var a=e.getDeclarationOfKind(t,288);if(a&&void 0!==a.moduleName)return a.moduleName;if(!a){if(i.tracker.trackReferencedAmbientModule){var o=e.filter(t.declarations,e.isAmbientModule);if(e.length(o))for(var s=0,u=o;s<u.length;s++){var l=u[s];i.tracker.trackReferencedAmbientModule(l,t)}}if(c.test(t.escapedName))return t.escapedName.substring(1,t.escapedName.length-1)}if(!i.enclosingDeclaration||!i.tracker.moduleResolverHost)return c.test(t.escapedName)?t.escapedName.substring(1,t.escapedName.length-1):e.getSourceFileOfNode(e.getNonAugmentationDeclaration(t)).fileName;var _=e.getSourceFileOfNode(e.getOriginalNode(i.enclosingDeclaration)),d=_n(t),p=d.specifierCache&&d.specifierCache.get(_.path);if(!p){var f=K.out||K.outFile,m=i.tracker.moduleResolverHost,g=f?r(r({},K),{baseUrl:m.getCommonSourceDirectory()}):K;p=e.first(e.moduleSpecifiers.getModuleSpecifiers(t,g,_,m,n.getSourceFiles(),{importModuleSpecifierPreference:f?"non-relative":"relative"},n.redirectTargetsMap)),d.specifierCache=d.specifierCache||e.createMap(),d.specifierCache.set(_.path,p)}return p}function S(t,r,n,i){var a=h(t,r,n,!(16384&r.flags)),o=111551===n;if(e.some(a[0].declarations,Ni)){var s=a.length>1?g(a,a.length-1,1):void 0,c=i||x(a,0,r),u=D(a[0],r);!(67108864&r.flags)&&e.getEmitModuleResolutionKind(K)===e.ModuleResolutionKind.NodeJs&&u.indexOf("/node_modules/")>=0&&(r.encounteredError=!0,r.tracker.reportLikelyUnsafeImportRequiredError&&r.tracker.reportLikelyUnsafeImportRequiredError(u));var l=e.createLiteralTypeNode(e.createLiteral(u));if(r.tracker.trackExternalModuleSymbolOfImportTypeNode&&r.tracker.trackExternalModuleSymbolOfImportTypeNode(a[0]),r.approximateLength+=u.length+10,!s||e.isEntityName(s)){if(s)(f=e.isIdentifier(s)?s:s.right).typeArguments=void 0;return e.createImportTypeNode(l,s,c,o)}var _=function t(r){return e.isIndexedAccessTypeNode(r.objectType)?t(r.objectType):r}(s),d=_.objectType.typeName;return e.createIndexedAccessTypeNode(e.createImportTypeNode(l,d,c,o),_.indexType)}var p=g(a,a.length-1,0);if(e.isIndexedAccessTypeNode(p))return p;if(o)return e.createTypeQueryNode(p);var f,m=(f=e.isIdentifier(p)?p:p.right).typeArguments;return f.typeArguments=void 0,e.createTypeReferenceNode(p,m);function g(t,n,a){var o,s=n===t.length-1?i:x(t,n,r),c=t[n],u=t[n-1];if(0===n)r.flags|=16777216,o=zi(c,r),r.approximateLength+=(o?o.length:0)+1,r.flags^=16777216;else if(u&&Qn(u)){var l=Qn(u);e.forEachEntry(l,(function(t,r){if(oi(t,c)&&!fo(r)&&"export="!==r)return o=e.unescapeLeadingUnderscores(r),!0}))}if(o||(o=zi(c,r)),r.approximateLength+=o.length+1,!(16&r.flags)&&u&&bo(u)&&bo(u).get(c.escapedName)&&oi(bo(u).get(c.escapedName),c)){var _=g(t,n-1,a);return e.isIndexedAccessTypeNode(_)?e.createIndexedAccessTypeNode(_,e.createLiteralTypeNode(e.createLiteral(o))):e.createIndexedAccessTypeNode(e.createTypeReferenceNode(_,s),e.createLiteralTypeNode(e.createLiteral(o)))}var d=e.setEmitFlags(e.createIdentifier(o,s),16777216);if(d.symbol=c,n>a){_=g(t,n-1,a);return e.isEntityName(_)?e.createQualifiedName(_,d):e.Debug.fail("Impossible construct - an export of an indexed access cannot be reachable")}return d}}function T(e,t){return!!gn(t.enclosingDeclaration,e,788968,void 0,e,!1)}function E(t,r){if(4&r.flags&&r.typeParameterNames){var n=r.typeParameterNames.get(""+qc(t));if(n)return n}var i=C(t.symbol,r,788968,!0);if(!(75&i.kind))return e.createIdentifier("(Missing type parameter)");if(4&r.flags){for(var a=i.escapedText,o=0,s=a;r.typeParameterNamesByText&&r.typeParameterNamesByText.get(s)||T(s,r);)s=a+"_"+ ++o;s!==a&&(i=e.createIdentifier(s,i.typeArguments)),(r.typeParameterNames||(r.typeParameterNames=e.createMap())).set(""+qc(t),i),(r.typeParameterNamesByText||(r.typeParameterNamesByText=e.createMap())).set(i.escapedText,!0)}return i}function C(t,r,n,i){var a=h(t,r,n);return!i||1===a.length||r.encounteredError||65536&r.flags||(r.encounteredError=!0),function t(n,i){var a=x(n,i,r);var o=n[i];0===i&&(r.flags|=16777216);var s=zi(o,r);0===i&&(r.flags^=16777216);var c=e.setEmitFlags(e.createIdentifier(s,a),16777216);c.symbol=o;return i>0?e.createQualifiedName(t(n,i-1),c):c}(a,a.length-1)}function k(t,r,n){var i=h(t,r,n);return function t(n,i){var a=x(n,i,r);var o=n[i];0===i&&(r.flags|=16777216);var s=zi(o,r);0===i&&(r.flags^=16777216);var c=s.charCodeAt(0);if(e.isSingleOrDoubleQuote(c)&&e.some(o.declarations,Ni))return e.createLiteral(D(o,r));var u=e.isIdentifierStart(c,J);if(0===i||u){var l=e.setEmitFlags(e.createIdentifier(s,a),16777216);return l.symbol=o,i>0?e.createPropertyAccess(t(n,i-1),l):l}91===c&&(s=s.substring(1,s.length-1),c=s.charCodeAt(0));var _=void 0;return e.isSingleOrDoubleQuote(c)?(_=e.createLiteral(s.substring(1,s.length-1).replace(/\\./g,(function(e){return e.substring(1)})))).singleQuote=39===c:""+ +s===s&&(_=e.createLiteral(+s)),_||((_=e.setEmitFlags(e.createIdentifier(s,a),16777216)).symbol=o),e.createElementAccess(t(n,i-1),_)}(i,i.length-1)}function F(t){return e.isIdentifierText(t,K.target)?e.createIdentifier(t):e.createLiteral(Mf(t)?+t:t)}}(),ee=e.createSymbolTable(),te=en(4,"undefined");te.declarations=[];var re=en(1536,"globalThis",8);re.exports=ee,ee.set(re.escapedName,re);var ne,ie=en(4,"arguments"),ae=en(4,"require"),oe={getNodeCount:function(){return e.sum(n.getSourceFiles(),"nodeCount")},getIdentifierCount:function(){return e.sum(n.getSourceFiles(),"identifierCount")},getSymbolCount:function(){return e.sum(n.getSourceFiles(),"symbolCount")+v},getTypeCount:function(){return h},getRelationCacheSizes:function(){return{assignable:Vr.size,identity:Wr.size,subtype:Ur.size}},isUndefinedSymbol:function(e){return e===te},isArgumentsSymbol:function(e){return e===ie},isUnknownSymbol:function(e){return e===ge},getMergedSymbol:ti,getDiagnostics:eb,getGlobalDiagnostics:function(){return tb(),jr.getGlobalDiagnostics()},getTypeOfSymbolAtLocation:function(t,r){return(r=e.getParseTreeNode(r))?function(t,r){if(t=t.exportSymbol||t,75===r.kind&&(e.isRightSideOfQualifiedNameOrPropertyAccess(r)&&(r=r.parent),e.isExpressionNode(r)&&!e.isAssignmentTarget(r))){var n=Ky(r);if(si(dn(r).resolvedSymbol)===t)return n}return wa(t)}(t,r):xe},getSymbolsOfParameterPropertyDeclaration:function(t,r){var n=e.getParseTreeNode(t,e.isParameter);return void 0===n?e.Debug.fail("Cannot get symbols of a synthetic parameter that cannot be resolved to a parse-tree node."):function(t,r){var n=t.parent,i=t.parent.parent,a=fn(n.locals,r,111551),o=fn(bo(i.symbol),r,111551);if(a&&o)return[a,o];return e.Debug.fail("There should exist two symbols, one as property declaration and one as parameter declaration")}(n,e.escapeLeadingUnderscores(r))},getDeclaredTypeOfSymbol:ro,getPropertiesOfType:ts,getPropertyOfType:function(t,r){return vs(t,e.escapeLeadingUnderscores(r))},getTypeOfPropertyOfType:function(t,r){return Xi(t,e.escapeLeadingUnderscores(r))},getIndexInfoOfType:Ts,getSignaturesOfType:xs,getIndexTypeOfType:Es,getBaseTypes:Wa,getBaseTypeOfLiteralType:k_,getWidenedType:rd,getTypeFromTypeNode:function(t){var r=e.getParseTreeNode(t,e.isTypeNode);return r?Yu(r):xe},getParameterType:Mg,getPromisedTypeOfPromise:lh,getReturnTypeOfSignature:zs,isNullableType:_m,getNullableType:J_,getNonNullableType:U_,getNonOptionalType:W_,getTypeArguments:_c,typeToTypeNode:Z.typeToTypeNode,indexInfoToIndexSignatureDeclaration:Z.indexInfoToIndexSignatureDeclaration,signatureToSignatureDeclaration:Z.signatureToSignatureDeclaration,symbolToEntityName:Z.symbolToEntityName,symbolToExpression:Z.symbolToExpression,symbolToTypeParameterDeclarations:Z.symbolToTypeParameterDeclarations,symbolToParameterDeclaration:Z.symbolToParameterDeclaration,typeParameterToDeclaration:Z.typeParameterToDeclaration,getSymbolsInScope:function(t,r){return(t=e.getParseTreeNode(t))?function(t,r){if(16777216&t.flags)return[];var n=e.createSymbolTable(),i=!1;return function(){for(;t;){switch(t.locals&&!pn(t)&&o(t.locals,r),t.kind){case 288:if(!e.isExternalOrCommonJsModule(t))break;case 248:o(ri(t).exports,2623475&r);break;case 247:o(ri(t).exports,8&r);break;case 213:t.name&&a(t.symbol,r);case 244:case 245:i||o(bo(ri(t)),788968&r);break;case 200:t.name&&a(t.symbol,r)}e.introducesArgumentsExoticObject(t)&&a(ie,r),i=e.hasModifier(t,32),t=t.parent}o(ee,r)}(),n.delete("this"),Ns(n);function a(t,r){if(e.getCombinedLocalAndExportSymbolFlags(t)&r){var i=t.escapedName;n.has(i)||n.set(i,t)}}function o(e,t){t&&e.forEach((function(e){a(e,t)}))}}(t,r):[]},getSymbolAtLocation:function(t){return(t=e.getParseTreeNode(t))?cb(t):void 0},getShorthandAssignmentValueSymbol:function(t){return(t=e.getParseTreeNode(t))?function(e){if(e&&280===e.kind)return Kn(e.name,2208703);return}(t):void 0},getExportSpecifierLocalTargetSymbol:function(t){var r=e.getParseTreeNode(t,e.isExportSpecifier);return r?function(e){return e.parent.parent.moduleSpecifier?An(e.parent.parent,e):Kn(e.propertyName||e.name,2998271)}(r):void 0},getExportSymbolOfSymbol:function(e){return ti(e.exportSymbol||e)},getTypeAtLocation:function(t){return(t=e.getParseTreeNode(t))?ub(t):xe},getTypeOfAssignmentPattern:function(t){var r=e.getParseTreeNode(t,e.isAssignmentPattern);return r&&lb(r)||xe},getPropertySymbolOfDestructuringAssignment:function(t){var r=e.getParseTreeNode(t,e.isIdentifier);return r?function(t){var r=lb(e.cast(t.parent.parent,e.isAssignmentPattern));return r&&vs(r,t.escapedText)}(r):void 0},signatureToString:function(t,r,n,i){return wi(t,e.getParseTreeNode(r),n,i)},typeToString:function(t,r,n){return Ii(t,e.getParseTreeNode(r),n)},symbolToString:function(t,r,n,i){return Pi(t,e.getParseTreeNode(r),n,i)},typePredicateToString:function(t,r,n){return Ri(t,e.getParseTreeNode(r),n)},writeSignature:function(t,r,n,i,a){return wi(t,e.getParseTreeNode(r),n,i,a)},writeType:function(t,r,n,i){return Ii(t,e.getParseTreeNode(r),n,i)},writeSymbol:function(t,r,n,i,a){return Pi(t,e.getParseTreeNode(r),n,i,a)},writeTypePredicate:function(t,r,n,i){return Ri(t,e.getParseTreeNode(r),n,i)},getAugmentedPropertiesOfType:fb,getRootSymbols:function t(r){var n=function(t){if(6&e.getCheckFlags(t))return e.mapDefined(_n(t).containingType.types,(function(e){return vs(e,t.escapedName)}));if(33554432&t.flags){var r=t,n=r.leftSpread,i=r.rightSpread,a=r.syntheticOrigin;return n?[n,i]:a?[a]:e.singleElementArray(function(e){var t,r=e;for(;r=_n(r).target;)t=r;return t}(t))}return}(r);return n?e.flatMap(n,t):[r]},getContextualType:function(t,r){var n=e.getParseTreeNode(t,e.isExpression);return n?xf(n,r):void 0},getContextualTypeForObjectLiteralElement:function(t){var r=e.getParseTreeNode(t,e.isObjectLiteralElementLike);return r?pf(r):void 0},getContextualTypeForArgumentAtIndex:function(t,r){var n=e.getParseTreeNode(t,e.isCallLikeExpression);return n&&uf(n,r)},getContextualTypeForJsxAttribute:function(t){var r=e.getParseTreeNode(t,e.isJsxAttributeLike);return r&&gf(r)},isContextSensitive:bl,getFullyQualifiedName:jn,getResolvedSignature:function(e,t,r){return se(e,t,r,0)},getResolvedSignatureForSignatureHelp:function(e,t,r){return se(e,t,r,16)},getExpandedParameters:No,hasEffectiveRestParameter:Kg,getConstantValue:function(t){var r=e.getParseTreeNode(t,Ob);return r?Mb(r):void 0},isValidPropertyAccess:function(t,r){var n=e.getParseTreeNode(t,e.isPropertyAccessOrQualifiedNameOrImportTypeNode);return!!n&&function(e,t){switch(e.kind){case 193:return Pm(e,101===e.expression.kind,t,rd(zy(e.expression)));case 152:return Pm(e,!1,t,rd(zy(e.left)));case 187:return Pm(e,!1,t,Yu(e))}}(n,e.escapeLeadingUnderscores(r))},isValidPropertyAccessForCompletions:function(t,r,n){var i=e.getParseTreeNode(t,e.isPropertyAccessExpression);return!!i&&function(e,t,r){return Pm(e,193===e.kind&&101===e.expression.kind,r.escapedName,t)}(i,r,n)},getSignatureFromDeclaration:function(t){var r=e.getParseTreeNode(t,e.isFunctionLike);return r?Ls(r):void 0},isImplementationOfOverload:function(t){var r=e.getParseTreeNode(t,e.isFunctionLike);return r?kb(r):void 0},getImmediateAliasedSymbol:Bf,getAliasedSymbol:Mn,getEmitResolver:function(e,t){return eb(e,t),$},getExportsOfModule:Yn,getExportsAndPropertiesOfModule:function(t){var r=Yn(t),n=Wn(t);n!==t&&e.addRange(r,ts(wa(n)));return r},getSymbolWalker:e.createGetSymbolWalker((function(e){return qs(e)||he}),Js,zs,Wa,Qo,wa,Od,Ss,ns,e.getFirstIdentifier,_c),getAmbientModules:function(){at||(at=[],ee.forEach((function(e,t){c.test(t)&&at.push(e)})));return at},getJsxIntrinsicTagNamesAt:function(t){var r=Wf(C.IntrinsicElements,t);return r?ts(r):e.emptyArray},isOptionalParameter:function(t){var r=e.getParseTreeNode(t,e.isParameter);return!!r&&Ps(r)},tryGetMemberInModuleExports:function(t,r){return Xn(e.escapeLeadingUnderscores(t),r)},tryGetMemberInModuleExportsAndProperties:function(t,r){return function(e,t){var r=Xn(e,t);if(r)return r;var n=Wn(t);if(n===t)return;var i=wa(n);return 131068&i.flags?void 0:vs(i,e)}(e.escapeLeadingUnderscores(t),r)},tryFindAmbientModuleWithoutAugmentations:function(e){return Fs(e,!1)},getApparentType:ms,getUnionType:Qc,isTypeAssignableTo:function(e,t){return Fl(e,t)},createAnonymousType:hi,createSignature:To,createSymbol:en,createIndexInfo:tc,getAnyType:function(){return he},getStringType:function(){return Ne},getNumberType:function(){return Ae},createPromiseType:Gg,createArrayType:jc,getElementTypeOfArrayType:v_,getBooleanType:function(){return Me},getFalseType:function(e){return e?Pe:we},getTrueType:function(e){return e?Ie:Oe},getVoidType:function(){return Re},getUndefinedType:function(){return Se},getNullType:function(){return Ce},getESSymbolType:function(){return Le},getNeverType:function(){return Be},getOptionalType:function(){return Ee},isSymbolAccessible:Ei,getObjectFlags:e.getObjectFlags,isArrayType:y_,isTupleType:w_,isArrayLikeType:b_,isTypeInvalidDueToUnionDiscriminant:function(e,t){return t.properties.some((function(t){var r=t.name&&ou(t.name),n=r&&_o(r)?yo(r):void 0,i=void 0===n?void 0:Xi(e,n);return!!i&&C_(i)&&!Fl(ub(t),i)}))},getAllPossiblePropertiesOfTypes:function(t){var r=Qc(t);if(!(1048576&r.flags))return fb(r);for(var n=e.createSymbolTable(),i=0,a=t;i<a.length;i++)for(var o=a[i],s=0,c=fb(o);s<c.length;s++){var u=c[s].escapedName;if(!n.has(u)){var l=gs(r,u);l&&n.set(u,l)}}return e.arrayFrom(n.values())},getSuggestionForNonexistentProperty:function(e,t){return Cm(e,t)},getSuggestionForNonexistentSymbol:function(t,r,n){return function(t,r,n){var i=km(t,r,n);return i&&e.symbolName(i)}(t,e.escapeLeadingUnderscores(r),n)},getSuggestionForNonexistentExport:function(t,r){return function(t,r){var n=Nm(t,r);return n&&e.symbolName(n)}(t,r)},getBaseConstraintOfType:cs,getDefaultFromTypeParameter:function(e){return e&&262144&e.flags?ps(e):void 0},resolveName:function(t,r,n,i){return gn(r,e.escapeLeadingUnderscores(t),n,void 0,void 0,!1,i)},getJsxNamespace:function(t){return e.unescapeLeadingUnderscores(Yr(t))},getAccessibleSymbolChain:xi,getTypePredicateOfSignature:Js,resolveExternalModuleSymbol:Wn,tryGetThisTypeAt:function(t,r){return(t=e.getParseTreeNode(t))&&Xp(t,r)},getTypeArgumentConstraint:function(t){var r=e.getParseTreeNode(t,e.isTypeNode);return r&&function(t){var r=e.tryCast(t.parent,e.isTypeReferenceType);if(!r)return;var n=th(r),i=ns(n[r.typeArguments.indexOf(t)]);return i&&gl(i,el(n,Zy(r,n)))}(r)},getSuggestionDiagnostics:function(t,i){if(e.skipTypeChecking(t,K,n))return e.emptyArray;var a;try{return o=i,Qv(t),e.Debug.assert(!!(1&dn(t).flags)),a=e.addRange(a,Kr.getDiagnostics(t.fileName)),t.isDeclarationFile||$v(0)&&$v(1)||Sh(Zv(t),(function(t,n,i){e.containsParseError(t)||$v(n)||(a||(a=[])).push(r(r({},i),{category:e.DiagnosticCategory.Suggestion}))})),a||e.emptyArray}finally{o=void 0}},runWithCancellationToken:function(e,t){try{return o=e,t(oe)}finally{o=void 0}},getLocalTypeParametersOfClassOrInterfaceOrTypeAlias:ja};function se(t,r,n,i){var a=e.getParseTreeNode(t,e.isCallLikeExpression);ne=n;var o=a?Dg(a,r,i):void 0;return ne=void 0,o}var ce=e.createMap(),ue=e.createMap(),le=e.createMap(),_e=e.createMap(),de=e.createMap(),pe=e.createMap(),fe=[],me=e.createMap(),ge=en(4,"unknown"),ye=en(0,"__resolving__"),he=_i(1,"any"),ve=_i(1,"any"),be=_i(1,"any"),xe=_i(1,"error"),De=_i(2,"unknown"),Se=_i(32768,"undefined"),Te=V?Se:_i(32768,"undefined",262144),Ee=_i(32768,"undefined"),Ce=_i(65536,"null"),ke=V?Ce:_i(65536,"null",262144),Ne=_i(4,"string"),Ae=_i(8,"number"),Fe=_i(64,"bigint"),Pe=_i(512,"false"),we=_i(512,"false"),Ie=_i(512,"true"),Oe=_i(512,"true");Ie.regularType=Oe,Ie.freshType=Ie,Oe.regularType=Oe,Oe.freshType=Ie,Pe.regularType=we,Pe.freshType=Pe,we.regularType=we,we.freshType=Pe;var Me=di([we,Oe]);di([we,Ie]),di([Pe,Oe]),di([Pe,Ie]);var Le=_i(4096,"symbol"),Re=_i(16384,"void"),Be=_i(131072,"never"),je=_i(131072,"never"),Ke=_i(131072,"never",1048576),Je=_i(131072,"never"),ze=_i(131072,"never"),Ue=_i(67108864,"object"),Ve=Qc([Ne,Ae,Le]),qe=X?Ne:Ve,We=Qc([Ae,Fe]),Ge=hi(void 0,B,e.emptyArray,e.emptyArray,void 0,void 0),He=hi(void 0,B,e.emptyArray,e.emptyArray,void 0,void 0);He.objectFlags|=4096;var Ye=en(2048,"__type");Ye.members=e.createSymbolTable();var Xe=hi(Ye,B,e.emptyArray,e.emptyArray,void 0,void 0),Qe=hi(void 0,B,e.emptyArray,e.emptyArray,void 0,void 0);Qe.instantiations=e.createMap();var $e=hi(void 0,B,e.emptyArray,e.emptyArray,void 0,void 0);$e.objectFlags|=1048576;var Ze=hi(void 0,B,e.emptyArray,e.emptyArray,void 0,void 0),et=hi(void 0,B,e.emptyArray,e.emptyArray,void 0,void 0),tt=hi(void 0,B,e.emptyArray,e.emptyArray,void 0,void 0),rt=fi(),nt=fi();nt.constraint=rt;var it,at,ot,st,ct,ut,lt,_t,dt,pt,ft,mt,gt,yt,ht,vt,bt,xt,Dt,St,Tt,Et,Ct,kt,Nt,At,Ft,Pt,wt,It,Ot,Mt,Lt,Rt,Bt,jt,Kt,Jt,zt,Ut,Vt,qt,Wt,Gt,Ht,Yt,Xt=fi(),Qt=Is(1,"<<unresolved>>",0,he),$t=To(void 0,void 0,void 0,e.emptyArray,he,void 0,0,0),Zt=To(void 0,void 0,void 0,e.emptyArray,xe,void 0,0,0),er=To(void 0,void 0,void 0,e.emptyArray,he,void 0,0,0),tr=To(void 0,void 0,void 0,e.emptyArray,je,void 0,0,0),rr=tc(Ne,!0),nr=e.createMap(),ir={get yieldType(){throw new Error("Not supported")},get returnType(){throw new Error("Not supported")},get nextType(){throw new Error("Not supported")}},ar=rv(he,he,he),or=rv(he,he,De),sr=rv(Be,he,Se),cr={iterableCacheKey:"iterationTypesOfAsyncIterable",iteratorCacheKey:"iterationTypesOfAsyncIterator",iteratorSymbolName:"asyncIterator",getGlobalIteratorType:function(e){return Rt||(Rt=Fc("AsyncIterator",3,e))||Qe},getGlobalIterableType:function(e){return Lt||(Lt=Fc("AsyncIterable",1,e))||Qe},getGlobalIterableIteratorType:function(e){return Bt||(Bt=Fc("AsyncIterableIterator",1,e))||Qe},getGlobalGeneratorType:function(e){return jt||(jt=Fc("AsyncGenerator",3,e))||Qe},resolveIterationType:dh,mustHaveANextMethodDiagnostic:e.Diagnostics.An_async_iterator_must_have_a_next_method,mustBeAMethodDiagnostic:e.Diagnostics.The_0_property_of_an_async_iterator_must_be_a_method,mustHaveAValueDiagnostic:e.Diagnostics.The_type_returned_by_the_0_method_of_an_async_iterator_must_be_a_promise_for_a_type_with_a_value_property},ur={iterableCacheKey:"iterationTypesOfIterable",iteratorCacheKey:"iterationTypesOfIterator",iteratorSymbolName:"iterator",getGlobalIteratorType:function(e){return Pt||(Pt=Fc("Iterator",3,e))||Qe},getGlobalIterableType:Mc,getGlobalIterableIteratorType:function(e){return wt||(wt=Fc("IterableIterator",1,e))||Qe},getGlobalGeneratorType:function(e){return It||(It=Fc("Generator",3,e))||Qe},resolveIterationType:function(e,t){return e},mustHaveANextMethodDiagnostic:e.Diagnostics.An_iterator_must_have_a_next_method,mustBeAMethodDiagnostic:e.Diagnostics.The_0_property_of_an_iterator_must_be_a_method,mustHaveAValueDiagnostic:e.Diagnostics.The_type_returned_by_the_0_method_of_an_iterator_must_have_a_value_property},lr=e.createMap(),_r=e.createMap(),dr=0,pr=0,fr=0,mr=!1,gr=0,yr=Wu(""),hr=Wu(0),vr=Wu({negative:!1,base10Value:"0"}),br=[],xr=[],Dr=[],Sr=0,Tr=10,Er=[],Cr=[],kr=[],Nr=[],Ar=[],Fr=[],Pr=[],wr=[],Ir=[],Or=[],Mr=[],Lr=[],Rr=[],Br=[],jr=e.createDiagnosticCollection(),Kr=e.createDiagnosticCollection(),Jr=e.createMapFromTemplate({string:Ne,number:Ae,bigint:Fe,boolean:Me,symbol:Le,undefined:Se}),zr=Qc(e.arrayFrom(D.keys(),Wu)),Ur=e.createMap(),Vr=e.createMap(),qr=e.createMap(),Wr=e.createMap(),Gr=e.createMap(),Hr=e.createSymbolTable();return Hr.set(te.escapedName,te),function(){for(var t=0,r=n.getSourceFiles();t<r.length;t++){var i=r[t];e.bindSourceFile(i,K)}var a;it=e.createMap();for(var o=0,s=n.getSourceFiles();o<s.length;o++){if(!(i=s[o]).redirectInfo){if(!e.isExternalOrCommonJsModule(i)){var c=i.locals.get("globalThis");if(c)for(var u=0,l=c.declarations;u<l.length;u++){var _=l[u];jr.add(e.createDiagnosticForNode(_,e.Diagnostics.Declaration_name_conflicts_with_built_in_global_identifier_0,"globalThis"))}un(ee,i.locals)}if(i.jsGlobalAugmentations&&un(ee,i.jsGlobalAugmentations),i.patternAmbientModules&&i.patternAmbientModules.length&&(ot=e.concatenate(ot,i.patternAmbientModules)),i.moduleAugmentations.length&&(a||(a=[])).push(i.moduleAugmentations),i.symbol&&i.symbol.globalExports)i.symbol.globalExports.forEach((function(e,t){ee.has(t)||ee.set(t,e)}))}}if(a)for(var d=0,p=a;d<p.length;d++)for(var f=p[d],m=0,g=f;m<g.length;m++){var y=g[m];e.isGlobalScopeAugmentation(y.parent)&&ln(y)}(function(t,r,n){r.forEach((function(r,i){var a=t.get(i);a?e.forEach(a.declarations,function(t,r){return function(n){return jr.add(e.createDiagnosticForNode(n,r,t))}}(e.unescapeLeadingUnderscores(i),n)):t.set(i,r)}))})(ee,Hr,e.Diagnostics.Declaration_name_conflicts_with_built_in_global_identifier_0),_n(te).type=Te,_n(ie).type=Fc("IArguments",0,!0),_n(ge).type=xe,_n(re).type=pi(16,re),dt=Fc("Array",1,!0),ct=Fc("Object",0,!0),ut=Fc("Function",0,!0),lt=W&&Fc("CallableFunction",0,!0)||ut,_t=W&&Fc("NewableFunction",0,!0)||ut,ft=Fc("String",0,!0),mt=Fc("Number",0,!0),gt=Fc("Boolean",0,!0),yt=Fc("RegExp",0,!0),vt=jc(he),(bt=jc(ve))===Ge&&(bt=hi(void 0,B,e.emptyArray,e.emptyArray,void 0,void 0));if(pt=Lc("ReadonlyArray",1)||dt,xt=pt?Rc(pt,[he]):vt,ht=Lc("ThisType",1),a)for(var h=0,v=a;h<v.length;h++){f=v[h];for(var b=0,x=f;b<x.length;b++){y=x[b];e.isGlobalScopeAugmentation(y.parent)||ln(y)}}it.forEach((function(t){var r=t.firstFile,n=t.secondFile,i=t.conflictingSymbols;if(i.size<8)i.forEach((function(t,r){for(var n=t.isBlockScoped,i=t.firstFileLocations,a=t.secondFileLocations,o=n?e.Diagnostics.Cannot_redeclare_block_scoped_variable_0:e.Diagnostics.Duplicate_identifier_0,s=0,c=i;s<c.length;s++){cn(c[s],o,r,a)}for(var u=0,l=a;u<l.length;u++){cn(l[u],o,r,i)}}));else{var a=e.arrayFrom(i.keys()).join(", ");jr.add(e.addRelatedInfo(e.createDiagnosticForNode(r,e.Diagnostics.Definitions_of_the_following_identifiers_conflict_with_those_in_another_file_Colon_0,a),e.createDiagnosticForNode(n,e.Diagnostics.Conflicts_are_in_this_file))),jr.add(e.addRelatedInfo(e.createDiagnosticForNode(n,e.Diagnostics.Definitions_of_the_following_identifiers_conflict_with_those_in_another_file_Colon_0,a),e.createDiagnosticForNode(r,e.Diagnostics.Conflicts_are_in_this_file)))}})),it=void 0}(),oe;function Yr(t){if(t){var r=e.getSourceFileOfNode(t);if(r){if(r.localJsxNamespace)return r.localJsxNamespace;var n=r.pragmas.get("jsx");if(n){var i=e.isArray(n)?n[0]:n;if(r.localJsxFactory=e.parseIsolatedEntityName(i.arguments.factory,J),r.localJsxFactory)return r.localJsxNamespace=e.getFirstIdentifier(r.localJsxFactory).escapedText}}}return Gt||(Gt="React",K.jsxFactory?(Ht=e.parseIsolatedEntityName(K.jsxFactory,J))&&(Gt=e.getFirstIdentifier(Ht).escapedText):K.reactNamespace&&(Gt=e.escapeLeadingUnderscores(K.reactNamespace))),Gt}function Xr(t,r,n,i,a,o){var s=t?e.createDiagnosticForNode(t,r,n,i,a,o):e.createCompilerDiagnostic(r,n,i,a,o);return jr.add(s),s}function Qr(t,n){t?jr.add(n):Kr.add(r(r({},n),{category:e.DiagnosticCategory.Suggestion}))}function $r(t,r,n,i,a,o,s){Qr(t,"message"in n?e.createDiagnosticForNode(r,n,i,a,o,s):e.createDiagnosticForNodeFromMessageChain(r,n))}function Zr(t,r,n,i,a,o,s){var c=Xr(t,n,i,a,o,s);if(r){var u=e.createDiagnosticForNode(t,e.Diagnostics.Did_you_forget_to_use_await);e.addRelatedInfo(c,u)}return c}function en(e,t,r){v++;var n=new m(33554432|e,t);return n.checkFlags=r||0,n}function tn(e){return 0!=(33554432&e.flags)}function rn(e){var t=0;return 2&e&&(t|=111551),1&e&&(t|=111550),4&e&&(t|=0),8&e&&(t|=900095),16&e&&(t|=110991),32&e&&(t|=899503),64&e&&(t|=788872),256&e&&(t|=899327),128&e&&(t|=899967),512&e&&(t|=110735),8192&e&&(t|=103359),32768&e&&(t|=46015),65536&e&&(t|=78783),262144&e&&(t|=526824),524288&e&&(t|=788968),2097152&e&&(t|=2097152),t}function nn(e,t){t.mergeId||(t.mergeId=_,_++),Er[t.mergeId]=e}function an(t){var r=en(t.flags,t.escapedName);return r.declarations=t.declarations?t.declarations.slice():[],r.parent=t.parent,t.valueDeclaration&&(r.valueDeclaration=t.valueDeclaration),t.constEnumOnlyModule&&(r.constEnumOnlyModule=!0),t.members&&(r.members=e.cloneMap(t.members)),t.exports&&(r.exports=e.cloneMap(t.exports)),nn(r,t),r}function on(t,r,n){if(void 0===n&&(n=!1),!(t.flags&rn(r.flags))||67108864&(r.flags|t.flags)){if(r===t)return t;if(!(33554432&t.flags)){var i=On(t);if(i===ge)return r;t=an(i)}512&r.flags&&512&t.flags&&t.constEnumOnlyModule&&!r.constEnumOnlyModule&&(t.constEnumOnlyModule=!1),t.flags|=r.flags,r.valueDeclaration&&(!t.valueDeclaration||e.isAssignmentDeclaration(t.valueDeclaration)&&!e.isAssignmentDeclaration(r.valueDeclaration)||e.isEffectiveModuleDeclaration(t.valueDeclaration)&&!e.isEffectiveModuleDeclaration(r.valueDeclaration))&&(t.valueDeclaration=r.valueDeclaration),e.addRange(t.declarations,r.declarations),r.members&&(t.members||(t.members=e.createSymbolTable()),un(t.members,r.members,n)),r.exports&&(t.exports||(t.exports=e.createSymbolTable()),un(t.exports,r.exports,n)),n||nn(t,r)}else if(1024&t.flags)t!==re&&Xr(e.getNameOfDeclaration(r.declarations[0]),e.Diagnostics.Cannot_augment_module_0_with_value_exports_because_it_resolves_to_a_non_module_entity,Pi(t));else{var a=!!(384&t.flags||384&r.flags),o=!!(2&t.flags||2&r.flags),s=a?e.Diagnostics.Enum_declarations_can_only_merge_with_namespace_or_other_enum_declarations:o?e.Diagnostics.Cannot_redeclare_block_scoped_variable_0:e.Diagnostics.Duplicate_identifier_0,c=r.declarations&&e.getSourceFileOfNode(r.declarations[0]),u=t.declarations&&e.getSourceFileOfNode(t.declarations[0]),l=Pi(r);if(c&&u&&it&&!a&&c!==u){var _=-1===e.comparePaths(c.path,u.path)?c:u,d=_===c?u:c,p=e.getOrUpdate(it,_.path+"|"+d.path,(function(){return{firstFile:_,secondFile:d,conflictingSymbols:e.createMap()}})),f=e.getOrUpdate(p.conflictingSymbols,l,(function(){return{isBlockScoped:o,firstFileLocations:[],secondFileLocations:[]}}));m(f.firstFileLocations,r),m(f.secondFileLocations,t)}else sn(r,s,l,t),sn(t,s,l,r)}return t;function m(t,r){for(var n=0,i=r.declarations;n<i.length;n++){var a=i[n];e.pushIfUnique(t,(e.getExpandoInitializer(a,!1)?e.getNameOfExpando(a):e.getNameOfDeclaration(a))||a)}}}function sn(t,r,n,i){e.forEach(t.declarations,(function(t){cn((e.getExpandoInitializer(t,!1)?e.getNameOfExpando(t):e.getNameOfDeclaration(t))||t,r,n,i.declarations)}))}function cn(t,r,n,i){for(var a=function(t,r,n,i,a,o){var s=t?e.createDiagnosticForNode(t,r,n,i,a,o):e.createCompilerDiagnostic(r,n,i,a,o),c=jr.lookup(s);return c||(jr.add(s),s)}(t,r,n),o=0,s=i||e.emptyArray;o<s.length;o++){var c=s[o];a.relatedInformation=a.relatedInformation||[],e.length(a.relatedInformation)>=5||e.addRelatedInfo(a,e.length(a.relatedInformation)?e.createDiagnosticForNode(c,e.Diagnostics.and_here):e.createDiagnosticForNode(c,e.Diagnostics._0_was_also_declared_here,n))}}function un(e,t,r){void 0===r&&(r=!1),t.forEach((function(t,n){var i=e.get(n);e.set(n,i?on(i,t,r):t)}))}function ln(t){var r=t.parent;if(r.symbol.declarations[0]===r)if(e.isGlobalScopeAugmentation(r))un(ee,r.symbol.exports);else{var n=Un(t,t,8388608&t.parent.parent.flags?void 0:e.Diagnostics.Invalid_module_name_in_augmentation_module_0_cannot_be_found,!0);if(!n)return;if(1920&(n=Wn(n)).flags)if(e.some(ot,(function(e){return n===e.symbol}))){var i=on(r.symbol,n,!0);st||(st=e.createMap()),st.set(t.text,i)}else on(n,r.symbol);else Xr(t,e.Diagnostics.Cannot_augment_module_0_because_it_resolves_to_a_non_module_entity,t.text)}else e.Debug.assert(r.symbol.declarations.length>1)}function _n(e){if(33554432&e.flags)return e;var t=A(e);return Cr[t]||(Cr[t]={})}function dn(e){var t=N(e);return kr[t]||(kr[t]={flags:0})}function pn(t){return 288===t.kind&&!e.isExternalOrCommonJsModule(t)}function fn(t,r,n){if(n){var i=t.get(r);if(i){if(e.Debug.assert(0==(1&e.getCheckFlags(i)),"Should never get an instantiated symbol here."),i.flags&n)return i;if(2097152&i.flags){var a=Mn(i);if(a===ge||a.flags&n)return i}}}}function mn(t,r){var i=e.getSourceFileOfNode(t),a=e.getSourceFileOfNode(r);if(i!==a){if(z&&(i.externalModuleIndicator||a.externalModuleIndicator)||!K.outFile&&!K.out||Md(r)||8388608&t.flags)return!0;if(u(r,t))return!0;var o=n.getSourceFiles();return o.indexOf(i)<=o.indexOf(a)}if(t.pos<=r.pos){if(190===t.kind){var s=e.getAncestor(r,190);return s?e.findAncestor(s,e.isBindingElement)!==e.findAncestor(t,e.isBindingElement)||t.pos<s.pos:mn(e.getAncestor(t,241),r)}return 241===t.kind?!function(t,r){var n=e.getEnclosingBlockScopeContainer(t);switch(t.parent.parent.kind){case 224:case 229:case 231:if(Sn(r,t,n))return!0}var i=t.parent.parent;return e.isForInOrOfStatement(i)&&Sn(r,i.expression,n)}(t,r):e.isClassDeclaration(t)?!e.findAncestor(r,(function(r){return e.isComputedPropertyName(r)&&r.parent.parent===t})):!e.isPropertyDeclaration(t)||!function(t,r){if(r.end>t.end)return!1;return void 0===e.findAncestor(r,(function(e){if(e===t)return"quit";switch(e.kind){case 201:case 158:return!0;case 222:switch(e.parent.kind){case 162:case 160:case 163:return!0;default:return!1}default:return!1}}))}(t,r)}if(261===r.parent.kind||258===r.parent.kind&&r.parent.isExportEquals)return!0;if(258===r.kind&&r.isExportEquals)return!0;var c=e.getEnclosingBlockScopeContainer(t);return!!(4194304&r.flags)||Md(r)||u(r,t,c);function u(t,r,n){return!!e.findAncestor(t,(function(i){if(i===n)return"quit";if(e.isFunctionLike(i))return!0;if(i.parent&&158===i.parent.kind&&i.parent.initializer===i)if(e.hasModifier(i.parent,32)){if(160===r.kind)return!0}else if(!(158===r.kind&&!e.hasModifier(r,32))||e.getContainingClass(t)!==e.getContainingClass(r))return!0;return!1}))}}function gn(e,t,r,n,i,a,o,s){return void 0===o&&(o=!1),yn(e,t,r,n,i,a,o,fn,s)}function yn(t,r,n,i,a,o,s,c,u){var l,_,d,p,f,m,g=t,y=!1,h=t,v=!1;e:for(;t;){if(t.locals&&!pn(t)&&(l=c(t.locals,r,n))){var b=!0;if(e.isFunctionLike(t)&&_&&_!==t.body){if(n&l.flags&788968&&301!==_.kind&&(b=!!(262144&l.flags)&&(_===t.type||155===_.kind||154===_.kind)),n&l.flags&3){var x=t;K.target&&K.target>=2&&e.isParameter(_)&&x.body&&l.valueDeclaration.pos>=x.body.pos&&l.valueDeclaration.end<=x.body.end?b=!1:1&l.flags&&(b=155===_.kind||_===t.type&&!!e.findAncestor(l.valueDeclaration,e.isParameter))}}else 179===t.kind&&(b=_===t.trueType);if(b)break e;l=void 0}switch(y=y||hn(t,_),t.kind){case 288:if(!e.isExternalOrCommonJsModule(t))break;v=!0;case 248:var D=ri(t).exports||B;if(288===t.kind||e.isModuleDeclaration(t)&&8388608&t.flags&&!e.isGlobalScopeAugmentation(t)){if(l=D.get("default")){var S=e.getLocalSymbolForExportDefault(l);if(S&&l.flags&n&&S.escapedName===r)break e;l=void 0}var T=D.get(r);if(T&&2097152===T.flags&&e.getDeclarationOfKind(T,261))break}if("default"!==r&&(l=c(D,r,2623475&n))){if(!e.isSourceFile(t)||!t.commonJsModuleIndicator||l.declarations.some(e.isJSDocTypeAlias))break e;l=void 0}break;case 247:if(l=c(ri(t).exports,r,8&n))break e;break;case 158:if(!e.hasModifier(t,32)){var E=ui(t.parent);E&&E.locals&&c(E.locals,r,111551&n)&&(p=t)}break;case 244:case 213:case 245:if(l=c(ri(t).members||B,r,788968&n)){if(!xn(l,t)){l=void 0;break}if(_&&e.hasModifier(_,32))return void Xr(h,e.Diagnostics.Static_members_cannot_reference_class_type_parameters);break e}if(213===t.kind&&32&n){var C=t.name;if(C&&r===C.escapedText){l=t.symbol;break e}}break;case 215:if(_===t.expression&&89===t.parent.token){var k=t.parent.parent;if(e.isClassLike(k)&&(l=c(ri(k).members,r,788968&n)))return void(i&&Xr(h,e.Diagnostics.Base_class_expressions_cannot_reference_class_type_parameters))}break;case 153:if(m=t.parent.parent,(e.isClassLike(m)||245===m.kind)&&(l=c(ri(m).members,r,788968&n)))return void Xr(h,e.Diagnostics.A_computed_property_name_cannot_reference_a_type_parameter_from_its_containing_type);break;case 201:if(K.target>=2)break;case 160:case 161:case 162:case 163:case 243:if(3&n&&"arguments"===r){l=ie;break e}break;case 200:if(3&n&&"arguments"===r){l=ie;break e}if(16&n){var N=t.name;if(N&&r===N.escapedText){l=t.symbol;break e}}break;case 156:t.parent&&155===t.parent.kind&&(t=t.parent),t.parent&&(e.isClassElement(t.parent)||244===t.parent.kind)&&(t=t.parent);break;case 315:case 308:case 309:t=e.getJSDocHost(t);break;case 155:_&&_===t.initializer&&(f=t);break;case 190:if(_&&_===t.initializer)155===(I=e.getRootDeclaration(t)).kind&&(f=t)}vn(t)&&(d=t),_=t,t=t.parent}if(!o||!l||d&&l===d.symbol||(l.isReferenced|=n),!l){if(_&&(e.Debug.assert(288===_.kind),_.commonJsModuleIndicator&&"exports"===r&&n&_.symbol.flags))return _.symbol;s||(l=c(ee,r,n))}if(!l&&g&&e.isInJSFile(g)&&g.parent&&e.isRequireCall(g.parent,!1))return ae;if(l){if(i){if(p){var A=p.name;return void Xr(h,e.Diagnostics.Initializer_of_instance_member_variable_0_cannot_reference_identifier_1_declared_in_the_constructor,e.declarationNameToString(A),bn(a))}if(h&&(2&n||(32&n||384&n)&&111551==(111551&n))){var F=si(l);(2&F.flags||32&F.flags||384&F.flags)&&function(t,r){if(e.Debug.assert(!!(2&t.flags||32&t.flags||384&t.flags)),67108881&t.flags&&32&t.flags)return;var n=e.find(t.declarations,(function(t){return e.isBlockOrCatchScoped(t)||e.isClassLike(t)||247===t.kind}));if(void 0===n)return e.Debug.fail("checkResolvedBlockScopedVariable could not find block-scoped declaration");if(!(8388608&n.flags||mn(n,r))){var i=void 0,a=e.declarationNameToString(e.getNameOfDeclaration(n));2&t.flags?i=Xr(r,e.Diagnostics.Block_scoped_variable_0_used_before_its_declaration,a):32&t.flags?i=Xr(r,e.Diagnostics.Class_0_used_before_its_declaration,a):256&t.flags?i=Xr(r,e.Diagnostics.Enum_0_used_before_its_declaration,a):(e.Debug.assert(!!(128&t.flags)),K.preserveConstEnums&&(i=Xr(r,e.Diagnostics.Class_0_used_before_its_declaration,a))),i&&e.addRelatedInfo(i,e.createDiagnosticForNode(n,e.Diagnostics._0_is_declared_here,a))}}(F,h)}if(l&&v&&111551==(111551&n)&&!(4194304&g.flags)){var P=ti(l);e.length(P.declarations)&&e.every(P.declarations,(function(t){return e.isNamespaceExportDeclaration(t)||e.isSourceFile(t)&&!!t.symbol.globalExports}))&&$r(!K.allowUmdGlobalAccess,h,e.Diagnostics._0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead,e.unescapeLeadingUnderscores(r))}if(l&&f&&!y&&111551==(111551&n)){var w=ti(xo(l)),I=e.getRootDeclaration(f);w===ri(f)?Xr(h,e.Diagnostics.Parameter_0_cannot_be_referenced_in_its_initializer,e.declarationNameToString(f.name)):w.valueDeclaration&&w.valueDeclaration.pos>f.pos&&I.parent.locals&&c(I.parent.locals,w.escapedName,n)===w&&Xr(h,e.Diagnostics.Initializer_of_parameter_0_cannot_reference_identifier_1_declared_after_it,e.declarationNameToString(f.name),e.declarationNameToString(h))}}return l}if(i&&!(h&&(function(t,r,n){if(!e.isIdentifier(t)||t.escapedText!==r||nb(t)||Md(t))return!1;var i=e.getThisContainer(t,!1),a=i;for(;a;){if(e.isClassLike(a.parent)){var o=ri(a.parent);if(!o)break;if(vs(wa(o),r))return Xr(t,e.Diagnostics.Cannot_find_name_0_Did_you_mean_the_static_member_1_0,bn(n),Pi(o)),!0;if(a===i&&!e.hasModifier(a,32))if(vs(ro(o).thisType,r))return Xr(t,e.Diagnostics.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0,bn(n)),!0}a=a.parent}return!1}(h,r,a)||Dn(h)||function(t,r,n){var i=1920|(e.isInJSFile(t)?111551:0);if(n===i){var a=On(gn(t,r,788968&~i,void 0,void 0,!1)),o=t.parent;if(a){if(e.isQualifiedName(o)){e.Debug.assert(o.left===t,"Should only be resolving left side of qualified name as a namespace");var s=o.right.escapedText;if(vs(ro(a),s))return Xr(o,e.Diagnostics.Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_property_1_in_0_with_0_1,e.unescapeLeadingUnderscores(r),e.unescapeLeadingUnderscores(s)),!0}return Xr(t,e.Diagnostics._0_only_refers_to_a_type_but_is_being_used_as_a_namespace_here,e.unescapeLeadingUnderscores(r)),!0}}return!1}(h,r,n)||function(t,r,n){if(111551&n){if("any"===r||"string"===r||"number"===r||"boolean"===r||"never"===r)return Xr(t,e.Diagnostics._0_only_refers_to_a_type_but_is_being_used_as_a_value_here,e.unescapeLeadingUnderscores(r)),!0;var i=On(gn(t,r,788544,void 0,void 0,!1));if(i&&!(1024&i.flags)){var a=function(e){switch(e){case"Promise":case"Symbol":case"Map":case"WeakMap":case"Set":case"WeakSet":return!0}return!1}(r)?e.Diagnostics._0_only_refers_to_a_type_but_is_being_used_as_a_value_here_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_es2015_or_later:e.Diagnostics._0_only_refers_to_a_type_but_is_being_used_as_a_value_here;return Xr(t,a,e.unescapeLeadingUnderscores(r)),!0}}return!1}(h,r,n)||function(t,r,n){if(111127&n){if(On(gn(t,r,1024,void 0,void 0,!1)))return Xr(t,e.Diagnostics.Cannot_use_namespace_0_as_a_value,e.unescapeLeadingUnderscores(r)),!0}else if(788544&n){if(On(gn(t,r,1536,void 0,void 0,!1)))return Xr(t,e.Diagnostics.Cannot_use_namespace_0_as_a_type,e.unescapeLeadingUnderscores(r)),!0}return!1}(h,r,n)||function(t,r,n){if(788584&n){var i=On(gn(t,r,111127,void 0,void 0,!1));if(i&&!(1920&i.flags))return Xr(t,e.Diagnostics._0_refers_to_a_value_but_is_being_used_as_a_type_here,e.unescapeLeadingUnderscores(r)),!0}return!1}(h,r,n)))){var O=void 0;if(u&&Sr<Tr&&(O=km(g,r,n))){var M=Pi(O),L=Xr(h,u,bn(a),M);O.valueDeclaration&&e.addRelatedInfo(L,e.createDiagnosticForNode(O.valueDeclaration,e.Diagnostics._0_is_declared_here,M))}O||Xr(h,i,bn(a)),Sr++}}function hn(t,r){return 201!==t.kind&&200!==t.kind?e.isTypeQueryNode(t)||(e.isFunctionLikeDeclaration(t)||158===t.kind&&!e.hasModifier(t,32))&&(!r||r!==t.name):(!r||r!==t.name)&&(!(!t.asteriskToken&&!e.hasModifier(t,256))||!e.getImmediatelyInvokedFunctionExpression(t))}function vn(e){switch(e.kind){case 243:case 244:case 245:case 247:case 246:case 248:return!0;default:return!1}}function bn(t){return e.isString(t)?e.unescapeLeadingUnderscores(t):e.declarationNameToString(t)}function xn(t,r){for(var n=0,i=t.declarations;n<i.length;n++){var a=i[n];if(154===a.kind)if((e.isJSDocTemplateTag(a.parent)?e.getJSDocHost(a.parent):a.parent)===r)return!(e.isJSDocTemplateTag(a.parent)&&e.find(a.parent.parent.tags,e.isJSDocTypeAlias))}return!1}function Dn(t){var r=function t(r){switch(r.kind){case 75:case 193:return r.parent?t(r.parent):void 0;case 215:if(e.isEntityNameExpression(r.expression))return r.expression;default:return}}(t);return!(!r||!Kn(r,64,!0))&&(Xr(t,e.Diagnostics.Cannot_extend_an_interface_0_Did_you_mean_implements,e.getTextOfNode(r)),!0)}function Sn(t,r,n){return!!r&&!!e.findAncestor(t,(function(t){return t===n||e.isFunctionLike(t)?"quit":t===r}))}function Tn(e){switch(e.kind){case 252:return e;case 254:return e.parent;case 255:return e.parent.parent;case 257:return e.parent.parent.parent;default:return}}function En(t){return e.find(t.declarations,e.isAliasSymbolDeclaration)}function Cn(e,t,r){var n=e.exports.get("export=");return n?vs(wa(n),t):On(e.exports.get(t),r)}function kn(t){return e.isExportAssignment(t)&&!t.isExportEquals||e.hasModifier(t,512)||e.isExportSpecifier(t)}function Nn(t,r,n){if(!U)return!1;if(!t||t.isDeclarationFile){var i=Cn(r,"default",!0);return(!i||!e.some(i.declarations,kn))&&!Cn(r,e.escapeLeadingUnderscores("__esModule"),n)}return e.isSourceFileJS(t)?!t.externalModuleIndicator&&!Cn(r,e.escapeLeadingUnderscores("__esModule"),n):Hn(r)}function An(t,r,n){void 0===n&&(n=!1);var i=zn(t,t.moduleSpecifier),a=r.propertyName||r.name,o="default"===a.escapedText&&!(!K.allowSyntheticDefaultImports&&!K.esModuleInterop),s=Gn(i,t.moduleSpecifier,n,o);if(s&&a.escapedText){if(e.isShorthandAmbientModuleSymbol(i))return i;var c=void 0;c=i&&i.exports&&i.exports.get("export=")?vs(wa(s),a.escapedText):function(e,t){if(3&e.flags){var r=e.valueDeclaration.type;if(r)return On(vs(Yu(r),t))}}(s,a.escapedText),c=On(c,n);var u=function(e,t,r){if(1536&e.flags)return On(Qn(e).get(t),r)}(s,a.escapedText,n);!u&&U&&"default"===a.escapedText&&(u=Wn(i,n)||On(i,n));var l=u&&c&&u!==c?function(t,r){if(t===ge&&r===ge)return ge;if(790504&t.flags)return t;var n=en(t.flags|r.flags,t.escapedName);return n.declarations=e.deduplicate(e.concatenate(t.declarations,r.declarations),e.equateValues),n.parent=t.parent||r.parent,t.valueDeclaration&&(n.valueDeclaration=t.valueDeclaration),r.members&&(n.members=r.members),t.exports&&(n.exports=t.exports),n}(c,u):u||c;if(!l){var _=jn(i,t),d=e.declarationNameToString(a),p=Nm(a,s);if(void 0!==p){var f=Pi(p),m=Xr(a,e.Diagnostics.Module_0_has_no_exported_member_1_Did_you_mean_2,_,d,f);p.valueDeclaration&&e.addRelatedInfo(m,e.createDiagnosticForNode(p.valueDeclaration,e.Diagnostics._0_is_declared_here,f))}else i.exports&&i.exports.has("default")?Xr(a,e.Diagnostics.Module_0_has_no_exported_member_1_Did_you_mean_to_use_import_1_from_0_instead,_,d):Xr(a,e.Diagnostics.Module_0_has_no_exported_member_1,_,d)}return l}}function Fn(e,t,r){return e.parent.parent.moduleSpecifier?An(e.parent.parent,e,r):Kn(e.propertyName||e.name,t,!1,r)}function Pn(t,r){if(e.isClassExpression(t))return ky(t).symbol;if(e.isEntityName(t)||e.isEntityNameExpression(t)){var n=Kn(t,901119,!0,r);return n||(ky(t),dn(t).resolvedSymbol)}}function wn(t,r){switch(void 0===r&&(r=!1),t.kind){case 252:return function(t,r){return 263===t.moduleReference.kind?Wn(zn(t,e.getExternalModuleImportEqualsDeclarationExpression(t))):Bn(t.moduleReference,r)}(t,r);case 254:return function(t,r){var n=zn(t,t.parent.moduleSpecifier);if(n){var i=void 0;i=e.isShorthandAmbientModuleSymbol(n)?n:Cn(n,"default",r);var a=Nn(e.find(n.declarations,e.isSourceFile),n,r);if(i||a){if(a)return Wn(n,r)||On(n,r)}else if(Hn(n)){var o=z>=e.ModuleKind.ES2015?"allowSyntheticDefaultImports":"esModuleInterop",s=n.exports.get("export=").valueDeclaration,c=Xr(t.name,e.Diagnostics.Module_0_can_only_be_default_imported_using_the_1_flag,Pi(n),o);e.addRelatedInfo(c,e.createDiagnosticForNode(s,e.Diagnostics.This_module_is_declared_with_using_export_and_can_only_be_used_with_a_default_import_when_using_the_0_flag,o))}else n.exports&&n.exports.has(t.symbol.escapedName)?Xr(t.name,e.Diagnostics.Module_0_has_no_default_export_Did_you_mean_to_use_import_1_from_0_instead,Pi(n),Pi(t.symbol)):Xr(t.name,e.Diagnostics.Module_0_has_no_default_export,Pi(n));return i}}(t,r);case 255:return function(e,t){var r=e.parent.parent.moduleSpecifier;return Gn(zn(e,r),r,t,!1)}(t,r);case 257:return function(e,t){return An(e.parent.parent.parent,e,t)}(t,r);case 261:return Fn(t,901119,r);case 258:case 208:return function(t,r){return Pn(e.isExportAssignment(t)?t.expression:t.right,r)}(t,r);case 251:return function(e,t){return Wn(e.parent.symbol,t)}(t,r);case 280:return Kn(t.name,901119,!0,r);case 279:return function(e,t){return Pn(e.initializer,t)}(t,r);case 193:return function(t,r){if(e.isBinaryExpression(t.parent)&&t.parent.left===t&&62===t.parent.operatorToken.kind)return Pn(t.parent.right,r)}(t,r);default:return e.Debug.fail()}}function In(e,t){return void 0===t&&(t=901119),!!e&&(2097152==(e.flags&(2097152|t))||!!(2097152&e.flags&&67108864&e.flags))}function On(e,t){return!t&&In(e)?Mn(e):e}function Mn(t){e.Debug.assert(0!=(2097152&t.flags),"Should only get Alias here.");var r=_n(t);if(r.target)r.target===ye&&(r.target=ge);else{r.target=ye;var n=En(t);if(!n)return e.Debug.fail();var i=wn(n);r.target===ye?r.target=i||ge:Xr(n,e.Diagnostics.Circular_definition_of_import_alias_0,Pi(t))}return r.target}function Ln(e){var t=ri(e),r=Mn(t);r&&((r===ge||111551&r.flags&&!Cb(r))&&Rn(t))}function Rn(t){var r=_n(t);if(!r.referenced){r.referenced=!0;var n=En(t);if(!n)return e.Debug.fail();if(e.isInternalModuleImportEqualsDeclaration(n)){var i=On(t);(i===ge||111551&i.flags)&&ky(n.moduleReference)}}}function Bn(t,r){return 75===t.kind&&e.isRightSideOfQualifiedNameOrPropertyAccess(t)&&(t=t.parent),75===t.kind||152===t.parent.kind?Kn(t,1920,!1,r):(e.Debug.assert(252===t.parent.kind),Kn(t,901119,!1,r))}function jn(e,t){return e.parent?jn(e.parent,t)+"."+Pi(e):Pi(e,t,void 0,20)}function Kn(t,r,n,i,a){if(!e.nodeIsMissing(t)){var o,s=1920|(e.isInJSFile(t)?111551&r:0);if(75===t.kind){var c=r===s?e.Diagnostics.Cannot_find_namespace_0:Id(e.getFirstIdentifier(t)),u=e.isInJSFile(t)?function(t,r){if(Dc(t.parent)){var n=function(t){if(e.findAncestor(t,(function(t){return e.isJSDocNode(t)||4194304&t.flags?e.isJSDocTypeAlias(t):"quit"})))return;var r=e.getJSDocHost(t);if(e.isExpressionStatement(r)&&e.isBinaryExpression(r.expression)&&3===e.getAssignmentDeclarationKind(r.expression)){if(i=ri(r.expression.left))return Jn(i)}if((e.isObjectLiteralMethod(r)||e.isPropertyAssignment(r))&&e.isBinaryExpression(r.parent.parent)&&6===e.getAssignmentDeclarationKind(r.parent.parent)){if(i=ri(r.parent.parent.left))return Jn(i)}var n=e.getHostSignatureFromJSDocHost(r);if(n){var i;return(i=ri(n))&&i.valueDeclaration}}(t.parent);if(n)return gn(n,t.escapedText,r,void 0,t,!0)}}(t,r):void 0;if(!(o=gn(a||t,t.escapedText,r,n||u?void 0:c,t,!0)))return u}else{if(152!==t.kind&&193!==t.kind)throw e.Debug.assertNever(t,"Unknown entity name kind.");var l=152===t.kind?t.left:t.expression,_=152===t.kind?t.right:t.name,d=Kn(l,s,n,!1,a);if(!d||e.nodeIsMissing(_))return;if(d===ge)return d;if(e.isInJSFile(t)&&d.valueDeclaration&&e.isVariableDeclaration(d.valueDeclaration)&&d.valueDeclaration.initializer&&Ag(d.valueDeclaration.initializer)){var p=d.valueDeclaration.initializer.arguments[0],f=zn(p,p);if(f){var m=Wn(f);m&&(d=m)}}if(!(o=fn(Qn(d),_.escapedText,r)))return void(n||Xr(_,e.Diagnostics.Namespace_0_has_no_exported_member_1,jn(d),e.declarationNameToString(_)))}return e.Debug.assert(0==(1&e.getCheckFlags(o)),"Should never get an instantiated symbol here."),o.flags&r||i?o:Mn(o)}}function Jn(t){var r=t.parent.valueDeclaration;if(r)return(e.isAssignmentDeclaration(r)?e.getAssignedExpandoInitializer(r):e.hasOnlyExpressionInitializer(r)?e.getDeclaredExpandoInitializer(r):void 0)||r}function zn(t,r,n){return Un(t,r,n?void 0:e.Diagnostics.Cannot_find_module_0)}function Un(t,r,n,i){return void 0===i&&(i=!1),e.isStringLiteralLike(r)?Vn(t,r.text,n,r,i):void 0}function Vn(t,r,i,a,o){(void 0===o&&(o=!1),e.startsWith(r,"@types/"))&&Xr(a,e.Diagnostics.Cannot_import_type_declaration_files_Consider_importing_0_instead_of_1,e.removePrefix(r,"@types/"),r);var s=Fs(r,!0);if(s)return s;var c=e.getSourceFileOfNode(t),u=e.getResolvedModule(c,r),l=u&&e.getResolutionDiagnostic(K,u),_=u&&!l&&n.getSourceFile(u.resolvedFileName);if(_)return _.symbol?(u.isExternalLibraryImport&&!e.resolutionExtensionIsTSOrJson(u.extension)&&qn(!1,a,u,r),ti(_.symbol)):void(i&&Xr(a,e.Diagnostics.File_0_is_not_a_module,_.fileName));if(ot){var d=e.findBestPatternMatch(ot,(function(e){return e.pattern}),r);if(d){var p=st&&st.get(r);return ti(p?p:d.symbol)}}if(u&&!e.resolutionExtensionIsTSOrJson(u.extension)&&void 0===l||l===e.Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type)o?Xr(a,e.Diagnostics.Invalid_module_name_in_augmentation_Module_0_resolves_to_an_untyped_module_at_1_which_cannot_be_augmented,r,u.resolvedFileName):qn(H&&!!i,a,u,r);else if(i){if(u){var f=n.getProjectReferenceRedirect(u.resolvedFileName);if(f)return void Xr(a,e.Diagnostics.Output_file_0_has_not_been_built_from_source_file_1,f,u.resolvedFileName)}if(l)Xr(a,l,r,u.resolvedFileName);else{var m=e.tryExtractTSExtension(r);if(m)Xr(a,e.Diagnostics.An_import_path_cannot_end_with_a_0_extension_Consider_importing_1_instead,m,e.removeExtension(r,m));else!K.resolveJsonModule&&e.fileExtensionIs(r,".json")&&e.getEmitModuleResolutionKind(K)===e.ModuleResolutionKind.NodeJs&&e.hasJsonModuleEmitEnabled(K)?Xr(a,e.Diagnostics.Cannot_find_module_0_Consider_using_resolveJsonModule_to_import_module_with_json_extension,r):Xr(a,i,r)}}}function qn(t,r,n,i){var a,o=n.packageId,s=n.resolvedFileName,c=!e.isExternalModuleNameRelative(i)&&o?(a=o.name,p().has(e.getTypesPackageName(a))?e.chainDiagnosticMessages(void 0,e.Diagnostics.If_the_0_package_actually_exposes_this_module_consider_sending_a_pull_request_to_amend_https_Colon_Slash_Slashgithub_com_SlashDefinitelyTyped_SlashDefinitelyTyped_Slashtree_Slashmaster_Slashtypes_Slash_1,o.name,e.mangleScopedPackageName(o.name)):e.chainDiagnosticMessages(void 0,e.Diagnostics.Try_npm_install_types_Slash_1_if_it_exists_or_add_a_new_declaration_d_ts_file_containing_declare_module_0,i,e.mangleScopedPackageName(o.name))):void 0;$r(t,r,e.chainDiagnosticMessages(c,e.Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type,i,s))}function Wn(t,r){if(t){var n=function(t,r){if(!t||t===ge||t===r||1===r.exports.size||2097152&t.flags)return t;var n=_n(t);if(n.cjsExportMerged)return n.cjsExportMerged;var i=33554432&t.flags?t:an(t);i.flags=512|i.flags,void 0===i.exports&&(i.exports=e.createSymbolTable());return r.exports.forEach((function(e,t){"export="!==t&&i.exports.set(t,i.exports.has(t)?on(i.exports.get(t),e):e)})),_n(i).cjsExportMerged=i,n.cjsExportMerged=i}(ti(On(t.exports.get("export="),r)),ti(t));return ti(n)||t}}function Gn(t,r,n,i){var a=Wn(t,n);if(!n&&a){if(!(i||1539&a.flags||e.getDeclarationOfKind(a,288))){var o=z>=e.ModuleKind.ES2015?"allowSyntheticDefaultImports":"esModuleInterop";return Xr(r,e.Diagnostics.This_module_can_only_be_referenced_with_ECMAScript_imports_Slashexports_by_turning_on_the_0_flag_and_referencing_its_default_export,o),a}if(K.esModuleInterop){var s=r.parent;if(e.isImportDeclaration(s)&&e.getNamespaceDeclarationNode(s)||e.isImportCall(s)){var c=wa(a),u=bs(c,0);if(u&&u.length||(u=bs(c,1)),u&&u.length){var l=Ng(c,a,t),_=en(a.flags,a.escapedName);_.declarations=a.declarations?a.declarations.slice():[],_.parent=a.parent,_.target=a,_.originatingImport=s,a.valueDeclaration&&(_.valueDeclaration=a.valueDeclaration),a.constEnumOnlyModule&&(_.constEnumOnlyModule=!0),a.members&&(_.members=e.cloneMap(a.members)),a.exports&&(_.exports=e.cloneMap(a.exports));var d=Qo(l);return _.type=hi(_,d.members,e.emptyArray,e.emptyArray,d.stringIndexInfo,d.numberIndexInfo),_}}}}return a}function Hn(e){return void 0!==e.exports.get("export=")}function Yn(e){return Ns($n(e))}function Xn(e,t){var r=$n(t);if(r)return r.get(e)}function Qn(e){return 6256&e.flags?vo(e,"resolvedExports"):1536&e.flags?$n(e):e.exports||B}function $n(e){var t=_n(e);return t.resolvedExports||(t.resolvedExports=ei(e))}function Zn(t,r,n,i){r&&r.forEach((function(r,a){if("default"!==a){var o=t.get(a);if(o){if(n&&i&&o&&On(o)!==On(r)){var s=n.get(a);s.exportsWithDuplicate?s.exportsWithDuplicate.push(i):s.exportsWithDuplicate=[i]}}else t.set(a,r),n&&i&&n.set(a,{specifierText:e.getTextOfNode(i.moduleSpecifier)})}}))}function ei(t){var r=[];return function t(n){if(!(n&&n.exports&&e.pushIfUnique(r,n)))return;var i=e.cloneMap(n.exports);var a=n.exports.get("__export");if(a){for(var o=e.createSymbolTable(),s=e.createMap(),c=0,u=a.declarations;c<u.length;c++){var l=u[c],_=zn(l,l.moduleSpecifier),d=t(_);Zn(o,d,s,l)}s.forEach((function(t,r){var n=t.exportsWithDuplicate;if("export="!==r&&n&&n.length&&!i.has(r))for(var a=0,o=n;a<o.length;a++){var c=o[a];jr.add(e.createDiagnosticForNode(c,e.Diagnostics.Module_0_has_already_exported_a_member_named_1_Consider_explicitly_re_exporting_to_resolve_the_ambiguity,s.get(r).specifierText,e.unescapeLeadingUnderscores(r)))}})),Zn(i,o)}return i}(t=Wn(t))||B}function ti(e){var t;return e&&e.mergeId&&(t=Er[e.mergeId])?t:e}function ri(e){return ti(e.symbol&&xo(e.symbol))}function ni(e){return ti(e.parent&&xo(e.parent))}function ii(t,r){var i=ni(t);if(i&&!(262144&t.flags)){var a=e.mapDefined(i.declarations,(function(e){var t=Ci(e),r=t&&t.exports&&t.exports.get("export=");return r&&i&&oi(r,i)?t:void 0})),o=r&&function(t,r){var i,a=e.getSourceFileOfNode(r),o=""+N(a),s=_n(t);if(s.extendedContainersByFile&&(i=s.extendedContainersByFile.get(o)))return i;if(a&&a.imports){for(var c=0,u=a.imports;c<u.length;c++){var l=u[c];if(!e.nodeIsSynthesized(l)){var _=zn(r,l,!0);if(_)ai(_,t)&&(i=e.append(i,_))}}if(e.length(i))return(s.extendedContainersByFile||(s.extendedContainersByFile=e.createMap())).set(o,i),i}if(s.extendedContainers)return s.extendedContainers;for(var d=0,p=n.getSourceFiles();d<p.length;d++){var f=p[d];if(e.isExternalModule(f)){var m=ri(f);ai(m,t)&&(i=e.append(i,m))}}return s.extendedContainers=i||e.emptyArray}(t,r);if(r&&xi(i,r,1920,!1))return e.concatenate(e.concatenate([i],a),o);var s=e.append(a,i);return e.concatenate(s,o)}var c=e.mapDefined(t.declarations,(function(t){return!e.isAmbientModule(t)&&t.parent&&Ni(t.parent)?ri(t.parent):e.isClassExpression(t)&&e.isBinaryExpression(t.parent)&&62===t.parent.operatorToken.kind&&e.isAccessExpression(t.parent.left)&&e.isEntityNameExpression(t.parent.left.expression)?e.isModuleExportsAccessExpression(t.parent.left)||e.isExportsIdentifier(t.parent.left.expression)?ri(e.getSourceFileOfNode(t)):(ky(t.parent.left.expression),dn(t.parent.left.expression).resolvedSymbol):void 0}));if(e.length(c))return e.mapDefined(c,(function(e){return ai(e,t)?e:void 0}))}function ai(t,r){if(t===ni(r))return r;var n=t.exports&&t.exports.get("export=");if(n&&oi(n,r))return t;var i=Qn(t),a=i.get(r.escapedName);return a&&oi(a,r)?a:e.forEachEntry(i,(function(e){if(oi(e,r))return e}))}function oi(e,t){if(ti(On(ti(e)))===ti(On(ti(t))))return e}function si(e){return ti(e&&0!=(1048576&e.flags)?e.exportSymbol:e)}function ci(e){return!!(111551&e.flags||2097152&e.flags&&111551&Mn(e).flags)}function ui(t){for(var r=0,n=t.members;r<n.length;r++){var i=n[r];if(161===i.kind&&e.nodeIsPresent(i.body))return i}}function li(e){var t=new g(oe,e);return h++,t.id=h,t}function _i(e,t,r){void 0===r&&(r=0);var n=li(e);return n.intrinsicName=t,n.objectFlags=r,n}function di(e){var t=Qc(e);return t.flags|=16,t.intrinsicName="boolean",t}function pi(e,t){var r=li(524288);return r.objectFlags=e,r.symbol=t,r.members=void 0,r.properties=void 0,r.callSignatures=void 0,r.constructSignatures=void 0,r.stringIndexInfo=void 0,r.numberIndexInfo=void 0,r}function fi(e){var t=li(262144);return e&&(t.symbol=e),t}function mi(e){return 95===e.charCodeAt(0)&&95===e.charCodeAt(1)&&95!==e.charCodeAt(2)&&64!==e.charCodeAt(2)}function gi(t){var r;return t.forEach((function(e,t){!mi(t)&&ci(e)&&(r||(r=[])).push(e)})),r||e.emptyArray}function yi(t,r,n,i,a,o){return t.members=r,t.properties=r===B?e.emptyArray:gi(r),t.callSignatures=n,t.constructSignatures=i,t.stringIndexInfo=a,t.numberIndexInfo=o,t}function hi(e,t,r,n,i,a){return yi(pi(16,e),t,r,n,i,a)}function vi(t,r){for(var n,i=function(t){if(t.locals&&!pn(t)&&(n=r(t.locals)))return{value:n};switch(t.kind){case 288:if(!e.isExternalOrCommonJsModule(t))break;case 248:var i=ri(t);if(n=r(i.exports||B))return{value:n};break;case 244:case 213:case 245:var a;if((ri(t).members||B).forEach((function(t,r){788968&t.flags&&(a||(a=e.createSymbolTable())).set(r,t)})),a&&(n=r(a)))return{value:n}}},a=t;a;a=a.parent){var o=i(a);if("object"===f(o))return o.value}return r(ee)}function bi(e){return 111551===e?111551:1920}function xi(t,r,n,i,a){if(void 0===a&&(a=e.createMap()),t&&!function(e){if(e.declarations&&e.declarations.length){for(var t=0,r=e.declarations;t<r.length;t++){switch(r[t].kind){case 158:case 160:case 162:case 163:continue;default:return!1}}return!0}return!1}(t)){var o=""+A(t),s=a.get(o);return s||a.set(o,s=[]),vi(r,c)}function c(a,o){if(e.pushIfUnique(s,a)){var _=function(a,o){if(l(a.get(t.escapedName),void 0,o))return[t];return e.forEachEntry(a,(function(a){if(2097152&a.flags&&"export="!==a.escapedName&&"default"!==a.escapedName&&!(e.isUMDExportSymbol(a)&&r&&e.isExternalModule(e.getSourceFileOfNode(r)))&&(!i||e.some(a.declarations,e.isExternalModuleImportEqualsDeclaration))&&(o||!e.getDeclarationOfKind(a,261))){var s=Mn(a);if(l(a,s,o))return[a];var _=Qn(s),d=_&&c(_,!0);if(d&&u(a,bi(n)))return[a].concat(d)}if(a.escapedName===t.escapedName&&a.exportSymbol&&l(ti(a.exportSymbol),void 0,o))return[t]}))}(a,o);return s.pop(),_}}function u(e,t){return!Di(e,r,t)||!!xi(e.parent,r,bi(t),i,a)}function l(r,i,a){return(t===(i||r)||ti(t)===ti(i||r))&&!e.some(r.declarations,Ni)&&(a||u(ti(r),n))}}function Di(t,r,n){var i=!1;return vi(r,(function(r){var a=ti(r.get(t.escapedName));return!!a&&(a===t||!!((a=2097152&a.flags&&!e.getDeclarationOfKind(a,261)?Mn(a):a).flags&n)&&(i=!0,!0))})),i}function Si(e,t){return 0===Ei(e,t,788968,!1).accessibility}function Ti(e,t){return 0===Ei(e,t,111551,!1).accessibility}function Ei(t,r,n,i){if(t&&r){var a=function t(r,n,i,a,o){if(e.length(r)){for(var s,c=0,u=r;c<u.length;c++){var l=u[c],_=xi(l,n,a,!1);if(_){s=l;var d=Ai(_[0],o);if(d)return d}else if(e.some(l.declarations,Ni))return{accessibility:0};var p=ii(l,n),f=e.first(l.declarations);!e.length(p)&&111551&a&&f&&e.isObjectLiteralExpression(f)&&f.parent&&e.isVariableDeclaration(f.parent)&&f===f.parent.initializer&&(p=[ri(f.parent)]);var m=t(p,n,i,i===l?bi(a):a,o);if(m)return m}return s?{accessibility:1,errorSymbolName:Pi(i,n,a),errorModuleName:s!==i?Pi(s,n,1920):void 0}:void 0}}([t],r,t,n,i);if(a)return a;var o=e.forEach(t.declarations,Ci);if(o)if(o!==Ci(r))return{accessibility:2,errorSymbolName:Pi(t,r,n),errorModuleName:Pi(o)};return{accessibility:1,errorSymbolName:Pi(t,r,n)}}return{accessibility:0}}function Ci(t){var r=e.findAncestor(t,ki);return r&&ri(r)}function ki(t){return e.isAmbientModule(t)||288===t.kind&&e.isExternalOrCommonJsModule(t)}function Ni(t){return e.isModuleWithStringLiteralName(t)||288===t.kind&&e.isExternalOrCommonJsModule(t)}function Ai(t,r){var n;if(e.every(e.filter(t.declarations,(function(e){return 75!==e.kind})),(function(t){if(!Ui(t)){var r=Tn(t);return r&&!e.hasModifier(r,1)&&Ui(r.parent)?i(t,r):e.isVariableDeclaration(t)&&e.isVariableStatement(t.parent.parent)&&!e.hasModifier(t.parent.parent,1)&&Ui(t.parent.parent.parent)?i(t,t.parent.parent):!(!e.isLateVisibilityPaintedStatement(t)||e.hasModifier(t,1)||!Ui(t.parent))&&i(t,t)}return!0})))return{accessibility:0,aliasesToMakeVisible:n};function i(t,i){return r&&(dn(t).isVisible=!0,n=e.appendIfUnique(n,i)),!0}}function Fi(t,r){var n;n=171===t.parent.kind||e.isExpressionWithTypeArgumentsInClassExtendsClause(t.parent)||153===t.parent.kind?1160127:152===t.kind||193===t.kind||252===t.parent.kind?1920:788968;var i=e.getFirstIdentifier(t),a=gn(r,i.escapedText,n,void 0,void 0,!1);return a&&Ai(a,!0)||{accessibility:1,errorSymbolName:e.getTextOfNode(i),errorNode:i}}function Pi(t,r,n,i,a){void 0===i&&(i=4);var o=70221824;2&i&&(o|=128),1&i&&(o|=512),8&i&&(o|=16384),16&i&&(o|=134217728);var s=4&i?Z.symbolToExpression:Z.symbolToEntityName;return a?c(a).getText():e.usingSingleLineStringWriter(c);function c(i){var a=s(t,n,r,o),c=e.createPrinter({removeComments:!0}),u=r&&e.getSourceFileOfNode(r);return c.writeNode(4,a,u,i),i}}function wi(t,r,n,i,a){return void 0===n&&(n=0),a?o(a).getText():e.usingSingleLineStringWriter(o);function o(a){var o;o=262144&n?1===i?170:169:1===i?165:164;var s=Z.signatureToSignatureDeclaration(t,o,r,70222336|Li(n)),c=e.createPrinter({removeComments:!0,omitTrailingSemicolon:!0}),u=r&&e.getSourceFileOfNode(r);return c.writeNode(4,s,u,e.getTrailingSemicolonDeferringWriter(a)),a}}function Ii(t,r,n,i){void 0===n&&(n=1064960),void 0===i&&(i=e.createTextWriter(""));var a=K.noErrorTruncation||1&n,o=Z.typeToTypeNode(t,r,70221824|Li(n)|(a?1:0),i);if(void 0===o)return e.Debug.fail("should always get typenode");var s=e.createPrinter({removeComments:!0}),c=r&&e.getSourceFileOfNode(r);s.writeNode(4,o,c,i);var u=i.getText(),l=a?void 0:2*e.defaultMaximumTruncationLength;return l&&u&&u.length>=l?u.substr(0,l-"...".length)+"...":u}function Oi(e,t){var r=Mi(e.symbol)?Ii(e,e.symbol.valueDeclaration):Ii(e),n=Mi(t.symbol)?Ii(t,t.symbol.valueDeclaration):Ii(t);return r===n&&(r=Ii(e,void 0,64),n=Ii(t,void 0,64)),[r,n]}function Mi(t){return t&&t.valueDeclaration&&e.isExpression(t.valueDeclaration)&&!bl(t.valueDeclaration)}function Li(e){return void 0===e&&(e=0),9469291&e}function Ri(t,r,n,i){return void 0===n&&(n=16384),i?a(i).getText():e.usingSingleLineStringWriter(a);function a(i){var a=e.createTypePredicateNodeWithModifier(2===t.kind||3===t.kind?e.createToken(123):void 0,1===t.kind||3===t.kind?e.createIdentifier(t.parameterName):e.createThisTypeNode(),t.type&&Z.typeToTypeNode(t.type,r,70222336|Li(n))),o=e.createPrinter({removeComments:!0}),s=r&&e.getSourceFileOfNode(r);return o.writeNode(4,a,s,i),i}}function Bi(e){return 8===e?"private":16===e?"protected":"public"}function ji(t){return t&&t.parent&&249===t.parent.kind&&e.isExternalModuleAugmentation(t.parent.parent)}function Ki(t){return 288===t.kind||e.isAmbientModule(t)}function Ji(t,r){var n=t.nameType;if(n){if(384&n.flags){var i=""+n.value;return e.isIdentifierText(i,K.target)||Mf(i)?Mf(i)&&e.startsWith(i,"-")?"["+i+"]":i:'"'+e.escapeString(i,34)+'"'}if(8192&n.flags)return"["+zi(n.symbol,r)+"]"}}function zi(t,r){if(r&&"default"===t.escapedName&&!(16384&r.flags)&&(!(16777216&r.flags)||!t.declarations||r.enclosingDeclaration&&e.findAncestor(t.declarations[0],Ki)!==e.findAncestor(r.enclosingDeclaration,Ki)))return"default";if(t.declarations&&t.declarations.length){var n=e.firstDefined(t.declarations,(function(t){return e.getNameOfDeclaration(t)?t:void 0})),i=n&&e.getNameOfDeclaration(n);if(n&&i){if(e.isCallExpression(n)&&e.isBindableObjectDefinePropertyCall(n))return e.symbolName(t);if(e.isComputedPropertyName(i)&&!(4096&e.getCheckFlags(t))&&t.nameType&&384&t.nameType.flags){var a=Ji(t,r);if(void 0!==a)return a}return e.declarationNameToString(i)}if(n||(n=t.declarations[0]),n.parent&&241===n.parent.kind)return e.declarationNameToString(n.parent.name);switch(n.kind){case 213:case 200:case 201:return!r||r.encounteredError||131072&r.flags||(r.encounteredError=!0),213===n.kind?"(Anonymous class)":"(Anonymous function)"}}var o=Ji(t,r);return void 0!==o?o:e.symbolName(t)}function Ui(t){if(t){var r=dn(t);return void 0===r.isVisible&&(r.isVisible=!!function(){switch(t.kind){case 308:case 315:case 309:return!!(t.parent&&t.parent.parent&&t.parent.parent.parent&&e.isSourceFile(t.parent.parent.parent));case 190:return Ui(t.parent.parent);case 241:if(e.isBindingPattern(t.name)&&!t.name.elements.length)return!1;case 248:case 244:case 245:case 246:case 243:case 247:case 252:if(e.isExternalModuleAugmentation(t))return!0;var r=Yi(t);return 1&e.getCombinedModifierFlags(t)||252!==t.kind&&288!==r.kind&&8388608&r.flags?Ui(r):pn(r);case 158:case 157:case 162:case 163:case 160:case 159:if(e.hasModifier(t,24))return!1;case 161:case 165:case 164:case 166:case 155:case 249:case 169:case 170:case 172:case 168:case 173:case 174:case 177:case 178:case 181:return Ui(t.parent);case 254:case 255:case 257:return!1;case 154:case 288:case 251:return!0;case 258:default:return!1}}()),r.isVisible}return!1}function Vi(t,r){var n,i,a;return t.parent&&258===t.parent.kind?n=gn(t,t.escapedText,2998271,void 0,t,!1):261===t.parent.kind&&(n=Fn(t.parent,2998271)),n&&((a=e.createMap()).set(""+A(n),!0),function t(n){e.forEach(n,(function(n){var o=Tn(n)||n;if(r?dn(n).isVisible=!0:(i=i||[],e.pushIfUnique(i,o)),e.isInternalModuleImportEqualsDeclaration(n)){var s=n.moduleReference,c=gn(n,e.getFirstIdentifier(s).escapedText,901119,void 0,void 0,!1),u=c&&""+A(c);c&&!a.has(u)&&(a.set(u,!0),t(c.declarations))}}))}(n.declarations)),i}function qi(e,t){var r=Wi(e,t);if(r>=0){for(var n=br.length,i=r;i<n;i++)xr[i]=!1;return!1}return br.push(e),xr.push(!0),Dr.push(t),!0}function Wi(e,t){for(var r=br.length-1;r>=0;r--){if(Gi(br[r],Dr[r]))return-1;if(br[r]===e&&Dr[r]===t)return r}return-1}function Gi(t,r){switch(r){case 0:return!!_n(t).type;case 5:return!!dn(t).resolvedEnumType;case 2:return!!_n(t).declaredType;case 1:return!!t.resolvedBaseConstructorType;case 3:return!!t.resolvedReturnType;case 4:return!!t.immediateBaseConstraint;case 6:return!!_n(t).resolvedJSDocType;case 7:return!!t.resolvedTypeArguments}return e.Debug.assertNever(r)}function Hi(){return br.pop(),Dr.pop(),xr.pop()}function Yi(t){return e.findAncestor(e.getRootDeclaration(t),(function(e){switch(e.kind){case 241:case 242:case 257:case 256:case 255:case 254:return!1;default:return!0}})).parent}function Xi(e,t){var r=vs(e,t);return r?wa(r):void 0}function Qi(e){return e&&0!=(1&e.flags)}function $i(e){var t=ri(e);return t&&_n(t).type||ua(e,!1)}function Zi(t){return 153===t.kind&&!e.isStringOrNumericLiteralLike(t.expression)}function ea(t,r,n){if(131072&(t=_p(t,(function(e){return!(98304&e.flags)}))).flags)return Ge;if(1048576&t.flags)return pp(t,(function(e){return ea(e,r,n)}));var i=Qc(e.map(r,ou));if(gu(t)||yu(i)){if(131072&i.flags)return t;var a=Ut||(Ut=Ac("Omit",524288,e.Diagnostics.Cannot_find_global_type_0));return a?fc(a,[t,i]):xe}for(var o=e.createSymbolTable(),s=0,c=ts(t);s<c.length;s++){var u=c[s];Fl(su(u,8576),i)||24&e.getDeclarationModifierFlagsFromSymbol(u)||!ju(u)||o.set(u.escapedName,Ku(u,!1))}var l=Ts(t,0),_=Ts(t,1);return hi(n,o,e.emptyArray,e.emptyArray,l,_)}function ta(e,t){var r=ra(e);return r?Op(r,t):t}function ra(t){var r=function(e){var t=e.parent.parent;switch(t.kind){case 190:case 279:return ra(t);case 191:return ra(e.parent);case 241:return t.initializer;case 208:return t.right}}(t);if(r&&r.flowNode){var n=function(e){var t=e.parent;if(190===e.kind&&188===t.kind)return na(e.propertyName||e.name);if(279===e.kind||280===e.kind)return na(e.name);return""+t.elements.indexOf(e)}(t);if(n){var i=e.createNode(194,t.pos,t.end);i.parent=t,i.expression=r;var a=e.createNode(10,t.pos,t.end);return a.parent=i,a.text=n,i.argumentExpression=a,i.flowNode=r.flowNode,i}}}function na(e){var t=ou(e);return 384&t.flags?""+t.value:void 0}function ia(t){var r,n=t.parent,i=$i(n.parent);if(!i||Qi(i))return i;if(V&&8388608&t.flags&&e.isParameterDeclaration(t)&&(i=U_(i)),188===n.kind)if(t.dotDotDotToken){if(2&i.flags||!Kf(i))return Xr(t,e.Diagnostics.Rest_types_may_only_be_created_from_object_types),xe;for(var a=[],o=0,s=n.elements;o<s.length;o++){var c=s[o];c.dotDotDotToken||a.push(c.propertyName||c.name)}r=ea(i,a,t.symbol)}else{var u=t.propertyName||t.name;r=ta(t,Jp(Su(i,d=ou(u),u),t.name))}else{var l=Zh(65,i,Se,n),_=n.elements.indexOf(t);if(t.dotDotDotToken)r=lp(i,w_)?pp(i,(function(e){return Vc(e,_)})):jc(l);else if(b_(i)){var d=Wu(_),p=Af(t)?8:0;r=ta(t,Jp(Tu(i,d,t.name,p)||xe,t.name))}else r=l}return t.initializer?e.getEffectiveTypeAnnotationNode(e.walkUpBindingElementsAndPatterns(t))?!V||32768&R_(Ay(t))?r:Hd(r,524288):Qc([Hd(r,524288),Ay(t)],2):r}function aa(t){var r=e.getJSDocType(t);if(r)return Yu(r)}function oa(t){var r=e.skipParentheses(t);return 191===r.kind&&0===r.elements.length}function sa(e,t){return void 0===t&&(t=!0),V&&t?z_(e):e}function ca(e){return 155===e.kind&&(200===e.parent.kind||201===e.parent.kind)&&!!xf(e.parent)}function ua(t,r){if(e.isVariableDeclaration(t)&&230===t.parent.parent.kind){var n=lu(dm(zy(t.parent.parent.expression)));return 4456448&n.flags?_u(n):Ne}if(e.isVariableDeclaration(t)&&231===t.parent.parent.kind){var i=t.parent.parent;return $h(i.expression,i.awaitModifier)||he}if(e.isBindingPattern(t.parent))return ia(t);var a=r&&(e.isParameter(t)&&As(t)||!e.isBindingElement(t)&&!e.isVariableDeclaration(t)&&!!t.questionToken),o=xa(t);if(o)return sa(o,a);if((H||e.isInJSFile(t))&&241===t.kind&&!e.isBindingPattern(t.name)&&!(1&e.getCombinedModifierFlags(t))&&!(8388608&t.flags)){if(!(2&e.getCombinedNodeFlags(t))&&(!t.initializer||function(t){var r=e.skipParentheses(t);return 99===r.kind||75===r.kind&&Od(r)===te}(t.initializer)))return ve;if(t.initializer&&oa(t.initializer))return bt}if(155===t.kind){var s,c=t.parent;if(163===c.kind&&!go(c)){var u=e.getDeclarationOfKind(ri(t.parent),162);if(u){var l=Ls(u),_=lx(c);return _&&t===_?(e.Debug.assert(!_.type),wa(l.thisParameter)):zs(l)}}if(e.isInJSFile(t)){var d=e.getJSDocType(c);if(d&&e.isFunctionTypeNode(d))return Mg(Ls(d),c.parameters.indexOf(t))}if(s="this"===t.symbol.escapedName?tf(c):rf(t,!0))return sa(s,a)}else if(e.isInJSFile(t)){var p=_a(t,ri(t),e.getDeclaredExpandoInitializer(t));if(p)return p}return t.initializer&&!ca(t)?sa(s=Ay(t),a):e.isJsxAttribute(t)?Ie:e.isBindingPattern(t.name)&&!ca(t)?ya(t.name,!1,!0):void 0}function la(t,r){var n=e.getAssignedExpandoInitializer(t.valueDeclaration);if(n){var i=e.getJSDocTypeTag(n);return i&&i.typeExpression?Yu(i.typeExpression):_a(t.valueDeclaration,t,n)||N_(ky(n))}for(var a,o,s=!1,c=!1,u=0,l=t.declarations;u<l.length;u++){var _=l[u],d=e.isBinaryExpression(_)||e.isCallExpression(_)?_:e.isAccessExpression(_)?e.isBinaryExpression(_.parent)?_.parent:_:void 0;if(d){var p=e.isAccessExpression(d)?e.getAssignmentDeclarationPropertyAccessKind(d):e.getAssignmentDeclarationKind(d);4===p&&(fa(d)?s=!0:c=!0),e.isCallExpression(d)||(a=da(a,d,t,_)),a||(o||(o=[])).push(e.isBinaryExpression(d)||e.isCallExpression(d)?pa(t,r,d,p):Be)}}var f=a;if(!f){if(!e.length(o))return xe;var m=s?function(t,r){return e.Debug.assert(t.length===r.length),t.filter((function(t,n){var i=r[n],a=e.isBinaryExpression(i)?i:e.isBinaryExpression(i.parent)?i.parent:void 0;return a&&fa(a)}))}(o,t.declarations):void 0;if(c){var g=function(t){var r=e.forEach(t.declarations,(function(t){var r=e.getThisContainer(t,!1).parent;return e.isClassLike(r)&&r}));if(r){var n=ro(ri(r)),i=n&&Wa(n)[0];if(i)return Xi(i,t.escapedName)}}(t);g&&((m||(m=[])).push(g),s=!0)}f=Qc(e.some(m,(function(e){return!!(-98305&e.flags)}))?m:o,2)}var y=rd(sa(f,c&&!s));return _p(y,(function(e){return!!(-98305&e.flags)}))===Be?(id(t.valueDeclaration,he),he):y}function _a(t,r,n){if(e.isInJSFile(t)&&n&&e.isObjectLiteralExpression(n)&&!n.properties.length){for(var i=e.createSymbolTable();e.isBinaryExpression(t)||e.isPropertyAccessExpression(t);){var a=ri(t);a&&e.hasEntries(a.exports)&&un(i,a.exports),t=e.isBinaryExpression(t)?t.parent:t.parent.parent}var o=ri(t);o&&e.hasEntries(o.exports)&&un(i,o.exports);var s=hi(r,i,e.emptyArray,e.emptyArray,void 0,void 0);return s.objectFlags|=16384,s}}function da(t,r,n,i){var a=e.getEffectiveTypeAnnotationNode(r.parent);if(a){var o=rd(Yu(a));if(!t)return o;t===xe||o===xe||El(t,o)||Uh(void 0,t,i,o)}if(n.parent){var s=e.getEffectiveTypeAnnotationNode(n.parent.valueDeclaration);if(s)return Xi(Yu(s),n.escapedName)}return t}function pa(t,r,n,i){if(e.isCallExpression(n)){if(r)return wa(r);var a=ky(n.arguments[2]),o=Xi(a,"value");if(o)return o;var s=Xi(a,"get");if(s){var c=qm(s);if(c)return zs(c)}var u=Xi(a,"set");if(u){var l=qm(u);if(l)return Ug(l)}return he}var _=r?wa(r):N_(ky(n.right));if(524288&_.flags&&2===i&&"export="===t.escapedName){var d=Qo(_),p=e.createSymbolTable();e.copyEntries(d.members,p),r&&!r.exports&&(r.exports=e.createSymbolTable()),(r||t).exports.forEach((function(e,t){if(p.has(t)){var r=d.members.get(t),n=en(e.flags|r.flags,t);n.type=Qc([wa(e),wa(r)]),p.set(t,n)}else p.set(t,e)}));var f=hi(d.symbol,p,d.callSignatures,d.constructSignatures,d.stringIndexInfo,d.numberIndexInfo);return f.objectFlags|=16384&e.getObjectFlags(_),f}return x_(_)?(id(n,vt),vt):_}function fa(t){var r=e.getThisContainer(t,!1);return 161===r.kind||243===r.kind||200===r.kind&&!e.isPrototypePropertyAssignment(r.parent)}function ma(t,r,n){return t.initializer?sa(Ay(t)):e.isBindingPattern(t.name)?ya(t.name,r,n):(n&&!ba(t)&&id(t,he),he)}function ga(t,r,n){var i,a=t.elements,o=e.lastOrUndefined(a),s=!(!o||190!==o.kind||!o.dotDotDotToken);if(0===a.length||1===a.length&&s)return J>=2?(i=he,Rc(Mc(!0),[i])):vt;var c=Uc(e.map(a,(function(t){return e.isOmittedExpression(t)?he:ma(t,r,n)})),e.findLastIndex(a,(function(t){return!e.isOmittedExpression(t)&&!Af(t)}),a.length-(s?2:1))+1,s);return r&&((c=uc(c)).pattern=t),c}function ya(t,r,n){return void 0===r&&(r=!1),void 0===n&&(n=!1),188===t.kind?function(t,r,n){var i,a=e.createSymbolTable(),o=524416;e.forEach(t.elements,(function(e){var t=e.propertyName||e.name;if(e.dotDotDotToken)i=tc(he,!1);else{var s=ou(t);if(_o(s)){var c=yo(s),u=en(4|(e.initializer?16777216:0),c);u.type=ma(e,r,n),u.bindingElement=e,a.set(u.escapedName,u)}else o|=512}}));var s=hi(void 0,a,e.emptyArray,e.emptyArray,i,void 0);return s.objectFlags|=o,r&&(s.pattern=t),s}(t,r,n):ga(t,r,n)}function ha(e,t){return va(ua(e,!0),e,t)}function va(t,r,n){return t?(n&&ad(r,t),8192&t.flags&&(e.isBindingElement(r)||!r.type)&&t.symbol!==ri(r)&&(t=Le),rd(t)):(t=e.isParameter(r)&&r.dotDotDotToken?vt:he,n&&(ba(r)||id(r,t)),t)}function ba(t){var r=e.getRootDeclaration(t);return ah(155===r.kind?r.parent:r)}function xa(t){var r=e.getEffectiveTypeAnnotationNode(t);if(r)return Yu(r)}function Da(t){var r=_n(t);if(!r.type){var n=function(t){if(4194304&t.flags)return(r=ro(ni(t))).typeParameters?cc(r,e.map(r.typeParameters,(function(e){return he}))):r;var r;if(t===ae)return he;if(134217728&t.flags){var n=ri(e.getSourceFileOfNode(t.valueDeclaration)),i=e.createSymbolTable();return i.set("exports",n),hi(t,i,e.emptyArray,e.emptyArray,void 0,void 0)}var a,o=t.valueDeclaration;if(e.isCatchClauseVariableDeclarationOrBindingElement(o))return he;if(e.isSourceFile(o)&&e.isJsonSourceFile(o)){if(!o.statements.length)return Ge;var s=N_(zy(o.statements[0].expression));return 524288&s.flags?Q_(s):s}if(!qi(t,0))return 512&t.flags&&!(67108864&t.flags)?Aa(t):Pa(t);if(258===o.kind)a=va(ky(o.expression),o);else if(e.isBinaryExpression(o)||e.isInJSFile(o)&&(e.isCallExpression(o)||(e.isPropertyAccessExpression(o)||e.isBindableStaticElementAccessExpression(o))&&e.isBinaryExpression(o.parent)))a=la(t);else if(e.isJSDocPropertyLikeTag(o)||e.isPropertyAccessExpression(o)||e.isElementAccessExpression(o)||e.isIdentifier(o)||e.isStringLiteralLike(o)||e.isNumericLiteral(o)||e.isClassDeclaration(o)||e.isFunctionDeclaration(o)||e.isMethodDeclaration(o)&&!e.isObjectLiteralMethod(o)||e.isMethodSignature(o)||e.isSourceFile(o)){if(9136&t.flags)return Aa(t);a=e.isBinaryExpression(o.parent)?la(t):xa(o)||he}else if(e.isPropertyAssignment(o))a=xa(o)||Iy(o);else if(e.isJsxAttribute(o))a=xa(o)||Uf(o);else if(e.isShorthandPropertyAssignment(o))a=xa(o)||wy(o.name,0);else if(e.isObjectLiteralMethod(o))a=xa(o)||Oy(o,0);else if(e.isParameter(o)||e.isPropertyDeclaration(o)||e.isPropertySignature(o)||e.isVariableDeclaration(o)||e.isBindingElement(o))a=ha(o,!0);else if(e.isEnumDeclaration(o))a=Aa(t);else if(e.isEnumMember(o))a=Fa(t);else{if(!e.isAccessor(o))return e.Debug.fail("Unhandled declaration kind! "+e.Debug.formatSyntaxKind(o.kind)+" for "+e.Debug.formatSymbol(t));a=ka(t)}if(!Hi())return 512&t.flags&&!(67108864&t.flags)?Aa(t):Pa(t);return a}(t);r.type||(r.type=n)}return r.type}function Sa(t){if(t)return 162===t.kind?e.getEffectiveReturnTypeNode(t):e.getEffectiveSetAccessorTypeAnnotationNode(t)}function Ta(e){var t=Sa(e);return t&&Yu(t)}function Ea(e){return Ks(Ls(e))}function Ca(t){var r=_n(t);return r.type||(r.type=function(t){if(!qi(t,0))return xe;var r=ka(t);if(!Hi()){if(r=he,H)Xr(e.getDeclarationOfKind(t,162),e.Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions,Pi(t))}return r}(t))}function ka(t){var r=e.getDeclarationOfKind(t,162),n=e.getDeclarationOfKind(t,163);if(r&&e.isInJSFile(r)){var i=aa(r);if(i)return i}var a=Ta(r);if(a)return a;var o=Ta(n);return o||(r&&r.body?Xg(r):(n?ah(n)||$r(H,n,e.Diagnostics.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation,Pi(t)):(e.Debug.assert(!!r,"there must exist a getter as we are current checking either setter or getter in this function"),ah(r)||$r(H,r,e.Diagnostics.Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation,Pi(t))),he))}function Na(t){var r=qa(Ha(t));return 8650752&r.flags?r:2097152&r.flags?e.find(r.types,(function(e){return!!(8650752&e.flags)})):void 0}function Aa(t){var r=_n(t),n=r;if(!r.type){var i=e.getDeclarationOfExpando(t.valueDeclaration);if(i){var a=Tg(t,ri(i));a&&(t=r=a)}n.type=r.type=function(t){var r=t.valueDeclaration;if(1536&t.flags&&e.isShorthandAmbientModuleSymbol(t))return he;if(208===r.kind||(193===r.kind||194===r.kind)&&208===r.parent.kind)return la(t);if(512&t.flags&&r&&e.isSourceFile(r)&&r.commonJsModuleIndicator){var n=Wn(t);if(n!==t){if(!qi(t,0))return xe;var i=ti(t.exports.get("export=")),a=la(i,i===n?void 0:n);return Hi()?a:Pa(t)}}var o=pi(16,t);if(32&t.flags){var s=Na(t);return s?iu([o,s]):o}return V&&16777216&t.flags?z_(o):o}(t)}return r.type}function Fa(e){var t=_n(e);return t.type||(t.type=eo(e))}function Pa(t){var r=t.valueDeclaration;return e.getEffectiveTypeAnnotationNode(r)?(Xr(t.valueDeclaration,e.Diagnostics._0_is_referenced_directly_or_indirectly_in_its_own_type_annotation,Pi(t)),xe):(H&&(155!==r.kind||r.initializer)&&Xr(t.valueDeclaration,e.Diagnostics._0_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer,Pi(t)),he)}function wa(t){return 65536&e.getCheckFlags(t)?function(t){var r=_n(t);return r.type||(e.Debug.assertDefined(r.deferralParent),e.Debug.assertDefined(r.deferralConstituents),r.type=1048576&r.deferralParent.flags?Qc(r.deferralConstituents):iu(r.deferralConstituents)),r.type}(t):1&e.getCheckFlags(t)?function(e){var t=_n(e);if(!t.type){if(!qi(e,0))return t.type=xe;var r=gl(wa(t.target),t.mapper);Hi()||(r=Pa(e)),t.type=r}return t.type}(t):8192&e.getCheckFlags(t)?function(e){return hd(e.propertyType,e.mappedType,e.constraintType)}(t):7&t.flags?Da(t):9136&t.flags?Aa(t):8&t.flags?Fa(t):98304&t.flags?Ca(t):2097152&t.flags?function(e){var t=_n(e);if(!t.type){var r=Mn(e);t.type=111551&r.flags?wa(r):xe}return t.type}(t):xe}function Ia(t,r){return void 0!==t&&void 0!==r&&0!=(4&e.getObjectFlags(t))&&t.target===r}function Oa(t){return 4&e.getObjectFlags(t)?t.target:t}function Ma(t,r){return function t(n){if(7&e.getObjectFlags(n)){var i=Oa(n);return i===r||e.some(Wa(i),t)}if(2097152&n.flags)return e.some(n.types,t);return!1}(t)}function La(t,r){for(var n=0,i=r;n<i.length;n++){var a=i[n];t=e.appendIfUnique(t,to(ri(a)))}return t}function Ra(t,r){for(;;){if((t=t.parent)&&e.isBinaryExpression(t)){var n=e.getAssignmentDeclarationKind(t);if(6===n||3===n){var i=ri(t.left);i&&i.parent&&!e.findAncestor(i.parent.valueDeclaration,(function(e){return t===e}))&&(t=i.parent.valueDeclaration)}}if(!t)return;switch(t.kind){case 244:case 213:case 245:case 164:case 165:case 159:case 169:case 170:case 298:case 243:case 160:case 200:case 201:case 246:case 314:case 315:case 309:case 308:case 185:case 179:var a=Ra(t,r);if(185===t.kind)return e.append(a,to(ri(t.typeParameter)));if(179===t.kind)return e.concatenate(a,Pu(t));var o=La(a,e.getEffectiveTypeParameterDeclarations(t)),s=r&&(244===t.kind||213===t.kind||245===t.kind||Sg(t))&&Ha(ri(t)).thisType;return s?e.append(o,s):o}}}function Ba(t){var r=32&t.flags?t.valueDeclaration:e.getDeclarationOfKind(t,245);return e.Debug.assert(!!r,"Class was missing valueDeclaration -OR- non-class had no interface declarations"),Ra(r)}function ja(t){for(var r,n=0,i=t.declarations;n<i.length;n++){var a=i[n];if(245===a.kind||244===a.kind||213===a.kind||Sg(a)||e.isTypeAlias(a)){var o=a;r=La(r,e.getEffectiveTypeParameterDeclarations(o))}}return r}function Ka(e){var t=xs(e,1);if(1===t.length){var r=t[0];return!r.typeParameters&&1===r.parameters.length&&M(r)&&v_(Ig(r.parameters[0]))===he}return!1}function Ja(e){if(xs(e,1).length>0)return!0;if(8650752&e.flags){var t=cs(e);return!!t&&Ka(t)}return!1}function za(t){return e.getEffectiveBaseTypeNode(t.symbol.valueDeclaration)}function Ua(t,r,n){var i=e.length(r),a=e.isInJSFile(n);return e.filter(xs(t,1),(function(t){return(a||i>=Os(t.typeParameters))&&i<=e.length(t.typeParameters)}))}function Va(t,r,n){var i=Ua(t,r,n),a=e.map(r,Yu);return e.sameMap(i,(function(t){return e.some(t.typeParameters)?Ws(t,a,e.isInJSFile(n)):t}))}function qa(t){if(!t.resolvedBaseConstructorType){var r=t.symbol.valueDeclaration,n=e.getEffectiveBaseTypeNode(r),i=za(t);if(!i)return t.resolvedBaseConstructorType=Se;if(!qi(t,1))return xe;var a=zy(i.expression);if(n&&i!==n&&(e.Debug.assert(!n.typeArguments),zy(n.expression)),2621440&a.flags&&Qo(a),!Hi())return Xr(t.symbol.valueDeclaration,e.Diagnostics._0_is_referenced_directly_or_indirectly_in_its_own_base_expression,Pi(t.symbol)),t.resolvedBaseConstructorType=xe;if(!(1&a.flags||a===ke||Ja(a))){var o=Xr(i.expression,e.Diagnostics.Type_0_is_not_a_constructor_function_type,Ii(a));if(262144&a.flags){var s=ic(a),c=De;if(s){var u=xs(s,1);u[0]&&(c=zs(u[0]))}e.addRelatedInfo(o,e.createDiagnosticForNode(a.symbol.declarations[0],e.Diagnostics.Did_you_mean_for_0_to_be_constrained_to_type_new_args_Colon_any_1,Pi(a.symbol),Ii(c)))}return t.resolvedBaseConstructorType=xe}t.resolvedBaseConstructorType=a}return t.resolvedBaseConstructorType}function Wa(t){return t.resolvedBaseTypes||(8&t.objectFlags?t.resolvedBaseTypes=[jc(Qc(t.typeParameters||e.emptyArray),t.readonly)]:96&t.symbol.flags?(32&t.symbol.flags&&function(t){t.resolvedBaseTypes=e.resolvingEmptyArray;var r=ms(qa(t));if(!(2621441&r.flags))return t.resolvedBaseTypes=e.emptyArray;var n,i=za(t),a=r.symbol?ro(r.symbol):void 0;if(r.symbol&&32&r.symbol.flags&&function(e){var t=e.outerTypeParameters;if(t){var r=t.length-1,n=_c(e);return t[r].symbol!==n[r].symbol}return!0}(a))n=pc(i,r.symbol);else if(1&r.flags)n=r;else{var o=Va(r,i.typeArguments,i);if(!o.length)return Xr(i.expression,e.Diagnostics.No_base_constructor_has_the_specified_number_of_type_arguments),t.resolvedBaseTypes=e.emptyArray;n=zs(o[0])}if(n===xe)return t.resolvedBaseTypes=e.emptyArray;if(!Ga(n))return Xr(i.expression,e.Diagnostics.Base_constructor_return_type_0_is_not_an_object_type_or_intersection_of_object_types_with_statically_known_members,Ii(n)),t.resolvedBaseTypes=e.emptyArray;if(t===n||Ma(n,t))return Xr(t.symbol.valueDeclaration,e.Diagnostics.Type_0_recursively_references_itself_as_a_base_type,Ii(t,void 0,2)),t.resolvedBaseTypes=e.emptyArray;t.resolvedBaseTypes===e.resolvingEmptyArray&&(t.members=void 0);t.resolvedBaseTypes=[n]}(t),64&t.symbol.flags&&function(t){t.resolvedBaseTypes=t.resolvedBaseTypes||e.emptyArray;for(var r=0,n=t.symbol.declarations;r<n.length;r++){var i=n[r];if(245===i.kind&&e.getInterfaceBaseTypeNodes(i))for(var a=0,o=e.getInterfaceBaseTypeNodes(i);a<o.length;a++){var s=o[a],c=Yu(s);c!==xe&&(Ga(c)?t===c||Ma(c,t)?Xr(i,e.Diagnostics.Type_0_recursively_references_itself_as_a_base_type,Ii(t,void 0,2)):t.resolvedBaseTypes===e.emptyArray?t.resolvedBaseTypes=[c]:t.resolvedBaseTypes.push(c):Xr(s,e.Diagnostics.An_interface_can_only_extend_an_object_type_or_intersection_of_object_types_with_statically_known_members))}}}(t)):e.Debug.fail("type must be class or interface")),t.resolvedBaseTypes}function Ga(t){if(262144&t.flags){var r=cs(t);if(r)return Ga(r)}return!!(67633153&t.flags)&&!Xo(t)||!!(2097152&t.flags)&&e.every(t.types,Ga)}function Ha(t){var r=_n(t),n=r;if(!r.declaredType){var i=32&t.flags?1:2,a=Tg(t,function(t){var r=t&&t.parent&&(e.isFunctionDeclaration(t)&&ri(t)||e.isBinaryExpression(t.parent)&&ri(t.parent.left)||e.isVariableDeclaration(t.parent)&&ri(t.parent)),n=r&&r.exports&&r.exports.get("prototype"),i=n&&n.valueDeclaration&&function(t){if(!t.parent)return!1;var r=t.parent;for(;r&&193===r.kind;)r=r.parent;if(r&&e.isBinaryExpression(r)&&e.isPrototypeAccess(r.left)&&62===r.operatorToken.kind){var n=e.getInitializerOfBinaryExpression(r);return e.isObjectLiteralExpression(n)&&n}}(n.valueDeclaration);return i?ri(i):void 0}(t.valueDeclaration));a&&(t=r=a);var o=n.declaredType=r.declaredType=pi(i,t),s=Ba(t),c=ja(t);(s||c||1===i||!function(t){for(var r=0,n=t.declarations;r<n.length;r++){var i=n[r];if(245===i.kind){if(128&i.flags)return!1;var a=e.getInterfaceBaseTypeNodes(i);if(a)for(var o=0,s=a;o<s.length;o++){var c=s[o];if(e.isEntityNameExpression(c.expression)){var u=Kn(c.expression,788968,!0);if(!u||!(64&u.flags)||Ha(u).thisType)return!1}}}}return!0}(t))&&(o.objectFlags|=4,o.typeParameters=e.concatenate(s,c),o.outerTypeParameters=s,o.localTypeParameters=c,o.instantiations=e.createMap(),o.instantiations.set(oc(o.typeParameters),o),o.target=o,o.resolvedTypeArguments=o.typeParameters,o.thisType=fi(t),o.thisType.isThisType=!0,o.thisType.constraint=o)}return r.declaredType}function Ya(t){var r=_n(t);if(!r.declaredType){if(!qi(t,2))return xe;var n=e.find(t.declarations,e.isTypeAlias);if(!n)return e.Debug.fail("Type alias symbol with no valid declaration found");var i=e.isJSDocTypeAlias(n)?n.typeExpression:n.type,a=i?Yu(i):xe;if(Hi()){var o=ja(t);o&&(r.typeParameters=o,r.instantiations=e.createMap(),r.instantiations.set(oc(o),a))}else a=xe,Xr(e.isJSDocEnumTag(n)?n:n.name||n,e.Diagnostics.Type_alias_0_circularly_references_itself,Pi(t));r.declaredType=a}return r.declaredType}function Xa(t){var r=t.initializer;if(!r)return!(8388608&t.flags);switch(r.kind){case 10:case 8:case 14:return!0;case 206:return 40===r.operator&&8===r.operand.kind;case 75:return e.nodeIsMissing(r)||!!ri(t.parent).exports.get(r.escapedText);case 208:return function t(r){return!!e.isStringLiteralLike(r)||208===r.kind&&(t(r.left)&&t(r.right))}(r);default:return!1}}function Qa(t){var r=_n(t);if(void 0!==r.enumKind)return r.enumKind;for(var n=!1,i=0,a=t.declarations;i<a.length;i++){var o=a[i];if(247===o.kind)for(var s=0,c=o.members;s<c.length;s++){var u=c[s];if(u.initializer&&e.isStringLiteralLike(u.initializer))return r.enumKind=1;Xa(u)||(n=!0)}}return r.enumKind=n?0:1}function $a(e){return 1024&e.flags&&!(1048576&e.flags)?ro(ni(e.symbol)):e}function Za(e){var t=_n(e);if(t.declaredType)return t.declaredType;if(1===Qa(e)){b++;for(var r=[],n=0,i=e.declarations;n<i.length;n++){var a=i[n];if(247===a.kind)for(var o=0,s=a.members;o<s.length;o++){var c=s[o],u=Ib(c),l=Uu(Wu(void 0!==u?u:0,b,ri(c)));_n(ri(c)).declaredType=l,r.push(Vu(l))}}if(r.length){var _=Qc(r,1,e,void 0);return 1048576&_.flags&&(_.flags|=1024,_.symbol=e),t.declaredType=_}}var d=li(32);return d.symbol=e,t.declaredType=d}function eo(e){var t=_n(e);if(!t.declaredType){var r=Za(ni(e));t.declaredType||(t.declaredType=r)}return t.declaredType}function to(e){var t=_n(e);return t.declaredType||(t.declaredType=fi(e))}function ro(e){return no(e)||xe}function no(e){return 96&e.flags?Ha(e):524288&e.flags?Ya(e):262144&e.flags?to(e):384&e.flags?Za(e):8&e.flags?eo(e):2097152&e.flags?function(e){var t=_n(e);return t.declaredType||(t.declaredType=ro(Mn(e)))}(e):void 0}function io(e){switch(e.kind){case 124:case 147:case 142:case 139:case 150:case 127:case 143:case 140:case 109:case 145:case 99:case 136:case 186:return!0;case 173:return io(e.elementType);case 168:return!e.typeArguments||e.typeArguments.every(io)}return!1}function ao(t){var r=e.getEffectiveConstraintOfTypeParameter(t);return!r||io(r)}function oo(t){var r=e.getEffectiveTypeAnnotationNode(t);return r?io(r):!e.hasInitializer(t)}function so(t){if(t.declarations&&1===t.declarations.length){var r=t.declarations[0];if(r)switch(r.kind){case 158:case 157:return oo(r);case 160:case 159:case 161:case 162:case 163:return function(t){var r=e.getEffectiveReturnTypeNode(t),n=e.getEffectiveTypeParameterDeclarations(t);return(161===t.kind||!!r&&io(r))&&t.parameters.every(oo)&&n.every(ao)}(r)}}return!1}function co(t,r,n){for(var i=e.createSymbolTable(),a=0,o=t;a<o.length;a++){var s=o[a];i.set(s.escapedName,n&&so(s)?s:cl(s,r))}return i}function uo(e,t){for(var r=0,n=t;r<n.length;r++){var i=n[r];e.has(i.escapedName)||e.set(i.escapedName,i)}}function lo(t){if(!t.declaredProperties){var r=t.symbol,n=bo(r);t.declaredProperties=gi(n),t.declaredCallSignatures=e.emptyArray,t.declaredConstructSignatures=e.emptyArray,t.declaredCallSignatures=js(n.get("__call")),t.declaredConstructSignatures=js(n.get("__new")),t.declaredStringIndexInfo=rc(r,0),t.declaredNumberIndexInfo=rc(r,1)}return t}function _o(e){return!!(8576&e.flags)}function po(t){if(!e.isComputedPropertyName(t)&&!e.isElementAccessExpression(t))return!1;var r=e.isComputedPropertyName(t)?t.expression:t.argumentExpression;return e.isEntityNameExpression(r)&&_o(e.isComputedPropertyName(t)?Lf(t):ky(r))}function fo(e){return 95===e.charCodeAt(0)&&95===e.charCodeAt(1)&&64===e.charCodeAt(2)}function mo(t){var r=e.getNameOfDeclaration(t);return!!r&&po(r)}function go(t){return e.hasDynamicName(t)&&!mo(t)}function yo(t){return 8192&t.flags?t.escapedName:384&t.flags?e.escapeLeadingUnderscores(""+t.value):e.Debug.fail()}function ho(t,r,n,i){e.Debug.assert(!!i.symbol,"The member is expected to have a symbol.");var a=dn(i);if(!a.resolvedSymbol){a.resolvedSymbol=i.symbol;var o=e.isBinaryExpression(i)?i.left:i.name,s=e.isElementAccessExpression(o)?ky(o.argumentExpression):Lf(o);if(_o(s)){var c=yo(s),u=i.symbol.flags,l=n.get(c);l||n.set(c,l=en(0,c,4096));var _=r&&r.get(c);if(l.flags&rn(u)||_){var d=_?e.concatenate(_.declarations,l.declarations):l.declarations,p=!(8192&s.flags)&&e.unescapeLeadingUnderscores(c)||e.declarationNameToString(o);e.forEach(d,(function(t){return Xr(e.getNameOfDeclaration(t)||t,e.Diagnostics.Property_0_was_also_declared_here,p)})),Xr(o||i,e.Diagnostics.Duplicate_property_0,p),l=en(0,c,4096)}return l.nameType=s,function(t,r,n){e.Debug.assert(!!(4096&e.getCheckFlags(t)),"Expected a late-bound symbol."),t.flags|=n,_n(r.symbol).lateSymbol=t,t.declarations?t.declarations.push(r):t.declarations=[r],111551&n&&(t.valueDeclaration&&t.valueDeclaration.kind===r.kind||(t.valueDeclaration=r))}(l,i,u),l.parent?e.Debug.assert(l.parent===t,"Existing symbol parent should match new one"):l.parent=t,a.resolvedSymbol=l}}return a.resolvedSymbol}function vo(t,r){var n=_n(t);if(!n[r]){var i="resolvedExports"===r,a=i?1536&t.flags?ei(t):t.exports:t.members;n[r]=a||B;for(var o=e.createSymbolTable(),s=0,c=t.declarations;s<c.length;s++){var u=c[s],l=e.getMembersOfDeclaration(u);if(l)for(var _=0,d=l;_<d.length;_++){var p=d[_];i===e.hasStaticModifier(p)&&mo(p)&&ho(t,a,o,p)}}var f=t.assignmentDeclarationMembers;if(f)for(var m=0,g=e.arrayFrom(f.values());m<g.length;m++){p=g[m];var y=e.getAssignmentDeclarationKind(p);i===!(3===y||4===y||9===y||6===y)&&mo(p)&&ho(t,a,o,p)}n[r]=function(t,r){if(!e.hasEntries(t))return r;if(!e.hasEntries(r))return t;var n=e.createSymbolTable();return un(n,t),un(n,r),n}(a,o)||B}return n[r]}function bo(e){return 6256&e.flags?vo(e,"resolvedMembers"):e.members||B}function xo(t){if(106500&t.flags&&"__computed"===t.escapedName){var r=_n(t);if(!r.lateSymbol&&e.some(t.declarations,mo)){var n=ti(t.parent);e.some(t.declarations,e.hasStaticModifier)?Qn(n):bo(n)}return r.lateSymbol||(r.lateSymbol=t)}return t}function Do(t,r,n){if(4&e.getObjectFlags(t)){var i=t.target,a=_c(t);if(e.length(i.typeParameters)===e.length(a)){var o=cc(i,e.concatenate(a,[r||i.thisType]));return n?ms(o):o}}else if(2097152&t.flags)return iu(e.map(t.types,(function(e){return Do(e,r,n)})));return n?ms(t):t}function So(t,r,n,i){var a,o,s,c,u,l;e.rangeEquals(n,i,0,n.length)?(a=j,o=r.symbol?bo(r.symbol):e.createSymbolTable(r.declaredProperties),s=r.declaredCallSignatures,c=r.declaredConstructSignatures,u=r.declaredStringIndexInfo,l=r.declaredNumberIndexInfo):(a=el(n,i),o=co(r.declaredProperties,a,1===n.length),s=$u(r.declaredCallSignatures,a),c=$u(r.declaredConstructSignatures,a),u=vl(r.declaredStringIndexInfo,a),l=vl(r.declaredNumberIndexInfo,a));var _=Wa(r);if(_.length){r.symbol&&o===bo(r.symbol)&&(o=e.createSymbolTable(r.declaredProperties)),yi(t,o,s,c,u,l);for(var d=e.lastOrUndefined(i),p=0,f=_;p<f.length;p++){var m=f[p],g=d?Do(gl(m,a),d):m;uo(o,ts(g)),s=e.concatenate(s,xs(g,0)),c=e.concatenate(c,xs(g,1)),u||(u=g===he?tc(he,!1):Ts(g,0)),l=l||Ts(g,1)}}yi(t,o,s,c,u,l)}function To(e,t,r,n,i,a,o,s){var c=new y(oe,s);return c.declaration=e,c.typeParameters=t,c.parameters=n,c.thisParameter=r,c.resolvedReturnType=i,c.resolvedTypePredicate=a,c.minArgumentCount=o,c.target=void 0,c.mapper=void 0,c}function Eo(e){var t=To(e.declaration,e.typeParameters,e.thisParameter,e.parameters,void 0,void 0,e.minArgumentCount,3&e.flags);return t.target=e.target,t.mapper=e.mapper,t}function Co(e,t){var r=Eo(e);return r.unionSignatures=t,r.target=void 0,r.mapper=void 0,r}function ko(e){return R(e)?e:e.optionalCallSignatureCache||(e.optionalCallSignatureCache=function(e){var t=Eo(e);return t.flags|=4,t}(e))}function No(t){if(M(t)){var r=t.parameters.length-1,n=wa(t.parameters[r]);if(w_(n)){var i=_c(n),a=n.target.minLength,o=n.target.hasRestElement?i.length-1:-1,s=e.map(i,(function(e,n){var i=en(1,Og(t,r+n),n===o?32768:n>=a?16384:0);return i.type=n===o?jc(e):e,i}));return e.concatenate(t.parameters.slice(0,r),s)}}return t.parameters}function Ao(e,t,r,n,i){for(var a=0,o=e;a<o.length;a++){var s=o[a];if(m_(s,t,r,n,i,r?Nl:Cl))return s}}function Fo(t,r,n){if(r.typeParameters){if(n>0)return;for(var i=1;i<t.length;i++)if(!Ao(t[i],r,!1,!1,!1))return;return[r]}var a;for(i=0;i<t.length;i++){var o=i===n?r:Ao(t[i],r,!0,!1,!0);if(!o)return;a=e.appendIfUnique(a,o)}return a}function Po(t){for(var r,n,i=0;i<t.length;i++){if(0===t[i].length)return e.emptyArray;t[i].length>1&&(n=void 0===n?i:-1);for(var a=0,o=t[i];a<o.length;a++){var s=o[a];if(!r||!Ao(r,s,!1,!1,!0)){var c=Fo(t,s,i);if(c){var u=s;if(c.length>1){var l=s.thisParameter,_=e.forEach(c,(function(e){return e.thisParameter}));if(_)l=X_(_,iu(e.mapDefined(c,(function(e){return e.thisParameter&&wa(e.thisParameter)}))));(u=Co(s,c)).thisParameter=l}(r||(r=[])).push(u)}}}}if(!e.length(r)&&-1!==n){for(var d=t[void 0!==n?n:0],p=d.slice(),f=function(t){if(t!==d){var r=t[0];if(e.Debug.assert(!!r,"getUnionSignatures bails early on empty signature lists and should not have empty lists on second pass"),!(p=r.typeParameters&&e.some(p,(function(e){return!!e.typeParameters}))?void 0:e.map(p,(function(t){return function(t,r){var n=t.declaration,i=function(e,t){for(var r=Bg(e),n=Bg(t),i=r>=n?e:t,a=i===e?t:e,o=i===e?r:n,s=Kg(e)||Kg(t),c=s&&!Kg(i),u=new Array(o+(c?1:0)),l=0;l<o;l++){var _=Lg(i,l),d=Lg(a,l)||De,p=iu([_,d]),f=s&&!c&&l===o-1,m=l>=jg(i)&&l>=jg(a),g=l>=r?void 0:Og(e,l),y=l>=n?void 0:Og(t,l),h=en(1|(m&&!f?16777216:0),(g===y?g:g?y?void 0:g:y)||"arg"+l);h.type=f?jc(p):p,u[l]=h}if(c){var v=en(1,"args");v.type=jc(Mg(a,o)),u[o]=v}return u}(t,r),a=function(e,t){if(!e||!t)return e||t;var r=iu([wa(e),wa(t)]);return X_(e,r)}(t.thisParameter,r.thisParameter),o=Math.max(t.minArgumentCount,r.minArgumentCount),s=To(n,t.typeParameters||r.typeParameters,a,i,void 0,void 0,o,3&(t.flags|r.flags));return s.unionSignatures=e.concatenate(t.unionSignatures||[t],[r]),s}(t,r)}))))return"break"}},m=0,g=t;m<g.length;m++){if("break"===f(g[m]))break}r=p}return r||e.emptyArray}function wo(e,t){for(var r=[],n=!1,i=0,a=e;i<a.length;i++){var o=Ts(a[i],t);if(!o)return;r.push(o.type),n=n||o.isReadonly}return tc(Qc(r,2),n)}function Io(e,t){return e?t?iu([e,t]):e:t}function Oo(e,t){return e?t?tc(iu([e.type,t.type]),e.isReadonly&&t.isReadonly):e:t}function Mo(e,t){return e&&t&&tc(Qc([e.type,t.type]),e.isReadonly||t.isReadonly)}function Lo(t){var r=e.countWhere(t,(function(e){return xs(e,1).length>0})),n=e.map(t,Ka);if(r>0&&r===e.countWhere(n,(function(e){return e}))){var i=n.indexOf(!0);n[i]=!1}return n}function Ro(t){for(var r,n,i,a,o=t.types,s=Lo(o),c=e.countWhere(s,(function(e){return e})),u=function(u){var l=t.types[u];if(!s[u]){var _=xs(l,1);_.length&&c>0&&(_=e.map(_,(function(e){var t=Eo(e);return t.resolvedReturnType=function(e,t,r,n){for(var i=[],a=0;a<t.length;a++)a===n?i.push(e):r[a]&&i.push(zs(xs(t[a],1)[0]));return iu(i)}(zs(e),o,s,u),t}))),n=Bo(n,_)}r=Bo(r,xs(l,0)),i=Oo(i,Ts(l,0)),a=Oo(a,Ts(l,1))},l=0;l<o.length;l++)u(l);yi(t,B,r||e.emptyArray,n||e.emptyArray,i,a)}function Bo(t,r){for(var n=function(r){t&&!e.every(t,(function(e){return!m_(e,r,!1,!1,!1,Cl)}))||(t=e.append(t,r))},i=0,a=r;i<a.length;i++){n(a[i])}return t}function jo(t){var r=ti(t.symbol);if(t.target)yi(t,B,e.emptyArray,e.emptyArray,void 0,void 0),yi(t,a=co($o(t.target),t.mapper,!1),n=$u(xs(t.target,0),t.mapper),i=$u(xs(t.target,1),t.mapper),o=vl(Ts(t.target,0),t.mapper),u=vl(Ts(t.target,1),t.mapper));else if(2048&r.flags){yi(t,B,e.emptyArray,e.emptyArray,void 0,void 0);var n=js((a=bo(r)).get("__call")),i=js(a.get("__new"));yi(t,a,n,i,o=rc(r,0),u=rc(r,1))}else{var a=B,o=void 0;if(r.exports&&(a=Qn(r),r===re)){var s=e.createMap();a.forEach((function(e){418&e.flags||s.set(e.escapedName,e)})),a=s}if(yi(t,a,e.emptyArray,e.emptyArray,void 0,void 0),32&r.flags){var c=qa(Ha(r));11272192&c.flags?uo(a=e.createSymbolTable(gi(a)),ts(c)):c===he&&(o=tc(he,!1))}var u=384&r.flags&&(32&ro(r).flags||e.some(t.properties,(function(e){return!!(296&wa(e).flags)})))?rr:void 0;if(yi(t,a,e.emptyArray,e.emptyArray,o,u),8208&r.flags&&(t.callSignatures=js(r)),32&r.flags){var l=Ha(r);i=r.members?js(r.members.get("__constructor")):e.emptyArray;16&r.flags&&(i=e.addRange(i.slice(),e.mapDefined(t.callSignatures,(function(e){return Sg(e.declaration)?To(e.declaration,e.typeParameters,e.thisParameter,e.parameters,l,void 0,e.minArgumentCount,3&e.flags):void 0})))),i.length||(i=function(t){var r=xs(qa(t),1);if(0===r.length)return[To(void 0,t.localTypeParameters,void 0,e.emptyArray,t,void 0,0,0)];for(var n=za(t),i=e.isInJSFile(n),a=Ec(n),o=e.length(a),s=[],c=0,u=r;c<u.length;c++){var l=u[c],_=Os(l.typeParameters),d=e.length(l.typeParameters);if(i||o>=_&&o<=d){var p=d?Hs(l,Ms(a,l.typeParameters,_,i)):Eo(l);p.typeParameters=t.localTypeParameters,p.resolvedReturnType=t,s.push(p)}}return s}(l)),t.constructSignatures=i}}}function Ko(t){if(131069&t.flags)return t;if(4194304&t.flags)return lu(ms(t.type));if(16777216&t.flags){if(t.root.isDistributive){var r=t.checkType,n=Ko(r);if(n!==r)return ml(t,rl(Zu(t.root.checkType,n),t.mapper))}return t}return 1048576&t.flags?Qc(e.sameMap(t.types,Ko)):2097152&t.flags?iu(e.sameMap(t.types,Ko)):Be}function Jo(e){return e.typeParameter||(e.typeParameter=to(ri(e.declaration.typeParameter)))}function zo(e){return e.constraintType||(e.constraintType=ns(Jo(e))||xe)}function Uo(e){return e.templateType||(e.templateType=e.declaration.type?gl(sa(Yu(e.declaration.type),!!(4&Go(e))),e.mapper||j):xe)}function Vo(t){return e.getEffectiveConstraintOfTypeParameter(t.declaration.typeParameter)}function qo(e){var t=Vo(e);return 183===t.kind&&133===t.operator}function Wo(e){if(!e.modifiersType)if(qo(e))e.modifiersType=gl(Yu(Vo(e).type),e.mapper||j);else{var t=zo(Cu(e.declaration)),r=t&&262144&t.flags?ns(t):t;e.modifiersType=r&&4194304&r.flags?gl(r.type,e.mapper||j):De}return e.modifiersType}function Go(e){var t=e.declaration;return(t.readonlyToken?40===t.readonlyToken.kind?2:1:0)|(t.questionToken?40===t.questionToken.kind?8:4:0)}function Ho(e){var t=Go(e);return 8&t?-1:4&t?1:0}function Yo(e){var t=Ho(e),r=Wo(e);return t||(Xo(r)?Ho(r):0)}function Xo(t){return!!(32&e.getObjectFlags(t))&&yu(zo(t))}function Qo(t){return t.members||(524288&t.flags?4&t.objectFlags?function(t){var r=lo(t.target),n=e.concatenate(r.typeParameters,[r.thisType]),i=_c(t);So(t,r,n,i.length===n.length?i:e.concatenate(i,[t]))}(t):3&t.objectFlags?function(t){So(t,lo(t),e.emptyArray,e.emptyArray)}(t):2048&t.objectFlags?function(t){for(var r=Ts(t.source,0),n=Go(t.mappedType),i=!(1&n),a=4&n?0:16777216,o=r&&tc(hd(r.type,t.mappedType,t.constraintType),i&&r.isReadonly),s=e.createSymbolTable(),c=0,u=ts(t.source);c<u.length;c++){var l=u[c],_=8192|(i&&uy(l)?8:0),d=en(4|l.flags&a,l.escapedName,_);d.declarations=l.declarations,d.nameType=l.nameType,d.propertyType=wa(l),d.mappedType=t.mappedType,d.constraintType=t.constraintType,s.set(l.escapedName,d)}yi(t,s,e.emptyArray,e.emptyArray,o,void 0)}(t):16&t.objectFlags?jo(t):32&t.objectFlags&&function(t){var r,n,i=e.createSymbolTable();yi(t,B,e.emptyArray,e.emptyArray,void 0,void 0);var a=Jo(t),o=zo(t),s=Uo(t.target||t),c=ms(Wo(t)),u=Go(t),l=X?128:8576;if(qo(t)){for(var _=0,d=ts(c);_<d.length;_++){p(su(d[_],l))}(1&c.flags||Ts(c,0))&&p(Ne),!X&&Ts(c,1)&&p(Ae)}else up(Ko(o),p);function p(e){var o=rl(t.mapper,el([a],[e])),l=gl(s,o);if(_o(e)){var _=yo(e),d=vs(c,_),p=!!(4&u||!(8&u)&&d&&16777216&d.flags),f=en(4|(p?16777216:0),_,!!(1&u||!(2&u)&&d&&uy(d))?8:0);f.type=V&&p&&!Fl(Se,l)?z_(l):V&&!p&&d&&16777216&d.flags?Hd(l,524288):l,d&&(f.syntheticOrigin=d,f.declarations=d.declarations),f.nameType=e,i.set(_,f)}else 5&e.flags?r=tc(l,!!(1&u)):40&e.flags&&(n=tc(n?Qc([n.type,l]):l,!!(1&u)))}yi(t,i,e.emptyArray,e.emptyArray,r,n)}(t):1048576&t.flags?function(t){var r=Po(e.map(t.types,(function(e){return e===ut?[Zt]:xs(e,0)}))),n=Po(e.map(t.types,(function(e){return xs(e,1)}))),i=wo(t.types,0),a=wo(t.types,1);yi(t,B,r,n,i,a)}(t):2097152&t.flags&&Ro(t)),t}function $o(t){return 524288&t.flags?Qo(t).properties:e.emptyArray}function Zo(e,t){if(524288&e.flags){var r=Qo(e).members.get(t);if(r&&ci(r))return r}}function es(t){if(t.possiblePropertyCache)return t.possiblePropertyCache.size?e.arrayFrom(t.possiblePropertyCache.values()):e.emptyArray;t.possiblePropertyCache=e.createSymbolTable();for(var r=0,n=t.types;r<n.length;r++)for(var i=0,a=ts(n[r]);i<a.length;i++){var o=a[i];if(!t.possiblePropertyCache.has(o.escapedName)){var s=ys(t,o.escapedName);s&&t.possiblePropertyCache.set(o.escapedName,s)}}return t.possiblePropertyCache.size?e.arrayFrom(t.possiblePropertyCache.values()):e.emptyArray}function ts(t){return 3145728&(t=ms(t)).flags?function(t){if(!t.resolvedProperties){for(var r=e.createSymbolTable(),n=0,i=t.types;n<i.length;n++){for(var a=0,o=ts(i[n]);a<o.length;a++){var s=o[a];if(!r.has(s.escapedName)){var c=hs(t,s.escapedName);c&&r.set(s.escapedName,c)}}if(1048576&t.flags)break}t.resolvedProperties=gi(r)}return t.resolvedProperties}(t):$o(t)}function rs(e){return 262144&e.flags?ns(e):8388608&e.flags?function(e){return ls(e)?function(e){var t=is(e.indexType);if(t&&t!==e.indexType){var r=Tu(e.objectType,t);if(r)return r}var n=is(e.objectType);if(n&&n!==e.objectType)return Tu(n,e.indexType);return}(e):void 0}(e):16777216&e.flags?function(e){return ls(e)?ss(e):void 0}(e):cs(e)}function ns(e){return ls(e)?ic(e):void 0}function is(e){var t=vu(e,!1);return t!==e?t:rs(e)}function as(e){if(!e.resolvedDefaultConstraint){var t=function(e){return e.resolvedInferredTrueType||(e.resolvedInferredTrueType=e.combinedMapper?gl(e.root.trueType,e.combinedMapper):Au(e))}(e),r=Fu(e);e.resolvedDefaultConstraint=Qi(t)?r:Qi(r)?t:Qc([t,r])}return e.resolvedDefaultConstraint}function os(e){if(e.root.isDistributive&&e.restrictiveInstantiation!==e){var t=vu(e.checkType,!1),r=t===e.checkType?rs(t):t;if(r&&r!==e.checkType){var n=ml(e,rl(Zu(e.root.checkType,r),e.mapper));if(!(131072&n.flags))return n}}}function ss(e){return os(e)||as(e)}function cs(e){if(62128128&e.flags){var t=_s(e);return t!==Ze&&t!==et?t:void 0}return 4194304&e.flags?qe:void 0}function us(e){return cs(e)||e}function ls(e){return _s(e)!==et}function _s(t){var r=!1;return t.resolvedBaseConstraint||(t.resolvedBaseConstraint=Do(n(t),t));function n(t){if(!t.immediateBaseConstraint){if(!qi(t,4))return et;if(E>=50)return Xr(l,e.Diagnostics.Type_instantiation_is_excessively_deep_and_possibly_infinite),r=!0,t.immediateBaseConstraint=Ze;E++;var n=function(e){if(262144&e.flags){var t=ic(e);return e.isThisType||!t?t:i(t)}if(3145728&e.flags){for(var r=e.types,n=[],a=0,o=r;a<o.length;a++){var s=i(o[a]);s&&n.push(s)}return 1048576&e.flags&&n.length===r.length?Qc(n):2097152&e.flags&&n.length?iu(n):void 0}if(4194304&e.flags)return qe;if(8388608&e.flags){var c=i(e.objectType),u=i(e.indexType),l=c&&u&&Tu(c,u);return l&&i(l)}if(16777216&e.flags){t=ss(e);E++;var _=t&&i(t);return E--,_}if(33554432&e.flags)return i(e.substitute);return e}(vu(t,!1));if(E--,!Hi()){if(262144&t.flags){var a=nc(t);if(a){var o=Xr(a,e.Diagnostics.Type_parameter_0_has_a_circular_constraint,Ii(t));!l||e.isNodeDescendantOf(a,l)||e.isNodeDescendantOf(l,a)||e.addRelatedInfo(o,e.createDiagnosticForNode(l,e.Diagnostics.Circularity_originates_in_type_at_this_location))}}n=et}r&&(n=et),t.immediateBaseConstraint=n||Ze}return t.immediateBaseConstraint}function i(e){var t=n(e);return t!==Ze&&t!==et?t:void 0}}function ds(t){if(t.default)t.default===tt&&(t.default=et);else if(t.target){var r=ds(t.target);t.default=r?gl(r,t.mapper):Ze}else{t.default=tt;var n=t.symbol&&e.forEach(t.symbol.declarations,(function(t){return e.isTypeParameterDeclaration(t)&&t.default})),i=n?Yu(n):Ze;t.default===tt&&(t.default=i)}return t.default}function ps(e){var t=ds(e);return t!==Ze&&t!==et?t:void 0}function fs(e){return e.resolvedApparentType||(e.resolvedApparentType=function(e){var t=_l(e);if(t){var r=ns(t);if(r&&(y_(r)||w_(r))){var n=Zu(t,r);return gl(e,rl(n,e.mapper))}}return e}(e))}function ms(t){var r,n=63176704&t.flags?cs(t)||De:t;return 32&e.getObjectFlags(n)?fs(n):2097152&n.flags?function(e){return e.resolvedApparentType||(e.resolvedApparentType=Do(e,e,!0))}(n):132&n.flags?ft:296&n.flags?mt:2112&n.flags?(r=J>=99,Vt||(Vt=Fc("BigInt",0,r))||Ge):528&n.flags?gt:12288&n.flags?wc(J>=2):67108864&n.flags?Ge:4194304&n.flags?qe:2&n.flags&&!V?Ge:n}function gs(t,r){for(var n,i=e.createMap(),a=1048576&t.flags,o=a?24:0,s=a?0:16777216,c=4,u=0,l=0,_=t.types;l<_.length;l++){if((E=ms(_[l]))!==xe){var d=(T=vs(E,r))?e.getDeclarationModifierFlagsFromSymbol(T):0;if(!T||d&o){if(a){var p=!fo(r)&&(Mf(r)&&Ts(E,1)||Ts(E,0));p?(u|=32|(p.isReadonly?8:0),n=e.append(n,w_(E)?I_(E)||Se:p.type)):Cd(E)?(u|=32,n=e.append(n,Se)):u|=16}}else{a?s|=16777216&T.flags:s&=T.flags;var f=""+A(T);i.has(f)||i.set(f,T),u|=(uy(T)?8:0)|(24&d?0:256)|(16&d?512:0)|(8&d?1024:0)|(32&d?2048:0),sm(T)||(c=2)}}}if(i.size){var m,g,y,h=e.arrayFrom(i.values());if(!(1!==h.length||16&u||n))return h[0];for(var v,b=[],x=!1,D=0,S=h;D<S.length;D++){var T=S[D];v?T.valueDeclaration!==v&&(x=!0):v=T.valueDeclaration,m=e.addRange(m,T.declarations);var E=wa(T);g?E!==g&&(u|=64):(g=E,y=T.nameType),C_(E)&&(u|=128),b.push(E)}e.addRange(b,n);var C=en(4|s,r,c|u);return C.containingType=t,!x&&v&&(C.valueDeclaration=v,v.symbol.parent&&(C.parent=v.symbol.parent)),C.declarations=m,C.nameType=y,b.length>2?(C.checkFlags|=65536,C.deferralParent=t,C.deferralConstituents=b):C.type=a?Qc(b):iu(b),C}}function ys(t,r){var n=t.propertyCache||(t.propertyCache=e.createSymbolTable()),i=n.get(r);return i||(i=gs(t,r))&&n.set(r,i),i}function hs(t,r){var n=ys(t,r);return!n||16&e.getCheckFlags(n)?void 0:n}function vs(e,t){if(524288&(e=ms(e)).flags){var r=Qo(e),n=r.members.get(t);if(n&&ci(n))return n;var i=r===$e?ut:r.callSignatures.length?lt:r.constructSignatures.length?_t:void 0;if(i){var a=Zo(i,t);if(a)return a}return Zo(ct,t)}if(3145728&e.flags)return hs(e,t)}function bs(t,r){if(3670016&t.flags){var n=Qo(t);return 0===r?n.callSignatures:n.constructSignatures}return e.emptyArray}function xs(e,t){return bs(ms(e),t)}function Ds(e,t){if(3670016&e.flags){var r=Qo(e);return 0===t?r.stringIndexInfo:r.numberIndexInfo}}function Ss(e,t){var r=Ds(e,t);return r&&r.type}function Ts(e,t){return Ds(ms(e),t)}function Es(e,t){return Ss(ms(e),t)}function Cs(t,r){if(Y_(t)){for(var n=[],i=0,a=ts(t);i<a.length;i++){var o=a[i];(0===r||Mf(o.escapedName))&&n.push(wa(o))}if(0===r&&e.append(n,Es(t,1)),n.length)return Qc(n,2)}}function ks(t){for(var r,n=0,i=e.getEffectiveTypeParameterDeclarations(t);n<i.length;n++){var a=i[n];r=e.appendIfUnique(r,to(a.symbol))}return r}function Ns(e){var t=[];return e.forEach((function(e,r){mi(r)||t.push(e)})),t}function As(t){return e.isInJSFile(t)&&(t.type&&297===t.type.kind||e.getJSDocParameterTags(t).some((function(e){var t=e.isBracketed,r=e.typeExpression;return t||!!r&&297===r.type.kind})))}function Fs(t,r){if(!e.isExternalModuleNameRelative(t)){var n=fn(ee,'"'+t+'"',512);return n&&r?ti(n):n}}function Ps(t){if(e.hasQuestionToken(t)||ws(t)||As(t))return!0;if(t.initializer){var r=Ls(t.parent),n=t.parent.parameters.indexOf(t);return e.Debug.assert(n>=0),n>=jg(r)}var i=e.getImmediatelyInvokedFunctionExpression(t.parent);return!!i&&(!t.type&&!t.dotDotDotToken&&t.parent.parameters.indexOf(t)>=i.arguments.length)}function ws(t){if(!e.isJSDocParameterTag(t))return!1;var r=t.isBracketed,n=t.typeExpression;return r||!!n&&297===n.type.kind}function Is(e,t,r,n){return{kind:e,parameterName:t,parameterIndex:r,type:n}}function Os(t){var r,n=0;if(t)for(var i=0;i<t.length;i++)(r=t[i]).symbol&&e.forEach(r.symbol.declarations,(function(t){return e.isTypeParameterDeclaration(t)&&t.default}))||(n=i+1);return n}function Ms(t,r,n,i){var a=e.length(r);if(!a)return[];var o=e.length(t);if(i||o>=n&&o<=a){for(var s=t?t.slice():[],c=o;c<a;c++)s[c]=xe;var u=Pd(i);for(c=o;c<a;c++){var l=ps(r[c]);i&&l&&(El(l,De)||El(l,Ge))&&(l=he),s[c]=l?gl(l,el(r,s)):u}return s.length=r.length,s}return t&&t.slice()}function Ls(t){var r,n=dn(t);if(!n.resolvedSignature){for(var i=[],a=0,o=0,s=void 0,c=!1,u=e.getImmediatelyInvokedFunctionExpression(t),l=e.isJSDocConstructSignature(t),_=!u&&e.isInJSFile(t)&&e.isValueSignatureDeclaration(t)&&!e.hasJSDocParameterTags(t)&&!e.getJSDocType(t),d=l?1:0;d<t.parameters.length;d++){var p=t.parameters[d],f=p.symbol,m=e.isJSDocParameterTag(p)?p.typeExpression&&p.typeExpression.type:p.type;if(f&&4&f.flags&&!e.isBindingPattern(p.name))f=gn(p,f.escapedName,111551,void 0,void 0,!1);0===d&&"this"===f.escapedName?(c=!0,s=p.symbol):i.push(f),m&&186===m.kind&&(a|=2),ws(p)||p.initializer||p.questionToken||p.dotDotDotToken||u&&i.length>u.arguments.length&&!m||_||As(p)||(o=i.length)}if(!(162!==t.kind&&163!==t.kind||go(t)||c&&s)){var g=162===t.kind?163:162,y=e.getDeclarationOfKind(ri(t),g);y&&(s=(r=lx(y))&&r.symbol)}var h=161===t.kind?Ha(ti(t.parent.symbol)):void 0,v=h?h.localTypeParameters:ks(t);(e.hasRestParameter(t)||e.isInJSFile(t)&&function(t,r){if(e.isJSDocSignature(t)||!Bs(t))return!1;var n=e.lastOrUndefined(t.parameters),i=n?e.getJSDocParameterTags(n):e.getJSDocTags(t).filter(e.isJSDocParameterTag),a=e.firstDefined(i,(function(t){return t.typeExpression&&e.isJSDocVariadicType(t.typeExpression.type)?t.typeExpression.type:void 0})),o=en(3,"args",32768);o.type=a?jc(Yu(a.type)):vt,a&&r.pop();return r.push(o),!0}(t,i))&&(a|=1),n.resolvedSignature=To(t,v,s,i,void 0,void 0,o,a)}return n.resolvedSignature}function Rs(t){var r=e.isInJSFile(t)?e.getJSDocTypeTag(t):void 0,n=r&&r.typeExpression&&qm(Yu(r.typeExpression));return n&&Ys(n)}function Bs(t){var r=dn(t);return void 0===r.containsArgumentsReference&&(8192&r.flags?r.containsArgumentsReference=!0:r.containsArgumentsReference=function t(r){if(!r)return!1;switch(r.kind){case 75:return"arguments"===r.escapedText&&e.isExpressionNode(r);case 158:case 160:case 162:case 163:return 153===r.name.kind&&t(r.name);default:return!e.nodeStartsNewLexicalEnvironment(r)&&!e.isPartOfTypeNode(r)&&!!e.forEachChild(r,t)}}(t.body)),r.containsArgumentsReference}function js(t){if(!t)return e.emptyArray;for(var r=[],n=0;n<t.declarations.length;n++){var i=t.declarations[n];if(e.isFunctionLike(i)){if(n>0&&i.body){var a=t.declarations[n-1];if(i.parent===a.parent&&i.kind===a.kind&&i.pos===a.end)continue}r.push(Ls(i))}}return r}function Ks(e){if(e.thisParameter)return wa(e.thisParameter)}function Js(t){if(!t.resolvedTypePredicate){if(t.target){var r=Js(t.target);t.resolvedTypePredicate=r?(o=r,s=t.mapper,Is(o.kind,o.parameterName,o.parameterIndex,gl(o.type,s))):Qt}else if(t.unionSignatures)t.resolvedTypePredicate=function(e){for(var t,r=[],n=0,i=e;n<i.length;n++){var a=Js(i[n]);if(a&&2!==a.kind&&3!==a.kind){if(t){if(!$c(t,a))return}else t=a;r.push(a.type)}}if(!t)return;var o=Qc(r);return Is(t.kind,t.parameterName,t.parameterIndex,o)}(t.unionSignatures)||Qt;else{var n=t.declaration&&e.getEffectiveReturnTypeNode(t.declaration),i=void 0;if(!n&&e.isInJSFile(t.declaration)){var a=Rs(t.declaration);a&&t!==a&&(i=Js(a))}t.resolvedTypePredicate=n&&e.isTypePredicateNode(n)?function(t,r){var n=t.parameterName,i=t.type&&Yu(t.type);return 182===n.kind?Is(t.assertsModifier?2:0,void 0,void 0,i):Is(t.assertsModifier?3:1,n.escapedText,e.findIndex(r.parameters,(function(e){return e.escapedName===n.escapedText})),i)}(n,t):i||Qt}e.Debug.assert(!!t.resolvedTypePredicate)}var o,s;return t.resolvedTypePredicate===Qt?void 0:t.resolvedTypePredicate}function zs(t){if(!t.resolvedReturnType){if(!qi(t,3))return xe;var r=t.target?gl(zs(t.target),t.mapper):t.unionSignatures?Qc(e.map(t.unionSignatures,zs),2):Us(t.declaration)||(e.nodeIsMissing(t.declaration.body)?he:Xg(t.declaration));if(R(t)&&(r=V_(r)),!Hi()){if(t.declaration){var n=e.getEffectiveReturnTypeNode(t.declaration);if(n)Xr(n,e.Diagnostics.Return_type_annotation_circularly_references_itself);else if(H){var i=t.declaration,a=e.getNameOfDeclaration(i);a?Xr(a,e.Diagnostics._0_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions,e.declarationNameToString(a)):Xr(i,e.Diagnostics.Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions)}}r=he}t.resolvedReturnType=r}return t.resolvedReturnType}function Us(t){if(161===t.kind)return Ha(ti(t.parent.symbol));if(e.isJSDocConstructSignature(t))return Yu(t.parameters[0].type);var r=e.getEffectiveReturnTypeNode(t);if(r)return Yu(r);if(162===t.kind&&!go(t)){var n=e.isInJSFile(t)&&aa(t);if(n)return n;var i=Ta(e.getDeclarationOfKind(ri(t),163));if(i)return i}return function(e){var t=Rs(e);return t&&zs(t)}(t)}function Vs(e){return!e.resolvedReturnType&&Wi(e,3)>=0}function qs(e){if(M(e)){var t=wa(e.parameters[e.parameters.length-1]),r=w_(t)?I_(t):t;return r&&Es(r,1)}}function Ws(e,t,r,n){var i=Gs(e,Ms(t,e.typeParameters,Os(e.typeParameters),r));if(n){var a=Wm(zs(i));if(a){var o=Eo(a);o.typeParameters=n;var s=Eo(i);return s.resolvedReturnType=$s(o),s}}return i}function Gs(t,r){var n=t.instantiations||(t.instantiations=e.createMap()),i=oc(r),a=n.get(i);return a||n.set(i,a=Hs(t,r)),a}function Hs(e,t){return sl(e,function(e,t){return el(e.typeParameters,t)}(e,t),!0)}function Ys(e){return e.typeParameters?e.erasedSignatureCache||(e.erasedSignatureCache=function(e){return sl(e,tl(e.typeParameters),!0)}(e)):e}function Xs(t){return t.typeParameters?t.canonicalSignatureCache||(t.canonicalSignatureCache=function(t){return Ws(t,e.map(t.typeParameters,(function(e){return e.target&&!ns(e.target)?e.target:e})),e.isInJSFile(t.declaration))}(t)):t}function Qs(t){var r=t.typeParameters;if(r){var n=tl(r);return sl(t,el(r,e.map(r,(function(e){return gl(cs(e),n)||De}))),!0)}return t}function $s(t){if(!t.isolatedSignatureType){var r=t.declaration?t.declaration.kind:0,n=161===r||165===r||170===r,i=pi(16);i.members=B,i.properties=e.emptyArray,i.callSignatures=n?e.emptyArray:[t],i.constructSignatures=n?[t]:e.emptyArray,t.isolatedSignatureType=i}return t.isolatedSignatureType}function Zs(e){return e.members.get("__index")}function ec(t,r){var n=1===r?139:142,i=Zs(t);if(i)for(var a=0,o=i.declarations;a<o.length;a++){var s=o[a],c=e.cast(s,e.isIndexSignatureDeclaration);if(1===c.parameters.length){var u=c.parameters[0];if(u.type&&u.type.kind===n)return c}}}function tc(e,t,r){return{type:e,isReadonly:t,declaration:r}}function rc(t,r){var n=ec(t,r);if(n)return tc(n.type?Yu(n.type):he,e.hasModifier(n,64),n)}function nc(t){return e.mapDefined(e.filter(t.symbol&&t.symbol.declarations,e.isTypeParameterDeclaration),e.getEffectiveConstraintOfTypeParameter)[0]}function ic(t){if(!t.constraint)if(t.target){var r=ns(t.target);t.constraint=r?gl(r,t.mapper):Ze}else{var n=nc(t);t.constraint=n?Yu(n):function(t){var r;if(t.symbol)for(var n=0,i=t.symbol.declarations;n<i.length;n++){var a=i[n];if(180===a.parent.kind){var o=a.parent.parent;if(168===o.kind){var s=o,c=th(s);if(c){var u=s.typeArguments.indexOf(a.parent);if(u<c.length){var l=ns(c[u]);if(l){var _=gl(l,el(c,Zy(s,c)));_!==t&&(r=e.append(r,_))}}}}else 155===o.kind&&o.dotDotDotToken&&(r=e.append(r,jc(De)))}}return r&&iu(r)}(t)||Ze}return t.constraint===Ze?void 0:t.constraint}function ac(t){var r=e.getDeclarationOfKind(t.symbol,154),n=e.isJSDocTemplateTag(r.parent)?e.getHostSignatureFromJSDoc(r.parent):r.parent;return n&&ri(n)}function oc(e){var t="";if(e)for(var r=e.length,n=0;n<r;){for(var i=e[n].id,a=1;n+a<r&&e[n+a].id===i+a;)a++;t.length&&(t+=","),t+=i,a>1&&(t+=":"+a),n+=a}return t}function sc(t,r){for(var n=0,i=0,a=t;i<a.length;i++){var o=a[i];o.flags&r||(n|=e.getObjectFlags(o))}return 1835008&n}function cc(e,t){var r=oc(t),n=e.instantiations.get(r);return n||(n=pi(4,e.symbol),e.instantiations.set(r,n),n.objectFlags|=t?sc(t,0):0,n.target=e,n.resolvedTypeArguments=t),n}function uc(e){var t=li(e.flags);return t.symbol=e.symbol,t.objectFlags=e.objectFlags,t.target=e.target,t.resolvedTypeArguments=e.resolvedTypeArguments,t}function lc(e,t,r){var n=Mu(t),i=Lu(n),a=pi(4,e.symbol);return a.target=e,a.node=t,a.mapper=r,a.aliasSymbol=n,a.aliasTypeArguments=r?Qu(i,r):i,a}function _c(t){var r,n;if(!t.resolvedTypeArguments){if(!qi(t,7))return(null===(r=t.target.localTypeParameters)||void 0===r?void 0:r.map((function(){return xe})))||e.emptyArray;var i=t.node,a=i?168===i.kind?e.concatenate(t.target.outerTypeParameters,Zy(i,t.target.localTypeParameters)):173===i.kind?[Yu(i.elementType)]:e.map(i.elementTypes,Yu):e.emptyArray;Hi()?t.resolvedTypeArguments=t.mapper?Qu(a,t.mapper):a:(t.resolvedTypeArguments=(null===(n=t.target.localTypeParameters)||void 0===n?void 0:n.map((function(){return xe})))||e.emptyArray,Xr(t.node||l,t.target.symbol?e.Diagnostics.Type_arguments_for_0_circularly_reference_themselves:e.Diagnostics.Tuple_type_arguments_circularly_reference_themselves,t.target.symbol&&Pi(t.target.symbol)))}return t.resolvedTypeArguments}function dc(t){return e.length(t.target.typeParameters)}function pc(t,r){var n=ro(ti(r)),i=n.localTypeParameters;if(i){var a=e.length(t.typeArguments),o=Os(i),s=e.isInJSFile(t);if(!(!H&&s)&&(a<o||a>i.length)){var c=s&&e.isExpressionWithTypeArguments(t)&&!e.isJSDocAugmentsTag(t.parent);if(Xr(t,o===i.length?c?e.Diagnostics.Expected_0_type_arguments_provide_these_with_an_extends_tag:e.Diagnostics.Generic_type_0_requires_1_type_argument_s:c?e.Diagnostics.Expected_0_1_type_arguments_provide_these_with_an_extends_tag:e.Diagnostics.Generic_type_0_requires_between_1_and_2_type_arguments,Ii(n,void 0,2),o,i.length),!s)return xe}return 168===t.kind&&Jc(t)?lc(n,t,void 0):cc(n,e.concatenate(n.outerTypeParameters,Ms(Ec(t),i,o,s)))}return Sc(t,r)?n:xe}function fc(t,r){var n=ro(t),i=_n(t),a=i.typeParameters,o=oc(r),s=i.instantiations.get(o);return s||i.instantiations.set(o,s=gl(n,el(a,Ms(r,a,Os(a),e.isInJSFile(t.valueDeclaration))))),s}function mc(t){switch(t.kind){case 168:return t.typeName;case 215:var r=t.expression;if(e.isEntityNameExpression(r))return r}}function gc(e,t,r){return e&&Kn(e,t,r)||ge}function yc(t,r){if(r===ge)return xe;if(96&(r=function(t){var r=t.valueDeclaration;if(r&&e.isInJSFile(r)&&!(524288&t.flags)){var n=e.isVariableDeclaration(r)?e.getDeclaredExpandoInitializer(r):e.getAssignedExpandoInitializer(r);return n&&ri(n)||void 0}}(r)||r).flags)return pc(t,r);if(524288&r.flags)return function(t,r){var n=ro(r),i=_n(r).typeParameters;if(i){var a=e.length(t.typeArguments),o=Os(i);return a<o||a>i.length?(Xr(t,o===i.length?e.Diagnostics.Generic_type_0_requires_1_type_argument_s:e.Diagnostics.Generic_type_0_requires_between_1_and_2_type_arguments,Pi(r),o,i.length),xe):fc(r,Ec(t))}return Sc(t,r)?n:xe}(t,r);var n=no(r);if(n)return Sc(t,r)?262144&n.flags?xc(n,t):Vu(n):xe;if(111551&r.flags&&Dc(t)){var i=function(t,r){var n=wa(r),i=n;if(r.valueDeclaration){var a=e.getRootDeclaration(r.valueDeclaration),o=!1;if(e.isVariableDeclaration(a)&&a.initializer){for(var s=a.initializer;e.isPropertyAccessExpression(s);)s=s.expression;o=e.isCallExpression(s)&&e.isRequireCall(s,!0)&&!!n.symbol}var c=r!==n.symbol&&ti(r)===n.symbol;(o||187===t.kind||c)&&(i=yc(t,n.symbol))}return _n(r).resolvedJSDocType=i}(t,r);return i||(gc(mc(t),788968),wa(r))}return xe}function hc(e,t){if(3&t.flags||t===e)return e;var r=qc(e)+">"+qc(t),n=pe.get(r);if(n)return n;var i=li(33554432);return i.typeVariable=e,i.substitute=t,pe.set(r,i),i}function vc(e){return 174===e.kind&&1===e.elementTypes.length}function bc(e,t,r){return vc(t)&&vc(r)?bc(e,t.elementTypes[0],r.elementTypes[0]):ku(Yu(t))===e?Yu(r):void 0}function xc(t,r){for(var n;r&&!e.isStatement(r)&&301!==r.kind;){var i=r.parent;if(179===i.kind&&r===i.trueType){var a=bc(t,i.checkType,i.extendsType);a&&(n=e.append(n,a))}r=i}return n?hc(t,iu(e.append(n,t))):t}function Dc(e){return!!(4194304&e.flags)&&(168===e.kind||187===e.kind)}function Sc(t,r){return!t.typeArguments||(Xr(t,e.Diagnostics.Type_0_is_not_generic,r?Pi(r):t.typeName?e.declarationNameToString(t.typeName):"(anonymous)"),!1)}function Tc(t){var r=dn(t);if(!r.resolvedType){var n=void 0,i=void 0;Dc(t)&&((i=function(t){if(e.isIdentifier(t.typeName)){var r=t.typeArguments;switch(t.typeName.escapedText){case"String":return Sc(t),Ne;case"Number":return Sc(t),Ae;case"Boolean":return Sc(t),Me;case"Void":return Sc(t),Re;case"Undefined":return Sc(t),Se;case"Null":return Sc(t),Ce;case"Function":case"function":return Sc(t),ut;case"Array":case"array":return r&&r.length||H?void 0:vt;case"Promise":case"promise":return r&&r.length||H?void 0:Gg(he);case"Object":if(r&&2===r.length){if(e.isJSDocIndexSignature(t)){var n=Yu(r[0]),i=tc(Yu(r[1]),!1);return hi(void 0,B,e.emptyArray,e.emptyArray,n===Ne?i:void 0,n===Ae?i:void 0)}return he}return Sc(t),H?void 0:he}}}(t))||((n=gc(mc(t),788968,!0))===ge?n=gc(mc(t),900095):gc(mc(t),788968),i=yc(t,n))),i||(i=yc(t,n=gc(mc(t),788968))),r.resolvedSymbol=n,r.resolvedType=i}return r.resolvedType}function Ec(t){return e.map(t.typeArguments,Yu)}function Cc(e){var t=dn(e);return t.resolvedType||(t.resolvedType=Vu(rd(zy(e.exprName)))),t.resolvedType}function kc(t,r){function n(e){for(var t=0,r=e.declarations;t<r.length;t++){var n=r[t];switch(n.kind){case 244:case 245:case 247:return n}}}if(!t)return r?Qe:Ge;var i=ro(t);return 524288&i.flags?e.length(i.typeParameters)!==r?(Xr(n(t),e.Diagnostics.Global_type_0_must_have_1_type_parameter_s,e.symbolName(t),r),r?Qe:Ge):i:(Xr(n(t),e.Diagnostics.Global_type_0_must_be_a_class_or_interface_type,e.symbolName(t)),r?Qe:Ge)}function Nc(t,r){return Ac(t,111551,r?e.Diagnostics.Cannot_find_global_value_0:void 0)}function Ac(e,t,r){return gn(void 0,e,t,r,e,!1)}function Fc(t,r,n){var i=function(t,r){return Ac(t,788968,r?e.Diagnostics.Cannot_find_global_type_0:void 0)}(t,n);return i||n?kc(i,r):void 0}function Pc(e){return St||(St=Nc("Symbol",e))}function wc(e){return Tt||(Tt=Fc("Symbol",0,e))||Ge}function Ic(e){return Ct||(Ct=Fc("Promise",1,e))||Qe}function Oc(e){return Nt||(Nt=Nc("Promise",e))}function Mc(e){return Ft||(Ft=Fc("Iterable",1,e))||Qe}function Lc(e,t){void 0===t&&(t=0);var r=Ac(e,788968,void 0);return r&&kc(r,t)}function Rc(e,t){return e!==Qe?cc(e,t):Ge}function Bc(e){return Rc(Et||(Et=Fc("TypedPropertyDescriptor",1,!0))||Qe,[e])}function jc(e,t){return Rc(t?pt:dt,[e])}function Kc(t){var r=function(t){return e.isTypeOperatorNode(t)&&137===t.operator}(t.parent);if(173===t.kind||1===t.elementTypes.length&&176===t.elementTypes[0].kind)return r?pt:dt;var n=e.lastOrUndefined(t.elementTypes),i=n&&176===n.kind?n:void 0,a=e.findLastIndex(t.elementTypes,(function(e){return 175!==e.kind&&e!==i}))+1;return zc(t.elementTypes.length,a,!!i,r,void 0)}function Jc(e){var t=e.parent;switch(t.kind){case 181:case 168:case 177:case 178:case 184:case 179:case 183:return Jc(t);case 246:return!0}return!1}function zc(t,r,n,i,a){var o=t+(n?"+":",")+r+(i?"R":"")+(a&&a.length?","+a.join(","):""),s=ce.get(o);return s||ce.set(o,s=function(t,r,n,i,a){var o,s=[],c=n?t-1:t;if(t){o=new Array(t);for(var u=0;u<t;u++){var l=o[u]=fi();if(u<c){var _=en(4|(u>=r?16777216:0),""+u,i?8:0);_.type=l,s.push(_)}}}var d=[];for(u=r;u<=c;u++)d.push(Wu(u));var p=en(4,"length");p.type=n?Ae:Qc(d),s.push(p);var f=pi(12);return f.typeParameters=o,f.outerTypeParameters=void 0,f.localTypeParameters=o,f.instantiations=e.createMap(),f.instantiations.set(oc(f.typeParameters),f),f.target=f,f.resolvedTypeArguments=f.typeParameters,f.thisType=fi(),f.thisType.isThisType=!0,f.thisType.constraint=f,f.declaredProperties=s,f.declaredCallSignatures=e.emptyArray,f.declaredConstructSignatures=e.emptyArray,f.declaredStringIndexInfo=void 0,f.declaredNumberIndexInfo=void 0,f.minLength=r,f.hasRestElement=n,f.readonly=i,f.associatedNames=a,f}(t,r,n,i,a)),s}function Uc(e,t,r,n,i){void 0===t&&(t=e.length),void 0===r&&(r=!1),void 0===n&&(n=!1);var a=e.length;if(1===a&&r)return jc(e[0],n);var o=zc(a,t,a>0&&r,n,i);return e.length?cc(o,e):o}function Vc(e,t){var r=e.target;return r.hasRestElement&&(t=Math.min(t,dc(e)-1)),Uc(_c(e).slice(t),Math.max(0,r.minLength-t),r.hasRestElement,r.readonly,r.associatedNames&&r.associatedNames.slice(t))}function qc(e){return e.id}function Wc(t,r){return e.binarySearch(t,r,qc,e.compareValues)>=0}function Gc(t,r){var n=e.binarySearch(t,r,qc,e.compareValues);return n<0&&(t.splice(~n,0,r),!0)}function Hc(t,r,n){var i=n.flags;if(1048576&i)return Yc(t,r,n.types);if(!(131072&i))if(r|=68943871&i,66846720&i&&(r|=262144),n===be&&(r|=4194304),!V&&98304&i)262144&e.getObjectFlags(n)||(r|=2097152);else{var a=t.length,o=a&&n.id>t[a-1].id?~a:e.binarySearch(t,n,qc,e.compareValues);o<0&&t.splice(~o,0,n)}return r}function Yc(e,t,r){for(var n=0,i=r;n<i.length;n++){t=Hc(e,t,i[n])}return t}function Xc(t,r){var n=t.length;if(0===n||function(e){var t=e[0];if(1024&t.flags){for(var r=ni(t.symbol),n=1;n<e.length;n++){var i=e[n];if(!(1024&i.flags)||r!==ni(i.symbol))return!1}return!0}return!1}(t))return!0;for(var i=n,a=0;i>0;)for(var o=t[--i],s=0,c=t;s<c.length;s++){var u=c[s];if(o!==u){if(1e5===a)if(a/(n-i)*n>(r?25e6:1e6))return Xr(l,e.Diagnostics.Expression_produces_a_union_type_that_is_too_complex_to_represent),!1;if(a++,Al(o,u)&&(!(1&e.getObjectFlags(Oa(o)))||!(1&e.getObjectFlags(Oa(u)))||Pl(o,u))){e.orderedRemoveItemAt(t,i);break}}}return!0}function Qc(t,r,n,i){if(void 0===r&&(r=1),0===t.length)return Be;if(1===t.length)return t[0];var a=[],o=Yc(a,0,t);if(0!==r){if(3&o)return 1&o?4194304&o?be:he:De;switch(r){case 1:11136&o&&function(t,r){for(var n=t.length;n>0;){var i=t[--n];(128&i.flags&&4&r||256&i.flags&&8&r||2048&i.flags&&64&r||8192&i.flags&&4096&r||qu(i)&&Wc(t,i.regularType))&&e.orderedRemoveItemAt(t,n)}}(a,o);break;case 2:if(!Xc(a,!(262144&o)))return xe}if(0===a.length)return 65536&o?2097152&o?Ce:ke:32768&o?2097152&o?Se:Te:Be}return Zc(a,66994211&o?0:131072,n,i)}function $c(e,t){return e.kind===t.kind&&e.parameterIndex===t.parameterIndex}function Zc(e,t,r,n){if(0===e.length)return Be;if(1===e.length)return e[0];var i=oc(e),a=ue.get(i);return a||(a=li(1048576),ue.set(i,a),a.objectFlags=t|sc(e,98304),a.types=e,a.aliasSymbol=r,a.aliasTypeArguments=n),a}function eu(e,t,r){var n=r.flags;return 2097152&n?tu(e,t,r.types):(Gl(r)?8388608&t||(t|=8388608,e.set(r.id.toString(),r)):(3&n?r===be&&(t|=4194304):!V&&98304&n||e.has(r.id.toString())||(109440&r.flags&&109440&t&&(t|=67108864),e.set(r.id.toString(),r)),t|=68943871&n),t)}function tu(e,t,r){for(var n=0,i=r;n<i.length;n++){t=eu(e,t,Vu(i[n]))}return t}function ru(e,t){for(var r=0,n=e;r<n.length;r++){var i=n[r];if(!Wc(i.types,t)){var a=128&t.flags?Ne:256&t.flags?Ae:2048&t.flags?Fe:8192&t.flags?Le:void 0;if(!a||!Wc(i.types,a))return!1}}return!0}function nu(t,r){if(e.every(t,(function(t){return!!(1048576&t.flags)&&e.some(t.types,(function(e){return!!(e.flags&r)}))}))){for(var n=0;n<t.length;n++)t[n]=_p(t[n],(function(e){return!(e.flags&r)}));return!0}return!1}function iu(t,r,n){var i=e.createMap(),a=tu(i,0,t),o=e.arrayFrom(i.values());if(131072&a||V&&98304&a&&76021760&a||67108864&a&&130044&a||132&a&&67238776&a||296&a&&67238612&a||2112&a&&67236796&a||12288&a&&67226620&a||49152&a&&67189756&a)return Be;if(1&a)return 4194304&a?be:he;if(!V&&98304&a)return 32768&a?Se:Ce;if((4&a&&128&a||8&a&&256&a||64&a&&2048&a||4096&a&&8192&a)&&function(t,r){for(var n=t.length;n>0;){var i=t[--n];(4&i.flags&&128&r||8&i.flags&&256&r||64&i.flags&&2048&r||4096&i.flags&&8192&r)&&e.orderedRemoveItemAt(t,n)}}(o,a),8388608&a&&524288&a&&e.orderedRemoveItemAt(o,e.findIndex(o,Gl)),0===o.length)return De;if(1===o.length)return o[0];var s=oc(o),c=le.get(s);if(!c){if(1048576&a)if(function(t){var r,n=e.findIndex(t,(function(t){return!!(131072&e.getObjectFlags(t))}));if(n<0)return!1;for(var i=n+1;i<t.length;){var a=t[i];131072&e.getObjectFlags(a)?((r||(r=[t[n]])).push(a),e.orderedRemoveItemAt(t,i)):i++}if(!r)return!1;for(var o=[],s=[],c=0,u=r;c<u.length;c++)for(var l=0,_=u[c].types;l<_.length;l++){Gc(o,a=_[l])&&ru(r,a)&&Gc(s,a)}return t[n]=Zc(s,131072),!0}(o))c=iu(o,r,n);else if(nu(o,32768))c=Qc([iu(o),Se],1,r,n);else if(nu(o,65536))c=Qc([iu(o),Ce],1,r,n);else{if(e.reduceLeft(o,(function(e,t){return e*(1048576&t.flags?t.types.length:1)}),1)>=1e5)return Xr(l,e.Diagnostics.Expression_produces_a_union_type_that_is_too_complex_to_represent),xe;var u=e.findIndex(o,(function(e){return 0!=(1048576&e.flags)})),_=o[u];c=Qc(e.map(_.types,(function(t){return iu(e.replaceElement(o,u,t))})),1,r,n)}else c=function(e,t,r){var n=li(2097152);return n.objectFlags=sc(e,98304),n.types=e,n.aliasSymbol=t,n.aliasTypeArguments=r,n}(o,r,n);le.set(s,c)}return c}function au(e,t){var r=li(4194304);return r.type=e,r.stringsOnly=t,r}function ou(t){return e.isIdentifier(t)?Wu(e.unescapeLeadingUnderscores(t.escapedText)):Vu(e.isComputedPropertyName(t)?Lf(t):zy(t))}function su(t,r){if(!(24&e.getDeclarationModifierFlagsFromSymbol(t))){var n=xo(t).nameType;if(!n&&!e.isKnownSymbol(t))if("default"===t.escapedName)n=Wu("default");else{var i=t.valueDeclaration&&e.getNameOfDeclaration(t.valueDeclaration);n=i&&ou(i)||Wu(e.symbolName(t))}if(n&&n.flags&r)return n}return Be}function cu(t,r){return Qc(e.map(ts(t),(function(e){return su(e,r)})))}function uu(e){var t=Ts(e,1);return t!==rr?t:void 0}function lu(t,r,n){return void 0===r&&(r=X),1048576&t.flags?iu(e.map(t.types,(function(e){return lu(e,r,n)}))):2097152&t.flags?Qc(e.map(t.types,(function(e){return lu(e,r,n)}))):fy(t,58982400)?function(e,t){return t?e.resolvedStringIndexType||(e.resolvedStringIndexType=au(e,!0)):e.resolvedIndexType||(e.resolvedIndexType=au(e,!1))}(t,r):32&e.getObjectFlags(t)?_p(zo(t),(function(e){return!(n&&5&e.flags)})):t===be?be:2&t.flags?Be:131073&t.flags?qe:r?!n&&Ts(t,0)?Ne:cu(t,128):!n&&Ts(t,0)?Qc([Ne,Ae,cu(t,8192)]):uu(t)?Qc([Ae,cu(t,8320)]):cu(t,8576)}function _u(t){if(X)return t;var r=zt||(zt=Ac("Extract",524288,e.Diagnostics.Cannot_find_global_type_0));return r?fc(r,[t,Ne]):Ne}function du(t){return!H&&(!!(16384&e.getObjectFlags(t))||(1048576&t.flags?e.every(t.types,du):2097152&t.flags?e.some(t.types,du):!!(63176704&t.flags)&&du(_s(t))))}function pu(t,r){var n=r&&194===r.kind?r:void 0;return _o(t)?yo(t):n&&Lm(n.argumentExpression,t,!1)?e.getPropertyNameForKnownSymbolName(e.idText(n.argumentExpression.name)):r&&e.isPropertyName(r)?e.getPropertyNameForPropertyNameNode(r):void 0}function fu(t,r,n,i,a,o,s){var c=o&&194===o.kind?o:void 0,u=pu(n,o);if(void 0!==u){var l=vs(r,u);if(l){if(c){if(Fm(l,c,103===c.expression.kind),e.isAssignmentTarget(c)&&(ly(c,l)||_y(c)))return void Xr(c.argumentExpression,e.Diagnostics.Cannot_assign_to_0_because_it_is_a_read_only_property,Pi(l));4&s&&(dn(o).resolvedSymbol=l)}var _=wa(l);return c&&1!==e.getAssignmentTargetKind(c)?Op(c,_):_}if(lp(r,w_)&&Mf(u)&&+u>=0){if(o&&lp(r,(function(e){return!e.target.hasRestElement}))&&!(8&s)){var d=mu(o);w_(r)?Xr(d,e.Diagnostics.Tuple_type_0_of_length_1_has_no_element_at_index_2,Ii(r),dc(r),e.unescapeLeadingUnderscores(u)):Xr(d,e.Diagnostics.Property_0_does_not_exist_on_type_1,e.unescapeLeadingUnderscores(u),Ii(r))}return v(Ts(r,1)),pp(r,(function(e){return I_(e)||Se}))}}if(!(98304&n.flags)&&my(n,12716)){if(131073&r.flags)return r;var p=Ts(r,0),f=my(n,296)&&Ts(r,1)||p;if(f)return 1&s&&f===p?void(c&&Xr(c,e.Diagnostics.Type_0_cannot_be_used_to_index_type_1,Ii(n),Ii(t))):o&&!my(n,12)?(Xr(d=mu(o),e.Diagnostics.Type_0_cannot_be_used_as_an_index_type,Ii(n)),f.type):(v(f),f.type);if(131072&n.flags)return Be;if(du(r))return he;if(c&&!yy(r)){if(r.symbol===re&&void 0!==u&&re.exports.has(u)&&418&re.exports.get(u).flags)Xr(c,e.Diagnostics.Property_0_does_not_exist_on_type_1,e.unescapeLeadingUnderscores(u),Ii(r));else if(H&&!K.suppressImplicitAnyIndexErrors&&!a)if(void 0!==u&&Tm(u,r))Xr(c,e.Diagnostics.Property_0_is_a_static_member_of_type_1,u,Ii(r));else if(Es(r,1))Xr(c.argumentExpression,e.Diagnostics.Element_implicitly_has_an_any_type_because_index_expression_is_not_of_type_number);else{var m=void 0;if(void 0!==u&&(m=Cm(u,r)))void 0!==m&&Xr(c.argumentExpression,e.Diagnostics.Property_0_does_not_exist_on_type_1_Did_you_mean_2,u,Ii(r),m);else{var g=function(t,r){var n=e.isAssignmentTarget(r)?"set":"get";if(!function(e,r){void 0===r&&(r=1);var n=Zo(t,e);if(n){var i=qm(wa(n));if(i&&jg(i)===r&&"string"===Ii(Mg(i,0)))return!0}return!1}(n))return;var i=e.tryGetPropertyAccessOrIdentifierToString(r);void 0===i?i=n:i+="."+n;return i}(r,c);if(void 0!==g)Xr(c,e.Diagnostics.Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature_Did_you_mean_to_call_1,Ii(r),g);else{var y=void 0;if(1024&n.flags)y=e.chainDiagnosticMessages(void 0,e.Diagnostics.Property_0_does_not_exist_on_type_1,"["+Ii(n)+"]",Ii(r));else if(8192&n.flags){var h=jn(n.symbol,c);y=e.chainDiagnosticMessages(void 0,e.Diagnostics.Property_0_does_not_exist_on_type_1,"["+h+"]",Ii(r))}else 128&n.flags?y=e.chainDiagnosticMessages(void 0,e.Diagnostics.Property_0_does_not_exist_on_type_1,n.value,Ii(r)):256&n.flags?y=e.chainDiagnosticMessages(void 0,e.Diagnostics.Property_0_does_not_exist_on_type_1,n.value,Ii(r)):12&n.flags&&(y=e.chainDiagnosticMessages(void 0,e.Diagnostics.No_index_signature_with_a_parameter_of_type_0_was_found_on_type_1,Ii(n),Ii(r)));y=e.chainDiagnosticMessages(y,e.Diagnostics.Element_implicitly_has_an_any_type_because_expression_of_type_0_can_t_be_used_to_index_type_1,Ii(i),Ii(r)),jr.add(e.createDiagnosticForNodeFromMessageChain(c,y))}}}return}}if(du(r))return he;if(o){d=mu(o);384&n.flags?Xr(d,e.Diagnostics.Property_0_does_not_exist_on_type_1,""+n.value,Ii(r)):12&n.flags?Xr(d,e.Diagnostics.Type_0_has_no_matching_index_signature_for_type_1,Ii(r),Ii(n)):Xr(d,e.Diagnostics.Type_0_cannot_be_used_as_an_index_type,Ii(n))}return Qi(n)?n:void 0;function v(t){t&&t.isReadonly&&c&&(e.isAssignmentTarget(c)||e.isDeleteTarget(c))&&Xr(c,e.Diagnostics.Index_signature_in_type_0_only_permits_reading,Ii(r))}}function mu(e){return 194===e.kind?e.argumentExpression:184===e.kind?e.indexType:153===e.kind?e.expression:e}function gu(e){return fy(e,59113472)}function yu(e){return fy(e,63176704)}function hu(e){return!!(262144&e.flags&&e.isThisType)}function vu(t,r){return 8388608&t.flags?function(t,r){var n=r?"simplifiedForWriting":"simplifiedForReading";if(t[n])return t[n]===et?t:t[n];t[n]=et;var i=vu(t.objectType,r),a=vu(t.indexType,r),o=function(t,r,n){if(1048576&r.flags){var i=e.map(r.types,(function(e){return vu(Su(t,e),n)}));return n?iu(i):Qc(i)}}(i,a,r);if(o)return t[n]=o;if(!(63176704&a.flags)){var s=bu(i,a,r);if(s)return t[n]=s}if(Xo(i))return t[n]=pp(Du(i,t.indexType),(function(e){return vu(e,r)}));return t[n]=t}(t,r):16777216&t.flags?function(e,t){var r=e.checkType,n=e.extendsType,i=Au(e),a=Fu(e);if(131072&a.flags&&ku(i)===ku(r)){if(1&r.flags||Fl(hl(r),hl(n)))return vu(i,t);if(xu(r,n))return Be}else if(131072&i.flags&&ku(a)===ku(r)){if(!(1&r.flags)&&Fl(hl(r),hl(n)))return Be;if(1&r.flags||xu(r,n))return vu(a,t)}return e}(t,r):t}function bu(t,r,n){if(3145728&t.flags){var i=e.map(t.types,(function(e){return vu(Su(e,r),n)}));return 2097152&t.flags||n?iu(i):Qc(i)}}function xu(e,t){return!!(131072&Qc([Io(e,t),Be]).flags)}function Du(e,t){var r=el([Jo(e)],[t]),n=rl(e.mapper,r);return gl(Uo(e),n)}function Su(e,t,r){return Tu(e,t,r,0)||(r?xe:De)}function Tu(e,t,r,n){if(void 0===n&&(n=0),e===be||t===be)return be;if(!Hl(e)||98304&t.flags||!my(t,12)||(t=Ne),yu(t)||(!r||184===r.kind)&&gu(e)){if(3&e.flags)return e;var i=e.id+","+t.id,a=de.get(i);return a||de.set(i,a=function(e,t){var r=li(8388608);return r.objectType=e,r.indexType=t,r}(e,t)),a}var o=ms(e);if(1048576&t.flags&&!(16&t.flags)){for(var s=[],c=!1,u=0,l=t.types;u<l.length;u++){var _=fu(e,o,l[u],t,c,r,n);if(_)s.push(_);else{if(!r)return;c=!0}}if(c)return;return 2&n?iu(s):Qc(s)}return fu(e,o,t,t,!1,r,4|n)}function Eu(e){var t=dn(e);if(!t.resolvedType){var r=Yu(e.objectType),n=Yu(e.indexType),i=Su(r,n,e);t.resolvedType=8388608&i.flags&&i.objectType===r&&i.indexType===n?xc(i,e):i}return t.resolvedType}function Cu(e){var t=dn(e);if(!t.resolvedType){var r=pi(32,e.symbol);r.declaration=e,r.aliasSymbol=Mu(e),r.aliasTypeArguments=Lu(r.aliasSymbol),t.resolvedType=r,zo(r)}return t.resolvedType}function ku(e){return 33554432&e.flags?e.typeVariable:8388608&e.flags&&(33554432&e.objectType.flags||33554432&e.indexType.flags)?Su(ku(e.objectType),ku(e.indexType)):e}function Nu(e,t){var r=gl(e.checkType,t),n=gl(e.extendsType,t);if(r===be||n===be)return be;var i,a=fy(r,63307776);if(e.inferTypeParameters){var o=cd(e.inferTypeParameters,void 0,0);a||Sd(o.inferences,r,n,192),i=rl(t,o.mapper)}var s=i?gl(e.extendsType,i):n;if(!a&&!fy(s,63307776)){if(3&s.flags)return gl(e.trueType,i||t);if(1&r.flags)return Qc([gl(e.trueType,i||t),gl(e.falseType,t)]);if(!Fl(yl(r),yl(s)))return gl(e.falseType,t);if(Fl(hl(r),hl(s)))return gl(e.trueType,i||t)}var c=ku(r),u=li(16777216);return u.root=e,u.checkType=c,u.extendsType=n,u.mapper=t,u.combinedMapper=i,u.aliasSymbol=e.aliasSymbol,u.aliasTypeArguments=Qu(e.aliasTypeArguments,t),u}function Au(e){return e.resolvedTrueType||(e.resolvedTrueType=gl(e.root.trueType,e.mapper))}function Fu(e){return e.resolvedFalseType||(e.resolvedFalseType=gl(e.root.falseType,e.mapper))}function Pu(t){var r;return t.locals&&t.locals.forEach((function(t){262144&t.flags&&(r=e.append(r,ro(t)))})),r}function wu(t){var r=dn(t);if(!r.resolvedType){if(t.isTypeOf&&t.typeArguments)return Xr(t,e.Diagnostics.Type_arguments_cannot_be_used_here),r.resolvedSymbol=ge,r.resolvedType=xe;if(!e.isLiteralImportTypeNode(t))return Xr(t.argument,e.Diagnostics.String_literal_expected),r.resolvedSymbol=ge,r.resolvedType=xe;var n=t.isTypeOf?111551:4194304&t.flags?900095:788968,i=zn(t,t.argument.literal);if(!i)return r.resolvedSymbol=ge,r.resolvedType=xe;var a=Wn(i,!1);if(e.nodeIsMissing(t.qualifier)){if(a.flags&n)r.resolvedType=Iu(t,r,a,n);else Xr(t,111551===n?e.Diagnostics.Module_0_does_not_refer_to_a_value_but_is_used_as_a_value_here:e.Diagnostics.Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0,t.argument.literal.text),r.resolvedSymbol=ge,r.resolvedType=xe}else{for(var o=function t(r){return e.isIdentifier(r)?[r]:e.append(t(r.left),r.right)}(t.qualifier),s=a,c=void 0;c=o.shift();){var u=o.length?1920:n,l=fn(Qn(ti(On(s))),c.escapedText,u);if(!l)return Xr(c,e.Diagnostics.Namespace_0_has_no_exported_member_1,jn(s),e.declarationNameToString(c)),r.resolvedType=xe;dn(c).resolvedSymbol=l,dn(c.parent).resolvedSymbol=l,s=l}r.resolvedType=Iu(t,r,s,n)}}return r.resolvedType}function Iu(e,t,r,n){var i=On(r);return t.resolvedSymbol=i,111551===n?wa(r):yc(e,i)}function Ou(t){var r=dn(t);if(!r.resolvedType){var n=Mu(t);if(0!==bo(t.symbol).size||n){var i=pi(16,t.symbol);i.aliasSymbol=n,i.aliasTypeArguments=Lu(n),e.isJSDocTypeLiteral(t)&&t.isArrayType&&(i=jc(i)),r.resolvedType=i}else r.resolvedType=Xe}return r.resolvedType}function Mu(t){for(var r=t.parent;e.isParenthesizedTypeNode(r)||e.isTypeOperatorNode(r)&&137===r.operator;)r=r.parent;return e.isTypeAlias(r)?ri(r):void 0}function Lu(e){return e?ja(e):void 0}function Ru(e){return!!(524288&e.flags)&&!Xo(e)}function Bu(t,r,n,i,a){if(1&t.flags||1&r.flags)return he;if(2&t.flags||2&r.flags)return De;if(131072&t.flags)return r;if(131072&r.flags)return t;if(1048576&t.flags)return pp(t,(function(e){return Bu(e,r,n,i,a)}));if(1048576&r.flags)return pp(r,(function(e){return Bu(t,e,n,i,a)}));if(71307260&r.flags)return t;if(gu(t)||gu(r)){if(Wl(t))return r;if(2097152&t.flags){var o=t.types,s=o[o.length-1];if(Ru(s)&&Ru(r))return iu(e.concatenate(o.slice(0,o.length-1),[Bu(s,r,n,i,a)]))}return iu([t,r])}var c,u,l=e.createSymbolTable(),_=e.createUnderscoreEscapedMap();t===Ge?(c=Ts(r,0),u=Ts(r,1)):(c=Mo(Ts(t,0),Ts(r,0)),u=Mo(Ts(t,1),Ts(r,1)));for(var d=0,p=ts(r);d<p.length;d++){var f=p[d];24&e.getDeclarationModifierFlagsFromSymbol(f)?_.set(f.escapedName,!0):ju(f)&&l.set(f.escapedName,Ku(f,a))}for(var m=0,g=ts(t);m<g.length;m++){var y=g[m];if(!_.has(y.escapedName)&&ju(y))if(l.has(y.escapedName)){var h=wa(f=l.get(y.escapedName));if(16777216&f.flags){var v=e.concatenate(y.declarations,f.declarations),b=en(4|16777216&y.flags,y.escapedName);b.type=Qc([wa(y),Hd(h,524288)]),b.leftSpread=y,b.rightSpread=f,b.declarations=v,b.nameType=y.nameType,l.set(y.escapedName,b)}}else l.set(y.escapedName,Ku(y,a))}var x=hi(n,l,e.emptyArray,e.emptyArray,Ju(c,a),Ju(u,a));return x.objectFlags|=525440|i,x}function ju(t){return!(106496&t.flags&&t.declarations.some((function(t){return e.isClassLike(t.parent)})))}function Ku(e,t){var r=65536&e.flags&&!(32768&e.flags);if(!r&&t===uy(e))return e;var n=en(4|16777216&e.flags,e.escapedName,t?8:0);return n.type=r?Se:wa(e),n.declarations=e.declarations,n.nameType=e.nameType,n.syntheticOrigin=e,n}function Ju(e,t){return e&&e.isReadonly!==t?tc(e.type,t,e.declaration):e}function zu(e,t,r){var n=li(e);return n.symbol=r,n.value=t,n}function Uu(e){if(2944&e.flags){if(!e.freshType){var t=zu(e.flags,e.value,e.symbol);t.regularType=e,t.freshType=t,e.freshType=t}return e.freshType}return e}function Vu(t){return 2944&t.flags?t.regularType:1048576&t.flags?Qc(e.sameMap(t.types,Vu)):t}function qu(e){return!!(2944&e.flags)&&e.freshType===e}function Wu(t,r,n){var i=(r||"")+("number"==typeof t?"#":"string"==typeof t?"@":"n")+("object"===f(t)?e.pseudoBigIntToString(t):t),a=_e.get(i);if(!a){var o=("number"==typeof t?256:"string"==typeof t?128:2048)|(r?1024:0);_e.set(i,a=zu(o,t,n)),a.regularType=a}return a}function Gu(t){if(e.isValidESSymbolDeclaration(t)){var r=ri(t),n=_n(r);return n.uniqueESSymbolType||(n.uniqueESSymbolType=function(e){var t=li(8192);return t.symbol=e,t.escapedName="__@"+t.symbol.escapedName+"@"+A(t.symbol),t}(r))}return Le}function Hu(t){var r=dn(t);return r.resolvedType||(r.resolvedType=function(t){var r=e.getThisContainer(t,!1),n=r&&r.parent;if(n&&(e.isClassLike(n)||245===n.kind)&&!e.hasModifier(r,32)&&(!e.isConstructorDeclaration(r)||e.isNodeDescendantOf(t,r.body)))return Ha(ri(n)).thisType;if(n&&e.isObjectLiteralExpression(n)&&e.isBinaryExpression(n.parent)&&6===e.getAssignmentDeclarationKind(n.parent))return Ha(ri(n.parent.left).parent).thisType;var i=4194304&t.flags?e.getHostSignatureFromJSDoc(t):void 0;return i&&e.isFunctionExpression(i)&&e.isBinaryExpression(i.parent)&&3===e.getAssignmentDeclarationKind(i.parent)?Ha(ri(i.parent.left).parent).thisType:Sg(r)&&e.isNodeDescendantOf(t,r.body)?Ha(ri(r)).thisType:(Xr(t,e.Diagnostics.A_this_type_is_available_only_in_a_non_static_member_of_a_class_or_interface),xe)}(t)),r.resolvedType}function Yu(t){switch(t.kind){case 124:case 293:case 294:return he;case 147:return De;case 142:return Ne;case 139:return Ae;case 150:return Fe;case 127:return Me;case 143:return Le;case 109:return Re;case 145:return Se;case 99:return Ce;case 136:return Be;case 140:return 131072&t.flags?he:Ue;case 182:case 103:return Hu(t);case 186:return function(e){var t=dn(e);return t.resolvedType||(t.resolvedType=Vu(zy(e.literal))),t.resolvedType}(t);case 168:return Tc(t);case 167:return t.assertsModifier?Re:Me;case 215:return Tc(t);case 171:return Cc(t);case 173:case 174:return function(t){var r=dn(t);if(!r.resolvedType){var n=Kc(t);if(n===Qe)r.resolvedType=Ge;else if(Jc(t))r.resolvedType=174===t.kind&&0===t.elementTypes.length?n:lc(n,t,void 0);else{var i=173===t.kind?[Yu(t.elementType)]:e.map(t.elementTypes,Yu);r.resolvedType=cc(n,i)}}return r.resolvedType}(t);case 175:return function(e){var t=Yu(e.type);return V?z_(t):t}(t);case 177:return function(t){var r=dn(t);if(!r.resolvedType){var n=Mu(t);r.resolvedType=Qc(e.map(t.types,Yu),1,n,Lu(n))}return r.resolvedType}(t);case 178:return function(t){var r=dn(t);if(!r.resolvedType){var n=Mu(t);r.resolvedType=iu(e.map(t.types,Yu),n,Lu(n))}return r.resolvedType}(t);case 295:return function(e){var t=Yu(e.type);return V?J_(t,65536):t}(t);case 297:return sa(Yu(t.type));case 181:case 296:case 292:return Yu(t.type);case 176:return v_(Yu(t.type))||xe;case 299:return function(t){var r=Yu(t.type),n=t.parent,i=t.parent.parent;if(e.isJSDocTypeExpression(t.parent)&&e.isJSDocParameterTag(i)){var a=e.getHostSignatureFromJSDoc(i);if(a){var o=e.lastOrUndefined(a.parameters),s=e.getParameterSymbolFromJSDoc(i);if(!o||s&&o.symbol===s&&e.isRestParameter(o))return jc(r)}}if(e.isParameter(n)&&e.isJSDocFunctionType(n.parent))return jc(r);return sa(r)}(t);case 169:case 170:case 172:case 302:case 298:case 303:return Ou(t);case 183:return function(t){var r=dn(t);if(!r.resolvedType)switch(t.operator){case 133:r.resolvedType=lu(Yu(t.type));break;case 146:r.resolvedType=143===t.type.kind?Gu(e.walkUpParenthesizedTypes(t.parent)):xe;break;case 137:r.resolvedType=Yu(t.type);break;default:throw e.Debug.assertNever(t.operator)}return r.resolvedType}(t);case 184:return Eu(t);case 185:return Cu(t);case 179:return function(t){var r=dn(t);if(!r.resolvedType){var n=Yu(t.checkType),i=Mu(t),a=Lu(i),o=Ra(t,!0),s=a?o:e.filter(o,(function(e){return ll(e,t)})),c={node:t,checkType:n,extendsType:Yu(t.extendsType),trueType:Yu(t.trueType),falseType:Yu(t.falseType),isDistributive:!!(262144&n.flags),inferTypeParameters:Pu(t),outerTypeParameters:s,instantiations:void 0,aliasSymbol:i,aliasTypeArguments:a};r.resolvedType=Nu(c,void 0),s&&(c.instantiations=e.createMap(),c.instantiations.set(oc(s),r.resolvedType))}return r.resolvedType}(t);case 180:return function(e){var t=dn(e);return t.resolvedType||(t.resolvedType=to(ri(e.typeParameter))),t.resolvedType}(t);case 187:return wu(t);case 75:case 152:var r=cb(t);return r?ro(r):xe;default:return xe}}function Xu(e,t,r){if(e&&e.length)for(var n=0;n<e.length;n++){var i=e[n],a=r(i,t);if(i!==a){var o=0===n?[]:e.slice(0,n);for(o.push(a),n++;n<e.length;n++)o.push(r(e[n],t));return o}}return e}function Qu(e,t){return Xu(e,t,gl)}function $u(e,t){return Xu(e,t,sl)}function Zu(e,t){return function(r){return r===e?t:r}}function el(t,r){return e.Debug.assert(void 0===r||t.length===r.length),1===t.length?Zu(t[0],r?r[0]:he):2===t.length?(n=t[0],i=r?r[0]:he,a=t[1],o=r?r[1]:he,function(e){return e===n?i:e===a?o:e}):function(e,t){return function(r){for(var n=0;n<e.length;n++)if(r===e[n])return t?t[n]:he;return r}}(t,r);var n,i,a,o}function tl(e){return el(e,void 0)}function rl(e,t){return e?t?function(r){return gl(e(r),t)}:e:t}function nl(e,t,r){return function(n){return n===e?t:r(n)}}function il(e){return 262144&e.flags?be:e}function al(e){return 262144&e.flags?(t=e).constraint===De?t:t.restrictiveInstantiation||(t.restrictiveInstantiation=fi(t.symbol),t.restrictiveInstantiation.constraint=De,t.restrictiveInstantiation):e;var t}function ol(e){var t=fi(e.symbol);return t.target=e,t}function sl(t,r,n){var i;if(t.typeParameters&&!n){i=e.map(t.typeParameters,ol),r=rl(el(t.typeParameters,i),r);for(var a=0,o=i;a<o.length;a++){o[a].mapper=r}}var s=To(t.declaration,i,t.thisParameter&&cl(t.thisParameter,r),Xu(t.parameters,r,cl),void 0,void 0,t.minArgumentCount,3&t.flags);return s.target=t,s.mapper=r,s}function cl(t,r){var n=_n(t);if(n.type&&!fy(n.type,63700992))return t;1&e.getCheckFlags(t)&&(t=n.target,r=rl(n.mapper,r));var i=en(t.flags,t.escapedName,1|53256&e.getCheckFlags(t));return i.declarations=t.declarations,i.parent=t.parent,i.target=t,i.mapper=r,t.valueDeclaration&&(i.valueDeclaration=t.valueDeclaration),t.nameType&&(i.nameType=t.nameType),i}function ul(t,r){var n=64&t.objectFlags?t.target:t,i=4&t.objectFlags?t.node:t.symbol.declarations[0],a=dn(i),o=a.outerTypeParameters;if(!o){var s=i;if(e.isInJSFile(s)){var c=e.findAncestor(s,e.isJSDocParameterTag);if(c){var u=e.getParameterSymbolFromJSDoc(c);u&&(s=u.valueDeclaration)}}var l=Ra(s,!0);if(Sg(s)){var _=ks(s);l=e.addRange(l,_)}o=l||e.emptyArray,o=(4&n.objectFlags||2048&n.symbol.flags)&&!n.aliasTypeArguments?e.filter(o,(function(e){return ll(e,s)})):o,a.outerTypeParameters=o,o.length&&(a.instantiations=e.createMap(),a.instantiations.set(oc(o),n))}if(o.length){var d=e.map(o,rl(t.mapper,r)),p=oc(d),f=a.instantiations.get(p);if(!f){var m=el(o,d);f=4&n.objectFlags?lc(t.target,t.node,m):32&n.objectFlags?function(t,r){var n=_l(t);if(n){var i=gl(n,r);if(n!==i)return pp(i,(function(i){if(61603843&i.flags&&i!==be&&i!==xe){var a=nl(n,i,r);return y_(i)?function(e,t,r){var n=pl(t,Ae,!0,r);return n===xe?xe:jc(n,dl(h_(e),Go(t)))}(i,t,a):w_(i)?function(t,r,n){var i=t.target.minLength,a=e.map(_c(t),(function(e,t){return pl(r,Wu(""+t),t>=i,n)})),o=Go(r),s=4&o?0:8&o?dc(t)-(t.target.hasRestElement?1:0):i,c=dl(t.target.readonly,o);return e.contains(a,xe)?xe:Uc(a,s,t.target.hasRestElement,c,t.target.associatedNames)}(i,t,a):fl(t,a)}return i}))}return fl(t,r)}(n,m):fl(n,m),a.instantiations.set(p,f)}return f}return t}function ll(t,r){if(t.symbol&&t.symbol.declarations&&1===t.symbol.declarations.length){for(var n=t.symbol.declarations[0].parent,i=r;i!==n;i=i.parent)if(!i||222===i.kind||179===i.kind&&e.forEachChild(i.extendsType,a))return!0;return!!e.forEachChild(r,a)}return!0;function a(r){switch(r.kind){case 182:return!!t.isThisType;case 75:return!t.isThisType&&e.isPartOfTypeNode(r)&&function(e){return!(152===e.kind||168===e.parent.kind&&e.parent.typeArguments&&e===e.parent.typeName||187===e.parent.kind&&e.parent.typeArguments&&e===e.parent.qualifier)}(r)&&Yu(r)===t;case 171:return!0}return!!e.forEachChild(r,a)}}function _l(e){var t=zo(e);if(4194304&t.flags){var r=ku(t.type);if(262144&r.flags)return r}}function dl(e,t){return!!(1&t)||!(2&t)&&e}function pl(e,t,r,n){var i=rl(n,el([Jo(e)],[t])),a=gl(Uo(e.target||e),i),o=Go(e);return V&&4&o&&!Fl(Se,a)?z_(a):V&&8&o&&r?Hd(a,524288):a}function fl(e,t){var r=pi(64|e.objectFlags,e.symbol);if(32&e.objectFlags){r.declaration=e.declaration;var n=Jo(e),i=ol(n);r.typeParameter=i,t=rl(Zu(n,i),t),i.mapper=t}return r.target=e,r.mapper=t,r.aliasSymbol=e.aliasSymbol,r.aliasTypeArguments=Qu(e.aliasTypeArguments,t),r}function ml(t,r){var n=t.root;if(n.outerTypeParameters){var i=e.map(n.outerTypeParameters,r),a=oc(i),o=n.instantiations.get(a);if(!o)o=function(e,t){if(e.isDistributive){var r=e.checkType,n=t(r);if(r!==n&&1179648&n.flags)return pp(n,(function(n){return Nu(e,nl(r,n,t))}))}return Nu(e,t)}(n,el(n.outerTypeParameters,i)),n.instantiations.set(a,o);return o}return t}function gl(t,r){if(!t||!r||r===j)return t;if(50===T||x>=5e6)return Xr(l,e.Diagnostics.Type_instantiation_is_excessively_deep_and_possibly_infinite),xe;x++,T++;var n=function(e,t){var r=e.flags;if(262144&r)return t(e);if(524288&r){var n=e.objectFlags;if(16&n)return md(e)?ul(e,t):e;if(32&n)return ul(e,t);if(4&n){if(e.node)return ul(e,t);var i=e.resolvedTypeArguments,a=Qu(i,t);return a!==i?cc(e.target,a):e}return e}if(1048576&r&&!(131068&r)){var o=e.types;return(s=Qu(o,t))!==o?Qc(s,1,e.aliasSymbol,Qu(e.aliasTypeArguments,t)):e}if(2097152&r){var s;o=e.types;return(s=Qu(o,t))!==o?iu(s,e.aliasSymbol,Qu(e.aliasTypeArguments,t)):e}if(4194304&r)return lu(gl(e.type,t));if(8388608&r)return Su(gl(e.objectType,t),gl(e.indexType,t));if(16777216&r)return ml(e,rl(e.mapper,t));if(33554432&r){var c=gl(e.typeVariable,t);if(8650752&c.flags)return hc(c,gl(e.substitute,t));var u=gl(e.substitute,t);return 3&u.flags||Fl(hl(c),hl(u))?c:u}return e}(t,r);return T--,n}function yl(e){return 262143&e.flags?e:e.permissiveInstantiation||(e.permissiveInstantiation=gl(e,il))}function hl(e){return 262143&e.flags?e:e.restrictiveInstantiation?e.restrictiveInstantiation:(e.restrictiveInstantiation=gl(e,al),e.restrictiveInstantiation.restrictiveInstantiation=e.restrictiveInstantiation,e.restrictiveInstantiation)}function vl(e,t){return e&&tc(gl(e.type,t),e.isReadonly,e.declaration)}function bl(t){switch(e.Debug.assert(160!==t.kind||e.isObjectLiteralMethod(t)),t.kind){case 200:case 201:case 160:case 243:return xl(t);case 192:return e.some(t.properties,bl);case 191:return e.some(t.elements,bl);case 209:return bl(t.whenTrue)||bl(t.whenFalse);case 208:return(56===t.operatorToken.kind||60===t.operatorToken.kind)&&(bl(t.left)||bl(t.right));case 279:return bl(t.initializer);case 199:return bl(t.expression);case 272:return e.some(t.properties,bl)||e.isJsxOpeningElement(t.parent)&&e.some(t.parent.parent.children,bl);case 271:var r=t.initializer;return!!r&&bl(r);case 274:var n=t.expression;return!!n&&bl(n)}return!1}function xl(t){if(e.isFunctionDeclaration(t)&&(!e.isInJSFile(t)||!aa(t)))return!1;if(t.typeParameters)return!1;if(e.some(t.parameters,(function(t){return!e.getEffectiveTypeAnnotationNode(t)})))return!0;if(201!==t.kind){var r=e.firstOrUndefined(t.parameters);if(!r||!e.parameterIsThisKeyword(r))return!0}return Dl(t)}function Dl(e){return!!e.body&&222!==e.body.kind&&bl(e.body)}function Sl(t){return(e.isInJSFile(t)&&e.isFunctionDeclaration(t)||Cf(t)||e.isObjectLiteralMethod(t))&&xl(t)}function Tl(t){if(524288&t.flags){var r=Qo(t);if(r.constructSignatures.length||r.callSignatures.length){var n=pi(16,t.symbol);return n.members=r.members,n.properties=r.properties,n.callSignatures=e.emptyArray,n.constructSignatures=e.emptyArray,n}}else if(2097152&t.flags)return iu(e.map(t.types,Tl));return t}function El(e,t){return Ql(e,t,Wr)}function Cl(e,t){return Ql(e,t,Wr)?-1:0}function kl(e,t){return Ql(e,t,Vr)?-1:0}function Nl(e,t){return Ql(e,t,Ur)?-1:0}function Al(e,t){return Ql(e,t,Ur)}function Fl(e,t){return Ql(e,t,Vr)}function Pl(t,r){return 1048576&t.flags?e.every(t.types,(function(e){return Pl(e,r)})):1048576&r.flags?e.some(r.types,(function(e){return Pl(t,e)})):58982400&t.flags?Pl(cs(t)||De,r):r===ct?!!(67633152&t.flags):r===ut?!!(524288&t.flags)&&Wd(t):Ma(t,Oa(r))}function wl(e,t){return Ql(e,t,qr)}function Il(e,t){return wl(e,t)||wl(t,e)}function Ol(e,t,r,n,i,a){return Zl(e,t,Vr,r,n,i,a)}function Ml(e,t,r,n,i,a){return Ll(e,t,Vr,r,n,i,a,void 0)}function Ll(e,t,r,n,i,a,o,s){return!!Ql(e,t,r)||(!n||!Bl(i,e,t,r,a,o,s))&&Zl(e,t,r,n,a,o,s)}function Rl(t){return!!(16777216&t.flags||2097152&t.flags&&e.some(t.types,Rl))}function Bl(t,n,a,o,s,c,u){if(!t||Rl(a))return!1;if(!Zl(n,a,o,void 0)&&function(t,r,n,i,a,o,s){for(var c=xs(r,0),u=xs(r,1),l=0,_=[u,c];l<_.length;l++){var d=_[l];if(e.some(d,(function(e){var t=zs(e);return!(131073&t.flags)&&Zl(t,n,i,void 0)}))){var p=s||{};Ol(r,n,t,a,o,p);var f=p.errors[p.errors.length-1];return e.addRelatedInfo(f,e.createDiagnosticForNode(t,d===u?e.Diagnostics.Did_you_mean_to_use_new_with_this_expression:e.Diagnostics.Did_you_mean_to_call_this_expression)),!0}}return!1}(t,n,a,o,s,c,u))return!0;switch(t.kind){case 274:case 199:return Bl(t.expression,n,a,o,s,c,u);case 208:switch(t.operatorToken.kind){case 62:case 27:return Bl(t.right,n,a,o,s,c,u)}break;case 192:return function(t,r,n,a,o,s){return!(131068&n.flags)&&jl(function(t){var r,n,a,o;return i(this,(function(i){switch(i.label){case 0:if(!e.length(t.properties))return[2];r=0,n=t.properties,i.label=1;case 1:if(!(r<n.length))return[3,8];if(a=n[r],e.isSpreadAssignment(a))return[3,7];if(!(o=su(ri(a),8576))||131072&o.flags)return[3,7];switch(a.kind){case 163:case 162:case 160:case 280:return[3,2];case 279:return[3,4]}return[3,6];case 2:return[4,{errorNode:a.name,innerExpression:void 0,nameType:o}];case 3:return i.sent(),[3,7];case 4:return[4,{errorNode:a.name,innerExpression:a.initializer,nameType:o,errorMessage:Zi(a.name)?e.Diagnostics.Type_of_computed_property_s_value_is_0_which_is_not_assignable_to_type_1:void 0}];case 5:return i.sent(),[3,7];case 6:e.Debug.assertNever(a),i.label=7;case 7:return r++,[3,1];case 8:return[2]}}))}(t),r,n,a,o,s)}(t,n,a,o,c,u);case 191:return function(e,t,r,n,i,a){if(131068&r.flags)return!1;if(D_(t))return jl(zl(e,r),t,r,n,i,a);var o=Ff(e,1,!0);if(D_(o))return jl(zl(e,r),o,r,n,i,a);return!1}(t,n,a,o,c,u);case 272:return function(t,n,a,o,s,c){var u,l=jl(function(t){var r,n,a;return i(this,(function(i){switch(i.label){case 0:if(!e.length(t.properties))return[2];r=0,n=t.properties,i.label=1;case 1:return r<n.length?(a=n[r],e.isJsxSpreadAttribute(a)?[3,3]:[4,{errorNode:a.name,innerExpression:a.initializer,nameType:Wu(e.idText(a.name))}]):[3,4];case 2:i.sent(),i.label=3;case 3:return r++,[3,1];case 4:return[2]}}))}(t),n,a,o,s,c);if(e.isJsxOpeningElement(t.parent)&&e.isJsxElement(t.parent.parent)){var _=t.parent.parent,d=Xf(Hf(t)),p=void 0===d?"children":e.unescapeLeadingUnderscores(d),f=Wu(p),m=Su(a,f),g=Jl(_.children);if(!e.length(g))return l;var y=e.length(g)>1,h=_p(m,S_),v=_p(m,(function(e){return!S_(e)}));if(y){if(h!==Be){var b=Uc(Vf(_,0)),x=function(t,r){var n,a,o,s,c;return i(this,(function(i){switch(i.label){case 0:if(!e.length(t.children))return[2];n=0,a=0,i.label=1;case 1:return a<t.children.length?(o=t.children[a],s=Wu(a-n),(c=Kl(o,s,r))?[4,c]:[3,3]):[3,5];case 2:return i.sent(),[3,4];case 3:n++,i.label=4;case 4:return a++,[3,1];case 5:return[2]}}))}(_,T);l=jl(x,b,h,o,s,c)||l}else if(!Ql(Su(n,f),m,o)){l=!0;var D=Xr(_.openingElement.tagName,e.Diagnostics.This_JSX_tag_s_0_prop_expects_a_single_child_of_type_1_but_multiple_children_were_provided,p,Ii(m));c&&c.skipLogging&&(c.errors||(c.errors=[])).push(D)}}else if(v!==Be){var S=Kl(g[0],f,T);S&&(l=jl(function(){return i(this,(function(e){switch(e.label){case 0:return[4,S];case 1:return e.sent(),[2]}}))}(),n,a,o,s,c)||l)}else if(!Ql(Su(n,f),m,o)){l=!0;D=Xr(_.openingElement.tagName,e.Diagnostics.This_JSX_tag_s_0_prop_expects_type_1_which_requires_multiple_children_but_only_a_single_child_was_provided,p,Ii(m));c&&c.skipLogging&&(c.errors||(c.errors=[])).push(D)}}return l;function T(){if(!u){var n=e.getTextOfNode(t.parent.tagName),i=Xf(Hf(t)),o=void 0===i?"children":e.unescapeLeadingUnderscores(i),s=Su(a,Wu(o)),c=e.Diagnostics._0_components_don_t_accept_text_as_child_elements_Text_in_JSX_has_the_type_string_but_the_expected_type_of_1_is_2;u=r(r({},c),{key:"!!ALREADY FORMATTED!!",message:e.formatMessage(void 0,c,n,o,Ii(s))})}return u}}(t,n,a,o,c,u);case 201:return function(t,r,n,i,a,o){if(e.isBlock(t.body))return!1;if(e.some(t.parameters,e.hasType))return!1;var s=qm(r);if(!s)return!1;var c=xs(n,0);if(!e.length(c))return!1;var u=t.body,l=zs(s),_=Qc(e.map(c,zs));if(!Zl(l,_,i,void 0)){var d=u&&Bl(u,l,_,i,void 0,a,o);if(d)return d;var p=o||{};if(Zl(l,_,i,u,void 0,a,p),p.errors)return n.symbol&&e.length(n.symbol.declarations)&&e.addRelatedInfo(p.errors[p.errors.length-1],e.createDiagnosticForNode(n.symbol.declarations[0],e.Diagnostics.The_expected_type_comes_from_the_return_type_of_this_signature)),!0}return!1}(t,n,a,o,c,u)}return!1}function jl(t,r,n,i,a,o){for(var s=!1,c=t.next();!c.done;c=t.next()){var u=c.value,l=u.errorNode,_=u.innerExpression,d=u.nameType,p=u.errorMessage,f=Tu(n,d);if(f&&!(8388608&f.flags)){var m=Tu(r,d);if(m&&!Zl(m,f,i,void 0))if(_&&Bl(_,m,f,i,void 0,a,o))s=!0;else{var g=o||{},y=_?wy(_,0,m):m;if(Zl(y,f,i,l,p,a,g)&&y!==m&&Zl(m,f,i,l,p,a,g),g.errors){var h=g.errors[g.errors.length-1],v=_o(d)?yo(d):void 0,b=void 0!==v?vs(n,v):void 0,x=!1;if(!b){var D=my(d,296)&&Ts(n,1)||Ts(n,0)||void 0;D&&D.declaration&&!e.getSourceFileOfNode(D.declaration).hasNoDefaultLib&&(x=!0,e.addRelatedInfo(h,e.createDiagnosticForNode(D.declaration,e.Diagnostics.The_expected_type_comes_from_this_index_signature)))}if(!x&&(b&&e.length(b.declarations)||n.symbol&&e.length(n.symbol.declarations))){var S=b&&e.length(b.declarations)?b.declarations[0]:n.symbol.declarations[0];e.getSourceFileOfNode(S).hasNoDefaultLib||e.addRelatedInfo(h,e.createDiagnosticForNode(S,e.Diagnostics.The_expected_type_comes_from_property_0_which_is_declared_here_on_type_1,!v||8192&d.flags?Ii(d):e.unescapeLeadingUnderscores(v),Ii(n)))}}s=!0}}}return s}function Kl(t,r,n){switch(t.kind){case 274:return{errorNode:t,innerExpression:t.expression,nameType:r};case 11:if(t.containsOnlyTriviaWhiteSpaces)break;return{errorNode:t,innerExpression:void 0,nameType:r,errorMessage:n()};case 264:case 265:case 268:return{errorNode:t,innerExpression:t,nameType:r};default:return e.Debug.assertNever(t,"Found invalid jsx child")}}function Jl(t){return e.filter(t,(function(t){return!e.isJsxText(t)||!t.containsOnlyTriviaWhiteSpaces}))}function zl(t,r){var n,a,o,s;return i(this,(function(i){switch(i.label){case 0:if(!(n=e.length(t.elements)))return[2];a=0,i.label=1;case 1:return a<n?D_(r)&&!vs(r,""+a)?[3,3]:(o=t.elements[a],e.isOmittedExpression(o)?[3,3]:(s=Wu(a),[4,{errorNode:o,innerExpression:o,nameType:s}])):[3,4];case 2:i.sent(),i.label=3;case 3:return a++,[3,1];case 4:return[2]}}))}function Ul(e,t,r,n,i){return Zl(e,t,qr,r,n,i)}function Vl(t,r,n,i,a,o,s,c){if(t===r)return-1;if(function(e){return!e.typeParameters&&(!e.thisParameter||Qi(Ig(e.thisParameter)))&&1===e.parameters.length&&M(e)&&(Ig(e.parameters[0])===vt||Qi(Ig(e.parameters[0])))&&Qi(zs(e))}(r))return-1;var u=Bg(r);if(!Kg(r)&&jg(t)>u)return 0;t.typeParameters&&t.typeParameters!==r.typeParameters&&(t=Hm(t,r=Xs(r),void 0,c));var l=Bg(t),_=zg(t),d=zg(r);if(_&&d&&l!==u)return 0;var p=r.declaration?r.declaration.kind:0,f=!n&&q&&160!==p&&159!==p&&161!==p,m=-1,g=Ks(t);if(g&&g!==Re){var y=Ks(r);if(y){if(!(x=!f&&c(g,y,!1)||c(y,g,a)))return a&&o(e.Diagnostics.The_this_types_of_each_signature_are_incompatible),0;m&=x}}for(var h=_||d?Math.min(l,u):Math.max(l,u),v=_||d?h-1:-1,b=0;b<h;b++){var x,D=b===v?Rg(t,b):Mg(t,b),S=b===v?Rg(r,b):Mg(r,b),T=n?void 0:qm(U_(D)),E=n?void 0:qm(U_(S));if(!(x=T&&E&&!Js(T)&&!Js(E)&&(98304&R_(D))==(98304&R_(S))?Vl(E,T,f?2:1,!1,a,o,s,c):!n&&!f&&c(D,S,!1)||c(S,D,a)))return a&&o(e.Diagnostics.Types_of_parameters_0_and_1_are_incompatible,e.unescapeLeadingUnderscores(Og(t,b)),e.unescapeLeadingUnderscores(Og(r,b))),0;m&=x}if(!i){var C=Vs(r)?he:r.declaration&&Sg(r.declaration)?Ha(ti(r.declaration.symbol)):zs(r);if(C===Re)return m;var k=Vs(t)?he:t.declaration&&Sg(t.declaration)?Ha(ti(t.declaration.symbol)):zs(t),N=Js(r);if(N){var A=Js(t);if(A)m&=function(t,r,n,i,a){if(t.kind!==r.kind)return n&&(i(e.Diagnostics.A_this_based_type_guard_is_not_compatible_with_a_parameter_based_type_guard),i(e.Diagnostics.Type_predicate_0_is_not_assignable_to_1,Ri(t),Ri(r))),0;if((1===t.kind||3===t.kind)&&t.parameterIndex!==r.parameterIndex)return n&&(i(e.Diagnostics.Parameter_0_is_not_in_the_same_position_as_parameter_1,t.parameterName,r.parameterName),i(e.Diagnostics.Type_predicate_0_is_not_assignable_to_1,Ri(t),Ri(r))),0;var o=t.type===r.type?-1:t.type&&r.type?a(t.type,r.type,n):0;0===o&&n&&i(e.Diagnostics.Type_predicate_0_is_not_assignable_to_1,Ri(t),Ri(r));return o}(A,N,a,o,c);else if(e.isIdentifierTypePredicate(N))return a&&o(e.Diagnostics.Signature_0_must_be_a_type_predicate,wi(t)),0}else!(m&=1===n&&c(C,k,!1)||c(k,C,a))&&a&&s&&s(k,C)}return m}function ql(e,t){var r=Ys(e),n=Ys(t),i=zs(r),a=zs(n);return!(a!==Re&&!Ql(a,i,Vr)&&!Ql(i,a,Vr))&&0!==Vl(r,n,0,!0,!1,void 0,void 0,kl)}function Wl(t){return 524288&t.flags?!Xo(t)&&(0===(r=Qo(t)).properties.length&&0===r.callSignatures.length&&0===r.constructSignatures.length&&!r.stringIndexInfo&&!r.numberIndexInfo):!!(67108864&t.flags)||(1048576&t.flags?e.some(t.types,Wl):!!(2097152&t.flags)&&e.every(t.types,Wl));var r}function Gl(t){return!!(16&e.getObjectFlags(t))&&Wl(t)}function Hl(t){return 524288&t.flags&&!Xo(t)&&0===ts(t).length&&Ts(t,0)&&!Ts(t,1)||3145728&t.flags&&e.every(t.types,Hl)||!1}function Yl(t,r,n){if(t===r)return!0;var i=A(t)+","+A(r),a=Gr.get(i);if(void 0!==a&&(4&a||!(2&a)||!n))return!!(1&a);if(!(t.escapedName===r.escapedName&&256&t.flags&&256&r.flags))return Gr.set(i,6),!1;for(var o=wa(r),s=0,c=ts(wa(t));s<c.length;s++){var u=c[s];if(8&u.flags){var l=vs(o,u.escapedName);if(!(l&&8&l.flags))return n?(n(e.Diagnostics.Property_0_is_missing_in_type_1,e.symbolName(u),Ii(ro(r),void 0,64)),Gr.set(i,6)):Gr.set(i,2),!1}}return Gr.set(i,1),!0}function Xl(e,t,r,n){var i=e.flags,a=t.flags;if(3&a||131072&i||e===be)return!0;if(131072&a)return!1;if(132&i&&4&a)return!0;if(128&i&&1024&i&&128&a&&!(1024&a)&&e.value===t.value)return!0;if(296&i&&8&a)return!0;if(256&i&&1024&i&&256&a&&!(1024&a)&&e.value===t.value)return!0;if(2112&i&&64&a)return!0;if(528&i&&16&a)return!0;if(12288&i&&4096&a)return!0;if(32&i&&32&a&&Yl(e.symbol,t.symbol,n))return!0;if(1024&i&&1024&a){if(1048576&i&&1048576&a&&Yl(e.symbol,t.symbol,n))return!0;if(2944&i&&2944&a&&e.value===t.value&&Yl(ni(e.symbol),ni(t.symbol),n))return!0}if(32768&i&&(!V||49152&a))return!0;if(65536&i&&(!V||65536&a))return!0;if(524288&i&&67108864&a)return!0;if(r===Vr||r===qr){if(1&i)return!0;if(264&i&&!(1024&i)&&(32&a||256&a&&1024&a))return!0}return!1}function Ql(e,t,r){if(qu(e)&&(e=e.regularType),qu(t)&&(t=t.regularType),e===t||r===qr&&!(131072&t.flags)&&Xl(t,e,r)||r!==Wr&&Xl(e,t,r))return!0;if(524288&e.flags&&524288&t.flags){var n=r.get(u_(e,t,!1,r));if(void 0!==n)return!!(1&n)}return!!(66846720&e.flags||66846720&t.flags)&&Zl(e,t,r,void 0)}function $l(t,r){return 4096&e.getObjectFlags(t)&&!Jf(r.escapedName)}function Zl(r,n,i,a,o,s,c){var u,l,_,d,p,m,g=0,y=0,h=0,v=!1,b=0,x=[];e.Debug.assert(i!==Wr||!a,"no error reporting in identity checking");var D=L(r,n,!!a,o);if(x.length&&w(),v){var S=Xr(a,e.Diagnostics.Excessive_stack_depth_comparing_types_0_and_1,Ii(r),Ii(n));c&&(c.errors||(c.errors=[])).push(S)}else if(u){if(s){var T=s();T&&(e.concatenateDiagnosticMessageChains(T,u),u=T)}var E=void 0;if(o&&a&&!D&&r.symbol){var k=_n(r.symbol);if(k.originatingImport&&!e.isImportCall(k.originatingImport))if(Zl(wa(k.target),n,i,void 0)){var N=e.createDiagnosticForNode(k.originatingImport,e.Diagnostics.Type_originates_at_this_import_A_namespace_style_import_cannot_be_called_or_constructed_and_will_cause_a_failure_at_runtime_Consider_using_a_default_import_or_import_require_here_instead);E=e.append(E,N)}}S=e.createDiagnosticForNodeFromMessageChain(a,u,E);l&&e.addRelatedInfo.apply(void 0,t([S],l)),c&&(c.errors||(c.errors=[])).push(S),c&&c.skipLogging||jr.add(S)}return a&&c&&c.skipLogging&&0===D&&e.Debug.assert(!!c.errors,"missed opportunity to interact with error."),0!==D;function A(e){u=e.errorInfo,m=e.lastSkippedInfo,x=e.incompatibleStack,b=e.overrideNextErrorInfo,l=e.relatedInfo}function F(){return{errorInfo:u,lastSkippedInfo:m,incompatibleStack:x.slice(),overrideNextErrorInfo:b,relatedInfo:l?l.slice():void 0}}function P(e,t,r,n,i){b++,m=void 0,x.push([e,t,r,n,i])}function w(){var r=x;x=[];var n=m;if(m=void 0,1===r.length)return I.apply(void 0,r[0]),void(n&&O.apply(void 0,t([void 0],n)));for(var i="",a=[];r.length;){var o=r.pop(),s=o[0],c=o.slice(1);switch(s.code){case e.Diagnostics.Types_of_property_0_are_incompatible.code:0===i.indexOf("new ")&&(i="("+i+")");var u=""+c[0];i=0===i.length?""+u:e.isIdentifierText(u,K.target)?i+"."+u:"["===u[0]&&"]"===u[u.length-1]?""+i+u:i+"["+u+"]";break;case e.Diagnostics.Call_signature_return_types_0_and_1_are_incompatible.code:case e.Diagnostics.Construct_signature_return_types_0_and_1_are_incompatible.code:case e.Diagnostics.Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code:case e.Diagnostics.Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code:if(0===i.length){var l=s;s.code===e.Diagnostics.Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code?l=e.Diagnostics.Call_signature_return_types_0_and_1_are_incompatible:s.code===e.Diagnostics.Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code&&(l=e.Diagnostics.Construct_signature_return_types_0_and_1_are_incompatible),a.unshift([l,c[0],c[1]])}else{i=""+(s.code===e.Diagnostics.Construct_signature_return_types_0_and_1_are_incompatible.code||s.code===e.Diagnostics.Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code?"new ":"")+i+"("+(s.code===e.Diagnostics.Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code||s.code===e.Diagnostics.Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1.code?"":"...")+")"}break;default:return e.Debug.fail("Unhandled Diagnostic: "+s.code)}}i?I(")"===i[i.length-1]?e.Diagnostics.The_types_returned_by_0_are_incompatible_between_these_types:e.Diagnostics.The_types_of_0_are_incompatible_between_these_types,i):a.shift();for(var _=0,d=a;_<d.length;_++){var p=d[_],f=(s=p[0],c=p.slice(1),s.elidedInCompatabilityPyramid);s.elidedInCompatabilityPyramid=!1,I.apply(void 0,t([s],c)),s.elidedInCompatabilityPyramid=f}n&&O.apply(void 0,t([void 0],n))}function I(t,r,n,i,o){e.Debug.assert(!!a),x.length&&w(),t.elidedInCompatabilityPyramid||(u=e.chainDiagnosticMessages(u,t,r,n,i,o))}function O(t,r,n){x.length&&w();var a=Oi(r,n),o=a[0],s=a[1];262144&n.flags&&void 0!==n.immediateBaseConstraint&&Fl(r,n.immediateBaseConstraint)&&I(e.Diagnostics._0_is_assignable_to_the_constraint_of_type_1_but_1_could_be_instantiated_with_a_different_subtype_of_constraint_2,o,s,Ii(n.immediateBaseConstraint)),t||(t=i===qr?e.Diagnostics.Type_0_is_not_comparable_to_type_1:o===s?e.Diagnostics.Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated:e.Diagnostics.Type_0_is_not_assignable_to_type_1),I(t,o,s)}function M(t,r,n){if(D_(t)){var i=t.target;return i&&i.readonly&&S_(r)&&(!h_(r)||w_(r)&&!r.target.readonly)?(n&&I(e.Diagnostics.The_type_0_is_readonly_and_cannot_be_assigned_to_the_mutable_type_1,Ii(t),Ii(r)),!1):b_(r)}return D_(r)?b_(t):!(h_(t)&&y_(r)&&!h_(r))||(n&&I(e.Diagnostics.The_type_0_is_readonly_and_cannot_be_assigned_to_the_mutable_type_1,Ii(t),Ii(r)),!1)}function L(t,r,n,o,s){if(void 0===n&&(n=!1),qu(t)&&(t=t.regularType),qu(r)&&(r=r.regularType),33554432&t.flags&&(t=t.substitute),33554432&r.flags&&(r=r.typeVariable),25165824&t.flags&&(t=vu(t,!1)),25165824&r.flags&&(r=vu(r,!0)),1048576&r.flags&&524288&t.flags&&r.types.length<=3&&fy(r,98304)){var c=fp(r,-98305);1179648&c.flags||(r=c)}if(t===r)return-1;if(i===Wr)return function(e,t){var r,n=e.flags&t.flags;if(524288&n||8388608&n||16777216&n||4194304&n||33554432&n)return z(e,t,!1,!1);if(3145728&n&&(r=R(e,t))&&(r&=R(t,e)))return r;return 0}(t,r);if(i===qr&&!(131072&r.flags)&&Xl(r,t,i)||Xl(t,r,i,n?I:void 0))return-1;var l=!!(4096&e.getObjectFlags(t)),_=!s&&Cd(t)&&32768&e.getObjectFlags(t);if(_){var d=1048576&r.flags?j(t,r):void 0;if(function t(r,n,o,s){if(!H&&16384&e.getObjectFlags(n))return!1;if(im(n)){var c=!!(4096&e.getObjectFlags(r));if((i===Vr||i===qr)&&(cp(ct,n)||!c&&Wl(n)))return!1;if(o)return t(r,o,void 0,s);for(var u=function(t){if(function(e,t){return e.valueDeclaration&&t.valueDeclaration&&e.valueDeclaration.parent===t.valueDeclaration}(t,r.symbol)&&!nm(n,t.escapedName,c)){if(s){var i=_p(n,im);if(!a)return{value:e.Debug.fail()};if(e.isJsxAttributes(a)||e.isJsxOpeningLikeElement(a)||e.isJsxOpeningLikeElement(a.parent))t.valueDeclaration&&e.isJsxAttribute(t.valueDeclaration)&&(a=t.valueDeclaration.name),I(e.Diagnostics.Property_0_does_not_exist_on_type_1,Pi(t),Ii(i));else{var o=r.symbol&&e.firstOrUndefined(r.symbol.declarations),u=void 0;if(t.valueDeclaration&&e.findAncestor(t.valueDeclaration,(function(e){return e===o}))){var l=t.valueDeclaration;e.Debug.assertNode(l,e.isObjectLiteralElementLike),a=l;var _=l.name;e.isIdentifier(_)&&(u=Cm(_,i))}void 0!==u?I(e.Diagnostics.Object_literal_may_only_specify_known_properties_but_0_does_not_exist_in_type_1_Did_you_mean_to_write_2,Pi(t),Ii(i),u):I(e.Diagnostics.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1,Pi(t),Ii(i))}}return{value:!0}}},l=0,_=ts(r);l<_.length;l++){var d=_[l],p=u(d);if("object"===f(p))return p.value}}return!1}(t,r,d,n))return n&&O(o,t,r),0}var p=i!==qr&&!s&&2752508&t.flags&&t!==ct&&2621440&r.flags&&t_(r)&&(ts(t).length>0||mb(t));if(p&&!function(e,t,r){for(var n=0,i=ts(e);n<i.length;n++){var a=i[n];if(nm(t,a.escapedName,r))return!0}return!1}(t,r,l)){if(n){var g=xs(t,0),y=xs(t,1);g.length>0&&L(zs(g[0]),r,!1)||y.length>0&&L(zs(y[0]),r,!1)?I(e.Diagnostics.Value_of_type_0_has_no_properties_in_common_with_type_1_Did_you_mean_to_call_it,Ii(t),Ii(r)):I(e.Diagnostics.Type_0_has_no_properties_in_common_with_type_1,Ii(t),Ii(r))}return 0}var h=0,v=F(),x=!!s;if(1048576&t.flags)h=i===qr?J(t,r,n&&!(131068&t.flags)):function(e,t,r){for(var n=-1,i=e.types,a=0,o=i;a<o.length;a++){var s=L(o[a],t,r);if(!s)return 0;n&=s}return n}(t,r,n&&!(131068&t.flags));else{if(1048576&r.flags){if((h=B(Q_(t),r,n&&!(131068&t.flags)&&!(131068&r.flags)))&&(_||p)){d=j(t,r)||function(e){if(fy(e,67108864)){var t=_p(e,(function(e){return!(131068&e.flags)}));if(!(131072&t.flags))return t}return e}(r);if(!Y(t,d,n,void 0,x))return 0}}else if(2097152&r.flags){if(x=!0,(h=function(e,t,r){for(var n=-1,i=t.types,a=0,o=i;a<o.length;a++){var s=o[a],c=L(e,s,r,void 0,!0);if(!c)return 0;n&=c}return n}(Q_(t),r,n))&&(_||p)&&!Y(t,r,n,void 0,!1))return 0}else 2097152&t.flags&&(h=J(t,r,!1));!h&&(66846720&t.flags||66846720&r.flags)&&(h=z(t,r,n,x))&&A(v)}if(!h&&2359296&t.flags){var D=function(t,r){for(var n,i=!1,a=0,o=t;a<o.length;a++){if(63176704&(l=o[a]).flags){for(var s=rs(l);s&&21233664&s.flags;)s=rs(s);s&&(n=e.append(n,s),r&&(n=e.append(n,l)))}else 67238908&l.flags&&(i=!0)}if(n&&(r||i)){if(i)for(var c=0,u=t;c<u.length;c++){var l;67238908&(l=u[c]).flags&&(n=e.append(n,l))}return iu(n)}}(2097152&t.flags?t.types:[t],!!(1048576&r.flags));D&&(2097152&t.flags||1048576&r.flags)&&lp(D,(function(e){return e!==t}))&&(h=L(D,r,!1,void 0,x))&&A(v)}if(!h&&n){var S=b>0;if(S&&b--,524288&t.flags&&524288&r.flags){var T=u;M(t,r,n),u!==T&&(S=!!u)}if(524288&t.flags&&131068&r.flags)!function(t,r){var n=Mi(t.symbol)?Ii(t,t.symbol.valueDeclaration):Ii(t),i=Mi(r.symbol)?Ii(r,r.symbol.valueDeclaration):Ii(r);(ft===t&&Ne===r||mt===t&&Ae===r||gt===t&&Me===r||wc(!1)===t&&Le===r)&&I(e.Diagnostics._0_is_a_primitive_but_1_is_a_wrapper_object_Prefer_using_0_when_possible,i,n)}(t,r);else if(t.symbol&&524288&t.flags&&ct===t)I(e.Diagnostics.The_Object_type_is_assignable_to_very_few_other_types_Did_you_mean_to_use_the_any_type_instead);else if(l&&2097152&r.flags){var E=r.types,k=Wf(C.IntrinsicAttributes,a),N=Wf(C.IntrinsicClassAttributes,a);if(k!==xe&&N!==xe&&(e.contains(E,k)||e.contains(E,N)))return h}if(!o&&S)return m=[t,r],h;O(o,t,r)}return h}function R(e,t){for(var r=-1,n=0,i=e.types;n<i.length;n++){var a=B(i[n],t,!1);if(!a)return 0;r&=a}return r}function B(t,r,n){var i=r.types;if(1048576&r.flags&&Wc(i,t))return-1;for(var a=0,o=i;a<o.length;a++){var s=L(t,o[a],!1);if(s)return s}n&&L(t,j(t,r)||function(t,r){var n=e.getObjectFlags(t);if(20&n&&1048576&r.flags)return e.find(r.types,(function(r){if(524288&r.flags){var i=n&e.getObjectFlags(r);if(4&i)return t.target===r.target;if(16&i)return!!t.aliasSymbol&&t.aliasSymbol===r.aliasSymbol}return!1}))}(t,r)||function(t,r){if(128&e.getObjectFlags(t)&&up(r,b_))return e.find(r.types,(function(e){return!b_(e)}))}(t,r)||function(t,r){var n=0;if(xs(t,n).length>0||xs(t,n=1).length>0)return e.find(r.types,(function(e){return xs(e,n).length>0}))}(t,r)||function(t,r){for(var n,i=0,a=0,o=r.types;a<o.length;a++){var s=o[a],c=iu([lu(t),lu(s)]);if(4194304&c.flags)n=s,i=1/0;else if(1048576&c.flags){var u=e.length(e.filter(c.types,E_));u>=i&&(n=s,i=u)}else E_(c)&&1>=i&&(n=s,i=1)}return n}(t,r)||i[i.length-1],!0);return 0}function j(t,r){if(1048576&r.flags&&2621440&t.flags){var n=ts(t);if(n){var i=zd(n,r);if(i)return e_(r,e.map(i,(function(e){return[function(){return wa(e)},e.escapedName]})),L)}}}function J(e,t,r){var n=e.types;if(1048576&e.flags&&Wc(n,t))return-1;for(var i=n.length,a=0;a<i;a++){var o=L(n[a],t,r&&a===i-1);if(o)return o}return 0}function z(t,r,n,a){if(v)return 0;var o=u_(t,r,a,i),s=i.get(o);if(void 0!==s&&(!(n&&2&s)||4&s)){if(Yt){var c=24&s;8&c&&gl(t,U),16&c&&gl(t,q)}return 1&s?-1:0}if(_){for(var l=0;l<g;l++)if(o===_[l])return 1;if(100===y)return v=!0,0}else _=[],d=[],p=[];var m=g;_[g]=o,g++,d[y]=t,p[y]=r,y++;var b,x=h;1&h||!d_(t,d,y)||(h|=1),2&h||!d_(r,p,y)||(h|=2);var D=0;Yt&&(b=Yt,Yt=function(e){return D|=e?16:8,b(e)});var S=3!==h?function(t,r,n,a){var o,s,c=t.flags&r.flags;if(i===Wr&&!(524288&c)){if(4194304&c)return L(t.type,r.type,!1);var l=0;return 8388608&c&&(l=L(t.objectType,r.objectType,!1))&&(l&=L(t.indexType,r.indexType,!1))?l:16777216&c&&t.root.isDistributive===r.root.isDistributive&&(l=L(t.checkType,r.checkType,!1))&&(l&=L(t.extendsType,r.extendsType,!1))&&(l&=L(Au(t),Au(r),!1))&&(l&=L(Fu(t),Fu(r),!1))?l:33554432&c?L(t.substitute,r.substitute,!1):0}var _=!1,d=F();if(17301504&t.flags&&t.aliasSymbol&&t.aliasTypeArguments&&t.aliasSymbol===r.aliasSymbol&&!t.aliasTypeArgumentsContainsMarker&&!r.aliasTypeArgumentsContainsMarker){var p=n_(t.aliasSymbol);if(void 0!==(K=W(t.aliasTypeArguments,r.aliasTypeArguments,p,a)))return K}if(262144&r.flags){if(32&e.getObjectFlags(t)&&L(lu(r),zo(t))&&!(4&Go(t))){var m=Uo(t),g=Su(r,Jo(t));if(o=L(m,g,n))return o}}else if(4194304&r.flags){if(4194304&t.flags&&(o=L(r.type,t.type,!1)))return o;if((P=is(r.type))&&-1===L(t,lu(P,r.stringsOnly),n))return-1}else if(8388608&r.flags){if(i!==Wr){var y=r.objectType,h=r.indexType,v=cs(y)||y,b=cs(h)||h;if(!gu(v)&&!yu(b))if((P=Tu(v,b,void 0,2|(v!==y?1:0)))&&(o=L(t,P,n)))return o}}else if(Xo(r)){var x=Uo(r),D=Go(r);if(!(8&D)){if(8388608&x.flags&&x.objectType===t&&x.indexType===Jo(r))return-1;if(!Xo(t)){var S=zo(r),T=lu(t,void 0,!0),E=4&D,C=E?Io(S,T):void 0;if(E?!(131072&C.flags):L(S,T)){var k=Jo(r),N=C?iu([C,k]):k;g=Su(t,N),m=Uo(r);if(o=L(g,m,n))return o}s=u,A(d)}}}if(8650752&t.flags){var P;if(8388608&t.flags&&8388608&r.flags){if((o=L(t.objectType,r.objectType,n))&&(o&=L(t.indexType,r.indexType,n)),o)return A(d),o}else if(!(P=rs(t))||262144&t.flags&&1&P.flags){if(o=L(Ge,fp(r,-67108865)))return A(d),o}else{if(o=L(P,r,!1,void 0,a))return A(d),o;if(o=L(Do(P,t),r,n,void 0,a))return A(d),o}}else if(4194304&t.flags){if(o=L(qe,r,n))return A(d),o}else if(16777216&t.flags)if(16777216&r.flags){var w=t.root.inferTypeParameters,I=t.extendsType,O=void 0;if(w){var M=cd(w,void 0,0,L);Sd(M.inferences,r.extendsType,I,192),I=gl(I,M.mapper),O=M.mapper}if(El(I,r.extendsType)&&(L(t.checkType,r.checkType)||L(r.checkType,t.checkType))&&((o=L(gl(Au(t),O),Au(r),n))&&(o&=L(Fu(t),Fu(r),n)),o))return A(d),o}else{var R=os(t);if(R&&(o=L(R,r,n)))return A(d),o;var B=as(t);if(B&&(o=L(B,r,n)))return A(d),o}else{if(i!==Ur&&function(t){return!!(32&e.getObjectFlags(t)&&4&Go(t))}(r)&&Wl(t))return-1;if(Xo(r))return Xo(t)&&(o=function(e,t,r){if(i===qr||(i===Wr?Go(e)===Go(t):Yo(e)<=Yo(t))){var n,a=zo(t),o=gl(zo(e),Yo(e)<0?U:q);if(n=L(a,o,r)){var s=el([Jo(e)],[Jo(t)]);return n&L(gl(Uo(e),s),Uo(t),r)}}return 0}(t,r,n))?(A(d),o):0;var j=!!(131068&t.flags);if(i!==Wr)t=ms(t);else if(Xo(t))return 0;if(4&e.getObjectFlags(t)&&4&e.getObjectFlags(r)&&t.target===r.target&&!(8192&e.getObjectFlags(t)||8192&e.getObjectFlags(r))){var K;p=a_(t.target);if(void 0!==(K=W(_c(t),_c(r),p,a)))return K}else{if(h_(r)?y_(t)||w_(t):y_(r)&&w_(t)&&!t.target.readonly)return i!==Wr?L(Es(t,1)||he,Es(r,1)||he,n):0;if(i===Ur&&Wl(r)&&32768&e.getObjectFlags(r)&&!Wl(t))return 0}if(2621440&t.flags&&524288&r.flags){var J=n&&u===d.errorInfo&&!j;if((o=Y(t,r,J,void 0,a))&&(o&=X(t,r,0,J))&&(o&=X(t,r,1,J))&&(o&=te(t,r,0,j,J))&&(o&=te(t,r,1,j,J)),_&&o)u=s||u||d.errorInfo;else if(o)return o}if(2621440&t.flags&&1048576&r.flags){var z=fp(r,524288);if(1048576&z.flags){var V=function(t,r){var n=zd($o(t),r);if(!n)return 0;for(var i=1,a=0,o=n;a<o.length;a++){var s=o[a];if((i*=dp(wa(s)))>25)return 0}for(var c=new Array(n.length),u=e.createUnderscoreEscapedMap(),l=0;l<n.length;l++){var _=wa(s=n[l]);c[l]=1048576&_.flags?_.types:[_],u.set(s.escapedName,!0)}for(var d=e.cartesianProduct(c),p=[],m=function(i){var a=!1;e:for(var o=0,s=r.types;o<s.length;o++){for(var c=s[o],u=function(e){var a=n[e],o=Zo(c,a.escapedName);return o?a===o?"continue":G(t,r,a,o,(function(t){return i[e]}),!1,!1)?void 0:"continue-outer":"continue-outer"},l=0;l<n.length;l++){switch(u(l)){case"continue-outer":continue e}}e.pushIfUnique(p,c,e.equateValues),a=!0}if(!a)return{value:0}},g=0,y=d;g<y.length;g++){var h=y[g],v=m(h);if("object"===f(v))return v.value}for(var b=-1,x=0,D=p;x<D.length;x++){var S=D[x];if((b&=Y(t,S,!1,u,!1))&&(b&=X(t,S,0,!1))&&(b&=X(t,S,1,!1))&&(b&=te(t,S,0,!1,!1))&&(b&=te(t,S,1,!1,!1)),!b)return b}return b}(t,z);if(V)return V}}}return 0;function W(t,r,a,c){if(o=function(t,r,n,a,o){if(void 0===t&&(t=e.emptyArray),void 0===r&&(r=e.emptyArray),void 0===n&&(n=e.emptyArray),t.length!==r.length&&i===Wr)return 0;for(var s=t.length<=r.length?t.length:r.length,c=-1,u=0;u<s;u++){var l=u<n.length?n[u]:1,_=7&l;if(4!==_){var d=t[u],p=r[u],f=-1;if(8&l?f=i===Wr?L(d,p,!1):Cl(d,p):1===_?f=L(d,p,a,void 0,o):2===_?f=L(p,d,a,void 0,o):3===_?(f=L(p,d,!1))||(f=L(d,p,a,void 0,o)):(f=L(d,p,a,void 0,o))&&(f&=L(p,d,a,void 0,o)),!f)return 0;c&=f}}return c}(t,r,a,n,c))return o;if(e.some(a,(function(e){return!!(24&e)})))return s=void 0,void A(d);var l=r&&function(e,t){for(var r=0;r<t.length;r++)if(1==(7&t[r])&&16384&e[r].flags)return!0;return!1}(r,a);if(_=!l,a!==e.emptyArray&&!l){if(_&&(!n||!e.some(a,(function(e){return 0==(7&e)}))))return 0;s=u,A(d)}}}(t,r,n,a):1;if(Yt&&(Yt=b),h=x,y--,S){if(-1===S||0===y){for(l=m;l<g;l++)i.set(_[l],1|D);g=m}}else i.set(o,2|(n?4:0)|D),g=m;return S}function U(e){return!Yt||e!==rt&&e!==nt&&e!==Xt||Yt(!1),e}function q(e){return!Yt||e!==rt&&e!==nt&&e!==Xt||Yt(!0),e}function W(e,t){if(!t||0===e.length)return e;for(var r,n=0;n<e.length;n++)t.has(e[n].escapedName)?r||(r=e.slice(0,n)):r&&r.push(e[n]);return r||e}function G(t,r,n,a,o,s,c){var u=e.getDeclarationModifierFlagsFromSymbol(n),l=e.getDeclarationModifierFlagsFromSymbol(a);if(8&u||8&l){var _=n.valueDeclaration!==a.valueDeclaration;if(1024&e.getCheckFlags(n)&&_)return s&&I(e.Diagnostics.Property_0_has_conflicting_declarations_and_is_inaccessible_in_type_1,Pi(n),Ii(t)),0;if(_)return s&&(8&u&&8&l?I(e.Diagnostics.Types_have_separate_declarations_of_a_private_property_0,Pi(a)):I(e.Diagnostics.Property_0_is_private_in_type_1_but_not_in_type_2,Pi(a),Ii(8&u?t:r),Ii(8&u?r:t))),0}else if(16&l){if(!function(t,r){return!l_(r,(function(r){return!!(16&e.getDeclarationModifierFlagsFromSymbol(r))&&(n=t,i=__(r),!l_(n,(function(e){var t=__(e);return!!t&&Ma(t,i)})));var n,i}))}(n,a))return s&&I(e.Diagnostics.Property_0_is_protected_but_type_1_is_not_a_class_derived_from_2,Pi(a),Ii(__(n)||t),Ii(__(a)||r)),0}else if(16&u)return s&&I(e.Diagnostics.Property_0_is_protected_in_type_1_but_public_in_type_2,Pi(a),Ii(t),Ii(r)),0;var d=function(t,r,n,i,a){var o=V&&!!(48&e.getCheckFlags(r)),s=n(t);if(65536&e.getCheckFlags(r)&&!_n(r).type){var c=_n(r);e.Debug.assertDefined(c.deferralParent),e.Debug.assertDefined(c.deferralConstituents);for(var u=!!(1048576&c.deferralParent.flags),l=u?0:-1,_=0,d=c.deferralConstituents;_<d.length;_++){var p=L(s,d[_],!1,void 0,!u);if(u){if(p)return p}else{if(!p)return L(s,sa(wa(r),o),i);l&=p}}return u&&!l&&o&&(l=L(s,Se)),u&&!l&&i?L(s,sa(wa(r),o),i):l}return L(s,sa(wa(r),o),i,void 0,a)}(n,a,o,s,c);return d?i!==qr&&16777216&n.flags&&!(16777216&a.flags)?(s&&I(e.Diagnostics.Property_0_is_optional_in_type_1_but_required_in_type_2,Pi(a),Ii(t),Ii(r)),0):d:(s&&P(e.Diagnostics.Types_of_property_0_are_incompatible,Pi(a)),0)}function Y(r,n,a,s,c){if(i===Wr)return function(e,t,r){if(!(524288&e.flags&&524288&t.flags))return 0;var n=W($o(e),r),i=W($o(t),r);if(n.length!==i.length)return 0;for(var a=-1,o=0,s=n;o<s.length;o++){var c=s[o],u=Zo(t,c.escapedName);if(!u)return 0;var l=f_(c,u,L);if(!l)return 0;a&=l}return a}(r,n,s);var _,d=i===Ur&&!Cd(r)&&!x_(r)&&!w_(r),p=bd(r,n,d,!1);if(p){if(a){var f=e.arrayFrom(vd(r,n,d,!1)),m=!1;if((!o||o.code!==e.Diagnostics.Class_0_incorrectly_implements_interface_1.code&&o.code!==e.Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass.code)&&(m=!0),1===f.length){var g=Pi(p);I.apply(void 0,t([e.Diagnostics.Property_0_is_missing_in_type_1_but_required_in_type_2,g],Oi(r,n))),e.length(p.declarations)&&(_=e.createDiagnosticForNode(p.declarations[0],e.Diagnostics._0_is_declared_here,g),e.Debug.assert(!!u),l?l.push(_):l=[_]),m&&u&&b++}else M(r,n,!1)&&(f.length>5?I(e.Diagnostics.Type_0_is_missing_the_following_properties_from_type_1_Colon_2_and_3_more,Ii(r),Ii(n),e.map(f.slice(0,4),(function(e){return Pi(e)})).join(", "),f.length-4):I(e.Diagnostics.Type_0_is_missing_the_following_properties_from_type_1_Colon_2,Ii(r),Ii(n),e.map(f,(function(e){return Pi(e)})).join(", ")),m&&u&&b++)}return 0}if(Cd(n))for(var y=0,h=W(ts(r),s);y<h.length;y++){if(!Zo(n,(w=h[y]).escapedName)){var v=wa(w);if(v!==Se&&v!==Te&&v!==Ee)return a&&I(e.Diagnostics.Property_0_does_not_exist_on_type_1,Pi(w),Ii(n)),0}}var x=-1;if(w_(n)){var D=I_(n);if(D){if(!w_(r))return 0;var S=I_(r);if(S&&!L(S,D,a))return a&&I(e.Diagnostics.Rest_signatures_are_incompatible),0;for(var T=dc(n)-1,E=dc(r)-(S?1:0),C=_c(r),k=T;k<E;k++){if(!(B=L(C[k],D,a)))return a&&I(e.Diagnostics.Property_0_is_incompatible_with_rest_element_type,""+k),0;x&=B}}}for(var N=1048576&n.flags?es(n):ts(n),A=w_(r)&&w_(n),F=0,P=W(N,s);F<P.length;F++){var w,O=P[F],R=O.escapedName;if(!(4194304&O.flags)&&(!A||Mf(R)||"length"===R))if((w=vs(r,R))&&w!==O){var B;if(!(B=G(r,n,w,O,wa,a,c)))return 0;x&=B}}return x}function X(t,r,n,a){if(i===Wr)return function(e,t,r){var n=xs(e,r),i=xs(t,r);if(n.length!==i.length)return 0;for(var a=-1,o=0;o<n.length;o++){var s=m_(n[o],i[o],!1,!1,!1,L);if(!s)return 0;a&=s}return a}(t,r,n);if(r===$e||t===$e)return-1;var o=t.symbol&&Sg(t.symbol.valueDeclaration),s=r.symbol&&Sg(r.symbol.valueDeclaration),c=xs(t,o&&1===n?0:n),u=xs(r,s&&1===n?0:n);if(1===n&&c.length&&u.length){if(e.isAbstractConstructorType(t)&&!e.isAbstractConstructorType(r))return a&&I(e.Diagnostics.Cannot_assign_an_abstract_constructor_type_to_a_non_abstract_constructor_type),0;if(!function(t,r,n){if(!t.declaration||!r.declaration)return!0;var i=e.getSelectedModifierFlags(t.declaration,24),a=e.getSelectedModifierFlags(r.declaration,24);if(8===a)return!0;if(16===a&&8!==i)return!0;if(16!==a&&!i)return!0;n&&I(e.Diagnostics.Cannot_assign_a_0_constructor_type_to_a_1_constructor_type,Bi(i),Bi(a));return!1}(c[0],u[0],a))return 0}var l=-1,_=F(),d=1===n?$:Q;if(64&e.getObjectFlags(t)&&64&e.getObjectFlags(r)&&t.symbol===r.symbol)for(var p=0;p<u.length;p++){if(!(x=Z(c[p],u[p],!0,a,d(c[p],u[p]))))return 0;l&=x}else if(1===c.length&&1===u.length){var f=i===qr||!!K.noStrictGenericChecks;l=Z(c[0],u[0],f,a,d(c[0],u[0]))}else e:for(var m=0,g=u;m<g.length;m++){for(var y=g[m],h=a,v=0,b=c;v<b.length;v++){var x,D=b[v];if(x=Z(D,y,!0,h,d(D,y))){l&=x,A(_);continue e}h=!1}return h&&I(e.Diagnostics.Type_0_provides_no_match_for_the_signature_1,Ii(t),wi(y,void 0,void 0,n)),0}return l}function Q(t,r){return 0===t.parameters.length&&0===r.parameters.length?function(t,r){return P(e.Diagnostics.Call_signatures_with_no_arguments_have_incompatible_return_types_0_and_1,Ii(t),Ii(r))}:function(t,r){return P(e.Diagnostics.Call_signature_return_types_0_and_1_are_incompatible,Ii(t),Ii(r))}}function $(t,r){return 0===t.parameters.length&&0===r.parameters.length?function(t,r){return P(e.Diagnostics.Construct_signatures_with_no_arguments_have_incompatible_return_types_0_and_1,Ii(t),Ii(r))}:function(t,r){return P(e.Diagnostics.Construct_signature_return_types_0_and_1_are_incompatible,Ii(t),Ii(r))}}function Z(e,t,r,n,i){return Vl(r?Ys(e):e,r?Ys(t):t,0,!1,n,I,i,L)}function ee(t,r,n){var i=L(t.type,r.type,n);return!i&&n&&I(e.Diagnostics.Index_signatures_are_incompatible),i}function te(t,r,n,a,o){if(i===Wr)return function(e,t,r){var n=Ts(t,r),i=Ts(e,r);if(!i&&!n)return-1;if(i&&n&&i.isReadonly===n.isReadonly)return L(i.type,n.type);return 0}(t,r,n);var s=Ts(r,n);if(!s||1&s.type.flags&&!a)return-1;var c=Ts(t,n)||1===n&&Ts(t,0);if(c)return ee(c,s,o);if(Xo(t))return 0===n?L(Uo(t),s.type,o):0;if(Y_(t)){var u=-1;if(0===n){var l=Ts(t,1);l&&(u=ee(l,s,o))}return u&&(u&=function(t,r,n,i){for(var a=-1,o=0,s=$o(t);o<s.length;o++){var c=s[o];if(!$l(t,c)&&(!(c.nameType&&8192&c.nameType.flags)&&(0===n||Mf(c.escapedName)))){var u=L(wa(c),r,i);if(!u)return i&&I(e.Diagnostics.Property_0_is_incompatible_with_index_signature,Pi(c)),0;a&=u}}return a}(t,s.type,n,o)),u}return o&&I(e.Diagnostics.Index_signature_is_missing_in_type_0,Ii(t)),0}}function e_(e,t,r,n){for(var i=e.types.map((function(e){})),a=0,o=t;a<o.length;a++)for(var s=o[a],c=s[0],u=s[1],l=0,_=0,d=e.types;_<d.length;_++){var p=Xi(d[_],u);p&&r(c(),p)?i[l]=void 0===i[l]||i[l]:i[l]=!1,l++}var f=i.indexOf(!0);return-1===f||-1!==i.indexOf(!0,f+1)?n:e.types[f]}function t_(t){if(524288&t.flags){var r=Qo(t);return 0===r.callSignatures.length&&0===r.constructSignatures.length&&!r.stringIndexInfo&&!r.numberIndexInfo&&r.properties.length>0&&e.every(r.properties,(function(e){return!!(16777216&e.flags)}))}return!!(2097152&t.flags)&&e.every(t.types,t_)}function r_(t,r,n){var i=cc(t,e.map(t.typeParameters,(function(e){return e===r?n:e})));return i.objectFlags|=8192,i}function n_(e){var t=_n(e);return i_(t.typeParameters,t,(function(r,n,i){var a=fc(e,Qu(t.typeParameters,Zu(n,i)));return a.aliasTypeArgumentsContainsMarker=!0,a}))}function i_(t,r,n){void 0===t&&(t=e.emptyArray);var i=r.variances;if(!i){r.variances=e.emptyArray,i=[];for(var a=function(e){var t=!1,a=!1,o=Yt;Yt=function(e){return e?a=!0:t=!0};var s=n(r,e,rt),c=n(r,e,nt),u=(Fl(c,s)?1:0)|(Fl(s,c)?2:0);3===u&&Fl(n(r,e,Xt),s)&&(u=4),Yt=o,(t||a)&&(t&&(u|=8),a&&(u|=16)),i.push(u)},o=0,s=t;o<s.length;o++){a(s[o])}r.variances=i}return i}function a_(t){return t===dt||t===pt||8&t.objectFlags?e.emptyArray:i_(t.typeParameters,t,r_)}function o_(e){return 262144&e.flags&&!ns(e)}function s_(t){return function(t){return!!(4&e.getObjectFlags(t))&&!t.node}(t)&&e.some(_c(t),(function(e){return o_(e)||s_(e)}))}function c_(e,t,r){void 0===r&&(r=0);for(var n=""+e.target.id,i=0,a=_c(e);i<a.length;i++){var o=a[i];if(o_(o)){var s=t.indexOf(o);s<0&&(s=t.length,t.push(o)),n+="="+s}else r<4&&s_(o)?n+="<"+c_(o,t,r+1)+">":n+="-"+o.id}return n}function u_(e,t,r,n){if(n===Wr&&e.id>t.id){var i=e;e=t,t=i}var a=r?"&":"";if(s_(e)&&s_(t)){var o=[];return c_(e,o)+","+c_(t,o)+a}return e.id+","+t.id+a}function l_(t,r){if(!(6&e.getCheckFlags(t)))return r(t);for(var n=0,i=t.containingType.types;n<i.length;n++){var a=vs(i[n],t.escapedName),o=a&&l_(a,r);if(o)return o}}function __(e){return e.parent&&32&e.parent.flags?ro(ni(e)):void 0}function d_(e,t,r){if(r>=5&&524288&e.flags){var n=e.symbol;if(n)for(var i=0,a=0;a<r;a++){if(524288&(s=t[a]).flags&&s.symbol===n&&++i>=5)return!0}}if(r>=5&&8388608&e.flags){var o=p_(e);for(i=0,a=0;a<r;a++){var s;if(p_(s=t[a])===o&&++i>=5)return!0}}return!1}function p_(e){for(var t=e;8388608&t.flags;)t=t.objectType;return t}function f_(t,r,n){if(t===r)return-1;var i=24&e.getDeclarationModifierFlagsFromSymbol(t);if(i!==(24&e.getDeclarationModifierFlagsFromSymbol(r)))return 0;if(i){if(Iv(t)!==Iv(r))return 0}else if((16777216&t.flags)!=(16777216&r.flags))return 0;return uy(t)!==uy(r)?0:n(wa(t),wa(r))}function m_(t,r,n,i,a,o){if(t===r)return-1;if(!function(e,t,r){var n=Bg(e),i=Bg(t),a=jg(e),o=jg(t),s=Kg(e),c=Kg(t);return n===i&&a===o&&s===c||!!(r&&a<=o)}(t,r,n))return 0;if(e.length(t.typeParameters)!==e.length(r.typeParameters))return 0;if(r.typeParameters){for(var s=el(t.typeParameters,r.typeParameters),c=0;c<r.typeParameters.length;c++){if(!((m=t.typeParameters[c])===(p=r.typeParameters[c])||o(gl(ic(m),s)||De,ic(p)||De)&&o(gl(ps(m),s)||De,ps(p)||De)))return 0}t=sl(t,s,!0)}var u=-1;if(!i){var l=Ks(t);if(l){var _=Ks(r);if(_){if(!(f=o(l,_)))return 0;u&=f}}}var d=Bg(r);for(c=0;c<d;c++){var p,f,m=Mg(t,c);if(!(f=o(p=Mg(r,c),m)))return 0;u&=f}if(!a){var g=Js(t),y=Js(r);u&=g||y?function(e,t,r){return e&&t&&$c(e,t)?e.type===t.type?-1:e.type&&t.type?r(e.type,t.type):0:0}(g,y,o):o(zs(t),zs(r))}return u}function g_(t){return function(e){for(var t,r=0,n=e;r<n.length;r++){var i=n[r],a=k_(i);if(t||(t=a),a===i||a!==t)return!1}return!0}(t)?Qc(t):e.reduceLeft(t,(function(e,t){return Al(e,t)?t:e}))}function y_(t){return!!(4&e.getObjectFlags(t))&&(t.target===dt||t.target===pt)}function h_(t){return!!(4&e.getObjectFlags(t))&&t.target===pt}function v_(e){return y_(e)?_c(e)[0]:void 0}function b_(e){return y_(e)||!(98304&e.flags)&&Fl(e,xt)}function x_(e){var t=y_(e)?_c(e)[0]:void 0;return t===Te||t===Je}function D_(e){return w_(e)||!!vs(e,"0")}function S_(e){return b_(e)||D_(e)}function T_(e){return!(240512&e.flags)}function E_(e){return!!(109440&e.flags)}function C_(t){return!!(16&t.flags)||(1048576&t.flags?!!(1024&t.flags)||e.every(t.types,E_):E_(t))}function k_(t){return 1024&t.flags?$a(t):128&t.flags?Ne:256&t.flags?Ae:2048&t.flags?Fe:512&t.flags?Me:1048576&t.flags?Qc(e.sameMap(t.types,k_)):t}function N_(t){return 1024&t.flags&&qu(t)?$a(t):128&t.flags&&qu(t)?Ne:256&t.flags&&qu(t)?Ae:2048&t.flags&&qu(t)?Fe:512&t.flags&&qu(t)?Me:1048576&t.flags?Qc(e.sameMap(t.types,N_)):t}function A_(t){return 8192&t.flags?Le:1048576&t.flags?Qc(e.sameMap(t.types,A_)):t}function F_(e,t){return Fy(e,t)||(e=A_(N_(e))),e}function P_(e,t,r,n){e&&E_(e)&&(e=F_(e,t?bv(r,t,n):void 0));return e}function w_(t){return!!(4&e.getObjectFlags(t)&&8&t.target.objectFlags)}function I_(e){return e.target.hasRestElement?_c(e)[e.target.typeParameters.length-1]:void 0}function O_(e){return dc(e)-(e.target.hasRestElement?1:0)}function M_(e){return"0"===e.value.base10Value}function L_(e){for(var t=0,r=0,n=e;r<n.length;r++){t|=R_(n[r])}return t}function R_(e){return 1048576&e.flags?L_(e.types):128&e.flags?""===e.value?128:0:256&e.flags?0===e.value?256:0:2048&e.flags?M_(e)?2048:0:512&e.flags?e===Pe||e===we?512:0:117724&e.flags}function B_(e){return 117632&R_(e)?_p(e,(function(e){return!(117632&R_(e))})):e}function j_(e){return pp(e,K_)}function K_(e){return 4&e.flags?yr:8&e.flags?hr:64&e.flags?vr:e===we||e===Pe||114688&e.flags||128&e.flags&&""===e.value||256&e.flags&&0===e.value||2048&e.flags&&M_(e)?e:Be}function J_(e,t){var r=t&~e.flags&98304;return 0===r?e:Qc(32768===r?[e,Se]:65536===r?[e,Ce]:[e,Se,Ce])}function z_(t){return e.Debug.assert(V),32768&t.flags?t:Qc([t,Se])}function U_(e){return V?function(e){return Dt||(Dt=Ac("NonNullable",524288,void 0)||ge),Dt!==ge?fc(Dt,[e]):Hd(e,2097152)}(e):e}function V_(e){return V?Qc([e,Ee]):e}function q_(e){return e!==Ee}function W_(e){return V?_p(e,q_):e}function G_(e,t){return t?V_(e):e}function H_(t,r){return e.isExpressionOfOptionalChainRoot(r)?U_(t):e.isOptionalChain(r)?W_(t):t}function Y_(t){return!(!t.symbol||0==(7040&t.symbol.flags)||mb(t))||!!(2048&e.getObjectFlags(t)&&Y_(t.source))}function X_(t,r){var n=en(t.flags,t.escapedName,8&e.getCheckFlags(t));return n.declarations=t.declarations,n.parent=t.parent,n.type=r,n.target=t,t.valueDeclaration&&(n.valueDeclaration=t.valueDeclaration),t.nameType&&(n.nameType=t.nameType),n}function Q_(t){if(!(Cd(t)&&32768&e.getObjectFlags(t)))return t;var r=t.regularType;if(r)return r;var n=t,i=function(t,r){for(var n=e.createSymbolTable(),i=0,a=$o(t);i<a.length;i++){var o=a[i],s=wa(o),c=r(s);n.set(o.escapedName,c===s?o:X_(o,c))}return n}(t,Q_),a=hi(n.symbol,i,n.callSignatures,n.constructSignatures,n.stringIndexInfo,n.numberIndexInfo);return a.flags=n.flags,a.objectFlags|=-32769&n.objectFlags,t.regularType=a,a}function $_(e,t,r){return{parent:e,propertyName:t,siblings:r,resolvedProperties:void 0}}function Z_(t){if(!t.resolvedProperties){for(var r=e.createMap(),n=0,i=function e(t){if(!t.siblings){for(var r=[],n=0,i=e(t.parent);n<i.length;n++){var a=i[n];if(Cd(a)){var o=Zo(a,t.propertyName);o&&up(wa(o),(function(e){r.push(e)}))}}t.siblings=r}return t.siblings}(t);n<i.length;n++){var a=i[n];if(Cd(a)&&!(1024&e.getObjectFlags(a)))for(var o=0,s=ts(a);o<s.length;o++){var c=s[o];r.set(c.escapedName,c)}}t.resolvedProperties=e.arrayFrom(r.values())}return t.resolvedProperties}function ed(e,t){if(!(4&e.flags))return e;var r=wa(e),n=nd(r,t&&$_(t,e.escapedName,void 0));return n===r?e:X_(e,n)}function td(e){var t=me.get(e.escapedName);if(t)return t;var r=X_(e,Se);return r.flags|=16777216,me.set(e.escapedName,r),r}function rd(e){return nd(e,void 0)}function nd(t,r){if(786432&e.getObjectFlags(t)){if(void 0===r&&t.widened)return t.widened;var n=void 0;if(98304&t.flags)n=he;else if(Cd(t))n=function(t,r){for(var n=e.createSymbolTable(),i=0,a=$o(t);i<a.length;i++){var o=a[i];n.set(o.escapedName,ed(o,r))}if(r)for(var s=0,c=Z_(r);s<c.length;s++){o=c[s];n.has(o.escapedName)||n.set(o.escapedName,td(o))}var u=Ts(t,0),l=Ts(t,1),_=hi(t.symbol,n,e.emptyArray,e.emptyArray,u&&tc(rd(u.type),u.isReadonly),l&&tc(rd(l.type),l.isReadonly));return _.objectFlags|=1064960&e.getObjectFlags(t),_}(t,r);else if(1048576&t.flags){var i=r||$_(void 0,void 0,t.types),a=e.sameMap(t.types,(function(e){return 98304&e.flags?e:nd(e,i)}));n=Qc(a,e.some(a,Wl)?2:1)}else 2097152&t.flags?n=iu(e.sameMap(t.types,rd)):(y_(t)||w_(t))&&(n=cc(t.target,e.sameMap(_c(t),rd)));return n&&void 0===r&&(t.widened=n),n||t}return t}function id(t,r,n){var i=Ii(rd(r));if(!e.isInJSFile(t)||e.isCheckJsEnabledForFile(e.getSourceFileOfNode(t),K)){var a;switch(t.kind){case 208:case 158:case 157:a=H?e.Diagnostics.Member_0_implicitly_has_an_1_type:e.Diagnostics.Member_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage;break;case 155:var o=t;if(e.isIdentifier(o.name)&&(e.isCallSignatureDeclaration(o.parent)||e.isMethodSignature(o.parent)||e.isFunctionTypeNode(o.parent))&&o.parent.parameters.indexOf(o)>-1&&(gn(o,o.name.escapedText,788968,void 0,o.name.escapedText,!0)||o.name.originalKeywordKind&&e.isTypeNodeKind(o.name.originalKeywordKind))){var s="arg"+o.parent.parameters.indexOf(o);return void $r(H,t,e.Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1,s,e.declarationNameToString(o.name))}a=t.dotDotDotToken?H?e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type:e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage:H?e.Diagnostics.Parameter_0_implicitly_has_an_1_type:e.Diagnostics.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage;break;case 190:if(a=e.Diagnostics.Binding_element_0_implicitly_has_an_1_type,!H)return;break;case 298:return void Xr(t,e.Diagnostics.Function_type_which_lacks_return_type_annotation_implicitly_has_an_0_return_type,i);case 243:case 160:case 159:case 162:case 163:case 200:case 201:if(H&&!t.name)return void Xr(t,1===n?e.Diagnostics.Generator_implicitly_has_yield_type_0_because_it_does_not_yield_any_values_Consider_supplying_a_return_type_annotation:e.Diagnostics.Function_expression_which_lacks_return_type_annotation_implicitly_has_an_0_return_type,i);a=H?1===n?e.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_yield_type:e.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type:e.Diagnostics._0_implicitly_has_an_1_return_type_but_a_better_type_may_be_inferred_from_usage;break;case 185:return void(H&&Xr(t,e.Diagnostics.Mapped_object_type_implicitly_has_an_any_template_type));default:a=H?e.Diagnostics.Variable_0_implicitly_has_an_1_type:e.Diagnostics.Variable_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage}$r(H,t,a,e.declarationNameToString(e.getNameOfDeclaration(t)),i)}}function ad(t,r,n){a&&H&&262144&e.getObjectFlags(r)&&(function t(r){var n=!1;if(262144&e.getObjectFlags(r)){if(1048576&r.flags)if(e.some(r.types,Wl))n=!0;else for(var i=0,a=r.types;i<a.length;i++){t(_=a[i])&&(n=!0)}if(y_(r)||w_(r))for(var o=0,s=_c(r);o<s.length;o++){t(_=s[o])&&(n=!0)}if(Cd(r))for(var c=0,u=$o(r);c<u.length;c++){var l=u[c],_=wa(l);262144&e.getObjectFlags(_)&&(t(_)||Xr(l.valueDeclaration,e.Diagnostics.Object_literal_s_property_0_implicitly_has_an_1_type,Pi(l),Ii(rd(_))),n=!0)}}return n}(r)||id(t,r,n))}function od(e,t,r){var n=Bg(e),i=Bg(t),a=Jg(e),o=Jg(t),s=o?i-1:i,c=a?s:Math.min(n,s),u=Ks(e);if(u){var l=Ks(t);l&&r(u,l)}for(var _=0;_<c;_++)r(Mg(e,_),Mg(t,_));o&&r(Rg(e,c),o)}function sd(e,t,r){var n=Js(e),i=Js(t);n&&i&&$c(n,i)&&n.type&&i.type?r(n.type,i.type):r(zs(e),zs(t))}function cd(e,t,r,n){return ud(e.map(dd),t,r,n||kl)}function ud(e,t,r,n){var i={inferences:e,signature:t,flags:r,compareTypes:n,mapper:function(e){return ld(i,e,!0)},nonFixingMapper:function(e){return ld(i,e,!1)}};return i}function ld(e,t,r){for(var n=e.inferences,i=0;i<n.length;i++){var a=n[i];if(t===a.typeParameter)return r&&!a.isFixed&&(_d(n),a.isFixed=!0),Fd(e,i)}return t}function _d(e){for(var t=0,r=e;t<r.length;t++){var n=r[t];n.isFixed||(n.inferredType=void 0)}}function dd(e){return{typeParameter:e,candidates:void 0,contraCandidates:void 0,inferredType:void 0,priority:void 0,topLevel:!0,isFixed:!1}}function pd(e){return{typeParameter:e.typeParameter,candidates:e.candidates&&e.candidates.slice(),contraCandidates:e.contraCandidates&&e.contraCandidates.slice(),inferredType:e.inferredType,priority:e.priority,topLevel:e.topLevel,isFixed:e.isFixed}}function fd(e){return e&&e.mapper}function md(t){var r=e.getObjectFlags(t);return!!(63176704&t.flags||4&r&&(t.node||e.forEach(_c(t),md))||16&r&&t.symbol&&14384&t.symbol.flags&&t.symbol.declarations||32&r||3145728&t.flags&&!(1024&t.flags)&&function(t){void 0===t.couldContainTypeVariables&&(t.couldContainTypeVariables=e.some(t.types,md));return t.couldContainTypeVariables}(t))}function gd(t,r){return!!(t===r||3145728&t.flags&&e.some(t.types,(function(e){return gd(e,r)}))||16777216&t.flags&&(gd(Au(t),r)||gd(Fu(t),r)))}function yd(t,r,n){var i=t.id+","+r.id+","+n.id;if(lr.has(i))return lr.get(i);lr.set(i,void 0);var a=function(t,r,n){if(!(Ts(t,0)||0!==ts(t).length&&function t(r){return!(1048576&e.getObjectFlags(r))||Cd(r)&&e.some(ts(r),(function(e){return t(wa(e))}))}(t)))return;if(y_(t))return jc(hd(_c(t)[0],r,n),h_(t));if(w_(t)){var i=e.map(_c(t),(function(e){return hd(e,r,n)})),a=4&Go(r)?dc(t)-(t.target.hasRestElement?1:0):t.target.minLength;return Uc(i,a,t.target.hasRestElement,t.target.readonly,t.target.associatedNames)}var o=pi(2064,void 0);return o.source=t,o.mappedType=r,o.constraintType=n,o}(t,r,n);return lr.set(i,a),a}function hd(e,t,r){var n=Su(r.type,Jo(t)),i=Uo(t),a=dd(n);return Sd([a],e,i),Dd(a)||De}function vd(t,r,n,a){var o,s,c,u,l,_,d;return i(this,(function(i){switch(i.label){case 0:o=1048576&r.flags?es(r):ts(r),s=0,c=o,i.label=1;case 1:return s<c.length?(u=c[s],!n&&(16777216&u.flags||48&e.getCheckFlags(u))?[3,5]:(l=vs(t,u.escapedName))?[3,3]:[4,u]):[3,6];case 2:return i.sent(),[3,5];case 3:return a&&109440&(_=wa(u)).flags?1&(d=wa(l)).flags||Vu(d)===Vu(_)?[3,5]:[4,u]:[3,5];case 4:i.sent(),i.label=5;case 5:return s++,[3,1];case 6:return[2]}}))}function bd(e,t,r,n){var i=vd(e,t,r,n).next();if(!i.done)return i.value}function xd(e,t){return w_(e)&&w_(t)&&function(e,t){return t.target.minLength>e.target.minLength||!I_(t)&&(!!I_(e)||O_(t)<O_(e))}(e,t)||!!bd(e,t,!1,!0)&&!!bd(t,e,!1,!0)}function Dd(e){return e.candidates?Qc(e.candidates,2):e.contraCandidates?iu(e.contraCandidates):void 0}function Sd(t,r,n,i,a){var o,s;void 0===i&&(i=0),void 0===a&&(a=!1);var c,u=!1,l=256,_=!0;function d(r,o){if(md(o)){if(r===be){var s=c;return c=r,d(o,o),void(c=s)}if(r.aliasSymbol&&r.aliasTypeArguments&&r.aliasSymbol===o.aliasSymbol)g(r.aliasTypeArguments,o.aliasTypeArguments,n_(r.aliasSymbol));else if(r===o&&3145728&r.flags)for(var y=0,x=r.types;y<x.length;y++){var D=x[y];d(D,D)}else{if(1048576&o.flags){var S=m(1048576&r.flags?r.types:[r],o.types,Td),T=m(S[0],S[1],Ed),E=T[0];if(0===(k=T[1]).length)return;if(o=Qc(k),0===E.length)return void p(r,o,1);r=Qc(E)}else if(2097152&o.flags&&e.some(o.types,(function(e){return!!h(e)||Xo(e)&&!!h(_l(e)||Be)}))){if(!(1048576&r.flags)){var C=m(2097152&r.flags?r.types:[r],o.types,El),k=(E=C[0],C[1]);if(0===E.length||0===k.length)return;r=iu(E),o=iu(k)}}else 41943040&o.flags&&(o=ku(o));if(8650752&o.flags){if(1048576&e.getObjectFlags(r)||r===je||16&i&&(r===ve||r===bt))return;var N=h(o);if(N){if(!N.isFixed){if((void 0===N.priority||i<N.priority)&&(N.candidates=void 0,N.contraCandidates=void 0,N.topLevel=!0,N.priority=i),i===N.priority){var A=c||r;a&&!u?e.contains(N.contraCandidates,A)||(N.contraCandidates=e.append(N.contraCandidates,A),_d(t)):e.contains(N.candidates,A)||(N.candidates=e.append(N.candidates,A),_d(t))}!(16&i)&&262144&o.flags&&N.topLevel&&!gd(n,o)&&(N.topLevel=!1,_d(t))}return void(l=Math.min(l,i))}var F=vu(o,!1);if(F!==o)f(r,F,d);else if(8388608&o.flags){var P=vu(o.indexType,!1);if(63176704&P.flags){var w=bu(vu(o.objectType,!1),P,!1);w&&w!==o&&f(r,w,d)}}}if(!(4&e.getObjectFlags(r)&&4&e.getObjectFlags(o)&&(r.target===o.target||y_(r)&&y_(o)))||r.node&&o.node)if(4194304&r.flags&&4194304&o.flags)a=!a,d(r.type,o.type),a=!a;else if((C_(r)||4&r.flags)&&4194304&o.flags){var I=function(t){var r=e.createSymbolTable();up(t,(function(t){if(128&t.flags){var n=e.escapeLeadingUnderscores(t.value),i=en(4,n);i.type=he,t.symbol&&(i.declarations=t.symbol.declarations,i.valueDeclaration=t.symbol.valueDeclaration),r.set(n,i)}}));var n=4&t.flags?tc(Ge,!1):void 0;return hi(void 0,r,e.emptyArray,e.emptyArray,n,void 0)}(r);a=!a,p(I,o.type,32),a=!a}else if(8388608&r.flags&&8388608&o.flags)d(r.objectType,o.objectType),d(r.indexType,o.indexType);else if(16777216&r.flags&&16777216&o.flags)d(r.checkType,o.checkType),d(r.extendsType,o.extendsType),d(Au(r),Au(o)),d(Fu(r),Fu(o));else if(16777216&o.flags&&!a){v(r,[Au(o),Fu(o)],o.flags)}else if(3145728&o.flags)v(r,o.types,o.flags);else if(1048576&r.flags)for(var O=0,M=r.types;O<M.length;O++){d(M[O],o)}else{if(!(64&i&&65273856&r.flags)){var L=ms(r);if(L!==r&&_&&!(2621440&L.flags))return _=!1,d(L,o);r=L}2621440&r.flags&&f(r,o,b)}else g(_c(r),_c(o),a_(r.target))}}}function p(e,t,r){var n=i;i|=r,d(e,t),i=n}function f(t,r,n){var i=t.id+","+r.id,a=s&&s.get(i);if(void 0===a){(s||(s=e.createMap())).set(i,-1);var o=l;l=256,n(t,r),s.set(i,l),l=Math.min(l,o)}else l=Math.min(l,a)}function m(t,r,n){for(var i,a,o=0,s=r;o<s.length;o++)for(var c=s[o],u=0,l=t;u<l.length;u++){var _=l[u];n(_,c)&&(d(_,c),i=e.appendIfUnique(i,_),a=e.appendIfUnique(a,c))}return[i?e.filter(t,(function(t){return!e.contains(i,t)})):t,a?e.filter(r,(function(t){return!e.contains(a,t)})):r]}function g(e,t,r){for(var n=e.length<t.length?e.length:t.length,i=0;i<n;i++)i<r.length&&2==(7&r[i])?y(e[i],t[i]):d(e[i],t[i])}function y(e,t){q||128&i?(a=!a,d(e,t),a=!a):d(e,t)}function h(e){if(8650752&e.flags)for(var r=0,n=t;r<n.length;r++){var i=n[r];if(e===i.typeParameter)return i}}function v(t,r,n){var a=0;if(1048576&n){for(var o=void 0,s=1048576&t.flags?t.types:[t],c=new Array(s.length),u=!1,_=0,f=r;_<f.length;_++){if(h(T=f[_]))o=T,a++;else for(var m=0;m<s.length;m++){var g=l;l=256,d(s[m],T),l===i&&(c[m]=!0),u=u||-1===l,l=Math.min(l,g)}}if(0===a){var y=function(t){for(var r,n=0,i=t;n<i.length;n++){var a=i[n],o=2097152&a.flags&&e.find(a.types,(function(e){return!!h(e)}));if(!o||r&&o!==r)return;r=o}return r}(r);return void(y&&p(t,y,1))}if(1===a&&!u){var v=e.flatMap(s,(function(e,t){return c[t]?void 0:e}));if(v.length)return void d(Qc(v),o)}}else for(var b=0,x=r;b<x.length;b++){h(T=x[b])?a++:d(t,T)}if(2097152&n?1===a:a>0)for(var D=0,S=r;D<S.length;D++){var T;h(T=S[D])&&p(t,T,1)}}function b(t,r){var n=524288&r.flags&&!(16&e.getObjectFlags(r)&&r.symbol&&32&r.symbol.flags)?r.symbol:void 0;if(n){if(e.contains(o,n))return void(l=-1);(o||(o=[])).push(n),x(t,r),o.pop()}else x(t,r)}function x(t,r){if(4&e.getObjectFlags(t)&&4&e.getObjectFlags(r)&&(t.target===r.target||y_(t)&&y_(r)))g(_c(t),_c(r),a_(t.target));else{if(Xo(t)&&Xo(r)&&(d(zo(t),zo(r)),d(Uo(t),Uo(r))),32&e.getObjectFlags(r))if(function t(r,n,i){if(1048576&i.flags){for(var a=!1,o=0,s=i.types;o<s.length;o++){a=t(r,n,s[o])||a}return a}if(4194304&i.flags){var c=h(i.type);if(c&&!c.isFixed){var u=yd(r,n,i);u&&p(u,c.typeParameter,1048576&e.getObjectFlags(r)?4:2)}return!0}if(262144&i.flags){p(lu(r),i,8);var l=rs(i);if(l&&t(r,n,l))return!0;var _=e.map(ts(r),wa),f=Es(r,0),m=uu(r),g=m&&m.type;return d(Qc(e.append(e.append(_,f),g)),Uo(n)),!0}return!1}(t,r,zo(r)))return;xd(t,r)||(!function(e,t){if(y_(e)||w_(e)){if(w_(t)){for(var r=w_(e)?O_(e):0,n=O_(t),i=w_(e)?I_(e):v_(e),a=I_(t),o=n<r||i?n:r,s=0;s<o;s++)d(s<r?_c(e)[s]:i,_c(t)[s]);if(a){var c=o<r?_c(e).slice(o,r):[];i&&c.push(i),c.length&&d(Qc(c),a)}return}if(y_(t))return void T(e,t)}for(var u=$o(t),l=0,_=u;l<_.length;l++){var p=_[l],f=vs(e,p.escapedName);f&&d(wa(f),wa(p))}}(t,r),D(t,r,0),D(t,r,1),T(t,r))}}function D(t,r,n){for(var i=xs(t,n),a=xs(r,n),o=i.length,s=a.length,c=o<s?o:s,u=!!(1048576&e.getObjectFlags(t)),l=0;l<c;l++)S(Qs(i[o-c+l]),Qs(a[s-c+l]),u)}function S(e,t,r){if(!r){var n=u,i=t.declaration?t.declaration.kind:0;u=u||160===i||159===i||161===i,od(e,t,y),u=n}sd(e,t,d)}function T(e,t){var r=Es(t,0);r&&((n=Es(e,0)||Cs(e,0))&&d(n,r));var n,i=Es(t,1);i&&((n=Es(e,1)||Es(e,0)||Cs(e,1))&&d(n,i))}d(r,n)}function Td(e,t){return El(e,t)||!!(384&e.flags)&&El(k_(e),t)}function Ed(e,t){return!!(524288&e.flags&&524288&t.flags&&e.symbol&&e.symbol===t.symbol||e.aliasSymbol&&e.aliasTypeArguments&&e.aliasSymbol===t.aliasSymbol)}function Cd(t){return!!(128&e.getObjectFlags(t))}function kd(t){return!!(65664&e.getObjectFlags(t))}function Nd(t){return 56&t.priority?iu(t.contraCandidates):function(t){return e.reduceLeft(t,(function(e,t){return Al(t,e)?t:e}))}(t.contraCandidates)}function Ad(t,r){var n=function(t){if(t.length>1){var r=e.filter(t,kd);if(r.length){var n=Qc(r,2);return e.concatenate(e.filter(t,(function(e){return!kd(e)})),[n])}}return t}(t.candidates),i=function(e){var t=ns(e);return!!t&&fy(16777216&t.flags?as(t):t,4325372)}(t.typeParameter),a=!i&&t.topLevel&&(t.isFixed||!gd(zs(r),t.typeParameter)),o=i?e.sameMap(n,Vu):a?e.sameMap(n,N_):n;return rd(56&t.priority?Qc(o,2):function(t){if(!V)return g_(t);var r=e.filter(t,(function(e){return!(98304&e.flags)}));return r.length?J_(g_(r),98304&L_(t)):Qc(t,2)}(o))}function Fd(t,r){var n=t.inferences[r];if(!n.inferredType){var i=void 0,a=t.signature;if(a){var o=n.candidates?Ad(n,a):void 0;if(n.contraCandidates){var s=Nd(n);i=!o||131072&o.flags||!Al(o,s)?s:o}else if(o)i=o;else if(1&t.flags)i=je;else{var c=ps(n.typeParameter);c&&(i=gl(c,rl(function(t,r){return function(n){return e.findIndex(t.inferences,(function(e){return e.typeParameter===n}))>=r?De:n}}(t,r),t.nonFixingMapper)))}}else i=Dd(n);n.inferredType=i||Pd(!!(2&t.flags));var u=ns(n.typeParameter);if(u){var l=gl(u,t.nonFixingMapper);i&&t.compareTypes(i,Do(l,i))||(n.inferredType=i=l)}}return n.inferredType}function Pd(e){return e?he:De}function wd(e){for(var t=[],r=0;r<e.inferences.length;r++)t.push(Fd(e,r));return t}function Id(t){switch(t.escapedText){case"document":case"console":return e.Diagnostics.Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_include_dom;case"$":return K.types?e.Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_types_Slashjquery_and_then_add_jquery_to_the_types_field_in_your_tsconfig:e.Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_types_Slashjquery;case"describe":case"suite":case"it":case"test":return K.types?e.Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_types_Slashjest_or_npm_i_types_Slashmocha_and_then_add_jest_or_mocha_to_the_types_field_in_your_tsconfig:e.Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_types_Slashjest_or_npm_i_types_Slashmocha;case"process":case"require":case"Buffer":case"module":return K.types?e.Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_types_Slashnode_and_then_add_node_to_the_types_field_in_your_tsconfig:e.Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_types_Slashnode;case"Map":case"Set":case"Promise":case"Symbol":case"WeakMap":case"WeakSet":case"Iterator":case"AsyncIterator":return e.Diagnostics.Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_es2015_or_later;default:return 280===t.parent.kind?e.Diagnostics.No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer:e.Diagnostics.Cannot_find_name_0}}function Od(t){var r=dn(t);return r.resolvedSymbol||(r.resolvedSymbol=!e.nodeIsMissing(t)&&gn(t,t.escapedText,1160127,Id(t),t,!e.isWriteOnlyAccess(t),!1,e.Diagnostics.Cannot_find_name_0_Did_you_mean_1)||ge),r.resolvedSymbol}function Md(t){return!!e.findAncestor(t,(function(e){return 171===e.kind||75!==e.kind&&152!==e.kind&&"quit"}))}function Ld(t,r){switch(r.kind){case 199:case 217:return Ld(t,r.expression)}switch(t.kind){case 75:return 75===r.kind&&Od(t)===Od(r)||(241===r.kind||190===r.kind)&&si(Od(t))===ri(r);case 103:return 103===r.kind;case 101:return 101===r.kind;case 217:case 199:return Ld(t.expression,r);case 193:case 194:return e.isAccessExpression(r)&&Rd(t)===Rd(r)&&Ld(t.expression,r.expression)}return!1}function Rd(t){return 193===t.kind?t.name.escapedText:e.isStringOrNumericLiteralLike(t.argumentExpression)?e.escapeLeadingUnderscores(t.argumentExpression.text):void 0}function Bd(t,r){for(;e.isAccessExpression(t);)if(Ld(t=t.expression,r))return!0;return!1}function jd(t,r){for(;e.isOptionalChain(t);)if(Ld(t=t.expression,r))return!0;return!1}function Kd(t,r){var n;return e.isAccessExpression(r)&&Bd(t,r.expression)&&void 0!==(n=Rd(r))&&Jd(function t(r){if(75===r.kind)return wa(Od(r));if(e.isAccessExpression(r)){var n=t(r.expression);if(n){var i=Rd(r);return void 0!==i?Xi(n,i):void 0}}return}(r.expression),n)}function Jd(t,r){if(t&&1048576&t.flags){var n=ys(t,r);if(n&&2&e.getCheckFlags(n))return void 0===n.isDiscriminantProperty&&(n.isDiscriminantProperty=192==(192&n.checkFlags)&&function(e){return!!(1048576&e.flags&&(1040&e.flags||!yu(e)))}(wa(n))),!!n.isDiscriminantProperty}return!1}function zd(e,t){for(var r,n=0,i=e;n<i.length;n++){var a=i[n];if(Jd(t,a.escapedName)){if(r){r.push(a);continue}r=[a]}}return r}function Ud(e,t){return Ld(e,t)||Bd(e,t)}function Vd(e){return(!e.id||e.id<0)&&(e.id=d,d++),e.id}function qd(e,t){if(e!==t){if(131072&t.flags)return t;var r=_p(e,(function(e){return function(e,t){if(!(1048576&e.flags))return Fl(e,t);for(var r=0,n=e.types;r<n.length;r++){if(Fl(n[r],t))return!0}return!1}(t,e)}));if(512&t.flags&&qu(t)&&(r=pp(r,Uu)),Fl(t,r))return r}return e}function Wd(e){var t=Qo(e);return!!(t.callSignatures.length||t.constructSignatures.length||t.members.get("bind")&&Al(e,ut))}function Gd(t){var r=t.flags;if(4&r)return V?16317953:16776705;if(128&r){var n=""===t.value;return V?n?12123649:7929345:n?12582401:16776705}if(40&r)return V?16317698:16776450;if(256&r){var i=0===t.value;return V?i?12123394:7929090:i?12582146:16776450}if(64&r)return V?16317188:16775940;if(2048&r){i=M_(t);return V?i?12122884:7928580:i?12581636:16775940}return 16&r?V?16316168:16774920:528&r?V?t===Pe||t===we?12121864:7927560:t===Pe||t===we?12580616:16774920:524288&r?16&e.getObjectFlags(t)&&Wl(t)?V?16318463:16777215:Wd(t)?V?7880640:16728e3:V?7888800:16736160:49152&r?9830144:65536&r?9363232:12288&r?V?7925520:16772880:67108864&r?V?7888800:16736160:63176704&r?Gd(cs(t)||De):3145728&r?function(e){for(var t=0,r=0,n=e;r<n.length;r++){t|=Gd(n[r])}return t}(t.types):16777215}function Hd(e,t){return _p(e,(function(e){return 0!=(Gd(e)&t)}))}function Yd(e,t){if(t){var r=Ky(t);return Qc([Hd(e,524288),r])}return e}function Xd(e,t){var r=ou(t);if(!_o(r))return xe;var n=yo(r);return Jp(Xi(e,n),t)||Mf(n)&&Es(e,1)||Es(e,0)||xe}function Qd(e,t){return lp(e,D_)&&function(e,t){var r=Xi(e,""+t);return r||(lp(e,w_)?pp(e,(function(e){return I_(e)||Se})):void 0)}(e,t)||Zh(65,e,Se,void 0)||xe}function $d(e){return jc(Zh(65,e,Se,void 0)||xe)}function Zd(e){return 208===e.parent.kind&&e.parent.left===e||231===e.parent.kind&&e.parent.initializer===e}function ep(e){return Xd(tp(e.parent),e.name)}function tp(e){var t=e.parent;switch(t.kind){case 230:return Ne;case 231:return $h(t.expression,t.awaitModifier)||xe;case 208:return function(e){return 191===e.parent.kind&&Zd(e.parent)||279===e.parent.kind&&Zd(e.parent.parent)?Yd(tp(e),e.right):Ky(e.right)}(t);case 202:return Se;case 191:return function(e,t){return Qd(tp(e),e.elements.indexOf(t))}(t,e);case 212:return function(e){return $d(tp(e.parent))}(t);case 279:return ep(t);case 280:return function(e){return Yd(ep(e),e.objectAssignmentInitializer)}(t)}return xe}function rp(e){return e.initializer?function(e){return dn(e).resolvedType||Ky(e)}(e.initializer):230===e.parent.parent.kind?Ne:231===e.parent.parent.kind&&$h(e.parent.parent.expression,e.parent.parent.awaitModifier)||xe}function np(e){return 241===e.kind?rp(e):function(e){var t=e.parent,r=np(t.parent);return Yd(188===t.kind?Xd(r,e.propertyName||e.name):e.dotDotDotToken?$d(r):Qd(r,t.elements.indexOf(e)),e.initializer)}(e)}function ip(e){switch(e.kind){case 199:return ip(e.expression);case 208:switch(e.operatorToken.kind){case 62:return ip(e.left);case 27:return ip(e.right)}}return e}function ap(e){return 275===e.kind?Vu(Ky(e.expression)):Be}function op(e){var t=dn(e);if(!t.switchTypes){t.switchTypes=[];for(var r=0,n=e.caseBlock.clauses;r<n.length;r++){var i=n[r];t.switchTypes.push(ap(i))}}return t.switchTypes}function sp(t){for(var r=[],n=0,i=t.caseBlock.clauses;n<i.length;n++){var a=i[n];if(275===a.kind){if(e.isStringLiteralLike(a.expression)){r.push(a.expression.text);continue}return e.emptyArray}r.push(void 0)}return r}function cp(e,t){return e===t||1048576&t.flags&&function(e,t){if(1048576&e.flags){for(var r=0,n=e.types;r<n.length;r++){var i=n[r];if(!Wc(t.types,i))return!1}return!0}if(1024&e.flags&&$a(e)===t)return!0;return Wc(t.types,e)}(e,t)}function up(t,r){return 1048576&t.flags?e.forEach(t.types,r):r(t)}function lp(t,r){return 1048576&t.flags?e.every(t.types,r):r(t)}function _p(t,r){if(1048576&t.flags){var n=t.types,i=e.filter(n,r);return i===n?t:Zc(i,t.objectFlags)}return r(t)?t:Be}function dp(e){return 1048576&e.flags?e.types.length:1}function pp(e,t,r){if(131072&e.flags)return e;if(!(1048576&e.flags))return t(e);for(var n,i=0,a=e.types;i<a.length;i++){var o=t(a[i]);o&&(n?n.push(o):n=[o])}return n&&Qc(n,r?0:1)}function fp(e,t){return _p(e,(function(e){return 0!=(e.flags&t)}))}function mp(e,t){return cp(Ne,e)&&fy(t,128)||cp(Ae,e)&&fy(t,256)||cp(Fe,e)&&fy(t,2048)?pp(e,(function(e){return 4&e.flags?fp(t,132):8&e.flags?fp(t,264):64&e.flags?fp(t,2112):e})):e}function gp(e){return 0===e.flags}function yp(e){return 0===e.flags?e.type:e}function hp(e,t){return t?{flags:0,type:e}:e}function vp(e){return fe[e.id]||(fe[e.id]=function(e){var t=pi(256);return t.elementType=e,t}(e))}function bp(e,t){var r=k_(Jy(t));return cp(r,e.elementType)?e:vp(Qc([e.elementType,r]))}function xp(e){return e.finalArrayType||(e.finalArrayType=131072&(t=e.elementType).flags?bt:jc(1048576&t.flags?Qc(t.types,2):t));var t}function Dp(t){return 256&e.getObjectFlags(t)?xp(t):t}function Sp(t){return 256&e.getObjectFlags(t)?t.elementType:Be}function Tp(t,r){return function(t){for(var r=!1,n=0,i=t;n<i.length;n++){var a=i[n];if(!(131072&a.flags)){if(!(256&e.getObjectFlags(a)))return!1;r=!0}}return r}(t)?vp(Qc(e.map(t,Sp))):Qc(e.sameMap(t,Dp),r)}function Ep(t){var r=function e(t){var r=t.parent;return 199===r.kind||208===r.kind&&62===r.operatorToken.kind&&r.left===t||208===r.kind&&27===r.operatorToken.kind&&r.right===t?e(r):t}(t),n=r.parent,i=193===n.kind&&("length"===n.name.escapedText||195===n.parent.kind&&e.isPushOrUnshiftIdentifier(n.name)),a=194===n.kind&&n.expression===r&&208===n.parent.kind&&62===n.parent.operatorToken.kind&&n.parent.left===n&&!e.isAssignmentTarget(n.parent)&&my(Ky(n.argumentExpression),296);return i||a}function Cp(t,r){if(8752&t.flags)return wa(t);if(7&t.flags){if((n=t.valueDeclaration)&&(241===n.kind||155===n.kind||158===n.kind||157===n.kind)&&e.getEffectiveTypeAnnotationNode(n))return wa(t);r&&t.valueDeclaration&&e.addRelatedInfo(r,e.createDiagnosticForNode(t.valueDeclaration,e.Diagnostics._0_is_declared_here,Pi(t)))}var n}function kp(t,r){if(!(16777216&t.flags))switch(t.kind){case 75:var n=si(Od(t));return Cp(2097152&n.flags?Mn(n):n,r);case 103:return function(t){var r=e.getThisContainer(t,!1);if(e.isFunctionLike(r)){var n=Ls(r);if(n.thisParameter)return Cp(n.thisParameter)}if(e.isClassLike(r.parent)){var i=ri(r.parent);return e.hasModifier(r,32)?wa(i):ro(i).thisType}}(t);case 193:var i=kp(t.expression,r),a=i&&vs(i,t.name.escapedText);return a&&Cp(a,r);case 199:return kp(t.expression,r)}}function Np(t){var r=dn(t),n=r.effectsSignature;if(void 0===n){var i=void 0;225===t.parent.kind?i=kp(t.expression,void 0):101!==t.expression.kind&&(i=e.isOptionalChain(t)?gm(H_(zy(t.expression),t.expression),t.expression):lm(t.expression));var a=xs(i&&ms(i)||De,0),o=1!==a.length||a[0].typeParameters?e.some(a,Ap)?Dg(t):void 0:a[0];n=r.effectsSignature=o&&Ap(o)?o:Zt}return n===Zt?void 0:n}function Ap(e){return!!(Js(e)||e.declaration&&131072&(Us(e.declaration)||De).flags)}function Fp(e){var t=Ip(e,!1);return qt=e,Wt=t,t}function Pp(e){return!(4096&e.flags&&e.lock.locked)&&Ip(e,!1)}function wp(t){var r=e.skipParentheses(t);return 90===r.kind||208===r.kind&&(55===r.operatorToken.kind&&(wp(r.left)||wp(r.right))||56===r.operatorToken.kind&&wp(r.left)&&wp(r.right))}function Ip(t,r){for(;;){if(t===qt)return Wt;var n=t.flags;if(2048&n){if(!r){var i=Vd(t),a=Mr[i];return void 0!==a?a:Mr[i]=Ip(t,!0)}r=!1}if(4464&n)t=t.antecedent;else if(512&n){var o=Np(t.node);if(o){var s=Js(o);if(s&&3===s.kind){var c=t.node.arguments[s.parameterIndex];if(c&&wp(c))return!1}if(131072&zs(o).flags)return!1}t=t.antecedent}else{if(4&n)return e.some(t.antecedents,Pp);if(8&n)t=t.antecedents[0];else{if(!(128&n)){if(8192&n){qt=void 0,t.locked=!0;var u=Ip(t.antecedent,!1);return t.locked=!1,u}return!(1&n)}if(t.clauseStart===t.clauseEnd&&ey(t.switchStatement))return!1;t=t.antecedent}}}}function Op(t,r,n,i,a){var o;void 0===n&&(n=r);var s=!1,c=0;if(mr)return xe;if(!t.flowNode||!a&&!(133970943&r.flags))return r;gr++;var u=fr,l=yp(p(t.flowNode));fr=u;var _=256&e.getObjectFlags(l)&&Ep(t)?bt:Dp(l);return _===ze||t.parent&&217===t.parent.kind&&131072&Hd(_,2097152).flags?r:_;function d(){return s?o:(s=!0,o=function e(t,r,n,i){switch(t.kind){case 75:var a=Od(t);return a!==ge?(i?N(i):"-1")+"|"+qc(r)+"|"+qc(n)+"|"+(jp(t)?"@":"")+A(a):void 0;case 103:return"0";case 217:case 199:return e(t.expression,r,n,i);case 193:case 194:var o=Rd(t);if(void 0!==o){var s=e(t.expression,r,n,i);return s&&s+"."+o}}}(t,r,n,i))}function p(a){if(2e3===c)return mr=!0,function(t){var r=e.findAncestor(t,e.isFunctionOrModuleBlock),n=e.getSourceFileOfNode(t),i=e.getSpanOfTokenAtPosition(n,r.statements.pos);jr.add(e.createFileDiagnostic(n,i.start,i.length,e.Diagnostics.The_containing_function_or_module_body_is_too_large_for_control_flow_analysis))}(t),xe;for(c++;;){var o=a.flags;if(2048&o)for(var s=u;s<fr;s++)if(Ir[s]===a)return c--,Or[s];var l=void 0;if(8192&o)a.locked=!0,l=p(a.antecedent),a.locked=!1;else{if(4096&o){a=a.antecedent;continue}if(16&o){if(!(l=m(a))){a=a.antecedent;continue}}else if(512&o){if(!(l=g(a))){a=a.antecedent;continue}}else if(96&o)l=h(a);else if(128&o)l=v(a);else if(12&o){if(1===a.antecedents.length){a=a.antecedents[0];continue}l=4&o?b(a):x(a)}else if(256&o){if(!(l=y(a))){a=a.antecedent;continue}}else if(2&o){var _=a.node;if(_&&_!==i&&193!==t.kind&&194!==t.kind&&103!==t.kind){a=_.flowNode;continue}l=n}else l=Jh(r)}return 2048&o&&(Ir[fr]=a,Or[fr]=l,fr++),c--,l}}function f(e){var r=e.node;if(16384&e.flags){var n=Ar[N(r)];if(n)return n}var i=gr,a=Jp(241===r.kind||190===r.kind?np(r):tp(r),t);return gr!==i&&pr===dr&&(e.flags|=16384,Ar[N(r)]=a),a}function m(n){var i=n.node;if(Ld(t,i)){if(!Fp(n))return ze;if(2===e.getAssignmentTargetKind(i)){var a=p(n.antecedent);return hp(k_(yp(a)),gp(a))}if(r===ve||r===bt){if(function(e){return 241===e.kind&&e.initializer&&oa(e.initializer)||190!==e.kind&&208===e.parent.kind&&oa(e.parent.right)}(i))return vp(Be);var o=k_(f(n));return Fl(o,r)?o:vt}return 1048576&r.flags?qd(r,f(n)):r}if(Bd(t,i)){if(!Fp(n))return ze;if(e.isVariableDeclaration(i)&&(e.isInJSFile(i)||e.isVarConst(i))){var s=e.getDeclaredExpandoInitializer(i);if(s&&(200===s.kind||201===s.kind))return p(n.antecedent)}return r}if(e.isVariableDeclaration(i)&&230===i.parent.parent.kind&&Ld(t,i.parent.parent.expression))return dm(yp(p(n.antecedent)))}function g(t){var r=Np(t.node);if(r){var n=Js(r);if(n&&(2===n.kind||3===n.kind)){var i=p(t.antecedent),a=yp(i),o=n.type?B(a,n,t.node,!0):3===n.kind&&n.parameterIndex>=0&&n.parameterIndex<t.node.arguments.length?function t(r,n){var i=e.skipParentheses(n);if(90===i.kind)return ze;if(208===i.kind){if(55===i.operatorToken.kind)return t(t(r,i.left),i.right);if(56===i.operatorToken.kind)return Qc([t(r,i.left),t(r,i.right)])}return j(r,i,!0)}(a,t.node.arguments[n.parameterIndex]):a;return o===a?i:hp(o,gp(i))}if(131072&zs(r).flags)return ze}}function y(n){if(r===ve||r===bt){var i=n.node,a=195===i.kind?i.expression.expression:i.left.expression;if(Ld(t,ip(a))){var o=p(n.antecedent),s=yp(o);if(256&e.getObjectFlags(s)){var c=s;if(195===i.kind)for(var u=0,l=i.arguments;u<l.length;u++){c=bp(c,l[u])}else my(Jy(i.left.argumentExpression),296)&&(c=bp(c,i.right));return c===s?o:hp(c,gp(o))}return o}}}function h(e){var t=p(e.antecedent),r=yp(t);if(131072&r.flags)return t;var n=0!=(32&e.flags),i=Dp(r),a=j(i,e.node,n);if(a===i)return t;var o=gp(t);return hp(o&&131072&a.flags?je:a,o)}function v(n){var i=n.switchStatement.expression,a=p(n.antecedent),o=yp(a);if(Ld(t,i))o=M(o,n.switchStatement,n.clauseStart,n.clauseEnd);else if(203===i.kind&&Ld(t,i.expression))o=function(t,r,n,i){var a=sp(r);if(!a.length)return t;var o,s,c=e.findIndex(a,(function(e){return void 0===e})),u=n===i||c>=n&&c<i;if(c>-1){var l=a.filter((function(e){return void 0!==e})),_=c<n?n-1:n,d=c<i?i-1:i;o=l.slice(_,d),s=Zg(_,d,l,u)}else o=a.slice(n,i),s=Zg(n,i,a,u);if(u)return _p(t,(function(e){return(Gd(e)&s)===s}));var p=Hd(Qc(o.map((function(e){return function(e,t){switch(t){case"function":return 1&e.flags?e:ut;case"object":return 2&e.flags?Qc([Ue,Ce]):e;default:return Jr.get(t)||e}}(t,e)}))),s);1048576&p.flags&&(p=qd(p,us(t)));return Hd(pp(t,(f=p,function(e){if(Al(f,e))return f;if(63176704&e.flags){var t=cs(e)||he;if(Al(f,t))return iu([e,f])}return e})),s);var f}(o,n.switchStatement,n.clauseStart,n.clauseEnd);else if(V&&(jd(i,t)?o=O(o,n.switchStatement,n.clauseStart,n.clauseEnd,(function(e){return!(163840&e.flags)})):203===i.kind&&jd(i.expression,t)&&(o=O(o,n.switchStatement,n.clauseStart,n.clauseEnd,(function(e){return!(131072&e.flags||128&e.flags&&"undefined"===e.value)})))),T(i,o))o=E(o,i,(function(e){return M(e,n.switchStatement,n.clauseStart,n.clauseEnd)}));else if(Kd(t,i))o=r;else if(n.clauseStart===n.clauseEnd&&ey(n.switchStatement))return ze;return hp(o,gp(a))}function b(t){for(var i=[],a=!1,o=!1,s=0,c=t.antecedents;s<c.length;s++){var u=c[s];if(!(4096&u.flags&&u.lock.locked)){var l=p(u),_=yp(l);if(_===r&&r===n)return _;e.pushIfUnique(i,_),cp(_,r)||(a=!0),gp(l)&&(o=!0)}}return hp(Tp(i,a?2:1),o)}function x(t){var n=Vd(t),i=Nr[n]||(Nr[n]=e.createMap()),a=d();if(!a)return r;var o=i.get(a);if(o)return o;for(var s=dr;s<pr;s++)if(Fr[s]===t&&Pr[s]===a&&wr[s].length)return hp(Tp(wr[s],1),!0);for(var c,u=[],l=!1,_=0,f=t.antecedents;_<f.length;_++){var m=f[_],g=void 0;if(c){Fr[pr]=t,Pr[pr]=a,wr[pr]=u,pr++,g=p(m),pr--;var y=i.get(a);if(y)return y}else g=c=p(m);var h=yp(g);if(e.pushIfUnique(u,h),cp(h,r)||(l=!0),h===r)break}var v=Tp(u,l?2:1);return gp(c)?hp(v,!0):(i.set(a,v),v)}function T(r,n){if(!(1048576&n.flags&&e.isAccessExpression(r)))return!1;var i=Rd(r);return void 0!==i&&(Ld(t,r.expression)&&Jd(n,i))}function E(e,t,r){var n=Rd(t);if(void 0===n)return e;var i=Xi(e,n),a=i&&r(i);return i===a?e:_p(e,(function(e){return wl(function(e,t){return Xi(e,t)||Mf(t)&&Es(e,1)||Es(e,0)||De}(e,n),a)}))}function C(e,n,i){return Ld(t,n)?Hd(e,i?4194304:8388608):(V&&i&&jd(n,t)&&(e=Hd(e,2097152)),T(n,r)?E(e,n,(function(e){return Hd(e,i?4194304:8388608)})):Kd(t,n)?r:e)}function k(t,r,n){if(1572864&t.flags||hu(t)){var i=e.escapeLeadingUnderscores(r.text);return _p(t,(function(e){return function(e,t,r){if(Ts(e,0))return!0;var n=vs(e,t);return n?!!(16777216&n.flags)||r:!r}(e,i,n)}))}return t}function F(n,i,a){switch(i.operatorToken.kind){case 62:return C(j(n,i.right,a),i.left,a);case 34:case 35:case 36:case 37:var o=i.operatorToken.kind,s=ip(i.left),c=ip(i.right);if(203===s.kind&&e.isStringLiteralLike(c))return I(n,s,o,c,a);if(203===c.kind&&e.isStringLiteralLike(s))return I(n,c,o,s,a);if(Ld(t,s))return w(n,o,c,a);if(Ld(t,c))return w(n,o,s,a);if(V&&(jd(s,t)?n=P(n,o,c,a):jd(c,t)&&(n=P(n,o,s,a))),T(s,r))return E(n,s,(function(e){return w(e,o,c,a)}));if(T(c,r))return E(n,c,(function(e){return w(e,o,s,a)}));if(Kd(t,s)||Kd(t,c))return r;break;case 97:return function(n,i,a){var o=ip(i.left);if(!Ld(t,o))return a&&V&&jd(o,t)?Hd(n,2097152):Bd(t,o)&&!function(t){return e.isAccessExpression(t)&&103===t.expression.kind&&!!(8&t.expression.flags)}(t)?r:n;var s,c=Ky(i.right);if(!Pl(c,ut))return n;var u=vs(c,"prototype");if(u){var l=wa(u);Qi(l)||(s=l)}if(Qi(n)&&(s===ct||s===ut))return n;if(!s){var _=xs(c,1);s=_.length?Qc(e.map(_,(function(e){return zs(Ys(e))}))):Ge}return L(n,s,a,Pl)}(n,i,a);case 96:var u=ip(i.right);if(e.isStringLiteralLike(i.left)&&Ld(t,u))return k(n,i.left,a);break;case 27:return j(n,i.right,a)}return n}function P(e,t,r,n){var i=34===t||35===t;return(34===t||36===t?n:!n)===!(Gd(Ky(r))&(i?262144:65536))?Hd(e,2097152):e}function w(e,t,r,n){if(1&e.flags)return e;35!==t&&37!==t||(n=!n);var i=Ky(r);if(2&e.flags&&n&&(36===t||37===t))return 67239932&i.flags?i:524288&i.flags?Ue:e;if(98304&i.flags)return V?Hd(e,34===t||35===t?n?262144:2097152:65536&i.flags?n?131072:1048576:n?65536:524288):e;if(67637251&e.flags)return e;if(n){var a=_p(e,34===t?function(e){return Il(e,i)||(t=i,0!=(524&e.flags)&&0!=(28&t.flags));var t}:function(e){return Il(e,i)});return 131072&a.flags?e:mp(a,i)}if(E_(i)){var o=Vu(i);return _p(e,(function(e){return Vu(e)!==o}))}return e}function I(e,n,i,a,o){35!==i&&37!==i||(o=!o);var s=ip(n.expression);if(!Ld(t,s))return V&&jd(s,t)&&o===("undefined"!==a.text)?Hd(e,2097152):Bd(t,s)?r:e;if(1&e.flags&&"function"===a.text)return e;var c=o?D.get(a.text)||128:S.get(a.text)||32768;return Hd(o?pp(e,(function(e){if(2&e.flags&&"object"===a.text)return Qc([Ue,Ce]);var t="function"===a.text?ut:Jr.get(a.text);if(t){if(Al(e,t))return e;if(Al(t,e))return t;if(63176704&e.flags){var r=cs(e)||he;if(Al(t,r))return iu([e,t])}}return e})):e,c)}function O(t,r,n,i,a){return n!==i&&e.every(op(r).slice(n,i),a)?Hd(t,2097152):t}function M(t,r,n,i){var a=op(r);if(!a.length)return t;var o=a.slice(n,i),s=n===i||e.contains(o,Be);if(2&t.flags&&!s){for(var c=void 0,u=0;u<o.length;u+=1){var l=o[u];if(67239932&l.flags)void 0!==c&&c.push(l);else{if(!(524288&l.flags))return t;void 0===c&&(c=o.slice(0,u)),c.push(Ue)}}return Qc(void 0===c?o:c)}var _=Qc(o),d=131072&_.flags?Be:mp(_p(t,(function(e){return Il(_,e)})),_);if(!s)return d;var p=_p(t,(function(t){return!(E_(t)&&e.contains(a,Vu(t)))}));return 131072&d.flags?p:Qc([d,p])}function L(e,t,r,n){if(!r)return _p(e,(function(e){return!n(e,t)}));if(1048576&e.flags){var i=_p(e,(function(e){return n(e,t)}));if(!(131072&i.flags))return i}return Al(t,e)?t:Fl(e,t)?e:Fl(t,e)?t:iu([e,t])}function R(r,n,i){if(function(e,t){if(e.arguments)for(var r=0,n=e.arguments;r<n.length;r++){if(Ud(t,n[r]))return!0}return!(193!==e.expression.kind||!Ud(t,e.expression.expression))}(n,t)){var a=i||!e.isCallChain(n)?Np(n):void 0,o=a&&Js(a);if(o&&(0===o.kind||1===o.kind))return B(r,o,n,i)}return r}function B(n,i,a,o){if(i.type&&(!Qi(n)||i.type!==ct&&i.type!==ut)){var s=function(t,r){if(1===t.kind||3===t.kind)return r.arguments[t.parameterIndex];var n=e.skipParentheses(r.expression);return e.isAccessExpression(n)?e.skipParentheses(n.expression):void 0}(i,a);if(s){if(Ld(t,s))return L(n,i.type,o,Al);if(V&&o&&jd(s,t)&&!(65536&Gd(i.type)))return Hd(n,2097152);if(Bd(t,s))return r}}return n}function j(n,i,a){if(e.isExpressionOfOptionalChainRoot(i)||e.isBinaryExpression(i.parent)&&60===i.parent.operatorToken.kind&&i.parent.left===i)return function(e,n,i){if(Ld(t,n))return Hd(e,i?2097152:262144);if(T(n,r))return E(e,n,(function(e){return Hd(e,i?2097152:262144)}));if(Kd(t,n))return r;return e}(n,i,a);switch(i.kind){case 75:case 103:case 101:case 193:case 194:return C(n,i,a);case 195:return R(n,i,a);case 199:return j(n,i.expression,a);case 208:return F(n,i,a);case 206:if(53===i.operator)return j(n,i.operand,!a)}return n}}function Mp(t){return e.findAncestor(t.parent,(function(t){return e.isFunctionLike(t)&&!e.getImmediatelyInvokedFunctionExpression(t)||249===t.kind||288===t.kind||158===t.kind}))}function Lp(t){var r=e.getRootDeclaration(t.valueDeclaration).parent,n=dn(r);return 8388608&n.flags||(n.flags|=8388608,function(t){return!!e.findAncestor(t.parent,(function(t){return e.isFunctionLike(t)&&!!(8388608&dn(t).flags)}))}(r)||Rp(r)),t.isAssigned||!1}function Rp(t){if(75===t.kind){if(e.isAssignmentTarget(t)){var r=Od(t);r.valueDeclaration&&155===e.getRootDeclaration(r.valueDeclaration).kind&&(r.isAssigned=!0)}}else e.forEachChild(t,Rp)}function Bp(e){return 3&e.flags&&0!=(2&om(e))&&wa(e)!==bt}function jp(e){var t=e.parent;return 193===t.kind||195===t.kind&&t.expression===e||194===t.kind&&t.expression===e||190===t.kind&&t.name===e&&!!t.initializer}function Kp(e){return 58982400&e.flags&&fy(cs(e)||De,98304)}function Jp(e,t){return e&&jp(t)&&up(e,Kp)?pp(rd(e),us):e}function zp(t,r){In(t,111551)&&!Md(r)&&(K.preserveConstEnums&&function(t){return!!e.findAncestor(t,(function(t){return t.parent&&e.isExportAssignment(t.parent)&&t.parent.expression===t&&e.isEntityNameExpression(t)}))}(r)||!Cb(Mn(t)))&&Rn(t)}function Up(t){var r=Od(t);if(r===ge)return xe;if(r===ie){var n=e.getContainingFunction(t);return J<2&&(201===n.kind?Xr(t,e.Diagnostics.The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES3_and_ES5_Consider_using_a_standard_function_expression):e.hasModifier(n,256)&&Xr(t,e.Diagnostics.The_arguments_object_cannot_be_referenced_in_an_async_function_or_method_in_ES3_and_ES5_Consider_using_a_standard_function_or_method)),dn(n).flags|=8192,wa(r)}t.parent&&e.isPropertyAccessExpression(t.parent)&&t.parent.expression===t||zp(r,t);var i=si(r),a=i.valueDeclaration;if(32&i.flags)if(244===a.kind&&e.nodeIsDecorated(a))for(n=e.getContainingClass(t);void 0!==n;){if(n===a&&n.name!==t){dn(a).flags|=16777216,dn(t).flags|=33554432;break}n=e.getContainingClass(n)}else if(213===a.kind)for(n=e.getThisContainer(t,!1);288!==n.kind;){if(n.parent===a){158===n.kind&&e.hasModifier(n,32)&&(dn(a).flags|=16777216,dn(t).flags|=33554432);break}n=e.getThisContainer(n,!1)}!function(t,r){if(J>=2||0==(34&r.flags)||e.isSourceFile(r.valueDeclaration)||278===r.valueDeclaration.parent.kind)return;var n=e.getEnclosingBlockScopeContainer(r.valueDeclaration),i=function(t,r){return!!e.findAncestor(t,(function(t){return t===r?"quit":e.isFunctionLike(t)}))}(t.parent,n),a=n,o=!1;for(;a&&!e.nodeStartsNewLexicalEnvironment(a);){if(e.isIterationStatement(a,!1)){o=!0;break}a=a.parent}if(o){if(i){var s=!0;if(e.isForStatement(n)&&e.getAncestor(r.valueDeclaration,242).parent===n){var c=function(t,r){return e.findAncestor(t,(function(e){return e===r?"quit":e===r.initializer||e===r.condition||e===r.incrementor||e===r.statement}))}(t.parent,n);if(c){var u=dn(c);u.flags|=131072;var l=u.capturedBlockScopeBindings||(u.capturedBlockScopeBindings=[]);e.pushIfUnique(l,r),c===n.initializer&&(s=!1)}}s&&(dn(a).flags|=65536)}229===n.kind&&e.getAncestor(r.valueDeclaration,242).parent===n&&function(t,r){var n=t;for(;199===n.parent.kind;)n=n.parent;var i=!1;if(e.isAssignmentTarget(n))i=!0;else if(206===n.parent.kind||207===n.parent.kind){var a=n.parent;i=45===a.operator||46===a.operator}if(!i)return!1;return!!e.findAncestor(n,(function(e){return e===r?"quit":e===r.statement}))}(t,n)&&(dn(r.valueDeclaration).flags|=4194304),dn(r.valueDeclaration).flags|=524288}i&&(dn(r.valueDeclaration).flags|=262144)}(t,r);var o=Jp(wa(i),t),s=e.getAssignmentTargetKind(t);if(s){if(!(3&i.flags||e.isInJSFile(t)&&512&i.flags))return Xr(t,e.Diagnostics.Cannot_assign_to_0_because_it_is_not_a_variable,Pi(r)),xe;if(uy(i))return 3&i.flags?Xr(t,e.Diagnostics.Cannot_assign_to_0_because_it_is_a_constant,Pi(r)):Xr(t,e.Diagnostics.Cannot_assign_to_0_because_it_is_a_read_only_property,Pi(r)),xe}var c=2097152&i.flags;if(3&i.flags){if(1===s)return o}else{if(!c)return o;a=e.find(r.declarations,I)}if(!a)return o;for(var u=155===e.getRootDeclaration(a).kind,l=Mp(a),_=Mp(t),d=_!==l,p=t.parent&&t.parent.parent&&e.isSpreadAssignment(t.parent)&&Zd(t.parent.parent),f=134217728&r.flags;_!==l&&(200===_.kind||201===_.kind||e.isObjectLiteralOrClassExpressionMethod(_))&&(Bp(i)||u&&!Lp(i));)_=Mp(_);var m=u||c||d||p||f||e.isBindingElement(a)||o!==ve&&o!==bt&&(!V||0!=(16387&o.flags)||Md(t)||261===t.parent.kind)||217===t.parent.kind||241===a.kind&&a.exclamationToken||8388608&a.flags,g=Op(t,o,m?u?function(e,t){return V&&155===t.kind&&t.initializer&&32768&R_(e)&&!(32768&R_(zy(t.initializer)))?Hd(e,524288):e}(o,a):o:o===ve||o===bt?Se:z_(o),_,!m);if(Ep(t)||o!==ve&&o!==bt){if(!m&&!(32768&R_(o))&&32768&R_(g))return Xr(t,e.Diagnostics.Variable_0_is_used_before_being_assigned,Pi(r)),o}else if(g===ve||g===bt)return H&&(Xr(e.getNameOfDeclaration(a),e.Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined,Pi(r),Ii(g)),Xr(t,e.Diagnostics.Variable_0_implicitly_has_an_1_type,Pi(r),Ii(g))),Jh(g);return s?k_(g):g}function Vp(e,t){(dn(e).flags|=2,158===t.kind||161===t.kind)?dn(t.parent).flags|=4:dn(t).flags|=4}function qp(t){return e.isSuperCall(t)?t:e.isFunctionLike(t)?void 0:e.forEachChild(t,qp)}function Wp(e){var t=dn(e);return void 0===t.hasSuperCall&&(t.superCall=qp(e.body),t.hasSuperCall=!!t.superCall),t.superCall}function Gp(e){return qa(ro(ri(e)))===ke}function Hp(t,r,n){var i=r.parent;if(e.getClassExtendsHeritageElement(i)&&!Gp(i)){var a=Wp(r);(!a||a.end>t.pos)&&Xr(t,n)}}function Yp(t){var r=e.getThisContainer(t,!0),n=!1;switch(161===r.kind&&Hp(t,r,e.Diagnostics.super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class),201===r.kind&&(r=e.getThisContainer(r,!1),n=!0),r.kind){case 248:Xr(t,e.Diagnostics.this_cannot_be_referenced_in_a_module_or_namespace_body);break;case 247:Xr(t,e.Diagnostics.this_cannot_be_referenced_in_current_location);break;case 161:Qp(t,r)&&Xr(t,e.Diagnostics.this_cannot_be_referenced_in_constructor_arguments);break;case 158:case 157:e.hasModifier(r,32)&&Xr(t,e.Diagnostics.this_cannot_be_referenced_in_a_static_property_initializer);break;case 153:Xr(t,e.Diagnostics.this_cannot_be_referenced_in_a_computed_property_name)}n&&J<2&&Vp(t,r);var i=Xp(t,!0,r);if(Y){var a=wa(re);if(i===a&&n)Xr(t,e.Diagnostics.The_containing_arrow_function_captures_the_global_value_of_this);else if(!i){var o=Xr(t,e.Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation);if(!e.isSourceFile(r)){var s=Xp(r);s&&s!==a&&e.addRelatedInfo(o,e.createDiagnosticForNode(r,e.Diagnostics.An_outer_value_of_this_is_shadowed_by_this_container))}}}return i||he}function Xp(t,r,n){void 0===r&&(r=!0),void 0===n&&(n=e.getThisContainer(t,!1));var i=e.isInJSFile(t);if(e.isFunctionLike(n)&&(!af(t)||e.getThisParameter(n))){var a=function(t){if(200===t.kind&&e.isBinaryExpression(t.parent)&&3===e.getAssignmentDeclarationKind(t.parent))return t.parent.left.expression.expression;if(160===t.kind&&192===t.parent.kind&&e.isBinaryExpression(t.parent.parent)&&6===e.getAssignmentDeclarationKind(t.parent.parent))return t.parent.parent.left.expression;if(200===t.kind&&279===t.parent.kind&&192===t.parent.parent.kind&&e.isBinaryExpression(t.parent.parent.parent)&&6===e.getAssignmentDeclarationKind(t.parent.parent.parent))return t.parent.parent.parent.left.expression;if(200===t.kind&&e.isPropertyAssignment(t.parent)&&e.isIdentifier(t.parent.name)&&("value"===t.parent.name.escapedText||"get"===t.parent.name.escapedText||"set"===t.parent.name.escapedText)&&e.isObjectLiteralExpression(t.parent.parent)&&e.isCallExpression(t.parent.parent.parent)&&t.parent.parent.parent.arguments[2]===t.parent.parent&&9===e.getAssignmentDeclarationKind(t.parent.parent.parent))return t.parent.parent.parent.arguments[0].expression;if(e.isMethodDeclaration(t)&&e.isIdentifier(t.name)&&("value"===t.name.escapedText||"get"===t.name.escapedText||"set"===t.name.escapedText)&&e.isObjectLiteralExpression(t.parent)&&e.isCallExpression(t.parent.parent)&&t.parent.parent.arguments[2]===t.parent&&9===e.getAssignmentDeclarationKind(t.parent.parent))return t.parent.parent.arguments[0].expression}(n);if(i&&a){var o=zy(a).symbol;if(o&&o.members&&16&o.flags)return Op(t,ro(o).thisType)}else if(i&&(200===n.kind||243===n.kind)&&e.getJSDocClassTag(n)){return Op(t,ro(ti(n.symbol)).thisType)}var s=Ea(n)||tf(n);if(s)return Op(t,s)}if(e.isClassLike(n.parent)){var c,u=ri(n.parent);return Op(t,c=e.hasModifier(n,32)?wa(u):ro(u).thisType)}if(i&&((c=function(t){var r=e.getJSDocType(t);if(r&&298===r.kind){var n=r;if(n.parameters.length>0&&n.parameters[0].name&&"this"===n.parameters[0].name.escapedText)return Yu(n.parameters[0].type)}var i=e.getJSDocThisTag(t);if(i&&i.typeExpression)return Yu(i.typeExpression)}(n))&&c!==xe))return Op(t,c);if(e.isSourceFile(n)){if(n.commonJsModuleIndicator){var l=ri(n);return l&&wa(l)}if(r)return wa(re)}}function Qp(t,r){return!!e.findAncestor(t,(function(t){return e.isFunctionLikeDeclaration(t)?"quit":155===t.kind&&t.parent===r}))}function $p(t){var r=195===t.parent.kind&&t.parent.expression===t,n=e.getSuperContainer(t,!0),i=!1;if(!r)for(;n&&201===n.kind;)n=e.getSuperContainer(n,!0),i=J<2;var a=0;if(!function(t){if(!t)return!1;if(r)return 161===t.kind;if(e.isClassLike(t.parent)||192===t.parent.kind)return e.hasModifier(t,32)?160===t.kind||159===t.kind||162===t.kind||163===t.kind:160===t.kind||159===t.kind||162===t.kind||163===t.kind||158===t.kind||157===t.kind||161===t.kind;return!1}(n)){var o=e.findAncestor(t,(function(e){return e===n?"quit":153===e.kind}));return o&&153===o.kind?Xr(t,e.Diagnostics.super_cannot_be_referenced_in_a_computed_property_name):r?Xr(t,e.Diagnostics.Super_calls_are_not_permitted_outside_constructors_or_in_nested_functions_inside_constructors):n&&n.parent&&(e.isClassLike(n.parent)||192===n.parent.kind)?Xr(t,e.Diagnostics.super_property_access_is_permitted_only_in_a_constructor_member_function_or_member_accessor_of_a_derived_class):Xr(t,e.Diagnostics.super_can_only_be_referenced_in_members_of_derived_classes_or_object_literal_expressions),xe}if(r||161!==n.kind||Hp(t,n,e.Diagnostics.super_must_be_called_before_accessing_a_property_of_super_in_the_constructor_of_a_derived_class),a=e.hasModifier(n,32)||r?512:256,dn(t).flags|=a,160===n.kind&&e.hasModifier(n,256)&&(e.isSuperProperty(t.parent)&&e.isAssignmentTarget(t.parent)?dn(n).flags|=4096:dn(n).flags|=2048),i&&Vp(t.parent,n),192===n.parent.kind)return J<2?(Xr(t,e.Diagnostics.super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher),xe):he;var s=n.parent;if(!e.getClassExtendsHeritageElement(s))return Xr(t,e.Diagnostics.super_can_only_be_referenced_in_a_derived_class),xe;var c=ro(ri(s)),u=c&&Wa(c)[0];return u?161===n.kind&&Qp(t,n)?(Xr(t,e.Diagnostics.super_cannot_be_referenced_in_constructor_arguments),xe):512===a?qa(c):Do(u,c.thisType):xe}function Zp(t){return 4&e.getObjectFlags(t)&&t.target===ht?_c(t)[0]:void 0}function ef(t){return pp(t,(function(t){return 2097152&t.flags?e.forEach(t.types,Zp):Zp(t)}))}function tf(t){if(201!==t.kind){if(Sl(t)){var r=Nf(t);if(r){var n=r.thisParameter;if(n)return wa(n)}}var i=e.isInJSFile(t);if(Y||i){var a=function(e){return 160!==e.kind&&162!==e.kind&&163!==e.kind||192!==e.parent.kind?200===e.kind&&279===e.parent.kind?e.parent.parent:void 0:e.parent}(t);if(a){for(var o=hf(a),s=a,c=o;c;){var u=ef(c);if(u)return gl(u,fd(Df(a)));if(279!==s.parent.kind)break;c=hf(s=s.parent.parent)}return rd(o?U_(o):ky(a))}var l=t.parent;if(208===l.kind&&62===l.operatorToken.kind){var _=l.left;if(193===_.kind||194===_.kind){var d=_.expression;if(i&&e.isIdentifier(d)){var p=e.getSourceFileOfNode(l);if(p.commonJsModuleIndicator&&Od(d)===p.symbol)return}return rd(ky(d))}}}}}function rf(t,r){var n=t.parent;if(Sl(n)){var i=e.getImmediatelyInvokedFunctionExpression(n);if(i&&i.arguments){var a=rg(i),o=n.parameters.indexOf(t);if(t.dotDotDotToken)return Xm(a,o,a.length,he,void 0);var s=dn(i),c=s.resolvedSignature;s.resolvedSignature=$t;var u=o<a.length?N_(zy(a[o])):t.initializer?void 0:Te;return s.resolvedSignature=c,u}var l=Nf(n);if(l){if(r){if(ay(n),Qi(u=wa(ti(n.symbol))))return u;l=xs(u,0)[0]}var _=n.parameters.indexOf(t)-(e.getThisParameter(n)?1:0);return t.dotDotDotToken&&e.lastOrUndefined(n.parameters)===t?Rg(l,_):Lg(l,_)}}}function nf(t){var r=e.getEffectiveTypeAnnotationNode(t);if(r)return Yu(r);switch(t.kind){case 155:return rf(t,!1);case 190:return function(t){var r=t.parent.parent,n=t.propertyName||t.name,i=nf(r);if(i&&!e.isBindingPattern(n)&&!Zi(n)){var a=ou(n);if(_o(a)){var o=yo(a);return Xi(i,o)}}}(t)}}function af(t){for(var r=!1;t.parent&&!e.isFunctionLike(t.parent);){if(e.isParameter(t.parent)&&(r||t.parent.initializer===t))return!0;e.isBindingElement(t.parent)&&t.parent.initializer===t&&(r=!0),t=t.parent}return!1}function of(t,r){var n=!!(2&e.getFunctionFlags(r)),i=sf(r);if(i)return bv(t,i,n)||void 0}function sf(e){var t=Us(e);if(t)return t;var r=kf(e);return r&&!Vs(r)?zs(r):void 0}function cf(e,t,r){var n=rg(e).indexOf(t);return-1===n?void 0:uf(e,n,r)}function uf(t,r,n){var i=dn(t).resolvedSignature===er?er:Dg(t);if(e.isJsxOpeningLikeElement(t)&&0===r)return Sf(i,t);if(n&&4&n&&i.target){var a=Qs(i.target);return Io(Mg(i,r),Mg(a,r))}return Mg(i,r)}function lf(t,r){var n=t.parent,i=n.left,a=n.operatorToken,o=n.right;switch(a.kind){case 62:if(t!==o)return;var s=function(t){var r=e.getAssignmentDeclarationKind(t);switch(r){case 0:return!0;case 5:case 1:case 6:case 3:if(t.left.symbol){var n=t.left.symbol.valueDeclaration;if(!n)return!1;var i=e.cast(t.left,e.isAccessExpression),a=e.getEffectiveTypeAnnotationNode(n);if(a)return Yu(a);if(e.isIdentifier(i.expression)){var o=i.expression,s=gn(o,o.escapedText,111551,void 0,o.escapedText,!0);if(s){if(u=e.getEffectiveTypeAnnotationNode(s.valueDeclaration)){var c=e.getElementOrPropertyAccessName(i);if(void 0!==c)return(l=_f(Yu(u),c))||!1}return!1}}return!e.isInJSFile(n)}return!0;case 2:case 4:if(!t.symbol)return!0;var u,l;if(t.symbol.valueDeclaration)if(u=e.getEffectiveTypeAnnotationNode(t.symbol.valueDeclaration))if(l=Yu(u))return l;if(2===r)return!1;var _=e.cast(t.left,e.isAccessExpression);if(!e.isObjectLiteralMethod(e.getThisContainer(_.expression,!1)))return!1;var d=Yp(_.expression),p=e.getElementOrPropertyAccessName(_);return void 0!==p&&d&&_f(d,p)||!1;case 7:case 8:case 9:return e.Debug.fail("Does not apply");default:return e.Debug.assertNever(r)}}(n);if(!s)return;return!0===s?Ky(i):s;case 56:case 60:var c=xf(n,r);return t===o&&(c&&c.pattern||!c&&!e.isDefaultedExpandoInitializer(n))?Ky(i):c;case 55:case 27:return t===o?xf(n,r):void 0;default:return}}function _f(t,r){return pp(t,(function(t){if(Xo(t)){var n=zo(t),i=cs(n)||n,a=Wu(e.unescapeLeadingUnderscores(r));if(Fl(a,i))return Du(t,a)}else if(3670016&t.flags){var o=vs(t,r);if(o)return wa(o);if(w_(t)){var s=I_(t);if(s&&Mf(r)&&+r>=0)return s}return Mf(r)&&df(t,1)||df(t,0)}}),!0)}function df(e,t){return pp(e,(function(e){return Ss(e,t)}),!0)}function pf(e,t){var r=hf(e.parent,t);if(r){if(!go(e)){var n=_f(r,ri(e).escapedName);if(n)return n}return If(e.name)&&df(r,1)||df(r,0)}}function ff(e,t){return e&&(_f(e,""+t)||ev(1,e,Se,void 0,!1))}function mf(t){var r=t.parent;return e.isJsxAttributeLike(r)?xf(t):e.isJsxElement(r)?function(e,t){var r=hf(e.openingElement.tagName),n=Xf(Hf(e));if(r&&!Qi(r)&&n&&""!==n){var i=Jl(e.children),a=i.indexOf(t),o=_f(r,n);return o&&(1===i.length?o:pp(o,(function(e){return b_(e)?Su(e,Wu(a)):e}),!0))}}(r,t):void 0}function gf(t){if(e.isJsxAttribute(t)){var r=hf(t.parent);if(!r||Qi(r))return;return _f(r,t.name.escapedText)}return xf(t.parent)}function yf(e){switch(e.kind){case 10:case 8:case 9:case 14:case 105:case 90:case 99:case 75:case 145:return!0;case 193:case 199:return yf(e.expression);case 274:return!e.expression||yf(e.expression)}return!1}function hf(t,r){var n=vf(e.isObjectLiteralMethod(t)?function(t,r){if(e.Debug.assert(e.isObjectLiteralMethod(t)),!(16777216&t.flags))return pf(t,r)}(t,r):xf(t,r),t,r);if(n&&!(r&&2&r&&8650752&n.flags)){var i=pp(n,ms,!0);if(1048576&i.flags){if(e.isObjectLiteralExpression(t))return function(t,r){return e_(r,e.map(e.filter(t.properties,(function(e){return!!e.symbol&&279===e.kind&&yf(e.initializer)&&Jd(r,e.symbol.escapedName)})),(function(e){return[function(){return zy(e.initializer)},e.symbol.escapedName]})),Fl,r)}(t,i);if(e.isJsxAttributes(t))return function(t,r){return e_(r,e.map(e.filter(t.properties,(function(e){return!!e.symbol&&271===e.kind&&Jd(r,e.symbol.escapedName)&&(!e.initializer||yf(e.initializer))})),(function(e){return[e.initializer?function(){return zy(e.initializer)}:function(){return Ie},e.symbol.escapedName]})),Fl,r)}(t,i)}return i}}function vf(t,r,n){if(t&&fy(t,63176704)){var i=Df(r);if(i&&e.some(i.inferences,Ry)){if(n&&1&n)return bf(t,i.nonFixingMapper);if(i.returnMapper)return bf(t,i.returnMapper)}}return t}function bf(t,r){return 63176704&t.flags?gl(t,r):1048576&t.flags?Qc(e.map(t.types,(function(e){return bf(e,r)})),0):2097152&t.flags?iu(e.map(t.types,(function(e){return bf(e,r)}))):t}function xf(t,r){if(!(16777216&t.flags)){if(t.contextualType)return t.contextualType;var n=t.parent;switch(n.kind){case 241:case 155:case 158:case 157:case 190:return function(t){var r=t.parent;if(e.hasInitializer(r)&&t===r.initializer){var n=nf(r);if(n)return n;if(e.isBindingPattern(r.name))return ya(r.name,!0,!1)}}(t);case 201:case 234:return function(t){var r=e.getContainingFunction(t);if(r){var n=e.getFunctionFlags(r);if(1&n)return;var i=sf(r);if(i){if(2&n){var a=uh(i);return a&&Qc([a,Hg(a)])}return i}}}(t);case 211:return function(t){var r=e.getContainingFunction(t);if(r){var n=e.getFunctionFlags(r),i=sf(r);if(i)return t.asteriskToken?i:bv(0,i,0!=(2&n))}}(n);case 205:return function(e){var t=xf(e);if(t){var r=dh(t);return r&&Qc([r,Hg(r)])}}(n);case 195:if(95===n.expression.kind)return Ne;case 196:return cf(n,t,r);case 198:case 216:return e.isConstTypeReference(n.type)?void 0:Yu(n.type);case 208:return lf(t,r);case 279:case 280:return pf(n,r);case 281:return hf(n.parent,r);case 191:var i=n;return ff(hf(i,r),e.indexOfNode(i.elements,t));case 209:return function(e,t){var r=e.parent;return e===r.whenTrue||e===r.whenFalse?xf(r,t):void 0}(t,r);case 220:return e.Debug.assert(210===n.parent.kind),function(e,t){if(197===e.parent.kind)return cf(e.parent,t)}(n.parent,t);case 199:var a=e.isInJSFile(n)?e.getJSDocTypeTag(n):void 0;return a?Yu(a.typeExpression.type):xf(n,r);case 274:return mf(n);case 271:case 273:return gf(n);case 266:case 265:return function(t){if(e.isJsxOpeningElement(t)&&t.parent.contextualType)return t.parent.contextualType;return uf(t,0)}(n)}}}function Df(t){var r=e.findAncestor(t,(function(e){return!!e.inferenceContext}));return r&&r.inferenceContext}function Sf(t,r){return 0!==$m(r)?function(e,t){var r=Vg(e,De);r=Tf(t,Hf(t),r);var n=Wf(C.IntrinsicAttributes,t);n!==xe&&(r=Io(n,r));return r}(t,r):function(t,r){var n=Hf(r),i=(o=n,Yf(C.ElementAttributesPropertyNameContainer,o)),a=void 0===i?Vg(t,De):""===i?zs(t):function(e,t){if(e.unionSignatures){for(var r=[],n=0,i=e.unionSignatures;n<i.length;n++){var a=zs(i[n]);if(Qi(a))return a;var o=Xi(a,t);if(!o)return;r.push(o)}return iu(r)}var s=zs(e);return Qi(s)?s:Xi(s,t)}(t,i);var o;if(!a)return i&&e.length(r.attributes.properties)&&Xr(r,e.Diagnostics.JSX_element_class_does_not_support_attributes_because_it_does_not_have_a_0_property,e.unescapeLeadingUnderscores(i)),De;if(Qi(a=Tf(r,n,a)))return a;var s=a,c=Wf(C.IntrinsicClassAttributes,r);if(c!==xe){var u=ja(c.symbol),l=zs(t);s=Io(u?cc(c,Ms([l],u,Os(u),e.isInJSFile(r))):c,s)}var _=Wf(C.IntrinsicAttributes,r);return _!==xe&&(s=Io(_,s)),s}(t,r)}function Tf(t,r,n){var i,a=(i=r)&&fn(i.exports,C.LibraryManagedAttributes,788968);if(a){var o=ro(a),s=function(e){if(zf(e.tagName))return $s(vg(e,t=$f(e)));var t,r=ky(e.tagName);return 128&r.flags?(t=Qf(r,e))?$s(vg(e,t)):xe:r}(t);if(e.length(o.typeParameters)>=2)return cc(o,c=Ms([s,n],o.typeParameters,2,e.isInJSFile(t)));if(e.length(o.aliasTypeArguments)>=2){var c=Ms([s,n],o.aliasTypeArguments,2,e.isInJSFile(t));return fc(o.aliasSymbol,c)}}return n}function Ef(t,r){var n=xs(t,0);if(1===n.length){var i=n[0];if(!function(t,r){for(var n=0;n<r.parameters.length;n++){var i=r.parameters[n];if(i.initializer||i.questionToken||i.dotDotDotToken||As(i))break}r.parameters.length&&e.parameterIsThisKeyword(r.parameters[0])&&n--;return!Kg(t)&&Bg(t)<n}(i,r))return i}}function Cf(e){return 200===e.kind||201===e.kind}function kf(t){return Cf(t)||e.isObjectLiteralMethod(t)?Nf(t):void 0}function Nf(t){e.Debug.assert(160!==t.kind||e.isObjectLiteralMethod(t));var r=Rs(t);if(r)return r;var n=hf(t,1);if(n){if(!(1048576&n.flags))return Ef(n,t);for(var i,a=0,o=n.types;a<o.length;a++){var s=Ef(o[a],t);if(s)if(i){if(!m_(i[0],s,!1,!0,!0,Cl))return;i.push(s)}else i=[s]}return i?1===i.length?i[0]:Co(i[0],i):void 0}}function Af(e){return 190===e.kind&&!!e.initializer||208===e.kind&&62===e.operatorToken.kind}function Ff(t,r,n){for(var i=t.elements,a=i.length,o=!1,s=[],c=e.isAssignmentTarget(t),u=hf(t),l=Py(t),_=0;_<a;_++){var d=i[_];if(c&&212===d.kind){var p=zy(d.expression,r,n),f=Es(p,1)||ev(65,p,Se,void 0,!1);f&&s.push(f)}else{var m=wy(d,r,ff(u,_),n);s.push(m)}_<a-1&&212===d.kind&&(o=!0)}if(!o){var g=a>0&&212===i[a-1].kind,y=a-(g?1:0),h=void 0;if(c&&y>0)return(m=uc(Uc(s,y,g))).pattern=t,m;if(h=wf(s,u,g,a,l))return Pf(h);if(n)return Pf(Uc(s,y,g))}return Pf(jc(s.length?Qc(s,2):V?Je:Te,l))}function Pf(t){if(!(4&e.getObjectFlags(t)))return t;var r=t.literalType;return r||((r=t.literalType=uc(t)).objectFlags|=589824),r}function wf(e,t,r,n,i){if(void 0===n&&(n=e.length),void 0===i&&(i=!1),i||t&&up(t,D_))return Uc(e,n-(r?1:0),r,i)}function If(e){switch(e.kind){case 153:return function(e){return my(Lf(e),296)}(e);case 75:return Mf(e.escapedText);case 8:case 10:return Mf(e.text);default:return!1}}function Of(e){return"Infinity"===e||"-Infinity"===e||"NaN"===e}function Mf(e){return(+e).toString()===e}function Lf(t){var r=dn(t.expression);return r.resolvedType||(r.resolvedType=zy(t.expression),98304&r.resolvedType.flags||!my(r.resolvedType,12716)&&!Fl(r.resolvedType,Ve)?Xr(t,e.Diagnostics.A_computed_property_name_must_be_of_type_string_number_symbol_or_any):Lm(t.expression,r.resolvedType,!0)),r.resolvedType}function Rf(e,t,r,n){for(var i=[],a=0;a<r.length;a++)(0===n||If(e.properties[a+t].name))&&i.push(wa(r[a]));return tc(i.length?Qc(i,2):Se,Py(e))}function Bf(t){e.Debug.assert(0!=(2097152&t.flags),"Should only get Alias here.");var r=_n(t);if(!r.immediateTarget){var n=En(t);if(!n)return e.Debug.fail();r.immediateTarget=wn(n,!0)}return r.immediateTarget}function jf(t,r){var n,i=e.isAssignmentTarget(t);!function(t,r){for(var n=e.createUnderscoreEscapedMap(),i=0,a=t.properties;i<a.length;i++){var o=a[i];if(281!==o.kind){var s=o.name;if(153===s.kind&&ax(s),280===o.kind&&!r&&o.objectAssignmentInitializer)return vx(o.equalsToken,e.Diagnostics.can_only_be_used_in_an_object_literal_property_inside_a_destructuring_assignment);if(o.modifiers)for(var c=0,u=o.modifiers;c<u.length;c++){var l=u[c];125===l.kind&&160===o.kind||vx(l,e.Diagnostics._0_modifier_cannot_be_used_here,e.getTextOfNode(l))}var _=void 0;switch(o.kind){case 280:cx(o.exclamationToken,e.Diagnostics.A_definite_assignment_assertion_is_not_permitted_in_this_context);case 279:sx(o.questionToken,e.Diagnostics.An_object_member_cannot_be_declared_optional),8===s.kind&&Dx(s),_=4;break;case 160:_=8;break;case 162:_=1;break;case 163:_=2;break;default:throw e.Debug.assertNever(o,"Unexpected syntax kind:"+o.kind)}var d=e.getPropertyNameForPropertyNameNode(s);if(void 0!==d){var p=n.get(d);if(p)if(12&_&&12&p)vx(s,e.Diagnostics.Duplicate_identifier_0,e.getTextOfNode(s));else{if(!(3&_&&3&p))return vx(s,e.Diagnostics.An_object_literal_cannot_have_property_and_accessor_with_the_same_name);if(3===p||_===p)return vx(s,e.Diagnostics.An_object_literal_cannot_have_multiple_get_Slashset_accessors_with_the_same_name);n.set(d,_|p)}else n.set(d,_)}}else if(r){var f=e.skipParentheses(o.expression);if(e.isArrayLiteralExpression(f)||e.isObjectLiteralExpression(f))return vx(o.expression,e.Diagnostics.A_rest_element_cannot_contain_a_binding_pattern)}}}(t,i);var a=[],o=Ge,s=hf(t),c=s&&s.pattern&&(188===s.pattern.kind||192===s.pattern.kind),u=Py(t),l=u?8:0,_=e.isInJSFile(t)&&!e.isInJsonFile(t),d=e.getJSDocEnumTag(t),p=!s&&_&&!d,f=Q,m=!1,g=!1,y=!1;n=e.createSymbolTable();for(var h=0,v=0;v<t.properties.length;v++){var b=t.properties[v],x=ri(b),D=b.name&&153===b.name.kind&&!e.isWellKnownSymbolSyntactically(b.name.expression)?Lf(b.name):void 0;if(279===b.kind||280===b.kind||e.isObjectLiteralMethod(b)){var S=279===b.kind?Iy(b,r):280===b.kind?wy(b.name,r):Oy(b,r);if(_){var T=aa(b);T?(Ol(S,T,b),S=T):d&&d.typeExpression&&Ol(S,Yu(d.typeExpression),b)}f|=1835008&e.getObjectFlags(S);var E=D&&_o(D)?D:void 0,C=E?en(4|x.flags,yo(E),4096|l):en(4|x.flags,x.escapedName,l);if(E&&(C.nameType=E),i)(279===b.kind&&Af(b.initializer)||280===b.kind&&b.objectAssignmentInitializer)&&(C.flags|=16777216);else if(c&&!(512&e.getObjectFlags(s))){var k=vs(s,x.escapedName);k?C.flags|=16777216&k.flags:K.suppressExcessPropertyErrors||Ts(s,0)||Xr(b.name,e.Diagnostics.Object_literal_may_only_specify_known_properties_and_0_does_not_exist_in_type_1,Pi(x),Ii(s))}C.declarations=x.declarations,C.parent=x.parent,x.valueDeclaration&&(C.valueDeclaration=x.valueDeclaration),C.type=S,C.target=x,x=C}else{if(281===b.kind){if(J<2&&Gb(b,2),a.length>0&&(o=Bu(o,F(),t.symbol,f,u),a=[],n=e.createSymbolTable(),g=!1,y=!1),!Kf(S=zy(b.expression)))return Xr(b,e.Diagnostics.Spread_types_may_only_be_created_from_object_types),xe;o=Bu(o,S,t.symbol,f,u),h=v+1;continue}e.Debug.assert(162===b.kind||163===b.kind),Yv(b)}!D||8576&D.flags?n.set(x.escapedName,x):Fl(D,Ve)&&(Fl(D,Ae)?y=!0:g=!0,i&&(m=!0)),a.push(x)}if(c)for(var N=0,A=ts(s);N<A.length;N++){C=A[N];n.get(C.escapedName)||o&&vs(o,C.escapedName)||(16777216&C.flags||Xr(C.valueDeclaration||C.bindingElement,e.Diagnostics.Initializer_provides_no_value_for_this_binding_element_and_the_binding_element_has_no_default_value),n.set(C.escapedName,C),a.push(C))}return o!==Ge?(a.length>0&&(o=Bu(o,F(),t.symbol,f,u)),o):F();function F(){var r=g?Rf(t,h,a,0):void 0,o=y?Rf(t,h,a,1):void 0,s=hi(t.symbol,n,e.emptyArray,e.emptyArray,r,o);return s.objectFlags|=524416|f,p&&(s.objectFlags|=16384),m&&(s.objectFlags|=512),i&&(s.pattern=t),s}}function Kf(t){if(63176704&t.flags){var r=cs(t);if(void 0!==r)return Kf(r)}return!!(126615553&t.flags||117632&R_(t)&&Kf(B_(t))||3145728&t.flags&&e.every(t.types,Kf))}function Jf(t){return!e.stringContains(t,"-")}function zf(t){return 75===t.kind&&e.isIntrinsicJsxName(t.escapedText)}function Uf(e,t){return e.initializer?wy(e.initializer,t):Ie}function Vf(e,t){for(var r=[],n=0,i=e.children;n<i.length;n++){var a=i[n];11===a.kind?a.containsOnlyTriviaWhiteSpaces||r.push(Ne):r.push(wy(a,t))}return r}function qf(t,r){return function(t,r){for(var n,i=t.attributes,a=e.createSymbolTable(),o=He,s=!1,c=!1,u=4096,l=Xf(Hf(t)),_=0,d=i.properties;_<d.length;_++){var p=d[_],f=p.symbol;if(e.isJsxAttribute(p)){var m=Uf(p,r);u|=1835008&e.getObjectFlags(m);var g=en(33554436|f.flags,f.escapedName);g.declarations=f.declarations,g.parent=f.parent,f.valueDeclaration&&(g.valueDeclaration=f.valueDeclaration),g.type=m,g.target=f,a.set(g.escapedName,g),p.name.escapedText===l&&(c=!0)}else{e.Debug.assert(273===p.kind),a.size>0&&(o=Bu(o,S(),i.symbol,u,!1),a=e.createSymbolTable()),Qi(m=ky(p.expression,r))&&(s=!0),Kf(m)?o=Bu(o,m,i.symbol,u,!1):n=n?iu([n,m]):m}}s||a.size>0&&(o=Bu(o,S(),i.symbol,u,!1));var y=264===t.parent.kind?t.parent:void 0;if(y&&y.openingElement===t&&y.children.length>0){var h=Vf(y,r);if(!s&&l&&""!==l){c&&Xr(i,e.Diagnostics._0_are_specified_twice_The_attribute_named_0_will_be_overwritten,e.unescapeLeadingUnderscores(l));var v=hf(t.attributes),b=v&&_f(v,l),x=en(33554436,l);x.type=1===h.length?h[0]:wf(h,b,!1)||jc(Qc(h)),x.valueDeclaration=e.createPropertySignature(void 0,e.unescapeLeadingUnderscores(l),void 0,void 0,void 0),x.valueDeclaration.parent=i,x.valueDeclaration.symbol=x;var D=e.createSymbolTable();D.set(l,x),o=Bu(o,hi(i.symbol,D,e.emptyArray,e.emptyArray,void 0,void 0),i.symbol,u,!1)}}return s?he:n&&o!==He?iu([n,o]):n||(o===He?S():o);function S(){u|=Q;var t=hi(i.symbol,a,e.emptyArray,e.emptyArray,void 0,void 0);return t.objectFlags|=524416|u,t}}(t.parent,r)}function Wf(e,t){var r=Hf(t),n=r&&Qn(r),i=n&&fn(n,e,788968);return i?ro(i):xe}function Gf(t){var r=dn(t);if(!r.resolvedSymbol){var n=Wf(C.IntrinsicElements,t);if(n!==xe){if(!e.isIdentifier(t.tagName))return e.Debug.fail();var i=vs(n,t.tagName.escapedText);return i?(r.jsxFlags|=1,r.resolvedSymbol=i):Es(n,0)?(r.jsxFlags|=2,r.resolvedSymbol=n.symbol):(Xr(t,e.Diagnostics.Property_0_does_not_exist_on_type_1,e.idText(t.tagName),"JSX."+C.IntrinsicElements),r.resolvedSymbol=ge)}return H&&Xr(t,e.Diagnostics.JSX_element_implicitly_has_type_any_because_no_interface_JSX_0_exists,e.unescapeLeadingUnderscores(C.IntrinsicElements)),r.resolvedSymbol=ge}return r.resolvedSymbol}function Hf(e){var t=e&&dn(e);if(t&&t.jsxNamespace)return t.jsxNamespace;if(!t||!1!==t.jsxNamespace){var r=Yr(e),n=gn(e,r,1920,void 0,r,!1);if(n){var i=On(fn(Qn(On(n)),C.JSX,1920));if(i)return t&&(t.jsxNamespace=i),i;t&&(t.jsxNamespace=!1)}}return Ac(C.JSX,1920,void 0)}function Yf(t,r){var n=r&&fn(r.exports,t,788968),i=n&&ro(n),a=i&&ts(i);if(a){if(0===a.length)return"";if(1===a.length)return a[0].escapedName;a.length>1&&Xr(n.declarations[0],e.Diagnostics.The_global_type_JSX_0_may_not_have_more_than_one_property,e.unescapeLeadingUnderscores(t))}}function Xf(e){return Yf(C.ElementChildrenAttributeNameContainer,e)}function Qf(t,r){var n=Wf(C.IntrinsicElements,r);if(n!==xe){var i=t.value,a=vs(n,e.escapeLeadingUnderscores(i));if(a)return wa(a);var o=Es(n,0);return o||void 0}return he}function $f(t){e.Debug.assert(zf(t.tagName));var r=dn(t);if(!r.resolvedJsxElementAttributesType){var n=Gf(t);return 1&r.jsxFlags?r.resolvedJsxElementAttributesType=wa(n):2&r.jsxFlags?r.resolvedJsxElementAttributesType=rc(n,0).type:r.resolvedJsxElementAttributesType=xe}return r.resolvedJsxElementAttributesType}function Zf(e){var t=Wf(C.ElementClass,e);if(t!==xe)return t}function em(e){return Wf(C.Element,e)}function tm(e){var t=em(e);if(t)return Qc([t,Ce])}function rm(t){var r,n=e.isJsxOpeningLikeElement(t);n&&function(t){tx(t,t.typeArguments);for(var r=e.createUnderscoreEscapedMap(),n=0,i=t.attributes.properties;n<i.length;n++){var a=i[n];if(273!==a.kind){var o=a.name,s=a.initializer;if(r.get(o.escapedText))return vx(o,e.Diagnostics.JSX_elements_cannot_have_multiple_attributes_with_the_same_name);if(r.set(o.escapedText,!0),s&&274===s.kind&&!s.expression)return vx(s,e.Diagnostics.JSX_attributes_must_only_be_assigned_a_non_empty_expression)}}}(t),r=t,0===(K.jsx||0)&&Xr(r,e.Diagnostics.Cannot_use_JSX_unless_the_jsx_flag_is_provided),void 0===em(r)&&H&&Xr(r,e.Diagnostics.JSX_element_implicitly_has_type_any_because_the_global_type_JSX_Element_does_not_exist);var i=jr&&2===K.jsx?e.Diagnostics.Cannot_find_name_0:void 0,a=Yr(t),o=gn(n?t.tagName:t,a,111551,i,a,!0);if(o&&(o.isReferenced=67108863,2097152&o.flags&&Rn(o)),n){var s=Dg(t);!function(t,r,n){if(1===t)(i=tm(n))&&Zl(r,i,Vr,n,e.Diagnostics.JSX_element_type_0_is_not_a_constructor_function_for_JSX_elements);else if(0===t){(a=Zf(n))&&Zl(r,a,Vr,n,e.Diagnostics.JSX_element_type_0_is_not_a_constructor_function_for_JSX_elements)}else{var i=tm(n),a=Zf(n);if(!i||!a)return;Zl(r,Qc([i,a]),Vr,n,e.Diagnostics.JSX_element_type_0_is_not_a_constructor_function_for_JSX_elements)}}($m(t),zs(s),t)}}function nm(e,t,r){if(524288&e.flags){var n=Qo(e);if(n.stringIndexInfo||n.numberIndexInfo&&Mf(t)||Zo(e,t)||r&&!Jf(t))return!0}else if(3145728&e.flags&&im(e))for(var i=0,a=e.types;i<a.length;i++){if(nm(a[i],t,r))return!0}return!1}function im(t){return!!(524288&t.flags&&!(512&e.getObjectFlags(t))||67108864&t.flags||1048576&t.flags&&e.some(t.types,im)||2097152&t.flags&&e.every(t.types,im))}function am(t,r){if(function(t){if(t.expression&&e.isCommaSequence(t.expression))vx(t.expression,e.Diagnostics.JSX_expressions_may_not_use_the_comma_operator_Did_you_mean_to_write_an_array)}(t),t.expression){var n=zy(t.expression,r);return t.dotDotDotToken&&n!==he&&!y_(n)&&Xr(t,e.Diagnostics.JSX_spread_child_must_be_an_array_type),n}return xe}function om(t){return t.valueDeclaration?e.getCombinedNodeFlags(t.valueDeclaration):0}function sm(t){if(8192&t.flags||4&e.getCheckFlags(t))return!0;if(e.isInJSFile(t.valueDeclaration)){var r=t.valueDeclaration.parent;return r&&e.isBinaryExpression(r)&&3===e.getAssignmentDeclarationKind(r)}}function cm(t,r,n,i){var a,o=e.getDeclarationModifierFlagsFromSymbol(i),s=152===t.kind?t.right:187===t.kind?t:t.name;if(1024&e.getCheckFlags(i))return Xr(s,e.Diagnostics.Property_0_has_conflicting_declarations_and_is_inaccessible_in_type_1,Pi(i),Ii(n)),!1;if(r){if(J<2&&um(i))return Xr(s,e.Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword),!1;if(128&o)return Xr(s,e.Diagnostics.Abstract_method_0_in_class_1_cannot_be_accessed_via_super_expression,Pi(i),Ii(__(i))),!1}if(128&o&&e.isThisProperty(t)&&um(i)&&((a=e.getClassLikeDeclarationOfSymbol(ni(i)))&&function(t){return!!e.findAncestor(t,(function(t){return!!(e.isConstructorDeclaration(t)&&e.nodeIsPresent(t.body)||e.isPropertyDeclaration(t))||!(!e.isClassLike(t)&&!e.isFunctionLikeDeclaration(t))&&"quit"}))}(t)))return Xr(s,e.Diagnostics.Abstract_property_0_in_class_1_cannot_be_accessed_in_the_constructor,Pi(i),e.getTextOfIdentifierOrLiteral(a.name)),!1;if(!(24&o))return!0;if(8&o)return!!ab(t,a=e.getClassLikeDeclarationOfSymbol(ni(i)))||(Xr(s,e.Diagnostics.Property_0_is_private_and_only_accessible_within_class_1,Pi(i),Ii(__(i))),!1);if(r)return!0;var c=ib(t,(function(t){var r=ro(ri(t));return function(t,r){return l_(r,(function(r){return!!(16&e.getDeclarationModifierFlagsFromSymbol(r))&&!Ma(t,__(r))}))?void 0:t}(r,i)?r:void 0}));if(!c){var u=void 0;if(32&o||!(u=function(t){var r=e.getThisContainer(t,!1);return r&&e.isFunctionLike(r)?e.getThisParameter(r):void 0}(t))||!u.type)return Xr(s,e.Diagnostics.Property_0_is_protected_and_only_accessible_within_class_1_and_its_subclasses,Pi(i),Ii(__(i)||n)),!1;var l=Yu(u.type);c=262144&l.flags?ns(l):l}return!!(32&o)||(262144&n.flags&&(n=n.isThisType?ns(n):cs(n)),!(!n||!Ma(n,c))||(Xr(s,e.Diagnostics.Property_0_is_protected_and_only_accessible_through_an_instance_of_class_1,Pi(i),Ii(c)),!1))}function um(e){return!!l_(e,(function(e){return!(8192&e.flags)}))}function lm(e){return gm(zy(e),e)}function _m(e){return!!(98304&(V?R_(e):e.flags))}function dm(e){return _m(e)?U_(e):e}function pm(t,r){Xr(t,32768&r?65536&r?e.Diagnostics.Object_is_possibly_null_or_undefined:e.Diagnostics.Object_is_possibly_undefined:e.Diagnostics.Object_is_possibly_null)}function fm(t,r){Xr(t,32768&r?65536&r?e.Diagnostics.Cannot_invoke_an_object_which_is_possibly_null_or_undefined:e.Diagnostics.Cannot_invoke_an_object_which_is_possibly_undefined:e.Diagnostics.Cannot_invoke_an_object_which_is_possibly_null)}function mm(t,r,n){if(V&&2&t.flags)return Xr(r,e.Diagnostics.Object_is_of_type_unknown),xe;var i=98304&(V?R_(t):t.flags);if(i){n(r,i);var a=U_(t);return 229376&a.flags?xe:a}return t}function gm(e,t){return mm(e,t,pm)}function ym(t,r){var n=gm(t,r);return n!==xe&&16384&n.flags&&Xr(r,e.Diagnostics.Object_is_possibly_undefined),n}function hm(e){return 32&e.flags?function(e){var t=zy(e.expression),r=H_(t,e.expression);return G_(xm(e,e.expression,gm(r,e.expression),e.name),r!==t)}(e):xm(e,e.expression,lm(e.expression),e.name)}function vm(e){return xm(e,e.left,lm(e.left),e.right)}function bm(t){for(;199===t.parent.kind;)t=t.parent;return e.isCallOrNewExpression(t.parent)&&t.parent.expression===t}function xm(t,r,n,i){var a=dn(r).resolvedSymbol,o=e.getAssignmentTargetKind(t),s=ms(0!==o||bm(t)?rd(n):n);if(Qi(s)||s===je)return e.isIdentifier(r)&&a&&zp(a,t),s;var c,u=vs(s,i.escapedText);if(!e.isIdentifier(r)||!a||u&&Cb(u)||zp(a,t),u){if(function(t,r,n){var i,a=t.valueDeclaration;if(!a||e.getSourceFileOfNode(r).isDeclarationFile)return;var o=e.idText(n);!function(t){return!!e.findAncestor(t,(function(t){switch(t.kind){case 158:return!0;case 279:case 160:case 162:case 163:case 281:case 153:case 220:case 274:case 271:case 272:case 273:case 266:case 215:case 277:return!1;default:return!e.isExpressionNode(t)&&"quit"}}))}(r)||mn(a,n)||function(e){if(!(32&e.parent.flags))return!1;var t=wa(e.parent);for(;;){if(!(t=t.symbol&&Sm(t)))return!1;var r=vs(t,e.escapedName);if(r&&r.valueDeclaration)return!0}}(t)?244!==a.kind||168===r.parent.kind||8388608&a.flags||mn(a,n)||(i=Xr(n,e.Diagnostics.Class_0_used_before_its_declaration,o)):i=Xr(n,e.Diagnostics.Property_0_is_used_before_its_initialization,o);i&&e.addRelatedInfo(i,e.createDiagnosticForNode(a,e.Diagnostics._0_is_declared_here,o))}(u,t,i),Fm(u,t,103===r.kind),dn(t).resolvedSymbol=u,cm(t,101===r.kind,s,u),o&&(ly(t,u)||_y(t)))return Xr(i,e.Diagnostics.Cannot_assign_to_0_because_it_is_a_read_only_property,e.idText(i)),xe;c=Jp(wa(u),t)}else{var l=0===o||!gu(n)||hu(n)?Ts(s,0):void 0;if(!l||!l.type)return du(n)?he:n.symbol===re?(re.exports.has(i.escapedText)&&418&re.exports.get(i.escapedText).flags?Xr(i,e.Diagnostics.Property_0_does_not_exist_on_type_1,e.unescapeLeadingUnderscores(i.escapedText),Ii(n)):H&&Xr(i,e.Diagnostics.Element_implicitly_has_an_any_type_because_type_0_has_no_index_signature,Ii(n)),he):(i.escapedText&&!Dn(t)&&function(t,r){var n,i;if(1048576&r.flags&&!(131068&r.flags))for(var a=0,o=r.types;a<o.length;a++){var s=o[a];if(!vs(s,t.escapedText)&&!Ts(s,0)){n=e.chainDiagnosticMessages(n,e.Diagnostics.Property_0_does_not_exist_on_type_1,e.declarationNameToString(t),Ii(s));break}}if(Tm(t.escapedText,r))n=e.chainDiagnosticMessages(n,e.Diagnostics.Property_0_is_a_static_member_of_type_1,e.declarationNameToString(t),Ii(r));else{var c=lh(r);if(c&&vs(c,t.escapedText))n=e.chainDiagnosticMessages(n,e.Diagnostics.Property_0_does_not_exist_on_type_1,e.declarationNameToString(t),Ii(r)),i=e.createDiagnosticForNode(t,e.Diagnostics.Did_you_forget_to_use_await);else{var u=Em(t,r);if(void 0!==u){var l=e.symbolName(u);n=e.chainDiagnosticMessages(n,e.Diagnostics.Property_0_does_not_exist_on_type_1_Did_you_mean_2,e.declarationNameToString(t),Ii(r),l),i=u.valueDeclaration&&e.createDiagnosticForNode(u.valueDeclaration,e.Diagnostics._0_is_declared_here,l)}else n=e.chainDiagnosticMessages(n,e.Diagnostics.Property_0_does_not_exist_on_type_1,e.declarationNameToString(t),Ii(r))}}var _=e.createDiagnosticForNodeFromMessageChain(t,n);i&&e.addRelatedInfo(_,i);jr.add(_)}(i,hu(n)?s:n),xe);l.isReadonly&&(e.isAssignmentTarget(t)||e.isDeleteTarget(t))&&Xr(t,e.Diagnostics.Index_signature_in_type_0_only_permits_reading,Ii(s)),c=l.type}return Dm(t,u,c,i)}function Dm(t,r,n,i){var a=e.getAssignmentTargetKind(t);if(194!==t.kind&&193!==t.kind||1===a||r&&!(98311&r.flags)&&!(8192&r.flags&&1048576&n.flags))return n;var o=!1;if(V&&G&&103===t.expression.kind){var s=r&&r.valueDeclaration;if(s&&Ov(s)){var c=Mp(t);161===c.kind&&c.parent===s.parent&&(o=!0)}}else V&&r&&r.valueDeclaration&&e.isPropertyAccessExpression(r.valueDeclaration)&&e.getAssignmentDeclarationPropertyAccessKind(r.valueDeclaration)&&Mp(t)===Mp(r.valueDeclaration)&&(o=!0);var u=Op(t,n,o?z_(n):n);return o&&!(32768&R_(n))&&32768&R_(u)?(Xr(i,e.Diagnostics.Property_0_is_used_before_being_assigned,Pi(r)),n):a?k_(u):u}function Sm(e){var t=Wa(e);if(0!==t.length)return iu(t)}function Tm(t,r){var n=r.symbol&&vs(wa(r.symbol),t);return void 0!==n&&n.valueDeclaration&&e.hasModifier(n.valueDeclaration,32)}function Em(t,r){return Am(e.isString(t)?t:e.idText(t),ts(r),111551)}function Cm(t,r){var n=Em(t,r);return n&&e.symbolName(n)}function km(t,r,n){return e.Debug.assert(void 0!==r,"outername should always be defined"),yn(t,r,n,void 0,r,!1,!1,(function(t,n,i){return e.Debug.assertEqual(r,n,"name should equal outerName"),fn(t,n,i)||Am(e.unescapeLeadingUnderscores(n),e.arrayFrom(t.values()),i)}))}function Nm(t,r){return r.exports&&Am(e.idText(t),Yn(r),2623475)}function Am(t,r,n){return e.getSpellingSuggestion(t,r,(function(t){var r=e.symbolName(t);return!e.startsWith(r,'"')&&t.flags&n?r:void 0}))}function Fm(t,r,n){if(t&&106500&t.flags&&t.valueDeclaration&&e.hasModifier(t.valueDeclaration,8)&&(!r||!e.isWriteOnlyAccess(r)||65536&t.flags&&!(32768&t.flags))){if(n){var i=e.findAncestor(r,e.isFunctionLikeDeclaration);if(i&&i.symbol===t)return}(1&e.getCheckFlags(t)?_n(t).target:t).isReferenced=67108863}}function Pm(t,r,n,i){if(i===xe||Qi(i))return!0;var a=vs(i,n);return a?cm(t,r,i,a):e.isInJSFile(t)&&0!=(1048576&i.flags)&&i.types.some((function(e){return Pm(t,r,n,e)}))}function wm(t){var r=t.initializer;if(242===r.kind){var n=r.declarations[0];if(n&&!e.isBindingPattern(n.name))return ri(n)}else if(75===r.kind)return Od(r)}function Im(e){return Es(e,1)&&!Es(e,0)}function Om(e){return 32&e.flags?function(e){var t=zy(e.expression),r=H_(t,e.expression);return G_(Mm(e,gm(r,e.expression)),r!==t)}(e):Mm(e,lm(e.expression))}function Mm(t,r){var n=0!==e.getAssignmentTargetKind(t)||bm(t)?rd(r):r,i=t.argumentExpression,a=zy(i);if(n===xe||n===je)return n;if(yy(n)&&!e.isStringLiteralLike(i))return Xr(i,e.Diagnostics.A_const_enum_member_can_only_be_accessed_using_a_string_literal),xe;var o=Tu(n,function(t){var r=e.skipParentheses(t);if(75===r.kind){var n=Od(r);if(3&n.flags)for(var i=t,a=t.parent;a;){if(230===a.kind&&i===a.statement&&wm(a)===n&&Im(Ky(a.expression)))return!0;i=a,a=a.parent}}return!1}(i)?Ae:a,t,e.isAssignmentTarget(t)?2|(gu(n)&&!hu(n)?1:0):0)||xe;return nh(Dm(t,o.symbol,o,i),t)}function Lm(t,r,n){if(r===xe)return!1;if(!e.isWellKnownSymbolSyntactically(t))return!1;if(0==(12288&r.flags))return n&&Xr(t,e.Diagnostics.A_computed_property_name_of_the_form_0_must_be_of_type_symbol,e.getTextOfNode(t)),!1;var i=t.expression,a=Od(i);if(!a)return!1;var o=Pc(!0);return!!o&&(a===o||(n&&Xr(i,e.Diagnostics.Symbol_reference_does_not_refer_to_the_global_Symbol_constructor_object),!1))}function Rm(t){return e.isCallOrNewExpression(t)||e.isTaggedTemplateExpression(t)||e.isJsxOpeningLikeElement(t)}function Bm(t){return Rm(t)&&e.forEach(t.typeArguments,Gv),197===t.kind?zy(t.template):e.isJsxOpeningLikeElement(t)?zy(t.attributes):156!==t.kind&&e.forEach(t.arguments,(function(e){zy(e)})),$t}function jm(e){return Bm(e),Zt}function Km(e){return!!e&&(212===e.kind||219===e.kind&&e.isSpread)}function Jm(t){return e.findIndex(t,Km)}function zm(e){return!!(16384&e.flags)}function Um(t,r,n,i){var a;void 0===i&&(i=!1);var o=!1,s=Bg(n),c=jg(n);if(197===t.kind)if(a=r.length,210===t.template.kind){var u=e.last(t.template.templateSpans);o=e.nodeIsMissing(u.literal)||!!u.literal.isUnterminated}else{var l=t.template;e.Debug.assert(14===l.kind),o=!!l.isUnterminated}else if(156===t.kind)a=ng(t,n);else if(e.isJsxOpeningLikeElement(t)){if(o=t.attributes.end===t.end)return!0;a=0===c?r.length:1,s=0===r.length?s:1,c=Math.min(c,1)}else{if(!t.arguments)return e.Debug.assert(196===t.kind),0===jg(n);a=i?r.length+1:r.length,o=t.arguments.end===t.end;var _=Jm(r);if(_>=0)return _>=jg(n)&&(Kg(n)||_<Bg(n))}if(!Kg(n)&&a>s)return!1;if(o||a>=c)return!0;for(var d=a;d<c;d++){if(131072&_p(Mg(n,d),zm).flags)return!1}return!0}function Vm(t,r){var n=e.length(t.typeParameters),i=Os(t.typeParameters);return!r||r.length>=i&&r.length<=n}function qm(e){return Gm(e,0,!1)}function Wm(e){return Gm(e,0,!1)||Gm(e,1,!1)}function Gm(e,t,r){if(524288&e.flags){var n=Qo(e);if(r||0===n.properties.length&&!n.stringIndexInfo&&!n.numberIndexInfo){if(0===t&&1===n.callSignatures.length&&0===n.constructSignatures.length)return n.callSignatures[0];if(1===t&&1===n.constructSignatures.length&&0===n.callSignatures.length)return n.constructSignatures[0]}}}function Hm(t,r,n,i){var a=cd(t.typeParameters,t,0,i),o=Jg(r),s=n&&(o&&262144&o.flags?n.nonFixingMapper:n.mapper);return od(s?sl(r,s):r,t,(function(e,t){Sd(a.inferences,e,t)})),n||sd(r,t,(function(e,t){Sd(a.inferences,e,t,16)})),Ws(t,wd(a),e.isInJSFile(r.declaration))}function Ym(t,r,n,i,a){if(e.isJsxOpeningLikeElement(t))return function(e,t,r,n){var i=Sf(t,e),a=Cy(e.attributes,i,n,r);return Sd(n.inferences,a,i),wd(n)}(t,r,i,a);if(156!==t.kind){var o=xf(t);if(o){var s=Df(t),c=gl(o,fd(function(t,r){return void 0===r&&(r=0),t&&ud(e.map(t.inferences,pd),t.signature,t.flags|r,t.compareTypes)}(s,1))),u=qm(c),l=u&&u.typeParameters?$s(Gs(u,u.typeParameters)):c,_=zs(r);Sd(a.inferences,l,_,16);var d=cd(r.typeParameters,r,a.flags),p=gl(o,s&&s.returnMapper);Sd(d.inferences,p,_),a.returnMapper=e.some(d.inferences,Ry)?fd(function(t){var r=e.filter(t.inferences,Ry);return r.length?ud(e.map(r,pd),t.signature,t.flags,t.compareTypes):void 0}(d)):void 0}}var f=Ks(r);if(f){var m=eg(t),g=m?zy(m):Re;Sd(a.inferences,g,f)}for(var y=zg(r),h=y?Math.min(Bg(r)-1,n.length):n.length,v=0;v<h;v++){var b=n[v];if(214!==b.kind){var x=Mg(r,v),D=Cy(b,x,a,i);Sd(a.inferences,D,x)}}if(y){var S=Xm(n,h,n.length,y,a);Sd(a.inferences,S,y)}return wd(a)}function Xm(t,r,n,i,a){if(r>=n-1){var o=t[n-1];if(Km(o))return 219===o.kind?jc(o.type):function(e){return up(e,(function(e){return!(63176705&e.flags||y_(e)||w_(e))}))?jc(Su(e,Ae)):e}(Cy(o.expression,i,a,0))}for(var s=[],c=-1,u=r;u<n;u++){var l=Su(i,Wu(u-r)),_=Cy(t[u],l,a,0);c<0&&Km(t[u])&&(c=u-r);var d=fy(l,4325372);s.push(d?Vu(_):N_(_))}return c<0?Uc(s):Uc(e.append(s.slice(0,c),Qc(s.slice(c))),c,!0)}function Qm(t,r,n,i){for(var a,o=e.isInJSFile(t.declaration),s=t.typeParameters,c=Ms(e.map(r,Yu),s,Os(s),o),u=0;u<r.length;u++){e.Debug.assert(void 0!==s[u],"Should not call checkTypeArguments with too many type arguments");var l=ns(s[u]);if(l){var _=n&&i?function(){return e.chainDiagnosticMessages(void 0,e.Diagnostics.Type_0_does_not_satisfy_the_constraint_1)}:void 0,d=i||e.Diagnostics.Type_0_does_not_satisfy_the_constraint_1;a||(a=el(s,c));var p=c[u];if(!Ol(p,Do(gl(l,a),p),n?r[u]:void 0,d,_))return}}return c}function $m(t){if(zf(t.tagName))return 2;var r=ms(zy(t.tagName));return e.length(xs(r,1))?0:e.length(xs(r,0))?1:2}function Zm(t,r,n,i,a,o,s){var c={errors:void 0,skipLogging:!0};if(e.isJsxOpeningLikeElement(t))return function(e,t,r,n,i,a,o){var s=Sf(t,e);return Ll(Cy(e.attributes,s,void 0,n),s,r,i?e.tagName:void 0,e.attributes,void 0,a,o)}(t,n,i,a,o,s,c)?void 0:(e.Debug.assert(!o||!!c.errors,"jsx should have errors when reporting errors"),c.errors||e.emptyArray);var u=Ks(n);if(u&&u!==Re&&196!==t.kind){var l=eg(t),_=void 0;l?(_=zy(l),e.isOptionalChainRoot(l.parent)?_=U_(_):e.isOptionalChain(l.parent)&&(_=W_(_))):_=Re;var d=o?l||t:void 0,p=e.Diagnostics.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1;if(!Zl(_,u,i,d,p,s,c))return e.Debug.assert(!o||!!c.errors,"this parameter should have errors when reporting errors"),c.errors||e.emptyArray}for(var f=e.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1,m=zg(n),g=m?Math.min(Bg(n)-1,r.length):r.length,y=0;y<g;y++){var h=r[y];if(214!==h.kind){var v=Mg(n,y),b=Cy(h,v,void 0,a),x=4&a?Q_(b):b;if(!Ll(x,v,i,o?h:void 0,h,f,s,c))return e.Debug.assert(!o||!!c.errors,"parameter should have errors when reporting errors"),S(h,x,v),c.errors||e.emptyArray}}if(m){var D=Xm(r,g,r.length,m,void 0);d=o?g<r.length?r[g]:t:void 0;if(!Zl(D,m,i,d,f,void 0,c))return e.Debug.assert(!o||!!c.errors,"rest parameter should have errors when reporting errors"),S(d,D,m),c.errors||e.emptyArray}return;function S(t,r,n){if(t&&o&&c.errors&&c.errors.length){if(uh(n))return;var a=uh(r);a&&Ql(a,n,i)&&e.addRelatedInfo(c.errors[0],e.createDiagnosticForNode(t,e.Diagnostics.Did_you_forget_to_use_await))}}}function eg(t){if(195===t.kind){var r=e.skipOuterExpressions(t.expression);if(193===r.kind||194===r.kind)return r.expression}}function tg(t,r,n){var i=e.createNode(219,t.pos,t.end);return i.parent=t,i.type=r,i.isSpread=n||!1,i}function rg(t){if(197===t.kind){var r=t.template,n=[tg(r,Kt||(Kt=Fc("TemplateStringsArray",0,!0))||Ge)];return 210===r.kind&&e.forEach(r.templateSpans,(function(e){n.push(e.expression)})),n}if(156===t.kind)return function(t){var r=t.parent,n=t.expression;switch(r.kind){case 244:case 213:return[tg(n,wa(ri(r)))];case 155:var i=r.parent;return[tg(n,161===r.parent.kind?wa(ri(i)):xe),tg(n,he),tg(n,Ae)];case 158:case 160:case 162:case 163:var a=158!==r.kind&&0!==J;return[tg(n,db(r)),tg(n,pb(r)),tg(n,a?Bc(ub(r)):he)]}return e.Debug.fail()}(t);if(e.isJsxOpeningLikeElement(t))return t.attributes.properties.length>0||e.isJsxOpeningElement(t)&&t.parent.children.length>0?[t.attributes]:e.emptyArray;var i=t.arguments||e.emptyArray,a=i.length;if(a&&Km(i[a-1])&&Jm(i)===a-1){var o=i[a-1],s=pr?zy(o.expression):ky(o.expression);if(w_(s)){var c=_c(s),u=s.target.hasRestElement?c.length-1:-1,l=e.map(c,(function(e,t){return tg(o,e,t===u)}));return e.concatenate(i.slice(0,a-1),l)}}return i}function ng(t,r){switch(t.parent.kind){case 244:case 213:return 1;case 158:return 2;case 160:case 162:case 163:return 0===J||r.parameters.length<=2?2:3;case 155:return 3;default:return e.Debug.fail()}}function ig(t,r){var n,i,a=e.getSourceFileOfNode(t);if(e.isPropertyAccessExpression(t.expression)){var o=e.getErrorSpanForNode(a,t.expression.name);n=o.start,i=r?o.length:t.end-n}else{var s=e.getErrorSpanForNode(a,t.expression);n=s.start,i=r?s.length:t.end-n}return{start:n,length:i,sourceFile:a}}function ag(t,r,n,i,a,o){if(e.isCallExpression(t)){var s=ig(t),c=s.sourceFile,u=s.start,l=s.length;return e.createFileDiagnostic(c,u,l,r,n,i,a,o)}return e.createDiagnosticForNode(t,r,n,i,a,o)}function og(t,r,n){for(var i,a=Number.POSITIVE_INFINITY,o=Number.NEGATIVE_INFINITY,s=Number.NEGATIVE_INFINITY,c=Number.POSITIVE_INFINITY,u=n.length,l=0,_=r;l<_.length;l++){var d=_[l],p=jg(d),f=Bg(d);p<u&&p>s&&(s=p),u<f&&f<c&&(c=f),p<a&&(a=p,i=d),o=Math.max(o,f)}var m,g,y=e.some(r,Kg),h=y?a:a<o?a+"-"+o:a,v=Jm(n)>-1;u<=o&&v&&u--;var b=y||v?y&&v?e.Diagnostics.Expected_at_least_0_arguments_but_got_1_or_more:y?e.Diagnostics.Expected_at_least_0_arguments_but_got_1:e.Diagnostics.Expected_0_arguments_but_got_1_or_more:e.Diagnostics.Expected_0_arguments_but_got_1;if(i&&jg(i)>u&&i.declaration){var x=i.declaration.parameters[i.thisParameter?u+1:u];x&&(g=e.createDiagnosticForNode(x,e.isBindingPattern(x.name)?e.Diagnostics.An_argument_matching_this_binding_pattern_was_not_provided:e.Diagnostics.An_argument_for_0_was_not_provided,x.name?e.isBindingPattern(x.name)?void 0:e.idText(e.getFirstIdentifier(x.name)):u))}if(a<u&&u<o)return ag(t,e.Diagnostics.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments,u,s,c);if(!v&&u<a){var D=ag(t,b,h,u);return g?e.addRelatedInfo(D,g):D}if(y||v){if(m=e.createNodeArray(n),v&&u){var S=e.elementAt(n,Jm(n)+1)||void 0;m=e.createNodeArray(n.slice(o>u&&S?n.indexOf(S):Math.min(o,n.length-1)))}}else m=e.createNodeArray(n.slice(o));m.pos=e.first(m).pos,m.end=e.last(m).end,m.end===m.pos&&m.end++;var T=e.createDiagnosticForNodeArray(e.getSourceFileOfNode(t),m,b,h,u);return g?e.addRelatedInfo(T,g):T}function sg(t,r,n,i,o,s){var c,u=197===t.kind,l=156===t.kind,_=e.isJsxOpeningLikeElement(t),d=!n;l||(c=t.typeArguments,(u||_||101!==t.expression.kind)&&e.forEach(c,Gv));var p=n||[];if(function(t,r,n){var i,a,o,s,c=0,u=-1;e.Debug.assert(!r.length);for(var l=0,_=t;l<_.length;l++){var d=_[l],p=d.declaration&&ri(d.declaration),f=d.declaration&&d.declaration.parent;a&&p!==a?(o=c=r.length,i=f):i&&f===i?o+=1:(i=f,o=c),a=p,L(d)?(s=++u,c++):s=o,r.splice(s,0,n?ko(d):d)}}(r,p,o),!p.length)return d&&jr.add(ag(t,e.Diagnostics.Call_target_does_not_contain_any_signatures)),jm(t);var f,m,g,y,h=rg(t),v=1===p.length&&!p[0].typeParameters,b=l||v||!e.some(h,bl)?0:4,x=!!(16&i)&&195===t.kind&&t.arguments.hasTrailingComma;if(p.length>1&&(y=W(p,Ur,x)),y||(y=W(p,Vr,x)),y)return y;if(d)if(f)if(1===f.length||f.length>3){var D,S=f[f.length-1];f.length>3&&(D=e.chainDiagnosticMessages(D,e.Diagnostics.The_last_overload_gave_the_following_error),D=e.chainDiagnosticMessages(D,e.Diagnostics.No_overload_matches_this_call));var T=Zm(t,h,S,Vr,0,!0,(function(){return D}));if(T)for(var E=0,C=T;E<C.length;E++){var k=C[E];S.declaration&&f.length>3&&e.addRelatedInfo(k,e.createDiagnosticForNode(S.declaration,e.Diagnostics.The_last_overload_is_declared_here)),jr.add(k)}else e.Debug.fail("No error for last overload signature")}else{for(var N=[],A=0,F=Number.MAX_VALUE,P=0,w=0,I=function(r){var n=Zm(t,h,r,Vr,0,!0,(function(){return e.chainDiagnosticMessages(void 0,e.Diagnostics.Overload_0_of_1_2_gave_the_following_error,w+1,p.length,wi(r))}));n?(n.length<=F&&(F=n.length,P=w),A=Math.max(A,n.length),N.push(n)):e.Debug.fail("No error for 3 or fewer overload signatures"),w++},O=0,R=f;O<R.length;O++){I(R[O])}var B=A>1?N[P]:e.flatten(N);e.Debug.assert(B.length>0,"No errors reported for 3 or fewer overload signatures");var j=e.chainDiagnosticMessages(e.map(B,(function(e){return"string"==typeof e.messageText?e:e.messageText})),e.Diagnostics.No_overload_matches_this_call),K=e.flatMap(B,(function(e){return e.relatedInformation}));if(e.every(B,(function(e){return e.start===B[0].start&&e.length===B[0].length&&e.file===B[0].file}))){var J=B[0],z=J.file,U=J.start,V=J.length;jr.add({file:z,start:U,length:V,code:j.code,category:j.category,messageText:j,relatedInformation:K})}else jr.add(e.createDiagnosticForNodeFromMessageChain(t,j,K))}else if(m)jr.add(og(t,[m],h));else if(g)Qm(g,t.typeArguments,!0,s);else{var q=e.filter(r,(function(e){return Vm(e,c)}));0===q.length?jr.add(function(t,r,n){var i=n.length;if(1===r.length){var a=Os((_=r[0]).typeParameters),o=e.length(_.typeParameters);return e.createDiagnosticForNodeArray(e.getSourceFileOfNode(t),n,e.Diagnostics.Expected_0_type_arguments_but_got_1,a<o?a+"-"+o:a,i)}for(var s=-1/0,c=1/0,u=0,l=r;u<l.length;u++){var _,d=Os((_=l[u]).typeParameters);o=e.length(_.typeParameters);d>i?c=Math.min(c,d):o<i&&(s=Math.max(s,o))}return s!==-1/0&&c!==1/0?e.createDiagnosticForNodeArray(e.getSourceFileOfNode(t),n,e.Diagnostics.No_overload_expects_0_type_arguments_but_overloads_do_exist_that_expect_either_1_or_2_type_arguments,i,s,c):e.createDiagnosticForNodeArray(e.getSourceFileOfNode(t),n,e.Diagnostics.Expected_0_type_arguments_but_got_1,s===-1/0?c:s,i)}(t,r,c)):l?s&&jr.add(ag(t,s)):jr.add(og(t,q,h))}return a||!h?jm(t):function(t,r,n,i){return e.Debug.assert(r.length>0),i||1===r.length||r.some((function(e){return!!e.typeParameters}))?function(t,r,n){var i=function(e,t){for(var r=-1,n=-1,i=0;i<e.length;i++){var a=e[i],o=Bg(a);if(Kg(a)||o>=t)return i;o>n&&(n=o,r=i)}return r}(r,void 0===ne?n.length:ne),a=r[i],o=a.typeParameters;if(!o)return a;var s=Rm(t)?t.typeArguments:void 0,c=s?Hs(a,function(e,t,r){var n=e.map(ub);for(;n.length>t.length;)n.pop();for(;n.length<t.length;)n.push(ns(t[n.length])||Pd(r));return n}(s,o,e.isInJSFile(t))):function(t,r,n,i){var a=cd(r,n,e.isInJSFile(t)?2:0),o=Ym(t,n,i,12,a);return Hs(n,o)}(t,o,a,n);return r[i]=c,c}(t,r,n):function(t){var r,n=e.mapDefined(t,(function(e){return e.thisParameter}));n.length&&(r=ug(n,n.map(Ig)));for(var i=e.minAndMax(t,cg),a=i.min,o=i.max,s=[],c=function(r){var n=e.mapDefined(t,(function(t){return M(t)?r<t.parameters.length-1?t.parameters[r]:e.last(t.parameters):r<t.parameters.length?t.parameters[r]:void 0}));e.Debug.assert(0!==n.length),s.push(ug(n,e.mapDefined(t,(function(e){return Lg(e,r)}))))},u=0;u<o;u++)c(u);var l=e.mapDefined(t,(function(t){return M(t)?e.last(t.parameters):void 0})),_=0;if(0!==l.length){var d=jc(Qc(e.mapDefined(t,qs),2));s.push(lg(l,d)),_|=1}t.some(L)&&(_|=2);return To(t[0].declaration,void 0,r,s,iu(t.map(zs)),void 0,a,_)}(r)}(t,p,h,!!n);function W(r,n,i){if(void 0===i&&(i=!1),f=void 0,m=void 0,g=void 0,v){var a=r[0];if(c||!Um(t,h,a,i))return;return Zm(t,h,a,n,0,!1,void 0)?void(f=[a]):a}for(var o=0;o<r.length;o++){if(Vm(a=r[o],c)&&Um(t,h,a,i)){var s=void 0,u=void 0;if(a.typeParameters){var l=void 0;if(c){if(!(l=Qm(a,c,!1))){g=a;continue}}else u=cd(a.typeParameters,a,e.isInJSFile(t)?2:0),l=Ym(t,a,h,8|b,u),b|=4&u.flags?8:0;if(s=Ws(a,l,e.isInJSFile(a.declaration),u&&u.inferredTypeParameters),zg(a)&&!Um(t,h,s,i)){m=s;continue}}else s=a;if(!Zm(t,h,s,n,b,!1,void 0)){if(b){if(b=0,u)if(s=Ws(a,l=Ym(t,a,h,b,u),e.isInJSFile(a.declaration),u&&u.inferredTypeParameters),zg(a)&&!Um(t,h,s,i)){m=s;continue}if(Zm(t,h,s,n,b,!1,void 0)){(f||(f=[])).push(s);continue}}return r[o]=s,s}(f||(f=[])).push(s)}}}}function cg(e){var t=e.parameters.length;return M(e)?t-1:t}function ug(e,t){return lg(e,Qc(t,2))}function lg(t,r){return X_(e.first(t),r)}function _g(e){return!(!e.typeParameters||!Lb(zs(e)))}function dg(e,t,r,n){return Qi(e)||Qi(t)&&!!(262144&e.flags)||!r&&!n&&!(1179648&t.flags)&&Fl(e,ut)}function pg(t,r,n){if(t.arguments&&J<1){var i=Jm(t.arguments);i>=0&&Xr(t.arguments[i],e.Diagnostics.Spread_operator_in_new_expressions_is_only_available_when_targeting_ECMAScript_5_and_higher)}var a=lm(t.expression);if(a===je)return tr;if((a=ms(a))===xe)return jm(t);if(Qi(a))return t.typeArguments&&Xr(t,e.Diagnostics.Untyped_function_calls_may_not_accept_type_arguments),Bm(t);var o=xs(a,1);if(o.length){if(!function(t,r){if(!r||!r.declaration)return!0;var n=r.declaration,i=e.getSelectedModifierFlags(n,24);if(!i)return!0;var a=e.getClassLikeDeclarationOfSymbol(n.parent.symbol),o=ro(n.parent.symbol);if(!ab(t,a)){var s=e.getContainingClass(t);if(s&&16&i){var c=ub(s);if(function t(r,n){var i=Wa(n);if(!e.length(i))return!1;var a=i[0];if(2097152&a.flags){for(var o=Lo(a.types),s=0,c=0,u=a.types;c<u.length;c++){var l=u[c];if(!o[s]&&3&e.getObjectFlags(l)){if(l.symbol===r)return!0;if(t(r,l))return!0}s++}return!1}if(a.symbol===r)return!0;return t(r,a)}(n.parent.symbol,c))return!0}return 8&i&&Xr(t,e.Diagnostics.Constructor_of_class_0_is_private_and_only_accessible_within_the_class_declaration,Ii(o)),16&i&&Xr(t,e.Diagnostics.Constructor_of_class_0_is_protected_and_only_accessible_within_the_class_declaration,Ii(o)),!1}return!0}(t,o[0]))return jm(t);var s=a.symbol&&e.getClassLikeDeclarationOfSymbol(a.symbol);return s&&e.hasModifier(s,128)?(Xr(t,e.Diagnostics.Cannot_create_an_instance_of_an_abstract_class),jm(t)):sg(t,o,r,n,!1)}var c=xs(a,0);if(c.length){var u=sg(t,c,r,n,!1);return H||(u.declaration&&!Sg(u.declaration)&&zs(u)!==Re&&Xr(t,e.Diagnostics.Only_a_void_function_can_be_called_with_the_new_keyword),Ks(u)===Re&&Xr(t,e.Diagnostics.A_function_that_is_called_with_the_new_keyword_cannot_have_a_this_type_that_is_void)),u}return mg(t.expression,a,1),jm(t)}function fg(t,r){var n,i=0===r,a=dh(t),o=a&&xs(a,r).length>0;if(1048576&t.flags){for(var s=!1,c=0,u=t.types;c<u.length;c++){var l=u[c];if(0!==xs(l,r).length){if(s=!0,n)break}else if(n||(n=e.chainDiagnosticMessages(n,i?e.Diagnostics.Type_0_has_no_call_signatures:e.Diagnostics.Type_0_has_no_construct_signatures,Ii(l)),n=e.chainDiagnosticMessages(n,i?e.Diagnostics.Not_all_constituents_of_type_0_are_callable:e.Diagnostics.Not_all_constituents_of_type_0_are_constructable,Ii(t))),s)break}s||(n=e.chainDiagnosticMessages(void 0,i?e.Diagnostics.No_constituent_of_type_0_is_callable:e.Diagnostics.No_constituent_of_type_0_is_constructable,Ii(t))),n||(n=e.chainDiagnosticMessages(n,i?e.Diagnostics.Each_member_of_the_union_type_0_has_signatures_but_none_of_those_signatures_are_compatible_with_each_other:e.Diagnostics.Each_member_of_the_union_type_0_has_construct_signatures_but_none_of_those_signatures_are_compatible_with_each_other,Ii(t)))}else n=e.chainDiagnosticMessages(n,i?e.Diagnostics.Type_0_has_no_call_signatures:e.Diagnostics.Type_0_has_no_construct_signatures,Ii(t));return{messageChain:e.chainDiagnosticMessages(n,i?e.Diagnostics.This_expression_is_not_callable:e.Diagnostics.This_expression_is_not_constructable),relatedMessage:o?e.Diagnostics.Did_you_forget_to_use_await:void 0}}function mg(t,r,n,i){var a=fg(r,n),o=a.messageChain,s=a.relatedMessage,c=e.createDiagnosticForNodeFromMessageChain(t,o);if(s&&e.addRelatedInfo(c,e.createDiagnosticForNode(t,s)),e.isCallExpression(t.parent)){var u=ig(t.parent,!0),l=u.start,_=u.length;c.start=l,c.length=_}jr.add(c),gg(r,n,i?e.addRelatedInfo(c,i):c)}function gg(t,r,n){if(t.symbol){var i=_n(t.symbol).originatingImport;if(i&&!e.isImportCall(i)){var a=xs(wa(_n(t.symbol).target),r);if(!a||!a.length)return;e.addRelatedInfo(n,e.createDiagnosticForNode(i,e.Diagnostics.Type_originates_at_this_import_A_namespace_style_import_cannot_be_called_or_constructed_and_will_cause_a_failure_at_runtime_Consider_using_a_default_import_or_import_require_here_instead))}}}function yg(t){switch(t.parent.kind){case 244:case 213:return e.Diagnostics.Unable_to_resolve_signature_of_class_decorator_when_called_as_an_expression;case 155:return e.Diagnostics.Unable_to_resolve_signature_of_parameter_decorator_when_called_as_an_expression;case 158:return e.Diagnostics.Unable_to_resolve_signature_of_property_decorator_when_called_as_an_expression;case 160:case 162:case 163:return e.Diagnostics.Unable_to_resolve_signature_of_method_decorator_when_called_as_an_expression;default:return e.Debug.fail()}}function hg(t,r,n){var i=zy(t.expression),a=ms(i);if(a===xe)return jm(t);var o,s,c=xs(a,0),u=xs(a,1).length;if(dg(i,a,c.length,u))return Bm(t);if(o=t,(s=c).length&&e.every(s,(function(e){return 0===e.minArgumentCount&&!M(e)&&e.parameters.length<ng(o,e)}))){var l=e.getTextOfNode(t.expression,!1);return Xr(t,e.Diagnostics._0_accepts_too_few_arguments_to_be_used_as_a_decorator_here_Did_you_mean_to_call_it_first_and_write_0,l),jm(t)}var _=yg(t);if(!c.length){var d=fg(a,0),p=e.chainDiagnosticMessages(d.messageChain,_),f=e.createDiagnosticForNodeFromMessageChain(t.expression,p);return d.relatedMessage&&e.addRelatedInfo(f,e.createDiagnosticForNode(t.expression,d.relatedMessage)),jr.add(f),gg(a,0,f),jm(t)}return sg(t,c,r,n,!1,_)}function vg(t,r){var n=Hf(t),i=n&&Qn(n),a=i&&fn(i,C.Element,788968),o=a&&Z.symbolToEntityName(a,788968,t),s=e.createFunctionTypeNode(void 0,[e.createParameter(void 0,void 0,void 0,"props",void 0,Z.typeToTypeNode(r,t))],o?e.createTypeReferenceNode(o,void 0):e.createKeywordTypeNode(124)),c=en(1,"props");return c.type=r,To(s,void 0,void 0,[c],a?ro(a):xe,void 0,1,0)}function bg(t,r,n){if(zf(t.tagName)){var i=$f(t),a=vg(t,i);return Ml(Cy(t.attributes,Sf(a,t),void 0,0),i,t.tagName,t.attributes),a}var o=zy(t.tagName),s=ms(o);if(s===xe)return jm(t);var c=function t(r,n){if(4&r.flags)return[$t];if(128&r.flags){var i=Qf(r,n);return i?[vg(n,i)]:(Xr(n,e.Diagnostics.Property_0_does_not_exist_on_type_1,r.value,"JSX."+C.IntrinsicElements),e.emptyArray)}var a=ms(r),o=xs(a,1);return 0===o.length&&(o=xs(a,0)),0===o.length&&1048576&a.flags&&(o=Po(e.map(a.types,(function(e){return t(e,n)})))),o}(o,t);return dg(o,s,c.length,0)?Bm(t):0===c.length?(Xr(t.tagName,e.Diagnostics.JSX_element_type_0_does_not_have_any_construct_or_call_signatures,e.getTextOfNode(t.tagName)),jm(t)):sg(t,c,r,n,!1)}function xg(t,r,n){switch(t.kind){case 195:return function(t,r,n){if(101===t.expression.kind){var i=$p(t.expression);if(Qi(i)){for(var a=0,o=t.arguments;a<o.length;a++){zy(o[a])}return $t}if(i!==xe){var s=e.getEffectiveBaseTypeNode(e.getContainingClass(t));if(s)return sg(t,Va(i,s.typeArguments,s),r,n,!1)}return Bm(t)}var c,u=zy(t.expression);if(e.isCallChain(t)){var l=H_(u,t.expression);c=l!==u,u=l}else c=!1;if((u=mm(u,t.expression,fm))===je)return tr;var _=ms(u);if(_===xe)return jm(t);var d=xs(_,0),p=xs(_,1).length;if(dg(u,_,d.length,p))return u!==xe&&t.typeArguments&&Xr(t,e.Diagnostics.Untyped_function_calls_may_not_accept_type_arguments),Bm(t);if(!d.length){if(p)Xr(t,e.Diagnostics.Value_of_type_0_is_not_callable_Did_you_mean_to_include_new,Ii(u));else{var f=void 0;if(1===t.arguments.length){var m=e.getSourceFileOfNode(t).text;e.isLineBreak(m.charCodeAt(e.skipTrivia(m,t.expression.end,!0)-1))&&(f=e.createDiagnosticForNode(t.expression,e.Diagnostics.It_is_highly_likely_that_you_are_missing_a_semicolon))}mg(t.expression,_,0,f)}return jm(t)}return 8&n&&!t.typeArguments&&d.some(_g)?(Ly(t,n),er):d.some((function(t){return e.isInJSFile(t.declaration)&&!!e.getJSDocClassTag(t.declaration)}))?(Xr(t,e.Diagnostics.Value_of_type_0_is_not_callable_Did_you_mean_to_include_new,Ii(u)),jm(t)):sg(t,d,r,n,c)}(t,r,n);case 196:return pg(t,r,n);case 197:return function(e,t,r){var n=zy(e.tag),i=ms(n);if(i===xe)return jm(e);var a=xs(i,0),o=xs(i,1).length;return dg(n,i,a.length,o)?Bm(e):a.length?sg(e,a,t,r,!1):(mg(e.tag,i,0),jm(e))}(t,r,n);case 156:return hg(t,r,n);case 266:case 265:return bg(t,r,n)}throw e.Debug.assertNever(t,"Branch in 'resolveSignature' should be unreachable.")}function Dg(e,t,r){var n=dn(e),i=n.resolvedSignature;if(i&&i!==er&&!t)return i;n.resolvedSignature=er;var a=xg(e,t,r||0);return a!==er&&(n.resolvedSignature=dr===pr?a:i),a}function Sg(t){if(!t||!e.isInJSFile(t))return!1;var r=e.isFunctionDeclaration(t)||e.isFunctionExpression(t)?t:e.isVariableDeclaration(t)&&t.initializer&&e.isFunctionExpression(t.initializer)?t.initializer:void 0;if(r){if(e.getJSDocClassTag(t))return!0;var n=ri(r);return!!n&&e.hasEntries(n.members)}return!1}function Tg(t,r){if(r&&(e.hasEntries(r.exports)||e.hasEntries(r.members))){var n=_n(r);if(!n.inferredClassSymbol||!n.inferredClassSymbol.has(""+A(t))){var i=tn(t)?t:an(t);return i.exports=i.exports||e.createSymbolTable(),i.members=i.members||e.createSymbolTable(),i.flags|=32&r.flags,e.hasEntries(r.exports)&&un(i.exports,r.exports),e.hasEntries(r.members)&&un(i.members,r.members),(n.inferredClassSymbol||(n.inferredClassSymbol=e.createMap())).set(""+A(i),i),i}return n.inferredClassSymbol.get(""+A(t))}}function Eg(t,r){tx(t,t.typeArguments)||rx(t.arguments);var n=Dg(t,void 0,r);if(n===er)return Ke;if(101===t.expression.kind)return Re;if(196===t.kind){var i=n.declaration;if(i&&161!==i.kind&&165!==i.kind&&170!==i.kind&&!e.isJSDocConstructSignature(i)&&!Sg(i))return H&&Xr(t,e.Diagnostics.new_expression_whose_target_lacks_a_construct_signature_implicitly_has_an_any_type),he}if(e.isInJSFile(t)&&Ag(t))return function(e){var t=zn(e,e);if(t){var r=Wn(t);if(r)return wa(r)}return he}(t.arguments[0]);var a=zs(n);if(12288&a.flags&&Cg(t))return Gu(e.walkUpParenthesizedExpressions(t.parent));if(195===t.kind&&225===t.parent.kind&&16384&a.flags&&Js(n))if(e.isDottedName(t.expression)){if(!Np(t)){var o=Xr(t.expression,e.Diagnostics.Assertions_require_every_name_in_the_call_target_to_be_declared_with_an_explicit_type_annotation);kp(t.expression,o)}}else Xr(t.expression,e.Diagnostics.Assertions_require_the_call_target_to_be_an_identifier_or_qualified_name);if(e.isInJSFile(t)){var s=e.getDeclarationOfExpando(t);if(s){var c=ri(s);if(c&&e.hasEntries(c.exports)){var u=hi(c,c.exports,e.emptyArray,e.emptyArray,void 0,void 0);return u.objectFlags|=16384,iu([a,u])}}}return a}function Cg(t){if(!e.isCallExpression(t))return!1;var r=t.expression;if(e.isPropertyAccessExpression(r)&&"for"===r.name.escapedText&&(r=r.expression),!e.isIdentifier(r)||"Symbol"!==r.escapedText)return!1;var n=Pc(!1);return!!n&&n===gn(r,"Symbol",111551,void 0,void 0,!1)}function kg(t){if(rx(t.arguments)||function(t){if(z===e.ModuleKind.ES2015)return vx(t,e.Diagnostics.Dynamic_imports_are_only_supported_when_the_module_flag_is_set_to_esnext_commonjs_amd_system_or_umd);if(t.typeArguments)return vx(t,e.Diagnostics.Dynamic_import_cannot_have_type_arguments);var r=t.arguments;if(1!==r.length)return vx(t,e.Diagnostics.Dynamic_import_must_have_one_specifier_as_an_argument);if(Qb(r),e.isSpreadElement(r[0]))return vx(r[0],e.Diagnostics.Specifier_of_dynamic_import_cannot_be_spread_element)}(t),0===t.arguments.length)return Yg(t,he);for(var r=t.arguments[0],n=ky(r),i=1;i<t.arguments.length;++i)ky(t.arguments[i]);(32768&n.flags||65536&n.flags||!Fl(n,Ne))&&Xr(r,e.Diagnostics.Dynamic_import_s_specifier_must_be_of_type_string_but_here_has_type_0,Ii(n));var a=zn(t,r);if(a){var o=Gn(a,r,!0,!1);if(o)return Yg(t,Ng(wa(o),o,a))}return Yg(t,he)}function Ng(t,r,n){if(U&&t&&t!==xe){var i=t;if(!i.syntheticType)if(Nn(e.find(n.declarations,e.isSourceFile),n,!1)){var a=e.createSymbolTable(),o=en(2097152,"default");o.nameType=Wu("default"),o.target=On(r),a.set("default",o);var s=en(2048,"__type"),c=hi(s,a,e.emptyArray,e.emptyArray,void 0,void 0);s.type=c,i.syntheticType=Kf(t)?Bu(t,c,s,0,!1):c}else i.syntheticType=t;return i.syntheticType}return t}function Ag(t){if(!e.isRequireCall(t,!0))return!1;if(!e.isIdentifier(t.expression))return e.Debug.fail();var r=gn(t.expression,t.expression.escapedText,111551,void 0,void 0,!0);if(r===ae)return!0;if(2097152&r.flags)return!1;var n=16&r.flags?243:3&r.flags?241:0;if(0!==n){var i=e.getDeclarationOfKind(r,n);return!!i&&!!(8388608&i.flags)}return!1}function Fg(t){return function(t){if(t.questionDotToken||32&t.flags)return vx(t.template,e.Diagnostics.Tagged_template_expressions_are_not_permitted_in_an_optional_chain);return!1}(t)||tx(t,t.typeArguments),J<2&&Gb(t,131072),zs(Dg(t))}function Pg(t,r,n,i){var o=zy(n,i);if(e.isConstTypeReference(r))return function t(r){switch(r.kind){case 10:case 14:case 8:case 9:case 105:case 90:case 191:case 192:return!0;case 199:return t(r.expression);case 206:var n=r.operator,i=r.operand;return 40===n&&(8===i.kind||9===i.kind)||39===n&&8===i.kind;case 193:case 194:var a=r.expression;if(e.isIdentifier(a)){var o=cb(a);return o&&2097152&o.flags&&(o=Mn(o)),!!(o&&384&o.flags&&1===Qa(o))}}return!1}(n)||Xr(n,e.Diagnostics.A_const_assertions_can_only_be_applied_to_references_to_enum_members_or_string_number_boolean_array_or_object_literals),Vu(o);Gv(r),o=Q_(k_(o));var s=Yu(r);a&&s!==xe&&(wl(s,rd(o))||Ul(o,s,t,e.Diagnostics.Conversion_of_type_0_to_type_1_may_be_a_mistake_because_neither_type_sufficiently_overlaps_with_the_other_If_this_was_intentional_convert_the_expression_to_unknown_first));return s}function wg(t){return function(t){var r=t.name.escapedText;switch(t.keywordToken){case 98:if("target"!==r)return vx(t.name,e.Diagnostics._0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2,t.name.escapedText,e.tokenToString(t.keywordToken),"target");break;case 95:if("meta"!==r)vx(t.name,e.Diagnostics._0_is_not_a_valid_meta_property_for_keyword_1_Did_you_mean_2,t.name.escapedText,e.tokenToString(t.keywordToken),"meta")}}(t),98===t.keywordToken?function(t){var r=e.getNewTargetContainer(t);return r?161===r.kind?wa(ri(r.parent)):wa(ri(r)):(Xr(t,e.Diagnostics.Meta_property_0_is_only_allowed_in_the_body_of_a_function_declaration_function_expression_or_constructor,"new.target"),xe)}(t):95===t.keywordToken?function(t){z!==e.ModuleKind.ESNext&&z!==e.ModuleKind.System&&Xr(t,e.Diagnostics.The_import_meta_meta_property_is_only_allowed_when_the_module_option_is_esnext_or_system);var r=e.getSourceFileOfNode(t);return e.Debug.assert(!!(2097152&r.flags),"Containing file is missing import meta node flag."),e.Debug.assert(!!r.externalModuleIndicator,"Containing file should be a module."),"meta"===t.name.escapedText?function(){return Jt||(Jt=Fc("ImportMeta",0,!0))||Ge}():xe}(t):e.Debug.assertNever(t.keywordToken)}function Ig(t){var r=wa(t);if(V){var n=t.valueDeclaration;if(n&&e.hasInitializer(n))return z_(r)}return r}function Og(e,t){var r=e.parameters.length-(M(e)?1:0);if(t<r)return e.parameters[t].escapedName;var n=e.parameters[r]||ge,i=wa(n);if(w_(i)){var a=i.target.associatedNames,o=t-r;return a&&a[o]||n.escapedName+"_"+o}return n.escapedName}function Mg(e,t){return Lg(e,t)||he}function Lg(e,t){var r=e.parameters.length-(M(e)?1:0);if(t<r)return Ig(e.parameters[t]);if(M(e)){var n=wa(e.parameters[r]),i=t-r;if(!w_(n)||n.target.hasRestElement||i<_c(n).length)return Su(n,Wu(i))}}function Rg(e,t){var r=Bg(e),n=Jg(e),i=r-(n?1:0);if(n&&t===i)return n;for(var a=[],o=[],s=t;s<i;s++)a.push(Mg(e,s)),o.push(Og(e,s));n&&(a.push(Su(n,Ae)),o.push(Og(e,i)));var c=jg(e);return Uc(a,c<t?0:c-t,!!n,!1,o)}function Bg(e){var t=e.parameters.length;if(M(e)){var r=wa(e.parameters[t-1]);if(w_(r))return t+_c(r).length-1}return t}function jg(e){if(M(e)){var t=wa(e.parameters[e.parameters.length-1]);if(w_(t)){var r=t.target.minLength;if(r>0)return e.parameters.length-1+r}}return e.minArgumentCount}function Kg(e){if(M(e)){var t=wa(e.parameters[e.parameters.length-1]);return!w_(t)||t.target.hasRestElement}return!1}function Jg(e){if(M(e)){var t=wa(e.parameters[e.parameters.length-1]);return w_(t)?function(e){var t=I_(e);return t&&jc(t)}(t):t}}function zg(e){var t=Jg(e);return!t||y_(t)||Qi(t)?void 0:t}function Ug(e){return Vg(e,Be)}function Vg(e,t){return e.parameters.length>0?Mg(e,0):t}function qg(t,r){(t.typeParameters=r.typeParameters,r.thisParameter)&&((!(a=t.thisParameter)||a.valueDeclaration&&!a.valueDeclaration.type)&&(a||(t.thisParameter=X_(r.thisParameter,void 0)),Wg(t.thisParameter,wa(r.thisParameter))));for(var n=t.parameters.length-(M(t)?1:0),i=0;i<n;i++){var a=t.parameters[i];if(!e.getEffectiveTypeAnnotationNode(a.valueDeclaration))Wg(a,Mg(r,i))}M(t)&&(!tn(a=e.last(t.parameters))&&e.getEffectiveTypeAnnotationNode(a.valueDeclaration)||Wg(a,Rg(r,n)))}function Wg(t,r){var n=_n(t);if(!n.type){n.type=r;var i=t.valueDeclaration;75!==i.name.kind&&(n.type===De&&(n.type=ya(i.name)),function t(r){for(var n=0,i=r.elements;n<i.length;n++){var a=i[n];e.isOmittedExpression(a)||(75===a.name.kind?_n(ri(a)).type=ia(a):t(a.name))}}(i.name))}}function Gg(e){var t=Ic(!0);return t!==Qe?cc(t,[e=dh(e)||De]):De}function Hg(e){var t,r=(t=!0,kt||(kt=Fc("PromiseLike",1,t))||Qe);return r!==Qe?cc(r,[e=dh(e)||De]):De}function Yg(t,r){var n=Gg(r);return n===De?(Xr(t,e.isImportCall(t)?e.Diagnostics.A_dynamic_import_call_returns_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_include_ES2015_in_your_lib_option:e.Diagnostics.An_async_function_or_method_must_return_a_Promise_Make_sure_you_have_a_declaration_for_Promise_or_include_ES2015_in_your_lib_option),xe):(Oc(!0)||Xr(t,e.isImportCall(t)?e.Diagnostics.A_dynamic_import_call_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option:e.Diagnostics.An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option),n)}function Xg(t,r){if(!t.body)return xe;var n,i,a,o=e.getFunctionFlags(t),s=0!=(2&o),c=0!=(1&o),u=Re;if(222!==t.body.kind)n=ky(t.body,r&&-9&r),s&&(n=_h(n,t,e.Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member));else if(c){var l=ry(t,r);l?l.length>0&&(n=Qc(l,2)):u=Be;var _=function(t,r){var n=[],i=[],a=0!=(2&e.getFunctionFlags(t));return e.forEachYieldExpression(t.body,(function(t){var o,s=t.expression?zy(t.expression,r):Te;if(e.pushIfUnique(n,$g(t,s,he,a)),t.asteriskToken){var c=iv(s,a?19:17,t.expression);o=c&&c.nextType}else o=xf(t);o&&e.pushIfUnique(i,o)})),{yieldTypes:n,nextTypes:i}}(t,r),d=_.yieldTypes,p=_.nextTypes;i=e.some(d)?Qc(d,2):void 0,a=e.some(p)?iu(p):void 0}else{var f=ry(t,r);if(!f)return 2&o?Yg(t,Be):Be;if(0===f.length)return 2&o?Yg(t,Re):Re;n=Qc(f,2)}if(n||i||a){var m=kf(t);if(m||(i&&ad(t,i,1),n&&ad(t,n),a&&ad(t,a)),n&&E_(n)||i&&E_(i)||a&&E_(a)){var g=m?m===Ls(t)?c?void 0:n:vf(zs(m),t):void 0;c?(i=P_(i,g,0,s),n=P_(n,g,1,s),a=P_(a,g,2,s)):n=function(e,t,r){return e&&E_(e)&&(e=F_(e,t?r?lh(t):t:void 0)),e}(n,g,s)}i&&(i=rd(i)),n&&(n=rd(n)),a&&(a=rd(a))}return c?Qg(i||Be,n||u,a||of(2,t)||De,s):s?Gg(n||u):n||u}function Qg(e,t,r,n){var i=n?cr:ur,a=i.getGlobalGeneratorType(!1);if(e=i.resolveIterationType(e,void 0)||De,t=i.resolveIterationType(t,void 0)||De,r=i.resolveIterationType(r,void 0)||De,a===Qe){var o=i.getGlobalIterableIteratorType(!1),s=o!==Qe?cv(o,i):void 0,c=s?s.returnType:he,u=s?s.nextType:Se;return Fl(t,c)&&Fl(u,r)?o!==Qe?Rc(o,[e]):(i.getGlobalIterableIteratorType(!0),Ge):(i.getGlobalGeneratorType(!0),Ge)}return Rc(a,[e,t,r])}function $g(t,r,n,i){var a=t.expression||t,o=t.asteriskToken?Zh(i?19:17,r,n,a):r;return i?dh(o,a,t.asteriskToken?e.Diagnostics.Type_of_iterated_elements_of_a_yield_Asterisk_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member:e.Diagnostics.Type_of_yield_operand_in_an_async_generator_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member):o}function Zg(e,t,r,n){var i=0;if(n){for(var a=t;a<r.length;a++)i|=S.get(r[a])||32768;for(a=e;a<t;a++)i&=~(S.get(r[a])||0);for(a=0;a<e;a++)i|=S.get(r[a])||32768}else{for(a=e;a<t;a++)i|=D.get(r[a])||128;for(a=0;a<e;a++)i&=~(D.get(r[a])||0)}return i}function ey(t){var r=dn(t);return void 0!==r.isExhaustive?r.isExhaustive:r.isExhaustive=function(t){if(203===t.expression.kind){var r=Ky(t.expression.expression),n=Zg(0,0,sp(t),!0);return!!(131072&_p(cs(r)||r,(function(e){return(Gd(e)&n)===n})).flags)}var i=Ky(t.expression);if(!C_(i))return!1;var a=op(t);if(!a.length||e.some(a,T_))return!1;return function(t,r){return 1048576&t.flags?!e.forEach(t.types,(function(t){return!e.contains(r,t)})):e.contains(r,t)}(pp(i,Vu),a)}(t)}function ty(e){return e.endFlowNode&&Fp(e.endFlowNode)}function ry(t,r){var n=e.getFunctionFlags(t),i=[],a=ty(t),o=!1;if(e.forEachReturnStatement(t.body,(function(s){var c=s.expression;if(c){var u=ky(c,r&&-9&r);2&n&&(u=_h(u,t,e.Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member)),131072&u.flags&&(o=!0),e.pushIfUnique(i,u)}else a=!0})),0!==i.length||a||!o&&!function(e){switch(e.kind){case 200:case 201:return!0;case 160:return 192===e.parent.kind;default:return!1}}(t))return!(V&&i.length&&a)||Sg(t)&&i.some((function(e){return e.symbol===t.symbol}))||e.pushIfUnique(i,Se),i}function ny(t,r){if(a){var n=e.getFunctionFlags(t),i=r&&oy(r,n);if((!i||!fy(i,16385))&&159!==t.kind&&!e.nodeIsMissing(t.body)&&222===t.body.kind&&ty(t)){var o=512&t.flags;if(i&&131072&i.flags)Xr(e.getEffectiveReturnTypeNode(t),e.Diagnostics.A_function_returning_never_cannot_have_a_reachable_end_point);else if(i&&!o)Xr(e.getEffectiveReturnTypeNode(t),e.Diagnostics.A_function_whose_declared_type_is_neither_void_nor_any_must_return_a_value);else if(i&&V&&!Fl(Se,i))Xr(e.getEffectiveReturnTypeNode(t),e.Diagnostics.Function_lacks_ending_return_statement_and_return_type_does_not_include_undefined);else if(K.noImplicitReturns){if(!i){if(!o)return;if(Tv(t,zs(Ls(t))))return}Xr(e.getEffectiveReturnTypeNode(t)||t,e.Diagnostics.Not_all_code_paths_return_a_value)}}}}function iy(t,r){if(e.Debug.assert(160!==t.kind||e.isObjectLiteralMethod(t)),Yv(t),r&&4&r&&bl(t)){if(!e.getEffectiveReturnTypeNode(t)&&Dl(t)){var n=dn(t);if(n.contextFreeType)return n.contextFreeType;var i=Xg(t,r),a=To(void 0,void 0,void 0,e.emptyArray,i,void 0,0,0),o=hi(t.symbol,B,[a],e.emptyArray,void 0,void 0);return o.objectFlags|=1048576,n.contextFreeType=o}return $e}ex(t)||200!==t.kind||ox(t);var s=wa(ti(t.symbol));return Qi(s)?s:(ay(t,r),s)}function ay(t,r){var n=dn(t);if(!(1024&n.flags)){var i=Nf(t);if(!(1024&n.flags)){if(n.flags|=1024,i){var a=wa(ti(t.symbol));if(Qi(a))return;var o=xs(a,0)[0];if(bl(t)){var s=Df(t);r&&2&r&&function(t,r,n){for(var i=t.parameters.length-(M(t)?1:0),a=0;a<i;a++){var o=t.parameters[a].valueDeclaration;if(o.type){var s=e.getEffectiveTypeAnnotationNode(o);s&&Sd(n.inferences,Yu(s),Mg(r,a))}}var c=Jg(r);if(c&&262144&c.flags){qg(t,sl(r,n.nonFixingMapper));var u=Bg(r)-1;Sd(n.inferences,Rg(t,u),c)}}(o,i,s),qg(o,s?sl(i,s.mapper):i)}if(!Us(t)&&!o.resolvedReturnType){var c=Xg(t,r);o.resolvedReturnType||(o.resolvedReturnType=c)}}Wy(t)}}}function oy(e,t){var r=!!(2&t);return e&&!!(1&t)?bv(1,e,r)||xe:e&&r?dh(e)||xe:e}function sy(e,t,r,n){if(void 0===n&&(n=!1),!Fl(t,We)){var i=n&&uh(t);return Zr(e,!!i&&Fl(i,We),r),!1}return!0}function cy(t){if(!e.isCallExpression(t))return!1;if(!e.isBindableObjectDefinePropertyCall(t))return!1;var r=ky(t.arguments[2]);if(Xi(r,"value")){var n=vs(r,"writable"),i=n&&wa(n);if(!i||i===Pe||i===we)return!0;if(n&&n.valueDeclaration&&e.isPropertyAssignment(n.valueDeclaration)){var a=zy(n.valueDeclaration.initializer);if(a===Pe||a===we)return!0}return!1}return!vs(r,"set")}function uy(t){return!!(8&e.getCheckFlags(t)||4&t.flags&&64&e.getDeclarationModifierFlagsFromSymbol(t)||3&t.flags&&2&om(t)||98304&t.flags&&!(65536&t.flags)||8&t.flags||e.some(t.declarations,cy))}function ly(t,r){if(uy(r)){if(4&r.flags&&(193===t.kind||194===t.kind)&&103===t.expression.kind){var n=e.getContainingFunction(t);return!n||161!==n.kind||(!r.valueDeclaration||!(n.parent===r.valueDeclaration.parent||n===r.valueDeclaration.parent))}return!0}return!1}function _y(t){if(193===t.kind||194===t.kind){var r=e.skipParentheses(t.expression);if(75===r.kind){var n=dn(r).resolvedSymbol;if(2097152&n.flags){var i=En(n);return!!i&&255===i.kind}}}return!1}function dy(t,r,n){var i=e.skipOuterExpressions(t,3);return 75!==i.kind&&193!==i.kind&&194!==i.kind?(Xr(t,r),!1):!(32&i.flags)||(Xr(t,n),!1)}function py(e){return fy(e,2112)?my(e,3)||fy(e,296)?We:Fe:Ae}function fy(e,t){if(e.flags&t&-131073||131072&t&&Xo(e))return!0;if(3145728&e.flags)for(var r=0,n=e.types;r<n.length;r++){if(fy(n[r],t))return!0}return!1}function my(e,t,r){return!!(e.flags&t)||!(r&&114691&e.flags)&&(!!(296&t)&&Fl(e,Ae)||!!(2112&t)&&Fl(e,Fe)||!!(132&t)&&Fl(e,Ne)||!!(528&t)&&Fl(e,Me)||!!(16384&t)&&Fl(e,Re)||!!(131072&t)&&Fl(e,Be)||!!(65536&t)&&Fl(e,Ce)||!!(32768&t)&&Fl(e,Se)||!!(4096&t)&&Fl(e,Le)||!!(67108864&t)&&Fl(e,Ue))}function gy(t,r,n){return 1048576&t.flags?e.every(t.types,(function(e){return gy(e,r,n)})):my(t,r,n)}function yy(t){return!!(16&e.getObjectFlags(t))&&!!t.symbol&&hy(t.symbol)}function hy(e){return 0!=(128&e.flags)}function vy(t,r,n,i,a){void 0===a&&(a=!1);var o=t.properties,s=o[n];if(279===s.kind||280===s.kind){var c=s.name,u=ou(c);if(_o(u)){var l=vs(r,yo(u));l&&(Fm(l,s,a),cm(s,!1,r,l))}var _=ta(s,Su(r,u,c));return xy(280===s.kind?s:s.initializer,_)}if(281===s.kind){if(!(n<o.length-1)){J<99&&Gb(s,4);var d=[];if(i)for(var p=0,f=i;p<f.length;p++){var m=f[p];e.isSpreadAssignment(m)||d.push(m.name)}_=ea(r,d,r.symbol);return Qb(i,e.Diagnostics.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma),xy(s.expression,_)}Xr(s,e.Diagnostics.A_rest_element_must_be_last_in_a_destructuring_pattern)}else Xr(s,e.Diagnostics.Property_assignment_expected)}function by(t,r,n,i,a){var o=t.elements,s=o[n];if(214!==s.kind){if(212!==s.kind){var c=Wu(n);if(b_(r)){var u=Af(s)?8:0,l=Tu(r,c,tg(s,c),u)||xe;return xy(s,ta(s,Af(s)?Hd(l,524288):l),a)}return xy(s,i,a)}if(n<o.length-1)Xr(s,e.Diagnostics.A_rest_element_must_be_last_in_a_destructuring_pattern);else{var _=s.expression;if(208!==_.kind||62!==_.operatorToken.kind)return Qb(t.elements,e.Diagnostics.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma),xy(_,lp(r,w_)?pp(r,(function(e){return Vc(e,n)})):jc(i),a);Xr(_.operatorToken,e.Diagnostics.A_rest_element_cannot_have_an_initializer)}}}function xy(t,r,n,i){var a;if(280===t.kind){var o=t;o.objectAssignmentInitializer&&(!V||32768&R_(zy(o.objectAssignmentInitializer))||(r=Hd(r,524288)),Ty(o.name,o.equalsToken,o.objectAssignmentInitializer,n)),a=t.name}else a=t;return 208===a.kind&&62===a.operatorToken.kind&&(Sy(a,n),a=a.left),192===a.kind?function(e,t,r){var n=e.properties;if(V&&0===n.length)return gm(t,e);for(var i=0;i<n.length;i++)vy(e,t,i,n,r);return t}(a,r,i):191===a.kind?function(e,t,r){var n=e.elements;J<2&&K.downlevelIteration&&Gb(e,512);for(var i=Zh(65,t,Se,e)||xe,a=0;a<n.length;a++)by(e,t,a,i,r);return t}(a,r,n):function(t,r,n){var i=zy(t,n),a=281===t.parent.kind?e.Diagnostics.The_target_of_an_object_rest_assignment_must_be_a_variable_or_a_property_access:e.Diagnostics.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access,o=281===t.parent.kind?e.Diagnostics.The_target_of_an_object_rest_assignment_may_not_be_an_optional_property_access:e.Diagnostics.The_left_hand_side_of_an_assignment_expression_may_not_be_an_optional_property_access;dy(t,a,o)&&Ml(r,i,t,t);return r}(a,r,n)}function Dy(e,t){return 0!=(98304&t.flags)||wl(e,t)}function Sy(t,r){return e.isInJSFile(t)&&e.getAssignedExpandoInitializer(t)?zy(t.right,r):(function(t){var r=t.left,n=t.operatorToken,i=t.right;60===n.kind&&(!e.isBinaryExpression(r)||56!==r.operatorToken.kind&&55!==r.operatorToken.kind||vx(r,e.Diagnostics._0_and_1_operations_cannot_be_mixed_without_parentheses,e.tokenToString(r.operatorToken.kind),e.tokenToString(n.kind)),!e.isBinaryExpression(i)||56!==i.operatorToken.kind&&55!==i.operatorToken.kind||vx(i,e.Diagnostics._0_and_1_operations_cannot_be_mixed_without_parentheses,e.tokenToString(i.operatorToken.kind),e.tokenToString(n.kind)))}(t),Ty(t.left,t.operatorToken,t.right,r,t))}function Ty(t,r,n,i,o){var s,c=r.kind;if(62===c&&(192===t.kind||191===t.kind))return xy(t,zy(n,i),i,103===n.kind);s=55===c||56===c||60===c?Yh(t,i):zy(t,i);var u=zy(n,i);switch(c){case 41:case 42:case 65:case 66:case 43:case 67:case 44:case 68:case 40:case 64:case 47:case 69:case 48:case 70:case 49:case 71:case 51:case 73:case 52:case 74:case 50:case 72:if(s===je||u===je)return je;s=gm(s,t),u=gm(u,n);var l=void 0;if(528&s.flags&&528&u.flags&&void 0!==(l=function(e){switch(e){case 51:case 73:return 56;case 52:case 74:return 37;case 50:case 72:return 55;default:return}}(r.kind)))return Xr(o||r,e.Diagnostics.The_0_operator_is_not_allowed_for_boolean_types_Consider_using_1_instead,e.tokenToString(r.kind),e.tokenToString(l)),Ae;var _,d=sy(t,s,e.Diagnostics.The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type,!0),p=sy(n,u,e.Diagnostics.The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type,!0);if(my(s,3)&&my(u,3)||!fy(s,2112)&&!fy(u,2112))_=Ae;else if(g(s,u)){switch(c){case 49:case 71:b()}_=Fe}else b(g),_=xe;return d&&p&&h(_),_;case 39:case 63:if(s===je||u===je)return je;my(s,132)||my(u,132)||(s=gm(s,t),u=gm(u,n));var f=void 0;if(my(s,296,!0)&&my(u,296,!0)?f=Ae:my(s,2112,!0)&&my(u,2112,!0)?f=Fe:my(s,132,!0)||my(u,132,!0)?f=Ne:(Qi(s)||Qi(u))&&(f=s===xe||u===xe?xe:he),f&&!y(c))return f;if(!f){return b((function(e,t){return my(e,2543)&&my(t,2543)})),he}return 63===c&&h(f),f;case 29:case 31:case 32:case 33:return y(c)&&(s=k_(gm(s,t)),u=k_(gm(u,n)),v((function(e,t){return wl(e,t)||wl(t,e)||Fl(e,We)&&Fl(t,We)}))),Me;case 34:case 35:case 36:case 37:return v((function(e,t){return Dy(e,t)||Dy(t,e)})),Me;case 97:return function(t,r,n,i){return n===je||i===je?je:(!Qi(n)&&gy(n,131068)&&Xr(t,e.Diagnostics.The_left_hand_side_of_an_instanceof_expression_must_be_of_type_any_an_object_type_or_a_type_parameter),Qi(i)||mb(i)||Al(i,ut)||Xr(r,e.Diagnostics.The_right_hand_side_of_an_instanceof_expression_must_be_of_type_any_or_of_a_type_assignable_to_the_Function_interface_type),Me)}(t,n,s,u);case 96:return function(t,r,n,i){return n===je||i===je?je:(n=gm(n,t),i=gm(i,r),wl(n,Ne)||my(n,12584)||Xr(t,e.Diagnostics.The_left_hand_side_of_an_in_expression_must_be_of_type_any_string_number_or_symbol),gy(i,126091264)||Xr(r,e.Diagnostics.The_right_hand_side_of_an_in_expression_must_be_of_type_any_an_object_type_or_a_type_parameter),Me)}(t,n,s,u);case 55:return 4194304&Gd(s)?Qc([j_(V?s:k_(u)),u]):s;case 56:return 8388608&Gd(s)?Qc([B_(s),u],2):s;case 60:return 262144&Gd(s)?Qc([U_(s),u],2):s;case 62:var m=e.isBinaryExpression(t.parent)?e.getAssignmentDeclarationKind(t.parent):0;return function(t,r){if(2===t)for(var n=0,i=$o(r);n<i.length;n++){var a=i[n],o=wa(a);if(o.symbol&&32&o.symbol.flags){var s=a.escapedName,c=gn(a.valueDeclaration,s,788968,void 0,s,!1);if(c&&c.declarations.some(e.isJSDocTypedefTag))return vx(c.declarations[0],e.Diagnostics.Duplicate_identifier_0,e.unescapeLeadingUnderscores(s)),vx(a.valueDeclaration,e.Diagnostics.Duplicate_identifier_0,e.unescapeLeadingUnderscores(s))}}}(m,u),function(r){switch(r){case 2:return!0;case 1:case 5:case 6:case 3:case 4:var i=ri(t),a=e.getAssignedExpandoInitializer(n);return a&&e.isObjectLiteralExpression(a)&&i&&e.hasEntries(i.exports);default:return!1}}(m)?(524288&u.flags&&(2===m||6===m||Wl(u)||Wd(u)||1&e.getObjectFlags(u))||h(u),s):(h(u),Q_(u));case 27:return K.allowUnreachableCode||!function t(r){switch((r=e.skipParentheses(r)).kind){case 75:case 10:case 13:case 197:case 210:case 14:case 8:case 9:case 105:case 90:case 99:case 145:case 200:case 213:case 201:case 191:case 192:case 203:case 217:case 265:case 264:return!0;case 209:return t(r.whenTrue)&&t(r.whenFalse);case 208:return!e.isAssignmentOperator(r.operatorToken.kind)&&(t(r.left)&&t(r.right));case 206:case 207:switch(r.operator){case 53:case 39:case 40:case 54:return!0}return!1;case 204:case 198:case 216:default:return!1}}(t)||function(e){return 75===e.kind&&"eval"===e.escapedText}(n)||Xr(t,e.Diagnostics.Left_side_of_comma_operator_is_unused_and_has_no_side_effects),u;default:return e.Debug.fail()}function g(e,t){return my(e,2112)&&my(t,2112)}function y(r){var i=fy(s,12288)?t:fy(u,12288)?n:void 0;return!i||(Xr(i,e.Diagnostics.The_0_operator_cannot_be_applied_to_type_symbol,e.tokenToString(r)),!1)}function h(r){a&&e.isAssignmentOperator(c)&&(!dy(t,e.Diagnostics.The_left_hand_side_of_an_assignment_expression_must_be_a_variable_or_a_property_access,e.Diagnostics.The_left_hand_side_of_an_assignment_expression_may_not_be_an_optional_property_access)||e.isIdentifier(t)&&"exports"===e.unescapeLeadingUnderscores(t.escapedText)||Ml(r,s,t,n))}function v(e){return!e(s,u)&&(b(e),!0)}function b(t){var n,i=!1,a=o||r;if(t){var c=dh(s),l=dh(u);i=!(c===s&&l===u)&&!(!c||!l)&&t(c,l)}var _=s,d=u;!i&&t&&(n=function(e,t,r){var n=e,i=t,a=k_(e),o=k_(t);r(a,o)||(n=a,i=o);return[n,i]}(s,u,t),_=n[0],d=n[1]);var p=Oi(_,d),f=p[0],m=p[1];(function(t,n,i,a){var o;switch(r.kind){case 36:case 34:o="false";break;case 37:case 35:o="true"}if(o)return Zr(t,n,e.Diagnostics.This_condition_will_always_return_0_since_the_types_1_and_2_have_no_overlap,o,i,a);return})(a,i,f,m)||Zr(a,i,e.Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2,e.tokenToString(r.kind),f,m)}}function Ey(t){a&&(8192&t.flags&&!function(t){for(var r=t,n=t.parent;n;){if(e.isFunctionLike(n)&&r===n.body)return!1;if(e.isClassLike(r))return!0;r=n,n=n.parent}return!1}(t)||yx(t,e.Diagnostics.A_yield_expression_is_only_allowed_in_a_generator_body),af(t)&&Xr(t,e.Diagnostics.yield_expressions_cannot_be_used_in_a_parameter_initializer));var r=e.getContainingFunction(t);if(!r)return he;var n=e.getFunctionFlags(r);if(!(1&n))return he;var i=0!=(2&n);t.asteriskToken&&(i&&J<99&&Gb(t,53248),!i&&J<2&&K.downlevelIteration&&Gb(t,256));var o=Us(r),s=o&&xv(o,i),c=s&&s.yieldType||he,u=s&&s.nextType||he,l=i?dh(u)||he:u,_=t.expression?zy(t.expression):Te,d=$g(t,_,l,i);return o&&d&&Ml(d,c,t.expression||t,t.expression),t.asteriskToken?tv(i?19:17,1,_,t.expression)||he:o?bv(2,o,i)||he:of(2,r)||he}function Cy(t,r,n,i){var a=function(t){return 272!==t.kind||e.isJsxSelfClosingElement(t.parent)?t:t.parent.parent}(t),o=a.contextualType,s=a.inferenceContext;a.contextualType=r,a.inferenceContext=n;var c=zy(t,1|i|(n?2:0)),u=fy(c,2944)&&Fy(c,vf(r,t))?Vu(c):c;return a.contextualType=o,a.inferenceContext=s,u}function ky(e,t){var r=dn(e);if(!r.resolvedType){if(t&&0!==t)return zy(e,t);var n=dr;dr=pr,r.resolvedType=zy(e,t),dr=n}return r.resolvedType}function Ny(t){return 198===(t=e.skipParentheses(t)).kind||216===t.kind}function Ay(t){var r=e.getEffectiveInitializer(t),n=Ky(r,!0),i=e.isParameter(t)&&189===t.name.kind&&w_(n)&&!n.target.hasRestElement&&dc(n)<t.name.elements.length?function(t,r){for(var n=r.elements,i=dc(t),a=i?_c(t).slice():[],o=i;o<n.length;o++){var s=n[o];(o<n.length-1||190!==s.kind||!s.dotDotDotToken)&&(a.push(!e.isOmittedExpression(s)&&Af(s)?ma(s,!1,!1):he),e.isOmittedExpression(s)||Af(s)||id(s,he))}return Uc(a,t.target.minLength,!1,t.target.readonly)}(n,t.name):n,a=2&e.getCombinedNodeFlags(t)||e.isDeclarationReadonly(t)||Ny(r)||Fy(i,xf(r))?i:N_(i);if(e.isInJSFile(t)){if(98304&a.flags)return id(t,he),he;if(x_(a))return id(t,vt),vt}return a}function Fy(t,r){if(r){if(3145728&r.flags){var n=r.types;return e.some(n,(function(e){return Fy(t,e)}))}if(58982400&r.flags){var i=cs(r)||De;return fy(i,4)&&fy(t,128)||fy(i,8)&&fy(t,256)||fy(i,64)&&fy(t,2048)||fy(i,4096)&&fy(t,8192)||Fy(t,i)}return!!(4194432&r.flags&&fy(t,128)||256&r.flags&&fy(t,256)||2048&r.flags&&fy(t,2048)||512&r.flags&&fy(t,512)||8192&r.flags&&fy(t,8192))}return!1}function Py(t){var r=t.parent;return e.isAssertionExpression(r)&&e.isConstTypeReference(r.type)||(e.isParenthesizedExpression(r)||e.isArrayLiteralExpression(r)||e.isSpreadElement(r))&&Py(r)||(e.isPropertyAssignment(r)||e.isShorthandPropertyAssignment(r))&&Py(r.parent)}function wy(e,t,r,n){var i=zy(e,t,n);return Py(e)?Vu(i):Ny(e)?i:F_(i,vf(2===arguments.length?xf(e):r,e))}function Iy(e,t){return 153===e.name.kind&&Lf(e.name),wy(e.initializer,t)}function Oy(e,t){return dx(e),153===e.name.kind&&Lf(e.name),My(e,iy(e,t),t)}function My(t,r,n){if(n&&10&n){var i=Gm(r,0,!0),a=Gm(r,1,!0),o=i||a;if(o&&o.typeParameters){var s=hf(t,2);if(s){var c=Gm(U_(s),i?0:1,!1);if(c&&!c.typeParameters){if(8&n)return Ly(t,n),$e;var u=Df(t),l=u.signature&&zs(u.signature),_=l&&Wm(l);if(_&&!_.typeParameters&&!e.every(u.inferences,Ry)){var d=function(t,r){for(var n,i,a=[],o=0,s=r;o<s.length;o++){var c=(p=s[o]).symbol.escapedName;if(By(t.inferredTypeParameters,c)||By(a,c)){var u=fi(en(262144,jy(e.concatenate(t.inferredTypeParameters,a),c)));u.target=p,n=e.append(n,p),i=e.append(i,u),a.push(u)}else a.push(p)}if(i)for(var l=el(n,i),_=0,d=i;_<d.length;_++){var p;(p=d[_]).mapper=l}return a}(u,o.typeParameters),p=Gs(o,d),f=e.map(u.inferences,(function(e){return dd(e.typeParameter)}));if(od(p,c,(function(e,t){Sd(f,e,t,0,!0)})),e.some(f,Ry)&&(sd(p,c,(function(e,t){Sd(f,e,t)})),!function(e,t){for(var r=0;r<e.length;r++)if(Ry(e[r])&&Ry(t[r]))return!0;return!1}(u.inferences,f)))return function(e,t){for(var r=0;r<e.length;r++)!Ry(e[r])&&Ry(t[r])&&(e[r]=t[r])}(u.inferences,f),u.inferredTypeParameters=e.concatenate(u.inferredTypeParameters,d),$s(p)}return $s(Hm(o,c,u))}}}}return r}function Ly(e,t){2&t&&(Df(e).flags|=4)}function Ry(e){return!(!e.candidates&&!e.contraCandidates)}function By(t,r){return e.some(t,(function(e){return e.symbol.escapedName===r}))}function jy(e,t){for(var r=t.length;r>1&&t.charCodeAt(r-1)>=48&&t.charCodeAt(r-1)<=57;)r--;for(var n=t.slice(0,r),i=1;;i++){var a=n+i;if(!By(e,a))return a}}function Ky(t,r){var n=e.skipParentheses(t);if(!e.isCallExpression(n)||101===n.expression.kind||e.isRequireCall(n,!0)||Cg(n)){if(e.isAssertionExpression(n)&&!e.isConstTypeReference(n.type))return Yu(n.type)}else{var i=void 0,a=void 0;if(e.isCallChain(n)){var o=H_(a=zy(n.expression),n.expression);i=a!==o,a=gm(o,n.expression)}else i=!1,a=lm(n.expression);var s=qm(a);if(s&&!s.typeParameters)return G_(zs(s),i)}return r?ky(t):zy(t)}function Jy(e){var t=dn(e);if(t.contextFreeType)return t.contextFreeType;var r=e.contextualType;e.contextualType=he;var n=t.contextFreeType=zy(e,4);return e.contextualType=r,n}function zy(t,r,n){var i=l;l=t,x=0;var s=My(t,function(t,r,n){var i=t.kind;if(o)switch(i){case 213:case 200:case 201:o.throwIfCancellationRequested()}switch(i){case 75:return Up(t);case 103:return Yp(t);case 101:return $p(t);case 99:return ke;case 14:case 10:return Uu(Wu(t.text));case 8:return Dx(t),Uu(Wu(+t.text));case 9:return function(t){if(!(e.isLiteralTypeNode(t.parent)||e.isPrefixUnaryExpression(t.parent)&&e.isLiteralTypeNode(t.parent.parent))&&J<99&&vx(t,e.Diagnostics.BigInt_literals_are_not_available_when_targeting_lower_than_ESNext))return!0}(t),Uu(function(t){return Wu({negative:!1,base10Value:e.parsePseudoBigInt(t.text)})}(t));case 105:return Ie;case 90:return Pe;case 210:return function(t){return e.forEach(t.templateSpans,(function(t){fy(zy(t.expression),12288)&&Xr(t.expression,e.Diagnostics.Implicit_conversion_of_a_symbol_to_a_string_will_fail_at_runtime_Consider_wrapping_this_expression_in_String)})),Ne}(t);case 13:return yt;case 191:return Ff(t,r,n);case 192:return jf(t,r);case 193:return hm(t);case 152:return vm(t);case 194:return Om(t);case 195:if(95===t.expression.kind)return kg(t);case 196:return Eg(t,r);case 197:return Fg(t);case 199:return function(t,r){var n=e.isInJSFile(t)?e.getJSDocTypeTag(t):void 0;if(n)return Pg(n,n.typeExpression.type,t.expression,r);return zy(t.expression,r)}(t,r);case 213:return function(e){return Pv(e),Yv(e),wa(ri(e))}(t);case 200:case 201:return iy(t,r);case 203:return function(e){return zy(e.expression),zr}(t);case 198:case 216:return function(e){return Pg(e,e.type,e.expression)}(t);case 217:return function(e){return U_(zy(e.expression))}(t);case 218:return wg(t);case 202:return function(t){zy(t.expression);var r=e.skipParentheses(t.expression);if(193!==r.kind&&194!==r.kind)return Xr(r,e.Diagnostics.The_operand_of_a_delete_operator_must_be_a_property_reference),Me;var n=si(dn(r).resolvedSymbol);return n&&uy(n)&&Xr(r,e.Diagnostics.The_operand_of_a_delete_operator_cannot_be_a_read_only_property),Me}(t);case 204:return function(e){return zy(e.expression),Te}(t);case 205:return function(t){if(a){if(!(32768&t.flags)){var r=e.getSourceFileOfNode(t);if(!gx(r)){var n=e.getSpanOfTokenAtPosition(r,t.pos),i=e.createFileDiagnostic(r,n.start,n.length,e.Diagnostics.await_expression_is_only_allowed_within_an_async_function),o=e.getContainingFunction(t);if(o&&161!==o.kind){e.Debug.assert(0==(2&e.getFunctionFlags(o)),"Enclosing function should never be an async function.");var s=e.createDiagnosticForNode(o,e.Diagnostics.Did_you_mean_to_mark_this_function_as_async);e.addRelatedInfo(i,s)}jr.add(i)}}af(t)&&Xr(t,e.Diagnostics.await_expressions_cannot_be_used_in_a_parameter_initializer)}var c=zy(t.expression),u=_h(c,t,e.Diagnostics.Type_of_await_operand_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member);return u!==c||u===xe||3&c.flags||Qr(!1,e.createDiagnosticForNode(t,e.Diagnostics.await_has_no_effect_on_the_type_of_this_expression)),u}(t);case 206:return function(t){var r=zy(t.operand);if(r===je)return je;switch(t.operand.kind){case 8:switch(t.operator){case 40:return Uu(Wu(-t.operand.text));case 39:return Uu(Wu(+t.operand.text))}break;case 9:if(40===t.operator)return Uu(Wu({negative:!0,base10Value:e.parsePseudoBigInt(t.operand.text)}))}switch(t.operator){case 39:case 40:case 54:return gm(r,t.operand),fy(r,12288)&&Xr(t.operand,e.Diagnostics.The_0_operator_cannot_be_applied_to_type_symbol,e.tokenToString(t.operator)),39===t.operator?(fy(r,2112)&&Xr(t.operand,e.Diagnostics.Operator_0_cannot_be_applied_to_type_1,e.tokenToString(t.operator),Ii(k_(r))),Ae):py(r);case 53:Yh(t.operand);var n=12582912&Gd(r);return 4194304===n?Pe:8388608===n?Ie:Me;case 45:case 46:return sy(t.operand,gm(r,t.operand),e.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_bigint_or_an_enum_type)&&dy(t.operand,e.Diagnostics.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access,e.Diagnostics.The_operand_of_an_increment_or_decrement_operator_may_not_be_an_optional_property_access),py(r)}return xe}(t);case 207:return function(t){var r=zy(t.operand);return r===je?je:(sy(t.operand,gm(r,t.operand),e.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_bigint_or_an_enum_type)&&dy(t.operand,e.Diagnostics.The_operand_of_an_increment_or_decrement_operator_must_be_a_variable_or_a_property_access,e.Diagnostics.The_operand_of_an_increment_or_decrement_operator_may_not_be_an_optional_property_access),py(r))}(t);case 208:return Sy(t,r);case 209:return function(e,t){return Yh(e.condition),Qc([zy(e.whenTrue,t),zy(e.whenFalse,t)],2)}(t,r);case 212:return function(e,t){return J<2&&Gb(e,K.downlevelIteration?1536:2048),Zh(33,zy(e.expression,t),Se,e.expression)}(t,r);case 214:return Te;case 211:return Ey(t);case 219:return t.type;case 274:return am(t,r);case 264:case 265:return function(e,t){return Yv(e),em(e)||he}(t);case 268:return function(t){return rm(t.openingFragment),2===K.jsx&&(K.jsxFactory||e.getSourceFileOfNode(t).pragmas.has("jsx"))&&Xr(t,K.jsxFactory?e.Diagnostics.JSX_fragment_is_not_supported_when_using_jsxFactory:e.Diagnostics.JSX_fragment_is_not_supported_when_using_an_inline_JSX_factory_pragma),Vf(t),em(t)||he}(t);case 272:return qf(t,r);case 266:e.Debug.fail("Shouldn't ever directly check a JsxOpeningElement")}return xe}(t,r,n),r);return yy(s)&&function(t,r){193===t.parent.kind&&t.parent.expression===t||194===t.parent.kind&&t.parent.expression===t||(75===t.kind||152===t.kind)&&ob(t)||171===t.parent.kind&&t.parent.exprName===t||261===t.parent.kind||Xr(t,e.Diagnostics.const_enums_can_only_be_used_in_property_or_index_access_expressions_or_the_right_hand_side_of_an_import_declaration_or_export_assignment_or_type_query);if(K.isolatedModules){e.Debug.assert(!!(128&r.symbol.flags)),8388608&r.symbol.valueDeclaration.flags&&Xr(t,e.Diagnostics.Cannot_access_ambient_const_enums_when_the_isolatedModules_flag_is_provided)}}(t,s),l=i,s}function Uy(t){t.expression&&yx(t.expression,e.Diagnostics.Type_expected),Gv(t.constraint),Gv(t.default);var r=to(ri(t));cs(r),function(e){return ds(e)!==et}(r)||Xr(t.default,e.Diagnostics.Type_parameter_0_has_a_circular_default,Ii(r));var n=ns(r),i=ps(r);n&&i&&Ol(i,Do(gl(n,Zu(r,i)),i),t.default,e.Diagnostics.Type_0_does_not_satisfy_the_constraint_1),a&&kv(t.name,e.Diagnostics.Type_parameter_name_cannot_be_0)}function Vy(t){Yb(t),zh(t);var r=e.getContainingFunction(t);e.hasModifier(t,92)&&(161===r.kind&&e.nodeIsPresent(r.body)||Xr(t,e.Diagnostics.A_parameter_property_is_only_allowed_in_a_constructor_implementation)),t.questionToken&&e.isBindingPattern(t.name)&&r.body&&Xr(t,e.Diagnostics.A_binding_pattern_parameter_cannot_be_optional_in_an_implementation_signature),t.name&&e.isIdentifier(t.name)&&("this"===t.name.escapedText||"new"===t.name.escapedText)&&(0!==r.parameters.indexOf(t)&&Xr(t,e.Diagnostics.A_0_parameter_must_be_the_first_parameter,t.name.escapedText),161!==r.kind&&165!==r.kind&&170!==r.kind||Xr(t,e.Diagnostics.A_constructor_cannot_have_a_this_parameter),201===r.kind&&Xr(t,e.Diagnostics.An_arrow_function_cannot_have_a_this_parameter)),!t.dotDotDotToken||e.isBindingPattern(t.name)||Fl(wa(t.symbol),xt)||Xr(t,e.Diagnostics.A_rest_parameter_must_be_of_an_array_type)}function qy(t,r,n){for(var i=0,a=t.elements;i<a.length;i++){var o=a[i];if(!e.isOmittedExpression(o)){var s=o.name;if(75===s.kind&&s.escapedText===n)return Xr(r,e.Diagnostics.A_type_predicate_cannot_reference_element_0_in_a_binding_pattern,n),!0;if((189===s.kind||188===s.kind)&&qy(s,r,n))return!0}}}function Wy(t){166===t.kind?function(t){Yb(t)||function(t){var r=t.parameters[0];if(1!==t.parameters.length)return vx(r?r.name:t,e.Diagnostics.An_index_signature_must_have_exactly_one_parameter);if(r.dotDotDotToken)return vx(r.dotDotDotToken,e.Diagnostics.An_index_signature_cannot_have_a_rest_parameter);if(e.hasModifiers(r))return vx(r.name,e.Diagnostics.An_index_signature_parameter_cannot_have_an_accessibility_modifier);if(r.questionToken)return vx(r.questionToken,e.Diagnostics.An_index_signature_parameter_cannot_have_a_question_mark);if(r.initializer)return vx(r.name,e.Diagnostics.An_index_signature_parameter_cannot_have_an_initializer);if(!r.type)return vx(r.name,e.Diagnostics.An_index_signature_parameter_must_have_a_type_annotation);if(142!==r.type.kind&&139!==r.type.kind){var n=Yu(r.type);return 4&n.flags||8&n.flags?vx(r.name,e.Diagnostics.An_index_signature_parameter_type_cannot_be_a_type_alias_Consider_writing_0_Colon_1_Colon_2_instead,e.getTextOfNode(r.name),Ii(n),Ii(t.type?Yu(t.type):he)):1048576&n.flags&&gy(n,384,!0)?vx(r.name,e.Diagnostics.An_index_signature_parameter_type_cannot_be_a_union_type_Consider_using_a_mapped_object_type_instead):vx(r.name,e.Diagnostics.An_index_signature_parameter_type_must_be_either_string_or_number)}if(!t.type)return vx(t,e.Diagnostics.An_index_signature_must_have_a_type_annotation)}(t)}(t):169!==t.kind&&243!==t.kind&&170!==t.kind&&164!==t.kind&&161!==t.kind&&165!==t.kind||ex(t);var r=e.getFunctionFlags(t);if(4&r||(3==(3&r)&&J<99&&Gb(t,12288),2==(3&r)&&J<4&&Gb(t,64),0!=(3&r)&&J<2&&Gb(t,128)),Nv(t.typeParameters),e.forEach(t.parameters,Vy),t.type&&Gv(t.type),a){!function(t){if(J>=2||K.noEmit||!e.hasRestParameter(t)||8388608&t.flags||e.nodeIsMissing(t.body))return;e.forEach(t.parameters,(function(t){t.name&&!e.isBindingPattern(t.name)&&t.name.escapedText===ie.escapedName&&Xr(t,e.Diagnostics.Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters)}))}(t);var n=e.getEffectiveReturnTypeNode(t);if(H&&!n)switch(t.kind){case 165:Xr(t,e.Diagnostics.Construct_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type);break;case 164:Xr(t,e.Diagnostics.Call_signature_which_lacks_return_type_annotation_implicitly_has_an_any_return_type)}if(n){var i=e.getFunctionFlags(t);if(1==(5&i)){var o=Yu(n);if(o===Re)Xr(n,e.Diagnostics.A_generator_cannot_have_a_void_type_annotation);else{var s=bv(0,o,0!=(2&i))||he;Ol(Qg(s,bv(1,o,0!=(2&i))||s,bv(2,o,0!=(2&i))||De,!!(2&i)),o,n)}}else 2==(3&i)&&function(t,r){var n=Yu(r);if(J>=2){if(n===xe)return;var i=Ic(!0);if(i!==Qe&&!Ia(n,i))return void Xr(r,e.Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type)}else{if(function(t){fh(t&&e.getEntityNameFromTypeNode(t))}(r),n===xe)return;var a=e.getEntityNameFromTypeNode(r);if(void 0===a)return void Xr(r,e.Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value,Ii(n));var o=Kn(a,111551,!0),s=o?wa(o):xe;if(s===xe)return void(75===a.kind&&"Promise"===a.escapedText&&Oa(n)===Ic(!1)?Xr(r,e.Diagnostics.An_async_function_or_method_in_ES5_SlashES3_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option):Xr(r,e.Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value,e.entityNameToString(a)));var c=(_=!0,At||(At=Fc("PromiseConstructorLike",0,_))||Ge);if(c===Ge)return void Xr(r,e.Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value,e.entityNameToString(a));if(!Ol(s,c,r,e.Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_SlashES3_because_it_does_not_refer_to_a_Promise_compatible_constructor_value))return;var u=a&&e.getFirstIdentifier(a),l=fn(t.locals,u.escapedText,111551);if(l)return void Xr(l.valueDeclaration,e.Diagnostics.Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions,e.idText(u),e.entityNameToString(a))}var _;_h(n,t,e.Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member)}(t,n)}166!==t.kind&&298!==t.kind&&Dh(t)}}function Gy(t){for(var r=e.createMap(),n=0,i=t.members;n<i.length;n++){var a=i[n];if(157===a.kind){var o=void 0,s=a.name;switch(s.kind){case 10:case 8:o=s.text;break;case 75:o=e.idText(s);break;default:continue}r.get(o)?(Xr(e.getNameOfDeclaration(a.symbol.valueDeclaration),e.Diagnostics.Duplicate_identifier_0,o),Xr(a.name,e.Diagnostics.Duplicate_identifier_0,o)):r.set(o,!0)}}}function Hy(t){if(245===t.kind){var r=ri(t);if(r.declarations.length>0&&r.declarations[0]!==t)return}var n=Zs(ri(t));if(n)for(var i=!1,a=!1,o=0,s=n.declarations;o<s.length;o++){var c=s[o];if(1===c.parameters.length&&c.parameters[0].type)switch(c.parameters[0].type.kind){case 142:a?Xr(c,e.Diagnostics.Duplicate_string_index_signature):a=!0;break;case 139:i?Xr(c,e.Diagnostics.Duplicate_number_index_signature):i=!0}}}function Yy(t){Yb(t)||function(t){if(e.isClassLike(t.parent)){if(e.isStringLiteral(t.name)&&"constructor"===t.name.text)return vx(t.name,e.Diagnostics.Classes_may_not_have_a_field_named_constructor);if(_x(t.name,e.Diagnostics.A_computed_property_name_in_a_class_property_declaration_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type))return!0}else if(245===t.parent.kind){if(_x(t.name,e.Diagnostics.A_computed_property_name_in_an_interface_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type))return!0;if(t.initializer)return vx(t.initializer,e.Diagnostics.An_interface_property_cannot_have_an_initializer)}else if(172===t.parent.kind){if(_x(t.name,e.Diagnostics.A_computed_property_name_in_a_type_literal_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type))return!0;if(t.initializer)return vx(t.initializer,e.Diagnostics.A_type_literal_property_cannot_have_an_initializer)}8388608&t.flags&&fx(t);if(e.isPropertyDeclaration(t)&&t.exclamationToken&&(!e.isClassLike(t.parent)||!t.type||t.initializer||8388608&t.flags||e.hasModifier(t,160)))return vx(t.exclamationToken,e.Diagnostics.A_definite_assignment_assertion_is_not_permitted_in_this_context)}(t)||ax(t.name),zh(t)}function Xy(t){Wy(t),function(t){var r=e.isInJSFile(t)?e.getJSDocTypeParameterDeclarations(t):void 0,n=t.typeParameters||r&&e.firstOrUndefined(r);if(n){var i=n.pos===n.end?n.pos:e.skipTrivia(e.getSourceFileOfNode(t).text,n.pos);return hx(t,i,n.end-i,e.Diagnostics.Type_parameters_cannot_appear_on_a_constructor_declaration)}}(t)||function(t){var r=e.getEffectiveReturnTypeNode(t);if(r)vx(r,e.Diagnostics.Type_annotation_cannot_appear_on_a_constructor_declaration)}(t),Gv(t.body);var r=ri(t);if(t===e.getDeclarationOfKind(r,t.kind)&&sh(r),!e.nodeIsMissing(t.body)&&a){var n=t.parent;if(e.getClassExtendsHeritageElement(n)){Vp(t.parent,n);var i=Gp(n),o=Wp(t);if(o){if(i&&Xr(o,e.Diagnostics.A_constructor_cannot_contain_a_super_call_when_its_class_extends_null),e.some(t.parent.members,(function(t){return 158===t.kind&&!e.hasModifier(t,32)&&!!t.initializer}))||e.some(t.parameters,(function(t){return e.hasModifier(t,92)}))){for(var s=void 0,c=0,u=t.body.statements;c<u.length;c++){var l=u[c];if(225===l.kind&&e.isSuperCall(l.expression)){s=l;break}if(!e.isPrologueDirective(l))break}s||Xr(t,e.Diagnostics.A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties)}}else i||Xr(t,e.Diagnostics.Constructors_for_derived_classes_must_contain_a_super_call)}}}function Qy(t){if(a){if(ex(t)||function(t){if(!(8388608&t.flags)){if(J<1)return vx(t.name,e.Diagnostics.Accessors_are_only_available_when_targeting_ECMAScript_5_and_higher);if(void 0===t.body&&!e.hasModifier(t,128))return hx(t,t.end-1,";".length,e.Diagnostics._0_expected,"{")}if(t.body&&e.hasModifier(t,128))return vx(t,e.Diagnostics.An_abstract_accessor_cannot_have_an_implementation);if(t.typeParameters)return vx(t.name,e.Diagnostics.An_accessor_cannot_have_type_parameters);if(!function(e){return lx(e)||e.parameters.length===(162===e.kind?0:1)}(t))return vx(t.name,162===t.kind?e.Diagnostics.A_get_accessor_cannot_have_parameters:e.Diagnostics.A_set_accessor_must_have_exactly_one_parameter);if(163===t.kind){if(t.type)return vx(t.name,e.Diagnostics.A_set_accessor_cannot_have_a_return_type_annotation);var r=e.Debug.assertDefined(e.getSetAccessorValueParameter(t),"Return value does not match parameter count assertion.");if(r.dotDotDotToken)return vx(r.dotDotDotToken,e.Diagnostics.A_set_accessor_cannot_have_rest_parameter);if(r.questionToken)return vx(r.questionToken,e.Diagnostics.A_set_accessor_cannot_have_an_optional_parameter);if(r.initializer)return vx(t.name,e.Diagnostics.A_set_accessor_parameter_cannot_have_an_initializer)}return!1}(t)||ax(t.name),vh(t),Wy(t),162===t.kind&&!(8388608&t.flags)&&e.nodeIsPresent(t.body)&&256&t.flags&&(512&t.flags||Xr(t.name,e.Diagnostics.A_get_accessor_must_return_a_value)),153===t.name.kind&&Lf(t.name),!go(t)){var r=162===t.kind?163:162,n=e.getDeclarationOfKind(ri(t),r);if(n){var i=e.getModifierFlags(t),o=e.getModifierFlags(n);(28&i)!=(28&o)&&Xr(t.name,e.Diagnostics.Getter_and_setter_accessors_do_not_agree_in_visibility),(128&i)!=(128&o)&&Xr(t.name,e.Diagnostics.Accessors_must_both_be_abstract_or_non_abstract),$y(t,n,Ta,e.Diagnostics.get_and_set_accessor_must_have_the_same_type),$y(t,n,Ea,e.Diagnostics.get_and_set_accessor_must_have_the_same_this_type)}}var s=Ca(ri(t));162===t.kind&&ny(t,s)}Gv(t.body)}function $y(e,t,r,n){var i=r(e),a=r(t);i&&a&&!El(i,a)&&Xr(e,n)}function Zy(t,r){return Ms(e.map(t.typeArguments,Yu),r,Os(r),e.isInJSFile(t))}function eh(t,r){for(var n,i,a=!0,o=0;o<r.length;o++){var s=ns(r[o]);s&&(n||(i=el(r,n=Zy(t,r))),a=a&&Ol(n[o],gl(s,i),t.typeArguments[o],e.Diagnostics.Type_0_does_not_satisfy_the_constraint_1))}return a}function th(t){var r=Tc(t);if(r!==xe){var n=dn(t).resolvedSymbol;if(n)return 524288&n.flags&&_n(n).typeParameters||(4&e.getObjectFlags(r)?r.target.localTypeParameters:void 0)}}function rh(t){tx(t,t.typeArguments),168!==t.kind||void 0===t.typeName.jsdocDotPos||e.isInJSFile(t)||e.isInJSDoc(t)||hx(t,t.typeName.jsdocDotPos,1,e.Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments),e.forEach(t.typeArguments,Gv);var r=Tc(t);if(r!==xe){if(t.typeArguments&&a){var n=th(t);n&&eh(t,n)}32&r.flags&&8&dn(t).resolvedSymbol.flags&&Xr(t,e.Diagnostics.Enum_type_0_has_members_with_initializers_that_are_not_literals,Ii(r))}}function nh(t,r){if(!(8388608&t.flags))return t;var n=t.objectType,i=t.indexType;if(Fl(i,lu(n,!1)))return 194===r.kind&&e.isAssignmentTarget(r)&&32&e.getObjectFlags(n)&&1&Go(n)&&Xr(r,e.Diagnostics.Index_signature_in_type_0_only_permits_reading,Ii(n)),t;var a=ms(n);if(Ts(a,1)&&my(i,296))return t;if(gu(n)){var o=pu(i,r);if(o){var s=up(a,(function(e){return vs(e,o)}));if(s&&24&e.getDeclarationModifierFlagsFromSymbol(s))return Xr(r,e.Diagnostics.Private_or_protected_member_0_cannot_be_accessed_on_a_type_parameter,e.unescapeLeadingUnderscores(o)),xe}}return Xr(r,e.Diagnostics.Type_0_cannot_be_used_to_index_type_1,Ii(i),Ii(n)),xe}function ih(t){!function(t){if(146===t.operator){if(143!==t.type.kind)return vx(t.type,e.Diagnostics._0_expected,e.tokenToString(143));var r=e.walkUpParenthesizedTypes(t.parent);switch(r.kind){case 241:var n=r;if(75!==n.name.kind)return vx(t,e.Diagnostics.unique_symbol_types_may_not_be_used_on_a_variable_declaration_with_a_binding_name);if(!e.isVariableDeclarationInVariableStatement(n))return vx(t,e.Diagnostics.unique_symbol_types_are_only_allowed_on_variables_in_a_variable_statement);if(!(2&n.parent.flags))return vx(r.name,e.Diagnostics.A_variable_whose_type_is_a_unique_symbol_type_must_be_const);break;case 158:if(!e.hasModifier(r,32)||!e.hasModifier(r,64))return vx(r.name,e.Diagnostics.A_property_of_a_class_whose_type_is_a_unique_symbol_type_must_be_both_static_and_readonly);break;case 157:if(!e.hasModifier(r,64))return vx(r.name,e.Diagnostics.A_property_of_an_interface_or_type_literal_whose_type_is_a_unique_symbol_type_must_be_readonly);break;default:vx(t,e.Diagnostics.unique_symbol_types_are_not_allowed_here)}}else if(137===t.operator&&173!==t.type.kind&&174!==t.type.kind)yx(t,e.Diagnostics.readonly_type_modifier_is_only_permitted_on_array_and_tuple_literal_types,e.tokenToString(143))}(t),Gv(t.type)}function ah(t){return e.hasModifier(t,8)&&!!(8388608&t.flags)}function oh(t,r){var n=e.getCombinedModifierFlags(t);return 245!==t.parent.kind&&244!==t.parent.kind&&213!==t.parent.kind&&8388608&t.flags&&(2&n||e.isModuleBlock(t.parent)&&e.isModuleDeclaration(t.parent.parent)&&e.isGlobalScopeAugmentation(t.parent.parent)||(n|=1),n|=2),n&r}function sh(t){if(a){for(var r,n,i,o=0,s=155,c=!1,u=!0,l=!1,_=t.declarations,d=0!=(16384&t.flags),p=!1,f=!1,m=!1,g=0,y=_;g<y.length;g++){var h=y[g],v=8388608&h.flags,b=245===h.parent.kind||172===h.parent.kind||v;if(b&&(i=void 0),244!==h.kind&&213!==h.kind||v||(m=!0),243===h.kind||160===h.kind||159===h.kind||161===h.kind){var x=oh(h,155);o|=x,s&=x,c=c||e.hasQuestionToken(h),u=u&&e.hasQuestionToken(h),e.nodeIsPresent(h.body)&&r?d?f=!0:p=!0:i&&i.parent===h.parent&&i.end!==h.pos&&N(i),e.nodeIsPresent(h.body)?r||(r=h):l=!0,i=h,b||(n=h)}}if(f&&e.forEach(_,(function(t){Xr(t,e.Diagnostics.Multiple_constructor_implementations_are_not_allowed)})),p&&e.forEach(_,(function(t){Xr(e.getNameOfDeclaration(t),e.Diagnostics.Duplicate_function_implementation)})),m&&!d&&16&t.flags&&e.forEach(_,(function(r){cn(e.getNameOfDeclaration(r)||r,e.Diagnostics.Duplicate_identifier_0,e.symbolName(t),e.filter(_,(function(e){return e!==r})))})),!n||n.body||e.hasModifier(n,128)||n.questionToken||N(n),l&&(function(t,r,n,i,a){if(0!==(i^a)){var o=oh(k(t,r),n);e.forEach(t,(function(t){var r=oh(t,n)^o;1&r?Xr(e.getNameOfDeclaration(t),e.Diagnostics.Overload_signatures_must_all_be_exported_or_non_exported):2&r?Xr(e.getNameOfDeclaration(t),e.Diagnostics.Overload_signatures_must_all_be_ambient_or_non_ambient):24&r?Xr(e.getNameOfDeclaration(t)||t,e.Diagnostics.Overload_signatures_must_all_be_public_private_or_protected):128&r&&Xr(e.getNameOfDeclaration(t),e.Diagnostics.Overload_signatures_must_all_be_abstract_or_non_abstract)}))}}(_,r,155,o,s),function(t,r,n,i){if(n!==i){var a=e.hasQuestionToken(k(t,r));e.forEach(t,(function(t){e.hasQuestionToken(t)!==a&&Xr(e.getNameOfDeclaration(t),e.Diagnostics.Overload_signatures_must_all_be_optional_or_required)}))}}(_,r,c,u),r))for(var D=js(t),S=Ls(r),T=0,E=D;T<E.length;T++){var C=E[T];if(!ql(S,C)){e.addRelatedInfo(Xr(C.declaration,e.Diagnostics.This_overload_signature_is_not_compatible_with_its_implementation_signature),e.createDiagnosticForNode(r,e.Diagnostics.The_implementation_signature_is_declared_here));break}}}function k(e,t){return void 0!==t&&t.parent===e[0].parent?t:e[0]}function N(t){if(!t.name||!e.nodeIsMissing(t.name)){var r=!1,n=e.forEachChild(t.parent,(function(e){if(r)return e;r=e===t}));if(n&&n.pos===t.end&&n.kind===t.kind){var i=n.name||n,a=n.name;if(t.name&&a&&(e.isComputedPropertyName(t.name)&&e.isComputedPropertyName(a)||!e.isComputedPropertyName(t.name)&&!e.isComputedPropertyName(a)&&e.getEscapedTextOfIdentifierOrLiteral(t.name)===e.getEscapedTextOfIdentifierOrLiteral(a))){if((160===t.kind||159===t.kind)&&e.hasModifier(t,32)!==e.hasModifier(n,32))Xr(i,e.hasModifier(t,32)?e.Diagnostics.Function_overload_must_be_static:e.Diagnostics.Function_overload_must_not_be_static);return}if(e.nodeIsPresent(n.body))return void Xr(i,e.Diagnostics.Function_implementation_name_must_be_0,e.declarationNameToString(t.name))}var o=t.name||t;d?Xr(o,e.Diagnostics.Constructor_implementation_is_missing):e.hasModifier(t,128)?Xr(o,e.Diagnostics.All_declarations_of_an_abstract_method_must_be_consecutive):Xr(o,e.Diagnostics.Function_implementation_is_missing_or_not_immediately_following_the_declaration)}}}function ch(t){if(a){var r=t.localSymbol;if((r||(r=ri(t)).exportSymbol)&&e.getDeclarationOfKind(r,t.kind)===t){for(var n=0,i=0,o=0,s=0,c=r.declarations;s<c.length;s++){var u=y(m=c[s]),l=oh(m,513);1&l?512&l?o|=u:n|=u:i|=u}var _=n&i,d=o&(n|i);if(_||d)for(var p=0,f=r.declarations;p<f.length;p++){u=y(m=f[p]);var m,g=e.getNameOfDeclaration(m);u&d?Xr(g,e.Diagnostics.Merged_declaration_0_cannot_include_a_default_export_declaration_Consider_adding_a_separate_export_default_0_declaration_instead,e.declarationNameToString(g)):u&_&&Xr(g,e.Diagnostics.Individual_declarations_in_merged_declaration_0_must_be_all_exported_or_all_local,e.declarationNameToString(g))}}}function y(t){var r=t;switch(r.kind){case 245:case 246:case 315:case 308:case 309:return 2;case 248:return e.isAmbientModule(r)||0!==e.getModuleInstanceState(r)?5:4;case 244:case 247:return 3;case 288:return 7;case 258:if(!e.isEntityNameExpression(r.expression))return 1;r=r.expression;case 252:case 255:case 254:var n=0,i=Mn(ri(r));return e.forEach(i.declarations,(function(e){n|=y(e)})),n;case 241:case 190:case 243:case 257:return 1;default:return e.Debug.failBadSyntaxKind(r)}}}function uh(e,t,r,n){var i=lh(e,t);return i&&dh(i,t,r,n)}function lh(t,r){if(!Qi(t)){var n=t;if(n.promisedTypeOfPromise)return n.promisedTypeOfPromise;if(Ia(t,Ic(!1)))return n.promisedTypeOfPromise=_c(t)[0];var i=Xi(t,"then");if(!Qi(i)){var a=i?xs(i,0):e.emptyArray;if(0!==a.length){var o=Hd(Qc(e.map(a,Ug)),2097152);if(!Qi(o)){var s=xs(o,0);if(0!==s.length)return n.promisedTypeOfPromise=Qc(e.map(s,Ug),2);r&&Xr(r,e.Diagnostics.The_first_parameter_of_the_then_method_of_a_promise_must_be_a_callback)}}else r&&Xr(r,e.Diagnostics.A_promise_must_have_a_then_method)}}}function _h(e,t,r,n){return dh(e,t,r,n)||xe}function dh(t,r,n,i){var a=t;if(a.awaitedTypeOfType)return a.awaitedTypeOfType;if(Qi(t))return a.awaitedTypeOfType=t;if(1048576&t.flags){for(var o=void 0,s=0,c=t.types;s<c.length;s++){var u=c[s];o=e.append(o,dh(u,r,n,i))}if(!o)return;return a.awaitedTypeOfType=Qc(o)}var l=lh(t);if(l){if(t.id===l.id||Br.indexOf(l.id)>=0)return void(r&&Xr(r,e.Diagnostics.Type_is_referenced_directly_or_indirectly_in_the_fulfillment_callback_of_its_own_then_method));Br.push(t.id);var _=dh(l,r,n,i);if(Br.pop(),!_)return;return a.awaitedTypeOfType=_}var d=Xi(t,"then");if(!(d&&xs(d,0).length>0))return a.awaitedTypeOfType=t;if(r){if(!n)return e.Debug.fail();Xr(r,n,i)}}function ph(t){var r=zs(Dg(t));if(!(1&r.flags)){var n,i,a=yg(t);switch(t.parent.kind){case 244:n=Qc([wa(ri(t.parent)),Re]);break;case 155:n=Re,i=e.chainDiagnosticMessages(void 0,e.Diagnostics.The_return_type_of_a_parameter_decorator_function_must_be_either_void_or_any);break;case 158:n=Re,i=e.chainDiagnosticMessages(void 0,e.Diagnostics.The_return_type_of_a_property_decorator_function_must_be_either_void_or_any);break;case 160:case 162:case 163:n=Qc([Bc(ub(t.parent)),Re]);break;default:return e.Debug.fail()}Ol(r,n,t,a,(function(){return i}))}}function fh(t){if(t){var r=e.getFirstIdentifier(t),n=2097152|(75===t.kind?788968:1920),i=gn(r,r.escapedText,n,void 0,void 0,!0);i&&2097152&i.flags&&ci(i)&&!Cb(Mn(i))&&Rn(i)}}function mh(t){var r=gh(t);r&&e.isEntityName(r)&&fh(r)}function gh(e){if(e)switch(e.kind){case 178:case 177:return yh(e.types);case 179:return yh([e.trueType,e.falseType]);case 181:return gh(e.type);case 168:return e.typeName}}function yh(t){for(var r,n=0,i=t;n<i.length;n++){for(var a=i[n];181===a.kind;)a=a.type;if(136!==a.kind&&(V||99!==a.kind&&145!==a.kind)){var o=gh(a);if(!o)return;if(r){if(!e.isIdentifier(r)||!e.isIdentifier(o)||r.escapedText!==o.escapedText)return}else r=o}}return r}function hh(t){var r=e.getEffectiveTypeAnnotationNode(t);return e.isRestParameter(t)?e.getRestParameterElementType(r):r}function vh(t){if(t.decorators&&e.nodeCanBeDecorated(t,t.parent,t.parent.parent)){K.experimentalDecorators||Xr(t,e.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning);var r=t.decorators[0];if(Gb(r,8),155===t.kind&&Gb(r,32),K.emitDecoratorMetadata)switch(Gb(r,16),t.kind){case 244:var n=e.getFirstConstructorWithBody(t);if(n)for(var i=0,a=n.parameters;i<a.length;i++){mh(hh(a[i]))}break;case 162:case 163:var o=162===t.kind?163:162,s=e.getDeclarationOfKind(ri(t),o);mh(Sa(t)||s&&Sa(s));break;case 160:for(var c=0,u=t.parameters;c<u.length;c++){mh(hh(u[c]))}mh(e.getEffectiveReturnTypeNode(t));break;case 158:mh(e.getEffectiveTypeAnnotationNode(t));break;case 155:mh(hh(t));for(var l=0,_=t.parent.parameters;l<_.length;l++){mh(hh(_[l]))}}e.forEach(t.decorators,ph)}}function bh(e){switch(e.kind){case 75:return e;case 193:return e.name;default:return}}function xh(t){vh(t),Wy(t);var r=e.getFunctionFlags(t);if(t.name&&153===t.name.kind&&Lf(t.name),!go(t)){var n=ri(t),i=t.localSymbol||n,o=e.find(i.declarations,(function(e){return e.kind===t.kind&&!(131072&e.flags)}));t===o&&sh(i),n.parent&&e.getDeclarationOfKind(n,t.kind)===t&&sh(n)}var s=159===t.kind?void 0:t.body;if(Gv(s),ny(t,Us(t)),a&&!e.getEffectiveReturnTypeNode(t)&&(e.nodeIsMissing(s)&&!ah(t)&&id(t,he),1&r&&e.nodeIsPresent(s)&&zs(Ls(t))),e.isInJSFile(t)){var c=e.getJSDocTypeTag(t);c&&c.typeExpression&&!Ef(Yu(c.typeExpression),t)&&Xr(c,e.Diagnostics.The_type_of_a_function_declaration_must_match_the_function_s_signature)}}function Dh(t){if(a&&!(8388608&t.flags)){var r=e.getSourceFileOfNode(t),n=_r.get(r.path);n||(n=[],_r.set(r.path,n)),n.push(t)}}function Sh(t,r){for(var n=0,i=t;n<i.length;n++){var a=i[n];switch(a.kind){case 244:case 213:Ch(a,r),Nh(a,r);break;case 288:case 248:case 222:case 250:case 229:case 230:case 231:wh(a,r);break;case 161:case 200:case 243:case 201:case 160:case 162:case 163:a.body&&wh(a,r),Nh(a,r);break;case 159:case 164:case 165:case 169:case 170:case 246:case 245:Nh(a,r);break;case 180:kh(a,r);break;default:e.Debug.assertNever(a,"Node should not have been registered for unused identifiers check")}}}function Th(t,r,n){var i=e.getNameOfDeclaration(t)||t,a=rb(t)?e.Diagnostics._0_is_declared_but_never_used:e.Diagnostics._0_is_declared_but_its_value_is_never_read;n(t,0,e.createDiagnosticForNode(i,a,r))}function Eh(t){return e.isIdentifier(t)&&95===e.idText(t).charCodeAt(0)}function Ch(t,r){for(var n=0,i=t.members;n<i.length;n++){var a=i[n];switch(a.kind){case 160:case 158:case 162:case 163:if(163===a.kind&&32768&a.symbol.flags)break;var o=ri(a);!o.isReferenced&&e.hasModifier(a,8)&&r(a,0,e.createDiagnosticForNode(a.name,e.Diagnostics._0_is_declared_but_its_value_is_never_read,Pi(o)));break;case 161:for(var s=0,c=a.parameters;s<c.length;s++){var u=c[s];!u.symbol.isReferenced&&e.hasModifier(u,8)&&r(u,0,e.createDiagnosticForNode(u.name,e.Diagnostics.Property_0_is_declared_but_its_value_is_never_read,e.symbolName(u.symbol)))}break;case 166:case 221:break;default:e.Debug.fail()}}}function kh(t,r){var n=t.typeParameter;Ah(n)&&r(t,1,e.createDiagnosticForNode(t,e.Diagnostics._0_is_declared_but_its_value_is_never_read,e.idText(n.name)))}function Nh(t,r){if(e.last(ri(t).declarations)===t)for(var n=e.getEffectiveTypeParameterDeclarations(t),i=new e.NodeSet,a=0,o=n;a<o.length;a++){var s=o[a];if(Ah(s)){var c=e.idText(s.name),u=s.parent;if(180!==u.kind&&u.typeParameters.every(Ah)){if(i.tryAdd(u)){var l=e.isJSDocTemplateTag(u)?e.rangeOfNode(u):e.rangeOfTypeParameters(u.typeParameters),_=1===n.length,d=_?e.Diagnostics._0_is_declared_but_its_value_is_never_read:e.Diagnostics.All_type_parameters_are_unused,p=_?c:void 0;r(s,1,e.createFileDiagnostic(e.getSourceFileOfNode(u),l.pos,l.end-l.pos,d,p))}}else r(s,1,e.createDiagnosticForNode(s,e.Diagnostics._0_is_declared_but_its_value_is_never_read,c))}}}function Ah(e){return!(262144&ti(e.symbol).isReferenced||Eh(e.name))}function Fh(e,t,r,n){var i=String(n(t)),a=e.get(i);a?a[1].push(r):e.set(i,[t,[r]])}function Ph(t){return e.tryCast(e.getRootDeclaration(t),e.isParameter)}function wh(t,r){if(!(8388608&t.flags)){var n=e.createMap(),i=e.createMap(),a=e.createMap();t.locals.forEach((function(t){var o;if(262144&t.flags?3&t.flags&&!(3&t.isReferenced):!t.isReferenced&&!t.exportSymbol)for(var s=0,c=t.declarations;s<c.length;s++){var u=c[s];if(!(e.isAmbientModule(u)||(e.isVariableDeclaration(u)&&e.isForInOrOfStatement(u.parent.parent)||Oh(u))&&Eh(u.name)))if(Oh(u))Fh(n,254===(o=u).kind?o:255===o.kind?o.parent:o.parent.parent,u,N);else if(e.isBindingElement(u)&&e.isObjectBindingPattern(u.parent)){u!==e.last(u.parent.elements)&&e.last(u.parent.elements).dotDotDotToken||Fh(i,u.parent,u,N)}else if(e.isVariableDeclaration(u))Fh(a,u.parent,u,N);else{var l=t.valueDeclaration&&Ph(t.valueDeclaration),_=t.valueDeclaration&&e.getNameOfDeclaration(t.valueDeclaration);l&&_?e.isParameterPropertyDeclaration(l,l.parent)||e.parameterIsThisKeyword(l)||Eh(_)||r(l,1,e.createDiagnosticForNode(_,e.Diagnostics._0_is_declared_but_its_value_is_never_read,e.symbolName(t))):Th(u,e.symbolName(t),r)}}})),n.forEach((function(t){var n=t[0],i=t[1],a=n.parent;if((n.name?1:0)+(n.namedBindings?255===n.namedBindings.kind?1:n.namedBindings.elements.length:0)===i.length)r(a,0,1===i.length?e.createDiagnosticForNode(a,e.Diagnostics._0_is_declared_but_its_value_is_never_read,e.idText(e.first(i).name)):e.createDiagnosticForNode(a,e.Diagnostics.All_imports_in_import_declaration_are_unused));else for(var o=0,s=i;o<s.length;o++){var c=s[o];Th(c,e.idText(c.name),r)}})),i.forEach((function(t){var n=t[0],i=t[1],o=Ph(n.parent)?1:0;if(n.elements.length===i.length)1===i.length&&241===n.parent.kind&&242===n.parent.parent.kind?Fh(a,n.parent.parent,n.parent,N):r(n,o,1===i.length?e.createDiagnosticForNode(n,e.Diagnostics._0_is_declared_but_its_value_is_never_read,Ih(e.first(i).name)):e.createDiagnosticForNode(n,e.Diagnostics.All_destructured_elements_are_unused));else for(var s=0,c=i;s<c.length;s++){var u=c[s];r(u,o,e.createDiagnosticForNode(u,e.Diagnostics._0_is_declared_but_its_value_is_never_read,Ih(u.name)))}})),a.forEach((function(t){var n=t[0],i=t[1];if(n.declarations.length===i.length)r(n,0,1===i.length?e.createDiagnosticForNode(e.first(i).name,e.Diagnostics._0_is_declared_but_its_value_is_never_read,Ih(e.first(i).name)):e.createDiagnosticForNode(224===n.parent.kind?n.parent:n,e.Diagnostics.All_variables_are_unused));else for(var a=0,o=i;a<o.length;a++){var s=o[a];r(s,0,e.createDiagnosticForNode(s,e.Diagnostics._0_is_declared_but_its_value_is_never_read,Ih(s.name)))}}))}}function Ih(t){switch(t.kind){case 75:return e.idText(t);case 189:case 188:return Ih(e.cast(e.first(t.elements),e.isBindingElement).name);default:return e.Debug.assertNever(t)}}function Oh(e){return 254===e.kind||257===e.kind||255===e.kind}function Mh(t){if(222===t.kind&&xx(t),e.isFunctionOrModuleBlock(t)){var r=mr;e.forEach(t.statements,Gv),mr=r}else e.forEach(t.statements,Gv);t.locals&&Dh(t)}function Lh(t,r,n){if(!r||r.escapedText!==n)return!1;if(158===t.kind||157===t.kind||160===t.kind||159===t.kind||162===t.kind||163===t.kind)return!1;if(8388608&t.flags)return!1;var i=e.getRootDeclaration(t);return 155!==i.kind||!e.nodeIsMissing(i.parent.body)}function Rh(t){e.findAncestor(t,(function(r){return!!(4&wb(r))&&(75!==t.kind?Xr(e.getNameOfDeclaration(t),e.Diagnostics.Duplicate_identifier_this_Compiler_uses_variable_declaration_this_to_capture_this_reference):Xr(t,e.Diagnostics.Expression_resolves_to_variable_declaration_this_that_compiler_uses_to_capture_this_reference),!0)}))}function Bh(t){e.findAncestor(t,(function(r){return!!(8&wb(r))&&(75!==t.kind?Xr(e.getNameOfDeclaration(t),e.Diagnostics.Duplicate_identifier_newTarget_Compiler_uses_variable_declaration_newTarget_to_capture_new_target_meta_property_reference):Xr(t,e.Diagnostics.Expression_resolves_to_variable_declaration_newTarget_that_compiler_uses_to_capture_new_target_meta_property_reference),!0)}))}function jh(t,r){if(!(z>=e.ModuleKind.ES2015||K.noEmit)&&(Lh(t,r,"require")||Lh(t,r,"exports"))&&(!e.isModuleDeclaration(t)||1===e.getModuleInstanceState(t))){var n=Yi(t);288===n.kind&&e.isExternalOrCommonJsModule(n)&&Xr(r,e.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module,e.declarationNameToString(r),e.declarationNameToString(r))}}function Kh(t,r){if(!(J>=4||K.noEmit)&&Lh(t,r,"Promise")&&(!e.isModuleDeclaration(t)||1===e.getModuleInstanceState(t))){var n=Yi(t);288===n.kind&&e.isExternalOrCommonJsModule(n)&&2048&n.flags&&Xr(r,e.Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions,e.declarationNameToString(r),e.declarationNameToString(r))}}function Jh(e){return e===ve?he:e===bt?vt:e}function zh(t){if(vh(t),e.isBindingElement(t)||Gv(t.type),t.name){if(153===t.name.kind&&(Lf(t.name),t.initializer&&ky(t.initializer)),190===t.kind){188===t.parent.kind&&J<99&&Gb(t,4),t.propertyName&&153===t.propertyName.kind&&Lf(t.propertyName);var r=t.parent.parent,n=$i(r),i=t.propertyName||t.name;if(n&&!e.isBindingPattern(i)){var a=ou(i);if(_o(a)){var o=vs(n,yo(a));o&&(Fm(o,void 0,!1),cm(r,!!r.initializer&&101===r.initializer.kind,n,o))}}}if(e.isBindingPattern(t.name)&&(189===t.name.kind&&J<2&&K.downlevelIteration&&Gb(t,512),e.forEach(t.name.elements,Gv)),t.initializer&&155===e.getRootDeclaration(t).kind&&e.nodeIsMissing(e.getContainingFunction(t).body))Xr(t,e.Diagnostics.A_parameter_initializer_is_only_allowed_in_a_function_or_constructor_implementation);else if(e.isBindingPattern(t.name)){var s=t.initializer&&230!==t.parent.parent.kind,c=0===t.name.elements.length;if(s||c){var u=ha(t);if(s){var l=ky(t.initializer);V&&c?ym(l,t):Ml(l,ha(t),t,t.initializer)}c&&(e.isArrayBindingPattern(t.name)?Zh(65,u,Se,t):V&&ym(u,t))}}else{var _=ri(t),d=Jh(wa(_));if(t===_.valueDeclaration){var p=e.getEffectiveInitializer(t);if(p)e.isInJSFile(t)&&e.isObjectLiteralExpression(p)&&(0===p.properties.length||e.isPrototypeAccess(t.name))&&e.hasEntries(_.exports)||230===t.parent.parent.kind||Ml(ky(p),d,t,p,void 0);_.declarations.length>1&&e.some(_.declarations,(function(r){return r!==t&&e.isVariableLike(r)&&!Vh(r,t)}))&&Xr(t.name,e.Diagnostics.All_declarations_of_0_must_have_identical_modifiers,e.declarationNameToString(t.name))}else{var f=Jh(ha(t));d===xe||f===xe||El(d,f)||67108864&_.flags||Uh(_.valueDeclaration,d,t,f),t.initializer&&Ml(ky(t.initializer),f,t,t.initializer,void 0),Vh(t,_.valueDeclaration)||Xr(t.name,e.Diagnostics.All_declarations_of_0_must_have_identical_modifiers,e.declarationNameToString(t.name))}158!==t.kind&&157!==t.kind&&(ch(t),241!==t.kind&&190!==t.kind||function(t){if(0==(3&e.getCombinedNodeFlags(t))&&!e.isParameterDeclaration(t)&&(241!==t.kind||t.initializer)){var r=ri(t);if(1&r.flags){if(!e.isIdentifier(t.name))return e.Debug.fail();var n=gn(t,t.name.escapedText,3,void 0,void 0,!1);if(n&&n!==r&&2&n.flags&&3&om(n)){var i=e.getAncestor(n.valueDeclaration,242),a=224===i.parent.kind&&i.parent.parent?i.parent.parent:void 0;if(!(a&&(222===a.kind&&e.isFunctionLike(a.parent)||249===a.kind||248===a.kind||288===a.kind))){var o=Pi(n);Xr(t,e.Diagnostics.Cannot_initialize_outer_scoped_variable_0_in_the_same_scope_as_block_scoped_declaration_1,o,o)}}}}}(t),jh(t,t.name),Kh(t,t.name))}}}function Uh(t,r,n,i){var a=e.getNameOfDeclaration(n),o=158===n.kind||157===n.kind?e.Diagnostics.Subsequent_property_declarations_must_have_the_same_type_Property_0_must_be_of_type_1_but_here_has_type_2:e.Diagnostics.Subsequent_variable_declarations_must_have_the_same_type_Variable_0_must_be_of_type_1_but_here_has_type_2,s=e.declarationNameToString(a),c=Xr(a,o,s,Ii(r),Ii(i));t&&e.addRelatedInfo(c,e.createDiagnosticForNode(t,e.Diagnostics._0_was_also_declared_here,s))}function Vh(t,r){if(155===t.kind&&241===r.kind||241===t.kind&&155===r.kind)return!0;if(e.hasQuestionToken(t)!==e.hasQuestionToken(r))return!1;return e.getSelectedModifierFlags(t,504)===e.getSelectedModifierFlags(r,504)}function qh(t){return function(t){if(230!==t.parent.parent.kind&&231!==t.parent.parent.kind)if(8388608&t.flags)fx(t);else if(!t.initializer){if(e.isBindingPattern(t.name)&&!e.isBindingPattern(t.parent))return vx(t,e.Diagnostics.A_destructuring_declaration_must_have_an_initializer);if(e.isVarConst(t))return vx(t,e.Diagnostics.const_declarations_must_be_initialized)}if(t.exclamationToken&&(224!==t.parent.parent.kind||!t.type||t.initializer||8388608&t.flags))return vx(t.exclamationToken,e.Diagnostics.Definite_assignment_assertions_can_only_be_used_along_with_a_type_annotation);K.module===e.ModuleKind.ES2015||K.module===e.ModuleKind.ESNext||K.module===e.ModuleKind.System||K.noEmit||8388608&t.parent.parent.flags||!e.hasModifier(t.parent.parent,1)||function t(r){if(75===r.kind){if("__esModule"===e.idText(r))return vx(r,e.Diagnostics.Identifier_expected_esModule_is_reserved_as_an_exported_marker_when_transforming_ECMAScript_modules)}else for(var n=r.elements,i=0,a=n;i<a.length;i++){var o=a[i];if(!e.isOmittedExpression(o))return t(o.name)}return!1}(t.name);(e.isLet(t)||e.isVarConst(t))&&function t(r){if(75===r.kind){if(114===r.originalKeywordKind)return vx(r,e.Diagnostics.let_is_not_allowed_to_be_used_as_a_name_in_let_or_const_declarations)}else for(var n=r.elements,i=0,a=n;i<a.length;i++){var o=a[i];e.isOmittedExpression(o)||t(o.name)}return!1}(t.name)}(t),zh(t)}function Wh(t){return function(t){if(t.dotDotDotToken){var r=t.parent.elements;if(t!==e.last(r))return vx(t,e.Diagnostics.A_rest_element_must_be_last_in_a_destructuring_pattern);if(Qb(r,e.Diagnostics.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma),t.propertyName)return vx(t.name,e.Diagnostics.A_rest_element_cannot_have_a_property_name);if(t.initializer)hx(t,t.initializer.pos-1,1,e.Diagnostics.A_rest_element_cannot_have_an_initializer)}}(t),zh(t)}function Gh(t){Yb(t)||mx(t.declarationList)||function(t){if(!function e(t){switch(t.kind){case 226:case 227:case 228:case 235:case 229:case 230:case 231:return!1;case 237:return e(t.parent)}return!0}(t.parent)){if(e.isLet(t.declarationList))return vx(t,e.Diagnostics.let_declarations_can_only_be_declared_inside_a_block);if(e.isVarConst(t.declarationList))vx(t,e.Diagnostics.const_declarations_can_only_be_declared_inside_a_block)}}(t),e.forEach(t.declarationList.declarations,Gv)}function Hh(t){xx(t),function(t,r){if(!V)return;var n=e.isIdentifier(t.expression)?t.expression:e.isPropertyAccessExpression(t.expression)?t.expression.name:void 0;if(!n)return;if(R_(r))return;if(0===xs(r,0).length)return;var i=cb(n);if(!i)return;e.forEachChild(t.thenStatement,(function t(r){if(e.isIdentifier(r)){var n=cb(r);if(n&&n.id===i.id)return!0}return e.forEachChild(r,t)}))||Xr(t.expression,e.Diagnostics.This_condition_will_always_return_true_since_the_function_is_always_defined_Did_you_mean_to_call_it_instead)}(t,Yh(t.expression)),Gv(t.thenStatement),223===t.thenStatement.kind&&Xr(t.thenStatement,e.Diagnostics.The_body_of_an_if_statement_cannot_be_the_empty_statement),Gv(t.elseStatement)}function Yh(t,r){var n=zy(t,r);return 16384&n.flags&&Xr(t,e.Diagnostics.An_expression_of_type_void_cannot_be_tested_for_truthiness),n}function Xh(t){ux(t);var r=dm(zy(t.expression));if(242===t.initializer.kind){var n=t.initializer.declarations[0];n&&e.isBindingPattern(n.name)&&Xr(n.name,e.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern),Qh(t)}else{var i=t.initializer,a=zy(i);191===i.kind||192===i.kind?Xr(i,e.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_be_a_destructuring_pattern):Fl(function(e){var t=_u(lu(e));return 131072&t.flags?Ne:t}(r),a)?dy(i,e.Diagnostics.The_left_hand_side_of_a_for_in_statement_must_be_a_variable_or_a_property_access,e.Diagnostics.The_left_hand_side_of_a_for_in_statement_may_not_be_an_optional_property_access):Xr(i,e.Diagnostics.The_left_hand_side_of_a_for_in_statement_must_be_of_type_string_or_any)}r!==Be&&my(r,126091264)||Xr(t.expression,e.Diagnostics.The_right_hand_side_of_a_for_in_statement_must_be_of_type_any_an_object_type_or_a_type_parameter_but_here_has_type_0,Ii(r)),Gv(t.statement),t.locals&&Dh(t)}function Qh(e){var t=e.initializer;t.declarations.length>=1&&qh(t.declarations[0])}function $h(e,t){return Zh(t?15:13,lm(e),Se,e)}function Zh(e,t,r,n){return Qi(t)?t:ev(e,t,r,n,!0)||he}function ev(t,r,n,i,a){var o=0!=(2&t);if(r!==Be){var s=J>=2,c=!s&&K.downlevelIteration;if(s||c||o){var u=iv(r,t,s?i:void 0);if(a&&u){var l=8&t?e.Diagnostics.Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_for_of_will_always_send_0:32&t?e.Diagnostics.Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_spread_will_always_send_0:64&t?e.Diagnostics.Cannot_iterate_value_because_the_next_method_of_its_iterator_expects_type_1_but_array_destructuring_will_always_send_0:16&t?e.Diagnostics.Cannot_delegate_iteration_to_value_because_the_next_method_of_its_iterator_expects_type_1_but_the_containing_generator_will_always_send_0:void 0;l&&Ol(n,u.nextType,i,l)}if(u||s)return u&&u.yieldType}var _=r,d=!1,p=!1;if(4&t){if(1048576&_.flags){var f=r.types,m=e.filter(f,(function(e){return!(132&e.flags)}));m!==f&&(_=Qc(m,2))}else 132&_.flags&&(_=Be);if((p=_!==r)&&(J<1&&i&&(Xr(i,e.Diagnostics.Using_a_string_in_a_for_of_statement_is_only_supported_in_ECMAScript_5_and_higher),d=!0),131072&_.flags))return Ne}if(!b_(_)){if(i&&!d){var g=tv(t,0,r,void 0),y=4&t&&!p?c?[e.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator,!0]:g?[e.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type_Use_compiler_option_downlevelIteration_to_allow_iterating_of_iterators,!1]:[e.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type,!0]:c?[e.Diagnostics.Type_0_is_not_an_array_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator,!0]:g?[e.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type_Use_compiler_option_downlevelIteration_to_allow_iterating_of_iterators,!1]:[e.Diagnostics.Type_0_is_not_an_array_type,!0],h=y[0];Zr(i,y[1]&&!!uh(_),h,Ii(_))}return p?Ne:void 0}var v=Es(_,1);return p&&v?132&v.flags?Ne:Qc([v,Ne],2):v}_v(i,r,o)}function tv(e,t,r,n){if(!Qi(r)){var i=iv(r,e,n);return i&&i[O(t)]}}function rv(e,t,r){if(void 0===e&&(e=Be),void 0===t&&(t=Be),void 0===r&&(r=De),67359327&e.flags&&180227&t.flags&&180227&r.flags){var n=oc([e,t,r]),i=nr.get(n);return i||(i={yieldType:e,returnType:t,nextType:r},nr.set(n,i)),i}return{yieldType:e,returnType:t,nextType:r}}function nv(t){for(var r,n,i,a=0,o=t;a<o.length;a++){var s=o[a];if(void 0!==s&&s!==ir){if(s===ar)return ar;r=e.append(r,s.yieldType),n=e.append(n,s.returnType),i=e.append(i,s.nextType)}}return r||n||i?rv(r&&Qc(r),n&&Qc(n),i&&iu(i)):ir}function iv(t,r,n){if(Qi(t))return ar;if(!(1048576&t.flags)){var i=ov(t,r,n);return i===ir?void(n&&_v(n,t,!!(2&r))):i}var a,o=2&r?"iterationTypesOfAsyncIterable":"iterationTypesOfIterable",s=t[o];if(s)return s===ir?void 0:s;for(var c=0,u=t.types;c<u.length;c++){var l=ov(u[c],r,n);l===ir?n&&(_v(n,t,!!(2&r)),n=void 0):a=e.append(a,l)}var _=a?nv(a):ir;return t[o]=_,_===ir?void 0:_}function av(e,t){if(e===ir)return ir;if(e===ar)return ar;var r=e.yieldType,n=e.returnType,i=e.nextType;return rv(dh(r,t)||he,dh(n,t)||he,i)}function ov(e,t,r){if(Qi(e))return ar;var n;if(2&t&&(n=sv(e,cr)||uv(e,cr)))return n;if(1&t&&(n=sv(e,ur)||uv(e,ur))){if(!(2&t))return n;if(n!==ir)return e.iterationTypesOfAsyncIterable=av(n,r)}if(2&t&&(n=lv(e,cr,r))!==ir)return n;if(1&t&&(n=lv(e,ur,r))!==ir)return 2&t?e.iterationTypesOfAsyncIterable=n?av(n,r):ir:n;return ir}function sv(e,t){return e[t.iterableCacheKey]}function cv(e,t){var r=sv(e,t)||lv(e,t,void 0);return r===ir?sr:r}function uv(e,t){var r;if(Ia(e,r=t.getGlobalIterableType(!1))||Ia(e,r=t.getGlobalIterableIteratorType(!1))){var n=_c(e)[0],i=cv(r,t),a=i.returnType,o=i.nextType;return e[t.iterableCacheKey]=rv(n,a,o)}if(Ia(e,t.getGlobalGeneratorType(!1))){var s=_c(e);n=s[0],a=s[1],o=s[2];return e[t.iterableCacheKey]=rv(n,a,o)}}function lv(t,r,n){var i=vs(t,e.getPropertyNameForKnownSymbolName(r.iteratorSymbolName)),a=!i||16777216&i.flags?void 0:wa(i);if(Qi(a))return t[r.iterableCacheKey]=ar;var o=a?xs(a,0):void 0;if(!e.some(o))return t[r.iterableCacheKey]=ir;var s=dv(Qc(e.map(o,zs),2),r,n)||ir;return t[r.iterableCacheKey]=s}function _v(t,r,n){var i=n?e.Diagnostics.Type_0_must_have_a_Symbol_asyncIterator_method_that_returns_an_async_iterator:e.Diagnostics.Type_0_must_have_a_Symbol_iterator_method_that_returns_an_iterator;Zr(t,!!uh(r),i,Ii(r))}function dv(e,t,r){if(Qi(e))return ar;var n=pv(e,t)||function(e,t){var r=t.getGlobalIterableIteratorType(!1);if(Ia(e,r)){var n=_c(e)[0],i=pv(r,t)||vv(r,t,void 0),a=i===ir?sr:i,o=a.returnType,s=a.nextType;return e[t.iteratorCacheKey]=rv(n,o,s)}if(Ia(e,t.getGlobalIteratorType(!1))||Ia(e,t.getGlobalGeneratorType(!1))){var c=_c(e);n=c[0],o=c[1],s=c[2];return e[t.iteratorCacheKey]=rv(n,o,s)}}(e,t)||vv(e,t,r);return n===ir?void 0:n}function pv(e,t){return e[t.iteratorCacheKey]}function fv(e,t){var r=Xi(e,"done")||Pe;return Fl(0===t?Pe:Ie,r)}function mv(e){return fv(e,0)}function gv(e){return fv(e,1)}function yv(e){if(Qi(e))return ar;var t,r=e.iterationTypesOfIteratorResult;if(r)return r;if(Ia(e,(t=!1,Ot||(Ot=Fc("IteratorYieldResult",1,t))||Qe))){var n=_c(e)[0];return e.iterationTypesOfIteratorResult=rv(n,void 0,void 0)}if(Ia(e,function(e){return Mt||(Mt=Fc("IteratorReturnResult",1,e))||Qe}(!1))){var i=_c(e)[0];return e.iterationTypesOfIteratorResult=rv(void 0,i,void 0)}var a=_p(e,mv),o=a!==Be?Xi(a,"value"):void 0,s=_p(e,gv),c=s!==Be?Xi(s,"value"):void 0;return e.iterationTypesOfIteratorResult=o||c?rv(o,c||Re,void 0):ir}function hv(t,r,n,i){var a=vs(t,n);if(a||"next"===n){var o=!a||"next"===n&&16777216&a.flags?void 0:"next"===n?wa(a):Hd(wa(a),2097152);if(Qi(o))return"next"===n?ar:or;var s,c,u,l,_,d=o?xs(o,0):e.emptyArray;if(0===d.length){if(i)Xr(i,"next"===n?r.mustHaveANextMethodDiagnostic:r.mustBeAMethodDiagnostic,n);return"next"===n?ar:void 0}for(var p=0,f=d;p<f.length;p++){var m=f[p];"throw"!==n&&e.some(m.parameters)&&(s=e.append(s,Mg(m,0))),c=e.append(c,zs(m))}if("throw"!==n){var g=s?Qc(s):De;if("next"===n)l=g;else if("return"===n){var y=r.resolveIterationType(g,i)||he;u=e.append(u,y)}}var h=c?Qc(c,2):Be,v=yv(r.resolveIterationType(h,i)||he);return v===ir?(i&&Xr(i,r.mustHaveAValueDiagnostic,n),_=he,u=e.append(u,he)):(_=v.yieldType,u=e.append(u,v.returnType)),rv(_,Qc(u),l)}}function vv(e,t,r){var n=nv([hv(e,t,"next",r),hv(e,t,"return",r),hv(e,t,"throw",r)]);return e[t.iteratorCacheKey]=n}function bv(e,t,r){if(!Qi(t)){var n=xv(t,r);return n&&n[O(e)]}}function xv(e,t){if(Qi(e))return ar;var r=t?cr:ur;return iv(e,t?2:1,void 0)||dv(e,r,void 0)}function Dv(t){xx(t)||function(t){var r=t;for(;r;){if(e.isFunctionLike(r))return vx(t,e.Diagnostics.Jump_target_cannot_cross_function_boundary);switch(r.kind){case 237:if(t.label&&r.label.escapedText===t.label.escapedText)return!!(232===t.kind&&!e.isIterationStatement(r.statement,!0))&&vx(t,e.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement);break;case 236:if(233===t.kind&&!t.label)return!1;break;default:if(e.isIterationStatement(r,!1)&&!t.label)return!1}r=r.parent}if(t.label){var n=233===t.kind?e.Diagnostics.A_break_statement_can_only_jump_to_a_label_of_an_enclosing_statement:e.Diagnostics.A_continue_statement_can_only_jump_to_a_label_of_an_enclosing_iteration_statement;return vx(t,n)}n=233===t.kind?e.Diagnostics.A_break_statement_can_only_be_used_within_an_enclosing_iteration_or_switch_statement:e.Diagnostics.A_continue_statement_can_only_be_used_within_an_enclosing_iteration_statement;vx(t,n)}(t)}function Sv(e,t){var r=!!(2&t);return!!(1&t)?bv(1,e,r)||xe:r?lh(e)||xe:e}function Tv(t,r){var n=Sv(r,e.getFunctionFlags(t));return!!n&&fy(n,16387)}function Ev(t){xx(t)||void 0===t.expression&&function(t,r,n,i,a){var o=e.getSourceFileOfNode(t);if(!gx(o)){var s=e.getSpanOfTokenAtPosition(o,t.pos);return jr.add(e.createFileDiagnostic(o,e.textSpanEnd(s),0,r,n,i,a)),!0}}(t,e.Diagnostics.Line_break_not_permitted_here),t.expression&&zy(t.expression)}function Cv(t){var r,n=ec(t.symbol,1),i=ec(t.symbol,0),a=Es(t,0),o=Es(t,1);if(a||o){e.forEach($o(t),(function(e){var r=wa(e);p(e,r,t,i,a,0),p(e,r,t,n,o,1)}));var s=t.symbol.valueDeclaration;if(1&e.getObjectFlags(t)&&e.isClassLike(s))for(var c=0,u=s.members;c<u.length;c++){var l=u[c];if(!e.hasModifier(l,32)&&go(l)){var _=ri(l),d=wa(_);p(_,d,t,i,a,0),p(_,d,t,n,o,1)}}}a&&o&&(!(r=n||i)&&2&e.getObjectFlags(t)&&(r=e.forEach(Wa(t),(function(e){return Es(e,0)&&Es(e,1)}))?void 0:t.symbol.declarations[0]));function p(t,r,n,i,a,o){if(a&&!e.isKnownSymbol(t)){var s=t.valueDeclaration,c=s&&e.getNameOfDeclaration(s);if(1!==o||(c?If(c):Mf(t.escapedName))){var u;if(s&&c&&(208===s.kind||153===c.kind||t.parent===n.symbol))u=s;else if(i)u=i;else if(2&e.getObjectFlags(n)){u=e.forEach(Wa(n),(function(e){return Zo(e,t.escapedName)&&Es(e,o)}))?void 0:n.symbol.declarations[0]}if(u&&!Fl(r,a))Xr(u,0===o?e.Diagnostics.Property_0_of_type_1_is_not_assignable_to_string_index_type_2:e.Diagnostics.Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2,Pi(t),Ii(r),Ii(a))}}}r&&!Fl(o,a)&&Xr(r,e.Diagnostics.Numeric_index_type_0_is_not_assignable_to_string_index_type_1,Ii(o),Ii(a))}function kv(e,t){switch(e.escapedText){case"any":case"unknown":case"number":case"bigint":case"boolean":case"string":case"symbol":case"void":case"object":Xr(e,t,e.escapedText)}}function Nv(t){if(t)for(var r=!1,n=0;n<t.length;n++){var i=t[n];if(Uy(i),a){i.default?(r=!0,Av(i.default,t,n)):r&&Xr(i,e.Diagnostics.Required_type_parameters_may_not_follow_optional_type_parameters);for(var o=0;o<n;o++)t[o].symbol===i.symbol&&Xr(i.name,e.Diagnostics.Duplicate_identifier_0,e.declarationNameToString(i.name))}}}function Av(t,r,n){!function t(i){if(168===i.kind){var a=Tc(i);if(262144&a.flags)for(var o=n;o<r.length;o++)a.symbol===ri(r[o])&&Xr(i,e.Diagnostics.Type_parameter_defaults_can_only_reference_previously_declared_type_parameters)}e.forEachChild(i,t)}(t)}function Fv(t){if(1!==t.declarations.length){var r=_n(t);if(!r.typeParametersChecked){r.typeParametersChecked=!0;var n=function(t){return e.filter(t.declarations,(function(e){return 244===e.kind||245===e.kind}))}(t);if(n.length<=1)return;if(!function(t,r){for(var n=e.length(r),i=Os(r),a=0,o=t;a<o.length;a++){var s=o[a],c=e.getEffectiveTypeParameterDeclarations(s),u=c.length;if(u<i||u>n)return!1;for(var l=0;l<u;l++){var _=c[l],d=r[l];if(_.name.escapedText!==d.symbol.escapedName)return!1;var p=e.getEffectiveConstraintOfTypeParameter(_),f=p&&Yu(p),m=ns(d);if(f&&m&&!El(f,m))return!1;var g=_.default&&Yu(_.default),y=ps(d);if(g&&y&&!El(g,y))return!1}}return!0}(n,ro(t).localTypeParameters))for(var i=Pi(t),a=0,o=n;a<o.length;a++){Xr(o[a].name,e.Diagnostics.All_declarations_of_0_must_have_identical_type_parameters,i)}}}}function Pv(t){!function(t){var r=e.getSourceFileOfNode(t);(function(t){var r=!1,n=!1;if(!Yb(t)&&t.heritageClauses)for(var i=0,a=t.heritageClauses;i<a.length;i++){var o=a[i];if(89===o.token){if(r)return yx(o,e.Diagnostics.extends_clause_already_seen);if(n)return yx(o,e.Diagnostics.extends_clause_must_precede_implements_clause);if(o.types.length>1)return yx(o.types[1],e.Diagnostics.Classes_can_only_extend_a_single_class);r=!0}else{if(e.Debug.assert(112===o.token),n)return yx(o,e.Diagnostics.implements_clause_already_seen);n=!0}nx(o)}})(t)||$b(t.typeParameters,r)}(t),vh(t),t.name&&(kv(t.name,e.Diagnostics.Class_name_cannot_be_0),jh(t,t.name),Kh(t,t.name),8388608&t.flags||function(t){1===J&&"Object"===t.escapedText&&z!==e.ModuleKind.ES2015&&z!==e.ModuleKind.ESNext&&Xr(t,e.Diagnostics.Class_name_cannot_be_Object_when_targeting_ES5_with_module_0,e.ModuleKind[z])}(t.name)),Nv(e.getEffectiveTypeParameterDeclarations(t)),ch(t);var r=ri(t),n=ro(r),i=Do(n),o=wa(r);Fv(r),function(t){for(var r=e.createUnderscoreEscapedMap(),n=e.createUnderscoreEscapedMap(),i=0,a=t.members;i<a.length;i++){var o=a[i];if(161===o.kind)for(var s=0,c=o.parameters;s<c.length;s++){var u=c[s];e.isParameterPropertyDeclaration(u,o)&&!e.isBindingPattern(u.name)&&p(r,u.name,u.name.escapedText,3)}else{var l=e.hasModifier(o,32)?n:r,_=o.name,d=_&&e.getPropertyNameForPropertyNameNode(_);if(_&&d)switch(o.kind){case 162:p(l,_,d,1);break;case 163:p(l,_,d,2);break;case 158:p(l,_,d,3);break;case 160:p(l,_,d,8)}}}function p(t,r,n,i){var a=t.get(n);a?8&a?8!==i&&Xr(r,e.Diagnostics.Duplicate_identifier_0,e.getTextOfNode(r)):a&i?Xr(r,e.Diagnostics.Duplicate_identifier_0,e.getTextOfNode(r)):t.set(n,a|i):t.set(n,i)}}(t),8388608&t.flags||function(t){for(var r=0,n=t.members;r<n.length;r++){var i=n[r],a=i.name;if(e.hasModifier(i,32)&&a){var o=e.getPropertyNameForPropertyNameNode(a);switch(o){case"name":case"length":case"caller":case"arguments":case"prototype":Xr(a,e.Diagnostics.Static_property_0_conflicts_with_built_in_property_Function_0_of_constructor_function_1,o,zi(ri(t)))}}}}(t);var s=e.getEffectiveBaseTypeNode(t);if(s){e.forEach(s.typeArguments,Gv),J<2&&Gb(s.parent,1);var c=e.getClassExtendsHeritageElement(t);c&&c!==s&&zy(c.expression);var u=Wa(n);if(u.length&&a){var l=u[0],_=qa(n),d=ms(_);if(function(t,r){var n=xs(t,1);if(n.length){var i=n[0].declaration;if(i&&e.hasModifier(i,8)){var a=e.getClassLikeDeclarationOfSymbol(t.symbol);ab(r,a)||Xr(r,e.Diagnostics.Cannot_extend_a_class_0_Class_constructor_is_marked_as_private,jn(t.symbol))}}}(d,s),Gv(s.expression),e.some(s.typeArguments)){e.forEach(s.typeArguments,Gv);for(var p=0,f=Ua(d,s.typeArguments,s);p<f.length;p++){if(!eh(s,f[p].typeParameters))break}}if(Ol(i,x=Do(l,n.thisType),void 0)?Ol(o,Tl(d),t.name||t,e.Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1):wv(t,i,x,e.Diagnostics.Class_0_incorrectly_extends_base_class_1),8650752&_.flags&&!Ka(o)&&Xr(t.name||t,e.Diagnostics.A_mixin_class_must_have_a_constructor_with_a_single_rest_parameter_of_type_any),!(d.symbol&&32&d.symbol.flags||8650752&_.flags)){var m=Va(d,s.typeArguments,s);e.forEach(m,(function(e){return!Sg(e.declaration)&&!El(zs(e),l)}))&&Xr(s.expression,e.Diagnostics.Base_constructors_must_all_have_the_same_return_type)}!function(t,r){var n=ts(r);e:for(var i=0,a=n;i<a.length;i++){var o=a[i],s=Iv(o);if(!(4194304&s.flags)){var c=Iv(Zo(t,s.escapedName)),u=e.getDeclarationModifierFlagsFromSymbol(s);if(e.Debug.assert(!!c,"derived should point to something, even if it is the base class' declaration."),c===s){var l=e.getClassLikeDeclarationOfSymbol(t.symbol);if(128&u&&(!l||!e.hasModifier(l,128))){for(var _=0,d=Wa(t);_<d.length;_++){var p=d[_];if(p!==r){var f=Zo(p,s.escapedName),m=f&&Iv(f);if(m&&m!==s)continue e}}213===l.kind?Xr(l,e.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1,Pi(o),Ii(r)):Xr(l,e.Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2,Ii(t),Pi(o),Ii(r))}}else{var g=e.getDeclarationModifierFlagsFromSymbol(c);if(8&u||8&g)continue;var y=void 0,h=98308&s.flags,v=98308&c.flags;if(h&&v){if(!K.useDefineForClassFields||128&u&&!(s.valueDeclaration&&e.isPropertyDeclaration(s.valueDeclaration)&&s.valueDeclaration.initializer)||s.valueDeclaration&&245===s.valueDeclaration.parent.kind||c.valueDeclaration&&e.isBinaryExpression(c.valueDeclaration))continue;if(4!==h&&4===v)y=e.Diagnostics.Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_property;else{if(4!==h||4===v){var b=e.find(c.declarations,(function(e){return 158===e.kind&&!e.initializer}));if(b&&!(33554432&c.flags)&&!(128&u)&&!(128&g)&&!c.declarations.some((function(e){return 8388608&e.flags}))){var x=ui(e.getClassLikeDeclarationOfSymbol(t.symbol)),D=b.name;if(b.exclamationToken||!x||!e.isIdentifier(D)||!V||!Mv(D,t,x)){var S=e.Diagnostics.Property_0_will_overwrite_the_base_property_in_1_If_this_is_intentional_add_an_initializer_Otherwise_add_a_declare_modifier_or_remove_the_redundant_declaration;Xr(e.getNameOfDeclaration(c.valueDeclaration)||c.valueDeclaration,S,Pi(s),Ii(r))}}continue}y=e.Diagnostics.Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_accessor}}else if(sm(s)){if(sm(c)||4&c.flags)continue;e.Debug.assert(!!(98304&c.flags)),y=e.Diagnostics.Class_0_defines_instance_member_function_1_but_extended_class_2_defines_it_as_instance_member_accessor}else y=98304&s.flags?e.Diagnostics.Class_0_defines_instance_member_accessor_1_but_extended_class_2_defines_it_as_instance_member_function:e.Diagnostics.Class_0_defines_instance_member_property_1_but_extended_class_2_defines_it_as_instance_member_function;Xr(e.getNameOfDeclaration(c.valueDeclaration)||c.valueDeclaration,y,Ii(r),Pi(s),Ii(t))}}}}(n,l)}}var g=e.getClassImplementsHeritageClauseElements(t);if(g)for(var y=0,h=g;y<h.length;y++){var v=h[y];if(e.isEntityNameExpression(v.expression)||Xr(v.expression,e.Diagnostics.A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments),rh(v),a){var b=Yu(v);if(b!==xe)if(Ga(b)){var x,D=b.symbol&&32&b.symbol.flags?e.Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass:e.Diagnostics.Class_0_incorrectly_implements_interface_1;Ol(i,x=Do(b,n.thisType),void 0)||wv(t,i,x,D)}else Xr(v,e.Diagnostics.A_class_can_only_implement_an_object_type_or_intersection_of_object_types_with_statically_known_members)}}a&&(Cv(n),Hy(t),function(t){if(!V||!G||8388608&t.flags)return;for(var r=ui(t),n=0,i=t.members;n<i.length;n++){var a=i[n];if(!(2&e.getModifierFlags(a))&&Ov(a)){var o=a.name;if(e.isIdentifier(o)){var s=wa(ri(a));3&s.flags||32768&R_(s)||r&&Mv(o,s,r)||Xr(a.name,e.Diagnostics.Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor,e.declarationNameToString(o))}}}}(t))}function wv(t,r,n,i){for(var a=!1,o=function(t){if(e.hasStaticModifier(t))return"continue";var i=t.name&&cb(t.name)||cb(t);if(i){var o=vs(r,i.escapedName),s=vs(n,i.escapedName);if(o&&s){Ol(wa(o),wa(s),t.name||t,void 0,(function(){return e.chainDiagnosticMessages(void 0,e.Diagnostics.Property_0_in_type_1_is_not_assignable_to_the_same_property_in_base_type_2,Pi(i),Ii(r),Ii(n))}))||(a=!0)}}},s=0,c=t.members;s<c.length;s++){o(c[s])}a||Ol(r,n,t.name||t,i)}function Iv(t){return 1&e.getCheckFlags(t)?t.target:t}function Ov(t){return 158===t.kind&&!e.hasModifier(t,160)&&!t.exclamationToken&&!t.initializer}function Mv(t,r,n){var i=e.createPropertyAccess(e.createThis(),t);return i.expression.parent=i,i.parent=n,i.flowNode=n.returnFlowNode,!(32768&R_(Op(i,r,z_(r))))}function Lv(t){if(Yb(t)||function(t){var r=!1;if(t.heritageClauses)for(var n=0,i=t.heritageClauses;n<i.length;n++){var a=i[n];if(89!==a.token)return e.Debug.assert(112===a.token),yx(a,e.Diagnostics.Interface_declaration_cannot_have_implements_clause);if(r)return yx(a,e.Diagnostics.extends_clause_already_seen);r=!0,nx(a)}}(t),Nv(t.typeParameters),a){kv(t.name,e.Diagnostics.Interface_name_cannot_be_0),ch(t);var r=ri(t);if(Fv(r),t===e.getDeclarationOfKind(r,245)){var n=ro(r),i=Do(n);if(function(t,r){var n=Wa(t);if(n.length<2)return!0;var i=e.createUnderscoreEscapedMap();e.forEach(lo(t).declaredProperties,(function(e){i.set(e.escapedName,{prop:e,containingType:t})}));for(var a=!0,o=0,s=n;o<s.length;o++)for(var c=s[o],u=0,l=ts(Do(c,t.thisType));u<l.length;u++){var _=l[u],d=i.get(_.escapedName);if(d){if(d.containingType!==t&&0===f_(d.prop,_,Cl)){a=!1;var p=Ii(d.containingType),f=Ii(c),m=e.chainDiagnosticMessages(void 0,e.Diagnostics.Named_property_0_of_types_1_and_2_are_not_identical,Pi(_),p,f);m=e.chainDiagnosticMessages(m,e.Diagnostics.Interface_0_cannot_simultaneously_extend_types_1_and_2,Ii(t),p,f),jr.add(e.createDiagnosticForNodeFromMessageChain(r,m))}}else i.set(_.escapedName,{prop:_,containingType:c})}return a}(n,t.name)){for(var o=0,s=Wa(n);o<s.length;o++){Ol(i,Do(s[o],n.thisType),t.name,e.Diagnostics.Interface_0_incorrectly_extends_interface_1)}Cv(n)}}Gy(t)}e.forEach(e.getInterfaceBaseTypeNodes(t),(function(t){e.isEntityNameExpression(t.expression)||Xr(t.expression,e.Diagnostics.An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments),rh(t)})),e.forEach(t.members,Gv),a&&(Hy(t),Dh(t))}function Rv(e){var t=dn(e);if(!(16384&t.flags)){t.flags|=16384;for(var r=0,n=0,i=e.members;n<i.length;n++){var a=i[n],o=Bv(a,r);dn(a).enumMemberValue=o,r="number"==typeof o?o+1:void 0}}}function Bv(t,r){if(Zi(t.name))Xr(t.name,e.Diagnostics.Computed_property_names_are_not_allowed_in_enums);else{var n=e.getTextOfPropertyName(t.name);Mf(n)&&!Of(n)&&Xr(t.name,e.Diagnostics.An_enum_member_cannot_have_a_numeric_name)}return t.initializer?function(t){var r=Qa(ri(t.parent)),n=e.isEnumConst(t.parent),i=t.initializer,a=1!==r||Xa(t)?function r(n){switch(n.kind){case 206:var i=r(n.operand);if("number"==typeof i)switch(n.operator){case 39:return i;case 40:return-i;case 54:return~i}break;case 208:var a=r(n.left),s=r(n.right);if("number"==typeof a&&"number"==typeof s)switch(n.operatorToken.kind){case 51:return a|s;case 50:return a&s;case 48:return a>>s;case 49:return a>>>s;case 47:return a<<s;case 52:return a^s;case 41:return a*s;case 43:return a/s;case 39:return a+s;case 40:return a-s;case 44:return a%s;case 42:return Math.pow(a,s)}else if("string"==typeof a&&"string"==typeof s&&39===n.operatorToken.kind)return a+s;break;case 10:case 14:return n.text;case 8:return Dx(n),+n.text;case 199:return r(n.expression);case 75:var c=n;return Of(c.escapedText)?+c.escapedText:e.nodeIsMissing(n)?0:o(n,ri(t.parent),c.escapedText);case 194:case 193:var u=n;if(function t(r){return 75===r.kind||193===r.kind&&t(r.expression)||194===r.kind&&t(r.expression)&&e.isStringLiteralLike(r.argumentExpression)}(u)){var l=Ky(u.expression);if(l.symbol&&384&l.symbol.flags){var _=void 0;return _=193===u.kind?u.name.escapedText:e.escapeLeadingUnderscores(e.cast(u.argumentExpression,e.isLiteralExpression).text),o(n,l.symbol,_)}}}return}(i):void 0;if(void 0!==a)n&&"number"==typeof a&&!isFinite(a)&&Xr(i,isNaN(a)?e.Diagnostics.const_enum_member_initializer_was_evaluated_to_disallowed_value_NaN:e.Diagnostics.const_enum_member_initializer_was_evaluated_to_a_non_finite_value);else{if(1===r)return Xr(i,e.Diagnostics.Computed_values_are_not_permitted_in_an_enum_with_string_valued_members),0;n?Xr(i,e.Diagnostics.const_enum_member_initializers_can_only_contain_literal_values_and_other_computed_enum_values):8388608&t.parent.flags?Xr(i,e.Diagnostics.In_ambient_enum_declarations_member_initializer_must_be_constant_expression):Ol(zy(i),ro(ri(t.parent)),i,void 0)}return a;function o(r,n,i){var a=n.exports.get(i);if(a){var o=a.valueDeclaration;if(o!==t)return mn(o,t)?Ib(o):(Xr(r,e.Diagnostics.A_member_initializer_in_a_enum_declaration_cannot_reference_members_declared_after_it_including_members_defined_in_other_enums),0)}}}(t):8388608&t.parent.flags&&!e.isEnumConst(t.parent)&&0===Qa(ri(t.parent))?void 0:void 0!==r?r:void Xr(t.name,e.Diagnostics.Enum_member_must_have_initializer)}function jv(t){if(a){var r=e.isGlobalScopeAugmentation(t),n=8388608&t.flags;r&&!n&&Xr(t.name,e.Diagnostics.Augmentations_for_the_global_scope_should_have_declare_modifier_unless_they_appear_in_already_ambient_context);var i=e.isAmbientModule(t);if(Vv(t,i?e.Diagnostics.An_ambient_module_declaration_is_only_allowed_at_the_top_level_in_a_file:e.Diagnostics.A_namespace_declaration_is_only_allowed_in_a_namespace_or_module))return;Yb(t)||n||10!==t.name.kind||vx(t.name,e.Diagnostics.Only_ambient_modules_can_use_quoted_names),e.isIdentifier(t.name)&&(jh(t,t.name),Kh(t,t.name)),ch(t);var o=ri(t);if(512&o.flags&&!n&&o.declarations.length>1&&F(t,!!K.preserveConstEnums||!!K.isolatedModules)){var s=function(t){for(var r=0,n=t.declarations;r<n.length;r++){var i=n[r];if((244===i.kind||243===i.kind&&e.nodeIsPresent(i.body))&&!(8388608&i.flags))return i}}(o);s&&(e.getSourceFileOfNode(t)!==e.getSourceFileOfNode(s)?Xr(t.name,e.Diagnostics.A_namespace_declaration_cannot_be_in_a_different_file_from_a_class_or_function_with_which_it_is_merged):t.pos<s.pos&&Xr(t.name,e.Diagnostics.A_namespace_declaration_cannot_be_located_prior_to_a_class_or_function_with_which_it_is_merged));var c=e.getDeclarationOfKind(o,244);c&&(_=t,d=c,p=e.getEnclosingBlockScopeContainer(_),f=e.getEnclosingBlockScopeContainer(d),pn(p)?pn(f):!pn(f)&&p===f)&&(dn(t).flags|=32768)}if(i)if(e.isExternalModuleAugmentation(t)){if((r||33554432&ri(t).flags)&&t.body)for(var u=0,l=t.body.statements;u<l.length;u++){Kv(l[u],r)}}else pn(t.parent)?r?Xr(t.name,e.Diagnostics.Augmentations_for_the_global_scope_can_only_be_directly_nested_in_external_modules_or_ambient_module_declarations):e.isExternalModuleNameRelative(e.getTextOfIdentifierOrLiteral(t.name))&&Xr(t.name,e.Diagnostics.Ambient_module_declaration_cannot_specify_relative_module_name):Xr(t.name,r?e.Diagnostics.Augmentations_for_the_global_scope_can_only_be_directly_nested_in_external_modules_or_ambient_module_declarations:e.Diagnostics.Ambient_modules_cannot_be_nested_in_other_modules_or_namespaces)}var _,d,p,f;t.body&&(Gv(t.body),e.isGlobalScopeAugmentation(t)||Dh(t))}function Kv(t,r){switch(t.kind){case 224:for(var n=0,i=t.declarationList.declarations;n<i.length;n++){Kv(i[n],r)}break;case 258:case 259:yx(t,e.Diagnostics.Exports_and_export_assignments_are_not_permitted_in_module_augmentations);break;case 252:case 253:yx(t,e.Diagnostics.Imports_are_not_permitted_in_module_augmentations_Consider_moving_them_to_the_enclosing_external_module);break;case 190:case 241:var a=t.name;if(e.isBindingPattern(a)){for(var o=0,s=a.elements;o<s.length;o++){Kv(s[o],r)}break}case 244:case 247:case 243:case 245:case 248:case 246:if(r)return;var c=ri(t);if(c){var u=!(33554432&c.flags);u||(u=!!c.parent&&e.isExternalModuleAugmentation(c.parent.declarations[0]))}}}function Jv(t){var r=e.getExternalModuleName(t);if(!r||e.nodeIsMissing(r))return!1;if(!e.isStringLiteral(r))return Xr(r,e.Diagnostics.String_literal_expected),!1;var n=249===t.parent.kind&&e.isAmbientModule(t.parent.parent);return 288===t.parent.kind||n?!(n&&e.isExternalModuleNameRelative(r.text)&&!ji(t))||(Xr(t,e.Diagnostics.Import_or_export_declaration_in_an_ambient_module_declaration_cannot_reference_module_through_relative_module_name),!1):(Xr(r,259===t.kind?e.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace:e.Diagnostics.Import_declarations_in_a_namespace_cannot_reference_a_module),!1)}function zv(t){var r=ri(t),n=Mn(r);if(!(67108864&r.flags)&&n!==ge){var i=(1160127&(r=ti(r.exportSymbol||r)).flags?111551:0)|(788968&r.flags?788968:0)|(1920&r.flags?1920:0);if(n.flags&i)Xr(t,261===t.kind?e.Diagnostics.Export_declaration_conflicts_with_exported_declaration_of_0:e.Diagnostics.Import_declaration_conflicts_with_local_declaration_of_0,Pi(r));!K.isolatedModules||261!==t.kind||111551&n.flags||8388608&t.flags||Xr(t,e.Diagnostics.Cannot_re_export_a_type_when_the_isolatedModules_flag_is_provided)}}function Uv(e){jh(e,e.name),Kh(e,e.name),zv(e)}function Vv(e,t){var r=288===e.parent.kind||249===e.parent.kind||248===e.parent.kind;return r||yx(e,t),!r}function qv(t){if(zv(t),e.getEmitDeclarations(K)&&Vi(t.propertyName||t.name,!0),!t.parent.parent.moduleSpecifier){var r=t.propertyName||t.name,n=gn(r,r.escapedText,2998271,void 0,void 0,!0);if(n&&(n===te||n===re||pn(Yi(n.declarations[0]))))Xr(r,e.Diagnostics.Cannot_export_0_Only_local_declarations_can_be_exported_from_a_module,e.idText(r));else{Ln(t);var i=n&&(2097152&n.flags?Mn(n):n);(!i||i===ge||111551&i.flags)&&ky(t.propertyName||t.name)}}}function Wv(t){var r=ri(t),n=_n(r);if(!n.exportsChecked){var i=r.exports.get("export=");if(i&&function(t){return e.forEachEntry(t.exports,(function(e,t){return"export="!==t}))}(r)){var a=En(i)||i.valueDeclaration;ji(a)||e.isInJSFile(a)||Xr(a,e.Diagnostics.An_export_assignment_cannot_be_used_in_a_module_with_other_exported_elements)}var o=$n(r);o&&o.forEach((function(t,r){var n=t.declarations,i=t.flags;if("__export"!==r&&!(1984&i)){var a=e.countWhere(n,k);if(!(524288&i&&a<=2)&&a>1)for(var o=0,s=n;o<s.length;o++){var c=s[o];P(c)&&jr.add(e.createDiagnosticForNode(c,e.Diagnostics.Cannot_redeclare_exported_variable_0,e.unescapeLeadingUnderscores(r)))}}})),n.exportsChecked=!0}}function Gv(t){if(t){var r=l;l=t,x=0,function(t){e.isInJSFile(t)&&e.forEach(t.jsDoc,(function(t){var r=t.tags;return e.forEach(r,Gv)}));var r=t.kind;if(o)switch(r){case 248:case 244:case 245:case 243:o.throwIfCancellationRequested()}r>=224&&r<=240&&t.flowNode&&!Fp(t.flowNode)&&$r(!1===K.allowUnreachableCode,t,e.Diagnostics.Unreachable_code_detected);switch(r){case 154:return Uy(t);case 155:return Vy(t);case 158:case 157:return Yy(t);case 169:case 170:case 164:case 165:case 166:return Wy(t);case 160:case 159:return function(t){dx(t)||ax(t.name),xh(t),e.hasModifier(t,128)&&160===t.kind&&t.body&&Xr(t,e.Diagnostics.Method_0_cannot_have_an_implementation_because_it_is_marked_abstract,e.declarationNameToString(t.name))}(t);case 161:return Xy(t);case 162:case 163:return Qy(t);case 168:return rh(t);case 167:return function(t){var r=function(e){switch(e.parent.kind){case 201:case 164:case 243:case 200:case 169:case 160:case 159:var t=e.parent;if(e===t.type)return t}}(t);if(r){var n=Ls(r),i=Js(n);if(i){Gv(t.type);var a=t.parameterName;if(0===i.kind||2===i.kind)Hu(a);else if(i.parameterIndex>=0){if(M(n)&&i.parameterIndex===n.parameters.length-1)Xr(a,e.Diagnostics.A_type_predicate_cannot_reference_a_rest_parameter);else if(i.type){Ol(i.type,wa(n.parameters[i.parameterIndex]),t.type,void 0,(function(){return e.chainDiagnosticMessages(void 0,e.Diagnostics.A_type_predicate_s_type_must_be_assignable_to_its_parameter_s_type)}))}}else if(a){for(var o=!1,s=0,c=r.parameters;s<c.length;s++){var u=c[s].name;if(e.isBindingPattern(u)&&qy(u,a,i.parameterName)){o=!0;break}}o||Xr(t.parameterName,e.Diagnostics.Cannot_find_parameter_0,i.parameterName)}}}else Xr(t,e.Diagnostics.A_type_predicate_is_only_allowed_in_return_type_position_for_functions_and_methods)}(t);case 171:return function(e){Cc(e)}(t);case 172:return function(t){e.forEach(t.members,Gv),a&&(Cv(Ou(t)),Hy(t),Gy(t))}(t);case 173:return function(e){Gv(e.elementType)}(t);case 174:return function(t){for(var r=t.elementTypes,n=!1,i=0;i<r.length;i++){var a=r[i];if(176===a.kind){if(i!==r.length-1){vx(a,e.Diagnostics.A_rest_element_must_be_last_in_a_tuple_type);break}y_(Yu(a.type))||Xr(a,e.Diagnostics.A_rest_element_type_must_be_an_array_type)}else if(175===a.kind)n=!0;else if(n){vx(a,e.Diagnostics.A_required_element_cannot_follow_an_optional_element);break}}e.forEach(t.elementTypes,Gv)}(t);case 177:case 178:return function(t){e.forEach(t.types,Gv)}(t);case 181:case 175:case 176:return Gv(t.type);case 182:return function(e){Hu(e)}(t);case 183:return ih(t);case 179:return function(t){e.forEachChild(t,Gv)}(t);case 180:return function(t){e.findAncestor(t,(function(e){return e.parent&&179===e.parent.kind&&e.parent.extendsType===e}))||vx(t,e.Diagnostics.infer_declarations_are_only_permitted_in_the_extends_clause_of_a_conditional_type),Gv(t.typeParameter),Dh(t)}(t);case 187:return function(e){Gv(e.argument),Yu(e)}(t);case 305:return function(t){var r=e.getJSDocHost(t);if(e.isClassDeclaration(r)||e.isClassExpression(r)){var n=e.getJSDocTags(r).filter(e.isJSDocAugmentsTag);e.Debug.assert(n.length>0),n.length>1&&Xr(n[1],e.Diagnostics.Class_declarations_cannot_have_more_than_one_augments_or_extends_tag);var i=bh(t.class.expression),a=e.getClassExtendsHeritageElement(r);if(a){var o=bh(a.expression);o&&i.escapedText!==o.escapedText&&Xr(i,e.Diagnostics.JSDoc_0_1_does_not_match_the_extends_2_clause,e.idText(t.tagName),e.idText(i),e.idText(o))}}else Xr(r,e.Diagnostics.JSDoc_0_is_not_attached_to_a_class,e.idText(t.tagName))}(t);case 315:case 308:case 309:return function(t){t.typeExpression||Xr(t.name,e.Diagnostics.JSDoc_typedef_tag_should_either_have_a_type_annotation_or_be_followed_by_property_or_member_tags),t.name&&kv(t.name,e.Diagnostics.Type_alias_name_cannot_be_0),Gv(t.typeExpression)}(t);case 314:return function(e){Gv(e.constraint);for(var t=0,r=e.typeParameters;t<r.length;t++){Gv(r[t])}}(t);case 313:return function(e){Gv(e.typeExpression)}(t);case 310:return function(t){if(Gv(t.typeExpression),!e.getParameterSymbolFromJSDoc(t)){var r=e.getHostSignatureFromJSDoc(t);if(r){var n=e.getJSDocTags(r).filter(e.isJSDocParameterTag).indexOf(t);if(n>-1&&n<r.parameters.length&&e.isBindingPattern(r.parameters[n].name))return;Bs(r)?e.findLast(e.getJSDocTags(r),e.isJSDocParameterTag)===t&&t.typeExpression&&t.typeExpression.type&&!y_(Yu(t.typeExpression.type))&&Xr(t.name,e.Diagnostics.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name_It_would_match_arguments_if_it_had_an_array_type,e.idText(152===t.name.kind?t.name.right:t.name)):e.isQualifiedName(t.name)?Xr(t.name,e.Diagnostics.Qualified_name_0_is_not_allowed_without_a_leading_param_object_1,e.entityNameToString(t.name),e.entityNameToString(t.name.left)):Xr(t.name,e.Diagnostics.JSDoc_param_tag_has_name_0_but_there_is_no_parameter_with_that_name,e.idText(t.name))}}}(t);case 298:!function(t){!a||t.type||e.isJSDocConstructSignature(t)||id(t,he),Wy(t)}(t);case 296:case 295:case 293:case 294:case 302:return Hv(t),void e.forEachChild(t,Gv);case 299:return void function(t){Hv(t),Gv(t.type);var r=t.parent;if(e.isParameter(r)&&e.isJSDocFunctionType(r.parent))return void(e.last(r.parent.parameters)!==r&&Xr(t,e.Diagnostics.A_rest_parameter_must_be_last_in_a_parameter_list));e.isJSDocTypeExpression(r)||Xr(t,e.Diagnostics.JSDoc_may_only_appear_in_the_last_parameter_of_a_signature);var n=t.parent.parent;if(!e.isJSDocParameterTag(n))return void Xr(t,e.Diagnostics.JSDoc_may_only_appear_in_the_last_parameter_of_a_signature);var i=e.getParameterSymbolFromJSDoc(n);if(!i)return;var a=e.getHostSignatureFromJSDoc(n);a&&e.last(a.parameters).symbol===i||Xr(t,e.Diagnostics.A_rest_parameter_must_be_last_in_a_parameter_list)}(t);case 292:return Gv(t.type);case 184:return function(e){Gv(e.objectType),Gv(e.indexType),nh(Eu(e),e)}(t);case 185:return function(t){Gv(t.typeParameter),Gv(t.type),t.type||id(t,he),Ol(zo(Cu(t)),qe,e.getEffectiveConstraintOfTypeParameter(t.typeParameter))}(t);case 243:return function(e){a&&(xh(e),ox(e),jh(e,e.name),Kh(e,e.name))}(t);case 222:case 249:return Mh(t);case 224:return Gh(t);case 225:return function(e){xx(e),zy(e.expression)}(t);case 226:return Hh(t);case 227:return function(e){xx(e),Gv(e.statement),Yh(e.expression)}(t);case 228:return function(e){xx(e),Yh(e.expression),Gv(e.statement)}(t);case 229:return function(t){xx(t)||t.initializer&&242===t.initializer.kind&&mx(t.initializer),t.initializer&&(242===t.initializer.kind?e.forEach(t.initializer.declarations,qh):zy(t.initializer)),t.condition&&Yh(t.condition),t.incrementor&&zy(t.incrementor),Gv(t.statement),t.locals&&Dh(t)}(t);case 230:return Xh(t);case 231:return function(t){if(ux(t),t.awaitModifier?2==(6&e.getFunctionFlags(e.getContainingFunction(t)))&&J<99&&Gb(t,32768):K.downlevelIteration&&J<2&&Gb(t,256),242===t.initializer.kind)Qh(t);else{var r=t.initializer,n=$h(t.expression,t.awaitModifier);if(191===r.kind||192===r.kind)xy(r,n||xe);else{var i=zy(r);dy(r,e.Diagnostics.The_left_hand_side_of_a_for_of_statement_must_be_a_variable_or_a_property_access,e.Diagnostics.The_left_hand_side_of_a_for_of_statement_may_not_be_an_optional_property_access),n&&Ml(n,i,r,t.expression)}}Gv(t.statement),t.locals&&Dh(t)}(t);case 232:case 233:return Dv(t);case 234:return function(t){if(!xx(t)){var r=e.getContainingFunction(t);if(r){var n=zs(Ls(r)),i=e.getFunctionFlags(r);if(V||t.expression||131072&n.flags){var a=t.expression?ky(t.expression):Se;if(163===r.kind)t.expression&&Xr(t,e.Diagnostics.Setters_cannot_return_a_value);else if(161===r.kind)t.expression&&!Ml(a,n,t,t.expression)&&Xr(t,e.Diagnostics.Return_type_of_constructor_signature_must_be_assignable_to_the_instance_type_of_the_class);else if(Us(r)){var o=Sv(n,i),s=2&i?_h(a,t,e.Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member):a;o&&Ml(s,o,t,t.expression)}}else 161!==r.kind&&K.noImplicitReturns&&!Tv(r,n)&&Xr(t,e.Diagnostics.Not_all_code_paths_return_a_value)}else yx(t,e.Diagnostics.A_return_statement_can_only_be_used_within_a_function_body)}}(t);case 235:return function(t){xx(t)||32768&t.flags&&yx(t,e.Diagnostics.with_statements_are_not_allowed_in_an_async_function_block),zy(t.expression);var r=e.getSourceFileOfNode(t);if(!gx(r)){var n=e.getSpanOfTokenAtPosition(r,t.pos).start;hx(r,n,t.statement.pos-n,e.Diagnostics.The_with_statement_is_not_supported_All_symbols_in_a_with_block_will_have_type_any)}}(t);case 236:return function(t){var r;xx(t);var n=!1,i=zy(t.expression),o=C_(i);e.forEach(t.caseBlock.clauses,(function(t){if(276!==t.kind||n||(void 0===r?r=t:(vx(t,e.Diagnostics.A_default_clause_cannot_appear_more_than_once_in_a_switch_statement),n=!0)),a&&275===t.kind){var s=zy(t.expression),c=C_(s),u=i;c&&o||(s=c?k_(s):s,u=k_(i)),Dy(u,s)||Ul(s,u,t.expression,void 0)}e.forEach(t.statements,Gv),K.noFallthroughCasesInSwitch&&t.fallthroughFlowNode&&Fp(t.fallthroughFlowNode)&&Xr(t,e.Diagnostics.Fallthrough_case_in_switch)})),t.caseBlock.locals&&Dh(t.caseBlock)}(t);case 237:return function(t){xx(t)||e.findAncestor(t.parent,(function(r){return e.isFunctionLike(r)?"quit":237===r.kind&&r.label.escapedText===t.label.escapedText&&(vx(t.label,e.Diagnostics.Duplicate_label_0,e.getTextOfNode(t.label)),!0)})),Gv(t.statement)}(t);case 238:return Ev(t);case 239:return function(t){xx(t),Mh(t.tryBlock);var r=t.catchClause;if(r){if(r.variableDeclaration)if(r.variableDeclaration.type)yx(r.variableDeclaration.type,e.Diagnostics.Catch_clause_variable_cannot_have_a_type_annotation);else if(r.variableDeclaration.initializer)yx(r.variableDeclaration.initializer,e.Diagnostics.Catch_clause_variable_cannot_have_an_initializer);else{var n=r.block.locals;n&&e.forEachKey(r.locals,(function(t){var r=n.get(t);r&&0!=(2&r.flags)&&vx(r.valueDeclaration,e.Diagnostics.Cannot_redeclare_identifier_0_in_catch_clause,t)}))}Mh(r.block)}t.finallyBlock&&Mh(t.finallyBlock)}(t);case 241:return qh(t);case 190:return Wh(t);case 244:return function(t){t.name||e.hasModifier(t,512)||yx(t,e.Diagnostics.A_class_declaration_without_the_default_modifier_must_have_a_name),Pv(t),e.forEach(t.members,Gv),Dh(t)}(t);case 245:return Lv(t);case 246:return function(t){Yb(t),kv(t.name,e.Diagnostics.Type_alias_name_cannot_be_0),Nv(t.typeParameters),Gv(t.type),Dh(t)}(t);case 247:return function(t){if(a){Yb(t),kv(t.name,e.Diagnostics.Enum_name_cannot_be_0),jh(t,t.name),Kh(t,t.name),ch(t),Rv(t);var r=ri(t);if(t===e.getDeclarationOfKind(r,t.kind)){if(r.declarations.length>1){var n=e.isEnumConst(t);e.forEach(r.declarations,(function(t){e.isEnumDeclaration(t)&&e.isEnumConst(t)!==n&&Xr(e.getNameOfDeclaration(t),e.Diagnostics.Enum_declarations_must_all_be_const_or_non_const)}))}var i=!1;e.forEach(r.declarations,(function(t){if(247!==t.kind)return!1;var r=t;if(!r.members.length)return!1;var n=r.members[0];n.initializer||(i?Xr(n.name,e.Diagnostics.In_an_enum_with_multiple_declarations_only_one_declaration_can_omit_an_initializer_for_its_first_enum_element):i=!0)}))}}}(t);case 248:return jv(t);case 253:return function(t){if(!Vv(t,e.Diagnostics.An_import_declaration_can_only_be_used_in_a_namespace_or_module)&&(!Yb(t)&&e.hasModifiers(t)&&yx(t,e.Diagnostics.An_import_declaration_cannot_have_modifiers),Jv(t))){var r=t.importClause;if(r)if(r.name&&Uv(r),r.namedBindings)if(255===r.namedBindings.kind)Uv(r.namedBindings);else zn(t,t.moduleSpecifier)&&e.forEach(r.namedBindings.elements,Uv)}}(t);case 252:return function(t){if(!Vv(t,e.Diagnostics.An_import_declaration_can_only_be_used_in_a_namespace_or_module)&&(Yb(t),e.isInternalModuleImportEqualsDeclaration(t)||Jv(t)))if(Uv(t),e.hasModifier(t,1)&&Ln(t),263!==t.moduleReference.kind){var r=Mn(ri(t));if(r!==ge){if(111551&r.flags){var n=e.getFirstIdentifier(t.moduleReference);1920&Kn(n,112575).flags||Xr(n,e.Diagnostics.Module_0_is_hidden_by_a_local_declaration_with_the_same_name,e.declarationNameToString(n))}788968&r.flags&&kv(t.name,e.Diagnostics.Import_name_cannot_be_0)}}else z>=e.ModuleKind.ES2015&&!(8388608&t.flags)&&vx(t,e.Diagnostics.Import_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_import_Asterisk_as_ns_from_mod_import_a_from_mod_import_d_from_mod_or_another_module_format_instead)}(t);case 259:return function(t){if(!Vv(t,e.Diagnostics.An_export_declaration_can_only_be_used_in_a_module)&&(!Yb(t)&&e.hasModifiers(t)&&yx(t,e.Diagnostics.An_export_declaration_cannot_have_modifiers),!t.moduleSpecifier||Jv(t)))if(t.exportClause){e.forEach(t.exportClause.elements,qv);var r=249===t.parent.kind&&e.isAmbientModule(t.parent.parent),n=!r&&249===t.parent.kind&&!t.moduleSpecifier&&8388608&t.flags;288===t.parent.kind||r||n||Xr(t,e.Diagnostics.Export_declarations_are_not_permitted_in_a_namespace)}else{var i=zn(t,t.moduleSpecifier);i&&Hn(i)&&Xr(t.moduleSpecifier,e.Diagnostics.Module_0_uses_export_and_cannot_be_used_with_export_Asterisk,Pi(i)),z!==e.ModuleKind.System&&z!==e.ModuleKind.ES2015&&z!==e.ModuleKind.ESNext&&Gb(t,65536)}}(t);case 258:return function(t){if(!Vv(t,e.Diagnostics.An_export_assignment_can_only_be_used_in_a_module)){var r=288===t.parent.kind?t.parent:t.parent.parent;if(248!==r.kind||e.isAmbientModule(r)){if(!Yb(t)&&e.hasModifiers(t)&&yx(t,e.Diagnostics.An_export_assignment_cannot_have_modifiers),75===t.expression.kind){var n=t.expression,i=Kn(n,67108863,!0,!0,t);if(i){zp(i,n);var a=2097152&i.flags?Mn(i):i;(a===ge||111551&a.flags)&&ky(t.expression)}e.getEmitDeclarations(K)&&Vi(t.expression,!0)}else ky(t.expression);Wv(r),8388608&t.flags&&!e.isEntityNameExpression(t.expression)&&vx(t.expression,e.Diagnostics.The_expression_of_an_export_assignment_must_be_an_identifier_or_qualified_name_in_an_ambient_context),!t.isExportEquals||8388608&t.flags||(z>=e.ModuleKind.ES2015?vx(t,e.Diagnostics.Export_assignment_cannot_be_used_when_targeting_ECMAScript_modules_Consider_using_export_default_or_another_module_format_instead):z===e.ModuleKind.System&&vx(t,e.Diagnostics.Export_assignment_is_not_supported_when_module_flag_is_system))}else t.isExportEquals?Xr(t,e.Diagnostics.An_export_assignment_cannot_be_used_in_a_namespace):Xr(t,e.Diagnostics.A_default_export_can_only_be_used_in_an_ECMAScript_style_module)}}(t);case 223:case 240:return void xx(t);case 262:(function(e){vh(e)})(t)}}(t),l=r}}function Hv(t){e.isInJSFile(t)||vx(t,e.Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments)}function Yv(t){var r=dn(e.getSourceFileOfNode(t));if(!(1&r.flags)){r.deferredNodes=r.deferredNodes||e.createMap();var n=""+N(t);r.deferredNodes.set(n,t)}}function Xv(t){var r=l;switch(l=t,x=0,t.kind){case 200:case 201:case 160:case 159:!function(t){e.Debug.assert(160!==t.kind||e.isObjectLiteralMethod(t));var r=e.getFunctionFlags(t),n=Us(t);if(ny(t,n),t.body)if(e.getEffectiveReturnTypeNode(t)||zs(Ls(t)),222===t.body.kind)Gv(t.body);else{var i=zy(t.body),a=oy(n,r);if(a)if(2==(3&r))Ml(_h(i,t.body,e.Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member),a,t.body,t.body);else Ml(i,a,t.body,t.body)}}(t);break;case 162:case 163:Qy(t);break;case 213:!function(t){e.forEach(t.members,Gv),Dh(t)}(t);break;case 265:!function(e){rm(e)}(t);break;case 264:!function(e){rm(e.openingElement),zf(e.closingElement.tagName)?Gf(e.closingElement):zy(e.closingElement.tagName),Vf(e)}(t)}l=r}function Qv(t){e.performance.mark("beforeCheck"),function(t){var r=dn(t);if(!(1&r.flags)){if(e.skipTypeChecking(t,K,n))return;!function(t){!!(8388608&t.flags)&&function(t){for(var r=0,n=t.statements;r<n.length;r++){var i=n[r];if((e.isDeclaration(i)||224===i.kind)&&bx(i))return!0}}(t)}(t),e.clear(Lr),e.clear(Rr),e.forEach(t.statements,Gv),Gv(t.endOfFileToken),function(e){var t=dn(e);t.deferredNodes&&t.deferredNodes.forEach(Xv)}(t),e.isExternalOrCommonJsModule(t)&&Dh(t),t.isDeclarationFile||!K.noUnusedLocals&&!K.noUnusedParameters||Sh(Zv(t),(function(t,r,n){!e.containsParseError(t)&&$v(r)&&jr.add(n)})),e.isExternalOrCommonJsModule(t)&&Wv(t),Lr.length&&(e.forEach(Lr,Rh),e.clear(Lr)),Rr.length&&(e.forEach(Rr,Bh),e.clear(Rr)),r.flags|=1}}(t),e.performance.mark("afterCheck"),e.performance.measure("Check","beforeCheck","afterCheck")}function $v(t){switch(t){case 0:return!!K.noUnusedLocals;case 1:return!!K.noUnusedParameters;default:return e.Debug.assertNever(t)}}function Zv(t){return _r.get(t.path)||e.emptyArray}function eb(t,r){try{return o=r,function(t){if(tb(),t){var r=jr.getGlobalDiagnostics(),i=r.length;Qv(t);var a=jr.getDiagnostics(t.fileName),o=jr.getGlobalDiagnostics();if(o!==r){var s=e.relativeComplement(r,o,e.compareDiagnostics);return e.concatenate(s,a)}return 0===i&&o.length>0?e.concatenate(o,a):a}return e.forEach(n.getSourceFiles(),Qv),jr.getDiagnostics()}(t)}finally{o=void 0}}function tb(){if(!a)throw new Error("Trying to get diagnostics from a type checker that does not produce them.")}function rb(e){switch(e.kind){case 154:case 244:case 245:case 246:case 247:return!0;default:return!1}}function nb(e){for(;152===e.parent.kind;)e=e.parent;return 168===e.parent.kind}function ib(t,r){for(var n;(t=e.getContainingClass(t))&&!(n=r(t)););return n}function ab(e,t){return!!ib(e,(function(e){return e===t}))}function ob(e){return void 0!==function(e){for(;152===e.parent.kind;)e=e.parent;return 252===e.parent.kind?e.parent.moduleReference===e?e.parent:void 0:258===e.parent.kind&&e.parent.expression===e?e.parent:void 0}(e)}function sb(t){if(e.isDeclarationName(t))return ri(t.parent);if(e.isInJSFile(t)&&193===t.parent.kind&&t.parent===t.parent.parent.left){var r=function(t){switch(e.getAssignmentDeclarationKind(t.parent.parent)){case 1:case 3:return ri(t.parent);case 4:case 2:case 5:return ri(t.parent.parent)}}(t);if(r)return r}if(258===t.parent.kind&&e.isEntityNameExpression(t)){var n=Kn(t,2998271,!0);if(n&&n!==ge)return n}else if(!e.isPropertyAccessExpression(t)&&ob(t)){var i=e.getAncestor(t,252);return e.Debug.assert(void 0!==i),Bn(t,!0)}if(!e.isPropertyAccessExpression(t)){var a=function(t){for(var r=t.parent;e.isQualifiedName(r);)t=r,r=r.parent;if(r&&187===r.kind&&r.qualifier===t)return r}(t);if(a){Yu(a);var o=dn(t).resolvedSymbol;return o===ge?void 0:o}}for(;e.isRightSideOfQualifiedNameOrPropertyAccess(t);)t=t.parent;if(function(e){for(;193===e.parent.kind;)e=e.parent;return 215===e.parent.kind}(t)){var s=0;215===t.parent.kind?(s=788968,e.isExpressionWithTypeArgumentsInClassExtendsClause(t.parent)&&(s|=111551)):s=1920,s|=2097152;var c=e.isEntityNameExpression(t)?Kn(t,s):void 0;if(c)return c}if(310===t.parent.kind)return e.getParameterSymbolFromJSDoc(t.parent);if(154===t.parent.kind&&314===t.parent.parent.kind){e.Debug.assert(!e.isInJSFile(t));var u=e.getTypeParameterFromJsDoc(t.parent);return u&&u.symbol}if(e.isExpressionNode(t)){if(e.nodeIsMissing(t))return;if(75===t.kind){if(e.isJSXTagName(t)&&zf(t)){var l=Gf(t.parent);return l===ge?void 0:l}return Kn(t,111551,!1,!0)}if(193===t.kind||152===t.kind){var _=dn(t);return _.resolvedSymbol?_.resolvedSymbol:(193===t.kind?hm(t):vm(t),_.resolvedSymbol)}}else if(nb(t)){return Kn(t,s=168===t.parent.kind?788968:1920,!1,!0)}return 167===t.parent.kind?Kn(t,1):void 0}function cb(t){if(288===t.kind)return e.isExternalModule(t)?ti(t.symbol):void 0;var r=t.parent,n=r.parent;if(!(16777216&t.flags)){if(w(t)){var i=ri(r);return e.isImportOrExportSpecifier(t.parent)&&t.parent.propertyName===t?Bf(i):i}if(e.isLiteralComputedPropertyDeclarationName(t))return ri(r.parent);if(75===t.kind){if(ob(t))return sb(t);if(190===r.kind&&188===n.kind&&t===r.propertyName){var a=vs(ub(n),t.escapedText);if(a)return a}}switch(t.kind){case 75:case 193:case 152:return sb(t);case 103:var o=e.getThisContainer(t,!1);if(e.isFunctionLike(o)){var s=Ls(o);if(s.thisParameter)return s.thisParameter}if(e.isInExpressionContext(t))return zy(t).symbol;case 182:return Hu(t).symbol;case 101:return zy(t).symbol;case 128:var c=t.parent;return c&&161===c.kind?c.parent.symbol:void 0;case 10:case 14:if(e.isExternalModuleImportEqualsDeclaration(t.parent.parent)&&e.getExternalModuleImportEqualsDeclarationExpression(t.parent.parent)===t||(253===t.parent.kind||259===t.parent.kind)&&t.parent.moduleSpecifier===t||e.isInJSFile(t)&&e.isRequireCall(t.parent,!1)||e.isImportCall(t.parent)||e.isLiteralTypeNode(t.parent)&&e.isLiteralImportTypeNode(t.parent.parent)&&t.parent.parent.argument===t.parent)return zn(t,t);if(e.isCallExpression(r)&&e.isBindableObjectDefinePropertyCall(r)&&r.arguments[1]===t)return ri(r);case 8:var u=e.isElementAccessExpression(r)?r.argumentExpression===t?Ky(r.expression):void 0:e.isLiteralTypeNode(r)&&e.isIndexedAccessTypeNode(n)?Yu(n.objectType):void 0;return u&&vs(u,e.escapeLeadingUnderscores(t.text));case 83:case 93:case 38:case 79:return ri(t.parent);case 187:return e.isLiteralImportTypeNode(t)?cb(t.argument.literal):void 0;case 88:return e.isExportAssignment(t.parent)?e.Debug.assertDefined(t.parent.symbol):void 0;default:return}}}function ub(t){if(16777216&t.flags)return xe;var r,n=e.tryGetClassImplementingOrExtendingExpressionWithTypeArguments(t),i=n&&Ha(ri(n.class));if(e.isPartOfTypeNode(t)){var a=Yu(t);return i?Do(a,i.thisType):a}if(e.isExpressionNode(t))return _b(t);if(i&&!n.isImplements){var o=e.firstOrUndefined(Wa(i));return o?Do(o,i.thisType):xe}if(rb(t))return ro(r=ri(t));if(function(e){return 75===e.kind&&rb(e.parent)&&e.parent.name===e}(t))return(r=cb(t))?ro(r):xe;if(e.isDeclaration(t))return wa(r=ri(t));if(w(t))return(r=cb(t))?wa(r):xe;if(e.isBindingPattern(t))return ua(t.parent,!0)||xe;if(ob(t)&&(r=cb(t))){var s=ro(r);return s!==xe?s:wa(r)}return xe}function lb(t){if(e.Debug.assert(192===t.kind||191===t.kind),231===t.parent.kind)return xy(t,$h(t.parent.expression,t.parent.awaitModifier)||xe);if(208===t.parent.kind)return xy(t,Ky(t.parent.right)||xe);if(279===t.parent.kind){var r=e.cast(t.parent.parent,e.isObjectLiteralExpression);return vy(r,lb(r)||xe,e.indexOfNode(r.properties,t.parent))}var n=e.cast(t.parent,e.isArrayLiteralExpression),i=lb(n)||xe,a=Zh(65,i,Se,t.parent)||xe;return by(n,i,n.elements.indexOf(t),a)}function _b(t){return e.isRightSideOfQualifiedNameOrPropertyAccess(t)&&(t=t.parent),Vu(Ky(t))}function db(t){var r=ri(t.parent);return e.hasModifier(t,32)?wa(r):ro(r)}function pb(t){var r=t.name;switch(r.kind){case 75:return Wu(e.idText(r));case 8:case 10:return Wu(r.text);case 153:var n=Lf(r);return my(n,12288)?n:Ne;default:return e.Debug.fail("Unsupported property name.")}}function fb(t){t=ms(t);var r=e.createSymbolTable(ts(t)),n=xs(t,0).length?lt:xs(t,1).length?_t:void 0;return n&&e.forEach(ts(n),(function(e){r.has(e.escapedName)||r.set(e.escapedName,e)})),gi(r)}function mb(t){return e.typeHasCallOrConstructSignatures(t,oe)}function gb(t){if(!e.isGeneratedIdentifier(t)){var r=e.getParseTreeNode(t,e.isIdentifier);if(r)return!(193===r.parent.kind&&r.parent.name===r)&&zb(r)===ie}return!1}function yb(t){var r=zn(t.parent,t);if(!r||e.isShorthandAmbientModuleSymbol(r))return!0;var n=Hn(r),i=_n(r=Wn(r));return void 0===i.exportsSomeValue&&(i.exportsSomeValue=n?!!(111551&r.flags):e.forEachEntry($n(r),(function(e){return(e=On(e))&&!!(111551&e.flags)}))),i.exportsSomeValue}function hb(t,r){var n=e.getParseTreeNode(t,e.isIdentifier);if(n){var i=zb(n,function(t){return e.isModuleOrEnumDeclaration(t.parent)&&t===t.parent.name}(n));if(i){if(1048576&i.flags){var a=ti(i.exportSymbol);if(!r&&944&a.flags&&!(3&a.flags))return;i=a}var o=ni(i);if(o){if(512&o.flags&&288===o.valueDeclaration.kind){var s=o.valueDeclaration;return s!==e.getSourceFileOfNode(n)?void 0:s}return e.findAncestor(n.parent,(function(t){return e.isModuleOrEnumDeclaration(t)&&ri(t)===o}))}}}}function vb(t){var r=e.getParseTreeNode(t,e.isIdentifier);if(r){var n=zb(r);if(In(n,111551))return En(n)}}function bb(t){if(418&t.flags&&!e.isSourceFile(t.valueDeclaration)){var r=_n(t);if(void 0===r.isDeclarationWithCollidingName){var n=e.getEnclosingBlockScopeContainer(t.valueDeclaration);if(e.isStatementWithLocals(n)||function(t){return e.isBindingElement(t.valueDeclaration)&&278===e.walkUpBindingElementsAndPatterns(t.valueDeclaration).parent.kind}(t)){var i=dn(t.valueDeclaration);if(gn(n.parent,t.escapedName,111551,void 0,void 0,!1))r.isDeclarationWithCollidingName=!0;else if(262144&i.flags){var a=524288&i.flags,o=e.isIterationStatement(n,!1),s=222===n.kind&&e.isIterationStatement(n.parent,!1);r.isDeclarationWithCollidingName=!(e.isBlockScopedContainerTopLevel(n)||a&&(o||s))}else r.isDeclarationWithCollidingName=!1}}return r.isDeclarationWithCollidingName}return!1}function xb(t){if(!e.isGeneratedIdentifier(t)){var r=e.getParseTreeNode(t,e.isIdentifier);if(r){var n=zb(r);if(n&&bb(n))return n.valueDeclaration}}}function Db(t){var r=e.getParseTreeNode(t,e.isDeclaration);if(r){var n=ri(r);if(n)return bb(n)}return!1}function Sb(t){switch(t.kind){case 252:case 254:case 255:case 257:case 261:return Eb(ri(t)||ge);case 259:var r=t.exportClause;return!!r&&e.some(r.elements,Sb);case 258:return!t.expression||75!==t.expression.kind||Eb(ri(t)||ge)}return!1}function Tb(t){var r=e.getParseTreeNode(t,e.isImportEqualsDeclaration);return!(void 0===r||288!==r.parent.kind||!e.isInternalModuleImportEqualsDeclaration(r))&&(Eb(ri(r))&&r.moduleReference&&!e.nodeIsMissing(r.moduleReference))}function Eb(e){var t=Mn(e);return t===ge||!!(111551&t.flags)&&(K.preserveConstEnums||!Cb(t))}function Cb(e){return hy(e)||!!e.constEnumOnlyModule}function kb(t){if(e.nodeIsPresent(t.body)){if(e.isGetAccessor(t)||e.isSetAccessor(t))return!1;var r=js(ri(t));return r.length>1||1===r.length&&r[0].declaration!==t}return!1}function Nb(t){return!(!V||Ps(t)||e.isJSDocParameterTag(t)||!t.initializer||e.hasModifier(t,92))}function Ab(t){return V&&Ps(t)&&!t.initializer&&e.hasModifier(t,92)}function Fb(t){var r=e.getParseTreeNode(t,e.isFunctionDeclaration);if(!r)return!1;var n=ri(r);return!!(n&&16&n.flags)&&!!e.forEachEntry(Qn(n),(function(t){return 111551&t.flags&&t.valueDeclaration&&e.isPropertyAccessExpression(t.valueDeclaration)}))}function Pb(t){var r=e.getParseTreeNode(t,e.isFunctionDeclaration);if(!r)return e.emptyArray;var n=ri(r);return n&&ts(wa(n))||e.emptyArray}function wb(e){return dn(e).flags||0}function Ib(e){return Rv(e.parent),dn(e).enumMemberValue}function Ob(e){switch(e.kind){case 282:case 193:case 194:return!0}return!1}function Mb(t){if(282===t.kind)return Ib(t);var r=dn(t).resolvedSymbol;if(r&&8&r.flags){var n=r.valueDeclaration;if(e.isEnumConst(n.parent))return Ib(n)}}function Lb(e){return!!(524288&e.flags)&&xs(e,0).length>0}function Rb(t,r){var n=e.getParseTreeNode(t,e.isEntityName);if(!n)return e.TypeReferenceSerializationKind.Unknown;if(r&&!(r=e.getParseTreeNode(r)))return e.TypeReferenceSerializationKind.Unknown;var i=Kn(n,111551,!0,!1,r),a=Kn(n,788968,!0,!1,r);if(i&&i===a){var o=Oc(!1);if(o&&i===o)return e.TypeReferenceSerializationKind.Promise;var s=wa(i);if(s&&Ja(s))return e.TypeReferenceSerializationKind.TypeWithConstructSignatureAndValue}if(!a)return e.TypeReferenceSerializationKind.Unknown;var c=ro(a);return c===xe?e.TypeReferenceSerializationKind.Unknown:3&c.flags?e.TypeReferenceSerializationKind.ObjectType:my(c,245760)?e.TypeReferenceSerializationKind.VoidNullableOrNeverType:my(c,528)?e.TypeReferenceSerializationKind.BooleanType:my(c,296)?e.TypeReferenceSerializationKind.NumberLikeType:my(c,2112)?e.TypeReferenceSerializationKind.BigIntLikeType:my(c,132)?e.TypeReferenceSerializationKind.StringLikeType:w_(c)?e.TypeReferenceSerializationKind.ArrayLikeType:my(c,12288)?e.TypeReferenceSerializationKind.ESSymbolType:Lb(c)?e.TypeReferenceSerializationKind.TypeWithCallSignature:y_(c)?e.TypeReferenceSerializationKind.ArrayLikeType:e.TypeReferenceSerializationKind.ObjectType}function Bb(t,r,n,i,a){var o=e.getParseTreeNode(t,e.isVariableLikeOrAccessor);if(!o)return e.createToken(124);var s=ri(o),c=!s||133120&s.flags?xe:N_(wa(s));return 8192&c.flags&&c.symbol===s&&(n|=1048576),a&&(c=z_(c)),Z.typeToTypeNode(c,r,1024|n,i)}function jb(t,r,n,i){var a=e.getParseTreeNode(t,e.isFunctionLike);if(!a)return e.createToken(124);var o=Ls(a);return Z.typeToTypeNode(zs(o),r,1024|n,i)}function Kb(t,r,n,i){var a=e.getParseTreeNode(t,e.isExpression);if(!a)return e.createToken(124);var o=rd(_b(a));return Z.typeToTypeNode(o,r,1024|n,i)}function Jb(t){return ee.has(e.escapeLeadingUnderscores(t))}function zb(t,r){var n=dn(t).resolvedSymbol;if(n)return n;var i=t;if(r){var a=t.parent;e.isDeclaration(a)&&t===a.name&&(i=Yi(a))}return gn(i,t.escapedText,3257279,void 0,void 0,!0)}function Ub(t){if(!e.isGeneratedIdentifier(t)){var r=e.getParseTreeNode(t,e.isIdentifier);if(r){var n=zb(r);if(n)return si(n).valueDeclaration}}}function Vb(t){return!!(e.isDeclarationReadonly(t)||e.isVariableDeclaration(t)&&e.isVarConst(t))&&qu(wa(ri(t)))}function qb(t,r){return function(t,r,n){return(1024&t.flags?Z.symbolToExpression(t.symbol,111551,r,void 0,n):t===Ie?e.createTrue():t===Pe&&e.createFalse())||e.createLiteral(t.value)}(wa(ri(t)),t,r)}function Wb(t){var r=248===t.kind?e.tryCast(t.name,e.isStringLiteral):e.getExternalModuleName(t),n=Un(r,r,void 0);if(n)return e.getDeclarationOfKind(n,288)}function Gb(t,r){if((s&r)!==r&&K.importHelpers){var n=e.getSourceFileOfNode(t);if(e.isEffectiveExternalModule(n,K)&&!(8388608&t.flags)){var i=function(t,r){u||(u=Vn(t,e.externalHelpersModuleNameText,e.Diagnostics.This_syntax_requires_an_imported_helper_but_module_0_cannot_be_found,r)||ge);return u}(n,t);if(i!==ge)for(var a=r&~s,o=1;o<=131072;o<<=1)if(a&o){var c=Hb(o);fn(i.exports,e.escapeLeadingUnderscores(c),111551)||Xr(t,e.Diagnostics.This_syntax_requires_an_imported_helper_named_1_which_does_not_exist_in_0_Consider_upgrading_your_version_of_0,e.externalHelpersModuleNameText,c)}s|=r}}}function Hb(t){switch(t){case 1:return"__extends";case 2:return"__assign";case 4:return"__rest";case 8:return"__decorate";case 16:return"__metadata";case 32:return"__param";case 64:return"__awaiter";case 128:return"__generator";case 256:return"__values";case 512:return"__read";case 1024:return"__spread";case 2048:return"__spreadArrays";case 4096:return"__await";case 8192:return"__asyncGenerator";case 16384:return"__asyncDelegator";case 32768:return"__asyncValues";case 65536:return"__exportStar";case 131072:return"__makeTemplateObject";default:return e.Debug.fail("Unrecognized helper")}}function Yb(t){return function(t){if(!t.decorators)return!1;if(!e.nodeCanBeDecorated(t,t.parent,t.parent.parent))return 160!==t.kind||e.nodeIsPresent(t.body)?yx(t,e.Diagnostics.Decorators_are_not_valid_here):yx(t,e.Diagnostics.A_decorator_can_only_decorate_a_method_implementation_not_an_overload);if(162===t.kind||163===t.kind){var r=e.getAllAccessorDeclarations(t.parent.members,t);if(r.firstAccessor.decorators&&t===r.secondAccessor)return yx(t,e.Diagnostics.Decorators_cannot_be_applied_to_multiple_get_Slashset_accessors_of_the_same_name)}return!1}(t)||function(t){var r,n,i,a,o=function(t){return!!t.modifiers&&(function(t){switch(t.kind){case 162:case 163:case 161:case 158:case 157:case 160:case 159:case 166:case 248:case 253:case 252:case 259:case 258:case 200:case 201:case 155:return!1;default:if(249===t.parent.kind||288===t.parent.kind)return!1;switch(t.kind){case 243:return Xb(t,125);case 244:return Xb(t,121);case 245:case 224:case 246:return!0;case 247:return Xb(t,80);default:return e.Debug.fail(),!1}}}(t)?yx(t,e.Diagnostics.Modifiers_cannot_appear_here):void 0)}(t);if(void 0!==o)return o;for(var s=0,c=0,u=t.modifiers;c<u.length;c++){var l=u[c];if(137!==l.kind){if(157===t.kind||159===t.kind)return vx(l,e.Diagnostics._0_modifier_cannot_appear_on_a_type_member,e.tokenToString(l.kind));if(166===t.kind)return vx(l,e.Diagnostics._0_modifier_cannot_appear_on_an_index_signature,e.tokenToString(l.kind))}switch(l.kind){case 80:if(247!==t.kind)return vx(t,e.Diagnostics.A_class_member_cannot_have_the_0_keyword,e.tokenToString(80));break;case 118:case 117:case 116:var _=Bi(e.modifierToFlag(l.kind));if(28&s)return vx(l,e.Diagnostics.Accessibility_modifier_already_seen);if(32&s)return vx(l,e.Diagnostics._0_modifier_must_precede_1_modifier,_,"static");if(64&s)return vx(l,e.Diagnostics._0_modifier_must_precede_1_modifier,_,"readonly");if(256&s)return vx(l,e.Diagnostics._0_modifier_must_precede_1_modifier,_,"async");if(249===t.parent.kind||288===t.parent.kind)return vx(l,e.Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element,_);if(128&s)return 116===l.kind?vx(l,e.Diagnostics._0_modifier_cannot_be_used_with_1_modifier,_,"abstract"):vx(l,e.Diagnostics._0_modifier_must_precede_1_modifier,_,"abstract");s|=e.modifierToFlag(l.kind);break;case 119:if(32&s)return vx(l,e.Diagnostics._0_modifier_already_seen,"static");if(64&s)return vx(l,e.Diagnostics._0_modifier_must_precede_1_modifier,"static","readonly");if(256&s)return vx(l,e.Diagnostics._0_modifier_must_precede_1_modifier,"static","async");if(249===t.parent.kind||288===t.parent.kind)return vx(l,e.Diagnostics._0_modifier_cannot_appear_on_a_module_or_namespace_element,"static");if(155===t.kind)return vx(l,e.Diagnostics._0_modifier_cannot_appear_on_a_parameter,"static");if(128&s)return vx(l,e.Diagnostics._0_modifier_cannot_be_used_with_1_modifier,"static","abstract");s|=32,r=l;break;case 137:if(64&s)return vx(l,e.Diagnostics._0_modifier_already_seen,"readonly");if(158!==t.kind&&157!==t.kind&&166!==t.kind&&155!==t.kind)return vx(l,e.Diagnostics.readonly_modifier_can_only_appear_on_a_property_declaration_or_index_signature);s|=64,a=l;break;case 88:if(1&s)return vx(l,e.Diagnostics._0_modifier_already_seen,"export");if(2&s)return vx(l,e.Diagnostics._0_modifier_must_precede_1_modifier,"export","declare");if(128&s)return vx(l,e.Diagnostics._0_modifier_must_precede_1_modifier,"export","abstract");if(256&s)return vx(l,e.Diagnostics._0_modifier_must_precede_1_modifier,"export","async");if(e.isClassLike(t.parent))return vx(l,e.Diagnostics._0_modifier_cannot_appear_on_a_class_element,"export");if(155===t.kind)return vx(l,e.Diagnostics._0_modifier_cannot_appear_on_a_parameter,"export");s|=1;break;case 83:var d=288===t.parent.kind?t.parent:t.parent.parent;if(248===d.kind&&!e.isAmbientModule(d))return vx(l,e.Diagnostics.A_default_export_can_only_be_used_in_an_ECMAScript_style_module);s|=512;break;case 129:if(2&s)return vx(l,e.Diagnostics._0_modifier_already_seen,"declare");if(256&s)return vx(l,e.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context,"async");if(e.isClassLike(t.parent)&&!e.isPropertyDeclaration(t))return vx(l,e.Diagnostics._0_modifier_cannot_appear_on_a_class_element,"declare");if(155===t.kind)return vx(l,e.Diagnostics._0_modifier_cannot_appear_on_a_parameter,"declare");if(8388608&t.parent.flags&&249===t.parent.kind)return vx(l,e.Diagnostics.A_declare_modifier_cannot_be_used_in_an_already_ambient_context);s|=2,n=l;break;case 121:if(128&s)return vx(l,e.Diagnostics._0_modifier_already_seen,"abstract");if(244!==t.kind){if(160!==t.kind&&158!==t.kind&&162!==t.kind&&163!==t.kind)return vx(l,e.Diagnostics.abstract_modifier_can_only_appear_on_a_class_method_or_property_declaration);if(244!==t.parent.kind||!e.hasModifier(t.parent,128))return vx(l,e.Diagnostics.Abstract_methods_can_only_appear_within_an_abstract_class);if(32&s)return vx(l,e.Diagnostics._0_modifier_cannot_be_used_with_1_modifier,"static","abstract");if(8&s)return vx(l,e.Diagnostics._0_modifier_cannot_be_used_with_1_modifier,"private","abstract")}s|=128;break;case 125:if(256&s)return vx(l,e.Diagnostics._0_modifier_already_seen,"async");if(2&s||8388608&t.parent.flags)return vx(l,e.Diagnostics._0_modifier_cannot_be_used_in_an_ambient_context,"async");if(155===t.kind)return vx(l,e.Diagnostics._0_modifier_cannot_appear_on_a_parameter,"async");s|=256,i=l}}if(161===t.kind)return 32&s?vx(r,e.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration,"static"):128&s?vx(r,e.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration,"abstract"):256&s?vx(i,e.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration,"async"):!!(64&s)&&vx(a,e.Diagnostics._0_modifier_cannot_appear_on_a_constructor_declaration,"readonly");if((253===t.kind||252===t.kind)&&2&s)return vx(n,e.Diagnostics.A_0_modifier_cannot_be_used_with_an_import_declaration,"declare");if(155===t.kind&&92&s&&e.isBindingPattern(t.name))return vx(t,e.Diagnostics.A_parameter_property_may_not_be_declared_using_a_binding_pattern);if(155===t.kind&&92&s&&t.dotDotDotToken)return vx(t,e.Diagnostics.A_parameter_property_cannot_be_declared_using_a_rest_parameter);if(256&s)return function(t,r){switch(t.kind){case 160:case 243:case 200:case 201:return!1}return vx(r,e.Diagnostics._0_modifier_cannot_be_used_here,"async")}(t,i);return!1}(t)}function Xb(e,t){return e.modifiers.length>1||e.modifiers[0].kind!==t}function Qb(t,r){return void 0===r&&(r=e.Diagnostics.Trailing_comma_not_allowed),!(!t||!t.hasTrailingComma)&&hx(t[0],t.end-",".length,",".length,r)}function $b(t,r){if(t&&0===t.length){var n=t.pos-"<".length;return hx(r,n,e.skipTrivia(r.text,t.end)+">".length-n,e.Diagnostics.Type_parameter_list_cannot_be_empty)}return!1}function Zb(r){if(J>=3){var n=r.body&&e.isBlock(r.body)&&e.findUseStrictPrologue(r.body.statements);if(n){var i=(o=r.parameters,e.filter(o,(function(t){return!!t.initializer||e.isBindingPattern(t.name)||e.isRestParameter(t)})));if(e.length(i)){e.forEach(i,(function(t){e.addRelatedInfo(Xr(t,e.Diagnostics.This_parameter_is_not_allowed_with_use_strict_directive),e.createDiagnosticForNode(n,e.Diagnostics.use_strict_directive_used_here))}));var a=i.map((function(t,r){return 0===r?e.createDiagnosticForNode(t,e.Diagnostics.Non_simple_parameter_declared_here):e.createDiagnosticForNode(t,e.Diagnostics.and_here)}));return e.addRelatedInfo.apply(void 0,t([Xr(n,e.Diagnostics.use_strict_directive_cannot_be_used_with_non_simple_parameter_list)],a)),!0}}}var o;return!1}function ex(t){var r=e.getSourceFileOfNode(t);return Yb(t)||$b(t.typeParameters,r)||function(t){for(var r=!1,n=t.length,i=0;i<n;i++){var a=t[i];if(a.dotDotDotToken){if(i!==n-1)return vx(a.dotDotDotToken,e.Diagnostics.A_rest_parameter_must_be_last_in_a_parameter_list);if(8388608&a.flags||Qb(t,e.Diagnostics.A_rest_parameter_or_binding_pattern_may_not_have_a_trailing_comma),a.questionToken)return vx(a.questionToken,e.Diagnostics.A_rest_parameter_cannot_be_optional);if(a.initializer)return vx(a.name,e.Diagnostics.A_rest_parameter_cannot_have_an_initializer)}else if(a.questionToken){if(r=!0,a.initializer)return vx(a.name,e.Diagnostics.Parameter_cannot_have_question_mark_and_initializer)}else if(r&&!a.initializer)return vx(a.name,e.Diagnostics.A_required_parameter_cannot_follow_an_optional_parameter)}}(t.parameters)||function(t,r){if(!e.isArrowFunction(t))return!1;var n=t.equalsGreaterThanToken,i=e.getLineAndCharacterOfPosition(r,n.pos).line,a=e.getLineAndCharacterOfPosition(r,n.end).line;return i!==a&&vx(n,e.Diagnostics.Line_terminator_not_permitted_before_arrow)}(t,r)||e.isFunctionLikeDeclaration(t)&&Zb(t)}function tx(t,r){return Qb(r)||function(t,r){if(r&&0===r.length){var n=e.getSourceFileOfNode(t),i=r.pos-"<".length;return hx(n,i,e.skipTrivia(n.text,r.end)+">".length-i,e.Diagnostics.Type_argument_list_cannot_be_empty)}return!1}(t,r)}function rx(t){return function(t){if(t)for(var r=0,n=t;r<n.length;r++){var i=n[r];if(214===i.kind)return hx(i,i.pos,0,e.Diagnostics.Argument_expression_expected)}return!1}(t)}function nx(t){var r=t.types;if(Qb(r))return!0;if(r&&0===r.length){var n=e.tokenToString(t.token);return hx(t,r.pos,0,e.Diagnostics._0_list_cannot_be_empty,n)}return e.some(r,ix)}function ix(e){return tx(e,e.typeArguments)}function ax(t){if(153!==t.kind)return!1;var r=t;return 208===r.expression.kind&&27===r.expression.operatorToken.kind&&vx(r.expression,e.Diagnostics.A_comma_expression_is_not_allowed_in_a_computed_property_name)}function ox(t){if(t.asteriskToken){if(e.Debug.assert(243===t.kind||200===t.kind||160===t.kind),8388608&t.flags)return vx(t.asteriskToken,e.Diagnostics.Generators_are_not_allowed_in_an_ambient_context);if(!t.body)return vx(t.asteriskToken,e.Diagnostics.An_overload_signature_cannot_be_declared_as_a_generator)}}function sx(e,t){return!!e&&vx(e,t)}function cx(e,t){return!!e&&vx(e,t)}function ux(t){if(xx(t))return!0;if(231===t.kind&&t.awaitModifier&&0==(32768&t.flags)){if(!gx(e.getSourceFileOfNode(t))){var r=e.createDiagnosticForNode(t.awaitModifier,e.Diagnostics.A_for_await_of_statement_is_only_allowed_within_an_async_function_or_async_generator),n=e.getContainingFunction(t);if(n&&161!==n.kind){e.Debug.assert(0==(2&e.getFunctionFlags(n)),"Enclosing function should never be an async function.");var i=e.createDiagnosticForNode(n,e.Diagnostics.Did_you_mean_to_mark_this_function_as_async);e.addRelatedInfo(r,i)}return jr.add(r),!0}return!1}if(242===t.initializer.kind){var a=t.initializer;if(!mx(a)){var o=a.declarations;if(!o.length)return!1;if(o.length>1){r=230===t.kind?e.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_in_statement:e.Diagnostics.Only_a_single_variable_declaration_is_allowed_in_a_for_of_statement;return yx(a.declarations[1],r)}var s=o[0];if(s.initializer){var r=230===t.kind?e.Diagnostics.The_variable_declaration_of_a_for_in_statement_cannot_have_an_initializer:e.Diagnostics.The_variable_declaration_of_a_for_of_statement_cannot_have_an_initializer;return vx(s.name,r)}if(s.type)return vx(s,r=230===t.kind?e.Diagnostics.The_left_hand_side_of_a_for_in_statement_cannot_use_a_type_annotation:e.Diagnostics.The_left_hand_side_of_a_for_of_statement_cannot_use_a_type_annotation)}}return!1}function lx(t){if(t.parameters.length===(162===t.kind?1:2))return e.getThisParameter(t)}function _x(t,r){if(function(t){return e.isDynamicName(t)&&!po(t)}(t))return vx(t,r)}function dx(t){if(ex(t))return!0;if(160===t.kind){if(192===t.parent.kind){if(t.modifiers&&(1!==t.modifiers.length||125!==e.first(t.modifiers).kind))return yx(t,e.Diagnostics.Modifiers_cannot_appear_here);if(sx(t.questionToken,e.Diagnostics.An_object_member_cannot_be_declared_optional))return!0;if(cx(t.exclamationToken,e.Diagnostics.A_definite_assignment_assertion_is_not_permitted_in_this_context))return!0;if(void 0===t.body)return hx(t,t.end-1,";".length,e.Diagnostics._0_expected,"{")}if(ox(t))return!0}if(e.isClassLike(t.parent)){if(8388608&t.flags)return _x(t.name,e.Diagnostics.A_computed_property_name_in_an_ambient_context_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type);if(160===t.kind&&!t.body)return _x(t.name,e.Diagnostics.A_computed_property_name_in_a_method_overload_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type)}else{if(245===t.parent.kind)return _x(t.name,e.Diagnostics.A_computed_property_name_in_an_interface_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type);if(172===t.parent.kind)return _x(t.name,e.Diagnostics.A_computed_property_name_in_a_type_literal_must_refer_to_an_expression_whose_type_is_a_literal_type_or_a_unique_symbol_type)}}function px(t){return e.isStringOrNumericLiteralLike(t)||206===t.kind&&40===t.operator&&8===t.operand.kind}function fx(t){var r,n=t.initializer;if(n){var i=!(px(n)||function(t){if((e.isPropertyAccessExpression(t)||e.isElementAccessExpression(t)&&px(t.argumentExpression))&&e.isEntityNameExpression(t.expression))return!!(1024&ky(t).flags)}(n)||105===n.kind||90===n.kind||(r=n,9===r.kind||206===r.kind&&40===r.operator&&9===r.operand.kind)),a=e.isDeclarationReadonly(t)||e.isVariableDeclaration(t)&&e.isVarConst(t);if(!a||t.type)return vx(n,e.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts);if(i)return vx(n,e.Diagnostics.A_const_initializer_in_an_ambient_context_must_be_a_string_or_numeric_literal_or_literal_enum_reference);if(!a||i)return vx(n,e.Diagnostics.Initializers_are_not_allowed_in_ambient_contexts)}}function mx(t){var r=t.declarations;return!!Qb(t.declarations)||!t.declarations.length&&hx(t,r.pos,r.end-r.pos,e.Diagnostics.Variable_declaration_list_cannot_be_empty)}function gx(e){return e.parseDiagnostics.length>0}function yx(t,r,n,i,a){var o=e.getSourceFileOfNode(t);if(!gx(o)){var s=e.getSpanOfTokenAtPosition(o,t.pos);return jr.add(e.createFileDiagnostic(o,s.start,s.length,r,n,i,a)),!0}return!1}function hx(t,r,n,i,a,o,s){var c=e.getSourceFileOfNode(t);return!gx(c)&&(jr.add(e.createFileDiagnostic(c,r,n,i,a,o,s)),!0)}function vx(t,r,n,i,a){return!gx(e.getSourceFileOfNode(t))&&(jr.add(e.createDiagnosticForNode(t,r,n,i,a)),!0)}function bx(t){return 245!==t.kind&&246!==t.kind&&253!==t.kind&&252!==t.kind&&259!==t.kind&&258!==t.kind&&251!==t.kind&&!e.hasModifier(t,515)&&yx(t,e.Diagnostics.Top_level_declarations_in_d_ts_files_must_start_with_either_a_declare_or_export_modifier)}function xx(t){if(8388608&t.flags){if(!dn(t).hasReportedStatementInAmbientContext&&(e.isFunctionLike(t.parent)||e.isAccessor(t.parent)))return dn(t).hasReportedStatementInAmbientContext=yx(t,e.Diagnostics.An_implementation_cannot_be_declared_in_ambient_contexts);if(222===t.parent.kind||249===t.parent.kind||288===t.parent.kind){var r=dn(t.parent);if(!r.hasReportedStatementInAmbientContext)return r.hasReportedStatementInAmbientContext=yx(t,e.Diagnostics.Statements_are_not_allowed_in_ambient_contexts)}}return!1}function Dx(t){if(32&t.numericLiteralFlags){var r=void 0;if(J>=1?r=e.Diagnostics.Octal_literals_are_not_available_when_targeting_ECMAScript_5_and_higher_Use_the_syntax_0:e.isChildOfNodeWithKind(t,186)?r=e.Diagnostics.Octal_literal_types_must_use_ES2015_syntax_Use_the_syntax_0:e.isChildOfNodeWithKind(t,282)&&(r=e.Diagnostics.Octal_literals_are_not_allowed_in_enums_members_initializer_Use_the_syntax_0),r){var n=e.isPrefixUnaryExpression(t.parent)&&40===t.parent.operator,i=(n?"-":"")+"0o"+t.text;return vx(n?t.parent:t,r,i)}}return function(t){if(16&t.numericLiteralFlags||t.text.length<=15||-1!==t.text.indexOf("."))return;var r=+e.getTextOfNode(t);if(r<=Math.pow(2,53)-1&&r+1>r)return;Qr(!1,e.createDiagnosticForNode(t,e.Diagnostics.Numeric_literals_with_absolute_values_equal_to_2_53_or_greater_are_too_large_to_be_represented_accurately_as_integers))}(t),!1}},function(e){e.JSX="JSX",e.IntrinsicElements="IntrinsicElements",e.ElementClass="ElementClass",e.ElementAttributesPropertyNameContainer="ElementAttributesProperty",e.ElementChildrenAttributeNameContainer="ElementChildrenAttribute",e.Element="Element",e.IntrinsicAttributes="IntrinsicAttributes",e.IntrinsicClassAttributes="IntrinsicClassAttributes",e.LibraryManagedAttributes="LibraryManagedAttributes"}(C||(C={})),e.signatureHasRestParameter=M,e.signatureHasLiteralTypes=L,e.signatureIsOptionalCall=R}(s||(s={})),function(e){function t(t){var r=e.createNode(t,-1,-1);return r.flags|=8,r}function r(t,r){return t!==r&&(dr(t,r),or(t,r),e.aggregateTransformFlags(t)),t}function n(t,r){if(t&&t!==e.emptyArray){if(e.isNodeArray(t))return t}else t=[];var n=t;return n.pos=-1,n.end=-1,n.hasTrailingComma=r,n}function i(e){if(void 0===e)return e;var r=t(e.kind);for(var n in r.flags|=e.flags,dr(r,e),e)!r.hasOwnProperty(n)&&e.hasOwnProperty(n)&&(r[n]=e[n]);return r}function a(t,r){if("number"==typeof t)return o(t+"");if("object"===f(t)&&"base10Value"in t)return s(e.pseudoBigIntToString(t)+"n");if("boolean"==typeof t)return t?m():g();if(e.isString(t)){var n=c(t);return r&&(n.singleQuote=!0),n}return function(t){var r=c(e.getTextOfIdentifierOrLiteral(t));return r.textSourceNode=t,r}(t)}function o(e,r){void 0===r&&(r=0);var n=t(8);return n.text=e,n.numericLiteralFlags=r,n}function s(e){var r=t(9);return r.text=e,r}function c(e){var r=t(10);return r.text=e,r}function u(r,i){var a=t(75);return a.escapedText=e.escapeLeadingUnderscores(r),a.originalKeywordKind=r?e.stringToToken(r):0,a.autoGenerateFlags=0,a.autoGenerateId=0,i&&(a.typeArguments=n(i)),a}e.updateNode=r,e.createNodeArray=n,e.getSynthesizedClone=i,e.createLiteral=a,e.createNumericLiteral=o,e.createBigIntLiteral=s,e.createStringLiteral=c,e.createRegularExpressionLiteral=function(e){var r=t(13);return r.text=e,r},e.createIdentifier=u,e.updateIdentifier=function(t,n){return t.typeArguments!==n?r(u(e.idText(t),n),t):t};var l,_=0;function d(e){var t=u(e);return t.autoGenerateFlags=19,t.autoGenerateId=_,_++,t}function p(e){return t(e)}function m(){return t(105)}function g(){return t(90)}function y(e){return p(e)}function h(e,r){var n=t(152);return n.left=e,n.right=tr(r),n}function v(r){var n=t(153);return n.expression=function(t){return e.isCommaSequence(t)?ye(t):t}(r),n}function b(e,r,n){var i=t(154);return i.name=tr(e),i.constraint=r,i.default=n,i}function x(r,n,i,a,o,s,c){var u=t(155);return u.decorators=nr(r),u.modifiers=nr(n),u.dotDotDotToken=i,u.name=tr(a),u.questionToken=o,u.type=s,u.initializer=c?e.parenthesizeExpressionForList(c):void 0,u}function D(r){var n=t(156);return n.expression=e.parenthesizeForAccess(r),n}function S(e,r,n,i,a){var o=t(157);return o.modifiers=nr(e),o.name=tr(r),o.questionToken=n,o.type=i,o.initializer=a,o}function T(e,r,n,i,a,o){var s=t(158);return s.decorators=nr(e),s.modifiers=nr(r),s.name=tr(n),s.questionToken=void 0!==i&&57===i.kind?i:void 0,s.exclamationToken=void 0!==i&&53===i.kind?i:void 0,s.type=a,s.initializer=o,s}function E(e,t,r,n,i){var a=I(159,e,t,r);return a.name=tr(n),a.questionToken=i,a}function C(e,r,i,a,o,s,c,u,l){var _=t(160);return _.decorators=nr(e),_.modifiers=nr(r),_.asteriskToken=i,_.name=tr(a),_.questionToken=o,_.typeParameters=nr(s),_.parameters=n(c),_.type=u,_.body=l,_}function k(e,t,r){return function(e,t,r){return _e(ae(e,tr(t)),void 0,r)}(u(e),t,r)}function N(e,t,r){return!!r&&(e.push(Ut(t,r)),!0)}function A(e,r,i,a){var o=t(161);return o.decorators=nr(e),o.modifiers=nr(r),o.typeParameters=void 0,o.parameters=n(i),o.type=void 0,o.body=a,o}function F(e,r,i,a,o,s){var c=t(162);return c.decorators=nr(e),c.modifiers=nr(r),c.name=tr(i),c.typeParameters=void 0,c.parameters=n(a),c.type=o,c.body=s,c}function P(e,r,i,a,o){var s=t(163);return s.decorators=nr(e),s.modifiers=nr(r),s.name=tr(i),s.typeParameters=void 0,s.parameters=n(a),s.body=o,s}function w(e,r,i,a){var o=t(166);return o.decorators=nr(e),o.modifiers=nr(r),o.parameters=n(i),o.type=a,o}function I(e,r,n,i,a){var o=t(e);return o.typeParameters=nr(r),o.parameters=nr(n),o.type=i,o.typeArguments=nr(a),o}function O(e,t,n,i){return e.typeParameters!==t||e.parameters!==n||e.type!==i?r(I(e.kind,t,n,i),e):e}function M(e,r,n){var i=t(167);return i.assertsModifier=e,i.parameterName=tr(r),i.type=n,i}function L(e,t,n,i){return e.assertsModifier!==t||e.parameterName!==n||e.type!==i?r(M(t,n,i),e):e}function R(r,n){var i=t(168);return i.typeName=tr(r),i.typeArguments=n&&e.parenthesizeTypeParameters(n),i}function B(e){var r=t(171);return r.exprName=e,r}function j(e){var r=t(172);return r.members=n(e),r}function K(r){var n=t(173);return n.elementType=e.parenthesizeArrayTypeMember(r),n}function J(e){var r=t(174);return r.elementTypes=n(e),r}function z(r){var n=t(175);return n.type=e.parenthesizeArrayTypeMember(r),n}function U(e){var r=t(176);return r.type=e,r}function V(r,n){var i=t(r);return i.types=e.parenthesizeElementTypeMembers(n),i}function q(e,t){return e.types!==t?r(V(e.kind,t),e):e}function W(r,n,i,a){var o=t(179);return o.checkType=e.parenthesizeConditionalTypeMember(r),o.extendsType=e.parenthesizeConditionalTypeMember(n),o.trueType=i,o.falseType=a,o}function G(e){var r=t(180);return r.typeParameter=e,r}function H(r,n,i,a){var o=t(187);return o.argument=r,o.qualifier=n,o.typeArguments=e.parenthesizeTypeParameters(i),o.isTypeOf=a,o}function Y(e){var r=t(181);return r.type=e,r}function X(r,n){var i=t(183);return i.operator="number"==typeof r?r:133,i.type=e.parenthesizeElementTypeMember("number"==typeof r?n:r),i}function Q(r,n){var i=t(184);return i.objectType=e.parenthesizeElementTypeMember(r),i.indexType=n,i}function $(e,r,n,i){var a=t(185);return a.readonlyToken=e,a.typeParameter=r,a.questionToken=n,a.type=i,a}function Z(e){var r=t(186);return r.literal=e,r}function ee(e){var r=t(188);return r.elements=n(e),r}function te(e){var r=t(189);return r.elements=n(e),r}function re(e,r,n,i){var a=t(190);return a.dotDotDotToken=e,a.propertyName=tr(r),a.name=tr(n),a.initializer=i,a}function ne(r,i){var a=t(191);return a.elements=e.parenthesizeListElements(n(r)),i&&(a.multiLine=!0),a}function ie(e,r){var i=t(192);return i.properties=n(e),r&&(i.multiLine=!0),i}function ae(r,n){var i=t(193);return i.expression=e.parenthesizeForAccess(r),i.name=tr(n),sr(i,131072),i}function oe(r,n,i){var a=t(193);return a.flags|=32,a.expression=e.parenthesizeForAccess(r),a.questionDotToken=n,a.name=tr(i),sr(a,131072),a}function se(t,n,i,a){return e.Debug.assert(!!(32&t.flags),"Cannot update a PropertyAccessExpression using updatePropertyAccessChain. Use updatePropertyAccess instead."),t.expression!==n||t.questionDotToken!==i||t.name!==a?r(sr(oe(n,i,a),e.getEmitFlags(t)),t):t}function ce(r,n){var i=t(194);return i.expression=e.parenthesizeForAccess(r),i.argumentExpression=rr(n),i}function ue(r,n,i){var a=t(194);return a.flags|=32,a.expression=e.parenthesizeForAccess(r),a.questionDotToken=n,a.argumentExpression=rr(i),a}function le(t,n,i,a){return e.Debug.assert(!!(32&t.flags),"Cannot update an ElementAccessExpression using updateElementAccessChain. Use updateElementAccess instead."),t.expression!==n||t.questionDotToken!==i||t.argumentExpression!==a?r(ue(n,i,a),t):t}function _e(r,i,a){var o=t(195);return o.expression=e.parenthesizeForAccess(r),o.typeArguments=nr(i),o.arguments=e.parenthesizeListElements(n(a)),o}function de(r,i,a,o){var s=t(195);return s.flags|=32,s.expression=e.parenthesizeForAccess(r),s.questionDotToken=i,s.typeArguments=nr(a),s.arguments=e.parenthesizeListElements(n(o)),s}function pe(t,n,i,a,o){return e.Debug.assert(!!(32&t.flags),"Cannot update a CallExpression using updateCallChain. Use updateCall instead."),t.expression!==n||t.questionDotToken!==i||t.typeArguments!==a||t.arguments!==o?r(de(n,i,a,o),t):t}function fe(r,i,a){var o=t(196);return o.expression=e.parenthesizeForNew(r),o.typeArguments=nr(i),o.arguments=a?e.parenthesizeListElements(n(a)):void 0,o}function me(r,n,i){var a=t(197);return a.tag=e.parenthesizeForAccess(r),i?(a.typeArguments=nr(n),a.template=i):(a.typeArguments=void 0,a.template=n),a}function ge(r,n){var i=t(198);return i.type=r,i.expression=e.parenthesizePrefixOperand(n),i}function ye(e){var r=t(199);return r.expression=e,r}function he(e,r,i,a,o,s,c){var u=t(200);return u.modifiers=nr(e),u.asteriskToken=r,u.name=tr(i),u.typeParameters=nr(a),u.parameters=n(o),u.type=s,u.body=c,u}function ve(r,i,a,o,s,c){var u=t(201);return u.modifiers=nr(r),u.typeParameters=nr(i),u.parameters=n(a),u.type=o,u.equalsGreaterThanToken=s||p(38),u.body=e.parenthesizeConciseBody(c),u}function be(r){var n=t(202);return n.expression=e.parenthesizePrefixOperand(r),n}function xe(r){var n=t(203);return n.expression=e.parenthesizePrefixOperand(r),n}function De(r){var n=t(204);return n.expression=e.parenthesizePrefixOperand(r),n}function Se(r){var n=t(205);return n.expression=e.parenthesizePrefixOperand(r),n}function Te(r,n){var i=t(206);return i.operator=r,i.operand=e.parenthesizePrefixOperand(n),i}function Ee(r,n){var i=t(207);return i.operand=e.parenthesizePostfixOperand(r),i.operator=n,i}function Ce(r,n,i){var a,o=t(208),s="number"==typeof(a=n)?p(a):a,c=s.kind;return o.left=e.parenthesizeBinaryOperand(c,r,!0,void 0),o.operatorToken=s,o.right=e.parenthesizeBinaryOperand(c,i,!1,o.left),o}function ke(r,n,i,a,o){var s=t(209);return s.condition=e.parenthesizeForConditionalHead(r),s.questionToken=o?n:p(57),s.whenTrue=e.parenthesizeSubexpressionOfConditionalExpression(o?i:n),s.colonToken=o?a:p(58),s.whenFalse=e.parenthesizeSubexpressionOfConditionalExpression(o||i),s}function Ne(e,r){var i=t(210);return i.head=e,i.templateSpans=n(r),i}e.createTempVariable=function(e,t){var r=u("");return r.autoGenerateFlags=1,r.autoGenerateId=_,_++,e&&e(r),t&&(r.autoGenerateFlags|=8),r},e.createLoopVariable=function(){var e=u("");return e.autoGenerateFlags=2,e.autoGenerateId=_,_++,e},e.createUniqueName=function(e){var t=u(e);return t.autoGenerateFlags=3,t.autoGenerateId=_,_++,t},e.createOptimisticUniqueName=d,e.createFileLevelUniqueName=function(e){var t=d(e);return t.autoGenerateFlags|=32,t},e.getGeneratedNameForNode=function(t,r){var n=u(t&&e.isIdentifier(t)?e.idText(t):"");return n.autoGenerateFlags=4|r,n.autoGenerateId=_,n.original=t,_++,n},e.createToken=p,e.createSuper=function(){return t(101)},e.createThis=function(){return t(103)},e.createNull=function(){return t(99)},e.createTrue=m,e.createFalse=g,e.createModifier=y,e.createModifiersFromModifierFlags=function(e){var t=[];return 1&e&&t.push(y(88)),2&e&&t.push(y(129)),512&e&&t.push(y(83)),2048&e&&t.push(y(80)),4&e&&t.push(y(118)),8&e&&t.push(y(116)),16&e&&t.push(y(117)),128&e&&t.push(y(121)),32&e&&t.push(y(119)),64&e&&t.push(y(137)),256&e&&t.push(y(125)),t},e.createQualifiedName=h,e.updateQualifiedName=function(e,t,n){return e.left!==t||e.right!==n?r(h(t,n),e):e},e.createComputedPropertyName=v,e.updateComputedPropertyName=function(e,t){return e.expression!==t?r(v(t),e):e},e.createTypeParameterDeclaration=b,e.updateTypeParameterDeclaration=function(e,t,n,i){return e.name!==t||e.constraint!==n||e.default!==i?r(b(t,n,i),e):e},e.createParameter=x,e.updateParameter=function(e,t,n,i,a,o,s,c){return e.decorators!==t||e.modifiers!==n||e.dotDotDotToken!==i||e.name!==a||e.questionToken!==o||e.type!==s||e.initializer!==c?r(x(t,n,i,a,o,s,c),e):e},e.createDecorator=D,e.updateDecorator=function(e,t){return e.expression!==t?r(D(t),e):e},e.createPropertySignature=S,e.updatePropertySignature=function(e,t,n,i,a,o){return e.modifiers!==t||e.name!==n||e.questionToken!==i||e.type!==a||e.initializer!==o?r(S(t,n,i,a,o),e):e},e.createProperty=T,e.updateProperty=function(e,t,n,i,a,o,s){return e.decorators!==t||e.modifiers!==n||e.name!==i||e.questionToken!==(void 0!==a&&57===a.kind?a:void 0)||e.exclamationToken!==(void 0!==a&&53===a.kind?a:void 0)||e.type!==o||e.initializer!==s?r(T(t,n,i,a,o,s),e):e},e.createMethodSignature=E,e.updateMethodSignature=function(e,t,n,i,a,o){return e.typeParameters!==t||e.parameters!==n||e.type!==i||e.name!==a||e.questionToken!==o?r(E(t,n,i,a,o),e):e},e.createMethod=C,e.createObjectDefinePropertyCall=function(e,t,r){return k("Object","defineProperty",[e,rr(t),r])},e.createPropertyDescriptor=function(t,r){var n=[];N(n,"enumerable",rr(t.enumerable)),N(n,"configurable",rr(t.configurable));var i=N(n,"writable",rr(t.writable));i=N(n,"value",t.value)||i;var a=N(n,"get",t.get);return a=N(n,"set",t.set)||a,e.Debug.assert(!(i&&a),"A PropertyDescriptor may not be both an accessor descriptor and a data descriptor."),ie(n,!r)},e.updateMethod=function(e,t,n,i,a,o,s,c,u,l){return e.decorators!==t||e.modifiers!==n||e.asteriskToken!==i||e.name!==a||e.questionToken!==o||e.typeParameters!==s||e.parameters!==c||e.type!==u||e.body!==l?r(C(t,n,i,a,o,s,c,u,l),e):e},e.createConstructor=A,e.updateConstructor=function(e,t,n,i,a){return e.decorators!==t||e.modifiers!==n||e.parameters!==i||e.body!==a?r(A(t,n,i,a),e):e},e.createGetAccessor=F,e.updateGetAccessor=function(e,t,n,i,a,o,s){return e.decorators!==t||e.modifiers!==n||e.name!==i||e.parameters!==a||e.type!==o||e.body!==s?r(F(t,n,i,a,o,s),e):e},e.createSetAccessor=P,e.updateSetAccessor=function(e,t,n,i,a,o){return e.decorators!==t||e.modifiers!==n||e.name!==i||e.parameters!==a||e.body!==o?r(P(t,n,i,a,o),e):e},e.createCallSignature=function(e,t,r){return I(164,e,t,r)},e.updateCallSignature=function(e,t,r,n){return O(e,t,r,n)},e.createConstructSignature=function(e,t,r){return I(165,e,t,r)},e.updateConstructSignature=function(e,t,r,n){return O(e,t,r,n)},e.createIndexSignature=w,e.updateIndexSignature=function(e,t,n,i,a){return e.parameters!==i||e.type!==a||e.decorators!==t||e.modifiers!==n?r(w(t,n,i,a),e):e},e.createSignatureDeclaration=I,e.createKeywordTypeNode=function(e){return t(e)},e.createTypePredicateNode=function(e,t){return M(void 0,e,t)},e.createTypePredicateNodeWithModifier=M,e.updateTypePredicateNode=function(e,t,r){return L(e,e.assertsModifier,t,r)},e.updateTypePredicateNodeWithModifier=L,e.createTypeReferenceNode=R,e.updateTypeReferenceNode=function(e,t,n){return e.typeName!==t||e.typeArguments!==n?r(R(t,n),e):e},e.createFunctionTypeNode=function(e,t,r){return I(169,e,t,r)},e.updateFunctionTypeNode=function(e,t,r,n){return O(e,t,r,n)},e.createConstructorTypeNode=function(e,t,r){return I(170,e,t,r)},e.updateConstructorTypeNode=function(e,t,r,n){return O(e,t,r,n)},e.createTypeQueryNode=B,e.updateTypeQueryNode=function(e,t){return e.exprName!==t?r(B(t),e):e},e.createTypeLiteralNode=j,e.updateTypeLiteralNode=function(e,t){return e.members!==t?r(j(t),e):e},e.createArrayTypeNode=K,e.updateArrayTypeNode=function(e,t){return e.elementType!==t?r(K(t),e):e},e.createTupleTypeNode=J,e.updateTupleTypeNode=function(e,t){return e.elementTypes!==t?r(J(t),e):e},e.createOptionalTypeNode=z,e.updateOptionalTypeNode=function(e,t){return e.type!==t?r(z(t),e):e},e.createRestTypeNode=U,e.updateRestTypeNode=function(e,t){return e.type!==t?r(U(t),e):e},e.createUnionTypeNode=function(e){return V(177,e)},e.updateUnionTypeNode=function(e,t){return q(e,t)},e.createIntersectionTypeNode=function(e){return V(178,e)},e.updateIntersectionTypeNode=function(e,t){return q(e,t)},e.createUnionOrIntersectionTypeNode=V,e.createConditionalTypeNode=W,e.updateConditionalTypeNode=function(e,t,n,i,a){return e.checkType!==t||e.extendsType!==n||e.trueType!==i||e.falseType!==a?r(W(t,n,i,a),e):e},e.createInferTypeNode=G,e.updateInferTypeNode=function(e,t){return e.typeParameter!==t?r(G(t),e):e},e.createImportTypeNode=H,e.updateImportTypeNode=function(e,t,n,i,a){return e.argument!==t||e.qualifier!==n||e.typeArguments!==i||e.isTypeOf!==a?r(H(t,n,i,a),e):e},e.createParenthesizedType=Y,e.updateParenthesizedType=function(e,t){return e.type!==t?r(Y(t),e):e},e.createThisTypeNode=function(){return t(182)},e.createTypeOperatorNode=X,e.updateTypeOperatorNode=function(e,t){return e.type!==t?r(X(e.operator,t),e):e},e.createIndexedAccessTypeNode=Q,e.updateIndexedAccessTypeNode=function(e,t,n){return e.objectType!==t||e.indexType!==n?r(Q(t,n),e):e},e.createMappedTypeNode=$,e.updateMappedTypeNode=function(e,t,n,i,a){return e.readonlyToken!==t||e.typeParameter!==n||e.questionToken!==i||e.type!==a?r($(t,n,i,a),e):e},e.createLiteralTypeNode=Z,e.updateLiteralTypeNode=function(e,t){return e.literal!==t?r(Z(t),e):e},e.createObjectBindingPattern=ee,e.updateObjectBindingPattern=function(e,t){return e.elements!==t?r(ee(t),e):e},e.createArrayBindingPattern=te,e.updateArrayBindingPattern=function(e,t){return e.elements!==t?r(te(t),e):e},e.createBindingElement=re,e.updateBindingElement=function(e,t,n,i,a){return e.propertyName!==n||e.dotDotDotToken!==t||e.name!==i||e.initializer!==a?r(re(t,n,i,a),e):e},e.createArrayLiteral=ne,e.updateArrayLiteral=function(e,t){return e.elements!==t?r(ne(t,e.multiLine),e):e},e.createObjectLiteral=ie,e.updateObjectLiteral=function(e,t){return e.properties!==t?r(ie(t,e.multiLine),e):e},e.createPropertyAccess=ae,e.updatePropertyAccess=function(t,n,i){return e.isOptionalChain(t)?se(t,n,t.questionDotToken,i):t.expression!==n||t.name!==i?r(sr(ae(n,i),e.getEmitFlags(t)),t):t},e.createPropertyAccessChain=oe,e.updatePropertyAccessChain=se,e.createElementAccess=ce,e.updateElementAccess=function(t,n,i){return e.isOptionalChain(t)?le(t,n,t.questionDotToken,i):t.expression!==n||t.argumentExpression!==i?r(ce(n,i),t):t},e.createElementAccessChain=ue,e.updateElementAccessChain=le,e.createCall=_e,e.updateCall=function(t,n,i,a){return e.isOptionalChain(t)?pe(t,n,t.questionDotToken,i,a):t.expression!==n||t.typeArguments!==i||t.arguments!==a?r(_e(n,i,a),t):t},e.createCallChain=de,e.updateCallChain=pe,e.createNew=fe,e.updateNew=function(e,t,n,i){return e.expression!==t||e.typeArguments!==n||e.arguments!==i?r(fe(t,n,i),e):e},e.createTaggedTemplate=me,e.updateTaggedTemplate=function(e,t,n,i){return e.tag!==t||(i?e.typeArguments!==n||e.template!==i:void 0!==e.typeArguments||e.template!==n)?r(me(t,n,i),e):e},e.createTypeAssertion=ge,e.updateTypeAssertion=function(e,t,n){return e.type!==t||e.expression!==n?r(ge(t,n),e):e},e.createParen=ye,e.updateParen=function(e,t){return e.expression!==t?r(ye(t),e):e},e.createFunctionExpression=he,e.updateFunctionExpression=function(e,t,n,i,a,o,s,c){return e.name!==i||e.modifiers!==t||e.asteriskToken!==n||e.typeParameters!==a||e.parameters!==o||e.type!==s||e.body!==c?r(he(t,n,i,a,o,s,c),e):e},e.createArrowFunction=ve,e.updateArrowFunction=function(e,t,n,i,a,o,s){return e.modifiers!==t||e.typeParameters!==n||e.parameters!==i||e.type!==a||e.equalsGreaterThanToken!==o||e.body!==s?r(ve(t,n,i,a,o,s),e):e},e.createDelete=be,e.updateDelete=function(e,t){return e.expression!==t?r(be(t),e):e},e.createTypeOf=xe,e.updateTypeOf=function(e,t){return e.expression!==t?r(xe(t),e):e},e.createVoid=De,e.updateVoid=function(e,t){return e.expression!==t?r(De(t),e):e},e.createAwait=Se,e.updateAwait=function(e,t){return e.expression!==t?r(Se(t),e):e},e.createPrefix=Te,e.updatePrefix=function(e,t){return e.operand!==t?r(Te(e.operator,t),e):e},e.createPostfix=Ee,e.updatePostfix=function(e,t){return e.operand!==t?r(Ee(t,e.operator),e):e},e.createBinary=Ce,e.updateBinary=function(e,t,n,i){return e.left!==t||e.right!==n?r(Ce(t,i||e.operatorToken,n),e):e},e.createConditional=ke,e.updateConditional=function(e,t,n,i,a,o){return e.condition!==t||e.questionToken!==n||e.whenTrue!==i||e.colonToken!==a||e.whenFalse!==o?r(ke(t,n,i,a,o),e):e},e.createTemplateExpression=Ne,e.updateTemplateExpression=function(e,t,n){return e.head!==t||e.templateSpans!==n?r(Ne(t,n),e):e};var Ae,Fe,Pe={};function we(r,n,i){var a=t(r);if(a.text=n,void 0===i||n===i)a.rawText=i;else{var o=function(t,r){switch(l||(l=e.createScanner(99,!1,0)),t){case 14:l.setText("`"+r+"`");break;case 15:l.setText("`"+r+"${");break;case 16:l.setText("}"+r+"${");break;case 17:l.setText("}"+r+"`")}var n,i=l.scan();if(23===i&&(i=l.reScanTemplateToken()),l.isUnterminated())return l.setText(void 0),Pe;switch(i){case 14:case 15:case 16:case 17:n=l.getTokenValue()}return 1!==l.scan()?(l.setText(void 0),Pe):(l.setText(void 0),n)}(r,i);if("object"===f(o))return e.Debug.fail("Invalid raw text");e.Debug.assert(n===o,"Expected argument 'text' to be the normalized (i.e. 'cooked') version of argument 'rawText'."),a.rawText=i}return a}function Ie(e,r){var n=t(211);return n.asteriskToken=e&&41===e.kind?e:void 0,n.expression=e&&41!==e.kind?e:r,n}function Oe(r){var n=t(212);return n.expression=e.parenthesizeExpressionForList(r),n}function Me(e,r,i,a,o){var s=t(213);return s.decorators=void 0,s.modifiers=nr(e),s.name=tr(r),s.typeParameters=nr(i),s.heritageClauses=nr(a),s.members=n(o),s}function Le(r,n){var i=t(215);return i.expression=e.parenthesizeForAccess(n),i.typeArguments=nr(r),i}function Re(e,r){var n=t(216);return n.expression=e,n.type=r,n}function Be(r){var n=t(217);return n.expression=e.parenthesizeForAccess(r),n}function je(e,r){var n=t(218);return n.keywordToken=e,n.name=r,n}function Ke(e,r){var n=t(220);return n.expression=e,n.literal=r,n}function Je(e,r){var i=t(222);return i.statements=n(e),r&&(i.multiLine=r),i}function ze(r,n){var i=t(224);return i.decorators=void 0,i.modifiers=nr(r),i.declarationList=e.isArray(n)?st(n):n,i}function Ue(){return t(223)}function Ve(r){var n=t(225);return n.expression=e.parenthesizeExpressionForExpressionStatement(r),n}function qe(e,t){return e.expression!==t?r(Ve(t),e):e}function We(e,r,n){var i=t(226);return i.expression=e,i.thenStatement=ir(r),i.elseStatement=ir(n),i}function Ge(e,r){var n=t(227);return n.statement=ir(e),n.expression=r,n}function He(e,r){var n=t(228);return n.expression=e,n.statement=ir(r),n}function Ye(e,r,n,i){var a=t(229);return a.initializer=e,a.condition=r,a.incrementor=n,a.statement=ir(i),a}function Xe(e,r,n){var i=t(230);return i.initializer=e,i.expression=r,i.statement=ir(n),i}function Qe(r,n,i,a){var o=t(231);return o.awaitModifier=r,o.initializer=n,o.expression=e.isCommaSequence(i)?ye(i):i,o.statement=ir(a),o}function $e(e){var r=t(232);return r.label=tr(e),r}function Ze(e){var r=t(233);return r.label=tr(e),r}function et(e){var r=t(234);return r.expression=e,r}function tt(e,r){var n=t(235);return n.expression=e,n.statement=ir(r),n}function rt(r,n){var i=t(236);return i.expression=e.parenthesizeExpressionForList(r),i.caseBlock=n,i}function nt(e,r){var n=t(237);return n.label=tr(e),n.statement=ir(r),n}function it(e){var r=t(238);return r.expression=e,r}function at(e,r,n){var i=t(239);return i.tryBlock=e,i.catchClause=r,i.finallyBlock=n,i}function ot(r,n,i){var a=t(241);return a.name=tr(r),a.type=n,a.initializer=void 0!==i?e.parenthesizeExpressionForList(i):void 0,a}function st(e,r){void 0===r&&(r=0);var i=t(242);return i.flags|=3&r,i.declarations=n(e),i}function ct(e,r,i,a,o,s,c,u){var l=t(243);return l.decorators=nr(e),l.modifiers=nr(r),l.asteriskToken=i,l.name=tr(a),l.typeParameters=nr(o),l.parameters=n(s),l.type=c,l.body=u,l}function ut(e,r,i,a,o,s){var c=t(244);return c.decorators=nr(e),c.modifiers=nr(r),c.name=tr(i),c.typeParameters=nr(a),c.heritageClauses=nr(o),c.members=n(s),c}function lt(e,r,i,a,o,s){var c=t(245);return c.decorators=nr(e),c.modifiers=nr(r),c.name=tr(i),c.typeParameters=nr(a),c.heritageClauses=nr(o),c.members=n(s),c}function _t(e,r,n,i,a){var o=t(246);return o.decorators=nr(e),o.modifiers=nr(r),o.name=tr(n),o.typeParameters=nr(i),o.type=a,o}function dt(e,r,i,a){var o=t(247);return o.decorators=nr(e),o.modifiers=nr(r),o.name=tr(i),o.members=n(a),o}function pt(e,r,n,i,a){void 0===a&&(a=0);var o=t(248);return o.flags|=1044&a,o.decorators=nr(e),o.modifiers=nr(r),o.name=n,o.body=i,o}function ft(e){var r=t(249);return r.statements=n(e),r}function mt(e){var r=t(250);return r.clauses=n(e),r}function gt(e){var r=t(251);return r.name=tr(e),r}function yt(e,r,n,i){var a=t(252);return a.decorators=nr(e),a.modifiers=nr(r),a.name=tr(n),a.moduleReference=i,a}function ht(e,r,n,i){var a=t(253);return a.decorators=nr(e),a.modifiers=nr(r),a.importClause=n,a.moduleSpecifier=i,a}function vt(e,r){var n=t(254);return n.name=e,n.namedBindings=r,n}function bt(e){var r=t(255);return r.name=e,r}function xt(e){var r=t(256);return r.elements=n(e),r}function Dt(e,r){var n=t(257);return n.propertyName=e,n.name=r,n}function St(r,n,i,a){var o=t(258);return o.decorators=nr(r),o.modifiers=nr(n),o.isExportEquals=i,o.expression=i?e.parenthesizeBinaryOperand(62,a,!1,void 0):e.parenthesizeDefaultExpression(a),o}function Tt(e,r,n,i){var a=t(259);return a.decorators=nr(e),a.modifiers=nr(r),a.exportClause=n,a.moduleSpecifier=i,a}function Et(e){var r=t(260);return r.elements=n(e),r}function Ct(e,r){var n=t(261);return n.propertyName=tr(e),n.name=tr(r),n}function kt(e){var r=t(263);return r.expression=e,r}function Nt(e,r){var n=t(e);return n.tagName=u(r),n}function At(e,r,i){var a=t(264);return a.openingElement=e,a.children=n(r),a.closingElement=i,a}function Ft(e,r,n){var i=t(265);return i.tagName=e,i.typeArguments=nr(r),i.attributes=n,i}function Pt(e,r,n){var i=t(266);return i.tagName=e,i.typeArguments=nr(r),i.attributes=n,i}function wt(e){var r=t(267);return r.tagName=e,r}function It(e,r,i){var a=t(268);return a.openingFragment=e,a.children=n(r),a.closingFragment=i,a}function Ot(e,r){var n=t(11);return n.text=e,n.containsOnlyTriviaWhiteSpaces=!!r,n}function Mt(e,r){var n=t(271);return n.name=e,n.initializer=r,n}function Lt(e){var r=t(272);return r.properties=n(e),r}function Rt(e){var r=t(273);return r.expression=e,r}function Bt(e,r){var n=t(274);return n.dotDotDotToken=e,n.expression=r,n}function jt(r,i){var a=t(275);return a.expression=e.parenthesizeExpressionForList(r),a.statements=n(i),a}function Kt(e){var r=t(276);return r.statements=n(e),r}function Jt(e,r){var i=t(277);return i.token=e,i.types=n(r),i}function zt(r,n){var i=t(278);return i.variableDeclaration=e.isString(r)?ot(r):r,i.block=n,i}function Ut(r,n){var i=t(279);return i.name=tr(r),i.questionToken=void 0,i.initializer=e.parenthesizeExpressionForList(n),i}function Vt(r,n){var i=t(280);return i.name=tr(r),i.objectAssignmentInitializer=void 0!==n?e.parenthesizeExpressionForList(n):void 0,i}function qt(r){var n=t(281);return n.expression=e.parenthesizeExpressionForList(r),n}function Wt(r,n){var i=t(282);return i.name=tr(r),i.initializer=n&&e.parenthesizeExpressionForList(n),i}function Gt(e,r){var n=t(319);return n.expression=e,n.original=r,or(n,r),n}function Ht(t){if(e.nodeIsSynthesized(t)&&!e.isParseTreeNode(t)&&!t.original&&!t.emitNode&&!t.id){if(320===t.kind)return t.elements;if(e.isBinaryExpression(t)&&27===t.operatorToken.kind)return[t.left,t.right]}return t}function Yt(r){var i=t(320);return i.elements=n(e.sameFlatMap(r,Ht)),i}function Xt(e,r){var n=t(323);return n.expression=e,n.thisArg=r,n}function Qt(t,r){void 0===r&&(r=e.emptyArray);var n=e.createNode(289);return n.prepends=r,n.sourceFiles=t,n}function $t(){return Ae||(Ae=e.arrayToMap([e.valuesHelper,e.readHelper,e.spreadHelper,e.spreadArraysHelper,e.restHelper,e.decorateHelper,e.metadataHelper,e.paramHelper,e.awaiterHelper,e.assignHelper,e.awaitHelper,e.asyncGeneratorHelper,e.asyncDelegator,e.asyncValues,e.extendsHelper,e.templateObjectHelper,e.generatorHelper,e.importStarHelper,e.importDefaultHelper],(function(e){return e.name})))}function Zt(t,r){var n=e.createNode(function(t){switch(t){case"prologue":return 283;case"prepend":return 284;case"internal":return 286;case"text":return 285;case"emitHelpers":case"no-default-lib":case"reference":case"type":case"lib":return e.Debug.fail("BundleFileSectionKind: "+t+" not yet mapped to SyntaxKind");default:return e.Debug.assertNever(t)}}(t.kind),t.pos,t.end);return n.parent=r,n.data=t.data,n}function er(t,r){var n=e.createNode(287,t.pos,t.end);return n.parent=r,n.data=t.data,n.section=t,n}function tr(t){return e.isString(t)?u(t):t}function rr(e){return"string"==typeof e?c(e):"number"==typeof e?o(""+e):"boolean"==typeof e?e?m():g():e}function nr(e){return e?n(e):void 0}function ir(t){return t&&e.isNotEmittedStatement(t)?or(dr(Ue(),t),t):t}function ar(t){if(!t.emitNode){if(e.isParseTreeNode(t)){if(288===t.kind)return t.emitNode={annotatedNodes:[t]};ar(e.getSourceFileOfNode(e.getParseTreeNode(e.getSourceFileOfNode(t)))).annotatedNodes.push(t)}t.emitNode={}}return t.emitNode}function or(e,t){return t&&(e.pos=t.pos,e.end=t.end),e}function sr(e,t){return ar(e).flags=t,e}function cr(e){var t=e.emitNode;return t&&t.leadingComments}function ur(e,t){return ar(e).leadingComments=t,e}function lr(e){var t=e.emitNode;return t&&t.trailingComments}function _r(e,t){return ar(e).trailingComments=t,e}function dr(t,r){if(t.original=r,r){var n=r.emitNode;n&&(t.emitNode=function(t,r){var n=t.flags,i=t.leadingComments,a=t.trailingComments,o=t.commentRange,s=t.sourceMapRange,c=t.tokenSourceMapRanges,u=t.constantValue,l=t.helpers,_=t.startsOnNewLine;r||(r={});i&&(r.leadingComments=e.addRange(i.slice(),r.leadingComments));a&&(r.trailingComments=e.addRange(a.slice(),r.trailingComments));n&&(r.flags=n);o&&(r.commentRange=o);s&&(r.sourceMapRange=s);c&&(r.tokenSourceMapRanges=function(e,t){t||(t=[]);for(var r in e)t[r]=e[r];return t}(c,r.tokenSourceMapRanges));void 0!==u&&(r.constantValue=u);l&&(r.helpers=e.addRange(r.helpers,l));void 0!==_&&(r.startsOnNewLine=_);return r}(n,t.emitNode))}return t}e.createTemplateHead=function(e,t){var r=we(15,e,t);return r.text=e,r},e.createTemplateMiddle=function(e,t){var r=we(16,e,t);return r.text=e,r},e.createTemplateTail=function(e,t){var r=we(17,e,t);return r.text=e,r},e.createNoSubstitutionTemplateLiteral=function(e,t){return we(14,e,t)},e.createYield=Ie,e.updateYield=function(e,t,n){return e.expression!==n||e.asteriskToken!==t?r(Ie(t,n),e):e},e.createSpread=Oe,e.updateSpread=function(e,t){return e.expression!==t?r(Oe(t),e):e},e.createClassExpression=Me,e.updateClassExpression=function(e,t,n,i,a,o){return e.modifiers!==t||e.name!==n||e.typeParameters!==i||e.heritageClauses!==a||e.members!==o?r(Me(t,n,i,a,o),e):e},e.createOmittedExpression=function(){return t(214)},e.createExpressionWithTypeArguments=Le,e.updateExpressionWithTypeArguments=function(e,t,n){return e.typeArguments!==t||e.expression!==n?r(Le(t,n),e):e},e.createAsExpression=Re,e.updateAsExpression=function(e,t,n){return e.expression!==t||e.type!==n?r(Re(t,n),e):e},e.createNonNullExpression=Be,e.updateNonNullExpression=function(e,t){return e.expression!==t?r(Be(t),e):e},e.createMetaProperty=je,e.updateMetaProperty=function(e,t){return e.name!==t?r(je(e.keywordToken,t),e):e},e.createTemplateSpan=Ke,e.updateTemplateSpan=function(e,t,n){return e.expression!==t||e.literal!==n?r(Ke(t,n),e):e},e.createSemicolonClassElement=function(){return t(221)},e.createBlock=Je,e.updateBlock=function(e,t){return e.statements!==t?r(Je(t,e.multiLine),e):e},e.createVariableStatement=ze,e.updateVariableStatement=function(e,t,n){return e.modifiers!==t||e.declarationList!==n?r(ze(t,n),e):e},e.createEmptyStatement=Ue,e.createExpressionStatement=Ve,e.updateExpressionStatement=qe,e.createStatement=Ve,e.updateStatement=qe,e.createIf=We,e.updateIf=function(e,t,n,i){return e.expression!==t||e.thenStatement!==n||e.elseStatement!==i?r(We(t,n,i),e):e},e.createDo=Ge,e.updateDo=function(e,t,n){return e.statement!==t||e.expression!==n?r(Ge(t,n),e):e},e.createWhile=He,e.updateWhile=function(e,t,n){return e.expression!==t||e.statement!==n?r(He(t,n),e):e},e.createFor=Ye,e.updateFor=function(e,t,n,i,a){return e.initializer!==t||e.condition!==n||e.incrementor!==i||e.statement!==a?r(Ye(t,n,i,a),e):e},e.createForIn=Xe,e.updateForIn=function(e,t,n,i){return e.initializer!==t||e.expression!==n||e.statement!==i?r(Xe(t,n,i),e):e},e.createForOf=Qe,e.updateForOf=function(e,t,n,i,a){return e.awaitModifier!==t||e.initializer!==n||e.expression!==i||e.statement!==a?r(Qe(t,n,i,a),e):e},e.createContinue=$e,e.updateContinue=function(e,t){return e.label!==t?r($e(t),e):e},e.createBreak=Ze,e.updateBreak=function(e,t){return e.label!==t?r(Ze(t),e):e},e.createReturn=et,e.updateReturn=function(e,t){return e.expression!==t?r(et(t),e):e},e.createWith=tt,e.updateWith=function(e,t,n){return e.expression!==t||e.statement!==n?r(tt(t,n),e):e},e.createSwitch=rt,e.updateSwitch=function(e,t,n){return e.expression!==t||e.caseBlock!==n?r(rt(t,n),e):e},e.createLabel=nt,e.updateLabel=function(e,t,n){return e.label!==t||e.statement!==n?r(nt(t,n),e):e},e.createThrow=it,e.updateThrow=function(e,t){return e.expression!==t?r(it(t),e):e},e.createTry=at,e.updateTry=function(e,t,n,i){return e.tryBlock!==t||e.catchClause!==n||e.finallyBlock!==i?r(at(t,n,i),e):e},e.createDebuggerStatement=function(){return t(240)},e.createVariableDeclaration=ot,e.updateVariableDeclaration=function(e,t,n,i){return e.name!==t||e.type!==n||e.initializer!==i?r(ot(t,n,i),e):e},e.createVariableDeclarationList=st,e.updateVariableDeclarationList=function(e,t){return e.declarations!==t?r(st(t,e.flags),e):e},e.createFunctionDeclaration=ct,e.updateFunctionDeclaration=function(e,t,n,i,a,o,s,c,u){return e.decorators!==t||e.modifiers!==n||e.asteriskToken!==i||e.name!==a||e.typeParameters!==o||e.parameters!==s||e.type!==c||e.body!==u?r(ct(t,n,i,a,o,s,c,u),e):e},e.createClassDeclaration=ut,e.updateClassDeclaration=function(e,t,n,i,a,o,s){return e.decorators!==t||e.modifiers!==n||e.name!==i||e.typeParameters!==a||e.heritageClauses!==o||e.members!==s?r(ut(t,n,i,a,o,s),e):e},e.createInterfaceDeclaration=lt,e.updateInterfaceDeclaration=function(e,t,n,i,a,o,s){return e.decorators!==t||e.modifiers!==n||e.name!==i||e.typeParameters!==a||e.heritageClauses!==o||e.members!==s?r(lt(t,n,i,a,o,s),e):e},e.createTypeAliasDeclaration=_t,e.updateTypeAliasDeclaration=function(e,t,n,i,a,o){return e.decorators!==t||e.modifiers!==n||e.name!==i||e.typeParameters!==a||e.type!==o?r(_t(t,n,i,a,o),e):e},e.createEnumDeclaration=dt,e.updateEnumDeclaration=function(e,t,n,i,a){return e.decorators!==t||e.modifiers!==n||e.name!==i||e.members!==a?r(dt(t,n,i,a),e):e},e.createModuleDeclaration=pt,e.updateModuleDeclaration=function(e,t,n,i,a){return e.decorators!==t||e.modifiers!==n||e.name!==i||e.body!==a?r(pt(t,n,i,a,e.flags),e):e},e.createModuleBlock=ft,e.updateModuleBlock=function(e,t){return e.statements!==t?r(ft(t),e):e},e.createCaseBlock=mt,e.updateCaseBlock=function(e,t){return e.clauses!==t?r(mt(t),e):e},e.createNamespaceExportDeclaration=gt,e.updateNamespaceExportDeclaration=function(e,t){return e.name!==t?r(gt(t),e):e},e.createImportEqualsDeclaration=yt,e.updateImportEqualsDeclaration=function(e,t,n,i,a){return e.decorators!==t||e.modifiers!==n||e.name!==i||e.moduleReference!==a?r(yt(t,n,i,a),e):e},e.createImportDeclaration=ht,e.updateImportDeclaration=function(e,t,n,i,a){return e.decorators!==t||e.modifiers!==n||e.importClause!==i||e.moduleSpecifier!==a?r(ht(t,n,i,a),e):e},e.createImportClause=vt,e.updateImportClause=function(e,t,n){return e.name!==t||e.namedBindings!==n?r(vt(t,n),e):e},e.createNamespaceImport=bt,e.updateNamespaceImport=function(e,t){return e.name!==t?r(bt(t),e):e},e.createNamedImports=xt,e.updateNamedImports=function(e,t){return e.elements!==t?r(xt(t),e):e},e.createImportSpecifier=Dt,e.updateImportSpecifier=function(e,t,n){return e.propertyName!==t||e.name!==n?r(Dt(t,n),e):e},e.createExportAssignment=St,e.updateExportAssignment=function(e,t,n,i){return e.decorators!==t||e.modifiers!==n||e.expression!==i?r(St(t,n,e.isExportEquals,i),e):e},e.createExportDeclaration=Tt,e.updateExportDeclaration=function(e,t,n,i,a){return e.decorators!==t||e.modifiers!==n||e.exportClause!==i||e.moduleSpecifier!==a?r(Tt(t,n,i,a),e):e},e.createEmptyExports=function(){return Tt(void 0,void 0,Et([]),void 0)},e.createNamedExports=Et,e.updateNamedExports=function(e,t){return e.elements!==t?r(Et(t),e):e},e.createExportSpecifier=Ct,e.updateExportSpecifier=function(e,t,n){return e.propertyName!==t||e.name!==n?r(Ct(t,n),e):e},e.createExternalModuleReference=kt,e.updateExternalModuleReference=function(e,t){return e.expression!==t?r(kt(t),e):e},e.createJSDocTypeExpression=function(e){var r=t(292);return r.type=e,r},e.createJSDocTypeTag=function(e,t){var r=Nt(313,"type");return r.typeExpression=e,r.comment=t,r},e.createJSDocReturnTag=function(e,t){var r=Nt(311,"returns");return r.typeExpression=e,r.comment=t,r},e.createJSDocThisTag=function(e){var t=Nt(312,"this");return t.typeExpression=e,t},e.createJSDocParamTag=function(e,t,r,n){var i=Nt(310,"param");return i.typeExpression=r,i.name=e,i.isBracketed=t,i.comment=n,i},e.createJSDocComment=function(e,r){var n=t(301);return n.comment=e,n.tags=r,n},e.createJsxElement=At,e.updateJsxElement=function(e,t,n,i){return e.openingElement!==t||e.children!==n||e.closingElement!==i?r(At(t,n,i),e):e},e.createJsxSelfClosingElement=Ft,e.updateJsxSelfClosingElement=function(e,t,n,i){return e.tagName!==t||e.typeArguments!==n||e.attributes!==i?r(Ft(t,n,i),e):e},e.createJsxOpeningElement=Pt,e.updateJsxOpeningElement=function(e,t,n,i){return e.tagName!==t||e.typeArguments!==n||e.attributes!==i?r(Pt(t,n,i),e):e},e.createJsxClosingElement=wt,e.updateJsxClosingElement=function(e,t){return e.tagName!==t?r(wt(t),e):e},e.createJsxFragment=It,e.createJsxText=Ot,e.updateJsxText=function(e,t,n){return e.text!==t||e.containsOnlyTriviaWhiteSpaces!==n?r(Ot(t,n),e):e},e.createJsxOpeningFragment=function(){return t(269)},e.createJsxJsxClosingFragment=function(){return t(270)},e.updateJsxFragment=function(e,t,n,i){return e.openingFragment!==t||e.children!==n||e.closingFragment!==i?r(It(t,n,i),e):e},e.createJsxAttribute=Mt,e.updateJsxAttribute=function(e,t,n){return e.name!==t||e.initializer!==n?r(Mt(t,n),e):e},e.createJsxAttributes=Lt,e.updateJsxAttributes=function(e,t){return e.properties!==t?r(Lt(t),e):e},e.createJsxSpreadAttribute=Rt,e.updateJsxSpreadAttribute=function(e,t){return e.expression!==t?r(Rt(t),e):e},e.createJsxExpression=Bt,e.updateJsxExpression=function(e,t){return e.expression!==t?r(Bt(e.dotDotDotToken,t),e):e},e.createCaseClause=jt,e.updateCaseClause=function(e,t,n){return e.expression!==t||e.statements!==n?r(jt(t,n),e):e},e.createDefaultClause=Kt,e.updateDefaultClause=function(e,t){return e.statements!==t?r(Kt(t),e):e},e.createHeritageClause=Jt,e.updateHeritageClause=function(e,t){return e.types!==t?r(Jt(e.token,t),e):e},e.createCatchClause=zt,e.updateCatchClause=function(e,t,n){return e.variableDeclaration!==t||e.block!==n?r(zt(t,n),e):e},e.createPropertyAssignment=Ut,e.updatePropertyAssignment=function(e,t,n){return e.name!==t||e.initializer!==n?r(Ut(t,n),e):e},e.createShorthandPropertyAssignment=Vt,e.updateShorthandPropertyAssignment=function(e,t,n){return e.name!==t||e.objectAssignmentInitializer!==n?r(Vt(t,n),e):e},e.createSpreadAssignment=qt,e.updateSpreadAssignment=function(e,t){return e.expression!==t?r(qt(t),e):e},e.createEnumMember=Wt,e.updateEnumMember=function(e,t,n){return e.name!==t||e.initializer!==n?r(Wt(t,n),e):e},e.updateSourceFileNode=function(e,i,a,o,s,c,u){if(e.statements!==i||void 0!==a&&e.isDeclarationFile!==a||void 0!==o&&e.referencedFiles!==o||void 0!==s&&e.typeReferenceDirectives!==s||void 0!==u&&e.libReferenceDirectives!==u||void 0!==c&&e.hasNoDefaultLib!==c){var l=t(288);return l.flags|=e.flags,l.statements=n(i),l.endOfFileToken=e.endOfFileToken,l.fileName=e.fileName,l.path=e.path,l.text=e.text,l.isDeclarationFile=void 0===a?e.isDeclarationFile:a,l.referencedFiles=void 0===o?e.referencedFiles:o,l.typeReferenceDirectives=void 0===s?e.typeReferenceDirectives:s,l.hasNoDefaultLib=void 0===c?e.hasNoDefaultLib:c,l.libReferenceDirectives=void 0===u?e.libReferenceDirectives:u,void 0!==e.amdDependencies&&(l.amdDependencies=e.amdDependencies),void 0!==e.moduleName&&(l.moduleName=e.moduleName),void 0!==e.languageVariant&&(l.languageVariant=e.languageVariant),void 0!==e.renamedDependencies&&(l.renamedDependencies=e.renamedDependencies),void 0!==e.languageVersion&&(l.languageVersion=e.languageVersion),void 0!==e.scriptKind&&(l.scriptKind=e.scriptKind),void 0!==e.externalModuleIndicator&&(l.externalModuleIndicator=e.externalModuleIndicator),void 0!==e.commonJsModuleIndicator&&(l.commonJsModuleIndicator=e.commonJsModuleIndicator),void 0!==e.identifiers&&(l.identifiers=e.identifiers),void 0!==e.nodeCount&&(l.nodeCount=e.nodeCount),void 0!==e.identifierCount&&(l.identifierCount=e.identifierCount),void 0!==e.symbolCount&&(l.symbolCount=e.symbolCount),void 0!==e.parseDiagnostics&&(l.parseDiagnostics=e.parseDiagnostics),void 0!==e.bindDiagnostics&&(l.bindDiagnostics=e.bindDiagnostics),void 0!==e.bindSuggestionDiagnostics&&(l.bindSuggestionDiagnostics=e.bindSuggestionDiagnostics),void 0!==e.lineMap&&(l.lineMap=e.lineMap),void 0!==e.classifiableNames&&(l.classifiableNames=e.classifiableNames),void 0!==e.resolvedModules&&(l.resolvedModules=e.resolvedModules),void 0!==e.resolvedTypeReferenceDirectiveNames&&(l.resolvedTypeReferenceDirectiveNames=e.resolvedTypeReferenceDirectiveNames),void 0!==e.imports&&(l.imports=e.imports),void 0!==e.moduleAugmentations&&(l.moduleAugmentations=e.moduleAugmentations),void 0!==e.pragmas&&(l.pragmas=e.pragmas),void 0!==e.localJsxFactory&&(l.localJsxFactory=e.localJsxFactory),void 0!==e.localJsxNamespace&&(l.localJsxNamespace=e.localJsxNamespace),r(l,e)}return e},e.getMutableClone=function(e){var t=i(e);return t.pos=e.pos,t.end=e.end,t.parent=e.parent,t},e.createNotEmittedStatement=function(e){var r=t(318);return r.original=e,or(r,e),r},e.createEndOfDeclarationMarker=function(e){var r=t(322);return r.emitNode={},r.original=e,r},e.createMergeDeclarationMarker=function(e){var r=t(321);return r.emitNode={},r.original=e,r},e.createPartiallyEmittedExpression=Gt,e.updatePartiallyEmittedExpression=function(e,t){return e.expression!==t?r(Gt(t,e.original),e):e},e.createCommaList=Yt,e.updateCommaList=function(e,t){return e.elements!==t?r(Yt(t),e):e},e.createSyntheticReferenceExpression=Xt,e.updateSyntheticReferenceExpression=function(e,t,n){return e.expression!==t||e.thisArg!==n?r(Xt(t,n),e):e},e.createBundle=Qt,e.createUnparsedSourceFile=function(t,r,n){var i,a,o=function(){var t=e.createNode(290);return t.prologues=e.emptyArray,t.referencedFiles=e.emptyArray,t.libReferenceDirectives=e.emptyArray,t.getLineAndCharacterOfPosition=function(r){return e.getLineAndCharacterOfPosition(t,r)},t}();if(e.isString(t))o.fileName="",o.text=t,o.sourceMapPath=r,o.sourceMapText=n;else if(e.Debug.assert("js"===r||"dts"===r),o.fileName=("js"===r?t.javascriptPath:t.declarationPath)||"",o.sourceMapPath="js"===r?t.javascriptMapPath:t.declarationMapPath,Object.defineProperties(o,{text:{get:function(){return"js"===r?t.javascriptText:t.declarationText}},sourceMapText:{get:function(){return"js"===r?t.javascriptMapText:t.declarationMapText}}}),t.buildInfo&&t.buildInfo.bundle&&(o.oldFileOfCurrentEmit=t.oldFileOfCurrentEmit,e.Debug.assert(void 0===n||"boolean"==typeof n),i=n,a="js"===r?t.buildInfo.bundle.js:t.buildInfo.bundle.dts,o.oldFileOfCurrentEmit))return function(t,r){var n,i;e.Debug.assert(!!t.oldFileOfCurrentEmit);for(var a=0,o=r.sections;a<o.length;a++){var s=o[a];switch(s.kind){case"internal":case"text":(n||(n=[])).push(Zt(s,t));break;case"no-default-lib":case"reference":case"type":case"lib":(i||(i=[])).push(er(s,t));break;case"prologue":case"emitHelpers":case"prepend":break;default:e.Debug.assertNever(s)}}t.texts=n||e.emptyArray,t.helpers=e.map(r.sources&&r.sources.helpers,(function(e){return $t().get(e)})),t.syntheticReferences=i}(o,e.Debug.assertDefined(a)),o;return e.Debug.assert(!o.oldFileOfCurrentEmit),function(t,r,n){for(var i,a,o,s,c,u,l=0,_=r?r.sections:e.emptyArray;l<_.length;l++){var d=_[l];switch(d.kind){case"prologue":(i||(i=[])).push(Zt(d,t));break;case"emitHelpers":(a||(a=[])).push($t().get(d.data));break;case"no-default-lib":t.hasNoDefaultLib=!0;break;case"reference":(o||(o=[])).push({pos:-1,end:-1,fileName:d.data});break;case"type":(s||(s=[])).push(d.data);break;case"lib":(c||(c=[])).push({pos:-1,end:-1,fileName:d.data});break;case"prepend":for(var p=Zt(d,t),f=void 0,m=0,g=d.texts;m<g.length;m++){var y=g[m];n&&"internal"===y.kind||(f||(f=[])).push(Zt(y,t))}p.texts=f||e.emptyArray,(u||(u=[])).push(p);break;case"internal":if(n){u||(u=[]);break}case"text":(u||(u=[])).push(Zt(d,t));break;default:e.Debug.assertNever(d)}}t.prologues=i||e.emptyArray,t.helpers=a,t.referencedFiles=o||e.emptyArray,t.typeReferenceDirectives=s,t.libReferenceDirectives=c||e.emptyArray,t.texts=u||[Zt({kind:"text",pos:0,end:t.text.length},t)]}(o,a,i),o},e.createInputFiles=function(t,r,n,i,a,o,s,c,u,l,_){var d=e.createNode(291);if(e.isString(t))d.javascriptText=t,d.javascriptMapPath=n,d.javascriptMapText=i,d.declarationText=r,d.declarationMapPath=a,d.declarationMapText=o,d.javascriptPath=s,d.declarationPath=c,d.buildInfoPath=u,d.buildInfo=l,d.oldFileOfCurrentEmit=_;else{var p,f=e.createMap(),m=function(e){if(void 0!==e){var r=f.get(e);return void 0===r&&(r=t(e),f.set(e,void 0!==r&&r)),!1!==r?r:void 0}},g=function(e){var t=m(e);return void 0!==t?t:"/* Input file "+e+" was missing */\r\n"};d.javascriptPath=r,d.javascriptMapPath=n,d.declarationPath=e.Debug.assertDefined(i),d.declarationMapPath=a,d.buildInfoPath=o,Object.defineProperties(d,{javascriptText:{get:function(){return g(r)}},javascriptMapText:{get:function(){return m(n)}},declarationText:{get:function(){return g(e.Debug.assertDefined(i))}},declarationMapText:{get:function(){return m(a)}},buildInfo:{get:function(){return function(t){if(void 0===p){var r=t();p=void 0!==r&&e.getBuildInfo(r)}return p||void 0}((function(){return m(o)}))}}})}return d},e.updateBundle=function(t,r,n){return void 0===n&&(n=e.emptyArray),t.sourceFiles!==r||t.prepends!==n?Qt(r,n):t},e.createImmediatelyInvokedFunctionExpression=function(e,t,r){return _e(he(void 0,void 0,void 0,void 0,t?[t]:[],void 0,Je(e,!0)),void 0,r?[r]:[])},e.createImmediatelyInvokedArrowFunction=function(e,t,r){return _e(ve(void 0,void 0,t?[t]:[],void 0,void 0,Je(e,!0)),void 0,r?[r]:[])},e.createComma=function(e,t){return Ce(e,27,t)},e.createLessThan=function(e,t){return Ce(e,29,t)},e.createAssignment=function(e,t){return Ce(e,62,t)},e.createStrictEquality=function(e,t){return Ce(e,36,t)},e.createStrictInequality=function(e,t){return Ce(e,37,t)},e.createAdd=function(e,t){return Ce(e,39,t)},e.createSubtract=function(e,t){return Ce(e,40,t)},e.createPostfixIncrement=function(e){return Ee(e,45)},e.createLogicalAnd=function(e,t){return Ce(e,55,t)},e.createLogicalOr=function(e,t){return Ce(e,56,t)},e.createNullishCoalesce=function(e,t){return Ce(e,60,t)},e.createLogicalNot=function(e){return Te(53,e)},e.createVoidZero=function(){return De(a(0))},e.createExportDefault=function(e){return St(void 0,void 0,!1,e)},e.createExternalModuleExport=function(e){return Tt(void 0,void 0,Et([Ct(void 0,e)]))},e.disposeEmitNodes=function(t){var r=(t=e.getSourceFileOfNode(e.getParseTreeNode(t)))&&t.emitNode,n=r&&r.annotatedNodes;if(n)for(var i=0,a=n;i<a.length;i++){a[i].emitNode=void 0}},e.getOrCreateEmitNode=ar,e.removeAllComments=function(e){var t=ar(e);return t.flags|=1536,t.leadingComments=void 0,t.trailingComments=void 0,e},e.setTextRange=or,e.setEmitFlags=sr,e.addEmitFlags=function(e,t){var r=ar(e);return r.flags=r.flags|t,e},e.getSourceMapRange=function(e){var t=e.emitNode;return t&&t.sourceMapRange||e},e.setSourceMapRange=function(e,t){return ar(e).sourceMapRange=t,e},e.createSourceMapSource=function(t,r,n){return new(Fe||(Fe=e.objectAllocator.getSourceMapSourceConstructor()))(t,r,n)},e.getTokenSourceMapRange=function(e,t){var r=e.emitNode,n=r&&r.tokenSourceMapRanges;return n&&n[t]},e.setTokenSourceMapRange=function(e,t,r){var n=ar(e);return(n.tokenSourceMapRanges||(n.tokenSourceMapRanges=[]))[t]=r,e},e.getStartsOnNewLine=function(e){var t=e.emitNode;return t&&t.startsOnNewLine},e.setStartsOnNewLine=function(e,t){return ar(e).startsOnNewLine=t,e},e.getCommentRange=function(e){var t=e.emitNode;return t&&t.commentRange||e},e.setCommentRange=function(e,t){return ar(e).commentRange=t,e},e.getSyntheticLeadingComments=cr,e.setSyntheticLeadingComments=ur,e.addSyntheticLeadingComment=function(t,r,n,i){return ur(t,e.append(cr(t),{kind:r,pos:-1,end:-1,hasTrailingNewLine:i,text:n}))},e.getSyntheticTrailingComments=lr,e.setSyntheticTrailingComments=_r,e.addSyntheticTrailingComment=function(t,r,n,i){return _r(t,e.append(lr(t),{kind:r,pos:-1,end:-1,hasTrailingNewLine:i,text:n}))},e.moveSyntheticComments=function(e,t){ur(e,cr(t)),_r(e,lr(t));var r=ar(t);return r.leadingComments=void 0,r.trailingComments=void 0,e},e.getConstantValue=function(e){var t=e.emitNode;return t&&t.constantValue},e.setConstantValue=function(e,t){return ar(e).constantValue=t,e},e.addEmitHelper=function(t,r){var n=ar(t);return n.helpers=e.append(n.helpers,r),t},e.addEmitHelpers=function(t,r){if(e.some(r))for(var n=ar(t),i=0,a=r;i<a.length;i++){var o=a[i];n.helpers=e.appendIfUnique(n.helpers,o)}return t},e.removeEmitHelper=function(t,r){var n=t.emitNode;if(n){var i=n.helpers;if(i)return e.orderedRemoveItem(i,r)}return!1},e.getEmitHelpers=function(e){var t=e.emitNode;return t&&t.helpers},e.moveEmitHelpers=function(t,r,n){var i=t.emitNode,a=i&&i.helpers;if(e.some(a)){for(var o=ar(r),s=0,c=0;c<a.length;c++){var u=a[c];n(u)?(s++,o.helpers=e.appendIfUnique(o.helpers,u)):s>0&&(a[c-s]=u)}s>0&&(a.length-=s)}},e.compareEmitHelpers=function(t,r){return t===r?0:t.priority===r.priority?0:void 0===t.priority?1:void 0===r.priority?-1:e.compareValues(t.priority,r.priority)},e.setOriginalNode=dr}(s||(s={})),function(e){function r(t,r,n){if(e.isComputedPropertyName(r))return e.setTextRange(e.createElementAccess(t,r.expression),n);var i=e.setTextRange(e.isIdentifier(r)?e.createPropertyAccess(t,r):e.createElementAccess(t,r),r);return e.getOrCreateEmitNode(i).flags|=64,i}function n(t,r){var n=e.createIdentifier(t||"React");return n.flags&=-9,n.parent=e.getParseTreeNode(r),n}function i(t,r,i){return t?function t(r,i){if(e.isQualifiedName(r)){var a=t(r.left,i),o=e.createIdentifier(e.idText(r.right));return o.escapedText=r.right.escapedText,e.createPropertyAccess(a,o)}return n(e.idText(r),i)}(t,i):e.createPropertyAccess(n(r,i),"createElement")}function a(t){return e.setEmitFlags(e.createIdentifier(t),4098)}function o(t,r){var n=e.skipParentheses(t);switch(n.kind){case 75:return r;case 103:case 8:case 9:case 10:return!1;case 191:return 0!==n.elements.length;case 192:return n.properties.length>0;default:return!0}}function s(t){return e.isIdentifier(t)?e.createLiteral(t):e.isComputedPropertyName(t)?e.getMutableClone(t.expression):e.getMutableClone(t)}function c(e,t,r){return u(e,t,r,8192)}function u(t,r,n,i){void 0===i&&(i=0);var a=e.getNameOfDeclaration(t);if(a&&e.isIdentifier(a)&&!e.isGeneratedIdentifier(a)){var o=e.getMutableClone(a);return i|=e.getEmitFlags(a),n||(i|=48),r||(i|=1536),i&&e.setEmitFlags(o,i),o}return e.getGeneratedNameForNode(t)}function l(t,r,n,i){var a=e.createPropertyAccess(t,e.nodeIsSynthesized(r)?r:e.getSynthesizedClone(r));e.setTextRange(a,r);var o=0;return i||(o|=48),n||(o|=1536),o&&e.setEmitFlags(a,o),a}function _(t){return e.isStringLiteral(t.expression)&&"use strict"===t.expression.text}function d(t,r,n){e.Debug.assert(0===t.length,"Prologue directives should be at the first statement in the target statements array");for(var i=!1,a=0,o=r.length;a<o;){var s=r[a];if(!e.isPrologueDirective(s))break;_(s)&&(i=!0),t.push(s),a++}return n&&!i&&t.push(C(e.createStatement(e.createLiteral("use strict")))),a}function p(t,r,n,i){for(var a=r.length;void 0!==n&&n<a;){var o=r[n];if(!(1048576&e.getEmitFlags(o)))break;e.append(t,i?e.visitNode(o,i,e.isStatement):o),n++}return n}function f(t){for(var r=0,n=t;r<n.length;r++){var i=n[r];if(!e.isPrologueDirective(i))break;if(_(i))return i}}function m(t){if(t=e.skipPartiallyEmittedExpressions(t),e.isLiteralKind(t.kind))return t.kind;if(208===t.kind&&39===t.operatorToken.kind){if(void 0!==t.cachedLiteralKind)return t.cachedLiteralKind;var r=m(t.left),n=e.isLiteralKind(r)&&r===m(t.right)?r:0;return t.cachedLiteralKind=n,n}return 0}function g(t){var r=e.skipPartiallyEmittedExpressions(t);return e.isLeftHandSideExpression(r)&&(196!==r.kind||r.arguments)?t:e.setTextRange(e.createParen(t),t)}function y(t){var r=e.skipPartiallyEmittedExpressions(t);return e.getExpressionPrecedence(r)>e.getOperatorPrecedence(208,27)?t:e.setTextRange(e.createParen(t),t)}function h(t){return 179===t.kind?e.createParenthesizedType(t):t}function v(t){switch(t.kind){case 177:case 178:case 169:case 170:return e.createParenthesizedType(t)}return h(t)}function b(e,t){for(;;){switch(e.kind){case 207:e=e.operand;continue;case 208:e=e.left;continue;case 209:e=e.condition;continue;case 197:e=e.tag;continue;case 195:if(t)return e;case 216:case 194:case 193:case 217:case 319:e=e.expression;continue}return e}}function x(e){return 208===e.kind&&27===e.operatorToken.kind||320===e.kind}function D(e,t){switch(void 0===t&&(t=7),e.kind){case 199:return 0!=(1&t);case 198:case 216:case 217:return 0!=(2&t);case 319:return 0!=(4&t)}return!1}function S(t,r){var n;void 0===r&&(r=7);do{n=t,1&r&&(t=e.skipParentheses(t)),2&r&&(t=T(t)),4&r&&(t=e.skipPartiallyEmittedExpressions(t))}while(n!==t);return t}function T(t){for(;e.isAssertionExpression(t)||217===t.kind;)t=t.expression;return t}function E(t,r,n){return void 0===n&&(n=7),t&&D(t,n)&&!function(t){return 199===t.kind&&e.nodeIsSynthesized(t)&&e.nodeIsSynthesized(e.getSourceMapRange(t))&&e.nodeIsSynthesized(e.getCommentRange(t))&&!e.some(e.getSyntheticLeadingComments(t))&&!e.some(e.getSyntheticTrailingComments(t))}(t)?function(t,r){switch(t.kind){case 199:return e.updateParen(t,r);case 198:return e.updateTypeAssertion(t,t.type,r);case 216:return e.updateAsExpression(t,r,t.type);case 217:return e.updateNonNullExpression(t,r);case 319:return e.updatePartiallyEmittedExpression(t,r)}}(t,E(t.expression,r)):r}function C(t){return e.setStartsOnNewLine(t,!0)}function k(t){var r=e.getOriginalNode(t,e.isSourceFile),n=r&&r.emitNode;return n&&n.externalHelpersModuleName}function N(t,r,n,i){if(r.importHelpers&&e.isEffectiveExternalModule(t,r)){var a=k(t);if(a)return a;var o=e.getEmitModuleKind(r),s=(n||r.esModuleInterop&&i)&&o!==e.ModuleKind.System&&o!==e.ModuleKind.ES2015&&o!==e.ModuleKind.ESNext;if(!s){var c=e.getEmitHelpers(t);if(c)for(var u=0,l=c;u<l.length;u++){if(!l[u].scoped){s=!0;break}}}if(s){var _=e.getOriginalNode(t,e.isSourceFile),d=e.getOrCreateEmitNode(_);return d.externalHelpersModuleName||(d.externalHelpersModuleName=e.createUniqueName(e.externalHelpersModuleNameText))}}}function A(t,r,n){if(t)return t.moduleName?e.createLiteral(t.moduleName):t.isDeclarationFile||!n.out&&!n.outFile?void 0:e.createLiteral(e.getExternalModuleNameFromPath(r,t.fileName))}function F(t){if(e.isDeclarationBindingElement(t))return t.name;if(!e.isObjectLiteralElementLike(t))return e.isAssignmentExpression(t,!0)?F(t.left):e.isSpreadElement(t)?F(t.expression):t;switch(t.kind){case 279:return F(t.initializer);case 280:return t.name;case 281:return F(t.expression)}}function P(e){var t=e.kind;return 10===t||8===t}function w(t){if(e.isBindingElement(t)){if(t.dotDotDotToken)return e.Debug.assertNode(t.name,e.isIdentifier),e.setOriginalNode(e.setTextRange(e.createSpread(t.name),t),t);var r=R(t.name);return t.initializer?e.setOriginalNode(e.setTextRange(e.createAssignment(r,t.initializer),t),t):r}return e.Debug.assertNode(t,e.isExpression),t}function I(t){if(e.isBindingElement(t)){if(t.dotDotDotToken)return e.Debug.assertNode(t.name,e.isIdentifier),e.setOriginalNode(e.setTextRange(e.createSpreadAssignment(t.name),t),t);if(t.propertyName){var r=R(t.name);return e.setOriginalNode(e.setTextRange(e.createPropertyAssignment(t.propertyName,t.initializer?e.createAssignment(r,t.initializer):r),t),t)}return e.Debug.assertNode(t.name,e.isIdentifier),e.setOriginalNode(e.setTextRange(e.createShorthandPropertyAssignment(t.name,t.initializer),t),t)}return e.Debug.assertNode(t,e.isObjectLiteralElementLike),t}function O(e){switch(e.kind){case 189:case 191:return L(e);case 188:case 192:return M(e)}}function M(t){return e.isObjectBindingPattern(t)?e.setOriginalNode(e.setTextRange(e.createObjectLiteral(e.map(t.elements,I)),t),t):(e.Debug.assertNode(t,e.isObjectLiteralExpression),t)}function L(t){return e.isArrayBindingPattern(t)?e.setOriginalNode(e.setTextRange(e.createArrayLiteral(e.map(t.elements,w)),t),t):(e.Debug.assertNode(t,e.isArrayLiteralExpression),t)}function R(t){return e.isBindingPattern(t)?O(t):(e.Debug.assertNode(t,e.isExpression),t)}e.nullTransformationContext={enableEmitNotification:e.noop,enableSubstitution:e.noop,endLexicalEnvironment:e.returnUndefined,getCompilerOptions:e.notImplemented,getEmitHost:e.notImplemented,getEmitResolver:e.notImplemented,hoistFunctionDeclaration:e.noop,hoistVariableDeclaration:e.noop,isEmitNotificationEnabled:e.notImplemented,isSubstitutionEnabled:e.notImplemented,onEmitNode:e.noop,onSubstituteNode:e.notImplemented,readEmitHelpers:e.notImplemented,requestEmitHelper:e.noop,resumeLexicalEnvironment:e.noop,startLexicalEnvironment:e.noop,suspendLexicalEnvironment:e.noop,addDiagnostic:e.noop},e.createTypeCheck=function(t,r){return"undefined"===r?e.createStrictEquality(t,e.createVoidZero()):e.createStrictEquality(e.createTypeOf(t),e.createLiteral(r))},e.createMemberAccessForPropertyName=r,e.createFunctionCall=function(r,n,i,a){return e.setTextRange(e.createCall(e.createPropertyAccess(r,"call"),void 0,t([n],i)),a)},e.createFunctionApply=function(t,r,n,i){return e.setTextRange(e.createCall(e.createPropertyAccess(t,"apply"),void 0,[r,n]),i)},e.createArraySlice=function(t,r){var n=[];return void 0!==r&&n.push("number"==typeof r?e.createLiteral(r):r),e.createCall(e.createPropertyAccess(t,"slice"),void 0,n)},e.createArrayConcat=function(t,r){return e.createCall(e.createPropertyAccess(t,"concat"),void 0,r)},e.createMathPow=function(t,r,n){return e.setTextRange(e.createCall(e.createPropertyAccess(e.createIdentifier("Math"),"pow"),void 0,[t,r]),n)},e.createExpressionForJsxElement=function(t,r,n,a,o,s,c){var u=[n];if(a&&u.push(a),o&&o.length>0)if(a||u.push(e.createNull()),o.length>1)for(var l=0,_=o;l<_.length;l++){var d=_[l];C(d),u.push(d)}else u.push(o[0]);return e.setTextRange(e.createCall(i(t,r,s),void 0,u),c)},e.createExpressionForJsxFragment=function(t,r,a,o,s){var c=[e.createPropertyAccess(n(r,o),"Fragment")];if(c.push(e.createNull()),a&&a.length>0)if(a.length>1)for(var u=0,l=a;u<l.length;u++){var _=l[u];C(_),c.push(_)}else c.push(a[0]);return e.setTextRange(e.createCall(i(t,r,o),void 0,c),s)},e.getUnscopedHelperName=a,e.valuesHelper={name:"typescript:values",importName:"__values",scoped:!1,text:'\n var __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === "number") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");\n };'},e.createValuesHelper=function(t,r,n){return t.requestEmitHelper(e.valuesHelper),e.setTextRange(e.createCall(a("__values"),void 0,[r]),n)},e.readHelper={name:"typescript:read",importName:"__read",scoped:!1,text:'\n var __read = (this && this.__read) || function (o, n) {\n var m = typeof Symbol === "function" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i["return"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n };'},e.createReadHelper=function(t,r,n,i){return t.requestEmitHelper(e.readHelper),e.setTextRange(e.createCall(a("__read"),void 0,void 0!==n?[r,e.createLiteral(n)]:[r]),i)},e.spreadHelper={name:"typescript:spread",importName:"__spread",scoped:!1,text:"\n var __spread = (this && this.__spread) || function () {\n for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));\n return ar;\n };"},e.createSpreadHelper=function(t,r,n){return t.requestEmitHelper(e.readHelper),t.requestEmitHelper(e.spreadHelper),e.setTextRange(e.createCall(a("__spread"),void 0,r),n)},e.spreadArraysHelper={name:"typescript:spreadArrays",importName:"__spreadArrays",scoped:!1,text:"\n var __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n };"},e.createSpreadArraysHelper=function(t,r,n){return t.requestEmitHelper(e.spreadArraysHelper),e.setTextRange(e.createCall(a("__spreadArrays"),void 0,r),n)},e.createForOfBindingStatement=function(t,r){if(e.isVariableDeclarationList(t)){var n=e.first(t.declarations),i=e.updateVariableDeclaration(n,n.name,void 0,r);return e.setTextRange(e.createVariableStatement(void 0,e.updateVariableDeclarationList(t,[i])),t)}var a=e.setTextRange(e.createAssignment(t,r),t);return e.setTextRange(e.createStatement(a),t)},e.insertLeadingStatement=function(r,n){return e.isBlock(r)?e.updateBlock(r,e.setTextRange(e.createNodeArray(t([n],r.statements)),r.statements)):e.createBlock(e.createNodeArray([r,n]),!0)},e.restoreEnclosingLabel=function t(r,n,i){if(!n)return r;var a=e.updateLabel(n,n.label,237===n.statement.kind?t(r,n.statement):r);return i&&i(n),a},e.createCallBinding=function(t,r,n,i){void 0===i&&(i=!1);var a,s,c=S(t,7);if(e.isSuperProperty(c))a=e.createThis(),s=c;else if(101===c.kind)a=e.createThis(),s=n<2?e.setTextRange(e.createIdentifier("_super"),c):c;else if(4096&e.getEmitFlags(c))a=e.createVoidZero(),s=g(c);else switch(c.kind){case 193:o(c.expression,i)?(a=e.createTempVariable(r),s=e.createPropertyAccess(e.setTextRange(e.createAssignment(a,c.expression),c.expression),c.name),e.setTextRange(s,c)):(a=c.expression,s=c);break;case 194:o(c.expression,i)?(a=e.createTempVariable(r),s=e.createElementAccess(e.setTextRange(e.createAssignment(a,c.expression),c.expression),c.argumentExpression),e.setTextRange(s,c)):(a=c.expression,s=c);break;default:a=e.createVoidZero(),s=g(t)}return{target:s,thisArg:a}},e.inlineExpressions=function(t){return t.length>10?e.createCommaList(t):e.reduceLeft(t,e.createComma)},e.createExpressionFromEntityName=function t(r){if(e.isQualifiedName(r)){var n=t(r.left),i=e.getMutableClone(r.right);return e.setTextRange(e.createPropertyAccess(n,i),r)}return e.getMutableClone(r)},e.createExpressionForPropertyName=s,e.createExpressionForObjectLiteralElementLike=function(t,n,i){switch(n.kind){case 162:case 163:return function(t,r,n,i){var a=e.getAllAccessorDeclarations(t,r),o=a.firstAccessor,c=a.getAccessor,u=a.setAccessor;if(r===o){var l=[];if(c){var _=e.createFunctionExpression(c.modifiers,void 0,void 0,void 0,c.parameters,void 0,c.body);e.setTextRange(_,c),e.setOriginalNode(_,c);var d=e.createPropertyAssignment("get",_);l.push(d)}if(u){var p=e.createFunctionExpression(u.modifiers,void 0,void 0,void 0,u.parameters,void 0,u.body);e.setTextRange(p,u),e.setOriginalNode(p,u);var f=e.createPropertyAssignment("set",p);l.push(f)}l.push(e.createPropertyAssignment("enumerable",e.createTrue())),l.push(e.createPropertyAssignment("configurable",e.createTrue()));var m=e.setTextRange(e.createCall(e.createPropertyAccess(e.createIdentifier("Object"),"defineProperty"),void 0,[n,s(r.name),e.createObjectLiteral(l,i)]),o);return e.aggregateTransformFlags(m)}return}(t.properties,n,i,!!t.multiLine);case 279:return function(t,n){return e.aggregateTransformFlags(e.setOriginalNode(e.setTextRange(e.createAssignment(r(n,t.name,t.name),t.initializer),t),t))}(n,i);case 280:return function(t,n){return e.aggregateTransformFlags(e.setOriginalNode(e.setTextRange(e.createAssignment(r(n,t.name,t.name),e.getSynthesizedClone(t.name)),t),t))}(n,i);case 160:return function(t,n){return e.aggregateTransformFlags(e.setOriginalNode(e.setTextRange(e.createAssignment(r(n,t.name,t.name),e.setOriginalNode(e.setTextRange(e.createFunctionExpression(t.modifiers,t.asteriskToken,void 0,void 0,t.parameters,void 0,t.body),t),t)),t),t))}(n,i)}},e.getInternalName=function(e,t,r){return u(e,t,r,49152)},e.isInternalName=function(t){return 0!=(32768&e.getEmitFlags(t))},e.getLocalName=function(e,t,r){return u(e,t,r,16384)},e.isLocalName=function(t){return 0!=(16384&e.getEmitFlags(t))},e.getExportName=c,e.isExportName=function(t){return 0!=(8192&e.getEmitFlags(t))},e.getDeclarationName=function(e,t,r){return u(e,t,r)},e.getExternalModuleOrNamespaceExportName=function(t,r,n,i){return t&&e.hasModifier(r,1)?l(t,u(r),n,i):c(r,n,i)},e.getNamespaceMemberName=l,e.convertToFunctionBody=function(t,r){return e.isBlock(t)?t:e.setTextRange(e.createBlock([e.setTextRange(e.createReturn(t),t)],r),t)},e.convertFunctionDeclarationToExpression=function(t){if(!t.body)return e.Debug.fail();var r=e.createFunctionExpression(t.modifiers,t.asteriskToken,t.name,t.typeParameters,t.parameters,t.type,t.body);return e.setOriginalNode(r,t),e.setTextRange(r,t),e.getStartsOnNewLine(t)&&e.setStartsOnNewLine(r,!0),e.aggregateTransformFlags(r),r},e.addPrologue=function(e,t,r,n){return p(e,t,d(e,t,r),n)},e.addStandardPrologue=d,e.addCustomPrologue=p,e.findUseStrictPrologue=f,e.startsWithUseStrict=function(t){var r=e.firstOrUndefined(t);return void 0!==r&&e.isPrologueDirective(r)&&_(r)},e.ensureUseStrict=function(r){return f(r)?r:e.setTextRange(e.createNodeArray(t([C(e.createStatement(e.createLiteral("use strict")))],r)),r)},e.parenthesizeBinaryOperand=function(t,r,n,i){return 199===e.skipPartiallyEmittedExpressions(r).kind?r:function(t,r,n,i){var a=e.getOperatorPrecedence(208,t),o=e.getOperatorAssociativity(208,t),s=e.skipPartiallyEmittedExpressions(r);if(!n&&201===r.kind&&a>3)return!0;var c=e.getExpressionPrecedence(s);switch(e.compareValues(c,a)){case-1:return!(!n&&1===o&&211===r.kind);case 1:return!1;case 0:if(n)return 1===o;if(e.isBinaryExpression(s)&&s.operatorToken.kind===t){if(function(e){return 41===e||51===e||50===e||52===e}(t))return!1;if(39===t){var u=i?m(i):0;if(e.isLiteralKind(u)&&u===m(s))return!1}}return 0===e.getExpressionAssociativity(s)}}(t,r,n,i)?e.createParen(r):r},e.parenthesizeForConditionalHead=function(t){var r=e.getOperatorPrecedence(209,57),n=e.skipPartiallyEmittedExpressions(t),i=e.getExpressionPrecedence(n);return 1!==e.compareValues(i,r)?e.createParen(t):t},e.parenthesizeSubexpressionOfConditionalExpression=function(t){return x(e.skipPartiallyEmittedExpressions(t))?e.createParen(t):t},e.parenthesizeDefaultExpression=function(t){var r=e.skipPartiallyEmittedExpressions(t),n=x(r);if(!n)switch(b(r,!1).kind){case 213:case 200:n=!0}return n?e.createParen(t):t},e.parenthesizeForNew=function(t){var r=b(t,!0);switch(r.kind){case 195:return e.createParen(t);case 196:return r.arguments?t:e.createParen(t)}return g(t)},e.parenthesizeForAccess=g,e.parenthesizePostfixOperand=function(t){return e.isLeftHandSideExpression(t)?t:e.setTextRange(e.createParen(t),t)},e.parenthesizePrefixOperand=function(t){return e.isUnaryExpression(t)?t:e.setTextRange(e.createParen(t),t)},e.parenthesizeListElements=function(t){for(var r,n=0;n<t.length;n++){var i=y(t[n]);void 0===r&&i===t[n]||(void 0===r&&(r=t.slice(0,n)),r.push(i))}return void 0!==r?e.setTextRange(e.createNodeArray(r,t.hasTrailingComma),t):t},e.parenthesizeExpressionForList=y,e.parenthesizeExpressionForExpressionStatement=function(t){var r=e.skipPartiallyEmittedExpressions(t);if(e.isCallExpression(r)){var n=r.expression,i=e.skipPartiallyEmittedExpressions(n).kind;if(200===i||201===i){var a=e.getMutableClone(r);return a.expression=e.setTextRange(e.createParen(n),n),E(t,a,4)}}var o=b(r,!1).kind;return 192===o||200===o?e.setTextRange(e.createParen(t),t):t},e.parenthesizeConditionalTypeMember=h,e.parenthesizeElementTypeMember=v,e.parenthesizeArrayTypeMember=function(t){switch(t.kind){case 171:case 183:case 180:return e.createParenthesizedType(t)}return v(t)},e.parenthesizeElementTypeMembers=function(t){return e.createNodeArray(e.sameMap(t,v))},e.parenthesizeTypeParameters=function(t){if(e.some(t)){for(var r=[],n=0;n<t.length;++n){var i=t[n];r.push(0===n&&e.isFunctionOrConstructorTypeNode(i)&&i.typeParameters?e.createParenthesizedType(i):i)}return e.createNodeArray(r)}},e.getLeftmostExpression=b,e.parenthesizeConciseBody=function(t){return e.isBlock(t)||!x(t)&&192!==b(t,!1).kind?t:e.setTextRange(e.createParen(t),t)},e.isCommaSequence=x,function(e){e[e.Parentheses=1]="Parentheses",e[e.Assertions=2]="Assertions",e[e.PartiallyEmittedExpressions=4]="PartiallyEmittedExpressions",e[e.All=7]="All"}(e.OuterExpressionKinds||(e.OuterExpressionKinds={})),e.isOuterExpression=D,e.skipOuterExpressions=S,e.skipAssertions=T,e.recreateOuterExpressions=E,e.startOnNewLine=C,e.getExternalHelpersModuleName=k,e.hasRecordedExternalHelpers=function(t){var r=e.getOriginalNode(t,e.isSourceFile),n=r&&r.emitNode;return!(!n||!n.externalHelpersModuleName&&!n.externalHelpers)},e.createExternalHelpersImportDeclarationIfNeeded=function(t,r,n,i,o){if(r.importHelpers&&e.isEffectiveExternalModule(t,r)){var s=void 0,c=e.getEmitModuleKind(r);if(c>=e.ModuleKind.ES2015&&c<=e.ModuleKind.ESNext){var u=e.getEmitHelpers(t);if(u){for(var l=[],_=0,d=u;_<d.length;_++){var p=d[_];if(!p.scoped){var f=p.importName;f&&e.pushIfUnique(l,f)}}if(e.some(l)){l.sort(e.compareStringsCaseSensitive),s=e.createNamedImports(e.map(l,(function(r){return e.isFileLevelUniqueName(t,r)?e.createImportSpecifier(void 0,e.createIdentifier(r)):e.createImportSpecifier(e.createIdentifier(r),a(r))})));var m=e.getOriginalNode(t,e.isSourceFile);e.getOrCreateEmitNode(m).externalHelpers=!0}}}else{var g=N(t,r,n,i||o);g&&(s=e.createNamespaceImport(g))}if(s){var y=e.createImportDeclaration(void 0,void 0,e.createImportClause(void 0,s),e.createLiteral(e.externalHelpersModuleNameText));return e.addEmitFlags(y,67108864),y}}},e.getOrCreateExternalHelpersModuleNameIfNeeded=N,e.getLocalNameForExternalImport=function(t,r){var n=e.getNamespaceDeclarationNode(t);if(n&&!e.isDefaultImport(t)){var i=n.name;return e.isGeneratedIdentifier(i)?i:e.createIdentifier(e.getSourceTextOfNodeFromSourceFile(r,i)||e.idText(i))}return 253===t.kind&&t.importClause?e.getGeneratedNameForNode(t):259===t.kind&&t.moduleSpecifier?e.getGeneratedNameForNode(t):void 0},e.getExternalModuleNameLiteral=function(t,r,n,i,a){var o=e.getExternalModuleName(t);if(10===o.kind)return function(e,t,r,n){return A(r.getExternalModuleFileFromDeclaration(e),t,n)}(t,n,i,a)||function(t,r){var n=r.renamedDependencies&&r.renamedDependencies.get(t.text);return n&&e.createLiteral(n)}(o,r)||e.getSynthesizedClone(o)},e.tryGetModuleNameFromFile=A,e.getInitializerOfBindingOrAssignmentElement=function t(r){if(e.isDeclarationBindingElement(r))return r.initializer;if(e.isPropertyAssignment(r)){var n=r.initializer;return e.isAssignmentExpression(n,!0)?n.right:void 0}return e.isShorthandPropertyAssignment(r)?r.objectAssignmentInitializer:e.isAssignmentExpression(r,!0)?r.right:e.isSpreadElement(r)?t(r.expression):void 0},e.getTargetOfBindingOrAssignmentElement=F,e.getRestIndicatorOfBindingOrAssignmentElement=function(e){switch(e.kind){case 155:case 190:return e.dotDotDotToken;case 212:case 281:return e}},e.getPropertyNameOfBindingOrAssignmentElement=function(t){switch(t.kind){case 190:if(t.propertyName){var r=t.propertyName;return e.isComputedPropertyName(r)&&P(r.expression)?r.expression:r}break;case 279:if(t.name){r=t.name;return e.isComputedPropertyName(r)&&P(r.expression)?r.expression:r}break;case 281:return t.name}var n=F(t);if(n&&e.isPropertyName(n))return e.isComputedPropertyName(n)&&P(n.expression)?n.expression:n;e.Debug.fail("Invalid property name for binding element.")},e.getElementsOfBindingOrAssignmentPattern=function(e){switch(e.kind){case 188:case 189:case 191:return e.elements;case 192:return e.properties}},e.convertToArrayAssignmentElement=w,e.convertToObjectAssignmentElement=I,e.convertToAssignmentPattern=O,e.convertToObjectAssignmentPattern=M,e.convertToArrayAssignmentPattern=L,e.convertToAssignmentElementTarget=R}(s||(s={})),function(e){var t=e.or(e.isTypeNode,e.isTypeParameterDeclaration);function r(t,r,n,i){if(void 0===t||void 0===r)return t;e.aggregateTransformFlags(t);var a,o=r(t);return o===t?t:void 0!==o?(a=e.isArray(o)?(i||s)(o):o,e.Debug.assertNode(a,n),e.aggregateTransformFlags(a),a):void 0}function n(t,r,n,i,a){if(void 0===t||void 0===r)return t;var o,s=t.length;(void 0===i||i<0)&&(i=0),(void 0===a||a>s-i)&&(a=s-i),(i>0||a<s)&&(o=e.createNodeArray([],t.hasTrailingComma&&i+a===s));for(var c=0;c<a;c++){var u=t[c+i];e.aggregateTransformFlags(u);var l=void 0!==u?r(u):void 0;if((void 0!==o||void 0===l||l!==u)&&(void 0===o&&(o=e.createNodeArray(t.slice(0,c),t.hasTrailingComma),e.setTextRange(o,t)),l))if(e.isArray(l))for(var _=0,d=l;_<d.length;_++){var p=d[_];e.Debug.assertNode(p,n),e.aggregateTransformFlags(p),o.push(p)}else e.Debug.assertNode(l,n),e.aggregateTransformFlags(l),o.push(l)}return o||t}function i(t,r,i,a,o){return i.startLexicalEnvironment(),t=n(t,r,e.isStatement,a),o&&(t=e.ensureUseStrict(t)),e.mergeLexicalEnvironment(t,i.endLexicalEnvironment())}function a(t,r,i,a){void 0===a&&(a=n),i.startLexicalEnvironment();var o=a(t,r,e.isParameterDeclaration);return i.suspendLexicalEnvironment(),o}function o(t,n,i){i.resumeLexicalEnvironment();var a=r(t,n,e.isConciseBody),o=i.endLexicalEnvironment();if(e.some(o)){var s=e.convertToFunctionBody(a),c=e.mergeLexicalEnvironment(s.statements,o);return e.updateBlock(s,c)}return a}function s(t){return e.Debug.assert(t.length<=1,"Too many nodes written to output."),e.singleOrUndefined(t)}e.visitNode=r,e.visitNodes=n,e.visitLexicalEnvironment=i,e.visitParameterList=a,e.visitFunctionBody=o,e.visitEachChild=function(s,c,u,l,_){if(void 0===l&&(l=n),void 0!==s){var d=s.kind;if(d>0&&d<=151||182===d)return s;switch(d){case 75:return e.updateIdentifier(s,l(s.typeArguments,c,t));case 152:return e.updateQualifiedName(s,r(s.left,c,e.isEntityName),r(s.right,c,e.isIdentifier));case 153:return e.updateComputedPropertyName(s,r(s.expression,c,e.isExpression));case 154:return e.updateTypeParameterDeclaration(s,r(s.name,c,e.isIdentifier),r(s.constraint,c,e.isTypeNode),r(s.default,c,e.isTypeNode));case 155:return e.updateParameter(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),r(s.dotDotDotToken,_,e.isToken),r(s.name,c,e.isBindingName),r(s.questionToken,_,e.isToken),r(s.type,c,e.isTypeNode),r(s.initializer,c,e.isExpression));case 156:return e.updateDecorator(s,r(s.expression,c,e.isExpression));case 157:return e.updatePropertySignature(s,l(s.modifiers,c,e.isToken),r(s.name,c,e.isPropertyName),r(s.questionToken,_,e.isToken),r(s.type,c,e.isTypeNode),r(s.initializer,c,e.isExpression));case 158:return e.updateProperty(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),r(s.name,c,e.isPropertyName),r(s.questionToken||s.exclamationToken,_,e.isToken),r(s.type,c,e.isTypeNode),r(s.initializer,c,e.isExpression));case 159:return e.updateMethodSignature(s,l(s.typeParameters,c,e.isTypeParameterDeclaration),l(s.parameters,c,e.isParameterDeclaration),r(s.type,c,e.isTypeNode),r(s.name,c,e.isPropertyName),r(s.questionToken,_,e.isToken));case 160:return e.updateMethod(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),r(s.asteriskToken,_,e.isToken),r(s.name,c,e.isPropertyName),r(s.questionToken,_,e.isToken),l(s.typeParameters,c,e.isTypeParameterDeclaration),a(s.parameters,c,u,l),r(s.type,c,e.isTypeNode),o(s.body,c,u));case 161:return e.updateConstructor(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),a(s.parameters,c,u,l),o(s.body,c,u));case 162:return e.updateGetAccessor(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),r(s.name,c,e.isPropertyName),a(s.parameters,c,u,l),r(s.type,c,e.isTypeNode),o(s.body,c,u));case 163:return e.updateSetAccessor(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),r(s.name,c,e.isPropertyName),a(s.parameters,c,u,l),o(s.body,c,u));case 164:return e.updateCallSignature(s,l(s.typeParameters,c,e.isTypeParameterDeclaration),l(s.parameters,c,e.isParameterDeclaration),r(s.type,c,e.isTypeNode));case 165:return e.updateConstructSignature(s,l(s.typeParameters,c,e.isTypeParameterDeclaration),l(s.parameters,c,e.isParameterDeclaration),r(s.type,c,e.isTypeNode));case 166:return e.updateIndexSignature(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),l(s.parameters,c,e.isParameterDeclaration),r(s.type,c,e.isTypeNode));case 167:return e.updateTypePredicateNodeWithModifier(s,r(s.assertsModifier,c),r(s.parameterName,c),r(s.type,c,e.isTypeNode));case 168:return e.updateTypeReferenceNode(s,r(s.typeName,c,e.isEntityName),l(s.typeArguments,c,e.isTypeNode));case 169:return e.updateFunctionTypeNode(s,l(s.typeParameters,c,e.isTypeParameterDeclaration),l(s.parameters,c,e.isParameterDeclaration),r(s.type,c,e.isTypeNode));case 170:return e.updateConstructorTypeNode(s,l(s.typeParameters,c,e.isTypeParameterDeclaration),l(s.parameters,c,e.isParameterDeclaration),r(s.type,c,e.isTypeNode));case 171:return e.updateTypeQueryNode(s,r(s.exprName,c,e.isEntityName));case 172:return e.updateTypeLiteralNode(s,l(s.members,c,e.isTypeElement));case 173:return e.updateArrayTypeNode(s,r(s.elementType,c,e.isTypeNode));case 174:return e.updateTupleTypeNode(s,l(s.elementTypes,c,e.isTypeNode));case 175:return e.updateOptionalTypeNode(s,r(s.type,c,e.isTypeNode));case 176:return e.updateRestTypeNode(s,r(s.type,c,e.isTypeNode));case 177:return e.updateUnionTypeNode(s,l(s.types,c,e.isTypeNode));case 178:return e.updateIntersectionTypeNode(s,l(s.types,c,e.isTypeNode));case 179:return e.updateConditionalTypeNode(s,r(s.checkType,c,e.isTypeNode),r(s.extendsType,c,e.isTypeNode),r(s.trueType,c,e.isTypeNode),r(s.falseType,c,e.isTypeNode));case 180:return e.updateInferTypeNode(s,r(s.typeParameter,c,e.isTypeParameterDeclaration));case 187:return e.updateImportTypeNode(s,r(s.argument,c,e.isTypeNode),r(s.qualifier,c,e.isEntityName),n(s.typeArguments,c,e.isTypeNode),s.isTypeOf);case 181:return e.updateParenthesizedType(s,r(s.type,c,e.isTypeNode));case 183:return e.updateTypeOperatorNode(s,r(s.type,c,e.isTypeNode));case 184:return e.updateIndexedAccessTypeNode(s,r(s.objectType,c,e.isTypeNode),r(s.indexType,c,e.isTypeNode));case 185:return e.updateMappedTypeNode(s,r(s.readonlyToken,_,e.isToken),r(s.typeParameter,c,e.isTypeParameterDeclaration),r(s.questionToken,_,e.isToken),r(s.type,c,e.isTypeNode));case 186:return e.updateLiteralTypeNode(s,r(s.literal,c,e.isExpression));case 188:return e.updateObjectBindingPattern(s,l(s.elements,c,e.isBindingElement));case 189:return e.updateArrayBindingPattern(s,l(s.elements,c,e.isArrayBindingElement));case 190:return e.updateBindingElement(s,r(s.dotDotDotToken,_,e.isToken),r(s.propertyName,c,e.isPropertyName),r(s.name,c,e.isBindingName),r(s.initializer,c,e.isExpression));case 191:return e.updateArrayLiteral(s,l(s.elements,c,e.isExpression));case 192:return e.updateObjectLiteral(s,l(s.properties,c,e.isObjectLiteralElementLike));case 193:return 32&s.flags?e.updatePropertyAccessChain(s,r(s.expression,c,e.isExpression),r(s.questionDotToken,c,e.isToken),r(s.name,c,e.isIdentifier)):e.updatePropertyAccess(s,r(s.expression,c,e.isExpression),r(s.name,c,e.isIdentifier));case 194:return 32&s.flags?e.updateElementAccessChain(s,r(s.expression,c,e.isExpression),r(s.questionDotToken,c,e.isToken),r(s.argumentExpression,c,e.isExpression)):e.updateElementAccess(s,r(s.expression,c,e.isExpression),r(s.argumentExpression,c,e.isExpression));case 195:return 32&s.flags?e.updateCallChain(s,r(s.expression,c,e.isExpression),r(s.questionDotToken,c,e.isToken),l(s.typeArguments,c,e.isTypeNode),l(s.arguments,c,e.isExpression)):e.updateCall(s,r(s.expression,c,e.isExpression),l(s.typeArguments,c,e.isTypeNode),l(s.arguments,c,e.isExpression));case 196:return e.updateNew(s,r(s.expression,c,e.isExpression),l(s.typeArguments,c,e.isTypeNode),l(s.arguments,c,e.isExpression));case 197:return e.updateTaggedTemplate(s,r(s.tag,c,e.isExpression),n(s.typeArguments,c,e.isExpression),r(s.template,c,e.isTemplateLiteral));case 198:return e.updateTypeAssertion(s,r(s.type,c,e.isTypeNode),r(s.expression,c,e.isExpression));case 199:return e.updateParen(s,r(s.expression,c,e.isExpression));case 200:return e.updateFunctionExpression(s,l(s.modifiers,c,e.isModifier),r(s.asteriskToken,_,e.isToken),r(s.name,c,e.isIdentifier),l(s.typeParameters,c,e.isTypeParameterDeclaration),a(s.parameters,c,u,l),r(s.type,c,e.isTypeNode),o(s.body,c,u));case 201:return e.updateArrowFunction(s,l(s.modifiers,c,e.isModifier),l(s.typeParameters,c,e.isTypeParameterDeclaration),a(s.parameters,c,u,l),r(s.type,c,e.isTypeNode),r(s.equalsGreaterThanToken,c,e.isToken),o(s.body,c,u));case 202:return e.updateDelete(s,r(s.expression,c,e.isExpression));case 203:return e.updateTypeOf(s,r(s.expression,c,e.isExpression));case 204:return e.updateVoid(s,r(s.expression,c,e.isExpression));case 205:return e.updateAwait(s,r(s.expression,c,e.isExpression));case 206:return e.updatePrefix(s,r(s.operand,c,e.isExpression));case 207:return e.updatePostfix(s,r(s.operand,c,e.isExpression));case 208:return e.updateBinary(s,r(s.left,c,e.isExpression),r(s.right,c,e.isExpression),r(s.operatorToken,c,e.isToken));case 209:return e.updateConditional(s,r(s.condition,c,e.isExpression),r(s.questionToken,c,e.isToken),r(s.whenTrue,c,e.isExpression),r(s.colonToken,c,e.isToken),r(s.whenFalse,c,e.isExpression));case 210:return e.updateTemplateExpression(s,r(s.head,c,e.isTemplateHead),l(s.templateSpans,c,e.isTemplateSpan));case 211:return e.updateYield(s,r(s.asteriskToken,_,e.isToken),r(s.expression,c,e.isExpression));case 212:return e.updateSpread(s,r(s.expression,c,e.isExpression));case 213:return e.updateClassExpression(s,l(s.modifiers,c,e.isModifier),r(s.name,c,e.isIdentifier),l(s.typeParameters,c,e.isTypeParameterDeclaration),l(s.heritageClauses,c,e.isHeritageClause),l(s.members,c,e.isClassElement));case 215:return e.updateExpressionWithTypeArguments(s,l(s.typeArguments,c,e.isTypeNode),r(s.expression,c,e.isExpression));case 216:return e.updateAsExpression(s,r(s.expression,c,e.isExpression),r(s.type,c,e.isTypeNode));case 217:return e.updateNonNullExpression(s,r(s.expression,c,e.isExpression));case 218:return e.updateMetaProperty(s,r(s.name,c,e.isIdentifier));case 220:return e.updateTemplateSpan(s,r(s.expression,c,e.isExpression),r(s.literal,c,e.isTemplateMiddleOrTemplateTail));case 222:return e.updateBlock(s,l(s.statements,c,e.isStatement));case 224:return e.updateVariableStatement(s,l(s.modifiers,c,e.isModifier),r(s.declarationList,c,e.isVariableDeclarationList));case 225:return e.updateExpressionStatement(s,r(s.expression,c,e.isExpression));case 226:return e.updateIf(s,r(s.expression,c,e.isExpression),r(s.thenStatement,c,e.isStatement,e.liftToBlock),r(s.elseStatement,c,e.isStatement,e.liftToBlock));case 227:return e.updateDo(s,r(s.statement,c,e.isStatement,e.liftToBlock),r(s.expression,c,e.isExpression));case 228:return e.updateWhile(s,r(s.expression,c,e.isExpression),r(s.statement,c,e.isStatement,e.liftToBlock));case 229:return e.updateFor(s,r(s.initializer,c,e.isForInitializer),r(s.condition,c,e.isExpression),r(s.incrementor,c,e.isExpression),r(s.statement,c,e.isStatement,e.liftToBlock));case 230:return e.updateForIn(s,r(s.initializer,c,e.isForInitializer),r(s.expression,c,e.isExpression),r(s.statement,c,e.isStatement,e.liftToBlock));case 231:return e.updateForOf(s,r(s.awaitModifier,c,e.isToken),r(s.initializer,c,e.isForInitializer),r(s.expression,c,e.isExpression),r(s.statement,c,e.isStatement,e.liftToBlock));case 232:return e.updateContinue(s,r(s.label,c,e.isIdentifier));case 233:return e.updateBreak(s,r(s.label,c,e.isIdentifier));case 234:return e.updateReturn(s,r(s.expression,c,e.isExpression));case 235:return e.updateWith(s,r(s.expression,c,e.isExpression),r(s.statement,c,e.isStatement,e.liftToBlock));case 236:return e.updateSwitch(s,r(s.expression,c,e.isExpression),r(s.caseBlock,c,e.isCaseBlock));case 237:return e.updateLabel(s,r(s.label,c,e.isIdentifier),r(s.statement,c,e.isStatement,e.liftToBlock));case 238:return e.updateThrow(s,r(s.expression,c,e.isExpression));case 239:return e.updateTry(s,r(s.tryBlock,c,e.isBlock),r(s.catchClause,c,e.isCatchClause),r(s.finallyBlock,c,e.isBlock));case 241:return e.updateVariableDeclaration(s,r(s.name,c,e.isBindingName),r(s.type,c,e.isTypeNode),r(s.initializer,c,e.isExpression));case 242:return e.updateVariableDeclarationList(s,l(s.declarations,c,e.isVariableDeclaration));case 243:return e.updateFunctionDeclaration(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),r(s.asteriskToken,_,e.isToken),r(s.name,c,e.isIdentifier),l(s.typeParameters,c,e.isTypeParameterDeclaration),a(s.parameters,c,u,l),r(s.type,c,e.isTypeNode),o(s.body,c,u));case 244:return e.updateClassDeclaration(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),r(s.name,c,e.isIdentifier),l(s.typeParameters,c,e.isTypeParameterDeclaration),l(s.heritageClauses,c,e.isHeritageClause),l(s.members,c,e.isClassElement));case 245:return e.updateInterfaceDeclaration(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),r(s.name,c,e.isIdentifier),l(s.typeParameters,c,e.isTypeParameterDeclaration),l(s.heritageClauses,c,e.isHeritageClause),l(s.members,c,e.isTypeElement));case 246:return e.updateTypeAliasDeclaration(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),r(s.name,c,e.isIdentifier),l(s.typeParameters,c,e.isTypeParameterDeclaration),r(s.type,c,e.isTypeNode));case 247:return e.updateEnumDeclaration(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),r(s.name,c,e.isIdentifier),l(s.members,c,e.isEnumMember));case 248:return e.updateModuleDeclaration(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),r(s.name,c,e.isIdentifier),r(s.body,c,e.isModuleBody));case 249:return e.updateModuleBlock(s,l(s.statements,c,e.isStatement));case 250:return e.updateCaseBlock(s,l(s.clauses,c,e.isCaseOrDefaultClause));case 251:return e.updateNamespaceExportDeclaration(s,r(s.name,c,e.isIdentifier));case 252:return e.updateImportEqualsDeclaration(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),r(s.name,c,e.isIdentifier),r(s.moduleReference,c,e.isModuleReference));case 253:return e.updateImportDeclaration(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),r(s.importClause,c,e.isImportClause),r(s.moduleSpecifier,c,e.isExpression));case 254:return e.updateImportClause(s,r(s.name,c,e.isIdentifier),r(s.namedBindings,c,e.isNamedImportBindings));case 255:return e.updateNamespaceImport(s,r(s.name,c,e.isIdentifier));case 256:return e.updateNamedImports(s,l(s.elements,c,e.isImportSpecifier));case 257:return e.updateImportSpecifier(s,r(s.propertyName,c,e.isIdentifier),r(s.name,c,e.isIdentifier));case 258:return e.updateExportAssignment(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),r(s.expression,c,e.isExpression));case 259:return e.updateExportDeclaration(s,l(s.decorators,c,e.isDecorator),l(s.modifiers,c,e.isModifier),r(s.exportClause,c,e.isNamedExports),r(s.moduleSpecifier,c,e.isExpression));case 260:return e.updateNamedExports(s,l(s.elements,c,e.isExportSpecifier));case 261:return e.updateExportSpecifier(s,r(s.propertyName,c,e.isIdentifier),r(s.name,c,e.isIdentifier));case 263:return e.updateExternalModuleReference(s,r(s.expression,c,e.isExpression));case 264:return e.updateJsxElement(s,r(s.openingElement,c,e.isJsxOpeningElement),l(s.children,c,e.isJsxChild),r(s.closingElement,c,e.isJsxClosingElement));case 265:return e.updateJsxSelfClosingElement(s,r(s.tagName,c,e.isJsxTagNameExpression),l(s.typeArguments,c,e.isTypeNode),r(s.attributes,c,e.isJsxAttributes));case 266:return e.updateJsxOpeningElement(s,r(s.tagName,c,e.isJsxTagNameExpression),l(s.typeArguments,c,e.isTypeNode),r(s.attributes,c,e.isJsxAttributes));case 267:return e.updateJsxClosingElement(s,r(s.tagName,c,e.isJsxTagNameExpression));case 268:return e.updateJsxFragment(s,r(s.openingFragment,c,e.isJsxOpeningFragment),l(s.children,c,e.isJsxChild),r(s.closingFragment,c,e.isJsxClosingFragment));case 271:return e.updateJsxAttribute(s,r(s.name,c,e.isIdentifier),r(s.initializer,c,e.isStringLiteralOrJsxExpression));case 272:return e.updateJsxAttributes(s,l(s.properties,c,e.isJsxAttributeLike));case 273:return e.updateJsxSpreadAttribute(s,r(s.expression,c,e.isExpression));case 274:return e.updateJsxExpression(s,r(s.expression,c,e.isExpression));case 275:return e.updateCaseClause(s,r(s.expression,c,e.isExpression),l(s.statements,c,e.isStatement));case 276:return e.updateDefaultClause(s,l(s.statements,c,e.isStatement));case 277:return e.updateHeritageClause(s,l(s.types,c,e.isExpressionWithTypeArguments));case 278:return e.updateCatchClause(s,r(s.variableDeclaration,c,e.isVariableDeclaration),r(s.block,c,e.isBlock));case 279:return e.updatePropertyAssignment(s,r(s.name,c,e.isPropertyName),r(s.initializer,c,e.isExpression));case 280:return e.updateShorthandPropertyAssignment(s,r(s.name,c,e.isIdentifier),r(s.objectAssignmentInitializer,c,e.isExpression));case 281:return e.updateSpreadAssignment(s,r(s.expression,c,e.isExpression));case 282:return e.updateEnumMember(s,r(s.name,c,e.isPropertyName),r(s.initializer,c,e.isExpression));case 288:return e.updateSourceFileNode(s,i(s.statements,c,u));case 319:return e.updatePartiallyEmittedExpression(s,r(s.expression,c,e.isExpression));case 320:return e.updateCommaList(s,l(s.elements,c,e.isExpression));default:return s}}}}(s||(s={})),function(e){function t(e,t,r){return e?t(r,e):r}function r(e,t,r){return e?t(r,e):r}function n(n,i,a,o){if(void 0===n)return i;var s=o?r:e.reduceLeft,c=o||a,u=n.kind;if(u>0&&u<=151)return i;if(u>=167&&u<=186)return i;var l=i;switch(n.kind){case 221:case 223:case 214:case 240:case 318:break;case 152:l=t(n.left,a,l),l=t(n.right,a,l);break;case 153:l=t(n.expression,a,l);break;case 155:l=s(n.decorators,c,l),l=s(n.modifiers,c,l),l=t(n.name,a,l),l=t(n.type,a,l),l=t(n.initializer,a,l);break;case 156:l=t(n.expression,a,l);break;case 157:l=s(n.modifiers,c,l),l=t(n.name,a,l),l=t(n.questionToken,a,l),l=t(n.type,a,l),l=t(n.initializer,a,l);break;case 158:l=s(n.decorators,c,l),l=s(n.modifiers,c,l),l=t(n.name,a,l),l=t(n.type,a,l),l=t(n.initializer,a,l);break;case 160:l=s(n.decorators,c,l),l=s(n.modifiers,c,l),l=t(n.name,a,l),l=s(n.typeParameters,c,l),l=s(n.parameters,c,l),l=t(n.type,a,l),l=t(n.body,a,l);break;case 161:l=s(n.modifiers,c,l),l=s(n.parameters,c,l),l=t(n.body,a,l);break;case 162:l=s(n.decorators,c,l),l=s(n.modifiers,c,l),l=t(n.name,a,l),l=s(n.parameters,c,l),l=t(n.type,a,l),l=t(n.body,a,l);break;case 163:l=s(n.decorators,c,l),l=s(n.modifiers,c,l),l=t(n.name,a,l),l=s(n.parameters,c,l),l=t(n.body,a,l);break;case 188:case 189:l=s(n.elements,c,l);break;case 190:l=t(n.propertyName,a,l),l=t(n.name,a,l),l=t(n.initializer,a,l);break;case 191:l=s(n.elements,c,l);break;case 192:l=s(n.properties,c,l);break;case 193:l=t(n.expression,a,l),l=t(n.name,a,l);break;case 194:l=t(n.expression,a,l),l=t(n.argumentExpression,a,l);break;case 195:case 196:l=t(n.expression,a,l),l=s(n.typeArguments,c,l),l=s(n.arguments,c,l);break;case 197:l=t(n.tag,a,l),l=s(n.typeArguments,c,l),l=t(n.template,a,l);break;case 198:l=t(n.type,a,l),l=t(n.expression,a,l);break;case 200:l=s(n.modifiers,c,l),l=t(n.name,a,l),l=s(n.typeParameters,c,l),l=s(n.parameters,c,l),l=t(n.type,a,l),l=t(n.body,a,l);break;case 201:l=s(n.modifiers,c,l),l=s(n.typeParameters,c,l),l=s(n.parameters,c,l),l=t(n.type,a,l),l=t(n.body,a,l);break;case 199:case 202:case 203:case 204:case 205:case 211:case 212:case 217:l=t(n.expression,a,l);break;case 206:case 207:l=t(n.operand,a,l);break;case 208:l=t(n.left,a,l),l=t(n.right,a,l);break;case 209:l=t(n.condition,a,l),l=t(n.whenTrue,a,l),l=t(n.whenFalse,a,l);break;case 210:l=t(n.head,a,l),l=s(n.templateSpans,c,l);break;case 213:l=s(n.modifiers,c,l),l=t(n.name,a,l),l=s(n.typeParameters,c,l),l=s(n.heritageClauses,c,l),l=s(n.members,c,l);break;case 215:l=t(n.expression,a,l),l=s(n.typeArguments,c,l);break;case 216:l=t(n.expression,a,l),l=t(n.type,a,l);break;case 220:l=t(n.expression,a,l),l=t(n.literal,a,l);break;case 222:l=s(n.statements,c,l);break;case 224:l=s(n.modifiers,c,l),l=t(n.declarationList,a,l);break;case 225:l=t(n.expression,a,l);break;case 226:l=t(n.expression,a,l),l=t(n.thenStatement,a,l),l=t(n.elseStatement,a,l);break;case 227:l=t(n.statement,a,l),l=t(n.expression,a,l);break;case 228:case 235:l=t(n.expression,a,l),l=t(n.statement,a,l);break;case 229:l=t(n.initializer,a,l),l=t(n.condition,a,l),l=t(n.incrementor,a,l),l=t(n.statement,a,l);break;case 230:case 231:l=t(n.initializer,a,l),l=t(n.expression,a,l),l=t(n.statement,a,l);break;case 234:case 238:l=t(n.expression,a,l);break;case 236:l=t(n.expression,a,l),l=t(n.caseBlock,a,l);break;case 237:l=t(n.label,a,l),l=t(n.statement,a,l);break;case 239:l=t(n.tryBlock,a,l),l=t(n.catchClause,a,l),l=t(n.finallyBlock,a,l);break;case 241:l=t(n.name,a,l),l=t(n.type,a,l),l=t(n.initializer,a,l);break;case 242:l=s(n.declarations,c,l);break;case 243:l=s(n.decorators,c,l),l=s(n.modifiers,c,l),l=t(n.name,a,l),l=s(n.typeParameters,c,l),l=s(n.parameters,c,l),l=t(n.type,a,l),l=t(n.body,a,l);break;case 244:l=s(n.decorators,c,l),l=s(n.modifiers,c,l),l=t(n.name,a,l),l=s(n.typeParameters,c,l),l=s(n.heritageClauses,c,l),l=s(n.members,c,l);break;case 247:l=s(n.decorators,c,l),l=s(n.modifiers,c,l),l=t(n.name,a,l),l=s(n.members,c,l);break;case 248:l=s(n.decorators,c,l),l=s(n.modifiers,c,l),l=t(n.name,a,l),l=t(n.body,a,l);break;case 249:l=s(n.statements,c,l);break;case 250:l=s(n.clauses,c,l);break;case 252:l=s(n.decorators,c,l),l=s(n.modifiers,c,l),l=t(n.name,a,l),l=t(n.moduleReference,a,l);break;case 253:l=s(n.decorators,c,l),l=s(n.modifiers,c,l),l=t(n.importClause,a,l),l=t(n.moduleSpecifier,a,l);break;case 254:l=t(n.name,a,l),l=t(n.namedBindings,a,l);break;case 255:l=t(n.name,a,l);break;case 256:case 260:l=s(n.elements,c,l);break;case 257:case 261:l=t(n.propertyName,a,l),l=t(n.name,a,l);break;case 258:l=e.reduceLeft(n.decorators,a,l),l=e.reduceLeft(n.modifiers,a,l),l=t(n.expression,a,l);break;case 259:l=e.reduceLeft(n.decorators,a,l),l=e.reduceLeft(n.modifiers,a,l),l=t(n.exportClause,a,l),l=t(n.moduleSpecifier,a,l);break;case 263:l=t(n.expression,a,l);break;case 264:l=t(n.openingElement,a,l),l=e.reduceLeft(n.children,a,l),l=t(n.closingElement,a,l);break;case 268:l=t(n.openingFragment,a,l),l=e.reduceLeft(n.children,a,l),l=t(n.closingFragment,a,l);break;case 265:case 266:l=t(n.tagName,a,l),l=s(n.typeArguments,a,l),l=t(n.attributes,a,l);break;case 272:l=s(n.properties,c,l);break;case 267:l=t(n.tagName,a,l);break;case 271:l=t(n.name,a,l),l=t(n.initializer,a,l);break;case 273:case 274:l=t(n.expression,a,l);break;case 275:l=t(n.expression,a,l);case 276:l=s(n.statements,c,l);break;case 277:l=s(n.types,c,l);break;case 278:l=t(n.variableDeclaration,a,l),l=t(n.block,a,l);break;case 279:l=t(n.name,a,l),l=t(n.initializer,a,l);break;case 280:l=t(n.name,a,l),l=t(n.objectAssignmentInitializer,a,l);break;case 281:l=t(n.expression,a,l);break;case 282:l=t(n.name,a,l),l=t(n.initializer,a,l);break;case 288:l=s(n.statements,c,l);break;case 319:l=t(n.expression,a,l);break;case 320:l=s(n.elements,c,l)}return l}function i(t){if(void 0===t)return 0;if(536870912&t.transformFlags)return t.transformFlags&~e.getTransformFlagsSubtreeExclusions(t.kind);var r=function(t){if(e.hasModifier(t,2)||e.isTypeNode(t)&&215!==t.kind)return 0;return n(t,0,a,o)}(t);return e.computeTransformFlagsForNode(t,r)}function a(e,t){return e|i(t)}function o(e,t){return e|function(e){if(void 0===e)return 0;for(var t=0,r=0,n=0,a=e;n<a.length;n++){var o=a[n];t|=i(o),r|=-536870913&o.transformFlags}return e.transformFlags=536870912|r,t}(t)}e.reduceEachChild=n,e.mergeLexicalEnvironment=function(t,r){return e.some(r)?e.isNodeArray(t)?e.setTextRange(e.createNodeArray(e.insertStatementsAfterStandardPrologue(t.slice(),r)),t):e.insertStatementsAfterStandardPrologue(t,r):t},e.liftToBlock=function(t){return e.Debug.assert(e.every(t,e.isStatement),"Cannot lift nodes to a Block."),e.singleOrUndefined(t)||e.createBlock(t)},e.aggregateTransformFlags=function(e){return i(e),e}}(s||(s={})),function(e){e.createSourceMapGenerator=function(t,r,n,i,o){var c,u,l=o.extendedDiagnostics?e.performance.createTimer("Source Map","beforeSourcemap","afterSourcemap"):e.performance.nullTimer,_=l.enter,d=l.exit,p=[],f=[],m=e.createMap(),g=[],y="",h=0,v=0,b=0,x=0,D=0,S=0,T=!1,E=0,C=0,k=0,N=0,A=0,F=0,P=!1,w=!1,I=!1;return{getSources:function(){return p},addSource:O,setSourceContent:M,addName:L,addMapping:R,appendSourceMap:function(t,r,n,i,o,s){e.Debug.assert(t>=E,"generatedLine cannot backtrack"),e.Debug.assert(r>=0,"generatedCharacter cannot be negative"),_();for(var c,u=[],l=a(n.mappings),p=l.next();!p.done;p=l.next()){var f=p.value;if(s&&(f.generatedLine>s.line||f.generatedLine===s.line&&f.generatedCharacter>s.character))break;if(!o||!(f.generatedLine<o.line||o.line===f.generatedLine&&f.generatedCharacter<o.character)){var m=void 0,g=void 0,y=void 0,h=void 0;if(void 0!==f.sourceIndex){if(void 0===(m=u[f.sourceIndex])){var v=n.sources[f.sourceIndex],b=n.sourceRoot?e.combinePaths(n.sourceRoot,v):v,x=e.combinePaths(e.getDirectoryPath(i),b);u[f.sourceIndex]=m=O(x),n.sourcesContent&&"string"==typeof n.sourcesContent[f.sourceIndex]&&M(m,n.sourcesContent[f.sourceIndex])}g=f.sourceLine,y=f.sourceCharacter,n.names&&void 0!==f.nameIndex&&(c||(c=[]),void 0===(h=c[f.nameIndex])&&(c[f.nameIndex]=h=L(n.names[f.nameIndex])))}var D=f.generatedLine-(o?o.line:0),S=D+t,T=o&&o.line===f.generatedLine?f.generatedCharacter-o.character:f.generatedCharacter;R(S,0===D?T+r:T,m,g,y,h)}}d()},toJSON:j,toString:function(){return JSON.stringify(j())}};function O(r){_();var n=e.getRelativePathToDirectoryOrUrl(i,r,t.getCurrentDirectory(),t.getCanonicalFileName,!0),a=m.get(n);return void 0===a&&(a=f.length,f.push(n),p.push(r),m.set(n,a)),d(),a}function M(e,t){if(_(),null!==t){for(c||(c=[]);c.length<e;)c.push(null);c[e]=t}d()}function L(t){_(),u||(u=e.createMap());var r=u.get(t);return void 0===r&&(r=g.length,g.push(t),u.set(t,r)),d(),r}function R(t,r,n,i,a,o){e.Debug.assert(t>=E,"generatedLine cannot backtrack"),e.Debug.assert(r>=0,"generatedCharacter cannot be negative"),e.Debug.assert(void 0===n||n>=0,"sourceIndex cannot be negative"),e.Debug.assert(void 0===i||i>=0,"sourceLine cannot be negative"),e.Debug.assert(void 0===a||a>=0,"sourceCharacter cannot be negative"),_(),(function(e,t){return!P||E!==e||C!==t}(t,r)||function(e,t,r){return void 0!==e&&void 0!==t&&void 0!==r&&k===e&&(N>t||N===t&&A>r)}(n,i,a))&&(B(),E=t,C=r,w=!1,I=!1,P=!0),void 0!==n&&void 0!==i&&void 0!==a&&(k=n,N=i,A=a,w=!0,void 0!==o&&(F=o,I=!0)),d()}function B(){if(P&&(!T||h!==E||v!==C||b!==k||x!==N||D!==A||S!==F)){if(_(),h<E)do{y+=";",h++,v=0}while(h<E);else e.Debug.assertEqual(h,E,"generatedLine cannot backtrack"),T&&(y+=",");y+=s(C-v),v=C,w&&(y+=s(k-b),b=k,y+=s(N-x),x=N,y+=s(A-D),D=A,I&&(y+=s(F-S),S=F)),T=!0,d()}}function j(){return B(),{version:3,file:r,sourceRoot:n,sources:f,names:g,mappings:y,sourcesContent:c}}};var t=/^\/\/[@#] source[M]appingURL=(.+)\s*$/,r=/^\s*(\/\/[@#] .*)?$/;function n(e){return"string"==typeof e||null===e}function i(t){return null!==t&&"object"===f(t)&&3===t.version&&"string"==typeof t.file&&"string"==typeof t.mappings&&e.isArray(t.sources)&&e.every(t.sources,e.isString)&&(void 0===t.sourceRoot||null===t.sourceRoot||"string"==typeof t.sourceRoot)&&(void 0===t.sourcesContent||null===t.sourcesContent||e.isArray(t.sourcesContent)&&e.every(t.sourcesContent,n))&&(void 0===t.names||null===t.names||e.isArray(t.names)&&e.every(t.names,e.isString))}function a(e){var t,r=!1,n=0,i=0,a=0,o=0,s=0,c=0,u=0;return{get pos(){return n},get error(){return t},get state(){return l(!0,!0)},next:function(){for(;!r&&n<e.length;){var t=e.charCodeAt(n);if(59!==t){if(44!==t){var d=!1,y=!1;if(a+=g(),f())return _();if(a<0)return p("Invalid generatedCharacter found");if(!m()){if(d=!0,o+=g(),f())return _();if(o<0)return p("Invalid sourceIndex found");if(m())return p("Unsupported Format: No entries after sourceIndex");if(s+=g(),f())return _();if(s<0)return p("Invalid sourceLine found");if(m())return p("Unsupported Format: No entries after sourceLine");if(c+=g(),f())return _();if(c<0)return p("Invalid sourceCharacter found");if(!m()){if(y=!0,u+=g(),f())return _();if(u<0)return p("Invalid nameIndex found");if(!m())return p("Unsupported Error Format: Entries after nameIndex")}}return{value:l(d,y),done:r}}n++}else i++,a=0,n++}return _()}};function l(e,t){return{generatedLine:i,generatedCharacter:a,sourceIndex:e?o:void 0,sourceLine:e?s:void 0,sourceCharacter:e?c:void 0,nameIndex:t?u:void 0}}function _(){return r=!0,{value:void 0,done:!0}}function d(e){void 0===t&&(t=e)}function p(e){return d(e),_()}function f(){return void 0!==t}function m(){return n===e.length||44===e.charCodeAt(n)||59===e.charCodeAt(n)}function g(){for(var t,r=!0,i=0,a=0;r;n++){if(n>=e.length)return d("Error in decoding base64VLQFormatDecode, past the mapping string"),-1;var o=(t=e.charCodeAt(n))>=65&&t<=90?t-65:t>=97&&t<=122?t-97+26:t>=48&&t<=57?t-48+52:43===t?62:47===t?63:-1;if(-1===o)return d("Invalid character in VLQ"),-1;r=0!=(32&o),a|=(31&o)<<i,i+=5}return 0==(1&a)?a>>=1:a=-(a>>=1),a}}function o(e){return void 0!==e.sourceIndex&&void 0!==e.sourceLine&&void 0!==e.sourceCharacter}function s(t){t<0?t=1+(-t<<1):t<<=1;var r,n="";do{var i=31&t;(t>>=5)>0&&(i|=32),n+=String.fromCharCode((r=i)>=0&&r<26?65+r:r>=26&&r<52?97+r-26:r>=52&&r<62?48+r-52:62===r?43:63===r?47:e.Debug.fail(r+": not a base64 value"))}while(t>0);return n}function c(e){return void 0!==e.sourceIndex&&void 0!==e.sourcePosition}function u(e,t){return e.generatedPosition===t.generatedPosition&&e.sourceIndex===t.sourceIndex&&e.sourcePosition===t.sourcePosition}function l(t,r){return e.Debug.assert(t.sourceIndex===r.sourceIndex),e.compareValues(t.sourcePosition,r.sourcePosition)}function _(t,r){return e.compareValues(t.generatedPosition,r.generatedPosition)}function d(e){return e.sourcePosition}function p(e){return e.generatedPosition}e.getLineInfo=function(e,t){return{getLineCount:function(){return t.length},getLineText:function(r){return e.substring(t[r],t[r+1])}}},e.tryGetSourceMappingURL=function(e){for(var n=e.getLineCount()-1;n>=0;n--){var i=e.getLineText(n),a=t.exec(i);if(a)return a[1];if(!i.match(r))break}},e.isRawSourceMap=i,e.tryParseRawSourceMap=function(e){try{var t=JSON.parse(e);if(i(t))return t}catch(e){}},e.decodeMappings=a,e.sameMapping=function(e,t){return e===t||e.generatedLine===t.generatedLine&&e.generatedCharacter===t.generatedCharacter&&e.sourceIndex===t.sourceIndex&&e.sourceLine===t.sourceLine&&e.sourceCharacter===t.sourceCharacter&&e.nameIndex===t.nameIndex},e.isSourceMapping=o,e.createDocumentPositionMapper=function(t,r,n){var i,s,f,m=e.getDirectoryPath(n),g=r.sourceRoot?e.getNormalizedAbsolutePath(r.sourceRoot,m):m,y=e.getNormalizedAbsolutePath(r.file,m),h=t.getSourceFileLike(y),v=r.sources.map((function(t){return e.getNormalizedAbsolutePath(t,g)})),b=e.createMapFromEntries(v.map((function(e,r){return[t.getCanonicalFileName(e),r]})));return{getSourcePosition:function(t){var r=T();if(!e.some(r))return t;var n=e.binarySearchKey(r,t.pos,p,e.compareValues);n<0&&(n=~n);var i=r[n];if(void 0===i||!c(i))return t;return{fileName:v[i.sourceIndex],pos:i.sourcePosition}},getGeneratedPosition:function(r){var n=b.get(t.getCanonicalFileName(r.fileName));if(void 0===n)return r;var i=S(n);if(!e.some(i))return r;var a=e.binarySearchKey(i,r.pos,d,e.compareValues);a<0&&(a=~a);var o=i[a];if(void 0===o||o.sourceIndex!==n)return r;return{fileName:y,pos:o.generatedPosition}}};function x(n){var i,a,s=void 0!==h?e.getPositionOfLineAndCharacter(h,n.generatedLine,n.generatedCharacter,!0):-1;if(o(n)){var c=t.getSourceFileLike(v[n.sourceIndex]);i=r.sources[n.sourceIndex],a=void 0!==c?e.getPositionOfLineAndCharacter(c,n.sourceLine,n.sourceCharacter,!0):-1}return{generatedPosition:s,source:i,sourceIndex:n.sourceIndex,sourcePosition:a,nameIndex:n.nameIndex}}function D(){if(void 0===i){var n=a(r.mappings),o=e.arrayFrom(n,x);void 0!==n.error?(t.log&&t.log("Encountered error while decoding sourcemap: "+n.error),i=e.emptyArray):i=o}return i}function S(t){if(void 0===f){for(var r=[],n=0,i=D();n<i.length;n++){var a=i[n];if(c(a)){var o=r[a.sourceIndex];o||(r[a.sourceIndex]=o=[]),o.push(a)}}f=r.map((function(t){return e.sortAndDeduplicate(t,l,u)}))}return f[t]}function T(){if(void 0===s){for(var t=[],r=0,n=D();r<n.length;r++){var i=n[r];t.push(i)}s=e.sortAndDeduplicate(t,_,u)}return s}},e.identitySourceMapConsumer={getSourcePosition:e.identity,getGeneratedPosition:e.identity}}(s||(s={})),function(e){function t(t){return(t=e.getOriginalNode(t))?e.getNodeId(t):0}function r(e){return void 0!==e.propertyName&&"default"===e.propertyName.escapedText}function n(t){if(e.getNamespaceDeclarationNode(t))return!0;var n=t.importClause&&t.importClause.namedBindings;if(!n)return!1;if(!e.isNamedImports(n))return!1;for(var i=0,a=0,o=n.elements;a<o.length;a++){r(o[a])&&i++}return i>0&&i!==n.elements.length||!!(n.elements.length-i)&&e.isDefaultImport(t)}function i(t){return!n(t)&&(e.isDefaultImport(t)||!!t.importClause&&e.isNamedImports(t.importClause.namedBindings)&&function(t){return!!t&&(!!e.isNamedImports(t)&&e.some(t.elements,r))}(t.importClause.namedBindings))}function a(t,r,n){if(e.isBindingPattern(t.name))for(var i=0,o=t.name.elements;i<o.length;i++){var s=o[i];e.isOmittedExpression(s)||(n=a(s,r,n))}else if(!e.isGeneratedIdentifier(t.name)){var c=e.idText(t.name);r.get(c)||(r.set(c,!0),n=e.append(n,t.name))}return n}function o(e,t,r){var n=e[t];return n?n.push(r):e[t]=n=[r],n}function s(t){return e.isStringLiteralLike(t)||8===t.kind||e.isKeyword(t.kind)||e.isIdentifier(t)}e.getOriginalNodeId=t,e.chainBundle=function(t){return function(r){return 288===r.kind?t(r):function(r){return e.createBundle(e.map(r.sourceFiles,t),r.prepends)}(r)}},e.getImportNeedsImportStarHelper=n,e.getImportNeedsImportDefaultHelper=i,e.collectExternalModuleInfo=function(r,s,c){for(var u,l,_=[],d=e.createMultiMap(),p=[],f=e.createMap(),m=!1,g=!1,y=!1,h=!1,v=0,b=r.statements;v<b.length;v++){var x=b[v];switch(x.kind){case 253:_.push(x),!y&&n(x)&&(y=!0),!h&&i(x)&&(h=!0);break;case 252:263===x.moduleReference.kind&&_.push(x);break;case 259:if(x.moduleSpecifier)x.exportClause?_.push(x):(_.push(x),g=!0);else for(var D=0,S=x.exportClause.elements;D<S.length;D++){var T=S[D];if(!f.get(e.idText(T.name))){var E=T.propertyName||T.name;d.add(e.idText(E),T),(N=s.getReferencedImportDeclaration(E)||s.getReferencedValueDeclaration(E))&&o(p,t(N),T.name),f.set(e.idText(T.name),!0),u=e.append(u,T.name)}}break;case 258:x.isExportEquals&&!l&&(l=x);break;case 224:if(e.hasModifier(x,1))for(var C=0,k=x.declarationList.declarations;C<k.length;C++){var N;u=a(N=k[C],f,u)}break;case 243:if(e.hasModifier(x,1))if(e.hasModifier(x,512))m||(o(p,t(x),e.getDeclarationName(x)),m=!0);else{E=x.name;f.get(e.idText(E))||(o(p,t(x),E),f.set(e.idText(E),!0),u=e.append(u,E))}break;case 244:if(e.hasModifier(x,1))if(e.hasModifier(x,512))m||(o(p,t(x),e.getDeclarationName(x)),m=!0);else(E=x.name)&&!f.get(e.idText(E))&&(o(p,t(x),E),f.set(e.idText(E),!0),u=e.append(u,E))}}var A=e.createExternalHelpersImportDeclarationIfNeeded(r,c,g,y,h);return A&&_.unshift(A),{externalImports:_,exportSpecifiers:d,exportEquals:l,hasExportStarsToExportValues:g,exportedBindings:p,exportedNames:u,externalHelpersImportDeclaration:A}},e.isSimpleCopiableExpression=s,e.isSimpleInlineableExpression=function(t){return!e.isIdentifier(t)&&s(t)||e.isWellKnownSymbolSyntactically(t)},e.addPrologueDirectivesAndInitialSuperCall=function(t,r,n){if(t.body){var i=t.body.statements,a=e.addPrologue(r,i,!1,n);if(a===i.length)return a;var o=i[a];return 225===o.kind&&e.isSuperCall(o.expression)?(r.push(e.visitNode(o,n,e.isStatement)),a+1):a}return 0},e.helperString=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return function(r){for(var n="",i=0;i<t.length;i++)n+=e[i],n+=r(t[i]);return n+=e[e.length-1]}},e.getProperties=function(t,r,n){return e.filter(t.members,(function(t){return function(t,r,n){return e.isPropertyDeclaration(t)&&(!!t.initializer||!r)&&e.hasStaticModifier(t)===n}(t,r,n)}))},e.isInitializedProperty=function(t,r){return e.isPropertyDeclaration(t)&&(!!t.initializer||!r)}}(s||(s={})),function(e){function t(r,n){var i=e.getTargetOfBindingOrAssignmentElement(r);return e.isBindingOrAssignmentPattern(i)?function(r,n){for(var i=e.getElementsOfBindingOrAssignmentPattern(r),a=0,o=i;a<o.length;a++){if(t(o[a],n))return!0}return!1}(i,n):!!e.isIdentifier(i)&&i.escapedText===n}function r(t,a,o,s,c){if(!c){var u=e.visitNode(e.getInitializerOfBindingOrAssignmentElement(a),t.visitor,e.isExpression);u?o=o?function(t,r,n,a){return r=i(t,r,!0,a),e.createConditional(e.createTypeCheck(r,"undefined"),n,r)}(t,o,u,s):u:o||(o=e.createVoidZero())}var l=e.getTargetOfBindingOrAssignmentElement(a);e.isObjectBindingOrAssignmentPattern(l)?function(t,a,o,s,c){var u,l,d=e.getElementsOfBindingOrAssignmentPattern(o),p=d.length;if(1!==p){var f=!e.isDeclarationBindingElement(a)||0!==p;s=i(t,s,f,c)}for(var m=0;m<p;m++){var g=d[m];if(e.getRestIndicatorOfBindingOrAssignmentElement(g)){if(m===p-1){u&&(t.emitBindingOrAssignment(t.createObjectBindingOrAssignmentPattern(u),s,c,o),u=void 0);h=_(t.context,s,d,l,o);r(t,g,h,g)}}else{var y=e.getPropertyNameOfBindingOrAssignmentElement(g);if(!(t.level>=1)||12288&g.transformFlags||12288&e.getTargetOfBindingOrAssignmentElement(g).transformFlags||e.isComputedPropertyName(y)){u&&(t.emitBindingOrAssignment(t.createObjectBindingOrAssignmentPattern(u),s,c,o),u=void 0);var h=n(t,s,y);e.isComputedPropertyName(y)&&(l=e.append(l,h.argumentExpression)),r(t,g,h,g)}else u=e.append(u,g)}}u&&t.emitBindingOrAssignment(t.createObjectBindingOrAssignmentPattern(u),s,c,o)}(t,a,l,o,s):e.isArrayBindingOrAssignmentPattern(l)?function(t,n,a,o,s){var c,u,l=e.getElementsOfBindingOrAssignmentPattern(a),_=l.length;if(t.level<1&&t.downlevelIteration)o=i(t,e.createReadHelper(t.context,o,_>0&&e.getRestIndicatorOfBindingOrAssignmentElement(l[_-1])?void 0:_,s),!1,s);else if(1!==_&&(t.level<1||0===_)||e.every(l,e.isOmittedExpression)){var d=!e.isDeclarationBindingElement(n)||0!==_;o=i(t,o,d,s)}for(var p=0;p<_;p++){var f=l[p];if(t.level>=1)if(8192&f.transformFlags){var m=e.createTempVariable(void 0);t.hoistTempVariables&&t.context.hoistVariableDeclaration(m),u=e.append(u,[m,f]),c=e.append(c,t.createArrayBindingOrAssignmentElement(m))}else c=e.append(c,f);else{if(e.isOmittedExpression(f))continue;if(e.getRestIndicatorOfBindingOrAssignmentElement(f)){if(p===_-1){g=e.createArraySlice(o,p);r(t,f,g,f)}}else{var g=e.createElementAccess(o,p);r(t,f,g,f)}}}c&&t.emitBindingOrAssignment(t.createArrayBindingOrAssignmentPattern(c),o,s,a);if(u)for(var y=0,h=u;y<h.length;y++){var v=h[y],b=v[0];f=v[1];r(t,f,b,f)}}(t,a,l,o,s):t.emitBindingOrAssignment(l,o,s,a)}function n(t,r,n){if(e.isComputedPropertyName(n)){var a=i(t,e.visitNode(n.expression,t.visitor),!1,n);return e.createElementAccess(r,a)}if(e.isStringOrNumericLiteralLike(n))return(a=e.getSynthesizedClone(n)).text=a.text,e.createElementAccess(r,a);var o=e.createIdentifier(e.idText(n));return e.createPropertyAccess(r,o)}function i(t,r,n,i){if(e.isIdentifier(r)&&n)return r;var a=e.createTempVariable(void 0);return t.hoistTempVariables?(t.context.hoistVariableDeclaration(a),t.emitExpression(e.setTextRange(e.createAssignment(a,r),i))):t.emitBindingOrAssignment(a,r,i,void 0),a}function a(t){return e.Debug.assertEachNode(t,e.isArrayBindingElement),e.createArrayBindingPattern(t)}function o(t){return e.createArrayLiteral(e.map(t,e.convertToArrayAssignmentElement))}function s(t){return e.Debug.assertEachNode(t,e.isBindingElement),e.createObjectBindingPattern(t)}function c(t){return e.createObjectLiteral(e.map(t,e.convertToObjectAssignmentElement))}function u(t){return e.createBindingElement(void 0,void 0,t)}function l(e){return e}function _(t,r,n,i,a){t.requestEmitHelper(e.restHelper);for(var o=[],s=0,c=0;c<n.length-1;c++){var u=e.getPropertyNameOfBindingOrAssignmentElement(n[c]);if(u)if(e.isComputedPropertyName(u)){var l=i[s];s++,o.push(e.createConditional(e.createTypeCheck(l,"symbol"),l,e.createAdd(l,e.createLiteral(""))))}else o.push(e.createLiteral(u))}return e.createCall(e.getUnscopedHelperName("__rest"),void 0,[r,e.setTextRange(e.createArrayLiteral(o),a)])}!function(e){e[e.All=0]="All",e[e.ObjectRest=1]="ObjectRest"}(e.FlattenLevel||(e.FlattenLevel={})),e.flattenDestructuringAssignment=function(n,a,s,u,_,d){var p,f,m=n;if(e.isDestructuringAssignment(n))for(p=n.right;e.isEmptyArrayLiteral(n.left)||e.isEmptyObjectLiteral(n.left);){if(!e.isDestructuringAssignment(p))return e.visitNode(p,a,e.isExpression);m=n=p,p=n.right}var g={context:s,level:u,downlevelIteration:!!s.getCompilerOptions().downlevelIteration,hoistTempVariables:!0,emitExpression:y,emitBindingOrAssignment:function(t,r,n,i){e.Debug.assertNode(t,d?e.isIdentifier:e.isExpression);var o=d?d(t,r,n):e.setTextRange(e.createAssignment(e.visitNode(t,a,e.isExpression),r),n);o.original=i,y(o)},createArrayBindingOrAssignmentPattern:o,createObjectBindingOrAssignmentPattern:c,createArrayBindingOrAssignmentElement:l,visitor:a};if(p&&(p=e.visitNode(p,a,e.isExpression),e.isIdentifier(p)&&t(n,p.escapedText)?p=i(g,p,!1,m):_?p=i(g,p,!0,m):e.nodeIsSynthesized(n)&&(m=p)),r(g,n,p,m,e.isDestructuringAssignment(n)),p&&_){if(!e.some(f))return p;f.push(p)}return e.aggregateTransformFlags(e.inlineExpressions(f))||e.createOmittedExpression();function y(t){e.setEmitFlags(t,64),e.aggregateTransformFlags(t),f=e.append(f,t)}},e.flattenDestructuringBinding=function(n,o,c,l,_,d,p){var f;void 0===d&&(d=!1);var m=[],g=[],y={context:c,level:l,downlevelIteration:!!c.getCompilerOptions().downlevelIteration,hoistTempVariables:d,emitExpression:function(t){f=e.append(f,t)},emitBindingOrAssignment:F,createArrayBindingOrAssignmentPattern:a,createObjectBindingOrAssignmentPattern:s,createArrayBindingOrAssignmentElement:u,visitor:o};if(e.isVariableDeclaration(n)){var h=e.getInitializerOfBindingOrAssignmentElement(n);h&&e.isIdentifier(h)&&t(n,h.escapedText)&&(h=i(y,h,!1,h),n=e.updateVariableDeclaration(n,n.name,n.type,h))}if(r(y,n,_,n,p),f){var v=e.createTempVariable(void 0);if(d){var b=e.inlineExpressions(f);f=void 0,F(v,b,void 0,void 0)}else{c.hoistVariableDeclaration(v);var x=e.last(m);x.pendingExpressions=e.append(x.pendingExpressions,e.createAssignment(v,x.value)),e.addRange(x.pendingExpressions,f),x.value=v}}for(var D=0,S=m;D<S.length;D++){var T=S[D],E=T.pendingExpressions,C=T.name,k=(b=T.value,T.location),N=T.original,A=e.createVariableDeclaration(C,void 0,E?e.inlineExpressions(e.append(E,b)):b);A.original=N,e.setTextRange(A,k),e.isIdentifier(C)&&e.setEmitFlags(A,64),e.aggregateTransformFlags(A),g.push(A)}return g;function F(t,r,n,i){e.Debug.assertNode(t,e.isBindingName),f&&(r=e.inlineExpressions(e.append(f,r)),f=void 0),m.push({pendingExpressions:f,name:t,value:r,location:n,original:i})}},e.restHelper={name:"typescript:rest",importName:"__rest",scoped:!1,text:'\n var __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === "function")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n };'}}(s||(s={})),function(e){var t,r;function n(t,r,n,i,a,o){var s=[];return s.push(e.createArrayLiteral(r,!0)),s.push(n),i&&(s.push(i),a&&s.push(a)),t.requestEmitHelper(e.decorateHelper),e.setTextRange(e.createCall(e.getUnscopedHelperName("__decorate"),void 0,s),o)}function i(t,r,n){return t.requestEmitHelper(e.metadataHelper),e.createCall(e.getUnscopedHelperName("__metadata"),void 0,[e.createLiteral(r),n])}function a(t,r,n,i){return t.requestEmitHelper(e.paramHelper),e.setTextRange(e.createCall(e.getUnscopedHelperName("__param"),void 0,[e.createLiteral(n),r]),i)}!function(e){e[e.ClassAliases=1]="ClassAliases",e[e.NamespaceExports=2]="NamespaceExports",e[e.NonQualifiedEnumMembers=8]="NonQualifiedEnumMembers"}(t||(t={})),function(e){e[e.None=0]="None",e[e.HasStaticInitializedProperties=1]="HasStaticInitializedProperties",e[e.HasConstructorDecorators=2]="HasConstructorDecorators",e[e.HasMemberDecorators=4]="HasMemberDecorators",e[e.IsExportOfNamespace=8]="IsExportOfNamespace",e[e.IsNamedExternalExport=16]="IsNamedExternalExport",e[e.IsDefaultExternalExport=32]="IsDefaultExternalExport",e[e.IsDerivedClass=64]="IsDerivedClass",e[e.UseImmediatelyInvokedFunctionExpression=128]="UseImmediatelyInvokedFunctionExpression",e[e.HasAnyDecorators=6]="HasAnyDecorators",e[e.NeedsName=5]="NeedsName",e[e.MayNeedImmediatelyInvokedFunctionExpression=7]="MayNeedImmediatelyInvokedFunctionExpression",e[e.IsExported=56]="IsExported"}(r||(r={})),e.transformTypeScript=function(t){var r,o,s,c,u,l,_,d,p,f,m=t.startLexicalEnvironment,g=t.resumeLexicalEnvironment,y=t.endLexicalEnvironment,h=t.hoistVariableDeclaration,v=t.getEmitResolver(),b=t.getCompilerOptions(),x=e.getStrictOptionValue(b,"strictNullChecks"),D=e.getEmitScriptTarget(b),S=e.getEmitModuleKind(b),T=t.onEmitNode,E=t.onSubstituteNode;return t.onEmitNode=function(t,n,i){var a=f,o=r;e.isSourceFile(n)&&(r=n);2&d&&function(t){return 248===e.getOriginalNode(t).kind}(n)&&(f|=2);8&d&&function(t){return 247===e.getOriginalNode(t).kind}(n)&&(f|=8);T(t,n,i),f=a,r=o},t.onSubstituteNode=function(t,r){if(r=E(t,r),1===t)return function(t){switch(t.kind){case 75:return function(t){return function(t){if(1&d&&33554432&v.getNodeCheckFlags(t)){var r=v.getReferencedValueDeclaration(t);if(r){var n=p[r.id];if(n){var i=e.getSynthesizedClone(n);return e.setSourceMapRange(i,t),e.setCommentRange(i,t),i}}}return}(t)||Oe(t)||t}(t);case 193:case 194:return function(e){return Me(e)}(t)}return t}(r);if(e.isShorthandPropertyAssignment(r))return function(t){if(2&d){var r=t.name,n=Oe(r);if(n){if(t.objectAssignmentInitializer){var i=e.createAssignment(n,t.objectAssignmentInitializer);return e.setTextRange(e.createPropertyAssignment(r,i),t)}return e.setTextRange(e.createPropertyAssignment(r,n),t)}}return t}(r);return r},t.enableSubstitution(193),t.enableSubstitution(194),function(t){if(289===t.kind)return function(t){return e.createBundle(t.sourceFiles.map(C),e.mapDefined(t.prepends,(function(t){return 291===t.kind?e.createUnparsedSourceFile(t,"js"):t})))}(t);return C(t)};function C(n){if(n.isDeclarationFile)return n;r=n;var i=k(n,B);return e.addEmitHelpers(i,t.readEmitHelpers()),r=void 0,i}function k(t,r){var n=c,i=u,a=l,o=_;!function(t){switch(t.kind){case 288:case 250:case 249:case 222:c=t,u=void 0,l=void 0;break;case 244:case 243:if(e.hasModifier(t,2))break;t.name?me(t):e.Debug.assert(244===t.kind||e.hasModifier(t,512)),e.isClassDeclaration(t)&&(u=t)}}(t);var s=r(t);return c!==n&&(l=a),c=n,u=i,_=o,s}function N(e){return k(e,A)}function A(e){return 1&e.transformFlags?R(e):e}function F(e){return k(e,P)}function P(r){switch(r.kind){case 253:case 252:case 258:case 259:return function(r){if(e.getParseTreeNode(r)!==r)return 1&r.transformFlags?e.visitEachChild(r,N,t):r;switch(r.kind){case 253:return function(t){if(!t.importClause)return t;var r=e.visitNode(t.importClause,ve,e.isImportClause);return r?e.updateImportDeclaration(t,void 0,void 0,r,t.moduleSpecifier):void 0}(r);case 252:return Te(r);case 258:return function(r){return v.isValueAliasDeclaration(r)?e.visitEachChild(r,N,t):void 0}(r);case 259:return function(t){if(!t.exportClause)return b.isolatedModules||v.moduleExportsSomeValue(t.moduleSpecifier)?t:void 0;if(!v.isValueAliasDeclaration(t))return;var r=e.visitNode(t.exportClause,De,e.isNamedExports);return r?e.updateExportDeclaration(t,void 0,void 0,r,t.moduleSpecifier):void 0}(r);default:e.Debug.fail("Unhandled ellided statement")}}(r);default:return A(r)}}function w(e){return k(e,I)}function I(t){if(259!==t.kind&&253!==t.kind&&254!==t.kind&&(252!==t.kind||263!==t.moduleReference.kind))return 1&t.transformFlags||e.hasModifier(t,1)?R(t):t}function O(e){return k(e,M)}function M(t){switch(t.kind){case 161:return ue(t);case 158:return ce(t);case 166:case 162:case 163:case 160:return A(t);case 221:return t;default:return e.Debug.failBadSyntaxKind(t)}}function L(t){if(!(2270&e.modifierToFlag(t.kind)||o&&88===t.kind))return t}function R(i){if(e.isStatement(i)&&e.hasModifier(i,2))return e.createNotEmittedStatement(i);switch(i.kind){case 88:case 83:return o?void 0:i;case 118:case 116:case 117:case 121:case 80:case 129:case 137:case 173:case 174:case 175:case 176:case 172:case 167:case 154:case 124:case 147:case 127:case 142:case 139:case 136:case 109:case 143:case 170:case 169:case 171:case 168:case 177:case 178:case 179:case 181:case 182:case 183:case 184:case 185:case 186:case 166:case 156:case 246:return;case 158:return ce(i);case 251:return;case 161:return ue(i);case 245:return e.createNotEmittedStatement(i);case 244:return function(i){if(!(J(i)||o&&e.hasModifier(i,1)))return e.visitEachChild(i,N,t);var a=e.getProperties(i,!0,!0),s=function(t,r){var n=0;e.some(r)&&(n|=1);var i=e.getEffectiveBaseTypeNode(t);i&&99!==e.skipOuterExpressions(i.expression).kind&&(n|=64);(function(t){if(t.decorators&&t.decorators.length>0)return!0;var r=e.getFirstConstructorWithBody(t);if(r)return e.forEach(r.parameters,j);return!1})(t)&&(n|=2);e.childIsDecorated(t)&&(n|=4);Ee(t)?n|=8:!function(t){return Ce(t)&&e.hasModifier(t,512)}(t)?ke(t)&&(n|=16):n|=32;D<=1&&7&n&&(n|=128);return n}(i,a);128&s&&t.startLexicalEnvironment();var c=i.name||(5&s?e.getGeneratedNameForNode(i):void 0),u=2&s?function(r,n){var i=e.moveRangePastDecorators(r),a=function(r){if(16777216&v.getNodeCheckFlags(r)){0==(1&d)&&(d|=1,t.enableSubstitution(75),p=[]);var n=e.createUniqueName(r.name&&!e.isGeneratedIdentifier(r.name)?e.idText(r.name):"default");return p[e.getOriginalNodeId(r)]=n,h(n),n}}(r),o=e.getLocalName(r,!1,!0),s=e.visitNodes(r.heritageClauses,N,e.isHeritageClause),c=z(r),u=e.createClassExpression(void 0,n,void 0,s,c);e.aggregateTransformFlags(u),e.setOriginalNode(u,r),e.setTextRange(u,i);var l=e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(o,void 0,a?e.createAssignment(a,u):u)],1));return e.setOriginalNode(l,r),e.setTextRange(l,i),e.setCommentRange(l,r),l}(i,c):function(t,r,n){var i=128&n?void 0:e.visitNodes(t.modifiers,L,e.isModifier),a=e.createClassDeclaration(void 0,i,r,void 0,e.visitNodes(t.heritageClauses,N,e.isHeritageClause),z(t)),o=e.getEmitFlags(t);1&n&&(o|=32);return e.aggregateTransformFlags(a),e.setTextRange(a,t),e.setOriginalNode(a,t),e.setEmitFlags(a,o),a}(i,c,s),l=[u];if(H(l,i,!1),H(l,i,!0),function(r,i){var a=function(r){var i=function(t){var r=t.decorators,n=q(e.getFirstConstructorWithBody(t));if(!r&&!n)return;return{decorators:r,parameters:n}}(r),a=G(r,r,i);if(!a)return;var o=p&&p[e.getOriginalNodeId(r)],s=e.getLocalName(r,!1,!0),c=n(t,a,s),u=e.createAssignment(s,o?e.createAssignment(o,c):c);return e.setEmitFlags(u,1536),e.setSourceMapRange(u,e.moveRangePastDecorators(r)),u}(i);a&&r.push(e.setOriginalNode(e.createExpressionStatement(a),i))}(l,i),128&s){var _=e.createTokenRange(e.skipTrivia(r.text,i.members.end),19),f=e.getInternalName(i),m=e.createPartiallyEmittedExpression(f);m.end=_.end,e.setEmitFlags(m,1536);var g=e.createReturn(m);g.pos=_.pos,e.setEmitFlags(g,1920),l.push(g),e.insertStatementsAfterStandardPrologue(l,t.endLexicalEnvironment());var y=e.createImmediatelyInvokedArrowFunction(l);e.setEmitFlags(y,33554432);var b=e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(e.getLocalName(i,!1,!1),void 0,y)]));e.setOriginalNode(b,i),e.setCommentRange(b,i),e.setSourceMapRange(b,e.moveRangePastDecorators(i)),e.startOnNewLine(b),l=[b]}8&s?Ae(l,i):(128&s||2&s)&&(32&s?l.push(e.createExportDefault(e.getLocalName(i,!1,!0))):16&s&&l.push(e.createExternalModuleExport(e.getLocalName(i,!1,!0))));l.length>1&&(l.push(e.createEndOfDeclarationMarker(i)),e.setEmitFlags(u,4194304|e.getEmitFlags(u)));return e.singleOrMany(l)}(i);case 213:return function(r){if(!J(r))return e.visitEachChild(r,N,t);var n=e.createClassExpression(void 0,r.name,void 0,e.visitNodes(r.heritageClauses,N,e.isHeritageClause),z(r));return e.aggregateTransformFlags(n),e.setOriginalNode(n,r),e.setTextRange(n,r),n}(i);case 277:return function(r){if(112===r.token)return;return e.visitEachChild(r,N,t)}(i);case 215:return function(t){return e.updateExpressionWithTypeArguments(t,void 0,e.visitNode(t.expression,N,e.isLeftHandSideExpression))}(i);case 160:return function(r){if(!se(r))return;var n=e.updateMethod(r,void 0,e.visitNodes(r.modifiers,L,e.isModifier),r.asteriskToken,oe(r),void 0,void 0,e.visitParameterList(r.parameters,N,t),void 0,e.visitFunctionBody(r.body,N,t));n!==r&&(e.setCommentRange(n,r),e.setSourceMapRange(n,e.moveRangePastDecorators(r)));return n}(i);case 162:return function(r){if(!_e(r))return;var n=e.updateGetAccessor(r,void 0,e.visitNodes(r.modifiers,L,e.isModifier),oe(r),e.visitParameterList(r.parameters,N,t),void 0,e.visitFunctionBody(r.body,N,t)||e.createBlock([]));n!==r&&(e.setCommentRange(n,r),e.setSourceMapRange(n,e.moveRangePastDecorators(r)));return n}(i);case 163:return function(r){if(!_e(r))return;var n=e.updateSetAccessor(r,void 0,e.visitNodes(r.modifiers,L,e.isModifier),oe(r),e.visitParameterList(r.parameters,N,t),e.visitFunctionBody(r.body,N,t)||e.createBlock([]));n!==r&&(e.setCommentRange(n,r),e.setSourceMapRange(n,e.moveRangePastDecorators(r)));return n}(i);case 243:return function(r){if(!se(r))return e.createNotEmittedStatement(r);var n=e.updateFunctionDeclaration(r,void 0,e.visitNodes(r.modifiers,L,e.isModifier),r.asteriskToken,r.name,void 0,e.visitParameterList(r.parameters,N,t),void 0,e.visitFunctionBody(r.body,N,t)||e.createBlock([]));if(Ee(r)){var i=[n];return Ae(i,r),i}return n}(i);case 200:return function(r){if(!se(r))return e.createOmittedExpression();return e.updateFunctionExpression(r,e.visitNodes(r.modifiers,L,e.isModifier),r.asteriskToken,r.name,void 0,e.visitParameterList(r.parameters,N,t),void 0,e.visitFunctionBody(r.body,N,t)||e.createBlock([]))}(i);case 201:return function(r){return e.updateArrowFunction(r,e.visitNodes(r.modifiers,L,e.isModifier),void 0,e.visitParameterList(r.parameters,N,t),void 0,r.equalsGreaterThanToken,e.visitFunctionBody(r.body,N,t))}(i);case 155:return function(t){if(e.parameterIsThisKeyword(t))return;var r=e.updateParameter(t,void 0,void 0,t.dotDotDotToken,e.visitNode(t.name,N,e.isBindingName),void 0,void 0,e.visitNode(t.initializer,N,e.isExpression));r!==t&&(e.setCommentRange(r,t),e.setTextRange(r,e.moveRangePastModifiers(t)),e.setSourceMapRange(r,e.moveRangePastModifiers(t)),e.setEmitFlags(r.name,32));return r}(i);case 199:return function(n){var i=e.skipOuterExpressions(n.expression,-3);if(e.isAssertionExpression(i)){var a=e.visitNode(n.expression,N,e.isExpression);return e.length(e.getLeadingCommentRangesOfNode(a,r))?e.updateParen(n,a):e.createPartiallyEmittedExpression(a,n)}return e.visitEachChild(n,N,t)}(i);case 198:case 216:return function(t){var r=e.visitNode(t.expression,N,e.isExpression);return e.createPartiallyEmittedExpression(r,t)}(i);case 195:return function(t){return e.updateCall(t,e.visitNode(t.expression,N,e.isExpression),void 0,e.visitNodes(t.arguments,N,e.isExpression))}(i);case 196:return function(t){return e.updateNew(t,e.visitNode(t.expression,N,e.isExpression),void 0,e.visitNodes(t.arguments,N,e.isExpression))}(i);case 197:return function(t){return e.updateTaggedTemplate(t,e.visitNode(t.tag,N,e.isExpression),void 0,e.visitNode(t.template,N,e.isExpression))}(i);case 217:return function(t){var r=e.visitNode(t.expression,N,e.isLeftHandSideExpression);return e.createPartiallyEmittedExpression(r,t)}(i);case 247:return function(t){if(!function(t){return!e.isEnumConst(t)||b.preserveConstEnums||b.isolatedModules}(t))return e.createNotEmittedStatement(t);var n=[],i=2,a=ye(n,t);a&&(S===e.ModuleKind.System&&c===r||(i|=512));var o=we(t),u=Ie(t),l=e.hasModifier(t,1)?e.getExternalModuleOrNamespaceExportName(s,t,!1,!0):e.getLocalName(t,!1,!0),_=e.createLogicalOr(l,e.createAssignment(l,e.createObjectLiteral()));if(fe(t)){var d=e.getLocalName(t,!1,!0);_=e.createAssignment(d,_)}var p=e.createExpressionStatement(e.createCall(e.createFunctionExpression(void 0,void 0,void 0,void 0,[e.createParameter(void 0,void 0,void 0,o)],void 0,function(t,r){var n=s;s=r;var i=[];m();var a=e.map(t.members,pe);return e.insertStatementsAfterStandardPrologue(i,y()),e.addRange(i,a),s=n,e.createBlock(e.setTextRange(e.createNodeArray(i),t.members),!0)}(t,u)),void 0,[_]));e.setOriginalNode(p,t),a&&(e.setSyntheticLeadingComments(p,void 0),e.setSyntheticTrailingComments(p,void 0));return e.setTextRange(p,t),e.addEmitFlags(p,i),n.push(p),n.push(e.createEndOfDeclarationMarker(t)),n}(i);case 224:return function(r){if(Ee(r)){var n=e.getInitializedVariables(r.declarationList);if(0===n.length)return;return e.setTextRange(e.createExpressionStatement(e.inlineExpressions(e.map(n,de))),r)}return e.visitEachChild(r,N,t)}(i);case 241:return function(t){return e.updateVariableDeclaration(t,e.visitNode(t.name,N,e.isBindingName),void 0,e.visitNode(t.initializer,N,e.isExpression))}(i);case 248:return he(i);case 252:return Te(i);default:return e.visitEachChild(i,N,t)}}function B(r){var n=e.getStrictOptionValue(b,"alwaysStrict")&&!(e.isExternalModule(r)&&S>=e.ModuleKind.ES2015)&&!e.isJsonSourceFile(r);return e.updateSourceFileNode(r,e.visitLexicalEnvironment(r.statements,F,t,0,n))}function j(e){return void 0!==e.decorators&&e.decorators.length>0}function K(e){return!!(1024&e.transformFlags)}function J(t){return e.some(t.decorators)||e.some(t.typeParameters)||e.some(t.heritageClauses,K)||e.some(t.members,K)}function z(t){var r=[],n=e.getFirstConstructorWithBody(t),i=n&&e.filter(n.parameters,(function(t){return e.isParameterPropertyDeclaration(t,n)}));if(i)for(var a=0,o=i;a<o.length;a++){var s=o[a];e.isIdentifier(s.name)&&r.push(e.aggregateTransformFlags(e.createProperty(void 0,void 0,s.name,void 0,void 0,void 0)))}return e.addRange(r,e.visitNodes(t.members,O,e.isClassElement)),e.setTextRange(e.createNodeArray(r),t.members)}function U(t,r){return e.filter(t.members,r?function(e){return V(e,!0,t)}:function(e){return V(e,!1,t)})}function V(t,r,n){return e.nodeOrChildIsDecorated(t,n)&&r===e.hasModifier(t,32)}function q(t){var r;if(t)for(var n=t.parameters,i=n.length>0&&e.parameterIsThisKeyword(n[0]),a=i?1:0,o=i?n.length-1:n.length,s=0;s<o;s++){var c=n[s+a];(r||c.decorators)&&(r||(r=new Array(o)),r[s]=c.decorators)}return r}function W(t,r){switch(r.kind){case 162:case 163:return function(t,r){if(!r.body)return;var n=e.getAllAccessorDeclarations(t.members,r),i=n.firstAccessor,a=n.secondAccessor,o=n.setAccessor,s=i.decorators?i:a&&a.decorators?a:void 0;if(!s||r!==s)return;var c=s.decorators,u=q(o);if(!c&&!u)return;return{decorators:c,parameters:u}}(t,r);case 160:return function(e){if(!e.body)return;var t=e.decorators,r=q(e);if(!t&&!r)return;return{decorators:t,parameters:r}}(r);case 158:return function(e){var t=e.decorators;if(!t)return;return{decorators:t}}(r);default:return}}function G(r,n,a){if(a){var o=[];return e.addRange(o,e.map(a.decorators,X)),e.addRange(o,e.flatMap(a.parameters,Q)),function(r,n,a){!function(r,n,a){b.emitDecoratorMetadata&&(function(e){var t=e.kind;return 160===t||162===t||163===t||158===t}(r)&&a.push(i(t,"design:type",$(r))),function(t){switch(t.kind){case 244:case 213:return void 0!==e.getFirstConstructorWithBody(t);case 160:case 162:case 163:return!0}return!1}(r)&&a.push(i(t,"design:paramtypes",function(t,r){var n=e.isClassLike(t)?e.getFirstConstructorWithBody(t):e.isFunctionLike(t)&&e.nodeIsPresent(t.body)?t:void 0,i=[];if(n)for(var a=function(t,r){if(r&&162===t.kind){var n=e.getAllAccessorDeclarations(r.members,t).setAccessor;if(n)return n.parameters}return t.parameters}(n,r),o=a.length,s=0;s<o;s++){var c=a[s];0===s&&e.isIdentifier(c.name)&&"this"===c.name.escapedText||(c.dotDotDotToken?i.push(Z(e.getRestParameterElementType(c.type))):i.push($(c)))}return e.createArrayLiteral(i)}(r,n))),function(e){return 160===e.kind}(r)&&a.push(i(t,"design:returntype",function(t){if(e.isFunctionLike(t)&&t.type)return Z(t.type);if(e.isAsyncFunction(t))return e.createIdentifier("Promise");return e.createVoidZero()}(r))))}(r,n,a)}(r,n,o),o}}function H(t,r,n){e.addRange(t,e.map(function(e,t){for(var r,n=U(e,t),i=0,a=n;i<a.length;i++){var o=a[i],s=Y(e,o);s&&(r?r.push(s):r=[s])}return r}(r,n),Ne))}function Y(r,i){var a=G(i,r,W(r,i));if(a){var o=function(t,r){return e.hasModifier(r,32)?e.getDeclarationName(t):function(t){return e.createPropertyAccess(e.getDeclarationName(t),"prototype")}(t)}(r,i),s=ae(i,!0),c=D>0?158===i.kind?e.createVoidZero():e.createNull():void 0,u=n(t,a,o,s,c,e.moveRangePastDecorators(i));return e.setEmitFlags(u,1536),u}}function X(t){return e.visitNode(t.expression,N,e.isExpression)}function Q(r,n){var i;if(r){i=[];for(var o=0,s=r;o<s.length;o++){var c=s[o],u=a(t,X(c),n,c.expression);e.setEmitFlags(u,1536),i.push(u)}}return i}function $(t){switch(t.kind){case 158:case 155:return Z(t.type);case 163:case 162:return Z(function(t){var r=v.getAllAccessorDeclarations(t);return r.setAccessor&&e.getSetAccessorTypeAnnotationNode(r.setAccessor)||r.getAccessor&&e.getEffectiveReturnTypeNode(r.getAccessor)}(t));case 244:case 213:case 160:return e.createIdentifier("Function");default:return e.createVoidZero()}}function Z(t){if(void 0===t)return e.createIdentifier("Object");switch(t.kind){case 109:case 145:case 99:case 136:return e.createVoidZero();case 181:return Z(t.type);case 169:case 170:return e.createIdentifier("Function");case 173:case 174:return e.createIdentifier("Array");case 167:case 127:return e.createIdentifier("Boolean");case 142:return e.createIdentifier("String");case 140:return e.createIdentifier("Object");case 186:switch(t.literal.kind){case 10:return e.createIdentifier("String");case 206:case 8:return e.createIdentifier("Number");case 9:return ie();case 105:case 90:return e.createIdentifier("Boolean");default:return e.Debug.failBadSyntaxKind(t.literal)}case 139:return e.createIdentifier("Number");case 150:return ie();case 143:return D<2?ne():e.createIdentifier("Symbol");case 168:return function(t){var r=v.getTypeReferenceSerializationKind(t.typeName,u||c);switch(r){case e.TypeReferenceSerializationKind.Unknown:if(e.findAncestor(t,(function(t){return t.parent&&e.isConditionalTypeNode(t.parent)&&(t.parent.trueType===t||t.parent.falseType===t)})))return e.createIdentifier("Object");var n=function t(r){if(75===r.kind){var n=re(r);return te(n,n)}if(75===r.left.kind)return te(re(r.left),re(r));var i=t(r.left);var a=e.createTempVariable(h);return e.createLogicalAnd(e.createLogicalAnd(i.left,e.createStrictInequality(e.createAssignment(a,i.right),e.createVoidZero())),e.createPropertyAccess(a,r.right))}(t.typeName),i=e.createTempVariable(h);return e.createConditional(e.createTypeCheck(e.createAssignment(i,n),"function"),i,e.createIdentifier("Object"));case e.TypeReferenceSerializationKind.TypeWithConstructSignatureAndValue:return re(t.typeName);case e.TypeReferenceSerializationKind.VoidNullableOrNeverType:return e.createVoidZero();case e.TypeReferenceSerializationKind.BigIntLikeType:return ie();case e.TypeReferenceSerializationKind.BooleanType:return e.createIdentifier("Boolean");case e.TypeReferenceSerializationKind.NumberLikeType:return e.createIdentifier("Number");case e.TypeReferenceSerializationKind.StringLikeType:return e.createIdentifier("String");case e.TypeReferenceSerializationKind.ArrayLikeType:return e.createIdentifier("Array");case e.TypeReferenceSerializationKind.ESSymbolType:return D<2?ne():e.createIdentifier("Symbol");case e.TypeReferenceSerializationKind.TypeWithCallSignature:return e.createIdentifier("Function");case e.TypeReferenceSerializationKind.Promise:return e.createIdentifier("Promise");case e.TypeReferenceSerializationKind.ObjectType:return e.createIdentifier("Object");default:return e.Debug.assertNever(r)}}(t);case 178:case 177:return ee(t.types);case 179:return ee([t.trueType,t.falseType]);case 183:if(137===t.operator)return Z(t.type);break;case 171:case 184:case 185:case 172:case 124:case 147:case 182:case 187:break;default:return e.Debug.failBadSyntaxKind(t)}return e.createIdentifier("Object")}function ee(t){for(var r,n=0,i=t;n<i.length;n++){for(var a=i[n];181===a.kind;)a=a.type;if(136!==a.kind&&(x||99!==a.kind&&145!==a.kind)){var o=Z(a);if(e.isIdentifier(o)&&"Object"===o.escapedText)return o;if(r){if(!e.isIdentifier(r)||!e.isIdentifier(o)||r.escapedText!==o.escapedText)return e.createIdentifier("Object")}else r=o}}return r||e.createVoidZero()}function te(t,r){return e.createLogicalAnd(e.createStrictInequality(e.createTypeOf(t),e.createLiteral("undefined")),r)}function re(t){switch(t.kind){case 75:var r=e.getMutableClone(t);return r.flags&=-9,r.original=void 0,r.parent=e.getParseTreeNode(c),r;case 152:return function(t){return e.createPropertyAccess(re(t.left),t.right)}(t)}}function ne(){return e.createConditional(e.createTypeCheck(e.createIdentifier("Symbol"),"function"),e.createIdentifier("Symbol"),e.createIdentifier("Object"))}function ie(){return D<99?e.createConditional(e.createTypeCheck(e.createIdentifier("BigInt"),"function"),e.createIdentifier("BigInt"),e.createIdentifier("Object")):e.createIdentifier("BigInt")}function ae(t,r){var n=t.name;return e.isComputedPropertyName(n)?r&&!e.isSimpleInlineableExpression(n.expression)?e.getGeneratedNameForNode(n):n.expression:e.isIdentifier(n)?e.createLiteral(e.idText(n)):e.getSynthesizedClone(n)}function oe(t){var r=t.name;if(e.isComputedPropertyName(r)&&(!e.hasStaticModifier(t)&&_||e.some(t.decorators))){var n=e.visitNode(r.expression,N,e.isExpression),i=e.skipPartiallyEmittedExpressions(n);if(!e.isSimpleInlineableExpression(i)){var a=e.getGeneratedNameForNode(r);return h(a),e.updateComputedPropertyName(r,e.createAssignment(a,n))}}return e.visitNode(r,N,e.isPropertyName)}function se(t){return!e.nodeIsMissing(t.body)}function ce(t){var r=e.updateProperty(t,void 0,e.visitNodes(t.modifiers,N,e.isModifier),oe(t),void 0,void 0,e.visitNode(t.initializer,N));return r!==t&&(e.setCommentRange(r,t),e.setSourceMapRange(r,e.moveRangePastDecorators(t))),r}function ue(r){if(se(r))return e.updateConstructor(r,void 0,void 0,e.visitParameterList(r.parameters,N,t),function(r,n){var i=n&&e.filter(n.parameters,(function(t){return e.isParameterPropertyDeclaration(t,n)}));if(!e.some(i))return e.visitFunctionBody(r,N,t);var a,o=[];g(),a=e.addPrologueDirectivesAndInitialSuperCall(n,o,N),e.addRange(o,e.map(i,le)),e.addRange(o,e.visitNodes(r.statements,N,e.isStatement,a)),o=e.mergeLexicalEnvironment(o,y());var s=e.createBlock(e.setTextRange(e.createNodeArray(o),r.statements),!0);return e.setTextRange(s,r),e.setOriginalNode(s,r),s}(r.body,r))}function le(t){var r=t.name;if(e.isIdentifier(r)){var n=e.getMutableClone(r);e.setEmitFlags(n,1584);var i=e.getMutableClone(r);return e.setEmitFlags(i,1536),e.startOnNewLine(e.removeAllComments(e.setTextRange(e.setOriginalNode(e.createExpressionStatement(e.createAssignment(e.setTextRange(e.createPropertyAccess(e.createThis(),n),t.name),i)),t),e.moveRangePos(t,-1))))}}function _e(t){return!(e.nodeIsMissing(t.body)&&e.hasModifier(t,128))}function de(r){var n=r.name;return e.isBindingPattern(n)?e.flattenDestructuringAssignment(r,N,t,0,!1,Fe):e.setTextRange(e.createAssignment(Pe(n),e.visitNode(r.initializer,N,e.isExpression)),r)}function pe(r){var n=ae(r,!1),i=function(r){var n=v.getConstantValue(r);return void 0!==n?e.createLiteral(n):(0==(8&d)&&(d|=8,t.enableSubstitution(75)),r.initializer?e.visitNode(r.initializer,N,e.isExpression):e.createVoidZero())}(r),a=e.createAssignment(e.createElementAccess(s,n),i),o=10===i.kind?a:e.createAssignment(e.createElementAccess(s,a),n);return e.setTextRange(e.createExpressionStatement(e.setTextRange(o,r)),r)}function fe(t){return Ee(t)||Ce(t)&&S!==e.ModuleKind.ES2015&&S!==e.ModuleKind.ESNext&&S!==e.ModuleKind.System}function me(t){l||(l=e.createUnderscoreEscapedMap());var r=ge(t);l.has(r)||l.set(r,t)}function ge(t){return e.Debug.assertNode(t.name,e.isIdentifier),t.name.escapedText}function ye(t,r){var n=e.createVariableStatement(e.visitNodes(r.modifiers,L,e.isModifier),e.createVariableDeclarationList([e.createVariableDeclaration(e.getLocalName(r,!1,!0))],288===c.kind?0:1));if(e.setOriginalNode(n,r),me(r),function(e){if(l){var t=ge(e);return l.get(t)===e}return!0}(r))return 247===r.kind?e.setSourceMapRange(n.declarationList,r):e.setSourceMapRange(n,r),e.setCommentRange(n,r),e.addEmitFlags(n,4195328),t.push(n),!0;var i=e.createMergeDeclarationMarker(n);return e.setEmitFlags(i,4195840),t.push(i),!1}function he(n){if(!function(t){return e.isInstantiatedModule(t,!!b.preserveConstEnums||!!b.isolatedModules)}(n))return e.createNotEmittedStatement(n);e.Debug.assertNode(n.name,e.isIdentifier,"A TypeScript namespace should have an Identifier name."),0==(2&d)&&(d|=2,t.enableSubstitution(75),t.enableSubstitution(280),t.enableEmitNotification(248));var i=[],a=2,u=ye(i,n);u&&(S===e.ModuleKind.System&&c===r||(a|=512));var _=we(n),p=Ie(n),f=e.hasModifier(n,1)?e.getExternalModuleOrNamespaceExportName(s,n,!1,!0):e.getLocalName(n,!1,!0),g=e.createLogicalOr(f,e.createAssignment(f,e.createObjectLiteral()));if(fe(n)){var h=e.getLocalName(n,!1,!0);g=e.createAssignment(h,g)}var v=e.createExpressionStatement(e.createCall(e.createFunctionExpression(void 0,void 0,void 0,void 0,[e.createParameter(void 0,void 0,void 0,_)],void 0,function(t,r){var n=s,i=o,a=l;s=r,o=t,l=void 0;var c,u,_=[];m();var d=t.body;if(249===d.kind)k(d,(function(t){return e.addRange(_,e.visitNodes(t.statements,w,e.isStatement))})),c=d.statements,u=d;else{var p=he(d);p&&(e.isArray(p)?e.addRange(_,p):_.push(p));var f=function e(t){if(248===t.body.kind){return e(t.body)||t.body}}(t).body;c=e.moveRangePos(f.statements,-1)}e.insertStatementsAfterStandardPrologue(_,y()),s=n,o=i,l=a;var g=e.createBlock(e.setTextRange(e.createNodeArray(_),c),!0);e.setTextRange(g,u),249!==d.kind&&e.setEmitFlags(g,1536|e.getEmitFlags(g));return g}(n,p)),void 0,[g]));return e.setOriginalNode(v,n),u&&(e.setSyntheticLeadingComments(v,void 0),e.setSyntheticTrailingComments(v,void 0)),e.setTextRange(v,n),e.addEmitFlags(v,a),i.push(v),i.push(e.createEndOfDeclarationMarker(n)),i}function ve(t){var r=v.isReferencedAliasDeclaration(t)?t.name:void 0,n=e.visitNode(t.namedBindings,be,e.isNamedImportBindings);return r||n?e.updateImportClause(t,r,n):void 0}function be(t){if(255===t.kind)return v.isReferencedAliasDeclaration(t)?t:void 0;var r=e.visitNodes(t.elements,xe,e.isImportSpecifier);return e.some(r)?e.updateNamedImports(t,r):void 0}function xe(e){return v.isReferencedAliasDeclaration(e)?e:void 0}function De(t){var r=e.visitNodes(t.elements,Se,e.isExportSpecifier);return e.some(r)?e.updateNamedExports(t,r):void 0}function Se(e){return v.isValueAliasDeclaration(e)?e:void 0}function Te(n){if(e.isExternalModuleImportEqualsDeclaration(n))return v.isReferencedAliasDeclaration(n)?e.visitEachChild(n,N,t):void 0;if(function(t){return v.isReferencedAliasDeclaration(t)||!e.isExternalModule(r)&&v.isTopLevelValueImportEqualsWithEntityName(t)}(n)){var i,a,o,c=e.createExpressionFromEntityName(n.moduleReference);return e.setEmitFlags(c,3584),ke(n)||!Ee(n)?e.setOriginalNode(e.setTextRange(e.createVariableStatement(e.visitNodes(n.modifiers,L,e.isModifier),e.createVariableDeclarationList([e.setOriginalNode(e.createVariableDeclaration(n.name,void 0,c),n)])),n),n):e.setOriginalNode((i=n.name,a=c,o=n,e.setTextRange(e.createExpressionStatement(e.createAssignment(e.getNamespaceMemberName(s,i,!1,!0),a)),o)),n)}}function Ee(t){return void 0!==o&&e.hasModifier(t,1)}function Ce(t){return void 0===o&&e.hasModifier(t,1)}function ke(t){return Ce(t)&&!e.hasModifier(t,512)}function Ne(t){return e.createExpressionStatement(t)}function Ae(t,r){var n=e.createAssignment(e.getExternalModuleOrNamespaceExportName(s,r,!1,!0),e.getLocalName(r));e.setSourceMapRange(n,e.createRange(r.name?r.name.pos:r.pos,r.end));var i=e.createExpressionStatement(n);e.setSourceMapRange(i,e.createRange(-1,r.end)),t.push(i)}function Fe(t,r,n){return e.setTextRange(e.createAssignment(Pe(t),r),n)}function Pe(t){return e.getNamespaceMemberName(s,t,!1,!0)}function we(t){var r=e.getGeneratedNameForNode(t);return e.setSourceMapRange(r,t.name),r}function Ie(t){return e.getGeneratedNameForNode(t)}function Oe(t){if(d&f&&!e.isGeneratedIdentifier(t)&&!e.isLocalName(t)){var r=v.getReferencedExportContainer(t,!1);if(r&&288!==r.kind)if(2&f&&248===r.kind||8&f&&247===r.kind)return e.setTextRange(e.createPropertyAccess(e.getGeneratedNameForNode(r),t),t)}}function Me(t){var r=function(t){if(b.isolatedModules)return;return e.isPropertyAccessExpression(t)||e.isElementAccessExpression(t)?v.getConstantValue(t):void 0}(t);if(void 0!==r){e.setConstantValue(t,r);var n=e.createLiteral(r);if(!b.removeComments){var i=e.getOriginalNode(t,e.isAccessExpression),a=e.isPropertyAccessExpression(i)?e.declarationNameToString(i.name):e.getTextOfNode(i.argumentExpression);e.addSyntheticTrailingComment(n,3," "+a+" ")}return n}return t}},e.decorateHelper={name:"typescript:decorate",importName:"__decorate",scoped:!1,priority:2,text:'\n var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n };'},e.metadataHelper={name:"typescript:metadata",importName:"__metadata",scoped:!1,priority:3,text:'\n var __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);\n };'},e.paramHelper={name:"typescript:param",importName:"__param",scoped:!1,priority:4,text:"\n var __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n };"}}(s||(s={})),function(e){var r;!function(e){e[e.ClassAliases=1]="ClassAliases"}(r||(r={})),e.transformClassFields=function(r){var n,i,a,o,s=r.hoistVariableDeclaration,c=r.endLexicalEnvironment,u=r.resumeLexicalEnvironment,l=r.getEmitResolver(),_=r.onSubstituteNode;return r.onSubstituteNode=function(t,r){if(r=_(t,r),1===t)return function(t){switch(t.kind){case 75:return function(t){return function(t){if(1&n&&33554432&l.getNodeCheckFlags(t)){var r=l.getReferencedValueDeclaration(t);if(r){var a=i[r.id];if(a){var o=e.getSynthesizedClone(a);return e.setSourceMapRange(o,t),e.setCommentRange(o,t),o}}}return}(t)||t}(t)}return t}(r);return r},e.chainBundle((function(t){var n=r.getCompilerOptions();if(t.isDeclarationFile||n.useDefineForClassFields&&99===n.target)return t;var i=e.visitEachChild(t,d,r);return e.addEmitHelpers(i,r.readEmitHelpers()),i}));function d(c){if(!(1048576&c.transformFlags))return c;switch(c.kind){case 213:return function(t){if(!e.forEach(t.members,e.isPropertyDeclaration))return e.visitEachChild(t,d,r);var c=a;a=void 0;var u=e.isClassDeclaration(e.getOriginalNode(t)),_=e.getProperties(t,!0,!0),p=e.getEffectiveBaseTypeNode(t),y=!(!p||99===e.skipOuterExpressions(p.expression).kind),h=e.updateClassExpression(t,t.modifiers,t.name,void 0,e.visitNodes(t.heritageClauses,d,e.isHeritageClause),f(t,y));if(e.some(_)||e.some(a)){if(u)return e.Debug.assertDefined(o,"Decorated classes transformed by TypeScript are expected to be within a variable declaration."),o&&a&&e.some(a)&&o.push(e.createExpressionStatement(e.inlineExpressions(a))),a=c,o&&e.some(_)&&m(o,_,e.getInternalName(t)),h;var v=[],b=16777216&l.getNodeCheckFlags(t),x=e.createTempVariable(s,!!b);if(b){0==(1&n)&&(n|=1,r.enableSubstitution(75),i=[]);var D=e.getSynthesizedClone(x);D.autoGenerateFlags&=-9,i[e.getOriginalNodeId(t)]=D}return e.setEmitFlags(h,65536|e.getEmitFlags(h)),v.push(e.startOnNewLine(e.createAssignment(x,h))),e.addRange(v,e.map(a,e.startOnNewLine)),e.addRange(v,function(t,r){for(var n=[],i=0,a=t;i<a.length;i++){var o=a[i],s=g(o,r);e.startOnNewLine(s),e.setSourceMapRange(s,e.moveRangePastModifiers(o)),e.setCommentRange(s,o),e.setOriginalNode(s,o),n.push(s)}return n}(_,x)),v.push(e.startOnNewLine(x)),a=c,e.inlineExpressions(v)}return a=c,h}(c);case 244:return function(t){if(!e.forEach(t.members,e.isPropertyDeclaration))return e.visitEachChild(t,d,r);var n=a;a=void 0;var i=e.getEffectiveBaseTypeNode(t),o=!(!i||99===e.skipOuterExpressions(i.expression).kind),s=[e.updateClassDeclaration(t,void 0,t.modifiers,t.name,void 0,e.visitNodes(t.heritageClauses,d,e.isHeritageClause),f(t,o))];e.some(a)&&s.push(e.createExpressionStatement(e.inlineExpressions(a)));a=n;var c=e.getProperties(t,!0,!0);e.some(c)&&m(s,c,e.getInternalName(t));return s}(c);case 224:return function(n){var i=o;o=[];var a=e.visitEachChild(n,d,r),s=e.some(o)?t([a],o):a;return o=i,s}(c)}return e.visitEachChild(c,d,r)}function p(t){switch(t.kind){case 161:return;case 162:case 163:case 160:return e.visitEachChild(t,p,r);case 158:return function(t){e.Debug.assert(!e.some(t.decorators));var n=function(t,r){if(e.isComputedPropertyName(t)){var n=e.visitNode(t.expression,d,e.isExpression),i=e.skipPartiallyEmittedExpressions(n),a=e.isSimpleInlineableExpression(i);if(!(e.isAssignmentExpression(i)&&e.isGeneratedIdentifier(i.left))&&!a&&r){var o=e.getGeneratedNameForNode(t);return s(o),e.createAssignment(o,n)}return a||e.isIdentifier(i)?void 0:n}}(t.name,!!t.initializer||!!r.getCompilerOptions().useDefineForClassFields);n&&!e.isSimpleInlineableExpression(n)&&(a||(a=[])).push(n);return}(t);case 153:return function(t){var n=e.visitEachChild(t,d,r);if(e.some(a)){var i=a;i.push(t.expression),a=[],n=e.updateComputedPropertyName(n,e.inlineExpressions(i))}return n}(t);case 221:return t;default:return d(t)}}function f(t,n){var i=[],a=function(t,n){var i=e.visitNode(e.getFirstConstructorWithBody(t),d,e.isConstructorDeclaration);if(!e.forEach(t.members,(function(t){return e.isInitializedProperty(t,!r.getCompilerOptions().useDefineForClassFields)})))return i;var a=e.visitParameterList(i?i.parameters:void 0,d,r),o=function(t,n,i){var a=e.getProperties(t,!r.getCompilerOptions().useDefineForClassFields,!1);if(!n&&!e.some(a))return e.visitFunctionBody(void 0,d,r);u();var o=0,s=[];!n&&i&&s.push(e.createExpressionStatement(e.createCall(e.createSuper(),void 0,[e.createSpread(e.createIdentifier("arguments"))])));n&&(o=e.addPrologueDirectivesAndInitialSuperCall(n,s,d));if(n&&n.body){for(var l=0,_=o;_<n.body.statements.length&&e.isParameterPropertyDeclaration(e.getOriginalNode(n.body.statements[_]),n);_++)l++;l>0&&(e.addRange(s,e.visitNodes(n.body.statements,d,e.isStatement,o,l)),o+=l)}m(s,a,e.createThis()),n&&e.addRange(s,e.visitNodes(n.body.statements,d,e.isStatement,o));return s=e.mergeLexicalEnvironment(s,c()),e.setTextRange(e.createBlock(e.setTextRange(e.createNodeArray(s),n?n.body.statements:t.members),!0),n?n.body:void 0)}(t,i,n);if(!o)return;return e.startOnNewLine(e.setOriginalNode(e.setTextRange(e.createConstructor(void 0,void 0,a,o),i||t),i))}(t,n);return a&&i.push(a),e.addRange(i,e.visitNodes(t.members,p,e.isClassElement)),e.setTextRange(e.createNodeArray(i),t.members)}function m(t,r,n){for(var i=0,a=r;i<a.length;i++){var o=a[i],s=e.createExpressionStatement(g(o,n));e.setSourceMapRange(s,e.moveRangePastModifiers(o)),e.setCommentRange(s,o),e.setOriginalNode(s,o),t.push(s)}}function g(t,n){var i=!r.getCompilerOptions().useDefineForClassFields,a=e.isComputedPropertyName(t.name)&&!e.isSimpleInlineableExpression(t.name.expression)?e.updateComputedPropertyName(t.name,e.getGeneratedNameForNode(t.name)):t.name,o=t.initializer||i?e.visitNode(t.initializer,d,e.isExpression):e.createVoidZero();if(i){var s=e.createMemberAccessForPropertyName(n,a,a);return e.createAssignment(s,o)}var c=e.isComputedPropertyName(a)?a.expression:e.isIdentifier(a)?e.createStringLiteral(e.unescapeLeadingUnderscores(a.escapedText)):a,u=e.createPropertyDescriptor({value:o,configurable:!0,writable:!0,enumerable:!0});return e.createObjectDefinePropertyCall(n,c,u)}}}(s||(s={})),function(e){var r;function n(t,r,n){var i=0!=(4096&t.getNodeCheckFlags(r)),a=[];return n.forEach((function(t,r){var n=e.unescapeLeadingUnderscores(r),o=[];o.push(e.createPropertyAssignment("get",e.createArrowFunction(void 0,void 0,[],void 0,void 0,e.setEmitFlags(e.createPropertyAccess(e.setEmitFlags(e.createSuper(),4),n),4)))),i&&o.push(e.createPropertyAssignment("set",e.createArrowFunction(void 0,void 0,[e.createParameter(void 0,void 0,void 0,"v",void 0,void 0,void 0)],void 0,void 0,e.createAssignment(e.setEmitFlags(e.createPropertyAccess(e.setEmitFlags(e.createSuper(),4),n),4),e.createIdentifier("v"))))),a.push(e.createPropertyAssignment(n,e.createObjectLiteral(o)))})),e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(e.createFileLevelUniqueName("_super"),void 0,e.createCall(e.createPropertyAccess(e.createIdentifier("Object"),"create"),void 0,[e.createNull(),e.createObjectLiteral(a,!0)]))],2))}function i(t,r,n,i,a){t.requestEmitHelper(e.awaiterHelper);var o=e.createFunctionExpression(void 0,e.createToken(41),void 0,void 0,[],void 0,a);return(o.emitNode||(o.emitNode={})).flags|=786432,e.createCall(e.getUnscopedHelperName("__awaiter"),void 0,[r?e.createThis():e.createVoidZero(),n?e.createIdentifier("arguments"):e.createVoidZero(),i?e.createExpressionFromEntityName(i):e.createVoidZero(),o])}!function(e){e[e.AsyncMethodsWithSuper=1]="AsyncMethodsWithSuper"}(r||(r={})),e.transformES2017=function(r){var a,o,s,c,u,l=r.resumeLexicalEnvironment,_=r.endLexicalEnvironment,d=r.hoistVariableDeclaration,p=r.getEmitResolver(),f=r.getCompilerOptions(),m=e.getEmitScriptTarget(f),g=0,y=[],h=r.onEmitNode,v=r.onSubstituteNode;return r.onEmitNode=function(t,r,n){if(1&a&&function(e){var t=e.kind;return 244===t||161===t||160===t||162===t||163===t}(r)){var i=6144&p.getNodeCheckFlags(r);if(i!==g){var o=g;return g=i,h(t,r,n),void(g=o)}}else if(a&&y[e.getNodeId(r)]){o=g;return g=0,h(t,r,n),void(g=o)}h(t,r,n)},r.onSubstituteNode=function(r,n){if(n=v(r,n),1===r&&g)return function(r){switch(r.kind){case 193:return M(r);case 194:return L(r);case 195:return function(r){var n=r.expression;if(e.isSuperProperty(n)){var i=e.isPropertyAccessExpression(n)?M(n):L(n);return e.createCall(e.createPropertyAccess(i,"call"),void 0,t([e.createThis()],r.arguments))}return r}(r)}return r}(n);return n},e.chainBundle((function(t){if(t.isDeclarationFile)return t;u=e.isEffectiveStrictModeSourceFile(t,f);var n=e.visitEachChild(t,D,r);return e.addEmitHelpers(n,r.readEmitHelpers()),n}));function b(e,t){if(u){u=!1;var r=e(t);return u=!0,r}return e(t)}function x(t){return e.visitEachChild(t,D,r)}function D(t){if(0==(32&t.transformFlags))return t;switch(t.kind){case 125:return;case 205:return function(t){return e.setOriginalNode(e.setTextRange(e.createYield(void 0,e.visitNode(t.expression,D,e.isExpression)),t),t)}(t);case 160:return b(T,t);case 243:return b(E,t);case 200:return b(C,t);case 201:return function(t){return e.updateArrowFunction(t,e.visitNodes(t.modifiers,D,e.isModifier),void 0,e.visitParameterList(t.parameters,D,r),void 0,t.equalsGreaterThanToken,2&e.getFunctionFlags(t)?I(t):e.visitFunctionBody(t.body,D,r))}(t);case 193:return s&&e.isPropertyAccessExpression(t)&&101===t.expression.kind&&s.set(t.name.escapedText,!0),e.visitEachChild(t,D,r);case 194:return s&&101===t.expression.kind&&(c=!0),e.visitEachChild(t,D,r);case 162:case 163:case 161:case 244:case 213:return b(x,t);default:return e.visitEachChild(t,D,r)}}function S(t){if(e.isNodeWithPossibleHoistedDeclaration(t))switch(t.kind){case 224:return function(t){if(N(t.declarationList)){var n=A(t.declarationList,!1);return n?e.createExpressionStatement(n):void 0}return e.visitEachChild(t,D,r)}(t);case 229:return function(t){var r=t.initializer;return e.updateFor(t,N(r)?A(r,!1):e.visitNode(t.initializer,D,e.isForInitializer),e.visitNode(t.condition,D,e.isExpression),e.visitNode(t.incrementor,D,e.isExpression),e.visitNode(t.statement,S,e.isStatement,e.liftToBlock))}(t);case 230:return function(t){return e.updateForIn(t,N(t.initializer)?A(t.initializer,!0):e.visitNode(t.initializer,D,e.isForInitializer),e.visitNode(t.expression,D,e.isExpression),e.visitNode(t.statement,S,e.isStatement,e.liftToBlock))}(t);case 231:return function(t){return e.updateForOf(t,e.visitNode(t.awaitModifier,D,e.isToken),N(t.initializer)?A(t.initializer,!0):e.visitNode(t.initializer,D,e.isForInitializer),e.visitNode(t.expression,D,e.isExpression),e.visitNode(t.statement,S,e.isStatement,e.liftToBlock))}(t);case 278:return function(t){var n,i=e.createUnderscoreEscapedMap();if(k(t.variableDeclaration,i),i.forEach((function(t,r){o.has(r)&&(n||(n=e.cloneMap(o)),n.delete(r))})),n){var a=o;o=n;var s=e.visitEachChild(t,S,r);return o=a,s}return e.visitEachChild(t,S,r)}(t);case 222:case 236:case 250:case 275:case 276:case 239:case 227:case 228:case 226:case 235:case 237:return e.visitEachChild(t,S,r);default:return e.Debug.assertNever(t,"Unhandled node.")}return D(t)}function T(t){return e.updateMethod(t,void 0,e.visitNodes(t.modifiers,D,e.isModifier),t.asteriskToken,t.name,void 0,void 0,e.visitParameterList(t.parameters,D,r),void 0,2&e.getFunctionFlags(t)?I(t):e.visitFunctionBody(t.body,D,r))}function E(t){return e.updateFunctionDeclaration(t,void 0,e.visitNodes(t.modifiers,D,e.isModifier),t.asteriskToken,t.name,void 0,e.visitParameterList(t.parameters,D,r),void 0,2&e.getFunctionFlags(t)?I(t):e.visitFunctionBody(t.body,D,r))}function C(t){return e.updateFunctionExpression(t,e.visitNodes(t.modifiers,D,e.isModifier),t.asteriskToken,t.name,void 0,e.visitParameterList(t.parameters,D,r),void 0,2&e.getFunctionFlags(t)?I(t):e.visitFunctionBody(t.body,D,r))}function k(t,r){var n=t.name;if(e.isIdentifier(n))r.set(n.escapedText,!0);else for(var i=0,a=n.elements;i<a.length;i++){var o=a[i];e.isOmittedExpression(o)||k(o,r)}}function N(t){return!!t&&e.isVariableDeclarationList(t)&&!(3&t.flags)&&t.declarations.some(w)}function A(t,r){!function(t){e.forEach(t.declarations,F)}(t);var n=e.getInitializedVariables(t);return 0===n.length?r?e.visitNode(e.convertToAssignmentElementTarget(t.declarations[0].name),D,e.isExpression):void 0:e.inlineExpressions(e.map(n,P))}function F(t){var r=t.name;if(e.isIdentifier(r))d(r);else for(var n=0,i=r.elements;n<i.length;n++){var a=i[n];e.isOmittedExpression(a)||F(a)}}function P(t){var r=e.setSourceMapRange(e.createAssignment(e.convertToAssignmentElementTarget(t.name),t.initializer),t);return e.visitNode(r,D,e.isExpression)}function w(t){var r=t.name;if(e.isIdentifier(r))return o.has(r.escapedText);for(var n=0,i=r.elements;n<i.length;n++){var a=i[n];if(!e.isOmittedExpression(a)&&w(a))return!0}return!1}function I(t){l();var d=e.getOriginalNode(t,e.isFunctionLike).type,f=m<2?function(t){var r=t&&e.getEntityNameFromTypeNode(t);if(r&&e.isEntityName(r)){var n=p.getTypeReferenceSerializationKind(r);if(n===e.TypeReferenceSerializationKind.TypeWithConstructSignatureAndValue||n===e.TypeReferenceSerializationKind.Unknown)return r}return}(d):void 0,g=201===t.kind,h=0!=(8192&p.getNodeCheckFlags(t)),v=o;o=e.createUnderscoreEscapedMap();for(var b=0,x=t.parameters;b<x.length;b++){k(x[b],o)}var S,T=s,E=c;if(g||(s=e.createUnderscoreEscapedMap(),c=!1),g){var C=i(r,!u,h,f,O(t.body)),N=_();if(e.some(N)){I=e.convertToFunctionBody(C);S=e.updateBlock(I,e.setTextRange(e.createNodeArray(e.concatenate(N,I.statements)),I.statements))}else S=C}else{var A=[],F=e.addPrologue(A,t.body.statements,!1,D);A.push(e.createReturn(i(r,!u,h,f,O(t.body,F)))),e.insertStatementsAfterStandardPrologue(A,_());var P=m>=2&&6144&p.getNodeCheckFlags(t);if(P&&(0==(1&a)&&(a|=1,r.enableSubstitution(195),r.enableSubstitution(193),r.enableSubstitution(194),r.enableEmitNotification(244),r.enableEmitNotification(160),r.enableEmitNotification(162),r.enableEmitNotification(163),r.enableEmitNotification(161),r.enableEmitNotification(224)),e.hasEntries(s))){var w=n(p,t,s);y[e.getNodeId(w)]=!0,e.insertStatementsAfterStandardPrologue(A,[w])}var I=e.createBlock(A,!0);e.setTextRange(I,t.body),P&&c&&(4096&p.getNodeCheckFlags(t)?e.addEmitHelper(I,e.advancedAsyncSuperHelper):2048&p.getNodeCheckFlags(t)&&e.addEmitHelper(I,e.asyncSuperHelper)),S=I}return o=v,g||(s=T,c=E),S}function O(t,r){return e.isBlock(t)?e.updateBlock(t,e.visitNodes(t.statements,S,e.isStatement,r)):e.convertToFunctionBody(e.visitNode(t,S,e.isConciseBody))}function M(t){return 101===t.expression.kind?e.setTextRange(e.createPropertyAccess(e.createFileLevelUniqueName("_super"),t.name),t):t}function L(t){return 101===t.expression.kind?(r=t.argumentExpression,n=t,4096&g?e.setTextRange(e.createPropertyAccess(e.createCall(e.createFileLevelUniqueName("_superIndex"),void 0,[r]),"value"),n):e.setTextRange(e.createCall(e.createFileLevelUniqueName("_superIndex"),void 0,[r]),n)):t;var r,n}},e.createSuperAccessVariableStatement=n,e.awaiterHelper={name:"typescript:awaiter",importName:"__awaiter",scoped:!1,priority:5,text:'\n var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };'},e.asyncSuperHelper={name:"typescript:async-super",scoped:!0,text:e.helperString(a(["\n const "," = name => super[name];"],["\n const "," = name => super[name];"]),"_superIndex")},e.advancedAsyncSuperHelper={name:"typescript:advanced-async-super",scoped:!0,text:e.helperString(a(["\n const "," = (function (geti, seti) {\n const cache = Object.create(null);\n return name => cache[name] || (cache[name] = { get value() { return geti(name); }, set value(v) { seti(name, v); } });\n })(name => super[name], (name, value) => super[name] = value);"],["\n const "," = (function (geti, seti) {\n const cache = Object.create(null);\n return name => cache[name] || (cache[name] = { get value() { return geti(name); }, set value(v) { seti(name, v); } });\n })(name => super[name], (name, value) => super[name] = value);"]),"_superIndex")}}(s||(s={})),function(e){var r;function n(t,r){return t.getCompilerOptions().target>=2?e.createCall(e.createPropertyAccess(e.createIdentifier("Object"),"assign"),void 0,r):(t.requestEmitHelper(e.assignHelper),e.createCall(e.getUnscopedHelperName("__assign"),void 0,r))}function i(t,r){return t.requestEmitHelper(e.awaitHelper),e.createCall(e.getUnscopedHelperName("__await"),void 0,[r])}function a(t,r,n){return t.requestEmitHelper(e.asyncValues),e.setTextRange(e.createCall(e.getUnscopedHelperName("__asyncValues"),void 0,[r]),n)}!function(e){e[e.AsyncMethodsWithSuper=1]="AsyncMethodsWithSuper"}(r||(r={})),e.transformES2018=function(r){var o=r.resumeLexicalEnvironment,s=r.endLexicalEnvironment,c=r.hoistVariableDeclaration,u=r.getEmitResolver(),l=r.getCompilerOptions(),_=e.getEmitScriptTarget(l),d=r.onEmitNode;r.onEmitNode=function(t,r,n){if(1&f&&function(e){var t=e.kind;return 244===t||161===t||160===t||162===t||163===t}(r)){var i=6144&u.getNodeCheckFlags(r);if(i!==b){var a=b;return b=i,d(t,r,n),void(b=a)}}else if(f&&x[e.getNodeId(r)]){a=b;return b=0,d(t,r,n),void(b=a)}d(t,r,n)};var p=r.onSubstituteNode;r.onSubstituteNode=function(r,n){if(n=p(r,n),1===r&&b)return function(r){switch(r.kind){case 193:return K(r);case 194:return J(r);case 195:return function(r){var n=r.expression;if(e.isSuperProperty(n)){var i=e.isPropertyAccessExpression(n)?K(n):J(n);return e.createCall(e.createPropertyAccess(i,"call"),void 0,t([e.createThis()],r.arguments))}return r}(r)}return r}(n);return n};var f,m,g,y,h,v=!1,b=0,x=[];return e.chainBundle((function(t){if(t.isDeclarationFile)return t;v=!1,g=e.isEffectiveStrictModeSourceFile(t,l);var n=e.visitEachChild(t,D,r);return e.addEmitHelpers(n,r.readEmitHelpers()),n}));function D(e){return k(e,!1)}function S(e){return k(e,!0)}function T(e){if(125!==e.kind)return e}function E(e,t){if(g){g=!1;var r=e(t);return g=!0,r}return e(t)}function C(t){return e.visitEachChild(t,D,r)}function k(o,s){if(0==(16&o.transformFlags))return o;switch(o.kind){case 205:return function(t){if(2&m&&1&m)return e.setOriginalNode(e.setTextRange(e.createYield(i(r,e.visitNode(t.expression,D,e.isExpression))),t),t);return e.visitEachChild(t,D,r)}(o);case 211:return function(t){if(2&m&&1&m){if(t.asteriskToken){var n=e.visitNode(t.expression,D,e.isExpression);return e.setOriginalNode(e.setTextRange(e.createYield(i(r,e.updateYield(t,t.asteriskToken,function(t,r,n){return t.requestEmitHelper(e.awaitHelper),t.requestEmitHelper(e.asyncDelegator),e.setTextRange(e.createCall(e.getUnscopedHelperName("__asyncDelegator"),void 0,[r]),n)}(r,a(r,n,n),n)))),t),t)}return e.setOriginalNode(e.setTextRange(e.createYield(F(t.expression?e.visitNode(t.expression,D,e.isExpression):e.createVoidZero())),t),t)}return e.visitEachChild(t,D,r)}(o);case 234:return function(t){if(2&m&&1&m)return e.updateReturn(t,F(t.expression?e.visitNode(t.expression,D,e.isExpression):e.createVoidZero()));return e.visitEachChild(t,D,r)}(o);case 237:return function(t){if(2&m){var n=e.unwrapInnermostStatementOfLabel(t);return 231===n.kind&&n.awaitModifier?A(n,t):e.restoreEnclosingLabel(e.visitEachChild(n,D,r),t)}return e.visitEachChild(t,D,r)}(o);case 192:return function(t){if(8192&t.transformFlags){var i=function(t){for(var r,n=[],i=0,a=t;i<a.length;i++){var o=a[i];if(281===o.kind){r&&(n.push(e.createObjectLiteral(r)),r=void 0);var s=o.expression;n.push(e.visitNode(s,D,e.isExpression))}else r=e.append(r,279===o.kind?e.createPropertyAssignment(o.name,e.visitNode(o.initializer,D,e.isExpression)):e.visitNode(o,D,e.isObjectLiteralElementLike))}r&&n.push(e.createObjectLiteral(r));return n}(t.properties);i.length&&192!==i[0].kind&&i.unshift(e.createObjectLiteral());var a=i[0];if(i.length>1){for(var o=1;o<i.length;o++)a=n(r,[a,i[o]]);return a}return n(r,i)}return e.visitEachChild(t,D,r)}(o);case 208:return function(t,n){if(e.isDestructuringAssignment(t)&&8192&t.left.transformFlags)return e.flattenDestructuringAssignment(t,D,r,1,!n);if(27===t.operatorToken.kind)return e.updateBinary(t,e.visitNode(t.left,S,e.isExpression),e.visitNode(t.right,n?S:D,e.isExpression));return e.visitEachChild(t,D,r)}(o,s);case 278:return function(n){if(n.variableDeclaration&&e.isBindingPattern(n.variableDeclaration.name)&&8192&n.variableDeclaration.name.transformFlags){var i=e.getGeneratedNameForNode(n.variableDeclaration.name),a=e.updateVariableDeclaration(n.variableDeclaration,n.variableDeclaration.name,void 0,i),o=e.flattenDestructuringBinding(a,D,r,1),s=e.visitNode(n.block,D,e.isBlock);return e.some(o)&&(s=e.updateBlock(s,t([e.createVariableStatement(void 0,o)],s.statements))),e.updateCatchClause(n,e.updateVariableDeclaration(n.variableDeclaration,i,void 0,void 0),s)}return e.visitEachChild(n,D,r)}(o);case 224:return function(t){if(e.hasModifier(t,1)){var n=v;v=!0;var i=e.visitEachChild(t,D,r);return v=n,i}return e.visitEachChild(t,D,r)}(o);case 241:return function(e){if(v){var t=v;v=!1;var r=N(e,!0);return v=t,r}return N(e,!1)}(o);case 231:return A(o,void 0);case 229:return function(t){return e.updateFor(t,e.visitNode(t.initializer,S,e.isForInitializer),e.visitNode(t.condition,D,e.isExpression),e.visitNode(t.incrementor,D,e.isExpression),e.visitNode(t.statement,D,e.isStatement))}(o);case 204:return function(t){return e.visitEachChild(t,S,r)}(o);case 161:return E(P,o);case 160:return E(O,o);case 162:return E(w,o);case 163:return E(I,o);case 243:return E(M,o);case 200:return E(L,o);case 201:return function(t){var n=m;m=e.getFunctionFlags(t);var i=e.updateArrowFunction(t,t.modifiers,void 0,e.visitParameterList(t.parameters,D,r),void 0,t.equalsGreaterThanToken,B(t));return m=n,i}(o);case 155:return function(t){if(8192&t.transformFlags)return e.updateParameter(t,void 0,void 0,t.dotDotDotToken,e.getGeneratedNameForNode(t),void 0,void 0,e.visitNode(t.initializer,D,e.isExpression));return e.visitEachChild(t,D,r)}(o);case 225:return function(t){return e.visitEachChild(t,S,r)}(o);case 199:return function(t,n){return e.visitEachChild(t,n?S:D,r)}(o,s);case 193:return y&&e.isPropertyAccessExpression(o)&&101===o.expression.kind&&y.set(o.name.escapedText,!0),e.visitEachChild(o,D,r);case 194:return y&&101===o.expression.kind&&(h=!0),e.visitEachChild(o,D,r);case 244:case 213:return E(C,o);default:return e.visitEachChild(o,D,r)}}function N(t,n){return e.isBindingPattern(t.name)&&8192&t.name.transformFlags?e.flattenDestructuringBinding(t,D,r,1,void 0,n):e.visitEachChild(t,D,r)}function A(t,n){return 8192&t.initializer.transformFlags&&(t=function(t){var r=e.skipParentheses(t.initializer);if(e.isVariableDeclarationList(r)||e.isAssignmentPattern(r)){var n=void 0,i=void 0,a=e.createTempVariable(void 0),o=[e.createForOfBindingStatement(r,a)];return e.isBlock(t.statement)?(e.addRange(o,t.statement.statements),n=t.statement,i=t.statement.statements):t.statement&&(e.append(o,t.statement),n=t.statement,i=t.statement),e.updateForOf(t,t.awaitModifier,e.setTextRange(e.createVariableDeclarationList([e.setTextRange(e.createVariableDeclaration(a),t.initializer)],1),t.initializer),t.expression,e.setTextRange(e.createBlock(e.setTextRange(e.createNodeArray(o),i),!0),n))}return t}(t)),t.awaitModifier?function(t,n){var i=e.visitNode(t.expression,D,e.isExpression),o=e.isIdentifier(i)?e.getGeneratedNameForNode(i):e.createTempVariable(void 0),s=e.isIdentifier(i)?e.getGeneratedNameForNode(o):e.createTempVariable(void 0),u=e.createUniqueName("e"),l=e.getGeneratedNameForNode(u),_=e.createTempVariable(void 0),d=a(r,i,t.expression),p=e.createCall(e.createPropertyAccess(o,"next"),void 0,[]),f=e.createPropertyAccess(s,"done"),m=e.createPropertyAccess(s,"value"),g=e.createFunctionCall(_,o,[]);c(u),c(_);var y=e.setEmitFlags(e.setTextRange(e.createFor(e.setEmitFlags(e.setTextRange(e.createVariableDeclarationList([e.setTextRange(e.createVariableDeclaration(o,void 0,d),t.expression),e.createVariableDeclaration(s)]),t.expression),2097152),e.createComma(e.createAssignment(s,F(p)),e.createLogicalNot(f)),void 0,function(t,r){var n,i,a=e.createForOfBindingStatement(t.initializer,r),o=[e.visitNode(a,D,e.isStatement)],s=e.visitNode(t.statement,D,e.isStatement);e.isBlock(s)?(e.addRange(o,s.statements),n=s,i=s.statements):o.push(s);return e.setEmitFlags(e.setTextRange(e.createBlock(e.setTextRange(e.createNodeArray(o),i),!0),n),432)}(t,m)),t),256);return e.createTry(e.createBlock([e.restoreEnclosingLabel(y,n)]),e.createCatchClause(e.createVariableDeclaration(l),e.setEmitFlags(e.createBlock([e.createExpressionStatement(e.createAssignment(u,e.createObjectLiteral([e.createPropertyAssignment("error",l)])))]),1)),e.createBlock([e.createTry(e.createBlock([e.setEmitFlags(e.createIf(e.createLogicalAnd(e.createLogicalAnd(s,e.createLogicalNot(f)),e.createAssignment(_,e.createPropertyAccess(o,"return"))),e.createExpressionStatement(F(g))),1)]),void 0,e.setEmitFlags(e.createBlock([e.setEmitFlags(e.createIf(u,e.createThrow(e.createPropertyAccess(u,"error"))),1)]),1))]))}(t,n):e.restoreEnclosingLabel(e.visitEachChild(t,D,r),n)}function F(t){return 1&m?e.createYield(void 0,i(r,t)):e.createAwait(t)}function P(t){var n=m;m=0;var i=e.updateConstructor(t,void 0,t.modifiers,e.visitParameterList(t.parameters,D,r),B(t));return m=n,i}function w(t){var n=m;m=0;var i=e.updateGetAccessor(t,void 0,t.modifiers,e.visitNode(t.name,D,e.isPropertyName),e.visitParameterList(t.parameters,D,r),void 0,B(t));return m=n,i}function I(t){var n=m;m=0;var i=e.updateSetAccessor(t,void 0,t.modifiers,e.visitNode(t.name,D,e.isPropertyName),e.visitParameterList(t.parameters,D,r),B(t));return m=n,i}function O(t){var n=m;m=e.getFunctionFlags(t);var i=e.updateMethod(t,void 0,1&m?e.visitNodes(t.modifiers,T,e.isModifier):t.modifiers,2&m?void 0:t.asteriskToken,e.visitNode(t.name,D,e.isPropertyName),e.visitNode(void 0,D,e.isToken),void 0,e.visitParameterList(t.parameters,D,r),void 0,2&m&&1&m?R(t):B(t));return m=n,i}function M(t){var n=m;m=e.getFunctionFlags(t);var i=e.updateFunctionDeclaration(t,void 0,1&m?e.visitNodes(t.modifiers,T,e.isModifier):t.modifiers,2&m?void 0:t.asteriskToken,t.name,void 0,e.visitParameterList(t.parameters,D,r),void 0,2&m&&1&m?R(t):B(t));return m=n,i}function L(t){var n=m;m=e.getFunctionFlags(t);var i=e.updateFunctionExpression(t,1&m?e.visitNodes(t.modifiers,T,e.isModifier):t.modifiers,2&m?void 0:t.asteriskToken,t.name,void 0,e.visitParameterList(t.parameters,D,r),void 0,2&m&&1&m?R(t):B(t));return m=n,i}function R(t){o();var n=[],i=e.addPrologue(n,t.body.statements,!1,D);j(n,t);var a=y,c=h;y=e.createUnderscoreEscapedMap(),h=!1;var l=e.createReturn(function(t,r,n){return t.requestEmitHelper(e.awaitHelper),t.requestEmitHelper(e.asyncGeneratorHelper),(r.emitNode||(r.emitNode={})).flags|=262144,e.createCall(e.getUnscopedHelperName("__asyncGenerator"),void 0,[n?e.createThis():e.createVoidZero(),e.createIdentifier("arguments"),r])}(r,e.createFunctionExpression(void 0,e.createToken(41),t.name&&e.getGeneratedNameForNode(t.name),void 0,[],void 0,e.updateBlock(t.body,e.visitLexicalEnvironment(t.body.statements,D,r,i))),!g)),d=_>=2&&6144&u.getNodeCheckFlags(t);if(d){0==(1&f)&&(f|=1,r.enableSubstitution(195),r.enableSubstitution(193),r.enableSubstitution(194),r.enableEmitNotification(244),r.enableEmitNotification(160),r.enableEmitNotification(162),r.enableEmitNotification(163),r.enableEmitNotification(161),r.enableEmitNotification(224));var p=e.createSuperAccessVariableStatement(u,t,y);x[e.getNodeId(p)]=!0,e.insertStatementsAfterStandardPrologue(n,[p])}n.push(l),e.insertStatementsAfterStandardPrologue(n,s());var m=e.updateBlock(t.body,n);return d&&h&&(4096&u.getNodeCheckFlags(t)?e.addEmitHelper(m,e.advancedAsyncSuperHelper):2048&u.getNodeCheckFlags(t)&&e.addEmitHelper(m,e.asyncSuperHelper)),y=a,h=c,m}function B(t){o();var r=0,n=[],i=e.visitNode(t.body,D,e.isConciseBody);e.isBlock(i)&&(r=e.addPrologue(n,i.statements,!1,D)),e.addRange(n,j(void 0,t));var a=s();if(r>0||e.some(n)||e.some(a)){var c=e.convertToFunctionBody(i,!0);return e.insertStatementsAfterStandardPrologue(n,a),e.addRange(n,c.statements.slice(r)),e.updateBlock(c,e.setTextRange(e.createNodeArray(n),c.statements))}return i}function j(t,n){for(var i=0,a=n.parameters;i<a.length;i++){var o=a[i];if(8192&o.transformFlags){var s=e.getGeneratedNameForNode(o),c=e.flattenDestructuringBinding(o,D,r,1,s,!1,!0);if(e.some(c)){var u=e.createVariableStatement(void 0,e.createVariableDeclarationList(c));e.setEmitFlags(u,1048576),t=e.append(t,u)}}}return t}function K(t){return 101===t.expression.kind?e.setTextRange(e.createPropertyAccess(e.createFileLevelUniqueName("_super"),t.name),t):t}function J(t){return 101===t.expression.kind?(r=t.argumentExpression,n=t,4096&b?e.setTextRange(e.createPropertyAccess(e.createCall(e.createIdentifier("_superIndex"),void 0,[r]),"value"),n):e.setTextRange(e.createCall(e.createIdentifier("_superIndex"),void 0,[r]),n)):t;var r,n}},e.assignHelper={name:"typescript:assign",importName:"__assign",scoped:!1,priority:1,text:"\n var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n };"},e.createAssignHelper=n,e.awaitHelper={name:"typescript:await",importName:"__await",scoped:!1,text:"\n var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }"},e.asyncGeneratorHelper={name:"typescript:asyncGenerator",importName:"__asyncGenerator",scoped:!1,text:'\n var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume("next", value); }\n function reject(value) { resume("throw", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n };'},e.asyncDelegator={name:"typescript:asyncDelegator",importName:"__asyncDelegator",scoped:!1,text:'\n var __asyncDelegator = (this && this.__asyncDelegator) || function (o) {\n var i, p;\n return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }\n };'},e.asyncValues={name:"typescript:asyncValues",importName:"__asyncValues",scoped:!1,text:'\n var __asyncValues = (this && this.__asyncValues) || function (o) {\n if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n };'}}(s||(s={})),function(e){e.transformES2019=function(t){return e.chainBundle((function(n){if(n.isDeclarationFile)return n;return e.visitEachChild(n,r,t)}));function r(n){if(0==(8&n.transformFlags))return n;switch(n.kind){case 278:return function(n){if(!n.variableDeclaration)return e.updateCatchClause(n,e.createVariableDeclaration(e.createTempVariable(void 0)),e.visitNode(n.block,r,e.isBlock));return e.visitEachChild(n,r,t)}(n);default:return e.visitEachChild(n,r,t)}}}}(s||(s={})),function(e){e.transformESNext=function(t){var r=t.hoistVariableDeclaration;return e.chainBundle((function(r){if(r.isDeclarationFile)return r;return e.visitEachChild(r,n,t)}));function n(i){if(0==(4&i.transformFlags))return i;switch(i.kind){case 193:case 194:case 195:if(32&i.flags){var o=a(i,!1);return e.Debug.assertNotNode(o,e.isSyntheticReference),o}return e.visitEachChild(i,n,t);case 208:return 60===i.operatorToken.kind?function(t){var i=[],a=e.visitNode(t.left,n,e.isExpression);if(!e.isIdentifier(a)){var o=e.createTempVariable(r);i.push(e.createAssignment(o,a)),a=o}return i.push(e.createParen(e.createConditional(function(t){return e.createBinary(e.createBinary(t,e.createToken(37),e.createNull()),e.createToken(55),e.createBinary(t,e.createToken(37),e.createVoidZero()))}(a),a,e.visitNode(t.right,n,e.isExpression)))),e.inlineExpressions(i)}(i):e.visitEachChild(i,n,t);default:return e.visitEachChild(i,n,t)}}function i(o,s){switch(o.kind){case 199:return function(t,r){var n=i(t.expression,r);return e.isSyntheticReference(n)?e.createSyntheticReferenceExpression(e.updateParen(t,n.expression),n.thisArg):e.updateParen(t,n)}(o,s);case 193:return function(t,i){if(e.isOptionalChain(t))return a(t,i);var o,s=e.visitNode(t.expression,n,e.isExpression);return e.Debug.assertNotNode(s,e.isSyntheticReference),i&&(o=e.createTempVariable(r),s=e.createParen(e.createAssignment(o,s))),s=e.updatePropertyAccess(t,s,e.visitNode(t.name,n,e.isIdentifier)),o?e.createSyntheticReferenceExpression(s,o):s}(o,s);case 194:return function(t,i){if(e.isOptionalChain(t))return a(t,i);var o,s=e.visitNode(t.expression,n,e.isExpression);return e.Debug.assertNotNode(s,e.isSyntheticReference),i&&(o=e.createTempVariable(r),s=e.createParen(e.createAssignment(o,s))),s=e.updateElementAccess(t,s,e.visitNode(t.argumentExpression,n,e.isExpression)),o?e.createSyntheticReferenceExpression(s,o):s}(o,s);case 195:return function(r,i){return e.isOptionalChain(r)?a(r,i):e.visitEachChild(r,n,t)}(o,s);default:return e.visitNode(o,n,e.isExpression)}}function a(t,a){for(var o,s=function(t){for(var r=[t];!t.questionDotToken&&!e.isTaggedTemplateExpression(t);)t=e.cast(t.expression,e.isOptionalChain),r.unshift(t);return{expression:t.expression,chain:r}}(t),c=s.expression,u=s.chain,l=i(c,e.isCallChain(u[0])),_=e.createTempVariable(r),d=e.isSyntheticReference(l)?l.thisArg:void 0,p=e.isSyntheticReference(l)?l.expression:l,f=_,m=0;m<u.length;m++){var g=u[m];switch(g.kind){case 193:m===u.length-1&&a&&(o=e.createTempVariable(r),f=e.createParen(e.createAssignment(o,f))),f=e.createPropertyAccess(f,e.visitNode(g.name,n,e.isIdentifier));break;case 194:m===u.length-1&&a&&(o=e.createTempVariable(r),f=e.createParen(e.createAssignment(o,f))),f=e.createElementAccess(f,e.visitNode(g.argumentExpression,n,e.isExpression));break;case 195:f=0===m&&d?e.createFunctionCall(f,d,e.visitNodes(g.arguments,n,e.isExpression)):e.createCall(f,void 0,e.visitNodes(g.arguments,n,e.isExpression))}e.setOriginalNode(f,g)}var y=e.createConditional(e.createLogicalOr(e.createStrictEquality(e.createAssignment(_,p),e.createNull()),e.createStrictEquality(_,e.createVoidZero())),e.createVoidZero(),f);return o?e.createSyntheticReferenceExpression(y,o):y}}}(s||(s={})),function(e){e.transformJsx=function(r){var n,i=r.getCompilerOptions();return e.chainBundle((function(t){if(t.isDeclarationFile)return t;n=t;var i=e.visitEachChild(t,a,r);return e.addEmitHelpers(i,r.readEmitHelpers()),i}));function a(t){return 2&t.transformFlags?function(t){switch(t.kind){case 264:return s(t,!1);case 265:return c(t,!1);case 268:return u(t,!1);case 274:return m(t);default:return e.visitEachChild(t,a,r)}}(t):t}function o(t){switch(t.kind){case 11:return function(t){var r=function(t){for(var r,n=0,i=-1,a=0;a<t.length;a++){var o=t.charCodeAt(a);e.isLineBreak(o)?(-1!==n&&-1!==i&&(r=p(r,t.substr(n,i-n+1))),n=-1):e.isWhiteSpaceSingleLine(o)||(i=a,-1===n&&(n=a))}return-1!==n?p(r,t.substr(n)):r}(t.text);return void 0===r?void 0:e.createLiteral(r)}(t);case 274:return m(t);case 264:return s(t,!0);case 265:return c(t,!0);case 268:return u(t,!0);default:return e.Debug.failBadSyntaxKind(t)}}function s(e,t){return l(e.openingElement,e.children,t,e)}function c(e,t){return l(e,void 0,t,e)}function u(t,a){return function(t,a,s,c){var u=e.createExpressionForJsxFragment(r.getEmitResolver().getJsxFactoryEntity(n),i.reactNamespace,e.mapDefined(a,o),t,c);s&&e.startOnNewLine(u);return u}(t.openingFragment,t.children,a,t)}function l(t,a,s,c){var u,l=function t(r){if(264===r.kind)return t(r.openingElement);var n=r.tagName;return e.isIdentifier(n)&&e.isIntrinsicJsxName(n.escapedText)?e.createLiteral(e.idText(n)):e.createExpressionFromEntityName(n)}(t),p=t.attributes.properties;if(0===p.length)u=e.createNull();else{var f=e.flatten(e.spanMap(p,e.isJsxSpreadAttribute,(function(t,r){return r?e.map(t,_):e.createObjectLiteral(e.map(t,d))})));e.isJsxSpreadAttribute(p[0])&&f.unshift(e.createObjectLiteral()),(u=e.singleOrUndefined(f))||(u=e.createAssignHelper(r,f))}var m=e.createExpressionForJsxElement(r.getEmitResolver().getJsxFactoryEntity(n),i.reactNamespace,l,u,e.mapDefined(a,o),t,c);return s&&e.startOnNewLine(m),m}function _(t){return e.visitNode(t.expression,a,e.isExpression)}function d(t){var r=function(t){var r=t.name,n=e.idText(r);return/^[A-Za-z_]\w*$/.test(n)?r:e.createLiteral(n)}(t),i=function(t){if(void 0===t)return e.createTrue();if(10===t.kind){var r=e.createLiteral((i=t.text,((a=f(i))===i?void 0:a)||t.text));return r.singleQuote=void 0!==t.singleQuote?t.singleQuote:!e.isStringDoubleQuoted(t,n),e.setTextRange(r,t)}return 274===t.kind?void 0===t.expression?e.createTrue():m(t):e.Debug.failBadSyntaxKind(t);var i,a}(t.initializer);return e.createPropertyAssignment(r,i)}function p(e,t){var r=f(t);return void 0===e?r:e+" "+r}function f(e){return e.replace(/&((#((\d+)|x([\da-fA-F]+)))|(\w+));/g,(function(e,r,n,i,a,o,s){if(a)return String.fromCharCode(parseInt(a,10));if(o)return String.fromCharCode(parseInt(o,16));var c=t.get(s);return c?String.fromCharCode(c):e}))}function m(t){return e.visitNode(t.expression,a,e.isExpression)}};var t=e.createMapFromTemplate({quot:34,amp:38,apos:39,lt:60,gt:62,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,copy:169,ordf:170,laquo:171,not:172,shy:173,reg:174,macr:175,deg:176,plusmn:177,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,sup1:185,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,Agrave:192,Aacute:193,Acirc:194,Atilde:195,Auml:196,Aring:197,AElig:198,Ccedil:199,Egrave:200,Eacute:201,Ecirc:202,Euml:203,Igrave:204,Iacute:205,Icirc:206,Iuml:207,ETH:208,Ntilde:209,Ograve:210,Oacute:211,Ocirc:212,Otilde:213,Ouml:214,times:215,Oslash:216,Ugrave:217,Uacute:218,Ucirc:219,Uuml:220,Yacute:221,THORN:222,szlig:223,agrave:224,aacute:225,acirc:226,atilde:227,auml:228,aring:229,aelig:230,ccedil:231,egrave:232,eacute:233,ecirc:234,euml:235,igrave:236,iacute:237,icirc:238,iuml:239,eth:240,ntilde:241,ograve:242,oacute:243,ocirc:244,otilde:245,ouml:246,divide:247,oslash:248,ugrave:249,uacute:250,ucirc:251,uuml:252,yacute:253,thorn:254,yuml:255,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830})}(s||(s={})),function(e){e.transformES2016=function(t){var r=t.hoistVariableDeclaration;return e.chainBundle((function(r){if(r.isDeclarationFile)return r;return e.visitEachChild(r,n,t)}));function n(i){if(0==(64&i.transformFlags))return i;switch(i.kind){case 208:return function(i){switch(i.operatorToken.kind){case 66:return function(t){var i,a,o=e.visitNode(t.left,n,e.isExpression),s=e.visitNode(t.right,n,e.isExpression);if(e.isElementAccessExpression(o)){var c=e.createTempVariable(r),u=e.createTempVariable(r);i=e.setTextRange(e.createElementAccess(e.setTextRange(e.createAssignment(c,o.expression),o.expression),e.setTextRange(e.createAssignment(u,o.argumentExpression),o.argumentExpression)),o),a=e.setTextRange(e.createElementAccess(c,u),o)}else if(e.isPropertyAccessExpression(o)){c=e.createTempVariable(r);i=e.setTextRange(e.createPropertyAccess(e.setTextRange(e.createAssignment(c,o.expression),o.expression),o.name),o),a=e.setTextRange(e.createPropertyAccess(c,o.name),o)}else i=o,a=o;return e.setTextRange(e.createAssignment(i,e.createMathPow(a,s,t)),t)}(i);case 42:return function(t){var r=e.visitNode(t.left,n,e.isExpression),i=e.visitNode(t.right,n,e.isExpression);return e.createMathPow(r,i,t)}(i);default:return e.visitEachChild(i,n,t)}}(i);default:return e.visitEachChild(i,n,t)}}}}(s||(s={})),function(e){var r,n,i,a,o;!function(e){e[e.CapturedThis=1]="CapturedThis",e[e.BlockScopedBindings=2]="BlockScopedBindings"}(r||(r={})),function(e){e[e.Body=1]="Body",e[e.Initializer=2]="Initializer"}(n||(n={})),function(e){e[e.ToOriginal=0]="ToOriginal",e[e.ToOutParameter=1]="ToOutParameter"}(i||(i={})),function(e){e[e.Break=2]="Break",e[e.Continue=4]="Continue",e[e.Return=8]="Return"}(a||(a={})),function(e){e[e.None=0]="None",e[e.Function=1]="Function",e[e.ArrowFunction=2]="ArrowFunction",e[e.AsyncFunctionBody=4]="AsyncFunctionBody",e[e.NonStaticClassElement=8]="NonStaticClassElement",e[e.CapturesThis=16]="CapturesThis",e[e.ExportedVariableStatement=32]="ExportedVariableStatement",e[e.TopLevel=64]="TopLevel",e[e.Block=128]="Block",e[e.IterationStatement=256]="IterationStatement",e[e.IterationStatementBlock=512]="IterationStatementBlock",e[e.IterationContainer=1024]="IterationContainer",e[e.ForStatement=2048]="ForStatement",e[e.ForInOrForOfStatement=4096]="ForInOrForOfStatement",e[e.ConstructorWithCapturedSuper=8192]="ConstructorWithCapturedSuper",e[e.AncestorFactsMask=16383]="AncestorFactsMask",e[e.BlockScopeIncludes=0]="BlockScopeIncludes",e[e.BlockScopeExcludes=7104]="BlockScopeExcludes",e[e.SourceFileIncludes=64]="SourceFileIncludes",e[e.SourceFileExcludes=8064]="SourceFileExcludes",e[e.FunctionIncludes=65]="FunctionIncludes",e[e.FunctionExcludes=16286]="FunctionExcludes",e[e.AsyncFunctionBodyIncludes=69]="AsyncFunctionBodyIncludes",e[e.AsyncFunctionBodyExcludes=16278]="AsyncFunctionBodyExcludes",e[e.ArrowFunctionIncludes=66]="ArrowFunctionIncludes",e[e.ArrowFunctionExcludes=15232]="ArrowFunctionExcludes",e[e.ConstructorIncludes=73]="ConstructorIncludes",e[e.ConstructorExcludes=16278]="ConstructorExcludes",e[e.DoOrWhileStatementIncludes=1280]="DoOrWhileStatementIncludes",e[e.DoOrWhileStatementExcludes=0]="DoOrWhileStatementExcludes",e[e.ForStatementIncludes=3328]="ForStatementIncludes",e[e.ForStatementExcludes=5056]="ForStatementExcludes",e[e.ForInOrForOfStatementIncludes=5376]="ForInOrForOfStatementIncludes",e[e.ForInOrForOfStatementExcludes=3008]="ForInOrForOfStatementExcludes",e[e.BlockIncludes=128]="BlockIncludes",e[e.BlockExcludes=6976]="BlockExcludes",e[e.IterationStatementBlockIncludes=512]="IterationStatementBlockIncludes",e[e.IterationStatementBlockExcludes=7104]="IterationStatementBlockExcludes",e[e.NewTarget=16384]="NewTarget",e[e.CapturedLexicalThis=32768]="CapturedLexicalThis",e[e.SubtreeFactsMask=-16384]="SubtreeFactsMask",e[e.ArrowFunctionSubtreeExcludes=0]="ArrowFunctionSubtreeExcludes",e[e.FunctionSubtreeExcludes=49152]="FunctionSubtreeExcludes"}(o||(o={})),e.transformES2015=function(r){var n,i,a,o,s,c,u=r.startLexicalEnvironment,l=r.resumeLexicalEnvironment,_=r.endLexicalEnvironment,d=r.hoistVariableDeclaration,p=r.getCompilerOptions(),f=r.getEmitResolver(),m=r.onSubstituteNode,g=r.onEmitNode;return r.onEmitNode=function(t,r,n){if(1&c&&e.isFunctionLike(r)){var i=y(16286,8&e.getEmitFlags(r)?81:65);return g(t,r,n),void h(i,0,0)}g(t,r,n)},r.onSubstituteNode=function(t,r){if(r=m(t,r),1===t)return function(t){switch(t.kind){case 75:return function(t){if(2&c&&!e.isInternalName(t)){var r=f.getReferencedDeclarationWithCollidingName(t);if(r&&(!e.isClassLike(r)||!function(t,r){var n=e.getParseTreeNode(r);if(!n||n===t||n.end<=t.pos||n.pos>=t.end)return!1;var i=e.getEnclosingBlockScopeContainer(t);for(;n;){if(n===i||n===t)return!1;if(e.isClassElement(n)&&n.parent===t)return!0;n=n.parent}return!1}(r,t)))return e.setTextRange(e.getGeneratedNameForNode(e.getNameOfDeclaration(r)),t)}return t}(t);case 103:return function(t){if(1&c&&16&a)return e.setTextRange(e.createFileLevelUniqueName("_this"),t);return t}(t)}return t}(r);if(e.isIdentifier(r))return function(t){if(2&c&&!e.isInternalName(t)){var r=e.getParseTreeNode(t,e.isIdentifier);if(r&&function(e){switch(e.parent.kind){case 190:case 244:case 247:case 241:return e.parent.name===e&&f.isDeclarationWithCollidingName(e.parent)}return!1}(r))return e.setTextRange(e.getGeneratedNameForNode(r),t)}return t}(r);return r},e.chainBundle((function(t){if(t.isDeclarationFile)return t;n=t,i=t.text;var s=function(t){var r=y(8064,64),n=[],i=[];u();var a=e.addStandardPrologue(n,t.statements,!1);a=e.addCustomPrologue(n,t.statements,a,b),e.addRange(i,e.visitNodes(t.statements,b,e.isStatement,a)),o&&i.push(e.createVariableStatement(void 0,e.createVariableDeclarationList(o)));return e.mergeLexicalEnvironment(n,_()),P(n,t),h(r,0,0),e.updateSourceFileNode(t,e.setTextRange(e.createNodeArray(e.concatenate(n,i)),t.statements))}(t);return e.addEmitHelpers(s,r.readEmitHelpers()),n=void 0,i=void 0,o=void 0,a=0,s}));function y(e,t){var r=a;return a=16383&(a&~e|t),r}function h(e,t,r){a=-16384&(a&~t|r)|e}function v(e){return 0!=(8192&a)&&234===e.kind&&!e.expression}function b(i){return function(t){return 0!=(128&t.transformFlags)||void 0!==s||8192&a&&(e.isStatement(t)||222===t.kind)||e.isIterationStatement(t,!1)&&ie(t)||0!=(33554432&e.getEmitFlags(t))}(i)?function(i){switch(i.kind){case 119:return;case 244:return function(t){var r=e.createVariableDeclaration(e.getLocalName(t,!0),void 0,S(t));e.setOriginalNode(r,t);var n=[],i=e.createVariableStatement(void 0,e.createVariableDeclarationList([r]));if(e.setOriginalNode(i,t),e.setTextRange(i,t),e.startOnNewLine(i),n.push(i),e.hasModifier(t,1)){var a=e.hasModifier(t,512)?e.createExportDefault(e.getLocalName(t)):e.createExternalModuleExport(e.getLocalName(t));e.setOriginalNode(a,i),n.push(a)}var o=e.getEmitFlags(t);0==(4194304&o)&&(n.push(e.createEndOfDeclarationMarker(t)),e.setEmitFlags(i,4194304|o));return e.singleOrMany(n)}(i);case 213:return function(e){return S(e)}(i);case 155:return function(t){return t.dotDotDotToken?void 0:e.isBindingPattern(t.name)?e.setOriginalNode(e.setTextRange(e.createParameter(void 0,void 0,void 0,e.getGeneratedNameForNode(t),void 0,void 0,void 0),t),t):t.initializer?e.setOriginalNode(e.setTextRange(e.createParameter(void 0,void 0,void 0,t.name,void 0,void 0,void 0),t),t):t}(i);case 243:return function(t){var n=s;s=void 0;var i=y(16286,65),o=e.visitParameterList(t.parameters,b,r),c=j(t),u=16384&a?e.getLocalName(t):t.name;return h(i,49152,0),s=n,e.updateFunctionDeclaration(t,void 0,e.visitNodes(t.modifiers,b,e.isModifier),t.asteriskToken,u,void 0,o,void 0,c)}(i);case 201:return function(t){2048&t.transformFlags&&(a|=32768);var n=s;s=void 0;var i=y(15232,66),o=e.createFunctionExpression(void 0,void 0,void 0,void 0,e.visitParameterList(t.parameters,b,r),void 0,j(t));e.setTextRange(o,t),e.setOriginalNode(o,t),e.setEmitFlags(o,8),32768&a&&Ne();return h(i,0,0),s=n,o}(i);case 200:return function(t){var n=262144&e.getEmitFlags(t)?y(16278,69):y(16286,65),i=s;s=void 0;var o=e.visitParameterList(t.parameters,b,r),c=j(t),u=16384&a?e.getLocalName(t):t.name;return h(n,49152,0),s=i,e.updateFunctionExpression(t,void 0,t.asteriskToken,u,void 0,o,void 0,c)}(i);case 241:return U(i);case 75:return function(t){if(!s)return t;if(e.isGeneratedIdentifier(t))return t;if("arguments"!==t.escapedText||!f.isArgumentsLocalBinding(t))return t;return s.argumentsName||(s.argumentsName=e.createUniqueName("arguments"))}(i);case 242:return function(t){if(3&t.flags||65536&t.transformFlags){3&t.flags&&ke();var n=e.flatMap(t.declarations,1&t.flags?z:U),i=e.createVariableDeclarationList(n);return e.setOriginalNode(i,t),e.setTextRange(i,t),e.setCommentRange(i,t),65536&t.transformFlags&&(e.isBindingPattern(t.declarations[0].name)||e.isBindingPattern(e.last(t.declarations).name))&&e.setSourceMapRange(i,function(t){for(var r=-1,n=-1,i=0,a=t;i<a.length;i++){var o=a[i];r=-1===r?o.pos:-1===o.pos?r:Math.min(r,o.pos),n=Math.max(n,o.end)}return e.createRange(r,n)}(n)),i}return e.visitEachChild(t,b,r)}(i);case 236:return function(t){if(void 0!==s){var n=s.allowedNonLabeledJumps;s.allowedNonLabeledJumps|=2;var i=e.visitEachChild(t,b,r);return s.allowedNonLabeledJumps=n,i}return e.visitEachChild(t,b,r)}(i);case 250:return function(t){var n=y(7104,0),i=e.visitEachChild(t,b,r);return h(n,0,0),i}(i);case 222:return function(t,n){if(n)return e.visitEachChild(t,b,r);var i=256&a?y(7104,512):y(6976,128),o=e.visitEachChild(t,b,r);return h(i,0,0),o}(i,!1);case 233:case 232:return function(t){if(s){var n=233===t.kind?2:4;if(!(t.label&&s.labels&&s.labels.get(e.idText(t.label))||!t.label&&s.allowedNonLabeledJumps&n)){var i=void 0,a=t.label;a?233===t.kind?(i="break-"+a.escapedText,_e(s,!0,e.idText(a),i)):(i="continue-"+a.escapedText,_e(s,!1,e.idText(a),i)):233===t.kind?(s.nonLocalJumps|=2,i="break"):(s.nonLocalJumps|=4,i="continue");var o=e.createLiteral(i);if(s.loopOutParameters.length){for(var c=s.loopOutParameters,u=void 0,l=0;l<c.length;l++){var _=ue(c[l],1);u=0===l?_:e.createBinary(u,27,_)}o=e.createBinary(u,27,o)}return e.createReturn(o)}}return e.visitEachChild(t,b,r)}(i);case 237:return function(t){s&&!s.labels&&(s.labels=e.createMap());var r=e.unwrapInnermostStatementOfLabel(t,s&&V);return e.isIterationStatement(r,!1)?function(e,t){switch(e.kind){case 227:case 228:return G(e,t);case 229:return H(e,t);case 230:return Y(e,t);case 231:return X(e,t)}}(r,t):e.restoreEnclosingLabel(e.visitNode(r,b,e.isStatement,e.liftToBlock),t,s&&q)}(i);case 227:case 228:return G(i,void 0);case 229:return H(i,void 0);case 230:return Y(i,void 0);case 231:return X(i,void 0);case 225:return function(t){switch(t.expression.kind){case 199:return e.updateExpressionStatement(t,K(t.expression,!1));case 208:return e.updateExpressionStatement(t,J(t.expression,!1))}return e.visitEachChild(t,b,r)}(i);case 192:return function(t){for(var n=t.properties,i=n.length,o=i,s=i,c=0;c<i;c++){var u=n[c];if(131072&u.transformFlags&&4&a&&c<s&&(s=c),153===u.name.kind){o=c;break}}if(o!==i){s<o&&(o=s);var l=e.createTempVariable(d),_=[],p=e.createAssignment(l,e.setEmitFlags(e.createObjectLiteral(e.visitNodes(n,b,e.isObjectLiteralElementLike,0,o),t.multiLine),65536));return t.multiLine&&e.startOnNewLine(p),_.push(p),function(t,r,n,i){for(var a=r.properties,o=a.length,s=i;s<o;s++){var c=a[s];switch(c.kind){case 162:case 163:var u=e.getAllAccessorDeclarations(r.properties,c);c===u.firstAccessor&&t.push(R(n,u,r,!!r.multiLine));break;case 160:t.push(ge(c,n,r,r.multiLine));break;case 279:t.push(fe(c,n,r.multiLine));break;case 280:t.push(me(c,n,r.multiLine));break;default:e.Debug.failBadSyntaxKind(r)}}}(_,t,l,o),_.push(t.multiLine?e.startOnNewLine(e.getMutableClone(l)):l),e.inlineExpressions(_)}return e.visitEachChild(t,b,r)}(i);case 278:return function(n){var i,a=y(7104,0);if(e.Debug.assert(!!n.variableDeclaration,"Catch clause variable should always be present when downleveling ES2015."),e.isBindingPattern(n.variableDeclaration.name)){var o=e.createTempVariable(void 0),s=e.createVariableDeclaration(o);e.setTextRange(s,n.variableDeclaration);var c=e.flattenDestructuringBinding(n.variableDeclaration,b,r,0,o),u=e.createVariableDeclarationList(c);e.setTextRange(u,n.variableDeclaration);var l=e.createVariableStatement(void 0,u);i=e.updateCatchClause(n,s,(_=n.block,d=l,p=e.visitNodes(_.statements,b,e.isStatement),e.updateBlock(_,t([d],p))))}else i=e.visitEachChild(n,b,r);var _,d,p;return h(a,0,0),i}(i);case 280:return function(t){return e.setTextRange(e.createPropertyAssignment(t.name,e.getSynthesizedClone(t.name)),t)}(i);case 153:return function(t){return e.visitEachChild(t,b,r)}(i);case 191:return function(t){if(e.some(t.elements,e.isSpreadElement))return he(t.elements,!0,!!t.multiLine,!!t.elements.hasTrailingComma);return e.visitEachChild(t,b,r)}(i);case 195:return function(t){if(33554432&e.getEmitFlags(t))return function(t){var r=e.cast(e.cast(e.skipOuterExpressions(t.expression),e.isArrowFunction).body,e.isBlock),n=function(t){return e.isVariableStatement(t)&&!!e.first(t.declarationList.declarations).initializer},i=e.visitNodes(r.statements,b,e.isStatement),a=e.filter(i,n),o=e.filter(i,(function(e){return!n(e)})),s=e.cast(e.first(a),e.isVariableStatement).declarationList.declarations[0],c=e.skipOuterExpressions(s.initializer),u=e.tryCast(c,e.isAssignmentExpression),l=e.cast(u?e.skipOuterExpressions(u.right):c,e.isCallExpression),_=e.cast(e.skipOuterExpressions(l.expression),e.isFunctionExpression),d=_.body.statements,p=0,f=-1,m=[];if(u){var g=e.tryCast(d[p],e.isExpressionStatement);g&&(m.push(g),p++),m.push(d[p]),p++,m.push(e.createExpressionStatement(e.createAssignment(u.left,e.cast(s.name,e.isIdentifier))))}for(;!e.isReturnStatement(e.elementAt(d,f));)f--;e.addRange(m,d,p,f),f<-1&&e.addRange(m,d,f+1);return e.addRange(m,o),e.addRange(m,a,1),e.recreateOuterExpressions(t.expression,e.recreateOuterExpressions(s.initializer,e.recreateOuterExpressions(u&&u.right,e.updateCall(l,e.recreateOuterExpressions(l.expression,e.updateFunctionExpression(_,void 0,void 0,void 0,void 0,_.parameters,void 0,e.updateBlock(_.body,m))),void 0,l.arguments))))}(t);var r=e.skipOuterExpressions(t.expression);if(101===r.kind||e.isSuperProperty(r)||e.some(t.arguments,e.isSpreadElement))return ye(t,!0);return e.updateCall(t,e.visitNode(t.expression,x,e.isExpression),void 0,e.visitNodes(t.arguments,b,e.isExpression))}(i);case 196:return function(n){if(e.some(n.arguments,e.isSpreadElement)){var i=e.createCallBinding(e.createPropertyAccess(n.expression,"bind"),d),a=i.target,o=i.thisArg;return e.createNew(e.createFunctionApply(e.visitNode(a,b,e.isExpression),o,he(e.createNodeArray(t([e.createVoidZero()],n.arguments)),!1,!1,!1)),void 0,[])}return e.visitEachChild(n,b,r)}(i);case 199:return K(i,!0);case 208:return J(i,!0);case 14:case 15:case 16:case 17:return function(t){return e.setTextRange(e.createLiteral(t.text),t)}(i);case 10:return function(t){if(t.hasExtendedUnicodeEscape)return e.setTextRange(e.createLiteral(t.text),t);return t}(i);case 8:return function(t){if(384&t.numericLiteralFlags)return e.setTextRange(e.createNumericLiteral(t.text),t);return t}(i);case 197:return function(t){var i=e.visitNode(t.tag,b,e.isExpression),a=[void 0],s=[],c=[],u=t.template;if(e.isNoSubstitutionTemplateLiteral(u))s.push(e.createLiteral(u.text)),c.push(Ee(u));else{s.push(e.createLiteral(u.head.text)),c.push(Ee(u.head));for(var l=0,_=u.templateSpans;l<_.length;l++){var d=_[l];s.push(e.createLiteral(d.literal.text)),c.push(Ee(d.literal)),a.push(e.visitNode(d.expression,b,e.isExpression))}}var p=function(t,r,n){return t.requestEmitHelper(e.templateObjectHelper),e.createCall(e.getUnscopedHelperName("__makeTemplateObject"),void 0,[r,n])}(r,e.createArrayLiteral(s),e.createArrayLiteral(c));if(e.isExternalModule(n)){var f=e.createUniqueName("templateObject");m=f,o=e.append(o,e.createVariableDeclaration(m)),a[0]=e.createLogicalOr(f,e.createAssignment(f,p))}else a[0]=p;var m;return e.createCall(i,void 0,a)}(i);case 210:return function(t){var r=[];(function(t,r){if(!function(t){return e.Debug.assert(0!==t.templateSpans.length),0!==t.head.text.length||0===t.templateSpans[0].literal.text.length}(r))return;t.push(e.createLiteral(r.head.text))})(r,t),function(t,r){for(var n=0,i=r.templateSpans;n<i.length;n++){var a=i[n];t.push(e.visitNode(a.expression,b,e.isExpression)),0!==a.literal.text.length&&t.push(e.createLiteral(a.literal.text))}}(r,t);var n=e.reduceLeft(r,e.createAdd);e.nodeIsSynthesized(n)&&(n.pos=t.pos,n.end=t.end);return n}(i);case 211:return function(t){return e.visitEachChild(t,b,r)}(i);case 212:return function(t){return e.visitNode(t.expression,b,e.isExpression)}(i);case 101:return Ce(!1);case 103:return function(t){2&a&&(a|=32768);if(s)return 2&a?(s.containsLexicalThis=!0,t):s.thisName||(s.thisName=e.createUniqueName("this"));return t}(i);case 218:return function(t){if(98===t.keywordToken&&"target"===t.name.escapedText)return a|=16384,e.createFileLevelUniqueName("_newTarget");return t}(i);case 160:return function(t){e.Debug.assert(!e.isComputedPropertyName(t.name));var r=B(t,e.moveRangePos(t,-1),void 0,void 0);return e.setEmitFlags(r,512|e.getEmitFlags(r)),e.setTextRange(e.createPropertyAssignment(t.name,r),t)}(i);case 162:case 163:return function(t){e.Debug.assert(!e.isComputedPropertyName(t.name));var n=s;s=void 0;var i,a=y(16286,65),o=e.visitParameterList(t.parameters,b,r),c=j(t);i=162===t.kind?e.updateGetAccessor(t,t.decorators,t.modifiers,t.name,o,t.type,c):e.updateSetAccessor(t,t.decorators,t.modifiers,t.name,o,c);return h(a,49152,0),s=n,i}(i);case 224:return function(t){var n,i=y(0,e.hasModifier(t,1)?32:0);if(s&&0==(3&t.declarationList.flags)){for(var a=void 0,o=0,c=t.declarationList.declarations;o<c.length;o++){var u=c[o];if(oe(s,u),u.initializer){var l=void 0;e.isBindingPattern(u.name)?l=e.flattenDestructuringAssignment(u,b,r,0):(l=e.createBinary(u.name,62,e.visitNode(u.initializer,b,e.isExpression)),e.setTextRange(l,u)),a=e.append(a,l)}}n=a?e.setTextRange(e.createExpressionStatement(e.inlineExpressions(a)),t):void 0}else n=e.visitEachChild(t,b,r);return h(i,0,0),n}(i);case 234:return function(t){if(s)return s.nonLocalJumps|=8,v(t)&&(t=D(t)),e.createReturn(e.createObjectLiteral([e.createPropertyAssignment(e.createIdentifier("value"),t.expression?e.visitNode(t.expression,b,e.isExpression):e.createVoidZero())]));if(v(t))return D(t);return e.visitEachChild(t,b,r)}(i);default:return e.visitEachChild(i,b,r)}}(i):i}function x(e){return 101===e.kind?Ce(!0):b(e)}function D(t){return e.setOriginalNode(e.createReturn(e.createFileLevelUniqueName("_this")),t)}function S(t){t.name&&ke();var o=e.getClassExtendsHeritageElement(t),c=e.createFunctionExpression(void 0,void 0,void 0,void 0,o?[e.createParameter(void 0,void 0,void 0,e.createFileLevelUniqueName("_super"))]:[],void 0,function(t,o){var c=[];u(),function(t,n,i){i&&t.push(e.setTextRange(e.createExpressionStatement(function(t,r){return t.requestEmitHelper(e.extendsHelper),e.createCall(e.getUnscopedHelperName("__extends"),void 0,[r,e.createFileLevelUniqueName("_super")])}(r,e.getInternalName(n))),i))}(c,t,o),function(t,n,i){var o=s;s=void 0;var c=y(16278,73),u=e.getFirstConstructorWithBody(n),d=function(t,r){if(!t||!r)return!1;if(e.some(t.parameters))return!1;var n=e.firstOrUndefined(t.body.statements);if(!n||!e.nodeIsSynthesized(n)||225!==n.kind)return!1;var i=n.expression;if(!e.nodeIsSynthesized(i)||195!==i.kind)return!1;var a=i.expression;if(!e.nodeIsSynthesized(a)||101!==a.kind)return!1;var o=e.singleOrUndefined(i.arguments);if(!o||!e.nodeIsSynthesized(o)||212!==o.kind)return!1;var s=o.expression;return e.isIdentifier(s)&&"arguments"===s.escapedText}(u,void 0!==i),p=e.createFunctionDeclaration(void 0,void 0,void 0,e.getInternalName(n),void 0,function(t,n){return e.visitParameterList(t&&!n?t.parameters:void 0,b,r)||[]}(u,d),void 0,function(t,r,n,i){var o=!!n&&99!==e.skipOuterExpressions(n.expression).kind;if(!t)return function(t,r){var n=[];l(),e.mergeLexicalEnvironment(n,_()),r&&n.push(e.createReturn(E()));var i=e.createNodeArray(n);e.setTextRange(i,t.members);var a=e.createBlock(i,!0);return e.setTextRange(a,t),e.setEmitFlags(a,1536),a}(r,o);var s=[],c=[];l();var u,d=0;i||(d=e.addStandardPrologue(s,t.body.statements,!1));k(c,t),F(c,t,i),i||(d=e.addCustomPrologue(c,t.body.statements,d,b));if(i)u=E();else if(o&&d<t.body.statements.length){var p=t.body.statements[d];e.isExpressionStatement(p)&&e.isSuperCall(p.expression)&&(u=function(e){return ye(e,!1)}(p.expression))}u&&(a|=8192,d++);if(e.addRange(c,e.visitNodes(t.body.statements,b,e.isStatement,d)),e.mergeLexicalEnvironment(s,_()),I(s,t,!1),o)if(!u||d!==t.body.statements.length||2048&t.body.transformFlags)w(c,t,u||T()),function t(r){if(234===r.kind)return!0;if(226===r.kind){var n=r;if(n.elseStatement)return t(n.thenStatement)&&t(n.elseStatement)}else if(222===r.kind){var i=e.lastOrUndefined(r.statements);if(i&&t(i))return!0}return!1}(t.body)||c.push(e.createReturn(e.createFileLevelUniqueName("_this")));else{var f=e.cast(e.cast(u,e.isBinaryExpression).left,e.isCallExpression),m=e.createReturn(u);e.setCommentRange(m,e.getCommentRange(f)),e.setEmitFlags(f,1536),c.push(m)}else P(s,t);var g=e.createBlock(e.setTextRange(e.createNodeArray(e.concatenate(s,c)),t.body.statements),!0);return e.setTextRange(g,t.body),g}(u,n,i,d));e.setTextRange(p,u||n),i&&e.setEmitFlags(p,8);t.push(p),h(c,49152,0),s=o}(c,t,o),function(t,r){for(var i=0,a=r.members;i<a.length;i++){var o=a[i];switch(o.kind){case 221:t.push(O(o));break;case 160:t.push(M(Ae(r,o),o,r));break;case 162:case 163:var s=e.getAllAccessorDeclarations(r.members,o);o===s.firstAccessor&&t.push(L(Ae(r,o),s,r));break;case 161:break;default:e.Debug.failBadSyntaxKind(o,n&&n.fileName)}}}(c,t);var d=e.createTokenRange(e.skipTrivia(i,t.members.end),19),p=e.getInternalName(t),f=e.createPartiallyEmittedExpression(p);f.end=d.end,e.setEmitFlags(f,1536);var m=e.createReturn(f);m.pos=d.pos,e.setEmitFlags(m,1920),c.push(m),e.insertStatementsAfterStandardPrologue(c,_());var g=e.createBlock(e.setTextRange(e.createNodeArray(c),t.members),!0);return e.setEmitFlags(g,1536),g}(t,o));e.setEmitFlags(c,65536&e.getEmitFlags(t)|524288);var d=e.createPartiallyEmittedExpression(c);d.end=t.end,e.setEmitFlags(d,1536);var p=e.createPartiallyEmittedExpression(d);p.end=e.skipTrivia(i,t.pos),e.setEmitFlags(p,1536);var f=e.createParen(e.createCall(p,void 0,o?[e.visitNode(o.expression,b,e.isExpression)]:[]));return e.addSyntheticLeadingComment(f,3,"* @class "),f}function T(){return e.setEmitFlags(e.createThis(),4)}function E(){return e.createLogicalOr(e.createLogicalAnd(e.createStrictInequality(e.createFileLevelUniqueName("_super"),e.createNull()),e.createFunctionApply(e.createFileLevelUniqueName("_super"),T(),e.createIdentifier("arguments"))),T())}function C(t){return void 0!==t.initializer||e.isBindingPattern(t.name)}function k(t,r){if(!e.some(r.parameters,C))return!1;for(var n=!1,i=0,a=r.parameters;i<a.length;i++){var o=a[i],s=o.name,c=o.initializer;o.dotDotDotToken||(e.isBindingPattern(s)?n=N(t,o,s,c)||n:c&&(A(t,o,s,c),n=!0))}return n}function N(t,n,i,a){return i.elements.length>0?(e.insertStatementAfterCustomPrologue(t,e.setEmitFlags(e.createVariableStatement(void 0,e.createVariableDeclarationList(e.flattenDestructuringBinding(n,b,r,0,e.getGeneratedNameForNode(n)))),1048576)),!0):!!a&&(e.insertStatementAfterCustomPrologue(t,e.setEmitFlags(e.createExpressionStatement(e.createAssignment(e.getGeneratedNameForNode(n),e.visitNode(a,b,e.isExpression))),1048576)),!0)}function A(t,r,n,i){i=e.visitNode(i,b,e.isExpression);var a=e.createIf(e.createTypeCheck(e.getSynthesizedClone(n),"undefined"),e.setEmitFlags(e.setTextRange(e.createBlock([e.createExpressionStatement(e.setEmitFlags(e.setTextRange(e.createAssignment(e.setEmitFlags(e.getMutableClone(n),48),e.setEmitFlags(i,1584|e.getEmitFlags(i))),r),1536))]),r),1953));e.startOnNewLine(a),e.setTextRange(a,r),e.setEmitFlags(a,1050528),e.insertStatementAfterCustomPrologue(t,a)}function F(t,n,i){var a=[],o=e.lastOrUndefined(n.parameters);if(!function(e,t){return!(!e||!e.dotDotDotToken||t)}(o,i))return!1;var s=75===o.name.kind?e.getMutableClone(o.name):e.createTempVariable(void 0);e.setEmitFlags(s,48);var c=75===o.name.kind?e.getSynthesizedClone(o.name):s,u=n.parameters.length-1,l=e.createLoopVariable();a.push(e.setEmitFlags(e.setTextRange(e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(s,void 0,e.createArrayLiteral([]))])),o),1048576));var _=e.createFor(e.setTextRange(e.createVariableDeclarationList([e.createVariableDeclaration(l,void 0,e.createLiteral(u))]),o),e.setTextRange(e.createLessThan(l,e.createPropertyAccess(e.createIdentifier("arguments"),"length")),o),e.setTextRange(e.createPostfixIncrement(l),o),e.createBlock([e.startOnNewLine(e.setTextRange(e.createExpressionStatement(e.createAssignment(e.createElementAccess(c,0===u?l:e.createSubtract(l,e.createLiteral(u))),e.createElementAccess(e.createIdentifier("arguments"),l))),o))]));return e.setEmitFlags(_,1048576),e.startOnNewLine(_),a.push(_),75!==o.name.kind&&a.push(e.setEmitFlags(e.setTextRange(e.createVariableStatement(void 0,e.createVariableDeclarationList(e.flattenDestructuringBinding(o,b,r,0,c))),o),1048576)),e.insertStatementsAfterCustomPrologue(t,a),!0}function P(t,r){return!!(32768&a&&201!==r.kind)&&(w(t,r,e.createThis()),!0)}function w(t,r,n){Ne();var i=e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(e.createFileLevelUniqueName("_this"),void 0,n)]));e.setEmitFlags(i,1050112),e.setSourceMapRange(i,r),e.insertStatementAfterCustomPrologue(t,i)}function I(t,r,n){if(16384&a){var i=void 0;switch(r.kind){case 201:return t;case 160:case 162:case 163:i=e.createVoidZero();break;case 161:i=e.createPropertyAccess(e.setEmitFlags(e.createThis(),4),"constructor");break;case 243:case 200:i=e.createConditional(e.createLogicalAnd(e.setEmitFlags(e.createThis(),4),e.createBinary(e.setEmitFlags(e.createThis(),4),97,e.getLocalName(r))),e.createPropertyAccess(e.setEmitFlags(e.createThis(),4),"constructor"),e.createVoidZero());break;default:return e.Debug.failBadSyntaxKind(r)}var o=e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(e.createFileLevelUniqueName("_newTarget"),void 0,i)]));e.setEmitFlags(o,1050112),n&&(t=t.slice()),e.insertStatementAfterCustomPrologue(t,o)}return t}function O(t){return e.setTextRange(e.createEmptyStatement(),t)}function M(t,n,i){var a,o=e.getCommentRange(n),s=e.getSourceMapRange(n),c=B(n,n,void 0,i);if(r.getCompilerOptions().useDefineForClassFields){var u=e.visitNode(n.name,b,e.isPropertyName),l=e.isComputedPropertyName(u)?u.expression:e.isIdentifier(u)?e.createStringLiteral(e.unescapeLeadingUnderscores(u.escapedText)):u;a=e.createObjectDefinePropertyCall(t,l,e.createPropertyDescriptor({value:c,enumerable:!1,writable:!0,configurable:!0}))}else{var _=e.createMemberAccessForPropertyName(t,e.visitNode(n.name,b,e.isPropertyName),n.name);a=e.createAssignment(_,c)}e.setEmitFlags(c,1536),e.setSourceMapRange(c,s);var d=e.setTextRange(e.createExpressionStatement(a),n);return e.setOriginalNode(d,n),e.setCommentRange(d,o),e.setEmitFlags(d,48),d}function L(t,r,n){var i=e.createExpressionStatement(R(t,r,n,!1));return e.setEmitFlags(i,1536),e.setSourceMapRange(i,e.getSourceMapRange(r.firstAccessor)),i}function R(t,r,n,i){var a=r.firstAccessor,o=r.getAccessor,s=r.setAccessor,c=e.getMutableClone(t);e.setEmitFlags(c,1568),e.setSourceMapRange(c,a.name);var u=e.createExpressionForPropertyName(e.visitNode(a.name,b,e.isPropertyName));e.setEmitFlags(u,1552),e.setSourceMapRange(u,a.name);var l=[];if(o){var _=B(o,void 0,void 0,n);e.setSourceMapRange(_,e.getSourceMapRange(o)),e.setEmitFlags(_,512);var d=e.createPropertyAssignment("get",_);e.setCommentRange(d,e.getCommentRange(o)),l.push(d)}if(s){var p=B(s,void 0,void 0,n);e.setSourceMapRange(p,e.getSourceMapRange(s)),e.setEmitFlags(p,512);var f=e.createPropertyAssignment("set",p);e.setCommentRange(f,e.getCommentRange(s)),l.push(f)}l.push(e.createPropertyAssignment("enumerable",e.createTrue()),e.createPropertyAssignment("configurable",e.createTrue()));var m=e.createCall(e.createPropertyAccess(e.createIdentifier("Object"),"defineProperty"),void 0,[c,u,e.createObjectLiteral(l,!0)]);return i&&e.startOnNewLine(m),m}function B(t,n,i,o){var c=s;s=void 0;var u=o&&e.isClassLike(o)&&!e.hasModifier(t,32)?y(16286,73):y(16286,65),l=e.visitParameterList(t.parameters,b,r),_=j(t);return 16384&a&&!i&&(243===t.kind||200===t.kind)&&(i=e.getGeneratedNameForNode(t)),h(u,49152,0),s=c,e.setOriginalNode(e.setTextRange(e.createFunctionExpression(void 0,t.asteriskToken,i,void 0,l,void 0,_),n),t)}function j(t){var r,i,a,o=!1,s=!1,c=[],u=[],d=t.body;if(l(),e.isBlock(d)&&(a=e.addStandardPrologue(c,d.statements,!1)),o=k(u,t)||o,o=F(u,t,!1)||o,e.isBlock(d))a=e.addCustomPrologue(u,d.statements,a,b),r=d.statements,e.addRange(u,e.visitNodes(d.statements,b,e.isStatement,a)),!o&&d.multiLine&&(o=!0);else{e.Debug.assert(201===t.kind),r=e.moveRangeEnd(d,-1);var p=t.equalsGreaterThanToken;e.nodeIsSynthesized(p)||e.nodeIsSynthesized(d)||(e.rangeEndIsOnSameLineAsRangeStart(p,d,n)?s=!0:o=!0);var f=e.visitNode(d,b,e.isExpression),m=e.createReturn(f);e.setTextRange(m,d),e.moveSyntheticComments(m,d),e.setEmitFlags(m,1440),u.push(m),i=d}if(e.mergeLexicalEnvironment(c,_()),I(c,t,!1),P(c,t),e.some(c)&&(o=!0),u.unshift.apply(u,c),e.isBlock(d)&&e.arrayIsEqualTo(u,d.statements))return d;var g=e.createBlock(e.setTextRange(e.createNodeArray(u),r),o);return e.setTextRange(g,t.body),!o&&s&&e.setEmitFlags(g,1),i&&e.setTokenSourceMapRange(g,19,i),e.setOriginalNode(g,t.body),g}function K(t,n){if(!n)switch(t.expression.kind){case 199:return e.updateParen(t,K(t.expression,!1));case 208:return e.updateParen(t,J(t.expression,!1))}return e.visitEachChild(t,b,r)}function J(t,n){return e.isDestructuringAssignment(t)?e.flattenDestructuringAssignment(t,b,r,0,n):e.visitEachChild(t,b,r)}function z(t){var n=t.name;if(e.isBindingPattern(n))return U(t);if(!t.initializer&&function(e){var t=f.getNodeCheckFlags(e),r=262144&t,n=524288&t;return!(0!=(64&a)||r&&n&&0!=(512&a))&&0==(4096&a)&&(!f.isDeclarationWithCollidingName(e)||n&&!r&&0==(6144&a))}(t)){var i=e.getMutableClone(t);return i.initializer=e.createVoidZero(),i}return e.visitEachChild(t,b,r)}function U(t){var n,i=y(32,0);return n=e.isBindingPattern(t.name)?e.flattenDestructuringBinding(t,b,r,0,void 0,0!=(32&i)):e.visitEachChild(t,b,r),h(i,0,0),n}function V(t){s.labels.set(e.idText(t.label),!0)}function q(t){s.labels.set(e.idText(t.label),!1)}function W(t,n,i,o,c){var l=y(t,n),d=function(t,n,i,o){if(!ie(t)){var c=void 0;s&&(c=s.allowedNonLabeledJumps,s.allowedNonLabeledJumps=6);var l=o?o(t,n,void 0,i):e.restoreEnclosingLabel(e.visitEachChild(t,b,r),n,s&&q);return s&&(s.allowedNonLabeledJumps=c),l}var d=function(t){var r;switch(t.kind){case 229:case 230:case 231:var n=t.initializer;n&&242===n.kind&&(r=n)}var i=[],a=[];if(r&&3&e.getCombinedNodeFlags(r))for(var o=re(t),c=0,u=r.declarations;c<u.length;c++){var l=u[c];pe(t,l,i,a,o)}var _={loopParameters:i,loopOutParameters:a};s&&(s.argumentsName&&(_.argumentsName=s.argumentsName),s.thisName&&(_.thisName=s.thisName),s.hoistedLocalVariables&&(_.hoistedLocalVariables=s.hoistedLocalVariables));return _}(t),p=[],f=s;s=d;var m,g=re(t)?function(t,r){var n=e.createUniqueName("_loop_init"),i=0!=(131072&t.initializer.transformFlags),o=0;r.containsLexicalThis&&(o|=8);i&&4&a&&(o|=262144);var s=[];s.push(e.createVariableStatement(void 0,t.initializer)),le(r.loopOutParameters,2,1,s);var c=e.createVariableStatement(void 0,e.setEmitFlags(e.createVariableDeclarationList([e.createVariableDeclaration(n,void 0,e.setEmitFlags(e.createFunctionExpression(void 0,i?e.createToken(41):void 0,void 0,void 0,void 0,void 0,e.visitNode(e.createBlock(s,!0),b,e.isBlock)),o))]),2097152)),u=e.createVariableDeclarationList(e.map(r.loopOutParameters,ce));return{functionName:n,containsYield:i,functionDeclaration:c,part:u}}(t,d):void 0,y=ae(t)?function(t,r,n){var i=e.createUniqueName("_loop");u();var o=e.visitNode(t.statement,b,e.isStatement,e.liftToBlock),s=_(),c=[];(ne(t)||function(t){return e.isForStatement(t)&&!!t.incrementor&&te(t.incrementor)}(t))&&(r.conditionVariable=e.createUniqueName("inc"),c.push(e.createIf(r.conditionVariable,e.createStatement(e.visitNode(t.incrementor,b,e.isExpression)),e.createStatement(e.createAssignment(r.conditionVariable,e.createTrue())))),ne(t)&&c.push(e.createIf(e.createPrefix(53,e.visitNode(t.condition,b,e.isExpression)),e.visitNode(e.createBreak(),b,e.isStatement))));e.isBlock(o)?e.addRange(c,o.statements):c.push(o);le(r.loopOutParameters,1,1,c),e.insertStatementsAfterStandardPrologue(c,s);var l=e.createBlock(c,!0);e.isBlock(o)&&e.setOriginalNode(l,o);var d=0!=(131072&t.statement.transformFlags),p=0;r.containsLexicalThis&&(p|=8);d&&0!=(4&a)&&(p|=262144);var f=e.createVariableStatement(void 0,e.setEmitFlags(e.createVariableDeclarationList([e.createVariableDeclaration(i,void 0,e.setEmitFlags(e.createFunctionExpression(void 0,d?e.createToken(41):void 0,void 0,void 0,r.loopParameters,void 0,l),p))]),2097152)),m=function(t,r,n,i){var a=[],o=!(-5&r.nonLocalJumps||r.labeledNonLocalBreaks||r.labeledNonLocalContinues),s=e.createCall(t,void 0,e.map(r.loopParameters,(function(e){return e.name}))),c=i?e.createYield(e.createToken(41),e.setEmitFlags(s,8388608)):s;if(o)a.push(e.createExpressionStatement(c)),le(r.loopOutParameters,1,0,a);else{var u=e.createUniqueName("state"),l=e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(u,void 0,c)]));if(a.push(l),le(r.loopOutParameters,1,0,a),8&r.nonLocalJumps){var _=void 0;n?(n.nonLocalJumps|=8,_=e.createReturn(u)):_=e.createReturn(e.createPropertyAccess(u,"value")),a.push(e.createIf(e.createBinary(e.createTypeOf(u),36,e.createLiteral("object")),_))}if(2&r.nonLocalJumps&&a.push(e.createIf(e.createBinary(u,36,e.createLiteral("break")),e.createBreak())),r.labeledNonLocalBreaks||r.labeledNonLocalContinues){var d=[];de(r.labeledNonLocalBreaks,!0,u,n,d),de(r.labeledNonLocalContinues,!1,u,n,d),a.push(e.createSwitch(u,e.createCaseBlock(d)))}}return a}(i,r,n,d);return{functionName:i,containsYield:d,functionDeclaration:f,part:m}}(t,d,f):void 0;s=f,g&&p.push(g.functionDeclaration);y&&p.push(y.functionDeclaration);(function(t,r,n){var i;r.argumentsName&&(n?n.argumentsName=r.argumentsName:(i||(i=[])).push(e.createVariableDeclaration(r.argumentsName,void 0,e.createIdentifier("arguments"))));r.thisName&&(n?n.thisName=r.thisName:(i||(i=[])).push(e.createVariableDeclaration(r.thisName,void 0,e.createIdentifier("this"))));if(r.hoistedLocalVariables)if(n)n.hoistedLocalVariables=r.hoistedLocalVariables;else{i||(i=[]);for(var a=0,o=r.hoistedLocalVariables;a<o.length;a++){var s=o[a];i.push(e.createVariableDeclaration(s))}}if(r.loopOutParameters.length){i||(i=[]);for(var c=0,u=r.loopOutParameters;c<u.length;c++){var l=u[c];i.push(e.createVariableDeclaration(l.outParamName))}}r.conditionVariable&&(i||(i=[]),i.push(e.createVariableDeclaration(r.conditionVariable,void 0,e.createFalse())));i&&t.push(e.createVariableStatement(void 0,e.createVariableDeclarationList(i)))})(p,d,f),g&&p.push((h=g.functionName,v=g.containsYield,x=e.createCall(h,void 0,[]),D=v?e.createYield(e.createToken(41),e.setEmitFlags(x,8388608)):x,e.createStatement(D)));var h,v,x,D;if(y)if(o)m=o(t,n,y.part,i);else{var S=se(t,g,e.createBlock(y.part,!0));e.aggregateTransformFlags(S),m=e.restoreEnclosingLabel(S,n,s&&q)}else{var T=se(t,g,e.visitNode(t.statement,b,e.isStatement,e.liftToBlock));e.aggregateTransformFlags(T),m=e.restoreEnclosingLabel(T,n,s&&q)}return p.push(m),p}(i,o,l,c);return h(l,0,0),d}function G(e,t){return W(0,1280,e,t)}function H(e,t){return W(5056,3328,e,t)}function Y(e,t){return W(3008,5376,e,t)}function X(e,t){return W(3008,5376,e,t,p.downlevelIteration?ee:Z)}function Q(t,n,i){var a=[],o=t.initializer;if(e.isVariableDeclarationList(o)){3&t.initializer.flags&&ke();var s=e.firstOrUndefined(o.declarations);if(s&&e.isBindingPattern(s.name)){var c=e.flattenDestructuringBinding(s,b,r,0,n),u=e.setTextRange(e.createVariableDeclarationList(c),t.initializer);e.setOriginalNode(u,t.initializer),e.setSourceMapRange(u,e.createRange(c[0].pos,e.last(c).end)),a.push(e.createVariableStatement(void 0,u))}else a.push(e.setTextRange(e.createVariableStatement(void 0,e.setOriginalNode(e.setTextRange(e.createVariableDeclarationList([e.createVariableDeclaration(s?s.name:e.createTempVariable(void 0),void 0,n)]),e.moveRangePos(o,-1)),o)),e.moveRangeEnd(o,-1)))}else{var l=e.createAssignment(o,n);e.isDestructuringAssignment(l)?(e.aggregateTransformFlags(l),a.push(e.createExpressionStatement(J(l,!1)))):(l.end=o.end,a.push(e.setTextRange(e.createExpressionStatement(e.visitNode(l,b,e.isExpression)),e.moveRangeEnd(o,-1))))}if(i)return $(e.addRange(a,i));var _=e.visitNode(t.statement,b,e.isStatement,e.liftToBlock);return e.isBlock(_)?e.updateBlock(_,e.setTextRange(e.createNodeArray(e.concatenate(a,_.statements)),_.statements)):(a.push(_),$(a))}function $(t){return e.setEmitFlags(e.createBlock(e.createNodeArray(t),!0),432)}function Z(t,r,n){var i=e.visitNode(t.expression,b,e.isExpression),a=e.createLoopVariable(),o=e.isIdentifier(i)?e.getGeneratedNameForNode(i):e.createTempVariable(void 0);e.setEmitFlags(i,48|e.getEmitFlags(i));var c=e.setTextRange(e.createFor(e.setEmitFlags(e.setTextRange(e.createVariableDeclarationList([e.setTextRange(e.createVariableDeclaration(a,void 0,e.createLiteral(0)),e.moveRangePos(t.expression,-1)),e.setTextRange(e.createVariableDeclaration(o,void 0,i),t.expression)]),t.expression),2097152),e.setTextRange(e.createLessThan(a,e.createPropertyAccess(o,"length")),t.expression),e.setTextRange(e.createPostfixIncrement(a),t.expression),Q(t,e.createElementAccess(o,a),n)),t);return e.setEmitFlags(c,256),e.setTextRange(c,t),e.restoreEnclosingLabel(c,r,s&&q)}function ee(t,n,i,a){var o=e.visitNode(t.expression,b,e.isExpression),c=e.isIdentifier(o)?e.getGeneratedNameForNode(o):e.createTempVariable(void 0),u=e.isIdentifier(o)?e.getGeneratedNameForNode(c):e.createTempVariable(void 0),l=e.createUniqueName("e"),_=e.getGeneratedNameForNode(l),p=e.createTempVariable(void 0),f=e.createValuesHelper(r,o,t.expression),m=e.createCall(e.createPropertyAccess(c,"next"),void 0,[]);d(l),d(p);var g=1024&a?e.inlineExpressions([e.createAssignment(l,e.createVoidZero()),f]):f,y=e.setEmitFlags(e.setTextRange(e.createFor(e.setEmitFlags(e.setTextRange(e.createVariableDeclarationList([e.setTextRange(e.createVariableDeclaration(c,void 0,g),t.expression),e.createVariableDeclaration(u,void 0,m)]),t.expression),2097152),e.createLogicalNot(e.createPropertyAccess(u,"done")),e.createAssignment(u,m),Q(t,e.createPropertyAccess(u,"value"),i)),t),256);return e.createTry(e.createBlock([e.restoreEnclosingLabel(y,n,s&&q)]),e.createCatchClause(e.createVariableDeclaration(_),e.setEmitFlags(e.createBlock([e.createExpressionStatement(e.createAssignment(l,e.createObjectLiteral([e.createPropertyAssignment("error",_)])))]),1)),e.createBlock([e.createTry(e.createBlock([e.setEmitFlags(e.createIf(e.createLogicalAnd(e.createLogicalAnd(u,e.createLogicalNot(e.createPropertyAccess(u,"done"))),e.createAssignment(p,e.createPropertyAccess(c,"return"))),e.createExpressionStatement(e.createFunctionCall(p,c,[]))),1)]),void 0,e.setEmitFlags(e.createBlock([e.setEmitFlags(e.createIf(l,e.createThrow(e.createPropertyAccess(l,"error"))),1)]),1))]))}function te(e){return 0!=(131072&f.getNodeCheckFlags(e))}function re(t){return e.isForStatement(t)&&!!t.initializer&&te(t.initializer)}function ne(t){return e.isForStatement(t)&&!!t.condition&&te(t.condition)}function ie(e){return ae(e)||re(e)}function ae(e){return 0!=(65536&f.getNodeCheckFlags(e))}function oe(t,r){t.hoistedLocalVariables||(t.hoistedLocalVariables=[]),function r(n){if(75===n.kind)t.hoistedLocalVariables.push(n);else for(var i=0,a=n.elements;i<a.length;i++){var o=a[i];e.isOmittedExpression(o)||r(o.name)}}(r.name)}function se(t,r,n){switch(t.kind){case 229:return function(t,r,n){var i=t.condition&&te(t.condition),a=i||t.incrementor&&te(t.incrementor);return e.updateFor(t,e.visitNode(r?r.part:t.initializer,b,e.isForInitializer),e.visitNode(i?void 0:t.condition,b,e.isExpression),e.visitNode(a?void 0:t.incrementor,b,e.isExpression),n)}(t,r,n);case 230:return function(t,r){return e.updateForIn(t,e.visitNode(t.initializer,b,e.isForInitializer),e.visitNode(t.expression,b,e.isExpression),r)}(t,n);case 231:return function(t,r){return e.updateForOf(t,void 0,e.visitNode(t.initializer,b,e.isForInitializer),e.visitNode(t.expression,b,e.isExpression),r)}(t,n);case 227:return function(t,r){return e.updateDo(t,r,e.visitNode(t.expression,b,e.isExpression))}(t,n);case 228:return function(t,r){return e.updateWhile(t,e.visitNode(t.expression,b,e.isExpression),r)}(t,n);default:return e.Debug.failBadSyntaxKind(t,"IterationStatement expected")}}function ce(t){return e.createVariableDeclaration(t.originalName,void 0,t.outParamName)}function ue(t,r){var n=0===r?t.outParamName:t.originalName,i=0===r?t.originalName:t.outParamName;return e.createBinary(i,62,n)}function le(t,r,n,i){for(var a=0,o=t;a<o.length;a++){var s=o[a];s.flags&r&&i.push(e.createExpressionStatement(ue(s,n)))}}function _e(t,r,n,i){r?(t.labeledNonLocalBreaks||(t.labeledNonLocalBreaks=e.createMap()),t.labeledNonLocalBreaks.set(n,i)):(t.labeledNonLocalContinues||(t.labeledNonLocalContinues=e.createMap()),t.labeledNonLocalContinues.set(n,i))}function de(t,r,n,i,a){t&&t.forEach((function(t,o){var s=[];if(!i||i.labels&&i.labels.get(o)){var c=e.createIdentifier(o);s.push(r?e.createBreak(c):e.createContinue(c))}else _e(i,r,o,t),s.push(e.createReturn(n));a.push(e.createCaseClause(e.createLiteral(t),s))}))}function pe(t,r,n,i,a){var o=r.name;if(e.isBindingPattern(o))for(var s=0,c=o.elements;s<c.length;s++){var u=c[s];e.isOmittedExpression(u)||pe(t,u,n,i,a)}else{n.push(e.createParameter(void 0,void 0,void 0,o));var l=f.getNodeCheckFlags(r);if(4194304&l||a){var _=e.createUniqueName("out_"+e.idText(o)),d=0;4194304&l&&(d|=1),e.isForStatement(t)&&t.initializer&&f.isBindingCapturedByNode(t.initializer,r)&&(d|=2),i.push({flags:d,originalName:o,outParamName:_})}}}function fe(t,r,n){var i=e.createAssignment(e.createMemberAccessForPropertyName(r,e.visitNode(t.name,b,e.isPropertyName)),e.visitNode(t.initializer,b,e.isExpression));return e.setTextRange(i,t),n&&e.startOnNewLine(i),i}function me(t,r,n){var i=e.createAssignment(e.createMemberAccessForPropertyName(r,e.visitNode(t.name,b,e.isPropertyName)),e.getSynthesizedClone(t.name));return e.setTextRange(i,t),n&&e.startOnNewLine(i),i}function ge(t,r,n,i){var a=e.createAssignment(e.createMemberAccessForPropertyName(r,e.visitNode(t.name,b,e.isPropertyName)),B(t,t,void 0,n));return e.setTextRange(a,t),i&&e.startOnNewLine(a),a}function ye(t,n){if(4096&t.transformFlags||101===t.expression.kind||e.isSuperProperty(e.skipOuterExpressions(t.expression))){var i=e.createCallBinding(t.expression,d),a=i.target,o=i.thisArg;101===t.expression.kind&&e.setEmitFlags(o,4);var s=void 0;if(s=4096&t.transformFlags?e.createFunctionApply(e.visitNode(a,x,e.isExpression),101===t.expression.kind?o:e.visitNode(o,b,e.isExpression),he(t.arguments,!1,!1,!1)):e.createFunctionCall(e.visitNode(a,x,e.isExpression),101===t.expression.kind?o:e.visitNode(o,b,e.isExpression),e.visitNodes(t.arguments,b,e.isExpression),t),101===t.expression.kind){var c=e.createLogicalOr(s,T());s=n?e.createAssignment(e.createFileLevelUniqueName("_this"),c):c}return e.setOriginalNode(s,t)}return e.visitEachChild(t,b,r)}function he(t,n,i,a){var o=t.length,s=e.flatten(e.spanMap(t,xe,(function(e,t,r,n){return t(e,i,a&&n===o)})));if(p.downlevelIteration){if(1===s.length)if(be(c=s[0],"___spread"))return s[0];return e.createSpreadHelper(r,s)}if(1===s.length){var c=s[0];if(!n||function(t){return e.isArrayLiteralExpression(t)&&e.every(t.elements,ve)}(c)||be(c,"___spreadArrays"))return s[0]}return e.createSpreadArraysHelper(r,s)}function ve(t){return!e.isOmittedExpression(t)}function be(t,r){return e.isCallExpression(t)&&e.isIdentifier(t.expression)&&4096&e.getEmitFlags(t.expression)&&t.expression.escapedText===r}function xe(t){return e.isSpreadElement(t)?De:Se}function De(t){return e.map(t,Te)}function Se(t,r,n){return e.createArrayLiteral(e.visitNodes(e.createNodeArray(t,n),b,e.isExpression),r)}function Te(t){return e.visitNode(t.expression,b,e.isExpression)}function Ee(t){var r=t.rawText;if(void 0===r){r=e.getSourceTextOfNodeFromSourceFile(n,t);var i=14===t.kind||17===t.kind;r=r.substring(1,r.length-(i?1:2))}return r=r.replace(/\r\n?/g,"\n"),e.setTextRange(e.createLiteral(r),t)}function Ce(t){return 8&a&&!t?e.createPropertyAccess(e.createFileLevelUniqueName("_super"),"prototype"):e.createFileLevelUniqueName("_super")}function ke(){0==(2&c)&&(c|=2,r.enableSubstitution(75))}function Ne(){0==(1&c)&&(c|=1,r.enableSubstitution(103),r.enableEmitNotification(161),r.enableEmitNotification(160),r.enableEmitNotification(162),r.enableEmitNotification(163),r.enableEmitNotification(201),r.enableEmitNotification(200),r.enableEmitNotification(243))}function Ae(t,r){return e.hasModifier(r,32)?e.getInternalName(t):e.createPropertyAccess(e.getInternalName(t),"prototype")}},e.extendsHelper={name:"typescript:extends",importName:"__extends",scoped:!1,priority:0,text:"\n var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n })();"},e.templateObjectHelper={name:"typescript:makeTemplateObject",importName:"__makeTemplateObject",scoped:!1,priority:0,text:'\n var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n };'}}(s||(s={})),function(e){e.transformES5=function(t){var r,n,i=t.getCompilerOptions();1!==i.jsx&&3!==i.jsx||(r=t.onEmitNode,t.onEmitNode=function(t,i,a){switch(i.kind){case 266:case 267:case 265:var o=i.tagName;n[e.getOriginalNodeId(o)]=!0}r(t,i,a)},t.enableEmitNotification(266),t.enableEmitNotification(267),t.enableEmitNotification(265),n=[]);var a=t.onSubstituteNode;return t.onSubstituteNode=function(t,r){if(r.id&&n&&n[r.id])return a(t,r);if(r=a(t,r),e.isPropertyAccessExpression(r))return function(t){var r=o(t.name);if(r)return e.setTextRange(e.createElementAccess(t.expression,r),t);return t}(r);if(e.isPropertyAssignment(r))return function(t){var r=e.isIdentifier(t.name)&&o(t.name);if(r)return e.updatePropertyAssignment(t,r,t.initializer);return t}(r);return r},t.enableSubstitution(193),t.enableSubstitution(279),e.chainBundle((function(e){return e}));function o(t){var r=t.originalKeywordKind||(e.nodeIsSynthesized(t)?e.stringToToken(e.idText(t)):void 0);if(void 0!==r&&r>=76&&r<=111)return e.setTextRange(e.createLiteral(t),t)}}}(s||(s={})),function(e){var r,n,i,a,o;!function(e){e[e.Nop=0]="Nop",e[e.Statement=1]="Statement",e[e.Assign=2]="Assign",e[e.Break=3]="Break",e[e.BreakWhenTrue=4]="BreakWhenTrue",e[e.BreakWhenFalse=5]="BreakWhenFalse",e[e.Yield=6]="Yield",e[e.YieldStar=7]="YieldStar",e[e.Return=8]="Return",e[e.Throw=9]="Throw",e[e.Endfinally=10]="Endfinally"}(r||(r={})),function(e){e[e.Open=0]="Open",e[e.Close=1]="Close"}(n||(n={})),function(e){e[e.Exception=0]="Exception",e[e.With=1]="With",e[e.Switch=2]="Switch",e[e.Loop=3]="Loop",e[e.Labeled=4]="Labeled"}(i||(i={})),function(e){e[e.Try=0]="Try",e[e.Catch=1]="Catch",e[e.Finally=2]="Finally",e[e.Done=3]="Done"}(a||(a={})),function(e){e[e.Next=0]="Next",e[e.Throw=1]="Throw",e[e.Return=2]="Return",e[e.Break=3]="Break",e[e.Yield=4]="Yield",e[e.YieldStar=5]="YieldStar",e[e.Catch=6]="Catch",e[e.Endfinally=7]="Endfinally"}(o||(o={})),e.transformGenerators=function(r){var n,i,a,o,s,c,u,l,_,d,p=r.resumeLexicalEnvironment,f=r.endLexicalEnvironment,m=r.hoistFunctionDeclaration,g=r.hoistVariableDeclaration,y=r.getCompilerOptions(),h=e.getEmitScriptTarget(y),v=r.getEmitResolver(),b=r.onSubstituteNode;r.onSubstituteNode=function(t,r){if(r=b(t,r),1===t)return function(t){if(e.isIdentifier(t))return function(t){if(!e.isGeneratedIdentifier(t)&&n&&n.has(e.idText(t))){var r=e.getOriginalNode(t);if(e.isIdentifier(r)&&r.parent){var a=v.getReferencedValueDeclaration(r);if(a){var o=i[e.getOriginalNodeId(a)];if(o){var s=e.getMutableClone(o);return e.setSourceMapRange(s,t),e.setCommentRange(s,t),s}}}}return t}(t);return t}(r);return r};var x,D,S,T,E,C,k,N,A,F,P,w,I=1,O=0,M=0;return e.chainBundle((function(t){if(t.isDeclarationFile||0==(256&t.transformFlags))return t;var n=e.visitEachChild(t,L,r);return e.addEmitHelpers(n,r.readEmitHelpers()),n}));function L(t){var n=t.transformFlags;return o?function(t){switch(t.kind){case 227:case 228:return function(t){return o?(ne(),t=e.visitEachChild(t,L,r),ae(),t):e.visitEachChild(t,L,r)}(t);case 236:return function(t){o&&Z({kind:2,isScript:!0,breakLabel:-1});t=e.visitEachChild(t,L,r),o&&oe();return t}(t);case 237:return function(t){o&&Z({kind:4,isScript:!0,labelText:e.idText(t.label),breakLabel:-1});t=e.visitEachChild(t,L,r),o&&se();return t}(t);default:return R(t)}}(t):a?R(t):e.isFunctionLikeDeclaration(t)&&t.asteriskToken?function(t){switch(t.kind){case 243:return B(t);case 200:return j(t);default:return e.Debug.failBadSyntaxKind(t)}}(t):256&n?e.visitEachChild(t,L,r):t}function R(t){switch(t.kind){case 243:return B(t);case 200:return j(t);case 162:case 163:return function(t){var n=a,i=o;return a=!1,o=!1,t=e.visitEachChild(t,L,r),a=n,o=i,t}(t);case 224:return function(t){if(131072&t.transformFlags)return void q(t.declarationList);if(1048576&e.getEmitFlags(t))return t;for(var r=0,n=t.declarationList.declarations;r<n.length;r++){var i=n[r];g(i.name)}var a=e.getInitializedVariables(t.declarationList);if(0===a.length)return;return e.setSourceMapRange(e.createExpressionStatement(e.inlineExpressions(e.map(a,W))),t)}(t);case 229:return function(t){o&&ne();var n=t.initializer;if(n&&e.isVariableDeclarationList(n)){for(var i=0,a=n.declarations;i<a.length;i++){var s=a[i];g(s.name)}var c=e.getInitializedVariables(n);t=e.updateFor(t,c.length>0?e.inlineExpressions(e.map(c,W)):void 0,e.visitNode(t.condition,L,e.isExpression),e.visitNode(t.incrementor,L,e.isExpression),e.visitNode(t.statement,L,e.isStatement,e.liftToBlock))}else t=e.visitEachChild(t,L,r);o&&ae();return t}(t);case 230:return function(t){o&&ne();var n=t.initializer;if(e.isVariableDeclarationList(n)){for(var i=0,a=n.declarations;i<a.length;i++){var s=a[i];g(s.name)}t=e.updateForIn(t,n.declarations[0].name,e.visitNode(t.expression,L,e.isExpression),e.visitNode(t.statement,L,e.isStatement,e.liftToBlock))}else t=e.visitEachChild(t,L,r);o&&ae();return t}(t);case 233:return function(t){if(o){var n=de(t.label&&e.idText(t.label));if(n>0)return ge(n,t)}return e.visitEachChild(t,L,r)}(t);case 232:return function(t){if(o){var n=pe(t.label&&e.idText(t.label));if(n>0)return ge(n,t)}return e.visitEachChild(t,L,r)}(t);case 234:return function(t){return r=e.visitNode(t.expression,L,e.isExpression),n=t,e.setTextRange(e.createReturn(e.createArrayLiteral(r?[me(2),r]:[me(2)])),n);var r,n}(t);default:return 131072&t.transformFlags?function(t){switch(t.kind){case 208:return function(t){var n=e.getExpressionAssociativity(t);switch(n){case 0:return function(t){if(G(t.right)){if(e.isLogicalOperator(t.operatorToken.kind))return function(t){var r=Q(),n=X();ve(n,e.visitNode(t.left,L,e.isExpression),t.left),55===t.operatorToken.kind?De(r,n,t.left):xe(r,n,t.left);return ve(n,e.visitNode(t.right,L,e.isExpression),t.right),$(r),n}(t);if(27===t.operatorToken.kind)return function(t){var r=[];return n(t.left),n(t.right),e.inlineExpressions(r);function n(t){e.isBinaryExpression(t)&&27===t.operatorToken.kind?(n(t.left),n(t.right)):(G(t)&&r.length>0&&(Se(1,[e.createExpressionStatement(e.inlineExpressions(r))]),r=[]),r.push(e.visitNode(t,L,e.isExpression)))}}(t);var n=e.getMutableClone(t);return n.left=Y(e.visitNode(t.left,L,e.isExpression)),n.right=e.visitNode(t.right,L,e.isExpression),n}return e.visitEachChild(t,L,r)}(t);case 1:return function(t){var n=t.left,i=t.right;if(G(i)){var a=void 0;switch(n.kind){case 193:a=e.updatePropertyAccess(n,Y(e.visitNode(n.expression,L,e.isLeftHandSideExpression)),n.name);break;case 194:a=e.updateElementAccess(n,Y(e.visitNode(n.expression,L,e.isLeftHandSideExpression)),Y(e.visitNode(n.argumentExpression,L,e.isExpression)));break;default:a=e.visitNode(n,L,e.isExpression)}var o=t.operatorToken.kind;return(s=o)>=63&&s<=74?e.setTextRange(e.createAssignment(a,e.setTextRange(e.createBinary(Y(a),function(e){switch(e){case 63:return 39;case 64:return 40;case 65:return 41;case 66:return 42;case 67:return 43;case 68:return 44;case 69:return 47;case 70:return 48;case 71:return 49;case 72:return 50;case 73:return 51;case 74:return 52}}(o),e.visitNode(i,L,e.isExpression)),t)),t):e.updateBinary(t,a,e.visitNode(i,L,e.isExpression))}var s;return e.visitEachChild(t,L,r)}(t);default:return e.Debug.assertNever(n)}}(t);case 209:return function(t){if(G(t.whenTrue)||G(t.whenFalse)){var n=Q(),i=Q(),a=X();return De(n,e.visitNode(t.condition,L,e.isExpression),t.condition),ve(a,e.visitNode(t.whenTrue,L,e.isExpression),t.whenTrue),be(i),$(n),ve(a,e.visitNode(t.whenFalse,L,e.isExpression),t.whenFalse),$(i),a}return e.visitEachChild(t,L,r)}(t);case 211:return function(t){var n=Q(),i=e.visitNode(t.expression,L,e.isExpression);if(t.asteriskToken){!function(e,t){Se(7,[e],t)}(0==(8388608&e.getEmitFlags(t.expression))?e.createValuesHelper(r,i,t):i,t)}else!function(e,t){Se(6,[e],t)}(i,t);return $(n),function(t){return e.setTextRange(e.createCall(e.createPropertyAccess(T,"sent"),void 0,[]),t)}(t)}(t);case 191:return function(e){return J(e.elements,void 0,void 0,e.multiLine)}(t);case 192:return function(t){var r=t.properties,n=t.multiLine,i=H(r),a=X();ve(a,e.createObjectLiteral(e.visitNodes(r,L,e.isObjectLiteralElementLike,0,i),n));var o=e.reduceLeft(r,(function(r,i){G(i)&&r.length>0&&(he(e.createExpressionStatement(e.inlineExpressions(r))),r=[]);var o=e.createExpressionForObjectLiteralElementLike(t,i,a),s=e.visitNode(o,L,e.isExpression);s&&(n&&e.startOnNewLine(s),r.push(s));return r}),[],i);return o.push(n?e.startOnNewLine(e.getMutableClone(a)):a),e.inlineExpressions(o)}(t);case 194:return function(t){if(G(t.argumentExpression)){var n=e.getMutableClone(t);return n.expression=Y(e.visitNode(t.expression,L,e.isLeftHandSideExpression)),n.argumentExpression=e.visitNode(t.argumentExpression,L,e.isExpression),n}return e.visitEachChild(t,L,r)}(t);case 195:return function(t){if(!e.isImportCall(t)&&e.forEach(t.arguments,G)){var n=e.createCallBinding(t.expression,g,h,!0),i=n.target,a=n.thisArg;return e.setOriginalNode(e.createFunctionApply(Y(e.visitNode(i,L,e.isLeftHandSideExpression)),a,J(t.arguments),t),t)}return e.visitEachChild(t,L,r)}(t);case 196:return function(t){if(e.forEach(t.arguments,G)){var n=e.createCallBinding(e.createPropertyAccess(t.expression,"bind"),g),i=n.target,a=n.thisArg;return e.setOriginalNode(e.setTextRange(e.createNew(e.createFunctionApply(Y(e.visitNode(i,L,e.isExpression)),a,J(t.arguments,e.createVoidZero())),void 0,[]),t),t)}return e.visitEachChild(t,L,r)}(t);default:return e.visitEachChild(t,L,r)}}(t):262400&t.transformFlags?e.visitEachChild(t,L,r):t}}function B(t){if(t.asteriskToken)t=e.setOriginalNode(e.setTextRange(e.createFunctionDeclaration(void 0,t.modifiers,void 0,t.name,void 0,e.visitParameterList(t.parameters,L,r),void 0,K(t.body)),t),t);else{var n=a,i=o;a=!1,o=!1,t=e.visitEachChild(t,L,r),a=n,o=i}return a?void m(t):t}function j(t){if(t.asteriskToken)t=e.setOriginalNode(e.setTextRange(e.createFunctionExpression(void 0,void 0,t.name,void 0,e.visitParameterList(t.parameters,L,r),void 0,K(t.body)),t),t);else{var n=a,i=o;a=!1,o=!1,t=e.visitEachChild(t,L,r),a=n,o=i}return t}function K(t){var r=[],n=a,i=o,m=s,g=c,y=u,h=l,v=_,b=d,E=I,C=x,k=D,N=S,A=T;a=!0,o=!1,s=void 0,c=void 0,u=void 0,l=void 0,_=void 0,d=void 0,I=1,x=void 0,D=void 0,S=void 0,T=e.createTempVariable(void 0),p();var F=e.addPrologue(r,t.statements,!1,L);z(t.statements,F);var P=Te();return e.insertStatementsAfterStandardPrologue(r,f()),r.push(e.createReturn(P)),a=n,o=i,s=m,c=g,u=y,l=h,_=v,d=b,I=E,x=C,D=k,S=N,T=A,e.setTextRange(e.createBlock(r,t.multiLine),t)}function J(r,n,i,a){var o,s=H(r);if(s>0){o=X();var c=e.visitNodes(r,L,e.isExpression,0,s);ve(o,e.createArrayLiteral(n?t([n],c):c)),n=void 0}var u=e.reduceLeft(r,(function(r,i){if(G(i)&&r.length>0){var s=void 0!==o;o||(o=X()),ve(o,s?e.createArrayConcat(o,[e.createArrayLiteral(r,a)]):e.createArrayLiteral(n?t([n],r):r,a)),n=void 0,r=[]}return r.push(e.visitNode(i,L,e.isExpression)),r}),[],s);return o?e.createArrayConcat(o,[e.createArrayLiteral(u,a)]):e.setTextRange(e.createArrayLiteral(n?t([n],u):u,a),i)}function z(e,t){void 0===t&&(t=0);for(var r=e.length,n=t;n<r;n++)V(e[n])}function U(t){e.isBlock(t)?z(t.statements):V(t)}function V(t){var a=o;o||(o=G(t)),function(t){switch(t.kind){case 222:return function(t){G(t)?z(t.statements):he(e.visitNode(t,L,e.isStatement))}(t);case 225:return function(t){he(e.visitNode(t,L,e.isStatement))}(t);case 226:return function(t){if(G(t))if(G(t.thenStatement)||G(t.elseStatement)){var r=Q(),n=t.elseStatement?Q():void 0;De(t.elseStatement?n:r,e.visitNode(t.expression,L,e.isExpression),t.expression),U(t.thenStatement),t.elseStatement&&(be(r),$(n),U(t.elseStatement)),$(r)}else he(e.visitNode(t,L,e.isStatement));else he(e.visitNode(t,L,e.isStatement))}(t);case 227:return function(t){if(G(t)){var r=Q(),n=Q();ie(r),$(n),U(t.statement),$(r),xe(n,e.visitNode(t.expression,L,e.isExpression)),ae()}else he(e.visitNode(t,L,e.isStatement))}(t);case 228:return function(t){if(G(t)){var r=Q(),n=ie(r);$(r),De(n,e.visitNode(t.expression,L,e.isExpression)),U(t.statement),be(r),ae()}else he(e.visitNode(t,L,e.isStatement))}(t);case 229:return function(t){if(G(t)){var r=Q(),n=Q(),i=ie(n);if(t.initializer){var a=t.initializer;e.isVariableDeclarationList(a)?q(a):he(e.setTextRange(e.createExpressionStatement(e.visitNode(a,L,e.isExpression)),a))}$(r),t.condition&&De(i,e.visitNode(t.condition,L,e.isExpression)),U(t.statement),$(n),t.incrementor&&he(e.setTextRange(e.createExpressionStatement(e.visitNode(t.incrementor,L,e.isExpression)),t.incrementor)),be(r),ae()}else he(e.visitNode(t,L,e.isStatement))}(t);case 230:return function(t){if(G(t)){var r=X(),n=X(),i=e.createLoopVariable(),a=t.initializer;g(i),ve(r,e.createArrayLiteral()),he(e.createForIn(n,e.visitNode(t.expression,L,e.isExpression),e.createExpressionStatement(e.createCall(e.createPropertyAccess(r,"push"),void 0,[n])))),ve(i,e.createLiteral(0));var o=Q(),s=Q(),c=ie(s);$(o),De(c,e.createLessThan(i,e.createPropertyAccess(r,"length")));var u=void 0;if(e.isVariableDeclarationList(a)){for(var l=0,_=a.declarations;l<_.length;l++){var d=_[l];g(d.name)}u=e.getSynthesizedClone(a.declarations[0].name)}else u=e.visitNode(a,L,e.isExpression),e.Debug.assert(e.isLeftHandSideExpression(u));ve(u,e.createElementAccess(r,i)),U(t.statement),$(s),he(e.createExpressionStatement(e.createPostfixIncrement(i))),be(o),ae()}else he(e.visitNode(t,L,e.isStatement))}(t);case 232:return function(t){var r=pe(t.label?e.idText(t.label):void 0);r>0?be(r,t):he(t)}(t);case 233:return function(t){var r=de(t.label?e.idText(t.label):void 0);r>0?be(r,t):he(t)}(t);case 234:return function(t){r=e.visitNode(t.expression,L,e.isExpression),n=t,Se(8,[r],n);var r,n}(t);case 235:return function(t){G(t)?(r=Y(e.visitNode(t.expression,L,e.isExpression)),n=Q(),i=Q(),$(n),Z({kind:1,expression:r,startLabel:n,endLabel:i}),U(t.statement),e.Debug.assert(1===re()),$(ee().endLabel)):he(e.visitNode(t,L,e.isStatement));var r,n,i}(t);case 236:return function(t){if(G(t.caseBlock)){for(var r=t.caseBlock,n=r.clauses.length,i=(Z({kind:2,isScript:!1,breakLabel:p=Q()}),p),a=Y(e.visitNode(t.expression,L,e.isExpression)),o=[],s=-1,c=0;c<n;c++){var u=r.clauses[c];o.push(Q()),276===u.kind&&-1===s&&(s=c)}for(var l=0,_=[];l<n;){var d=0;for(c=l;c<n;c++){if(275===(u=r.clauses[c]).kind){if(G(u.expression)&&_.length>0)break;_.push(e.createCaseClause(e.visitNode(u.expression,L,e.isExpression),[ge(o[c],u.expression)]))}else d++}_.length&&(he(e.createSwitch(a,e.createCaseBlock(_))),l+=_.length,_=[]),d>0&&(l+=d,d=0)}be(s>=0?o[s]:i);for(c=0;c<n;c++)$(o[c]),z(r.clauses[c].statements);oe()}else he(e.visitNode(t,L,e.isStatement));var p}(t);case 237:return function(t){G(t)?(r=e.idText(t.label),n=Q(),Z({kind:4,isScript:!1,labelText:r,breakLabel:n}),U(t.statement),se()):he(e.visitNode(t,L,e.isStatement));var r,n}(t);case 238:return function(t){r=e.visitNode(t.expression,L,e.isExpression),n=t,Se(9,[r],n);var r,n}(t);case 239:return function(t){G(t)?(a=Q(),o=Q(),$(a),Z({kind:0,state:0,startLabel:a,endLabel:o}),ye(),U(t.tryBlock),t.catchClause&&(!function(t){var a;if(e.Debug.assert(0===re()),e.isGeneratedIdentifier(t.name))a=t.name,g(t.name);else{var o=e.idText(t.name);a=X(o),n||(n=e.createMap(),i=[],r.enableSubstitution(75)),n.set(o,!0),i[e.getOriginalNodeId(t)]=a}var s=te();e.Debug.assert(s.state<1),be(s.endLabel);var c=Q();$(c),s.state=1,s.catchVariable=a,s.catchLabel=c,ve(a,e.createCall(e.createPropertyAccess(T,"sent"),void 0,[])),ye()}(t.catchClause.variableDeclaration),U(t.catchClause.block)),t.finallyBlock&&(!function(){e.Debug.assert(0===re());var t=te();e.Debug.assert(t.state<2),be(t.endLabel);var r=Q();$(r),t.state=2,t.finallyLabel=r}(),U(t.finallyBlock)),function(){e.Debug.assert(0===re());var t=ee();t.state<2?be(t.endLabel):Se(10);$(t.endLabel),ye(),t.state=3}()):he(e.visitEachChild(t,L,r));var a,o}(t);default:he(e.visitNode(t,L,e.isStatement))}}(t),o=a}function q(t){for(var r=0,n=t.declarations;r<n.length;r++){var i=n[r],a=e.getSynthesizedClone(i.name);e.setCommentRange(a,i.name),g(a)}for(var o=e.getInitializedVariables(t),s=o.length,c=0,u=[];c<s;){for(var l=c;l<s;l++){if(G((i=o[l]).initializer)&&u.length>0)break;u.push(W(i))}u.length&&(he(e.createExpressionStatement(e.inlineExpressions(u))),c+=u.length,u=[])}}function W(t){return e.setSourceMapRange(e.createAssignment(e.setSourceMapRange(e.getSynthesizedClone(t.name),t.name),e.visitNode(t.initializer,L,e.isExpression)),t)}function G(e){return!!e&&0!=(131072&e.transformFlags)}function H(e){for(var t=e.length,r=0;r<t;r++)if(G(e[r]))return r;return-1}function Y(t){if(e.isGeneratedIdentifier(t)||4096&e.getEmitFlags(t))return t;var r=e.createTempVariable(g);return ve(r,t,t),r}function X(t){var r=t?e.createUniqueName(t):e.createTempVariable(void 0);return g(r),r}function Q(){_||(_=[]);var e=I;return I++,_[e]=-1,e}function $(t){e.Debug.assert(void 0!==_,"No labels were defined."),_[t]=x?x.length:0}function Z(e){s||(s=[],u=[],c=[],l=[]);var t=u.length;return u[t]=0,c[t]=x?x.length:0,s[t]=e,l.push(e),t}function ee(){var t=te();if(void 0===t)return e.Debug.fail("beginBlock was never called.");var r=u.length;return u[r]=1,c[r]=x?x.length:0,s[r]=t,l.pop(),t}function te(){return e.lastOrUndefined(l)}function re(){var e=te();return e&&e.kind}function ne(){Z({kind:3,isScript:!0,breakLabel:-1,continueLabel:-1})}function ie(e){var t=Q();return Z({kind:3,isScript:!1,breakLabel:t,continueLabel:e}),t}function ae(){e.Debug.assert(3===re());var t=ee(),r=t.breakLabel;t.isScript||$(r)}function oe(){e.Debug.assert(2===re());var t=ee(),r=t.breakLabel;t.isScript||$(r)}function se(){e.Debug.assert(4===re());var t=ee();t.isScript||$(t.breakLabel)}function ce(e){return 2===e.kind||3===e.kind}function ue(e){return 4===e.kind}function le(e){return 3===e.kind}function _e(e,t){for(var r=t;r>=0;r--){var n=l[r];if(!ue(n))break;if(n.labelText===e)return!0}return!1}function de(e){if(l)if(e)for(var t=l.length-1;t>=0;t--){if(ue(r=l[t])&&r.labelText===e)return r.breakLabel;if(ce(r)&&_e(e,t-1))return r.breakLabel}else for(t=l.length-1;t>=0;t--){var r;if(ce(r=l[t]))return r.breakLabel}return 0}function pe(e){if(l)if(e)for(var t=l.length-1;t>=0;t--){if(le(r=l[t])&&_e(e,t-1))return r.continueLabel}else for(t=l.length-1;t>=0;t--){var r;if(le(r=l[t]))return r.continueLabel}return 0}function fe(t){if(void 0!==t&&t>0){void 0===d&&(d=[]);var r=e.createLiteral(-1);return void 0===d[t]?d[t]=[r]:d[t].push(r),r}return e.createOmittedExpression()}function me(t){var r=e.createLiteral(t);return e.addSyntheticTrailingComment(r,3,function(e){switch(e){case 2:return"return";case 3:return"break";case 4:return"yield";case 5:return"yield*";case 7:return"endfinally";default:return}}(t)),r}function ge(t,r){return e.Debug.assertLessThan(0,t,"Invalid label"),e.setTextRange(e.createReturn(e.createArrayLiteral([me(3),fe(t)])),r)}function ye(){Se(0)}function he(e){e?Se(1,[e]):ye()}function ve(e,t,r){Se(2,[e,t],r)}function be(e,t){Se(3,[e],t)}function xe(e,t,r){Se(4,[e,t],r)}function De(e,t,r){Se(5,[e,t],r)}function Se(e,t,r){void 0===x&&(x=[],D=[],S=[]),void 0===_&&$(Q());var n=x.length;x[n]=e,D[n]=t,S[n]=r}function Te(){O=0,M=0,E=void 0,C=!1,k=!1,N=void 0,A=void 0,F=void 0,P=void 0,w=void 0;var t=function(){if(x){for(var t=0;t<x.length;t++)Ne(t);Ee(x.length)}else Ee(0);if(N){var r=e.createPropertyAccess(T,"label"),n=e.createSwitch(r,e.createCaseBlock(N));return[e.startOnNewLine(n)]}if(A)return A;return[]}();return function(t,r){return t.requestEmitHelper(e.generatorHelper),e.createCall(e.getUnscopedHelperName("__generator"),void 0,[e.createThis(),r])}(r,e.setEmitFlags(e.createFunctionExpression(void 0,void 0,void 0,void 0,[e.createParameter(void 0,void 0,void 0,T)],void 0,e.createBlock(t,t.length>0)),524288))}function Ee(e){(function(e){if(!k)return!0;if(!_||!d)return!1;for(var t=0;t<_.length;t++)if(_[t]===e&&d[t])return!0;return!1})(e)&&(ke(e),w=void 0,Fe(void 0,void 0)),A&&N&&Ce(!1),function(){if(void 0!==d&&void 0!==E)for(var e=0;e<E.length;e++){var t=E[e];if(void 0!==t)for(var r=0,n=t;r<n.length;r++){var i=n[r],a=d[i];if(void 0!==a)for(var o=0,s=a;o<s.length;o++){s[o].text=String(e)}}}}()}function Ce(t){if(N||(N=[]),A){if(w)for(var r=w.length-1;r>=0;r--){var n=w[r];A=[e.createWith(n.expression,e.createBlock(A))]}if(P){var i=P.startLabel,a=P.catchLabel,o=P.finallyLabel,s=P.endLabel;A.unshift(e.createExpressionStatement(e.createCall(e.createPropertyAccess(e.createPropertyAccess(T,"trys"),"push"),void 0,[e.createArrayLiteral([fe(i),fe(a),fe(o),fe(s)])]))),P=void 0}t&&A.push(e.createExpressionStatement(e.createAssignment(e.createPropertyAccess(T,"label"),e.createLiteral(M+1))))}N.push(e.createCaseClause(e.createLiteral(M),A||[])),A=void 0}function ke(e){if(_)for(var t=0;t<_.length;t++)_[t]===e&&(A&&(Ce(!C),C=!1,k=!1,M++),void 0===E&&(E=[]),void 0===E[M]?E[M]=[t]:E[M].push(t))}function Ne(t){if(ke(t),function(e){if(s)for(;O<u.length&&c[O]<=e;O++){var t=s[O],r=u[O];switch(t.kind){case 0:0===r?(F||(F=[]),A||(A=[]),F.push(P),P=t):1===r&&(P=F.pop());break;case 1:0===r?(w||(w=[]),w.push(t)):1===r&&w.pop()}}}(t),!C){C=!1,k=!1;var r=x[t];if(0!==r){if(10===r)return C=!0,void Ae(e.createReturn(e.createArrayLiteral([me(7)])));var n=D[t];if(1===r)return Ae(n[0]);var i,a,o,l=S[t];switch(r){case 2:return i=n[0],a=n[1],o=l,void Ae(e.setTextRange(e.createExpressionStatement(e.createAssignment(i,a)),o));case 3:return function(t,r){C=!0,Ae(e.setEmitFlags(e.setTextRange(e.createReturn(e.createArrayLiteral([me(3),fe(t)])),r),384))}(n[0],l);case 4:return function(t,r,n){Ae(e.setEmitFlags(e.createIf(r,e.setEmitFlags(e.setTextRange(e.createReturn(e.createArrayLiteral([me(3),fe(t)])),n),384)),1))}(n[0],n[1],l);case 5:return function(t,r,n){Ae(e.setEmitFlags(e.createIf(e.createLogicalNot(r),e.setEmitFlags(e.setTextRange(e.createReturn(e.createArrayLiteral([me(3),fe(t)])),n),384)),1))}(n[0],n[1],l);case 6:return function(t,r){C=!0,Ae(e.setEmitFlags(e.setTextRange(e.createReturn(e.createArrayLiteral(t?[me(4),t]:[me(4)])),r),384))}(n[0],l);case 7:return function(t,r){C=!0,Ae(e.setEmitFlags(e.setTextRange(e.createReturn(e.createArrayLiteral([me(5),t])),r),384))}(n[0],l);case 8:return Fe(n[0],l);case 9:return function(t,r){C=!0,k=!0,Ae(e.setTextRange(e.createThrow(t),r))}(n[0],l)}}}}function Ae(e){e&&(A?A.push(e):A=[e])}function Fe(t,r){C=!0,k=!0,Ae(e.setEmitFlags(e.setTextRange(e.createReturn(e.createArrayLiteral(t?[me(2),t]:[me(2)])),r),384))}},e.generatorHelper={name:"typescript:generator",importName:"__generator",scoped:!1,priority:6,text:'\n var __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError("Generator is already executing.");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n };'}}(s||(s={})),function(e){e.transformModule=function(i){var a=i.startLexicalEnvironment,o=i.endLexicalEnvironment,s=i.hoistVariableDeclaration,c=i.getCompilerOptions(),u=i.getEmitResolver(),l=i.getEmitHost(),_=e.getEmitScriptTarget(c),d=e.getEmitModuleKind(c),p=i.onSubstituteNode,f=i.onEmitNode;i.onSubstituteNode=function(t,r){if((r=p(t,r)).id&&y[r.id])return r;if(1===t)return function(t){switch(t.kind){case 75:return H(t);case 208:return function(t){if(e.isAssignmentOperator(t.operatorToken.kind)&&e.isIdentifier(t.left)&&!e.isGeneratedIdentifier(t.left)&&!e.isLocalName(t.left)&&!e.isDeclarationNameOfEnumOrNamespace(t.left)){var r=Y(t.left);if(r){for(var n=t,i=0,a=r;i<a.length;i++){var o=a[i];y[e.getNodeId(n)]=!0,n=W(o,n,t)}return n}}return t}(t);case 207:case 206:return function(t){if((45===t.operator||46===t.operator)&&e.isIdentifier(t.operand)&&!e.isGeneratedIdentifier(t.operand)&&!e.isLocalName(t.operand)&&!e.isDeclarationNameOfEnumOrNamespace(t.operand)){var r=Y(t.operand);if(r){for(var n=207===t.kind?e.setTextRange(e.createBinary(t.operand,e.createToken(45===t.operator?63:64),e.createLiteral(1)),t):t,i=0,a=r;i<a.length;i++){var o=a[i];y[e.getNodeId(n)]=!0,n=W(o,n)}return n}}return t}(t)}return t}(r);if(e.isShorthandPropertyAssignment(r))return function(t){var r=t.name,n=H(r);if(n!==r){if(t.objectAssignmentInitializer){var i=e.createAssignment(n,t.objectAssignmentInitializer);return e.setTextRange(e.createPropertyAssignment(r,i),t)}return e.setTextRange(e.createPropertyAssignment(r,n),t)}return t}(r);return r},i.onEmitNode=function(t,r,n){288===r.kind?(m=r,g=v[e.getOriginalNodeId(m)],y=[],f(t,r,n),m=void 0,g=void 0,y=void 0):f(t,r,n)},i.enableSubstitution(75),i.enableSubstitution(208),i.enableSubstitution(206),i.enableSubstitution(207),i.enableSubstitution(280),i.enableEmitNotification(288);var m,g,y,h,v=[],b=[];return e.chainBundle((function(t){if(t.isDeclarationFile||!(e.isEffectiveExternalModule(t,c)||524288&t.transformFlags||e.isJsonSourceFile(t)&&e.hasJsonModuleEmitEnabled(c)&&(c.out||c.outFile)))return t;m=t,g=e.collectExternalModuleInfo(t,u,c),v[e.getOriginalNodeId(t)]=g;var r=function(t){switch(t){case e.ModuleKind.AMD:return S;case e.ModuleKind.UMD:return T;default:return D}}(d)(t);return m=void 0,g=void 0,h=!1,e.aggregateTransformFlags(r)}));function x(){return!(g.exportEquals||!e.isExternalModule(m))}function D(t){a();var n=[],s=e.getStrictOptionValue(c,"alwaysStrict")||!c.noImplicitUseStrict&&e.isExternalModule(m),u=e.addPrologue(n,t.statements,s,A);x()&&e.append(n,q()),e.append(n,e.visitNode(g.externalHelpersImportDeclaration,A,e.isStatement)),e.addRange(n,e.visitNodes(t.statements,A,e.isStatement,u)),N(n,!1),e.insertStatementsAfterStandardPrologue(n,o());var l=e.updateSourceFileNode(t,e.setTextRange(e.createNodeArray(n),t.statements));return g.hasExportStarsToExportValues&&!c.importHelpers&&e.addEmitHelper(l,r),e.addEmitHelpers(l,i.readEmitHelpers()),l}function S(r){var n=e.createIdentifier("define"),a=e.tryGetModuleNameFromFile(r,l,c),o=e.isJsonSourceFile(r)&&r,s=E(r,!0),u=s.aliasedModuleNames,_=s.unaliasedModuleNames,d=s.importAliasNames,p=e.updateSourceFileNode(r,e.setTextRange(e.createNodeArray([e.createExpressionStatement(e.createCall(n,void 0,t(a?[a]:[],[e.createArrayLiteral(o?e.emptyArray:t([e.createLiteral("require"),e.createLiteral("exports")],u,_)),o?o.statements.length?o.statements[0].expression:e.createObjectLiteral():e.createFunctionExpression(void 0,void 0,void 0,void 0,t([e.createParameter(void 0,void 0,void 0,"require"),e.createParameter(void 0,void 0,void 0,"exports")],d),void 0,k(r))])))]),r.statements));return e.addEmitHelpers(p,i.readEmitHelpers()),p}function T(r){var n=E(r,!1),a=n.aliasedModuleNames,o=n.unaliasedModuleNames,s=n.importAliasNames,u=e.tryGetModuleNameFromFile(r,l,c),_=e.createFunctionExpression(void 0,void 0,void 0,void 0,[e.createParameter(void 0,void 0,void 0,"factory")],void 0,e.setTextRange(e.createBlock([e.createIf(e.createLogicalAnd(e.createTypeCheck(e.createIdentifier("module"),"object"),e.createTypeCheck(e.createPropertyAccess(e.createIdentifier("module"),"exports"),"object")),e.createBlock([e.createVariableStatement(void 0,[e.createVariableDeclaration("v",void 0,e.createCall(e.createIdentifier("factory"),void 0,[e.createIdentifier("require"),e.createIdentifier("exports")]))]),e.setEmitFlags(e.createIf(e.createStrictInequality(e.createIdentifier("v"),e.createIdentifier("undefined")),e.createExpressionStatement(e.createAssignment(e.createPropertyAccess(e.createIdentifier("module"),"exports"),e.createIdentifier("v")))),1)]),e.createIf(e.createLogicalAnd(e.createTypeCheck(e.createIdentifier("define"),"function"),e.createPropertyAccess(e.createIdentifier("define"),"amd")),e.createBlock([e.createExpressionStatement(e.createCall(e.createIdentifier("define"),void 0,t(u?[u]:[],[e.createArrayLiteral(t([e.createLiteral("require"),e.createLiteral("exports")],a,o)),e.createIdentifier("factory")])))])))],!0),void 0)),d=e.updateSourceFileNode(r,e.setTextRange(e.createNodeArray([e.createExpressionStatement(e.createCall(_,void 0,[e.createFunctionExpression(void 0,void 0,void 0,void 0,t([e.createParameter(void 0,void 0,void 0,"require"),e.createParameter(void 0,void 0,void 0,"exports")],s),void 0,k(r))]))]),r.statements));return e.addEmitHelpers(d,i.readEmitHelpers()),d}function E(t,r){for(var n=[],i=[],a=[],o=0,s=t.amdDependencies;o<s.length;o++){var _=s[o];_.name?(n.push(e.createLiteral(_.path)),a.push(e.createParameter(void 0,void 0,void 0,_.name))):i.push(e.createLiteral(_.path))}for(var d=0,p=g.externalImports;d<p.length;d++){var f=p[d],y=e.getExternalModuleNameLiteral(f,m,l,u,c),h=e.getLocalNameForExternalImport(f,m);y&&(r&&h?(e.setEmitFlags(h,4),n.push(y),a.push(e.createParameter(void 0,void 0,void 0,h))):i.push(y))}return{aliasedModuleNames:n,unaliasedModuleNames:i,importAliasNames:a}}function C(t){if(!e.isImportEqualsDeclaration(t)&&!e.isExportDeclaration(t)&&e.getExternalModuleNameLiteral(t,m,l,u,c)){var r=e.getLocalNameForExternalImport(t,m),n=I(t,r);if(n!==r)return e.createExpressionStatement(e.createAssignment(r,n))}}function k(t){a();var i=[],s=e.addPrologue(i,t.statements,!c.noImplicitUseStrict,A);x()&&e.append(i,q()),e.append(i,e.visitNode(g.externalHelpersImportDeclaration,A,e.isStatement)),d===e.ModuleKind.AMD&&e.addRange(i,e.mapDefined(g.externalImports,C)),e.addRange(i,e.visitNodes(t.statements,A,e.isStatement,s)),N(i,!0),e.insertStatementsAfterStandardPrologue(i,o());var u=e.createBlock(i,!0);return g.hasExportStarsToExportValues&&!c.importHelpers&&e.addEmitHelper(u,r),h&&e.addEmitHelper(u,n),u}function N(t,r){if(g.exportEquals){var n=e.visitNode(g.exportEquals.expression,F);if(n)if(r){var i=e.createReturn(n);e.setTextRange(i,g.exportEquals),e.setEmitFlags(i,1920),t.push(i)}else{i=e.createExpressionStatement(e.createAssignment(e.createPropertyAccess(e.createIdentifier("module"),"exports"),n));e.setTextRange(i,g.exportEquals),e.setEmitFlags(i,1536),t.push(i)}}}function A(t){switch(t.kind){case 253:return function(t){var r,n=e.getNamespaceDeclarationNode(t);if(d!==e.ModuleKind.AMD){if(!t.importClause)return e.setOriginalNode(e.setTextRange(e.createExpressionStatement(O(t)),t),t);var i=[];n&&!e.isDefaultImport(t)?i.push(e.createVariableDeclaration(e.getSynthesizedClone(n.name),void 0,I(t,O(t)))):(i.push(e.createVariableDeclaration(e.getGeneratedNameForNode(t),void 0,I(t,O(t)))),n&&e.isDefaultImport(t)&&i.push(e.createVariableDeclaration(e.getSynthesizedClone(n.name),void 0,e.getGeneratedNameForNode(t)))),r=e.append(r,e.setOriginalNode(e.setTextRange(e.createVariableStatement(void 0,e.createVariableDeclarationList(i,_>=2?2:0)),t),t))}else n&&e.isDefaultImport(t)&&(r=e.append(r,e.createVariableStatement(void 0,e.createVariableDeclarationList([e.setOriginalNode(e.setTextRange(e.createVariableDeclaration(e.getSynthesizedClone(n.name),void 0,e.getGeneratedNameForNode(t)),t),t)],_>=2?2:0))));if(R(t)){var a=e.getOriginalNodeId(t);b[a]=B(b[a],t)}else r=B(r,t);return e.singleOrMany(r)}(t);case 252:return function(t){var r;e.Debug.assert(e.isExternalModuleImportEqualsDeclaration(t),"import= for internal module references should be handled in an earlier transformer."),d!==e.ModuleKind.AMD?r=e.hasModifier(t,1)?e.append(r,e.setOriginalNode(e.setTextRange(e.createExpressionStatement(W(t.name,O(t))),t),t)):e.append(r,e.setOriginalNode(e.setTextRange(e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(e.getSynthesizedClone(t.name),void 0,O(t))],_>=2?2:0)),t),t)):e.hasModifier(t,1)&&(r=e.append(r,e.setOriginalNode(e.setTextRange(e.createExpressionStatement(W(e.getExportName(t),e.getLocalName(t))),t),t)));if(R(t)){var n=e.getOriginalNodeId(t);b[n]=j(b[n],t)}else r=j(r,t);return e.singleOrMany(r)}(t);case 259:return function(t){if(!t.moduleSpecifier)return;var r=e.getGeneratedNameForNode(t);if(t.exportClause){var n=[];d!==e.ModuleKind.AMD&&n.push(e.setOriginalNode(e.setTextRange(e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(r,void 0,O(t))])),t),t));for(var a=0,o=t.exportClause.elements;a<o.length;a++){var s=o[a],c=e.createPropertyAccess(r,s.propertyName||s.name);n.push(e.setOriginalNode(e.setTextRange(e.createExpressionStatement(W(e.getExportName(s),c)),s),s))}return e.singleOrMany(n)}return e.setOriginalNode(e.setTextRange(e.createExpressionStatement(function(t,r){return t.getCompilerOptions().importHelpers?e.createCall(e.getUnscopedHelperName("__exportStar"),void 0,[r,e.createIdentifier("exports")]):e.createCall(e.createIdentifier("__export"),void 0,[r])}(i,d!==e.ModuleKind.AMD?O(t):r)),t),t)}(t);case 258:return function(t){if(t.isExportEquals)return;var r,n=t.original;if(n&&R(n)){var i=e.getOriginalNodeId(t);b[i]=V(b[i],e.createIdentifier("default"),e.visitNode(t.expression,F),t,!0)}else r=V(r,e.createIdentifier("default"),e.visitNode(t.expression,F),t,!0);return e.singleOrMany(r)}(t);case 224:return function(t){var r,n,a;if(e.hasModifier(t,1)){for(var o=void 0,s=0,c=t.declarationList.declarations;s<c.length;s++){var u=c[s];e.isIdentifier(u.name)&&e.isLocalName(u.name)?(o||(o=e.visitNodes(t.modifiers,G,e.isModifier)),n=e.append(n,u)):u.initializer&&(a=e.append(a,L(u)))}n&&(r=e.append(r,e.updateVariableStatement(t,o,e.updateVariableDeclarationList(t.declarationList,n)))),a&&(r=e.append(r,e.setOriginalNode(e.setTextRange(e.createExpressionStatement(e.inlineExpressions(a)),t),t)))}else r=e.append(r,e.visitEachChild(t,F,i));if(R(t)){var l=e.getOriginalNodeId(t);b[l]=K(b[l],t)}else r=K(r,t);return e.singleOrMany(r)}(t);case 243:return function(t){var r;r=e.hasModifier(t,1)?e.append(r,e.setOriginalNode(e.setTextRange(e.createFunctionDeclaration(void 0,e.visitNodes(t.modifiers,G,e.isModifier),t.asteriskToken,e.getDeclarationName(t,!0,!0),void 0,e.visitNodes(t.parameters,F),void 0,e.visitEachChild(t.body,F,i)),t),t)):e.append(r,e.visitEachChild(t,F,i));if(R(t)){var n=e.getOriginalNodeId(t);b[n]=z(b[n],t)}else r=z(r,t);return e.singleOrMany(r)}(t);case 244:return function(t){var r;r=e.hasModifier(t,1)?e.append(r,e.setOriginalNode(e.setTextRange(e.createClassDeclaration(void 0,e.visitNodes(t.modifiers,G,e.isModifier),e.getDeclarationName(t,!0,!0),void 0,e.visitNodes(t.heritageClauses,F),e.visitNodes(t.members,F)),t),t)):e.append(r,e.visitEachChild(t,F,i));if(R(t)){var n=e.getOriginalNodeId(t);b[n]=z(b[n],t)}else r=z(r,t);return e.singleOrMany(r)}(t);case 321:return function(t){if(R(t)&&224===t.original.kind){var r=e.getOriginalNodeId(t);b[r]=K(b[r],t.original)}return t}(t);case 322:return function(t){var r=e.getOriginalNodeId(t),n=b[r];if(n)return delete b[r],e.append(n,t);return t}(t);default:return e.visitEachChild(t,F,i)}}function F(t){return 524288&t.transformFlags||512&t.transformFlags?e.isImportCall(t)?function(t){var r=e.visitNode(e.firstOrUndefined(t.arguments),F),n=!!(2048&t.transformFlags);switch(c.module){case e.ModuleKind.AMD:return P(r,n);case e.ModuleKind.UMD:return function(t,r){if(h=!0,e.isSimpleCopiableExpression(t)){var n=e.isGeneratedIdentifier(t)?t:e.isStringLiteral(t)?e.createLiteral(t):e.setEmitFlags(e.setTextRange(e.getSynthesizedClone(t),t),1536);return e.createConditional(e.createIdentifier("__syncRequire"),w(t,r),P(n,r))}var i=e.createTempVariable(s);return e.createComma(e.createAssignment(i,t),e.createConditional(e.createIdentifier("__syncRequire"),w(i,r),P(i,r)))}(r,n);case e.ModuleKind.CommonJS:default:return w(r,n)}}(t):e.isDestructuringAssignment(t)?function(t){if(function t(r){if(e.isObjectLiteralExpression(r))for(var n=0,i=r.properties;n<i.length;n++){switch((s=i[n]).kind){case 279:if(t(s.initializer))return!0;break;case 280:if(t(s.name))return!0;break;case 281:if(t(s.expression))return!0;break;case 160:case 162:case 163:return!1;default:e.Debug.assertNever(s,"Unhandled object member kind")}}else if(e.isArrayLiteralExpression(r))for(var a=0,o=r.elements;a<o.length;a++){var s=o[a];if(e.isSpreadElement(s)){if(t(s.expression))return!0}else if(t(s))return!0}else if(e.isIdentifier(r))return e.length(Y(r))>(e.isExportName(r)?1:0);return!1}(t.left))return e.flattenDestructuringAssignment(t,F,i,0,!1,M);return e.visitEachChild(t,F,i)}(t):e.visitEachChild(t,F,i):t}function P(t,r){var n,a=e.createUniqueName("resolve"),o=e.createUniqueName("reject"),s=[e.createParameter(void 0,void 0,void 0,a),e.createParameter(void 0,void 0,void 0,o)],u=e.createBlock([e.createExpressionStatement(e.createCall(e.createIdentifier("require"),void 0,[e.createArrayLiteral([t||e.createOmittedExpression()]),a,o]))]);_>=2?n=e.createArrowFunction(void 0,void 0,s,void 0,void 0,u):(n=e.createFunctionExpression(void 0,void 0,void 0,void 0,s,void 0,u),r&&e.setEmitFlags(n,8));var l=e.createNew(e.createIdentifier("Promise"),void 0,[n]);return c.esModuleInterop?(i.requestEmitHelper(e.importStarHelper),e.createCall(e.createPropertyAccess(l,e.createIdentifier("then")),void 0,[e.getUnscopedHelperName("__importStar")])):l}function w(t,r){var n,a=e.createCall(e.createPropertyAccess(e.createIdentifier("Promise"),"resolve"),void 0,[]),o=e.createCall(e.createIdentifier("require"),void 0,t?[t]:[]);return c.esModuleInterop&&(i.requestEmitHelper(e.importStarHelper),o=e.createCall(e.getUnscopedHelperName("__importStar"),void 0,[o])),_>=2?n=e.createArrowFunction(void 0,void 0,[],void 0,void 0,o):(n=e.createFunctionExpression(void 0,void 0,void 0,void 0,[],void 0,e.createBlock([e.createReturn(o)])),r&&e.setEmitFlags(n,8)),e.createCall(e.createPropertyAccess(a,"then"),void 0,[n])}function I(t,r){return!c.esModuleInterop||67108864&e.getEmitFlags(t)?r:e.getImportNeedsImportStarHelper(t)?(i.requestEmitHelper(e.importStarHelper),e.createCall(e.getUnscopedHelperName("__importStar"),void 0,[r])):e.getImportNeedsImportDefaultHelper(t)?(i.requestEmitHelper(e.importDefaultHelper),e.createCall(e.getUnscopedHelperName("__importDefault"),void 0,[r])):r}function O(t){var r=e.getExternalModuleNameLiteral(t,m,l,u,c),n=[];return r&&n.push(r),e.createCall(e.createIdentifier("require"),void 0,n)}function M(t,r,n){var i=Y(t);if(i){for(var a=e.isExportName(t)?r:e.createAssignment(t,r),o=0,s=i;o<s.length;o++){var c=s[o];e.setEmitFlags(a,4),a=W(c,a,n)}return a}return e.createAssignment(t,r)}function L(t){return e.isBindingPattern(t.name)?e.flattenDestructuringAssignment(e.visitNode(t,F),void 0,i,0,!1,M):e.createAssignment(e.setTextRange(e.createPropertyAccess(e.createIdentifier("exports"),t.name),t.name),e.visitNode(t.initializer,F))}function R(t){return 0!=(4194304&e.getEmitFlags(t))}function B(e,t){if(g.exportEquals)return e;var r=t.importClause;if(!r)return e;r.name&&(e=U(e,r));var n=r.namedBindings;if(n)switch(n.kind){case 255:e=U(e,n);break;case 256:for(var i=0,a=n.elements;i<a.length;i++){e=U(e,a[i])}}return e}function j(e,t){return g.exportEquals?e:U(e,t)}function K(e,t){if(g.exportEquals)return e;for(var r=0,n=t.declarationList.declarations;r<n.length;r++){e=J(e,n[r])}return e}function J(t,r){if(g.exportEquals)return t;if(e.isBindingPattern(r.name))for(var n=0,i=r.name.elements;n<i.length;n++){var a=i[n];e.isOmittedExpression(a)||(t=J(t,a))}else e.isGeneratedIdentifier(r.name)||(t=U(t,r));return t}function z(t,r){if(g.exportEquals)return t;e.hasModifier(r,1)&&(t=V(t,e.hasModifier(r,512)?e.createIdentifier("default"):e.getDeclarationName(r),e.getLocalName(r),r));return r.name&&(t=U(t,r)),t}function U(t,r){var n=e.getDeclarationName(r),i=g.exportSpecifiers.get(e.idText(n));if(i)for(var a=0,o=i;a<o.length;a++){var s=o[a];t=V(t,s.name,n,s.name)}return t}function V(t,r,n,i,a){return t=e.append(t,function(t,r,n,i){var a=e.setTextRange(e.createExpressionStatement(W(t,r)),n);e.startOnNewLine(a),i||e.setEmitFlags(a,1536);return a}(r,n,i,a))}function q(){var t;return t=0===_?e.createExpressionStatement(W(e.createIdentifier("__esModule"),e.createLiteral(!0))):e.createExpressionStatement(e.createCall(e.createPropertyAccess(e.createIdentifier("Object"),"defineProperty"),void 0,[e.createIdentifier("exports"),e.createLiteral("__esModule"),e.createObjectLiteral([e.createPropertyAssignment("value",e.createLiteral(!0))])])),e.setEmitFlags(t,1048576),t}function W(t,r,n){return e.setTextRange(e.createAssignment(e.createPropertyAccess(e.createIdentifier("exports"),e.getSynthesizedClone(t)),r),n)}function G(e){switch(e.kind){case 88:case 83:return}return e}function H(t){if(4096&e.getEmitFlags(t)){var r=e.getExternalHelpersModuleName(m);return r?e.createPropertyAccess(r,t):t}if(!e.isGeneratedIdentifier(t)&&!e.isLocalName(t)){var n=u.getReferencedExportContainer(t,e.isExportName(t));if(n&&288===n.kind)return e.setTextRange(e.createPropertyAccess(e.createIdentifier("exports"),e.getSynthesizedClone(t)),t);var i=u.getReferencedImportDeclaration(t);if(i){if(e.isImportClause(i))return e.setTextRange(e.createPropertyAccess(e.getGeneratedNameForNode(i.parent),e.createIdentifier("default")),t);if(e.isImportSpecifier(i)){var a=i.propertyName||i.name;return e.setTextRange(e.createPropertyAccess(e.getGeneratedNameForNode(i.parent.parent.parent),e.getSynthesizedClone(a)),t)}}}return t}function Y(t){if(!e.isGeneratedIdentifier(t)){var r=u.getReferencedImportDeclaration(t)||u.getReferencedValueDeclaration(t);if(r)return g&&g.exportedBindings[e.getOriginalNodeId(r)]}}};var r={name:"typescript:export-star",scoped:!0,text:"\n function __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n }"};var n={name:"typescript:dynamicimport-sync-require",scoped:!0,text:'\n var __syncRequire = typeof module === "object" && typeof module.exports === "object";'};e.importStarHelper={name:"typescript:commonjsimportstar",importName:"__importStar",scoped:!1,text:'\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result["default"] = mod;\n return result;\n};'},e.importDefaultHelper={name:"typescript:commonjsimportdefault",importName:"__importDefault",scoped:!1,text:'\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { "default": mod };\n};'}}(s||(s={})),function(e){e.transformSystemModule=function(t){var r=t.startLexicalEnvironment,n=t.endLexicalEnvironment,i=t.hoistVariableDeclaration,a=t.getCompilerOptions(),o=t.getEmitResolver(),s=t.getEmitHost(),c=t.onSubstituteNode,u=t.onEmitNode;t.onSubstituteNode=function(t,r){if(function(e){return g&&e.id&&g[e.id]}(r=c(t,r)))return r;if(1===t)return function(t){switch(t.kind){case 75:return function(t){if(4096&e.getEmitFlags(t)){var r=e.getExternalHelpersModuleName(l);return r?e.createPropertyAccess(r,t):t}if(!e.isGeneratedIdentifier(t)&&!e.isLocalName(t)){var n=o.getReferencedImportDeclaration(t);if(n){if(e.isImportClause(n))return e.setTextRange(e.createPropertyAccess(e.getGeneratedNameForNode(n.parent),e.createIdentifier("default")),t);if(e.isImportSpecifier(n))return e.setTextRange(e.createPropertyAccess(e.getGeneratedNameForNode(n.parent.parent.parent),e.getSynthesizedClone(n.propertyName||n.name)),t)}}return t}(t);case 208:return function(t){if(e.isAssignmentOperator(t.operatorToken.kind)&&e.isIdentifier(t.left)&&!e.isGeneratedIdentifier(t.left)&&!e.isLocalName(t.left)&&!e.isDeclarationNameOfEnumOrNamespace(t.left)){var r=W(t.left);if(r){for(var n=t,i=0,a=r;i<a.length;i++){var o=a[i];n=K(o,G(n))}return n}}return t}(t);case 206:case 207:return function(t){if((45===t.operator||46===t.operator)&&e.isIdentifier(t.operand)&&!e.isGeneratedIdentifier(t.operand)&&!e.isLocalName(t.operand)&&!e.isDeclarationNameOfEnumOrNamespace(t.operand)){var r=W(t.operand);if(r){for(var n=207===t.kind?e.setTextRange(e.createPrefix(t.operator,t.operand),t):t,i=0,a=r;i<a.length;i++){var o=a[i];n=K(o,G(n))}return 207===t.kind&&(n=45===t.operator?e.createSubtract(G(n),e.createLiteral(1)):e.createAdd(G(n),e.createLiteral(1))),n}}return t}(t);case 218:return function(t){if(e.isImportMeta(t))return e.createPropertyAccess(p,e.createIdentifier("meta"));return t}(t)}return t}(r);if(4===t)return function(t){switch(t.kind){case 280:return function(t){var r=t.name;if(!e.isGeneratedIdentifier(r)&&!e.isLocalName(r)){var n=o.getReferencedImportDeclaration(r);if(n){if(e.isImportClause(n))return e.setTextRange(e.createPropertyAssignment(e.getSynthesizedClone(r),e.createPropertyAccess(e.getGeneratedNameForNode(n.parent),e.createIdentifier("default"))),t);if(e.isImportSpecifier(n))return e.setTextRange(e.createPropertyAssignment(e.getSynthesizedClone(r),e.createPropertyAccess(e.getGeneratedNameForNode(n.parent.parent.parent),e.getSynthesizedClone(n.propertyName||n.name))),t)}}return t}(t)}return t}(r);return r},t.onEmitNode=function(t,r,n){if(288===r.kind){var i=e.getOriginalNodeId(r);l=r,_=y[i],d=v[i],g=b[i],p=x[i],g&&delete b[i],u(t,r,n),l=void 0,_=void 0,d=void 0,p=void 0,g=void 0}else u(t,r,n)},t.enableSubstitution(75),t.enableSubstitution(280),t.enableSubstitution(208),t.enableSubstitution(206),t.enableSubstitution(207),t.enableSubstitution(218),t.enableEmitNotification(288);var l,_,d,p,f,m,g,y=[],h=[],v=[],b=[],x=[];return e.chainBundle((function(t){if(t.isDeclarationFile||!(e.isEffectiveExternalModule(t,a)||524288&t.transformFlags))return t;var i=e.getOriginalNodeId(t);l=t,m=t,_=y[i]=e.collectExternalModuleInfo(t,o,a),d=e.createUniqueName("exports"),v[i]=d,p=x[i]=e.createUniqueName("context");var c=function(t){for(var r=e.createMap(),n=[],i=0,c=t;i<c.length;i++){var u=c[i],_=e.getExternalModuleNameLiteral(u,l,s,o,a);if(_){var d=_.text,p=r.get(d);void 0!==p?n[p].externalImports.push(u):(r.set(d,n.length),n.push({name:_,externalImports:[u]}))}}return n}(_.externalImports),u=function(t,i){var o=[];r();var s=e.getStrictOptionValue(a,"alwaysStrict")||!a.noImplicitUseStrict&&e.isExternalModule(l),c=e.addPrologue(o,t.statements,s,T);o.push(e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration("__moduleName",void 0,e.createLogicalAnd(p,e.createPropertyAccess(p,"id")))]))),e.visitNode(_.externalHelpersImportDeclaration,T,e.isStatement);var u=e.visitNodes(t.statements,T,e.isStatement,c);e.addRange(o,f),e.insertStatementsAfterStandardPrologue(o,n());var d=function(t){if(!_.hasExportStarsToExportValues)return;if(!_.exportedNames&&0===_.exportSpecifiers.size){for(var r=!1,n=0,i=_.externalImports;n<i.length;n++){if(259===(p=i[n]).kind&&p.exportClause){r=!0;break}}if(!r){var a=D(void 0);return t.push(a),a.name}}var o=[];if(_.exportedNames)for(var s=0,c=_.exportedNames;s<c.length;s++){var u=c[s];"default"!==u.escapedText&&o.push(e.createPropertyAssignment(e.createLiteral(u),e.createTrue()))}for(var l=0,d=_.externalImports;l<d.length;l++){var p;if(259===(p=d[l]).kind&&p.exportClause)for(var f=0,m=p.exportClause.elements;f<m.length;f++){var g=m[f];o.push(e.createPropertyAssignment(e.createLiteral(e.idText(g.name||g.propertyName)),e.createTrue()))}}var y=e.createUniqueName("exportedNames");t.push(e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(y,void 0,e.createObjectLiteral(o,!0))])));var h=D(y);return t.push(h),h.name}(o),m=e.createObjectLiteral([e.createPropertyAssignment("setters",S(d,i)),e.createPropertyAssignment("execute",e.createFunctionExpression(void 0,void 0,void 0,void 0,[],void 0,e.createBlock(u,!0)))]);return m.multiLine=!0,o.push(e.createReturn(m)),e.createBlock(o,!0)}(t,c),h=e.createFunctionExpression(void 0,void 0,void 0,void 0,[e.createParameter(void 0,void 0,void 0,d),e.createParameter(void 0,void 0,void 0,p)],void 0,u),E=e.tryGetModuleNameFromFile(t,s,a),C=e.createArrayLiteral(e.map(c,(function(e){return e.name}))),k=e.setEmitFlags(e.updateSourceFileNode(t,e.setTextRange(e.createNodeArray([e.createExpressionStatement(e.createCall(e.createPropertyAccess(e.createIdentifier("System"),"register"),void 0,E?[E,C,h]:[C,h]))]),t.statements)),1024);a.outFile||a.out||e.moveEmitHelpers(k,u,(function(e){return!e.scoped}));g&&(b[i]=g,g=void 0);return l=void 0,_=void 0,d=void 0,p=void 0,f=void 0,m=void 0,e.aggregateTransformFlags(k)}));function D(t){var r=e.createUniqueName("exportStar"),n=e.createIdentifier("m"),i=e.createIdentifier("n"),a=e.createIdentifier("exports"),o=e.createStrictInequality(i,e.createLiteral("default"));return t&&(o=e.createLogicalAnd(o,e.createLogicalNot(e.createCall(e.createPropertyAccess(t,"hasOwnProperty"),void 0,[i])))),e.createFunctionDeclaration(void 0,void 0,void 0,r,void 0,[e.createParameter(void 0,void 0,void 0,n)],void 0,e.createBlock([e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(a,void 0,e.createObjectLiteral([]))])),e.createForIn(e.createVariableDeclarationList([e.createVariableDeclaration(i,void 0)]),n,e.createBlock([e.setEmitFlags(e.createIf(o,e.createExpressionStatement(e.createAssignment(e.createElementAccess(a,i),e.createElementAccess(n,i)))),1)])),e.createExpressionStatement(e.createCall(d,void 0,[a]))],!0))}function S(t,r){for(var n=[],i=0,a=r;i<a.length;i++){for(var o=a[i],s=e.forEach(o.externalImports,(function(t){return e.getLocalNameForExternalImport(t,l)})),c=s?e.getGeneratedNameForNode(s):e.createUniqueName(""),u=[],_=0,p=o.externalImports;_<p.length;_++){var f=p[_],m=e.getLocalNameForExternalImport(f,l);switch(f.kind){case 253:if(!f.importClause)break;case 252:e.Debug.assert(void 0!==m),u.push(e.createExpressionStatement(e.createAssignment(m,c)));break;case 259:if(e.Debug.assert(void 0!==m),f.exportClause){for(var g=[],y=0,h=f.exportClause.elements;y<h.length;y++){var v=h[y];g.push(e.createPropertyAssignment(e.createLiteral(e.idText(v.name)),e.createElementAccess(c,e.createLiteral(e.idText(v.propertyName||v.name)))))}u.push(e.createExpressionStatement(e.createCall(d,void 0,[e.createObjectLiteral(g,!0)])))}else u.push(e.createExpressionStatement(e.createCall(t,void 0,[c])))}}n.push(e.createFunctionExpression(void 0,void 0,void 0,void 0,[e.createParameter(void 0,void 0,void 0,c)],void 0,e.createBlock(u,!0)))}return e.createArrayLiteral(n,!0)}function T(t){switch(t.kind){case 253:return function(t){var r;t.importClause&&i(e.getLocalNameForExternalImport(t,l));if(P(t)){var n=e.getOriginalNodeId(t);h[n]=w(h[n],t)}else r=w(r,t);return e.singleOrMany(r)}(t);case 252:return function(t){var r;if(e.Debug.assert(e.isExternalModuleImportEqualsDeclaration(t),"import= for internal module references should be handled in an earlier transformer."),i(e.getLocalNameForExternalImport(t,l)),P(t)){var n=e.getOriginalNodeId(t);h[n]=I(h[n],t)}else r=I(r,t);return e.singleOrMany(r)}(t);case 259:return;case 258:return function(t){if(t.isExportEquals)return;var r=e.visitNode(t.expression,U,e.isExpression),n=t.original;if(!n||!P(n))return j(e.createIdentifier("default"),r,!0);var i=e.getOriginalNodeId(t);h[i]=B(h[i],e.createIdentifier("default"),r,!0)}(t);default:return J(t)}}function E(t){if(e.isBindingPattern(t.name))for(var r=0,n=t.name.elements;r<n.length;r++){var a=n[r];e.isOmittedExpression(a)||E(a)}else i(e.getSynthesizedClone(t.name))}function C(t){return 0==(2097152&e.getEmitFlags(t))&&(288===m.kind||0==(3&e.getOriginalNode(t).flags))}function k(r,n){var i=n?N:A;return e.isBindingPattern(r.name)?e.flattenDestructuringAssignment(r,U,t,0,!1,i):r.initializer?i(r.name,e.visitNode(r.initializer,U,e.isExpression)):r.name}function N(e,t,r){return F(e,t,r,!0)}function A(e,t,r){return F(e,t,r,!1)}function F(t,r,n,a){return i(e.getSynthesizedClone(t)),a?K(t,G(e.setTextRange(e.createAssignment(t,r),n))):G(e.setTextRange(e.createAssignment(t,r),n))}function P(t){return 0!=(4194304&e.getEmitFlags(t))}function w(e,t){if(_.exportEquals)return e;var r=t.importClause;if(!r)return e;r.name&&(e=R(e,r));var n=r.namedBindings;if(n)switch(n.kind){case 255:e=R(e,n);break;case 256:for(var i=0,a=n.elements;i<a.length;i++){e=R(e,a[i])}}return e}function I(e,t){return _.exportEquals?e:R(e,t)}function O(e,t,r){if(_.exportEquals)return e;for(var n=0,i=t.declarationList.declarations;n<i.length;n++){var a=i[n];(a.initializer||r)&&(e=M(e,a,r))}return e}function M(t,r,n){if(_.exportEquals)return t;if(e.isBindingPattern(r.name))for(var i=0,a=r.name.elements;i<a.length;i++){var o=a[i];e.isOmittedExpression(o)||(t=M(t,o,n))}else if(!e.isGeneratedIdentifier(r.name)){var s=void 0;n&&(t=B(t,r.name,e.getLocalName(r)),s=e.idText(r.name)),t=R(t,r,s)}return t}function L(t,r){if(_.exportEquals)return t;var n;if(e.hasModifier(r,1)){var i=e.hasModifier(r,512)?e.createLiteral("default"):r.name;t=B(t,i,e.getLocalName(r)),n=e.getTextOfIdentifierOrLiteral(i)}return r.name&&(t=R(t,r,n)),t}function R(t,r,n){if(_.exportEquals)return t;var i=e.getDeclarationName(r),a=_.exportSpecifiers.get(e.idText(i));if(a)for(var o=0,s=a;o<s.length;o++){var c=s[o];c.name.escapedText!==n&&(t=B(t,c.name,i))}return t}function B(t,r,n,i){return t=e.append(t,j(r,n,i))}function j(t,r,n){var i=e.createExpressionStatement(K(t,r));return e.startOnNewLine(i),n||e.setEmitFlags(i,1536),i}function K(t,r){var n=e.isIdentifier(t)?e.createLiteral(t):t;return e.setEmitFlags(r,1536|e.getEmitFlags(r)),e.setCommentRange(e.createCall(d,void 0,[n,r]),r)}function J(r){switch(r.kind){case 224:return function(t){if(!C(t.declarationList))return e.visitNode(t,U,e.isStatement);for(var r,n,i=e.hasModifier(t,1),a=P(t),o=0,s=t.declarationList.declarations;o<s.length;o++){var c=s[o];c.initializer?r=e.append(r,k(c,i&&!a)):E(c)}if(r&&(n=e.append(n,e.setTextRange(e.createExpressionStatement(e.inlineExpressions(r)),t))),a){var u=e.getOriginalNodeId(t);h[u]=O(h[u],t,i)}else n=O(n,t,!1);return e.singleOrMany(n)}(r);case 243:return function(r){if(f=e.hasModifier(r,1)?e.append(f,e.updateFunctionDeclaration(r,r.decorators,e.visitNodes(r.modifiers,q,e.isModifier),r.asteriskToken,e.getDeclarationName(r,!0,!0),void 0,e.visitNodes(r.parameters,U,e.isParameterDeclaration),void 0,e.visitNode(r.body,U,e.isBlock))):e.append(f,e.visitEachChild(r,U,t)),P(r)){var n=e.getOriginalNodeId(r);h[n]=L(h[n],r)}else f=L(f,r)}(r);case 244:return function(t){var r,n=e.getLocalName(t);if(i(n),r=e.append(r,e.setTextRange(e.createExpressionStatement(e.createAssignment(n,e.setTextRange(e.createClassExpression(void 0,t.name,void 0,e.visitNodes(t.heritageClauses,U,e.isHeritageClause),e.visitNodes(t.members,U,e.isClassElement)),t))),t)),P(t)){var a=e.getOriginalNodeId(t);h[a]=L(h[a],t)}else r=L(r,t);return e.singleOrMany(r)}(r);case 229:return function(t){var r=m;return m=t,t=e.updateFor(t,t.initializer&&z(t.initializer),e.visitNode(t.condition,U,e.isExpression),e.visitNode(t.incrementor,U,e.isExpression),e.visitNode(t.statement,J,e.isStatement)),m=r,t}(r);case 230:return function(t){var r=m;return m=t,t=e.updateForIn(t,z(t.initializer),e.visitNode(t.expression,U,e.isExpression),e.visitNode(t.statement,J,e.isStatement,e.liftToBlock)),m=r,t}(r);case 231:return function(t){var r=m;return m=t,t=e.updateForOf(t,t.awaitModifier,z(t.initializer),e.visitNode(t.expression,U,e.isExpression),e.visitNode(t.statement,J,e.isStatement,e.liftToBlock)),m=r,t}(r);case 227:return function(t){return e.updateDo(t,e.visitNode(t.statement,J,e.isStatement,e.liftToBlock),e.visitNode(t.expression,U,e.isExpression))}(r);case 228:return function(t){return e.updateWhile(t,e.visitNode(t.expression,U,e.isExpression),e.visitNode(t.statement,J,e.isStatement,e.liftToBlock))}(r);case 237:return function(t){return e.updateLabel(t,t.label,e.visitNode(t.statement,J,e.isStatement,e.liftToBlock))}(r);case 235:return function(t){return e.updateWith(t,e.visitNode(t.expression,U,e.isExpression),e.visitNode(t.statement,J,e.isStatement,e.liftToBlock))}(r);case 236:return function(t){return e.updateSwitch(t,e.visitNode(t.expression,U,e.isExpression),e.visitNode(t.caseBlock,J,e.isCaseBlock))}(r);case 250:return function(t){var r=m;return m=t,t=e.updateCaseBlock(t,e.visitNodes(t.clauses,J,e.isCaseOrDefaultClause)),m=r,t}(r);case 275:return function(t){return e.updateCaseClause(t,e.visitNode(t.expression,U,e.isExpression),e.visitNodes(t.statements,J,e.isStatement))}(r);case 276:case 239:return function(r){return e.visitEachChild(r,J,t)}(r);case 278:return function(t){var r=m;return m=t,t=e.updateCatchClause(t,t.variableDeclaration,e.visitNode(t.block,J,e.isBlock)),m=r,t}(r);case 222:return function(r){var n=m;return m=r,r=e.visitEachChild(r,J,t),m=n,r}(r);case 321:return function(t){if(P(t)&&224===t.original.kind){var r=e.getOriginalNodeId(t),n=e.hasModifier(t.original,1);h[r]=O(h[r],t.original,n)}return t}(r);case 322:return function(t){var r=e.getOriginalNodeId(t),n=h[r];if(n)return delete h[r],e.append(n,t);var i=e.getOriginalNode(t);return e.isModuleOrEnumDeclaration(i)?e.append(R(n,i),t):t}(r);default:return U(r)}}function z(r){if(function(t){return e.isVariableDeclarationList(t)&&C(t)}(r)){for(var n=void 0,i=0,a=r.declarations;i<a.length;i++){var o=a[i];n=e.append(n,k(o,!1)),o.initializer||E(o)}return n?e.inlineExpressions(n):e.createOmittedExpression()}return e.visitEachChild(r,J,t)}function U(r){return e.isDestructuringAssignment(r)?function(r){if(V(r.left))return e.flattenDestructuringAssignment(r,U,t,0,!0);return e.visitEachChild(r,U,t)}(r):e.isImportCall(r)?function(t){return e.createCall(e.createPropertyAccess(p,e.createIdentifier("import")),void 0,e.some(t.arguments)?[e.visitNode(t.arguments[0],U)]:[])}(r):512&r.transformFlags||524288&r.transformFlags?e.visitEachChild(r,U,t):r}function V(t){if(e.isAssignmentExpression(t,!0))return V(t.left);if(e.isSpreadElement(t))return V(t.expression);if(e.isObjectLiteralExpression(t))return e.some(t.properties,V);if(e.isArrayLiteralExpression(t))return e.some(t.elements,V);if(e.isShorthandPropertyAssignment(t))return V(t.name);if(e.isPropertyAssignment(t))return V(t.initializer);if(e.isIdentifier(t)){var r=o.getReferencedExportContainer(t);return void 0!==r&&288===r.kind}return!1}function q(e){switch(e.kind){case 88:case 83:return}return e}function W(t){var r;if(!e.isGeneratedIdentifier(t)){var n=o.getReferencedImportDeclaration(t)||o.getReferencedValueDeclaration(t);if(n){var i=o.getReferencedExportContainer(t,!1);i&&288===i.kind&&(r=e.append(r,e.getDeclarationName(n))),r=e.addRange(r,_&&_.exportedBindings[e.getOriginalNodeId(n)])}}return r}function G(t){return void 0===g&&(g=[]),g[e.getNodeId(t)]=!0,t}}}(s||(s={})),function(e){e.transformES2015Module=function(t){var r,n=t.getCompilerOptions(),i=t.onEmitNode,a=t.onSubstituteNode;return t.onEmitNode=function(t,n,a){e.isSourceFile(n)?(r=e.createMap(),i(t,n,a),r=void 0):i(t,n,a)},t.onSubstituteNode=function(t,n){if(n=a(t,n),r&&e.isIdentifier(n)&&4096&e.getEmitFlags(n))return function(t){var n=e.idText(t),i=r.get(n);i||r.set(n,i=e.createFileLevelUniqueName(n));return i}(n);return n},t.enableEmitNotification(288),t.enableSubstitution(75),e.chainBundle((function(r){if(r.isDeclarationFile)return r;if(e.isExternalModule(r)||n.isolatedModules){var i=e.createExternalHelpersImportDeclarationIfNeeded(r,n);if(i){var a=[],s=e.addPrologue(a,r.statements);return e.append(a,i),e.addRange(a,e.visitNodes(r.statements,o,e.isStatement,s)),e.updateSourceFileNode(r,e.setTextRange(e.createNodeArray(a),r.statements))}return e.visitEachChild(r,o,t)}return r}));function o(e){switch(e.kind){case 252:return;case 258:return function(e){return e.isExportEquals?void 0:e}(e)}return e}}}(s||(s={})),function(e){function t(t){return e.isVariableDeclaration(t)||e.isPropertyDeclaration(t)||e.isPropertySignature(t)||e.isPropertyAccessExpression(t)||e.isBindingElement(t)||e.isConstructorDeclaration(t)?r:e.isSetAccessor(t)||e.isGetAccessor(t)?function(r){var n;n=163===t.kind?e.hasModifier(t,32)?r.errorModuleName?e.Diagnostics.Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_type_of_public_static_setter_0_from_exported_class_has_or_is_using_private_name_1:r.errorModuleName?e.Diagnostics.Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_type_of_public_setter_0_from_exported_class_has_or_is_using_private_name_1:e.hasModifier(t,32)?r.errorModuleName?2===r.accessibility?e.Diagnostics.Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Return_type_of_public_static_getter_0_from_exported_class_has_or_is_using_private_name_1:r.errorModuleName?2===r.accessibility?e.Diagnostics.Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Return_type_of_public_getter_0_from_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Return_type_of_public_getter_0_from_exported_class_has_or_is_using_private_name_1;return{diagnosticMessage:n,errorNode:t.name,typeName:t.name}}:e.isConstructSignatureDeclaration(t)||e.isCallSignatureDeclaration(t)||e.isMethodDeclaration(t)||e.isMethodSignature(t)||e.isFunctionDeclaration(t)||e.isIndexSignatureDeclaration(t)?function(r){var n;switch(t.kind){case 165:n=r.errorModuleName?e.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:e.Diagnostics.Return_type_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_0;break;case 164:n=r.errorModuleName?e.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:e.Diagnostics.Return_type_of_call_signature_from_exported_interface_has_or_is_using_private_name_0;break;case 166:n=r.errorModuleName?e.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_name_0_from_private_module_1:e.Diagnostics.Return_type_of_index_signature_from_exported_interface_has_or_is_using_private_name_0;break;case 160:case 159:n=e.hasModifier(t,32)?r.errorModuleName?2===r.accessibility?e.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:e.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_name_0_from_private_module_1:e.Diagnostics.Return_type_of_public_static_method_from_exported_class_has_or_is_using_private_name_0:244===t.parent.kind?r.errorModuleName?2===r.accessibility?e.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:e.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_name_0_from_private_module_1:e.Diagnostics.Return_type_of_public_method_from_exported_class_has_or_is_using_private_name_0:r.errorModuleName?e.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_name_0_from_private_module_1:e.Diagnostics.Return_type_of_method_from_exported_interface_has_or_is_using_private_name_0;break;case 243:n=r.errorModuleName?2===r.accessibility?e.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_external_module_1_but_cannot_be_named:e.Diagnostics.Return_type_of_exported_function_has_or_is_using_name_0_from_private_module_1:e.Diagnostics.Return_type_of_exported_function_has_or_is_using_private_name_0;break;default:return e.Debug.fail("This is unknown kind for signature: "+t.kind)}return{diagnosticMessage:n,errorNode:t.name||t}}:e.isParameter(t)?e.isParameterPropertyDeclaration(t,t.parent)&&e.hasModifier(t.parent,8)?r:function(r){var n=function(r){switch(t.parent.kind){case 161:return r.errorModuleName?2===r.accessibility?e.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_constructor_from_exported_class_has_or_is_using_private_name_1;case 165:case 170:return r.errorModuleName?e.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1;case 164:return r.errorModuleName?e.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1;case 166:return r.errorModuleName?e.Diagnostics.Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_index_signature_from_exported_interface_has_or_is_using_private_name_1;case 160:case 159:return e.hasModifier(t.parent,32)?r.errorModuleName?2===r.accessibility?e.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1:244===t.parent.parent.kind?r.errorModuleName?2===r.accessibility?e.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1:r.errorModuleName?e.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1;case 243:case 169:return r.errorModuleName?2===r.accessibility?e.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_exported_function_has_or_is_using_private_name_1;case 163:case 162:return r.errorModuleName?2===r.accessibility?e.Diagnostics.Parameter_0_of_accessor_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Parameter_0_of_accessor_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Parameter_0_of_accessor_has_or_is_using_private_name_1;default:return e.Debug.fail("Unknown parent for parameter: "+e.SyntaxKind[t.parent.kind])}}(r);return void 0!==n?{diagnosticMessage:n,errorNode:t,typeName:t.name}:void 0}:e.isTypeParameterDeclaration(t)?function(){var r;switch(t.parent.kind){case 244:r=e.Diagnostics.Type_parameter_0_of_exported_class_has_or_is_using_private_name_1;break;case 245:r=e.Diagnostics.Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1;break;case 185:r=e.Diagnostics.Type_parameter_0_of_exported_mapped_object_type_is_using_private_name_1;break;case 170:case 165:r=e.Diagnostics.Type_parameter_0_of_constructor_signature_from_exported_interface_has_or_is_using_private_name_1;break;case 164:r=e.Diagnostics.Type_parameter_0_of_call_signature_from_exported_interface_has_or_is_using_private_name_1;break;case 160:case 159:r=e.hasModifier(t.parent,32)?e.Diagnostics.Type_parameter_0_of_public_static_method_from_exported_class_has_or_is_using_private_name_1:244===t.parent.parent.kind?e.Diagnostics.Type_parameter_0_of_public_method_from_exported_class_has_or_is_using_private_name_1:e.Diagnostics.Type_parameter_0_of_method_from_exported_interface_has_or_is_using_private_name_1;break;case 169:case 243:r=e.Diagnostics.Type_parameter_0_of_exported_function_has_or_is_using_private_name_1;break;case 246:r=e.Diagnostics.Type_parameter_0_of_exported_type_alias_has_or_is_using_private_name_1;break;default:return e.Debug.fail("This is unknown parent for type parameter: "+t.parent.kind)}return{diagnosticMessage:r,errorNode:t,typeName:t.name}}:e.isExpressionWithTypeArguments(t)?function(){var r;r=244===t.parent.parent.kind?e.isHeritageClause(t.parent)&&112===t.parent.token?e.Diagnostics.Implements_clause_of_exported_class_0_has_or_is_using_private_name_1:e.Diagnostics.extends_clause_of_exported_class_0_has_or_is_using_private_name_1:e.Diagnostics.extends_clause_of_exported_interface_0_has_or_is_using_private_name_1;return{diagnosticMessage:r,errorNode:t,typeName:e.getNameOfDeclaration(t.parent.parent)}}:e.isImportEqualsDeclaration(t)?function(){return{diagnosticMessage:e.Diagnostics.Import_declaration_0_is_using_private_name_1,errorNode:t,typeName:t.name}}:e.isTypeAliasDeclaration(t)?function(){return{diagnosticMessage:e.Diagnostics.Exported_type_alias_0_has_or_is_using_private_name_1,errorNode:t.type,typeName:t.name}}:e.Debug.assertNever(t,"Attempted to set a declaration diagnostic context for unhandled node kind: "+e.SyntaxKind[t.kind]);function r(r){var n=function(r){return 241===t.kind||190===t.kind?r.errorModuleName?2===r.accessibility?e.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Exported_variable_0_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Exported_variable_0_has_or_is_using_private_name_1:158===t.kind||193===t.kind||157===t.kind||155===t.kind&&e.hasModifier(t.parent,8)?e.hasModifier(t,32)?r.errorModuleName?2===r.accessibility?e.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1:244===t.parent.kind||155===t.kind?r.errorModuleName?2===r.accessibility?e.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_private_name_1:r.errorModuleName?e.Diagnostics.Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Property_0_of_exported_interface_has_or_is_using_private_name_1:void 0}(r);return void 0!==n?{diagnosticMessage:n,errorNode:t,typeName:t.name}:void 0}}e.canProduceDiagnostics=function(t){return e.isVariableDeclaration(t)||e.isPropertyDeclaration(t)||e.isPropertySignature(t)||e.isBindingElement(t)||e.isSetAccessor(t)||e.isGetAccessor(t)||e.isConstructSignatureDeclaration(t)||e.isCallSignatureDeclaration(t)||e.isMethodDeclaration(t)||e.isMethodSignature(t)||e.isFunctionDeclaration(t)||e.isParameter(t)||e.isTypeParameterDeclaration(t)||e.isExpressionWithTypeArguments(t)||e.isImportEqualsDeclaration(t)||e.isTypeAliasDeclaration(t)||e.isConstructorDeclaration(t)||e.isIndexSignatureDeclaration(t)||e.isPropertyAccessExpression(t)},e.createGetSymbolAccessibilityDiagnosticForNodeName=function(r){return e.isSetAccessor(r)||e.isGetAccessor(r)?function(t){var n=function(t){return e.hasModifier(r,32)?t.errorModuleName?2===t.accessibility?e.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Public_static_property_0_of_exported_class_has_or_is_using_private_name_1:244===r.parent.kind?t.errorModuleName?2===t.accessibility?e.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Public_property_0_of_exported_class_has_or_is_using_private_name_1:t.errorModuleName?e.Diagnostics.Property_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Property_0_of_exported_interface_has_or_is_using_private_name_1}(t);return void 0!==n?{diagnosticMessage:n,errorNode:r,typeName:r.name}:void 0}:e.isMethodSignature(r)||e.isMethodDeclaration(r)?function(t){var n=function(t){return e.hasModifier(r,32)?t.errorModuleName?2===t.accessibility?e.Diagnostics.Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Public_static_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Public_static_method_0_of_exported_class_has_or_is_using_private_name_1:244===r.parent.kind?t.errorModuleName?2===t.accessibility?e.Diagnostics.Public_method_0_of_exported_class_has_or_is_using_name_1_from_external_module_2_but_cannot_be_named:e.Diagnostics.Public_method_0_of_exported_class_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Public_method_0_of_exported_class_has_or_is_using_private_name_1:t.errorModuleName?e.Diagnostics.Method_0_of_exported_interface_has_or_is_using_name_1_from_private_module_2:e.Diagnostics.Method_0_of_exported_interface_has_or_is_using_private_name_1}(t);return void 0!==n?{diagnosticMessage:n,errorNode:r,typeName:r.name}:void 0}:t(r)},e.createGetSymbolAccessibilityDiagnosticForNode=t}(s||(s={})),function(e){function n(t,r){var n=r.text.substring(t.pos,t.end);return e.stringContains(n,"@internal")}function i(t,r){var i=e.getParseTreeNode(t);if(i&&155===i.kind){var a=i.parent.parameters.indexOf(i),o=a>0?i.parent.parameters[a-1]:void 0,s=r.text,c=o?e.concatenate(e.getTrailingCommentRanges(s,e.skipTrivia(s,o.end+1,!1,!0)),e.getLeadingCommentRanges(s,t.pos)):e.getTrailingCommentRanges(s,e.skipTrivia(s,t.pos,!1,!0));return c&&c.length&&n(e.last(c),r)}var u=i&&e.getLeadingCommentRangesOfNode(i,r);return!!e.forEach(u,(function(e){return n(e,r)}))}e.getDeclarationDiagnostics=function(t,r,n){var i=t.getCompilerOptions();return e.transformNodes(r,t,i,n?[n]:t.getSourceFiles(),[o],!1).diagnostics},e.isInternalDeclaration=i;var a=531469;function o(n){var o,u,l,_,d,p,f,m,g,y,h,v=function(){return e.Debug.fail("Diagnostic emitted without context")},b=v,x=!0,D=!1,S=!1,T=!1,E=!1,C=n.getEmitHost(),k={trackSymbol:function(e,t,r){if(262144&e.flags)return;I(N.isSymbolAccessible(e,t,r,!0)),w(N.getTypeReferenceDirectivesForSymbol(e,r))},reportInaccessibleThisError:function(){f&&n.addDiagnostic(e.createDiagnosticForNode(f,e.Diagnostics.The_inferred_type_of_0_references_an_inaccessible_1_type_A_type_annotation_is_necessary,e.declarationNameToString(f),"this"))},reportInaccessibleUniqueSymbolError:function(){f&&n.addDiagnostic(e.createDiagnosticForNode(f,e.Diagnostics.The_inferred_type_of_0_references_an_inaccessible_1_type_A_type_annotation_is_necessary,e.declarationNameToString(f),"unique symbol"))},reportPrivateInBaseOfClassExpression:function(t){f&&n.addDiagnostic(e.createDiagnosticForNode(f,e.Diagnostics.Property_0_of_exported_class_expression_may_not_be_private_or_protected,t))},reportLikelyUnsafeImportRequiredError:function(t){f&&n.addDiagnostic(e.createDiagnosticForNode(f,e.Diagnostics.The_inferred_type_of_0_cannot_be_named_without_a_reference_to_1_This_is_likely_not_portable_A_type_annotation_is_necessary,e.declarationNameToString(f),t))},moduleResolverHost:C,trackReferencedAmbientModule:function(t,r){var n=N.getTypeReferenceDirectivesForSymbol(r,67108863);if(e.length(n))return w(n);var i=e.getSourceFileOfNode(t);g.set(""+e.getOriginalNodeId(i),i)},trackExternalModuleSymbolOfImportTypeNode:function(e){D||(p||(p=[])).push(e)}},N=n.getEmitResolver(),A=n.getCompilerOptions(),F=A.noResolve,P=A.stripInternal;return function(i){if(288===i.kind&&i.isDeclarationFile)return i;if(289===i.kind){D=!0,g=e.createMap(),y=e.createMap();var a=!1,s=e.createBundle(e.map(i.sourceFiles,(function(t){if(!t.isDeclarationFile){if(a=a||t.hasNoDefaultLib,m=t,o=t,l=void 0,d=!1,_=e.createMap(),b=v,T=!1,E=!1,M(t,g),L(t,y),e.isExternalOrCommonJsModule(t)||e.isJsonSourceFile(t)){S=!1,x=!1;var r=e.isSourceFileJS(t)?e.createNodeArray(O(t,!0)):e.visitNodes(t.statements,$);return e.updateSourceFileNode(t,[e.createModuleDeclaration([],[e.createModifier(129)],e.createLiteral(e.getResolvedExternalModuleName(n.getEmitHost(),t)),e.createModuleBlock(e.setTextRange(e.createNodeArray(X(r)),t.statements)))],!0,[],[],!1,[])}x=!0;var i=e.isSourceFileJS(t)?e.createNodeArray(O(t)):e.visitNodes(t.statements,$);return e.updateSourceFileNode(t,X(i),!0,[],[],!1,[])}})),e.mapDefined(i.prepends,(function(t){if(291===t.kind){var r=e.createUnparsedSourceFile(t,"dts",P);return a=a||!!r.hasNoDefaultLib,M(r,g),w(r.typeReferenceDirectives),L(r,y),r}return t})));s.syntheticFileReferences=[],s.syntheticTypeReferences=K(),s.syntheticLibReferences=j(),s.hasNoDefaultLib=a;var c=e.getDirectoryPath(e.normalizeSlashes(e.getOutputPathsFor(i,C,!0).declarationFilePath)),f=z(s.syntheticFileReferences,c);return g.forEach(f),s}x=!0,T=!1,E=!1,o=i,m=i,b=v,D=!1,S=!1,d=!1,l=void 0,_=e.createMap(),u=void 0,g=M(m,e.createMap()),y=L(m,e.createMap());var k,N=[],F=e.getDirectoryPath(e.normalizeSlashes(e.getOutputPathsFor(i,C,!0).declarationFilePath)),I=z(N,F);if(e.isSourceFileJS(m))k=e.createNodeArray(O(i)),g.forEach(I),h=e.filter(k,e.isAnyImportSyntax);else{var R=e.visitNodes(i.statements,$);k=e.setTextRange(e.createNodeArray(X(R)),i.statements),g.forEach(I),h=e.filter(k,e.isAnyImportSyntax),e.isExternalModule(i)&&(!S||T&&!E)&&(k=e.setTextRange(e.createNodeArray(t(k,[e.createEmptyExports()])),k))}var B=e.updateSourceFileNode(i,k,!0,N,K(),i.hasNoDefaultLib,j());return B.exportedModulesFromDeclarationEmit=p,B;function j(){return e.map(e.arrayFrom(y.keys()),(function(e){return{fileName:e,pos:-1,end:-1}}))}function K(){return u?e.mapDefined(e.arrayFrom(u.keys()),J):[]}function J(t){if(h)for(var r=0,n=h;r<n.length;r++){var i=n[r];if(e.isImportEqualsDeclaration(i)&&e.isExternalModuleReference(i.moduleReference)){var a=i.moduleReference.expression;if(e.isStringLiteralLike(a)&&a.text===t)return}else if(e.isImportDeclaration(i)&&e.isStringLiteral(i.moduleSpecifier)&&i.moduleSpecifier.text===t)return}return{fileName:t,pos:-1,end:-1}}function z(t,n){return function(a){var o;if(a.isDeclarationFile)o=a.fileName;else{if(D&&e.contains(i.sourceFiles,a))return;var s=e.getOutputPathsFor(a,C,!0);o=s.declarationFilePath||s.jsFilePath||a.fileName}if(o){var c=e.moduleSpecifiers.getModuleSpecifier(r(r({},A),{baseUrl:A.baseUrl&&e.toPath(A.baseUrl,C.getCurrentDirectory(),C.getCanonicalFileName)}),m,e.toPath(n,C.getCurrentDirectory(),C.getCanonicalFileName),e.toPath(o,C.getCurrentDirectory(),C.getCanonicalFileName),C,C.getSourceFiles(),void 0,C.redirectTargetsMap);if(!e.pathIsRelative(c))return void w([c]);var u=e.getRelativePathToDirectoryOrUrl(n,o,C.getCurrentDirectory(),C.getCanonicalFileName,!1);if(e.startsWith(u,"./")&&e.hasExtension(u)&&(u=u.substring(2)),e.startsWith(u,"node_modules/")||-1!==u.indexOf("/node_modules/"))return;t.push({pos:-1,end:-1,fileName:u})}}}};function w(t){if(t){u=u||e.createMap();for(var r=0,n=t;r<n.length;r++){var i=n[r];u.set(i,!0)}}}function I(t){if(0===t.accessibility){if(t&&t.aliasesToMakeVisible)if(l)for(var r=0,i=t.aliasesToMakeVisible;r<i.length;r++){var a=i[r];e.pushIfUnique(l,a)}else l=t.aliasesToMakeVisible}else{var o=b(t);o&&(o.typeName?n.addDiagnostic(e.createDiagnosticForNode(t.errorNode||o.errorNode,o.diagnosticMessage,e.getTextOfNode(o.typeName),t.errorSymbolName,t.errorModuleName)):n.addDiagnostic(e.createDiagnosticForNode(t.errorNode||o.errorNode,o.diagnosticMessage,t.errorSymbolName,t.errorModuleName)))}}function O(t,r){var n=b;b=function(r){return{diagnosticMessage:r.errorModuleName?e.Diagnostics.Declaration_emit_for_this_file_requires_using_private_name_0_from_module_1_An_explicit_type_annotation_may_unblock_declaration_emit:e.Diagnostics.Declaration_emit_for_this_file_requires_using_private_name_0_An_explicit_type_annotation_may_unblock_declaration_emit,errorNode:r.errorNode||t}};var i=N.getDeclarationStatementsForSourceFile(t,a,k,r);return b=n,i}function M(t,r){return F||!e.isUnparsedSource(t)&&e.isSourceFileJS(t)?r:(e.forEach(t.referencedFiles,(function(n){var i=C.getSourceFileFromReference(t,n);i&&r.set(""+e.getOriginalNodeId(i),i)})),r)}function L(t,r){return e.forEach(t.libReferenceDirectives,(function(e){C.getLibFileFromReference(e)&&r.set(e.fileName.toLocaleLowerCase(),!0)})),r}function R(t,r,n){var i;d||(i=b,b=e.createGetSymbolAccessibilityDiagnosticForNode(t));var a=e.updateParameter(t,void 0,function(t,r,n){return e.createModifiersFromModifierFlags(s(t,r,n))}(t,r),t.dotDotDotToken,function t(r){return 75===r.kind?r:189===r.kind?e.updateArrayBindingPattern(r,e.visitNodes(r.elements,n)):e.updateObjectBindingPattern(r,e.visitNodes(r.elements,n));function n(r){return 214===r.kind?r:e.updateBindingElement(r,r.dotDotDotToken,r.propertyName,t(r.name),B(r)?r.initializer:void 0)}}(t.name),N.isOptionalParameter(t)?t.questionToken||e.createToken(57):void 0,K(t,n||t.type,!0),j(t));return d||(b=i),a}function B(t){return function(t){switch(t.kind){case 158:case 157:return!e.hasModifier(t,8);case 155:case 241:return!0}return!1}(t)&&N.isLiteralConstDeclaration(e.getParseTreeNode(t))}function j(t){if(B(t))return N.createLiteralConstValue(e.getParseTreeNode(t),k)}function K(t,r,n){if((n||!e.hasModifier(t,8))&&!B(t)){var i,s=155===t.kind&&(N.isRequiredInitializedParameter(t)||N.isOptionalUninitializedParameterProperty(t));return r&&!s?e.visitNode(r,Q):e.getParseTreeNode(t)?163===t.kind?e.createKeywordTypeNode(124):(f=t.name,d||(i=b,b=e.createGetSymbolAccessibilityDiagnosticForNode(t)),241===t.kind||190===t.kind?c(N.createTypeOfDeclaration(t,o,a,k)):155===t.kind||158===t.kind||157===t.kind?t.initializer?c(N.createTypeOfDeclaration(t,o,a,k,s)||N.createTypeOfExpression(t.initializer,o,a,k)):c(N.createTypeOfDeclaration(t,o,a,k,s)):c(N.createReturnTypeOfSignatureDeclaration(t,o,a,k))):r?e.visitNode(r,Q):e.createKeywordTypeNode(124)}function c(t){return f=void 0,d||(b=i),t||e.createKeywordTypeNode(124)}}function J(t){switch((t=e.getParseTreeNode(t)).kind){case 243:case 248:case 245:case 244:case 246:case 247:return!N.isDeclarationVisible(t);case 241:return!z(t);case 252:case 253:case 259:case 258:return!1}return!1}function z(t){return!e.isOmittedExpression(t)&&(e.isBindingPattern(t.name)?e.some(t.name.elements,z):N.isDeclarationVisible(t))}function U(t,r,n){if(!e.hasModifier(t,8)){var i=e.map(r,(function(e){return R(e,n)}));if(i)return e.createNodeArray(i,r.hasTrailingComma)}}function V(t,r){var n;if(!r){var i=e.getThisParameter(t);i&&(n=[R(i)])}if(e.isSetAccessorDeclaration(t)){var a=void 0;if(!r){var o=e.getSetAccessorValueParameter(t);if(o)a=R(o,void 0,ae(t,N.getAllAccessorDeclarations(t)))}a||(a=e.createParameter(void 0,void 0,void 0,"value")),n=e.append(n,a)}return e.createNodeArray(n||e.emptyArray)}function q(t,r){return e.hasModifier(t,8)?void 0:e.visitNodes(r,Q)}function W(t){return e.isSourceFile(t)||e.isTypeAliasDeclaration(t)||e.isModuleDeclaration(t)||e.isClassDeclaration(t)||e.isInterfaceDeclaration(t)||e.isFunctionLike(t)||e.isIndexSignatureDeclaration(t)||e.isMappedTypeNode(t)}function G(e,t){I(N.isEntityNameVisible(e,t)),w(N.getTypeReferenceDirectivesForEntityName(e))}function H(t,r){return e.hasJSDocNodes(t)&&e.hasJSDocNodes(r)&&(t.jsDoc=r.jsDoc),e.setCommentRange(t,e.getCommentRange(r))}function Y(t,r){if(r){if(S=S||248!==t.kind&&187!==t.kind,e.isStringLiteralLike(r))if(D){var i=e.getExternalModuleNameFromDeclaration(n.getEmitHost(),N,t);if(i)return e.createLiteral(i)}else{var a=N.getSymbolOfExternalModuleSpecifier(r);a&&(p||(p=[])).push(a)}return r}}function X(t){for(;e.length(l);){var r=l.shift();if(!e.isLateVisibilityPaintedStatement(r))return e.Debug.fail("Late replaced statement was found which is not handled by the declaration transformer!: "+(e.SyntaxKind?e.SyntaxKind[r.kind]:r.kind));var n=x;x=r.parent&&e.isSourceFile(r.parent)&&!(e.isExternalModule(r.parent)&&D);var i=ee(r);x=n,_.set(""+e.getOriginalNodeId(r),i)}return e.visitNodes(t,(function(t){if(e.isLateVisibilityPaintedStatement(t)){var r=""+e.getOriginalNodeId(t);if(_.has(r)){var n=_.get(r);return _.delete(r),n&&((e.isArray(n)?e.some(n,e.needsScopeMarker):e.needsScopeMarker(n))&&(T=!0),e.isSourceFile(t.parent)&&(e.isArray(n)?e.some(n,e.isExternalModuleIndicator):e.isExternalModuleIndicator(n))&&(S=!0)),n}}return t}))}function Q(t){if(!re(t)){if(e.isDeclaration(t)){if(J(t))return;if(e.hasDynamicName(t)&&!N.isLateBound(e.getParseTreeNode(t)))return}if(!(e.isFunctionLike(t)&&N.isImplementationOfOverload(t)||e.isSemicolonClassElement(t))){var r;W(t)&&(r=o,o=t);var i=b,a=e.canProduceDiagnostics(t),s=d,c=(172===t.kind||185===t.kind)&&246!==t.parent.kind;if((e.isMethodDeclaration(t)||e.isMethodSignature(t))&&e.hasModifier(t,8)){if(t.symbol&&t.symbol.declarations&&t.symbol.declarations[0]!==t)return;return D(e.createProperty(void 0,ie(t),t.name,void 0,void 0,void 0))}if(a&&!d&&(b=e.createGetSymbolAccessibilityDiagnosticForNode(t)),e.isTypeQueryNode(t)&&G(t.exprName,o),c&&(d=!0),function(e){switch(e.kind){case 165:case 161:case 160:case 162:case 163:case 158:case 157:case 159:case 164:case 166:case 241:case 154:case 215:case 168:case 179:case 169:case 170:case 187:return!0}return!1}(t))switch(t.kind){case 215:(e.isEntityName(t.expression)||e.isEntityNameExpression(t.expression))&&G(t.expression,o);var u=e.visitEachChild(t,Q,n);return D(e.updateExpressionWithTypeArguments(u,e.parenthesizeTypeParameters(u.typeArguments),u.expression));case 168:G(t.typeName,o);u=e.visitEachChild(t,Q,n);return D(e.updateTypeReferenceNode(u,u.typeName,e.parenthesizeTypeParameters(u.typeArguments)));case 165:return D(e.updateConstructSignature(t,q(t,t.typeParameters),U(t,t.parameters),K(t,t.type)));case 161:var l=e.hasModifier(t,8),_=e.createSignatureDeclaration(161,l?void 0:q(t,t.typeParameters),l?void 0:U(t,t.parameters,0),void 0);return _.modifiers=e.createNodeArray(ie(t)),D(_);case 160:var p=e.createSignatureDeclaration(159,q(t,t.typeParameters),U(t,t.parameters),K(t,t.type));return p.name=t.name,p.modifiers=e.createNodeArray(ie(t)),p.questionToken=t.questionToken,D(p);case 162:l=e.hasModifier(t,8);var m=ae(t,N.getAllAccessorDeclarations(t));return D(e.updateGetAccessor(t,void 0,ie(t),t.name,V(t,l),l?void 0:K(t,m),void 0));case 163:return D(e.updateSetAccessor(t,void 0,ie(t),t.name,V(t,e.hasModifier(t,8)),void 0));case 158:return D(e.updateProperty(t,void 0,ie(t),t.name,t.questionToken,e.hasModifier(t,8)?void 0:K(t,t.type),j(t)));case 157:return D(e.updatePropertySignature(t,ie(t),t.name,t.questionToken,e.hasModifier(t,8)?void 0:K(t,t.type),j(t)));case 159:return D(e.updateMethodSignature(t,q(t,t.typeParameters),U(t,t.parameters),K(t,t.type),t.name,t.questionToken));case 164:return D(e.updateCallSignature(t,q(t,t.typeParameters),U(t,t.parameters),K(t,t.type)));case 166:return D(e.updateIndexSignature(t,void 0,ie(t),U(t,t.parameters),e.visitNode(t.type,Q)||e.createKeywordTypeNode(124)));case 241:return e.isBindingPattern(t.name)?te(t.name):(c=!0,d=!0,D(e.updateVariableDeclaration(t,t.name,K(t,t.type),j(t))));case 154:return function(t){return 160===t.parent.kind&&e.hasModifier(t.parent,8)}(t)&&(t.default||t.constraint)?D(e.updateTypeParameterDeclaration(t,t.name,void 0,void 0)):D(e.visitEachChild(t,Q,n));case 179:var g=e.visitNode(t.checkType,Q),y=e.visitNode(t.extendsType,Q),h=o;o=t.trueType;var v=e.visitNode(t.trueType,Q);o=h;var x=e.visitNode(t.falseType,Q);return D(e.updateConditionalTypeNode(t,g,y,v,x));case 169:return D(e.updateFunctionTypeNode(t,e.visitNodes(t.typeParameters,Q),U(t,t.parameters),e.visitNode(t.type,Q)));case 170:return D(e.updateConstructorTypeNode(t,e.visitNodes(t.typeParameters,Q),U(t,t.parameters),e.visitNode(t.type,Q)));case 187:return e.isLiteralImportTypeNode(t)?D(e.updateImportTypeNode(t,e.updateLiteralTypeNode(t.argument,Y(t,t.argument.literal)),t.qualifier,e.visitNodes(t.typeArguments,Q,e.isTypeNode),t.isTypeOf)):D(t);default:e.Debug.assertNever(t,"Attempted to process unhandled node kind: "+e.SyntaxKind[t.kind])}return D(e.visitEachChild(t,Q,n))}}function D(n){return n&&a&&e.hasDynamicName(t)&&function(t){var r;d||(r=b,b=e.createGetSymbolAccessibilityDiagnosticForNodeName(t));f=t.name,e.Debug.assert(N.isLateBound(e.getParseTreeNode(t))),G(t.name.expression,o),d||(b=r);f=void 0}(t),W(t)&&(o=r),a&&!d&&(b=i),c&&(d=s),n===t?n:n&&e.setOriginalNode(H(n,t),t)}}function $(t){if(function(e){switch(e.kind){case 243:case 248:case 252:case 245:case 244:case 246:case 247:case 224:case 253:case 259:case 258:return!0}return!1}(t)&&!re(t)){switch(t.kind){case 259:return e.isSourceFile(t.parent)&&(S=!0),E=!0,e.updateExportDeclaration(t,void 0,t.modifiers,t.exportClause,Y(t,t.moduleSpecifier));case 258:if(e.isSourceFile(t.parent)&&(S=!0),E=!0,75===t.expression.kind)return t;var r=e.createOptimisticUniqueName("_default");b=function(){return{diagnosticMessage:e.Diagnostics.Default_export_of_the_module_has_or_is_using_private_name_0,errorNode:t}};var n=e.createVariableDeclaration(r,N.createTypeOfExpression(t.expression,t,a,k),void 0);return[e.createVariableStatement(x?[e.createModifier(129)]:[],e.createVariableDeclarationList([n],2)),e.updateExportAssignment(t,t.decorators,t.modifiers,r)]}var i=ee(t);return _.set(""+e.getOriginalNodeId(t),i),t}}function Z(t){if(e.isImportEqualsDeclaration(t)||e.hasModifier(t,512))return t;var r=e.getMutableClone(t),n=e.createModifiersFromModifierFlags(3070&e.getModifierFlags(t));return r.modifiers=n.length?e.createNodeArray(n):void 0,r}function ee(r){if(!re(r)){switch(r.kind){case 252:return function(t){if(N.isDeclarationVisible(t)){if(263===t.moduleReference.kind){var r=e.getExternalModuleImportEqualsDeclarationExpression(t);return e.updateImportEqualsDeclaration(t,void 0,t.modifiers,t.name,e.updateExternalModuleReference(t.moduleReference,Y(t,r)))}var n=b;return b=e.createGetSymbolAccessibilityDiagnosticForNode(t),G(t.moduleReference,o),b=n,t}}(r);case 253:return function(t){if(!t.importClause)return e.updateImportDeclaration(t,void 0,t.modifiers,t.importClause,Y(t,t.moduleSpecifier));var r=t.importClause&&t.importClause.name&&N.isDeclarationVisible(t.importClause)?t.importClause.name:void 0;if(!t.importClause.namedBindings)return r&&e.updateImportDeclaration(t,void 0,t.modifiers,e.updateImportClause(t.importClause,r,void 0),Y(t,t.moduleSpecifier));if(255===t.importClause.namedBindings.kind){var n=N.isDeclarationVisible(t.importClause.namedBindings)?t.importClause.namedBindings:void 0;return r||n?e.updateImportDeclaration(t,void 0,t.modifiers,e.updateImportClause(t.importClause,r,n),Y(t,t.moduleSpecifier)):void 0}var i=e.mapDefined(t.importClause.namedBindings.elements,(function(e){return N.isDeclarationVisible(e)?e:void 0}));return i&&i.length||r?e.updateImportDeclaration(t,void 0,t.modifiers,e.updateImportClause(t.importClause,r,i&&i.length?e.updateNamedImports(t.importClause.namedBindings,i):void 0),Y(t,t.moduleSpecifier)):void 0}(r)}if(!(e.isDeclaration(r)&&J(r)||e.isFunctionLike(r)&&N.isImplementationOfOverload(r))){var n;W(r)&&(n=o,o=r);var i=e.canProduceDiagnostics(r),s=b;i&&(b=e.createGetSymbolAccessibilityDiagnosticForNode(r));var c=x;switch(r.kind){case 246:return ce(e.updateTypeAliasDeclaration(r,void 0,ie(r),r.name,e.visitNodes(r.typeParameters,Q,e.isTypeParameterDeclaration),e.visitNode(r.type,Q,e.isTypeNode)));case 245:return ce(e.updateInterfaceDeclaration(r,void 0,ie(r),r.name,q(r,r.typeParameters),oe(r.heritageClauses),e.visitNodes(r.members,Q)));case 243:var u=ce(e.updateFunctionDeclaration(r,void 0,ie(r),void 0,r.name,q(r,r.typeParameters),U(r,r.parameters),K(r,r.type),void 0));if(u&&N.isExpandoFunctionDeclaration(r)){var l=N.getPropertiesOfContainerFunction(r),d=e.createModuleDeclaration(void 0,void 0,u.name||e.createIdentifier("_default"),e.createModuleBlock([]),16);d.flags^=8,d.parent=o,d.locals=e.createSymbolTable(l),d.symbol=l[0].parent;var p=e.mapDefined(l,(function(t){if(e.isPropertyAccessExpression(t.valueDeclaration)){b=e.createGetSymbolAccessibilityDiagnosticForNode(t.valueDeclaration);var r=N.createTypeOfDeclaration(t.valueDeclaration,d,a,k);b=s;var n=e.createVariableDeclaration(e.unescapeLeadingUnderscores(t.escapedName),r,void 0);return e.createVariableStatement(void 0,e.createVariableDeclarationList([n]))}})),f=e.createModuleDeclaration(void 0,ie(r),r.name,e.createModuleBlock(p),16);if(!e.hasModifier(u,512))return[u,f];var m=e.createModifiersFromModifierFlags(-514&e.getModifierFlags(u)|2),g=e.updateFunctionDeclaration(u,void 0,m,void 0,u.name,u.typeParameters,u.parameters,u.type,void 0),y=e.updateModuleDeclaration(f,void 0,m,f.name,f.body),h=e.createExportAssignment(void 0,void 0,!1,f.name);return e.isSourceFile(r.parent)&&(S=!0),E=!0,[g,y,h]}return u;case 248:x=!1;var v=r.body;if(v&&249===v.kind){var D=T,C=E;E=!1,T=!1;var A=X(e.visitNodes(v.statements,$));8388608&r.flags&&(T=!1),e.isGlobalScopeAugmentation(r)||function(t){return e.some(t,ne)}(A)||E||(A=T?e.createNodeArray(t(A,[e.createEmptyExports()])):e.visitNodes(A,Z));var F=e.updateModuleBlock(v,A);x=c,T=D,E=C;var P=ie(r);return ce(e.updateModuleDeclaration(r,void 0,P,e.isExternalModuleAugmentation(r)?Y(r,r.name):r.name,F))}x=c;P=ie(r);x=!1,e.visitNode(v,$);var w=""+e.getOriginalNodeId(v);F=_.get(w);return _.delete(w),ce(e.updateModuleDeclaration(r,void 0,P,r.name,F));case 244:m=e.createNodeArray(ie(r));var I=q(r,r.typeParameters),O=e.getFirstConstructorWithBody(r),M=void 0;if(O){var L=b;M=e.compact(e.flatMap(O.parameters,(function(t){if(e.hasModifier(t,92)&&!re(t))return b=e.createGetSymbolAccessibilityDiagnosticForNode(t),75===t.name.kind?H(e.createProperty(void 0,ie(t),t.name,t.questionToken,K(t,t.type),j(t)),t):function r(n){var i;for(var a=0,o=n.elements;a<o.length;a++){var s=o[a];e.isOmittedExpression(s)||(e.isBindingPattern(s.name)&&(i=e.concatenate(i,r(s.name))),(i=i||[]).push(e.createProperty(void 0,ie(t),s.name,void 0,K(s,void 0),void 0)))}return i}(t.name)}))),b=L}var R=e.createNodeArray(e.concatenate(M,e.visitNodes(r.members,Q))),B=e.getEffectiveBaseTypeNode(r);if(B&&!e.isEntityNameExpression(B.expression)&&99!==B.expression.kind){var V=r.name?e.unescapeLeadingUnderscores(r.name.escapedText):"default",ee=e.createOptimisticUniqueName(V+"_base");b=function(){return{diagnosticMessage:e.Diagnostics.extends_clause_of_exported_class_0_has_or_is_using_private_name_1,errorNode:B,typeName:r.name}};var te=e.createVariableDeclaration(ee,N.createTypeOfExpression(B.expression,r,a,k),void 0),ae=e.createVariableStatement(x?[e.createModifier(129)]:[],e.createVariableDeclarationList([te],2)),se=e.createNodeArray(e.map(r.heritageClauses,(function(t){if(89===t.token){var r=b;b=e.createGetSymbolAccessibilityDiagnosticForNode(t.types[0]);var n=e.updateHeritageClause(t,e.map(t.types,(function(t){return e.updateExpressionWithTypeArguments(t,e.visitNodes(t.typeArguments,Q),ee)})));return b=r,n}return e.updateHeritageClause(t,e.visitNodes(e.createNodeArray(e.filter(t.types,(function(t){return e.isEntityNameExpression(t.expression)||99===t.expression.kind}))),Q))})));return[ae,ce(e.updateClassDeclaration(r,void 0,m,r.name,I,se,R))]}se=oe(r.heritageClauses);return ce(e.updateClassDeclaration(r,void 0,m,r.name,I,se,R));case 224:return ce(function(t){if(!e.forEach(t.declarationList.declarations,z))return;var r=e.visitNodes(t.declarationList.declarations,Q);if(!e.length(r))return;return e.updateVariableStatement(t,e.createNodeArray(ie(t)),e.updateVariableDeclarationList(t.declarationList,r))}(r));case 247:return ce(e.updateEnumDeclaration(r,void 0,e.createNodeArray(ie(r)),r.name,e.createNodeArray(e.mapDefined(r.members,(function(t){if(!re(t)){var r=N.getConstantValue(t);return H(e.updateEnumMember(t,t.name,void 0!==r?e.createLiteral(r):void 0),t)}})))))}return e.Debug.assertNever(r,"Unhandled top-level node in declaration emit: "+e.SyntaxKind[r.kind])}}function ce(t){return W(r)&&(o=n),i&&(b=s),248===r.kind&&(x=c),t===r?t:t&&e.setOriginalNode(H(t,r),r)}}function te(t){return e.flatten(e.mapDefined(t.elements,(function(t){return function(t){if(214===t.kind)return;if(t.name){if(!z(t))return;return e.isBindingPattern(t.name)?te(t.name):e.createVariableDeclaration(t.name,K(t,void 0),void 0)}}(t)})))}function re(e){return!!P&&!!e&&i(e,m)}function ne(t){return e.isExportAssignment(t)||e.isExportDeclaration(t)}function ie(t){var r=e.getModifierFlags(t),n=function(t){var r=2811,n=x&&!function(e){if(245===e.kind)return!0;return!1}(t)?2:0,i=288===t.parent.kind;(!i||D&&i&&e.isExternalModule(t.parent))&&(r^=2,n=0);return s(t,r,n)}(t);return r===n?t.modifiers:e.createModifiersFromModifierFlags(n)}function ae(t,r){var n=c(t);return n||t===r.firstAccessor||(n=c(r.firstAccessor),b=e.createGetSymbolAccessibilityDiagnosticForNode(r.firstAccessor)),!n&&r.secondAccessor&&t!==r.secondAccessor&&(n=c(r.secondAccessor),b=e.createGetSymbolAccessibilityDiagnosticForNode(r.secondAccessor)),n}function oe(t){return e.createNodeArray(e.filter(e.map(t,(function(t){return e.updateHeritageClause(t,e.visitNodes(e.createNodeArray(e.filter(t.types,(function(r){return e.isEntityNameExpression(r.expression)||89===t.token&&99===r.expression.kind}))),Q))})),(function(e){return e.types&&!!e.types.length})))}}function s(t,r,n){void 0===r&&(r=3067),void 0===n&&(n=0);var i=e.getModifierFlags(t)&r|n;return 512&i&&!(1&i)&&(i^=1),512&i&&2&i&&(i^=2),i}function c(e){if(e)return 162===e.kind?e.type:e.parameters.length>0?e.parameters[0].type:void 0}e.transformDeclarations=o}(s||(s={})),function(e){var r,n;function i(t,r,n){if(n)return e.emptyArray;var i=t.jsx,a=e.getEmitScriptTarget(t),o=e.getEmitModuleKind(t),c=[];return e.addRange(c,r&&e.map(r.before,s)),c.push(e.transformTypeScript),c.push(e.transformClassFields),2===i&&c.push(e.transformJsx),a<99&&c.push(e.transformESNext),a<6&&c.push(e.transformES2019),a<5&&c.push(e.transformES2018),a<4&&c.push(e.transformES2017),a<3&&c.push(e.transformES2016),a<2&&(c.push(e.transformES2015),c.push(e.transformGenerators)),c.push(function(t){switch(t){case e.ModuleKind.ESNext:case e.ModuleKind.ES2015:return e.transformES2015Module;case e.ModuleKind.System:return e.transformSystemModule;default:return e.transformModule}}(o)),a<1&&c.push(e.transformES5),e.addRange(c,r&&e.map(r.after,s)),c}function a(t){var r=[];return r.push(e.transformDeclarations),e.addRange(r,t&&e.map(t.afterDeclarations,c)),r}function o(t,r){return function(n){var i=t(n);return"function"==typeof i?r(i):function(t){return function(r){return e.isBundle(r)?t.transformBundle(r):t.transformSourceFile(r)}}(i)}}function s(t){return o(t,e.chainBundle)}function c(t){return o(t,e.identity)}function u(e,t){return t}function l(e,t,r){r(e,t)}!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initialized=1]="Initialized",e[e.Completed=2]="Completed",e[e.Disposed=3]="Disposed"}(r||(r={})),function(e){e[e.Substitution=1]="Substitution",e[e.EmitNotifications=2]="EmitNotifications"}(n||(n={})),e.noTransformers={scriptTransformers:e.emptyArray,declarationTransformers:e.emptyArray},e.getTransformers=function(e,t,r){return{scriptTransformers:i(e,t,r),declarationTransformers:a(t)}},e.noEmitSubstitution=u,e.noEmitNotification=l,e.transformNodes=function(r,n,i,a,o,s){for(var c,_,d,p=new Array(324),f=[],m=[],g=0,y=!1,h=u,v=l,b=0,x=[],D={getCompilerOptions:function(){return i},getEmitResolver:function(){return r},getEmitHost:function(){return n},startLexicalEnvironment:function(){e.Debug.assert(b>0,"Cannot modify the lexical environment during initialization."),e.Debug.assert(b<2,"Cannot modify the lexical environment after transformation has completed."),e.Debug.assert(!y,"Lexical environment is suspended."),f[g]=c,m[g]=_,g++,c=void 0,_=void 0},suspendLexicalEnvironment:function(){e.Debug.assert(b>0,"Cannot modify the lexical environment during initialization."),e.Debug.assert(b<2,"Cannot modify the lexical environment after transformation has completed."),e.Debug.assert(!y,"Lexical environment is already suspended."),y=!0},resumeLexicalEnvironment:function(){e.Debug.assert(b>0,"Cannot modify the lexical environment during initialization."),e.Debug.assert(b<2,"Cannot modify the lexical environment after transformation has completed."),e.Debug.assert(y,"Lexical environment is not suspended."),y=!1},endLexicalEnvironment:function(){var r;if(e.Debug.assert(b>0,"Cannot modify the lexical environment during initialization."),e.Debug.assert(b<2,"Cannot modify the lexical environment after transformation has completed."),e.Debug.assert(!y,"Lexical environment is suspended."),(c||_)&&(_&&(r=t(_)),c)){var n=e.createVariableStatement(void 0,e.createVariableDeclarationList(c));e.setEmitFlags(n,1048576),r?r.push(n):r=[n]}c=f[--g],_=m[g],0===g&&(f=[],m=[]);return r},hoistVariableDeclaration:function(t){e.Debug.assert(b>0,"Cannot modify the lexical environment during initialization."),e.Debug.assert(b<2,"Cannot modify the lexical environment after transformation has completed.");var r=e.setEmitFlags(e.createVariableDeclaration(t),64);c?c.push(r):c=[r]},hoistFunctionDeclaration:function(t){e.Debug.assert(b>0,"Cannot modify the lexical environment during initialization."),e.Debug.assert(b<2,"Cannot modify the lexical environment after transformation has completed."),_?_.push(t):_=[t]},requestEmitHelper:function(t){e.Debug.assert(b>0,"Cannot modify the transformation context during initialization."),e.Debug.assert(b<2,"Cannot modify the transformation context after transformation has completed."),e.Debug.assert(!t.scoped,"Cannot request a scoped emit helper."),d=e.append(d,t)},readEmitHelpers:function(){e.Debug.assert(b>0,"Cannot modify the transformation context during initialization."),e.Debug.assert(b<2,"Cannot modify the transformation context after transformation has completed.");var t=d;return d=void 0,t},enableSubstitution:function(t){e.Debug.assert(b<2,"Cannot modify the transformation context after transformation has completed."),p[t]|=1},enableEmitNotification:function(t){e.Debug.assert(b<2,"Cannot modify the transformation context after transformation has completed."),p[t]|=2},isSubstitutionEnabled:A,isEmitNotificationEnabled:F,get onSubstituteNode(){return h},set onSubstituteNode(t){e.Debug.assert(b<1,"Cannot modify transformation hooks after initialization has completed."),e.Debug.assert(void 0!==t,"Value must not be 'undefined'"),h=t},get onEmitNode(){return v},set onEmitNode(t){e.Debug.assert(b<1,"Cannot modify transformation hooks after initialization has completed."),e.Debug.assert(void 0!==t,"Value must not be 'undefined'"),v=t},addDiagnostic:function(e){x.push(e)}},S=0,T=a;S<T.length;S++){var E=T[S];e.disposeEmitNodes(e.getSourceFileOfNode(e.getParseTreeNode(E)))}e.performance.mark("beforeTransform");var C=o.map((function(e){return e(D)})),k=function(e){for(var t=0,r=C;t<r.length;t++){e=(0,r[t])(e)}return e};b=1;var N=e.map(a,s?k:function(t){return!t||e.isSourceFile(t)&&t.isDeclarationFile?t:k(t)});return b=2,e.performance.mark("afterTransform"),e.performance.measure("transformTime","beforeTransform","afterTransform"),{transformed:N,substituteNode:function(t,r){return e.Debug.assert(b<3,"Cannot substitute a node after the result is disposed."),r&&A(r)&&h(t,r)||r},emitNodeWithNotification:function(t,r,n){e.Debug.assert(b<3,"Cannot invoke TransformationResult callbacks after the result is disposed."),r&&(F(r)?v(t,r,n):n(t,r))},dispose:function(){if(b<3){for(var t=0,r=a;t<r.length;t++){var n=r[t];e.disposeEmitNodes(e.getSourceFileOfNode(e.getParseTreeNode(n)))}c=void 0,f=void 0,_=void 0,m=void 0,h=void 0,v=void 0,d=void 0,b=3}},diagnostics:x};function A(t){return 0!=(1&p[t.kind])&&0==(4&e.getEmitFlags(t))}function F(t){return 0!=(2&p[t.kind])||0!=(2&e.getEmitFlags(t))}}}(s||(s={})),function(e){var r,n,i=function(){var e=[];return e[1024]=["{","}"],e[2048]=["(",")"],e[4096]=["<",">"],e[8192]=["[","]"],e}(),a={pos:-1,end:-1};function o(t,r,n,i,a,o){void 0===i&&(i=!1);var c=e.isArray(n)?n:e.getSourceFilesToEmit(t,n),l=t.getCompilerOptions();if(l.outFile||l.out){var _=t.getPrependNodes();if(c.length||_.length){var d=e.createBundle(c,_);if(m=r(u(d,t,i),d))return m}}else{if(!a)for(var p=0,f=c;p<f.length;p++){var m,g=f[p];if(m=r(u(g,t,i),g))return m}if(o){var y=s(t.getCompilerOptions());if(y)return r({buildInfoPath:y},void 0)}}}function s(t){var r=t.configFilePath;if(e.isIncrementalCompilation(t)){if(t.tsBuildInfoFile)return t.tsBuildInfoFile;var n,i=t.outFile||t.out;if(i)n=e.removeFileExtension(i);else{if(!r)return;var a=e.removeFileExtension(r);n=t.outDir?t.rootDir?e.resolvePath(t.outDir,e.getRelativePathFromDirectory(t.rootDir,a,!0)):e.combinePaths(t.outDir,e.getBaseFileName(a)):a}return n+".tsbuildinfo"}}function c(t,r){var n=t.outFile||t.out,i=t.emitDeclarationOnly?void 0:n,a=i&&l(i,t),o=r||e.getEmitDeclarations(t)?e.removeFileExtension(n)+".d.ts":void 0;return{jsFilePath:i,sourceMapFilePath:a,declarationFilePath:o,declarationMapPath:o&&e.getAreDeclarationMapsEnabled(t)?o+".map":void 0,buildInfoPath:s(t)}}function u(t,r,n){var i=r.getCompilerOptions();if(289===t.kind)return c(i,n);var a=e.getOwnEmitOutputFilePath(t.fileName,r,_(t,i)),o=e.isJsonSourceFile(t)&&0===e.comparePaths(t.fileName,a,r.getCurrentDirectory(),!r.useCaseSensitiveFileNames()),s=i.emitDeclarationOnly||o?void 0:a,u=!s||e.isJsonSourceFile(t)?void 0:l(s,i),d=n||e.getEmitDeclarations(i)?e.getDeclarationEmitOutputFilePath(t.fileName,r):void 0;return{jsFilePath:s,sourceMapFilePath:u,declarationFilePath:d,declarationMapPath:d&&e.getAreDeclarationMapsEnabled(i)?d+".map":void 0,buildInfoPath:void 0}}function l(e,t){return t.sourceMap&&!t.inlineSourceMap?e+".map":void 0}function _(t,r){if(e.isJsonSourceFile(t))return".json";if(1===r.jsx)if(e.isSourceFileJS(t)){if(e.fileExtensionIs(t.fileName,".jsx"))return".jsx"}else if(1===t.languageVariant)return".jsx";return".js"}function d(t,r,n,i){return i?e.resolvePath(i,e.getRelativePathFromDirectory(function(t){return t.options.rootDir||e.getDirectoryPath(e.Debug.assertDefined(t.options.configFilePath))}(r),t,n)):t}function p(t,r,n){return e.Debug.assert(!e.fileExtensionIs(t,".d.ts")),e.changeExtension(d(t,r,n,r.options.declarationDir||r.options.outDir),".d.ts")}function f(t,r,n){if(!r.options.emitDeclarationOnly){var i=e.fileExtensionIs(t,".json"),a=e.changeExtension(d(t,r,n,r.options.outDir),i?".json":e.fileExtensionIs(t,".tsx")&&1===r.options.jsx?".jsx":".js");return i&&0===e.comparePaths(t,a,e.Debug.assertDefined(r.options.configFilePath),n)?void 0:a}}function m(){var t;return{addOutput:function(e){e&&(t||(t=[])).push(e)},getOutputs:function(){return t||e.emptyArray}}}function g(e,t){var r=c(e.options,!1),n=r.jsFilePath,i=r.sourceMapFilePath,a=r.declarationFilePath,o=r.declarationMapPath,s=r.buildInfoPath;t(n),t(i),t(a),t(o),t(s)}function y(t,r,n,i){if(!e.fileExtensionIs(r,".d.ts")){var a=f(r,t,n);if(i(a),!e.fileExtensionIs(r,".json")&&(a&&t.options.sourceMap&&i(a+".map"),e.getEmitDeclarations(t.options))){var o=p(r,t,n);i(o),t.options.declarationMap&&i(o+".map")}}}function h(t,r,n,i,a,s,c){var u,l,_=i.scriptTransformers,d=i.declarationTransformers,p=r.getCompilerOptions(),f=p.sourceMap||p.inlineSourceMap||e.getAreDeclarationMapsEnabled(p)?[]:void 0,m=p.listEmittedFiles?[]:void 0,g=e.createDiagnosticCollection(),y=e.getNewLineCharacter(p,(function(){return r.getNewLine()})),h=e.createTextWriter(y),b=e.performance.createTimer("printTime","beforePrint","afterPrint"),D=b.enter,S=b.exit,T=!1;return D(),o(r,(function(i,o){var s,f=i.jsFilePath,y=i.sourceMapFilePath,h=i.declarationFilePath,b=i.declarationMapPath,D=i.buildInfoPath;D&&o&&e.isBundle(o)&&(s=e.getDirectoryPath(e.getNormalizedAbsolutePath(D,r.getCurrentDirectory())),u={commonSourceDirectory:S(r.getCommonSourceDirectory()),sourceFiles:o.sourceFiles.map((function(t){return S(e.getNormalizedAbsolutePath(t.fileName,r.getCurrentDirectory()))}))});(function(n,i,o,s){if(!n||a||!i)return;if(i&&r.isEmitBlocked(i)||p.noEmit)return void(T=!0);var c=e.transformNodes(t,r,p,[n],_,!1),l=x({removeComments:p.removeComments,newLine:p.newLine,noEmitHelpers:p.noEmitHelpers,module:p.module,target:p.target,sourceMap:p.sourceMap,inlineSourceMap:p.inlineSourceMap,inlineSources:p.inlineSources,extendedDiagnostics:p.extendedDiagnostics,writeBundleFileInfo:!!u,relativeToBuildInfo:s},{hasGlobalName:t.hasGlobalName,onEmitNode:c.emitNodeWithNotification,substituteNode:c.substituteNode});e.Debug.assert(1===c.transformed.length,"Should only see one output from the transform"),C(i,o,c.transformed[0],l,p),c.dispose(),u&&(u.js=l.bundleFileInfo)})(o,f,y,S),function(n,i,o,s){if(!n)return;if(!i)return void((a||p.emitDeclarationOnly)&&(T=!0));var _=e.isSourceFile(n)?[n]:n.sourceFiles,f=p.outFile||p.out?[e.createBundle(_,e.isSourceFile(n)?void 0:n.prepends)]:_;a&&!e.getEmitDeclarations(p)&&_.forEach(E);var m=e.transformNodes(t,r,p,f,d,!1);if(e.length(m.diagnostics))for(var y=0,h=m.diagnostics;y<h.length;y++){var v=h[y];g.add(v)}var b=x({removeComments:p.removeComments,newLine:p.newLine,noEmitHelpers:!0,module:p.module,target:p.target,sourceMap:p.sourceMap,inlineSourceMap:p.inlineSourceMap,extendedDiagnostics:p.extendedDiagnostics,onlyPrintJsDocStyle:!0,writeBundleFileInfo:!!u,recordInternalSection:!!u,relativeToBuildInfo:s},{hasGlobalName:t.hasGlobalName,onEmitNode:m.emitNodeWithNotification,substituteNode:m.substituteNode}),D=!!m.diagnostics&&!!m.diagnostics.length||!!r.isEmitBlocked(i)||!!p.noEmit;if(T=T||D,(!D||c)&&(e.Debug.assert(1===m.transformed.length,"Should only see one output from the decl transform"),C(i,o,m.transformed[0],b,{sourceMap:p.declarationMap,sourceRoot:p.sourceRoot,mapRoot:p.mapRoot,extendedDiagnostics:p.extendedDiagnostics}),c&&288===m.transformed[0].kind)){var S=m.transformed[0];l=S.exportedModulesFromDeclarationEmit}m.dispose(),u&&(u.dts=b.bundleFileInfo)}(o,h,b,S),function(t,i){if(!i||n||T)return;var a=r.getProgramBuildInfo();if(r.isEmitBlocked(i)||p.noEmit)return void(T=!0);e.writeFile(r,g,i,v({bundle:t,program:a,version:e.version}),!1)}(u,D),!T&&m&&(a||(f&&m.push(f),y&&m.push(y),D&&m.push(D)),h&&m.push(h),b&&m.push(b));function S(t){return e.ensurePathIsNonModuleName(e.getRelativePathFromDirectory(s,t,r.getCanonicalFileName))}}),e.getSourceFilesToEmit(r,n),c,s,!n),S(),{emitSkipped:T,diagnostics:g.getDiagnostics(),emittedFiles:m,sourceMaps:f,exportedModulesFromDeclarationEmit:l};function E(r){e.isExportAssignment(r)?75===r.expression.kind&&t.collectLinkedAliases(r.expression,!0):e.isExportSpecifier(r)?t.collectLinkedAliases(r.propertyName||r.name,!0):e.forEachChild(r,E)}function C(t,n,i,a,o){var s,c=289===i.kind?i:void 0,u=288===i.kind?i:void 0,l=c?c.sourceFiles:[u];if(function(t,r){return(t.sourceMap||t.inlineSourceMap)&&(288!==r.kind||!e.fileExtensionIs(r.fileName,".json"))}(o,i)&&(s=e.createSourceMapGenerator(r,e.getBaseFileName(e.normalizeSlashes(t)),function(t){var r=e.normalizeSlashes(t.sourceRoot||"");return r?e.ensureTrailingDirectorySeparator(r):r}(o),function(t,n,i){if(t.sourceRoot)return r.getCommonSourceDirectory();if(t.mapRoot){var a=e.normalizeSlashes(t.mapRoot);return i&&(a=e.getDirectoryPath(e.getSourceFilePathInNewDir(i.fileName,r,a))),0===e.getRootLength(a)&&(a=e.combinePaths(r.getCommonSourceDirectory(),a)),a}return e.getDirectoryPath(e.normalizePath(n))}(o,t,u),o)),c?a.writeBundle(c,h,s):a.writeFile(u,h,s),s){f&&f.push({inputSourceFileNames:s.getSources(),sourceMap:s.toJSON()});var _=function(t,n,i,a,o){if(t.inlineSourceMap){var s=n.toString();return"data:application/json;base64,"+e.base64encode(e.sys,s)}var c=e.getBaseFileName(e.normalizeSlashes(e.Debug.assertDefined(a)));if(t.mapRoot){var u=e.normalizeSlashes(t.mapRoot);return o&&(u=e.getDirectoryPath(e.getSourceFilePathInNewDir(o.fileName,r,u))),0===e.getRootLength(u)?(u=e.combinePaths(r.getCommonSourceDirectory(),u),e.getRelativePathToDirectoryOrUrl(e.getDirectoryPath(e.normalizePath(i)),e.combinePaths(u,c),r.getCurrentDirectory(),r.getCanonicalFileName,!0)):e.combinePaths(u,c)}return c}(o,s,t,n,u);if(_&&(h.isAtStartOfLine()||h.rawWrite(y),h.writeComment("//# sourceMappingURL="+_)),n){var d=s.toString();e.writeFile(r,g,n,d,!1,l)}}else h.writeLine();e.writeFile(r,g,t,h.getText(),!!p.emitBOM,l),h.clear()}}function v(e){return JSON.stringify(e,void 0,2)}function b(e){return JSON.parse(e)}function x(t,r){void 0===t&&(t={}),void 0===r&&(r={});var n,o,s,c,u,l,_,d,p,f,m,g,y,h,v,b,x,D=r.hasGlobalName,S=r.onEmitNode,T=void 0===S?e.noEmitNotification:S,E=r.substituteNode,C=void 0===E?e.noEmitSubstitution:E,k=r.onBeforeEmitNodeArray,N=r.onAfterEmitNodeArray,A=r.onBeforeEmitToken,F=r.onAfterEmitToken,P=!!t.extendedDiagnostics,w=e.getNewLineCharacter(t),I=e.getEmitModuleKind(t),O=e.createMap(),M=function(e){p.write(e)},L=t.writeBundleFileInfo?{sections:[]}:void 0,R=L?e.Debug.assertDefined(t.relativeToBuildInfo):void 0,B=t.recordInternalSection,j=0,K="text",J=!0,z=-1,U=-1,V=-1,q=-1,W=!1,G=!!t.removeComments,H=e.performance.createTimerIf(P,"commentTime","beforeComment","afterComment"),Y=H.enter,X=H.exit;return pe(),{printNode:function(t,r,n){switch(t){case 0:e.Debug.assert(e.isSourceFile(r),"Expected a SourceFile node.");break;case 2:e.Debug.assert(e.isIdentifier(r),"Expected an Identifier node.");break;case 1:e.Debug.assert(e.isExpression(r),"Expected an Expression node.")}switch(r.kind){case 288:return $(r);case 289:return Q(r);case 290:return function(e,t){var r=p;de(t,void 0),le(4,e,void 0),pe(),p=r}(r,ce()),ue()}return Z(t,r,n,ce()),ue()},printList:function(e,t,r){return ee(e,t,r,ce()),ue()},printFile:$,printBundle:Q,writeNode:Z,writeList:ee,writeFile:se,writeBundle:oe,bundleFileInfo:L};function Q(e){return oe(e,ce(),void 0),ue()}function $(e){return se(e,ce(),void 0),ue()}function Z(e,t,r,n){var i=p;de(n,void 0),le(e,t,r),pe(),p=i}function ee(e,t,r,n){var i=p;de(n,void 0),r&&_e(r),gt(a,t,e),pe(),p=i}function te(){return p.getTextPosWithWriteLine?p.getTextPosWithWriteLine():p.getTextPos()}function re(t,r,n){var i=e.lastOrUndefined(L.sections);i&&i.kind===n?i.end=r:L.sections.push({pos:t,end:r,kind:n})}function ne(t){if(B&&L&&n&&(e.isDeclaration(t)||e.isVariableStatement(t))&&e.isInternalDeclaration(t,n)&&"internal"!==K){var r=K;return ae(p.getTextPos()),j=te(),K="internal",r}}function ie(e){e&&(ae(p.getTextPos()),j=te(),K=e)}function ae(e){return j<e&&(re(j,e,K),!0)}function oe(r,n,i){var a;m=!1;var o=p;de(n,i),nt(r),rt(r),Te(r),function(t){$e(!!t.hasNoDefaultLib,t.syntheticFileReferences||[],t.syntheticTypeReferences||[],t.syntheticLibReferences||[]);for(var r=0,n=t.prepends;r<n.length;r++){var i=n[r];if(e.isUnparsedSource(i)&&i.syntheticReferences)for(var a=0,o=i.syntheticReferences;a<o.length;a++){me(o[a]),At()}}}(r);for(var s=0,c=r.prepends;s<c.length;s++){var u=c[s];At();var l=p.getTextPos(),_=L&&L.sections;if(_&&(L.sections=[]),le(4,u,void 0),L){var d=L.sections;L.sections=_,u.oldFileOfCurrentEmit?(a=L.sections).push.apply(a,d):(d.forEach((function(t){return e.Debug.assert(e.isBundleFileTextLike(t))})),L.sections.push({pos:l,end:p.getTextPos(),kind:"prepend",data:R(u.fileName),texts:d}))}}j=te();for(var f=0,g=r.sourceFiles;f<g.length;f++){var y=g[f];le(0,y,y)}if(L&&r.sourceFiles.length&&ae(p.getTextPos())){var h=function(t){for(var r,n=e.createMap(),i=0;i<t.sourceFiles.length;i++){for(var a=t.sourceFiles[i],o=void 0,s=0,c=0,u=a.statements;c<u.length;c++){var l=u[c];if(!e.isPrologueDirective(l))break;n.has(l.expression.text)||(n.set(l.expression.text,!0),(o||(o=[])).push({pos:l.pos,end:l.end,expression:{pos:l.expression.pos,end:l.expression.end,text:l.expression.text}}),s=s<l.end?l.end:s)}o&&(r||(r=[])).push({file:i,text:a.text.substring(0,s),directives:o})}return r}(r);h&&(L.sources||(L.sources={}),L.sources.prologues=h);var v=function(r){var n;if(I===e.ModuleKind.None||t.noEmitHelpers)return;for(var i=e.createMap(),a=0,o=r.sourceFiles;a<o.length;a++){var s=o[a],c=void 0!==e.getExternalHelpersModuleName(s),u=Ee(s);if(u)for(var l=0,_=u;l<_.length;l++){var d=_[l];d.scoped||c||i.get(d.name)||(i.set(d.name,!0),(n||(n=[])).push(d.name))}}return n}(r);v&&(L.sources||(L.sources={}),L.sources.helpers=v)}pe(),p=o}function se(e,t,r){m=!0;var n=p;de(t,r),nt(e),rt(e),le(0,e,e),pe(),p=n}function ce(){return f||(f=e.createTextWriter(w))}function ue(){var e=f.getText();return f.clear(),e}function le(e,t,r){r&&_e(r),he(e,t)}function _e(e){n=e,h=void 0,v=void 0,e&&kr(e)}function de(r,n){r&&t.omitTrailingSemicolon&&(r=e.getTrailingSemicolonDeferringWriter(r)),g=n,J=!(p=r)||!g}function pe(){o=[],s=[],c=e.createMap(),u=[],l=0,_=[],n=void 0,h=void 0,v=void 0,b=void 0,x=void 0,de(void 0,void 0)}function fe(){return h||(h=e.getLineStarts(n))}function me(e){if(void 0!==e){var t=ne(e),r=he(4,e);return ie(t),r}}function ge(e){if(void 0!==e)return he(2,e)}function ye(e){if(void 0!==e)return he(1,e)}function he(t,r){var n=b,i=x;b=r,x=void 0,ve(0,r)(t,r),e.Debug.assert(b===r);var a=x;return b=n,x=i,a||r}function ve(t,r){switch(t){case 0:if(T!==e.noEmitNotification)return xe;case 1:if(C!==e.noEmitSubstitution)return Se;case 2:if(!G&&288!==r.kind)return sr;case 3:if(!J&&288!==r.kind&&!e.isInJsonFile(r))return Sr;case 4:return De;default:return e.Debug.assertNever(t)}}function be(e,t){return ve(e+1,t)}function xe(t,r){e.Debug.assert(b===r);var n=be(0,r);T(t,r,n),e.Debug.assert(b===r)}function De(t,r){if(e.Debug.assert(b===r||x===r),0===t)return function(t){At();var r=t.statements;if(_r){if(0===r.length||!e.isPrologueDirective(r[0])||e.nodeIsSynthesized(r[0]))return void _r(t,r,Ze)}Ze(t)}(e.cast(r,e.isSourceFile));if(2===t)return Ne(e.cast(r,e.isIdentifier));if(3===t)return function(e){me(e.name),kt(),St("in"),kt(),me(e.constraint)}(e.cast(r,e.isTypeParameterDeclaration));if(5===t)return e.Debug.assertNode(r,e.isEmptyStatement),Pe(!0);if(4===t){if(e.isKeyword(r.kind))return It(r,St);switch(r.kind){case 15:case 16:case 17:return Ce(r);case 290:case 284:return function(e){for(var t=0,r=e.texts;t<r.length;t++){var n=r[t];At(),me(n)}}(r);case 283:return ke(r);case 285:case 286:return o=r,s=te(),ke(o),void(L&&re(s,p.getTextPos(),285===o.kind?"text":"internal"));case 287:return function(t){var r=te();if(ke(t),L){var n=e.clone(t.section);n.pos=r,n.end=p.getTextPos(),L.sections.push(n)}}(r);case 75:return Ne(r);case 152:return function(e){(function(e){75===e.kind?ye(e):me(e)})(e.left),xt("."),me(e.right)}(r);case 153:return function(e){xt("["),ye(e.expression),xt("]")}(r);case 154:return function(e){me(e.name),e.constraint&&(kt(),St("extends"),kt(),me(e.constraint));e.default&&(kt(),Tt("="),kt(),me(e.default))}(r);case 155:return function(e){_t(e,e.decorators),at(e,e.modifiers),me(e.dotDotDotToken),it(e.name,Et),me(e.questionToken),e.parent&&298===e.parent.kind&&!e.name?me(e.type):ot(e.type);st(e.initializer,e.type?e.type.end:e.questionToken?e.questionToken.end:e.name?e.name.end:e.modifiers?e.modifiers.end:e.decorators?e.decorators.end:e.pos,e)}(r);case 156:return a=r,xt("@"),void ye(a.expression);case 157:return function(e){_t(e,e.decorators),at(e,e.modifiers),it(e.name,Nt),me(e.questionToken),ot(e.type),Dt()}(r);case 158:return function(e){_t(e,e.decorators),at(e,e.modifiers),me(e.name),me(e.questionToken),me(e.exclamationToken),ot(e.type),st(e.initializer,e.type?e.type.end:e.questionToken?e.questionToken.end:e.name.end,e),Dt()}(r);case 159:return function(e){Ht(e),_t(e,e.decorators),at(e,e.modifiers),me(e.name),me(e.questionToken),pt(e,e.typeParameters),ft(e,e.parameters),ot(e.type),Dt(),Yt(e)}(r);case 160:return function(e){_t(e,e.decorators),at(e,e.modifiers),me(e.asteriskToken),me(e.name),me(e.questionToken),Re(e,Be)}(r);case 161:return function(e){at(e,e.modifiers),St("constructor"),Re(e,Be)}(r);case 162:case 163:return function(e){_t(e,e.decorators),at(e,e.modifiers),St(162===e.kind?"get":"set"),kt(),me(e.name),Re(e,Be)}(r);case 164:return function(e){Ht(e),_t(e,e.decorators),at(e,e.modifiers),pt(e,e.typeParameters),ft(e,e.parameters),ot(e.type),Dt(),Yt(e)}(r);case 165:return function(e){Ht(e),_t(e,e.decorators),at(e,e.modifiers),St("new"),kt(),pt(e,e.typeParameters),ft(e,e.parameters),ot(e.type),Dt(),Yt(e)}(r);case 166:return function(e){_t(e,e.decorators),at(e,e.modifiers),t=e,r=e.parameters,gt(t,r,8848),ot(e.type),Dt();var t,r}(r);case 167:return function(e){e.assertsModifier&&(me(e.assertsModifier),kt());me(e.parameterName),e.type&&(kt(),St("is"),kt(),me(e.type))}(r);case 168:return function(e){me(e.typeName),dt(e,e.typeArguments)}(r);case 169:return function(e){Ht(e),pt(e,e.typeParameters),mt(e,e.parameters),kt(),xt("=>"),kt(),me(e.type),Yt(e)}(r);case 298:return function(e){St("function"),ft(e,e.parameters),xt(":"),me(e.type)}(r);case 170:return function(e){Ht(e),St("new"),kt(),pt(e,e.typeParameters),ft(e,e.parameters),kt(),xt("=>"),kt(),me(e.type),Yt(e)}(r);case 171:return function(e){St("typeof"),kt(),me(e.exprName)}(r);case 172:return function(t){xt("{");var r=1&e.getEmitFlags(t)?768:32897;gt(t,t.members,524288|r),xt("}")}(r);case 173:return function(e){me(e.elementType),xt("["),xt("]")}(r);case 174:return function(e){xt("["),gt(e,e.elementTypes,528),xt("]")}(r);case 175:return function(e){me(e.type),xt("?")}(r);case 177:return function(e){gt(e,e.types,516)}(r);case 178:return function(e){gt(e,e.types,520)}(r);case 179:return function(e){me(e.checkType),kt(),St("extends"),kt(),me(e.extendsType),kt(),xt("?"),kt(),me(e.trueType),kt(),xt(":"),kt(),me(e.falseType)}(r);case 180:return function(e){St("infer"),kt(),me(e.typeParameter)}(r);case 181:return function(e){xt("("),me(e.type),xt(")")}(r);case 215:return function(e){ye(e.expression),dt(e,e.typeArguments)}(r);case 182:return void St("this");case 183:return function(e){Ot(e.operator,St),kt(),me(e.type)}(r);case 184:return function(e){me(e.objectType),xt("["),me(e.indexType),xt("]")}(r);case 185:return function(t){var r=e.getEmitFlags(t);xt("{"),1&r?kt():(At(),Ft());t.readonlyToken&&(me(t.readonlyToken),137!==t.readonlyToken.kind&&St("readonly"),kt());xt("["),he(3,t.typeParameter),xt("]"),t.questionToken&&(me(t.questionToken),57!==t.questionToken.kind&&xt("?"));xt(":"),kt(),me(t.type),Dt(),1&r?kt():(At(),Pt());xt("}")}(r);case 186:return function(e){ye(e.literal)}(r);case 187:return function(e){e.isTypeOf&&(St("typeof"),kt());St("import"),xt("("),me(e.argument),xt(")"),e.qualifier&&(xt("."),me(e.qualifier));dt(e,e.typeArguments)}(r);case 293:return void xt("*");case 294:return void xt("?");case 295:return function(e){xt("?"),me(e.type)}(r);case 296:return function(e){xt("!"),me(e.type)}(r);case 297:return function(e){me(e.type),xt("=")}(r);case 176:case 299:return function(e){xt("..."),me(e.type)}(r);case 188:return function(e){xt("{"),gt(e,e.elements,525136),xt("}")}(r);case 189:return function(e){xt("["),gt(e,e.elements,524880),xt("]")}(r);case 190:return function(e){me(e.dotDotDotToken),e.propertyName&&(me(e.propertyName),xt(":"),kt());me(e.name),st(e.initializer,e.name.end,e)}(r);case 220:return function(e){ye(e.expression),me(e.literal)}(r);case 221:return void Dt();case 222:return function(e){Fe(e,!e.multiLine&&Vt(e))}(r);case 224:return function(e){at(e,e.modifiers),me(e.declarationList),Dt()}(r);case 223:return Pe(!1);case 225:return function(t){ye(t.expression),(!e.isJsonSourceFile(n)||e.nodeIsSynthesized(t.expression))&&Dt()}(r);case 226:return function(e){var t=Oe(94,e.pos,St,e);kt(),Oe(20,t,xt,e),ye(e.expression),Oe(21,e.expression.end,xt,e),lt(e,e.thenStatement),e.elseStatement&&(Mt(e),Oe(86,e.thenStatement.end,St,e),226===e.elseStatement.kind?(kt(),me(e.elseStatement)):lt(e,e.elseStatement))}(r);case 227:return function(t){Oe(85,t.pos,St,t),lt(t,t.statement),e.isBlock(t.statement)?kt():Mt(t);we(t,t.statement.end),Dt()}(r);case 228:return function(e){we(e,e.pos),lt(e,e.statement)}(r);case 229:return function(e){var t=Oe(92,e.pos,St,e);kt();var r=Oe(20,t,xt,e);Ie(e.initializer),r=Oe(26,e.initializer?e.initializer.end:r,xt,e),ut(e.condition),r=Oe(26,e.condition?e.condition.end:r,xt,e),ut(e.incrementor),Oe(21,e.incrementor?e.incrementor.end:r,xt,e),lt(e,e.statement)}(r);case 230:return function(e){var t=Oe(92,e.pos,St,e);kt(),Oe(20,t,xt,e),Ie(e.initializer),kt(),Oe(96,e.initializer.end,St,e),kt(),ye(e.expression),Oe(21,e.expression.end,xt,e),lt(e,e.statement)}(r);case 231:return function(e){var t=Oe(92,e.pos,St,e);kt(),function(e){e&&(me(e),kt())}(e.awaitModifier),Oe(20,t,xt,e),Ie(e.initializer),kt(),Oe(151,e.initializer.end,St,e),kt(),ye(e.expression),Oe(21,e.expression.end,xt,e),lt(e,e.statement)}(r);case 232:return function(e){Oe(81,e.pos,St,e),ct(e.label),Dt()}(r);case 233:return function(e){Oe(76,e.pos,St,e),ct(e.label),Dt()}(r);case 234:return function(e){Oe(100,e.pos,St,e),ut(e.expression),Dt()}(r);case 235:return function(e){var t=Oe(111,e.pos,St,e);kt(),Oe(20,t,xt,e),ye(e.expression),Oe(21,e.expression.end,xt,e),lt(e,e.statement)}(r);case 236:return function(e){var t=Oe(102,e.pos,St,e);kt(),Oe(20,t,xt,e),ye(e.expression),Oe(21,e.expression.end,xt,e),kt(),me(e.caseBlock)}(r);case 237:return function(e){me(e.label),Oe(58,e.label.end,xt,e),kt(),me(e.statement)}(r);case 238:return function(e){Oe(104,e.pos,St,e),ut(e.expression),Dt()}(r);case 239:return function(e){Oe(106,e.pos,St,e),kt(),me(e.tryBlock),e.catchClause&&(Mt(e),me(e.catchClause));e.finallyBlock&&(Mt(e),Oe(91,(e.catchClause||e.tryBlock).end,St,e),kt(),me(e.finallyBlock))}(r);case 240:return function(e){wt(82,e.pos,St),Dt()}(r);case 241:return function(e){me(e.name),ot(e.type),st(e.initializer,e.type?e.type.end:e.name.end,e)}(r);case 242:return function(t){St(e.isLet(t)?"let":e.isVarConst(t)?"const":"var"),kt(),gt(t,t.declarations,528)}(r);case 243:return function(e){Me(e)}(r);case 244:return function(e){ze(e)}(r);case 245:return function(e){_t(e,e.decorators),at(e,e.modifiers),St("interface"),kt(),me(e.name),pt(e,e.typeParameters),gt(e,e.heritageClauses,512),kt(),xt("{"),gt(e,e.members,129),xt("}")}(r);case 246:return function(e){_t(e,e.decorators),at(e,e.modifiers),St("type"),kt(),me(e.name),pt(e,e.typeParameters),kt(),xt("="),kt(),me(e.type),Dt()}(r);case 247:return function(e){at(e,e.modifiers),St("enum"),kt(),me(e.name),kt(),xt("{"),gt(e,e.members,145),xt("}")}(r);case 248:return function(e){at(e,e.modifiers),1024&~e.flags&&(St(16&e.flags?"namespace":"module"),kt());me(e.name);var t=e.body;if(!t)return Dt();for(;248===t.kind;)xt("."),me(t.name),t=t.body;kt(),me(t)}(r);case 249:return function(t){Ht(t),e.forEach(t.statements,Qt),Fe(t,Vt(t)),Yt(t)}(r);case 250:return function(e){Oe(18,e.pos,xt,e),gt(e,e.clauses,129),Oe(19,e.clauses.end,xt,e,!0)}(r);case 251:return function(e){var t=Oe(88,e.pos,St,e);kt(),t=Oe(122,t,St,e),kt(),t=Oe(135,t,St,e),kt(),me(e.name),Dt()}(r);case 252:return function(e){at(e,e.modifiers),Oe(95,e.modifiers?e.modifiers.end:e.pos,St,e),kt(),me(e.name),kt(),Oe(62,e.name.end,xt,e),kt(),function(e){75===e.kind?ye(e):me(e)}(e.moduleReference),Dt()}(r);case 253:return function(e){at(e,e.modifiers),Oe(95,e.modifiers?e.modifiers.end:e.pos,St,e),kt(),e.importClause&&(me(e.importClause),kt(),Oe(148,e.importClause.end,St,e),kt());ye(e.moduleSpecifier),Dt()}(r);case 254:return function(e){me(e.name),e.name&&e.namedBindings&&(Oe(27,e.name.end,xt,e),kt());me(e.namedBindings)}(r);case 255:return function(e){var t=Oe(41,e.pos,xt,e);kt(),Oe(122,t,St,e),kt(),me(e.name)}(r);case 256:return function(e){Ue(e)}(r);case 257:return function(e){Ve(e)}(r);case 258:return function(e){var t=Oe(88,e.pos,St,e);kt(),e.isExportEquals?Oe(62,t,Tt,e):Oe(83,t,St,e);kt(),ye(e.expression),Dt()}(r);case 259:return function(e){var t=Oe(88,e.pos,St,e);kt(),e.exportClause?me(e.exportClause):t=Oe(41,t,xt,e);if(e.moduleSpecifier){kt(),Oe(148,e.exportClause?e.exportClause.end:t,St,e),kt(),ye(e.moduleSpecifier)}Dt()}(r);case 260:return function(e){Ue(e)}(r);case 261:return function(e){Ve(e)}(r);case 262:return;case 263:return function(e){St("require"),xt("("),ye(e.expression),xt(")")}(r);case 11:return function(e){p.writeLiteral(e.text)}(r);case 266:case 269:return function(t){xt("<"),e.isJsxOpeningElement(t)&&(qe(t.tagName),dt(t,t.typeArguments),t.attributes.properties&&t.attributes.properties.length>0&&kt(),me(t.attributes));xt(">")}(r);case 267:case 270:return function(t){xt("</"),e.isJsxClosingElement(t)&&qe(t.tagName);xt(">")}(r);case 271:return function(e){me(e.name),function(e,t,r,n){r&&(t(e),n(r))}("=",xt,e.initializer,me)}(r);case 272:return function(e){gt(e,e.properties,262656)}(r);case 273:return function(e){xt("{..."),ye(e.expression),xt("}")}(r);case 274:return function(e){e.expression&&(xt("{"),me(e.dotDotDotToken),ye(e.expression),xt("}"))}(r);case 275:return function(e){Oe(77,e.pos,St,e),kt(),ye(e.expression),We(e,e.statements,e.expression.end)}(r);case 276:return function(e){var t=Oe(83,e.pos,St,e);We(e,e.statements,t)}(r);case 277:return function(e){kt(),Ot(e.token,St),kt(),gt(e,e.types,528)}(r);case 278:return function(e){var t=Oe(78,e.pos,St,e);kt(),e.variableDeclaration&&(Oe(20,t,xt,e),me(e.variableDeclaration),Oe(21,e.variableDeclaration.end,xt,e),kt());me(e.block)}(r);case 279:return function(t){me(t.name),xt(":"),kt();var r=t.initializer;if(hr&&0==(512&e.getEmitFlags(r))){hr(e.getCommentRange(r).pos)}ye(r)}(r);case 280:return function(e){me(e.name),e.objectAssignmentInitializer&&(kt(),xt("="),kt(),ye(e.objectAssignmentInitializer))}(r);case 281:return function(e){e.expression&&(Oe(25,e.pos,xt,e),ye(e.expression))}(r);case 282:return function(e){me(e.name),st(e.initializer,e.name.end,e)}(r);case 310:case 316:return function(e){Ye(e.tagName),Qe(e.typeExpression),kt(),e.isBracketed&&xt("[");me(e.name),e.isBracketed&&xt("]");Xe(e.comment)}(r);case 311:case 313:case 312:case 309:return Ye((i=r).tagName),Qe(i.typeExpression),void Xe(i.comment);case 305:return function(e){Ye(e.tagName),kt(),xt("{"),me(e.class),xt("}"),Xe(e.comment)}(r);case 314:return function(e){Ye(e.tagName),Qe(e.constraint),kt(),gt(e,e.typeParameters,528),Xe(e.comment)}(r);case 315:return function(e){Ye(e.tagName),e.typeExpression&&(292===e.typeExpression.kind?Qe(e.typeExpression):(kt(),xt("{"),M("Object"),e.typeExpression.isArrayType&&(xt("["),xt("]")),xt("}")));e.fullName&&(kt(),me(e.fullName));Xe(e.comment),e.typeExpression&&302===e.typeExpression.kind&&Ge(e.typeExpression)}(r);case 308:return function(e){Ye(e.tagName),e.name&&(kt(),me(e.name));Xe(e.comment),He(e.typeExpression)}(r);case 303:return He(r);case 302:return Ge(r);case 307:case 304:return function(e){Ye(e.tagName),Xe(e.comment)}(r);case 301:return function(e){if(M("/**"),e.comment)for(var t=e.comment.split(/\r\n?|\n/g),r=0,n=t;r<n.length;r++){var i=n[r];At(),kt(),xt("*"),kt(),M(i)}e.tags&&(1!==e.tags.length||313!==e.tags[0].kind||e.comment?gt(e,e.tags,33):(kt(),me(e.tags[0])));kt(),M("*/")}(r)}if(e.isExpression(r))t=1,C!==e.noEmitSubstitution&&(x=r=C(t,r));else if(e.isToken(r))return It(r,xt)}var i,a,o,s;if(1===t)switch(r.kind){case 8:case 9:return function(e){Ce(e)}(r);case 10:case 13:case 14:return Ce(r);case 75:return Ne(r);case 90:case 99:case 101:case 105:case 103:case 95:return void It(r,St);case 191:return function(e){var t=e.elements,r=e.multiLine?65536:0;yt(e,t,8914|r)}(r);case 192:return function(t){e.forEach(t.properties,$t);var r=65536&e.getEmitFlags(t);r&&Ft();var i=t.multiLine?65536:0,a=n.languageVersion>=1&&!e.isJsonSourceFile(n)?64:0;gt(t,t.properties,526226|a|i),r&&Pt()}(r);case 193:return function(t){var r=e.cast(ye(t.expression),e.isExpression),n=e.getDotOrQuestionDotToken(t),i=Ut(t,t.expression,n),a=Ut(t,n,t.name);Rt(i,!1),28===n.kind||!function(t){if(t=e.skipPartiallyEmittedExpressions(t),e.isNumericLiteral(t)){var r=Gt(t,!0);return!t.numericLiteralFlags&&!e.stringContains(r,e.tokenToString(24))}if(e.isAccessExpression(t)){var n=e.getConstantValue(t);return"number"==typeof n&&isFinite(n)&&Math.floor(n)===n}}(r)||p.hasTrailingComment()||p.hasTrailingWhitespace()||xt(".");Oe(n.kind,t.expression.end,xt,t),Rt(a,!1),me(t.name),Bt(i,a)}(r);case 194:return function(e){ye(e.expression),me(e.questionDotToken),Oe(22,e.expression.end,xt,e),ye(e.argumentExpression),Oe(23,e.argumentExpression.end,xt,e)}(r);case 195:return function(e){ye(e.expression),me(e.questionDotToken),dt(e,e.typeArguments),yt(e,e.arguments,2576)}(r);case 196:return function(e){Oe(98,e.pos,St,e),kt(),ye(e.expression),dt(e,e.typeArguments),yt(e,e.arguments,18960)}(r);case 197:return function(e){ye(e.tag),dt(e,e.typeArguments),kt(),ye(e.template)}(r);case 198:return function(e){xt("<"),me(e.type),xt(">"),ye(e.expression)}(r);case 199:return function(e){var t=Oe(20,e.pos,xt,e);ye(e.expression),Oe(21,e.expression?e.expression.end:t,xt,e)}(r);case 200:return function(e){Zt(e.name),Me(e)}(r);case 201:return function(e){_t(e,e.decorators),at(e,e.modifiers),Re(e,Ae)}(r);case 202:return function(e){Oe(84,e.pos,St,e),kt(),ye(e.expression)}(r);case 203:return function(e){Oe(107,e.pos,St,e),kt(),ye(e.expression)}(r);case 204:return function(e){Oe(109,e.pos,St,e),kt(),ye(e.expression)}(r);case 205:return function(e){Oe(126,e.pos,St,e),kt(),ye(e.expression)}(r);case 206:return function(e){Ot(e.operator,Tt),function(e){var t=e.operand;return 206===t.kind&&(39===e.operator&&(39===t.operator||45===t.operator)||40===e.operator&&(40===t.operator||46===t.operator))}(e)&&kt();ye(e.operand)}(r);case 207:return function(e){ye(e.operand),Ot(e.operator,Tt)}(r);case 208:return function(e){var t=27!==e.operatorToken.kind,r=Ut(e,e.left,e.operatorToken),n=Ut(e,e.operatorToken,e.right);ye(e.left),Rt(r,t),gr(e.operatorToken.pos),It(e.operatorToken,96===e.operatorToken.kind?St:Tt),hr(e.operatorToken.end,!0),Rt(n,!0),ye(e.right),Bt(r,n)}(r);case 209:return function(e){var t=Ut(e,e.condition,e.questionToken),r=Ut(e,e.questionToken,e.whenTrue),n=Ut(e,e.whenTrue,e.colonToken),i=Ut(e,e.colonToken,e.whenFalse);ye(e.condition),Rt(t,!0),me(e.questionToken),Rt(r,!0),ye(e.whenTrue),Bt(t,r),Rt(n,!0),me(e.colonToken),Rt(i,!0),ye(e.whenFalse),Bt(n,i)}(r);case 210:return function(e){me(e.head),gt(e,e.templateSpans,262144)}(r);case 211:return function(e){Oe(120,e.pos,St,e),me(e.asteriskToken),ut(e.expression)}(r);case 212:return function(e){Oe(25,e.pos,xt,e),ye(e.expression)}(r);case 213:return function(e){Zt(e.name),ze(e)}(r);case 214:return;case 216:return function(e){ye(e.expression),e.type&&(kt(),St("as"),kt(),me(e.type))}(r);case 217:return function(e){ye(e.expression),Tt("!")}(r);case 218:return function(e){wt(e.keywordToken,e.pos,xt),xt("."),me(e.name)}(r);case 264:return function(e){me(e.openingElement),gt(e,e.children,262144),me(e.closingElement)}(r);case 265:return function(e){xt("<"),qe(e.tagName),dt(e,e.typeArguments),kt(),me(e.attributes),xt("/>")}(r);case 268:return function(e){me(e.openingFragment),gt(e,e.children,262144),me(e.closingFragment)}(r);case 319:return function(e){ye(e.expression)}(r);case 320:return function(e){yt(e,e.elements,528)}(r)}}function Se(t,r){e.Debug.assert(b===r||x===r),be(1,r)(t,x=C(t,r)),e.Debug.assert(b===r||x===r)}function Te(r){var i=!1,a=289===r.kind?r:void 0;if(!a||I!==e.ModuleKind.None){for(var o=a?a.prepends.length:0,s=a?a.sourceFiles.length+o:1,c=0;c<s;c++){var u=a?c<o?a.prepends[c]:a.sourceFiles[c-o]:r,l=e.isSourceFile(u)?u:e.isUnparsedSource(u)?void 0:n,_=t.noEmitHelpers||!!l&&e.hasRecordedExternalHelpers(l),d=(e.isSourceFile(u)||e.isUnparsedSource(u))&&!m,f=e.isUnparsedSource(u)?u.helpers:Ee(u);if(f)for(var g=0,y=f;g<y.length;g++){var h=y[g];if(h.scoped){if(a)continue}else{if(_)continue;if(d){if(O.get(h.name))continue;O.set(h.name,!0)}}var v=te();"string"==typeof h.text?Lt(h.text):Lt(h.text(or)),L&&L.sections.push({pos:v,end:p.getTextPos(),kind:"emitHelpers",data:h.name}),i=!0}}return i}}function Ee(t){var r=e.getEmitHelpers(t);return r&&e.stableSort(r,e.compareEmitHelpers)}function Ce(r){var n=Gt(r,t.neverAsciiEscape);!t.sourceMap&&!t.inlineSourceMap||10!==r.kind&&!e.isTemplateLiteralKind(r.kind)?function(e){p.writeStringLiteral(e)}(n):function(e){p.writeLiteral(e)}(n)}function ke(e){p.rawWrite(e.parent.text.substring(e.pos,e.end))}function Ne(e){(e.symbol?bt:M)(Wt(e,!1),e.symbol),gt(e,e.typeArguments,53776)}function Ae(e){pt(e,e.typeParameters),mt(e,e.parameters),ot(e.type),kt(),me(e.equalsGreaterThanToken)}function Fe(t,r){Oe(18,t.pos,xt,t);var n=r||1&e.getEmitFlags(t)?768:129;gt(t,t.statements,n),Oe(19,t.statements.end,xt,t,!!(1&n))}function Pe(e){e?xt(";"):Dt()}function we(e,t){var r=Oe(110,t,St,e);kt(),Oe(20,r,xt,e),ye(e.expression),Oe(21,e.expression.end,xt,e)}function Ie(e){void 0!==e&&(242===e.kind?me(e):ye(e))}function Oe(t,r,i,a,o){var s=e.getParseTreeNode(a),c=s&&s.kind===a.kind,u=r;if(c&&(r=e.skipTrivia(n.text,r)),gr&&c&&a.pos!==u){var l=o&&!e.positionsAreOnSameLine(u,r,n);l&&Ft(),gr(u),l&&Pt()}return r=Ot(t,i,r),hr&&c&&a.end!==r&&hr(r,!0),r}function Me(e){_t(e,e.decorators),at(e,e.modifiers),St("function"),me(e.asteriskToken),kt(),ge(e.name),Re(e,Be)}function Le(e,t){je(t)}function Re(t,r){var n=t.body;if(n)if(e.isBlock(n)){var i=65536&e.getEmitFlags(t);i&&Ft(),Ht(t),e.forEach(t.parameters,Qt),Qt(t.body),r(t),T?T(4,n,Le):je(n),Yt(t),i&&Pt()}else r(t),kt(),ye(n);else r(t),Dt()}function Be(e){pt(e,e.typeParameters),ft(e,e.parameters),ot(e.type)}function je(t){kt(),xt("{"),Ft();var r=function(t){if(1&e.getEmitFlags(t))return!0;if(t.multiLine)return!1;if(!e.nodeIsSynthesized(t)&&!e.rangeIsOnSingleLine(t,n))return!1;if(jt(t,t.statements,2)||Jt(t,t.statements,2))return!1;for(var r,i=0,a=t.statements;i<a.length;i++){var o=a[i];if(Kt(r,o,2))return!1;r=o}return!0}(t)?Ke:Je;_r?_r(t,t.statements,r):r(t),Pt(),wt(19,t.statements.end,xt,t)}function Ke(e){Je(e,!0)}function Je(e,t){var r=et(e.statements),n=p.getTextPos();Te(e),0===r&&n===p.getTextPos()&&t?(Pt(),gt(e,e.statements,768),Ft()):gt(e,e.statements,1,r)}function ze(t){e.forEach(t.members,$t),_t(t,t.decorators),at(t,t.modifiers),St("class"),t.name&&(kt(),ge(t.name));var r=65536&e.getEmitFlags(t);r&&Ft(),pt(t,t.typeParameters),gt(t,t.heritageClauses,0),kt(),xt("{"),gt(t,t.members,129),xt("}"),r&&Pt()}function Ue(e){xt("{"),gt(e,e.elements,525136),xt("}")}function Ve(e){e.propertyName&&(me(e.propertyName),kt(),Oe(122,e.propertyName.end,St,e),kt()),me(e.name)}function qe(e){75===e.kind?ye(e):me(e)}function We(t,r,i){var a=163969;1===r.length&&(e.nodeIsSynthesized(t)||e.nodeIsSynthesized(r[0])||e.rangeStartPositionsAreOnSameLine(t,r[0],n))?(wt(58,i,xt,t),kt(),a&=-130):Oe(58,i,xt,t),gt(t,r,a)}function Ge(t){gt(t,e.createNodeArray(t.jsDocPropertyTags),33)}function He(t){t.typeParameters&&gt(t,e.createNodeArray(t.typeParameters),33),t.parameters&&gt(t,e.createNodeArray(t.parameters),33),t.type&&(At(),kt(),xt("*"),kt(),me(t.type))}function Ye(e){xt("@"),me(e)}function Xe(e){e&&(kt(),M(e))}function Qe(e){e&&(kt(),xt("{"),me(e.type),xt("}"))}function $e(e,t,r,i){if(e){var a=p.getTextPos();Ct('/// <reference no-default-lib="true"/>'),L&&L.sections.push({pos:a,end:p.getTextPos(),kind:"no-default-lib"}),At()}if(n&&n.moduleName&&(Ct('/// <amd-module name="'+n.moduleName+'" />'),At()),n&&n.amdDependencies)for(var o=0,s=n.amdDependencies;o<s.length;o++){var c=s[o];c.name?Ct('/// <amd-dependency name="'+c.name+'" path="'+c.path+'" />'):Ct('/// <amd-dependency path="'+c.path+'" />'),At()}for(var u=0,l=t;u<l.length;u++){var _=l[u];a=p.getTextPos();Ct('/// <reference path="'+_.fileName+'" />'),L&&L.sections.push({pos:a,end:p.getTextPos(),kind:"reference",data:_.fileName}),At()}for(var d=0,f=r;d<f.length;d++){_=f[d],a=p.getTextPos();Ct('/// <reference types="'+_.fileName+'" />'),L&&L.sections.push({pos:a,end:p.getTextPos(),kind:"type",data:_.fileName}),At()}for(var m=0,g=i;m<g.length;m++){_=g[m],a=p.getTextPos();Ct('/// <reference lib="'+_.fileName+'" />'),L&&L.sections.push({pos:a,end:p.getTextPos(),kind:"lib",data:_.fileName}),At()}}function Ze(t){var r=t.statements;Ht(t),e.forEach(t.statements,Qt),Te(t);var n=e.findIndex(r,(function(t){return!e.isPrologueDirective(t)}));!function(e){e.isDeclarationFile&&$e(e.hasNoDefaultLib,e.referencedFiles,e.typeReferenceDirectives,e.libReferenceDirectives)}(t),gt(t,r,1,-1===n?r.length:n),Yt(t)}function et(t,r,n,i){for(var a=!!r,o=0;o<t.length;o++){var s=t[o];if(!e.isPrologueDirective(s))return o;if(!n||!n.has(s.expression.text)){a&&(a=!1,_e(r)),At();var c=p.getTextPos();me(s),i&&L&&L.sections.push({pos:c,end:p.getTextPos(),kind:"prologue",data:s.expression.text}),n&&n.set(s.expression.text,!0)}}return t.length}function tt(e,t){for(var r=0,n=e;r<n.length;r++){var i=n[r];if(!t.has(i.data)){At();var a=p.getTextPos();me(i),L&&L.sections.push({pos:a,end:p.getTextPos(),kind:"prologue",data:i.data}),t&&t.set(i.data,!0)}}}function rt(t){if(e.isSourceFile(t))et(t.statements,t);else{for(var r=e.createMap(),n=0,i=t.prepends;n<i.length;n++){tt(i[n].prologues,r)}for(var a=0,o=t.sourceFiles;a<o.length;a++){var s=o[a];et(s.statements,s,r,!0)}_e(void 0)}}function nt(t){if(e.isSourceFile(t)||e.isUnparsedSource(t)){var r=e.getShebang(t.text);if(r)return Ct(r),At(),!0}else{for(var n=0,i=t.prepends;n<i.length;n++){var a=i[n];if(e.Debug.assertNode(a,e.isUnparsedSource),nt(a))return!0}for(var o=0,s=t.sourceFiles;o<s.length;o++){if(nt(s[o]))return!0}}}function it(e,t){if(e){var r=M;M=t,me(e),M=r}}function at(e,t){t&&t.length&&(gt(e,t,262656),kt())}function ot(e){e&&(xt(":"),kt(),me(e))}function st(e,t,r){e&&(kt(),Oe(62,t,Tt,r),kt(),ye(e))}function ct(e){e&&(kt(),me(e))}function ut(e){e&&(kt(),ye(e))}function lt(t,r){e.isBlock(r)||1&e.getEmitFlags(t)?(kt(),me(r)):(At(),Ft(),e.isEmptyStatement(r)?he(5,r):me(r),Pt())}function _t(e,t){gt(e,t,49153)}function dt(e,t){gt(e,t,53776)}function pt(t,r){if(e.isFunctionLike(t)&&t.typeArguments)return dt(t,t.typeArguments);gt(t,r,53776)}function ft(e,t){gt(e,t,2576)}function mt(t,r){!function(t,r){var n=e.singleOrUndefined(r);return n&&n.pos===t.pos&&e.isArrowFunction(t)&&!t.type&&!e.some(t.decorators)&&!e.some(t.modifiers)&&!e.some(t.typeParameters)&&!e.some(n.decorators)&&!e.some(n.modifiers)&&!n.dotDotDotToken&&!n.questionToken&&!n.type&&!n.initializer&&e.isIdentifier(n.name)}(t,r)?ft(t,r):gt(t,r,528)}function gt(e,t,r,n,i){vt(me,e,t,r,n,i)}function yt(e,t,r,n,i){vt(ye,e,t,r,n,i)}function ht(e){switch(60&e){case 0:break;case 16:xt(",");break;case 4:kt(),xt("|");break;case 32:kt(),xt("*"),kt();break;case 8:kt(),xt("&")}}function vt(t,r,n,a,o,s){void 0===o&&(o=0),void 0===s&&(s=n?n.length-o:0);var c=void 0===n;if(!(c&&16384&a)){var u=void 0===n||o>=n.length||0===s;if(u&&32768&a)return k&&k(n),void(N&&N(n));if(15360&a&&(xt(function(e){return i[15360&e][0]}(a)),u&&!c&&hr(n.pos,!0)),k&&k(n),u)1&a?At():256&a&&!(524288&a)&&kt();else{var l=0==(262144&a),_=l;jt(r,n,a)?(At(),_=!1):256&a&&kt(),128&a&&Ft();for(var d=void 0,p=void 0,f=!1,m=0;m<s;m++){var g=n[o+m];if(32&a?(At(),ht(a)):d&&(60&a&&d.end!==r.end&&gr(d.end),ht(a),ie(p),Kt(d,g,a)?(0==(131&a)&&(Ft(),f=!0),At(),_=!1):d&&512&a&&kt()),p=ne(g),_){if(hr)hr(e.getCommentRange(g).pos)}else _=l;t(g),f&&(Pt(),f=!1),d=g}var y=64&a&&n.hasTrailingComma;16&a&&y&&xt(","),d&&60&a&&d.end!==r.end&&!(1024&e.getEmitFlags(d))&&gr(d.end),128&a&&Pt(),ie(p),Jt(r,n,a)?At():256&a&&kt()}N&&N(n),15360&a&&(u&&!c&&gr(n.end),xt(function(e){return i[15360&e][1]}(a)))}}function bt(e,t){p.writeSymbol(e,t)}function xt(e){p.writePunctuation(e)}function Dt(){p.writeTrailingSemicolon(";")}function St(e){p.writeKeyword(e)}function Tt(e){p.writeOperator(e)}function Et(e){p.writeParameter(e)}function Ct(e){p.writeComment(e)}function kt(){p.writeSpace(" ")}function Nt(e){p.writeProperty(e)}function At(){p.writeLine()}function Ft(){p.increaseIndent()}function Pt(){p.decreaseIndent()}function wt(t,r,n,i){return J?Ot(t,n,r):function(t,r,n,i,a){if(J||t&&e.isInJsonFile(t))return a(r,n,i);var o=t&&t.emitNode,s=o&&o.flags||0,c=o&&o.tokenSourceMapRanges&&o.tokenSourceMapRanges[r],u=c&&c.source||y;i=Tr(u,c?c.pos:i),0==(128&s)&&i>=0&&Cr(u,i);i=a(r,n,i),c&&(i=c.end);0==(256&s)&&i>=0&&Cr(u,i);return i}(i,t,n,r,Ot)}function It(t,r){A&&A(t),r(e.tokenToString(t.kind)),F&&F(t)}function Ot(t,r,n){var i=e.tokenToString(t);return r(i),n<0?n:n+i.length}function Mt(t){1&e.getEmitFlags(t)?kt():At()}function Lt(t){for(var r=t.split(/\r\n?|\n/g),n=e.guessIndentation(r),i=0,a=r;i<a.length;i++){var o=a[i],s=n?o.slice(n):o;s.length&&(At(),M(s))}}function Rt(e,t){e?(Ft(),At()):t&&kt()}function Bt(e,t){e&&Pt(),t&&Pt()}function jt(t,r,i){if(1&i)return!0;if(2&i){if(65536&i)return!0;var a=r[0];return void 0===a?!e.rangeIsOnSingleLine(t,n):e.positionIsSynthesized(t.pos)||e.nodeIsSynthesized(a)?zt(a,i):!e.rangeStartPositionsAreOnSameLine(t,a,n)}return!1}function Kt(t,r,i){return!!(1&i)||(2&i?void 0!==t&&void 0!==r&&(e.nodeIsSynthesized(t)||e.nodeIsSynthesized(r)?zt(t,i)||zt(r,i):!e.rangeEndIsOnSameLineAsRangeStart(t,r,n)):e.getStartsOnNewLine(r))}function Jt(t,r,i){if(1&i)return 0==(131072&i);if(2&i){if(65536&i)return!0;var a=e.lastOrUndefined(r);return void 0===a?!e.rangeIsOnSingleLine(t,n):e.positionIsSynthesized(t.pos)||e.nodeIsSynthesized(a)?zt(a,i):!e.rangeEndPositionsAreOnSameLine(t,a,n)}return!1}function zt(t,r){if(e.nodeIsSynthesized(t)){var n=e.getStartsOnNewLine(t);return void 0===n?0!=(65536&r):n}return 0!=(65536&r)}function Ut(t,r,i){return!(131072&e.getEmitFlags(t))&&(t=qt(t),r=qt(r),i=qt(i),!!e.getStartsOnNewLine(i)||!(e.nodeIsSynthesized(t)||e.nodeIsSynthesized(r)||e.nodeIsSynthesized(i)||e.rangeEndIsOnSameLineAsRangeStart(r,i,n)))}function Vt(t){return 0===t.statements.length&&e.rangeEndIsOnSameLineAsRangeStart(t,t,n)}function qt(t){for(;199===t.kind&&e.nodeIsSynthesized(t);)t=t.expression;return t}function Wt(t,r){return e.isGeneratedIdentifier(t)?er(t):e.isIdentifier(t)&&(e.nodeIsSynthesized(t)||!t.parent||!n||t.parent&&n&&e.getSourceFileOfNode(t)!==e.getOriginalNode(n))?e.idText(t):10===t.kind&&t.textSourceNode?Wt(t.textSourceNode,r):!e.isLiteralExpression(t)||!e.nodeIsSynthesized(t)&&t.parent?e.getSourceTextOfNodeFromSourceFile(n,t,r):t.text}function Gt(t,r){if(10===t.kind&&t.textSourceNode){var i=t.textSourceNode;return e.isIdentifier(i)?r||16777216&e.getEmitFlags(t)?'"'+e.escapeString(Wt(i))+'"':'"'+e.escapeNonAsciiString(Wt(i))+'"':Gt(i,r)}return e.getLiteralText(t,n,r)}function Ht(t){t&&524288&e.getEmitFlags(t)||(u.push(l),l=0,_.push(d))}function Yt(t){t&&524288&e.getEmitFlags(t)||(l=u.pop(),d=_.pop())}function Xt(t){d&&d!==e.lastOrUndefined(_)||(d=e.createMap()),d.set(t,!0)}function Qt(t){if(t)switch(t.kind){case 222:e.forEach(t.statements,Qt);break;case 237:case 235:case 227:case 228:Qt(t.statement);break;case 226:Qt(t.thenStatement),Qt(t.elseStatement);break;case 229:case 231:case 230:Qt(t.initializer),Qt(t.statement);break;case 236:Qt(t.caseBlock);break;case 250:e.forEach(t.clauses,Qt);break;case 275:case 276:e.forEach(t.statements,Qt);break;case 239:Qt(t.tryBlock),Qt(t.catchClause),Qt(t.finallyBlock);break;case 278:Qt(t.variableDeclaration),Qt(t.block);break;case 224:Qt(t.declarationList);break;case 242:e.forEach(t.declarations,Qt);break;case 241:case 155:case 190:case 244:Zt(t.name);break;case 243:Zt(t.name),524288&e.getEmitFlags(t)&&(e.forEach(t.parameters,Qt),Qt(t.body));break;case 188:case 189:e.forEach(t.elements,Qt);break;case 253:Qt(t.importClause);break;case 254:Zt(t.name),Qt(t.namedBindings);break;case 255:Zt(t.name);break;case 256:e.forEach(t.elements,Qt);break;case 257:Zt(t.propertyName||t.name)}}function $t(e){if(e)switch(e.kind){case 279:case 280:case 158:case 160:case 162:case 163:Zt(e.name)}}function Zt(t){t&&(e.isGeneratedIdentifier(t)?er(t):e.isBindingPattern(t)&&Qt(t))}function er(t){if(4==(7&t.autoGenerateFlags))return tr(function(t){var r=t.autoGenerateId,n=t,i=n.original;for(;i&&(n=i,!(e.isIdentifier(n)&&4&n.autoGenerateFlags&&n.autoGenerateId!==r));)i=n.original;return n}(t),t.autoGenerateFlags);var r=t.autoGenerateId;return s[r]||(s[r]=function(t){switch(7&t.autoGenerateFlags){case 1:return ir(0,!!(8&t.autoGenerateFlags));case 2:return ir(268435456,!!(8&t.autoGenerateFlags));case 3:return ar(e.idText(t),32&t.autoGenerateFlags?nr:rr,!!(16&t.autoGenerateFlags),!!(8&t.autoGenerateFlags))}return e.Debug.fail("Unsupported GeneratedIdentifierKind.")}(t))}function tr(t,r){var n=e.getNodeId(t);return o[n]||(o[n]=function(t,r){switch(t.kind){case 75:return ar(Wt(t),rr,!!(16&r),!!(8&r));case 248:case 247:return function(t){var r=Wt(t.name);return function(t,r){for(var n=r;e.isNodeDescendantOf(n,r);n=n.nextContainer)if(n.locals){var i=n.locals.get(e.escapeLeadingUnderscores(t));if(i&&3257279&i.flags)return!1}return!0}(r,t)?r:ar(r)}(t);case 253:case 259:return function(t){var r=e.getExternalModuleName(t);return ar(e.isStringLiteral(r)?e.makeIdentifierFromModuleName(r.text):"module")}(t);case 243:case 244:case 258:return ar("default");case 213:return ar("class");case 160:case 162:case 163:return function(t){if(e.isIdentifier(t.name))return tr(t.name);return ir(0)}(t);case 153:return ir(0,!0);default:return ir(0)}}(t,r))}function rr(e){return nr(e)&&!c.has(e)&&!(d&&d.has(e))}function nr(t){return!n||e.isFileLevelUniqueName(n,t,D)}function ir(e,t){if(e&&!(l&e)&&rr(r=268435456===e?"_i":"_n"))return l|=e,t&&Xt(r),r;for(;;){var r,n=268435455&l;if(l++,8!==n&&13!==n)if(rr(r=n<26?"_"+String.fromCharCode(97+n):"_"+(n-26)))return t&&Xt(r),r}}function ar(e,t,r,n){if(void 0===t&&(t=rr),r&&t(e))return n?Xt(e):c.set(e,!0),e;95!==e.charCodeAt(e.length-1)&&(e+="_");for(var i=1;;){var a=e+i;if(t(a))return n?Xt(a):c.set(a,!0),a;i++}}function or(e){return ar(e,nr,!0)}function sr(t,r){e.Debug.assert(b===r||x===r),Y(),W=!1;var n=e.getEmitFlags(r),i=e.getCommentRange(r),a=i.pos,o=i.end,s=318!==r.kind,c=a<0||0!=(512&n)||11===r.kind,u=o<0||0!=(1024&n)||11===r.kind,l=U,_=V,d=q;(a>0||o>0)&&a!==o&&(c||dr(a,s),(!c||a>=0&&0!=(512&n))&&(U=a),(!u||o>=0&&0!=(1024&n))&&(V=o,242===r.kind&&(q=o))),e.forEach(e.getSyntheticLeadingComments(r),cr),X();var p=be(2,r);2048&n?(G=!0,p(t,r),G=!1):p(t,r),Y(),e.forEach(e.getSyntheticTrailingComments(r),ur),(a>0||o>0)&&a!==o&&(U=l,V=_,q=d,!u&&s&&function(e){xr(e,yr)}(o)),X(),e.Debug.assert(b===r||x===r)}function cr(e){2===e.kind&&p.writeLine(),lr(e),e.hasTrailingNewLine||2===e.kind?p.writeLine():p.writeSpace(" ")}function ur(e){p.isAtStartOfLine()||p.writeSpace(" "),lr(e),e.hasTrailingNewLine&&p.writeLine()}function lr(t){var r=function(e){return 3===e.kind?"/*"+e.text+"*/":"//"+e.text}(t),n=3===t.kind?e.computeLineStarts(r):void 0;e.writeCommentRange(r,n,p,0,r.length,w)}function _r(t,r,i){Y();var a=r.pos,o=r.end,s=e.getEmitFlags(t),c=G||o<0||0!=(1024&s);a<0||0!=(512&s)||function(t){var r=e.emitDetachedComments(n.text,fe(),p,Dr,t,w,G);r&&(v?v.push(r):v=[r])}(r),X(),2048&s&&!G?(G=!0,i(t),G=!1):i(t),Y(),c||(dr(r.end,!0),W&&!p.isAtStartOfLine()&&p.writeLine()),X()}function dr(e,t){W=!1,t?br(e,mr):0===e&&br(e,pr)}function pr(t,r,i,a,o){(function(t,r){return e.isRecognizedTripleSlashComment(n.text,t,r)})(t,r)&&mr(t,r,i,a,o)}function fr(r,n){return!t.onlyPrintJsDocStyle||(e.isJSDocLikeText(r,n)||e.isPinnedComment(r,n))}function mr(t,r,i,a,o){fr(n.text,t)&&(W||(e.emitNewLineBeforeLeadingCommentOfPosition(fe(),p,o,t),W=!0),Er(t),e.writeCommentRange(n.text,fe(),p,t,r,w),Er(r),a?p.writeLine():3===i&&p.writeSpace(" "))}function gr(e){G||-1===e||dr(e,!0)}function yr(t,r,i,a){fr(n.text,t)&&(p.isAtStartOfLine()||p.writeSpace(" "),Er(t),e.writeCommentRange(n.text,fe(),p,t,r,w),Er(r),a&&p.writeLine())}function hr(e,t){G||(Y(),xr(e,t?yr:vr),X())}function vr(t,r,i,a){Er(t),e.writeCommentRange(n.text,fe(),p,t,r,w),Er(r),a?p.writeLine():p.writeSpace(" ")}function br(t,r){!n||-1!==U&&t===U||(function(t){return void 0!==v&&e.last(v).nodePos===t}(t)?function(t){var r=e.last(v).detachedCommentEndPos;v.length-1?v.pop():v=void 0;e.forEachLeadingCommentRange(n.text,r,t,r)}(r):e.forEachLeadingCommentRange(n.text,t,r,t))}function xr(t,r){n&&(-1===V||t!==V&&t!==q)&&e.forEachTrailingCommentRange(n.text,t,r)}function Dr(t,r,i,a,o,s){fr(n.text,a)&&(Er(a),e.writeCommentRange(t,r,i,a,o,s),Er(o))}function Sr(t,r){e.Debug.assert(b===r||x===r);var n=be(3,r);if(e.isUnparsedSource(r)||e.isUnparsedPrepend(r))n(t,r);else if(e.isUnparsedNode(r)){var i=function(t){return void 0===t.parsedSourceMap&&void 0!==t.sourceMapText&&(t.parsedSourceMap=e.tryParseRawSourceMap(t.sourceMapText)||!1),t.parsedSourceMap||void 0}(r.parent);i&&g&&g.appendSourceMap(p.getLine(),p.getColumn(),i,r.parent.sourceMapPath,r.parent.getLineAndCharacterOfPosition(r.pos),r.parent.getLineAndCharacterOfPosition(r.end)),n(t,r)}else{var a=e.getSourceMapRange(r),o=a.pos,s=a.end,c=a.source,u=void 0===c?y:c,l=e.getEmitFlags(r);318!==r.kind&&0==(16&l)&&o>=0&&Cr(u,Tr(u,o)),64&l?(J=!0,n(t,r),J=!1):n(t,r),318!==r.kind&&0==(32&l)&&s>=0&&Cr(u,s)}e.Debug.assert(b===r||x===r)}function Tr(t,r){return t.skipTrivia?t.skipTrivia(r):e.skipTrivia(t.text,r)}function Er(t){if(!(J||e.positionIsSynthesized(t)||Nr(y))){var r=e.getLineAndCharacterOfPosition(y,t),n=r.line,i=r.character;g.addMapping(p.getLine(),p.getColumn(),z,n,i,void 0)}}function Cr(e,t){if(e!==y){var r=y;kr(e),Er(t),kr(r)}else Er(t)}function kr(e){J||(y=e,Nr(e)||(z=g.addSource(e.fileName),t.inlineSources&&g.setSourceContent(z,e.text)))}function Nr(t){return e.fileExtensionIs(t.fileName,".json")}}e.isBuildInfoFile=function(t){return e.fileExtensionIs(t,".tsbuildinfo")},e.forEachEmittedFile=o,e.getTsBuildInfoEmitOutputFilePath=s,e.getOutputPathsForBundle=c,e.getOutputPathsFor=u,e.getOutputExtension=_,e.getOutputDeclarationFileName=p,e.getAllProjectOutputs=function(e,t){var r=m(),n=r.addOutput,i=r.getOutputs;if(e.options.outFile||e.options.out)g(e,n);else{for(var a=0,o=e.fileNames;a<o.length;a++){y(e,o[a],t,n)}n(s(e.options))}return i()},e.getOutputFileNames=function(t,r,n){r=e.normalizePath(r),e.Debug.assert(e.contains(t.fileNames,r),"Expected fileName to be present in command line");var i=m(),a=i.addOutput,o=i.getOutputs;return t.options.outFile||t.options.out?g(t,a):y(t,r,n,a),o()},e.getFirstProjectOutput=function(t,r){if(t.options.outFile||t.options.out){var n=c(t.options,!1).jsFilePath;return e.Debug.assertDefined(n,"project "+t.options.configFilePath+" expected to have at least one output")}for(var i=0,a=t.fileNames;i<a.length;i++){var o=a[i];if(!e.fileExtensionIs(o,".d.ts")){if(n=f(o,t,r))return n;if(!e.fileExtensionIs(o,".json")&&e.getEmitDeclarations(t.options))return p(o,t,r)}}var u=s(t.options);return u||e.Debug.fail("project "+t.options.configFilePath+" expected to have at least one output")},e.emitFiles=h,e.getBuildInfoText=v,e.getBuildInfo=b,e.notImplementedResolver={hasGlobalName:e.notImplemented,getReferencedExportContainer:e.notImplemented,getReferencedImportDeclaration:e.notImplemented,getReferencedDeclarationWithCollidingName:e.notImplemented,isDeclarationWithCollidingName:e.notImplemented,isValueAliasDeclaration:e.notImplemented,isReferencedAliasDeclaration:e.notImplemented,isTopLevelValueImportEqualsWithEntityName:e.notImplemented,getNodeCheckFlags:e.notImplemented,isDeclarationVisible:e.notImplemented,isLateBound:function(e){return!1},collectLinkedAliases:e.notImplemented,isImplementationOfOverload:e.notImplemented,isRequiredInitializedParameter:e.notImplemented,isOptionalUninitializedParameterProperty:e.notImplemented,isExpandoFunctionDeclaration:e.notImplemented,getPropertiesOfContainerFunction:e.notImplemented,createTypeOfDeclaration:e.notImplemented,createReturnTypeOfSignatureDeclaration:e.notImplemented,createTypeOfExpression:e.notImplemented,createLiteralConstValue:e.notImplemented,isSymbolAccessible:e.notImplemented,isEntityNameVisible:e.notImplemented,getConstantValue:e.notImplemented,getReferencedValueDeclaration:e.notImplemented,getTypeReferenceSerializationKind:e.notImplemented,isOptionalParameter:e.notImplemented,moduleExportsSomeValue:e.notImplemented,isArgumentsLocalBinding:e.notImplemented,getExternalModuleFileFromDeclaration:e.notImplemented,getTypeReferenceDirectivesForEntityName:e.notImplemented,getTypeReferenceDirectivesForSymbol:e.notImplemented,isLiteralConstDeclaration:e.notImplemented,getJsxFactoryEntity:e.notImplemented,getAllAccessorDeclarations:e.notImplemented,getSymbolOfExternalModuleSpecifier:e.notImplemented,isBindingCapturedByNode:e.notImplemented,getDeclarationStatementsForSourceFile:e.notImplemented},e.emitUsingBuildInfo=function(r,n,i,a){var o=c(r.options,!1),s=o.buildInfoPath,u=o.jsFilePath,l=o.sourceMapFilePath,_=o.declarationFilePath,d=o.declarationMapPath,p=n.readFile(e.Debug.assertDefined(s));if(!p)return s;var f=n.readFile(e.Debug.assertDefined(u));if(!f)return u;var m=l&&n.readFile(l);if(l&&!m||r.options.inlineSourceMap)return l||"inline sourcemap decoding";var g=_&&n.readFile(_);if(_&&!g)return _;var y=d&&n.readFile(d);if(d&&!y||r.options.inlineSourceMap)return d||"inline sourcemap decoding";var x=b(p);if(!x.bundle||!x.bundle.js||g&&!x.bundle.dts)return s;var D=e.getDirectoryPath(e.getNormalizedAbsolutePath(s,n.getCurrentDirectory())),S=e.createInputFiles(f,g,l,m,d,y,u,_,s,x,!0),T=[],E=e.createPrependNodes(r.projectReferences,i,(function(e){return n.readFile(e)})),C=function(t,r,n){var i=t.sourceFiles.map((function(t){var i=e.createNode(288,0,0);return i.fileName=e.getRelativePathFromDirectory(n.getCurrentDirectory(),e.getNormalizedAbsolutePath(t,r),!n.useCaseSensitiveFileNames()),i.text="",i.statements=e.createNodeArray(),i})),a=e.Debug.assertDefined(t.js);return e.forEach(a.sources&&a.sources.prologues,(function(t){var r=i[t.file];r.text=t.text,r.end=t.text.length,r.statements=e.createNodeArray(t.directives.map((function(t){var r=e.createNode(225,t.pos,t.end);return r.expression=e.createNode(10,t.expression.pos,t.expression.end),r.expression.text=t.expression.text,r})))})),i}(x.bundle,D,n),k={getPrependNodes:e.memoize((function(){return t(E,[S])})),getCanonicalFileName:n.getCanonicalFileName,getCommonSourceDirectory:function(){return e.getNormalizedAbsolutePath(x.bundle.commonSourceDirectory,D)},getCompilerOptions:function(){return r.options},getCurrentDirectory:function(){return n.getCurrentDirectory()},getNewLine:function(){return n.getNewLine()},getSourceFile:e.returnUndefined,getSourceFileByPath:e.returnUndefined,getSourceFiles:function(){return C},getLibFileFromReference:e.notImplemented,isSourceFileFromExternalLibrary:e.returnFalse,getResolvedProjectReferenceToRedirect:e.returnUndefined,writeFile:function(t,r,n){switch(t){case u:if(f===r)return;break;case l:if(m===r)return;break;case s:var i=b(r);i.program=x.program;var a=x.bundle,o=a.js,c=a.dts,p=a.sourceFiles;return i.bundle.js.sources=o.sources,c&&(i.bundle.dts.sources=c.sources),i.bundle.sourceFiles=p,void T.push({name:t,text:v(i),writeByteOrderMark:n});case _:if(g===r)return;break;case d:if(y===r)return;break;default:e.Debug.fail("Unexpected path: "+t)}T.push({name:t,text:r,writeByteOrderMark:n})},isEmitBlocked:e.returnFalse,readFile:function(e){return n.readFile(e)},fileExists:function(e){return n.fileExists(e)},directoryExists:n.directoryExists&&function(e){return n.directoryExists(e)},useCaseSensitiveFileNames:function(){return n.useCaseSensitiveFileNames()},getProgramBuildInfo:e.returnUndefined,getSourceFileFromReference:e.returnUndefined,redirectTargetsMap:e.createMultiMap()};return h(e.notImplementedResolver,k,void 0,e.getTransformers(r.options,a)),T},function(e){e[e.Notification=0]="Notification",e[e.Substitution=1]="Substitution",e[e.Comments=2]="Comments",e[e.SourceMaps=3]="SourceMaps",e[e.Emit=4]="Emit"}(r||(r={})),e.createPrinter=x,function(e){e[e.Auto=0]="Auto",e[e.CountMask=268435455]="CountMask",e[e._i=268435456]="_i"}(n||(n={}))}(s||(s={})),function(e){var t;function r(e,t,r,n){return e.watchFile(t,r,n)}function n(e,t,r,n){return e.watchDirectory(t,r,0!=(1&n))}function i(e,r){switch(e){case t.None:return r;case t.TriggerOnly:return s;case t.Verbose:return r===n?o:a}}function a(e,t,r,n,i,a,o,u,l,_,d){l(_+":: Added:: "+c(t,n,a,o,d));var p=s(e,t,r,n,i,a,o,u,l,_,d);return{close:function(){l(_+":: Close:: "+c(t,n,a,o,d)),p.close()}}}function o(t,r,n,i,a,o,u,l,_,d,p){var f=d+":: Added:: "+c(r,i,o,u,p);_(f);var m=e.timestamp(),g=s(t,r,n,i,a,o,u,l,_,d,p),y=e.timestamp()-m;return _("Elapsed:: "+y+"ms "+f),{close:function(){var t=d+":: Close:: "+c(r,i,o,u,p);_(t);var n=e.timestamp();g.close();var a=e.timestamp()-n;_("Elapsed:: "+a+"ms "+t)}}}function s(t,r,n,i,a,o,s,u,l,_,d){return u(t,r,(function(t,u){var p=_+":: Triggered with "+t+" "+(void 0!==u?u:"")+":: "+c(r,i,o,s,d);l(p);var f=e.timestamp();n(t,u,a);var m=e.timestamp()-f;l("Elapsed:: "+m+"ms "+p)}),i)}function c(e,t,r,n,i){return"WatchInfo: "+e+" "+t+" "+(i?i(r,n):void 0===n?r:r+" "+n)}function u(e){e.watcher.close()}e.createCachedDirectoryStructureHost=function(t,r,n){if(t.getDirectories&&t.readDirectory){var i=e.createMap(),a=e.createGetCanonicalFileName(n);return{useCaseSensitiveFileNames:n,fileExists:function(e){var r=c(o(e));return r&&d(r.files,u(e))||t.fileExists(e)},readFile:function(e,r){return t.readFile(e,r)},directoryExists:t.directoryExists&&function(r){var n=o(r);return i.has(e.ensureTrailingDirectorySeparator(n))||t.directoryExists(r)},getDirectories:function(e){var r=o(e),n=l(e,r);if(n)return n.directories.slice();return t.getDirectories(e)},readDirectory:function(i,a,s,c,u){var _=o(i),d=l(i,_);if(d)return e.matchFiles(i,a,s,c,n,r,u,(function(t){var r=o(t);if(r===_)return d;return l(t,r)||e.emptyFileSystemEntries}),f);return t.readDirectory(i,a,s,c,u)},createDirectory:t.createDirectory&&function(e){var r=c(o(e)),n=u(e);r&&p(r.directories,n,!0);t.createDirectory(e)},writeFile:t.writeFile&&function(e,r,n){var i=c(o(e));i&&m(i,u(e),!0);return t.writeFile(e,r,n)},addOrDeleteFileOrDirectory:function(e,r){if(s(r))return void g();var n=c(r);if(!n)return;if(!t.directoryExists)return void g();var i=u(e),a={fileExists:t.fileExists(r),directoryExists:t.directoryExists(r)};a.directoryExists||d(n.directories,i)?g():m(n,i,a.fileExists);return a},addOrDeleteFile:function(t,r,n){if(n===e.FileWatcherEventKind.Changed)return;var i=c(r);i&&m(i,u(t),n===e.FileWatcherEventKind.Created)},clearCache:g,realpath:t.realpath&&f}}function o(t){return e.toPath(t,r,a)}function s(t){return i.get(e.ensureTrailingDirectorySeparator(t))}function c(t){return s(e.getDirectoryPath(t))}function u(t){return e.getBaseFileName(e.normalizePath(t))}function l(r,n){var a=s(n=e.ensureTrailingDirectorySeparator(n));if(a)return a;try{return function(r,n){var a={files:e.map(t.readDirectory(r,void 0,void 0,["*.*"]),u)||[],directories:t.getDirectories(r)||[]};return i.set(e.ensureTrailingDirectorySeparator(n),a),a}(r,n)}catch(t){return void e.Debug.assert(!i.has(e.ensureTrailingDirectorySeparator(n)))}}function _(e,t){return a(e)===a(t)}function d(t,r){return e.some(t,(function(e){return _(e,r)}))}function p(t,r,n){if(d(t,r)){if(!n)return e.filterMutate(t,(function(e){return!_(e,r)}))}else if(n)return t.push(r)}function f(e){return t.realpath?t.realpath(e):e}function m(e,t,r){p(e.files,t,r)}function g(){i.clear()}},function(e){e[e.None=0]="None",e[e.Partial=1]="Partial",e[e.Full=2]="Full"}(e.ConfigFileProgramReloadLevel||(e.ConfigFileProgramReloadLevel={})),e.updateMissingFilePathsWatch=function(t,r,n){var i=t.getMissingFilePaths(),a=e.arrayToSet(i);e.mutateMap(r,a,{createNewValue:n,onDeleteValue:e.closeFileWatcher})},e.updateWatchingWildcardDirectories=function(t,r,n){function i(e,t){return{watcher:n(e,t),flags:t}}e.mutateMap(t,r,{createNewValue:i,onDeleteValue:u,onExistingValue:function(e,r,n){if(e.flags===r)return;e.watcher.close(),t.set(n,i(n,r))}})},e.isEmittedFileOfProgram=function(e,t){return!!e&&e.isEmittedFile(t)},function(e){e[e.None=0]="None",e[e.TriggerOnly=1]="TriggerOnly",e[e.Verbose=2]="Verbose"}(t=e.WatchLogLevel||(e.WatchLogLevel={})),e.getWatchFactory=function(a,o,s){return function(r,n,a,o,s){var c=i(r,o),u=r===t.None?function(e,t,r,n,i){return o(e,t,(function(e,t){return r(e,t,i)}),n)}:c,l=i(r,s);r===t.Verbose&&e.sysLog===e.noop&&(e.sysLog=function(e){return n(e)});return{watchFile:function(e,t,r,i,s,u){return c(e,t,r,i,void 0,s,u,o,n,"FileWatcher",a)},watchFilePath:function(e,t,r,i,s,c,l){return u(e,t,r,i,s,c,l,o,n,"FileWatcher",a)},watchDirectory:function(e,t,r,i,o,c){return l(e,t,r,i,void 0,o,c,s,n,"DirectoryWatcher",a)}}}(a,o,s,r,n)},e.closeFileWatcherOf=u}(s||(s={})),function(e){var n,i=/(^\s*$)|(^\s*\/\/\/?\s*(@ts-ignore)?)/;function a(t,r){var n=e.getDirectoryPath(r),i=e.isRootedDiskPath(t)?t:e.combinePaths(n,t);return e.normalizePath(i)}function o(t,r,n){var i;return e.forEach(t,(function(t){var a=e.getNormalizedPathComponents(t,r);if(a.pop(),i){for(var o=Math.min(i.length,a.length),s=0;s<o;s++)if(n(i[s])!==n(a[s])){if(0===s)return!0;i.length=s;break}a.length<i.length&&(i.length=a.length)}else i=a}))?"":i?e.getPathFromPathComponents(i):r}function s(e,t){return c(e,t)}function c(t,r,n){void 0===n&&(n=e.sys);var i,a=e.createMap(),o=e.createGetCanonicalFileName(n.useCaseSensitiveFileNames);function s(t){t.length>e.getRootLength(t)&&!function(e){return!!a.has(e)||!!n.directoryExists(e)&&(a.set(e,!0),!0)}(t)&&(s(e.getDirectoryPath(t)),_.createDirectory?_.createDirectory(t):n.createDirectory(t))}function c(){return e.getDirectoryPath(e.normalizePath(n.getExecutingFilePath()))}var u=e.getNewLineCharacter(t,(function(){return n.newLine})),l=n.realpath&&function(e){return n.realpath(e)},_={getSourceFile:function(t,n,i){var a;try{e.performance.mark("beforeIORead"),a=_.readFile(t),e.performance.mark("afterIORead"),e.performance.measure("I/O Read","beforeIORead","afterIORead")}catch(e){i&&i(e.message),a=""}return void 0!==a?e.createSourceFile(t,a,n,r):void 0},getDefaultLibLocation:c,getDefaultLibFileName:function(t){return e.combinePaths(c(),e.getDefaultLibFileName(t))},writeFile:function(r,a,o,c){try{e.performance.mark("beforeIOWrite"),s(e.getDirectoryPath(e.normalizePath(r))),e.isWatchSet(t)&&n.createHash&&n.getModifiedTime?function(t,r,a){i||(i=e.createMap());var o=n.createHash(r),s=n.getModifiedTime(t);if(s){var c=i.get(t);if(c&&c.byteOrderMark===a&&c.hash===o&&c.mtime.getTime()===s.getTime())return}n.writeFile(t,r,a);var u=n.getModifiedTime(t)||e.missingFileModifiedTime;i.set(t,{hash:o,byteOrderMark:a,mtime:u})}(r,a,o):n.writeFile(r,a,o),e.performance.mark("afterIOWrite"),e.performance.measure("I/O Write","beforeIOWrite","afterIOWrite")}catch(e){c&&c(e.message)}},getCurrentDirectory:e.memoize((function(){return n.getCurrentDirectory()})),useCaseSensitiveFileNames:function(){return n.useCaseSensitiveFileNames},getCanonicalFileName:o,getNewLine:function(){return u},fileExists:function(e){return n.fileExists(e)},readFile:function(e){return n.readFile(e)},trace:function(e){return n.write(e+u)},directoryExists:function(e){return n.directoryExists(e)},getEnvironmentVariable:function(e){return n.getEnvironmentVariable?n.getEnvironmentVariable(e):""},getDirectories:function(e){return n.getDirectories(e)},realpath:l,readDirectory:function(e,t,r,i,a){return n.readDirectory(e,t,r,i,a)},createDirectory:function(e){return n.createDirectory(e)},createHash:e.maybeBind(n,n.createHash)};return _}function u(t,r){var n=e.diagnosticCategoryName(t)+" TS"+t.code+": "+D(t.messageText,r.getNewLine())+r.getNewLine();if(t.file){var i=e.getLineAndCharacterOfPosition(t.file,t.start),a=i.line,o=i.character,s=t.file.fileName;return e.convertToRelativePath(s,r.getCurrentDirectory(),(function(e){return r.getCanonicalFileName(e)}))+"("+(a+1)+","+(o+1)+"): "+n}return n}e.findConfigFile=function(t,r,n){return void 0===n&&(n="tsconfig.json"),e.forEachAncestorDirectory(t,(function(t){var i=e.combinePaths(t,n);return r(i)?i:void 0}))},e.resolveTripleslashReference=a,e.computeCommonSourceDirectoryOfFilenames=o,e.createCompilerHost=s,e.createCompilerHostWorker=c,e.changeCompilerHostLikeToUseCache=function(t,r,n){var i=t.readFile,a=t.fileExists,o=t.directoryExists,s=t.createDirectory,c=t.writeFile,u=e.createMap(),l=e.createMap(),_=e.createMap(),d=e.createMap(),p=function(e,r){var n=i.call(t,r);return u.set(e,void 0!==n&&n),n};t.readFile=function(n){var a=r(n),o=u.get(a);return void 0!==o?!1!==o?o:void 0:e.fileExtensionIs(n,".json")||e.isBuildInfoFile(n)?p(a,n):i.call(t,n)};var f=n?function(t,i,a,o){var s=r(t),c=d.get(s);if(c)return c;var u=n(t,i,a,o);return u&&(e.isDeclarationFileName(t)||e.fileExtensionIs(t,".json"))&&d.set(s,u),u}:void 0;return t.fileExists=function(e){var n=r(e),i=l.get(n);if(void 0!==i)return i;var o=a.call(t,e);return l.set(n,!!o),o},c&&(t.writeFile=function(e,n,i,a,o){var s=r(e);l.delete(s);var _=u.get(s);if(void 0!==_&&_!==n)u.delete(s),d.delete(s);else if(f){var p=d.get(s);p&&p.text!==n&&d.delete(s)}c.call(t,e,n,i,a,o)}),o&&s&&(t.directoryExists=function(e){var n=r(e),i=_.get(n);if(void 0!==i)return i;var a=o.call(t,e);return _.set(n,!!a),a},t.createDirectory=function(e){var n=r(e);_.delete(n),s.call(t,e)}),{originalReadFile:i,originalFileExists:a,originalDirectoryExists:o,originalCreateDirectory:s,originalWriteFile:c,getSourceFileWithCache:f,readFileWithCache:function(e){var t=r(e),n=u.get(t);return void 0!==n?!1!==n?n:void 0:p(t,e)}}},e.getPreEmitDiagnostics=function(r,n,i){var a=t(r.getConfigFileParsingDiagnostics(),r.getOptionsDiagnostics(i),r.getSyntacticDiagnostics(n,i),r.getGlobalDiagnostics(i),r.getSemanticDiagnostics(n,i));return e.getEmitDeclarations(r.getCompilerOptions())&&e.addRange(a,r.getDeclarationDiagnostics(n,i)),e.sortAndDeduplicateDiagnostics(a)},e.formatDiagnostics=function(e,t){for(var r="",n=0,i=e;n<i.length;n++){r+=u(i[n],t)}return r},e.formatDiagnostic=u,function(e){e.Grey="",e.Red="",e.Yellow="",e.Blue="",e.Cyan=""}(n=e.ForegroundColorEscapeSequences||(e.ForegroundColorEscapeSequences={}));var l="",_=" ",d="",p="...",m=" ",g=" ";function y(t){switch(t){case e.DiagnosticCategory.Error:return n.Red;case e.DiagnosticCategory.Warning:return n.Yellow;case e.DiagnosticCategory.Suggestion:return e.Debug.fail("Should never get an Info diagnostic on the command line.");case e.DiagnosticCategory.Message:return n.Blue}}function h(e,t){return t+e+d}function v(e,t){for(;e.length<t;)e=" "+e;return e}function b(t,r,n,i,a,o){var s=e.getLineAndCharacterOfPosition(t,r),c=s.line,u=s.character,f=e.getLineAndCharacterOfPosition(t,r+n),m=f.line,g=f.character,y=e.getLineAndCharacterOfPosition(t,t.text.length).line,b=m-c>=4,x=(m+1+"").length;b&&(x=Math.max(p.length,x));for(var D="",S=c;S<=m;S++){D+=o.getNewLine(),b&&c+1<S&&S<m-1&&(D+=i+h(v(p,x),l)+_+o.getNewLine(),S=m-1);var T=e.getPositionOfLineAndCharacter(t,S,0),E=S<y?e.getPositionOfLineAndCharacter(t,S+1,0):t.text.length,C=t.text.slice(T,E);if(C=(C=C.replace(/\s+$/g,"")).replace("\t"," "),D+=i+h(v(S+1+"",x),l)+_,D+=C+o.getNewLine(),D+=i+h(v("",x),l)+_,D+=a,S===c){var k=S===m?g:void 0;D+=C.slice(0,u).replace(/\S/g," "),D+=C.slice(u,k).replace(/./g,"~")}else D+=S===m?C.slice(0,g).replace(/./g,"~"):C.replace(/./g,"~");D+=d}return D}function x(t,r,i,a){void 0===a&&(a=h);var o=e.getLineAndCharacterOfPosition(t,r),s=o.line,c=o.character,u="";return u+=a(i?e.convertToRelativePath(t.fileName,i.getCurrentDirectory(),(function(e){return i.getCanonicalFileName(e)})):t.fileName,n.Cyan),u+=":",u+=a(""+(s+1),n.Yellow),u+=":",u+=a(""+(c+1),n.Yellow)}function D(t,r,n){if(void 0===n&&(n=0),e.isString(t))return t;if(void 0===t)return"";var i="";if(n){i+=r;for(var a=0;a<n;a++)i+=" "}if(i+=t.messageText,n++,t.next)for(var o=0,s=t.next;o<s.length;o++){i+=D(s[o],r,n)}return i}function S(t,r,n,i){if(0===t.length)return[];for(var a=[],o=e.createMap(),s=0,c=t;s<c.length;s++){var u=c[s],l=void 0;o.has(u)?l=o.get(u):o.set(u,l=i(u,r,n)),a.push(l)}return a}function T(t,r){return void 0===r&&(r=t),{fileExists:function(e){return r.fileExists(e)},readDirectory:function(t,n,i,a,o){return e.Debug.assertDefined(r.readDirectory,"'CompilerHost.readDirectory' must be implemented to correctly process 'projectReferences'"),r.readDirectory(t,n,i,a,o)},readFile:function(e){return r.readFile(e)},useCaseSensitiveFileNames:t.useCaseSensitiveFileNames(),getCurrentDirectory:function(){return t.getCurrentDirectory()},onUnRecoverableConfigFileDiagnostic:t.onUnRecoverableConfigFileDiagnostic||e.returnUndefined,trace:t.trace?function(e){return t.trace(e)}:void 0}}function E(t,r,n){if(!t)return e.emptyArray;for(var i,a=0;a<t.length;a++){var o=t[a],s=r(o,a);if(o.prepend&&s&&s.options){if(!(s.options.outFile||s.options.out))continue;var c=e.getOutputPathsForBundle(s.options,!0),u=c.jsFilePath,l=c.sourceMapFilePath,_=c.declarationFilePath,d=c.declarationMapPath,p=c.buildInfoPath,f=e.createInputFiles(n,u,l,_,d,p);(i||(i=[])).push(f)}}return i||e.emptyArray}function C(t,r){var n=r||t;return e.resolveConfigFileProjectName(n.path)}function k(t,r){switch(r.extension){case".ts":case".d.ts":return;case".tsx":return n();case".jsx":return n()||i();case".js":return i();case".json":return t.resolveJsonModule?void 0:e.Diagnostics.Module_0_was_resolved_to_1_but_resolveJsonModule_is_not_used}function n(){return t.jsx?void 0:e.Diagnostics.Module_0_was_resolved_to_1_but_jsx_is_not_set}function i(){return t.allowJs||!e.getStrictOptionValue(t,"noImplicitAny")?void 0:e.Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type}}function N(e){for(var t=e.imports,r=e.moduleAugmentations,n=t.map((function(e){return e.text})),i=0,a=r;i<a.length;i++){var o=a[i];10===o.kind&&n.push(o.text)}return n}e.formatColorAndReset=h,e.formatLocation=x,e.formatDiagnosticsWithColorAndContext=function(t,r){for(var i="",a=0,o=t;a<o.length;a++){var s=o[a];if(s.file)i+=x(_=s.file,d=s.start,r),i+=" - ";if(i+=h(e.diagnosticCategoryName(s),y(s.category)),i+=h(" TS"+s.code+": ",n.Grey),i+=D(s.messageText,r.getNewLine()),s.file&&(i+=r.getNewLine(),i+=b(s.file,s.start,s.length,"",y(s.category),r),s.relatedInformation)){i+=r.getNewLine();for(var c=0,u=s.relatedInformation;c<u.length;c++){var l=u[c],_=l.file,d=l.start,p=l.length,f=l.messageText;_&&(i+=r.getNewLine(),i+=m+x(_,d,r),i+=b(_,d,p,g,n.Cyan,r)),i+=r.getNewLine(),i+=g+D(f,r.getNewLine())}}i+=r.getNewLine()}return i},e.flattenDiagnosticMessageText=D,e.loadWithLocalCache=S,e.inferredTypesContainingFile="__inferred type names__.ts",e.isProgramUptoDate=function(t,r,n,i,a,o,s,c){if(!t||s)return!1;if(t.getRootFileNames().length!==r.length)return!1;var u;if(!e.arrayIsEqualTo(t.getProjectReferences(),c,(function(r,n,i){if(!e.projectReferenceIsEqualTo(r,n))return!1;return function t(r,n){if(r)return!!e.contains(u,r)||!!_(r.sourceFile)&&((u||(u=[])).push(r),!e.forEach(r.references,(function(e,n){return!t(e,r.commandLine.projectReferences[n])})));return!a(C(n))}(t.getResolvedProjectReferences()[i],r)})))return!1;if(t.getSourceFiles().some((function(e){return!_(e)||o(e.path)})))return!1;if(t.getMissingFilePaths().some(a))return!1;var l=t.getCompilerOptions();return!!e.compareDataObjects(l,n)&&(!l.configFile||!n.configFile||l.configFile.text===n.configFile.text);function _(e){return e.version===i(e.resolvedPath)}},e.getConfigFileParsingDiagnostics=function(e){return e.options.configFile?t(e.options.configFile.parseDiagnostics,e.errors):e.errors},e.createProgram=function(n,c,u,l,_){var d,p,m,g,y,h,v,b,x,D=e.isArray(n)?function(e,t,r,n,i){return{rootNames:e,options:t,host:r,oldProgram:n,configFileParsingDiagnostics:i}}(n,c,u,l,_):n,A=D.rootNames,F=D.options,P=D.configFileParsingDiagnostics,w=D.projectReferences,I=D.oldProgram,O=e.createMap(),M={},L={},R=e.createMap(),B=e.createDiagnosticCollection(),j="number"==typeof F.maxNodeModuleJsDepth?F.maxNodeModuleJsDepth:0,K=0,J=e.createMap(),z=e.createMap();e.performance.mark("beforeProgram");var U,V,q,W,G=D.host||s(F),H=T(G),Y=F.noLib,X=e.memoize((function(){return G.getDefaultLibFileName(F)})),Q=G.getDefaultLibLocation?G.getDefaultLibLocation():e.getDirectoryPath(X()),$=e.createDiagnosticCollection(),Z=G.getCurrentDirectory(),ee=e.getSupportedExtensions(F),te=e.getSuppoertedExtensionsWithJsonIfResolveJsonModule(F,ee),re=e.createMap(),ne=G.hasInvalidatedResolution||e.returnFalse;if(G.resolveModuleNames)q=function(t,r,n,i){return G.resolveModuleNames(e.Debug.assertEachDefined(t),r,n,i,F).map((function(t){if(!t||void 0!==t.extension)return t;var r=e.clone(t);return r.extension=e.extensionFromPath(t.resolvedFileName),r}))};else{V=e.createModuleResolutionCache(Z,(function(e){return G.getCanonicalFileName(e)}),F);var ie=function(t,r,n){return e.resolveModuleName(t,r,F,G,V,n).resolvedModule};q=function(t,r,n,i){return S(e.Debug.assertEachDefined(t),r,i,ie)}}if(G.resolveTypeReferenceDirectives)W=function(t,r,n){return G.resolveTypeReferenceDirectives(e.Debug.assertEachDefined(t),r,n,F)};else{var ae=function(t,r,n){return e.resolveTypeReferenceDirective(t,r,F,G,n).resolvedTypeReferenceDirective};W=function(t,r,n){return S(e.Debug.assertEachDefined(t),r,n,ae)}}var oe,se,ce,ue,le,_e,de=e.createMap(),pe=e.createMap(),fe=e.createMultiMap(),me=e.createMap(),ge=G.useCaseSensitiveFileNames()?e.createMap():void 0,ye=!!G.useSourceOfProjectReferenceRedirect&&G.useSourceOfProjectReferenceRedirect(),he=function(t,r){if(!t)return!1;var n=t.getCompilerOptions();return!!e.sourceFileAffectingCompilerOptions.some((function(t){return!e.isJsonEqual(e.getCompilerOptionValue(n,t),e.getCompilerOptionValue(r,t))}))}(I,F);if(2!==(_e=function(){if(!I)return 0;var t=I.getCompilerOptions();if(e.changesAffectModuleResolution(t,F))return I.structureIsReused=0;e.Debug.assert(!(3&I.structureIsReused));var r=I.getRootFileNames();if(!e.arrayIsEqualTo(r,A))return I.structureIsReused=0;if(!e.arrayIsEqualTo(F.types,t.types))return I.structureIsReused=0;if(Et(I.getProjectReferences(),I.getResolvedProjectReferences(),(function(e,t,r){var n=Mt((r?r.commandLine.projectReferences:w)[t]);return e?!n||n.sourceFile!==e.sourceFile:void 0!==n}),(function(t,r){var n=r?Ct(r.sourceFile.path).commandLine.projectReferences:w;return!e.arrayIsEqualTo(t,n,e.projectReferenceIsEqualTo)})))return I.structureIsReused=0;w&&(se=w.map(Mt),G.setResolvedProjectReferenceCallbacks&&G.setResolvedProjectReferenceCallbacks({getSourceOfProjectReferenceRedirect:St,forEachResolvedProjectReference:Dt}));var n=[],i=[];if(I.structureIsReused=2,I.getMissingFilePaths().some((function(e){return G.fileExists(e)})))return I.structureIsReused=0;var a,o=I.getSourceFiles();!function(e){e[e.Exists=0]="Exists",e[e.Modified=1]="Modified"}(a||(a={}));for(var s=e.createMap(),c=0,u=o;c<u.length;c++){var l=u[c];if(!(k=G.getSourceFileByPath?G.getSourceFileByPath(l.fileName,l.resolvedPath,F.target,void 0,he):G.getSourceFile(l.fileName,F.target,void 0,he)))return I.structureIsReused=0;e.Debug.assert(!k.redirectInfo,"Host should not return a redirect source file from `getSourceFile`");var _=void 0;if(l.redirectInfo){if(k!==l.redirectInfo.unredirected)return I.structureIsReused=0;_=!1,k=l}else if(I.redirectTargetsMap.has(l.path)){if(k!==l)return I.structureIsReused=0;_=!1}else _=k!==l;k.path=l.path,k.originalFileName=l.originalFileName,k.resolvedPath=l.resolvedPath,k.fileName=l.fileName;var d=I.sourceFileToPackageName.get(l.path);if(void 0!==d){var p=s.get(d),f=_?1:0;if(void 0!==p&&1===f||1===p)return I.structureIsReused=0;s.set(d,f)}if(_){if(!e.arrayIsEqualTo(l.libReferenceDirectives,k.libReferenceDirectives,ut))return I.structureIsReused=0;l.hasNoDefaultLib!==k.hasNoDefaultLib&&(I.structureIsReused=1),e.arrayIsEqualTo(l.referencedFiles,k.referencedFiles,ut)||(I.structureIsReused=1),_t(k),e.arrayIsEqualTo(l.imports,k.imports,lt)||(I.structureIsReused=1),e.arrayIsEqualTo(l.moduleAugmentations,k.moduleAugmentations,lt)||(I.structureIsReused=1),(3145728&l.flags)!=(3145728&k.flags)&&(I.structureIsReused=1),e.arrayIsEqualTo(l.typeReferenceDirectives,k.typeReferenceDirectives,ut)||(I.structureIsReused=1),i.push({oldFile:l,newFile:k})}else ne(l.path)&&(I.structureIsReused=1,i.push({oldFile:l,newFile:k}));n.push(k)}if(2!==I.structureIsReused)return I.structureIsReused;for(var g=i.map((function(e){return e.oldFile})),y=0,h=o;y<h.length;y++){var v=h[y];if(!e.contains(g,v))for(var b=0,D=v.ambientModuleNames;b<D.length;b++){var S=D[b];O.set(S,v.fileName)}}for(var T=0,E=i;T<E.length;T++){var C=E[T],k=(l=C.oldFile,C.newFile),P=e.getNormalizedAbsolutePath(k.originalFileName,Z),M=N(k),L=Ue(M,P,k);if(e.hasChangesInResolutions(M,L,l.resolvedModules,e.moduleResolutionIsEqualTo)?(I.structureIsReused=1,k.resolvedModules=e.zipToMap(M,L)):k.resolvedModules=l.resolvedModules,W){var j=e.map(k.typeReferenceDirectives,(function(e){return e.fileName.toLocaleLowerCase()})),K=W(j,P,xt(k.originalFileName));e.hasChangesInResolutions(j,K,l.resolvedTypeReferenceDirectiveNames,e.typeDirectiveIsEqualTo)?(I.structureIsReused=1,k.resolvedTypeReferenceDirectiveNames=e.zipToMap(j,K)):k.resolvedTypeReferenceDirectiveNames=l.resolvedTypeReferenceDirectiveNames}}if(2!==I.structureIsReused)return I.structureIsReused;if(G.hasChangedAutomaticTypeDirectiveNames)return I.structureIsReused=1;oe=I.getMissingFilePaths(),x=I.getRefFileMap();for(var J=0,U=n;J<U.length;J++){var V=(k=U[J]).path;if(yt(k,V,k.resolvedPath),ye){var q=vt(k.fileName);if(q&&!q.commandLine.options.outFile&&!q.commandLine.options.out){var H=bt(q,k.fileName);yt(k,Ke(H),void 0)}}I.isSourceFileFromExternalLibrary(I.getSourceFileByPath(k.resolvedPath))&&z.set(V,!0)}m=n,B=I.getFileProcessingDiagnostics();for(var Y=0,X=i;Y<X.length;Y++){var Q=X[Y];B.reattachFileDiagnostics(Q.newFile)}return R=I.getResolvedTypeReferenceDirectives(),pe=I.sourceFileToPackageName,fe=I.redirectTargetsMap,I.structureIsReused=2}())){if(d=[],p=[],w&&(se||(se=w.map(Mt)),G.setResolvedProjectReferenceCallbacks&&G.setResolvedProjectReferenceCallbacks({getSourceOfProjectReferenceRedirect:St,forEachResolvedProjectReference:Dt}),A.length))for(var ve=0,be=se;ve<be.length;ve++){var xe=be[ve];if(xe){var De=xe.commandLine.options.outFile||xe.commandLine.options.out;if(ye){if(De||e.getEmitModuleKind(xe.commandLine.options)===e.ModuleKind.None)for(var Se=0,Te=xe.commandLine.fileNames;Se<Te.length;Se++){pt(ke=Te[Se],!1,!1,void 0)}}else if(De)pt(e.changeExtension(De,".d.ts"),!1,!1,void 0);else if(e.getEmitModuleKind(xe.commandLine.options)===e.ModuleKind.None)for(var Ee=0,Ce=xe.commandLine.fileNames;Ee<Ce.length;Ee++){var ke=Ce[Ee];e.fileExtensionIs(ke,".d.ts")||pt(e.getOutputDeclarationFileName(ke,xe.commandLine,!G.useCaseSensitiveFileNames()),!1,!1,void 0)}}}e.forEach(A,(function(e){return ct(e,!1,!1)}));var Ne=A.length?e.getAutomaticTypeDirectiveNames(F,G):e.emptyArray;if(Ne.length)for(var Ae=F.configFilePath?e.getDirectoryPath(F.configFilePath):G.getCurrentDirectory(),Fe=e.combinePaths(Ae,e.inferredTypesContainingFile),Pe=W(Ne,Fe),we=0;we<Ne.length;we++)At(Ne[we],Pe[we]);if(A.length&&!Y){var Ie=X();!F.lib&&Ie?ct(Ie,!0,!1):e.forEach(F.lib,(function(t){ct(e.combinePaths(Q,t),!0,!1)}))}oe=e.arrayFrom(e.mapDefinedIterator(me.entries(),(function(e){var t=e[0];return void 0===e[1]?t:void 0}))),m=e.stableSort(d,(function(t,r){return e.compareValues(je(t),je(r))})).concat(p),d=void 0,p=void 0}if(e.Debug.assert(!!oe),I&&G.onReleaseOldSourceFile){for(var Oe=0,Me=I.getSourceFiles();Oe<Me.length;Oe++){var Le=Me[Oe],Re=Qe(Le.resolvedPath);(he||!Re||Le.resolvedPath===Le.path&&Re.resolvedPath!==Le.path)&&G.onReleaseOldSourceFile(Le,I.getCompilerOptions(),!!Qe(Le.path))}I.forEachResolvedProjectReference((function(e,t){e&&!Ct(t)&&G.onReleaseOldSourceFile(e.sourceFile,I.getCompilerOptions(),!1)}))}I=void 0;var Be={getRootFileNames:function(){return A},getSourceFile:Xe,getSourceFileByPath:Qe,getSourceFiles:function(){return m},getMissingFilePaths:function(){return oe},getRefFileMap:function(){return x},getCompilerOptions:function(){return F},getSyntacticDiagnostics:function(e,t){return $e(e,Ze,t)},getOptionsDiagnostics:function(){return e.sortAndDeduplicateDiagnostics(e.concatenate(B.getGlobalDiagnostics(),e.concatenate($.getGlobalDiagnostics(),function(){if(!F.configFile)return e.emptyArray;var t=$.getDiagnostics(F.configFile.fileName);return Dt((function(r){r&&(t=e.concatenate(t,$.getDiagnostics(r.sourceFile.fileName)))})),t}())))},getGlobalDiagnostics:function(){return A.length?e.sortAndDeduplicateDiagnostics(Ge().getGlobalDiagnostics().slice()):e.emptyArray},getSemanticDiagnostics:function(e,t){return $e(e,tt,t)},getSuggestionDiagnostics:function(e,t){return et((function(){return Ge().getSuggestionDiagnostics(e,t)}))},getDeclarationDiagnostics:function(e,t){var r=Be.getCompilerOptions();return!e||r.out||r.outFile?it(e,t):$e(e,st,t)},getTypeChecker:He,getClassifiableNames:function(){if(!b){He(),b=e.createUnderscoreEscapedMap();for(var t=0,r=m;t<r.length;t++){var n=r[t];e.copyEntries(n.classifiableNames,b)}}return b},getDiagnosticsProducingTypeChecker:Ge,getCommonSourceDirectory:ze,emit:function(r,n,i,a,o,s){return et((function(){return function(r,n,i,a,o,s,c){var u=[];if(!c){if(F.noEmit)return{diagnostics:u,sourceMaps:void 0,emittedFiles:void 0,emitSkipped:!0};if(F.noEmitOnError){var l=t(r.getOptionsDiagnostics(a),r.getSyntacticDiagnostics(n,a),r.getGlobalDiagnostics(a),r.getSemanticDiagnostics(n,a));if(0===l.length&&e.getEmitDeclarations(r.getCompilerOptions())&&(u=r.getDeclarationDiagnostics(void 0,a)),l.length>0||u.length>0)return{diagnostics:e.concatenate(l,u),sourceMaps:void 0,emittedFiles:void 0,emitSkipped:!0}}}var _=Ge().getEmitResolver(F.outFile||F.out?void 0:n,a);e.performance.mark("beforeEmit");var d=e.emitFiles(_,Ve(i),n,e.getTransformers(F,s,o),o,!1,c);return e.performance.mark("afterEmit"),e.performance.measure("Emit","beforeEmit","afterEmit"),d}(Be,r,n,i,a,o,s)}))},getCurrentDirectory:function(){return Z},getNodeCount:function(){return Ge().getNodeCount()},getIdentifierCount:function(){return Ge().getIdentifierCount()},getSymbolCount:function(){return Ge().getSymbolCount()},getTypeCount:function(){return Ge().getTypeCount()},getRelationCacheSizes:function(){return Ge().getRelationCacheSizes()},getFileProcessingDiagnostics:function(){return B},getResolvedTypeReferenceDirectives:function(){return R},isSourceFileFromExternalLibrary:We,isSourceFileDefaultLibrary:function(t){if(t.hasNoDefaultLib)return!0;if(!F.noLib)return!1;var r=G.useCaseSensitiveFileNames()?e.equateStringsCaseSensitive:e.equateStringsCaseInsensitive;return F.lib?e.some(F.lib,(function(n){return r(t.fileName,e.combinePaths(Q,n))})):r(t.fileName,X())},dropDiagnosticsProducingTypeChecker:function(){h=void 0},getSourceFileFromReference:function(e,t){return dt(a(t.fileName,e.fileName),(function(e){return me.get(Ke(e))||void 0}))},getLibFileFromReference:function(t){var r=t.fileName.toLocaleLowerCase(),n=e.libMap.get(r);if(n)return Xe(e.combinePaths(Q,n))},sourceFileToPackageName:pe,redirectTargetsMap:fe,isEmittedFile:function(t){if(F.noEmit)return!1;var r=Ke(t);if(Qe(r))return!1;var n=F.outFile||F.out;if(n)return Gt(r,n)||Gt(r,e.removeFileExtension(n)+".d.ts");if(F.declarationDir&&e.containsPath(F.declarationDir,r,Z,!G.useCaseSensitiveFileNames()))return!0;if(F.outDir)return e.containsPath(F.outDir,r,Z,!G.useCaseSensitiveFileNames());if(e.fileExtensionIsOneOf(r,e.supportedJSExtensions)||e.fileExtensionIs(r,".d.ts")){var i=e.removeFileExtension(r);return!!Qe(i+".ts")||!!Qe(i+".tsx")}return!1},getConfigFileParsingDiagnostics:function(){return P||e.emptyArray},getResolvedModuleWithFailedLookupLocationsFromCache:function(t,r){return V&&e.resolveModuleNameFromCache(t,r,V)},getProjectReferences:function(){return w},getResolvedProjectReferences:function(){return se},getProjectReferenceRedirect:ht,getResolvedProjectReferenceToRedirect:xt,getResolvedProjectReferenceByPath:Ct,forEachResolvedProjectReference:Dt,isSourceOfProjectReferenceRedirect:Tt,emitBuildInfo:function(t){e.Debug.assert(!F.out&&!F.outFile),e.performance.mark("beforeEmit");var r=e.emitFiles(e.notImplementedResolver,Ve(t),void 0,e.noTransformers,!1,!0);return e.performance.mark("afterEmit"),e.performance.measure("Emit","beforeEmit","afterEmit"),r},getProbableSymlinks:Ht};return function(){F.strictPropertyInitialization&&!e.getStrictOptionValue(F,"strictNullChecks")&&Kt(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1,"strictPropertyInitialization","strictNullChecks");F.isolatedModules&&(F.out&&Kt(e.Diagnostics.Option_0_cannot_be_specified_with_option_1,"out","isolatedModules"),F.outFile&&Kt(e.Diagnostics.Option_0_cannot_be_specified_with_option_1,"outFile","isolatedModules"));F.inlineSourceMap&&(F.sourceMap&&Kt(e.Diagnostics.Option_0_cannot_be_specified_with_option_1,"sourceMap","inlineSourceMap"),F.mapRoot&&Kt(e.Diagnostics.Option_0_cannot_be_specified_with_option_1,"mapRoot","inlineSourceMap"));F.paths&&void 0===F.baseUrl&&Kt(e.Diagnostics.Option_paths_cannot_be_used_without_specifying_baseUrl_option,"paths");F.composite&&(!1===F.declaration&&Kt(e.Diagnostics.Composite_projects_may_not_disable_declaration_emit,"declaration"),!1===F.incremental&&Kt(e.Diagnostics.Composite_projects_may_not_disable_incremental_compilation,"declaration"));F.tsBuildInfoFile?e.isIncrementalCompilation(F)||Kt(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2,"tsBuildInfoFile","incremental","composite"):!F.incremental||F.outFile||F.out||F.configFilePath||$.add(e.createCompilerDiagnostic(e.Diagnostics.Option_incremental_can_only_be_specified_using_tsconfig_emitting_to_single_file_or_when_option_tsBuildInfoFile_is_specified));if(function(){var t=F.noEmit||F.suppressOutputPathCheck?void 0:e.getTsBuildInfoEmitOutputFilePath(F);Et(w,se,(function(r,n,i){var a=(i?i.commandLine.projectReferences:w)[n],o=i&&i.sourceFile;if(r){var s=r.commandLine.options;if(!s.composite)(i?i.commandLine.fileNames:A).length&&zt(o,n,e.Diagnostics.Referenced_project_0_must_have_setting_composite_Colon_true,a.path);if(a.prepend){var c=s.outFile||s.out;c?G.fileExists(c)||zt(o,n,e.Diagnostics.Output_file_0_from_project_1_does_not_exist,c,a.path):zt(o,n,e.Diagnostics.Cannot_prepend_project_0_because_it_does_not_have_outFile_set,a.path)}!i&&t&&t===e.getTsBuildInfoEmitOutputFilePath(s)&&(zt(o,n,e.Diagnostics.Cannot_write_file_0_because_it_will_overwrite_tsbuildinfo_file_generated_by_referenced_project_1,t,a.path),re.set(Ke(t),!0))}else zt(o,n,e.Diagnostics.File_0_not_found,a.path)}))}(),F.composite)for(var t=e.arrayToSet(A,Ke),r=0,n=m;r<n.length;r++){var i=n[r];Je(i)&&!t.has(i.path)&&Lt(i,t,e.Diagnostics.File_0_is_not_listed_within_the_file_list_of_project_1_Projects_must_list_all_files_or_use_an_include_pattern,i.fileName,F.configFilePath||"")}if(F.paths)for(var a in F.paths)if(e.hasProperty(F.paths,a))if(e.hasZeroOrOneAsteriskCharacter(a)||Bt(!0,a,e.Diagnostics.Pattern_0_can_have_at_most_one_Asterisk_character,a),e.isArray(F.paths[a])){var o=F.paths[a].length;0===o&&Bt(!1,a,e.Diagnostics.Substitutions_for_pattern_0_shouldn_t_be_an_empty_array,a);for(var s=0;s<o;s++){var c=F.paths[a][s],u=f(c);"string"===u?e.hasZeroOrOneAsteriskCharacter(c)||Rt(a,s,e.Diagnostics.Substitution_0_in_pattern_1_in_can_have_at_most_one_Asterisk_character,c,a):Rt(a,s,e.Diagnostics.Substitution_0_for_pattern_1_has_incorrect_type_expected_string_got_2,c,a,u)}}else Bt(!1,a,e.Diagnostics.Substitutions_for_pattern_0_should_be_an_array,a);F.sourceMap||F.inlineSourceMap||(F.inlineSources&&Kt(e.Diagnostics.Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided,"inlineSources"),F.sourceRoot&&Kt(e.Diagnostics.Option_0_can_only_be_used_when_either_option_inlineSourceMap_or_option_sourceMap_is_provided,"sourceRoot"));F.out&&F.outFile&&Kt(e.Diagnostics.Option_0_cannot_be_specified_with_option_1,"out","outFile");!F.mapRoot||F.sourceMap||F.declarationMap||Kt(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2,"mapRoot","sourceMap","declarationMap");F.declarationDir&&(e.getEmitDeclarations(F)||Kt(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2,"declarationDir","declaration","composite"),(F.out||F.outFile)&&Kt(e.Diagnostics.Option_0_cannot_be_specified_with_option_1,"declarationDir",F.out?"out":"outFile"));F.declarationMap&&!e.getEmitDeclarations(F)&&Kt(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2,"declarationMap","declaration","composite");F.lib&&F.noLib&&Kt(e.Diagnostics.Option_0_cannot_be_specified_with_option_1,"lib","noLib");F.noImplicitUseStrict&&e.getStrictOptionValue(F,"alwaysStrict")&&Kt(e.Diagnostics.Option_0_cannot_be_specified_with_option_1,"noImplicitUseStrict","alwaysStrict");var l=F.target||0,_=F.outFile||F.out,d=e.find(m,(function(t){return e.isExternalModule(t)&&!t.isDeclarationFile}));if(F.isolatedModules){F.module===e.ModuleKind.None&&l<2&&Kt(e.Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES2015_or_higher,"isolatedModules","target");var p=e.find(m,(function(t){return!e.isExternalModule(t)&&!e.isSourceFileJS(t)&&!t.isDeclarationFile&&6!==t.scriptKind}));if(p){var g=e.getErrorSpanForNode(p,p);$.add(e.createFileDiagnostic(p,g.start,g.length,e.Diagnostics.All_files_must_be_modules_when_the_isolatedModules_flag_is_provided))}}else if(d&&l<2&&F.module===e.ModuleKind.None){g=e.getErrorSpanForNode(d,d.externalModuleIndicator);$.add(e.createFileDiagnostic(d,g.start,g.length,e.Diagnostics.Cannot_use_imports_exports_or_module_augmentations_when_module_is_none))}if(_&&!F.emitDeclarationOnly)if(F.module&&F.module!==e.ModuleKind.AMD&&F.module!==e.ModuleKind.System)Kt(e.Diagnostics.Only_amd_and_system_modules_are_supported_alongside_0,F.out?"out":"outFile","module");else if(void 0===F.module&&d){g=e.getErrorSpanForNode(d,d.externalModuleIndicator);$.add(e.createFileDiagnostic(d,g.start,g.length,e.Diagnostics.Cannot_compile_modules_using_option_0_unless_the_module_flag_is_amd_or_system,F.out?"out":"outFile"))}F.resolveJsonModule&&(e.getEmitModuleResolutionKind(F)!==e.ModuleResolutionKind.NodeJs?Kt(e.Diagnostics.Option_resolveJsonModule_cannot_be_specified_without_node_module_resolution_strategy,"resolveJsonModule"):e.hasJsonModuleEmitEnabled(F)||Kt(e.Diagnostics.Option_resolveJsonModule_can_only_be_specified_when_module_code_generation_is_commonjs_amd_es2015_or_esNext,"resolveJsonModule","module"));if(F.outDir||F.sourceRoot||F.mapRoot){var y=ze();F.outDir&&""===y&&m.some((function(t){return e.getRootLength(t.fileName)>1}))&&Kt(e.Diagnostics.Cannot_find_the_common_subdirectory_path_for_the_input_files,"outDir")}F.useDefineForClassFields&&0===l&&Kt(e.Diagnostics.Option_0_cannot_be_specified_when_option_target_is_ES3,"useDefineForClassFields");F.checkJs&&!F.allowJs&&$.add(e.createCompilerDiagnostic(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1,"checkJs","allowJs"));F.emitDeclarationOnly&&(e.getEmitDeclarations(F)||Kt(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1_or_option_2,"emitDeclarationOnly","declaration","composite"),F.noEmit&&Kt(e.Diagnostics.Option_0_cannot_be_specified_with_option_1,"emitDeclarationOnly","noEmit"));F.emitDecoratorMetadata&&!F.experimentalDecorators&&Kt(e.Diagnostics.Option_0_cannot_be_specified_without_specifying_option_1,"emitDecoratorMetadata","experimentalDecorators");F.jsxFactory?(F.reactNamespace&&Kt(e.Diagnostics.Option_0_cannot_be_specified_with_option_1,"reactNamespace","jsxFactory"),e.parseIsolatedEntityName(F.jsxFactory,l)||Jt("jsxFactory",e.Diagnostics.Invalid_value_for_jsxFactory_0_is_not_a_valid_identifier_or_qualified_name,F.jsxFactory)):F.reactNamespace&&!e.isIdentifierText(F.reactNamespace,l)&&Jt("reactNamespace",e.Diagnostics.Invalid_value_for_reactNamespace_0_is_not_a_valid_identifier,F.reactNamespace);if(!F.noEmit&&!F.suppressOutputPathCheck){var h=Ve(),v=e.createMap();e.forEachEmittedFile(h,(function(e){F.emitDeclarationOnly||b(e.jsFilePath,v),b(e.declarationFilePath,v)}))}function b(t,r){if(t){var n=Ke(t);if(me.has(n)){var i=void 0;F.configFilePath||(i=e.chainDiagnosticMessages(void 0,e.Diagnostics.Adding_a_tsconfig_json_file_will_help_organize_projects_that_contain_both_TypeScript_and_JavaScript_files_Learn_more_at_https_Colon_Slash_Slashaka_ms_Slashtsconfig)),i=e.chainDiagnosticMessages(i,e.Diagnostics.Cannot_write_file_0_because_it_would_overwrite_input_file,t),Wt(t,e.createCompilerDiagnosticFromMessageChain(i))}var a=G.useCaseSensitiveFileNames()?n:n.toLocaleLowerCase();r.has(a)?Wt(t,e.createCompilerDiagnostic(e.Diagnostics.Cannot_write_file_0_because_it_would_be_overwritten_by_multiple_input_files,t)):r.set(a,!0)}}}(),e.performance.mark("afterProgram"),e.performance.measure("Program","beforeProgram","afterProgram"),Be;function je(t){if(e.containsPath(Q,t.fileName,!1)){var r=e.getBaseFileName(t.fileName);if("lib.d.ts"===r||"lib.es6.d.ts"===r)return 0;var n=e.removeSuffix(e.removePrefix(r,"lib."),".d.ts"),i=e.libs.indexOf(n);if(-1!==i)return i+1}return e.libs.length+2}function Ke(t){return e.toPath(t,Z,wt)}function Je(t){return e.sourceFileMayBeEmitted(t,F,We,xt)&&!Tt(t.fileName)}function ze(){if(void 0===y){var t=e.filter(m,(function(e){return Je(e)}));F.rootDir&&Ot(t,F.rootDir)?y=e.getNormalizedAbsolutePath(F.rootDir,Z):F.composite&&F.configFilePath?Ot(t,y=e.getDirectoryPath(e.normalizeSlashes(F.configFilePath))):(r=t,y=o(e.mapDefined(r,(function(e){return e.isDeclarationFile?void 0:e.fileName})),Z,wt)),y&&y[y.length-1]!==e.directorySeparator&&(y+=e.directorySeparator)}var r;return y}function Ue(t,r,n){if(0===_e&&!n.ambientModuleNames.length)return q(t,r,void 0,xt(n.originalFileName));var i,a,o,s=I&&I.getSourceFile(r);if(s!==n&&n.resolvedModules){for(var c=[],u=0,l=t;u<l.length;u++){var _=l[u],d=n.resolvedModules.get(_);c.push(d)}return c}for(var p={},f=0;f<t.length;f++){_=t[f];if(n===s&&!ne(s.path)){var m=s&&s.resolvedModules.get(_);if(m){e.isTraceEnabled(F,G)&&e.trace(G,e.Diagnostics.Reusing_resolution_of_module_0_to_file_1_from_old_program,_,r),(a||(a=new Array(t.length)))[f]=m,(o||(o=[])).push(_);continue}}var g=!1;e.contains(n.ambientModuleNames,_)?(g=!0,e.isTraceEnabled(F,G)&&e.trace(G,e.Diagnostics.Module_0_was_resolved_as_locally_declared_ambient_module_in_file_1,_,r)):g=v(_),g?(a||(a=new Array(t.length)))[f]=p:(i||(i=[])).push(_)}var y=i&&i.length?q(i,r,o,xt(n.originalFileName)):e.emptyArray;if(!a)return e.Debug.assert(y.length===t.length),y;var h=0;for(f=0;f<a.length;f++)a[f]?a[f]===p&&(a[f]=void 0):(a[f]=y[h],h++);return e.Debug.assert(h===y.length),a;function v(t){var r=e.getResolvedModule(s,t),n=r&&I.getSourceFile(r.resolvedFileName);if(r&&n)return!1;var i=O.get(t);return!!i&&(e.isTraceEnabled(F,G)&&e.trace(G,e.Diagnostics.Module_0_was_resolved_as_ambient_module_declared_in_1_since_this_file_was_not_modified,t,i),!0)}}function Ve(t){return r(r({getPrependNodes:qe,getCanonicalFileName:wt,getCommonSourceDirectory:Be.getCommonSourceDirectory,getCompilerOptions:Be.getCompilerOptions,getCurrentDirectory:function(){return Z},getNewLine:function(){return G.getNewLine()},getSourceFile:Be.getSourceFile,getSourceFileByPath:Be.getSourceFileByPath,getSourceFiles:Be.getSourceFiles,getLibFileFromReference:Be.getLibFileFromReference,isSourceFileFromExternalLibrary:We,getResolvedProjectReferenceToRedirect:xt,getProbableSymlinks:Ht,writeFile:t||function(e,t,r,n,i){return G.writeFile(e,t,r,n,i)},isEmitBlocked:Ye,readFile:function(e){return G.readFile(e)},fileExists:function(t){var r=Ke(t);return!!Qe(r)||!e.contains(oe,r)&&G.fileExists(t)}},G.directoryExists?{directoryExists:function(e){return G.directoryExists(e)}}:{}),{useCaseSensitiveFileNames:function(){return G.useCaseSensitiveFileNames()},getProgramBuildInfo:function(){return Be.getProgramBuildInfo&&Be.getProgramBuildInfo()},getSourceFileFromReference:function(e,t){return Be.getSourceFileFromReference(e,t)},redirectTargetsMap:fe})}function qe(){return E(w,(function(e,t){return se[t].commandLine}),(function(e){var t=Ke(e),r=Qe(t);return r?r.text:me.has(t)?void 0:G.readFile(t)}))}function We(e){return!!z.get(e.path)}function Ge(){return h||(h=e.createTypeChecker(Be,!0))}function He(){return v||(v=e.createTypeChecker(Be,!1))}function Ye(e){return re.has(Ke(e))}function Xe(e){return Qe(Ke(e))}function Qe(e){return me.get(e)||void 0}function $e(t,r,n){return t?r(t,n):e.sortAndDeduplicateDiagnostics(e.flatMap(Be.getSourceFiles(),(function(e){return n&&n.throwIfCancellationRequested(),r(e,n)})))}function Ze(t){return e.isSourceFileJS(t)?(t.additionalSyntacticDiagnostics||(t.additionalSyntacticDiagnostics=function(t){return et((function(){var r=[],n=t;return i(t),r;function i(t){switch(n.kind){case 155:case 158:case 160:if(n.questionToken===t)return void r.push(s(t,e.Diagnostics._0_can_only_be_used_in_a_ts_file,"?"));case 159:case 161:case 162:case 163:case 200:case 243:case 201:case 241:if(n.type===t)return void r.push(s(t,e.Diagnostics.types_can_only_be_used_in_a_ts_file))}switch(t.kind){case 252:return void r.push(s(t,e.Diagnostics.import_can_only_be_used_in_a_ts_file));case 258:if(t.isExportEquals)return void r.push(s(t,e.Diagnostics.export_can_only_be_used_in_a_ts_file));break;case 277:if(112===t.token)return void r.push(s(t,e.Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file));break;case 245:return void r.push(s(t,e.Diagnostics.interface_declarations_can_only_be_used_in_a_ts_file));case 248:return void r.push(s(t,e.Diagnostics.module_declarations_can_only_be_used_in_a_ts_file));case 246:return void r.push(s(t,e.Diagnostics.type_aliases_can_only_be_used_in_a_ts_file));case 247:return void r.push(s(t,e.Diagnostics.enum_declarations_can_only_be_used_in_a_ts_file));case 217:return void r.push(s(t,e.Diagnostics.non_null_assertions_can_only_be_used_in_a_ts_file));case 216:return void r.push(s(t.type,e.Diagnostics.type_assertion_expressions_can_only_be_used_in_a_ts_file));case 198:e.Debug.fail()}var o=n;n=t,e.forEachChild(t,i,a),n=o}function a(t){switch(n.decorators!==t||F.experimentalDecorators||r.push(s(n,e.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning)),n.kind){case 244:case 213:case 160:case 161:case 162:case 163:case 200:case 243:case 201:if(t===n.typeParameters)return void r.push(o(t,e.Diagnostics.type_parameter_declarations_can_only_be_used_in_a_ts_file));case 224:if(t===n.modifiers)return function(t,n){for(var i=0,a=t;i<a.length;i++){var o=a[i];switch(o.kind){case 80:if(n)continue;case 118:case 116:case 117:case 137:case 129:case 121:r.push(s(o,e.Diagnostics._0_can_only_be_used_in_a_ts_file,e.tokenToString(o.kind)))}}}(n.modifiers,224===n.kind);break;case 158:if(t===n.modifiers){for(var a=0,c=t;a<c.length;a++){var u=c[a];119!==u.kind&&r.push(s(u,e.Diagnostics._0_can_only_be_used_in_a_ts_file,e.tokenToString(u.kind)))}return}break;case 155:if(t===n.modifiers)return void r.push(o(t,e.Diagnostics.parameter_modifiers_can_only_be_used_in_a_ts_file));break;case 195:case 196:case 215:case 265:case 266:case 197:if(t===n.typeArguments)return void r.push(o(t,e.Diagnostics.type_arguments_can_only_be_used_in_a_ts_file))}for(var l=0,_=t;l<_.length;l++){i(_[l])}}function o(r,n,i,a,o){var s=r.pos;return e.createFileDiagnostic(t,s,r.end-s,n,i,a,o)}function s(r,n,i,a,o){return e.createDiagnosticForNodeInSourceFile(t,r,n,i,a,o)}}))}(t)),e.concatenate(t.additionalSyntacticDiagnostics,t.parseDiagnostics)):t.parseDiagnostics}function et(t){try{return t()}catch(t){throw t instanceof e.OperationCanceledException&&(v=void 0,h=void 0),t}}function tt(e,t){return ot(e,t,M,rt)}function rt(t,r){return et((function(){if(e.skipTypeChecking(t,F,Be))return e.emptyArray;var n=Ge();e.Debug.assert(!!t.bindDiagnostics);for(var i,a=e.isCheckJsEnabledForFile(t,F),o=!(!!t.checkJsDirective&&!1===t.checkJsDirective.enabled)&&(3===t.scriptKind||4===t.scriptKind||5===t.scriptKind||a||7===t.scriptKind),s=0,c=[o?t.bindDiagnostics:e.emptyArray,o?n.getDiagnostics(t,r):e.emptyArray,B.getDiagnostics(t.fileName),$.getDiagnostics(t.fileName),a?t.jsDocDiagnostics:void 0];s<c.length;s++){var u=c[s];if(u)for(var l=0,_=u;l<_.length;l++){var d=_[l];nt(d)&&(i=e.append(i,d))}}return i}))}function nt(t){var r=t.file,n=t.start;if(r)for(var a=e.getLineStarts(r),o=e.computeLineAndCharacterOfPosition(a,n).line;o>0;){var s=r.text.slice(a[o-1],a[o]),c=i.exec(s);if(!c)return!0;if(c[3])return!1;o--}return!0}function it(e,t){return ot(e,t,L,at)}function at(t,r){return et((function(){var n=Ge().getEmitResolver(t,r);return e.getDeclarationDiagnostics(Ve(e.noop),n,t)}))}function ot(t,r,n,i){var a=t?n.perFile&&n.perFile.get(t.path):n.allDiagnostics;if(a)return a;var o=i(t,r)||e.emptyArray;return t?(n.perFile||(n.perFile=e.createMap()),n.perFile.set(t.path,o)):n.allDiagnostics=o,o}function st(e,t){return e.isDeclarationFile?[]:it(e,t)}function ct(t,r,n){pt(e.normalizePath(t),r,n,void 0)}function ut(e,t){return e.fileName===t.fileName}function lt(e,t){return 75===e.kind?75===t.kind&&e.escapedText===t.escapedText:10===t.kind&&e.text===t.text}function _t(t){if(!t.imports){var r,n,i,a=e.isSourceFileJS(t),o=e.isExternalModule(t);if(F.importHelpers&&(F.isolatedModules||o)&&!t.isDeclarationFile){var s=e.createLiteral(e.externalHelpersModuleNameText),c=e.createImportDeclaration(void 0,void 0,void 0,s);e.addEmitFlags(c,67108864),s.parent=c,c.parent=t,r=[s]}for(var u=0,l=t.statements;u<l.length;u++){_(l[u],!1)}return(1048576&t.flags||a)&&function(t){var n=/import|require/g;for(;null!==n.exec(t.text);){var i=d(t,n.lastIndex);e.isRequireCall(i,!0)?r=e.append(r,i.arguments[0]):e.isImportCall(i)&&1===i.arguments.length&&e.isStringLiteralLike(i.arguments[0])?r=e.append(r,i.arguments[0]):e.isLiteralImportTypeNode(i)&&(r=e.append(r,i.argument.literal))}}(t),t.imports=r||e.emptyArray,t.moduleAugmentations=n||e.emptyArray,void(t.ambientModuleNames=i||e.emptyArray)}function _(a,s){if(e.isAnyImportOrReExport(a)){var c=e.getExternalModuleName(a);!(c&&e.isStringLiteral(c)&&c.text)||s&&e.isExternalModuleNameRelative(c.text)||(r=e.append(r,c))}else if(e.isModuleDeclaration(a)&&e.isAmbientModule(a)&&(s||e.hasModifier(a,2)||t.isDeclarationFile)){var u=e.getTextOfIdentifierOrLiteral(a.name);if(o||s&&!e.isExternalModuleNameRelative(u))(n||(n=[])).push(a.name);else if(!s){t.isDeclarationFile&&(i||(i=[])).push(u);var l=a.body;if(l)for(var d=0,p=l.statements;d<p.length;d++){_(p[d],!0)}}}}function d(t,r){for(var n=t,i=function(e){if(e.pos<=r&&(r<e.end||r===e.end&&1===e.kind))return e};;){var o=a&&e.hasJSDocNodes(n)&&e.forEach(n.jsDoc,i)||e.forEachChild(n,i);if(!o)return n;n=o}}}function dt(t,r,n,i){if(e.hasExtension(t)){if(!F.allowNonTsExtensions&&!e.forEach(te,(function(r){return e.fileExtensionIs(G.getCanonicalFileName(t),r)})))return void(n&&n(e.Diagnostics.File_0_has_unsupported_extension_The_only_supported_extensions_are_1,t,"'"+ee.join("', '")+"'"));var a=r(t);if(n)if(a)i&&G.getCanonicalFileName(t)===G.getCanonicalFileName(i.fileName)&&n(e.Diagnostics.A_file_cannot_have_a_reference_to_itself);else{var o=ht(t);o?n(e.Diagnostics.Output_file_0_has_not_been_built_from_source_file_1,o,t):n(e.Diagnostics.File_0_not_found,t)}return a}var s=F.allowNonTsExtensions&&r(t);if(s)return s;if(!n||!F.allowNonTsExtensions){var c=e.forEach(ee,(function(e){return r(t+e)}));return n&&!c&&n(e.Diagnostics.File_0_not_found,t+".ts"),c}n(e.Diagnostics.File_0_not_found,t)}function pt(e,r,n,i,a){dt(e,(function(e){return mt(e,Ke(e),r,n,a,i)}),(function(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return B.add(Pt.apply(void 0,t([a,e],r)))}),a&&a.file)}function ft(t,r,n){B.add(Pt(n,e.Diagnostics.File_name_0_differs_from_already_included_file_name_1_only_in_casing,t,r))}function mt(t,r,n,i,a,o){if(ye){var s=St(t);if(!s&&G.realpath&&F.preserveSymlinks&&e.isDeclarationFileName(t)&&e.stringContains(t,e.nodeModulesPathPart)){var c=G.realpath(t);c!==t&&(s=St(c))}if(s){var u=e.isString(s)?mt(s,Ke(s),n,i,a,o):void 0;return u&&yt(u,r,void 0),u}}var l,_=t;if(me.has(r)){var f=me.get(r);if(f&&F.forceConsistentCasingInFileNames){var m=t,g=f.fileName;Ke(g)!==Ke(m)&&(m=ht(t)||t),e.getNormalizedAbsolutePathWithoutRoot(g,Z)!==e.getNormalizedAbsolutePathWithoutRoot(m,Z)&&ft(m,g,a)}return f&&z.get(f.path)&&0===K?(z.set(f.path,!1),F.noResolve||(kt(f,n),Nt(f)),F.noLib||Ft(f),J.set(f.path,!1),It(f)):f&&J.get(f.path)&&K<j&&(J.set(f.path,!1),It(f)),gt(f||void 0,a),f||void 0}if(a&&!ye){var y=vt(t);if(y){if(y.commandLine.options.outFile||y.commandLine.options.out)return;var h=bt(y,t);t=h,l=Ke(h)}}var v=G.getSourceFile(t,F.target,(function(r){return B.add(Pt(a,e.Diagnostics.Cannot_read_file_0_Colon_1,t,r))}),he);if(o){var b=e.packageIdToString(o),x=de.get(b);if(x){var D=function(e,t,r,n,i,a){var o=Object.create(e);return o.fileName=r,o.path=n,o.resolvedPath=i,o.originalFileName=a,o.redirectInfo={redirectTarget:e,unredirected:t},z.set(n,K>0),Object.defineProperties(o,{id:{get:function(){return this.redirectInfo.redirectTarget.id},set:function(e){this.redirectInfo.redirectTarget.id=e}},symbol:{get:function(){return this.redirectInfo.redirectTarget.symbol},set:function(e){this.redirectInfo.redirectTarget.symbol=e}}}),o}(x,v,t,r,Ke(t),_);return fe.add(x.path,t),yt(D,r,l),pe.set(r,o.name),p.push(D),D}v&&(de.set(b,v),pe.set(r,o.name))}if(yt(v,r,l),v){if(z.set(r,K>0),v.path=r,v.resolvedPath=Ke(t),v.originalFileName=_,G.useCaseSensitiveFileNames()){var S=r.toLowerCase(),T=ge.get(S);T?ft(t,T.fileName,a):ge.set(S,v)}Y=Y||v.hasNoDefaultLib&&!i,F.noResolve||(kt(v,n),Nt(v)),F.noLib||Ft(v),It(v),n?d.push(v):p.push(v)}return gt(v,a),v}function gt(t,r){r&&t&&(x||(x=e.createMultiMap())).add(t.path,{kind:r.kind,index:r.index,file:r.file.path})}function yt(e,t,r){r?(me.set(r,e),me.set(t,e||!1)):me.set(t,e)}function ht(e){var t=vt(e);return t&&bt(t,e)}function vt(t){if(se&&se.length&&!e.fileExtensionIs(t,".d.ts"))return xt(t)}function bt(t,r){var n=t.commandLine.options.outFile||t.commandLine.options.out;return n?e.changeExtension(n,".d.ts"):e.getOutputDeclarationFileName(r,t.commandLine,!G.useCaseSensitiveFileNames())}function xt(t){void 0===ue&&(ue=e.createMap(),Dt((function(e,t){e&&Ke(F.configFilePath)!==t&&e.commandLine.fileNames.forEach((function(e){return ue.set(Ke(e),t)}))})));var r=ue.get(Ke(t));return r&&Ct(r)}function Dt(e){return Et(w,se,(function(t,r,n){var i=Ke(C((n?n.commandLine.projectReferences:w)[r]));return e(t,i)}))}function St(t){if(e.isDeclarationFileName(t))return void 0===le&&(le=e.createMap(),Dt((function(t){if(t){var r=t.commandLine.options.outFile||t.commandLine.options.out;if(r){var n=e.changeExtension(r,".d.ts");le.set(Ke(n),!0)}else e.forEach(t.commandLine.fileNames,(function(r){if(!e.fileExtensionIs(r,".d.ts")){var n=e.getOutputDeclarationFileName(r,t.commandLine,G.useCaseSensitiveFileNames());le.set(Ke(n),r)}}))}}))),le.get(Ke(t))}function Tt(e){return ye&&!!xt(e)}function Et(t,r,n,i){var a;return function t(r,n,i,o,s){if(s){var c=s(r,i);if(c)return c}return e.forEach(n,(function(r,n){if(!e.contains(a,r)){var c=o(r,n,i);if(c)return c;if(r)return(a||(a=[])).push(r),t(r.commandLine.projectReferences,r.references,r,o,s)}}))}(t,r,void 0,n,i)}function Ct(e){if(ce)return ce.get(e)||void 0}function kt(t,r){e.forEach(t.referencedFiles,(function(n,i){pt(a(n.fileName,t.originalFileName),r,!1,void 0,{kind:e.RefFileKind.ReferenceFile,index:i,file:t,pos:n.pos,end:n.end})}))}function Nt(t){var r=e.map(t.typeReferenceDirectives,(function(e){return e.fileName.toLocaleLowerCase()}));if(r)for(var n=W(r,t.originalFileName,xt(t.originalFileName)),i=0;i<r.length;i++){var a=t.typeReferenceDirectives[i],o=n[i],s=a.fileName.toLocaleLowerCase();e.setResolvedTypeReferenceDirective(t,s,o),At(s,o,{kind:e.RefFileKind.TypeReferenceDirective,index:i,file:t,pos:a.pos,end:a.end})}}function At(t,r,n){var i=R.get(t);if(!i||!i.primary){var a=!0;if(r){if(r.isExternalLibraryImport&&K++,r.primary)pt(r.resolvedFileName,!1,!1,r.packageId,n);else if(i){if(r.resolvedFileName!==i.resolvedFileName)G.readFile(r.resolvedFileName)!==Xe(i.resolvedFileName).text&&B.add(Pt(n,e.Diagnostics.Conflicting_definitions_for_0_found_at_1_and_2_Consider_installing_a_specific_version_of_this_library_to_resolve_the_conflict,t,r.resolvedFileName,i.resolvedFileName));a=!1}else pt(r.resolvedFileName,!1,!1,r.packageId,n);r.isExternalLibraryImport&&K--}else B.add(Pt(n,e.Diagnostics.Cannot_find_type_definition_file_for_0,t));a&&R.set(t,r)}}function Ft(t){e.forEach(t.libReferenceDirectives,(function(r){var n=r.fileName.toLocaleLowerCase(),i=e.libMap.get(n);if(i)ct(e.combinePaths(Q,i),!0,!0);else{var a=e.removeSuffix(e.removePrefix(n,"lib."),".d.ts"),o=e.getSpellingSuggestion(a,e.libs,e.identity),s=o?e.Diagnostics.Cannot_find_lib_definition_for_0_Did_you_mean_1:e.Diagnostics.Cannot_find_lib_definition_for_0;B.add(e.createFileDiagnostic(t,r.pos,r.end-r.pos,s,n,o))}}))}function Pt(r,n){for(var i=[],a=2;a<arguments.length;a++)i[a-2]=arguments[a];return r?e.createFileDiagnostic.apply(void 0,t([r.file,r.pos,r.end-r.pos,n],i)):e.createCompilerDiagnostic.apply(void 0,t([n],i))}function wt(e){return G.getCanonicalFileName(e)}function It(t){if(_t(t),t.imports.length||t.moduleAugmentations.length){var r=N(t),n=Ue(r,e.getNormalizedAbsolutePath(t.originalFileName,Z),t);e.Debug.assert(n.length===r.length);for(var i=0;i<r.length;i++){var a=n[i];if(e.setResolvedModule(t,r[i],a),a){var o=a.isExternalLibraryImport,s=!e.resolutionExtensionIsTSOrJson(a.extension),c=o&&s,u=a.resolvedFileName;o&&K++;var l=c&&K>j,_=u&&!k(F,a)&&!F.noResolve&&i<t.imports.length&&!l&&!(s&&!F.allowJs)&&(e.isInJSFile(t.imports[i])||!(4194304&t.imports[i].flags));if(l)J.set(t.path,!0);else if(_){var d=Ke(u),p=e.skipTrivia(t.text,t.imports[i].pos);mt(u,d,!1,!1,{kind:e.RefFileKind.Import,index:i,file:t,pos:p,end:t.imports[i].end},a.packageId)}o&&K--}}}else t.resolvedModules=void 0}function Ot(t,r){for(var n,i=!0,a=G.getCanonicalFileName(e.getNormalizedAbsolutePath(r,Z)),o=0,s=t;o<s.length;o++){var c=s[o];if(!c.isDeclarationFile)0!==G.getCanonicalFileName(e.getNormalizedAbsolutePath(c.fileName,Z)).indexOf(a)&&(n||(n=e.arrayToSet(A,Ke)),Lt(c,n,e.Diagnostics.File_0_is_not_under_rootDir_1_rootDir_is_expected_to_contain_all_source_files,c.fileName,r),i=!1)}return i}function Mt(t){ce||(ce=e.createMap());var r,n,i=C(t),a=Ke(i),o=ce.get(a);if(void 0!==o)return o||void 0;if(G.getParsedCommandLine){if(!(r=G.getParsedCommandLine(i)))return yt(void 0,a,void 0),void ce.set(a,!1);n=e.Debug.assertDefined(r.options.configFile),e.Debug.assert(!n.path||n.path===a),yt(n,a,void 0)}else{var s=e.getNormalizedAbsolutePath(e.getDirectoryPath(i),G.getCurrentDirectory());if(yt(n=G.getSourceFile(i,100),a,void 0),void 0===n)return void ce.set(a,!1);r=e.parseJsonSourceFileConfigFileContent(n,H,s,void 0,i)}n.path=a,n.resolvedPath=a,n.originalFileName=i;var c={commandLine:r,sourceFile:n};return ce.set(a,c),r.projectReferences&&(c.references=r.projectReferences.map(Mt)),c}function Lt(r,n,i){for(var a,o,s=[],c=3;c<arguments.length;c++)s[c-3]=arguments[c];var u=x&&x.get(r.path),l=e.forEach(u,(function(e){return n.has(e.file)?e:void 0}))||e.elementAt(u,0);if(l){var _=e.Debug.assertDefined(Qe(l.file)),d=l.kind,p=l.index,f=void 0,m=void 0;switch(d){case e.RefFileKind.Import:f=e.skipTrivia(_.text,_.imports[p].pos),m=_.imports[p].end;break;case e.RefFileKind.ReferenceFile:f=(a=_.referencedFiles[p]).pos,m=a.end;break;case e.RefFileKind.TypeReferenceDirective:f=(o=_.typeReferenceDirectives[p]).pos,m=o.end;break;default:return e.Debug.assertNever(d)}$.add(e.createFileDiagnostic.apply(void 0,t([_,f,m-f,i],s)))}else $.add(e.createCompilerDiagnostic.apply(void 0,t([i],s)))}function Rt(t,r,n,i,a,o){for(var s=!0,c=0,u=jt();c<u.length;c++){var l=u[c];if(e.isObjectLiteralExpression(l.initializer))for(var _=0,d=e.getPropertyAssignment(l.initializer,t);_<d.length;_++){var p=d[_].initializer;e.isArrayLiteralExpression(p)&&p.elements.length>r&&($.add(e.createDiagnosticForNodeInSourceFile(F.configFile,p.elements[r],n,i,a,o)),s=!1)}}s&&$.add(e.createCompilerDiagnostic(n,i,a,o))}function Bt(t,r,n,i){for(var a=!0,o=0,s=jt();o<s.length;o++){var c=s[o];e.isObjectLiteralExpression(c.initializer)&&qt(c.initializer,t,r,void 0,n,i)&&(a=!1)}a&&$.add(e.createCompilerDiagnostic(n,i))}function jt(){return function(t){var r=Vt();if(r)return e.getPropertyAssignment(r,t)}("paths")||e.emptyArray}function Kt(e,t,r,n){Ut(!0,t,r,e,t,r,n)}function Jt(e,t,r){Ut(!1,e,void 0,t,r)}function zt(t,r,n,i,a){var o=e.firstDefined(e.getTsConfigPropArray(t||F.configFile,"references"),(function(t){return e.isArrayLiteralExpression(t.initializer)?t.initializer:void 0}));o&&o.elements.length>r?$.add(e.createDiagnosticForNodeInSourceFile(t||F.configFile,o.elements[r],n,i,a)):$.add(e.createCompilerDiagnostic(n,i,a))}function Ut(t,r,n,i,a,o,s){var c=Vt();(!c||!qt(c,t,r,n,i,a,o,s))&&$.add(e.createCompilerDiagnostic(i,a,o,s))}function Vt(){if(void 0===U){U=null;var t=e.getTsConfigObjectLiteralExpression(F.configFile);if(t)for(var r=0,n=e.getPropertyAssignment(t,"compilerOptions");r<n.length;r++){var i=n[r];if(e.isObjectLiteralExpression(i.initializer)){U=i.initializer;break}}}return U}function qt(t,r,n,i,a,o,s,c){for(var u=e.getPropertyAssignment(t,n,i),l=0,_=u;l<_.length;l++){var d=_[l];$.add(e.createDiagnosticForNodeInSourceFile(F.configFile,r?d.name:d.initializer,a,o,s,c))}return!!u.length}function Wt(e,t){re.set(Ke(e),!0),$.add(t)}function Gt(t,r){return 0===e.comparePaths(t,r,Z,!G.useCaseSensitiveFileNames())}function Ht(){return G.getSymlinks?G.getSymlinks():g||(g=e.discoverProbableSymlinks(m,wt,G.getCurrentDirectory()))}},e.parseConfigHostFromCompilerHostLike=T,e.createPrependNodes=E,e.resolveProjectReferencePath=C,e.getResolutionDiagnostic=k}(s||(s={})),function(e){e.getFileEmitOutput=function(e,t,r,n,i,a){var o=[],s=e.emit(t,(function(e,t,r){o.push({name:e,writeByteOrderMark:r,text:t})}),n,r,i,a);return{outputFiles:o,emitSkipped:s.emitSkipped,exportedModulesFromDeclarationEmit:s.exportedModulesFromDeclarationEmit}},e.cloneMapOrUndefined=function(t){return t?e.cloneMap(t):void 0}}(s||(s={})),function(e){!function(t){function n(t){if(t.declarations&&t.declarations[0]){var r=e.getSourceFileOfNode(t.declarations[0]);return r&&r.resolvedPath}}function i(e,t){var r=e.getSymbolAtLocation(t);return r&&n(r)}function a(t,r,n,i){return e.toPath(t.getProjectReferenceRedirect(r)||r,n,i)}function o(t,r,n){var o;if(r.imports&&r.imports.length>0)for(var s=t.getTypeChecker(),c=0,u=r.imports;c<u.length;c++){var l=i(s,u[c]);l&&S(l)}var _=e.getDirectoryPath(r.path);if(r.referencedFiles&&r.referencedFiles.length>0)for(var d=0,p=r.referencedFiles;d<p.length;d++){var f=p[d];S(a(t,f.fileName,_,n))}if(r.resolvedTypeReferenceDirectiveNames&&r.resolvedTypeReferenceDirectiveNames.forEach((function(e){if(e){var r=e.resolvedFileName;S(a(t,r,_,n))}})),r.moduleAugmentations.length){s=t.getTypeChecker();for(var m=0,g=r.moduleAugmentations;m<g.length;m++){var y=g[m];if(e.isStringLiteral(y)){var h=s.getSymbolAtLocation(y);h&&D(h)}}}for(var v=0,b=t.getTypeChecker().getAmbientModules();v<b.length;v++){var x=b[v];x.declarations.length>1&&D(x)}return o;function D(t){for(var n=0,i=t.declarations;n<i.length;n++){var a=i[n],o=e.getSourceFileOfNode(a);o&&o!==r&&S(o.resolvedPath)}}function S(t){o||(o=e.createMap()),o.set(t,!0)}}function s(e,t){return t&&!t.referencedMap==!e}function c(e,t){t.forEach((function(t,r){e.fileInfos.get(r).signature=t,e.hasCalledUpdateShapeSignature.set(r,!0)}))}function u(t,r,i,a,o,s,c){if(e.Debug.assert(!!i),e.Debug.assert(!c||!!t.exportedModulesMap,"Compute visible to outside map only if visibleToOutsideReferencedMap present in the state"),t.hasCalledUpdateShapeSignature.has(i.path)||a.has(i.path))return!1;var u=t.fileInfos.get(i.path);if(!u)return e.Debug.fail();var l,_=u.signature;if(i.isDeclarationFile){if(l=i.version,c&&l!==_){var d=t.referencedMap?t.referencedMap.get(i.path):void 0;c.set(i.path,d||!1)}}else{var p=e.getFileEmitOutput(r,i,!0,o,void 0,!0),f=p.outputFiles&&r.getCompilerOptions().declarationMap?p.outputFiles.length>1?p.outputFiles[1]:void 0:p.outputFiles.length>0?p.outputFiles[0]:void 0;f?(e.Debug.assert(e.fileExtensionIs(f.name,".d.ts"),"File extension for signature expected to be dts",(function(){return"Found: "+e.getAnyExtensionFromPath(f.name)+" for "+f.name+":: All output files: "+JSON.stringify(p.outputFiles.map((function(e){return e.name})))})),l=s(f.text),c&&l!==_&&function(t,r,i){if(!r)return void i.set(t.path,!1);var a;r.forEach((function(t){var r;(r=n(t))&&(a||(a=e.createMap()),a.set(r,!0))})),i.set(t.path,a||!1)}(i,p.exportedModulesFromDeclarationEmit,c)):l=_}return a.set(i.path,l),!_||l!==_}function l(t,r){if(!t.allFileNames){var n=r.getSourceFiles();t.allFileNames=n===e.emptyArray?e.emptyArray:n.map((function(e){return e.fileName}))}return t.allFileNames}function _(t,r){return e.arrayFrom(e.mapDefinedIterator(t.referencedMap.entries(),(function(e){var t=e[0];return e[1].has(r)?t:void 0})))}function d(t){return function(t){return e.some(t.moduleAugmentations,(function(t){return e.isGlobalScopeAugmentation(t.parent)}))}(t)||!e.isExternalModule(t)&&!function(t){for(var r=0,n=t.statements;r<n.length;r++){var i=n[r];if(!e.isModuleWithStringLiteralName(i))return!1}return!0}(t)}function p(t,r,n){if(t.allFilesExcludingDefaultLibraryFile)return t.allFilesExcludingDefaultLibraryFile;var i;c(n);for(var a=0,o=r.getSourceFiles();a<o.length;a++){var s=o[a];s!==n&&c(s)}return t.allFilesExcludingDefaultLibraryFile=i||e.emptyArray,t.allFilesExcludingDefaultLibraryFile;function c(e){r.isSourceFileDefaultLibrary(e)||(i||(i=[])).push(e)}}function f(e,t,r){var n=t.getCompilerOptions();return n&&(n.out||n.outFile)?[r]:p(e,t,r)}function m(t,r,n,i,a,o,s){if(d(n))return p(t,r,n);var c=r.getCompilerOptions();if(c&&(c.isolatedModules||c.out||c.outFile))return[n];var l=e.createMap();l.set(n.path,n);for(var f=_(t,n.resolvedPath);f.length>0;){var m=f.pop();if(!l.has(m)){var g=r.getSourceFileByPath(m);l.set(m,g),g&&u(t,r,g,i,a,o,s)&&f.push.apply(f,_(t,g.resolvedPath))}}return e.arrayFrom(e.mapDefinedIterator(l.values(),(function(e){return e})))}t.canReuseOldState=s,t.create=function(t,r,n){for(var i=e.createMap(),a=t.getCompilerOptions().module!==e.ModuleKind.None?e.createMap():void 0,c=a?e.createMap():void 0,u=e.createMap(),l=s(a,n),_=0,d=t.getSourceFiles();_<d.length;_++){var p=d[_],f=e.Debug.assertDefined(p.version,"Program intended to be used with Builder should have source files with versions set"),m=l?n.fileInfos.get(p.path):void 0;if(a){var g=o(t,p,r);if(g&&a.set(p.path,g),l){var y=n.exportedModulesMap.get(p.path);y&&c.set(p.path,y)}}i.set(p.path,{version:f,signature:m&&m.signature})}return{fileInfos:i,referencedMap:a,exportedModulesMap:c,hasCalledUpdateShapeSignature:u}},t.releaseCache=function(e){e.allFilesExcludingDefaultLibraryFile=void 0,e.allFileNames=void 0},t.clone=function(t){var n=e.createMap();return t.fileInfos.forEach((function(e,t){n.set(t,r({},e))})),{fileInfos:n,referencedMap:e.cloneMapOrUndefined(t.referencedMap),exportedModulesMap:e.cloneMapOrUndefined(t.exportedModulesMap),hasCalledUpdateShapeSignature:e.cloneMap(t.hasCalledUpdateShapeSignature)}},t.getFilesAffectedBy=function(t,r,n,i,a,o,s){var l=o||e.createMap(),_=r.getSourceFileByPath(n);if(!_)return e.emptyArray;if(!u(t,r,_,l,i,a,s))return[_];var d=(t.referencedMap?m:f)(t,r,_,l,i,a,s);return o||c(t,l),d},t.updateSignaturesFromCache=c,t.updateShapeSignature=u,t.updateExportedFilesMapFromCache=function(t,r){r&&(e.Debug.assert(!!t.exportedModulesMap),r.forEach((function(e,r){e?t.exportedModulesMap.set(r,e):t.exportedModulesMap.delete(r)})))},t.getAllDependencies=function(t,r,n){var i=r.getCompilerOptions();if(i.outFile||i.out)return l(t,r);if(!t.referencedMap||d(n))return l(t,r);for(var a=e.createMap(),o=[n.path];o.length;){var s=o.pop();if(!a.has(s)){a.set(s,!0);var c=t.referencedMap.get(s);if(c)for(var u=c.keys(),_=u.next();!_.done;_=u.next())o.push(_.value)}}return e.arrayFrom(e.mapDefinedIterator(a.keys(),(function(e){var t=r.getSourceFileByPath(e);return t?t.fileName:e})))},t.getReferencedByPaths=_}(e.BuilderState||(e.BuilderState={}))}(s||(s={})),function(e){var t;function n(t,r,n){var a=e.BuilderState.create(t,r,n);a.program=t;var o=t.getCompilerOptions();a.compilerOptions=o,o.outFile||o.out||(a.semanticDiagnosticsPerFile=e.createMap()),a.changedFilesSet=e.createMap();var s=e.BuilderState.canReuseOldState(a.referencedMap,n),c=s?n.compilerOptions:void 0,u=s&&n.semanticDiagnosticsPerFile&&!!a.semanticDiagnosticsPerFile&&!e.compilerOptionsAffectSemanticDiagnostics(o,c);if(s){if(!n.currentChangedFilePath){var l=n.currentAffectedFilesSignatures;e.Debug.assert(!(n.affectedFiles||l&&l.size),"Cannot reuse if only few affected files of currentChangedFile were iterated")}var _=n.changedFilesSet;u&&e.Debug.assert(!_||!e.forEachKey(_,(function(e){return n.semanticDiagnosticsPerFile.has(e)})),"Semantic diagnostics shouldnt be available for changed files"),_&&e.copyEntries(_,a.changedFilesSet),o.outFile||o.out||!n.affectedFilesPendingEmit||(a.affectedFilesPendingEmit=n.affectedFilesPendingEmit.slice(),a.affectedFilesPendingEmitKind=e.cloneMapOrUndefined(n.affectedFilesPendingEmitKind),a.affectedFilesPendingEmitIndex=n.affectedFilesPendingEmitIndex)}var d=a.referencedMap,p=s?n.referencedMap:void 0,f=u&&!o.skipLibCheck==!c.skipLibCheck,m=f&&!o.skipDefaultLibCheck==!c.skipDefaultLibCheck;return a.fileInfos.forEach((function(o,c){var l,_,g,y;if(!s||!(l=n.fileInfos.get(c))||l.version!==o.version||(g=_=d&&d.get(c),y=p&&p.get(c),g!==y&&(void 0===g||void 0===y||g.size!==y.size||e.forEachKey(g,(function(e){return!y.has(e)}))))||_&&e.forEachKey(_,(function(e){return!a.fileInfos.has(e)&&n.fileInfos.has(e)})))a.changedFilesSet.set(c,!0);else if(u){var h=t.getSourceFileByPath(c);if(h.isDeclarationFile&&!f)return;if(h.hasNoDefaultLib&&!m)return;var v=n.semanticDiagnosticsPerFile.get(c);v&&(a.semanticDiagnosticsPerFile.set(c,n.hasReusableDiagnostic?function(t,r,n){if(!t.length)return e.emptyArray;var a=e.getDirectoryPath(e.getNormalizedAbsolutePath(e.getTsBuildInfoEmitOutputFilePath(r.getCompilerOptions()),r.getCurrentDirectory()));return t.map((function(t){var n=i(t,r,o);n.reportsUnnecessary=t.reportsUnnecessary,n.source=t.source;var a=t.relatedInformation;return n.relatedInformation=a?a.length?a.map((function(e){return i(e,r,o)})):e.emptyArray:void 0,n}));function o(t){return e.toPath(t,a,n)}}(v,t,r):v),a.semanticDiagnosticsFromOldState||(a.semanticDiagnosticsFromOldState=e.createMap()),a.semanticDiagnosticsFromOldState.set(c,!0))}})),c&&e.compilerOptionsAffectEmit(o,c)&&(t.getSourceFiles().forEach((function(e){return v(a,e.path,1)})),e.Debug.assert(void 0===a.seenAffectedFiles),a.seenAffectedFiles=e.createMap()),a.emittedBuildInfo=!a.changedFilesSet.size&&!a.affectedFilesPendingEmit,a}function i(e,t,n){var i=e.file;return r(r({},e),{file:i?t.getSourceFileByPath(n(i)):void 0})}function a(t,r){e.Debug.assert(!r||!t.affectedFiles||t.affectedFiles[t.affectedFilesIndex-1]!==r||!t.semanticDiagnosticsPerFile.has(r.path))}function o(t,r,n){for(;;){var i=t.affectedFiles;if(i){for(var a=t.seenAffectedFiles,o=t.affectedFilesIndex;o<i.length;){var c=i[o];if(!a.has(c.path))return t.affectedFilesIndex=o,s(t,c,r,n),c;o++}t.changedFilesSet.delete(t.currentChangedFilePath),t.currentChangedFilePath=void 0,e.BuilderState.updateSignaturesFromCache(t,t.currentAffectedFilesSignatures),t.currentAffectedFilesSignatures.clear(),e.BuilderState.updateExportedFilesMapFromCache(t,t.currentAffectedFilesExportedModulesMap),t.affectedFiles=void 0}var u=t.changedFilesSet.keys().next();if(u.done)return;var l=e.Debug.assertDefined(t.program),_=l.getCompilerOptions();if(_.outFile||_.out)return e.Debug.assert(!t.semanticDiagnosticsPerFile),l;t.currentAffectedFilesSignatures=t.currentAffectedFilesSignatures||e.createMap(),t.exportedModulesMap&&(t.currentAffectedFilesExportedModulesMap=t.currentAffectedFilesExportedModulesMap||e.createMap()),t.affectedFiles=e.BuilderState.getFilesAffectedBy(t,l,u.value,r,n,t.currentAffectedFilesSignatures,t.currentAffectedFilesExportedModulesMap),t.currentChangedFilePath=u.value,t.affectedFilesIndex=0,t.seenAffectedFiles=t.seenAffectedFiles||e.createMap()}}function s(t,r,n,i){if(c(t,r.path),t.allFilesExcludingDefaultLibraryFile!==t.affectedFiles)!function(t,r,n){if(!t.exportedModulesMap||!t.changedFilesSet.has(r.path))return;if(!u(t,r.path))return;if(t.compilerOptions.isolatedModules){var i=e.createMap();i.set(r.path,!0);for(var a=e.BuilderState.getReferencedByPaths(t,r.resolvedPath);a.length>0;){var o=a.pop();if(!i.has(o))if(i.set(o,!0),n(t,o)&&u(t,o)){var s=e.Debug.assertDefined(t.program).getSourceFileByPath(o);a.push.apply(a,e.BuilderState.getReferencedByPaths(t,s.resolvedPath))}}}e.Debug.assert(!!t.currentAffectedFilesExportedModulesMap);var c=e.createMap();if(e.forEachEntry(t.currentAffectedFilesExportedModulesMap,(function(e,i){return e&&e.has(r.path)&&l(t,i,c,n)})))return;e.forEachEntry(t.exportedModulesMap,(function(e,i){return!t.currentAffectedFilesExportedModulesMap.has(i)&&e.has(r.path)&&l(t,i,c,n)}))}(t,r,(function(t,r){return function(t,r,n,i){if(c(t,r),!t.changedFilesSet.has(r)){var a=e.Debug.assertDefined(t.program),o=a.getSourceFileByPath(r);o&&(e.BuilderState.updateShapeSignature(t,a,o,e.Debug.assertDefined(t.currentAffectedFilesSignatures),n,i,t.currentAffectedFilesExportedModulesMap),e.getEmitDeclarations(t.compilerOptions)&&v(t,r,0))}return!1}(t,r,n,i)}));else if(!t.cleanedDiagnosticsOfLibFiles){t.cleanedDiagnosticsOfLibFiles=!0;var a=e.Debug.assertDefined(t.program),o=a.getCompilerOptions();e.forEach(a.getSourceFiles(),(function(r){return a.isSourceFileDefaultLibrary(r)&&!e.skipTypeChecking(r,o,a)&&c(t,r.path)}))}}function c(e,t){return!e.semanticDiagnosticsFromOldState||(e.semanticDiagnosticsFromOldState.delete(t),e.semanticDiagnosticsPerFile.delete(t),!e.semanticDiagnosticsFromOldState.size)}function u(t,r){return e.Debug.assertDefined(t.currentAffectedFilesSignatures).get(r)!==e.Debug.assertDefined(t.fileInfos.get(r)).signature}function l(t,r,n,i){return e.forEachEntry(t.referencedMap,(function(a,o){return a.has(r)&&function t(r,n,i,a){if(!e.addToSeen(i,n))return!1;if(a(r,n))return!0;e.Debug.assert(!!r.currentAffectedFilesExportedModulesMap);if(e.forEachEntry(r.currentAffectedFilesExportedModulesMap,(function(e,o){return e&&e.has(n)&&t(r,o,i,a)})))return!0;if(e.forEachEntry(r.exportedModulesMap,(function(e,o){return!r.currentAffectedFilesExportedModulesMap.has(o)&&e.has(n)&&t(r,o,i,a)})))return!0;return!!e.forEachEntry(r.referencedMap,(function(e,t){return e.has(n)&&!i.has(t)&&a(r,t)}))}(t,o,n,i)}))}function _(t,r,n,i,a){a?t.emittedBuildInfo=!0:r===t.program?(t.changedFilesSet.clear(),t.programEmitComplete=!0):(t.seenAffectedFiles.set(r.path,!0),void 0!==n&&(t.seenEmittedFiles||(t.seenEmittedFiles=e.createMap())).set(r.path,n),i?t.affectedFilesPendingEmitIndex++:t.affectedFilesIndex++)}function d(e,t,r){return _(e,r),{result:t,affected:r}}function p(e,t,r,n,i,a){return _(e,r,n,i,a),{result:t,affected:r}}function f(t,r,n){var i=r.path;if(t.semanticDiagnosticsPerFile){var a=t.semanticDiagnosticsPerFile.get(i);if(a)return a}var o=e.Debug.assertDefined(t.program).getSemanticDiagnostics(r,n);return t.semanticDiagnosticsPerFile&&t.semanticDiagnosticsPerFile.set(i,o),o}function m(t,r){var n={},i=e.getOptionNameMap().optionNameMap;for(var a in t)e.hasProperty(t,a)&&(n[a]=g(i.get(a.toLowerCase()),t[a],r));return n.configFilePath&&(n.configFilePath=r(n.configFilePath)),n}function g(e,t,r){if(e)if("list"===e.type){var n=t;if(e.element.isFilePath&&n.length)return n.map(r)}else if(e.isFilePath)return r(t);return t}function y(t,r){return e.Debug.assert(!!t.length),t.map((function(t){var n=h(t,r);n.reportsUnnecessary=t.reportsUnnecessary,n.source=t.source;var i=t.relatedInformation;return n.relatedInformation=i?i.length?i.map((function(e){return h(e,r)})):e.emptyArray:void 0,n}))}function h(e,t){var n=e.file;return r(r({},e),{file:n?t(n.path):void 0})}function v(t,r,n){t.affectedFilesPendingEmit||(t.affectedFilesPendingEmit=[]),t.affectedFilesPendingEmitKind||(t.affectedFilesPendingEmitKind=e.createMap());var i=t.affectedFilesPendingEmitKind.get(r);t.affectedFilesPendingEmit.push(r),t.affectedFilesPendingEmitKind.set(r,i||n),void 0===t.affectedFilesPendingEmitIndex&&(t.affectedFilesPendingEmitIndex=0)}function b(t,r){if(t){var n=e.createMap();for(var i in t)e.hasProperty(t,i)&&n.set(r(i),e.arrayToSet(t[i],r));return n}}function x(t,r){return{getState:e.notImplemented,backupState:e.noop,restoreState:e.noop,getProgram:n,getProgramOrUndefined:function(){return t.program},releaseProgram:function(){return t.program=void 0},getCompilerOptions:function(){return t.compilerOptions},getSourceFile:function(e){return n().getSourceFile(e)},getSourceFiles:function(){return n().getSourceFiles()},getOptionsDiagnostics:function(e){return n().getOptionsDiagnostics(e)},getGlobalDiagnostics:function(e){return n().getGlobalDiagnostics(e)},getConfigFileParsingDiagnostics:function(){return r},getSyntacticDiagnostics:function(e,t){return n().getSyntacticDiagnostics(e,t)},getDeclarationDiagnostics:function(e,t){return n().getDeclarationDiagnostics(e,t)},getSemanticDiagnostics:function(e,t){return n().getSemanticDiagnostics(e,t)},emit:function(e,t,r,i,a){return n().emit(e,t,r,i,a)},getAllDependencies:e.notImplemented,getCurrentDirectory:function(){return n().getCurrentDirectory()}};function n(){return e.Debug.assertDefined(t.program)}}!function(e){e[e.DtsOnly=0]="DtsOnly",e[e.Full=1]="Full"}(e.BuilderFileEmit||(e.BuilderFileEmit={})),function(e){e[e.SemanticDiagnosticsBuilderProgram=0]="SemanticDiagnosticsBuilderProgram",e[e.EmitAndSemanticDiagnosticsBuilderProgram=1]="EmitAndSemanticDiagnosticsBuilderProgram"}(t=e.BuilderProgramKind||(e.BuilderProgramKind={})),e.getBuilderCreationParameters=function(t,r,n,i,a,o){var s,c,u;return void 0===t?(e.Debug.assert(void 0===r),s=n,u=i,e.Debug.assert(!!u),c=u.getProgram()):e.isArray(t)?(u=i,c=e.createProgram({rootNames:t,options:r,host:n,oldProgram:u&&u.getProgramOrUndefined(),configFileParsingDiagnostics:a,projectReferences:o}),s=n):(c=t,s=r,u=n,a=i),{host:s,newProgram:c,oldProgram:u,configFileParsingDiagnostics:a||e.emptyArray}},e.createBuilderProgram=function(r,i){var s=i.newProgram,c=i.host,u=i.oldProgram,l=i.configFileParsingDiagnostics,g=u&&u.getState();if(g&&s===g.program&&l===s.getConfigFileParsingDiagnostics())return s=void 0,g=void 0,u;var h,b=e.createGetCanonicalFileName(c.useCaseSensitiveFileNames()),D=c.createHash||e.generateDjb2Hash,S=n(s,b,g);s.getProgramBuildInfo=function(){return function(t,r){if(!t.compilerOptions.outFile&&!t.compilerOptions.out){var n=e.Debug.assertDefined(t.program).getCurrentDirectory(),i=e.getDirectoryPath(e.getNormalizedAbsolutePath(e.getTsBuildInfoEmitOutputFilePath(t.compilerOptions),n)),a={};t.fileInfos.forEach((function(e,r){var n=t.currentAffectedFilesSignatures&&t.currentAffectedFilesSignatures.get(r);a[l(r)]=void 0===n?e:{version:e.version,signature:n}}));var o={fileInfos:a,options:m(t.compilerOptions,(function(t){return l(e.getNormalizedAbsolutePath(t,n))}))};if(t.referencedMap){var s={};t.referencedMap.forEach((function(t,r){s[l(r)]=e.arrayFrom(t.keys(),l)})),o.referencedMap=s}if(t.exportedModulesMap){var c={};t.exportedModulesMap.forEach((function(r,n){var i=t.currentAffectedFilesExportedModulesMap&&t.currentAffectedFilesExportedModulesMap.get(n);void 0===i?c[l(n)]=e.arrayFrom(r.keys(),l):i&&(c[l(n)]=e.arrayFrom(i.keys(),l))})),o.exportedModulesMap=c}if(t.semanticDiagnosticsPerFile){var u=[];t.semanticDiagnosticsPerFile.forEach((function(e,r){return u.push(e.length?[l(r),t.hasReusableDiagnostic?e:y(e,l)]:l(r))})),o.semanticDiagnosticsPerFile=u}return o}function l(t){return e.ensurePathIsNonModuleName(e.getRelativePathFromDirectory(i,t,r))}}(S,b)},s=void 0,u=void 0,g=void 0;var T=x(S,l);return T.getState=function(){return S},T.backupState=function(){e.Debug.assert(void 0===h),h=function(t){var r=e.BuilderState.clone(t);return r.semanticDiagnosticsPerFile=e.cloneMapOrUndefined(t.semanticDiagnosticsPerFile),r.changedFilesSet=e.cloneMap(t.changedFilesSet),r.affectedFiles=t.affectedFiles,r.affectedFilesIndex=t.affectedFilesIndex,r.currentChangedFilePath=t.currentChangedFilePath,r.currentAffectedFilesSignatures=e.cloneMapOrUndefined(t.currentAffectedFilesSignatures),r.currentAffectedFilesExportedModulesMap=e.cloneMapOrUndefined(t.currentAffectedFilesExportedModulesMap),r.seenAffectedFiles=e.cloneMapOrUndefined(t.seenAffectedFiles),r.cleanedDiagnosticsOfLibFiles=t.cleanedDiagnosticsOfLibFiles,r.semanticDiagnosticsFromOldState=e.cloneMapOrUndefined(t.semanticDiagnosticsFromOldState),r.program=t.program,r.compilerOptions=t.compilerOptions,r.affectedFilesPendingEmit=t.affectedFilesPendingEmit&&t.affectedFilesPendingEmit.slice(),r.affectedFilesPendingEmitKind=e.cloneMapOrUndefined(t.affectedFilesPendingEmitKind),r.affectedFilesPendingEmitIndex=t.affectedFilesPendingEmitIndex,r.seenEmittedFiles=e.cloneMapOrUndefined(t.seenEmittedFiles),r.programEmitComplete=t.programEmitComplete,r}(S)},T.restoreState=function(){S=e.Debug.assertDefined(h),h=void 0},T.getAllDependencies=function(t){return e.BuilderState.getAllDependencies(S,e.Debug.assertDefined(S.program),t)},T.getSemanticDiagnostics=function(t,r){a(S,t);var n,i=e.Debug.assertDefined(S.program).getCompilerOptions();if(i.outFile||i.out)return e.Debug.assert(!S.semanticDiagnosticsPerFile),e.Debug.assertDefined(S.program).getSemanticDiagnostics(t,r);if(t)return f(S,t,r);for(;C(r););for(var o=0,s=e.Debug.assertDefined(S.program).getSourceFiles();o<s.length;o++){var c=s[o];n=e.addRange(n,f(S,c,r))}return n||e.emptyArray},T.emit=function(n,i,o,s,u){if(r===t.EmitAndSemanticDiagnosticsBuilderProgram&&(a(S,n),!n)){for(var l=[],_=!1,d=void 0,p=[],f=void 0;f=E(i,o,s,u);)_=_||f.result.emitSkipped,d=e.addRange(d,f.result.diagnostics),p=e.addRange(p,f.result.emittedFiles),l=e.addRange(l,f.result.sourceMaps);return{emitSkipped:_,diagnostics:d||e.emptyArray,emittedFiles:p,sourceMaps:l}}return e.Debug.assertDefined(S.program).emit(n,i||e.maybeBind(c,c.writeFile),o,s,u)},T.releaseProgram=function(){!function(t){e.BuilderState.releaseCache(t),t.program=void 0}(S),h=void 0},r===t.SemanticDiagnosticsBuilderProgram?T.getSemanticDiagnosticsOfNextAffectedFile=C:r===t.EmitAndSemanticDiagnosticsBuilderProgram?(T.getSemanticDiagnosticsOfNextAffectedFile=C,T.emitNextAffectedFile=E):e.notImplemented(),T;function E(t,r,n,i){var a=o(S,r,D),s=1,u=!1;if(!a)if(S.compilerOptions.out||S.compilerOptions.outFile){var l=e.Debug.assertDefined(S.program);if(S.programEmitComplete||!e.some(l.getProjectReferences(),(function(e){return!!e.prepend})))return void(S.programEmitComplete=!0);a=l}else{var _=function(t){var r=t.affectedFilesPendingEmit;if(r){for(var n=t.seenEmittedFiles||(t.seenEmittedFiles=e.createMap()),i=t.affectedFilesPendingEmitIndex;i<r.length;i++){var a=e.Debug.assertDefined(t.program).getSourceFileByPath(r[i]);if(a){var o=n.get(a.path),s=e.Debug.assertDefined(e.Debug.assertDefined(t.affectedFilesPendingEmitKind).get(a.path));if(void 0===o||o<s)return t.affectedFilesPendingEmitIndex=i,{affectedFile:a,emitKind:s}}}t.affectedFilesPendingEmit=void 0,t.affectedFilesPendingEmitKind=void 0,t.affectedFilesPendingEmitIndex=void 0}}(S);if(!_){if(S.emittedBuildInfo)return;var d=e.Debug.assertDefined(S.program);return p(S,d.emitBuildInfo(t||e.maybeBind(c,c.writeFile),r),d,1,!1,!0)}a=_.affectedFile,s=_.emitKind,u=!0}return p(S,e.Debug.assertDefined(S.program).emit(a===S.program?void 0:a,t||e.maybeBind(c,c.writeFile),r,n||0===s,i),a,s,u)}function C(e,n){for(;;){var i=o(S,e,D);if(!i)return;if(i===S.program)return d(S,S.program.getSemanticDiagnostics(void 0,e),i);if(r===t.EmitAndSemanticDiagnosticsBuilderProgram&&v(S,i.path,1),!n||!n(i))return d(S,f(S,i,e),i);_(S,i)}}},e.createBuildProgramUsingProgramBuildInfo=function(t,r,n){var i=e.getDirectoryPath(e.getNormalizedAbsolutePath(r,n.getCurrentDirectory())),a=e.createGetCanonicalFileName(n.useCaseSensitiveFileNames()),o=e.createMap();for(var s in t.fileInfos)e.hasProperty(t.fileInfos,s)&&o.set(u(s),t.fileInfos[s]);var c={fileInfos:o,compilerOptions:e.convertToOptionsWithAbsolutePaths(t.options,(function(t){return e.getNormalizedAbsolutePath(t,i)})),referencedMap:b(t.referencedMap,u),exportedModulesMap:b(t.exportedModulesMap,u),semanticDiagnosticsPerFile:t.semanticDiagnosticsPerFile&&e.arrayToMap(t.semanticDiagnosticsPerFile,(function(t){return u(e.isString(t)?t:t[0])}),(function(t){return e.isString(t)?e.emptyArray:t[1]})),hasReusableDiagnostic:!0};return{getState:function(){return c},backupState:e.noop,restoreState:e.noop,getProgram:e.notImplemented,getProgramOrUndefined:e.returnUndefined,releaseProgram:e.noop,getCompilerOptions:function(){return c.compilerOptions},getSourceFile:e.notImplemented,getSourceFiles:e.notImplemented,getOptionsDiagnostics:e.notImplemented,getGlobalDiagnostics:e.notImplemented,getConfigFileParsingDiagnostics:e.notImplemented,getSyntacticDiagnostics:e.notImplemented,getDeclarationDiagnostics:e.notImplemented,getSemanticDiagnostics:e.notImplemented,emit:e.notImplemented,getAllDependencies:e.notImplemented,getCurrentDirectory:e.notImplemented,emitNextAffectedFile:e.notImplemented,getSemanticDiagnosticsOfNextAffectedFile:e.notImplemented};function u(t){return e.toPath(t,i,a)}},e.createRedirectedBuilderProgram=x}(s||(s={})),function(e){e.createSemanticDiagnosticsBuilderProgram=function(t,r,n,i,a,o){return e.createBuilderProgram(e.BuilderProgramKind.SemanticDiagnosticsBuilderProgram,e.getBuilderCreationParameters(t,r,n,i,a,o))},e.createEmitAndSemanticDiagnosticsBuilderProgram=function(t,r,n,i,a,o){return e.createBuilderProgram(e.BuilderProgramKind.EmitAndSemanticDiagnosticsBuilderProgram,e.getBuilderCreationParameters(t,r,n,i,a,o))},e.createAbstractBuilder=function(t,r,n,i,a,o){var s=e.getBuilderCreationParameters(t,r,n,i,a,o),c=s.newProgram,u=s.configFileParsingDiagnostics;return e.createRedirectedBuilderProgram({program:c,compilerOptions:c.getCompilerOptions()},u)}}(s||(s={})),function(e){function t(t){return e.some(e.ignoredPaths,(function(r){return e.stringContains(t,r)}))}function r(t){var r=e.getRootLength(t);if(t.length===r)return!1;var n=t.indexOf(e.directorySeparator,r);if(-1===n)return!1;var i=t.substring(r,n+1),a=r>1||47!==t.charCodeAt(0);if(a&&0!==t.search(/[a-zA-Z]:/)&&0===i.search(/[a-zA-z]\$\//)){if(-1===(n=t.indexOf(e.directorySeparator,n+1)))return!1;i=t.substring(r+i.length,n+1)}if(a&&0!==i.search(/users\//i))return!0;for(var o=n+1,s=2;s>0;s--)if(0===(o=t.indexOf(e.directorySeparator,o)+1))return!1;return!0}e.isPathIgnored=t,e.canWatchDirectory=r,e.maxNumberOfFilesToIterateForInvalidation=256,e.createResolutionCache=function(n,i,a){var o,s,c,u=!1,l=e.createMultiMap(),_=e.memoize((function(){return n.getCurrentDirectory()})),d=n.getCachedDirectoryStructureHost(),p=e.createMap(),f=e.createCacheWithRedirects(),m=e.createCacheWithRedirects(),g=e.createModuleResolutionCacheWithMaps(f,m,_(),n.getCanonicalFileName),y=e.createMap(),h=e.createCacheWithRedirects(),v=[".ts",".tsx",".js",".jsx",".json"],b=e.createMap(),x=e.createMap(),D=i&&e.removeTrailingDirectorySeparator(e.getNormalizedAbsolutePath(i,_())),S=D&&n.toPath(D),T=e.createMap();return{startRecordingFilesWithChangedResolutions:function(){o=[]},finishRecordingFilesWithChangedResolutions:function(){var e=o;return o=void 0,e},startCachingPerDirectoryResolution:A,finishCachingPerDirectoryResolution:function(){u=!1,c=void 0,A(),x.forEach((function(e,t){0===e.refCount&&(x.delete(t),e.watcher.close())}))},resolveModuleNames:function(t,r,n,i){return P(t,r,i,p,f,F,E,(function(t){return!t.resolvedModule||!e.resolutionExtensionIsTSOrJson(t.resolvedModule.extension)}),n,a)},getResolvedModuleWithFailedLookupLocationsFromCache:function(e,t){var r=p.get(n.toPath(t));return r&&r.get(e)},resolveTypeReferenceDirectives:function(t,r,n){return P(t,r,n,y,h,e.resolveTypeReferenceDirective,C,(function(e){return void 0===e.resolvedTypeReferenceDirective}),void 0,!1)},removeResolutionsFromProjectReferenceRedirects:function(t){if(!e.fileExtensionIs(t,".json"))return;var r=n.getCurrentProgram();if(!r)return;var i=r.getResolvedProjectReferenceByPath(t);if(!i)return;i.commandLine.fileNames.forEach((function(e){return W(n.toPath(e))}))},removeResolutionsOfFile:W,invalidateResolutionOfFile:function(e){W(e),H((function(t,r){var i=r(t);return!!i&&n.toPath(i.resolvedFileName)===e}))},setFilesWithInvalidatedNonRelativeUnresolvedImports:function(t){e.Debug.assert(c===t||void 0===c),c=t},createHasInvalidatedResolution:function(t){if(u||t)return s=void 0,e.returnTrue;var r=s;return s=void 0,function(e){return!!r&&r.has(e)||N(e)}},updateTypeRootsWatch:function(){var t=n.getCompilationSettings();if(t.types)return void X();var r=e.getEffectiveTypeRoots(t,{directoryExists:$,getCurrentDirectory:_});r?e.mutateMap(T,e.arrayToMap(r,(function(e){return n.toPath(e)})),{createNewValue:Q,onDeleteValue:e.closeFileWatcher}):X()},closeTypeRootsWatch:X,clear:function(){e.clearMap(x,e.closeFileWatcherOf),b.clear(),l.clear(),X(),p.clear(),y.clear(),u=!1,A()}};function E(e){return e.resolvedModule}function C(e){return e.resolvedTypeReferenceDirective}function k(t,r){return!(void 0===t||r.length<=t.length)&&(e.startsWith(r,t)&&r[t.length]===e.directorySeparator)}function N(e){if(!c)return!1;var t=c.get(e);return!!t&&!!t.length}function A(){f.clear(),m.clear(),h.clear(),l.forEach(K),l.clear()}function F(t,r,i,a,o){var s=e.resolveModuleName(t,r,i,a,g,o);if(!n.getGlobalCache)return s;var c=n.getGlobalCache();if(!(void 0===c||e.isExternalModuleNameRelative(t)||s.resolvedModule&&e.extensionIsTS(s.resolvedModule.extension))){var u=e.loadModuleFromGlobalCache(e.Debug.assertDefined(n.globalCacheResolutionModuleName)(t),n.projectName,i,a,c),l=u.resolvedModule,_=u.failedLookupLocations;if(l)return{resolvedModule:l,failedLookupLocations:e.addRange(s.failedLookupLocations,_)}}return s}function P(t,r,i,a,s,c,l,_,d,p){var f=n.toPath(r),m=a.get(f)||a.set(f,e.createMap()).get(f),g=e.getDirectoryPath(f),y=s.getOrCreateMapOfCacheRedirects(i),h=y.get(g);h||(h=e.createMap(),y.set(g,h));for(var v=[],b=n.getCompilationSettings(),x=p&&N(f),D=n.getCurrentProgram(),S=D&&D.getResolvedProjectReferenceToRedirect(r),T=S?!i||i.sourceFile.path!==S.sourceFile.path:!!i,E=e.createMap(),C=0,k=t;C<k.length;C++){var A=k[C],F=m.get(A);if(!E.has(A)&&u||T||!F||F.isInvalidated||x&&!e.isExternalModuleNameRelative(A)&&_(F)){var P=F,w=h.get(A);w?F=w:(F=c(A,r,b,n,i),h.set(A,F)),m.set(A,F),R(A,F),P&&z(P),p&&o&&!I(P,F)&&(o.push(f),p=!1)}e.Debug.assert(void 0!==F&&!F.isInvalidated),E.set(A,!0),v.push(l(F))}return m.forEach((function(t,r){E.has(r)||e.contains(d,r)||(z(t),m.delete(r))})),v;function I(e,t){if(e===t)return!0;if(!e||!t)return!1;var r=l(e),n=l(t);return r===n||!(!r||!n)&&r.resolvedFileName===n.resolvedFileName}}function w(t){return e.endsWith(t,"/node_modules")}function I(t){return e.endsWith(t,"/node_modules/@types")}function O(t,r){if(k(S,r)){t=e.isRootedDiskPath(t)?e.normalizePath(t):e.getNormalizedAbsolutePath(t,_()),e.Debug.assert(t.length===r.length,"FailedLookup: "+t+" failedLookupLocationPath: "+r);var n=r.indexOf(e.directorySeparator,S.length+1);return-1!==n?{dir:t.substr(0,n),dirPath:r.substr(0,n)}:{dir:D,dirPath:S,nonRecursive:!1}}return M(e.getDirectoryPath(e.getNormalizedAbsolutePath(t,_())),e.getDirectoryPath(r))}function M(t,n){for(;e.pathContainsNodeModules(n);)t=e.getDirectoryPath(t),n=e.getDirectoryPath(n);if(w(n))return r(e.getDirectoryPath(n))?{dir:t,dirPath:n}:void 0;var i,a,o=!0;if(void 0!==S)for(;!k(n,S);){var s=e.getDirectoryPath(n);if(s===n)break;o=!1,i=n,a=t,n=s,t=e.getDirectoryPath(t)}return r(n)?{dir:a||t,dirPath:i||n,nonRecursive:o}:void 0}function L(t){return e.fileExtensionIsOneOf(t,v)}function R(t,r){r.failedLookupLocations&&r.failedLookupLocations.length&&(r.refCount?r.refCount++:(r.refCount=1,e.isExternalModuleNameRelative(t)?B(r):l.add(t,r)))}function B(t){e.Debug.assert(!!t.refCount);for(var r=!1,i=0,a=t.failedLookupLocations;i<a.length;i++){var o=a[i],s=n.toPath(o),c=O(o,s);if(c){var u=c.dir,l=c.dirPath,_=c.nonRecursive;if(!L(s)){var d=b.get(s)||0;b.set(s,d+1)}l===S?(e.Debug.assert(!_),r=!0):J(u,l,_)}}r&&J(D,S,!0)}function j(e){e.refCount=void 0}function K(e,t){var r=n.getCurrentProgram(),i=r&&r.getTypeChecker().tryFindAmbientModuleWithoutAugmentations(t)?j:B;e.forEach(i)}function J(t,r,n){var i=x.get(r);i?(e.Debug.assert(!!n==!!i.nonRecursive),i.refCount++):x.set(r,{watcher:V(t,r,n),refCount:1,nonRecursive:n})}function z(t){if(t.refCount&&(t.refCount--,!t.refCount)){for(var r=!1,i=0,a=t.failedLookupLocations;i<a.length;i++){var o=a[i],s=n.toPath(o),c=O(o,s);if(c){var u=c.dirPath,l=b.get(s);l&&(1===l?b.delete(s):(e.Debug.assert(l>1),b.set(s,l-1))),u===S?r=!0:U(u)}}r&&U(S)}}function U(e){x.get(e).refCount--}function V(e,t,r){return n.watchDirectoryOfFailedLookupLocation(e,(function(e){var r=n.toPath(e);d&&d.addOrDeleteFileOrDirectory(e,r),!u&&Y(r,t===r)&&n.onInvalidatedResolution()}),r?0:1)}function q(e,t){var r=e.get(t);r&&(r.forEach(z),e.delete(t))}function W(e){q(p,e),q(y,e)}function G(t,r,i){var a=e.createMap();t.forEach((function(t,o){var c=e.getDirectoryPath(o),u=a.get(c);u||(u=e.createMap(),a.set(c,u)),t.forEach((function(t,a){u.has(a)||(u.set(a,!0),!t.isInvalidated&&r(t,i)&&(t.isInvalidated=!0,(s||(s=e.createMap())).set(o,!0),o.endsWith(e.inferredTypesContainingFile)&&n.onChangedAutomaticTypeDirectiveNames()))}))}))}function H(t){var r;(r=n.maxNumberOfFilesToIterateForInvalidation||e.maxNumberOfFilesToIterateForInvalidation,p.size>r||y.size>r)?u=!0:(G(p,t,E),G(y,t,C))}function Y(r,i){var a;if(i)a=function(e){return k(r,n.toPath(e))};else{if(t(r))return!1;if(n.fileIsOpen(r))return!1;var o=e.getDirectoryPath(r);if(I(r)||w(r)||I(o)||w(o))a=function(t){return n.toPath(t)===r||e.startsWith(n.toPath(t),r)};else{if(!L(r)&&!b.has(r))return!1;if(e.isEmittedFileOfProgram(n.getCurrentProgram(),r))return!1;a=function(e){return n.toPath(e)===r}}}var c=s&&s.size;return H((function(t){return e.some(t.failedLookupLocations,a)})),u||s&&s.size!==c}function X(){e.clearMap(T,e.closeFileWatcher)}function Q(e,t){return n.watchTypeRootsDirectory(t,(function(r){var i=n.toPath(r);d&&d.addOrDeleteFileOrDirectory(r,i),n.onChangedAutomaticTypeDirectiveNames();var a=function(e,t){if(!u){if(k(S,t))return S;var r=M(e,t);return r&&x.has(r.dirPath)?r.dirPath:void 0}}(t,e);a&&Y(i,a===i)&&n.onInvalidatedResolution()}),1)}function $(t){var i=e.getDirectoryPath(e.getDirectoryPath(t)),a=n.toPath(i);return a===S||r(a)}}}(s||(s={})),function(e){!function(r){var n,i;function a(t,r,n){var i=t.importModuleSpecifierPreference,a=t.importModuleSpecifierEnding;return{relativePreference:"relative"===i?0:"non-relative"===i?1:2,ending:function(){switch(a){case"minimal":return 0;case"index":return 1;case"js":return 2;default:return function(t){var r=t.imports;return e.firstDefined(r,(function(t){var r=t.text;return e.pathIsRelative(r)?e.hasJSOrJsonFileExtension(r):void 0}))||!1}(n)?2:e.getEmitModuleResolutionKind(r)!==e.ModuleResolutionKind.NodeJs?1:0}}()}}function o(t,r,n,i,a,o,u){var l=s(r,i),_=d(a,r,n,l.getCanonicalFileName,i,o);return e.firstDefined(_,(function(e){return f(e,l,i,t)}))||c(n,l,t,u)}function s(t,r){return{getCanonicalFileName:e.createGetCanonicalFileName(!r.useCaseSensitiveFileNames||r.useCaseSensitiveFileNames()),sourceDirectory:e.getDirectoryPath(t)}}function c(t,r,n,i){var a=r.getCanonicalFileName,o=r.sourceDirectory,s=i.ending,c=i.relativePreference,l=n.baseUrl,_=n.paths,d=n.rootDirs,f=d&&function(t,r,n,i,a,o){var s=m(r,t,i);if(void 0===s)return;var c=m(n,t,i),u=void 0!==c?e.ensurePathIsNonModuleName(e.getRelativePathFromDirectory(c,s,i)):s;return e.getEmitModuleResolutionKind(o)===e.ModuleResolutionKind.NodeJs?g(u,a,o):e.removeFileExtension(u)}(d,t,o,a,s,n)||g(e.ensurePathIsNonModuleName(e.getRelativePathFromDirectory(o,t,a)),s,n);if(!l||0===c)return f;var v=y(t,l,a);if(!v)return f;var b=g(v,s,n),x=_&&p(e.removeFileExtension(v),b,_),D=void 0===x?b:x;return 1===c?D:(2!==c&&e.Debug.assertNever(c),h(D)||u(f)<u(D)?f:D)}function u(t){for(var r=0,n=e.startsWith(t,"./")?2:0;n<t.length;n++)47===t.charCodeAt(n)&&r++;return r}function l(e){var t=e.match(/\//g);return t?t.length:0}function _(t,r){return e.compareValues(l(t),l(r))}function d(r,n,i,a,o,s){var c=s.get(i),u=c?t(c,[i]):[i],l=o.getCurrentDirectory?o.getCurrentDirectory():"",d=u.map((function(t){return e.getNormalizedAbsolutePath(t,l)})),p=o.getProbableSymlinks?o.getProbableSymlinks(r):e.discoverProbableSymlinks(r,a,l),f=[],m=!o.useCaseSensitiveFileNames||o.useCaseSensitiveFileNames()?e.compareStringsCaseSensitive:e.compareStringsCaseInsensitive;if(p.forEach((function(t,r){if(!e.startsWithDirectory(n,t,a)){var i=e.find(d,(function(e){return 0===m(e.slice(0,t.length+1),t+"/")}));if(void 0!==i){var s=e.getRelativePathFromDirectory(t,i,a),c=e.resolvePath(r,s);o.fileExists&&!o.fileExists(c)||f.push(c)}}})),f.push.apply(f,d),f.length<2)return f;for(var g=e.arrayToMap(f,e.identity,a),y=[],h=function(t){var r,n=e.ensureTrailingDirectorySeparator(t);g.forEach((function(t,i){e.startsWith(t,n)&&((r||(r=[])).push(i),g.delete(i))})),r&&(r.length>1&&r.sort(_),y.push.apply(y,r))},v=e.getDirectoryPath(e.toPath(n,l,a));0!==g.size;v=e.getDirectoryPath(v))h(v);return y}function p(t,r,n){for(var i in n)for(var a=0,o=n[i];a<o.length;a++){var s=o[a],c=e.removeFileExtension(e.normalizePath(s)),u=c.indexOf("*");if(-1!==u){var l=c.substr(0,u),_=c.substr(u+1);if(r.length>=l.length+_.length&&e.startsWith(r,l)&&e.endsWith(r,_)||!_&&r===e.removeTrailingDirectorySeparator(l)){var d=r.substr(l.length,r.length-_.length);return i.replace("*",d)}}else if(c===r||c===t)return i}}function f(t,r,n,i,a){var o=r.getCanonicalFileName,s=r.sourceDirectory;if(n.fileExists&&n.readFile){var c=function(t){var r,n,i=0,a=0,o=0;!function(e){e[e.BeforeNodeModules=0]="BeforeNodeModules",e[e.NodeModules=1]="NodeModules",e[e.Scope=2]="Scope",e[e.PackageContent=3]="PackageContent"}(n||(n={}));var s=0,c=0,u=0;for(;c>=0;)switch(s=c,c=t.indexOf("/",s+1),u){case 0:t.indexOf(e.nodeModulesPathPart,s)===s&&(i=s,a=c,u=1);break;case 1:case 2:1===u&&"@"===t.charAt(s+1)?u=2:(o=c,u=3);break;case 3:u=t.indexOf(e.nodeModulesPathPart,s)===s?1:3}return r=s,u>1?{topLevelNodeModulesIndex:i,topLevelPackageNameIndex:a,packageRootIndex:o,fileNameIndex:r}:void 0}(t);if(c){var u,l=t.substring(0,c.packageRootIndex);if(!a){var _=e.combinePaths(l,"package.json"),d=(u=n.fileExists(_)?JSON.parse(n.readFile(_)):void 0)&&u.typesVersions?e.getPackageJsonTypesVersionsPaths(u.typesVersions):void 0;if(d){var f=t.slice(c.packageRootIndex+1),m=p(e.removeFileExtension(f),g(f,0,i),d.paths);void 0!==m&&(t=e.combinePaths(t.slice(0,c.packageRootIndex),m))}}var y=a?t:function(t){if(u){var r=u.typings||u.types||u.main;if(r){var i=e.toPath(r,l,o);if(e.removeFileExtension(i)===e.removeFileExtension(o(t)))return l}}var a=e.removeFileExtension(t);if("/index"===o(a.substring(c.fileNameIndex))&&!function(t,r){if(!t.fileExists)return;for(var n=e.getSupportedExtensions({allowJs:!0},[{extension:"node",isMixedContent:!1},{extension:"json",isMixedContent:!1,scriptKind:6}]),i=0,a=n;i<a.length;i++){var o=a[i],s=r+o;if(t.fileExists(s))return s}}(n,a.substring(0,c.fileNameIndex)))return a.substring(0,c.fileNameIndex);return a}(t),h=n.getGlobalTypingsCacheLocation&&n.getGlobalTypingsCacheLocation(),v=o(y.substring(0,c.topLevelNodeModulesIndex));if(e.startsWith(s,v)||h&&e.startsWith(o(h),v)){var b=y.substring(c.topLevelPackageNameIndex+1),x=e.getPackageNameFromTypesPackageName(b);return e.getEmitModuleResolutionKind(i)!==e.ModuleResolutionKind.NodeJs&&x===b?void 0:x}}}}function m(t,r,n){return e.firstDefined(r,(function(e){var r=y(t,e,n);return h(r)?void 0:r}))}function g(t,r,n){if(e.fileExtensionIs(t,".json"))return t;var i=e.removeFileExtension(t);switch(r){case 0:return e.removeSuffix(i,"/index");case 1:return i;case 2:return i+function(t,r){var n=e.extensionFromPath(t);switch(n){case".ts":case".d.ts":return".js";case".tsx":return 1===r.jsx?".jsx":".js";case".js":case".jsx":case".json":return n;case".tsbuildinfo":return e.Debug.fail("Extension .tsbuildinfo is unsupported:: FileName:: "+t);default:return e.Debug.assertNever(n)}}(t,n);default:return e.Debug.assertNever(r)}}function y(t,r,n){var i=e.getRelativePathToDirectoryOrUrl(r,t,r,n,!1);return e.isRootedDiskPath(i)?void 0:i}function h(t){return e.startsWith(t,"..")}!function(e){e[e.Relative=0]="Relative",e[e.NonRelative=1]="NonRelative",e[e.Auto=2]="Auto"}(n||(n={})),function(e){e[e.Minimal=0]="Minimal",e[e.Index=1]="Index",e[e.JsExtension=2]="JsExtension"}(i||(i={})),r.updateModuleSpecifier=function(t,r,n,i,a,s,c){var u=o(t,r,n,i,a,s,function(t,r){return{relativePreference:e.isExternalModuleNameRelative(r)?0:1,ending:e.hasJSOrJsonFileExtension(r)?2:e.getEmitModuleResolutionKind(t)!==e.ModuleResolutionKind.NodeJs||e.endsWith(r,"index")?1:0}}(t,c));if(u!==c)return u},r.getModuleSpecifier=function(e,t,r,n,i,s,c,u){return void 0===c&&(c={}),o(e,r,n,i,s,u,a(c,e,t))},r.getNodeModulesPackageName=function(t,r,n,i,a,o){var c=s(r,i),u=d(a,r,n,c.getCanonicalFileName,i,o);return e.firstDefined(u,(function(e){return f(e,c,i,t,!0)}))},r.getModuleSpecifiers=function(t,r,n,i,o,u,l){var _=function(t){var r=e.find(t.declarations,(function(t){return e.isNonGlobalAmbientModule(t)&&(!e.isExternalModuleAugmentation(t)||!e.isExternalModuleNameRelative(e.getTextOfIdentifierOrLiteral(t.name)))}));if(r)return r.name.text}(t);if(_)return[_];var p=s(n.path,i),m=e.getSourceFileOfNode(t.valueDeclaration||e.getNonAugmentationDeclaration(t)),g=d(o,n.path,m.originalFileName,p.getCanonicalFileName,i,l),y=a(u,r,n),h=e.mapDefined(g,(function(e){return f(e,p,i,r)}));return h.length?h:g.map((function(e){return c(e,p,r,y)}))},r.countPathComponents=u}(e.moduleSpecifiers||(e.moduleSpecifiers={}))}(s||(s={})),function(e){var r=e.sys?{getCurrentDirectory:function(){return e.sys.getCurrentDirectory()},getNewLine:function(){return e.sys.newLine},getCanonicalFileName:e.createGetCanonicalFileName(e.sys.useCaseSensitiveFileNames)}:void 0;function n(t,n){var i=t===e.sys?r:{getCurrentDirectory:function(){return t.getCurrentDirectory()},getNewLine:function(){return t.newLine},getCanonicalFileName:e.createGetCanonicalFileName(t.useCaseSensitiveFileNames)};if(!n)return function(r){return t.write(e.formatDiagnostic(r,i))};var a=new Array(1);return function(r){a[0]=r,t.write(e.formatDiagnosticsWithColorAndContext(a,i)+i.getNewLine()),a[0]=void 0}}function i(t,r,n){return!(!t.clearScreen||n.preserveWatchOutput||n.extendedDiagnostics||n.diagnostics||!e.contains(e.screenStartingMessageCodes,r.code))&&(t.clearScreen(),!0)}function a(e){return e.now?e.now().toLocaleTimeString("en-US",{timeZone:"UTC"}):(new Date).toLocaleTimeString()}function o(t,r){return r?function(r,n,o){i(t,r,o);var s="["+e.formatColorAndReset(a(t),e.ForegroundColorEscapeSequences.Grey)+"] ";s+=""+e.flattenDiagnosticMessageText(r.messageText,t.newLine)+(n+n),t.write(s)}:function(r,n,o){var s="";i(t,r,o)||(s+=n),s+=a(t)+" - ",s+=""+e.flattenDiagnosticMessageText(r.messageText,t.newLine)+function(t,r){return e.contains(e.screenStartingMessageCodes,t.code)?r+r:r}(r,n),t.write(s)}}function s(t){return e.countWhere(t,(function(t){return t.category===e.DiagnosticCategory.Error}))}function c(t){return 1===t?e.Diagnostics.Found_1_error_Watching_for_file_changes:e.Diagnostics.Found_0_errors_Watching_for_file_changes}function u(t,r){if(0===t)return"";var n=e.createCompilerDiagnostic(1===t?e.Diagnostics.Found_1_error:e.Diagnostics.Found_0_errors,t);return""+r+e.flattenDiagnosticMessageText(n.messageText,r)+r+r}function l(t,r){(t.getCompilerOptions().listFiles||t.getCompilerOptions().listFilesOnly)&&e.forEach(t.getSourceFiles(),(function(e){r(e.fileName)}))}function _(t,r,n,i,a,o,c,u){var _=!!t.getCompilerOptions().listFilesOnly,d=t.getConfigFileParsingDiagnostics().slice(),p=d.length;e.addRange(d,t.getSyntacticDiagnostics(void 0,o)),d.length===p&&(e.addRange(d,t.getOptionsDiagnostics(o)),_||(e.addRange(d,t.getGlobalDiagnostics(o)),d.length===p&&e.addRange(d,t.getSemanticDiagnostics(void 0,o))));var f=_?{emitSkipped:!0,diagnostics:e.emptyArray}:t.emit(void 0,a,o,c,u),m=f.emittedFiles,g=f.diagnostics;if(e.addRange(d,g),e.sortAndDeduplicateDiagnostics(d).forEach(r),n){var y=t.getCurrentDirectory();e.forEach(m,(function(t){var r=e.getNormalizedAbsolutePath(t,y);n("TSFILE: "+r)})),l(t,n)}return i&&i(s(d)),{emitResult:f,diagnostics:d}}function d(t,r,n,i,a,o,s,c){var u=_(t,r,n,i,a,o,s,c),l=u.emitResult,d=u.diagnostics;return l.emitSkipped&&d.length>0?e.ExitStatus.DiagnosticsPresent_OutputsSkipped:d.length>0?e.ExitStatus.DiagnosticsPresent_OutputsGenerated:e.ExitStatus.Success}function p(t,r){return void 0===t&&(t=e.sys),{onWatchStatusChange:r||o(t),watchFile:e.maybeBind(t,t.watchFile)||function(){return e.noopFileWatcher},watchDirectory:e.maybeBind(t,t.watchDirectory)||function(){return e.noopFileWatcher},setTimeout:e.maybeBind(t,t.setTimeout)||e.noop,clearTimeout:e.maybeBind(t,t.clearTimeout)||e.noop}}function f(t,r){var n=e.memoize((function(){return e.getDirectoryPath(e.normalizePath(t.getExecutingFilePath()))}));return{useCaseSensitiveFileNames:function(){return t.useCaseSensitiveFileNames},getNewLine:function(){return t.newLine},getCurrentDirectory:e.memoize((function(){return t.getCurrentDirectory()})),getDefaultLibLocation:n,getDefaultLibFileName:function(t){return e.combinePaths(n(),e.getDefaultLibFileName(t))},fileExists:function(e){return t.fileExists(e)},readFile:function(e,r){return t.readFile(e,r)},directoryExists:function(e){return t.directoryExists(e)},getDirectories:function(e){return t.getDirectories(e)},readDirectory:function(e,r,n,i,a){return t.readDirectory(e,r,n,i,a)},realpath:e.maybeBind(t,t.realpath),getEnvironmentVariable:e.maybeBind(t,t.getEnvironmentVariable),trace:function(e){return t.write(e+t.newLine)},createDirectory:function(e){return t.createDirectory(e)},writeFile:function(e,r,n){return t.writeFile(e,r,n)},onCachedDirectoryStructureHostCreate:function(e){return e||t},createHash:e.maybeBind(t,t.createHash),createProgram:r||e.createEmitAndSemanticDiagnosticsBuilderProgram}}function m(t,r,n,i){void 0===t&&(t=e.sys);var a=function(e){return t.write(e+t.newLine)},o=f(t,r);return e.copyProperties(o,p(t,i)),o.afterProgramCreate=function(r){var i=r.getCompilerOptions(),s=e.getNewLineCharacter(i,(function(){return t.newLine}));_(r,n,a,(function(t){return o.onWatchStatusChange(e.createCompilerDiagnostic(c(t),t),s,i,t)}))},o}function g(t,r,n){r(n),t.exit(e.ExitStatus.DiagnosticsPresent_OutputsSkipped)}e.createDiagnosticReporter=n,e.screenStartingMessageCodes=[e.Diagnostics.Starting_compilation_in_watch_mode.code,e.Diagnostics.File_change_detected_Starting_incremental_compilation.code],e.getLocaleTimeString=a,e.createWatchStatusReporter=o,e.parseConfigFileWithSystem=function(t,r,n,i){var a=n;a.onUnRecoverableConfigFileDiagnostic=function(e){return g(n,i,e)};var o=e.getParsedCommandLineOfConfigFile(t,r,a);return a.onUnRecoverableConfigFileDiagnostic=void 0,o},e.getErrorCountForSummary=s,e.getWatchErrorSummaryDiagnosticMessage=c,e.getErrorSummaryText=u,e.listFiles=l,e.emitFilesAndReportErrors=_,e.emitFilesAndReportErrorsAndGetExitStatus=d,e.noopFileWatcher={close:e.noop},e.createWatchHost=p,function(e){e.ConfigFile="Config file",e.SourceFile="Source file",e.MissingFile="Missing file",e.WildcardDirectory="Wild card directory",e.FailedLookupLocations="Failed Lookup Locations",e.TypeRoots="Type roots"}(e.WatchType||(e.WatchType={})),e.createWatchFactory=function(t,r){var n=t.trace?r.extendedDiagnostics?e.WatchLogLevel.Verbose:r.diagnostics?e.WatchLogLevel.TriggerOnly:e.WatchLogLevel.None:e.WatchLogLevel.None,i=n!==e.WatchLogLevel.None?function(e){return t.trace(e)}:e.noop,a=e.getWatchFactory(n,i);return a.writeLog=i,a},e.createCompilerHostFromProgramHost=function(t,r,n){void 0===n&&(n=t);var i=t.useCaseSensitiveFileNames(),a=e.memoize((function(){return t.getNewLine()}));return{getSourceFile:function(n,i,a){var o;try{e.performance.mark("beforeIORead"),o=t.readFile(n,r().charset),e.performance.mark("afterIORead"),e.performance.measure("I/O Read","beforeIORead","afterIORead")}catch(e){a&&a(e.message),o=""}return void 0!==o?e.createSourceFile(n,o,i):void 0},getDefaultLibLocation:e.maybeBind(t,t.getDefaultLibLocation),getDefaultLibFileName:function(e){return t.getDefaultLibFileName(e)},writeFile:function(r,n,i,a){try{e.performance.mark("beforeIOWrite"),function r(n){if(n.length>e.getRootLength(n)&&!t.directoryExists(n)){var i=e.getDirectoryPath(n);r(i),t.createDirectory&&t.createDirectory(n)}}(e.getDirectoryPath(e.normalizePath(r))),t.writeFile(r,n,i),e.performance.mark("afterIOWrite"),e.performance.measure("I/O Write","beforeIOWrite","afterIOWrite")}catch(e){a&&a(e.message)}},getCurrentDirectory:e.memoize((function(){return t.getCurrentDirectory()})),useCaseSensitiveFileNames:function(){return i},getCanonicalFileName:e.createGetCanonicalFileName(i),getNewLine:function(){return e.getNewLineCharacter(r(),a)},fileExists:function(e){return t.fileExists(e)},readFile:function(e){return t.readFile(e)},trace:e.maybeBind(t,t.trace),directoryExists:e.maybeBind(n,n.directoryExists),getDirectories:e.maybeBind(n,n.getDirectories),realpath:e.maybeBind(t,t.realpath),getEnvironmentVariable:e.maybeBind(t,t.getEnvironmentVariable)||function(){return""},createHash:e.maybeBind(t,t.createHash),readDirectory:e.maybeBind(t,t.readDirectory)}},e.setGetSourceFileAsHashVersioned=function(r,n){var i=r.getSourceFile,a=n.createHash||e.generateDjb2Hash;r.getSourceFile=function(){for(var e=[],o=0;o<arguments.length;o++)e[o]=arguments[o];var s=i.call.apply(i,t([r],e));return s&&(s.version=a.call(n,s.text)),s}},e.createProgramHost=f,e.createWatchCompilerHostOfConfigFile=function(e,t,r,i,a,o){var s=a||n(r),c=m(r,i,s,o);return c.onUnRecoverableConfigFileDiagnostic=function(e){return g(r,s,e)},c.configFileName=e,c.optionsToExtend=t,c},e.createWatchCompilerHostOfFilesAndCompilerOptions=function(e,t,r,i,a,o,s){var c=m(r,i,a||n(r),o);return c.rootFiles=e,c.options=t,c.projectReferences=s,c},e.performIncrementalCompilation=function(t){var r=t.system||e.sys,i=t.host||(t.host=e.createIncrementalCompilerHost(t.options,r)),a=e.createIncrementalProgram(t),o=d(a,t.reportDiagnostic||n(r),(function(e){return i.trace&&i.trace(e)}),t.reportErrorSummary||t.options.pretty?function(e){return r.write(u(e,r.newLine))}:void 0);return t.afterProgramEmitAndDiagnostics&&t.afterProgramEmitAndDiagnostics(a),o}}(s||(s={})),function(e){function r(t,r){if(!t.out&&!t.outFile){var n=e.getTsBuildInfoEmitOutputFilePath(t);if(n){var i=r.readFile(n);if(i){var a=e.getBuildInfo(i);if(a.version===e.version&&a.program)return e.createBuildProgramUsingProgramBuildInfo(a.program,n,r)}}}}function n(t,r){void 0===r&&(r=e.sys);var n=e.createCompilerHostWorker(t,void 0,r);return n.createHash=e.maybeBind(r,r.createHash),e.setGetSourceFileAsHashVersioned(n,r),e.changeCompilerHostLikeToUseCache(n,(function(t){return e.toPath(t,n.getCurrentDirectory(),n.getCanonicalFileName)})),n}e.readBuilderProgram=r,e.createIncrementalCompilerHost=n,e.createIncrementalProgram=function(t){var i=t.rootNames,a=t.options,o=t.configFileParsingDiagnostics,s=t.projectReferences,c=t.host,u=t.createProgram;return c=c||n(a),(u=u||e.createEmitAndSemanticDiagnosticsBuilderProgram)(i,a,c,r(a,c),o,s)},e.createWatchCompilerHost=function(t,r,n,i,a,o,s){return e.isArray(t)?e.createWatchCompilerHostOfFilesAndCompilerOptions(t,r,n,i,a,o,s):e.createWatchCompilerHostOfConfigFile(t,r,n,i,a,o)},e.createWatchProgram=function(n){var i,a,o,s,c,u,l,_,d=e.createMap(),p=!1,f=!1,m=n.useCaseSensitiveFileNames(),g=n.getCurrentDirectory(),y=n.configFileName,h=n.optionsToExtend,v=void 0===h?{}:h,b=n.createProgram,x=n.rootFiles,D=n.options,S=n.projectReferences,T=!1,E=!1,C=void 0===y?void 0:e.createCachedDirectoryStructureHost(n,g,m);C&&n.onCachedDirectoryStructureHostCreate&&n.onCachedDirectoryStructureHostCreate(C);var k=C||n,N=e.parseConfigHostFromCompilerHostLike(n,k),A=q();y&&n.configFileParsingResult&&(re(n.configFileParsingResult),A=q()),$(e.Diagnostics.Starting_compilation_in_watch_mode),y&&!n.configFileParsingResult&&(A=e.getNewLineCharacter(v,(function(){return n.getNewLine()})),e.Debug.assert(!x),te(),A=q());var F,P=e.createWatchFactory(n,D),w=P.watchFile,I=P.watchFilePath,O=P.watchDirectory,M=P.writeLog,L=e.createGetCanonicalFileName(m);M("Current directory: "+g+" CaseSensitiveFileNames: "+m),y&&(F=w(n,y,(function(){e.Debug.assert(!!y),a=e.ConfigFileProgramReloadLevel.Full,Z()}),e.PollingInterval.High,"Config file"));var R=e.createCompilerHostFromProgramHost(n,(function(){return D}),k);e.setGetSourceFileAsHashVersioned(R,n);var B=R.getSourceFile;R.getSourceFile=function(e){for(var r=[],n=1;n<arguments.length;n++)r[n-1]=arguments[n];return Y.apply(void 0,t([e,W(e)],r))},R.getSourceFileByPath=Y,R.getNewLine=function(){return A},R.fileExists=H,R.onReleaseOldSourceFile=function(e,t,r){var n=d.get(e.resolvedPath);void 0!==n&&(G(n)?(u||(u=[])).push(e.path):n.sourceFile===e&&(n.fileWatcher&&n.fileWatcher.close(),d.delete(e.resolvedPath),r||j.removeResolutionsOfFile(e.path)))},R.toPath=W,R.getCompilationSettings=function(){return D},R.watchDirectoryOfFailedLookupLocation=function(e,t,r){return O(n,e,t,r,"Failed Lookup Locations")},R.watchTypeRootsDirectory=function(e,t,r){return O(n,e,t,r,"Type roots")},R.getCachedDirectoryStructureHost=function(){return C},R.onInvalidatedResolution=Z,R.onChangedAutomaticTypeDirectiveNames=function(){f=!0,Z()},R.fileIsOpen=e.returnFalse,R.maxNumberOfFilesToIterateForInvalidation=n.maxNumberOfFilesToIterateForInvalidation,R.getCurrentProgram=U,R.writeLog=M;var j=e.createResolutionCache(R,y?e.getDirectoryPath(e.getNormalizedAbsolutePath(y,g)):g,!1);R.resolveModuleNames=n.resolveModuleNames?function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n.resolveModuleNames.apply(n,e)}:function(e,t,r,n){return j.resolveModuleNames(e,t,r,n)},R.resolveTypeReferenceDirectives=n.resolveTypeReferenceDirectives?function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n.resolveTypeReferenceDirectives.apply(n,e)}:function(e,t,r){return j.resolveTypeReferenceDirectives(e,t,r)};var K=!!n.resolveModuleNames||!!n.resolveTypeReferenceDirectives;return i=r(D,R),V(),se(),y?{getCurrentProgram:z,getProgram:V,close:J}:{getCurrentProgram:z,getProgram:V,updateRootFileNames:function(t){e.Debug.assert(!y,"Cannot update root file names with config file watch mode"),x=t,Z()},close:J};function J(){j.clear(),e.clearMap(d,(function(e){e&&e.fileWatcher&&(e.fileWatcher.close(),e.fileWatcher=void 0)})),F&&(F.close(),F=void 0),s&&(e.clearMap(s,e.closeFileWatcherOf),s=void 0),o&&(e.clearMap(o,e.closeFileWatcher),o=void 0)}function z(){return i}function U(){return i&&i.getProgramOrUndefined()}function V(){M("Synchronizing program");var t=z();p&&(A=q(),t&&e.changesAffectModuleResolution(t.getCompilerOptions(),D)&&j.clear());var r=j.createHasInvalidatedResolution(K);return e.isProgramUptoDate(U(),x,D,Q,H,r,f,S)?E&&(i=b(void 0,void 0,R,i,_,S),E=!1):function(t){M("CreatingProgramWith::"),M(" roots: "+JSON.stringify(x)),M(" options: "+JSON.stringify(D));var r=p||!U();p=!1,E=!1,j.startCachingPerDirectoryResolution(),R.hasInvalidatedResolution=t,R.hasChangedAutomaticTypeDirectiveNames=f,i=b(x,D,R,i,_,S),j.finishCachingPerDirectoryResolution(),e.updateMissingFilePathsWatch(i.getProgram(),o||(o=e.createMap()),ae),r&&j.updateTypeRootsWatch();if(u){for(var n=0,a=u;n<a.length;n++){var s=a[n];o.has(s)||d.delete(s)}u=void 0}}(r),n.afterProgramCreate&&n.afterProgramCreate(i),i}function q(){return e.getNewLineCharacter(D||v,(function(){return n.getNewLine()}))}function W(t){return e.toPath(t,g,L)}function G(e){return"boolean"==typeof e}function H(e){var t=W(e);return!!G(d.get(t))||k.fileExists(e)}function Y(t,r,i,a,o){var s=d.get(r);if(!G(s)){if(void 0===s||o||function(e){return"boolean"==typeof e.version}(s)){var c=B(t,i,a);if(s)c?(s.sourceFile=c,s.version=c.version,s.fileWatcher||(s.fileWatcher=I(n,t,ne,e.PollingInterval.Low,r,"Source file"))):(s.fileWatcher&&s.fileWatcher.close(),d.set(r,!1));else if(c){var u=I(n,t,ne,e.PollingInterval.Low,r,"Source file");d.set(r,{sourceFile:c,version:c.version,fileWatcher:u})}else d.set(r,!1);return c}return s.sourceFile}}function X(e){var t=d.get(e);void 0!==t&&(G(t)?d.set(e,{version:!1}):t.version=!1)}function Q(e){var t=d.get(e);return t&&t.version?t.version:void 0}function $(t){n.onWatchStatusChange&&n.onWatchStatusChange(e.createCompilerDiagnostic(t),A,D||v)}function Z(){n.setTimeout&&n.clearTimeout&&(c&&n.clearTimeout(c),M("Scheduling update"),c=n.setTimeout(ee,250))}function ee(){switch(c=void 0,$(e.Diagnostics.File_change_detected_Starting_incremental_compilation),a){case e.ConfigFileProgramReloadLevel.Partial:e.perfLogger.logStartUpdateProgram("PartialConfigReload"),function(){M("Reloading new file names and options");var t=e.getFileNamesFromConfigSpecs(l,e.getDirectoryPath(y),D,N);e.updateErrorForNoInputFiles(t,y,l,_,T)&&(E=!0);x=t.fileNames,V()}();break;case e.ConfigFileProgramReloadLevel.Full:e.perfLogger.logStartUpdateProgram("FullConfigReload"),function(){M("Reloading config file: "+y),a=e.ConfigFileProgramReloadLevel.None,C&&C.clearCache();te(),p=!0,V(),se()}();break;default:e.perfLogger.logStartUpdateProgram("SynchronizeProgram"),V()}e.perfLogger.logStopUpdateProgram("Done")}function te(){re(e.getParsedCommandLineOfConfigFile(y,v,N))}function re(t){x=t.fileNames,D=t.options,l=t.configFileSpecs,S=t.projectReferences,_=e.getConfigFileParsingDiagnostics(t).slice(),T=e.canJsonReportNoInutFiles(t.raw),E=!0}function ne(t,r,n){ie(t,n,r),r===e.FileWatcherEventKind.Deleted&&d.has(n)&&j.invalidateResolutionOfFile(n),j.removeResolutionsFromProjectReferenceRedirects(n),X(n),Z()}function ie(e,t,r){C&&C.addOrDeleteFile(e,t,r)}function ae(t){return I(n,t,oe,e.PollingInterval.Medium,t,"Missing file")}function oe(t,r,n){ie(t,n,r),r===e.FileWatcherEventKind.Created&&o.has(n)&&(o.get(n).close(),o.delete(n),X(n),Z())}function se(){l?e.updateWatchingWildcardDirectories(s||(s=e.createMap()),e.createMapFromTemplate(l.wildcardDirectories),ce):s&&e.clearMap(s,e.closeFileWatcherOf)}function ce(t,r){return O(n,t,(function(r){e.Debug.assert(!!y);var n=W(r);C&&C.addOrDeleteFileOrDirectory(r,n),X(n),e.isPathIgnored(n)||(n===t||!e.hasExtension(n)||e.isSupportedSourceFileName(r,D)?a!==e.ConfigFileProgramReloadLevel.Full&&(a=e.ConfigFileProgramReloadLevel.Partial,Z()):M("Project: "+y+" Detected file add/remove of non supported extension: "+r))}),r,"Wild card directory")}}}(s||(s={})),function(e){!function(e){e[e.Unbuildable=0]="Unbuildable",e[e.UpToDate=1]="UpToDate",e[e.UpToDateWithUpstreamTypes=2]="UpToDateWithUpstreamTypes",e[e.OutOfDateWithPrepend=3]="OutOfDateWithPrepend",e[e.OutputMissing=4]="OutputMissing",e[e.OutOfDateWithSelf=5]="OutOfDateWithSelf",e[e.OutOfDateWithUpstream=6]="OutOfDateWithUpstream",e[e.UpstreamOutOfDate=7]="UpstreamOutOfDate",e[e.UpstreamBlocked=8]="UpstreamBlocked",e[e.ComputingUpstream=9]="ComputingUpstream",e[e.TsVersionOutputOfDate=10]="TsVersionOutputOfDate",e[e.ContainerOnly=11]="ContainerOnly"}(e.UpToDateStatusType||(e.UpToDateStatusType={})),e.resolveConfigFileProjectName=function(t){return e.fileExtensionIs(t,".json")?t:e.combinePaths(t,"tsconfig.json")}}(s||(s={})),function(e){var r,n,i=new Date(-864e13),a=new Date(864e13);function o(){return e.createMap()}function s(t,r){return function(e,t,r){var n,i=e.get(t);return i||(n=r(),e.set(t,n)),i||n}(t,r,e.createMap)}function c(e,t){return t>e?t:e}function u(t){return e.fileExtensionIs(t,".d.ts")}function l(e){return!!e&&!!e.buildOrder}function _(e){return l(e)?e.buildOrder:e}function d(t,r){return function(n){var i=r?"["+e.formatColorAndReset(e.getLocaleTimeString(t),e.ForegroundColorEscapeSequences.Grey)+"] ":e.getLocaleTimeString(t)+" - ";i+=""+e.flattenDiagnosticMessageText(n.messageText,t.newLine)+(t.newLine+t.newLine),t.write(i)}}function p(t,r,n,i){var a=e.createProgramHost(t,r);return a.getModifiedTime=t.getModifiedTime?function(e){return t.getModifiedTime(e)}:e.returnUndefined,a.setModifiedTime=t.setModifiedTime?function(e,r){return t.setModifiedTime(e,r)}:e.noop,a.deleteFile=t.deleteFile?function(e){return t.deleteFile(e)}:e.noop,a.reportDiagnostic=n||e.createDiagnosticReporter(t),a.reportSolutionBuilderStatus=i||d(t),a}function f(t,r,n,i){var a,s,c=r,u=r,l=c.getCurrentDirectory(),_=e.createGetCanonicalFileName(c.useCaseSensitiveFileNames()),d=(a=i,s={},e.commonOptionsWithBuild.forEach((function(t){e.hasProperty(a,t.name)&&(s[t.name]=a[t.name])})),s),p=e.createCompilerHostFromProgramHost(c,(function(){return S.projectCompilerOptions}));e.setGetSourceFileAsHashVersioned(p,c),p.getParsedCommandLine=function(e){return h(S,e,g(S,e))},p.resolveModuleNames=e.maybeBind(c,c.resolveModuleNames),p.resolveTypeReferenceDirectives=e.maybeBind(c,c.resolveTypeReferenceDirectives);var f=p.resolveModuleNames?void 0:e.createModuleResolutionCache(l,_);if(!p.resolveModuleNames){var m=function(t,r,n){return e.resolveModuleName(t,r,S.projectCompilerOptions,p,f,n).resolvedModule};p.resolveModuleNames=function(t,r,n,i){return e.loadWithLocalCache(e.Debug.assertEachDefined(t),r,i,m)}}var y=e.createWatchFactory(u,i),v=y.watchFile,b=y.watchFilePath,x=y.watchDirectory,D=y.writeLog,S={host:c,hostWithWatch:u,currentDirectory:l,getCanonicalFileName:_,parseConfigFileHost:e.parseConfigHostFromCompilerHostLike(c),writeFileName:c.trace?function(e){return c.trace(e)}:void 0,options:i,baseCompilerOptions:d,rootNames:n,resolvedConfigFilePaths:e.createMap(),configFileCache:o(),projectStatus:o(),buildInfoChecked:o(),extendedConfigCache:e.createMap(),builderPrograms:o(),diagnostics:o(),projectPendingBuild:o(),projectErrorsReported:o(),compilerHost:p,moduleResolutionCache:f,buildOrder:void 0,readFileWithCache:function(e){return c.readFile(e)},projectCompilerOptions:d,cache:void 0,allProjectBuildPending:!0,needsSummary:!0,watchAllProjectsPending:t,currentInvalidatedProject:void 0,watch:t,allWatchedWildcardDirectories:o(),allWatchedInputFiles:o(),allWatchedConfigFiles:o(),timerToBuildInvalidatedProject:void 0,reportFileChangeDetected:!1,watchFile:v,watchFilePath:b,watchDirectory:x,writeLog:D};return S}function m(t,r){return e.toPath(r,t.currentDirectory,t.getCanonicalFileName)}function g(e,t){var r=e.resolvedConfigFilePaths,n=r.get(t);if(void 0!==n)return n;var i=m(e,t);return r.set(t,i),i}function y(e){return!!e.options}function h(t,r,n){var i,a=t.configFileCache,o=a.get(n);if(o)return y(o)?o:void 0;var s,c=t.parseConfigFileHost,u=t.baseCompilerOptions,l=t.extendedConfigCache,_=t.host;return _.getParsedCommandLine?(s=_.getParsedCommandLine(r))||(i=e.createCompilerDiagnostic(e.Diagnostics.File_0_not_found,r)):(c.onUnRecoverableConfigFileDiagnostic=function(e){return i=e},s=e.getParsedCommandLineOfConfigFile(r,u,c,l),c.onUnRecoverableConfigFileDiagnostic=e.noop),a.set(n,s||i),s}function v(t,r){return e.resolveConfigFileProjectName(e.resolvePath(t.currentDirectory,r))}function b(t,r){for(var n,i,a=e.createMap(),o=e.createMap(),s=[],c=0,u=r;c<u.length;c++){l(u[c])}return i?{buildOrder:n||e.emptyArray,circularDiagnostics:i}:n||e.emptyArray;function l(r,c){var u=g(t,r);if(!o.has(u))if(a.has(u))c||(i||(i=[])).push(e.createCompilerDiagnostic(e.Diagnostics.Project_references_may_not_form_a_circular_graph_Cycle_detected_Colon_0,s.join("\r\n")));else{a.set(u,!0),s.push(r);var _=h(t,r,u);if(_&&_.projectReferences)for(var d=0,p=_.projectReferences;d<p.length;d++){var f=p[d];l(v(t,f.path),c||f.circular)}s.pop(),o.set(u,!0),(n||(n=[])).push(r)}}}function x(t){return t.buildOrder||function(t){var r=b(t,t.rootNames.map((function(e){return v(t,e)})));t.resolvedConfigFilePaths.clear();var n=e.arrayToSet(_(r),(function(e){return g(t,e)})),i={onDeleteValue:e.noop};e.mutateMapSkippingNewValues(t.configFileCache,n,i),e.mutateMapSkippingNewValues(t.projectStatus,n,i),e.mutateMapSkippingNewValues(t.buildInfoChecked,n,i),e.mutateMapSkippingNewValues(t.builderPrograms,n,i),e.mutateMapSkippingNewValues(t.diagnostics,n,i),e.mutateMapSkippingNewValues(t.projectPendingBuild,n,i),e.mutateMapSkippingNewValues(t.projectErrorsReported,n,i),t.watch&&(e.mutateMapSkippingNewValues(t.allWatchedConfigFiles,n,{onDeleteValue:e.closeFileWatcher}),e.mutateMapSkippingNewValues(t.allWatchedWildcardDirectories,n,{onDeleteValue:function(t){return t.forEach(e.closeFileWatcherOf)}}),e.mutateMapSkippingNewValues(t.allWatchedInputFiles,n,{onDeleteValue:function(t){return t.forEach(e.closeFileWatcher)}}));return t.buildOrder=r}(t)}function D(t,r,n){var i=r&&v(t,r),a=x(t);if(l(a))return a;if(i){var o=g(t,i);if(-1===e.findIndex(a,(function(e){return g(t,e)===o})))return}var s=i?b(t,[i]):a;return e.Debug.assert(!l(s)),e.Debug.assert(!n||void 0!==i),e.Debug.assert(!n||s[s.length-1]===i),n?s.slice(0,s.length-1):s}function S(r){r.cache&&T(r);var n=r.compilerHost,i=r.host,a=r.readFileWithCache,o=n.getSourceFile,s=e.changeCompilerHostLikeToUseCache(i,(function(e){return m(r,e)}),(function(){for(var e=[],r=0;r<arguments.length;r++)e[r]=arguments[r];return o.call.apply(o,t([n],e))})),c=s.originalReadFile,u=s.originalFileExists,l=s.originalDirectoryExists,_=s.originalCreateDirectory,d=s.originalWriteFile,p=s.getSourceFileWithCache,f=s.readFileWithCache;r.readFileWithCache=f,n.getSourceFile=p,r.cache={originalReadFile:c,originalFileExists:u,originalDirectoryExists:l,originalCreateDirectory:_,originalWriteFile:d,originalReadFileWithCache:a,originalGetSourceFile:o}}function T(e){if(e.cache){var t=e.cache,r=e.host,n=e.compilerHost,i=e.extendedConfigCache,a=e.moduleResolutionCache;r.readFile=t.originalReadFile,r.fileExists=t.originalFileExists,r.directoryExists=t.originalDirectoryExists,r.createDirectory=t.originalCreateDirectory,r.writeFile=t.originalWriteFile,n.getSourceFile=t.originalGetSourceFile,e.readFileWithCache=t.originalReadFileWithCache,i.clear(),a&&(a.directoryToModuleNameMap.clear(),a.moduleNameToDirectoryMap.clear()),e.cache=void 0}}function E(e,t){e.projectStatus.delete(t),e.diagnostics.delete(t)}function C(e,t,r){var n=e.projectPendingBuild,i=n.get(t);void 0===i?n.set(t,r):i<r&&n.set(t,r)}function k(t,r){t.allProjectBuildPending&&(t.allProjectBuildPending=!1,t.options.watch&&ee(t,e.Diagnostics.Starting_compilation_in_watch_mode),S(t),_(x(t)).forEach((function(r){return t.projectPendingBuild.set(g(t,r),e.ConfigFileProgramReloadLevel.None)})),r&&r.throwIfCancellationRequested())}function N(t,r){return t.projectPendingBuild.delete(r),t.currentInvalidatedProject=void 0,t.diagnostics.has(r)?e.ExitStatus.DiagnosticsPresent_OutputsSkipped:e.ExitStatus.Success}function A(e,t,r,i,a){var o=!0;return{kind:n.UpdateOutputFileStamps,project:t,projectPath:r,buildOrder:a,getCompilerOptions:function(){return i.options},getCurrentDirectory:function(){return e.currentDirectory},updateOutputFileStatmps:function(){j(e,i,r),o=!1},done:function(){return o&&j(e,i,r),N(e,r)}}}function F(o,s,l,_,d,p,f){var y;!function(e){e[e.CreateProgram=0]="CreateProgram",e[e.SyntaxDiagnostics=1]="SyntaxDiagnostics",e[e.SemanticDiagnostics=2]="SemanticDiagnostics",e[e.Emit=3]="Emit",e[e.EmitBundle=4]="EmitBundle",e[e.BuildInvalidatedProjectOfBundle=5]="BuildInvalidatedProjectOfBundle",e[e.QueueReferencingProjects=6]="QueueReferencingProjects",e[e.Done=7]="Done"}(y||(y={}));var b,x,D,S=o===n.Build?y.CreateProgram:y.EmitBundle;return o===n.Build?{kind:o,project:l,projectPath:_,buildOrder:f,getCompilerOptions:function(){return p.options},getCurrentDirectory:function(){return s.currentDirectory},getBuilderProgram:function(){return E(e.identity)},getProgram:function(){return E((function(e){return e.getProgramOrUndefined()}))},getSourceFile:function(e){return E((function(t){return t.getSourceFile(e)}))},getSourceFiles:function(){return C((function(e){return e.getSourceFiles()}))},getOptionsDiagnostics:function(e){return C((function(t){return t.getOptionsDiagnostics(e)}))},getGlobalDiagnostics:function(e){return C((function(t){return t.getGlobalDiagnostics(e)}))},getConfigFileParsingDiagnostics:function(){return C((function(e){return e.getConfigFileParsingDiagnostics()}))},getSyntacticDiagnostics:function(e,t){return C((function(r){return r.getSyntacticDiagnostics(e,t)}))},getAllDependencies:function(e){return C((function(t){return t.getAllDependencies(e)}))},getSemanticDiagnostics:function(e,t){return C((function(r){return r.getSemanticDiagnostics(e,t)}))},getSemanticDiagnosticsOfNextAffectedFile:function(e,t){return E((function(r){return r.getSemanticDiagnosticsOfNextAffectedFile&&r.getSemanticDiagnosticsOfNextAffectedFile(e,t)}))},emit:function(e,t,r,n,i){return e||n?E((function(a){return a.emit(e,t,r,n,i)})):(J(y.SemanticDiagnostics,r),S===y.Emit?L(t,r,i):void 0)},done:T}:{kind:o,project:l,projectPath:_,buildOrder:f,getCompilerOptions:function(){return p.options},getCurrentDirectory:function(){return s.currentDirectory},emit:function(e,t){return S!==y.EmitBundle?D:j(e,t)},done:T};function T(e,t,r){return J(y.Done,e,t,r),N(s,_)}function E(e){return J(y.CreateProgram),b&&e(b)}function C(t){return E(t)||e.emptyArray}function k(){if(e.Debug.assert(void 0===b),s.options.dry)return Z(s,e.Diagnostics.A_non_dry_build_would_build_project_0,l),x=r.Success,void(S=y.QueueReferencingProjects);if(s.options.verbose&&Z(s,e.Diagnostics.Building_project_0,l),0===p.fileNames.length)return re(s,_,p.errors),x=r.None,void(S=y.QueueReferencingProjects);var t=s.host,n=s.compilerHost;s.projectCompilerOptions=p.options,function(t,r,n){if(!t.moduleResolutionCache)return;var i=t.moduleResolutionCache,a=m(t,r);if(0===i.directoryToModuleNameMap.redirectsMap.size)e.Debug.assert(0===i.moduleNameToDirectoryMap.redirectsMap.size),i.directoryToModuleNameMap.redirectsMap.set(a,i.directoryToModuleNameMap.ownMap),i.moduleNameToDirectoryMap.redirectsMap.set(a,i.moduleNameToDirectoryMap.ownMap);else{e.Debug.assert(i.moduleNameToDirectoryMap.redirectsMap.size>0);var o={sourceFile:n.options.configFile,commandLine:n};i.directoryToModuleNameMap.setOwnMap(i.directoryToModuleNameMap.getOrCreateMapOfCacheRedirects(o)),i.moduleNameToDirectoryMap.setOwnMap(i.moduleNameToDirectoryMap.getOrCreateMapOfCacheRedirects(o))}i.directoryToModuleNameMap.setOwnOptions(n.options),i.moduleNameToDirectoryMap.setOwnOptions(n.options)}(s,l,p),b=t.createProgram(p.fileNames,p.options,n,function(t,r,n){var i=t.options,a=t.builderPrograms,o=t.compilerHost;if(i.force)return;var s=a.get(r);return s||e.readBuilderProgram(n.options,o)}(s,_,p),p.errors,p.projectReferences),S++}function A(e,t,r){e.length?(x=M(s,_,b,e,t,r),S=y.QueueReferencingProjects):S++}function P(n){e.Debug.assertDefined(b),A(t(b.getConfigFileParsingDiagnostics(),b.getOptionsDiagnostics(n),b.getGlobalDiagnostics(n),b.getSyntacticDiagnostics(void 0,n)),r.SyntaxErrors,"Syntactic")}function w(t){A(e.Debug.assertDefined(b).getSemanticDiagnostics(void 0,t),r.TypeErrors,"Semantic")}function L(t,n,a){var o;e.Debug.assertDefined(b),e.Debug.assert(S===y.Emit),b.backupState();var l=[],d=e.emitFilesAndReportErrors(b,(function(e){return(o||(o=[])).push(e)}),void 0,void 0,(function(e,t,r){return l.push({name:e,text:t,writeByteOrderMark:r})}),n,!1,a).emitResult;if(o)return b.restoreState(),x=M(s,_,b,o,r.DeclarationEmitErrors,"Declaration file"),S=y.QueueReferencingProjects,{emitSkipped:!0,diagnostics:d.diagnostics};var f=s.host,g=s.compilerHost,h=r.DeclarationOutputUnchanged,v=i,D=!1,T=e.createDiagnosticCollection(),E=e.createMap();return l.forEach((function(n){var i,a=n.name,o=n.text,l=n.writeByteOrderMark;!D&&u(a)&&(f.fileExists(a)&&s.readFileWithCache(a)===o?i=f.getModifiedTime(a):(h&=~r.DeclarationOutputUnchanged,D=!0)),E.set(m(s,a),a),e.writeFile(t?{writeFile:t}:g,T,a,o,l),void 0!==i&&(v=c(i,v))})),R(T,E,v,D,l.length?l[0].name:e.getFirstProjectOutput(p,!f.useCaseSensitiveFileNames()),h),d}function R(t,n,i,o,c,u){var l=t.getDiagnostics();if(l.length)return x=M(s,_,b,l,r.EmitErrors,"Emit"),S=y.QueueReferencingProjects,l;s.writeFileName&&(n.forEach((function(e){return I(s,p,e)})),b&&e.listFiles(b,s.writeFileName));var d=B(s,p,i,e.Diagnostics.Updating_unchanged_output_timestamps_of_project_0,n);return s.diagnostics.delete(_),s.projectStatus.set(_,{type:e.UpToDateStatusType.UpToDate,newestDeclarationFileContentChangedTime:o?a:d,oldestOutputFileName:c}),b&&O(s,_,b),s.projectCompilerOptions=s.baseCompilerOptions,S=y.QueueReferencingProjects,x=u,l}function j(t,a){if(e.Debug.assert(o===n.UpdateBundle),s.options.dry)return Z(s,e.Diagnostics.A_non_dry_build_would_update_output_of_project_0,l),x=r.Success,void(S=y.QueueReferencingProjects);s.options.verbose&&Z(s,e.Diagnostics.Updating_output_of_project_0,l);var c=s.compilerHost;s.projectCompilerOptions=p.options;var u=e.emitUsingBuildInfo(p,c,(function(e){var t=v(s,e.path);return h(s,t,g(s,t))}),a);if(e.isString(u))return Z(s,e.Diagnostics.Cannot_update_output_of_project_0_because_there_was_error_reading_file_1,l,$(s,u)),S=y.BuildInvalidatedProjectOfBundle,D=F(n.Build,s,l,_,d,p,f);e.Debug.assert(!!u.length);var b=e.createDiagnosticCollection(),T=e.createMap();return u.forEach((function(r){var n=r.name,i=r.text,a=r.writeByteOrderMark;T.set(m(s,n),n),e.writeFile(t?{writeFile:t}:c,b,n,i,a)})),{emitSkipped:!1,diagnostics:R(b,T,i,!1,u[0].name,r.DeclarationOutputUnchanged)}}function J(t,r,n,i){for(;S<=t&&S<y.Done;){var a=S;switch(S){case y.CreateProgram:k();break;case y.SyntaxDiagnostics:P(r);break;case y.SemanticDiagnostics:w(r);break;case y.Emit:L(n,r,i);break;case y.EmitBundle:j(n,i);break;case y.BuildInvalidatedProjectOfBundle:e.Debug.assertDefined(D).done(r),S=y.Done;break;case y.QueueReferencingProjects:K(s,l,_,d,p,f,e.Debug.assertDefined(x)),S++;break;case y.Done:default:e.assertType(S)}e.Debug.assert(S>a)}}}function P(t,r,n){var i=t.options;return!(r.type===e.UpToDateStatusType.OutOfDateWithPrepend&&!i.force)||(0===n.fileNames.length||!!n.errors.length||!e.isIncrementalCompilation(n.options))}function w(t,r,i){if(t.projectPendingBuild.size&&!l(r)){if(t.currentInvalidatedProject)return e.arrayIsEqualTo(t.currentInvalidatedProject.buildOrder,r)?t.currentInvalidatedProject:void 0;for(var a=t.options,o=t.projectPendingBuild,s=0;s<r.length;s++){var c=r[s],u=g(t,c),_=t.projectPendingBuild.get(u);if(void 0!==_){i&&(i=!1,ae(t,r));var d=h(t,c,u);if(d){if(_===e.ConfigFileProgramReloadLevel.Full)G(t,c,u),Y(t,c,u,d),X(t,c,u,d);else if(_===e.ConfigFileProgramReloadLevel.Partial){var p=e.getFileNamesFromConfigSpecs(d.configFileSpecs,e.getDirectoryPath(c),d.options,t.parseConfigFileHost);e.updateErrorForNoInputFiles(p,c,d.configFileSpecs,d.errors,e.canJsonReportNoInutFiles(d.raw)),d.fileNames=p.fileNames,X(t,c,u,d)}var f=R(t,d,u);if(oe(t,c,f),!a.force){if(f.type===e.UpToDateStatusType.UpToDate){re(t,u,d.errors),o.delete(u),a.dry&&Z(t,e.Diagnostics.Project_0_is_up_to_date,c);continue}if(f.type===e.UpToDateStatusType.UpToDateWithUpstreamTypes)return re(t,u,d.errors),A(t,c,u,d,r)}if(f.type!==e.UpToDateStatusType.UpstreamBlocked){if(f.type!==e.UpToDateStatusType.ContainerOnly)return F(P(t,f,d)?n.Build:n.UpdateBundle,t,c,u,s,d,r);re(t,u,d.errors),o.delete(u)}else re(t,u,d.errors),o.delete(u),a.verbose&&Z(t,f.upstreamProjectBlocked?e.Diagnostics.Skipping_build_of_project_0_because_its_dependency_1_was_not_built:e.Diagnostics.Skipping_build_of_project_0_because_its_dependency_1_has_errors,c,f.upstreamProjectName)}else ne(t,u),o.delete(u)}}}}function I(e,t,r){var n=e.writeFileName;n&&t.options.listEmittedFiles&&n("TSFILE: "+r)}function O(e,t,r){var n=e.host,i=e.watch,a=e.builderPrograms;n.afterProgramEmitAndDiagnostics&&n.afterProgramEmitAndDiagnostics(r),i&&(r.releaseProgram(),a.set(t,r))}function M(t,r,n,i,a,o){return re(t,r,i),n&&t.writeFileName&&e.listFiles(n,t.writeFileName),t.projectStatus.set(r,{type:e.UpToDateStatusType.Unbuildable,reason:o+" errors"}),n&&O(t,r,n),t.projectCompilerOptions=t.baseCompilerOptions,a}function L(t,r,n,i){if(n<(t.host.getModifiedTime(r)||e.missingFileModifiedTime))return{type:e.UpToDateStatusType.OutOfDateWithSelf,outOfDateOutputFileName:i,newerInputFileName:r}}function R(t,r,n){if(void 0===r)return{type:e.UpToDateStatusType.Unbuildable,reason:"File deleted mid-build"};var o=t.projectStatus.get(n);if(void 0!==o)return o;var s=function(t,r,n){for(var o=void 0,s=i,l=t.host,_=0,d=r.fileNames;_<d.length;_++){var p=d[_];if(!l.fileExists(p))return{type:e.UpToDateStatusType.Unbuildable,reason:p+" does not exist"};var f=l.getModifiedTime(p)||e.missingFileModifiedTime;f>s&&(o=p,s=f)}if(!r.fileNames.length&&!e.canJsonReportNoInutFiles(r.raw))return{type:e.UpToDateStatusType.ContainerOnly};for(var m,y=e.getAllProjectOutputs(r,!l.useCaseSensitiveFileNames()),v="(none)",b=a,x="(none)",D=i,S=i,T=!1,E=0,C=y;E<C.length;E++){var k=C[E];if(!l.fileExists(k)){m=k;break}var N=l.getModifiedTime(k)||e.missingFileModifiedTime;if(N<b&&(b=N,v=k),N<s){T=!0;break}if(N>D&&(D=N,x=k),u(k))S=c(S,l.getModifiedTime(k)||e.missingFileModifiedTime)}var A,F=!1,P=!1;if(r.projectReferences){t.projectStatus.set(n,{type:e.UpToDateStatusType.ComputingUpstream});for(var w=0,I=r.projectReferences;w<I.length;w++){var O=I[w];P=P||!!O.prepend;var M=e.resolveProjectReferencePath(O),B=g(t,M),j=R(t,h(t,M,B),B);if(j.type!==e.UpToDateStatusType.ComputingUpstream&&j.type!==e.UpToDateStatusType.ContainerOnly){if(j.type===e.UpToDateStatusType.Unbuildable||j.type===e.UpToDateStatusType.UpstreamBlocked)return{type:e.UpToDateStatusType.UpstreamBlocked,upstreamProjectName:O.path,upstreamProjectBlocked:j.type===e.UpToDateStatusType.UpstreamBlocked};if(j.type!==e.UpToDateStatusType.UpToDate)return{type:e.UpToDateStatusType.UpstreamOutOfDate,upstreamProjectName:O.path};if(!m){if(j.newestInputFileTime&&j.newestInputFileTime<=b)continue;if(j.newestDeclarationFileContentChangedTime&&j.newestDeclarationFileContentChangedTime<=b){F=!0,A=O.path;continue}return e.Debug.assert(void 0!==v,"Should have an oldest output filename here"),{type:e.UpToDateStatusType.OutOfDateWithUpstream,outOfDateOutputFileName:v,newerProjectName:O.path}}}}}if(void 0!==m)return{type:e.UpToDateStatusType.OutputMissing,missingOutputFileName:m};if(T)return{type:e.UpToDateStatusType.OutOfDateWithSelf,outOfDateOutputFileName:v,newerInputFileName:o};var K=L(t,r.options.configFilePath,b,v);if(K)return K;var J=e.forEach(r.options.configFile.extendedSourceFiles||e.emptyArray,(function(e){return L(t,e,b,v)}));if(J)return J;if(!t.buildInfoChecked.has(n)){t.buildInfoChecked.set(n,!0);var z=e.getTsBuildInfoEmitOutputFilePath(r.options);if(z){var U=t.readFileWithCache(z),V=U&&e.getBuildInfo(U);if(V&&(V.bundle||V.program)&&V.version!==e.version)return{type:e.UpToDateStatusType.TsVersionOutputOfDate,version:V.version}}}return P&&F?{type:e.UpToDateStatusType.OutOfDateWithPrepend,outOfDateOutputFileName:v,newerProjectName:A}:{type:F?e.UpToDateStatusType.UpToDateWithUpstreamTypes:e.UpToDateStatusType.UpToDate,newestDeclarationFileContentChangedTime:S,newestInputFileTime:s,newestOutputFileTime:D,newestInputFileName:o,newestOutputFileName:x,oldestOutputFileName:v}}(t,r,n);return t.projectStatus.set(n,s),s}function B(t,r,n,i,a){var o=t.host,s=e.getAllProjectOutputs(r,!o.useCaseSensitiveFileNames());if(!a||s.length!==a.size)for(var l=!!t.options.verbose,_=o.now?o.now():new Date,d=0,p=s;d<p.length;d++){var f=p[d];a&&a.has(m(t,f))||(l&&(l=!1,Z(t,i,r.options.configFilePath)),u(f)&&(n=c(n,o.getModifiedTime(f)||e.missingFileModifiedTime)),o.setModifiedTime(f,_),I(t,r,f))}return n}function j(t,r,n){if(t.options.dry)return Z(t,e.Diagnostics.A_non_dry_build_would_update_timestamps_for_output_of_project_0,r.options.configFilePath);var a=B(t,r,i,e.Diagnostics.Updating_output_timestamps_of_project_0);t.projectStatus.set(n,{type:e.UpToDateStatusType.UpToDate,newestDeclarationFileContentChangedTime:a,oldestOutputFileName:e.getFirstProjectOutput(r,!t.host.useCaseSensitiveFileNames())})}function K(t,n,i,a,o,s,c){if(!(c&r.AnyErrors)&&o.options.composite)for(var u=a+1;u<s.length;u++){var l=s[u],_=g(t,l);if(!t.projectPendingBuild.has(_)){var d=h(t,l,_);if(d&&d.projectReferences)for(var p=0,f=d.projectReferences;p<f.length;p++){var m=f[p];if(g(t,v(t,m.path))===i){var y=t.projectStatus.get(_);if(y)switch(y.type){case e.UpToDateStatusType.UpToDate:if(c&r.DeclarationOutputUnchanged){m.prepend?t.projectStatus.set(_,{type:e.UpToDateStatusType.OutOfDateWithPrepend,outOfDateOutputFileName:y.oldestOutputFileName,newerProjectName:n}):y.type=e.UpToDateStatusType.UpToDateWithUpstreamTypes;break}case e.UpToDateStatusType.UpToDateWithUpstreamTypes:case e.UpToDateStatusType.OutOfDateWithPrepend:c&r.DeclarationOutputUnchanged||t.projectStatus.set(_,{type:e.UpToDateStatusType.OutOfDateWithUpstream,outOfDateOutputFileName:y.type===e.UpToDateStatusType.OutOfDateWithPrepend?y.outOfDateOutputFileName:y.oldestOutputFileName,newerProjectName:n});break;case e.UpToDateStatusType.UpstreamBlocked:g(t,v(t,y.upstreamProjectName))===i&&E(t,_)}C(t,_,e.ConfigFileProgramReloadLevel.None);break}}}}}function J(t,r,n,i){var a=D(t,r,i);if(!a)return e.ExitStatus.InvalidProject_OutputsSkipped;k(t,n);for(var o=!0,s=0;;){var c=w(t,a,o);if(!c)break;o=!1,c.done(n),t.diagnostics.has(c.projectPath)||s++}return T(t),ie(t,a),function(e,t){if(!e.watchAllProjectsPending)return;e.watchAllProjectsPending=!1;for(var r=0,n=_(t);r<n.length;r++){var i=n[r],a=g(e,i);G(e,i,a);var o=h(e,i,a);o&&(Y(e,i,a,o),X(e,i,a,o))}}(t,a),l(a)?e.ExitStatus.ProjectReferenceCycle_OutputsSkipped:a.some((function(e){return t.diagnostics.has(g(t,e))}))?s?e.ExitStatus.DiagnosticsPresent_OutputsGenerated:e.ExitStatus.DiagnosticsPresent_OutputsSkipped:e.ExitStatus.Success}function z(t,r,n){var i=D(t,r,n);if(!i)return e.ExitStatus.InvalidProject_OutputsSkipped;if(l(i))return te(t,i.circularDiagnostics),e.ExitStatus.ProjectReferenceCycle_OutputsSkipped;for(var a=t.options,o=t.host,s=a.dry?[]:void 0,c=0,u=i;c<u.length;c++){var _=u[c],d=g(t,_),p=h(t,_,d);if(void 0!==p)for(var f=0,m=e.getAllProjectOutputs(p,!o.useCaseSensitiveFileNames());f<m.length;f++){var y=m[f];o.fileExists(y)&&(s?s.push(y):(o.deleteFile(y),U(t,d,e.ConfigFileProgramReloadLevel.None)))}else ne(t,d)}return s&&Z(t,e.Diagnostics.A_non_dry_build_would_delete_the_following_files_Colon_0,s.map((function(e){return"\r\n * "+e})).join("")),e.ExitStatus.Success}function U(t,r,n){t.host.getParsedCommandLine&&n===e.ConfigFileProgramReloadLevel.Partial&&(n=e.ConfigFileProgramReloadLevel.Full),n===e.ConfigFileProgramReloadLevel.Full&&(t.configFileCache.delete(r),t.buildOrder=void 0),t.needsSummary=!0,E(t,r),C(t,r,n),S(t)}function V(e,t,r){e.reportFileChangeDetected=!0,U(e,t,r),q(e)}function q(e){var t=e.hostWithWatch;t.setTimeout&&t.clearTimeout&&(e.timerToBuildInvalidatedProject&&t.clearTimeout(e.timerToBuildInvalidatedProject),e.timerToBuildInvalidatedProject=t.setTimeout(W,250,e))}function W(t){t.timerToBuildInvalidatedProject=void 0,t.reportFileChangeDetected&&(t.reportFileChangeDetected=!1,t.projectErrorsReported.clear(),ee(t,e.Diagnostics.File_change_detected_Starting_incremental_compilation));var r=x(t),n=w(t,r,!1);n&&(n.done(),t.projectPendingBuild.size)?t.watch&&!t.timerToBuildInvalidatedProject&&q(t):(T(t),ie(t,r))}function G(t,r,n){t.watch&&!t.allWatchedConfigFiles.has(n)&&t.allWatchedConfigFiles.set(n,t.watchFile(t.hostWithWatch,r,(function(){V(t,n,e.ConfigFileProgramReloadLevel.Full)}),e.PollingInterval.High,"Config file",r))}function H(t,r,n){return 0===e.comparePaths(r,n,t.currentDirectory,!t.host.useCaseSensitiveFileNames())}function Y(t,r,n,i){t.watch&&e.updateWatchingWildcardDirectories(s(t.allWatchedWildcardDirectories,n),e.createMapFromTemplate(i.configFileSpecs.wildcardDirectories),(function(a,o){return t.watchDirectory(t.hostWithWatch,a,(function(o){var s=m(t,o);s===m(t,a)||!e.hasExtension(s)||e.isSupportedSourceFileName(o,i.options)?!function(t,r,n){if(n.options.noEmit)return!1;if(!e.fileExtensionIs(r,".d.ts")&&(e.fileExtensionIs(r,".ts")||e.fileExtensionIs(r,".tsx")))return!1;var i=n.options.outFile||n.options.out;return!(!i||!H(t,r,i)&&!H(t,r,e.removeFileExtension(i)+".d.ts"))||(!(!n.options.declarationDir||!e.containsPath(n.options.declarationDir,r,t.currentDirectory,!t.host.useCaseSensitiveFileNames()))||(!(!n.options.outDir||!e.containsPath(n.options.outDir,r,t.currentDirectory,!t.host.useCaseSensitiveFileNames()))||!e.forEach(n.fileNames,(function(e){return H(t,r,e)}))))}(t,o,i)?V(t,n,e.ConfigFileProgramReloadLevel.Partial):t.writeLog(o+" is output file"):t.writeLog("Project: "+r+" Detected file add/remove of non supported extension: "+o)}),o,"Wild card directory",r)}))}function X(t,r,n,i){t.watch&&e.mutateMap(s(t.allWatchedInputFiles,n),e.arrayToMap(i.fileNames,(function(e){return m(t,e)})),{createNewValue:function(i,a){return t.watchFilePath(t.hostWithWatch,a,(function(){return V(t,n,e.ConfigFileProgramReloadLevel.None)}),e.PollingInterval.Low,i,"Source file",r)},onDeleteValue:e.closeFileWatcher})}function Q(t,r,n,i){var a=f(t,r,n,i);return{build:function(e,t){return J(a,e,t)},clean:function(e){return z(a,e)},buildReferences:function(e,t){return J(a,e,t,!0)},cleanReferences:function(e){return z(a,e,!0)},getNextInvalidatedProject:function(e){return k(a,e),w(a,x(a),!1)},getBuildOrder:function(){return x(a)},getUpToDateStatusOfProject:function(e){var t=v(a,e),r=g(a,t);return R(a,h(a,t,r),r)},invalidateProject:function(t,r){return U(a,t,r||e.ConfigFileProgramReloadLevel.None)},buildNextInvalidatedProject:function(){return W(a)},getAllParsedConfigs:function(){return e.arrayFrom(e.mapDefinedIterator(a.configFileCache.values(),(function(e){return y(e)?e:void 0})))}}}function $(t,r){return e.convertToRelativePath(r,t.currentDirectory,(function(e){return t.getCanonicalFileName(e)}))}function Z(r,n){for(var i=[],a=2;a<arguments.length;a++)i[a-2]=arguments[a];r.host.reportSolutionBuilderStatus(e.createCompilerDiagnostic.apply(void 0,t([n],i)))}function ee(r,n){for(var i=[],a=2;a<arguments.length;a++)i[a-2]=arguments[a];r.hostWithWatch.onWatchStatusChange&&r.hostWithWatch.onWatchStatusChange(e.createCompilerDiagnostic.apply(void 0,t([n],i)),r.host.getNewLine(),r.baseCompilerOptions)}function te(e,t){var r=e.host;t.forEach((function(e){return r.reportDiagnostic(e)}))}function re(e,t,r){te(e,r),e.projectErrorsReported.set(t,!0),r.length&&e.diagnostics.set(t,r)}function ne(e,t){re(e,t,[e.configFileCache.get(t)])}function ie(t,r){if(t.needsSummary){t.needsSummary=!1;var n=t.watch||!!t.host.reportErrorSummary,i=t.diagnostics,a=0;l(r)?(ae(t,r.buildOrder),te(t,r.circularDiagnostics),n&&(a+=e.getErrorCountForSummary(r.circularDiagnostics))):(r.forEach((function(r){var n=g(t,r);t.projectErrorsReported.has(n)||te(t,i.get(n)||e.emptyArray)})),n&&i.forEach((function(t){return a+=e.getErrorCountForSummary(t)}))),t.watch?ee(t,e.getWatchErrorSummaryDiagnosticMessage(a),a):t.host.reportErrorSummary&&t.host.reportErrorSummary(a)}}function ae(t,r){t.options.verbose&&Z(t,e.Diagnostics.Projects_in_this_build_Colon_0,r.map((function(e){return"\r\n * "+$(t,e)})).join(""))}function oe(t,r,n){t.options.verbose&&function(t,r,n){switch(n.type){case e.UpToDateStatusType.OutOfDateWithSelf:return Z(t,e.Diagnostics.Project_0_is_out_of_date_because_oldest_output_1_is_older_than_newest_input_2,$(t,r),$(t,n.outOfDateOutputFileName),$(t,n.newerInputFileName));case e.UpToDateStatusType.OutOfDateWithUpstream:return Z(t,e.Diagnostics.Project_0_is_out_of_date_because_oldest_output_1_is_older_than_newest_input_2,$(t,r),$(t,n.outOfDateOutputFileName),$(t,n.newerProjectName));case e.UpToDateStatusType.OutputMissing:return Z(t,e.Diagnostics.Project_0_is_out_of_date_because_output_file_1_does_not_exist,$(t,r),$(t,n.missingOutputFileName));case e.UpToDateStatusType.UpToDate:if(void 0!==n.newestInputFileTime)return Z(t,e.Diagnostics.Project_0_is_up_to_date_because_newest_input_1_is_older_than_oldest_output_2,$(t,r),$(t,n.newestInputFileName||""),$(t,n.oldestOutputFileName||""));break;case e.UpToDateStatusType.OutOfDateWithPrepend:return Z(t,e.Diagnostics.Project_0_is_out_of_date_because_output_of_its_dependency_1_has_changed,$(t,r),$(t,n.newerProjectName));case e.UpToDateStatusType.UpToDateWithUpstreamTypes:return Z(t,e.Diagnostics.Project_0_is_up_to_date_with_d_ts_files_from_its_dependencies,$(t,r));case e.UpToDateStatusType.UpstreamOutOfDate:return Z(t,e.Diagnostics.Project_0_is_out_of_date_because_its_dependency_1_is_out_of_date,$(t,r),$(t,n.upstreamProjectName));case e.UpToDateStatusType.UpstreamBlocked:return Z(t,n.upstreamProjectBlocked?e.Diagnostics.Project_0_can_t_be_built_because_its_dependency_1_was_not_built:e.Diagnostics.Project_0_can_t_be_built_because_its_dependency_1_has_errors,$(t,r),$(t,n.upstreamProjectName));case e.UpToDateStatusType.Unbuildable:return Z(t,e.Diagnostics.Failed_to_parse_file_0_Colon_1,$(t,r),n.reason);case e.UpToDateStatusType.TsVersionOutputOfDate:return Z(t,e.Diagnostics.Project_0_is_out_of_date_because_output_for_it_was_generated_with_version_1_that_differs_with_current_version_2,$(t,r),n.version,e.version);case e.UpToDateStatusType.ContainerOnly:case e.UpToDateStatusType.ComputingUpstream:break;default:e.assertType(n)}}(t,r,n)}!function(e){e[e.None=0]="None",e[e.Success=1]="Success",e[e.DeclarationOutputUnchanged=2]="DeclarationOutputUnchanged",e[e.ConfigFileErrors=4]="ConfigFileErrors",e[e.SyntaxErrors=8]="SyntaxErrors",e[e.TypeErrors=16]="TypeErrors",e[e.DeclarationEmitErrors=32]="DeclarationEmitErrors",e[e.EmitErrors=64]="EmitErrors",e[e.AnyErrors=124]="AnyErrors"}(r||(r={})),e.isCircularBuildOrder=l,e.getBuildOrderFromAnyBuildOrder=_,e.createBuilderStatusReporter=d,e.createSolutionBuilderHost=function(t,r,n,i,a){void 0===t&&(t=e.sys);var o=p(t,r,n,i);return o.reportErrorSummary=a,o},e.createSolutionBuilderWithWatchHost=function(t,r,n,i,a){void 0===t&&(t=e.sys);var o=p(t,r,n,i),s=e.createWatchHost(t,a);return e.copyProperties(o,s),o},e.createSolutionBuilder=function(e,t,r){return Q(!1,e,t,r)},e.createSolutionBuilderWithWatch=function(e,t,r){return Q(!0,e,t,r)},function(e){e[e.Build=0]="Build",e[e.UpdateBundle=1]="UpdateBundle",e[e.UpdateOutputFileStamps=2]="UpdateOutputFileStamps"}(n=e.InvalidatedProjectKind||(e.InvalidatedProjectKind={}))}(s||(s={})),function(e){!function(t){t.ActionSet="action::set",t.ActionInvalidate="action::invalidate",t.ActionPackageInstalled="action::packageInstalled",t.EventTypesRegistry="event::typesRegistry",t.EventBeginInstallTypes="event::beginInstallTypes",t.EventEndInstallTypes="event::endInstallTypes",t.EventInitializationFailed="event::initializationFailed",function(e){e.GlobalCacheLocation="--globalTypingsCacheLocation",e.LogFile="--logFile",e.EnableTelemetry="--enableTelemetry",e.TypingSafeListLocation="--typingSafeListLocation",e.TypesMapLocation="--typesMapLocation",e.NpmLocation="--npmLocation",e.ValidateDefaultNpmLocation="--validateDefaultNpmLocation"}(t.Arguments||(t.Arguments={})),t.hasArgument=function(t){return e.sys.args.indexOf(t)>=0},t.findArgument=function(t){var r=e.sys.args.indexOf(t);return r>=0&&r<e.sys.args.length-1?e.sys.args[r+1]:void 0},t.nowString=function(){var e=new Date;return e.getHours()+":"+e.getMinutes()+":"+e.getSeconds()+"."+e.getMilliseconds()}}(e.server||(e.server={}))}(s||(s={})),function(e){!function(t){function r(t,r){return new e.Version(e.getProperty(r,"ts"+e.versionMajorMinor)||e.getProperty(r,"latest")).compareTo(t.version)<=0}function n(e){return t.nodeCoreModules.has(e)?"node":e}t.isTypingUpToDate=r,t.nodeCoreModuleList=["assert","async_hooks","buffer","child_process","cluster","console","constants","crypto","dgram","dns","domain","events","fs","http","https","http2","inspector","net","os","path","perf_hooks","process","punycode","querystring","readline","repl","stream","string_decoder","timers","tls","tty","url","util","v8","vm","zlib"],t.nodeCoreModules=e.arrayToSet(t.nodeCoreModuleList),t.nonRelativeModuleNameForTypingCache=n,t.loadSafeList=function(t,r){var n=e.readConfigFile(r,(function(e){return t.readFile(e)}));return e.createMapFromTemplate(n.config)},t.loadTypesMap=function(t,r){var n=e.readConfigFile(r,(function(e){return t.readFile(e)}));if(n.config)return e.createMapFromTemplate(n.config.simpleMap)},t.discoverTypings=function(t,i,a,o,s,c,u,l,_){if(!u||!u.enable)return{cachedTypingPaths:[],newTypingNames:[],filesToWatch:[]};var d=e.createMap();a=e.mapDefined(a,(function(t){var r=e.normalizePath(t);if(e.hasJSFileExtension(r))return r}));var p=[];u.include&&S(u.include,"Explicitly included types");var f=u.exclude||[],m=e.arrayToSet(a,e.getDirectoryPath);m.set(o,!0),m.forEach((function(t,r){T(e.combinePaths(r,"package.json"),p),T(e.combinePaths(r,"bower.json"),p),E(e.combinePaths(r,"bower_components"),p),E(e.combinePaths(r,"node_modules"),p)})),function(t){var r=e.mapDefined(t,(function(t){if(e.hasJSFileExtension(t)){var r=e.removeFileExtension(e.getBaseFileName(t.toLowerCase())),n=e.removeMinAndVersionNumbers(r);return s.get(n)}}));r.length&&S(r,"Inferred typings from file names");e.some(t,(function(t){return e.fileExtensionIs(t,".jsx")}))&&(i&&i("Inferred 'react' typings due to presence of '.jsx' extension"),D("react"))}(a),l&&S(e.deduplicate(l.map(n),e.equateStringsCaseSensitive,e.compareStringsCaseSensitive),"Inferred typings from unresolved imports"),c.forEach((function(e,t){var n=_.get(t);d.has(t)&&void 0===d.get(t)&&void 0!==n&&r(e,n)&&d.set(t,e.typingLocation)}));for(var g=0,y=f;g<y.length;g++){var h=y[g];d.delete(h)&&i&&i("Typing for "+h+" is in exclude list, will be ignored.")}var v=[],b=[];d.forEach((function(e,t){void 0!==e?b.push(e):v.push(t)}));var x={cachedTypingPaths:b,newTypingNames:v,filesToWatch:p};return i&&i("Result: "+JSON.stringify(x)),x;function D(e){d.has(e)||d.set(e,void 0)}function S(t,r){i&&i(r+": "+JSON.stringify(t)),e.forEach(t,D)}function T(r,n){if(t.fileExists(r)){n.push(r);var i=e.readConfigFile(r,(function(e){return t.readFile(e)})).config;S(e.flatMap([i.dependencies,i.devDependencies,i.optionalDependencies,i.peerDependencies],e.getOwnKeys),"Typing names in '"+r+"' dependencies")}}function E(r,n){if(n.push(r),t.directoryExists(r)){var a=t.readDirectory(r,[".json"],void 0,void 0,2);i&&i("Searching for typing names in "+r+"; all files: "+JSON.stringify(a));for(var o=[],s=0,c=a;s<c.length;s++){var u=c[s],l=e.normalizePath(u),_=e.getBaseFileName(l);if("package.json"===_||"bower.json"===_){var p=e.readConfigFile(l,(function(e){return t.readFile(e)})).config;if(("package.json"!==_||!p._requiredBy||0!==e.filter(p._requiredBy,(function(e){return"#"===e[0]||"/"===e})).length)&&p.name){var f=p.types||p.typings;if(f){var m=e.getNormalizedAbsolutePath(f,e.getDirectoryPath(l));i&&i(" Package '"+p.name+"' provides its own types."),d.set(p.name,m)}else o.push(p.name)}}}S(o," Found package names")}}},function(e){e[e.Ok=0]="Ok",e[e.EmptyName=1]="EmptyName",e[e.NameTooLong=2]="NameTooLong",e[e.NameStartsWithDot=3]="NameStartsWithDot",e[e.NameStartsWithUnderscore=4]="NameStartsWithUnderscore",e[e.NameContainsNonURISafeCharacters=5]="NameContainsNonURISafeCharacters"}(t.NameValidationResult||(t.NameValidationResult={}));var i=214;function a(t,r,n,a){var o=a?"Scope":"Package";switch(r){case 1:return"'"+t+"':: "+o+" name '"+n+"' cannot be empty";case 2:return"'"+t+"':: "+o+" name '"+n+"' should be less than "+i+" characters";case 3:return"'"+t+"':: "+o+" name '"+n+"' cannot start with '.'";case 4:return"'"+t+"':: "+o+" name '"+n+"' cannot start with '_'";case 5:return"'"+t+"':: "+o+" name '"+n+"' contains non URI safe characters";case 0:return e.Debug.fail();default:throw e.Debug.assertNever(r)}}t.validatePackageName=function(e){return function e(t,r){if(!t)return 1;if(t.length>i)return 2;if(46===t.charCodeAt(0))return 3;if(95===t.charCodeAt(0))return 4;if(r){var n=/^@([^/]+)\/([^/]+)$/.exec(t);if(n){var a=e(n[1],!1);if(0!==a)return{name:n[1],isScopeName:!0,result:a};var o=e(n[2],!1);return 0!==o?{name:n[2],isScopeName:!1,result:o}:0}}if(encodeURIComponent(t)!==t)return 5;return 0}(e,!0)},t.renderPackageNameValidationFailure=function(e,t){return"object"===f(e)?a(t,e.result,e.name,e.isScopeName):a(t,e,t,!1)}}(e.JsTyping||(e.JsTyping={}))}(s||(s={})),function(e){var t,r;function n(e){return{indentSize:4,tabSize:4,newLineCharacter:e||"\n",convertTabsToSpaces:!0,indentStyle:t.Smart,insertSpaceAfterConstructor:!1,insertSpaceAfterCommaDelimiter:!0,insertSpaceAfterSemicolonInForStatements:!0,insertSpaceBeforeAndAfterBinaryOperators:!0,insertSpaceAfterKeywordsInControlFlowStatements:!0,insertSpaceAfterFunctionKeywordForAnonymousFunctions:!1,insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis:!1,insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets:!1,insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces:!0,insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces:!1,insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces:!1,insertSpaceBeforeFunctionParenthesis:!1,placeOpenBraceOnNewLineForFunctions:!1,placeOpenBraceOnNewLineForControlBlocks:!1,semicolons:r.Ignore}}!function(e){var t=function(){function e(e){this.text=e}return e.prototype.getText=function(e,t){return 0===e&&t===this.text.length?this.text:this.text.substring(e,t)},e.prototype.getLength=function(){return this.text.length},e.prototype.getChangeRange=function(){},e}();e.fromString=function(e){return new t(e)}}(e.ScriptSnapshot||(e.ScriptSnapshot={})),function(e){e[e.Dependencies=1]="Dependencies",e[e.DevDependencies=2]="DevDependencies",e[e.PeerDependencies=4]="PeerDependencies",e[e.OptionalDependencies=8]="OptionalDependencies",e[e.All=15]="All"}(e.PackageJsonDependencyGroup||(e.PackageJsonDependencyGroup={})),e.emptyOptions={},function(e){e.none="none",e.definition="definition",e.reference="reference",e.writtenReference="writtenReference"}(e.HighlightSpanKind||(e.HighlightSpanKind={})),function(e){e[e.None=0]="None",e[e.Block=1]="Block",e[e.Smart=2]="Smart"}(t=e.IndentStyle||(e.IndentStyle={})),function(e){e.Ignore="ignore",e.Insert="insert",e.Remove="remove"}(r=e.SemicolonPreference||(e.SemicolonPreference={})),e.getDefaultFormatCodeSettings=n,e.testFormatSettings=n("\n"),function(e){e[e.aliasName=0]="aliasName",e[e.className=1]="className",e[e.enumName=2]="enumName",e[e.fieldName=3]="fieldName",e[e.interfaceName=4]="interfaceName",e[e.keyword=5]="keyword",e[e.lineBreak=6]="lineBreak",e[e.numericLiteral=7]="numericLiteral",e[e.stringLiteral=8]="stringLiteral",e[e.localName=9]="localName",e[e.methodName=10]="methodName",e[e.moduleName=11]="moduleName",e[e.operator=12]="operator",e[e.parameterName=13]="parameterName",e[e.propertyName=14]="propertyName",e[e.punctuation=15]="punctuation",e[e.space=16]="space",e[e.text=17]="text",e[e.typeParameterName=18]="typeParameterName",e[e.enumMemberName=19]="enumMemberName",e[e.functionName=20]="functionName",e[e.regularExpressionLiteral=21]="regularExpressionLiteral"}(e.SymbolDisplayPartKind||(e.SymbolDisplayPartKind={})),function(e){e.Comment="comment",e.Region="region",e.Code="code",e.Imports="imports"}(e.OutliningSpanKind||(e.OutliningSpanKind={})),function(e){e[e.JavaScript=0]="JavaScript",e[e.SourceMap=1]="SourceMap",e[e.Declaration=2]="Declaration"}(e.OutputFileType||(e.OutputFileType={})),function(e){e[e.None=0]="None",e[e.InMultiLineCommentTrivia=1]="InMultiLineCommentTrivia",e[e.InSingleQuoteStringLiteral=2]="InSingleQuoteStringLiteral",e[e.InDoubleQuoteStringLiteral=3]="InDoubleQuoteStringLiteral",e[e.InTemplateHeadOrNoSubstitutionTemplate=4]="InTemplateHeadOrNoSubstitutionTemplate",e[e.InTemplateMiddleOrTail=5]="InTemplateMiddleOrTail",e[e.InTemplateSubstitutionPosition=6]="InTemplateSubstitutionPosition"}(e.EndOfLineState||(e.EndOfLineState={})),function(e){e[e.Punctuation=0]="Punctuation",e[e.Keyword=1]="Keyword",e[e.Operator=2]="Operator",e[e.Comment=3]="Comment",e[e.Whitespace=4]="Whitespace",e[e.Identifier=5]="Identifier",e[e.NumberLiteral=6]="NumberLiteral",e[e.BigIntLiteral=7]="BigIntLiteral",e[e.StringLiteral=8]="StringLiteral",e[e.RegExpLiteral=9]="RegExpLiteral"}(e.TokenClass||(e.TokenClass={})),function(e){e.unknown="",e.warning="warning",e.keyword="keyword",e.scriptElement="script",e.moduleElement="module",e.classElement="class",e.localClassElement="local class",e.interfaceElement="interface",e.typeElement="type",e.enumElement="enum",e.enumMemberElement="enum member",e.variableElement="var",e.localVariableElement="local var",e.functionElement="function",e.localFunctionElement="local function",e.memberFunctionElement="method",e.memberGetAccessorElement="getter",e.memberSetAccessorElement="setter",e.memberVariableElement="property",e.constructorImplementationElement="constructor",e.callSignatureElement="call",e.indexSignatureElement="index",e.constructSignatureElement="construct",e.parameterElement="parameter",e.typeParameterElement="type parameter",e.primitiveType="primitive type",e.label="label",e.alias="alias",e.constElement="const",e.letElement="let",e.directory="directory",e.externalModuleName="external module name",e.jsxAttribute="JSX attribute",e.string="string"}(e.ScriptElementKind||(e.ScriptElementKind={})),function(e){e.none="",e.publicMemberModifier="public",e.privateMemberModifier="private",e.protectedMemberModifier="protected",e.exportedModifier="export",e.ambientModifier="declare",e.staticModifier="static",e.abstractModifier="abstract",e.optionalModifier="optional",e.dtsModifier=".d.ts",e.tsModifier=".ts",e.tsxModifier=".tsx",e.jsModifier=".js",e.jsxModifier=".jsx",e.jsonModifier=".json"}(e.ScriptElementKindModifier||(e.ScriptElementKindModifier={})),function(e){e.comment="comment",e.identifier="identifier",e.keyword="keyword",e.numericLiteral="number",e.bigintLiteral="bigint",e.operator="operator",e.stringLiteral="string",e.whiteSpace="whitespace",e.text="text",e.punctuation="punctuation",e.className="class name",e.enumName="enum name",e.interfaceName="interface name",e.moduleName="module name",e.typeParameterName="type parameter name",e.typeAliasName="type alias name",e.parameterName="parameter name",e.docCommentTagName="doc comment tag name",e.jsxOpenTagName="jsx open tag name",e.jsxCloseTagName="jsx close tag name",e.jsxSelfClosingTagName="jsx self closing tag name",e.jsxAttribute="jsx attribute",e.jsxText="jsx text",e.jsxAttributeStringLiteralValue="jsx attribute string literal value"}(e.ClassificationTypeNames||(e.ClassificationTypeNames={})),function(e){e[e.comment=1]="comment",e[e.identifier=2]="identifier",e[e.keyword=3]="keyword",e[e.numericLiteral=4]="numericLiteral",e[e.operator=5]="operator",e[e.stringLiteral=6]="stringLiteral",e[e.regularExpressionLiteral=7]="regularExpressionLiteral",e[e.whiteSpace=8]="whiteSpace",e[e.text=9]="text",e[e.punctuation=10]="punctuation",e[e.className=11]="className",e[e.enumName=12]="enumName",e[e.interfaceName=13]="interfaceName",e[e.moduleName=14]="moduleName",e[e.typeParameterName=15]="typeParameterName",e[e.typeAliasName=16]="typeAliasName",e[e.parameterName=17]="parameterName",e[e.docCommentTagName=18]="docCommentTagName",e[e.jsxOpenTagName=19]="jsxOpenTagName",e[e.jsxCloseTagName=20]="jsxCloseTagName",e[e.jsxSelfClosingTagName=21]="jsxSelfClosingTagName",e[e.jsxAttribute=22]="jsxAttribute",e[e.jsxText=23]="jsxText",e[e.jsxAttributeStringLiteralValue=24]="jsxAttributeStringLiteralValue",e[e.bigintLiteral=25]="bigintLiteral"}(e.ClassificationType||(e.ClassificationType={}))}(s||(s={})),function(e){function t(t){switch(t.kind){case 241:return e.isInJSFile(t)&&e.getJSDocEnumTag(t)?7:1;case 155:case 190:case 158:case 157:case 279:case 280:case 160:case 159:case 161:case 162:case 163:case 243:case 200:case 201:case 278:case 271:return 1;case 154:case 245:case 246:case 172:return 2;case 315:return void 0===t.name?3:2;case 282:case 244:return 3;case 248:return e.isAmbientModule(t)?5:1===e.getModuleInstanceState(t)?5:4;case 247:case 256:case 257:case 252:case 253:case 258:case 259:return 7;case 288:return 5}return 7}function r(t){for(;152===t.parent.kind;)t=t.parent;return e.isInternalModuleImportEqualsDeclaration(t.parent)&&t.parent.moduleReference===t}function n(e,t){var r=i(e);return!!r&&!!r.parent&&t(r.parent)&&r.parent.expression===r}function i(e){return s(e)?e.parent:e}function a(t){return 75===t.kind&&e.isBreakOrContinueStatement(t.parent)&&t.parent.label===t}function o(t){return 75===t.kind&&e.isLabeledStatement(t.parent)&&t.parent.label===t}function s(e){return e&&e.parent&&193===e.parent.kind&&e.parent.name===e}e.scanner=e.createScanner(99,!0),function(e){e[e.None=0]="None",e[e.Value=1]="Value",e[e.Type=2]="Type",e[e.Namespace=4]="Namespace",e[e.All=7]="All"}(e.SemanticMeaning||(e.SemanticMeaning={})),e.getMeaningFromDeclaration=t,e.getMeaningFromLocation=function(n){return 288===n.kind?1:258===n.parent.kind||263===n.parent.kind?7:r(n)?function(t){var r=152===t.kind?t:e.isQualifiedName(t.parent)&&t.parent.right===t?t.parent:void 0;return r&&252===r.parent.kind?7:4}(n):e.isDeclarationName(n)?t(n.parent):function(t){e.isRightSideOfQualifiedNameOrPropertyAccess(t)&&(t=t.parent);switch(t.kind){case 103:return!e.isExpressionNode(t);case 182:return!0}switch(t.parent.kind){case 168:return!0;case 187:return!t.parent.isTypeOf;case 215:return!e.isExpressionWithTypeArgumentsInClassExtendsClause(t.parent)}return!1}(n)?2:function(e){return function(e){var t=e,r=!0;if(152===t.parent.kind){for(;t.parent&&152===t.parent.kind;)t=t.parent;r=t.right===e}return 168===t.parent.kind&&!r}(e)||function(e){var t=e,r=!0;if(193===t.parent.kind){for(;t.parent&&193===t.parent.kind;)t=t.parent;r=t.name===e}if(!r&&215===t.parent.kind&&277===t.parent.parent.kind){var n=t.parent.parent.parent;return 244===n.kind&&112===t.parent.parent.token||245===n.kind&&89===t.parent.parent.token}return!1}(e)}(n)?4:e.isTypeParameterDeclaration(n.parent)?(e.Debug.assert(e.isJSDocTemplateTag(n.parent.parent)),2):e.isLiteralTypeNode(n.parent)?3:1},e.isInRightSideOfInternalImportEqualsDeclaration=r,e.isCallExpressionTarget=function(t){return n(t,e.isCallExpression)},e.isNewExpressionTarget=function(t){return n(t,e.isNewExpression)},e.isCallOrNewExpressionTarget=function(t){return n(t,e.isCallOrNewExpression)},e.climbPastPropertyAccess=i,e.getTargetLabel=function(e,t){for(;e;){if(237===e.kind&&e.label.escapedText===t)return e.label;e=e.parent}},e.hasPropertyAccessExpressionWithName=function(t,r){return!!e.isPropertyAccessExpression(t.expression)&&t.expression.name.text===r},e.isJumpStatementTarget=a,e.isLabelOfLabeledStatement=o,e.isLabelName=function(e){return o(e)||a(e)},e.isTagName=function(t){return e.isJSDocTag(t.parent)&&t.parent.tagName===t},e.isRightSideOfQualifiedName=function(e){return 152===e.parent.kind&&e.parent.right===e},e.isRightSideOfPropertyAccess=s,e.isNameOfModuleDeclaration=function(e){return 248===e.parent.kind&&e.parent.name===e},e.isNameOfFunctionDeclaration=function(t){return 75===t.kind&&e.isFunctionLike(t.parent)&&t.parent.name===t},e.isLiteralNameOfPropertyDeclarationOrIndexAccess=function(t){switch(t.parent.kind){case 158:case 157:case 279:case 282:case 160:case 159:case 162:case 163:case 248:return e.getNameOfDeclaration(t.parent)===t;case 194:return t.parent.argumentExpression===t;case 153:return!0;case 186:return 184===t.parent.parent.kind;default:return!1}},e.isExpressionOfExternalModuleImportEqualsDeclaration=function(t){return e.isExternalModuleImportEqualsDeclaration(t.parent.parent)&&e.getExternalModuleImportEqualsDeclarationExpression(t.parent.parent)===t},e.getContainerNode=function(t){for(e.isJSDocTypeAlias(t)&&(t=t.parent.parent);;){if(!(t=t.parent))return;switch(t.kind){case 288:case 160:case 159:case 243:case 200:case 162:case 163:case 244:case 245:case 247:case 248:return t}}},e.getNodeKind=function t(r){switch(r.kind){case 288:return e.isExternalModule(r)?"module":"script";case 248:return"module";case 244:case 213:return"class";case 245:return"interface";case 246:case 308:case 315:return"type";case 247:return"enum";case 241:return s(r);case 190:return s(e.getRootDeclaration(r));case 201:case 243:case 200:return"function";case 162:return"getter";case 163:return"setter";case 160:case 159:return"method";case 279:var n=r.initializer;return e.isFunctionLike(n)?"method":"property";case 158:case 157:case 280:case 281:return"property";case 166:return"index";case 165:return"construct";case 164:return"call";case 161:return"constructor";case 154:return"type parameter";case 282:return"enum member";case 155:return e.hasModifier(r,92)?"property":"parameter";case 252:case 257:case 261:case 255:return"alias";case 208:var i=e.getAssignmentDeclarationKind(r),a=r.right;switch(i){case 7:case 8:case 9:case 0:return"";case 1:case 2:var o=t(a);return""===o?"const":o;case 3:return e.isFunctionExpression(a)?"method":"property";case 4:return"property";case 5:return e.isFunctionExpression(a)?"method":"property";case 6:return"local class";default:return e.assertType(i),""}case 75:return e.isImportClause(r.parent)?"alias":"";default:return""}function s(t){return e.isVarConst(t)?"const":e.isLet(t)?"let":"var"}},e.isThis=function(t){switch(t.kind){case 103:return!0;case 75:return e.identifierIsThisKeyword(t)&&155===t.parent.kind;default:return!1}};var c=/^\/\/\/\s*</;function u(e,t){return _(e.pos,e.end,t)}function l(e,t){return e.pos<t&&t<e.end}function _(e,t,r){return e<=r.pos&&t>=r.end}function d(e,t,r,n){return Math.max(e,r)<Math.min(t,n)}function p(t,r,n){var i=t.getChildren(n);if(i.length){var a=e.last(i);if(a.kind===r)return!0;if(26===a.kind&&1!==i.length)return i[i.length-2].kind===r}return!1}function f(e,t,r){return!!m(e,t,r)}function m(t,r,n){return e.find(t.getChildren(n),(function(e){return e.kind===r}))}function g(t){var r=e.find(t.parent.getChildren(),(function(r){return e.isSyntaxList(r)&&u(r,t)}));return e.Debug.assert(!r||e.contains(r.getChildren(),t)),r}function y(e,t,r){return v(e,t,!1,r,!1)}function h(e,t){return v(e,t,!0,void 0,!1)}function v(e,t,r,n,i){var a=e;e:for(;;){for(var o=0,s=a.getChildren(e);o<s.length;o++){var c=s[o];if((r?c.getFullStart():c.getStart(e,!0))>t)break;var u=c.getEnd();if(t<u||t===u&&(1===c.kind||i)){a=c;continue e}if(n&&u===t){var l=b(t,e,c);if(l&&n(l))return l}}return a}}function b(t,r,n,i){var a=function a(o){if(x(o)&&1!==o.kind)return o;var s=o.getChildren(r);for(var c=0;c<s.length;c++){var u=s[c];if(t<u.end){if(u.getStart(r,!i)>=t||!F(u,r)||T(u)){var l=S(s,c,r);return l&&D(l,r)}return a(u)}}e.Debug.assert(void 0!==n||288===o.kind||1===o.kind||e.isJSDocCommentContainingNode(o));var _=S(s,s.length,r);return _&&D(_,r)}(n||r);return e.Debug.assert(!(a&&T(a))),a}function x(t){return e.isToken(t)&&!T(t)}function D(e,t){if(x(e))return e;var r=e.getChildren(t),n=S(r,r.length,t);return n&&D(n,t)}function S(t,r,n){for(var i=r-1;i>=0;i--){if(T(t[i]))e.Debug.assert(i>0,"`JsxText` tokens should not be the first child of `JsxElement | JsxSelfClosingElement`");else if(F(t[i],n))return t[i]}}function T(t){return e.isJsxText(t)&&t.containsOnlyTriviaWhiteSpaces}function E(e,t,r){for(var n=e.kind,i=0;;){var a=b(e.getFullStart(),r);if(!a)return;if((e=a).kind===t){if(0===i)return e;i--}else e.kind===n&&i++}}function C(e,t,r){return t?e.getNonNullableType():r?e.getNonOptionalType():e}function k(t,r,n){var i=n.getTypeAtLocation(t);return e.isOptionalChain(t.parent)&&(i=C(i,!!t.parent.questionDotToken,!0)),(e.isNewExpression(t.parent)?i.getConstructSignatures():i.getCallSignatures()).filter((function(e){return!!e.typeParameters&&e.typeParameters.length>=r}))}function N(t,r){for(var n=t,i=0,a=0;n;){switch(n.kind){case 29:if((n=b(n.getFullStart(),r))&&28===n.kind&&(n=b(n.getFullStart(),r)),!n||!e.isIdentifier(n))return;if(!i)return e.isDeclarationName(n)?void 0:{called:n,nTypeArguments:a};i--;break;case 49:i=3;break;case 48:i=2;break;case 31:i++;break;case 19:if(!(n=E(n,18,r)))return;break;case 21:if(!(n=E(n,20,r)))return;break;case 23:if(!(n=E(n,22,r)))return;break;case 27:a++;break;case 38:case 75:case 10:case 8:case 9:case 105:case 90:case 107:case 89:case 133:case 24:case 51:case 57:case 58:break;default:if(e.isTypeNode(n))break;return}n=b(n.getFullStart(),r)}}function A(t,r,n){return e.formatting.getRangeOfEnclosingComment(t,r,void 0,n)}function F(e,t){return 1===e.kind?!!e.jsDoc:0!==e.getWidth(t)}function P(e,t,r){var n=A(e,t,void 0);return!!n&&r===c.test(e.text.substring(n.pos,n.end))}function w(e,t){return{span:e,newText:t}}function I(e){return!!e.useCaseSensitiveFileNames&&e.useCaseSensitiveFileNames()}function O(t,r,n,i){return e.createImportDeclaration(void 0,void 0,t||r?e.createImportClause(t,r&&r.length?e.createNamedImports(r):void 0):void 0,"string"==typeof n?M(n,i):n)}function M(t,r){return e.createLiteral(t,0===r)}function L(t,r){return e.isStringDoubleQuoted(t,r)?1:0}function R(t){return"default"!==t.escapedName?t.escapedName:e.firstDefined(t.declarations,(function(t){var r=e.getNameOfDeclaration(t);return r&&75===r.kind?r.escapedText:void 0}))}function B(t,r,n,i){var a=e.createMap();return function t(o){if(!(96&o.flags&&e.addToSeen(a,e.getSymbolId(o))))return;return e.firstDefined(o.declarations,(function(a){return e.firstDefined(e.getAllSuperTypeNodes(a),(function(a){var o=n.getTypeAtLocation(a),s=o&&o.symbol&&n.getPropertyOfType(o,r);return o&&s&&(e.firstDefined(n.getRootSymbols(s),i)||t(o.symbol))}))}))}(t)}function j(t,r,n){return e.textSpanContainsPosition(t,r.getStart(n))&&r.getEnd()<=e.textSpanEnd(t)}function K(e,t){return!!e&&!!t&&e.start===t.start&&e.length===t.length}e.getLineStartPositionForPosition=function(t,r){return e.getLineStarts(r)[r.getLineAndCharacterOfPosition(t).line]},e.rangeContainsRange=u,e.rangeContainsRangeExclusive=function(e,t){return l(e,t.pos)&&l(e,t.end)},e.rangeContainsPosition=function(e,t){return e.pos<=t&&t<=e.end},e.rangeContainsPositionExclusive=l,e.startEndContainsRange=_,e.rangeContainsStartEnd=function(e,t,r){return e.pos<=t&&e.end>=r},e.rangeOverlapsWithStartEnd=function(e,t,r){return d(e.pos,e.end,t,r)},e.nodeOverlapsWithStartEnd=function(e,t,r,n){return d(e.getStart(t),e.end,r,n)},e.startEndOverlapsWithStartEnd=d,e.positionBelongsToNode=function(t,r,n){return e.Debug.assert(t.pos<=r),r<t.end||!function t(r,n){if(void 0===r||e.nodeIsMissing(r))return!1;switch(r.kind){case 244:case 245:case 247:case 192:case 188:case 172:case 222:case 249:case 250:case 256:case 260:return p(r,19,n);case 278:return t(r.block,n);case 196:if(!r.arguments)return!0;case 195:case 199:case 181:return p(r,21,n);case 169:case 170:return t(r.type,n);case 161:case 162:case 163:case 243:case 200:case 160:case 159:case 165:case 164:case 201:return r.body?t(r.body,n):r.type?t(r.type,n):f(r,21,n);case 248:return!!r.body&&t(r.body,n);case 226:return r.elseStatement?t(r.elseStatement,n):t(r.thenStatement,n);case 225:return t(r.expression,n)||f(r,26,n);case 191:case 189:case 194:case 153:case 174:return p(r,23,n);case 166:return r.type?t(r.type,n):f(r,23,n);case 275:case 276:return!1;case 229:case 230:case 231:case 228:return t(r.statement,n);case 227:return f(r,110,n)?p(r,21,n):t(r.statement,n);case 171:return t(r.exprName,n);case 203:case 202:case 204:case 211:case 212:return t(r.expression,n);case 197:return t(r.template,n);case 210:var i=e.lastOrUndefined(r.templateSpans);return t(i,n);case 220:return e.nodeIsPresent(r.literal);case 259:case 253:return e.nodeIsPresent(r.moduleSpecifier);case 206:return t(r.operand,n);case 208:return t(r.right,n);case 209:return t(r.whenFalse,n);default:return!0}}(t,n)},e.findListItemInfo=function(t){var r=g(t);if(r){var n=r.getChildren();return{listItemIndex:e.indexOfNode(n,t),list:r}}},e.hasChildOfKind=f,e.findChildOfKind=m,e.findContainingList=g,e.getTouchingPropertyName=function(t,r){return y(t,r,(function(t){return e.isPropertyNameLiteral(t)||e.isKeyword(t.kind)}))},e.getTouchingToken=y,e.getTokenAtPosition=h,e.findTokenOnLeftOfPosition=function(t,r){var n=h(t,r);return e.isToken(n)&&r>n.getStart(t)&&r<n.getEnd()?n:b(r,t)},e.findNextToken=function(t,r,n){return function r(i){if(e.isToken(i)&&i.pos===t.end)return i;return e.firstDefined(i.getChildren(n),(function(e){return(e.pos<=t.pos&&e.end>t.end||e.pos===t.end)&&F(e,n)?r(e):void 0}))}(r)},e.findPrecedingToken=b,e.isInString=function(t,r,n){if(void 0===n&&(n=b(r,t)),n&&e.isStringTextContainingNode(n)){var i=n.getStart(t),a=n.getEnd();if(i<r&&r<a)return!0;if(r===a)return!!n.isUnterminated}return!1},e.isInsideJsxElementOrAttribute=function(e,t){var r=h(e,t);return!!r&&(11===r.kind||(29===r.kind&&11===r.parent.kind||(29===r.kind&&274===r.parent.kind||(!(!r||19!==r.kind||274!==r.parent.kind)||29===r.kind&&267===r.parent.kind))))},e.isInTemplateString=function(t,r){var n=h(t,r);return e.isTemplateLiteralKind(n.kind)&&r>n.getStart(t)},e.isInJSXText=function(t,r){var n=h(t,r);return!!e.isJsxText(n)||(!(18!==n.kind||!e.isJsxExpression(n.parent)||!e.isJsxElement(n.parent.parent))||!(29!==n.kind||!e.isJsxOpeningLikeElement(n.parent)||!e.isJsxElement(n.parent.parent)))},e.findPrecedingMatchingToken=E,e.removeOptionality=C,e.isPossiblyTypeArgumentPosition=function t(r,n,i){var a=N(r,n);return void 0!==a&&(e.isPartOfTypeNode(a.called)||0!==k(a.called,a.nTypeArguments,i).length||t(a.called,n,i))},e.getPossibleGenericSignatures=k,e.getPossibleTypeArgumentsInfo=N,e.isInComment=A,e.hasDocComment=function(t,r){var n=h(t,r);return!!e.findAncestor(n,e.isJSDoc)},e.getNodeModifiers=function(t){var r=e.isDeclaration(t)?e.getCombinedModifierFlags(t):0,n=[];return 8&r&&n.push("private"),16&r&&n.push("protected"),4&r&&n.push("public"),32&r&&n.push("static"),128&r&&n.push("abstract"),1&r&&n.push("export"),8388608&t.flags&&n.push("declare"),n.length>0?n.join(","):""},e.getTypeArgumentOrTypeParameterList=function(t){return 168===t.kind||195===t.kind?t.typeArguments:e.isFunctionLike(t)||244===t.kind||245===t.kind?t.typeParameters:void 0},e.isComment=function(e){return 2===e||3===e},e.isStringOrRegularExpressionOrTemplateLiteral=function(t){return!(10!==t&&13!==t&&!e.isTemplateLiteralKind(t))},e.isPunctuation=function(e){return 18<=e&&e<=74},e.isInsideTemplateLiteral=function(t,r,n){return e.isTemplateLiteralKind(t.kind)&&t.getStart(n)<r&&r<t.end||!!t.isUnterminated&&r===t.end},e.isAccessibilityModifier=function(e){switch(e){case 118:case 116:case 117:return!0}return!1},e.cloneCompilerOptions=function(t){var r=e.clone(t);return e.setConfigFileInOptions(r,t&&t.configFile),r},e.isArrayLiteralOrObjectLiteralDestructuringPattern=function e(t){if(191===t.kind||192===t.kind){if(208===t.parent.kind&&t.parent.left===t&&62===t.parent.operatorToken.kind)return!0;if(231===t.parent.kind&&t.parent.initializer===t)return!0;if(e(279===t.parent.kind?t.parent.parent:t.parent))return!0}return!1},e.isInReferenceComment=function(e,t){return P(e,t,!0)},e.isInNonReferenceComment=function(e,t){return P(e,t,!1)},e.createTextSpanFromNode=function(t,r,n){return e.createTextSpanFromBounds(t.getStart(r),(n||t).getEnd())},e.createTextRangeFromNode=function(t,r){return e.createRange(t.getStart(r),t.end)},e.createTextSpanFromRange=function(t){return e.createTextSpanFromBounds(t.pos,t.end)},e.createTextRangeFromSpan=function(t){return e.createRange(t.start,t.start+t.length)},e.createTextChangeFromStartLength=function(t,r,n){return w(e.createTextSpan(t,r),n)},e.createTextChange=w,e.typeKeywords=[124,150,127,90,133,136,99,139,140,137,142,143,105,109,145,146,147],e.isTypeKeyword=function(t){return e.contains(e.typeKeywords,t)},e.isExternalModuleSymbol=function(e){return!!(1536&e.flags)&&34===e.name.charCodeAt(0)},e.nodeSeenTracker=function(){var t=[];return function(r){var n=e.getNodeId(r);return!t[n]&&(t[n]=!0)}},e.getSnapshotText=function(e){return e.getText(0,e.getLength())},e.repeatString=function(e,t){for(var r="",n=0;n<t;n++)r+=e;return r},e.skipConstraint=function(e){return e.isTypeParameter()&&e.getConstraint()||e},e.getNameFromPropertyName=function(t){return 153===t.kind?e.isStringOrNumericLiteralLike(t.expression)?t.expression.text:void 0:e.getTextOfIdentifierOrLiteral(t)},e.programContainsEs6Modules=function(e){return e.getSourceFiles().some((function(t){return!t.isDeclarationFile&&!e.isSourceFileFromExternalLibrary(t)&&!!t.externalModuleIndicator}))},e.compilerOptionsIndicateEs6Modules=function(e){return!!e.module||e.target>=2||!!e.noEmit},e.hostUsesCaseSensitiveFileNames=I,e.hostGetCanonicalFileName=function(t){return e.createGetCanonicalFileName(I(t))},e.makeImportIfNecessary=function(e,t,r,n){return e||t&&t.length?O(e,t,r,n):void 0},e.makeImport=O,e.makeStringLiteral=M,function(e){e[e.Single=0]="Single",e[e.Double=1]="Double"}(e.QuotePreference||(e.QuotePreference={})),e.quotePreferenceFromString=L,e.getQuotePreference=function(t,r){if(r.quotePreference&&"auto"!==r.quotePreference)return"single"===r.quotePreference?0:1;var n=t.imports&&e.find(t.imports,e.isStringLiteral);return n?L(n,t):1},e.getQuoteFromPreference=function(t){switch(t){case 0:return"'";case 1:return'"';default:return e.Debug.assertNever(t)}},e.symbolNameNoDefault=function(t){var r=R(t);return void 0===r?void 0:e.unescapeLeadingUnderscores(r)},e.symbolEscapedNameNoDefault=R,e.isObjectBindingElementWithoutPropertyName=function(t){return e.isBindingElement(t)&&e.isObjectBindingPattern(t.parent)&&e.isIdentifier(t.name)&&!t.propertyName},e.getPropertySymbolFromBindingElement=function(e,t){var r=e.getTypeAtLocation(t.parent);return r&&e.getPropertyOfType(r,t.name.text)},e.getPropertySymbolsFromBaseTypes=B,e.isMemberSymbolInBaseType=function(e,t){return B(e.parent,e.name,t,(function(e){return!0}))||!1},e.getParentNodeInSpan=function(t,r,n){if(t)for(;t.parent;){if(e.isSourceFile(t.parent)||!j(n,t.parent,r))return t;t=t.parent}},e.findModifier=function(t,r){return t.modifiers&&e.find(t.modifiers,(function(e){return e.kind===r}))},e.insertImport=function(t,r,n){var i=e.findLast(r.statements,e.isAnyImportSyntax);i?t.insertNodeAfter(r,i,n):t.insertNodeAtTopOfFile(r,n,!0)},e.textSpansEqual=K,e.documentSpansEqual=function(e,t){return e.fileName===t.fileName&&K(e.textSpan,t.textSpan)},e.forEachUnique=function(e,t){if(e)for(var r=0;r<e.length;r++)if(e.indexOf(e[r])===r){var n=t(e[r],r);if(n)return n}}}(s||(s={})),function(e){function t(e){return e.declarations&&e.declarations.length>0&&155===e.declarations[0].kind}e.isFirstDeclarationOfSymbolParameter=t;var n=function(){var t,r,n,o,s=10*e.defaultMaximumTruncationLength;d();var c=function(t){return _(t,e.SymbolDisplayPartKind.text)};return{displayParts:function(){var r=t.length&&t[t.length-1].text;return o>s&&r&&"..."!==r&&(e.isWhiteSpaceLike(r.charCodeAt(r.length-1))||t.push(a(" ",e.SymbolDisplayPartKind.space)),t.push(a("...",e.SymbolDisplayPartKind.punctuation))),t},writeKeyword:function(t){return _(t,e.SymbolDisplayPartKind.keyword)},writeOperator:function(t){return _(t,e.SymbolDisplayPartKind.operator)},writePunctuation:function(t){return _(t,e.SymbolDisplayPartKind.punctuation)},writeTrailingSemicolon:function(t){return _(t,e.SymbolDisplayPartKind.punctuation)},writeSpace:function(t){return _(t,e.SymbolDisplayPartKind.space)},writeStringLiteral:function(t){return _(t,e.SymbolDisplayPartKind.stringLiteral)},writeParameter:function(t){return _(t,e.SymbolDisplayPartKind.parameterName)},writeProperty:function(t){return _(t,e.SymbolDisplayPartKind.propertyName)},writeLiteral:function(t){return _(t,e.SymbolDisplayPartKind.stringLiteral)},writeSymbol:function(e,r){if(o>s)return;l(),o+=e.length,t.push(i(e,r))},writeLine:function(){if(o>s)return;o+=1,t.push(u()),r=!0},write:c,writeComment:c,getText:function(){return""},getTextPos:function(){return 0},getColumn:function(){return 0},getLine:function(){return 0},isAtStartOfLine:function(){return!1},hasTrailingWhitespace:function(){return!1},hasTrailingComment:function(){return!1},rawWrite:e.notImplemented,getIndent:function(){return n},increaseIndent:function(){n++},decreaseIndent:function(){n--},clear:d,trackSymbol:e.noop,reportInaccessibleThisError:e.noop,reportInaccessibleUniqueSymbolError:e.noop,reportPrivateInBaseOfClassExpression:e.noop};function l(){if(!(o>s)&&r){var i=e.getIndentString(n);i&&(o+=i.length,t.push(a(i,e.SymbolDisplayPartKind.space))),r=!1}}function _(e,r){o>s||(l(),o+=e.length,t.push(a(e,r)))}function d(){t=[],r=!0,n=0,o=0}}();function i(r,n){return a(r,function(r){var n=r.flags;if(3&n)return t(r)?e.SymbolDisplayPartKind.parameterName:e.SymbolDisplayPartKind.localName;if(4&n)return e.SymbolDisplayPartKind.propertyName;if(32768&n)return e.SymbolDisplayPartKind.propertyName;if(65536&n)return e.SymbolDisplayPartKind.propertyName;if(8&n)return e.SymbolDisplayPartKind.enumMemberName;if(16&n)return e.SymbolDisplayPartKind.functionName;if(32&n)return e.SymbolDisplayPartKind.className;if(64&n)return e.SymbolDisplayPartKind.interfaceName;if(384&n)return e.SymbolDisplayPartKind.enumName;if(1536&n)return e.SymbolDisplayPartKind.moduleName;if(8192&n)return e.SymbolDisplayPartKind.methodName;if(262144&n)return e.SymbolDisplayPartKind.typeParameterName;if(524288&n)return e.SymbolDisplayPartKind.aliasName;if(2097152&n)return e.SymbolDisplayPartKind.aliasName;return e.SymbolDisplayPartKind.text}(n))}function a(t,r){return{text:t,kind:e.SymbolDisplayPartKind[r]}}function o(t){return a(e.tokenToString(t),e.SymbolDisplayPartKind.keyword)}function s(t){return a(t,e.SymbolDisplayPartKind.text)}e.symbolPart=i,e.displayPart=a,e.spacePart=function(){return a(" ",e.SymbolDisplayPartKind.space)},e.keywordPart=o,e.punctuationPart=function(t){return a(e.tokenToString(t),e.SymbolDisplayPartKind.punctuation)},e.operatorPart=function(t){return a(e.tokenToString(t),e.SymbolDisplayPartKind.operator)},e.textOrKeywordPart=function(t){var r=e.stringToToken(t);return void 0===r?s(t):o(r)},e.textPart=s;var c="\r\n";function u(){return a("\n",e.SymbolDisplayPartKind.lineBreak)}function l(e){try{return e(n),n.displayParts()}finally{n.clear()}}function _(t,r){return e.ensureScriptKind(t,r&&r.getScriptKind&&r.getScriptKind(t))}function d(e){return 0!=(33554432&e.flags)}function p(e){return 0!=(2097152&e.flags)}function f(e,t){void 0===t&&(t=!0);var r=e&&g(e);return r&&!t&&y(r),r}function m(t,r,n,i,a){var o;if(void 0===r&&(r=!0),n&&i&&e.isBindingElement(t)&&e.isIdentifier(t.name)&&e.isObjectBindingPattern(t.parent))(c=(s=i.getSymbolAtLocation(t.name))&&n.get(String(e.getSymbolId(s))))&&c.text!==(t.name||t.propertyName).getText()&&(o=e.createBindingElement(t.dotDotDotToken,t.propertyName||t.name,c,t.initializer));else if(n&&i&&e.isIdentifier(t)){var s,c;(c=(s=i.getSymbolAtLocation(t))&&n.get(String(e.getSymbolId(s))))&&(o=e.createIdentifier(c.text))}return o||(o=g(t,n,i,a)),o&&!r&&y(o),a&&o&&a(t,o),o}function g(t,r,n,i){var a=r||n||i?e.visitEachChild(t,(function(e){return m(e,!0,r,n,i)}),e.nullTransformationContext):e.visitEachChild(t,f,e.nullTransformationContext);if(a===t){var o=e.getSynthesizedClone(t);return e.isStringLiteral(o)?o.textSourceNode=t:e.isNumericLiteral(o)&&(o.numericLiteralFlags=t.numericLiteralFlags),e.setTextRange(o,t)}return a.parent=void 0,a}function y(e){h(e),v(e)}function h(e){b(e,512,x)}function v(t){b(t,1024,e.getLastChild)}function b(t,r,n){e.addEmitFlags(t,r);var i=n(t);i&&b(i,r,n)}function x(e){return e.forEachChild((function(e){return e}))}function D(e,t,r,n,i){return function(a,o,s,c){3===s?(a+=2,o-=2):a+=2,i(e,r||s,t.text.slice(a,o),void 0!==n?n:c)}}function S(t,r){if(e.startsWith(t,r))return 0;var n=t.indexOf(" "+r);return-1===n&&(n=t.indexOf("."+r)),-1===n&&(n=t.indexOf('"'+r)),-1===n?-1:n+1}function T(e){switch(e){case 36:case 34:case 37:case 35:return!0;default:return!1}}function E(e,t){return t.getTypeAtLocation(e.parent.parent.expression)}function C(e){return 164===e||165===e||166===e||157===e||159===e}function k(e){return 243===e||161===e||160===e||162===e||163===e}function N(e){return 248===e}function A(e){return 224===e||225===e||227===e||232===e||233===e||234===e||238===e||240===e||158===e||246===e||253===e||252===e||259===e||251===e||258===e}function F(e,t){return w(e,e.fileExists,t)}function P(e){try{return e()}catch(e){return}}function w(e,t){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];return P((function(){return t&&t.apply(e,r)}))}function I(t,n){if(n.readFile){var i=n.readFile(t),a=i&&function(e){try{return JSON.parse(e)}catch(e){return}}(i);if(a){for(var o={},s=0,c=["dependencies","devDependencies","optionalDependencies","peerDependencies"];s<c.length;s++){var u=c[s],l=a[u];if(l){var _=e.createMap();for(var d in l)_.set(d,l[d]);o[u]=_}}var p=[[1,o.dependencies],[2,o.devDependencies],[8,o.optionalDependencies],[4,o.peerDependencies]];return r(r({},o),{fileName:t,get:f,has:function(e,t){return!!f(e,t)}})}}function f(e,t){void 0===t&&(t=15);for(var r=0,n=p;r<n.length;r++){var i=n[r],a=i[0],o=i[1];if(o&&t&a){var s=o.get(e);if(void 0!==s)return s}}}}e.getNewLineOrDefaultFromHost=function(e,t){return t&&t.newLineCharacter||e.getNewLine&&e.getNewLine()||c},e.lineBreakPart=u,e.mapToDisplayParts=l,e.typeToDisplayParts=function(e,t,r,n){return void 0===n&&(n=0),l((function(i){e.writeType(t,r,17408|n,i)}))},e.symbolToDisplayParts=function(e,t,r,n,i){return void 0===i&&(i=0),l((function(a){e.writeSymbol(t,r,n,8|i,a)}))},e.signatureToDisplayParts=function(e,t,r,n){return void 0===n&&(n=0),n|=25632,l((function(i){e.writeSignature(t,r,n,void 0,i)}))},e.isImportOrExportSpecifierName=function(t){return!!t.parent&&e.isImportOrExportSpecifier(t.parent)&&t.parent.propertyName===t},e.scriptKindIs=function(t,r){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];var a=_(t,r);return e.some(n,(function(e){return e===a}))},e.getScriptKind=_,e.getSymbolTarget=function(t,r){for(var n=t;p(n)||d(n)&&n.target;)n=d(n)&&n.target?n.target:e.skipAlias(n,r);return n},e.getUniqueSymbolId=function(t,r){return e.getSymbolId(e.skipAlias(t,r))},e.getFirstNonSpaceCharacterPosition=function(t,r){for(;e.isWhiteSpaceLike(t.charCodeAt(r));)r+=1;return r},e.getPrecedingNonSpaceCharacterPosition=function(t,r){for(;r>-1&&e.isWhiteSpaceSingleLine(t.charCodeAt(r));)r-=1;return r+1},e.getSynthesizedDeepClone=f,e.getSynthesizedDeepCloneWithRenames=m,e.getSynthesizedDeepClones=function(t,r){return void 0===r&&(r=!0),t&&e.createNodeArray(t.map((function(e){return f(e,r)})),t.hasTrailingComma)},e.suppressLeadingAndTrailingTrivia=y,e.suppressLeadingTrivia=h,e.suppressTrailingTrivia=v,e.getUniqueName=function(t,r){for(var n=t,i=1;!e.isFileLevelUniqueName(r,n);i++)n=t+"_"+i;return n},e.getRenameLocation=function(t,r,n,i){for(var a=0,o=-1,s=0,c=t;s<c.length;s++){var u=c[s],l=u.fileName,_=u.textChanges;e.Debug.assert(l===r);for(var d=0,p=_;d<p.length;d++){var f=p[d],m=f.span,g=f.newText,y=S(g,n);if(-1!==y&&(o=m.start+a+y,!i))return o;a+=g.length-m.length}}return e.Debug.assert(i),e.Debug.assert(o>=0),o},e.copyLeadingComments=function(t,r,n,i,a){e.forEachLeadingCommentRange(n.text,t.pos,D(r,n,i,a,e.addSyntheticLeadingComment))},e.copyTrailingComments=function(t,r,n,i,a){e.forEachTrailingCommentRange(n.text,t.end,D(r,n,i,a,e.addSyntheticTrailingComment))},e.copyTrailingAsLeadingComments=function(t,r,n,i,a){e.forEachTrailingCommentRange(n.text,t.pos,D(r,n,i,a,e.addSyntheticLeadingComment))},e.getContextualTypeFromParent=function(e,t){var r=e.parent;switch(r.kind){case 196:return t.getContextualType(r);case 208:var n=r,i=n.left,a=n.operatorToken,o=n.right;return T(a.kind)?t.getTypeAtLocation(e===o?i:o):t.getContextualType(e);case 275:return r.expression===e?E(r,t):void 0;default:return t.getContextualType(e)}},e.quote=function(t,r){if(/^\d+$/.test(t))return t;var n=r.quotePreference||"auto",i=JSON.stringify(t);switch(n){case"auto":case"double":return i;case"single":return"'"+e.stripQuotes(i).replace("'","\\'").replace('\\"','"')+"'";default:return e.Debug.assertNever(n)}},e.isEqualityOperatorKind=T,e.isStringLiteralOrTemplate=function(e){switch(e.kind){case 10:case 14:case 210:case 197:return!0;default:return!1}},e.hasIndexSignature=function(e){return!!e.getStringIndexType()||!!e.getNumberIndexType()},e.getSwitchedType=E,e.getTypeNodeIfAccessible=function(e,t,r,n){var i=r.getTypeChecker(),a=!0,o=function(){a=!1},s=i.typeToTypeNode(e,t,void 0,{trackSymbol:function(e,t,r){a=a&&0===i.isSymbolAccessible(e,t,r,!1).accessibility},reportInaccessibleThisError:o,reportPrivateInBaseOfClassExpression:o,reportInaccessibleUniqueSymbolError:o,moduleResolverHost:{readFile:n.readFile,fileExists:n.fileExists,directoryExists:n.directoryExists,getSourceFiles:r.getSourceFiles,getCurrentDirectory:r.getCurrentDirectory,getCommonSourceDirectory:r.getCommonSourceDirectory}});return a?s:void 0},e.syntaxRequiresTrailingCommaOrSemicolonOrASI=C,e.syntaxRequiresTrailingFunctionBlockOrSemicolonOrASI=k,e.syntaxRequiresTrailingModuleBlockOrSemicolonOrASI=N,e.syntaxRequiresTrailingSemicolonOrASI=A,e.syntaxMayBeASICandidate=e.or(C,k,N,A),e.isASICandidate=function(t,r){var n=t.getLastToken(r);if(n&&26===n.kind)return!1;if(C(t.kind)){if(n&&27===n.kind)return!1}else if(N(t.kind)){if((i=e.last(t.getChildren(r)))&&e.isModuleBlock(i))return!1}else if(k(t.kind)){var i;if((i=e.last(t.getChildren(r)))&&e.isFunctionBlock(i))return!1}else if(!A(t.kind))return!1;if(227===t.kind)return!0;var a=e.findAncestor(t,(function(e){return!e.parent})),o=e.findNextToken(t,a,r);return!o||19===o.kind||r.getLineAndCharacterOfPosition(t.getEnd()).line!==r.getLineAndCharacterOfPosition(o.getStart(r)).line},e.probablyUsesSemicolons=function(t){var r=0,n=0;return e.forEachChild(t,(function i(a){if(A(a.kind)){var o=a.getLastToken(t);o&&26===o.kind?r++:n++}return r+n>=5||e.forEachChild(a,i)})),0===r&&n<=1||r/n>.2},e.tryGetDirectories=function(e,t){return w(e,e.getDirectories,t)||[]},e.tryReadDirectory=function(t,r,n,i,a){return w(t,t.readDirectory,r,n,i,a)||e.emptyArray},e.tryFileExists=F,e.tryDirectoryExists=function(t,r){return P((function(){return e.directoryProbablyExists(r,t)}))||!1},e.tryAndIgnoreErrors=P,e.tryIOAndConsumeErrors=w,e.findPackageJsons=function(t,r,n){var i=[];return e.forEachAncestorDirectory(t,(function(t){if(t===n)return!0;var a=e.combinePaths(t,"package.json");F(r,a)&&i.push(a)})),i},e.findPackageJson=function(t,r){var n;return e.forEachAncestorDirectory(t,(function(t){return"node_modules"===t||(!!(n=e.findConfigFile(t,(function(e){return F(r,e)}),"package.json"))||void 0)})),n},e.getPackageJsonsVisibleToFile=function(t,r){if(!r.fileExists)return[];var n=[];return e.forEachAncestorDirectory(e.getDirectoryPath(t),(function(t){var i=e.combinePaths(t,"package.json");if(r.fileExists(i)){var a=I(i,r);a&&n.push(a)}})),n},e.createPackageJsonInfo=I,e.consumesNodeCoreModules=function(t){return e.some(t.imports,(function(t){var r=t.text;return e.JsTyping.nodeCoreModules.has(r)}))},e.isInsideNodeModules=function(t){return e.contains(e.getPathComponents(t),"node_modules")}}(s||(s={})),function(e){e.createClassifier=function(){var o=e.createScanner(99,!1);function s(i,s,c){var u=0,l=0,_=[],d=function(t){switch(t){case 3:return{prefix:'"\\\n'};case 2:return{prefix:"'\\\n"};case 1:return{prefix:"/*\n"};case 4:return{prefix:"`\n"};case 5:return{prefix:"}\n",pushTemplate:!0};case 6:return{prefix:"",pushTemplate:!0};case 0:return{prefix:""};default:return e.Debug.assertNever(t)}}(s),p=d.prefix,f=d.pushTemplate;i=p+i;var m=p.length;f&&_.push(15),o.setText(i);var g=0,y=[],h=0;do{u=o.scan(),e.isTrivia(u)||(x(),l=u);var v=o.getTextPos();if(n(o.getTokenPos(),v,m,a(u),y),v>=i.length){var b=r(o,u,e.lastOrUndefined(_));void 0!==b&&(g=b)}}while(1!==u);function x(){switch(u){case 43:case 67:t[l]||13!==o.reScanSlashToken()||(u=13);break;case 29:75===l&&h++;break;case 31:h>0&&h--;break;case 124:case 142:case 139:case 127:case 143:h>0&&!c&&(u=75);break;case 15:_.push(u);break;case 18:_.length>0&&_.push(u);break;case 19:if(_.length>0){var r=e.lastOrUndefined(_);15===r?17===(u=o.reScanTemplateToken())?_.pop():e.Debug.assertEqual(u,16,"Should have been a template middle."):(e.Debug.assertEqual(r,18,"Should have been an open brace"),_.pop())}break;default:if(!e.isKeyword(u))break;24===l?u=75:e.isKeyword(l)&&e.isKeyword(u)&&!function(t,r){if(!e.isAccessibilityModifier(t))return!0;switch(r){case 130:case 141:case 128:case 119:return!0;default:return!1}}(l,u)&&(u=75)}}return{endOfLineState:g,spans:y}}return{getClassificationsForLine:function(t,r,n){return function(t,r){for(var n=[],a=t.spans,o=0,s=0;s<a.length;s+=3){var c=a[s],u=a[s+1],l=a[s+2];if(o>=0){var _=c-o;_>0&&n.push({length:_,classification:e.TokenClass.Whitespace})}n.push({length:u,classification:i(l)}),o=c+u}var d=r.length-o;d>0&&n.push({length:d,classification:e.TokenClass.Whitespace});return{entries:n,finalLexState:t.endOfLineState}}(s(t,r,n),t)},getEncodedLexicalClassifications:s}};var t=e.arrayToNumericMap([75,10,8,9,13,103,45,46,21,23,19,105,90],(function(e){return e}),(function(){return!0}));function r(t,r,n){switch(r){case 10:if(!t.isUnterminated())return;for(var i=t.getTokenText(),a=i.length-1,o=0;92===i.charCodeAt(a-o);)o++;if(0==(1&o))return;return 34===i.charCodeAt(0)?3:2;case 3:return t.isUnterminated()?1:void 0;default:if(e.isTemplateLiteralKind(r)){if(!t.isUnterminated())return;switch(r){case 17:return 5;case 14:return 4;default:return e.Debug.fail("Only 'NoSubstitutionTemplateLiteral's and 'TemplateTail's can be unterminated; got SyntaxKind #"+r)}}return 15===n?6:void 0}}function n(e,t,r,n,i){if(8!==n){0===e&&r>0&&(e+=r);var a=t-e;a>0&&i.push(e-r,a,n)}}function i(t){switch(t){case 1:return e.TokenClass.Comment;case 3:return e.TokenClass.Keyword;case 4:return e.TokenClass.NumberLiteral;case 25:return e.TokenClass.BigIntLiteral;case 5:return e.TokenClass.Operator;case 6:return e.TokenClass.StringLiteral;case 8:return e.TokenClass.Whitespace;case 10:return e.TokenClass.Punctuation;case 2:case 11:case 12:case 13:case 14:case 15:case 16:case 9:case 17:return e.TokenClass.Identifier;default:return}}function a(t){if(e.isKeyword(t))return 3;if(function(e){switch(e){case 41:case 43:case 44:case 39:case 40:case 47:case 48:case 49:case 29:case 31:case 32:case 33:case 97:case 96:case 122:case 34:case 35:case 36:case 37:case 50:case 52:case 51:case 55:case 56:case 73:case 72:case 74:case 69:case 70:case 71:case 63:case 64:case 65:case 67:case 68:case 62:case 27:case 60:return!0;default:return!1}}(t)||function(e){switch(e){case 39:case 40:case 54:case 53:case 45:case 46:return!0;default:return!1}}(t))return 5;if(t>=18&&t<=74)return 10;switch(t){case 8:return 4;case 9:return 25;case 10:return 6;case 13:return 7;case 7:case 3:case 2:return 1;case 5:case 4:return 8;case 75:default:return e.isTemplateLiteralKind(t)?6:2}}function o(e,t){switch(t){case 248:case 244:case 245:case 243:e.throwIfCancellationRequested()}}function s(t,r,n,i,a){var s=[];return n.forEachChild((function c(u){if(u&&e.textSpanIntersectsWith(a,u.pos,u.getFullWidth())){if(o(r,u.kind),e.isIdentifier(u)&&!e.nodeIsMissing(u)&&i.has(u.escapedText)){var l=t.getSymbolAtLocation(u),_=l&&function t(r,n,i){var a=r.getFlags();return 0==(2885600&a)?void 0:32&a?11:384&a?12:524288&a?16:1536&a?4&n||1&n&&function(t){return e.some(t.declarations,(function(t){return e.isModuleDeclaration(t)&&1===e.getModuleInstanceState(t)}))}(r)?14:void 0:2097152&a?t(i.getAliasedSymbol(r),n,i):2&n?64&a?13:262144&a?15:void 0:void 0}(l,e.getMeaningFromLocation(u),t);_&&function(t,r,n){var i=r-t;e.Debug.assert(i>0,"Classification had non-positive length of "+i),s.push(t),s.push(i),s.push(n)}(u.getStart(n),u.getEnd(),_)}u.forEachChild(c)}})),{spans:s,endOfLineState:0}}function c(e){switch(e){case 1:return"comment";case 2:return"identifier";case 3:return"keyword";case 4:return"number";case 25:return"bigint";case 5:return"operator";case 6:return"string";case 8:return"whitespace";case 9:return"text";case 10:return"punctuation";case 11:return"class name";case 12:return"enum name";case 13:return"interface name";case 14:return"module name";case 15:return"type parameter name";case 16:return"type alias name";case 17:return"parameter name";case 18:return"doc comment tag name";case 19:return"jsx open tag name";case 20:return"jsx close tag name";case 21:return"jsx self closing tag name";case 22:return"jsx attribute";case 23:return"jsx text";case 24:return"jsx attribute string literal value";default:return}}function u(t){e.Debug.assert(t.spans.length%3==0);for(var r=t.spans,n=[],i=0;i<r.length;i+=3)n.push({textSpan:e.createTextSpan(r[i],r[i+1]),classificationType:c(r[i+2])});return n}function l(t,r,n){var i=n.start,a=n.length,s=e.createScanner(99,!1,r.languageVariant,r.text),c=e.createScanner(99,!1,r.languageVariant,r.text),u=[];return h(r),{spans:u,endOfLineState:0};function l(e,t,r){u.push(e),u.push(t),u.push(r)}function _(t,n,i,a){if(3===n){var o=e.parseIsolatedJSDocComment(r.text,i,a);if(o&&o.jsDoc)return o.jsDoc.parent=t,void function(e){var t=e.pos;if(e.tags)for(var r=0,n=e.tags;r<n.length;r++){var i=n[r];switch(i.pos!==t&&d(t,i.pos-t),l(i.pos,1,10),l(i.tagName.pos,i.tagName.end-i.tagName.pos,18),t=i.tagName.end,i.kind){case 310:a(i);break;case 314:p(i),t=i.end;break;case 313:case 311:h(i.typeExpression),t=i.end}}t!==e.end&&d(t,e.end-t);return;function a(e){e.isNameFirst&&(d(t,e.name.pos-t),l(e.name.pos,e.name.end-e.name.pos,17),t=e.name.end),e.typeExpression&&(d(t,e.typeExpression.pos-t),h(e.typeExpression),t=e.typeExpression.end),e.isNameFirst||(d(t,e.name.pos-t),l(e.name.pos,e.name.end-e.name.pos,17),t=e.name.end)}}(o.jsDoc)}else if(2===n&&function(t,n){var i=/(\S+)(\s*)(=)(\s*)('[^']+'|"[^"]+")/gim,a=r.text.substr(t,n),o=/^(\/\/\/\s*)(<)(?:(\S+)((?:[^/]|\/[^>])*)(\/>)?)?/im.exec(a);if(!o)return!1;if(!(o[3]&&o[3]in e.commentPragmas))return!1;var s=t;d(s,o[1].length),l(s+=o[1].length,o[2].length,10),l(s+=o[2].length,o[3].length,21),s+=o[3].length;var c=o[4],u=s;for(;;){var _=i.exec(c);if(!_)break;var p=s+_.index;p>u&&(d(u,p-u),u=p),l(u,_[1].length,22),u+=_[1].length,_[2].length&&(d(u,_[2].length),u+=_[2].length),l(u,_[3].length,5),u+=_[3].length,_[4].length&&(d(u,_[4].length),u+=_[4].length),l(u,_[5].length,24),u+=_[5].length}(s+=o[4].length)>u&&d(u,s-u);o[5]&&(l(s,o[5].length,10),s+=o[5].length);var f=t+n;s<f&&d(s,f-s);return!0}(i,a))return;d(i,a)}function d(e,t){l(e,t,1)}function p(e){for(var t=0,r=e.getChildren();t<r.length;t++){h(r[t])}}function f(t,r,n){var i;for(i=r;i<n&&!e.isLineBreak(t.charCodeAt(i));i++);for(l(r,i-r,1),c.setTextPos(i);c.getTextPos()<n;)m()}function m(){var e=c.getTextPos(),t=c.scan(),r=c.getTextPos(),n=y(t);n&&l(e,r-e,n)}function g(t){if(e.isJSDoc(t))return!0;if(e.nodeIsMissing(t))return!0;var n=function(e){switch(e.parent&&e.parent.kind){case 266:if(e.parent.tagName===e)return 19;break;case 267:if(e.parent.tagName===e)return 20;break;case 265:if(e.parent.tagName===e)return 21;break;case 271:if(e.parent.name===e)return 22}return}(t);if(!e.isToken(t)&&11!==t.kind&&void 0===n)return!1;var i=11===t.kind?t.pos:function(t){for(s.setTextPos(t.pos);;){var n=s.getTextPos();if(!e.couldStartTrivia(r.text,n))return n;var i=s.scan(),a=s.getTextPos(),o=a-n;if(!e.isTrivia(i))return n;switch(i){case 4:case 5:continue;case 2:case 3:_(t,i,n,o),s.setTextPos(a);continue;case 7:var c=r.text,u=c.charCodeAt(n);if(60===u||62===u){l(n,o,1);continue}e.Debug.assert(124===u||61===u),f(c,n,a);break;case 6:break;default:e.Debug.assertNever(i)}}}(t),a=t.end-i;if(e.Debug.assert(a>=0),a>0){var o=n||y(t.kind,t);o&&l(i,a,o)}return!0}function y(t,r){if(e.isKeyword(t))return 3;if((29===t||31===t)&&r&&e.getTypeArgumentOrTypeParameterList(r.parent))return 10;if(e.isPunctuation(t)){if(r){var n=r.parent;if(62===t&&(241===n.kind||158===n.kind||155===n.kind||271===n.kind))return 5;if(208===n.kind||206===n.kind||207===n.kind||209===n.kind)return 5}return 10}if(8===t)return 4;if(9===t)return 25;if(10===t)return r&&271===r.parent.kind?24:6;if(13===t)return 6;if(e.isTemplateLiteralKind(t))return 6;if(11===t)return 23;if(75===t){if(r)switch(r.parent.kind){case 244:return r.parent.name===r?11:void 0;case 154:return r.parent.name===r?15:void 0;case 245:return r.parent.name===r?13:void 0;case 247:return r.parent.name===r?12:void 0;case 248:return r.parent.name===r?14:void 0;case 155:return r.parent.name===r?e.isThisIdentifier(r)?3:17:void 0}return 2}}function h(n){if(n&&e.decodedTextSpanIntersectsWith(i,a,n.pos,n.getFullWidth())){o(t,n.kind);for(var s=0,c=n.getChildren(r);s<c.length;s++){var u=c[s];g(u)||h(u)}}}}e.getSemanticClassifications=function(e,t,r,n,i){return u(s(e,t,r,n,i))},e.getEncodedSemanticClassifications=s,e.getSyntacticClassifications=function(e,t,r){return u(l(e,t,r))},e.getEncodedSyntacticClassifications=l}(s||(s={})),function(e){!function(r){!function(n){function i(e){return{isGlobalCompletion:!1,isMemberCompletion:!1,isNewIdentifierLocation:!0,entries:e.map((function(e){var t=e.name,n=e.kind,i=e.span;return{name:t,kind:n,kindModifiers:a(e.extension),sortText:r.SortText.LocationPriority,replacementSpan:i}}))}}function a(t){switch(t){case".d.ts":return".d.ts";case".js":return".js";case".json":return".json";case".jsx":return".jsx";case".ts":return".ts";case".tsx":return".tsx";case".tsbuildinfo":return e.Debug.fail("Extension .tsbuildinfo is unsupported.");case void 0:return"";default:return e.Debug.assertNever(t)}}var o;function s(t,r,n,i,a,o){var s,l,_=r.parent;switch(_.kind){case 186:switch(_.parent.kind){case 168:return{kind:2,types:u(i.getTypeArgumentConstraint(_)),isNewIdentifier:!1};case 184:return c(i.getTypeFromTypeNode(_.parent.objectType));case 187:return{kind:0,paths:p(t,r,a,o,i)};case 177:if(!e.isTypeReferenceNode(_.parent.parent))return;var d=(s=_.parent,l=_,e.mapDefined(s.types,(function(t){return t!==l&&e.isLiteralTypeNode(t)&&e.isStringLiteral(t.literal)?t.literal.text:void 0})));return{kind:2,types:u(i.getTypeArgumentConstraint(_.parent)).filter((function(t){return!e.contains(d,t.value)})),isNewIdentifier:!1};default:return}case 279:return e.isObjectLiteralExpression(_.parent)&&_.name===r?c(i.getContextualType(_.parent)):h();case 194:var f=_,m=f.expression,g=f.argumentExpression;return r===g?c(i.getTypeAtLocation(m)):void 0;case 195:case 196:if(!e.isRequireCall(_,!1)&&!e.isImportCall(_)){var y=e.SignatureHelp.getArgumentInfoForCompletions(r,n,t);return y?function(t,r){var n=!1,i=e.createMap(),a=[];return r.getResolvedSignature(t.invocation,a,t.argumentCount),{kind:2,types:e.flatMap(a,(function(a){if(e.signatureHasRestParameter(a)||!(t.argumentCount>a.parameters.length)){var o=r.getParameterType(a,t.argumentIndex);return n=n||!!(4&o.flags),u(o,i)}})),isNewIdentifier:n}}(y,i):h()}case 253:case 259:case 263:return{kind:0,paths:p(t,r,a,o,i)};default:return h()}function h(){return{kind:2,types:u(e.getContextualTypeFromParent(r,i)),isNewIdentifier:!1}}}function c(t){return t&&{kind:1,symbols:t.getApparentProperties(),hasIndexSignature:e.hasIndexSignature(t)}}function u(t,r){return void 0===r&&(r=e.createMap()),t?(t=e.skipConstraint(t)).isUnion()?e.flatMap(t.types,(function(e){return u(e,r)})):!t.isStringLiteral()||1024&t.flags||!e.addToSeen(r,t.value)?e.emptyArray:[t]:e.emptyArray}function l(e,t,r){return{name:e,kind:t,extension:r}}function _(e){return l(e,"directory",void 0)}function d(t,r,n){var i=function(t,r){var n=Math.max(t.lastIndexOf(e.directorySeparator),t.lastIndexOf("\\")),i=-1!==n?n+1:0,a=t.length-i;return 0===a||e.isIdentifierText(t.substr(i,a),99)?void 0:e.createTextSpan(r+i,a)}(t,r);return n.map((function(e){return{name:e.name,kind:e.kind,extension:e.extension,span:i}}))}function p(r,n,i,a,o){return d(n.text,n.getStart(r)+1,function(r,n,i,a,o){var s=e.normalizeSlashes(n.text),c=r.path,u=e.getDirectoryPath(c);return function(e){if(e&&e.length>=2&&46===e.charCodeAt(0)){var t=e.length>=3&&46===e.charCodeAt(1)?2:1,r=e.charCodeAt(t);return 47===r||92===r}return!1}(s)||!i.baseUrl&&(e.isRootedDiskPath(s)||e.isUrl(s))?function(r,n,i,a,o){var s=m(i);return i.rootDirs?function(r,n,i,a,o,s,c){var u=o.project||s.getCurrentDirectory(),l=!(s.useCaseSensitiveFileNames&&s.useCaseSensitiveFileNames()),_=function(r,n,i,a){r=r.map((function(t){return e.normalizePath(e.isRootedDiskPath(t)?t:e.combinePaths(n,t))}));var o=e.firstDefined(r,(function(t){return e.containsPath(t,i,n,a)?i.substr(t.length):void 0}));return e.deduplicate(t(r.map((function(t){return e.combinePaths(t,o)})),[i]),e.equateStringsCaseSensitive,e.compareStringsCaseSensitive)}(r,u,i,l);return e.flatMap(_,(function(e){return y(n,e,a,s,c)}))}(i.rootDirs,r,n,s,i,a,o):y(r,n,s,a,o)}(s,u,i,a,c):function(t,r,n,i,a){var o=n.baseUrl,s=n.paths,c=[],u=m(n);if(o){var _=n.project||i.getCurrentDirectory(),d=e.normalizePath(e.combinePaths(_,o));y(t,d,u,i,void 0,c),s&&h(c,t,d,u.extensions,s,i)}for(var p=v(t),f=0,g=function(t,r,n){var i=n.getAmbientModules().map((function(t){return e.stripQuotes(t.name)})).filter((function(r){return e.startsWith(r,t)}));if(void 0!==r){var a=e.ensureTrailingDirectorySeparator(r);return i.map((function(t){return e.removePrefix(t,a)}))}return i}(t,p,a);f<g.length;f++){var b=g[f];c.push(l(b,"external module name",void 0))}if(x(i,n,r,p,u,c),e.getEmitModuleResolutionKind(n)===e.ModuleResolutionKind.NodeJs){var D=!1;if(void 0===p)for(var T=function(e){c.some((function(t){return t.name===e}))||(D=!0,c.push(l(e,"external module name",void 0)))},E=0,C=function(t,r){if(!t.readFile||!t.fileExists)return e.emptyArray;for(var n=[],i=0,a=e.findPackageJsons(r,t);i<a.length;i++)for(var o=a[i],s=e.readJson(o,t),c=0,u=S;c<u.length;c++){var l=u[c],_=s[l];if(_)for(var d in _)_.hasOwnProperty(d)&&!e.startsWith(d,"@types/")&&n.push(d)}return n}(i,r);E<C.length;E++){var k=C[E];T(k)}D||e.forEachAncestorDirectory(r,(function(r){var n=e.combinePaths(r,"node_modules");e.tryDirectoryExists(i,n)&&y(t,n,u,i,void 0,c)}))}return c}(s,u,i,a,o)}(r,n,i,a,o))}function m(e,t){return void 0===t&&(t=!1),{extensions:g(e),includeExtensions:t}}function g(t){var r=e.getSupportedExtensions(t);return t.resolveJsonModule&&e.getEmitModuleResolutionKind(t)===e.ModuleResolutionKind.NodeJs?r.concat(".json"):r}function y(t,r,n,i,a,o){var s=n.extensions,c=n.includeExtensions;void 0===o&&(o=[]),void 0===t&&(t=""),t=e.normalizeSlashes(t),e.hasTrailingDirectorySeparator(t)||(t=e.getDirectoryPath(t)),""===t&&(t="."+e.directorySeparator),t=e.ensureTrailingDirectorySeparator(t);var u=e.resolvePath(r,t),d=e.hasTrailingDirectorySeparator(u)?u:e.getDirectoryPath(u),p=!(i.useCaseSensitiveFileNames&&i.useCaseSensitiveFileNames());if(!e.tryDirectoryExists(i,d))return o;var m=e.tryReadDirectory(i,d,s,void 0,["./*"]);if(m){for(var g=e.createMap(),y=0,v=m;y<v.length;y++){var b=v[y];if(b=e.normalizePath(b),!a||0!==e.comparePaths(b,a,r,p)){var x=c||e.fileExtensionIs(b,".json")?e.getBaseFileName(b):e.removeFileExtension(e.getBaseFileName(b));g.set(x,e.tryGetExtensionFromPath(b))}}g.forEach((function(e,t){o.push(l(t,"script",e))}))}var D=e.tryGetDirectories(i,d);if(D)for(var S=0,T=D;S<T.length;S++){var E=T[S],C=e.getBaseFileName(e.normalizePath(E));"@types"!==C&&o.push(_(C))}var k=e.findPackageJson(d,i);if(k){var N=e.readJson(k,i).typesVersions;if("object"===f(N)){var A=e.getPackageJsonTypesVersionsPaths(N),F=A&&A.paths,P=u.slice(e.ensureTrailingDirectorySeparator(d).length);F&&h(o,P,d,s,F,i)}}return o}function h(t,r,n,i,a,o){for(var s in a)if(e.hasProperty(a,s)){var c=a[s];if(c)for(var u=function(e,r,n){t.some((function(t){return t.name===e}))||t.push(l(e,r,n))},_=0,d=b(s,c,r,n,i,o);_<d.length;_++){var p=d[_];u(p.name,p.kind,p.extension)}}}function v(t){return T(t)?e.hasTrailingDirectorySeparator(t)?t:e.getDirectoryPath(t):void 0}function b(r,n,i,a,o,s){if(!e.endsWith(r,"*"))return e.stringContains(r,"*")?e.emptyArray:d(r);var c=r.slice(0,r.length-1),u=e.tryRemovePrefix(i,c);return void 0===u?d(c):e.flatMap(n,(function(r){return function(r,n,i,a,o){if(!o.readDirectory)return;var s=e.hasZeroOrOneAsteriskCharacter(i)?e.tryParsePattern(i):void 0;if(!s)return;var c=e.resolvePath(s.prefix),u=e.hasTrailingDirectorySeparator(s.prefix)?c:e.getDirectoryPath(c),d=e.hasTrailingDirectorySeparator(s.prefix)?"":e.getBaseFileName(c),p=T(r),f=p?e.hasTrailingDirectorySeparator(r)?r:e.getDirectoryPath(r):void 0,m=p?e.combinePaths(u,d+f):u,g=e.normalizePath(s.suffix),y=e.normalizePath(e.combinePaths(n,m)),h=p?y:e.ensureTrailingDirectorySeparator(y)+d,v=g?"**/*":"./*",b=e.mapDefined(e.tryReadDirectory(o,y,a,void 0,[v]),(function(t){var r=e.tryGetExtensionFromPath(t),n=D(t);return void 0===n?void 0:l(e.removeFileExtension(n),"script",r)})),x=e.mapDefined(e.tryGetDirectories(o,y).map((function(t){return e.combinePaths(y,t)})),(function(e){var t=D(e);return void 0===t?void 0:_(t)}));return t(b,x);function D(t){var r=function(t,r,n){return e.startsWith(t,r)&&e.endsWith(t,n)?t.slice(r.length,t.length-n.length):void 0}(e.normalizePath(t),h,g);return void 0===r?void 0:function(t){return t[0]===e.directorySeparator?t.slice(1):t}(r)}}(u,a,r,o,s)}));function d(t){return e.startsWith(t,i)?[_(t)]:e.emptyArray}}function x(t,r,n,i,a,o){void 0===o&&(o=[]);for(var s=e.createMap(),c=0,u=e.tryAndIgnoreErrors((function(){return e.getEffectiveTypeRoots(r,t)}))||e.emptyArray;c<u.length;c++){f(u[c])}for(var _=0,d=e.findPackageJsons(n,t);_<d.length;_++){var p=d[_];f(e.combinePaths(e.getDirectoryPath(p),"node_modules/@types"))}return o;function f(n){if(e.tryDirectoryExists(t,n))for(var c=0,u=e.tryGetDirectories(t,n);c<u.length;c++){var _=u[c],d=e.unmangleScopedPackageName(_);if(!r.types||e.contains(r.types,d))if(void 0===i)s.has(d)||(o.push(l(d,"external module name",void 0)),s.set(d,!0));else{var p=e.combinePaths(n,_),f=e.tryRemoveDirectoryPrefix(i,d,e.hostGetCanonicalFileName(t));void 0!==f&&y(f,p,a,t,void 0,o)}}}}n.getStringLiteralCompletions=function(t,n,a,o,c,u,l,_){if(e.isInReferenceComment(t,n)){var p=function(t,r,n,i){var a=e.getTokenAtPosition(t,r),o=e.getLeadingCommentRanges(t.text,a.pos),s=o&&e.find(o,(function(e){return r>=e.pos&&r<=e.end}));if(!s)return;var c=t.text.slice(s.pos,r),u=D.exec(c);if(!u)return;var l=u[1],_=u[2],p=u[3],f=e.getDirectoryPath(t.path),g="path"===_?y(p,f,m(n,!0),i,t.path):"types"===_?x(i,n,f,v(p),m(n)):e.Debug.fail();return d(p,s.pos+l.length,g)}(t,n,c,u);return p&&i(p)}if(e.isInString(t,n,a))return a&&e.isStringLiteralLike(a)?function(t,n,a,o,s){if(void 0===t)return;switch(t.kind){case 0:return i(t.paths);case 1:var c=[];return r.getCompletionEntriesFromSymbols(t.symbols,c,n,n,a,99,o,4,s),{isGlobalCompletion:!1,isMemberCompletion:!0,isNewIdentifierLocation:t.hasIndexSignature,entries:c};case 2:c=t.types.map((function(e){return{name:e.value,kindModifiers:"",kind:"string",sortText:"0"}}));return{isGlobalCompletion:!1,isMemberCompletion:!1,isNewIdentifierLocation:t.isNewIdentifier,entries:c};default:return e.Debug.assertNever(t)}}(s(t,a,n,o,c,u),t,o,l,_):void 0},n.getStringLiteralCompletionDetails=function(t,n,i,o,c,u,l,_){if(o&&e.isStringLiteralLike(o)){var d=s(n,o,i,c,u,l);return d&&function(t,n,i,o,s,c){switch(i.kind){case 0:return(u=e.find(i.paths,(function(e){return e.name===t})))&&r.createCompletionDetails(t,a(u.extension),u.kind,[e.textPart(t)]);case 1:var u;return(u=e.find(i.symbols,(function(e){return e.name===t})))&&r.createCompletionDetailsForSymbol(u,s,o,n,c);case 2:return e.find(i.types,(function(e){return e.value===t}))?r.createCompletionDetails(t,"","type",[e.textPart(t)]):void 0;default:return e.Debug.assertNever(i)}}(t,o,d,n,c,_)}},function(e){e[e.Paths=0]="Paths",e[e.Properties=1]="Properties",e[e.Types=2]="Types"}(o||(o={}));var D=/^(\/\/\/\s*<reference\s+(path|types)\s*=\s*(?:'|"))([^\3"]*)$/,S=["dependencies","devDependencies","peerDependencies","optionalDependencies"];function T(t){return e.stringContains(t,e.directorySeparator)}}(r.StringCompletions||(r.StringCompletions={}))}(e.Completions||(e.Completions={}))}(s||(s={})),function(e){!function(t){var r,n,i,a;function o(e){return!!(4&e.kind)}function s(e){return{isGlobalCompletion:!1,isMemberCompletion:!1,isNewIdentifierLocation:!1,entries:e}}function c(t,r){return e.isSourceFileJS(t)&&!e.isCheckJsEnabledForFile(t,r)}function u(e){switch(e){case 0:case 3:case 2:return!0;default:return!1}}!function(e){e.LocationPriority="0",e.OptionalMember="1",e.MemberDeclaredBySpreadAssignment="2",e.SuggestedClassMembers="3",e.GlobalsOrKeywords="4",e.AutoImportSuggestions="5",e.JavascriptIdentifiers="6"}(r=t.SortText||(t.SortText={})),function(e){e[e.ThisType=1]="ThisType",e[e.SymbolMember=2]="SymbolMember",e[e.Export=4]="Export",e[e.Promise=8]="Promise",e[e.Nullable=16]="Nullable",e[e.SymbolMemberNoExport=2]="SymbolMemberNoExport",e[e.SymbolMemberExport=6]="SymbolMemberExport"}(n||(n={})),function(e){e[e.None=0]="None",e[e.All=1]="All",e[e.ClassElementKeywords=2]="ClassElementKeywords",e[e.InterfaceElementKeywords=3]="InterfaceElementKeywords",e[e.ConstructorParameterKeywords=4]="ConstructorParameterKeywords",e[e.FunctionLikeBodyKeywords=5]="FunctionLikeBodyKeywords",e[e.TypeAssertionKeywords=6]="TypeAssertionKeywords",e[e.TypeKeywords=7]="TypeKeywords",e[e.Last=7]="Last"}(i||(i={})),function(e){e[e.Continue=0]="Continue",e[e.Success=1]="Success",e[e.Fail=2]="Fail"}(a||(a={})),t.createImportSuggestionsForFileCache=function(){var t,r,n;return{isEmpty:function(){return!t},clear:function(){t=void 0,n=void 0,r=void 0},set:function(e,i,a){t=i,n=e,a&&(r=a)},get:function(i,a,o){if(i===n)return o?r===o?t:void 0:(e.forEach(t,(function(e){e.symbol.declarations&&(e.symbol=a.getMergedSymbol(e.origin.isDefaultExport&&e.symbol.declarations[0].localSymbol||e.symbol.declarations[0].symbol)),e.origin.moduleSymbol.declarations&&(e.origin.moduleSymbol=a.getMergedSymbol(e.origin.moduleSymbol.declarations[0].symbol))})),t)}}},t.getCompletionsAtPosition=function(n,i,a,o,l,_,p){var f=i.getTypeChecker(),m=i.getCompilerOptions(),g=e.findPrecedingToken(l,o);if(!p||e.isInString(o,l,g)||function(t,r,n,i){switch(r){case".":case"@":return!0;case'"':case"'":case"`":return!!n&&e.isStringLiteralOrTemplate(n)&&i===n.getStart(t)+1;case"<":return!!n&&29===n.kind&&(!e.isBinaryExpression(n.parent)||R(n.parent));case"/":return!!n&&(e.isStringLiteralLike(n)?!!e.tryGetImportFromModuleSpecifier(n):43===n.kind&&e.isJsxClosingElement(n.parent));default:return e.Debug.assertNever(r)}}(o,p,g,l)){var y=t.StringCompletions.getStringLiteralCompletions(o,l,g,f,m,n,a,_);if(y)return y;if(g&&e.isBreakOrContinueStatement(g.parent)&&(76===g.kind||81===g.kind||75===g.kind))return function(t){var n=function(t){var n=[],i=e.createMap(),a=t;for(;a&&!e.isFunctionLike(a);){if(e.isLabeledStatement(a)){var o=a.label.text;i.has(o)||(i.set(o,!0),n.push({name:o,kindModifiers:"",kind:"label",sortText:r.LocationPriority}))}a=a.parent}return n}(t);if(n.length)return{isGlobalCompletion:!1,isMemberCompletion:!1,isNewIdentifierLocation:!1,entries:n}}(g.parent);var v=E(i,a,o,c(o,m),l,_,void 0,n);if(v)switch(v.kind){case 0:return function(t,n,i,a,o,s){var l=o.symbols,_=o.completionKind,p=o.isInSnippetScope,f=o.isNewIdentifierLocation,m=o.location,g=o.propertyAccessToConvert,y=o.keywordFilters,v=o.literals,b=o.symbolToOriginInfoMap,x=o.recommendedCompletion,D=o.isJsxInitializer,S=o.insideJsDocTagTypeExpression,T=o.symbolToSortTextMap;if(m&&m.parent&&e.isJsxClosingElement(m.parent)){var E=m.parent.parent.openingElement.tagName,C=!!e.findChildOfKind(m.parent,31,t);return{isGlobalCompletion:!1,isMemberCompletion:!0,isNewIdentifierLocation:!1,entries:[{name:E.getFullText(t)+(C?"":">"),kind:"class",kindModifiers:void 0,sortText:r.LocationPriority}]}}var N=[];if(c(t,i)){var F=h(l,N,m,t,n,i.target,a,_,s,g,D,x,b,T);!function(t,n,i,a,o){e.getNameTable(t).forEach((function(t,s){if(t!==n){var c=e.unescapeLeadingUnderscores(s);e.addToSeen(i,c)&&e.isIdentifierText(c,a)&&o.push({name:c,kind:"warning",kindModifiers:"",sortText:r.JavascriptIdentifiers})}}))}(t,m.pos,F,i.target,N)}else{if(!(f||l&&0!==l.length||0!==y))return;h(l,N,m,t,n,i.target,a,_,s,g,D,x,b,T)}if(0!==y)for(var P=e.arrayToSet(N,(function(e){return e.name})),w=0,I=function(t,r){if(!r)return A(t);var n=t+7+1;return k[n]||(k[n]=A(t).filter((function(t){return!function(e){switch(e){case 121:case 124:case 150:case 127:case 129:case 87:case 149:case 112:case 131:case 113:case 132:case 133:case 134:case 135:case 136:case 139:case 140:case 116:case 117:case 118:case 137:case 142:case 143:case 144:case 146:case 147:return!0;default:return!1}}(e.stringToToken(t.name))})))}(y,!S&&e.isSourceFileJS(t));w<I.length;w++){var O=I[w];P.has(O.name)||N.push(O)}for(var M=0,L=v;M<L.length;M++){var R=L[M];N.push(d(R))}return{isGlobalCompletion:p,isMemberCompletion:u(_),isNewIdentifierLocation:f,entries:N}}(o,f,m,a,v,_);case 1:return s(e.JsDoc.getJSDocTagNameCompletions());case 2:return s(e.JsDoc.getJSDocTagCompletions());case 3:return s(e.JsDoc.getJSDocParameterNameCompletions(v.tag));default:return e.Debug.assertNever(v)}}};var l,_=function(t){return"object"===f(t)?e.pseudoBigIntToString(t)+"n":JSON.stringify(t)};function d(e){return{name:_(e),kind:"string",kindModifiers:"",sortText:r.LocationPriority}}function p(t,r,n,i,a,s,c,u,l,_,d,p){var f,h,v=u&&function(e){return!!(16&e.kind)}(u),b=u&&function(e){return!!(2&e.kind)}(u)||c;if(u&&function(e){return!!(1&e.kind)}(u))f=c?"this"+(v?"?.":"")+"["+e.quote(s,p)+"]":"this"+(v?"?.":".")+s;else if((b||v)&&_){f=b?c?"["+e.quote(s,p)+"]":"["+s+"]":s,(v||_.questionDotToken)&&(f="?."+f);var x=e.findChildOfKind(_,24,i)||e.findChildOfKind(_,28,i);if(!x)return;var D=e.startsWith(s,_.name.text)?_.name.end:x.end;h=e.createTextSpanFromBounds(x.getStart(i),D)}if(d&&(void 0===f&&(f=s),f="{"+f+"}","boolean"!=typeof d&&(h=e.createTextSpanFromNode(d,i))),u&&function(e){return!!(8&e.kind)}(u)&&_){void 0===f&&(f=s);var S="(await "+_.expression.getText()+")";f=c?""+S+f:S+(v?"?.":".")+f,h=e.createTextSpanFromBounds(_.getStart(i),_.end)}if(void 0===f||p.includeCompletionsWithInsertText)return{name:s,kind:e.SymbolDisplay.getSymbolKind(a,t,n),kindModifiers:e.SymbolDisplay.getSymbolModifiers(t),sortText:r,source:y(u),hasAction:g(!!u&&o(u)),isRecommended:g(m(t,l,a)),insertText:f,replacementSpan:h}}function m(e,t,r){return e===t||!!(1048576&e.flags)&&r.getExportSymbolOfSymbol(e)===t}function g(e){return!!e||void 0}function y(t){return t&&o(t)?e.stripQuotes(t.moduleSymbol.name):void 0}function h(t,n,i,a,o,s,c,u,l,_,d,f,m,g){for(var y=e.timestamp(),h=e.createMap(),v=0,b=t;v<b.length;v++){var x=b[v],D=m?m[e.getSymbolId(x)]:void 0,S=C(x,s,D,u);if(S){var T=S.name,E=S.needsConvertPropertyAccess;if(!h.has(T)){var k=p(x,g&&g[e.getSymbolId(x)]||r.LocationPriority,i,a,o,T,E,D,f,_,d,l);k&&(D||void 0===x.parent&&!e.some(x.declarations,(function(e){return e.getSourceFile()===i.getSourceFile()}))||h.set(T,!0),n.push(k))}}}return c("getCompletionsAtPosition: getCompletionEntriesFromSymbols: "+(e.timestamp()-y)),h}function v(t,r,n,i,a,o){var s=t.getCompilerOptions(),u=E(t,r,n,c(n,s),i,{includeCompletionsForModuleExports:!0,includeCompletionsWithInsertText:!0},a,o);if(!u)return{type:"none"};if(0!==u.kind)return{type:"request",request:u};var l=u.symbols,d=u.literals,p=u.location,f=u.completionKind,m=u.symbolToOriginInfoMap,g=u.previousToken,h=u.isJsxInitializer,v=e.find(d,(function(e){return _(e)===a.name}));return void 0!==v?{type:"literal",literal:v}:e.firstDefined(l,(function(t){var r=m[e.getSymbolId(t)],n=C(t,s.target,r,f);return n&&n.name===a.name&&y(r)===a.source?{type:"symbol",symbol:t,location:p,symbolToOriginInfoMap:m,previousToken:g,isJsxInitializer:h}:void 0}))||{type:"none"}}function b(t,r,n){return r&&o(r)&&(r.isDefaultExport&&"default"===t.escapedName||"export="===t.escapedName)?e.firstDefined(t.declarations,(function(t){return e.isExportAssignment(t)&&e.isIdentifier(t.expression)?t.expression.text:void 0}))||e.codefix.moduleSymbolToValidIdentifier(r.moduleSymbol,n):t.name}function x(t,r,n){return S(t,"",r,[e.displayPart(t,n)])}function D(t,r,n,i,a,o,s){var c=r.runWithCancellationToken(a,(function(r){return e.SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(r,t,n,i,i,7)})),u=c.displayParts,l=c.documentation,_=c.symbolKind,d=c.tags;return S(t.name,e.SymbolDisplay.getSymbolModifiers(t),_,u,l,d,o,s)}function S(e,t,r,n,i,a,o,s){return{name:e,kindModifiers:t,kind:r,displayParts:n,documentation:i,tags:a,codeActions:o,source:s}}function T(t,r,n){var i=n.getAccessibleSymbolChain(t,r,67108863,!1);return i?e.first(i):t.parent&&(function(e){return e.declarations.some((function(e){return 288===e.kind}))}(t.parent)?t:T(t.parent,r,n))}function E(t,n,i,a,o,s,c,u){var l=t.getTypeChecker(),_=e.timestamp(),d=e.getTokenAtPosition(i,o);n("getCompletionData: Get current token: "+(e.timestamp()-_)),_=e.timestamp();var p=e.isInComment(i,o,d);n("getCompletionData: Is inside comment: "+(e.timestamp()-_));var f=!1,m=!1;if(p){if(e.hasDocComment(i,o)){if(64===i.text.charCodeAt(o-1))return{kind:1};var g=e.getLineStartPositionForPosition(o,i);if(!i.text.substring(g,o).match(/[^\*|\s|(/\*\*)]/))return{kind:2}}var y=function(t,r){var n=e.findAncestor(t,e.isJSDoc);return n&&n.tags&&(e.rangeContainsPosition(n,r)?e.findLast(n.tags,(function(e){return e.pos<r})):void 0)}(d,o);if(y){if(y.tagName.pos<=o&&o<=y.tagName.end)return{kind:1};if(function(e){switch(e.kind){case 310:case 316:case 311:case 313:case 315:return!0;default:return!1}}(y)&&y.typeExpression&&292===y.typeExpression.kind&&((d=e.getTokenAtPosition(i,o))&&(e.isDeclarationName(d)||316===d.parent.kind&&d.parent.name===d)||(f=ue(y.typeExpression))),e.isJSDocParameterTag(y)&&(e.nodeIsMissing(y.name)||y.name.pos<=o&&o<=y.name.end))return{kind:3,tag:y}}if(!f)return void n("Returning an empty list because completion was inside a regular comment or plain text part of a JsDoc comment.")}_=e.timestamp();var h=e.findPrecedingToken(o,i,void 0);n("getCompletionData: Get previous token 1: "+(e.timestamp()-_));var v=h;if(v&&o<=v.end&&(e.isIdentifier(v)||e.isKeyword(v.kind))){var x=e.timestamp();v=e.findPrecedingToken(v.getFullStart(),i,void 0),n("getCompletionData: Get previous token 2: "+(e.timestamp()-x))}var D,S=d,E=!1,C=!1,k=!1,N=!1,A=!1,w=e.getTouchingPropertyName(i,o);if(v){if(function(t){var r=e.timestamp(),i=function(t){return(e.isRegularExpressionLiteral(t)||e.isStringTextContainingNode(t))&&(e.rangeContainsPositionExclusive(e.createTextRangeFromSpan(e.createTextSpanFromNode(t)),o)||o===t.end&&(!!t.isUnterminated||e.isRegularExpressionLiteral(t)))}(t)||function(t){var r=t.parent,n=r.kind;switch(t.kind){case 27:return 241===n||242===n||224===n||247===n||ae(n)||245===n||189===n||246===n||e.isClassLike(r)&&!!r.typeParameters&&r.typeParameters.end>=t.pos;case 24:return 189===n;case 58:return 190===n;case 22:return 189===n;case 20:return 278===n||ae(n);case 18:return 247===n;case 29:return 244===n||213===n||245===n||246===n||e.isFunctionLikeKind(n);case 119:return 158===n&&!e.isClassLike(r.parent);case 25:return 155===n||!!r.parent&&189===r.parent.kind;case 118:case 116:case 117:return 155===n&&!e.isConstructorDeclaration(r.parent);case 122:return 257===n||261===n||255===n;case 130:case 141:return!L(t);case 79:case 87:case 113:case 93:case 108:case 95:case 114:case 80:case 120:case 144:return!0;case 41:return e.isFunctionLike(t.parent)&&!e.isMethodDeclaration(t.parent)}if(P(I(t))&&L(t))return!1;if(ie(t)&&(!e.isIdentifier(t)||e.isParameterPropertyModifier(I(t))||ue(t)))return!1;switch(I(t)){case 121:case 79:case 80:case 129:case 87:case 93:case 113:case 114:case 116:case 117:case 118:case 119:case 108:case 120:return!0;case 125:return e.isPropertyDeclaration(t.parent)}return e.isDeclarationName(t)&&!e.isJsxAttribute(t.parent)&&!(e.isClassLike(t.parent)&&(t!==h||o>h.end))}(t)||function(e){if(8===e.kind){var t=e.getFullText();return"."===t.charAt(t.length-1)}return!1}(t)||function(e){if(11===e.kind)return!0;if(31===e.kind&&e.parent){if(266===e.parent.kind)return!0;if(267===e.parent.kind||265===e.parent.kind)return!!e.parent.parent&&264===e.parent.parent.kind}return!1}(t);return n("getCompletionsAtPosition: isCompletionListBlocker: "+(e.timestamp()-r)),i}(v))return void n("Returning an empty list because completion was requested in an invalid position.");var B=v.parent;if(24===v.kind||28===v.kind)switch(E=24===v.kind,C=28===v.kind,B.kind){case 193:if((S=(D=B).expression).end===v.pos&&e.isCallExpression(S)&&S.getChildCount(i)&&21!==e.last(S.getChildren(i)).kind)return;break;case 152:S=B.left;break;case 248:S=B.name;break;case 187:case 218:S=B;break;default:return}else if(1===i.languageVariant){if(B&&193===B.kind&&(v=B,B=B.parent),d.parent===w)switch(d.kind){case 31:264!==d.parent.kind&&266!==d.parent.kind||(w=d);break;case 43:265===d.parent.kind&&(w=d)}switch(B.kind){case 267:43===v.kind&&(N=!0,w=v);break;case 208:if(!R(B))break;case 265:case 264:case 266:29===v.kind&&(k=!0,w=v);break;case 271:switch(h.kind){case 62:A=!0;break;case 75:B!==h.parent&&!B.initializer&&e.findChildOfKind(B,62,i)&&(A=h)}}}}var j=e.timestamp(),K=5,J=!1,z=0,U=[],V=[],q=[],W=u.getImportSuggestionsCache&&u.getImportSuggestionsCache();if(E||C)!function(){K=2;var t=e.isLiteralImportTypeNode(S),r=f||t&&!S.isTypeOf||e.isPartOfTypeNode(S.parent)||e.isPossiblyTypeArgumentPosition(v,i,l),n=e.isInRightSideOfInternalImportEqualsDeclaration(S);if(e.isEntityName(S)||t){var a=e.isModuleDeclaration(S.parent);a&&(J=!0);var o=l.getSymbolAtLocation(S);if(o&&1920&(o=e.skipAlias(o,l)).flags){for(var c=e.Debug.assertEachDefined(l.getExportsOfModule(o),"getExportsOfModule() should all be defined"),u=function(e){return l.isValidPropertyAccess(t?S:S.parent,e.name)},_=function(e){return ne(e)},d=a?function(e){return!!(1920&e.flags)&&!e.declarations.every((function(e){return e.parent===S.parent}))}:n?function(e){return _(e)||u(e)}:r?_:u,p=0,m=c;p<m.length;p++){var g=m[p];d(g)&&U.push(g)}if(!r&&o.declarations&&o.declarations.some((function(e){return 288!==e.kind&&248!==e.kind&&247!==e.kind}))){var y=l.getTypeOfSymbolAtLocation(o,S).getNonOptionalType(),h=!1;if(y.isNullableType())((x=E&&!C&&!1!==s.includeAutomaticOptionalChainCompletions)||C)&&(y=y.getNonNullableType(),x&&(h=!0));Z(y,!!(32768&S.flags),h)}return}}if(e.isMetaProperty(S)&&(98===S.keywordToken||95===S.keywordToken)){var b=98===S.keywordToken?"target":"meta";return void U.push(l.createSymbol(4,e.escapeLeadingUnderscores(b)))}if(!r){var x;y=l.getTypeAtLocation(S).getNonOptionalType(),h=!1;if(y.isNullableType())((x=E&&!C&&!1!==s.includeAutomaticOptionalChainCompletions)||C)&&(y=y.getNonNullableType(),x&&(h=!0));Z(y,!!(32768&S.flags),h)}}();else if(k){var G=e.Debug.assertEachDefined(l.getJsxIntrinsicTagNamesAt(w),"getJsxIntrinsicTagNames() should all be defined");te(),U=G.concat(U),K=3,z=0}else if(N){var H=v.parent.parent.openingElement.tagName,Y=l.getSymbolAtLocation(H);Y&&(U=[Y]),K=3,z=0}else if(!te())return;n("getCompletionData: Semantic work: "+(e.timestamp()-j));var X=h&&function(t,r,n,i){var a=t.parent;switch(t.kind){case 75:return e.getContextualTypeFromParent(t,i);case 62:switch(a.kind){case 241:return i.getContextualType(a.initializer);case 208:return i.getTypeAtLocation(a.left);case 271:return i.getContextualTypeForJsxAttribute(a);default:return}case 98:return i.getContextualType(a);case 77:return e.getSwitchedType(e.cast(a,e.isCaseClause),i);case 18:return e.isJsxExpression(a)&&264!==a.parent.kind?i.getContextualTypeForJsxAttribute(a.parent):void 0;default:var o=e.SignatureHelp.getArgumentInfoForCompletions(t,r,n);return o?i.getContextualTypeForArgumentAtIndex(o.invocation,o.argumentIndex+(27===t.kind?1:0)):e.isEqualityOperatorKind(t.kind)&&e.isBinaryExpression(a)&&e.isEqualityOperatorKind(a.operatorToken.kind)?i.getTypeAtLocation(a.left):i.getContextualType(t)}}(h,o,i,l),Q=e.mapDefined(X&&(X.isUnion()?X.types:[X]),(function(e){return e.isLiteral()?e.value:void 0})),$=h&&X&&function(t,r,n){return e.firstDefined(r&&(r.isUnion()?r.types:[r]),(function(r){var i=r&&r.symbol;return i&&424&i.flags&&!e.isAbstractConstructorSymbol(i)?T(i,t,n):void 0}))}(h,X,l);return{kind:0,symbols:U,completionKind:K,isInSnippetScope:m,propertyAccessToConvert:D,isNewIdentifierLocation:J,location:w,keywordFilters:z,literals:Q,symbolToOriginInfoMap:V,recommendedCompletion:$,previousToken:h,isJsxInitializer:A,insideJsDocTagTypeExpression:f,symbolToSortTextMap:q};function Z(t,r,n){J=!!t.getStringIndexType(),C&&e.some(t.getCallSignatures())&&(J=!0);var i=187===S.kind?S:S.parent;if(a)U.push.apply(U,M(t,l));else for(var o=0,c=t.getApparentProperties();o<c.length;o++){var u=c[o];l.isValidPropertyAccessForCompletions(i,t,u)&&ee(u,!1,n)}if(r&&s.includeCompletionsWithInsertText){var _=l.getPromisedTypeOfPromise(t);if(_)for(var d=0,p=_.getApparentProperties();d<p.length;d++){u=p[d];l.isValidPropertyAccessForCompletions(i,_,u)&&ee(u,!0,n)}}}function ee(t,r,n){var i=e.firstDefined(t.declarations,(function(t){return e.tryCast(e.getNameOfDeclaration(t),e.isComputedPropertyName)}));if(i){var a=function t(r){return e.isIdentifier(r)?r:e.isPropertyAccessExpression(r)?t(r.expression):void 0}(i.expression),o=a&&l.getSymbolAtLocation(a),c=o&&T(o,v,l);if(c&&!V[e.getSymbolId(c)]){U.push(c);var u=c.parent;V[e.getSymbolId(c)]=u&&e.isExternalModuleSymbol(u)?{kind:d(6),moduleSymbol:u,isDefaultExport:!1}:{kind:d(2)}}else s.includeCompletionsWithInsertText&&(_(t),U.push(t))}else _(t),U.push(t);function _(t){s.includeCompletionsWithInsertText&&(r&&!V[e.getSymbolId(t)]?V[e.getSymbolId(t)]={kind:d(8)}:n&&(V[e.getSymbolId(t)]={kind:16}))}function d(e){return n?16|e:e}}function te(){var a,_;return 1===(function(){var t,r,n=function(t){if(t){var r=t.parent;switch(t.kind){case 18:case 27:if(e.isObjectLiteralExpression(r)||e.isObjectBindingPattern(r))return r;break;case 41:return e.isMethodDeclaration(r)?e.tryCast(r.parent,e.isObjectLiteralExpression):void 0;case 75:return"async"===t.text&&e.isShorthandPropertyAssignment(t.parent)?t.parent.parent:void 0}}return}(v);if(!n)return 0;if(K=0,192===n.kind){if(!(o=l.getContextualType(n,4)))return 2;J=e.hasIndexSignature(o),t=O(o,n,l),r=n.properties}else{e.Debug.assert(188===n.kind),J=!1;var i=e.getRootDeclaration(n.parent);if(!e.isVariableLike(i))return e.Debug.fail("Root declaration is not variable-like.");var a=e.hasInitializer(i)||e.hasType(i)||231===i.parent.parent.kind;if(a||155!==i.kind||(e.isExpression(i.parent)?a=!!l.getContextualType(i.parent):160!==i.parent.kind&&163!==i.parent.kind||(a=e.isExpression(i.parent.parent)&&!!l.getContextualType(i.parent.parent))),a){var o;if(!(o=l.getTypeAtLocation(n)))return 2;t=l.getPropertiesOfType(o).filter((function(t){return!(24&e.getDeclarationModifierFlagsFromSymbol(t))})),r=n.elements}}t&&t.length>0&&(U=function(t,r){if(0===r.length)return t;for(var n=e.createMap(),i=e.createUnderscoreEscapedMap(),a=0,o=r;a<o.length;a++){var s=o[a];if((279===s.kind||280===s.kind||190===s.kind||160===s.kind||162===s.kind||163===s.kind||281===s.kind)&&!ue(s)){var c=void 0;if(e.isSpreadAssignment(s))oe(s,n);else if(e.isBindingElement(s)&&s.propertyName)75===s.propertyName.kind&&(c=s.propertyName.escapedText);else{var u=e.getNameOfDeclaration(s);c=u&&e.isPropertyNameLiteral(u)?e.getEscapedTextOfIdentifierOrLiteral(u):void 0}i.set(c,!0)}}var l=t.filter((function(e){return!i.get(e.escapedName)}));return ce(n,l),l}(t,e.Debug.assertDefined(r)));return se(),1}()||function(){var t=!v||18!==v.kind&&27!==v.kind?void 0:e.tryCast(v.parent,e.isNamedImportsOrExports);if(!t)return 0;var r=(256===t.kind?t.parent.parent:t.parent).moduleSpecifier,n=l.getSymbolAtLocation(r);if(!n)return 2;K=3,J=!1;var i=l.getExportsAndPropertiesOfModule(n),a=e.arrayToSet(t.elements,(function(e){return ue(e)?void 0:(e.propertyName||e.name).escapedText}));return U=i.filter((function(e){return"default"!==e.escapedName&&!a.get(e.escapedName)})),1}()||(function(t){if(t){var r=t.parent;switch(t.kind){case 20:case 27:return e.isConstructorDeclaration(t.parent)?t.parent:void 0;default:if(ie(t))return r.parent}}}(v)?(K=5,J=!0,z=4,1):0)||function(){var t=function(t,r,n,i){switch(n.kind){case 317:return e.tryCast(n.parent,e.isObjectTypeDeclaration);case 1:var a=e.tryCast(e.lastOrUndefined(e.cast(n.parent,e.isSourceFile).statements),e.isObjectTypeDeclaration);if(a&&!e.findChildOfKind(a,19,t))return a;break;case 75:if(L(n))return e.findAncestor(n,e.isObjectTypeDeclaration)}if(!r)return;switch(r.kind){case 26:case 19:return L(n)&&n.parent.name===n?n.parent.parent:e.tryCast(n,e.isObjectTypeDeclaration);case 18:case 27:return e.tryCast(r.parent,e.isObjectTypeDeclaration);default:if(!L(r))return e.getLineAndCharacterOfPosition(t,r.getEnd()).line!==e.getLineAndCharacterOfPosition(t,i).line&&e.isObjectTypeDeclaration(n)?n:void 0;var o=e.isClassLike(r.parent.parent)?P:F;return o(r.kind)||41===r.kind||e.isIdentifier(r)&&o(e.stringToToken(r.text))?r.parent.parent:void 0}}(i,v,w,o);if(!t)return 0;if(K=3,J=!0,z=41===v.kind?0:e.isClassLike(t)?2:3,!e.isClassLike(t))return 1;var r=26===v.kind?v.parent.parent:v.parent,n=e.isClassElement(r)?e.getModifierFlags(r):0;if(75===v.kind&&!ue(v))switch(v.getText()){case"private":n|=8;break;case"static":n|=32}if(!(8&n)){var a=e.flatMap(e.getAllSuperTypeNodes(t),(function(e){var r=l.getTypeAtLocation(e);return r&&l.getPropertiesOfType(32&n?l.getTypeOfSymbolAtLocation(r.symbol,t):r)}));U=function(t,r,n){for(var i=e.createUnderscoreEscapedMap(),a=0,o=r;a<o.length;a++){var s=o[a];if((158===s.kind||160===s.kind||162===s.kind||163===s.kind)&&(!ue(s)&&!e.hasModifier(s,8)&&e.hasModifier(s,32)===!!(32&n))){var c=e.getPropertyNameForPropertyNameNode(s.name);c&&i.set(c,!0)}}return t.filter((function(t){return!(i.has(t.escapedName)||!t.declarations||8&e.getDeclarationModifierFlagsFromSymbol(t))}))}(a,t.members,n)}return 1}()||(a=function(t){if(t){var r=t.parent;switch(t.kind){case 31:case 30:case 43:case 75:case 193:case 272:case 271:case 273:if(r&&(265===r.kind||266===r.kind)){if(31===t.kind){var n=e.findPrecedingToken(t.pos,i,void 0);if(!r.typeArguments||n&&43===n.kind)break}return r}if(271===r.kind)return r.parent.parent;break;case 10:if(r&&(271===r.kind||273===r.kind))return r.parent.parent;break;case 19:if(r&&274===r.kind&&r.parent&&271===r.parent.kind)return r.parent.parent.parent;if(r&&273===r.kind)return r.parent.parent}}}(v),(_=a&&l.getContextualType(a.attributes))?(U=function(t,r){for(var n=e.createUnderscoreEscapedMap(),i=e.createMap(),a=0,o=r;a<o.length;a++){var s=o[a];ue(s)||(271===s.kind?n.set(s.name.escapedText,!0):e.isJsxSpreadAttribute(s)&&oe(s,i))}var c=t.filter((function(e){return!n.get(e.escapedName)}));return ce(i,c),c}(O(_,a.attributes,l),a.attributes.properties),se(),K=3,J=!1,1):0)||(function(){z=function(t){if(t){var r,n=e.findAncestor(t.parent,(function(t){return e.isClassLike(t)?"quit":!(!e.isFunctionLikeDeclaration(t)||r!==t.body)||(r=t,!1)}));return n&&n}}(v)?5:1,K=1,J=function(e){if(e){var t=e.parent.kind;switch(I(e)){case 27:return 195===t||161===t||196===t||191===t||208===t||169===t;case 20:return 195===t||161===t||196===t||199===t||181===t;case 22:return 191===t||166===t||153===t;case 134:case 135:return!0;case 24:return 248===t;case 18:return 244===t;case 62:return 241===t||208===t;case 15:return 210===t;case 16:return 220===t;case 118:case 116:case 117:return 158===t}}return!1}(v),h!==v&&e.Debug.assert(!!h,"Expected 'contextToken' to be defined when different from 'previousToken'.");var a=h!==v?h.getStart():o,_=function(t,r,n){var i=t;for(;i&&!e.positionBelongsToNode(i,r,n);)i=i.parent;return i}(v,a,i)||i;m=function(t){switch(t.kind){case 288:case 210:case 274:case 222:return!0;default:return e.isStatement(t)}}(_);var d=2887656|(re()?0:111551);U=e.Debug.assertEachDefined(l.getSymbolsInScope(_,d),"getSymbolsInScope() should all be defined");for(var p=0,f=U;p<f.length;p++){var g=f[p];l.isArgumentsSymbol(g)||e.some(g.declarations,(function(e){return e.getSourceFile()===i}))||(q[e.getSymbolId(g)]=r.GlobalsOrKeywords)}if(s.includeCompletionsWithInsertText&&288!==_.kind){var y=l.tryGetThisTypeAt(_,!1);if(y)for(var x=0,D=M(y,l);x<D.length;x++){g=D[x];V[e.getSymbolId(g)]={kind:1},U.push(g),q[e.getSymbolId(g)]=r.SuggestedClassMembers}}if(s.includeCompletionsForModuleExports&&(i.externalModuleIndicator||!i.commonJsModuleIndicator&&(e.compilerOptionsIndicateEs6Modules(t.getCompilerOptions())||e.programContainsEs6Modules(t)))){var S=h&&e.isIdentifier(h)?h.text.toLowerCase():"",T=function(r,a){var o=W&&W.get(i.fileName,l,c&&a.getProjectVersion?a.getProjectVersion():void 0);if(o)return n("getSymbolsFromOtherSourceFileExports: Using cached list"),o;var s=e.timestamp();n("getSymbolsFromOtherSourceFileExports: Recomputing list"+(c?" for details entry":""));var u=e.createMap(),_=e.createMap(),d=e.createMap(),p=[],f=e.createMap();return e.codefix.forEachExternalModuleToImportFrom(t,a,i,!c,(function(t){if(!c||!c.source||e.stripQuotes(t.name)===c.source){var r=l.resolveExternalModuleSymbol(t);if(e.addToSeen(u,e.getSymbolId(r))){r!==t&&e.every(r.declarations,(function(t){return!!t.getSourceFile().externalModuleIndicator&&!e.findAncestor(t,e.isGlobalScopeAugmentation)}))&&m(r,t,!0);for(var n=0,i=l.getExportsOfModule(t);n<i.length;n++){var a=i[n];if(!e.some(a.declarations,(function(t){return e.isExportSpecifier(t)&&!!t.propertyName&&e.isIdentifierANonContextualKeyword(t.name)}))){var o=e.getSymbolId(a).toString(),s=l.getMergedSymbol(a.parent)!==r;if(s||e.some(a.declarations,(function(t){return e.isExportSpecifier(t)&&!t.propertyName&&!!t.parent.parent.moduleSpecifier}))){var p=s?a:function(e,t,r){var n=t;for(;2097152&n.flags&&(n=e.getImmediateAliasedSymbol(n));)if(r(n))return n}(l,a,(function(t){return e.some(t.declarations,(function(t){return e.isExportSpecifier(t)||!!t.localSymbol}))}));if(!p)continue;var g=e.getSymbolId(p).toString();f.has(g)||_.has(g)?e.addToSeen(_,o):(d.set(g,{alias:a,moduleSymbol:t}),_.set(o,!0))}else d.delete(o),m(a,t)}}}}})),d.forEach((function(e){return m(e.alias,e.moduleSymbol)})),n("getSymbolsFromOtherSourceFileExports: "+(e.timestamp()-s)),p;function m(t,n,i){void 0===i&&(i=!1);var a="default"===t.escapedName;a&&(t=e.getLocalSymbolForExportDefault(t)||t),e.addToSeen(f,e.getSymbolId(t));var o={kind:4,moduleSymbol:n,isDefaultExport:a};p.push({symbol:t,symbolName:b(t,o,r),origin:o,skipFilter:i})}}(t.getCompilerOptions().target,u);!c&&W&&W.set(i.fileName,T,u.getProjectVersion&&u.getProjectVersion()),T.forEach((function(t){var n=t.symbol,i=t.symbolName,a=t.skipFilter,o=t.origin;if(c){if(c.source&&e.stripQuotes(o.moduleSymbol.name)!==c.source)return}else if(!a&&!function(e,t){if(0===t.length)return!0;for(var r=0,n=0;n<e.length;n++)if(e.charCodeAt(n)===t.charCodeAt(r)&&++r===t.length)return!0;return!1}(i.toLowerCase(),S))return;var s=e.getSymbolId(n);U.push(n),V[s]=o,q[s]=r.AutoImportSuggestions}))}!function(t){var r=re();r&&(z=e.isAssertionExpression(v.parent)?6:7);e.filterMutate(t,(function(t){if(!e.isSourceFile(w)){if(e.isExportAssignment(w.parent))return!0;if(t=e.skipAlias(t,l),e.isInRightSideOfInternalImportEqualsDeclaration(w))return!!(1920&t.flags);if(r)return ne(t)}return!!(111551&e.getCombinedLocalAndExportSymbolFlags(t))}))}(U)}(),1))}function re(){return f||!function(t){return t&&107===t.kind&&(171===t.parent.kind||e.isTypeOfExpression(t.parent))}(v)&&(e.isPossiblyTypeArgumentPosition(v,i,l)||e.isPartOfTypeNode(w)||function(t){if(t){var r=t.parent.kind;switch(t.kind){case 58:return 158===r||157===r||155===r||241===r||e.isFunctionLikeKind(r);case 62:return 246===r;case 122:return 216===r;case 29:return 168===r||198===r;case 89:return 154===r}}return!1}(v))}function ne(t,r){void 0===r&&(r=e.createMap());var n=e.skipAlias(t.exportSymbol||t,l);return!!(788968&n.flags)||!!(1536&n.flags)&&e.addToSeen(r,e.getSymbolId(n))&&l.getExportsOfModule(n).some((function(e){return ne(e,r)}))}function ie(t){return!!t.parent&&e.isParameter(t.parent)&&e.isConstructorDeclaration(t.parent.parent)&&(e.isParameterPropertyModifier(t.kind)||e.isDeclarationName(t))}function ae(t){return e.isFunctionLikeKind(t)&&161!==t}function oe(e,t){var r=e.expression,n=l.getSymbolAtLocation(r),i=n&&l.getTypeOfSymbolAtLocation(n,r),a=i&&i.properties;a&&a.forEach((function(e){t.set(e.name,!0)}))}function se(){U.forEach((function(t){16777216&t.flags&&(q[e.getSymbolId(t)]=q[e.getSymbolId(t)]||r.OptionalMember)}))}function ce(t,n){if(0!==t.size)for(var i=0,a=n;i<a.length;i++){var o=a[i];t.has(o.name)&&(q[e.getSymbolId(o)]=r.MemberDeclaredBySpreadAssignment)}}function ue(e){return e.getStart(i)<=o&&o<=e.getEnd()}}function C(t,r,n,i){var a=b(t,n,r);if(!(void 0===a||1536&t.flags&&e.isSingleOrDoubleQuote(a.charCodeAt(0))||e.isKnownSymbol(t))){var o={name:a,needsConvertPropertyAccess:!1};if(e.isIdentifierText(a,r))return o;switch(i){case 3:return;case 0:return{name:JSON.stringify(a),needsConvertPropertyAccess:!1};case 2:case 1:return 32===a.charCodeAt(0)?void 0:{name:a,needsConvertPropertyAccess:!0};case 5:case 4:return o;default:e.Debug.assertNever(i)}}}t.getCompletionEntriesFromSymbols=h,t.getCompletionEntryDetails=function(r,n,i,a,s,c,u,l,d){var p=r.getTypeChecker(),f=r.getCompilerOptions(),m=s.name,g=e.findPrecedingToken(a,i);if(e.isInString(i,a,g))return t.StringCompletions.getStringLiteralCompletionDetails(m,i,a,g,p,f,c,d);var y=v(r,n,i,a,s,c);switch(y.type){case"request":var h=y.request;switch(h.kind){case 1:return e.JsDoc.getJSDocTagNameCompletionDetails(m);case 2:return e.JsDoc.getJSDocTagCompletionDetails(m);case 3:return e.JsDoc.getJSDocParameterNameCompletionDetails(m);default:return e.Debug.assertNever(h)}case"symbol":var S=y.symbol,T=y.location,E=function(t,r,n,i,a,s,c,u,l,_,d){var p=t[e.getSymbolId(r)];if(!p||!o(p))return{codeActions:void 0,sourceDisplay:void 0};var f=p.moduleSymbol,m=i.getMergedSymbol(e.skipAlias(r.exportSymbol||r,i)),g=e.codefix.getImportCompletionAction(m,f,c,b(r,p,s.target),a,n,_,l&&e.isIdentifier(l)?l.getStart(c):u,d),y=g.moduleSpecifier,h=g.codeAction;return{sourceDisplay:[e.textPart(y)],codeActions:[h]}}(y.symbolToOriginInfoMap,S,r,p,c,f,i,a,y.previousToken,u,l);return D(S,p,i,T,d,E.codeActions,E.sourceDisplay);case"literal":var C=y.literal;return x(_(C),"string","string"==typeof C?e.SymbolDisplayPartKind.stringLiteral:e.SymbolDisplayPartKind.numericLiteral);case"none":return N().some((function(e){return e.name===m}))?x(m,"keyword",e.SymbolDisplayPartKind.keyword):void 0;default:e.Debug.assertNever(y)}},t.createCompletionDetailsForSymbol=D,t.createCompletionDetails=S,t.getCompletionEntrySymbol=function(e,t,r,n,i,a){var o=v(e,t,r,n,i,a);return"symbol"===o.type?o.symbol:void 0},function(e){e[e.Data=0]="Data",e[e.JsDocTagName=1]="JsDocTagName",e[e.JsDocTag=2]="JsDocTag",e[e.JsDocParameterName=3]="JsDocParameterName"}(l||(l={})),function(e){e[e.ObjectPropertyDeclaration=0]="ObjectPropertyDeclaration",e[e.Global=1]="Global",e[e.PropertyAccess=2]="PropertyAccess",e[e.MemberLike=3]="MemberLike",e[e.String=4]="String",e[e.None=5]="None"}(t.CompletionKind||(t.CompletionKind={}));var k=[],N=e.memoize((function(){for(var t=[],n=76;n<=151;n++)t.push({name:e.tokenToString(n),kind:"keyword",kindModifiers:"",sortText:r.GlobalsOrKeywords});return t}));function A(t){return k[t]||(k[t]=N().filter((function(r){var n=e.stringToToken(r.name);switch(t){case 0:return!1;case 1:return w(n)||129===n||134===n||144===n||135===n||e.isTypeKeyword(n)&&145!==n;case 5:return w(n);case 2:return P(n);case 3:return F(n);case 4:return e.isParameterPropertyModifier(n);case 6:return e.isTypeKeyword(n)||80===n;case 7:return e.isTypeKeyword(n);default:return e.Debug.assertNever(t)}})))}function F(e){return 137===e}function P(t){switch(t){case 121:case 128:case 130:case 141:case 125:return!0;default:return e.isClassMemberModifier(t)}}function w(t){return 125===t||126===t||!e.isContextualKeyword(t)&&!P(t)}function I(t){return e.isIdentifier(t)?t.originalKeywordKind||0:t.kind}function O(t,r,n){return t.isUnion()?n.getAllPossiblePropertiesOfTypes(t.types.filter((function(t){return!(131068&t.flags||n.isArrayLikeType(t)||e.typeHasCallOrConstructSignatures(t,n)||n.isTypeInvalidDueToUnionDiscriminant(t,r))}))):t.getApparentProperties()}function M(t,r){return t.isUnion()?e.Debug.assertEachDefined(r.getAllPossiblePropertiesOfTypes(t.types),"getAllPossiblePropertiesOfTypes() should all be defined"):e.Debug.assertEachDefined(t.getApparentProperties(),"getApparentProperties() should all be defined")}function L(t){return t.parent&&e.isClassOrTypeElement(t.parent)&&e.isObjectTypeDeclaration(t.parent.parent)}function R(t){var r=t.left;return e.nodeIsMissing(r)}}(e.Completions||(e.Completions={}))}(s||(s={})),function(e){!function(r){function n(t,r){return{fileName:r.fileName,textSpan:e.createTextSpanFromNode(t,r),kind:"none"}}function i(t){return e.isThrowStatement(t)?[t]:e.isTryStatement(t)?e.concatenate(t.catchClause?i(t.catchClause):t.tryBlock&&i(t.tryBlock),t.finallyBlock&&i(t.finallyBlock)):e.isFunctionLike(t)?void 0:o(t,i)}function a(t){return e.isBreakOrContinueStatement(t)?[t]:e.isFunctionLike(t)?void 0:o(t,a)}function o(t,r){var n=[];return t.forEachChild((function(t){var i=r(t);void 0!==i&&n.push.apply(n,e.toArray(i))})),n}function s(e,t){var r=c(t);return!!r&&r===e}function c(t){return e.findAncestor(t,(function(r){switch(r.kind){case 236:if(232===t.kind)return!1;case 229:case 230:case 231:case 228:case 227:return!t.label||function(t,r){return!!e.findAncestor(t.parent,(function(t){return e.isLabeledStatement(t)?t.label.escapedText===r:"quit"}))}(r,t.label.escapedText);default:return e.isFunctionLike(r)&&"quit"}}))}function u(t,r){for(var n=[],i=2;i<arguments.length;i++)n[i-2]=arguments[i];return!(!r||!e.contains(n,r.kind))&&(t.push(r),!0)}function l(t){var r=[];if(u(r,t.getFirstToken(),92,110,85)&&227===t.kind)for(var n=t.getChildren(),i=n.length-1;i>=0&&!u(r,n[i],110);i--);return e.forEach(a(t.statement),(function(e){s(t,e)&&u(r,e.getFirstToken(),76,81)})),r}function _(e){var t=c(e);if(t)switch(t.kind){case 229:case 230:case 231:case 227:case 228:return l(t);case 236:return d(t)}}function d(t){var r=[];return u(r,t.getFirstToken(),102),e.forEach(t.caseBlock.clauses,(function(n){u(r,n.getFirstToken(),77,83),e.forEach(a(n),(function(e){s(t,e)&&u(r,e.getFirstToken(),76)}))})),r}function p(t,r){var n=[];(u(n,t.getFirstToken(),106),t.catchClause&&u(n,t.catchClause.getFirstToken(),78),t.finallyBlock)&&u(n,e.findChildOfKind(t,91,r),91);return n}function f(t,r){var n=function(t){for(var r=t;r.parent;){var n=r.parent;if(e.isFunctionBlock(n)||288===n.kind)return n;if(e.isTryStatement(n)&&n.tryBlock===r&&n.catchClause)return r;r=n}}(t);if(n){var a=[];return e.forEach(i(n),(function(t){a.push(e.findChildOfKind(t,104,r))})),e.isFunctionBlock(n)&&e.forEachReturnStatement(n,(function(t){a.push(e.findChildOfKind(t,100,r))})),a}}function m(t,r){var n=e.getContainingFunction(t);if(n){var a=[];return e.forEachReturnStatement(e.cast(n.body,e.isBlock),(function(t){a.push(e.findChildOfKind(t,100,r))})),e.forEach(i(n.body),(function(t){a.push(e.findChildOfKind(t,104,r))})),a}}function g(t){var r=e.getContainingFunction(t);if(r){var n=[];return r.modifiers&&r.modifiers.forEach((function(e){u(n,e,125)})),e.forEachChild(r,(function(t){y(t,(function(t){e.isAwaitExpression(t)&&u(n,t.getFirstToken(),126)}))})),n}}function y(t,r){r(t),e.isFunctionLike(t)||e.isClassLike(t)||e.isInterfaceDeclaration(t)||e.isModuleDeclaration(t)||e.isTypeAliasDeclaration(t)||e.isTypeNode(t)||e.forEachChild(t,(function(e){return y(e,r)}))}r.getDocumentHighlights=function(r,i,a,o,s){var c=e.getTouchingPropertyName(a,o);if(c.parent&&(e.isJsxOpeningElement(c.parent)&&c.parent.tagName===c||e.isJsxClosingElement(c.parent))){var h=c.parent.parent,v=[h.openingElement,h.closingElement].map((function(e){return n(e.tagName,a)}));return[{fileName:a.fileName,highlightSpans:v}]}return function(t,r,n,i,a){var o=e.arrayToSet(a,(function(e){return e.fileName})),s=e.FindAllReferences.getReferenceEntriesForNode(t,r,n,a,i,void 0,o);if(!s)return;var c=e.arrayToMultiMap(s.map(e.FindAllReferences.toHighlightSpan),(function(e){return e.fileName}),(function(e){return e.span}));return e.arrayFrom(c.entries(),(function(t){var r=t[0],i=t[1];if(!o.has(r)){e.Debug.assert(n.redirectTargetsMap.has(r));var s=n.getSourceFile(r);r=e.find(a,(function(e){return!!e.redirectInfo&&e.redirectInfo.redirectTarget===s})).fileName,e.Debug.assert(o.has(r))}return{fileName:r,highlightSpans:i}}))}(o,c,r,i,s)||function(r,i){var a=function(r,i){switch(r.kind){case 94:case 86:return e.isIfStatement(r.parent)?function(t,r){for(var i=function(t,r){var n=[];for(;e.isIfStatement(t.parent)&&t.parent.elseStatement===t;)t=t.parent;for(;;){var i=t.getChildren(r);u(n,i[0],94);for(var a=i.length-1;a>=0&&!u(n,i[a],86);a--);if(!t.elseStatement||!e.isIfStatement(t.elseStatement))break;t=t.elseStatement}return n}(t,r),a=[],o=0;o<i.length;o++){if(86===i[o].kind&&o<i.length-1){for(var s=i[o],c=i[o+1],l=!0,_=c.getStart(r)-1;_>=s.end;_--)if(!e.isWhiteSpaceSingleLine(r.text.charCodeAt(_))){l=!1;break}if(l){a.push({fileName:r.fileName,textSpan:e.createTextSpanFromBounds(s.getStart(),c.end),kind:"reference"}),o++;continue}}a.push(n(i[o],r))}return a}(r.parent,i):void 0;case 100:return c(r.parent,e.isReturnStatement,m);case 104:return c(r.parent,e.isThrowStatement,f);case 106:case 78:case 91:return c(78===r.kind?r.parent.parent:r.parent,e.isTryStatement,p);case 102:return c(r.parent,e.isSwitchStatement,d);case 77:case 83:return c(r.parent.parent.parent,e.isSwitchStatement,d);case 76:case 81:return c(r.parent,e.isBreakOrContinueStatement,_);case 92:case 110:case 85:return c(r.parent,(function(t){return e.isIterationStatement(t,!0)}),l);case 128:return s(e.isConstructorDeclaration,[128]);case 130:case 141:return s(e.isAccessor,[130,141]);case 126:return c(r.parent,e.isAwaitExpression,g);case 125:return h(g(r));case 120:return h(function(t){var r=e.getContainingFunction(t);if(!r)return;var n=[];return e.forEachChild(r,(function(t){y(t,(function(t){e.isYieldExpression(t)&&u(n,t.getFirstToken(),120)}))})),n}(r));default:return e.isModifierKind(r.kind)&&(e.isDeclaration(r.parent)||e.isVariableStatement(r.parent))?h((a=r.kind,o=r.parent,e.mapDefined(function(r,n){var i=r.parent;switch(i.kind){case 249:case 288:case 222:case 275:case 276:return 128&n&&e.isClassDeclaration(r)?t(r.members,[r]):i.statements;case 161:case 160:case 243:return t(i.parameters,e.isClassLike(i.parent)?i.parent.members:[]);case 244:case 213:case 245:case 172:var a=i.members;if(92&n){var o=e.find(i.members,e.isConstructorDeclaration);if(o)return t(a,o.parameters)}else if(128&n)return t(a,[i]);return a;default:e.Debug.assertNever(i,"Invalid container kind.")}}(o,e.modifierToFlag(a)),(function(t){return e.findModifier(t,a)})))):void 0}var a,o;function s(t,n){return c(r.parent,t,(function(r){return e.mapDefined(r.symbol.declarations,(function(r){return t(r)?e.find(r.getChildren(i),(function(t){return e.contains(n,t.kind)})):void 0}))}))}function c(e,t,r){return t(e)?h(r(e,i)):void 0}function h(e){return e&&e.map((function(e){return n(e,i)}))}}(r,i);return a&&[{fileName:i.fileName,highlightSpans:a}]}(c,a)}}(e.DocumentHighlights||(e.DocumentHighlights={}))}(s||(s={})),function(e){function t(t,n,i){void 0===n&&(n="");var a=e.createMap(),o=e.createGetCanonicalFileName(!!t);function s(e,t,r,n,i,a,o){return u(e,t,r,n,i,a,!0,o)}function c(e,t,r,n,i,a,o){return u(e,t,r,n,i,a,!1,o)}function u(t,r,n,o,s,c,u,l){var _=e.getOrUpdate(a,o,e.createMap),d=_.get(r),p=6===l?100:n.target||1;!d&&i&&((f=i.getDocument(o,r))&&(e.Debug.assert(u),d={sourceFile:f,languageServiceRefCount:0},_.set(r,d)));if(d)d.sourceFile.version!==c&&(d.sourceFile=e.updateLanguageServiceSourceFile(d.sourceFile,s,c,s.getChangeRange(d.sourceFile.scriptSnapshot)),i&&i.setDocument(o,r,d.sourceFile)),u&&d.languageServiceRefCount++;else{var f=e.createLanguageServiceSourceFile(t,s,p,c,!1,l);i&&i.setDocument(o,r,f),d={sourceFile:f,languageServiceRefCount:1},_.set(r,d)}return e.Debug.assert(0!==d.languageServiceRefCount),d.sourceFile}function l(t,r){var n=e.Debug.assertDefined(a.get(r)),i=n.get(t);i.languageServiceRefCount--,e.Debug.assert(i.languageServiceRefCount>=0),0===i.languageServiceRefCount&&n.delete(t)}return{acquireDocument:function(t,i,a,c,u){return s(t,e.toPath(t,n,o),i,r(i),a,c,u)},acquireDocumentWithKey:s,updateDocument:function(t,i,a,s,u){return c(t,e.toPath(t,n,o),i,r(i),a,s,u)},updateDocumentWithKey:c,releaseDocument:function(t,i){return l(e.toPath(t,n,o),r(i))},releaseDocumentWithKey:l,getLanguageServiceRefCounts:function(t){return e.arrayFrom(a.entries(),(function(e){var r=e[0],n=e[1].get(t);return[r,n&&n.languageServiceRefCount]}))},reportStats:function(){var t=e.arrayFrom(a.keys()).filter((function(e){return e&&"_"===e.charAt(0)})).map((function(e){var t=a.get(e),r=[];return t.forEach((function(e,t){r.push({name:t,refCount:e.languageServiceRefCount})})),r.sort((function(e,t){return t.refCount-e.refCount})),{bucket:e,sourceFiles:r}}));return JSON.stringify(t,void 0,2)},getKeyForCompilationSettings:r}}function r(t){return e.sourceFileAffectingCompilerOptions.map((function(r){return e.getCompilerOptionValue(t,r)})).join("|")}e.createDocumentRegistry=function(e,r){return t(e,r)},e.createDocumentRegistryInternal=t}(s||(s={})),function(e){!function(t){function n(t,r){return e.forEach(288===t.kind?t.statements:t.body.statements,(function(t){return r(t)||c(t)&&e.forEach(t.body&&t.body.statements,r)}))}function i(t,r){if(t.externalModuleIndicator||void 0!==t.imports)for(var i=0,a=t.imports;i<a.length;i++){var o=a[i];r(e.importFromModuleSpecifier(o),o)}else n(t,(function(t){switch(t.kind){case 259:case 253:(n=t).moduleSpecifier&&e.isStringLiteral(n.moduleSpecifier)&&r(n,n.moduleSpecifier);break;case 252:var n;u(n=t)&&r(n,n.moduleReference.expression)}}))}function a(t,r,n){var i=t.parent;if(i){var a=n.getMergedSymbol(i);return e.isExternalModuleSymbol(a)?{exportingModuleSymbol:a,exportKind:r}:void 0}}function o(e,t){return t.getMergedSymbol(s(e).symbol)}function s(t){if(195===t.kind)return t.getSourceFile();var r=t.parent;return 288===r.kind?r:(e.Debug.assert(249===r.kind),e.cast(r.parent,c))}function c(e){return 248===e.kind&&10===e.name.kind}function u(e){return 263===e.moduleReference.kind&&10===e.moduleReference.expression.kind}t.createImportTracker=function(t,a,c,l){var _=function(t,r,n){for(var a=e.createMap(),o=0,s=t;o<s.length;o++){var c=s[o];n&&n.throwIfCancellationRequested(),i(c,(function(t,n){var i=r.getSymbolAtLocation(n);if(i){var o=e.getSymbolId(i).toString(),s=a.get(o);s||a.set(o,s=[]),s.push(t)}}))}return a}(t,c,l);return function(i,d,p){var f=function(t,r,i,a,c,u){var l=a.exportingModuleSymbol,_=a.exportKind,d=e.nodeSeenTracker(),p=e.nodeSeenTracker(),f=[],m=!!l.globalExports,g=m?void 0:[];return function t(r){var n=v(r);if(n)for(var i=0,a=n;i<a.length;i++){var l=a[i];if(d(l))switch(u&&u.throwIfCancellationRequested(),l.kind){case 195:if(!m){var p=l.parent;if(2===_&&241===p.kind){var g=p.name;if(75===g.kind){f.push(g);break}}h(l.getSourceFile())}break;case 75:break;case 252:y(l,l.name,e.hasModifier(l,1),!1);break;case 253:f.push(l);var b=l.importClause&&l.importClause.namedBindings;b&&255===b.kind?y(l,b.name,!1,!0):!m&&e.isDefaultImport(l)&&h(s(l));break;case 259:l.exportClause?f.push(l):t(o(l,c));break;case 187:f.push(l);break;default:e.Debug.failBadSyntaxKind(l,"Unexpected import kind.")}}}(l),{directImports:f,indirectUsers:function(){if(m)return t;for(var n=0,i=l.declarations;n<i.length;n++){var a=i[n];e.isExternalModuleAugmentation(a)&&r.has(a.getSourceFile().fileName)&&h(a)}return g.map(e.getSourceFileOfNode)}()};function y(t,r,i,a){if(2===_)a||f.push(t);else if(!m){var o=s(t);e.Debug.assert(288===o.kind||248===o.kind),i||function(t,r,i){var a=i.getSymbolAtLocation(r);return!!n(t,(function(t){if(e.isExportDeclaration(t)){var r=t.exportClause;return!t.moduleSpecifier&&r&&r.elements.some((function(e){return i.getExportSpecifierLocalTargetSymbol(e)===a}))}}))}(o,r,c)?function t(r){if(!h(r))return;var n=c.getMergedSymbol(r.symbol);e.Debug.assert(!!(1536&n.flags));var i=v(n);if(i)for(var a=0,o=i;a<o.length;a++){var u=o[a];t(s(u))}}(o):h(o)}}function h(t){e.Debug.assert(!m);var r=p(t);return r&&g.push(t),r}function v(t){return i.get(e.getSymbolId(t).toString())}}(t,a,_,d,c,l),m=f.directImports,g=f.indirectUsers;return r({indirectUsers:g},function(t,r,n,i,a){var o=[],s=[];function c(e,t){o.push([e,t])}if(t)for(var l=0,_=t;l<_.length;l++){d(_[l])}return{importSearches:o,singleReferences:s};function d(t){if(252!==t.kind)if(75!==t.kind)if(187!==t.kind){if(10===t.moduleSpecifier.kind)if(259!==t.kind){var o=t.importClause||{name:void 0,namedBindings:void 0},l=o.name,_=o.namedBindings;if(_)switch(_.kind){case 255:p(_.name);break;case 256:0!==n&&1!==n||f(_);break;default:e.Debug.assertNever(_)}if(l&&(1===n||2===n)&&(!a||l.escapedText===e.symbolEscapedNameNoDefault(r)))c(l,i.getSymbolAtLocation(l))}else f(t.exportClause)}else t.qualifier?e.isIdentifier(t.qualifier)&&t.qualifier.escapedText===e.symbolName(r)&&s.push(t.qualifier):2===n&&s.push(t.argument.literal);else p(t);else u(t)&&p(t.name)}function p(e){2!==n||a&&!m(e.escapedText)||c(e,i.getSymbolAtLocation(e))}function f(e){if(e)for(var t=0,n=e.elements;t<n.length;t++){var o=n[t],u=o.name,l=o.propertyName;if(m((l||u).escapedText))if(l)s.push(l),a&&u.escapedText!==r.escapedName||c(u,i.getSymbolAtLocation(u));else c(u,261===o.kind&&o.propertyName?i.getExportSpecifierLocalTargetSymbol(o):i.getSymbolAtLocation(u))}}function m(e){return e===r.escapedName||0!==n&&"default"===e}}(m,i,d.exportKind,c,p))}},function(e){e[e.Named=0]="Named",e[e.Default=1]="Default",e[e.ExportEquals=2]="ExportEquals"}(t.ExportKind||(t.ExportKind={})),function(e){e[e.Import=0]="Import",e[e.Export=1]="Export"}(t.ImportExport||(t.ImportExport={})),t.findModuleReferences=function(e,t,r){for(var n=[],a=e.getTypeChecker(),o=0,s=t;o<s.length;o++){var c=s[o],u=r.valueDeclaration;if(288===u.kind){for(var l=0,_=c.referencedFiles;l<_.length;l++){var d=_[l];e.getSourceFileFromReference(c,d)===u&&n.push({kind:"reference",referencingFile:c,ref:d})}for(var p=0,f=c.typeReferenceDirectives;p<f.length;p++){d=f[p];var m=e.getResolvedTypeReferenceDirectives().get(d.fileName);void 0!==m&&m.resolvedFileName===u.fileName&&n.push({kind:"reference",referencingFile:c,ref:d})}}i(c,(function(e,t){a.getSymbolAtLocation(t)===r&&n.push({kind:"import",literal:t})}))}return n},t.getImportOrExportSymbol=function(t,r,n,i){return i?o():o()||function(){if(!function(t){var r=t.parent;switch(r.kind){case 252:return r.name===t&&u(r);case 257:return!r.propertyName;case 254:case 255:return e.Debug.assert(r.name===t),!0;default:return!1}}(t))return;var i=n.getImmediateAliasedSymbol(r);if(!i)return;"export="===(i=function(t,r){if(t.declarations)for(var n=0,i=t.declarations;n<i.length;n++){var a=i[n];if(e.isExportSpecifier(a)&&!a.propertyName&&!a.parent.parent.moduleSpecifier)return r.getExportSpecifierLocalTargetSymbol(a)}return t}(i,n)).escapedName&&(i=function(t,r){if(2097152&t.flags)return e.Debug.assertDefined(r.getImmediateAliasedSymbol(t));var n=t.valueDeclaration;if(e.isExportAssignment(n))return e.Debug.assertDefined(n.expression.symbol);if(e.isBinaryExpression(n))return e.Debug.assertDefined(n.right.symbol);if(e.isSourceFile(n))return e.Debug.assertDefined(n.symbol);return e.Debug.fail()}(i,n));var a=e.symbolEscapedNameNoDefault(i);if(void 0===a||"default"===a||a===r.escapedName)return{kind:0,symbol:i}}();function o(){var a=t.parent,o=a.parent;if(r.exportSymbol)return 193===a.kind?r.declarations.some((function(e){return e===a}))&&e.isBinaryExpression(o)?_(o,!1):void 0:s(r.exportSymbol,c(a));var u=function(t,r){var n=e.isVariableDeclaration(t)?t:e.isBindingElement(t)?e.walkUpBindingElementsAndPatterns(t):void 0;return n?t.name!==r?void 0:e.isCatchClause(n.parent)?void 0:e.isVariableStatement(n.parent.parent)?n.parent.parent:void 0:t}(a,t);if(u&&e.hasModifier(u,1)){if(e.isImportEqualsDeclaration(u)&&u.moduleReference===t){if(i)return;return{kind:0,symbol:n.getSymbolAtLocation(u.name)}}return s(r,c(u))}if(e.isExportAssignment(a))return l(a);if(e.isExportAssignment(o))return l(o);if(e.isBinaryExpression(a))return _(a,!0);if(e.isBinaryExpression(o))return _(o,!0);if(e.isJSDocTypedefTag(a))return s(r,0);function l(t){var n=e.Debug.assertDefined(t.symbol.parent,"Expected export symbol to have a parent"),i=t.isExportEquals?2:1;return{kind:1,symbol:r,exportInfo:{exportingModuleSymbol:n,exportKind:i}}}function _(t,i){var a;switch(e.getAssignmentDeclarationKind(t)){case 1:a=0;break;case 2:a=2;break;default:return}var o=i?n.getSymbolAtLocation(e.cast(t.left,e.isPropertyAccessExpression).name):r;return!o||1536&n.getMergedSymbol(o.parent).flags||e.Debug.fail("Special property assignment kind does not have a module as its parent. Assignment is "+e.Debug.formatSymbol(o)+", parent is "+e.Debug.formatSymbol(o.parent)),o&&s(o,a)}}function s(e,t){var r=a(e,t,n);return r&&{kind:1,symbol:e,exportInfo:r}}function c(t){return e.hasModifier(t,512)?1:0}},t.getExportInfo=a}(e.FindAllReferences||(e.FindAllReferences={}))}(s||(s={})),function(e){!function(t){function n(e,t){return void 0===t&&(t=1),{kind:t,node:e.name||e,context:a(e)}}function i(e){return e&&void 0===e.kind}function a(t){if(e.isDeclaration(t))return o(t);if(t.parent){if(!e.isDeclaration(t.parent)&&!e.isExportAssignment(t.parent)){if(e.isInJSFile(t)){var r=e.isBinaryExpression(t.parent)?t.parent:e.isAccessExpression(t.parent)&&e.isBinaryExpression(t.parent.parent)&&t.parent.parent.left===t.parent?t.parent.parent:void 0;if(r&&0!==e.getAssignmentDeclarationKind(r))return o(r)}if(e.isJsxOpeningElement(t.parent)||e.isJsxClosingElement(t.parent))return t.parent.parent;if(e.isJsxSelfClosingElement(t.parent)||e.isLabeledStatement(t.parent)||e.isBreakOrContinueStatement(t.parent))return t.parent;if(e.isStringLiteralLike(t)){var n=e.tryGetImportFromModuleSpecifier(t);if(n){var i=e.findAncestor(n,(function(t){return e.isDeclaration(t)||e.isStatement(t)||e.isJSDocTag(t)}));return e.isDeclaration(i)?o(i):i}}var a=e.findAncestor(t,e.isComputedPropertyName);return a?o(a.parent):void 0}return t.parent.name===t||e.isConstructorDeclaration(t.parent)||e.isExportAssignment(t.parent)||(e.isImportOrExportSpecifier(t.parent)||e.isBindingElement(t.parent))&&t.parent.propertyName===t||83===t.kind&&e.hasModifier(t.parent,513)?o(t.parent):void 0}}function o(t){if(t)switch(t.kind){case 241:return e.isVariableDeclarationList(t.parent)&&1===t.parent.declarations.length?e.isVariableStatement(t.parent.parent)?t.parent.parent:e.isForInOrOfStatement(t.parent.parent)?o(t.parent.parent):t.parent:t;case 190:return o(t.parent.parent);case 257:return t.parent.parent.parent;case 261:case 255:return t.parent.parent;case 254:return t.parent;case 208:return e.isExpressionStatement(t.parent)?t.parent:t;case 231:case 230:return{start:t.initializer,end:t.expression};case 279:case 280:return e.isArrayLiteralOrObjectLiteralDestructuringPattern(t.parent)?o(e.findAncestor(t.parent,(function(t){return e.isBinaryExpression(t)||e.isForInOrOfStatement(t)}))):t;default:return t}}function s(e,t,r){if(r){var n=i(r)?p(r.start,t,r.end):p(r,t);return n.start!==e.start||n.length!==e.length?{contextSpan:n}:void 0}}function c(r,n,i,a,o,s,c){return void 0===s&&(s={}),void 0===c&&(c=e.arrayToSet(a,(function(e){return e.fileName}))),u(t.Core.getReferencedSymbolsForNode(r,n,i,a,o,s,c))}function u(t){return t&&e.flatMap(t,(function(e){return e.references}))}function l(r,n,i){var a=t.Core.getIntersectingMeaningFromDeclarations(i,r),o=r.declarations&&e.firstOrUndefined(r.declarations)||i,s=e.SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(n,r,o.getSourceFile(),o,o,a);return{displayParts:s.displayParts,kind:s.symbolKind}}function _(t){var n=d(t);if(0===t.kind)return r(r({},n),{isWriteAccess:!1,isDefinition:!1});var i=t.kind,a=t.node;return r(r({},n),{isWriteAccess:f(a),isDefinition:83===a.kind||!!e.getDeclarationFromName(a)||e.isLiteralComputedPropertyDeclarationName(a),isInString:2===i||void 0})}function d(e){if(0===e.kind)return{textSpan:e.textSpan,fileName:e.fileName};var t=e.node.getSourceFile(),n=p(e.node,t);return r({textSpan:n,fileName:t.fileName},s(n,t,e.context))}function p(t,r,n){var i=t.getStart(r),a=(n||t).getEnd();return e.isStringLiteralLike(t)&&(e.Debug.assert(void 0===n),i+=1,a-=1),e.createTextSpanFromBounds(i,a)}function f(t){var r=e.getDeclarationFromName(t);return!!r&&function(t){if(8388608&t.flags)return!0;switch(t.kind){case 208:case 190:case 244:case 213:case 83:case 247:case 282:case 261:case 254:case 252:case 257:case 245:case 308:case 315:case 271:case 248:case 251:case 255:case 155:case 280:case 246:case 154:return!0;case 279:return!e.isArrayLiteralOrObjectLiteralDestructuringPattern(t.parent);case 243:case 200:case 161:case 160:case 162:case 163:return!!t.body;case 241:case 158:return!!t.initializer||e.isCatchClause(t.parent);case 159:case 157:case 316:case 310:return!1;default:return e.Debug.failBadSyntaxKind(t)}}(r)||83===t.kind||e.isWriteAccess(t)}!function(e){e[e.Symbol=0]="Symbol",e[e.Label=1]="Label",e[e.Keyword=2]="Keyword",e[e.This=3]="This",e[e.String=4]="String"}(t.DefinitionKind||(t.DefinitionKind={})),function(e){e[e.Span=0]="Span",e[e.Node=1]="Node",e[e.StringLiteral=2]="StringLiteral",e[e.SearchedLocalFoundProperty=3]="SearchedLocalFoundProperty",e[e.SearchedPropertyFoundLocal=4]="SearchedPropertyFoundLocal"}(t.EntryKind||(t.EntryKind={})),t.nodeEntry=n,t.isContextWithStartAndEndNode=i,t.getContextNode=o,t.toContextSpan=s,t.findReferencedSymbols=function(n,i,a,c,u){var d=e.getTouchingPropertyName(c,u),f=t.Core.getReferencedSymbolsForNode(u,d,n,a,i),m=n.getTypeChecker();return f&&f.length?e.mapDefined(f,(function(t){var n=t.definition,a=t.references;return n&&{definition:m.runWithCancellationToken(i,(function(t){return function(t,n,i){var a=function(){switch(t.type){case 0:var r=l(f=t.symbol,n,i),a=r.displayParts,s=r.kind,c=a.map((function(e){return e.text})).join(""),u=f.declarations?e.first(f.declarations):void 0;return{node:u?e.getNameOfDeclaration(u)||u:i,name:c,kind:s,displayParts:a,context:o(u)};case 1:var _=t.node;return{node:_,name:_.text,kind:"label",displayParts:[e.displayPart(_.text,e.SymbolDisplayPartKind.text)]};case 2:var d=t.node,p=e.tokenToString(d.kind);return{node:d,name:p,kind:"keyword",displayParts:[{text:p,kind:"keyword"}]};case 3:var f,m=t.node,g=(f=n.getSymbolAtLocation(m))&&e.SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(n,f,m.getSourceFile(),e.getContainerNode(m),m).displayParts||[e.textPart("this")];return{node:m,name:"this",kind:"var",displayParts:g};case 4:var y=t.node;return{node:y,name:y.text,kind:"var",displayParts:[e.displayPart(e.getTextOfNode(y),e.SymbolDisplayPartKind.stringLiteral)]};default:return e.Debug.assertNever(t)}}(),c=a.node,u=a.name,_=a.kind,d=a.displayParts,f=a.context,m=c.getSourceFile(),g=p(e.isComputedPropertyName(c)?c.expression:c,m);return r({containerKind:"",containerName:"",fileName:m.fileName,kind:_,name:u,textSpan:g,displayParts:d},s(g,m,f))}(n,t,d)})),references:a.map(_)}})):void 0},t.getImplementationsAtPosition=function(i,a,o,s,u){var _=function(r,i,a,o,s){if(288===o.kind)return;var u=r.getTypeChecker();if(280===o.parent.kind){var l=[];return t.Core.getReferenceEntriesForShorthandPropertyAssignment(o,u,(function(e){return l.push(n(e))})),l}if(101===o.kind||e.isSuperProperty(o.parent)){var _=u.getSymbolAtLocation(o);return _.valueDeclaration&&[n(_.valueDeclaration)]}return c(s,o,r,a,i,{implementations:!0})}(i,a,o,e.getTouchingPropertyName(s,u),u),p=i.getTypeChecker();return e.map(_,(function(t){return function(t,n){var i=d(t);if(0!==t.kind){var a=t.node;return r(r({},i),function(t,r){var n=r.getSymbolAtLocation(e.isDeclaration(t)&&t.name?t.name:t);return n?l(n,r,t):192===t.kind?{kind:"interface",displayParts:[e.punctuationPart(20),e.textPart("object literal"),e.punctuationPart(21)]}:213===t.kind?{kind:"local class",displayParts:[e.punctuationPart(20),e.textPart("anonymous local class"),e.punctuationPart(21)]}:{kind:e.getNodeKind(t),displayParts:[]}}(a,n))}return r(r({},i),{kind:"",displayParts:[]})}(t,p)}))},t.findReferenceOrRenameEntries=function(r,n,i,a,o,s,c){return e.map(u(t.Core.getReferencedSymbolsForNode(o,a,r,i,n,s)),(function(e){return c(e,a,r.getTypeChecker())}))},t.getReferenceEntriesForNode=c,t.toRenameLocation=function(t,n,i,a){return r(r({},d(t)),a&&function(t,r,n){if(0!==t.kind&&e.isIdentifier(r)){var i=t.node,a=t.kind,o=r.text,s=e.isShorthandPropertyAssignment(i.parent);if(s||e.isObjectBindingElementWithoutPropertyName(i.parent)){var c={prefixText:o+": "},u={suffixText:": "+o};return 3===a?c:4===a?u:s?u:c}if(e.isImportSpecifier(t.node.parent)&&!t.node.parent.propertyName){var l=e.isExportSpecifier(r.parent)?n.getExportSpecifierLocalTargetSymbol(r.parent):n.getSymbolAtLocation(r);return e.contains(l.declarations,t.node.parent)?{prefixText:o+" as "}:e.emptyOptions}if(e.isExportSpecifier(t.node.parent)&&!t.node.parent.propertyName)return r===t.node?{prefixText:o+" as "}:{suffixText:" as "+o}}return e.emptyOptions}(t,n,i))},t.toReferenceEntry=_,t.toHighlightSpan=function(e){var t=d(e);if(0===e.kind)return{fileName:t.fileName,span:{textSpan:t.textSpan,kind:"reference"}};var n=f(e.node),i=r({textSpan:t.textSpan,kind:n?"writtenReference":"reference",isInString:2===e.kind||void 0},t.contextSpan&&{contextSpan:t.contextSpan});return{fileName:t.fileName,span:i}},t.getTextSpanOfEntry=function(e){return 0===e.kind?e.textSpan:p(e.node,e.node.getSourceFile())}}(e.FindAllReferences||(e.FindAllReferences={}))}(s||(s={})),function(e){!function(t){!function(r){function n(t,r,n){if(t.parent&&e.isNamespaceExportDeclaration(t.parent)){var i=n.getAliasedSymbol(r),a=n.getMergedSymbol(i);if(i!==a)return a}}function i(t,r,n,i,o,c){var l=1536&t.flags?e.find(t.declarations,e.isSourceFile):void 0;if(l){var _=t.exports.get("export="),d=s(r,t,!!_,n,c);if(!_||!c.has(l.fileName))return d;var p=r.getTypeChecker();return a(r,d,u(t=e.skipAlias(_,p),void 0,n,c,p,i,o))}}function a(r){for(var n,i=[],a=1;a<arguments.length;a++)i[a-1]=arguments[a];for(var s=0,c=i;s<c.length;s++){var u=c[s];if(u&&u.length)if(n)for(var l=function(i){if(!i.definition||0!==i.definition.type)return n.push(i),"continue";var a=i.definition.symbol,s=e.findIndex(n,(function(e){return!!e.definition&&0===e.definition.type&&e.definition.symbol===a}));if(-1===s)return n.push(i),"continue";var c=n[s];n[s]={definition:c.definition,references:c.references.concat(i.references).sort((function(n,i){var a=o(r,n),s=o(r,i);if(a!==s)return e.compareValues(a,s);var c=t.getTextSpanOfEntry(n),u=t.getTextSpanOfEntry(i);return c.start!==u.start?e.compareValues(c.start,u.start):e.compareValues(c.length,u.length)}))}},_=0,d=u;_<d.length;_++){l(d[_])}else n=u}return n}function o(e,t){var r=0===t.kind?e.getSourceFile(t.fileName):t.node.getSourceFile();return e.getSourceFiles().indexOf(r)}function s(r,n,i,a,o){e.Debug.assert(!!n.valueDeclaration);for(var s=e.mapDefined(t.findModuleReferences(r,a,n),(function(r){if("import"===r.kind){var n=r.literal.parent;if(e.isLiteralTypeNode(n)){var a=e.cast(n.parent,e.isImportTypeNode);if(i&&!a.qualifier)return}return t.nodeEntry(r.literal)}return{kind:0,fileName:r.referencingFile.fileName,textSpan:e.createTextSpanFromRange(r.ref)}})),c=0,u=n.declarations;c<u.length;c++){switch((p=u[c]).kind){case 288:break;case 248:o.has(p.getSourceFile().fileName)&&s.push(t.nodeEntry(p.name));break;default:e.Debug.assert(!!(33554432&n.flags),"Expected a module symbol to be declared by a SourceFile or ModuleDeclaration.")}}var l=n.exports.get("export=");if(l)for(var _=0,d=l.declarations;_<d.length;_++){var p,f=(p=d[_]).getSourceFile();if(o.has(f.fileName)){var m=e.isBinaryExpression(p)&&e.isPropertyAccessExpression(p.left)?p.left.expression:e.isExportAssignment(p)?e.Debug.assertDefined(e.findChildOfKind(p,88,f)):e.getNameOfDeclaration(p)||p;s.push(t.nodeEntry(m))}}return s.length?[{definition:{type:0,symbol:n},references:s}]:e.emptyArray}function c(t){return 137===t.kind&&e.isTypeOperatorNode(t.parent)&&137===t.parent.operator}function u(t,r,n,i,a,o,s){var c=r&&function(t,r,n,i){var a=r.parent;if(e.isExportSpecifier(a)&&i)return C(r,t,a,n);return e.firstDefined(t.declarations,(function(i){if(!i.parent){if(33554432&t.flags)return;e.Debug.fail("Unexpected symbol at "+e.Debug.formatSyntaxKind(r.kind)+": "+e.Debug.formatSymbol(t))}return e.isTypeLiteralNode(i.parent)&&e.isUnionTypeNode(i.parent.parent)?n.getPropertyOfType(n.getTypeFromTypeNode(i.parent.parent),t.name):void 0}))}(t,r,a,!M(s))||t,u=r?w(r,c):7,_=[],f=new d(n,i,r?function(t){switch(t.kind){case 128:return 1;case 75:if(e.isClassLike(t.parent))return e.Debug.assert(t.parent.name===t),2;default:return 0}}(r):0,a,o,u,s,_),m=M(s)?e.find(c.declarations,e.isExportSpecifier):void 0;if(m)E(m.name,c,m,f.createSearch(r,t,void 0),f,!0,!0);else if(r&&83===r.kind)k(r,c,f),p(r,c,{exportingModuleSymbol:e.Debug.assertDefined(c.parent,"Expected export symbol to have a parent"),exportKind:1},f);else{var g=f.createSearch(r,c,void 0,{allSearchSymbols:r?F(c,r,a,!!s.isForRename,!!s.providePrefixAndSuffixTextForRename,!!s.implementations):[c]});l(c,f,g)}return _}function l(t,r,n){var i=function(t){var r=t.declarations,n=t.flags,i=t.parent,a=t.valueDeclaration;if(a&&(200===a.kind||213===a.kind))return a;if(!r)return;if(8196&n){var o=e.find(r,(function(t){return e.hasModifier(t,8)}));return o?e.getAncestor(o,244):void 0}if(r.some(e.isObjectBindingElementWithoutPropertyName))return;var s,c=i&&!(262144&t.flags);if(c&&(!e.isExternalModuleSymbol(i)||i.globalExports))return;for(var u=0,l=r;u<l.length;u++){var _=l[u],d=e.getContainerNode(_);if(s&&s!==d)return;if(!d||288===d.kind&&!e.isExternalOrCommonJsModule(d))return;s=d}return c?s.getSourceFile():s}(t);if(i)D(i,i.getSourceFile(),n,r,!(e.isSourceFile(i)&&!e.contains(r.sourceFiles,i)));else for(var a=0,o=r.sourceFiles;a<o.length;a++){var s=o[a];r.cancellationToken.throwIfCancellationRequested(),g(s,n,r)}}var _;r.getReferencedSymbolsForNode=function(r,o,l,_,d,p,f){if(void 0===p&&(p={}),void 0===f&&(f=e.arrayToSet(_,(function(e){return e.fileName}))),e.isSourceFile(o)){var m=e.GoToDefinition.getReferenceAtPosition(o,r,l),g=m&&l.getTypeChecker().getMergedSymbol(m.file.symbol);return g&&s(l,g,!1,_,f)}if(!p.implementations){var y=function(r,n,i){if(e.isTypeKeyword(r.kind)){if(137===r.kind&&!c(r))return;return function(r,n,i,a){var o=e.flatMap(r,(function(r){return i.throwIfCancellationRequested(),e.mapDefined(h(r,e.tokenToString(n),r),(function(e){if(e.kind===n&&(!a||a(e)))return t.nodeEntry(e)}))}));return o.length?[{definition:{type:2,node:o[0].node},references:o}]:void 0}(n,r.kind,i,137===r.kind?c:void 0)}if(e.isJumpStatementTarget(r)){var a=e.getTargetLabel(r.parent,r.text);return a&&b(a.parent,a)}if(e.isLabelOfLabeledStatement(r))return b(r.parent,r);if(e.isThis(r))return function(r,n,i){var a=e.getThisContainer(r,!1),o=32;switch(a.kind){case 160:case 159:if(e.isObjectLiteralMethod(a))break;case 158:case 157:case 161:case 162:case 163:o&=e.getModifierFlags(a),a=a.parent;break;case 288:if(e.isExternalModule(a)||A(r))return;case 243:case 200:break;default:return}var s=e.flatMap(288===a.kind?n:[a.getSourceFile()],(function(t){return i.throwIfCancellationRequested(),h(t,"this",e.isSourceFile(a)?t:a).filter((function(t){if(!e.isThis(t))return!1;var r=e.getThisContainer(t,!1);switch(a.kind){case 200:case 243:return a.symbol===r.symbol;case 160:case 159:return e.isObjectLiteralMethod(a)&&a.symbol===r.symbol;case 213:case 244:return r.parent&&a.symbol===r.parent.symbol&&(32&e.getModifierFlags(r))===o;case 288:return 288===r.kind&&!e.isExternalModule(r)&&!A(t)}}))})).map((function(e){return t.nodeEntry(e)}));return[{definition:{type:3,node:e.firstDefined(s,(function(t){return e.isParameter(t.node.parent)?t.node:void 0}))||r},references:s}]}(r,n,i);if(101===r.kind)return function(r){var n=e.getSuperContainer(r,!1);if(!n)return;var i=32;switch(n.kind){case 158:case 157:case 160:case 159:case 161:case 162:case 163:i&=e.getModifierFlags(n),n=n.parent;break;default:return}var a=n.getSourceFile(),o=e.mapDefined(h(a,"super",n),(function(r){if(101===r.kind){var a=e.getSuperContainer(r,!1);return a&&(32&e.getModifierFlags(a))===i&&a.parent.symbol===n.symbol?t.nodeEntry(r):void 0}}));return[{definition:{type:0,symbol:n.symbol},references:o}]}(r);return}(o,_,d);if(y)return y}var v=l.getTypeChecker(),x=v.getSymbolAtLocation(o);if(!x)return!p.implementations&&e.isStringLiteral(o)?function(r,n,i){var a=e.flatMap(n,(function(n){return i.throwIfCancellationRequested(),e.mapDefined(h(n,r.text),(function(n){return e.isStringLiteral(n)&&n.text===r.text?t.nodeEntry(n,2):void 0}))}));return[{definition:{type:4,node:r},references:a}]}(o,_,d):void 0;if("export="===x.escapedName)return s(l,x.parent,!1,_,f);var D=i(x,l,_,d,p,f);if(D&&!(33554432&x.flags))return D;var S=n(o,x,v),T=S&&i(S,l,_,d,p,f);return a(l,D,u(x,o,_,f,v,d,p),T)},function(e){e[e.None=0]="None",e[e.Constructor=1]="Constructor",e[e.Class=2]="Class"}(_||(_={}));var d=function(){function r(t,r,n,i,a,o,s,c){this.sourceFiles=t,this.sourceFilesSet=r,this.specialSearchKind=n,this.checker=i,this.cancellationToken=a,this.searchMeaning=o,this.options=s,this.result=c,this.inheritsFromCache=e.createMap(),this.markSeenContainingTypeReference=e.nodeSeenTracker(),this.markSeenReExportRHS=e.nodeSeenTracker(),this.symbolIdToReferences=[],this.sourceFileToSeenSymbols=[]}return r.prototype.includesSourceFile=function(e){return this.sourceFilesSet.has(e.fileName)},r.prototype.getImportSearches=function(e,r){return this.importTracker||(this.importTracker=t.createImportTracker(this.sourceFiles,this.sourceFilesSet,this.checker,this.cancellationToken)),this.importTracker(e,r,!!this.options.isForRename)},r.prototype.createSearch=function(t,r,n,i){void 0===i&&(i={});var a=i.text,o=void 0===a?e.stripQuotes(e.unescapeLeadingUnderscores((e.getLocalSymbolForExportDefault(r)||function(t){if(33555968&t.flags){var r=t.declarations&&e.find(t.declarations,(function(t){return!e.isSourceFile(t)&&!e.isModuleDeclaration(t)}));return r&&r.symbol}}(r)||r).escapedName)):a,s=i.allSearchSymbols,c=void 0===s?[r]:s;return{symbol:r,comingFrom:n,text:o,escapedText:e.escapeLeadingUnderscores(o),parents:this.options.implementations&&t?function(t,r,n){var i=e.isRightSideOfPropertyAccess(t)?t.parent:void 0,a=i&&n.getTypeAtLocation(i.expression),o=e.mapDefined(a&&(a.isUnionOrIntersection()?a.types:a.symbol===r.parent?void 0:[a]),(function(e){return e.symbol&&96&e.symbol.flags?e.symbol:void 0}));return 0===o.length?void 0:o}(t,r,this.checker):void 0,allSearchSymbols:c,includes:function(t){return e.contains(c,t)}}},r.prototype.referenceAdder=function(r){var n=e.getSymbolId(r),i=this.symbolIdToReferences[n];return i||(i=this.symbolIdToReferences[n]=[],this.result.push({definition:{type:0,symbol:r},references:i})),function(e,r){return i.push(t.nodeEntry(e,r))}},r.prototype.addStringOrCommentReference=function(e,t){this.result.push({definition:void 0,references:[{kind:0,fileName:e,textSpan:t}]})},r.prototype.markSearchedSymbols=function(t,r){for(var n=e.getNodeId(t),i=this.sourceFileToSeenSymbols[n]||(this.sourceFileToSeenSymbols[n]=e.createMap()),a=!1,o=0,s=r;o<s.length;o++){var c=s[o];a=e.addToSeen(i,e.getSymbolId(c))||a}return a},r}();function p(e,t,r,n){var i=n.getImportSearches(t,r),a=i.importSearches,o=i.singleReferences,s=i.indirectUsers;if(o.length)for(var c=n.referenceAdder(t),u=0,l=o;u<l.length;u++){var _=l[u];f(_,n)&&c(_)}for(var d=0,p=a;d<p.length;d++){var m=p[d],y=m[0],h=m[1];x(y.getSourceFile(),n.createSearch(y,h,1),n)}if(s.length){var v=void 0;switch(r.exportKind){case 0:v=n.createSearch(e,t,1);break;case 1:v=n.options.isForRename?void 0:n.createSearch(e,t,1,{text:"default"})}if(v)for(var b=0,D=s;b<D.length;b++){g(D[b],v,n)}}}function f(t,r){return!!S(t,r)&&(!r.options.isForRename||!!e.isIdentifier(t)&&!(e.isImportOrExportSpecifier(t.parent)&&"default"===t.escapedText))}function m(e,t){for(var r=0,n=e.declarations;r<n.length;r++){var i=n[r],a=i.getSourceFile();x(a,t.createSearch(i,e,0),t,t.includesSourceFile(a))}}function g(t,r,n){void 0!==e.getNameTable(t).get(r.escapedText)&&x(t,r,n)}function y(t,r,n,i){var a=e.isParameterPropertyDeclaration(t.parent,t.parent.parent)?e.first(r.getSymbolsOfParameterPropertyDeclaration(t.parent,t.text)):r.getSymbolAtLocation(t);if(a)for(var o=0,s=h(n,a.name);o<s.length;o++){var c=s[o];if(e.isIdentifier(c)&&c!==t&&c.escapedText===t.escapedText){var u=r.getSymbolAtLocation(c);if(u===a||r.getShorthandAssignmentValueSymbol(c.parent)===a||e.isExportSpecifier(c.parent)&&C(c,u,c.parent,r)===a){var l=i(c);if(l)return l}}}}function h(t,r,n){return void 0===n&&(n=t),v(t,r,n).map((function(r){return e.getTouchingPropertyName(t,r)}))}function v(t,r,n){void 0===n&&(n=t);var i=[];if(!r||!r.length)return i;for(var a=t.text,o=a.length,s=r.length,c=a.indexOf(r,n.pos);c>=0&&!(c>n.end);){var u=c+s;0!==c&&e.isIdentifierPart(a.charCodeAt(c-1),99)||u!==o&&e.isIdentifierPart(a.charCodeAt(u),99)||i.push(c),c=a.indexOf(r,c+s+1)}return i}function b(r,n){var i=r.getSourceFile(),a=n.text,o=e.mapDefined(h(i,a,r),(function(r){return r===n||e.isJumpStatementTarget(r)&&e.getTargetLabel(r,a)===n?t.nodeEntry(r):void 0}));return[{definition:{type:1,node:n},references:o}]}function x(e,t,r,n){return void 0===n&&(n=!0),r.cancellationToken.throwIfCancellationRequested(),D(e,e,t,r,n)}function D(e,t,r,n,i){if(n.markSearchedSymbols(t,r.allSearchSymbols))for(var a=0,o=v(t,r.text,e);a<o.length;a++){T(t,o[a],r,n,i)}}function S(t,r){return!!(e.getMeaningFromLocation(t)&r.searchMeaning)}function T(r,n,i,a,o){var s=e.getTouchingPropertyName(r,n);if(function(t,r){switch(t.kind){case 75:return t.text.length===r.length;case 14:case 10:var n=t;return(e.isLiteralNameOfPropertyDeclarationOrIndexAccess(n)||e.isNameOfModuleDeclaration(t)||e.isExpressionOfExternalModuleImportEqualsDeclaration(t)||e.isCallExpression(t.parent)&&e.isBindableObjectDefinePropertyCall(t.parent)&&t.parent.arguments[1]===t)&&n.text.length===r.length;case 8:return e.isLiteralNameOfPropertyDeclarationOrIndexAccess(t)&&t.text.length===r.length;case 83:return"default".length===r.length;default:return!1}}(s,i.text)){if(S(s,a)){var c=a.checker.getSymbolAtLocation(s);if(c){var u=s.parent;if(!e.isImportSpecifier(u)||u.propertyName!==s){if(e.isExportSpecifier(u))return e.Debug.assert(75===s.kind),void E(s,c,u,i,a,o);var _=function(t,r,n,i){var a=i.checker;return P(r,n,a,!1,!i.options.isForRename||!!i.options.providePrefixAndSuffixTextForRename,(function(r,n,i,a){return t.includes(i||n||r)?{symbol:!n||6&e.getCheckFlags(r)?r:n,kind:a}:void 0}),(function(r){return!(t.parents&&!t.parents.some((function(t){return function t(r,n,i,a){if(r===n)return!0;var o=e.getSymbolId(r)+","+e.getSymbolId(n);var s=i.get(o);if(void 0!==s)return s;i.set(o,!1);var c=r.declarations.some((function(r){return e.getAllSuperTypeNodes(r).some((function(e){var r=a.getTypeAtLocation(e);return!!r&&!!r.symbol&&t(r.symbol,n,i,a)}))}));i.set(o,c);return c}(r.parent,t,i.inheritsFromCache,a)})))}))}(i,c,s,a);if(_){switch(a.specialSearchKind){case 0:o&&k(s,_,a);break;case 1:!function(t,r,n,i){e.isNewExpressionTarget(t)&&k(t,n.symbol,i);var a=function(){return i.referenceAdder(n.symbol)};if(e.isClassLike(t.parent))e.Debug.assert(83===t.kind||t.parent.name===t),function(t,r,n){var i=N(t);if(i)for(var a=0,o=i.declarations;a<o.length;a++){var s=o[a],c=e.findChildOfKind(s,128,r);e.Debug.assert(161===s.kind&&!!c),n(c)}t.exports&&t.exports.forEach((function(t){var r=t.valueDeclaration;if(r&&160===r.kind){var i=r.body;i&&O(i,103,(function(t){e.isNewExpressionTarget(t)&&n(t)}))}}))}(n.symbol,r,a());else{var o=function(t){return e.tryGetClassExtendingExpressionWithTypeArguments(e.climbPastPropertyAccess(t).parent)}(t);o&&(function(t,r){var n=N(t.symbol);if(!n)return;for(var i=0,a=n.declarations;i<a.length;i++){var o=a[i];e.Debug.assert(161===o.kind);var s=o.body;s&&O(s,101,(function(t){e.isCallExpressionTarget(t)&&r(t)}))}}(o,a()),function(e,t){if(function(e){return!!N(e.symbol)}(e))return;var r=e.symbol,n=t.createSearch(void 0,r,void 0);l(r,t,n)}(o,i))}}(s,r,i,a);break;case 2:!function(t,r,n){k(t,r.symbol,n);var i=t.parent;if(n.options.isForRename||!e.isClassLike(i))return;e.Debug.assert(i.name===t);for(var a=n.referenceAdder(r.symbol),o=0,s=i.members;o<s.length;o++){var c=s[o];e.isMethodOrAccessor(c)&&e.hasModifier(c,32)&&(c.body&&c.body.forEachChild((function t(r){103===r.kind?a(r):e.isFunctionLike(r)||e.isClassLike(r)||r.forEachChild(t)})))}}(s,i,a);break;default:e.Debug.assertNever(a.specialSearchKind)}!function(e,r,n,i){var a=t.getImportOrExportSymbol(e,r,i.checker,1===n.comingFrom);if(!a)return;var o=a.symbol;0===a.kind?M(i.options)||m(o,i):p(e,o,a.exportInfo,i)}(s,c,i,a)}else!function(t,r,n){var i=t.flags,a=t.valueDeclaration,o=n.checker.getShorthandAssignmentValueSymbol(a),s=a&&e.getNameOfDeclaration(a);33554432&i||!s||!r.includes(o)||k(s,o,n)}(c,i,a)}}}}else!a.options.implementations&&(a.options.findInStrings&&e.isInString(r,n)||a.options.findInComments&&e.isInNonReferenceComment(r,n))&&a.addStringOrCommentReference(r.fileName,e.createTextSpan(n,i.text.length))}function E(r,n,i,a,o,s,c){e.Debug.assert(!c||!!o.options.providePrefixAndSuffixTextForRename,"If alwaysGetReferences is true, then prefix/suffix text must be enabled");var u=i.parent,l=i.propertyName,_=i.name,d=u.parent,f=C(r,n,i,o.checker);if(c||a.includes(f)){if(l?r===l?(d.moduleSpecifier||b(),s&&!o.options.isForRename&&o.markSeenReExportRHS(_)&&k(_,e.Debug.assertDefined(i.symbol),o)):o.markSeenReExportRHS(r)&&b():o.options.isForRename&&"default"===_.escapedText||b(),!M(o.options)||c){var g=83===r.originalKeywordKind||83===i.name.originalKeywordKind?1:0,y=e.Debug.assertDefined(i.symbol),h=t.getExportInfo(y,g,o.checker);h&&p(r,y,h,o)}if(1!==a.comingFrom&&d.moduleSpecifier&&!l&&!M(o.options)){var v=o.checker.getExportSpecifierLocalTargetSymbol(i);v&&m(v,o)}}function b(){s&&k(r,f,o)}}function C(t,r,n,i){return function(t,r){var n=r.parent,i=r.propertyName,a=r.name;return e.Debug.assert(i===t||a===t),i?i===t:!n.parent.moduleSpecifier}(t,n)&&i.getExportSpecifierLocalTargetSymbol(n)||r}function k(t,r,n){var i="kind"in r?r:{kind:void 0,symbol:r},a=i.kind,o=i.symbol,s=n.referenceAdder(o);n.options.implementations?function(t,r,n){if(e.isDeclarationName(t)&&function(t){return 8388608&t.flags?!(e.isInterfaceDeclaration(t)||e.isTypeAliasDeclaration(t)):e.isVariableLike(t)?e.hasInitializer(t):e.isFunctionLikeDeclaration(t)?!!t.body:e.isClassLike(t)||e.isModuleOrEnumDeclaration(t)}(t.parent))return void r(t);if(75!==t.kind)return;280===t.parent.kind&&I(t,n.checker,r);var i=function t(r){return e.isIdentifier(r)||e.isPropertyAccessExpression(r)?t(r.parent):e.isExpressionWithTypeArguments(r)?e.tryCast(r.parent.parent,e.isClassLike):void 0}(t);if(i)return void r(i);var a=e.findAncestor(t,(function(t){return!e.isQualifiedName(t.parent)&&!e.isTypeNode(t.parent)&&!e.isTypeElement(t.parent)})),o=a.parent;if(e.hasType(o)&&o.type===a&&n.markSeenContainingTypeReference(o))if(e.hasInitializer(o))c(o.initializer);else if(e.isFunctionLike(o)&&o.body){var s=o.body;222===s.kind?e.forEachReturnStatement(s,(function(e){e.expression&&c(e.expression)})):c(s)}else e.isAssertionExpression(o)&&c(o.expression);function c(e){(function e(t){switch(t.kind){case 199:return e(t.expression);case 201:case 200:case 192:case 213:case 191:return!0;default:return!1}})(e)&&r(e)}}(t,s,n):s(t,a)}function N(e){return e.members&&e.members.get("__constructor")}function A(e){return 75===e.kind&&155===e.parent.kind&&e.parent.name===e}function F(e,t,r,n,i,a){var o=[];return P(e,t,r,n,!(n&&i),(function(e,t,r){o.push(r||t||e)}),(function(){return!a})),o}function P(t,r,i,a,o,s,c){var u=e.getContainingObjectLiteralElement(r);if(u){var l=i.getShorthandAssignmentValueSymbol(r.parent);if(l&&a)return s(l,void 0,void 0,3);var _=i.getContextualType(u.parent),d=_&&e.firstDefined(e.getPropertySymbolsFromContextualType(u,i,_,!0),(function(e){return x(e,4)}));if(d)return d;var p=function(t,r){return e.isArrayLiteralOrObjectLiteralDestructuringPattern(t.parent.parent)?r.getPropertySymbolOfDestructuringAssignment(t):void 0}(r,i),f=p&&s(p,void 0,void 0,4);if(f)return f;var m=l&&s(l,void 0,void 0,3);if(m)return m}var g=n(r,t,i);if(g){var y=s(g,void 0,void 0,1);if(y)return y}var h=x(t);if(h)return h;if(t.valueDeclaration&&e.isParameterPropertyDeclaration(t.valueDeclaration,t.valueDeclaration.parent)){var v=i.getSymbolsOfParameterPropertyDeclaration(e.cast(t.valueDeclaration,e.isParameter),t.name);return e.Debug.assert(2===v.length&&!!(1&v[0].flags)&&!!(4&v[1].flags)),x(1&t.flags?v[1]:v[0])}if(!a){var b=void 0;return(b=o?e.isObjectBindingElementWithoutPropertyName(r.parent)?e.getPropertySymbolFromBindingElement(i,r.parent):void 0:D(t,i))&&x(b,4)}if(e.Debug.assert(a),o)return(b=D(t,i))&&x(b,4);function x(t,r){return e.firstDefined(i.getRootSymbols(t),(function(n){return s(t,n,void 0,r)||(n.parent&&96&n.parent.flags&&c(n)?e.getPropertySymbolsFromBaseTypes(n.parent,n.name,i,(function(e){return s(t,n,e,r)})):void 0)}))}function D(t,r){var n=e.getDeclarationOfKind(t,190);if(n&&e.isObjectBindingElementWithoutPropertyName(n))return e.getPropertySymbolFromBindingElement(r,n)}}function w(t,r){var n=e.getMeaningFromLocation(t),i=r.declarations;if(i){var a=void 0;do{a=n;for(var o=0,s=i;o<s.length;o++){var c=s[o],u=e.getMeaningFromDeclaration(c);u&n&&(n|=u)}}while(n!==a)}return n}function I(t,r,n){var i=r.getSymbolAtLocation(t),a=r.getShorthandAssignmentValueSymbol(i.valueDeclaration);if(a)for(var o=0,s=a.getDeclarations();o<s.length;o++){var c=s[o];1&e.getMeaningFromDeclaration(c)&&n(c)}}function O(t,r,n){e.forEachChild(t,(function(e){e.kind===r&&n(e),O(e,r,n)}))}function M(e){return e.isForRename&&e.providePrefixAndSuffixTextForRename}r.eachExportReference=function(r,n,i,a,o,s,c,u){for(var l=t.createImportTracker(r,e.arrayToSet(r,(function(e){return e.fileName})),n,i)(a,{exportKind:c?1:0,exportingModuleSymbol:o},!1),_=l.importSearches,d=l.indirectUsers,p=0,f=_;p<f.length;p++){u(f[p][0])}for(var m=0,g=d;m<g.length;m++)for(var y=0,v=h(g[m],c?"default":s);y<v.length;y++){var b=v[y];e.isIdentifier(b)&&!e.isImportOrExportSpecifier(b.parent)&&n.getSymbolAtLocation(b)===a&&u(b)}},r.isSymbolReferencedInFile=function(e,t,r){return y(e,t,r,(function(){return!0}))||!1},r.eachSymbolReferenceInFile=y,r.eachSignatureCall=function(t,r,n,i){if(t.name&&e.isIdentifier(t.name))for(var a=e.Debug.assertDefined(n.getSymbolAtLocation(t.name)),o=0,s=r;o<s.length;o++)for(var c=0,u=h(s[o],a.name);c<u.length;c++){var l=u[c];if(e.isIdentifier(l)&&l!==t.name&&l.escapedText===t.name.escapedText){var _=e.climbPastPropertyAccess(l),d=_.parent;if(e.isCallExpression(d)&&d.expression===_){var p=n.getSymbolAtLocation(l);p&&n.getRootSymbols(p).some((function(e){return e===a}))&&i(d)}}}},r.getIntersectingMeaningFromDeclarations=w,r.getReferenceEntriesForShorthandPropertyAssignment=I}(t.Core||(t.Core={}))}(e.FindAllReferences||(e.FindAllReferences={}))}(s||(s={})),function(e){function t(t,n,i,a){var o=i(t);return function(t){var s=a&&a.tryGetSourcePosition({fileName:t,pos:0}),c=function(t){if(i(t)===o)return n;var r=e.tryRemoveDirectoryPrefix(t,o,i);return void 0===r?void 0:n+"/"+r}(s?s.fileName:t);return s?void 0===c?void 0:function(t,n,i,a){var o=e.getRelativePathFromFile(t,n,a);return r(e.getDirectoryPath(i),o)}(s.fileName,c,t,i):c}}function r(t,r){return e.ensurePathIsNonModuleName(function(t,r){return e.normalizePath(e.combinePaths(t,r))}(t,r))}function n(t,r){if(t){if(t.resolvedModule){var n=a(t.resolvedModule.resolvedFileName);if(n)return n}var i=e.forEach(t.failedLookupLocations,(function(t){return e.endsWith(t,"/package.json")?void 0:a(t)}));return i||t.resolvedModule&&{newFileName:t.resolvedModule.resolvedFileName,updated:!1}}function a(e){var t=r(e);return t&&{newFileName:t,updated:!0}}}function i(t,r){return e.createRange(t.getStart(r)+1,t.end-1)}function a(t,r){if(e.isObjectLiteralExpression(t))for(var n=0,i=t.properties;n<i.length;n++){var a=i[n];e.isPropertyAssignment(a)&&e.isStringLiteral(a.name)&&r(a,a.name.text)}}e.getEditsForFileRename=function(o,s,c,u,l,_,d){var p=e.hostUsesCaseSensitiveFileNames(u),f=e.createGetCanonicalFileName(p),m=t(s,c,f,d),g=t(c,s,f,d);return e.textChanges.ChangeTracker.with({host:u,formatContext:l,preferences:_},(function(t){!function(t,n,o,s,c,u,l){var _=t.getCompilerOptions().configFile;if(!_)return;var d=e.getDirectoryPath(_.fileName),p=e.getTsConfigObjectLiteralExpression(_);if(!p)return;function f(t){for(var r=!1,n=0,i=e.isArrayLiteralExpression(t.initializer)?t.initializer.elements:[t.initializer];n<i.length;n++){r=m(i[n])||r}return r}function m(t){if(!e.isStringLiteral(t))return!1;var a=r(d,t.text),s=o(a);return void 0!==s&&(n.replaceRangeWithText(_,i(t,_),g(s)),!0)}function g(t){return e.getRelativePathFromDirectory(d,t,!l)}a(p,(function(t,r){switch(r){case"files":case"include":case"exclude":if(!f(t)&&"include"===r&&e.isArrayLiteralExpression(t.initializer)){var i=e.mapDefined(t.initializer.elements,(function(t){return e.isStringLiteral(t)?t.text:void 0})),o=e.getFileMatcherPatterns(d,[],i,l,u);e.getRegexFromPattern(e.Debug.assertDefined(o.includeFilePattern),l).test(s)&&!e.getRegexFromPattern(e.Debug.assertDefined(o.includeFilePattern),l).test(c)&&n.insertNodeAfter(_,e.last(t.initializer.elements),e.createStringLiteral(g(c)))}break;case"compilerOptions":a(t.initializer,(function(t,r){var n=e.getOptionFromName(r);n&&(n.isFilePath||"list"===n.type&&n.element.isFilePath)?f(t):"paths"===r&&a(t.initializer,(function(t){if(e.isArrayLiteralExpression(t.initializer))for(var r=0,n=t.initializer.elements;r<n.length;r++){m(n[r])}}))}))}}))}(o,t,m,s,c,u.getCurrentDirectory(),p),function(t,a,o,s,c,u){for(var l=t.getSourceFiles(),_=function(_){var d=o(_.path),p=void 0!==d?d:_.path,f=e.getDirectoryPath(p),m=s(_.fileName),g=m||_.fileName,y=e.getDirectoryPath(g),h=void 0!==d||void 0!==m;!function(t,r,n,a){for(var o=0,s=t.referencedFiles||e.emptyArray;o<s.length;o++){var c=s[o];void 0!==(_=n(c.fileName))&&_!==t.text.slice(c.pos,c.end)&&r.replaceRangeWithText(t,c,_)}for(var u=0,l=t.imports;u<l.length;u++){var _,d=l[u];void 0!==(_=a(d))&&_!==d.text&&r.replaceRangeWithText(t,i(d,t),_)}}(_,a,(function(t){if(e.pathIsRelative(t)){var n=r(y,t),i=o(n);return void 0===i?void 0:e.ensurePathIsNonModuleName(e.getRelativePathFromDirectory(f,i,u))}}),(function(r){var i=t.getTypeChecker().getSymbolAtLocation(r);if(!i||!i.declarations.some((function(t){return e.isAmbientModule(t)}))){var a=void 0!==m?n(e.resolveModuleName(r.text,g,t.getCompilerOptions(),c),o):function(t,r,i,a,o,s){if(t){var c=e.find(t.declarations,e.isSourceFile).fileName,u=s(c);return void 0===u?{newFileName:c,updated:!1}:{newFileName:u,updated:!0}}return n(o.resolveModuleNames?o.getResolvedModuleWithFailedLookupLocationsFromCache&&o.getResolvedModuleWithFailedLookupLocationsFromCache(r.text,i.fileName):a.getResolvedModuleWithFailedLookupLocationsFromCache(r.text,i.fileName),s)}(i,r,_,t,c,o);return void 0!==a&&(a.updated||h&&e.pathIsRelative(r.text))?e.moduleSpecifiers.updateModuleSpecifier(t.getCompilerOptions(),p,a.newFileName,c,l,t.redirectTargetsMap,r.text):void 0}}))},d=0,p=l;d<p.length;d++){var f=p[d];_(f)}}(o,t,m,g,u,f)}))},e.getPathUpdater=t}(s||(s={})),function(e){!function(n){function i(r,n,i){var o=a(n,i,r);if(o)return[d(o.fileName,o.file.fileName)];var _=e.getTouchingPropertyName(n,i);if(_!==n){var p=_.parent;if(e.isJumpStatementTarget(_)){var f=e.getTargetLabel(_.parent,_.text);return f?[u(f,"label",_.text,void 0)]:void 0}var m=r.getTypeChecker(),g=function(e,t){var r=t.getSymbolAtLocation(e);if(r&&2097152&r.flags&&function(e,t){if(75!==e.kind)return!1;if(e.parent===t)return!0;switch(t.kind){case 254:case 252:return!0;case 257:return 256===t.parent.kind;default:return!1}}(e,r.declarations[0])){var n=t.getAliasedSymbol(r);if(n.declarations)return n}return r}(_,m);if(!g)return function(t,r){if(!e.isPropertyAccessExpression(t.parent)||t.parent.name!==t)return;var n=r.getTypeAtLocation(t.parent.expression);return e.mapDefined(n.isUnionOrIntersection()?n.types:[n],(function(e){var t=r.getIndexInfoOfType(e,0);return t&&t.declaration&&l(r,t.declaration)}))}(_,m);var y=function(t,r){var n=function(t){var r=function t(r){return e.isRightSideOfPropertyAccess(r)?t(r.parent):r}(t),n=r.parent;return n&&e.isCallLikeExpression(n)&&e.getInvokedExpression(n)===r?n:void 0}(r),i=n&&t.getResolvedSignature(n);return e.tryCast(i&&i.declaration,(function(t){return e.isFunctionLike(t)&&!e.isFunctionTypeNode(t)}))}(m,_);if(y&&(!e.isJsxOpeningLikeElement(_.parent)||!function(e){switch(e.kind){case 161:case 170:case 165:return!0;default:return!1}}(y))){var h=l(m,y);if(m.getRootSymbols(g).some((function(t){return function(t,r){return t===r.symbol||t===r.symbol.parent||!e.isCallLikeExpression(r.parent)&&t===r.parent.symbol}(t,y)}))||g.declarations&&g.declarations.some((function(t){return e.isVariableDeclaration(t)&&!!t.initializer&&e.isRequireCall(t.initializer,!1)})))return[h];var v=s(m,g,_,y)||e.emptyArray;return 101===_.kind?t([h],v):t(v,[h])}if(280===_.parent.kind){var b=m.getShorthandAssignmentValueSymbol(g.valueDeclaration);return b?b.declarations.map((function(e){return c(e,m,b,_)})):[]}if(e.isPropertyName(_)&&e.isBindingElement(p)&&e.isObjectBindingPattern(p.parent)&&_===(p.propertyName||p.name)){var x=e.getNameFromPropertyName(_),D=m.getTypeAtLocation(p.parent);return void 0===x?e.emptyArray:e.flatMap(D.isUnion()?D.types:[D],(function(e){var t=e.getProperty(x);return t&&s(m,t,_)}))}var S=e.getContainingObjectLiteralElement(_);if(S){var T=S&&m.getContextualType(S.parent);if(T)return e.flatMap(e.getPropertySymbolsFromContextualType(S,m,T,!1),(function(e){return s(m,e,_)}))}return s(m,g,_)}}function a(e,t,r){var n=_(e.referencedFiles,t);if(n)return(o=r.getSourceFileFromReference(e,n))&&{fileName:n.fileName,file:o};var i=_(e.typeReferenceDirectives,t);if(i){var a=r.getResolvedTypeReferenceDirectives().get(i.fileName);return(o=a&&r.getSourceFile(a.resolvedFileName))&&{fileName:i.fileName,file:o}}var o,s=_(e.libReferenceDirectives,t);return s?(o=r.getLibFileFromReference(s))&&{fileName:s.fileName,file:o}:void 0}function o(t,r,n){return e.flatMap(!t.isUnion()||32&t.flags?[t]:t.types,(function(e){return e.symbol&&s(r,e.symbol,n)}))}function s(t,r,n,i){var a=e.filter(r.declarations,(function(t){return t!==i&&(!e.isAssignmentDeclaration(t)||t===r.valueDeclaration)}))||void 0;return function(){if(32&r.flags&&!(16&r.flags)&&(e.isNewExpressionTarget(n)||128===n.kind)){return o((e.find(a,e.isClassLike)||e.Debug.fail("Expected declaration to have at least one class-like declaration")).members,!0)}}()||(e.isCallOrNewExpressionTarget(n)||e.isNameOfFunctionDeclaration(n)?o(a,!1):void 0)||e.map(a,(function(e){return c(e,t,r,n)}));function o(i,a){if(i){var o=i.filter(a?e.isConstructorDeclaration:e.isFunctionLike),s=o.filter((function(e){return!!e.body}));return o.length?0!==s.length?s.map((function(e){return c(e,t,r,n)})):[c(e.last(o),t,r,n)]:void 0}}}function c(t,r,n,i){var a=r.symbolToString(n);return u(t,e.SymbolDisplay.getSymbolKind(r,n,i),a,n.parent?r.symbolToString(n.parent,i):"")}function u(t,n,i,a){var o=e.getNameOfDeclaration(t)||t,s=o.getSourceFile(),c=e.createTextSpanFromNode(o,s);return r({fileName:s.fileName,textSpan:c,kind:n,name:i,containerKind:void 0,containerName:a},e.FindAllReferences.toContextSpan(c,s,e.FindAllReferences.getContextNode(t)))}function l(e,t){return c(t,e,t.symbol,t)}function _(t,r){return e.find(t,(function(t){return e.textRangeContainsPositionInclusive(t,r)}))}function d(t,r){return{fileName:r,textSpan:e.createTextSpanFromBounds(0,0),kind:"script",name:t,containerName:void 0,containerKind:void 0}}n.getDefinitionAtPosition=i,n.getReferenceAtPosition=a,n.getTypeDefinitionAtPosition=function(t,r,n){var i=e.getTouchingPropertyName(r,n);if(i!==r){var a=t.getSymbolAtLocation(i);if(a){var s=t.getTypeOfSymbolAtLocation(a,i),c=function(t,r,n){if(r.symbol===t||t.valueDeclaration&&r.symbol&&e.isVariableDeclaration(t.valueDeclaration)&&t.valueDeclaration.initializer===r.symbol.valueDeclaration){var i=r.getCallSignatures();if(1===i.length)return n.getReturnTypeOfSignature(e.first(i))}return}(a,s,t),u=c&&o(c,t,i);return u&&0!==u.length?u:o(s,t,i)}}},n.getDefinitionAndBoundSpan=function(t,r,n){var a=i(t,r,n);if(a&&0!==a.length){var o=_(r.referencedFiles,n)||_(r.typeReferenceDirectives,n)||_(r.libReferenceDirectives,n);if(o)return{definitions:a,textSpan:e.createTextSpanFromRange(o)};var s=e.getTouchingPropertyName(r,n);return{definitions:a,textSpan:e.createTextSpan(s.getStart(),s.getWidth())}}},n.findReferenceInPosition=_}(e.GoToDefinition||(e.GoToDefinition={}))}(s||(s={})),function(e){!function(t){var r,n,i=["abstract","access","alias","argument","async","augments","author","borrows","callback","class","classdesc","constant","constructor","constructs","copyright","default","deprecated","description","emits","enum","event","example","exports","extends","external","field","file","fileoverview","fires","function","generator","global","hideconstructor","host","ignore","implements","inheritdoc","inner","instance","interface","kind","lends","license","listens","member","memberof","method","mixes","module","name","namespace","override","package","param","private","property","protected","public","readonly","requires","returns","see","since","static","summary","template","this","throws","todo","tutorial","type","typedef","var","variation","version","virtual","yields"];function a(e){var t=e.comment;switch(e.kind){case 305:return n(e.class);case 314:return i(e.typeParameters.map((function(e){return e.getText()})).join(", "));case 313:return n(e.typeExpression);case 315:case 308:case 316:case 310:var r=e.name;return r?n(r):t;default:return t}function n(e){return i(e.getText())}function i(e){return void 0===t?e:e+" "+t}}function o(t){return{name:t,kind:"",kindModifiers:"",displayParts:[e.textPart(t)],documentation:e.emptyArray,tags:void 0,codeActions:void 0}}function s(t){switch(t.kind){case 243:case 200:case 160:case 161:case 159:return{commentOwner:t,parameters:t.parameters};case 279:return s(t.initializer);case 244:case 245:case 157:case 247:case 282:case 246:return{commentOwner:t};case 224:var r=t.declarationList.declarations;return{commentOwner:t,parameters:1===r.length&&r[0].initializer?function(t){for(;199===t.kind;)t=t.expression;switch(t.kind){case 200:case 201:return t.parameters;case 213:var r=e.find(t.members,e.isConstructorDeclaration);return r?r.parameters:e.emptyArray}return e.emptyArray}(r[0].initializer):void 0};case 288:return"quit";case 248:return 248===t.parent.kind?void 0:{commentOwner:t};case 208:var n=t;return 0===e.getAssignmentDeclarationKind(n)?"quit":{commentOwner:t,parameters:e.isFunctionLike(n.right)?n.right.parameters:e.emptyArray}}}t.getJsDocCommentsFromDeclarations=function(t){var r=[];return e.forEachUnique(t,(function(t){for(var n=0,i=function(t){switch(t.kind){case 310:case 316:return[t];case 308:case 315:return[t,t.parent];default:return e.getJSDocCommentsAndTags(t)}}(t);n<i.length;n++){var a=i[n].comment;void 0!==a&&(r.length&&r.push(e.lineBreakPart()),r.push(e.textPart(a)))}})),r},t.getJsDocTagsFromDeclarations=function(t){var r=[];return e.forEachUnique(t,(function(t){for(var n=0,i=e.getJSDocTags(t);n<i.length;n++){var o=i[n];r.push({name:o.tagName.text,text:a(o)})}})),r},t.getJSDocTagNameCompletions=function(){return r||(r=e.map(i,(function(e){return{name:e,kind:"keyword",kindModifiers:"",sortText:"0"}})))},t.getJSDocTagNameCompletionDetails=o,t.getJSDocTagCompletions=function(){return n||(n=e.map(i,(function(e){return{name:"@"+e,kind:"keyword",kindModifiers:"",sortText:"0"}})))},t.getJSDocTagCompletionDetails=o,t.getJSDocParameterNameCompletions=function(t){if(!e.isIdentifier(t.name))return e.emptyArray;var r=t.name.text,n=t.parent,i=n.parent;return e.isFunctionLike(i)?e.mapDefined(i.parameters,(function(i){if(e.isIdentifier(i.name)){var a=i.name.text;if(!n.tags.some((function(r){return r!==t&&e.isJSDocParameterTag(r)&&e.isIdentifier(r.name)&&r.name.escapedText===a}))&&(void 0===r||e.startsWith(a,r)))return{name:a,kind:"parameter",kindModifiers:"",sortText:"0"}}})):[]},t.getJSDocParameterNameCompletionDetails=function(t){return{name:t,kind:"parameter",kindModifiers:"",displayParts:[e.textPart(t)],documentation:e.emptyArray,tags:void 0,codeActions:void 0}},t.getDocCommentTemplateAtPosition=function(t,r,n){var i=e.getTokenAtPosition(r,n),a=e.findAncestor(i,e.isJSDoc);if(!a||void 0===a.comment&&!e.length(a.tags)){var o=i.getStart(r);if(a||!(o<n)){var c=function(t){return e.forEachAncestor(t,s)}(i);if(c){var u=c.commentOwner,l=c.parameters;if(!(u.getStart(r)<n)){if(!l||0===l.length){return{newText:"/** */",caretOffset:3}}var _=function(t,r){for(var n=t.text,i=e.getLineStartPositionForPosition(r,t),a=i;a<=r&&e.isWhiteSpaceSingleLine(n.charCodeAt(a));a++);return n.slice(i,a)}(r,n),d="/**"+t+_+" * ";return{newText:d+t+function(e,t,r,n){return e.map((function(e,i){var a=e.name,o=e.dotDotDotToken,s=75===a.kind?a.text:"param"+i;return r+" * @param "+(t?o?"{...any} ":"{any} ":"")+s+n})).join("")}(l,e.hasJSFileExtension(r.fileName),_,t)+_+" */"+(o===n?t+_:""),caretOffset:d.length}}}}}}}(e.JsDoc||(e.JsDoc={}))}(s||(s={})),function(e){!function(t){function r(e,t){switch(e.kind){case 254:case 257:case 252:var r=t.getSymbolAtLocation(e.name),n=t.getAliasedSymbol(r);return r.escapedName!==n.escapedName;default:return!0}}function n(t,r){var n=e.getNameOfDeclaration(t);return!!n&&(a(n,r)||153===n.kind&&i(n.expression,r))}function i(t,r){return a(t,r)||e.isPropertyAccessExpression(t)&&(r.push(t.name.text),!0)&&i(t.expression,r)}function a(t,r){return e.isPropertyNameLiteral(t)&&(r.push(e.getTextOfIdentifierOrLiteral(t)),!0)}function o(t){var r=[],a=e.getNameOfDeclaration(t);if(a&&153===a.kind&&!i(a.expression,r))return e.emptyArray;r.shift();for(var o=e.getContainerNode(t);o;){if(!n(o,r))return e.emptyArray;o=e.getContainerNode(o)}return r.reverse()}function s(t,r){return e.compareValues(t.matchKind,r.matchKind)||e.compareStringsCaseSensitiveUI(t.name,r.name)}function c(t){var r=t.declaration,n=e.getContainerNode(r),i=n&&e.getNameOfDeclaration(n);return{name:t.name,kind:e.getNodeKind(r),kindModifiers:e.getNodeModifiers(r),matchKind:e.PatternMatchKind[t.matchKind],isCaseSensitive:t.isCaseSensitive,fileName:t.fileName,textSpan:e.createTextSpanFromNode(r),containerName:i?i.text:"",containerKind:i?e.getNodeKind(n):""}}t.getNavigateToItems=function(t,n,i,a,u,l){var _=e.createPatternMatcher(a);if(!_)return e.emptyArray;for(var d=[],p=function(e){if(i.throwIfCancellationRequested(),l&&e.isDeclarationFile)return"continue";e.getNamedDeclarations().forEach((function(t,i){!function(e,t,n,i,a,s){var c=e.getMatchForLastSegmentOfPattern(t);if(!c)return;for(var u=0,l=n;u<l.length;u++){var _=l[u];if(r(_,i))if(e.patternContainsDots){var d=e.getFullMatch(o(_),t);d&&s.push({name:t,fileName:a,matchKind:d.kind,isCaseSensitive:d.isCaseSensitive,declaration:_})}else s.push({name:t,fileName:a,matchKind:c.kind,isCaseSensitive:c.isCaseSensitive,declaration:_})}}(_,i,t,n,e.fileName,d)}))},f=0,m=t;f<m.length;f++){p(m[f])}return d.sort(s),(void 0===u?d:d.slice(0,u)).map(c)}}(e.NavigateTo||(e.NavigateTo={}))}(s||(s={})),function(e){!function(t){var r,n,i,a,o,s=/\s+/g,c=150,u=[],l=[],_=[];function d(){i=void 0,n=void 0,u=[],a=void 0,_=[]}function p(e){return z(e.getText(i))}function f(e){return e.node.kind}function m(e,t){e.children?e.children.push(t):e.children=[t]}function g(t){e.Debug.assert(!u.length);var r={node:t,name:void 0,additionalNodes:void 0,parent:void 0,children:void 0,indent:0};a=r;for(var n=0,i=t.statements;n<i.length;n++){E(i[n])}return S(),e.Debug.assert(!a&&!u.length),r}function y(e,t){m(a,h(e,t))}function h(t,r){return{node:t,name:r||(e.isDeclaration(t)||e.isExpression(t)?e.getNameOfDeclaration(t):void 0),additionalNodes:void 0,parent:a,children:void 0,indent:a.indent+1}}function v(t){o||(o=e.createMap()),o.set(t,!0)}function b(e){for(var t=0;t<e;t++)S()}function x(t,r){for(var n=[];!e.isPropertyNameLiteral(r);){var i=e.getNameOrArgument(r),a=e.getElementOrPropertyAccessName(r);r=r.expression,"prototype"!==a&&n.push(i)}n.push(r);for(var o=n.length-1;o>0;o--){D(t,i=n[o])}return[n.length-1,n[0]]}function D(e,t){var r=h(e,t);m(a,r),u.push(a),l.push(o),a=r}function S(){a.children&&(C(a.children,a),F(a.children)),a=u.pop(),o=l.pop()}function T(e,t,r){D(e,r),E(t),S()}function E(t){var r;if(n.throwIfCancellationRequested(),t&&!e.isToken(t))switch(t.kind){case 161:var i=t;T(i,i.body);for(var a=0,s=i.parameters;a<s.length;a++){var c=s[a];e.isParameterPropertyDeclaration(c,i)&&y(c)}break;case 160:case 162:case 163:case 159:e.hasDynamicName(t)||T(t,t.body);break;case 158:case 157:e.hasDynamicName(t)||y(t);break;case 254:var u=t;u.name&&y(u.name);var l=u.namedBindings;if(l)if(255===l.kind)y(l);else for(var _=0,d=l.elements;_<d.length;_++){y(d[_])}break;case 280:T(t,t.name);break;case 281:var p=t.expression;e.isIdentifier(p)?y(t,p):y(t);break;case 190:case 279:case 241:var f=t,m=f.name,g=f.initializer;e.isBindingPattern(m)?E(m):g&&function(e){switch(e.kind){case 201:case 200:case 213:return!0;default:return!1}}(g)?(D(t),e.forEachChild(g,E),S()):T(t,g);break;case 243:var h=t.name;h&&e.isIdentifier(h)&&v(h.text),T(t,t.body);break;case 201:case 200:T(t,t.body);break;case 247:D(t);for(var C=0,k=t.members;C<k.length;C++){B(F=k[C])||y(F)}S();break;case 244:case 213:case 245:D(t);for(var N=0,A=t.members;N<A.length;N++){var F;E(F=A[N])}S();break;case 248:T(t,function t(r){return r.body&&e.isModuleDeclaration(r.body)?t(r.body):r}(t).body);break;case 261:case 252:case 166:case 164:case 165:case 246:y(t);break;case 195:case 208:var P=e.getAssignmentDeclarationKind(t);switch(P){case 1:case 2:return void T(t,t.right);case 6:case 3:var w=(K=t).left,I=3===P?w.expression:w,O=0,M=void 0;return e.isIdentifier(I.expression)?(v(I.expression.text),M=I.expression):(O=(r=x(K,I.expression))[0],M=r[1]),6===P?e.isObjectLiteralExpression(K.right)&&K.right.properties.length>0&&(D(K,M),e.forEachChild(K.right,E),S()):e.isFunctionExpression(K.right)||e.isArrowFunction(K.right)?T(t,K.right,M):(D(K,M),T(t,K.right,w.name),S()),void b(O);case 7:case 9:var L=t,R=(M=7===P?L.arguments[0]:L.arguments[0].expression,L.arguments[1]),j=x(t,M);O=j[0];return D(t,j[1]),D(t,e.setTextRange(e.createIdentifier(R.text),R)),E(t.arguments[2]),S(),S(),void b(O);case 5:var K,J=(w=(K=t).left).expression;if(e.isIdentifier(J)&&"prototype"!==e.getElementOrPropertyAccessName(w)&&o&&o.has(J.text))return void(e.isFunctionExpression(K.right)||e.isArrowFunction(K.right)?T(t,K.right,J):e.isBindableStaticAccessExpression(w)&&(D(K,J),T(K.left,K.right,e.getNameOrArgument(w)),S()));break;case 4:case 0:case 8:break;default:e.Debug.assertNever(P)}default:e.hasJSDocNodes(t)&&e.forEach(t.jsDoc,(function(t){e.forEach(t.tags,(function(t){e.isJSDocTypeAlias(t)&&y(t)}))})),e.forEachChild(t,E)}}function C(t,r){var n=e.createMap();e.filterMutate(t,(function(t,i){var a=t.name||e.getNameOfDeclaration(t.node),o=a&&p(a);if(!o)return!0;var s=n.get(o);if(!s)return n.set(o,t),!0;if(s instanceof Array){for(var c=0,u=s;c<u.length;c++){var l;if(N(l=u[c],t,i,r))return!1}return s.push(t),!0}return!N(l=s,t,i,r)&&(n.set(o,[l,t]),!0)}))}t.getNavigationBarItems=function(t,r){n=r,i=t;try{return e.map(function(e){var t=[];return function e(r){if(function(e){if(e.children)return!0;switch(f(e)){case 244:case 213:case 247:case 245:case 248:case 288:case 246:case 315:case 308:return!0;case 201:case 243:case 200:return function(e){if(!e.node.body)return!1;switch(f(e.parent)){case 249:case 288:case 160:case 161:return!0;default:return!1}}(e);default:return!1}}(r)&&(t.push(r),r.children))for(var n=0,i=r.children;n<i.length;n++){var a=i[n];e(a)}}(e),t}(g(t)),M)}finally{d()}},t.getNavigationTree=function(e,t){n=t,i=e;try{return O(g(e))}finally{d()}};var k=((r={})[5]=!0,r[3]=!0,r[7]=!0,r[9]=!0,r[0]=!1,r[1]=!1,r[2]=!1,r[8]=!1,r[6]=!0,r[4]=!1,r);function N(t,r,n,i){return!!function(t,r,n,i){function a(t){return e.isFunctionExpression(t)||e.isFunctionDeclaration(t)||e.isVariableDeclaration(t)}var o=e.isBinaryExpression(r.node)||e.isCallExpression(r.node)?e.getAssignmentDeclarationKind(r.node):0,s=e.isBinaryExpression(t.node)||e.isCallExpression(t.node)?e.getAssignmentDeclarationKind(t.node):0;if(k[o]&&k[s]||a(t.node)&&k[o]||a(r.node)&&k[s]||e.isClassDeclaration(t.node)&&k[o]||e.isClassDeclaration(r.node)&&k[s]||e.isClassDeclaration(t.node)&&a(r.node)||e.isClassDeclaration(r.node)&&a(t.node)){var c=t.additionalNodes&&e.lastOrUndefined(t.additionalNodes)||t.node;if(!e.isClassDeclaration(t.node)&&!e.isClassDeclaration(r.node)||a(t.node)||a(r.node)){var u=a(t.node)?t.node:a(r.node)?r.node:void 0;if(void 0!==u){var l=h(e.setTextRange(e.createConstructor(void 0,void 0,[],void 0),u));l.indent=t.indent+1,l.children=t.node===u?t.children:r.children,t.children=t.node===u?e.concatenate([l],r.children||[r]):e.concatenate(t.children||[t],[l])}else(t.children||r.children)&&(t.children=e.concatenate(t.children||[t],r.children||[r]),t.children&&(C(t.children,t),F(t.children)));c=t.node=e.setTextRange(e.createClassDeclaration(void 0,void 0,t.name||e.createIdentifier("__class__"),void 0,void 0,[]),t.node)}else t.children=e.concatenate(t.children,r.children),t.children&&C(t.children,t);var _=r.node;return i.children[n-1].node.end===c.end?e.setTextRange(c,{pos:c.pos,end:_.end}):(t.additionalNodes||(t.additionalNodes=[]),t.additionalNodes.push(e.setTextRange(e.createClassDeclaration(void 0,void 0,t.name||e.createIdentifier("__class__"),void 0,void 0,[]),r.node))),!0}return 0!==o}(t,r,n,i)||!!function(t,r,n){if(t.kind!==r.kind||t.parent!==r.parent&&(!A(t,n)||!A(r,n)))return!1;switch(t.kind){case 158:case 160:case 162:case 163:return e.hasModifier(t,32)===e.hasModifier(r,32);case 248:return function e(t,r){return t.body.kind===r.body.kind&&(248!==t.body.kind||e(t.body,r.body))}(t,r);default:return!0}}(t.node,r.node,i)&&(function(t,r){var n;t.additionalNodes=t.additionalNodes||[],t.additionalNodes.push(r.node),r.additionalNodes&&(n=t.additionalNodes).push.apply(n,r.additionalNodes);t.children=e.concatenate(t.children,r.children),t.children&&(C(t.children,t),F(t.children))}(t,r),!0)}function A(t,r){var n=e.isModuleBlock(t.parent)?t.parent.parent:t.parent;return n===r.node||e.contains(r.additionalNodes,n)}function F(e){e.sort(P)}function P(t,r){return e.compareStringsCaseSensitiveUI(w(t.node),w(r.node))||e.compareValues(f(t),f(r))}function w(t){if(248===t.kind)return R(t);var r=e.getNameOfDeclaration(t);if(r&&e.isPropertyName(r)){var n=e.getPropertyNameForPropertyNameNode(r);return n&&e.unescapeLeadingUnderscores(n)}switch(t.kind){case 200:case 201:case 213:return J(t);default:return}}function I(t,r){if(248===t.kind)return z(R(t));if(r){var n=e.isIdentifier(r)?r.text:e.isElementAccessExpression(r)?"["+p(r.argumentExpression)+"]":p(r);if(n.length>0)return z(n)}switch(t.kind){case 288:var i=t;return e.isExternalModule(i)?'"'+e.escapeString(e.getBaseFileName(e.removeFileExtension(e.normalizePath(i.fileName))))+'"':"<global>";case 201:case 243:case 200:case 244:case 213:return 512&e.getModifierFlags(t)?"default":J(t);case 161:return"constructor";case 165:return"new()";case 164:return"()";case 166:return"[]";default:return"<unknown>"}}function O(t){return{text:I(t.node,t.name),kind:e.getNodeKind(t.node),kindModifiers:K(t.node),spans:L(t),nameSpan:t.name&&j(t.name),childItems:e.map(t.children,O)}}function M(t){return{text:I(t.node,t.name),kind:e.getNodeKind(t.node),kindModifiers:K(t.node),spans:L(t),childItems:e.map(t.children,(function(t){return{text:I(t.node,t.name),kind:e.getNodeKind(t.node),kindModifiers:e.getNodeModifiers(t.node),spans:L(t),childItems:_,indent:0,bolded:!1,grayed:!1}}))||_,indent:t.indent,bolded:!1,grayed:!1}}function L(e){var t=[j(e.node)];if(e.additionalNodes)for(var r=0,n=e.additionalNodes;r<n.length;r++){var i=n[r];t.push(j(i))}return t}function R(t){if(e.isAmbientModule(t))return e.getTextOfNode(t.name);var r=[];for(r.push(e.getTextOfIdentifierOrLiteral(t.name));t.body&&248===t.body.kind;)t=t.body,r.push(e.getTextOfIdentifierOrLiteral(t.name));return r.join(".")}function B(e){return!e.name||153===e.name.kind}function j(t){return 288===t.kind?e.createTextSpanFromRange(t):e.createTextSpanFromNode(t,i)}function K(t){return t.parent&&241===t.parent.kind&&(t=t.parent),e.getNodeModifiers(t)}function J(t){var r=t.parent;if(t.name&&e.getFullWidth(t.name)>0)return z(e.declarationNameToString(t.name));if(e.isVariableDeclaration(r))return z(e.declarationNameToString(r.name));if(e.isBinaryExpression(r)&&62===r.operatorToken.kind)return p(r.left).replace(s,"");if(e.isPropertyAssignment(r))return p(r.name);if(512&e.getModifierFlags(t))return"default";if(e.isClassLike(t))return"<class>";if(e.isCallExpression(r)){var n=function t(r){if(e.isIdentifier(r))return r.text;if(e.isPropertyAccessExpression(r)){var n=t(r.expression),i=r.name.text;return void 0===n?i:n+"."+i}return}(r.expression);if(void 0!==n)return(n=z(n)).length>c?n+" callback":n+"("+z(e.mapDefined(r.arguments,(function(t){return e.isStringLiteralLike(t)?t.getText(i):void 0})).join(", "))+") callback"}return"<function>"}function z(e){return(e=e.length>c?e.substring(0,c)+"...":e).replace(/\\?(\r?\n|\r|\u2028|\u2029)/g,"")}}(e.NavigationBar||(e.NavigationBar={}))}(s||(s={})),function(e){!function(t){function r(t,r){var n=e.isStringLiteral(r)&&r.text;return e.isString(n)&&e.some(t.moduleAugmentations,(function(t){return e.isStringLiteral(t)&&t.text===n}))}function n(t){return void 0!==t&&e.isStringLiteralLike(t)?t.text:void 0}function i(t){if(0===t.length)return t;var r=function(t){for(var r,n=[],i=[],a=[],o=0,s=t;o<s.length;o++){var c=s[o];if(void 0!==c.importClause){var u=c.importClause,l=u.name,_=u.namedBindings;l&&n.push(c),_&&(e.isNamespaceImport(_)?i.push(c):a.push(c))}else r=r||c}return{importWithoutClause:r,defaultImports:n,namespaceImports:i,namedImports:a}}(t),n=r.importWithoutClause,i=r.defaultImports,a=r.namespaceImports,c=r.namedImports,l=[];if(n&&l.push(n),1===i.length&&1===a.length&&0===c.length){var _=i[0];return l.push(o(_,_.importClause.name,a[0].importClause.namedBindings)),l}for(var d,p=0,f=e.stableSort(a,(function(e,t){return u(e.importClause.namedBindings.name,t.importClause.namedBindings.name)}));p<f.length;p++){var m=f[p];l.push(o(m,void 0,m.importClause.namedBindings))}if(0===i.length&&0===c.length)return l;var g=[];if(1===i.length)d=i[0].importClause.name;else for(var y=0,h=i;y<h.length;y++){_=h[y];g.push(e.createImportSpecifier(e.createIdentifier("default"),_.importClause.name))}g.push.apply(g,e.flatMap(c,(function(e){return e.importClause.namedBindings.elements})));var v=s(g),b=i.length>0?i[0]:c[0],x=0===v.length?d?void 0:e.createNamedImports(e.emptyArray):0===c.length?e.createNamedImports(v):e.updateNamedImports(c[0].importClause.namedBindings,v);return l.push(o(b,d,x)),l}function a(t){if(0===t.length)return t;var r=function(e){for(var t,r=[],n=0,i=e;n<i.length;n++){var a=i[n];void 0===a.exportClause?t=t||a:r.push(a)}return{exportWithoutClause:t,namedExports:r}}(t),n=r.exportWithoutClause,i=r.namedExports,a=[];if(n&&a.push(n),0===i.length)return a;var o=[];o.push.apply(o,e.flatMap(i,(function(e){return e.exportClause.elements})));var c=s(o),u=i[0];return a.push(e.updateExportDeclaration(u,u.decorators,u.modifiers,e.updateNamedExports(u.exportClause,c),u.moduleSpecifier)),a}function o(t,r,n){return e.updateImportDeclaration(t,t.decorators,t.modifiers,e.updateImportClause(t.importClause,r,n),t.moduleSpecifier)}function s(t){return e.stableSort(t,(function(e,t){return u(e.propertyName||e.name,t.propertyName||t.name)||u(e.name,t.name)}))}function c(t,r){var i=n(t),a=n(r);return e.compareBooleans(void 0===i,void 0===a)||e.compareBooleans(e.isExternalModuleNameRelative(i),e.isExternalModuleNameRelative(a))||e.compareStringsCaseInsensitive(i,a)}function u(t,r){return e.compareStringsCaseInsensitive(t.text,r.text)}t.organizeImports=function(t,s,u,l,_){var d=e.textChanges.ChangeTracker.fromContext({host:u,formatContext:s,preferences:_}),p=function(n){return i(function(t,n,i){for(var a=i.getTypeChecker(),s=a.getJsxNamespace(n),c=!!(2&n.transformFlags),u=[],l=0,_=t;l<_.length;l++){var d=_[l],p=d.importClause,f=d.moduleSpecifier;if(p){var m=p.name,g=p.namedBindings;if(m&&!h(m)&&(m=void 0),g)if(e.isNamespaceImport(g))h(g.name)||(g=void 0);else{var y=g.elements.filter((function(e){return h(e.name)}));y.length<g.elements.length&&(g=y.length?e.updateNamedImports(g,y):void 0)}m||g?u.push(o(d,m,g)):r(n,f)&&(n.isDeclarationFile?u.push(e.createImportDeclaration(d.decorators,d.modifiers,void 0,f)):u.push(d))}else u.push(d)}return u;function h(t){return c&&t.text===s||e.FindAllReferences.Core.isSymbolReferencedInFile(t,a,n)}}(n,t,l))};y(t.statements.filter(e.isImportDeclaration),p),y(t.statements.filter(e.isExportDeclaration),a);for(var f=0,m=t.statements.filter(e.isAmbientModule);f<m.length;f++){var g=m[f];if(g.body)y(g.body.statements.filter(e.isImportDeclaration),p),y(g.body.statements.filter(e.isExportDeclaration),a)}return d.getChanges();function y(r,i){if(0!==e.length(r)){e.suppressLeadingTrivia(r[0]);var a=e.group(r,(function(e){return n(e.moduleSpecifier)})),o=e.stableSort(a,(function(e,t){return c(e[0].moduleSpecifier,t[0].moduleSpecifier)})),l=e.flatMap(o,(function(e){return n(e[0].moduleSpecifier)?i(e):e}));0===l.length?d.delete(t,r[0]):d.replaceNodeWithNodes(t,r[0],l,{leadingTriviaOption:e.textChanges.LeadingTriviaOption.Exclude,trailingTriviaOption:e.textChanges.TrailingTriviaOption.Include,suffix:e.getNewLineOrDefaultFromHost(u,s.options)});for(var _=1;_<r.length;_++)d.delete(t,r[_])}}},t.coalesceImports=i,t.coalesceExports=a,t.compareModuleSpecifiers=c}(e.OrganizeImports||(e.OrganizeImports={}))}(s||(s={})),function(e){!function(t){t.collectElements=function(t,r){var c=[];return function(t,r,n){var c=40,u=0,l=t.statements,_=l.length;for(;u<_;){for(;u<_&&!e.isAnyImportSyntax(l[u]);)f(l[u]),u++;if(u===_)break;for(var d=u;u<_&&e.isAnyImportSyntax(l[u]);)i(l[u],t,r,n),u++;var p=u-1;p!==d&&n.push(a(e.findChildOfKind(l[d],95,t).getStart(t),l[p].getEnd(),"imports"))}function f(u){if(0!==c){r.throwIfCancellationRequested(),e.isDeclaration(u)&&i(u,t,r,n),function(t){if(!e.isFunctionExpression(t)&&!e.isArrowFunction(t))return!1;var r=e.findAncestor(t,e.isVariableStatement);return!!r&&e.getSingleInitializerOfVariableStatementOrPropertyDeclaration(r)===t}(u)&&i(u.parent.parent.parent,t,r,n);var l=function(t,r){switch(t.kind){case 222:if(e.isFunctionLike(t.parent))return function(t,r,n){var i=e.isNodeArrayMultiLine(t.parameters,n)?e.findChildOfKind(t,20,n):e.findChildOfKind(r,18,n),a=e.findChildOfKind(r,19,n);return i&&a&&o(i,a,t,n,201!==t.kind)}(t.parent,t,r);switch(t.parent.kind){case 227:case 230:case 231:case 229:case 226:case 228:case 235:case 278:return c(t.parent);case 239:var n=t.parent;if(n.tryBlock===t)return c(t.parent);if(n.finallyBlock===t)return c(e.findChildOfKind(n,91,r));default:return s(e.createTextSpanFromNode(t,r),"code")}case 249:return c(t.parent);case 244:case 213:case 245:case 247:case 250:return c(t);case 192:return i(t);case 191:return i(t,22);case 264:return function(t){var n=e.createTextSpanFromBounds(t.openingElement.getStart(r),t.closingElement.getEnd()),i=t.openingElement.tagName.getText(r);return s(n,"code",n,!1,"<"+i+">...</"+i+">")}(t);case 268:return function(t){var n=e.createTextSpanFromBounds(t.openingFragment.getStart(r),t.closingFragment.getEnd());return s(n,"code",n,!1,"<>...</>")}(t);case 265:case 266:return function(e){if(0===e.properties.length)return;return a(e.getStart(r),e.getEnd(),"code")}(t.attributes)}function i(t,r){return void 0===r&&(r=18),c(t,!1,!e.isArrayLiteralExpression(t.parent)&&!e.isCallExpression(t.parent),r)}function c(n,i,a,s,c){void 0===i&&(i=!1),void 0===a&&(a=!0),void 0===s&&(s=18),void 0===c&&(c=18===s?19:23);var u=e.findChildOfKind(t,s,r),l=e.findChildOfKind(t,c,r);return u&&l&&o(u,l,n,r,i,a)}}(u,t);l&&n.push(l),c--,e.isIfStatement(u)&&u.elseStatement&&e.isIfStatement(u.elseStatement)?(f(u.expression),f(u.thenStatement),c++,f(u.elseStatement),c--):u.forEachChild(f),c++}}}(t,r,c),function(t,r){for(var i=[],a=t.getLineStarts(),o=0,c=a;o<c.length;o++){var u=c[o],l=t.getLineEndOfPosition(u),_=n(t.text.substring(u,l));if(_&&!e.isInComment(t,u))if(_[1]){var d=i.pop();d&&(d.textSpan.length=l-d.textSpan.start,d.hintSpan.length=l-d.textSpan.start,r.push(d))}else{var p=e.createTextSpanFromBounds(t.text.indexOf("//",u),l);i.push(s(p,"region",p,!1,_[2]||"#region"))}}}(t,c),c.sort((function(e,t){return e.textSpan.start-t.textSpan.start}))};var r=/^\s*\/\/\s*#(end)?region(?:\s+(.*))?(?:\r)?$/;function n(e){return r.exec(e)}function i(t,r,i,o){var s=e.getLeadingCommentRangesOfNode(t,r);if(s){for(var c=-1,u=-1,l=0,_=r.getFullText(),d=0,p=s;d<p.length;d++){var f=p[d],m=f.kind,g=f.pos,y=f.end;switch(i.throwIfCancellationRequested(),m){case 2:if(n(_.slice(g,y))){h(),l=0;break}0===l&&(c=g),u=y,l++;break;case 3:h(),o.push(a(g,y,"comment")),l=0;break;default:e.Debug.assertNever(m)}}h()}function h(){l>1&&o.push(a(c,u,"comment"))}}function a(t,r,n){return s(e.createTextSpanFromBounds(t,r),n)}function o(t,r,n,i,a,o){return void 0===a&&(a=!1),void 0===o&&(o=!0),s(e.createTextSpanFromBounds(o?t.getFullStart():t.getStart(i),r.getEnd()),"code",e.createTextSpanFromNode(n,i),a)}function s(e,t,r,n,i){return void 0===r&&(r=e),void 0===n&&(n=!1),void 0===i&&(i="..."),{textSpan:e,kind:t,hintSpan:r,bannerText:i,autoCollapse:n}}}(e.OutliningElementsCollector||(e.OutliningElementsCollector={}))}(s||(s={})),function(e){var t;function r(e,t){return{kind:e,isCaseSensitive:t}}function n(e,t){var r=t.get(e);return r||t.set(e,r=v(e)),r}function i(i,a,o){var s=function(e,t){for(var r=e.length-t.length,n=function(r){if(C(t,(function(t,n){return d(e.charCodeAt(n+r))===t})))return{value:r}},i=0;i<=r;i++){var a=n(i);if("object"===f(a))return a.value}return-1}(i,a.textLowerCase);if(0===s)return r(a.text.length===i.length?t.exact:t.prefix,e.startsWith(i,a.text));if(a.isLowerCase){if(-1===s)return;for(var _=0,p=n(i,o);_<p.length;_++){var m=p[_];if(c(i,m,a.text,!0))return r(t.substring,c(i,m,a.text,!1))}if(a.text.length<i.length&&l(i.charCodeAt(s)))return r(t.substring,!1)}else{if(i.indexOf(a.text)>0)return r(t.substring,!0);if(a.characterSpans.length>0){var g=n(i,o),y=!!u(i,g,a,!1)||!u(i,g,a,!0)&&void 0;if(void 0!==y)return r(t.camelCase,y)}}}function a(e,t,r){if(C(t.totalTextChunk.text,(function(e){return 32!==e&&42!==e}))){var n=i(e,t.totalTextChunk,r);if(n)return n}for(var a,s=0,c=t.subWordTextChunks;s<c.length;s++){a=o(a,i(e,c[s],r))}return a}function o(t,r){return e.min(t,r,s)}function s(t,r){return void 0===t?1:void 0===r?-1:e.compareValues(t.kind,r.kind)||e.compareBooleans(!t.isCaseSensitive,!r.isCaseSensitive)}function c(e,t,r,n,i){return void 0===i&&(i={start:0,length:r.length}),i.length<=t.length&&E(0,i.length,(function(a){return function(e,t,r){return r?d(e)===d(t):e===t}(r.charCodeAt(i.start+a),e.charCodeAt(t.start+a),n)}))}function u(t,r,n,i){for(var a=n.characterSpans,o=0,s=0;;){if(s===a.length)return!0;if(o===r.length)return!1;for(var u=r[o],_=!1;s<a.length;s++){var d=a[s];if(_&&(!l(n.text.charCodeAt(a[s-1].start))||!l(n.text.charCodeAt(a[s].start))))break;if(!c(t,u,n.text,i,d))break;_=!0,u=e.createTextSpan(u.start+d.length,u.length-d.length)}o++}}function l(t){if(t>=65&&t<=90)return!0;if(t<127||!e.isUnicodeIdentifierStart(t,99))return!1;var r=String.fromCharCode(t);return r===r.toUpperCase()}function _(t){if(t>=97&&t<=122)return!0;if(t<127||!e.isUnicodeIdentifierStart(t,99))return!1;var r=String.fromCharCode(t);return r===r.toLowerCase()}function d(e){return e>=65&&e<=90?e-65+97:e<127?e:String.fromCharCode(e).toLowerCase().charCodeAt(0)}function p(e){return e>=48&&e<=57}function m(e){return l(e)||_(e)||p(e)||95===e||36===e}function g(e){for(var t=[],r=0,n=0,i=0;i<e.length;i++){m(e.charCodeAt(i))?(0===n&&(r=i),n++):n>0&&(t.push(y(e.substr(r,n))),n=0)}return n>0&&t.push(y(e.substr(r,n))),t}function y(e){var t=e.toLowerCase();return{text:e,textLowerCase:t,isLowerCase:e===t,characterSpans:h(e)}}function h(e){return b(e,!1)}function v(e){return b(e,!0)}function b(t,r){for(var n=[],i=0,a=1;a<t.length;a++){var o=p(t.charCodeAt(a-1)),s=p(t.charCodeAt(a)),c=T(t,r,a),u=r&&S(t,a,i);(x(t.charCodeAt(a-1))||x(t.charCodeAt(a))||o!==s||c||u)&&(D(t,i,a)||n.push(e.createTextSpan(i,a-i)),i=a)}return D(t,i,t.length)||n.push(e.createTextSpan(i,t.length-i)),n}function x(e){switch(e){case 33:case 34:case 35:case 37:case 38:case 39:case 40:case 41:case 42:case 44:case 45:case 46:case 47:case 58:case 59:case 63:case 64:case 91:case 92:case 93:case 95:case 123:case 125:return!0}return!1}function D(e,t,r){return C(e,(function(e){return x(e)&&95!==e}),t,r)}function S(e,t,r){return t!==r&&t+1<e.length&&l(e.charCodeAt(t))&&_(e.charCodeAt(t+1))&&C(e,l,r,t)}function T(e,t,r){var n=l(e.charCodeAt(r-1));return l(e.charCodeAt(r))&&(!t||!n)}function E(e,t,r){for(var n=e;n<t;n++)if(!r(n))return!1;return!0}function C(e,t,r,n){return void 0===r&&(r=0),void 0===n&&(n=e.length),E(r,n,(function(r){return t(e.charCodeAt(r),r)}))}!function(e){e[e.exact=0]="exact",e[e.prefix=1]="prefix",e[e.substring=2]="substring",e[e.camelCase=3]="camelCase"}(t=e.PatternMatchKind||(e.PatternMatchKind={})),e.createPatternMatcher=function(t){var r=e.createMap(),n=t.trim().split(".").map((function(e){return{totalTextChunk:y(t=e.trim()),subWordTextChunks:g(t)};var t}));if(!n.some((function(e){return!e.subWordTextChunks.length})))return{getFullMatch:function(t,i){return function(t,r,n,i){var s;if(!a(r,e.last(n),i))return;if(n.length-1>t.length)return;for(var c=n.length-2,u=t.length-1;c>=0;c-=1,u-=1)s=o(s,a(t[u],n[c],i));return s}(t,i,n,r)},getMatchForLastSegmentOfPattern:function(t){return a(t,e.last(n),r)},patternContainsDots:n.length>1}},e.breakIntoCharacterSpans=h,e.breakIntoWordSpans=v}(s||(s={})),function(e){e.preProcessFile=function(t,r,n){void 0===r&&(r=!0),void 0===n&&(n=!1);var i,a,o,s={languageVersion:1,pragmas:void 0,checkJsDirective:void 0,referencedFiles:[],typeReferenceDirectives:[],libReferenceDirectives:[],amdDependencies:[],hasNoDefaultLib:void 0,moduleName:void 0},c=[],u=0,l=!1;function _(){return a=o,18===(o=e.scanner.scan())?u++:19===o&&u--,o}function d(){var t=e.scanner.getTokenValue(),r=e.scanner.getTokenPos();return{fileName:t,pos:r,end:r+t.length}}function p(){c.push(d()),f()}function f(){0===u&&(l=!0)}function m(){var t=e.scanner.getToken();return 129===t&&(134===(t=_())&&10===(t=_())&&(i||(i=[]),i.push({ref:d(),depth:u})),!0)}function g(){if(24===a)return!1;var t=e.scanner.getToken();if(95===t){if(20===(t=_())){if(10===(t=_()))return p(),!0}else{if(10===t)return p(),!0;if(75===t||e.isKeyword(t))if(148===(t=_())){if(10===(t=_()))return p(),!0}else if(62===t){if(h(!0))return!0}else{if(27!==t)return!0;t=_()}if(18===t){for(t=_();19!==t&&1!==t;)t=_();19===t&&148===(t=_())&&10===(t=_())&&p()}else 41===t&&122===(t=_())&&(75===(t=_())||e.isKeyword(t))&&148===(t=_())&&10===(t=_())&&p()}return!0}return!1}function y(){var t=e.scanner.getToken();if(88===t){if(f(),18===(t=_())){for(t=_();19!==t&&1!==t;)t=_();19===t&&148===(t=_())&&10===(t=_())&&p()}else if(41===t)148===(t=_())&&10===(t=_())&&p();else if(95===t&&(75===(t=_())||e.isKeyword(t))&&62===(t=_())&&h(!0))return!0;return!0}return!1}function h(t){var r=t?_():e.scanner.getToken();return 138===r&&(20===(r=_())&&10===(r=_())&&p(),!0)}function v(){var t=e.scanner.getToken();if(75===t&&"define"===e.scanner.getTokenValue()){if(20!==(t=_()))return!0;if(10===(t=_())){if(27!==(t=_()))return!0;t=_()}if(22!==t)return!0;for(t=_();23!==t&&1!==t;)10===t&&p(),t=_();return!0}return!1}if(r&&function(){for(e.scanner.setText(t),_();1!==e.scanner.getToken();)m()||g()||y()||n&&(h(!1)||v())||_();e.scanner.setText(void 0)}(),e.processCommentPragmas(s,t),e.processPragmasIntoFields(s,e.noop),l){if(i)for(var b=0,x=i;b<x.length;b++){var D=x[b];c.push(D.ref)}return{referencedFiles:s.referencedFiles,typeReferenceDirectives:s.typeReferenceDirectives,libReferenceDirectives:s.libReferenceDirectives,importedFiles:c,isLibFile:!!s.hasNoDefaultLib,ambientExternalModules:void 0}}var S=void 0;if(i)for(var T=0,E=i;T<E.length;T++){0===(D=E[T]).depth?(S||(S=[]),S.push(D.ref.fileName)):c.push(D.ref)}return{referencedFiles:s.referencedFiles,typeReferenceDirectives:s.typeReferenceDirectives,libReferenceDirectives:s.libReferenceDirectives,importedFiles:c,isLibFile:!!s.hasNoDefaultLib,ambientExternalModules:S}}}(s||(s={})),function(e){!function(t){function r(t){return{canRename:!1,localizedErrorMessage:e.getLocaleSpecificMessage(t)}}function n(t,r){var n=t.getStart(r),i=t.getWidth(r);return e.isStringLiteralLike(t)&&(n+=1,i-=2),e.createTextSpan(n,i)}t.getRenameInfo=function(t,i,a,o){var s=e.getTouchingPropertyName(i,a);return(s&&function(t){switch(t.kind){case 75:case 10:case 14:case 103:return!0;case 8:return e.isLiteralNameOfPropertyDeclarationOrIndexAccess(t);default:return!1}}(s)?function(t,i,a,o,s){var c=i.getSymbolAtLocation(t);if(!c)return;var u=c.declarations;if(!u||0===u.length)return;if(u.some(o))return r(e.Diagnostics.You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library);if(e.isIdentifier(t)&&83===t.originalKeywordKind&&1536&c.parent.flags)return;if(e.isStringLiteralLike(t)&&e.tryGetImportFromModuleSpecifier(t))return s&&s.allowRenameOfImportPath?function(t,n,i){if(!e.isExternalModuleNameRelative(t.text))return r(e.Diagnostics.You_cannot_rename_a_module_via_a_global_import);var a=e.find(i.declarations,e.isSourceFile);if(!a)return;var o=e.endsWith(t.text,"/index")||e.endsWith(t.text,"/index.js")?void 0:e.tryRemoveSuffix(e.removeFileExtension(a.fileName),"/index"),s=void 0===o?a.fileName:o,c=void 0===o?"module":"directory",u=t.text.lastIndexOf("/")+1,l=e.createTextSpan(t.getStart(n)+1+u,t.text.length-u);return{canRename:!0,fileToRename:s,kind:c,displayName:s,fullDisplayName:s,kindModifiers:"",triggerSpan:l}}(t,a,c):void 0;var l=e.SymbolDisplay.getSymbolKind(i,c,t),_=e.isImportOrExportSpecifierName(t)||e.isStringOrNumericLiteralLike(t)&&153===t.parent.kind?e.stripQuotes(e.getTextOfIdentifierOrLiteral(t)):void 0,d=_||i.symbolToString(c),p=_||i.getFullyQualifiedName(c);return function(e,t,r,i,a,o){return{canRename:!0,fileToRename:void 0,kind:r,displayName:e,fullDisplayName:t,kindModifiers:i,triggerSpan:n(a,o)}}(d,p,l,e.SymbolDisplay.getSymbolModifiers(c),t,a)}(s,t.getTypeChecker(),i,(function(e){return t.isSourceFileDefaultLibrary(e.getSourceFile())}),o):void 0)||r(e.Diagnostics.You_cannot_rename_this_element)}}(e.Rename||(e.Rename={}))}(s||(s={})),function(e){!function(t){function n(t,r,n){return e.Debug.assert(n.pos<=r),r<n.end||n.getEnd()===r&&e.getTouchingPropertyName(t,r).pos<n.end}t.getSmartSelectionRange=function(t,i){var o,s,c={textSpan:e.createTextSpanFromBounds(i.getFullStart(),i.getEnd())},l=i;e:for(;;){var _=a(l);if(!_.length)break;for(var d=0;d<_.length;d++){var p=_[d-1],f=_[d],m=_[d+1];if(f.getStart(i)>t)break e;if(n(i,t,f)){if(e.isBlock(f)||e.isTemplateSpan(f)||e.isTemplateHead(f)||e.isTemplateTail(f)||p&&e.isTemplateHead(p)||e.isVariableDeclarationList(f)&&e.isVariableStatement(l)||e.isSyntaxList(f)&&e.isVariableDeclarationList(l)||e.isVariableDeclaration(f)&&e.isSyntaxList(l)&&1===_.length){l=f;break}if(e.isTemplateSpan(l)&&m&&e.isTemplateMiddleOrTemplateTail(m))b(f.getFullStart()-"${".length,m.getStart()+"}".length);var g=e.isSyntaxList(f)&&(s=void 0,18===(s=(o=p)&&o.kind)||22===s||20===s||266===s)&&u(m)&&!e.positionsAreOnSameLine(p.getStart(),m.getStart(),i),y=e.hasJSDocNodes(f)&&f.jsDoc[0].getStart(),h=g?p.getEnd():f.getStart(),v=g?m.getStart():f.getEnd();e.isNumber(y)&&b(y,v),b(h,v),(e.isStringLiteral(f)||e.isTemplateLiteral(f))&&b(h+1,v-1),l=f;break}if(d===_.length-1)break e}}return c;function b(n,i){if(n!==i){var a=e.createTextSpanFromBounds(n,i);(!c||!e.textSpansEqual(a,c.textSpan)&&e.textSpanIntersectsWithPosition(a,t))&&(c=r({textSpan:a},c&&{parent:c}))}}};var i=e.or(e.isImportDeclaration,e.isImportEqualsDeclaration);function a(t){if(e.isSourceFile(t))return o(t.getChildAt(0).getChildren(),i);if(e.isMappedTypeNode(t)){var r=t.getChildren(),n=r[0],a=r.slice(1),u=e.Debug.assertDefined(a.pop());e.Debug.assertEqual(n.kind,18),e.Debug.assertEqual(u.kind,19);var l=o(a,(function(e){return e===t.readonlyToken||137===e.kind||e===t.questionToken||57===e.kind}));return[n,c(s(o(l,(function(e){var t=e.kind;return 22===t||154===t||23===t})),(function(e){return 58===e.kind}))),u]}if(e.isPropertySignature(t))return s(a=o(t.getChildren(),(function(r){return r===t.name||e.contains(t.modifiers,r)})),(function(e){return 58===e.kind}));if(e.isParameter(t)){var _=o(t.getChildren(),(function(e){return e===t.dotDotDotToken||e===t.name}));return s(o(_,(function(e){return e===_[0]||e===t.questionToken})),(function(e){return 62===e.kind}))}return e.isBindingElement(t)?s(t.getChildren(),(function(e){return 62===e.kind})):t.getChildren()}function o(e,t){for(var r,n=[],i=0,a=e;i<a.length;i++){var o=a[i];t(o)?(r=r||[]).push(o):(r&&(n.push(c(r)),r=void 0),n.push(o))}return r&&n.push(c(r)),n}function s(t,r,n){if(void 0===n&&(n=!0),t.length<2)return t;var i=e.findIndex(t,r);if(-1===i)return t;var a=t.slice(0,i),o=t[i],s=e.last(t),u=n&&26===s.kind,l=t.slice(i+1,u?t.length-1:void 0),_=e.compact([a.length?c(a):void 0,o,l.length?c(l):void 0]);return u?_.concat(s):_}function c(t){e.Debug.assertGreaterThanOrEqual(t.length,1);var r=e.createNode(317,t[0].pos,e.last(t).end);return r._children=t,r}function u(e){var t=e&&e.kind;return 19===t||23===t||21===t||267===t}}(e.SmartSelectionRange||(e.SmartSelectionRange={}))}(s||(s={})),function(e){!function(r){var n,i;function a(t,r,n){for(var i=t.getFullStart(),a=t.parent;a;){var o=e.findPrecedingToken(i,r,a,!0);if(o)return e.rangeContainsRange(n,o);a=a.parent}return e.Debug.fail("Could not find preceding token")}function o(t,r){var n=function(t,r){if(29===t.kind||20===t.kind)return{list:p(t.parent,t,r),argumentIndex:0};var n=e.findContainingList(t);return n&&{list:n,argumentIndex:l(n,t)}}(t,r);if(n){var i=n.list,a=n.argumentIndex,o=function(t){var r=t.getChildren(),n=e.countWhere(r,(function(e){return 27!==e.kind}));r.length>0&&27===e.last(r).kind&&n++;return n}(i);return 0!==a&&e.Debug.assertLessThan(a,o),{list:i,argumentIndex:a,argumentCount:o,argumentsSpan:function(t,r){var n=t.getFullStart(),i=e.skipTrivia(r.text,t.getEnd(),!1);return e.createTextSpan(n,i-n)}(i,r)}}}function s(t,r,n){var i=t.parent;if(e.isCallOrNewExpression(i)){var a=i,s=o(t,n);if(!s)return;var c=s.list,u=s.argumentIndex,l=s.argumentCount,d=s.argumentsSpan;return{isTypeParameterList:!!i.typeArguments&&i.typeArguments.pos===c.pos,invocation:{kind:0,node:a},argumentsSpan:d,argumentIndex:u,argumentCount:l}}if(e.isNoSubstitutionTemplateLiteral(t)&&e.isTaggedTemplateExpression(i))return e.isInsideTemplateLiteral(t,r,n)?_(i,0,n):void 0;if(e.isTemplateHead(t)&&197===i.parent.kind){var p=i,f=p.parent;return e.Debug.assert(210===p.kind),_(f,u=e.isInsideTemplateLiteral(t,r,n)?0:1,n)}if(e.isTemplateSpan(i)&&e.isTaggedTemplateExpression(i.parent.parent)){var m=i;f=i.parent.parent;if(e.isTemplateTail(t)&&!e.isInsideTemplateLiteral(t,r,n))return;return _(f,u=function(t,r,n,i){if(e.Debug.assert(n>=r.getStart(),"Assumed 'position' could not occur before node."),e.isTemplateLiteralToken(r))return e.isInsideTemplateLiteral(r,n,i)?0:t+2;return t+1}(m.parent.templateSpans.indexOf(m),t,r,n),n)}if(e.isJsxOpeningLikeElement(i)){var g=i.attributes.pos,y=e.skipTrivia(n.text,i.attributes.end,!1);return{isTypeParameterList:!1,invocation:{kind:0,node:i},argumentsSpan:e.createTextSpan(g,y-g),argumentIndex:0,argumentCount:1}}var h=e.getPossibleTypeArgumentsInfo(t,n);if(h){var v=h.called,b=h.nTypeArguments;return{isTypeParameterList:!0,invocation:a={kind:1,called:v},argumentsSpan:d=e.createTextSpanFromBounds(v.getStart(n),t.end),argumentIndex:b,argumentCount:b+1}}}function c(t){return e.isBinaryExpression(t.left)?c(t.left)+1:2}function u(t){return"__type"===t.name&&e.firstDefined(t.declarations,(function(t){return e.isFunctionTypeNode(t)?t.parent.symbol:void 0}))||t}function l(e,t){for(var r=0,n=0,i=e.getChildren();n<i.length;n++){var a=i[n];if(a===t)break;27!==a.kind&&r++}return r}function _(t,r,n){var i=e.isNoSubstitutionTemplateLiteral(t.template)?1:t.template.templateSpans.length+1;return 0!==r&&e.Debug.assertLessThan(r,i),{isTypeParameterList:!1,invocation:{kind:0,node:t},argumentsSpan:d(t,n),argumentIndex:r,argumentCount:i}}function d(t,r){var n=t.template,i=n.getStart(),a=n.getEnd();210===n.kind&&(0===e.last(n.templateSpans).literal.getFullWidth()&&(a=e.skipTrivia(r.text,a,!1)));return e.createTextSpan(i,a-i)}function p(t,r,n){var i=t.getChildren(n),a=i.indexOf(r);return e.Debug.assert(a>=0&&i.length>a+1),i[a+1]}function m(t){return 0===t.kind?e.getInvokedExpression(t.node):t.called}function g(e){return 0===e.kind?e.node:1===e.kind?e.called:e.node}!function(e){e[e.Call=0]="Call",e[e.TypeArgs=1]="TypeArgs",e[e.Contextual=2]="Contextual"}(n||(n={})),r.getSignatureHelpItems=function(t,r,n,i,l){var _=t.getTypeChecker(),d=e.findTokenOnLeftOfPosition(r,n);if(d){var p=!!i&&"characterTyped"===i.kind;if(!p||!e.isInString(r,n,d)&&!e.isInComment(r,n)){var y=!!i&&"invoked"===i.kind,b=function(t,r,n,i,a){for(var l=function(t){e.Debug.assert(e.rangeContainsRange(t.parent,t),"Not a subspan",(function(){return"Child: "+e.Debug.formatSyntaxKind(t.kind)+", parent: "+e.Debug.formatSyntaxKind(t.parent.kind)}));var a=function(t,r,n,i){return function(t,r,n,i){var a=function(t,r,n){if(20!==t.kind&&27!==t.kind)return;var i=t.parent;switch(i.kind){case 199:case 160:case 200:case 201:var a=o(t,r);if(!a)return;var s=a.argumentIndex,u=a.argumentCount,l=a.argumentsSpan,_=e.isMethodDeclaration(i)?n.getContextualTypeForObjectLiteralElement(i):n.getContextualType(i);return _&&{contextualType:_,argumentIndex:s,argumentCount:u,argumentsSpan:l};case 208:var d=function t(r){return e.isBinaryExpression(r.parent)?t(r.parent):r}(i),p=n.getContextualType(d),f=20===t.kind?0:c(i)-1,m=c(d);return p&&{contextualType:p,argumentIndex:f,argumentCount:m,argumentsSpan:e.createTextSpanFromNode(i)};default:return}}(t,n,i);if(!a)return;var s=a.contextualType,l=a.argumentIndex,_=a.argumentCount,d=a.argumentsSpan,p=s.getCallSignatures();return 1!==p.length?void 0:{isTypeParameterList:!1,invocation:{kind:2,signature:e.first(p),node:t,symbol:u(s.symbol)},argumentsSpan:d,argumentIndex:l,argumentCount:_}}(t,0,n,i)||s(t,r,n)}(t,r,n,i);if(a)return{value:a}},_=t;!e.isSourceFile(_)&&(a||!e.isBlock(_));_=_.parent){var d=l(_);if("object"===f(d))return d.value}return}(d,n,r,_,y);if(b){l.throwIfCancellationRequested();var x=function(t,r,n,i,o){var s=t.invocation,c=t.argumentCount;switch(s.kind){case 0:if(o&&!function(t,r,n){if(!e.isCallOrNewExpression(r))return!1;var i=r.getChildren(n);switch(t.kind){case 20:return e.contains(i,t);case 27:var o=e.findContainingList(t);return!!o&&e.contains(i,o);case 29:return a(t,n,r.expression);default:return!1}}(i,s.node,n))return;var u=[],l=r.getResolvedSignatureForSignatureHelp(s.node,u,c);return 0===u.length?void 0:{kind:0,candidates:u,resolvedSignature:l};case 1:var _=s.called;if(o&&!a(i,n,e.isIdentifier(_)?_.parent:_))return;if(0!==(u=e.getPossibleGenericSignatures(_,c,r)).length)return{kind:0,candidates:u,resolvedSignature:e.first(u)};var d=r.getSymbolAtLocation(_);return d&&{kind:1,symbol:d};case 2:return{kind:0,candidates:[s.signature],resolvedSignature:s.signature};default:return e.Debug.assertNever(s)}}(b,_,r,d,p);return l.throwIfCancellationRequested(),x?_.runWithCancellationToken(l,(function(e){return 0===x.kind?h(x.candidates,x.resolvedSignature,b,r,e):function(e,t,r,n){var i=t.argumentCount,a=t.argumentsSpan,o=t.invocation,s=t.argumentIndex,c=n.getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(e);return c?{items:[v(e,c,n,g(o),r)],applicableSpan:a,selectedItemIndex:0,argumentIndex:s,argumentCount:i}:void 0}(x.symbol,b,r,e)})):e.isSourceFileJS(r)?function(t,r,n){if(2===t.invocation.kind)return;var i=m(t.invocation),a=e.isIdentifier(i)?i.text:e.isPropertyAccessExpression(i)?i.name.text:void 0,o=r.getTypeChecker();return void 0===a?void 0:e.firstDefined(r.getSourceFiles(),(function(r){return e.firstDefined(r.getNamedDeclarations().get(a),(function(e){var i=e.symbol&&o.getTypeOfSymbolAtLocation(e.symbol,e),a=i&&i.getCallSignatures();if(a&&a.length)return o.runWithCancellationToken(n,(function(e){return h(a,a[0],t,r,e)}))}))}))}(b,t,l):void 0}}}},function(e){e[e.Candidate=0]="Candidate",e[e.Type=1]="Type"}(i||(i={})),r.getArgumentInfoForCompletions=function(e,t,r){var n=s(e,t,r);return!n||n.isTypeParameterList||0!==n.invocation.kind?void 0:{invocation:n.invocation.node,argumentCount:n.argumentCount,argumentIndex:n.argumentIndex}};var y=70246400;function h(r,n,i,a,o){var s=i.isTypeParameterList,c=i.argumentCount,u=i.argumentsSpan,l=i.invocation,_=i.argumentIndex,d=g(l),p=2===l.kind?l.symbol:o.getSymbolAtLocation(m(l)),f=p?e.symbolToDisplayParts(o,p,void 0,void 0):e.emptyArray,y=r.map((function(r){return function(r,n,i,a,o,s){var c=(i?x:D)(r,a,o,s),u=c.isVariadic,l=c.parameters,_=c.prefix,d=c.suffix,p=t(n,_),f=t(d,function(t,r,n){return e.mapToDisplayParts((function(e){e.writePunctuation(":"),e.writeSpace(" ");var i=n.getTypePredicateOfSignature(t);i?n.writeTypePredicate(i,r,void 0,e):n.writeType(n.getReturnTypeOfSignature(t),r,void 0,e)}))}(r,o,a)),m=r.getDocumentationComment(a),g=r.getJsDocTags();return{isVariadic:u,prefixDisplayParts:p,suffixDisplayParts:f,separatorDisplayParts:b,parameters:l,documentation:m,tags:g}}(r,f,s,o,d,a)}));0!==_&&e.Debug.assertLessThan(_,c);var h=r.indexOf(n);return e.Debug.assert(-1!==h),{items:y,applicableSpan:u,selectedItemIndex:h,argumentIndex:_,argumentCount:c}}function v(r,n,i,a,o){var s=e.symbolToDisplayParts(i,r),c=e.createPrinter({removeComments:!0}),u=n.map((function(e){return S(e,i,a,o,c)})),l=r.getDocumentationComment(i),_=r.getJsDocTags();return{isVariadic:!1,prefixDisplayParts:t(s,[e.punctuationPart(29)]),suffixDisplayParts:[e.punctuationPart(31)],separatorDisplayParts:b,parameters:u,documentation:l,tags:_}}var b=[e.punctuationPart(27),e.spacePart()];function x(r,n,i,a){var o=(r.target||r).typeParameters,s=e.createPrinter({removeComments:!0}),c=(o||e.emptyArray).map((function(e){return S(e,n,i,a,s)})),u=e.mapToDisplayParts((function(o){var c=r.thisParameter?[n.symbolToParameterDeclaration(r.thisParameter,i,y)]:[],u=e.createNodeArray(t(c,n.getExpandedParameters(r).map((function(e){return n.symbolToParameterDeclaration(e,i,y)}))));s.writeList(2576,u,a,o)}));return{isVariadic:!1,parameters:c,prefix:[e.punctuationPart(29)],suffix:t([e.punctuationPart(31)],u)}}function D(r,n,i,a){var o=n.hasEffectiveRestParameter(r),s=e.createPrinter({removeComments:!0}),c=e.mapToDisplayParts((function(t){if(r.typeParameters&&r.typeParameters.length){var o=e.createNodeArray(r.typeParameters.map((function(e){return n.typeParameterToDeclaration(e,i)})));s.writeList(53776,o,a,t)}}));return{isVariadic:o,parameters:n.getExpandedParameters(r).map((function(t){return function(t,r,n,i,a){var o=e.mapToDisplayParts((function(e){var o=r.symbolToParameterDeclaration(t,n,y);a.writeNode(4,o,i,e)})),s=r.isOptionalParameter(t.valueDeclaration);return{name:t.name,documentation:t.getDocumentationComment(r),displayParts:o,isOptional:s}}(t,n,i,a,s)})),prefix:t(c,[e.punctuationPart(20)]),suffix:[e.punctuationPart(21)]}}function S(t,r,n,i,a){var o=e.mapToDisplayParts((function(e){var o=r.typeParameterToDeclaration(t,n);a.writeNode(4,o,i,e)}));return{name:t.symbol.name,documentation:t.symbol.getDocumentationComment(r),displayParts:o,isOptional:!1}}}(e.SignatureHelp||(e.SignatureHelp={}))}(s||(s={})),function(e){var t=/^data:(?:application\/json(?:;charset=[uU][tT][fF]-8);base64,([A-Za-z0-9+\/=]+)$)?/;function r(t,r,n){var i=e.tryParseRawSourceMap(r);if(i&&i.sources&&i.file&&i.mappings)return e.createDocumentPositionMapper(t,i,n)}e.getSourceMapper=function(t){var r=e.createGetCanonicalFileName(t.useCaseSensitiveFileNames()),n=t.getCurrentDirectory(),i=e.createMap(),a=e.createMap();return{tryGetSourcePosition:function t(r){if(!e.isDeclarationFileName(r.fileName))return;var n=c(r.fileName);if(!n)return;var i=s(r.fileName).getSourcePosition(r);return i&&i!==r?t(i)||i:void 0},tryGetGeneratedPosition:function(i){if(e.isDeclarationFileName(i.fileName))return;var a=c(i.fileName);if(!a)return;var o=t.getProgram();if(o.isSourceOfProjectReferenceRedirect(a.fileName))return;var u=o.getCompilerOptions(),l=u.outFile||u.out,_=l?e.removeFileExtension(l)+".d.ts":e.getDeclarationEmitOutputFilePathWorker(i.fileName,o.getCompilerOptions(),n,o.getCommonSourceDirectory(),r);if(void 0===_)return;var d=s(_,i.fileName).getGeneratedPosition(i);return d===i?void 0:d},toLineColumnOffset:function(e,t){return l(e).getLineAndCharacterOfPosition(t)},clearCache:function(){i.clear(),a.clear()}};function o(t){return e.toPath(t,n,r)}function s(n,i){var s,c=o(n),u=a.get(c);if(u)return u;if(t.getDocumentPositionMapper)s=t.getDocumentPositionMapper(n,i);else if(t.readFile){var _=l(n);s=_&&e.getDocumentPositionMapper({getSourceFileLike:l,getCanonicalFileName:r,log:function(e){return t.log(e)}},n,e.getLineInfo(_.text,e.getLineStarts(_)),(function(e){return!t.fileExists||t.fileExists(e)?t.readFile(e):void 0}))}return a.set(c,s||e.identitySourceMapConsumer),s||e.identitySourceMapConsumer}function c(e){var r=t.getProgram();if(r){var n=o(e),i=r.getSourceFileByPath(n);return i&&i.resolvedPath===n?i:void 0}}function u(r){var n=o(r),a=i.get(n);if(void 0!==a)return a||void 0;if(t.readFile&&(!t.fileExists||t.fileExists(n))){var s=t.readFile(n),c=!!s&&function(t,r){return{text:t,lineMap:r,getLineAndCharacterOfPosition:function(t){return e.computeLineAndCharacterOfPosition(e.getLineStarts(this),t)}}}(s);return i.set(n,c),c||void 0}i.set(n,!1)}function l(e){return t.getSourceFileLike?t.getSourceFileLike(e):c(e)||u(e)}},e.getDocumentPositionMapper=function(n,i,a,o){var s=e.tryGetSourceMappingURL(a);if(s){var c=t.exec(s);if(c){if(c[1]){var u=c[1];return r(n,e.base64decode(e.sys,u),i)}s=void 0}}var l=[];s&&l.push(s),l.push(i+".map");for(var _=s&&e.getNormalizedAbsolutePath(s,e.getDirectoryPath(i)),d=0,p=l;d<p.length;d++){var f=p[d],m=e.getNormalizedAbsolutePath(f,e.getDirectoryPath(i)),g=o(m,_);if(e.isString(g))return r(n,g,m);if(void 0!==g)return g||void 0}}}(s||(s={})),function(e){var t=e.createMap();function r(t){switch(t.kind){case 253:var r=t.importClause,n=t.moduleSpecifier;return r&&!r.name&&r.namedBindings&&255===r.namedBindings.kind&&e.isStringLiteral(n)?r.namedBindings.name:void 0;case 252:return t.name;default:return}}function n(t){return e.isReturnStatement(t)&&!!t.expression&&i(t.expression)}function i(t){if(!a(t)||!t.arguments.every(o))return!1;for(var r=t.expression;a(r)||e.isPropertyAccessExpression(r);){if(e.isCallExpression(r)&&!r.arguments.every(o))return!1;r=r.expression}return!0}function a(t){return e.isCallExpression(t)&&(e.hasPropertyAccessExpressionWithName(t,"then")||e.hasPropertyAccessExpressionWithName(t,"catch"))}function o(e){switch(e.kind){case 243:case 200:case 201:t.set(s(e),!0);case 99:case 75:return!0;default:return!1}}function s(e){return e.pos.toString()+":"+e.end.toString()}e.computeSuggestionDiagnostics=function(i,a,o){a.getSemanticDiagnostics(i,o);var c,u=[],l=a.getTypeChecker();i.commonJsModuleIndicator&&(e.programContainsEs6Modules(a)||e.compilerOptionsIndicateEs6Modules(a.getCompilerOptions()))&&function(t){return t.statements.some((function(t){switch(t.kind){case 224:return t.declarationList.declarations.some((function(t){return!!t.initializer&&e.isRequireCall(function t(r){return e.isPropertyAccessExpression(r)?t(r.expression):r}(t.initializer),!0)}));case 225:var r=t.expression;if(!e.isBinaryExpression(r))return e.isRequireCall(r,!0);var n=e.getAssignmentDeclarationKind(r);return 1===n||2===n;default:return!1}}))}(i)&&u.push(e.createDiagnosticForNode((c=i.commonJsModuleIndicator,e.isBinaryExpression(c)?c.left:c),e.Diagnostics.File_is_a_CommonJS_module_it_may_be_converted_to_an_ES6_module));var _=e.isSourceFileJS(i);if(t.clear(),function r(a){if(_)switch(a.kind){case 200:var o=e.getDeclarationOfExpando(a);if(o){var c=o.symbol;if(c&&(c.exports&&c.exports.size||c.members&&c.members.size)){u.push(e.createDiagnosticForNode(e.isVariableDeclaration(a.parent)?a.parent.name:a,e.Diagnostics.This_constructor_function_may_be_converted_to_a_class_declaration));break}}case 243:var d=a.symbol;d.members&&d.members.size>0&&u.push(e.createDiagnosticForNode(e.isVariableDeclaration(a.parent)?a.parent.name:a,e.Diagnostics.This_constructor_function_may_be_converted_to_a_class_declaration))}else{if(e.isVariableStatement(a)&&a.parent===i&&2&a.declarationList.flags&&1===a.declarationList.declarations.length){var p=a.declarationList.declarations[0].initializer;p&&e.isRequireCall(p,!0)&&u.push(e.createDiagnosticForNode(p,e.Diagnostics.require_call_may_be_converted_to_an_import))}e.codefix.parameterShouldGetTypeFromJSDoc(a)&&u.push(e.createDiagnosticForNode(a.name||a,e.Diagnostics.JSDoc_types_may_be_moved_to_TypeScript_types))}e.isFunctionLikeDeclaration(a)&&function(r,i,a){(function(t,r){return!e.isAsyncFunction(t)&&t.body&&e.isBlock(t.body)&&(i=t.body,!!e.forEachReturnStatement(i,n))&&function(e,t){var r=t.getTypeAtLocation(e),n=t.getSignaturesOfType(r,0),i=n.length?t.getReturnTypeOfSignature(n[0]):void 0;return!!i&&!!t.getPromisedTypeOfPromise(i)}(t,r);var i})(r,i)&&!t.has(s(r))&&a.push(e.createDiagnosticForNode(!r.name&&e.isVariableDeclaration(r.parent)&&e.isIdentifier(r.parent.name)?r.parent.name:r,e.Diagnostics.This_may_be_converted_to_an_async_function))}(a,l,u);a.forEachChild(r)}(i),e.getAllowSyntheticDefaultImports(a.getCompilerOptions()))for(var d=0,p=i.imports;d<p.length;d++){var f=p[d],m=r(e.importFromModuleSpecifier(f));if(m){var g=e.getResolvedModule(i,f.text),y=g&&a.getSourceFile(g.resolvedFileName);y&&y.externalModuleIndicator&&e.isExportAssignment(y.externalModuleIndicator)&&y.externalModuleIndicator.isExportEquals&&u.push(e.createDiagnosticForNode(m,e.Diagnostics.Import_may_be_converted_to_a_default_import))}}return e.addRange(u,i.bindSuggestionDiagnostics),e.addRange(u,a.getSuggestionDiagnostics(i,o)),u.sort((function(e,t){return e.start-t.start}))},e.isReturnStatementWithFixablePromiseHandler=n,e.isFixablePromiseHandler=i}(s||(s={})),function(e){!function(t){function r(t,r,i){var a=n(t,r,i);if(""!==a)return a;var o=e.getCombinedLocalAndExportSymbolFlags(r);return 32&o?e.getDeclarationOfKind(r,213)?"local class":"class":384&o?"enum":524288&o?"type":64&o?"interface":262144&o?"type parameter":262144&o?"type parameter":8&o?"enum member":2097152&o?"alias":1536&o?"module":a}function n(t,r,n){var a=t.getRootSymbols(r);if(1===a.length&&8192&e.first(a).flags&&0!==t.getTypeOfSymbolAtLocation(r,n).getNonNullableType().getCallSignatures().length)return"method";if(t.isUndefinedSymbol(r))return"var";if(t.isArgumentsSymbol(r))return"local var";if(103===n.kind&&e.isExpression(n))return"parameter";var o=e.getCombinedLocalAndExportSymbolFlags(r);if(3&o)return e.isFirstDeclarationOfSymbolParameter(r)?"parameter":r.valueDeclaration&&e.isVarConst(r.valueDeclaration)?"const":e.forEach(r.declarations,e.isLet)?"let":i(r)?"local var":"var";if(16&o)return i(r)?"local function":"function";if(32768&o)return"getter";if(65536&o)return"setter";if(8192&o)return"method";if(16384&o)return"constructor";if(4&o){if(33554432&o&&6&r.checkFlags){var s=e.forEach(t.getRootSymbols(r),(function(t){var r=t.getFlags();if(98311&r)return"property";e.Debug.assert(!!(8208&r))}));return s||(t.getTypeOfSymbolAtLocation(r,n).getCallSignatures().length?"method":"property")}switch(n.parent&&n.parent.kind){case 266:case 264:case 265:return 75===n.kind?"property":"JSX attribute";case 271:return"JSX attribute";default:return"property"}}return""}function i(t){return!t.parent&&e.forEach(t.declarations,(function(t){if(200===t.kind)return!0;if(241!==t.kind&&243!==t.kind)return!1;for(var r=t.parent;!e.isFunctionBlock(r);r=r.parent)if(288===r.kind||249===r.kind)return!1;return!0}))}t.getSymbolKind=r,t.getSymbolModifiers=function(t){var r=t&&t.declarations&&t.declarations.length>0?e.getNodeModifiers(t.declarations[0]):"",n=t&&16777216&t.flags?"optional":"";return r&&n?r+","+n:r||n},t.getSymbolDisplayPartsDocumentationAndSymbolKind=function t(i,a,o,s,c,u,l){void 0===u&&(u=e.getMeaningFromLocation(c));var _,d,p,f,m,g,y=[],h=e.getCombinedLocalAndExportSymbolFlags(a),v=1&u?n(i,a,c):"",b=!1,x=103===c.kind&&e.isInExpressionContext(c);if(103===c.kind&&!x)return{displayParts:[e.keywordPart(103)],documentation:[],symbolKind:"primitive type",tags:void 0};if(""!==v||32&h||2097152&h){"getter"!==v&&"setter"!==v||(v="property");var D=void 0;if(p=x?i.getTypeAtLocation(c):i.getTypeOfSymbolAtLocation(a.exportSymbol||a,c),c.parent&&193===c.parent.kind){var S=c.parent.name;(S===c||S&&0===S.getFullWidth())&&(c=c.parent)}var T=void 0;if(e.isCallOrNewExpression(c)?T=c:e.isCallExpressionTarget(c)||e.isNewExpressionTarget(c)?T=c.parent:c.parent&&e.isJsxOpeningLikeElement(c.parent)&&e.isFunctionLike(a.valueDeclaration)&&(T=c.parent),T){D=i.getResolvedSignature(T);var E=196===T.kind||e.isCallExpression(T)&&101===T.expression.kind,C=E?p.getConstructSignatures():p.getCallSignatures();if(e.contains(C,D.target)||e.contains(C,D)||(D=C.length?C[0]:void 0),D){switch(E&&32&h?(v="constructor",G(p.symbol,v)):2097152&h?(H(v="alias"),y.push(e.spacePart()),E&&(y.push(e.keywordPart(98)),y.push(e.spacePart())),W(a)):G(a,v),v){case"JSX attribute":case"property":case"var":case"const":case"let":case"parameter":case"local var":y.push(e.punctuationPart(58)),y.push(e.spacePart()),16&e.getObjectFlags(p)||!p.symbol||(e.addRange(y,e.symbolToDisplayParts(i,p.symbol,s,void 0,5)),y.push(e.lineBreakPart())),E&&(y.push(e.keywordPart(98)),y.push(e.spacePart())),Y(D,C,262144);break;default:Y(D,C)}b=!0}}else if(e.isNameOfFunctionDeclaration(c)&&!(98304&h)||128===c.kind&&161===c.parent.kind){var k=c.parent;if(a.declarations&&e.find(a.declarations,(function(e){return e===(128===c.kind?k.parent:k)}))){C=161===k.kind?p.getNonNullableType().getConstructSignatures():p.getNonNullableType().getCallSignatures();D=i.isImplementationOfOverload(k)?C[0]:i.getSignatureFromDeclaration(k),161===k.kind?(v="constructor",G(p.symbol,v)):G(164!==k.kind||2048&p.symbol.flags||4096&p.symbol.flags?a:p.symbol,v),Y(D,C),b=!0}}}if(32&h&&!b&&!x&&(V(),e.getDeclarationOfKind(a,213)?H("local class"):y.push(e.keywordPart(79)),y.push(e.spacePart()),W(a),X(a,o)),64&h&&2&u&&(U(),y.push(e.keywordPart(113)),y.push(e.spacePart()),W(a),X(a,o)),524288&h&&2&u&&(U(),y.push(e.keywordPart(144)),y.push(e.spacePart()),W(a),X(a,o),y.push(e.spacePart()),y.push(e.operatorPart(62)),y.push(e.spacePart()),e.addRange(y,e.typeToDisplayParts(i,i.getDeclaredTypeOfSymbol(a),s,8388608))),384&h&&(U(),e.some(a.declarations,(function(t){return e.isEnumDeclaration(t)&&e.isEnumConst(t)}))&&(y.push(e.keywordPart(80)),y.push(e.spacePart())),y.push(e.keywordPart(87)),y.push(e.spacePart()),W(a)),1536&h&&!x){U();var N=(K=e.getDeclarationOfKind(a,248))&&K.name&&75===K.name.kind;y.push(e.keywordPart(N?135:134)),y.push(e.spacePart()),W(a)}if(262144&h&&2&u)if(U(),y.push(e.punctuationPart(20)),y.push(e.textPart("type parameter")),y.push(e.punctuationPart(21)),y.push(e.spacePart()),W(a),a.parent)q(),W(a.parent,s),X(a.parent,s);else{var A=e.getDeclarationOfKind(a,154);if(void 0===A)return e.Debug.fail();if(K=A.parent)if(e.isFunctionLikeKind(K.kind)){q();D=i.getSignatureFromDeclaration(K);165===K.kind?(y.push(e.keywordPart(98)),y.push(e.spacePart())):164!==K.kind&&K.name&&W(K.symbol),e.addRange(y,e.signatureToDisplayParts(i,D,o,32))}else 246===K.kind&&(q(),y.push(e.keywordPart(144)),y.push(e.spacePart()),W(K.symbol),X(K.symbol,o))}if(8&h&&(v="enum member",G(a,"enum member"),282===(K=a.declarations[0]).kind)){var F=i.getConstantValue(K);void 0!==F&&(y.push(e.spacePart()),y.push(e.operatorPart(62)),y.push(e.spacePart()),y.push(e.displayPart(e.getTextOfConstantValue(F),"number"==typeof F?e.SymbolDisplayPartKind.numericLiteral:e.SymbolDisplayPartKind.stringLiteral)))}if(2097152&h){if(U(),!b){var P=i.getAliasedSymbol(a);if(P!==a&&P.declarations&&P.declarations.length>0){var w=P.declarations[0],I=e.getNameOfDeclaration(w);if(I){var O=e.isModuleWithStringLiteralName(w)&&e.hasModifier(w,2),M="default"!==a.name&&!O,L=t(i,P,e.getSourceFileOfNode(w),w,I,u,M?a:P);y.push.apply(y,L.displayParts),y.push(e.lineBreakPart()),m=L.documentation,g=L.tags}}}switch(a.declarations[0].kind){case 251:y.push(e.keywordPart(88)),y.push(e.spacePart()),y.push(e.keywordPart(135));break;case 258:y.push(e.keywordPart(88)),y.push(e.spacePart()),y.push(e.keywordPart(a.declarations[0].isExportEquals?62:83));break;case 261:y.push(e.keywordPart(88));break;default:y.push(e.keywordPart(95))}y.push(e.spacePart()),W(a),e.forEach(a.declarations,(function(t){if(252===t.kind){var r=t;if(e.isExternalModuleImportEqualsDeclaration(r))y.push(e.spacePart()),y.push(e.operatorPart(62)),y.push(e.spacePart()),y.push(e.keywordPart(138)),y.push(e.punctuationPart(20)),y.push(e.displayPart(e.getTextOfNode(e.getExternalModuleImportEqualsDeclarationExpression(r)),e.SymbolDisplayPartKind.stringLiteral)),y.push(e.punctuationPart(21));else{var n=i.getSymbolAtLocation(r.moduleReference);n&&(y.push(e.spacePart()),y.push(e.operatorPart(62)),y.push(e.spacePart()),W(n,s))}return!0}}))}if(!b)if(""!==v){if(p)if(x?(U(),y.push(e.keywordPart(103))):G(a,v),"property"===v||"JSX attribute"===v||3&h||"local var"===v||x)if(y.push(e.punctuationPart(58)),y.push(e.spacePart()),p.symbol&&262144&p.symbol.flags){var R=e.mapToDisplayParts((function(t){var r=i.typeParameterToDeclaration(p,s);z().writeNode(4,r,e.getSourceFileOfNode(e.getParseTreeNode(s)),t)}));e.addRange(y,R)}else e.addRange(y,e.typeToDisplayParts(i,p,s));else if(16&h||8192&h||16384&h||131072&h||98304&h||"method"===v){(C=p.getNonNullableType().getCallSignatures()).length&&Y(C[0],C)}}else v=r(i,a,c);if(!_&&(_=a.getDocumentationComment(i),d=a.getJsDocTags(),0===_.length&&4&h&&a.parent&&e.forEach(a.parent.declarations,(function(e){return 288===e.kind}))))for(var B=0,j=a.declarations;B<j.length;B++){var K;if((K=j[B]).parent&&208===K.parent.kind){var J=i.getSymbolAtLocation(K.parent.right);if(J&&(_=J.getDocumentationComment(i),d=J.getJsDocTags(),_.length>0))break}}return 0===_.length&&m&&(_=m),0===d.length&&g&&(d=g),{displayParts:y,documentation:_,symbolKind:v,tags:0===d.length?void 0:d};function z(){return f||(f=e.createPrinter({removeComments:!0})),f}function U(){y.length&&y.push(e.lineBreakPart()),V()}function V(){l&&(H("alias"),y.push(e.spacePart()))}function q(){y.push(e.spacePart()),y.push(e.keywordPart(96)),y.push(e.spacePart())}function W(t,r){l&&t===a&&(t=l);var n=e.symbolToDisplayParts(i,t,r||o,void 0,7);e.addRange(y,n),16777216&a.flags&&y.push(e.punctuationPart(57))}function G(t,r){U(),r&&(H(r),t&&!e.some(t.declarations,(function(t){return e.isArrowFunction(t)||(e.isFunctionExpression(t)||e.isClassExpression(t))&&!t.name}))&&(y.push(e.spacePart()),W(t)))}function H(t){switch(t){case"var":case"function":case"let":case"const":case"constructor":return void y.push(e.textOrKeywordPart(t));default:return y.push(e.punctuationPart(20)),y.push(e.textOrKeywordPart(t)),void y.push(e.punctuationPart(21))}}function Y(t,r,n){void 0===n&&(n=0),e.addRange(y,e.signatureToDisplayParts(i,t,s,32|n)),r.length>1&&(y.push(e.spacePart()),y.push(e.punctuationPart(20)),y.push(e.operatorPart(39)),y.push(e.displayPart((r.length-1).toString(),e.SymbolDisplayPartKind.numericLiteral)),y.push(e.spacePart()),y.push(e.textPart(2===r.length?"overload":"overloads")),y.push(e.punctuationPart(21)));var a=t.getDocumentationComment(i);_=0===a.length?void 0:a,d=t.getJsDocTags()}function X(t,r){var n=e.mapToDisplayParts((function(n){var a=i.symbolToTypeParameterDeclarations(t,r);z().writeList(53776,a,e.getSourceFileOfNode(e.getParseTreeNode(r)),n)}));e.addRange(y,n)}}}(e.SymbolDisplay||(e.SymbolDisplay={}))}(s||(s={})),function(e){function t(t,r){var i=[],a=r.compilerOptions?n(r.compilerOptions,i):{},o=e.getDefaultCompilerOptions();for(var s in o)e.hasProperty(o,s)&&void 0===a[s]&&(a[s]=o[s]);for(var c=0,u=e.transpileOptionValueCompilerOptions;c<u.length;c++){var l=u[c];a[l.name]=l.transpileOptionValue}a.suppressOutputPathCheck=!0,a.allowNonTsExtensions=!0;var _=r.fileName||(r.compilerOptions&&r.compilerOptions.jsx?"module.tsx":"module.ts"),d=e.createSourceFile(_,t,a.target);r.moduleName&&(d.moduleName=r.moduleName),r.renamedDependencies&&(d.renamedDependencies=e.createMapFromTemplate(r.renamedDependencies));var p,f,m=e.getNewLineCharacter(a),g={getSourceFile:function(t){return t===e.normalizePath(_)?d:void 0},writeFile:function(t,r){e.fileExtensionIs(t,".map")?(e.Debug.assertEqual(f,void 0,"Unexpected multiple source map outputs, file:",t),f=r):(e.Debug.assertEqual(p,void 0,"Unexpected multiple outputs, file:",t),p=r)},getDefaultLibFileName:function(){return"lib.d.ts"},useCaseSensitiveFileNames:function(){return!1},getCanonicalFileName:function(e){return e},getCurrentDirectory:function(){return""},getNewLine:function(){return m},fileExists:function(e){return e===_},readFile:function(){return""},directoryExists:function(){return!0},getDirectories:function(){return[]}},y=e.createProgram([_],a,g);return r.reportDiagnostics&&(e.addRange(i,y.getSyntacticDiagnostics(d)),e.addRange(i,y.getOptionsDiagnostics())),y.emit(void 0,void 0,void 0,void 0,r.transformers),void 0===p?e.Debug.fail("Output generation failed"):{outputText:p,diagnostics:i,sourceMapText:f}}var r;function n(t,n){r=r||e.filter(e.optionDeclarations,(function(t){return"object"===f(t.type)&&!e.forEachEntry(t.type,(function(e){return"number"!=typeof e}))})),t=e.cloneCompilerOptions(t);for(var i=function(r){if(!e.hasProperty(t,r.name))return"continue";var i=t[r.name];e.isString(i)?t[r.name]=e.parseCustomTypeOption(r,i,n):e.forEachEntry(r.type,(function(e){return e===i}))||n.push(e.createCompilerDiagnosticForInvalidCustomType(r))},a=0,o=r;a<o.length;a++){i(o[a])}return t}e.transpileModule=t,e.transpile=function(r,n,i,a,o){var s=t(r,{compilerOptions:n,fileName:i,reportDiagnostics:!!a,moduleName:o});return e.addRange(a,s.diagnostics),s.outputText},e.fixupCompilerOptions=n}(s||(s={})),function(e){!function(t){!function(e){e[e.FormatDocument=0]="FormatDocument",e[e.FormatSelection=1]="FormatSelection",e[e.FormatOnEnter=2]="FormatOnEnter",e[e.FormatOnSemicolon=3]="FormatOnSemicolon",e[e.FormatOnOpeningCurlyBrace=4]="FormatOnOpeningCurlyBrace",e[e.FormatOnClosingCurlyBrace=5]="FormatOnClosingCurlyBrace"}(t.FormattingRequestKind||(t.FormattingRequestKind={}));var r=function(){function t(e,t,r){this.sourceFile=e,this.formattingRequestKind=t,this.options=r}return t.prototype.updateContext=function(t,r,n,i,a){this.currentTokenSpan=e.Debug.assertDefined(t),this.currentTokenParent=e.Debug.assertDefined(r),this.nextTokenSpan=e.Debug.assertDefined(n),this.nextTokenParent=e.Debug.assertDefined(i),this.contextNode=e.Debug.assertDefined(a),this.contextNodeAllOnSameLine=void 0,this.nextNodeAllOnSameLine=void 0,this.tokensAreOnSameLine=void 0,this.contextNodeBlockIsOnOneLine=void 0,this.nextNodeBlockIsOnOneLine=void 0},t.prototype.ContextNodeAllOnSameLine=function(){return void 0===this.contextNodeAllOnSameLine&&(this.contextNodeAllOnSameLine=this.NodeIsOnOneLine(this.contextNode)),this.contextNodeAllOnSameLine},t.prototype.NextNodeAllOnSameLine=function(){return void 0===this.nextNodeAllOnSameLine&&(this.nextNodeAllOnSameLine=this.NodeIsOnOneLine(this.nextTokenParent)),this.nextNodeAllOnSameLine},t.prototype.TokensAreOnSameLine=function(){if(void 0===this.tokensAreOnSameLine){var e=this.sourceFile.getLineAndCharacterOfPosition(this.currentTokenSpan.pos).line,t=this.sourceFile.getLineAndCharacterOfPosition(this.nextTokenSpan.pos).line;this.tokensAreOnSameLine=e===t}return this.tokensAreOnSameLine},t.prototype.ContextNodeBlockIsOnOneLine=function(){return void 0===this.contextNodeBlockIsOnOneLine&&(this.contextNodeBlockIsOnOneLine=this.BlockIsOnOneLine(this.contextNode)),this.contextNodeBlockIsOnOneLine},t.prototype.NextNodeBlockIsOnOneLine=function(){return void 0===this.nextNodeBlockIsOnOneLine&&(this.nextNodeBlockIsOnOneLine=this.BlockIsOnOneLine(this.nextTokenParent)),this.nextNodeBlockIsOnOneLine},t.prototype.NodeIsOnOneLine=function(e){return this.sourceFile.getLineAndCharacterOfPosition(e.getStart(this.sourceFile)).line===this.sourceFile.getLineAndCharacterOfPosition(e.getEnd()).line},t.prototype.BlockIsOnOneLine=function(t){var r=e.findChildOfKind(t,18,this.sourceFile),n=e.findChildOfKind(t,19,this.sourceFile);return!(!r||!n)&&this.sourceFile.getLineAndCharacterOfPosition(r.getEnd()).line===this.sourceFile.getLineAndCharacterOfPosition(n.getStart(this.sourceFile)).line},t}();t.FormattingContext=r}(e.formatting||(e.formatting={}))}(s||(s={})),function(e){!function(t){var r,n=e.createScanner(99,!1,0),i=e.createScanner(99,!1,1);!function(e){e[e.Scan=0]="Scan",e[e.RescanGreaterThanToken=1]="RescanGreaterThanToken",e[e.RescanSlashToken=2]="RescanSlashToken",e[e.RescanTemplateToken=3]="RescanTemplateToken",e[e.RescanJsxIdentifier=4]="RescanJsxIdentifier",e[e.RescanJsxText=5]="RescanJsxText"}(r||(r={})),t.getFormattingScanner=function(r,a,o,s,c){var u=1===a?i:n;u.setText(r),u.setTextPos(o);var l,_,d,p,f,m=!0,g=c({advance:function(){f=void 0,u.getStartPos()!==o?m=!!_&&4===e.last(_).kind:u.scan();l=void 0,_=void 0;var t=u.getStartPos();for(;t<s;){var r=u.getToken();if(!e.isTrivia(r))break;u.scan();var n={pos:t,end:u.getStartPos(),kind:r};t=u.getStartPos(),l=e.append(l,n)}d=u.getStartPos()},readTokenInfo:function(r){e.Debug.assert(y());var n=function(e){switch(e.kind){case 33:case 70:case 71:case 49:case 48:return!0}return!1}(r)?1:(i=r,13===i.kind?2:function(e){return 16===e.kind||17===e.kind}(r)?3:function(t){if(t.parent)switch(t.parent.kind){case 271:case 266:case 267:case 265:return e.isKeyword(t.kind)||75===t.kind}return!1}(r)?4:function(e){return 11===e.kind}(r)?5:0);var i;if(f&&n===p)return v(f,r);u.getStartPos()!==d&&(e.Debug.assert(void 0!==f),u.setTextPos(d),u.scan());var a=function(t,r){var n=u.getToken();switch(p=0,r){case 1:if(31===n){p=1;var i=u.reScanGreaterToken();return e.Debug.assert(t.kind===i),i}break;case 2:if(43===(a=n)||67===a){p=2;i=u.reScanSlashToken();return e.Debug.assert(t.kind===i),i}break;case 3:if(19===n)return p=3,u.reScanTemplateToken();break;case 4:return p=4,u.scanJsxIdentifier();case 5:return p=5,u.reScanJsxToken();case 0:break;default:e.Debug.assertNever(r)}var a;return n}(r,n),o=t.createTextRangeWithKind(u.getStartPos(),u.getTextPos(),a);_&&(_=void 0);for(;u.getStartPos()<s&&(a=u.scan(),e.isTrivia(a));){var c=t.createTextRangeWithKind(u.getStartPos(),u.getTextPos(),a);if(_||(_=[]),_.push(c),4===a){u.scan();break}}return v(f={leadingTrivia:l,trailingTrivia:_,token:o},r)},readEOFTokenRange:function(){return e.Debug.assert(h()),t.createTextRangeWithKind(u.getStartPos(),u.getTextPos(),1)},isOnToken:y,isOnEOF:h,getCurrentLeadingTrivia:function(){return l},lastTrailingTriviaWasNewLine:function(){return m},skipToEndOf:function(e){u.setTextPos(e.end),d=u.getStartPos(),p=void 0,f=void 0,m=!1,l=void 0,_=void 0}});return f=void 0,u.setText(void 0),g;function y(){var t=f?f.token.kind:u.getToken();return(f?f.token.pos:u.getStartPos())<s&&1!==t&&!e.isTrivia(t)}function h(){return 1===(f?f.token.kind:u.getToken())}function v(t,r){return e.isToken(r)&&t.token.kind!==r.kind&&(t.token.kind=r.kind),t}}}(e.formatting||(e.formatting={}))}(s||(s={})),function(e){!function(t){t.anyContext=e.emptyArray,function(e){e[e.StopProcessingSpaceActions=1]="StopProcessingSpaceActions",e[e.StopProcessingTokenActions=2]="StopProcessingTokenActions",e[e.InsertSpace=4]="InsertSpace",e[e.InsertNewLine=8]="InsertNewLine",e[e.DeleteSpace=16]="DeleteSpace",e[e.DeleteToken=32]="DeleteToken",e[e.InsertTrailingSemicolon=64]="InsertTrailingSemicolon",e[e.StopAction=3]="StopAction",e[e.ModifySpaceAction=28]="ModifySpaceAction",e[e.ModifyTokenAction=96]="ModifyTokenAction"}(t.RuleAction||(t.RuleAction={})),function(e){e[e.None=0]="None",e[e.CanDeleteNewLines=1]="CanDeleteNewLines"}(t.RuleFlags||(t.RuleFlags={}))}(e.formatting||(e.formatting={}))}(s||(s={})),function(e){!function(r){function n(e,t,r,n,i,o){return void 0===o&&(o=0),{leftTokenRange:a(t),rightTokenRange:a(r),rule:{debugName:e,context:n,action:i,flags:o}}}function i(e){return{tokens:e,isSpecific:!0}}function a(t){return"number"==typeof t?i([t]):e.isArray(t)?i(t):t}function o(t,r,n){void 0===n&&(n=[]);for(var a=[],o=t;o<=r;o++)e.contains(n,o)||a.push(o);return i(a)}function s(e,t){return function(r){return r.options&&r.options[e]===t}}function c(e){return function(t){return t.options&&t.options.hasOwnProperty(e)&&!!t.options[e]}}function u(e){return function(t){return t.options&&t.options.hasOwnProperty(e)&&!t.options[e]}}function l(e){return function(t){return!t.options||!t.options.hasOwnProperty(e)||!t.options[e]}}function _(e){return function(t){return!t.options||!t.options.hasOwnProperty(e)||!t.options[e]||t.TokensAreOnSameLine()}}function d(e){return function(t){return!t.options||!t.options.hasOwnProperty(e)||!!t.options[e]}}function p(e){return 229===e.contextNode.kind}function f(e){return!p(e)}function m(e){switch(e.contextNode.kind){case 208:case 209:case 179:case 216:case 261:case 257:case 167:case 177:case 178:return!0;case 190:case 246:case 252:case 241:case 155:case 282:case 158:case 157:return 62===e.currentTokenSpan.kind||62===e.nextTokenSpan.kind;case 230:case 154:return 96===e.currentTokenSpan.kind||96===e.nextTokenSpan.kind||62===e.currentTokenSpan.kind||62===e.nextTokenSpan.kind;case 231:return 151===e.currentTokenSpan.kind||151===e.nextTokenSpan.kind}return!1}function g(e){return!m(e)}function y(e){return!h(e)}function h(t){var r=t.contextNode.kind;return 158===r||157===r||155===r||241===r||e.isFunctionLikeKind(r)}function v(e){return 209===e.contextNode.kind||179===e.contextNode.kind}function b(e){return e.TokensAreOnSameLine()||E(e)}function x(e){return 188===e.contextNode.kind||185===e.contextNode.kind||function(e){return T(e)&&(e.ContextNodeAllOnSameLine()||e.ContextNodeBlockIsOnOneLine())}(e)}function D(e){return E(e)&&!(e.NextNodeAllOnSameLine()||e.NextNodeBlockIsOnOneLine())}function S(e){return T(e)&&!(e.ContextNodeAllOnSameLine()||e.ContextNodeBlockIsOnOneLine())}function T(e){return C(e.contextNode)}function E(e){return C(e.nextTokenParent)}function C(e){if(P(e))return!0;switch(e.kind){case 222:case 250:case 192:case 249:return!0}return!1}function k(e){switch(e.contextNode.kind){case 243:case 160:case 159:case 162:case 163:case 164:case 200:case 161:case 201:case 245:return!0}return!1}function N(e){return!k(e)}function A(e){return 243===e.contextNode.kind||200===e.contextNode.kind}function F(e){return P(e.contextNode)}function P(e){switch(e.kind){case 244:case 213:case 245:case 247:case 172:case 248:case 259:case 260:case 253:case 256:return!0}return!1}function w(e){switch(e.currentTokenParent.kind){case 244:case 248:case 247:case 278:case 249:case 236:return!0;case 222:var t=e.currentTokenParent.parent;if(!t||201!==t.kind&&200!==t.kind)return!0}return!1}function I(e){switch(e.contextNode.kind){case 226:case 236:case 229:case 230:case 231:case 228:case 239:case 227:case 235:case 278:return!0;default:return!1}}function O(e){return 192===e.contextNode.kind}function M(e){return function(e){return 195===e.contextNode.kind}(e)||function(e){return 196===e.contextNode.kind}(e)}function L(e){return 27!==e.currentTokenSpan.kind}function R(e){return 23!==e.nextTokenSpan.kind}function B(e){return 201===e.contextNode.kind}function j(e){return 187===e.contextNode.kind}function K(e){return e.TokensAreOnSameLine()&&11!==e.contextNode.kind}function J(e){return 264!==e.contextNode.kind&&268!==e.contextNode.kind}function z(e){return 274===e.contextNode.kind||273===e.contextNode.kind}function U(e){return 271===e.nextTokenParent.kind}function V(e){return 271===e.contextNode.kind}function q(e){return 265===e.contextNode.kind}function W(e){return!k(e)&&!E(e)}function G(e){return e.TokensAreOnSameLine()&&!!e.contextNode.decorators&&H(e.currentTokenParent)&&!H(e.nextTokenParent)}function H(t){for(;e.isExpressionNode(t);)t=t.parent;return 156===t.kind}function Y(e){return 242===e.currentTokenParent.kind&&e.currentTokenParent.getStart(e.sourceFile)===e.currentTokenSpan.pos}function X(e){return 2!==e.formattingRequestKind}function Q(e){return 248===e.contextNode.kind}function $(e){return 172===e.contextNode.kind}function Z(e){return 165===e.contextNode.kind}function ee(e,t){if(29!==e.kind&&31!==e.kind)return!1;switch(t.kind){case 168:case 198:case 246:case 244:case 213:case 245:case 243:case 200:case 201:case 160:case 159:case 164:case 165:case 195:case 196:case 215:return!0;default:return!1}}function te(e){return ee(e.currentTokenSpan,e.currentTokenParent)||ee(e.nextTokenSpan,e.nextTokenParent)}function re(e){return 198===e.contextNode.kind}function ne(e){return 109===e.currentTokenSpan.kind&&204===e.currentTokenParent.kind}function ie(e){return 211===e.contextNode.kind&&void 0!==e.contextNode.expression}function ae(e){return 217===e.contextNode.kind}function oe(t){var r=t.nextTokenSpan.kind,n=t.nextTokenSpan.pos;if(e.isTrivia(r)){var i=t.nextTokenParent===t.currentTokenParent?e.findNextToken(t.currentTokenParent,e.findAncestor(t.currentTokenParent,(function(e){return!e.parent})),t.sourceFile):t.nextTokenParent.getFirstToken(t.sourceFile);if(!i)return!0;r=i.kind,n=i.getStart(t.sourceFile)}return t.sourceFile.getLineAndCharacterOfPosition(t.currentTokenSpan.pos).line===t.sourceFile.getLineAndCharacterOfPosition(n).line?19===r||1===r:221!==r&&26!==r&&(245===t.contextNode.kind||246===t.contextNode.kind?!e.isPropertySignature(t.currentTokenParent)||!!t.currentTokenParent.type||20!==r:e.isPropertyDeclaration(t.currentTokenParent)?!t.currentTokenParent.initializer:229!==t.currentTokenParent.kind&&223!==t.currentTokenParent.kind&&221!==t.currentTokenParent.kind&&22!==r&&20!==r&&39!==r&&40!==r&&43!==r&&13!==r&&27!==r&&210!==r&&15!==r&&14!==r&&24!==r)}function se(t){var r=e.findAncestor(t.currentTokenParent,(function(r){return r.end!==t.currentTokenSpan.end?"quit":e.syntaxMayBeASICandidate(r.kind)}));return!!r&&e.isASICandidate(r,t.sourceFile)}r.getAllRules=function(){for(var a=[],T=0;T<=151;T++)1!==T&&a.push(T);function C(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return{tokens:a.filter((function(t){return!e.some((function(e){return e===t}))})),isSpecific:!1}}var P={tokens:a,isSpecific:!1},H=i(t(a,[3])),ee=i(t(a,[1])),ce=o(76,151),ue=o(29,74),le=[96,97,151,122,132],_e=t([75],e.typeKeywords),de=H,pe=i([75,3,79,88,95]),fe=i([21,3,85,106,91,86]),me=[n("IgnoreBeforeComment",P,[2,3],r.anyContext,1),n("IgnoreAfterLineComment",2,P,r.anyContext,1),n("NotSpaceBeforeColon",P,58,[K,g,y],16),n("SpaceAfterColon",58,P,[K,g],4),n("NoSpaceBeforeQuestionMark",P,57,[K,g],16),n("SpaceAfterQuestionMarkInConditionalOperator",57,P,[K,v],4),n("NoSpaceAfterQuestionMark",57,P,[K],16),n("NoSpaceBeforeDot",P,[24,28],[K],16),n("NoSpaceAfterDot",[24,28],P,[K],16),n("NoSpaceBetweenImportParenInImportType",95,20,[K,j],16),n("NoSpaceAfterUnaryPrefixOperator",[45,46,54,53],[8,9,75,20,22,18,103,98],[K,g],16),n("NoSpaceAfterUnaryPreincrementOperator",45,[75,20,103,98],[K],16),n("NoSpaceAfterUnaryPredecrementOperator",46,[75,20,103,98],[K],16),n("NoSpaceBeforeUnaryPostincrementOperator",[75,21,23,98],45,[K],16),n("NoSpaceBeforeUnaryPostdecrementOperator",[75,21,23,98],46,[K],16),n("SpaceAfterPostincrementWhenFollowedByAdd",45,39,[K,m],4),n("SpaceAfterAddWhenFollowedByUnaryPlus",39,39,[K,m],4),n("SpaceAfterAddWhenFollowedByPreincrement",39,45,[K,m],4),n("SpaceAfterPostdecrementWhenFollowedBySubtract",46,40,[K,m],4),n("SpaceAfterSubtractWhenFollowedByUnaryMinus",40,40,[K,m],4),n("SpaceAfterSubtractWhenFollowedByPredecrement",40,46,[K,m],4),n("NoSpaceAfterCloseBrace",19,[27,26],[K],16),n("NewLineBeforeCloseBraceInBlockContext",H,19,[S],8),n("SpaceAfterCloseBrace",19,C(21),[K,w],4),n("SpaceBetweenCloseBraceAndElse",19,86,[K],4),n("SpaceBetweenCloseBraceAndWhile",19,110,[K],4),n("NoSpaceBetweenEmptyBraceBrackets",18,19,[K,O],16),n("SpaceAfterConditionalClosingParen",21,22,[I],4),n("NoSpaceBetweenFunctionKeywordAndStar",93,41,[A],16),n("SpaceAfterStarInGeneratorDeclaration",41,75,[A],4),n("SpaceAfterFunctionInFuncDecl",93,P,[k],4),n("NewLineAfterOpenBraceInBlockContext",18,P,[S],8),n("SpaceAfterGetSetInMember",[130,141],75,[k],4),n("NoSpaceBetweenYieldKeywordAndStar",120,41,[K,ie],16),n("SpaceBetweenYieldOrYieldStarAndOperand",[120,41],P,[K,ie],4),n("NoSpaceBetweenReturnAndSemicolon",100,26,[K],16),n("SpaceAfterCertainKeywords",[108,104,98,84,100,107,126],P,[K],4),n("SpaceAfterLetConstInVariableDeclaration",[114,80],P,[K,Y],4),n("NoSpaceBeforeOpenParenInFuncCall",P,20,[K,M,L],16),n("SpaceBeforeBinaryKeywordOperator",P,le,[K,m],4),n("SpaceAfterBinaryKeywordOperator",le,P,[K,m],4),n("SpaceAfterVoidOperator",109,P,[K,ne],4),n("SpaceBetweenAsyncAndOpenParen",125,20,[B,K],4),n("SpaceBetweenAsyncAndFunctionKeyword",125,93,[K],4),n("NoSpaceBetweenTagAndTemplateString",[75,21],[14,15],[K],16),n("SpaceBeforeJsxAttribute",P,75,[U,K],4),n("SpaceBeforeSlashInJsxOpeningElement",P,43,[q,K],4),n("NoSpaceBeforeGreaterThanTokenInJsxOpeningElement",43,31,[q,K],16),n("NoSpaceBeforeEqualInJsxAttribute",P,62,[V,K],16),n("NoSpaceAfterEqualInJsxAttribute",62,P,[V,K],16),n("NoSpaceAfterModuleImport",[134,138],20,[K],16),n("SpaceAfterCertainTypeScriptKeywords",[121,79,129,83,87,88,89,130,112,95,113,134,135,116,118,117,137,141,119,144,148,133,131],P,[K],4),n("SpaceBeforeCertainTypeScriptKeywords",P,[89,112,148],[K],4),n("SpaceAfterModuleName",10,18,[Q],4),n("SpaceBeforeArrow",P,38,[K],4),n("SpaceAfterArrow",38,P,[K],4),n("NoSpaceAfterEllipsis",25,75,[K],16),n("NoSpaceAfterOptionalParameters",57,[21,27],[K,g],16),n("NoSpaceBetweenEmptyInterfaceBraceBrackets",18,19,[K,$],16),n("NoSpaceBeforeOpenAngularBracket",_e,29,[K,te],16),n("NoSpaceBetweenCloseParenAndAngularBracket",21,29,[K,te],16),n("NoSpaceAfterOpenAngularBracket",29,P,[K,te],16),n("NoSpaceBeforeCloseAngularBracket",P,31,[K,te],16),n("NoSpaceAfterCloseAngularBracket",31,[20,22,31,27],[K,te,N],16),n("SpaceBeforeAt",[21,75],59,[K],4),n("NoSpaceAfterAt",59,P,[K],16),n("SpaceAfterDecorator",P,[121,75,88,83,79,119,118,116,117,130,141,22,41],[G],4),n("NoSpaceBeforeNonNullAssertionOperator",P,53,[K,ae],16),n("NoSpaceAfterNewKeywordOnConstructorSignature",98,20,[K,Z],16),n("SpaceLessThanAndNonJSXTypeAnnotation",29,29,[K],4)],ge=[n("SpaceAfterConstructor",128,20,[c("insertSpaceAfterConstructor"),K],4),n("NoSpaceAfterConstructor",128,20,[l("insertSpaceAfterConstructor"),K],16),n("SpaceAfterComma",27,P,[c("insertSpaceAfterCommaDelimiter"),K,J,R],4),n("NoSpaceAfterComma",27,P,[l("insertSpaceAfterCommaDelimiter"),K,J],16),n("SpaceAfterAnonymousFunctionKeyword",[93,41],20,[c("insertSpaceAfterFunctionKeywordForAnonymousFunctions"),k],4),n("NoSpaceAfterAnonymousFunctionKeyword",[93,41],20,[l("insertSpaceAfterFunctionKeywordForAnonymousFunctions"),k],16),n("SpaceAfterKeywordInControl",ce,20,[c("insertSpaceAfterKeywordsInControlFlowStatements"),I],4),n("NoSpaceAfterKeywordInControl",ce,20,[l("insertSpaceAfterKeywordsInControlFlowStatements"),I],16),n("SpaceAfterOpenParen",20,P,[c("insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis"),K],4),n("SpaceBeforeCloseParen",P,21,[c("insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis"),K],4),n("SpaceBetweenOpenParens",20,20,[c("insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis"),K],4),n("NoSpaceBetweenParens",20,21,[K],16),n("NoSpaceAfterOpenParen",20,P,[l("insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis"),K],16),n("NoSpaceBeforeCloseParen",P,21,[l("insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis"),K],16),n("SpaceAfterOpenBracket",22,P,[c("insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets"),K],4),n("SpaceBeforeCloseBracket",P,23,[c("insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets"),K],4),n("NoSpaceBetweenBrackets",22,23,[K],16),n("NoSpaceAfterOpenBracket",22,P,[l("insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets"),K],16),n("NoSpaceBeforeCloseBracket",P,23,[l("insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets"),K],16),n("SpaceAfterOpenBrace",18,P,[d("insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces"),x],4),n("SpaceBeforeCloseBrace",P,19,[d("insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces"),x],4),n("NoSpaceBetweenEmptyBraceBrackets",18,19,[K,O],16),n("NoSpaceAfterOpenBrace",18,P,[u("insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces"),K],16),n("NoSpaceBeforeCloseBrace",P,19,[u("insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces"),K],16),n("SpaceAfterTemplateHeadAndMiddle",[15,16],P,[c("insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces"),K],4),n("SpaceBeforeTemplateMiddleAndTail",P,[16,17],[c("insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces"),K],4),n("NoSpaceAfterTemplateHeadAndMiddle",[15,16],P,[l("insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces"),K],16),n("NoSpaceBeforeTemplateMiddleAndTail",P,[16,17],[l("insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces"),K],16),n("SpaceAfterOpenBraceInJsxExpression",18,P,[c("insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces"),K,z],4),n("SpaceBeforeCloseBraceInJsxExpression",P,19,[c("insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces"),K,z],4),n("NoSpaceAfterOpenBraceInJsxExpression",18,P,[l("insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces"),K,z],16),n("NoSpaceBeforeCloseBraceInJsxExpression",P,19,[l("insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces"),K,z],16),n("SpaceAfterSemicolonInFor",26,P,[c("insertSpaceAfterSemicolonInForStatements"),K,p],4),n("NoSpaceAfterSemicolonInFor",26,P,[l("insertSpaceAfterSemicolonInForStatements"),K,p],16),n("SpaceBeforeBinaryOperator",P,ue,[c("insertSpaceBeforeAndAfterBinaryOperators"),K,m],4),n("SpaceAfterBinaryOperator",ue,P,[c("insertSpaceBeforeAndAfterBinaryOperators"),K,m],4),n("NoSpaceBeforeBinaryOperator",P,ue,[l("insertSpaceBeforeAndAfterBinaryOperators"),K,m],16),n("NoSpaceAfterBinaryOperator",ue,P,[l("insertSpaceBeforeAndAfterBinaryOperators"),K,m],16),n("SpaceBeforeOpenParenInFuncDecl",P,20,[c("insertSpaceBeforeFunctionParenthesis"),K,k],4),n("NoSpaceBeforeOpenParenInFuncDecl",P,20,[l("insertSpaceBeforeFunctionParenthesis"),K,k],16),n("NewLineBeforeOpenBraceInControl",fe,18,[c("placeOpenBraceOnNewLineForControlBlocks"),I,D],8,1),n("NewLineBeforeOpenBraceInFunction",de,18,[c("placeOpenBraceOnNewLineForFunctions"),k,D],8,1),n("NewLineBeforeOpenBraceInTypeScriptDeclWithBlock",pe,18,[c("placeOpenBraceOnNewLineForFunctions"),F,D],8,1),n("SpaceAfterTypeAssertion",31,P,[c("insertSpaceAfterTypeAssertion"),K,re],4),n("NoSpaceAfterTypeAssertion",31,P,[l("insertSpaceAfterTypeAssertion"),K,re],16),n("SpaceBeforeTypeAnnotation",P,58,[c("insertSpaceBeforeTypeAnnotation"),K,h],4),n("NoSpaceBeforeTypeAnnotation",P,58,[l("insertSpaceBeforeTypeAnnotation"),K,h],16),n("NoOptionalSemicolon",26,ee,[s("semicolons",e.SemicolonPreference.Remove),oe],32),n("OptionalSemicolon",P,ee,[s("semicolons",e.SemicolonPreference.Insert),se],64)],ye=[n("NoSpaceBeforeSemicolon",P,26,[K],16),n("SpaceBeforeOpenBraceInControl",fe,18,[_("placeOpenBraceOnNewLineForControlBlocks"),I,X,b],4,1),n("SpaceBeforeOpenBraceInFunction",de,18,[_("placeOpenBraceOnNewLineForFunctions"),k,E,X,b],4,1),n("SpaceBeforeOpenBraceInTypeScriptDeclWithBlock",pe,18,[_("placeOpenBraceOnNewLineForFunctions"),F,X,b],4,1),n("NoSpaceBeforeComma",P,27,[K],16),n("NoSpaceBeforeOpenBracket",C(125,77),22,[K],16),n("NoSpaceAfterCloseBracket",23,P,[K,W],16),n("SpaceAfterSemicolon",26,P,[K],4),n("SpaceBetweenForAndAwaitKeyword",92,126,[K],4),n("SpaceBetweenStatements",[21,85,86,77],P,[K,J,f],4),n("SpaceAfterTryFinally",[106,91],18,[K],4)];return t(me,ge,ye)}}(e.formatting||(e.formatting={}))}(s||(s={})),function(e){!function(t){var r;function n(){var n,o;return void 0===r&&(n=t.getAllRules(),o=function(e){for(var t=new Array(u*u),r=new Array(t.length),n=0,i=e;n<i.length;n++)for(var o=i[n],s=o.leftTokenRange.isSpecific&&o.rightTokenRange.isSpecific,c=0,_=o.leftTokenRange.tokens;c<_.length;c++)for(var d=_[c],p=0,f=o.rightTokenRange.tokens;p<f.length;p++){var m=f[p],g=a(d,m),y=t[g];void 0===y&&(y=t[g]=[]),l(y,o.rule,s,r,g)}return t}(n),r=function(t){var r=o[a(t.currentTokenSpan.kind,t.nextTokenSpan.kind)];if(r){for(var n=[],s=0,c=0,u=r;c<u.length;c++){var l=u[c],_=~i(s);l.action&_&&e.every(l.context,(function(e){return e(t)}))&&(n.push(l),s|=l.action)}if(n.length)return n}}),r}function i(e){var t=0;return 1&e&&(t|=28),2&e&&(t|=96),28&e&&(t|=28),96&e&&(t|=96),t}function a(t,r){return e.Debug.assert(t<=151&&r<=151,"Must compute formatting context from tokens"),t*u+r}t.getFormatContext=function(e){return{options:e,getRules:n()}};var o,s=5,c=31,u=152;function l(r,n,i,a,u){var l,_,d,p=3&n.action?i?o.StopRulesSpecific:o.StopRulesAny:n.context!==t.anyContext?i?o.ContextRulesSpecific:o.ContextRulesAny:i?o.NoContextRulesSpecific:o.NoContextRulesAny,f=a[u]||0;r.splice(function(e,t){for(var r=0,n=0;n<=t;n+=s)r+=e&c,e>>=s;return r}(f,p),0,n),a[u]=(d=1+((l=f)>>(_=p)&c),e.Debug.assert((d&c)===d,"Adding more rules into the sub-bucket than allowed. Maximum allowed is 32 rules."),l&~(c<<_)|d<<_)}!function(e){e[e.StopRulesSpecific=0]="StopRulesSpecific",e[e.StopRulesAny=1*s]="StopRulesAny",e[e.ContextRulesSpecific=2*s]="ContextRulesSpecific",e[e.ContextRulesAny=3*s]="ContextRulesAny",e[e.NoContextRulesSpecific=4*s]="NoContextRulesSpecific",e[e.NoContextRulesAny=5*s]="NoContextRulesAny"}(o||(o={}))}(e.formatting||(e.formatting={}))}(s||(s={})),function(e){!function(t){var r,n,i,a,o;function s(t,r,n){var i=e.findPrecedingToken(t,n);return i&&i.kind===r&&t===i.getEnd()?i:void 0}function c(e){for(var t=e;t&&t.parent&&t.parent.end===e.end&&!u(t.parent,t);)t=t.parent;return t}function u(t,r){switch(t.kind){case 244:case 245:return e.rangeContainsRange(t.members,r);case 248:var n=t.body;return!!n&&249===n.kind&&e.rangeContainsRange(n.statements,r);case 288:case 222:case 249:return e.rangeContainsRange(t.statements,r);case 278:return e.rangeContainsRange(t.block.statements,r)}return!1}function l(t,r,n,i){return t?_({pos:e.getLineStartPositionForPosition(t.getStart(r),r),end:t.end},r,n,i):[]}function _(r,n,i,a){var o=function(t,r){return function n(i){var a=e.forEachChild(i,(function(n){return e.startEndContainsRange(n.getStart(r),n.end,t)&&n}));if(a){var o=n(a);if(o)return o}return i}(r)}(r,n);return t.getFormattingScanner(n.text,n.languageVariant,function(t,r,n){var i=t.getStart(n);if(i===r.pos&&t.end===r.end)return i;var a=e.findPrecedingToken(r.pos,n);return a?a.end>=r.pos?t.pos:a.end:t.pos}(o,r,n),r.end,(function(s){return d(r,o,t.SmartIndenter.getIndentationForNode(o,r,n,i.options),function(e,r,n){for(var i,a=-1;e;){var o=n.getLineAndCharacterOfPosition(e.getStart(n)).line;if(-1!==a&&o!==a)break;if(t.SmartIndenter.shouldIndentChildNode(r,e,i,n))return r.indentSize;a=o,i=e,e=e.parent}return 0}(o,i.options,n),s,i,a,function(t,r){if(!t.length)return a;var n=t.filter((function(t){return e.rangeOverlapsWithStartEnd(r,t.start,t.start+t.length)})).sort((function(e,t){return e.start-t.start}));if(!n.length)return a;var i=0;return function(t){for(;;){if(i>=n.length)return!1;var r=n[i];if(t.end<=r.start)return!1;if(e.startEndOverlapsWithStartEnd(t.pos,t.end,r.start,r.start+r.length))return!0;i++}};function a(){return!1}}(n.parseDiagnostics,r),n)}))}function d(r,n,i,a,o,s,c,u,l){var _,d,f,m,g=s.options,y=s.getRules,h=new t.FormattingContext(l,c,g),v=-1,b=[];if(o.advance(),o.isOnToken()){var x=l.getLineAndCharacterOfPosition(n.getStart(l)).line,D=x;n.decorators&&(D=l.getLineAndCharacterOfPosition(e.getNonDecoratorTokenPosOfNode(n,l)).line),function n(i,a,s,c,p,y){if(!e.rangeOverlapsWithStartEnd(r,i.getStart(l),i.getEnd()))return;var h=T(i,s,p,y);var b=a;e.forEachChild(i,(function(e){S(e,-1,i,h,s,c,!1)}),(function(r){!function(r,n,a,s){e.Debug.assert(e.isNodeArray(r));var c=function(e,t){switch(e.kind){case 161:case 243:case 200:case 160:case 159:case 201:if(e.typeParameters===t)return 29;if(e.parameters===t)return 20;break;case 195:case 196:if(e.typeArguments===t)return 29;if(e.arguments===t)return 20;break;case 168:if(e.typeArguments===t)return 29;break;case 172:return 18}return 0}(n,r),u=s,_=a;if(0!==c)for(;o.isOnToken();){if((b=o.readTokenInfo(n)).token.end>r.pos)break;if(b.token.kind===c){_=l.getLineAndCharacterOfPosition(b.token.pos).line,P(b,n,s,n);var d=void 0;if(-1!==v)d=v;else{var p=e.getLineStartPositionForPosition(b.token.pos,l);d=t.SmartIndenter.findFirstNonWhitespaceColumn(p,b.token.pos,l,g)}u=T(n,a,d,g.indentSize)}else P(b,n,s,n)}for(var f=-1,m=0;m<r.length;m++){var y=r[m];f=S(y,f,i,u,_,_,!0,0===m)}var h=function(e){switch(e){case 20:return 21;case 29:return 31;case 18:return 19}return 0}(c);if(0!==h&&o.isOnToken()){var b;27===(b=o.readTokenInfo(n)).token.kind&&e.isCallLikeExpression(n)&&(o.advance(),b=o.isOnToken()?o.readTokenInfo(n):void 0),b&&b.token.kind===h&&e.rangeContainsRange(n,b.token)&&P(b,n,u,n,!0)}}(r,i,s,h)}));for(;o.isOnToken();){var x=o.readTokenInfo(i);if(x.token.end>i.end)break;P(x,i,h,i)}if(!i.parent&&o.isOnEOF()){var D=o.readEOFTokenRange();D.end<=i.end&&_&&N(D,l.getLineAndCharacterOfPosition(D.pos).line,i,_,f,d,a,h)}function S(a,s,c,u,_,d,p,f){var y=a.getStart(l),h=l.getLineAndCharacterOfPosition(y).line,x=h;a.decorators&&(x=l.getLineAndCharacterOfPosition(e.getNonDecoratorTokenPosOfNode(a,l)).line);var D=-1;if(p&&e.rangeContainsRange(r,c)&&-1!==(D=function(r,n,i,a,o){if(e.rangeOverlapsWithStartEnd(a,r,n)||e.rangeContainsStartEnd(a,r,n)){if(-1!==o)return o}else{var s=l.getLineAndCharacterOfPosition(r).line,c=e.getLineStartPositionForPosition(r,l),u=t.SmartIndenter.findFirstNonWhitespaceColumn(c,r,l,g);if(s!==i||r===u){var _=t.SmartIndenter.getBaseIndentation(g);return _>u?_:u}}return-1}(y,a.end,_,r,s))&&(s=D),!e.rangeOverlapsWithStartEnd(r,a.pos,a.end))return a.end<r.pos&&o.skipToEndOf(a),s;if(0===a.getFullWidth())return s;for(;o.isOnToken();){if((S=o.readTokenInfo(i)).token.end>y)break;P(S,i,u,i)}if(!o.isOnToken())return s;if(e.isToken(a)&&11!==a.kind){var S=o.readTokenInfo(a);return e.Debug.assert(S.token.end===a.end,"Token end is child end"),P(S,i,u,a),s}var T=156===a.kind?h:d,E=function(e,r,n,i,a,o){var s=t.SmartIndenter.shouldIndentChildNode(g,e)?g.indentSize:0;return o===r?{indentation:r===m?v:a.getIndentation(),delta:Math.min(g.indentSize,a.getDelta(e)+s)}:-1===n?20===e.kind&&r===m?{indentation:v,delta:a.getDelta(e)}:t.SmartIndenter.childStartsOnTheSameLineWithElseInIfStatement(i,e,r,l)?{indentation:a.getIndentation(),delta:s}:t.SmartIndenter.argumentStartsOnSameLineAsPreviousArgument(i,e,r,l)?{indentation:a.getIndentation(),delta:s}:{indentation:a.getIndentation()+a.getDelta(e),delta:s}:{indentation:n,delta:s}}(a,h,D,i,u,T);(n(a,b,h,x,E.indentation,E.delta),11===a.kind)&&F({pos:a.getStart(),end:a.getEnd()},E.indentation,!0,!1);return b=i,f&&191===c.kind&&-1===s&&(s=E.indentation),s}function P(t,n,i,a,s){e.Debug.assert(e.rangeContainsRange(n,t.token));var c=o.lastTrailingTriviaWasNewLine(),d=!1;t.leadingTrivia&&C(t.leadingTrivia,n,b,i);var p=0,f=e.rangeContainsRange(r,t.token),g=l.getLineAndCharacterOfPosition(t.token.pos);if(f){var y=u(t.token),h=_;if(p=k(t.token,g,n,b,i),!y)if(0===p){var x=h&&l.getLineAndCharacterOfPosition(h.end).line;d=c&&g.line!==x}else d=1===p}if(t.trailingTrivia&&C(t.trailingTrivia,n,b,i),d){var D=f&&!u(t.token)?i.getIndentationForToken(g.line,t.token.kind,a,!!s):-1,S=!0;if(t.leadingTrivia){var T=i.getIndentationForComment(t.token.kind,D,a);S=E(t.leadingTrivia,T,S,(function(e){return A(e.pos,T,!1)}))}-1!==D&&S&&(A(t.token.pos,D,1===p),m=g.line,v=D)}o.advance(),b=n}}(n,n,x,D,i,a)}if(!o.isOnToken()){var S=o.getCurrentLeadingTrivia();S&&(E(S,i,!1,(function(e){return k(e,l.getLineAndCharacterOfPosition(e.pos),n,n,void 0)})),function(){var e=_?_.end:r.pos,t=l.getLineAndCharacterOfPosition(e).line,n=l.getLineAndCharacterOfPosition(r.end).line;P(t,n+1,_)}())}return b;function T(r,n,i,a){return{getIndentationForComment:function(e,t,r){switch(e){case 19:case 23:case 21:return i+o(r)}return-1!==t?t:i},getIndentationForToken:function(t,a,s,c){return!c&&function(t,i,a){switch(i){case 18:case 19:case 21:case 86:case 110:case 59:return!1;case 43:case 31:switch(a.kind){case 266:case 267:case 265:return!1}break;case 22:case 23:if(185!==a.kind)return!1}return n!==t&&!(r.decorators&&i===function(t){if(t.modifiers&&t.modifiers.length)return t.modifiers[0].kind;switch(t.kind){case 244:return 79;case 245:return 113;case 243:return 93;case 247:return 247;case 162:return 130;case 163:return 141;case 160:if(t.asteriskToken)return 41;case 158:case 155:var r=e.getNameOfDeclaration(t);if(r)return r.kind}}(r))}(t,a,s)?i+o(s):i},getIndentation:function(){return i},getDelta:o,recomputeIndentation:function(e){r.parent&&t.SmartIndenter.shouldIndentChildNode(g,r.parent,r,l)&&(i+=e?g.indentSize:-g.indentSize,a=t.SmartIndenter.shouldIndentChildNode(g,r)?g.indentSize:0)}};function o(e){return t.SmartIndenter.nodeWillIndentChild(g,r,e,l,!0)?a:0}}function E(t,n,i,a){for(var o=0,s=t;o<s.length;o++){var c=s[o],u=e.rangeContainsRange(r,c);switch(c.kind){case 3:u&&F(c,n,!i),i=!1;break;case 2:i&&u&&a(c),i=!1;break;case 4:i=!0}}return i}function C(t,n,i,a){for(var o=0,s=t;o<s.length;o++){var c=s[o];if(e.isComment(c.kind)&&e.rangeContainsRange(r,c))k(c,l.getLineAndCharacterOfPosition(c.pos),n,i,a)}}function k(e,t,n,i,a){var o=0;u(e)||(_?o=N(e,t.line,n,_,f,d,i,a):P(l.getLineAndCharacterOfPosition(r.pos).line,t.line));return _=e,d=n,f=t.line,o}function N(t,r,n,i,a,o,s,c){h.updateContext(i,o,t,n,s);var u=y(h),_=!1,d=0;return u?e.forEachRight(u,(function(o){switch(d=function(t,r,n,i,a){var o=a!==n;switch(t.action){case 1:return 0;case 16:if(r.end!==i.pos)return I(r.end,i.pos-r.end),o?2:0;break;case 32:I(r.pos,r.end-r.pos);break;case 8:if(1!==t.flags&&n!==a)return 0;if(1!==a-n)return O(r.end,i.pos-r.end,g.newLineCharacter),o?0:1;break;case 4:if(1!==t.flags&&n!==a)return 0;if(1!==i.pos-r.end||32!==l.text.charCodeAt(r.end))return O(r.end,i.pos-r.end," "),o?2:0;break;case 64:s=r.end,(c=";")&&b.push(e.createTextChangeFromStartLength(s,0,c))}var s,c;return 0}(o,i,a,t,r)){case 2:n.getStart(l)===t.pos&&c.recomputeIndentation(!1);break;case 1:n.getStart(l)===t.pos&&c.recomputeIndentation(!0);break;default:e.Debug.assert(0===d)}_=!(16&o.action)&&1!==o.flags})):_=1!==t.kind,r!==a&&_&&P(a,r,i),d}function A(t,r,n){var i=p(r,g);if(n)O(t,0,i);else{var a=l.getLineAndCharacterOfPosition(t),o=e.getStartPositionOfLine(a.line,l);(r!==function(e,t){for(var r=0,n=0;n<t;n++)9===l.text.charCodeAt(e+n)?r+=g.tabSize-r%g.tabSize:r++;return r}(o,a.character)||function(e,t){return e!==l.text.substr(t,e.length)}(i,o))&&O(o,a.character,i)}}function F(r,n,i,a){void 0===a&&(a=!0);var o=l.getLineAndCharacterOfPosition(r.pos).line,s=l.getLineAndCharacterOfPosition(r.end).line;if(o!==s){for(var c=[],u=r.pos,_=o;_<s;_++){var d=e.getEndLinePosition(_,l);c.push({pos:u,end:d}),u=e.getStartPositionOfLine(_+1,l)}if(a&&c.push({pos:u,end:r.end}),0!==c.length){var f=e.getStartPositionOfLine(o,l),m=t.SmartIndenter.findFirstNonWhitespaceCharacterAndColumn(f,c[0].pos,l,g);if(n!==m.column){var y=0;i&&(y=1,o++);for(var h=n-m.column,v=y;v<c.length;v++,o++){var b=e.getStartPositionOfLine(o,l),x=0===v?m:t.SmartIndenter.findFirstNonWhitespaceCharacterAndColumn(c[v].pos,c[v].end,l,g),D=x.column+h;if(D>0){var S=p(D,g);O(b,x.character,S)}else I(b,x.character)}}}}else i||A(r.pos,n,!1)}function P(t,r,n){for(var i=t;i<r;i++){var a=e.getStartPositionOfLine(i,l),o=e.getEndLinePosition(i,l);if(!(n&&(e.isComment(n.kind)||e.isStringOrRegularExpressionOrTemplateLiteral(n.kind))&&n.pos<=o&&n.end>o)){var s=w(a,o);-1!==s&&(e.Debug.assert(s===a||!e.isWhiteSpaceSingleLine(l.text.charCodeAt(s-1))),I(s,o+1-s))}}}function w(t,r){for(var n=r;n>=t&&e.isWhiteSpaceSingleLine(l.text.charCodeAt(n));)n--;return n!==r?n+1:-1}function I(t,r){r&&b.push(e.createTextChangeFromStartLength(t,r,""))}function O(t,r,n){(r||n)&&b.push(e.createTextChangeFromStartLength(t,r,n))}}function p(t,r){if((!i||i.tabSize!==r.tabSize||i.indentSize!==r.indentSize)&&(i={tabSize:r.tabSize,indentSize:r.indentSize},a=o=void 0),r.convertTabsToSpaces){var n=void 0,s=Math.floor(t/r.indentSize),c=t%r.indentSize;return o||(o=[]),void 0===o[s]?(n=e.repeatString(" ",r.indentSize*s),o[s]=n):n=o[s],c?n+e.repeatString(" ",c):n}var u=Math.floor(t/r.tabSize),l=t-u*r.tabSize,_=void 0;return a||(a=[]),void 0===a[u]?a[u]=_=e.repeatString("\t",u):_=a[u],l?_+e.repeatString(" ",l):_}t.createTextRangeWithKind=function(t,r,n){var i={pos:t,end:r,kind:n};return e.Debug.isDebugging&&Object.defineProperty(i,"__debugKind",{get:function(){return e.Debug.formatSyntaxKind(n)}}),i},function(e){e[e.Unknown=-1]="Unknown"}(r||(r={})),t.formatOnEnter=function(t,r,n){var i=r.getLineAndCharacterOfPosition(t).line;if(0===i)return[];for(var a=e.getEndLinePosition(i,r);e.isWhiteSpaceSingleLine(r.text.charCodeAt(a));)a--;return e.isLineBreak(r.text.charCodeAt(a))&&a--,_({pos:e.getStartPositionOfLine(i-1,r),end:a+1},r,n,2)},t.formatOnSemicolon=function(e,t,r){return l(c(s(e,26,t)),t,r,3)},t.formatOnOpeningCurly=function(t,r,n){var i=s(t,18,r);if(!i)return[];var a=c(i.parent);return _({pos:e.getLineStartPositionForPosition(a.getStart(r),r),end:t},r,n,4)},t.formatOnClosingCurly=function(e,t,r){return l(c(s(e,19,t)),t,r,5)},t.formatDocument=function(e,t){return _({pos:0,end:e.text.length},e,t,0)},t.formatSelection=function(t,r,n,i){return _({pos:e.getLineStartPositionForPosition(t,n),end:r},n,i,1)},t.formatNodeGivenIndentation=function(e,r,n,i,a,o){var s={pos:0,end:r.text.length};return t.getFormattingScanner(r.text,n,s.pos,s.end,(function(t){return d(s,e,i,a,t,o,1,(function(e){return!1}),r)}))},function(e){e[e.None=0]="None",e[e.LineAdded=1]="LineAdded",e[e.LineRemoved=2]="LineRemoved"}(n||(n={})),t.getRangeOfEnclosingComment=function(t,r,n,i){void 0===i&&(i=e.getTokenAtPosition(t,r));var a=e.findAncestor(i,e.isJSDoc);if(a&&(i=a.parent),!(i.getStart(t)<=r&&r<i.getEnd())){var o=(n=null===n?void 0:void 0===n?e.findPrecedingToken(r,t):n)&&e.getTrailingCommentRanges(t.text,n.end),s=e.getLeadingCommentRangesOfNode(i,t),c=e.concatenate(o,s);return c&&e.find(c,(function(n){return e.rangeContainsPositionExclusive(n,r)||r===n.end&&(2===n.kind||r===t.getFullWidth())}))}},t.getIndentationString=p}(e.formatting||(e.formatting={}))}(s||(s={})),function(e){!function(t){!function(r){var n,i;function a(e){return e.baseIndentSize||0}function o(e,t,r,n,i,o,u){for(var l=e.parent;l;){var p=!0;if(r){var f=e.getStart(i);p=f<r.pos||f>r.end}var m=s(l,e,i),y=m.line===t.line||d(l,e,t.line,i);if(p){var h=g(e,i,u,!y);if(-1!==h)return h+n;if(-1!==(h=c(e,l,t,y,i,u)))return h+n}D(u,l,e,i,o)&&!y&&(n+=u.indentSize);var v=_(l,e,t.line,i);l=(e=l).parent,t=v?i.getLineAndCharacterOfPosition(e.getStart(i)):m}return n+a(u)}function s(e,t,r){var n=p(t,r),i=n?n.pos:e.getStart(r);return r.getLineAndCharacterOfPosition(i)}function c(t,r,n,i,a,o){return(e.isDeclaration(t)||e.isStatementButNotDeclaration(t))&&(288===r.kind||!i)?h(n,a,o):-1}function u(t,r,n,i){var a=e.findNextToken(t,r,i);return a?18===a.kind?1:19===a.kind&&n===l(a,i).line?2:0:0}function l(e,t){return t.getLineAndCharacterOfPosition(e.getStart(t))}function _(t,r,n,i){if(!e.isCallExpression(t)||!e.contains(t.arguments,r))return!1;var a=t.expression.getEnd();return e.getLineAndCharacterOfPosition(i,a).line===n}function d(t,r,n,i){if(226===t.kind&&t.elseStatement===r){var a=e.findChildOfKind(t,86,i);return e.Debug.assert(void 0!==a),l(a,i).line===n}return!1}function p(e,t){return e.parent&&f(e.getStart(t),e.getEnd(),e.parent,t)}function f(t,r,n,i){switch(n.kind){case 168:return a(n.typeArguments);case 192:return a(n.properties);case 191:return a(n.elements);case 172:return a(n.members);case 243:case 200:case 201:case 160:case 159:case 164:case 161:case 170:case 165:return a(n.typeParameters)||a(n.parameters);case 244:case 213:case 245:case 246:case 314:return a(n.typeParameters);case 196:case 195:return a(n.typeArguments)||a(n.arguments);case 242:return a(n.declarations);case 256:case 260:return a(n.elements);case 188:case 189:return a(n.elements)}function a(a){return a&&e.rangeContainsStartEnd(function(e,t,r){for(var n=e.getChildren(r),i=1;i<n.length-1;i++)if(n[i].pos===t.pos&&n[i].end===t.end)return{pos:n[i-1].end,end:n[i+1].getStart(r)};return t}(n,a,i),t,r)?a:void 0}}function m(e,t,r){return e?h(t.getLineAndCharacterOfPosition(e.pos),t,r):-1}function g(e,t,r,n){if(e.parent&&242===e.parent.kind)return-1;var i=p(e,t);if(i){var a=i.indexOf(e);if(-1!==a){var o=y(i,a,t,r);if(-1!==o)return o}return m(i,t,r)+(n?r.indentSize:0)}return-1}function y(t,r,n,i){e.Debug.assert(r>=0&&r<t.length);for(var a=l(t[r],n),o=r-1;o>=0;o--)if(27!==t[o].kind){if(n.getLineAndCharacterOfPosition(t[o].end).line!==a.line)return h(a,n,i);a=l(t[o],n)}return-1}function h(e,t,r){var n=t.getPositionOfLineAndCharacter(e.line,0);return b(n,n+e.character,t,r)}function v(t,r,n,i){for(var a=0,o=0,s=t;s<r;s++){var c=n.text.charCodeAt(s);if(!e.isWhiteSpaceSingleLine(c))break;9===c?o+=i.tabSize+o%i.tabSize:o++,a++}return{column:o,character:a}}function b(e,t,r,n){return v(e,t,r,n).column}function x(t,r,n,i,a){var o=n?n.kind:0;switch(r.kind){case 225:case 244:case 213:case 245:case 247:case 246:case 191:case 222:case 249:case 192:case 172:case 185:case 174:case 250:case 276:case 275:case 199:case 193:case 195:case 196:case 224:case 258:case 234:case 209:case 189:case 188:case 266:case 269:case 265:case 274:case 159:case 164:case 165:case 155:case 169:case 170:case 181:case 197:case 205:case 260:case 256:case 261:case 257:case 158:return!0;case 241:case 279:case 208:if(!t.indentMultiLineObjectLiteralBeginningOnBlankLine&&i&&192===o)return function(t,r){var n=e.skipTrivia(t.text,r.pos),i=t.getLineAndCharacterOfPosition(n).line,a=t.getLineAndCharacterOfPosition(r.end).line;return i===a}(i,n);if(208!==r.kind)return!0;break;case 227:case 228:case 230:case 231:case 229:case 226:case 243:case 200:case 160:case 201:case 161:case 162:case 163:return 222!==o;case 259:return 260!==o;case 253:return 254!==o||!!n.namedBindings&&256!==n.namedBindings.kind;case 264:return 267!==o;case 268:return 270!==o;case 178:case 177:if(172===o)return!1}return a}function D(e,t,r,n,i){return void 0===i&&(i=!1),x(e,t,r,n,!1)&&!(i&&r&&function(e,t){switch(e){case 234:case 238:case 232:case 233:return 222!==t.kind;default:return!1}}(r.kind,t))}!function(e){e[e.Unknown=-1]="Unknown"}(n||(n={})),r.getIndentation=function(r,n,i,s){if(void 0===s&&(s=!1),r>n.text.length)return a(i);if(i.indentStyle===e.IndentStyle.None)return 0;var c=e.findPrecedingToken(r,n,void 0,!0),_=t.getRangeOfEnclosingComment(n,r,c||null);if(_&&3===_.kind)return function(t,r,n,i){var a=e.getLineAndCharacterOfPosition(t,r).line-1,o=e.getLineAndCharacterOfPosition(t,i.pos).line;if(e.Debug.assert(o>=0),a<=o)return b(e.getStartPositionOfLine(o,t),r,t,n);var s=e.getStartPositionOfLine(a,t),c=v(s,r,t,n),u=c.column,l=c.character;if(0===u)return u;return 42===t.text.charCodeAt(s+l)?u-1:u}(n,r,i,_);if(!c)return a(i);if(e.isStringOrRegularExpressionOrTemplateLiteral(c.kind)&&c.getStart(n)<=r&&r<c.end)return 0;var d=n.getLineAndCharacterOfPosition(r).line;if(i.indentStyle===e.IndentStyle.Block)return function(t,r,n){var i=r;for(;i>0;){var a=t.text.charCodeAt(i);if(!e.isWhiteSpaceLike(a))break;i--}return b(e.getLineStartPositionForPosition(i,t),i,t,n)}(n,r,i);if(27===c.kind&&208!==c.parent.kind){var p=function(t,r,n){var i=e.findListItemInfo(t);return i&&i.listItemIndex>0?y(i.list.getChildren(),i.listItemIndex-1,r,n):-1}(c,n,i);if(-1!==p)return p}var h=function(e,t,r){return t&&f(e,e,t,r)}(r,c.parent,n);return h&&!e.rangeContainsRange(h,c)?m(h,n,i)+i.indentSize:function(t,r,n,i,s,c){var _,d=n;for(;d;){if(e.positionBelongsToNode(d,r,t)&&D(c,d,_,t,!0)){var p=l(d,t),f=u(n,d,i,t),m=0!==f?s&&2===f?c.indentSize:0:i!==p.line?c.indentSize:0;return o(d,p,void 0,m,t,!0,c)}var y=g(d,t,c,!0);if(-1!==y)return y;_=d,d=d.parent}return a(c)}(n,r,c,d,s,i)},r.getIndentationForNode=function(e,t,r,n){var i=r.getLineAndCharacterOfPosition(e.getStart(r));return o(e,i,t,0,r,!1,n)},r.getBaseIndentation=a,function(e){e[e.Unknown=0]="Unknown",e[e.OpenBrace=1]="OpenBrace",e[e.CloseBrace=2]="CloseBrace"}(i||(i={})),r.isArgumentAndStartLineOverlapsExpressionBeingCalled=_,r.childStartsOnTheSameLineWithElseInIfStatement=d,r.argumentStartsOnSameLineAsPreviousArgument=function(t,r,n,i){if(e.isCallOrNewExpression(t)){if(!t.arguments)return!1;var a=e.find(t.arguments,(function(e){return e.pos===r.pos}));if(!a)return!1;var o=t.arguments.indexOf(a);if(0===o)return!1;var s=t.arguments[o-1];if(n===e.getLineAndCharacterOfPosition(i,s.getEnd()).line)return!0}return!1},r.getContainingList=p,r.findFirstNonWhitespaceCharacterAndColumn=v,r.findFirstNonWhitespaceColumn=b,r.nodeWillIndentChild=x,r.shouldIndentChildNode=D}(t.SmartIndenter||(t.SmartIndenter={}))}(e.formatting||(e.formatting={}))}(s||(s={})),function(e){!function(n){function i(t){var r=t.__pos;return e.Debug.assert("number"==typeof r),r}function a(t,r){e.Debug.assert("number"==typeof r),t.__pos=r}function o(t){var r=t.__end;return e.Debug.assert("number"==typeof r),r}function s(t,r){e.Debug.assert("number"==typeof r),t.__end=r}var c,u;function l(t,r){return e.skipTrivia(t,r,!1,!0)}!function(e){e[e.Exclude=0]="Exclude",e[e.IncludeAll=1]="IncludeAll"}(c=n.LeadingTriviaOption||(n.LeadingTriviaOption={})),function(e){e[e.Exclude=0]="Exclude",e[e.Include=1]="Include"}(u=n.TrailingTriviaOption||(n.TrailingTriviaOption={}));var _,d={leadingTriviaOption:c.Exclude,trailingTriviaOption:u.Exclude};function p(e,t,r,n){return{pos:f(e,t,n),end:m(e,r,n)}}function f(t,r,n){var i=n.leadingTriviaOption;if(i===c.Exclude)return r.getStart(t);var a=r.getFullStart(),o=r.getStart(t);if(a===o)return o;var s=e.getLineStartPositionForPosition(a,t);if(e.getLineStartPositionForPosition(o,t)===s)return i===c.IncludeAll?a:o;var u=a>0?1:0,_=e.getStartPositionOfLine(e.getLineOfLocalPosition(t,s)+u,t);return _=l(t.text,_),e.getStartPositionOfLine(e.getLineOfLocalPosition(t,_),t)}function m(t,r,n){var i=r.end,a=n.trailingTriviaOption;if(a===u.Exclude||e.isExpression(r)&&a!==u.Include)return i;var o=e.skipTrivia(t.text,i,!0);return o===i||a!==u.Include&&!e.isLineBreak(t.text.charCodeAt(o-1))?i:o}function g(e,t){return!!t&&!!e.parent&&(27===t.kind||26===t.kind&&192===e.parent.kind)}!function(e){e[e.Remove=0]="Remove",e[e.ReplaceWithSingleNode=1]="ReplaceWithSingleNode",e[e.ReplaceWithMultipleNodes=2]="ReplaceWithMultipleNodes",e[e.Text=3]="Text"}(_||(_={})),n.isThisTypeAnnotatable=function(t){return e.isFunctionExpression(t)||e.isFunctionDeclaration(t)};var y,h,v=function(){function n(t,r){this.newLineCharacter=t,this.formatContext=r,this.changes=[],this.newFiles=[],this.classesWithNodesInsertedAtStart=e.createMap(),this.deletedNodes=[]}return n.fromContext=function(t){return new n(e.getNewLineOrDefaultFromHost(t.host,t.formatContext.options),t.formatContext)},n.with=function(e,t){var r=n.fromContext(e);return t(r),r.getChanges()},n.prototype.pushRaw=function(t,r){e.Debug.assertEqual(t.fileName,r.fileName);for(var n=0,i=r.textChanges;n<i.length;n++){var a=i[n];this.changes.push({kind:_.Text,sourceFile:t,text:a.newText,range:e.createTextRangeFromSpan(a.span)})}},n.prototype.deleteRange=function(e,t){this.changes.push({kind:_.Remove,sourceFile:e,range:t})},n.prototype.delete=function(e,t){this.deletedNodes.push({sourceFile:e,node:t})},n.prototype.deleteModifier=function(t,r){this.deleteRange(t,{pos:r.getStart(t),end:e.skipTrivia(t.text,r.end,!0)})},n.prototype.deleteNodeRange=function(e,t,r,n){void 0===n&&(n={leadingTriviaOption:c.IncludeAll});var i=f(e,t,n),a=m(e,r,n);this.deleteRange(e,{pos:i,end:a})},n.prototype.deleteNodeRangeExcludingEnd=function(e,t,r,n){void 0===n&&(n={leadingTriviaOption:c.IncludeAll});var i=f(e,t,n),a=void 0===r?e.text.length:f(e,r,n);this.deleteRange(e,{pos:i,end:a})},n.prototype.replaceRange=function(e,t,r,n){void 0===n&&(n={}),this.changes.push({kind:_.ReplaceWithSingleNode,sourceFile:e,range:t,options:n,node:r})},n.prototype.replaceNode=function(e,t,r,n){void 0===n&&(n=d),this.replaceRange(e,p(e,t,t,n),r,n)},n.prototype.replaceNodeRange=function(e,t,r,n,i){void 0===i&&(i=d),this.replaceRange(e,p(e,t,r,i),n,i)},n.prototype.replaceRangeWithNodes=function(e,t,r,n){void 0===n&&(n={}),this.changes.push({kind:_.ReplaceWithMultipleNodes,sourceFile:e,range:t,options:n,nodes:r})},n.prototype.replaceNodeWithNodes=function(e,t,r,n){void 0===n&&(n=d),this.replaceRangeWithNodes(e,p(e,t,t,n),r,n)},n.prototype.replaceNodeWithText=function(e,t,r){this.replaceRangeWithText(e,p(e,t,t,d),r)},n.prototype.replaceNodeRangeWithNodes=function(e,t,r,n,i){void 0===i&&(i=d),this.replaceRangeWithNodes(e,p(e,t,r,i),n,i)},n.prototype.nextCommaToken=function(t,r){var n=e.findNextToken(r,r.parent,t);return n&&27===n.kind?n:void 0},n.prototype.replacePropertyAssignment=function(e,t,r){var n=this.nextCommaToken(e,t)?"":","+this.newLineCharacter;this.replaceNode(e,t,r,{suffix:n})},n.prototype.insertNodeAt=function(t,r,n,i){void 0===i&&(i={}),this.replaceRange(t,e.createRange(r),n,i)},n.prototype.insertNodesAt=function(t,r,n,i){void 0===i&&(i={}),this.replaceRangeWithNodes(t,e.createRange(r),n,i)},n.prototype.insertNodeAtTopOfFile=function(t,r,n){var i=function(t){for(var r,n=0,i=t.statements;n<i.length;n++){var a=i[n];if(!e.isPrologueDirective(a))break;r=a}var o=0,s=t.text;if(r)return o=r.end,p(),o;var c=e.getShebang(s);void 0!==c&&(o=c.length,p());var u=e.getLeadingCommentRanges(s,o);if(!u)return o;u.length&&3===u[0].kind&&e.isPinnedComment(s,u[0].pos)&&(o=u[0].end,p(),u=u.slice(1));for(var l=0,_=u;l<_.length;l++){var d=_[l];if(2!==d.kind||!e.isRecognizedTripleSlashComment(s,d.pos,d.end))break;o=d.end,p()}return o;function p(){if(o<s.length){var t=s.charCodeAt(o);e.isLineBreak(t)&&++o<s.length&&13===t&&10===s.charCodeAt(o)&&o++}}}(t);this.insertNodeAt(t,i,r,{prefix:0===i?void 0:this.newLineCharacter,suffix:(e.isLineBreak(t.text.charCodeAt(i))?"":this.newLineCharacter)+(n?this.newLineCharacter:"")})},n.prototype.insertNodeBefore=function(e,t,r,n){void 0===n&&(n=!1),this.insertNodeAt(e,f(e,t,{}),r,this.getOptionsForInsertNodeBefore(t,n))},n.prototype.insertModifierBefore=function(t,r,n){var i=n.getStart(t);this.insertNodeAt(t,i,e.createToken(r),{suffix:" "})},n.prototype.insertLastModifierBefore=function(t,r,n){if(n.modifiers){var i=n.modifiers.end;this.insertNodeAt(t,i,e.createToken(r),{prefix:" "})}else this.insertModifierBefore(t,r,n)},n.prototype.insertCommentBeforeLine=function(t,r,n,i){var a=e.getStartPositionOfLine(r,t),o=e.getFirstNonSpaceCharacterPosition(t.text,a),s=C(t,o),c=e.getTouchingToken(t,s?o:n),u=t.text.slice(a,o),l=(s?"":this.newLineCharacter)+"//"+i+this.newLineCharacter+u;this.insertText(t,c.getStart(t),l)},n.prototype.insertJsdocCommentBefore=function(t,r,n){var i=r.getStart(t);if(r.jsDoc)for(var a=0,o=r.jsDoc;a<o.length;a++){var s=o[a];this.deleteRange(t,{pos:e.getLineStartPositionForPosition(s.getStart(t),t),end:m(t,s,{})})}var c=e.getPrecedingNonSpaceCharacterPosition(t.text,i-1),u=t.text.slice(c,i);this.insertNodeAt(t,i,n,{preserveLeadingWhitespace:!1,suffix:this.newLineCharacter+u})},n.prototype.replaceRangeWithText=function(e,t,r){this.changes.push({kind:_.Text,sourceFile:e,range:t,text:r})},n.prototype.insertText=function(t,r,n){this.replaceRangeWithText(t,e.createRange(r),n)},n.prototype.tryInsertTypeAnnotation=function(t,r,n){var i;if(e.isFunctionLike(r)){if(!(i=e.findChildOfKind(r,21,t))){if(!e.isArrowFunction(r))return!1;i=e.first(r.parameters)}}else i=241!==r.kind&&r.questionToken?r.questionToken:r.name;return this.insertNodeAt(t,i.end,n,{prefix:": "}),!0},n.prototype.tryInsertThisTypeAnnotation=function(t,r,n){var i=e.findChildOfKind(r,20,t).getStart(t)+1,a=r.parameters.length?", ":"";this.insertNodeAt(t,i,n,{prefix:"this: ",suffix:a})},n.prototype.insertTypeParameters=function(t,r,n){var i=(e.findChildOfKind(r,20,t)||e.first(r.parameters)).getStart(t);this.insertNodesAt(t,i,n,{prefix:"<",suffix:">"})},n.prototype.getOptionsForInsertNodeBefore=function(t,r){return e.isStatement(t)||e.isClassElement(t)?{suffix:r?this.newLineCharacter+this.newLineCharacter:this.newLineCharacter}:e.isVariableDeclaration(t)?{suffix:", "}:e.isParameter(t)?{}:e.isStringLiteral(t)&&e.isImportDeclaration(t.parent)||e.isNamedImports(t)?{suffix:", "}:e.Debug.failBadSyntaxKind(t)},n.prototype.insertNodeAtConstructorStart=function(r,n,i){var a=e.firstOrUndefined(n.body.statements);a&&n.body.multiLine?this.insertNodeBefore(r,a,i):this.replaceConstructorBody(r,n,t([i],n.body.statements))},n.prototype.insertNodeAtConstructorEnd=function(r,n,i){var a=e.lastOrUndefined(n.body.statements);a&&n.body.multiLine?this.insertNodeAfter(r,a,i):this.replaceConstructorBody(r,n,t(n.body.statements,[i]))},n.prototype.replaceConstructorBody=function(t,r,n){this.replaceNode(t,r.body,e.createBlock(n,!0))},n.prototype.insertNodeAtEndOfScope=function(t,r,n){var i=f(t,r.getLastToken(),{});this.insertNodeAt(t,i,n,{prefix:e.isLineBreak(t.text.charCodeAt(r.getLastToken().pos))?this.newLineCharacter:this.newLineCharacter+this.newLineCharacter,suffix:this.newLineCharacter})},n.prototype.insertNodeAtClassStart=function(e,t,r){this.insertNodeAtStartWorker(e,t,r)},n.prototype.insertNodeAtObjectStart=function(e,t,r){this.insertNodeAtStartWorker(e,t,r)},n.prototype.insertNodeAtStartWorker=function(t,n,i){var a=n.getStart(t),o=e.formatting.SmartIndenter.findFirstNonWhitespaceColumn(e.getLineStartPositionForPosition(a,t),a,t,this.formatContext.options)+this.formatContext.options.indentSize;this.insertNodeAt(t,D(n).pos,i,r({indentation:o},this.getInsertNodeAtStartPrefixSuffix(t,n)))},n.prototype.getInsertNodeAtStartPrefixSuffix=function(r,n){var i=e.isObjectLiteralExpression(n)?",":"";if(0===D(n).length){if(e.addToSeen(this.classesWithNodesInsertedAtStart,e.getNodeId(n),{node:n,sourceFile:r})){var a=e.positionsAreOnSameLine.apply(void 0,t(x(n,r),[r]));return{prefix:this.newLineCharacter,suffix:i+(a?this.newLineCharacter:"")}}return{prefix:"",suffix:i+this.newLineCharacter}}return{prefix:this.newLineCharacter,suffix:i}},n.prototype.insertNodeAfterComma=function(e,t,r){var n=this.insertNodeAfterWorker(e,this.nextCommaToken(e,t)||t,r);this.insertNodeAt(e,n,r,this.getInsertNodeAfterOptions(e,t))},n.prototype.insertNodeAfter=function(e,t,r){var n=this.insertNodeAfterWorker(e,t,r);this.insertNodeAt(e,n,r,this.getInsertNodeAfterOptions(e,t))},n.prototype.insertNodeAtEndOfList=function(e,t,r){this.insertNodeAt(e,t.end,r,{prefix:", "})},n.prototype.insertNodesAfter=function(t,r,n){var i=this.insertNodeAfterWorker(t,r,e.first(n));this.insertNodesAt(t,i,n,this.getInsertNodeAfterOptions(t,r))},n.prototype.insertNodeAfterWorker=function(t,r,n){var i,a;return i=r,a=n,((e.isPropertySignature(i)||e.isPropertyDeclaration(i))&&e.isClassOrTypeElement(a)&&153===a.name.kind||e.isStatementButNotDeclaration(i)&&e.isStatementButNotDeclaration(a))&&59!==t.text.charCodeAt(r.end-1)&&this.replaceRange(t,e.createRange(r.end),e.createToken(26)),m(t,r,{})},n.prototype.getInsertNodeAfterOptions=function(t,n){var i=this.getInsertNodeAfterOptionsWorker(n);return r(r({},i),{prefix:n.end===t.end&&e.isStatement(n)?i.prefix?"\n"+i.prefix:"\n":i.prefix})},n.prototype.getInsertNodeAfterOptionsWorker=function(t){switch(t.kind){case 244:case 248:return{prefix:this.newLineCharacter,suffix:this.newLineCharacter};case 241:case 10:case 75:return{prefix:", "};case 279:return{suffix:","+this.newLineCharacter};case 88:return{prefix:" "};case 155:return{};default:return e.Debug.assert(e.isStatement(t)||e.isClassOrTypeElement(t)),{suffix:this.newLineCharacter}}},n.prototype.insertName=function(t,r,n){if(e.Debug.assert(!r.name),201===r.kind){var i=e.findChildOfKind(r,38,t),a=e.findChildOfKind(r,20,t);a?(this.insertNodesAt(t,a.getStart(t),[e.createToken(93),e.createIdentifier(n)],{joiner:" "}),k(this,t,i)):(this.insertText(t,e.first(r.parameters).getStart(t),"function "+n+"("),this.replaceRange(t,i,e.createToken(21))),222!==r.body.kind&&(this.insertNodesAt(t,r.body.getStart(t),[e.createToken(18),e.createToken(100)],{joiner:" ",suffix:" "}),this.insertNodesAt(t,r.body.end,[e.createToken(26),e.createToken(19)],{joiner:" "}))}else{var o=e.findChildOfKind(r,200===r.kind?93:79,t).end;this.insertNodeAt(t,o,e.createIdentifier(n),{prefix:" "})}},n.prototype.insertExportModifier=function(e,t){this.insertText(e,t.getStart(e),"export ")},n.prototype.insertNodeInListAfter=function(t,r,n,i){if(void 0===i&&(i=e.formatting.SmartIndenter.getContainingList(r,t)),i){var a=e.indexOfNode(i,r);if(!(a<0)){var o=r.getEnd();if(a!==i.length-1){var s=e.getTokenAtPosition(t,r.end);if(s&&g(r,s)){var c=e.getLineAndCharacterOfPosition(t,l(t.text,i[a+1].getFullStart())),u=e.getLineAndCharacterOfPosition(t,s.end),_=void 0,d=void 0;u.line===c.line?(d=s.end,_=function(e){for(var t="",r=0;r<e;r++)t+=" ";return t}(c.character-u.character)):d=e.getStartPositionOfLine(c.line,t);var p=""+e.tokenToString(s.kind)+t.text.substring(s.end,i[a+1].getStart(t));this.replaceRange(t,e.createRange(d,i[a+1].getStart(t)),n,{prefix:_,suffix:p})}}else{var f=r.getStart(t),m=e.getLineStartPositionForPosition(f,t),y=void 0,h=!1;if(1===i.length)y=27;else{var v=e.findPrecedingToken(r.pos,t);y=g(r,v)?v.kind:27,h=e.getLineStartPositionForPosition(i[a-1].getStart(t),t)!==m}if(function(t,r){for(var n=r;n<t.length;){var i=t.charCodeAt(n);if(!e.isWhiteSpaceSingleLine(i))return 47===i;n++}return!1}(t.text,r.end)&&(h=!0),h){this.replaceRange(t,e.createRange(o),e.createToken(y));var b=e.formatting.SmartIndenter.findFirstNonWhitespaceColumn(m,f,t,this.formatContext.options),x=e.skipTrivia(t.text,o,!0,!1);x!==o&&e.isLineBreak(t.text.charCodeAt(x-1))&&x--,this.replaceRange(t,e.createRange(x),n,{indentation:b,prefix:this.newLineCharacter})}else this.replaceRange(t,e.createRange(o),n,{prefix:e.tokenToString(y)+" "})}}}else e.Debug.fail("node is not a list element")},n.prototype.parenthesizeExpression=function(t,r){this.replaceRange(t,e.rangeOfNode(r),e.createParen(r))},n.prototype.finishClassesWithNodesInsertedAtStart=function(){var t=this;this.classesWithNodesInsertedAtStart.forEach((function(r){var n=r.node,i=r.sourceFile,a=x(n,i),o=a[0],s=a[1];e.positionsAreOnSameLine(o,s,i)&&o!==s-1&&t.deleteRange(i,e.createRange(o,s-1))}))},n.prototype.finishDeleteDeclarations=function(){for(var t=this,r=new e.NodeSet,n=function(t,n){i.deletedNodes.some((function(r){return r.sourceFile===t&&e.rangeContainsRangeExclusive(r.node,n)}))||(e.isArray(n)?i.deleteRange(t,e.rangeOfTypeParameters(n)):h.deleteDeclaration(i,r,t,n))},i=this,a=0,o=this.deletedNodes;a<o.length;a++){var s=o[a];n(s.sourceFile,s.node)}r.forEach((function(n){var i=n.getSourceFile(),a=e.formatting.SmartIndenter.getContainingList(n,i);if(n===e.last(a)){var o=e.findLastIndex(a,(function(e){return!r.has(e)}),a.length-2);-1!==o&&t.deleteRange(i,{pos:a[o].end,end:b(i,a[o+1])})}}))},n.prototype.getChanges=function(e){this.finishDeleteDeclarations(),this.finishClassesWithNodesInsertedAtStart();for(var t=y.getTextChangesFromChanges(this.changes,this.newLineCharacter,this.formatContext,e),r=0,n=this.newFiles;r<n.length;r++){var i=n[r],a=i.oldFile,o=i.fileName,s=i.statements;t.push(y.newFileChanges(a,o,s,this.newLineCharacter,this.formatContext))}return t},n.prototype.createNewFile=function(e,t,r){this.newFiles.push({oldFile:e,fileName:t,statements:r})},n}();function b(t,r){return e.skipTrivia(t.text,f(t,r,{leadingTriviaOption:c.IncludeAll}),!1,!0)}function x(t,r){return[e.findChildOfKind(t,18,r).end,e.findChildOfKind(t,19,r).end]}function D(t){return e.isObjectLiteralExpression(t)?t.properties:t.members}function S(t,r){for(var n=r.length-1;n>=0;n--){var i=r[n],a=i.span,o=i.newText;t=""+t.substring(0,a.start)+o+t.substring(e.textSpanEnd(a))}return t}function T(t){var r=e.visitEachChild(t,T,e.nullTransformationContext,E,T),n=e.nodeIsSynthesized(r)?r:Object.create(r);return n.pos=i(t),n.end=o(t),n}function E(t,r,n,a,s){var c=e.visitNodes(t,r,n,a,s);if(!c)return c;var u=c===t?e.createNodeArray(c.slice(0)):c;return u.pos=i(t),u.end=o(t),u}function C(t,r){return!(e.isInComment(t,r)||e.isInString(t,r)||e.isInTemplateString(t,r)||e.isInJSXText(t,r))}function k(e,t,r,n){void 0===n&&(n={leadingTriviaOption:c.IncludeAll});var i=f(t,r,n),a=m(t,r,n);e.deleteRange(t,{pos:i,end:a})}function N(t,r,n,i){var a=e.Debug.assertDefined(e.formatting.SmartIndenter.getContainingList(i,n)),o=e.indexOfNode(a,i);e.Debug.assert(-1!==o),1!==a.length?(e.Debug.assert(!r.has(i),"Deleting a node twice"),r.add(i),t.deleteRange(n,{pos:b(n,i),end:o===a.length-1?m(n,i,{}):b(n,a[o+1])})):k(t,n,i)}n.ChangeTracker=v,n.getNewFileText=function(e,t,r,n){return y.newFileChangesWorker(void 0,t,e,r,n)},function(t){function n(t,r,n,a,o){var s=n.map((function(e){return i(e,t,a).text})).join(a),c=e.createSourceFile("any file name",s,99,!0,r);return S(s,e.formatting.formatDocument(c,o))+a}function i(t,r,n){var i=function(t){var r=0,n=e.createTextWriter(t);function i(t,i){if(i||!function(t){return e.skipTrivia(t,0)===t.length}(t)){r=n.getTextPos();for(var a=0;e.isWhiteSpaceLike(t.charCodeAt(t.length-a-1));)a++;r-=a}}return{onEmitNode:function(e,t,n){t&&a(t,r),n(e,t),t&&s(t,r)},onBeforeEmitNodeArray:function(e){e&&a(e,r)},onAfterEmitNodeArray:function(e){e&&s(e,r)},onBeforeEmitToken:function(e){e&&a(e,r)},onAfterEmitToken:function(e){e&&s(e,r)},write:function(e){n.write(e),i(e,!1)},writeComment:function(e){n.writeComment(e)},writeKeyword:function(e){n.writeKeyword(e),i(e,!1)},writeOperator:function(e){n.writeOperator(e),i(e,!1)},writePunctuation:function(e){n.writePunctuation(e),i(e,!1)},writeTrailingSemicolon:function(e){n.writeTrailingSemicolon(e),i(e,!1)},writeParameter:function(e){n.writeParameter(e),i(e,!1)},writeProperty:function(e){n.writeProperty(e),i(e,!1)},writeSpace:function(e){n.writeSpace(e),i(e,!1)},writeStringLiteral:function(e){n.writeStringLiteral(e),i(e,!1)},writeSymbol:function(e,t){n.writeSymbol(e,t),i(e,!1)},writeLine:function(){n.writeLine()},increaseIndent:function(){n.increaseIndent()},decreaseIndent:function(){n.decreaseIndent()},getText:function(){return n.getText()},rawWrite:function(e){n.rawWrite(e),i(e,!1)},writeLiteral:function(e){n.writeLiteral(e),i(e,!0)},getTextPos:function(){return n.getTextPos()},getLine:function(){return n.getLine()},getColumn:function(){return n.getColumn()},getIndent:function(){return n.getIndent()},isAtStartOfLine:function(){return n.isAtStartOfLine()},hasTrailingComment:function(){return n.hasTrailingComment()},hasTrailingWhitespace:function(){return n.hasTrailingWhitespace()},clear:function(){n.clear(),r=0}}}(n),o="\n"===n?1:0;return e.createPrinter({newLine:o,neverAsciiEscape:!0},i).writeNode(4,t,r,i),{text:i.getText(),node:T(t)}}t.getTextChangesFromChanges=function(t,n,a,o){return e.group(t,(function(e){return e.sourceFile.path})).map((function(t){for(var s=t[0].sourceFile,c=e.stableSort(t,(function(e,t){return e.range.pos-t.range.pos||e.range.end-t.range.end})),u=function(t){e.Debug.assert(c[t].range.end<=c[t+1].range.pos,"Changes overlap",(function(){return JSON.stringify(c[t].range)+" and "+JSON.stringify(c[t+1].range)}))},l=0;l<c.length-1;l++)u(l);var d=c.map((function(t){return e.createTextChange(e.createTextSpanFromRange(t.range),function(t,n,a,o,s){if(t.kind===_.Remove)return"";if(t.kind===_.Text)return t.text;var c=t.options,u=void 0===c?{}:c,l=t.range.pos,d=function(t){return function(t,n,a,o,s,c,u){var l=o.indentation,_=o.prefix,d=o.delta,p=i(t,n,s),f=p.node,m=p.text;u&&u(f,m);var g=function(t,n){var i=t.options,a=!i.semicolons||i.semicolons===e.SemicolonPreference.Ignore,o=i.semicolons===e.SemicolonPreference.Remove||a&&!e.probablyUsesSemicolons(n);return r(r({},i),{semicolons:o?e.SemicolonPreference.Remove:e.SemicolonPreference.Ignore})}(c,n),y=void 0!==l?l:e.formatting.SmartIndenter.getIndentation(a,n,g,_===s||e.getLineStartPositionForPosition(a,n)===a);void 0===d&&(d=e.formatting.SmartIndenter.shouldIndentChildNode(g,t)&&g.indentSize||0);var h={text:m,getLineAndCharacterOfPosition:function(t){return e.getLineAndCharacterOfPosition(this,t)}},v=e.formatting.formatNodeGivenIndentation(f,h,n.languageVariant,y,d,r(r({},c),{options:g}));return S(m,v)}(t,n,l,u,a,o,s)},p=t.kind===_.ReplaceWithMultipleNodes?t.nodes.map((function(t){return e.removeSuffix(d(t),a)})).join(t.options.joiner||a):d(t.node),f=u.preserveLeadingWhitespace||void 0!==u.indentation||e.getLineStartPositionForPosition(l,n)===l?p:p.replace(/^\s+/,"");return(u.prefix||"")+f+(u.suffix||"")}(t,s,n,a,o))}));return{fileName:s.fileName,textChanges:d}}))},t.newFileChanges=function(t,r,i,a,o){var s=n(t,e.getScriptKindFromFileName(r),i,a,o);return{fileName:r,textChanges:[e.createTextChange(e.createTextSpan(0,0),s)],isNewFile:!0}},t.newFileChangesWorker=n,t.getNonformattedText=i}(y||(y={})),n.applyChanges=S,n.isValidLocationToAddComment=C,function(t){function r(t,r,n){if(n.parent.name){var i=e.Debug.assertDefined(e.getTokenAtPosition(r,n.pos-1));t.deleteRange(r,{pos:i.getStart(r),end:n.end})}else{k(t,r,e.getAncestor(n,253))}}t.deleteDeclaration=function(t,n,i,a){switch(a.kind){case 155:var o=a.parent;e.isArrowFunction(o)&&1===o.parameters.length&&!e.findChildOfKind(o,20,i)?t.replaceNodeWithText(i,a,"()"):N(t,n,i,a);break;case 253:k(t,i,a,a===i.imports[0].parent?{leadingTriviaOption:c.Exclude}:void 0);break;case 190:var s=a.parent;189===s.kind&&a!==e.last(s.elements)?k(t,i,a):N(t,n,i,a);break;case 241:!function(t,r,n,i){var a=i.parent;if(278===a.kind)return void t.deleteNodeRange(n,e.findChildOfKind(a,20,n),e.findChildOfKind(a,21,n));if(1!==a.declarations.length)return void N(t,r,n,i);var o=a.parent;switch(o.kind){case 231:case 230:t.replaceNode(n,i,e.createObjectLiteral());break;case 229:k(t,n,a);break;case 224:k(t,n,o);break;default:e.Debug.assertNever(o)}}(t,n,i,a);break;case 154:N(t,n,i,a);break;case 257:var l=a.parent;1===l.elements.length?r(t,i,l):N(t,n,i,a);break;case 255:r(t,i,a);break;default:e.isImportClause(a.parent)&&a.parent.name===a?function(t,r,n){if(n.namedBindings){var i=n.name.getStart(r),a=e.getTokenAtPosition(r,n.name.end);if(a&&27===a.kind){var o=e.skipTrivia(r.text,a.end,!1,!0);t.deleteRange(r,{pos:i,end:o})}else k(t,r,n.name)}else k(t,r,n.parent)}(t,i,a.parent):e.isCallLikeExpression(a.parent)?N(t,n,i,a):k(t,i,a,26===a.kind?{trailingTriviaOption:u.Exclude}:void 0)}}}(h||(h={})),n.deleteNode=k}(e.textChanges||(e.textChanges={}))}(s||(s={})),function(e){!function(t){var r=e.createMultiMap(),n=e.createMap();function i(t){return e.isArray(t)?e.formatStringFromArgs(e.getLocaleSpecificMessage(t[0]),t.slice(1)):e.getLocaleSpecificMessage(t)}function a(e,t,r,n,i,a){return{fixName:e,description:t,changes:r,fixId:n,fixAllDescription:i,commands:a?[a]:void 0}}function o(e,t){return{changes:e,commands:t}}function s(t,r,n){for(var i=t.program,a=t.sourceFile,o=t.cancellationToken,s=0,c=i.getSemanticDiagnostics(a,o).concat(e.computeSuggestionDiagnostics(a,i,o));s<c.length;s++){var u=c[s];e.contains(r,u.code)&&n(u)}}t.createCodeFixActionNoFixId=function(e,t,r){return a(e,i(r),t,void 0,void 0)},t.createCodeFixAction=function(e,t,r,n,o,s){return a(e,i(r),t,n,i(o),s)},t.registerCodeFix=function(t){for(var i=0,a=t.errorCodes;i<a.length;i++){var o=a[i];r.add(String(o),t)}if(t.fixIds)for(var s=0,c=t.fixIds;s<c.length;s++){var u=c[s];e.Debug.assert(!n.has(u)),n.set(u,t)}},t.getSupportedErrorCodes=function(){return e.arrayFrom(r.keys())},t.getFixes=function(t){return e.flatMap(r.get(String(t.errorCode))||e.emptyArray,(function(e){return e.getCodeActions(t)}))},t.getAllFixes=function(t){return n.get(e.cast(t.fixId,e.isString)).getAllCodeActions(t)},t.createCombinedCodeActions=o,t.createFileTextChanges=function(e,t){return{fileName:e,textChanges:t}},t.codeFixAll=function(t,r,n){var i=[];return o(e.textChanges.ChangeTracker.with(t,(function(e){return s(t,r,(function(t){return n(e,t,i)}))})),0===i.length?void 0:i)},t.eachDiagnostic=s}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){var t,r;t=e.refactor||(e.refactor={}),r=e.createMap(),t.registerRefactor=function(e,t){r.set(e,t)},t.getApplicableRefactors=function(t){return e.arrayFrom(e.flatMapIterator(r.values(),(function(e){return t.cancellationToken&&t.cancellationToken.isCancellationRequested()?void 0:e.getAvailableActions(t)})))},t.getEditsForRefactor=function(e,t,n){var i=r.get(t);return i&&i.getEditsForAction(e,n)},e.getRefactorContextSpan=function(t){var r=t.startPosition,n=t.endPosition;return e.createTextSpanFromBounds(r,void 0===n?r:n)}}(s||(s={})),function(e){!function(t){var r="addConvertToUnknownForNonOverlappingTypes",n=[e.Diagnostics.Conversion_of_type_0_to_type_1_may_be_a_mistake_because_neither_type_sufficiently_overlaps_with_the_other_If_this_was_intentional_convert_the_expression_to_unknown_first.code];function i(t,r,n){var i=e.getTokenAtPosition(r,n),a=e.Debug.assertDefined(e.findAncestor(i,(function(t){return e.isAsExpression(t)||e.isTypeAssertion(t)})),"Expected to find an assertion expression"),o=e.isAsExpression(a)?e.createAsExpression(a.expression,e.createKeywordTypeNode(147)):e.createTypeAssertion(e.createKeywordTypeNode(147),a.expression);t.replaceNode(r,a.expression,o)}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var a=e.textChanges.ChangeTracker.with(n,(function(e){return i(e,n.sourceFile,n.span.start)}));return[t.createCodeFixAction(r,a,e.Diagnostics.Add_unknown_conversion_for_non_overlapping_types,r,e.Diagnostics.Add_unknown_to_all_conversions_of_non_overlapping_types)]},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(e,t){return i(e,t.file,t.start)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(r){var n="addMissingAwait",i=e.Diagnostics.Property_0_does_not_exist_on_type_1.code,a=[e.Diagnostics.This_expression_is_not_callable.code,e.Diagnostics.This_expression_is_not_constructable.code],o=t([e.Diagnostics.An_arithmetic_operand_must_be_of_type_any_number_bigint_or_an_enum_type.code,e.Diagnostics.The_left_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type.code,e.Diagnostics.The_right_hand_side_of_an_arithmetic_operation_must_be_of_type_any_number_bigint_or_an_enum_type.code,e.Diagnostics.Operator_0_cannot_be_applied_to_type_1.code,e.Diagnostics.Operator_0_cannot_be_applied_to_types_1_and_2.code,e.Diagnostics.This_condition_will_always_return_0_since_the_types_1_and_2_have_no_overlap.code,e.Diagnostics.Type_0_is_not_an_array_type.code,e.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type.code,e.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type_Use_compiler_option_downlevelIteration_to_allow_iterating_of_iterators.code,e.Diagnostics.Type_0_is_not_an_array_type_or_a_string_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator.code,e.Diagnostics.Type_0_is_not_an_array_type_or_does_not_have_a_Symbol_iterator_method_that_returns_an_iterator.code,e.Diagnostics.Type_0_must_have_a_Symbol_iterator_method_that_returns_an_iterator.code,e.Diagnostics.Type_0_must_have_a_Symbol_asyncIterator_method_that_returns_an_async_iterator.code,e.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code,i],a);function s(t,n,i,a,s,c){var u=t.sourceFile,d=t.program,p=t.cancellationToken,f=function(t,r,n,i,a){var s=function(t,r){if(e.isPropertyAccessExpression(t.parent)&&e.isIdentifier(t.parent.expression))return{identifiers:[t.parent.expression],isCompleteFix:!0};if(e.isIdentifier(t))return{identifiers:[t],isCompleteFix:!0};if(e.isBinaryExpression(t)){for(var n=void 0,i=!0,a=0,o=[t.left,t.right];a<o.length;a++){var s=o[a],c=r.getTypeAtLocation(s);if(r.getPromisedTypeOfPromise(c)){if(!e.isIdentifier(s)){i=!1;continue}(n||(n=[])).push(s)}}return n&&{identifiers:n,isCompleteFix:i}}}(t,a);if(!s)return;for(var c,u=s.isCompleteFix,_=function(t){var s=a.getSymbolAtLocation(t);if(!s)return"continue";var _=e.tryCast(s.valueDeclaration,e.isVariableDeclaration),d=_&&e.tryCast(_.name,e.isIdentifier),p=e.getAncestor(_,224);if(!_||!p||_.type||!_.initializer||p.getSourceFile()!==r||e.hasModifier(p,1)||!d||!l(_.initializer))return u=!1,"continue";var f=i.getSemanticDiagnostics(r,n);if(e.FindAllReferences.Core.eachSymbolReferenceInFile(d,a,r,(function(n){return t!==n&&!function(t,r,n,i){var a=e.isPropertyAccessExpression(t.parent)?t.parent.name:e.isBinaryExpression(t.parent)?t.parent:t,s=e.find(r,(function(e){return e.start===a.getStart(n)&&e.start+e.length===a.getEnd()}));return s&&e.contains(o,s.code)||1&i.getTypeAtLocation(a).flags}(n,f,r,a)})))return u=!1,"continue";(c||(c=[])).push({expression:_.initializer,declarationSymbol:s})},d=0,p=s.identifiers;d<p.length;d++){var f=p[d];_(f)}return c&&{initializers:c,needsSecondPassForFixAll:!u}}(n,u,p,d,a);if(f){var m=s((function(t){e.forEach(f.initializers,(function(e){var r=e.expression;return _(t,i,u,a,r,c)})),c&&f.needsSecondPassForFixAll&&_(t,i,u,a,n,c)}));return r.createCodeFixActionNoFixId("addMissingAwaitToInitializer",m,1===f.initializers.length?[e.Diagnostics.Add_await_to_initializer_for_0,f.initializers[0].declarationSymbol.name]:e.Diagnostics.Add_await_to_initializers)}}function c(t,i,a,o,s,c){var u=s((function(e){return _(e,a,t.sourceFile,o,i,c)}));return r.createCodeFixAction(n,u,e.Diagnostics.Add_await,n,e.Diagnostics.Fix_all_expressions_possibly_missing_await)}function u(t,r,n,i,a){var o=e.getTokenAtPosition(t,n.start),s=e.findAncestor(o,(function(r){return r.getStart(t)<n.start||r.getEnd()>e.textSpanEnd(n)?"quit":e.isExpression(r)&&e.textSpansEqual(n,e.createTextSpanFromNode(r,t))}));return s&&function(t,r,n,i,a){var o=a.getDiagnosticsProducingTypeChecker().getDiagnostics(t,i);return e.some(o,(function(t){var i=t.start,a=t.length,o=t.relatedInformation,s=t.code;return e.isNumber(i)&&e.isNumber(a)&&e.textSpansEqual({start:i,length:a},n)&&s===r&&!!o&&e.some(o,(function(t){return t.code===e.Diagnostics.Did_you_forget_to_use_await.code}))}))}(t,r,n,i,a)&&l(s)?s:void 0}function l(t){return 32768&t.kind||!!e.findAncestor(t,(function(t){return t.parent&&e.isArrowFunction(t.parent)&&t.parent.body===t||e.isBlock(t)&&(243===t.parent.kind||200===t.parent.kind||201===t.parent.kind||160===t.parent.kind)}))}function _(t,r,n,o,s,c){if(e.isBinaryExpression(s))for(var u=0,l=[s.left,s.right];u<l.length;u++){var _=l[u];if(c&&e.isIdentifier(_))if((f=o.getSymbolAtLocation(_))&&c.has(e.getSymbolId(f).toString()))continue;var d=o.getTypeAtLocation(_),p=o.getPromisedTypeOfPromise(d)?e.createAwait(_):_;t.replaceNode(n,_,p)}else if(r===i&&e.isPropertyAccessExpression(s.parent)){if(c&&e.isIdentifier(s.parent.expression))if((f=o.getSymbolAtLocation(s.parent.expression))&&c.has(e.getSymbolId(f).toString()))return;t.replaceNode(n,s.parent.expression,e.createParen(e.createAwait(s.parent.expression)))}else if(e.contains(a,r)&&e.isCallOrNewExpression(s.parent)){if(c&&e.isIdentifier(s))if((f=o.getSymbolAtLocation(s))&&c.has(e.getSymbolId(f).toString()))return;t.replaceNode(n,s,e.createParen(e.createAwait(s)))}else{var f;if(c&&e.isVariableDeclaration(s.parent)&&e.isIdentifier(s.parent.name))if((f=o.getSymbolAtLocation(s.parent.name))&&!e.addToSeen(c,e.getSymbolId(f)))return;t.replaceNode(n,s,e.createAwait(s))}}r.registerCodeFix({fixIds:[n],errorCodes:o,getCodeActions:function(t){var r=t.sourceFile,n=t.errorCode,i=u(r,n,t.span,t.cancellationToken,t.program);if(i){var a=t.program.getTypeChecker(),o=function(r){return e.textChanges.ChangeTracker.with(t,r)};return e.compact([s(t,i,n,a,o),c(t,i,n,a,o)])}},getAllCodeActions:function(t){var n=t.sourceFile,i=t.program,a=t.cancellationToken,l=t.program.getTypeChecker(),_=e.createMap();return r.codeFixAll(t,o,(function(e,r){var o=u(n,r.code,r,a,i);if(o){var d=function(t){return t(e),[]};return s(t,o,r.code,l,d,_)||c(t,o,r.code,l,d,_)}}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="addMissingConst",n=[e.Diagnostics.Cannot_find_name_0.code,e.Diagnostics.No_value_exists_in_scope_for_the_shorthand_property_0_Either_declare_one_or_provide_an_initializer.code];function i(t,r,n,i,o){var s=e.getTokenAtPosition(r,n),c=e.findAncestor(s,(function(t){return e.isForInOrOfStatement(t.parent)?t.parent.initializer===t:!function(e){switch(e.kind){case 75:case 191:case 192:case 279:case 280:return!0;default:return!1}}(t)&&"quit"}));if(c)return a(t,c,r,o);var u=s.parent;if(e.isBinaryExpression(u)&&e.isExpressionStatement(u.parent))return a(t,s,r,o);if(e.isArrayLiteralExpression(u)){var l=i.getTypeChecker();if(!e.every(u.elements,(function(t){return function(t,r){var n=e.isIdentifier(t)?t:e.isAssignmentExpression(t,!0)&&e.isIdentifier(t.left)?t.left:void 0;return!!n&&!r.getSymbolAtLocation(n)}(t,l)})))return;return a(t,u,r,o)}var _=e.findAncestor(s,(function(t){return!!e.isExpressionStatement(t.parent)||!function(e){switch(e.kind){case 75:case 208:case 27:return!0;default:return!1}}(t)&&"quit"}));if(_){if(!function t(r,n){if(!e.isBinaryExpression(r))return!1;if(27===r.operatorToken.kind)return e.every([r.left,r.right],(function(e){return t(e,n)}));return e.isIdentifier(r.left)&&!n.getSymbolAtLocation(r.left)}(_,i.getTypeChecker()))return;return a(t,_,r,o)}}function a(e,t,r,n){n&&!n.tryAdd(t)||e.insertModifierBefore(r,80,t)}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var a=e.textChanges.ChangeTracker.with(n,(function(e){return i(e,n.sourceFile,n.span.start,n.program)}));if(a.length>0)return[t.createCodeFixAction(r,a,e.Diagnostics.Add_const_to_unresolved_variable,r,e.Diagnostics.Add_const_to_all_unresolved_variables)]},fixIds:[r],getAllCodeActions:function(r){var a=new e.NodeSet;return t.codeFixAll(r,n,(function(e,t){return i(e,t.file,t.start,r.program,a)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="addMissingDeclareProperty",n=[e.Diagnostics.Property_0_will_overwrite_the_base_property_in_1_If_this_is_intentional_add_an_initializer_Otherwise_add_a_declare_modifier_or_remove_the_redundant_declaration.code];function i(t,r,n,i){var a=e.getTokenAtPosition(r,n);if(e.isIdentifier(a)){var o=a.parent;158!==o.kind||i&&!i.tryAdd(o)||t.insertModifierBefore(r,129,o)}}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var a=e.textChanges.ChangeTracker.with(n,(function(e){return i(e,n.sourceFile,n.span.start)}));if(a.length>0)return[t.createCodeFixAction(r,a,e.Diagnostics.Prefix_with_declare,r,e.Diagnostics.Prefix_all_incorrect_property_declarations_with_declare)]},fixIds:[r],getAllCodeActions:function(r){var a=new e.NodeSet;return t.codeFixAll(r,n,(function(e,t){return i(e,t.file,t.start,a)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="addMissingInvocationForDecorator",n=[e.Diagnostics._0_accepts_too_few_arguments_to_be_used_as_a_decorator_here_Did_you_mean_to_call_it_first_and_write_0.code];function i(t,r,n){var i=e.getTokenAtPosition(r,n),a=e.findAncestor(i,e.isDecorator);e.Debug.assert(!!a,"Expected position to be owned by a decorator.");var o=e.createCall(a.expression,void 0,void 0);t.replaceNode(r,a.expression,o)}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var a=e.textChanges.ChangeTracker.with(n,(function(e){return i(e,n.sourceFile,n.span.start)}));return[t.createCodeFixAction(r,a,e.Diagnostics.Call_decorator_expression,r,e.Diagnostics.Add_to_all_uncalled_decorators)]},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(e,t){return i(e,t.file,t.start)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="addNameToNamelessParameter",n=[e.Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1.code];function i(t,r,n){var i=e.getTokenAtPosition(r,n);if(!e.isIdentifier(i))return e.Debug.fail("add-name-to-nameless-parameter operates on identifiers, but got a "+e.Debug.formatSyntaxKind(i.kind));var a=i.parent;if(!e.isParameter(a))return e.Debug.fail("Tried to add a parameter name to a non-parameter: "+e.Debug.formatSyntaxKind(i.kind));var o=a.parent.parameters.indexOf(a);e.Debug.assert(!a.type,"Tried to add a parameter name to a parameter that already had one."),e.Debug.assert(o>-1,"Parameter not found in parent parameter list.");var s=e.createParameter(void 0,a.modifiers,a.dotDotDotToken,"arg"+o,a.questionToken,e.createTypeReferenceNode(i,void 0),a.initializer);t.replaceNode(r,i,s)}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var a=e.textChanges.ChangeTracker.with(n,(function(e){return i(e,n.sourceFile,n.span.start)}));return[t.createCodeFixAction(r,a,e.Diagnostics.Add_parameter_name,r,e.Diagnostics.Add_names_to_all_parameters_without_names)]},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(e,t){return i(e,t.file,t.start)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="annotateWithTypeFromJSDoc",n=[e.Diagnostics.JSDoc_types_may_be_moved_to_TypeScript_types.code];function i(t,r){var n=e.getTokenAtPosition(t,r);return e.tryCast(e.isParameter(n.parent)?n.parent.parent:n.parent,a)}function a(t){return function(t){return e.isFunctionLikeDeclaration(t)||241===t.kind||157===t.kind||158===t.kind}(t)&&o(t)}function o(t){return e.isFunctionLikeDeclaration(t)?t.parameters.some(o)||!t.type&&!!e.getJSDocReturnType(t):!t.type&&!!e.getJSDocType(t)}function s(t,r,n){if(e.isFunctionLikeDeclaration(n)&&(e.getJSDocReturnType(n)||n.parameters.some((function(t){return!!e.getJSDocType(t)})))){if(!n.typeParameters){var i=e.getJSDocTypeParameterDeclarations(n);i.length&&t.insertTypeParameters(r,n,i)}var a=e.isArrowFunction(n)&&!e.findChildOfKind(n,20,r);a&&t.insertNodeBefore(r,e.first(n.parameters),e.createToken(20));for(var o=0,s=n.parameters;o<s.length;o++){var u=s[o];if(!u.type){var l=e.getJSDocType(u);l&&t.tryInsertTypeAnnotation(r,u,c(l))}}if(a&&t.insertNodeAfter(r,e.last(n.parameters),e.createToken(21)),!n.type){var _=e.getJSDocReturnType(n);_&&t.tryInsertTypeAnnotation(r,n,c(_))}}else{var d=e.Debug.assertDefined(e.getJSDocType(n),"A JSDocType for this declaration should exist");e.Debug.assert(!n.type,"The JSDocType decl should have a type"),t.tryInsertTypeAnnotation(r,n,c(d))}}function c(t){switch(t.kind){case 293:case 294:return e.createTypeReferenceNode("any",e.emptyArray);case 297:return function(t){return e.createUnionTypeNode([e.visitNode(t.type,c),e.createTypeReferenceNode("undefined",e.emptyArray)])}(t);case 296:return c(t.type);case 295:return function(t){return e.createUnionTypeNode([e.visitNode(t.type,c),e.createTypeReferenceNode("null",e.emptyArray)])}(t);case 299:return function(t){return e.createArrayTypeNode(e.visitNode(t.type,c))}(t);case 298:return function(t){return e.createFunctionTypeNode(e.emptyArray,t.parameters.map(u),t.type)}(t);case 168:return function(t){var r=t.typeName,n=t.typeArguments;if(e.isIdentifier(t.typeName)){if(e.isJSDocIndexSignature(t))return function(t){var r=e.createParameter(void 0,void 0,void 0,139===t.typeArguments[0].kind?"n":"s",void 0,e.createTypeReferenceNode(139===t.typeArguments[0].kind?"number":"string",[]),void 0),n=e.createTypeLiteralNode([e.createIndexSignature(void 0,void 0,[r],t.typeArguments[1])]);return e.setEmitFlags(n,1),n}(t);var i=t.typeName.text;switch(t.typeName.text){case"String":case"Boolean":case"Object":case"Number":i=i.toLowerCase();break;case"array":case"date":case"promise":i=i[0].toUpperCase()+i.slice(1)}r=e.createIdentifier(i),n="Array"!==i&&"Promise"!==i||t.typeArguments?e.visitNodes(t.typeArguments,c):e.createNodeArray([e.createTypeReferenceNode("any",e.emptyArray)])}return e.createTypeReferenceNode(r,n)}(t);default:var r=e.visitEachChild(t,c,void 0);return e.setEmitFlags(r,1),r}}function u(t){var r=t.parent.parameters.indexOf(t),n=299===t.type.kind&&r===t.parent.parameters.length-1,i=t.name||(n?"rest":"arg"+r),a=n?e.createToken(25):t.dotDotDotToken;return e.createParameter(t.decorators,t.modifiers,a,i,t.questionToken,e.visitNode(t.type,c),t.initializer)}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var a=i(n.sourceFile,n.span.start);if(a){var o=e.textChanges.ChangeTracker.with(n,(function(e){return s(e,n.sourceFile,a)}));return[t.createCodeFixAction(r,o,e.Diagnostics.Annotate_with_type_from_JSDoc,r,e.Diagnostics.Annotate_everything_with_types_from_JSDoc)]}},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(e,t){var r=i(t.file,t.start);r&&s(e,t.file,r)}))}}),t.parameterShouldGetTypeFromJSDoc=a}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(r){var n="inferFromUsage",i=[e.Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined.code,e.Diagnostics.Variable_0_implicitly_has_an_1_type.code,e.Diagnostics.Parameter_0_implicitly_has_an_1_type.code,e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type.code,e.Diagnostics.Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation.code,e.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type.code,e.Diagnostics.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation.code,e.Diagnostics.Member_0_implicitly_has_an_1_type.code,e.Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_but_a_better_type_may_be_inferred_from_usage.code,e.Diagnostics.Variable_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code,e.Diagnostics.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code,e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage.code,e.Diagnostics.Property_0_implicitly_has_type_any_but_a_better_type_for_its_get_accessor_may_be_inferred_from_usage.code,e.Diagnostics._0_implicitly_has_an_1_return_type_but_a_better_type_may_be_inferred_from_usage.code,e.Diagnostics.Property_0_implicitly_has_type_any_but_a_better_type_for_its_set_accessor_may_be_inferred_from_usage.code,e.Diagnostics.Member_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code,e.Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code];function a(t,r){switch(t){case e.Diagnostics.Parameter_0_implicitly_has_an_1_type.code:case e.Diagnostics.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code:return e.isSetAccessorDeclaration(e.getContainingFunction(r))?e.Diagnostics.Infer_type_of_0_from_usage:e.Diagnostics.Infer_parameter_types_from_usage;case e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type.code:case e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage.code:return e.Diagnostics.Infer_parameter_types_from_usage;case e.Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code:return e.Diagnostics.Infer_this_type_of_0_from_usage;default:return e.Diagnostics.Infer_type_of_0_from_usage}}function o(t,r,n,i,a,o,d,g,y,h){if(e.isParameterPropertyModifier(n.kind)||75===n.kind||25===n.kind||103===n.kind){var v=n.parent;switch(i=function(t){switch(t){case e.Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_but_a_better_type_may_be_inferred_from_usage.code:return e.Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined.code;case e.Diagnostics.Variable_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code:return e.Diagnostics.Variable_0_implicitly_has_an_1_type.code;case e.Diagnostics.Parameter_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code:return e.Diagnostics.Parameter_0_implicitly_has_an_1_type.code;case e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type_but_a_better_type_may_be_inferred_from_usage.code:return e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type.code;case e.Diagnostics.Property_0_implicitly_has_type_any_but_a_better_type_for_its_get_accessor_may_be_inferred_from_usage.code:return e.Diagnostics.Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation.code;case e.Diagnostics._0_implicitly_has_an_1_return_type_but_a_better_type_may_be_inferred_from_usage.code:return e.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type.code;case e.Diagnostics.Property_0_implicitly_has_type_any_but_a_better_type_for_its_set_accessor_may_be_inferred_from_usage.code:return e.Diagnostics.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation.code;case e.Diagnostics.Member_0_implicitly_has_an_1_type_but_a_better_type_may_be_inferred_from_usage.code:return e.Diagnostics.Member_0_implicitly_has_an_1_type.code}return t}(i)){case e.Diagnostics.Member_0_implicitly_has_an_1_type.code:case e.Diagnostics.Variable_0_implicitly_has_type_1_in_some_locations_where_its_type_cannot_be_determined.code:if(e.isVariableDeclaration(v)&&d(v)||e.isPropertyDeclaration(v)||e.isPropertySignature(v))return s(t,r,v,a,g,o,y,h),v;if(e.isPropertyAccessExpression(v)){var b=p(v.name,a,o),x=e.getTypeNodeIfAccessible(b,v,a,g);if(x){var D=e.createJSDocTypeTag(e.createJSDocTypeExpression(x),"");_(t,r,e.cast(v.parent.parent,e.isExpressionStatement),[D])}return v}return;case e.Diagnostics.Variable_0_implicitly_has_an_1_type.code:var S=a.getTypeChecker().getSymbolAtLocation(n);return S&&S.valueDeclaration&&e.isVariableDeclaration(S.valueDeclaration)&&d(S.valueDeclaration)?(s(t,r,S.valueDeclaration,a,g,o,y,h),S.valueDeclaration):void 0}var T=e.getContainingFunction(n);if(void 0!==T)switch(i){case e.Diagnostics.Parameter_0_implicitly_has_an_1_type.code:if(e.isSetAccessorDeclaration(T))return c(t,r,T,a,g,o,y,h),T;case e.Diagnostics.Rest_parameter_0_implicitly_has_an_any_type.code:if(d(T)){var E=e.cast(v,e.isParameter);return function(t,r,n,i,a,o,s,c,_){if(!e.isIdentifier(n.name))return;var d=function(t,r,n,i){var a=f(t,r,n,i);return a&&m(n,a,i).parameters(t)||t.parameters.map((function(t){return{declaration:t,type:e.isIdentifier(t.name)?p(t.name,n,i):n.getTypeChecker().getAnyType()}}))}(i,r,a,s);if(e.Debug.assert(i.parameters.length===d.length,"Parameter count and inference count should match"),e.isInJSFile(i))l(t,r,d,a,o);else{var g=e.isArrowFunction(i)&&!e.findChildOfKind(i,20,r);g&&t.insertNodeBefore(r,e.first(i.parameters),e.createToken(20));for(var y=0,h=d;y<h.length;y++){var v=h[y],b=v.declaration,x=v.type;!b||b.type||b.initializer||u(t,r,b,x,a,o,c,_)}g&&t.insertNodeAfter(r,e.last(i.parameters),e.createToken(21))}}(t,r,E,T,a,g,o,y,h),E}return;case e.Diagnostics.Property_0_implicitly_has_type_any_because_its_get_accessor_lacks_a_return_type_annotation.code:case e.Diagnostics._0_which_lacks_return_type_annotation_implicitly_has_an_1_return_type.code:return e.isGetAccessorDeclaration(T)&&e.isIdentifier(T.name)?(u(t,r,T,p(T.name,a,o),a,g,y,h),T):void 0;case e.Diagnostics.Property_0_implicitly_has_type_any_because_its_set_accessor_lacks_a_parameter_type_annotation.code:return e.isSetAccessorDeclaration(T)?(c(t,r,T,a,g,o,y,h),T):void 0;case e.Diagnostics.this_implicitly_has_type_any_because_it_does_not_have_a_type_annotation.code:return e.textChanges.isThisTypeAnnotatable(T)&&d(T)?(function(t,r,n,i,a,o){var s=f(n,r,i,o);if(!s||!s.length)return;var c=m(i,s,o).thisParameter(),u=e.getTypeNodeIfAccessible(c,n,i,a);if(!u)return;e.isInJSFile(n)?function(t,r,n,i){_(t,r,n,[e.createJSDocThisTag(e.createJSDocTypeExpression(i))])}(t,r,n,u):t.tryInsertThisTypeAnnotation(r,n,u)}(t,r,T,a,g,o),T):void 0;default:return e.Debug.fail(String(i))}}}function s(t,r,n,i,a,o,s,c){e.isIdentifier(n.name)&&u(t,r,n,p(n.name,i,o),i,a,s,c)}function c(t,r,n,i,a,o,s,c){var _=e.firstOrUndefined(n.parameters);if(_&&e.isIdentifier(n.name)&&e.isIdentifier(_.name)){var d=p(n.name,i,o);d===i.getTypeChecker().getAnyType()&&(d=p(_.name,i,o)),e.isInJSFile(n)?l(t,r,[{declaration:_,type:d}],i,a):u(t,r,_,d,i,a,s,c)}}function u(t,n,i,a,o,s,c,u){var l=e.getTypeNodeIfAccessible(a,i,o,s);if(l)if(e.isInJSFile(n)&&157!==i.kind){var d=e.isVariableDeclaration(i)?e.tryCast(i.parent.parent,e.isVariableStatement):i;if(!d)return;var p=e.createJSDocTypeExpression(l);_(t,n,d,[e.isGetAccessorDeclaration(i)?e.createJSDocReturnTag(p,""):e.createJSDocTypeTag(p,"")])}else(function(t,n,i,a,o,s,c,u,l){var _;if(e.isLiteralImportTypeNode(t)&&t.qualifier&&o.symbol){var d=null===(_=e.find(o.symbol.declarations,(function(e){return!!e.getSourceFile().externalModuleIndicator})))||void 0===_?void 0:_.getSourceFile().symbol;if(d){var p=e.getFirstIdentifier(t.qualifier).symbol,f=r.getImportCompletionAction(p,d,i,p.name,c,s,u,a.pos,l);if(f.codeAction.changes.length&&n.tryInsertTypeAnnotation(i,a,e.createTypeReferenceNode(t.qualifier,t.typeArguments))){for(var m=0,g=f.codeAction.changes;m<g.length;m++){var y=g[m],h=i.fileName===y.fileName?i:e.Debug.assertDefined(s.getSourceFile(y.fileName));n.pushRaw(h,y)}return!0}}}return!1})(l,t,n,i,a,o,s,c,u)||t.tryInsertTypeAnnotation(n,i,l)}function l(t,r,n,i,a){var o=n.length&&n[0].declaration.parent;o&&_(t,r,o,e.mapDefined(n,(function(t){var r=t.declaration;if(!r.initializer&&!e.getJSDocType(r)&&e.isIdentifier(r.name)){var n=t.type&&e.getTypeNodeIfAccessible(t.type,r,i,a),o=e.getSynthesizedClone(r.name);return e.setEmitFlags(o,3584),n&&e.createJSDocParamTag(o,!!t.isOptional,e.createJSDocTypeExpression(n),"")}})))}function _(r,n,i,a){var o=e.mapDefined(i.jsDoc,(function(e){return e.comment})),s=e.flatMapToMutable(i.jsDoc,(function(e){return e.tags})),c=a.filter((function(t){return!s||!s.some((function(r,n){var i=function(t,r){if(t.kind!==r.kind)return;switch(t.kind){case 310:var n=t,i=r;return e.isIdentifier(n.name)&&e.isIdentifier(i.name)&&n.name.escapedText===i.name.escapedText?e.createJSDocParamTag(i.name,i.isBracketed,i.typeExpression,n.comment):void 0;case 311:return e.createJSDocReturnTag(r.typeExpression,t.comment)}}(r,t);return i&&(s[n]=i),!!i}))})),u=e.createJSDocComment(o.join("\n"),e.createNodeArray(t(s||e.emptyArray,c))),l=201===i.kind?function(e){if(158===e.parent.kind)return e.parent;return e.parent.parent}(i):i;l.jsDoc=i.jsDoc,l.jsDocCache=i.jsDocCache,r.insertJsdocCommentBefore(n,l,u)}function d(t,r,n){return e.mapDefined(e.FindAllReferences.getReferenceEntriesForNode(-1,t,r,r.getSourceFiles(),n),(function(t){return 0!==t.kind?e.tryCast(t.node,e.isIdentifier):void 0}))}function p(e,t,r){return m(t,d(e,t,r),r).single()}function f(t,r,n,i){var a;switch(t.kind){case 161:a=e.findChildOfKind(t,128,r);break;case 201:case 200:var o=t.parent;a=e.isVariableDeclaration(o)&&e.isIdentifier(o.name)?o.name:t.name;break;case 243:case 160:a=t.name}if(a)return d(a,n,i)}function m(r,n,i){var a=r.getTypeChecker(),o={string:function(){return a.getStringType()},number:function(){return a.getNumberType()},Array:function(e){return a.createArrayType(e)},Promise:function(e){return a.createPromiseType(e)}},s=[a.getStringType(),a.getNumberType(),a.createArrayType(a.getAnyType()),a.createPromiseType(a.getAnyType())];return{single:function(){return f(u(n))},parameters:function(o){if(0===n.length||!o.parameters)return;for(var s=c(),_=0,p=n;_<p.length;_++){var m=p[_];i.throwIfCancellationRequested(),l(m,s)}var g=t(s.constructs||[],s.calls||[]);return o.parameters.map((function(t,n){for(var s=[],c=e.isRestParameter(t),l=!1,_=0,p=g;_<p.length;_++){var m=p[_];if(m.argumentTypes.length<=n)l=e.isInJSFile(o),s.push(a.getUndefinedType());else if(c)for(var y=n;y<m.argumentTypes.length;y++)s.push(a.getBaseTypeOfLiteralType(m.argumentTypes[y]));else s.push(a.getBaseTypeOfLiteralType(m.argumentTypes[n]))}if(e.isIdentifier(t.name)){var h=u(d(t.name,r,i));s.push.apply(s,c?e.mapDefined(h,a.getElementTypeOfArrayType):h)}var v=f(s);return{type:c?a.createArrayType(v):v,isOptional:l&&!c,declaration:t}}))},thisParameter:function(){for(var t=c(),r=0,a=n;r<a.length;r++){var o=a[r];i.throwIfCancellationRequested(),l(o,t)}return f(t.candidateThisTypes||e.emptyArray)}};function c(){return{isNumber:void 0,isString:void 0,isNumberOrString:void 0,candidateTypes:void 0,properties:void 0,calls:void 0,constructs:void 0,numberIndex:void 0,stringIndex:void 0,candidateThisTypes:void 0,inferredTypes:void 0}}function u(e){for(var t={isNumber:void 0,isString:void 0,isNumberOrString:void 0,candidateTypes:void 0,properties:void 0,calls:void 0,constructs:void 0,numberIndex:void 0,stringIndex:void 0,candidateThisTypes:void 0,inferredTypes:void 0},r=0,n=e;r<n.length;r++){var a=n[r];i.throwIfCancellationRequested(),l(a,t)}return m(t)}function l(t,r){for(;e.isRightSideOfQualifiedNameOrPropertyAccess(t);)t=t.parent;switch(t.parent.kind){case 225:h(r,a.getVoidType());break;case 207:r.isNumber=!0;break;case 206:!function(e,t){switch(e.operator){case 45:case 46:case 40:case 54:t.isNumber=!0;break;case 39:t.isNumberOrString=!0}}(t.parent,r);break;case 208:!function(t,r,n){switch(r.operatorToken.kind){case 42:case 41:case 43:case 44:case 47:case 48:case 49:case 50:case 51:case 52:case 64:case 66:case 65:case 67:case 68:case 72:case 73:case 74:case 69:case 71:case 70:case 40:case 29:case 32:case 31:case 33:var i=a.getTypeAtLocation(r.left===t?r.right:r.left);1056&i.flags?h(n,i):n.isNumber=!0;break;case 63:case 39:var o=a.getTypeAtLocation(r.left===t?r.right:r.left);1056&o.flags?h(n,o):296&o.flags?n.isNumber=!0:132&o.flags?n.isString=!0:1&o.flags||(n.isNumberOrString=!0);break;case 62:case 34:case 36:case 37:case 35:h(n,a.getTypeAtLocation(r.left===t?r.right:r.left));break;case 96:t===r.left&&(n.isString=!0);break;case 56:case 60:t!==r.left||241!==t.parent.parent.kind&&!e.isAssignmentExpression(t.parent.parent,!0)||h(n,a.getTypeAtLocation(r.right))}}(t,t.parent,r);break;case 275:case 276:!function(e,t){h(t,a.getTypeAtLocation(e.parent.parent.expression))}(t.parent,r);break;case 195:case 196:t.parent.expression===t?function(e,t){var r={argumentTypes:[],return_:{isNumber:void 0,isString:void 0,isNumberOrString:void 0,candidateTypes:void 0,properties:void 0,calls:void 0,constructs:void 0,numberIndex:void 0,stringIndex:void 0,candidateThisTypes:void 0,inferredTypes:void 0}};if(e.arguments)for(var n=0,i=e.arguments;n<i.length;n++){var o=i[n];r.argumentTypes.push(a.getTypeAtLocation(o))}l(e,r.return_),195===e.kind?(t.calls||(t.calls=[])).push(r):(t.constructs||(t.constructs=[])).push(r)}(t.parent,r):_(t,r);break;case 193:!function(t,r){var n=e.escapeLeadingUnderscores(t.name.text);r.properties||(r.properties=e.createUnderscoreEscapedMap());var i=r.properties.get(n)||{isNumber:void 0,isString:void 0,isNumberOrString:void 0,candidateTypes:void 0,properties:void 0,calls:void 0,constructs:void 0,numberIndex:void 0,stringIndex:void 0,candidateThisTypes:void 0,inferredTypes:void 0};l(t,i),r.properties.set(n,i)}(t.parent,r);break;case 194:!function(e,t,r){if(t===e.argumentExpression)return void(r.isNumberOrString=!0);var n=a.getTypeAtLocation(e.argumentExpression),i={isNumber:void 0,isString:void 0,isNumberOrString:void 0,candidateTypes:void 0,properties:void 0,calls:void 0,constructs:void 0,numberIndex:void 0,stringIndex:void 0,candidateThisTypes:void 0,inferredTypes:void 0};l(e,i),296&n.flags?r.numberIndex=i:r.stringIndex=i}(t.parent,t,r);break;case 279:case 280:!function(t,r){var n=e.isVariableDeclaration(t.parent.parent)?t.parent.parent:t.parent;v(r,a.getTypeAtLocation(n))}(t.parent,r);break;case 158:!function(e,t){v(t,a.getTypeAtLocation(e.parent))}(t.parent,r);break;case 241:var n=t.parent,i=n.name,o=n.initializer;if(t===i){o&&h(r,a.getTypeAtLocation(o));break}default:return _(t,r)}}function _(t,r){e.isExpressionNode(t)&&h(r,a.getContextualType(t))}function p(e){return f(m(e))}function f(t){if(!t.length)return a.getAnyType();var r=a.getUnionType([a.getStringType(),a.getNumberType()]),n=function(t,r){for(var n=[],i=0,a=t;i<a.length;i++)for(var o=a[i],s=0,c=r;s<c.length;s++){var u=c[s],l=u.high,_=u.low;l(o)&&(e.Debug.assert(!_(o),"Priority can't have both low and high"),n.push(_))}return t.filter((function(e){return n.every((function(t){return!t(e)}))}))}(t,[{high:function(e){return e===a.getStringType()||e===a.getNumberType()},low:function(e){return e===r}},{high:function(e){return!(16385&e.flags)},low:function(e){return!!(16385&e.flags)}},{high:function(e){return!(114689&e.flags||16&a.getObjectFlags(e))},low:function(e){return!!(16&a.getObjectFlags(e))}}]),i=n.filter((function(e){return 16&a.getObjectFlags(e)}));return i.length&&(n=n.filter((function(e){return!(16&a.getObjectFlags(e))}))).push(function(t){if(1===t.length)return t[0];for(var r=[],n=[],i=[],o=[],s=!1,c=!1,u=e.createMultiMap(),l=0,_=t;l<_.length;l++){for(var d=_[l],p=0,f=a.getPropertiesOfType(d);p<f.length;p++){var m=f[p];u.add(m.name,a.getTypeOfSymbolAtLocation(m,m.valueDeclaration))}r.push.apply(r,a.getSignaturesOfType(d,0)),n.push.apply(n,a.getSignaturesOfType(d,1)),d.stringIndexInfo&&(i.push(d.stringIndexInfo.type),s=s||d.stringIndexInfo.isReadonly),d.numberIndexInfo&&(o.push(d.numberIndexInfo.type),c=c||d.numberIndexInfo.isReadonly)}var g=e.mapEntries(u,(function(e,r){var n=r.length<t.length?16777216:0,i=a.createSymbol(4|n,e);return i.type=a.getUnionType(r),[e,i]}));return a.createAnonymousType(t[0].symbol,g,r,n,i.length?a.createIndexInfo(a.getUnionType(i),s):void 0,o.length?a.createIndexInfo(a.getUnionType(o),c):void 0)}(i)),a.getWidenedType(a.getUnionType(n.map(a.getBaseTypeOfLiteralType),2))}function m(t){var r=[];return t.isNumber&&r.push(a.getNumberType()),t.isString&&r.push(a.getStringType()),t.isNumberOrString&&r.push(a.getUnionType([a.getStringType(),a.getNumberType()])),t.numberIndex&&r.push(a.createArrayType(p(t.numberIndex))),(t.properties&&t.properties.size||t.calls&&t.calls.length||t.constructs&&t.constructs.length||t.stringIndex)&&r.push(function(t){var r=e.createUnderscoreEscapedMap();t.properties&&t.properties.forEach((function(e,t){var n=a.createSymbol(4,t);n.type=p(e),r.set(t,n)}));var n=t.calls?[y(t.calls)]:[],i=t.constructs?[y(t.constructs)]:[],o=t.stringIndex&&a.createIndexInfo(p(t.stringIndex),!1);return a.createAnonymousType(void 0,r,n,i,o,void 0)}(t)),r.push.apply(r,(t.candidateTypes||[]).map((function(e){return a.getBaseTypeOfLiteralType(e)}))),r.push.apply(r,function(t){if(!t.properties||!t.properties.size)return[];var r=s.filter((function(r){return function(t,r){return!!r.properties&&!e.forEachEntry(r.properties,(function(r,n){var i,o=a.getTypeOfPropertyOfType(t,n);return!o||(r.calls?!a.getSignaturesOfType(o,0).length||!a.isTypeAssignableTo(o,(i=r.calls,a.createAnonymousType(void 0,e.createSymbolTable(),[y(i)],e.emptyArray,void 0,void 0))):!a.isTypeAssignableTo(o,p(r)))}))}(r,t)}));if(0<r.length&&r.length<3)return r.map((function(r){return function(t,r){if(!(4&e.getObjectFlags(t)&&r.properties))return t;var n=t.target,i=e.singleOrUndefined(n.typeParameters);if(!i)return t;var s=[];return r.properties.forEach((function(t,r){var o=a.getTypeOfPropertyOfType(n,r);e.Debug.assert(!!o,"generic should have all the properties of its reference."),s.push.apply(s,g(o,p(t),i))})),o[t.symbol.escapedName](f(s))}(r,t)}));return[]}(t)),r}function g(t,r,n){if(t===n)return[r];if(3145728&t.flags)return e.flatMap(t.types,(function(e){return g(e,r,n)}));if(4&e.getObjectFlags(t)&&4&e.getObjectFlags(r)){var i=a.getTypeArguments(t),o=a.getTypeArguments(r),s=[];if(i&&o)for(var c=0;c<i.length;c++)o[c]&&s.push.apply(s,g(i[c],o[c],n));return s}var u=a.getSignaturesOfType(t,0),l=a.getSignaturesOfType(r,0);return 1===u.length&&1===l.length?function(t,r,n){for(var i=[],o=0;o<t.parameters.length;o++){var s=t.parameters[o],c=r.parameters[o],u=t.declaration&&e.isRestParameter(t.declaration.parameters[o]);if(!c)break;var l=a.getTypeOfSymbolAtLocation(s,s.valueDeclaration),_=u&&a.getElementTypeOfArrayType(l);_&&(l=_);var d=c.type||a.getTypeOfSymbolAtLocation(c,c.valueDeclaration);i.push.apply(i,g(l,d,n))}var p=a.getReturnTypeOfSignature(t),f=a.getReturnTypeOfSignature(r);return i.push.apply(i,g(p,f,n)),i}(u[0],l[0],n):[]}function y(t){for(var r=[],n=Math.max.apply(Math,t.map((function(e){return e.argumentTypes.length}))),i=function(n){var i=a.createSymbol(1,e.escapeLeadingUnderscores("arg"+n));i.type=f(t.map((function(e){return e.argumentTypes[n]||a.getUndefinedType()}))),t.some((function(e){return void 0===e.argumentTypes[n]}))&&(i.flags|=16777216),r.push(i)},o=0;o<n;o++)i(o);var s=p(function t(r){for(var n=e.createUnderscoreEscapedMap(),i=0,a=r;i<a.length;i++){var o=a[i];o.properties&&o.properties.forEach((function(e,t){n.has(t)||n.set(t,[]),n.get(t).push(e)}))}var s=e.createUnderscoreEscapedMap();return n.forEach((function(e,r){s.set(r,t(e))})),{isNumber:r.some((function(e){return e.isNumber})),isString:r.some((function(e){return e.isString})),isNumberOrString:r.some((function(e){return e.isNumberOrString})),candidateTypes:e.flatMap(r,(function(e){return e.candidateTypes})),properties:s,calls:e.flatMap(r,(function(e){return e.calls})),constructs:e.flatMap(r,(function(e){return e.constructs})),numberIndex:e.forEach(r,(function(e){return e.numberIndex})),stringIndex:e.forEach(r,(function(e){return e.stringIndex})),candidateThisTypes:e.flatMap(r,(function(e){return e.candidateThisTypes})),inferredTypes:void 0}}(t.map((function(e){return e.return_}))));return a.createSignature(void 0,void 0,void 0,r,s,void 0,n,0)}function h(e,t){!t||1&t.flags||131072&t.flags||(e.candidateTypes||(e.candidateTypes=[])).push(t)}function v(e,t){!t||1&t.flags||131072&t.flags||(e.candidateThisTypes||(e.candidateThisTypes=[])).push(t)}}r.registerCodeFix({errorCodes:i,getCodeActions:function(t){var i,s=t.sourceFile,c=t.program,u=t.span.start,l=t.errorCode,_=t.cancellationToken,d=t.host,p=t.formatContext,f=t.preferences,m=e.getTokenAtPosition(s,u),g=e.textChanges.ChangeTracker.with(t,(function(t){i=o(t,s,m,l,c,_,e.returnTrue,d,p,f)})),y=i&&e.getNameOfDeclaration(i);return y&&0!==g.length?[r.createCodeFixAction(n,g,[a(l,m),y.getText(s)],n,e.Diagnostics.Infer_all_types_from_usage)]:void 0},fixIds:[n],getAllCodeActions:function(t){var n=t.sourceFile,a=t.program,s=t.cancellationToken,c=t.host,u=t.formatContext,l=t.preferences,_=e.nodeSeenTracker();return r.codeFixAll(t,i,(function(t,r){o(t,n,e.getTokenAtPosition(r.file,r.start),r.code,a,s,_,c,u,l)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="convertFunctionToEs6Class",n=[e.Diagnostics.This_constructor_function_may_be_converted_to_a_class_declaration.code];function i(t,r,n,i){var o=i.getSymbolAtLocation(e.getTokenAtPosition(r,n));if(o&&19&o.flags){var s,c,u=o.valueDeclaration;switch(u.kind){case 243:s=u,t.delete(r,u),c=function(t){var r=l(o);t.body&&r.unshift(e.createConstructor(void 0,void 0,t.parameters,t.body));var n=a(t,88);return e.createClassDeclaration(void 0,n,t.name,void 0,void 0,r)}(u);break;case 241:s=u.parent.parent,c=function(t){var r=t.initializer;if(!r||200!==r.kind)return;if(75!==t.name.kind)return;var n=l(t.symbol);r.body&&n.unshift(e.createConstructor(void 0,void 0,r.parameters,r.body));var i=a(s,88);return e.createClassDeclaration(void 0,i,t.name,void 0,void 0,n)}(u),1===u.parent.declarations.length?(e.copyLeadingComments(s,c,r),t.delete(r,s)):t.delete(r,u)}c&&(e.copyLeadingComments(u,c,r),t.insertNodeAfter(r,s,c))}function l(n){var i=[];return n.members&&n.members.forEach((function(e){var t=o(e,void 0);t&&i.push(t)})),n.exports&&n.exports.forEach((function(t){var r=o(t,[e.createToken(119)]);r&&i.push(r)})),i;function o(n,i){if(8192&n.flags){var o=n.valueDeclaration,s=o.parent;if(c=s.right,e.isFunctionLike(c)){var c,u=s.parent&&225===s.parent.kind?s.parent:s;if(t.delete(r,u),!s.right)return e.createProperty([],i,n.name,void 0,void 0,void 0);switch(s.right.kind){case 200:var l=s.right,_=e.concatenate(i,a(l,125)),d=e.createMethod(void 0,_,void 0,o.name,void 0,void 0,l.parameters,void 0,l.body);return e.copyLeadingComments(s,d,r),d;case 201:var p=s.right,f=p.body,m=void 0;m=222===f.kind?f:e.createBlock([e.createReturn(f)]);_=e.concatenate(i,a(p,125)),d=e.createMethod(void 0,_,void 0,o.name,void 0,void 0,p.parameters,void 0,m);return e.copyLeadingComments(s,d,r),d;default:if(e.isSourceFileJS(r))return;var g=e.createProperty(void 0,i,o.name,void 0,void 0,s.right);return e.copyLeadingComments(s.parent,g,r),g}}}}}}function a(t,r){return e.filter(t.modifiers,(function(e){return e.kind===r}))}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var a=e.textChanges.ChangeTracker.with(n,(function(e){return i(e,n.sourceFile,n.span.start,n.program.getTypeChecker())}));return[t.createCodeFixAction(r,a,e.Diagnostics.Convert_function_to_an_ES2015_class,r,e.Diagnostics.Convert_all_constructor_functions_to_classes)]},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(t,r){return i(t,r.file,r.start,e.program.getTypeChecker())}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r,n="convertToAsyncFunction",i=[e.Diagnostics.This_may_be_converted_to_an_async_function.code],a=!0;function o(t,r,n,i,a){var o,_=e.getTokenAtPosition(r,n);if(o=e.isIdentifier(_)&&e.isVariableDeclaration(_.parent)&&_.parent.initializer&&e.isFunctionLikeDeclaration(_.parent.initializer)?_.parent.initializer:e.tryCast(e.getContainingFunction(e.getTokenAtPosition(r,n)),e.isFunctionLikeDeclaration)){var d,p,f=e.createMap(),g=e.createMap(),y=[],h=e.isInJSFile(o),v=function(t,r){if(!t.body)return e.createMap();var n=e.createMap();return e.forEachChild(t.body,(function t(i){s(i,r,"then")?(n.set(e.getNodeId(i).toString(),!0),e.forEach(i.arguments,t)):s(i,r,"catch")?(n.set(e.getNodeId(i).toString(),!0),e.forEachChild(i,t)):s(i,r)?n.set(e.getNodeId(i).toString(),!0):e.forEachChild(i,t)})),n}(o,i),x=function(t,r,n,i,a,o,s){var l=e.createMap(),_=e.createMap();return e.forEachChild(t,(function t(o){if(e.isIdentifier(o)){var d=r.getSymbolAtLocation(o),p=d&&function(e,t){return e.valueDeclaration&&e.valueDeclaration.getSourceFile()===t}(d,i.sourceFile);if(d&&p){var f=m(r.getTypeAtLocation(o),r),g=e.getSymbolId(d).toString();if(!f||e.isFunctionLikeDeclaration(o.parent)||n.has(g)){if(o.parent&&(e.isParameter(o.parent)||e.isVariableDeclaration(o.parent)||e.isBindingElement(o.parent))){var y=o.text,h=_.get(y);if(h&&h.some((function(e){return e!==d}))){var v=u(o,_);l.set(g,v.identifier),n.set(g,v),s.push({identifier:v.identifier,symbol:d}),c(_,y,d)}else{var x=e.getSynthesizedDeepClone(o);l.set(g,x),n.set(g,b(x,[],s.filter((function(e){return e.identifier.text===o.text})).length)),(e.isParameter(o.parent)&&function(t){var n=t.parent;if(e.isCallExpression(n)||e.isIdentifier(n)&&!a.get(e.getNodeId(n).toString())){var i=r.getTypeAtLocation(n);return!!(i&&r.getPromisedTypeOfPromise(i))}return!1}(o.parent.parent)||e.isVariableDeclaration(o.parent))&&(s.push({identifier:x,symbol:d}),c(_,y,d))}}}else{var D=e.firstOrUndefined(f.parameters),S=D&&e.isParameter(D.valueDeclaration)&&e.tryCast(D.valueDeclaration.name,e.isIdentifier)||e.createOptimisticUniqueName("result"),T=u(S,_);n.set(g,T),s.push({identifier:T.identifier,symbol:d}),c(_,S.text,d)}}}else e.forEachChild(o,t)})),e.getSynthesizedDeepCloneWithRenames(t,!0,l,r,(function(t,i){if(e.isIdentifier(t)){var s=r.getSymbolAtLocation(t),c=s&&e.getSymbolId(s).toString();if(s&&n.get(c)){var u=r.getTypeAtLocation(t);o.set(e.getNodeId(i).toString(),u)}}var l=a.get(e.getNodeId(t).toString());void 0!==l&&(a.delete(e.getNodeId(t).toString()),a.set(e.getNodeId(i).toString(),l))}))}(o,i,f,a,v,g,y),D=function(e){var t=[];return e.forEach((function(e){0===e.numberOfAssignmentsOriginal&&t.push(e.identifier)})),t}(f),S=x.body&&e.isBlock(x.body)?(d=x.body,p=[],e.forEachReturnStatement(d,(function(t){e.isReturnStatementWithFixablePromiseHandler(t)&&p.push(t)})),p):e.emptyArray,T={checker:i,synthNamesMap:f,allVarNames:y,setOfExpressionsToReturn:v,constIdentifiers:D,originalTypeMap:g,isInJSFile:h};if(S.length){t.insertLastModifierBefore(r,125,o);for(var E=function(n){e.forEachChild(n,(function i(a){e.isCallExpression(a)?function(e,n){var i=l(e,T,e);t.replaceNodeWithNodes(r,n,i)}(a,n):e.isFunctionLike(a)||e.forEachChild(a,i)}))},C=0,k=S;C<k.length;C++){E(k[C])}}}}function s(t,r,n){var i=(n?e.isCallExpression(t):e.isExpression(t))&&(!n||e.hasPropertyAccessExpressionWithName(t,n))&&r.getTypeAtLocation(t);return!(!i||!r.getPromisedTypeOfPromise(i))}function c(e,t,r){e.has(t)?e.get(t).push(r):e.set(t,[r])}function u(t,r){var n=(r.get(t.text)||e.emptyArray).length;return b(0===n?t:e.createIdentifier(t.text+"_"+n),[],0)}function l(t,r,n,i){if(!t)return e.emptyArray;var o=e.isIdentifier(t)&&r.originalTypeMap.get(e.getNodeId(t).toString())||r.checker.getTypeAtLocation(t);return e.isCallExpression(t)&&e.hasPropertyAccessExpressionWithName(t,"then")&&o&&r.checker.getPromisedTypeOfPromise(o)?function(t,r,n,i){var a=t.arguments,o=a[0],s=a[1];if(!o)return l(t.expression,r,n);var c=y(o,r),u=f(o,i,c,t,r);if(s){var _=y(s,r),d=e.createBlock(l(t.expression,r,t,c).concat(u)),p=f(s,i,_,t,r),m=_?x(_)?_.identifier.text:_.bindingPattern:"e",g=e.createVariableDeclaration(m),h=e.createCatchClause(g,e.createBlock(p));return[e.createTry(d,h,void 0)]}return l(t.expression,r,t,c).concat(u)}(t,r,n,i):e.isCallExpression(t)&&e.hasPropertyAccessExpressionWithName(t,"catch")&&o&&r.checker.getPromisedTypeOfPromise(o)?function(t,r,n){var i,a=t.arguments[0],o=y(a,r),s=r.setOfExpressionsToReturn.get(e.getNodeId(t).toString());n&&!s&&(x(n)?(i=n,r.synthNamesMap.forEach((function(e,t){if(e.identifier.text===n.identifier.text){var i=_(n);r.synthNamesMap.set(t,i)}}))):i=b(e.createOptimisticUniqueName("result"),n.types),i.numberOfAssignmentsOriginal=2,r.constIdentifiers.some((function(e){return e.text===i.identifier.text}))&&r.constIdentifiers.push(_(i).identifier));var c,u,d=e.createBlock(l(t.expression,r,t,i)),p=f(a,i,o,t,r),m=o?x(o)?o.identifier.text:o.bindingPattern:"e",g=e.createVariableDeclaration(m),h=e.createCatchClause(g,e.createBlock(p));if(i&&!s){u=e.getSynthesizedDeepClone(i.identifier);var v=i.types,D=r.checker.getUnionType(v,2),S=r.isInJSFile?void 0:r.checker.typeToTypeNode(D),T=[e.createVariableDeclaration(u,S)];c=e.createVariableStatement(void 0,e.createVariableDeclarationList(T,1))}var E=e.createTry(d,h,void 0),C=n&&u&&(k=n,1===k.kind)&&e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(e.getSynthesizedDeepCloneWithRenames(n.bindingPattern),void 0,u)],2));var k;return e.compact([c,E,C])}(t,r,i):e.isPropertyAccessExpression(t)?l(t.expression,r,n,i):o&&r.checker.getPromisedTypeOfPromise(o)?function(t,r,n){var i=r.setOfExpressionsToReturn.get(e.getNodeId(t).toString()),a=t.original?t.original.parent:t.parent;if(n&&!i&&(!a||e.isPropertyAccessExpression(a)))return p(n,e.createAwait(t),r);if(!n&&!i&&(!a||e.isPropertyAccessExpression(a)))return[e.createStatement(e.createAwait(t))];return[e.createReturn(e.getSynthesizedDeepClone(t))]}(t,r,i):(a=!1,e.emptyArray)}function _(t){return b(e.createOptimisticUniqueName(t.identifier.text))}function d(t,r){var n=function t(r){return e.isIdentifier(r)?[r.text]:e.flatMap(r.elements,(function(r){return e.isOmittedExpression(r)?[]:t(r.name)}))}(v(t));return r.some((function(t){return e.contains(n,t.text)}))?2:1}function p(t,r,n){return!t||h(t)?[e.createStatement(r)]:x(t)&&t.types.length<t.numberOfAssignmentsOriginal?[e.createStatement(e.createAssignment(e.getSynthesizedDeepClone(t.identifier),r))]:[e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(e.getSynthesizedDeepClone(v(t)),void 0,r)],d(t,n.constIdentifiers)))]}function f(t,r,n,i,o){var c=o.setOfExpressionsToReturn.get(e.getNodeId(i).toString());switch(t.kind){case 99:break;case 75:if(!n)break;var u=e.createCall(e.getSynthesizedDeepClone(t),void 0,x(n)?[n.identifier]:[]);if(c)return[e.createReturn(u)];var l=o.originalTypeMap.get(e.getNodeId(t).toString())||o.checker.getTypeAtLocation(t),_=o.checker.getSignaturesOfType(l,0);if(!_.length){a=!1;break}var f=_[0].getReturnType(),y=p(r,e.createAwait(u),o);return r&&r.types.push(f),y;case 200:case 201:var h=t.body;if(e.isBlock(h)){for(var b=[],D=!1,S=0,T=h.statements;S<T.length;S++){var E=T[S];e.isReturnStatement(E)&&(D=!0),e.isReturnStatementWithFixablePromiseHandler(E)?b=b.concat(g(o,[E],r)):b.push(E)}return c?b.map((function(t){return e.getSynthesizedDeepClone(t)})):function(t,r,n,i){for(var a=[],o=0,c=t;o<c.length;o++){var u=c[o];if(e.isReturnStatement(u)){if(u.expression){var l=s(u.expression,n.checker)?e.createAwait(u.expression):u.expression;void 0===r?a.push(e.createExpressionStatement(l)):a.push(e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(v(r),void 0,l)],d(r,n.constIdentifiers))))}}else a.push(e.getSynthesizedDeepClone(u))}i||void 0===r||a.push(e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(v(r),void 0,e.createIdentifier("undefined"))],d(r,n.constIdentifiers))));return a}(b,r,o,D)}var C=g(o,e.isFixablePromiseHandler(h)?[e.createReturn(h)]:e.emptyArray,r);if(C.length>0)return C;var k=m(o.checker.getTypeAtLocation(t),o.checker).getReturnType(),N=e.getSynthesizedDeepClone(h),A=o.checker.getPromisedTypeOfPromise(k)?e.createAwait(N):N;if(c)return[e.createReturn(A)];var F=p(r,A,o);return r&&r.types.push(k),F;default:a=!1}return e.emptyArray}function m(t,r){var n=r.getSignaturesOfType(t,0);return e.lastOrUndefined(n)}function g(t,r,n){for(var i=[],a=0,o=r;a<o.length;a++){var s=o[a];e.forEachChild(s,(function r(a){if(e.isCallExpression(a)){var o=l(a,t,a,n);if((i=i.concat(o)).length>0)return}else e.isFunctionLike(a)||e.forEachChild(a,r)}))}return i}function y(t,r){var n,i=0,a=[];e.isFunctionLikeDeclaration(t)?t.parameters.length>0&&(n=function t(r){if(e.isIdentifier(r))return o(r);var n=e.flatMap(r.elements,(function(r){return e.isOmittedExpression(r)?[]:[t(r.name)]}));return function(t,r,n){void 0===r&&(r=e.emptyArray);void 0===n&&(n=[]);return{kind:1,bindingPattern:t,elements:r,types:n}}(r,n)}(t.parameters[0].name)):e.isIdentifier(t)&&(n=o(t));if(n&&!("identifier"in n&&"undefined"===n.identifier.text))return n;function o(t){var n=function(e){return e.symbol?e.symbol:r.checker.getSymbolAtLocation(e)}(function(e){return e.original?e.original:e}(t));return n&&r.synthNamesMap.get(e.getSymbolId(n).toString())||b(t,a,i)}}function h(t){return!t||(x(t)?!t.identifier.text:e.every(t.elements,h))}function v(e){return x(e)?e.identifier:e.bindingPattern}function b(e,t,r){return void 0===t&&(t=[]),void 0===r&&(r=0),{kind:0,identifier:e,types:t,numberOfAssignmentsOriginal:r}}function x(e){return 0===e.kind}t.registerCodeFix({errorCodes:i,getCodeActions:function(r){a=!0;var i=e.textChanges.ChangeTracker.with(r,(function(e){return o(e,r.sourceFile,r.span.start,r.program.getTypeChecker(),r)}));return a?[t.createCodeFixAction(n,i,e.Diagnostics.Convert_to_async_function,n,e.Diagnostics.Convert_all_to_async_functions)]:[]},fixIds:[n],getAllCodeActions:function(e){return t.codeFixAll(e,i,(function(t,r){return o(t,r.file,r.start,e.program.getTypeChecker(),e)}))}}),function(e){e[e.Identifier=0]="Identifier",e[e.BindingPattern=1]="BindingPattern"}(r||(r={}))}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){function r(t,r,n,i){for(var a=0,o=t.imports;a<o.length;a++){var s=o[a],c=e.getResolvedModule(t,s.text);if(c&&c.resolvedFileName===r.fileName){var u=e.importFromModuleSpecifier(s);switch(u.kind){case 252:n.replaceNode(t,u,e.makeImport(u.name,void 0,s,i));break;case 195:e.isRequireCall(u,!1)&&n.replaceNode(t,u,e.createPropertyAccess(e.getSynthesizedDeepClone(u),"default"))}}}}function n(t,r){t.forEachChild((function n(i){if(e.isPropertyAccessExpression(i)&&e.isExportsOrModuleExportsOrAlias(t,i.expression)){var a=i.parent;r(i,e.isBinaryExpression(a)&&a.left===i&&62===a.operatorToken.kind)}i.forEachChild(n)}))}function i(r,n,i,c,f,m,g,y){switch(n.kind){case 224:return function(r,n,i,a,o,c,u){var p=n.declarationList,f=!1,m=e.flatMap(p.declarations,(function(n){var m=n.name,g=n.initializer;if(g){if(e.isExportsOrModuleExportsOrAlias(r,g))return f=!0,[];if(e.isRequireCall(g,!0))return f=!0,function(r,n,i,a,o,c,u,l){switch(n.kind){case 188:var p=e.mapAllOrFail(n.elements,(function(t){return t.dotDotDotToken||t.initializer||t.propertyName&&!e.isIdentifier(t.propertyName)||!e.isIdentifier(t.name)?void 0:_(t.propertyName&&t.propertyName.text,t.name.text)}));if(p)return[e.makeImport(void 0,p,i,l)];case 189:var f=s(t.moduleSpecifierToValidIdentifier(i.text,u),c);return[e.makeImport(e.createIdentifier(f),void 0,i,l),d(void 0,e.getSynthesizedDeepClone(n),e.createIdentifier(f))];case 75:return function(t,r,n,i,a,o,c){for(var u=a.getSymbolAtLocation(r),l=e.createMap(),_=!1,d=0,p=o.original.get(r.text);d<p.length;d++){var f=p[d];if(a.getSymbolAtLocation(f)===u&&f!==r){var m=f.parent;if(e.isPropertyAccessExpression(m)){var g=m.expression,y=m.name.text;e.Debug.assert(g===f,"Didn't expect expression === use");var h=l.get(y);void 0===h&&(h=s(y,o),l.set(y,h)),i.replaceNode(t,m,e.createIdentifier(h))}else _=!0}}var v=0===l.size?void 0:e.arrayFrom(e.mapIterator(l.entries(),(function(t){var r=t[0],n=t[1];return e.createImportSpecifier(r===n?void 0:e.createIdentifier(r),e.createIdentifier(n))})));v||(_=!0);return[e.makeImport(_?e.getSynthesizedDeepClone(r):void 0,v,n,c)]}(r,n,i,a,o,c,l);default:return e.Debug.assertNever(n,"Convert to ES6 module got invalid name kind "+n.kind)}}(r,m,g.arguments[0],i,a,o,c,u);if(e.isPropertyAccessExpression(g)&&e.isRequireCall(g.expression,!0))return f=!0,function(t,r,n,i,a){switch(t.kind){case 188:case 189:var o=s(r,i);return[l(o,r,n,a),d(void 0,t,e.createIdentifier(o))];case 75:return[l(t.text,r,n,a)];default:return e.Debug.assertNever(t,"Convert to ES6 module got invalid syntax form "+t.kind)}}(m,g.name.text,g.expression.arguments[0],o,u)}return e.createVariableStatement(void 0,e.createVariableDeclarationList([n],p.flags))}));f&&i.replaceNodeWithNodes(r,n,m)}(r,n,c,i,f,m,y),!1;case 225:var h=n.expression;switch(h.kind){case 195:return e.isRequireCall(h,!0)&&c.replaceNode(r,n,e.makeImport(void 0,void 0,h.arguments[0],y)),!1;case 208:return 62===h.operatorToken.kind&&function(t,r,n,i,s){var c=n.left,l=n.right;if(!e.isPropertyAccessExpression(c))return!1;if(e.isExportsOrModuleExportsOrAlias(t,c)){if(!e.isExportsOrModuleExportsOrAlias(t,l)){var _=e.isObjectLiteralExpression(l)?(f=l,(m=e.mapAllOrFail(f.properties,(function(t){switch(t.kind){case 162:case 163:case 280:case 281:return;case 279:return e.isIdentifier(t.name)?function(t,r){var n=[e.createToken(88)];switch(r.kind){case 200:var i=r.name;if(i&&i.text!==t)return a();case 201:return u(t,n,r);case 213:return function(t,r,n){return e.createClassDeclaration(e.getSynthesizedDeepClones(n.decorators),e.concatenate(r,e.getSynthesizedDeepClones(n.modifiers)),t,e.getSynthesizedDeepClones(n.typeParameters),e.getSynthesizedDeepClones(n.heritageClauses),e.getSynthesizedDeepClones(n.members))}(t,n,r);default:return a()}function a(){return d(n,e.createIdentifier(t),r)}}(t.name.text,t.initializer):void 0;case 160:return e.isIdentifier(t.name)?u(t.name.text,[e.createToken(88)],t):void 0;default:e.Debug.assertNever(t,"Convert to ES6 got invalid prop kind "+t.kind)}})))&&[m,!1]):e.isRequireCall(l,!0)?function(t,r){var n=t.text,i=r.getSymbolAtLocation(t),s=i?i.exports:e.emptyUnderscoreEscapedMap;return s.has("export=")?[[o(n)],!0]:s.has("default")?s.size>1?[[a(n),o(n)],!0]:[[o(n)],!0]:[[a(n)],!1]}(l.arguments[0],r):void 0;return _?(i.replaceNodeWithNodes(t,n.parent,_[0]),_[1]):(i.replaceRangeWithText(t,e.createRange(c.getStart(t),l.pos),"export default"),!0)}i.delete(t,n.parent)}else e.isExportsOrModuleExportsOrAlias(t,c.expression)&&function(t,r,n,i){var a=r.left.name.text,o=i.get(a);if(void 0!==o){var s=[d(void 0,o,r.right),p([e.createExportSpecifier(o,a)])];n.replaceNodeWithNodes(t,r.parent,s)}else!function(t,r,n){var i=t.left,a=t.right,o=t.parent,s=i.name.text;if(!(e.isFunctionExpression(a)||e.isArrowFunction(a)||e.isClassExpression(a))||a.name&&a.name.text!==s)n.replaceNodeRangeWithNodes(r,i.expression,e.findChildOfKind(i,24,r),[e.createToken(88),e.createToken(80)],{joiner:" ",suffix:" "});else{n.replaceRange(r,{pos:i.getStart(r),end:a.getStart(r)},e.createToken(88),{suffix:" "}),a.name||n.insertName(r,a,s);var c=e.findChildOfKind(o,26,r);c&&n.delete(r,c)}}(r,t,n)}(t,n,i,s);var f,m;return!1}(r,i,h,c,g)}default:return!1}}function a(e){return p(void 0,e)}function o(t){return p([e.createExportSpecifier(void 0,"default")],t)}function s(e,t){for(;t.original.has(e)||t.additional.has(e);)e="_"+e;return t.additional.set(e,!0),e}function c(t){var r=e.createMultiMap();return function t(r,n){e.isIdentifier(r)&&function(e){var t=e.parent;switch(t.kind){case 193:return t.name!==e;case 190:case 257:return t.propertyName!==e;default:return!0}}(r)&&n(r);r.forEachChild((function(e){return t(e,n)}))}(t,(function(e){return r.add(e.text,e)})),r}function u(t,r,n){return e.createFunctionDeclaration(e.getSynthesizedDeepClones(n.decorators),e.concatenate(r,e.getSynthesizedDeepClones(n.modifiers)),e.getSynthesizedDeepClone(n.asteriskToken),t,e.getSynthesizedDeepClones(n.typeParameters),e.getSynthesizedDeepClones(n.parameters),e.getSynthesizedDeepClone(n.type),e.convertToFunctionBody(e.getSynthesizedDeepClone(n.body)))}function l(t,r,n,i){return"default"===r?e.makeImport(e.createIdentifier(t),void 0,n,i):e.makeImport(void 0,[_(r,t)],n,i)}function _(t,r){return e.createImportSpecifier(void 0!==t&&t!==r?e.createIdentifier(t):void 0,e.createIdentifier(r))}function d(t,r,n){return e.createVariableStatement(t,e.createVariableDeclarationList([e.createVariableDeclaration(r,void 0,n)],2))}function p(t,r){return e.createExportDeclaration(void 0,void 0,t&&e.createNamedExports(t),void 0===r?void 0:e.createLiteral(r))}t.registerCodeFix({errorCodes:[e.Diagnostics.File_is_a_CommonJS_module_it_may_be_converted_to_an_ES6_module.code],getCodeActions:function(a){var o=a.sourceFile,u=a.program,l=a.preferences,_=e.textChanges.ChangeTracker.with(a,(function(t){if(function(t,r,a,o,u){var l={original:c(t),additional:e.createMap()},_=function(t,r,i){var a=e.createMap();return n(t,(function(t){var n=t.name,o=n.text,c=n.originalKeywordKind;!a.has(o)&&(void 0!==c&&e.isNonContextualKeyword(c)||r.resolveName(t.name.text,t,111551,!0))&&a.set(o,s("_"+o,i))})),a}(t,r,l);!function(t,r,i){n(t,(function(n,a){if(!a){var o=n.name.text;i.replaceNode(t,n,e.createIdentifier(r.get(o)||o))}}))}(t,_,a);for(var d=!1,p=0,f=t.statements;p<f.length;p++){var m=f[p],g=i(t,m,r,a,l,o,_,u);d=d||g}return d}(o,u.getTypeChecker(),t,u.getCompilerOptions().target,e.getQuotePreference(o,l)))for(var a=0,_=u.getSourceFiles();a<_.length;a++){var d=_[a];r(d,o,t,e.getQuotePreference(d,l))}}));return[t.createCodeFixActionNoFixId("convertToEs6Module",_,e.Diagnostics.Convert_to_ES6_module)]}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="correctQualifiedNameToIndexedAccessType",n=[e.Diagnostics.Cannot_access_0_1_because_0_is_a_type_but_not_a_namespace_Did_you_mean_to_retrieve_the_type_of_the_property_1_in_0_with_0_1.code];function i(t,r){var n=e.findAncestor(e.getTokenAtPosition(t,r),e.isQualifiedName);return e.Debug.assert(!!n,"Expected position to be owned by a qualified name."),e.isIdentifier(n.left)?n:void 0}function a(t,r,n){var i=n.right.text,a=e.createIndexedAccessTypeNode(e.createTypeReferenceNode(n.left,void 0),e.createLiteralTypeNode(e.createLiteral(i)));t.replaceNode(r,n,a)}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var o=i(n.sourceFile,n.span.start);if(o){var s=e.textChanges.ChangeTracker.with(n,(function(e){return a(e,n.sourceFile,o)})),c=o.left.text+'["'+o.right.text+'"]';return[t.createCodeFixAction(r,s,[e.Diagnostics.Rewrite_as_the_indexed_access_type_0,c],r,e.Diagnostics.Rewrite_all_as_indexed_access_types)]}},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(e,t){var r=i(t.file,t.start);r&&a(e,t.file,r)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r=[e.Diagnostics.Class_0_incorrectly_implements_interface_1.code,e.Diagnostics.Class_0_incorrectly_implements_class_1_Did_you_mean_to_extend_1_and_inherit_its_members_as_a_subclass.code],n="fixClassIncorrectlyImplementsInterface";function i(t,r){return e.Debug.assertDefined(e.getContainingClass(e.getTokenAtPosition(t,r)),"There should be a containing class")}function a(t){return!(8&e.getModifierFlags(t.valueDeclaration))}function o(r,n,i,o,s,c){var u=r.program.getTypeChecker(),l=function(t,r){var n=e.getEffectiveBaseTypeNode(t);if(!n)return e.createSymbolTable();var i=r.getTypeAtLocation(n),o=r.getPropertiesOfType(i);return e.createSymbolTable(o.filter(a))}(o,u),_=u.getTypeAtLocation(n),d=u.getPropertiesOfType(_).filter(e.and(a,(function(e){return!l.has(e.escapedName)}))),p=u.getTypeAtLocation(o);function f(e,n){var a=u.getIndexInfoOfType(e,n);a&&s.insertNodeAtClassStart(i,o,u.indexInfoToIndexSignatureDeclaration(a,n,o,void 0,t.getNoopSymbolTrackerWithResolver(r)))}p.getNumberIndexType()||f(_,1),p.getStringIndexType()||f(_,0),t.createMissingMemberNodes(o,d,r,c,(function(e){return s.insertNodeAtClassStart(i,o,e)}))}t.registerCodeFix({errorCodes:r,getCodeActions:function(r){var a=r.sourceFile,s=r.span,c=i(a,s.start);return e.mapDefined(e.getClassImplementsHeritageClauseElements(c),(function(i){var s=e.textChanges.ChangeTracker.with(r,(function(e){return o(r,i,a,c,e,r.preferences)}));return 0===s.length?void 0:t.createCodeFixAction(n,s,[e.Diagnostics.Implement_interface_0,i.getText(a)],n,e.Diagnostics.Implement_all_unimplemented_interfaces)}))},fixIds:[n],getAllCodeActions:function(n){var a=e.createMap();return t.codeFixAll(n,r,(function(t,r){var s=i(r.file,r.start);if(e.addToSeen(a,e.getNodeId(s)))for(var c=0,u=e.getClassImplementsHeritageClauseElements(s);c<u.length;c++){var l=u[c];o(n,l,r.file,s,t,n.preferences)}}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(n){n.importFixId="fixMissingImport";var i,a,o=[e.Diagnostics.Cannot_find_name_0.code,e.Diagnostics.Cannot_find_name_0_Did_you_mean_1.code,e.Diagnostics.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0.code,e.Diagnostics.Cannot_find_name_0_Did_you_mean_the_static_member_1_0.code,e.Diagnostics.Cannot_find_namespace_0.code,e.Diagnostics._0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead.code,e.Diagnostics._0_only_refers_to_a_type_but_is_being_used_as_a_value_here.code];function s(e){return{description:e.description,changes:e.changes,commands:e.commands}}function c(t,r){return!(111551&e.skipAlias(t,r).flags)}function u(r,n,i,a,o,s,c){var u=a.getTypeChecker(),d=e.flatMap(r,(function(t){return function(t,r,n){var i=t.moduleSymbol,a=t.importKind;return t.exportedSymbolIsTypeOnly&&e.isSourceFileJS(n)?e.emptyArray:e.mapDefined(n.imports,(function(t){var n=e.importFromModuleSpecifier(t);return 253!==n.kind&&252!==n.kind||r.getSymbolAtLocation(t)!==i?void 0:{declaration:n,importKind:a}}))}(t,u,o)})),p=void 0===i?void 0:function(t,r,n,i){return e.firstDefined(t,(function(t){var a=function(t){if(253===t.kind){var r=t.importClause&&e.isImportClause(t.importClause)&&t.importClause.namedBindings;return r&&255===r.kind?r.name:void 0}return t.name}(t.declaration);if(a){var o=i.getAliasedSymbol(i.getSymbolAtLocation(a));if(o&&o.exports.has(e.escapeLeadingUnderscores(r)))return{kind:0,namespacePrefix:a.text,position:n}}}))}(d,n,i,u),f=function(t){return e.firstDefined(t,(function(e){var t=e.declaration,r=e.importKind;if(253===t.kind){var n=t.importClause;if(n){var i=n.name,a=n.namedBindings;return 1===r&&!i||0===r&&(!a||256===a.kind)?{kind:2,importClause:n,importKind:r}:void 0}}}))}(d),m=f?[f]:function(t,r,n,i,a,o,s){var c=e.firstDefined(r,_);return c?[c]:l(n,i,a,t,o,s)}(r,d,a,o,i,s,c);return t(p?[p]:e.emptyArray,m)}function l(t,r,n,i,a,o){var s=e.isSourceFileJS(r),c=k(r,t,a).allowsImportingSpecifier,u=e.flatMap(i,(function(i){var c=i.moduleSymbol,u=i.importKind,l=i.exportedSymbolIsTypeOnly;return e.moduleSpecifiers.getModuleSpecifiers(c,t.getCompilerOptions(),r,a,t.getSourceFiles(),o,t.redirectTargetsMap).map((function(t){return l&&s?{kind:1,moduleSpecifier:t,position:e.Debug.assertDefined(n,"position should be defined")}:{kind:3,moduleSpecifier:t,importKind:u}}))}));return e.sort(u,(function(e,t){var r=c(e.moduleSpecifier),n=c(t.moduleSpecifier);return r&&!n?-1:n&&!r?1:e.moduleSpecifier.length-t.moduleSpecifier.length}))}function _(t){var r=t.declaration,n=t.importKind,i=253===r.kind?r.moduleSpecifier:263===r.moduleReference.kind?r.moduleReference.expression:void 0;return i&&e.isStringLiteral(i)?{kind:3,moduleSpecifier:i.text,importKind:n}:void 0}function d(t,n,i){var a=e.getTokenAtPosition(t.sourceFile,i),o=n===e.Diagnostics._0_refers_to_a_UMD_global_but_the_current_file_is_a_module_Consider_adding_an_import_instead.code?function(t,r){var n=t.sourceFile,i=t.program,a=t.host,o=t.preferences,s=i.getTypeChecker(),c=function(t,r){var n=e.isIdentifier(t)?r.getSymbolAtLocation(t):void 0;if(e.isUMDExportSymbol(n))return n;var i=t.parent;return e.isJsxOpeningLikeElement(i)&&i.tagName===t||e.isJsxOpeningFragment(i)?e.tryCast(r.resolveName(r.getJsxNamespace(i),e.isJsxOpeningLikeElement(i)?t:i,111551,!1),e.isUMDExportSymbol):void 0}(r,s);if(!c)return;var l=s.getAliasedSymbol(c),_=c.name;return{fixes:u([{moduleSymbol:l,importKind:p(n,i.getCompilerOptions()),exportedSymbolIsTypeOnly:!1}],_,e.isIdentifier(r)?r.getStart(n):void 0,i,n,a,o),symbolName:_}}(t,a):e.isIdentifier(a)?function(t,r){var n=t.sourceFile,i=t.program,a=t.cancellationToken,o=t.host,s=t.preferences,l=i.getTypeChecker(),_=e.isJsxOpeningLikeElement(r.parent)&&r.parent.tagName===r&&(e.isIntrinsicJsxName(r.text)||l.resolveName(r.text,r,67108863,!1))?l.getJsxNamespace(n):r.text;e.Debug.assert("default"!==_,"'default' isn't a legal identifier and couldn't occur here");var d=function(t,r,n,i,a,o,s){var u=e.createMultiMap();function l(t,r,n){u.add(e.getUniqueSymbolId(r,a).toString(),{moduleSymbol:t,importKind:n,exportedSymbolIsTypeOnly:c(r,a)})}return S(o,s,i,!0,(function(e){n.throwIfCancellationRequested();var s=f(i,e,a,o.getCompilerOptions());s&&s.name===t&&D(s.symbolForMeaning,r)&&l(e,s.symbol,s.kind);var c=a.tryGetMemberInModuleExportsAndProperties(t,e);c&&D(c,r)&&l(e,c,0)})),u}(_,e.getMeaningFromLocation(r),a,n,l,i,o);return{fixes:e.arrayFrom(e.flatMapIterator(d.entries(),(function(e){e[0];return u(e[1],_,r.getStart(n),i,n,o,s)}))),symbolName:_}}(t,a):void 0;return o&&r(r({},o),{fixes:e.sort(o.fixes,(function(e,t){return e.kind-t.kind}))})}function p(t,r){if(e.getAllowSyntheticDefaultImports(r))return 1;var n=e.getEmitModuleKind(r);switch(n){case e.ModuleKind.AMD:case e.ModuleKind.CommonJS:case e.ModuleKind.UMD:return e.isInJSFile(t)?e.isExternalModule(t)?2:4:3;case e.ModuleKind.System:case e.ModuleKind.ES2015:case e.ModuleKind.ESNext:case e.ModuleKind.None:return 2;default:return e.Debug.assertNever(n,"Unexpected moduleKind "+n)}}function f(t,n,i,a){var o=function(e,t,r,n){var i=r.tryGetMemberInModuleExports("default",t);if(i)return{symbol:i,kind:1};var a=r.resolveExternalModuleSymbol(t);return a===t?void 0:{symbol:a,kind:m(e,n,r)}}(t,n,i,a);if(o){var s=o.symbol,c=o.kind,u=function t(r,n,i,a){var o=e.getLocalSymbolForExportDefault(r);if(o)return{symbolForMeaning:o,name:o.name};var s=(c=r,c.declarations&&e.firstDefined(c.declarations,(function(t){if(e.isExportAssignment(t)){if(e.isIdentifier(t.expression))return t.expression.text}else if(e.isExportSpecifier(t))return e.Debug.assert("default"===t.name.text,"Expected the specifier to be a default export"),t.propertyName&&t.propertyName.text})));var c;if(void 0!==s)return{symbolForMeaning:r,name:s};if(2097152&r.flags){var u=i.getImmediateAliasedSymbol(r);return u&&t(u,e.Debug.assertDefined(u.parent,"Alias targets of default exports must have a parent"),i,a)}if("default"!==r.escapedName&&"export="!==r.escapedName)return{symbolForMeaning:r,name:r.getName()};return{symbolForMeaning:r,name:E(n,a.target)}}(s,n,i,a);return u&&r({symbol:s,kind:c},u)}}function m(t,r,n){if(e.getAllowSyntheticDefaultImports(r)&&e.getEmitModuleKind(r)>=e.ModuleKind.ES2015)return 1;if(e.isInJSFile(t))return e.isExternalModule(t)?1:4;for(var i=0,a=t.statements;i<a.length;i++){var o=a[i];if(e.isImportEqualsDeclaration(o))return 3;if(e.isImportDeclaration(o)&&o.importClause&&o.importClause.name){var s=n.getImmediateAliasedSymbol(o.importClause.symbol);if(s&&"default"!==s.name)return 1}}return 3}function g(t,r,i,a,o){var s,c=e.textChanges.ChangeTracker.with(t,(function(t){s=function(t,r,n,i,a){switch(i.kind){case 0:return h(t,r,i),[e.Diagnostics.Change_0_to_1,n,i.namespacePrefix+"."+n];case 1:return v(t,r,i,a),[e.Diagnostics.Change_0_to_1,n,b(i.moduleSpecifier,a)+n];case 2:var o=i.importClause,s=i.importKind;y(t,r,o,1===s?n:void 0,0===s?[n]:e.emptyArray);var c=e.stripQuotes(o.parent.moduleSpecifier.getText());return[1===s?e.Diagnostics.Add_default_import_0_to_existing_import_declaration_from_1:e.Diagnostics.Add_0_to_existing_import_declaration_from_1,n,c];case 3:s=i.importKind;var u=i.moduleSpecifier;return x(t,r,u,a,1===s?{defaultImport:n,namedImports:e.emptyArray,namespaceLikeImport:void 0}:0===s?{defaultImport:void 0,namedImports:[n],namespaceLikeImport:void 0}:{defaultImport:void 0,namedImports:e.emptyArray,namespaceLikeImport:{importKind:s,name:n}}),[1===s?e.Diagnostics.Import_default_0_from_module_1:e.Diagnostics.Import_0_from_module_1,n,u];default:return e.Debug.assertNever(i,"Unexpected fix kind "+i.kind)}}(t,r,i,a,o)}));return n.createCodeFixAction("import",c,s,n.importFixId,e.Diagnostics.Add_all_missing_imports)}function y(t,r,n,i,a){if(i&&(e.Debug.assert(!n.name,"Default imports can't have names"),t.insertNodeAt(r,n.getStart(r),e.createIdentifier(i),{suffix:", "})),a.length){var o=a.map((function(t){return e.createImportSpecifier(void 0,e.createIdentifier(t))}));if(n.namedBindings&&e.cast(n.namedBindings,e.isNamedImports).elements.length)for(var s=0,c=o;s<c.length;s++){var u=c[s];t.insertNodeInListAfter(r,e.last(e.cast(n.namedBindings,e.isNamedImports).elements),u)}else if(o.length){var l=e.createNamedImports(o);n.namedBindings?t.replaceNode(r,n.namedBindings,l):t.insertNodeAfter(r,e.Debug.assertDefined(n.name,"Named import specifiers must have names"),l)}}}function h(e,t,r){var n=r.namespacePrefix,i=r.position;e.insertText(t,i,n+".")}function v(e,t,r,n){var i=r.moduleSpecifier,a=r.position;e.insertText(t,a,b(i,n))}function b(t,r){var n=e.getQuoteFromPreference(r);return"import("+n+t+n+")."}function x(t,r,n,i,a){var o=a.defaultImport,s=a.namedImports,c=a.namespaceLikeImport,u=e.makeStringLiteral(n,i);(void 0!==o||s.length)&&e.insertImport(t,r,e.makeImport(void 0===o?void 0:e.createIdentifier(o),s.map((function(t){return e.createImportSpecifier(void 0,e.createIdentifier(t))})),n,i)),c&&e.insertImport(t,r,3===c.importKind?e.createImportEqualsDeclaration(void 0,void 0,e.createIdentifier(c.name),e.createExternalModuleReference(u)):4===c.importKind?function(t,r){return e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(e.createIdentifier(t),void 0,e.createCall(e.createIdentifier("require"),void 0,[r]))],2))}(c.name,u):e.createImportDeclaration(void 0,void 0,e.createImportClause(void 0,e.createNamespaceImport(e.createIdentifier(c.name))),u))}function D(t,r){var n=t.declarations;return e.some(n,(function(t){return!!(e.getMeaningFromDeclaration(t)&r)}))}function S(t,r,n,i,a){var o=0,s=i&&k(n,t,r),c=t.getSourceFiles(),u=r.getGlobalTypingsCacheLocation&&r.getGlobalTypingsCacheLocation();T(t.getTypeChecker(),c,(function(t,i){var l,_,d,p,f,m;void 0===i?!s||s.allowsImportingAmbientModule(t,c)?a(t):s&&o++:i&&i!==n&&(l=n.fileName,_=i.fileName,d=e.hostGetCanonicalFileName(r),p=u,f=e.forEachAncestorDirectory(_,(function(t){return"node_modules"===e.getBaseFileName(t)?t:void 0})),void 0===(m=f&&e.getDirectoryPath(d(f)))||e.startsWith(d(l),m)||p&&e.startsWith(d(p),m))&&(!s||s.allowsImportingSourceFile(i,c)?a(t):s&&o++)})),r.log&&r.log("forEachExternalModuleToImportFrom: filtered out "+o+" modules by package.json contents")}function T(t,r,n){for(var i=0,a=t.getAmbientModules();i<a.length;i++){n(a[i],void 0)}for(var o=0,s=r;o<s.length;o++){var c=s[o];e.isExternalOrCommonJsModule(c)&&n(t.getMergedSymbol(c.symbol),c)}}function E(t,r){return C(e.removeFileExtension(e.stripQuotes(t.name)),r)}function C(t,r){var n=e.getBaseFileName(e.removeSuffix(t,"/index")),i="",a=!0,o=n.charCodeAt(0);e.isIdentifierStart(o,r)?i+=String.fromCharCode(o):a=!1;for(var s=1;s<n.length;s++){var c=n.charCodeAt(s),u=e.isIdentifierPart(c,r);if(u){var l=String.fromCharCode(c);a||(l=l.toUpperCase()),i+=l}a=u}return e.isStringANonContextualKeyword(i)?"_"+i:i||"_"}function k(t,r,n){var i,a=n.getPackageJsonsVisibleToFile&&n.getPackageJsonsVisibleToFile(t.fileName)||e.getPackageJsonsVisibleToFile(t.fileName,n),o=11,s={directoryExists:e.maybeBind(n,n.directoryExists),fileExists:e.maybeBind(n,n.fileExists),getCurrentDirectory:e.maybeBind(n,n.getCurrentDirectory),readFile:e.maybeBind(n,n.readFile),useCaseSensitiveFileNames:e.maybeBind(n,n.useCaseSensitiveFileNames),getProbableSymlinks:e.maybeBind(n,n.getProbableSymlinks)||r.getProbableSymlinks,getGlobalTypingsCacheLocation:e.maybeBind(n,n.getGlobalTypingsCacheLocation)};return{allowsImportingAmbientModule:function(t,r){if(!a.length)return!0;var n=l(t.valueDeclaration.getSourceFile().fileName,r);if(void 0===n)return!0;var i=e.stripQuotes(t.getName());if(u(i))return!0;return c(n)||c(i)},allowsImportingSourceFile:function(e,t){if(!a.length)return!0;var r=l(e.fileName,t);if(!r)return!0;return c(r)},allowsImportingSpecifier:function(t){if(!a.length||u(t))return!0;if(e.pathIsRelative(t)||e.isRootedDiskPath(t))return!0;return c(t)}};function c(t){for(var r=_(t),n=0,i=a;n<i.length;n++){var s=i[n];if(s.has(r,o)||s.has(e.getTypesPackageName(r),o))return!0}return!1}function u(r){return!!(e.isSourceFileJS(t)&&e.JsTyping.nodeCoreModules.has(r)&&(void 0===i&&(i=e.consumesNodeCoreModules(t)),i))}function l(i,a){if(e.stringContains(i,"node_modules")){var o=e.moduleSpecifiers.getNodeModulesPackageName(n.getCompilationSettings(),t.path,i,s,a,r.redirectTargetsMap);if(o)return e.pathIsRelative(o)||e.isRootedDiskPath(o)?void 0:_(o)}}function _(t){var r=e.getPathComponents(e.getPackageNameFromTypesPackageName(t)).slice(1);return e.startsWith(r[0],"@")?r[0]+"/"+r[1]:r[0]}}n.registerCodeFix({errorCodes:o,getCodeActions:function(t){var r=t.errorCode,n=t.preferences,i=t.sourceFile,a=t.span,o=d(t,r,a.start);if(o){var s=o.fixes,c=o.symbolName,u=e.getQuotePreference(i,n);return s.map((function(e){return g(t,i,c,e,u)}))}},fixIds:[n.importFixId],getAllCodeActions:function(t){var r=t.sourceFile,i=t.preferences,a=[],s=[],c=e.createMap(),u=e.createMap();return n.eachDiagnostic(t,o,(function(r){var n=d(t,r.code,r.start);if(n&&n.fixes.length){var i=n.fixes,o=n.symbolName,l=e.first(i);switch(l.kind){case 0:a.push(l);break;case 1:s.push(l);break;case 2:var _=l.importClause,p=l.importKind,f=String(e.getNodeId(_));(m=c.get(f))||c.set(f,m={importClause:_,defaultImport:void 0,namedImports:[]}),0===p?e.pushIfUnique(m.namedImports,o):(e.Debug.assert(void 0===m.defaultImport||m.defaultImport===o,"(Add to Existing) Default import should be missing or match symbolName"),m.defaultImport=o);break;case 3:var m,g=l.moduleSpecifier;p=l.importKind;switch((m=u.get(g))||u.set(g,m={defaultImport:void 0,namedImports:[],namespaceLikeImport:void 0}),p){case 1:e.Debug.assert(void 0===m.defaultImport||m.defaultImport===o,"(Add new) Default import should be missing or match symbolName"),m.defaultImport=o;break;case 0:e.pushIfUnique(m.namedImports,o);break;case 3:case 2:e.Debug.assert(void 0===m.namespaceLikeImport||m.namespaceLikeImport.name===o,"Namespacelike import shoudl be missing or match symbolName"),m.namespaceLikeImport={importKind:p,name:o}}break;default:e.Debug.assertNever(l,"fix wasn't never - got kind "+l.kind)}}})),n.createCombinedCodeActions(e.textChanges.ChangeTracker.with(t,(function(t){for(var n=e.getQuotePreference(r,i),o=0,l=a;o<l.length;o++){var _=l[o];h(t,r,_)}for(var d=0,p=s;d<p.length;d++){_=p[d];v(t,r,_,n)}c.forEach((function(e){var n=e.importClause,i=e.defaultImport,a=e.namedImports;y(t,r,n,i,a)})),u.forEach((function(e,i){x(t,r,i,n,e)}))})))}}),function(e){e[e.UseNamespace=0]="UseNamespace",e[e.ImportType=1]="ImportType",e[e.AddToExisting=2]="AddToExisting",e[e.AddNew=3]="AddNew"}(i||(i={})),function(e){e[e.Named=0]="Named",e[e.Default=1]="Default",e[e.Namespace=2]="Namespace",e[e.Equals=3]="Equals",e[e.ConstEquals=4]="ConstEquals"}(a||(a={})),n.getImportCompletionAction=function(t,r,n,i,a,o,_,d,p){var m=function(t,r,n,i,a,o,s,u){var l=[];return T(s,u,(function(u,_){if(!_||u===n||!e.startsWith(a.fileName,e.getDirectoryPath(_.fileName))){var d=f(t,u,s,o);d&&d.name===i&&e.skipAlias(d.symbol,s)===r&&l.push({moduleSymbol:u,importKind:d.kind,exportedSymbolIsTypeOnly:c(d.symbol,s)});for(var p=0,m=s.getExportsOfModule(u);p<m.length;p++){var g=m[p];g.name===i&&e.skipAlias(g,s)===r&&l.push({moduleSymbol:u,importKind:0,exportedSymbolIsTypeOnly:c(g,s)})}}})),l}(n,t,r,i,n,o.getCompilerOptions(),o.getTypeChecker(),o.getSourceFiles());return e.Debug.assert(m.some((function(e){return e.moduleSymbol===r})),"Some exportInfo should match the specified moduleSymbol"),{moduleSpecifier:e.first(l(o,n,d,m,a,p)).moduleSpecifier,codeAction:s(g({host:a,formatContext:_,preferences:p},n,i,e.first(u(m,i,d,o,n,a,p)),e.getQuotePreference(n,p)))}},n.forEachExternalModuleToImportFrom=S,n.moduleSymbolToValidIdentifier=E,n.moduleSpecifierToValidIdentifier=C}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r=[e.Diagnostics.Property_0_does_not_exist_on_type_1_Did_you_mean_2.code,e.Diagnostics.Cannot_find_name_0_Did_you_mean_1.code,e.Diagnostics.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0.code,e.Diagnostics.Cannot_find_name_0_Did_you_mean_the_static_member_1_0.code,e.Diagnostics.Module_0_has_no_exported_member_1_Did_you_mean_2.code];function n(t,r,n){var i,a=e.getTokenAtPosition(t,r),o=n.program.getTypeChecker();if(e.isPropertyAccessExpression(a.parent)&&a.parent.name===a){e.Debug.assert(75===a.kind,"Expected an identifier for spelling (property access)");var s=o.getTypeAtLocation(a.parent.expression);i=o.getSuggestionForNonexistentProperty(a,s)}else if(e.isImportSpecifier(a.parent)&&a.parent.name===a){e.Debug.assert(75===a.kind,"Expected an identifier for spelling (import)");var c=function(t,r,n){if(!n||!e.isStringLiteralLike(n.moduleSpecifier))return;var i=e.getResolvedModule(t,n.moduleSpecifier.text);return i?r.program.getSourceFile(i.resolvedFileName):void 0}(t,n,e.findAncestor(a,e.isImportDeclaration));c&&c.symbol&&(i=o.getSuggestionForNonexistentExport(a,c.symbol))}else{var u=e.getMeaningFromLocation(a),l=e.getTextOfNode(a);e.Debug.assert(void 0!==l,"name should be defined"),i=o.getSuggestionForNonexistentSymbol(a,l,function(e){var t=0;4&e&&(t|=1920);2&e&&(t|=788968);1&e&&(t|=111551);return t}(u))}return void 0===i?void 0:{node:a,suggestion:i}}function i(t,r,n,i,a){!e.isIdentifierText(i,a)&&e.isPropertyAccessExpression(n.parent)?t.replaceNode(r,n.parent,e.createElementAccess(n.parent.expression,e.createLiteral(i))):t.replaceNode(r,n,e.createIdentifier(i))}t.registerCodeFix({errorCodes:r,getCodeActions:function(r){var a=r.sourceFile,o=n(a,r.span.start,r);if(o){var s=o.node,c=o.suggestion,u=r.host.getCompilationSettings().target,l=e.textChanges.ChangeTracker.with(r,(function(e){return i(e,a,s,c,u)}));return[t.createCodeFixAction("spelling",l,[e.Diagnostics.Change_spelling_to_0,c],"fixSpelling",e.Diagnostics.Fix_all_detected_spelling_errors)]}},fixIds:["fixSpelling"],getAllCodeActions:function(e){return t.codeFixAll(e,r,(function(t,r){var a=n(r.file,r.start,e),o=e.host.getCompilationSettings().target;a&&i(t,e.sourceFile,a.node,a.suggestion,o)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r,n="addMissingMember",i=[e.Diagnostics.Property_0_does_not_exist_on_type_1.code,e.Diagnostics.Property_0_does_not_exist_on_type_1_Did_you_mean_2.code,e.Diagnostics.Property_0_is_missing_in_type_1_but_required_in_type_2.code,e.Diagnostics.Type_0_is_missing_the_following_properties_from_type_1_Colon_2.code,e.Diagnostics.Type_0_is_missing_the_following_properties_from_type_1_Colon_2_and_3_more.code],a="addMissingMember";function o(t,r,n,i){var a=e.getTokenAtPosition(t,r);if(e.isIdentifier(a)){var o=a.parent;if(e.isPropertyAccessExpression(o)){var s=e.skipConstraint(n.getTypeAtLocation(o.expression)),c=s.symbol;if(c&&c.declarations){var u=e.find(c.declarations,e.isClassLike)||e.find(c.declarations,e.isInterfaceDeclaration);if(u&&!i.isSourceFileFromExternalLibrary(u.getSourceFile())){var l=(s.target||s)!==n.getDeclaredTypeOfSymbol(c),_=u.getSourceFile();return{kind:1,token:a,parentDeclaration:u,makeStatic:l,declSourceFile:_,inJs:e.isSourceFileJS(_),call:e.tryCast(o.parent,e.isCallExpression)}}var d=e.find(c.declarations,e.isEnumDeclaration);return d&&!i.isSourceFileFromExternalLibrary(d.getSourceFile())?{kind:0,token:a,parentDeclaration:d}:void 0}}}}function s(t,r,n,i,a){if(a){if(213===n.kind)return;var o=n.name.getText(),s=c(e.createIdentifier(o),i);t.insertNodeAfter(r,n,s)}else{var u=e.getFirstConstructorWithBody(n);if(!u)return;var l=c(e.createThis(),i);t.insertNodeAtConstructorEnd(r,u,l)}}function c(t,r){return e.createStatement(e.createAssignment(e.createPropertyAccess(t,r),e.createIdentifier("undefined")))}function u(t,r,n){var i;if(208===n.parent.parent.kind){var a=n.parent.parent,o=n.parent===a.left?a.right:a.left,s=t.getWidenedType(t.getBaseTypeOfLiteralType(t.getTypeAtLocation(o)));i=t.typeToTypeNode(s,r)}else{var c=t.getContextualType(n.parent);i=c?t.typeToTypeNode(c):void 0}return i||e.createKeywordTypeNode(124)}function l(t,r,n,i,a,o){var s=e.createProperty(void 0,o?[e.createToken(119)]:void 0,i,void 0,a,void 0),c=function(t){for(var r,n=0,i=t.members;n<i.length;n++){var a=i[n];if(!e.isPropertyDeclaration(a))break;r=a}return r}(n);c?t.insertNodeAfter(r,c,s):t.insertNodeAtClassStart(r,n,s)}function _(r,i,a,o,s){var c=e.createKeywordTypeNode(142),u=e.createParameter(void 0,void 0,void 0,"x",void 0,c,void 0),l=e.createIndexSignature(void 0,void 0,[u],s),_=e.textChanges.ChangeTracker.with(r,(function(e){return e.insertNodeAtClassStart(i,a,l)}));return t.createCodeFixActionNoFixId(n,_,[e.Diagnostics.Add_index_signature_for_property_0,o])}function d(r,n,i,a,o,s,c,u,l){var _=t.createMethodFromCallExpression(r,s,o.text,u,c,l,a),d=e.getAncestor(s,160);d&&d.parent===a?n.insertNodeAfter(i,d,_):n.insertNodeAtClassStart(i,a,_)}function p(t,r,n,i){var a=e.some(i.members,(function(e){var t=r.getTypeAtLocation(e);return!!(t&&132&t.flags)})),o=e.createEnumMember(n,a?e.createStringLiteral(n.text):void 0);t.replaceNode(i.getSourceFile(),i,e.updateEnumDeclaration(i,i.decorators,i.modifiers,i.name,e.concatenate(i.members,e.singleElementArray(o))))}t.registerCodeFix({errorCodes:i,getCodeActions:function(r){var i=o(r.sourceFile,r.span.start,r.program.getTypeChecker(),r.program);if(i){if(0===i.kind){var c=i.token,f=i.parentDeclaration,m=e.textChanges.ChangeTracker.with(r,(function(e){return p(e,r.program.getTypeChecker(),c,f)}));return[t.createCodeFixAction(n,m,[e.Diagnostics.Add_missing_enum_member_0,c.text],a,e.Diagnostics.Add_all_missing_members)]}var g=i.parentDeclaration,y=i.declSourceFile,h=i.inJs,v=i.makeStatic,b=i.token,x=i.call,D=x&&function(r,i,o,s,c,u,l,_){var p=e.textChanges.ChangeTracker.with(r,(function(e){return d(r,e,i,o,s,c,u,l,_)}));return t.createCodeFixAction(n,p,[u?e.Diagnostics.Declare_static_method_0:e.Diagnostics.Declare_method_0,s.text],a,e.Diagnostics.Add_all_missing_members)}(r,y,g,b,x,v,h,r.preferences),S=h&&!e.isInterfaceDeclaration(g)?e.singleElementArray(function(r,i,o,c,u){var l=e.textChanges.ChangeTracker.with(r,(function(e){return s(e,i,o,c,u)}));return 0===l.length?void 0:t.createCodeFixAction(n,l,[u?e.Diagnostics.Initialize_static_property_0:e.Diagnostics.Initialize_property_0_in_the_constructor,c],a,e.Diagnostics.Add_all_missing_members)}(r,y,g,b.text,v)):function(r,i,o,s,c){var d=u(r.program.getTypeChecker(),o,s),p=function(r,i,o,s,c,u){var _=e.textChanges.ChangeTracker.with(r,(function(e){return l(e,i,o,c,u,s)}));return t.createCodeFixAction(n,_,[s?e.Diagnostics.Declare_static_property_0:e.Diagnostics.Declare_property_0,c],a,e.Diagnostics.Add_all_missing_members)}(r,i,o,c,s.text,d);return c?[p]:[p,_(r,i,o,s.text,d)]}(r,y,g,b,v);return e.concatenate(e.singleElementArray(D),S)}},fixIds:[a],getAllCodeActions:function(r){var n=r.program,a=r.preferences,c=n.getTypeChecker(),_=e.createMap(),f=new e.NodeMap;return t.createCombinedCodeActions(e.textChanges.ChangeTracker.with(r,(function(m){t.eachDiagnostic(r,i,(function(t){var n=o(t.file,t.start,c,r.program);if(n&&e.addToSeen(_,e.getNodeId(n.parentDeclaration)+"#"+n.token.text))if(0===n.kind){var i=n.token,a=n.parentDeclaration;p(m,c,i,a)}else{a=n.parentDeclaration;var s=n.token,u=f.getOrUpdate(a,(function(){return[]}));u.some((function(e){return e.token.text===s.text}))||u.push(n)}})),f.forEach((function(t,i){for(var o=function(t,r){var n=[];for(;t;){var i=e.getClassExtendsHeritageElement(t),a=i&&r.getSymbolAtLocation(i.expression),o=a&&e.find(a.declarations,e.isClassLike);o&&n.push(o),t=o}return n}(i,c),_=function(t){if(o.some((function(e){var r=f.get(e);return!!r&&r.some((function(e){return e.token.text===t.token.text}))})))return"continue";var i=t.parentDeclaration,c=t.declSourceFile,_=t.inJs,p=t.makeStatic,g=t.token,y=t.call;if(y)d(r,m,c,i,g,y,p,_,a);else if(_&&!e.isInterfaceDeclaration(i))s(m,c,i,g.text,p);else{var h=u(n.getTypeChecker(),i,g);l(m,c,i,g.text,h,p)}},p=0,g=t;p<g.length;p++){_(g[p])}}))})))}}),function(e){e[e.Enum=0]="Enum",e[e.ClassOrInterface=1]="ClassOrInterface"}(r||(r={}))}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="addMissingNewOperator",n=[e.Diagnostics.Value_of_type_0_is_not_callable_Did_you_mean_to_include_new.code];function i(t,r,n){var i=e.cast(function(t,r){var n=e.getTokenAtPosition(t,r.start),i=e.textSpanEnd(r);for(;n.end<i;)n=n.parent;return n}(r,n),e.isCallExpression),a=e.createNew(i.expression,i.typeArguments,i.arguments);t.replaceNode(r,i,a)}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var a=n.sourceFile,o=n.span,s=e.textChanges.ChangeTracker.with(n,(function(e){return i(e,a,o)}));return[t.createCodeFixAction(r,s,e.Diagnostics.Add_missing_new_operator_to_call,r,e.Diagnostics.Add_missing_new_operator_to_all_calls)]},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(t,r){return i(t,e.sourceFile,r)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r=e.Diagnostics.Cannot_find_module_0.code,n=[r,e.Diagnostics.Could_not_find_a_declaration_file_for_module_0_1_implicitly_has_an_any_type.code];function i(e,t){return{type:"install package",file:e,packageName:t}}function a(t,r){var n=e.cast(e.getTokenAtPosition(t,r),e.isStringLiteral).text,i=e.parsePackageName(n).packageName;return e.isExternalModuleNameRelative(i)?void 0:i}function o(t,n,i){return i===r?e.JsTyping.nodeCoreModules.has(t)?"@types/node":void 0:n.isKnownTypesPackageName(t)?e.getTypesPackageName(t):void 0}t.registerCodeFix({errorCodes:n,getCodeActions:function(r){var n=r.host,s=r.sourceFile,c=a(s,r.span.start);if(void 0!==c){var u=o(c,n,r.errorCode);return void 0===u?[]:[t.createCodeFixAction("fixCannotFindModule",[],[e.Diagnostics.Install_0,u],"installTypesPackage",e.Diagnostics.Install_all_missing_types_packages,i(s.fileName,u))]}},fixIds:["installTypesPackage"],getAllCodeActions:function(r){return t.codeFixAll(r,n,(function(t,n,s){var c=a(n.file,n.start);if(void 0!==c)switch(r.fixId){case"installTypesPackage":var u=o(c,r.host,n.code);u&&s.push(i(n.file.fileName,u));break;default:e.Debug.fail("Bad fixId: "+r.fixId)}}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r=[e.Diagnostics.Non_abstract_class_0_does_not_implement_inherited_abstract_member_1_from_class_2.code,e.Diagnostics.Non_abstract_class_expression_does_not_implement_inherited_abstract_member_0_from_class_1.code],n="fixClassDoesntImplementInheritedAbstractMember";function i(t,r){var n=e.getTokenAtPosition(t,r);return e.cast(n.parent,e.isClassLike)}function a(r,n,i,a,s){var c=e.getEffectiveBaseTypeNode(r),u=i.program.getTypeChecker(),l=u.getTypeAtLocation(c),_=u.getPropertiesOfType(l).filter(o);t.createMissingMemberNodes(r,_,i,s,(function(e){return a.insertNodeAtClassStart(n,r,e)}))}function o(t){var r=e.getModifierFlags(e.first(t.getDeclarations()));return!(8&r||!(128&r))}t.registerCodeFix({errorCodes:r,getCodeActions:function(r){var o=r.sourceFile,s=r.span,c=e.textChanges.ChangeTracker.with(r,(function(e){return a(i(o,s.start),o,r,e,r.preferences)}));return 0===c.length?void 0:[t.createCodeFixAction(n,c,e.Diagnostics.Implement_inherited_abstract_class,n,e.Diagnostics.Implement_all_inherited_abstract_classes)]},fixIds:[n],getAllCodeActions:function(n){var o=e.createMap();return t.codeFixAll(n,r,(function(t,r){var s=i(r.file,r.start);e.addToSeen(o,e.getNodeId(s))&&a(s,n.sourceFile,n,t,n.preferences)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="classSuperMustPrecedeThisAccess",n=[e.Diagnostics.super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class.code];function i(e,t,r,n){e.insertNodeAtConstructorStart(t,r,n),e.delete(t,n)}function a(t,r){var n=e.getTokenAtPosition(t,r);if(103===n.kind){var i=e.getContainingFunction(n),a=o(i.body);return a&&!a.expression.arguments.some((function(t){return e.isPropertyAccessExpression(t)&&t.expression===n}))?{constructor:i,superCall:a}:void 0}}function o(t){return e.isExpressionStatement(t)&&e.isSuperCall(t.expression)?t:e.isFunctionLike(t)?void 0:e.forEachChild(t,o)}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var o=n.sourceFile,s=n.span,c=a(o,s.start);if(c){var u=c.constructor,l=c.superCall,_=e.textChanges.ChangeTracker.with(n,(function(e){return i(e,o,u,l)}));return[t.createCodeFixAction(r,_,e.Diagnostics.Make_super_call_the_first_statement_in_the_constructor,r,e.Diagnostics.Make_all_super_calls_the_first_statement_in_their_constructor)]}},fixIds:[r],getAllCodeActions:function(r){var o=r.sourceFile,s=e.createMap();return t.codeFixAll(r,n,(function(t,r){var n=a(r.file,r.start);if(n){var c=n.constructor,u=n.superCall;e.addToSeen(s,e.getNodeId(c.parent))&&i(t,o,c,u)}}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="constructorForDerivedNeedSuperCall",n=[e.Diagnostics.Constructors_for_derived_classes_must_contain_a_super_call.code];function i(t,r){var n=e.getTokenAtPosition(t,r);return e.Debug.assert(128===n.kind,"token should be at the constructor keyword"),n.parent}function a(t,r,n){var i=e.createStatement(e.createCall(e.createSuper(),void 0,e.emptyArray));t.insertNodeAtConstructorStart(r,n,i)}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var o=n.sourceFile,s=n.span,c=i(o,s.start),u=e.textChanges.ChangeTracker.with(n,(function(e){return a(e,o,c)}));return[t.createCodeFixAction(r,u,e.Diagnostics.Add_missing_super_call,r,e.Diagnostics.Add_all_missing_super_calls)]},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(t,r){return a(t,e.sourceFile,i(r.file,r.start))}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="enableExperimentalDecorators",n=[e.Diagnostics.Experimental_support_for_decorators_is_a_feature_that_is_subject_to_change_in_a_future_release_Set_the_experimentalDecorators_option_in_your_tsconfig_or_jsconfig_to_remove_this_warning.code];function i(r,n){t.setJsonCompilerOptionValue(r,n,"experimentalDecorators",e.createTrue())}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var a=n.program.getCompilerOptions().configFile;if(void 0!==a){var o=e.textChanges.ChangeTracker.with(n,(function(e){return i(e,a)}));return[t.createCodeFixActionNoFixId(r,o,e.Diagnostics.Enable_the_experimentalDecorators_option_in_your_configuration_file)]}},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(t){var r=e.program.getCompilerOptions().configFile;void 0!==r&&i(t,r)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="fixEnableJsxFlag",n=[e.Diagnostics.Cannot_use_JSX_unless_the_jsx_flag_is_provided.code];function i(r,n){t.setJsonCompilerOptionValue(r,n,"jsx",e.createStringLiteral("react"))}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var a=n.program.getCompilerOptions().configFile;if(void 0!==a){var o=e.textChanges.ChangeTracker.with(n,(function(e){return i(e,a)}));return[t.createCodeFixActionNoFixId(r,o,e.Diagnostics.Enable_the_jsx_flag_in_your_configuration_file)]}},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(t){var r=e.program.getCompilerOptions().configFile;void 0!==r&&i(t,r)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="extendsInterfaceBecomesImplements",n=[e.Diagnostics.Cannot_extend_an_interface_0_Did_you_mean_implements.code];function i(t,r){var n=e.getTokenAtPosition(t,r),i=e.getContainingClass(n).heritageClauses,a=i[0].getFirstToken();return 89===a.kind?{extendsToken:a,heritageClauses:i}:void 0}function a(t,r,n,i){if(t.replaceNode(r,n,e.createToken(112)),2===i.length&&89===i[0].token&&112===i[1].token){var a=i[1].getFirstToken(),o=a.getFullStart();t.replaceRange(r,{pos:o,end:o},e.createToken(27));for(var s=r.text,c=a.end;c<s.length&&e.isWhiteSpaceSingleLine(s.charCodeAt(c));)c++;t.deleteRange(r,{pos:a.getStart(),end:c})}}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var o=n.sourceFile,s=i(o,n.span.start);if(s){var c=s.extendsToken,u=s.heritageClauses,l=e.textChanges.ChangeTracker.with(n,(function(e){return a(e,o,c,u)}));return[t.createCodeFixAction(r,l,e.Diagnostics.Change_extends_to_implements,r,e.Diagnostics.Change_all_extended_interfaces_to_implements)]}},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(e,t){var r=i(t.file,t.start);r&&a(e,t.file,r.extendsToken,r.heritageClauses)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="forgottenThisPropertyAccess",n=e.Diagnostics.Cannot_find_name_0_Did_you_mean_the_static_member_1_0.code,i=[e.Diagnostics.Cannot_find_name_0_Did_you_mean_the_instance_member_this_0.code,n];function a(t,r,i){var a=e.getTokenAtPosition(t,r);if(e.isIdentifier(a))return{node:a,className:i===n?e.getContainingClass(a).name.text:void 0}}function o(t,r,n){var i=n.node,a=n.className;e.suppressLeadingAndTrailingTrivia(i),t.replaceNode(r,i,e.createPropertyAccess(a?e.createIdentifier(a):e.createThis(),i))}t.registerCodeFix({errorCodes:i,getCodeActions:function(n){var i=n.sourceFile,s=a(i,n.span.start,n.errorCode);if(s){var c=e.textChanges.ChangeTracker.with(n,(function(e){return o(e,i,s)}));return[t.createCodeFixAction(r,c,[e.Diagnostics.Add_0_to_unresolved_variable,s.className||"this"],r,e.Diagnostics.Add_qualifier_to_all_unresolved_variables_matching_a_member_name)]}},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,i,(function(t,r){var n=a(r.file,r.start,r.code);n&&o(t,e.sourceFile,n)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="unusedIdentifier",n="unusedIdentifier_prefix",i="unusedIdentifier_delete",a="unusedIdentifier_infer",o=[e.Diagnostics._0_is_declared_but_its_value_is_never_read.code,e.Diagnostics._0_is_declared_but_never_used.code,e.Diagnostics.Property_0_is_declared_but_its_value_is_never_read.code,e.Diagnostics.All_imports_in_import_declaration_are_unused.code,e.Diagnostics.All_destructured_elements_are_unused.code,e.Diagnostics.All_variables_are_unused.code,e.Diagnostics.All_type_parameters_are_unused.code];function s(t,r,n){t.replaceNode(r,n.parent,e.createKeywordTypeNode(147))}function c(n,a){return t.createCodeFixAction(r,n,a,i,e.Diagnostics.Delete_all_unused_declarations)}function u(t,r,n){t.delete(r,e.Debug.assertDefined(e.cast(n.parent,e.isDeclarationWithTypeParameterChildren).typeParameters,"The type parameter to delete should exist"))}function l(t){return 95===t.kind?e.tryCast(t.parent,e.isImportDeclaration):void 0}function _(t,r,n,i,a,o){if(18!==t.kind||!e.isObjectBindingPattern(t.parent))return!1;var s=t.parent.parent;return 155===s.kind?m(r,n,s,i,a,o):r.delete(n,s),!0}function d(t,r,n){var i=e.tryCast(r.parent,e.isVariableDeclarationList);return!(!i||i.getChildren(t)[0]!==r)&&(n.delete(t,224===i.parent.kind?i.parent:i),!0)}function p(t,r,n,i){r!==e.Diagnostics.Property_0_is_declared_but_its_value_is_never_read.code&&(131===i.kind&&(i=e.cast(i.parent,e.isInferTypeNode).typeParameter.name),e.isIdentifier(i)&&function(e){switch(e.parent.kind){case 155:case 154:return!0;case 241:switch(e.parent.parent.parent.kind){case 231:case 230:return!0}}return!1}(i)&&t.replaceNode(n,i,e.createIdentifier("_"+i.text)))}function f(t,r,n,i,a,o){!function(t,r,n,i,a,o){var s=t.parent;e.isParameter(s)?m(r,n,s,i,a,o):r.delete(n,e.isImportClause(s)?t:e.isComputedPropertyName(s)?s.parent:s)}(r,n,t,i,a,o),e.isIdentifier(r)&&function(t,r,n,i){e.FindAllReferences.Core.eachSymbolReferenceInFile(n,i,r,(function(n){e.isPropertyAccessExpression(n.parent)&&n.parent.name===n&&(n=n.parent),e.isBinaryExpression(n.parent)&&e.isExpressionStatement(n.parent.parent)&&n.parent.left===n&&t.delete(r,n.parent.parent)}))}(n,t,r,i)}function m(t,r,n,i,a,o){(function(t,r,n){var i=t.parent;switch(i.kind){case 160:var a=r.getSymbolAtLocation(i.name);if(e.isMemberSymbolInBaseType(a,r))return!1;case 161:case 243:return!0;case 200:case 201:var o=i.parameters,s=o.indexOf(t);return e.Debug.assert(-1!==s,"The parameter should already be in the list"),n?o.slice(s+1).every((function(e){return 75===e.name.kind&&!e.symbol.isReferenced})):s===o.length-1;case 163:return!1;default:return e.Debug.failBadSyntaxKind(i)}})(n,i,o)&&(n.modifiers&&n.modifiers.length>0&&(!e.isIdentifier(n.name)||e.FindAllReferences.Core.isSymbolReferencedInFile(n.name,i,r))?n.modifiers.forEach((function(e){t.deleteModifier(r,e)})):(t.delete(r,n),function(t,r,n,i,a){e.FindAllReferences.Core.eachSignatureCall(n.parent,i,a,(function(e){var i=n.parent.parameters.indexOf(n);e.arguments.length>i&&t.delete(r,e.arguments[i])}))}(t,r,n,a,i)))}t.registerCodeFix({errorCodes:o,getCodeActions:function(i){var o=i.errorCode,m=i.sourceFile,g=i.program,y=g.getTypeChecker(),h=g.getSourceFiles(),v=e.getTokenAtPosition(m,i.span.start);if(e.isJSDocTemplateTag(v))return[c(e.textChanges.ChangeTracker.with(i,(function(e){return e.delete(m,v)})),e.Diagnostics.Remove_template_tag)];if(29===v.kind)return[c(T=e.textChanges.ChangeTracker.with(i,(function(e){return u(e,m,v)})),e.Diagnostics.Remove_type_parameters)];var b=l(v);if(b)return[c(T=e.textChanges.ChangeTracker.with(i,(function(e){return e.delete(m,b)})),[e.Diagnostics.Remove_import_from_0,e.showModuleSpecifier(b)])];var x=e.textChanges.ChangeTracker.with(i,(function(e){return _(v,e,m,y,h,!1)}));if(x.length)return[c(x,e.Diagnostics.Remove_destructuring)];var D=e.textChanges.ChangeTracker.with(i,(function(e){return d(m,v,e)}));if(D.length)return[c(D,e.Diagnostics.Remove_variable_statement)];var S=[];if(131===v.kind){var T=e.textChanges.ChangeTracker.with(i,(function(e){return s(e,m,v)})),E=e.cast(v.parent,e.isInferTypeNode).typeParameter.name.text;S.push(t.createCodeFixAction(r,T,[e.Diagnostics.Replace_infer_0_with_unknown,E],a,e.Diagnostics.Replace_all_unused_infer_with_unknown))}else{var C=e.textChanges.ChangeTracker.with(i,(function(e){return f(m,v,e,y,h,!1)}));if(C.length){E=e.isComputedPropertyName(v.parent)?v.parent:v;S.push(c(C,[e.Diagnostics.Remove_declaration_for_Colon_0,E.getText(m)]))}}var k=e.textChanges.ChangeTracker.with(i,(function(e){return p(e,o,m,v)}));return k.length&&S.push(t.createCodeFixAction(r,k,[e.Diagnostics.Prefix_0_with_an_underscore,v.getText(m)],n,e.Diagnostics.Prefix_all_unused_declarations_with_where_possible)),S},fixIds:[n,i,a],getAllCodeActions:function(r){var c=r.sourceFile,m=r.program,g=m.getTypeChecker(),y=m.getSourceFiles();return t.codeFixAll(r,o,(function(t,o){var m=e.getTokenAtPosition(c,o.start);switch(r.fixId){case n:p(t,o.code,c,m);break;case i:if(131===m.kind)break;var h=l(m);h?t.delete(c,h):e.isJSDocTemplateTag(m)?t.delete(c,m):29===m.kind?u(t,c,m):_(m,t,c,g,y,!0)||d(c,m,t)||f(c,m,t,g,y,!0);break;case a:131===m.kind&&s(t,c,m);break;default:e.Debug.fail(JSON.stringify(r.fixId))}}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="fixUnreachableCode",n=[e.Diagnostics.Unreachable_code_detected.code];function i(t,r,n,i){var a=e.getTokenAtPosition(r,n),o=e.findAncestor(a,e.isStatement);e.Debug.assert(o.getStart(r)===a.getStart(r),"token and statement should start at the same point");var s=(e.isBlock(o.parent)?o.parent:o).parent;if(!e.isBlock(o.parent)||o===e.first(o.parent.statements))switch(s.kind){case 226:if(s.elseStatement){if(e.isBlock(o.parent))break;return void t.replaceNode(r,o,e.createBlock(e.emptyArray))}case 228:case 229:return void t.delete(r,s)}if(e.isBlock(o.parent)){var c=n+i,u=e.Debug.assertDefined(function(e,t){for(var r,n=0,i=e;n<i.length;n++){var a=i[n];if(!t(a))break;r=a}return r}(e.sliceAfter(o.parent.statements,o),(function(e){return e.pos<c})),"Some statement should be last");t.deleteNodeRange(r,o,u)}else t.delete(r,o)}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var a=e.textChanges.ChangeTracker.with(n,(function(e){return i(e,n.sourceFile,n.span.start,n.span.length)}));return[t.createCodeFixAction(r,a,e.Diagnostics.Remove_unreachable_code,r,e.Diagnostics.Remove_all_unreachable_code)]},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(e,t){return i(e,t.file,t.start,t.length)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="fixUnusedLabel",n=[e.Diagnostics.Unused_label.code];function i(t,r,n){var i=e.getTokenAtPosition(r,n),a=e.cast(i.parent,e.isLabeledStatement),o=i.getStart(r),s=a.statement.getStart(r),c=e.positionsAreOnSameLine(o,s,r)?s:e.skipTrivia(r.text,e.findChildOfKind(a,58,r).end,!0);t.deleteRange(r,{pos:o,end:c})}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var a=e.textChanges.ChangeTracker.with(n,(function(e){return i(e,n.sourceFile,n.span.start)}));return[t.createCodeFixAction(r,a,e.Diagnostics.Remove_unused_label,r,e.Diagnostics.Remove_all_unused_labels)]},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(e,t){return i(e,t.file,t.start)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r=[e.Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments.code];function n(e,t,r,n,i){e.replaceNode(t,r,i.typeToTypeNode(n,r))}function i(t,r,n){var i=e.findAncestor(e.getTokenAtPosition(t,r),a),o=i&&i.type;return o&&{typeNode:o,type:n.getTypeFromTypeNode(o)}}function a(e){switch(e.kind){case 216:case 164:case 165:case 243:case 162:case 166:case 185:case 160:case 159:case 155:case 158:case 157:case 163:case 246:case 198:case 241:return!0;default:return!1}}t.registerCodeFix({errorCodes:r,getCodeActions:function(r){var a=r.sourceFile,o=r.program.getTypeChecker(),s=i(a,r.span.start,o);if(s){var c=s.typeNode,u=s.type,l=c.getText(a),_=[d(u,"fixJSDocTypes_plain",e.Diagnostics.Change_all_jsdoc_style_types_to_TypeScript)];return 295===c.kind&&_.push(d(o.getNullableType(u,32768),"fixJSDocTypes_nullable",e.Diagnostics.Change_all_jsdoc_style_types_to_TypeScript_and_add_undefined_to_nullable_types)),_}function d(i,s,u){var _=e.textChanges.ChangeTracker.with(r,(function(e){return n(e,a,c,i,o)}));return t.createCodeFixAction("jdocTypes",_,[e.Diagnostics.Change_0_to_1,l,o.typeToString(i)],s,u)}},fixIds:["fixJSDocTypes_plain","fixJSDocTypes_nullable"],getAllCodeActions:function(e){var a=e.fixId,o=e.program,s=e.sourceFile,c=o.getTypeChecker();return t.codeFixAll(e,r,(function(e,t){var r=i(t.file,t.start,c);if(r){var o=r.typeNode,u=r.type,l=295===o.kind&&"fixJSDocTypes_nullable"===a?c.getNullableType(u,32768):u;n(e,s,o,l,c)}}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="fixAwaitInSyncFunction",n=[e.Diagnostics.await_expression_is_only_allowed_within_an_async_function.code,e.Diagnostics.A_for_await_of_statement_is_only_allowed_within_an_async_function_or_async_generator.code];function i(t,r){var n=e.getTokenAtPosition(t,r),i=e.getContainingFunction(n);if(i){var a,o;switch(i.kind){case 160:a=i.name;break;case 243:case 200:a=e.findChildOfKind(i,93,t);break;case 201:a=e.findChildOfKind(i,20,t)||e.first(i.parameters);break;default:return}return a&&{insertBefore:a,returnType:(o=i,o.type?o.type:e.isVariableDeclaration(o.parent)&&o.parent.type&&e.isFunctionTypeNode(o.parent.type)?o.parent.type.type:void 0)}}}function a(t,r,n){var i=n.insertBefore,a=n.returnType;if(a){var o=e.getEntityNameFromTypeNode(a);o&&75===o.kind&&"Promise"===o.text||t.replaceNode(r,a,e.createTypeReferenceNode("Promise",e.createNodeArray([a])))}t.insertModifierBefore(r,125,i)}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var o=n.sourceFile,s=n.span,c=i(o,s.start);if(c){var u=e.textChanges.ChangeTracker.with(n,(function(e){return a(e,o,c)}));return[t.createCodeFixAction(r,u,e.Diagnostics.Add_async_modifier_to_containing_function,r,e.Diagnostics.Add_all_missing_async_modifiers)]}},fixIds:[r],getAllCodeActions:function(r){var o=e.createMap();return t.codeFixAll(r,n,(function(t,n){var s=i(n.file,n.start);s&&e.addToSeen(o,e.getNodeId(s.insertBefore))&&a(t,r.sourceFile,s)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="disableJsDiagnostics",n=e.mapDefined(Object.keys(e.Diagnostics),(function(t){var r=e.Diagnostics[t];return r.category===e.DiagnosticCategory.Error?r.code:void 0}));function i(t,r,n,i){var a=e.getLineAndCharacterOfPosition(r,n).line;i&&!e.addToSeen(i,a)||t.insertCommentBeforeLine(r,a,n," @ts-ignore")}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var a=n.sourceFile,o=n.program,s=n.span,c=n.host,u=n.formatContext;if(e.isInJSFile(a)&&e.isCheckJsEnabledForFile(a,o.getCompilerOptions())){var l=[t.createCodeFixActionNoFixId("disableJsDiagnostics",[t.createFileTextChanges(a.fileName,[e.createTextChange(a.checkJsDirective?e.createTextSpanFromBounds(a.checkJsDirective.pos,a.checkJsDirective.end):e.createTextSpan(0,0),"// @ts-nocheck"+e.getNewLineOrDefaultFromHost(c,u.options))])],e.Diagnostics.Disable_checking_for_this_file)];return e.textChanges.isValidLocationToAddComment(a,s.start)&&l.unshift(t.createCodeFixAction("disableJsDiagnostics",e.textChanges.ChangeTracker.with(n,(function(e){return i(e,a,s.start)})),e.Diagnostics.Ignore_this_error_message,r,e.Diagnostics.Add_ts_ignore_to_all_error_messages)),l}},fixIds:[r],getAllCodeActions:function(r){var a=e.createMap();return t.codeFixAll(r,n,(function(t,r){e.textChanges.isValidLocationToAddComment(r.file,r.start)&&i(t,r.file,r.start,a)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){function r(e){return{directoryExists:e.host.directoryExists?function(t){return e.host.directoryExists(t)}:void 0,fileExists:e.host.fileExists?function(t){return e.host.fileExists(t)}:void 0,getCurrentDirectory:e.host.getCurrentDirectory?function(){return e.host.getCurrentDirectory()}:void 0,readFile:e.host.readFile?function(t){return e.host.readFile(t)}:void 0,useCaseSensitiveFileNames:e.host.useCaseSensitiveFileNames?function(){return e.host.useCaseSensitiveFileNames()}:void 0,getSourceFiles:function(){return e.program.getSourceFiles()},getCommonSourceDirectory:function(){return e.program.getCommonSourceDirectory()}}}function n(t){return{trackSymbol:e.noop,moduleResolverHost:r(t)}}function i(t,r,i,s,c){var u=t.getDeclarations();if(u&&u.length){var l=i.program.getTypeChecker(),_=u[0],d=e.getSynthesizedDeepClone(e.getNameOfDeclaration(_),!1),p=function(t){if(4&t)return e.createToken(118);if(16&t)return e.createToken(117);return}(e.getModifierFlags(_)),f=p?e.createNodeArray([p]):void 0,m=l.getWidenedType(l.getTypeOfSymbolAtLocation(t,r)),g=!!(16777216&t.flags),y=!!(8388608&r.flags);switch(_.kind){case 157:case 158:var h=l.typeToTypeNode(m,r,void 0,n(i));c(e.createProperty(void 0,f,d,g?e.createToken(57):void 0,h,void 0));break;case 162:case 163:for(var v=e.getAllAccessorDeclarations(u,_),b=l.typeToTypeNode(m,r,void 0,n(i)),x=0,D=v.secondAccessor?[v.firstAccessor,v.secondAccessor]:[v.firstAccessor];x<D.length;x++){var S=D[x];if(e.isGetAccessorDeclaration(S))c(e.createGetAccessor(void 0,f,d,e.emptyArray,b,y?void 0:o(s)));else{e.Debug.assertNode(S,e.isSetAccessorDeclaration,"The counterpart to a getter should be a setter");var T=e.getSetAccessorValueParameter(S),E=T&&e.isIdentifier(T.name)?e.idText(T.name):void 0;c(e.createSetAccessor(void 0,f,d,a(1,[E],[b],1,!1),y?void 0:o(s)))}}break;case 159:case 160:var C=l.getSignaturesOfType(m,0);if(!e.some(C))break;if(1===u.length){e.Debug.assert(1===C.length,"One declaration implies one signature"),A(C[0],f,d,y?void 0:o(s));break}for(var k=0,N=C;k<N.length;k++){A(N[k],e.getSynthesizedDeepClones(f,!1),e.getSynthesizedDeepClone(d,!1))}if(!y)if(u.length>C.length)A(l.getSignatureFromDeclaration(u[u.length-1]),f,d,o(s));else e.Debug.assert(u.length===C.length,"Declarations and signatures should match count"),c(function(t,r,n,i,s){for(var c=t[0],u=t[0].minArgumentCount,l=!1,_=0,d=t;_<d.length;_++){var p=d[_];u=Math.min(p.minArgumentCount,u),e.signatureHasRestParameter(p)&&(l=!0),p.parameters.length>=c.parameters.length&&(!e.signatureHasRestParameter(p)||e.signatureHasRestParameter(c))&&(c=p)}var f=c.parameters.length-(e.signatureHasRestParameter(c)?1:0),m=c.parameters.map((function(e){return e.name})),g=a(f,m,void 0,u,!1);if(l){var y=e.createArrayTypeNode(e.createKeywordTypeNode(124)),h=e.createParameter(void 0,void 0,e.createToken(25),m[f]||"rest",f>=u?e.createToken(57):void 0,y,void 0);g.push(h)}return function(t,r,n,i,a,s,c){return e.createMethod(void 0,t,void 0,r,n?e.createToken(57):void 0,i,a,s,o(c))}(i,r,n,void 0,g,void 0,s)}(C,d,g,f,s))}}function A(t,a,o,s){var u=function(t,r,i,a,o,s,c){var u=t.program.getTypeChecker().signatureToSignatureDeclaration(r,160,i,257,n(t));if(!u)return;return u.decorators=void 0,u.modifiers=a,u.name=o,u.questionToken=s?e.createToken(57):void 0,u.body=c,u}(i,t,r,a,o,g,s);u&&c(u)}}function a(t,r,n,i,a){for(var o=[],s=0;s<t;s++){var c=e.createParameter(void 0,void 0,void 0,r&&r[s]||"arg"+s,void 0!==i&&s>=i?e.createToken(57):void 0,a?void 0:n&&n[s]||e.createKeywordTypeNode(124),void 0);o.push(c)}return o}function o(t){return e.createBlock([e.createThrow(e.createNew(e.createIdentifier("Error"),void 0,[e.createLiteral("Method not implemented.","single"===t.quotePreference)]))],!0)}function s(t,r){return e.createPropertyAssignment(e.createStringLiteral(t),r)}function c(t,r){return e.find(t.properties,(function(t){return e.isPropertyAssignment(t)&&!!t.name&&e.isStringLiteral(t.name)&&t.name.text===r}))}t.createMissingMemberNodes=function(e,t,r,n,a){for(var o=e.symbol.members,s=0,c=t;s<c.length;s++){var u=c[s];o.has(u.escapedName)||i(u,e,r,n,a)}},t.getNoopSymbolTrackerWithResolver=n,t.createMethodFromCallExpression=function(t,r,i,s,c,u,l){var _=!e.isInterfaceDeclaration(l),d=r.typeArguments,p=r.arguments,f=r.parent,m=t.program.getTypeChecker(),g=n(t),y=e.map(p,(function(e){return m.typeToTypeNode(m.getBaseTypeOfLiteralType(m.getTypeAtLocation(e)),l,void 0,g)})),h=e.map(p,(function(t){return e.isIdentifier(t)?t.text:e.isPropertyAccessExpression(t)?t.name.text:void 0})),v=m.getContextualType(r),b=s||!v?void 0:m.typeToTypeNode(v,l,void 0,g);return e.createMethod(void 0,c?[e.createToken(119)]:void 0,e.isYieldExpression(f)?e.createToken(41):void 0,i,void 0,s?void 0:e.map(d,(function(t,r){return e.createTypeParameterDeclaration(84+d.length-1<=90?String.fromCharCode(84+r):"T"+r)})),a(p.length,h,y,void 0,s),b,_?o(u):void 0)},t.setJsonCompilerOptionValue=function(t,r,n,i){var a=e.getTsConfigObjectLiteralExpression(r);if(a){var o=c(a,"compilerOptions");if(void 0!==o){var u=o.initializer;if(e.isObjectLiteralExpression(u)){var l=c(u,n);void 0===l?t.insertNodeAtObjectStart(r,u,s(n,i)):t.replaceNode(r,l.initializer,i)}}else t.insertNodeAtObjectStart(r,a,s("compilerOptions",e.createObjectLiteral([s(n,i)])))}},t.createJsonPropertyAssignment=s,t.findJsonProperty=c}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="invalidImportSyntax";function n(n,i,a,o){var s=e.textChanges.ChangeTracker.with(n,(function(e){return e.replaceNode(i,a,o)}));return t.createCodeFixActionNoFixId(r,s,[e.Diagnostics.Replace_import_with_0,s[0].textChanges[0].newText])}function i(i,a){var o=i.program.getTypeChecker().getTypeAtLocation(a);if(!o.symbol||!o.symbol.originatingImport)return[];var s=[],c=o.symbol.originatingImport;if(e.isImportCall(c)||e.addRange(s,function(t,r){var i=e.getSourceFileOfNode(r),a=e.getNamespaceDeclarationNode(r),o=t.program.getCompilerOptions(),s=[];return s.push(n(t,i,r,e.makeImport(a.name,void 0,r.moduleSpecifier,e.getQuotePreference(i,t.preferences)))),e.getEmitModuleKind(o)===e.ModuleKind.CommonJS&&s.push(n(t,i,r,e.createImportEqualsDeclaration(void 0,void 0,a.name,e.createExternalModuleReference(r.moduleSpecifier)))),s}(i,c)),e.isExpression(a)&&(!e.isNamedDeclaration(a.parent)||a.parent.name!==a)){var u=i.sourceFile,l=e.textChanges.ChangeTracker.with(i,(function(t){return t.replaceNode(u,a,e.createPropertyAccess(a,"default"),{})}));s.push(t.createCodeFixActionNoFixId(r,l,e.Diagnostics.Use_synthetic_default_member))}return s}t.registerCodeFix({errorCodes:[e.Diagnostics.This_expression_is_not_callable.code,e.Diagnostics.This_expression_is_not_constructable.code],getCodeActions:function(t){var r=t.sourceFile,n=e.Diagnostics.This_expression_is_not_callable.code===t.errorCode?195:196,a=e.findAncestor(e.getTokenAtPosition(r,t.span.start),(function(e){return e.kind===n}));if(!a)return[];var o=a.expression;return i(t,o)}}),t.registerCodeFix({errorCodes:[e.Diagnostics.Argument_of_type_0_is_not_assignable_to_parameter_of_type_1.code,e.Diagnostics.Type_0_does_not_satisfy_the_constraint_1.code,e.Diagnostics.Type_0_is_not_assignable_to_type_1.code,e.Diagnostics.Type_0_is_not_assignable_to_type_1_Two_different_types_with_this_name_exist_but_they_are_unrelated.code,e.Diagnostics.Type_predicate_0_is_not_assignable_to_1.code,e.Diagnostics.Property_0_of_type_1_is_not_assignable_to_string_index_type_2.code,e.Diagnostics.Property_0_of_type_1_is_not_assignable_to_numeric_index_type_2.code,e.Diagnostics.Numeric_index_type_0_is_not_assignable_to_string_index_type_1.code,e.Diagnostics.Property_0_in_type_1_is_not_assignable_to_the_same_property_in_base_type_2.code,e.Diagnostics.Property_0_in_type_1_is_not_assignable_to_type_2.code,e.Diagnostics.Property_0_of_JSX_spread_attribute_is_not_assignable_to_target_property.code,e.Diagnostics.The_this_context_of_type_0_is_not_assignable_to_method_s_this_of_type_1.code],getCodeActions:function(t){var r=t.sourceFile,n=e.findAncestor(e.getTokenAtPosition(r,t.span.start),(function(e){return e.getStart()===t.span.start&&e.getEnd()===t.span.start+t.span.length}));if(!n)return[];return i(t,n)}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="strictClassInitialization",n="addMissingPropertyDefiniteAssignmentAssertions",i="addMissingPropertyUndefinedType",a="addMissingPropertyInitializer",o=[e.Diagnostics.Property_0_has_no_initializer_and_is_not_definitely_assigned_in_the_constructor.code];function s(t,r){var n=e.getTokenAtPosition(t,r);return e.isIdentifier(n)?e.cast(n.parent,e.isPropertyDeclaration):void 0}function c(i,a){var o=e.textChanges.ChangeTracker.with(i,(function(e){return u(e,i.sourceFile,a)}));return t.createCodeFixAction(r,o,[e.Diagnostics.Add_definite_assignment_assertion_to_property_0,a.getText()],n,e.Diagnostics.Add_definite_assignment_assertions_to_all_uninitialized_properties)}function u(t,r,n){var i=e.updateProperty(n,n.decorators,n.modifiers,n.name,e.createToken(53),n.type,n.initializer);t.replaceNode(r,n,i)}function l(n,a){var o=e.textChanges.ChangeTracker.with(n,(function(e){return _(e,n.sourceFile,a)}));return t.createCodeFixAction(r,o,[e.Diagnostics.Add_undefined_type_to_property_0,a.name.getText()],i,e.Diagnostics.Add_undefined_type_to_all_uninitialized_properties)}function _(t,r,n){var i=e.createKeywordTypeNode(145),a=n.type,o=e.isUnionTypeNode(a)?a.types.concat(i):[a,i];t.replaceNode(r,a,e.createUnionTypeNode(o))}function d(t,r,n,i){var a=e.updateProperty(n,n.decorators,n.modifiers,n.name,n.questionToken,n.type,i);t.replaceNode(r,n,a)}function p(t,r){return function t(r,n){if(512&n.flags)return n===r.getFalseType()||n===r.getFalseType(!0)?e.createFalse():e.createTrue();if(n.isLiteral())return e.createLiteral(n.value);if(n.isUnion())return e.firstDefined(n.types,(function(e){return t(r,e)}));if(n.isClass()){var i=e.getClassLikeDeclarationOfSymbol(n.symbol);if(!i||e.hasModifier(i,128))return;var a=e.getFirstConstructorWithBody(i);if(a&&a.parameters.length)return;return e.createNew(e.createIdentifier(n.symbol.name),void 0,void 0)}if(r.isArrayLikeType(n))return e.createArrayLiteral();return}(t,t.getTypeFromTypeNode(r.type))}t.registerCodeFix({errorCodes:o,getCodeActions:function(n){var i=s(n.sourceFile,n.span.start);if(i){var o=[l(n,i),c(n,i)];return e.append(o,function(n,i){var o=p(n.program.getTypeChecker(),i);if(!o)return;var s=e.textChanges.ChangeTracker.with(n,(function(e){return d(e,n.sourceFile,i,o)}));return t.createCodeFixAction(r,s,[e.Diagnostics.Add_initializer_to_property_0,i.name.getText()],a,e.Diagnostics.Add_initializers_to_all_uninitialized_properties)}(n,i)),o}},fixIds:[n,i,a],getAllCodeActions:function(r){return t.codeFixAll(r,o,(function(t,o){var c=s(o.file,o.start);if(c)switch(r.fixId){case n:u(t,o.file,c);break;case i:_(t,o.file,c);break;case a:var l=p(r.program.getTypeChecker(),c);if(!l)return;d(t,o.file,c,l);break;default:e.Debug.fail(JSON.stringify(r.fixId))}}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="requireInTs",n=[e.Diagnostics.require_call_may_be_converted_to_an_import.code];function i(t,r,n,i){var a=function(t,r){var n=e.getTokenAtPosition(t,r).parent;if(!e.isRequireCall(n,!0))throw e.Debug.failBadSyntaxKind(n);var i=e.cast(n.parent,e.isVariableDeclaration);return{statement:e.cast(i.parent.parent,e.isVariableStatement),name:e.cast(i.name,e.isIdentifier),required:n.arguments[0]}}(r,n),o=a.statement,s=a.name,c=a.required;t.replaceNode(r,o,e.getAllowSyntheticDefaultImports(i.getCompilerOptions())?e.createImportDeclaration(void 0,void 0,e.createImportClause(s,void 0),c):e.createImportEqualsDeclaration(void 0,void 0,s,e.createExternalModuleReference(c)))}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var a=e.textChanges.ChangeTracker.with(n,(function(e){return i(e,n.sourceFile,n.span.start,n.program)}));return[t.createCodeFixAction(r,a,e.Diagnostics.Convert_require_to_import,r,e.Diagnostics.Convert_all_require_to_import)]},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(t,r){return i(t,r.file,r.start,e.program)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="useDefaultImport",n=[e.Diagnostics.Import_may_be_converted_to_a_default_import.code];function i(t,r){var n=e.getTokenAtPosition(t,r);if(e.isIdentifier(n)){var i=n.parent;if(e.isImportEqualsDeclaration(i)&&e.isExternalModuleReference(i.moduleReference))return{importNode:i,name:n,moduleSpecifier:i.moduleReference.expression};if(e.isNamespaceImport(i)){var a=i.parent.parent;return{importNode:a,name:n,moduleSpecifier:a.moduleSpecifier}}}}function a(t,r,n,i){t.replaceNode(r,n.importNode,e.makeImport(n.name,void 0,n.moduleSpecifier,e.getQuotePreference(r,i)))}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var o=n.sourceFile,s=n.span.start,c=i(o,s);if(c){var u=e.textChanges.ChangeTracker.with(n,(function(e){return a(e,o,c,n.preferences)}));return[t.createCodeFixAction(r,u,e.Diagnostics.Convert_to_default_import,r,e.Diagnostics.Convert_all_to_default_imports)]}},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(t,r){var n=i(r.file,r.start);n&&a(t,r.file,n,e.preferences)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="useBigintLiteral",n=[e.Diagnostics.Numeric_literals_with_absolute_values_equal_to_2_53_or_greater_are_too_large_to_be_represented_accurately_as_integers.code];function i(t,r,n){var i=e.tryCast(e.getTokenAtPosition(r,n.start),e.isNumericLiteral);if(i){var a=i.getText(r)+"n";t.replaceNode(r,i,e.createBigIntLiteral(a))}}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var a=e.textChanges.ChangeTracker.with(n,(function(e){return i(e,n.sourceFile,n.span)}));if(a.length>0)return[t.createCodeFixAction(r,a,e.Diagnostics.Convert_to_a_bigint_numeric_literal,r,e.Diagnostics.Convert_all_to_bigint_numeric_literals)]},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(e,t){return i(e,t.file,t)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="fixAddModuleReferTypeMissingTypeof",n=[e.Diagnostics.Module_0_does_not_refer_to_a_type_but_is_used_as_a_type_here_Did_you_mean_typeof_import_0.code];function i(t,r){var n=e.getTokenAtPosition(t,r);return e.Debug.assert(95===n.kind,"This token should be an ImportKeyword"),e.Debug.assert(187===n.parent.kind,"Token parent should be an ImportType"),n.parent}function a(t,r,n){var i=e.updateImportTypeNode(n,n.argument,n.qualifier,n.typeArguments,!0);t.replaceNode(r,n,i)}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var o=n.sourceFile,s=n.span,c=i(o,s.start),u=e.textChanges.ChangeTracker.with(n,(function(e){return a(e,o,c)}));return[t.createCodeFixAction(r,u,e.Diagnostics.Add_missing_typeof,r,e.Diagnostics.Add_missing_typeof)]},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(t,r){return a(t,e.sourceFile,i(r.file,r.start))}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(r){var n="fixConvertToMappedObjectType",i=[e.Diagnostics.An_index_signature_parameter_type_cannot_be_a_union_type_Consider_using_a_mapped_object_type_instead.code];function a(t,r){var n=e.getTokenAtPosition(t,r),i=e.cast(n.parent.parent,e.isIndexSignatureDeclaration);if(!e.isClassDeclaration(i.parent))return{indexSignature:i,container:e.isInterfaceDeclaration(i.parent)?i.parent:e.cast(i.parent.parent,e.isTypeAliasDeclaration)}}function o(r,n,i){var a=i.indexSignature,o=i.container,s=(e.isInterfaceDeclaration(o)?o.members:o.type.members).filter((function(t){return!e.isIndexSignatureDeclaration(t)})),c=e.first(a.parameters),u=e.createTypeParameterDeclaration(e.cast(c.name,e.isIdentifier),c.type),l=e.createMappedTypeNode(e.hasReadonlyModifier(a)?e.createModifier(137):void 0,u,a.questionToken,a.type),_=e.createIntersectionTypeNode(t(e.getAllSuperTypeNodes(o),[l],s.length?[e.createTypeLiteralNode(s)]:e.emptyArray));r.replaceNode(n,o,function(t,r){return e.createTypeAliasDeclaration(t.decorators,t.modifiers,t.name,t.typeParameters,r)}(o,_))}r.registerCodeFix({errorCodes:i,getCodeActions:function(t){var i=t.sourceFile,s=t.span,c=a(i,s.start);if(c){var u=e.textChanges.ChangeTracker.with(t,(function(e){return o(e,i,c)})),l=e.idText(c.container.name);return[r.createCodeFixAction(n,u,[e.Diagnostics.Convert_0_to_mapped_object_type,l],n,[e.Diagnostics.Convert_0_to_mapped_object_type,l])]}},fixIds:[n],getAllCodeActions:function(e){return r.codeFixAll(e,i,(function(e,t){var r=a(t.file,t.start);r&&o(e,t.file,r)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="removeUnnecessaryAwait",n=[e.Diagnostics.await_has_no_effect_on_the_type_of_this_expression.code];function i(t,r,n){var i=e.tryCast(e.getTokenAtPosition(r,n.start),(function(e){return 126===e.kind})),a=i&&e.tryCast(i.parent,e.isAwaitExpression);if(a){var o=a;if(e.isParenthesizedExpression(a.parent)){var s=e.getLeftmostExpression(a.expression,!1);if(e.isIdentifier(s)){var c=e.findPrecedingToken(a.parent.pos,r);c&&98!==c.kind&&(o=a.parent)}}t.replaceNode(r,o,a.expression)}}t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var a=e.textChanges.ChangeTracker.with(n,(function(e){return i(e,n.sourceFile,n.span)}));if(a.length>0)return[t.createCodeFixAction(r,a,e.Diagnostics.Remove_unnecessary_await,r,e.Diagnostics.Remove_all_unnecessary_uses_of_await)]},fixIds:[r],getAllCodeActions:function(e){return t.codeFixAll(e,n,(function(e,t){return i(e,t.file,t)}))}})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){var r="fixConvertConstToLet",n=[e.Diagnostics.Cannot_assign_to_0_because_it_is_a_constant.code];t.registerCodeFix({errorCodes:n,getCodeActions:function(n){var i=n.sourceFile,a=n.span,o=n.program,s=function(t,r,n){var i=e.getTokenAtPosition(t,r),a=n.getTypeChecker().getSymbolAtLocation(i);if(a)return a.valueDeclaration.parent.parent}(i,a.start,o),c=e.textChanges.ChangeTracker.with(n,(function(e){return function(e,t,r){if(!r)return;var n=r.getStart();e.replaceRangeWithText(t,{pos:n,end:n+5},"let")}(e,i,s)}));return[t.createCodeFixAction(r,c,e.Diagnostics.Convert_const_to_let,r,e.Diagnostics.Convert_const_to_let)]},fixIds:[r]})}(e.codefix||(e.codefix={}))}(s||(s={})),function(e){!function(t){function r(t){var r=t.file,n=e.getRefactorContextSpan(t),i=e.getTokenAtPosition(r,n.start),a=e.getParentNodeInSpan(i,r,n);if(a&&(e.isSourceFile(a.parent)||e.isModuleBlock(a.parent)&&e.isAmbientModule(a.parent.parent))){var o=e.isSourceFile(a.parent)?a.parent.symbol:a.parent.parent.symbol,s=e.getModifierFlags(a),c=!!(512&s);if(1&s&&(c||!o.exports.has("default")))switch(a.kind){case 243:case 244:case 245:case 247:case 246:case 248:var u=a;return u.name&&e.isIdentifier(u.name)?{exportNode:u,exportName:u.name,wasDefault:c,exportingModuleSymbol:o}:void 0;case 224:var l=a;if(!(2&l.declarationList.flags)||1!==l.declarationList.declarations.length)return;var _=e.first(l.declarationList.declarations);if(!_.initializer)return;return e.Debug.assert(!c,"Can't have a default flag here"),e.isIdentifier(_.name)?{exportNode:l,exportName:_.name,wasDefault:c,exportingModuleSymbol:o}:void 0;default:return}}}function n(t,r){return e.createImportSpecifier(t===r?void 0:e.createIdentifier(t),e.createIdentifier(r))}t.registerRefactor("Convert export",{getAvailableActions:function(t){var n=r(t);if(!n)return e.emptyArray;var i=n.wasDefault?e.Diagnostics.Convert_default_export_to_named_export.message:e.Diagnostics.Convert_named_export_to_default_export.message;return[{name:"Convert export",description:i,actions:[{name:n.wasDefault?"Convert default export to named export":"Convert named export to default export",description:i}]}]},getEditsForAction:function(t,i){return e.Debug.assert("Convert default export to named export"===i||"Convert named export to default export"===i,"Unexpected action name"),{edits:e.textChanges.ChangeTracker.with(t,(function(i){return a=t.file,o=t.program,s=e.Debug.assertDefined(r(t),"context must have info"),c=i,u=t.cancellationToken,function(t,r,n,i){var a=r.wasDefault,o=r.exportNode,s=r.exportName;if(a)n.delete(t,e.Debug.assertDefined(e.findModifier(o,83),"Should find a default keyword in modifier list"));else{var c=e.Debug.assertDefined(e.findModifier(o,88),"Should find an export keyword in modifier list");switch(o.kind){case 243:case 244:case 245:n.insertNodeAfter(t,c,e.createToken(83));break;case 224:if(!e.FindAllReferences.Core.isSymbolReferencedInFile(s,i,t)){n.replaceNode(t,o,e.createExportDefault(e.Debug.assertDefined(e.first(o.declarationList.declarations).initializer,"Initializer was previously known to be present")));break}case 247:case 246:case 248:n.deleteModifier(t,c),n.insertNodeAfter(t,o,e.createExportDefault(e.createIdentifier(s.text)));break;default:e.Debug.assertNever(o,"Unexpected exportNode kind "+o.kind)}}}(a,s,c,o.getTypeChecker()),void function(t,r,i,a){var o=r.wasDefault,s=r.exportName,c=r.exportingModuleSymbol,u=t.getTypeChecker(),l=e.Debug.assertDefined(u.getSymbolAtLocation(s),"Export name should resolve to a symbol");e.FindAllReferences.Core.eachExportReference(t.getSourceFiles(),u,a,l,c,s.text,o,(function(t){var r=t.getSourceFile();o?function(t,r,i,a){var o=r.parent;switch(o.kind){case 193:i.replaceNode(t,r,e.createIdentifier(a));break;case 257:case 261:var s=o;i.replaceNode(t,s,n(a,s.name.text));break;case 254:var c=o;e.Debug.assert(c.name===r,"Import clause name should match provided ref"),s=n(a,r.text);var u=c.namedBindings;if(u)if(255===u.kind){i.deleteRange(t,{pos:r.getStart(t),end:u.getStart(t)});var l=e.isStringLiteral(c.parent.moduleSpecifier)?e.quotePreferenceFromString(c.parent.moduleSpecifier,t):1,_=e.makeImport(void 0,[n(a,r.text)],c.parent.moduleSpecifier,l);i.insertNodeAfter(t,c.parent,_)}else i.delete(t,r),i.insertNodeAtEndOfList(t,u.elements,s);else i.replaceNode(t,r,e.createNamedImports([s]));break;default:e.Debug.failBadSyntaxKind(o)}}(r,t,i,s.text):function(t,r,n){var i=r.parent;switch(i.kind){case 193:n.replaceNode(t,r,e.createIdentifier("default"));break;case 257:var a=e.createIdentifier(i.name.text);1===i.parent.elements.length?n.replaceNode(t,i.parent,a):(n.delete(t,i),n.insertNodeBefore(t,i.parent,a));break;case 261:n.replaceNode(t,i,function(t,r){return e.createExportSpecifier(t===r?void 0:e.createIdentifier(t),e.createIdentifier(r))}("default",i.name.text));break;default:e.Debug.assertNever(i,"Unexpected parent kind "+i.kind)}}(r,t,i)}))}(o,s,c,u);var a,o,s,c,u})),renameFilename:void 0,renameLocation:void 0}}})}(e.refactor||(e.refactor={}))}(s||(s={})),function(e){!function(t){function r(t){var r=t.file,n=e.getRefactorContextSpan(t),i=e.getTokenAtPosition(r,n.start),a=e.getParentNodeInSpan(i,r,n);if(a&&e.isImportDeclaration(a)){var o=a.importClause;return o&&o.namedBindings}}function n(t,r,n){return e.createImportDeclaration(void 0,void 0,e.createImportClause(r,n&&n.length?e.createNamedImports(n):void 0),t.moduleSpecifier)}t.registerRefactor("Convert import",{getAvailableActions:function(t){var n=r(t);if(!n)return e.emptyArray;var i=255===n.kind?e.Diagnostics.Convert_namespace_import_to_named_imports.message:e.Diagnostics.Convert_named_imports_to_namespace_import.message;return[{name:"Convert import",description:i,actions:[{name:255===n.kind?"Convert namespace import to named imports":"Convert named imports to namespace import",description:i}]}]},getEditsForAction:function(t,i){return e.Debug.assert("Convert namespace import to named imports"===i||"Convert named imports to namespace import"===i,"Unexpected action name"),{edits:e.textChanges.ChangeTracker.with(t,(function(i){return a=t.file,o=t.program,s=i,c=e.Debug.assertDefined(r(t),"Context must provide an import to convert"),u=o.getTypeChecker(),void(255===c.kind?function(t,r,i,a,o){var s=!1,c=[],u=e.createMap();e.FindAllReferences.Core.eachSymbolReferenceInFile(a.name,r,t,(function(t){if(e.isPropertyAccessExpression(t.parent)){var n=e.cast(t.parent,e.isPropertyAccessExpression),i=n.name.text;r.resolveName(i,t,67108863,!0)&&u.set(i,!0),e.Debug.assert(n.expression===t,"Parent expression should match id"),c.push(n)}else s=!0}));for(var l=e.createMap(),_=0,d=c;_<d.length;_++){var p=d[_],f=p.name.text,m=l.get(f);void 0===m&&l.set(f,m=u.has(f)?e.getUniqueName(f,t):f),i.replaceNode(t,p,e.createIdentifier(m))}var g=[];l.forEach((function(t,r){g.push(e.createImportSpecifier(t===r?void 0:e.createIdentifier(r),e.createIdentifier(t)))}));var y=a.parent.parent;s&&!o?i.insertNodeAfter(t,y,n(y,void 0,g)):i.replaceNode(t,y,n(y,s?e.createIdentifier(a.name.text):void 0,g))}(a,u,s,c,e.getAllowSyntheticDefaultImports(o.getCompilerOptions())):function(t,r,i,a){for(var o=a.parent.parent,s=o.moduleSpecifier,c=s&&e.isStringLiteral(s)?e.codefix.moduleSpecifierToValidIdentifier(s.text,99):"module",u=a.elements.some((function(n){return e.FindAllReferences.Core.eachSymbolReferenceInFile(n.name,r,t,(function(e){return!!r.resolveName(c,e,67108863,!0)}))||!1}))?e.getUniqueName(c,t):c,l=[],_=function(n){var a=(n.propertyName||n.name).text;e.FindAllReferences.Core.eachSymbolReferenceInFile(n.name,r,t,(function(r){var o=e.createPropertyAccess(e.createIdentifier(u),a);e.isShorthandPropertyAssignment(r.parent)?i.replaceNode(t,r.parent,e.createPropertyAssignment(r.text,o)):e.isExportSpecifier(r.parent)&&!r.parent.propertyName?l.some((function(e){return e.name===n.name}))||l.push(e.createImportSpecifier(n.propertyName&&e.createIdentifier(n.propertyName.text),e.createIdentifier(n.name.text))):i.replaceNode(t,r,o)}))},d=0,p=a.elements;d<p.length;d++){var f=p[d];_(f)}i.replaceNode(t,a,e.createNamespaceImport(e.createIdentifier(u))),l.length&&i.insertNodeAfter(t,a.parent.parent,n(o,void 0,l))}(a,u,s,c));var a,o,s,c,u})),renameFilename:void 0,renameLocation:void 0}}})}(e.refactor||(e.refactor={}))}(s||(s={})),function(e){!function(t){!function(r){var n,i,a,o,s="Extract Symbol";function c(t){var r=l(t.file,e.getRefactorContextSpan(t)).targetRange;if(void 0===r)return e.emptyArray;var n=function(t,r){var n=p(t,r),i=n.scopes,a=n.readsAndWrites,o=a.functionErrorsPerScope,s=a.constantErrorsPerScope;return i.map((function(t,r){var n,i,a=function(t){return e.isFunctionLikeDeclaration(t)?"inner function":e.isClassLike(t)?"method":"function"}(t),c=function(t){return e.isClassLike(t)?"readonly field":"constant"}(t),u=e.isFunctionLikeDeclaration(t)?function(t){switch(t.kind){case 161:return"constructor";case 200:case 243:return t.name?"function '"+t.name.text+"'":"anonymous function";case 201:return"arrow function";case 160:return"method '"+t.name.getText()+"'";case 162:return"'get "+t.name.getText()+"'";case 163:return"'set "+t.name.getText()+"'";default:throw e.Debug.assertNever(t,"Unexpected scope kind "+t.kind)}}(t):e.isClassLike(t)?function(e){return 244===e.kind?e.name?"class '"+e.name.text+"'":"anonymous class declaration":e.name?"class expression '"+e.name.text+"'":"anonymous class expression"}(t):function(e){return 249===e.kind?"namespace '"+e.parent.name.getText()+"'":e.externalModuleIndicator?0:1}(t);return 1===u?(n=e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_0_in_1_scope),[a,"global"]),i=e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_0_in_1_scope),[c,"global"])):0===u?(n=e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_0_in_1_scope),[a,"module"]),i=e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_0_in_1_scope),[c,"module"])):(n=e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_0_in_1),[a,u]),i=e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_0_in_1),[c,u])),0!==r||e.isClassLike(t)||(i=e.formatStringFromArgs(e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_0_in_enclosing_scope),[c])),{functionExtraction:{description:n,errors:o[r]},constantExtraction:{description:i,errors:s[r]}}}))}(r,t);if(void 0===n)return e.emptyArray;for(var i=[],a=e.createMap(),o=[],c=e.createMap(),u=0,_=0,d=n;_<d.length;_++){var f=d[_],m=f.functionExtraction,g=f.constantExtraction;if(0===m.errors.length){var y=m.description;a.has(y)||(a.set(y,!0),i.push({description:y,name:"function_scope_"+u}))}if(0===g.errors.length){y=g.description;c.has(y)||(c.set(y,!0),o.push({description:y,name:"constant_scope_"+u}))}u++}var h=[];return i.length&&h.push({name:s,description:e.getLocaleSpecificMessage(e.Diagnostics.Extract_function),actions:i}),o.length&&h.push({name:s,description:e.getLocaleSpecificMessage(e.Diagnostics.Extract_constant),actions:o}),h.length?h:e.emptyArray}function u(t,r){var n=l(t.file,e.getRefactorContextSpan(t)).targetRange,a=/^function_scope_(\d+)$/.exec(r);if(a){var o=+a[1];return e.Debug.assert(isFinite(o),"Expected to parse a finite number from the function scope index"),function(t,r,n){var a=p(t,r),o=a.scopes,s=a.readsAndWrites,c=s.target,u=s.usagesPerScope,l=s.functionErrorsPerScope,_=s.exposedVariableDeclarations;return e.Debug.assert(!l[n].length,"The extraction went missing? How?"),r.cancellationToken.throwIfCancellationRequested(),function(t,r,n,a,o,s){var c,u,l=n.usages,_=n.typeParameterUsages,d=n.substitutions,p=s.program.getTypeChecker(),h=r.getSourceFile(),v=e.getUniqueName(e.isClassLike(r)?"newMethod":"newFunction",h),b=e.isInJSFile(r),x=e.createIdentifier(v),D=[],S=[];l.forEach((function(t,n){var i;if(!b){var a=p.getTypeOfSymbolAtLocation(t.symbol,t.node);a=p.getBaseTypeOfLiteralType(a),i=p.typeToTypeNode(a,r,1)}var o=e.createParameter(void 0,void 0,void 0,n,void 0,i);D.push(o),2===t.usage&&(u||(u=[])).push(t),S.push(e.createIdentifier(n))}));var T=e.arrayFrom(_.values()).map((function(e){return{type:e,declaration:f(e)}})).sort(m),E=0===T.length?void 0:T.map((function(e){return e.declaration})),C=void 0!==E?E.map((function(t){return e.createTypeReferenceNode(t.name,void 0)})):void 0;if(e.isExpression(t)&&!b){var k=p.getContextualType(t);c=p.typeToTypeNode(k,r,1)}var N,A=function(t,r,n,i,a){var o,s=void 0!==n||r.length>0;if(e.isBlock(t)&&!s&&0===i.size)return{body:e.createBlock(t.statements,!0),returnValueProperty:void 0};var c=!1,u=e.createNodeArray(e.isBlock(t)?t.statements.slice(0):[e.isStatement(t)?t:e.createReturn(t)]);if(s||i.size){var l=e.visitNodes(u,(function t(a){if(!c&&234===a.kind&&s){var u=g(r,n);return a.expression&&(o||(o="__return"),u.unshift(e.createPropertyAssignment(o,e.visitNode(a.expression,t)))),1===u.length?e.createReturn(u[0].name):e.createReturn(e.createObjectLiteral(u))}var l=c;c=c||e.isFunctionLikeDeclaration(a)||e.isClassLike(a);var _=i.get(e.getNodeId(a).toString()),d=_?e.getSynthesizedDeepClone(_):e.visitEachChild(a,t,e.nullTransformationContext);return c=l,d})).slice();if(s&&!a&&e.isStatement(t)){var _=g(r,n);1===_.length?l.push(e.createReturn(_[0].name)):l.push(e.createReturn(e.createObjectLiteral(_)))}return{body:e.createBlock(l,!0),returnValueProperty:o}}return{body:e.createBlock(u,!0),returnValueProperty:void 0}}(t,a,u,d,!!(o.facts&i.HasReturn)),F=A.body,P=A.returnValueProperty;if(e.suppressLeadingAndTrailingTrivia(F),e.isClassLike(r)){var w=b?[]:[e.createToken(116)];o.facts&i.InStaticRegion&&w.push(e.createToken(119)),o.facts&i.IsAsyncFunction&&w.push(e.createToken(125)),N=e.createMethod(void 0,w.length?w:void 0,o.facts&i.IsGenerator?e.createToken(41):void 0,x,void 0,E,D,c,F)}else N=e.createFunctionDeclaration(void 0,o.facts&i.IsAsyncFunction?[e.createToken(125)]:void 0,o.facts&i.IsGenerator?e.createToken(41):void 0,x,E,D,c,F);var I=e.textChanges.ChangeTracker.fromContext(s),O=function(t,r){return e.find(function(t){if(e.isFunctionLikeDeclaration(t)){var r=t.body;if(e.isBlock(r))return r.statements}else{if(e.isModuleBlock(t)||e.isSourceFile(t))return t.statements;if(e.isClassLike(t))return t.members;e.assertType(t)}return e.emptyArray}(r),(function(r){return r.pos>=t&&e.isFunctionLikeDeclaration(r)&&!e.isConstructorDeclaration(r)}))}((y(o.range)?e.last(o.range):o.range).end,r);O?I.insertNodeBefore(s.file,O,N,!0):I.insertNodeAtEndOfScope(s.file,r,N);var M=[],L=function(t,r,n){var a=e.createIdentifier(n);if(e.isClassLike(t)){var o=r.facts&i.InStaticRegion?e.createIdentifier(t.name.text):e.createThis();return e.createPropertyAccess(o,a)}return a}(r,o,v),R=e.createCall(L,C,S);o.facts&i.IsGenerator&&(R=e.createYield(e.createToken(41),R));o.facts&i.IsAsyncFunction&&(R=e.createAwait(R));if(a.length&&!u)if(e.Debug.assert(!P,"Expected no returnValueProperty"),e.Debug.assert(!(o.facts&i.HasReturn),"Expected RangeFacts.HasReturn flag to be unset"),1===a.length){var B=a[0];M.push(e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(e.getSynthesizedDeepClone(B.name),e.getSynthesizedDeepClone(B.type),R)],B.parent.flags)))}else{for(var j=[],K=[],J=a[0].parent.flags,z=!1,U=0,V=a;U<V.length;U++){B=V[U];j.push(e.createBindingElement(void 0,void 0,e.getSynthesizedDeepClone(B.name)));var q=p.typeToTypeNode(p.getBaseTypeOfLiteralType(p.getTypeAtLocation(B)),r,1);K.push(e.createPropertySignature(void 0,B.symbol.name,void 0,q,void 0)),z=z||void 0!==B.type,J&=B.parent.flags}var W=z?e.createTypeLiteralNode(K):void 0;W&&e.setEmitFlags(W,1),M.push(e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(e.createObjectBindingPattern(j),W,R)],J)))}else if(a.length||u){if(a.length)for(var G=0,H=a;G<H.length;G++){var Y=(B=H[G]).parent.flags;2&Y&&(Y=-3&Y|1),M.push(e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(B.symbol.name,ee(B.type))],Y)))}P&&M.push(e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(P,ee(c))],1)));var X=g(a,u);P&&X.unshift(e.createShorthandPropertyAssignment(P)),1===X.length?(e.Debug.assert(!P,"Shouldn't have returnValueProperty here"),M.push(e.createStatement(e.createAssignment(X[0].name,R))),o.facts&i.HasReturn&&M.push(e.createReturn())):(M.push(e.createStatement(e.createAssignment(e.createObjectLiteral(X),R))),P&&M.push(e.createReturn(e.createIdentifier(P))))}else o.facts&i.HasReturn?M.push(e.createReturn(R)):y(o.range)?M.push(e.createStatement(R)):M.push(R);y(o.range)?I.replaceNodeRangeWithNodes(s.file,e.first(o.range),e.last(o.range),M):I.replaceNodeWithNodes(s.file,o.range,M);var Q=I.getChanges(),$=(y(o.range)?e.first(o.range):o.range).getSourceFile().fileName,Z=e.getRenameLocation(Q,$,v,!1);return{renameFilename:$,renameLocation:Z,edits:Q};function ee(t){if(void 0!==t){for(var r=e.getSynthesizedDeepClone(t),n=r;e.isParenthesizedTypeNode(n);)n=n.type;return e.isUnionTypeNode(n)&&e.find(n.types,(function(e){return 145===e.kind}))?r:e.createUnionTypeNode([r,e.createKeywordTypeNode(145)])}}}(c,o[n],u[n],_,t,r)}(n,t,o)}var s=/^constant_scope_(\d+)$/.exec(r);if(s){o=+s[1];return e.Debug.assert(isFinite(o),"Expected to parse a finite number from the constant scope index"),function(t,r,n){var a=p(t,r),o=a.scopes,s=a.readsAndWrites,c=s.target,u=s.usagesPerScope,l=s.constantErrorsPerScope,_=s.exposedVariableDeclarations;return e.Debug.assert(!l[n].length,"The extraction went missing? How?"),e.Debug.assert(0===_.length,"Extract constant accepted a range containing a variable declaration?"),r.cancellationToken.throwIfCancellationRequested(),function(t,r,n,a,o){var s,c=n.substitutions,u=o.program.getTypeChecker(),l=r.getSourceFile(),_=e.getUniqueName(e.isClassLike(r)?"newProperty":"newLocal",l),p=e.isInJSFile(r),f=p||!u.isContextSensitive(t)?void 0:u.typeToTypeNode(u.getContextualType(t),r,1),m=function(t,r){return r.size?function t(n){var i=r.get(e.getNodeId(n).toString());return i?e.getSynthesizedDeepClone(i):e.visitEachChild(n,t,e.nullTransformationContext)}(t):t}(t,c);s=function(n,i){if(void 0===n)return{variableType:n,initializer:i};if(!e.isFunctionExpression(i)&&!e.isArrowFunction(i)||i.typeParameters)return{variableType:n,initializer:i};var a=u.getTypeAtLocation(t),o=e.singleOrUndefined(u.getSignaturesOfType(a,0));if(!o)return{variableType:n,initializer:i};if(o.getTypeParameters())return{variableType:n,initializer:i};for(var s=[],c=!1,l=0,_=i.parameters;l<_.length;l++){var d=_[l];if(d.type)s.push(d);else{var p=u.getTypeAtLocation(d);p===u.getAnyType()&&(c=!0),s.push(e.updateParameter(d,d.decorators,d.modifiers,d.dotDotDotToken,d.name,d.questionToken,d.type||u.typeToTypeNode(p,r,1),d.initializer))}}if(c)return{variableType:n,initializer:i};if(n=void 0,e.isArrowFunction(i))i=e.updateArrowFunction(i,t.modifiers,i.typeParameters,s,i.type||u.typeToTypeNode(o.getReturnType(),r,1),i.equalsGreaterThanToken,i.body);else{if(o&&o.thisParameter){var f=e.firstOrUndefined(s);if(!f||e.isIdentifier(f.name)&&"this"!==f.name.escapedText){var m=u.getTypeOfSymbolAtLocation(o.thisParameter,t);s.splice(0,0,e.createParameter(void 0,void 0,void 0,"this",void 0,u.typeToTypeNode(m,r,1)))}}i=e.updateFunctionExpression(i,t.modifiers,i.asteriskToken,i.name,i.typeParameters,s,i.type||u.typeToTypeNode(o.getReturnType(),r,1),i.body)}return{variableType:n,initializer:i}}(f,m),f=s.variableType,m=s.initializer,e.suppressLeadingAndTrailingTrivia(m);var g=e.textChanges.ChangeTracker.fromContext(o);if(e.isClassLike(r)){e.Debug.assert(!p,"Cannot extract to a JS class");var y=[];y.push(e.createToken(116)),a&i.InStaticRegion&&y.push(e.createToken(119)),y.push(e.createToken(137));var v=e.createProperty(void 0,y,_,void 0,f,m),b=e.createPropertyAccess(a&i.InStaticRegion?e.createIdentifier(r.name.getText()):e.createThis(),e.createIdentifier(_)),x=function(t,r){var n,i=r.members;e.Debug.assert(i.length>0,"Found no members");for(var a=!0,o=0,s=i;o<s.length;o++){var c=s[o];if(c.pos>t)return n||i[0];if(a&&!e.isPropertyDeclaration(c)){if(void 0!==n)return c;a=!1}n=c}return void 0===n?e.Debug.fail():n}(t.pos,r);g.insertNodeBefore(o.file,x,v,!0),g.replaceNode(o.file,t,b)}else{var D=e.createVariableDeclaration(_,f,m),S=function(t,r){var n;for(;void 0!==t&&t!==r;){if(e.isVariableDeclaration(t)&&t.initializer===n&&e.isVariableDeclarationList(t.parent)&&t.parent.declarations.length>1)return t;n=t,t=t.parent}}(t,r);if(S){g.insertNodeBefore(o.file,S,D);b=e.createIdentifier(_);g.replaceNode(o.file,t,b)}else if(225===t.parent.kind&&r===e.findAncestor(t,d)){var T=e.createVariableStatement(void 0,e.createVariableDeclarationList([D],2));g.replaceNode(o.file,t.parent,T)}else{T=e.createVariableStatement(void 0,e.createVariableDeclarationList([D],2));if(0===(x=function(t,r){var n;e.Debug.assert(!e.isClassLike(r));for(var i=t;i!==r;i=i.parent)d(i)&&(n=i);for(i=(n||t).parent;;i=i.parent){if(h(i)){for(var a=void 0,o=0,s=i.statements;o<s.length;o++){var c=s[o];if(c.pos>t.pos)break;a=c}return!a&&e.isCaseClause(i)?(e.Debug.assert(e.isSwitchStatement(i.parent.parent),"Grandparent isn't a switch statement"),i.parent.parent):e.Debug.assertDefined(a,"prevStatement failed to get set")}e.Debug.assert(i!==r,"Didn't encounter a block-like before encountering scope")}}(t,r)).pos?g.insertNodeAtTopOfFile(o.file,T,!1):g.insertNodeBefore(o.file,x,T,!1),225===t.parent.kind)g.delete(o.file,t.parent);else{b=e.createIdentifier(_);g.replaceNode(o.file,t,b)}}}var E=g.getChanges(),C=t.getSourceFile().fileName,k=e.getRenameLocation(E,C,_,!0);return{renameFilename:C,renameLocation:k,edits:E}}(e.isExpression(c)?c:c.statements[0].expression,o[n],u[n],t.facts,r)}(n,t,o)}e.Debug.fail("Unrecognized action name")}function l(t,r){var a=r.length;if(0===a)return{errors:[e.createFileDiagnostic(t,r.start,a,n.cannotExtractEmpty)]};var o=e.getParentNodeInSpan(e.getTokenAtPosition(t,r.start),t,r),s=e.getParentNodeInSpan(e.findTokenOnLeftOfPosition(t,e.textSpanEnd(r)),t,r),c=[],u=i.None;if(!o||!s)return{errors:[e.createFileDiagnostic(t,r.start,a,n.cannotExtractRange)]};if(o.parent!==s.parent)return{errors:[e.createFileDiagnostic(t,r.start,a,n.cannotExtractRange)]};if(o!==s){if(!h(o.parent))return{errors:[e.createFileDiagnostic(t,r.start,a,n.cannotExtractRange)]};for(var l=[],d=0,p=o.parent.statements;d<p.length;d++){var f=p[d];if(f===o||l.length){var m=v(f);if(m)return{errors:m};l.push(f)}if(f===s)break}return l.length?{targetRange:{range:l,facts:u,declarations:c}}:{errors:[e.createFileDiagnostic(t,r.start,a,n.cannotExtractRange)]}}if(e.isJSDoc(o))return{errors:[e.createFileDiagnostic(t,r.start,a,n.cannotExtractJSDoc)]};if(e.isReturnStatement(o)&&!o.expression)return{errors:[e.createFileDiagnostic(t,r.start,a,n.cannotExtractRange)]};var g=function(t){if(e.isReturnStatement(t)){if(t.expression)return t.expression}else if(e.isVariableStatement(t)){for(var r=0,n=void 0,i=0,a=t.declarationList.declarations;i<a.length;i++){var o=a[i];o.initializer&&(r++,n=o.initializer)}if(1===r)return n}else if(e.isVariableDeclaration(t)&&t.initializer)return t.initializer;return t}(o),y=function(t){if(e.isIdentifier(e.isExpressionStatement(t)?t.expression:t))return[e.createDiagnosticForNode(t,n.cannotExtractIdentifier)];return}(g)||v(g);return y?{errors:y}:{targetRange:{range:_(g),facts:u,declarations:c}};function v(t){var a;if(function(e){e[e.None=0]="None",e[e.Break=1]="Break",e[e.Continue=2]="Continue",e[e.Return=4]="Return"}(a||(a={})),e.Debug.assert(t.pos<=t.end,"This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809 (1)"),e.Debug.assert(!e.positionIsSynthesized(t.pos),"This failure could trigger https://github.com/Microsoft/TypeScript/issues/20809 (2)"),!(e.isStatement(t)||e.isExpressionNode(t)&&function(e){var t=e.parent;switch(t.kind){case 282:return!1}switch(e.kind){case 10:return 253!==t.kind&&257!==t.kind;case 212:case 188:case 190:return!1;case 75:return 190!==t.kind&&257!==t.kind&&261!==t.kind}return!0}(t)))return[e.createDiagnosticForNode(t,n.statementOrExpressionExpected)];if(8388608&t.flags)return[e.createDiagnosticForNode(t,n.cannotExtractAmbientBlock)];var o,s=e.getContainingClass(t);s&&function(t,r){for(var n=t;n!==r;){if(158===n.kind){e.hasModifier(n,32)&&(u|=i.InStaticRegion);break}if(155===n.kind){161===e.getContainingFunction(n).kind&&(u|=i.InStaticRegion);break}160===n.kind&&e.hasModifier(n,32)&&(u|=i.InStaticRegion),n=n.parent}}(t,s);var l,_=4;return function t(a){if(o)return!0;if(e.isDeclaration(a)){var s=241===a.kind?a.parent.parent:a;if(e.hasModifier(s,1))return(o||(o=[])).push(e.createDiagnosticForNode(a,n.cannotExtractExportedEntity)),!0;c.push(a.symbol)}switch(a.kind){case 253:return(o||(o=[])).push(e.createDiagnosticForNode(a,n.cannotExtractImport)),!0;case 101:if(195===a.parent.kind){var d=e.getContainingClass(a);if(d.pos<r.start||d.end>=r.start+r.length)return(o||(o=[])).push(e.createDiagnosticForNode(a,n.cannotExtractSuper)),!0}else u|=i.UsesThis}if(e.isFunctionLikeDeclaration(a)||e.isClassLike(a)){switch(a.kind){case 243:case 244:e.isSourceFile(a.parent)&&void 0===a.parent.externalModuleIndicator&&(o||(o=[])).push(e.createDiagnosticForNode(a,n.functionWillNotBeVisibleInTheNewScope))}return!1}var p=_;switch(a.kind){case 226:case 239:_=0;break;case 222:a.parent&&239===a.parent.kind&&a.parent.finallyBlock===a&&(_=4);break;case 275:_|=1;break;default:e.isIterationStatement(a,!1)&&(_|=3)}switch(a.kind){case 182:case 103:u|=i.UsesThis;break;case 237:var f=a.label;(l||(l=[])).push(f.escapedText),e.forEachChild(a,t),l.pop();break;case 233:case 232:(f=a.label)?e.contains(l,f.escapedText)||(o||(o=[])).push(e.createDiagnosticForNode(a,n.cannotExtractRangeContainingLabeledBreakOrContinueStatementWithTargetOutsideOfTheRange)):_&(233===a.kind?1:2)||(o||(o=[])).push(e.createDiagnosticForNode(a,n.cannotExtractRangeContainingConditionalBreakOrContinueStatements));break;case 205:u|=i.IsAsyncFunction;break;case 211:u|=i.IsGenerator;break;case 234:4&_?u|=i.HasReturn:(o||(o=[])).push(e.createDiagnosticForNode(a,n.cannotExtractRangeContainingConditionalReturnStatement));break;default:e.forEachChild(a,t)}_=p}(t),o}}function _(t){return e.isStatement(t)?[t]:e.isExpressionNode(t)?e.isExpressionStatement(t.parent)?[t.parent]:t:void 0}function d(t){return e.isFunctionLikeDeclaration(t)||e.isSourceFile(t)||e.isModuleBlock(t)||e.isClassLike(t)}function p(t,r){var a=r.file,o=function(t){var r=y(t.range)?e.first(t.range):t.range;if(t.facts&i.UsesThis){var n=e.getContainingClass(r);if(n){var a=e.findAncestor(r,e.isFunctionLikeDeclaration);return a?[a,n]:[n]}}for(var o=[];;)if(155===(r=r.parent).kind&&(r=e.findAncestor(r,(function(t){return e.isFunctionLikeDeclaration(t)})).parent),d(r)&&(o.push(r),288===r.kind))return o}(t);return{scopes:o,readsAndWrites:function(t,r,a,o,s,c){var u,l,_=e.createMap(),d=[],p=[],f=[],m=[],g=[],h=e.createMap(),v=[],b=y(t.range)?1===t.range.length&&e.isExpressionStatement(t.range[0])?t.range[0].expression:void 0:t.range;if(void 0===b){var x=t.range,D=e.first(x).getStart(),S=e.last(x).end;l=e.createFileDiagnostic(o,D,S-D,n.expressionExpected)}else 147456&s.getTypeAtLocation(b).flags&&(l=e.createDiagnosticForNode(b,n.uselessConstantType));for(var T=0,E=r;T<E.length;T++){var C=E[T];d.push({usages:e.createMap(),typeParameterUsages:e.createMap(),substitutions:e.createMap()}),p.push(e.createMap()),f.push(e.isFunctionLikeDeclaration(C)&&243!==C.kind?[e.createDiagnosticForNode(C,n.cannotExtractToOtherFunctionLike)]:[]);var k=[];l&&k.push(l),e.isClassLike(C)&&e.isInJSFile(C)&&k.push(e.createDiagnosticForNode(C,n.cannotExtractToJSClass)),e.isArrowFunction(C)&&!e.isBlock(C.body)&&k.push(e.createDiagnosticForNode(C,n.cannotExtractToExpressionArrowFunction)),m.push(k)}var N=e.createMap(),A=y(t.range)?e.createBlock(t.range):t.range,F=y(t.range)?e.first(t.range):t.range,P=function(t){return!!e.findAncestor(t,(function(t){return e.isDeclarationWithTypeParameters(t)&&0!==e.getEffectiveTypeParameterDeclarations(t).length}))}(F);if(function c(u,l){void 0===l&&(l=1);if(P){z(s.getTypeAtLocation(u))}e.isDeclaration(u)&&u.symbol&&g.push(u);if(e.isAssignmentExpression(u))c(u.left,2),c(u.right);else if(e.isUnaryExpressionWithWrite(u))c(u.operand,2);else if(e.isPropertyAccessExpression(u)||e.isElementAccessExpression(u))e.forEachChild(u,c);else if(e.isIdentifier(u)){if(!u.parent)return;if(e.isQualifiedName(u.parent)&&u!==u.parent.left)return;if(e.isPropertyAccessExpression(u.parent)&&u!==u.parent.expression)return;!function(c,u,l){var _=function(c,u,l){var _=U(c);if(!_)return;var g=e.getSymbolId(_).toString(),y=N.get(g);if(y&&y>=u)return g;if(N.set(g,u),y){for(var h=0,v=d;h<v.length;h++){var b=v[h];b.usages.get(c.text)&&b.usages.set(c.text,{usage:u,symbol:_,node:c})}return g}var x=_.getDeclarations(),D=x&&e.find(x,(function(e){return e.getSourceFile()===o}));if(!D)return;if(e.rangeContainsStartEnd(a,D.getStart(),D.end))return;if(t.facts&i.IsGenerator&&2===u){for(var S=e.createDiagnosticForNode(c,n.cannotExtractRangeThatContainsWritesToReferencesLocatedOutsideOfTheTargetRangeInGenerators),T=0,E=f;T<E.length;T++){E[T].push(S)}for(var C=0,k=m;C<k.length;C++){k[C].push(S)}}for(var A=0;A<r.length;A++){var F=r[A];if(s.resolveName(_.name,F,_.flags,!1)!==_&&!p[A].has(g)){var P=V(_.exportSymbol||_,F,l);if(P)p[A].set(g,P);else if(l){if(!(262144&_.flags)){S=e.createDiagnosticForNode(c,n.typeWillNotBeVisibleInTheNewScope);f[A].push(S),m[A].push(S)}}else d[A].usages.set(c.text,{usage:u,symbol:_,node:c})}}return g}(c,u,l);if(_)for(var g=0;g<r.length;g++){var y=p[g].get(_);y&&d[g].substitutions.set(e.getNodeId(c).toString(),y)}}(u,l,e.isPartOfTypeNode(u))}else e.forEachChild(u,c)}(A),P&&!y(t.range)){z(s.getContextualType(t.range))}if(_.size>0){for(var w=e.createMap(),I=0,O=F;void 0!==O&&I<r.length;O=O.parent)if(O===r[I]&&(w.forEach((function(e,t){d[I].typeParameterUsages.set(t,e)})),I++),e.isDeclarationWithTypeParameters(O))for(var M=0,L=e.getEffectiveTypeParameterDeclarations(O);M<L.length;M++){var R=L[M],B=s.getTypeAtLocation(R);_.has(B.id.toString())&&w.set(B.id.toString(),B)}e.Debug.assert(I===r.length,"Should have iterated all scopes")}if(g.length){var j=e.isBlockScope(r[0],r[0].parent)?r[0]:e.getEnclosingBlockScopeContainer(r[0]);e.forEachChild(j,(function r(n){if(n===t.range||y(t.range)&&t.range.indexOf(n)>=0)return;var i=e.isIdentifier(n)?U(n):s.getSymbolAtLocation(n);if(i){var a=e.find(g,(function(e){return e.symbol===i}));if(a)if(e.isVariableDeclaration(a)){var o=a.symbol.id.toString();h.has(o)||(v.push(a),h.set(o,!0))}else u=u||a}e.forEachChild(n,r)}))}for(var K=function(r){var i=d[r];if(r>0&&(i.usages.size>0||i.typeParameterUsages.size>0)){var a=y(t.range)?t.range[0]:t.range;m[r].push(e.createDiagnosticForNode(a,n.cannotAccessVariablesFromNestedScopes))}var o,s=!1;if(d[r].usages.forEach((function(t){2===t.usage&&(s=!0,106500&t.symbol.flags&&t.symbol.valueDeclaration&&e.hasModifier(t.symbol.valueDeclaration,64)&&(o=t.symbol.valueDeclaration))})),e.Debug.assert(y(t.range)||0===v.length,"No variable declarations expected if something was extracted"),s&&!y(t.range)){var c=e.createDiagnosticForNode(t.range,n.cannotWriteInExpression);f[r].push(c),m[r].push(c)}else if(o&&r>0){c=e.createDiagnosticForNode(o,n.cannotExtractReadonlyPropertyInitializerOutsideConstructor);f[r].push(c),m[r].push(c)}else if(u){c=e.createDiagnosticForNode(u,n.cannotExtractExportedEntity);f[r].push(c),m[r].push(c)}},J=0;J<r.length;J++)K(J);return{target:A,usagesPerScope:d,functionErrorsPerScope:f,constantErrorsPerScope:m,exposedVariableDeclarations:v};function z(e){for(var t=0,r=s.getSymbolWalker((function(){return c.throwIfCancellationRequested(),!0})).walkType(e).visitedTypes;t<r.length;t++){var n=r[t];n.isTypeParameter()&&_.set(n.id.toString(),n)}}function U(t){return t.parent&&e.isShorthandPropertyAssignment(t.parent)&&t.parent.name===t?s.getShorthandAssignmentValueSymbol(t.parent):s.getSymbolAtLocation(t)}function V(t,r,n){if(t){var i=t.getDeclarations();if(i&&i.some((function(e){return e.parent===r})))return e.createIdentifier(t.name);var a=V(t.parent,r,n);if(void 0!==a)return n?e.createQualifiedName(a,e.createIdentifier(t.name)):e.createPropertyAccess(a,t.name)}}}(t,o,function(t,r){return y(t.range)?{pos:e.first(t.range).getStart(r),end:e.last(t.range).getEnd()}:t.range}(t,a),a,r.program.getTypeChecker(),r.cancellationToken)}}function f(e){var t,r=e.symbol;if(r&&r.declarations)for(var n=0,i=r.declarations;n<i.length;n++){var a=i[n];(void 0===t||a.pos<t.pos)&&(t=a)}return t}function m(t,r){var n=t.type,i=t.declaration,a=r.type,o=r.declaration;return e.compareProperties(i,o,"pos",e.compareValues)||e.compareStringsCaseSensitive(n.symbol?n.symbol.getName():"",a.symbol?a.symbol.getName():"")||e.compareValues(n.id,a.id)}function g(t,r){var n=e.map(t,(function(t){return e.createShorthandPropertyAssignment(t.symbol.name)})),i=e.map(r,(function(t){return e.createShorthandPropertyAssignment(t.symbol.name)}));return void 0===n?i:void 0===i?n:n.concat(i)}function y(t){return e.isArray(t)}function h(e){switch(e.kind){case 222:case 288:case 249:case 275:return!0;default:return!1}}t.registerRefactor(s,{getAvailableActions:c,getEditsForAction:u}),r.getAvailableActions=c,r.getEditsForAction=u,function(t){function r(t){return{message:t,code:0,category:e.DiagnosticCategory.Message,key:t}}t.cannotExtractRange=r("Cannot extract range."),t.cannotExtractImport=r("Cannot extract import statement."),t.cannotExtractSuper=r("Cannot extract super call."),t.cannotExtractJSDoc=r("Cannot extract JSDoc."),t.cannotExtractEmpty=r("Cannot extract empty range."),t.expressionExpected=r("expression expected."),t.uselessConstantType=r("No reason to extract constant of type."),t.statementOrExpressionExpected=r("Statement or expression expected."),t.cannotExtractRangeContainingConditionalBreakOrContinueStatements=r("Cannot extract range containing conditional break or continue statements."),t.cannotExtractRangeContainingConditionalReturnStatement=r("Cannot extract range containing conditional return statement."),t.cannotExtractRangeContainingLabeledBreakOrContinueStatementWithTargetOutsideOfTheRange=r("Cannot extract range containing labeled break or continue with target outside of the range."),t.cannotExtractRangeThatContainsWritesToReferencesLocatedOutsideOfTheTargetRangeInGenerators=r("Cannot extract range containing writes to references located outside of the target range in generators."),t.typeWillNotBeVisibleInTheNewScope=r("Type will not visible in the new scope."),t.functionWillNotBeVisibleInTheNewScope=r("Function will not visible in the new scope."),t.cannotExtractIdentifier=r("Select more than a single identifier."),t.cannotExtractExportedEntity=r("Cannot extract exported declaration"),t.cannotWriteInExpression=r("Cannot write back side-effects when extracting an expression"),t.cannotExtractReadonlyPropertyInitializerOutsideConstructor=r("Cannot move initialization of read-only class property outside of the constructor"),t.cannotExtractAmbientBlock=r("Cannot extract code from ambient contexts"),t.cannotAccessVariablesFromNestedScopes=r("Cannot access variables from nested scopes"),t.cannotExtractToOtherFunctionLike=r("Cannot extract method to a function-like scope that is not a function"),t.cannotExtractToJSClass=r("Cannot extract constant to a class scope in JS"),t.cannotExtractToExpressionArrowFunction=r("Cannot extract constant to an arrow function without a block")}(n=r.Messages||(r.Messages={})),function(e){e[e.None=0]="None",e[e.HasReturn=1]="HasReturn",e[e.IsGenerator=2]="IsGenerator",e[e.IsAsyncFunction=4]="IsAsyncFunction",e[e.UsesThis=8]="UsesThis",e[e.InStaticRegion=16]="InStaticRegion"}(i||(i={})),r.getRangeToExtract=l,function(e){e[e.Module=0]="Module",e[e.Global=1]="Global"}(a||(a={})),function(e){e[e.Read=1]="Read",e[e.Write=2]="Write"}(o||(o={}))}(t.extractSymbol||(t.extractSymbol={}))}(e.refactor||(e.refactor={}))}(s||(s={})),function(e){!function(t){function r(t){var r=t.file,i=t.startPosition,a=e.isSourceFileJS(r),o=e.getTokenAtPosition(r,i),s=e.createTextRangeFromSpan(e.getRefactorContextSpan(t)),c=e.findAncestor(o,(function(e){return e.parent&&n(s,e,r)&&!n(s,e.parent,r)}));if(c&&e.isTypeNode(c)){var u=t.program.getTypeChecker(),l=e.Debug.assertDefined(e.findAncestor(c,e.isStatement),"Should find a statement"),_=function(t,r,i,a){var o=[];return function s(c){if(e.isTypeReferenceNode(c)){if(e.isIdentifier(c.typeName))if(d=t.resolveName(c.typeName.text,c.typeName,262144,!0)){var u=e.cast(e.first(d.declarations),e.isTypeParameterDeclaration);n(i,u,a)&&!n(r,u,a)&&o.push(u)}}else if(e.isInferTypeNode(c)){var l=e.findAncestor(c,(function(t){return e.isConditionalTypeNode(t)&&n(t.extendsType,c,a)}));if(!l||!n(r,l,a))return!0}else if(e.isTypePredicateNode(c)||e.isThisTypeNode(c)){var _=e.findAncestor(c.parent,e.isFunctionLike);if(_&&_.type&&n(_.type,c,a)&&!n(r,_,a))return!0}else if(e.isTypeQueryNode(c)){var d;if(e.isIdentifier(c.exprName)){if((d=t.resolveName(c.exprName.text,c.exprName,111551,!1))&&n(i,d.valueDeclaration,a)&&!n(r,d.valueDeclaration,a))return!0}else if(e.isThisIdentifier(c.exprName.left)&&!n(r,c.parent,a))return!0}return e.forEachChild(c,s)}(r)?void 0:o}(u,c,l,r);if(_)return{isJS:a,selection:c,firstStatement:l,typeParameters:_,typeElements:function t(r,n){if(!n)return;if(e.isIntersectionTypeNode(n)){for(var i=[],a=e.createMap(),o=0,s=n.types;o<s.length;o++){var c=s[o],u=t(r,c);if(!u||!u.every((function(t){return t.name&&e.addToSeen(a,e.getNameFromPropertyName(t.name))})))return;e.addRange(i,u)}return i}if(e.isParenthesizedTypeNode(n))return t(r,n.type);if(e.isTypeLiteralNode(n))return n.members;return}(u,c)}}}function n(t,r,n){return e.rangeContainsStartEnd(t,e.skipTrivia(n.text,r.pos),r.end)}t.registerRefactor("Extract type",{getAvailableActions:function(t){var n=r(t);return n?[{name:"Extract type",description:e.getLocaleSpecificMessage(e.Diagnostics.Extract_type),actions:n.isJS?[{name:"Extract to typedef",description:e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_typedef)}]:e.append([{name:"Extract to type alias",description:e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_type_alias)}],n.typeElements&&{name:"Extract to interface",description:e.getLocaleSpecificMessage(e.Diagnostics.Extract_to_interface)})}]:e.emptyArray},getEditsForAction:function(t,n){var i=t.file,a=e.Debug.assertDefined(r(t),"Expected to find a range to extract"),o=e.getUniqueName("NewType",i),s=e.textChanges.ChangeTracker.with(t,(function(t){switch(n){case"Extract to type alias":return e.Debug.assert(!a.isJS,"Invalid actionName/JS combo"),function(t,r,n,i){var a=i.firstStatement,o=i.selection,s=i.typeParameters,c=e.createTypeAliasDeclaration(void 0,void 0,n,s.map((function(t){return e.updateTypeParameterDeclaration(t,t.name,t.constraint,void 0)})),o);t.insertNodeBefore(r,a,c,!0),t.replaceNode(r,o,e.createTypeReferenceNode(n,s.map((function(t){return e.createTypeReferenceNode(t.name,void 0)}))))}(t,i,o,a);case"Extract to typedef":return e.Debug.assert(a.isJS,"Invalid actionName/JS combo"),function(t,r,n,i){var a=i.firstStatement,o=i.selection,s=i.typeParameters,c=e.createNode(315);c.tagName=e.createIdentifier("typedef"),c.fullName=e.createIdentifier(n),c.name=c.fullName,c.typeExpression=e.createJSDocTypeExpression(o);var u=[];e.forEach(s,(function(t){var r=e.getEffectiveConstraintOfTypeParameter(t),n=e.createNode(314);n.tagName=e.createIdentifier("template"),n.constraint=r&&e.cast(r,e.isJSDocTypeExpression);var i=e.createNode(154);i.name=t.name,n.typeParameters=e.createNodeArray([i]),u.push(n)})),t.insertNodeBefore(r,a,e.createJSDocComment(void 0,e.createNodeArray(e.concatenate(u,[c]))),!0),t.replaceNode(r,o,e.createTypeReferenceNode(n,s.map((function(t){return e.createTypeReferenceNode(t.name,void 0)}))))}(t,i,o,a);case"Extract to interface":return e.Debug.assert(!a.isJS&&!!a.typeElements,"Invalid actionName/JS combo"),function(t,r,n,i){var a=i.firstStatement,o=i.selection,s=i.typeParameters,c=i.typeElements,u=e.createInterfaceDeclaration(void 0,void 0,n,s,void 0,c);t.insertNodeBefore(r,a,u,!0),t.replaceNode(r,o,e.createTypeReferenceNode(n,s.map((function(t){return e.createTypeReferenceNode(t.name,void 0)}))))}(t,i,o,a);default:e.Debug.fail("Unexpected action name")}})),c=i.fileName;return{edits:s,renameFilename:c,renameLocation:e.getRenameLocation(s,c,o,!1)}}})}(e.refactor||(e.refactor={}))}(s||(s={})),function(e){!function(t){!function(r){var n="Generate 'get' and 'set' accessors",i=e.Diagnostics.Generate_get_and_set_accessors.message;function a(t){return e.isParameterPropertyDeclaration(t,t.parent)||e.isPropertyDeclaration(t)||e.isPropertyAssignment(t)}function o(t,r){return e.isIdentifier(r)?e.createIdentifier(t):e.createLiteral(t)}function s(t,r,n){var i=r?n.name:e.createThis();return e.isIdentifier(t)?e.createPropertyAccess(i,t):e.createElementAccess(i,e.createLiteral(t))}function c(t,r,n){var i=e.append(t?void 0:[e.createToken(n)],r?e.createToken(119):void 0);return i&&e.createNodeArray(i)}function u(t){var r=t.file,n=t.startPosition,i=t.endPosition,s=e.getTokenAtPosition(r,n),c=e.findAncestor(s.parent,a);if(c&&e.nodeOverlapsWithStartEnd(c.name,r,n,i)&&function(t){return e.isIdentifier(t)||e.isStringLiteral(t)}(c.name)&&124==(124|e.getModifierFlags(c))){var u=c.name.text,l=function(e){return 95===e.charCodeAt(0)}(u),_=o(l?u:e.getUniqueName("_"+u,r),c.name),d=o(l?e.getUniqueName(u.substring(1),r):u,c.name);return{isStatic:e.hasStaticModifier(c),isReadonly:e.hasReadonlyModifier(c),type:e.getTypeAnnotationNode(c),container:155===c.kind?c.parent.parent:c.parent,originalName:c.name.text,declaration:c,fieldName:_,accessorName:d,renameAccessor:l}}}function l(t,r,n,i,a){e.isParameterPropertyDeclaration(i,i.parent)?t.insertNodeAtClassStart(r,a,n):e.isPropertyAssignment(i)?t.insertNodeAfterComma(r,i,n):t.insertNodeAfter(r,i,n)}t.registerRefactor(n,{getEditsForAction:function(t,r){var n=t.file,i=u(t);if(!i)return;var a=e.isSourceFileJS(n),o=e.textChanges.ChangeTracker.fromContext(t),_=i.isStatic,d=i.isReadonly,p=i.fieldName,f=i.accessorName,m=i.originalName,g=i.type,y=i.container,h=i.declaration,v=i.renameAccessor;e.suppressLeadingAndTrailingTrivia(p),e.suppressLeadingAndTrailingTrivia(h),e.suppressLeadingAndTrailingTrivia(y);var b=e.isClassLike(y),x=-65&e.getModifierFlags(h),D=b?!x||8&x?c(a,_,118):e.createNodeArray(e.createModifiersFromModifierFlags(x)):void 0,S=b?c(a,_,116):void 0;!function(t,r,n,i,a){e.isPropertyDeclaration(n)?function(t,r,n,i,a){var o=e.updateProperty(n,n.decorators,a,i,n.questionToken||n.exclamationToken,n.type,n.initializer);t.replaceNode(r,n,o)}(t,r,n,i,a):e.isPropertyAssignment(n)?function(t,r,n,i){var a=e.updatePropertyAssignment(n,i,n.initializer);t.replacePropertyAssignment(r,n,a)}(t,r,n,i):t.replaceNode(r,n,e.updateParameter(n,n.decorators,a,n.dotDotDotToken,e.cast(i,e.isIdentifier),n.questionToken,n.type,n.initializer))}(o,n,h,p,S);var T=function(t,r,n,i,a,o){return e.createGetAccessor(void 0,i,r,void 0,n,e.createBlock([e.createReturn(s(t,a,o))],!0))}(p,f,g,D,_,y);if(e.suppressLeadingAndTrailingTrivia(T),l(o,n,T,h,y),d){var E=e.getFirstConstructorWithBody(y);E&&function(t,r,n,i,a){if(!n.body)return;n.body.forEachChild((function n(o){e.isElementAccessExpression(o)&&103===o.expression.kind&&e.isStringLiteral(o.argumentExpression)&&o.argumentExpression.text===a&&e.isWriteAccess(o)&&t.replaceNode(r,o.argumentExpression,e.createStringLiteral(i)),e.isPropertyAccessExpression(o)&&103===o.expression.kind&&o.name.text===a&&e.isWriteAccess(o)&&t.replaceNode(r,o.name,e.createIdentifier(i)),e.isFunctionLike(o)||e.isClassLike(o)||o.forEachChild(n)}))}(o,n,E,p.text,m)}else{var C=function(t,r,n,i,a,o){return e.createSetAccessor(void 0,i,r,[e.createParameter(void 0,void 0,void 0,e.createIdentifier("value"),void 0,n)],e.createBlock([e.createStatement(e.createAssignment(s(t,a,o),e.createIdentifier("value")))],!0))}(p,f,g,D,_,y);e.suppressLeadingAndTrailingTrivia(C),l(o,n,C,h,y)}var k=o.getChanges(),N=n.fileName,A=v?f:p,F=(e.isIdentifier(A)?0:-1)+e.getRenameLocation(k,N,A.text,e.isParameter(h));return{renameFilename:N,renameLocation:F,edits:k}},getAvailableActions:function(t){return u(t)?[{name:n,description:i,actions:[{name:n,description:i}]}]:e.emptyArray}})}(t.generateGetAccessorAndSetAccessor||(t.generateGetAccessorAndSetAccessor={}))}(e.refactor||(e.refactor={}))}(s||(s={})),function(e){!function(r){function n(t){var r=function(t){var r=t.file,n=e.createTextRangeFromSpan(e.getRefactorContextSpan(t)),i=r.statements,a=e.findIndex(i,(function(e){return e.end>n.pos}));if(-1!==a){var o=i[a];if(e.isNamedDeclaration(o)&&o.name&&e.rangeContainsRange(o.name,n))return{toMove:[i[a]],afterLast:i[a+1]};if(!(n.pos>o.getStart(r))){var s=e.findIndex(i,(function(e){return e.end>n.end}),a);if(-1===s||!(0===s||i[s].getStart(r)<n.end))return{toMove:i.slice(a,-1===s?i.length:s),afterLast:-1===s?void 0:i[s]}}}}(t);if(void 0!==r){var n=[],i=[],a=r.toMove,o=r.afterLast;return e.getRangesWhere(a,(function(t){return!function(t){switch(t.kind){case 253:return!0;case 252:return!e.hasModifier(t,1);case 224:return t.declarationList.declarations.every((function(t){return!!t.initializer&&e.isRequireCall(t.initializer,!0)}));default:return!1}}(t)}),(function(e,t){for(var r=e;r<t;r++)n.push(a[r]);i.push({first:a[e],afterLast:o})})),0===n.length?void 0:{all:n,ranges:i}}}function i(e,t,r){for(var n=0,i=t;n<i.length;n++){var a=i[n],o=a.first,s=a.afterLast;r.deleteNodeRangeExcludingEnd(e,o,s)}}function a(e){return 253===e.kind?e.moduleSpecifier:252===e.kind?e.moduleReference.expression:e.initializer.arguments[0]}function o(t,r){if(e.isImportDeclaration(t))e.isStringLiteral(t.moduleSpecifier)&&r(t);else if(e.isImportEqualsDeclaration(t))e.isExternalModuleReference(t.moduleReference)&&e.isStringLiteralLike(t.moduleReference.expression)&&r(t);else if(e.isVariableStatement(t))for(var n=0,i=t.declarationList.declarations;n<i.length;n++){var a=i[n];a.initializer&&e.isRequireCall(a.initializer,!0)&&r(a)}}function s(t,r,n,i,a){if(n=e.ensurePathIsNonModuleName(n),i){var o=r.map((function(t){return e.createImportSpecifier(void 0,e.createIdentifier(t))}));return e.makeImportIfNecessary(t,o,n,a)}e.Debug.assert(!t,"No default import should exist");var s=r.map((function(t){return e.createBindingElement(void 0,void 0,t)}));return s.length?c(e.createObjectBindingPattern(s),void 0,u(e.createLiteral(n))):void 0}function c(t,r,n,i){return void 0===i&&(i=2),e.createVariableStatement(void 0,e.createVariableDeclarationList([e.createVariableDeclaration(t,r,n)],i))}function u(t){return e.createCall(e.createIdentifier("require"),void 0,[t])}function l(t,r,n,i){switch(r.kind){case 253:!function(t,r,n,i){if(!r.importClause)return;var a=r.importClause,o=a.name,s=a.namedBindings,c=!o||i(o),u=!s||(255===s.kind?i(s.name):0!==s.elements.length&&s.elements.every((function(e){return i(e.name)})));if(c&&u)n.delete(t,r);else if(o&&c&&n.delete(t,o),s)if(u)n.replaceNode(t,r.importClause,e.updateImportClause(r.importClause,o,void 0));else if(256===s.kind)for(var l=0,_=s.elements;l<_.length;l++){var d=_[l];i(d.name)&&n.delete(t,d)}}(t,r,n,i);break;case 252:i(r.name)&&n.delete(t,r);break;case 241:!function(t,r,n,i){var a=r.name;switch(a.kind){case 75:i(a)&&n.delete(t,a);break;case 189:break;case 188:if(a.elements.every((function(t){return e.isIdentifier(t.name)&&i(t.name)})))n.delete(t,e.isVariableDeclarationList(r.parent)&&1===r.parent.declarations.length?r.parent.parent:r);else for(var o=0,s=a.elements;o<s.length;o++){var c=s[o];e.isIdentifier(c.name)&&i(c.name)&&n.delete(t,c.name)}}}(t,r,n,i);break;default:e.Debug.assertNever(r,"Unexpected import decl kind "+r.kind)}}function _(t){switch(t.kind){case 252:case 257:case 254:return!0;case 241:return d(t);case 190:return e.isVariableDeclaration(t.parent.parent)&&d(t.parent.parent);default:return!1}}function d(t){return e.isSourceFile(t.parent.parent.parent)&&!!t.initializer&&e.isRequireCall(t.initializer,!0)}function p(t,r,n){switch(t.kind){case 253:var i=t.importClause;if(!i)return;var a=i.name&&n(i.name)?i.name:void 0,o=i.namedBindings&&function(t,r){if(255===t.kind)return r(t.name)?t:void 0;var n=t.elements.filter((function(e){return r(e.name)}));return n.length?e.createNamedImports(n):void 0}(i.namedBindings,n);return a||o?e.createImportDeclaration(void 0,void 0,e.createImportClause(a,o),r):void 0;case 252:return n(t.name)?t:void 0;case 241:var s=function(t,r){switch(t.kind){case 75:return r(t)?t:void 0;case 189:return t;case 188:var n=t.elements.filter((function(t){return t.propertyName||!e.isIdentifier(t.name)||r(t.name)}));return n.length?e.createObjectBindingPattern(n):void 0}}(t.name,n);return s?c(s,t.type,u(r),t.parent.flags):void 0;default:return e.Debug.assertNever(t,"Unexpected import kind "+t.kind)}}function f(t,r,n){t.forEachChild((function t(i){if(e.isIdentifier(i)&&!e.isDeclarationName(i)){var a=r.getSymbolAtLocation(i);a&&n(a)}else i.forEachChild(t)}))}r.registerRefactor("Move to a new file",{getAvailableActions:function(t){if(!t.preferences.allowTextChangesInNewFiles||void 0===n(t))return e.emptyArray;var r=e.getLocaleSpecificMessage(e.Diagnostics.Move_to_a_new_file);return[{name:"Move to a new file",description:r,actions:[{name:"Move to a new file",description:r}]}]},getEditsForAction:function(r,c){e.Debug.assert("Move to a new file"===c,"Wrong refactor invoked");var d=e.Debug.assertDefined(n(r));return{edits:e.textChanges.ChangeTracker.with(r,(function(n){return function(r,n,c,d,k,N){var A=n.getTypeChecker(),F=function(t,r,n){var i=new m,a=new m,o=new m,s=function(t){if(void 0===t)return;var r=n.getJsxNamespace(t),i=n.resolveName(r,t,1920,!0);return i&&e.some(i.declarations,_)?i:void 0}(e.find(r,(function(e){return!!(2&e.transformFlags)})));s&&a.add(s);for(var c=0,u=r;c<u.length;c++){v(D=u[c],(function(t){i.add(e.Debug.assertDefined(e.isExpressionStatement(t)?n.getSymbolAtLocation(t.expression.left):t.symbol,"Need a symbol here"))}))}for(var l=0,d=r;l<d.length;l++){f(D=d[l],n,(function(e){if(e.declarations)for(var r=0,n=e.declarations;r<n.length;r++){var s=n[r];_(s)?a.add(e):g(s)&&y(s)===t&&!i.has(e)&&o.add(e)}}))}for(var p=a.clone(),h=new m,b=0,x=t.statements;b<x.length;b++){var D=x[b];e.contains(r,D)||(s&&2&D.transformFlags&&p.delete(s),f(D,n,(function(e){i.has(e)&&h.add(e),p.delete(e)})))}return{movedSymbols:i,newFileImportsFromOldFile:o,oldFileImportsFromNewFile:h,oldImportsNeededByNewFile:a,unusedImportsFromOldFile:p}}(r,c.all,A),P=e.getDirectoryPath(r.fileName),w=e.extensionFromPath(r.fileName),I=function(t,r,n,i){for(var a=t,o=1;;o++){var s=e.combinePaths(n,a+r);if(!i.fileExists(s))return a;a=t+"."+o}}((M=F.movedSymbols,M.forEachEntry(e.symbolNameNoDefault)||"newFile"),w,P,k),O=I+w;var M;d.createNewFile(r,e.combinePaths(P,O),function(r,n,c,_,d,f,m){var y=d.getTypeChecker();if(!r.externalModuleIndicator&&!r.commonJsModuleIndicator)return i(r,_.ranges,c),_.all;var k=!!r.externalModuleIndicator,N=e.getQuotePreference(r,m),A=function(t,r,n,i){var a,o=[];return t.forEach((function(t){"default"===t.escapedName?a=e.createIdentifier(e.symbolNameNoDefault(t)):o.push(t.name)})),s(a,o,r,n,i)}(n.oldFileImportsFromNewFile,f,k,N);A&&e.insertImport(c,r,A);return function(t,r,n,i,a){for(var s=0,c=t.statements;s<c.length;s++){var u=c[s];e.contains(r,u)||o(u,(function(e){return l(t,e,n,(function(e){return i.has(a.getSymbolAtLocation(e))}))}))}}(r,_.all,c,n.unusedImportsFromOldFile,y),i(r,_.ranges,c),function(t,r,n,i,s){for(var c=r.getTypeChecker(),_=function(r){if(r===n)return"continue";for(var _=function(_){o(_,(function(o){if(c.getSymbolAtLocation(a(o))===n.symbol){var d=function(t){var r=e.isBindingElement(t.parent)?e.getPropertySymbolFromBindingElement(c,t.parent):e.skipAlias(c.getSymbolAtLocation(t),c);return!!r&&i.has(r)};l(r,o,t,d);var f=e.combinePaths(e.getDirectoryPath(a(o).text),s),m=p(o,e.createLiteral(f),d);m&&t.insertNodeAfter(r,_,m);var g=function(t){switch(t.kind){case 253:return t.importClause&&t.importClause.namedBindings&&255===t.importClause.namedBindings.kind?t.importClause.namedBindings.name:void 0;case 252:return t.name;case 241:return e.tryCast(t.name,e.isIdentifier);default:return e.Debug.assertNever(t,"Unexpected node kind "+t.kind)}}(o);g&&function(t,r,n,i,a,o,s,c){var l=e.codefix.moduleSpecifierToValidIdentifier(a,99),_=!1,d=[];if(e.FindAllReferences.Core.eachSymbolReferenceInFile(s,n,r,(function(t){e.isPropertyAccessExpression(t.parent)&&(_=_||!!n.resolveName(l,t,67108863,!0),i.has(n.getSymbolAtLocation(t.parent.name))&&d.push(t))})),d.length){for(var p=_?e.getUniqueName(l,r):l,f=0,m=d;f<m.length;f++){var g=m[f];t.replaceNode(r,g,e.createIdentifier(p))}t.insertNodeAfter(r,c,function(t,r,n){var i=e.createIdentifier(r),a=e.createLiteral(n);switch(t.kind){case 253:return e.createImportDeclaration(void 0,void 0,e.createImportClause(void 0,e.createNamespaceImport(i)),a);case 252:return e.createImportEqualsDeclaration(void 0,void 0,i,e.createExternalModuleReference(a));case 241:return e.createVariableDeclaration(i,void 0,u(a));default:return e.Debug.assertNever(t,"Unexpected node kind "+t.kind)}}(c,a,o))}}(t,r,c,i,s,f,g,o)}}))},d=0,f=r.statements;d<f.length;d++){_(f[d])}},d=0,f=r.getSourceFiles();d<f.length;d++){var m=f[d];_(m)}}(c,d,r,n.movedSymbols,f),t(function(t,r,n,i,c,u,l){for(var _,d=[],f=0,m=t.statements;f<m.length;f++){o(m[f],(function(t){e.append(d,p(t,a(t),(function(e){return r.has(c.getSymbolAtLocation(e))})))}))}var y=[],h=e.nodeSeenTracker();return n.forEach((function(r){for(var n=0,a=r.declarations;n<a.length;n++){var o=a[n];if(g(o)){var s=b(o);if(s){var c=x(o);h(c)&&D(t,c,i,u),e.hasModifier(o,512)?_=s:y.push(s.text)}}}})),e.append(d,s(_,y,e.removeFileExtension(e.getBaseFileName(t.fileName)),u,l)),d}(r,n.oldImportsNeededByNewFile,n.newFileImportsFromOldFile,c,y,k,N),function(r,n,i,a){return e.flatMap(n,(function(n){if(function(t){return e.Debug.assert(e.isSourceFile(t.parent),"Node parent should be a SourceFile"),h(t)||e.isVariableStatement(t)}(n)&&!S(r,n,a)&&v(n,(function(t){return i.has(e.Debug.assertDefined(t.symbol))}))){var o=function(e,r){return r?[T(e)]:function(e){return t([e],E(e).map(C))}(e)}(n,a);if(o)return o}return n}))}(r,_.all,n.oldFileImportsFromNewFile,k))}(r,F,d,c,n,I,N)),function(t,r,n,i,a){var o=t.getCompilerOptions().configFile;if(!o)return;var s=e.normalizePath(e.combinePaths(n,"..",i)),c=e.getRelativePathFromFile(o.fileName,s,a),u=o.statements[0]&&e.tryCast(o.statements[0].expression,e.isObjectLiteralExpression),l=u&&e.find(u.properties,(function(t){return e.isPropertyAssignment(t)&&e.isStringLiteral(t.name)&&"files"===t.name.text}));l&&e.isArrayLiteralExpression(l.initializer)&&r.insertNodeInListAfter(o,e.last(l.initializer.elements),e.createLiteral(c),l.initializer.elements)}(n,d,r.fileName,O,e.hostGetCanonicalFileName(k))}(r.file,r.program,d,n,r.host,r.preferences)})),renameFilename:void 0,renameLocation:void 0}}});var m=function(){function t(){this.map=e.createMap()}return t.prototype.add=function(t){this.map.set(String(e.getSymbolId(t)),t)},t.prototype.has=function(t){return this.map.has(String(e.getSymbolId(t)))},t.prototype.delete=function(t){this.map.delete(String(e.getSymbolId(t)))},t.prototype.forEach=function(e){this.map.forEach(e)},t.prototype.forEachEntry=function(t){return e.forEachEntry(this.map,t)},t.prototype.clone=function(){var r=new t;return e.copyEntries(this.map,r.map),r},t}();function g(t){return h(t)&&e.isSourceFile(t.parent)||e.isVariableDeclaration(t)&&e.isSourceFile(t.parent.parent.parent)}function y(t){return e.isVariableDeclaration(t)?t.parent.parent.parent:t.parent}function h(e){switch(e.kind){case 243:case 244:case 248:case 247:case 246:case 245:case 252:return!0;default:return!1}}function v(t,r){switch(t.kind){case 243:case 244:case 248:case 247:case 246:case 245:case 252:return r(t);case 224:return e.firstDefined(t.declarationList.declarations,(function(t){return function t(r,n){switch(r.kind){case 75:return n(e.cast(r.parent,(function(t){return e.isVariableDeclaration(t)||e.isBindingElement(t)})));case 189:case 188:return e.firstDefined(r.elements,(function(r){return e.isOmittedExpression(r)?void 0:t(r.name,n)}));default:return e.Debug.assertNever(r,"Unexpected name kind "+r.kind)}}(t.name,r)}));case 225:var n=t.expression;return e.isBinaryExpression(n)&&1===e.getAssignmentDeclarationKind(n)?r(t):void 0}}function b(t){return e.isExpressionStatement(t)?t.expression.left.name:e.tryCast(t.name,e.isIdentifier)}function x(t){switch(t.kind){case 241:return t.parent.parent;case 190:return x(e.cast(t.parent.parent,(function(t){return e.isVariableDeclaration(t)||e.isBindingElement(t)})));default:return t}}function D(t,r,n,i){if(!S(t,r,i))if(i)e.isExpressionStatement(r)||n.insertExportModifier(t,r);else{var a=E(r);0!==a.length&&n.insertNodesAfter(t,r,a.map(C))}}function S(t,r,n){return n?!e.isExpressionStatement(r)&&e.hasModifier(r,1):E(r).some((function(r){return t.symbol.exports.has(e.escapeLeadingUnderscores(r))}))}function T(t){var r=e.concatenate([e.createModifier(88)],t.modifiers);switch(t.kind){case 243:return e.updateFunctionDeclaration(t,t.decorators,r,t.asteriskToken,t.name,t.typeParameters,t.parameters,t.type,t.body);case 244:return e.updateClassDeclaration(t,t.decorators,r,t.name,t.typeParameters,t.heritageClauses,t.members);case 224:return e.updateVariableStatement(t,r,t.declarationList);case 248:return e.updateModuleDeclaration(t,t.decorators,r,t.name,t.body);case 247:return e.updateEnumDeclaration(t,t.decorators,r,t.name,t.members);case 246:return e.updateTypeAliasDeclaration(t,t.decorators,r,t.name,t.typeParameters,t.type);case 245:return e.updateInterfaceDeclaration(t,t.decorators,r,t.name,t.typeParameters,t.heritageClauses,t.members);case 252:return e.updateImportEqualsDeclaration(t,t.decorators,r,t.name,t.moduleReference);case 225:return e.Debug.fail();default:return e.Debug.assertNever(t,"Unexpected declaration kind "+t.kind)}}function E(t){switch(t.kind){case 243:case 244:return[t.name.text];case 224:return e.mapDefined(t.declarationList.declarations,(function(t){return e.isIdentifier(t.name)?t.name.text:void 0}));case 248:case 247:case 246:case 245:case 252:return e.emptyArray;case 225:return e.Debug.fail("Can't export an ExpressionStatement");default:return e.Debug.assertNever(t,"Unexpected decl kind "+t.kind)}}function C(t){return e.createExpressionStatement(e.createBinary(e.createPropertyAccess(e.createIdentifier("exports"),e.createIdentifier(t)),62,e.createIdentifier(t)))}}(e.refactor||(e.refactor={}))}(s||(s={})),function(e){!function(t){!function(r){var n="Add or remove braces in an arrow function",i=e.Diagnostics.Add_or_remove_braces_in_an_arrow_function.message,a="Add braces to arrow function",o="Remove braces from arrow function",s=e.Diagnostics.Add_braces_to_arrow_function.message,c=e.Diagnostics.Remove_braces_from_arrow_function.message;function u(t,r){var n=e.getTokenAtPosition(t,r),i=e.getContainingFunction(n);if(i&&e.isArrowFunction(i)&&e.rangeContainsRange(i,n)&&!e.rangeContainsRange(i.body,n)){if(e.isExpression(i.body))return{func:i,addBraces:!0,expression:i.body};if(1===i.body.statements.length){var a=e.first(i.body.statements);if(e.isReturnStatement(a))return{func:i,addBraces:!1,expression:a.expression,returnStatement:a}}}}t.registerRefactor(n,{getEditsForAction:function(t,r){var n=t.file,i=t.startPosition,s=u(n,i);if(!s)return;var c,l=s.expression,_=s.returnStatement,d=s.func;if(r===a){var p=e.createReturn(l);c=e.createBlock([p],!0),e.suppressLeadingAndTrailingTrivia(c),e.copyLeadingComments(l,p,n,3,!0)}else if(r===o&&_){var f=l||e.createVoidZero();c=function(t){return e.isBinaryExpression(t)&&27===t.operatorToken.kind||e.isObjectLiteralExpression(t)}(f)?e.createParen(f):f,e.suppressLeadingAndTrailingTrivia(c),e.copyLeadingComments(_,c,n,3,!1)}else e.Debug.fail("invalid action");var m=e.textChanges.ChangeTracker.with(t,(function(e){return e.replaceNode(n,d.body,c)}));return{renameFilename:void 0,renameLocation:void 0,edits:m}},getAvailableActions:function(t){var r=t.file,l=t.startPosition,_=u(r,l);return _?[{name:n,description:i,actions:[_.addBraces?{name:a,description:s}:{name:o,description:c}]}]:e.emptyArray}})}(t.addOrRemoveBracesToArrowFunction||(t.addOrRemoveBracesToArrowFunction={}))}(e.refactor||(e.refactor={}))}(s||(s={})),function(e){!function(r){!function(n){var i="Convert parameters to destructured object",a=2;function o(t){var r=t.node;return e.isImportSpecifier(r.parent)||e.isImportClause(r.parent)||e.isImportEqualsDeclaration(r.parent)||e.isNamespaceImport(r.parent)?r:e.isExportSpecifier(r.parent)||e.isExportAssignment(r.parent)?r:void 0}function s(t){if(e.isDeclaration(t.node.parent))return t.node}function c(t){if(t.node.parent){var r=t.node,n=r.parent;switch(n.kind){case 195:case 196:var i=e.tryCast(n,e.isCallOrNewExpression);if(i&&i.expression===r)return i;break;case 193:var a=e.tryCast(n,e.isPropertyAccessExpression);if(a&&a.parent&&a.name===r){var o=e.tryCast(a.parent,e.isCallOrNewExpression);if(o&&o.expression===a)return o}break;case 194:var s=e.tryCast(n,e.isElementAccessExpression);if(s&&s.parent&&s.argumentExpression===r){var c=e.tryCast(s.parent,e.isCallOrNewExpression);if(c&&c.expression===s)return c}}}}function u(t){if(t.node.parent){var r=t.node,n=r.parent;switch(n.kind){case 193:var i=e.tryCast(n,e.isPropertyAccessExpression);if(i&&i.expression===r)return i;break;case 194:var a=e.tryCast(n,e.isElementAccessExpression);if(a&&a.expression===r)return a}}}function l(t){var r=t.node;if(2===e.getMeaningFromLocation(r)||e.isExpressionWithTypeArgumentsInClassExtendsClause(r.parent))return r}function _(t,r,n){var i=e.getTouchingToken(t,r),o=e.getContainingFunctionDeclaration(i);if(!function(t){var r=e.findAncestor(t,e.isJSDocNode);if(r){var n=e.findAncestor(r,(function(t){return!e.isJSDocNode(t)}));return!!n&&e.isFunctionLikeDeclaration(n)}return!1}(i))return!(o&&function(t,r){if(!function(t,r){return function(e){if(m(e))return e.length-1;return e.length}(t)>=a&&e.every(t,(function(t){return function(t,r){if(e.isRestParameter(t)){var n=r.getTypeAtLocation(t);if(!r.isArrayType(n)&&!r.isTupleType(n))return!1}return!t.modifiers&&!t.decorators&&e.isIdentifier(t.name)}(t,r)}))}(t.parameters,r))return!1;switch(t.kind){case 243:return p(t)&&d(t,r);case 160:return d(t,r);case 161:return e.isClassDeclaration(t.parent)?p(t.parent)&&d(t,r):f(t.parent.parent)&&d(t,r);case 200:case 201:return f(t.parent)}return!1}(o,n)&&e.rangeContainsRange(o,i))||o.body&&e.rangeContainsRange(o.body,i)?void 0:o}function d(e,t){return!!e.body&&!t.isImplementationOfOverload(e)}function p(t){return!!t.name||!!e.findModifier(t,83)}function f(t){return e.isVariableDeclaration(t)&&e.isVarConst(t)&&e.isIdentifier(t.name)&&!t.type}function m(t){return t.length>0&&e.isThis(t[0].name)}function g(t){return m(t)&&(t=e.createNodeArray(t.slice(1),t.hasTrailingComma)),t}function y(t,r){var n=g(t.parameters),i=e.isRestParameter(e.last(n)),a=i?r.slice(0,n.length-1):r,o=e.map(a,(function(t,r){var i=function(t,r){return e.isIdentifier(r)&&e.getTextOfIdentifierOrLiteral(r)===t?e.createShorthandPropertyAssignment(t):e.createPropertyAssignment(t,r)}(v(n[r]),t);return e.suppressLeadingAndTrailingTrivia(i.name),e.isPropertyAssignment(i)&&e.suppressLeadingAndTrailingTrivia(i.initializer),h(t,i),i}));if(i&&r.length>=n.length){var s=r.slice(n.length-1),c=e.createPropertyAssignment(v(e.last(n)),e.createArrayLiteral(s));o.push(c)}return e.createObjectLiteral(o,!1)}function h(t,r){var n=t.getSourceFile();!function(e,t){for(var r=e.getFullStart(),n=e.getStart(),i=r;i<n;i++)if(10===t.charCodeAt(i))return!0;return!1}(t,n.text)?e.copyTrailingAsLeadingComments(t,r,n):e.copyLeadingComments(t,r,n),e.copyTrailingComments(t,r,n)}function v(t){return e.getTextOfIdentifierOrLiteral(t.name)}r.registerRefactor(i,{getEditsForAction:function(r,n){e.Debug.assert(n===i,"Unexpected action name");var a=r.file,d=r.startPosition,p=r.program,f=r.cancellationToken,b=r.host,x=_(a,d,p.getTypeChecker());if(!x||!f)return;var D=function(r,n,i){var a=function(t){switch(t.kind){case 243:return t.name?[t.name]:[e.Debug.assertDefined(e.findModifier(t,83),"Nameless function declaration should be a default export")];case 160:return[t.name];case 161:var r=e.Debug.assertDefined(e.findChildOfKind(t,128,t.getSourceFile()),"Constructor declaration should have constructor keyword");return 213===t.parent.kind?[t.parent.parent.name,r]:[r];case 201:return[t.parent.name];case 200:return t.name?[t.name,t.parent.name]:[t.parent.name];default:return e.Debug.assertNever(t,"Unexpected function declaration kind "+t.kind)}}(r),_=e.isConstructorDeclaration(r)?function(t){switch(t.parent.kind){case 244:var r=t.parent;return r.name?[r.name]:[e.Debug.assertDefined(e.findModifier(r,83),"Nameless class declaration should be a default export")];case 213:var n=t.parent,i=t.parent.parent,a=n.name;return a?[a,i.name]:[i.name]}}(r):[],d=e.deduplicate(t(a,_),e.equateValues),p=n.getTypeChecker(),f=function(t){for(var n={accessExpressions:[],typeUsages:[]},i={functionCalls:[],declarations:[],classReferences:n,valid:!0},d=e.map(a,m),p=e.map(_,m),f=e.isConstructorDeclaration(r),g=0,y=t;g<y.length;g++){var h=y[g];if(1===h.kind){if(e.contains(d,m(h.node))||e.isNewExpressionTarget(h.node)){if(o(h))continue;if(b=s(h)){i.declarations.push(b);continue}var v=c(h);if(v){i.functionCalls.push(v);continue}}if(f&&e.contains(p,m(h.node))){var b;if(o(h))continue;if(b=s(h)){i.declarations.push(b);continue}var x=u(h);if(x){n.accessExpressions.push(x);continue}if(e.isClassDeclaration(r.parent)){var D=l(h);if(D){n.typeUsages.push(D);continue}}}i.valid=!1}else i.valid=!1}return i}(e.flatMap(d,(function(t){return e.FindAllReferences.getReferenceEntriesForNode(-1,t,n,n.getSourceFiles(),i)})));e.every(f.declarations,(function(t){return e.contains(d,t)}))||(f.valid=!1);return f;function m(t){var r=p.getSymbolAtLocation(t);return r&&e.getSymbolTarget(r,p)}}(x,p,f);if(D.valid){return{renameFilename:void 0,renameLocation:void 0,edits:e.textChanges.ChangeTracker.with(r,(function(t){return function(t,r,n,i,a,o){var s=e.map(function(t,r,n){var i,a=r.getTypeChecker(),o=g(t.parameters),s=e.map(o,(function(t){var r=e.createBindingElement(void 0,void 0,v(t),e.isRestParameter(t)&&b(t)?e.createArrayLiteral():t.initializer);e.suppressLeadingAndTrailingTrivia(r),t.initializer&&r.initializer&&h(t.initializer,r.initializer);return r})),c=e.createObjectBindingPattern(s),u=(l=o,_=e.map(l,y),e.addEmitFlags(e.createTypeLiteralNode(_),1));var l,_;e.every(o,b)&&(i=e.createObjectLiteral());var d=e.createParameter(void 0,void 0,void 0,c,void 0,u,i);if(m(t.parameters)){var p=t.parameters[0],f=e.createParameter(void 0,void 0,void 0,p.name,void 0,p.type);return e.suppressLeadingAndTrailingTrivia(f.name),h(p.name,f.name),p.type&&(e.suppressLeadingAndTrailingTrivia(f.type),h(p.type,f.type)),e.createNodeArray([f,d])}return e.createNodeArray([d]);function y(t){var i=t.type;i||!t.initializer&&!e.isRestParameter(t)||(i=function(t){var i=a.getTypeAtLocation(t);return e.getTypeNodeIfAccessible(i,t,r,n)}(t));var o=e.createPropertySignature(void 0,v(t),b(t)?e.createToken(57):t.questionToken,i,void 0);return e.suppressLeadingAndTrailingTrivia(o),h(t.name,o.name),t.type&&o.type&&h(t.type,o.type),o}function b(t){if(e.isRestParameter(t)){var r=a.getTypeAtLocation(t);return!a.isTupleType(r)}return a.isOptionalParameter(t)}}(a,r,n),(function(t){return e.getSynthesizedDeepClone(t)}));i.replaceNodeRangeWithNodes(t,e.first(a.parameters),e.last(a.parameters),s,{joiner:", ",indentation:0,leadingTriviaOption:e.textChanges.LeadingTriviaOption.IncludeAll,trailingTriviaOption:e.textChanges.TrailingTriviaOption.Include});for(var c=e.sortAndDeduplicate(o.functionCalls,(function(t,r){return e.compareValues(t.pos,r.pos)})),u=0,l=c;u<l.length;u++){var _=l[u];if(_.arguments&&_.arguments.length){var d=e.getSynthesizedDeepClone(y(a,_.arguments),!0);i.replaceNodeRange(e.getSourceFileOfNode(_),e.first(_.arguments),e.last(_.arguments),d,{leadingTriviaOption:e.textChanges.LeadingTriviaOption.IncludeAll,trailingTriviaOption:e.textChanges.TrailingTriviaOption.Include})}}}(a,p,b,t,x,D)}))}}return{edits:[]}},getAvailableActions:function(t){var r=t.file,n=t.startPosition;if(e.isSourceFileJS(r))return e.emptyArray;if(!_(r,n,t.program.getTypeChecker()))return e.emptyArray;var a=e.getLocaleSpecificMessage(e.Diagnostics.Convert_parameters_to_destructured_object);return[{name:i,description:a,actions:[{name:i,description:a}]}]}})}(r.convertParamsToDestructuredObject||(r.convertParamsToDestructuredObject={}))}(e.refactor||(e.refactor={}))}(s||(s={})),function(e){function n(t,r,n,a){var o=e.isNodeKind(t)?new i(t,r,n):75===t?new l(75,r,n):new u(t,r,n);return o.parent=a,o.flags=25358336&a.flags,o}e.servicesVersion="0.8";var i=function(){function t(e,t,r){this.pos=t,this.end=r,this.flags=0,this.modifierFlagsCache=0,this.transformFlags=0,this.parent=void 0,this.kind=e}return t.prototype.assertHasRealPosition=function(t){e.Debug.assert(!e.positionIsSynthesized(this.pos)&&!e.positionIsSynthesized(this.end),t||"Node must have a real position for this operation")},t.prototype.getSourceFile=function(){return e.getSourceFileOfNode(this)},t.prototype.getStart=function(t,r){return this.assertHasRealPosition(),e.getTokenPosOfNode(this,t,r)},t.prototype.getFullStart=function(){return this.assertHasRealPosition(),this.pos},t.prototype.getEnd=function(){return this.assertHasRealPosition(),this.end},t.prototype.getWidth=function(e){return this.assertHasRealPosition(),this.getEnd()-this.getStart(e)},t.prototype.getFullWidth=function(){return this.assertHasRealPosition(),this.end-this.pos},t.prototype.getLeadingTriviaWidth=function(e){return this.assertHasRealPosition(),this.getStart(e)-this.pos},t.prototype.getFullText=function(e){return this.assertHasRealPosition(),(e||this.getSourceFile()).text.substring(this.pos,this.end)},t.prototype.getText=function(e){return this.assertHasRealPosition(),e||(e=this.getSourceFile()),e.text.substring(this.getStart(e),this.getEnd())},t.prototype.getChildCount=function(e){return this.getChildren(e).length},t.prototype.getChildAt=function(e,t){return this.getChildren(t)[e]},t.prototype.getChildren=function(t){return this.assertHasRealPosition("Node without a real position cannot be scanned and thus has no token nodes - use forEachChild and collect the result if that's fine"),this._children||(this._children=function(t,r){if(!e.isNodeKind(t.kind))return e.emptyArray;var i=[];if(e.isJSDocCommentContainingNode(t))return t.forEachChild((function(e){i.push(e)})),i;e.scanner.setText((r||t.getSourceFile()).text);var o=t.pos,s=function(e){a(i,o,e.pos,t),i.push(e),o=e.end};return e.forEach(t.jsDoc,s),o=t.pos,t.forEachChild(s,(function(e){a(i,o,e.pos,t),i.push(function(e,t){var r=n(317,e.pos,e.end,t);r._children=[];for(var i=e.pos,o=0,s=e;o<s.length;o++){var c=s[o];a(r._children,i,c.pos,t),r._children.push(c),i=c.end}return a(r._children,i,e.end,t),r}(e,t)),o=e.end})),a(i,o,t.end,t),e.scanner.setText(void 0),i}(this,t))},t.prototype.getFirstToken=function(t){this.assertHasRealPosition();var r=this.getChildren(t);if(r.length){var n=e.find(r,(function(e){return e.kind<292||e.kind>316}));return n.kind<152?n:n.getFirstToken(t)}},t.prototype.getLastToken=function(t){this.assertHasRealPosition();var r=this.getChildren(t),n=e.lastOrUndefined(r);if(n)return n.kind<152?n:n.getLastToken(t)},t.prototype.forEachChild=function(t,r){return e.forEachChild(this,t,r)},t}();function a(t,r,i,a){for(e.scanner.setTextPos(r);r<i;){var o=e.scanner.scan(),s=e.scanner.getTextPos();if(s<=i&&(75===o&&e.Debug.fail("Did not expect "+e.Debug.formatSyntaxKind(a.kind)+" to have an Identifier in its trivia"),t.push(n(o,r,s,a))),r=s,1===o)break}}var s=function(){function t(e,t){this.pos=e,this.end=t,this.flags=0,this.modifierFlagsCache=0,this.transformFlags=0,this.parent=void 0}return t.prototype.getSourceFile=function(){return e.getSourceFileOfNode(this)},t.prototype.getStart=function(t,r){return e.getTokenPosOfNode(this,t,r)},t.prototype.getFullStart=function(){return this.pos},t.prototype.getEnd=function(){return this.end},t.prototype.getWidth=function(e){return this.getEnd()-this.getStart(e)},t.prototype.getFullWidth=function(){return this.end-this.pos},t.prototype.getLeadingTriviaWidth=function(e){return this.getStart(e)-this.pos},t.prototype.getFullText=function(e){return(e||this.getSourceFile()).text.substring(this.pos,this.end)},t.prototype.getText=function(e){return e||(e=this.getSourceFile()),e.text.substring(this.getStart(e),this.getEnd())},t.prototype.getChildCount=function(){return 0},t.prototype.getChildAt=function(){},t.prototype.getChildren=function(){return 1===this.kind&&this.jsDoc||e.emptyArray},t.prototype.getFirstToken=function(){},t.prototype.getLastToken=function(){},t.prototype.forEachChild=function(){},t}(),c=function(){function t(e,t){this.flags=e,this.escapedName=t}return t.prototype.getFlags=function(){return this.flags},Object.defineProperty(t.prototype,"name",{get:function(){return e.symbolName(this)},enumerable:!0,configurable:!0}),t.prototype.getEscapedName=function(){return this.escapedName},t.prototype.getName=function(){return this.name},t.prototype.getDeclarations=function(){return this.declarations},t.prototype.getDocumentationComment=function(t){return this.documentationComment||(this.documentationComment=e.emptyArray,this.documentationComment=f(this.declarations,t)),this.documentationComment},t.prototype.getJsDocTags=function(){return void 0===this.tags&&(this.tags=e.JsDoc.getJsDocTagsFromDeclarations(this.declarations)),this.tags},t}(),u=function(e){function t(t,r,n){var i=e.call(this,r,n)||this;return i.kind=t,i}return o(t,e),t}(s),l=function(t){function r(e,r,n){var i=t.call(this,r,n)||this;return i.kind=75,i}return o(r,t),Object.defineProperty(r.prototype,"text",{get:function(){return e.idText(this)},enumerable:!0,configurable:!0}),r}(s);l.prototype.kind=75;var _=function(){function t(e,t){this.checker=e,this.flags=t}return t.prototype.getFlags=function(){return this.flags},t.prototype.getSymbol=function(){return this.symbol},t.prototype.getProperties=function(){return this.checker.getPropertiesOfType(this)},t.prototype.getProperty=function(e){return this.checker.getPropertyOfType(this,e)},t.prototype.getApparentProperties=function(){return this.checker.getAugmentedPropertiesOfType(this)},t.prototype.getCallSignatures=function(){return this.checker.getSignaturesOfType(this,0)},t.prototype.getConstructSignatures=function(){return this.checker.getSignaturesOfType(this,1)},t.prototype.getStringIndexType=function(){return this.checker.getIndexTypeOfType(this,0)},t.prototype.getNumberIndexType=function(){return this.checker.getIndexTypeOfType(this,1)},t.prototype.getBaseTypes=function(){return this.isClassOrInterface()?this.checker.getBaseTypes(this):void 0},t.prototype.isNullableType=function(){return this.checker.isNullableType(this)},t.prototype.getNonNullableType=function(){return this.checker.getNonNullableType(this)},t.prototype.getNonOptionalType=function(){return this.checker.getNonOptionalType(this)},t.prototype.getConstraint=function(){return this.checker.getBaseConstraintOfType(this)},t.prototype.getDefault=function(){return this.checker.getDefaultFromTypeParameter(this)},t.prototype.isUnion=function(){return!!(1048576&this.flags)},t.prototype.isIntersection=function(){return!!(2097152&this.flags)},t.prototype.isUnionOrIntersection=function(){return!!(3145728&this.flags)},t.prototype.isLiteral=function(){return!!(384&this.flags)},t.prototype.isStringLiteral=function(){return!!(128&this.flags)},t.prototype.isNumberLiteral=function(){return!!(256&this.flags)},t.prototype.isTypeParameter=function(){return!!(262144&this.flags)},t.prototype.isClassOrInterface=function(){return!!(3&e.getObjectFlags(this))},t.prototype.isClass=function(){return!!(1&e.getObjectFlags(this))},Object.defineProperty(t.prototype,"typeArguments",{get:function(){if(4&e.getObjectFlags(this))return this.checker.getTypeArguments(this)},enumerable:!0,configurable:!0}),t}(),d=function(){function t(e,t){this.checker=e,this.flags=t}return t.prototype.getDeclaration=function(){return this.declaration},t.prototype.getTypeParameters=function(){return this.typeParameters},t.prototype.getParameters=function(){return this.parameters},t.prototype.getReturnType=function(){return this.checker.getReturnTypeOfSignature(this)},t.prototype.getDocumentationComment=function(){return this.documentationComment||(this.documentationComment=f(e.singleElementArray(this.declaration),this.checker))},t.prototype.getJsDocTags=function(){return void 0===this.jsDocTags&&(this.jsDocTags=this.declaration?e.JsDoc.getJsDocTagsFromDeclarations([this.declaration]):[]),this.jsDocTags},t}();function p(t){return e.getJSDocTags(t).some((function(e){return"inheritDoc"===e.tagName.text}))}function f(t,r){if(!t)return e.emptyArray;var n=e.JsDoc.getJsDocCommentsFromDeclarations(t);return(0===n.length||t.some(p))&&e.forEachUnique(t,(function(t){var i=function(t,r,n){return e.firstDefined(t.parent?e.getAllSuperTypeNodes(t.parent):e.emptyArray,(function(e){var t=n.getTypeAtLocation(e),i=t&&n.getPropertyOfType(t,r),a=i&&i.getDocumentationComment(n);return a&&a.length?a:void 0}))}(t,t.symbol.name,r);i&&(n=0===n.length?i.slice():i.concat(e.lineBreakPart(),n))})),n}var m=function(t){function r(e,r,n){var i=t.call(this,e,r,n)||this;return i.kind=288,i}return o(r,t),r.prototype.update=function(t,r){return e.updateSourceFile(this,t,r)},r.prototype.getLineAndCharacterOfPosition=function(t){return e.getLineAndCharacterOfPosition(this,t)},r.prototype.getLineStarts=function(){return e.getLineStarts(this)},r.prototype.getPositionOfLineAndCharacter=function(t,r,n){return e.computePositionOfLineAndCharacter(e.getLineStarts(this),t,r,this.text,n)},r.prototype.getLineEndOfPosition=function(e){var t,r=this.getLineAndCharacterOfPosition(e).line,n=this.getLineStarts();r+1>=n.length&&(t=this.getEnd()),t||(t=n[r+1]-1);var i=this.getFullText();return"\n"===i[t]&&"\r"===i[t-1]?t-1:t},r.prototype.getNamedDeclarations=function(){return this.namedDeclarations||(this.namedDeclarations=this.computeNamedDeclarations()),this.namedDeclarations},r.prototype.computeNamedDeclarations=function(){var t=e.createMultiMap();return this.forEachChild((function i(a){switch(a.kind){case 243:case 200:case 160:case 159:var o=a,s=n(o);if(s){var c=function(e){var r=t.get(e);r||t.set(e,r=[]);return r}(s),u=e.lastOrUndefined(c);u&&o.parent===u.parent&&o.symbol===u.symbol?o.body&&!u.body&&(c[c.length-1]=o):c.push(o)}e.forEachChild(a,i);break;case 244:case 213:case 245:case 246:case 247:case 248:case 252:case 261:case 257:case 254:case 255:case 162:case 163:case 172:r(a),e.forEachChild(a,i);break;case 155:if(!e.hasModifier(a,92))break;case 241:case 190:var l=a;if(e.isBindingPattern(l.name)){e.forEachChild(l.name,i);break}l.initializer&&i(l.initializer);case 282:case 158:case 157:r(a);break;case 259:a.exportClause&&e.forEach(a.exportClause.elements,i);break;case 253:var _=a.importClause;_&&(_.name&&r(_.name),_.namedBindings&&(255===_.namedBindings.kind?r(_.namedBindings):e.forEach(_.namedBindings.elements,i)));break;case 208:0!==e.getAssignmentDeclarationKind(a)&&r(a);default:e.forEachChild(a,i)}})),t;function r(e){var r=n(e);r&&t.add(r,e)}function n(t){var r=e.getNonAssignedNameOfDeclaration(t);return r&&(e.isComputedPropertyName(r)&&e.isPropertyAccessExpression(r.expression)?r.expression.name.text:e.isPropertyName(r)?e.getNameFromPropertyName(r):void 0)}},r}(i),g=function(){function t(e,t,r){this.fileName=e,this.text=t,this.skipTrivia=r}return t.prototype.getLineAndCharacterOfPosition=function(t){return e.getLineAndCharacterOfPosition(this,t)},t}();function y(t){var r=!0;for(var n in t)if(e.hasProperty(t,n)&&!h(n)){r=!1;break}if(r)return t;var i={};for(var n in t){if(e.hasProperty(t,n))i[h(n)?n:n.charAt(0).toLowerCase()+n.substr(1)]=t[n]}return i}function h(e){return!e.length||e.charAt(0)===e.charAt(0).toLowerCase()}function v(){return{target:1,jsx:1}}e.toEditorSettings=y,e.displayPartsToString=function(t){return t?e.map(t,(function(e){return e.text})).join(""):""},e.getDefaultCompilerOptions=v,e.getSupportedCodeFixes=function(){return e.codefix.getSupportedErrorCodes()};var b=function(){function t(t,r){this.host=t,this.currentDirectory=t.getCurrentDirectory(),this.fileNameToEntry=e.createMap();for(var n=0,i=t.getScriptFileNames();n<i.length;n++){var a=i[n];this.createEntry(a,e.toPath(a,this.currentDirectory,r))}this._compilationSettings=t.getCompilationSettings()||{target:1,jsx:1}}return t.prototype.compilationSettings=function(){return this._compilationSettings},t.prototype.getProjectReferences=function(){return this.host.getProjectReferences&&this.host.getProjectReferences()},t.prototype.createEntry=function(t,r){var n,i=this.host.getScriptSnapshot(t);return n=i?{hostFileName:t,version:this.host.getScriptVersion(t),scriptSnapshot:i,scriptKind:e.getScriptKind(t,this.host)}:t,this.fileNameToEntry.set(r,n),n},t.prototype.getEntryByPath=function(e){return this.fileNameToEntry.get(e)},t.prototype.getHostFileInformation=function(t){var r=this.fileNameToEntry.get(t);return e.isString(r)?void 0:r},t.prototype.getOrCreateEntryByPath=function(t,r){var n=this.getEntryByPath(r)||this.createEntry(t,r);return e.isString(n)?void 0:n},t.prototype.getRootFileNames=function(){var t=[];return this.fileNameToEntry.forEach((function(r){e.isString(r)?t.push(r):6!==r.scriptKind&&t.push(r.hostFileName)})),t},t.prototype.getVersion=function(e){var t=this.getHostFileInformation(e);return t&&t.version},t.prototype.getScriptSnapshot=function(e){var t=this.getHostFileInformation(e);return t&&t.scriptSnapshot},t}(),x=function(){function t(e){this.host=e}return t.prototype.getCurrentSourceFile=function(t){var r=this.host.getScriptSnapshot(t);if(!r)throw new Error("Could not find file: '"+t+"'.");var n,i=e.getScriptKind(t,this.host),a=this.host.getScriptVersion(t);if(this.currentFileName!==t)n=S(t,r,99,a,!0,i);else if(this.currentFileVersion!==a){var o=r.getChangeRange(this.currentFileScriptSnapshot);n=T(this.currentSourceFile,r,a,o)}return n&&(this.currentFileVersion=a,this.currentFileName=t,this.currentFileScriptSnapshot=r,this.currentSourceFile=n),this.currentSourceFile},t}();function D(e,t,r){e.version=r,e.scriptSnapshot=t}function S(t,r,n,i,a,o){var s=e.createSourceFile(t,e.getSnapshotText(r),n,a,o);return D(s,r,i),s}function T(t,r,n,i,a){if(i&&n!==t.version&&!e.disableIncrementalParsing){var o=void 0,s=0!==i.span.start?t.text.substr(0,i.span.start):"",c=e.textSpanEnd(i.span)!==t.text.length?t.text.substr(e.textSpanEnd(i.span)):"";if(0===i.newLength)o=s&&c?s+c:s||c;else{var u=r.getText(i.span.start,i.span.start+i.newLength);o=s&&c?s+u+c:s?s+u:u+c}var l=e.updateSourceFile(t,o,i,a);return D(l,r,n),l.nameTable=void 0,t!==l&&t.scriptSnapshot&&(t.scriptSnapshot.dispose&&t.scriptSnapshot.dispose(),t.scriptSnapshot=void 0),l}return S(t.fileName,r,t.languageVersion,n,!0,t.scriptKind)}e.createLanguageServiceSourceFile=S,e.disableIncrementalParsing=!1,e.updateLanguageServiceSourceFile=T;var E=function(){function t(e){this.cancellationToken=e}return t.prototype.isCancellationRequested=function(){return!!this.cancellationToken&&this.cancellationToken.isCancellationRequested()},t.prototype.throwIfCancellationRequested=function(){if(this.isCancellationRequested())throw new e.OperationCanceledException},t}(),C=function(){function t(e,t){void 0===t&&(t=20),this.hostCancellationToken=e,this.throttleWaitMilliseconds=t,this.lastCancellationCheckTime=0}return t.prototype.isCancellationRequested=function(){var t=e.timestamp();return Math.abs(t-this.lastCancellationCheckTime)>=this.throttleWaitMilliseconds&&(this.lastCancellationCheckTime=t,this.hostCancellationToken.isCancellationRequested())},t.prototype.throwIfCancellationRequested=function(){if(this.isCancellationRequested())throw new e.OperationCanceledException},t}();function k(t){var r=function(t){switch(t.kind){case 10:case 14:case 8:if(153===t.parent.kind)return e.isObjectLiteralElement(t.parent.parent)?t.parent.parent:void 0;case 75:return!e.isObjectLiteralElement(t.parent)||192!==t.parent.parent.kind&&272!==t.parent.parent.kind||t.parent.name!==t?void 0:t.parent}return}(t);return r&&(e.isObjectLiteralExpression(r.parent)||e.isJsxAttributes(r.parent))?r:void 0}function N(t,r,n,i){var a=e.getNameFromPropertyName(t.name);if(!a)return e.emptyArray;if(!n.isUnion())return(o=n.getProperty(a))?[o]:e.emptyArray;var o,s=e.mapDefined(n.types,(function(n){return e.isObjectLiteralExpression(t.parent)&&r.isTypeInvalidDueToUnionDiscriminant(n,t.parent)?void 0:n.getProperty(a)}));if(i&&(0===s.length||s.length===n.types.length)&&(o=n.getProperty(a)))return[o];return 0===s.length?e.mapDefined(n.types,(function(e){return e.getProperty(a)})):s}e.ThrottledCancellationToken=C,e.createLanguageService=function(n,i,a){var o;void 0===i&&(i=e.createDocumentRegistry(n.useCaseSensitiveFileNames&&n.useCaseSensitiveFileNames(),n.getCurrentDirectory())),void 0===a&&(a=!1);var s,c,u=new x(n),l=0,_=new E(n.getCancellationToken&&n.getCancellationToken()),d=n.getCurrentDirectory();function p(e){n.log&&n.log(e)}!e.localizedDiagnosticMessages&&n.getLocalizedDiagnosticMessages&&(e.localizedDiagnosticMessages=n.getLocalizedDiagnosticMessages());var f=e.hostUsesCaseSensitiveFileNames(n),m=e.createGetCanonicalFileName(f),g=e.getSourceMapper({useCaseSensitiveFileNames:function(){return f},getCurrentDirectory:function(){return d},getProgram:D,fileExists:e.maybeBind(n,n.fileExists),readFile:e.maybeBind(n,n.readFile),getDocumentPositionMapper:e.maybeBind(n,n.getDocumentPositionMapper),getSourceFileLike:e.maybeBind(n,n.getSourceFileLike),log:p});function h(e){var t=s.getSourceFile(e);if(!t){var r=new Error("Could not find source file: '"+e+"'.");throw r.ProgramFiles=s.getSourceFiles().map((function(e){return e.fileName})),r}return t}function v(){if(e.Debug.assert(!a),n.getProjectVersion){var t=n.getProjectVersion();if(t){if(c===t&&!n.hasChangedAutomaticTypeDirectiveNames)return;c=t}}var r=n.getTypeRootsVersion?n.getTypeRootsVersion():0;l!==r&&(p("TypeRoots version has changed; provide new program"),s=void 0,l=r);var o=new b(n,m),u=o.getRootFileNames(),y=n.hasInvalidatedResolution||e.returnFalse,h=o.getProjectReferences();if(!e.isProgramUptoDate(s,u,o.compilationSettings(),(function(e){return o.getVersion(e)}),T,y,!!n.hasChangedAutomaticTypeDirectiveNames,h)){var v=o.compilationSettings(),x={getSourceFile:function(t,r,n,i){return E(t,e.toPath(t,d,m),r,n,i)},getSourceFileByPath:E,getCancellationToken:function(){return _},getCanonicalFileName:m,useCaseSensitiveFileNames:function(){return f},getNewLine:function(){return e.getNewLineCharacter(v,(function(){return e.getNewLineOrDefaultFromHost(n)}))},getDefaultLibFileName:function(e){return n.getDefaultLibFileName(e)},writeFile:e.noop,getCurrentDirectory:function(){return d},fileExists:T,readFile:function(t){var r=e.toPath(t,d,m),i=o&&o.getEntryByPath(r);if(i)return e.isString(i)?void 0:e.getSnapshotText(i.scriptSnapshot);return n.readFile&&n.readFile(t)},realpath:n.realpath&&function(e){return n.realpath(e)},directoryExists:function(t){return e.directoryProbablyExists(t,n)},getDirectories:function(e){return n.getDirectories?n.getDirectories(e):[]},readDirectory:function(t,r,i,a,o){return e.Debug.assertDefined(n.readDirectory,"'LanguageServiceHost.readDirectory' must be implemented to correctly process 'projectReferences'"),n.readDirectory(t,r,i,a,o)},onReleaseOldSourceFile:function(e,t){var r=i.getKeyForCompilationSettings(t);i.releaseDocumentWithKey(e.resolvedPath,r)},hasInvalidatedResolution:y,hasChangedAutomaticTypeDirectiveNames:n.hasChangedAutomaticTypeDirectiveNames};n.trace&&(x.trace=function(e){return n.trace(e)}),n.resolveModuleNames&&(x.resolveModuleNames=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n.resolveModuleNames.apply(n,e)}),n.resolveTypeReferenceDirectives&&(x.resolveTypeReferenceDirectives=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return n.resolveTypeReferenceDirectives.apply(n,e)}),n.setResolvedProjectReferenceCallbacks&&(x.setResolvedProjectReferenceCallbacks=function(e){return n.setResolvedProjectReferenceCallbacks(e)}),n.useSourceOfProjectReferenceRedirect&&(x.useSourceOfProjectReferenceRedirect=function(){return n.useSourceOfProjectReferenceRedirect()});var D=i.getKeyForCompilationSettings(v),S={rootNames:u,options:v,host:x,oldProgram:s,projectReferences:h};return s=e.createProgram(S),o=void 0,g.clearCache(),void s.getTypeChecker()}function T(t){var r=e.toPath(t,d,m),i=o&&o.getEntryByPath(r);return i?!e.isString(i):!!n.fileExists&&n.fileExists(t)}function E(t,r,n,a,c){e.Debug.assert(void 0!==o,"getOrCreateSourceFileByPath called after typical CompilerHost lifetime, check the callstack something with a reference to an old host.");var u=o&&o.getOrCreateEntryByPath(t,r);if(u){if(!c){var l=s&&s.getSourceFileByPath(r);if(l)return e.Debug.assertEqual(u.scriptKind,l.scriptKind,"Registered script kind should match new script kind.",r),i.updateDocumentWithKey(t,r,v,D,u.scriptSnapshot,u.version,u.scriptKind)}return i.acquireDocumentWithKey(t,r,v,D,u.scriptSnapshot,u.version,u.scriptKind)}}}function D(){if(!a)return v(),s;e.Debug.assert(void 0===s)}function S(t,r,n){var i=e.normalizePath(t);e.Debug.assert(n.some((function(t){return e.normalizePath(t)===i}))),v();var a=e.mapDefined(n,(function(e){return s.getSourceFile(e)})),o=h(t);return e.DocumentHighlights.getDocumentHighlights(s,_,o,r,a)}function T(t,r,n,i){v();var a=n&&n.isForRename?s.getSourceFiles().filter((function(e){return!s.isSourceFileDefaultLibrary(e)})):s.getSourceFiles();return e.FindAllReferences.findReferenceOrRenameEntries(s,_,a,t,r,n,i)}function C(t){var r=e.getScriptKind(t,n);return 3===r||4===r}var A=e.createMapFromTemplate(((o={})[18]=19,o[20]=21,o[22]=23,o[31]=29,o));function F(t){return e.Debug.assertEqual(t.type,"install package"),n.installPackage?n.installPackage({fileName:function(t){return e.toPath(t,d,m)}(t.file),packageName:t.packageName}):Promise.reject("Host does not implement `installPackage`")}function P(t,r,i,a){var o="number"==typeof r?[r,void 0]:[r.pos,r.end];return{file:t,startPosition:o[0],endPosition:o[1],program:D(),host:n,formatContext:e.formatting.getFormatContext(a),cancellationToken:_,preferences:i}}return A.forEach((function(e,t){return A.set(e.toString(),Number(t))})),{dispose:function(){s&&(e.forEach(s.getSourceFiles(),(function(e){return i.releaseDocument(e.fileName,s.getCompilerOptions())})),s=void 0),n=void 0},cleanupSemanticCache:function(){s=void 0},getSyntacticDiagnostics:function(e){return v(),s.getSyntacticDiagnostics(h(e),_).slice()},getSemanticDiagnostics:function(r){v();var n=h(r),i=s.getSemanticDiagnostics(n,_);if(!e.getEmitDeclarations(s.getCompilerOptions()))return i.slice();var a=s.getDeclarationDiagnostics(n,_);return t(i,a)},getSuggestionDiagnostics:function(t){return v(),e.computeSuggestionDiagnostics(h(t),s,_)},getCompilerOptionsDiagnostics:function(){return v(),t(s.getOptionsDiagnostics(_),s.getGlobalDiagnostics(_))},getSyntacticClassifications:function(t,r){return e.getSyntacticClassifications(_,u.getCurrentSourceFile(t),r)},getSemanticClassifications:function(t,r){return C(t)?(v(),e.getSemanticClassifications(s.getTypeChecker(),_,h(t),s.getClassifiableNames(),r)):[]},getEncodedSyntacticClassifications:function(t,r){return e.getEncodedSyntacticClassifications(_,u.getCurrentSourceFile(t),r)},getEncodedSemanticClassifications:function(t,r){return C(t)?(v(),e.getEncodedSemanticClassifications(s.getTypeChecker(),_,h(t),s.getClassifiableNames(),r)):{spans:[],endOfLineState:0}},getCompletionsAtPosition:function(t,i,a){void 0===a&&(a=e.emptyOptions);var o=r(r({},e.identity(a)),{includeCompletionsForModuleExports:a.includeCompletionsForModuleExports||a.includeExternalModuleExports,includeCompletionsWithInsertText:a.includeCompletionsWithInsertText||a.includeInsertTextCompletions});return v(),e.Completions.getCompletionsAtPosition(n,s,p,h(t),i,o,a.triggerCharacter)},getCompletionEntryDetails:function(t,r,i,a,o,c){return void 0===c&&(c=e.emptyOptions),v(),e.Completions.getCompletionEntryDetails(s,p,h(t),r,{name:i,source:o},n,a&&e.formatting.getFormatContext(a),c,_)},getCompletionEntrySymbol:function(t,r,i,a){return v(),e.Completions.getCompletionEntrySymbol(s,p,h(t),r,{name:i,source:a},n)},getSignatureHelpItems:function(t,r,n){var i=(void 0===n?e.emptyOptions:n).triggerReason;v();var a=h(t);return e.SignatureHelp.getSignatureHelpItems(s,a,r,i,_)},getQuickInfoAtPosition:function(t,r){v();var n=h(t),i=e.getTouchingPropertyName(n,r);if(i!==n){var a=s.getTypeChecker(),o=function(t){if(e.isNewExpression(t.parent)&&t.pos===t.parent.pos)return t.parent.expression;return t}(i),c=function(t,r){var n=k(t);if(n){var i=r.getContextualType(n.parent),a=i&&N(n,r,i,!1);if(a&&1===a.length)return e.first(a)}return r.getSymbolAtLocation(t)}(o,a);if(!c||a.isUnknownSymbol(c)){var u=function(t,r,n){switch(r.kind){case 75:return!e.isLabelName(r)&&!e.isTagName(r);case 193:case 152:return!e.isInComment(t,n);case 103:case 182:case 101:return!0;default:return!1}}(n,o,r)?a.getTypeAtLocation(o):void 0;return u&&{kind:"",kindModifiers:"",textSpan:e.createTextSpanFromNode(o,n),displayParts:a.runWithCancellationToken(_,(function(t){return e.typeToDisplayParts(t,u,e.getContainerNode(o))})),documentation:u.symbol?u.symbol.getDocumentationComment(a):void 0,tags:u.symbol?u.symbol.getJsDocTags():void 0}}var l=a.runWithCancellationToken(_,(function(t){return e.SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(t,c,n,e.getContainerNode(o),o)})),d=l.symbolKind,p=l.displayParts,f=l.documentation,m=l.tags;return{kind:d,kindModifiers:e.SymbolDisplay.getSymbolModifiers(c),textSpan:e.createTextSpanFromNode(o,n),displayParts:p,documentation:f,tags:m}}},getDefinitionAtPosition:function(t,r){return v(),e.GoToDefinition.getDefinitionAtPosition(s,h(t),r)},getDefinitionAndBoundSpan:function(t,r){return v(),e.GoToDefinition.getDefinitionAndBoundSpan(s,h(t),r)},getImplementationAtPosition:function(t,r){return v(),e.FindAllReferences.getImplementationsAtPosition(s,_,s.getSourceFiles(),h(t),r)},getTypeDefinitionAtPosition:function(t,r){return v(),e.GoToDefinition.getTypeDefinitionAtPosition(s.getTypeChecker(),h(t),r)},getReferencesAtPosition:function(t,r){return v(),T(e.getTouchingPropertyName(h(t),r),r,{},e.FindAllReferences.toReferenceEntry)},findReferences:function(t,r){return v(),e.FindAllReferences.findReferencedSymbols(s,_,s.getSourceFiles(),h(t),r)},getOccurrencesAtPosition:function(t,n){return e.flatMap(S(t,n,[t]),(function(e){return e.highlightSpans.map((function(t){return r(r({fileName:e.fileName,textSpan:t.textSpan,isWriteAccess:"writtenReference"===t.kind,isDefinition:!1},t.isInString&&{isInString:!0}),t.contextSpan&&{contextSpan:t.contextSpan})}))}))},getDocumentHighlights:S,getNameOrDottedNameSpan:function(t,r,n){var i=u.getCurrentSourceFile(t),a=e.getTouchingPropertyName(i,r);if(a!==i){switch(a.kind){case 193:case 152:case 10:case 90:case 105:case 99:case 101:case 103:case 182:case 75:break;default:return}for(var o=a;;)if(e.isRightSideOfPropertyAccess(o)||e.isRightSideOfQualifiedName(o))o=o.parent;else{if(!e.isNameOfModuleDeclaration(o))break;if(248!==o.parent.parent.kind||o.parent.parent.body!==o.parent)break;o=o.parent.parent.name}return e.createTextSpanFromBounds(o.getStart(),a.getEnd())}},getBreakpointStatementAtPosition:function(t,r){var n=u.getCurrentSourceFile(t);return e.BreakpointResolver.spanInSourceFileAtLocation(n,r)},getNavigateToItems:function(t,r,n,i){void 0===i&&(i=!1),v();var a=n?[h(n)]:s.getSourceFiles();return e.NavigateTo.getNavigateToItems(a,s.getTypeChecker(),_,t,r,i)},getRenameInfo:function(t,r,n){return v(),e.Rename.getRenameInfo(s,h(t),r,n)},getSmartSelectionRange:function(t,r){return e.SmartSelectionRange.getSmartSelectionRange(r,u.getCurrentSourceFile(t))},findRenameLocations:function(t,n,i,a,o){v();var s=h(t),c=e.getTouchingPropertyName(s,n);if(e.isIdentifier(c)&&(e.isJsxOpeningElement(c.parent)||e.isJsxClosingElement(c.parent))&&e.isIntrinsicJsxName(c.escapedText)){var u=c.parent.parent;return[u.openingElement,u.closingElement].map((function(t){var n=e.createTextSpanFromNode(t.tagName,s);return r({fileName:s.fileName,textSpan:n},e.FindAllReferences.toContextSpan(n,s,t.parent))}))}return T(c,n,{findInStrings:i,findInComments:a,providePrefixAndSuffixTextForRename:o,isForRename:!0},(function(t,r,n){return e.FindAllReferences.toRenameLocation(t,r,n,o||!1)}))},getNavigationBarItems:function(t){return e.NavigationBar.getNavigationBarItems(u.getCurrentSourceFile(t),_)},getNavigationTree:function(t){return e.NavigationBar.getNavigationTree(u.getCurrentSourceFile(t),_)},getOutliningSpans:function(t){var r=u.getCurrentSourceFile(t);return e.OutliningElementsCollector.collectElements(r,_)},getTodoComments:function(t,r){v();var n=h(t);_.throwIfCancellationRequested();var i,a=n.text,o=[];if(r.length>0&&!function(t){return e.stringContains(t,"/node_modules/")}(n.fileName))for(var s=function(){var t="("+/(?:^(?:\s|\*)*)/.source+"|"+/(?:\/\/+\s*)/.source+"|"+/(?:\/\*+\s*)/.source+")",n="(?:"+e.map(r,(function(e){return"("+e.text.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")+")"})).join("|")+")";return new RegExp(t+"("+n+/(?:.*?)/.source+")"+/(?:$|\*\/)/.source,"gim")}(),c=void 0;c=s.exec(a);){_.throwIfCancellationRequested();e.Debug.assert(c.length===r.length+3);var u=c[1],l=c.index+u.length;if(e.isInComment(n,l)){for(var d=void 0,p=0;p<r.length;p++)c[p+3]&&(d=r[p]);if(void 0===d)return e.Debug.fail();if(!((i=a.charCodeAt(l+d.text.length))>=97&&i<=122||i>=65&&i<=90||i>=48&&i<=57)){var f=c[2];o.push({descriptor:d,message:f,position:l})}}}return o},getBraceMatchingAtPosition:function(t,r){var n=u.getCurrentSourceFile(t),i=e.getTouchingToken(n,r),a=i.getStart(n)===r?A.get(i.kind.toString()):void 0,o=a&&e.findChildOfKind(i.parent,a,n);return o?[e.createTextSpanFromNode(i,n),e.createTextSpanFromNode(o,n)].sort((function(e,t){return e.start-t.start})):e.emptyArray},getIndentationAtPosition:function(t,r,n){var i=e.timestamp(),a=y(n),o=u.getCurrentSourceFile(t);p("getIndentationAtPosition: getCurrentSourceFile: "+(e.timestamp()-i)),i=e.timestamp();var s=e.formatting.SmartIndenter.getIndentation(r,o,a);return p("getIndentationAtPosition: computeIndentation : "+(e.timestamp()-i)),s},getFormattingEditsForRange:function(t,r,n,i){var a=u.getCurrentSourceFile(t);return e.formatting.formatSelection(r,n,a,e.formatting.getFormatContext(y(i)))},getFormattingEditsForDocument:function(t,r){return e.formatting.formatDocument(u.getCurrentSourceFile(t),e.formatting.getFormatContext(y(r)))},getFormattingEditsAfterKeystroke:function(t,r,n,i){var a=u.getCurrentSourceFile(t),o=e.formatting.getFormatContext(y(i));if(!e.isInComment(a,r))switch(n){case"{":return e.formatting.formatOnOpeningCurly(r,a,o);case"}":return e.formatting.formatOnClosingCurly(r,a,o);case";":return e.formatting.formatOnSemicolon(r,a,o);case"\n":return e.formatting.formatOnEnter(r,a,o)}return[]},getDocCommentTemplateAtPosition:function(t,r){return e.JsDoc.getDocCommentTemplateAtPosition(e.getNewLineOrDefaultFromHost(n),u.getCurrentSourceFile(t),r)},isValidBraceCompletionAtPosition:function(t,r,n){if(60===n)return!1;var i=u.getCurrentSourceFile(t);if(e.isInString(i,r))return!1;if(e.isInsideJsxElementOrAttribute(i,r))return 123===n;if(e.isInTemplateString(i,r))return!1;switch(n){case 39:case 34:case 96:return!e.isInComment(i,r)}return!0},getJsxClosingTagAtPosition:function(t,r){var n=u.getCurrentSourceFile(t),i=e.findPrecedingToken(r,n);if(i){var a=31===i.kind&&e.isJsxOpeningElement(i.parent)?i.parent.parent:e.isJsxText(i)?i.parent:void 0;return a&&function t(r){var n=r.openingElement,i=r.closingElement,a=r.parent;return!e.tagNamesAreEquivalent(n.tagName,i.tagName)||e.isJsxElement(a)&&e.tagNamesAreEquivalent(n.tagName,a.openingElement.tagName)&&t(a)}(a)?{newText:"</"+a.openingElement.tagName.getText(n)+">"}:void 0}},getSpanOfEnclosingComment:function(t,r,n){var i=u.getCurrentSourceFile(t),a=e.formatting.getRangeOfEnclosingComment(i,r);return!a||n&&3!==a.kind?void 0:e.createTextSpanFromRange(a)},getCodeFixesAtPosition:function(t,r,i,a,o,c){void 0===c&&(c=e.emptyOptions),v();var u=h(t),l=e.createTextSpanFromBounds(r,i),d=e.formatting.getFormatContext(o);return e.flatMap(e.deduplicate(a,e.equateValues,e.compareValues),(function(t){return _.throwIfCancellationRequested(),e.codefix.getFixes({errorCode:t,sourceFile:u,span:l,program:s,host:n,cancellationToken:_,formatContext:d,preferences:c})}))},getCombinedCodeFix:function(t,r,i,a){void 0===a&&(a=e.emptyOptions),v(),e.Debug.assert("file"===t.type);var o=h(t.fileName),c=e.formatting.getFormatContext(i);return e.codefix.getAllFixes({fixId:r,sourceFile:o,program:s,host:n,cancellationToken:_,formatContext:c,preferences:a})},applyCodeActionCommand:function(t,r){var n="string"==typeof t?r:t;return e.isArray(n)?Promise.all(n.map((function(e){return F(e)}))):F(n)},organizeImports:function(t,r,i){void 0===i&&(i=e.emptyOptions),v(),e.Debug.assert("file"===t.type);var a=h(t.fileName),o=e.formatting.getFormatContext(r);return e.OrganizeImports.organizeImports(a,o,n,s,i)},getEditsForFileRename:function(t,r,i,a){return void 0===a&&(a=e.emptyOptions),e.getEditsForFileRename(D(),t,r,n,e.formatting.getFormatContext(i),a,g)},getEmitOutput:function(t,r,i){v();var a=h(t),o=n.getCustomTransformers&&n.getCustomTransformers();return e.getFileEmitOutput(s,a,!!r,_,o,i)},getNonBoundSourceFile:function(e){return u.getCurrentSourceFile(e)},getProgram:D,getApplicableRefactors:function(t,r,n){void 0===n&&(n=e.emptyOptions),v();var i=h(t);return e.refactor.getApplicableRefactors(P(i,r,n))},getEditsForRefactor:function(t,r,n,i,a,o){void 0===o&&(o=e.emptyOptions),v();var s=h(t);return e.refactor.getEditsForRefactor(P(s,n,o,r),i,a)},toLineColumnOffset:g.toLineColumnOffset,getSourceMapper:function(){return g}}},e.getNameTable=function(t){return t.nameTable||function(t){var r=t.nameTable=e.createUnderscoreEscapedMap();t.forEachChild((function t(n){if(e.isIdentifier(n)&&!e.isTagName(n)&&n.escapedText||e.isStringOrNumericLiteralLike(n)&&function(t){return e.isDeclarationName(t)||263===t.parent.kind||function(e){return e&&e.parent&&194===e.parent.kind&&e.parent.argumentExpression===e}(t)||e.isLiteralComputedPropertyDeclarationName(t)}(n)){var i=e.getEscapedTextOfIdentifierOrLiteral(n);r.set(i,void 0===r.get(i)?n.pos:-1)}if(e.forEachChild(n,t),e.hasJSDocNodes(n))for(var a=0,o=n.jsDoc;a<o.length;a++){var s=o[a];e.forEachChild(s,t)}}))}(t),t.nameTable},e.getContainingObjectLiteralElement=k,e.getPropertySymbolsFromContextualType=N,e.getDefaultLibFilePath=function(t){return Le+e.directorySeparator+e.getDefaultLibFileName(t)},e.objectAllocator={getNodeConstructor:function(){return i},getTokenConstructor:function(){return u},getIdentifierConstructor:function(){return l},getSourceFileConstructor:function(){return m},getSymbolConstructor:function(){return c},getTypeConstructor:function(){return _},getSignatureConstructor:function(){return d},getSourceMapSourceConstructor:function(){return g}}}(s||(s={})),function(e){!function(t){t.spanInSourceFileAtLocation=function(t,r){if(!t.isDeclarationFile){var n=e.getTokenAtPosition(t,r),i=t.getLineAndCharacterOfPosition(r).line;if(t.getLineAndCharacterOfPosition(n.getStart(t)).line>i){var a=e.findPrecedingToken(n.pos,t);if(!a||t.getLineAndCharacterOfPosition(a.getEnd()).line!==i)return;n=a}if(!(8388608&n.flags))return _(n)}function o(r,n){var i=r.decorators?e.skipTrivia(t.text,r.decorators.end):r.getStart(t);return e.createTextSpanFromBounds(i,(n||r).getEnd())}function s(r,n){return o(r,e.findNextToken(n,n.parent,t))}function c(e,r){return e&&i===t.getLineAndCharacterOfPosition(e.getStart(t)).line?_(e):_(r)}function u(r){return _(e.findPrecedingToken(r.pos,t))}function l(r){return _(e.findNextToken(r,r.parent,t))}function _(r){if(r){var n=r.parent;switch(r.kind){case 224:return h(r.declarationList.declarations[0]);case 241:case 158:case 157:return h(r);case 155:return function t(r){if(e.isBindingPattern(r.name))return D(r.name);if(function(t){return!!t.initializer||void 0!==t.dotDotDotToken||e.hasModifier(t,12)}(r))return o(r);var n=r.parent,i=n.parameters.indexOf(r);return e.Debug.assert(-1!==i),0!==i?t(n.parameters[i-1]):_(n.body)}(r);case 243:case 160:case 159:case 162:case 163:case 161:case 200:case 201:return function(e){if(!e.body)return;if(v(e))return o(e);return _(e.body)}(r);case 222:if(e.isFunctionBlock(r))return function(e){var t=e.statements.length?e.statements[0]:e.getLastToken();if(v(e.parent))return c(e.parent,t);return _(t)}(r);case 249:return b(r);case 278:return b(r.block);case 225:return o(r.expression);case 234:return o(r.getChildAt(0),r.expression);case 228:return s(r,r.expression);case 227:return _(r.statement);case 240:return o(r.getChildAt(0));case 226:return s(r,r.expression);case 237:return _(r.statement);case 233:case 232:return o(r.getChildAt(0),r.label);case 229:return function(e){if(e.initializer)return x(e);if(e.condition)return o(e.condition);if(e.incrementor)return o(e.incrementor)}(r);case 230:return s(r,r.expression);case 231:return x(r);case 236:return s(r,r.expression);case 275:case 276:return _(r.statements[0]);case 239:return b(r.tryBlock);case 238:case 258:return o(r,r.expression);case 252:return o(r,r.moduleReference);case 253:case 259:return o(r,r.moduleSpecifier);case 248:if(1!==e.getModuleInstanceState(r))return;case 244:case 247:case 282:case 190:return o(r);case 235:return _(r.statement);case 156:return g=n.decorators,e.createTextSpanFromBounds(e.skipTrivia(t.text,g.pos),g.end);case 188:case 189:return D(r);case 245:case 246:return;case 26:case 1:return c(e.findPrecedingToken(r.pos,t));case 27:return u(r);case 18:return function(r){switch(r.parent.kind){case 247:var n=r.parent;return c(e.findPrecedingToken(r.pos,t,r.parent),n.members.length?n.members[0]:n.getLastToken(t));case 244:var i=r.parent;return c(e.findPrecedingToken(r.pos,t,r.parent),i.members.length?i.members[0]:i.getLastToken(t));case 250:return c(r.parent.parent,r.parent.clauses[0])}return _(r.parent)}(r);case 19:return function(t){switch(t.parent.kind){case 249:if(1!==e.getModuleInstanceState(t.parent.parent))return;case 247:case 244:return o(t);case 222:if(e.isFunctionBlock(t.parent))return o(t);case 278:return _(e.lastOrUndefined(t.parent.statements));case 250:var r=t.parent,n=e.lastOrUndefined(r.clauses);return n?_(e.lastOrUndefined(n.statements)):void 0;case 188:var i=t.parent;return _(e.lastOrUndefined(i.elements)||i);default:if(e.isArrayLiteralOrObjectLiteralDestructuringPattern(t.parent)){var a=t.parent;return o(e.lastOrUndefined(a.properties)||a)}return _(t.parent)}}(r);case 23:return function(t){switch(t.parent.kind){case 189:var r=t.parent;return o(e.lastOrUndefined(r.elements)||r);default:if(e.isArrayLiteralOrObjectLiteralDestructuringPattern(t.parent)){var n=t.parent;return o(e.lastOrUndefined(n.elements)||n)}return _(t.parent)}}(r);case 20:return function(e){if(227===e.parent.kind||195===e.parent.kind||196===e.parent.kind)return u(e);if(199===e.parent.kind)return l(e);return _(e.parent)}(r);case 21:return function(e){switch(e.parent.kind){case 200:case 243:case 201:case 160:case 159:case 162:case 163:case 161:case 228:case 227:case 229:case 231:case 195:case 196:case 199:return u(e);default:return _(e.parent)}}(r);case 58:return function(t){if(e.isFunctionLike(t.parent)||279===t.parent.kind||155===t.parent.kind)return u(t);return _(t.parent)}(r);case 31:case 29:return function(e){if(198===e.parent.kind)return l(e);return _(e.parent)}(r);case 110:return function(e){if(227===e.parent.kind)return s(e,e.parent.expression);return _(e.parent)}(r);case 86:case 78:case 91:return l(r);case 151:return function(e){if(231===e.parent.kind)return l(e);return _(e.parent)}(r);default:if(e.isArrayLiteralOrObjectLiteralDestructuringPattern(r))return S(r);if((75===r.kind||212===r.kind||279===r.kind||280===r.kind)&&e.isArrayLiteralOrObjectLiteralDestructuringPattern(n))return o(r);if(208===r.kind){var i=r,a=i.left,d=i.operatorToken;if(e.isArrayLiteralOrObjectLiteralDestructuringPattern(a))return S(a);if(62===d.kind&&e.isArrayLiteralOrObjectLiteralDestructuringPattern(r.parent))return o(r);if(27===d.kind)return _(a)}if(e.isExpressionNode(r))switch(n.kind){case 227:return u(r);case 156:return _(r.parent);case 229:case 231:return o(r);case 208:if(27===r.parent.operatorToken.kind)return o(r);break;case 201:if(r.parent.body===r)return o(r)}switch(r.parent.kind){case 279:if(r.parent.name===r&&!e.isArrayLiteralOrObjectLiteralDestructuringPattern(r.parent.parent))return _(r.parent.initializer);break;case 198:if(r.parent.type===r)return l(r.parent.type);break;case 241:case 155:var p=r.parent,f=p.initializer,m=p.type;if(f===r||m===r||e.isAssignmentOperator(r.kind))return u(r);break;case 208:a=r.parent.left;if(e.isArrayLiteralOrObjectLiteralDestructuringPattern(a)&&r!==a)return u(r);break;default:if(e.isFunctionLike(r.parent)&&r.parent.type===r)return u(r)}return _(r.parent)}}var g;function y(r){return e.isVariableDeclarationList(r.parent)&&r.parent.declarations[0]===r?o(e.findPrecedingToken(r.pos,t,r.parent),r):o(r)}function h(r){if(230===r.parent.parent.kind)return _(r.parent.parent);var n=r.parent;return e.isBindingPattern(r.name)?D(r.name):r.initializer||e.hasModifier(r,1)||231===n.parent.kind?y(r):e.isVariableDeclarationList(r.parent)&&r.parent.declarations[0]!==r?_(e.findPrecedingToken(r.pos,t,r.parent)):void 0}function v(t){return e.hasModifier(t,1)||244===t.parent.kind&&161!==t.kind}function b(r){switch(r.parent.kind){case 248:if(1!==e.getModuleInstanceState(r.parent))return;case 228:case 226:case 230:return c(r.parent,r.statements[0]);case 229:case 231:return c(e.findPrecedingToken(r.pos,t,r.parent),r.statements[0])}return _(r.statements[0])}function x(e){if(242!==e.initializer.kind)return _(e.initializer);var t=e.initializer;return t.declarations.length>0?_(t.declarations[0]):void 0}function D(t){var r=e.forEach(t.elements,(function(e){return 214!==e.kind?e:void 0}));return r?_(r):190===t.parent.kind?o(t.parent):y(t.parent)}function S(t){e.Debug.assert(189!==t.kind&&188!==t.kind);var r=191===t.kind?t.elements:t.properties,n=e.forEach(r,(function(e){return 214!==e.kind?e:void 0}));return n?_(n):o(208===t.parent.kind?t.parent:t)}}}}(e.BreakpointResolver||(e.BreakpointResolver={}))}(s||(s={})),function(e){e.transform=function(t,r,n){var i=[];n=e.fixupCompilerOptions(n,i);var a=e.isArray(t)?t:[t],o=e.transformNodes(void 0,void 0,n,a,r,!0);return o.diagnostics=e.concatenate(o.diagnostics,i),o}}(s||(s={}));var s,c,u=function(){return this}();!function(r){function n(e,t){e&&e.log("*INTERNAL ERROR* - Exception in typescript services: "+t.message)}var i=function(){function e(e){this.scriptSnapshotShim=e}return e.prototype.getText=function(e,t){return this.scriptSnapshotShim.getText(e,t)},e.prototype.getLength=function(){return this.scriptSnapshotShim.getLength()},e.prototype.getChangeRange=function(e){var t=e,n=this.scriptSnapshotShim.getChangeRange(t.scriptSnapshotShim);if(null===n)return null;var i=JSON.parse(n);return r.createTextChangeRange(r.createTextSpan(i.span.start,i.span.length),i.newLength)},e.prototype.dispose=function(){"dispose"in this.scriptSnapshotShim&&this.scriptSnapshotShim.dispose()},e}(),a=function(){function e(e){var t=this;this.shimHost=e,this.loggingEnabled=!1,this.tracingEnabled=!1,"getModuleResolutionsForFile"in this.shimHost&&(this.resolveModuleNames=function(e,n){var i=JSON.parse(t.shimHost.getModuleResolutionsForFile(n));return r.map(e,(function(e){var t=r.getProperty(i,e);return t?{resolvedFileName:t,extension:r.extensionFromPath(t),isExternalLibraryImport:!1}:void 0}))}),"directoryExists"in this.shimHost&&(this.directoryExists=function(e){return t.shimHost.directoryExists(e)}),"getTypeReferenceDirectiveResolutionsForFile"in this.shimHost&&(this.resolveTypeReferenceDirectives=function(e,n){var i=JSON.parse(t.shimHost.getTypeReferenceDirectiveResolutionsForFile(n));return r.map(e,(function(e){return r.getProperty(i,e)}))})}return e.prototype.log=function(e){this.loggingEnabled&&this.shimHost.log(e)},e.prototype.trace=function(e){this.tracingEnabled&&this.shimHost.trace(e)},e.prototype.error=function(e){this.shimHost.error(e)},e.prototype.getProjectVersion=function(){if(this.shimHost.getProjectVersion)return this.shimHost.getProjectVersion()},e.prototype.getTypeRootsVersion=function(){return this.shimHost.getTypeRootsVersion?this.shimHost.getTypeRootsVersion():0},e.prototype.useCaseSensitiveFileNames=function(){return!!this.shimHost.useCaseSensitiveFileNames&&this.shimHost.useCaseSensitiveFileNames()},e.prototype.getCompilationSettings=function(){var e=this.shimHost.getCompilationSettings();if(null===e||""===e)throw Error("LanguageServiceShimHostAdapter.getCompilationSettings: empty compilationSettings");var t=JSON.parse(e);return t.allowNonTsExtensions=!0,t},e.prototype.getScriptFileNames=function(){var e=this.shimHost.getScriptFileNames();return JSON.parse(e)},e.prototype.getScriptSnapshot=function(e){var t=this.shimHost.getScriptSnapshot(e);return t&&new i(t)},e.prototype.getScriptKind=function(e){return"getScriptKind"in this.shimHost?this.shimHost.getScriptKind(e):0},e.prototype.getScriptVersion=function(e){return this.shimHost.getScriptVersion(e)},e.prototype.getLocalizedDiagnosticMessages=function(){var e=this.shimHost.getLocalizedDiagnosticMessages();if(null===e||""===e)return null;try{return JSON.parse(e)}catch(e){return this.log(e.description||"diagnosticMessages.generated.json has invalid JSON format"),null}},e.prototype.getCancellationToken=function(){var e=this.shimHost.getCancellationToken();return new r.ThrottledCancellationToken(e)},e.prototype.getCurrentDirectory=function(){return this.shimHost.getCurrentDirectory()},e.prototype.getDirectories=function(e){return JSON.parse(this.shimHost.getDirectories(e))},e.prototype.getDefaultLibFileName=function(e){return this.shimHost.getDefaultLibFileName(JSON.stringify(e))},e.prototype.readDirectory=function(e,t,n,i,a){var o=r.getFileMatcherPatterns(e,n,i,this.shimHost.useCaseSensitiveFileNames(),this.shimHost.getCurrentDirectory());return JSON.parse(this.shimHost.readDirectory(e,JSON.stringify(t),JSON.stringify(o.basePaths),o.excludePattern,o.includeFilePattern,o.includeDirectoryPattern,a))},e.prototype.readFile=function(e,t){return this.shimHost.readFile(e,t)},e.prototype.fileExists=function(e){return this.shimHost.fileExists(e)},e}();r.LanguageServiceShimHostAdapter=a;var s=function(){function e(e){var t=this;this.shimHost=e,this.useCaseSensitiveFileNames=!!this.shimHost.useCaseSensitiveFileNames&&this.shimHost.useCaseSensitiveFileNames(),"directoryExists"in this.shimHost?this.directoryExists=function(e){return t.shimHost.directoryExists(e)}:this.directoryExists=void 0,"realpath"in this.shimHost?this.realpath=function(e){return t.shimHost.realpath(e)}:this.realpath=void 0}return e.prototype.readDirectory=function(e,t,n,i,a){var o=r.getFileMatcherPatterns(e,n,i,this.shimHost.useCaseSensitiveFileNames(),this.shimHost.getCurrentDirectory());return JSON.parse(this.shimHost.readDirectory(e,JSON.stringify(t),JSON.stringify(o.basePaths),o.excludePattern,o.includeFilePattern,o.includeDirectoryPattern,a))},e.prototype.fileExists=function(e){return this.shimHost.fileExists(e)},e.prototype.readFile=function(e){return this.shimHost.readFile(e)},e.prototype.getDirectories=function(e){return JSON.parse(this.shimHost.getDirectories(e))},e}();function c(e,t,r,n){return l(e,t,!0,r,n)}function l(e,t,i,a,o){try{var s=function(e,t,n,i){var a;i&&(e.log(t),a=r.timestamp());var o=n();if(i){var s=r.timestamp();if(e.log(t+" completed in "+(s-a)+" msec"),r.isString(o)){var c=o;c.length>128&&(c=c.substring(0,128)+"..."),e.log(" result.length="+c.length+", result='"+JSON.stringify(c)+"'")}}return o}(e,t,a,o);return i?JSON.stringify({result:s}):s}catch(i){return i instanceof r.OperationCanceledException?JSON.stringify({canceled:!0}):(n(e,i),i.description=t,JSON.stringify({error:i}))}}r.CoreServicesShimHostAdapter=s;var _=function(){function e(e){this.factory=e,e.registerShim(this)}return e.prototype.dispose=function(e){this.factory.unregisterShim(this)},e}();function d(e,t){return e.map((function(e){return function(e,t){return{message:r.flattenDiagnosticMessageText(e.messageText,t),start:e.start,length:e.length,category:r.diagnosticCategoryName(e),code:e.code,reportsUnnecessary:e.reportsUnnecessary}}(e,t)}))}r.realizeDiagnostics=d;var p=function(e){function t(t,r,n){var i=e.call(this,t)||this;return i.host=r,i.languageService=n,i.logPerformance=!1,i.logger=i.host,i}return o(t,e),t.prototype.forwardJSONCall=function(e,t){return c(this.logger,e,t,this.logPerformance)},t.prototype.dispose=function(t){this.logger.log("dispose()"),this.languageService.dispose(),this.languageService=null,u&&u.CollectGarbage&&(u.CollectGarbage(),this.logger.log("CollectGarbage()")),this.logger=null,e.prototype.dispose.call(this,t)},t.prototype.refresh=function(e){this.forwardJSONCall("refresh("+e+")",(function(){return null}))},t.prototype.cleanupSemanticCache=function(){var e=this;this.forwardJSONCall("cleanupSemanticCache()",(function(){return e.languageService.cleanupSemanticCache(),null}))},t.prototype.realizeDiagnostics=function(e){return d(e,r.getNewLineOrDefaultFromHost(this.host))},t.prototype.getSyntacticClassifications=function(e,t,n){var i=this;return this.forwardJSONCall("getSyntacticClassifications('"+e+"', "+t+", "+n+")",(function(){return i.languageService.getSyntacticClassifications(e,r.createTextSpan(t,n))}))},t.prototype.getSemanticClassifications=function(e,t,n){var i=this;return this.forwardJSONCall("getSemanticClassifications('"+e+"', "+t+", "+n+")",(function(){return i.languageService.getSemanticClassifications(e,r.createTextSpan(t,n))}))},t.prototype.getEncodedSyntacticClassifications=function(e,t,n){var i=this;return this.forwardJSONCall("getEncodedSyntacticClassifications('"+e+"', "+t+", "+n+")",(function(){return f(i.languageService.getEncodedSyntacticClassifications(e,r.createTextSpan(t,n)))}))},t.prototype.getEncodedSemanticClassifications=function(e,t,n){var i=this;return this.forwardJSONCall("getEncodedSemanticClassifications('"+e+"', "+t+", "+n+")",(function(){return f(i.languageService.getEncodedSemanticClassifications(e,r.createTextSpan(t,n)))}))},t.prototype.getSyntacticDiagnostics=function(e){var t=this;return this.forwardJSONCall("getSyntacticDiagnostics('"+e+"')",(function(){var r=t.languageService.getSyntacticDiagnostics(e);return t.realizeDiagnostics(r)}))},t.prototype.getSemanticDiagnostics=function(e){var t=this;return this.forwardJSONCall("getSemanticDiagnostics('"+e+"')",(function(){var r=t.languageService.getSemanticDiagnostics(e);return t.realizeDiagnostics(r)}))},t.prototype.getSuggestionDiagnostics=function(e){var t=this;return this.forwardJSONCall("getSuggestionDiagnostics('"+e+"')",(function(){return t.realizeDiagnostics(t.languageService.getSuggestionDiagnostics(e))}))},t.prototype.getCompilerOptionsDiagnostics=function(){var e=this;return this.forwardJSONCall("getCompilerOptionsDiagnostics()",(function(){var t=e.languageService.getCompilerOptionsDiagnostics();return e.realizeDiagnostics(t)}))},t.prototype.getQuickInfoAtPosition=function(e,t){var r=this;return this.forwardJSONCall("getQuickInfoAtPosition('"+e+"', "+t+")",(function(){return r.languageService.getQuickInfoAtPosition(e,t)}))},t.prototype.getNameOrDottedNameSpan=function(e,t,r){var n=this;return this.forwardJSONCall("getNameOrDottedNameSpan('"+e+"', "+t+", "+r+")",(function(){return n.languageService.getNameOrDottedNameSpan(e,t,r)}))},t.prototype.getBreakpointStatementAtPosition=function(e,t){var r=this;return this.forwardJSONCall("getBreakpointStatementAtPosition('"+e+"', "+t+")",(function(){return r.languageService.getBreakpointStatementAtPosition(e,t)}))},t.prototype.getSignatureHelpItems=function(e,t,r){var n=this;return this.forwardJSONCall("getSignatureHelpItems('"+e+"', "+t+")",(function(){return n.languageService.getSignatureHelpItems(e,t,r)}))},t.prototype.getDefinitionAtPosition=function(e,t){var r=this;return this.forwardJSONCall("getDefinitionAtPosition('"+e+"', "+t+")",(function(){return r.languageService.getDefinitionAtPosition(e,t)}))},t.prototype.getDefinitionAndBoundSpan=function(e,t){var r=this;return this.forwardJSONCall("getDefinitionAndBoundSpan('"+e+"', "+t+")",(function(){return r.languageService.getDefinitionAndBoundSpan(e,t)}))},t.prototype.getTypeDefinitionAtPosition=function(e,t){var r=this;return this.forwardJSONCall("getTypeDefinitionAtPosition('"+e+"', "+t+")",(function(){return r.languageService.getTypeDefinitionAtPosition(e,t)}))},t.prototype.getImplementationAtPosition=function(e,t){var r=this;return this.forwardJSONCall("getImplementationAtPosition('"+e+"', "+t+")",(function(){return r.languageService.getImplementationAtPosition(e,t)}))},t.prototype.getRenameInfo=function(e,t,r){var n=this;return this.forwardJSONCall("getRenameInfo('"+e+"', "+t+")",(function(){return n.languageService.getRenameInfo(e,t,r)}))},t.prototype.getSmartSelectionRange=function(e,t){var r=this;return this.forwardJSONCall("getSmartSelectionRange('"+e+"', "+t+")",(function(){return r.languageService.getSmartSelectionRange(e,t)}))},t.prototype.findRenameLocations=function(e,t,r,n,i){var a=this;return this.forwardJSONCall("findRenameLocations('"+e+"', "+t+", "+r+", "+n+", "+i+")",(function(){return a.languageService.findRenameLocations(e,t,r,n,i)}))},t.prototype.getBraceMatchingAtPosition=function(e,t){var r=this;return this.forwardJSONCall("getBraceMatchingAtPosition('"+e+"', "+t+")",(function(){return r.languageService.getBraceMatchingAtPosition(e,t)}))},t.prototype.isValidBraceCompletionAtPosition=function(e,t,r){var n=this;return this.forwardJSONCall("isValidBraceCompletionAtPosition('"+e+"', "+t+", "+r+")",(function(){return n.languageService.isValidBraceCompletionAtPosition(e,t,r)}))},t.prototype.getSpanOfEnclosingComment=function(e,t,r){var n=this;return this.forwardJSONCall("getSpanOfEnclosingComment('"+e+"', "+t+")",(function(){return n.languageService.getSpanOfEnclosingComment(e,t,r)}))},t.prototype.getIndentationAtPosition=function(e,t,r){var n=this;return this.forwardJSONCall("getIndentationAtPosition('"+e+"', "+t+")",(function(){var i=JSON.parse(r);return n.languageService.getIndentationAtPosition(e,t,i)}))},t.prototype.getReferencesAtPosition=function(e,t){var r=this;return this.forwardJSONCall("getReferencesAtPosition('"+e+"', "+t+")",(function(){return r.languageService.getReferencesAtPosition(e,t)}))},t.prototype.findReferences=function(e,t){var r=this;return this.forwardJSONCall("findReferences('"+e+"', "+t+")",(function(){return r.languageService.findReferences(e,t)}))},t.prototype.getOccurrencesAtPosition=function(e,t){var r=this;return this.forwardJSONCall("getOccurrencesAtPosition('"+e+"', "+t+")",(function(){return r.languageService.getOccurrencesAtPosition(e,t)}))},t.prototype.getDocumentHighlights=function(e,t,n){var i=this;return this.forwardJSONCall("getDocumentHighlights('"+e+"', "+t+")",(function(){var a=i.languageService.getDocumentHighlights(e,t,JSON.parse(n)),o=r.normalizeSlashes(e).toLowerCase();return r.filter(a,(function(e){return r.normalizeSlashes(e.fileName).toLowerCase()===o}))}))},t.prototype.getCompletionsAtPosition=function(e,t,r){var n=this;return this.forwardJSONCall("getCompletionsAtPosition('"+e+"', "+t+", "+r+")",(function(){return n.languageService.getCompletionsAtPosition(e,t,r)}))},t.prototype.getCompletionEntryDetails=function(e,t,r,n,i,a){var o=this;return this.forwardJSONCall("getCompletionEntryDetails('"+e+"', "+t+", '"+r+"')",(function(){var s=void 0===n?void 0:JSON.parse(n);return o.languageService.getCompletionEntryDetails(e,t,r,s,i,a)}))},t.prototype.getFormattingEditsForRange=function(e,t,r,n){var i=this;return this.forwardJSONCall("getFormattingEditsForRange('"+e+"', "+t+", "+r+")",(function(){var a=JSON.parse(n);return i.languageService.getFormattingEditsForRange(e,t,r,a)}))},t.prototype.getFormattingEditsForDocument=function(e,t){var r=this;return this.forwardJSONCall("getFormattingEditsForDocument('"+e+"')",(function(){var n=JSON.parse(t);return r.languageService.getFormattingEditsForDocument(e,n)}))},t.prototype.getFormattingEditsAfterKeystroke=function(e,t,r,n){var i=this;return this.forwardJSONCall("getFormattingEditsAfterKeystroke('"+e+"', "+t+", '"+r+"')",(function(){var a=JSON.parse(n);return i.languageService.getFormattingEditsAfterKeystroke(e,t,r,a)}))},t.prototype.getDocCommentTemplateAtPosition=function(e,t){var r=this;return this.forwardJSONCall("getDocCommentTemplateAtPosition('"+e+"', "+t+")",(function(){return r.languageService.getDocCommentTemplateAtPosition(e,t)}))},t.prototype.getNavigateToItems=function(e,t,r){var n=this;return this.forwardJSONCall("getNavigateToItems('"+e+"', "+t+", "+r+")",(function(){return n.languageService.getNavigateToItems(e,t,r)}))},t.prototype.getNavigationBarItems=function(e){var t=this;return this.forwardJSONCall("getNavigationBarItems('"+e+"')",(function(){return t.languageService.getNavigationBarItems(e)}))},t.prototype.getNavigationTree=function(e){var t=this;return this.forwardJSONCall("getNavigationTree('"+e+"')",(function(){return t.languageService.getNavigationTree(e)}))},t.prototype.getOutliningSpans=function(e){var t=this;return this.forwardJSONCall("getOutliningSpans('"+e+"')",(function(){return t.languageService.getOutliningSpans(e)}))},t.prototype.getTodoComments=function(e,t){var r=this;return this.forwardJSONCall("getTodoComments('"+e+"')",(function(){return r.languageService.getTodoComments(e,JSON.parse(t))}))},t.prototype.getEmitOutput=function(e){var t=this;return this.forwardJSONCall("getEmitOutput('"+e+"')",(function(){return t.languageService.getEmitOutput(e)}))},t.prototype.getEmitOutputObject=function(e){var t=this;return l(this.logger,"getEmitOutput('"+e+"')",!1,(function(){return t.languageService.getEmitOutput(e)}),this.logPerformance)},t}(_);function f(e){return{spans:e.spans.join(","),endOfLineState:e.endOfLineState}}var m=function(e){function t(t,n){var i=e.call(this,t)||this;return i.logger=n,i.logPerformance=!1,i.classifier=r.createClassifier(),i}return o(t,e),t.prototype.getEncodedLexicalClassifications=function(e,t,r){var n=this;return void 0===r&&(r=!1),c(this.logger,"getEncodedLexicalClassifications",(function(){return f(n.classifier.getEncodedLexicalClassifications(e,t,r))}),this.logPerformance)},t.prototype.getClassificationsForLine=function(e,t,r){void 0===r&&(r=!1);for(var n=this.classifier.getClassificationsForLine(e,t,r),i="",a=0,o=n.entries;a<o.length;a++){var s=o[a];i+=s.length+"\n",i+=s.classification+"\n"}return i+=n.finalLexState},t}(_),g=function(e){function n(t,r,n){var i=e.call(this,t)||this;return i.logger=r,i.host=n,i.logPerformance=!1,i}return o(n,e),n.prototype.forwardJSONCall=function(e,t){return c(this.logger,e,t,this.logPerformance)},n.prototype.resolveModuleName=function(e,t,n){var i=this;return this.forwardJSONCall("resolveModuleName('"+e+"')",(function(){var a=JSON.parse(n),o=r.resolveModuleName(t,r.normalizeSlashes(e),a,i.host),s=o.resolvedModule?o.resolvedModule.resolvedFileName:void 0;return o.resolvedModule&&".ts"!==o.resolvedModule.extension&&".tsx"!==o.resolvedModule.extension&&".d.ts"!==o.resolvedModule.extension&&(s=void 0),{resolvedFileName:s,failedLookupLocations:o.failedLookupLocations}}))},n.prototype.resolveTypeReferenceDirective=function(e,t,n){var i=this;return this.forwardJSONCall("resolveTypeReferenceDirective("+e+")",(function(){var a=JSON.parse(n),o=r.resolveTypeReferenceDirective(t,r.normalizeSlashes(e),a,i.host);return{resolvedFileName:o.resolvedTypeReferenceDirective?o.resolvedTypeReferenceDirective.resolvedFileName:void 0,primary:!o.resolvedTypeReferenceDirective||o.resolvedTypeReferenceDirective.primary,failedLookupLocations:o.failedLookupLocations}}))},n.prototype.getPreProcessedFileInfo=function(e,t){var n=this;return this.forwardJSONCall("getPreProcessedFileInfo('"+e+"')",(function(){var e=r.preProcessFile(r.getSnapshotText(t),!0,!0);return{referencedFiles:n.convertFileReferences(e.referencedFiles),importedFiles:n.convertFileReferences(e.importedFiles),ambientExternalModules:e.ambientExternalModules,isLibFile:e.isLibFile,typeReferenceDirectives:n.convertFileReferences(e.typeReferenceDirectives),libReferenceDirectives:n.convertFileReferences(e.libReferenceDirectives)}}))},n.prototype.getAutomaticTypeDirectiveNames=function(e){var t=this;return this.forwardJSONCall("getAutomaticTypeDirectiveNames('"+e+"')",(function(){var n=JSON.parse(e);return r.getAutomaticTypeDirectiveNames(n,t.host)}))},n.prototype.convertFileReferences=function(e){if(e){for(var t=[],n=0,i=e;n<i.length;n++){var a=i[n];t.push({path:r.normalizeSlashes(a.fileName),position:a.pos,length:a.end-a.pos})}return t}},n.prototype.getTSConfigFileInfo=function(e,n){var i=this;return this.forwardJSONCall("getTSConfigFileInfo('"+e+"')",(function(){var a=r.parseJsonText(e,r.getSnapshotText(n)),o=r.normalizeSlashes(e),s=r.parseJsonSourceFileConfigFileContent(a,i.host,r.getDirectoryPath(o),{},o);return{options:s.options,typeAcquisition:s.typeAcquisition,files:s.fileNames,raw:s.raw,errors:d(t(a.parseDiagnostics,s.errors),"\r\n")}}))},n.prototype.getDefaultCompilationSettings=function(){return this.forwardJSONCall("getDefaultCompilationSettings()",(function(){return r.getDefaultCompilerOptions()}))},n.prototype.discoverTypings=function(e){var t=this,n=r.createGetCanonicalFileName(!1);return this.forwardJSONCall("discoverTypings()",(function(){var i=JSON.parse(e);return void 0===t.safeList&&(t.safeList=r.JsTyping.loadSafeList(t.host,r.toPath(i.safeListPath,i.safeListPath,n))),r.JsTyping.discoverTypings(t.host,(function(e){return t.logger.log(e)}),i.fileNames,r.toPath(i.projectRootPath,i.projectRootPath,n),t.safeList,i.packageNameToTypingLocation,i.typeAcquisition,i.unresolvedImports,i.typesRegistry)}))},n}(_),y=function(){function e(){this._shims=[]}return e.prototype.getServicesVersion=function(){return r.servicesVersion},e.prototype.createLanguageServiceShim=function(e){try{void 0===this.documentRegistry&&(this.documentRegistry=r.createDocumentRegistry(e.useCaseSensitiveFileNames&&e.useCaseSensitiveFileNames(),e.getCurrentDirectory()));var t=new a(e),i=r.createLanguageService(t,this.documentRegistry,!1);return new p(this,e,i)}catch(t){throw n(e,t),t}},e.prototype.createClassifierShim=function(e){try{return new m(this,e)}catch(t){throw n(e,t),t}},e.prototype.createCoreServicesShim=function(e){try{var t=new s(e);return new g(this,e,t)}catch(t){throw n(e,t),t}},e.prototype.close=function(){r.clear(this._shims),this.documentRegistry=void 0},e.prototype.registerShim=function(e){this._shims.push(e)},e.prototype.unregisterShim=function(e){for(var t=0;t<this._shims.length;t++)if(this._shims[t]===e)return void delete this._shims[t];throw new Error("Invalid operation")},e}();r.TypeScriptServicesFactory=y,e.exports&&(e.exports=r)}(s||(s={})),function(e){!function(e){e.TypeScriptServicesFactory=s.TypeScriptServicesFactory}(e.Services||(e.Services={}))}(c||(c={}));s.versionMajorMinor})));i(Fr);var Pr="win32"===Oe.platform,wr=Oe.env.NODE_DEBUG&&/fs/.test(Oe.env.NODE_DEBUG);function Ir(e){return"function"==typeof e?e:function(){var e;if(wr){var t=new Error;e=function(e){e&&(t.message=e.message,r(e=t))}}else e=r;return e;function r(e){if(e){if(Oe.throwDeprecation)throw e;if(!Oe.noDeprecation){var t="fs: missing callback "+(e.stack||e.message);Oe.traceDeprecation?console.trace(t):console.error(t)}}}}()}yr.normalize;if(Pr)var Or=/(.*?)(?:[\/\\]+|$)/g;else Or=/(.*?)(?:[\/]+|$)/g;if(Pr)var Mr=/^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/;else Mr=/^[\/]*/;var Lr={realpathSync:function(e,t){if(e=yr.resolve(e),t&&Object.prototype.hasOwnProperty.call(t,e))return t[e];var r,n,i,a,o=e,s={},c={};function u(){var t=Mr.exec(e);r=t[0].length,n=t[0],i=t[0],a="",Pr&&!c[i]&&(hr.lstatSync(i),c[i]=!0)}for(u();r<e.length;){Or.lastIndex=r;var l=Or.exec(e);if(a=n,n+=l[0],i=a+l[1],r=Or.lastIndex,!(c[i]||t&&t[i]===i)){var _;if(t&&Object.prototype.hasOwnProperty.call(t,i))_=t[i];else{var d=hr.lstatSync(i);if(!d.isSymbolicLink()){c[i]=!0,t&&(t[i]=i);continue}var p=null;if(!Pr){var f=d.dev.toString(32)+":"+d.ino.toString(32);s.hasOwnProperty(f)&&(p=s[f])}null===p&&(hr.statSync(i),p=hr.readlinkSync(i)),_=yr.resolve(a,p),t&&(t[i]=_),Pr||(s[f]=p)}e=yr.resolve(_,e.slice(r)),u()}}return t&&(t[o]=e),e},realpath:function(e,t,r){if("function"!=typeof r&&(r=Ir(t),t=null),e=yr.resolve(e),t&&Object.prototype.hasOwnProperty.call(t,e))return xe(r.bind(null,null,t[e]));var n,i,a,o,s=e,c={},u={};function l(){var t=Mr.exec(e);n=t[0].length,i=t[0],a=t[0],o="",Pr&&!u[a]?hr.lstat(a,(function(e){if(e)return r(e);u[a]=!0,_()})):xe(_)}function _(){if(n>=e.length)return t&&(t[s]=e),r(null,e);Or.lastIndex=n;var c=Or.exec(e);return o=i,i+=c[0],a=o+c[1],n=Or.lastIndex,u[a]||t&&t[a]===a?xe(_):t&&Object.prototype.hasOwnProperty.call(t,a)?f(t[a]):hr.lstat(a,d)}function d(e,n){if(e)return r(e);if(!n.isSymbolicLink())return u[a]=!0,t&&(t[a]=a),xe(_);if(!Pr){var i=n.dev.toString(32)+":"+n.ino.toString(32);if(c.hasOwnProperty(i))return p(null,c[i],a)}hr.stat(a,(function(e){if(e)return r(e);hr.readlink(a,(function(e,t){Pr||(c[i]=t),p(e,t)}))}))}function p(e,n,i){if(e)return r(e);var a=yr.resolve(o,n);t&&(t[i]=a),f(a)}function f(t){e=yr.resolve(t,e.slice(n)),l()}l()}},Rr=Ur;Ur.realpath=Ur,Ur.sync=Vr,Ur.realpathSync=Vr,Ur.monkeypatch=function(){hr.realpath=Ur,hr.realpathSync=Vr},Ur.unmonkeypatch=function(){hr.realpath=Br,hr.realpathSync=jr};var Br=hr.realpath,jr=hr.realpathSync,Kr=Oe.version,Jr=/^v[0-5]\./.test(Kr);function zr(e){return e&&"realpath"===e.syscall&&("ELOOP"===e.code||"ENOMEM"===e.code||"ENAMETOOLONG"===e.code)}function Ur(e,t,r){if(Jr)return Br(e,t,r);"function"==typeof t&&(r=t,t=null),Br(e,t,(function(n,i){zr(n)?Lr.realpath(e,t,r):r(n,i)}))}function Vr(e,t){if(Jr)return jr(e,t);try{return jr(e,t)}catch(r){if(zr(r))return Lr.realpathSync(e,t);throw r}}var qr=function(e,t){for(var r=[],n=0;n<e.length;n++){var i=t(e[n],n);Wr(i)?r.push.apply(r,i):r.push(i)}return r},Wr=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},Gr=Hr;function Hr(e,t,r){e instanceof RegExp&&(e=Yr(e,r)),t instanceof RegExp&&(t=Yr(t,r));var n=Xr(e,t,r);return n&&{start:n[0],end:n[1],pre:r.slice(0,n[0]),body:r.slice(n[0]+e.length,n[1]),post:r.slice(n[1]+t.length)}}function Yr(e,t){var r=t.match(e);return r?r[0]:null}function Xr(e,t,r){var n,i,a,o,s,c=r.indexOf(e),u=r.indexOf(t,c+1),l=c;if(c>=0&&u>0){for(n=[],a=r.length;l>=0&&!s;)l==c?(n.push(l),c=r.indexOf(e,l+1)):1==n.length?s=[n.pop(),u]:((i=n.pop())<a&&(a=i,o=u),u=r.indexOf(t,l+1)),l=c<u&&c>=0?c:u;n.length&&(s=[a,o])}return s}Hr.range=Xr;var Qr=function(e){if(!e)return[];"{}"===e.substr(0,2)&&(e="\\{\\}"+e.substr(2));return function e(t,r){var n=[];var i=Gr("{","}",t);if(!i||/\$$/.test(i.pre))return[t];var a=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body);var o=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body);var s=a||o;var c=i.body.indexOf(",")>=0;if(!s&&!c)return i.post.match(/,.*\}/)?(t=i.pre+"{"+i.body+en+i.post,e(t)):[t];var u;if(s)u=i.body.split(/\.\./);else{if(1===(u=function e(t){if(!t)return[""];var r=[];var n=Gr("{","}",t);if(!n)return t.split(",");var i=n.pre;var a=n.body;var o=n.post;var s=i.split(",");s[s.length-1]+="{"+a+"}";var c=e(o);o.length&&(s[s.length-1]+=c.shift(),s.push.apply(s,c));r.push.apply(r,s);return r}(i.body)).length)if(1===(u=e(u[0],!1).map(on)).length)return(_=i.post.length?e(i.post,!1):[""]).map((function(e){return i.pre+u[0]+e}))}var l=i.pre;var _=i.post.length?e(i.post,!1):[""];var d;if(s){var p=nn(u[0]),f=nn(u[1]),m=Math.max(u[0].length,u[1].length),g=3==u.length?Math.abs(nn(u[2])):1,y=cn;f<p&&(g*=-1,y=un);var h=u.some(sn);d=[];for(var v=p;y(v,f);v+=g){var b;if(o)"\\"===(b=String.fromCharCode(v))&&(b="");else if(b=String(v),h){var x=m-b.length;if(x>0){var D=new Array(x+1).join("0");b=v<0?"-"+D+b.slice(1):D+b}}d.push(b)}}else d=qr(u,(function(t){return e(t,!1)}));for(var S=0;S<d.length;S++)for(var T=0;T<_.length;T++){var E=l+d[S]+_[T];(!r||s||E)&&n.push(E)}return n}(function(e){return e.split("\\\\").join($r).split("\\{").join(Zr).split("\\}").join(en).split("\\,").join(tn).split("\\.").join(rn)}(e),!0).map(an)},$r="\0SLASH"+Math.random()+"\0",Zr="\0OPEN"+Math.random()+"\0",en="\0CLOSE"+Math.random()+"\0",tn="\0COMMA"+Math.random()+"\0",rn="\0PERIOD"+Math.random()+"\0";function nn(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function an(e){return e.split($r).join("\\").split(Zr).join("{").split(en).join("}").split(tn).join(",").split(rn).join(".")}function on(e){return"{"+e+"}"}function sn(e){return/^-?0\d/.test(e)}function cn(e,t){return e<=t}function un(e,t){return e>=t}var ln=xn;xn.Minimatch=Dn;var _n={sep:"/"};try{_n=yr}catch(e){}var dn=xn.GLOBSTAR=Dn.GLOBSTAR={},pn={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},fn="[^/]",mn=fn+"*?",gn="(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?",yn="(?:(?!(?:\\/|^)\\.).)*?",hn=function(e){return e.split("").reduce((function(e,t){return e[t]=!0,e}),{})}("().*{}+?[]^$\\!");var vn=/\/+/;function bn(e,t){e=e||{},t=t||{};var r={};return Object.keys(t).forEach((function(e){r[e]=t[e]})),Object.keys(e).forEach((function(t){r[t]=e[t]})),r}function xn(e,t,r){if("string"!=typeof t)throw new TypeError("glob pattern string required");return r||(r={}),!(!r.nocomment&&"#"===t.charAt(0))&&(""===t.trim()?""===e:new Dn(t,r).match(e))}function Dn(e,t){if(!(this instanceof Dn))return new Dn(e,t);if("string"!=typeof e)throw new TypeError("glob pattern string required");t||(t={}),e=e.trim(),"/"!==_n.sep&&(e=e.split(_n.sep).join("/")),this.options=t,this.set=[],this.pattern=e,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}function Sn(e,t){if(t||(t=this instanceof Dn?this.options:{}),void 0===(e=void 0===e?this.pattern:e))throw new TypeError("undefined pattern");return t.nobrace||!e.match(/\{.*\}/)?[e]:Qr(e)}xn.filter=function(e,t){return t=t||{},function(r,n,i){return xn(r,e,t)}},xn.defaults=function(e){if(!e||!Object.keys(e).length)return xn;var t=xn,r=function(r,n,i){return t.minimatch(r,n,bn(e,i))};return r.Minimatch=function(r,n){return new t.Minimatch(r,bn(e,n))},r},Dn.defaults=function(e){return e&&Object.keys(e).length?xn.defaults(e).Minimatch:Dn},Dn.prototype.debug=function(){},Dn.prototype.make=function(){if(this._made)return;var e=this.pattern,t=this.options;if(!t.nocomment&&"#"===e.charAt(0))return void(this.comment=!0);if(!e)return void(this.empty=!0);this.parseNegate();var r=this.globSet=this.braceExpand();t.debug&&(this.debug=console.error);this.debug(this.pattern,r),r=this.globParts=r.map((function(e){return e.split(vn)})),this.debug(this.pattern,r),r=r.map((function(e,t,r){return e.map(this.parse,this)}),this),this.debug(this.pattern,r),r=r.filter((function(e){return-1===e.indexOf(!1)})),this.debug(this.pattern,r),this.set=r},Dn.prototype.parseNegate=function(){var e=this.pattern,t=!1,r=this.options,n=0;if(r.nonegate)return;for(var i=0,a=e.length;i<a&&"!"===e.charAt(i);i++)t=!t,n++;n&&(this.pattern=e.substr(n));this.negate=t},xn.braceExpand=function(e,t){return Sn(e,t)},Dn.prototype.braceExpand=Sn,Dn.prototype.parse=function(e,t){if(e.length>65536)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&"**"===e)return dn;if(""===e)return"";var n,i="",a=!!r.nocase,o=!1,s=[],c=[],u=!1,l=-1,_=-1,d="."===e.charAt(0)?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",p=this;function f(){if(n){switch(n){case"*":i+=mn,a=!0;break;case"?":i+=fn,a=!0;break;default:i+="\\"+n}p.debug("clearStateChar %j %j",n,i),n=!1}}for(var m,g=0,y=e.length;g<y&&(m=e.charAt(g));g++)if(this.debug("%s\t%s %s %j",e,g,i,m),o&&hn[m])i+="\\"+m,o=!1;else switch(m){case"/":return!1;case"\\":f(),o=!0;continue;case"?":case"*":case"+":case"@":case"!":if(this.debug("%s\t%s %s %j <-- stateChar",e,g,i,m),u){this.debug(" in class"),"!"===m&&g===_+1&&(m="^"),i+=m;continue}p.debug("call clearStateChar %j",n),f(),n=m,r.noext&&f();continue;case"(":if(u){i+="(";continue}if(!n){i+="\\(";continue}s.push({type:n,start:g-1,reStart:i.length,open:pn[n].open,close:pn[n].close}),i+="!"===n?"(?:(?!(?:":"(?:",this.debug("plType %j %j",n,i),n=!1;continue;case")":if(u||!s.length){i+="\\)";continue}f(),a=!0;var h=s.pop();i+=h.close,"!"===h.type&&c.push(h),h.reEnd=i.length;continue;case"|":if(u||!s.length||o){i+="\\|",o=!1;continue}f(),i+="|";continue;case"[":if(f(),u){i+="\\"+m;continue}u=!0,_=g,l=i.length,i+=m;continue;case"]":if(g===_+1||!u){i+="\\"+m,o=!1;continue}if(u){var v=e.substring(_+1,g);try{RegExp("["+v+"]")}catch(e){var b=this.parse(v,Tn);i=i.substr(0,l)+"\\["+b[0]+"\\]",a=a||b[1],u=!1;continue}}a=!0,u=!1,i+=m;continue;default:f(),o?o=!1:!hn[m]||"^"===m&&u||(i+="\\"),i+=m}u&&(v=e.substr(_+1),b=this.parse(v,Tn),i=i.substr(0,l)+"\\["+b[0],a=a||b[1]);for(h=s.pop();h;h=s.pop()){var x=i.slice(h.reStart+h.open.length);this.debug("setting tail",i,h),x=x.replace(/((?:\\{2}){0,64})(\\?)\|/g,(function(e,t,r){return r||(r="\\"),t+t+r+"|"})),this.debug("tail=%j\n %s",x,x,h,i);var D="*"===h.type?mn:"?"===h.type?fn:"\\"+h.type;a=!0,i=i.slice(0,h.reStart)+D+"\\("+x}f(),o&&(i+="\\\\");var S=!1;switch(i.charAt(0)){case".":case"[":case"(":S=!0}for(var T=c.length-1;T>-1;T--){var E=c[T],C=i.slice(0,E.reStart),k=i.slice(E.reStart,E.reEnd-8),N=i.slice(E.reEnd-8,E.reEnd),A=i.slice(E.reEnd);N+=A;var F=C.split("(").length-1,P=A;for(g=0;g<F;g++)P=P.replace(/\)[+*?]?/,"");var w="";""===(A=P)&&t!==Tn&&(w="$"),i=C+k+A+w+N}""!==i&&a&&(i="(?=.)"+i);S&&(i=d+i);if(t===Tn)return[i,a];if(!a)return function(e){return e.replace(/\\(.)/g,"$1")}(e);var I=r.nocase?"i":"";try{var O=new RegExp("^"+i+"$",I)}catch(e){return new RegExp("$.")}return O._glob=e,O._src=i,O};var Tn={};xn.makeRe=function(e,t){return new Dn(e,t||{}).makeRe()},Dn.prototype.makeRe=function(){if(this.regexp||!1===this.regexp)return this.regexp;var e=this.set;if(!e.length)return this.regexp=!1,this.regexp;var t=this.options,r=t.noglobstar?mn:t.dot?gn:yn,n=t.nocase?"i":"",i=e.map((function(e){return e.map((function(e){return e===dn?r:"string"==typeof e?function(e){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}(e):e._src})).join("\\/")})).join("|");i="^(?:"+i+")$",this.negate&&(i="^(?!"+i+").*$");try{this.regexp=new RegExp(i,n)}catch(e){this.regexp=!1}return this.regexp},xn.match=function(e,t,r){var n=new Dn(t,r=r||{});return e=e.filter((function(e){return n.match(e)})),n.options.nonull&&!e.length&&e.push(t),e},Dn.prototype.match=function(e,t){if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return""===e;if("/"===e&&t)return!0;var r=this.options;"/"!==_n.sep&&(e=e.split(_n.sep).join("/"));e=e.split(vn),this.debug(this.pattern,"split",e);var n,i,a=this.set;for(this.debug(this.pattern,"set",a),i=e.length-1;i>=0&&!(n=e[i]);i--);for(i=0;i<a.length;i++){var o=a[i],s=e;if(r.matchBase&&1===o.length&&(s=[n]),this.matchOne(s,o,t))return!!r.flipNegate||!this.negate}return!r.flipNegate&&this.negate},Dn.prototype.matchOne=function(e,t,r){var n=this.options;this.debug("matchOne",{this:this,file:e,pattern:t}),this.debug("matchOne",e.length,t.length);for(var i=0,a=0,o=e.length,s=t.length;i<o&&a<s;i++,a++){this.debug("matchOne loop");var c,u=t[a],l=e[i];if(this.debug(t,u,l),!1===u)return!1;if(u===dn){this.debug("GLOBSTAR",[t,u,l]);var _=i,d=a+1;if(d===s){for(this.debug("** at the end");i<o;i++)if("."===e[i]||".."===e[i]||!n.dot&&"."===e[i].charAt(0))return!1;return!0}for(;_<o;){var p=e[_];if(this.debug("\nglobstar while",e,_,t,d,p),this.matchOne(e.slice(_),t.slice(d),r))return this.debug("globstar found match!",_,o,p),!0;if("."===p||".."===p||!n.dot&&"."===p.charAt(0)){this.debug("dot detected!",e,_,t,d);break}this.debug("globstar swallow a segment, and continue"),_++}return!(!r||(this.debug("\n>>> no match, partial?",e,_,t,d),_!==o))}if("string"==typeof u?(c=n.nocase?l.toLowerCase()===u.toLowerCase():l===u,this.debug("string match",u,l,c)):(c=l.match(u),this.debug("pattern match",u,l,c)),!c)return!1}if(i===o&&a===s)return!0;if(i===o)return r;if(a===s)return i===o-1&&""===e[i];throw new Error("wtf?")};var En=Object.freeze({__proto__:null,default:{}}),Cn=a((function(e){"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}})),kn=o(En),Nn=a((function(e){try{var t=kn;if("function"!=typeof t.inherits)throw"";e.exports=t.inherits}catch(t){e.exports=Cn}})),An=Object.freeze({__proto__:null,EventEmitter:function e(){m(this,e)}});function Fn(){}Fn.ok=function(){},Fn.strictEqual=function(){};var Pn=Object.freeze({__proto__:null,default:Fn});function wn(e){return"/"===e.charAt(0)}function In(e){var t=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/.exec(e),r=t[1]||"",n=Boolean(r&&":"!==r.charAt(1));return Boolean(t[2]||n)}var On="win32"===Oe.platform?In:wn,Mn=wn,Ln=In;On.posix=Mn,On.win32=Ln;var Rn=Yn,Bn=Hn,jn=function(e,t,r){r||(r={});if(r.matchBase&&-1===t.indexOf("/")){if(r.noglobstar)throw new Error("base matching requires globstar");t="**/"+t}e.silent=!!r.silent,e.pattern=t,e.strict=!1!==r.strict,e.realpath=!!r.realpath,e.realpathCache=r.realpathCache||Object.create(null),e.follow=!!r.follow,e.dot=!!r.dot,e.mark=!!r.mark,e.nodir=!!r.nodir,e.nodir&&(e.mark=!0);e.sync=!!r.sync,e.nounique=!!r.nounique,e.nonull=!!r.nonull,e.nosort=!!r.nosort,e.nocase=!!r.nocase,e.stat=!!r.stat,e.noprocess=!!r.noprocess,e.absolute=!!r.absolute,e.maxLength=r.maxLength||1/0,e.cache=r.cache||Object.create(null),e.statCache=r.statCache||Object.create(null),e.symlinks=r.symlinks||Object.create(null),function(e,t){e.ignore=t.ignore||[],Array.isArray(e.ignore)||(e.ignore=[e.ignore]);e.ignore.length&&(e.ignore=e.ignore.map(Xn))}(e,r),e.changedCwd=!1;var n=Oe.cwd();Wn(r,"cwd")?(e.cwd=yr.resolve(r.cwd),e.changedCwd=e.cwd!==n):e.cwd=n;e.root=r.root||yr.resolve(e.cwd,"/"),e.root=yr.resolve(e.root),"win32"===Oe.platform&&(e.root=e.root.replace(/\\/g,"/"));e.cwdAbs=On(e.cwd)?e.cwd:Qn(e,e.cwd),"win32"===Oe.platform&&(e.cwdAbs=e.cwdAbs.replace(/\\/g,"/"));e.nomount=!!r.nomount,r.nonegate=!0,r.nocomment=!0,e.minimatch=new Gn(t,r),e.options=e.minimatch.options},Kn=Wn,Jn=Qn,zn=function(e){for(var t=e.nounique,r=t?[]:Object.create(null),n=0,i=e.matches.length;n<i;n++){var a=e.matches[n];if(a&&0!==Object.keys(a).length){var o=Object.keys(a);t?r.push.apply(r,o):o.forEach((function(e){r[e]=!0}))}else if(e.nonull){var s=e.minimatch.globSet[n];t?r.push(s):r[s]=!0}}t||(r=Object.keys(r));e.nosort||(r=r.sort(e.nocase?Hn:Yn));if(e.mark){for(n=0;n<r.length;n++)r[n]=e._mark(r[n]);e.nodir&&(r=r.filter((function(t){var r=!/\/$/.test(t),n=e.cache[t]||e.cache[Qn(e,t)];return r&&n&&(r="DIR"!==n&&!Array.isArray(n)),r})))}e.ignore.length&&(r=r.filter((function(t){return!$n(e,t)})));e.found=r},Un=function(e,t){var r=Qn(e,t),n=e.cache[r],i=t;if(n){var a="DIR"===n||Array.isArray(n),o="/"===t.slice(-1);if(a&&!o?i+="/":!a&&o&&(i=i.slice(0,-1)),i!==t){var s=Qn(e,i);e.statCache[s]=e.statCache[r],e.cache[s]=e.cache[r]}}return i},Vn=$n,qn=function(e,t){return!!e.ignore.length&&e.ignore.some((function(e){return!(!e.gmatcher||!e.gmatcher.match(t))}))};function Wn(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var Gn=ln.Minimatch;function Hn(e,t){return e.toLowerCase().localeCompare(t.toLowerCase())}function Yn(e,t){return e.localeCompare(t)}function Xn(e){var t=null;if("/**"===e.slice(-3)){var r=e.replace(/(\/\*\*)+$/,"");t=new Gn(r,{dot:!0})}return{matcher:new Gn(e,{dot:!0}),gmatcher:t}}function Qn(e,t){var r=t;return r="/"===t.charAt(0)?yr.join(e.root,t):On(t)||""===t?t:e.changedCwd?yr.resolve(e.cwd,t):yr.resolve(t),"win32"===Oe.platform&&(r=r.replace(/\\/g,"/")),r}function $n(e,t){return!!e.ignore.length&&e.ignore.some((function(e){return e.matcher.match(t)||!(!e.gmatcher||!e.gmatcher.match(t))}))}var Zn={alphasort:Rn,alphasorti:Bn,setopts:jn,ownProp:Kn,makeAbs:Jn,finish:zn,mark:Un,isIgnored:Vn,childrenIgnored:qn},ei=o(Pn),ti=oi;oi.GlobSync=si;var ri=Zn.setopts,ni=Zn.ownProp,ii=Zn.childrenIgnored,ai=Zn.isIgnored;function oi(e,t){if("function"==typeof t||3===arguments.length)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");return new si(e,t).found}function si(e,t){if(!e)throw new Error("must provide pattern");if("function"==typeof t||3===arguments.length)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");if(!(this instanceof si))return new si(e,t);if(ri(this,e,t),this.noprocess)return this;var r=this.minimatch.set.length;this.matches=new Array(r);for(var n=0;n<r;n++)this._process(this.minimatch.set[n],n,!1);this._finish()}si.prototype._finish=function(){if(ei(this instanceof si),this.realpath){var e=this;this.matches.forEach((function(t,r){var n=e.matches[r]=Object.create(null);for(var i in t)try{i=e._makeAbs(i),n[Rr.realpathSync(i,e.realpathCache)]=!0}catch(t){if("stat"!==t.syscall)throw t;n[e._makeAbs(i)]=!0}}))}Zn.finish(this)},si.prototype._process=function(e,t,r){ei(this instanceof si);for(var n,i=0;"string"==typeof e[i];)i++;switch(i){case e.length:return void this._processSimple(e.join("/"),t);case 0:n=null;break;default:n=e.slice(0,i).join("/")}var a,o=e.slice(i);null===n?a=".":On(n)||On(e.join("/"))?(n&&On(n)||(n="/"+n),a=n):a=n;var s=this._makeAbs(a);ii(this,a)||(o[0]===ln.GLOBSTAR?this._processGlobStar(n,a,s,o,t,r):this._processReaddir(n,a,s,o,t,r))},si.prototype._processReaddir=function(e,t,r,n,i,a){var o=this._readdir(r,a);if(o){for(var s=n[0],c=!!this.minimatch.negate,u=s._glob,l=this.dot||"."===u.charAt(0),_=[],d=0;d<o.length;d++){if("."!==(m=o[d]).charAt(0)||l)(c&&!e?!m.match(s):m.match(s))&&_.push(m)}var p=_.length;if(0!==p)if(1!==n.length||this.mark||this.stat){n.shift();for(d=0;d<p;d++){var f;m=_[d];f=e?[e,m]:[m],this._process(f.concat(n),i,a)}}else{this.matches[i]||(this.matches[i]=Object.create(null));for(var d=0;d<p;d++){var m=_[d];e&&(m="/"!==e.slice(-1)?e+"/"+m:e+m),"/"!==m.charAt(0)||this.nomount||(m=yr.join(this.root,m)),this._emitMatch(i,m)}}}},si.prototype._emitMatch=function(e,t){if(!ai(this,t)){var r=this._makeAbs(t);if(this.mark&&(t=this._mark(t)),this.absolute&&(t=r),!this.matches[e][t]){if(this.nodir){var n=this.cache[r];if("DIR"===n||Array.isArray(n))return}this.matches[e][t]=!0,this.stat&&this._stat(t)}}},si.prototype._readdirInGlobStar=function(e){if(this.follow)return this._readdir(e,!1);var t,r;try{r=hr.lstatSync(e)}catch(e){if("ENOENT"===e.code)return null}var n=r&&r.isSymbolicLink();return this.symlinks[e]=n,n||!r||r.isDirectory()?t=this._readdir(e,!1):this.cache[e]="FILE",t},si.prototype._readdir=function(e,t){if(t&&!ni(this.symlinks,e))return this._readdirInGlobStar(e);if(ni(this.cache,e)){var r=this.cache[e];if(!r||"FILE"===r)return null;if(Array.isArray(r))return r}try{return this._readdirEntries(e,hr.readdirSync(e))}catch(t){return this._readdirError(e,t),null}},si.prototype._readdirEntries=function(e,t){if(!this.mark&&!this.stat)for(var r=0;r<t.length;r++){var n=t[r];n="/"===e?e+n:e+"/"+n,this.cache[n]=!0}return this.cache[e]=t,t},si.prototype._readdirError=function(e,t){switch(t.code){case"ENOTSUP":case"ENOTDIR":var r=this._makeAbs(e);if(this.cache[r]="FILE",r===this.cwdAbs){var n=new Error(t.code+" invalid cwd "+this.cwd);throw n.path=this.cwd,n.code=t.code,n}break;case"ENOENT":case"ELOOP":case"ENAMETOOLONG":case"UNKNOWN":this.cache[this._makeAbs(e)]=!1;break;default:if(this.cache[this._makeAbs(e)]=!1,this.strict)throw t;this.silent||console.error("glob error",t)}},si.prototype._processGlobStar=function(e,t,r,n,i,a){var o=this._readdir(r,a);if(o){var s=n.slice(1),c=e?[e]:[],u=c.concat(s);this._process(u,i,!1);var l=o.length;if(!this.symlinks[r]||!a)for(var _=0;_<l;_++){if("."!==o[_].charAt(0)||this.dot){var d=c.concat(o[_],s);this._process(d,i,!0);var p=c.concat(o[_],n);this._process(p,i,!0)}}}},si.prototype._processSimple=function(e,t){var r=this._stat(e);if(this.matches[t]||(this.matches[t]=Object.create(null)),r){if(e&&On(e)&&!this.nomount){var n=/[\/\\]$/.test(e);"/"===e.charAt(0)?e=yr.join(this.root,e):(e=yr.resolve(this.root,e),n&&(e+="/"))}"win32"===Oe.platform&&(e=e.replace(/\\/g,"/")),this._emitMatch(t,e)}},si.prototype._stat=function(e){var t=this._makeAbs(e),r="/"===e.slice(-1);if(e.length>this.maxLength)return!1;if(!this.stat&&ni(this.cache,t)){var n=this.cache[t];if(Array.isArray(n)&&(n="DIR"),!r||"DIR"===n)return n;if(r&&"FILE"===n)return!1}var i=this.statCache[t];if(!i){var a;try{a=hr.lstatSync(t)}catch(e){if(e&&("ENOENT"===e.code||"ENOTDIR"===e.code))return this.statCache[t]=!1,!1}if(a&&a.isSymbolicLink())try{i=hr.statSync(t)}catch(e){i=a}else i=a}this.statCache[t]=i;n=!0;return i&&(n=i.isDirectory()?"DIR":"FILE"),this.cache[t]=this.cache[t]||n,(!r||"FILE"!==n)&&n},si.prototype._mark=function(e){return Zn.mark(this,e)},si.prototype._makeAbs=function(e){return Zn.makeAbs(this,e)};var ci=function e(t,r){if(t&&r)return e(t)(r);if("function"!=typeof t)throw new TypeError("need wrapper function");Object.keys(t).forEach((function(e){n[e]=t[e]}));return n;function n(){for(var e=new Array(arguments.length),r=0;r<e.length;r++)e[r]=arguments[r];var n=t.apply(this,e),i=e[e.length-1];return"function"==typeof n&&n!==i&&Object.keys(i).forEach((function(e){n[e]=i[e]})),n}};var ui=ci(_i),li=ci(di);function _i(e){var t=function t(){return t.called?t.value:(t.called=!0,t.value=e.apply(this,arguments))};return t.called=!1,t}function di(e){var t=function t(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=e.apply(this,arguments)},r=e.name||"Function wrapped with `once`";return t.onceError=r+" shouldn't be called more than once",t.called=!1,t}_i.proto=_i((function(){Object.defineProperty(Function.prototype,"once",{value:function(){return _i(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return di(this)},configurable:!0})})),ui.strict=li;var pi=Object.create(null),fi=ci((function(e,t){return pi[e]?(pi[e].push(t),null):(pi[e]=[t],function(e){return ui((function t(){var r=pi[e],n=r.length,i=mi(arguments);try{for(var a=0;a<n;a++)r[a].apply(null,i)}finally{r.length>n?(r.splice(0,n),xe((function(){t.apply(null,i)}))):delete pi[e]}}))}(e))}));function mi(e){for(var t=e.length,r=[],n=0;n<t;n++)r[n]=e[n];return r}var gi=Di,yi=An.EventEmitter,hi=Zn.setopts,vi=Zn.ownProp,bi=Zn.childrenIgnored,xi=Zn.isIgnored;function Di(e,t,r){if("function"==typeof t&&(r=t,t={}),t||(t={}),t.sync){if(r)throw new TypeError("callback provided to sync glob");return ti(e,t)}return new Ti(e,t,r)}Di.sync=ti;var Si=Di.GlobSync=ti.GlobSync;function Ti(e,t,r){if("function"==typeof t&&(r=t,t=null),t&&t.sync){if(r)throw new TypeError("callback provided to sync glob");return new Si(e,t)}if(!(this instanceof Ti))return new Ti(e,t,r);hi(this,e,t),this._didRealPath=!1;var n=this.minimatch.set.length;this.matches=new Array(n),"function"==typeof r&&(r=ui(r),this.on("error",r),this.on("end",(function(e){r(null,e)})));var i=this;if(this._processing=0,this._emitQueue=[],this._processQueue=[],this.paused=!1,this.noprocess)return this;if(0===n)return s();for(var a=!0,o=0;o<n;o++)this._process(this.minimatch.set[o],o,!1,s);function s(){--i._processing,i._processing<=0&&(a?xe((function(){i._finish()})):i._finish())}a=!1}Di.glob=Di,Di.hasMagic=function(e,t){var r=function(e,t){if(null===t||"object"!==f(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}({},t);r.noprocess=!0;var n=new Ti(e,r).minimatch.set;if(!e)return!1;if(n.length>1)return!0;for(var i=0;i<n[0].length;i++)if("string"!=typeof n[0][i])return!0;return!1},Di.Glob=Ti,Nn(Ti,yi),Ti.prototype._finish=function(){if(ei(this instanceof Ti),!this.aborted){if(this.realpath&&!this._didRealpath)return this._realpath();Zn.finish(this),this.emit("end",this.found)}},Ti.prototype._realpath=function(){if(!this._didRealpath){this._didRealpath=!0;var e=this.matches.length;if(0===e)return this._finish();for(var t=this,r=0;r<this.matches.length;r++)this._realpathSet(r,n)}function n(){0==--e&&t._finish()}},Ti.prototype._realpathSet=function(e,t){var r=this.matches[e];if(!r)return t();var n=Object.keys(r),i=this,a=n.length;if(0===a)return t();var o=this.matches[e]=Object.create(null);n.forEach((function(r,n){r=i._makeAbs(r),Rr.realpath(r,i.realpathCache,(function(n,s){n?"stat"===n.syscall?o[r]=!0:i.emit("error",n):o[s]=!0,0==--a&&(i.matches[e]=o,t())}))}))},Ti.prototype._mark=function(e){return Zn.mark(this,e)},Ti.prototype._makeAbs=function(e){return Zn.makeAbs(this,e)},Ti.prototype.abort=function(){this.aborted=!0,this.emit("abort")},Ti.prototype.pause=function(){this.paused||(this.paused=!0,this.emit("pause"))},Ti.prototype.resume=function(){if(this.paused){if(this.emit("resume"),this.paused=!1,this._emitQueue.length){var e=this._emitQueue.slice(0);this._emitQueue.length=0;for(var t=0;t<e.length;t++){var r=e[t];this._emitMatch(r[0],r[1])}}if(this._processQueue.length){var n=this._processQueue.slice(0);this._processQueue.length=0;for(t=0;t<n.length;t++){var i=n[t];this._processing--,this._process(i[0],i[1],i[2],i[3])}}}},Ti.prototype._process=function(e,t,r,n){if(ei(this instanceof Ti),ei("function"==typeof n),!this.aborted)if(this._processing++,this.paused)this._processQueue.push([e,t,r,n]);else{for(var i,a=0;"string"==typeof e[a];)a++;switch(a){case e.length:return void this._processSimple(e.join("/"),t,n);case 0:i=null;break;default:i=e.slice(0,a).join("/")}var o,s=e.slice(a);null===i?o=".":On(i)||On(e.join("/"))?(i&&On(i)||(i="/"+i),o=i):o=i;var c=this._makeAbs(o);if(bi(this,o))return n();s[0]===ln.GLOBSTAR?this._processGlobStar(i,o,c,s,t,r,n):this._processReaddir(i,o,c,s,t,r,n)}},Ti.prototype._processReaddir=function(e,t,r,n,i,a,o){var s=this;this._readdir(r,a,(function(c,u){return s._processReaddir2(e,t,r,n,i,a,u,o)}))},Ti.prototype._processReaddir2=function(e,t,r,n,i,a,o,s){if(!o)return s();for(var c=n[0],u=!!this.minimatch.negate,l=c._glob,_=this.dot||"."===l.charAt(0),d=[],p=0;p<o.length;p++){if("."!==(m=o[p]).charAt(0)||_)(u&&!e?!m.match(c):m.match(c))&&d.push(m)}var f=d.length;if(0===f)return s();if(1===n.length&&!this.mark&&!this.stat){this.matches[i]||(this.matches[i]=Object.create(null));for(p=0;p<f;p++){var m=d[p];e&&(m="/"!==e?e+"/"+m:e+m),"/"!==m.charAt(0)||this.nomount||(m=yr.join(this.root,m)),this._emitMatch(i,m)}return s()}n.shift();for(p=0;p<f;p++){m=d[p];e&&(m="/"!==e?e+"/"+m:e+m),this._process([m].concat(n),i,a,s)}s()},Ti.prototype._emitMatch=function(e,t){if(!this.aborted&&!xi(this,t))if(this.paused)this._emitQueue.push([e,t]);else{var r=On(t)?t:this._makeAbs(t);if(this.mark&&(t=this._mark(t)),this.absolute&&(t=r),!this.matches[e][t]){if(this.nodir){var n=this.cache[r];if("DIR"===n||Array.isArray(n))return}this.matches[e][t]=!0;var i=this.statCache[r];i&&this.emit("stat",t,i),this.emit("match",t)}}},Ti.prototype._readdirInGlobStar=function(e,t){if(!this.aborted){if(this.follow)return this._readdir(e,!1,t);var r=this,n=fi("lstat\0"+e,(function(n,i){if(n&&"ENOENT"===n.code)return t();var a=i&&i.isSymbolicLink();r.symlinks[e]=a,a||!i||i.isDirectory()?r._readdir(e,!1,t):(r.cache[e]="FILE",t())}));n&&hr.lstat(e,n)}},Ti.prototype._readdir=function(e,t,r){if(!this.aborted&&(r=fi("readdir\0"+e+"\0"+t,r))){if(t&&!vi(this.symlinks,e))return this._readdirInGlobStar(e,r);if(vi(this.cache,e)){var n=this.cache[e];if(!n||"FILE"===n)return r();if(Array.isArray(n))return r(null,n)}hr.readdir(e,function(e,t,r){return function(n,i){n?e._readdirError(t,n,r):e._readdirEntries(t,i,r)}}(this,e,r))}},Ti.prototype._readdirEntries=function(e,t,r){if(!this.aborted){if(!this.mark&&!this.stat)for(var n=0;n<t.length;n++){var i=t[n];i="/"===e?e+i:e+"/"+i,this.cache[i]=!0}return this.cache[e]=t,r(null,t)}},Ti.prototype._readdirError=function(e,t,r){if(!this.aborted){switch(t.code){case"ENOTSUP":case"ENOTDIR":var n=this._makeAbs(e);if(this.cache[n]="FILE",n===this.cwdAbs){var i=new Error(t.code+" invalid cwd "+this.cwd);i.path=this.cwd,i.code=t.code,this.emit("error",i),this.abort()}break;case"ENOENT":case"ELOOP":case"ENAMETOOLONG":case"UNKNOWN":this.cache[this._makeAbs(e)]=!1;break;default:this.cache[this._makeAbs(e)]=!1,this.strict&&(this.emit("error",t),this.abort()),this.silent||console.error("glob error",t)}return r()}},Ti.prototype._processGlobStar=function(e,t,r,n,i,a,o){var s=this;this._readdir(r,a,(function(c,u){s._processGlobStar2(e,t,r,n,i,a,u,o)}))},Ti.prototype._processGlobStar2=function(e,t,r,n,i,a,o,s){if(!o)return s();var c=n.slice(1),u=e?[e]:[],l=u.concat(c);this._process(l,i,!1,s);var _=this.symlinks[r],d=o.length;if(_&&a)return s();for(var p=0;p<d;p++){if("."!==o[p].charAt(0)||this.dot){var f=u.concat(o[p],c);this._process(f,i,!0,s);var m=u.concat(o[p],n);this._process(m,i,!0,s)}}s()},Ti.prototype._processSimple=function(e,t,r){var n=this;this._stat(e,(function(i,a){n._processSimple2(e,t,i,a,r)}))},Ti.prototype._processSimple2=function(e,t,r,n,i){if(this.matches[t]||(this.matches[t]=Object.create(null)),!n)return i();if(e&&On(e)&&!this.nomount){var a=/[\/\\]$/.test(e);"/"===e.charAt(0)?e=yr.join(this.root,e):(e=yr.resolve(this.root,e),a&&(e+="/"))}"win32"===Oe.platform&&(e=e.replace(/\\/g,"/")),this._emitMatch(t,e),i()},Ti.prototype._stat=function(e,t){var r=this._makeAbs(e),n="/"===e.slice(-1);if(e.length>this.maxLength)return t();if(!this.stat&&vi(this.cache,r)){var i=this.cache[r];if(Array.isArray(i)&&(i="DIR"),!n||"DIR"===i)return t(null,i);if(n&&"FILE"===i)return t()}var a=this.statCache[r];if(void 0!==a){if(!1===a)return t(null,a);var o=a.isDirectory()?"DIR":"FILE";return n&&"FILE"===o?t():t(null,o,a)}var s=this,c=fi("stat\0"+r,(function(n,i){if(i&&i.isSymbolicLink())return hr.stat(r,(function(n,a){n?s._stat2(e,r,null,i,t):s._stat2(e,r,n,a,t)}));s._stat2(e,r,n,i,t)}));c&&hr.lstat(r,c)},Ti.prototype._stat2=function(e,t,r,n,i){if(r&&("ENOENT"===r.code||"ENOTDIR"===r.code))return this.statCache[t]=!1,i();var a="/"===e.slice(-1);if(this.statCache[t]=n,"/"===t.slice(-1)&&n&&!n.isDirectory())return i(null,!1,n);var o=!0;return n&&(o=n.isDirectory()?"DIR":"FILE"),this.cache[t]=this.cache[t]||o,a&&"FILE"===o?i():i(null,o,n)};
+/*!
+ * is-extglob <https://github.com/jonschlinkert/is-extglob>
+ *
+ * Copyright (c) 2014-2016, Jon Schlinkert.
+ * Licensed under the MIT License.
+ */
+var Ei={"{":"}","(":")","[":"]"},Ci=/\\(.)|(^!|\*|[\].+)]\?|\[[^\\\]]+\]|\{[^\\}]+\}|\(\?[:!=][^\\)]+\)|\([^|]+\|[^\\)]+\))/,ki=/\\(.)|(^!|[*?{}()[\]]|\(\?)/,Ni=function(e,t){if("string"!=typeof e||""===e)return!1;if(function(e){if("string"!=typeof e||""===e)return!1;for(var t;t=/(\\).|([@?!+*]\(.*\))/g.exec(e);){if(t[2])return!0;e=e.slice(t.index+t[0].length)}return!1}(e))return!0;var r,n=Ci;for(t&&!1===t.strict&&(n=ki);r=n.exec(e);){if(r[2])return!0;var i=r.index+r[0].length,a=r[1],o=a?Ei[a]:null;if(a&&o){var s=e.indexOf(o,i);-1!==s&&(i=s+1)}e=e.slice(i)}return!1},Ai=1/0,Fi="[object Symbol]",Pi=/&(?:amp|lt|gt|quot|#39|#96);/g,wi=RegExp(Pi.source),Ii="object"==f(n)&&n&&n.Object===Object&&n,Oi="object"==("undefined"==typeof self?"undefined":f(self))&&self&&self.Object===Object&&self,Mi=Ii||Oi||Function("return this")();
+/*!
+ * is-glob <https://github.com/jonschlinkert/is-glob>
+ *
+ * Copyright (c) 2014-2017, Jon Schlinkert.
+ * Released under the MIT License.
+ */var Li,Ri=(Li={"&amp;":"&","&lt;":"<","&gt;":">","&quot;":'"',"&#39;":"'","&#96;":"`"},function(e){return null==Li?void 0:Li[e]}),Bi=Object.prototype.toString,ji=Mi.Symbol,Ki=ji?ji.prototype:void 0,Ji=Ki?Ki.toString:void 0;function zi(e){if("string"==typeof e)return e;if(function(e){return"symbol"==f(e)||function(e){return!!e&&"object"==f(e)}(e)&&Bi.call(e)==Fi}(e))return Ji?Ji.call(e):"";var t=e+"";return"0"==t&&1/e==-Ai?"-0":t}var Ui=function(e){var t;return(e=null==(t=e)?"":zi(t))&&wi.test(e)?e.replace(Pi,Ri):e},Vi=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0})}));i(Vi);var qi=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),function(e){e.ArrayExpression="ArrayExpression",e.ArrayPattern="ArrayPattern",e.ArrowFunctionExpression="ArrowFunctionExpression",e.AssignmentExpression="AssignmentExpression",e.AssignmentPattern="AssignmentPattern",e.AwaitExpression="AwaitExpression",e.BigIntLiteral="BigIntLiteral",e.BinaryExpression="BinaryExpression",e.BlockStatement="BlockStatement",e.BreakStatement="BreakStatement",e.CallExpression="CallExpression",e.CatchClause="CatchClause",e.ClassBody="ClassBody",e.ClassDeclaration="ClassDeclaration",e.ClassExpression="ClassExpression",e.ClassProperty="ClassProperty",e.ConditionalExpression="ConditionalExpression",e.ContinueStatement="ContinueStatement",e.DebuggerStatement="DebuggerStatement",e.Decorator="Decorator",e.DoWhileStatement="DoWhileStatement",e.EmptyStatement="EmptyStatement",e.ExportAllDeclaration="ExportAllDeclaration",e.ExportDefaultDeclaration="ExportDefaultDeclaration",e.ExportNamedDeclaration="ExportNamedDeclaration",e.ExportSpecifier="ExportSpecifier",e.ExpressionStatement="ExpressionStatement",e.ForInStatement="ForInStatement",e.ForOfStatement="ForOfStatement",e.ForStatement="ForStatement",e.FunctionDeclaration="FunctionDeclaration",e.FunctionExpression="FunctionExpression",e.Identifier="Identifier",e.IfStatement="IfStatement",e.Import="Import",e.ImportDeclaration="ImportDeclaration",e.ImportDefaultSpecifier="ImportDefaultSpecifier",e.ImportNamespaceSpecifier="ImportNamespaceSpecifier",e.ImportSpecifier="ImportSpecifier",e.JSXAttribute="JSXAttribute",e.JSXClosingElement="JSXClosingElement",e.JSXClosingFragment="JSXClosingFragment",e.JSXElement="JSXElement",e.JSXEmptyExpression="JSXEmptyExpression",e.JSXExpressionContainer="JSXExpressionContainer",e.JSXFragment="JSXFragment",e.JSXIdentifier="JSXIdentifier",e.JSXMemberExpression="JSXMemberExpression",e.JSXOpeningElement="JSXOpeningElement",e.JSXOpeningFragment="JSXOpeningFragment",e.JSXSpreadAttribute="JSXSpreadAttribute",e.JSXSpreadChild="JSXSpreadChild",e.JSXText="JSXText",e.LabeledStatement="LabeledStatement",e.Literal="Literal",e.LogicalExpression="LogicalExpression",e.MemberExpression="MemberExpression",e.MetaProperty="MetaProperty",e.MethodDefinition="MethodDefinition",e.NewExpression="NewExpression",e.ObjectExpression="ObjectExpression",e.ObjectPattern="ObjectPattern",e.OptionalCallExpression="OptionalCallExpression",e.OptionalMemberExpression="OptionalMemberExpression",e.Program="Program",e.Property="Property",e.RestElement="RestElement",e.ReturnStatement="ReturnStatement",e.SequenceExpression="SequenceExpression",e.SpreadElement="SpreadElement",e.Super="Super",e.SwitchCase="SwitchCase",e.SwitchStatement="SwitchStatement",e.TaggedTemplateExpression="TaggedTemplateExpression",e.TemplateElement="TemplateElement",e.TemplateLiteral="TemplateLiteral",e.ThisExpression="ThisExpression",e.ThrowStatement="ThrowStatement",e.TryStatement="TryStatement",e.UnaryExpression="UnaryExpression",e.UpdateExpression="UpdateExpression",e.VariableDeclaration="VariableDeclaration",e.VariableDeclarator="VariableDeclarator",e.WhileStatement="WhileStatement",e.WithStatement="WithStatement",e.YieldExpression="YieldExpression",e.TSAbstractClassProperty="TSAbstractClassProperty",e.TSAbstractKeyword="TSAbstractKeyword",e.TSAbstractMethodDefinition="TSAbstractMethodDefinition",e.TSAnyKeyword="TSAnyKeyword",e.TSArrayType="TSArrayType",e.TSAsExpression="TSAsExpression",e.TSAsyncKeyword="TSAsyncKeyword",e.TSBooleanKeyword="TSBooleanKeyword",e.TSBigIntKeyword="TSBigIntKeyword",e.TSConditionalType="TSConditionalType",e.TSConstructorType="TSConstructorType",e.TSCallSignatureDeclaration="TSCallSignatureDeclaration",e.TSClassImplements="TSClassImplements",e.TSConstructSignatureDeclaration="TSConstructSignatureDeclaration",e.TSDeclareKeyword="TSDeclareKeyword",e.TSDeclareFunction="TSDeclareFunction",e.TSEmptyBodyFunctionExpression="TSEmptyBodyFunctionExpression",e.TSEnumDeclaration="TSEnumDeclaration",e.TSEnumMember="TSEnumMember",e.TSExportAssignment="TSExportAssignment",e.TSExportKeyword="TSExportKeyword",e.TSExternalModuleReference="TSExternalModuleReference",e.TSImportType="TSImportType",e.TSInferType="TSInferType",e.TSLiteralType="TSLiteralType",e.TSIndexedAccessType="TSIndexedAccessType",e.TSIndexSignature="TSIndexSignature",e.TSInterfaceBody="TSInterfaceBody",e.TSInterfaceDeclaration="TSInterfaceDeclaration",e.TSInterfaceHeritage="TSInterfaceHeritage",e.TSImportEqualsDeclaration="TSImportEqualsDeclaration",e.TSFunctionType="TSFunctionType",e.TSMethodSignature="TSMethodSignature",e.TSModuleBlock="TSModuleBlock",e.TSModuleDeclaration="TSModuleDeclaration",e.TSNamespaceExportDeclaration="TSNamespaceExportDeclaration",e.TSNonNullExpression="TSNonNullExpression",e.TSNeverKeyword="TSNeverKeyword",e.TSNullKeyword="TSNullKeyword",e.TSNumberKeyword="TSNumberKeyword",e.TSMappedType="TSMappedType",e.TSObjectKeyword="TSObjectKeyword",e.TSParameterProperty="TSParameterProperty",e.TSPrivateKeyword="TSPrivateKeyword",e.TSPropertySignature="TSPropertySignature",e.TSProtectedKeyword="TSProtectedKeyword",e.TSPublicKeyword="TSPublicKeyword",e.TSQualifiedName="TSQualifiedName",e.TSReadonlyKeyword="TSReadonlyKeyword",e.TSRestType="TSRestType",e.TSStaticKeyword="TSStaticKeyword",e.TSStringKeyword="TSStringKeyword",e.TSSymbolKeyword="TSSymbolKeyword",e.TSThisType="TSThisType",e.TSTypeAnnotation="TSTypeAnnotation",e.TSTypeAliasDeclaration="TSTypeAliasDeclaration",e.TSTypeAssertion="TSTypeAssertion",e.TSTypeLiteral="TSTypeLiteral",e.TSTypeOperator="TSTypeOperator",e.TSTypeParameter="TSTypeParameter",e.TSTypeParameterDeclaration="TSTypeParameterDeclaration",e.TSTypeParameterInstantiation="TSTypeParameterInstantiation",e.TSTypePredicate="TSTypePredicate",e.TSTypeReference="TSTypeReference",e.TSTypeQuery="TSTypeQuery",e.TSIntersectionType="TSIntersectionType",e.TSTupleType="TSTupleType",e.TSOptionalType="TSOptionalType",e.TSParenthesizedType="TSParenthesizedType",e.TSUnionType="TSUnionType",e.TSUndefinedKeyword="TSUndefinedKeyword",e.TSUnknownKeyword="TSUnknownKeyword",e.TSVoidKeyword="TSVoidKeyword"}(t.AST_NODE_TYPES||(t.AST_NODE_TYPES={})),function(e){e.Boolean="Boolean",e.Identifier="Identifier",e.JSXIdentifier="JSXIdentifier",e.JSXText="JSXText",e.Keyword="Keyword",e.Null="Null",e.Numeric="Numeric",e.Punctuator="Punctuator",e.RegularExpression="RegularExpression",e.String="String",e.Template="Template",e.Block="Block",e.Line="Line"}(t.AST_TOKEN_TYPES||(t.AST_TOKEN_TYPES={}))}));i(qi);qi.AST_NODE_TYPES,qi.AST_TOKEN_TYPES;var Wi=a((function(e,t){var r=n&&n.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});var i=r(Vi);t.TSESTree=i,function(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}(qi)}));i(Wi);Wi.TSESTree;var Gi=a((function(e,t){var r,i=n&&n.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},a=n&&n.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});var o=i(Ui),s=a(Fr),c=s.SyntaxKind,u=[c.EqualsToken,c.PlusEqualsToken,c.MinusEqualsToken,c.AsteriskEqualsToken,c.AsteriskAsteriskEqualsToken,c.SlashEqualsToken,c.PercentEqualsToken,c.LessThanLessThanEqualsToken,c.GreaterThanGreaterThanEqualsToken,c.GreaterThanGreaterThanGreaterThanEqualsToken,c.AmpersandEqualsToken,c.BarEqualsToken,c.CaretEqualsToken],l=[c.BarBarToken,c.AmpersandAmpersandToken,c.QuestionQuestionToken],_=(h(r={},c.OpenBraceToken,"{"),h(r,c.CloseBraceToken,"}"),h(r,c.OpenParenToken,"("),h(r,c.CloseParenToken,")"),h(r,c.OpenBracketToken,"["),h(r,c.CloseBracketToken,"]"),h(r,c.DotToken,"."),h(r,c.DotDotDotToken,"..."),h(r,c.SemicolonToken,","),h(r,c.CommaToken,","),h(r,c.LessThanToken,"<"),h(r,c.GreaterThanToken,">"),h(r,c.LessThanEqualsToken,"<="),h(r,c.GreaterThanEqualsToken,">="),h(r,c.EqualsEqualsToken,"=="),h(r,c.ExclamationEqualsToken,"!="),h(r,c.EqualsEqualsEqualsToken,"==="),h(r,c.InstanceOfKeyword,"instanceof"),h(r,c.ExclamationEqualsEqualsToken,"!=="),h(r,c.EqualsGreaterThanToken,"=>"),h(r,c.PlusToken,"+"),h(r,c.MinusToken,"-"),h(r,c.AsteriskToken,"*"),h(r,c.AsteriskAsteriskToken,"**"),h(r,c.SlashToken,"/"),h(r,c.PercentToken,"%"),h(r,c.PlusPlusToken,"++"),h(r,c.MinusMinusToken,"--"),h(r,c.LessThanLessThanToken,"<<"),h(r,c.LessThanSlashToken,"</"),h(r,c.GreaterThanGreaterThanToken,">>"),h(r,c.GreaterThanGreaterThanGreaterThanToken,">>>"),h(r,c.AmpersandToken,"&"),h(r,c.BarToken,"|"),h(r,c.CaretToken,"^"),h(r,c.ExclamationToken,"!"),h(r,c.TildeToken,"~"),h(r,c.AmpersandAmpersandToken,"&&"),h(r,c.BarBarToken,"||"),h(r,c.QuestionToken,"?"),h(r,c.ColonToken,":"),h(r,c.EqualsToken,"="),h(r,c.PlusEqualsToken,"+="),h(r,c.MinusEqualsToken,"-="),h(r,c.AsteriskEqualsToken,"*="),h(r,c.AsteriskAsteriskEqualsToken,"**="),h(r,c.SlashEqualsToken,"/="),h(r,c.PercentEqualsToken,"%="),h(r,c.LessThanLessThanEqualsToken,"<<="),h(r,c.GreaterThanGreaterThanEqualsToken,">>="),h(r,c.GreaterThanGreaterThanGreaterThanEqualsToken,">>>="),h(r,c.AmpersandEqualsToken,"&="),h(r,c.BarEqualsToken,"|="),h(r,c.CaretEqualsToken,"^="),h(r,c.AtToken,"@"),h(r,c.InKeyword,"in"),h(r,c.UniqueKeyword,"unique"),h(r,c.KeyOfKeyword,"keyof"),h(r,c.NewKeyword,"new"),h(r,c.ImportKeyword,"import"),h(r,c.ReadonlyKeyword,"readonly"),h(r,c.QuestionQuestionToken,"??"),h(r,c.QuestionDotToken,"?."),r);function d(e){return-1!==u.indexOf(e.kind)}function p(e){return-1!==l.indexOf(e.kind)}function f(e){return e.kind===c.SingleLineCommentTrivia||e.kind===c.MultiLineCommentTrivia}function m(e){return e.kind===c.JSDocComment}function g(e,t){var r=t.getLineAndCharacterOfPosition(e);return{line:r.line+1,column:r.character}}function y(e,t,r){return{start:g(e,r),end:g(t,r)}}function v(e){return e.kind>=c.FirstToken&&e.kind<=c.LastToken}function b(e){return e.kind>=c.JsxElement&&e.kind<=c.JsxAttribute}function x(e,t){for(;e;){if(t(e))return e;e=e.parent}}function D(e){return!!x(e,b)}function S(e){if(e.originalKeywordKind)switch(e.originalKeywordKind){case c.NullKeyword:return Wi.AST_TOKEN_TYPES.Null;case c.GetKeyword:case c.SetKeyword:case c.TypeKeyword:case c.ModuleKeyword:case c.AsyncKeyword:case c.IsKeyword:return Wi.AST_TOKEN_TYPES.Identifier;default:return Wi.AST_TOKEN_TYPES.Keyword}if(e.kind>=c.FirstKeyword&&e.kind<=c.LastFutureReservedWord)return e.kind===c.FalseKeyword||e.kind===c.TrueKeyword?Wi.AST_TOKEN_TYPES.Boolean:Wi.AST_TOKEN_TYPES.Keyword;if(e.kind>=c.FirstPunctuation&&e.kind<=c.LastBinaryOperator)return Wi.AST_TOKEN_TYPES.Punctuator;if(e.kind>=c.NoSubstitutionTemplateLiteral&&e.kind<=c.TemplateTail)return Wi.AST_TOKEN_TYPES.Template;switch(e.kind){case c.NumericLiteral:return Wi.AST_TOKEN_TYPES.Numeric;case c.JsxText:return Wi.AST_TOKEN_TYPES.JSXText;case c.StringLiteral:return!e.parent||e.parent.kind!==c.JsxAttribute&&e.parent.kind!==c.JsxElement?Wi.AST_TOKEN_TYPES.String:Wi.AST_TOKEN_TYPES.JSXText;case c.RegularExpressionLiteral:return Wi.AST_TOKEN_TYPES.RegularExpression;case c.Identifier:case c.ConstructorKeyword:case c.GetKeyword:case c.SetKeyword:}if(e.parent&&e.kind===c.Identifier){if(b(e.parent))return Wi.AST_TOKEN_TYPES.JSXIdentifier;if(e.parent.kind===c.PropertyAccessExpression&&D(e))return Wi.AST_TOKEN_TYPES.JSXIdentifier}return Wi.AST_TOKEN_TYPES.Identifier}function T(e,t){var r=e.kind===c.JsxText?e.getFullStart():e.getStart(t),n=e.getEnd(),i=t.text.slice(r,n),a={type:S(e),value:i,range:[r,n],loc:y(r,n,t)};return"RegularExpression"===a.type&&(a.regex={pattern:i.slice(1,i.lastIndexOf("/")),flags:i.slice(i.lastIndexOf("/")+1)}),a}function E(e,t){return e.kind===c.EndOfFileToken?!!e.jsDoc:0!==e.getWidth(t)}function C(e,t){if(void 0!==e)for(var r=0;r<e.length;r++){var n=t(e[r],r);if(void 0!==n)return n}}t.isAssignmentOperator=d,t.isLogicalOperator=p,t.getTextForTokenKind=function(e){return _[e]},t.isESTreeClassMember=function(e){return e.kind!==c.SemicolonClassElement},t.hasModifier=function(e,t){return!!t.modifiers&&!!t.modifiers.length&&t.modifiers.some((function(t){return t.kind===e}))},t.getLastModifier=function(e){return!!e.modifiers&&!!e.modifiers.length&&e.modifiers[e.modifiers.length-1]||null},t.isComma=function(e){return e.kind===c.CommaToken},t.isComment=f,t.isJSDocComment=m,t.getBinaryExpressionType=function(e){return d(e)?Wi.AST_NODE_TYPES.AssignmentExpression:p(e)?Wi.AST_NODE_TYPES.LogicalExpression:Wi.AST_NODE_TYPES.BinaryExpression},t.getLineAndCharacterFor=g,t.getLocFor=y,t.canContainDirective=function(e){if(e.kind===s.SyntaxKind.Block)switch(e.parent.kind){case s.SyntaxKind.Constructor:case s.SyntaxKind.GetAccessor:case s.SyntaxKind.SetAccessor:case s.SyntaxKind.ArrowFunction:case s.SyntaxKind.FunctionExpression:case s.SyntaxKind.FunctionDeclaration:case s.SyntaxKind.MethodDeclaration:return!0;default:return!1}return!0},t.getRange=function(e,t){return[e.getStart(t),e.getEnd()]},t.isToken=v,t.isJSXToken=b,t.getDeclarationKind=function(e){return e.flags&s.NodeFlags.Let?"let":e.flags&s.NodeFlags.Const?"const":"var"},t.getTSNodeAccessibility=function(e){var t=e.modifiers;if(!t)return null;for(var r=0;r<t.length;r++){switch(t[r].kind){case c.PublicKeyword:return"public";case c.ProtectedKeyword:return"protected";case c.PrivateKeyword:return"private"}}return null},t.findNextToken=function(e,t,r){return function t(n){if(s.isToken(n)&&n.pos===e.end)return n;return C(n.getChildren(r),(function(n){return(n.pos<=e.pos&&n.end>e.end||n.pos===e.end)&&E(n,r)?t(n):void 0}))}(t)},t.findFirstMatchingAncestor=x,t.hasJSXAncestor=D,t.unescapeStringLiteralText=function(e){return o.default(e)},t.isComputedProperty=function(e){return e.kind===c.ComputedPropertyName},t.isOptional=function(e){return!!e.questionToken&&e.questionToken.kind===c.QuestionToken},t.getTokenType=S,t.convertToken=T,t.convertTokens=function(e){var t=[];return function r(n){if(!f(n)&&!m(n))if(v(n)&&n.kind!==c.EndOfFileToken){var i=T(n,e);i&&t.push(i)}else n.getChildren(e).forEach(r)}(e),t},t.createError=function(e,t,r){var n=e.getLineAndCharacterOfPosition(t);return{index:t,lineNumber:n.line+1,column:n.character,message:r}},t.nodeHasTokens=E,t.firstDefined=C}));i(Gi);Gi.isAssignmentOperator,Gi.isLogicalOperator,Gi.getTextForTokenKind,Gi.isESTreeClassMember,Gi.hasModifier,Gi.getLastModifier,Gi.isComma,Gi.isComment,Gi.isJSDocComment,Gi.getBinaryExpressionType,Gi.getLineAndCharacterFor,Gi.getLocFor,Gi.canContainDirective,Gi.getRange,Gi.isToken,Gi.isJSXToken,Gi.getDeclarationKind,Gi.getTSNodeAccessibility,Gi.findNextToken,Gi.findFirstMatchingAncestor,Gi.hasJSXAncestor,Gi.unescapeStringLiteralText,Gi.isComputedProperty,Gi.isOptional,Gi.getTokenType,Gi.convertToken,Gi.convertTokens,Gi.createError,Gi.nodeHasTokens,Gi.firstDefined;var Hi=a((function(e,t){var r=n&&n.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});var i=r(Fr),a=i.SyntaxKind;t.convertError=function(e){return Gi.createError(e.file,e.start,e.message||e.messageText)};var o=function(){function e(t,r){m(this,e),this.esTreeNodeToTSNodeMap=new WeakMap,this.tsNodeToESTreeNodeMap=new WeakMap,this.allowPattern=!1,this.inTypeMode=!1,this.ast=t,this.options=Object.assign({},r)}return y(e,[{key:"getASTMaps",value:function(){return{esTreeNodeToTSNodeMap:this.esTreeNodeToTSNodeMap,tsNodeToESTreeNodeMap:this.tsNodeToESTreeNodeMap}}},{key:"convertProgram",value:function(){return this.converter(this.ast)}},{key:"converter",value:function(e,t,r,n){if(!e)return null;var i=this.inTypeMode,a=this.allowPattern;void 0!==r&&(this.inTypeMode=r),void 0!==n&&(this.allowPattern=n);var o=this.convertNode(e,t||e.parent);return this.registerTSNodeInNodeMap(e,o),this.inTypeMode=i,this.allowPattern=a,o}},{key:"fixExports",value:function(e,t){if(e.modifiers&&e.modifiers[0].kind===a.ExportKeyword){this.registerTSNodeInNodeMap(e,t);var r=e.modifiers[0],n=e.modifiers[1],i=n&&n.kind===a.DefaultKeyword,o=i?Gi.findNextToken(n,this.ast,this.ast):Gi.findNextToken(r,this.ast,this.ast);return t.range[0]=o.getStart(this.ast),t.loc=Gi.getLocFor(t.range[0],t.range[1],this.ast),i?this.createNode(e,{type:Wi.AST_NODE_TYPES.ExportDefaultDeclaration,declaration:t,range:[r.getStart(this.ast),t.range[1]]}):this.createNode(e,{type:Wi.AST_NODE_TYPES.ExportNamedDeclaration,declaration:t,specifiers:[],source:null,range:[r.getStart(this.ast),t.range[1]]})}return t}},{key:"registerTSNodeInNodeMap",value:function(e,t){t&&this.options.shouldPreserveNodeMaps&&(this.tsNodeToESTreeNodeMap.has(e)||this.tsNodeToESTreeNodeMap.set(e,t))}},{key:"convertPattern",value:function(e,t){return this.converter(e,t,this.inTypeMode,!0)}},{key:"convertChild",value:function(e,t){return this.converter(e,t,this.inTypeMode,!1)}},{key:"convertType",value:function(e,t){return this.converter(e,t,!0,!1)}},{key:"createNode",value:function(e,t){var r=t;return r.range||(r.range=Gi.getRange(e,this.ast)),r.loc||(r.loc=Gi.getLocFor(r.range[0],r.range[1],this.ast)),r&&this.options.shouldPreserveNodeMaps&&this.esTreeNodeToTSNodeMap.set(r,e),r}},{key:"convertTypeAnnotation",value:function(e,t){var r=t.kind===a.FunctionType||t.kind===a.ConstructorType?2:1,n=e.getFullStart()-r,i=Gi.getLocFor(n,e.end,this.ast);return{type:Wi.AST_NODE_TYPES.TSTypeAnnotation,loc:i,range:[n,e.end],typeAnnotation:this.convertType(e)}}},{key:"convertBodyExpressions",value:function(e,t){var r=this,n=Gi.canContainDirective(t);return e.map((function(e){var t=r.convertChild(e);if(n){if(t&&t.expression&&i.isExpressionStatement(e)&&i.isStringLiteral(e.expression)){var a=t.expression.raw;return t.directive=a.slice(1,-1),t}n=!1}return t})).filter((function(e){return e}))}},{key:"convertTypeArgumentsToTypeParameters",value:function(e){var t=this,r=Gi.findNextToken(e,this.ast,this.ast);return{type:Wi.AST_NODE_TYPES.TSTypeParameterInstantiation,range:[e.pos-1,r.end],loc:Gi.getLocFor(e.pos-1,r.end,this.ast),params:e.map((function(e){return t.convertType(e)}))}}},{key:"convertTSTypeParametersToTypeParametersDeclaration",value:function(e){var t=this,r=Gi.findNextToken(e,this.ast,this.ast);return{type:Wi.AST_NODE_TYPES.TSTypeParameterDeclaration,range:[e.pos-1,r.end],loc:Gi.getLocFor(e.pos-1,r.end,this.ast),params:e.map((function(e){return t.convertType(e)}))}}},{key:"convertParameters",value:function(e){var t=this;return e&&e.length?e.map((function(e){var r=t.convertChild(e);return e.decorators&&e.decorators.length&&(r.decorators=e.decorators.map((function(e){return t.convertChild(e)}))),r})):[]}},{key:"deeplyCopy",value:function(e){var t=this,r="TS".concat(a[e.kind]);if(this.options.errorOnUnknownASTType&&!Wi.AST_NODE_TYPES[r])throw new Error('Unknown AST_NODE_TYPE: "'.concat(r,'"'));var n=this.createNode(e,{type:r});return Object.keys(e).filter((function(e){return!/^(?:_children|kind|parent|pos|end|flags|modifierFlagsCache|jsDoc)$/.test(e)})).forEach((function(r){"type"===r?n.typeAnnotation=e.type?t.convertTypeAnnotation(e.type,e):null:"typeArguments"===r?n.typeParameters=e.typeArguments?t.convertTypeArgumentsToTypeParameters(e.typeArguments):null:"typeParameters"===r?n.typeParameters=e.typeParameters?t.convertTSTypeParametersToTypeParametersDeclaration(e.typeParameters):null:"decorators"===r?e.decorators&&e.decorators.length&&(n.decorators=e.decorators.map((function(e){return t.convertChild(e)}))):Array.isArray(e[r])?n[r]=e[r].map((function(e){return t.convertChild(e)})):e[r]&&"object"===f(e[r])&&e[r].kind?n[r]=t.convertChild(e[r]):n[r]=e[r]})),n}},{key:"convertJSXTagName",value:function(e,t){var r;switch(e.kind){case a.PropertyAccessExpression:r=this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXMemberExpression,object:this.convertJSXTagName(e.expression,t),property:this.convertJSXTagName(e.name,t)});break;case a.ThisKeyword:r=this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXIdentifier,name:"this"});break;case a.Identifier:default:r=this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXIdentifier,name:e.text})}return this.registerTSNodeInNodeMap(e,r),r}},{key:"applyModifiersToResult",value:function(e,t){var r=this;if(t&&t.length){for(var n={},i=0;i<t.length;i++){switch(t[i].kind){case a.ExportKeyword:case a.DefaultKeyword:n[i]=!0;break;case a.ConstKeyword:e.const=!0,n[i]=!0;break;case a.DeclareKeyword:e.declare=!0,n[i]=!0}}var o=t.filter((function(e,t){return!n[t]}));o&&o.length&&(e.modifiers=o.map((function(e){return r.convertChild(e)})))}}},{key:"fixParentLocation",value:function(e,t){t[0]<e.range[0]&&(e.range[0]=t[0],e.loc.start=Gi.getLineAndCharacterFor(e.range[0],this.ast)),t[1]>e.range[1]&&(e.range[1]=t[1],e.loc.end=Gi.getLineAndCharacterFor(e.range[1],this.ast))}},{key:"convertNode",value:function(e,t){var r=this;switch(e.kind){case a.SourceFile:return this.createNode(e,{type:Wi.AST_NODE_TYPES.Program,body:this.convertBodyExpressions(e.statements,e),sourceType:e.externalModuleIndicator?"module":"script",range:[e.getStart(this.ast),e.endOfFileToken.end]});case a.Block:return this.createNode(e,{type:Wi.AST_NODE_TYPES.BlockStatement,body:this.convertBodyExpressions(e.statements,e)});case a.Identifier:return this.createNode(e,{type:Wi.AST_NODE_TYPES.Identifier,name:e.text});case a.WithStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.WithStatement,object:this.convertChild(e.expression),body:this.convertChild(e.statement)});case a.ReturnStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.ReturnStatement,argument:this.convertChild(e.expression)});case a.LabeledStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.LabeledStatement,label:this.convertChild(e.label),body:this.convertChild(e.statement)});case a.ContinueStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.ContinueStatement,label:this.convertChild(e.label)});case a.BreakStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.BreakStatement,label:this.convertChild(e.label)});case a.IfStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.IfStatement,test:this.convertChild(e.expression),consequent:this.convertChild(e.thenStatement),alternate:this.convertChild(e.elseStatement)});case a.SwitchStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.SwitchStatement,discriminant:this.convertChild(e.expression),cases:e.caseBlock.clauses.map((function(e){return r.convertChild(e)}))});case a.CaseClause:case a.DefaultClause:return this.createNode(e,{type:Wi.AST_NODE_TYPES.SwitchCase,test:e.kind===a.CaseClause?this.convertChild(e.expression):null,consequent:e.statements.map((function(e){return r.convertChild(e)}))});case a.ThrowStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.ThrowStatement,argument:this.convertChild(e.expression)});case a.TryStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TryStatement,block:this.convertChild(e.tryBlock),handler:this.convertChild(e.catchClause),finalizer:this.convertChild(e.finallyBlock)});case a.CatchClause:return this.createNode(e,{type:Wi.AST_NODE_TYPES.CatchClause,param:e.variableDeclaration?this.convertChild(e.variableDeclaration.name):null,body:this.convertChild(e.block)});case a.WhileStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.WhileStatement,test:this.convertChild(e.expression),body:this.convertChild(e.statement)});case a.DoStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.DoWhileStatement,test:this.convertChild(e.expression),body:this.convertChild(e.statement)});case a.ForStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.ForStatement,init:this.convertChild(e.initializer),test:this.convertChild(e.condition),update:this.convertChild(e.incrementor),body:this.convertChild(e.statement)});case a.ForInStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.ForInStatement,left:this.convertPattern(e.initializer),right:this.convertChild(e.expression),body:this.convertChild(e.statement)});case a.ForOfStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.ForOfStatement,left:this.convertPattern(e.initializer),right:this.convertChild(e.expression),body:this.convertChild(e.statement),await:Boolean(e.awaitModifier&&e.awaitModifier.kind===a.AwaitKeyword)});case a.FunctionDeclaration:var n=Gi.hasModifier(a.DeclareKeyword,e),o=this.createNode(e,{type:n||!e.body?Wi.AST_NODE_TYPES.TSDeclareFunction:Wi.AST_NODE_TYPES.FunctionDeclaration,id:this.convertChild(e.name),generator:!!e.asteriskToken,expression:!1,async:Gi.hasModifier(a.AsyncKeyword,e),params:this.convertParameters(e.parameters),body:this.convertChild(e.body)||void 0});return e.type&&(o.returnType=this.convertTypeAnnotation(e.type,e)),n&&(o.declare=!0),e.typeParameters&&(o.typeParameters=this.convertTSTypeParametersToTypeParametersDeclaration(e.typeParameters)),e.decorators&&(o.decorators=e.decorators.map((function(e){return r.convertChild(e)}))),this.fixExports(e,o);case a.VariableDeclaration:var s=this.createNode(e,{type:Wi.AST_NODE_TYPES.VariableDeclarator,id:this.convertPattern(e.name),init:this.convertChild(e.initializer)});return e.exclamationToken&&(s.definite=!0),e.type&&(s.id.typeAnnotation=this.convertTypeAnnotation(e.type,e),this.fixParentLocation(s.id,s.id.typeAnnotation.range)),s;case a.VariableStatement:var c=this.createNode(e,{type:Wi.AST_NODE_TYPES.VariableDeclaration,declarations:e.declarationList.declarations.map((function(e){return r.convertChild(e)})),kind:Gi.getDeclarationKind(e.declarationList)});return e.decorators&&(c.decorators=e.decorators.map((function(e){return r.convertChild(e)}))),Gi.hasModifier(a.DeclareKeyword,e)&&(c.declare=!0),this.fixExports(e,c);case a.VariableDeclarationList:return this.createNode(e,{type:Wi.AST_NODE_TYPES.VariableDeclaration,declarations:e.declarations.map((function(e){return r.convertChild(e)})),kind:Gi.getDeclarationKind(e)});case a.ExpressionStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.ExpressionStatement,expression:this.convertChild(e.expression)});case a.ThisKeyword:return this.createNode(e,{type:Wi.AST_NODE_TYPES.ThisExpression});case a.ArrayLiteralExpression:return this.allowPattern?this.createNode(e,{type:Wi.AST_NODE_TYPES.ArrayPattern,elements:e.elements.map((function(e){return r.convertPattern(e)}))}):this.createNode(e,{type:Wi.AST_NODE_TYPES.ArrayExpression,elements:e.elements.map((function(e){return r.convertChild(e)}))});case a.ObjectLiteralExpression:return this.allowPattern?this.createNode(e,{type:Wi.AST_NODE_TYPES.ObjectPattern,properties:e.properties.map((function(e){return r.convertPattern(e)}))}):this.createNode(e,{type:Wi.AST_NODE_TYPES.ObjectExpression,properties:e.properties.map((function(e){return r.convertChild(e)}))});case a.PropertyAssignment:return this.createNode(e,{type:Wi.AST_NODE_TYPES.Property,key:this.convertChild(e.name),value:this.converter(e.initializer,e,this.inTypeMode,this.allowPattern),computed:Gi.isComputedProperty(e.name),method:!1,shorthand:!1,kind:"init"});case a.ShorthandPropertyAssignment:return e.objectAssignmentInitializer?this.createNode(e,{type:Wi.AST_NODE_TYPES.Property,key:this.convertChild(e.name),value:this.createNode(e,{type:Wi.AST_NODE_TYPES.AssignmentPattern,left:this.convertPattern(e.name),right:this.convertChild(e.objectAssignmentInitializer)}),computed:!1,method:!1,shorthand:!0,kind:"init"}):this.createNode(e,{type:Wi.AST_NODE_TYPES.Property,key:this.convertChild(e.name),value:this.convertChild(e.name),computed:!1,method:!1,shorthand:!0,kind:"init"});case a.ComputedPropertyName:return this.convertChild(e.expression);case a.PropertyDeclaration:var u=Gi.hasModifier(a.AbstractKeyword,e),l=this.createNode(e,{type:u?Wi.AST_NODE_TYPES.TSAbstractClassProperty:Wi.AST_NODE_TYPES.ClassProperty,key:this.convertChild(e.name),value:this.convertChild(e.initializer),computed:Gi.isComputedProperty(e.name),static:Gi.hasModifier(a.StaticKeyword,e),readonly:Gi.hasModifier(a.ReadonlyKeyword,e)||void 0,declare:Gi.hasModifier(a.DeclareKeyword,e)});e.type&&(l.typeAnnotation=this.convertTypeAnnotation(e.type,e)),e.decorators&&(l.decorators=e.decorators.map((function(e){return r.convertChild(e)})));var _=Gi.getTSNodeAccessibility(e);return _&&(l.accessibility=_),e.name.kind!==a.Identifier&&e.name.kind!==a.ComputedPropertyName||!e.questionToken||(l.optional=!0),e.exclamationToken&&(l.definite=!0),l.key.type===Wi.AST_NODE_TYPES.Literal&&e.questionToken&&(l.optional=!0),l;case a.GetAccessor:case a.SetAccessor:case a.MethodDeclaration:var d,p=this.createNode(e,{type:Wi.AST_NODE_TYPES.FunctionExpression,id:null,generator:!!e.asteriskToken,expression:!1,async:Gi.hasModifier(a.AsyncKeyword,e),body:this.convertChild(e.body),range:[e.parameters.pos-1,e.end],params:[]});if(e.type&&(p.returnType=this.convertTypeAnnotation(e.type,e)),e.typeParameters&&(p.typeParameters=this.convertTSTypeParametersToTypeParametersDeclaration(e.typeParameters),this.fixParentLocation(p,p.typeParameters.range)),t.kind===a.ObjectLiteralExpression)p.params=e.parameters.map((function(e){return r.convertChild(e)})),d=this.createNode(e,{type:Wi.AST_NODE_TYPES.Property,key:this.convertChild(e.name),value:p,computed:Gi.isComputedProperty(e.name),method:e.kind===a.MethodDeclaration,shorthand:!1,kind:"init"});else{p.params=this.convertParameters(e.parameters);var f=Gi.hasModifier(a.AbstractKeyword,e)?Wi.AST_NODE_TYPES.TSAbstractMethodDefinition:Wi.AST_NODE_TYPES.MethodDefinition;d=this.createNode(e,{type:f,key:this.convertChild(e.name),value:p,computed:Gi.isComputedProperty(e.name),static:Gi.hasModifier(a.StaticKeyword,e),kind:"method"}),e.decorators&&(d.decorators=e.decorators.map((function(e){return r.convertChild(e)})));var m=Gi.getTSNodeAccessibility(e);m&&(d.accessibility=m)}return d.key.type===Wi.AST_NODE_TYPES.Identifier&&e.questionToken&&(d.key.optional=!0),e.kind===a.GetAccessor?d.kind="get":e.kind===a.SetAccessor?d.kind="set":d.static||e.name.kind!==a.StringLiteral||"constructor"!==e.name.text||d.type===Wi.AST_NODE_TYPES.Property||(d.kind="constructor"),d;case a.Constructor:var g=Gi.getLastModifier(e),y=g&&Gi.findNextToken(g,e,this.ast)||e.getFirstToken(),h=this.createNode(e,{type:Wi.AST_NODE_TYPES.FunctionExpression,id:null,params:this.convertParameters(e.parameters),generator:!1,expression:!1,async:!1,body:this.convertChild(e.body),range:[e.parameters.pos-1,e.end]});e.typeParameters&&(h.typeParameters=this.convertTSTypeParametersToTypeParametersDeclaration(e.typeParameters),this.fixParentLocation(h,h.typeParameters.range)),e.type&&(h.returnType=this.convertTypeAnnotation(e.type,e));var v=this.createNode(e,{type:Wi.AST_NODE_TYPES.Identifier,name:"constructor",range:[y.getStart(this.ast),y.end]}),b=Gi.hasModifier(a.StaticKeyword,e),x=this.createNode(e,{type:Gi.hasModifier(a.AbstractKeyword,e)?Wi.AST_NODE_TYPES.TSAbstractMethodDefinition:Wi.AST_NODE_TYPES.MethodDefinition,key:v,value:h,computed:!1,static:b,kind:b?"method":"constructor"}),D=Gi.getTSNodeAccessibility(e);return D&&(x.accessibility=D),x;case a.FunctionExpression:var S=this.createNode(e,{type:Wi.AST_NODE_TYPES.FunctionExpression,id:this.convertChild(e.name),generator:!!e.asteriskToken,params:this.convertParameters(e.parameters),body:this.convertChild(e.body),async:Gi.hasModifier(a.AsyncKeyword,e),expression:!1});return e.type&&(S.returnType=this.convertTypeAnnotation(e.type,e)),e.typeParameters&&(S.typeParameters=this.convertTSTypeParametersToTypeParametersDeclaration(e.typeParameters)),S;case a.SuperKeyword:return this.createNode(e,{type:Wi.AST_NODE_TYPES.Super});case a.ArrayBindingPattern:return this.createNode(e,{type:Wi.AST_NODE_TYPES.ArrayPattern,elements:e.elements.map((function(e){return r.convertPattern(e)}))});case a.OmittedExpression:return null;case a.ObjectBindingPattern:return this.createNode(e,{type:Wi.AST_NODE_TYPES.ObjectPattern,properties:e.elements.map((function(e){return r.convertPattern(e)}))});case a.BindingElement:if(t.kind===a.ArrayBindingPattern){var T=this.convertChild(e.name,t);return e.initializer?this.createNode(e,{type:Wi.AST_NODE_TYPES.AssignmentPattern,left:T,right:this.convertChild(e.initializer)}):e.dotDotDotToken?this.createNode(e,{type:Wi.AST_NODE_TYPES.RestElement,argument:T}):T}var E;return E=e.dotDotDotToken?this.createNode(e,{type:Wi.AST_NODE_TYPES.RestElement,argument:this.convertChild(e.propertyName||e.name)}):this.createNode(e,{type:Wi.AST_NODE_TYPES.Property,key:this.convertChild(e.propertyName||e.name),value:this.convertChild(e.name),computed:Boolean(e.propertyName&&e.propertyName.kind===a.ComputedPropertyName),method:!1,shorthand:!e.propertyName,kind:"init"}),e.initializer&&(E.value=this.createNode(e,{type:Wi.AST_NODE_TYPES.AssignmentPattern,left:this.convertChild(e.name),right:this.convertChild(e.initializer),range:[e.name.getStart(this.ast),e.initializer.end]})),E;case a.ArrowFunction:var C=this.createNode(e,{type:Wi.AST_NODE_TYPES.ArrowFunctionExpression,generator:!1,id:null,params:this.convertParameters(e.parameters),body:this.convertChild(e.body),async:Gi.hasModifier(a.AsyncKeyword,e),expression:e.body.kind!==a.Block});return e.type&&(C.returnType=this.convertTypeAnnotation(e.type,e)),e.typeParameters&&(C.typeParameters=this.convertTSTypeParametersToTypeParametersDeclaration(e.typeParameters)),C;case a.YieldExpression:return this.createNode(e,{type:Wi.AST_NODE_TYPES.YieldExpression,delegate:!!e.asteriskToken,argument:this.convertChild(e.expression)});case a.AwaitExpression:return this.createNode(e,{type:Wi.AST_NODE_TYPES.AwaitExpression,argument:this.convertChild(e.expression)});case a.NoSubstitutionTemplateLiteral:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TemplateLiteral,quasis:[this.createNode(e,{type:Wi.AST_NODE_TYPES.TemplateElement,value:{raw:this.ast.text.slice(e.getStart(this.ast)+1,e.end-1),cooked:e.text},tail:!0})],expressions:[]});case a.TemplateExpression:var k=this.createNode(e,{type:Wi.AST_NODE_TYPES.TemplateLiteral,quasis:[this.convertChild(e.head)],expressions:[]});return e.templateSpans.forEach((function(e){k.expressions.push(r.convertChild(e.expression)),k.quasis.push(r.convertChild(e.literal))})),k;case a.TaggedTemplateExpression:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TaggedTemplateExpression,typeParameters:e.typeArguments?this.convertTypeArgumentsToTypeParameters(e.typeArguments):void 0,tag:this.convertChild(e.tag),quasi:this.convertChild(e.template)});case a.TemplateHead:case a.TemplateMiddle:case a.TemplateTail:var N=e.kind===a.TemplateTail;return this.createNode(e,{type:Wi.AST_NODE_TYPES.TemplateElement,value:{raw:this.ast.text.slice(e.getStart(this.ast)+1,e.end-(N?1:2)),cooked:e.text},tail:N});case a.SpreadAssignment:case a.SpreadElement:return this.allowPattern?this.createNode(e,{type:Wi.AST_NODE_TYPES.RestElement,argument:this.convertPattern(e.expression)}):this.createNode(e,{type:Wi.AST_NODE_TYPES.SpreadElement,argument:this.convertChild(e.expression)});case a.Parameter:var A,F;return e.dotDotDotToken?A=F=this.createNode(e,{type:Wi.AST_NODE_TYPES.RestElement,argument:this.convertChild(e.name)}):e.initializer?(A=this.convertChild(e.name),F=this.createNode(e,{type:Wi.AST_NODE_TYPES.AssignmentPattern,left:A,right:this.convertChild(e.initializer)}),e.modifiers&&(F.range[0]=A.range[0],F.loc=Gi.getLocFor(F.range[0],F.range[1],this.ast))):A=F=this.convertChild(e.name,t),e.type&&(A.typeAnnotation=this.convertTypeAnnotation(e.type,e),this.fixParentLocation(A,A.typeAnnotation.range)),e.questionToken&&(e.questionToken.end>A.range[1]&&(A.range[1]=e.questionToken.end,A.loc.end=Gi.getLineAndCharacterFor(A.range[1],this.ast)),A.optional=!0),e.modifiers?this.createNode(e,{type:Wi.AST_NODE_TYPES.TSParameterProperty,accessibility:Gi.getTSNodeAccessibility(e)||void 0,readonly:Gi.hasModifier(a.ReadonlyKeyword,e)||void 0,static:Gi.hasModifier(a.StaticKeyword,e)||void 0,export:Gi.hasModifier(a.ExportKeyword,e)||void 0,parameter:F}):F;case a.ClassDeclaration:case a.ClassExpression:var P=e.heritageClauses||[],w=e.kind===a.ClassDeclaration?Wi.AST_NODE_TYPES.ClassDeclaration:Wi.AST_NODE_TYPES.ClassExpression,I=P.find((function(e){return e.token===a.ExtendsKeyword})),O=P.find((function(e){return e.token===a.ImplementsKeyword})),M=this.createNode(e,{type:w,id:this.convertChild(e.name),body:this.createNode(e,{type:Wi.AST_NODE_TYPES.ClassBody,body:[],range:[e.members.pos-1,e.end]}),superClass:I&&I.types[0]?this.convertChild(I.types[0].expression):null});if(I){if(I.types.length>1)throw Gi.createError(this.ast,I.types[1].pos,"Classes can only extend a single class.");I.types[0]&&I.types[0].typeArguments&&(M.superTypeParameters=this.convertTypeArgumentsToTypeParameters(I.types[0].typeArguments))}e.typeParameters&&(M.typeParameters=this.convertTSTypeParametersToTypeParametersDeclaration(e.typeParameters)),O&&(M.implements=O.types.map((function(e){return r.convertChild(e)}))),Gi.hasModifier(a.AbstractKeyword,e)&&(M.abstract=!0),Gi.hasModifier(a.DeclareKeyword,e)&&(M.declare=!0),e.decorators&&(M.decorators=e.decorators.map((function(e){return r.convertChild(e)})));var L=e.members.filter(Gi.isESTreeClassMember);return L.length&&(M.body.body=L.map((function(e){return r.convertChild(e)}))),this.fixExports(e,M);case a.ModuleBlock:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSModuleBlock,body:this.convertBodyExpressions(e.statements,e)});case a.ImportDeclaration:var R=this.createNode(e,{type:Wi.AST_NODE_TYPES.ImportDeclaration,source:this.convertChild(e.moduleSpecifier),specifiers:[]});if(e.importClause&&(e.importClause.name&&R.specifiers.push(this.convertChild(e.importClause)),e.importClause.namedBindings))switch(e.importClause.namedBindings.kind){case a.NamespaceImport:R.specifiers.push(this.convertChild(e.importClause.namedBindings));break;case a.NamedImports:R.specifiers=R.specifiers.concat(e.importClause.namedBindings.elements.map((function(e){return r.convertChild(e)})))}return R;case a.NamespaceImport:return this.createNode(e,{type:Wi.AST_NODE_TYPES.ImportNamespaceSpecifier,local:this.convertChild(e.name)});case a.ImportSpecifier:return this.createNode(e,{type:Wi.AST_NODE_TYPES.ImportSpecifier,local:this.convertChild(e.name),imported:this.convertChild(e.propertyName||e.name)});case a.ImportClause:return this.createNode(e,{type:Wi.AST_NODE_TYPES.ImportDefaultSpecifier,local:this.convertChild(e.name),range:[e.getStart(this.ast),e.name.end]});case a.ExportDeclaration:return e.exportClause?this.createNode(e,{type:Wi.AST_NODE_TYPES.ExportNamedDeclaration,source:this.convertChild(e.moduleSpecifier),specifiers:e.exportClause.elements.map((function(e){return r.convertChild(e)})),declaration:null}):this.createNode(e,{type:Wi.AST_NODE_TYPES.ExportAllDeclaration,source:this.convertChild(e.moduleSpecifier)});case a.ExportSpecifier:return this.createNode(e,{type:Wi.AST_NODE_TYPES.ExportSpecifier,local:this.convertChild(e.propertyName||e.name),exported:this.convertChild(e.name)});case a.ExportAssignment:return e.isExportEquals?this.createNode(e,{type:Wi.AST_NODE_TYPES.TSExportAssignment,expression:this.convertChild(e.expression)}):this.createNode(e,{type:Wi.AST_NODE_TYPES.ExportDefaultDeclaration,declaration:this.convertChild(e.expression)});case a.PrefixUnaryExpression:case a.PostfixUnaryExpression:var B=Gi.getTextForTokenKind(e.operator)||"";return/^(?:\+\+|--)$/.test(B)?this.createNode(e,{type:Wi.AST_NODE_TYPES.UpdateExpression,operator:B,prefix:e.kind===a.PrefixUnaryExpression,argument:this.convertChild(e.operand)}):this.createNode(e,{type:Wi.AST_NODE_TYPES.UnaryExpression,operator:B,prefix:e.kind===a.PrefixUnaryExpression,argument:this.convertChild(e.operand)});case a.DeleteExpression:return this.createNode(e,{type:Wi.AST_NODE_TYPES.UnaryExpression,operator:"delete",prefix:!0,argument:this.convertChild(e.expression)});case a.VoidExpression:return this.createNode(e,{type:Wi.AST_NODE_TYPES.UnaryExpression,operator:"void",prefix:!0,argument:this.convertChild(e.expression)});case a.TypeOfExpression:return this.createNode(e,{type:Wi.AST_NODE_TYPES.UnaryExpression,operator:"typeof",prefix:!0,argument:this.convertChild(e.expression)});case a.TypeOperator:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSTypeOperator,operator:Gi.getTextForTokenKind(e.operator),typeAnnotation:this.convertChild(e.type)});case a.BinaryExpression:if(Gi.isComma(e.operatorToken)){var j=this.createNode(e,{type:Wi.AST_NODE_TYPES.SequenceExpression,expressions:[]}),K=this.convertChild(e.left);return K.type===Wi.AST_NODE_TYPES.SequenceExpression&&e.left.kind!==a.ParenthesizedExpression?j.expressions=j.expressions.concat(K.expressions):j.expressions.push(K),j.expressions.push(this.convertChild(e.right)),j}var J=Gi.getBinaryExpressionType(e.operatorToken);return this.allowPattern&&J===Wi.AST_NODE_TYPES.AssignmentExpression?this.createNode(e,{type:Wi.AST_NODE_TYPES.AssignmentPattern,left:this.convertPattern(e.left,e),right:this.convertChild(e.right)}):this.createNode(e,{type:J,operator:Gi.getTextForTokenKind(e.operatorToken.kind),left:this.converter(e.left,e,this.inTypeMode,J===Wi.AST_NODE_TYPES.AssignmentExpression),right:this.convertChild(e.right)});case a.PropertyAccessExpression:var z=this.convertChild(e.expression),U=this.convertChild(e.name),V=void 0!==e.questionDotToken,q=(z.type===Wi.AST_NODE_TYPES.OptionalMemberExpression||z.type===Wi.AST_NODE_TYPES.OptionalCallExpression)&&e.expression.kind!==i.SyntaxKind.ParenthesizedExpression;return V||q?this.createNode(e,{type:Wi.AST_NODE_TYPES.OptionalMemberExpression,object:z,property:U,computed:!1,optional:V}):this.createNode(e,{type:Wi.AST_NODE_TYPES.MemberExpression,object:z,property:U,computed:!1,optional:!1});case a.ElementAccessExpression:var W=this.convertChild(e.expression),G=this.convertChild(e.argumentExpression),H=void 0!==e.questionDotToken,Y=(W.type===Wi.AST_NODE_TYPES.OptionalMemberExpression||W.type===Wi.AST_NODE_TYPES.OptionalCallExpression)&&e.expression.kind!==i.SyntaxKind.ParenthesizedExpression;return H||Y?this.createNode(e,{type:Wi.AST_NODE_TYPES.OptionalMemberExpression,object:W,property:G,computed:!0,optional:H}):this.createNode(e,{type:Wi.AST_NODE_TYPES.MemberExpression,object:W,property:G,computed:!0,optional:!1});case a.CallExpression:var X,Q=this.convertChild(e.expression),$=e.arguments.map((function(e){return r.convertChild(e)})),Z=void 0!==e.questionDotToken,ee=(Q.type===Wi.AST_NODE_TYPES.OptionalMemberExpression||Q.type===Wi.AST_NODE_TYPES.OptionalCallExpression)&&e.expression.kind!==i.SyntaxKind.ParenthesizedExpression;return X=Z||ee?this.createNode(e,{type:Wi.AST_NODE_TYPES.OptionalCallExpression,callee:Q,arguments:$,optional:Z}):this.createNode(e,{type:Wi.AST_NODE_TYPES.CallExpression,callee:Q,arguments:$,optional:!1}),e.typeArguments&&(X.typeParameters=this.convertTypeArgumentsToTypeParameters(e.typeArguments)),X;case a.NewExpression:var te=this.createNode(e,{type:Wi.AST_NODE_TYPES.NewExpression,callee:this.convertChild(e.expression),arguments:e.arguments?e.arguments.map((function(e){return r.convertChild(e)})):[]});return e.typeArguments&&(te.typeParameters=this.convertTypeArgumentsToTypeParameters(e.typeArguments)),te;case a.ConditionalExpression:return this.createNode(e,{type:Wi.AST_NODE_TYPES.ConditionalExpression,test:this.convertChild(e.condition),consequent:this.convertChild(e.whenTrue),alternate:this.convertChild(e.whenFalse)});case a.MetaProperty:return this.createNode(e,{type:Wi.AST_NODE_TYPES.MetaProperty,meta:this.createNode(e.getFirstToken(),{type:Wi.AST_NODE_TYPES.Identifier,name:Gi.getTextForTokenKind(e.keywordToken)}),property:this.convertChild(e.name)});case a.Decorator:return this.createNode(e,{type:Wi.AST_NODE_TYPES.Decorator,expression:this.convertChild(e.expression)});case a.StringLiteral:var re=this.createNode(e,{type:Wi.AST_NODE_TYPES.Literal,raw:"",value:""});return re.raw=this.ast.text.slice(re.range[0],re.range[1]),t.name&&t.name===e?re.value=e.text:re.value=Gi.unescapeStringLiteralText(e.text),re;case a.NumericLiteral:return this.createNode(e,{type:Wi.AST_NODE_TYPES.Literal,value:Number(e.text),raw:e.getText()});case a.BigIntLiteral:var ne=this.createNode(e,{type:Wi.AST_NODE_TYPES.BigIntLiteral,raw:"",value:""});return ne.raw=this.ast.text.slice(ne.range[0],ne.range[1]),ne.value=ne.raw.slice(0,-1),ne;case a.RegularExpressionLiteral:var ie=e.text.slice(1,e.text.lastIndexOf("/")),ae=e.text.slice(e.text.lastIndexOf("/")+1),oe=null;try{oe=new RegExp(ie,ae)}catch(e){oe=null}return this.createNode(e,{type:Wi.AST_NODE_TYPES.Literal,value:oe,raw:e.text,regex:{pattern:ie,flags:ae}});case a.TrueKeyword:return this.createNode(e,{type:Wi.AST_NODE_TYPES.Literal,value:!0,raw:"true"});case a.FalseKeyword:return this.createNode(e,{type:Wi.AST_NODE_TYPES.Literal,value:!1,raw:"false"});case a.NullKeyword:return this.inTypeMode?this.createNode(e,{type:Wi.AST_NODE_TYPES.TSNullKeyword}):this.createNode(e,{type:Wi.AST_NODE_TYPES.Literal,value:null,raw:"null"});case a.ImportKeyword:return this.createNode(e,{type:Wi.AST_NODE_TYPES.Import});case a.EmptyStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.EmptyStatement});case a.DebuggerStatement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.DebuggerStatement});case a.JsxElement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXElement,openingElement:this.convertChild(e.openingElement),closingElement:this.convertChild(e.closingElement),children:e.children.map((function(e){return r.convertChild(e)}))});case a.JsxFragment:return this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXFragment,openingFragment:this.convertChild(e.openingFragment),closingFragment:this.convertChild(e.closingFragment),children:e.children.map((function(e){return r.convertChild(e)}))});case a.JsxSelfClosingElement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXElement,openingElement:this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXOpeningElement,typeParameters:e.typeArguments?this.convertTypeArgumentsToTypeParameters(e.typeArguments):void 0,selfClosing:!0,name:this.convertJSXTagName(e.tagName,e),attributes:e.attributes.properties.map((function(e){return r.convertChild(e)})),range:Gi.getRange(e,this.ast)}),closingElement:null,children:[]});case a.JsxOpeningElement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXOpeningElement,typeParameters:e.typeArguments?this.convertTypeArgumentsToTypeParameters(e.typeArguments):void 0,selfClosing:!1,name:this.convertJSXTagName(e.tagName,e),attributes:e.attributes.properties.map((function(e){return r.convertChild(e)}))});case a.JsxClosingElement:return this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXClosingElement,name:this.convertJSXTagName(e.tagName,e)});case a.JsxOpeningFragment:return this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXOpeningFragment});case a.JsxClosingFragment:return this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXClosingFragment});case a.JsxExpression:var se=e.expression?this.convertChild(e.expression):this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXEmptyExpression,range:[e.getStart(this.ast)+1,e.getEnd()-1]});return e.dotDotDotToken?this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXSpreadChild,expression:se}):this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXExpressionContainer,expression:se});case a.JsxAttribute:var ce=this.convertChild(e.name);return ce.type=Wi.AST_NODE_TYPES.JSXIdentifier,this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXAttribute,name:ce,value:this.convertChild(e.initializer)});case a.JsxText:var ue=e.getFullStart(),le=e.getEnd();return this.options.useJSXTextNode?this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXText,value:this.ast.text.slice(ue,le),raw:this.ast.text.slice(ue,le),range:[ue,le]}):this.createNode(e,{type:Wi.AST_NODE_TYPES.Literal,value:this.ast.text.slice(ue,le),raw:this.ast.text.slice(ue,le),range:[ue,le]});case a.JsxSpreadAttribute:return this.createNode(e,{type:Wi.AST_NODE_TYPES.JSXSpreadAttribute,argument:this.convertChild(e.expression)});case a.QualifiedName:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSQualifiedName,left:this.convertChild(e.left),right:this.convertChild(e.right)});case a.TypeReference:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSTypeReference,typeName:this.convertType(e.typeName),typeParameters:e.typeArguments?this.convertTypeArgumentsToTypeParameters(e.typeArguments):void 0});case a.TypeParameter:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSTypeParameter,name:this.convertType(e.name),constraint:e.constraint?this.convertType(e.constraint):void 0,default:e.default?this.convertType(e.default):void 0});case a.ThisType:case a.AnyKeyword:case a.BigIntKeyword:case a.BooleanKeyword:case a.NeverKeyword:case a.NumberKeyword:case a.ObjectKeyword:case a.StringKeyword:case a.SymbolKeyword:case a.UnknownKeyword:case a.VoidKeyword:case a.UndefinedKeyword:return this.createNode(e,{type:Wi.AST_NODE_TYPES["TS".concat(a[e.kind])]});case a.NonNullExpression:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSNonNullExpression,expression:this.convertChild(e.expression)});case a.TypeLiteral:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSTypeLiteral,members:e.members.map((function(e){return r.convertChild(e)}))});case a.ArrayType:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSArrayType,elementType:this.convertType(e.elementType)});case a.IndexedAccessType:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSIndexedAccessType,objectType:this.convertType(e.objectType),indexType:this.convertType(e.indexType)});case a.ConditionalType:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSConditionalType,checkType:this.convertType(e.checkType),extendsType:this.convertType(e.extendsType),trueType:this.convertType(e.trueType),falseType:this.convertType(e.falseType)});case a.TypeQuery:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSTypeQuery,exprName:this.convertType(e.exprName)});case a.MappedType:var _e=this.createNode(e,{type:Wi.AST_NODE_TYPES.TSMappedType,typeParameter:this.convertType(e.typeParameter)});return e.readonlyToken&&(e.readonlyToken.kind===a.ReadonlyKeyword?_e.readonly=!0:_e.readonly=Gi.getTextForTokenKind(e.readonlyToken.kind)),e.questionToken&&(e.questionToken.kind===a.QuestionToken?_e.optional=!0:_e.optional=Gi.getTextForTokenKind(e.questionToken.kind)),e.type&&(_e.typeAnnotation=this.convertType(e.type)),_e;case a.ParenthesizedExpression:return this.convertChild(e.expression,t);case a.TypeAliasDeclaration:var de=this.createNode(e,{type:Wi.AST_NODE_TYPES.TSTypeAliasDeclaration,id:this.convertChild(e.name),typeAnnotation:this.convertType(e.type)});return Gi.hasModifier(a.DeclareKeyword,e)&&(de.declare=!0),e.typeParameters&&(de.typeParameters=this.convertTSTypeParametersToTypeParametersDeclaration(e.typeParameters)),this.fixExports(e,de);case a.MethodSignature:var pe=this.createNode(e,{type:Wi.AST_NODE_TYPES.TSMethodSignature,computed:Gi.isComputedProperty(e.name),key:this.convertChild(e.name),params:this.convertParameters(e.parameters)});Gi.isOptional(e)&&(pe.optional=!0),e.type&&(pe.returnType=this.convertTypeAnnotation(e.type,e)),Gi.hasModifier(a.ReadonlyKeyword,e)&&(pe.readonly=!0),e.typeParameters&&(pe.typeParameters=this.convertTSTypeParametersToTypeParametersDeclaration(e.typeParameters));var fe=Gi.getTSNodeAccessibility(e);return fe&&(pe.accessibility=fe),Gi.hasModifier(a.ExportKeyword,e)&&(pe.export=!0),Gi.hasModifier(a.StaticKeyword,e)&&(pe.static=!0),pe;case a.PropertySignature:var me=this.createNode(e,{type:Wi.AST_NODE_TYPES.TSPropertySignature,optional:Gi.isOptional(e)||void 0,computed:Gi.isComputedProperty(e.name),key:this.convertChild(e.name),typeAnnotation:e.type?this.convertTypeAnnotation(e.type,e):void 0,initializer:this.convertChild(e.initializer)||void 0,readonly:Gi.hasModifier(a.ReadonlyKeyword,e)||void 0,static:Gi.hasModifier(a.StaticKeyword,e)||void 0,export:Gi.hasModifier(a.ExportKeyword,e)||void 0}),ge=Gi.getTSNodeAccessibility(e);return ge&&(me.accessibility=ge),me;case a.IndexSignature:var ye=this.createNode(e,{type:Wi.AST_NODE_TYPES.TSIndexSignature,parameters:e.parameters.map((function(e){return r.convertChild(e)}))});e.type&&(ye.typeAnnotation=this.convertTypeAnnotation(e.type,e)),Gi.hasModifier(a.ReadonlyKeyword,e)&&(ye.readonly=!0);var he=Gi.getTSNodeAccessibility(e);return he&&(ye.accessibility=he),Gi.hasModifier(a.ExportKeyword,e)&&(ye.export=!0),Gi.hasModifier(a.StaticKeyword,e)&&(ye.static=!0),ye;case a.ConstructorType:case a.FunctionType:case a.ConstructSignature:case a.CallSignature:var ve;switch(e.kind){case a.ConstructSignature:ve=Wi.AST_NODE_TYPES.TSConstructSignatureDeclaration;break;case a.CallSignature:ve=Wi.AST_NODE_TYPES.TSCallSignatureDeclaration;break;case a.FunctionType:ve=Wi.AST_NODE_TYPES.TSFunctionType;break;case a.ConstructorType:default:ve=Wi.AST_NODE_TYPES.TSConstructorType}var be=this.createNode(e,{type:ve,params:this.convertParameters(e.parameters)});return e.type&&(be.returnType=this.convertTypeAnnotation(e.type,e)),e.typeParameters&&(be.typeParameters=this.convertTSTypeParametersToTypeParametersDeclaration(e.typeParameters)),be;case a.ExpressionWithTypeArguments:var xe=this.createNode(e,{type:t&&t.kind===a.InterfaceDeclaration?Wi.AST_NODE_TYPES.TSInterfaceHeritage:Wi.AST_NODE_TYPES.TSClassImplements,expression:this.convertChild(e.expression)});return e.typeArguments&&(xe.typeParameters=this.convertTypeArgumentsToTypeParameters(e.typeArguments)),xe;case a.InterfaceDeclaration:var De=e.heritageClauses||[],Se=this.createNode(e,{type:Wi.AST_NODE_TYPES.TSInterfaceDeclaration,body:this.createNode(e,{type:Wi.AST_NODE_TYPES.TSInterfaceBody,body:e.members.map((function(e){return r.convertChild(e)})),range:[e.members.pos-1,e.end]}),id:this.convertChild(e.name)});if(e.typeParameters&&(Se.typeParameters=this.convertTSTypeParametersToTypeParametersDeclaration(e.typeParameters)),De.length>0){var Te=[],Ee=[],Ce=!0,ke=!1,Ne=void 0;try{for(var Ae,Fe=De[Symbol.iterator]();!(Ce=(Ae=Fe.next()).done);Ce=!0){var Pe=Ae.value;if(Pe.token===a.ExtendsKeyword){var we=!0,Ie=!1,Oe=void 0;try{for(var Me,Le=Pe.types[Symbol.iterator]();!(we=(Me=Le.next()).done);we=!0){var Re=Me.value;Te.push(this.convertChild(Re,e))}}catch(e){Ie=!0,Oe=e}finally{try{we||null==Le.return||Le.return()}finally{if(Ie)throw Oe}}}else if(Pe.token===a.ImplementsKeyword){var Be=!0,je=!1,Ke=void 0;try{for(var Je,ze=Pe.types[Symbol.iterator]();!(Be=(Je=ze.next()).done);Be=!0){var Ue=Je.value;Ee.push(this.convertChild(Ue,e))}}catch(e){je=!0,Ke=e}finally{try{Be||null==ze.return||ze.return()}finally{if(je)throw Ke}}}}}catch(e){ke=!0,Ne=e}finally{try{Ce||null==Fe.return||Fe.return()}finally{if(ke)throw Ne}}Te.length&&(Se.extends=Te),Ee.length&&(Se.implements=Ee)}return e.decorators&&(Se.decorators=e.decorators.map((function(e){return r.convertChild(e)}))),Gi.hasModifier(a.AbstractKeyword,e)&&(Se.abstract=!0),Gi.hasModifier(a.DeclareKeyword,e)&&(Se.declare=!0),this.fixExports(e,Se);case a.TypePredicate:var Ve=this.createNode(e,{type:Wi.AST_NODE_TYPES.TSTypePredicate,asserts:void 0!==e.assertsModifier,parameterName:this.convertChild(e.parameterName),typeAnnotation:null});return e.type&&(Ve.typeAnnotation=this.convertTypeAnnotation(e.type,e),Ve.typeAnnotation.loc=Ve.typeAnnotation.typeAnnotation.loc,Ve.typeAnnotation.range=Ve.typeAnnotation.typeAnnotation.range),Ve;case a.ImportType:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSImportType,isTypeOf:!!e.isTypeOf,parameter:this.convertChild(e.argument),qualifier:this.convertChild(e.qualifier),typeParameters:e.typeArguments?this.convertTypeArgumentsToTypeParameters(e.typeArguments):null});case a.EnumDeclaration:var qe=this.createNode(e,{type:Wi.AST_NODE_TYPES.TSEnumDeclaration,id:this.convertChild(e.name),members:e.members.map((function(e){return r.convertChild(e)}))});return this.applyModifiersToResult(qe,e.modifiers),e.decorators&&(qe.decorators=e.decorators.map((function(e){return r.convertChild(e)}))),this.fixExports(e,qe);case a.EnumMember:var We=this.createNode(e,{type:Wi.AST_NODE_TYPES.TSEnumMember,id:this.convertChild(e.name)});return e.initializer&&(We.initializer=this.convertChild(e.initializer)),We;case a.ModuleDeclaration:var Ge=this.createNode(e,{type:Wi.AST_NODE_TYPES.TSModuleDeclaration,id:this.convertChild(e.name)});return e.body&&(Ge.body=this.convertChild(e.body)),this.applyModifiersToResult(Ge,e.modifiers),e.flags&i.NodeFlags.GlobalAugmentation&&(Ge.global=!0),this.fixExports(e,Ge);case a.OptionalType:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSOptionalType,typeAnnotation:this.convertType(e.type)});case a.ParenthesizedType:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSParenthesizedType,typeAnnotation:this.convertType(e.type)});case a.TupleType:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSTupleType,elementTypes:e.elementTypes.map((function(e){return r.convertType(e)}))});case a.UnionType:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSUnionType,types:e.types.map((function(e){return r.convertType(e)}))});case a.IntersectionType:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSIntersectionType,types:e.types.map((function(e){return r.convertType(e)}))});case a.RestType:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSRestType,typeAnnotation:this.convertType(e.type)});case a.AsExpression:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSAsExpression,expression:this.convertChild(e.expression),typeAnnotation:this.convertType(e.type)});case a.InferType:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSInferType,typeParameter:this.convertType(e.typeParameter)});case a.LiteralType:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSLiteralType,literal:this.convertType(e.literal)});case a.TypeAssertionExpression:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSTypeAssertion,typeAnnotation:this.convertType(e.type),expression:this.convertChild(e.expression)});case a.ImportEqualsDeclaration:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSImportEqualsDeclaration,id:this.convertChild(e.name),moduleReference:this.convertChild(e.moduleReference),isExport:Gi.hasModifier(a.ExportKeyword,e)});case a.ExternalModuleReference:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSExternalModuleReference,expression:this.convertChild(e.expression)});case a.NamespaceExportDeclaration:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSNamespaceExportDeclaration,id:this.convertChild(e.name)});case a.AbstractKeyword:return this.createNode(e,{type:Wi.AST_NODE_TYPES.TSAbstractKeyword});default:return this.deeplyCopy(e)}}}]),e}();t.Converter=o}));i(Hi);Hi.convertError,Hi.Converter;var Yi=function(e,t){return(Yi=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};var Xi=function(){return(Xi=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)};function Qi(e){var t="function"==typeof Symbol&&e[Symbol.iterator],r=0;return t?t.call(e):{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}}}function $i(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,a=r.call(e),o=[];try{for(;(void 0===t||t-- >0)&&!(n=a.next()).done;)o.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(i)throw i.error}}return o}function Zi(e){return this instanceof Zi?(this.v=e,this):new Zi(e)}var ea=Object.freeze({__proto__:null,__extends:function(e,t){function r(){this.constructor=e}Yi(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)},get __assign(){return Xi},__rest:function(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(r[n[i]]=e[n[i]])}return r},__decorate:function(e,t,r,n){var i,a=arguments.length,o=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if("object"===("undefined"==typeof Reflect?"undefined":f(Reflect))&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,r,n);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(a<3?i(o):a>3?i(t,r,o):i(t,r))||o);return a>3&&o&&Object.defineProperty(t,r,o),o},__param:function(e,t){return function(r,n){t(r,n,e)}},__metadata:function(e,t){if("object"===("undefined"==typeof Reflect?"undefined":f(Reflect))&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},__awaiter:function(e,t,r,n){return new(r||(r=Promise))((function(i,a){function o(e){try{c(n.next(e))}catch(e){a(e)}}function s(e){try{c(n.throw(e))}catch(e){a(e)}}function c(e){e.done?i(e.value):new r((function(t){t(e.value)})).then(o,s)}c((n=n.apply(e,t||[])).next())}))},__generator:function(e,t){var r,n,i,a,o={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(a){return function(s){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return o.label++,{value:a[1],done:!1};case 5:o.label++,n=a[1],a=[0];continue;case 7:a=o.ops.pop(),o.trys.pop();continue;default:if(!(i=(i=o.trys).length>0&&i[i.length-1])&&(6===a[0]||2===a[0])){o=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){o.label=a[1];break}if(6===a[0]&&o.label<i[1]){o.label=i[1],i=a;break}if(i&&o.label<i[2]){o.label=i[2],o.ops.push(a);break}i[2]&&o.ops.pop(),o.trys.pop();continue}a=t.call(e,o)}catch(e){a=[6,e],n=0}finally{r=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,s])}}},__exportStar:function(e,t){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])},__values:Qi,__read:$i,__spread:function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat($i(arguments[t]));return e},__spreadArrays:function(){for(var e=0,t=0,r=arguments.length;t<r;t++)e+=arguments[t].length;var n=Array(e),i=0;for(t=0;t<r;t++)for(var a=arguments[t],o=0,s=a.length;o<s;o++,i++)n[i]=a[o];return n},__await:Zi,__asyncGenerator:function(e,t,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,i=r.apply(e,t||[]),a=[];return n={},o("next"),o("throw"),o("return"),n[Symbol.asyncIterator]=function(){return this},n;function o(e){i[e]&&(n[e]=function(t){return new Promise((function(r,n){a.push([e,t,r,n])>1||s(e,t)}))})}function s(e,t){try{(r=i[e](t)).value instanceof Zi?Promise.resolve(r.value.v).then(c,u):l(a[0][2],r)}catch(e){l(a[0][3],e)}var r}function c(e){s("next",e)}function u(e){s("throw",e)}function l(e,t){e(t),a.shift(),a.length&&s(a[0][0],a[0][1])}},__asyncDelegator:function(e){var t,r;return t={},n("next"),n("throw",(function(e){throw e})),n("return"),t[Symbol.iterator]=function(){return this},t;function n(n,i){t[n]=e[n]?function(t){return(r=!r)?{value:Zi(e[n](t)),done:"return"===n}:i?i(t):t}:i}},__asyncValues:function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=Qi(e),t={},n("next"),n("throw"),n("return"),t[Symbol.asyncIterator]=function(){return this},t);function n(r){t[r]=e[r]&&function(t){return new Promise((function(n,i){(function(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)})(n,i,(t=e[r](t)).done,t.value)}))}}},__makeTemplateObject:function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},__importStar:function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t},__importDefault:function(e){return e&&e.__esModule?e:{default:e}}}),ta=a((function(e,t){function r(e){return e.kind===Fr.SyntaxKind.ModuleDeclaration}function n(e){return e.kind===Fr.SyntaxKind.PropertyAccessExpression}function i(e){return e.kind===Fr.SyntaxKind.QualifiedName}Object.defineProperty(t,"__esModule",{value:!0}),t.isAccessorDeclaration=function(e){return e.kind===Fr.SyntaxKind.GetAccessor||e.kind===Fr.SyntaxKind.SetAccessor},t.isArrayBindingPattern=function(e){return e.kind===Fr.SyntaxKind.ArrayBindingPattern},t.isArrayLiteralExpression=function(e){return e.kind===Fr.SyntaxKind.ArrayLiteralExpression},t.isArrayTypeNode=function(e){return e.kind===Fr.SyntaxKind.ArrayType},t.isArrowFunction=function(e){return e.kind===Fr.SyntaxKind.ArrowFunction},t.isAsExpression=function(e){return e.kind===Fr.SyntaxKind.AsExpression},t.isAssertionExpression=function(e){return e.kind===Fr.SyntaxKind.AsExpression||e.kind===Fr.SyntaxKind.TypeAssertionExpression},t.isAwaitExpression=function(e){return e.kind===Fr.SyntaxKind.AwaitExpression},t.isBinaryExpression=function(e){return e.kind===Fr.SyntaxKind.BinaryExpression},t.isBindingElement=function(e){return e.kind===Fr.SyntaxKind.BindingElement},t.isBindingPattern=function(e){return e.kind===Fr.SyntaxKind.ArrayBindingPattern||e.kind===Fr.SyntaxKind.ObjectBindingPattern},t.isBlock=function(e){return e.kind===Fr.SyntaxKind.Block},t.isBlockLike=function(e){return void 0!==e.statements},t.isBooleanLiteral=function(e){return e.kind===Fr.SyntaxKind.TrueKeyword||e.kind===Fr.SyntaxKind.FalseKeyword},t.isBreakOrContinueStatement=function(e){return e.kind===Fr.SyntaxKind.BreakStatement||e.kind===Fr.SyntaxKind.ContinueStatement},t.isBreakStatement=function(e){return e.kind===Fr.SyntaxKind.BreakStatement},t.isCallExpression=function(e){return e.kind===Fr.SyntaxKind.CallExpression},t.isCallLikeExpression=function(e){switch(e.kind){case Fr.SyntaxKind.CallExpression:case Fr.SyntaxKind.Decorator:case Fr.SyntaxKind.JsxOpeningElement:case Fr.SyntaxKind.JsxSelfClosingElement:case Fr.SyntaxKind.NewExpression:case Fr.SyntaxKind.TaggedTemplateExpression:return!0;default:return!1}},t.isCallSignatureDeclaration=function(e){return e.kind===Fr.SyntaxKind.CallSignature},t.isCaseBlock=function(e){return e.kind===Fr.SyntaxKind.CaseBlock},t.isCaseClause=function(e){return e.kind===Fr.SyntaxKind.CaseClause},t.isCaseOrDefaultClause=function(e){return e.kind===Fr.SyntaxKind.CaseClause||e.kind===Fr.SyntaxKind.DefaultClause},t.isCatchClause=function(e){return e.kind===Fr.SyntaxKind.CatchClause},t.isClassDeclaration=function(e){return e.kind===Fr.SyntaxKind.ClassDeclaration},t.isClassExpression=function(e){return e.kind===Fr.SyntaxKind.ClassExpression},t.isClassLikeDeclaration=function(e){return e.kind===Fr.SyntaxKind.ClassDeclaration||e.kind===Fr.SyntaxKind.ClassExpression},t.isCommaListExpression=function(e){return e.kind===Fr.SyntaxKind.CommaListExpression},t.isConditionalExpression=function(e){return e.kind===Fr.SyntaxKind.ConditionalExpression},t.isConditionalTypeNode=function(e){return e.kind===Fr.SyntaxKind.ConditionalType},t.isConstructorDeclaration=function(e){return e.kind===Fr.SyntaxKind.Constructor},t.isConstructorTypeNode=function(e){return e.kind===Fr.SyntaxKind.ConstructorType},t.isConstructSignatureDeclaration=function(e){return e.kind===Fr.SyntaxKind.ConstructSignature},t.isContinueStatement=function(e){return e.kind===Fr.SyntaxKind.ContinueStatement},t.isComputedPropertyName=function(e){return e.kind===Fr.SyntaxKind.ComputedPropertyName},t.isDebuggerStatement=function(e){return e.kind===Fr.SyntaxKind.DebuggerStatement},t.isDecorator=function(e){return e.kind===Fr.SyntaxKind.Decorator},t.isDefaultClause=function(e){return e.kind===Fr.SyntaxKind.DefaultClause},t.isDeleteExpression=function(e){return e.kind===Fr.SyntaxKind.DeleteExpression},t.isDoStatement=function(e){return e.kind===Fr.SyntaxKind.DoStatement},t.isElementAccessExpression=function(e){return e.kind===Fr.SyntaxKind.ElementAccessExpression},t.isEmptyStatement=function(e){return e.kind===Fr.SyntaxKind.EmptyStatement},t.isEntityName=function(e){return e.kind===Fr.SyntaxKind.Identifier||i(e)},t.isEntityNameExpression=function e(t){return t.kind===Fr.SyntaxKind.Identifier||n(t)&&e(t.expression)},t.isEnumDeclaration=function(e){return e.kind===Fr.SyntaxKind.EnumDeclaration},t.isEnumMember=function(e){return e.kind===Fr.SyntaxKind.EnumMember},t.isExportAssignment=function(e){return e.kind===Fr.SyntaxKind.ExportAssignment},t.isExportDeclaration=function(e){return e.kind===Fr.SyntaxKind.ExportDeclaration},t.isExportSpecifier=function(e){return e.kind===Fr.SyntaxKind.ExportSpecifier},t.isExpression=function(e){switch(e.kind){case Fr.SyntaxKind.ArrayLiteralExpression:case Fr.SyntaxKind.ArrowFunction:case Fr.SyntaxKind.AsExpression:case Fr.SyntaxKind.AwaitExpression:case Fr.SyntaxKind.BinaryExpression:case Fr.SyntaxKind.CallExpression:case Fr.SyntaxKind.ClassExpression:case Fr.SyntaxKind.CommaListExpression:case Fr.SyntaxKind.ConditionalExpression:case Fr.SyntaxKind.DeleteExpression:case Fr.SyntaxKind.ElementAccessExpression:case Fr.SyntaxKind.FalseKeyword:case Fr.SyntaxKind.FunctionExpression:case Fr.SyntaxKind.Identifier:case Fr.SyntaxKind.JsxElement:case Fr.SyntaxKind.JsxFragment:case Fr.SyntaxKind.JsxExpression:case Fr.SyntaxKind.JsxOpeningElement:case Fr.SyntaxKind.JsxOpeningFragment:case Fr.SyntaxKind.JsxSelfClosingElement:case Fr.SyntaxKind.MetaProperty:case Fr.SyntaxKind.NewExpression:case Fr.SyntaxKind.NonNullExpression:case Fr.SyntaxKind.NoSubstitutionTemplateLiteral:case Fr.SyntaxKind.NullKeyword:case Fr.SyntaxKind.NumericLiteral:case Fr.SyntaxKind.ObjectLiteralExpression:case Fr.SyntaxKind.OmittedExpression:case Fr.SyntaxKind.ParenthesizedExpression:case Fr.SyntaxKind.PostfixUnaryExpression:case Fr.SyntaxKind.PrefixUnaryExpression:case Fr.SyntaxKind.PropertyAccessExpression:case Fr.SyntaxKind.RegularExpressionLiteral:case Fr.SyntaxKind.SpreadElement:case Fr.SyntaxKind.StringLiteral:case Fr.SyntaxKind.SuperKeyword:case Fr.SyntaxKind.TaggedTemplateExpression:case Fr.SyntaxKind.TemplateExpression:case Fr.SyntaxKind.ThisKeyword:case Fr.SyntaxKind.TrueKeyword:case Fr.SyntaxKind.TypeAssertionExpression:case Fr.SyntaxKind.TypeOfExpression:case Fr.SyntaxKind.VoidExpression:case Fr.SyntaxKind.YieldExpression:return!0;default:return!1}},t.isExpressionStatement=function(e){return e.kind===Fr.SyntaxKind.ExpressionStatement},t.isExpressionWithTypeArguments=function(e){return e.kind===Fr.SyntaxKind.ExpressionWithTypeArguments},t.isExternalModuleReference=function(e){return e.kind===Fr.SyntaxKind.ExternalModuleReference},t.isForInStatement=function(e){return e.kind===Fr.SyntaxKind.ForInStatement},t.isForInOrOfStatement=function(e){return e.kind===Fr.SyntaxKind.ForOfStatement||e.kind===Fr.SyntaxKind.ForInStatement},t.isForOfStatement=function(e){return e.kind===Fr.SyntaxKind.ForOfStatement},t.isForStatement=function(e){return e.kind===Fr.SyntaxKind.ForStatement},t.isFunctionDeclaration=function(e){return e.kind===Fr.SyntaxKind.FunctionDeclaration},t.isFunctionExpression=function(e){return e.kind===Fr.SyntaxKind.FunctionExpression},t.isFunctionTypeNode=function(e){return e.kind===Fr.SyntaxKind.FunctionType},t.isGetAccessorDeclaration=function(e){return e.kind===Fr.SyntaxKind.GetAccessor},t.isIdentifier=function(e){return e.kind===Fr.SyntaxKind.Identifier},t.isIfStatement=function(e){return e.kind===Fr.SyntaxKind.IfStatement},t.isImportClause=function(e){return e.kind===Fr.SyntaxKind.ImportClause},t.isImportDeclaration=function(e){return e.kind===Fr.SyntaxKind.ImportDeclaration},t.isImportEqualsDeclaration=function(e){return e.kind===Fr.SyntaxKind.ImportEqualsDeclaration},t.isImportSpecifier=function(e){return e.kind===Fr.SyntaxKind.ImportSpecifier},t.isIndexedAccessTypeNode=function(e){return e.kind===Fr.SyntaxKind.IndexedAccessType},t.isIndexSignatureDeclaration=function(e){return e.kind===Fr.SyntaxKind.IndexSignature},t.isInferTypeNode=function(e){return e.kind===Fr.SyntaxKind.InferType},t.isInterfaceDeclaration=function(e){return e.kind===Fr.SyntaxKind.InterfaceDeclaration},t.isIntersectionTypeNode=function(e){return e.kind===Fr.SyntaxKind.IntersectionType},t.isIterationStatement=function(e){switch(e.kind){case Fr.SyntaxKind.ForStatement:case Fr.SyntaxKind.ForOfStatement:case Fr.SyntaxKind.ForInStatement:case Fr.SyntaxKind.WhileStatement:case Fr.SyntaxKind.DoStatement:return!0;default:return!1}},t.isJsDoc=function(e){return e.kind===Fr.SyntaxKind.JSDocComment},t.isJsxAttribute=function(e){return e.kind===Fr.SyntaxKind.JsxAttribute},t.isJsxAttributeLike=function(e){return e.kind===Fr.SyntaxKind.JsxAttribute||e.kind===Fr.SyntaxKind.JsxSpreadAttribute},t.isJsxAttributes=function(e){return e.kind===Fr.SyntaxKind.JsxAttributes},t.isJsxClosingElement=function(e){return e.kind===Fr.SyntaxKind.JsxClosingElement},t.isJsxClosingFragment=function(e){return e.kind===Fr.SyntaxKind.JsxClosingFragment},t.isJsxElement=function(e){return e.kind===Fr.SyntaxKind.JsxElement},t.isJsxExpression=function(e){return e.kind===Fr.SyntaxKind.JsxExpression},t.isJsxFragment=function(e){return e.kind===Fr.SyntaxKind.JsxFragment},t.isJsxOpeningElement=function(e){return e.kind===Fr.SyntaxKind.JsxOpeningElement},t.isJsxOpeningFragment=function(e){return e.kind===Fr.SyntaxKind.JsxOpeningFragment},t.isJsxOpeningLikeElement=function(e){return e.kind===Fr.SyntaxKind.JsxOpeningElement||e.kind===Fr.SyntaxKind.JsxSelfClosingElement},t.isJsxSelfClosingElement=function(e){return e.kind===Fr.SyntaxKind.JsxSelfClosingElement},t.isJsxSpreadAttribute=function(e){return e.kind===Fr.SyntaxKind.JsxSpreadAttribute},t.isJsxText=function(e){return e.kind===Fr.SyntaxKind.JsxText},t.isLabeledStatement=function(e){return e.kind===Fr.SyntaxKind.LabeledStatement},t.isLiteralExpression=function(e){return e.kind>=Fr.SyntaxKind.FirstLiteralToken&&e.kind<=Fr.SyntaxKind.LastLiteralToken},t.isLiteralTypeNode=function(e){return e.kind===Fr.SyntaxKind.LiteralType},t.isMappedTypeNode=function(e){return e.kind===Fr.SyntaxKind.MappedType},t.isMetaProperty=function(e){return e.kind===Fr.SyntaxKind.MetaProperty},t.isMethodDeclaration=function(e){return e.kind===Fr.SyntaxKind.MethodDeclaration},t.isMethodSignature=function(e){return e.kind===Fr.SyntaxKind.MethodSignature},t.isModuleBlock=function(e){return e.kind===Fr.SyntaxKind.ModuleBlock},t.isModuleDeclaration=r,t.isNamedExports=function(e){return e.kind===Fr.SyntaxKind.NamedExports},t.isNamedImports=function(e){return e.kind===Fr.SyntaxKind.NamedImports},t.isNamespaceDeclaration=function e(t){return r(t)&&t.name.kind===Fr.SyntaxKind.Identifier&&void 0!==t.body&&(t.body.kind===Fr.SyntaxKind.ModuleBlock||e(t.body))},t.isNamespaceImport=function(e){return e.kind===Fr.SyntaxKind.NamespaceImport},t.isNamespaceExportDeclaration=function(e){return e.kind===Fr.SyntaxKind.NamespaceExportDeclaration},t.isNewExpression=function(e){return e.kind===Fr.SyntaxKind.NewExpression},t.isNonNullExpression=function(e){return e.kind===Fr.SyntaxKind.NonNullExpression},t.isNoSubstitutionTemplateLiteral=function(e){return e.kind===Fr.SyntaxKind.NoSubstitutionTemplateLiteral},t.isNullLiteral=function(e){return e.kind===Fr.SyntaxKind.NullKeyword},t.isNumericLiteral=function(e){return e.kind===Fr.SyntaxKind.NumericLiteral},t.isNumericOrStringLikeLiteral=function(e){switch(e.kind){case Fr.SyntaxKind.StringLiteral:case Fr.SyntaxKind.NumericLiteral:case Fr.SyntaxKind.NoSubstitutionTemplateLiteral:return!0;default:return!1}},t.isObjectBindingPattern=function(e){return e.kind===Fr.SyntaxKind.ObjectBindingPattern},t.isObjectLiteralExpression=function(e){return e.kind===Fr.SyntaxKind.ObjectLiteralExpression},t.isOmittedExpression=function(e){return e.kind===Fr.SyntaxKind.OmittedExpression},t.isParameterDeclaration=function(e){return e.kind===Fr.SyntaxKind.Parameter},t.isParenthesizedExpression=function(e){return e.kind===Fr.SyntaxKind.ParenthesizedExpression},t.isParenthesizedTypeNode=function(e){return e.kind===Fr.SyntaxKind.ParenthesizedType},t.isPostfixUnaryExpression=function(e){return e.kind===Fr.SyntaxKind.PostfixUnaryExpression},t.isPrefixUnaryExpression=function(e){return e.kind===Fr.SyntaxKind.PrefixUnaryExpression},t.isPropertyAccessExpression=n,t.isPropertyAssignment=function(e){return e.kind===Fr.SyntaxKind.PropertyAssignment},t.isPropertyDeclaration=function(e){return e.kind===Fr.SyntaxKind.PropertyDeclaration},t.isPropertySignature=function(e){return e.kind===Fr.SyntaxKind.PropertySignature},t.isQualifiedName=i,t.isRegularExpressionLiteral=function(e){return e.kind===Fr.SyntaxKind.RegularExpressionLiteral},t.isReturnStatement=function(e){return e.kind===Fr.SyntaxKind.ReturnStatement},t.isSetAccessorDeclaration=function(e){return e.kind===Fr.SyntaxKind.SetAccessor},t.isShorthandPropertyAssignment=function(e){return e.kind===Fr.SyntaxKind.ShorthandPropertyAssignment},t.isSignatureDeclaration=function(e){return void 0!==e.parameters},t.isSourceFile=function(e){return e.kind===Fr.SyntaxKind.SourceFile},t.isSpreadAssignment=function(e){return e.kind===Fr.SyntaxKind.SpreadAssignment},t.isSpreadElement=function(e){return e.kind===Fr.SyntaxKind.SpreadElement},t.isStringLiteral=function(e){return e.kind===Fr.SyntaxKind.StringLiteral},t.isSwitchStatement=function(e){return e.kind===Fr.SyntaxKind.SwitchStatement},t.isSyntaxList=function(e){return e.kind===Fr.SyntaxKind.SyntaxList},t.isTaggedTemplateExpression=function(e){return e.kind===Fr.SyntaxKind.TaggedTemplateExpression},t.isTemplateExpression=function(e){return e.kind===Fr.SyntaxKind.TemplateExpression},t.isTemplateLiteral=function(e){return e.kind===Fr.SyntaxKind.TemplateExpression||e.kind===Fr.SyntaxKind.NoSubstitutionTemplateLiteral},t.isTextualLiteral=function(e){return e.kind===Fr.SyntaxKind.StringLiteral||e.kind===Fr.SyntaxKind.NoSubstitutionTemplateLiteral},t.isThrowStatement=function(e){return e.kind===Fr.SyntaxKind.ThrowStatement},t.isTryStatement=function(e){return e.kind===Fr.SyntaxKind.TryStatement},t.isTupleTypeNode=function(e){return e.kind===Fr.SyntaxKind.TupleType},t.isTypeAliasDeclaration=function(e){return e.kind===Fr.SyntaxKind.TypeAliasDeclaration},t.isTypeAssertion=function(e){return e.kind===Fr.SyntaxKind.TypeAssertionExpression},t.isTypeLiteralNode=function(e){return e.kind===Fr.SyntaxKind.TypeLiteral},t.isTypeOfExpression=function(e){return e.kind===Fr.SyntaxKind.TypeOfExpression},t.isTypeOperatorNode=function(e){return e.kind===Fr.SyntaxKind.TypeOperator},t.isTypeParameterDeclaration=function(e){return e.kind===Fr.SyntaxKind.TypeParameter},t.isTypePredicateNode=function(e){return e.kind===Fr.SyntaxKind.TypePredicate},t.isTypeReferenceNode=function(e){return e.kind===Fr.SyntaxKind.TypeReference},t.isTypeQueryNode=function(e){return e.kind===Fr.SyntaxKind.TypeQuery},t.isUnionTypeNode=function(e){return e.kind===Fr.SyntaxKind.UnionType},t.isVariableDeclaration=function(e){return e.kind===Fr.SyntaxKind.VariableDeclaration},t.isVariableStatement=function(e){return e.kind===Fr.SyntaxKind.VariableStatement},t.isVariableDeclarationList=function(e){return e.kind===Fr.SyntaxKind.VariableDeclarationList},t.isVoidExpression=function(e){return e.kind===Fr.SyntaxKind.VoidExpression},t.isWhileStatement=function(e){return e.kind===Fr.SyntaxKind.WhileStatement},t.isWithStatement=function(e){return e.kind===Fr.SyntaxKind.WithStatement}}));i(ta);ta.isAccessorDeclaration,ta.isArrayBindingPattern,ta.isArrayLiteralExpression,ta.isArrayTypeNode,ta.isArrowFunction,ta.isAsExpression,ta.isAssertionExpression,ta.isAwaitExpression,ta.isBinaryExpression,ta.isBindingElement,ta.isBindingPattern,ta.isBlock,ta.isBlockLike,ta.isBooleanLiteral,ta.isBreakOrContinueStatement,ta.isBreakStatement,ta.isCallExpression,ta.isCallLikeExpression,ta.isCallSignatureDeclaration,ta.isCaseBlock,ta.isCaseClause,ta.isCaseOrDefaultClause,ta.isCatchClause,ta.isClassDeclaration,ta.isClassExpression,ta.isClassLikeDeclaration,ta.isCommaListExpression,ta.isConditionalExpression,ta.isConditionalTypeNode,ta.isConstructorDeclaration,ta.isConstructorTypeNode,ta.isConstructSignatureDeclaration,ta.isContinueStatement,ta.isComputedPropertyName,ta.isDebuggerStatement,ta.isDecorator,ta.isDefaultClause,ta.isDeleteExpression,ta.isDoStatement,ta.isElementAccessExpression,ta.isEmptyStatement,ta.isEntityName,ta.isEntityNameExpression,ta.isEnumDeclaration,ta.isEnumMember,ta.isExportAssignment,ta.isExportDeclaration,ta.isExportSpecifier,ta.isExpression,ta.isExpressionStatement,ta.isExpressionWithTypeArguments,ta.isExternalModuleReference,ta.isForInStatement,ta.isForInOrOfStatement,ta.isForOfStatement,ta.isForStatement,ta.isFunctionDeclaration,ta.isFunctionExpression,ta.isFunctionTypeNode,ta.isGetAccessorDeclaration,ta.isIdentifier,ta.isIfStatement,ta.isImportClause,ta.isImportDeclaration,ta.isImportEqualsDeclaration,ta.isImportSpecifier,ta.isIndexedAccessTypeNode,ta.isIndexSignatureDeclaration,ta.isInferTypeNode,ta.isInterfaceDeclaration,ta.isIntersectionTypeNode,ta.isIterationStatement,ta.isJsDoc,ta.isJsxAttribute,ta.isJsxAttributeLike,ta.isJsxAttributes,ta.isJsxClosingElement,ta.isJsxClosingFragment,ta.isJsxElement,ta.isJsxExpression,ta.isJsxFragment,ta.isJsxOpeningElement,ta.isJsxOpeningFragment,ta.isJsxOpeningLikeElement,ta.isJsxSelfClosingElement,ta.isJsxSpreadAttribute,ta.isJsxText,ta.isLabeledStatement,ta.isLiteralExpression,ta.isLiteralTypeNode,ta.isMappedTypeNode,ta.isMetaProperty,ta.isMethodDeclaration,ta.isMethodSignature,ta.isModuleBlock,ta.isModuleDeclaration,ta.isNamedExports,ta.isNamedImports,ta.isNamespaceDeclaration,ta.isNamespaceImport,ta.isNamespaceExportDeclaration,ta.isNewExpression,ta.isNonNullExpression,ta.isNoSubstitutionTemplateLiteral,ta.isNullLiteral,ta.isNumericLiteral,ta.isNumericOrStringLikeLiteral,ta.isObjectBindingPattern,ta.isObjectLiteralExpression,ta.isOmittedExpression,ta.isParameterDeclaration,ta.isParenthesizedExpression,ta.isParenthesizedTypeNode,ta.isPostfixUnaryExpression,ta.isPrefixUnaryExpression,ta.isPropertyAccessExpression,ta.isPropertyAssignment,ta.isPropertyDeclaration,ta.isPropertySignature,ta.isQualifiedName,ta.isRegularExpressionLiteral,ta.isReturnStatement,ta.isSetAccessorDeclaration,ta.isShorthandPropertyAssignment,ta.isSignatureDeclaration,ta.isSourceFile,ta.isSpreadAssignment,ta.isSpreadElement,ta.isStringLiteral,ta.isSwitchStatement,ta.isSyntaxList,ta.isTaggedTemplateExpression,ta.isTemplateExpression,ta.isTemplateLiteral,ta.isTextualLiteral,ta.isThrowStatement,ta.isTryStatement,ta.isTupleTypeNode,ta.isTypeAliasDeclaration,ta.isTypeAssertion,ta.isTypeLiteralNode,ta.isTypeOfExpression,ta.isTypeOperatorNode,ta.isTypeParameterDeclaration,ta.isTypePredicateNode,ta.isTypeReferenceNode,ta.isTypeQueryNode,ta.isUnionTypeNode,ta.isVariableDeclaration,ta.isVariableStatement,ta.isVariableDeclarationList,ta.isVoidExpression,ta.isWhileStatement,ta.isWithStatement;var ra=o(ea),na=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),ra.__exportStar(ta,t),t.isImportTypeNode=function(e){return e.kind===Fr.SyntaxKind.ImportType}}));i(na);na.isImportTypeNode;var ia=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),ra.__exportStar(na,t),t.isOptionalTypeNode=function(e){return e.kind===Fr.SyntaxKind.OptionalType},t.isRestTypeNode=function(e){return e.kind===Fr.SyntaxKind.RestType},t.isSyntheticExpression=function(e){return e.kind===Fr.SyntaxKind.SyntheticExpression}}));i(ia);ia.isOptionalTypeNode,ia.isRestTypeNode,ia.isSyntheticExpression;var aa=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),ra.__exportStar(ia,t),t.isBigIntLiteral=function(e){return e.kind===Fr.SyntaxKind.BigIntLiteral}}));i(aa);aa.isBigIntLiteral;var oa=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),ra.__exportStar(aa,t)}));i(oa);var sa=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.isConditionalType=function(e){return 0!=(e.flags&Fr.TypeFlags.Conditional)},t.isEnumType=function(e){return 0!=(e.flags&Fr.TypeFlags.Enum)},t.isGenericType=function(e){return 0!=(e.flags&Fr.TypeFlags.Object)&&0!=(e.objectFlags&Fr.ObjectFlags.ClassOrInterface)&&0!=(e.objectFlags&Fr.ObjectFlags.Reference)},t.isIndexedAccessType=function(e){return 0!=(e.flags&Fr.TypeFlags.IndexedAccess)},t.isIndexedAccessype=function(e){return 0!=(e.flags&Fr.TypeFlags.Index)},t.isInstantiableType=function(e){return 0!=(e.flags&Fr.TypeFlags.Instantiable)},t.isInterfaceType=function(e){return 0!=(e.flags&Fr.TypeFlags.Object)&&0!=(e.objectFlags&Fr.ObjectFlags.ClassOrInterface)},t.isIntersectionType=function(e){return 0!=(e.flags&Fr.TypeFlags.Intersection)},t.isLiteralType=function(e){return 0!=(e.flags&(Fr.TypeFlags.StringOrNumberLiteral|Fr.TypeFlags.BigIntLiteral))},t.isObjectType=function(e){return 0!=(e.flags&Fr.TypeFlags.Object)},t.isSubstitutionType=function(e){return 0!=(e.flags&Fr.TypeFlags.Substitution)},t.isTypeParameter=function(e){return 0!=(e.flags&Fr.TypeFlags.TypeParameter)},t.isTypeReference=function(e){return 0!=(e.flags&Fr.TypeFlags.Object)&&0!=(e.objectFlags&Fr.ObjectFlags.Reference)},t.isTypeVariable=function(e){return 0!=(e.flags&Fr.TypeFlags.TypeVariable)},t.isUnionOrIntersectionType=function(e){return 0!=(e.flags&Fr.TypeFlags.UnionOrIntersection)},t.isUnionType=function(e){return 0!=(e.flags&Fr.TypeFlags.Union)},t.isUniqueESSymbolType=function(e){return 0!=(e.flags&Fr.TypeFlags.UniqueESSymbol)}}));i(sa);sa.isConditionalType,sa.isEnumType,sa.isGenericType,sa.isIndexedAccessType,sa.isIndexedAccessype,sa.isInstantiableType,sa.isInterfaceType,sa.isIntersectionType,sa.isLiteralType,sa.isObjectType,sa.isSubstitutionType,sa.isTypeParameter,sa.isTypeReference,sa.isTypeVariable,sa.isUnionOrIntersectionType,sa.isUnionType,sa.isUniqueESSymbolType;var ca=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),ra.__exportStar(sa,t)}));i(ca);var ua=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),ra.__exportStar(ca,t);var r=ca;function n(e){return 0!==(e.flags&Fr.TypeFlags.Object&&e.objectFlags&Fr.ObjectFlags.Tuple)}t.isTupleType=n,t.isTupleTypeReference=function(e){return r.isTypeReference(e)&&n(e.target)}}));i(ua);ua.isTupleType,ua.isTupleTypeReference;var la=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),ra.__exportStar(ua,t)}));i(la);var _a=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),ra.__exportStar(la,t)}));i(_a);var da=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),ra.__exportStar(oa,t),ra.__exportStar(_a,t)}));i(da);var pa=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),ra.__exportStar(aa,t),ra.__exportStar(la,t)}));i(pa);var fa=a((function(e,t){function r(e,t){if(!n(t,Fr.TypeFlags.Undefined))return t;var r=n(t,Fr.TypeFlags.Null);return t=e.getNonNullableType(t),r?e.getNullableType(t,Fr.TypeFlags.Null):t}function n(e,t){var r=!0,n=!1,i=void 0;try{for(var o,s=a(e)[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){var c=o.value;if(ma.isTypeFlagSet(c,t))return!0}}catch(e){n=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(n)throw i}}return!1}function i(e,t,r){var n;return r|=Fr.TypeFlags.Any,function t(i){if(_a.isTypeParameter(i)&&void 0!==i.symbol&&void 0!==i.symbol.declarations){if(void 0===n)n=new Set([i]);else{if(n.has(i))return!1;n.add(i)}var a=i.symbol.declarations[0];return void 0===a.constraint||t(e.getTypeFromTypeNode(a.constraint))}return _a.isUnionType(i)?i.types.every(t):_a.isIntersectionType(i)?i.types.some(t):ma.isTypeFlagSet(i,r)}(t)}function a(e){return _a.isUnionType(e)?e.types:[e]}function o(e,t,r){return t(e)?e.types.some(r):r(e)}function s(e,t,r){var n=e.getApparentType(e.getTypeOfSymbolAtLocation(t,r));if(t.valueDeclaration.dotDotDotToken&&void 0===(n=n.getNumberIndexType()))return!1;var i=!0,o=!1,s=void 0;try{for(var c,u=a(n)[Symbol.iterator]();!(i=(c=u.next()).done);i=!0){if(0!==c.value.getCallSignatures().length)return!0}}catch(e){o=!0,s=e}finally{try{i||null==u.return||u.return()}finally{if(o)throw s}}return!1}function c(e,t){return ma.isTypeFlagSet(e,Fr.TypeFlags.BooleanLiteral)&&e.intrinsicName===(t?"true":"false")}function u(e,t){return t.startsWith("__")?e.getProperties().find((function(e){return e.escapedName===t})):e.getProperty(t)}function l(e,t,r){var n=!1,i=!1,o=!0,s=!1,c=void 0;try{for(var l,d=a(e)[Symbol.iterator]();!(o=(l=d.next()).done);o=!0){var p=l.value;if(void 0===u(p,t)){var f=(ma.isNumericPropertyName(t)?r.getIndexInfoOfType(p,Fr.IndexKind.Number):void 0)||r.getIndexInfoOfType(p,Fr.IndexKind.String);if(void 0!==f&&f.isReadonly){if(n)return!0;i=!0}}else{if(i||_(p,t,r))return!0;n=!0}}}catch(e){s=!0,c=e}finally{try{o||null==d.return||d.return()}finally{if(s)throw c}}return!1}function _(e,t,r){return o(e,_a.isIntersectionType,(function(e){var n=u(e,t);if(void 0===n)return!1;if(n.flags&Fr.SymbolFlags.Transient){if(/^(?:[1-9]\d*|0)$/.test(t)&&_a.isTupleTypeReference(e))return e.target.readonly;switch(function(e,t,r){if(!_a.isObjectType(e)||!ma.isObjectFlagSet(e,Fr.ObjectFlags.Mapped))return;var n=e.symbol.declarations[0];return void 0===n.readonlyToken||/^__@[^@]+$/.test(t)?l(e.modifiersType,t,r):n.readonlyToken.kind!==Fr.SyntaxKind.MinusToken}(e,t,r)){case!0:return!0;case!1:return!1}}return ma.isSymbolFlagSet(n,Fr.SymbolFlags.ValueModule)||d(n,r)}))}function d(e,t){return(e.flags&Fr.SymbolFlags.Accessor)===Fr.SymbolFlags.GetAccessor||void 0!==e.declarations&&e.declarations.some((function(e){return ma.isModifierFlagSet(e,Fr.ModifierFlags.Readonly)||oa.isVariableDeclaration(e)&&ma.isNodeFlagSet(e.parent,Fr.NodeFlags.Const)||oa.isCallExpression(e)&&ma.isReadonlyAssignmentDeclaration(e,t)||oa.isEnumMember(e)||(oa.isPropertyAssignment(e)||oa.isShorthandPropertyAssignment(e))&&ma.isInConstContext(e.parent)}))}Object.defineProperty(t,"__esModule",{value:!0}),t.isEmptyObjectType=function e(t){if(_a.isObjectType(t)&&t.objectFlags&Fr.ObjectFlags.Anonymous&&0===t.getProperties().length&&0===t.getCallSignatures().length&&0===t.getConstructSignatures().length&&void 0===t.getStringIndexType()&&void 0===t.getNumberIndexType()){var r=t.getBaseTypes();return void 0===r||r.every(e)}return!1},t.removeOptionalityFromType=r,t.isTypeAssignableToNumber=function(e,t){return i(e,t,Fr.TypeFlags.NumberLike)},t.isTypeAssignableToString=function(e,t){return i(e,t,Fr.TypeFlags.StringLike)},t.getCallSignaturesOfType=function e(t){if(_a.isUnionType(t)){var r=[],n=!0,i=!1,a=void 0;try{for(var o,s=t.types[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var c=o.value;r.push.apply(r,E(e(c)))}}catch(e){i=!0,a=e}finally{try{n||null==s.return||s.return()}finally{if(i)throw a}}return r}if(_a.isIntersectionType(t)){var u,l=!0,_=!1,d=void 0;try{for(var p,f=t.types[Symbol.iterator]();!(l=(p=f.next()).done);l=!0){var m=e(p.value);if(0!==m.length){if(void 0!==u)return[];u=m}}}catch(e){_=!0,d=e}finally{try{l||null==f.return||f.return()}finally{if(_)throw d}}return void 0===u?[]:u}return t.getCallSignatures()},t.unionTypeParts=a,t.intersectionTypeParts=function(e){return _a.isIntersectionType(e)?e.types:[e]},t.someTypePart=o,t.isThenableType=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.getTypeAtLocation(t),n=!0,i=!1,o=void 0;try{for(var c,u=a(e.getApparentType(r))[Symbol.iterator]();!(n=(c=u.next()).done);n=!0){var l=c.value.getProperty("then");if(void 0!==l){var _=e.getTypeOfSymbolAtLocation(l,t),d=!0,p=!1,f=void 0;try{for(var m,g=a(_)[Symbol.iterator]();!(d=(m=g.next()).done);d=!0){var y=m.value,h=!0,v=!1,b=void 0;try{for(var x,D=y.getCallSignatures()[Symbol.iterator]();!(h=(x=D.next()).done);h=!0){var S=x.value;if(0!==S.parameters.length&&s(e,S.parameters[0],t))return!0}}catch(e){v=!0,b=e}finally{try{h||null==D.return||D.return()}finally{if(v)throw b}}}}catch(e){p=!0,f=e}finally{try{d||null==g.return||g.return()}finally{if(p)throw f}}}}}catch(e){i=!0,o=e}finally{try{n||null==u.return||u.return()}finally{if(i)throw o}}return!1},t.isFalsyType=function(e){return!!(e.flags&(Fr.TypeFlags.Undefined|Fr.TypeFlags.Null|Fr.TypeFlags.Void))||(_a.isLiteralType(e)?!e.value:c(e,!1))},t.isBooleanLiteralType=c,t.getPropertyOfType=u,t.isPropertyReadonlyInType=l,t.symbolHasReadonlyDeclaration=d,t.getPropertyNameFromType=function(e){if(e.flags&(Fr.TypeFlags.StringLiteral|Fr.TypeFlags.NumberLiteral)){var t=String(e.value);return{displayName:t,symbolName:Fr.escapeLeadingUnderscores(t)}}if(_a.isUniqueESSymbolType(e))return{displayName:"[".concat(e.symbol?e.symbol.name:e.escapedName.replace(/^__@|@\d+$/g,""),"]"),symbolName:e.escapedName}},t.getConstructorTypeOfClassLikeDeclaration=function(e,t){return t.getDeclaredTypeOfSymbol(void 0!==e.name?t.getSymbolAtLocation(e.name):t.getTypeAtLocation(e).symbol)},t.getInstanceTypeOfClassLikeDeclaration=function(e,t){return e.kind===Fr.SyntaxKind.ClassDeclaration?t.getTypeAtLocation(e):t.getTypeOfSymbolAtLocation(t.getTypeAtLocation(e).getProperty("prototype"),e)},t.getIteratorYieldResultFromIteratorResult=function(e,t,n){return _a.isUnionType(e)&&e.types.find((function(e){var i=e.getProperty("done");return void 0!==i&&c(r(n,n.getTypeOfSymbolAtLocation(i,t)),!1)}))||e}}));i(fa);fa.isEmptyObjectType,fa.removeOptionalityFromType,fa.isTypeAssignableToNumber,fa.isTypeAssignableToString,fa.getCallSignaturesOfType,fa.unionTypeParts,fa.intersectionTypeParts,fa.someTypePart,fa.isThenableType,fa.isFalsyType,fa.isBooleanLiteralType,fa.getPropertyOfType,fa.isPropertyReadonlyInType,fa.symbolHasReadonlyDeclaration,fa.getPropertyNameFromType,fa.getConstructorTypeOfClassLikeDeclaration,fa.getInstanceTypeOfClassLikeDeclaration,fa.getIteratorYieldResultFromIteratorResult;var ma=a((function(e,t){function r(e){return e>=Fr.SyntaxKind.FirstToken&&e<=Fr.SyntaxKind.LastToken}function n(e){return e>=Fr.SyntaxKind.FirstAssignment&&e<=Fr.SyntaxKind.LastAssignment}function i(e){if(void 0===e)return!1;for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];var i=!0,a=!1,o=void 0;try{for(var s,c=e[Symbol.iterator]();!(i=(s=c.next()).done);i=!0){var u=s.value;if(r.includes(u.kind))return!0}}catch(e){a=!0,o=e}finally{try{i||null==c.return||c.return()}finally{if(a)throw o}}return!1}function a(e,t){return 0!=(e.flags&t)}function o(e,t,n,i){if(!(t<e.pos||t>=e.end))return r(e.kind)?e:(void 0===n&&(n=e.getSourceFile()),s(e,t,n,!0===i))}function s(e,t,n,i){e:for(;;){var a=!0,o=!1,s=void 0;try{for(var c,u=e.getChildren(n)[Symbol.iterator]();!(a=(c=u.next()).done);a=!0){var l=c.value;if(l.end>t&&(i||l.kind!==Fr.SyntaxKind.JSDocComment)){if(r(l.kind))return l;e=l;continue e}}}catch(e){o=!0,s=e}finally{try{a||null==u.return||u.return()}finally{if(o)throw s}}return}}function c(e,t){var r=o(arguments.length>2&&void 0!==arguments[2]?arguments[2]:e,t,e);if(!(void 0===r||r.kind===Fr.SyntaxKind.JsxText||t>=r.end-(Fr.tokenToString(r.kind)||"").length)){var n=0===r.pos?(Fr.getShebang(e.text)||"").length:r.pos;return 0!==n&&Fr.forEachTrailingCommentRange(e.text,n,u,t)||Fr.forEachLeadingCommentRange(e.text,n,u,t)}}function u(e,t,r,n,i){return i>=e&&i<t?{pos:e,end:t,kind:r}:void 0}function l(e){if(e.kind===Fr.SyntaxKind.ComputedPropertyName){if(!oa.isLiteralExpression(e.expression))return;return pa.isBigIntLiteral(e.expression)?e.expression.text.slice(0,-1):e.expression.text}return e.text}function _(e,t){var r=!0,n=!1,i=void 0;try{for(var a,o=e.elements[Symbol.iterator]();!(r=(a=o.next()).done);r=!0){var s=a.value;if(s.kind===Fr.SyntaxKind.BindingElement){var c=void 0;if(c=s.name.kind===Fr.SyntaxKind.Identifier?t(s):_(s.name,t))return c}}}catch(e){n=!0,i=e}finally{try{r||null==o.return||o.return()}finally{if(n)throw i}}}var d;function p(e){return 0!=(e.flags&Fr.NodeFlags.BlockScoped)}function f(e){switch(e.kind){case Fr.SyntaxKind.InterfaceDeclaration:case Fr.SyntaxKind.TypeAliasDeclaration:case Fr.SyntaxKind.MappedType:return 4;case Fr.SyntaxKind.ConditionalType:return 8;default:return 0}}function g(e){switch(e.kind){case Fr.SyntaxKind.FunctionExpression:case Fr.SyntaxKind.ArrowFunction:case Fr.SyntaxKind.Constructor:case Fr.SyntaxKind.ModuleDeclaration:case Fr.SyntaxKind.ClassDeclaration:case Fr.SyntaxKind.ClassExpression:case Fr.SyntaxKind.EnumDeclaration:case Fr.SyntaxKind.MethodDeclaration:case Fr.SyntaxKind.FunctionDeclaration:case Fr.SyntaxKind.GetAccessor:case Fr.SyntaxKind.SetAccessor:case Fr.SyntaxKind.MethodSignature:case Fr.SyntaxKind.CallSignature:case Fr.SyntaxKind.ConstructSignature:case Fr.SyntaxKind.ConstructorType:case Fr.SyntaxKind.FunctionType:return 1;case Fr.SyntaxKind.SourceFile:return Fr.isExternalModule(e)?1:0;default:return 0}}function h(e){switch(e.kind){case Fr.SyntaxKind.Block:var t=e.parent;return t.kind===Fr.SyntaxKind.CatchClause||t.kind!==Fr.SyntaxKind.SourceFile&&g(t)?0:2;case Fr.SyntaxKind.ForStatement:case Fr.SyntaxKind.ForInStatement:case Fr.SyntaxKind.ForOfStatement:case Fr.SyntaxKind.CaseBlock:case Fr.SyntaxKind.CatchClause:case Fr.SyntaxKind.WithStatement:return 2;default:return 0}}function v(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.getSourceFile();return function e(i){return r(i.kind)?t(i):i.kind!==Fr.SyntaxKind.JSDocComment?i.getChildren(n).forEach(e):void 0}(e)}function b(e){return e.kind===Fr.SyntaxKind.JsxElement||e.kind===Fr.SyntaxKind.JsxFragment}function x(e,t){return void 0===d?d=Fr.createScanner(t,!1,void 0,e):(d.setScriptTarget(t),d.setText(e)),d.scan(),d}function D(e){return e>=65536?2:1}function S(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Fr.ScriptTarget.Latest;if(0===e.length)return!1;var r=e.codePointAt(0);if(!Fr.isIdentifierStart(r,t))return!1;for(var n=D(r);n<e.length;n+=D(r))if(r=e.codePointAt(n),!Fr.isIdentifierPart(r,t))return!1;return!0}function T(e,t,r){return Fr.getLineAndCharacterOfPosition(e,t).line===Fr.getLineAndCharacterOfPosition(e,r).line}function E(e,t){switch(e.kind){case Fr.SyntaxKind.CallExpression:case Fr.SyntaxKind.PostfixUnaryExpression:case Fr.SyntaxKind.AwaitExpression:case Fr.SyntaxKind.YieldExpression:case Fr.SyntaxKind.DeleteExpression:return!0;case Fr.SyntaxKind.TypeAssertionExpression:case Fr.SyntaxKind.AsExpression:case Fr.SyntaxKind.ParenthesizedExpression:case Fr.SyntaxKind.NonNullExpression:case Fr.SyntaxKind.VoidExpression:case Fr.SyntaxKind.TypeOfExpression:case Fr.SyntaxKind.PropertyAccessExpression:case Fr.SyntaxKind.SpreadElement:case Fr.SyntaxKind.PartiallyEmittedExpression:return E(e.expression,t);case Fr.SyntaxKind.BinaryExpression:return n(e.operatorToken.kind)||E(e.left,t)||E(e.right,t);case Fr.SyntaxKind.PrefixUnaryExpression:switch(e.operator){case Fr.SyntaxKind.PlusPlusToken:case Fr.SyntaxKind.MinusMinusToken:return!0;default:return E(e.operand,t)}case Fr.SyntaxKind.ElementAccessExpression:return E(e.expression,t)||void 0!==e.argumentExpression&&E(e.argumentExpression,t);case Fr.SyntaxKind.ConditionalExpression:return E(e.condition,t)||E(e.whenTrue,t)||E(e.whenFalse,t);case Fr.SyntaxKind.NewExpression:if(2&t||E(e.expression,t))return!0;if(void 0!==e.arguments){var r=!0,i=!1,a=void 0;try{for(var o,s=e.arguments[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){if(E(o.value,t))return!0}}catch(e){i=!0,a=e}finally{try{r||null==s.return||s.return()}finally{if(i)throw a}}}return!1;case Fr.SyntaxKind.TaggedTemplateExpression:if(1&t||E(e.tag,t))return!0;if(e.template.kind===Fr.SyntaxKind.NoSubstitutionTemplateLiteral)return!1;e=e.template;case Fr.SyntaxKind.TemplateExpression:var c=!0,u=!1,l=void 0;try{for(var _,d=e.templateSpans[Symbol.iterator]();!(c=(_=d.next()).done);c=!0){if(E(_.value.expression,t))return!0}}catch(e){u=!0,l=e}finally{try{c||null==d.return||d.return()}finally{if(u)throw l}}return!1;case Fr.SyntaxKind.ClassExpression:return function(e,t){if(void 0!==e.heritageClauses&&e.heritageClauses[0].token===Fr.SyntaxKind.ExtendsKeyword){var r=!0,n=!1,i=void 0;try{for(var a,o=e.heritageClauses[0].types[Symbol.iterator]();!(r=(a=o.next()).done);r=!0){if(E(a.value.expression,t))return!0}}catch(e){n=!0,i=e}finally{try{r||null==o.return||o.return()}finally{if(n)throw i}}}var s=!0,c=!1,u=void 0;try{for(var l,_=e.members[Symbol.iterator]();!(s=(l=_.next()).done);s=!0){var d=l.value;if(void 0!==d.name&&d.name.kind===Fr.SyntaxKind.ComputedPropertyName&&E(d.name.expression,t)||oa.isPropertyDeclaration(d)&&void 0!==d.initializer&&E(d.initializer,t))return!0}}catch(e){c=!0,u=e}finally{try{s||null==_.return||_.return()}finally{if(c)throw u}}return!1}(e,t);case Fr.SyntaxKind.ArrayLiteralExpression:var p=!0,f=!1,m=void 0;try{for(var g,y=e.elements[Symbol.iterator]();!(p=(g=y.next()).done);p=!0){if(E(g.value,t))return!0}}catch(e){f=!0,m=e}finally{try{p||null==y.return||y.return()}finally{if(f)throw m}}return!1;case Fr.SyntaxKind.ObjectLiteralExpression:var h=!0,v=!1,b=void 0;try{for(var x,D=e.properties[Symbol.iterator]();!(h=(x=D.next()).done);h=!0){var S=x.value;if(void 0!==S.name&&S.name.kind===Fr.SyntaxKind.ComputedPropertyName&&E(S.name.expression,t))return!0;switch(S.kind){case Fr.SyntaxKind.PropertyAssignment:if(E(S.initializer,t))return!0;break;case Fr.SyntaxKind.SpreadAssignment:if(E(S.expression,t))return!0}}}catch(e){v=!0,b=e}finally{try{h||null==D.return||D.return()}finally{if(v)throw b}}return!1;case Fr.SyntaxKind.JsxExpression:return void 0!==e.expression&&E(e.expression,t);case Fr.SyntaxKind.JsxElement:case Fr.SyntaxKind.JsxFragment:var T=!0,C=!1,k=void 0;try{for(var N,A=e.children[Symbol.iterator]();!(T=(N=A.next()).done);T=!0){var F=N.value;if(F.kind!==Fr.SyntaxKind.JsxText&&E(F,t))return!0}}catch(e){C=!0,k=e}finally{try{T||null==A.return||A.return()}finally{if(C)throw k}}if(e.kind===Fr.SyntaxKind.JsxFragment)return!1;e=e.openingElement;case Fr.SyntaxKind.JsxSelfClosingElement:case Fr.SyntaxKind.JsxOpeningElement:if(4&t)return!0;var P=!0,w=!1,I=void 0;try{for(var O,M=e.attributes.properties[Symbol.iterator]();!(P=(O=M.next()).done);P=!0){var L=O.value;if(L.kind===Fr.SyntaxKind.JsxSpreadAttribute){if(E(L.expression,t))return!0}else if(void 0!==L.initializer&&E(L.initializer,t))return!0}}catch(e){w=!0,I=e}finally{try{P||null==M.return||M.return()}finally{if(w)throw I}}return!1;case Fr.SyntaxKind.CommaListExpression:var R=!0,B=!1,j=void 0;try{for(var K,J=e.elements[Symbol.iterator]();!(R=(K=J.next()).done);R=!0){if(E(K.value,t))return!0}}catch(e){B=!0,j=e}finally{try{R||null==J.return||J.return()}finally{if(B)throw j}}return!1;default:return!1}}function C(e){switch(e.kind){case Fr.SyntaxKind.ShorthandPropertyAssignment:if(void 0!==e.objectAssignmentInitializer)return!0;case Fr.SyntaxKind.PropertyAssignment:case Fr.SyntaxKind.SpreadAssignment:e=e.parent;break;case Fr.SyntaxKind.SpreadElement:if(e.parent.kind!==Fr.SyntaxKind.ArrayLiteralExpression)return!1;e=e.parent}for(;;)switch(e.parent.kind){case Fr.SyntaxKind.BinaryExpression:return e.parent.left===e&&e.parent.operatorToken.kind===Fr.SyntaxKind.EqualsToken;case Fr.SyntaxKind.ForOfStatement:return e.parent.initializer===e;case Fr.SyntaxKind.ArrayLiteralExpression:case Fr.SyntaxKind.ObjectLiteralExpression:e=e.parent;break;case Fr.SyntaxKind.SpreadAssignment:case Fr.SyntaxKind.PropertyAssignment:e=e.parent.parent;break;case Fr.SyntaxKind.SpreadElement:if(e.parent.parent.kind!==Fr.SyntaxKind.ArrayLiteralExpression)return!1;e=e.parent.parent;break;default:return!1}}function k(e){var t=e.parent;switch(t.kind){case Fr.SyntaxKind.DeleteExpression:return 4;case Fr.SyntaxKind.PostfixUnaryExpression:return 3;case Fr.SyntaxKind.PrefixUnaryExpression:return t.operator===Fr.SyntaxKind.PlusPlusToken||t.operator===Fr.SyntaxKind.MinusMinusToken?3:1;case Fr.SyntaxKind.BinaryExpression:return t.right===e?1:n(t.operatorToken.kind)?t.operatorToken.kind===Fr.SyntaxKind.EqualsToken?2:3:1;case Fr.SyntaxKind.ShorthandPropertyAssignment:return t.objectAssignmentInitializer===e?1:C(t)?2:1;case Fr.SyntaxKind.PropertyAssignment:return t.name===e?0:C(t)?2:1;case Fr.SyntaxKind.ArrayLiteralExpression:case Fr.SyntaxKind.SpreadElement:case Fr.SyntaxKind.SpreadAssignment:return C(t)?2:1;case Fr.SyntaxKind.ParenthesizedExpression:case Fr.SyntaxKind.NonNullExpression:case Fr.SyntaxKind.TypeAssertionExpression:case Fr.SyntaxKind.AsExpression:return k(t);case Fr.SyntaxKind.ForOfStatement:case Fr.SyntaxKind.ForInStatement:return t.initializer===e?2:1;case Fr.SyntaxKind.ExpressionWithTypeArguments:return t.parent.token===Fr.SyntaxKind.ExtendsKeyword&&t.parent.parent.kind!==Fr.SyntaxKind.InterfaceDeclaration?1:0;case Fr.SyntaxKind.ComputedPropertyName:case Fr.SyntaxKind.ExpressionStatement:case Fr.SyntaxKind.TypeOfExpression:case Fr.SyntaxKind.ElementAccessExpression:case Fr.SyntaxKind.ForStatement:case Fr.SyntaxKind.IfStatement:case Fr.SyntaxKind.DoStatement:case Fr.SyntaxKind.WhileStatement:case Fr.SyntaxKind.SwitchStatement:case Fr.SyntaxKind.WithStatement:case Fr.SyntaxKind.ThrowStatement:case Fr.SyntaxKind.CallExpression:case Fr.SyntaxKind.NewExpression:case Fr.SyntaxKind.TaggedTemplateExpression:case Fr.SyntaxKind.JsxExpression:case Fr.SyntaxKind.Decorator:case Fr.SyntaxKind.TemplateSpan:case Fr.SyntaxKind.JsxOpeningElement:case Fr.SyntaxKind.JsxSelfClosingElement:case Fr.SyntaxKind.JsxSpreadAttribute:case Fr.SyntaxKind.VoidExpression:case Fr.SyntaxKind.ReturnStatement:case Fr.SyntaxKind.AwaitExpression:case Fr.SyntaxKind.YieldExpression:case Fr.SyntaxKind.ConditionalExpression:case Fr.SyntaxKind.CaseClause:case Fr.SyntaxKind.JsxElement:return 1;case Fr.SyntaxKind.ArrowFunction:return t.body===e?1:2;case Fr.SyntaxKind.PropertyDeclaration:case Fr.SyntaxKind.VariableDeclaration:case Fr.SyntaxKind.Parameter:case Fr.SyntaxKind.EnumMember:case Fr.SyntaxKind.BindingElement:case Fr.SyntaxKind.JsxAttribute:return t.initializer===e?1:0;case Fr.SyntaxKind.PropertyAccessExpression:return t.expression===e?1:0;case Fr.SyntaxKind.ExportAssignment:return t.isExportEquals?1:0}return 0}function N(e){switch(e.kind){case Fr.SyntaxKind.Parameter:case Fr.SyntaxKind.CallSignature:case Fr.SyntaxKind.ConstructSignature:case Fr.SyntaxKind.MethodSignature:case Fr.SyntaxKind.PropertySignature:case Fr.SyntaxKind.ArrowFunction:case Fr.SyntaxKind.ParenthesizedExpression:case Fr.SyntaxKind.SpreadAssignment:case Fr.SyntaxKind.ShorthandPropertyAssignment:case Fr.SyntaxKind.PropertyAssignment:case Fr.SyntaxKind.FunctionExpression:case Fr.SyntaxKind.FunctionDeclaration:case Fr.SyntaxKind.LabeledStatement:case Fr.SyntaxKind.ExpressionStatement:case Fr.SyntaxKind.VariableStatement:case Fr.SyntaxKind.Constructor:case Fr.SyntaxKind.MethodDeclaration:case Fr.SyntaxKind.PropertyDeclaration:case Fr.SyntaxKind.GetAccessor:case Fr.SyntaxKind.SetAccessor:case Fr.SyntaxKind.ClassDeclaration:case Fr.SyntaxKind.ClassExpression:case Fr.SyntaxKind.InterfaceDeclaration:case Fr.SyntaxKind.TypeAliasDeclaration:case Fr.SyntaxKind.EnumMember:case Fr.SyntaxKind.EnumDeclaration:case Fr.SyntaxKind.ModuleDeclaration:case Fr.SyntaxKind.ImportEqualsDeclaration:case Fr.SyntaxKind.IndexSignature:case Fr.SyntaxKind.FunctionType:case Fr.SyntaxKind.ConstructorType:case Fr.SyntaxKind.JSDocFunctionType:case Fr.SyntaxKind.EndOfFileToken:case Fr.SyntaxKind.ExportDeclaration:return!0;default:return!1}}function A(e,t){if(e.kind===Fr.SyntaxKind.EndOfFileToken)return F(e,t||e.parent);var r=[],n=!0,i=!1,a=void 0;try{for(var o,s=e.getChildren(t)[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var c=o.value;if(!oa.isJsDoc(c))break;r.push(c)}}catch(e){i=!0,a=e}finally{try{n||null==s.return||s.return()}finally{if(i)throw a}}return r}function F(e,t,r){var n=e.getStart(t),i=Fr[r&&T(t,e.pos,n)?"forEachTrailingCommentRange":"forEachLeadingCommentRange"](t.text,e.pos,(function(e,r,n){return n===Fr.SyntaxKind.MultiLineCommentTrivia&&"*"===t.text[e+2]?{pos:e}:void 0}));if(void 0===i)return[];var a=i.pos,o=t.text.slice(a,n),s=Fr.createSourceFile("jsdoc.ts","".concat(o,"var a;"),t.languageVersion),c=A(s.statements[0],s),u=!0,l=!1,_=void 0;try{for(var d,p=c[Symbol.iterator]();!(u=(d=p.next()).done);u=!0){f(d.value,e)}}catch(e){l=!0,_=e}finally{try{u||null==p.return||p.return()}finally{if(l)throw _}}return c;function f(e,t){return e.pos+=a,e.end+=a,e.parent=t,Fr.forEachChild(e,(function(t){return f(t,e)}),(function(t){t.pos+=a,t.end+=a;var r=!0,n=!1,i=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){f(o.value,e)}}catch(e){n=!0,i=e}finally{try{r||null==s.return||s.return()}finally{if(n)throw i}}}))}}function P(e,t){return new w(e,t).find()}Object.defineProperty(t,"__esModule",{value:!0}),t.getChildOfKind=function(e,t,r){var n=!0,i=!1,a=void 0;try{for(var o,s=e.getChildren(r)[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var c=o.value;if(c.kind===t)return c}}catch(e){i=!0,a=e}finally{try{n||null==s.return||s.return()}finally{if(i)throw a}}},t.isTokenKind=r,t.isNodeKind=function(e){return e>=Fr.SyntaxKind.FirstNode},t.isAssignmentKind=n,t.isTypeNodeKind=function(e){return e>=Fr.SyntaxKind.FirstTypeNode&&e<=Fr.SyntaxKind.LastTypeNode},t.isJsDocKind=function(e){return e>=Fr.SyntaxKind.FirstJSDocNode&&e<=Fr.SyntaxKind.LastJSDocNode},t.isKeywordKind=function(e){return e>=Fr.SyntaxKind.FirstKeyword&&e<=Fr.SyntaxKind.LastKeyword},t.isThisParameter=function(e){return e.name.kind===Fr.SyntaxKind.Identifier&&e.name.originalKeywordKind===Fr.SyntaxKind.ThisKeyword},t.getModifier=function(e,t){if(void 0!==e.modifiers){var r=!0,n=!1,i=void 0;try{for(var a,o=e.modifiers[Symbol.iterator]();!(r=(a=o.next()).done);r=!0){var s=a.value;if(s.kind===t)return s}}catch(e){n=!0,i=e}finally{try{r||null==o.return||o.return()}finally{if(n)throw i}}}},t.hasModifier=i,t.isParameterProperty=function(e){return i(e.modifiers,Fr.SyntaxKind.PublicKeyword,Fr.SyntaxKind.ProtectedKeyword,Fr.SyntaxKind.PrivateKeyword,Fr.SyntaxKind.ReadonlyKeyword)},t.hasAccessModifier=function(e){return i(e.modifiers,Fr.SyntaxKind.PublicKeyword,Fr.SyntaxKind.ProtectedKeyword,Fr.SyntaxKind.PrivateKeyword)},t.isNodeFlagSet=a,t.isTypeFlagSet=a,t.isSymbolFlagSet=a,t.isObjectFlagSet=function(e,t){return 0!=(e.objectFlags&t)},t.isModifierFlagSet=function(e,t){return 0!=(Fr.getCombinedModifierFlags(e)&t)},t.getPreviousStatement=function(e){var t=e.parent;if(oa.isBlockLike(t)){var r=t.statements.indexOf(e);if(r>0)return t.statements[r-1]}},t.getNextStatement=function(e){var t=e.parent;if(oa.isBlockLike(t)){var r=t.statements.indexOf(e);if(r<t.statements.length)return t.statements[r+1]}},t.getPreviousToken=function(e,t){for(var n=e.parent;void 0!==n&&n.pos===e.pos;)n=n.parent;if(void 0!==n)e:for(;;){for(var i=n.getChildren(t),a=i.length-1;a>=0;--a){var o=i[a];if(o.pos<e.pos&&o.kind!==Fr.SyntaxKind.JSDocComment){if(r(o.kind))return o;n=o;continue e}}return}},t.getNextToken=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.getSourceFile();if(e.kind!==Fr.SyntaxKind.SourceFile&&e.kind!==Fr.SyntaxKind.EndOfFileToken){var r=e.end;for(e=e.parent;e.end===r;){if(void 0===e.parent)return e.endOfFileToken;e=e.parent}return s(e,r,t,!1)}},t.getTokenAtPosition=o,t.getCommentAtPosition=c,t.isPositionInComment=function(e,t,r){return void 0!==c(e,t,r)},t.commentText=function(e,t){return e.substring(t.pos+2,t.kind===Fr.SyntaxKind.SingleLineCommentTrivia?t.end:t.end-2)},t.getWrappedNodeAtPosition=function(e,t){if(!(e.node.pos>t||e.node.end<=t))e:for(;;){var r=!0,n=!1,i=void 0;try{for(var a,o=e.children[Symbol.iterator]();!(r=(a=o.next()).done);r=!0){var s=a.value;if(s.node.pos>t)return e;if(s.node.end>t){e=s;continue e}}}catch(e){n=!0,i=e}finally{try{r||null==o.return||o.return()}finally{if(n)throw i}}return e}},t.getPropertyName=l,t.forEachDestructuringIdentifier=_,t.forEachDeclaredVariable=function(e,t){var r=!0,n=!1,i=void 0;try{for(var a,o=e.declarations[Symbol.iterator]();!(r=(a=o.next()).done);r=!0){var s=a.value,c=void 0;if(c=s.name.kind===Fr.SyntaxKind.Identifier?t(s):_(s.name,t))return c}}catch(e){n=!0,i=e}finally{try{r||null==o.return||o.return()}finally{if(n)throw i}}},function(e){e[e.Var=0]="Var",e[e.Let=1]="Let",e[e.Const=2]="Const"}(t.VariableDeclarationKind||(t.VariableDeclarationKind={})),t.getVariableDeclarationKind=function(e){return e.flags&Fr.NodeFlags.Let?1:e.flags&Fr.NodeFlags.Const?2:0},t.isBlockScopedVariableDeclarationList=p,t.isBlockScopedVariableDeclaration=function(e){var t=e.parent;return t.kind===Fr.SyntaxKind.CatchClause||p(t)},t.isBlockScopedDeclarationStatement=function(e){switch(e.kind){case Fr.SyntaxKind.VariableStatement:return p(e.declarationList);case Fr.SyntaxKind.ClassDeclaration:case Fr.SyntaxKind.EnumDeclaration:case Fr.SyntaxKind.InterfaceDeclaration:case Fr.SyntaxKind.TypeAliasDeclaration:return!0;default:return!1}},t.isInSingleStatementContext=function(e){switch(e.parent.kind){case Fr.SyntaxKind.ForStatement:case Fr.SyntaxKind.ForInStatement:case Fr.SyntaxKind.ForOfStatement:case Fr.SyntaxKind.WhileStatement:case Fr.SyntaxKind.DoStatement:case Fr.SyntaxKind.IfStatement:case Fr.SyntaxKind.WithStatement:case Fr.SyntaxKind.LabeledStatement:return!0;default:return!1}},function(e){e[e.None=0]="None",e[e.Function=1]="Function",e[e.Block=2]="Block",e[e.Type=4]="Type",e[e.ConditionalType=8]="ConditionalType"}(t.ScopeBoundary||(t.ScopeBoundary={})),function(e){e[e.Function=1]="Function",e[e.Block=3]="Block",e[e.Type=7]="Type",e[e.InferType=8]="InferType"}(t.ScopeBoundarySelector||(t.ScopeBoundarySelector={})),t.isScopeBoundary=function(e){return g(e)||h(e)||f(e)},t.isTypeScopeBoundary=f,t.isFunctionScopeBoundary=g,t.isBlockScopeBoundary=h,t.hasOwnThisReference=function(e){switch(e.kind){case Fr.SyntaxKind.ClassDeclaration:case Fr.SyntaxKind.ClassExpression:case Fr.SyntaxKind.FunctionExpression:return!0;case Fr.SyntaxKind.FunctionDeclaration:return void 0!==e.body;case Fr.SyntaxKind.MethodDeclaration:case Fr.SyntaxKind.GetAccessor:case Fr.SyntaxKind.SetAccessor:return e.parent.kind===Fr.SyntaxKind.ObjectLiteralExpression;default:return!1}},t.isFunctionWithBody=function(e){switch(e.kind){case Fr.SyntaxKind.GetAccessor:case Fr.SyntaxKind.SetAccessor:case Fr.SyntaxKind.FunctionDeclaration:case Fr.SyntaxKind.MethodDeclaration:case Fr.SyntaxKind.Constructor:return void 0!==e.body;case Fr.SyntaxKind.FunctionExpression:case Fr.SyntaxKind.ArrowFunction:return!0;default:return!1}},t.forEachToken=v,t.forEachTokenWithTrivia=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.getSourceFile(),n=r.text,i=Fr.createScanner(r.languageVersion,!1,r.languageVariant,n);return v(e,(function(e){var a=e.kind===Fr.SyntaxKind.JsxText||e.pos===e.end?e.pos:e.getStart(r);if(a!==e.pos){i.setTextPos(e.pos);for(var o=i.scan(),s=i.getTokenPos();s<a;){var c=i.getTextPos();if(t(n,o,{pos:s,end:c},e.parent),c===a)break;o=i.scan(),s=i.getTokenPos()}}return t(n,e.kind,{end:e.end,pos:a},e.parent)}),r)},t.forEachComment=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.getSourceFile(),n=r.text,i=r.languageVariant!==Fr.LanguageVariant.JSX;return v(e,(function(e){if(e.pos!==e.end)return e.kind!==Fr.SyntaxKind.JsxText&&Fr.forEachLeadingCommentRange(n,0===e.pos?(Fr.getShebang(n)||"").length:e.pos,a),i||function(e){switch(e.kind){case Fr.SyntaxKind.CloseBraceToken:return e.parent.kind!==Fr.SyntaxKind.JsxExpression||!b(e.parent.parent);case Fr.SyntaxKind.GreaterThanToken:switch(e.parent.kind){case Fr.SyntaxKind.JsxOpeningElement:return e.end!==e.parent.end;case Fr.SyntaxKind.JsxOpeningFragment:return!1;case Fr.SyntaxKind.JsxSelfClosingElement:return e.end!==e.parent.end||!b(e.parent.parent);case Fr.SyntaxKind.JsxClosingElement:case Fr.SyntaxKind.JsxClosingFragment:return!b(e.parent.parent.parent)}}return!0}(e)?Fr.forEachTrailingCommentRange(n,e.end,a):void 0}),r);function a(e,r,i){t(n,{pos:e,end:r,kind:i})}},t.getLineRanges=function(e){for(var t=e.getLineStarts(),r=[],n=t.length,i=e.text,a=0,o=1;o<n;++o){for(var s=t[o],c=s;c>a&&Fr.isLineBreak(i.charCodeAt(c-1));--c);r.push({pos:a,end:s,contentLength:c-a}),a=s}return r.push({pos:a,end:e.end,contentLength:e.end-a}),r},t.getLineBreakStyle=function(e){var t=e.getLineStarts();return 1===t.length||t[1]<2||"\r"!==e.text[t[1]-2]?"\n":"\r\n"},t.isValidIdentifier=function(e){var t=x(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:Fr.ScriptTarget.Latest);return t.isIdentifier()&&t.getTextPos()===e.length&&0===t.getTokenPos()},t.isValidPropertyAccess=S,t.isValidPropertyName=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Fr.ScriptTarget.Latest;if(S(e,t))return!0;var r=x(e,t);return r.getTextPos()===e.length&&r.getToken()===Fr.SyntaxKind.NumericLiteral&&r.getTokenValue()===e},t.isValidNumericLiteral=function(e){var t=x(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:Fr.ScriptTarget.Latest);return t.getToken()===Fr.SyntaxKind.NumericLiteral&&t.getTextPos()===e.length&&0===t.getTokenPos()},t.isValidJsxIdentifier=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Fr.ScriptTarget.Latest;if(0===e.length)return!1;var r=e.codePointAt(0);if(!Fr.isIdentifierStart(r,t))return!1;for(var n=D(r);n<e.length;n+=D(r))if(r=e.codePointAt(n),!Fr.isIdentifierPart(r,t)&&45!==r)return!1;return!0},t.isNumericPropertyName=function(e){return String(+e)===e},t.isSameLine=T,function(e){e[e.None=0]="None",e[e.TaggedTemplate=1]="TaggedTemplate",e[e.Constructor=2]="Constructor",e[e.JsxElement=4]="JsxElement"}(t.SideEffectOptions||(t.SideEffectOptions={})),t.hasSideEffects=E,t.getDeclarationOfBindingElement=function(e){for(var t=e.parent.parent;t.kind===Fr.SyntaxKind.BindingElement;)t=t.parent.parent;return t},t.isExpressionValueUsed=function(e){for(;;){var t=e.parent;switch(t.kind){case Fr.SyntaxKind.CallExpression:case Fr.SyntaxKind.NewExpression:case Fr.SyntaxKind.ElementAccessExpression:case Fr.SyntaxKind.WhileStatement:case Fr.SyntaxKind.DoStatement:case Fr.SyntaxKind.WithStatement:case Fr.SyntaxKind.ThrowStatement:case Fr.SyntaxKind.ReturnStatement:case Fr.SyntaxKind.JsxExpression:case Fr.SyntaxKind.JsxSpreadAttribute:case Fr.SyntaxKind.JsxElement:case Fr.SyntaxKind.JsxFragment:case Fr.SyntaxKind.JsxSelfClosingElement:case Fr.SyntaxKind.ComputedPropertyName:case Fr.SyntaxKind.ArrowFunction:case Fr.SyntaxKind.ExportSpecifier:case Fr.SyntaxKind.ExportAssignment:case Fr.SyntaxKind.ImportDeclaration:case Fr.SyntaxKind.ExternalModuleReference:case Fr.SyntaxKind.Decorator:case Fr.SyntaxKind.TaggedTemplateExpression:case Fr.SyntaxKind.TemplateSpan:case Fr.SyntaxKind.ExpressionWithTypeArguments:case Fr.SyntaxKind.TypeOfExpression:case Fr.SyntaxKind.AwaitExpression:case Fr.SyntaxKind.YieldExpression:case Fr.SyntaxKind.LiteralType:case Fr.SyntaxKind.JsxAttributes:case Fr.SyntaxKind.JsxOpeningElement:case Fr.SyntaxKind.JsxClosingElement:case Fr.SyntaxKind.IfStatement:case Fr.SyntaxKind.CaseClause:case Fr.SyntaxKind.SwitchStatement:return!0;case Fr.SyntaxKind.PropertyAccessExpression:return t.expression===e;case Fr.SyntaxKind.QualifiedName:return t.left===e;case Fr.SyntaxKind.ShorthandPropertyAssignment:return t.objectAssignmentInitializer===e||!C(t);case Fr.SyntaxKind.PropertyAssignment:return t.initializer===e&&!C(t);case Fr.SyntaxKind.SpreadAssignment:case Fr.SyntaxKind.SpreadElement:case Fr.SyntaxKind.ArrayLiteralExpression:return!C(t);case Fr.SyntaxKind.ParenthesizedExpression:case Fr.SyntaxKind.AsExpression:case Fr.SyntaxKind.TypeAssertionExpression:case Fr.SyntaxKind.PostfixUnaryExpression:case Fr.SyntaxKind.PrefixUnaryExpression:case Fr.SyntaxKind.NonNullExpression:e=t;break;case Fr.SyntaxKind.ForStatement:return t.condition===e;case Fr.SyntaxKind.ForInStatement:case Fr.SyntaxKind.ForOfStatement:return t.expression===e;case Fr.SyntaxKind.ConditionalExpression:if(t.condition===e)return!0;e=t;break;case Fr.SyntaxKind.PropertyDeclaration:case Fr.SyntaxKind.BindingElement:case Fr.SyntaxKind.VariableDeclaration:case Fr.SyntaxKind.Parameter:case Fr.SyntaxKind.EnumMember:return t.initializer===e;case Fr.SyntaxKind.ImportEqualsDeclaration:return t.moduleReference===e;case Fr.SyntaxKind.CommaListExpression:if(t.elements[t.elements.length-1]!==e)return!1;e=t;break;case Fr.SyntaxKind.BinaryExpression:if(t.right===e){if(t.operatorToken.kind===Fr.SyntaxKind.CommaToken){e=t;break}return!0}switch(t.operatorToken.kind){case Fr.SyntaxKind.CommaToken:case Fr.SyntaxKind.EqualsToken:return!1;case Fr.SyntaxKind.EqualsEqualsEqualsToken:case Fr.SyntaxKind.EqualsEqualsToken:case Fr.SyntaxKind.ExclamationEqualsEqualsToken:case Fr.SyntaxKind.ExclamationEqualsToken:case Fr.SyntaxKind.InstanceOfKeyword:case Fr.SyntaxKind.PlusToken:case Fr.SyntaxKind.MinusToken:case Fr.SyntaxKind.AsteriskToken:case Fr.SyntaxKind.SlashToken:case Fr.SyntaxKind.PercentToken:case Fr.SyntaxKind.AsteriskAsteriskToken:case Fr.SyntaxKind.GreaterThanToken:case Fr.SyntaxKind.GreaterThanGreaterThanToken:case Fr.SyntaxKind.GreaterThanGreaterThanGreaterThanToken:case Fr.SyntaxKind.GreaterThanEqualsToken:case Fr.SyntaxKind.LessThanToken:case Fr.SyntaxKind.LessThanLessThanToken:case Fr.SyntaxKind.LessThanEqualsToken:case Fr.SyntaxKind.AmpersandToken:case Fr.SyntaxKind.BarToken:case Fr.SyntaxKind.CaretToken:case Fr.SyntaxKind.BarBarToken:case Fr.SyntaxKind.AmpersandAmpersandToken:case Fr.SyntaxKind.InKeyword:return!0;default:e=t}break;default:return!1}}},function(e){e[e.None=0]="None",e[e.Read=1]="Read",e[e.Write=2]="Write",e[e.Delete=4]="Delete",e[e.ReadWrite=3]="ReadWrite",e[e.Modification=6]="Modification"}(t.AccessKind||(t.AccessKind={})),t.getAccessKind=k,t.isReassignmentTarget=function(e){return 0!=(2&k(e))},t.canHaveJsDoc=N,t.getJsDoc=A,t.parseJsDocOfNode=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.getSourceFile();if(N(e)&&e.kind!==Fr.SyntaxKind.EndOfFileToken){var n=A(e,r);if(0!==n.length||!t)return n}return F(e,r,t)},function(e){e[e.ImportDeclaration=1]="ImportDeclaration",e[e.ImportEquals=2]="ImportEquals",e[e.ExportFrom=4]="ExportFrom",e[e.DynamicImport=8]="DynamicImport",e[e.Require=16]="Require",e[e.ImportType=32]="ImportType",e[e.All=63]="All",e[e.AllImports=59]="AllImports",e[e.AllStaticImports=3]="AllStaticImports",e[e.AllImportExpressions=24]="AllImportExpressions",e[e.AllRequireLike=18]="AllRequireLike",e[e.AllNestedImports=56]="AllNestedImports",e[e.AllTopLevelImports=7]="AllTopLevelImports"}(t.ImportKind||(t.ImportKind={})),t.findImports=function(e,t){var r=[],n=!0,i=!1,a=void 0;try{for(var o,s=P(e,t)[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var c=o.value;switch(c.kind){case Fr.SyntaxKind.ImportDeclaration:u(c.moduleSpecifier);break;case Fr.SyntaxKind.ImportEqualsDeclaration:u(c.moduleReference.expression);break;case Fr.SyntaxKind.ExportDeclaration:u(c.moduleSpecifier);break;case Fr.SyntaxKind.CallExpression:u(c.arguments[0]);break;case Fr.SyntaxKind.ImportType:oa.isLiteralTypeNode(c.argument)&&u(c.argument.literal);break;default:throw new Error("unexpected node")}}}catch(e){i=!0,a=e}finally{try{n||null==s.return||s.return()}finally{if(i)throw a}}return r;function u(e){oa.isTextualLiteral(e)&&r.push(e)}},t.findImportLikeNodes=P;var w=function(){function e(t,r){m(this,e),this._sourceFile=t,this._options=r,this._result=[]}return y(e,[{key:"find",value:function(){return this._sourceFile.isDeclarationFile&&(this._options&=-25),7&this._options&&this._findImports(this._sourceFile.statements),56&this._options&&this._findNestedImports(),this._result}},{key:"_findImports",value:function(e){var t=!0,r=!1,n=void 0;try{for(var i,a=e[Symbol.iterator]();!(t=(i=a.next()).done);t=!0){var o=i.value;oa.isImportDeclaration(o)?1&this._options&&this._result.push(o):oa.isImportEqualsDeclaration(o)?2&this._options&&o.moduleReference.kind===Fr.SyntaxKind.ExternalModuleReference&&this._result.push(o):oa.isExportDeclaration(o)?void 0!==o.moduleSpecifier&&4&this._options&&this._result.push(o):oa.isModuleDeclaration(o)&&this._findImportsInModule(o)}}catch(e){r=!0,n=e}finally{try{t||null==a.return||a.return()}finally{if(r)throw n}}}},{key:"_findImportsInModule",value:function(e){if(void 0!==e.body)return e.body.kind===Fr.SyntaxKind.ModuleDeclaration?this._findImportsInModule(e.body):void this._findImports(e.body.statements)}},{key:"_findNestedImports",value:function(){var e;e=16==(56&this._options)?/\brequire\s*[</(]/g:16&this._options?/\b(?:import|require)\s*[</(]/g:/\bimport\s*[</(]/g;for(var t=0!=(this._sourceFile.flags&Fr.NodeFlags.JavaScriptFile),r=e.exec(this._sourceFile.text);null!==r;r=e.exec(this._sourceFile.text)){var n=s(this._sourceFile,r.index,this._sourceFile,"i"===r[0][0]&&t);if(n.kind===Fr.SyntaxKind.ImportKeyword){if(n.end-"import".length!==r.index)continue;switch(n.parent.kind){case Fr.SyntaxKind.ImportType:this._result.push(n.parent);break;case Fr.SyntaxKind.CallExpression:1===n.parent.arguments.length&&this._result.push(n.parent)}}else n.kind===Fr.SyntaxKind.Identifier&&n.end-"require".length===r.index&&n.parent.kind===Fr.SyntaxKind.CallExpression&&n.parent.expression===n&&1===n.parent.arguments.length&&this._result.push(n.parent)}}}]),e}();function I(e){for(;e.kind===Fr.SyntaxKind.ModuleBlock;){do{e=e.parent}while(e.flags&Fr.NodeFlags.NestedNamespace);if(i(e.modifiers,Fr.SyntaxKind.DeclareKeyword))return!0;e=e.parent}return!1}function O(e,t){return(e.strict?!1!==e[t]:!0===e[t])&&("strictPropertyInitialization"!==t||O(e,"strictNullChecks"))}function M(e){return oa.isTypeReferenceNode(e.type)&&e.type.typeName.kind===Fr.SyntaxKind.Identifier&&"const"===e.type.typeName.escapedText}function L(e){return 3===e.arguments.length&&oa.isEntityNameExpression(e.arguments[0])&&oa.isNumericOrStringLikeLiteral(e.arguments[1])&&oa.isPropertyAccessExpression(e.expression)&&"defineProperty"===e.expression.name.escapedText&&oa.isIdentifier(e.expression.expression)&&"Object"===e.expression.expression.escapedText}function R(e){return Fr.isPropertyAccessExpression(e)&&Fr.isIdentifier(e.expression)&&"Symbol"===e.expression.escapedText}function B(e){return{displayName:"[Symbol.".concat(e.name.text,"]"),symbolName:"__@"+e.name.text}}function j(e,t){var r={known:!0,names:[]};if(R(e=K(e)))r.names.push(B(e));else{var n=t.getTypeAtLocation(e),i=!0,a=!1,o=void 0;try{for(var s,c=fa.unionTypeParts(t.getBaseConstraintOfType(n)||n)[Symbol.iterator]();!(i=(s=c.next()).done);i=!0){var u=s.value,l=fa.getPropertyNameFromType(u);l?r.names.push(l):r.known=!1}}catch(e){a=!0,o=e}finally{try{i||null==c.return||c.return()}finally{if(a)throw o}}}return r}function K(e){for(;e.kind===Fr.SyntaxKind.ParenthesizedExpression;)e=e.expression;return e}t.isStatementInAmbientContext=function(e){for(;e.flags&Fr.NodeFlags.NestedNamespace;)e=e.parent;return i(e.modifiers,Fr.SyntaxKind.DeclareKeyword)||I(e.parent)},t.isAmbientModuleBlock=I,t.getIIFE=function(e){for(var t=e.parent;t.kind===Fr.SyntaxKind.ParenthesizedExpression;)t=t.parent;return oa.isCallExpression(t)&&e.end<=t.expression.end?t:void 0},t.isStrictCompilerOptionEnabled=O,t.isCompilerOptionEnabled=function e(t,r){switch(r){case"stripInternal":return!0===t.stripInternal&&e(t,"declaration");case"declaration":return t.declaration||e(t,"composite");case"incremental":return void 0===t.incremental?e(t,"composite"):t.incremental;case"skipDefaultLibCheck":return t.skipDefaultLibCheck||e(t,"skipLibCheck");case"suppressImplicitAnyIndexErrors":return!0===t.suppressImplicitAnyIndexErrors&&e(t,"noImplicitAny");case"allowSyntheticDefaultImports":return void 0!==t.allowSyntheticDefaultImports?t.allowSyntheticDefaultImports:e(t,"esModuleInterop")||t.module===Fr.ModuleKind.System;case"noImplicitAny":case"noImplicitThis":case"strictNullChecks":case"strictFunctionTypes":case"strictPropertyInitialization":case"alwaysStrict":case"strictBindCallApply":return O(t,r)}return!0===t[r]},t.isAmbientModule=function(e){return e.name.kind===Fr.SyntaxKind.StringLiteral||0!=(e.flags&Fr.NodeFlags.GlobalAugmentation)},t.getCheckJsDirective=function(e){var t;return Fr.forEachLeadingCommentRange(e,(Fr.getShebang(e)||"").length,(function(r,n,i){if(i===Fr.SyntaxKind.SingleLineCommentTrivia){var a=e.slice(r,n),o=/^\/{2,3}\s*@ts-(no)?check(?:\s|$)/i.exec(a);null!==o&&(t={pos:r,end:n,enabled:void 0===o[1]})}})),t},t.isConstAssertion=M,t.isInConstContext=function(e){for(var t=e;;){var r=t.parent;e:switch(r.kind){case Fr.SyntaxKind.TypeAssertionExpression:case Fr.SyntaxKind.AsExpression:return M(r);case Fr.SyntaxKind.PrefixUnaryExpression:if(t.kind!==Fr.SyntaxKind.NumericLiteral)return!1;switch(r.operator){case Fr.SyntaxKind.PlusToken:case Fr.SyntaxKind.MinusToken:t=r;break e;default:return!1}case Fr.SyntaxKind.PropertyAssignment:if(r.initializer!==t)return!1;t=r.parent;break;case Fr.SyntaxKind.ShorthandPropertyAssignment:t=r.parent;break;case Fr.SyntaxKind.ParenthesizedExpression:case Fr.SyntaxKind.ArrayLiteralExpression:case Fr.SyntaxKind.ObjectLiteralExpression:t=r;break;default:return!1}}},t.isReadonlyAssignmentDeclaration=function(e,t){if(!L(e))return!1;var r=t.getTypeAtLocation(e.arguments[2]);if(void 0===r.getProperty("value"))return void 0===r.getProperty("set");var n=r.getProperty("writable");if(void 0===n)return!1;var i=void 0!==n.valueDeclaration&&oa.isPropertyAssignment(n.valueDeclaration)?t.getTypeAtLocation(n.valueDeclaration.initializer):t.getTypeOfSymbolAtLocation(n,e.arguments[2]);return fa.isBooleanLiteralType(i,!1)},t.isBindableObjectDefinePropertyCall=L,t.isWellKnownSymbolLiterally=R,t.getPropertyNameOfWellKnownSymbol=B,t.getLateBoundPropertyNames=j,t.getLateBoundPropertyNamesOfPropertyName=function(e,t){var r=l(e);return void 0!==r?{known:!0,names:[{displayName:r,symbolName:Fr.escapeLeadingUnderscores(r)}]}:j(e.expression,t)},t.getSingleLateBoundPropertyNameOfPropertyName=function(e,t){var r=l(e);if(void 0!==r)return{displayName:r,symbolName:Fr.escapeLeadingUnderscores(r)};var n=e.expression;return R(n)?B(n):fa.getPropertyNameFromType(t.getTypeAtLocation(n))},t.unwrapParentheses=K}));i(ma);ma.getChildOfKind,ma.isTokenKind,ma.isNodeKind,ma.isAssignmentKind,ma.isTypeNodeKind,ma.isJsDocKind,ma.isKeywordKind,ma.isThisParameter,ma.getModifier,ma.hasModifier,ma.isParameterProperty,ma.hasAccessModifier,ma.isNodeFlagSet,ma.isTypeFlagSet,ma.isSymbolFlagSet,ma.isObjectFlagSet,ma.isModifierFlagSet,ma.getPreviousStatement,ma.getNextStatement,ma.getPreviousToken,ma.getNextToken,ma.getTokenAtPosition,ma.getCommentAtPosition,ma.isPositionInComment,ma.commentText,ma.getWrappedNodeAtPosition,ma.getPropertyName,ma.forEachDestructuringIdentifier,ma.forEachDeclaredVariable,ma.VariableDeclarationKind,ma.getVariableDeclarationKind,ma.isBlockScopedVariableDeclarationList,ma.isBlockScopedVariableDeclaration,ma.isBlockScopedDeclarationStatement,ma.isInSingleStatementContext,ma.ScopeBoundary,ma.ScopeBoundarySelector,ma.isScopeBoundary,ma.isTypeScopeBoundary,ma.isFunctionScopeBoundary,ma.isBlockScopeBoundary,ma.hasOwnThisReference,ma.isFunctionWithBody,ma.forEachToken,ma.forEachTokenWithTrivia,ma.forEachComment,ma.getLineRanges,ma.getLineBreakStyle,ma.isValidIdentifier,ma.isValidPropertyAccess,ma.isValidPropertyName,ma.isValidNumericLiteral,ma.isValidJsxIdentifier,ma.isNumericPropertyName,ma.isSameLine,ma.SideEffectOptions,ma.hasSideEffects,ma.getDeclarationOfBindingElement,ma.isExpressionValueUsed,ma.AccessKind,ma.getAccessKind,ma.isReassignmentTarget,ma.canHaveJsDoc,ma.getJsDoc,ma.parseJsDocOfNode,ma.ImportKind,ma.findImports,ma.findImportLikeNodes,ma.isStatementInAmbientContext,ma.isAmbientModuleBlock,ma.getIIFE,ma.isStrictCompilerOptionEnabled,ma.isCompilerOptionEnabled,ma.isAmbientModule,ma.getCheckJsDirective,ma.isConstAssertion,ma.isInConstContext,ma.isReadonlyAssignmentDeclaration,ma.isBindableObjectDefinePropertyCall,ma.isWellKnownSymbolLiterally,ma.getPropertyNameOfWellKnownSymbol,ma.getLateBoundPropertyNames,ma.getLateBoundPropertyNamesOfPropertyName,ma.getSingleLateBoundPropertyNameOfPropertyName,ma.unwrapParentheses;var ga=a((function(e,t){function r(e){var t=e.parent;switch(t.kind){case Fr.SyntaxKind.TypeReference:return e.originalKeywordKind!==Fr.SyntaxKind.ConstKeyword?2:void 0;case Fr.SyntaxKind.ExpressionWithTypeArguments:return t.parent.token===Fr.SyntaxKind.ImplementsKeyword||t.parent.parent.kind===Fr.SyntaxKind.InterfaceDeclaration?2:4;case Fr.SyntaxKind.TypeQuery:return 13;case Fr.SyntaxKind.QualifiedName:if(t.left===e)return function(e){var t=e.parent;for(;t.kind===Fr.SyntaxKind.QualifiedName;)t=t.parent;return t}(t).kind===Fr.SyntaxKind.TypeQuery?9:1;break;case Fr.SyntaxKind.ExportSpecifier:if(void 0===t.propertyName||t.propertyName===e)return 7;break;case Fr.SyntaxKind.ExportAssignment:return 7;case Fr.SyntaxKind.BindingElement:if(t.initializer===e)return 5;break;case Fr.SyntaxKind.Parameter:case Fr.SyntaxKind.EnumMember:case Fr.SyntaxKind.PropertyDeclaration:case Fr.SyntaxKind.VariableDeclaration:case Fr.SyntaxKind.PropertyAssignment:case Fr.SyntaxKind.PropertyAccessExpression:case Fr.SyntaxKind.ImportEqualsDeclaration:if(t.name!==e)return 5;break;case Fr.SyntaxKind.JsxAttribute:case Fr.SyntaxKind.FunctionDeclaration:case Fr.SyntaxKind.FunctionExpression:case Fr.SyntaxKind.NamespaceImport:case Fr.SyntaxKind.ClassDeclaration:case Fr.SyntaxKind.ClassExpression:case Fr.SyntaxKind.ModuleDeclaration:case Fr.SyntaxKind.MethodDeclaration:case Fr.SyntaxKind.EnumDeclaration:case Fr.SyntaxKind.GetAccessor:case Fr.SyntaxKind.SetAccessor:case Fr.SyntaxKind.LabeledStatement:case Fr.SyntaxKind.BreakStatement:case Fr.SyntaxKind.ContinueStatement:case Fr.SyntaxKind.ImportClause:case Fr.SyntaxKind.ImportSpecifier:case Fr.SyntaxKind.TypePredicate:case Fr.SyntaxKind.MethodSignature:case Fr.SyntaxKind.PropertySignature:case Fr.SyntaxKind.NamespaceExportDeclaration:case Fr.SyntaxKind.InterfaceDeclaration:case Fr.SyntaxKind.TypeAliasDeclaration:case Fr.SyntaxKind.TypeParameter:break;default:return 5}}function n(e){switch(e.parent.kind){case Fr.SyntaxKind.TypeParameter:case Fr.SyntaxKind.InterfaceDeclaration:case Fr.SyntaxKind.TypeAliasDeclaration:return 2;case Fr.SyntaxKind.ClassDeclaration:case Fr.SyntaxKind.ClassExpression:return 6;case Fr.SyntaxKind.EnumDeclaration:return 7;case Fr.SyntaxKind.NamespaceImport:case Fr.SyntaxKind.ImportClause:return 15;case Fr.SyntaxKind.ImportEqualsDeclaration:case Fr.SyntaxKind.ImportSpecifier:return e.parent.name===e?15:void 0;case Fr.SyntaxKind.ModuleDeclaration:return 1;case Fr.SyntaxKind.Parameter:if(e.parent.parent.kind===Fr.SyntaxKind.IndexSignature||e.originalKeywordKind===Fr.SyntaxKind.ThisKeyword)return;case Fr.SyntaxKind.BindingElement:case Fr.SyntaxKind.VariableDeclaration:return e.parent.name===e?4:void 0;case Fr.SyntaxKind.FunctionDeclaration:case Fr.SyntaxKind.FunctionExpression:return 4}}Object.defineProperty(t,"__esModule",{value:!0}),function(e){e[e.Namespace=1]="Namespace",e[e.Type=2]="Type",e[e.Value=4]="Value",e[e.Import=8]="Import",e[e.Any=7]="Any"}(t.DeclarationDomain||(t.DeclarationDomain={})),function(e){e[e.Namespace=1]="Namespace",e[e.Type=2]="Type",e[e.Value=4]="Value",e[e.ValueOrNamespace=5]="ValueOrNamespace",e[e.Any=7]="Any",e[e.TypeQuery=8]="TypeQuery"}(t.UsageDomain||(t.UsageDomain={})),t.getUsageDomain=r,t.getDeclarationDomain=n,t.collectVariableUsage=function(e){return(new h).getUsage(e)};var i=function(){function e(t){m(this,e),this._global=t,this._variables=new Map,this._uses=[],this._namespaceScopes=void 0,this._enumScopes=void 0}return y(e,[{key:"addVariable",value:function(e,t,r,n,i){var a=this.getDestinationScope(r).getVariables(),o={domain:i,exported:n,declaration:t},s=a.get(e);void 0===s?a.set(e,{domain:i,declarations:[o],uses:[]}):(s.domain|=i,s.declarations.push(o))}},{key:"addUse",value:function(e){this._uses.push(e)}},{key:"getVariables",value:function(){return this._variables}},{key:"getFunctionScope",value:function(){return this}},{key:"end",value:function(e){var t=this;void 0!==this._namespaceScopes&&this._namespaceScopes.forEach((function(t){return t.finish(e)})),this._namespaceScopes=this._enumScopes=void 0,this._applyUses(),this._variables.forEach((function(r){var n=!0,i=!1,a=void 0;try{for(var o,s=r.declarations[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var c=o.value,u={declarations:[],domain:c.domain,exported:c.exported,inGlobalScope:t._global,uses:[]},l=!0,_=!1,d=void 0;try{for(var p,f=r.declarations[Symbol.iterator]();!(l=(p=f.next()).done);l=!0){var m=p.value;m.domain&c.domain&&u.declarations.push(m.declaration)}}catch(e){_=!0,d=e}finally{try{l||null==f.return||f.return()}finally{if(_)throw d}}var g=!0,y=!1,h=void 0;try{for(var v,b=r.uses[Symbol.iterator]();!(g=(v=b.next()).done);g=!0){var x=v.value;x.domain&c.domain&&u.uses.push(x)}}catch(e){y=!0,h=e}finally{try{g||null==b.return||b.return()}finally{if(y)throw h}}e(u,c.declaration,t)}}catch(e){i=!0,a=e}finally{try{n||null==s.return||s.return()}finally{if(i)throw a}}}))}},{key:"markExported",value:function(e){}},{key:"createOrReuseNamespaceScope",value:function(e,t,r,n){var i;return void 0===this._namespaceScopes?this._namespaceScopes=new Map:i=this._namespaceScopes.get(e),void 0===i?(i=new g(r,n,this),this._namespaceScopes.set(e,i)):i.refresh(r,n),i}},{key:"createOrReuseEnumScope",value:function(e,t){var r;return void 0===this._enumScopes?this._enumScopes=new Map:r=this._enumScopes.get(e),void 0===r&&(r=new s(this),this._enumScopes.set(e,r)),r}},{key:"_applyUses",value:function(){var e=!0,t=!1,r=void 0;try{for(var n,i=this._uses[Symbol.iterator]();!(e=(n=i.next()).done);e=!0){var a=n.value;this._applyUse(a)||this._addUseToParent(a)}}catch(e){t=!0,r=e}finally{try{e||null==i.return||i.return()}finally{if(t)throw r}}this._uses=[]}},{key:"_applyUse",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this._variables,r=t.get(e.location.text);return void 0!==r&&0!=(r.domain&e.domain)&&(r.uses.push(e),!0)}},{key:"_addUseToParent",value:function(e){}}]),e}(),a=function(e){function t(e,r){var n;return m(this,t),(n=S(this,b(t).call(this,r)))._exportAll=e,n._exports=void 0,n._innerScope=new o(D(n),1),n}return v(t,e),y(t,[{key:"addVariable",value:function(e,r,n,i,a){return 8&a?T(b(t.prototype),"addVariable",this).call(this,e,r,n,i,a):this._innerScope.addVariable(e,r,n,i,a)}},{key:"addUse",value:function(e,r){return r===this._innerScope?T(b(t.prototype),"addUse",this).call(this,e):this._innerScope.addUse(e)}},{key:"markExported",value:function(e){void 0===this._exports?this._exports=[e.text]:this._exports.push(e.text)}},{key:"end",value:function(e){var r=this;return this._innerScope.end((function(t,n){return t.exported=t.exported||r._exportAll||void 0!==r._exports&&r._exports.includes(n.text),t.inGlobalScope=r._global,e(t,n,r)})),T(b(t.prototype),"end",this).call(this,(function(t,n,i){return t.exported=t.exported||i===r&&void 0!==r._exports&&r._exports.includes(n.text),e(t,n,i)}))}},{key:"getDestinationScope",value:function(){return this}}]),t}(i),o=function(e){function t(e,r){var n;return m(this,t),(n=S(this,b(t).call(this,!1)))._parent=e,n._boundary=r,n}return v(t,e),y(t,[{key:"_addUseToParent",value:function(e){return this._parent.addUse(e,this)}},{key:"getDestinationScope",value:function(e){return this._boundary&e?this:this._parent.getDestinationScope(e)}}]),t}(i),s=function(e){function t(e){return m(this,t),S(this,b(t).call(this,e,1))}return v(t,e),y(t,[{key:"end",value:function(){this._applyUses()}}]),t}(o),c=function(e){function t(e){var r;return m(this,t),(r=S(this,b(t).call(this,e,8)))._state=0,r}return v(t,e),y(t,[{key:"updateState",value:function(e){this._state=e}},{key:"addUse",value:function(e){if(2!==this._state)return this._parent.addUse(e,this);this._uses.push(e)}}]),t}(o),u=function(e){function t(e){return m(this,t),S(this,b(t).call(this,e,1))}return v(t,e),y(t,[{key:"beginBody",value:function(){this._applyUses()}}]),t}(o),l=function(e){function t(e,r,n){var i;return m(this,t),(i=S(this,b(t).call(this,n,1)))._name=e,i._domain=r,i}return v(t,e),y(t,[{key:"end",value:function(e){return this._innerScope.end(e),e({declarations:[this._name],domain:this._domain,exported:!1,uses:this._uses,inGlobalScope:!1},this._name,this)}},{key:"addUse",value:function(e,t){return t!==this._innerScope?this._innerScope.addUse(e):e.domain&this._domain&&e.location.text===this._name.text?void this._uses.push(e):this._parent.addUse(e,this)}},{key:"getFunctionScope",value:function(){return this._innerScope}},{key:"getDestinationScope",value:function(){return this._innerScope}}]),t}(o),_=function(e){function t(e,r){var n;return m(this,t),(n=S(this,b(t).call(this,e,4,r)))._innerScope=new u(D(n)),n}return v(t,e),y(t,[{key:"beginBody",value:function(){return this._innerScope.beginBody()}}]),t}(l),d=function(e){function t(e,r){var n;return m(this,t),(n=S(this,b(t).call(this,e,6,r)))._innerScope=new o(D(n),1),n}return v(t,e),t}(l),p=function(e){function t(e,r){var n;return m(this,t),(n=S(this,b(t).call(this,r,2)))._functionScope=e,n}return v(t,e),y(t,[{key:"getFunctionScope",value:function(){return this._functionScope}}]),t}(o);function f(e){return{declaration:e,exported:!0,domain:n(e)}}var g=function(e){function t(e,r,n){var i;return m(this,t),(i=S(this,b(t).call(this,n,1)))._ambient=e,i._hasExport=r,i._innerScope=new o(D(i),1),i._exports=void 0,i}return v(t,e),y(t,[{key:"finish",value:function(e){return T(b(t.prototype),"end",this).call(this,e)}},{key:"end",value:function(e){var t=this;this._innerScope.end((function(r,n,i){if(i!==t._innerScope||!r.exported&&(!t._ambient||void 0!==t._exports&&!t._exports.has(n.text)))return e(r,n,i);var a=t._variables.get(n.text);if(void 0===a)t._variables.set(n.text,{declarations:r.declarations.map(f),domain:r.domain,uses:E(r.uses)});else{var o=!0,s=!1,c=void 0;try{e:for(var u,l=r.declarations[Symbol.iterator]();!(o=(u=l.next()).done);o=!0){var _=u.value,d=!0,p=!1,m=void 0;try{for(var g,y=a.declarations[Symbol.iterator]();!(d=(g=y.next()).done);d=!0){if(g.value.declaration===_)continue e}}catch(e){p=!0,m=e}finally{try{d||null==y.return||y.return()}finally{if(p)throw m}}a.declarations.push(f(_))}}catch(e){s=!0,c=e}finally{try{o||null==l.return||l.return()}finally{if(s)throw c}}a.domain|=r.domain;var h=!0,v=!1,b=void 0;try{for(var x,D=r.uses[Symbol.iterator]();!(h=(x=D.next()).done);h=!0){var S=x.value;a.uses.includes(S)||a.uses.push(S)}}catch(e){v=!0,b=e}finally{try{h||null==D.return||D.return()}finally{if(v)throw b}}}})),this._applyUses(),this._innerScope=new o(this,1)}},{key:"createOrReuseNamespaceScope",value:function(e,r,n,i){return r||this._ambient&&!this._hasExport?T(b(t.prototype),"createOrReuseNamespaceScope",this).call(this,e,r,n||this._ambient,i):this._innerScope.createOrReuseNamespaceScope(e,r,n||this._ambient,i)}},{key:"createOrReuseEnumScope",value:function(e,r){return r||this._ambient&&!this._hasExport?T(b(t.prototype),"createOrReuseEnumScope",this).call(this,e,r):this._innerScope.createOrReuseEnumScope(e,r)}},{key:"addUse",value:function(e,t){if(t!==this._innerScope)return this._innerScope.addUse(e);this._uses.push(e)}},{key:"refresh",value:function(e,t){this._ambient=e,this._hasExport=t}},{key:"markExported",value:function(e,t){void 0===this._exports&&(this._exports=new Set),this._exports.add(e.text)}},{key:"getDestinationScope",value:function(){return this._innerScope}}]),t}(o);var h=function(){function e(){m(this,e),this._result=new Map}return y(e,[{key:"getUsage",value:function(e){var t=this,n=function(e,r){t._result.set(r,e)},i=Fr.isExternalModule(e);this._scope=new a(e.isDeclarationFile&&i&&!C(e),!i);var s=function e(i){if(ma.isBlockScopeBoundary(i))return c(i,new p(t._scope.getFunctionScope(),t._scope),u);switch(i.kind){case Fr.SyntaxKind.ClassExpression:return c(i,void 0!==i.name?new d(i.name,t._scope):new o(t._scope,1));case Fr.SyntaxKind.ClassDeclaration:return t._handleDeclaration(i,!0,6),c(i,new o(t._scope,1));case Fr.SyntaxKind.InterfaceDeclaration:case Fr.SyntaxKind.TypeAliasDeclaration:return t._handleDeclaration(i,!0,2),c(i,new o(t._scope,4));case Fr.SyntaxKind.EnumDeclaration:return t._handleDeclaration(i,!0,7),c(i,t._scope.createOrReuseEnumScope(i.name.text,ma.hasModifier(i.modifiers,Fr.SyntaxKind.ExportKeyword)));case Fr.SyntaxKind.ModuleDeclaration:return t._handleModule(i,c);case Fr.SyntaxKind.MappedType:return c(i,new o(t._scope,4));case Fr.SyntaxKind.FunctionExpression:case Fr.SyntaxKind.ArrowFunction:case Fr.SyntaxKind.Constructor:case Fr.SyntaxKind.MethodDeclaration:case Fr.SyntaxKind.FunctionDeclaration:case Fr.SyntaxKind.GetAccessor:case Fr.SyntaxKind.SetAccessor:case Fr.SyntaxKind.MethodSignature:case Fr.SyntaxKind.CallSignature:case Fr.SyntaxKind.ConstructSignature:case Fr.SyntaxKind.ConstructorType:case Fr.SyntaxKind.FunctionType:return t._handleFunctionLikeDeclaration(i,e,n);case Fr.SyntaxKind.ConditionalType:return t._handleConditionalType(i,e,n);case Fr.SyntaxKind.VariableDeclarationList:t._handleVariableDeclaration(i);break;case Fr.SyntaxKind.Parameter:i.parent.kind===Fr.SyntaxKind.IndexSignature||i.name.kind===Fr.SyntaxKind.Identifier&&i.name.originalKeywordKind===Fr.SyntaxKind.ThisKeyword||t._handleBindingName(i.name,!1,!1);break;case Fr.SyntaxKind.EnumMember:t._scope.addVariable(ma.getPropertyName(i.name),i.name,1,!0,4);break;case Fr.SyntaxKind.ImportClause:case Fr.SyntaxKind.ImportSpecifier:case Fr.SyntaxKind.NamespaceImport:case Fr.SyntaxKind.ImportEqualsDeclaration:t._handleDeclaration(i,!1,15);break;case Fr.SyntaxKind.TypeParameter:t._scope.addVariable(i.name.text,i.name,i.parent.kind===Fr.SyntaxKind.InferType?8:7,!1,2);break;case Fr.SyntaxKind.ExportSpecifier:return void 0!==i.propertyName?t._scope.markExported(i.propertyName,i.name):t._scope.markExported(i.name);case Fr.SyntaxKind.ExportAssignment:if(i.expression.kind===Fr.SyntaxKind.Identifier)return t._scope.markExported(i.expression);break;case Fr.SyntaxKind.Identifier:var a=r(i);return void(void 0!==a&&t._scope.addUse({domain:a,location:i}))}return Fr.forEachChild(i,e)},c=function(e,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:l,a=t._scope;t._scope=r,i(e),t._scope.end(n),t._scope=a},u=function(e){return e.kind===Fr.SyntaxKind.CatchClause&&void 0!==e.variableDeclaration&&t._handleBindingName(e.variableDeclaration.name,!0,!1),Fr.forEachChild(e,s)};return Fr.forEachChild(e,s),this._scope.end(n),this._result;function l(e){return Fr.forEachChild(e,s)}}},{key:"_handleConditionalType",value:function(e,t,r){var n=this._scope,i=this._scope=new c(n);t(e.checkType),i.updateState(1),t(e.extendsType),i.updateState(2),t(e.trueType),i.updateState(3),t(e.falseType),i.end(r),this._scope=n}},{key:"_handleFunctionLikeDeclaration",value:function(e,t,r){void 0!==e.decorators&&e.decorators.forEach(t);var n=this._scope;e.kind===Fr.SyntaxKind.FunctionDeclaration&&this._handleDeclaration(e,!1,4);var i=this._scope=e.kind===Fr.SyntaxKind.FunctionExpression&&void 0!==e.name?new _(e.name,n):new u(n);void 0!==e.name&&t(e.name),void 0!==e.typeParameters&&e.typeParameters.forEach(t),e.parameters.forEach(t),void 0!==e.type&&t(e.type),void 0!==e.body&&(i.beginBody(),t(e.body)),i.end(r),this._scope=n}},{key:"_handleModule",value:function(e,t){if(e.flags&Fr.NodeFlags.GlobalAugmentation)return t(e,this._scope.createOrReuseNamespaceScope("-global",!1,!0,!1));if(e.name.kind===Fr.SyntaxKind.Identifier){var r=function(e){return e.parent.kind===Fr.SyntaxKind.ModuleDeclaration||ma.hasModifier(e.modifiers,Fr.SyntaxKind.ExportKeyword)}(e);this._scope.addVariable(e.name.text,e.name,1,r,5);var n=ma.hasModifier(e.modifiers,Fr.SyntaxKind.DeclareKeyword);return t(e,this._scope.createOrReuseNamespaceScope(e.name.text,r,n,n&&x(e)))}return t(e,this._scope.createOrReuseNamespaceScope('"'.concat(e.name.text,'"'),!1,!0,x(e)))}},{key:"_handleDeclaration",value:function(e,t,r){void 0!==e.name&&this._scope.addVariable(e.name.text,e.name,t?3:1,ma.hasModifier(e.modifiers,Fr.SyntaxKind.ExportKeyword),r)}},{key:"_handleBindingName",value:function(e,t,r){var n=this;if(e.kind===Fr.SyntaxKind.Identifier)return this._scope.addVariable(e.text,e,t?3:1,r,4);ma.forEachDestructuringIdentifier(e,(function(e){n._scope.addVariable(e.name.text,e.name,t?3:1,r,4)}))}},{key:"_handleVariableDeclaration",value:function(e){var t=ma.isBlockScopedVariableDeclarationList(e),r=e.parent.kind===Fr.SyntaxKind.VariableStatement&&ma.hasModifier(e.parent.modifiers,Fr.SyntaxKind.ExportKeyword),n=!0,i=!1,a=void 0;try{for(var o,s=e.declarations[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var c=o.value;this._handleBindingName(c.name,t,r)}}catch(e){i=!0,a=e}finally{try{n||null==s.return||s.return()}finally{if(i)throw a}}}}]),e}();function x(e){return void 0!==e.body&&e.body.kind===Fr.SyntaxKind.ModuleBlock&&C(e.body)}function C(e){var t=!0,r=!1,n=void 0;try{for(var i,a=e.statements[Symbol.iterator]();!(t=(i=a.next()).done);t=!0){var o=i.value;if(o.kind===Fr.SyntaxKind.ExportDeclaration||o.kind===Fr.SyntaxKind.ExportAssignment)return!0}}catch(e){r=!0,n=e}finally{try{t||null==a.return||a.return()}finally{if(r)throw n}}return!1}}));i(ga);ga.DeclarationDomain,ga.UsageDomain,ga.getUsageDomain,ga.getDeclarationDomain,ga.collectVariableUsage;var ya=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.endsControlFlow=function(e){return n(e).end};var r={statements:[],end:!1};function n(e){return oa.isBlockLike(e)?a(e):i(e)}function i(e){switch(e.kind){case Fr.SyntaxKind.ReturnStatement:case Fr.SyntaxKind.ThrowStatement:case Fr.SyntaxKind.ContinueStatement:case Fr.SyntaxKind.BreakStatement:return{statements:[e],end:!0};case Fr.SyntaxKind.Block:return a(e);case Fr.SyntaxKind.ForStatement:case Fr.SyntaxKind.WhileStatement:return function(e){var t=e.kind===Fr.SyntaxKind.WhileStatement?o(e.expression):void 0===e.condition||o(e.condition);if(!1===t)return r;var n=s(i(e.statement),oa.isBreakOrContinueStatement);void 0===t&&(n.end=!1);return n}(e);case Fr.SyntaxKind.ForOfStatement:case Fr.SyntaxKind.ForInStatement:return function(e){var t=s(i(e.statement),oa.isBreakOrContinueStatement);return t.end=!1,t}(e);case Fr.SyntaxKind.DoStatement:return s(i(e.statement),oa.isBreakOrContinueStatement);case Fr.SyntaxKind.IfStatement:return function(e){switch(o(e.expression)){case!0:return i(e.thenStatement);case!1:return void 0===e.elseStatement?r:i(e.elseStatement)}var t=i(e.thenStatement);if(void 0===e.elseStatement)return{statements:t.statements,end:!1};var n=i(e.elseStatement);return{statements:[].concat(E(t.statements),E(n.statements)),end:t.end&&n.end}}(e);case Fr.SyntaxKind.SwitchStatement:return s(function(e){var t=!1,r={statements:[],end:!1},n=!0,i=!1,o=void 0;try{for(var s,c=e.caseBlock.clauses[Symbol.iterator]();!(n=(s=c.next()).done);n=!0){var u,l=s.value;l.kind===Fr.SyntaxKind.DefaultClause&&(t=!0);var _=a(l);r.end=_.end,(u=r.statements).push.apply(u,E(_.statements))}}catch(e){i=!0,o=e}finally{try{n||null==c.return||c.return()}finally{if(i)throw o}}t||(r.end=!1);return r}(e),oa.isBreakStatement);case Fr.SyntaxKind.TryStatement:return function(e){var t;if(void 0!==e.finallyBlock&&(t=a(e.finallyBlock)).end)return t;var r=a(e.tryBlock);if(void 0===e.catchClause)return{statements:t.statements.concat(r.statements),end:r.end};var n=a(e.catchClause.block);return{statements:r.statements.filter((function(e){return e.kind!==Fr.SyntaxKind.ThrowStatement})).concat(n.statements,void 0===t?[]:t.statements),end:r.end&&n.end}}(e);case Fr.SyntaxKind.LabeledStatement:return function(e,t){var r={statements:[],end:e.end},n=t.text,i=!0,a=!1,o=void 0;try{for(var s,c=e.statements[Symbol.iterator]();!(i=(s=c.next()).done);i=!0){var u=s.value;switch(u.kind){case Fr.SyntaxKind.BreakStatement:case Fr.SyntaxKind.ContinueStatement:if(void 0!==u.label&&u.label.text===n){r.end=!1;continue}}r.statements.push(u)}}catch(e){a=!0,o=e}finally{try{i||null==c.return||c.return()}finally{if(a)throw o}}return r}(i(e.statement),e.label);case Fr.SyntaxKind.WithStatement:return i(e.statement);default:return r}}function a(e){var t={statements:[],end:!1},r=!0,n=!1,a=void 0;try{for(var o,s=e.statements[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){var c,u=i(o.value);if((c=t.statements).push.apply(c,E(u.statements)),u.end){t.end=!0;break}}}catch(e){n=!0,a=e}finally{try{r||null==s.return||s.return()}finally{if(n)throw a}}return t}function o(e){switch(e.kind){case Fr.SyntaxKind.TrueKeyword:return!0;case Fr.SyntaxKind.FalseKeyword:return!1;default:return}}function s(e,t){var r={statements:[],end:e.end},n=!0,i=!1,a=void 0;try{for(var o,s=e.statements[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){var c=o.value;t(c)&&void 0===c.label?r.end=!1:r.statements.push(c)}}catch(e){i=!0,a=e}finally{try{n||null==s.return||s.return()}finally{if(i)throw a}}return r}t.getControlFlowEnd=n}));i(ya);ya.endsControlFlow,ya.getControlFlowEnd;var ha=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.convertAst=function(e){var t={node:e,parent:void 0,kind:Fr.SyntaxKind.SourceFile,children:[],next:void 0,skip:void 0},r=[],n=t,i=n;return Fr.forEachChild(e,(function e(t){r.push(t);var a=n;i.next=n={node:t,parent:a,kind:t.kind,children:[],next:void 0,skip:void 0},i!==a&&function(e,t){do{e.skip=t,e=e.parent}while(e!==t.parent)}(i,n),i=n,a.children.push(n),ma.isNodeKind(t.kind)&&Fr.forEachChild(t,e),n=a})),{wrapped:t,flat:r}}}));i(ha);ha.convertAst;var va=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),ra.__exportStar(ma,t),ra.__exportStar(ga,t),ra.__exportStar(ya,t),ra.__exportStar(fa,t),ra.__exportStar(ha,t)}));i(va);var ba=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),ra.__exportStar(da,t),ra.__exportStar(va,t)}));i(ba);var xa=a((function(e,t){var r=n&&n.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});var i=r(Fr);t.convertComments=function(e,t){var r=[];return ba.forEachComment(e,(function(n,a){var o=a.kind==i.SyntaxKind.SingleLineCommentTrivia?"Line":"Block",s=[a.pos,a.end],c=Gi.getLocFor(s[0],s[1],e),u=s[0]+2,l=a.kind===i.SyntaxKind.SingleLineCommentTrivia?s[1]-u:s[1]-u-2;r.push({type:o,value:t.substr(u,l),range:s,loc:c})}),e),r}}));i(xa);xa.convertComments;var Da=a((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.astConverter=function(e,t,r){var n=e.parseDiagnostics;if(n.length)throw Hi.convertError(n[0]);var i=new Hi.Converter(e,{errorOnUnknownASTType:t.errorOnUnknownASTType||!1,useJSXTextNode:t.useJSXTextNode||!1,shouldPreserveNodeMaps:r}),a=i.convertProgram();return t.tokens&&(a.tokens=Gi.convertTokens(e)),t.comment&&(a.comments=xa.convertComments(e,t.code)),{estree:a,astMaps:r?i.getASTMaps():void 0}}}));i(Da);Da.astConverter;var Sa=1e3,Ta=60*Sa,Ea=60*Ta,Ca=24*Ea,ka=7*Ca,Na=365.25*Ca,Aa=function(e,t){t=t||{};var r=f(e);if("string"===r&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^((?:\d+)?\-?\d?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!t)return;var r=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return r*Na;case"weeks":case"week":case"w":return r*ka;case"days":case"day":case"d":return r*Ca;case"hours":case"hour":case"hrs":case"hr":case"h":return r*Ea;case"minutes":case"minute":case"mins":case"min":case"m":return r*Ta;case"seconds":case"second":case"secs":case"sec":case"s":return r*Sa;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}(e);if("number"===r&&!1===isNaN(e))return t.long?function(e){var t=Math.abs(e);if(t>=Ca)return Fa(e,t,Ca,"day");if(t>=Ea)return Fa(e,t,Ea,"hour");if(t>=Ta)return Fa(e,t,Ta,"minute");if(t>=Sa)return Fa(e,t,Sa,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=Ca)return Math.round(e/Ca)+"d";if(t>=Ea)return Math.round(e/Ea)+"h";if(t>=Ta)return Math.round(e/Ta)+"m";if(t>=Sa)return Math.round(e/Sa)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))};function Fa(e,t,r,n){var i=t>=1.5*r;return Math.round(e/r)+" "+n+(i?"s":"")}var Pa=function(e){function t(e){for(var t=0,n=0;n<e.length;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return r.colors[Math.abs(t)%r.colors.length]}function r(e){var a;function o(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if(o.enabled){var i=o,s=Number(new Date),c=s-(a||s);i.diff=c,i.prev=a,i.curr=s,a=s,t[0]=r.coerce(t[0]),"string"!=typeof t[0]&&t.unshift("%O");var u=0;t[0]=t[0].replace(/%([a-zA-Z%])/g,(function(e,n){if("%%"===e)return e;u++;var a=r.formatters[n];if("function"==typeof a){var o=t[u];e=a.call(i,o),t.splice(u,1),u--}return e})),r.formatArgs.call(i,t),(i.log||r.log).apply(i,t)}}return o.namespace=e,o.enabled=r.enabled(e),o.useColors=r.useColors(),o.color=t(e),o.destroy=n,o.extend=i,"function"==typeof r.init&&r.init(o),r.instances.push(o),o}function n(){var e=r.instances.indexOf(this);return-1!==e&&(r.instances.splice(e,1),!0)}function i(e,t){var n=r(this.namespace+(void 0===t?":":t)+e);return n.log=this.log,n}function a(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return r.debug=r,r.default=r,r.coerce=function(e){if(e instanceof Error)return e.stack||e.message;return e},r.disable=function(){var e=[].concat(E(r.names.map(a)),E(r.skips.map(a).map((function(e){return"-"+e})))).join(",");return r.enable(""),e},r.enable=function(e){var t;r.save(e),r.names=[],r.skips=[];var n=("string"==typeof e?e:"").split(/[\s,]+/),i=n.length;for(t=0;t<i;t++)n[t]&&("-"===(e=n[t].replace(/\*/g,".*?"))[0]?r.skips.push(new RegExp("^"+e.substr(1)+"$")):r.names.push(new RegExp("^"+e+"$")));for(t=0;t<r.instances.length;t++){var a=r.instances[t];a.enabled=r.enabled(a.namespace)}},r.enabled=function(e){if("*"===e[e.length-1])return!0;var t,n;for(t=0,n=r.skips.length;t<n;t++)if(r.skips[t].test(e))return!1;for(t=0,n=r.names.length;t<n;t++)if(r.names[t].test(e))return!0;return!1},r.humanize=Aa,Object.keys(e).forEach((function(t){r[t]=e[t]})),r.instances=[],r.names=[],r.skips=[],r.formatters={},r.selectColor=t,r.enable(r.load()),r},wa=a((function(e,t){t.log=function(){var e;return"object"===("undefined"==typeof console?"undefined":f(console))&&console.log&&(e=console).log.apply(e,arguments)},t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;var r="color: "+this.color;t.splice(1,0,r,"color: inherit");var n=0,i=0;t[0].replace(/%[a-zA-Z%]/g,(function(e){"%%"!==e&&(n++,"%c"===e&&(i=n))})),t.splice(i,0,r)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){var e;try{e=t.storage.getItem("debug")}catch(e){}!e&&void 0!==Oe&&"env"in Oe&&(e=Oe.env.DEBUG);return e},t.useColors=function(){if("undefined"!=typeof window&&window.process&&("renderer"===window.process.type||window.process.__nwjs))return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},t.storage=function(){try{return localStorage}catch(e){}}(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],e.exports=Pa(t),e.exports.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}})),Ia=(wa.log,wa.formatArgs,wa.save,wa.load,wa.useColors,wa.storage,wa.colors,Object.freeze({__proto__:null,default:{}})),Oa=function(e,t){var r=(t=t||Oe.argv).indexOf("--"),n=/^--/.test(e)?"":"--",i=t.indexOf(n+e);return-1!==i&&(-1===r||i<r)},Ma=Oa("no-color")||Oa("no-colors")||Oa("color=false")?0:Oa("color=16m")||Oa("color=full")||Oa("color=truecolor")?3:Oa("color=256")?2:Oa("color")||Oa("colors")||Oa("color=true")||Oa("color=always")?1:Oe.stdout&&!Oe.stdout.isTTY?0:"win32"===Oe.platform?1:"CI"in Oe.env?"TRAVIS"in Oe.env||"Travis"===Oe.env.CI?1:0:"TEAMCITY_VERSION"in Oe.env?null===Oe.env.TEAMCITY_VERSION.match(/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/)?0:1:/^(screen|xterm)-256(?:color)?/.test(Oe.env.TERM)?2:/^screen|^xterm|^vt100|color|ansi|cygwin|linux/i.test(Oe.env.TERM)?1:"COLORTERM"in Oe.env?1:(Oe.env.TERM,0);0===Ma&&"FORCE_COLOR"in Oe.env&&(Ma=1);var La,Ra=Oe&&(0!==(La=Ma)&&{level:La,hasBasic:!0,has256:La>=2,has16m:La>=3}),Ba=o(Ia),ja=a((function(e,t){t.init=function(e){e.inspectOpts={};for(var r=Object.keys(t.inspectOpts),n=0;n<r.length;n++)e.inspectOpts[r[n]]=t.inspectOpts[r[n]]},t.log=function(){return Oe.stderr.write(kn.format.apply(kn,arguments)+"\n")},t.formatArgs=function(r){var n=this.namespace;if(this.useColors){var i=this.color,a="[3"+(i<8?i:"8;5;"+i),o=" ".concat(a,";1m").concat(n," ");r[0]=o+r[0].split("\n").join("\n"+o),r.push(a+"m+"+e.exports.humanize(this.diff)+"")}else r[0]=function(){if(t.inspectOpts.hideDate)return"";return(new Date).toISOString()+" "}()+n+" "+r[0]},t.save=function(e){e?Oe.env.DEBUG=e:delete Oe.env.DEBUG},t.load=function(){return Oe.env.DEBUG},t.useColors=function(){return"colors"in t.inspectOpts?Boolean(t.inspectOpts.colors):Ba.isatty(Oe.stderr.fd)},t.colors=[6,2,3,4,5,1];try{var r=Ra;r&&(r.stderr||r).level>=2&&(t.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch(e){}t.inspectOpts=Object.keys(Oe.env).filter((function(e){return/^debug_/i.test(e)})).reduce((function(e,t){var r=t.substring(6).toLowerCase().replace(/_([a-z])/g,(function(e,t){return t.toUpperCase()})),n=Oe.env[t];return n=!!/^(yes|on|true|enabled)$/i.test(n)||!/^(no|off|false|disabled)$/i.test(n)&&("null"===n?null:Number(n)),e[r]=n,e}),{}),e.exports=Pa(t);var n=e.exports.formatters;n.o=function(e){return this.inspectOpts.colors=this.useColors,kn.inspect(e,this.inspectOpts).replace(/\s*\n\s*/g," ")},n.O=function(e){return this.inspectOpts.colors=this.useColors,kn.inspect(e,this.inspectOpts)}})),Ka=(ja.init,ja.log,ja.formatArgs,ja.save,ja.load,ja.useColors,ja.colors,ja.inspectOpts,a((function(e){void 0===Oe||Oe.type,e.exports=wa}))),Ja=a((function(e,t){var r=n&&n.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},i=n&&n.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});var a=r(yr),o=i(Fr);t.DEFAULT_COMPILER_OPTIONS={allowNonTsExtensions:!0,allowJs:!0,checkJs:!0,noEmit:!0};var s=void 0===o.sys||o.sys.useCaseSensitiveFileNames?function(e){return a.default.normalize(e)}:function(e){return a.default.normalize(e).toLowerCase()};t.getCanonicalFileName=s,t.getTsconfigPath=function(e,t){return s(a.default.isAbsolute(e)?e:a.default.join(t.tsconfigRootDir||Oe.cwd(),e))},t.canonicalDirname=function(e){return a.default.dirname(e)},t.getScriptKind=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.filePath;switch(a.default.extname(t).toLowerCase()){case".ts":return o.ScriptKind.TS;case".tsx":return o.ScriptKind.TSX;case".js":return o.ScriptKind.JS;case".jsx":return o.ScriptKind.JSX;case".json":return o.ScriptKind.JSON;default:return e.jsx?o.ScriptKind.TSX:o.ScriptKind.TS}}}));i(Ja);Ja.DEFAULT_COMPILER_OPTIONS,Ja.getCanonicalFileName,Ja.getTsconfigPath,Ja.canonicalDirname,Ja.getScriptKind;var za=a((function(e,t){var r=n&&n.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},i=n&&n.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});var a=r(Ka),o=r(yr),s=i(Fr),c=a.default("typescript-eslint:typescript-estree:createDefaultProgram");t.createDefaultProgram=function(e,t){if(c("Getting default program for: %s",t.filePath||"unnamed file"),t.projects&&1===t.projects.length){var r=Ja.getTsconfigPath(t.projects[0],t),n=s.getParsedCommandLineOfConfigFile(r,Ja.DEFAULT_COMPILER_OPTIONS,Object.assign(Object.assign({},s.sys),{onUnRecoverableConfigFileDiagnostic:function(){}}));if(n){var i=s.createCompilerHost(n.options,!0),a=i.readFile;i.readFile=function(r){return o.default.normalize(r)===o.default.normalize(t.filePath)?e:a(r)};var u=s.createProgram([t.filePath],n.options,i),l=u.getSourceFile(t.filePath);return l&&{ast:l,program:u}}}}}));i(za);za.createDefaultProgram;var Ua=a((function(e,t){var r=n&&n.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},i=n&&n.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});var a=r(Ka),o=i(Fr),s=a.default("typescript-eslint:typescript-estree:createIsolatedProgram");t.createIsolatedProgram=function(e,t){s("Getting isolated program in %s mode for: %s",t.jsx?"TSX":"TS",t.filePath);var r={fileExists:function(){return!0},getCanonicalFileName:function(){return t.filePath},getCurrentDirectory:function(){return""},getDirectories:function(){return[]},getDefaultLibFileName:function(){return"lib.d.ts"},getNewLine:function(){return"\n"},getSourceFile:function(r){return o.createSourceFile(r,e,o.ScriptTarget.Latest,!0,Ja.getScriptKind(t,r))},readFile:function(){},useCaseSensitiveFileNames:function(){return!0},writeFile:function(){return null}},n=o.createProgram([t.filePath],Object.assign({noResolve:!0,target:o.ScriptTarget.Latest,jsx:t.jsx?o.JsxEmit.Preserve:void 0},Ja.DEFAULT_COMPILER_OPTIONS),r),i=n.getSourceFile(t.filePath);if(!i)throw new Error("Expected an ast to be returned for the single-file isolated program.");return{ast:i,program:n}}}));i(Ua);Ua.createIsolatedProgram;var Va=a((function(e,t){var r=n&&n.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},i=n&&n.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});var a=r(Ka),o=r(hr),s=r(yr),c=i(Fr),u=a.default("typescript-eslint:typescript-estree:createWatchProgram"),l=new Map,_=new Map,d=new Map,p=new Map,f=new Map,m=new Set;function g(e){return function(t,r){var n=Ja.getCanonicalFileName(s.default.normalize(t)),i=function(){var t=e.get(n);return t||(t=new Set,e.set(n,t)),t}();return i.add(r),{close:function(){i.delete(r)}}}}t.clearCaches=function(){l.clear(),_.clear(),d.clear(),m.clear(),p.clear(),f.clear()};var y={code:"",filePath:""};function h(e){throw new Error(c.flattenDiagnosticMessageText(e.messageText,c.sys.newLine))}function v(e,t){u("Creating watch program for %s.",e);var r=c.createWatchCompilerHost(e,Ja.DEFAULT_COMPILER_OPTIONS,c.sys,c.createSemanticDiagnosticsBuilderProgram,h,(function(){})),n=r.readFile;r.readFile=function(e,t){var r=Ja.getCanonicalFileName(e);return m.add(r),s.default.normalize(r)===s.default.normalize(y.filePath)?y.code:n(r,t)},r.onUnRecoverableConfigFileDiagnostic=h,r.afterProgramCreate=function(e){var t=e.getConfigFileParsingDiagnostics().filter((function(e){return e.category===c.DiagnosticCategory.Error&&18003!==e.code}));t.length>0&&h(t[0])},r.watchFile=g(_),r.watchDirectory=g(d);var i=r.onCachedDirectoryStructureHostCreate;r.onCachedDirectoryStructureHostCreate=function(e){var r=e.readDirectory;e.readDirectory=function(e,n,i,a,o){return r(e,n?n.concat(t.extraFileExtensions):void 0,i,a,o)},i(e)};var a=r.setTimeout;return r.setTimeout=function(e,t){if(250===t)return e(),null;for(var r=arguments.length,n=new Array(r>2?r-2:0),i=2;i<r;i++)n[i-2]=arguments[i];return a&&a.apply(void 0,[e,t].concat(n))},c.createWatchProgram(r)}function b(e,t,r){var n=e.getProgram().getProgram();if("true"===Oe.env.TSESTREE_NO_INVALIDATION)return n;(function(e){var t=o.default.statSync(e).mtimeMs,r=f.get(e);return f.set(e,t),void 0!==r&&Math.abs(r-t)>Number.EPSILON})(r)&&(u("tsconfig has changed - triggering program update. %s",r),_.get(r).forEach((function(e){return e(r,c.FileWatcherEventKind.Changed)})),p.delete(r));var i=n.getSourceFile(t);if(i)return n;u("File was not found in program - triggering folder update. %s",t);for(var a=Ja.canonicalDirname(t),s=null,l=a,m=!1;s!==l;){s=l;var g=d.get(s);if(g){g.forEach((function(e){return e(a,c.FileWatcherEventKind.Changed)})),m=!0;break}l=Ja.canonicalDirname(s)}if(!m)return u("No callback found for file, not part of this program. %s",t),null;if(p.delete(r),i=(n=e.getProgram().getProgram()).getSourceFile(t))return n;u("File was still not found in program after directory update - checking file deletions. %s",t);var y=n.getRootFileNames().find((function(e){return!o.default.existsSync(e)}));if(!y)return null;var h=_.get(Ja.getCanonicalFileName(y));return h?(u("Marking file as deleted. %s",y),h.forEach((function(e){return e(y,c.FileWatcherEventKind.Deleted)})),p.delete(r),(i=(n=e.getProgram().getProgram()).getSourceFile(t))?n:(u("File was still not found in program after deletion check, assuming it is not part of this program. %s",t),null)):(u("Could not find watch callbacks for root file. %s",y),n)}t.getProgramsForProjects=function(e,t,r){var n=Ja.getCanonicalFileName(t),i=[];y.code=e,y.filePath=n;var a=_.get(n);m.has(n)&&a&&a.size>0&&a.forEach((function(e){return e(n,c.FileWatcherEventKind.Changed)}));var o=!0,s=!1,d=void 0;try{for(var f,g=r.projects[Symbol.iterator]();!(o=(f=g.next()).done);o=!0){var h=f.value,x=Ja.getTsconfigPath(h,r),D=l.get(x);if(D){var S=p.get(x),T=null;if(S||(T=D.getProgram().getProgram(),S=new Set(T.getRootFileNames().map((function(e){return Ja.getCanonicalFileName(e)}))),p.set(x,S)),S.has(n))return u("Found existing program for file. %s",n),(T=T||D.getProgram().getProgram()).getTypeChecker(),[T]}}}catch(e){s=!0,d=e}finally{try{o||null==g.return||g.return()}finally{if(s)throw d}}u("File did not belong to any existing programs, moving to create/update. %s",n);var E=!0,C=!1,k=void 0;try{for(var N,A=r.projects[Symbol.iterator]();!(E=(N=A.next()).done);E=!0){var F=N.value,P=Ja.getTsconfigPath(F,r),w=l.get(P);if(w){var I=b(w,n,P);if(!I)continue;I.getTypeChecker(),i.push(I)}else{var O=v(P,r),M=O.getProgram().getProgram();l.set(P,O),i.push(M)}}}catch(e){C=!0,k=e}finally{try{E||null==A.return||A.return()}finally{if(C)throw k}}return i},t.createWatchProgram=v}));i(Va);Va.clearCaches,Va.getProgramsForProjects,Va.createWatchProgram;var qa=a((function(e,t){var r=n&&n.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});var i=r(Ka),a=r(yr),o=i.default("typescript-eslint:typescript-estree:createProjectProgram");t.createProjectProgram=function(e,t,r){o("Creating project program for: %s",r.filePath);var n=Gi.firstDefined(Va.getProgramsForProjects(e,r.filePath,r),(function(e){var t=e.getSourceFile(r.filePath);return t&&{ast:t,program:e}}));if(!n&&!t){var i=['"parserOptions.project" has been set for @typescript-eslint/parser.',"The file does not match your project config: ".concat(a.default.relative(Oe.cwd(),r.filePath),".")],s=!1,c=a.default.extname(r.filePath);if(-1===[".ts",".tsx",".js",".jsx"].indexOf(c)){var u="The extension for the file (".concat(c,") is non-standard");r.extraFileExtensions&&r.extraFileExtensions.length>0?r.extraFileExtensions.includes(c)||(i.push("".concat(u,'. It should be added to your existing "parserOptions.extraFileExtensions".')),s=!0):(i.push("".concat(u,'. You should add "parserOptions.extraFileExtensions" to your config.')),s=!0)}throw s||(i.push("The file must be included in at least one of the projects provided."),s=!0),new Error(i.join("\n"))}return n}}));i(qa);qa.createProjectProgram;var Wa=a((function(e,t){var r=n&&n.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},i=n&&n.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});var a=r(Ka),o=i(Fr),s=a.default("typescript-eslint:typescript-estree:createSourceFile");t.createSourceFile=function(e,t){return s("Getting AST without type information in %s mode for: %s",t.jsx?"TSX":"TS",t.filePath),o.createSourceFile(t.filePath,e,o.ScriptTarget.Latest,!0,Ja.getScriptKind(t))}}));i(Wa);Wa.createSourceFile;var Ga=a((function(e,t){var r=n&&n.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});var i=r(Fr);function a(e){return e.filter((function(e){switch(e.code){case 1013:case 1014:case 1044:case 1045:case 1048:case 1049:case 1070:case 1071:case 1085:case 1090:case 1096:case 1097:case 1098:case 1099:case 1117:case 1121:case 1123:case 1141:case 1162:case 1172:case 1173:case 1175:case 1176:case 1190:case 1200:case 1206:case 1211:case 1242:case 1246:case 1255:case 1308:case 2364:case 2369:case 2462:case 8017:case 17012:case 17013:return!0}return!1}))}function o(e){return Object.assign(Object.assign({},e),{message:i.flattenDiagnosticMessageText(e.messageText,i.sys.newLine)})}t.getFirstSemanticOrSyntacticError=function(e,t){try{var r=a(e.getSyntacticDiagnostics(t));if(r.length)return o(r[0]);var n=a(e.getSemanticDiagnostics(t));return n.length?o(n[0]):void 0}catch(e){return void console.warn('Warning From TSC: "'.concat(e.message))}}}));i(Ga);Ga.getFirstSemanticOrSyntacticError;var Ha="@typescript-eslint/typescript-estree",Ya="A parser that converts TypeScript source code into an ESTree compatible form",Xa="dist/parser.js",Qa="dist/parser.d.ts",$a=["dist","README.md","LICENSE"],Za={node:"^8.10.0 || ^10.13.0 || >=11.10.1"},eo={type:"git",url:"https://github.com/typescript-eslint/typescript-eslint.git",directory:"packages/typescript-estree"},to={url:"https://github.com/typescript-eslint/typescript-eslint/issues"},ro=["ast","estree","ecmascript","javascript","typescript","parser","syntax"],no={build:"tsc -b tsconfig.build.json",clean:"tsc -b tsconfig.build.json --clean",format:'prettier --write "./**/*.{ts,js,json,md}" --ignore-path ../../.prettierignore',lint:"eslint . --ext .js,.ts --ignore-path='../../.eslintignore'",test:"jest --coverage",typecheck:"tsc -p tsconfig.json --noEmit"},io={debug:"^4.1.1",glob:"^7.1.4","is-glob":"^4.0.1","lodash.unescape":"4.0.1",semver:"^6.3.0",tsutils:"^3.17.1"},ao={"@babel/code-frame":"7.5.5","@babel/parser":"7.5.5","@babel/types":"^7.3.2","@types/babel-code-frame":"^6.20.1","@types/debug":"^4.1.5","@types/glob":"^7.1.1","@types/is-glob":"^4.0.1","@types/lodash.isplainobject":"^4.0.4","@types/lodash.unescape":"^4.0.4","@types/semver":"^6.0.1","@types/tmp":"^0.1.0","@typescript-eslint/shared-fixtures":"2.6.1","babel-code-frame":"^6.26.0",glob:"^7.1.4","lodash.isplainobject":"4.0.6",tmp:"^0.1.0",typescript:"*"},oo={typescript:{optional:!0}},so="643d6d62630a16d189f0673a4bcf34202c7a3fde",co={name:Ha,version:"2.6.1",description:Ya,main:Xa,types:Qa,files:$a,engines:Za,repository:eo,bugs:to,license:"BSD-2-Clause",keywords:ro,scripts:no,dependencies:io,devDependencies:ao,peerDependenciesMeta:oo,gitHead:so},uo=o(Object.freeze({__proto__:null,name:Ha,version:"2.6.1",description:Ya,main:Xa,types:Qa,files:$a,engines:Za,repository:eo,bugs:to,license:"BSD-2-Clause",keywords:ro,scripts:no,dependencies:io,devDependencies:ao,peerDependenciesMeta:oo,gitHead:so,default:co})),lo=a((function(e,t){var r=n&&n.__importDefault||function(e){return e&&e.__esModule?e:{default:e}},i=n&&n.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t};Object.defineProperty(t,"__esModule",{value:!0});var a,o=r(Me),s=i(Fr),c=r(Ni),u=">=3.2.1 <3.8.0",l=s.version,_=o.default.satisfies(l,[u].concat([">3.7.0-dev.0","3.7.1-rc"]).join(" || ")),d=!1;function p(e){return"string"!=typeof e?String(e):e}function m(){return(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).jsx?"estree.tsx":"estree.ts"}function g(){a={code:"",comment:!1,comments:[],createDefaultProgram:!1,errorOnTypeScriptSyntacticAndSemanticIssues:!1,errorOnUnknownASTType:!1,extraFileExtensions:[],filePath:m(),jsx:!1,loc:!1,log:console.log,preserveNodeMaps:void 0,projects:[],range:!1,strict:!1,tokens:null,tsconfigRootDir:Oe.cwd(),useJSXTextNode:!1}}function y(e){a.range="boolean"==typeof e.range&&e.range,a.loc="boolean"==typeof e.loc&&e.loc,"boolean"==typeof e.tokens&&e.tokens&&(a.tokens=[]),"boolean"==typeof e.comment&&e.comment&&(a.comment=!0,a.comments=[]),"boolean"==typeof e.jsx&&e.jsx&&(a.jsx=!0),"string"==typeof e.filePath&&"<input>"!==e.filePath?a.filePath=e.filePath:a.filePath=m(a),"boolean"==typeof e.useJSXTextNode&&e.useJSXTextNode&&(a.useJSXTextNode=!0),"boolean"==typeof e.errorOnUnknownASTType&&e.errorOnUnknownASTType&&(a.errorOnUnknownASTType=!0),"function"==typeof e.loggerFn?a.log=e.loggerFn:!1===e.loggerFn&&(a.log=Function.prototype),"string"==typeof e.project?a.projects=[e.project]:Array.isArray(e.project)&&e.project.every((function(e){return"string"==typeof e}))&&(a.projects=e.project),"string"==typeof e.tsconfigRootDir&&(a.tsconfigRootDir=e.tsconfigRootDir),a.projects&&(a.projects=a.projects.reduce((function(e,t){return e.concat(c.default(t)?gi.sync(t,{cwd:a.tsconfigRootDir||Oe.cwd()}):t)}),[])),Array.isArray(e.extraFileExtensions)&&e.extraFileExtensions.every((function(e){return"string"==typeof e}))&&(a.extraFileExtensions=e.extraFileExtensions),a.preserveNodeMaps="boolean"==typeof e.preserveNodeMaps&&e.preserveNodeMaps,void 0===e.preserveNodeMaps&&a.projects.length>0&&(a.preserveNodeMaps=!0),a.createDefaultProgram="boolean"==typeof e.createDefaultProgram&&e.createDefaultProgram}function h(){if(!_&&!d){if(void 0!==f(Oe)&&Oe.stdout.isTTY){var e=["=============","WARNING: You are currently running a version of TypeScript which is not officially supported by @typescript-eslint/typescript-estree.","You may find that it works just fine, or you may not.","SUPPORTED TYPESCRIPT VERSIONS: ".concat(u),"YOUR TYPESCRIPT VERSION: ".concat(l),"Please only submit bug reports when using the officially supported version.","============="];a.log(e.join("\n\n"))}d=!0}}var v=uo.version;t.version=v,t.parse=function(e,t){if(g(),t&&t.errorOnTypeScriptSyntacticAndSemanticIssues)throw new Error('"errorOnTypeScriptSyntacticAndSemanticIssues" is only supported for parseAndGenerateServices()');e=p(e),a.code=e,void 0!==t&&y(t),h();var r=Wa.createSourceFile(e,a);return Da.astConverter(r,a,!1).estree},t.parseAndGenerateServices=function(e,t){g(),e=p(e),a.code=e,void 0!==t&&(y(t),"boolean"==typeof t.errorOnTypeScriptSyntacticAndSemanticIssues&&t.errorOnTypeScriptSyntacticAndSemanticIssues&&(a.errorOnTypeScriptSyntacticAndSemanticIssues=!0)),h();var r=a.projects&&a.projects.length>0,n=function(e,t,r){return t&&qa.createProjectProgram(e,r,a)||t&&r&&za.createDefaultProgram(e,a)||Ua.createIsolatedProgram(e,a)}(e,r,a.createDefaultProgram),i=n.ast,o=n.program,s=void 0!==a.preserveNodeMaps?a.preserveNodeMaps:r,c=Da.astConverter(i,a,s),u=c.estree,l=c.astMaps;if(o&&a.errorOnTypeScriptSyntacticAndSemanticIssues){var _=Ga.getFirstSemanticOrSyntacticError(o,i);if(_)throw Hi.convertError(_)}return{ast:u,services:{program:r?o:void 0,esTreeNodeToTSNodeMap:s&&l?l.esTreeNodeToTSNodeMap:void 0,tsNodeToESTreeNodeMap:s&&l?l.tsNodeToESTreeNodeMap:void 0}}},function(e){for(var r in e)t.hasOwnProperty(r)||(t[r]=e[r])}(Wi),t.clearCaches=Va.clearCaches}));i(lo);lo.version,lo.parse,lo.parseAndGenerateServices,lo.clearCaches;var _o=_;function po(e,t){return lo.parse(e,{loc:!0,range:!0,tokens:!0,comment:!0,useJSXTextNode:!0,jsx:t})}var fo={parsers:{typescript:Object.assign({parse:function(e,n,i){var a,o=function(e){return new RegExp(["(^[^\"'`]*</)","|","(^[^/]{2}.*/>)"].join(""),"m").test(e)}(e);try{a=po(e,o)}catch(r){try{a=po(e,!o)}catch(e){var s=r;if(void 0===s.lineNumber)throw s;throw t(s.message,{start:{line:s.lineNumber,column:s.column+1}})}}return delete a.tokens,r(e,a),ce(a,Object.assign({},i,{originalText:e}))},astFormat:"estree",hasPragma:_o},p)}},mo=fo.parsers;e.default=fo,e.parsers=mo,Object.defineProperty(e,"__esModule",{value:!0})}));
diff --git a/node_modules/prettier/parser-yaml.js b/node_modules/prettier/parser-yaml.js
new file mode 100644
index 0000000..4ef4bc4
--- /dev/null
+++ b/node_modules/prettier/parser-yaml.js
@@ -0,0 +1,15 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(((e=e||self).prettierPlugins=e.prettierPlugins||{},e.prettierPlugins.yaml={}))}(this,(function(e){"use strict";var t=function(e,t){var n=new SyntaxError(e+" ("+t.start.line+":"+t.start.column+")");return n.loc=t,n};var n=function(e){return/^\s*#[^\n\S]*@(prettier|format)\s*?(\n|$)/.test(e)},r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function a(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function o(e,t){return e(t={exports:{}},t.exports),t.exports}function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function f(e,t,n){return t&&u(e.prototype,t),n&&u(e,n),e}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&d(e,t)}function c(e){return(c=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function d(e,t){return(d=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function h(e,t,n){return(h=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var a=new(Function.bind.apply(e,r));return n&&d(a,n.prototype),a}).apply(null,arguments)}function p(e){var t="function"==typeof Map?new Map:void 0;return(p=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return h(e,arguments,c(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),d(r,e)})(e)}function v(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function g(e,t){return!t||"object"!=typeof t&&"function"!=typeof t?v(e):t}function m(e,t,n){return(m="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,n){var r=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=c(e)););return e}(e,t);if(r){var a=Object.getOwnPropertyDescriptor(r,t);return a.get?a.get.call(n):a.value}})(e,t,n||e)}function y(e,t){return b(e)||function(e,t){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var n=[],r=!0,a=!1,o=void 0;try{for(var i,s=e[Symbol.iterator]();!(r=(i=s.next()).done)&&(n.push(i.value),!t||n.length!==t);r=!0);}catch(e){a=!0,o=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw o}}return n}(e,t)||w()}function _(e){return b(e)||function(e){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e))return Array.from(e)}(e)||w()}function b(e){if(Array.isArray(e))return e}function w(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}
+/*! *****************************************************************************
+ Copyright (c) Microsoft Corporation. All rights reserved.
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+ this file except in compliance with the License. You may obtain a copy of the
+ License at http://www.apache.org/licenses/LICENSE-2.0
+
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+ MERCHANTABLITY OR NON-INFRINGEMENT.
+
+ See the Apache Version 2.0 License for specific language governing permissions
+ and limitations under the License.
+ ***************************************************************************** */var E=function(e,t){return(E=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])})(e,t)};var O=function(){return(O=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var a in t=arguments[n])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e}).apply(this,arguments)};function M(e){var t="function"==typeof Symbol&&e[Symbol.iterator],n=0;return t?t.call(e):{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}function S(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,a,o=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)i.push(r.value)}catch(e){a={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(a)throw a.error}}return i}function A(e){return this instanceof A?(this.v=e,this):new A(e)}var k=Object.freeze({__proto__:null,__extends:function(e,t){function n(){this.constructor=e}E(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},get __assign(){return O},__rest:function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(r=Object.getOwnPropertySymbols(e);a<r.length;a++)t.indexOf(r[a])<0&&Object.prototype.propertyIsEnumerable.call(e,r[a])&&(n[r[a]]=e[r[a]])}return n},__decorate:function(e,t,n,r){var a,o=arguments.length,s=o<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"===("undefined"==typeof Reflect?"undefined":i(Reflect))&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var u=e.length-1;u>=0;u--)(a=e[u])&&(s=(o<3?a(s):o>3?a(t,n,s):a(t,n))||s);return o>3&&s&&Object.defineProperty(t,n,s),s},__param:function(e,t){return function(n,r){t(n,r,e)}},__metadata:function(e,t){if("object"===("undefined"==typeof Reflect?"undefined":i(Reflect))&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)},__awaiter:function(e,t,n,r){return new(n||(n=Promise))((function(a,o){function i(e){try{u(r.next(e))}catch(e){o(e)}}function s(e){try{u(r.throw(e))}catch(e){o(e)}}function u(e){e.done?a(e.value):new n((function(t){t(e.value)})).then(i,s)}u((r=r.apply(e,t||[])).next())}))},__generator:function(e,t){var n,r,a,o,i={label:0,sent:function(){if(1&a[0])throw a[1];return a[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(a=2&o[0]?r.return:o[0]?r.throw||((a=r.return)&&a.call(r),0):r.next)&&!(a=a.call(r,o[1])).done)return a;switch(r=0,a&&(o=[2&o[0],a.value]),o[0]){case 0:case 1:a=o;break;case 4:return i.label++,{value:o[1],done:!1};case 5:i.label++,r=o[1],o=[0];continue;case 7:o=i.ops.pop(),i.trys.pop();continue;default:if(!(a=(a=i.trys).length>0&&a[a.length-1])&&(6===o[0]||2===o[0])){i=0;continue}if(3===o[0]&&(!a||o[1]>a[0]&&o[1]<a[3])){i.label=o[1];break}if(6===o[0]&&i.label<a[1]){i.label=a[1],a=o;break}if(a&&i.label<a[2]){i.label=a[2],i.ops.push(o);break}a[2]&&i.ops.pop(),i.trys.pop();continue}o=t.call(e,i)}catch(e){o=[6,e],r=0}finally{n=a=0}if(5&o[0])throw o[1];return{value:o[0]?o[1]:void 0,done:!0}}([o,s])}}},__exportStar:function(e,t){for(var n in e)t.hasOwnProperty(n)||(t[n]=e[n])},__values:M,__read:S,__spread:function(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(S(arguments[t]));return e},__spreadArrays:function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var r=Array(e),a=0;for(t=0;t<n;t++)for(var o=arguments[t],i=0,s=o.length;i<s;i++,a++)r[a]=o[i];return r},__await:A,__asyncGenerator:function(e,t,n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r,a=n.apply(e,t||[]),o=[];return r={},i("next"),i("throw"),i("return"),r[Symbol.asyncIterator]=function(){return this},r;function i(e){a[e]&&(r[e]=function(t){return new Promise((function(n,r){o.push([e,t,n,r])>1||s(e,t)}))})}function s(e,t){try{(n=a[e](t)).value instanceof A?Promise.resolve(n.value.v).then(u,f):l(o[0][2],n)}catch(e){l(o[0][3],e)}var n}function u(e){s("next",e)}function f(e){s("throw",e)}function l(e,t){e(t),o.shift(),o.length&&s(o[0][0],o[0][1])}},__asyncDelegator:function(e){var t,n;return t={},r("next"),r("throw",(function(e){throw e})),r("return"),t[Symbol.iterator]=function(){return this},t;function r(r,a){t[r]=e[r]?function(t){return(n=!n)?{value:A(e[r](t)),done:"return"===r}:a?a(t):t}:a}},__asyncValues:function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=M(e),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,a){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,a,(t=e[n](t)).done,t.value)}))}}},__makeTemplateObject:function(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e},__importStar:function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t},__importDefault:function(e){return e&&e.__esModule?e:{default:e}}}),L=o((function(e,t){var n="\n",r="\r",a=function(){function e(e){this.string=e;for(var t=[0],a=0;a<e.length;)switch(e[a]){case n:a+=n.length,t.push(a);break;case r:e[a+=r.length]===n&&(a+=n.length),t.push(a);break;default:a++}this.offsets=t}return e.prototype.locationForIndex=function(e){if(e<0||e>this.string.length)return null;for(var t=0,n=this.offsets;n[t+1]<=e;)t++;return{line:t,column:e-n[t]}},e.prototype.indexForLocation=function(e){var t=e.line,n=e.column;return t<0||t>=this.offsets.length?null:n<0||n>this.lengthOfLine(t)?null:this.offsets[t]+n},e.prototype.lengthOfLine=function(e){var t=this.offsets[e];return(e===this.offsets.length-1?this.string.length:this.offsets[e+1])-t},e}();t.__esModule=!0,t.default=a}));a(L);var T=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Type=t.Char=void 0;t.Char={ANCHOR:"&",COMMENT:"#",TAG:"!",DIRECTIVES_END:"-",DOCUMENT_END:"."};t.Type={ALIAS:"ALIAS",BLANK_LINE:"BLANK_LINE",BLOCK_FOLDED:"BLOCK_FOLDED",BLOCK_LITERAL:"BLOCK_LITERAL",COMMENT:"COMMENT",DIRECTIVE:"DIRECTIVE",DOCUMENT:"DOCUMENT",FLOW_MAP:"FLOW_MAP",FLOW_SEQ:"FLOW_SEQ",MAP:"MAP",MAP_KEY:"MAP_KEY",MAP_VALUE:"MAP_VALUE",PLAIN:"PLAIN",QUOTE_DOUBLE:"QUOTE_DOUBLE",QUOTE_SINGLE:"QUOTE_SINGLE",SEQ:"SEQ",SEQ_ITEM:"SEQ_ITEM"}}));a(T);T.Type,T.Char;var P=o((function(e,t){function n(e){for(var t=[0],n=e.indexOf("\n");-1!==n;)n+=1,t.push(n),n=e.indexOf("\n",n);return t}function r(e){var t,r;return"string"==typeof e?(t=n(e),r=e):(Array.isArray(e)&&(e=e[0]),e&&e.context&&(e.lineStarts||(e.lineStarts=n(e.context.src)),t=e.lineStarts,r=e.context.src)),{lineStarts:t,src:r}}function a(e,t){var n=r(t),a=n.lineStarts,o=n.src;if(!a||!(e>=1)||e>a.length)return null;for(var i=a[e-1],s=a[e];s&&s>i&&"\n"===o[s-1];)--s;return o.slice(i,s)}Object.defineProperty(t,"__esModule",{value:!0}),t.getLinePos=function(e,t){if("number"!=typeof e||e<0)return null;var n=r(t),a=n.lineStarts,o=n.src;if(!a||!o||e>o.length)return null;for(var i=0;i<a.length;++i){var s=a[i];if(e<s)return{line:i,col:e-a[i-1]+1};if(e===s)return{line:i+1,col:1}}var u=a.length;return{line:u,col:e-a[u-1]+1}},t.getLine=a,t.getPrettyContext=function(e,t){var n=e.start,r=e.end,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:80,i=a(n.line,t);if(!i)return null;var s=n.col;if(i.length>o)if(s<=o-10)i=i.substr(0,o-1)+"…";else{var u=Math.round(o/2);i.length>s+u&&(i=i.substr(0,s+u-1)+"…"),s-=i.length-o,i="…"+i.substr(1-o)}var f=1,l="";r&&(r.line===n.line&&s+(r.col-n.col)<=o+1?f=r.col-n.col:(f=Math.min(i.length+1,o)-s,l="…"));var c=s>1?" ".repeat(s-1):"",d="^".repeat(f);return"".concat(i,"\n").concat(c).concat(d).concat(l)}}));a(P);P.getLinePos,P.getLine,P.getPrettyContext;var C=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=function(){function e(t,n){s(this,e),this.start=t,this.end=n||t}return f(e,null,[{key:"copy",value:function(t){return new e(t.start,t.end)}}]),f(e,[{key:"isEmpty",value:function(){return"number"!=typeof this.start||!this.end||this.end<=this.start}},{key:"setOrigRange",value:function(e,t){var n=this.start,r=this.end;if(0===e.length||r<=e[0])return this.origStart=n,this.origEnd=r,t;for(var a=t;a<e.length&&!(e[a]>n);)++a;this.origStart=n+a;for(var o=a;a<e.length&&!(e[a]>=r);)++a;return this.origEnd=r+a,o}}]),e}();t.default=n}));a(C);var N=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,r=(n=C)&&n.__esModule?n:{default:n};var a=function(){function e(t,n,r){s(this,e),Object.defineProperty(this,"context",{value:r||null,writable:!0}),this.error=null,this.range=null,this.valueRange=null,this.props=n||[],this.type=t,this.value=null}return f(e,null,[{key:"addStringTerminator",value:function(t,n,r){if("\n"===r[r.length-1])return r;var a=e.endOfWhiteSpace(t,n);return a>=t.length||"\n"===t[a]?r+"\n":r}},{key:"atDocumentBoundary",value:function(e,t,n){var r=e[t];if(!r)return!0;var a=e[t-1];if(a&&"\n"!==a)return!1;if(n){if(r!==n)return!1}else if(r!==T.Char.DIRECTIVES_END&&r!==T.Char.DOCUMENT_END)return!1;var o=e[t+1],i=e[t+2];if(o!==r||i!==r)return!1;var s=e[t+3];return!s||"\n"===s||"\t"===s||" "===s}},{key:"endOfIdentifier",value:function(e,t){for(var n=e[t],r="<"===n,a=r?["\n","\t"," ",">"]:["\n","\t"," ","[","]","{","}",","];n&&-1===a.indexOf(n);)n=e[t+=1];return r&&">"===n&&(t+=1),t}},{key:"endOfIndent",value:function(e,t){for(var n=e[t];" "===n;)n=e[t+=1];return t}},{key:"endOfLine",value:function(e,t){for(var n=e[t];n&&"\n"!==n;)n=e[t+=1];return t}},{key:"endOfWhiteSpace",value:function(e,t){for(var n=e[t];"\t"===n||" "===n;)n=e[t+=1];return t}},{key:"startOfLine",value:function(e,t){var n=e[t-1];if("\n"===n)return t;for(;n&&"\n"!==n;)n=e[t-=1];return t+1}},{key:"endOfBlockIndent",value:function(t,n,r){var a=e.endOfIndent(t,r);if(a>r+n)return a;var o=e.endOfWhiteSpace(t,a),i=t[o];return i&&"\n"!==i?null:o}},{key:"atBlank",value:function(e,t,n){var r=e[t];return"\n"===r||"\t"===r||" "===r||n&&!r}},{key:"atCollectionItem",value:function(t,n){var r=t[n];return("?"===r||":"===r||"-"===r)&&e.atBlank(t,n+1,!0)}},{key:"nextNodeIsIndented",value:function(e,t,n){return!(!e||t<0)&&(t>0||n&&"-"===e)}},{key:"normalizeOffset",value:function(t,n){var r=t[n];return r?"\n"!==r&&"\n"===t[n-1]?n-1:e.endOfWhiteSpace(t,n):n}},{key:"foldNewline",value:function(t,n,r){for(var a=0,o=!1,i="",s=t[n+1];" "===s||"\t"===s||"\n"===s;){switch(s){case"\n":a=0,n+=1,i+="\n";break;case"\t":a<=r&&(o=!0),n=e.endOfWhiteSpace(t,n+2)-1;break;case" ":a+=1,n+=1}s=t[n+1]}return i||(i=" "),s&&a<=r&&(o=!0),{fold:i,offset:n,error:o}}}]),f(e,[{key:"getPropValue",value:function(e,t,n){if(!this.context)return null;var r=this.context.src,a=this.props[e];return a&&r[a.start]===t?r.slice(a.start+(n?1:0),a.end):null}},{key:"commentHasRequiredWhitespace",value:function(t){var n=this.context.src;if(this.header&&t===this.header.end)return!1;if(!this.valueRange)return!1;var r=this.valueRange.end;return t!==r||e.atBlank(n,r-1)}},{key:"parseComment",value:function(t){var n=this.context.src;if(n[t]===T.Char.COMMENT){var a=e.endOfLine(n,t+1),o=new r.default(t,a);return this.props.push(o),a}return t}},{key:"setOrigRanges",value:function(e,t){return this.range&&(t=this.range.setOrigRange(e,t)),this.valueRange&&this.valueRange.setOrigRange(e,t),this.props.forEach((function(n){return n.setOrigRange(e,t)})),t}},{key:"toString",value:function(){var t=this.context.src,n=this.range,r=this.value;if(null!=r)return r;var a=t.slice(n.start,n.end);return e.addStringTerminator(t,n.end,a)}},{key:"anchor",get:function(){for(var e=0;e<this.props.length;++e){var t=this.getPropValue(e,T.Char.ANCHOR,!0);if(null!=t)return t}return null}},{key:"comment",get:function(){for(var e=[],t=0;t<this.props.length;++t){var n=this.getPropValue(t,T.Char.COMMENT,!0);null!=n&&e.push(n)}return e.length>0?e.join("\n"):null}},{key:"hasComment",get:function(){if(this.context)for(var e=this.context.src,t=0;t<this.props.length;++t)if(e[this.props[t].start]===T.Char.COMMENT)return!0;return!1}},{key:"hasProps",get:function(){if(this.context)for(var e=this.context.src,t=0;t<this.props.length;++t)if(e[this.props[t].start]!==T.Char.COMMENT)return!0;return!1}},{key:"includesTrailingLines",get:function(){return!1}},{key:"jsonLike",get:function(){return-1!==[T.Type.FLOW_MAP,T.Type.FLOW_SEQ,T.Type.QUOTE_DOUBLE,T.Type.QUOTE_SINGLE].indexOf(this.type)}},{key:"rangeAsLinePos",get:function(){if(this.range&&this.context){var e=(0,P.getLinePos)(this.range.start,this.context.root);if(e)return{start:e,end:(0,P.getLinePos)(this.range.end,this.context.root)}}}},{key:"rawValue",get:function(){if(!this.valueRange||!this.context)return null;var e=this.valueRange,t=e.start,n=e.end;return this.context.src.slice(t,n)}},{key:"tag",get:function(){for(var e=0;e<this.props.length;++e){var t=this.getPropValue(e,T.Char.TAG,!1);if(null!=t){if("<"===t[1])return{verbatim:t.slice(2,-1)};var n=y(t.match(/^(.*!)([^!]*)$/),3);n[0];return{handle:n[1],suffix:n[2]}}}return null}},{key:"valueRangeContainsNewline",get:function(){if(!this.valueRange||!this.context)return!1;for(var e=this.valueRange,t=e.start,n=e.end,r=this.context.src,a=t;a<n;++a)if("\n"===r[a])return!0;return!1}}]),e}();t.default=a}));a(N);var x=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.YAMLWarning=t.YAMLSyntaxError=t.YAMLSemanticError=t.YAMLReferenceError=t.YAMLError=void 0;var n=a(N),r=a(C);function a(e){return e&&e.__esModule?e:{default:e}}var o=function(e){function t(e,r,a){var o;if(s(this,t),!(a&&r instanceof n.default))throw new Error("Invalid arguments for new ".concat(e));return(o=g(this,c(t).call(this))).name=e,o.message=a,o.source=r,o}return l(t,e),f(t,[{key:"makePretty",value:function(){if(this.source){this.nodeType=this.source.type;var e=this.source.context&&this.source.context.root;if("number"==typeof this.offset){this.range=new r.default(this.offset,this.offset+1);var t=e&&(0,P.getLinePos)(this.offset,e);if(t){var n={line:t.line,col:t.col+1};this.linePos={start:t,end:n}}delete this.offset}else this.range=this.source.range,this.linePos=this.source.rangeAsLinePos;if(this.linePos){var a=this.linePos.start,o=a.line,i=a.col;this.message+=" at line ".concat(o,", column ").concat(i);var s=e&&(0,P.getPrettyContext)(this.linePos,e);s&&(this.message+=":\n\n".concat(s,"\n"))}delete this.source}}}]),t}(p(Error));t.YAMLError=o;var i=function(e){function t(e,n){return s(this,t),g(this,c(t).call(this,"YAMLReferenceError",e,n))}return l(t,e),t}(o);t.YAMLReferenceError=i;var u=function(e){function t(e,n){return s(this,t),g(this,c(t).call(this,"YAMLSemanticError",e,n))}return l(t,e),t}(o);t.YAMLSemanticError=u;var d=function(e){function t(e,n){return s(this,t),g(this,c(t).call(this,"YAMLSyntaxError",e,n))}return l(t,e),t}(o);t.YAMLSyntaxError=d;var h=function(e){function t(e,n){return s(this,t),g(this,c(t).call(this,"YAMLWarning",e,n))}return l(t,e),t}(o);t.YAMLWarning=h}));a(x);x.YAMLWarning,x.YAMLSyntaxError,x.YAMLSemanticError,x.YAMLReferenceError,x.YAMLError;var R=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=a(N),r=a(C);function a(e){return e&&e.__esModule?e:{default:e}}var o=function(e){function t(){return s(this,t),g(this,c(t).call(this,T.Type.BLANK_LINE))}return l(t,e),f(t,[{key:"parse",value:function(e,t){this.context=e;for(var a=e.src,o=t+1;n.default.atBlank(a,o);){var i=n.default.endOfWhiteSpace(a,o);if("\n"!==i)break;o=i+1}return this.range=new r.default(t,o),o}},{key:"includesTrailingLines",get:function(){return!0}}]),t}(n.default);t.default=o}));a(R);var I=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=o(R),r=o(N),a=o(C);function o(e){return e&&e.__esModule?e:{default:e}}var i=function(e){function t(e,n){var r;return s(this,t),(r=g(this,c(t).call(this,e,n))).node=null,r}return l(t,e),f(t,[{key:"parse",value:function(e,t){this.context=e;var o=e.parseNode,i=e.src,s=e.atLineStart,u=e.lineStart;s||this.type!==T.Type.SEQ_ITEM||(this.error=new x.YAMLSemanticError(this,"Sequence items must not have preceding content on the same line"));for(var f=s?t-u:e.indent,l=r.default.endOfWhiteSpace(i,t+1),c=i[l],d="#"===c,h=[],p=null;"\n"===c||"#"===c;){if("#"===c){var v=r.default.endOfLine(i,l+1);h.push(new a.default(l,v)),l=v}else{s=!0,u=l+1,"\n"===i[r.default.endOfWhiteSpace(i,u)]&&0===h.length&&(u=(p=new n.default).parse({src:i},u)),l=r.default.endOfIndent(i,u)}c=i[l]}if(r.default.nextNodeIsIndented(c,l-(u+f),this.type!==T.Type.SEQ_ITEM)?this.node=o({atLineStart:s,inCollection:!1,indent:f,lineStart:u,parent:this},l):c&&u>t+1&&(l=u-1),this.node){if(p){var g=e.parent.items||e.parent.contents;g&&g.push(p)}h.length&&Array.prototype.push.apply(this.props,h),l=this.node.range.end}else if(d){var m=h[0];this.props.push(m),l=m.end}else l=r.default.endOfLine(i,t+1);var y=this.node?this.node.valueRange.end:l;return this.valueRange=new a.default(t,y),l}},{key:"setOrigRanges",value:function(e,n){return n=m(c(t.prototype),"setOrigRanges",this).call(this,e,n),this.node?this.node.setOrigRanges(e,n):n}},{key:"toString",value:function(){var e=this.context.src,t=this.node,n=this.range,a=this.value;if(null!=a)return a;var o=t?e.slice(n.start,t.range.start)+String(t):e.slice(n.start,n.end);return r.default.addStringTerminator(e,n.end,o)}},{key:"includesTrailingLines",get:function(){return!!this.node&&this.node.includesTrailingLines}}]),t}(r.default);t.default=i}));a(I);var B=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=a(N),r=a(C);function a(e){return e&&e.__esModule?e:{default:e}}var o=function(e){function t(){return s(this,t),g(this,c(t).call(this,T.Type.COMMENT))}return l(t,e),f(t,[{key:"parse",value:function(e,t){this.context=e;var n=this.parseComment(t);return this.range=new r.default(t,n),n}}]),t}(n.default);t.default=o}));a(B);var D=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.grabCollectionEndComments=d,t.default=void 0;var n=u(R),r=u(I),a=u(B),o=u(N),i=u(C);function u(e){return e&&e.__esModule?e:{default:e}}function d(e){for(var t=e;t instanceof r.default;)t=t.node;if(!(t instanceof h))return null;for(var n=t.items.length,a=-1,o=n-1;o>=0;--o){var i=t.items[o];if(i.type===T.Type.COMMENT){var s=i.context,u=s.indent,f=s.lineStart;if(u>0&&i.range.start>=f+u)break;a=o}else{if(i.type!==T.Type.BLANK_LINE)break;a=o}}if(-1===a)return null;for(var l=t.items.splice(a,n-a),c=l[0].range.start;t.range.end=c,t.valueRange&&t.valueRange.end>c&&(t.valueRange.end=c),t!==e;)t=t.context.parent;return l}var h=function(e){function t(e){var n;s(this,t),n=g(this,c(t).call(this,e.type===T.Type.SEQ_ITEM?T.Type.SEQ:T.Type.MAP));for(var r=e.props.length-1;r>=0;--r)if(e.props[r].start<e.context.lineStart){n.props=e.props.slice(0,r+1),e.props=e.props.slice(r+1);var a=e.props[0]||e.valueRange;e.range.start=a.start;break}n.items=[e];var o=d(e);return o&&Array.prototype.push.apply(n.items,o),n}return l(t,e),f(t,null,[{key:"nextContentHasIndent",value:function(e,n,r){var a=o.default.endOfLine(e,n)+1,i=e[n=o.default.endOfWhiteSpace(e,a)];return!!i&&(n>=a+r||("#"===i||"\n"===i)&&t.nextContentHasIndent(e,n,r))}}]),f(t,[{key:"parse",value:function(e,r){this.context=e;var s=e.parseNode,u=e.src,f=o.default.startOfLine(u,r),l=this.items[0];l.context.parent=this,this.valueRange=i.default.copy(l.valueRange);for(var c=l.range.start-l.context.lineStart,h=r,p=u[h=o.default.normalizeOffset(u,h)],v=o.default.endOfWhiteSpace(u,f)===h,g=!1;p;){for(;"\n"===p||"#"===p;){if(v&&"\n"===p&&!g){var m=new n.default;if(h=m.parse({src:u},h),this.valueRange.end=h,h>=u.length){p=null;break}this.items.push(m),h-=1}else if("#"===p){if(h<f+c&&!t.nextContentHasIndent(u,h,c))return h;var y=new a.default;if(h=y.parse({indent:c,lineStart:f,src:u},h),this.items.push(y),this.valueRange.end=h,h>=u.length){p=null;break}}if(f=h+1,h=o.default.endOfIndent(u,f),o.default.atBlank(u,h)){var _=o.default.endOfWhiteSpace(u,h),b=u[_];b&&"\n"!==b&&"#"!==b||(h=_)}p=u[h],v=!0}if(!p)break;if(h!==f+c&&(v||":"!==p)){f>r&&(h=f);break}if(l.type===T.Type.SEQ_ITEM!=("-"===p)){var w=!0;if("-"===p){var E=u[h+1];w=!E||"\n"===E||"\t"===E||" "===E}if(w){f>r&&(h=f);break}}var O=s({atLineStart:v,inCollection:!0,indent:c,lineStart:f,parent:this},h);if(!O)return h;if(this.items.push(O),this.valueRange.end=O.valueRange.end,p=u[h=o.default.normalizeOffset(u,O.range.end)],v=!1,g=O.includesTrailingLines,p){for(var M=h-1,S=u[M];" "===S||"\t"===S;)S=u[--M];"\n"===S&&(f=M+1,v=!0)}var A=d(O);A&&Array.prototype.push.apply(this.items,A)}return h}},{key:"setOrigRanges",value:function(e,n){return n=m(c(t.prototype),"setOrigRanges",this).call(this,e,n),this.items.forEach((function(t){n=t.setOrigRanges(e,n)})),n}},{key:"toString",value:function(){var e=this.context.src,t=this.items,n=this.range,r=this.value;if(null!=r)return r;for(var a=e.slice(n.start,t[0].range.start)+String(t[0]),i=1;i<t.length;++i){var s=t[i],u=s.context,f=u.atLineStart,l=u.indent;if(f)for(var c=0;c<l;++c)a+=" ";a+=String(s)}return o.default.addStringTerminator(e,n.end,a)}},{key:"includesTrailingLines",get:function(){return this.items.length>0}}]),t}(o.default);t.default=h}));a(D);D.grabCollectionEndComments;var j=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=a(N),r=a(C);function a(e){return e&&e.__esModule?e:{default:e}}var o=function(e){function t(){var e;return s(this,t),(e=g(this,c(t).call(this,T.Type.DIRECTIVE))).name=null,e}return l(t,e),f(t,null,[{key:"endOfDirective",value:function(e,t){for(var n=e[t];n&&"\n"!==n&&"#"!==n;)n=e[t+=1];for(n=e[t-1];" "===n||"\t"===n;)n=e[(t-=1)-1];return t}}]),f(t,[{key:"parseName",value:function(e){for(var t=this.context.src,n=e,r=t[n];r&&"\n"!==r&&"\t"!==r&&" "!==r;)r=t[n+=1];return this.name=t.slice(e,n),n}},{key:"parseParameters",value:function(e){for(var t=this.context.src,n=e,a=t[n];a&&"\n"!==a&&"#"!==a;)a=t[n+=1];return this.valueRange=new r.default(e,n),n}},{key:"parse",value:function(e,t){this.context=e;var n=this.parseName(t+1);return n=this.parseParameters(n),n=this.parseComment(n),this.range=new r.default(t,n),n}},{key:"parameters",get:function(){var e=this.rawValue;return e?e.trim().split(/[ \t]+/):[]}}]),t}(n.default);t.default=o}));a(j);var Y=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=u(R),r=u(B),a=u(j),o=u(N),i=u(C);function u(e){return e&&e.__esModule?e:{default:e}}var d=function(e){function t(){var e;return s(this,t),(e=g(this,c(t).call(this,T.Type.DOCUMENT))).directives=null,e.contents=null,e.directivesEndMarker=null,e.documentEndMarker=null,e}return l(t,e),f(t,null,[{key:"startCommentOrEndBlankLine",value:function(e,t){var n=o.default.endOfWhiteSpace(e,t),r=e[n];return"#"===r||"\n"===r?n:t}}]),f(t,[{key:"parseDirectives",value:function(e){var s=this.context.src;this.directives=[];for(var u=!0,f=!1,l=e;!o.default.atDocumentBoundary(s,l,T.Char.DIRECTIVES_END);)switch(s[l=t.startCommentOrEndBlankLine(s,l)]){case"\n":if(u){var c=new n.default;(l=c.parse({src:s},l))<s.length&&this.directives.push(c)}else l+=1,u=!0;break;case"#":var d=new r.default;l=d.parse({src:s},l),this.directives.push(d),u=!1;break;case"%":var h=new a.default;l=h.parse({parent:this,src:s},l),this.directives.push(h),f=!0,u=!1;break;default:return f?this.error=new x.YAMLSemanticError(this,"Missing directives-end indicator line"):this.directives.length>0&&(this.contents=this.directives,this.directives=[]),l}return s[l]?(this.directivesEndMarker=new i.default(l,l+3),l+3):(f?this.error=new x.YAMLSemanticError(this,"Missing directives-end indicator line"):this.directives.length>0&&(this.contents=this.directives,this.directives=[]),l)}},{key:"parseContents",value:function(e){var a=this.context,s=a.parseNode,u=a.src;this.contents||(this.contents=[]);for(var f=e;"-"===u[f-1];)f-=1;var l=o.default.endOfWhiteSpace(u,e),c=f===e;for(this.valueRange=new i.default(l);!o.default.atDocumentBoundary(u,l,T.Char.DOCUMENT_END);){switch(u[l]){case"\n":if(c){var d=new n.default;(l=d.parse({src:u},l))<u.length&&this.contents.push(d)}else l+=1,c=!0;f=l;break;case"#":var h=new r.default;l=h.parse({src:u},l),this.contents.push(h),c=!1;break;default:var p=o.default.endOfIndent(u,l),v=s({atLineStart:c,indent:-1,inFlow:!1,inCollection:!1,lineStart:f,parent:this},p);if(!v)return this.valueRange.end=p;this.contents.push(v),l=v.range.end,c=!1;var g=(0,D.grabCollectionEndComments)(v);g&&Array.prototype.push.apply(this.contents,g)}l=t.startCommentOrEndBlankLine(u,l)}if(this.valueRange.end=l,u[l]&&(this.documentEndMarker=new i.default(l,l+3),u[l+=3])){if("#"===u[l=o.default.endOfWhiteSpace(u,l)]){var m=new r.default;l=m.parse({src:u},l),this.contents.push(m)}switch(u[l]){case"\n":l+=1;break;case void 0:break;default:this.error=new x.YAMLSyntaxError(this,"Document end marker line cannot have a non-comment suffix")}}return l}},{key:"parse",value:function(e,t){e.root=this,this.context=e;var n=65279===e.src.charCodeAt(t)?t+1:t;return n=this.parseDirectives(n),n=this.parseContents(n)}},{key:"setOrigRanges",value:function(e,n){return n=m(c(t.prototype),"setOrigRanges",this).call(this,e,n),this.directives.forEach((function(t){n=t.setOrigRanges(e,n)})),this.directivesEndMarker&&(n=this.directivesEndMarker.setOrigRange(e,n)),this.contents.forEach((function(t){n=t.setOrigRanges(e,n)})),this.documentEndMarker&&(n=this.documentEndMarker.setOrigRange(e,n)),n}},{key:"toString",value:function(){var e=this.contents,t=this.directives,n=this.value;if(null!=n)return n;var r=t.join("");return e.length>0&&((t.length>0||e[0].type===T.Type.COMMENT)&&(r+="---\n"),r+=e.join("")),"\n"!==r[r.length-1]&&(r+="\n"),r}}]),t}(o.default);t.default=d}));a(Y);var F=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=a(N),r=a(C);function a(e){return e&&e.__esModule?e:{default:e}}var o=function(e){function t(){return s(this,t),g(this,c(t).apply(this,arguments))}return l(t,e),f(t,[{key:"parse",value:function(e,t){this.context=e;var a=e.src,o=n.default.endOfIdentifier(a,t+1);return this.valueRange=new r.default(t+1,o),o=n.default.endOfWhiteSpace(a,o),o=this.parseComment(o)}}]),t}(n.default);t.default=o}));a(F);var U=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.Chomp=void 0;var n=a(N),r=a(C);function a(e){return e&&e.__esModule?e:{default:e}}var o={CLIP:"CLIP",KEEP:"KEEP",STRIP:"STRIP"};t.Chomp=o;var i=function(e){function t(e,n){var r;return s(this,t),(r=g(this,c(t).call(this,e,n))).blockIndent=null,r.chomping=o.CLIP,r.header=null,r}return l(t,e),f(t,[{key:"parseBlockHeader",value:function(e){for(var t=this.context.src,n=e+1,a="";;){var i=t[n];switch(i){case"-":this.chomping=o.STRIP;break;case"+":this.chomping=o.KEEP;break;case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":a+=i;break;default:return this.blockIndent=Number(a)||null,this.header=new r.default(e,n),n}n+=1}}},{key:"parseBlockValue",value:function(e){for(var t=this.context,a=t.indent,i=t.src,s=e,u=e,f=this.blockIndent?a+this.blockIndent-1:a,l=1,c=i[s];"\n"===c&&(s+=1,!n.default.atDocumentBoundary(i,s));c=i[s]){var d=n.default.endOfBlockIndent(i,f,s);if(null===d)break;if(!this.blockIndent){var h=d-(s+a);if("\n"!==i[d]){if(h<l){s-=1;break}this.blockIndent=h,f=a+this.blockIndent-1}else h>l&&(l=h)}s="\n"===i[d]?d:u=n.default.endOfLine(i,d)}return this.chomping!==o.KEEP&&(s=i[u]?u+1:u),this.valueRange=new r.default(e+1,s),s}},{key:"parse",value:function(e,t){this.context=e;var r=e.src,a=this.parseBlockHeader(t);return a=n.default.endOfWhiteSpace(r,a),a=this.parseComment(a),a=this.parseBlockValue(a)}},{key:"setOrigRanges",value:function(e,n){return n=m(c(t.prototype),"setOrigRanges",this).call(this,e,n),this.header?this.header.setOrigRange(e,n):n}},{key:"includesTrailingLines",get:function(){return this.chomping===o.KEEP}},{key:"strValue",get:function(){if(!this.valueRange||!this.context)return null;var e=this.valueRange,t=e.start,r=e.end,a=this.context,i=a.indent,s=a.src;if(this.valueRange.isEmpty())return"";for(var u=null,f=s[r-1];"\n"===f||"\t"===f||" "===f;){if((r-=1)<=t){if(this.chomping===o.KEEP)break;return""}"\n"===f&&(u=r),f=s[r-1]}var l=r+1;u&&(this.chomping===o.KEEP?(l=u,r=this.valueRange.end):r=u);for(var c=i+this.blockIndent,d=this.type===T.Type.BLOCK_FOLDED,h=!0,p="",v="",g=!1,m=t;m<r;++m){for(var y=0;y<c&&" "===s[m];++y)m+=1;var _=s[m];if("\n"===_)"\n"===v?p+="\n":v="\n";else{var b=n.default.endOfLine(s,m),w=s.slice(m,b);m=b,d&&(" "===_||"\t"===_)&&m<l?(" "===v?v="\n":g||h||"\n"!==v||(v="\n\n"),p+=v+w,v=b<r&&s[b]||"",g=!0):(p+=v+w,v=d&&m<l?" ":"\n",g=!1),h&&""!==w&&(h=!1)}}return this.chomping===o.STRIP?p:p+"\n"}}]),t}(n.default);t.default=i}));a(U);U.Chomp;var K=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(R),r=i(B),a=i(N),o=i(C);function i(e){return e&&e.__esModule?e:{default:e}}var u=function(e){function t(e,n){var r;return s(this,t),(r=g(this,c(t).call(this,e,n))).items=null,r}return l(t,e),f(t,[{key:"prevNodeIsJsonLike",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.items.length,t=this.items[e-1];return!!t&&(t.jsonLike||t.type===T.Type.COMMENT&&this.nodeIsJsonLike(e-1))}},{key:"parse",value:function(e,t){this.context=e;var i=e.parseNode,s=e.src,u=e.indent,f=e.lineStart,l=s[t];this.items=[{char:l,offset:t}];var c=a.default.endOfWhiteSpace(s,t+1);for(l=s[c];l&&"]"!==l&&"}"!==l;){switch(l){case"\n":if(f=c+1,"\n"===s[a.default.endOfWhiteSpace(s,f)]){var d=new n.default;f=d.parse({src:s},f),this.items.push(d)}if((c=a.default.endOfIndent(s,f))<=f+u&&(l=s[c],c<f+u||"]"!==l&&"}"!==l)){this.error=new x.YAMLSemanticError(this,"Insufficient indentation in flow collection")}break;case",":this.items.push({char:l,offset:c}),c+=1;break;case"#":var h=new r.default;c=h.parse({src:s},c),this.items.push(h);break;case"?":case":":var p=s[c+1];if("\n"===p||"\t"===p||" "===p||","===p||":"===l&&this.prevNodeIsJsonLike()){this.items.push({char:l,offset:c}),c+=1;break}default:var v=i({atLineStart:!1,inCollection:!1,inFlow:!0,indent:-1,lineStart:f,parent:this},c);if(!v)return this.valueRange=new o.default(t,c),c;this.items.push(v),c=a.default.normalizeOffset(s,v.range.end)}l=s[c=a.default.endOfWhiteSpace(s,c)]}return this.valueRange=new o.default(t,c+1),l&&(this.items.push({char:l,offset:c}),c=a.default.endOfWhiteSpace(s,c+1),c=this.parseComment(c)),c}},{key:"setOrigRanges",value:function(e,n){return n=m(c(t.prototype),"setOrigRanges",this).call(this,e,n),this.items.forEach((function(t){if(t instanceof a.default)n=t.setOrigRanges(e,n);else if(0===e.length)t.origOffset=t.offset;else{for(var r=n;r<e.length&&!(e[r]>t.offset);)++r;t.origOffset=t.offset+r,n=r}})),n}},{key:"toString",value:function(){var e=this.context.src,t=this.items,n=this.range,r=this.value;if(null!=r)return r;var o=t.filter((function(e){return e instanceof a.default})),i="",s=n.start;return o.forEach((function(t){var n=e.slice(s,t.range.start);s=t.range.end,"\n"===(i+=n+String(t))[i.length-1]&&"\n"!==e[s-1]&&"\n"===e[s]&&(s+=1)})),i+=e.slice(s,n.end),a.default.addStringTerminator(e,n.end,i)}}]),t}(a.default);t.default=u}));a(K);var W=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=a(N),r=a(C);function a(e){return e&&e.__esModule?e:{default:e}}var o=function(e){function t(){return s(this,t),g(this,c(t).apply(this,arguments))}return l(t,e),f(t,[{key:"parseBlockValue",value:function(e){for(var r=this.context,a=r.indent,o=r.inFlow,i=r.src,s=e,u=e,f=i[s];"\n"===f&&!n.default.atDocumentBoundary(i,s+1);f=i[s]){var l=n.default.endOfBlockIndent(i,a,s+1);if(null===l||"#"===i[l])break;s="\n"===i[l]?l:u=t.endOfLine(i,l,o)}return this.valueRange.isEmpty()&&(this.valueRange.start=e),this.valueRange.end=u,u}},{key:"parse",value:function(e,a){this.context=e;var o=e.inFlow,i=e.src,s=a,u=i[s];return u&&"#"!==u&&"\n"!==u&&(s=t.endOfLine(i,a,o)),this.valueRange=new r.default(a,s),s=n.default.endOfWhiteSpace(i,s),s=this.parseComment(s),this.hasComment&&!this.valueRange.isEmpty()||(s=this.parseBlockValue(s)),s}},{key:"strValue",get:function(){if(!this.valueRange||!this.context)return null;for(var e=this.valueRange,t=e.start,r=e.end,a=this.context.src,o=a[r-1];t<r&&("\n"===o||"\t"===o||" "===o);)o=a[--r-1];for(o=a[t];t<r&&("\n"===o||"\t"===o||" "===o);)o=a[++t];for(var i="",s=t;s<r;++s){var u=a[s];if("\n"===u){var f=n.default.foldNewline(a,s,-1);i+=f.fold,s=f.offset}else if(" "===u||"\t"===u){for(var l=s,c=a[s+1];s<r&&(" "===c||"\t"===c);)c=a[(s+=1)+1];"\n"!==c&&(i+=s>l?a.slice(l,s+1):u)}else i+=u}return i}}],[{key:"endOfLine",value:function(e,t,n){for(var r=e[t],a=t;r&&"\n"!==r&&(!n||"["!==r&&"]"!==r&&"{"!==r&&"}"!==r&&","!==r);){var o=e[a+1];if(":"===r&&(!o||"\n"===o||"\t"===o||" "===o||n&&","===o))break;if((" "===r||"\t"===r)&&"#"===o)break;a+=1,r=o}return a}}]),t}(n.default);t.default=o}));a(W);var Q=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=a(N),r=a(C);function a(e){return e&&e.__esModule?e:{default:e}}var o=function(e){function t(){return s(this,t),g(this,c(t).apply(this,arguments))}return l(t,e),f(t,[{key:"parseCharCode",value:function(e,t,n){var r=this.context.src,a=r.substr(e,t),o=a.length===t&&/^[0-9a-fA-F]+$/.test(a)?parseInt(a,16):NaN;return isNaN(o)?(n.push(new x.YAMLSyntaxError(this,"Invalid escape sequence ".concat(r.substr(e-2,t+2)))),r.substr(e-2,t+2)):String.fromCodePoint(o)}},{key:"parse",value:function(e,a){this.context=e;var o=e.src,i=t.endOfQuote(o,a+1);return this.valueRange=new r.default(a,i),i=n.default.endOfWhiteSpace(o,i),i=this.parseComment(i)}},{key:"strValue",get:function(){if(!this.valueRange||!this.context)return null;var e=[],t=this.valueRange,r=t.start,a=t.end,o=this.context,i=o.indent,s=o.src;'"'!==s[a-1]&&e.push(new x.YAMLSyntaxError(this,'Missing closing "quote'));for(var u="",f=r+1;f<a-1;++f){var l=s[f];if("\n"===l){n.default.atDocumentBoundary(s,f+1)&&e.push(new x.YAMLSemanticError(this,"Document boundary indicators are not allowed within string values"));var c=n.default.foldNewline(s,f,i);u+=c.fold,f=c.offset,c.error&&e.push(new x.YAMLSemanticError(this,"Multi-line double-quoted string needs to be sufficiently indented"))}else if("\\"===l)switch(s[f+=1]){case"0":u+="\0";break;case"a":u+="";break;case"b":u+="\b";break;case"e":u+="";break;case"f":u+="\f";break;case"n":u+="\n";break;case"r":u+="\r";break;case"t":u+="\t";break;case"v":u+="\v";break;case"N":u+="…";break;case"_":u+=" ";break;case"L":u+="\u2028";break;case"P":u+="\u2029";break;case" ":u+=" ";break;case'"':u+='"';break;case"/":u+="/";break;case"\\":u+="\\";break;case"\t":u+="\t";break;case"x":u+=this.parseCharCode(f+1,2,e),f+=2;break;case"u":u+=this.parseCharCode(f+1,4,e),f+=4;break;case"U":u+=this.parseCharCode(f+1,8,e),f+=8;break;case"\n":for(;" "===s[f+1]||"\t"===s[f+1];)f+=1;break;default:e.push(new x.YAMLSyntaxError(this,"Invalid escape sequence ".concat(s.substr(f-1,2)))),u+="\\"+s[f]}else if(" "===l||"\t"===l){for(var d=f,h=s[f+1];" "===h||"\t"===h;)h=s[(f+=1)+1];"\n"!==h&&(u+=f>d?s.slice(d,f+1):l)}else u+=l}return e.length>0?{errors:e,str:u}:u}}],[{key:"endOfQuote",value:function(e,t){for(var n=e[t];n&&'"'!==n;)n=e[t+="\\"===n?2:1];return t+1}}]),t}(n.default);t.default=o}));a(Q);var V=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=a(N),r=a(C);function a(e){return e&&e.__esModule?e:{default:e}}var o=function(e){function t(){return s(this,t),g(this,c(t).apply(this,arguments))}return l(t,e),f(t,[{key:"parse",value:function(e,a){this.context=e;var o=e.src,i=t.endOfQuote(o,a+1);return this.valueRange=new r.default(a,i),i=n.default.endOfWhiteSpace(o,i),i=this.parseComment(i)}},{key:"strValue",get:function(){if(!this.valueRange||!this.context)return null;var e=[],t=this.valueRange,r=t.start,a=t.end,o=this.context,i=o.indent,s=o.src;"'"!==s[a-1]&&e.push(new x.YAMLSyntaxError(this,"Missing closing 'quote"));for(var u="",f=r+1;f<a-1;++f){var l=s[f];if("\n"===l){n.default.atDocumentBoundary(s,f+1)&&e.push(new x.YAMLSemanticError(this,"Document boundary indicators are not allowed within string values"));var c=n.default.foldNewline(s,f,i);u+=c.fold,f=c.offset,c.error&&e.push(new x.YAMLSemanticError(this,"Multi-line single-quoted string needs to be sufficiently indented"))}else if("'"===l)u+=l,"'"!==s[f+=1]&&e.push(new x.YAMLSyntaxError(this,"Unescaped single quote? This should not happen."));else if(" "===l||"\t"===l){for(var d=f,h=s[f+1];" "===h||"\t"===h;)h=s[(f+=1)+1];"\n"!==h&&(u+=f>d?s.slice(d,f+1):l)}else u+=l}return e.length>0?{errors:e,str:u}:u}}],[{key:"endOfQuote",value:function(e,t){for(var n=e[t];n;)if("'"===n){if("'"!==e[t+1])break;n=e[t+=2]}else n=e[t+=1];return t+1}}]),t}(n.default);t.default=o}));a(V);var $=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=p(F),r=p(U),a=p(D),o=p(I),i=p(K),u=p(N),l=p(W),c=p(Q),d=p(V),h=p(C);function p(e){return e&&e.__esModule?e:{default:e}}var v=function(){function e(){var t,f,p,v=this,g=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},m=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},y=m.atLineStart,_=m.inCollection,b=m.inFlow,w=m.indent,E=m.lineStart,O=m.parent;s(this,e),p=function(t,s){if(u.default.atDocumentBoundary(v.src,s))return null;var f,p=new e(v,t),g=p.parseProps(s),m=g.props,y=g.type,_=g.valueStart;switch(y){case T.Type.ALIAS:f=new n.default(y,m);break;case T.Type.BLOCK_FOLDED:case T.Type.BLOCK_LITERAL:f=new r.default(y,m);break;case T.Type.FLOW_MAP:case T.Type.FLOW_SEQ:f=new i.default(y,m);break;case T.Type.MAP_KEY:case T.Type.MAP_VALUE:case T.Type.SEQ_ITEM:f=new o.default(y,m);break;case T.Type.COMMENT:case T.Type.PLAIN:f=new l.default(y,m);break;case T.Type.QUOTE_DOUBLE:f=new c.default(y,m);break;case T.Type.QUOTE_SINGLE:f=new d.default(y,m);break;default:return f.error=new x.YAMLSyntaxError(f,"Unknown node type: ".concat(JSON.stringify(y))),f.range=new h.default(s,s+1),f}var b=f.parse(p,_);if(f.range=new h.default(s,b),b<=s&&(f.error=new Error("Node#parse consumed no characters"),f.error.parseEnd=b,f.error.source=f,f.range.end=s+1),p.nodeStartsCollection(f)){f.error||p.atLineStart||p.parent.type!==T.Type.DOCUMENT||(f.error=new x.YAMLSyntaxError(f,"Block collection must not have preceding content here (e.g. directives-end indicator)"));var w=new a.default(f);return b=w.parse(new e(p),b),w.range=new h.default(s,b),w}return f},(f="parseNode")in(t=this)?Object.defineProperty(t,f,{value:p,enumerable:!0,configurable:!0,writable:!0}):t[f]=p,this.atLineStart=null!=y?y:g.atLineStart||!1,this.inCollection=null!=_?_:g.inCollection||!1,this.inFlow=null!=b?b:g.inFlow||!1,this.indent=null!=w?w:g.indent,this.lineStart=null!=E?E:g.lineStart,this.parent=null!=O?O:g.parent||{},this.root=g.root,this.src=g.src}return f(e,null,[{key:"parseType",value:function(e,t,n){switch(e[t]){case"*":return T.Type.ALIAS;case">":return T.Type.BLOCK_FOLDED;case"|":return T.Type.BLOCK_LITERAL;case"{":return T.Type.FLOW_MAP;case"[":return T.Type.FLOW_SEQ;case"?":return!n&&u.default.atBlank(e,t+1,!0)?T.Type.MAP_KEY:T.Type.PLAIN;case":":return!n&&u.default.atBlank(e,t+1,!0)?T.Type.MAP_VALUE:T.Type.PLAIN;case"-":return!n&&u.default.atBlank(e,t+1,!0)?T.Type.SEQ_ITEM:T.Type.PLAIN;case'"':return T.Type.QUOTE_DOUBLE;case"'":return T.Type.QUOTE_SINGLE;default:return T.Type.PLAIN}}}]),f(e,[{key:"nodeStartsCollection",value:function(e){var t=this.inCollection,n=this.inFlow,r=this.src;if(t||n)return!1;if(e instanceof o.default)return!0;var a=e.range.end;return"\n"!==r[a]&&"\n"!==r[a-1]&&":"===r[a=u.default.endOfWhiteSpace(r,a)]}},{key:"parseProps",value:function(t){for(var n=this.inFlow,r=this.parent,a=this.src,o=[],i=!1,s=a[t=u.default.endOfWhiteSpace(a,t)];s===T.Char.ANCHOR||s===T.Char.COMMENT||s===T.Char.TAG||"\n"===s;){if("\n"===s){var f=t+1,l=u.default.endOfIndent(a,f),c=l-(f+this.indent),d=r.type===T.Type.SEQ_ITEM&&r.context.atLineStart;if(!u.default.nextNodeIsIndented(a[l],c,!d))break;this.atLineStart=!0,this.lineStart=f,i=!1,t=l}else if(s===T.Char.COMMENT){var p=u.default.endOfLine(a,t+1);o.push(new h.default(t,p)),t=p}else{var v=u.default.endOfIdentifier(a,t+1);s===T.Char.TAG&&","===a[v]&&/^[a-zA-Z0-9-]+\.[a-zA-Z0-9-]+,\d\d\d\d(-\d\d){0,2}\/\S/.test(a.slice(t+1,v+13))&&(v=u.default.endOfIdentifier(a,v+5)),o.push(new h.default(t,v)),i=!0,t=u.default.endOfWhiteSpace(a,v)}s=a[t]}return i&&":"===s&&u.default.atBlank(a,t+1,!0)&&(t-=1),{props:o,type:e.parseType(a,t,n),valueStart:t}}},{key:"pretty",get:function(){var e={start:"".concat(this.lineStart," + ").concat(this.indent),in:[],parent:this.parent.type};return this.atLineStart||(e.start+=" + N"),this.inCollection&&e.in.push("collection"),this.inFlow&&e.in.push("flow"),e}}]),e}();t.default=v}));a($);var q=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){var t=[];-1!==e.indexOf("\r")&&(e=e.replace(/\r\n?/g,(function(e,n){return e.length>1&&t.push(n),"\n"})));var a=[],o=0;do{var i=new n.default,s=new r.default({src:e});o=i.parse(s,o),a.push(i)}while(o<e.length);return a.setOrigRanges=function(){if(0===t.length)return!1;for(var e=1;e<t.length;++e)t[e]-=e;for(var n=0,r=0;r<a.length;++r)n=a[r].setOrigRanges(t,n);return t.splice(0,t.length),!0},a.toString=function(){return a.join("...\n")},a};var n=a(Y),r=a($);function a(e){return e&&e.__esModule?e:{default:e}}}));a(q);var J=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.addCommentBefore=function(e,t,n){if(!n)return e;var r=n.replace(/[\s\S]^/gm,"$&".concat(t,"#"));return"#".concat(r,"\n").concat(t).concat(e)},t.default=function(e,t,n){return n?-1===n.indexOf("\n")?"".concat(e," #").concat(n):"".concat(e,"\n")+n.replace(/^/gm,"".concat(t||"","#")):e}}));a(J);J.addCommentBefore;var G=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function e(t,n,r){if(Array.isArray(t))return t.map((function(t,n){return e(t,String(n),r)}));if(t&&"function"==typeof t.toJSON){var a=r&&r.anchors&&r.anchors.find((function(e){return e.node===t}));a&&(r.onCreate=function(e){a.res=e,delete r.onCreate});var o=t.toJSON(n,r);return a&&r.onCreate&&r.onCreate(o),o}return t}}));a(G);var H=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;t.default=function e(){s(this,e)}}));a(H);var z=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(G);function r(e){return e&&e.__esModule?e:{default:e}}var a=function(e){function t(e){var n;return s(this,t),(n=g(this,c(t).call(this))).value=e,n}return l(t,e),f(t,[{key:"toJSON",value:function(e,t){return t&&t.keep?this.value:(0,n.default)(this.value,e,t)}},{key:"toString",value:function(){return String(this.value)}}]),t}(r(H).default);t.default=a}));a(z);var Z=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=d(J),r=d(G),a=d(X),o=d(H),u=d(z);function d(e){return e&&e.__esModule?e:{default:e}}var h=function(e){function t(e){var n,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return s(this,t),(n=g(this,c(t).call(this))).key=e,n.value=r,n.type="PAIR",n}return l(t,e),f(t,[{key:"addToJSMap",value:function(e,t){var n=(0,r.default)(this.key,"",e);if(t instanceof Map){var a=(0,r.default)(this.value,n,e);t.set(n,a)}else if(t instanceof Set)t.add(n);else{var s=function(e,t,n){return null===t?"":"object"!==i(t)?String(t):e instanceof o.default&&n&&n.doc?e.toString({anchors:{},doc:n.doc,indent:"",inFlow:!0,inStringifyKey:!0}):JSON.stringify(t)}(this.key,n,e);t[s]=(0,r.default)(this.value,s,e)}return t}},{key:"toJSON",value:function(e,t){var n=t&&t.mapAsMap?new Map:{};return this.addToJSMap(t,n)}},{key:"toString",value:function(e,t,r){if(!e||!e.doc)return JSON.stringify(this);var s=e.doc.options.simpleKeys,u=this.key,f=this.value,l=u instanceof o.default&&u.comment;if(s){if(l)throw new Error("With simple keys, key nodes cannot have comments");if(u instanceof a.default){throw new Error("With simple keys, collection cannot be used as a key value")}}var c=!s&&(!u||l||u instanceof a.default||u.type===T.Type.BLOCK_FOLDED||u.type===T.Type.BLOCK_LITERAL),d=e,h=d.doc,p=d.indent;e=Object.assign({},e,{implicitKey:!c,indent:p+" "});var v=!1,g=h.schema.stringify(u,e,(function(){return l=null}),(function(){return v=!0}));if(g=(0,n.default)(g,e.indent,l),e.allNullValues&&!s)return this.comment?(g=(0,n.default)(g,e.indent,this.comment),t&&t()):v&&!l&&r&&r(),e.inFlow?g:"? ".concat(g);g=c?"? ".concat(g,"\n").concat(p,":"):"".concat(g,":"),this.comment&&(g=(0,n.default)(g,e.indent,this.comment),t&&t());var m="",y=null;if(f instanceof o.default){if(f.spaceBefore&&(m="\n"),f.commentBefore){var _=f.commentBefore.replace(/^/gm,"".concat(e.indent,"#"));m+="\n".concat(_)}y=f.comment}else f&&"object"===i(f)&&(f=h.schema.createNode(f,!0));e.implicitKey=!1,v=!1;var b=h.schema.stringify(f,e,(function(){return y=null}),(function(){return v=!0})),w=" ";if(m||this.comment)w="".concat(m,"\n").concat(e.indent);else if(!c&&f instanceof a.default){("["===b[0]||"{"===b[0])&&!b.includes("\n")||(w="\n".concat(e.indent))}return v&&!y&&r&&r(),(0,n.default)(g+w+b,e.indent,y)}},{key:"commentBefore",get:function(){return this.key&&this.key.commentBefore},set:function(e){null==this.key&&(this.key=new u.default(null)),this.key.commentBefore=e}}]),t}(o.default);t.default=h}));a(Z);var X=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.isEmptyPath=void 0;var n=u(J),r=u(H),a=u(Z),o=u(z);function u(e){return e&&e.__esModule?e:{default:e}}function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var h=function(e){return null==e||"object"===i(e)&&e[Symbol.iterator]().next().done};t.isEmptyPath=h;var p=function(e){function t(){var e,n;s(this,t);for(var r=arguments.length,a=new Array(r),o=0;o<r;o++)a[o]=arguments[o];return d(v(n=g(this,(e=c(t)).call.apply(e,[this].concat(a)))),"items",[]),n}return l(t,e),f(t,[{key:"addIn",value:function(e,n){if(h(e))this.add(n);else{var r=_(e),a=r[0],o=r.slice(1),i=this.get(a,!0);if(!(i instanceof t))throw new Error("Expected YAML collection at ".concat(a,". Remaining path: ").concat(o));i.addIn(o,n)}}},{key:"deleteIn",value:function(e){var n=_(e),r=n[0],a=n.slice(1);if(0===a.length)return this.delete(r);var o=this.get(r,!0);if(o instanceof t)return o.deleteIn(a);throw new Error("Expected YAML collection at ".concat(r,". Remaining path: ").concat(a))}},{key:"getIn",value:function(e,n){var r=_(e),a=r[0],i=r.slice(1),s=this.get(a,!0);return 0===i.length?!n&&s instanceof o.default?s.value:s:s instanceof t?s.getIn(i,n):void 0}},{key:"hasAllNullValues",value:function(){return this.items.every((function(e){if(!(e instanceof a.default))return!1;var t=e.value;return null==t||t instanceof o.default&&null==t.value&&!t.commentBefore&&!t.comment&&!t.tag}))}},{key:"hasIn",value:function(e){var n=_(e),r=n[0],a=n.slice(1);if(0===a.length)return this.has(r);var o=this.get(r,!0);return o instanceof t&&o.hasIn(a)}},{key:"setIn",value:function(e,n){var r=_(e),a=r[0],o=r.slice(1);if(0===o.length)this.set(a,n);else{var i=this.get(a,!0);if(!(i instanceof t))throw new Error("Expected YAML collection at ".concat(a,". Remaining path: ").concat(o));i.setIn(o,n)}}},{key:"toJSON",value:function(){return null}},{key:"toString",value:function(e,r,a,o){var i=this,s=r.blockItem,u=r.flowChars,f=r.isMap,l=r.itemIndent,c=e,d=c.doc,h=c.indent,p=this.type&&"FLOW"===this.type.substr(0,4)||e.inFlow;p&&(l+=" ");var v=f&&this.hasAllNullValues();e=Object.assign({},e,{allNullValues:v,indent:l,inFlow:p,type:null});var g,m=!1,y=!1,_=this.items.reduce((function(t,r,a){var o;r&&(!m&&r.spaceBefore&&t.push({type:"comment",str:""}),r.commentBefore&&r.commentBefore.match(/^.*$/gm).forEach((function(e){t.push({type:"comment",str:"#".concat(e)})})),r.comment&&(o=r.comment),p&&(!m&&r.spaceBefore||r.commentBefore||r.comment||r.key&&(r.key.commentBefore||r.key.comment)||r.value&&(r.value.commentBefore||r.value.comment))&&(y=!0)),m=!1;var s=d.schema.stringify(r,e,(function(){return o=null}),(function(){return m=!0}));return p&&!y&&s.includes("\n")&&(y=!0),p&&a<i.items.length-1&&(s+=","),s=(0,n.default)(s,l,o),m&&(o||p)&&(m=!1),t.push({type:"item",str:s}),t}),[]);if(0===_.length)g=u.start+u.end;else if(p){var b=u.start,w=u.end,E=_.map((function(e){return e.str}));if(y||E.reduce((function(e,t){return e+t.length+2}),2)>t.maxFlowStringSingleLineLength){g=b;var O=!0,M=!1,S=void 0;try{for(var A,k=E[Symbol.iterator]();!(O=(A=k.next()).done);O=!0){var L=A.value;g+=L?"\n ".concat(h).concat(L):"\n"}}catch(e){M=!0,S=e}finally{try{O||null==k.return||k.return()}finally{if(M)throw S}}g+="\n".concat(h).concat(w)}else g="".concat(b," ").concat(E.join(" ")," ").concat(w)}else{var T=_.map(s);g=T.shift();var P=!0,C=!1,N=void 0;try{for(var x,R=T[Symbol.iterator]();!(P=(x=R.next()).done);P=!0){var I=x.value;g+=I?"\n".concat(h).concat(I):"\n"}}catch(e){C=!0,N=e}finally{try{P||null==R.return||R.return()}finally{if(C)throw N}}}return this.comment?(g+="\n"+this.comment.replace(/^/gm,"".concat(h,"#")),a&&a()):m&&o&&o(),g}}]),t}(r.default);t.default=p,d(p,"maxFlowStringSingleLineLength",60)}));a(X);X.isEmptyPath;var ee=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(G),r=i(X),a=i(H),o=i(Z);function i(e){return e&&e.__esModule?e:{default:e}}var u,d,h,p=function e(t,n){if(t instanceof v){var a=n.find((function(e){return e.node===t.source}));return a.count*a.aliasCount}if(t instanceof r.default){var i=0,s=!0,u=!1,f=void 0;try{for(var l,c=t.items[Symbol.iterator]();!(s=(l=c.next()).done);s=!0){var d=e(l.value,n);d>i&&(i=d)}}catch(e){u=!0,f=e}finally{try{s||null==c.return||c.return()}finally{if(u)throw f}}return i}if(t instanceof o.default){var h=e(t.key,n),p=e(t.value,n);return Math.max(h,p)}return 1},v=function(e){function t(e){var n;return s(this,t),(n=g(this,c(t).call(this))).source=e,n.type=T.Type.ALIAS,n}return l(t,e),f(t,null,[{key:"stringify",value:function(e,t){var n=e.range,r=e.source,a=t.anchors,o=t.doc,i=t.implicitKey,s=t.inStringifyKey,u=Object.keys(a).find((function(e){return a[e]===r}));if(!u&&s&&(u=o.anchors.getName(r)||o.anchors.newName()),u)return"*".concat(u).concat(i?" ":"");var f=o.anchors.getName(r)?"Alias node must be after source node":"Source node not found for alias node";throw new Error("".concat(f," [").concat(n,"]"))}}]),f(t,[{key:"toJSON",value:function(e,t){var r=this;if(!t)return(0,n.default)(this.source,e,t);var a=t.anchors,o=t.maxAliasCount,i=a.find((function(e){return e.node===r.source}));if(!i||void 0===i.res){var s="This should not happen: Alias anchor was not resolved?";throw this.cstNode?new x.YAMLReferenceError(this.cstNode,s):new ReferenceError(s)}if(o>=0&&(i.count+=1,0===i.aliasCount&&(i.aliasCount=p(this.source,a)),i.count*i.aliasCount>o)){var u="Excessive alias count indicates a resource exhaustion attack";throw this.cstNode?new x.YAMLReferenceError(this.cstNode,u):new ReferenceError(u)}return i.res}},{key:"toString",value:function(e){return t.stringify(this,e)}},{key:"tag",set:function(e){throw new Error("Alias nodes cannot have tags")}}]),t}(a.default);t.default=v,h=!0,(d="default")in(u=v)?Object.defineProperty(u,d,{value:h,enumerable:!0,configurable:!0,writable:!0}):u[d]=h}));a(ee);var te=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.findPair=i,t.default=void 0;var n=o(X),r=o(Z),a=o(z);function o(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var n=t instanceof a.default?t.value:t,o=!0,i=!1,s=void 0;try{for(var u,f=e[Symbol.iterator]();!(o=(u=f.next()).done);o=!0){var l=u.value;if(l instanceof r.default){if(l.key===t||l.key===n)return l;if(l.key&&l.key.value===n)return l}}}catch(e){i=!0,s=e}finally{try{o||null==f.return||f.return()}finally{if(i)throw s}}}var u=function(e){function t(){return s(this,t),g(this,c(t).apply(this,arguments))}return l(t,e),f(t,[{key:"add",value:function(e){if(e?e instanceof r.default||(e=new r.default(e.key||e,e.value)):e=new r.default(e),i(this.items,e.key))throw new Error("Key ".concat(e.key," already set"));this.items.push(e)}},{key:"delete",value:function(e){var t=i(this.items,e);return!!t&&this.items.splice(this.items.indexOf(t),1).length>0}},{key:"get",value:function(e,t){var n=i(this.items,e),r=n&&n.value;return!t&&r instanceof a.default?r.value:r}},{key:"has",value:function(e){return!!i(this.items,e)}},{key:"set",value:function(e,t){var n=i(this.items,e);n?n.value=t:this.items.push(new r.default(e,t))}},{key:"toJSON",value:function(e,t,n){var r=n?new n:t&&t.mapAsMap?new Map:{};t&&t.onCreate&&t.onCreate(r);var a=!0,o=!1,i=void 0;try{for(var s,u=this.items[Symbol.iterator]();!(a=(s=u.next()).done);a=!0){s.value.addToJSMap(t,r)}}catch(e){o=!0,i=e}finally{try{a||null==u.return||u.return()}finally{if(o)throw i}}return r}},{key:"toString",value:function(e,n,a){if(!e)return JSON.stringify(this);var o=!0,i=!1,s=void 0;try{for(var u,f=this.items[Symbol.iterator]();!(o=(u=f.next()).done);o=!0){var l=u.value;if(!(l instanceof r.default))throw new Error("Map items must all be pairs; found ".concat(JSON.stringify(l)," instead"))}}catch(e){i=!0,s=e}finally{try{o||null==f.return||f.return()}finally{if(i)throw s}}return m(c(t.prototype),"toString",this).call(this,e,{blockItem:function(e){return e.str},flowChars:{start:"{",end:"}"},isMap:!0,itemIndent:e.indent||""},n,a)}}]),t}(n.default);t.default=u}));a(te);te.findPair;var ne=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=o(G),r=o(X),a=o(z);function o(e){return e&&e.__esModule?e:{default:e}}function i(e){var t=e instanceof a.default?e.value:e;return t&&"string"==typeof t&&(t=Number(t)),Number.isInteger(t)&&t>=0?t:null}var u=function(e){function t(){return s(this,t),g(this,c(t).apply(this,arguments))}return l(t,e),f(t,[{key:"add",value:function(e){this.items.push(e)}},{key:"delete",value:function(e){var t=i(e);return"number"==typeof t&&this.items.splice(t,1).length>0}},{key:"get",value:function(e,t){var n=i(e);if("number"==typeof n){var r=this.items[n];return!t&&r instanceof a.default?r.value:r}}},{key:"has",value:function(e){var t=i(e);return"number"==typeof t&&t<this.items.length}},{key:"set",value:function(e,t){var n=i(e);if("number"!=typeof n)throw new Error("Expected a valid index, not ".concat(e,"."));this.items[n]=t}},{key:"toJSON",value:function(e,t){var r=[];t&&t.onCreate&&t.onCreate(r);var a=0,o=!0,i=!1,s=void 0;try{for(var u,f=this.items[Symbol.iterator]();!(o=(u=f.next()).done);o=!0){var l=u.value;r.push((0,n.default)(l,String(a++),t))}}catch(e){i=!0,s=e}finally{try{o||null==f.return||f.return()}finally{if(i)throw s}}return r}},{key:"toString",value:function(e,n,r){return e?m(c(t.prototype),"toString",this).call(this,e,{blockItem:function(e){return"comment"===e.type?e.str:"- ".concat(e.str)},flowChars:{start:"[",end:"]"},isMap:!1,itemIndent:(e.indent||"")+" "},n,r):JSON.stringify(this)}}]),t}(r.default);t.default=u}));a(ne);var re=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.MERGE_KEY=void 0;var n=i(te),r=i(Z),a=i(z),o=i(ne);function i(e){return e&&e.__esModule?e:{default:e}}var u="<<";t.MERGE_KEY=u;var d=function(e){function t(e){var n;if(s(this,t),e instanceof r.default){var i=e.value;i instanceof o.default||((i=new o.default).items.push(e.value),i.range=e.value.range),(n=g(this,c(t).call(this,e.key,i))).range=e.range}else n=g(this,c(t).call(this,new a.default(u),new o.default));return n.type="MERGE_PAIR",g(n)}return l(t,e),f(t,[{key:"addToJSMap",value:function(e,t){var r=!0,a=!1,o=void 0;try{for(var i,s=this.value.items[Symbol.iterator]();!(r=(i=s.next()).done);r=!0){var u=i.value.source;if(!(u instanceof n.default))throw new Error("Merge sources must be maps");var f=u.toJSON(null,e,Map),l=!0,c=!1,d=void 0;try{for(var h,p=f[Symbol.iterator]();!(l=(h=p.next()).done);l=!0){var v=y(h.value,2),g=v[0],m=v[1];t instanceof Map?t.has(g)||t.set(g,m):t instanceof Set?t.add(g):Object.prototype.hasOwnProperty.call(t,g)||(t[g]=m)}}catch(e){c=!0,d=e}finally{try{l||null==p.return||p.return()}finally{if(c)throw d}}}}catch(e){a=!0,o=e}finally{try{r||null==s.return||s.return()}finally{if(a)throw o}}return t}},{key:"toString",value:function(e,n){var r=this.value;if(r.items.length>1)return m(c(t.prototype),"toString",this).call(this,e,n);this.value=r.items[0];var a=m(c(t.prototype),"toString",this).call(this,e,n);return this.value=r,a}}]),t}(r.default);t.default=d}));a(re);re.MERGE_KEY;var ae=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=u(ee),r=u(te),a=u(re),o=u(z),i=u(ne);function u(e){return e&&e.__esModule?e:{default:e}}var l=function(){function e(t){var n,r,a;s(this,e),a={},(r="map")in(n=this)?Object.defineProperty(n,r,{value:a,enumerable:!0,configurable:!0,writable:!0}):n[r]=a,this.prefix=t}return f(e,null,[{key:"validAnchorNode",value:function(e){return e instanceof o.default||e instanceof i.default||e instanceof r.default}}]),f(e,[{key:"createAlias",value:function(e,t){return this.setAnchor(e,t),new n.default(e)}},{key:"createMergePair",value:function(){for(var e=this,t=new a.default,o=arguments.length,i=new Array(o),s=0;s<o;s++)i[s]=arguments[s];return t.value.items=i.map((function(t){if(t instanceof n.default){if(t.source instanceof r.default)return t}else if(t instanceof r.default)return e.createAlias(t);throw new Error("Merge sources must be Map nodes or their Aliases")})),t}},{key:"getName",value:function(e){var t=this.map;return Object.keys(t).find((function(n){return t[n]===e}))}},{key:"getNode",value:function(e){return this.map[e]}},{key:"newName",value:function(e){e||(e=this.prefix);for(var t=Object.keys(this.map),n=1;;++n){var r="".concat(e).concat(n);if(-1===t.indexOf(r))return r}}},{key:"resolveNodes",value:function(){var e=this.map,t=this._cstAliases;Object.keys(e).forEach((function(t){e[t]=e[t].resolved})),t.forEach((function(e){e.source=e.source.resolved})),delete this._cstAliases}},{key:"setAnchor",value:function(t,n){if(null!=t&&!e.validAnchorNode(t))throw new Error("Anchors may only be set for Scalar, Seq and Map nodes");if(n&&/[\x00-\x19\s,[\]{}]/.test(n))throw new Error("Anchor names must not contain whitespace or control characters");var r=this.map,a=t&&Object.keys(r).find((function(e){return r[e]===t}));if(a){if(!n)return a;a!==n&&(delete r[a],r[n]=t)}else{if(!n){if(!t)return null;n=this.newName()}r[n]=t}return n}}]),e}();t.default=l}));a(ae);var oe=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=o(X),r=o(Z),a=o(z);function o(e){return e&&e.__esModule?e:{default:e}}t.default=function(e){return Object.keys(function e(t,o){if(t&&"object"===i(t)){var s=t.tag;t instanceof n.default?(s&&(o[s]=!0),t.items.forEach((function(t){return e(t,o)}))):t instanceof r.default?(e(t.key,o),e(t.value,o)):t instanceof a.default&&s&&(o[s]=!0)}return o}(e,{}))}}));a(oe);var ie=o((function(e,t){function n(e,t){if(!r||!r._YAML_SILENCE_WARNINGS){var n=(r&&r.process).emitWarning;n?n(e,t):console.warn(t?"".concat(t,": ").concat(e):e)}}Object.defineProperty(t,"__esModule",{value:!0}),t.warn=n,t.warnFileDeprecation=function(e){if(r&&r._YAML_SILENCE_DEPRECATION_WARNINGS)return;var t=e.replace(/.*yaml[/\\]/i,"").replace(/\.js$/,"").replace(/\\/g,"/");n("The endpoint 'yaml/".concat(t,"' will be removed in a future release."),"DeprecationWarning")},t.warnOptionDeprecation=function(e,t){if(r&&r._YAML_SILENCE_DEPRECATION_WARNINGS)return;if(a[e])return;a[e]=!0;var o="The option '".concat(e,"' will be removed in a future release");n(o+=t?", use '".concat(t,"' instead."):".","DeprecationWarning")};var a={}}));a(ie);ie.warn,ie.warnFileDeprecation,ie.warnOptionDeprecation;var se=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t,o,i){var s=i.indentAtStart,u=i.lineWidth,f=void 0===u?80:u,l=i.minContentWidth,c=void 0===l?20:l,d=i.onFold,h=i.onOverflow;if(!f||f<0)return e;var p=Math.max(1+c,1+f-t.length);if(e.length<=p)return e;var v,g=[],m={},y=f-("number"==typeof s?s:t.length),_=void 0,b=void 0,w=!1,E=-1;o===n&&-1!==(E=a(e,E))&&(y=E+p);for(;v=e[E+=1];){if(o===r&&"\\"===v)switch(e[E+1]){case"x":E+=3;break;case"u":E+=5;break;case"U":E+=9;break;default:E+=1}if("\n"===v)o===n&&(E=a(e,E)),y=E+p,_=void 0;else{if(" "===v&&b&&" "!==b&&"\n"!==b&&"\t"!==b){var O=e[E+1];O&&" "!==O&&"\n"!==O&&"\t"!==O&&(_=E)}if(E>=y)if(_)g.push(_),y=_+p,_=void 0;else if(o===r){for(;" "===b||"\t"===b;)b=v,v=e[E+=1],w=!0;g.push(E-2),m[E-2]=!0,y=E-2+p,_=void 0}else w=!0}b=v}w&&h&&h();if(0===g.length)return e;d&&d();for(var M=e.slice(0,g[0]),S=0;S<g.length;++S){var A=g[S],k=g[S+1]||e.length;o===r&&m[A]&&(M+="".concat(e[A],"\\")),M+="\n".concat(t).concat(e.slice(A+1,k))}return M},t.FOLD_QUOTED=t.FOLD_BLOCK=t.FOLD_FLOW=void 0;t.FOLD_FLOW="flow";var n="block";t.FOLD_BLOCK=n;var r="quoted";t.FOLD_QUOTED=r;var a=function(e,t){for(var n=e[t+1];" "===n||"\t"===n;){do{n=e[t+=1]}while(n&&"\n"!==n);n=e[t+1]}return t}}));a(se);se.FOLD_QUOTED,se.FOLD_BLOCK,se.FOLD_FLOW;var ue=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.strOptions=t.nullOptions=t.boolOptions=t.binaryOptions=void 0;var n={defaultType:T.Type.BLOCK_LITERAL,lineWidth:76};t.binaryOptions=n;t.boolOptions={trueStr:"true",falseStr:"false"};t.nullOptions={nullStr:"null"};var r={defaultType:T.Type.PLAIN,doubleQuoted:{jsonEncoding:!1,minMultiLineLength:40},fold:{lineWidth:80,minContentWidth:20}};t.strOptions=r}));a(ue);ue.strOptions,ue.nullOptions,ue.boolOptions,ue.binaryOptions;var fe=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.stringifyNumber=function(e){var t=e.format,n=e.minFractionDigits,r=e.tag,a=e.value;if(!isFinite(a))return isNaN(a)?".nan":a<0?"-.inf":".inf";var o=JSON.stringify(a);if(!t&&n&&(!r||"tag:yaml.org,2002:float"===r)&&/^\d/.test(o)){var i=o.indexOf(".");i<0&&(i=o.length,o+=".");for(var s=n-(o.length-i-1);s-- >0;)o+="0"}return o},t.stringifyString=function(e,t,i,s){var u=ue.strOptions.defaultType,f=t.implicitKey,l=t.inFlow,c=e,d=c.type,h=c.value;"string"!=typeof h&&(h=String(h),e=Object.assign({},e,{value:h}));var p=function(u){switch(u){case T.Type.BLOCK_FOLDED:case T.Type.BLOCK_LITERAL:return o(e,t,i,s);case T.Type.QUOTE_DOUBLE:return r(h,t);case T.Type.QUOTE_SINGLE:return a(h,t);case T.Type.PLAIN:return function(e,t,i,s){var u=e.comment,f=e.type,l=e.value,c=t.actualString,d=t.implicitKey,h=t.indent,p=t.inFlow,v=t.tags;if(d&&/[\n[\]{},]/.test(l)||p&&/[[\]{},]/.test(l))return r(l,t);if(!l||/^[\n\t ,[\]{}#&*!|>'"%@`]|^[?-]$|^[?-][ \t]|[\n:][ \t]|[ \t]\n|[\n\t ]#|[\n\t :]$/.test(l))return d||p||-1===l.indexOf("\n")?-1!==l.indexOf('"')&&-1===l.indexOf("'")?a(l,t):r(l,t):o(e,t,i,s);if(!d&&!p&&f!==T.Type.PLAIN&&-1!==l.indexOf("\n"))return o(e,t,i,s);var g=l.replace(/\n+/g,"$&\n".concat(h));if(c&&"string"!=typeof v.resolveScalar(g).value)return r(l,t);var m=d?g:(0,n.default)(g,h,n.FOLD_FLOW,ue.strOptions.fold);if(u&&!p&&(-1!==m.indexOf("\n")||-1!==u.indexOf("\n")))return i&&i(),(0,J.addCommentBefore)(m,h,u);return m}(e,t,i,s);default:return null}};d!==T.Type.QUOTE_DOUBLE&&/[\x00-\x08\x0b-\x1f\x7f-\x9f]/.test(h)?d=T.Type.QUOTE_DOUBLE:!f&&!l||d!==T.Type.BLOCK_FOLDED&&d!==T.Type.BLOCK_LITERAL||(d=T.Type.QUOTE_DOUBLE);var v=p(d);if(null===v&&null===(v=p(u)))throw new Error("Unsupported default string type ".concat(u));return v};var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}(se);function r(e,t){var r=t.implicitKey,a=t.indent,o=ue.strOptions.doubleQuoted,i=o.jsonEncoding,s=o.minMultiLineLength,u=JSON.stringify(e);if(i)return u;for(var f="",l=0,c=0,d=u[c];d;d=u[++c])if(" "===d&&"\\"===u[c+1]&&"n"===u[c+2]&&(f+=u.slice(l,c)+"\\ ",l=c+=1,d="\\"),"\\"===d)switch(u[c+1]){case"u":f+=u.slice(l,c);var h=u.substr(c+2,4);switch(h){case"0000":f+="\\0";break;case"0007":f+="\\a";break;case"000b":f+="\\v";break;case"001b":f+="\\e";break;case"0085":f+="\\N";break;case"00a0":f+="\\_";break;case"2028":f+="\\L";break;case"2029":f+="\\P";break;default:"00"===h.substr(0,2)?f+="\\x"+h.substr(2):f+=u.substr(c,6)}l=(c+=5)+1;break;case"n":if(r||'"'===u[c+2]||u.length<s)c+=1;else{for(f+=u.slice(l,c)+"\n\n";"\\"===u[c+2]&&"n"===u[c+3]&&'"'!==u[c+4];)f+="\n",c+=2;f+=a," "===u[c+2]&&(f+="\\"),l=(c+=1)+1}break;default:c+=1}return f=l?f+u.slice(l):u,r?f:(0,n.default)(f,a,n.FOLD_QUOTED,ue.strOptions.fold)}function a(e,t){var a=t.indent,o=t.implicitKey;if(o){if(/\n/.test(e))return r(e,t)}else if(/[ \t]\n|\n[ \t]/.test(e))return r(e,t);var i="'"+e.replace(/'/g,"''").replace(/\n+/g,"$&\n".concat(a))+"'";return o?i:(0,n.default)(i,a,n.FOLD_FLOW,ue.strOptions.fold)}function o(e,t,a,o){var i=e.comment,s=e.type,u=e.value;if(/\n[\t ]+$/.test(u)||/^\s*$/.test(u))return r(u,t);var f=t.indent||(t.forceBlockIndent?" ":""),l=f?"2":"1",c=s!==T.Type.BLOCK_FOLDED&&(s===T.Type.BLOCK_LITERAL||!function(e,t){var n=e.length;if(n<=t)return!1;for(var r=0,a=0;r<n;++r)if("\n"===e[r]){if(r-a>t)return!0;if(n-(a=r+1)<=t)return!1}return!0}(u,ue.strOptions.fold.lineWidth-f.length)),d=c?"|":">";if(!u)return d+"\n";var h="",p="";if(u=u.replace(/[\n\t ]*$/,(function(e){var t=e.indexOf("\n");return-1===t?d+="-":u!==e&&t===e.length-1||(d+="+",o&&o()),p=e.replace(/\n$/,""),""})).replace(/^[\n ]*/,(function(e){-1!==e.indexOf(" ")&&(d+=l);var t=e.match(/ +$/);return t?(h=e.slice(0,-t[0].length),t[0]):(h=e,"")})),p&&(p=p.replace(/\n+(?!\n|$)/g,"$&".concat(f))),h&&(h=h.replace(/\n+/g,"$&".concat(f))),i&&(d+=" #"+i.replace(/ ?[\r\n]+/g," "),a&&a()),!u)return"".concat(d).concat(l,"\n").concat(f).concat(p);if(c)return u=u.replace(/\n+/g,"$&".concat(f)),"".concat(d,"\n").concat(f).concat(h).concat(u).concat(p);u=u.replace(/\n+/g,"\n$&").replace(/(?:^|\n)([\t ].*)(?:([\n\t ]*)\n(?![\n\t ]))?/g,"$1$2").replace(/\n+/g,"$&".concat(f));var v=(0,n.default)("".concat(h).concat(u).concat(p),f,n.FOLD_BLOCK,ue.strOptions.fold);return"".concat(d,"\n").concat(f).concat(v)}}));a(fe);fe.stringifyNumber,fe.stringifyString;var le=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.checkFlowCollectionEnd=function(e,t){var n,r,a;switch(t.type){case T.Type.FLOW_MAP:n="}",r="flow map";break;case T.Type.FLOW_SEQ:n="]",r="flow sequence";break;default:return void e.push(new x.YAMLSemanticError(t,"Not a flow collection!?"))}for(var o=t.items.length-1;o>=0;--o){var i=t.items[o];if(!i||i.type!==T.Type.COMMENT){a=i;break}}if(a&&a.char!==n){var s,u="Expected ".concat(r," to end with ").concat(n);"number"==typeof a.offset?(s=new x.YAMLSemanticError(t,u)).offset=a.offset+1:(s=new x.YAMLSemanticError(a,u),a.range&&a.range.end&&(s.offset=a.range.end-a.range.start)),e.push(s)}},t.checkKeyLength=function(e,t,n,r,a){if(!r||"number"!=typeof a)return;var o=t.items[n],i=o&&o.range&&o.range.start;if(!i)for(var s=n-1;s>=0;--s){var u=t.items[s];if(u&&u.range){i=u.range.end+2*(n-s);break}}if(i>a+1024){var f=String(r).substr(0,8)+"..."+String(r).substr(-8);e.push(new x.YAMLSemanticError(t,'The "'.concat(f,'" key is too long')))}},t.resolveComments=function(e,t){var n=!0,r=!1,a=void 0;try{for(var o,i=t[Symbol.iterator]();!(n=(o=i.next()).done);n=!0){var s=o.value,u=s.afterKey,f=s.before,l=s.comment,c=e.items[f];c?(u&&c.value&&(c=c.value),void 0===l?!u&&c.commentBefore||(c.spaceBefore=!0):c.commentBefore?c.commentBefore+="\n"+l:c.commentBefore=l):void 0!==l&&(e.comment?e.comment+="\n"+l:e.comment=l)}}catch(e){r=!0,a=e}finally{try{n||null==i.return||i.return()}finally{if(r)throw a}}}}));a(le);le.checkFlowCollectionEnd,le.checkKeyLength,le.resolveComments;var ce=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(t.type!==T.Type.MAP&&t.type!==T.Type.FLOW_MAP){var u="A ".concat(t.type," node cannot be resolved as a mapping");return e.errors.push(new x.YAMLSyntaxError(t,u)),null}var f=t.type===T.Type.FLOW_MAP?function(e,t){for(var n=[],r=[],a=void 0,i=null,s=!1,u="{",f=0;f<t.items.length;++f){(0,le.checkKeyLength)(e.errors,t,f,a,i);var l=t.items[f];if("string"==typeof l.char){var c=l.char,d=l.offset;if("?"===c&&void 0===a&&!s){s=!0,u=":";continue}if(":"===c){if(void 0===a&&(a=null),":"===u){u=",";continue}}else if(s&&(void 0===a&&","!==c&&(a=null),s=!1),void 0!==a&&(r.push(new o.default(a)),a=void 0,i=null,","===c)){u=":";continue}if("}"===c){if(f===t.items.length-1)continue}else if(c===u){u=":";continue}var h="Flow map contains an unexpected ".concat(c),p=new x.YAMLSyntaxError(t,h);p.offset=d,e.errors.push(p)}else l.type===T.Type.BLANK_LINE?n.push({afterKey:!!a,before:r.length}):l.type===T.Type.COMMENT?n.push({afterKey:!!a,before:r.length,comment:l.comment}):void 0===a?(","===u&&e.errors.push(new x.YAMLSemanticError(l,"Separator , missing in flow map")),a=e.resolveNode(l),i=s?null:l.range.start):(","!==u&&e.errors.push(new x.YAMLSemanticError(l,"Indicator : missing in flow map entry")),r.push(new o.default(a,e.resolveNode(l))),a=void 0,s=!1)}(0,le.checkFlowCollectionEnd)(e.errors,t),void 0!==a&&r.push(new o.default(a));return{comments:n,items:r}}(e,t):function(e,t){for(var r=[],a=[],i=void 0,s=null,u=0;u<t.items.length;++u){var f=t.items[u];switch(f.type){case T.Type.BLANK_LINE:r.push({afterKey:!!i,before:a.length});break;case T.Type.COMMENT:r.push({afterKey:!!i,before:a.length,comment:f.comment});break;case T.Type.MAP_KEY:void 0!==i&&a.push(new o.default(i)),f.error&&e.errors.push(f.error),i=e.resolveNode(f.node),s=null;break;case T.Type.MAP_VALUE:if(void 0===i&&(i=null),f.error&&e.errors.push(f.error),!f.context.atLineStart&&f.node&&f.node.type===T.Type.MAP&&!f.node.context.atLineStart){e.errors.push(new x.YAMLSemanticError(f.node,"Nested mappings are not allowed in compact mappings"))}var c=f.node;if(!c&&f.props.length>0){(c=new n.default(T.Type.PLAIN,[])).context={parent:f,src:f.context.src};var d=f.range.start+1;if(c.range={start:d,end:d},c.valueRange={start:d,end:d},"number"==typeof f.range.origStart){var h=f.range.origStart+1;c.range.origStart=c.range.origEnd=h,c.valueRange.origStart=c.valueRange.origEnd=h}}var p=new o.default(i,e.resolveNode(c));l(f,p),a.push(p),(0,le.checkKeyLength)(e.errors,t,u,i,s),i=void 0,s=null;break;default:void 0!==i&&a.push(new o.default(i)),i=e.resolveNode(f),s=f.range.start,f.error&&e.errors.push(f.error);e:for(var v=u+1;;++v){var g=t.items[v];switch(g&&g.type){case T.Type.BLANK_LINE:case T.Type.COMMENT:continue e;case T.Type.MAP_VALUE:break e;default:e.errors.push(new x.YAMLSemanticError(f,"Implicit map keys need to be followed by map values"));break e}}if(f.valueRangeContainsNewline){e.errors.push(new x.YAMLSemanticError(f,"Implicit map keys need to be on a single line"))}}}void 0!==i&&a.push(new o.default(i));return{comments:r,items:a}}(e,t),c=f.comments,d=f.items,h=new r.default;h.items=d,(0,le.resolveComments)(h,c);for(var p=!1,v=0;v<d.length;++v){var g=d[v].key;if(g instanceof s.default&&(p=!0),e.schema.merge&&g&&g.value===a.MERGE_KEY){d[v]=new a.default(d[v]);var m=d[v].value.items,y=null;m.some((function(e){if(e instanceof i.default){var t=e.source.type;return t!==T.Type.MAP&&t!==T.Type.FLOW_MAP&&(y="Merge nodes aliases can only point to maps")}return y="Merge nodes can only have Alias nodes as values"})),y&&e.errors.push(new x.YAMLSemanticError(t,y))}else for(var _=v+1;_<d.length;++_){var b=d[_].key;if(g===b||g&&b&&Object.prototype.hasOwnProperty.call(g,"value")&&g.value===b.value){var w='Map keys must be unique; "'.concat(g,'" is repeated');e.errors.push(new x.YAMLSemanticError(t,w));break}}}if(p&&!e.options.mapAsMap){e.warnings.push(new x.YAMLWarning(t,"Keys with collection values will be stringified as YAML due to JS Object restrictions. Use mapAsMap: true to avoid this."))}return t.resolved=h,h};var n=u(W),r=u(te),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}(re),o=u(Z),i=u(ee),s=u(X);function u(e){return e&&e.__esModule?e:{default:e}}var f=function(e){var t=e.context,n=t.lineStart,r=t.node,a=t.src,o=e.props;if(0===o.length)return!1;var i=o[0].start;if(r&&i>r.valueRange.start)return!1;if(a[i]!==T.Char.COMMENT)return!1;for(var s=n;s<i;++s)if("\n"===a[s])return!1;return!0};function l(e,t){if(f(e)){var n=e.getPropValue(0,T.Char.COMMENT,!0),r=!1,a=t.value.commentBefore;if(a&&a.startsWith(n))t.value.commentBefore=a.substr(n.length+1),r=!0;else{var o=t.value.comment;!e.node&&o&&o.startsWith(n)&&(t.value.comment=o.substr(n.length+1),r=!0)}r&&(t.comment=n)}}}));a(ce);var de=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=a(te),r=a(ce);function a(e){return e&&e.__esModule?e:{default:e}}var o={createNode:function(e,t,r){var a=new n.default;if(t instanceof Map){var o=!0,s=!1,u=void 0;try{for(var f,l=t[Symbol.iterator]();!(o=(f=l.next()).done);o=!0){var c=y(f.value,2),d=c[0],h=c[1];a.items.push(e.createPair(d,h,r))}}catch(e){s=!0,u=e}finally{try{o||null==l.return||l.return()}finally{if(s)throw u}}}else if(t&&"object"===i(t))for(var p=0,v=Object.keys(t);p<v.length;p++){var g=v[p];a.items.push(e.createPair(g,t[g],r))}return a},default:!0,nodeClass:n.default,tag:"tag:yaml.org,2002:map",resolve:r.default};t.default=o}));a(de);var he=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){if(t.type!==T.Type.SEQ&&t.type!==T.Type.FLOW_SEQ){var o="A ".concat(t.type," node cannot be resolved as a sequence");return e.errors.push(new x.YAMLSyntaxError(t,o)),null}var i=t.type===T.Type.FLOW_SEQ?function(e,t){for(var r=[],a=[],o=!1,i=void 0,s=null,u="[",f=0;f<t.items.length;++f){var l=t.items[f];if("string"==typeof l.char){var c=l.char,d=l.offset;if(":"===c||!o&&void 0===i||(o&&void 0===i&&(i=u?a.pop():null),a.push(new n.default(i)),o=!1,i=void 0,s=null),c===u)u=null;else if(u||"?"!==c){if("["!==u&&":"===c&&void 0===i){if(","===u){if((i=a.pop())instanceof n.default){var h=new x.YAMLSemanticError(t,"Chaining flow sequence pairs is invalid");h.offset=d,e.errors.push(h)}o||(0,le.checkKeyLength)(e.errors,t,f,i,s)}else i=null;s=null,o=!1,u=null}else if("["===u||"]"!==c||f<t.items.length-1){var p="Flow sequence contains an unexpected ".concat(c),v=new x.YAMLSyntaxError(t,p);v.offset=d,e.errors.push(v)}}else o=!0}else if(l.type===T.Type.BLANK_LINE)r.push({before:a.length});else if(l.type===T.Type.COMMENT)r.push({comment:l.comment,before:a.length});else{if(u){var g="Expected a ".concat(u," in flow sequence");e.errors.push(new x.YAMLSemanticError(l,g))}var m=e.resolveNode(l);void 0===i?a.push(m):(a.push(new n.default(i,m)),i=void 0),s=l.range.start,u=","}}(0,le.checkFlowCollectionEnd)(e.errors,t),void 0!==i&&a.push(new n.default(i));return{comments:r,items:a}}(e,t):function(e,t){for(var n=[],r=[],a=0;a<t.items.length;++a){var o=t.items[a];switch(o.type){case T.Type.BLANK_LINE:n.push({before:r.length});break;case T.Type.COMMENT:n.push({comment:o.comment,before:r.length});break;case T.Type.SEQ_ITEM:if(o.error&&e.errors.push(o.error),r.push(e.resolveNode(o.node)),o.hasProps){e.errors.push(new x.YAMLSemanticError(o,"Sequence items cannot have tags or anchors before the - indicator"))}break;default:o.error&&e.errors.push(o.error),e.errors.push(new x.YAMLSyntaxError(o,"Unexpected ".concat(o.type," node in sequence")))}}return{comments:n,items:r}}(e,t),s=i.comments,u=i.items,f=new r.default;if(f.items=u,(0,le.resolveComments)(f,s),!e.options.mapAsMap&&u.some((function(e){return e instanceof n.default&&e.key instanceof a.default}))){e.warnings.push(new x.YAMLWarning(t,"Keys with collection values will be stringified as YAML due to JS Object restrictions. Use mapAsMap: true to avoid this."))}return t.resolved=f,f};var n=o(Z),r=o(ne),a=o(X);function o(e){return e&&e.__esModule?e:{default:e}}}));a(he);var pe=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=a(he),r=a(ne);function a(e){return e&&e.__esModule?e:{default:e}}var o={createNode:function(e,t,n){var a=new r.default;if(t&&t[Symbol.iterator]){var o=!0,i=!1,s=void 0;try{for(var u,f=t[Symbol.iterator]();!(o=(u=f.next()).done);o=!0){var l=u.value,c=e.createNode(l,n.wrapScalars,null,n);a.items.push(c)}}catch(e){i=!0,s=e}finally{try{o||null==f.return||f.return()}finally{if(i)throw s}}}return a},default:!0,nodeClass:r.default,tag:"tag:yaml.org,2002:seq",resolve:n.default};t.default=o}));a(pe);var ve=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.resolveString=void 0;var n=function(e,t){var n=t.strValue;return n?"string"==typeof n?n:(n.errors.forEach((function(n){n.source||(n.source=t),e.errors.push(n)})),n.str):""};t.resolveString=n;var r={identify:function(e){return"string"==typeof e},default:!0,tag:"tag:yaml.org,2002:str",resolve:n,stringify:function(e,t,n,r){return t=Object.assign({actualString:!0},t),(0,fe.stringifyString)(e,t,n,r)},options:ue.strOptions};t.default=r}));a(ve);ve.resolveString;var ge=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=o(de),r=o(pe),a=o(ve);function o(e){return e&&e.__esModule?e:{default:e}}var i=[n.default,r.default,a.default];t.default=i}));a(ge);var me=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(z);function r(e){return e&&e.__esModule?e:{default:e}}var a=r(ge).default.concat([{identify:function(e){return null==e},createNode:function(e,t,r){return r.wrapScalars?new n.default(null):null},default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:function(){return null},options:ue.nullOptions,stringify:function(){return ue.nullOptions.nullStr}},{identify:function(e){return"boolean"==typeof e},default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,resolve:function(e){return"t"===e[0]||"T"===e[0]},options:ue.boolOptions,stringify:function(e){return e.value?ue.boolOptions.trueStr:ue.boolOptions.falseStr}},{identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^0o([0-7]+)$/,resolve:function(e,t){return parseInt(t,8)},stringify:function(e){return"0o"+e.value.toString(8)}},{identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9]+$/,resolve:function(e){return parseInt(e,10)},stringify:fe.stringifyNumber},{identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x([0-9a-fA-F]+)$/,resolve:function(e,t){return parseInt(t,16)},stringify:function(e){return"0x"+e.value.toString(16)}},{identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.inf|(\.nan))$/i,resolve:function(e,t){return t?NaN:"-"===e[0]?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY},stringify:fe.stringifyNumber},{identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?(?:0|[1-9][0-9]*)(\.[0-9]*)?[eE][-+]?[0-9]+$/,resolve:function(e){return parseFloat(e)},stringify:function(e){var t=e.value;return Number(t).toExponential()}},{identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:0|[1-9][0-9]*)\.([0-9]*)$/,resolve:function(e,t){var r=new n.default(parseFloat(e));return t&&"0"===t[t.length-1]&&(r.minFractionDigits=t.length),r},stringify:fe.stringifyNumber}]);t.default=a}));a(me);var ye=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=o(de),r=o(pe),a=o(z);function o(e){return e&&e.__esModule?e:{default:e}}var i=[n.default,r.default,{identify:function(e){return"string"==typeof e},default:!0,tag:"tag:yaml.org,2002:str",resolve:ve.resolveString,stringify:function(e){return JSON.stringify(e)}},{identify:function(e){return null==e},createNode:function(e,t,n){return n.wrapScalars?new a.default(null):null},default:!0,tag:"tag:yaml.org,2002:null",test:/^null$/,resolve:function(){return null},stringify:function(e){return JSON.stringify(e)}},{identify:function(e){return"boolean"==typeof e},default:!0,tag:"tag:yaml.org,2002:bool",test:/^true$/,resolve:function(){return!0},stringify:function(e){return JSON.stringify(e)}},{identify:function(e){return"boolean"==typeof e},default:!0,tag:"tag:yaml.org,2002:bool",test:/^false$/,resolve:function(){return!1},stringify:function(e){return JSON.stringify(e)}},{identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:int",test:/^-?(?:0|[1-9][0-9]*)$/,resolve:function(e){return parseInt(e,10)},stringify:function(e){return JSON.stringify(e)}},{identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:float",test:/^-?(?:0|[1-9][0-9]*)(?:\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,resolve:function(e){return parseFloat(e)},stringify:function(e){return JSON.stringify(e)}}];i.scalarFallback=function(e){throw new SyntaxError("Unresolved plain scalar ".concat(JSON.stringify(e)))};var s=i;t.default=s}));a(ye);var _e="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},be=[],we=[],Ee="undefined"!=typeof Uint8Array?Uint8Array:Array,Oe=!1;function Me(){Oe=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",t=0,n=e.length;t<n;++t)be[t]=e[t],we[e.charCodeAt(t)]=t;we["-".charCodeAt(0)]=62,we["_".charCodeAt(0)]=63}function Se(e,t,n){for(var r,a,o=[],i=t;i<n;i+=3)r=(e[i]<<16)+(e[i+1]<<8)+e[i+2],o.push(be[(a=r)>>18&63]+be[a>>12&63]+be[a>>6&63]+be[63&a]);return o.join("")}function Ae(e){var t;Oe||Me();for(var n=e.length,r=n%3,a="",o=[],i=0,s=n-r;i<s;i+=16383)o.push(Se(e,i,i+16383>s?s:i+16383));return 1===r?(t=e[n-1],a+=be[t>>2],a+=be[t<<4&63],a+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],a+=be[t>>10],a+=be[t>>4&63],a+=be[t<<2&63],a+="="),o.push(a),o.join("")}function ke(e,t,n,r,a){var o,i,s=8*a-r-1,u=(1<<s)-1,f=u>>1,l=-7,c=n?a-1:0,d=n?-1:1,h=e[t+c];for(c+=d,o=h&(1<<-l)-1,h>>=-l,l+=s;l>0;o=256*o+e[t+c],c+=d,l-=8);for(i=o&(1<<-l)-1,o>>=-l,l+=r;l>0;i=256*i+e[t+c],c+=d,l-=8);if(0===o)o=1-f;else{if(o===u)return i?NaN:1/0*(h?-1:1);i+=Math.pow(2,r),o-=f}return(h?-1:1)*i*Math.pow(2,o-r)}function Le(e,t,n,r,a,o){var i,s,u,f=8*o-a-1,l=(1<<f)-1,c=l>>1,d=23===a?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:o-1,p=r?1:-1,v=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,i=l):(i=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-i))<1&&(i--,u*=2),(t+=i+c>=1?d/u:d*Math.pow(2,1-c))*u>=2&&(i++,u/=2),i+c>=l?(s=0,i=l):i+c>=1?(s=(t*u-1)*Math.pow(2,a),i+=c):(s=t*Math.pow(2,c-1)*Math.pow(2,a),i=0));a>=8;e[n+h]=255&s,h+=p,s/=256,a-=8);for(i=i<<a|s,f+=a;f>0;e[n+h]=255&i,h+=p,i/=256,f-=8);e[n+h-p]|=128*v}var Te={}.toString,Pe=Array.isArray||function(e){return"[object Array]"==Te.call(e)};function Ce(){return xe.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function Ne(e,t){if(Ce()<t)throw new RangeError("Invalid typed array length");return xe.TYPED_ARRAY_SUPPORT?(e=new Uint8Array(t)).__proto__=xe.prototype:(null===e&&(e=new xe(t)),e.length=t),e}function xe(e,t,n){if(!(xe.TYPED_ARRAY_SUPPORT||this instanceof xe))return new xe(e,t,n);if("number"==typeof e){if("string"==typeof t)throw new Error("If encoding is specified then the first argument must be a string");return Be(this,e)}return Re(this,e,t,n)}function Re(e,t,n,r){if("number"==typeof t)throw new TypeError('"value" argument must not be a number');return"undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer?function(e,t,n,r){if(t.byteLength,n<0||t.byteLength<n)throw new RangeError("'offset' is out of bounds");if(t.byteLength<n+(r||0))throw new RangeError("'length' is out of bounds");t=void 0===n&&void 0===r?new Uint8Array(t):void 0===r?new Uint8Array(t,n):new Uint8Array(t,n,r);xe.TYPED_ARRAY_SUPPORT?(e=t).__proto__=xe.prototype:e=De(e,t);return e}(e,t,n,r):"string"==typeof t?function(e,t,n){"string"==typeof n&&""!==n||(n="utf8");if(!xe.isEncoding(n))throw new TypeError('"encoding" must be a valid string encoding');var r=0|Fe(t,n),a=(e=Ne(e,r)).write(t,n);a!==r&&(e=e.slice(0,a));return e}(e,t,n):function(e,t){if(Ye(t)){var n=0|je(t.length);return 0===(e=Ne(e,n)).length?e:(t.copy(e,0,0,n),e)}if(t){if("undefined"!=typeof ArrayBuffer&&t.buffer instanceof ArrayBuffer||"length"in t)return"number"!=typeof t.length||(r=t.length)!=r?Ne(e,0):De(e,t);if("Buffer"===t.type&&Pe(t.data))return De(e,t.data)}var r;throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")}(e,t)}function Ie(e){if("number"!=typeof e)throw new TypeError('"size" argument must be a number');if(e<0)throw new RangeError('"size" argument must not be negative')}function Be(e,t){if(Ie(t),e=Ne(e,t<0?0:0|je(t)),!xe.TYPED_ARRAY_SUPPORT)for(var n=0;n<t;++n)e[n]=0;return e}function De(e,t){var n=t.length<0?0:0|je(t.length);e=Ne(e,n);for(var r=0;r<n;r+=1)e[r]=255&t[r];return e}function je(e){if(e>=Ce())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+Ce().toString(16)+" bytes");return 0|e}function Ye(e){return!(null==e||!e._isBuffer)}function Fe(e,t){if(Ye(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return ht(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return pt(e).length;default:if(r)return ht(e).length;t=(""+t).toLowerCase(),r=!0}}function Ue(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return nt(this,t,n);case"utf8":case"utf-8":return Ze(this,t,n);case"ascii":return et(this,t,n);case"latin1":case"binary":return tt(this,t,n);case"base64":return ze(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return rt(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function Ke(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function We(e,t,n,r,a){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=a?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(a)return-1;n=e.length-1}else if(n<0){if(!a)return-1;n=0}if("string"==typeof t&&(t=xe.from(t,r)),Ye(t))return 0===t.length?-1:Qe(e,t,n,r,a);if("number"==typeof t)return t&=255,xe.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?a?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):Qe(e,[t],n,r,a);throw new TypeError("val must be string, number or Buffer")}function Qe(e,t,n,r,a){var o,i=1,s=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;i=2,s/=2,u/=2,n/=2}function f(e,t){return 1===i?e[t]:e.readUInt16BE(t*i)}if(a){var l=-1;for(o=n;o<s;o++)if(f(e,o)===f(t,-1===l?0:o-l)){if(-1===l&&(l=o),o-l+1===u)return l*i}else-1!==l&&(o-=o-l),l=-1}else for(n+u>s&&(n=s-u),o=n;o>=0;o--){for(var c=!0,d=0;d<u;d++)if(f(e,o+d)!==f(t,d)){c=!1;break}if(c)return o}return-1}function Ve(e,t,n,r){n=Number(n)||0;var a=e.length-n;r?(r=Number(r))>a&&(r=a):r=a;var o=t.length;if(o%2!=0)throw new TypeError("Invalid hex string");r>o/2&&(r=o/2);for(var i=0;i<r;++i){var s=parseInt(t.substr(2*i,2),16);if(isNaN(s))return i;e[n+i]=s}return i}function $e(e,t,n,r){return vt(ht(t,e.length-n),e,n,r)}function qe(e,t,n,r){return vt(function(e){for(var t=[],n=0;n<e.length;++n)t.push(255&e.charCodeAt(n));return t}(t),e,n,r)}function Je(e,t,n,r){return qe(e,t,n,r)}function Ge(e,t,n,r){return vt(pt(t),e,n,r)}function He(e,t,n,r){return vt(function(e,t){for(var n,r,a,o=[],i=0;i<e.length&&!((t-=2)<0);++i)n=e.charCodeAt(i),r=n>>8,a=n%256,o.push(a),o.push(r);return o}(t,e.length-n),e,n,r)}function ze(e,t,n){return 0===t&&n===e.length?Ae(e):Ae(e.slice(t,n))}function Ze(e,t,n){n=Math.min(e.length,n);for(var r=[],a=t;a<n;){var o,i,s,u,f=e[a],l=null,c=f>239?4:f>223?3:f>191?2:1;if(a+c<=n)switch(c){case 1:f<128&&(l=f);break;case 2:128==(192&(o=e[a+1]))&&(u=(31&f)<<6|63&o)>127&&(l=u);break;case 3:o=e[a+1],i=e[a+2],128==(192&o)&&128==(192&i)&&(u=(15&f)<<12|(63&o)<<6|63&i)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:o=e[a+1],i=e[a+2],s=e[a+3],128==(192&o)&&128==(192&i)&&128==(192&s)&&(u=(15&f)<<18|(63&o)<<12|(63&i)<<6|63&s)>65535&&u<1114112&&(l=u)}null===l?(l=65533,c=1):l>65535&&(l-=65536,r.push(l>>>10&1023|55296),l=56320|1023&l),r.push(l),a+=c}return function(e){var t=e.length;if(t<=Xe)return String.fromCharCode.apply(String,e);var n="",r=0;for(;r<t;)n+=String.fromCharCode.apply(String,e.slice(r,r+=Xe));return n}(r)}xe.TYPED_ARRAY_SUPPORT=void 0===_e.TYPED_ARRAY_SUPPORT||_e.TYPED_ARRAY_SUPPORT,xe.poolSize=8192,xe._augment=function(e){return e.__proto__=xe.prototype,e},xe.from=function(e,t,n){return Re(null,e,t,n)},xe.TYPED_ARRAY_SUPPORT&&(xe.prototype.__proto__=Uint8Array.prototype,xe.__proto__=Uint8Array),xe.alloc=function(e,t,n){return function(e,t,n,r){return Ie(t),t<=0?Ne(e,t):void 0!==n?"string"==typeof r?Ne(e,t).fill(n,r):Ne(e,t).fill(n):Ne(e,t)}(null,e,t,n)},xe.allocUnsafe=function(e){return Be(null,e)},xe.allocUnsafeSlow=function(e){return Be(null,e)},xe.isBuffer=function(e){return null!=e&&(!!e._isBuffer||gt(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&gt(e.slice(0,0))}(e))},xe.compare=function(e,t){if(!Ye(e)||!Ye(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,a=0,o=Math.min(n,r);a<o;++a)if(e[a]!==t[a]){n=e[a],r=t[a];break}return n<r?-1:r<n?1:0},xe.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},xe.concat=function(e,t){if(!Pe(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return xe.alloc(0);var n;if(void 0===t)for(t=0,n=0;n<e.length;++n)t+=e[n].length;var r=xe.allocUnsafe(t),a=0;for(n=0;n<e.length;++n){var o=e[n];if(!Ye(o))throw new TypeError('"list" argument must be an Array of Buffers');o.copy(r,a),a+=o.length}return r},xe.byteLength=Fe,xe.prototype._isBuffer=!0,xe.prototype.swap16=function(){var e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;t<e;t+=2)Ke(this,t,t+1);return this},xe.prototype.swap32=function(){var e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(var t=0;t<e;t+=4)Ke(this,t,t+3),Ke(this,t+1,t+2);return this},xe.prototype.swap64=function(){var e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(var t=0;t<e;t+=8)Ke(this,t,t+7),Ke(this,t+1,t+6),Ke(this,t+2,t+5),Ke(this,t+3,t+4);return this},xe.prototype.toString=function(){var e=0|this.length;return 0===e?"":0===arguments.length?Ze(this,0,e):Ue.apply(this,arguments)},xe.prototype.equals=function(e){if(!Ye(e))throw new TypeError("Argument must be a Buffer");return this===e||0===xe.compare(this,e)},xe.prototype.inspect=function(){var e="";return this.length>0&&(e=this.toString("hex",0,50).match(/.{2}/g).join(" "),this.length>50&&(e+=" ... ")),"<Buffer "+e+">"},xe.prototype.compare=function(e,t,n,r,a){if(!Ye(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===a&&(a=this.length),t<0||n>e.length||r<0||a>this.length)throw new RangeError("out of range index");if(r>=a&&t>=n)return 0;if(r>=a)return-1;if(t>=n)return 1;if(this===e)return 0;for(var o=(a>>>=0)-(r>>>=0),i=(n>>>=0)-(t>>>=0),s=Math.min(o,i),u=this.slice(r,a),f=e.slice(t,n),l=0;l<s;++l)if(u[l]!==f[l]){o=u[l],i=f[l];break}return o<i?-1:i<o?1:0},xe.prototype.includes=function(e,t,n){return-1!==this.indexOf(e,t,n)},xe.prototype.indexOf=function(e,t,n){return We(this,e,t,n,!0)},xe.prototype.lastIndexOf=function(e,t,n){return We(this,e,t,n,!1)},xe.prototype.write=function(e,t,n,r){if(void 0===t)r="utf8",n=this.length,t=0;else if(void 0===n&&"string"==typeof t)r=t,n=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t|=0,isFinite(n)?(n|=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var a=this.length-t;if((void 0===n||n>a)&&(n=a),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var o=!1;;)switch(r){case"hex":return Ve(this,e,t,n);case"utf8":case"utf-8":return $e(this,e,t,n);case"ascii":return qe(this,e,t,n);case"latin1":case"binary":return Je(this,e,t,n);case"base64":return Ge(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return He(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),o=!0}},xe.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var Xe=4096;function et(e,t,n){var r="";n=Math.min(e.length,n);for(var a=t;a<n;++a)r+=String.fromCharCode(127&e[a]);return r}function tt(e,t,n){var r="";n=Math.min(e.length,n);for(var a=t;a<n;++a)r+=String.fromCharCode(e[a]);return r}function nt(e,t,n){var r=e.length;(!t||t<0)&&(t=0),(!n||n<0||n>r)&&(n=r);for(var a="",o=t;o<n;++o)a+=dt(e[o]);return a}function rt(e,t,n){for(var r=e.slice(t,n),a="",o=0;o<r.length;o+=2)a+=String.fromCharCode(r[o]+256*r[o+1]);return a}function at(e,t,n){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>n)throw new RangeError("Trying to access beyond buffer length")}function ot(e,t,n,r,a,o){if(!Ye(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>a||t<o)throw new RangeError('"value" argument is out of bounds');if(n+r>e.length)throw new RangeError("Index out of range")}function it(e,t,n,r){t<0&&(t=65535+t+1);for(var a=0,o=Math.min(e.length-n,2);a<o;++a)e[n+a]=(t&255<<8*(r?a:1-a))>>>8*(r?a:1-a)}function st(e,t,n,r){t<0&&(t=4294967295+t+1);for(var a=0,o=Math.min(e.length-n,4);a<o;++a)e[n+a]=t>>>8*(r?a:3-a)&255}function ut(e,t,n,r,a,o){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function ft(e,t,n,r,a){return a||ut(e,0,n,4),Le(e,t,n,r,23,4),n+4}function lt(e,t,n,r,a){return a||ut(e,0,n,8),Le(e,t,n,r,52,8),n+8}xe.prototype.slice=function(e,t){var n,r=this.length;if((e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e),xe.TYPED_ARRAY_SUPPORT)(n=this.subarray(e,t)).__proto__=xe.prototype;else{var a=t-e;n=new xe(a,void 0);for(var o=0;o<a;++o)n[o]=this[o+e]}return n},xe.prototype.readUIntLE=function(e,t,n){e|=0,t|=0,n||at(e,t,this.length);for(var r=this[e],a=1,o=0;++o<t&&(a*=256);)r+=this[e+o]*a;return r},xe.prototype.readUIntBE=function(e,t,n){e|=0,t|=0,n||at(e,t,this.length);for(var r=this[e+--t],a=1;t>0&&(a*=256);)r+=this[e+--t]*a;return r},xe.prototype.readUInt8=function(e,t){return t||at(e,1,this.length),this[e]},xe.prototype.readUInt16LE=function(e,t){return t||at(e,2,this.length),this[e]|this[e+1]<<8},xe.prototype.readUInt16BE=function(e,t){return t||at(e,2,this.length),this[e]<<8|this[e+1]},xe.prototype.readUInt32LE=function(e,t){return t||at(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},xe.prototype.readUInt32BE=function(e,t){return t||at(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},xe.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||at(e,t,this.length);for(var r=this[e],a=1,o=0;++o<t&&(a*=256);)r+=this[e+o]*a;return r>=(a*=128)&&(r-=Math.pow(2,8*t)),r},xe.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||at(e,t,this.length);for(var r=t,a=1,o=this[e+--r];r>0&&(a*=256);)o+=this[e+--r]*a;return o>=(a*=128)&&(o-=Math.pow(2,8*t)),o},xe.prototype.readInt8=function(e,t){return t||at(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},xe.prototype.readInt16LE=function(e,t){t||at(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},xe.prototype.readInt16BE=function(e,t){t||at(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},xe.prototype.readInt32LE=function(e,t){return t||at(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},xe.prototype.readInt32BE=function(e,t){return t||at(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},xe.prototype.readFloatLE=function(e,t){return t||at(e,4,this.length),ke(this,e,!0,23,4)},xe.prototype.readFloatBE=function(e,t){return t||at(e,4,this.length),ke(this,e,!1,23,4)},xe.prototype.readDoubleLE=function(e,t){return t||at(e,8,this.length),ke(this,e,!0,52,8)},xe.prototype.readDoubleBE=function(e,t){return t||at(e,8,this.length),ke(this,e,!1,52,8)},xe.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||ot(this,e,t,n,Math.pow(2,8*n)-1,0);var a=1,o=0;for(this[t]=255&e;++o<n&&(a*=256);)this[t+o]=e/a&255;return t+n},xe.prototype.writeUIntBE=function(e,t,n,r){(e=+e,t|=0,n|=0,r)||ot(this,e,t,n,Math.pow(2,8*n)-1,0);var a=n-1,o=1;for(this[t+a]=255&e;--a>=0&&(o*=256);)this[t+a]=e/o&255;return t+n},xe.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||ot(this,e,t,1,255,0),xe.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},xe.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||ot(this,e,t,2,65535,0),xe.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):it(this,e,t,!0),t+2},xe.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||ot(this,e,t,2,65535,0),xe.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):it(this,e,t,!1),t+2},xe.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||ot(this,e,t,4,4294967295,0),xe.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):st(this,e,t,!0),t+4},xe.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||ot(this,e,t,4,4294967295,0),xe.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):st(this,e,t,!1),t+4},xe.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var a=Math.pow(2,8*n-1);ot(this,e,t,n,a-1,-a)}var o=0,i=1,s=0;for(this[t]=255&e;++o<n&&(i*=256);)e<0&&0===s&&0!==this[t+o-1]&&(s=1),this[t+o]=(e/i>>0)-s&255;return t+n},xe.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var a=Math.pow(2,8*n-1);ot(this,e,t,n,a-1,-a)}var o=n-1,i=1,s=0;for(this[t+o]=255&e;--o>=0&&(i*=256);)e<0&&0===s&&0!==this[t+o+1]&&(s=1),this[t+o]=(e/i>>0)-s&255;return t+n},xe.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||ot(this,e,t,1,127,-128),xe.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},xe.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||ot(this,e,t,2,32767,-32768),xe.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):it(this,e,t,!0),t+2},xe.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||ot(this,e,t,2,32767,-32768),xe.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):it(this,e,t,!1),t+2},xe.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||ot(this,e,t,4,2147483647,-2147483648),xe.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):st(this,e,t,!0),t+4},xe.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||ot(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),xe.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):st(this,e,t,!1),t+4},xe.prototype.writeFloatLE=function(e,t,n){return ft(this,e,t,!0,n)},xe.prototype.writeFloatBE=function(e,t,n){return ft(this,e,t,!1,n)},xe.prototype.writeDoubleLE=function(e,t,n){return lt(this,e,t,!0,n)},xe.prototype.writeDoubleBE=function(e,t,n){return lt(this,e,t,!1,n)},xe.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r<n&&(r=n),r===n)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(n<0||n>=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t<r-n&&(r=e.length-t+n);var a,o=r-n;if(this===e&&n<t&&t<r)for(a=o-1;a>=0;--a)e[a+t]=this[a+n];else if(o<1e3||!xe.TYPED_ARRAY_SUPPORT)for(a=0;a<o;++a)e[a+t]=this[a+n];else Uint8Array.prototype.set.call(e,this.subarray(n,n+o),t);return o},xe.prototype.fill=function(e,t,n,r){if("string"==typeof e){if("string"==typeof t?(r=t,t=0,n=this.length):"string"==typeof n&&(r=n,n=this.length),1===e.length){var a=e.charCodeAt(0);a<256&&(e=a)}if(void 0!==r&&"string"!=typeof r)throw new TypeError("encoding must be a string");if("string"==typeof r&&!xe.isEncoding(r))throw new TypeError("Unknown encoding: "+r)}else"number"==typeof e&&(e&=255);if(t<0||this.length<t||this.length<n)throw new RangeError("Out of range index");if(n<=t)return this;var o;if(t>>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(o=t;o<n;++o)this[o]=e;else{var i=Ye(e)?e:ht(new xe(e,r).toString()),s=i.length;for(o=0;o<n-t;++o)this[o+t]=i[o%s]}return this};var ct=/[^+\/0-9A-Za-z-_]/g;function dt(e){return e<16?"0"+e.toString(16):e.toString(16)}function ht(e,t){var n;t=t||1/0;for(var r=e.length,a=null,o=[],i=0;i<r;++i){if((n=e.charCodeAt(i))>55295&&n<57344){if(!a){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(i+1===r){(t-=3)>-1&&o.push(239,191,189);continue}a=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),a=n;continue}n=65536+(a-55296<<10|n-56320)}else a&&(t-=3)>-1&&o.push(239,191,189);if(a=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function pt(e){return function(e){var t,n,r,a,o,i;Oe||Me();var s=e.length;if(s%4>0)throw new Error("Invalid string. Length must be a multiple of 4");o="="===e[s-2]?2:"="===e[s-1]?1:0,i=new Ee(3*s/4-o),r=o>0?s-4:s;var u=0;for(t=0,n=0;t<r;t+=4,n+=3)a=we[e.charCodeAt(t)]<<18|we[e.charCodeAt(t+1)]<<12|we[e.charCodeAt(t+2)]<<6|we[e.charCodeAt(t+3)],i[u++]=a>>16&255,i[u++]=a>>8&255,i[u++]=255&a;return 2===o?(a=we[e.charCodeAt(t)]<<2|we[e.charCodeAt(t+1)]>>4,i[u++]=255&a):1===o&&(a=we[e.charCodeAt(t)]<<10|we[e.charCodeAt(t+1)]<<4|we[e.charCodeAt(t+2)]>>2,i[u++]=a>>8&255,i[u++]=255&a),i}(function(e){if((e=function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}(e).replace(ct,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function vt(e,t,n,r){for(var a=0;a<r&&!(a+n>=t.length||a>=e.length);++a)t[a+n]=e[a];return a}function gt(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}var mt=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n={identify:function(e){return e instanceof Uint8Array},default:!1,tag:"tag:yaml.org,2002:binary",resolve:function(e,t){var n=(0,ve.resolveString)(e,t);return xe.from(n,"base64")},options:ue.binaryOptions,stringify:function(e,t,n,r){var a,o=e.comment,i=e.type,s=e.value;if(a=s instanceof xe?s.toString("base64"):xe.from(s.buffer).toString("base64"),i||(i=ue.binaryOptions.defaultType),i===T.Type.QUOTE_DOUBLE)s=a;else{for(var u=ue.binaryOptions.lineWidth,f=Math.ceil(a.length/u),l=new Array(f),c=0,d=0;c<f;++c,d+=u)l[c]=a.substr(d,u);s=l.join(i===T.Type.BLOCK_LITERAL?"\n":" ")}return(0,fe.stringifyString)({comment:o,type:i,value:s},t,n,r)}};t.default=n}));a(mt);var yt=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.parsePairs=s,t.createPairs=u,t.default=void 0;var n=i(te),r=i(Z),a=i(he),o=i(ne);function i(e){return e&&e.__esModule?e:{default:e}}function s(e,t){for(var o=(0,a.default)(e,t),i=0;i<o.items.length;++i){var s=o.items[i];if(!(s instanceof r.default)){if(s instanceof n.default){if(s.items.length>1){throw new x.YAMLSemanticError(t,"Each pair must have its own sequence indicator")}var u=s.items[0]||new r.default;s.commentBefore&&(u.commentBefore=u.commentBefore?"".concat(s.commentBefore,"\n").concat(u.commentBefore):s.commentBefore),s.comment&&(u.comment=u.comment?"".concat(s.comment,"\n").concat(u.comment):s.comment),s=u}o.items[i]=s instanceof r.default?s:new r.default(s)}}return o}function u(e,t,n){var r=new o.default;r.tag="tag:yaml.org,2002:pairs";var a=!0,i=!1,s=void 0;try{for(var u,f=t[Symbol.iterator]();!(a=(u=f.next()).done);a=!0){var l=u.value,c=void 0,d=void 0;if(Array.isArray(l)){if(2!==l.length)throw new TypeError("Expected [key, value] tuple: ".concat(l));c=l[0],d=l[1]}else if(l&&l instanceof Object){var h=Object.keys(l);if(1!==h.length)throw new TypeError("Expected { key: value } tuple: ".concat(l));d=l[c=h[0]]}else c=l;var p=e.createPair(c,d,n);r.items.push(p)}}catch(e){i=!0,s=e}finally{try{a||null==f.return||f.return()}finally{if(i)throw s}}return r}var f={default:!1,tag:"tag:yaml.org,2002:pairs",resolve:s,createNode:u};t.default=f}));a(yt);yt.parsePairs,yt.createPairs;var _t=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.YAMLOMap=void 0;var n=i(G),r=i(te),a=i(Z),o=i(z);function i(e){return e&&e.__esModule?e:{default:e}}function u(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d=function(e){function t(){var e;return s(this,t),u(v(e=g(this,c(t).call(this))),"add",r.default.prototype.add.bind(v(e))),u(v(e),"delete",r.default.prototype.delete.bind(v(e))),u(v(e),"get",r.default.prototype.get.bind(v(e))),u(v(e),"has",r.default.prototype.has.bind(v(e))),u(v(e),"set",r.default.prototype.set.bind(v(e))),e.tag=t.tag,e}return l(t,e),f(t,[{key:"toJSON",value:function(e,t){var r=new Map;t&&t.onCreate&&t.onCreate(r);var o=!0,i=!1,s=void 0;try{for(var u,f=this.items[Symbol.iterator]();!(o=(u=f.next()).done);o=!0){var l=u.value,c=void 0,d=void 0;if(l instanceof a.default?(c=(0,n.default)(l.key,"",t),d=(0,n.default)(l.value,c,t)):c=(0,n.default)(l,"",t),r.has(c))throw new Error("Ordered maps must not include duplicate keys");r.set(c,d)}}catch(e){i=!0,s=e}finally{try{o||null==f.return||f.return()}finally{if(i)throw s}}return r}}]),t}(i(ne).default);t.YAMLOMap=d,u(d,"tag","tag:yaml.org,2002:omap");var h={identify:function(e){return e instanceof Map},nodeClass:d,default:!1,tag:"tag:yaml.org,2002:omap",resolve:function(e,t){var n=(0,yt.parsePairs)(e,t),r=[],a=!0,i=!1,s=void 0;try{for(var u,f=n.items[Symbol.iterator]();!(a=(u=f.next()).done);a=!0){var l=u.value.key;if(l instanceof o.default){if(r.includes(l.value)){throw new x.YAMLSemanticError(t,"Ordered maps must not include duplicate keys")}r.push(l.value)}}}catch(e){i=!0,s=e}finally{try{a||null==f.return||f.return()}finally{if(i)throw s}}return Object.assign(new d,n)},createNode:function(e,t,n){var r=(0,yt.createPairs)(e,t,n),a=new d;return a.items=r.items,a}};t.default=h}));a(_t);_t.YAMLOMap;var bt=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.YAMLSet=void 0;var n=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}(te),r=u(Z),a=u(ce),o=u(z);function u(e){return e&&e.__esModule?e:{default:e}}var d,h,p,v=function(e){function t(){var e;return s(this,t),(e=g(this,c(t).call(this))).tag=t.tag,e}return l(t,e),f(t,[{key:"add",value:function(e){var t=e instanceof r.default?e:new r.default(e);(0,n.findPair)(this.items,t.key)||this.items.push(t)}},{key:"get",value:function(e,t){var a=(0,n.findPair)(this.items,e);return!t&&a instanceof r.default?a.key instanceof o.default?a.key.value:a.key:a}},{key:"set",value:function(e,t){if("boolean"!=typeof t)throw new Error("Expected boolean value for set(key, value) in a YAML set, not ".concat(i(t)));var a=(0,n.findPair)(this.items,e);a&&!t?this.items.splice(this.items.indexOf(a),1):!a&&t&&this.items.push(new r.default(e))}},{key:"toJSON",value:function(e,n){return m(c(t.prototype),"toJSON",this).call(this,e,n,Set)}},{key:"toString",value:function(e,n,r){if(!e)return JSON.stringify(this);if(this.hasAllNullValues())return m(c(t.prototype),"toString",this).call(this,e,n,r);throw new Error("Set items must all have null values")}}]),t}(n.default);t.YAMLSet=v,p="tag:yaml.org,2002:set",(h="tag")in(d=v)?Object.defineProperty(d,h,{value:p,enumerable:!0,configurable:!0,writable:!0}):d[h]=p;var y={identify:function(e){return e instanceof Set},nodeClass:v,default:!1,tag:"tag:yaml.org,2002:set",resolve:function(e,t){var n=(0,a.default)(e,t);if(!n.hasAllNullValues())throw new x.YAMLSemanticError(t,"Set items must all have null values");return Object.assign(new v,n)},createNode:function(e,t,n){var r=new v,a=!0,o=!1,i=void 0;try{for(var s,u=t[Symbol.iterator]();!(a=(s=u.next()).done);a=!0){var f=s.value;r.items.push(e.createPair(f,null,n))}}catch(e){o=!0,i=e}finally{try{a||null==u.return||u.return()}finally{if(o)throw i}}return r}};t.default=y}));a(bt);bt.YAMLSet;var wt=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.timestamp=t.floatTime=t.intTime=void 0;var n=function(e,t){var n=t.split(":").reduce((function(e,t){return 60*e+Number(t)}),0);return"-"===e?-n:n},r=function(e){var t=e.value;if(isNaN(t)||!isFinite(t))return(0,fe.stringifyNumber)(t);var n="";t<0&&(n="-",t=Math.abs(t));var r=[t%60];return t<60?r.unshift(0):(t=Math.round((t-r[0])/60),r.unshift(t%60),t>=60&&(t=Math.round((t-r[0])/60),r.unshift(t))),n+r.map((function(e){return e<10?"0"+String(e):String(e)})).join(":").replace(/000000\d*$/,"")},a={identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:int",format:"TIME",test:/^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+)$/,resolve:function(e,t,r){return n(t,r.replace(/_/g,""))},stringify:r};t.intTime=a;var o={identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:float",format:"TIME",test:/^([-+]?)([0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*)$/,resolve:function(e,t,r){return n(t,r.replace(/_/g,""))},stringify:r};t.floatTime=o;var i={identify:function(e){return e instanceof Date},default:!0,tag:"tag:yaml.org,2002:timestamp",test:RegExp("^(?:([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})(?:(?:t|T|[ \\t]+)([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\.[0-9]+)?)(?:[ \\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?)?)$"),resolve:function(e,t,r,a,o,i,s,u,f){u&&(u=(u+"00").substr(1,3));var l=Date.UTC(t,r-1,a,o||0,i||0,s||0,u||0);if(f&&"Z"!==f){var c=n(f[0],f.slice(1));Math.abs(c)<30&&(c*=60),l-=6e4*c}return new Date(l)},stringify:function(e){return e.value.toISOString().replace(/((T00:00)?:00)?\.000Z$/,"")}};t.timestamp=i}));a(wt);wt.timestamp,wt.floatTime,wt.intTime;var Et=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=u(z),r=u(ge),a=u(mt),o=u(_t),i=u(yt),s=u(bt);function u(e){return e&&e.__esModule?e:{default:e}}var f=r.default.concat([{identify:function(e){return null==e},createNode:function(e,t,r){return r.wrapScalars?new n.default(null):null},default:!0,tag:"tag:yaml.org,2002:null",test:/^(?:~|[Nn]ull|NULL)?$/,resolve:function(){return null},options:ue.nullOptions,stringify:function(){return ue.nullOptions.nullStr}},{identify:function(e){return"boolean"==typeof e},default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,resolve:function(){return!0},options:ue.boolOptions,stringify:function(e){return e.value?ue.boolOptions.trueStr:ue.boolOptions.falseStr}},{identify:function(e){return"boolean"==typeof e},default:!0,tag:"tag:yaml.org,2002:bool",test:/^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/i,resolve:function(){return!1},options:ue.boolOptions,stringify:function(e){return e.value?ue.boolOptions.trueStr:ue.boolOptions.falseStr}},{identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:int",format:"BIN",test:/^0b([0-1_]+)$/,resolve:function(e,t){return parseInt(t.replace(/_/g,""),2)},stringify:function(e){return"0b"+e.value.toString(2)}},{identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:int",format:"OCT",test:/^[-+]?0([0-7_]+)$/,resolve:function(e,t){return parseInt(t.replace(/_/g,""),8)},stringify:function(e){var t=e.value;return(t<0?"-0":"0")+t.toString(8)}},{identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:int",test:/^[-+]?[0-9][0-9_]*$/,resolve:function(e){return parseInt(e.replace(/_/g,""),10)},stringify:fe.stringifyNumber},{identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:int",format:"HEX",test:/^0x([0-9a-fA-F_]+)$/,resolve:function(e,t){return parseInt(t.replace(/_/g,""),16)},stringify:function(e){var t=e.value;return(t<0?"-0x":"0x")+t.toString(16)}},{identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:float",test:/^(?:[-+]?\.inf|(\.nan))$/i,resolve:function(e,t){return t?NaN:"-"===e[0]?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY},stringify:fe.stringifyNumber},{identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:float",format:"EXP",test:/^[-+]?([0-9][0-9_]*)?(\.[0-9_]*)?[eE][-+]?[0-9]+$/,resolve:function(e){return parseFloat(e.replace(/_/g,""))},stringify:function(e){var t=e.value;return Number(t).toExponential()}},{identify:function(e){return"number"==typeof e},default:!0,tag:"tag:yaml.org,2002:float",test:/^[-+]?(?:[0-9][0-9_]*)?\.([0-9_]*)$/,resolve:function(e,t){var r=new n.default(parseFloat(e.replace(/_/g,"")));if(t){var a=t.replace(/_/g,"");"0"===a[a.length-1]&&(r.minFractionDigits=a.length)}return r},stringify:fe.stringifyNumber}],a.default,o.default,i.default,s.default,wt.intTime,wt.floatTime,wt.timestamp);t.default=f}));a(Et);var Ot=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.tags=t.schemas=void 0;var n=d(me),r=d(ge),a=d(ye),o=d(Et),i=d(de),s=d(pe),u=d(mt),f=d(_t),l=d(yt),c=d(bt);function d(e){return e&&e.__esModule?e:{default:e}}var h={core:n.default,failsafe:r.default,json:a.default,yaml11:o.default};t.schemas=h;var p={binary:u.default,floatTime:wt.floatTime,intTime:wt.intTime,map:i.default,omap:f.default,pairs:l.default,seq:s.default,set:c.default,timestamp:wt.timestamp};t.tags=p}));a(Ot);Ot.tags,Ot.schemas;var Mt=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=l(ee),r=l(X),a=l(H),o=l(Z),u=l(z);function l(e){return e&&e.__esModule?e:{default:e}}function c(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var d=function(){function e(t){var n=t.customTags,r=t.merge,a=t.schema,o=t.tags;if(s(this,e),this.merge=!!r,this.name=a,this.tags=Ot.schemas[a.replace(/\W/g,"")],!this.tags){var i=Object.keys(Ot.schemas).map((function(e){return JSON.stringify(e)})).join(", ");throw new Error('Unknown schema "'.concat(a,'"; use one of ').concat(i))}if(!n&&o&&(n=o,(0,ie.warnOptionDeprecation)("tags","customTags")),Array.isArray(n)){var u=!0,f=!1,l=void 0;try{for(var c,d=n[Symbol.iterator]();!(u=(c=d.next()).done);u=!0){var h=c.value;this.tags=this.tags.concat(h)}}catch(e){f=!0,l=e}finally{try{u||null==d.return||d.return()}finally{if(f)throw l}}}else"function"==typeof n&&(this.tags=n(this.tags.slice()));for(var p=0;p<this.tags.length;++p){var v=this.tags[p];if("string"==typeof v){var g=Ot.tags[v];if(!g){var m=Object.keys(Ot.tags).map((function(e){return JSON.stringify(e)})).join(", ");throw new Error('Unknown custom tag "'.concat(v,'"; use one of ').concat(m))}this.tags[p]=g}}}return f(e,[{key:"createNode",value:function(t,r,a,o){var s;if(a){a.startsWith("!!")&&(a=e.defaultPrefix+a.slice(2));var f=this.tags.filter((function(e){return e.tag===a}));if(!(s=f.find((function(e){return!e.format}))||f[0]))throw new Error("Tag ".concat(a," not found"))}else if(!(s=this.tags.find((function(e){return(e.identify&&e.identify(t)||e.class&&t instanceof e.class)&&!e.format})))){if("function"==typeof t.toJSON&&(t=t.toJSON()),"object"!==i(t))return r?new u.default(t):t;s=t instanceof Map?Ot.tags.map:t[Symbol.iterator]?Ot.tags.seq:Ot.tags.map}o?o.wrapScalars=r:o={wrapScalars:r},o.onTagObj&&(o.onTagObj(s),delete o.onTagObj);var l={};if(t&&"object"===i(t)&&o.prevObjects){var c=o.prevObjects.find((function(e){return e.value===t}));if(c){var d=new n.default(c);return o.aliasNodes.push(d),d}l.value=t,o.prevObjects.push(l)}return l.node=s.createNode?s.createNode(this,t,o):r?new u.default(t):t,l.node}},{key:"createPair",value:function(e,t,n){var r=this.createNode(e,n.wrapScalars,null,n),a=this.createNode(t,n.wrapScalars,null,n);return new o.default(r,a)}},{key:"resolveScalar",value:function(e,t){t||(t=this.tags);for(var n=0;n<t.length;++n){var r=t[n],a=r.format,o=r.test,i=r.resolve;if(o){var s=e.match(o);if(s){var f=i.apply(null,s);return f instanceof u.default||(f=new u.default(f)),a&&(f.format=a),f}}}return this.tags.scalarFallback&&(e=this.tags.scalarFallback(e)),new u.default(e)}},{key:"resolveNode",value:function(e,t,n){var a=this.tags.filter((function(e){return e.tag===n})),o=a.find((function(e){return!e.test}));t.error&&e.errors.push(t.error);try{if(o){var i=o.resolve(e,t);i instanceof r.default||(i=new u.default(i)),t.resolved=i}else{var s=(0,ve.resolveString)(e,t);"string"==typeof s&&a.length>0&&(t.resolved=this.resolveScalar(s,a))}}catch(n){n.source||(n.source=t),e.errors.push(n),t.resolved=null}return t.resolved?(n&&t.tag&&(t.resolved.tag=n),t.resolved):null}},{key:"resolveNodeWithFallback",value:function(t,n,r){var a=this.resolveNode(t,n,r);if(Object.prototype.hasOwnProperty.call(n,"resolved"))return a;var o,i=(o=n.type)===T.Type.FLOW_MAP||o===T.Type.MAP?e.defaultTags.MAP:function(e){var t=e.type;return t===T.Type.FLOW_SEQ||t===T.Type.SEQ}(n)?e.defaultTags.SEQ:e.defaultTags.STR;if(i){t.warnings.push(new x.YAMLWarning(n,"The tag ".concat(r," is unavailable, falling back to ").concat(i)));var s=this.resolveNode(t,n,i);return s.tag=r,s}return t.errors.push(new x.YAMLReferenceError(n,"The tag ".concat(r," is unavailable"))),null}},{key:"getTagObject",value:function(e){if(e instanceof n.default)return n.default;if(e.tag){var t=this.tags.filter((function(t){return t.tag===e.tag}));if(t.length>0)return t.find((function(t){return t.format===e.format}))||t[0]}var r,a;if(e instanceof u.default){a=e.value;var o=this.tags.filter((function(e){return e.identify&&e.identify(a)||e.class&&a instanceof e.class}));r=o.find((function(t){return t.format===e.format}))||o.find((function(e){return!e.format}))}else a=e,r=this.tags.find((function(e){return e.nodeClass&&a instanceof e.nodeClass}));if(!r){var s=a&&a.constructor?a.constructor.name:i(a);throw new Error("Tag not resolved for ".concat(s," value"))}return r}},{key:"stringifyProps",value:function(e,t,n){var r=n.anchors,a=n.doc,o=[],i=a.anchors.getName(e);return i&&(r[i]=e,o.push("&".concat(i))),e.tag?o.push(a.stringifyTag(e.tag)):t.default||o.push(a.stringifyTag(t.tag)),o.join(" ")}},{key:"stringify",value:function(e,t,n,i){var s;if(!(e instanceof a.default)){var u={aliasNodes:[],onTagObj:function(e){return s=e},prevObjects:[]};e=this.createNode(e,!0,null,u);var f=t.doc.anchors,l=!0,c=!1,d=void 0;try{for(var h,p=u.aliasNodes[Symbol.iterator]();!(l=(h=p.next()).done);l=!0){var v=h.value;v.source=v.source.node;var g=f.getName(v.source);g||(g=f.newName(),f.map[g]=v.source)}}catch(e){c=!0,d=e}finally{try{l||null==p.return||p.return()}finally{if(c)throw d}}}if(t.tags=this,e instanceof o.default)return e.toString(t,n,i);s||(s=this.getTagObject(e));var m=this.stringifyProps(e,s,t),y="function"==typeof s.stringify?s.stringify(e,t,n,i):e instanceof r.default?e.toString(t,n,i):(0,fe.stringifyString)(e,t,n,i);return m?e instanceof r.default&&"{"!==y[0]&&"["!==y[0]?"".concat(m,"\n").concat(t.indent).concat(y):"".concat(m," ").concat(y):y}}]),e}();t.default=d,c(d,"defaultPrefix","tag:yaml.org,2002:"),c(d,"defaultTags",{MAP:"tag:yaml.org,2002:map",SEQ:"tag:yaml.org,2002:seq",STR:"tag:yaml.org,2002:str"})}));a(Mt);var St=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=h(J),r=h(ae),a=h(oe),o=h(Mt),i=h(ee),u=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)if(Object.prototype.hasOwnProperty.call(e,n)){var r=Object.defineProperty&&Object.getOwnPropertyDescriptor?Object.getOwnPropertyDescriptor(e,n):{};r.get||r.set?Object.defineProperty(t,n,r):t[n]=e[n]}return t.default=e,t}(X),l=h(H),c=h(z),d=h(G);function h(e){return e&&e.__esModule?e:{default:e}}var p,v,g,m=function(){function e(t){s(this,e),this.anchors=new r.default(t.anchorPrefix),this.commentBefore=null,this.comment=null,this.contents=null,this.directivesEndMarker=null,this.errors=[],this.options=t,this.schema=null,this.tagPrefixes=[],this.version=null,this.warnings=[]}return f(e,[{key:"assertCollectionContents",value:function(){if(this.contents instanceof u.default)return!0;throw new Error("Expected a YAML collection as document contents")}},{key:"add",value:function(e){return this.assertCollectionContents(),this.contents.add(e)}},{key:"addIn",value:function(e,t){this.assertCollectionContents(),this.contents.addIn(e,t)}},{key:"delete",value:function(e){return this.assertCollectionContents(),this.contents.delete(e)}},{key:"deleteIn",value:function(e){return(0,u.isEmptyPath)(e)?null!=this.contents&&(this.contents=null,!0):(this.assertCollectionContents(),this.contents.deleteIn(e))}},{key:"getDefaults",value:function(){return e.defaults[this.version]||e.defaults[this.options.version]||{}}},{key:"get",value:function(e,t){return this.contents instanceof u.default?this.contents.get(e,t):void 0}},{key:"getIn",value:function(e,t){return(0,u.isEmptyPath)(e)?!t&&this.contents instanceof c.default?this.contents.value:this.contents:this.contents instanceof u.default?this.contents.getIn(e,t):void 0}},{key:"has",value:function(e){return this.contents instanceof u.default&&this.contents.has(e)}},{key:"hasIn",value:function(e){return(0,u.isEmptyPath)(e)?void 0!==this.contents:this.contents instanceof u.default&&this.contents.hasIn(e)}},{key:"set",value:function(e,t){this.assertCollectionContents(),this.contents.set(e,t)}},{key:"setIn",value:function(e,t){(0,u.isEmptyPath)(e)?this.contents=t:(this.assertCollectionContents(),this.contents.setIn(e,t))}},{key:"setSchema",value:function(e,t){if(e||t||!this.schema){"number"==typeof e&&(e=e.toFixed(1)),"1.0"===e||"1.1"===e||"1.2"===e?(this.version?this.version=e:this.options.version=e,delete this.options.schema):e&&"string"==typeof e&&(this.options.schema=e),Array.isArray(t)&&(this.options.customTags=t);var n=Object.assign({},this.getDefaults(),this.options);this.schema=new o.default(n)}}},{key:"parse",value:function(e,t){this.options.keepCstNodes&&(this.cstNode=e),this.options.keepNodeTypes&&(this.type="DOCUMENT");var n=e.directives,r=void 0===n?[]:n,a=e.contents,o=void 0===a?[]:a,i=e.directivesEndMarker,s=e.error,u=e.valueRange;if(s&&(s.source||(s.source=this),this.errors.push(s)),this.parseDirectives(r,t),i&&(this.directivesEndMarker=!0),this.range=u?[u.start,u.end]:null,this.setSchema(),this.anchors._cstAliases=[],this.parseContents(o),this.anchors.resolveNodes(),this.options.prettyErrors){var f=!0,l=!1,c=void 0;try{for(var d,h=this.errors[Symbol.iterator]();!(f=(d=h.next()).done);f=!0){var p=d.value;p instanceof x.YAMLError&&p.makePretty()}}catch(e){l=!0,c=e}finally{try{f||null==h.return||h.return()}finally{if(l)throw c}}var v=!0,g=!1,m=void 0;try{for(var y,_=this.warnings[Symbol.iterator]();!(v=(y=_.next()).done);v=!0){var b=y.value;b instanceof x.YAMLError&&b.makePretty()}}catch(e){g=!0,m=e}finally{try{v||null==_.return||_.return()}finally{if(g)throw m}}}return this}},{key:"parseDirectives",value:function(e,t){var n=this,r=[],a=!1;if(e.forEach((function(e){var t=e.comment,o=e.name;switch(o){case"TAG":n.resolveTagDirective(e),a=!0;break;case"YAML":case"YAML:1.0":n.resolveYamlDirective(e),a=!0;break;default:if(o){var i="YAML only supports %TAG and %YAML directives, and not %".concat(o);n.warnings.push(new x.YAMLWarning(e,i))}}t&&r.push(t)})),t&&!a&&"1.1"===(this.version||t.version||this.options.version)){this.tagPrefixes=t.tagPrefixes.map((function(e){return{handle:e.handle,prefix:e.prefix}})),this.version=t.version}this.commentBefore=r.join("\n")||null}},{key:"parseContents",value:function(e){var t=this,n={before:[],after:[]},r=[],a=!1;switch(e.forEach((function(e){if(e.valueRange){if(1===r.length){t.errors.push(new x.YAMLSyntaxError(e,"Document is not valid YAML (bad indentation?)"))}var o=t.resolveNode(e);a&&(o.spaceBefore=!0,a=!1),r.push(o)}else if(null!==e.comment){(0===r.length?n.before:n.after).push(e.comment)}else e.type===T.Type.BLANK_LINE&&(a=!0,0===r.length&&n.before.length>0&&!t.commentBefore&&(t.commentBefore=n.before.join("\n"),n.before=[]))})),r.length){case 0:this.contents=null,n.after=n.before;break;case 1:if(this.contents=r[0],this.contents){var o=n.before.join("\n")||null;if(o){var i=this.contents instanceof u.default&&this.contents.items[0]?this.contents.items[0]:this.contents;i.commentBefore=i.commentBefore?"".concat(o,"\n").concat(i.commentBefore):o}}else n.after=n.before.concat(n.after);break;default:this.contents=r,this.contents[0]?this.contents[0].commentBefore=n.before.join("\n")||null:n.after=n.before.concat(n.after)}this.comment=n.after.join("\n")||null}},{key:"resolveTagDirective",value:function(e){var t=y(e.parameters,2),n=t[0],r=t[1];if(n&&r)if(this.tagPrefixes.every((function(e){return e.handle!==n})))this.tagPrefixes.push({handle:n,prefix:r});else{this.errors.push(new x.YAMLSemanticError(e,"The %TAG directive must only be given at most once per handle in the same document."))}else{this.errors.push(new x.YAMLSemanticError(e,"Insufficient parameters given for %TAG directive"))}}},{key:"resolveYamlDirective",value:function(t){var n=y(t.parameters,1)[0];if("YAML:1.0"===t.name&&(n="1.0"),this.version){this.errors.push(new x.YAMLSemanticError(t,"The %YAML directive must only be given at most once per document."))}if(n){if(!e.defaults[n]){var r=this.version||this.options.version,a="Document will be parsed as YAML ".concat(r," rather than YAML ").concat(n);this.warnings.push(new x.YAMLWarning(t,a))}this.version=n}else{this.errors.push(new x.YAMLSemanticError(t,"Insufficient parameters given for %YAML directive"))}}},{key:"resolveTagName",value:function(e){var t=e.tag,n=e.type,r=!1;if(t){var a=t.handle,i=t.suffix,s=t.verbatim;if(s){if("!"!==s&&"!!"!==s)return s;var u="Verbatim tags aren't resolved, so ".concat(s," is invalid.");this.errors.push(new x.YAMLSemanticError(e,u))}else if("!"!==a||i){var f=this.tagPrefixes.find((function(e){return e.handle===a}));if(!f){var l=this.getDefaults().tagPrefixes;l&&(f=l.find((function(e){return e.handle===a})))}if(f){if(i){if("!"===a&&"1.0"===(this.version||this.options.version)){if("^"===i[0])return i;if(/[:/]/.test(i)){var c=i.match(/^([a-z0-9-]+)\/(.*)/i);return c?"tag:".concat(c[1],".yaml.org,2002:").concat(c[2]):"tag:".concat(i)}}return f.prefix+decodeURIComponent(i)}this.errors.push(new x.YAMLSemanticError(e,"The ".concat(a," tag has no suffix.")))}else{var d="The ".concat(a," tag handle is non-default and was not declared.");this.errors.push(new x.YAMLSemanticError(e,d))}}else r=!0}switch(n){case T.Type.BLOCK_FOLDED:case T.Type.BLOCK_LITERAL:case T.Type.QUOTE_DOUBLE:case T.Type.QUOTE_SINGLE:return o.default.defaultTags.STR;case T.Type.FLOW_MAP:case T.Type.MAP:return o.default.defaultTags.MAP;case T.Type.FLOW_SEQ:case T.Type.SEQ:return o.default.defaultTags.SEQ;case T.Type.PLAIN:return r?o.default.defaultTags.STR:null;default:return null}}},{key:"resolveNode",value:function(e){if(!e)return null;var t,n=this.anchors,r=this.errors,a=this.schema,o=!1,s=!1,u={before:[],after:[]},f=function(e){return e&&-1!==[T.Type.MAP_KEY,T.Type.MAP_VALUE,T.Type.SEQ_ITEM].indexOf(e.type)}(e.context.parent)?e.context.parent.props.concat(e.props):e.props,l=!0,c=!1,d=void 0;try{for(var h,p=f[Symbol.iterator]();!(l=(h=p.next()).done);l=!0){var v=h.value,g=v.start,m=v.end;switch(e.context.src[g]){case T.Char.COMMENT:if(!e.commentHasRequiredWhitespace(g)){r.push(new x.YAMLSemanticError(e,"Comments must be separated from other tokens by white space characters"))}var y=e.context.src.slice(g+1,m),_=e.header,b=e.valueRange;b&&(g>b.start||_&&g>_.start)?u.after.push(y):u.before.push(y);break;case T.Char.ANCHOR:if(o){r.push(new x.YAMLSemanticError(e,"A node can have at most one anchor"))}o=!0;break;case T.Char.TAG:if(s){r.push(new x.YAMLSemanticError(e,"A node can have at most one tag"))}s=!0}}}catch(e){c=!0,d=e}finally{try{l||null==p.return||p.return()}finally{if(c)throw d}}if(o){var w=e.anchor,E=n.getNode(w);E&&(n.map[n.newName(w)]=E),n.map[w]=e}if(e.type===T.Type.ALIAS){if(o||s){r.push(new x.YAMLSemanticError(e,"An alias node must not specify any properties"))}var O=e.rawValue,M=n.getNode(O);if(!M){var S="Aliased anchor not found: ".concat(O);return r.push(new x.YAMLReferenceError(e,S)),null}t=new i.default(M),n._cstAliases.push(t)}else{var A=this.resolveTagName(e);if(A)t=a.resolveNodeWithFallback(this,e,A);else{if(e.type!==T.Type.PLAIN){var k="Failed to resolve ".concat(e.type," node here");return r.push(new x.YAMLSyntaxError(e,k)),null}try{t=a.resolveScalar(e.strValue||"")}catch(t){return t.source||(t.source=e),r.push(t),null}}}if(t){t.range=[e.range.start,e.range.end],this.options.keepCstNodes&&(t.cstNode=e),this.options.keepNodeTypes&&(t.type=e.type);var L=u.before.join("\n");L&&(t.commentBefore=t.commentBefore?"".concat(t.commentBefore,"\n").concat(L):L);var P=u.after.join("\n");P&&(t.comment=t.comment?"".concat(t.comment,"\n").concat(P):P)}return e.resolved=t}},{key:"listNonDefaultTags",value:function(){return(0,a.default)(this.contents).filter((function(e){return 0!==e.indexOf(o.default.defaultPrefix)}))}},{key:"setTagPrefix",value:function(e,t){if("!"!==e[0]||"!"!==e[e.length-1])throw new Error("Handle must start and end with !");if(t){var n=this.tagPrefixes.find((function(t){return t.handle===e}));n?n.prefix=t:this.tagPrefixes.push({handle:e,prefix:t})}else this.tagPrefixes=this.tagPrefixes.filter((function(t){return t.handle!==e}))}},{key:"stringifyTag",value:function(e){if("1.0"===(this.version||this.options.version)){var t=e.match(/^tag:private\.yaml\.org,2002:([^:/]+)$/);if(t)return"!"+t[1];var n=e.match(/^tag:([a-zA-Z0-9-]+)\.yaml\.org,2002:(.*)/);return n?"!".concat(n[1],"/").concat(n[2]):"!".concat(e.replace(/^tag:/,""))}var r=this.tagPrefixes.find((function(t){return 0===e.indexOf(t.prefix)}));if(!r){var a=this.getDefaults().tagPrefixes;r=a&&a.find((function(t){return 0===e.indexOf(t.prefix)}))}if(!r)return"!"===e[0]?e:"!<".concat(e,">");var o=e.substr(r.prefix.length).replace(/[!,[\]{}]/g,(function(e){return{"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"}[e]}));return r.handle+o}},{key:"toJSON",value:function(e){var t=this,n=this.options,r=n.keepBlobsInJSON,a=n.mapAsMap,o=n.maxAliasCount,i=r&&("string"!=typeof e||!(this.contents instanceof c.default)),s={doc:this,keep:i,mapAsMap:i&&!!a,maxAliasCount:o},u=Object.keys(this.anchors.map);return u.length>0&&(s.anchors=u.map((function(e){return{alias:[],aliasCount:0,count:1,node:t.anchors.map[e]}}))),(0,d.default)(this.contents,e,s)}},{key:"toString",value:function(){if(this.errors.length>0)throw new Error("Document with errors cannot be stringified");this.setSchema();var e=[],t=!1;if(this.version){var r="%YAML 1.2";"yaml-1.1"===this.schema.name&&("1.0"===this.version?r="%YAML:1.0":"1.1"===this.version&&(r="%YAML 1.1")),e.push(r),t=!0}var a=this.listNonDefaultTags();this.tagPrefixes.forEach((function(n){var r=n.handle,o=n.prefix;a.some((function(e){return 0===e.indexOf(o)}))&&(e.push("%TAG ".concat(r," ").concat(o)),t=!0)})),(t||this.directivesEndMarker)&&e.push("---"),this.commentBefore&&(!t&&this.directivesEndMarker||e.unshift(""),e.unshift(this.commentBefore.replace(/^/gm,"#")));var o={anchors:{},doc:this,indent:""},i=!1,s=null;if(this.contents){this.contents instanceof l.default&&(this.contents.spaceBefore&&(t||this.directivesEndMarker)&&e.push(""),this.contents.commentBefore&&e.push(this.contents.commentBefore.replace(/^/gm,"#")),o.forceBlockIndent=!!this.comment,s=this.contents.comment);var u=s?null:function(){return i=!0},f=this.schema.stringify(this.contents,o,(function(){return s=null}),u);e.push((0,n.default)(f,"",s))}else void 0!==this.contents&&e.push(this.schema.stringify(this.contents,o));return this.comment&&(i&&!s||""===e[e.length-1]||e.push(""),e.push(this.comment.replace(/^/gm,"#"))),e.join("\n")+"\n"}}]),e}();t.default=m,p=m,v="defaults",g={"1.0":{schema:"yaml-1.1",merge:!0,tagPrefixes:[{handle:"!",prefix:o.default.defaultPrefix},{handle:"!!",prefix:"tag:private.yaml.org,2002:"}]},1.1:{schema:"yaml-1.1",merge:!0,tagPrefixes:[{handle:"!",prefix:"!"},{handle:"!!",prefix:o.default.defaultPrefix}]},1.2:{schema:"core",merge:!1,tagPrefixes:[{handle:"!",prefix:"!"},{handle:"!!",prefix:o.default.defaultPrefix}]}},v in p?Object.defineProperty(p,v,{value:g,enumerable:!0,configurable:!0,writable:!0}):p[v]=g}));a(St);var At=o((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=o(q),r=o(St),a=o(Mt);function o(e){return e&&e.__esModule?e:{default:e}}var i={anchorPrefix:"a",customTags:null,keepCstNodes:!1,keepNodeTypes:!0,keepBlobsInJSON:!0,mapAsMap:!1,maxAliasCount:100,prettyErrors:!1,simpleKeys:!1,version:"1.2"};var u=function(e){function t(e){return s(this,t),g(this,c(t).call(this,Object.assign({},i,e)))}return l(t,e),t}(r.default);function f(e,t){var r=(0,n.default)(e),a=new u(t).parse(r[0]);if(r.length>1){a.errors.unshift(new x.YAMLSemanticError(r[1],"Source contains multiple documents; please use YAML.parseAllDocuments()"))}return a}var d={createNode:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2?arguments[2]:void 0;void 0===n&&"string"==typeof t&&(n=t,t=!0);var o=Object.assign({},r.default.defaults[i.version],i);return new a.default(o).createNode(e,t,n)},defaultOptions:i,Document:u,parse:function(e,t){var n=f(e,t);if(n.warnings.forEach((function(e){return(0,ie.warn)(e)})),n.errors.length>0)throw n.errors[0];return n.toJSON()},parseAllDocuments:function(e,t){var r,a=[],o=!0,i=!1,s=void 0;try{for(var f,l=(0,n.default)(e)[Symbol.iterator]();!(o=(f=l.next()).done);o=!0){var c=f.value,d=new u(t);d.parse(c,r),a.push(d),r=d}}catch(e){i=!0,s=e}finally{try{o||null==l.return||l.return()}finally{if(i)throw s}}return a},parseCST:n.default,parseDocument:f,stringify:function(e,t){var n=new u(t);return n.contents=e,String(n)}};t.default=d}));a(At);var kt=At.default,Lt=o((function(e,t){t.__esModule=!0,t.defineParents=function e(t,n){void 0===n&&(n=null),"children"in t&&t.children.forEach((function(n){return e(n,t)})),"anchor"in t&&t.anchor&&e(t.anchor,t),"tag"in t&&t.tag&&e(t.tag,t),"leadingComments"in t&&t.leadingComments.forEach((function(n){return e(n,t)})),"middleComments"in t&&t.middleComments.forEach((function(n){return e(n,t)})),"indicatorComment"in t&&t.indicatorComment&&e(t.indicatorComment,t),"trailingComment"in t&&t.trailingComment&&e(t.trailingComment,t),"endComments"in t&&t.endComments.forEach((function(n){return e(n,t)})),Object.defineProperty(t,"_parent",{value:n,enumerable:!1})}}));a(Lt);Lt.defineParents;var Tt=o((function(e,t){t.__esModule=!0,t.getPointText=function(e){return e.line+":"+e.column}}));a(Tt);Tt.getPointText;var Pt=o((function(e,t){function n(e,t){if(t.position.end.offset<e.position.end.offset)return!1;switch(e.type){case"sequenceItem":return t.position.start.column>e.position.start.column;case"mappingKey":case"mappingValue":return t.position.start.column>e._parent.position.start.column&&(0===e.children.length||1===e.children.length&&"blockFolded"!==e.children[0].type&&"blockLiteral"!==e.children[0].type&&("mappingValue"===e.type||e.position.start.offset!==e.children[0].position.start.offset));default:return!1}}t.__esModule=!0,t.attachComments=function(e){Lt.defineParents(e);var t=function(e){for(var t=Array.from(new Array(e.position.end.line),(function(){return{}})),n=0,r=e.comments;n<r.length;n++){var a=r[n];t[a.position.start.line-1].comment=a}return function e(t,n){if(n.position.start.offset===n.position.end.offset)return;if("leadingComments"in n){var r=n.position.start,a=t[r.line-1].leadingAttachableNode;(!a||r.column<a.position.start.column)&&(t[r.line-1].leadingAttachableNode=n)}if("trailingComment"in n&&n.position.end.column>1&&"document"!==n.type&&"documentHead"!==n.type){var o=n.position.end,i=t[o.line-1].trailingAttachableNode;(!i||o.column>=i.position.end.column)&&(t[o.line-1].trailingAttachableNode=n)}if("root"!==n.type&&"document"!==n.type&&"documentHead"!==n.type&&"documentBody"!==n.type)for(var s=n.position,u=(r=s.start,[(o=s.end).line].concat(r.line===o.line?[]:r.line)),f=0,l=u;f<l.length;f++){var c=l[f],d=t[c-1].trailingNode;(!d||o.column>=d.position.end.column)&&(t[c-1].trailingNode=n)}"children"in n&&n.children.forEach((function(n){e(t,n)}))}(t,e),t}(e),r=e.children.slice();e.comments.sort((function(e,t){return e.position.start.offset-t.position.end.offset})).filter((function(e){return!e._parent})).forEach((function(e){for(;r.length>1&&e.position.start.line>r[0].position.end.line;)r.shift();!function(e,t,r){var a=e.position.start.line,o=t[a-1].trailingAttachableNode;if(o){if(o.trailingComment)throw new Error("Unexpected multiple trailing comment at "+Tt.getPointText(e.position.start));return Lt.defineParents(e,o),void(o.trailingComment=e)}for(var i=a;i>=r.position.start.line;i--){var s=t[i-1].trailingNode,u=void 0;if(s)u=s;else{if(i===a||!t[i-1].comment)continue;u=t[i-1].comment._parent}for(;;){if(n(u,e))return Lt.defineParents(e,u),void u.endComments.push(e);if(!u._parent)break;u=u._parent}break}for(i=a+1;i<=r.position.end.line;i++){var f=t[i-1].leadingAttachableNode;if(f)return Lt.defineParents(e,f),void f.leadingComments.push(e)}var l=r.children[1];Lt.defineParents(e,l),l.endComments.push(e)}(e,t,r[0])}))}}));a(Pt);Pt.attachComments;var Ct=o((function(e,t){t.__esModule=!0,t.createNode=function(e,t){return{type:e,position:t}}}));a(Ct);Ct.createNode;var Nt,xt=(Nt=k)&&Nt.default||Nt,Rt=o((function(e,t){t.__esModule=!0,t.createRoot=function(e,t,n){return xt.__assign(xt.__assign({},Ct.createNode("root",e)),{children:t,comments:n})}}));a(Rt);Rt.createRoot;var It=o((function(e,t){t.__esModule=!0,t.removeCstBlankLine=function e(t){switch(t.type){case"DOCUMENT":for(var n=t.contents.length-1;n>=0;n--)"BLANK_LINE"===t.contents[n].type?t.contents.splice(n,1):e(t.contents[n]);for(n=t.directives.length-1;n>=0;n--)"BLANK_LINE"===t.directives[n].type&&t.directives.splice(n,1);break;case"FLOW_MAP":case"FLOW_SEQ":case"MAP":case"SEQ":for(n=t.items.length-1;n>=0;n--){var r=t.items[n];"char"in r||("BLANK_LINE"===r.type?t.items.splice(n,1):e(r))}break;case"MAP_KEY":case"MAP_VALUE":case"SEQ_ITEM":t.node&&e(t.node);break;case"ALIAS":case"BLANK_LINE":case"BLOCK_FOLDED":case"BLOCK_LITERAL":case"COMMENT":case"DIRECTIVE":case"PLAIN":case"QUOTE_DOUBLE":case"QUOTE_SINGLE":break;default:throw new Error("Unexpected node type "+JSON.stringify(t.type))}}}));a(It);It.removeCstBlankLine;var Bt=o((function(e,t){t.__esModule=!0,t.createLeadingCommentAttachable=function(){return{leadingComments:[]}}}));a(Bt);Bt.createLeadingCommentAttachable;var Dt=o((function(e,t){t.__esModule=!0,t.createTrailingCommentAttachable=function(e){return void 0===e&&(e=null),{trailingComment:e}}}));a(Dt);Dt.createTrailingCommentAttachable;var jt=o((function(e,t){t.__esModule=!0,t.createCommentAttachable=function(){return xt.__assign(xt.__assign({},Bt.createLeadingCommentAttachable()),Dt.createTrailingCommentAttachable())}}));a(jt);jt.createCommentAttachable;var Yt=o((function(e,t){t.__esModule=!0,t.createAlias=function(e,t,n){return xt.__assign(xt.__assign(xt.__assign(xt.__assign({},Ct.createNode("alias",e)),jt.createCommentAttachable()),t),{value:n})}}));a(Yt);Yt.createAlias;var Ft=o((function(e,t){t.__esModule=!0,t.transformAlias=function(e,t){var n=e.cstNode;return Yt.createAlias(t.transformRange({origStart:n.valueRange.origStart-1,origEnd:n.valueRange.origEnd}),t.transformContent(e),n.rawValue)}}));a(Ft);Ft.transformAlias;var Ut=o((function(e,t){t.__esModule=!0,t.createBlockFolded=function(e){return xt.__assign(xt.__assign({},e),{type:"blockFolded"})}}));a(Ut);Ut.createBlockFolded;var Kt=o((function(e,t){t.__esModule=!0,t.createBlockValue=function(e,t,n,r,a,o){return xt.__assign(xt.__assign(xt.__assign(xt.__assign({},Ct.createNode("blockValue",e)),Bt.createLeadingCommentAttachable()),t),{chomping:n,indent:r,value:a,indicatorComment:o})}}));a(Kt);Kt.createBlockValue;var Wt=o((function(e,t){t.__esModule=!0,function(e){e.Tag="!",e.Anchor="&",e.Comment="#"}(t.PropLeadingCharacter||(t.PropLeadingCharacter={}))}));a(Wt);Wt.PropLeadingCharacter;var Qt=o((function(e,t){t.__esModule=!0,t.createAnchor=function(e,t){return xt.__assign(xt.__assign({},Ct.createNode("anchor",e)),{value:t})}}));a(Qt);Qt.createAnchor;var Vt=o((function(e,t){t.__esModule=!0,t.createComment=function(e,t){return xt.__assign(xt.__assign({},Ct.createNode("comment",e)),{value:t})}}));a(Vt);Vt.createComment;var $t=o((function(e,t){t.__esModule=!0,t.createContent=function(e,t,n){return{anchor:t,tag:e,middleComments:n}}}));a($t);$t.createContent;var qt=o((function(e,t){t.__esModule=!0,t.createTag=function(e,t){return xt.__assign(xt.__assign({},Ct.createNode("tag",e)),{value:t})}}));a(qt);qt.createTag;var Jt=o((function(e,t){t.__esModule=!0,t.transformContent=function(e,t,n){void 0===n&&(n=function(){return!1});for(var r=e.cstNode,a=[],o=null,i=null,s=null,u=0,f=r.props;u<f.length;u++){var l=f[u],c=t.text[l.origStart];switch(c){case Wt.PropLeadingCharacter.Tag:o=o||l,i=qt.createTag(t.transformRange(l),e.tag);break;case Wt.PropLeadingCharacter.Anchor:o=o||l,s=Qt.createAnchor(t.transformRange(l),r.anchor);break;case Wt.PropLeadingCharacter.Comment:var d=Vt.createComment(t.transformRange(l),t.text.slice(l.origStart+1,l.origEnd));t.comments.push(d),!n(d)&&o&&o.origEnd<=l.origStart&&l.origEnd<=r.valueRange.origStart&&a.push(d);break;default:throw new Error("Unexpected leading character "+JSON.stringify(c))}}return $t.createContent(i,s,a)}}));a(Jt);Jt.transformContent;var Gt=o((function(e,t){var n;t.__esModule=!0,function(e){e.CLIP="clip",e.STRIP="strip",e.KEEP="keep"}(n||(n={})),t.transformAstBlockValue=function(e,t){var r=e.cstNode,a="CLIP"===r.chomping?0:1,o=r.header.origEnd-r.header.origStart-1-a!=0,i=t.transformRange({origStart:r.header.origStart,origEnd:r.valueRange.origEnd}),s=null,u=Jt.transformContent(e,t,(function(e){if(!(i.start.offset<e.position.start.offset&&e.position.end.offset<i.end.offset))return!1;if(s)throw new Error("Unexpected multiple indicator comments at "+Tt.getPointText(e.position.start));return s=e,!0}));return Kt.createBlockValue(i,u,n[r.chomping],o?r.blockIndent:null,r.strValue,s)}}));a(Gt);Gt.transformAstBlockValue;var Ht=o((function(e,t){t.__esModule=!0,t.transformBlockFolded=function(e,t){return Ut.createBlockFolded(Gt.transformAstBlockValue(e,t))}}));a(Ht);Ht.transformBlockFolded;var zt=o((function(e,t){t.__esModule=!0,t.createBlockLiteral=function(e){return xt.__assign(xt.__assign({},e),{type:"blockLiteral"})}}));a(zt);zt.createBlockLiteral;var Zt=o((function(e,t){t.__esModule=!0,t.transformBlockLiteral=function(e,t){return zt.createBlockLiteral(Gt.transformAstBlockValue(e,t))}}));a(Zt);Zt.transformBlockLiteral;var Xt=o((function(e,t){t.__esModule=!0,t.transformComment=function(e,t){return Vt.createComment(t.transformRange(e.range),e.comment)}}));a(Xt);Xt.transformComment;var en=o((function(e,t){t.__esModule=!0,t.createDirective=function(e,t,n){return xt.__assign(xt.__assign(xt.__assign({},Ct.createNode("directive",e)),jt.createCommentAttachable()),{name:t,parameters:n})}}));a(en);en.createDirective;var tn=o((function(e,t){t.__esModule=!0,t.extractPropComments=function(e,t){for(var n=0,r=e.props;n<r.length;n++){var a=r[n],o=t.text[a.origStart];switch(o){case Wt.PropLeadingCharacter.Comment:t.comments.push(Vt.createComment(t.transformRange(a),t.text.slice(a.origStart+1,a.origEnd)));break;default:throw new Error("Unexpected leading character "+JSON.stringify(o))}}}}));a(tn);tn.extractPropComments;var nn=o((function(e,t){t.__esModule=!0,t.transformDirective=function(e,t){return tn.extractPropComments(e,t),en.createDirective(t.transformRange(e.range),e.name,e.parameters)}}));a(nn);nn.transformDirective;var rn=o((function(e,t){t.__esModule=!0,t.createDocument=function(e,t,n,r){return xt.__assign(xt.__assign(xt.__assign({},Ct.createNode("document",e)),Dt.createTrailingCommentAttachable(r)),{children:[t,n]})}}));a(rn);rn.createDocument;var an=o((function(e,t){t.__esModule=!0,t.createPosition=function(e,t){return{start:e,end:t}},t.createEmptyPosition=function(e){return{start:e,end:e}}}));a(an);an.createPosition,an.createEmptyPosition;var on=o((function(e,t){t.__esModule=!0,t.createEndCommentAttachable=function(e){return void 0===e&&(e=[]),{endComments:e}}}));a(on);on.createEndCommentAttachable;var sn=o((function(e,t){t.__esModule=!0,t.createDocumentBody=function(e,t,n){return xt.__assign(xt.__assign(xt.__assign({},Ct.createNode("documentBody",e)),on.createEndCommentAttachable(n)),{children:t?[t]:[]})}}));a(sn);sn.createDocumentBody;var un=o((function(e,t){t.__esModule=!0,t.getLast=function(e){return e[e.length-1]}}));a(un);un.getLast;var fn=o((function(e,t){t.__esModule=!0,t.getMatchIndex=function(e,t){var n=e.match(t);return n?n.index:-1}}));a(fn);fn.getMatchIndex;var ln=o((function(e,t){t.__esModule=!0,t.transformDocumentBody=function(e,t,n){var r,a=e.cstNode,o=function(e,t,n){for(var r=[],a=[],o=[],i=!1,s=e.contents.length-1;s>=0;s--){var u=e.contents[s];if("COMMENT"===u.type){var f=t.transformNode(u);n&&n.line===f.position.start.line?o.unshift(f):i?r.unshift(f):f.position.start.offset>=e.valueRange.origEnd?a.unshift(f):r.unshift(f)}else i=!0}if(a.length>1)throw new Error("Unexpected multiple document trailing comments at "+Tt.getPointText(a[1].position.start));if(o.length>1)throw new Error("Unexpected multiple documentHead trailing comments at "+Tt.getPointText(o[1].position.start));return{comments:r,endComments:[],documentTrailingComment:un.getLast(a)||null,documentHeadTrailingComment:un.getLast(o)||null}}(a,t,n),i=o.comments,s=o.endComments,u=o.documentTrailingComment,f=o.documentHeadTrailingComment,l=t.transformNode(e.contents),c=function(e,t,n){var r=fn.getMatchIndex(n.text.slice(e.valueRange.origEnd),/^\.\.\./),a=-1===r?e.valueRange.origEnd:Math.max(0,e.valueRange.origEnd-1);"\r"===n.text[a-1]&&a--;var o=n.transformRange({origStart:null!==t?t.position.start.offset:a,origEnd:a}),i=-1===r?o.end:n.transformOffset(e.valueRange.origEnd+3);return{position:o,documentEndPoint:i}}(a,l,t),d=c.position,h=c.documentEndPoint;return(r=t.comments).push.apply(r,xt.__spreadArrays(i,s)),{documentBody:sn.createDocumentBody(d,l,s),documentEndPoint:h,documentTrailingComment:u,documentHeadTrailingComment:f}}}));a(ln);ln.transformDocumentBody;var cn=o((function(e,t){t.__esModule=!0,t.createDocumentHead=function(e,t,n,r){return xt.__assign(xt.__assign(xt.__assign(xt.__assign({},Ct.createNode("documentHead",e)),on.createEndCommentAttachable(n)),Dt.createTrailingCommentAttachable(r)),{children:t})}}));a(cn);cn.createDocumentHead;var dn=o((function(e,t){t.__esModule=!0,t.transformDocumentHead=function(e,t){var n,r=e.cstNode,a=function(e,t){for(var n=[],r=[],a=[],o=!1,i=e.directives.length-1;i>=0;i--){var s=t.transformNode(e.directives[i]);"comment"===s.type?o?r.unshift(s):a.unshift(s):(o=!0,n.unshift(s))}return{directives:n,comments:r,endComments:a}}(r,t),o=a.directives,i=a.comments,s=a.endComments,u=function(e,t,n){var r=fn.getMatchIndex(n.text.slice(0,e.valueRange.origStart),/---\s*$/),a=-1===r?{origStart:e.valueRange.origStart,origEnd:e.valueRange.origStart}:{origStart:r,origEnd:r+3};0!==t.length&&(a.origStart=t[0].position.start.offset);return{position:n.transformRange(a),endMarkerPoint:-1===r?null:n.transformOffset(r)}}(r,o,t),f=u.position,l=u.endMarkerPoint;return(n=t.comments).push.apply(n,xt.__spreadArrays(i,s)),{createDocumentHeadWithTrailingComment:function(e){return e&&t.comments.push(e),cn.createDocumentHead(f,o,s,e)},documentHeadEndMarkerPoint:l}}}));a(dn);dn.transformDocumentHead;var hn=o((function(e,t){t.__esModule=!0,t.transformDocument=function(e,t){var n=dn.transformDocumentHead(e,t),r=n.createDocumentHeadWithTrailingComment,a=n.documentHeadEndMarkerPoint,o=ln.transformDocumentBody(e,t,a),i=o.documentBody,s=o.documentEndPoint,u=o.documentTrailingComment,f=r(o.documentHeadTrailingComment);return u&&t.comments.push(u),rn.createDocument(an.createPosition(f.position.start,s),f,i,u)}}));a(hn);hn.transformDocument;var pn=o((function(e,t){t.__esModule=!0,t.createFlowCollection=function(e,t,n){return xt.__assign(xt.__assign(xt.__assign(xt.__assign({},Ct.createNode("flowCollection",e)),jt.createCommentAttachable()),t),{children:n})}}));a(pn);pn.createFlowCollection;var vn=o((function(e,t){t.__esModule=!0,t.createFlowMapping=function(e,t,n){return xt.__assign(xt.__assign({},pn.createFlowCollection(e,t,n)),{type:"flowMapping"})}}));a(vn);vn.createFlowMapping;var gn=o((function(e,t){t.__esModule=!0,t.createFlowMappingItem=function(e,t,n){return xt.__assign(xt.__assign(xt.__assign({},Ct.createNode("flowMappingItem",e)),Bt.createLeadingCommentAttachable()),{children:[t,n]})}}));a(gn);gn.createFlowMappingItem;var mn=o((function(e,t){t.__esModule=!0,t.extractComments=function(e,t){for(var n=[],r=0,a=e;r<a.length;r++){var o=a[r];o&&"type"in o&&"COMMENT"===o.type?t.comments.push(t.transformNode(o)):n.push(o)}return n}}));a(mn);mn.extractComments;var yn=o((function(e,t){t.__esModule=!0,t.getFlowMapItemAdditionalRanges=function(e){var t=["?",":"].map((function(t){var n=e.find((function(e){return"char"in e&&e.char===t}));return n?{origStart:n.origOffset,origEnd:n.origOffset+1}:null}));return{additionalKeyRange:t[0],additionalValueRange:t[1]}}}));a(yn);yn.getFlowMapItemAdditionalRanges;var _n=o((function(e,t){t.__esModule=!0,t.createSlicer=function(e,t){var n=t;return function(t){return e.slice(n,n=t)}}}));a(_n);_n.createSlicer;var bn=o((function(e,t){t.__esModule=!0,t.groupCstFlowCollectionItems=function(e){for(var t=[],n=_n.createSlicer(e,1),r=!1,a=1;a<e.length-1;a++){var o=e[a];"char"in o&&","===o.char?(t.push(n(a)),n(a+1),r=!1):r=!0}return r&&t.push(n(e.length-1)),t}}));a(bn);bn.groupCstFlowCollectionItems;var wn=o((function(e,t){t.__esModule=!0,t.createMappingKey=function(e,t){return xt.__assign(xt.__assign(xt.__assign(xt.__assign({},Ct.createNode("mappingKey",e)),Dt.createTrailingCommentAttachable()),on.createEndCommentAttachable()),{children:t?[t]:[]})}}));a(wn);wn.createMappingKey;var En=o((function(e,t){t.__esModule=!0,t.createMappingValue=function(e,t){return xt.__assign(xt.__assign(xt.__assign(xt.__assign({},Ct.createNode("mappingValue",e)),jt.createCommentAttachable()),on.createEndCommentAttachable()),{children:t?[t]:[]})}}));a(En);En.createMappingValue;var On=o((function(e,t){t.__esModule=!0,t.transformAstPair=function(e,t,n,r,a){var o=t.transformNode(e.key),i=t.transformNode("MERGE_PAIR"===e.type?e.value.type?e.value:e.value.items[0]:e.value),s=o||r?wn.createMappingKey(t.transformRange({origStart:r?r.origStart:o.position.start.offset,origEnd:o?o.position.end.offset:r.origStart+1}),o):null,u=i||a?En.createMappingValue(t.transformRange({origStart:a?a.origStart:i.position.start.offset,origEnd:i?i.position.end.offset:a.origStart+1}),i):null;return n(an.createPosition(s?s.position.start:u.position.start,u?u.position.end:s.position.end),s||wn.createMappingKey(an.createEmptyPosition(u.position.start),null),u||En.createMappingValue(an.createEmptyPosition(s.position.end),null))}}));a(On);On.transformAstPair;var Mn=o((function(e,t){t.__esModule=!0,t.transformFlowMap=function(e,t){var n=mn.extractComments(e.cstNode.items,t),r=bn.groupCstFlowCollectionItems(n),a=e.items.map((function(e,n){var a=r[n],o=yn.getFlowMapItemAdditionalRanges(a),i=o.additionalKeyRange,s=o.additionalValueRange;return On.transformAstPair(e,t,gn.createFlowMappingItem,i,s)})),o=n[0],i=un.getLast(n);return vn.createFlowMapping(t.transformRange({origStart:o.origOffset,origEnd:i.origOffset+1}),t.transformContent(e),a)}}));a(Mn);Mn.transformFlowMap;var Sn=o((function(e,t){t.__esModule=!0,t.createFlowSequence=function(e,t,n){return xt.__assign(xt.__assign({},pn.createFlowCollection(e,t,n)),{type:"flowSequence"})}}));a(Sn);Sn.createFlowSequence;var An=o((function(e,t){t.__esModule=!0,t.createFlowSequenceItem=function(e,t){return xt.__assign(xt.__assign({},Ct.createNode("flowSequenceItem",e)),{children:[t]})}}));a(An);An.createFlowSequenceItem;var kn=o((function(e,t){t.__esModule=!0,t.transformFlowSeq=function(e,t){var n=mn.extractComments(e.cstNode.items,t),r=bn.groupCstFlowCollectionItems(n),a=e.items.map((function(e,n){if("PAIR"!==e.type){var a=t.transformNode(e);return An.createFlowSequenceItem(an.createPosition(a.position.start,a.position.end),a)}var o=r[n],i=yn.getFlowMapItemAdditionalRanges(o),s=i.additionalKeyRange,u=i.additionalValueRange;return On.transformAstPair(e,t,gn.createFlowMappingItem,s,u)})),o=n[0],i=un.getLast(n);return Sn.createFlowSequence(t.transformRange({origStart:o.origOffset,origEnd:i.origOffset+1}),t.transformContent(e),a)}}));a(kn);kn.transformFlowSeq;var Ln=o((function(e,t){t.__esModule=!0,t.createMapping=function(e,t,n){return xt.__assign(xt.__assign(xt.__assign(xt.__assign({},Ct.createNode("mapping",e)),Bt.createLeadingCommentAttachable()),t),{children:n})}}));a(Ln);Ln.createMapping;var Tn=o((function(e,t){t.__esModule=!0,t.createMappingItem=function(e,t,n){return xt.__assign(xt.__assign(xt.__assign({},Ct.createNode("mappingItem",e)),Bt.createLeadingCommentAttachable()),{children:[t,n]})}}));a(Tn);Tn.createMappingItem;var Pn=o((function(e,t){t.__esModule=!0,t.transformMap=function(e,t){var n=e.cstNode;n.items.filter((function(e){return"MAP_KEY"===e.type||"MAP_VALUE"===e.type})).forEach((function(e){return tn.extractPropComments(e,t)}));var r=function(e){for(var t=[],n=_n.createSlicer(e,0),r=!1,a=0;a<e.length;a++){"MAP_VALUE"!==e[a].type?(r&&t.push(n(a)),r=!0):(t.push(n(a+1)),r=!1)}r&&t.push(n(1/0));return t}(mn.extractComments(n.items,t)),a=e.items.map((function(e,n){var a=r[n],o="MAP_VALUE"===a[0].type?[null,a[0].range]:[a[0].range,1===a.length?null:a[1].range],i=o[0],s=o[1];return On.transformAstPair(e,t,Tn.createMappingItem,i,s)}));return Ln.createMapping(an.createPosition(a[0].position.start,un.getLast(a).position.end),t.transformContent(e),a)}}));a(Pn);Pn.transformMap;var Cn=o((function(e,t){t.__esModule=!0,t.createPlain=function(e,t,n){return xt.__assign(xt.__assign(xt.__assign(xt.__assign({},Ct.createNode("plain",e)),jt.createCommentAttachable()),t),{value:n})}}));a(Cn);Cn.createPlain;var Nn=o((function(e,t){t.__esModule=!0,t.findLastCharIndex=function(e,t,n){for(var r=t;r>=0;r--)if(n.test(e[r]))return r;return-1}}));a(Nn);Nn.findLastCharIndex;var xn=o((function(e,t){t.__esModule=!0,t.transformPlain=function(e,t){var n=e.cstNode;return Cn.createPlain(t.transformRange({origStart:n.valueRange.origStart,origEnd:Nn.findLastCharIndex(t.text,n.valueRange.origEnd-1,/\S/)+1}),t.transformContent(e),n.strValue)}}));a(xn);xn.transformPlain;var Rn=o((function(e,t){t.__esModule=!0,t.createQuoteDouble=function(e){return xt.__assign(xt.__assign({},e),{type:"quoteDouble"})}}));a(Rn);Rn.createQuoteDouble;var In=o((function(e,t){t.__esModule=!0,t.createQuoteValue=function(e,t,n){return xt.__assign(xt.__assign(xt.__assign(xt.__assign({},Ct.createNode("quoteValue",e)),t),jt.createCommentAttachable()),{value:n})}}));a(In);In.createQuoteValue;var Bn=o((function(e,t){t.__esModule=!0,t.transformAstQuoteValue=function(e,t){var n=e.cstNode;return In.createQuoteValue(t.transformRange(n.valueRange),t.transformContent(e),n.strValue)}}));a(Bn);Bn.transformAstQuoteValue;var Dn=o((function(e,t){t.__esModule=!0,t.transformQuoteDouble=function(e,t){return Rn.createQuoteDouble(Bn.transformAstQuoteValue(e,t))}}));a(Dn);Dn.transformQuoteDouble;var jn=o((function(e,t){t.__esModule=!0,t.createQuoteSingle=function(e){return xt.__assign(xt.__assign({},e),{type:"quoteSingle"})}}));a(jn);jn.createQuoteSingle;var Yn=o((function(e,t){t.__esModule=!0,t.transformQuoteSingle=function(e,t){return jn.createQuoteSingle(Bn.transformAstQuoteValue(e,t))}}));a(Yn);Yn.transformQuoteSingle;var Fn=o((function(e,t){t.__esModule=!0,t.createSequence=function(e,t,n){return xt.__assign(xt.__assign(xt.__assign(xt.__assign(xt.__assign({},Ct.createNode("sequence",e)),Bt.createLeadingCommentAttachable()),on.createEndCommentAttachable()),t),{children:n})}}));a(Fn);Fn.createSequence;var Un=o((function(e,t){t.__esModule=!0,t.createSequenceItem=function(e,t){return xt.__assign(xt.__assign(xt.__assign(xt.__assign({},Ct.createNode("sequenceItem",e)),jt.createCommentAttachable()),on.createEndCommentAttachable()),{children:t?[t]:[]})}}));a(Un);Un.createSequenceItem;var Kn=o((function(e,t){t.__esModule=!0,t.transformSeq=function(e,t){var n=mn.extractComments(e.cstNode.items,t).map((function(n,r){tn.extractPropComments(n,t);var a=t.transformNode(e.items[r]);return Un.createSequenceItem(an.createPosition(t.transformOffset(n.valueRange.origStart),null===a?t.transformOffset(n.valueRange.origStart+1):a.position.end),a)}));return Fn.createSequence(an.createPosition(n[0].position.start,un.getLast(n).position.end),t.transformContent(e),n)}}));a(Kn);Kn.transformSeq;var Wn=o((function(e,t){t.__esModule=!0,t.transformNode=function(e,t){if(null===e)return null;switch(e.type){case"ALIAS":return Ft.transformAlias(e,t);case"BLOCK_FOLDED":return Ht.transformBlockFolded(e,t);case"BLOCK_LITERAL":return Zt.transformBlockLiteral(e,t);case"COMMENT":return Xt.transformComment(e,t);case"DIRECTIVE":return nn.transformDirective(e,t);case"DOCUMENT":return hn.transformDocument(e,t);case"FLOW_MAP":return Mn.transformFlowMap(e,t);case"FLOW_SEQ":return kn.transformFlowSeq(e,t);case"MAP":return Pn.transformMap(e,t);case"PLAIN":return xn.transformPlain(e,t);case"QUOTE_DOUBLE":return Dn.transformQuoteDouble(e,t);case"QUOTE_SINGLE":return Yn.transformQuoteSingle(e,t);case"SEQ":return Kn.transformSeq(e,t);default:throw new Error("Unexpected node type "+e.type)}}}));a(Wn);Wn.transformNode;var Qn=o((function(e,t){t.__esModule=!0,t.createError=function(e,t,n){var r=new SyntaxError(e);return r.name="YAMLSyntaxError",r.source=t,r.position=n,r}}));a(Qn);Qn.createError;var Vn=o((function(e,t){t.__esModule=!0,t.transformError=function(e,t){var n=e.source.range||e.source.valueRange;return Qn.createError(e.message,t.text,t.transformRange(n))}}));a(Vn);Vn.transformError;var $n=o((function(e,t){t.__esModule=!0,t.createPoint=function(e,t,n){return{offset:e,line:t,column:n}}}));a($n);$n.createPoint;var qn=o((function(e,t){t.__esModule=!0,t.transformOffset=function(e,t){e<0?e=0:e>t.text.length&&(e=t.text.length);var n=t.locator.locationForIndex(e);return $n.createPoint(e,n.line+1,n.column+1)}}));a(qn);qn.transformOffset;var Jn=o((function(e,t){t.__esModule=!0,t.transformRange=function(e,t){return an.createPosition(t.transformOffset(e.origStart),t.transformOffset(e.origEnd))}}));a(Jn);Jn.transformRange;var Gn=o((function(e,t){t.__esModule=!0;var n=!0;t.addOrigRange=function(e){if(!e.setOrigRanges()){var t=function(e){return function(e){return"number"==typeof e.start}(e)?(e.origStart=e.start,e.origEnd=e.end,n):function(e){return"number"==typeof e.offset}(e)?(e.origOffset=e.offset,n):void 0};e.forEach((function(e){return function e(t,r){if(!t||"object"!==i(t))return;if(r(t)===n)return;for(var a=0,o=Object.keys(t);a<o.length;a++){var s=o[a];if("context"!==s&&"error"!==s){var u=t[s];Array.isArray(u)?u.forEach((function(t){return e(t,r)})):e(u,r)}}}(e,t)}))}}}));a(Gn);Gn.addOrigRange;var Hn=o((function(e,t){t.__esModule=!0,t.removeFakeNodes=function e(t){if("children"in t){if(1===t.children.length){var n=t.children[0];if("plain"===n.type&&null===n.tag&&null===n.anchor&&""===n.value)return t.children.splice(0,1),t}t.children.forEach(e)}return t}}));a(Hn);Hn.removeFakeNodes;var zn=o((function(e,t){t.__esModule=!0,t.createUpdater=function(e,t,n,r){var a=t(e);return function(t){r(a,t)&&n(e,a=t)}}}));a(zn);zn.createUpdater;var Zn=o((function(e,t){function n(e){return e.start}function r(e,t){e.start=t}function a(e){return e.end}function o(e,t){e.end=t}function i(e,t){return t.offset<e.offset}function s(e,t){return t.offset>e.offset}t.__esModule=!0,t.updatePositions=function e(t){if(null!==t&&"children"in t){var u=t.children;if(u.forEach(e),"document"===t.type){var f=t.children,l=f[0],c=f[1];l.position.start.offset===l.position.end.offset?l.position.start=l.position.end=c.position.start:c.position.start.offset===c.position.end.offset&&(c.position.start=c.position.end=l.position.end)}var d=zn.createUpdater(t.position,n,r,i),h=zn.createUpdater(t.position,a,o,s);"endComments"in t&&0!==t.endComments.length&&(d(t.endComments[0].position.start),h(un.getLast(t.endComments).position.end));var p=u.filter((function(e){return null!==e}));if(0!==p.length){var v=p[0],g=un.getLast(p);d(v.position.start),h(g.position.end),"leadingComments"in v&&0!==v.leadingComments.length&&d(v.leadingComments[0].position.start),"tag"in v&&v.tag&&d(v.tag.position.start),"anchor"in v&&v.anchor&&d(v.anchor.position.start),"trailingComment"in g&&g.trailingComment&&h(g.trailingComment.position.end)}}}}));a(Zn);Zn.updatePositions;var Xn=o((function(e,t){t.__esModule=!0,t.parse=function(e){var t=kt.parseCST(e);Gn.addOrigRange(t);var n=t.map((function(e){return new kt.Document({merge:!0,keepCstNodes:!0}).parse(e)})),r=[],a={text:e,locator:new L.default(e),comments:r,transformOffset:function(e){return qn.transformOffset(e,a)},transformRange:function(e){return Jn.transformRange(e,a)},transformNode:function(e){return Wn.transformNode(e,a)},transformContent:function(e){return Jt.transformContent(e,a)}},o=n.find((function(e){return 0!==e.errors.length}));if(o)throw Vn.transformError(o.errors[0],a);n.forEach((function(e){return It.removeCstBlankLine(e.cstNode)}));var i=Rt.createRoot(a.transformRange({origStart:0,origEnd:a.text.length}),n.map(a.transformNode),r);return Pt.attachComments(i),Zn.updatePositions(i),Hn.removeFakeNodes(i),i}}));a(Xn);Xn.parse;var er=o((function(e,t){t.__esModule=!0,xt.__exportStar(Xn,t)}));a(er);var tr={parsers:{yaml:{astFormat:"yaml",parse:function(e){try{var n=er.parse(e);return delete n.comments,n}catch(e){throw e&&e.position?t(e.message,e.position):e}},hasPragma:n,locStart:function(e){return e.position.start.offset},locEnd:function(e){return e.position.end.offset}}}},nr=tr.parsers;e.default=tr,e.parsers=nr,Object.defineProperty(e,"__esModule",{value:!0})}));
diff --git a/node_modules/prettier/standalone.js b/node_modules/prettier/standalone.js
new file mode 100644
index 0000000..d4e9a30
--- /dev/null
+++ b/node_modules/prettier/standalone.js
@@ -0,0 +1,31825 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = global || self, global.prettier = factory());
+}(this, (function () { 'use strict';
+
+ var name = "prettier";
+ var version = "1.19.1";
+ var description = "Prettier is an opinionated code formatter";
+ var bin = {
+ prettier: "./bin/prettier.js"
+ };
+ var repository = "prettier/prettier";
+ var homepage = "https://prettier.io";
+ var author = "James Long";
+ var license = "MIT";
+ var main = "./index.js";
+ var engines = {
+ node: ">=8"
+ };
+ var dependencies = {
+ "@angular/compiler": "8.2.13",
+ "@babel/code-frame": "7.5.5",
+ "@babel/parser": "7.7.3",
+ "@glimmer/syntax": "0.41.0",
+ "@iarna/toml": "2.2.3",
+ "@typescript-eslint/typescript-estree": "2.6.1",
+ "angular-estree-parser": "1.1.5",
+ "angular-html-parser": "1.3.0",
+ camelcase: "5.3.1",
+ chalk: "2.4.2",
+ "cjk-regex": "2.0.0",
+ cosmiconfig: "5.2.1",
+ dashify: "2.0.0",
+ dedent: "0.7.0",
+ diff: "4.0.1",
+ editorconfig: "0.15.3",
+ "editorconfig-to-prettier": "0.1.1",
+ "escape-string-regexp": "1.0.5",
+ esutils: "2.0.3",
+ "find-parent-dir": "0.3.0",
+ "find-project-root": "1.1.1",
+ "flow-parser": "0.111.3",
+ "get-stream": "4.1.0",
+ globby: "6.1.0",
+ graphql: "14.5.8",
+ "html-element-attributes": "2.2.0",
+ "html-styles": "1.0.0",
+ "html-tag-names": "1.1.4",
+ ignore: "4.0.6",
+ "is-ci": "2.0.0",
+ "jest-docblock": "24.9.0",
+ "json-stable-stringify": "1.0.1",
+ leven: "3.1.0",
+ "lines-and-columns": "1.1.6",
+ "linguist-languages": "7.6.0",
+ "lodash.uniqby": "4.7.0",
+ mem: "5.1.1",
+ minimatch: "3.0.4",
+ minimist: "1.2.0",
+ "n-readlines": "1.0.0",
+ "normalize-path": "3.0.0",
+ "parse-srcset": "ikatyang/parse-srcset#54eb9c1cb21db5c62b4d0e275d7249516df6f0ee",
+ "postcss-less": "2.0.0",
+ "postcss-media-query-parser": "0.2.3",
+ "postcss-scss": "2.0.0",
+ "postcss-selector-parser": "2.2.3",
+ "postcss-values-parser": "1.5.0",
+ "regexp-util": "1.2.2",
+ "remark-math": "1.0.6",
+ "remark-parse": "5.0.0",
+ resolve: "1.12.0",
+ semver: "6.3.0",
+ "string-width": "4.1.0",
+ typescript: "3.7.2",
+ "unicode-regex": "3.0.0",
+ unified: "8.4.1",
+ vnopts: "1.0.2",
+ "yaml-unist-parser": "1.1.1"
+ };
+ var devDependencies = {
+ "@babel/core": "7.7.2",
+ "@babel/preset-env": "7.7.1",
+ "@rollup/plugin-alias": "2.2.0",
+ "@rollup/plugin-replace": "2.2.1",
+ "babel-loader": "8.0.6",
+ benchmark: "2.1.4",
+ "builtin-modules": "3.1.0",
+ codecov: "3.6.1",
+ "cross-env": "6.0.3",
+ eslint: "6.6.0",
+ "eslint-config-prettier": "6.5.0",
+ "eslint-formatter-friendly": "7.0.0",
+ "eslint-plugin-import": "2.18.2",
+ "eslint-plugin-prettier": "3.1.1",
+ "eslint-plugin-react": "7.16.0",
+ execa: "3.2.0",
+ jest: "23.3.0",
+ "jest-junit": "9.0.0",
+ "jest-snapshot-serializer-ansi": "1.0.0",
+ "jest-snapshot-serializer-raw": "1.1.0",
+ "jest-watch-typeahead": "0.4.0",
+ mkdirp: "0.5.1",
+ prettier: "1.19.0",
+ prettylint: "1.0.0",
+ rimraf: "3.0.0",
+ rollup: "1.26.3",
+ "rollup-plugin-babel": "4.3.3",
+ "rollup-plugin-commonjs": "10.1.0",
+ "rollup-plugin-json": "4.0.0",
+ "rollup-plugin-node-globals": "1.4.0",
+ "rollup-plugin-node-resolve": "5.2.0",
+ "rollup-plugin-terser": "5.1.2",
+ shelljs: "0.8.3",
+ "snapshot-diff": "0.4.0",
+ "strip-ansi": "5.2.0",
+ "synchronous-promise": "2.0.10",
+ tempy: "0.2.1",
+ "terser-webpack-plugin": "2.2.1",
+ webpack: "4.41.2"
+ };
+ var scripts = {
+ prepublishOnly: "echo \"Error: must publish from dist/\" && exit 1",
+ "prepare-release": "yarn && yarn build && yarn test:dist",
+ test: "jest",
+ "test:dist": "node ./scripts/test-dist.js",
+ "test-integration": "jest tests_integration",
+ "perf-repeat": "yarn && yarn build && cross-env NODE_ENV=production node ./dist/bin-prettier.js --debug-repeat ${PERF_REPEAT:-1000} --loglevel debug ${PERF_FILE:-./index.js} > /dev/null",
+ "perf-repeat-inspect": "yarn && yarn build && cross-env NODE_ENV=production node --inspect-brk ./dist/bin-prettier.js --debug-repeat ${PERF_REPEAT:-1000} --loglevel debug ${PERF_FILE:-./index.js} > /dev/null",
+ "perf-benchmark": "yarn && yarn build && cross-env NODE_ENV=production node ./dist/bin-prettier.js --debug-benchmark --loglevel debug ${PERF_FILE:-./index.js} > /dev/null",
+ "check-types": "tsc",
+ lint: "cross-env EFF_NO_LINK_RULES=true eslint . --format friendly",
+ "lint-docs": "prettylint {.,docs,website,website/blog}/*.md",
+ "lint-dist": "eslint --no-eslintrc --no-ignore --env=browser \"dist/!(bin-prettier|index|third-party).js\"",
+ build: "node --max-old-space-size=3072 ./scripts/build/build.js",
+ "build-docs": "node ./scripts/build-docs.js",
+ "check-deps": "node ./scripts/check-deps.js",
+ spellcheck: "npx -p cspell@4.0.31 cspell {bin,scripts,src}/**/*.js {docs,website/blog,changelog_unreleased}/**/*.md"
+ };
+ var _package = {
+ name: name,
+ version: version,
+ description: description,
+ bin: bin,
+ repository: repository,
+ homepage: homepage,
+ author: author,
+ license: license,
+ main: main,
+ engines: engines,
+ dependencies: dependencies,
+ devDependencies: devDependencies,
+ scripts: scripts
+ };
+
+ var _package$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name,
+ version: version,
+ description: description,
+ bin: bin,
+ repository: repository,
+ homepage: homepage,
+ author: author,
+ license: license,
+ main: main,
+ engines: engines,
+ dependencies: dependencies,
+ devDependencies: devDependencies,
+ scripts: scripts,
+ 'default': _package
+ });
+
+ function _typeof(obj) {
+ if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
+ _typeof = function (obj) {
+ return typeof obj;
+ };
+ } else {
+ _typeof = function (obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
+ };
+ }
+
+ return _typeof(obj);
+ }
+
+ function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+ }
+
+ function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+
+ function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ return Constructor;
+ }
+
+ function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+
+ return obj;
+ }
+
+ function _inherits(subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) _setPrototypeOf(subClass, superClass);
+ }
+
+ function _getPrototypeOf(o) {
+ _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
+ return o.__proto__ || Object.getPrototypeOf(o);
+ };
+ return _getPrototypeOf(o);
+ }
+
+ function _setPrototypeOf(o, p) {
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
+ o.__proto__ = p;
+ return o;
+ };
+
+ return _setPrototypeOf(o, p);
+ }
+
+ function isNativeReflectConstruct() {
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+ if (Reflect.construct.sham) return false;
+ if (typeof Proxy === "function") return true;
+
+ try {
+ Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
+ return true;
+ } catch (e) {
+ return false;
+ }
+ }
+
+ function _construct(Parent, args, Class) {
+ if (isNativeReflectConstruct()) {
+ _construct = Reflect.construct;
+ } else {
+ _construct = function _construct(Parent, args, Class) {
+ var a = [null];
+ a.push.apply(a, args);
+ var Constructor = Function.bind.apply(Parent, a);
+ var instance = new Constructor();
+ if (Class) _setPrototypeOf(instance, Class.prototype);
+ return instance;
+ };
+ }
+
+ return _construct.apply(null, arguments);
+ }
+
+ function _isNativeFunction(fn) {
+ return Function.toString.call(fn).indexOf("[native code]") !== -1;
+ }
+
+ function _wrapNativeSuper(Class) {
+ var _cache = typeof Map === "function" ? new Map() : undefined;
+
+ _wrapNativeSuper = function _wrapNativeSuper(Class) {
+ if (Class === null || !_isNativeFunction(Class)) return Class;
+
+ if (typeof Class !== "function") {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+
+ if (typeof _cache !== "undefined") {
+ if (_cache.has(Class)) return _cache.get(Class);
+
+ _cache.set(Class, Wrapper);
+ }
+
+ function Wrapper() {
+ return _construct(Class, arguments, _getPrototypeOf(this).constructor);
+ }
+
+ Wrapper.prototype = Object.create(Class.prototype, {
+ constructor: {
+ value: Wrapper,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ return _setPrototypeOf(Wrapper, Class);
+ };
+
+ return _wrapNativeSuper(Class);
+ }
+
+ function _assertThisInitialized(self) {
+ if (self === void 0) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+
+ return self;
+ }
+
+ function _possibleConstructorReturn(self, call) {
+ if (call && (typeof call === "object" || typeof call === "function")) {
+ return call;
+ }
+
+ return _assertThisInitialized(self);
+ }
+
+ function _superPropBase(object, property) {
+ while (!Object.prototype.hasOwnProperty.call(object, property)) {
+ object = _getPrototypeOf(object);
+ if (object === null) break;
+ }
+
+ return object;
+ }
+
+ function _get(target, property, receiver) {
+ if (typeof Reflect !== "undefined" && Reflect.get) {
+ _get = Reflect.get;
+ } else {
+ _get = function _get(target, property, receiver) {
+ var base = _superPropBase(target, property);
+
+ if (!base) return;
+ var desc = Object.getOwnPropertyDescriptor(base, property);
+
+ if (desc.get) {
+ return desc.get.call(receiver);
+ }
+
+ return desc.value;
+ };
+ }
+
+ return _get(target, property, receiver || target);
+ }
+
+ function _taggedTemplateLiteral(strings, raw) {
+ if (!raw) {
+ raw = strings.slice(0);
+ }
+
+ return Object.freeze(Object.defineProperties(strings, {
+ raw: {
+ value: Object.freeze(raw)
+ }
+ }));
+ }
+
+ function _slicedToArray(arr, i) {
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();
+ }
+
+ function _toConsumableArray(arr) {
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();
+ }
+
+ function _arrayWithoutHoles(arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
+
+ return arr2;
+ }
+ }
+
+ function _arrayWithHoles(arr) {
+ if (Array.isArray(arr)) return arr;
+ }
+
+ function _iterableToArray(iter) {
+ if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
+ }
+
+ function _iterableToArrayLimit(arr, i) {
+ if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
+ return;
+ }
+
+ var _arr = [];
+ var _n = true;
+ var _d = false;
+ var _e = undefined;
+
+ try {
+ for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
+ _arr.push(_s.value);
+
+ if (i && _arr.length === i) break;
+ }
+ } catch (err) {
+ _d = true;
+ _e = err;
+ } finally {
+ try {
+ if (!_n && _i["return"] != null) _i["return"]();
+ } finally {
+ if (_d) throw _e;
+ }
+ }
+
+ return _arr;
+ }
+
+ function _nonIterableSpread() {
+ throw new TypeError("Invalid attempt to spread non-iterable instance");
+ }
+
+ function _nonIterableRest() {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance");
+ }
+
+ function Diff() {}
+
+ Diff.prototype = {
+ diff: function diff(oldString, newString) {
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+ var callback = options.callback;
+
+ if (typeof options === 'function') {
+ callback = options;
+ options = {};
+ }
+
+ this.options = options;
+ var self = this;
+
+ function done(value) {
+ if (callback) {
+ setTimeout(function () {
+ callback(undefined, value);
+ }, 0);
+ return true;
+ } else {
+ return value;
+ }
+ } // Allow subclasses to massage the input prior to running
+
+
+ oldString = this.castInput(oldString);
+ newString = this.castInput(newString);
+ oldString = this.removeEmpty(this.tokenize(oldString));
+ newString = this.removeEmpty(this.tokenize(newString));
+ var newLen = newString.length,
+ oldLen = oldString.length;
+ var editLength = 1;
+ var maxEditLength = newLen + oldLen;
+ var bestPath = [{
+ newPos: -1,
+ components: []
+ }]; // Seed editLength = 0, i.e. the content starts with the same values
+
+ var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
+
+ if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
+ // Identity per the equality and tokenizer
+ return done([{
+ value: this.join(newString),
+ count: newString.length
+ }]);
+ } // Main worker method. checks all permutations of a given edit length for acceptance.
+
+
+ function execEditLength() {
+ for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
+ var basePath = void 0;
+
+ var addPath = bestPath[diagonalPath - 1],
+ removePath = bestPath[diagonalPath + 1],
+ _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
+
+ if (addPath) {
+ // No one else is going to attempt to use this value, clear it
+ bestPath[diagonalPath - 1] = undefined;
+ }
+
+ var canAdd = addPath && addPath.newPos + 1 < newLen,
+ canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;
+
+ if (!canAdd && !canRemove) {
+ // If this path is a terminal then prune
+ bestPath[diagonalPath] = undefined;
+ continue;
+ } // Select the diagonal that we want to branch from. We select the prior
+ // path whose position in the new string is the farthest from the origin
+ // and does not pass the bounds of the diff graph
+
+
+ if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {
+ basePath = clonePath(removePath);
+ self.pushComponent(basePath.components, undefined, true);
+ } else {
+ basePath = addPath; // No need to clone, we've pulled it from the list
+
+ basePath.newPos++;
+ self.pushComponent(basePath.components, true, undefined);
+ }
+
+ _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); // If we have hit the end of both strings, then we are done
+
+ if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {
+ return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));
+ } else {
+ // Otherwise track this path as a potential candidate and continue.
+ bestPath[diagonalPath] = basePath;
+ }
+ }
+
+ editLength++;
+ } // Performs the length of edit iteration. Is a bit fugly as this has to support the
+ // sync and async mode which is never fun. Loops over execEditLength until a value
+ // is produced.
+
+
+ if (callback) {
+ (function exec() {
+ setTimeout(function () {
+ // This should not happen, but we want to be safe.
+
+ /* istanbul ignore next */
+ if (editLength > maxEditLength) {
+ return callback();
+ }
+
+ if (!execEditLength()) {
+ exec();
+ }
+ }, 0);
+ })();
+ } else {
+ while (editLength <= maxEditLength) {
+ var ret = execEditLength();
+
+ if (ret) {
+ return ret;
+ }
+ }
+ }
+ },
+ pushComponent: function pushComponent(components, added, removed) {
+ var last = components[components.length - 1];
+
+ if (last && last.added === added && last.removed === removed) {
+ // We need to clone here as the component clone operation is just
+ // as shallow array clone
+ components[components.length - 1] = {
+ count: last.count + 1,
+ added: added,
+ removed: removed
+ };
+ } else {
+ components.push({
+ count: 1,
+ added: added,
+ removed: removed
+ });
+ }
+ },
+ extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {
+ var newLen = newString.length,
+ oldLen = oldString.length,
+ newPos = basePath.newPos,
+ oldPos = newPos - diagonalPath,
+ commonCount = 0;
+
+ while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
+ newPos++;
+ oldPos++;
+ commonCount++;
+ }
+
+ if (commonCount) {
+ basePath.components.push({
+ count: commonCount
+ });
+ }
+
+ basePath.newPos = newPos;
+ return oldPos;
+ },
+ equals: function equals(left, right) {
+ if (this.options.comparator) {
+ return this.options.comparator(left, right);
+ } else {
+ return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();
+ }
+ },
+ removeEmpty: function removeEmpty(array) {
+ var ret = [];
+
+ for (var i = 0; i < array.length; i++) {
+ if (array[i]) {
+ ret.push(array[i]);
+ }
+ }
+
+ return ret;
+ },
+ castInput: function castInput(value) {
+ return value;
+ },
+ tokenize: function tokenize(value) {
+ return value.split('');
+ },
+ join: function join(chars) {
+ return chars.join('');
+ }
+ };
+
+ function buildValues(diff, components, newString, oldString, useLongestToken) {
+ var componentPos = 0,
+ componentLen = components.length,
+ newPos = 0,
+ oldPos = 0;
+
+ for (; componentPos < componentLen; componentPos++) {
+ var component = components[componentPos];
+
+ if (!component.removed) {
+ if (!component.added && useLongestToken) {
+ var value = newString.slice(newPos, newPos + component.count);
+ value = value.map(function (value, i) {
+ var oldValue = oldString[oldPos + i];
+ return oldValue.length > value.length ? oldValue : value;
+ });
+ component.value = diff.join(value);
+ } else {
+ component.value = diff.join(newString.slice(newPos, newPos + component.count));
+ }
+
+ newPos += component.count; // Common case
+
+ if (!component.added) {
+ oldPos += component.count;
+ }
+ } else {
+ component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));
+ oldPos += component.count; // Reverse add and remove so removes are output first to match common convention
+ // The diffing algorithm is tied to add then remove output and this is the simplest
+ // route to get the desired output with minimal overhead.
+
+ if (componentPos && components[componentPos - 1].added) {
+ var tmp = components[componentPos - 1];
+ components[componentPos - 1] = components[componentPos];
+ components[componentPos] = tmp;
+ }
+ }
+ } // Special case handle for when one terminal is ignored (i.e. whitespace).
+ // For this case we merge the terminal into the prior string and drop the change.
+ // This is only available for string mode.
+
+
+ var lastComponent = components[componentLen - 1];
+
+ if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {
+ components[componentLen - 2].value += lastComponent.value;
+ components.pop();
+ }
+
+ return components;
+ }
+
+ function clonePath(path) {
+ return {
+ newPos: path.newPos,
+ components: path.components.slice(0)
+ };
+ }
+
+ var characterDiff = new Diff();
+
+ function diffChars(oldStr, newStr, options) {
+ return characterDiff.diff(oldStr, newStr, options);
+ }
+
+ function generateOptions(options, defaults) {
+ if (typeof options === 'function') {
+ defaults.callback = options;
+ } else if (options) {
+ for (var name in options) {
+ /* istanbul ignore else */
+ if (options.hasOwnProperty(name)) {
+ defaults[name] = options[name];
+ }
+ }
+ }
+
+ return defaults;
+ } //
+ // Ranges and exceptions:
+ // Latin-1 Supplement, 0080–00FF
+ // - U+00D7 × Multiplication sign
+ // - U+00F7 ÷ Division sign
+ // Latin Extended-A, 0100–017F
+ // Latin Extended-B, 0180–024F
+ // IPA Extensions, 0250–02AF
+ // Spacing Modifier Letters, 02B0–02FF
+ // - U+02C7 ˇ &#711; Caron
+ // - U+02D8 ˘ &#728; Breve
+ // - U+02D9 ˙ &#729; Dot Above
+ // - U+02DA ˚ &#730; Ring Above
+ // - U+02DB ˛ &#731; Ogonek
+ // - U+02DC ˜ &#732; Small Tilde
+ // - U+02DD ˝ &#733; Double Acute Accent
+ // Latin Extended Additional, 1E00–1EFF
+
+
+ var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/;
+ var reWhitespace = /\S/;
+ var wordDiff = new Diff();
+
+ wordDiff.equals = function (left, right) {
+ if (this.options.ignoreCase) {
+ left = left.toLowerCase();
+ right = right.toLowerCase();
+ }
+
+ return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);
+ };
+
+ wordDiff.tokenize = function (value) {
+ var tokens = value.split(/(\s+|[()[\]{}'"]|\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.
+
+ for (var i = 0; i < tokens.length - 1; i++) {
+ // If we have an empty string in the next field and we have only word chars before and after, merge
+ if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {
+ tokens[i] += tokens[i + 2];
+ tokens.splice(i + 1, 2);
+ i--;
+ }
+ }
+
+ return tokens;
+ };
+
+ function diffWords(oldStr, newStr, options) {
+ options = generateOptions(options, {
+ ignoreWhitespace: true
+ });
+ return wordDiff.diff(oldStr, newStr, options);
+ }
+
+ function diffWordsWithSpace(oldStr, newStr, options) {
+ return wordDiff.diff(oldStr, newStr, options);
+ }
+
+ var lineDiff = new Diff();
+
+ lineDiff.tokenize = function (value) {
+ var retLines = [],
+ linesAndNewlines = value.split(/(\n|\r\n)/); // Ignore the final empty token that occurs if the string ends with a new line
+
+ if (!linesAndNewlines[linesAndNewlines.length - 1]) {
+ linesAndNewlines.pop();
+ } // Merge the content and line separators into single tokens
+
+
+ for (var i = 0; i < linesAndNewlines.length; i++) {
+ var line = linesAndNewlines[i];
+
+ if (i % 2 && !this.options.newlineIsToken) {
+ retLines[retLines.length - 1] += line;
+ } else {
+ if (this.options.ignoreWhitespace) {
+ line = line.trim();
+ }
+
+ retLines.push(line);
+ }
+ }
+
+ return retLines;
+ };
+
+ function diffLines(oldStr, newStr, callback) {
+ return lineDiff.diff(oldStr, newStr, callback);
+ }
+
+ function diffTrimmedLines(oldStr, newStr, callback) {
+ var options = generateOptions(callback, {
+ ignoreWhitespace: true
+ });
+ return lineDiff.diff(oldStr, newStr, options);
+ }
+
+ var sentenceDiff = new Diff();
+
+ sentenceDiff.tokenize = function (value) {
+ return value.split(/(\S.+?[.!?])(?=\s+|$)/);
+ };
+
+ function diffSentences(oldStr, newStr, callback) {
+ return sentenceDiff.diff(oldStr, newStr, callback);
+ }
+
+ var cssDiff = new Diff();
+
+ cssDiff.tokenize = function (value) {
+ return value.split(/([{}:;,]|\s+)/);
+ };
+
+ function diffCss(oldStr, newStr, callback) {
+ return cssDiff.diff(oldStr, newStr, callback);
+ }
+
+ function _typeof$1(obj) {
+ if (typeof Symbol === "function" && _typeof(Symbol.iterator) === "symbol") {
+ _typeof$1 = function _typeof$1(obj) {
+ return _typeof(obj);
+ };
+ } else {
+ _typeof$1 = function _typeof$1(obj) {
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof(obj);
+ };
+ }
+
+ return _typeof$1(obj);
+ }
+
+ function _toConsumableArray$1(arr) {
+ return _arrayWithoutHoles$1(arr) || _iterableToArray$1(arr) || _nonIterableSpread$1();
+ }
+
+ function _arrayWithoutHoles$1(arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
+ arr2[i] = arr[i];
+ }
+
+ return arr2;
+ }
+ }
+
+ function _iterableToArray$1(iter) {
+ if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
+ }
+
+ function _nonIterableSpread$1() {
+ throw new TypeError("Invalid attempt to spread non-iterable instance");
+ }
+
+ var objectPrototypeToString = Object.prototype.toString;
+ var jsonDiff = new Diff(); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a
+ // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:
+
+ jsonDiff.useLongestToken = true;
+ jsonDiff.tokenize = lineDiff.tokenize;
+
+ jsonDiff.castInput = function (value) {
+ var _this$options = this.options,
+ undefinedReplacement = _this$options.undefinedReplacement,
+ _this$options$stringi = _this$options.stringifyReplacer,
+ stringifyReplacer = _this$options$stringi === void 0 ? function (k, v) {
+ return typeof v === 'undefined' ? undefinedReplacement : v;
+ } : _this$options$stringi;
+ return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' ');
+ };
+
+ jsonDiff.equals = function (left, right) {
+ return Diff.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'));
+ };
+
+ function diffJson(oldObj, newObj, options) {
+ return jsonDiff.diff(oldObj, newObj, options);
+ } // This function handles the presence of circular references by bailing out when encountering an
+ // object that is already on the "stack" of items being processed. Accepts an optional replacer
+
+
+ function canonicalize(obj, stack, replacementStack, replacer, key) {
+ stack = stack || [];
+ replacementStack = replacementStack || [];
+
+ if (replacer) {
+ obj = replacer(key, obj);
+ }
+
+ var i;
+
+ for (i = 0; i < stack.length; i += 1) {
+ if (stack[i] === obj) {
+ return replacementStack[i];
+ }
+ }
+
+ var canonicalizedObj;
+
+ if ('[object Array]' === objectPrototypeToString.call(obj)) {
+ stack.push(obj);
+ canonicalizedObj = new Array(obj.length);
+ replacementStack.push(canonicalizedObj);
+
+ for (i = 0; i < obj.length; i += 1) {
+ canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);
+ }
+
+ stack.pop();
+ replacementStack.pop();
+ return canonicalizedObj;
+ }
+
+ if (obj && obj.toJSON) {
+ obj = obj.toJSON();
+ }
+
+ if (_typeof$1(obj) === 'object' && obj !== null) {
+ stack.push(obj);
+ canonicalizedObj = {};
+ replacementStack.push(canonicalizedObj);
+
+ var sortedKeys = [],
+ _key;
+
+ for (_key in obj) {
+ /* istanbul ignore else */
+ if (obj.hasOwnProperty(_key)) {
+ sortedKeys.push(_key);
+ }
+ }
+
+ sortedKeys.sort();
+
+ for (i = 0; i < sortedKeys.length; i += 1) {
+ _key = sortedKeys[i];
+ canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);
+ }
+
+ stack.pop();
+ replacementStack.pop();
+ } else {
+ canonicalizedObj = obj;
+ }
+
+ return canonicalizedObj;
+ }
+
+ var arrayDiff = new Diff();
+
+ arrayDiff.tokenize = function (value) {
+ return value.slice();
+ };
+
+ arrayDiff.join = arrayDiff.removeEmpty = function (value) {
+ return value;
+ };
+
+ function diffArrays(oldArr, newArr, callback) {
+ return arrayDiff.diff(oldArr, newArr, callback);
+ }
+
+ function parsePatch(uniDiff) {
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+ var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/),
+ delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [],
+ list = [],
+ i = 0;
+
+ function parseIndex() {
+ var index = {};
+ list.push(index); // Parse diff metadata
+
+ while (i < diffstr.length) {
+ var line = diffstr[i]; // File header found, end parsing diff metadata
+
+ if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) {
+ break;
+ } // Diff index
+
+
+ var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line);
+
+ if (header) {
+ index.index = header[1];
+ }
+
+ i++;
+ } // Parse file headers if they are defined. Unified diff requires them, but
+ // there's no technical issues to have an isolated hunk without file header
+
+
+ parseFileHeader(index);
+ parseFileHeader(index); // Parse hunks
+
+ index.hunks = [];
+
+ while (i < diffstr.length) {
+ var _line = diffstr[i];
+
+ if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) {
+ break;
+ } else if (/^@@/.test(_line)) {
+ index.hunks.push(parseHunk());
+ } else if (_line && options.strict) {
+ // Ignore unexpected content unless in strict mode
+ throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));
+ } else {
+ i++;
+ }
+ }
+ } // Parses the --- and +++ headers, if none are found, no lines
+ // are consumed.
+
+
+ function parseFileHeader(index) {
+ var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]);
+
+ if (fileHeader) {
+ var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';
+ var data = fileHeader[2].split('\t', 2);
+ var fileName = data[0].replace(/\\\\/g, '\\');
+
+ if (/^".*"$/.test(fileName)) {
+ fileName = fileName.substr(1, fileName.length - 2);
+ }
+
+ index[keyPrefix + 'FileName'] = fileName;
+ index[keyPrefix + 'Header'] = (data[1] || '').trim();
+ i++;
+ }
+ } // Parses a hunk
+ // This assumes that we are at the start of a hunk.
+
+
+ function parseHunk() {
+ var chunkHeaderIndex = i,
+ chunkHeaderLine = diffstr[i++],
+ chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
+ var hunk = {
+ oldStart: +chunkHeader[1],
+ oldLines: +chunkHeader[2] || 1,
+ newStart: +chunkHeader[3],
+ newLines: +chunkHeader[4] || 1,
+ lines: [],
+ linedelimiters: []
+ };
+ var addCount = 0,
+ removeCount = 0;
+
+ for (; i < diffstr.length; i++) {
+ // Lines starting with '---' could be mistaken for the "remove line" operation
+ // But they could be the header for the next file. Therefore prune such cases out.
+ if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {
+ break;
+ }
+
+ var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];
+
+ if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') {
+ hunk.lines.push(diffstr[i]);
+ hunk.linedelimiters.push(delimiters[i] || '\n');
+
+ if (operation === '+') {
+ addCount++;
+ } else if (operation === '-') {
+ removeCount++;
+ } else if (operation === ' ') {
+ addCount++;
+ removeCount++;
+ }
+ } else {
+ break;
+ }
+ } // Handle the empty block count case
+
+
+ if (!addCount && hunk.newLines === 1) {
+ hunk.newLines = 0;
+ }
+
+ if (!removeCount && hunk.oldLines === 1) {
+ hunk.oldLines = 0;
+ } // Perform optional sanity checking
+
+
+ if (options.strict) {
+ if (addCount !== hunk.newLines) {
+ throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
+ }
+
+ if (removeCount !== hunk.oldLines) {
+ throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
+ }
+ }
+
+ return hunk;
+ }
+
+ while (i < diffstr.length) {
+ parseIndex();
+ }
+
+ return list;
+ } // Iterator that traverses in the range of [min, max], stepping
+ // by distance from a given start position. I.e. for [0, 4], with
+ // start of 2, this will iterate 2, 3, 1, 4, 0.
+
+
+ function distanceIterator(start, minLine, maxLine) {
+ var wantForward = true,
+ backwardExhausted = false,
+ forwardExhausted = false,
+ localOffset = 1;
+ return function iterator() {
+ if (wantForward && !forwardExhausted) {
+ if (backwardExhausted) {
+ localOffset++;
+ } else {
+ wantForward = false;
+ } // Check if trying to fit beyond text length, and if not, check it fits
+ // after offset location (or desired location on first iteration)
+
+
+ if (start + localOffset <= maxLine) {
+ return localOffset;
+ }
+
+ forwardExhausted = true;
+ }
+
+ if (!backwardExhausted) {
+ if (!forwardExhausted) {
+ wantForward = true;
+ } // Check if trying to fit before text beginning, and if not, check it fits
+ // before offset location
+
+
+ if (minLine <= start - localOffset) {
+ return -localOffset++;
+ }
+
+ backwardExhausted = true;
+ return iterator();
+ } // We tried to fit hunk before text beginning and beyond text length, then
+ // hunk can't fit on the text. Return undefined
+
+ };
+ }
+
+ function applyPatch(source, uniDiff) {
+ var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+
+ if (typeof uniDiff === 'string') {
+ uniDiff = parsePatch(uniDiff);
+ }
+
+ if (Array.isArray(uniDiff)) {
+ if (uniDiff.length > 1) {
+ throw new Error('applyPatch only works with a single input.');
+ }
+
+ uniDiff = uniDiff[0];
+ } // Apply the diff to the input
+
+
+ var lines = source.split(/\r\n|[\n\v\f\r\x85]/),
+ delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [],
+ hunks = uniDiff.hunks,
+ compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) {
+ return line === patchContent;
+ },
+ errorCount = 0,
+ fuzzFactor = options.fuzzFactor || 0,
+ minLine = 0,
+ offset = 0,
+ removeEOFNL,
+ addEOFNL;
+ /**
+ * Checks if the hunk exactly fits on the provided location
+ */
+
+
+ function hunkFits(hunk, toPos) {
+ for (var j = 0; j < hunk.lines.length; j++) {
+ var line = hunk.lines[j],
+ operation = line.length > 0 ? line[0] : ' ',
+ content = line.length > 0 ? line.substr(1) : line;
+
+ if (operation === ' ' || operation === '-') {
+ // Context sanity check
+ if (!compareLine(toPos + 1, lines[toPos], operation, content)) {
+ errorCount++;
+
+ if (errorCount > fuzzFactor) {
+ return false;
+ }
+ }
+
+ toPos++;
+ }
+ }
+
+ return true;
+ } // Search best fit offsets for each hunk based on the previous ones
+
+
+ for (var i = 0; i < hunks.length; i++) {
+ var hunk = hunks[i],
+ maxLine = lines.length - hunk.oldLines,
+ localOffset = 0,
+ toPos = offset + hunk.oldStart - 1;
+ var iterator = distanceIterator(toPos, minLine, maxLine);
+
+ for (; localOffset !== undefined; localOffset = iterator()) {
+ if (hunkFits(hunk, toPos + localOffset)) {
+ hunk.offset = offset += localOffset;
+ break;
+ }
+ }
+
+ if (localOffset === undefined) {
+ return false;
+ } // Set lower text limit to end of the current hunk, so next ones don't try
+ // to fit over already patched text
+
+
+ minLine = hunk.offset + hunk.oldStart + hunk.oldLines;
+ } // Apply patch hunks
+
+
+ var diffOffset = 0;
+
+ for (var _i = 0; _i < hunks.length; _i++) {
+ var _hunk = hunks[_i],
+ _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;
+
+ diffOffset += _hunk.newLines - _hunk.oldLines;
+
+ if (_toPos < 0) {
+ // Creating a new file
+ _toPos = 0;
+ }
+
+ for (var j = 0; j < _hunk.lines.length; j++) {
+ var line = _hunk.lines[j],
+ operation = line.length > 0 ? line[0] : ' ',
+ content = line.length > 0 ? line.substr(1) : line,
+ delimiter = _hunk.linedelimiters[j];
+
+ if (operation === ' ') {
+ _toPos++;
+ } else if (operation === '-') {
+ lines.splice(_toPos, 1);
+ delimiters.splice(_toPos, 1);
+ /* istanbul ignore else */
+ } else if (operation === '+') {
+ lines.splice(_toPos, 0, content);
+ delimiters.splice(_toPos, 0, delimiter);
+ _toPos++;
+ } else if (operation === '\\') {
+ var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;
+
+ if (previousOperation === '+') {
+ removeEOFNL = true;
+ } else if (previousOperation === '-') {
+ addEOFNL = true;
+ }
+ }
+ }
+ } // Handle EOFNL insertion/removal
+
+
+ if (removeEOFNL) {
+ while (!lines[lines.length - 1]) {
+ lines.pop();
+ delimiters.pop();
+ }
+ } else if (addEOFNL) {
+ lines.push('');
+ delimiters.push('\n');
+ }
+
+ for (var _k = 0; _k < lines.length - 1; _k++) {
+ lines[_k] = lines[_k] + delimiters[_k];
+ }
+
+ return lines.join('');
+ } // Wrapper that supports multiple file patches via callbacks.
+
+
+ function applyPatches(uniDiff, options) {
+ if (typeof uniDiff === 'string') {
+ uniDiff = parsePatch(uniDiff);
+ }
+
+ var currentIndex = 0;
+
+ function processIndex() {
+ var index = uniDiff[currentIndex++];
+
+ if (!index) {
+ return options.complete();
+ }
+
+ options.loadFile(index, function (err, data) {
+ if (err) {
+ return options.complete(err);
+ }
+
+ var updatedContent = applyPatch(data, index, options);
+ options.patched(index, updatedContent, function (err) {
+ if (err) {
+ return options.complete(err);
+ }
+
+ processIndex();
+ });
+ });
+ }
+
+ processIndex();
+ }
+
+ function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
+ if (!options) {
+ options = {};
+ }
+
+ if (typeof options.context === 'undefined') {
+ options.context = 4;
+ }
+
+ var diff = diffLines(oldStr, newStr, options);
+ diff.push({
+ value: '',
+ lines: []
+ }); // Append an empty value to make cleanup easier
+
+ function contextLines(lines) {
+ return lines.map(function (entry) {
+ return ' ' + entry;
+ });
+ }
+
+ var hunks = [];
+ var oldRangeStart = 0,
+ newRangeStart = 0,
+ curRange = [],
+ oldLine = 1,
+ newLine = 1;
+
+ var _loop = function _loop(i) {
+ var current = diff[i],
+ lines = current.lines || current.value.replace(/\n$/, '').split('\n');
+ current.lines = lines;
+
+ if (current.added || current.removed) {
+ var _curRange; // If we have previous context, start with that
+
+
+ if (!oldRangeStart) {
+ var prev = diff[i - 1];
+ oldRangeStart = oldLine;
+ newRangeStart = newLine;
+
+ if (prev) {
+ curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];
+ oldRangeStart -= curRange.length;
+ newRangeStart -= curRange.length;
+ }
+ } // Output our changes
+
+
+ (_curRange = curRange).push.apply(_curRange, _toConsumableArray$1(lines.map(function (entry) {
+ return (current.added ? '+' : '-') + entry;
+ }))); // Track the updated file position
+
+
+ if (current.added) {
+ newLine += lines.length;
+ } else {
+ oldLine += lines.length;
+ }
+ } else {
+ // Identical context lines. Track line changes
+ if (oldRangeStart) {
+ // Close out any changes that have been output (or join overlapping)
+ if (lines.length <= options.context * 2 && i < diff.length - 2) {
+ var _curRange2; // Overlapping
+
+
+ (_curRange2 = curRange).push.apply(_curRange2, _toConsumableArray$1(contextLines(lines)));
+ } else {
+ var _curRange3; // end the range and output
+
+
+ var contextSize = Math.min(lines.length, options.context);
+
+ (_curRange3 = curRange).push.apply(_curRange3, _toConsumableArray$1(contextLines(lines.slice(0, contextSize))));
+
+ var hunk = {
+ oldStart: oldRangeStart,
+ oldLines: oldLine - oldRangeStart + contextSize,
+ newStart: newRangeStart,
+ newLines: newLine - newRangeStart + contextSize,
+ lines: curRange
+ };
+
+ if (i >= diff.length - 2 && lines.length <= options.context) {
+ // EOF is inside this hunk
+ var oldEOFNewline = /\n$/.test(oldStr);
+ var newEOFNewline = /\n$/.test(newStr);
+ var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;
+
+ if (!oldEOFNewline && noNlBeforeAdds) {
+ // special case: old has no eol and no trailing context; no-nl can end up before adds
+ curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file');
+ }
+
+ if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {
+ curRange.push('\\ No newline at end of file');
+ }
+ }
+
+ hunks.push(hunk);
+ oldRangeStart = 0;
+ newRangeStart = 0;
+ curRange = [];
+ }
+ }
+
+ oldLine += lines.length;
+ newLine += lines.length;
+ }
+ };
+
+ for (var i = 0; i < diff.length; i++) {
+ _loop(i);
+ }
+
+ return {
+ oldFileName: oldFileName,
+ newFileName: newFileName,
+ oldHeader: oldHeader,
+ newHeader: newHeader,
+ hunks: hunks
+ };
+ }
+
+ function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
+ var diff = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);
+ var ret = [];
+
+ if (oldFileName == newFileName) {
+ ret.push('Index: ' + oldFileName);
+ }
+
+ ret.push('===================================================================');
+ ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader));
+ ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader));
+
+ for (var i = 0; i < diff.hunks.length; i++) {
+ var hunk = diff.hunks[i];
+ ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');
+ ret.push.apply(ret, hunk.lines);
+ }
+
+ return ret.join('\n') + '\n';
+ }
+
+ function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {
+ return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);
+ }
+
+ function arrayEqual(a, b) {
+ if (a.length !== b.length) {
+ return false;
+ }
+
+ return arrayStartsWith(a, b);
+ }
+
+ function arrayStartsWith(array, start) {
+ if (start.length > array.length) {
+ return false;
+ }
+
+ for (var i = 0; i < start.length; i++) {
+ if (start[i] !== array[i]) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ function calcLineCount(hunk) {
+ var _calcOldNewLineCount = calcOldNewLineCount(hunk.lines),
+ oldLines = _calcOldNewLineCount.oldLines,
+ newLines = _calcOldNewLineCount.newLines;
+
+ if (oldLines !== undefined) {
+ hunk.oldLines = oldLines;
+ } else {
+ delete hunk.oldLines;
+ }
+
+ if (newLines !== undefined) {
+ hunk.newLines = newLines;
+ } else {
+ delete hunk.newLines;
+ }
+ }
+
+ function merge(mine, theirs, base) {
+ mine = loadPatch(mine, base);
+ theirs = loadPatch(theirs, base);
+ var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.
+ // Leaving sanity checks on this to the API consumer that may know more about the
+ // meaning in their own context.
+
+ if (mine.index || theirs.index) {
+ ret.index = mine.index || theirs.index;
+ }
+
+ if (mine.newFileName || theirs.newFileName) {
+ if (!fileNameChanged(mine)) {
+ // No header or no change in ours, use theirs (and ours if theirs does not exist)
+ ret.oldFileName = theirs.oldFileName || mine.oldFileName;
+ ret.newFileName = theirs.newFileName || mine.newFileName;
+ ret.oldHeader = theirs.oldHeader || mine.oldHeader;
+ ret.newHeader = theirs.newHeader || mine.newHeader;
+ } else if (!fileNameChanged(theirs)) {
+ // No header or no change in theirs, use ours
+ ret.oldFileName = mine.oldFileName;
+ ret.newFileName = mine.newFileName;
+ ret.oldHeader = mine.oldHeader;
+ ret.newHeader = mine.newHeader;
+ } else {
+ // Both changed... figure it out
+ ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);
+ ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);
+ ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);
+ ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);
+ }
+ }
+
+ ret.hunks = [];
+ var mineIndex = 0,
+ theirsIndex = 0,
+ mineOffset = 0,
+ theirsOffset = 0;
+
+ while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {
+ var mineCurrent = mine.hunks[mineIndex] || {
+ oldStart: Infinity
+ },
+ theirsCurrent = theirs.hunks[theirsIndex] || {
+ oldStart: Infinity
+ };
+
+ if (hunkBefore(mineCurrent, theirsCurrent)) {
+ // This patch does not overlap with any of the others, yay.
+ ret.hunks.push(cloneHunk(mineCurrent, mineOffset));
+ mineIndex++;
+ theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;
+ } else if (hunkBefore(theirsCurrent, mineCurrent)) {
+ // This patch does not overlap with any of the others, yay.
+ ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));
+ theirsIndex++;
+ mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;
+ } else {
+ // Overlap, merge as best we can
+ var mergedHunk = {
+ oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),
+ oldLines: 0,
+ newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),
+ newLines: 0,
+ lines: []
+ };
+ mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);
+ theirsIndex++;
+ mineIndex++;
+ ret.hunks.push(mergedHunk);
+ }
+ }
+
+ return ret;
+ }
+
+ function loadPatch(param, base) {
+ if (typeof param === 'string') {
+ if (/^@@/m.test(param) || /^Index:/m.test(param)) {
+ return parsePatch(param)[0];
+ }
+
+ if (!base) {
+ throw new Error('Must provide a base reference or pass in a patch');
+ }
+
+ return structuredPatch(undefined, undefined, base, param);
+ }
+
+ return param;
+ }
+
+ function fileNameChanged(patch) {
+ return patch.newFileName && patch.newFileName !== patch.oldFileName;
+ }
+
+ function selectField(index, mine, theirs) {
+ if (mine === theirs) {
+ return mine;
+ } else {
+ index.conflict = true;
+ return {
+ mine: mine,
+ theirs: theirs
+ };
+ }
+ }
+
+ function hunkBefore(test, check) {
+ return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;
+ }
+
+ function cloneHunk(hunk, offset) {
+ return {
+ oldStart: hunk.oldStart,
+ oldLines: hunk.oldLines,
+ newStart: hunk.newStart + offset,
+ newLines: hunk.newLines,
+ lines: hunk.lines
+ };
+ }
+
+ function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {
+ // This will generally result in a conflicted hunk, but there are cases where the context
+ // is the only overlap where we can successfully merge the content here.
+ var mine = {
+ offset: mineOffset,
+ lines: mineLines,
+ index: 0
+ },
+ their = {
+ offset: theirOffset,
+ lines: theirLines,
+ index: 0
+ }; // Handle any leading content
+
+ insertLeading(hunk, mine, their);
+ insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.
+
+ while (mine.index < mine.lines.length && their.index < their.lines.length) {
+ var mineCurrent = mine.lines[mine.index],
+ theirCurrent = their.lines[their.index];
+
+ if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {
+ // Both modified ...
+ mutualChange(hunk, mine, their);
+ } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {
+ var _hunk$lines; // Mine inserted
+
+
+ (_hunk$lines = hunk.lines).push.apply(_hunk$lines, _toConsumableArray$1(collectChange(mine)));
+ } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {
+ var _hunk$lines2; // Theirs inserted
+
+
+ (_hunk$lines2 = hunk.lines).push.apply(_hunk$lines2, _toConsumableArray$1(collectChange(their)));
+ } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {
+ // Mine removed or edited
+ removal(hunk, mine, their);
+ } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {
+ // Their removed or edited
+ removal(hunk, their, mine, true);
+ } else if (mineCurrent === theirCurrent) {
+ // Context identity
+ hunk.lines.push(mineCurrent);
+ mine.index++;
+ their.index++;
+ } else {
+ // Context mismatch
+ conflict(hunk, collectChange(mine), collectChange(their));
+ }
+ } // Now push anything that may be remaining
+
+
+ insertTrailing(hunk, mine);
+ insertTrailing(hunk, their);
+ calcLineCount(hunk);
+ }
+
+ function mutualChange(hunk, mine, their) {
+ var myChanges = collectChange(mine),
+ theirChanges = collectChange(their);
+
+ if (allRemoves(myChanges) && allRemoves(theirChanges)) {
+ // Special case for remove changes that are supersets of one another
+ if (arrayStartsWith(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {
+ var _hunk$lines3;
+
+ (_hunk$lines3 = hunk.lines).push.apply(_hunk$lines3, _toConsumableArray$1(myChanges));
+
+ return;
+ } else if (arrayStartsWith(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {
+ var _hunk$lines4;
+
+ (_hunk$lines4 = hunk.lines).push.apply(_hunk$lines4, _toConsumableArray$1(theirChanges));
+
+ return;
+ }
+ } else if (arrayEqual(myChanges, theirChanges)) {
+ var _hunk$lines5;
+
+ (_hunk$lines5 = hunk.lines).push.apply(_hunk$lines5, _toConsumableArray$1(myChanges));
+
+ return;
+ }
+
+ conflict(hunk, myChanges, theirChanges);
+ }
+
+ function removal(hunk, mine, their, swap) {
+ var myChanges = collectChange(mine),
+ theirChanges = collectContext(their, myChanges);
+
+ if (theirChanges.merged) {
+ var _hunk$lines6;
+
+ (_hunk$lines6 = hunk.lines).push.apply(_hunk$lines6, _toConsumableArray$1(theirChanges.merged));
+ } else {
+ conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);
+ }
+ }
+
+ function conflict(hunk, mine, their) {
+ hunk.conflict = true;
+ hunk.lines.push({
+ conflict: true,
+ mine: mine,
+ theirs: their
+ });
+ }
+
+ function insertLeading(hunk, insert, their) {
+ while (insert.offset < their.offset && insert.index < insert.lines.length) {
+ var line = insert.lines[insert.index++];
+ hunk.lines.push(line);
+ insert.offset++;
+ }
+ }
+
+ function insertTrailing(hunk, insert) {
+ while (insert.index < insert.lines.length) {
+ var line = insert.lines[insert.index++];
+ hunk.lines.push(line);
+ }
+ }
+
+ function collectChange(state) {
+ var ret = [],
+ operation = state.lines[state.index][0];
+
+ while (state.index < state.lines.length) {
+ var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one "atomic" modify change.
+
+ if (operation === '-' && line[0] === '+') {
+ operation = '+';
+ }
+
+ if (operation === line[0]) {
+ ret.push(line);
+ state.index++;
+ } else {
+ break;
+ }
+ }
+
+ return ret;
+ }
+
+ function collectContext(state, matchChanges) {
+ var changes = [],
+ merged = [],
+ matchIndex = 0,
+ contextChanges = false,
+ conflicted = false;
+
+ while (matchIndex < matchChanges.length && state.index < state.lines.length) {
+ var change = state.lines[state.index],
+ match = matchChanges[matchIndex]; // Once we've hit our add, then we are done
+
+ if (match[0] === '+') {
+ break;
+ }
+
+ contextChanges = contextChanges || change[0] !== ' ';
+ merged.push(match);
+ matchIndex++; // Consume any additions in the other block as a conflict to attempt
+ // to pull in the remaining context after this
+
+ if (change[0] === '+') {
+ conflicted = true;
+
+ while (change[0] === '+') {
+ changes.push(change);
+ change = state.lines[++state.index];
+ }
+ }
+
+ if (match.substr(1) === change.substr(1)) {
+ changes.push(change);
+ state.index++;
+ } else {
+ conflicted = true;
+ }
+ }
+
+ if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {
+ conflicted = true;
+ }
+
+ if (conflicted) {
+ return changes;
+ }
+
+ while (matchIndex < matchChanges.length) {
+ merged.push(matchChanges[matchIndex++]);
+ }
+
+ return {
+ merged: merged,
+ changes: changes
+ };
+ }
+
+ function allRemoves(changes) {
+ return changes.reduce(function (prev, change) {
+ return prev && change[0] === '-';
+ }, true);
+ }
+
+ function skipRemoveSuperset(state, removeChanges, delta) {
+ for (var i = 0; i < delta; i++) {
+ var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);
+
+ if (state.lines[state.index + i] !== ' ' + changeContent) {
+ return false;
+ }
+ }
+
+ state.index += delta;
+ return true;
+ }
+
+ function calcOldNewLineCount(lines) {
+ var oldLines = 0;
+ var newLines = 0;
+ lines.forEach(function (line) {
+ if (typeof line !== 'string') {
+ var myCount = calcOldNewLineCount(line.mine);
+ var theirCount = calcOldNewLineCount(line.theirs);
+
+ if (oldLines !== undefined) {
+ if (myCount.oldLines === theirCount.oldLines) {
+ oldLines += myCount.oldLines;
+ } else {
+ oldLines = undefined;
+ }
+ }
+
+ if (newLines !== undefined) {
+ if (myCount.newLines === theirCount.newLines) {
+ newLines += myCount.newLines;
+ } else {
+ newLines = undefined;
+ }
+ }
+ } else {
+ if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {
+ newLines++;
+ }
+
+ if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {
+ oldLines++;
+ }
+ }
+ });
+ return {
+ oldLines: oldLines,
+ newLines: newLines
+ };
+ } // See: http://code.google.com/p/google-diff-match-patch/wiki/API
+
+
+ function convertChangesToDMP(changes) {
+ var ret = [],
+ change,
+ operation;
+
+ for (var i = 0; i < changes.length; i++) {
+ change = changes[i];
+
+ if (change.added) {
+ operation = 1;
+ } else if (change.removed) {
+ operation = -1;
+ } else {
+ operation = 0;
+ }
+
+ ret.push([operation, change.value]);
+ }
+
+ return ret;
+ }
+
+ function convertChangesToXML(changes) {
+ var ret = [];
+
+ for (var i = 0; i < changes.length; i++) {
+ var change = changes[i];
+
+ if (change.added) {
+ ret.push('<ins>');
+ } else if (change.removed) {
+ ret.push('<del>');
+ }
+
+ ret.push(escapeHTML(change.value));
+
+ if (change.added) {
+ ret.push('</ins>');
+ } else if (change.removed) {
+ ret.push('</del>');
+ }
+ }
+
+ return ret.join('');
+ }
+
+ function escapeHTML(s) {
+ var n = s;
+ n = n.replace(/&/g, '&amp;');
+ n = n.replace(/</g, '&lt;');
+ n = n.replace(/>/g, '&gt;');
+ n = n.replace(/"/g, '&quot;');
+ return n;
+ }
+
+ var index_es6 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ Diff: Diff,
+ diffChars: diffChars,
+ diffWords: diffWords,
+ diffWordsWithSpace: diffWordsWithSpace,
+ diffLines: diffLines,
+ diffTrimmedLines: diffTrimmedLines,
+ diffSentences: diffSentences,
+ diffCss: diffCss,
+ diffJson: diffJson,
+ diffArrays: diffArrays,
+ structuredPatch: structuredPatch,
+ createTwoFilesPatch: createTwoFilesPatch,
+ createPatch: createPatch,
+ applyPatch: applyPatch,
+ applyPatches: applyPatches,
+ parsePatch: parsePatch,
+ merge: merge,
+ convertChangesToDMP: convertChangesToDMP,
+ convertChangesToXML: convertChangesToXML,
+ canonicalize: canonicalize
+ });
+
+ var _shim_fs = {};
+
+ var _shim_fs$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ 'default': _shim_fs
+ });
+
+ /*!
+ * normalize-path <https://github.com/jonschlinkert/normalize-path>
+ *
+ * Copyright (c) 2014-2018, Jon Schlinkert.
+ * Released under the MIT License.
+ */
+ var normalizePath = function normalizePath(path, stripTrailing) {
+ if (typeof path !== 'string') {
+ throw new TypeError('expected path to be a string');
+ }
+
+ if (path === '\\' || path === '/') return '/';
+ var len = path.length;
+ if (len <= 1) return path; // ensure that win32 namespaces has two leading slashes, so that the path is
+ // handled properly by the win32 version of path.parse() after being normalized
+ // https://msdn.microsoft.com/library/windows/desktop/aa365247(v=vs.85).aspx#namespaces
+
+ var prefix = '';
+
+ if (len > 4 && path[3] === '\\') {
+ var ch = path[2];
+
+ if ((ch === '?' || ch === '.') && path.slice(0, 2) === '\\\\') {
+ path = path.slice(2);
+ prefix = '//';
+ }
+ }
+
+ var segs = path.split(/[/\\]+/);
+
+ if (stripTrailing !== false && segs[segs.length - 1] === '') {
+ segs.pop();
+ }
+
+ return prefix + segs.join('/');
+ };
+
+ var global$1 = typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {};
+
+ var lookup = [];
+ var revLookup = [];
+ var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
+ var inited = false;
+
+ function init() {
+ inited = true;
+ var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
+
+ for (var i = 0, len = code.length; i < len; ++i) {
+ lookup[i] = code[i];
+ revLookup[code.charCodeAt(i)] = i;
+ }
+
+ revLookup['-'.charCodeAt(0)] = 62;
+ revLookup['_'.charCodeAt(0)] = 63;
+ }
+
+ function toByteArray(b64) {
+ if (!inited) {
+ init();
+ }
+
+ var i, j, l, tmp, placeHolders, arr;
+ var len = b64.length;
+
+ if (len % 4 > 0) {
+ throw new Error('Invalid string. Length must be a multiple of 4');
+ } // the number of equal signs (place holders)
+ // if there are two placeholders, than the two characters before it
+ // represent one byte
+ // if there is only one, then the three characters before it represent 2 bytes
+ // this is just a cheap hack to not do indexOf twice
+
+
+ placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0; // base64 is 4/3 + up to two characters of the original data
+
+ arr = new Arr(len * 3 / 4 - placeHolders); // if there are placeholders, only get up to the last complete 4 chars
+
+ l = placeHolders > 0 ? len - 4 : len;
+ var L = 0;
+
+ for (i = 0, j = 0; i < l; i += 4, j += 3) {
+ tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];
+ arr[L++] = tmp >> 16 & 0xFF;
+ arr[L++] = tmp >> 8 & 0xFF;
+ arr[L++] = tmp & 0xFF;
+ }
+
+ if (placeHolders === 2) {
+ tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;
+ arr[L++] = tmp & 0xFF;
+ } else if (placeHolders === 1) {
+ tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;
+ arr[L++] = tmp >> 8 & 0xFF;
+ arr[L++] = tmp & 0xFF;
+ }
+
+ return arr;
+ }
+
+ function tripletToBase64(num) {
+ return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];
+ }
+
+ function encodeChunk(uint8, start, end) {
+ var tmp;
+ var output = [];
+
+ for (var i = start; i < end; i += 3) {
+ tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + uint8[i + 2];
+ output.push(tripletToBase64(tmp));
+ }
+
+ return output.join('');
+ }
+
+ function fromByteArray(uint8) {
+ if (!inited) {
+ init();
+ }
+
+ var tmp;
+ var len = uint8.length;
+ var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes
+
+ var output = '';
+ var parts = [];
+ var maxChunkLength = 16383; // must be multiple of 3
+ // go through the array every three bytes, we'll deal with trailing stuff later
+
+ for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
+ parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));
+ } // pad the end with zeros, but make sure to not forget the extra bytes
+
+
+ if (extraBytes === 1) {
+ tmp = uint8[len - 1];
+ output += lookup[tmp >> 2];
+ output += lookup[tmp << 4 & 0x3F];
+ output += '==';
+ } else if (extraBytes === 2) {
+ tmp = (uint8[len - 2] << 8) + uint8[len - 1];
+ output += lookup[tmp >> 10];
+ output += lookup[tmp >> 4 & 0x3F];
+ output += lookup[tmp << 2 & 0x3F];
+ output += '=';
+ }
+
+ parts.push(output);
+ return parts.join('');
+ }
+
+ function read(buffer, offset, isLE, mLen, nBytes) {
+ var e, m;
+ var eLen = nBytes * 8 - mLen - 1;
+ var eMax = (1 << eLen) - 1;
+ var eBias = eMax >> 1;
+ var nBits = -7;
+ var i = isLE ? nBytes - 1 : 0;
+ var d = isLE ? -1 : 1;
+ var s = buffer[offset + i];
+ i += d;
+ e = s & (1 << -nBits) - 1;
+ s >>= -nBits;
+ nBits += eLen;
+
+ for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
+
+ m = e & (1 << -nBits) - 1;
+ e >>= -nBits;
+ nBits += mLen;
+
+ for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
+
+ if (e === 0) {
+ e = 1 - eBias;
+ } else if (e === eMax) {
+ return m ? NaN : (s ? -1 : 1) * Infinity;
+ } else {
+ m = m + Math.pow(2, mLen);
+ e = e - eBias;
+ }
+
+ return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
+ }
+ function write(buffer, value, offset, isLE, mLen, nBytes) {
+ var e, m, c;
+ var eLen = nBytes * 8 - mLen - 1;
+ var eMax = (1 << eLen) - 1;
+ var eBias = eMax >> 1;
+ var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
+ var i = isLE ? 0 : nBytes - 1;
+ var d = isLE ? 1 : -1;
+ var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
+ value = Math.abs(value);
+
+ if (isNaN(value) || value === Infinity) {
+ m = isNaN(value) ? 1 : 0;
+ e = eMax;
+ } else {
+ e = Math.floor(Math.log(value) / Math.LN2);
+
+ if (value * (c = Math.pow(2, -e)) < 1) {
+ e--;
+ c *= 2;
+ }
+
+ if (e + eBias >= 1) {
+ value += rt / c;
+ } else {
+ value += rt * Math.pow(2, 1 - eBias);
+ }
+
+ if (value * c >= 2) {
+ e++;
+ c /= 2;
+ }
+
+ if (e + eBias >= eMax) {
+ m = 0;
+ e = eMax;
+ } else if (e + eBias >= 1) {
+ m = (value * c - 1) * Math.pow(2, mLen);
+ e = e + eBias;
+ } else {
+ m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
+ e = 0;
+ }
+ }
+
+ for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
+
+ e = e << mLen | m;
+ eLen += mLen;
+
+ for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
+
+ buffer[offset + i - d] |= s * 128;
+ }
+
+ var toString = {}.toString;
+ var isArray = Array.isArray || function (arr) {
+ return toString.call(arr) == '[object Array]';
+ };
+
+ var INSPECT_MAX_BYTES = 50;
+ /**
+ * If `Buffer.TYPED_ARRAY_SUPPORT`:
+ * === true Use Uint8Array implementation (fastest)
+ * === false Use Object implementation (most compatible, even IE6)
+ *
+ * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
+ * Opera 11.6+, iOS 4.2+.
+ *
+ * Due to various browser bugs, sometimes the Object implementation will be used even
+ * when the browser supports typed arrays.
+ *
+ * Note:
+ *
+ * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
+ * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
+ *
+ * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
+ *
+ * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
+ * incorrect length in some situations.
+
+ * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
+ * get the Object implementation, which is slower but behaves correctly.
+ */
+
+ Buffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined ? global$1.TYPED_ARRAY_SUPPORT : true;
+
+ function kMaxLength() {
+ return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;
+ }
+
+ function createBuffer(that, length) {
+ if (kMaxLength() < length) {
+ throw new RangeError('Invalid typed array length');
+ }
+
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ // Return an augmented `Uint8Array` instance, for best performance
+ that = new Uint8Array(length);
+ that.__proto__ = Buffer.prototype;
+ } else {
+ // Fallback: Return an object instance of the Buffer class
+ if (that === null) {
+ that = new Buffer(length);
+ }
+
+ that.length = length;
+ }
+
+ return that;
+ }
+ /**
+ * The Buffer constructor returns instances of `Uint8Array` that have their
+ * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
+ * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
+ * and the `Uint8Array` methods. Square bracket notation works as expected -- it
+ * returns a single octet.
+ *
+ * The `Uint8Array` prototype remains unmodified.
+ */
+
+
+ function Buffer(arg, encodingOrOffset, length) {
+ if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
+ return new Buffer(arg, encodingOrOffset, length);
+ } // Common case.
+
+
+ if (typeof arg === 'number') {
+ if (typeof encodingOrOffset === 'string') {
+ throw new Error('If encoding is specified then the first argument must be a string');
+ }
+
+ return allocUnsafe(this, arg);
+ }
+
+ return from(this, arg, encodingOrOffset, length);
+ }
+ Buffer.poolSize = 8192; // not used by this implementation
+ // TODO: Legacy, not needed anymore. Remove in next major version.
+
+ Buffer._augment = function (arr) {
+ arr.__proto__ = Buffer.prototype;
+ return arr;
+ };
+
+ function from(that, value, encodingOrOffset, length) {
+ if (typeof value === 'number') {
+ throw new TypeError('"value" argument must not be a number');
+ }
+
+ if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
+ return fromArrayBuffer(that, value, encodingOrOffset, length);
+ }
+
+ if (typeof value === 'string') {
+ return fromString(that, value, encodingOrOffset);
+ }
+
+ return fromObject(that, value);
+ }
+ /**
+ * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
+ * if value is a number.
+ * Buffer.from(str[, encoding])
+ * Buffer.from(array)
+ * Buffer.from(buffer)
+ * Buffer.from(arrayBuffer[, byteOffset[, length]])
+ **/
+
+
+ Buffer.from = function (value, encodingOrOffset, length) {
+ return from(null, value, encodingOrOffset, length);
+ };
+
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ Buffer.prototype.__proto__ = Uint8Array.prototype;
+ Buffer.__proto__ = Uint8Array;
+ }
+
+ function assertSize(size) {
+ if (typeof size !== 'number') {
+ throw new TypeError('"size" argument must be a number');
+ } else if (size < 0) {
+ throw new RangeError('"size" argument must not be negative');
+ }
+ }
+
+ function alloc(that, size, fill, encoding) {
+ assertSize(size);
+
+ if (size <= 0) {
+ return createBuffer(that, size);
+ }
+
+ if (fill !== undefined) {
+ // Only pay attention to encoding if it's a string. This
+ // prevents accidentally sending in a number that would
+ // be interpretted as a start offset.
+ return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);
+ }
+
+ return createBuffer(that, size);
+ }
+ /**
+ * Creates a new filled Buffer instance.
+ * alloc(size[, fill[, encoding]])
+ **/
+
+
+ Buffer.alloc = function (size, fill, encoding) {
+ return alloc(null, size, fill, encoding);
+ };
+
+ function allocUnsafe(that, size) {
+ assertSize(size);
+ that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);
+
+ if (!Buffer.TYPED_ARRAY_SUPPORT) {
+ for (var i = 0; i < size; ++i) {
+ that[i] = 0;
+ }
+ }
+
+ return that;
+ }
+ /**
+ * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
+ * */
+
+
+ Buffer.allocUnsafe = function (size) {
+ return allocUnsafe(null, size);
+ };
+ /**
+ * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
+ */
+
+
+ Buffer.allocUnsafeSlow = function (size) {
+ return allocUnsafe(null, size);
+ };
+
+ function fromString(that, string, encoding) {
+ if (typeof encoding !== 'string' || encoding === '') {
+ encoding = 'utf8';
+ }
+
+ if (!Buffer.isEncoding(encoding)) {
+ throw new TypeError('"encoding" must be a valid string encoding');
+ }
+
+ var length = byteLength(string, encoding) | 0;
+ that = createBuffer(that, length);
+ var actual = that.write(string, encoding);
+
+ if (actual !== length) {
+ // Writing a hex string, for example, that contains invalid characters will
+ // cause everything after the first invalid character to be ignored. (e.g.
+ // 'abxxcd' will be treated as 'ab')
+ that = that.slice(0, actual);
+ }
+
+ return that;
+ }
+
+ function fromArrayLike(that, array) {
+ var length = array.length < 0 ? 0 : checked(array.length) | 0;
+ that = createBuffer(that, length);
+
+ for (var i = 0; i < length; i += 1) {
+ that[i] = array[i] & 255;
+ }
+
+ return that;
+ }
+
+ function fromArrayBuffer(that, array, byteOffset, length) {
+ array.byteLength; // this throws if `array` is not a valid ArrayBuffer
+
+ if (byteOffset < 0 || array.byteLength < byteOffset) {
+ throw new RangeError('\'offset\' is out of bounds');
+ }
+
+ if (array.byteLength < byteOffset + (length || 0)) {
+ throw new RangeError('\'length\' is out of bounds');
+ }
+
+ if (byteOffset === undefined && length === undefined) {
+ array = new Uint8Array(array);
+ } else if (length === undefined) {
+ array = new Uint8Array(array, byteOffset);
+ } else {
+ array = new Uint8Array(array, byteOffset, length);
+ }
+
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ // Return an augmented `Uint8Array` instance, for best performance
+ that = array;
+ that.__proto__ = Buffer.prototype;
+ } else {
+ // Fallback: Return an object instance of the Buffer class
+ that = fromArrayLike(that, array);
+ }
+
+ return that;
+ }
+
+ function fromObject(that, obj) {
+ if (internalIsBuffer(obj)) {
+ var len = checked(obj.length) | 0;
+ that = createBuffer(that, len);
+
+ if (that.length === 0) {
+ return that;
+ }
+
+ obj.copy(that, 0, 0, len);
+ return that;
+ }
+
+ if (obj) {
+ if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) {
+ if (typeof obj.length !== 'number' || isnan(obj.length)) {
+ return createBuffer(that, 0);
+ }
+
+ return fromArrayLike(that, obj);
+ }
+
+ if (obj.type === 'Buffer' && isArray(obj.data)) {
+ return fromArrayLike(that, obj.data);
+ }
+ }
+
+ throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');
+ }
+
+ function checked(length) {
+ // Note: cannot use `length < kMaxLength()` here because that fails when
+ // length is NaN (which is otherwise coerced to zero.)
+ if (length >= kMaxLength()) {
+ throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes');
+ }
+
+ return length | 0;
+ }
+ Buffer.isBuffer = isBuffer;
+
+ function internalIsBuffer(b) {
+ return !!(b != null && b._isBuffer);
+ }
+
+ Buffer.compare = function compare(a, b) {
+ if (!internalIsBuffer(a) || !internalIsBuffer(b)) {
+ throw new TypeError('Arguments must be Buffers');
+ }
+
+ if (a === b) return 0;
+ var x = a.length;
+ var y = b.length;
+
+ for (var i = 0, len = Math.min(x, y); i < len; ++i) {
+ if (a[i] !== b[i]) {
+ x = a[i];
+ y = b[i];
+ break;
+ }
+ }
+
+ if (x < y) return -1;
+ if (y < x) return 1;
+ return 0;
+ };
+
+ Buffer.isEncoding = function isEncoding(encoding) {
+ switch (String(encoding).toLowerCase()) {
+ case 'hex':
+ case 'utf8':
+ case 'utf-8':
+ case 'ascii':
+ case 'latin1':
+ case 'binary':
+ case 'base64':
+ case 'ucs2':
+ case 'ucs-2':
+ case 'utf16le':
+ case 'utf-16le':
+ return true;
+
+ default:
+ return false;
+ }
+ };
+
+ Buffer.concat = function concat(list, length) {
+ if (!isArray(list)) {
+ throw new TypeError('"list" argument must be an Array of Buffers');
+ }
+
+ if (list.length === 0) {
+ return Buffer.alloc(0);
+ }
+
+ var i;
+
+ if (length === undefined) {
+ length = 0;
+
+ for (i = 0; i < list.length; ++i) {
+ length += list[i].length;
+ }
+ }
+
+ var buffer = Buffer.allocUnsafe(length);
+ var pos = 0;
+
+ for (i = 0; i < list.length; ++i) {
+ var buf = list[i];
+
+ if (!internalIsBuffer(buf)) {
+ throw new TypeError('"list" argument must be an Array of Buffers');
+ }
+
+ buf.copy(buffer, pos);
+ pos += buf.length;
+ }
+
+ return buffer;
+ };
+
+ function byteLength(string, encoding) {
+ if (internalIsBuffer(string)) {
+ return string.length;
+ }
+
+ if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
+ return string.byteLength;
+ }
+
+ if (typeof string !== 'string') {
+ string = '' + string;
+ }
+
+ var len = string.length;
+ if (len === 0) return 0; // Use a for loop to avoid recursion
+
+ var loweredCase = false;
+
+ for (;;) {
+ switch (encoding) {
+ case 'ascii':
+ case 'latin1':
+ case 'binary':
+ return len;
+
+ case 'utf8':
+ case 'utf-8':
+ case undefined:
+ return utf8ToBytes(string).length;
+
+ case 'ucs2':
+ case 'ucs-2':
+ case 'utf16le':
+ case 'utf-16le':
+ return len * 2;
+
+ case 'hex':
+ return len >>> 1;
+
+ case 'base64':
+ return base64ToBytes(string).length;
+
+ default:
+ if (loweredCase) return utf8ToBytes(string).length; // assume utf8
+
+ encoding = ('' + encoding).toLowerCase();
+ loweredCase = true;
+ }
+ }
+ }
+
+ Buffer.byteLength = byteLength;
+
+ function slowToString(encoding, start, end) {
+ var loweredCase = false; // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
+ // property of a typed array.
+ // This behaves neither like String nor Uint8Array in that we set start/end
+ // to their upper/lower bounds if the value passed is out of range.
+ // undefined is handled specially as per ECMA-262 6th Edition,
+ // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
+
+ if (start === undefined || start < 0) {
+ start = 0;
+ } // Return early if start > this.length. Done here to prevent potential uint32
+ // coercion fail below.
+
+
+ if (start > this.length) {
+ return '';
+ }
+
+ if (end === undefined || end > this.length) {
+ end = this.length;
+ }
+
+ if (end <= 0) {
+ return '';
+ } // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
+
+
+ end >>>= 0;
+ start >>>= 0;
+
+ if (end <= start) {
+ return '';
+ }
+
+ if (!encoding) encoding = 'utf8';
+
+ while (true) {
+ switch (encoding) {
+ case 'hex':
+ return hexSlice(this, start, end);
+
+ case 'utf8':
+ case 'utf-8':
+ return utf8Slice(this, start, end);
+
+ case 'ascii':
+ return asciiSlice(this, start, end);
+
+ case 'latin1':
+ case 'binary':
+ return latin1Slice(this, start, end);
+
+ case 'base64':
+ return base64Slice(this, start, end);
+
+ case 'ucs2':
+ case 'ucs-2':
+ case 'utf16le':
+ case 'utf-16le':
+ return utf16leSlice(this, start, end);
+
+ default:
+ if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);
+ encoding = (encoding + '').toLowerCase();
+ loweredCase = true;
+ }
+ }
+ } // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
+ // Buffer instances.
+
+
+ Buffer.prototype._isBuffer = true;
+
+ function swap(b, n, m) {
+ var i = b[n];
+ b[n] = b[m];
+ b[m] = i;
+ }
+
+ Buffer.prototype.swap16 = function swap16() {
+ var len = this.length;
+
+ if (len % 2 !== 0) {
+ throw new RangeError('Buffer size must be a multiple of 16-bits');
+ }
+
+ for (var i = 0; i < len; i += 2) {
+ swap(this, i, i + 1);
+ }
+
+ return this;
+ };
+
+ Buffer.prototype.swap32 = function swap32() {
+ var len = this.length;
+
+ if (len % 4 !== 0) {
+ throw new RangeError('Buffer size must be a multiple of 32-bits');
+ }
+
+ for (var i = 0; i < len; i += 4) {
+ swap(this, i, i + 3);
+ swap(this, i + 1, i + 2);
+ }
+
+ return this;
+ };
+
+ Buffer.prototype.swap64 = function swap64() {
+ var len = this.length;
+
+ if (len % 8 !== 0) {
+ throw new RangeError('Buffer size must be a multiple of 64-bits');
+ }
+
+ for (var i = 0; i < len; i += 8) {
+ swap(this, i, i + 7);
+ swap(this, i + 1, i + 6);
+ swap(this, i + 2, i + 5);
+ swap(this, i + 3, i + 4);
+ }
+
+ return this;
+ };
+
+ Buffer.prototype.toString = function toString() {
+ var length = this.length | 0;
+ if (length === 0) return '';
+ if (arguments.length === 0) return utf8Slice(this, 0, length);
+ return slowToString.apply(this, arguments);
+ };
+
+ Buffer.prototype.equals = function equals(b) {
+ if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer');
+ if (this === b) return true;
+ return Buffer.compare(this, b) === 0;
+ };
+
+ Buffer.prototype.inspect = function inspect() {
+ var str = '';
+ var max = INSPECT_MAX_BYTES;
+
+ if (this.length > 0) {
+ str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');
+ if (this.length > max) str += ' ... ';
+ }
+
+ return '<Buffer ' + str + '>';
+ };
+
+ Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {
+ if (!internalIsBuffer(target)) {
+ throw new TypeError('Argument must be a Buffer');
+ }
+
+ if (start === undefined) {
+ start = 0;
+ }
+
+ if (end === undefined) {
+ end = target ? target.length : 0;
+ }
+
+ if (thisStart === undefined) {
+ thisStart = 0;
+ }
+
+ if (thisEnd === undefined) {
+ thisEnd = this.length;
+ }
+
+ if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
+ throw new RangeError('out of range index');
+ }
+
+ if (thisStart >= thisEnd && start >= end) {
+ return 0;
+ }
+
+ if (thisStart >= thisEnd) {
+ return -1;
+ }
+
+ if (start >= end) {
+ return 1;
+ }
+
+ start >>>= 0;
+ end >>>= 0;
+ thisStart >>>= 0;
+ thisEnd >>>= 0;
+ if (this === target) return 0;
+ var x = thisEnd - thisStart;
+ var y = end - start;
+ var len = Math.min(x, y);
+ var thisCopy = this.slice(thisStart, thisEnd);
+ var targetCopy = target.slice(start, end);
+
+ for (var i = 0; i < len; ++i) {
+ if (thisCopy[i] !== targetCopy[i]) {
+ x = thisCopy[i];
+ y = targetCopy[i];
+ break;
+ }
+ }
+
+ if (x < y) return -1;
+ if (y < x) return 1;
+ return 0;
+ }; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
+ // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
+ //
+ // Arguments:
+ // - buffer - a Buffer to search
+ // - val - a string, Buffer, or number
+ // - byteOffset - an index into `buffer`; will be clamped to an int32
+ // - encoding - an optional encoding, relevant is val is a string
+ // - dir - true for indexOf, false for lastIndexOf
+
+
+ function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {
+ // Empty buffer means no match
+ if (buffer.length === 0) return -1; // Normalize byteOffset
+
+ if (typeof byteOffset === 'string') {
+ encoding = byteOffset;
+ byteOffset = 0;
+ } else if (byteOffset > 0x7fffffff) {
+ byteOffset = 0x7fffffff;
+ } else if (byteOffset < -0x80000000) {
+ byteOffset = -0x80000000;
+ }
+
+ byteOffset = +byteOffset; // Coerce to Number.
+
+ if (isNaN(byteOffset)) {
+ // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
+ byteOffset = dir ? 0 : buffer.length - 1;
+ } // Normalize byteOffset: negative offsets start from the end of the buffer
+
+
+ if (byteOffset < 0) byteOffset = buffer.length + byteOffset;
+
+ if (byteOffset >= buffer.length) {
+ if (dir) return -1;else byteOffset = buffer.length - 1;
+ } else if (byteOffset < 0) {
+ if (dir) byteOffset = 0;else return -1;
+ } // Normalize val
+
+
+ if (typeof val === 'string') {
+ val = Buffer.from(val, encoding);
+ } // Finally, search either indexOf (if dir is true) or lastIndexOf
+
+
+ if (internalIsBuffer(val)) {
+ // Special case: looking for empty string/buffer always fails
+ if (val.length === 0) {
+ return -1;
+ }
+
+ return arrayIndexOf(buffer, val, byteOffset, encoding, dir);
+ } else if (typeof val === 'number') {
+ val = val & 0xFF; // Search for a byte value [0-255]
+
+ if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') {
+ if (dir) {
+ return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);
+ } else {
+ return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);
+ }
+ }
+
+ return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);
+ }
+
+ throw new TypeError('val must be string, number or Buffer');
+ }
+
+ function arrayIndexOf(arr, val, byteOffset, encoding, dir) {
+ var indexSize = 1;
+ var arrLength = arr.length;
+ var valLength = val.length;
+
+ if (encoding !== undefined) {
+ encoding = String(encoding).toLowerCase();
+
+ if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {
+ if (arr.length < 2 || val.length < 2) {
+ return -1;
+ }
+
+ indexSize = 2;
+ arrLength /= 2;
+ valLength /= 2;
+ byteOffset /= 2;
+ }
+ }
+
+ function read(buf, i) {
+ if (indexSize === 1) {
+ return buf[i];
+ } else {
+ return buf.readUInt16BE(i * indexSize);
+ }
+ }
+
+ var i;
+
+ if (dir) {
+ var foundIndex = -1;
+
+ for (i = byteOffset; i < arrLength; i++) {
+ if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
+ if (foundIndex === -1) foundIndex = i;
+ if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;
+ } else {
+ if (foundIndex !== -1) i -= i - foundIndex;
+ foundIndex = -1;
+ }
+ }
+ } else {
+ if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;
+
+ for (i = byteOffset; i >= 0; i--) {
+ var found = true;
+
+ for (var j = 0; j < valLength; j++) {
+ if (read(arr, i + j) !== read(val, j)) {
+ found = false;
+ break;
+ }
+ }
+
+ if (found) return i;
+ }
+ }
+
+ return -1;
+ }
+
+ Buffer.prototype.includes = function includes(val, byteOffset, encoding) {
+ return this.indexOf(val, byteOffset, encoding) !== -1;
+ };
+
+ Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {
+ return bidirectionalIndexOf(this, val, byteOffset, encoding, true);
+ };
+
+ Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {
+ return bidirectionalIndexOf(this, val, byteOffset, encoding, false);
+ };
+
+ function hexWrite(buf, string, offset, length) {
+ offset = Number(offset) || 0;
+ var remaining = buf.length - offset;
+
+ if (!length) {
+ length = remaining;
+ } else {
+ length = Number(length);
+
+ if (length > remaining) {
+ length = remaining;
+ }
+ } // must be an even number of digits
+
+
+ var strLen = string.length;
+ if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');
+
+ if (length > strLen / 2) {
+ length = strLen / 2;
+ }
+
+ for (var i = 0; i < length; ++i) {
+ var parsed = parseInt(string.substr(i * 2, 2), 16);
+ if (isNaN(parsed)) return i;
+ buf[offset + i] = parsed;
+ }
+
+ return i;
+ }
+
+ function utf8Write(buf, string, offset, length) {
+ return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);
+ }
+
+ function asciiWrite(buf, string, offset, length) {
+ return blitBuffer(asciiToBytes(string), buf, offset, length);
+ }
+
+ function latin1Write(buf, string, offset, length) {
+ return asciiWrite(buf, string, offset, length);
+ }
+
+ function base64Write(buf, string, offset, length) {
+ return blitBuffer(base64ToBytes(string), buf, offset, length);
+ }
+
+ function ucs2Write(buf, string, offset, length) {
+ return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);
+ }
+
+ Buffer.prototype.write = function write(string, offset, length, encoding) {
+ // Buffer#write(string)
+ if (offset === undefined) {
+ encoding = 'utf8';
+ length = this.length;
+ offset = 0; // Buffer#write(string, encoding)
+ } else if (length === undefined && typeof offset === 'string') {
+ encoding = offset;
+ length = this.length;
+ offset = 0; // Buffer#write(string, offset[, length][, encoding])
+ } else if (isFinite(offset)) {
+ offset = offset | 0;
+
+ if (isFinite(length)) {
+ length = length | 0;
+ if (encoding === undefined) encoding = 'utf8';
+ } else {
+ encoding = length;
+ length = undefined;
+ } // legacy write(string, encoding, offset, length) - remove in v0.13
+
+ } else {
+ throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');
+ }
+
+ var remaining = this.length - offset;
+ if (length === undefined || length > remaining) length = remaining;
+
+ if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {
+ throw new RangeError('Attempt to write outside buffer bounds');
+ }
+
+ if (!encoding) encoding = 'utf8';
+ var loweredCase = false;
+
+ for (;;) {
+ switch (encoding) {
+ case 'hex':
+ return hexWrite(this, string, offset, length);
+
+ case 'utf8':
+ case 'utf-8':
+ return utf8Write(this, string, offset, length);
+
+ case 'ascii':
+ return asciiWrite(this, string, offset, length);
+
+ case 'latin1':
+ case 'binary':
+ return latin1Write(this, string, offset, length);
+
+ case 'base64':
+ // Warning: maxLength not taken into account in base64Write
+ return base64Write(this, string, offset, length);
+
+ case 'ucs2':
+ case 'ucs-2':
+ case 'utf16le':
+ case 'utf-16le':
+ return ucs2Write(this, string, offset, length);
+
+ default:
+ if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);
+ encoding = ('' + encoding).toLowerCase();
+ loweredCase = true;
+ }
+ }
+ };
+
+ Buffer.prototype.toJSON = function toJSON() {
+ return {
+ type: 'Buffer',
+ data: Array.prototype.slice.call(this._arr || this, 0)
+ };
+ };
+
+ function base64Slice(buf, start, end) {
+ if (start === 0 && end === buf.length) {
+ return fromByteArray(buf);
+ } else {
+ return fromByteArray(buf.slice(start, end));
+ }
+ }
+
+ function utf8Slice(buf, start, end) {
+ end = Math.min(buf.length, end);
+ var res = [];
+ var i = start;
+
+ while (i < end) {
+ var firstByte = buf[i];
+ var codePoint = null;
+ var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;
+
+ if (i + bytesPerSequence <= end) {
+ var secondByte, thirdByte, fourthByte, tempCodePoint;
+
+ switch (bytesPerSequence) {
+ case 1:
+ if (firstByte < 0x80) {
+ codePoint = firstByte;
+ }
+
+ break;
+
+ case 2:
+ secondByte = buf[i + 1];
+
+ if ((secondByte & 0xC0) === 0x80) {
+ tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;
+
+ if (tempCodePoint > 0x7F) {
+ codePoint = tempCodePoint;
+ }
+ }
+
+ break;
+
+ case 3:
+ secondByte = buf[i + 1];
+ thirdByte = buf[i + 2];
+
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
+ tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;
+
+ if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
+ codePoint = tempCodePoint;
+ }
+ }
+
+ break;
+
+ case 4:
+ secondByte = buf[i + 1];
+ thirdByte = buf[i + 2];
+ fourthByte = buf[i + 3];
+
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
+ tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;
+
+ if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
+ codePoint = tempCodePoint;
+ }
+ }
+
+ }
+ }
+
+ if (codePoint === null) {
+ // we did not generate a valid codePoint so insert a
+ // replacement char (U+FFFD) and advance only 1 byte
+ codePoint = 0xFFFD;
+ bytesPerSequence = 1;
+ } else if (codePoint > 0xFFFF) {
+ // encode to utf16 (surrogate pair dance)
+ codePoint -= 0x10000;
+ res.push(codePoint >>> 10 & 0x3FF | 0xD800);
+ codePoint = 0xDC00 | codePoint & 0x3FF;
+ }
+
+ res.push(codePoint);
+ i += bytesPerSequence;
+ }
+
+ return decodeCodePointsArray(res);
+ } // Based on http://stackoverflow.com/a/22747272/680742, the browser with
+ // the lowest limit is Chrome, with 0x10000 args.
+ // We go 1 magnitude less, for safety
+
+
+ var MAX_ARGUMENTS_LENGTH = 0x1000;
+
+ function decodeCodePointsArray(codePoints) {
+ var len = codePoints.length;
+
+ if (len <= MAX_ARGUMENTS_LENGTH) {
+ return String.fromCharCode.apply(String, codePoints); // avoid extra slice()
+ } // Decode in chunks to avoid "call stack size exceeded".
+
+
+ var res = '';
+ var i = 0;
+
+ while (i < len) {
+ res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));
+ }
+
+ return res;
+ }
+
+ function asciiSlice(buf, start, end) {
+ var ret = '';
+ end = Math.min(buf.length, end);
+
+ for (var i = start; i < end; ++i) {
+ ret += String.fromCharCode(buf[i] & 0x7F);
+ }
+
+ return ret;
+ }
+
+ function latin1Slice(buf, start, end) {
+ var ret = '';
+ end = Math.min(buf.length, end);
+
+ for (var i = start; i < end; ++i) {
+ ret += String.fromCharCode(buf[i]);
+ }
+
+ return ret;
+ }
+
+ function hexSlice(buf, start, end) {
+ var len = buf.length;
+ if (!start || start < 0) start = 0;
+ if (!end || end < 0 || end > len) end = len;
+ var out = '';
+
+ for (var i = start; i < end; ++i) {
+ out += toHex(buf[i]);
+ }
+
+ return out;
+ }
+
+ function utf16leSlice(buf, start, end) {
+ var bytes = buf.slice(start, end);
+ var res = '';
+
+ for (var i = 0; i < bytes.length; i += 2) {
+ res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);
+ }
+
+ return res;
+ }
+
+ Buffer.prototype.slice = function slice(start, end) {
+ var len = this.length;
+ start = ~~start;
+ end = end === undefined ? len : ~~end;
+
+ if (start < 0) {
+ start += len;
+ if (start < 0) start = 0;
+ } else if (start > len) {
+ start = len;
+ }
+
+ if (end < 0) {
+ end += len;
+ if (end < 0) end = 0;
+ } else if (end > len) {
+ end = len;
+ }
+
+ if (end < start) end = start;
+ var newBuf;
+
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ newBuf = this.subarray(start, end);
+ newBuf.__proto__ = Buffer.prototype;
+ } else {
+ var sliceLen = end - start;
+ newBuf = new Buffer(sliceLen, undefined);
+
+ for (var i = 0; i < sliceLen; ++i) {
+ newBuf[i] = this[i + start];
+ }
+ }
+
+ return newBuf;
+ };
+ /*
+ * Need to make sure that buffer isn't trying to write out of bounds.
+ */
+
+
+ function checkOffset(offset, ext, length) {
+ if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');
+ if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');
+ }
+
+ Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {
+ offset = offset | 0;
+ byteLength = byteLength | 0;
+ if (!noAssert) checkOffset(offset, byteLength, this.length);
+ var val = this[offset];
+ var mul = 1;
+ var i = 0;
+
+ while (++i < byteLength && (mul *= 0x100)) {
+ val += this[offset + i] * mul;
+ }
+
+ return val;
+ };
+
+ Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {
+ offset = offset | 0;
+ byteLength = byteLength | 0;
+
+ if (!noAssert) {
+ checkOffset(offset, byteLength, this.length);
+ }
+
+ var val = this[offset + --byteLength];
+ var mul = 1;
+
+ while (byteLength > 0 && (mul *= 0x100)) {
+ val += this[offset + --byteLength] * mul;
+ }
+
+ return val;
+ };
+
+ Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 1, this.length);
+ return this[offset];
+ };
+
+ Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 2, this.length);
+ return this[offset] | this[offset + 1] << 8;
+ };
+
+ Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 2, this.length);
+ return this[offset] << 8 | this[offset + 1];
+ };
+
+ Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length);
+ return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;
+ };
+
+ Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length);
+ return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);
+ };
+
+ Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {
+ offset = offset | 0;
+ byteLength = byteLength | 0;
+ if (!noAssert) checkOffset(offset, byteLength, this.length);
+ var val = this[offset];
+ var mul = 1;
+ var i = 0;
+
+ while (++i < byteLength && (mul *= 0x100)) {
+ val += this[offset + i] * mul;
+ }
+
+ mul *= 0x80;
+ if (val >= mul) val -= Math.pow(2, 8 * byteLength);
+ return val;
+ };
+
+ Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {
+ offset = offset | 0;
+ byteLength = byteLength | 0;
+ if (!noAssert) checkOffset(offset, byteLength, this.length);
+ var i = byteLength;
+ var mul = 1;
+ var val = this[offset + --i];
+
+ while (i > 0 && (mul *= 0x100)) {
+ val += this[offset + --i] * mul;
+ }
+
+ mul *= 0x80;
+ if (val >= mul) val -= Math.pow(2, 8 * byteLength);
+ return val;
+ };
+
+ Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 1, this.length);
+ if (!(this[offset] & 0x80)) return this[offset];
+ return (0xff - this[offset] + 1) * -1;
+ };
+
+ Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 2, this.length);
+ var val = this[offset] | this[offset + 1] << 8;
+ return val & 0x8000 ? val | 0xFFFF0000 : val;
+ };
+
+ Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 2, this.length);
+ var val = this[offset + 1] | this[offset] << 8;
+ return val & 0x8000 ? val | 0xFFFF0000 : val;
+ };
+
+ Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length);
+ return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;
+ };
+
+ Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length);
+ return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];
+ };
+
+ Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length);
+ return read(this, offset, true, 23, 4);
+ };
+
+ Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length);
+ return read(this, offset, false, 23, 4);
+ };
+
+ Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 8, this.length);
+ return read(this, offset, true, 52, 8);
+ };
+
+ Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 8, this.length);
+ return read(this, offset, false, 52, 8);
+ };
+
+ function checkInt(buf, value, offset, ext, max, min) {
+ if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance');
+ if (value > max || value < min) throw new RangeError('"value" argument is out of bounds');
+ if (offset + ext > buf.length) throw new RangeError('Index out of range');
+ }
+
+ Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {
+ value = +value;
+ offset = offset | 0;
+ byteLength = byteLength | 0;
+
+ if (!noAssert) {
+ var maxBytes = Math.pow(2, 8 * byteLength) - 1;
+ checkInt(this, value, offset, byteLength, maxBytes, 0);
+ }
+
+ var mul = 1;
+ var i = 0;
+ this[offset] = value & 0xFF;
+
+ while (++i < byteLength && (mul *= 0x100)) {
+ this[offset + i] = value / mul & 0xFF;
+ }
+
+ return offset + byteLength;
+ };
+
+ Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {
+ value = +value;
+ offset = offset | 0;
+ byteLength = byteLength | 0;
+
+ if (!noAssert) {
+ var maxBytes = Math.pow(2, 8 * byteLength) - 1;
+ checkInt(this, value, offset, byteLength, maxBytes, 0);
+ }
+
+ var i = byteLength - 1;
+ var mul = 1;
+ this[offset + i] = value & 0xFF;
+
+ while (--i >= 0 && (mul *= 0x100)) {
+ this[offset + i] = value / mul & 0xFF;
+ }
+
+ return offset + byteLength;
+ };
+
+ Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {
+ value = +value;
+ offset = offset | 0;
+ if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);
+ if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
+ this[offset] = value & 0xff;
+ return offset + 1;
+ };
+
+ function objectWriteUInt16(buf, value, offset, littleEndian) {
+ if (value < 0) value = 0xffff + value + 1;
+
+ for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
+ buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;
+ }
+ }
+
+ Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {
+ value = +value;
+ offset = offset | 0;
+ if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
+
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = value & 0xff;
+ this[offset + 1] = value >>> 8;
+ } else {
+ objectWriteUInt16(this, value, offset, true);
+ }
+
+ return offset + 2;
+ };
+
+ Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {
+ value = +value;
+ offset = offset | 0;
+ if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
+
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = value >>> 8;
+ this[offset + 1] = value & 0xff;
+ } else {
+ objectWriteUInt16(this, value, offset, false);
+ }
+
+ return offset + 2;
+ };
+
+ function objectWriteUInt32(buf, value, offset, littleEndian) {
+ if (value < 0) value = 0xffffffff + value + 1;
+
+ for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
+ buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff;
+ }
+ }
+
+ Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {
+ value = +value;
+ offset = offset | 0;
+ if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
+
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset + 3] = value >>> 24;
+ this[offset + 2] = value >>> 16;
+ this[offset + 1] = value >>> 8;
+ this[offset] = value & 0xff;
+ } else {
+ objectWriteUInt32(this, value, offset, true);
+ }
+
+ return offset + 4;
+ };
+
+ Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {
+ value = +value;
+ offset = offset | 0;
+ if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
+
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = value >>> 24;
+ this[offset + 1] = value >>> 16;
+ this[offset + 2] = value >>> 8;
+ this[offset + 3] = value & 0xff;
+ } else {
+ objectWriteUInt32(this, value, offset, false);
+ }
+
+ return offset + 4;
+ };
+
+ Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {
+ value = +value;
+ offset = offset | 0;
+
+ if (!noAssert) {
+ var limit = Math.pow(2, 8 * byteLength - 1);
+ checkInt(this, value, offset, byteLength, limit - 1, -limit);
+ }
+
+ var i = 0;
+ var mul = 1;
+ var sub = 0;
+ this[offset] = value & 0xFF;
+
+ while (++i < byteLength && (mul *= 0x100)) {
+ if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
+ sub = 1;
+ }
+
+ this[offset + i] = (value / mul >> 0) - sub & 0xFF;
+ }
+
+ return offset + byteLength;
+ };
+
+ Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {
+ value = +value;
+ offset = offset | 0;
+
+ if (!noAssert) {
+ var limit = Math.pow(2, 8 * byteLength - 1);
+ checkInt(this, value, offset, byteLength, limit - 1, -limit);
+ }
+
+ var i = byteLength - 1;
+ var mul = 1;
+ var sub = 0;
+ this[offset + i] = value & 0xFF;
+
+ while (--i >= 0 && (mul *= 0x100)) {
+ if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
+ sub = 1;
+ }
+
+ this[offset + i] = (value / mul >> 0) - sub & 0xFF;
+ }
+
+ return offset + byteLength;
+ };
+
+ Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {
+ value = +value;
+ offset = offset | 0;
+ if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);
+ if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
+ if (value < 0) value = 0xff + value + 1;
+ this[offset] = value & 0xff;
+ return offset + 1;
+ };
+
+ Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {
+ value = +value;
+ offset = offset | 0;
+ if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
+
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = value & 0xff;
+ this[offset + 1] = value >>> 8;
+ } else {
+ objectWriteUInt16(this, value, offset, true);
+ }
+
+ return offset + 2;
+ };
+
+ Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {
+ value = +value;
+ offset = offset | 0;
+ if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
+
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = value >>> 8;
+ this[offset + 1] = value & 0xff;
+ } else {
+ objectWriteUInt16(this, value, offset, false);
+ }
+
+ return offset + 2;
+ };
+
+ Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {
+ value = +value;
+ offset = offset | 0;
+ if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
+
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = value & 0xff;
+ this[offset + 1] = value >>> 8;
+ this[offset + 2] = value >>> 16;
+ this[offset + 3] = value >>> 24;
+ } else {
+ objectWriteUInt32(this, value, offset, true);
+ }
+
+ return offset + 4;
+ };
+
+ Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {
+ value = +value;
+ offset = offset | 0;
+ if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
+ if (value < 0) value = 0xffffffff + value + 1;
+
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = value >>> 24;
+ this[offset + 1] = value >>> 16;
+ this[offset + 2] = value >>> 8;
+ this[offset + 3] = value & 0xff;
+ } else {
+ objectWriteUInt32(this, value, offset, false);
+ }
+
+ return offset + 4;
+ };
+
+ function checkIEEE754(buf, value, offset, ext, max, min) {
+ if (offset + ext > buf.length) throw new RangeError('Index out of range');
+ if (offset < 0) throw new RangeError('Index out of range');
+ }
+
+ function writeFloat(buf, value, offset, littleEndian, noAssert) {
+ if (!noAssert) {
+ checkIEEE754(buf, value, offset, 4);
+ }
+
+ write(buf, value, offset, littleEndian, 23, 4);
+ return offset + 4;
+ }
+
+ Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {
+ return writeFloat(this, value, offset, true, noAssert);
+ };
+
+ Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {
+ return writeFloat(this, value, offset, false, noAssert);
+ };
+
+ function writeDouble(buf, value, offset, littleEndian, noAssert) {
+ if (!noAssert) {
+ checkIEEE754(buf, value, offset, 8);
+ }
+
+ write(buf, value, offset, littleEndian, 52, 8);
+ return offset + 8;
+ }
+
+ Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {
+ return writeDouble(this, value, offset, true, noAssert);
+ };
+
+ Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {
+ return writeDouble(this, value, offset, false, noAssert);
+ }; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
+
+
+ Buffer.prototype.copy = function copy(target, targetStart, start, end) {
+ if (!start) start = 0;
+ if (!end && end !== 0) end = this.length;
+ if (targetStart >= target.length) targetStart = target.length;
+ if (!targetStart) targetStart = 0;
+ if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done
+
+ if (end === start) return 0;
+ if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions
+
+ if (targetStart < 0) {
+ throw new RangeError('targetStart out of bounds');
+ }
+
+ if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds');
+ if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob?
+
+ if (end > this.length) end = this.length;
+
+ if (target.length - targetStart < end - start) {
+ end = target.length - targetStart + start;
+ }
+
+ var len = end - start;
+ var i;
+
+ if (this === target && start < targetStart && targetStart < end) {
+ // descending copy from end
+ for (i = len - 1; i >= 0; --i) {
+ target[i + targetStart] = this[i + start];
+ }
+ } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
+ // ascending copy from start
+ for (i = 0; i < len; ++i) {
+ target[i + targetStart] = this[i + start];
+ }
+ } else {
+ Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);
+ }
+
+ return len;
+ }; // Usage:
+ // buffer.fill(number[, offset[, end]])
+ // buffer.fill(buffer[, offset[, end]])
+ // buffer.fill(string[, offset[, end]][, encoding])
+
+
+ Buffer.prototype.fill = function fill(val, start, end, encoding) {
+ // Handle string cases:
+ if (typeof val === 'string') {
+ if (typeof start === 'string') {
+ encoding = start;
+ start = 0;
+ end = this.length;
+ } else if (typeof end === 'string') {
+ encoding = end;
+ end = this.length;
+ }
+
+ if (val.length === 1) {
+ var code = val.charCodeAt(0);
+
+ if (code < 256) {
+ val = code;
+ }
+ }
+
+ if (encoding !== undefined && typeof encoding !== 'string') {
+ throw new TypeError('encoding must be a string');
+ }
+
+ if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
+ throw new TypeError('Unknown encoding: ' + encoding);
+ }
+ } else if (typeof val === 'number') {
+ val = val & 255;
+ } // Invalid ranges are not set to a default, so can range check early.
+
+
+ if (start < 0 || this.length < start || this.length < end) {
+ throw new RangeError('Out of range index');
+ }
+
+ if (end <= start) {
+ return this;
+ }
+
+ start = start >>> 0;
+ end = end === undefined ? this.length : end >>> 0;
+ if (!val) val = 0;
+ var i;
+
+ if (typeof val === 'number') {
+ for (i = start; i < end; ++i) {
+ this[i] = val;
+ }
+ } else {
+ var bytes = internalIsBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());
+ var len = bytes.length;
+
+ for (i = 0; i < end - start; ++i) {
+ this[i + start] = bytes[i % len];
+ }
+ }
+
+ return this;
+ }; // HELPER FUNCTIONS
+ // ================
+
+
+ var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g;
+
+ function base64clean(str) {
+ // Node strips out invalid characters like \n and \t from the string, base64-js does not
+ str = stringtrim(str).replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to ''
+
+ if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
+
+ while (str.length % 4 !== 0) {
+ str = str + '=';
+ }
+
+ return str;
+ }
+
+ function stringtrim(str) {
+ if (str.trim) return str.trim();
+ return str.replace(/^\s+|\s+$/g, '');
+ }
+
+ function toHex(n) {
+ if (n < 16) return '0' + n.toString(16);
+ return n.toString(16);
+ }
+
+ function utf8ToBytes(string, units) {
+ units = units || Infinity;
+ var codePoint;
+ var length = string.length;
+ var leadSurrogate = null;
+ var bytes = [];
+
+ for (var i = 0; i < length; ++i) {
+ codePoint = string.charCodeAt(i); // is surrogate component
+
+ if (codePoint > 0xD7FF && codePoint < 0xE000) {
+ // last char was a lead
+ if (!leadSurrogate) {
+ // no lead yet
+ if (codePoint > 0xDBFF) {
+ // unexpected trail
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
+ continue;
+ } else if (i + 1 === length) {
+ // unpaired lead
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
+ continue;
+ } // valid lead
+
+
+ leadSurrogate = codePoint;
+ continue;
+ } // 2 leads in a row
+
+
+ if (codePoint < 0xDC00) {
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
+ leadSurrogate = codePoint;
+ continue;
+ } // valid surrogate pair
+
+
+ codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;
+ } else if (leadSurrogate) {
+ // valid bmp char, but last char was a lead
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
+ }
+
+ leadSurrogate = null; // encode utf8
+
+ if (codePoint < 0x80) {
+ if ((units -= 1) < 0) break;
+ bytes.push(codePoint);
+ } else if (codePoint < 0x800) {
+ if ((units -= 2) < 0) break;
+ bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);
+ } else if (codePoint < 0x10000) {
+ if ((units -= 3) < 0) break;
+ bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);
+ } else if (codePoint < 0x110000) {
+ if ((units -= 4) < 0) break;
+ bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);
+ } else {
+ throw new Error('Invalid code point');
+ }
+ }
+
+ return bytes;
+ }
+
+ function asciiToBytes(str) {
+ var byteArray = [];
+
+ for (var i = 0; i < str.length; ++i) {
+ // Node's code seems to be doing this and not & 0x7F..
+ byteArray.push(str.charCodeAt(i) & 0xFF);
+ }
+
+ return byteArray;
+ }
+
+ function utf16leToBytes(str, units) {
+ var c, hi, lo;
+ var byteArray = [];
+
+ for (var i = 0; i < str.length; ++i) {
+ if ((units -= 2) < 0) break;
+ c = str.charCodeAt(i);
+ hi = c >> 8;
+ lo = c % 256;
+ byteArray.push(lo);
+ byteArray.push(hi);
+ }
+
+ return byteArray;
+ }
+
+ function base64ToBytes(str) {
+ return toByteArray(base64clean(str));
+ }
+
+ function blitBuffer(src, dst, offset, length) {
+ for (var i = 0; i < length; ++i) {
+ if (i + offset >= dst.length || i >= src.length) break;
+ dst[i + offset] = src[i];
+ }
+
+ return i;
+ }
+
+ function isnan(val) {
+ return val !== val; // eslint-disable-line no-self-compare
+ } // the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence
+ // The _isBuffer check is for Safari 5-7 support, because it's missing
+ // Object.prototype.constructor. Remove this eventually
+
+
+ function isBuffer(obj) {
+ return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj));
+ }
+
+ function isFastBuffer(obj) {
+ return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);
+ } // For Node v0.10 support. Remove this eventually.
+
+
+ function isSlowBuffer(obj) {
+ return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0));
+ }
+
+ var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
+
+ function unwrapExports (x) {
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
+ }
+
+ function createCommonjsModule(fn, module) {
+ return module = { exports: {} }, fn(module, module.exports), module.exports;
+ }
+
+ function getCjsExportFromNamespace (n) {
+ return n && n['default'] || n;
+ }
+
+ var fs = getCjsExportFromNamespace(_shim_fs$1);
+
+ /**
+ * @class
+ */
+
+
+ var LineByLine =
+ /*#__PURE__*/
+ function () {
+ function LineByLine(file, options) {
+ _classCallCheck(this, LineByLine);
+
+ options = options || {};
+ if (!options.readChunk) options.readChunk = 1024;
+
+ if (!options.newLineCharacter) {
+ options.newLineCharacter = 0x0a; //linux line ending
+ } else {
+ options.newLineCharacter = options.newLineCharacter.charCodeAt(0);
+ }
+
+ if (typeof file === 'number') {
+ this.fd = file;
+ } else {
+ this.fd = fs.openSync(file, 'r');
+ }
+
+ this.options = options;
+ this.newLineCharacter = options.newLineCharacter;
+ this.reset();
+ }
+
+ _createClass(LineByLine, [{
+ key: "_searchInBuffer",
+ value: function _searchInBuffer(buffer, hexNeedle) {
+ var found = -1;
+
+ for (var i = 0; i <= buffer.length; i++) {
+ var b_byte = buffer[i];
+
+ if (b_byte === hexNeedle) {
+ found = i;
+ break;
+ }
+ }
+
+ return found;
+ }
+ }, {
+ key: "reset",
+ value: function reset() {
+ this.eofReached = false;
+ this.linesCache = [];
+ this.fdPosition = 0;
+ }
+ }, {
+ key: "close",
+ value: function close() {
+ fs.closeSync(this.fd);
+ this.fd = null;
+ }
+ }, {
+ key: "_extractLines",
+ value: function _extractLines(buffer) {
+ var line;
+ var lines = [];
+ var bufferPosition = 0;
+ var lastNewLineBufferPosition = 0;
+
+ while (true) {
+ var bufferPositionValue = buffer[bufferPosition++];
+
+ if (bufferPositionValue === this.newLineCharacter) {
+ line = buffer.slice(lastNewLineBufferPosition, bufferPosition);
+ lines.push(line);
+ lastNewLineBufferPosition = bufferPosition;
+ } else if (!bufferPositionValue) {
+ break;
+ }
+ }
+
+ var leftovers = buffer.slice(lastNewLineBufferPosition, bufferPosition);
+
+ if (leftovers.length) {
+ lines.push(leftovers);
+ }
+
+ return lines;
+ }
+ }, {
+ key: "_readChunk",
+ value: function _readChunk(lineLeftovers) {
+ var totalBytesRead = 0;
+ var bytesRead;
+ var buffers = [];
+
+ do {
+ var readBuffer = new Buffer(this.options.readChunk);
+ bytesRead = fs.readSync(this.fd, readBuffer, 0, this.options.readChunk, this.fdPosition);
+ totalBytesRead = totalBytesRead + bytesRead;
+ this.fdPosition = this.fdPosition + bytesRead;
+ buffers.push(readBuffer);
+ } while (bytesRead && this._searchInBuffer(buffers[buffers.length - 1], this.options.newLineCharacter) === -1);
+
+ var bufferData = Buffer.concat(buffers);
+
+ if (bytesRead < this.options.readChunk) {
+ this.eofReached = true;
+ bufferData = bufferData.slice(0, totalBytesRead);
+ }
+
+ if (totalBytesRead) {
+ this.linesCache = this._extractLines(bufferData);
+
+ if (lineLeftovers) {
+ this.linesCache[0] = Buffer.concat([lineLeftovers, this.linesCache[0]]);
+ }
+ }
+
+ return totalBytesRead;
+ }
+ }, {
+ key: "next",
+ value: function next() {
+ if (!this.fd) return false;
+ var line = false;
+
+ if (this.eofReached && this.linesCache.length === 0) {
+ return line;
+ }
+
+ var bytesRead;
+
+ if (!this.linesCache.length) {
+ bytesRead = this._readChunk();
+ }
+
+ if (this.linesCache.length) {
+ line = this.linesCache.shift();
+ var lastLineCharacter = line[line.length - 1];
+
+ if (lastLineCharacter !== 0x0a) {
+ bytesRead = this._readChunk(line);
+
+ if (bytesRead) {
+ line = this.linesCache.shift();
+ }
+ }
+ }
+
+ if (this.eofReached && this.linesCache.length === 0) {
+ this.close();
+ }
+
+ if (line && line[line.length - 1] === this.newLineCharacter) {
+ line = line.slice(0, line.length - 1);
+ }
+
+ return line;
+ }
+ }]);
+
+ return LineByLine;
+ }();
+
+ var readlines = LineByLine;
+
+ var ConfigError =
+ /*#__PURE__*/
+ function (_Error) {
+ _inherits(ConfigError, _Error);
+
+ function ConfigError() {
+ _classCallCheck(this, ConfigError);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(ConfigError).apply(this, arguments));
+ }
+
+ return ConfigError;
+ }(_wrapNativeSuper(Error));
+
+ var DebugError =
+ /*#__PURE__*/
+ function (_Error2) {
+ _inherits(DebugError, _Error2);
+
+ function DebugError() {
+ _classCallCheck(this, DebugError);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(DebugError).apply(this, arguments));
+ }
+
+ return DebugError;
+ }(_wrapNativeSuper(Error));
+
+ var UndefinedParserError =
+ /*#__PURE__*/
+ function (_Error3) {
+ _inherits(UndefinedParserError, _Error3);
+
+ function UndefinedParserError() {
+ _classCallCheck(this, UndefinedParserError);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(UndefinedParserError).apply(this, arguments));
+ }
+
+ return UndefinedParserError;
+ }(_wrapNativeSuper(Error));
+
+ var errors = {
+ ConfigError: ConfigError,
+ DebugError: DebugError,
+ UndefinedParserError: UndefinedParserError
+ };
+
+ // based off https://github.com/defunctzombie/node-process/blob/master/browser.js
+
+ function defaultSetTimout() {
+ throw new Error('setTimeout has not been defined');
+ }
+
+ function defaultClearTimeout() {
+ throw new Error('clearTimeout has not been defined');
+ }
+
+ var cachedSetTimeout = defaultSetTimout;
+ var cachedClearTimeout = defaultClearTimeout;
+
+ if (typeof global$1.setTimeout === 'function') {
+ cachedSetTimeout = setTimeout;
+ }
+
+ if (typeof global$1.clearTimeout === 'function') {
+ cachedClearTimeout = clearTimeout;
+ }
+
+ function runTimeout(fun) {
+ if (cachedSetTimeout === setTimeout) {
+ //normal enviroments in sane situations
+ return setTimeout(fun, 0);
+ } // if setTimeout wasn't available but was latter defined
+
+
+ if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
+ cachedSetTimeout = setTimeout;
+ return setTimeout(fun, 0);
+ }
+
+ try {
+ // when when somebody has screwed with setTimeout but no I.E. maddness
+ return cachedSetTimeout(fun, 0);
+ } catch (e) {
+ try {
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+ return cachedSetTimeout.call(null, fun, 0);
+ } catch (e) {
+ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
+ return cachedSetTimeout.call(this, fun, 0);
+ }
+ }
+ }
+
+ function runClearTimeout(marker) {
+ if (cachedClearTimeout === clearTimeout) {
+ //normal enviroments in sane situations
+ return clearTimeout(marker);
+ } // if clearTimeout wasn't available but was latter defined
+
+
+ if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
+ cachedClearTimeout = clearTimeout;
+ return clearTimeout(marker);
+ }
+
+ try {
+ // when when somebody has screwed with setTimeout but no I.E. maddness
+ return cachedClearTimeout(marker);
+ } catch (e) {
+ try {
+ // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
+ return cachedClearTimeout.call(null, marker);
+ } catch (e) {
+ // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
+ // Some versions of I.E. have different rules for clearTimeout vs setTimeout
+ return cachedClearTimeout.call(this, marker);
+ }
+ }
+ }
+
+ var queue = [];
+ var draining = false;
+ var currentQueue;
+ var queueIndex = -1;
+
+ function cleanUpNextTick() {
+ if (!draining || !currentQueue) {
+ return;
+ }
+
+ draining = false;
+
+ if (currentQueue.length) {
+ queue = currentQueue.concat(queue);
+ } else {
+ queueIndex = -1;
+ }
+
+ if (queue.length) {
+ drainQueue();
+ }
+ }
+
+ function drainQueue() {
+ if (draining) {
+ return;
+ }
+
+ var timeout = runTimeout(cleanUpNextTick);
+ draining = true;
+ var len = queue.length;
+
+ while (len) {
+ currentQueue = queue;
+ queue = [];
+
+ while (++queueIndex < len) {
+ if (currentQueue) {
+ currentQueue[queueIndex].run();
+ }
+ }
+
+ queueIndex = -1;
+ len = queue.length;
+ }
+
+ currentQueue = null;
+ draining = false;
+ runClearTimeout(timeout);
+ }
+
+ function nextTick(fun) {
+ var args = new Array(arguments.length - 1);
+
+ if (arguments.length > 1) {
+ for (var i = 1; i < arguments.length; i++) {
+ args[i - 1] = arguments[i];
+ }
+ }
+
+ queue.push(new Item(fun, args));
+
+ if (queue.length === 1 && !draining) {
+ runTimeout(drainQueue);
+ }
+ } // v8 likes predictible objects
+
+ function Item(fun, array) {
+ this.fun = fun;
+ this.array = array;
+ }
+
+ Item.prototype.run = function () {
+ this.fun.apply(null, this.array);
+ };
+
+ var title = 'browser';
+ var platform = 'browser';
+ var browser = true;
+ var env = {};
+ var argv = [];
+ var version$1 = ''; // empty string to avoid regexp issues
+
+ var versions = {};
+ var release = {};
+ var config = {};
+
+ function noop() {}
+
+ var on = noop;
+ var addListener = noop;
+ var once = noop;
+ var off = noop;
+ var removeListener = noop;
+ var removeAllListeners = noop;
+ var emit = noop;
+ function binding(name) {
+ throw new Error('process.binding is not supported');
+ }
+ function cwd() {
+ return '/';
+ }
+ function chdir(dir) {
+ throw new Error('process.chdir is not supported');
+ }
+ function umask() {
+ return 0;
+ } // from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js
+
+ var performance = global$1.performance || {};
+
+ var performanceNow = performance.now || performance.mozNow || performance.msNow || performance.oNow || performance.webkitNow || function () {
+ return new Date().getTime();
+ }; // generate timestamp or delta
+ // see http://nodejs.org/api/process.html#process_process_hrtime
+
+
+ function hrtime(previousTimestamp) {
+ var clocktime = performanceNow.call(performance) * 1e-3;
+ var seconds = Math.floor(clocktime);
+ var nanoseconds = Math.floor(clocktime % 1 * 1e9);
+
+ if (previousTimestamp) {
+ seconds = seconds - previousTimestamp[0];
+ nanoseconds = nanoseconds - previousTimestamp[1];
+
+ if (nanoseconds < 0) {
+ seconds--;
+ nanoseconds += 1e9;
+ }
+ }
+
+ return [seconds, nanoseconds];
+ }
+ var startTime = new Date();
+ function uptime() {
+ var currentTime = new Date();
+ var dif = currentTime - startTime;
+ return dif / 1000;
+ }
+ var process = {
+ nextTick: nextTick,
+ title: title,
+ browser: browser,
+ env: env,
+ argv: argv,
+ version: version$1,
+ versions: versions,
+ on: on,
+ addListener: addListener,
+ once: once,
+ off: off,
+ removeListener: removeListener,
+ removeAllListeners: removeAllListeners,
+ emit: emit,
+ binding: binding,
+ cwd: cwd,
+ chdir: chdir,
+ umask: umask,
+ hrtime: hrtime,
+ platform: platform,
+ release: release,
+ config: config,
+ uptime: uptime
+ };
+
+ var semver = createCommonjsModule(function (module, exports) {
+ exports = module.exports = SemVer;
+ var debug;
+ /* istanbul ignore next */
+
+ if (_typeof(process) === 'object' && process.env && process.env.NODE_DEBUG && /\bsemver\b/i.test(process.env.NODE_DEBUG)) {
+ debug = function debug() {
+ var args = Array.prototype.slice.call(arguments, 0);
+ args.unshift('SEMVER');
+ console.log.apply(console, args);
+ };
+ } else {
+ debug = function debug() {};
+ } // Note: this is the semver.org version of the spec that it implements
+ // Not necessarily the package version of this code.
+
+
+ exports.SEMVER_SPEC_VERSION = '2.0.0';
+ var MAX_LENGTH = 256;
+ var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||
+ /* istanbul ignore next */
+ 9007199254740991; // Max safe segment length for coercion.
+
+ var MAX_SAFE_COMPONENT_LENGTH = 16; // The actual regexps go on exports.re
+
+ var re = exports.re = [];
+ var src = exports.src = [];
+ var t = exports.tokens = {};
+ var R = 0;
+
+ function tok(n) {
+ t[n] = R++;
+ } // The following Regular Expressions can be used for tokenizing,
+ // validating, and parsing SemVer version strings.
+ // ## Numeric Identifier
+ // A single `0`, or a non-zero digit followed by zero or more digits.
+
+
+ tok('NUMERICIDENTIFIER');
+ src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*';
+ tok('NUMERICIDENTIFIERLOOSE');
+ src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+'; // ## Non-numeric Identifier
+ // Zero or more digits, followed by a letter or hyphen, and then zero or
+ // more letters, digits, or hyphens.
+
+ tok('NONNUMERICIDENTIFIER');
+ src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'; // ## Main Version
+ // Three dot-separated numeric identifiers.
+
+ tok('MAINVERSION');
+ src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')';
+ tok('MAINVERSIONLOOSE');
+ src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'; // ## Pre-release Version Identifier
+ // A numeric identifier, or a non-numeric identifier.
+
+ tok('PRERELEASEIDENTIFIER');
+ src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + '|' + src[t.NONNUMERICIDENTIFIER] + ')';
+ tok('PRERELEASEIDENTIFIERLOOSE');
+ src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + '|' + src[t.NONNUMERICIDENTIFIER] + ')'; // ## Pre-release Version
+ // Hyphen, followed by one or more dot-separated pre-release version
+ // identifiers.
+
+ tok('PRERELEASE');
+ src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))';
+ tok('PRERELEASELOOSE');
+ src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'; // ## Build Metadata Identifier
+ // Any combination of digits, letters, or hyphens.
+
+ tok('BUILDIDENTIFIER');
+ src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+'; // ## Build Metadata
+ // Plus sign, followed by one or more period-separated build metadata
+ // identifiers.
+
+ tok('BUILD');
+ src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))'; // ## Full Version String
+ // A main version, followed optionally by a pre-release version and
+ // build metadata.
+ // Note that the only major, minor, patch, and pre-release sections of
+ // the version string are capturing groups. The build metadata is not a
+ // capturing group, because it should not ever be used in version
+ // comparison.
+
+ tok('FULL');
+ tok('FULLPLAIN');
+ src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + src[t.PRERELEASE] + '?' + src[t.BUILD] + '?';
+ src[t.FULL] = '^' + src[t.FULLPLAIN] + '$'; // like full, but allows v1.2.3 and =1.2.3, which people do sometimes.
+ // also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty
+ // common in the npm registry.
+
+ tok('LOOSEPLAIN');
+ src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + src[t.PRERELEASELOOSE] + '?' + src[t.BUILD] + '?';
+ tok('LOOSE');
+ src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$';
+ tok('GTLT');
+ src[t.GTLT] = '((?:<|>)?=?)'; // Something like "2.*" or "1.2.x".
+ // Note that "x.x" is a valid xRange identifer, meaning "any version"
+ // Only the first item is strictly required.
+
+ tok('XRANGEIDENTIFIERLOOSE');
+ src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*';
+ tok('XRANGEIDENTIFIER');
+ src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*';
+ tok('XRANGEPLAIN');
+ src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:' + src[t.PRERELEASE] + ')?' + src[t.BUILD] + '?' + ')?)?';
+ tok('XRANGEPLAINLOOSE');
+ src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:' + src[t.PRERELEASELOOSE] + ')?' + src[t.BUILD] + '?' + ')?)?';
+ tok('XRANGE');
+ src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$';
+ tok('XRANGELOOSE');
+ src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$'; // Coercion.
+ // Extract anything that could conceivably be a part of a valid semver
+
+ tok('COERCE');
+ src[t.COERCE] = '(^|[^\\d])' + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:$|[^\\d])';
+ tok('COERCERTL');
+ re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g'); // Tilde ranges.
+ // Meaning is "reasonably at or greater than"
+
+ tok('LONETILDE');
+ src[t.LONETILDE] = '(?:~>?)';
+ tok('TILDETRIM');
+ src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+';
+ re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g');
+ var tildeTrimReplace = '$1~';
+ tok('TILDE');
+ src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$';
+ tok('TILDELOOSE');
+ src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'; // Caret ranges.
+ // Meaning is "at least and backwards compatible with"
+
+ tok('LONECARET');
+ src[t.LONECARET] = '(?:\\^)';
+ tok('CARETTRIM');
+ src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+';
+ re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g');
+ var caretTrimReplace = '$1^';
+ tok('CARET');
+ src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$';
+ tok('CARETLOOSE');
+ src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'; // A simple gt/lt/eq thing, or just "" to indicate "any version"
+
+ tok('COMPARATORLOOSE');
+ src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$';
+ tok('COMPARATOR');
+ src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$'; // An expression to strip any whitespace between the gtlt and the thing
+ // it modifies, so that `> 1.2.3` ==> `>1.2.3`
+
+ tok('COMPARATORTRIM');
+ src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'; // this one has to use the /g flag
+
+ re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g');
+ var comparatorTrimReplace = '$1$2$3'; // Something like `1.2.3 - 1.2.4`
+ // Note that these all use the loose form, because they'll be
+ // checked against either the strict or loose comparator form
+ // later.
+
+ tok('HYPHENRANGE');
+ src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAIN] + ')' + '\\s*$';
+ tok('HYPHENRANGELOOSE');
+ src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s*$'; // Star ranges basically just allow anything at all.
+
+ tok('STAR');
+ src[t.STAR] = '(<|>)?=?\\s*\\*'; // Compile to actual regexp objects.
+ // All are flag-free, unless they were created above with a flag.
+
+ for (var i = 0; i < R; i++) {
+ debug(i, src[i]);
+
+ if (!re[i]) {
+ re[i] = new RegExp(src[i]);
+ }
+ }
+
+ exports.parse = parse;
+
+ function parse(version, options) {
+ if (!options || _typeof(options) !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ if (version instanceof SemVer) {
+ return version;
+ }
+
+ if (typeof version !== 'string') {
+ return null;
+ }
+
+ if (version.length > MAX_LENGTH) {
+ return null;
+ }
+
+ var r = options.loose ? re[t.LOOSE] : re[t.FULL];
+
+ if (!r.test(version)) {
+ return null;
+ }
+
+ try {
+ return new SemVer(version, options);
+ } catch (er) {
+ return null;
+ }
+ }
+
+ exports.valid = valid;
+
+ function valid(version, options) {
+ var v = parse(version, options);
+ return v ? v.version : null;
+ }
+
+ exports.clean = clean;
+
+ function clean(version, options) {
+ var s = parse(version.trim().replace(/^[=v]+/, ''), options);
+ return s ? s.version : null;
+ }
+
+ exports.SemVer = SemVer;
+
+ function SemVer(version, options) {
+ if (!options || _typeof(options) !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ if (version instanceof SemVer) {
+ if (version.loose === options.loose) {
+ return version;
+ } else {
+ version = version.version;
+ }
+ } else if (typeof version !== 'string') {
+ throw new TypeError('Invalid Version: ' + version);
+ }
+
+ if (version.length > MAX_LENGTH) {
+ throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters');
+ }
+
+ if (!(this instanceof SemVer)) {
+ return new SemVer(version, options);
+ }
+
+ debug('SemVer', version, options);
+ this.options = options;
+ this.loose = !!options.loose;
+ var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);
+
+ if (!m) {
+ throw new TypeError('Invalid Version: ' + version);
+ }
+
+ this.raw = version; // these are actually numbers
+
+ this.major = +m[1];
+ this.minor = +m[2];
+ this.patch = +m[3];
+
+ if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
+ throw new TypeError('Invalid major version');
+ }
+
+ if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
+ throw new TypeError('Invalid minor version');
+ }
+
+ if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
+ throw new TypeError('Invalid patch version');
+ } // numberify any prerelease numeric ids
+
+
+ if (!m[4]) {
+ this.prerelease = [];
+ } else {
+ this.prerelease = m[4].split('.').map(function (id) {
+ if (/^[0-9]+$/.test(id)) {
+ var num = +id;
+
+ if (num >= 0 && num < MAX_SAFE_INTEGER) {
+ return num;
+ }
+ }
+
+ return id;
+ });
+ }
+
+ this.build = m[5] ? m[5].split('.') : [];
+ this.format();
+ }
+
+ SemVer.prototype.format = function () {
+ this.version = this.major + '.' + this.minor + '.' + this.patch;
+
+ if (this.prerelease.length) {
+ this.version += '-' + this.prerelease.join('.');
+ }
+
+ return this.version;
+ };
+
+ SemVer.prototype.toString = function () {
+ return this.version;
+ };
+
+ SemVer.prototype.compare = function (other) {
+ debug('SemVer.compare', this.version, this.options, other);
+
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ }
+
+ return this.compareMain(other) || this.comparePre(other);
+ };
+
+ SemVer.prototype.compareMain = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ }
+
+ return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
+ };
+
+ SemVer.prototype.comparePre = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ } // NOT having a prerelease is > having one
+
+
+ if (this.prerelease.length && !other.prerelease.length) {
+ return -1;
+ } else if (!this.prerelease.length && other.prerelease.length) {
+ return 1;
+ } else if (!this.prerelease.length && !other.prerelease.length) {
+ return 0;
+ }
+
+ var i = 0;
+
+ do {
+ var a = this.prerelease[i];
+ var b = other.prerelease[i];
+ debug('prerelease compare', i, a, b);
+
+ if (a === undefined && b === undefined) {
+ return 0;
+ } else if (b === undefined) {
+ return 1;
+ } else if (a === undefined) {
+ return -1;
+ } else if (a === b) {
+ continue;
+ } else {
+ return compareIdentifiers(a, b);
+ }
+ } while (++i);
+ };
+
+ SemVer.prototype.compareBuild = function (other) {
+ if (!(other instanceof SemVer)) {
+ other = new SemVer(other, this.options);
+ }
+
+ var i = 0;
+
+ do {
+ var a = this.build[i];
+ var b = other.build[i];
+ debug('prerelease compare', i, a, b);
+
+ if (a === undefined && b === undefined) {
+ return 0;
+ } else if (b === undefined) {
+ return 1;
+ } else if (a === undefined) {
+ return -1;
+ } else if (a === b) {
+ continue;
+ } else {
+ return compareIdentifiers(a, b);
+ }
+ } while (++i);
+ }; // preminor will bump the version up to the next minor release, and immediately
+ // down to pre-release. premajor and prepatch work the same way.
+
+
+ SemVer.prototype.inc = function (release, identifier) {
+ switch (release) {
+ case 'premajor':
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor = 0;
+ this.major++;
+ this.inc('pre', identifier);
+ break;
+
+ case 'preminor':
+ this.prerelease.length = 0;
+ this.patch = 0;
+ this.minor++;
+ this.inc('pre', identifier);
+ break;
+
+ case 'prepatch':
+ // If this is already a prerelease, it will bump to the next version
+ // drop any prereleases that might already exist, since they are not
+ // relevant at this point.
+ this.prerelease.length = 0;
+ this.inc('patch', identifier);
+ this.inc('pre', identifier);
+ break;
+ // If the input is a non-prerelease version, this acts the same as
+ // prepatch.
+
+ case 'prerelease':
+ if (this.prerelease.length === 0) {
+ this.inc('patch', identifier);
+ }
+
+ this.inc('pre', identifier);
+ break;
+
+ case 'major':
+ // If this is a pre-major version, bump up to the same major version.
+ // Otherwise increment major.
+ // 1.0.0-5 bumps to 1.0.0
+ // 1.1.0 bumps to 2.0.0
+ if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
+ this.major++;
+ }
+
+ this.minor = 0;
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+
+ case 'minor':
+ // If this is a pre-minor version, bump up to the same minor version.
+ // Otherwise increment minor.
+ // 1.2.0-5 bumps to 1.2.0
+ // 1.2.1 bumps to 1.3.0
+ if (this.patch !== 0 || this.prerelease.length === 0) {
+ this.minor++;
+ }
+
+ this.patch = 0;
+ this.prerelease = [];
+ break;
+
+ case 'patch':
+ // If this is not a pre-release version, it will increment the patch.
+ // If it is a pre-release it will bump up to the same patch version.
+ // 1.2.0-5 patches to 1.2.0
+ // 1.2.0 patches to 1.2.1
+ if (this.prerelease.length === 0) {
+ this.patch++;
+ }
+
+ this.prerelease = [];
+ break;
+ // This probably shouldn't be used publicly.
+ // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction.
+
+ case 'pre':
+ if (this.prerelease.length === 0) {
+ this.prerelease = [0];
+ } else {
+ var i = this.prerelease.length;
+
+ while (--i >= 0) {
+ if (typeof this.prerelease[i] === 'number') {
+ this.prerelease[i]++;
+ i = -2;
+ }
+ }
+
+ if (i === -1) {
+ // didn't increment anything
+ this.prerelease.push(0);
+ }
+ }
+
+ if (identifier) {
+ // 1.2.0-beta.1 bumps to 1.2.0-beta.2,
+ // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0
+ if (this.prerelease[0] === identifier) {
+ if (isNaN(this.prerelease[1])) {
+ this.prerelease = [identifier, 0];
+ }
+ } else {
+ this.prerelease = [identifier, 0];
+ }
+ }
+
+ break;
+
+ default:
+ throw new Error('invalid increment argument: ' + release);
+ }
+
+ this.format();
+ this.raw = this.version;
+ return this;
+ };
+
+ exports.inc = inc;
+
+ function inc(version, release, loose, identifier) {
+ if (typeof loose === 'string') {
+ identifier = loose;
+ loose = undefined;
+ }
+
+ try {
+ return new SemVer(version, loose).inc(release, identifier).version;
+ } catch (er) {
+ return null;
+ }
+ }
+
+ exports.diff = diff;
+
+ function diff(version1, version2) {
+ if (eq(version1, version2)) {
+ return null;
+ } else {
+ var v1 = parse(version1);
+ var v2 = parse(version2);
+ var prefix = '';
+
+ if (v1.prerelease.length || v2.prerelease.length) {
+ prefix = 'pre';
+ var defaultResult = 'prerelease';
+ }
+
+ for (var key in v1) {
+ if (key === 'major' || key === 'minor' || key === 'patch') {
+ if (v1[key] !== v2[key]) {
+ return prefix + key;
+ }
+ }
+ }
+
+ return defaultResult; // may be undefined
+ }
+ }
+
+ exports.compareIdentifiers = compareIdentifiers;
+ var numeric = /^[0-9]+$/;
+
+ function compareIdentifiers(a, b) {
+ var anum = numeric.test(a);
+ var bnum = numeric.test(b);
+
+ if (anum && bnum) {
+ a = +a;
+ b = +b;
+ }
+
+ return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
+ }
+
+ exports.rcompareIdentifiers = rcompareIdentifiers;
+
+ function rcompareIdentifiers(a, b) {
+ return compareIdentifiers(b, a);
+ }
+
+ exports.major = major;
+
+ function major(a, loose) {
+ return new SemVer(a, loose).major;
+ }
+
+ exports.minor = minor;
+
+ function minor(a, loose) {
+ return new SemVer(a, loose).minor;
+ }
+
+ exports.patch = patch;
+
+ function patch(a, loose) {
+ return new SemVer(a, loose).patch;
+ }
+
+ exports.compare = compare;
+
+ function compare(a, b, loose) {
+ return new SemVer(a, loose).compare(new SemVer(b, loose));
+ }
+
+ exports.compareLoose = compareLoose;
+
+ function compareLoose(a, b) {
+ return compare(a, b, true);
+ }
+
+ exports.compareBuild = compareBuild;
+
+ function compareBuild(a, b, loose) {
+ var versionA = new SemVer(a, loose);
+ var versionB = new SemVer(b, loose);
+ return versionA.compare(versionB) || versionA.compareBuild(versionB);
+ }
+
+ exports.rcompare = rcompare;
+
+ function rcompare(a, b, loose) {
+ return compare(b, a, loose);
+ }
+
+ exports.sort = sort;
+
+ function sort(list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compareBuild(a, b, loose);
+ });
+ }
+
+ exports.rsort = rsort;
+
+ function rsort(list, loose) {
+ return list.sort(function (a, b) {
+ return exports.compareBuild(b, a, loose);
+ });
+ }
+
+ exports.gt = gt;
+
+ function gt(a, b, loose) {
+ return compare(a, b, loose) > 0;
+ }
+
+ exports.lt = lt;
+
+ function lt(a, b, loose) {
+ return compare(a, b, loose) < 0;
+ }
+
+ exports.eq = eq;
+
+ function eq(a, b, loose) {
+ return compare(a, b, loose) === 0;
+ }
+
+ exports.neq = neq;
+
+ function neq(a, b, loose) {
+ return compare(a, b, loose) !== 0;
+ }
+
+ exports.gte = gte;
+
+ function gte(a, b, loose) {
+ return compare(a, b, loose) >= 0;
+ }
+
+ exports.lte = lte;
+
+ function lte(a, b, loose) {
+ return compare(a, b, loose) <= 0;
+ }
+
+ exports.cmp = cmp;
+
+ function cmp(a, op, b, loose) {
+ switch (op) {
+ case '===':
+ if (_typeof(a) === 'object') a = a.version;
+ if (_typeof(b) === 'object') b = b.version;
+ return a === b;
+
+ case '!==':
+ if (_typeof(a) === 'object') a = a.version;
+ if (_typeof(b) === 'object') b = b.version;
+ return a !== b;
+
+ case '':
+ case '=':
+ case '==':
+ return eq(a, b, loose);
+
+ case '!=':
+ return neq(a, b, loose);
+
+ case '>':
+ return gt(a, b, loose);
+
+ case '>=':
+ return gte(a, b, loose);
+
+ case '<':
+ return lt(a, b, loose);
+
+ case '<=':
+ return lte(a, b, loose);
+
+ default:
+ throw new TypeError('Invalid operator: ' + op);
+ }
+ }
+
+ exports.Comparator = Comparator;
+
+ function Comparator(comp, options) {
+ if (!options || _typeof(options) !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ if (comp instanceof Comparator) {
+ if (comp.loose === !!options.loose) {
+ return comp;
+ } else {
+ comp = comp.value;
+ }
+ }
+
+ if (!(this instanceof Comparator)) {
+ return new Comparator(comp, options);
+ }
+
+ debug('comparator', comp, options);
+ this.options = options;
+ this.loose = !!options.loose;
+ this.parse(comp);
+
+ if (this.semver === ANY) {
+ this.value = '';
+ } else {
+ this.value = this.operator + this.semver.version;
+ }
+
+ debug('comp', this);
+ }
+
+ var ANY = {};
+
+ Comparator.prototype.parse = function (comp) {
+ var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
+ var m = comp.match(r);
+
+ if (!m) {
+ throw new TypeError('Invalid comparator: ' + comp);
+ }
+
+ this.operator = m[1] !== undefined ? m[1] : '';
+
+ if (this.operator === '=') {
+ this.operator = '';
+ } // if it literally is just '>' or '' then allow anything.
+
+
+ if (!m[2]) {
+ this.semver = ANY;
+ } else {
+ this.semver = new SemVer(m[2], this.options.loose);
+ }
+ };
+
+ Comparator.prototype.toString = function () {
+ return this.value;
+ };
+
+ Comparator.prototype.test = function (version) {
+ debug('Comparator.test', version, this.options.loose);
+
+ if (this.semver === ANY || version === ANY) {
+ return true;
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options);
+ } catch (er) {
+ return false;
+ }
+ }
+
+ return cmp(version, this.operator, this.semver, this.options);
+ };
+
+ Comparator.prototype.intersects = function (comp, options) {
+ if (!(comp instanceof Comparator)) {
+ throw new TypeError('a Comparator is required');
+ }
+
+ if (!options || _typeof(options) !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ var rangeTmp;
+
+ if (this.operator === '') {
+ if (this.value === '') {
+ return true;
+ }
+
+ rangeTmp = new Range(comp.value, options);
+ return satisfies(this.value, rangeTmp, options);
+ } else if (comp.operator === '') {
+ if (comp.value === '') {
+ return true;
+ }
+
+ rangeTmp = new Range(this.value, options);
+ return satisfies(comp.semver, rangeTmp, options);
+ }
+
+ var sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>');
+ var sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<');
+ var sameSemVer = this.semver.version === comp.semver.version;
+ var differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<=');
+ var oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<');
+ var oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>');
+ return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
+ };
+
+ exports.Range = Range;
+
+ function Range(range, options) {
+ if (!options || _typeof(options) !== 'object') {
+ options = {
+ loose: !!options,
+ includePrerelease: false
+ };
+ }
+
+ if (range instanceof Range) {
+ if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
+ return range;
+ } else {
+ return new Range(range.raw, options);
+ }
+ }
+
+ if (range instanceof Comparator) {
+ return new Range(range.value, options);
+ }
+
+ if (!(this instanceof Range)) {
+ return new Range(range, options);
+ }
+
+ this.options = options;
+ this.loose = !!options.loose;
+ this.includePrerelease = !!options.includePrerelease; // First, split based on boolean or ||
+
+ this.raw = range;
+ this.set = range.split(/\s*\|\|\s*/).map(function (range) {
+ return this.parseRange(range.trim());
+ }, this).filter(function (c) {
+ // throw out any that are not relevant for whatever reason
+ return c.length;
+ });
+
+ if (!this.set.length) {
+ throw new TypeError('Invalid SemVer Range: ' + range);
+ }
+
+ this.format();
+ }
+
+ Range.prototype.format = function () {
+ this.range = this.set.map(function (comps) {
+ return comps.join(' ').trim();
+ }).join('||').trim();
+ return this.range;
+ };
+
+ Range.prototype.toString = function () {
+ return this.range;
+ };
+
+ Range.prototype.parseRange = function (range) {
+ var loose = this.options.loose;
+ range = range.trim(); // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`
+
+ var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
+ range = range.replace(hr, hyphenReplace);
+ debug('hyphen replace', range); // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`
+
+ range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
+ debug('comparator trim', range, re[t.COMPARATORTRIM]); // `~ 1.2.3` => `~1.2.3`
+
+ range = range.replace(re[t.TILDETRIM], tildeTrimReplace); // `^ 1.2.3` => `^1.2.3`
+
+ range = range.replace(re[t.CARETTRIM], caretTrimReplace); // normalize spaces
+
+ range = range.split(/\s+/).join(' '); // At this point, the range is completely trimmed and
+ // ready to be split into comparators.
+
+ var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
+ var set = range.split(' ').map(function (comp) {
+ return parseComparator(comp, this.options);
+ }, this).join(' ').split(/\s+/);
+
+ if (this.options.loose) {
+ // in loose mode, throw out any that are not valid comparators
+ set = set.filter(function (comp) {
+ return !!comp.match(compRe);
+ });
+ }
+
+ set = set.map(function (comp) {
+ return new Comparator(comp, this.options);
+ }, this);
+ return set;
+ };
+
+ Range.prototype.intersects = function (range, options) {
+ if (!(range instanceof Range)) {
+ throw new TypeError('a Range is required');
+ }
+
+ return this.set.some(function (thisComparators) {
+ return isSatisfiable(thisComparators, options) && range.set.some(function (rangeComparators) {
+ return isSatisfiable(rangeComparators, options) && thisComparators.every(function (thisComparator) {
+ return rangeComparators.every(function (rangeComparator) {
+ return thisComparator.intersects(rangeComparator, options);
+ });
+ });
+ });
+ });
+ }; // take a set of comparators and determine whether there
+ // exists a version which can satisfy it
+
+
+ function isSatisfiable(comparators, options) {
+ var result = true;
+ var remainingComparators = comparators.slice();
+ var testComparator = remainingComparators.pop();
+
+ while (result && remainingComparators.length) {
+ result = remainingComparators.every(function (otherComparator) {
+ return testComparator.intersects(otherComparator, options);
+ });
+ testComparator = remainingComparators.pop();
+ }
+
+ return result;
+ } // Mostly just for testing and legacy API reasons
+
+
+ exports.toComparators = toComparators;
+
+ function toComparators(range, options) {
+ return new Range(range, options).set.map(function (comp) {
+ return comp.map(function (c) {
+ return c.value;
+ }).join(' ').trim().split(' ');
+ });
+ } // comprised of xranges, tildes, stars, and gtlt's at this point.
+ // already replaced the hyphen ranges
+ // turn into a set of JUST comparators.
+
+
+ function parseComparator(comp, options) {
+ debug('comp', comp, options);
+ comp = replaceCarets(comp, options);
+ debug('caret', comp);
+ comp = replaceTildes(comp, options);
+ debug('tildes', comp);
+ comp = replaceXRanges(comp, options);
+ debug('xrange', comp);
+ comp = replaceStars(comp, options);
+ debug('stars', comp);
+ return comp;
+ }
+
+ function isX(id) {
+ return !id || id.toLowerCase() === 'x' || id === '*';
+ } // ~, ~> --> * (any, kinda silly)
+ // ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0
+ // ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0
+ // ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0
+ // ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0
+ // ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0
+
+
+ function replaceTildes(comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceTilde(comp, options);
+ }).join(' ');
+ }
+
+ function replaceTilde(comp, options) {
+ var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('tilde', comp, _, M, m, p, pr);
+ var ret;
+
+ if (isX(M)) {
+ ret = '';
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
+ } else if (isX(p)) {
+ // ~1.2 == >=1.2.0 <1.3.0
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
+ } else if (pr) {
+ debug('replaceTilde pr', pr);
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
+ } else {
+ // ~1.2.3 == >=1.2.3 <1.3.0
+ ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
+ }
+
+ debug('tilde return', ret);
+ return ret;
+ });
+ } // ^ --> * (any, kinda silly)
+ // ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0
+ // ^2.0, ^2.0.x --> >=2.0.0 <3.0.0
+ // ^1.2, ^1.2.x --> >=1.2.0 <2.0.0
+ // ^1.2.3 --> >=1.2.3 <2.0.0
+ // ^1.2.0 --> >=1.2.0 <2.0.0
+
+
+ function replaceCarets(comp, options) {
+ return comp.trim().split(/\s+/).map(function (comp) {
+ return replaceCaret(comp, options);
+ }).join(' ');
+ }
+
+ function replaceCaret(comp, options) {
+ debug('caret', comp, options);
+ var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
+ return comp.replace(r, function (_, M, m, p, pr) {
+ debug('caret', comp, _, M, m, p, pr);
+ var ret;
+
+ if (isX(M)) {
+ ret = '';
+ } else if (isX(m)) {
+ ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
+ } else if (isX(p)) {
+ if (M === '0') {
+ ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
+ } else {
+ ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';
+ }
+ } else if (pr) {
+ debug('replaceCaret pr', pr);
+
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + m + '.' + (+p + 1);
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + (+M + 1) + '.0.0';
+ }
+ } else {
+ debug('no pr');
+
+ if (M === '0') {
+ if (m === '0') {
+ ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + m + '.' + (+p + 1);
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
+ }
+ } else {
+ ret = '>=' + M + '.' + m + '.' + p + ' <' + (+M + 1) + '.0.0';
+ }
+ }
+
+ debug('caret return', ret);
+ return ret;
+ });
+ }
+
+ function replaceXRanges(comp, options) {
+ debug('replaceXRanges', comp, options);
+ return comp.split(/\s+/).map(function (comp) {
+ return replaceXRange(comp, options);
+ }).join(' ');
+ }
+
+ function replaceXRange(comp, options) {
+ comp = comp.trim();
+ var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
+ return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
+ debug('xRange', comp, ret, gtlt, M, m, p, pr);
+ var xM = isX(M);
+ var xm = xM || isX(m);
+ var xp = xm || isX(p);
+ var anyX = xp;
+
+ if (gtlt === '=' && anyX) {
+ gtlt = '';
+ } // if we're including prereleases in the match, then we need
+ // to fix this to -0, the lowest possible prerelease value
+
+
+ pr = options.includePrerelease ? '-0' : '';
+
+ if (xM) {
+ if (gtlt === '>' || gtlt === '<') {
+ // nothing is allowed
+ ret = '<0.0.0-0';
+ } else {
+ // nothing is forbidden
+ ret = '*';
+ }
+ } else if (gtlt && anyX) {
+ // we know patch is an x, because we have any x at all.
+ // replace X with 0
+ if (xm) {
+ m = 0;
+ }
+
+ p = 0;
+
+ if (gtlt === '>') {
+ // >1 => >=2.0.0
+ // >1.2 => >=1.3.0
+ // >1.2.3 => >= 1.2.4
+ gtlt = '>=';
+
+ if (xm) {
+ M = +M + 1;
+ m = 0;
+ p = 0;
+ } else {
+ m = +m + 1;
+ p = 0;
+ }
+ } else if (gtlt === '<=') {
+ // <=0.7.x is actually <0.8.0, since any 0.7.x should
+ // pass. Similarly, <=7.x is actually <8.0.0, etc.
+ gtlt = '<';
+
+ if (xm) {
+ M = +M + 1;
+ } else {
+ m = +m + 1;
+ }
+ }
+
+ ret = gtlt + M + '.' + m + '.' + p + pr;
+ } else if (xm) {
+ ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr;
+ } else if (xp) {
+ ret = '>=' + M + '.' + m + '.0' + pr + ' <' + M + '.' + (+m + 1) + '.0' + pr;
+ }
+
+ debug('xRange return', ret);
+ return ret;
+ });
+ } // Because * is AND-ed with everything else in the comparator,
+ // and '' means "any version", just remove the *s entirely.
+
+
+ function replaceStars(comp, options) {
+ debug('replaceStars', comp, options); // Looseness is ignored here. star is always as loose as it gets!
+
+ return comp.trim().replace(re[t.STAR], '');
+ } // This function is passed to string.replace(re[t.HYPHENRANGE])
+ // M, m, patch, prerelease, build
+ // 1.2 - 3.4.5 => >=1.2.0 <=3.4.5
+ // 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do
+ // 1.2 - 3.4 => >=1.2.0 <3.5.0
+
+
+ function hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {
+ if (isX(fM)) {
+ from = '';
+ } else if (isX(fm)) {
+ from = '>=' + fM + '.0.0';
+ } else if (isX(fp)) {
+ from = '>=' + fM + '.' + fm + '.0';
+ } else {
+ from = '>=' + from;
+ }
+
+ if (isX(tM)) {
+ to = '';
+ } else if (isX(tm)) {
+ to = '<' + (+tM + 1) + '.0.0';
+ } else if (isX(tp)) {
+ to = '<' + tM + '.' + (+tm + 1) + '.0';
+ } else if (tpr) {
+ to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;
+ } else {
+ to = '<=' + to;
+ }
+
+ return (from + ' ' + to).trim();
+ } // if ANY of the sets match ALL of its comparators, then pass
+
+
+ Range.prototype.test = function (version) {
+ if (!version) {
+ return false;
+ }
+
+ if (typeof version === 'string') {
+ try {
+ version = new SemVer(version, this.options);
+ } catch (er) {
+ return false;
+ }
+ }
+
+ for (var i = 0; i < this.set.length; i++) {
+ if (testSet(this.set[i], version, this.options)) {
+ return true;
+ }
+ }
+
+ return false;
+ };
+
+ function testSet(set, version, options) {
+ for (var i = 0; i < set.length; i++) {
+ if (!set[i].test(version)) {
+ return false;
+ }
+ }
+
+ if (version.prerelease.length && !options.includePrerelease) {
+ // Find the set of versions that are allowed to have prereleases
+ // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0
+ // That should allow `1.2.3-pr.2` to pass.
+ // However, `1.2.4-alpha.notready` should NOT be allowed,
+ // even though it's within the range set by the comparators.
+ for (i = 0; i < set.length; i++) {
+ debug(set[i].semver);
+
+ if (set[i].semver === ANY) {
+ continue;
+ }
+
+ if (set[i].semver.prerelease.length > 0) {
+ var allowed = set[i].semver;
+
+ if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {
+ return true;
+ }
+ }
+ } // Version has a -pre, but it's not one of the ones we like.
+
+
+ return false;
+ }
+
+ return true;
+ }
+
+ exports.satisfies = satisfies;
+
+ function satisfies(version, range, options) {
+ try {
+ range = new Range(range, options);
+ } catch (er) {
+ return false;
+ }
+
+ return range.test(version);
+ }
+
+ exports.maxSatisfying = maxSatisfying;
+
+ function maxSatisfying(versions, range, options) {
+ var max = null;
+ var maxSV = null;
+
+ try {
+ var rangeObj = new Range(range, options);
+ } catch (er) {
+ return null;
+ }
+
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!max || maxSV.compare(v) === -1) {
+ // compare(max, v, true)
+ max = v;
+ maxSV = new SemVer(max, options);
+ }
+ }
+ });
+ return max;
+ }
+
+ exports.minSatisfying = minSatisfying;
+
+ function minSatisfying(versions, range, options) {
+ var min = null;
+ var minSV = null;
+
+ try {
+ var rangeObj = new Range(range, options);
+ } catch (er) {
+ return null;
+ }
+
+ versions.forEach(function (v) {
+ if (rangeObj.test(v)) {
+ // satisfies(v, range, options)
+ if (!min || minSV.compare(v) === 1) {
+ // compare(min, v, true)
+ min = v;
+ minSV = new SemVer(min, options);
+ }
+ }
+ });
+ return min;
+ }
+
+ exports.minVersion = minVersion;
+
+ function minVersion(range, loose) {
+ range = new Range(range, loose);
+ var minver = new SemVer('0.0.0');
+
+ if (range.test(minver)) {
+ return minver;
+ }
+
+ minver = new SemVer('0.0.0-0');
+
+ if (range.test(minver)) {
+ return minver;
+ }
+
+ minver = null;
+
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i];
+ comparators.forEach(function (comparator) {
+ // Clone to avoid manipulating the comparator's semver object.
+ var compver = new SemVer(comparator.semver.version);
+
+ switch (comparator.operator) {
+ case '>':
+ if (compver.prerelease.length === 0) {
+ compver.patch++;
+ } else {
+ compver.prerelease.push(0);
+ }
+
+ compver.raw = compver.format();
+
+ /* fallthrough */
+
+ case '':
+ case '>=':
+ if (!minver || gt(minver, compver)) {
+ minver = compver;
+ }
+
+ break;
+
+ case '<':
+ case '<=':
+ /* Ignore maximum versions */
+ break;
+
+ /* istanbul ignore next */
+
+ default:
+ throw new Error('Unexpected operation: ' + comparator.operator);
+ }
+ });
+ }
+
+ if (minver && range.test(minver)) {
+ return minver;
+ }
+
+ return null;
+ }
+
+ exports.validRange = validRange;
+
+ function validRange(range, options) {
+ try {
+ // Return '*' instead of '' so that truthiness works.
+ // This will throw if it's invalid anyway
+ return new Range(range, options).range || '*';
+ } catch (er) {
+ return null;
+ }
+ } // Determine if version is less than all the versions possible in the range
+
+
+ exports.ltr = ltr;
+
+ function ltr(version, range, options) {
+ return outside(version, range, '<', options);
+ } // Determine if version is greater than all the versions possible in the range.
+
+
+ exports.gtr = gtr;
+
+ function gtr(version, range, options) {
+ return outside(version, range, '>', options);
+ }
+
+ exports.outside = outside;
+
+ function outside(version, range, hilo, options) {
+ version = new SemVer(version, options);
+ range = new Range(range, options);
+ var gtfn, ltefn, ltfn, comp, ecomp;
+
+ switch (hilo) {
+ case '>':
+ gtfn = gt;
+ ltefn = lte;
+ ltfn = lt;
+ comp = '>';
+ ecomp = '>=';
+ break;
+
+ case '<':
+ gtfn = lt;
+ ltefn = gte;
+ ltfn = gt;
+ comp = '<';
+ ecomp = '<=';
+ break;
+
+ default:
+ throw new TypeError('Must provide a hilo val of "<" or ">"');
+ } // If it satisifes the range it is not outside
+
+
+ if (satisfies(version, range, options)) {
+ return false;
+ } // From now on, variable terms are as if we're in "gtr" mode.
+ // but note that everything is flipped for the "ltr" function.
+
+
+ for (var i = 0; i < range.set.length; ++i) {
+ var comparators = range.set[i];
+ var high = null;
+ var low = null;
+ comparators.forEach(function (comparator) {
+ if (comparator.semver === ANY) {
+ comparator = new Comparator('>=0.0.0');
+ }
+
+ high = high || comparator;
+ low = low || comparator;
+
+ if (gtfn(comparator.semver, high.semver, options)) {
+ high = comparator;
+ } else if (ltfn(comparator.semver, low.semver, options)) {
+ low = comparator;
+ }
+ }); // If the edge version comparator has a operator then our version
+ // isn't outside it
+
+ if (high.operator === comp || high.operator === ecomp) {
+ return false;
+ } // If the lowest version comparator has an operator and our version
+ // is less than it then it isn't higher than the range
+
+
+ if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
+ return false;
+ } else if (low.operator === ecomp && ltfn(version, low.semver)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ exports.prerelease = prerelease;
+
+ function prerelease(version, options) {
+ var parsed = parse(version, options);
+ return parsed && parsed.prerelease.length ? parsed.prerelease : null;
+ }
+
+ exports.intersects = intersects;
+
+ function intersects(r1, r2, options) {
+ r1 = new Range(r1, options);
+ r2 = new Range(r2, options);
+ return r1.intersects(r2);
+ }
+
+ exports.coerce = coerce;
+
+ function coerce(version, options) {
+ if (version instanceof SemVer) {
+ return version;
+ }
+
+ if (typeof version === 'number') {
+ version = String(version);
+ }
+
+ if (typeof version !== 'string') {
+ return null;
+ }
+
+ options = options || {};
+ var match = null;
+
+ if (!options.rtl) {
+ match = version.match(re[t.COERCE]);
+ } else {
+ // Find the right-most coercible string that does not share
+ // a terminus with a more left-ward coercible string.
+ // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'
+ //
+ // Walk through the string checking with a /g regexp
+ // Manually set the index so as to pick up overlapping matches.
+ // Stop when we get a match that ends at the string end, since no
+ // coercible string can be more right-ward without the same terminus.
+ var next;
+
+ while ((next = re[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) {
+ if (!match || next.index + next[0].length !== match.index + match[0].length) {
+ match = next;
+ }
+
+ re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
+ } // leave it in a clean state
+
+
+ re[t.COERCERTL].lastIndex = -1;
+ }
+
+ if (match === null) {
+ return null;
+ }
+
+ return parse(match[2] + '.' + (match[3] || '0') + '.' + (match[4] || '0'), options);
+ }
+ });
+ var semver_1 = semver.SEMVER_SPEC_VERSION;
+ var semver_2 = semver.re;
+ var semver_3 = semver.src;
+ var semver_4 = semver.tokens;
+ var semver_5 = semver.parse;
+ var semver_6 = semver.valid;
+ var semver_7 = semver.clean;
+ var semver_8 = semver.SemVer;
+ var semver_9 = semver.inc;
+ var semver_10 = semver.diff;
+ var semver_11 = semver.compareIdentifiers;
+ var semver_12 = semver.rcompareIdentifiers;
+ var semver_13 = semver.major;
+ var semver_14 = semver.minor;
+ var semver_15 = semver.patch;
+ var semver_16 = semver.compare;
+ var semver_17 = semver.compareLoose;
+ var semver_18 = semver.compareBuild;
+ var semver_19 = semver.rcompare;
+ var semver_20 = semver.sort;
+ var semver_21 = semver.rsort;
+ var semver_22 = semver.gt;
+ var semver_23 = semver.lt;
+ var semver_24 = semver.eq;
+ var semver_25 = semver.neq;
+ var semver_26 = semver.gte;
+ var semver_27 = semver.lte;
+ var semver_28 = semver.cmp;
+ var semver_29 = semver.Comparator;
+ var semver_30 = semver.Range;
+ var semver_31 = semver.toComparators;
+ var semver_32 = semver.satisfies;
+ var semver_33 = semver.maxSatisfying;
+ var semver_34 = semver.minSatisfying;
+ var semver_35 = semver.minVersion;
+ var semver_36 = semver.validRange;
+ var semver_37 = semver.ltr;
+ var semver_38 = semver.gtr;
+ var semver_39 = semver.outside;
+ var semver_40 = semver.prerelease;
+ var semver_41 = semver.intersects;
+ var semver_42 = semver.coerce;
+
+ var arrayify = function arrayify(object, keyName) {
+ return Object.keys(object).reduce(function (array, key) {
+ return array.concat(Object.assign(_defineProperty({}, keyName, key), object[key]));
+ }, []);
+ };
+
+ var dedent_1 = createCommonjsModule(function (module) {
+
+ function dedent(strings) {
+ var raw = void 0;
+
+ if (typeof strings === "string") {
+ // dedent can be used as a plain function
+ raw = [strings];
+ } else {
+ raw = strings.raw;
+ } // first, perform interpolation
+
+
+ var result = "";
+
+ for (var i = 0; i < raw.length; i++) {
+ result += raw[i]. // join lines when there is a suppressed newline
+ replace(/\\\n[ \t]*/g, ""). // handle escaped backticks
+ replace(/\\`/g, "`");
+
+ if (i < (arguments.length <= 1 ? 0 : arguments.length - 1)) {
+ result += arguments.length <= i + 1 ? undefined : arguments[i + 1];
+ }
+ } // now strip indentation
+
+
+ var lines = result.split("\n");
+ var mindent = null;
+ lines.forEach(function (l) {
+ var m = l.match(/^(\s+)\S+/);
+
+ if (m) {
+ var indent = m[1].length;
+
+ if (!mindent) {
+ // this is the first indented line
+ mindent = indent;
+ } else {
+ mindent = Math.min(mindent, indent);
+ }
+ }
+ });
+
+ if (mindent !== null) {
+ result = lines.map(function (l) {
+ return l[0] === " " ? l.slice(mindent) : l;
+ }).join("\n");
+ } // dedent eats leading and trailing whitespace too
+
+
+ result = result.trim(); // handle escaped newlines at the end to ensure they don't get stripped too
+
+ return result.replace(/\\n/g, "\n");
+ }
+
+ {
+ module.exports = dedent;
+ }
+ });
+
+ function _templateObject6() {
+ var data = _taggedTemplateLiteral(["\n Require either '@prettier' or '@format' to be present in the file's first docblock comment\n in order for it to be formatted.\n "]);
+
+ _templateObject6 = function _templateObject6() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _templateObject5() {
+ var data = _taggedTemplateLiteral(["\n Format code starting at a given character offset.\n The range will extend backwards to the start of the first line containing the selected statement.\n This option cannot be used with --cursor-offset.\n "]);
+
+ _templateObject5 = function _templateObject5() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _templateObject4() {
+ var data = _taggedTemplateLiteral(["\n Format code ending at a given character offset (exclusive).\n The range will extend forwards to the end of the selected statement.\n This option cannot be used with --cursor-offset.\n "]);
+
+ _templateObject4 = function _templateObject4() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _templateObject3() {
+ var data = _taggedTemplateLiteral(["\n Custom directory that contains prettier plugins in node_modules subdirectory.\n Overrides default behavior when plugins are searched relatively to the location of Prettier.\n Multiple values are accepted.\n "]);
+
+ _templateObject3 = function _templateObject3() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _templateObject2() {
+ var data = _taggedTemplateLiteral(["\n Maintain existing\n (mixed values within one file are normalised by looking at what's used after the first line)\n "]);
+
+ _templateObject2 = function _templateObject2() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _templateObject() {
+ var data = _taggedTemplateLiteral(["\n Print (to stderr) where a cursor at the given position would move to after formatting.\n This option cannot be used with --range-start and --range-end.\n "]);
+
+ _templateObject = function _templateObject() {
+ return data;
+ };
+
+ return data;
+ }
+
+ var CATEGORY_CONFIG = "Config";
+ var CATEGORY_EDITOR = "Editor";
+ var CATEGORY_FORMAT = "Format";
+ var CATEGORY_OTHER = "Other";
+ var CATEGORY_OUTPUT = "Output";
+ var CATEGORY_GLOBAL = "Global";
+ var CATEGORY_SPECIAL = "Special";
+ /**
+ * @typedef {Object} OptionInfo
+ * @property {string} [since] - available since version
+ * @property {string} category
+ * @property {'int' | 'boolean' | 'choice' | 'path'} type
+ * @property {boolean} [array] - indicate it's an array of the specified type
+ * @property {OptionValueInfo} [default]
+ * @property {OptionRangeInfo} [range] - for type int
+ * @property {string} description
+ * @property {string} [deprecated] - deprecated since version
+ * @property {OptionRedirectInfo} [redirect] - redirect deprecated option
+ * @property {(value: any) => boolean} [exception]
+ * @property {OptionChoiceInfo[]} [choices] - for type choice
+ * @property {string} [cliName]
+ * @property {string} [cliCategory]
+ * @property {string} [cliDescription]
+ *
+ * @typedef {number | boolean | string} OptionValue
+ * @typedef {OptionValue | [{ value: OptionValue[] }] | Array<{ since: string, value: OptionValue}>} OptionValueInfo
+ *
+ * @typedef {Object} OptionRedirectInfo
+ * @property {string} option
+ * @property {OptionValue} value
+ *
+ * @typedef {Object} OptionRangeInfo
+ * @property {number} start - recommended range start
+ * @property {number} end - recommended range end
+ * @property {number} step - recommended range step
+ *
+ * @typedef {Object} OptionChoiceInfo
+ * @property {boolean | string} value - boolean for the option that is originally boolean type
+ * @property {string} description
+ * @property {string} [since] - undefined if available since the first version of the option
+ * @property {string} [deprecated] - deprecated since version
+ * @property {OptionValueInfo} [redirect] - redirect deprecated value
+ */
+
+ /** @type {{ [name: string]: OptionInfo }} */
+
+ var options = {
+ cursorOffset: {
+ since: "1.4.0",
+ category: CATEGORY_SPECIAL,
+ type: "int",
+ default: -1,
+ range: {
+ start: -1,
+ end: Infinity,
+ step: 1
+ },
+ description: dedent_1(_templateObject()),
+ cliCategory: CATEGORY_EDITOR
+ },
+ endOfLine: {
+ since: "1.15.0",
+ category: CATEGORY_GLOBAL,
+ type: "choice",
+ default: "auto",
+ description: "Which end of line characters to apply.",
+ choices: [{
+ value: "auto",
+ description: dedent_1(_templateObject2())
+ }, {
+ value: "lf",
+ description: "Line Feed only (\\n), common on Linux and macOS as well as inside git repos"
+ }, {
+ value: "crlf",
+ description: "Carriage Return + Line Feed characters (\\r\\n), common on Windows"
+ }, {
+ value: "cr",
+ description: "Carriage Return character only (\\r), used very rarely"
+ }]
+ },
+ filepath: {
+ since: "1.4.0",
+ category: CATEGORY_SPECIAL,
+ type: "path",
+ description: "Specify the input filepath. This will be used to do parser inference.",
+ cliName: "stdin-filepath",
+ cliCategory: CATEGORY_OTHER,
+ cliDescription: "Path to the file to pretend that stdin comes from."
+ },
+ insertPragma: {
+ since: "1.8.0",
+ category: CATEGORY_SPECIAL,
+ type: "boolean",
+ default: false,
+ description: "Insert @format pragma into file's first docblock comment.",
+ cliCategory: CATEGORY_OTHER
+ },
+ parser: {
+ since: "0.0.10",
+ category: CATEGORY_GLOBAL,
+ type: "choice",
+ default: [{
+ since: "0.0.10",
+ value: "babylon"
+ }, {
+ since: "1.13.0",
+ value: undefined
+ }],
+ description: "Which parser to use.",
+ exception: function exception(value) {
+ return typeof value === "string" || typeof value === "function";
+ },
+ choices: [{
+ value: "flow",
+ description: "Flow"
+ }, {
+ value: "babylon",
+ description: "JavaScript",
+ deprecated: "1.16.0",
+ redirect: "babel"
+ }, {
+ value: "babel",
+ since: "1.16.0",
+ description: "JavaScript"
+ }, {
+ value: "babel-flow",
+ since: "1.16.0",
+ description: "Flow"
+ }, {
+ value: "typescript",
+ since: "1.4.0",
+ description: "TypeScript"
+ }, {
+ value: "css",
+ since: "1.7.1",
+ description: "CSS"
+ }, {
+ value: "postcss",
+ since: "1.4.0",
+ description: "CSS/Less/SCSS",
+ deprecated: "1.7.1",
+ redirect: "css"
+ }, {
+ value: "less",
+ since: "1.7.1",
+ description: "Less"
+ }, {
+ value: "scss",
+ since: "1.7.1",
+ description: "SCSS"
+ }, {
+ value: "json",
+ since: "1.5.0",
+ description: "JSON"
+ }, {
+ value: "json5",
+ since: "1.13.0",
+ description: "JSON5"
+ }, {
+ value: "json-stringify",
+ since: "1.13.0",
+ description: "JSON.stringify"
+ }, {
+ value: "graphql",
+ since: "1.5.0",
+ description: "GraphQL"
+ }, {
+ value: "markdown",
+ since: "1.8.0",
+ description: "Markdown"
+ }, {
+ value: "mdx",
+ since: "1.15.0",
+ description: "MDX"
+ }, {
+ value: "vue",
+ since: "1.10.0",
+ description: "Vue"
+ }, {
+ value: "yaml",
+ since: "1.14.0",
+ description: "YAML"
+ }, {
+ value: "glimmer",
+ since: null,
+ description: "Handlebars"
+ }, {
+ value: "html",
+ since: "1.15.0",
+ description: "HTML"
+ }, {
+ value: "angular",
+ since: "1.15.0",
+ description: "Angular"
+ }, {
+ value: "lwc",
+ since: "1.17.0",
+ description: "Lightning Web Components"
+ }]
+ },
+ plugins: {
+ since: "1.10.0",
+ type: "path",
+ array: true,
+ default: [{
+ value: []
+ }],
+ category: CATEGORY_GLOBAL,
+ description: "Add a plugin. Multiple plugins can be passed as separate `--plugin`s.",
+ exception: function exception(value) {
+ return typeof value === "string" || _typeof(value) === "object";
+ },
+ cliName: "plugin",
+ cliCategory: CATEGORY_CONFIG
+ },
+ pluginSearchDirs: {
+ since: "1.13.0",
+ type: "path",
+ array: true,
+ default: [{
+ value: []
+ }],
+ category: CATEGORY_GLOBAL,
+ description: dedent_1(_templateObject3()),
+ exception: function exception(value) {
+ return typeof value === "string" || _typeof(value) === "object";
+ },
+ cliName: "plugin-search-dir",
+ cliCategory: CATEGORY_CONFIG
+ },
+ printWidth: {
+ since: "0.0.0",
+ category: CATEGORY_GLOBAL,
+ type: "int",
+ default: 80,
+ description: "The line length where Prettier will try wrap.",
+ range: {
+ start: 0,
+ end: Infinity,
+ step: 1
+ }
+ },
+ rangeEnd: {
+ since: "1.4.0",
+ category: CATEGORY_SPECIAL,
+ type: "int",
+ default: Infinity,
+ range: {
+ start: 0,
+ end: Infinity,
+ step: 1
+ },
+ description: dedent_1(_templateObject4()),
+ cliCategory: CATEGORY_EDITOR
+ },
+ rangeStart: {
+ since: "1.4.0",
+ category: CATEGORY_SPECIAL,
+ type: "int",
+ default: 0,
+ range: {
+ start: 0,
+ end: Infinity,
+ step: 1
+ },
+ description: dedent_1(_templateObject5()),
+ cliCategory: CATEGORY_EDITOR
+ },
+ requirePragma: {
+ since: "1.7.0",
+ category: CATEGORY_SPECIAL,
+ type: "boolean",
+ default: false,
+ description: dedent_1(_templateObject6()),
+ cliCategory: CATEGORY_OTHER
+ },
+ tabWidth: {
+ type: "int",
+ category: CATEGORY_GLOBAL,
+ default: 2,
+ description: "Number of spaces per indentation level.",
+ range: {
+ start: 0,
+ end: Infinity,
+ step: 1
+ }
+ },
+ useFlowParser: {
+ since: "0.0.0",
+ category: CATEGORY_GLOBAL,
+ type: "boolean",
+ default: [{
+ since: "0.0.0",
+ value: false
+ }, {
+ since: "1.15.0",
+ value: undefined
+ }],
+ deprecated: "0.0.10",
+ description: "Use flow parser.",
+ redirect: {
+ option: "parser",
+ value: "flow"
+ },
+ cliName: "flow-parser"
+ },
+ useTabs: {
+ since: "1.0.0",
+ category: CATEGORY_GLOBAL,
+ type: "boolean",
+ default: false,
+ description: "Indent with tabs instead of spaces."
+ }
+ };
+ var coreOptions = {
+ CATEGORY_CONFIG: CATEGORY_CONFIG,
+ CATEGORY_EDITOR: CATEGORY_EDITOR,
+ CATEGORY_FORMAT: CATEGORY_FORMAT,
+ CATEGORY_OTHER: CATEGORY_OTHER,
+ CATEGORY_OUTPUT: CATEGORY_OUTPUT,
+ CATEGORY_GLOBAL: CATEGORY_GLOBAL,
+ CATEGORY_SPECIAL: CATEGORY_SPECIAL,
+ options: options
+ };
+
+ var require$$0 = getCjsExportFromNamespace(_package$1);
+
+ var currentVersion = require$$0.version;
+ var coreOptions$1 = coreOptions.options;
+
+ function getSupportInfo(version, opts) {
+ opts = Object.assign({
+ plugins: [],
+ showUnreleased: false,
+ showDeprecated: false,
+ showInternal: false
+ }, opts);
+
+ if (!version) {
+ // pre-release version is smaller than the normal version in semver,
+ // we need to treat it as the normal one so as to test new features.
+ version = currentVersion.split("-", 1)[0];
+ }
+
+ var plugins = opts.plugins;
+ var options = arrayify(Object.assign(plugins.reduce(function (currentOptions, plugin) {
+ return Object.assign(currentOptions, plugin.options);
+ }, {}), coreOptions$1), "name").sort(function (a, b) {
+ return a.name === b.name ? 0 : a.name < b.name ? -1 : 1;
+ }).filter(filterSince).filter(filterDeprecated).map(mapDeprecated).map(mapInternal).map(function (option) {
+ var newOption = Object.assign({}, option);
+
+ if (Array.isArray(newOption.default)) {
+ newOption.default = newOption.default.length === 1 ? newOption.default[0].value : newOption.default.filter(filterSince).sort(function (info1, info2) {
+ return semver.compare(info2.since, info1.since);
+ })[0].value;
+ }
+
+ if (Array.isArray(newOption.choices)) {
+ newOption.choices = newOption.choices.filter(filterSince).filter(filterDeprecated).map(mapDeprecated);
+ }
+
+ return newOption;
+ }).map(function (option) {
+ var filteredPlugins = plugins.filter(function (plugin) {
+ return plugin.defaultOptions && plugin.defaultOptions[option.name] !== undefined;
+ });
+ var pluginDefaults = filteredPlugins.reduce(function (reduced, plugin) {
+ reduced[plugin.name] = plugin.defaultOptions[option.name];
+ return reduced;
+ }, {});
+ return Object.assign(option, {
+ pluginDefaults: pluginDefaults
+ });
+ });
+ var usePostCssParser = semver.lt(version, "1.7.1");
+ var useBabylonParser = semver.lt(version, "1.16.0");
+ var languages = plugins.reduce(function (all, plugin) {
+ return all.concat(plugin.languages || []);
+ }, []).filter(filterSince).map(function (language) {
+ // Prevent breaking changes
+ if (language.name === "Markdown") {
+ return Object.assign({}, language, {
+ parsers: ["markdown"]
+ });
+ }
+
+ if (language.name === "TypeScript") {
+ return Object.assign({}, language, {
+ parsers: ["typescript"]
+ });
+ } // "babylon" was renamed to "babel" in 1.16.0
+
+
+ if (useBabylonParser && language.parsers.indexOf("babel") !== -1) {
+ return Object.assign({}, language, {
+ parsers: language.parsers.map(function (parser) {
+ return parser === "babel" ? "babylon" : parser;
+ })
+ });
+ }
+
+ if (usePostCssParser && (language.name === "CSS" || language.group === "CSS")) {
+ return Object.assign({}, language, {
+ parsers: ["postcss"]
+ });
+ }
+
+ return language;
+ });
+ return {
+ languages: languages,
+ options: options
+ };
+
+ function filterSince(object) {
+ return opts.showUnreleased || !("since" in object) || object.since && semver.gte(version, object.since);
+ }
+
+ function filterDeprecated(object) {
+ return opts.showDeprecated || !("deprecated" in object) || object.deprecated && semver.lt(version, object.deprecated);
+ }
+
+ function mapDeprecated(object) {
+ if (!object.deprecated || opts.showDeprecated) {
+ return object;
+ }
+
+ var newObject = Object.assign({}, object);
+ delete newObject.deprecated;
+ delete newObject.redirect;
+ return newObject;
+ }
+
+ function mapInternal(object) {
+ if (opts.showInternal) {
+ return object;
+ }
+
+ var newObject = Object.assign({}, object);
+ delete newObject.cliName;
+ delete newObject.cliCategory;
+ delete newObject.cliDescription;
+ return newObject;
+ }
+ }
+
+ var support = {
+ getSupportInfo: getSupportInfo
+ };
+
+ /*! *****************************************************************************
+ Copyright (c) Microsoft Corporation. All rights reserved.
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+ this file except in compliance with the License. You may obtain a copy of the
+ License at http://www.apache.org/licenses/LICENSE-2.0
+
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+ MERCHANTABLITY OR NON-INFRINGEMENT.
+
+ See the Apache Version 2.0 License for specific language governing permissions
+ and limitations under the License.
+ ***************************************************************************** */
+
+ /* global Reflect, Promise */
+ var _extendStatics = function extendStatics(d, b) {
+ _extendStatics = Object.setPrototypeOf || {
+ __proto__: []
+ } instanceof Array && function (d, b) {
+ d.__proto__ = b;
+ } || function (d, b) {
+ for (var p in b) {
+ if (b.hasOwnProperty(p)) d[p] = b[p];
+ }
+ };
+
+ return _extendStatics(d, b);
+ };
+
+ function __extends(d, b) {
+ _extendStatics(d, b);
+
+ function __() {
+ this.constructor = d;
+ }
+
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ }
+
+ var _assign = function __assign() {
+ _assign = Object.assign || function __assign(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+
+ for (var p in s) {
+ if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+ }
+ }
+
+ return t;
+ };
+
+ return _assign.apply(this, arguments);
+ };
+ function __rest(s, e) {
+ var t = {};
+
+ for (var p in s) {
+ if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
+ }
+
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
+ }
+ return t;
+ }
+ function __decorate(decorators, target, key, desc) {
+ var c = arguments.length,
+ r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
+ d;
+ if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
+ if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ }
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ }
+ function __param(paramIndex, decorator) {
+ return function (target, key) {
+ decorator(target, key, paramIndex);
+ };
+ }
+ function __metadata(metadataKey, metadataValue) {
+ if ((typeof Reflect === "undefined" ? "undefined" : _typeof(Reflect)) === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
+ }
+ function __awaiter(thisArg, _arguments, P, generator) {
+ return new (P || (P = Promise))(function (resolve, reject) {
+ function fulfilled(value) {
+ try {
+ step(generator.next(value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function rejected(value) {
+ try {
+ step(generator["throw"](value));
+ } catch (e) {
+ reject(e);
+ }
+ }
+
+ function step(result) {
+ result.done ? resolve(result.value) : new P(function (resolve) {
+ resolve(result.value);
+ }).then(fulfilled, rejected);
+ }
+
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
+ });
+ }
+ function __generator(thisArg, body) {
+ var _ = {
+ label: 0,
+ sent: function sent() {
+ if (t[0] & 1) throw t[1];
+ return t[1];
+ },
+ trys: [],
+ ops: []
+ },
+ f,
+ y,
+ t,
+ g;
+ return g = {
+ next: verb(0),
+ "throw": verb(1),
+ "return": verb(2)
+ }, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
+ return this;
+ }), g;
+
+ function verb(n) {
+ return function (v) {
+ return step([n, v]);
+ };
+ }
+
+ function step(op) {
+ if (f) throw new TypeError("Generator is already executing.");
+
+ while (_) {
+ try {
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+ if (y = 0, t) op = [op[0] & 2, t.value];
+
+ switch (op[0]) {
+ case 0:
+ case 1:
+ t = op;
+ break;
+
+ case 4:
+ _.label++;
+ return {
+ value: op[1],
+ done: false
+ };
+
+ case 5:
+ _.label++;
+ y = op[1];
+ op = [0];
+ continue;
+
+ case 7:
+ op = _.ops.pop();
+
+ _.trys.pop();
+
+ continue;
+
+ default:
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
+ _ = 0;
+ continue;
+ }
+
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
+ _.label = op[1];
+ break;
+ }
+
+ if (op[0] === 6 && _.label < t[1]) {
+ _.label = t[1];
+ t = op;
+ break;
+ }
+
+ if (t && _.label < t[2]) {
+ _.label = t[2];
+
+ _.ops.push(op);
+
+ break;
+ }
+
+ if (t[2]) _.ops.pop();
+
+ _.trys.pop();
+
+ continue;
+ }
+
+ op = body.call(thisArg, _);
+ } catch (e) {
+ op = [6, e];
+ y = 0;
+ } finally {
+ f = t = 0;
+ }
+ }
+
+ if (op[0] & 5) throw op[1];
+ return {
+ value: op[0] ? op[1] : void 0,
+ done: true
+ };
+ }
+ }
+ function __exportStar(m, exports) {
+ for (var p in m) {
+ if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ }
+ function __values(o) {
+ var m = typeof Symbol === "function" && o[Symbol.iterator],
+ i = 0;
+ if (m) return m.call(o);
+ return {
+ next: function next() {
+ if (o && i >= o.length) o = void 0;
+ return {
+ value: o && o[i++],
+ done: !o
+ };
+ }
+ };
+ }
+ function __read(o, n) {
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
+ if (!m) return o;
+ var i = m.call(o),
+ r,
+ ar = [],
+ e;
+
+ try {
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {
+ ar.push(r.value);
+ }
+ } catch (error) {
+ e = {
+ error: error
+ };
+ } finally {
+ try {
+ if (r && !r.done && (m = i["return"])) m.call(i);
+ } finally {
+ if (e) throw e.error;
+ }
+ }
+
+ return ar;
+ }
+ function __spread() {
+ for (var ar = [], i = 0; i < arguments.length; i++) {
+ ar = ar.concat(__read(arguments[i]));
+ }
+
+ return ar;
+ }
+ function __spreadArrays() {
+ for (var s = 0, i = 0, il = arguments.length; i < il; i++) {
+ s += arguments[i].length;
+ }
+
+ for (var r = Array(s), k = 0, i = 0; i < il; i++) {
+ for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {
+ r[k] = a[j];
+ }
+ }
+
+ return r;
+ }
+ function __await(v) {
+ return this instanceof __await ? (this.v = v, this) : new __await(v);
+ }
+ function __asyncGenerator(thisArg, _arguments, generator) {
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+ var g = generator.apply(thisArg, _arguments || []),
+ i,
+ q = [];
+ return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () {
+ return this;
+ }, i;
+
+ function verb(n) {
+ if (g[n]) i[n] = function (v) {
+ return new Promise(function (a, b) {
+ q.push([n, v, a, b]) > 1 || resume(n, v);
+ });
+ };
+ }
+
+ function resume(n, v) {
+ try {
+ step(g[n](v));
+ } catch (e) {
+ settle(q[0][3], e);
+ }
+ }
+
+ function step(r) {
+ r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
+ }
+
+ function fulfill(value) {
+ resume("next", value);
+ }
+
+ function reject(value) {
+ resume("throw", value);
+ }
+
+ function settle(f, v) {
+ if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);
+ }
+ }
+ function __asyncDelegator(o) {
+ var i, p;
+ return i = {}, verb("next"), verb("throw", function (e) {
+ throw e;
+ }), verb("return"), i[Symbol.iterator] = function () {
+ return this;
+ }, i;
+
+ function verb(n, f) {
+ i[n] = o[n] ? function (v) {
+ return (p = !p) ? {
+ value: __await(o[n](v)),
+ done: n === "return"
+ } : f ? f(v) : v;
+ } : f;
+ }
+ }
+ function __asyncValues(o) {
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
+ var m = o[Symbol.asyncIterator],
+ i;
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () {
+ return this;
+ }, i);
+
+ function verb(n) {
+ i[n] = o[n] && function (v) {
+ return new Promise(function (resolve, reject) {
+ v = o[n](v), settle(resolve, reject, v.done, v.value);
+ });
+ };
+ }
+
+ function settle(resolve, reject, d, v) {
+ Promise.resolve(v).then(function (v) {
+ resolve({
+ value: v,
+ done: d
+ });
+ }, reject);
+ }
+ }
+ function __makeTemplateObject(cooked, raw) {
+ if (Object.defineProperty) {
+ Object.defineProperty(cooked, "raw", {
+ value: raw
+ });
+ } else {
+ cooked.raw = raw;
+ }
+
+ return cooked;
+ }
+ function __importStar(mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) {
+ if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
+ }
+ result.default = mod;
+ return result;
+ }
+ function __importDefault(mod) {
+ return mod && mod.__esModule ? mod : {
+ default: mod
+ };
+ }
+
+ var tslib_es6 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ __extends: __extends,
+ get __assign () { return _assign; },
+ __rest: __rest,
+ __decorate: __decorate,
+ __param: __param,
+ __metadata: __metadata,
+ __awaiter: __awaiter,
+ __generator: __generator,
+ __exportStar: __exportStar,
+ __values: __values,
+ __read: __read,
+ __spread: __spread,
+ __spreadArrays: __spreadArrays,
+ __await: __await,
+ __asyncGenerator: __asyncGenerator,
+ __asyncDelegator: __asyncDelegator,
+ __asyncValues: __asyncValues,
+ __makeTemplateObject: __makeTemplateObject,
+ __importStar: __importStar,
+ __importDefault: __importDefault
+ });
+
+ var api = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.apiDescriptor = {
+ key: function key(_key) {
+ return /^[$_a-zA-Z][$_a-zA-Z0-9]*$/.test(_key) ? _key : JSON.stringify(_key);
+ },
+ value: function value(_value) {
+ if (_value === null || _typeof(_value) !== 'object') {
+ return JSON.stringify(_value);
+ }
+
+ if (Array.isArray(_value)) {
+ return "[".concat(_value.map(function (subValue) {
+ return exports.apiDescriptor.value(subValue);
+ }).join(', '), "]");
+ }
+
+ var keys = Object.keys(_value);
+ return keys.length === 0 ? '{}' : "{ ".concat(keys.map(function (key) {
+ return "".concat(exports.apiDescriptor.key(key), ": ").concat(exports.apiDescriptor.value(_value[key]));
+ }).join(', '), " }");
+ },
+ pair: function pair(_ref) {
+ var key = _ref.key,
+ value = _ref.value;
+ return exports.apiDescriptor.value(_defineProperty({}, key, value));
+ }
+ };
+ });
+ unwrapExports(api);
+ var api_1 = api.apiDescriptor;
+
+ var tslib_1 = getCjsExportFromNamespace(tslib_es6);
+
+ var descriptors = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_1.__exportStar(api, exports);
+ });
+ unwrapExports(descriptors);
+
+ var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
+
+ var escapeStringRegexp = function escapeStringRegexp(str) {
+ if (typeof str !== 'string') {
+ throw new TypeError('Expected a string');
+ }
+
+ return str.replace(matchOperatorsRe, '\\$&');
+ };
+
+ var colorName = {
+ "aliceblue": [240, 248, 255],
+ "antiquewhite": [250, 235, 215],
+ "aqua": [0, 255, 255],
+ "aquamarine": [127, 255, 212],
+ "azure": [240, 255, 255],
+ "beige": [245, 245, 220],
+ "bisque": [255, 228, 196],
+ "black": [0, 0, 0],
+ "blanchedalmond": [255, 235, 205],
+ "blue": [0, 0, 255],
+ "blueviolet": [138, 43, 226],
+ "brown": [165, 42, 42],
+ "burlywood": [222, 184, 135],
+ "cadetblue": [95, 158, 160],
+ "chartreuse": [127, 255, 0],
+ "chocolate": [210, 105, 30],
+ "coral": [255, 127, 80],
+ "cornflowerblue": [100, 149, 237],
+ "cornsilk": [255, 248, 220],
+ "crimson": [220, 20, 60],
+ "cyan": [0, 255, 255],
+ "darkblue": [0, 0, 139],
+ "darkcyan": [0, 139, 139],
+ "darkgoldenrod": [184, 134, 11],
+ "darkgray": [169, 169, 169],
+ "darkgreen": [0, 100, 0],
+ "darkgrey": [169, 169, 169],
+ "darkkhaki": [189, 183, 107],
+ "darkmagenta": [139, 0, 139],
+ "darkolivegreen": [85, 107, 47],
+ "darkorange": [255, 140, 0],
+ "darkorchid": [153, 50, 204],
+ "darkred": [139, 0, 0],
+ "darksalmon": [233, 150, 122],
+ "darkseagreen": [143, 188, 143],
+ "darkslateblue": [72, 61, 139],
+ "darkslategray": [47, 79, 79],
+ "darkslategrey": [47, 79, 79],
+ "darkturquoise": [0, 206, 209],
+ "darkviolet": [148, 0, 211],
+ "deeppink": [255, 20, 147],
+ "deepskyblue": [0, 191, 255],
+ "dimgray": [105, 105, 105],
+ "dimgrey": [105, 105, 105],
+ "dodgerblue": [30, 144, 255],
+ "firebrick": [178, 34, 34],
+ "floralwhite": [255, 250, 240],
+ "forestgreen": [34, 139, 34],
+ "fuchsia": [255, 0, 255],
+ "gainsboro": [220, 220, 220],
+ "ghostwhite": [248, 248, 255],
+ "gold": [255, 215, 0],
+ "goldenrod": [218, 165, 32],
+ "gray": [128, 128, 128],
+ "green": [0, 128, 0],
+ "greenyellow": [173, 255, 47],
+ "grey": [128, 128, 128],
+ "honeydew": [240, 255, 240],
+ "hotpink": [255, 105, 180],
+ "indianred": [205, 92, 92],
+ "indigo": [75, 0, 130],
+ "ivory": [255, 255, 240],
+ "khaki": [240, 230, 140],
+ "lavender": [230, 230, 250],
+ "lavenderblush": [255, 240, 245],
+ "lawngreen": [124, 252, 0],
+ "lemonchiffon": [255, 250, 205],
+ "lightblue": [173, 216, 230],
+ "lightcoral": [240, 128, 128],
+ "lightcyan": [224, 255, 255],
+ "lightgoldenrodyellow": [250, 250, 210],
+ "lightgray": [211, 211, 211],
+ "lightgreen": [144, 238, 144],
+ "lightgrey": [211, 211, 211],
+ "lightpink": [255, 182, 193],
+ "lightsalmon": [255, 160, 122],
+ "lightseagreen": [32, 178, 170],
+ "lightskyblue": [135, 206, 250],
+ "lightslategray": [119, 136, 153],
+ "lightslategrey": [119, 136, 153],
+ "lightsteelblue": [176, 196, 222],
+ "lightyellow": [255, 255, 224],
+ "lime": [0, 255, 0],
+ "limegreen": [50, 205, 50],
+ "linen": [250, 240, 230],
+ "magenta": [255, 0, 255],
+ "maroon": [128, 0, 0],
+ "mediumaquamarine": [102, 205, 170],
+ "mediumblue": [0, 0, 205],
+ "mediumorchid": [186, 85, 211],
+ "mediumpurple": [147, 112, 219],
+ "mediumseagreen": [60, 179, 113],
+ "mediumslateblue": [123, 104, 238],
+ "mediumspringgreen": [0, 250, 154],
+ "mediumturquoise": [72, 209, 204],
+ "mediumvioletred": [199, 21, 133],
+ "midnightblue": [25, 25, 112],
+ "mintcream": [245, 255, 250],
+ "mistyrose": [255, 228, 225],
+ "moccasin": [255, 228, 181],
+ "navajowhite": [255, 222, 173],
+ "navy": [0, 0, 128],
+ "oldlace": [253, 245, 230],
+ "olive": [128, 128, 0],
+ "olivedrab": [107, 142, 35],
+ "orange": [255, 165, 0],
+ "orangered": [255, 69, 0],
+ "orchid": [218, 112, 214],
+ "palegoldenrod": [238, 232, 170],
+ "palegreen": [152, 251, 152],
+ "paleturquoise": [175, 238, 238],
+ "palevioletred": [219, 112, 147],
+ "papayawhip": [255, 239, 213],
+ "peachpuff": [255, 218, 185],
+ "peru": [205, 133, 63],
+ "pink": [255, 192, 203],
+ "plum": [221, 160, 221],
+ "powderblue": [176, 224, 230],
+ "purple": [128, 0, 128],
+ "rebeccapurple": [102, 51, 153],
+ "red": [255, 0, 0],
+ "rosybrown": [188, 143, 143],
+ "royalblue": [65, 105, 225],
+ "saddlebrown": [139, 69, 19],
+ "salmon": [250, 128, 114],
+ "sandybrown": [244, 164, 96],
+ "seagreen": [46, 139, 87],
+ "seashell": [255, 245, 238],
+ "sienna": [160, 82, 45],
+ "silver": [192, 192, 192],
+ "skyblue": [135, 206, 235],
+ "slateblue": [106, 90, 205],
+ "slategray": [112, 128, 144],
+ "slategrey": [112, 128, 144],
+ "snow": [255, 250, 250],
+ "springgreen": [0, 255, 127],
+ "steelblue": [70, 130, 180],
+ "tan": [210, 180, 140],
+ "teal": [0, 128, 128],
+ "thistle": [216, 191, 216],
+ "tomato": [255, 99, 71],
+ "turquoise": [64, 224, 208],
+ "violet": [238, 130, 238],
+ "wheat": [245, 222, 179],
+ "white": [255, 255, 255],
+ "whitesmoke": [245, 245, 245],
+ "yellow": [255, 255, 0],
+ "yellowgreen": [154, 205, 50]
+ };
+
+ var conversions = createCommonjsModule(function (module) {
+ /* MIT license */
+ // NOTE: conversions should only return primitive values (i.e. arrays, or
+ // values that give correct `typeof` results).
+ // do not use box values types (i.e. Number(), String(), etc.)
+ var reverseKeywords = {};
+
+ for (var key in colorName) {
+ if (colorName.hasOwnProperty(key)) {
+ reverseKeywords[colorName[key]] = key;
+ }
+ }
+
+ var convert = module.exports = {
+ rgb: {
+ channels: 3,
+ labels: 'rgb'
+ },
+ hsl: {
+ channels: 3,
+ labels: 'hsl'
+ },
+ hsv: {
+ channels: 3,
+ labels: 'hsv'
+ },
+ hwb: {
+ channels: 3,
+ labels: 'hwb'
+ },
+ cmyk: {
+ channels: 4,
+ labels: 'cmyk'
+ },
+ xyz: {
+ channels: 3,
+ labels: 'xyz'
+ },
+ lab: {
+ channels: 3,
+ labels: 'lab'
+ },
+ lch: {
+ channels: 3,
+ labels: 'lch'
+ },
+ hex: {
+ channels: 1,
+ labels: ['hex']
+ },
+ keyword: {
+ channels: 1,
+ labels: ['keyword']
+ },
+ ansi16: {
+ channels: 1,
+ labels: ['ansi16']
+ },
+ ansi256: {
+ channels: 1,
+ labels: ['ansi256']
+ },
+ hcg: {
+ channels: 3,
+ labels: ['h', 'c', 'g']
+ },
+ apple: {
+ channels: 3,
+ labels: ['r16', 'g16', 'b16']
+ },
+ gray: {
+ channels: 1,
+ labels: ['gray']
+ }
+ }; // hide .channels and .labels properties
+
+ for (var model in convert) {
+ if (convert.hasOwnProperty(model)) {
+ if (!('channels' in convert[model])) {
+ throw new Error('missing channels property: ' + model);
+ }
+
+ if (!('labels' in convert[model])) {
+ throw new Error('missing channel labels property: ' + model);
+ }
+
+ if (convert[model].labels.length !== convert[model].channels) {
+ throw new Error('channel and label counts mismatch: ' + model);
+ }
+
+ var channels = convert[model].channels;
+ var labels = convert[model].labels;
+ delete convert[model].channels;
+ delete convert[model].labels;
+ Object.defineProperty(convert[model], 'channels', {
+ value: channels
+ });
+ Object.defineProperty(convert[model], 'labels', {
+ value: labels
+ });
+ }
+ }
+
+ convert.rgb.hsl = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var min = Math.min(r, g, b);
+ var max = Math.max(r, g, b);
+ var delta = max - min;
+ var h;
+ var s;
+ var l;
+
+ if (max === min) {
+ h = 0;
+ } else if (r === max) {
+ h = (g - b) / delta;
+ } else if (g === max) {
+ h = 2 + (b - r) / delta;
+ } else if (b === max) {
+ h = 4 + (r - g) / delta;
+ }
+
+ h = Math.min(h * 60, 360);
+
+ if (h < 0) {
+ h += 360;
+ }
+
+ l = (min + max) / 2;
+
+ if (max === min) {
+ s = 0;
+ } else if (l <= 0.5) {
+ s = delta / (max + min);
+ } else {
+ s = delta / (2 - max - min);
+ }
+
+ return [h, s * 100, l * 100];
+ };
+
+ convert.rgb.hsv = function (rgb) {
+ var r = rgb[0];
+ var g = rgb[1];
+ var b = rgb[2];
+ var min = Math.min(r, g, b);
+ var max = Math.max(r, g, b);
+ var delta = max - min;
+ var h;
+ var s;
+ var v;
+
+ if (max === 0) {
+ s = 0;
+ } else {
+ s = delta / max * 1000 / 10;
+ }
+
+ if (max === min) {
+ h = 0;
+ } else if (r === max) {
+ h = (g - b) / delta;
+ } else if (g === max) {
+ h = 2 + (b - r) / delta;
+ } else if (b === max) {
+ h = 4 + (r - g) / delta;
+ }
+
+ h = Math.min(h * 60, 360);
+
+ if (h < 0) {
+ h += 360;
+ }
+
+ v = max / 255 * 1000 / 10;
+ return [h, s, v];
+ };
+
+ convert.rgb.hwb = function (rgb) {
+ var r = rgb[0];
+ var g = rgb[1];
+ var b = rgb[2];
+ var h = convert.rgb.hsl(rgb)[0];
+ var w = 1 / 255 * Math.min(r, Math.min(g, b));
+ b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
+ return [h, w * 100, b * 100];
+ };
+
+ convert.rgb.cmyk = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var c;
+ var m;
+ var y;
+ var k;
+ k = Math.min(1 - r, 1 - g, 1 - b);
+ c = (1 - r - k) / (1 - k) || 0;
+ m = (1 - g - k) / (1 - k) || 0;
+ y = (1 - b - k) / (1 - k) || 0;
+ return [c * 100, m * 100, y * 100, k * 100];
+ };
+ /**
+ * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance
+ * */
+
+
+ function comparativeDistance(x, y) {
+ return Math.pow(x[0] - y[0], 2) + Math.pow(x[1] - y[1], 2) + Math.pow(x[2] - y[2], 2);
+ }
+
+ convert.rgb.keyword = function (rgb) {
+ var reversed = reverseKeywords[rgb];
+
+ if (reversed) {
+ return reversed;
+ }
+
+ var currentClosestDistance = Infinity;
+ var currentClosestKeyword;
+
+ for (var keyword in colorName) {
+ if (colorName.hasOwnProperty(keyword)) {
+ var value = colorName[keyword]; // Compute comparative distance
+
+ var distance = comparativeDistance(rgb, value); // Check if its less, if so set as closest
+
+ if (distance < currentClosestDistance) {
+ currentClosestDistance = distance;
+ currentClosestKeyword = keyword;
+ }
+ }
+ }
+
+ return currentClosestKeyword;
+ };
+
+ convert.keyword.rgb = function (keyword) {
+ return colorName[keyword];
+ };
+
+ convert.rgb.xyz = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255; // assume sRGB
+
+ r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;
+ g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;
+ b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;
+ var x = r * 0.4124 + g * 0.3576 + b * 0.1805;
+ var y = r * 0.2126 + g * 0.7152 + b * 0.0722;
+ var z = r * 0.0193 + g * 0.1192 + b * 0.9505;
+ return [x * 100, y * 100, z * 100];
+ };
+
+ convert.rgb.lab = function (rgb) {
+ var xyz = convert.rgb.xyz(rgb);
+ var x = xyz[0];
+ var y = xyz[1];
+ var z = xyz[2];
+ var l;
+ var a;
+ var b;
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
+ x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;
+ y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;
+ z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;
+ l = 116 * y - 16;
+ a = 500 * (x - y);
+ b = 200 * (y - z);
+ return [l, a, b];
+ };
+
+ convert.hsl.rgb = function (hsl) {
+ var h = hsl[0] / 360;
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var t1;
+ var t2;
+ var t3;
+ var rgb;
+ var val;
+
+ if (s === 0) {
+ val = l * 255;
+ return [val, val, val];
+ }
+
+ if (l < 0.5) {
+ t2 = l * (1 + s);
+ } else {
+ t2 = l + s - l * s;
+ }
+
+ t1 = 2 * l - t2;
+ rgb = [0, 0, 0];
+
+ for (var i = 0; i < 3; i++) {
+ t3 = h + 1 / 3 * -(i - 1);
+
+ if (t3 < 0) {
+ t3++;
+ }
+
+ if (t3 > 1) {
+ t3--;
+ }
+
+ if (6 * t3 < 1) {
+ val = t1 + (t2 - t1) * 6 * t3;
+ } else if (2 * t3 < 1) {
+ val = t2;
+ } else if (3 * t3 < 2) {
+ val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
+ } else {
+ val = t1;
+ }
+
+ rgb[i] = val * 255;
+ }
+
+ return rgb;
+ };
+
+ convert.hsl.hsv = function (hsl) {
+ var h = hsl[0];
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var smin = s;
+ var lmin = Math.max(l, 0.01);
+ var sv;
+ var v;
+ l *= 2;
+ s *= l <= 1 ? l : 2 - l;
+ smin *= lmin <= 1 ? lmin : 2 - lmin;
+ v = (l + s) / 2;
+ sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);
+ return [h, sv * 100, v * 100];
+ };
+
+ convert.hsv.rgb = function (hsv) {
+ var h = hsv[0] / 60;
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+ var hi = Math.floor(h) % 6;
+ var f = h - Math.floor(h);
+ var p = 255 * v * (1 - s);
+ var q = 255 * v * (1 - s * f);
+ var t = 255 * v * (1 - s * (1 - f));
+ v *= 255;
+
+ switch (hi) {
+ case 0:
+ return [v, t, p];
+
+ case 1:
+ return [q, v, p];
+
+ case 2:
+ return [p, v, t];
+
+ case 3:
+ return [p, q, v];
+
+ case 4:
+ return [t, p, v];
+
+ case 5:
+ return [v, p, q];
+ }
+ };
+
+ convert.hsv.hsl = function (hsv) {
+ var h = hsv[0];
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+ var vmin = Math.max(v, 0.01);
+ var lmin;
+ var sl;
+ var l;
+ l = (2 - s) * v;
+ lmin = (2 - s) * vmin;
+ sl = s * vmin;
+ sl /= lmin <= 1 ? lmin : 2 - lmin;
+ sl = sl || 0;
+ l /= 2;
+ return [h, sl * 100, l * 100];
+ }; // http://dev.w3.org/csswg/css-color/#hwb-to-rgb
+
+
+ convert.hwb.rgb = function (hwb) {
+ var h = hwb[0] / 360;
+ var wh = hwb[1] / 100;
+ var bl = hwb[2] / 100;
+ var ratio = wh + bl;
+ var i;
+ var v;
+ var f;
+ var n; // wh + bl cant be > 1
+
+ if (ratio > 1) {
+ wh /= ratio;
+ bl /= ratio;
+ }
+
+ i = Math.floor(6 * h);
+ v = 1 - bl;
+ f = 6 * h - i;
+
+ if ((i & 0x01) !== 0) {
+ f = 1 - f;
+ }
+
+ n = wh + f * (v - wh); // linear interpolation
+
+ var r;
+ var g;
+ var b;
+
+ switch (i) {
+ default:
+ case 6:
+ case 0:
+ r = v;
+ g = n;
+ b = wh;
+ break;
+
+ case 1:
+ r = n;
+ g = v;
+ b = wh;
+ break;
+
+ case 2:
+ r = wh;
+ g = v;
+ b = n;
+ break;
+
+ case 3:
+ r = wh;
+ g = n;
+ b = v;
+ break;
+
+ case 4:
+ r = n;
+ g = wh;
+ b = v;
+ break;
+
+ case 5:
+ r = v;
+ g = wh;
+ b = n;
+ break;
+ }
+
+ return [r * 255, g * 255, b * 255];
+ };
+
+ convert.cmyk.rgb = function (cmyk) {
+ var c = cmyk[0] / 100;
+ var m = cmyk[1] / 100;
+ var y = cmyk[2] / 100;
+ var k = cmyk[3] / 100;
+ var r;
+ var g;
+ var b;
+ r = 1 - Math.min(1, c * (1 - k) + k);
+ g = 1 - Math.min(1, m * (1 - k) + k);
+ b = 1 - Math.min(1, y * (1 - k) + k);
+ return [r * 255, g * 255, b * 255];
+ };
+
+ convert.xyz.rgb = function (xyz) {
+ var x = xyz[0] / 100;
+ var y = xyz[1] / 100;
+ var z = xyz[2] / 100;
+ var r;
+ var g;
+ var b;
+ r = x * 3.2406 + y * -1.5372 + z * -0.4986;
+ g = x * -0.9689 + y * 1.8758 + z * 0.0415;
+ b = x * 0.0557 + y * -0.2040 + z * 1.0570; // assume sRGB
+
+ r = r > 0.0031308 ? 1.055 * Math.pow(r, 1.0 / 2.4) - 0.055 : r * 12.92;
+ g = g > 0.0031308 ? 1.055 * Math.pow(g, 1.0 / 2.4) - 0.055 : g * 12.92;
+ b = b > 0.0031308 ? 1.055 * Math.pow(b, 1.0 / 2.4) - 0.055 : b * 12.92;
+ r = Math.min(Math.max(0, r), 1);
+ g = Math.min(Math.max(0, g), 1);
+ b = Math.min(Math.max(0, b), 1);
+ return [r * 255, g * 255, b * 255];
+ };
+
+ convert.xyz.lab = function (xyz) {
+ var x = xyz[0];
+ var y = xyz[1];
+ var z = xyz[2];
+ var l;
+ var a;
+ var b;
+ x /= 95.047;
+ y /= 100;
+ z /= 108.883;
+ x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;
+ y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;
+ z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;
+ l = 116 * y - 16;
+ a = 500 * (x - y);
+ b = 200 * (y - z);
+ return [l, a, b];
+ };
+
+ convert.lab.xyz = function (lab) {
+ var l = lab[0];
+ var a = lab[1];
+ var b = lab[2];
+ var x;
+ var y;
+ var z;
+ y = (l + 16) / 116;
+ x = a / 500 + y;
+ z = y - b / 200;
+ var y2 = Math.pow(y, 3);
+ var x2 = Math.pow(x, 3);
+ var z2 = Math.pow(z, 3);
+ y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
+ x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
+ z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
+ x *= 95.047;
+ y *= 100;
+ z *= 108.883;
+ return [x, y, z];
+ };
+
+ convert.lab.lch = function (lab) {
+ var l = lab[0];
+ var a = lab[1];
+ var b = lab[2];
+ var hr;
+ var h;
+ var c;
+ hr = Math.atan2(b, a);
+ h = hr * 360 / 2 / Math.PI;
+
+ if (h < 0) {
+ h += 360;
+ }
+
+ c = Math.sqrt(a * a + b * b);
+ return [l, c, h];
+ };
+
+ convert.lch.lab = function (lch) {
+ var l = lch[0];
+ var c = lch[1];
+ var h = lch[2];
+ var a;
+ var b;
+ var hr;
+ hr = h / 360 * 2 * Math.PI;
+ a = c * Math.cos(hr);
+ b = c * Math.sin(hr);
+ return [l, a, b];
+ };
+
+ convert.rgb.ansi16 = function (args) {
+ var r = args[0];
+ var g = args[1];
+ var b = args[2];
+ var value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization
+
+ value = Math.round(value / 50);
+
+ if (value === 0) {
+ return 30;
+ }
+
+ var ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));
+
+ if (value === 2) {
+ ansi += 60;
+ }
+
+ return ansi;
+ };
+
+ convert.hsv.ansi16 = function (args) {
+ // optimization here; we already know the value and don't need to get
+ // it converted for us.
+ return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);
+ };
+
+ convert.rgb.ansi256 = function (args) {
+ var r = args[0];
+ var g = args[1];
+ var b = args[2]; // we use the extended greyscale palette here, with the exception of
+ // black and white. normal palette only has 4 greyscale shades.
+
+ if (r === g && g === b) {
+ if (r < 8) {
+ return 16;
+ }
+
+ if (r > 248) {
+ return 231;
+ }
+
+ return Math.round((r - 8) / 247 * 24) + 232;
+ }
+
+ var ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);
+ return ansi;
+ };
+
+ convert.ansi16.rgb = function (args) {
+ var color = args % 10; // handle greyscale
+
+ if (color === 0 || color === 7) {
+ if (args > 50) {
+ color += 3.5;
+ }
+
+ color = color / 10.5 * 255;
+ return [color, color, color];
+ }
+
+ var mult = (~~(args > 50) + 1) * 0.5;
+ var r = (color & 1) * mult * 255;
+ var g = (color >> 1 & 1) * mult * 255;
+ var b = (color >> 2 & 1) * mult * 255;
+ return [r, g, b];
+ };
+
+ convert.ansi256.rgb = function (args) {
+ // handle greyscale
+ if (args >= 232) {
+ var c = (args - 232) * 10 + 8;
+ return [c, c, c];
+ }
+
+ args -= 16;
+ var rem;
+ var r = Math.floor(args / 36) / 5 * 255;
+ var g = Math.floor((rem = args % 36) / 6) / 5 * 255;
+ var b = rem % 6 / 5 * 255;
+ return [r, g, b];
+ };
+
+ convert.rgb.hex = function (args) {
+ var integer = ((Math.round(args[0]) & 0xFF) << 16) + ((Math.round(args[1]) & 0xFF) << 8) + (Math.round(args[2]) & 0xFF);
+ var string = integer.toString(16).toUpperCase();
+ return '000000'.substring(string.length) + string;
+ };
+
+ convert.hex.rgb = function (args) {
+ var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
+
+ if (!match) {
+ return [0, 0, 0];
+ }
+
+ var colorString = match[0];
+
+ if (match[0].length === 3) {
+ colorString = colorString.split('').map(function (char) {
+ return char + char;
+ }).join('');
+ }
+
+ var integer = parseInt(colorString, 16);
+ var r = integer >> 16 & 0xFF;
+ var g = integer >> 8 & 0xFF;
+ var b = integer & 0xFF;
+ return [r, g, b];
+ };
+
+ convert.rgb.hcg = function (rgb) {
+ var r = rgb[0] / 255;
+ var g = rgb[1] / 255;
+ var b = rgb[2] / 255;
+ var max = Math.max(Math.max(r, g), b);
+ var min = Math.min(Math.min(r, g), b);
+ var chroma = max - min;
+ var grayscale;
+ var hue;
+
+ if (chroma < 1) {
+ grayscale = min / (1 - chroma);
+ } else {
+ grayscale = 0;
+ }
+
+ if (chroma <= 0) {
+ hue = 0;
+ } else if (max === r) {
+ hue = (g - b) / chroma % 6;
+ } else if (max === g) {
+ hue = 2 + (b - r) / chroma;
+ } else {
+ hue = 4 + (r - g) / chroma + 4;
+ }
+
+ hue /= 6;
+ hue %= 1;
+ return [hue * 360, chroma * 100, grayscale * 100];
+ };
+
+ convert.hsl.hcg = function (hsl) {
+ var s = hsl[1] / 100;
+ var l = hsl[2] / 100;
+ var c = 1;
+ var f = 0;
+
+ if (l < 0.5) {
+ c = 2.0 * s * l;
+ } else {
+ c = 2.0 * s * (1.0 - l);
+ }
+
+ if (c < 1.0) {
+ f = (l - 0.5 * c) / (1.0 - c);
+ }
+
+ return [hsl[0], c * 100, f * 100];
+ };
+
+ convert.hsv.hcg = function (hsv) {
+ var s = hsv[1] / 100;
+ var v = hsv[2] / 100;
+ var c = s * v;
+ var f = 0;
+
+ if (c < 1.0) {
+ f = (v - c) / (1 - c);
+ }
+
+ return [hsv[0], c * 100, f * 100];
+ };
+
+ convert.hcg.rgb = function (hcg) {
+ var h = hcg[0] / 360;
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+
+ if (c === 0.0) {
+ return [g * 255, g * 255, g * 255];
+ }
+
+ var pure = [0, 0, 0];
+ var hi = h % 1 * 6;
+ var v = hi % 1;
+ var w = 1 - v;
+ var mg = 0;
+
+ switch (Math.floor(hi)) {
+ case 0:
+ pure[0] = 1;
+ pure[1] = v;
+ pure[2] = 0;
+ break;
+
+ case 1:
+ pure[0] = w;
+ pure[1] = 1;
+ pure[2] = 0;
+ break;
+
+ case 2:
+ pure[0] = 0;
+ pure[1] = 1;
+ pure[2] = v;
+ break;
+
+ case 3:
+ pure[0] = 0;
+ pure[1] = w;
+ pure[2] = 1;
+ break;
+
+ case 4:
+ pure[0] = v;
+ pure[1] = 0;
+ pure[2] = 1;
+ break;
+
+ default:
+ pure[0] = 1;
+ pure[1] = 0;
+ pure[2] = w;
+ }
+
+ mg = (1.0 - c) * g;
+ return [(c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255];
+ };
+
+ convert.hcg.hsv = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+ var v = c + g * (1.0 - c);
+ var f = 0;
+
+ if (v > 0.0) {
+ f = c / v;
+ }
+
+ return [hcg[0], f * 100, v * 100];
+ };
+
+ convert.hcg.hsl = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+ var l = g * (1.0 - c) + 0.5 * c;
+ var s = 0;
+
+ if (l > 0.0 && l < 0.5) {
+ s = c / (2 * l);
+ } else if (l >= 0.5 && l < 1.0) {
+ s = c / (2 * (1 - l));
+ }
+
+ return [hcg[0], s * 100, l * 100];
+ };
+
+ convert.hcg.hwb = function (hcg) {
+ var c = hcg[1] / 100;
+ var g = hcg[2] / 100;
+ var v = c + g * (1.0 - c);
+ return [hcg[0], (v - c) * 100, (1 - v) * 100];
+ };
+
+ convert.hwb.hcg = function (hwb) {
+ var w = hwb[1] / 100;
+ var b = hwb[2] / 100;
+ var v = 1 - b;
+ var c = v - w;
+ var g = 0;
+
+ if (c < 1) {
+ g = (v - c) / (1 - c);
+ }
+
+ return [hwb[0], c * 100, g * 100];
+ };
+
+ convert.apple.rgb = function (apple) {
+ return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];
+ };
+
+ convert.rgb.apple = function (rgb) {
+ return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];
+ };
+
+ convert.gray.rgb = function (args) {
+ return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
+ };
+
+ convert.gray.hsl = convert.gray.hsv = function (args) {
+ return [0, 0, args[0]];
+ };
+
+ convert.gray.hwb = function (gray) {
+ return [0, 100, gray[0]];
+ };
+
+ convert.gray.cmyk = function (gray) {
+ return [0, 0, 0, gray[0]];
+ };
+
+ convert.gray.lab = function (gray) {
+ return [gray[0], 0, 0];
+ };
+
+ convert.gray.hex = function (gray) {
+ var val = Math.round(gray[0] / 100 * 255) & 0xFF;
+ var integer = (val << 16) + (val << 8) + val;
+ var string = integer.toString(16).toUpperCase();
+ return '000000'.substring(string.length) + string;
+ };
+
+ convert.rgb.gray = function (rgb) {
+ var val = (rgb[0] + rgb[1] + rgb[2]) / 3;
+ return [val / 255 * 100];
+ };
+ });
+ var conversions_1 = conversions.rgb;
+ var conversions_2 = conversions.hsl;
+ var conversions_3 = conversions.hsv;
+ var conversions_4 = conversions.hwb;
+ var conversions_5 = conversions.cmyk;
+ var conversions_6 = conversions.xyz;
+ var conversions_7 = conversions.lab;
+ var conversions_8 = conversions.lch;
+ var conversions_9 = conversions.hex;
+ var conversions_10 = conversions.keyword;
+ var conversions_11 = conversions.ansi16;
+ var conversions_12 = conversions.ansi256;
+ var conversions_13 = conversions.hcg;
+ var conversions_14 = conversions.apple;
+ var conversions_15 = conversions.gray;
+
+ /*
+ this function routes a model to all other models.
+
+ all functions that are routed have a property `.conversion` attached
+ to the returned synthetic function. This property is an array
+ of strings, each with the steps in between the 'from' and 'to'
+ color models (inclusive).
+
+ conversions that are not possible simply are not included.
+ */
+ // https://jsperf.com/object-keys-vs-for-in-with-closure/3
+
+ var models = Object.keys(conversions);
+
+ function buildGraph() {
+ var graph = {};
+
+ for (var len = models.length, i = 0; i < len; i++) {
+ graph[models[i]] = {
+ // http://jsperf.com/1-vs-infinity
+ // micro-opt, but this is simple.
+ distance: -1,
+ parent: null
+ };
+ }
+
+ return graph;
+ } // https://en.wikipedia.org/wiki/Breadth-first_search
+
+
+ function deriveBFS(fromModel) {
+ var graph = buildGraph();
+ var queue = [fromModel]; // unshift -> queue -> pop
+
+ graph[fromModel].distance = 0;
+
+ while (queue.length) {
+ var current = queue.pop();
+ var adjacents = Object.keys(conversions[current]);
+
+ for (var len = adjacents.length, i = 0; i < len; i++) {
+ var adjacent = adjacents[i];
+ var node = graph[adjacent];
+
+ if (node.distance === -1) {
+ node.distance = graph[current].distance + 1;
+ node.parent = current;
+ queue.unshift(adjacent);
+ }
+ }
+ }
+
+ return graph;
+ }
+
+ function link(from, to) {
+ return function (args) {
+ return to(from(args));
+ };
+ }
+
+ function wrapConversion(toModel, graph) {
+ var path = [graph[toModel].parent, toModel];
+ var fn = conversions[graph[toModel].parent][toModel];
+ var cur = graph[toModel].parent;
+
+ while (graph[cur].parent) {
+ path.unshift(graph[cur].parent);
+ fn = link(conversions[graph[cur].parent][cur], fn);
+ cur = graph[cur].parent;
+ }
+
+ fn.conversion = path;
+ return fn;
+ }
+
+ var route = function route(fromModel) {
+ var graph = deriveBFS(fromModel);
+ var conversion = {};
+ var models = Object.keys(graph);
+
+ for (var len = models.length, i = 0; i < len; i++) {
+ var toModel = models[i];
+ var node = graph[toModel];
+
+ if (node.parent === null) {
+ // no possible conversion, or this node is the source model.
+ continue;
+ }
+
+ conversion[toModel] = wrapConversion(toModel, graph);
+ }
+
+ return conversion;
+ };
+
+ var convert = {};
+ var models$1 = Object.keys(conversions);
+
+ function wrapRaw(fn) {
+ var wrappedFn = function wrappedFn(args) {
+ if (args === undefined || args === null) {
+ return args;
+ }
+
+ if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ }
+
+ return fn(args);
+ }; // preserve .conversion property if there is one
+
+
+ if ('conversion' in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
+
+ return wrappedFn;
+ }
+
+ function wrapRounded(fn) {
+ var wrappedFn = function wrappedFn(args) {
+ if (args === undefined || args === null) {
+ return args;
+ }
+
+ if (arguments.length > 1) {
+ args = Array.prototype.slice.call(arguments);
+ }
+
+ var result = fn(args); // we're assuming the result is an array here.
+ // see notice in conversions.js; don't use box types
+ // in conversion functions.
+
+ if (_typeof(result) === 'object') {
+ for (var len = result.length, i = 0; i < len; i++) {
+ result[i] = Math.round(result[i]);
+ }
+ }
+
+ return result;
+ }; // preserve .conversion property if there is one
+
+
+ if ('conversion' in fn) {
+ wrappedFn.conversion = fn.conversion;
+ }
+
+ return wrappedFn;
+ }
+
+ models$1.forEach(function (fromModel) {
+ convert[fromModel] = {};
+ Object.defineProperty(convert[fromModel], 'channels', {
+ value: conversions[fromModel].channels
+ });
+ Object.defineProperty(convert[fromModel], 'labels', {
+ value: conversions[fromModel].labels
+ });
+ var routes = route(fromModel);
+ var routeModels = Object.keys(routes);
+ routeModels.forEach(function (toModel) {
+ var fn = routes[toModel];
+ convert[fromModel][toModel] = wrapRounded(fn);
+ convert[fromModel][toModel].raw = wrapRaw(fn);
+ });
+ });
+ var colorConvert = convert;
+
+ var ansiStyles = createCommonjsModule(function (module) {
+
+ var wrapAnsi16 = function wrapAnsi16(fn, offset) {
+ return function () {
+ var code = fn.apply(colorConvert, arguments);
+ return "\x1B[".concat(code + offset, "m");
+ };
+ };
+
+ var wrapAnsi256 = function wrapAnsi256(fn, offset) {
+ return function () {
+ var code = fn.apply(colorConvert, arguments);
+ return "\x1B[".concat(38 + offset, ";5;").concat(code, "m");
+ };
+ };
+
+ var wrapAnsi16m = function wrapAnsi16m(fn, offset) {
+ return function () {
+ var rgb = fn.apply(colorConvert, arguments);
+ return "\x1B[".concat(38 + offset, ";2;").concat(rgb[0], ";").concat(rgb[1], ";").concat(rgb[2], "m");
+ };
+ };
+
+ function assembleStyles() {
+ var codes = new Map();
+ var styles = {
+ modifier: {
+ reset: [0, 0],
+ // 21 isn't widely supported and 22 does the same thing
+ bold: [1, 22],
+ dim: [2, 22],
+ italic: [3, 23],
+ underline: [4, 24],
+ inverse: [7, 27],
+ hidden: [8, 28],
+ strikethrough: [9, 29]
+ },
+ color: {
+ black: [30, 39],
+ red: [31, 39],
+ green: [32, 39],
+ yellow: [33, 39],
+ blue: [34, 39],
+ magenta: [35, 39],
+ cyan: [36, 39],
+ white: [37, 39],
+ gray: [90, 39],
+ // Bright color
+ redBright: [91, 39],
+ greenBright: [92, 39],
+ yellowBright: [93, 39],
+ blueBright: [94, 39],
+ magentaBright: [95, 39],
+ cyanBright: [96, 39],
+ whiteBright: [97, 39]
+ },
+ bgColor: {
+ bgBlack: [40, 49],
+ bgRed: [41, 49],
+ bgGreen: [42, 49],
+ bgYellow: [43, 49],
+ bgBlue: [44, 49],
+ bgMagenta: [45, 49],
+ bgCyan: [46, 49],
+ bgWhite: [47, 49],
+ // Bright color
+ bgBlackBright: [100, 49],
+ bgRedBright: [101, 49],
+ bgGreenBright: [102, 49],
+ bgYellowBright: [103, 49],
+ bgBlueBright: [104, 49],
+ bgMagentaBright: [105, 49],
+ bgCyanBright: [106, 49],
+ bgWhiteBright: [107, 49]
+ }
+ }; // Fix humans
+
+ styles.color.grey = styles.color.gray;
+
+ for (var _i = 0, _Object$keys = Object.keys(styles); _i < _Object$keys.length; _i++) {
+ var groupName = _Object$keys[_i];
+ var group = styles[groupName];
+
+ for (var _i3 = 0, _Object$keys3 = Object.keys(group); _i3 < _Object$keys3.length; _i3++) {
+ var styleName = _Object$keys3[_i3];
+ var style = group[styleName];
+ styles[styleName] = {
+ open: "\x1B[".concat(style[0], "m"),
+ close: "\x1B[".concat(style[1], "m")
+ };
+ group[styleName] = styles[styleName];
+ codes.set(style[0], style[1]);
+ }
+
+ Object.defineProperty(styles, groupName, {
+ value: group,
+ enumerable: false
+ });
+ Object.defineProperty(styles, 'codes', {
+ value: codes,
+ enumerable: false
+ });
+ }
+
+ var ansi2ansi = function ansi2ansi(n) {
+ return n;
+ };
+
+ var rgb2rgb = function rgb2rgb(r, g, b) {
+ return [r, g, b];
+ };
+
+ styles.color.close = "\x1B[39m";
+ styles.bgColor.close = "\x1B[49m";
+ styles.color.ansi = {
+ ansi: wrapAnsi16(ansi2ansi, 0)
+ };
+ styles.color.ansi256 = {
+ ansi256: wrapAnsi256(ansi2ansi, 0)
+ };
+ styles.color.ansi16m = {
+ rgb: wrapAnsi16m(rgb2rgb, 0)
+ };
+ styles.bgColor.ansi = {
+ ansi: wrapAnsi16(ansi2ansi, 10)
+ };
+ styles.bgColor.ansi256 = {
+ ansi256: wrapAnsi256(ansi2ansi, 10)
+ };
+ styles.bgColor.ansi16m = {
+ rgb: wrapAnsi16m(rgb2rgb, 10)
+ };
+
+ for (var _i2 = 0, _Object$keys2 = Object.keys(colorConvert); _i2 < _Object$keys2.length; _i2++) {
+ var key = _Object$keys2[_i2];
+
+ if (_typeof(colorConvert[key]) !== 'object') {
+ continue;
+ }
+
+ var suite = colorConvert[key];
+
+ if (key === 'ansi16') {
+ key = 'ansi';
+ }
+
+ if ('ansi16' in suite) {
+ styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);
+ styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);
+ }
+
+ if ('ansi256' in suite) {
+ styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);
+ styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);
+ }
+
+ if ('rgb' in suite) {
+ styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);
+ styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);
+ }
+ }
+
+ return styles;
+ } // Make the export immutable
+
+
+ Object.defineProperty(module, 'exports', {
+ enumerable: true,
+ get: assembleStyles
+ });
+ });
+
+ var require$$0$1 = {
+ EOL: "\n"
+ };
+
+ var hasFlag = function hasFlag(flag, argv) {
+ argv = argv || process.argv;
+ var prefix = flag.startsWith('-') ? '' : flag.length === 1 ? '-' : '--';
+ var pos = argv.indexOf(prefix + flag);
+ var terminatorPos = argv.indexOf('--');
+ return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);
+ };
+
+ var env$1 = process.env;
+ var forceColor;
+
+ if (hasFlag('no-color') || hasFlag('no-colors') || hasFlag('color=false')) {
+ forceColor = false;
+ } else if (hasFlag('color') || hasFlag('colors') || hasFlag('color=true') || hasFlag('color=always')) {
+ forceColor = true;
+ }
+
+ if ('FORCE_COLOR' in env$1) {
+ forceColor = env$1.FORCE_COLOR.length === 0 || parseInt(env$1.FORCE_COLOR, 10) !== 0;
+ }
+
+ function translateLevel(level) {
+ if (level === 0) {
+ return false;
+ }
+
+ return {
+ level: level,
+ hasBasic: true,
+ has256: level >= 2,
+ has16m: level >= 3
+ };
+ }
+
+ function supportsColor(stream) {
+ if (forceColor === false) {
+ return 0;
+ }
+
+ if (hasFlag('color=16m') || hasFlag('color=full') || hasFlag('color=truecolor')) {
+ return 3;
+ }
+
+ if (hasFlag('color=256')) {
+ return 2;
+ }
+
+ if (stream && !stream.isTTY && forceColor !== true) {
+ return 0;
+ }
+
+ var min = forceColor ? 1 : 0;
+
+ if (process.platform === 'win32') {
+ // Node.js 7.5.0 is the first version of Node.js to include a patch to
+ // libuv that enables 256 color output on Windows. Anything earlier and it
+ // won't work. However, here we target Node.js 8 at minimum as it is an LTS
+ // release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows
+ // release that supports 256 colors. Windows 10 build 14931 is the first release
+ // that supports 16m/TrueColor.
+ var osRelease = require$$0$1.release().split('.');
+
+ if (Number(process.versions.node.split('.')[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
+ return Number(osRelease[2]) >= 14931 ? 3 : 2;
+ }
+
+ return 1;
+ }
+
+ if ('CI' in env$1) {
+ if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(function (sign) {
+ return sign in env$1;
+ }) || env$1.CI_NAME === 'codeship') {
+ return 1;
+ }
+
+ return min;
+ }
+
+ if ('TEAMCITY_VERSION' in env$1) {
+ return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env$1.TEAMCITY_VERSION) ? 1 : 0;
+ }
+
+ if (env$1.COLORTERM === 'truecolor') {
+ return 3;
+ }
+
+ if ('TERM_PROGRAM' in env$1) {
+ var version = parseInt((env$1.TERM_PROGRAM_VERSION || '').split('.')[0], 10);
+
+ switch (env$1.TERM_PROGRAM) {
+ case 'iTerm.app':
+ return version >= 3 ? 3 : 2;
+
+ case 'Apple_Terminal':
+ return 2;
+ // No default
+ }
+ }
+
+ if (/-256(color)?$/i.test(env$1.TERM)) {
+ return 2;
+ }
+
+ if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env$1.TERM)) {
+ return 1;
+ }
+
+ if ('COLORTERM' in env$1) {
+ return 1;
+ }
+
+ if (env$1.TERM === 'dumb') {
+ return min;
+ }
+
+ return min;
+ }
+
+ function getSupportLevel(stream) {
+ var level = supportsColor(stream);
+ return translateLevel(level);
+ }
+
+ var supportsColor_1 = {
+ supportsColor: getSupportLevel,
+ stdout: getSupportLevel(process.stdout),
+ stderr: getSupportLevel(process.stderr)
+ };
+
+ var TEMPLATE_REGEX = /(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi;
+ var STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g;
+ var STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/;
+ var ESCAPE_REGEX = /\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi;
+ var ESCAPES = new Map([['n', '\n'], ['r', '\r'], ['t', '\t'], ['b', '\b'], ['f', '\f'], ['v', '\v'], ['0', '\0'], ['\\', '\\'], ['e', "\x1B"], ['a', "\x07"]]);
+
+ function unescape(c) {
+ if (c[0] === 'u' && c.length === 5 || c[0] === 'x' && c.length === 3) {
+ return String.fromCharCode(parseInt(c.slice(1), 16));
+ }
+
+ return ESCAPES.get(c) || c;
+ }
+
+ function parseArguments(name, args) {
+ var results = [];
+ var chunks = args.trim().split(/\s*,\s*/g);
+ var matches;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = chunks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var chunk = _step.value;
+
+ if (!isNaN(chunk)) {
+ results.push(Number(chunk));
+ } else if (matches = chunk.match(STRING_REGEX)) {
+ results.push(matches[2].replace(ESCAPE_REGEX, function (m, escape, chr) {
+ return escape ? unescape(escape) : chr;
+ }));
+ } else {
+ throw new Error("Invalid Chalk template style argument: ".concat(chunk, " (in style '").concat(name, "')"));
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return results;
+ }
+
+ function parseStyle(style) {
+ STYLE_REGEX.lastIndex = 0;
+ var results = [];
+ var matches;
+
+ while ((matches = STYLE_REGEX.exec(style)) !== null) {
+ var name = matches[1];
+
+ if (matches[2]) {
+ var args = parseArguments(name, matches[2]);
+ results.push([name].concat(args));
+ } else {
+ results.push([name]);
+ }
+ }
+
+ return results;
+ }
+
+ function buildStyle(chalk, styles) {
+ var enabled = {};
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = styles[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var layer = _step2.value;
+ var _iteratorNormalCompletion3 = true;
+ var _didIteratorError3 = false;
+ var _iteratorError3 = undefined;
+
+ try {
+ for (var _iterator3 = layer.styles[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
+ var style = _step3.value;
+ enabled[style[0]] = layer.inverse ? null : style.slice(1);
+ }
+ } catch (err) {
+ _didIteratorError3 = true;
+ _iteratorError3 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
+ _iterator3.return();
+ }
+ } finally {
+ if (_didIteratorError3) {
+ throw _iteratorError3;
+ }
+ }
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ var current = chalk;
+
+ for (var _i = 0, _Object$keys = Object.keys(enabled); _i < _Object$keys.length; _i++) {
+ var styleName = _Object$keys[_i];
+
+ if (Array.isArray(enabled[styleName])) {
+ if (!(styleName in current)) {
+ throw new Error("Unknown Chalk style: ".concat(styleName));
+ }
+
+ if (enabled[styleName].length > 0) {
+ current = current[styleName].apply(current, enabled[styleName]);
+ } else {
+ current = current[styleName];
+ }
+ }
+ }
+
+ return current;
+ }
+
+ var templates = function templates(chalk, tmp) {
+ var styles = [];
+ var chunks = [];
+ var chunk = []; // eslint-disable-next-line max-params
+
+ tmp.replace(TEMPLATE_REGEX, function (m, escapeChar, inverse, style, close, chr) {
+ if (escapeChar) {
+ chunk.push(unescape(escapeChar));
+ } else if (style) {
+ var str = chunk.join('');
+ chunk = [];
+ chunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));
+ styles.push({
+ inverse: inverse,
+ styles: parseStyle(style)
+ });
+ } else if (close) {
+ if (styles.length === 0) {
+ throw new Error('Found extraneous } in Chalk template literal');
+ }
+
+ chunks.push(buildStyle(chalk, styles)(chunk.join('')));
+ chunk = [];
+ styles.pop();
+ } else {
+ chunk.push(chr);
+ }
+ });
+ chunks.push(chunk.join(''));
+
+ if (styles.length > 0) {
+ var errMsg = "Chalk template literal is missing ".concat(styles.length, " closing bracket").concat(styles.length === 1 ? '' : 's', " (`}`)");
+ throw new Error(errMsg);
+ }
+
+ return chunks.join('');
+ };
+
+ var chalk = createCommonjsModule(function (module) {
+
+ var stdoutColor = supportsColor_1.stdout;
+ var isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); // `supportsColor.level` → `ansiStyles.color[name]` mapping
+
+ var levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m']; // `color-convert` models to exclude from the Chalk API due to conflicts and such
+
+ var skipModels = new Set(['gray']);
+ var styles = Object.create(null);
+
+ function applyOptions(obj, options) {
+ options = options || {}; // Detect level if not set manually
+
+ var scLevel = stdoutColor ? stdoutColor.level : 0;
+ obj.level = options.level === undefined ? scLevel : options.level;
+ obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;
+ }
+
+ function Chalk(options) {
+ // We check for this.template here since calling `chalk.constructor()`
+ // by itself will have a `this` of a previously constructed chalk object
+ if (!this || !(this instanceof Chalk) || this.template) {
+ var _chalk = {};
+ applyOptions(_chalk, options);
+
+ _chalk.template = function () {
+ var args = [].slice.call(arguments);
+ return chalkTag.apply(null, [_chalk.template].concat(args));
+ };
+
+ Object.setPrototypeOf(_chalk, Chalk.prototype);
+ Object.setPrototypeOf(_chalk.template, _chalk);
+ _chalk.template.constructor = Chalk;
+ return _chalk.template;
+ }
+
+ applyOptions(this, options);
+ } // Use bright blue on Windows as the normal blue color is illegible
+
+
+ if (isSimpleWindowsTerm) {
+ ansiStyles.blue.open = "\x1B[94m";
+ }
+
+ var _loop = function _loop() {
+ var key = _Object$keys[_i];
+ ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
+ styles[key] = {
+ get: function get() {
+ var codes = ansiStyles[key];
+ return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);
+ }
+ };
+ };
+
+ for (var _i = 0, _Object$keys = Object.keys(ansiStyles); _i < _Object$keys.length; _i++) {
+ _loop();
+ }
+
+ styles.visible = {
+ get: function get() {
+ return build.call(this, this._styles || [], true, 'visible');
+ }
+ };
+ ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');
+
+ var _loop2 = function _loop2() {
+ var model = _Object$keys2[_i2];
+
+ if (skipModels.has(model)) {
+ return "continue";
+ }
+
+ styles[model] = {
+ get: function get() {
+ var level = this.level;
+ return function () {
+ var open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);
+ var codes = {
+ open: open,
+ close: ansiStyles.color.close,
+ closeRe: ansiStyles.color.closeRe
+ };
+ return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
+ };
+ }
+ };
+ };
+
+ for (var _i2 = 0, _Object$keys2 = Object.keys(ansiStyles.color.ansi); _i2 < _Object$keys2.length; _i2++) {
+ var _ret = _loop2();
+
+ if (_ret === "continue") continue;
+ }
+
+ ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');
+
+ var _loop3 = function _loop3() {
+ var model = _Object$keys3[_i3];
+
+ if (skipModels.has(model)) {
+ return "continue";
+ }
+
+ var bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);
+ styles[bgModel] = {
+ get: function get() {
+ var level = this.level;
+ return function () {
+ var open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);
+ var codes = {
+ open: open,
+ close: ansiStyles.bgColor.close,
+ closeRe: ansiStyles.bgColor.closeRe
+ };
+ return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
+ };
+ }
+ };
+ };
+
+ for (var _i3 = 0, _Object$keys3 = Object.keys(ansiStyles.bgColor.ansi); _i3 < _Object$keys3.length; _i3++) {
+ var _ret2 = _loop3();
+
+ if (_ret2 === "continue") continue;
+ }
+
+ var proto = Object.defineProperties(function () {}, styles);
+
+ function build(_styles, _empty, key) {
+ var builder = function builder() {
+ return applyStyle.apply(builder, arguments);
+ };
+
+ builder._styles = _styles;
+ builder._empty = _empty;
+ var self = this;
+ Object.defineProperty(builder, 'level', {
+ enumerable: true,
+ get: function get() {
+ return self.level;
+ },
+ set: function set(level) {
+ self.level = level;
+ }
+ });
+ Object.defineProperty(builder, 'enabled', {
+ enumerable: true,
+ get: function get() {
+ return self.enabled;
+ },
+ set: function set(enabled) {
+ self.enabled = enabled;
+ }
+ }); // See below for fix regarding invisible grey/dim combination on Windows
+
+ builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey'; // `__proto__` is used because we must return a function, but there is
+ // no way to create a function with a different prototype
+
+ builder.__proto__ = proto; // eslint-disable-line no-proto
+
+ return builder;
+ }
+
+ function applyStyle() {
+ // Support varags, but simply cast to string in case there's only one arg
+ var args = arguments;
+ var argsLen = args.length;
+ var str = String(arguments[0]);
+
+ if (argsLen === 0) {
+ return '';
+ }
+
+ if (argsLen > 1) {
+ // Don't slice `arguments`, it prevents V8 optimizations
+ for (var a = 1; a < argsLen; a++) {
+ str += ' ' + args[a];
+ }
+ }
+
+ if (!this.enabled || this.level <= 0 || !str) {
+ return this._empty ? '' : str;
+ } // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,
+ // see https://github.com/chalk/chalk/issues/58
+ // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.
+
+
+ var originalDim = ansiStyles.dim.open;
+
+ if (isSimpleWindowsTerm && this.hasGrey) {
+ ansiStyles.dim.open = '';
+ }
+
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = this._styles.slice().reverse()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var code = _step.value;
+ // Replace any instances already present with a re-opening code
+ // otherwise only the part of the string until said closing code
+ // will be colored, and the rest will simply be 'plain'.
+ str = code.open + str.replace(code.closeRe, code.open) + code.close; // Close the styling before a linebreak and reopen
+ // after next line to fix a bleed issue on macOS
+ // https://github.com/chalk/chalk/pull/92
+
+ str = str.replace(/\r?\n/g, "".concat(code.close, "$&").concat(code.open));
+ } // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue
+
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ ansiStyles.dim.open = originalDim;
+ return str;
+ }
+
+ function chalkTag(chalk, strings) {
+ if (!Array.isArray(strings)) {
+ // If chalk() was called by itself or with a string,
+ // return the string itself as a string.
+ return [].slice.call(arguments, 1).join(' ');
+ }
+
+ var args = [].slice.call(arguments, 2);
+ var parts = [strings.raw[0]];
+
+ for (var i = 1; i < strings.length; i++) {
+ parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&'));
+ parts.push(String(strings.raw[i]));
+ }
+
+ return templates(chalk, parts.join(''));
+ }
+
+ Object.defineProperties(Chalk.prototype, styles);
+ module.exports = Chalk(); // eslint-disable-line new-cap
+
+ module.exports.supportsColor = stdoutColor;
+ module.exports.default = module.exports; // For TypeScript
+ });
+ var chalk_1 = chalk.supportsColor;
+
+ var common = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ exports.commonDeprecatedHandler = function (keyOrPair, redirectTo, _ref) {
+ var descriptor = _ref.descriptor;
+ var messages = ["".concat(chalk.default.yellow(typeof keyOrPair === 'string' ? descriptor.key(keyOrPair) : descriptor.pair(keyOrPair)), " is deprecated")];
+
+ if (redirectTo) {
+ messages.push("we now treat it as ".concat(chalk.default.blue(typeof redirectTo === 'string' ? descriptor.key(redirectTo) : descriptor.pair(redirectTo))));
+ }
+
+ return messages.join('; ') + '.';
+ };
+ });
+ unwrapExports(common);
+ var common_1 = common.commonDeprecatedHandler;
+
+ var deprecated = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_1.__exportStar(common, exports);
+ });
+ unwrapExports(deprecated);
+
+ var common$1 = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ exports.commonInvalidHandler = function (key, value, utils) {
+ return ["Invalid ".concat(chalk.default.red(utils.descriptor.key(key)), " value."), "Expected ".concat(chalk.default.blue(utils.schemas[key].expected(utils)), ","), "but received ".concat(chalk.default.red(utils.descriptor.value(value)), ".")].join(' ');
+ };
+ });
+ unwrapExports(common$1);
+ var common_1$1 = common$1.commonInvalidHandler;
+
+ var invalid = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_1.__exportStar(common$1, exports);
+ });
+ unwrapExports(invalid);
+
+ /* eslint-disable no-nested-ternary */
+
+ var arr = [];
+ var charCodeCache = [];
+
+ var leven = function leven(a, b) {
+ if (a === b) {
+ return 0;
+ }
+
+ var swap = a; // Swapping the strings if `a` is longer than `b` so we know which one is the
+ // shortest & which one is the longest
+
+ if (a.length > b.length) {
+ a = b;
+ b = swap;
+ }
+
+ var aLen = a.length;
+ var bLen = b.length;
+
+ if (aLen === 0) {
+ return bLen;
+ }
+
+ if (bLen === 0) {
+ return aLen;
+ } // Performing suffix trimming:
+ // We can linearly drop suffix common to both strings since they
+ // don't increase distance at all
+ // Note: `~-` is the bitwise way to perform a `- 1` operation
+
+
+ while (aLen > 0 && a.charCodeAt(~-aLen) === b.charCodeAt(~-bLen)) {
+ aLen--;
+ bLen--;
+ }
+
+ if (aLen === 0) {
+ return bLen;
+ } // Performing prefix trimming
+ // We can linearly drop prefix common to both strings since they
+ // don't increase distance at all
+
+
+ var start = 0;
+
+ while (start < aLen && a.charCodeAt(start) === b.charCodeAt(start)) {
+ start++;
+ }
+
+ aLen -= start;
+ bLen -= start;
+
+ if (aLen === 0) {
+ return bLen;
+ }
+
+ var bCharCode;
+ var ret;
+ var tmp;
+ var tmp2;
+ var i = 0;
+ var j = 0;
+
+ while (i < aLen) {
+ charCodeCache[start + i] = a.charCodeAt(start + i);
+ arr[i] = ++i;
+ }
+
+ while (j < bLen) {
+ bCharCode = b.charCodeAt(start + j);
+ tmp = j++;
+ ret = j;
+
+ for (i = 0; i < aLen; i++) {
+ tmp2 = bCharCode === charCodeCache[start + i] ? tmp : tmp + 1;
+ tmp = arr[i];
+ ret = arr[i] = tmp > ret ? tmp2 > ret ? ret + 1 : tmp2 : tmp2 > tmp ? tmp + 1 : tmp2;
+ }
+ }
+
+ return ret;
+ };
+
+ var leven_1 = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ exports.levenUnknownHandler = function (key, value, _ref) {
+ var descriptor = _ref.descriptor,
+ logger = _ref.logger,
+ schemas = _ref.schemas;
+ var messages = ["Ignored unknown option ".concat(chalk.default.yellow(descriptor.pair({
+ key: key,
+ value: value
+ })), ".")];
+ var suggestion = Object.keys(schemas).sort().find(function (knownKey) {
+ return leven(key, knownKey) < 3;
+ });
+
+ if (suggestion) {
+ messages.push("Did you mean ".concat(chalk.default.blue(descriptor.key(suggestion)), "?"));
+ }
+
+ logger.warn(messages.join(' '));
+ };
+ });
+ unwrapExports(leven_1);
+ var leven_2 = leven_1.levenUnknownHandler;
+
+ var unknown = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_1.__exportStar(leven_1, exports);
+ });
+ unwrapExports(unknown);
+
+ var handlers = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_1.__exportStar(deprecated, exports);
+
+ tslib_1.__exportStar(invalid, exports);
+
+ tslib_1.__exportStar(unknown, exports);
+ });
+ unwrapExports(handlers);
+
+ var schema = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ var HANDLER_KEYS = ['default', 'expected', 'validate', 'deprecated', 'forward', 'redirect', 'overlap', 'preprocess', 'postprocess'];
+
+ function createSchema(SchemaConstructor, parameters) {
+ var schema = new SchemaConstructor(parameters);
+ var subSchema = Object.create(schema);
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = HANDLER_KEYS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var handlerKey = _step.value;
+
+ if (handlerKey in parameters) {
+ subSchema[handlerKey] = normalizeHandler(parameters[handlerKey], schema, Schema.prototype[handlerKey].length);
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return subSchema;
+ }
+
+ exports.createSchema = createSchema;
+
+ var Schema =
+ /*#__PURE__*/
+ function () {
+ function Schema(parameters) {
+ _classCallCheck(this, Schema);
+
+ this.name = parameters.name;
+ }
+
+ _createClass(Schema, [{
+ key: "default",
+ value: function _default(_utils) {
+ return undefined;
+ } // istanbul ignore next: this is actually an abstract method but we need a placeholder to get `function.length`
+
+ }, {
+ key: "expected",
+ value: function expected(_utils) {
+ return 'nothing';
+ } // istanbul ignore next: this is actually an abstract method but we need a placeholder to get `function.length`
+
+ }, {
+ key: "validate",
+ value: function validate(_value, _utils) {
+ return false;
+ }
+ }, {
+ key: "deprecated",
+ value: function deprecated(_value, _utils) {
+ return false;
+ }
+ }, {
+ key: "forward",
+ value: function forward(_value, _utils) {
+ return undefined;
+ }
+ }, {
+ key: "redirect",
+ value: function redirect(_value, _utils) {
+ return undefined;
+ }
+ }, {
+ key: "overlap",
+ value: function overlap(currentValue, _newValue, _utils) {
+ return currentValue;
+ }
+ }, {
+ key: "preprocess",
+ value: function preprocess(value, _utils) {
+ return value;
+ }
+ }, {
+ key: "postprocess",
+ value: function postprocess(value, _utils) {
+ return value;
+ }
+ }], [{
+ key: "create",
+ value: function create(parameters) {
+ // @ts-ignore: https://github.com/Microsoft/TypeScript/issues/5863
+ return createSchema(this, parameters);
+ }
+ }]);
+
+ return Schema;
+ }();
+
+ exports.Schema = Schema;
+
+ function normalizeHandler(handler, superSchema, handlerArgumentsLength) {
+ return typeof handler === 'function' ? function () {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ return handler.apply(void 0, _toConsumableArray(args.slice(0, handlerArgumentsLength - 1)).concat([superSchema], _toConsumableArray(args.slice(handlerArgumentsLength - 1))));
+ } : function () {
+ return handler;
+ };
+ }
+ });
+ unwrapExports(schema);
+ var schema_1 = schema.createSchema;
+ var schema_2 = schema.Schema;
+
+ var alias = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var AliasSchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(AliasSchema, _schema_1$Schema);
+
+ function AliasSchema(parameters) {
+ var _this;
+
+ _classCallCheck(this, AliasSchema);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(AliasSchema).call(this, parameters));
+ _this._sourceName = parameters.sourceName;
+ return _this;
+ }
+
+ _createClass(AliasSchema, [{
+ key: "expected",
+ value: function expected(utils) {
+ return utils.schemas[this._sourceName].expected(utils);
+ }
+ }, {
+ key: "validate",
+ value: function validate(value, utils) {
+ return utils.schemas[this._sourceName].validate(value, utils);
+ }
+ }, {
+ key: "redirect",
+ value: function redirect(_value, _utils) {
+ return this._sourceName;
+ }
+ }]);
+
+ return AliasSchema;
+ }(schema.Schema);
+
+ exports.AliasSchema = AliasSchema;
+ });
+ unwrapExports(alias);
+ var alias_1 = alias.AliasSchema;
+
+ var any = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var AnySchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(AnySchema, _schema_1$Schema);
+
+ function AnySchema() {
+ _classCallCheck(this, AnySchema);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(AnySchema).apply(this, arguments));
+ }
+
+ _createClass(AnySchema, [{
+ key: "expected",
+ value: function expected() {
+ return 'anything';
+ }
+ }, {
+ key: "validate",
+ value: function validate() {
+ return true;
+ }
+ }]);
+
+ return AnySchema;
+ }(schema.Schema);
+
+ exports.AnySchema = AnySchema;
+ });
+ unwrapExports(any);
+ var any_1 = any.AnySchema;
+
+ var array = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var ArraySchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(ArraySchema, _schema_1$Schema);
+
+ function ArraySchema(_a) {
+ var _this;
+
+ _classCallCheck(this, ArraySchema);
+
+ var valueSchema = _a.valueSchema,
+ _a$name = _a.name,
+ name = _a$name === void 0 ? valueSchema.name : _a$name,
+ handlers = tslib_1.__rest(_a, ["valueSchema", "name"]);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(ArraySchema).call(this, Object.assign({}, handlers, {
+ name: name
+ })));
+ _this._valueSchema = valueSchema;
+ return _this;
+ }
+
+ _createClass(ArraySchema, [{
+ key: "expected",
+ value: function expected(utils) {
+ return "an array of ".concat(this._valueSchema.expected(utils));
+ }
+ }, {
+ key: "validate",
+ value: function validate(value, utils) {
+ if (!Array.isArray(value)) {
+ return false;
+ }
+
+ var invalidValues = [];
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = value[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var subValue = _step.value;
+ var subValidateResult = utils.normalizeValidateResult(this._valueSchema.validate(subValue, utils), subValue);
+
+ if (subValidateResult !== true) {
+ invalidValues.push(subValidateResult.value);
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return invalidValues.length === 0 ? true : {
+ value: invalidValues
+ };
+ }
+ }, {
+ key: "deprecated",
+ value: function deprecated(value, utils) {
+ var deprecatedResult = [];
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = value[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var subValue = _step2.value;
+ var subDeprecatedResult = utils.normalizeDeprecatedResult(this._valueSchema.deprecated(subValue, utils), subValue);
+
+ if (subDeprecatedResult !== false) {
+ deprecatedResult.push.apply(deprecatedResult, _toConsumableArray(subDeprecatedResult.map(function (_ref) {
+ var deprecatedValue = _ref.value;
+ return {
+ value: [deprecatedValue]
+ };
+ })));
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return deprecatedResult;
+ }
+ }, {
+ key: "forward",
+ value: function forward(value, utils) {
+ var forwardResult = [];
+ var _iteratorNormalCompletion3 = true;
+ var _didIteratorError3 = false;
+ var _iteratorError3 = undefined;
+
+ try {
+ for (var _iterator3 = value[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
+ var subValue = _step3.value;
+ var subForwardResult = utils.normalizeForwardResult(this._valueSchema.forward(subValue, utils), subValue);
+ forwardResult.push.apply(forwardResult, _toConsumableArray(subForwardResult.map(wrapTransferResult)));
+ }
+ } catch (err) {
+ _didIteratorError3 = true;
+ _iteratorError3 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
+ _iterator3.return();
+ }
+ } finally {
+ if (_didIteratorError3) {
+ throw _iteratorError3;
+ }
+ }
+ }
+
+ return forwardResult;
+ }
+ }, {
+ key: "redirect",
+ value: function redirect(value, utils) {
+ var remain = [];
+ var redirect = [];
+ var _iteratorNormalCompletion4 = true;
+ var _didIteratorError4 = false;
+ var _iteratorError4 = undefined;
+
+ try {
+ for (var _iterator4 = value[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
+ var subValue = _step4.value;
+ var subRedirectResult = utils.normalizeRedirectResult(this._valueSchema.redirect(subValue, utils), subValue);
+
+ if ('remain' in subRedirectResult) {
+ remain.push(subRedirectResult.remain);
+ }
+
+ redirect.push.apply(redirect, _toConsumableArray(subRedirectResult.redirect.map(wrapTransferResult)));
+ }
+ } catch (err) {
+ _didIteratorError4 = true;
+ _iteratorError4 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
+ _iterator4.return();
+ }
+ } finally {
+ if (_didIteratorError4) {
+ throw _iteratorError4;
+ }
+ }
+ }
+
+ return remain.length === 0 ? {
+ redirect: redirect
+ } : {
+ redirect: redirect,
+ remain: remain
+ };
+ }
+ }, {
+ key: "overlap",
+ value: function overlap(currentValue, newValue) {
+ return currentValue.concat(newValue);
+ }
+ }]);
+
+ return ArraySchema;
+ }(schema.Schema);
+
+ exports.ArraySchema = ArraySchema;
+
+ function wrapTransferResult(_ref2) {
+ var from = _ref2.from,
+ to = _ref2.to;
+ return {
+ from: [from],
+ to: to
+ };
+ }
+ });
+ unwrapExports(array);
+ var array_1 = array.ArraySchema;
+
+ var boolean_1 = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var BooleanSchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(BooleanSchema, _schema_1$Schema);
+
+ function BooleanSchema() {
+ _classCallCheck(this, BooleanSchema);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(BooleanSchema).apply(this, arguments));
+ }
+
+ _createClass(BooleanSchema, [{
+ key: "expected",
+ value: function expected() {
+ return 'true or false';
+ }
+ }, {
+ key: "validate",
+ value: function validate(value) {
+ return typeof value === 'boolean';
+ }
+ }]);
+
+ return BooleanSchema;
+ }(schema.Schema);
+
+ exports.BooleanSchema = BooleanSchema;
+ });
+ unwrapExports(boolean_1);
+ var boolean_2 = boolean_1.BooleanSchema;
+
+ var utils = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ function recordFromArray(array, mainKey) {
+ var record = Object.create(null);
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = array[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var value = _step.value;
+ var key = value[mainKey]; // istanbul ignore next
+
+ if (record[key]) {
+ throw new Error("Duplicate ".concat(mainKey, " ").concat(JSON.stringify(key)));
+ } // @ts-ignore
+
+
+ record[key] = value;
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return record;
+ }
+
+ exports.recordFromArray = recordFromArray;
+
+ function mapFromArray(array, mainKey) {
+ var map = new Map();
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = array[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var value = _step2.value;
+ var key = value[mainKey]; // istanbul ignore next
+
+ if (map.has(key)) {
+ throw new Error("Duplicate ".concat(mainKey, " ").concat(JSON.stringify(key)));
+ }
+
+ map.set(key, value);
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return map;
+ }
+
+ exports.mapFromArray = mapFromArray;
+
+ function createAutoChecklist() {
+ var map = Object.create(null);
+ return function (id) {
+ var idString = JSON.stringify(id);
+
+ if (map[idString]) {
+ return true;
+ }
+
+ map[idString] = true;
+ return false;
+ };
+ }
+
+ exports.createAutoChecklist = createAutoChecklist;
+
+ function partition(array, predicate) {
+ var trueArray = [];
+ var falseArray = [];
+ var _iteratorNormalCompletion3 = true;
+ var _didIteratorError3 = false;
+ var _iteratorError3 = undefined;
+
+ try {
+ for (var _iterator3 = array[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
+ var value = _step3.value;
+
+ if (predicate(value)) {
+ trueArray.push(value);
+ } else {
+ falseArray.push(value);
+ }
+ }
+ } catch (err) {
+ _didIteratorError3 = true;
+ _iteratorError3 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
+ _iterator3.return();
+ }
+ } finally {
+ if (_didIteratorError3) {
+ throw _iteratorError3;
+ }
+ }
+ }
+
+ return [trueArray, falseArray];
+ }
+
+ exports.partition = partition;
+
+ function isInt(value) {
+ return value === Math.floor(value);
+ }
+
+ exports.isInt = isInt;
+
+ function comparePrimitive(a, b) {
+ if (a === b) {
+ return 0;
+ }
+
+ var typeofA = _typeof(a);
+
+ var typeofB = _typeof(b);
+
+ var orders = ['undefined', 'object', 'boolean', 'number', 'string'];
+
+ if (typeofA !== typeofB) {
+ return orders.indexOf(typeofA) - orders.indexOf(typeofB);
+ }
+
+ if (typeofA !== 'string') {
+ return Number(a) - Number(b);
+ }
+
+ return a.localeCompare(b);
+ }
+
+ exports.comparePrimitive = comparePrimitive;
+
+ function normalizeDefaultResult(result) {
+ return result === undefined ? {} : result;
+ }
+
+ exports.normalizeDefaultResult = normalizeDefaultResult;
+
+ function normalizeValidateResult(result, value) {
+ return result === true ? true : result === false ? {
+ value: value
+ } : result;
+ }
+
+ exports.normalizeValidateResult = normalizeValidateResult;
+
+ function normalizeDeprecatedResult(result, value) {
+ var doNotNormalizeTrue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+ return result === false ? false : result === true ? doNotNormalizeTrue ? true : [{
+ value: value
+ }] : 'value' in result ? [result] : result.length === 0 ? false : result;
+ }
+
+ exports.normalizeDeprecatedResult = normalizeDeprecatedResult;
+
+ function normalizeTransferResult(result, value) {
+ return typeof result === 'string' || 'key' in result ? {
+ from: value,
+ to: result
+ } : 'from' in result ? {
+ from: result.from,
+ to: result.to
+ } : {
+ from: value,
+ to: result.to
+ };
+ }
+
+ exports.normalizeTransferResult = normalizeTransferResult;
+
+ function normalizeForwardResult(result, value) {
+ return result === undefined ? [] : Array.isArray(result) ? result.map(function (transferResult) {
+ return normalizeTransferResult(transferResult, value);
+ }) : [normalizeTransferResult(result, value)];
+ }
+
+ exports.normalizeForwardResult = normalizeForwardResult;
+
+ function normalizeRedirectResult(result, value) {
+ var redirect = normalizeForwardResult(_typeof(result) === 'object' && 'redirect' in result ? result.redirect : result, value);
+ return redirect.length === 0 ? {
+ remain: value,
+ redirect: redirect
+ } : _typeof(result) === 'object' && 'remain' in result ? {
+ remain: result.remain,
+ redirect: redirect
+ } : {
+ redirect: redirect
+ };
+ }
+
+ exports.normalizeRedirectResult = normalizeRedirectResult;
+ });
+ unwrapExports(utils);
+ var utils_1 = utils.recordFromArray;
+ var utils_2 = utils.mapFromArray;
+ var utils_3 = utils.createAutoChecklist;
+ var utils_4 = utils.partition;
+ var utils_5 = utils.isInt;
+ var utils_6 = utils.comparePrimitive;
+ var utils_7 = utils.normalizeDefaultResult;
+ var utils_8 = utils.normalizeValidateResult;
+ var utils_9 = utils.normalizeDeprecatedResult;
+ var utils_10 = utils.normalizeTransferResult;
+ var utils_11 = utils.normalizeForwardResult;
+ var utils_12 = utils.normalizeRedirectResult;
+
+ var choice = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var ChoiceSchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(ChoiceSchema, _schema_1$Schema);
+
+ function ChoiceSchema(parameters) {
+ var _this;
+
+ _classCallCheck(this, ChoiceSchema);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(ChoiceSchema).call(this, parameters));
+ _this._choices = utils.mapFromArray(parameters.choices.map(function (choice) {
+ return choice && _typeof(choice) === 'object' ? choice : {
+ value: choice
+ };
+ }), 'value');
+ return _this;
+ }
+
+ _createClass(ChoiceSchema, [{
+ key: "expected",
+ value: function expected(_ref) {
+ var _this2 = this;
+
+ var descriptor = _ref.descriptor;
+ var choiceValues = Array.from(this._choices.keys()).map(function (value) {
+ return _this2._choices.get(value);
+ }).filter(function (choiceInfo) {
+ return !choiceInfo.deprecated;
+ }).map(function (choiceInfo) {
+ return choiceInfo.value;
+ }).sort(utils.comparePrimitive).map(descriptor.value);
+ var head = choiceValues.slice(0, -2);
+ var tail = choiceValues.slice(-2);
+ return head.concat(tail.join(' or ')).join(', ');
+ }
+ }, {
+ key: "validate",
+ value: function validate(value) {
+ return this._choices.has(value);
+ }
+ }, {
+ key: "deprecated",
+ value: function deprecated(value) {
+ var choiceInfo = this._choices.get(value);
+
+ return choiceInfo && choiceInfo.deprecated ? {
+ value: value
+ } : false;
+ }
+ }, {
+ key: "forward",
+ value: function forward(value) {
+ var choiceInfo = this._choices.get(value);
+
+ return choiceInfo ? choiceInfo.forward : undefined;
+ }
+ }, {
+ key: "redirect",
+ value: function redirect(value) {
+ var choiceInfo = this._choices.get(value);
+
+ return choiceInfo ? choiceInfo.redirect : undefined;
+ }
+ }]);
+
+ return ChoiceSchema;
+ }(schema.Schema);
+
+ exports.ChoiceSchema = ChoiceSchema;
+ });
+ unwrapExports(choice);
+ var choice_1 = choice.ChoiceSchema;
+
+ var number = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var NumberSchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(NumberSchema, _schema_1$Schema);
+
+ function NumberSchema() {
+ _classCallCheck(this, NumberSchema);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(NumberSchema).apply(this, arguments));
+ }
+
+ _createClass(NumberSchema, [{
+ key: "expected",
+ value: function expected() {
+ return 'a number';
+ }
+ }, {
+ key: "validate",
+ value: function validate(value, _utils) {
+ return typeof value === 'number';
+ }
+ }]);
+
+ return NumberSchema;
+ }(schema.Schema);
+
+ exports.NumberSchema = NumberSchema;
+ });
+ unwrapExports(number);
+ var number_1 = number.NumberSchema;
+
+ var integer = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var IntegerSchema =
+ /*#__PURE__*/
+ function (_number_1$NumberSchem) {
+ _inherits(IntegerSchema, _number_1$NumberSchem);
+
+ function IntegerSchema() {
+ _classCallCheck(this, IntegerSchema);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(IntegerSchema).apply(this, arguments));
+ }
+
+ _createClass(IntegerSchema, [{
+ key: "expected",
+ value: function expected() {
+ return 'an integer';
+ }
+ }, {
+ key: "validate",
+ value: function validate(value, utils$1) {
+ return utils$1.normalizeValidateResult(_get(_getPrototypeOf(IntegerSchema.prototype), "validate", this).call(this, value, utils$1), value) === true && utils.isInt(value);
+ }
+ }]);
+
+ return IntegerSchema;
+ }(number.NumberSchema);
+
+ exports.IntegerSchema = IntegerSchema;
+ });
+ unwrapExports(integer);
+ var integer_1 = integer.IntegerSchema;
+
+ var string = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ var StringSchema =
+ /*#__PURE__*/
+ function (_schema_1$Schema) {
+ _inherits(StringSchema, _schema_1$Schema);
+
+ function StringSchema() {
+ _classCallCheck(this, StringSchema);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(StringSchema).apply(this, arguments));
+ }
+
+ _createClass(StringSchema, [{
+ key: "expected",
+ value: function expected() {
+ return 'a string';
+ }
+ }, {
+ key: "validate",
+ value: function validate(value) {
+ return typeof value === 'string';
+ }
+ }]);
+
+ return StringSchema;
+ }(schema.Schema);
+
+ exports.StringSchema = StringSchema;
+ });
+ unwrapExports(string);
+ var string_1 = string.StringSchema;
+
+ var schemas = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_1.__exportStar(alias, exports);
+
+ tslib_1.__exportStar(any, exports);
+
+ tslib_1.__exportStar(array, exports);
+
+ tslib_1.__exportStar(boolean_1, exports);
+
+ tslib_1.__exportStar(choice, exports);
+
+ tslib_1.__exportStar(integer, exports);
+
+ tslib_1.__exportStar(number, exports);
+
+ tslib_1.__exportStar(string, exports);
+ });
+ unwrapExports(schemas);
+
+ var defaults = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.defaultDescriptor = api.apiDescriptor;
+ exports.defaultUnknownHandler = leven_1.levenUnknownHandler;
+ exports.defaultInvalidHandler = invalid.commonInvalidHandler;
+ exports.defaultDeprecatedHandler = common.commonDeprecatedHandler;
+ });
+ unwrapExports(defaults);
+ var defaults_1 = defaults.defaultDescriptor;
+ var defaults_2 = defaults.defaultUnknownHandler;
+ var defaults_3 = defaults.defaultInvalidHandler;
+ var defaults_4 = defaults.defaultDeprecatedHandler;
+
+ var normalize = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ exports.normalize = function (options, schemas, opts) {
+ return new Normalizer(schemas, opts).normalize(options);
+ };
+
+ var Normalizer =
+ /*#__PURE__*/
+ function () {
+ function Normalizer(schemas, opts) {
+ _classCallCheck(this, Normalizer);
+
+ // istanbul ignore next
+ var _ref = opts || {},
+ _ref$logger = _ref.logger,
+ logger = _ref$logger === void 0 ? console : _ref$logger,
+ _ref$descriptor = _ref.descriptor,
+ descriptor = _ref$descriptor === void 0 ? defaults.defaultDescriptor : _ref$descriptor,
+ _ref$unknown = _ref.unknown,
+ unknown = _ref$unknown === void 0 ? defaults.defaultUnknownHandler : _ref$unknown,
+ _ref$invalid = _ref.invalid,
+ invalid = _ref$invalid === void 0 ? defaults.defaultInvalidHandler : _ref$invalid,
+ _ref$deprecated = _ref.deprecated,
+ deprecated = _ref$deprecated === void 0 ? defaults.defaultDeprecatedHandler : _ref$deprecated;
+
+ this._utils = {
+ descriptor: descriptor,
+ logger:
+ /* istanbul ignore next */
+ logger || {
+ warn: function warn() {}
+ },
+ schemas: utils.recordFromArray(schemas, 'name'),
+ normalizeDefaultResult: utils.normalizeDefaultResult,
+ normalizeDeprecatedResult: utils.normalizeDeprecatedResult,
+ normalizeForwardResult: utils.normalizeForwardResult,
+ normalizeRedirectResult: utils.normalizeRedirectResult,
+ normalizeValidateResult: utils.normalizeValidateResult
+ };
+ this._unknownHandler = unknown;
+ this._invalidHandler = invalid;
+ this._deprecatedHandler = deprecated;
+ this.cleanHistory();
+ }
+
+ _createClass(Normalizer, [{
+ key: "cleanHistory",
+ value: function cleanHistory() {
+ this._hasDeprecationWarned = utils.createAutoChecklist();
+ }
+ }, {
+ key: "normalize",
+ value: function normalize(options) {
+ var _this = this;
+
+ var normalized = {};
+ var restOptionsArray = [options];
+
+ var applyNormalization = function applyNormalization() {
+ while (restOptionsArray.length !== 0) {
+ var currentOptions = restOptionsArray.shift();
+
+ var transferredOptionsArray = _this._applyNormalization(currentOptions, normalized);
+
+ restOptionsArray.push.apply(restOptionsArray, _toConsumableArray(transferredOptionsArray));
+ }
+ };
+
+ applyNormalization();
+
+ for (var _i = 0, _Object$keys = Object.keys(this._utils.schemas); _i < _Object$keys.length; _i++) {
+ var key = _Object$keys[_i];
+ var schema = this._utils.schemas[key];
+
+ if (!(key in normalized)) {
+ var defaultResult = utils.normalizeDefaultResult(schema.default(this._utils));
+
+ if ('value' in defaultResult) {
+ restOptionsArray.push(_defineProperty({}, key, defaultResult.value));
+ }
+ }
+ }
+
+ applyNormalization();
+
+ for (var _i2 = 0, _Object$keys2 = Object.keys(this._utils.schemas); _i2 < _Object$keys2.length; _i2++) {
+ var _key = _Object$keys2[_i2];
+ var _schema = this._utils.schemas[_key];
+
+ if (_key in normalized) {
+ normalized[_key] = _schema.postprocess(normalized[_key], this._utils);
+ }
+ }
+
+ return normalized;
+ }
+ }, {
+ key: "_applyNormalization",
+ value: function _applyNormalization(options, normalized) {
+ var _this2 = this;
+
+ var transferredOptionsArray = [];
+
+ var _utils_1$partition = utils.partition(Object.keys(options), function (key) {
+ return key in _this2._utils.schemas;
+ }),
+ _utils_1$partition2 = _slicedToArray(_utils_1$partition, 2),
+ knownOptionNames = _utils_1$partition2[0],
+ unknownOptionNames = _utils_1$partition2[1];
+
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ var _loop = function _loop() {
+ var key = _step.value;
+ var schema = _this2._utils.schemas[key];
+ var value = schema.preprocess(options[key], _this2._utils);
+ var validateResult = utils.normalizeValidateResult(schema.validate(value, _this2._utils), value);
+
+ if (validateResult !== true) {
+ var invalidValue = validateResult.value;
+
+ var errorMessageOrError = _this2._invalidHandler(key, invalidValue, _this2._utils);
+
+ throw typeof errorMessageOrError === 'string' ? new Error(errorMessageOrError) :
+ /* istanbul ignore next*/
+ errorMessageOrError;
+ }
+
+ var appendTransferredOptions = function appendTransferredOptions(_ref2) {
+ var from = _ref2.from,
+ to = _ref2.to;
+ transferredOptionsArray.push(typeof to === 'string' ? _defineProperty({}, to, from) : _defineProperty({}, to.key, to.value));
+ };
+
+ var warnDeprecated = function warnDeprecated(_ref5) {
+ var currentValue = _ref5.value,
+ redirectTo = _ref5.redirectTo;
+ var deprecatedResult = utils.normalizeDeprecatedResult(schema.deprecated(currentValue, _this2._utils), value,
+ /* doNotNormalizeTrue */
+ true);
+
+ if (deprecatedResult === false) {
+ return;
+ }
+
+ if (deprecatedResult === true) {
+ if (!_this2._hasDeprecationWarned(key)) {
+ _this2._utils.logger.warn(_this2._deprecatedHandler(key, redirectTo, _this2._utils));
+ }
+ } else {
+ var _iteratorNormalCompletion3 = true;
+ var _didIteratorError3 = false;
+ var _iteratorError3 = undefined;
+
+ try {
+ for (var _iterator3 = deprecatedResult[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
+ var deprecatedValue = _step3.value.value;
+ var pair = {
+ key: key,
+ value: deprecatedValue
+ };
+
+ if (!_this2._hasDeprecationWarned(pair)) {
+ var redirectToPair = typeof redirectTo === 'string' ? {
+ key: redirectTo,
+ value: deprecatedValue
+ } : redirectTo;
+
+ _this2._utils.logger.warn(_this2._deprecatedHandler(pair, redirectToPair, _this2._utils));
+ }
+ }
+ } catch (err) {
+ _didIteratorError3 = true;
+ _iteratorError3 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
+ _iterator3.return();
+ }
+ } finally {
+ if (_didIteratorError3) {
+ throw _iteratorError3;
+ }
+ }
+ }
+ }
+ };
+
+ var forwardResult = utils.normalizeForwardResult(schema.forward(value, _this2._utils), value);
+ forwardResult.forEach(appendTransferredOptions);
+ var redirectResult = utils.normalizeRedirectResult(schema.redirect(value, _this2._utils), value);
+ redirectResult.redirect.forEach(appendTransferredOptions);
+
+ if ('remain' in redirectResult) {
+ var remainingValue = redirectResult.remain;
+ normalized[key] = key in normalized ? schema.overlap(normalized[key], remainingValue, _this2._utils) : remainingValue;
+ warnDeprecated({
+ value: remainingValue
+ });
+ }
+
+ var _iteratorNormalCompletion4 = true;
+ var _didIteratorError4 = false;
+ var _iteratorError4 = undefined;
+
+ try {
+ for (var _iterator4 = redirectResult.redirect[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
+ var _step4$value = _step4.value,
+ from = _step4$value.from,
+ to = _step4$value.to;
+ warnDeprecated({
+ value: from,
+ redirectTo: to
+ });
+ }
+ } catch (err) {
+ _didIteratorError4 = true;
+ _iteratorError4 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
+ _iterator4.return();
+ }
+ } finally {
+ if (_didIteratorError4) {
+ throw _iteratorError4;
+ }
+ }
+ }
+ };
+
+ for (var _iterator = knownOptionNames[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ _loop();
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = unknownOptionNames[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var key = _step2.value;
+ var value = options[key];
+
+ var unknownResult = this._unknownHandler(key, value, this._utils);
+
+ if (unknownResult) {
+ for (var _i3 = 0, _Object$keys3 = Object.keys(unknownResult); _i3 < _Object$keys3.length; _i3++) {
+ var unknownKey = _Object$keys3[_i3];
+
+ var unknownOption = _defineProperty({}, unknownKey, unknownResult[unknownKey]);
+
+ if (unknownKey in this._utils.schemas) {
+ transferredOptionsArray.push(unknownOption);
+ } else {
+ Object.assign(normalized, unknownOption);
+ }
+ }
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return transferredOptionsArray;
+ }
+ }]);
+
+ return Normalizer;
+ }();
+
+ exports.Normalizer = Normalizer;
+ });
+ unwrapExports(normalize);
+ var normalize_1 = normalize.normalize;
+ var normalize_2 = normalize.Normalizer;
+
+ var lib = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+
+ tslib_1.__exportStar(descriptors, exports);
+
+ tslib_1.__exportStar(handlers, exports);
+
+ tslib_1.__exportStar(schemas, exports);
+
+ tslib_1.__exportStar(normalize, exports);
+
+ tslib_1.__exportStar(schema, exports);
+ });
+ unwrapExports(lib);
+
+ var array$1 = [];
+ var charCodeCache$1 = [];
+
+ var leven$1 = function leven(left, right) {
+ if (left === right) {
+ return 0;
+ }
+
+ var swap = left; // Swapping the strings if `a` is longer than `b` so we know which one is the
+ // shortest & which one is the longest
+
+ if (left.length > right.length) {
+ left = right;
+ right = swap;
+ }
+
+ var leftLength = left.length;
+ var rightLength = right.length; // Performing suffix trimming:
+ // We can linearly drop suffix common to both strings since they
+ // don't increase distance at all
+ // Note: `~-` is the bitwise way to perform a `- 1` operation
+
+ while (leftLength > 0 && left.charCodeAt(~-leftLength) === right.charCodeAt(~-rightLength)) {
+ leftLength--;
+ rightLength--;
+ } // Performing prefix trimming
+ // We can linearly drop prefix common to both strings since they
+ // don't increase distance at all
+
+
+ var start = 0;
+
+ while (start < leftLength && left.charCodeAt(start) === right.charCodeAt(start)) {
+ start++;
+ }
+
+ leftLength -= start;
+ rightLength -= start;
+
+ if (leftLength === 0) {
+ return rightLength;
+ }
+
+ var bCharCode;
+ var result;
+ var temp;
+ var temp2;
+ var i = 0;
+ var j = 0;
+
+ while (i < leftLength) {
+ charCodeCache$1[i] = left.charCodeAt(start + i);
+ array$1[i] = ++i;
+ }
+
+ while (j < rightLength) {
+ bCharCode = right.charCodeAt(start + j);
+ temp = j++;
+ result = j;
+
+ for (i = 0; i < leftLength; i++) {
+ temp2 = bCharCode === charCodeCache$1[i] ? temp : temp + 1;
+ temp = array$1[i]; // eslint-disable-next-line no-multi-assign
+
+ result = array$1[i] = temp > result ? temp2 > result ? result + 1 : temp2 : temp2 > temp ? temp + 1 : temp2;
+ }
+ }
+
+ return result;
+ };
+
+ var leven_1$1 = leven$1; // TODO: Remove this for the next major release
+
+ var default_1 = leven$1;
+ leven_1$1.default = default_1;
+
+ var cliDescriptor = {
+ key: function key(_key) {
+ return _key.length === 1 ? "-".concat(_key) : "--".concat(_key);
+ },
+ value: function value(_value) {
+ return lib.apiDescriptor.value(_value);
+ },
+ pair: function pair(_ref) {
+ var key = _ref.key,
+ value = _ref.value;
+ return value === false ? "--no-".concat(key) : value === true ? cliDescriptor.key(key) : value === "" ? "".concat(cliDescriptor.key(key), " without an argument") : "".concat(cliDescriptor.key(key), "=").concat(value);
+ }
+ };
+
+ var FlagSchema =
+ /*#__PURE__*/
+ function (_vnopts$ChoiceSchema) {
+ _inherits(FlagSchema, _vnopts$ChoiceSchema);
+
+ function FlagSchema(_ref2) {
+ var _this;
+
+ var name = _ref2.name,
+ flags = _ref2.flags;
+
+ _classCallCheck(this, FlagSchema);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(FlagSchema).call(this, {
+ name: name,
+ choices: flags
+ }));
+ _this._flags = flags.slice().sort();
+ return _this;
+ }
+
+ _createClass(FlagSchema, [{
+ key: "preprocess",
+ value: function preprocess(value, utils) {
+ if (typeof value === "string" && value.length !== 0 && this._flags.indexOf(value) === -1) {
+ var suggestion = this._flags.find(function (flag) {
+ return leven_1$1(flag, value) < 3;
+ });
+
+ if (suggestion) {
+ utils.logger.warn(["Unknown flag ".concat(chalk.yellow(utils.descriptor.value(value)), ","), "did you mean ".concat(chalk.blue(utils.descriptor.value(suggestion)), "?")].join(" "));
+ return suggestion;
+ }
+ }
+
+ return value;
+ }
+ }, {
+ key: "expected",
+ value: function expected() {
+ return "a flag";
+ }
+ }]);
+
+ return FlagSchema;
+ }(lib.ChoiceSchema);
+
+ var hasDeprecationWarned;
+
+ function normalizeOptions(options, optionInfos) {
+ var _ref3 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
+ logger = _ref3.logger,
+ _ref3$isCLI = _ref3.isCLI,
+ isCLI = _ref3$isCLI === void 0 ? false : _ref3$isCLI,
+ _ref3$passThrough = _ref3.passThrough,
+ passThrough = _ref3$passThrough === void 0 ? false : _ref3$passThrough;
+
+ var unknown = !passThrough ? lib.levenUnknownHandler : Array.isArray(passThrough) ? function (key, value) {
+ return passThrough.indexOf(key) === -1 ? undefined : _defineProperty({}, key, value);
+ } : function (key, value) {
+ return _defineProperty({}, key, value);
+ };
+ var descriptor = isCLI ? cliDescriptor : lib.apiDescriptor;
+ var schemas = optionInfosToSchemas(optionInfos, {
+ isCLI: isCLI
+ });
+ var normalizer = new lib.Normalizer(schemas, {
+ logger: logger,
+ unknown: unknown,
+ descriptor: descriptor
+ });
+ var shouldSuppressDuplicateDeprecationWarnings = logger !== false;
+
+ if (shouldSuppressDuplicateDeprecationWarnings && hasDeprecationWarned) {
+ normalizer._hasDeprecationWarned = hasDeprecationWarned;
+ }
+
+ var normalized = normalizer.normalize(options);
+
+ if (shouldSuppressDuplicateDeprecationWarnings) {
+ hasDeprecationWarned = normalizer._hasDeprecationWarned;
+ }
+
+ return normalized;
+ }
+
+ function optionInfosToSchemas(optionInfos, _ref6) {
+ var isCLI = _ref6.isCLI;
+ var schemas = [];
+
+ if (isCLI) {
+ schemas.push(lib.AnySchema.create({
+ name: "_"
+ }));
+ }
+
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = optionInfos[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var optionInfo = _step.value;
+ schemas.push(optionInfoToSchema(optionInfo, {
+ isCLI: isCLI,
+ optionInfos: optionInfos
+ }));
+
+ if (optionInfo.alias && isCLI) {
+ schemas.push(lib.AliasSchema.create({
+ name: optionInfo.alias,
+ sourceName: optionInfo.name
+ }));
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return schemas;
+ }
+
+ function optionInfoToSchema(optionInfo, _ref7) {
+ var isCLI = _ref7.isCLI,
+ optionInfos = _ref7.optionInfos;
+ var SchemaConstructor;
+ var parameters = {
+ name: optionInfo.name
+ };
+ var handlers = {};
+
+ switch (optionInfo.type) {
+ case "int":
+ SchemaConstructor = lib.IntegerSchema;
+
+ if (isCLI) {
+ parameters.preprocess = function (value) {
+ return Number(value);
+ };
+ }
+
+ break;
+
+ case "string":
+ SchemaConstructor = lib.StringSchema;
+ break;
+
+ case "choice":
+ SchemaConstructor = lib.ChoiceSchema;
+ parameters.choices = optionInfo.choices.map(function (choiceInfo) {
+ return _typeof(choiceInfo) === "object" && choiceInfo.redirect ? Object.assign({}, choiceInfo, {
+ redirect: {
+ to: {
+ key: optionInfo.name,
+ value: choiceInfo.redirect
+ }
+ }
+ }) : choiceInfo;
+ });
+ break;
+
+ case "boolean":
+ SchemaConstructor = lib.BooleanSchema;
+ break;
+
+ case "flag":
+ SchemaConstructor = FlagSchema;
+ parameters.flags = optionInfos.map(function (optionInfo) {
+ return [].concat(optionInfo.alias || [], optionInfo.description ? optionInfo.name : [], optionInfo.oppositeDescription ? "no-".concat(optionInfo.name) : []);
+ }).reduce(function (a, b) {
+ return a.concat(b);
+ }, []);
+ break;
+
+ case "path":
+ SchemaConstructor = lib.StringSchema;
+ break;
+
+ default:
+ throw new Error("Unexpected type ".concat(optionInfo.type));
+ }
+
+ if (optionInfo.exception) {
+ parameters.validate = function (value, schema, utils) {
+ return optionInfo.exception(value) || schema.validate(value, utils);
+ };
+ } else {
+ parameters.validate = function (value, schema, utils) {
+ return value === undefined || schema.validate(value, utils);
+ };
+ }
+
+ if (optionInfo.redirect) {
+ handlers.redirect = function (value) {
+ return !value ? undefined : {
+ to: {
+ key: optionInfo.redirect.option,
+ value: optionInfo.redirect.value
+ }
+ };
+ };
+ }
+
+ if (optionInfo.deprecated) {
+ handlers.deprecated = true;
+ } // allow CLI overriding, e.g., prettier package.json --tab-width 1 --tab-width 2
+
+
+ if (isCLI && !optionInfo.array) {
+ var originalPreprocess = parameters.preprocess || function (x) {
+ return x;
+ };
+
+ parameters.preprocess = function (value, schema, utils) {
+ return schema.preprocess(originalPreprocess(Array.isArray(value) ? value[value.length - 1] : value), utils);
+ };
+ }
+
+ return optionInfo.array ? lib.ArraySchema.create(Object.assign(isCLI ? {
+ preprocess: function preprocess(v) {
+ return [].concat(v);
+ }
+ } : {}, handlers, {
+ valueSchema: SchemaConstructor.create(parameters)
+ })) : SchemaConstructor.create(Object.assign({}, parameters, handlers));
+ }
+
+ function normalizeApiOptions(options, optionInfos, opts) {
+ return normalizeOptions(options, optionInfos, opts);
+ }
+
+ function normalizeCliOptions(options, optionInfos, opts) {
+ return normalizeOptions(options, optionInfos, Object.assign({
+ isCLI: true
+ }, opts));
+ }
+
+ var optionsNormalizer = {
+ normalizeApiOptions: normalizeApiOptions,
+ normalizeCliOptions: normalizeCliOptions
+ };
+
+ var getLast = function getLast(arr) {
+ return arr.length > 0 ? arr[arr.length - 1] : null;
+ };
+
+ function locStart(node, opts) {
+ opts = opts || {}; // Handle nodes with decorators. They should start at the first decorator
+
+ if (!opts.ignoreDecorators && node.declaration && node.declaration.decorators && node.declaration.decorators.length > 0) {
+ return locStart(node.declaration.decorators[0]);
+ }
+
+ if (!opts.ignoreDecorators && node.decorators && node.decorators.length > 0) {
+ return locStart(node.decorators[0]);
+ }
+
+ if (node.__location) {
+ return node.__location.startOffset;
+ }
+
+ if (node.range) {
+ return node.range[0];
+ }
+
+ if (typeof node.start === "number") {
+ return node.start;
+ }
+
+ if (node.loc) {
+ return node.loc.start;
+ }
+
+ return null;
+ }
+
+ function locEnd(node) {
+ var endNode = node.nodes && getLast(node.nodes);
+
+ if (endNode && node.source && !node.source.end) {
+ node = endNode;
+ }
+
+ if (node.__location) {
+ return node.__location.endOffset;
+ }
+
+ var loc = node.range ? node.range[1] : typeof node.end === "number" ? node.end : null;
+
+ if (node.typeAnnotation) {
+ return Math.max(loc, locEnd(node.typeAnnotation));
+ }
+
+ if (node.loc && !loc) {
+ return node.loc.end;
+ }
+
+ return loc;
+ }
+
+ var loc = {
+ locStart: locStart,
+ locEnd: locEnd
+ };
+
+ var jsTokens = createCommonjsModule(function (module, exports) {
+ // Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell
+ // License: MIT. (See LICENSE.)
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ }); // This regex comes from regex.coffee, and is inserted here by generate-index.js
+ // (run `npm run build`).
+
+ exports.default = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g;
+
+ exports.matchToToken = function (match) {
+ var token = {
+ type: "invalid",
+ value: match[0],
+ closed: undefined
+ };
+ if (match[1]) token.type = "string", token.closed = !!(match[3] || match[4]);else if (match[5]) token.type = "comment";else if (match[6]) token.type = "comment", token.closed = !!match[7];else if (match[8]) token.type = "regex";else if (match[9]) token.type = "number";else if (match[10]) token.type = "name";else if (match[11]) token.type = "punctuator";else if (match[12]) token.type = "whitespace";
+ return token;
+ };
+ });
+ unwrapExports(jsTokens);
+ var jsTokens_1 = jsTokens.matchToToken;
+
+ var ast = createCommonjsModule(function (module) {
+ /*
+ Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ (function () {
+
+ function isExpression(node) {
+ if (node == null) {
+ return false;
+ }
+
+ switch (node.type) {
+ case 'ArrayExpression':
+ case 'AssignmentExpression':
+ case 'BinaryExpression':
+ case 'CallExpression':
+ case 'ConditionalExpression':
+ case 'FunctionExpression':
+ case 'Identifier':
+ case 'Literal':
+ case 'LogicalExpression':
+ case 'MemberExpression':
+ case 'NewExpression':
+ case 'ObjectExpression':
+ case 'SequenceExpression':
+ case 'ThisExpression':
+ case 'UnaryExpression':
+ case 'UpdateExpression':
+ return true;
+ }
+
+ return false;
+ }
+
+ function isIterationStatement(node) {
+ if (node == null) {
+ return false;
+ }
+
+ switch (node.type) {
+ case 'DoWhileStatement':
+ case 'ForInStatement':
+ case 'ForStatement':
+ case 'WhileStatement':
+ return true;
+ }
+
+ return false;
+ }
+
+ function isStatement(node) {
+ if (node == null) {
+ return false;
+ }
+
+ switch (node.type) {
+ case 'BlockStatement':
+ case 'BreakStatement':
+ case 'ContinueStatement':
+ case 'DebuggerStatement':
+ case 'DoWhileStatement':
+ case 'EmptyStatement':
+ case 'ExpressionStatement':
+ case 'ForInStatement':
+ case 'ForStatement':
+ case 'IfStatement':
+ case 'LabeledStatement':
+ case 'ReturnStatement':
+ case 'SwitchStatement':
+ case 'ThrowStatement':
+ case 'TryStatement':
+ case 'VariableDeclaration':
+ case 'WhileStatement':
+ case 'WithStatement':
+ return true;
+ }
+
+ return false;
+ }
+
+ function isSourceElement(node) {
+ return isStatement(node) || node != null && node.type === 'FunctionDeclaration';
+ }
+
+ function trailingStatement(node) {
+ switch (node.type) {
+ case 'IfStatement':
+ if (node.alternate != null) {
+ return node.alternate;
+ }
+
+ return node.consequent;
+
+ case 'LabeledStatement':
+ case 'ForStatement':
+ case 'ForInStatement':
+ case 'WhileStatement':
+ case 'WithStatement':
+ return node.body;
+ }
+
+ return null;
+ }
+
+ function isProblematicIfStatement(node) {
+ var current;
+
+ if (node.type !== 'IfStatement') {
+ return false;
+ }
+
+ if (node.alternate == null) {
+ return false;
+ }
+
+ current = node.consequent;
+
+ do {
+ if (current.type === 'IfStatement') {
+ if (current.alternate == null) {
+ return true;
+ }
+ }
+
+ current = trailingStatement(current);
+ } while (current);
+
+ return false;
+ }
+
+ module.exports = {
+ isExpression: isExpression,
+ isStatement: isStatement,
+ isIterationStatement: isIterationStatement,
+ isSourceElement: isSourceElement,
+ isProblematicIfStatement: isProblematicIfStatement,
+ trailingStatement: trailingStatement
+ };
+ })();
+ /* vim: set sw=4 ts=4 et tw=80 : */
+
+ });
+ var ast_1 = ast.isExpression;
+ var ast_2 = ast.isStatement;
+ var ast_3 = ast.isIterationStatement;
+ var ast_4 = ast.isSourceElement;
+ var ast_5 = ast.isProblematicIfStatement;
+ var ast_6 = ast.trailingStatement;
+
+ var code = createCommonjsModule(function (module) {
+ /*
+ Copyright (C) 2013-2014 Yusuke Suzuki <utatane.tea@gmail.com>
+ Copyright (C) 2014 Ivan Nikulin <ifaaan@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ (function () {
+
+ var ES6Regex, ES5Regex, NON_ASCII_WHITESPACES, IDENTIFIER_START, IDENTIFIER_PART, ch; // See `tools/generate-identifier-regex.js`.
+
+ ES5Regex = {
+ // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierStart:
+ NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,
+ // ECMAScript 5.1/Unicode v9.0.0 NonAsciiIdentifierPart:
+ NonAsciiIdentifierPart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/
+ };
+ ES6Regex = {
+ // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierStart:
+ NonAsciiIdentifierStart: /[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/,
+ // ECMAScript 6/Unicode v9.0.0 NonAsciiIdentifierPart:
+ NonAsciiIdentifierPart: /[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/
+ };
+
+ function isDecimalDigit(ch) {
+ return 0x30 <= ch && ch <= 0x39; // 0..9
+ }
+
+ function isHexDigit(ch) {
+ return 0x30 <= ch && ch <= 0x39 || // 0..9
+ 0x61 <= ch && ch <= 0x66 || // a..f
+ 0x41 <= ch && ch <= 0x46; // A..F
+ }
+
+ function isOctalDigit(ch) {
+ return ch >= 0x30 && ch <= 0x37; // 0..7
+ } // 7.2 White Space
+
+
+ NON_ASCII_WHITESPACES = [0x1680, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009, 0x200A, 0x202F, 0x205F, 0x3000, 0xFEFF];
+
+ function isWhiteSpace(ch) {
+ return ch === 0x20 || ch === 0x09 || ch === 0x0B || ch === 0x0C || ch === 0xA0 || ch >= 0x1680 && NON_ASCII_WHITESPACES.indexOf(ch) >= 0;
+ } // 7.3 Line Terminators
+
+
+ function isLineTerminator(ch) {
+ return ch === 0x0A || ch === 0x0D || ch === 0x2028 || ch === 0x2029;
+ } // 7.6 Identifier Names and Identifiers
+
+
+ function fromCodePoint(cp) {
+ if (cp <= 0xFFFF) {
+ return String.fromCharCode(cp);
+ }
+
+ var cu1 = String.fromCharCode(Math.floor((cp - 0x10000) / 0x400) + 0xD800);
+ var cu2 = String.fromCharCode((cp - 0x10000) % 0x400 + 0xDC00);
+ return cu1 + cu2;
+ }
+
+ IDENTIFIER_START = new Array(0x80);
+
+ for (ch = 0; ch < 0x80; ++ch) {
+ IDENTIFIER_START[ch] = ch >= 0x61 && ch <= 0x7A || // a..z
+ ch >= 0x41 && ch <= 0x5A || // A..Z
+ ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore)
+ }
+
+ IDENTIFIER_PART = new Array(0x80);
+
+ for (ch = 0; ch < 0x80; ++ch) {
+ IDENTIFIER_PART[ch] = ch >= 0x61 && ch <= 0x7A || // a..z
+ ch >= 0x41 && ch <= 0x5A || // A..Z
+ ch >= 0x30 && ch <= 0x39 || // 0..9
+ ch === 0x24 || ch === 0x5F; // $ (dollar) and _ (underscore)
+ }
+
+ function isIdentifierStartES5(ch) {
+ return ch < 0x80 ? IDENTIFIER_START[ch] : ES5Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));
+ }
+
+ function isIdentifierPartES5(ch) {
+ return ch < 0x80 ? IDENTIFIER_PART[ch] : ES5Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));
+ }
+
+ function isIdentifierStartES6(ch) {
+ return ch < 0x80 ? IDENTIFIER_START[ch] : ES6Regex.NonAsciiIdentifierStart.test(fromCodePoint(ch));
+ }
+
+ function isIdentifierPartES6(ch) {
+ return ch < 0x80 ? IDENTIFIER_PART[ch] : ES6Regex.NonAsciiIdentifierPart.test(fromCodePoint(ch));
+ }
+
+ module.exports = {
+ isDecimalDigit: isDecimalDigit,
+ isHexDigit: isHexDigit,
+ isOctalDigit: isOctalDigit,
+ isWhiteSpace: isWhiteSpace,
+ isLineTerminator: isLineTerminator,
+ isIdentifierStartES5: isIdentifierStartES5,
+ isIdentifierPartES5: isIdentifierPartES5,
+ isIdentifierStartES6: isIdentifierStartES6,
+ isIdentifierPartES6: isIdentifierPartES6
+ };
+ })();
+ /* vim: set sw=4 ts=4 et tw=80 : */
+
+ });
+ var code_1 = code.isDecimalDigit;
+ var code_2 = code.isHexDigit;
+ var code_3 = code.isOctalDigit;
+ var code_4 = code.isWhiteSpace;
+ var code_5 = code.isLineTerminator;
+ var code_6 = code.isIdentifierStartES5;
+ var code_7 = code.isIdentifierPartES5;
+ var code_8 = code.isIdentifierStartES6;
+ var code_9 = code.isIdentifierPartES6;
+
+ var keyword = createCommonjsModule(function (module) {
+ /*
+ Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ (function () {
+
+ var code$1 = code;
+
+ function isStrictModeReservedWordES6(id) {
+ switch (id) {
+ case 'implements':
+ case 'interface':
+ case 'package':
+ case 'private':
+ case 'protected':
+ case 'public':
+ case 'static':
+ case 'let':
+ return true;
+
+ default:
+ return false;
+ }
+ }
+
+ function isKeywordES5(id, strict) {
+ // yield should not be treated as keyword under non-strict mode.
+ if (!strict && id === 'yield') {
+ return false;
+ }
+
+ return isKeywordES6(id, strict);
+ }
+
+ function isKeywordES6(id, strict) {
+ if (strict && isStrictModeReservedWordES6(id)) {
+ return true;
+ }
+
+ switch (id.length) {
+ case 2:
+ return id === 'if' || id === 'in' || id === 'do';
+
+ case 3:
+ return id === 'var' || id === 'for' || id === 'new' || id === 'try';
+
+ case 4:
+ return id === 'this' || id === 'else' || id === 'case' || id === 'void' || id === 'with' || id === 'enum';
+
+ case 5:
+ return id === 'while' || id === 'break' || id === 'catch' || id === 'throw' || id === 'const' || id === 'yield' || id === 'class' || id === 'super';
+
+ case 6:
+ return id === 'return' || id === 'typeof' || id === 'delete' || id === 'switch' || id === 'export' || id === 'import';
+
+ case 7:
+ return id === 'default' || id === 'finally' || id === 'extends';
+
+ case 8:
+ return id === 'function' || id === 'continue' || id === 'debugger';
+
+ case 10:
+ return id === 'instanceof';
+
+ default:
+ return false;
+ }
+ }
+
+ function isReservedWordES5(id, strict) {
+ return id === 'null' || id === 'true' || id === 'false' || isKeywordES5(id, strict);
+ }
+
+ function isReservedWordES6(id, strict) {
+ return id === 'null' || id === 'true' || id === 'false' || isKeywordES6(id, strict);
+ }
+
+ function isRestrictedWord(id) {
+ return id === 'eval' || id === 'arguments';
+ }
+
+ function isIdentifierNameES5(id) {
+ var i, iz, ch;
+
+ if (id.length === 0) {
+ return false;
+ }
+
+ ch = id.charCodeAt(0);
+
+ if (!code$1.isIdentifierStartES5(ch)) {
+ return false;
+ }
+
+ for (i = 1, iz = id.length; i < iz; ++i) {
+ ch = id.charCodeAt(i);
+
+ if (!code$1.isIdentifierPartES5(ch)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ function decodeUtf16(lead, trail) {
+ return (lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000;
+ }
+
+ function isIdentifierNameES6(id) {
+ var i, iz, ch, lowCh, check;
+
+ if (id.length === 0) {
+ return false;
+ }
+
+ check = code$1.isIdentifierStartES6;
+
+ for (i = 0, iz = id.length; i < iz; ++i) {
+ ch = id.charCodeAt(i);
+
+ if (0xD800 <= ch && ch <= 0xDBFF) {
+ ++i;
+
+ if (i >= iz) {
+ return false;
+ }
+
+ lowCh = id.charCodeAt(i);
+
+ if (!(0xDC00 <= lowCh && lowCh <= 0xDFFF)) {
+ return false;
+ }
+
+ ch = decodeUtf16(ch, lowCh);
+ }
+
+ if (!check(ch)) {
+ return false;
+ }
+
+ check = code$1.isIdentifierPartES6;
+ }
+
+ return true;
+ }
+
+ function isIdentifierES5(id, strict) {
+ return isIdentifierNameES5(id) && !isReservedWordES5(id, strict);
+ }
+
+ function isIdentifierES6(id, strict) {
+ return isIdentifierNameES6(id) && !isReservedWordES6(id, strict);
+ }
+
+ module.exports = {
+ isKeywordES5: isKeywordES5,
+ isKeywordES6: isKeywordES6,
+ isReservedWordES5: isReservedWordES5,
+ isReservedWordES6: isReservedWordES6,
+ isRestrictedWord: isRestrictedWord,
+ isIdentifierNameES5: isIdentifierNameES5,
+ isIdentifierNameES6: isIdentifierNameES6,
+ isIdentifierES5: isIdentifierES5,
+ isIdentifierES6: isIdentifierES6
+ };
+ })();
+ /* vim: set sw=4 ts=4 et tw=80 : */
+
+ });
+ var keyword_1 = keyword.isKeywordES5;
+ var keyword_2 = keyword.isKeywordES6;
+ var keyword_3 = keyword.isReservedWordES5;
+ var keyword_4 = keyword.isReservedWordES6;
+ var keyword_5 = keyword.isRestrictedWord;
+ var keyword_6 = keyword.isIdentifierNameES5;
+ var keyword_7 = keyword.isIdentifierNameES6;
+ var keyword_8 = keyword.isIdentifierES5;
+ var keyword_9 = keyword.isIdentifierES6;
+
+ var utils$1 = createCommonjsModule(function (module, exports) {
+ /*
+ Copyright (C) 2013 Yusuke Suzuki <utatane.tea@gmail.com>
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+ (function () {
+
+ exports.ast = ast;
+ exports.code = code;
+ exports.keyword = keyword;
+ })();
+ /* vim: set sw=4 ts=4 et tw=80 : */
+
+ });
+ var utils_1$1 = utils$1.ast;
+ var utils_2$1 = utils$1.code;
+ var utils_3$1 = utils$1.keyword;
+
+ var lib$1 = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.shouldHighlight = shouldHighlight;
+ exports.getChalk = getChalk;
+ exports.default = highlight;
+
+ function _jsTokens() {
+ var data = _interopRequireWildcard(jsTokens);
+
+ _jsTokens = function _jsTokens() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _esutils() {
+ var data = _interopRequireDefault(utils$1);
+
+ _esutils = function _esutils() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _chalk() {
+ var data = _interopRequireDefault(chalk);
+
+ _chalk = function _chalk() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+
+ function _interopRequireWildcard(obj) {
+ if (obj && obj.__esModule) {
+ return obj;
+ } else {
+ var newObj = {};
+
+ if (obj != null) {
+ for (var key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
+
+ if (desc.get || desc.set) {
+ Object.defineProperty(newObj, key, desc);
+ } else {
+ newObj[key] = obj[key];
+ }
+ }
+ }
+ }
+
+ newObj.default = obj;
+ return newObj;
+ }
+ }
+
+ function getDefs(chalk) {
+ return {
+ keyword: chalk.cyan,
+ capitalized: chalk.yellow,
+ jsx_tag: chalk.yellow,
+ punctuator: chalk.yellow,
+ number: chalk.magenta,
+ string: chalk.green,
+ regex: chalk.magenta,
+ comment: chalk.grey,
+ invalid: chalk.white.bgRed.bold
+ };
+ }
+
+ var NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
+ var JSX_TAG = /^[a-z][\w-]*$/i;
+ var BRACKET = /^[()[\]{}]$/;
+
+ function getTokenType(match) {
+ var _match$slice = match.slice(-2),
+ _match$slice2 = _slicedToArray(_match$slice, 2),
+ offset = _match$slice2[0],
+ text = _match$slice2[1];
+
+ var token = (0, _jsTokens().matchToToken)(match);
+
+ if (token.type === "name") {
+ if (_esutils().default.keyword.isReservedWordES6(token.value)) {
+ return "keyword";
+ }
+
+ if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.substr(offset - 2, 2) == "</")) {
+ return "jsx_tag";
+ }
+
+ if (token.value[0] !== token.value[0].toLowerCase()) {
+ return "capitalized";
+ }
+ }
+
+ if (token.type === "punctuator" && BRACKET.test(token.value)) {
+ return "bracket";
+ }
+
+ if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
+ return "punctuator";
+ }
+
+ return token.type;
+ }
+
+ function highlightTokens(defs, text) {
+ return text.replace(_jsTokens().default, function () {
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ var type = getTokenType(args);
+ var colorize = defs[type];
+
+ if (colorize) {
+ return args[0].split(NEWLINE).map(function (str) {
+ return colorize(str);
+ }).join("\n");
+ } else {
+ return args[0];
+ }
+ });
+ }
+
+ function shouldHighlight(options) {
+ return _chalk().default.supportsColor || options.forceColor;
+ }
+
+ function getChalk(options) {
+ var chalk = _chalk().default;
+
+ if (options.forceColor) {
+ chalk = new (_chalk().default.constructor)({
+ enabled: true,
+ level: 1
+ });
+ }
+
+ return chalk;
+ }
+
+ function highlight(code) {
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ if (shouldHighlight(options)) {
+ var chalk = getChalk(options);
+ var defs = getDefs(chalk);
+ return highlightTokens(defs, code);
+ } else {
+ return code;
+ }
+ }
+ });
+ unwrapExports(lib$1);
+ var lib_1 = lib$1.shouldHighlight;
+ var lib_2 = lib$1.getChalk;
+
+ var lib$2 = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, "__esModule", {
+ value: true
+ });
+ exports.codeFrameColumns = codeFrameColumns;
+ exports.default = _default;
+
+ function _highlight() {
+ var data = _interopRequireWildcard(lib$1);
+
+ _highlight = function _highlight() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _interopRequireWildcard(obj) {
+ if (obj && obj.__esModule) {
+ return obj;
+ } else {
+ var newObj = {};
+
+ if (obj != null) {
+ for (var key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
+ var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
+
+ if (desc.get || desc.set) {
+ Object.defineProperty(newObj, key, desc);
+ } else {
+ newObj[key] = obj[key];
+ }
+ }
+ }
+ }
+
+ newObj.default = obj;
+ return newObj;
+ }
+ }
+
+ var deprecationWarningShown = false;
+
+ function getDefs(chalk) {
+ return {
+ gutter: chalk.grey,
+ marker: chalk.red.bold,
+ message: chalk.red.bold
+ };
+ }
+
+ var NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
+
+ function getMarkerLines(loc, source, opts) {
+ var startLoc = Object.assign({
+ column: 0,
+ line: -1
+ }, loc.start);
+ var endLoc = Object.assign({}, startLoc, loc.end);
+
+ var _ref = opts || {},
+ _ref$linesAbove = _ref.linesAbove,
+ linesAbove = _ref$linesAbove === void 0 ? 2 : _ref$linesAbove,
+ _ref$linesBelow = _ref.linesBelow,
+ linesBelow = _ref$linesBelow === void 0 ? 3 : _ref$linesBelow;
+
+ var startLine = startLoc.line;
+ var startColumn = startLoc.column;
+ var endLine = endLoc.line;
+ var endColumn = endLoc.column;
+ var start = Math.max(startLine - (linesAbove + 1), 0);
+ var end = Math.min(source.length, endLine + linesBelow);
+
+ if (startLine === -1) {
+ start = 0;
+ }
+
+ if (endLine === -1) {
+ end = source.length;
+ }
+
+ var lineDiff = endLine - startLine;
+ var markerLines = {};
+
+ if (lineDiff) {
+ for (var i = 0; i <= lineDiff; i++) {
+ var lineNumber = i + startLine;
+
+ if (!startColumn) {
+ markerLines[lineNumber] = true;
+ } else if (i === 0) {
+ var sourceLength = source[lineNumber - 1].length;
+ markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
+ } else if (i === lineDiff) {
+ markerLines[lineNumber] = [0, endColumn];
+ } else {
+ var _sourceLength = source[lineNumber - i].length;
+ markerLines[lineNumber] = [0, _sourceLength];
+ }
+ }
+ } else {
+ if (startColumn === endColumn) {
+ if (startColumn) {
+ markerLines[startLine] = [startColumn, 0];
+ } else {
+ markerLines[startLine] = true;
+ }
+ } else {
+ markerLines[startLine] = [startColumn, endColumn - startColumn];
+ }
+ }
+
+ return {
+ start: start,
+ end: end,
+ markerLines: markerLines
+ };
+ }
+
+ function codeFrameColumns(rawLines, loc) {
+ var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
+ var highlighted = (opts.highlightCode || opts.forceColor) && (0, _highlight().shouldHighlight)(opts);
+ var chalk = (0, _highlight().getChalk)(opts);
+ var defs = getDefs(chalk);
+
+ var maybeHighlight = function maybeHighlight(chalkFn, string) {
+ return highlighted ? chalkFn(string) : string;
+ };
+
+ var lines = rawLines.split(NEWLINE);
+
+ var _getMarkerLines = getMarkerLines(loc, lines, opts),
+ start = _getMarkerLines.start,
+ end = _getMarkerLines.end,
+ markerLines = _getMarkerLines.markerLines;
+
+ var hasColumns = loc.start && typeof loc.start.column === "number";
+ var numberMaxWidth = String(end).length;
+ var highlightedLines = highlighted ? (0, _highlight().default)(rawLines, opts) : rawLines;
+ var frame = highlightedLines.split(NEWLINE).slice(start, end).map(function (line, index) {
+ var number = start + 1 + index;
+ var paddedNumber = " ".concat(number).slice(-numberMaxWidth);
+ var gutter = " ".concat(paddedNumber, " | ");
+ var hasMarker = markerLines[number];
+ var lastMarkerLine = !markerLines[number + 1];
+
+ if (hasMarker) {
+ var markerLine = "";
+
+ if (Array.isArray(hasMarker)) {
+ var markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
+ var numberOfMarkers = hasMarker[1] || 1;
+ markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join("");
+
+ if (lastMarkerLine && opts.message) {
+ markerLine += " " + maybeHighlight(defs.message, opts.message);
+ }
+ }
+
+ return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line, markerLine].join("");
+ } else {
+ return " ".concat(maybeHighlight(defs.gutter, gutter)).concat(line);
+ }
+ }).join("\n");
+
+ if (opts.message && !hasColumns) {
+ frame = "".concat(" ".repeat(numberMaxWidth + 1)).concat(opts.message, "\n").concat(frame);
+ }
+
+ if (highlighted) {
+ return chalk.reset(frame);
+ } else {
+ return frame;
+ }
+ }
+
+ function _default(rawLines, lineNumber, colNumber) {
+ var opts = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
+
+ if (!deprecationWarningShown) {
+ deprecationWarningShown = true;
+ var message = "Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";
+
+ if (process.emitWarning) {
+ process.emitWarning(message, "DeprecationWarning");
+ } else {
+ var deprecationError = new Error(message);
+ deprecationError.name = "DeprecationWarning";
+ console.warn(new Error(message));
+ }
+ }
+
+ colNumber = Math.max(colNumber, 0);
+ var location = {
+ start: {
+ column: colNumber,
+ line: lineNumber
+ }
+ };
+ return codeFrameColumns(rawLines, location, opts);
+ }
+ });
+ unwrapExports(lib$2);
+ var lib_1$1 = lib$2.codeFrameColumns;
+
+ var ConfigError$1 = errors.ConfigError;
+ var locStart$1 = loc.locStart,
+ locEnd$1 = loc.locEnd; // Use defineProperties()/getOwnPropertyDescriptor() to prevent
+ // triggering the parsers getters.
+
+ var ownNames = Object.getOwnPropertyNames;
+ var ownDescriptor = Object.getOwnPropertyDescriptor;
+
+ function getParsers(options) {
+ var parsers = {};
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = options.plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var plugin = _step.value;
+
+ if (!plugin.parsers) {
+ continue;
+ }
+
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = ownNames(plugin.parsers)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var name = _step2.value;
+ Object.defineProperty(parsers, name, ownDescriptor(plugin.parsers, name));
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return parsers;
+ }
+
+ function resolveParser(opts, parsers) {
+ parsers = parsers || getParsers(opts);
+
+ if (typeof opts.parser === "function") {
+ // Custom parser API always works with JavaScript.
+ return {
+ parse: opts.parser,
+ astFormat: "estree",
+ locStart: locStart$1,
+ locEnd: locEnd$1
+ };
+ }
+
+ if (typeof opts.parser === "string") {
+ if (Object.prototype.hasOwnProperty.call(parsers, opts.parser)) {
+ return parsers[opts.parser];
+ }
+ /* istanbul ignore next */
+
+
+ {
+ throw new ConfigError$1("Couldn't resolve parser \"".concat(opts.parser, "\". Parsers must be explicitly added to the standalone bundle."));
+ }
+ }
+ }
+
+ function parse(text, opts) {
+ var parsers = getParsers(opts); // Create a new object {parserName: parseFn}. Uses defineProperty() to only call
+ // the parsers getters when actually calling the parser `parse` function.
+
+ var parsersForCustomParserApi = Object.keys(parsers).reduce(function (object, parserName) {
+ return Object.defineProperty(object, parserName, {
+ enumerable: true,
+ get: function get() {
+ return parsers[parserName].parse;
+ }
+ });
+ }, {});
+ var parser = resolveParser(opts, parsers);
+
+ try {
+ if (parser.preprocess) {
+ text = parser.preprocess(text, opts);
+ }
+
+ return {
+ text: text,
+ ast: parser.parse(text, parsersForCustomParserApi, opts)
+ };
+ } catch (error) {
+ var loc = error.loc;
+
+ if (loc) {
+ var codeFrame = lib$2;
+ error.codeFrame = codeFrame.codeFrameColumns(text, loc, {
+ highlightCode: true
+ });
+ error.message += "\n" + error.codeFrame;
+ throw error;
+ }
+ /* istanbul ignore next */
+
+
+ throw error.stack;
+ }
+ }
+
+ var parser = {
+ parse: parse,
+ resolveParser: resolveParser
+ };
+
+ var UndefinedParserError$1 = errors.UndefinedParserError;
+ var getSupportInfo$1 = support.getSupportInfo;
+ var resolveParser$1 = parser.resolveParser;
+ var hiddenDefaults = {
+ astFormat: "estree",
+ printer: {},
+ originalText: undefined,
+ locStart: null,
+ locEnd: null
+ }; // Copy options and fill in default values.
+
+ function normalize$1(options, opts) {
+ opts = opts || {};
+ var rawOptions = Object.assign({}, options);
+ var supportOptions = getSupportInfo$1(null, {
+ plugins: options.plugins,
+ showUnreleased: true,
+ showDeprecated: true
+ }).options;
+ var defaults = supportOptions.reduce(function (reduced, optionInfo) {
+ return optionInfo.default !== undefined ? Object.assign(reduced, _defineProperty({}, optionInfo.name, optionInfo.default)) : reduced;
+ }, Object.assign({}, hiddenDefaults));
+
+ if (!rawOptions.parser) {
+ if (!rawOptions.filepath) {
+ var logger = opts.logger || console;
+ logger.warn("No parser and no filepath given, using 'babel' the parser now " + "but this will throw an error in the future. " + "Please specify a parser or a filepath so one can be inferred.");
+ rawOptions.parser = "babel";
+ } else {
+ rawOptions.parser = inferParser(rawOptions.filepath, rawOptions.plugins);
+
+ if (!rawOptions.parser) {
+ throw new UndefinedParserError$1("No parser could be inferred for file: ".concat(rawOptions.filepath));
+ }
+ }
+ }
+
+ var parser = resolveParser$1(optionsNormalizer.normalizeApiOptions(rawOptions, [supportOptions.find(function (x) {
+ return x.name === "parser";
+ })], {
+ passThrough: true,
+ logger: false
+ }));
+ rawOptions.astFormat = parser.astFormat;
+ rawOptions.locEnd = parser.locEnd;
+ rawOptions.locStart = parser.locStart;
+ var plugin = getPlugin(rawOptions);
+ rawOptions.printer = plugin.printers[rawOptions.astFormat];
+ var pluginDefaults = supportOptions.filter(function (optionInfo) {
+ return optionInfo.pluginDefaults && optionInfo.pluginDefaults[plugin.name] !== undefined;
+ }).reduce(function (reduced, optionInfo) {
+ return Object.assign(reduced, _defineProperty({}, optionInfo.name, optionInfo.pluginDefaults[plugin.name]));
+ }, {});
+ var mixedDefaults = Object.assign({}, defaults, pluginDefaults);
+ Object.keys(mixedDefaults).forEach(function (k) {
+ if (rawOptions[k] == null) {
+ rawOptions[k] = mixedDefaults[k];
+ }
+ });
+
+ if (rawOptions.parser === "json") {
+ rawOptions.trailingComma = "none";
+ }
+
+ return optionsNormalizer.normalizeApiOptions(rawOptions, supportOptions, Object.assign({
+ passThrough: Object.keys(hiddenDefaults)
+ }, opts));
+ }
+
+ function getPlugin(options) {
+ var astFormat = options.astFormat;
+
+ if (!astFormat) {
+ throw new Error("getPlugin() requires astFormat to be set");
+ }
+
+ var printerPlugin = options.plugins.find(function (plugin) {
+ return plugin.printers && plugin.printers[astFormat];
+ });
+
+ if (!printerPlugin) {
+ throw new Error("Couldn't find plugin for AST format \"".concat(astFormat, "\""));
+ }
+
+ return printerPlugin;
+ }
+
+ function getInterpreter(filepath) {
+ if (typeof filepath !== "string") {
+ return "";
+ }
+
+ var fd;
+
+ try {
+ fd = fs.openSync(filepath, "r");
+ } catch (err) {
+ return "";
+ }
+
+ try {
+ var liner = new readlines(fd);
+ var firstLine = liner.next().toString("utf8"); // #!/bin/env node, #!/usr/bin/env node
+
+ var m1 = firstLine.match(/^#!\/(?:usr\/)?bin\/env\s+(\S+)/);
+
+ if (m1) {
+ return m1[1];
+ } // #!/bin/node, #!/usr/bin/node, #!/usr/local/bin/node
+
+
+ var m2 = firstLine.match(/^#!\/(?:usr\/(?:local\/)?)?bin\/(\S+)/);
+
+ if (m2) {
+ return m2[1];
+ }
+
+ return "";
+ } catch (err) {
+ // There are some weird cases where paths are missing, causing Jest
+ // failures. It's unclear what these correspond to in the real world.
+ return "";
+ } finally {
+ try {
+ // There are some weird cases where paths are missing, causing Jest
+ // failures. It's unclear what these correspond to in the real world.
+ fs.closeSync(fd);
+ } catch (err) {// nop
+ }
+ }
+ }
+
+ function inferParser(filepath, plugins) {
+ var filepathParts = normalizePath(filepath).split("/");
+ var filename = filepathParts[filepathParts.length - 1].toLowerCase(); // If the file has no extension, we can try to infer the language from the
+ // interpreter in the shebang line, if any; but since this requires FS access,
+ // do it last.
+
+ var language = getSupportInfo$1(null, {
+ plugins: plugins
+ }).languages.find(function (language) {
+ return language.since !== null && (language.extensions && language.extensions.some(function (extension) {
+ return filename.endsWith(extension);
+ }) || language.filenames && language.filenames.find(function (name) {
+ return name.toLowerCase() === filename;
+ }) || filename.indexOf(".") === -1 && language.interpreters && language.interpreters.indexOf(getInterpreter(filepath)) !== -1);
+ });
+ return language && language.parsers[0];
+ }
+
+ var options$1 = {
+ normalize: normalize$1,
+ hiddenDefaults: hiddenDefaults,
+ inferParser: inferParser
+ };
+
+ function massageAST(ast, options, parent) {
+ if (Array.isArray(ast)) {
+ return ast.map(function (e) {
+ return massageAST(e, options, parent);
+ }).filter(function (e) {
+ return e;
+ });
+ }
+
+ if (!ast || _typeof(ast) !== "object") {
+ return ast;
+ }
+
+ var newObj = {};
+
+ for (var _i = 0, _Object$keys = Object.keys(ast); _i < _Object$keys.length; _i++) {
+ var key = _Object$keys[_i];
+
+ if (typeof ast[key] !== "function") {
+ newObj[key] = massageAST(ast[key], options, ast);
+ }
+ }
+
+ if (options.printer.massageAstNode) {
+ var result = options.printer.massageAstNode(ast, newObj, parent);
+
+ if (result === null) {
+ return undefined;
+ }
+
+ if (result) {
+ return result;
+ }
+ }
+
+ return newObj;
+ }
+
+ var massageAst = massageAST;
+
+ function assert() {}
+
+ assert.ok = function () {};
+
+ assert.strictEqual = function () {};
+
+ /**
+ * @param {Doc[]} parts
+ * @returns Doc
+ */
+
+
+ function concat(parts) {
+ // access the internals of a document directly.
+ // if(parts.length === 1) {
+ // // If it's a single document, no need to concat it.
+ // return parts[0];
+ // }
+
+
+ return {
+ type: "concat",
+ parts: parts
+ };
+ }
+ /**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+ function indent(contents) {
+
+ return {
+ type: "indent",
+ contents: contents
+ };
+ }
+ /**
+ * @param {number} n
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+ function align(n, contents) {
+
+ return {
+ type: "align",
+ contents: contents,
+ n: n
+ };
+ }
+ /**
+ * @param {Doc} contents
+ * @param {object} [opts] - TBD ???
+ * @returns Doc
+ */
+
+
+ function group(contents, opts) {
+ opts = opts || {};
+
+ return {
+ type: "group",
+ id: opts.id,
+ contents: contents,
+ break: !!opts.shouldBreak,
+ expandedStates: opts.expandedStates
+ };
+ }
+ /**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+ function dedentToRoot(contents) {
+ return align(-Infinity, contents);
+ }
+ /**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+ function markAsRoot(contents) {
+ // @ts-ignore - TBD ???:
+ return align({
+ type: "root"
+ }, contents);
+ }
+ /**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+ function dedent(contents) {
+ return align(-1, contents);
+ }
+ /**
+ * @param {Doc[]} states
+ * @param {object} [opts] - TBD ???
+ * @returns Doc
+ */
+
+
+ function conditionalGroup(states, opts) {
+ return group(states[0], Object.assign(opts || {}, {
+ expandedStates: states
+ }));
+ }
+ /**
+ * @param {Doc[]} parts
+ * @returns Doc
+ */
+
+
+ function fill(parts) {
+
+ return {
+ type: "fill",
+ parts: parts
+ };
+ }
+ /**
+ * @param {Doc} [breakContents]
+ * @param {Doc} [flatContents]
+ * @param {object} [opts] - TBD ???
+ * @returns Doc
+ */
+
+
+ function ifBreak(breakContents, flatContents, opts) {
+ opts = opts || {};
+
+ return {
+ type: "if-break",
+ breakContents: breakContents,
+ flatContents: flatContents,
+ groupId: opts.groupId
+ };
+ }
+ /**
+ * @param {Doc} contents
+ * @returns Doc
+ */
+
+
+ function lineSuffix(contents) {
+
+ return {
+ type: "line-suffix",
+ contents: contents
+ };
+ }
+
+ var lineSuffixBoundary = {
+ type: "line-suffix-boundary"
+ };
+ var breakParent = {
+ type: "break-parent"
+ };
+ var trim = {
+ type: "trim"
+ };
+ var line = {
+ type: "line"
+ };
+ var softline = {
+ type: "line",
+ soft: true
+ };
+ var hardline = concat([{
+ type: "line",
+ hard: true
+ }, breakParent]);
+ var literalline = concat([{
+ type: "line",
+ hard: true,
+ literal: true
+ }, breakParent]);
+ var cursor = {
+ type: "cursor",
+ placeholder: Symbol("cursor")
+ };
+ /**
+ * @param {Doc} sep
+ * @param {Doc[]} arr
+ * @returns Doc
+ */
+
+ function join(sep, arr) {
+ var res = [];
+
+ for (var i = 0; i < arr.length; i++) {
+ if (i !== 0) {
+ res.push(sep);
+ }
+
+ res.push(arr[i]);
+ }
+
+ return concat(res);
+ }
+ /**
+ * @param {Doc} doc
+ * @param {number} size
+ * @param {number} tabWidth
+ */
+
+
+ function addAlignmentToDoc(doc, size, tabWidth) {
+ var aligned = doc;
+
+ if (size > 0) {
+ // Use indent to add tabs for all the levels of tabs we need
+ for (var i = 0; i < Math.floor(size / tabWidth); ++i) {
+ aligned = indent(aligned);
+ } // Use align for all the spaces that are needed
+
+
+ aligned = align(size % tabWidth, aligned); // size is absolute from 0 and not relative to the current
+ // indentation, so we use -Infinity to reset the indentation to 0
+
+ aligned = align(-Infinity, aligned);
+ }
+
+ return aligned;
+ }
+
+ var docBuilders = {
+ concat: concat,
+ join: join,
+ line: line,
+ softline: softline,
+ hardline: hardline,
+ literalline: literalline,
+ group: group,
+ conditionalGroup: conditionalGroup,
+ fill: fill,
+ lineSuffix: lineSuffix,
+ lineSuffixBoundary: lineSuffixBoundary,
+ cursor: cursor,
+ breakParent: breakParent,
+ ifBreak: ifBreak,
+ trim: trim,
+ indent: indent,
+ align: align,
+ addAlignmentToDoc: addAlignmentToDoc,
+ markAsRoot: markAsRoot,
+ dedentToRoot: dedentToRoot,
+ dedent: dedent
+ };
+
+ var ansiRegex = function ansiRegex(options) {
+ options = Object.assign({
+ onlyFirst: false
+ }, options);
+ var pattern = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:[a-zA-Z\\d]*(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", '(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))'].join('|');
+ return new RegExp(pattern, options.onlyFirst ? undefined : 'g');
+ };
+
+ var stripAnsi = function stripAnsi(string) {
+ return typeof string === 'string' ? string.replace(ansiRegex(), '') : string;
+ };
+
+ var stripAnsi_1 = stripAnsi;
+ var default_1$1 = stripAnsi;
+ stripAnsi_1.default = default_1$1;
+
+ /* eslint-disable yoda */
+
+ var isFullwidthCodePoint = function isFullwidthCodePoint(codePoint) {
+ if (Number.isNaN(codePoint)) {
+ return false;
+ } // Code points are derived from:
+ // http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt
+
+
+ if (codePoint >= 0x1100 && (codePoint <= 0x115F || // Hangul Jamo
+ codePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET
+ codePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET
+ // CJK Radicals Supplement .. Enclosed CJK Letters and Months
+ 0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F || // Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A
+ 0x3250 <= codePoint && codePoint <= 0x4DBF || // CJK Unified Ideographs .. Yi Radicals
+ 0x4E00 <= codePoint && codePoint <= 0xA4C6 || // Hangul Jamo Extended-A
+ 0xA960 <= codePoint && codePoint <= 0xA97C || // Hangul Syllables
+ 0xAC00 <= codePoint && codePoint <= 0xD7A3 || // CJK Compatibility Ideographs
+ 0xF900 <= codePoint && codePoint <= 0xFAFF || // Vertical Forms
+ 0xFE10 <= codePoint && codePoint <= 0xFE19 || // CJK Compatibility Forms .. Small Form Variants
+ 0xFE30 <= codePoint && codePoint <= 0xFE6B || // Halfwidth and Fullwidth Forms
+ 0xFF01 <= codePoint && codePoint <= 0xFF60 || 0xFFE0 <= codePoint && codePoint <= 0xFFE6 || // Kana Supplement
+ 0x1B000 <= codePoint && codePoint <= 0x1B001 || // Enclosed Ideographic Supplement
+ 0x1F200 <= codePoint && codePoint <= 0x1F251 || // CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane
+ 0x20000 <= codePoint && codePoint <= 0x3FFFD)) {
+ return true;
+ }
+
+ return false;
+ };
+
+ var isFullwidthCodePoint_1 = isFullwidthCodePoint;
+ var default_1$2 = isFullwidthCodePoint;
+ isFullwidthCodePoint_1.default = default_1$2;
+
+ var emojiRegex = function emojiRegex() {
+ // https://mths.be/emoji
+ return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
+ };
+
+ var stringWidth = function stringWidth(string) {
+ string = string.replace(emojiRegex(), ' ');
+
+ if (typeof string !== 'string' || string.length === 0) {
+ return 0;
+ }
+
+ string = stripAnsi_1(string);
+ var width = 0;
+
+ for (var i = 0; i < string.length; i++) {
+ var code = string.codePointAt(i); // Ignore control characters
+
+ if (code <= 0x1F || code >= 0x7F && code <= 0x9F) {
+ continue;
+ } // Ignore combining characters
+
+
+ if (code >= 0x300 && code <= 0x36F) {
+ continue;
+ } // Surrogates
+
+
+ if (code > 0xFFFF) {
+ i++;
+ }
+
+ width += isFullwidthCodePoint_1(code) ? 2 : 1;
+ }
+
+ return width;
+ };
+
+ var stringWidth_1 = stringWidth; // TODO: remove this in the next major version
+
+ var default_1$3 = stringWidth;
+ stringWidth_1.default = default_1$3;
+
+ var notAsciiRegex = /[^\x20-\x7F]/;
+
+ function isExportDeclaration(node) {
+ if (node) {
+ switch (node.type) {
+ case "ExportDefaultDeclaration":
+ case "ExportDefaultSpecifier":
+ case "DeclareExportDeclaration":
+ case "ExportNamedDeclaration":
+ case "ExportAllDeclaration":
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ function getParentExportDeclaration(path) {
+ var parentNode = path.getParentNode();
+
+ if (path.getName() === "declaration" && isExportDeclaration(parentNode)) {
+ return parentNode;
+ }
+
+ return null;
+ }
+
+ function getPenultimate(arr) {
+ if (arr.length > 1) {
+ return arr[arr.length - 2];
+ }
+
+ return null;
+ }
+ /**
+ * @typedef {{backwards?: boolean}} SkipOptions
+ */
+
+ /**
+ * @param {string | RegExp} chars
+ * @returns {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+
+ function skip(chars) {
+ return function (text, index, opts) {
+ var backwards = opts && opts.backwards; // Allow `skip` functions to be threaded together without having
+ // to check for failures (did someone say monads?).
+
+ if (index === false) {
+ return false;
+ }
+
+ var length = text.length;
+ var cursor = index;
+
+ while (cursor >= 0 && cursor < length) {
+ var c = text.charAt(cursor);
+
+ if (chars instanceof RegExp) {
+ if (!chars.test(c)) {
+ return cursor;
+ }
+ } else if (chars.indexOf(c) === -1) {
+ return cursor;
+ }
+
+ backwards ? cursor-- : cursor++;
+ }
+
+ if (cursor === -1 || cursor === length) {
+ // If we reached the beginning or end of the file, return the
+ // out-of-bounds cursor. It's up to the caller to handle this
+ // correctly. We don't want to indicate `false` though if it
+ // actually skipped valid characters.
+ return cursor;
+ }
+
+ return false;
+ };
+ }
+ /**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+
+ var skipWhitespace = skip(/\s/);
+ /**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+ var skipSpaces = skip(" \t");
+ /**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+ var skipToLineEnd = skip(",; \t");
+ /**
+ * @type {(text: string, index: number | false, opts?: SkipOptions) => number | false}
+ */
+
+ var skipEverythingButNewLine = skip(/[^\r\n]/);
+ /**
+ * @param {string} text
+ * @param {number | false} index
+ * @returns {number | false}
+ */
+
+ function skipInlineComment(text, index) {
+ if (index === false) {
+ return false;
+ }
+
+ if (text.charAt(index) === "/" && text.charAt(index + 1) === "*") {
+ for (var i = index + 2; i < text.length; ++i) {
+ if (text.charAt(i) === "*" && text.charAt(i + 1) === "/") {
+ return i + 2;
+ }
+ }
+ }
+
+ return index;
+ }
+ /**
+ * @param {string} text
+ * @param {number | false} index
+ * @returns {number | false}
+ */
+
+
+ function skipTrailingComment(text, index) {
+ if (index === false) {
+ return false;
+ }
+
+ if (text.charAt(index) === "/" && text.charAt(index + 1) === "/") {
+ return skipEverythingButNewLine(text, index);
+ }
+
+ return index;
+ } // This one doesn't use the above helper function because it wants to
+ // test \r\n in order and `skip` doesn't support ordering and we only
+ // want to skip one newline. It's simple to implement.
+
+ /**
+ * @param {string} text
+ * @param {number | false} index
+ * @param {SkipOptions=} opts
+ * @returns {number | false}
+ */
+
+
+ function skipNewline(text, index, opts) {
+ var backwards = opts && opts.backwards;
+
+ if (index === false) {
+ return false;
+ }
+
+ var atIndex = text.charAt(index);
+
+ if (backwards) {
+ if (text.charAt(index - 1) === "\r" && atIndex === "\n") {
+ return index - 2;
+ }
+
+ if (atIndex === "\n" || atIndex === "\r" || atIndex === "\u2028" || atIndex === "\u2029") {
+ return index - 1;
+ }
+ } else {
+ if (atIndex === "\r" && text.charAt(index + 1) === "\n") {
+ return index + 2;
+ }
+
+ if (atIndex === "\n" || atIndex === "\r" || atIndex === "\u2028" || atIndex === "\u2029") {
+ return index + 1;
+ }
+ }
+
+ return index;
+ }
+ /**
+ * @param {string} text
+ * @param {number} index
+ * @param {SkipOptions=} opts
+ * @returns {boolean}
+ */
+
+
+ function hasNewline(text, index, opts) {
+ opts = opts || {};
+ var idx = skipSpaces(text, opts.backwards ? index - 1 : index, opts);
+ var idx2 = skipNewline(text, idx, opts);
+ return idx !== idx2;
+ }
+ /**
+ * @param {string} text
+ * @param {number} start
+ * @param {number} end
+ * @returns {boolean}
+ */
+
+
+ function hasNewlineInRange(text, start, end) {
+ for (var i = start; i < end; ++i) {
+ if (text.charAt(i) === "\n") {
+ return true;
+ }
+ }
+
+ return false;
+ } // Note: this function doesn't ignore leading comments unlike isNextLineEmpty
+
+ /**
+ * @template N
+ * @param {string} text
+ * @param {N} node
+ * @param {(node: N) => number} locStart
+ */
+
+
+ function isPreviousLineEmpty(text, node, locStart) {
+ /** @type {number | false} */
+ var idx = locStart(node) - 1;
+ idx = skipSpaces(text, idx, {
+ backwards: true
+ });
+ idx = skipNewline(text, idx, {
+ backwards: true
+ });
+ idx = skipSpaces(text, idx, {
+ backwards: true
+ });
+ var idx2 = skipNewline(text, idx, {
+ backwards: true
+ });
+ return idx !== idx2;
+ }
+ /**
+ * @param {string} text
+ * @param {number} index
+ * @returns {boolean}
+ */
+
+
+ function isNextLineEmptyAfterIndex(text, index) {
+ /** @type {number | false} */
+ var oldIdx = null;
+ /** @type {number | false} */
+
+ var idx = index;
+
+ while (idx !== oldIdx) {
+ // We need to skip all the potential trailing inline comments
+ oldIdx = idx;
+ idx = skipToLineEnd(text, idx);
+ idx = skipInlineComment(text, idx);
+ idx = skipSpaces(text, idx);
+ }
+
+ idx = skipTrailingComment(text, idx);
+ idx = skipNewline(text, idx);
+ return idx !== false && hasNewline(text, idx);
+ }
+ /**
+ * @template N
+ * @param {string} text
+ * @param {N} node
+ * @param {(node: N) => number} locEnd
+ * @returns {boolean}
+ */
+
+
+ function isNextLineEmpty(text, node, locEnd) {
+ return isNextLineEmptyAfterIndex(text, locEnd(node));
+ }
+ /**
+ * @param {string} text
+ * @param {number} idx
+ * @returns {number | false}
+ */
+
+
+ function getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, idx) {
+ /** @type {number | false} */
+ var oldIdx = null;
+ /** @type {number | false} */
+
+ var nextIdx = idx;
+
+ while (nextIdx !== oldIdx) {
+ oldIdx = nextIdx;
+ nextIdx = skipSpaces(text, nextIdx);
+ nextIdx = skipInlineComment(text, nextIdx);
+ nextIdx = skipTrailingComment(text, nextIdx);
+ nextIdx = skipNewline(text, nextIdx);
+ }
+
+ return nextIdx;
+ }
+ /**
+ * @template N
+ * @param {string} text
+ * @param {N} node
+ * @param {(node: N) => number} locEnd
+ * @returns {number | false}
+ */
+
+
+ function getNextNonSpaceNonCommentCharacterIndex(text, node, locEnd) {
+ return getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, locEnd(node));
+ }
+ /**
+ * @template N
+ * @param {string} text
+ * @param {N} node
+ * @param {(node: N) => number} locEnd
+ * @returns {string}
+ */
+
+
+ function getNextNonSpaceNonCommentCharacter(text, node, locEnd) {
+ return text.charAt( // @ts-ignore => TBD: can return false, should we define a fallback?
+ getNextNonSpaceNonCommentCharacterIndex(text, node, locEnd));
+ }
+ /**
+ * @param {string} text
+ * @param {number} index
+ * @param {SkipOptions=} opts
+ * @returns {boolean}
+ */
+
+
+ function hasSpaces(text, index, opts) {
+ opts = opts || {};
+ var idx = skipSpaces(text, opts.backwards ? index - 1 : index, opts);
+ return idx !== index;
+ }
+ /**
+ * @param {{range?: [number, number], start?: number}} node
+ * @param {number} index
+ */
+
+
+ function setLocStart(node, index) {
+ if (node.range) {
+ node.range[0] = index;
+ } else {
+ node.start = index;
+ }
+ }
+ /**
+ * @param {{range?: [number, number], end?: number}} node
+ * @param {number} index
+ */
+
+
+ function setLocEnd(node, index) {
+ if (node.range) {
+ node.range[1] = index;
+ } else {
+ node.end = index;
+ }
+ }
+
+ var PRECEDENCE = {};
+ [["|>"], ["??"], ["||"], ["&&"], ["|"], ["^"], ["&"], ["==", "===", "!=", "!=="], ["<", ">", "<=", ">=", "in", "instanceof"], [">>", "<<", ">>>"], ["+", "-"], ["*", "/", "%"], ["**"]].forEach(function (tier, i) {
+ tier.forEach(function (op) {
+ PRECEDENCE[op] = i;
+ });
+ });
+
+ function getPrecedence(op) {
+ return PRECEDENCE[op];
+ }
+
+ var equalityOperators = {
+ "==": true,
+ "!=": true,
+ "===": true,
+ "!==": true
+ };
+ var multiplicativeOperators = {
+ "*": true,
+ "/": true,
+ "%": true
+ };
+ var bitshiftOperators = {
+ ">>": true,
+ ">>>": true,
+ "<<": true
+ };
+
+ function shouldFlatten(parentOp, nodeOp) {
+ if (getPrecedence(nodeOp) !== getPrecedence(parentOp)) {
+ return false;
+ } // ** is right-associative
+ // x ** y ** z --> x ** (y ** z)
+
+
+ if (parentOp === "**") {
+ return false;
+ } // x == y == z --> (x == y) == z
+
+
+ if (equalityOperators[parentOp] && equalityOperators[nodeOp]) {
+ return false;
+ } // x * y % z --> (x * y) % z
+
+
+ if (nodeOp === "%" && multiplicativeOperators[parentOp] || parentOp === "%" && multiplicativeOperators[nodeOp]) {
+ return false;
+ } // x * y / z --> (x * y) / z
+ // x / y * z --> (x / y) * z
+
+
+ if (nodeOp !== parentOp && multiplicativeOperators[nodeOp] && multiplicativeOperators[parentOp]) {
+ return false;
+ } // x << y << z --> (x << y) << z
+
+
+ if (bitshiftOperators[parentOp] && bitshiftOperators[nodeOp]) {
+ return false;
+ }
+
+ return true;
+ }
+
+ function isBitwiseOperator(operator) {
+ return !!bitshiftOperators[operator] || operator === "|" || operator === "^" || operator === "&";
+ } // Tests if an expression starts with `{`, or (if forbidFunctionClassAndDoExpr
+ // holds) `function`, `class`, or `do {}`. Will be overzealous if there's
+ // already necessary grouping parentheses.
+
+
+ function startsWithNoLookaheadToken(node, forbidFunctionClassAndDoExpr) {
+ node = getLeftMost(node);
+
+ switch (node.type) {
+ case "FunctionExpression":
+ case "ClassExpression":
+ case "DoExpression":
+ return forbidFunctionClassAndDoExpr;
+
+ case "ObjectExpression":
+ return true;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return startsWithNoLookaheadToken(node.object, forbidFunctionClassAndDoExpr);
+
+ case "TaggedTemplateExpression":
+ if (node.tag.type === "FunctionExpression") {
+ // IIFEs are always already parenthesized
+ return false;
+ }
+
+ return startsWithNoLookaheadToken(node.tag, forbidFunctionClassAndDoExpr);
+
+ case "CallExpression":
+ case "OptionalCallExpression":
+ if (node.callee.type === "FunctionExpression") {
+ // IIFEs are always already parenthesized
+ return false;
+ }
+
+ return startsWithNoLookaheadToken(node.callee, forbidFunctionClassAndDoExpr);
+
+ case "ConditionalExpression":
+ return startsWithNoLookaheadToken(node.test, forbidFunctionClassAndDoExpr);
+
+ case "UpdateExpression":
+ return !node.prefix && startsWithNoLookaheadToken(node.argument, forbidFunctionClassAndDoExpr);
+
+ case "BindExpression":
+ return node.object && startsWithNoLookaheadToken(node.object, forbidFunctionClassAndDoExpr);
+
+ case "SequenceExpression":
+ return startsWithNoLookaheadToken(node.expressions[0], forbidFunctionClassAndDoExpr);
+
+ case "TSAsExpression":
+ return startsWithNoLookaheadToken(node.expression, forbidFunctionClassAndDoExpr);
+
+ default:
+ return false;
+ }
+ }
+
+ function getLeftMost(node) {
+ if (node.left) {
+ return getLeftMost(node.left);
+ }
+
+ return node;
+ }
+ /**
+ * @param {string} value
+ * @param {number} tabWidth
+ * @param {number=} startIndex
+ * @returns {number}
+ */
+
+
+ function getAlignmentSize(value, tabWidth, startIndex) {
+ startIndex = startIndex || 0;
+ var size = 0;
+
+ for (var i = startIndex; i < value.length; ++i) {
+ if (value[i] === "\t") {
+ // Tabs behave in a way that they are aligned to the nearest
+ // multiple of tabWidth:
+ // 0 -> 4, 1 -> 4, 2 -> 4, 3 -> 4
+ // 4 -> 8, 5 -> 8, 6 -> 8, 7 -> 8 ...
+ size = size + tabWidth - size % tabWidth;
+ } else {
+ size++;
+ }
+ }
+
+ return size;
+ }
+ /**
+ * @param {string} value
+ * @param {number} tabWidth
+ * @returns {number}
+ */
+
+
+ function getIndentSize(value, tabWidth) {
+ var lastNewlineIndex = value.lastIndexOf("\n");
+
+ if (lastNewlineIndex === -1) {
+ return 0;
+ }
+
+ return getAlignmentSize( // All the leading whitespaces
+ value.slice(lastNewlineIndex + 1).match(/^[ \t]*/)[0], tabWidth);
+ }
+ /**
+ * @typedef {'"' | "'"} Quote
+ */
+
+ /**
+ *
+ * @param {string} raw
+ * @param {Quote} preferredQuote
+ * @returns {Quote}
+ */
+
+
+ function getPreferredQuote(raw, preferredQuote) {
+ // `rawContent` is the string exactly like it appeared in the input source
+ // code, without its enclosing quotes.
+ var rawContent = raw.slice(1, -1);
+ /** @type {{ quote: '"', regex: RegExp }} */
+
+ var double = {
+ quote: '"',
+ regex: /"/g
+ };
+ /** @type {{ quote: "'", regex: RegExp }} */
+
+ var single = {
+ quote: "'",
+ regex: /'/g
+ };
+ var preferred = preferredQuote === "'" ? single : double;
+ var alternate = preferred === single ? double : single;
+ var result = preferred.quote; // If `rawContent` contains at least one of the quote preferred for enclosing
+ // the string, we might want to enclose with the alternate quote instead, to
+ // minimize the number of escaped quotes.
+
+ if (rawContent.includes(preferred.quote) || rawContent.includes(alternate.quote)) {
+ var numPreferredQuotes = (rawContent.match(preferred.regex) || []).length;
+ var numAlternateQuotes = (rawContent.match(alternate.regex) || []).length;
+ result = numPreferredQuotes > numAlternateQuotes ? alternate.quote : preferred.quote;
+ }
+
+ return result;
+ }
+
+ function printString(raw, options, isDirectiveLiteral) {
+ // `rawContent` is the string exactly like it appeared in the input source
+ // code, without its enclosing quotes.
+ var rawContent = raw.slice(1, -1); // Check for the alternate quote, to determine if we're allowed to swap
+ // the quotes on a DirectiveLiteral.
+
+ var canChangeDirectiveQuotes = !rawContent.includes('"') && !rawContent.includes("'");
+ /** @type {Quote} */
+
+ var enclosingQuote = options.parser === "json" ? '"' : options.__isInHtmlAttribute ? "'" : getPreferredQuote(raw, options.singleQuote ? "'" : '"'); // Directives are exact code unit sequences, which means that you can't
+ // change the escape sequences they use.
+ // See https://github.com/prettier/prettier/issues/1555
+ // and https://tc39.github.io/ecma262/#directive-prologue
+
+ if (isDirectiveLiteral) {
+ if (canChangeDirectiveQuotes) {
+ return enclosingQuote + rawContent + enclosingQuote;
+ }
+
+ return raw;
+ } // It might sound unnecessary to use `makeString` even if the string already
+ // is enclosed with `enclosingQuote`, but it isn't. The string could contain
+ // unnecessary escapes (such as in `"\'"`). Always using `makeString` makes
+ // sure that we consistently output the minimum amount of escaped quotes.
+
+
+ return makeString(rawContent, enclosingQuote, !(options.parser === "css" || options.parser === "less" || options.parser === "scss" || options.embeddedInHtml));
+ }
+ /**
+ * @param {string} rawContent
+ * @param {Quote} enclosingQuote
+ * @param {boolean=} unescapeUnnecessaryEscapes
+ * @returns {string}
+ */
+
+
+ function makeString(rawContent, enclosingQuote, unescapeUnnecessaryEscapes) {
+ var otherQuote = enclosingQuote === '"' ? "'" : '"'; // Matches _any_ escape and unescaped quotes (both single and double).
+
+ var regex = /\\([\s\S])|(['"])/g; // Escape and unescape single and double quotes as needed to be able to
+ // enclose `rawContent` with `enclosingQuote`.
+
+ var newContent = rawContent.replace(regex, function (match, escaped, quote) {
+ // If we matched an escape, and the escaped character is a quote of the
+ // other type than we intend to enclose the string with, there's no need for
+ // it to be escaped, so return it _without_ the backslash.
+ if (escaped === otherQuote) {
+ return escaped;
+ } // If we matched an unescaped quote and it is of the _same_ type as we
+ // intend to enclose the string with, it must be escaped, so return it with
+ // a backslash.
+
+
+ if (quote === enclosingQuote) {
+ return "\\" + quote;
+ }
+
+ if (quote) {
+ return quote;
+ } // Unescape any unnecessarily escaped character.
+ // Adapted from https://github.com/eslint/eslint/blob/de0b4ad7bd820ade41b1f606008bea68683dc11a/lib/rules/no-useless-escape.js#L27
+
+
+ return unescapeUnnecessaryEscapes && /^[^\\nrvtbfux\r\n\u2028\u2029"'0-7]$/.test(escaped) ? escaped : "\\" + escaped;
+ });
+ return enclosingQuote + newContent + enclosingQuote;
+ }
+
+ function printNumber(rawNumber) {
+ return rawNumber.toLowerCase() // Remove unnecessary plus and zeroes from scientific notation.
+ .replace(/^([+-]?[\d.]+e)(?:\+|(-))?0*(\d)/, "$1$2$3") // Remove unnecessary scientific notation (1e0).
+ .replace(/^([+-]?[\d.]+)e[+-]?0+$/, "$1") // Make sure numbers always start with a digit.
+ .replace(/^([+-])?\./, "$10.") // Remove extraneous trailing decimal zeroes.
+ .replace(/(\.\d+?)0+(?=e|$)/, "$1") // Remove trailing dot.
+ .replace(/\.(?=e|$)/, "");
+ }
+ /**
+ * @param {string} str
+ * @param {string} target
+ * @returns {number}
+ */
+
+
+ function getMaxContinuousCount(str, target) {
+ var results = str.match(new RegExp("(".concat(escapeStringRegexp(target), ")+"), "g"));
+
+ if (results === null) {
+ return 0;
+ }
+
+ return results.reduce(function (maxCount, result) {
+ return Math.max(maxCount, result.length / target.length);
+ }, 0);
+ }
+
+ function getMinNotPresentContinuousCount(str, target) {
+ var matches = str.match(new RegExp("(".concat(escapeStringRegexp(target), ")+"), "g"));
+
+ if (matches === null) {
+ return 0;
+ }
+
+ var countPresent = new Map();
+ var max = 0;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = matches[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var match = _step.value;
+ var count = match.length / target.length;
+ countPresent.set(count, true);
+
+ if (count > max) {
+ max = count;
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ for (var i = 1; i < max; i++) {
+ if (!countPresent.get(i)) {
+ return i;
+ }
+ }
+
+ return max + 1;
+ }
+ /**
+ * @param {string} text
+ * @returns {number}
+ */
+
+
+ function getStringWidth(text) {
+ if (!text) {
+ return 0;
+ } // shortcut to avoid needless string `RegExp`s, replacements, and allocations within `string-width`
+
+
+ if (!notAsciiRegex.test(text)) {
+ return text.length;
+ }
+
+ return stringWidth_1(text);
+ }
+
+ function hasIgnoreComment(path) {
+ var node = path.getValue();
+ return hasNodeIgnoreComment(node);
+ }
+
+ function hasNodeIgnoreComment(node) {
+ return node && node.comments && node.comments.length > 0 && node.comments.some(function (comment) {
+ return comment.value.trim() === "prettier-ignore";
+ });
+ }
+
+ function matchAncestorTypes(path, types, index) {
+ index = index || 0;
+ types = types.slice();
+
+ while (types.length) {
+ var parent = path.getParentNode(index);
+ var type = types.shift();
+
+ if (!parent || parent.type !== type) {
+ return false;
+ }
+
+ index++;
+ }
+
+ return true;
+ }
+
+ function addCommentHelper(node, comment) {
+ var comments = node.comments || (node.comments = []);
+ comments.push(comment);
+ comment.printed = false; // For some reason, TypeScript parses `// x` inside of JSXText as a comment
+ // We already "print" it via the raw text, we don't need to re-print it as a
+ // comment
+
+ if (node.type === "JSXText") {
+ comment.printed = true;
+ }
+ }
+
+ function addLeadingComment(node, comment) {
+ comment.leading = true;
+ comment.trailing = false;
+ addCommentHelper(node, comment);
+ }
+
+ function addDanglingComment(node, comment) {
+ comment.leading = false;
+ comment.trailing = false;
+ addCommentHelper(node, comment);
+ }
+
+ function addTrailingComment(node, comment) {
+ comment.leading = false;
+ comment.trailing = true;
+ addCommentHelper(node, comment);
+ }
+
+ function isWithinParentArrayProperty(path, propertyName) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+
+ if (parent == null) {
+ return false;
+ }
+
+ if (!Array.isArray(parent[propertyName])) {
+ return false;
+ }
+
+ var key = path.getName();
+ return parent[propertyName][key] === node;
+ }
+
+ function replaceEndOfLineWith(text, replacement) {
+ var parts = [];
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = text.split("\n")[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var part = _step2.value;
+
+ if (parts.length !== 0) {
+ parts.push(replacement);
+ }
+
+ parts.push(part);
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return parts;
+ }
+
+ var util = {
+ replaceEndOfLineWith: replaceEndOfLineWith,
+ getStringWidth: getStringWidth,
+ getMaxContinuousCount: getMaxContinuousCount,
+ getMinNotPresentContinuousCount: getMinNotPresentContinuousCount,
+ getPrecedence: getPrecedence,
+ shouldFlatten: shouldFlatten,
+ isBitwiseOperator: isBitwiseOperator,
+ isExportDeclaration: isExportDeclaration,
+ getParentExportDeclaration: getParentExportDeclaration,
+ getPenultimate: getPenultimate,
+ getLast: getLast,
+ getNextNonSpaceNonCommentCharacterIndexWithStartIndex: getNextNonSpaceNonCommentCharacterIndexWithStartIndex,
+ getNextNonSpaceNonCommentCharacterIndex: getNextNonSpaceNonCommentCharacterIndex,
+ getNextNonSpaceNonCommentCharacter: getNextNonSpaceNonCommentCharacter,
+ skip: skip,
+ skipWhitespace: skipWhitespace,
+ skipSpaces: skipSpaces,
+ skipToLineEnd: skipToLineEnd,
+ skipEverythingButNewLine: skipEverythingButNewLine,
+ skipInlineComment: skipInlineComment,
+ skipTrailingComment: skipTrailingComment,
+ skipNewline: skipNewline,
+ isNextLineEmptyAfterIndex: isNextLineEmptyAfterIndex,
+ isNextLineEmpty: isNextLineEmpty,
+ isPreviousLineEmpty: isPreviousLineEmpty,
+ hasNewline: hasNewline,
+ hasNewlineInRange: hasNewlineInRange,
+ hasSpaces: hasSpaces,
+ setLocStart: setLocStart,
+ setLocEnd: setLocEnd,
+ startsWithNoLookaheadToken: startsWithNoLookaheadToken,
+ getAlignmentSize: getAlignmentSize,
+ getIndentSize: getIndentSize,
+ getPreferredQuote: getPreferredQuote,
+ printString: printString,
+ printNumber: printNumber,
+ hasIgnoreComment: hasIgnoreComment,
+ hasNodeIgnoreComment: hasNodeIgnoreComment,
+ makeString: makeString,
+ matchAncestorTypes: matchAncestorTypes,
+ addLeadingComment: addLeadingComment,
+ addDanglingComment: addDanglingComment,
+ addTrailingComment: addTrailingComment,
+ isWithinParentArrayProperty: isWithinParentArrayProperty
+ };
+
+ function guessEndOfLine(text) {
+ var index = text.indexOf("\r");
+
+ if (index >= 0) {
+ return text.charAt(index + 1) === "\n" ? "crlf" : "cr";
+ }
+
+ return "lf";
+ }
+
+ function convertEndOfLineToChars(value) {
+ switch (value) {
+ case "cr":
+ return "\r";
+
+ case "crlf":
+ return "\r\n";
+
+ default:
+ return "\n";
+ }
+ }
+
+ var endOfLine = {
+ guessEndOfLine: guessEndOfLine,
+ convertEndOfLineToChars: convertEndOfLineToChars
+ };
+
+ var getStringWidth$1 = util.getStringWidth;
+ var convertEndOfLineToChars$1 = endOfLine.convertEndOfLineToChars;
+ var concat$1 = docBuilders.concat,
+ fill$1 = docBuilders.fill,
+ cursor$1 = docBuilders.cursor;
+ /** @type {Record<symbol, typeof MODE_BREAK | typeof MODE_FLAT>} */
+
+ var groupModeMap;
+ var MODE_BREAK = 1;
+ var MODE_FLAT = 2;
+
+ function rootIndent() {
+ return {
+ value: "",
+ length: 0,
+ queue: []
+ };
+ }
+
+ function makeIndent(ind, options) {
+ return generateInd(ind, {
+ type: "indent"
+ }, options);
+ }
+
+ function makeAlign(ind, n, options) {
+ return n === -Infinity ? ind.root || rootIndent() : n < 0 ? generateInd(ind, {
+ type: "dedent"
+ }, options) : !n ? ind : n.type === "root" ? Object.assign({}, ind, {
+ root: ind
+ }) : typeof n === "string" ? generateInd(ind, {
+ type: "stringAlign",
+ n: n
+ }, options) : generateInd(ind, {
+ type: "numberAlign",
+ n: n
+ }, options);
+ }
+
+ function generateInd(ind, newPart, options) {
+ var queue = newPart.type === "dedent" ? ind.queue.slice(0, -1) : ind.queue.concat(newPart);
+ var value = "";
+ var length = 0;
+ var lastTabs = 0;
+ var lastSpaces = 0;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = queue[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var part = _step.value;
+
+ switch (part.type) {
+ case "indent":
+ flush();
+
+ if (options.useTabs) {
+ addTabs(1);
+ } else {
+ addSpaces(options.tabWidth);
+ }
+
+ break;
+
+ case "stringAlign":
+ flush();
+ value += part.n;
+ length += part.n.length;
+ break;
+
+ case "numberAlign":
+ lastTabs += 1;
+ lastSpaces += part.n;
+ break;
+
+ /* istanbul ignore next */
+
+ default:
+ throw new Error("Unexpected type '".concat(part.type, "'"));
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ flushSpaces();
+ return Object.assign({}, ind, {
+ value: value,
+ length: length,
+ queue: queue
+ });
+
+ function addTabs(count) {
+ value += "\t".repeat(count);
+ length += options.tabWidth * count;
+ }
+
+ function addSpaces(count) {
+ value += " ".repeat(count);
+ length += count;
+ }
+
+ function flush() {
+ if (options.useTabs) {
+ flushTabs();
+ } else {
+ flushSpaces();
+ }
+ }
+
+ function flushTabs() {
+ if (lastTabs > 0) {
+ addTabs(lastTabs);
+ }
+
+ resetLast();
+ }
+
+ function flushSpaces() {
+ if (lastSpaces > 0) {
+ addSpaces(lastSpaces);
+ }
+
+ resetLast();
+ }
+
+ function resetLast() {
+ lastTabs = 0;
+ lastSpaces = 0;
+ }
+ }
+
+ function trim$1(out) {
+ if (out.length === 0) {
+ return 0;
+ }
+
+ var trimCount = 0; // Trim whitespace at the end of line
+
+ while (out.length > 0 && typeof out[out.length - 1] === "string" && out[out.length - 1].match(/^[ \t]*$/)) {
+ trimCount += out.pop().length;
+ }
+
+ if (out.length && typeof out[out.length - 1] === "string") {
+ var trimmed = out[out.length - 1].replace(/[ \t]*$/, "");
+ trimCount += out[out.length - 1].length - trimmed.length;
+ out[out.length - 1] = trimmed;
+ }
+
+ return trimCount;
+ }
+
+ function fits(next, restCommands, width, options, mustBeFlat) {
+ var restIdx = restCommands.length;
+ var cmds = [next]; // `out` is only used for width counting because `trim` requires to look
+ // backwards for space characters.
+
+ var out = [];
+
+ while (width >= 0) {
+ if (cmds.length === 0) {
+ if (restIdx === 0) {
+ return true;
+ }
+
+ cmds.push(restCommands[restIdx - 1]);
+ restIdx--;
+ continue;
+ }
+
+ var x = cmds.pop();
+ var ind = x[0];
+ var mode = x[1];
+ var doc = x[2];
+
+ if (typeof doc === "string") {
+ out.push(doc);
+ width -= getStringWidth$1(doc);
+ } else {
+ switch (doc.type) {
+ case "concat":
+ for (var i = doc.parts.length - 1; i >= 0; i--) {
+ cmds.push([ind, mode, doc.parts[i]]);
+ }
+
+ break;
+
+ case "indent":
+ cmds.push([makeIndent(ind, options), mode, doc.contents]);
+ break;
+
+ case "align":
+ cmds.push([makeAlign(ind, doc.n, options), mode, doc.contents]);
+ break;
+
+ case "trim":
+ width += trim$1(out);
+ break;
+
+ case "group":
+ if (mustBeFlat && doc.break) {
+ return false;
+ }
+
+ cmds.push([ind, doc.break ? MODE_BREAK : mode, doc.contents]);
+
+ if (doc.id) {
+ groupModeMap[doc.id] = cmds[cmds.length - 1][1];
+ }
+
+ break;
+
+ case "fill":
+ for (var _i = doc.parts.length - 1; _i >= 0; _i--) {
+ cmds.push([ind, mode, doc.parts[_i]]);
+ }
+
+ break;
+
+ case "if-break":
+ {
+ var groupMode = doc.groupId ? groupModeMap[doc.groupId] : mode;
+
+ if (groupMode === MODE_BREAK) {
+ if (doc.breakContents) {
+ cmds.push([ind, mode, doc.breakContents]);
+ }
+ }
+
+ if (groupMode === MODE_FLAT) {
+ if (doc.flatContents) {
+ cmds.push([ind, mode, doc.flatContents]);
+ }
+ }
+
+ break;
+ }
+
+ case "line":
+ switch (mode) {
+ // fallthrough
+ case MODE_FLAT:
+ if (!doc.hard) {
+ if (!doc.soft) {
+ out.push(" ");
+ width -= 1;
+ }
+
+ break;
+ }
+
+ return true;
+
+ case MODE_BREAK:
+ return true;
+ }
+
+ break;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ function printDocToString(doc, options) {
+ groupModeMap = {};
+ var width = options.printWidth;
+ var newLine = convertEndOfLineToChars$1(options.endOfLine);
+ var pos = 0; // cmds is basically a stack. We've turned a recursive call into a
+ // while loop which is much faster. The while loop below adds new
+ // cmds to the array instead of recursively calling `print`.
+
+ var cmds = [[rootIndent(), MODE_BREAK, doc]];
+ var out = [];
+ var shouldRemeasure = false;
+ var lineSuffix = [];
+
+ while (cmds.length !== 0) {
+ var x = cmds.pop();
+ var ind = x[0];
+ var mode = x[1];
+ var _doc = x[2];
+
+ if (typeof _doc === "string") {
+ out.push(_doc);
+ pos += getStringWidth$1(_doc);
+ } else {
+ switch (_doc.type) {
+ case "cursor":
+ out.push(cursor$1.placeholder);
+ break;
+
+ case "concat":
+ for (var i = _doc.parts.length - 1; i >= 0; i--) {
+ cmds.push([ind, mode, _doc.parts[i]]);
+ }
+
+ break;
+
+ case "indent":
+ cmds.push([makeIndent(ind, options), mode, _doc.contents]);
+ break;
+
+ case "align":
+ cmds.push([makeAlign(ind, _doc.n, options), mode, _doc.contents]);
+ break;
+
+ case "trim":
+ pos -= trim$1(out);
+ break;
+
+ case "group":
+ switch (mode) {
+ case MODE_FLAT:
+ if (!shouldRemeasure) {
+ cmds.push([ind, _doc.break ? MODE_BREAK : MODE_FLAT, _doc.contents]);
+ break;
+ }
+
+ // fallthrough
+
+ case MODE_BREAK:
+ {
+ shouldRemeasure = false;
+ var next = [ind, MODE_FLAT, _doc.contents];
+ var rem = width - pos;
+
+ if (!_doc.break && fits(next, cmds, rem, options)) {
+ cmds.push(next);
+ } else {
+ // Expanded states are a rare case where a document
+ // can manually provide multiple representations of
+ // itself. It provides an array of documents
+ // going from the least expanded (most flattened)
+ // representation first to the most expanded. If a
+ // group has these, we need to manually go through
+ // these states and find the first one that fits.
+ if (_doc.expandedStates) {
+ var mostExpanded = _doc.expandedStates[_doc.expandedStates.length - 1];
+
+ if (_doc.break) {
+ cmds.push([ind, MODE_BREAK, mostExpanded]);
+ break;
+ } else {
+ for (var _i2 = 1; _i2 < _doc.expandedStates.length + 1; _i2++) {
+ if (_i2 >= _doc.expandedStates.length) {
+ cmds.push([ind, MODE_BREAK, mostExpanded]);
+ break;
+ } else {
+ var state = _doc.expandedStates[_i2];
+ var cmd = [ind, MODE_FLAT, state];
+
+ if (fits(cmd, cmds, rem, options)) {
+ cmds.push(cmd);
+ break;
+ }
+ }
+ }
+ }
+ } else {
+ cmds.push([ind, MODE_BREAK, _doc.contents]);
+ }
+ }
+
+ break;
+ }
+ }
+
+ if (_doc.id) {
+ groupModeMap[_doc.id] = cmds[cmds.length - 1][1];
+ }
+
+ break;
+ // Fills each line with as much code as possible before moving to a new
+ // line with the same indentation.
+ //
+ // Expects doc.parts to be an array of alternating content and
+ // whitespace. The whitespace contains the linebreaks.
+ //
+ // For example:
+ // ["I", line, "love", line, "monkeys"]
+ // or
+ // [{ type: group, ... }, softline, { type: group, ... }]
+ //
+ // It uses this parts structure to handle three main layout cases:
+ // * The first two content items fit on the same line without
+ // breaking
+ // -> output the first content item and the whitespace "flat".
+ // * Only the first content item fits on the line without breaking
+ // -> output the first content item "flat" and the whitespace with
+ // "break".
+ // * Neither content item fits on the line without breaking
+ // -> output the first content item and the whitespace with "break".
+
+ case "fill":
+ {
+ var _rem = width - pos;
+
+ var parts = _doc.parts;
+
+ if (parts.length === 0) {
+ break;
+ }
+
+ var content = parts[0];
+ var contentFlatCmd = [ind, MODE_FLAT, content];
+ var contentBreakCmd = [ind, MODE_BREAK, content];
+ var contentFits = fits(contentFlatCmd, [], _rem, options, true);
+
+ if (parts.length === 1) {
+ if (contentFits) {
+ cmds.push(contentFlatCmd);
+ } else {
+ cmds.push(contentBreakCmd);
+ }
+
+ break;
+ }
+
+ var whitespace = parts[1];
+ var whitespaceFlatCmd = [ind, MODE_FLAT, whitespace];
+ var whitespaceBreakCmd = [ind, MODE_BREAK, whitespace];
+
+ if (parts.length === 2) {
+ if (contentFits) {
+ cmds.push(whitespaceFlatCmd);
+ cmds.push(contentFlatCmd);
+ } else {
+ cmds.push(whitespaceBreakCmd);
+ cmds.push(contentBreakCmd);
+ }
+
+ break;
+ } // At this point we've handled the first pair (context, separator)
+ // and will create a new fill doc for the rest of the content.
+ // Ideally we wouldn't mutate the array here but coping all the
+ // elements to a new array would make this algorithm quadratic,
+ // which is unusable for large arrays (e.g. large texts in JSX).
+
+
+ parts.splice(0, 2);
+ var remainingCmd = [ind, mode, fill$1(parts)];
+ var secondContent = parts[0];
+ var firstAndSecondContentFlatCmd = [ind, MODE_FLAT, concat$1([content, whitespace, secondContent])];
+ var firstAndSecondContentFits = fits(firstAndSecondContentFlatCmd, [], _rem, options, true);
+
+ if (firstAndSecondContentFits) {
+ cmds.push(remainingCmd);
+ cmds.push(whitespaceFlatCmd);
+ cmds.push(contentFlatCmd);
+ } else if (contentFits) {
+ cmds.push(remainingCmd);
+ cmds.push(whitespaceBreakCmd);
+ cmds.push(contentFlatCmd);
+ } else {
+ cmds.push(remainingCmd);
+ cmds.push(whitespaceBreakCmd);
+ cmds.push(contentBreakCmd);
+ }
+
+ break;
+ }
+
+ case "if-break":
+ {
+ var groupMode = _doc.groupId ? groupModeMap[_doc.groupId] : mode;
+
+ if (groupMode === MODE_BREAK) {
+ if (_doc.breakContents) {
+ cmds.push([ind, mode, _doc.breakContents]);
+ }
+ }
+
+ if (groupMode === MODE_FLAT) {
+ if (_doc.flatContents) {
+ cmds.push([ind, mode, _doc.flatContents]);
+ }
+ }
+
+ break;
+ }
+
+ case "line-suffix":
+ lineSuffix.push([ind, mode, _doc.contents]);
+ break;
+
+ case "line-suffix-boundary":
+ if (lineSuffix.length > 0) {
+ cmds.push([ind, mode, {
+ type: "line",
+ hard: true
+ }]);
+ }
+
+ break;
+
+ case "line":
+ switch (mode) {
+ case MODE_FLAT:
+ if (!_doc.hard) {
+ if (!_doc.soft) {
+ out.push(" ");
+ pos += 1;
+ }
+
+ break;
+ } else {
+ // This line was forced into the output even if we
+ // were in flattened mode, so we need to tell the next
+ // group that no matter what, it needs to remeasure
+ // because the previous measurement didn't accurately
+ // capture the entire expression (this is necessary
+ // for nested groups)
+ shouldRemeasure = true;
+ }
+
+ // fallthrough
+
+ case MODE_BREAK:
+ if (lineSuffix.length) {
+ cmds.push([ind, mode, _doc]);
+ [].push.apply(cmds, lineSuffix.reverse());
+ lineSuffix = [];
+ break;
+ }
+
+ if (_doc.literal) {
+ if (ind.root) {
+ out.push(newLine, ind.root.value);
+ pos = ind.root.length;
+ } else {
+ out.push(newLine);
+ pos = 0;
+ }
+ } else {
+ pos -= trim$1(out);
+ out.push(newLine + ind.value);
+ pos = ind.length;
+ }
+
+ break;
+ }
+
+ break;
+ }
+ }
+ }
+
+ var cursorPlaceholderIndex = out.indexOf(cursor$1.placeholder);
+
+ if (cursorPlaceholderIndex !== -1) {
+ var otherCursorPlaceholderIndex = out.indexOf(cursor$1.placeholder, cursorPlaceholderIndex + 1);
+ var beforeCursor = out.slice(0, cursorPlaceholderIndex).join("");
+ var aroundCursor = out.slice(cursorPlaceholderIndex + 1, otherCursorPlaceholderIndex).join("");
+ var afterCursor = out.slice(otherCursorPlaceholderIndex + 1).join("");
+ return {
+ formatted: beforeCursor + aroundCursor + afterCursor,
+ cursorNodeStart: beforeCursor.length,
+ cursorNodeText: aroundCursor
+ };
+ }
+
+ return {
+ formatted: out.join("")
+ };
+ }
+
+ var docPrinter = {
+ printDocToString: printDocToString
+ };
+
+ var traverseDocOnExitStackMarker = {};
+
+ function traverseDoc(doc, onEnter, onExit, shouldTraverseConditionalGroups) {
+ var docsStack = [doc];
+
+ while (docsStack.length !== 0) {
+ var _doc = docsStack.pop();
+
+ if (_doc === traverseDocOnExitStackMarker) {
+ onExit(docsStack.pop());
+ continue;
+ }
+
+ var shouldRecurse = true;
+
+ if (onEnter) {
+ if (onEnter(_doc) === false) {
+ shouldRecurse = false;
+ }
+ }
+
+ if (onExit) {
+ docsStack.push(_doc);
+ docsStack.push(traverseDocOnExitStackMarker);
+ }
+
+ if (shouldRecurse) {
+ // When there are multiple parts to process,
+ // the parts need to be pushed onto the stack in reverse order,
+ // so that they are processed in the original order
+ // when the stack is popped.
+ if (_doc.type === "concat" || _doc.type === "fill") {
+ for (var ic = _doc.parts.length, i = ic - 1; i >= 0; --i) {
+ docsStack.push(_doc.parts[i]);
+ }
+ } else if (_doc.type === "if-break") {
+ if (_doc.flatContents) {
+ docsStack.push(_doc.flatContents);
+ }
+
+ if (_doc.breakContents) {
+ docsStack.push(_doc.breakContents);
+ }
+ } else if (_doc.type === "group" && _doc.expandedStates) {
+ if (shouldTraverseConditionalGroups) {
+ for (var _ic = _doc.expandedStates.length, _i = _ic - 1; _i >= 0; --_i) {
+ docsStack.push(_doc.expandedStates[_i]);
+ }
+ } else {
+ docsStack.push(_doc.contents);
+ }
+ } else if (_doc.contents) {
+ docsStack.push(_doc.contents);
+ }
+ }
+ }
+ }
+
+ function mapDoc(doc, cb) {
+ if (doc.type === "concat" || doc.type === "fill") {
+ var parts = doc.parts.map(function (part) {
+ return mapDoc(part, cb);
+ });
+ return cb(Object.assign({}, doc, {
+ parts: parts
+ }));
+ } else if (doc.type === "if-break") {
+ var breakContents = doc.breakContents && mapDoc(doc.breakContents, cb);
+ var flatContents = doc.flatContents && mapDoc(doc.flatContents, cb);
+ return cb(Object.assign({}, doc, {
+ breakContents: breakContents,
+ flatContents: flatContents
+ }));
+ } else if (doc.contents) {
+ var contents = mapDoc(doc.contents, cb);
+ return cb(Object.assign({}, doc, {
+ contents: contents
+ }));
+ }
+
+ return cb(doc);
+ }
+
+ function findInDoc(doc, fn, defaultValue) {
+ var result = defaultValue;
+ var hasStopped = false;
+
+ function findInDocOnEnterFn(doc) {
+ var maybeResult = fn(doc);
+
+ if (maybeResult !== undefined) {
+ hasStopped = true;
+ result = maybeResult;
+ }
+
+ if (hasStopped) {
+ return false;
+ }
+ }
+
+ traverseDoc(doc, findInDocOnEnterFn);
+ return result;
+ }
+
+ function isEmpty(n) {
+ return typeof n === "string" && n.length === 0;
+ }
+
+ function isLineNextFn(doc) {
+ if (typeof doc === "string") {
+ return false;
+ }
+
+ if (doc.type === "line") {
+ return true;
+ }
+ }
+
+ function isLineNext(doc) {
+ return findInDoc(doc, isLineNextFn, false);
+ }
+
+ function willBreakFn(doc) {
+ if (doc.type === "group" && doc.break) {
+ return true;
+ }
+
+ if (doc.type === "line" && doc.hard) {
+ return true;
+ }
+
+ if (doc.type === "break-parent") {
+ return true;
+ }
+ }
+
+ function willBreak(doc) {
+ return findInDoc(doc, willBreakFn, false);
+ }
+
+ function breakParentGroup(groupStack) {
+ if (groupStack.length > 0) {
+ var parentGroup = groupStack[groupStack.length - 1]; // Breaks are not propagated through conditional groups because
+ // the user is expected to manually handle what breaks.
+
+ if (!parentGroup.expandedStates) {
+ parentGroup.break = true;
+ }
+ }
+
+ return null;
+ }
+
+ function propagateBreaks(doc) {
+ var alreadyVisitedSet = new Set();
+ var groupStack = [];
+
+ function propagateBreaksOnEnterFn(doc) {
+ if (doc.type === "break-parent") {
+ breakParentGroup(groupStack);
+ }
+
+ if (doc.type === "group") {
+ groupStack.push(doc);
+
+ if (alreadyVisitedSet.has(doc)) {
+ return false;
+ }
+
+ alreadyVisitedSet.add(doc);
+ }
+ }
+
+ function propagateBreaksOnExitFn(doc) {
+ if (doc.type === "group") {
+ var group = groupStack.pop();
+
+ if (group.break) {
+ breakParentGroup(groupStack);
+ }
+ }
+ }
+
+ traverseDoc(doc, propagateBreaksOnEnterFn, propagateBreaksOnExitFn,
+ /* shouldTraverseConditionalGroups */
+ true);
+ }
+
+ function removeLinesFn(doc) {
+ // Force this doc into flat mode by statically converting all
+ // lines into spaces (or soft lines into nothing). Hard lines
+ // should still output because there's too great of a chance
+ // of breaking existing assumptions otherwise.
+ if (doc.type === "line" && !doc.hard) {
+ return doc.soft ? "" : " ";
+ } else if (doc.type === "if-break") {
+ return doc.flatContents || "";
+ }
+
+ return doc;
+ }
+
+ function removeLines(doc) {
+ return mapDoc(doc, removeLinesFn);
+ }
+
+ function stripTrailingHardline(doc) {
+ // HACK remove ending hardline, original PR: #1984
+ if (doc.type === "concat" && doc.parts.length !== 0) {
+ var lastPart = doc.parts[doc.parts.length - 1];
+
+ if (lastPart.type === "concat") {
+ if (lastPart.parts.length === 2 && lastPart.parts[0].hard && lastPart.parts[1].type === "break-parent") {
+ return {
+ type: "concat",
+ parts: doc.parts.slice(0, -1)
+ };
+ }
+
+ return {
+ type: "concat",
+ parts: doc.parts.slice(0, -1).concat(stripTrailingHardline(lastPart))
+ };
+ }
+ }
+
+ return doc;
+ }
+
+ var docUtils = {
+ isEmpty: isEmpty,
+ willBreak: willBreak,
+ isLineNext: isLineNext,
+ traverseDoc: traverseDoc,
+ findInDoc: findInDoc,
+ mapDoc: mapDoc,
+ propagateBreaks: propagateBreaks,
+ removeLines: removeLines,
+ stripTrailingHardline: stripTrailingHardline
+ };
+
+ function flattenDoc(doc) {
+ if (doc.type === "concat") {
+ var res = [];
+
+ for (var i = 0; i < doc.parts.length; ++i) {
+ var doc2 = doc.parts[i];
+
+ if (typeof doc2 !== "string" && doc2.type === "concat") {
+ [].push.apply(res, flattenDoc(doc2).parts);
+ } else {
+ var flattened = flattenDoc(doc2);
+
+ if (flattened !== "") {
+ res.push(flattened);
+ }
+ }
+ }
+
+ return Object.assign({}, doc, {
+ parts: res
+ });
+ } else if (doc.type === "if-break") {
+ return Object.assign({}, doc, {
+ breakContents: doc.breakContents != null ? flattenDoc(doc.breakContents) : null,
+ flatContents: doc.flatContents != null ? flattenDoc(doc.flatContents) : null
+ });
+ } else if (doc.type === "group") {
+ return Object.assign({}, doc, {
+ contents: flattenDoc(doc.contents),
+ expandedStates: doc.expandedStates ? doc.expandedStates.map(flattenDoc) : doc.expandedStates
+ });
+ } else if (doc.contents) {
+ return Object.assign({}, doc, {
+ contents: flattenDoc(doc.contents)
+ });
+ }
+
+ return doc;
+ }
+
+ function printDoc(doc) {
+ if (typeof doc === "string") {
+ return JSON.stringify(doc);
+ }
+
+ if (doc.type === "line") {
+ if (doc.literal) {
+ return "literalline";
+ }
+
+ if (doc.hard) {
+ return "hardline";
+ }
+
+ if (doc.soft) {
+ return "softline";
+ }
+
+ return "line";
+ }
+
+ if (doc.type === "break-parent") {
+ return "breakParent";
+ }
+
+ if (doc.type === "trim") {
+ return "trim";
+ }
+
+ if (doc.type === "concat") {
+ return "[" + doc.parts.map(printDoc).join(", ") + "]";
+ }
+
+ if (doc.type === "indent") {
+ return "indent(" + printDoc(doc.contents) + ")";
+ }
+
+ if (doc.type === "align") {
+ return doc.n === -Infinity ? "dedentToRoot(" + printDoc(doc.contents) + ")" : doc.n < 0 ? "dedent(" + printDoc(doc.contents) + ")" : doc.n.type === "root" ? "markAsRoot(" + printDoc(doc.contents) + ")" : "align(" + JSON.stringify(doc.n) + ", " + printDoc(doc.contents) + ")";
+ }
+
+ if (doc.type === "if-break") {
+ return "ifBreak(" + printDoc(doc.breakContents) + (doc.flatContents ? ", " + printDoc(doc.flatContents) : "") + ")";
+ }
+
+ if (doc.type === "group") {
+ if (doc.expandedStates) {
+ return "conditionalGroup(" + "[" + doc.expandedStates.map(printDoc).join(",") + "])";
+ }
+
+ return (doc.break ? "wrappedGroup" : "group") + "(" + printDoc(doc.contents) + ")";
+ }
+
+ if (doc.type === "fill") {
+ return "fill" + "(" + doc.parts.map(printDoc).join(", ") + ")";
+ }
+
+ if (doc.type === "line-suffix") {
+ return "lineSuffix(" + printDoc(doc.contents) + ")";
+ }
+
+ if (doc.type === "line-suffix-boundary") {
+ return "lineSuffixBoundary";
+ }
+
+ throw new Error("Unknown doc type " + doc.type);
+ }
+
+ var docDebug = {
+ printDocToDebug: function printDocToDebug(doc) {
+ return printDoc(flattenDoc(doc));
+ }
+ };
+
+ var doc = {
+ builders: docBuilders,
+ printer: docPrinter,
+ utils: docUtils,
+ debug: docDebug
+ };
+
+ var mapDoc$1 = doc.utils.mapDoc;
+
+ function isNextLineEmpty$1(text, node, options) {
+ return util.isNextLineEmpty(text, node, options.locEnd);
+ }
+
+ function isPreviousLineEmpty$1(text, node, options) {
+ return util.isPreviousLineEmpty(text, node, options.locStart);
+ }
+
+ function getNextNonSpaceNonCommentCharacterIndex$1(text, node, options) {
+ return util.getNextNonSpaceNonCommentCharacterIndex(text, node, options.locEnd);
+ }
+
+ var utilShared = {
+ getMaxContinuousCount: util.getMaxContinuousCount,
+ getStringWidth: util.getStringWidth,
+ getAlignmentSize: util.getAlignmentSize,
+ getIndentSize: util.getIndentSize,
+ skip: util.skip,
+ skipWhitespace: util.skipWhitespace,
+ skipSpaces: util.skipSpaces,
+ skipNewline: util.skipNewline,
+ skipToLineEnd: util.skipToLineEnd,
+ skipEverythingButNewLine: util.skipEverythingButNewLine,
+ skipInlineComment: util.skipInlineComment,
+ skipTrailingComment: util.skipTrailingComment,
+ hasNewline: util.hasNewline,
+ hasNewlineInRange: util.hasNewlineInRange,
+ hasSpaces: util.hasSpaces,
+ isNextLineEmpty: isNextLineEmpty$1,
+ isNextLineEmptyAfterIndex: util.isNextLineEmptyAfterIndex,
+ isPreviousLineEmpty: isPreviousLineEmpty$1,
+ getNextNonSpaceNonCommentCharacterIndex: getNextNonSpaceNonCommentCharacterIndex$1,
+ mapDoc: mapDoc$1,
+ // TODO: remove in 2.0, we already exposed it in docUtils
+ makeString: util.makeString,
+ addLeadingComment: util.addLeadingComment,
+ addDanglingComment: util.addDanglingComment,
+ addTrailingComment: util.addTrailingComment
+ };
+
+ var _require$$0$builders = doc.builders,
+ concat$2 = _require$$0$builders.concat,
+ hardline$1 = _require$$0$builders.hardline,
+ breakParent$1 = _require$$0$builders.breakParent,
+ indent$1 = _require$$0$builders.indent,
+ lineSuffix$1 = _require$$0$builders.lineSuffix,
+ join$1 = _require$$0$builders.join,
+ cursor$2 = _require$$0$builders.cursor;
+ var hasNewline$1 = util.hasNewline,
+ skipNewline$1 = util.skipNewline,
+ isPreviousLineEmpty$2 = util.isPreviousLineEmpty;
+ var addLeadingComment$1 = utilShared.addLeadingComment,
+ addDanglingComment$1 = utilShared.addDanglingComment,
+ addTrailingComment$1 = utilShared.addTrailingComment;
+ var childNodesCacheKey = Symbol("child-nodes");
+
+ function getSortedChildNodes(node, options, resultArray) {
+ if (!node) {
+ return;
+ }
+
+ var printer = options.printer,
+ locStart = options.locStart,
+ locEnd = options.locEnd;
+
+ if (resultArray) {
+ if (node && printer.canAttachComment && printer.canAttachComment(node)) {
+ // This reverse insertion sort almost always takes constant
+ // time because we almost always (maybe always?) append the
+ // nodes in order anyway.
+ var i;
+
+ for (i = resultArray.length - 1; i >= 0; --i) {
+ if (locStart(resultArray[i]) <= locStart(node) && locEnd(resultArray[i]) <= locEnd(node)) {
+ break;
+ }
+ }
+
+ resultArray.splice(i + 1, 0, node);
+ return;
+ }
+ } else if (node[childNodesCacheKey]) {
+ return node[childNodesCacheKey];
+ }
+
+ var childNodes;
+
+ if (printer.getCommentChildNodes) {
+ childNodes = printer.getCommentChildNodes(node);
+ } else if (node && _typeof(node) === "object") {
+ childNodes = Object.keys(node).filter(function (n) {
+ return n !== "enclosingNode" && n !== "precedingNode" && n !== "followingNode";
+ }).map(function (n) {
+ return node[n];
+ });
+ }
+
+ if (!childNodes) {
+ return;
+ }
+
+ if (!resultArray) {
+ Object.defineProperty(node, childNodesCacheKey, {
+ value: resultArray = [],
+ enumerable: false
+ });
+ }
+
+ childNodes.forEach(function (childNode) {
+ getSortedChildNodes(childNode, options, resultArray);
+ });
+ return resultArray;
+ } // As efficiently as possible, decorate the comment object with
+ // .precedingNode, .enclosingNode, and/or .followingNode properties, at
+ // least one of which is guaranteed to be defined.
+
+
+ function decorateComment(node, comment, options) {
+ var locStart = options.locStart,
+ locEnd = options.locEnd;
+ var childNodes = getSortedChildNodes(node, options);
+ var precedingNode;
+ var followingNode; // Time to dust off the old binary search robes and wizard hat.
+
+ var left = 0;
+ var right = childNodes.length;
+
+ while (left < right) {
+ var middle = left + right >> 1;
+ var child = childNodes[middle];
+
+ if (locStart(child) - locStart(comment) <= 0 && locEnd(comment) - locEnd(child) <= 0) {
+ // The comment is completely contained by this child node.
+ comment.enclosingNode = child;
+ decorateComment(child, comment, options);
+ return; // Abandon the binary search at this level.
+ }
+
+ if (locEnd(child) - locStart(comment) <= 0) {
+ // This child node falls completely before the comment.
+ // Because we will never consider this node or any nodes
+ // before it again, this node must be the closest preceding
+ // node we have encountered so far.
+ precedingNode = child;
+ left = middle + 1;
+ continue;
+ }
+
+ if (locEnd(comment) - locStart(child) <= 0) {
+ // This child node falls completely after the comment.
+ // Because we will never consider this node or any nodes after
+ // it again, this node must be the closest following node we
+ // have encountered so far.
+ followingNode = child;
+ right = middle;
+ continue;
+ }
+ /* istanbul ignore next */
+
+
+ throw new Error("Comment location overlaps with node location");
+ } // We don't want comments inside of different expressions inside of the same
+ // template literal to move to another expression.
+
+
+ if (comment.enclosingNode && comment.enclosingNode.type === "TemplateLiteral") {
+ var quasis = comment.enclosingNode.quasis;
+ var commentIndex = findExpressionIndexForComment(quasis, comment, options);
+
+ if (precedingNode && findExpressionIndexForComment(quasis, precedingNode, options) !== commentIndex) {
+ precedingNode = null;
+ }
+
+ if (followingNode && findExpressionIndexForComment(quasis, followingNode, options) !== commentIndex) {
+ followingNode = null;
+ }
+ }
+
+ if (precedingNode) {
+ comment.precedingNode = precedingNode;
+ }
+
+ if (followingNode) {
+ comment.followingNode = followingNode;
+ }
+ }
+
+ function attach(comments, ast, text, options) {
+ if (!Array.isArray(comments)) {
+ return;
+ }
+
+ var tiesToBreak = [];
+ var locStart = options.locStart,
+ locEnd = options.locEnd;
+ comments.forEach(function (comment, i) {
+ if (options.parser === "json" || options.parser === "json5" || options.parser === "__js_expression" || options.parser === "__vue_expression") {
+ if (locStart(comment) - locStart(ast) <= 0) {
+ addLeadingComment$1(ast, comment);
+ return;
+ }
+
+ if (locEnd(comment) - locEnd(ast) >= 0) {
+ addTrailingComment$1(ast, comment);
+ return;
+ }
+ }
+
+ decorateComment(ast, comment, options);
+ var precedingNode = comment.precedingNode,
+ enclosingNode = comment.enclosingNode,
+ followingNode = comment.followingNode;
+ var pluginHandleOwnLineComment = options.printer.handleComments && options.printer.handleComments.ownLine ? options.printer.handleComments.ownLine : function () {
+ return false;
+ };
+ var pluginHandleEndOfLineComment = options.printer.handleComments && options.printer.handleComments.endOfLine ? options.printer.handleComments.endOfLine : function () {
+ return false;
+ };
+ var pluginHandleRemainingComment = options.printer.handleComments && options.printer.handleComments.remaining ? options.printer.handleComments.remaining : function () {
+ return false;
+ };
+ var isLastComment = comments.length - 1 === i;
+
+ if (hasNewline$1(text, locStart(comment), {
+ backwards: true
+ })) {
+ // If a comment exists on its own line, prefer a leading comment.
+ // We also need to check if it's the first line of the file.
+ if (pluginHandleOwnLineComment(comment, text, options, ast, isLastComment)) ; else if (followingNode) {
+ // Always a leading comment.
+ addLeadingComment$1(followingNode, comment);
+ } else if (precedingNode) {
+ addTrailingComment$1(precedingNode, comment);
+ } else if (enclosingNode) {
+ addDanglingComment$1(enclosingNode, comment);
+ } else {
+ // There are no nodes, let's attach it to the root of the ast
+
+ /* istanbul ignore next */
+ addDanglingComment$1(ast, comment);
+ }
+ } else if (hasNewline$1(text, locEnd(comment))) {
+ if (pluginHandleEndOfLineComment(comment, text, options, ast, isLastComment)) ; else if (precedingNode) {
+ // There is content before this comment on the same line, but
+ // none after it, so prefer a trailing comment of the previous node.
+ addTrailingComment$1(precedingNode, comment);
+ } else if (followingNode) {
+ addLeadingComment$1(followingNode, comment);
+ } else if (enclosingNode) {
+ addDanglingComment$1(enclosingNode, comment);
+ } else {
+ // There are no nodes, let's attach it to the root of the ast
+
+ /* istanbul ignore next */
+ addDanglingComment$1(ast, comment);
+ }
+ } else {
+ if (pluginHandleRemainingComment(comment, text, options, ast, isLastComment)) ; else if (precedingNode && followingNode) {
+ // Otherwise, text exists both before and after the comment on
+ // the same line. If there is both a preceding and following
+ // node, use a tie-breaking algorithm to determine if it should
+ // be attached to the next or previous node. In the last case,
+ // simply attach the right node;
+ var tieCount = tiesToBreak.length;
+
+ if (tieCount > 0) {
+ var lastTie = tiesToBreak[tieCount - 1];
+
+ if (lastTie.followingNode !== comment.followingNode) {
+ breakTies(tiesToBreak, text, options);
+ }
+ }
+
+ tiesToBreak.push(comment);
+ } else if (precedingNode) {
+ addTrailingComment$1(precedingNode, comment);
+ } else if (followingNode) {
+ addLeadingComment$1(followingNode, comment);
+ } else if (enclosingNode) {
+ addDanglingComment$1(enclosingNode, comment);
+ } else {
+ // There are no nodes, let's attach it to the root of the ast
+
+ /* istanbul ignore next */
+ addDanglingComment$1(ast, comment);
+ }
+ }
+ });
+ breakTies(tiesToBreak, text, options);
+ comments.forEach(function (comment) {
+ // These node references were useful for breaking ties, but we
+ // don't need them anymore, and they create cycles in the AST that
+ // may lead to infinite recursion if we don't delete them here.
+ delete comment.precedingNode;
+ delete comment.enclosingNode;
+ delete comment.followingNode;
+ });
+ }
+
+ function breakTies(tiesToBreak, text, options) {
+ var tieCount = tiesToBreak.length;
+
+ if (tieCount === 0) {
+ return;
+ }
+
+ var _tiesToBreak$ = tiesToBreak[0],
+ precedingNode = _tiesToBreak$.precedingNode,
+ followingNode = _tiesToBreak$.followingNode;
+ var gapEndPos = options.locStart(followingNode); // Iterate backwards through tiesToBreak, examining the gaps
+ // between the tied comments. In order to qualify as leading, a
+ // comment must be separated from followingNode by an unbroken series of
+ // gaps (or other comments). Gaps should only contain whitespace or open
+ // parentheses.
+
+ var indexOfFirstLeadingComment;
+
+ for (indexOfFirstLeadingComment = tieCount; indexOfFirstLeadingComment > 0; --indexOfFirstLeadingComment) {
+ var comment = tiesToBreak[indexOfFirstLeadingComment - 1];
+ assert.strictEqual(comment.precedingNode, precedingNode);
+ assert.strictEqual(comment.followingNode, followingNode);
+ var gap = text.slice(options.locEnd(comment), gapEndPos);
+
+ if (/^[\s(]*$/.test(gap)) {
+ gapEndPos = options.locStart(comment);
+ } else {
+ // The gap string contained something other than whitespace or open
+ // parentheses.
+ break;
+ }
+ }
+
+ tiesToBreak.forEach(function (comment, i) {
+ if (i < indexOfFirstLeadingComment) {
+ addTrailingComment$1(precedingNode, comment);
+ } else {
+ addLeadingComment$1(followingNode, comment);
+ }
+ });
+ tiesToBreak.length = 0;
+ }
+
+ function printComment(commentPath, options) {
+ var comment = commentPath.getValue();
+ comment.printed = true;
+ return options.printer.printComment(commentPath, options);
+ }
+
+ function findExpressionIndexForComment(quasis, comment, options) {
+ var startPos = options.locStart(comment) - 1;
+
+ for (var i = 1; i < quasis.length; ++i) {
+ if (startPos < getQuasiRange(quasis[i]).start) {
+ return i - 1;
+ }
+ } // We haven't found it, it probably means that some of the locations are off.
+ // Let's just return the first one.
+
+ /* istanbul ignore next */
+
+
+ return 0;
+ }
+
+ function getQuasiRange(expr) {
+ if (expr.start !== undefined) {
+ // Babel
+ return {
+ start: expr.start,
+ end: expr.end
+ };
+ } // Flow
+
+
+ return {
+ start: expr.range[0],
+ end: expr.range[1]
+ };
+ }
+
+ function printLeadingComment(commentPath, print, options) {
+ var comment = commentPath.getValue();
+ var contents = printComment(commentPath, options);
+
+ if (!contents) {
+ return "";
+ }
+
+ var isBlock = options.printer.isBlockComment && options.printer.isBlockComment(comment); // Leading block comments should see if they need to stay on the
+ // same line or not.
+
+ if (isBlock) {
+ return concat$2([contents, hasNewline$1(options.originalText, options.locEnd(comment)) ? hardline$1 : " "]);
+ }
+
+ return concat$2([contents, hardline$1]);
+ }
+
+ function printTrailingComment(commentPath, print, options) {
+ var comment = commentPath.getValue();
+ var contents = printComment(commentPath, options);
+
+ if (!contents) {
+ return "";
+ }
+
+ var isBlock = options.printer.isBlockComment && options.printer.isBlockComment(comment); // We don't want the line to break
+ // when the parentParentNode is a ClassDeclaration/-Expression
+ // And the parentNode is in the superClass property
+
+ var parentNode = commentPath.getNode(1);
+ var parentParentNode = commentPath.getNode(2);
+ var isParentSuperClass = parentParentNode && (parentParentNode.type === "ClassDeclaration" || parentParentNode.type === "ClassExpression") && parentParentNode.superClass === parentNode;
+
+ if (hasNewline$1(options.originalText, options.locStart(comment), {
+ backwards: true
+ })) {
+ // This allows comments at the end of nested structures:
+ // {
+ // x: 1,
+ // y: 2
+ // // A comment
+ // }
+ // Those kinds of comments are almost always leading comments, but
+ // here it doesn't go "outside" the block and turns it into a
+ // trailing comment for `2`. We can simulate the above by checking
+ // if this a comment on its own line; normal trailing comments are
+ // always at the end of another expression.
+ var isLineBeforeEmpty = isPreviousLineEmpty$2(options.originalText, comment, options.locStart);
+ return lineSuffix$1(concat$2([hardline$1, isLineBeforeEmpty ? hardline$1 : "", contents]));
+ } else if (isBlock || isParentSuperClass) {
+ // Trailing block comments never need a newline
+ return concat$2([" ", contents]);
+ }
+
+ return concat$2([lineSuffix$1(concat$2([" ", contents])), !isBlock ? breakParent$1 : ""]);
+ }
+
+ function printDanglingComments(path, options, sameIndent, filter) {
+ var parts = [];
+ var node = path.getValue();
+
+ if (!node || !node.comments) {
+ return "";
+ }
+
+ path.each(function (commentPath) {
+ var comment = commentPath.getValue();
+
+ if (comment && !comment.leading && !comment.trailing && (!filter || filter(comment))) {
+ parts.push(printComment(commentPath, options));
+ }
+ }, "comments");
+
+ if (parts.length === 0) {
+ return "";
+ }
+
+ if (sameIndent) {
+ return join$1(hardline$1, parts);
+ }
+
+ return indent$1(concat$2([hardline$1, join$1(hardline$1, parts)]));
+ }
+
+ function prependCursorPlaceholder(path, options, printed) {
+ if (path.getNode() === options.cursorNode && path.getValue()) {
+ return concat$2([cursor$2, printed, cursor$2]);
+ }
+
+ return printed;
+ }
+
+ function printComments(path, print, options, needsSemi) {
+ var value = path.getValue();
+ var printed = print(path);
+ var comments = value && value.comments;
+
+ if (!comments || comments.length === 0) {
+ return prependCursorPlaceholder(path, options, printed);
+ }
+
+ var leadingParts = [];
+ var trailingParts = [needsSemi ? ";" : "", printed];
+ path.each(function (commentPath) {
+ var comment = commentPath.getValue();
+ var leading = comment.leading,
+ trailing = comment.trailing;
+
+ if (leading) {
+ var contents = printLeadingComment(commentPath, print, options);
+
+ if (!contents) {
+ return;
+ }
+
+ leadingParts.push(contents);
+ var text = options.originalText;
+ var index = skipNewline$1(text, options.locEnd(comment));
+
+ if (index !== false && hasNewline$1(text, index)) {
+ leadingParts.push(hardline$1);
+ }
+ } else if (trailing) {
+ trailingParts.push(printTrailingComment(commentPath, print, options));
+ }
+ }, "comments");
+ return prependCursorPlaceholder(path, options, concat$2(leadingParts.concat(trailingParts)));
+ }
+
+ var comments = {
+ attach: attach,
+ printComments: printComments,
+ printDanglingComments: printDanglingComments,
+ getSortedChildNodes: getSortedChildNodes
+ };
+
+ function FastPath(value) {
+ assert.ok(this instanceof FastPath);
+ this.stack = [value];
+ } // The name of the current property is always the penultimate element of
+ // this.stack, and always a String.
+
+
+ FastPath.prototype.getName = function getName() {
+ var s = this.stack;
+ var len = s.length;
+
+ if (len > 1) {
+ return s[len - 2];
+ } // Since the name is always a string, null is a safe sentinel value to
+ // return if we do not know the name of the (root) value.
+
+ /* istanbul ignore next */
+
+
+ return null;
+ }; // The value of the current property is always the final element of
+ // this.stack.
+
+
+ FastPath.prototype.getValue = function getValue() {
+ var s = this.stack;
+ return s[s.length - 1];
+ };
+
+ function getNodeHelper(path, count) {
+ var stackIndex = getNodeStackIndexHelper(path.stack, count);
+ return stackIndex === -1 ? null : path.stack[stackIndex];
+ }
+
+ function getNodeStackIndexHelper(stack, count) {
+ for (var i = stack.length - 1; i >= 0; i -= 2) {
+ var value = stack[i];
+
+ if (value && !Array.isArray(value) && --count < 0) {
+ return i;
+ }
+ }
+
+ return -1;
+ }
+
+ FastPath.prototype.getNode = function getNode(count) {
+ return getNodeHelper(this, ~~count);
+ };
+
+ FastPath.prototype.getParentNode = function getParentNode(count) {
+ return getNodeHelper(this, ~~count + 1);
+ }; // Temporarily push properties named by string arguments given after the
+ // callback function onto this.stack, then call the callback with a
+ // reference to this (modified) FastPath object. Note that the stack will
+ // be restored to its original state after the callback is finished, so it
+ // is probably a mistake to retain a reference to the path.
+
+
+ FastPath.prototype.call = function call(callback
+ /*, name1, name2, ... */
+ ) {
+ var s = this.stack;
+ var origLen = s.length;
+ var value = s[origLen - 1];
+ var argc = arguments.length;
+
+ for (var i = 1; i < argc; ++i) {
+ var name = arguments[i];
+ value = value[name];
+ s.push(name, value);
+ }
+
+ var result = callback(this);
+ s.length = origLen;
+ return result;
+ };
+
+ FastPath.prototype.callParent = function callParent(callback, count) {
+ var stackIndex = getNodeStackIndexHelper(this.stack, ~~count + 1);
+ var parentValues = this.stack.splice(stackIndex + 1);
+ var result = callback(this);
+ Array.prototype.push.apply(this.stack, parentValues);
+ return result;
+ }; // Similar to FastPath.prototype.call, except that the value obtained by
+ // accessing this.getValue()[name1][name2]... should be array-like. The
+ // callback will be called with a reference to this path object for each
+ // element of the array.
+
+
+ FastPath.prototype.each = function each(callback
+ /*, name1, name2, ... */
+ ) {
+ var s = this.stack;
+ var origLen = s.length;
+ var value = s[origLen - 1];
+ var argc = arguments.length;
+
+ for (var i = 1; i < argc; ++i) {
+ var name = arguments[i];
+ value = value[name];
+ s.push(name, value);
+ }
+
+ for (var _i = 0; _i < value.length; ++_i) {
+ if (_i in value) {
+ s.push(_i, value[_i]); // If the callback needs to know the value of i, call
+ // path.getName(), assuming path is the parameter name.
+
+ callback(this);
+ s.length -= 2;
+ }
+ }
+
+ s.length = origLen;
+ }; // Similar to FastPath.prototype.each, except that the results of the
+ // callback function invocations are stored in an array and returned at
+ // the end of the iteration.
+
+
+ FastPath.prototype.map = function map(callback
+ /*, name1, name2, ... */
+ ) {
+ var s = this.stack;
+ var origLen = s.length;
+ var value = s[origLen - 1];
+ var argc = arguments.length;
+
+ for (var i = 1; i < argc; ++i) {
+ var name = arguments[i];
+ value = value[name];
+ s.push(name, value);
+ }
+
+ var result = new Array(value.length);
+
+ for (var _i2 = 0; _i2 < value.length; ++_i2) {
+ if (_i2 in value) {
+ s.push(_i2, value[_i2]);
+ result[_i2] = callback(this, _i2);
+ s.length -= 2;
+ }
+ }
+
+ s.length = origLen;
+ return result;
+ };
+
+ var fastPath = FastPath;
+
+ var normalize$2 = options$1.normalize;
+
+ function printSubtree(path, print, options, printAstToDoc) {
+ if (options.printer.embed) {
+ return options.printer.embed(path, print, function (text, partialNextOptions) {
+ return textToDoc(text, partialNextOptions, options, printAstToDoc);
+ }, options);
+ }
+ }
+
+ function textToDoc(text, partialNextOptions, parentOptions, printAstToDoc) {
+ var nextOptions = normalize$2(Object.assign({}, parentOptions, partialNextOptions, {
+ parentParser: parentOptions.parser,
+ embeddedInHtml: !!(parentOptions.embeddedInHtml || parentOptions.parser === "html" || parentOptions.parser === "vue" || parentOptions.parser === "angular" || parentOptions.parser === "lwc"),
+ originalText: text
+ }), {
+ passThrough: true
+ });
+ var result = parser.parse(text, nextOptions);
+ var ast = result.ast;
+ text = result.text;
+ var astComments = ast.comments;
+ delete ast.comments;
+ comments.attach(astComments, ast, text, nextOptions);
+ return printAstToDoc(ast, nextOptions);
+ }
+
+ var multiparser = {
+ printSubtree: printSubtree
+ };
+
+ var doc$1 = doc;
+ var docBuilders$1 = doc$1.builders;
+ var concat$3 = docBuilders$1.concat;
+ var hardline$2 = docBuilders$1.hardline;
+ var addAlignmentToDoc$1 = docBuilders$1.addAlignmentToDoc;
+ var docUtils$1 = doc$1.utils;
+ /**
+ * Takes an abstract syntax tree (AST) and recursively converts it to a
+ * document (series of printing primitives).
+ *
+ * This is done by descending down the AST recursively. The recursion
+ * involves two functions that call each other:
+ *
+ * 1. printGenerically(), which is defined as an inner function here.
+ * It basically takes care of node caching.
+ * 2. callPluginPrintFunction(), which checks for some options, and
+ * ultimately calls the print() function provided by the plugin.
+ *
+ * The plugin function will call printGenerically() again for child nodes
+ * of the current node, which will do its housekeeping, then call the
+ * plugin function again, and so on.
+ *
+ * All the while, these functions pass a "path" variable around, which
+ * is a stack-like data structure (FastPath) that maintains the current
+ * state of the recursion. It is called "path", because it represents
+ * the path to the current node through the Abstract Syntax Tree.
+ */
+
+ function printAstToDoc(ast, options) {
+ var alignmentSize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
+ var printer = options.printer;
+
+ if (printer.preprocess) {
+ ast = printer.preprocess(ast, options);
+ }
+
+ var cache = new Map();
+
+ function printGenerically(path, args) {
+ var node = path.getValue();
+ var shouldCache = node && _typeof(node) === "object" && args === undefined;
+
+ if (shouldCache && cache.has(node)) {
+ return cache.get(node);
+ } // We let JSXElement print its comments itself because it adds () around
+ // UnionTypeAnnotation has to align the child without the comments
+
+
+ var res;
+
+ if (printer.willPrintOwnComments && printer.willPrintOwnComments(path, options)) {
+ res = callPluginPrintFunction(path, options, printGenerically, args);
+ } else {
+ // printComments will call the plugin print function and check for
+ // comments to print
+ res = comments.printComments(path, function (p) {
+ return callPluginPrintFunction(p, options, printGenerically, args);
+ }, options, args && args.needsSemi);
+ }
+
+ if (shouldCache) {
+ cache.set(node, res);
+ }
+
+ return res;
+ }
+
+ var doc = printGenerically(new fastPath(ast));
+
+ if (alignmentSize > 0) {
+ // Add a hardline to make the indents take effect
+ // It should be removed in index.js format()
+ doc = addAlignmentToDoc$1(concat$3([hardline$2, doc]), alignmentSize, options.tabWidth);
+ }
+
+ docUtils$1.propagateBreaks(doc);
+ return doc;
+ }
+
+ function callPluginPrintFunction(path, options, printPath, args) {
+ assert.ok(path instanceof fastPath);
+ var node = path.getValue();
+ var printer = options.printer; // Escape hatch
+
+ if (printer.hasPrettierIgnore && printer.hasPrettierIgnore(path)) {
+ return options.originalText.slice(options.locStart(node), options.locEnd(node));
+ }
+
+ if (node) {
+ try {
+ // Potentially switch to a different parser
+ var sub = multiparser.printSubtree(path, printPath, options, printAstToDoc);
+
+ if (sub) {
+ return sub;
+ }
+ } catch (error) {
+ /* istanbul ignore if */
+ if (commonjsGlobal.PRETTIER_DEBUG) {
+ throw error;
+ } // Continue with current parser
+
+ }
+ }
+
+ return printer.print(path, options, printPath, args);
+ }
+
+ var astToDoc = printAstToDoc;
+
+ function findSiblingAncestors(startNodeAndParents, endNodeAndParents, opts) {
+ var resultStartNode = startNodeAndParents.node;
+ var resultEndNode = endNodeAndParents.node;
+
+ if (resultStartNode === resultEndNode) {
+ return {
+ startNode: resultStartNode,
+ endNode: resultEndNode
+ };
+ }
+
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = endNodeAndParents.parentNodes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var endParent = _step.value;
+
+ if (endParent.type !== "Program" && endParent.type !== "File" && opts.locStart(endParent) >= opts.locStart(startNodeAndParents.node)) {
+ resultEndNode = endParent;
+ } else {
+ break;
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = startNodeAndParents.parentNodes[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var startParent = _step2.value;
+
+ if (startParent.type !== "Program" && startParent.type !== "File" && opts.locEnd(startParent) <= opts.locEnd(endNodeAndParents.node)) {
+ resultStartNode = startParent;
+ } else {
+ break;
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return {
+ startNode: resultStartNode,
+ endNode: resultEndNode
+ };
+ }
+
+ function findNodeAtOffset(node, offset, options, predicate, parentNodes) {
+ predicate = predicate || function () {
+ return true;
+ };
+
+ parentNodes = parentNodes || [];
+ var start = options.locStart(node, options.locStart);
+ var end = options.locEnd(node, options.locEnd);
+
+ if (start <= offset && offset <= end) {
+ var _iteratorNormalCompletion3 = true;
+ var _didIteratorError3 = false;
+ var _iteratorError3 = undefined;
+
+ try {
+ for (var _iterator3 = comments.getSortedChildNodes(node, options)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
+ var childNode = _step3.value;
+ var childResult = findNodeAtOffset(childNode, offset, options, predicate, [node].concat(parentNodes));
+
+ if (childResult) {
+ return childResult;
+ }
+ }
+ } catch (err) {
+ _didIteratorError3 = true;
+ _iteratorError3 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
+ _iterator3.return();
+ }
+ } finally {
+ if (_didIteratorError3) {
+ throw _iteratorError3;
+ }
+ }
+ }
+
+ if (predicate(node)) {
+ return {
+ node: node,
+ parentNodes: parentNodes
+ };
+ }
+ }
+ } // See https://www.ecma-international.org/ecma-262/5.1/#sec-A.5
+
+
+ function isSourceElement(opts, node) {
+ if (node == null) {
+ return false;
+ } // JS and JS like to avoid repetitions
+
+
+ var jsSourceElements = ["FunctionDeclaration", "BlockStatement", "BreakStatement", "ContinueStatement", "DebuggerStatement", "DoWhileStatement", "EmptyStatement", "ExpressionStatement", "ForInStatement", "ForStatement", "IfStatement", "LabeledStatement", "ReturnStatement", "SwitchStatement", "ThrowStatement", "TryStatement", "VariableDeclaration", "WhileStatement", "WithStatement", "ClassDeclaration", // ES 2015
+ "ImportDeclaration", // Module
+ "ExportDefaultDeclaration", // Module
+ "ExportNamedDeclaration", // Module
+ "ExportAllDeclaration", // Module
+ "TypeAlias", // Flow
+ "InterfaceDeclaration", // Flow, TypeScript
+ "TypeAliasDeclaration", // TypeScript
+ "ExportAssignment", // TypeScript
+ "ExportDeclaration" // TypeScript
+ ];
+ var jsonSourceElements = ["ObjectExpression", "ArrayExpression", "StringLiteral", "NumericLiteral", "BooleanLiteral", "NullLiteral"];
+ var graphqlSourceElements = ["OperationDefinition", "FragmentDefinition", "VariableDefinition", "TypeExtensionDefinition", "ObjectTypeDefinition", "FieldDefinition", "DirectiveDefinition", "EnumTypeDefinition", "EnumValueDefinition", "InputValueDefinition", "InputObjectTypeDefinition", "SchemaDefinition", "OperationTypeDefinition", "InterfaceTypeDefinition", "UnionTypeDefinition", "ScalarTypeDefinition"];
+
+ switch (opts.parser) {
+ case "flow":
+ case "babel":
+ case "typescript":
+ return jsSourceElements.indexOf(node.type) > -1;
+
+ case "json":
+ return jsonSourceElements.indexOf(node.type) > -1;
+
+ case "graphql":
+ return graphqlSourceElements.indexOf(node.kind) > -1;
+
+ case "vue":
+ return node.tag !== "root";
+ }
+
+ return false;
+ }
+
+ function calculateRange(text, opts, ast) {
+ // Contract the range so that it has non-whitespace characters at its endpoints.
+ // This ensures we can format a range that doesn't end on a node.
+ var rangeStringOrig = text.slice(opts.rangeStart, opts.rangeEnd);
+ var startNonWhitespace = Math.max(opts.rangeStart + rangeStringOrig.search(/\S/), opts.rangeStart);
+ var endNonWhitespace;
+
+ for (endNonWhitespace = opts.rangeEnd; endNonWhitespace > opts.rangeStart; --endNonWhitespace) {
+ if (text[endNonWhitespace - 1].match(/\S/)) {
+ break;
+ }
+ }
+
+ var startNodeAndParents = findNodeAtOffset(ast, startNonWhitespace, opts, function (node) {
+ return isSourceElement(opts, node);
+ });
+ var endNodeAndParents = findNodeAtOffset(ast, endNonWhitespace, opts, function (node) {
+ return isSourceElement(opts, node);
+ });
+
+ if (!startNodeAndParents || !endNodeAndParents) {
+ return {
+ rangeStart: 0,
+ rangeEnd: 0
+ };
+ }
+
+ var siblingAncestors = findSiblingAncestors(startNodeAndParents, endNodeAndParents, opts);
+ var startNode = siblingAncestors.startNode,
+ endNode = siblingAncestors.endNode;
+ var rangeStart = Math.min(opts.locStart(startNode, opts.locStart), opts.locStart(endNode, opts.locStart));
+ var rangeEnd = Math.max(opts.locEnd(startNode, opts.locEnd), opts.locEnd(endNode, opts.locEnd));
+ return {
+ rangeStart: rangeStart,
+ rangeEnd: rangeEnd
+ };
+ }
+
+ var rangeUtil = {
+ calculateRange: calculateRange,
+ findNodeAtOffset: findNodeAtOffset
+ };
+
+ var diff = getCjsExportFromNamespace(index_es6);
+
+ var normalizeOptions$1 = options$1.normalize;
+ var guessEndOfLine$1 = endOfLine.guessEndOfLine,
+ convertEndOfLineToChars$2 = endOfLine.convertEndOfLineToChars;
+ var mapDoc$2 = doc.utils.mapDoc,
+ _printDocToString = doc.printer.printDocToString,
+ printDocToDebug = doc.debug.printDocToDebug;
+ var UTF8BOM = 0xfeff;
+ var CURSOR = Symbol("cursor");
+ var PLACEHOLDERS = {
+ cursorOffset: "<<<PRETTIER_CURSOR>>>",
+ rangeStart: "<<<PRETTIER_RANGE_START>>>",
+ rangeEnd: "<<<PRETTIER_RANGE_END>>>"
+ };
+
+ function ensureAllCommentsPrinted(astComments) {
+ if (!astComments) {
+ return;
+ }
+
+ for (var i = 0; i < astComments.length; ++i) {
+ if (astComments[i].value.trim() === "prettier-ignore") {
+ // If there's a prettier-ignore, we're not printing that sub-tree so we
+ // don't know if the comments was printed or not.
+ return;
+ }
+ }
+
+ astComments.forEach(function (comment) {
+ if (!comment.printed) {
+ throw new Error('Comment "' + comment.value.trim() + '" was not printed. Please report this error!');
+ }
+
+ delete comment.printed;
+ });
+ }
+
+ function attachComments(text, ast, opts) {
+ var astComments = ast.comments;
+
+ if (astComments) {
+ delete ast.comments;
+ comments.attach(astComments, ast, text, opts);
+ }
+
+ ast.tokens = [];
+ opts.originalText = opts.parser === "yaml" ? text : text.trimRight();
+ return astComments;
+ }
+
+ function coreFormat(text, opts, addAlignmentSize) {
+ if (!text || !text.trim().length) {
+ return {
+ formatted: "",
+ cursorOffset: 0
+ };
+ }
+
+ addAlignmentSize = addAlignmentSize || 0;
+ var parsed = parser.parse(text, opts);
+ var ast = parsed.ast;
+ text = parsed.text;
+
+ if (opts.cursorOffset >= 0) {
+ var nodeResult = rangeUtil.findNodeAtOffset(ast, opts.cursorOffset, opts);
+
+ if (nodeResult && nodeResult.node) {
+ opts.cursorNode = nodeResult.node;
+ }
+ }
+
+ var astComments = attachComments(text, ast, opts);
+ var doc = astToDoc(ast, opts, addAlignmentSize);
+ var eol = convertEndOfLineToChars$2(opts.endOfLine);
+
+ var result = _printDocToString(opts.endOfLine === "lf" ? doc : mapDoc$2(doc, function (currentDoc) {
+ return typeof currentDoc === "string" && currentDoc.indexOf("\n") !== -1 ? currentDoc.replace(/\n/g, eol) : currentDoc;
+ }), opts);
+
+ ensureAllCommentsPrinted(astComments); // Remove extra leading indentation as well as the added indentation after last newline
+
+ if (addAlignmentSize > 0) {
+ var trimmed = result.formatted.trim();
+
+ if (result.cursorNodeStart !== undefined) {
+ result.cursorNodeStart -= result.formatted.indexOf(trimmed);
+ }
+
+ result.formatted = trimmed + convertEndOfLineToChars$2(opts.endOfLine);
+ }
+
+ if (opts.cursorOffset >= 0) {
+ var oldCursorNodeStart;
+ var oldCursorNodeText;
+ var cursorOffsetRelativeToOldCursorNode;
+ var newCursorNodeStart;
+ var newCursorNodeText;
+
+ if (opts.cursorNode && result.cursorNodeText) {
+ oldCursorNodeStart = opts.locStart(opts.cursorNode);
+ oldCursorNodeText = text.slice(oldCursorNodeStart, opts.locEnd(opts.cursorNode));
+ cursorOffsetRelativeToOldCursorNode = opts.cursorOffset - oldCursorNodeStart;
+ newCursorNodeStart = result.cursorNodeStart;
+ newCursorNodeText = result.cursorNodeText;
+ } else {
+ oldCursorNodeStart = 0;
+ oldCursorNodeText = text;
+ cursorOffsetRelativeToOldCursorNode = opts.cursorOffset;
+ newCursorNodeStart = 0;
+ newCursorNodeText = result.formatted;
+ }
+
+ if (oldCursorNodeText === newCursorNodeText) {
+ return {
+ formatted: result.formatted,
+ cursorOffset: newCursorNodeStart + cursorOffsetRelativeToOldCursorNode
+ };
+ } // diff old and new cursor node texts, with a special cursor
+ // symbol inserted to find out where it moves to
+
+
+ var oldCursorNodeCharArray = oldCursorNodeText.split("");
+ oldCursorNodeCharArray.splice(cursorOffsetRelativeToOldCursorNode, 0, CURSOR);
+ var newCursorNodeCharArray = newCursorNodeText.split("");
+ var cursorNodeDiff = diff.diffArrays(oldCursorNodeCharArray, newCursorNodeCharArray);
+ var cursorOffset = newCursorNodeStart;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = cursorNodeDiff[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var entry = _step.value;
+
+ if (entry.removed) {
+ if (entry.value.indexOf(CURSOR) > -1) {
+ break;
+ }
+ } else {
+ cursorOffset += entry.count;
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return {
+ formatted: result.formatted,
+ cursorOffset: cursorOffset
+ };
+ }
+
+ return {
+ formatted: result.formatted
+ };
+ }
+
+ function formatRange(text, opts) {
+ var parsed = parser.parse(text, opts);
+ var ast = parsed.ast;
+ text = parsed.text;
+ var range = rangeUtil.calculateRange(text, opts, ast);
+ var rangeStart = range.rangeStart;
+ var rangeEnd = range.rangeEnd;
+ var rangeString = text.slice(rangeStart, rangeEnd); // Try to extend the range backwards to the beginning of the line.
+ // This is so we can detect indentation correctly and restore it.
+ // Use `Math.min` since `lastIndexOf` returns 0 when `rangeStart` is 0
+
+ var rangeStart2 = Math.min(rangeStart, text.lastIndexOf("\n", rangeStart) + 1);
+ var indentString = text.slice(rangeStart2, rangeStart);
+ var alignmentSize = util.getAlignmentSize(indentString, opts.tabWidth);
+ var rangeResult = coreFormat(rangeString, Object.assign({}, opts, {
+ rangeStart: 0,
+ rangeEnd: Infinity,
+ // track the cursor offset only if it's within our range
+ cursorOffset: opts.cursorOffset >= rangeStart && opts.cursorOffset < rangeEnd ? opts.cursorOffset - rangeStart : -1
+ }), alignmentSize); // Since the range contracts to avoid trailing whitespace,
+ // we need to remove the newline that was inserted by the `format` call.
+
+ var rangeTrimmed = rangeResult.formatted.trimRight();
+ var rangeLeft = text.slice(0, rangeStart);
+ var rangeRight = text.slice(rangeEnd);
+ var cursorOffset = opts.cursorOffset;
+
+ if (opts.cursorOffset >= rangeEnd) {
+ // handle the case where the cursor was past the end of the range
+ cursorOffset = opts.cursorOffset - rangeEnd + (rangeStart + rangeTrimmed.length);
+ } else if (rangeResult.cursorOffset !== undefined) {
+ // handle the case where the cursor was in the range
+ cursorOffset = rangeResult.cursorOffset + rangeStart;
+ } // keep the cursor as it was if it was before the start of the range
+
+
+ var formatted;
+
+ if (opts.endOfLine === "lf") {
+ formatted = rangeLeft + rangeTrimmed + rangeRight;
+ } else {
+ var eol = convertEndOfLineToChars$2(opts.endOfLine);
+
+ if (cursorOffset >= 0) {
+ var parts = [rangeLeft, rangeTrimmed, rangeRight];
+ var partIndex = 0;
+ var partOffset = cursorOffset;
+
+ while (partIndex < parts.length) {
+ var part = parts[partIndex];
+
+ if (partOffset < part.length) {
+ parts[partIndex] = parts[partIndex].slice(0, partOffset) + PLACEHOLDERS.cursorOffset + parts[partIndex].slice(partOffset);
+ break;
+ }
+
+ partIndex++;
+ partOffset -= part.length;
+ }
+
+ var newRangeLeft = parts[0],
+ newRangeTrimmed = parts[1],
+ newRangeRight = parts[2];
+ formatted = (newRangeLeft.replace(/\n/g, eol) + newRangeTrimmed + newRangeRight.replace(/\n/g, eol)).replace(PLACEHOLDERS.cursorOffset, function (_, index) {
+ cursorOffset = index;
+ return "";
+ });
+ } else {
+ formatted = rangeLeft.replace(/\n/g, eol) + rangeTrimmed + rangeRight.replace(/\n/g, eol);
+ }
+ }
+
+ return {
+ formatted: formatted,
+ cursorOffset: cursorOffset
+ };
+ }
+
+ function format(text, opts) {
+ var selectedParser = parser.resolveParser(opts);
+ var hasPragma = !selectedParser.hasPragma || selectedParser.hasPragma(text);
+
+ if (opts.requirePragma && !hasPragma) {
+ return {
+ formatted: text
+ };
+ }
+
+ if (opts.endOfLine === "auto") {
+ opts.endOfLine = guessEndOfLine$1(text);
+ }
+
+ var hasCursor = opts.cursorOffset >= 0;
+ var hasRangeStart = opts.rangeStart > 0;
+ var hasRangeEnd = opts.rangeEnd < text.length; // get rid of CR/CRLF parsing
+
+ if (text.indexOf("\r") !== -1) {
+ var offsetKeys = [hasCursor && "cursorOffset", hasRangeStart && "rangeStart", hasRangeEnd && "rangeEnd"].filter(Boolean).sort(function (aKey, bKey) {
+ return opts[aKey] - opts[bKey];
+ });
+
+ for (var i = offsetKeys.length - 1; i >= 0; i--) {
+ var key = offsetKeys[i];
+ text = text.slice(0, opts[key]) + PLACEHOLDERS[key] + text.slice(opts[key]);
+ }
+
+ text = text.replace(/\r\n?/g, "\n");
+
+ var _loop = function _loop(_i) {
+ var key = offsetKeys[_i];
+ text = text.replace(PLACEHOLDERS[key], function (_, index) {
+ opts[key] = index;
+ return "";
+ });
+ };
+
+ for (var _i = 0; _i < offsetKeys.length; _i++) {
+ _loop(_i);
+ }
+ }
+
+ var hasUnicodeBOM = text.charCodeAt(0) === UTF8BOM;
+
+ if (hasUnicodeBOM) {
+ text = text.substring(1);
+
+ if (hasCursor) {
+ opts.cursorOffset++;
+ }
+
+ if (hasRangeStart) {
+ opts.rangeStart++;
+ }
+
+ if (hasRangeEnd) {
+ opts.rangeEnd++;
+ }
+ }
+
+ if (!hasCursor) {
+ opts.cursorOffset = -1;
+ }
+
+ if (opts.rangeStart < 0) {
+ opts.rangeStart = 0;
+ }
+
+ if (opts.rangeEnd > text.length) {
+ opts.rangeEnd = text.length;
+ }
+
+ var result = hasRangeStart || hasRangeEnd ? formatRange(text, opts) : coreFormat(opts.insertPragma && opts.printer.insertPragma && !hasPragma ? opts.printer.insertPragma(text) : text, opts);
+
+ if (hasUnicodeBOM) {
+ result.formatted = String.fromCharCode(UTF8BOM) + result.formatted;
+
+ if (hasCursor) {
+ result.cursorOffset++;
+ }
+ }
+
+ return result;
+ }
+
+ var core = {
+ formatWithCursor: function formatWithCursor(text, opts) {
+ opts = normalizeOptions$1(opts);
+ return format(text, opts);
+ },
+ parse: function parse(text, opts, massage) {
+ opts = normalizeOptions$1(opts);
+
+ if (text.indexOf("\r") !== -1) {
+ text = text.replace(/\r\n?/g, "\n");
+ }
+
+ var parsed = parser.parse(text, opts);
+
+ if (massage) {
+ parsed.ast = massageAst(parsed.ast, opts);
+ }
+
+ return parsed;
+ },
+ formatAST: function formatAST(ast, opts) {
+ opts = normalizeOptions$1(opts);
+ var doc = astToDoc(ast, opts);
+ return _printDocToString(doc, opts);
+ },
+ // Doesn't handle shebang for now
+ formatDoc: function formatDoc(doc, opts) {
+ var debug = printDocToDebug(doc);
+ opts = normalizeOptions$1(Object.assign({}, opts, {
+ parser: "babel"
+ }));
+ return format(debug, opts).formatted;
+ },
+ printToDoc: function printToDoc(text, opts) {
+ opts = normalizeOptions$1(opts);
+ var parsed = parser.parse(text, opts);
+ var ast = parsed.ast;
+ text = parsed.text;
+ attachComments(text, ast, opts);
+ return astToDoc(ast, opts);
+ },
+ printDocToString: function printDocToString(doc, opts) {
+ return _printDocToString(doc, normalizeOptions$1(opts));
+ }
+ };
+
+ var index = [
+ "a",
+ "abbr",
+ "acronym",
+ "address",
+ "applet",
+ "area",
+ "article",
+ "aside",
+ "audio",
+ "b",
+ "base",
+ "basefont",
+ "bdi",
+ "bdo",
+ "bgsound",
+ "big",
+ "blink",
+ "blockquote",
+ "body",
+ "br",
+ "button",
+ "canvas",
+ "caption",
+ "center",
+ "cite",
+ "code",
+ "col",
+ "colgroup",
+ "command",
+ "content",
+ "data",
+ "datalist",
+ "dd",
+ "del",
+ "details",
+ "dfn",
+ "dialog",
+ "dir",
+ "div",
+ "dl",
+ "dt",
+ "element",
+ "em",
+ "embed",
+ "fieldset",
+ "figcaption",
+ "figure",
+ "font",
+ "footer",
+ "form",
+ "frame",
+ "frameset",
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "h6",
+ "head",
+ "header",
+ "hgroup",
+ "hr",
+ "html",
+ "i",
+ "iframe",
+ "image",
+ "img",
+ "input",
+ "ins",
+ "isindex",
+ "kbd",
+ "keygen",
+ "label",
+ "legend",
+ "li",
+ "link",
+ "listing",
+ "main",
+ "map",
+ "mark",
+ "marquee",
+ "math",
+ "menu",
+ "menuitem",
+ "meta",
+ "meter",
+ "multicol",
+ "nav",
+ "nextid",
+ "nobr",
+ "noembed",
+ "noframes",
+ "noscript",
+ "object",
+ "ol",
+ "optgroup",
+ "option",
+ "output",
+ "p",
+ "param",
+ "picture",
+ "plaintext",
+ "pre",
+ "progress",
+ "q",
+ "rb",
+ "rbc",
+ "rp",
+ "rt",
+ "rtc",
+ "ruby",
+ "s",
+ "samp",
+ "script",
+ "section",
+ "select",
+ "shadow",
+ "slot",
+ "small",
+ "source",
+ "spacer",
+ "span",
+ "strike",
+ "strong",
+ "style",
+ "sub",
+ "summary",
+ "sup",
+ "svg",
+ "table",
+ "tbody",
+ "td",
+ "template",
+ "textarea",
+ "tfoot",
+ "th",
+ "thead",
+ "time",
+ "title",
+ "tr",
+ "track",
+ "tt",
+ "u",
+ "ul",
+ "var",
+ "video",
+ "wbr",
+ "xmp"
+ ];
+
+ var htmlTagNames = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ 'default': index
+ });
+
+ var htmlTagNames$1 = getCjsExportFromNamespace(htmlTagNames);
+
+ function clean(ast, newObj, parent) {
+ ["raw", // front-matter
+ "raws", "sourceIndex", "source", "before", "after", "trailingComma"].forEach(function (name) {
+ delete newObj[name];
+ });
+
+ if (ast.type === "yaml") {
+ delete newObj.value;
+ } // --insert-pragma
+
+
+ if (ast.type === "css-comment" && parent.type === "css-root" && parent.nodes.length !== 0 && ( // first non-front-matter comment
+ parent.nodes[0] === ast || (parent.nodes[0].type === "yaml" || parent.nodes[0].type === "toml") && parent.nodes[1] === ast)) {
+ /**
+ * something
+ *
+ * @format
+ */
+ delete newObj.text; // standalone pragma
+
+ if (/^\*\s*@(format|prettier)\s*$/.test(ast.text)) {
+ return null;
+ }
+ }
+
+ if (ast.type === "media-query" || ast.type === "media-query-list" || ast.type === "media-feature-expression") {
+ delete newObj.value;
+ }
+
+ if (ast.type === "css-rule") {
+ delete newObj.params;
+ }
+
+ if (ast.type === "selector-combinator") {
+ newObj.value = newObj.value.replace(/\s+/g, " ");
+ }
+
+ if (ast.type === "media-feature") {
+ newObj.value = newObj.value.replace(/ /g, "");
+ }
+
+ if (ast.type === "value-word" && (ast.isColor && ast.isHex || ["initial", "inherit", "unset", "revert"].indexOf(newObj.value.replace().toLowerCase()) !== -1) || ast.type === "media-feature" || ast.type === "selector-root-invalid" || ast.type === "selector-pseudo") {
+ newObj.value = newObj.value.toLowerCase();
+ }
+
+ if (ast.type === "css-decl") {
+ newObj.prop = newObj.prop.toLowerCase();
+ }
+
+ if (ast.type === "css-atrule" || ast.type === "css-import") {
+ newObj.name = newObj.name.toLowerCase();
+ }
+
+ if (ast.type === "value-number") {
+ newObj.unit = newObj.unit.toLowerCase();
+ }
+
+ if ((ast.type === "media-feature" || ast.type === "media-keyword" || ast.type === "media-type" || ast.type === "media-unknown" || ast.type === "media-url" || ast.type === "media-value" || ast.type === "selector-attribute" || ast.type === "selector-string" || ast.type === "selector-class" || ast.type === "selector-combinator" || ast.type === "value-string") && newObj.value) {
+ newObj.value = cleanCSSStrings(newObj.value);
+ }
+
+ if (ast.type === "selector-attribute") {
+ newObj.attribute = newObj.attribute.trim();
+
+ if (newObj.namespace) {
+ if (typeof newObj.namespace === "string") {
+ newObj.namespace = newObj.namespace.trim();
+
+ if (newObj.namespace.length === 0) {
+ newObj.namespace = true;
+ }
+ }
+ }
+
+ if (newObj.value) {
+ newObj.value = newObj.value.trim().replace(/^['"]|['"]$/g, "");
+ delete newObj.quoted;
+ }
+ }
+
+ if ((ast.type === "media-value" || ast.type === "media-type" || ast.type === "value-number" || ast.type === "selector-root-invalid" || ast.type === "selector-class" || ast.type === "selector-combinator" || ast.type === "selector-tag") && newObj.value) {
+ newObj.value = newObj.value.replace(/([\d.eE+-]+)([a-zA-Z]*)/g, function (match, numStr, unit) {
+ var num = Number(numStr);
+ return isNaN(num) ? match : num + unit.toLowerCase();
+ });
+ }
+
+ if (ast.type === "selector-tag") {
+ var lowercasedValue = ast.value.toLowerCase();
+
+ if (htmlTagNames$1.indexOf(lowercasedValue) !== -1) {
+ newObj.value = lowercasedValue;
+ }
+
+ if (["from", "to"].indexOf(lowercasedValue) !== -1) {
+ newObj.value = lowercasedValue;
+ }
+ } // Workaround when `postcss-values-parser` parse `not`, `and` or `or` keywords as `value-func`
+
+
+ if (ast.type === "css-atrule" && ast.name.toLowerCase() === "supports") {
+ delete newObj.value;
+ } // Workaround for SCSS nested properties
+
+
+ if (ast.type === "selector-unknown") {
+ delete newObj.value;
+ }
+ }
+
+ function cleanCSSStrings(value) {
+ return value.replace(/'/g, '"').replace(/\\([^a-fA-F\d])/g, "$1");
+ }
+
+ var clean_1 = clean;
+
+ var _require$$0$builders$1 = doc.builders,
+ hardline$3 = _require$$0$builders$1.hardline,
+ literalline$1 = _require$$0$builders$1.literalline,
+ concat$4 = _require$$0$builders$1.concat,
+ markAsRoot$1 = _require$$0$builders$1.markAsRoot,
+ mapDoc$3 = doc.utils.mapDoc;
+
+ function embed(path, print, textToDoc
+ /*, options */
+ ) {
+ var node = path.getValue();
+
+ if (node.type === "yaml") {
+ return markAsRoot$1(concat$4(["---", hardline$3, node.value.trim() ? replaceNewlinesWithLiterallines(textToDoc(node.value, {
+ parser: "yaml"
+ })) : "", "---", hardline$3]));
+ }
+
+ return null;
+
+ function replaceNewlinesWithLiterallines(doc) {
+ return mapDoc$3(doc, function (currentDoc) {
+ return typeof currentDoc === "string" && currentDoc.includes("\n") ? concat$4(currentDoc.split(/(\n)/g).map(function (v, i) {
+ return i % 2 === 0 ? v : literalline$1;
+ })) : currentDoc;
+ });
+ }
+ }
+
+ var embed_1 = embed;
+
+ var detectNewline = createCommonjsModule(function (module) {
+
+ module.exports = function (str) {
+ if (typeof str !== 'string') {
+ throw new TypeError('Expected a string');
+ }
+
+ var newlines = str.match(/(?:\r?\n)/g) || [];
+
+ if (newlines.length === 0) {
+ return null;
+ }
+
+ var crlf = newlines.filter(function (el) {
+ return el === '\r\n';
+ }).length;
+ var lf = newlines.length - crlf;
+ return crlf > lf ? '\r\n' : '\n';
+ };
+
+ module.exports.graceful = function (str) {
+ return module.exports(str) || '\n';
+ };
+ });
+ var detectNewline_1 = detectNewline.graceful;
+
+ var build = createCommonjsModule(function (module, exports) {
+
+ Object.defineProperty(exports, '__esModule', {
+ value: true
+ });
+ exports.extract = extract;
+ exports.strip = strip;
+ exports.parse = parse;
+ exports.parseWithComments = parseWithComments;
+ exports.print = print;
+
+ function _os() {
+ var data = require$$0$1;
+
+ _os = function _os() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _detectNewline() {
+ var data = _interopRequireDefault(detectNewline);
+
+ _detectNewline = function _detectNewline() {
+ return data;
+ };
+
+ return data;
+ }
+
+ function _interopRequireDefault(obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+ }
+ /**
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
+ *
+ * This source code is licensed under the MIT license found in the
+ * LICENSE file in the root directory of this source tree.
+ */
+
+
+ var commentEndRe = /\*\/$/;
+ var commentStartRe = /^\/\*\*/;
+ var docblockRe = /^\s*(\/\*\*?(.|\r?\n)*?\*\/)/;
+ var lineCommentRe = /(^|\s+)\/\/([^\r\n]*)/g;
+ var ltrimNewlineRe = /^(\r?\n)+/;
+ var multilineRe = /(?:^|\r?\n) *(@[^\r\n]*?) *\r?\n *(?![^@\r\n]*\/\/[^]*)([^@\r\n\s][^@\r\n]+?) *\r?\n/g;
+ var propertyRe = /(?:^|\r?\n) *@(\S+) *([^\r\n]*)/g;
+ var stringStartRe = /(\r?\n|^) *\* ?/g;
+
+ function extract(contents) {
+ var match = contents.match(docblockRe);
+ return match ? match[0].trimLeft() : '';
+ }
+
+ function strip(contents) {
+ var match = contents.match(docblockRe);
+ return match && match[0] ? contents.substring(match[0].length) : contents;
+ }
+
+ function parse(docblock) {
+ return parseWithComments(docblock).pragmas;
+ }
+
+ function parseWithComments(docblock) {
+ var line = (0, _detectNewline().default)(docblock) || _os().EOL;
+
+ docblock = docblock.replace(commentStartRe, '').replace(commentEndRe, '').replace(stringStartRe, '$1'); // Normalize multi-line directives
+
+ var prev = '';
+
+ while (prev !== docblock) {
+ prev = docblock;
+ docblock = docblock.replace(multilineRe, "".concat(line, "$1 $2").concat(line));
+ }
+
+ docblock = docblock.replace(ltrimNewlineRe, '').trimRight();
+ var result = Object.create(null);
+ var comments = docblock.replace(propertyRe, '').replace(ltrimNewlineRe, '').trimRight();
+ var match;
+
+ while (match = propertyRe.exec(docblock)) {
+ // strip linecomments from pragmas
+ var nextPragma = match[2].replace(lineCommentRe, '');
+
+ if (typeof result[match[1]] === 'string' || Array.isArray(result[match[1]])) {
+ result[match[1]] = [].concat(result[match[1]], nextPragma);
+ } else {
+ result[match[1]] = nextPragma;
+ }
+ }
+
+ return {
+ comments: comments,
+ pragmas: result
+ };
+ }
+
+ function print(_ref) {
+ var _ref$comments = _ref.comments,
+ comments = _ref$comments === void 0 ? '' : _ref$comments,
+ _ref$pragmas = _ref.pragmas,
+ pragmas = _ref$pragmas === void 0 ? {} : _ref$pragmas;
+
+ var line = (0, _detectNewline().default)(comments) || _os().EOL;
+
+ var head = '/**';
+ var start = ' *';
+ var tail = ' */';
+ var keys = Object.keys(pragmas);
+ var printedObject = keys.map(function (key) {
+ return printKeyValues(key, pragmas[key]);
+ }).reduce(function (arr, next) {
+ return arr.concat(next);
+ }, []).map(function (keyValue) {
+ return start + ' ' + keyValue + line;
+ }).join('');
+
+ if (!comments) {
+ if (keys.length === 0) {
+ return '';
+ }
+
+ if (keys.length === 1 && !Array.isArray(pragmas[keys[0]])) {
+ var value = pragmas[keys[0]];
+ return "".concat(head, " ").concat(printKeyValues(keys[0], value)[0]).concat(tail);
+ }
+ }
+
+ var printedComments = comments.split(line).map(function (textLine) {
+ return "".concat(start, " ").concat(textLine);
+ }).join(line) + line;
+ return head + line + (comments ? printedComments : '') + (comments && keys.length ? start + line : '') + printedObject + tail;
+ }
+
+ function printKeyValues(key, valueOrArray) {
+ return [].concat(valueOrArray).map(function (value) {
+ return "@".concat(key, " ").concat(value).trim();
+ });
+ }
+ });
+ unwrapExports(build);
+ var build_1 = build.extract;
+ var build_2 = build.strip;
+ var build_3 = build.parse;
+ var build_4 = build.parseWithComments;
+ var build_5 = build.print;
+
+ function hasPragma(text) {
+ var pragmas = Object.keys(build.parse(build.extract(text)));
+ return pragmas.indexOf("prettier") !== -1 || pragmas.indexOf("format") !== -1;
+ }
+
+ function insertPragma(text) {
+ var parsedDocblock = build.parseWithComments(build.extract(text));
+ var pragmas = Object.assign({
+ format: ""
+ }, parsedDocblock.pragmas);
+ var newDocblock = build.print({
+ pragmas: pragmas,
+ comments: parsedDocblock.comments.replace(/^(\s+?\r?\n)+/, "") // remove leading newlines
+
+ }).replace(/(\r\n|\r)/g, "\n"); // normalise newlines (mitigate use of os.EOL by jest-docblock)
+
+ var strippedText = build.strip(text);
+ var separatingNewlines = strippedText.startsWith("\n") ? "\n" : "\n\n";
+ return newDocblock + separatingNewlines + strippedText;
+ }
+
+ var pragma = {
+ hasPragma: hasPragma,
+ insertPragma: insertPragma
+ };
+
+ var DELIMITER_MAP = {
+ "---": "yaml",
+ "+++": "toml"
+ };
+
+ function parse$1(text) {
+ var delimiterRegex = Object.keys(DELIMITER_MAP).map(escapeStringRegexp).join("|");
+ var match = text.match( // trailing spaces after delimiters are allowed
+ new RegExp("^(".concat(delimiterRegex, ")[^\\n\\S]*\\n(?:([\\s\\S]*?)\\n)?\\1[^\\n\\S]*(\\n|$)")));
+
+ if (match === null) {
+ return {
+ frontMatter: null,
+ content: text
+ };
+ }
+
+ var raw = match[0].replace(/\n$/, "");
+ var delimiter = match[1];
+ var value = match[2];
+ return {
+ frontMatter: {
+ type: DELIMITER_MAP[delimiter],
+ value: value,
+ raw: raw
+ },
+ content: match[0].replace(/[^\n]/g, " ") + text.slice(match[0].length)
+ };
+ }
+
+ var frontMatter = parse$1;
+
+ function hasPragma$1(text) {
+ return pragma.hasPragma(frontMatter(text).content);
+ }
+
+ function insertPragma$1(text) {
+ var _parseFrontMatter = frontMatter(text),
+ frontMatter$1 = _parseFrontMatter.frontMatter,
+ content = _parseFrontMatter.content;
+
+ return (frontMatter$1 ? frontMatter$1.raw + "\n\n" : "") + pragma.insertPragma(content);
+ }
+
+ var pragma$1 = {
+ hasPragma: hasPragma$1,
+ insertPragma: insertPragma$1
+ };
+
+ var colorAdjusterFunctions = ["red", "green", "blue", "alpha", "a", "rgb", "hue", "h", "saturation", "s", "lightness", "l", "whiteness", "w", "blackness", "b", "tint", "shade", "blend", "blenda", "contrast", "hsl", "hsla", "hwb", "hwba"];
+
+ function getAncestorCounter(path, typeOrTypes) {
+ var types = [].concat(typeOrTypes);
+ var counter = -1;
+ var ancestorNode;
+
+ while (ancestorNode = path.getParentNode(++counter)) {
+ if (types.indexOf(ancestorNode.type) !== -1) {
+ return counter;
+ }
+ }
+
+ return -1;
+ }
+
+ function getAncestorNode(path, typeOrTypes) {
+ var counter = getAncestorCounter(path, typeOrTypes);
+ return counter === -1 ? null : path.getParentNode(counter);
+ }
+
+ function getPropOfDeclNode(path) {
+ var declAncestorNode = getAncestorNode(path, "css-decl");
+ return declAncestorNode && declAncestorNode.prop && declAncestorNode.prop.toLowerCase();
+ }
+
+ function isSCSS(parser, text) {
+ var hasExplicitParserChoice = parser === "less" || parser === "scss";
+ var IS_POSSIBLY_SCSS = /(\w\s*: [^}:]+|#){|@import[^\n]+(url|,)/;
+ return hasExplicitParserChoice ? parser === "scss" : IS_POSSIBLY_SCSS.test(text);
+ }
+
+ function isWideKeywords(value) {
+ return ["initial", "inherit", "unset", "revert"].indexOf(value.toLowerCase()) !== -1;
+ }
+
+ function isKeyframeAtRuleKeywords(path, value) {
+ var atRuleAncestorNode = getAncestorNode(path, "css-atrule");
+ return atRuleAncestorNode && atRuleAncestorNode.name && atRuleAncestorNode.name.toLowerCase().endsWith("keyframes") && ["from", "to"].indexOf(value.toLowerCase()) !== -1;
+ }
+
+ function maybeToLowerCase(value) {
+ return value.includes("$") || value.includes("@") || value.includes("#") || value.startsWith("%") || value.startsWith("--") || value.startsWith(":--") || value.includes("(") && value.includes(")") ? value : value.toLowerCase();
+ }
+
+ function insideValueFunctionNode(path, functionName) {
+ var funcAncestorNode = getAncestorNode(path, "value-func");
+ return funcAncestorNode && funcAncestorNode.value && funcAncestorNode.value.toLowerCase() === functionName;
+ }
+
+ function insideICSSRuleNode(path) {
+ var ruleAncestorNode = getAncestorNode(path, "css-rule");
+ return ruleAncestorNode && ruleAncestorNode.raws && ruleAncestorNode.raws.selector && (ruleAncestorNode.raws.selector.startsWith(":import") || ruleAncestorNode.raws.selector.startsWith(":export"));
+ }
+
+ function insideAtRuleNode(path, atRuleNameOrAtRuleNames) {
+ var atRuleNames = [].concat(atRuleNameOrAtRuleNames);
+ var atRuleAncestorNode = getAncestorNode(path, "css-atrule");
+ return atRuleAncestorNode && atRuleNames.indexOf(atRuleAncestorNode.name.toLowerCase()) !== -1;
+ }
+
+ function insideURLFunctionInImportAtRuleNode(path) {
+ var node = path.getValue();
+ var atRuleAncestorNode = getAncestorNode(path, "css-atrule");
+ return atRuleAncestorNode && atRuleAncestorNode.name === "import" && node.groups[0].value === "url" && node.groups.length === 2;
+ }
+
+ function isURLFunctionNode(node) {
+ return node.type === "value-func" && node.value.toLowerCase() === "url";
+ }
+
+ function isLastNode(path, node) {
+ var parentNode = path.getParentNode();
+
+ if (!parentNode) {
+ return false;
+ }
+
+ var nodes = parentNode.nodes;
+ return nodes && nodes.indexOf(node) === nodes.length - 1;
+ }
+
+ function isHTMLTag(value) {
+ return htmlTagNames$1.indexOf(value.toLowerCase()) !== -1;
+ }
+
+ function isDetachedRulesetDeclarationNode(node) {
+ // If a Less file ends up being parsed with the SCSS parser, Less
+ // variable declarations will be parsed as atrules with names ending
+ // with a colon, so keep the original case then.
+ if (!node.selector) {
+ return false;
+ }
+
+ return typeof node.selector === "string" && /^@.+:.*$/.test(node.selector) || node.selector.value && /^@.+:.*$/.test(node.selector.value);
+ }
+
+ function isForKeywordNode(node) {
+ return node.type === "value-word" && ["from", "through", "end"].indexOf(node.value) !== -1;
+ }
+
+ function isIfElseKeywordNode(node) {
+ return node.type === "value-word" && ["and", "or", "not"].indexOf(node.value) !== -1;
+ }
+
+ function isEachKeywordNode(node) {
+ return node.type === "value-word" && node.value === "in";
+ }
+
+ function isMultiplicationNode(node) {
+ return node.type === "value-operator" && node.value === "*";
+ }
+
+ function isDivisionNode(node) {
+ return node.type === "value-operator" && node.value === "/";
+ }
+
+ function isAdditionNode(node) {
+ return node.type === "value-operator" && node.value === "+";
+ }
+
+ function isSubtractionNode(node) {
+ return node.type === "value-operator" && node.value === "-";
+ }
+
+ function isModuloNode(node) {
+ return node.type === "value-operator" && node.value === "%";
+ }
+
+ function isMathOperatorNode(node) {
+ return isMultiplicationNode(node) || isDivisionNode(node) || isAdditionNode(node) || isSubtractionNode(node) || isModuloNode(node);
+ }
+
+ function isEqualityOperatorNode(node) {
+ return node.type === "value-word" && ["==", "!="].indexOf(node.value) !== -1;
+ }
+
+ function isRelationalOperatorNode(node) {
+ return node.type === "value-word" && ["<", ">", "<=", ">="].indexOf(node.value) !== -1;
+ }
+
+ function isSCSSControlDirectiveNode(node) {
+ return node.type === "css-atrule" && ["if", "else", "for", "each", "while"].indexOf(node.name) !== -1;
+ }
+
+ function isSCSSNestedPropertyNode(node) {
+ if (!node.selector) {
+ return false;
+ }
+
+ return node.selector.replace(/\/\*.*?\*\//, "").replace(/\/\/.*?\n/, "").trim().endsWith(":");
+ }
+
+ function isDetachedRulesetCallNode(node) {
+ return node.raws && node.raws.params && /^\(\s*\)$/.test(node.raws.params);
+ }
+
+ function isTemplatePlaceholderNode(node) {
+ return node.name.startsWith("prettier-placeholder");
+ }
+
+ function isTemplatePropNode(node) {
+ return node.prop.startsWith("@prettier-placeholder");
+ }
+
+ function isPostcssSimpleVarNode(currentNode, nextNode) {
+ return currentNode.value === "$$" && currentNode.type === "value-func" && nextNode && nextNode.type === "value-word" && !nextNode.raws.before;
+ }
+
+ function hasComposesNode(node) {
+ return node.value && node.value.type === "value-root" && node.value.group && node.value.group.type === "value-value" && node.prop.toLowerCase() === "composes";
+ }
+
+ function hasParensAroundNode(node) {
+ return node.value && node.value.group && node.value.group.group && node.value.group.group.type === "value-paren_group" && node.value.group.group.open !== null && node.value.group.group.close !== null;
+ }
+
+ function hasEmptyRawBefore(node) {
+ return node.raws && node.raws.before === "";
+ }
+
+ function isKeyValuePairNode(node) {
+ return node.type === "value-comma_group" && node.groups && node.groups[1] && node.groups[1].type === "value-colon";
+ }
+
+ function isKeyValuePairInParenGroupNode(node) {
+ return node.type === "value-paren_group" && node.groups && node.groups[0] && isKeyValuePairNode(node.groups[0]);
+ }
+
+ function isSCSSMapItemNode(path) {
+ var node = path.getValue(); // Ignore empty item (i.e. `$key: ()`)
+
+ if (node.groups.length === 0) {
+ return false;
+ }
+
+ var parentParentNode = path.getParentNode(1); // Check open parens contain key/value pair (i.e. `(key: value)` and `(key: (value, other-value)`)
+
+ if (!isKeyValuePairInParenGroupNode(node) && !(parentParentNode && isKeyValuePairInParenGroupNode(parentParentNode))) {
+ return false;
+ }
+
+ var declNode = getAncestorNode(path, "css-decl"); // SCSS map declaration (i.e. `$map: (key: value, other-key: other-value)`)
+
+ if (declNode && declNode.prop && declNode.prop.startsWith("$")) {
+ return true;
+ } // List as value of key inside SCSS map (i.e. `$map: (key: (value other-value other-other-value))`)
+
+
+ if (isKeyValuePairInParenGroupNode(parentParentNode)) {
+ return true;
+ } // SCSS Map is argument of function (i.e. `func((key: value, other-key: other-value))`)
+
+
+ if (parentParentNode.type === "value-func") {
+ return true;
+ }
+
+ return false;
+ }
+
+ function isInlineValueCommentNode(node) {
+ return node.type === "value-comment" && node.inline;
+ }
+
+ function isHashNode(node) {
+ return node.type === "value-word" && node.value === "#";
+ }
+
+ function isLeftCurlyBraceNode(node) {
+ return node.type === "value-word" && node.value === "{";
+ }
+
+ function isRightCurlyBraceNode(node) {
+ return node.type === "value-word" && node.value === "}";
+ }
+
+ function isWordNode(node) {
+ return ["value-word", "value-atword"].indexOf(node.type) !== -1;
+ }
+
+ function isColonNode(node) {
+ return node.type === "value-colon";
+ }
+
+ function isMediaAndSupportsKeywords(node) {
+ return node.value && ["not", "and", "or"].indexOf(node.value.toLowerCase()) !== -1;
+ }
+
+ function isColorAdjusterFuncNode(node) {
+ if (node.type !== "value-func") {
+ return false;
+ }
+
+ return colorAdjusterFunctions.indexOf(node.value.toLowerCase()) !== -1;
+ }
+
+ var utils$2 = {
+ getAncestorCounter: getAncestorCounter,
+ getAncestorNode: getAncestorNode,
+ getPropOfDeclNode: getPropOfDeclNode,
+ maybeToLowerCase: maybeToLowerCase,
+ insideValueFunctionNode: insideValueFunctionNode,
+ insideICSSRuleNode: insideICSSRuleNode,
+ insideAtRuleNode: insideAtRuleNode,
+ insideURLFunctionInImportAtRuleNode: insideURLFunctionInImportAtRuleNode,
+ isKeyframeAtRuleKeywords: isKeyframeAtRuleKeywords,
+ isHTMLTag: isHTMLTag,
+ isWideKeywords: isWideKeywords,
+ isSCSS: isSCSS,
+ isLastNode: isLastNode,
+ isSCSSControlDirectiveNode: isSCSSControlDirectiveNode,
+ isDetachedRulesetDeclarationNode: isDetachedRulesetDeclarationNode,
+ isRelationalOperatorNode: isRelationalOperatorNode,
+ isEqualityOperatorNode: isEqualityOperatorNode,
+ isMultiplicationNode: isMultiplicationNode,
+ isDivisionNode: isDivisionNode,
+ isAdditionNode: isAdditionNode,
+ isSubtractionNode: isSubtractionNode,
+ isModuloNode: isModuloNode,
+ isMathOperatorNode: isMathOperatorNode,
+ isEachKeywordNode: isEachKeywordNode,
+ isForKeywordNode: isForKeywordNode,
+ isURLFunctionNode: isURLFunctionNode,
+ isIfElseKeywordNode: isIfElseKeywordNode,
+ hasComposesNode: hasComposesNode,
+ hasParensAroundNode: hasParensAroundNode,
+ hasEmptyRawBefore: hasEmptyRawBefore,
+ isSCSSNestedPropertyNode: isSCSSNestedPropertyNode,
+ isDetachedRulesetCallNode: isDetachedRulesetCallNode,
+ isTemplatePlaceholderNode: isTemplatePlaceholderNode,
+ isTemplatePropNode: isTemplatePropNode,
+ isPostcssSimpleVarNode: isPostcssSimpleVarNode,
+ isKeyValuePairNode: isKeyValuePairNode,
+ isKeyValuePairInParenGroupNode: isKeyValuePairInParenGroupNode,
+ isSCSSMapItemNode: isSCSSMapItemNode,
+ isInlineValueCommentNode: isInlineValueCommentNode,
+ isHashNode: isHashNode,
+ isLeftCurlyBraceNode: isLeftCurlyBraceNode,
+ isRightCurlyBraceNode: isRightCurlyBraceNode,
+ isWordNode: isWordNode,
+ isColonNode: isColonNode,
+ isMediaAndSupportsKeywords: isMediaAndSupportsKeywords,
+ isColorAdjusterFuncNode: isColorAdjusterFuncNode
+ };
+
+ var insertPragma$2 = pragma$1.insertPragma;
+ var printNumber$1 = util.printNumber,
+ printString$1 = util.printString,
+ hasIgnoreComment$1 = util.hasIgnoreComment,
+ hasNewline$2 = util.hasNewline;
+ var isNextLineEmpty$2 = utilShared.isNextLineEmpty;
+ var _require$$3$builders = doc.builders,
+ concat$5 = _require$$3$builders.concat,
+ join$2 = _require$$3$builders.join,
+ line$1 = _require$$3$builders.line,
+ hardline$4 = _require$$3$builders.hardline,
+ softline$1 = _require$$3$builders.softline,
+ group$1 = _require$$3$builders.group,
+ fill$2 = _require$$3$builders.fill,
+ indent$2 = _require$$3$builders.indent,
+ dedent$1 = _require$$3$builders.dedent,
+ ifBreak$1 = _require$$3$builders.ifBreak,
+ removeLines$1 = doc.utils.removeLines;
+ var getAncestorNode$1 = utils$2.getAncestorNode,
+ getPropOfDeclNode$1 = utils$2.getPropOfDeclNode,
+ maybeToLowerCase$1 = utils$2.maybeToLowerCase,
+ insideValueFunctionNode$1 = utils$2.insideValueFunctionNode,
+ insideICSSRuleNode$1 = utils$2.insideICSSRuleNode,
+ insideAtRuleNode$1 = utils$2.insideAtRuleNode,
+ insideURLFunctionInImportAtRuleNode$1 = utils$2.insideURLFunctionInImportAtRuleNode,
+ isKeyframeAtRuleKeywords$1 = utils$2.isKeyframeAtRuleKeywords,
+ isHTMLTag$1 = utils$2.isHTMLTag,
+ isWideKeywords$1 = utils$2.isWideKeywords,
+ isSCSS$1 = utils$2.isSCSS,
+ isLastNode$1 = utils$2.isLastNode,
+ isSCSSControlDirectiveNode$1 = utils$2.isSCSSControlDirectiveNode,
+ isDetachedRulesetDeclarationNode$1 = utils$2.isDetachedRulesetDeclarationNode,
+ isRelationalOperatorNode$1 = utils$2.isRelationalOperatorNode,
+ isEqualityOperatorNode$1 = utils$2.isEqualityOperatorNode,
+ isMultiplicationNode$1 = utils$2.isMultiplicationNode,
+ isDivisionNode$1 = utils$2.isDivisionNode,
+ isAdditionNode$1 = utils$2.isAdditionNode,
+ isSubtractionNode$1 = utils$2.isSubtractionNode,
+ isMathOperatorNode$1 = utils$2.isMathOperatorNode,
+ isEachKeywordNode$1 = utils$2.isEachKeywordNode,
+ isForKeywordNode$1 = utils$2.isForKeywordNode,
+ isURLFunctionNode$1 = utils$2.isURLFunctionNode,
+ isIfElseKeywordNode$1 = utils$2.isIfElseKeywordNode,
+ hasComposesNode$1 = utils$2.hasComposesNode,
+ hasParensAroundNode$1 = utils$2.hasParensAroundNode,
+ hasEmptyRawBefore$1 = utils$2.hasEmptyRawBefore,
+ isKeyValuePairNode$1 = utils$2.isKeyValuePairNode,
+ isDetachedRulesetCallNode$1 = utils$2.isDetachedRulesetCallNode,
+ isTemplatePlaceholderNode$1 = utils$2.isTemplatePlaceholderNode,
+ isTemplatePropNode$1 = utils$2.isTemplatePropNode,
+ isPostcssSimpleVarNode$1 = utils$2.isPostcssSimpleVarNode,
+ isSCSSMapItemNode$1 = utils$2.isSCSSMapItemNode,
+ isInlineValueCommentNode$1 = utils$2.isInlineValueCommentNode,
+ isHashNode$1 = utils$2.isHashNode,
+ isLeftCurlyBraceNode$1 = utils$2.isLeftCurlyBraceNode,
+ isRightCurlyBraceNode$1 = utils$2.isRightCurlyBraceNode,
+ isWordNode$1 = utils$2.isWordNode,
+ isColonNode$1 = utils$2.isColonNode,
+ isMediaAndSupportsKeywords$1 = utils$2.isMediaAndSupportsKeywords,
+ isColorAdjusterFuncNode$1 = utils$2.isColorAdjusterFuncNode;
+
+ function shouldPrintComma(options) {
+ switch (options.trailingComma) {
+ case "all":
+ case "es5":
+ return true;
+
+ case "none":
+ default:
+ return false;
+ }
+ }
+
+ function genericPrint(path, options, print) {
+ var node = path.getValue();
+ /* istanbul ignore if */
+
+ if (!node) {
+ return "";
+ }
+
+ if (typeof node === "string") {
+ return node;
+ }
+
+ switch (node.type) {
+ case "yaml":
+ case "toml":
+ return concat$5([node.raw, hardline$4]);
+
+ case "css-root":
+ {
+ var nodes = printNodeSequence(path, options, print);
+
+ if (nodes.parts.length) {
+ return concat$5([nodes, hardline$4]);
+ }
+
+ return nodes;
+ }
+
+ case "css-comment":
+ {
+ if (node.raws.content) {
+ return node.raws.content;
+ }
+
+ var text = options.originalText.slice(options.locStart(node), options.locEnd(node));
+ var rawText = node.raws.text || node.text; // Workaround a bug where the location is off.
+ // https://github.com/postcss/postcss-scss/issues/63
+
+ if (text.indexOf(rawText) === -1) {
+ if (node.raws.inline) {
+ return concat$5(["// ", rawText]);
+ }
+
+ return concat$5(["/* ", rawText, " */"]);
+ }
+
+ return text;
+ }
+
+ case "css-rule":
+ {
+ return concat$5([path.call(print, "selector"), node.important ? " !important" : "", node.nodes ? concat$5([" {", node.nodes.length > 0 ? indent$2(concat$5([hardline$4, printNodeSequence(path, options, print)])) : "", hardline$4, "}", isDetachedRulesetDeclarationNode$1(node) ? ";" : ""]) : ";"]);
+ }
+
+ case "css-decl":
+ {
+ var parentNode = path.getParentNode();
+ return concat$5([node.raws.before.replace(/[\s;]/g, ""), insideICSSRuleNode$1(path) ? node.prop : maybeToLowerCase$1(node.prop), node.raws.between.trim() === ":" ? ":" : node.raws.between.trim(), node.extend ? "" : " ", hasComposesNode$1(node) ? removeLines$1(path.call(print, "value")) : path.call(print, "value"), node.raws.important ? node.raws.important.replace(/\s*!\s*important/i, " !important") : node.important ? " !important" : "", node.raws.scssDefault ? node.raws.scssDefault.replace(/\s*!default/i, " !default") : node.scssDefault ? " !default" : "", node.raws.scssGlobal ? node.raws.scssGlobal.replace(/\s*!global/i, " !global") : node.scssGlobal ? " !global" : "", node.nodes ? concat$5([" {", indent$2(concat$5([softline$1, printNodeSequence(path, options, print)])), softline$1, "}"]) : isTemplatePropNode$1(node) && !parentNode.raws.semicolon && options.originalText[options.locEnd(node) - 1] !== ";" ? "" : ";"]);
+ }
+
+ case "css-atrule":
+ {
+ var _parentNode = path.getParentNode();
+
+ return concat$5(["@", // If a Less file ends up being parsed with the SCSS parser, Less
+ // variable declarations will be parsed as at-rules with names ending
+ // with a colon, so keep the original case then.
+ isDetachedRulesetCallNode$1(node) || node.name.endsWith(":") ? node.name : maybeToLowerCase$1(node.name), node.params ? concat$5([isDetachedRulesetCallNode$1(node) ? "" : isTemplatePlaceholderNode$1(node) && /^\s*\n/.test(node.raws.afterName) ? /^\s*\n\s*\n/.test(node.raws.afterName) ? concat$5([hardline$4, hardline$4]) : hardline$4 : " ", path.call(print, "params")]) : "", node.selector ? indent$2(concat$5([" ", path.call(print, "selector")])) : "", node.value ? group$1(concat$5([" ", path.call(print, "value"), isSCSSControlDirectiveNode$1(node) ? hasParensAroundNode$1(node) ? " " : line$1 : ""])) : node.name === "else" ? " " : "", node.nodes ? concat$5([isSCSSControlDirectiveNode$1(node) ? "" : " ", "{", indent$2(concat$5([node.nodes.length > 0 ? softline$1 : "", printNodeSequence(path, options, print)])), softline$1, "}"]) : isTemplatePlaceholderNode$1(node) && !_parentNode.raws.semicolon && options.originalText[options.locEnd(node) - 1] !== ";" ? "" : ";"]);
+ }
+ // postcss-media-query-parser
+
+ case "media-query-list":
+ {
+ var parts = [];
+ path.each(function (childPath) {
+ var node = childPath.getValue();
+
+ if (node.type === "media-query" && node.value === "") {
+ return;
+ }
+
+ parts.push(childPath.call(print));
+ }, "nodes");
+ return group$1(indent$2(join$2(line$1, parts)));
+ }
+
+ case "media-query":
+ {
+ return concat$5([join$2(" ", path.map(print, "nodes")), isLastNode$1(path, node) ? "" : ","]);
+ }
+
+ case "media-type":
+ {
+ return adjustNumbers(adjustStrings(node.value, options));
+ }
+
+ case "media-feature-expression":
+ {
+ if (!node.nodes) {
+ return node.value;
+ }
+
+ return concat$5(["(", concat$5(path.map(print, "nodes")), ")"]);
+ }
+
+ case "media-feature":
+ {
+ return maybeToLowerCase$1(adjustStrings(node.value.replace(/ +/g, " "), options));
+ }
+
+ case "media-colon":
+ {
+ return concat$5([node.value, " "]);
+ }
+
+ case "media-value":
+ {
+ return adjustNumbers(adjustStrings(node.value, options));
+ }
+
+ case "media-keyword":
+ {
+ return adjustStrings(node.value, options);
+ }
+
+ case "media-url":
+ {
+ return adjustStrings(node.value.replace(/^url\(\s+/gi, "url(").replace(/\s+\)$/gi, ")"), options);
+ }
+
+ case "media-unknown":
+ {
+ return node.value;
+ }
+ // postcss-selector-parser
+
+ case "selector-root":
+ {
+ return group$1(concat$5([insideAtRuleNode$1(path, "custom-selector") ? concat$5([getAncestorNode$1(path, "css-atrule").customSelector, line$1]) : "", join$2(concat$5([",", insideAtRuleNode$1(path, ["extend", "custom-selector", "nest"]) ? line$1 : hardline$4]), path.map(print, "nodes"))]));
+ }
+
+ case "selector-selector":
+ {
+ return group$1(indent$2(concat$5(path.map(print, "nodes"))));
+ }
+
+ case "selector-comment":
+ {
+ return node.value;
+ }
+
+ case "selector-string":
+ {
+ return adjustStrings(node.value, options);
+ }
+
+ case "selector-tag":
+ {
+ var _parentNode2 = path.getParentNode();
+
+ var index = _parentNode2 && _parentNode2.nodes.indexOf(node);
+
+ var prevNode = index && _parentNode2.nodes[index - 1];
+ return concat$5([node.namespace ? concat$5([node.namespace === true ? "" : node.namespace.trim(), "|"]) : "", prevNode.type === "selector-nesting" ? node.value : adjustNumbers(isHTMLTag$1(node.value) || isKeyframeAtRuleKeywords$1(path, node.value) ? node.value.toLowerCase() : node.value)]);
+ }
+
+ case "selector-id":
+ {
+ return concat$5(["#", node.value]);
+ }
+
+ case "selector-class":
+ {
+ return concat$5([".", adjustNumbers(adjustStrings(node.value, options))]);
+ }
+
+ case "selector-attribute":
+ {
+ return concat$5(["[", node.namespace ? concat$5([node.namespace === true ? "" : node.namespace.trim(), "|"]) : "", node.attribute.trim(), node.operator ? node.operator : "", node.value ? quoteAttributeValue(adjustStrings(node.value.trim(), options), options) : "", node.insensitive ? " i" : "", "]"]);
+ }
+
+ case "selector-combinator":
+ {
+ if (node.value === "+" || node.value === ">" || node.value === "~" || node.value === ">>>") {
+ var _parentNode3 = path.getParentNode();
+
+ var _leading = _parentNode3.type === "selector-selector" && _parentNode3.nodes[0] === node ? "" : line$1;
+
+ return concat$5([_leading, node.value, isLastNode$1(path, node) ? "" : " "]);
+ }
+
+ var leading = node.value.trim().startsWith("(") ? line$1 : "";
+ var value = adjustNumbers(adjustStrings(node.value.trim(), options)) || line$1;
+ return concat$5([leading, value]);
+ }
+
+ case "selector-universal":
+ {
+ return concat$5([node.namespace ? concat$5([node.namespace === true ? "" : node.namespace.trim(), "|"]) : "", node.value]);
+ }
+
+ case "selector-pseudo":
+ {
+ return concat$5([maybeToLowerCase$1(node.value), node.nodes && node.nodes.length > 0 ? concat$5(["(", join$2(", ", path.map(print, "nodes")), ")"]) : ""]);
+ }
+
+ case "selector-nesting":
+ {
+ return node.value;
+ }
+
+ case "selector-unknown":
+ {
+ var ruleAncestorNode = getAncestorNode$1(path, "css-rule"); // Nested SCSS property
+
+ if (ruleAncestorNode && ruleAncestorNode.isSCSSNesterProperty) {
+ return adjustNumbers(adjustStrings(maybeToLowerCase$1(node.value), options));
+ }
+
+ return node.value;
+ }
+ // postcss-values-parser
+
+ case "value-value":
+ case "value-root":
+ {
+ return path.call(print, "group");
+ }
+
+ case "value-comment":
+ {
+ return concat$5([node.inline ? "//" : "/*", node.value, node.inline ? "" : "*/"]);
+ }
+
+ case "value-comma_group":
+ {
+ var _parentNode4 = path.getParentNode();
+
+ var parentParentNode = path.getParentNode(1);
+ var declAncestorProp = getPropOfDeclNode$1(path);
+ var isGridValue = declAncestorProp && _parentNode4.type === "value-value" && (declAncestorProp === "grid" || declAncestorProp.startsWith("grid-template"));
+ var atRuleAncestorNode = getAncestorNode$1(path, "css-atrule");
+ var isControlDirective = atRuleAncestorNode && isSCSSControlDirectiveNode$1(atRuleAncestorNode);
+ var printed = path.map(print, "groups");
+ var _parts = [];
+ var insideURLFunction = insideValueFunctionNode$1(path, "url");
+ var insideSCSSInterpolationInString = false;
+ var didBreak = false;
+
+ for (var i = 0; i < node.groups.length; ++i) {
+ _parts.push(printed[i]); // Ignore value inside `url()`
+
+
+ if (insideURLFunction) {
+ continue;
+ }
+
+ var iPrevNode = node.groups[i - 1];
+ var iNode = node.groups[i];
+ var iNextNode = node.groups[i + 1];
+ var iNextNextNode = node.groups[i + 2]; // Ignore after latest node (i.e. before semicolon)
+
+ if (!iNextNode) {
+ continue;
+ } // Ignore spaces before/after string interpolation (i.e. `"#{my-fn("_")}"`)
+
+
+ var isStartSCSSInterpolationInString = iNode.type === "value-string" && iNode.value.startsWith("#{");
+ var isEndingSCSSInterpolationInString = insideSCSSInterpolationInString && iNextNode.type === "value-string" && iNextNode.value.endsWith("}");
+
+ if (isStartSCSSInterpolationInString || isEndingSCSSInterpolationInString) {
+ insideSCSSInterpolationInString = !insideSCSSInterpolationInString;
+ continue;
+ }
+
+ if (insideSCSSInterpolationInString) {
+ continue;
+ } // Ignore colon (i.e. `:`)
+
+
+ if (isColonNode$1(iNode) || isColonNode$1(iNextNode)) {
+ continue;
+ } // Ignore `@` in Less (i.e. `@@var;`)
+
+
+ if (iNode.type === "value-atword" && iNode.value === "") {
+ continue;
+ } // Ignore `~` in Less (i.e. `content: ~"^//* some horrible but needed css hack";`)
+
+
+ if (iNode.value === "~") {
+ continue;
+ } // Ignore escape `\`
+
+
+ if (iNode.value && iNode.value.indexOf("\\") !== -1 && iNextNode && iNextNode.type !== "value-comment") {
+ continue;
+ } // Ignore escaped `/`
+
+
+ if (iPrevNode && iPrevNode.value && iPrevNode.value.indexOf("\\") === iPrevNode.value.length - 1 && iNode.type === "value-operator" && iNode.value === "/") {
+ continue;
+ } // Ignore `\` (i.e. `$variable: \@small;`)
+
+
+ if (iNode.value === "\\") {
+ continue;
+ } // Ignore `$$` (i.e. `background-color: $$(style)Color;`)
+
+
+ if (isPostcssSimpleVarNode$1(iNode, iNextNode)) {
+ continue;
+ } // Ignore spaces after `#` and after `{` and before `}` in SCSS interpolation (i.e. `#{variable}`)
+
+
+ if (isHashNode$1(iNode) || isLeftCurlyBraceNode$1(iNode) || isRightCurlyBraceNode$1(iNextNode) || isLeftCurlyBraceNode$1(iNextNode) && hasEmptyRawBefore$1(iNextNode) || isRightCurlyBraceNode$1(iNode) && hasEmptyRawBefore$1(iNextNode)) {
+ continue;
+ } // Ignore css variables and interpolation in SCSS (i.e. `--#{$var}`)
+
+
+ if (iNode.value === "--" && isHashNode$1(iNextNode)) {
+ continue;
+ } // Formatting math operations
+
+
+ var isMathOperator = isMathOperatorNode$1(iNode);
+ var isNextMathOperator = isMathOperatorNode$1(iNextNode); // Print spaces before and after math operators beside SCSS interpolation as is
+ // (i.e. `#{$var}+5`, `#{$var} +5`, `#{$var}+ 5`, `#{$var} + 5`)
+ // (i.e. `5+#{$var}`, `5 +#{$var}`, `5+ #{$var}`, `5 + #{$var}`)
+
+ if ((isMathOperator && isHashNode$1(iNextNode) || isNextMathOperator && isRightCurlyBraceNode$1(iNode)) && hasEmptyRawBefore$1(iNextNode)) {
+ continue;
+ } // Print spaces before and after addition and subtraction math operators as is in `calc` function
+ // due to the fact that it is not valid syntax
+ // (i.e. `calc(1px+1px)`, `calc(1px+ 1px)`, `calc(1px +1px)`, `calc(1px + 1px)`)
+
+
+ if (insideValueFunctionNode$1(path, "calc") && (isAdditionNode$1(iNode) || isAdditionNode$1(iNextNode) || isSubtractionNode$1(iNode) || isSubtractionNode$1(iNextNode)) && hasEmptyRawBefore$1(iNextNode)) {
+ continue;
+ } // Print spaces after `+` and `-` in color adjuster functions as is (e.g. `color(red l(+ 20%))`)
+ // Adjusters with signed numbers (e.g. `color(red l(+20%))`) output as-is.
+
+
+ var isColorAdjusterNode = (isAdditionNode$1(iNode) || isSubtractionNode$1(iNode)) && i === 0 && (iNextNode.type === "value-number" || iNextNode.isHex) && parentParentNode && isColorAdjusterFuncNode$1(parentParentNode) && !hasEmptyRawBefore$1(iNextNode);
+ var requireSpaceBeforeOperator = iNextNextNode && iNextNextNode.type === "value-func" || iNextNextNode && isWordNode$1(iNextNextNode) || iNode.type === "value-func" || isWordNode$1(iNode);
+ var requireSpaceAfterOperator = iNextNode.type === "value-func" || isWordNode$1(iNextNode) || iPrevNode && iPrevNode.type === "value-func" || iPrevNode && isWordNode$1(iPrevNode); // Formatting `/`, `+`, `-` sign
+
+ if (!(isMultiplicationNode$1(iNextNode) || isMultiplicationNode$1(iNode)) && !insideValueFunctionNode$1(path, "calc") && !isColorAdjusterNode && (isDivisionNode$1(iNextNode) && !requireSpaceBeforeOperator || isDivisionNode$1(iNode) && !requireSpaceAfterOperator || isAdditionNode$1(iNextNode) && !requireSpaceBeforeOperator || isAdditionNode$1(iNode) && !requireSpaceAfterOperator || isSubtractionNode$1(iNextNode) || isSubtractionNode$1(iNode)) && (hasEmptyRawBefore$1(iNextNode) || isMathOperator && (!iPrevNode || iPrevNode && isMathOperatorNode$1(iPrevNode)))) {
+ continue;
+ } // Add `hardline` after inline comment (i.e. `// comment\n foo: bar;`)
+
+
+ if (isInlineValueCommentNode$1(iNode)) {
+ _parts.push(hardline$4);
+
+ continue;
+ } // Handle keywords in SCSS control directive
+
+
+ if (isControlDirective && (isEqualityOperatorNode$1(iNextNode) || isRelationalOperatorNode$1(iNextNode) || isIfElseKeywordNode$1(iNextNode) || isEachKeywordNode$1(iNode) || isForKeywordNode$1(iNode))) {
+ _parts.push(" ");
+
+ continue;
+ } // At-rule `namespace` should be in one line
+
+
+ if (atRuleAncestorNode && atRuleAncestorNode.name.toLowerCase() === "namespace") {
+ _parts.push(" ");
+
+ continue;
+ } // Formatting `grid` property
+
+
+ if (isGridValue) {
+ if (iNode.source && iNextNode.source && iNode.source.start.line !== iNextNode.source.start.line) {
+ _parts.push(hardline$4);
+
+ didBreak = true;
+ } else {
+ _parts.push(" ");
+ }
+
+ continue;
+ } // Add `space` before next math operation
+ // Note: `grip` property have `/` delimiter and it is not math operation, so
+ // `grid` property handles above
+
+
+ if (isNextMathOperator) {
+ _parts.push(" ");
+
+ continue;
+ } // Be default all values go through `line`
+
+
+ _parts.push(line$1);
+ }
+
+ if (didBreak) {
+ _parts.unshift(hardline$4);
+ }
+
+ if (isControlDirective) {
+ return group$1(indent$2(concat$5(_parts)));
+ } // Indent is not needed for import url when url is very long
+ // and node has two groups
+ // when type is value-comma_group
+ // example @import url("verylongurl") projection,tv
+
+
+ if (insideURLFunctionInImportAtRuleNode$1(path)) {
+ return group$1(fill$2(_parts));
+ }
+
+ return group$1(indent$2(fill$2(_parts)));
+ }
+
+ case "value-paren_group":
+ {
+ var _parentNode5 = path.getParentNode();
+
+ if (_parentNode5 && isURLFunctionNode$1(_parentNode5) && (node.groups.length === 1 || node.groups.length > 0 && node.groups[0].type === "value-comma_group" && node.groups[0].groups.length > 0 && node.groups[0].groups[0].type === "value-word" && node.groups[0].groups[0].value.startsWith("data:"))) {
+ return concat$5([node.open ? path.call(print, "open") : "", join$2(",", path.map(print, "groups")), node.close ? path.call(print, "close") : ""]);
+ }
+
+ if (!node.open) {
+ var _printed = path.map(print, "groups");
+
+ var res = [];
+
+ for (var _i = 0; _i < _printed.length; _i++) {
+ if (_i !== 0) {
+ res.push(concat$5([",", line$1]));
+ }
+
+ res.push(_printed[_i]);
+ }
+
+ return group$1(indent$2(fill$2(res)));
+ }
+
+ var isSCSSMapItem = isSCSSMapItemNode$1(path);
+ return group$1(concat$5([node.open ? path.call(print, "open") : "", indent$2(concat$5([softline$1, join$2(concat$5([",", line$1]), path.map(function (childPath) {
+ var node = childPath.getValue();
+ var printed = print(childPath); // Key/Value pair in open paren already indented
+
+ if (isKeyValuePairNode$1(node) && node.type === "value-comma_group" && node.groups && node.groups[2] && node.groups[2].type === "value-paren_group") {
+ printed.contents.contents.parts[1] = group$1(printed.contents.contents.parts[1]);
+ return group$1(dedent$1(printed));
+ }
+
+ return printed;
+ }, "groups"))])), ifBreak$1(isSCSS$1(options.parser, options.originalText) && isSCSSMapItem && shouldPrintComma(options) ? "," : ""), softline$1, node.close ? path.call(print, "close") : ""]), {
+ shouldBreak: isSCSSMapItem
+ });
+ }
+
+ case "value-func":
+ {
+ return concat$5([node.value, insideAtRuleNode$1(path, "supports") && isMediaAndSupportsKeywords$1(node) ? " " : "", path.call(print, "group")]);
+ }
+
+ case "value-paren":
+ {
+ return node.value;
+ }
+
+ case "value-number":
+ {
+ return concat$5([printCssNumber(node.value), maybeToLowerCase$1(node.unit)]);
+ }
+
+ case "value-operator":
+ {
+ return node.value;
+ }
+
+ case "value-word":
+ {
+ if (node.isColor && node.isHex || isWideKeywords$1(node.value)) {
+ return node.value.toLowerCase();
+ }
+
+ return node.value;
+ }
+
+ case "value-colon":
+ {
+ return concat$5([node.value, // Don't add spaces on `:` in `url` function (i.e. `url(fbglyph: cross-outline, fig-white)`)
+ insideValueFunctionNode$1(path, "url") ? "" : line$1]);
+ }
+
+ case "value-comma":
+ {
+ return concat$5([node.value, " "]);
+ }
+
+ case "value-string":
+ {
+ return printString$1(node.raws.quote + node.value + node.raws.quote, options);
+ }
+
+ case "value-atword":
+ {
+ return concat$5(["@", node.value]);
+ }
+
+ case "value-unicode-range":
+ {
+ return node.value;
+ }
+
+ case "value-unknown":
+ {
+ return node.value;
+ }
+
+ default:
+ /* istanbul ignore next */
+ throw new Error("Unknown postcss type ".concat(JSON.stringify(node.type)));
+ }
+ }
+
+ function printNodeSequence(path, options, print) {
+ var node = path.getValue();
+ var parts = [];
+ var i = 0;
+ path.map(function (pathChild) {
+ var prevNode = node.nodes[i - 1];
+
+ if (prevNode && prevNode.type === "css-comment" && prevNode.text.trim() === "prettier-ignore") {
+ var childNode = pathChild.getValue();
+ parts.push(options.originalText.slice(options.locStart(childNode), options.locEnd(childNode)));
+ } else {
+ parts.push(pathChild.call(print));
+ }
+
+ if (i !== node.nodes.length - 1) {
+ if (node.nodes[i + 1].type === "css-comment" && !hasNewline$2(options.originalText, options.locStart(node.nodes[i + 1]), {
+ backwards: true
+ }) && node.nodes[i].type !== "yaml" && node.nodes[i].type !== "toml" || node.nodes[i + 1].type === "css-atrule" && node.nodes[i + 1].name === "else" && node.nodes[i].type !== "css-comment") {
+ parts.push(" ");
+ } else {
+ parts.push(hardline$4);
+
+ if (isNextLineEmpty$2(options.originalText, pathChild.getValue(), options) && node.nodes[i].type !== "yaml" && node.nodes[i].type !== "toml") {
+ parts.push(hardline$4);
+ }
+ }
+ }
+
+ i++;
+ }, "nodes");
+ return concat$5(parts);
+ }
+
+ var STRING_REGEX$1 = /(['"])(?:(?!\1)[^\\]|\\[\s\S])*\1/g;
+ var NUMBER_REGEX = /(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?/g;
+ var STANDARD_UNIT_REGEX = /[a-zA-Z]+/g;
+ var WORD_PART_REGEX = /[$@]?[a-zA-Z_\u0080-\uFFFF][\w\-\u0080-\uFFFF]*/g;
+ var ADJUST_NUMBERS_REGEX = RegExp(STRING_REGEX$1.source + "|" + "(".concat(WORD_PART_REGEX.source, ")?") + "(".concat(NUMBER_REGEX.source, ")") + "(".concat(STANDARD_UNIT_REGEX.source, ")?"), "g");
+
+ function adjustStrings(value, options) {
+ return value.replace(STRING_REGEX$1, function (match) {
+ return printString$1(match, options);
+ });
+ }
+
+ function quoteAttributeValue(value, options) {
+ var quote = options.singleQuote ? "'" : '"';
+ return value.includes('"') || value.includes("'") ? value : quote + value + quote;
+ }
+
+ function adjustNumbers(value) {
+ return value.replace(ADJUST_NUMBERS_REGEX, function (match, quote, wordPart, number, unit) {
+ return !wordPart && number ? (wordPart || "") + printCssNumber(number) + maybeToLowerCase$1(unit || "") : match;
+ });
+ }
+
+ function printCssNumber(rawNumber) {
+ return printNumber$1(rawNumber) // Remove trailing `.0`.
+ .replace(/\.0(?=$|e)/, "");
+ }
+
+ var printerPostcss = {
+ print: genericPrint,
+ embed: embed_1,
+ insertPragma: insertPragma$2,
+ hasPrettierIgnore: hasIgnoreComment$1,
+ massageAstNode: clean_1
+ };
+
+ var CATEGORY_COMMON = "Common"; // format based on https://github.com/prettier/prettier/blob/master/src/main/core-options.js
+
+ var commonOptions = {
+ bracketSpacing: {
+ since: "0.0.0",
+ category: CATEGORY_COMMON,
+ type: "boolean",
+ default: true,
+ description: "Print spaces between brackets.",
+ oppositeDescription: "Do not print spaces between brackets."
+ },
+ singleQuote: {
+ since: "0.0.0",
+ category: CATEGORY_COMMON,
+ type: "boolean",
+ default: false,
+ description: "Use single quotes instead of double quotes."
+ },
+ proseWrap: {
+ since: "1.8.2",
+ category: CATEGORY_COMMON,
+ type: "choice",
+ default: [{
+ since: "1.8.2",
+ value: true
+ }, {
+ since: "1.9.0",
+ value: "preserve"
+ }],
+ description: "How to wrap prose.",
+ choices: [{
+ since: "1.9.0",
+ value: "always",
+ description: "Wrap prose if it exceeds the print width."
+ }, {
+ since: "1.9.0",
+ value: "never",
+ description: "Do not wrap prose."
+ }, {
+ since: "1.9.0",
+ value: "preserve",
+ description: "Wrap prose as-is."
+ }, {
+ value: false,
+ deprecated: "1.9.0",
+ redirect: "never"
+ }, {
+ value: true,
+ deprecated: "1.9.0",
+ redirect: "always"
+ }]
+ }
+ };
+
+ var options$2 = {
+ singleQuote: commonOptions.singleQuote
+ };
+
+ var createLanguage = function createLanguage(linguistData, transform) {
+ var language = {};
+
+ for (var key in linguistData) {
+ var newKey = key === "languageId" ? "linguistLanguageId" : key;
+ language[newKey] = linguistData[key];
+ }
+
+ return transform(language);
+ };
+
+ var name$1 = "CSS";
+ var type = "markup";
+ var tmScope = "source.css";
+ var aceMode = "css";
+ var codemirrorMode = "css";
+ var codemirrorMimeType = "text/css";
+ var color = "#563d7c";
+ var extensions = [
+ ".css"
+ ];
+ var languageId = 50;
+ var CSS = {
+ name: name$1,
+ type: type,
+ tmScope: tmScope,
+ aceMode: aceMode,
+ codemirrorMode: codemirrorMode,
+ codemirrorMimeType: codemirrorMimeType,
+ color: color,
+ extensions: extensions,
+ languageId: languageId
+ };
+
+ var CSS$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$1,
+ type: type,
+ tmScope: tmScope,
+ aceMode: aceMode,
+ codemirrorMode: codemirrorMode,
+ codemirrorMimeType: codemirrorMimeType,
+ color: color,
+ extensions: extensions,
+ languageId: languageId,
+ 'default': CSS
+ });
+
+ var name$2 = "PostCSS";
+ var type$1 = "markup";
+ var tmScope$1 = "source.postcss";
+ var group$2 = "CSS";
+ var extensions$1 = [
+ ".pcss"
+ ];
+ var aceMode$1 = "text";
+ var languageId$1 = 262764437;
+ var PostCSS = {
+ name: name$2,
+ type: type$1,
+ tmScope: tmScope$1,
+ group: group$2,
+ extensions: extensions$1,
+ aceMode: aceMode$1,
+ languageId: languageId$1
+ };
+
+ var PostCSS$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$2,
+ type: type$1,
+ tmScope: tmScope$1,
+ group: group$2,
+ extensions: extensions$1,
+ aceMode: aceMode$1,
+ languageId: languageId$1,
+ 'default': PostCSS
+ });
+
+ var name$3 = "Less";
+ var type$2 = "markup";
+ var group$3 = "CSS";
+ var extensions$2 = [
+ ".less"
+ ];
+ var tmScope$2 = "source.css.less";
+ var aceMode$2 = "less";
+ var codemirrorMode$1 = "css";
+ var codemirrorMimeType$1 = "text/css";
+ var languageId$2 = 198;
+ var Less = {
+ name: name$3,
+ type: type$2,
+ group: group$3,
+ extensions: extensions$2,
+ tmScope: tmScope$2,
+ aceMode: aceMode$2,
+ codemirrorMode: codemirrorMode$1,
+ codemirrorMimeType: codemirrorMimeType$1,
+ languageId: languageId$2
+ };
+
+ var Less$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$3,
+ type: type$2,
+ group: group$3,
+ extensions: extensions$2,
+ tmScope: tmScope$2,
+ aceMode: aceMode$2,
+ codemirrorMode: codemirrorMode$1,
+ codemirrorMimeType: codemirrorMimeType$1,
+ languageId: languageId$2,
+ 'default': Less
+ });
+
+ var name$4 = "SCSS";
+ var type$3 = "markup";
+ var tmScope$3 = "source.css.scss";
+ var group$4 = "CSS";
+ var aceMode$3 = "scss";
+ var codemirrorMode$2 = "css";
+ var codemirrorMimeType$2 = "text/x-scss";
+ var extensions$3 = [
+ ".scss"
+ ];
+ var languageId$3 = 329;
+ var SCSS = {
+ name: name$4,
+ type: type$3,
+ tmScope: tmScope$3,
+ group: group$4,
+ aceMode: aceMode$3,
+ codemirrorMode: codemirrorMode$2,
+ codemirrorMimeType: codemirrorMimeType$2,
+ extensions: extensions$3,
+ languageId: languageId$3
+ };
+
+ var SCSS$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$4,
+ type: type$3,
+ tmScope: tmScope$3,
+ group: group$4,
+ aceMode: aceMode$3,
+ codemirrorMode: codemirrorMode$2,
+ codemirrorMimeType: codemirrorMimeType$2,
+ extensions: extensions$3,
+ languageId: languageId$3,
+ 'default': SCSS
+ });
+
+ var require$$0$2 = getCjsExportFromNamespace(CSS$1);
+
+ var require$$1 = getCjsExportFromNamespace(PostCSS$1);
+
+ var require$$2 = getCjsExportFromNamespace(Less$1);
+
+ var require$$3 = getCjsExportFromNamespace(SCSS$1);
+
+ var languages = [createLanguage(require$$0$2, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["css"],
+ vscodeLanguageIds: ["css"]
+ });
+ }), createLanguage(require$$1, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["css"],
+ vscodeLanguageIds: ["postcss"],
+ extensions: data.extensions.concat(".postcss")
+ });
+ }), createLanguage(require$$2, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["less"],
+ vscodeLanguageIds: ["less"]
+ });
+ }), createLanguage(require$$3, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["scss"],
+ vscodeLanguageIds: ["scss"]
+ });
+ })];
+ var printers = {
+ postcss: printerPostcss
+ };
+ var languageCss = {
+ languages: languages,
+ options: options$2,
+ printers: printers
+ };
+
+ function hasPragma$2(text) {
+ return /^\s*#[^\n\S]*@(format|prettier)\s*(\n|$)/.test(text);
+ }
+
+ function insertPragma$3(text) {
+ return "# @format\n\n" + text;
+ }
+
+ var pragma$2 = {
+ hasPragma: hasPragma$2,
+ insertPragma: insertPragma$3
+ };
+
+ var _require$$0$builders$2 = doc.builders,
+ concat$6 = _require$$0$builders$2.concat,
+ join$3 = _require$$0$builders$2.join,
+ hardline$5 = _require$$0$builders$2.hardline,
+ line$2 = _require$$0$builders$2.line,
+ softline$2 = _require$$0$builders$2.softline,
+ group$5 = _require$$0$builders$2.group,
+ indent$3 = _require$$0$builders$2.indent,
+ ifBreak$2 = _require$$0$builders$2.ifBreak;
+ var hasIgnoreComment$2 = util.hasIgnoreComment;
+ var isNextLineEmpty$3 = utilShared.isNextLineEmpty;
+ var insertPragma$4 = pragma$2.insertPragma;
+
+ function genericPrint$1(path, options, print) {
+ var n = path.getValue();
+
+ if (!n) {
+ return "";
+ }
+
+ if (typeof n === "string") {
+ return n;
+ }
+
+ switch (n.kind) {
+ case "Document":
+ {
+ var parts = [];
+ path.map(function (pathChild, index) {
+ parts.push(concat$6([pathChild.call(print)]));
+
+ if (index !== n.definitions.length - 1) {
+ parts.push(hardline$5);
+
+ if (isNextLineEmpty$3(options.originalText, pathChild.getValue(), options)) {
+ parts.push(hardline$5);
+ }
+ }
+ }, "definitions");
+ return concat$6([concat$6(parts), hardline$5]);
+ }
+
+ case "OperationDefinition":
+ {
+ var hasOperation = options.originalText[options.locStart(n)] !== "{";
+ var hasName = !!n.name;
+ return concat$6([hasOperation ? n.operation : "", hasOperation && hasName ? concat$6([" ", path.call(print, "name")]) : "", n.variableDefinitions && n.variableDefinitions.length ? group$5(concat$6(["(", indent$3(concat$6([softline$2, join$3(concat$6([ifBreak$2("", ", "), softline$2]), path.map(print, "variableDefinitions"))])), softline$2, ")"])) : "", printDirectives(path, print, n), n.selectionSet ? !hasOperation && !hasName ? "" : " " : "", path.call(print, "selectionSet")]);
+ }
+
+ case "FragmentDefinition":
+ {
+ return concat$6(["fragment ", path.call(print, "name"), n.variableDefinitions && n.variableDefinitions.length ? group$5(concat$6(["(", indent$3(concat$6([softline$2, join$3(concat$6([ifBreak$2("", ", "), softline$2]), path.map(print, "variableDefinitions"))])), softline$2, ")"])) : "", " on ", path.call(print, "typeCondition"), printDirectives(path, print, n), " ", path.call(print, "selectionSet")]);
+ }
+
+ case "SelectionSet":
+ {
+ return concat$6(["{", indent$3(concat$6([hardline$5, join$3(hardline$5, path.call(function (selectionsPath) {
+ return printSequence(selectionsPath, options, print);
+ }, "selections"))])), hardline$5, "}"]);
+ }
+
+ case "Field":
+ {
+ return group$5(concat$6([n.alias ? concat$6([path.call(print, "alias"), ": "]) : "", path.call(print, "name"), n.arguments.length > 0 ? group$5(concat$6(["(", indent$3(concat$6([softline$2, join$3(concat$6([ifBreak$2("", ", "), softline$2]), path.call(function (argsPath) {
+ return printSequence(argsPath, options, print);
+ }, "arguments"))])), softline$2, ")"])) : "", printDirectives(path, print, n), n.selectionSet ? " " : "", path.call(print, "selectionSet")]));
+ }
+
+ case "Name":
+ {
+ return n.value;
+ }
+
+ case "StringValue":
+ {
+ if (n.block) {
+ return concat$6(['"""', hardline$5, join$3(hardline$5, n.value.replace(/"""/g, "\\$&").split("\n")), hardline$5, '"""']);
+ }
+
+ return concat$6(['"', n.value.replace(/["\\]/g, "\\$&").replace(/\n/g, "\\n"), '"']);
+ }
+
+ case "IntValue":
+ case "FloatValue":
+ case "EnumValue":
+ {
+ return n.value;
+ }
+
+ case "BooleanValue":
+ {
+ return n.value ? "true" : "false";
+ }
+
+ case "NullValue":
+ {
+ return "null";
+ }
+
+ case "Variable":
+ {
+ return concat$6(["$", path.call(print, "name")]);
+ }
+
+ case "ListValue":
+ {
+ return group$5(concat$6(["[", indent$3(concat$6([softline$2, join$3(concat$6([ifBreak$2("", ", "), softline$2]), path.map(print, "values"))])), softline$2, "]"]));
+ }
+
+ case "ObjectValue":
+ {
+ return group$5(concat$6(["{", options.bracketSpacing && n.fields.length > 0 ? " " : "", indent$3(concat$6([softline$2, join$3(concat$6([ifBreak$2("", ", "), softline$2]), path.map(print, "fields"))])), softline$2, ifBreak$2("", options.bracketSpacing && n.fields.length > 0 ? " " : ""), "}"]));
+ }
+
+ case "ObjectField":
+ case "Argument":
+ {
+ return concat$6([path.call(print, "name"), ": ", path.call(print, "value")]);
+ }
+
+ case "Directive":
+ {
+ return concat$6(["@", path.call(print, "name"), n.arguments.length > 0 ? group$5(concat$6(["(", indent$3(concat$6([softline$2, join$3(concat$6([ifBreak$2("", ", "), softline$2]), path.call(function (argsPath) {
+ return printSequence(argsPath, options, print);
+ }, "arguments"))])), softline$2, ")"])) : ""]);
+ }
+
+ case "NamedType":
+ {
+ return path.call(print, "name");
+ }
+
+ case "VariableDefinition":
+ {
+ return concat$6([path.call(print, "variable"), ": ", path.call(print, "type"), n.defaultValue ? concat$6([" = ", path.call(print, "defaultValue")]) : "", printDirectives(path, print, n)]);
+ }
+
+ case "TypeExtensionDefinition":
+ {
+ return concat$6(["extend ", path.call(print, "definition")]);
+ }
+
+ case "ObjectTypeExtension":
+ case "ObjectTypeDefinition":
+ {
+ return concat$6([path.call(print, "description"), n.description ? hardline$5 : "", n.kind === "ObjectTypeExtension" ? "extend " : "", "type ", path.call(print, "name"), n.interfaces.length > 0 ? concat$6([" implements ", join$3(determineInterfaceSeparator(options.originalText.substr(options.locStart(n), options.locEnd(n))), path.map(print, "interfaces"))]) : "", printDirectives(path, print, n), n.fields.length > 0 ? concat$6([" {", indent$3(concat$6([hardline$5, join$3(hardline$5, path.call(function (fieldsPath) {
+ return printSequence(fieldsPath, options, print);
+ }, "fields"))])), hardline$5, "}"]) : ""]);
+ }
+
+ case "FieldDefinition":
+ {
+ return concat$6([path.call(print, "description"), n.description ? hardline$5 : "", path.call(print, "name"), n.arguments.length > 0 ? group$5(concat$6(["(", indent$3(concat$6([softline$2, join$3(concat$6([ifBreak$2("", ", "), softline$2]), path.call(function (argsPath) {
+ return printSequence(argsPath, options, print);
+ }, "arguments"))])), softline$2, ")"])) : "", ": ", path.call(print, "type"), printDirectives(path, print, n)]);
+ }
+
+ case "DirectiveDefinition":
+ {
+ return concat$6([path.call(print, "description"), n.description ? hardline$5 : "", "directive ", "@", path.call(print, "name"), n.arguments.length > 0 ? group$5(concat$6(["(", indent$3(concat$6([softline$2, join$3(concat$6([ifBreak$2("", ", "), softline$2]), path.call(function (argsPath) {
+ return printSequence(argsPath, options, print);
+ }, "arguments"))])), softline$2, ")"])) : "", concat$6([" on ", join$3(" | ", path.map(print, "locations"))])]);
+ }
+
+ case "EnumTypeExtension":
+ case "EnumTypeDefinition":
+ {
+ return concat$6([path.call(print, "description"), n.description ? hardline$5 : "", n.kind === "EnumTypeExtension" ? "extend " : "", "enum ", path.call(print, "name"), printDirectives(path, print, n), n.values.length > 0 ? concat$6([" {", indent$3(concat$6([hardline$5, join$3(hardline$5, path.call(function (valuesPath) {
+ return printSequence(valuesPath, options, print);
+ }, "values"))])), hardline$5, "}"]) : ""]);
+ }
+
+ case "EnumValueDefinition":
+ {
+ return concat$6([path.call(print, "description"), n.description ? hardline$5 : "", path.call(print, "name"), printDirectives(path, print, n)]);
+ }
+
+ case "InputValueDefinition":
+ {
+ return concat$6([path.call(print, "description"), n.description ? n.description.block ? hardline$5 : line$2 : "", path.call(print, "name"), ": ", path.call(print, "type"), n.defaultValue ? concat$6([" = ", path.call(print, "defaultValue")]) : "", printDirectives(path, print, n)]);
+ }
+
+ case "InputObjectTypeExtension":
+ case "InputObjectTypeDefinition":
+ {
+ return concat$6([path.call(print, "description"), n.description ? hardline$5 : "", n.kind === "InputObjectTypeExtension" ? "extend " : "", "input ", path.call(print, "name"), printDirectives(path, print, n), n.fields.length > 0 ? concat$6([" {", indent$3(concat$6([hardline$5, join$3(hardline$5, path.call(function (fieldsPath) {
+ return printSequence(fieldsPath, options, print);
+ }, "fields"))])), hardline$5, "}"]) : ""]);
+ }
+
+ case "SchemaDefinition":
+ {
+ return concat$6(["schema", printDirectives(path, print, n), " {", n.operationTypes.length > 0 ? indent$3(concat$6([hardline$5, join$3(hardline$5, path.call(function (opsPath) {
+ return printSequence(opsPath, options, print);
+ }, "operationTypes"))])) : "", hardline$5, "}"]);
+ }
+
+ case "OperationTypeDefinition":
+ {
+ return concat$6([path.call(print, "operation"), ": ", path.call(print, "type")]);
+ }
+
+ case "InterfaceTypeExtension":
+ case "InterfaceTypeDefinition":
+ {
+ return concat$6([path.call(print, "description"), n.description ? hardline$5 : "", n.kind === "InterfaceTypeExtension" ? "extend " : "", "interface ", path.call(print, "name"), printDirectives(path, print, n), n.fields.length > 0 ? concat$6([" {", indent$3(concat$6([hardline$5, join$3(hardline$5, path.call(function (fieldsPath) {
+ return printSequence(fieldsPath, options, print);
+ }, "fields"))])), hardline$5, "}"]) : ""]);
+ }
+
+ case "FragmentSpread":
+ {
+ return concat$6(["...", path.call(print, "name"), printDirectives(path, print, n)]);
+ }
+
+ case "InlineFragment":
+ {
+ return concat$6(["...", n.typeCondition ? concat$6([" on ", path.call(print, "typeCondition")]) : "", printDirectives(path, print, n), " ", path.call(print, "selectionSet")]);
+ }
+
+ case "UnionTypeExtension":
+ case "UnionTypeDefinition":
+ {
+ return group$5(concat$6([path.call(print, "description"), n.description ? hardline$5 : "", group$5(concat$6([n.kind === "UnionTypeExtension" ? "extend " : "", "union ", path.call(print, "name"), printDirectives(path, print, n), n.types.length > 0 ? concat$6([" =", ifBreak$2("", " "), indent$3(concat$6([ifBreak$2(concat$6([line$2, " "])), join$3(concat$6([line$2, "| "]), path.map(print, "types"))]))]) : ""]))]));
+ }
+
+ case "ScalarTypeExtension":
+ case "ScalarTypeDefinition":
+ {
+ return concat$6([path.call(print, "description"), n.description ? hardline$5 : "", n.kind === "ScalarTypeExtension" ? "extend " : "", "scalar ", path.call(print, "name"), printDirectives(path, print, n)]);
+ }
+
+ case "NonNullType":
+ {
+ return concat$6([path.call(print, "type"), "!"]);
+ }
+
+ case "ListType":
+ {
+ return concat$6(["[", path.call(print, "type"), "]"]);
+ }
+
+ default:
+ /* istanbul ignore next */
+ throw new Error("unknown graphql type: " + JSON.stringify(n.kind));
+ }
+ }
+
+ function printDirectives(path, print, n) {
+ if (n.directives.length === 0) {
+ return "";
+ }
+
+ return concat$6([" ", group$5(indent$3(concat$6([softline$2, join$3(concat$6([ifBreak$2("", " "), softline$2]), path.map(print, "directives"))])))]);
+ }
+
+ function printSequence(sequencePath, options, print) {
+ var count = sequencePath.getValue().length;
+ return sequencePath.map(function (path, i) {
+ var printed = print(path);
+
+ if (isNextLineEmpty$3(options.originalText, path.getValue(), options) && i < count - 1) {
+ return concat$6([printed, hardline$5]);
+ }
+
+ return printed;
+ });
+ }
+
+ function canAttachComment(node) {
+ return node.kind && node.kind !== "Comment";
+ }
+
+ function printComment$1(commentPath) {
+ var comment = commentPath.getValue();
+
+ if (comment.kind === "Comment") {
+ return "#" + comment.value.trimRight();
+ }
+
+ throw new Error("Not a comment: " + JSON.stringify(comment));
+ }
+
+ function determineInterfaceSeparator(originalSource) {
+ var start = originalSource.indexOf("implements");
+
+ if (start === -1) {
+ throw new Error("Must implement interfaces: " + originalSource);
+ }
+
+ var end = originalSource.indexOf("{");
+
+ if (end === -1) {
+ end = originalSource.length;
+ }
+
+ return originalSource.substr(start, end).includes("&") ? " & " : ", ";
+ }
+
+ function clean$1(node, newNode
+ /*, parent*/
+ ) {
+ delete newNode.loc;
+ delete newNode.comments;
+ }
+
+ var printerGraphql = {
+ print: genericPrint$1,
+ massageAstNode: clean$1,
+ hasPrettierIgnore: hasIgnoreComment$2,
+ insertPragma: insertPragma$4,
+ printComment: printComment$1,
+ canAttachComment: canAttachComment
+ };
+
+ var options$3 = {
+ bracketSpacing: commonOptions.bracketSpacing
+ };
+
+ var name$5 = "GraphQL";
+ var type$4 = "data";
+ var extensions$4 = [
+ ".graphql",
+ ".gql",
+ ".graphqls"
+ ];
+ var tmScope$4 = "source.graphql";
+ var aceMode$4 = "text";
+ var languageId$4 = 139;
+ var GraphQL = {
+ name: name$5,
+ type: type$4,
+ extensions: extensions$4,
+ tmScope: tmScope$4,
+ aceMode: aceMode$4,
+ languageId: languageId$4
+ };
+
+ var GraphQL$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$5,
+ type: type$4,
+ extensions: extensions$4,
+ tmScope: tmScope$4,
+ aceMode: aceMode$4,
+ languageId: languageId$4,
+ 'default': GraphQL
+ });
+
+ var require$$0$3 = getCjsExportFromNamespace(GraphQL$1);
+
+ var languages$1 = [createLanguage(require$$0$3, function (data) {
+ return Object.assign(data, {
+ since: "1.5.0",
+ parsers: ["graphql"],
+ vscodeLanguageIds: ["graphql"]
+ });
+ })];
+ var printers$1 = {
+ graphql: printerGraphql
+ };
+ var languageGraphql = {
+ languages: languages$1,
+ options: options$3,
+ printers: printers$1
+ };
+
+ var _require$$0$builders$3 = doc.builders,
+ concat$7 = _require$$0$builders$3.concat,
+ join$4 = _require$$0$builders$3.join,
+ softline$3 = _require$$0$builders$3.softline,
+ hardline$6 = _require$$0$builders$3.hardline,
+ line$3 = _require$$0$builders$3.line,
+ group$6 = _require$$0$builders$3.group,
+ indent$4 = _require$$0$builders$3.indent,
+ ifBreak$3 = _require$$0$builders$3.ifBreak; // http://w3c.github.io/html/single-page.html#void-elements
+
+ var voidTags = ["area", "base", "br", "col", "embed", "hr", "img", "input", "link", "meta", "param", "source", "track", "wbr"]; // Formatter based on @glimmerjs/syntax's built-in test formatter:
+ // https://github.com/glimmerjs/glimmer-vm/blob/master/packages/%40glimmer/syntax/lib/generation/print.ts
+
+ function printChildren(path, options, print) {
+ return concat$7(path.map(function (childPath, childIndex) {
+ var childNode = path.getValue();
+ var isFirstNode = childIndex === 0;
+ var isLastNode = childIndex == path.getParentNode(0).children.length - 1;
+ var isLastNodeInMultiNodeList = isLastNode && !isFirstNode;
+ var isWhitespace = isWhitespaceNode(childNode);
+
+ if (isWhitespace && isLastNodeInMultiNodeList) {
+ return print(childPath, options, print);
+ } else if (isFirstNode) {
+ return concat$7([softline$3, print(childPath, options, print)]);
+ }
+
+ return print(childPath, options, print);
+ }, "children"));
+ }
+
+ function print(path, options, print) {
+ var n = path.getValue();
+ /* istanbul ignore if*/
+
+ if (!n) {
+ return "";
+ }
+
+ switch (n.type) {
+ case "Block":
+ case "Program":
+ case "Template":
+ {
+ return group$6(concat$7(path.map(print, "body").filter(function (text) {
+ return text !== "";
+ })));
+ }
+
+ case "ElementNode":
+ {
+ var tagFirstChar = n.tag[0];
+ var isLocal = n.tag.indexOf(".") !== -1;
+ var isGlimmerComponent = tagFirstChar.toUpperCase() === tagFirstChar || isLocal;
+ var hasChildren = n.children.length > 0;
+ var hasNonWhitespaceChildren = n.children.some(function (n) {
+ return !isWhitespaceNode(n);
+ });
+ var isVoid = isGlimmerComponent && (!hasChildren || !hasNonWhitespaceChildren) || voidTags.indexOf(n.tag) !== -1;
+ var closeTagForNoBreak = isVoid ? concat$7([" />", softline$3]) : ">";
+ var closeTagForBreak = isVoid ? "/>" : ">";
+
+ var _getParams = function _getParams(path, print) {
+ return indent$4(concat$7([n.attributes.length ? line$3 : "", join$4(line$3, path.map(print, "attributes")), n.modifiers.length ? line$3 : "", join$4(line$3, path.map(print, "modifiers")), n.comments.length ? line$3 : "", join$4(line$3, path.map(print, "comments"))]));
+ };
+
+ var nextNode = getNextNode(path);
+ return concat$7([group$6(concat$7(["<", n.tag, _getParams(path, print), n.blockParams.length ? " as |".concat(n.blockParams.join(" "), "|") : "", ifBreak$3(softline$3, ""), ifBreak$3(closeTagForBreak, closeTagForNoBreak)])), !isVoid ? group$6(concat$7([hasNonWhitespaceChildren ? indent$4(printChildren(path, options, print)) : "", ifBreak$3(hasChildren ? hardline$6 : "", ""), concat$7(["</", n.tag, ">"])])) : "", nextNode && nextNode.type === "ElementNode" ? hardline$6 : ""]);
+ }
+
+ case "BlockStatement":
+ {
+ var pp = path.getParentNode(1);
+ var isElseIf = pp && pp.inverse && pp.inverse.body.length === 1 && pp.inverse.body[0] === n && pp.inverse.body[0].path.parts[0] === "if";
+ var hasElseIf = n.inverse && n.inverse.body.length === 1 && n.inverse.body[0].type === "BlockStatement" && n.inverse.body[0].path.parts[0] === "if";
+ var indentElse = hasElseIf ? function (a) {
+ return a;
+ } : indent$4;
+
+ if (n.inverse) {
+ return concat$7([isElseIf ? concat$7(["{{else ", printPathParams(path, print), "}}"]) : printOpenBlock(path, print), indent$4(concat$7([hardline$6, path.call(print, "program")])), n.inverse && !hasElseIf ? concat$7([hardline$6, "{{else}}"]) : "", n.inverse ? indentElse(concat$7([hardline$6, path.call(print, "inverse")])) : "", isElseIf ? "" : concat$7([hardline$6, printCloseBlock(path, print)])]);
+ } else if (isElseIf) {
+ return concat$7([concat$7(["{{else ", printPathParams(path, print), "}}"]), indent$4(concat$7([hardline$6, path.call(print, "program")]))]);
+ }
+
+ var _hasNonWhitespaceChildren = n.program.body.some(function (n) {
+ return !isWhitespaceNode(n);
+ });
+
+ return concat$7([printOpenBlock(path, print), group$6(concat$7([indent$4(concat$7([softline$3, path.call(print, "program")])), _hasNonWhitespaceChildren ? hardline$6 : softline$3, printCloseBlock(path, print)]))]);
+ }
+
+ case "ElementModifierStatement":
+ case "MustacheStatement":
+ {
+ var _pp = path.getParentNode(1);
+
+ var isConcat = _pp && _pp.type === "ConcatStatement";
+ return group$6(concat$7([n.escaped === false ? "{{{" : "{{", printPathParams(path, print, {
+ group: false
+ }), isConcat ? "" : softline$3, n.escaped === false ? "}}}" : "}}"]));
+ }
+
+ case "SubExpression":
+ {
+ var params = getParams(path, print);
+ var printedParams = params.length > 0 ? indent$4(concat$7([line$3, group$6(join$4(line$3, params))])) : "";
+ return group$6(concat$7(["(", printPath(path, print), printedParams, softline$3, ")"]));
+ }
+
+ case "AttrNode":
+ {
+ var isText = n.value.type === "TextNode";
+
+ if (isText && n.value.loc.start.column === n.value.loc.end.column) {
+ return concat$7([n.name]);
+ }
+
+ var value = path.call(print, "value");
+ var quotedValue = isText ? printStringLiteral(value.parts.join(), options) : value;
+ return concat$7([n.name, "=", quotedValue]);
+ }
+
+ case "ConcatStatement":
+ {
+ return concat$7(['"', group$6(indent$4(join$4(softline$3, path.map(function (partPath) {
+ return print(partPath);
+ }, "parts").filter(function (a) {
+ return a !== "";
+ })))), '"']);
+ }
+
+ case "Hash":
+ {
+ return concat$7([join$4(line$3, path.map(print, "pairs"))]);
+ }
+
+ case "HashPair":
+ {
+ return concat$7([n.key, "=", path.call(print, "value")]);
+ }
+
+ case "TextNode":
+ {
+ var maxLineBreaksToPreserve = 2;
+ var isFirstElement = !getPreviousNode(path);
+ var isLastElement = !getNextNode(path);
+ var isWhitespaceOnly = !/\S/.test(n.chars);
+ var lineBreaksCount = countNewLines(n.chars);
+ var hasBlockParent = path.getParentNode(0).type === "Block";
+ var hasElementParent = path.getParentNode(0).type === "ElementNode";
+ var hasTemplateParent = path.getParentNode(0).type === "Template";
+ var leadingLineBreaksCount = countLeadingNewLines(n.chars);
+ var trailingLineBreaksCount = countTrailingNewLines(n.chars);
+
+ if ((isFirstElement || isLastElement) && isWhitespaceOnly && (hasBlockParent || hasElementParent || hasTemplateParent)) {
+ return "";
+ }
+
+ if (isWhitespaceOnly && lineBreaksCount) {
+ leadingLineBreaksCount = Math.min(lineBreaksCount, maxLineBreaksToPreserve);
+ trailingLineBreaksCount = 0;
+ } else {
+ if (isNextNodeOfType(path, "ElementNode") || isNextNodeOfType(path, "BlockStatement")) {
+ trailingLineBreaksCount = Math.max(trailingLineBreaksCount, 1);
+ }
+
+ if (isPreviousNodeOfSomeType(path, ["ElementNode"]) || isPreviousNodeOfSomeType(path, ["BlockStatement"])) {
+ leadingLineBreaksCount = Math.max(leadingLineBreaksCount, 1);
+ }
+ }
+
+ var leadingSpace = "";
+ var trailingSpace = ""; // preserve a space inside of an attribute node where whitespace present,
+ // when next to mustache statement.
+
+ var inAttrNode = path.stack.indexOf("attributes") >= 0;
+
+ if (inAttrNode) {
+ var parentNode = path.getParentNode(0);
+
+ var _isConcat = parentNode.type === "ConcatStatement";
+
+ if (_isConcat) {
+ var parts = parentNode.parts;
+ var partIndex = parts.indexOf(n);
+
+ if (partIndex > 0) {
+ var partType = parts[partIndex - 1].type;
+ var isMustache = partType === "MustacheStatement";
+
+ if (isMustache) {
+ leadingSpace = " ";
+ }
+ }
+
+ if (partIndex < parts.length - 1) {
+ var _partType = parts[partIndex + 1].type;
+
+ var _isMustache = _partType === "MustacheStatement";
+
+ if (_isMustache) {
+ trailingSpace = " ";
+ }
+ }
+ }
+ } else {
+ if (trailingLineBreaksCount === 0 && isNextNodeOfType(path, "MustacheStatement")) {
+ trailingSpace = " ";
+ }
+
+ if (leadingLineBreaksCount === 0 && isPreviousNodeOfSomeType(path, ["MustacheStatement"])) {
+ leadingSpace = " ";
+ }
+
+ if (isFirstElement) {
+ leadingLineBreaksCount = 0;
+ leadingSpace = "";
+ }
+
+ if (isLastElement) {
+ trailingLineBreaksCount = 0;
+ trailingSpace = "";
+ }
+ }
+
+ return concat$7([].concat(_toConsumableArray(generateHardlines(leadingLineBreaksCount, maxLineBreaksToPreserve)), [n.chars.replace(/^[\s ]+/g, leadingSpace).replace(/[\s ]+$/, trailingSpace)], _toConsumableArray(generateHardlines(trailingLineBreaksCount, maxLineBreaksToPreserve))).filter(Boolean));
+ }
+
+ case "MustacheCommentStatement":
+ {
+ var dashes = n.value.indexOf("}}") > -1 ? "--" : "";
+ return concat$7(["{{!", dashes, n.value, dashes, "}}"]);
+ }
+
+ case "PathExpression":
+ {
+ return n.original;
+ }
+
+ case "BooleanLiteral":
+ {
+ return String(n.value);
+ }
+
+ case "CommentStatement":
+ {
+ return concat$7(["<!--", n.value, "-->"]);
+ }
+
+ case "StringLiteral":
+ {
+ return printStringLiteral(n.value, options);
+ }
+
+ case "NumberLiteral":
+ {
+ return String(n.value);
+ }
+
+ case "UndefinedLiteral":
+ {
+ return "undefined";
+ }
+
+ case "NullLiteral":
+ {
+ return "null";
+ }
+
+ /* istanbul ignore next */
+
+ default:
+ throw new Error("unknown glimmer type: " + JSON.stringify(n.type));
+ }
+ }
+ /**
+ * Prints a string literal with the correct surrounding quotes based on
+ * `options.singleQuote` and the number of escaped quotes contained in
+ * the string literal. This function is the glimmer equivalent of `printString`
+ * in `common/util`, but has differences because of the way escaped characters
+ * are treated in hbs string literals.
+ * @param {string} stringLiteral - the string literal value
+ * @param {object} options - the prettier options object
+ */
+
+
+ function printStringLiteral(stringLiteral, options) {
+ var double = {
+ quote: '"',
+ regex: /"/g
+ };
+ var single = {
+ quote: "'",
+ regex: /'/g
+ };
+ var preferred = options.singleQuote ? single : double;
+ var alternate = preferred === single ? double : single;
+ var shouldUseAlternateQuote = false; // If `stringLiteral` contains at least one of the quote preferred for
+ // enclosing the string, we might want to enclose with the alternate quote
+ // instead, to minimize the number of escaped quotes.
+
+ if (stringLiteral.includes(preferred.quote) || stringLiteral.includes(alternate.quote)) {
+ var numPreferredQuotes = (stringLiteral.match(preferred.regex) || []).length;
+ var numAlternateQuotes = (stringLiteral.match(alternate.regex) || []).length;
+ shouldUseAlternateQuote = numPreferredQuotes > numAlternateQuotes;
+ }
+
+ var enclosingQuote = shouldUseAlternateQuote ? alternate : preferred;
+ var escapedStringLiteral = stringLiteral.replace(enclosingQuote.regex, "\\".concat(enclosingQuote.quote));
+ return "".concat(enclosingQuote.quote).concat(escapedStringLiteral).concat(enclosingQuote.quote);
+ }
+
+ function printPath(path, print) {
+ return path.call(print, "path");
+ }
+
+ function getParams(path, print) {
+ var node = path.getValue();
+ var parts = [];
+
+ if (node.params.length > 0) {
+ parts = parts.concat(path.map(print, "params"));
+ }
+
+ if (node.hash && node.hash.pairs.length > 0) {
+ parts.push(path.call(print, "hash"));
+ }
+
+ return parts;
+ }
+
+ function printPathParams(path, print, options) {
+ var parts = [];
+ options = Object.assign({
+ group: true
+ }, options || {});
+ parts.push(printPath(path, print));
+ parts = parts.concat(getParams(path, print));
+
+ if (!options.group) {
+ return indent$4(join$4(line$3, parts));
+ }
+
+ return indent$4(group$6(join$4(line$3, parts)));
+ }
+
+ function printBlockParams(path) {
+ var block = path.getValue();
+
+ if (!block.program || !block.program.blockParams.length) {
+ return "";
+ }
+
+ return concat$7([" as |", block.program.blockParams.join(" "), "|"]);
+ }
+
+ function printOpenBlock(path, print) {
+ return group$6(concat$7(["{{#", printPathParams(path, print), printBlockParams(path), softline$3, "}}"]));
+ }
+
+ function printCloseBlock(path, print) {
+ return concat$7(["{{/", path.call(print, "path"), "}}"]);
+ }
+
+ function isWhitespaceNode(node) {
+ return node.type === "TextNode" && !/\S/.test(node.chars);
+ }
+
+ function getPreviousNode(path) {
+ var node = path.getValue();
+ var parentNode = path.getParentNode(0);
+ var children = parentNode.children || parentNode.body;
+
+ if (children) {
+ var nodeIndex = children.indexOf(node);
+
+ if (nodeIndex > 0) {
+ var previousNode = children[nodeIndex - 1];
+ return previousNode;
+ }
+ }
+ }
+
+ function getNextNode(path) {
+ var node = path.getValue();
+ var parentNode = path.getParentNode(0);
+ var children = parentNode.children || parentNode.body;
+
+ if (children) {
+ var nodeIndex = children.indexOf(node);
+
+ if (nodeIndex < children.length) {
+ var nextNode = children[nodeIndex + 1];
+ return nextNode;
+ }
+ }
+ }
+
+ function isPreviousNodeOfSomeType(path, types) {
+ var previousNode = getPreviousNode(path);
+
+ if (previousNode) {
+ return types.some(function (type) {
+ return previousNode.type === type;
+ });
+ }
+
+ return false;
+ }
+
+ function isNextNodeOfType(path, type) {
+ var nextNode = getNextNode(path);
+ return nextNode && nextNode.type === type;
+ }
+
+ function clean$2(ast, newObj) {
+ delete newObj.loc;
+ delete newObj.selfClosing; // (Glimmer/HTML) ignore TextNode whitespace
+
+ if (ast.type === "TextNode") {
+ if (ast.chars.replace(/\s+/, "") === "") {
+ return null;
+ }
+
+ newObj.chars = ast.chars.replace(/^\s+/, "").replace(/\s+$/, "");
+ }
+ }
+
+ function countNewLines(string) {
+ /* istanbul ignore next */
+ string = typeof string === "string" ? string : "";
+ return string.split("\n").length - 1;
+ }
+
+ function countLeadingNewLines(string) {
+ /* istanbul ignore next */
+ string = typeof string === "string" ? string : "";
+ var newLines = (string.match(/^([^\S\r\n]*[\r\n])+/g) || [])[0] || "";
+ return countNewLines(newLines);
+ }
+
+ function countTrailingNewLines(string) {
+ /* istanbul ignore next */
+ string = typeof string === "string" ? string : "";
+ var newLines = (string.match(/([\r\n][^\S\r\n]*)+$/g) || [])[0] || "";
+ return countNewLines(newLines);
+ }
+
+ function generateHardlines() {
+ var number = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
+ var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+ return new Array(Math.min(number, max)).fill(hardline$6);
+ }
+
+ var printerGlimmer = {
+ print: print,
+ massageAstNode: clean$2
+ };
+
+ var name$6 = "Handlebars";
+ var type$5 = "markup";
+ var group$7 = "HTML";
+ var aliases = [
+ "hbs",
+ "htmlbars"
+ ];
+ var extensions$5 = [
+ ".handlebars",
+ ".hbs"
+ ];
+ var tmScope$5 = "text.html.handlebars";
+ var aceMode$5 = "handlebars";
+ var languageId$5 = 155;
+ var Handlebars = {
+ name: name$6,
+ type: type$5,
+ group: group$7,
+ aliases: aliases,
+ extensions: extensions$5,
+ tmScope: tmScope$5,
+ aceMode: aceMode$5,
+ languageId: languageId$5
+ };
+
+ var Handlebars$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$6,
+ type: type$5,
+ group: group$7,
+ aliases: aliases,
+ extensions: extensions$5,
+ tmScope: tmScope$5,
+ aceMode: aceMode$5,
+ languageId: languageId$5,
+ 'default': Handlebars
+ });
+
+ var require$$0$4 = getCjsExportFromNamespace(Handlebars$1);
+
+ var languages$2 = [createLanguage(require$$0$4, function (data) {
+ return Object.assign(data, {
+ since: null,
+ // unreleased
+ parsers: ["glimmer"],
+ vscodeLanguageIds: ["handlebars"]
+ });
+ })];
+ var printers$2 = {
+ glimmer: printerGlimmer
+ };
+ var languageHandlebars = {
+ languages: languages$2,
+ printers: printers$2
+ };
+
+ var clean$3 = function clean(ast, newNode) {
+ delete newNode.sourceSpan;
+ delete newNode.startSourceSpan;
+ delete newNode.endSourceSpan;
+ delete newNode.nameSpan;
+ delete newNode.valueSpan;
+
+ if (ast.type === "text" || ast.type === "comment") {
+ return null;
+ } // may be formatted by multiparser
+
+
+ if (ast.type === "yaml" || ast.type === "toml") {
+ return null;
+ }
+
+ if (ast.type === "attribute") {
+ delete newNode.value;
+ }
+
+ if (ast.type === "docType") {
+ delete newNode.value;
+ }
+ };
+
+ var json = {
+ "CSS_DISPLAY_TAGS": {
+ "area": "none",
+ "base": "none",
+ "basefont": "none",
+ "datalist": "none",
+ "head": "none",
+ "link": "none",
+ "meta": "none",
+ "noembed": "none",
+ "noframes": "none",
+ "param": "none",
+ "rp": "none",
+ "script": "block",
+ "source": "block",
+ "style": "none",
+ "template": "inline",
+ "track": "block",
+ "title": "none",
+ "html": "block",
+ "body": "block",
+ "address": "block",
+ "blockquote": "block",
+ "center": "block",
+ "div": "block",
+ "figure": "block",
+ "figcaption": "block",
+ "footer": "block",
+ "form": "block",
+ "header": "block",
+ "hr": "block",
+ "legend": "block",
+ "listing": "block",
+ "main": "block",
+ "p": "block",
+ "plaintext": "block",
+ "pre": "block",
+ "xmp": "block",
+ "slot": "contents",
+ "ruby": "ruby",
+ "rt": "ruby-text",
+ "article": "block",
+ "aside": "block",
+ "h1": "block",
+ "h2": "block",
+ "h3": "block",
+ "h4": "block",
+ "h5": "block",
+ "h6": "block",
+ "hgroup": "block",
+ "nav": "block",
+ "section": "block",
+ "dir": "block",
+ "dd": "block",
+ "dl": "block",
+ "dt": "block",
+ "ol": "block",
+ "ul": "block",
+ "li": "list-item",
+ "table": "table",
+ "caption": "table-caption",
+ "colgroup": "table-column-group",
+ "col": "table-column",
+ "thead": "table-header-group",
+ "tbody": "table-row-group",
+ "tfoot": "table-footer-group",
+ "tr": "table-row",
+ "td": "table-cell",
+ "th": "table-cell",
+ "fieldset": "block",
+ "button": "inline-block",
+ "video": "inline-block",
+ "audio": "inline-block"
+ },
+ "CSS_DISPLAY_DEFAULT": "inline",
+ "CSS_WHITE_SPACE_TAGS": {
+ "listing": "pre",
+ "plaintext": "pre",
+ "pre": "pre",
+ "xmp": "pre",
+ "nobr": "nowrap",
+ "table": "initial",
+ "textarea": "pre-wrap"
+ },
+ "CSS_WHITE_SPACE_DEFAULT": "normal"
+ };
+
+ var a = [
+ "accesskey",
+ "charset",
+ "coords",
+ "download",
+ "href",
+ "hreflang",
+ "name",
+ "ping",
+ "referrerpolicy",
+ "rel",
+ "rev",
+ "shape",
+ "tabindex",
+ "target",
+ "type"
+ ];
+ var abbr = [
+ "title"
+ ];
+ var applet = [
+ "align",
+ "alt",
+ "archive",
+ "code",
+ "codebase",
+ "height",
+ "hspace",
+ "name",
+ "object",
+ "vspace",
+ "width"
+ ];
+ var area = [
+ "accesskey",
+ "alt",
+ "coords",
+ "download",
+ "href",
+ "hreflang",
+ "nohref",
+ "ping",
+ "referrerpolicy",
+ "rel",
+ "shape",
+ "tabindex",
+ "target",
+ "type"
+ ];
+ var audio = [
+ "autoplay",
+ "controls",
+ "crossorigin",
+ "loop",
+ "muted",
+ "preload",
+ "src"
+ ];
+ var base = [
+ "href",
+ "target"
+ ];
+ var basefont = [
+ "color",
+ "face",
+ "size"
+ ];
+ var bdo = [
+ "dir"
+ ];
+ var blockquote = [
+ "cite"
+ ];
+ var body = [
+ "alink",
+ "background",
+ "bgcolor",
+ "link",
+ "text",
+ "vlink"
+ ];
+ var br = [
+ "clear"
+ ];
+ var button = [
+ "accesskey",
+ "autofocus",
+ "disabled",
+ "form",
+ "formaction",
+ "formenctype",
+ "formmethod",
+ "formnovalidate",
+ "formtarget",
+ "name",
+ "tabindex",
+ "type",
+ "value"
+ ];
+ var canvas = [
+ "height",
+ "width"
+ ];
+ var caption = [
+ "align"
+ ];
+ var col = [
+ "align",
+ "char",
+ "charoff",
+ "span",
+ "valign",
+ "width"
+ ];
+ var colgroup = [
+ "align",
+ "char",
+ "charoff",
+ "span",
+ "valign",
+ "width"
+ ];
+ var data = [
+ "value"
+ ];
+ var del = [
+ "cite",
+ "datetime"
+ ];
+ var details = [
+ "open"
+ ];
+ var dfn = [
+ "title"
+ ];
+ var dialog = [
+ "open"
+ ];
+ var dir = [
+ "compact"
+ ];
+ var div = [
+ "align"
+ ];
+ var dl = [
+ "compact"
+ ];
+ var embed$1 = [
+ "height",
+ "src",
+ "type",
+ "width"
+ ];
+ var fieldset = [
+ "disabled",
+ "form",
+ "name"
+ ];
+ var font = [
+ "color",
+ "face",
+ "size"
+ ];
+ var form = [
+ "accept",
+ "accept-charset",
+ "action",
+ "autocomplete",
+ "enctype",
+ "method",
+ "name",
+ "novalidate",
+ "target"
+ ];
+ var frame = [
+ "frameborder",
+ "longdesc",
+ "marginheight",
+ "marginwidth",
+ "name",
+ "noresize",
+ "scrolling",
+ "src"
+ ];
+ var frameset = [
+ "cols",
+ "rows"
+ ];
+ var h1 = [
+ "align"
+ ];
+ var h2 = [
+ "align"
+ ];
+ var h3 = [
+ "align"
+ ];
+ var h4 = [
+ "align"
+ ];
+ var h5 = [
+ "align"
+ ];
+ var h6 = [
+ "align"
+ ];
+ var head = [
+ "profile"
+ ];
+ var hr = [
+ "align",
+ "noshade",
+ "size",
+ "width"
+ ];
+ var html = [
+ "manifest",
+ "version"
+ ];
+ var iframe = [
+ "align",
+ "allow",
+ "allowfullscreen",
+ "allowpaymentrequest",
+ "allowusermedia",
+ "frameborder",
+ "height",
+ "longdesc",
+ "marginheight",
+ "marginwidth",
+ "name",
+ "referrerpolicy",
+ "sandbox",
+ "scrolling",
+ "src",
+ "srcdoc",
+ "width"
+ ];
+ var img = [
+ "align",
+ "alt",
+ "border",
+ "crossorigin",
+ "decoding",
+ "height",
+ "hspace",
+ "ismap",
+ "longdesc",
+ "name",
+ "referrerpolicy",
+ "sizes",
+ "src",
+ "srcset",
+ "usemap",
+ "vspace",
+ "width"
+ ];
+ var input = [
+ "accept",
+ "accesskey",
+ "align",
+ "alt",
+ "autocomplete",
+ "autofocus",
+ "checked",
+ "dirname",
+ "disabled",
+ "form",
+ "formaction",
+ "formenctype",
+ "formmethod",
+ "formnovalidate",
+ "formtarget",
+ "height",
+ "ismap",
+ "list",
+ "max",
+ "maxlength",
+ "min",
+ "minlength",
+ "multiple",
+ "name",
+ "pattern",
+ "placeholder",
+ "readonly",
+ "required",
+ "size",
+ "src",
+ "step",
+ "tabindex",
+ "title",
+ "type",
+ "usemap",
+ "value",
+ "width"
+ ];
+ var ins = [
+ "cite",
+ "datetime"
+ ];
+ var isindex = [
+ "prompt"
+ ];
+ var label = [
+ "accesskey",
+ "for",
+ "form"
+ ];
+ var legend = [
+ "accesskey",
+ "align"
+ ];
+ var li = [
+ "type",
+ "value"
+ ];
+ var link$1 = [
+ "as",
+ "charset",
+ "color",
+ "crossorigin",
+ "href",
+ "hreflang",
+ "imagesizes",
+ "imagesrcset",
+ "integrity",
+ "media",
+ "nonce",
+ "referrerpolicy",
+ "rel",
+ "rev",
+ "sizes",
+ "target",
+ "title",
+ "type"
+ ];
+ var map = [
+ "name"
+ ];
+ var menu = [
+ "compact"
+ ];
+ var meta = [
+ "charset",
+ "content",
+ "http-equiv",
+ "name",
+ "scheme"
+ ];
+ var meter = [
+ "high",
+ "low",
+ "max",
+ "min",
+ "optimum",
+ "value"
+ ];
+ var object = [
+ "align",
+ "archive",
+ "border",
+ "classid",
+ "codebase",
+ "codetype",
+ "data",
+ "declare",
+ "form",
+ "height",
+ "hspace",
+ "name",
+ "standby",
+ "tabindex",
+ "type",
+ "typemustmatch",
+ "usemap",
+ "vspace",
+ "width"
+ ];
+ var ol = [
+ "compact",
+ "reversed",
+ "start",
+ "type"
+ ];
+ var optgroup = [
+ "disabled",
+ "label"
+ ];
+ var option = [
+ "disabled",
+ "label",
+ "selected",
+ "value"
+ ];
+ var output = [
+ "for",
+ "form",
+ "name"
+ ];
+ var p = [
+ "align"
+ ];
+ var param = [
+ "name",
+ "type",
+ "value",
+ "valuetype"
+ ];
+ var pre = [
+ "width"
+ ];
+ var progress = [
+ "max",
+ "value"
+ ];
+ var q = [
+ "cite"
+ ];
+ var script = [
+ "async",
+ "charset",
+ "crossorigin",
+ "defer",
+ "integrity",
+ "language",
+ "nomodule",
+ "nonce",
+ "referrerpolicy",
+ "src",
+ "type"
+ ];
+ var select = [
+ "autocomplete",
+ "autofocus",
+ "disabled",
+ "form",
+ "multiple",
+ "name",
+ "required",
+ "size",
+ "tabindex"
+ ];
+ var slot = [
+ "name"
+ ];
+ var source = [
+ "media",
+ "sizes",
+ "src",
+ "srcset",
+ "type"
+ ];
+ var style = [
+ "media",
+ "nonce",
+ "title",
+ "type"
+ ];
+ var table = [
+ "align",
+ "bgcolor",
+ "border",
+ "cellpadding",
+ "cellspacing",
+ "frame",
+ "rules",
+ "summary",
+ "width"
+ ];
+ var tbody = [
+ "align",
+ "char",
+ "charoff",
+ "valign"
+ ];
+ var td = [
+ "abbr",
+ "align",
+ "axis",
+ "bgcolor",
+ "char",
+ "charoff",
+ "colspan",
+ "headers",
+ "height",
+ "nowrap",
+ "rowspan",
+ "scope",
+ "valign",
+ "width"
+ ];
+ var textarea = [
+ "accesskey",
+ "autocomplete",
+ "autofocus",
+ "cols",
+ "dirname",
+ "disabled",
+ "form",
+ "maxlength",
+ "minlength",
+ "name",
+ "placeholder",
+ "readonly",
+ "required",
+ "rows",
+ "tabindex",
+ "wrap"
+ ];
+ var tfoot = [
+ "align",
+ "char",
+ "charoff",
+ "valign"
+ ];
+ var th = [
+ "abbr",
+ "align",
+ "axis",
+ "bgcolor",
+ "char",
+ "charoff",
+ "colspan",
+ "headers",
+ "height",
+ "nowrap",
+ "rowspan",
+ "scope",
+ "valign",
+ "width"
+ ];
+ var thead = [
+ "align",
+ "char",
+ "charoff",
+ "valign"
+ ];
+ var time = [
+ "datetime"
+ ];
+ var tr = [
+ "align",
+ "bgcolor",
+ "char",
+ "charoff",
+ "valign"
+ ];
+ var track = [
+ "default",
+ "kind",
+ "label",
+ "src",
+ "srclang"
+ ];
+ var ul = [
+ "compact",
+ "type"
+ ];
+ var video = [
+ "autoplay",
+ "controls",
+ "crossorigin",
+ "height",
+ "loop",
+ "muted",
+ "playsinline",
+ "poster",
+ "preload",
+ "src",
+ "width"
+ ];
+ var index$1 = {
+ "*": [
+ "accesskey",
+ "autocapitalize",
+ "autofocus",
+ "class",
+ "contenteditable",
+ "dir",
+ "draggable",
+ "enterkeyhint",
+ "hidden",
+ "id",
+ "inputmode",
+ "is",
+ "itemid",
+ "itemprop",
+ "itemref",
+ "itemscope",
+ "itemtype",
+ "lang",
+ "nonce",
+ "slot",
+ "spellcheck",
+ "style",
+ "tabindex",
+ "title",
+ "translate"
+ ],
+ a: a,
+ abbr: abbr,
+ applet: applet,
+ area: area,
+ audio: audio,
+ base: base,
+ basefont: basefont,
+ bdo: bdo,
+ blockquote: blockquote,
+ body: body,
+ br: br,
+ button: button,
+ canvas: canvas,
+ caption: caption,
+ col: col,
+ colgroup: colgroup,
+ data: data,
+ del: del,
+ details: details,
+ dfn: dfn,
+ dialog: dialog,
+ dir: dir,
+ div: div,
+ dl: dl,
+ embed: embed$1,
+ fieldset: fieldset,
+ font: font,
+ form: form,
+ frame: frame,
+ frameset: frameset,
+ h1: h1,
+ h2: h2,
+ h3: h3,
+ h4: h4,
+ h5: h5,
+ h6: h6,
+ head: head,
+ hr: hr,
+ html: html,
+ iframe: iframe,
+ img: img,
+ input: input,
+ ins: ins,
+ isindex: isindex,
+ label: label,
+ legend: legend,
+ li: li,
+ link: link$1,
+ map: map,
+ menu: menu,
+ meta: meta,
+ meter: meter,
+ object: object,
+ ol: ol,
+ optgroup: optgroup,
+ option: option,
+ output: output,
+ p: p,
+ param: param,
+ pre: pre,
+ progress: progress,
+ q: q,
+ script: script,
+ select: select,
+ slot: slot,
+ source: source,
+ style: style,
+ table: table,
+ tbody: tbody,
+ td: td,
+ textarea: textarea,
+ tfoot: tfoot,
+ th: th,
+ thead: thead,
+ time: time,
+ tr: tr,
+ track: track,
+ ul: ul,
+ video: video
+ };
+
+ var htmlElementAttributes = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ a: a,
+ abbr: abbr,
+ applet: applet,
+ area: area,
+ audio: audio,
+ base: base,
+ basefont: basefont,
+ bdo: bdo,
+ blockquote: blockquote,
+ body: body,
+ br: br,
+ button: button,
+ canvas: canvas,
+ caption: caption,
+ col: col,
+ colgroup: colgroup,
+ data: data,
+ del: del,
+ details: details,
+ dfn: dfn,
+ dialog: dialog,
+ dir: dir,
+ div: div,
+ dl: dl,
+ embed: embed$1,
+ fieldset: fieldset,
+ font: font,
+ form: form,
+ frame: frame,
+ frameset: frameset,
+ h1: h1,
+ h2: h2,
+ h3: h3,
+ h4: h4,
+ h5: h5,
+ h6: h6,
+ head: head,
+ hr: hr,
+ html: html,
+ iframe: iframe,
+ img: img,
+ input: input,
+ ins: ins,
+ isindex: isindex,
+ label: label,
+ legend: legend,
+ li: li,
+ link: link$1,
+ map: map,
+ menu: menu,
+ meta: meta,
+ meter: meter,
+ object: object,
+ ol: ol,
+ optgroup: optgroup,
+ option: option,
+ output: output,
+ p: p,
+ param: param,
+ pre: pre,
+ progress: progress,
+ q: q,
+ script: script,
+ select: select,
+ slot: slot,
+ source: source,
+ style: style,
+ table: table,
+ tbody: tbody,
+ td: td,
+ textarea: textarea,
+ tfoot: tfoot,
+ th: th,
+ thead: thead,
+ time: time,
+ tr: tr,
+ track: track,
+ ul: ul,
+ video: video,
+ 'default': index$1
+ });
+
+ var htmlElementAttributes$1 = getCjsExportFromNamespace(htmlElementAttributes);
+
+ var CSS_DISPLAY_TAGS = json.CSS_DISPLAY_TAGS,
+ CSS_DISPLAY_DEFAULT = json.CSS_DISPLAY_DEFAULT,
+ CSS_WHITE_SPACE_TAGS = json.CSS_WHITE_SPACE_TAGS,
+ CSS_WHITE_SPACE_DEFAULT = json.CSS_WHITE_SPACE_DEFAULT;
+ var HTML_TAGS = arrayToMap(htmlTagNames$1);
+ var HTML_ELEMENT_ATTRIBUTES = mapObject(htmlElementAttributes$1, arrayToMap);
+
+ function arrayToMap(array) {
+ var map = Object.create(null);
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = array[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var value = _step.value;
+ map[value] = true;
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return map;
+ }
+
+ function mapObject(object, fn) {
+ var newObject = Object.create(null);
+
+ for (var _i = 0, _Object$keys = Object.keys(object); _i < _Object$keys.length; _i++) {
+ var key = _Object$keys[_i];
+ newObject[key] = fn(object[key], key);
+ }
+
+ return newObject;
+ }
+
+ function shouldPreserveContent(node, options) {
+ if (node.type === "element" && node.fullName === "template" && node.attrMap.lang && node.attrMap.lang !== "html") {
+ return true;
+ } // unterminated node in ie conditional comment
+ // e.g. <!--[if lt IE 9]><html><![endif]-->
+
+
+ if (node.type === "ieConditionalComment" && node.lastChild && !node.lastChild.isSelfClosing && !node.lastChild.endSourceSpan) {
+ return true;
+ } // incomplete html in ie conditional comment
+ // e.g. <!--[if lt IE 9]></div><![endif]-->
+
+
+ if (node.type === "ieConditionalComment" && !node.complete) {
+ return true;
+ } // top-level elements (excluding <template>, <style> and <script>) in Vue SFC are considered custom block
+ // custom blocks can be written in other languages so we should preserve them to not break the code
+
+
+ if (options.parser === "vue" && node.type === "element" && node.parent.type === "root" && ["template", "style", "script", // vue parser can be used for vue dom template as well, so we should still format top-level <html>
+ "html"].indexOf(node.fullName) === -1) {
+ return true;
+ } // TODO: handle non-text children in <pre>
+
+
+ if (isPreLikeNode(node) && node.children.some(function (child) {
+ return child.type !== "text" && child.type !== "interpolation";
+ })) {
+ return true;
+ }
+
+ return false;
+ }
+
+ function hasPrettierIgnore(node) {
+ if (node.type === "attribute" || isTextLikeNode(node)) {
+ return false;
+ }
+
+ if (!node.parent) {
+ return false;
+ }
+
+ if (typeof node.index !== "number" || node.index === 0) {
+ return false;
+ }
+
+ var prevNode = node.parent.children[node.index - 1];
+ return isPrettierIgnore(prevNode);
+ }
+
+ function isPrettierIgnore(node) {
+ return node.type === "comment" && node.value.trim() === "prettier-ignore";
+ }
+
+ function getPrettierIgnoreAttributeCommentData(value) {
+ var match = value.trim().match(/^prettier-ignore-attribute(?:\s+([^]+))?$/);
+
+ if (!match) {
+ return false;
+ }
+
+ if (!match[1]) {
+ return true;
+ }
+
+ return match[1].split(/\s+/);
+ }
+ /** there's no opening/closing tag or it's considered not breakable */
+
+
+ function isTextLikeNode(node) {
+ return node.type === "text" || node.type === "comment";
+ }
+
+ function isScriptLikeTag(node) {
+ return node.type === "element" && (node.fullName === "script" || node.fullName === "style" || node.fullName === "svg:style");
+ }
+
+ function isFrontMatterNode(node) {
+ return node.type === "yaml" || node.type === "toml";
+ }
+
+ function canHaveInterpolation(node) {
+ return node.children && !isScriptLikeTag(node);
+ }
+
+ function isWhitespaceSensitiveNode(node) {
+ return isScriptLikeTag(node) || node.type === "interpolation" || isIndentationSensitiveNode(node);
+ }
+
+ function isIndentationSensitiveNode(node) {
+ return getNodeCssStyleWhiteSpace(node).startsWith("pre");
+ }
+
+ function isLeadingSpaceSensitiveNode(node) {
+ var isLeadingSpaceSensitive = _isLeadingSpaceSensitiveNode();
+
+ if (isLeadingSpaceSensitive && !node.prev && node.parent && node.parent.tagDefinition && node.parent.tagDefinition.ignoreFirstLf) {
+ return node.type === "interpolation";
+ }
+
+ return isLeadingSpaceSensitive;
+
+ function _isLeadingSpaceSensitiveNode() {
+ if (isFrontMatterNode(node)) {
+ return false;
+ }
+
+ if ((node.type === "text" || node.type === "interpolation") && node.prev && (node.prev.type === "text" || node.prev.type === "interpolation")) {
+ return true;
+ }
+
+ if (!node.parent || node.parent.cssDisplay === "none") {
+ return false;
+ }
+
+ if (isPreLikeNode(node.parent)) {
+ return true;
+ }
+
+ if (!node.prev && (node.parent.type === "root" || isScriptLikeTag(node.parent) || !isFirstChildLeadingSpaceSensitiveCssDisplay(node.parent.cssDisplay))) {
+ return false;
+ }
+
+ if (node.prev && !isNextLeadingSpaceSensitiveCssDisplay(node.prev.cssDisplay)) {
+ return false;
+ }
+
+ return true;
+ }
+ }
+
+ function isTrailingSpaceSensitiveNode(node) {
+ if (isFrontMatterNode(node)) {
+ return false;
+ }
+
+ if ((node.type === "text" || node.type === "interpolation") && node.next && (node.next.type === "text" || node.next.type === "interpolation")) {
+ return true;
+ }
+
+ if (!node.parent || node.parent.cssDisplay === "none") {
+ return false;
+ }
+
+ if (isPreLikeNode(node.parent)) {
+ return true;
+ }
+
+ if (!node.next && (node.parent.type === "root" || isScriptLikeTag(node.parent) || !isLastChildTrailingSpaceSensitiveCssDisplay(node.parent.cssDisplay))) {
+ return false;
+ }
+
+ if (node.next && !isPrevTrailingSpaceSensitiveCssDisplay(node.next.cssDisplay)) {
+ return false;
+ }
+
+ return true;
+ }
+
+ function isDanglingSpaceSensitiveNode(node) {
+ return isDanglingSpaceSensitiveCssDisplay(node.cssDisplay) && !isScriptLikeTag(node);
+ }
+
+ function forceNextEmptyLine(node) {
+ return isFrontMatterNode(node) || node.next && node.sourceSpan.end.line + 1 < node.next.sourceSpan.start.line;
+ }
+ /** firstChild leadingSpaces and lastChild trailingSpaces */
+
+
+ function forceBreakContent(node) {
+ return forceBreakChildren(node) || node.type === "element" && node.children.length !== 0 && (["body", "script", "style"].indexOf(node.name) !== -1 || node.children.some(function (child) {
+ return hasNonTextChild(child);
+ })) || node.firstChild && node.firstChild === node.lastChild && hasLeadingLineBreak(node.firstChild) && (!node.lastChild.isTrailingSpaceSensitive || hasTrailingLineBreak(node.lastChild));
+ }
+ /** spaces between children */
+
+
+ function forceBreakChildren(node) {
+ return node.type === "element" && node.children.length !== 0 && (["html", "head", "ul", "ol", "select"].indexOf(node.name) !== -1 || node.cssDisplay.startsWith("table") && node.cssDisplay !== "table-cell");
+ }
+
+ function preferHardlineAsLeadingSpaces(node) {
+ return preferHardlineAsSurroundingSpaces(node) || node.prev && preferHardlineAsTrailingSpaces(node.prev) || hasSurroundingLineBreak(node);
+ }
+
+ function preferHardlineAsTrailingSpaces(node) {
+ return preferHardlineAsSurroundingSpaces(node) || node.type === "element" && node.fullName === "br" || hasSurroundingLineBreak(node);
+ }
+
+ function hasSurroundingLineBreak(node) {
+ return hasLeadingLineBreak(node) && hasTrailingLineBreak(node);
+ }
+
+ function hasLeadingLineBreak(node) {
+ return node.hasLeadingSpaces && (node.prev ? node.prev.sourceSpan.end.line < node.sourceSpan.start.line : node.parent.type === "root" || node.parent.startSourceSpan.end.line < node.sourceSpan.start.line);
+ }
+
+ function hasTrailingLineBreak(node) {
+ return node.hasTrailingSpaces && (node.next ? node.next.sourceSpan.start.line > node.sourceSpan.end.line : node.parent.type === "root" || node.parent.endSourceSpan.start.line > node.sourceSpan.end.line);
+ }
+
+ function preferHardlineAsSurroundingSpaces(node) {
+ switch (node.type) {
+ case "ieConditionalComment":
+ case "comment":
+ case "directive":
+ return true;
+
+ case "element":
+ return ["script", "select"].indexOf(node.name) !== -1;
+ }
+
+ return false;
+ }
+
+ function getLastDescendant(node) {
+ return node.lastChild ? getLastDescendant(node.lastChild) : node;
+ }
+
+ function hasNonTextChild(node) {
+ return node.children && node.children.some(function (child) {
+ return child.type !== "text";
+ });
+ }
+
+ function inferScriptParser(node) {
+ if (node.name === "script" && !node.attrMap.src) {
+ if (!node.attrMap.lang && !node.attrMap.type || node.attrMap.type === "module" || node.attrMap.type === "text/javascript" || node.attrMap.type === "text/babel" || node.attrMap.type === "application/javascript") {
+ return "babel";
+ }
+
+ if (node.attrMap.type === "application/x-typescript" || node.attrMap.lang === "ts" || node.attrMap.lang === "tsx") {
+ return "typescript";
+ }
+
+ if (node.attrMap.type === "text/markdown") {
+ return "markdown";
+ }
+
+ if (node.attrMap.type.endsWith("json") || node.attrMap.type.endsWith("importmap")) {
+ return "json";
+ }
+ }
+
+ if (node.name === "style") {
+ if (!node.attrMap.lang || node.attrMap.lang === "postcss" || node.attrMap.lang === "css") {
+ return "css";
+ }
+
+ if (node.attrMap.lang === "scss") {
+ return "scss";
+ }
+
+ if (node.attrMap.lang === "less") {
+ return "less";
+ }
+ }
+
+ return null;
+ }
+
+ function isBlockLikeCssDisplay(cssDisplay) {
+ return cssDisplay === "block" || cssDisplay === "list-item" || cssDisplay.startsWith("table");
+ }
+
+ function isFirstChildLeadingSpaceSensitiveCssDisplay(cssDisplay) {
+ return !isBlockLikeCssDisplay(cssDisplay) && cssDisplay !== "inline-block";
+ }
+
+ function isLastChildTrailingSpaceSensitiveCssDisplay(cssDisplay) {
+ return !isBlockLikeCssDisplay(cssDisplay) && cssDisplay !== "inline-block";
+ }
+
+ function isPrevTrailingSpaceSensitiveCssDisplay(cssDisplay) {
+ return !isBlockLikeCssDisplay(cssDisplay);
+ }
+
+ function isNextLeadingSpaceSensitiveCssDisplay(cssDisplay) {
+ return !isBlockLikeCssDisplay(cssDisplay);
+ }
+
+ function isDanglingSpaceSensitiveCssDisplay(cssDisplay) {
+ return !isBlockLikeCssDisplay(cssDisplay) && cssDisplay !== "inline-block";
+ }
+
+ function isPreLikeNode(node) {
+ return getNodeCssStyleWhiteSpace(node).startsWith("pre");
+ }
+
+ function countParents(path) {
+ var predicate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
+ return true;
+ };
+ var counter = 0;
+
+ for (var i = path.stack.length - 1; i >= 0; i--) {
+ var value = path.stack[i];
+
+ if (value && _typeof(value) === "object" && !Array.isArray(value) && predicate(value)) {
+ counter++;
+ }
+ }
+
+ return counter;
+ }
+
+ function hasParent(node, fn) {
+ var current = node;
+
+ while (current) {
+ if (fn(current)) {
+ return true;
+ }
+
+ current = current.parent;
+ }
+
+ return false;
+ }
+
+ function getNodeCssStyleDisplay(node, options) {
+ if (node.prev && node.prev.type === "comment") {
+ // <!-- display: block -->
+ var match = node.prev.value.match(/^\s*display:\s*([a-z]+)\s*$/);
+
+ if (match) {
+ return match[1];
+ }
+ }
+
+ var isInSvgForeignObject = false;
+
+ if (node.type === "element" && node.namespace === "svg") {
+ if (hasParent(node, function (parent) {
+ return parent.fullName === "svg:foreignObject";
+ })) {
+ isInSvgForeignObject = true;
+ } else {
+ return node.name === "svg" ? "inline-block" : "block";
+ }
+ }
+
+ switch (options.htmlWhitespaceSensitivity) {
+ case "strict":
+ return "inline";
+
+ case "ignore":
+ return "block";
+
+ default:
+ return node.type === "element" && (!node.namespace || isInSvgForeignObject) && CSS_DISPLAY_TAGS[node.name] || CSS_DISPLAY_DEFAULT;
+ }
+ }
+
+ function getNodeCssStyleWhiteSpace(node) {
+ return node.type === "element" && !node.namespace && CSS_WHITE_SPACE_TAGS[node.name] || CSS_WHITE_SPACE_DEFAULT;
+ }
+
+ function getMinIndentation(text) {
+ var minIndentation = Infinity;
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = text.split("\n")[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var lineText = _step2.value;
+
+ if (lineText.length === 0) {
+ continue;
+ }
+
+ if (/\S/.test(lineText[0])) {
+ return 0;
+ }
+
+ var indentation = lineText.match(/^\s*/)[0].length;
+
+ if (lineText.length === indentation) {
+ continue;
+ }
+
+ if (indentation < minIndentation) {
+ minIndentation = indentation;
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return minIndentation === Infinity ? 0 : minIndentation;
+ }
+
+ function dedentString(text) {
+ var minIndent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : getMinIndentation(text);
+ return minIndent === 0 ? text : text.split("\n").map(function (lineText) {
+ return lineText.slice(minIndent);
+ }).join("\n");
+ }
+
+ function normalizeParts(parts) {
+ var newParts = [];
+ var restParts = parts.slice();
+
+ while (restParts.length !== 0) {
+ var part = restParts.shift();
+
+ if (!part) {
+ continue;
+ }
+
+ if (part.type === "concat") {
+ Array.prototype.unshift.apply(restParts, part.parts);
+ continue;
+ }
+
+ if (newParts.length !== 0 && typeof newParts[newParts.length - 1] === "string" && typeof part === "string") {
+ newParts.push(newParts.pop() + part);
+ continue;
+ }
+
+ newParts.push(part);
+ }
+
+ return newParts;
+ }
+
+ function identity(x) {
+ return x;
+ }
+
+ function shouldNotPrintClosingTag(node, options) {
+ return !node.isSelfClosing && !node.endSourceSpan && (hasPrettierIgnore(node) || shouldPreserveContent(node.parent, options));
+ }
+
+ function countChars(text, char) {
+ var counter = 0;
+
+ for (var i = 0; i < text.length; i++) {
+ if (text[i] === char) {
+ counter++;
+ }
+ }
+
+ return counter;
+ }
+
+ function unescapeQuoteEntities(text) {
+ return text.replace(/&apos;/g, "'").replace(/&quot;/g, '"');
+ }
+
+ var utils$3 = {
+ HTML_ELEMENT_ATTRIBUTES: HTML_ELEMENT_ATTRIBUTES,
+ HTML_TAGS: HTML_TAGS,
+ canHaveInterpolation: canHaveInterpolation,
+ countChars: countChars,
+ countParents: countParents,
+ dedentString: dedentString,
+ forceBreakChildren: forceBreakChildren,
+ forceBreakContent: forceBreakContent,
+ forceNextEmptyLine: forceNextEmptyLine,
+ getLastDescendant: getLastDescendant,
+ getNodeCssStyleDisplay: getNodeCssStyleDisplay,
+ getNodeCssStyleWhiteSpace: getNodeCssStyleWhiteSpace,
+ getPrettierIgnoreAttributeCommentData: getPrettierIgnoreAttributeCommentData,
+ hasPrettierIgnore: hasPrettierIgnore,
+ identity: identity,
+ inferScriptParser: inferScriptParser,
+ isDanglingSpaceSensitiveNode: isDanglingSpaceSensitiveNode,
+ isFrontMatterNode: isFrontMatterNode,
+ isIndentationSensitiveNode: isIndentationSensitiveNode,
+ isLeadingSpaceSensitiveNode: isLeadingSpaceSensitiveNode,
+ isPreLikeNode: isPreLikeNode,
+ isScriptLikeTag: isScriptLikeTag,
+ isTextLikeNode: isTextLikeNode,
+ isTrailingSpaceSensitiveNode: isTrailingSpaceSensitiveNode,
+ isWhitespaceSensitiveNode: isWhitespaceSensitiveNode,
+ normalizeParts: normalizeParts,
+ preferHardlineAsLeadingSpaces: preferHardlineAsLeadingSpaces,
+ preferHardlineAsTrailingSpaces: preferHardlineAsTrailingSpaces,
+ shouldNotPrintClosingTag: shouldNotPrintClosingTag,
+ shouldPreserveContent: shouldPreserveContent,
+ unescapeQuoteEntities: unescapeQuoteEntities
+ };
+
+ var canHaveInterpolation$1 = utils$3.canHaveInterpolation,
+ getNodeCssStyleDisplay$1 = utils$3.getNodeCssStyleDisplay,
+ isDanglingSpaceSensitiveNode$1 = utils$3.isDanglingSpaceSensitiveNode,
+ isIndentationSensitiveNode$1 = utils$3.isIndentationSensitiveNode,
+ isLeadingSpaceSensitiveNode$1 = utils$3.isLeadingSpaceSensitiveNode,
+ isTrailingSpaceSensitiveNode$1 = utils$3.isTrailingSpaceSensitiveNode,
+ isWhitespaceSensitiveNode$1 = utils$3.isWhitespaceSensitiveNode;
+ var PREPROCESS_PIPELINE = [removeIgnorableFirstLf, mergeIeConditonalStartEndCommentIntoElementOpeningTag, mergeCdataIntoText, extractInterpolation, extractWhitespaces, addCssDisplay, addIsSelfClosing, addHasHtmComponentClosingTag, addIsSpaceSensitive, mergeSimpleElementIntoText];
+
+ function preprocess(ast, options) {
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = PREPROCESS_PIPELINE[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var fn = _step.value;
+ ast = fn(ast, options);
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return ast;
+ }
+
+ function removeIgnorableFirstLf(ast
+ /*, options */
+ ) {
+ return ast.map(function (node) {
+ if (node.type === "element" && node.tagDefinition.ignoreFirstLf && node.children.length !== 0 && node.children[0].type === "text" && node.children[0].value[0] === "\n") {
+ var text = node.children[0];
+ return node.clone({
+ children: text.value.length === 1 ? node.children.slice(1) : [].concat(text.clone({
+ value: text.value.slice(1)
+ }), node.children.slice(1))
+ });
+ }
+
+ return node;
+ });
+ }
+
+ function mergeIeConditonalStartEndCommentIntoElementOpeningTag(ast
+ /*, options */
+ ) {
+ /**
+ * <!--[if ...]><!--><target><!--<![endif]-->
+ */
+ var isTarget = function isTarget(node) {
+ return node.type === "element" && node.prev && node.prev.type === "ieConditionalStartComment" && node.prev.sourceSpan.end.offset === node.startSourceSpan.start.offset && node.firstChild && node.firstChild.type === "ieConditionalEndComment" && node.firstChild.sourceSpan.start.offset === node.startSourceSpan.end.offset;
+ };
+
+ return ast.map(function (node) {
+ if (node.children) {
+ var isTargetResults = node.children.map(isTarget);
+
+ if (isTargetResults.some(Boolean)) {
+ var newChildren = [];
+
+ for (var i = 0; i < node.children.length; i++) {
+ var child = node.children[i];
+
+ if (isTargetResults[i + 1]) {
+ // ieConditionalStartComment
+ continue;
+ }
+
+ if (isTargetResults[i]) {
+ var ieConditionalStartComment = child.prev;
+ var ieConditionalEndComment = child.firstChild;
+ var ParseSourceSpan = child.sourceSpan.constructor;
+ var startSourceSpan = new ParseSourceSpan(ieConditionalStartComment.sourceSpan.start, ieConditionalEndComment.sourceSpan.end);
+ var sourceSpan = new ParseSourceSpan(startSourceSpan.start, child.sourceSpan.end);
+ newChildren.push(child.clone({
+ condition: ieConditionalStartComment.condition,
+ sourceSpan: sourceSpan,
+ startSourceSpan: startSourceSpan,
+ children: child.children.slice(1)
+ }));
+ continue;
+ }
+
+ newChildren.push(child);
+ }
+
+ return node.clone({
+ children: newChildren
+ });
+ }
+ }
+
+ return node;
+ });
+ }
+
+ function mergeNodeIntoText(ast, shouldMerge, getValue) {
+ return ast.map(function (node) {
+ if (node.children) {
+ var shouldMergeResults = node.children.map(shouldMerge);
+
+ if (shouldMergeResults.some(Boolean)) {
+ var newChildren = [];
+
+ for (var i = 0; i < node.children.length; i++) {
+ var child = node.children[i];
+
+ if (child.type !== "text" && !shouldMergeResults[i]) {
+ newChildren.push(child);
+ continue;
+ }
+
+ var newChild = child.type === "text" ? child : child.clone({
+ type: "text",
+ value: getValue(child)
+ });
+
+ if (newChildren.length === 0 || newChildren[newChildren.length - 1].type !== "text") {
+ newChildren.push(newChild);
+ continue;
+ }
+
+ var lastChild = newChildren.pop();
+ var ParseSourceSpan = lastChild.sourceSpan.constructor;
+ newChildren.push(lastChild.clone({
+ value: lastChild.value + newChild.value,
+ sourceSpan: new ParseSourceSpan(lastChild.sourceSpan.start, newChild.sourceSpan.end)
+ }));
+ }
+
+ return node.clone({
+ children: newChildren
+ });
+ }
+ }
+
+ return node;
+ });
+ }
+
+ function mergeCdataIntoText(ast
+ /*, options */
+ ) {
+ return mergeNodeIntoText(ast, function (node) {
+ return node.type === "cdata";
+ }, function (node) {
+ return "<![CDATA[".concat(node.value, "]]>");
+ });
+ }
+
+ function mergeSimpleElementIntoText(ast
+ /*, options */
+ ) {
+ var isSimpleElement = function isSimpleElement(node) {
+ return node.type === "element" && node.attrs.length === 0 && node.children.length === 1 && node.firstChild.type === "text" && // \xA0: non-breaking whitespace
+ !/[^\S\xA0]/.test(node.children[0].value) && !node.firstChild.hasLeadingSpaces && !node.firstChild.hasTrailingSpaces && node.isLeadingSpaceSensitive && !node.hasLeadingSpaces && node.isTrailingSpaceSensitive && !node.hasTrailingSpaces && node.prev && node.prev.type === "text" && node.next && node.next.type === "text";
+ };
+
+ return ast.map(function (node) {
+ if (node.children) {
+ var isSimpleElementResults = node.children.map(isSimpleElement);
+
+ if (isSimpleElementResults.some(Boolean)) {
+ var newChildren = [];
+
+ for (var i = 0; i < node.children.length; i++) {
+ var child = node.children[i];
+
+ if (isSimpleElementResults[i]) {
+ var lastChild = newChildren.pop();
+ var nextChild = node.children[++i];
+ var ParseSourceSpan = node.sourceSpan.constructor;
+ var isTrailingSpaceSensitive = nextChild.isTrailingSpaceSensitive,
+ hasTrailingSpaces = nextChild.hasTrailingSpaces;
+ newChildren.push(lastChild.clone({
+ value: lastChild.value + "<".concat(child.rawName, ">") + child.firstChild.value + "</".concat(child.rawName, ">") + nextChild.value,
+ sourceSpan: new ParseSourceSpan(lastChild.sourceSpan.start, nextChild.sourceSpan.end),
+ isTrailingSpaceSensitive: isTrailingSpaceSensitive,
+ hasTrailingSpaces: hasTrailingSpaces
+ }));
+ } else {
+ newChildren.push(child);
+ }
+ }
+
+ return node.clone({
+ children: newChildren
+ });
+ }
+ }
+
+ return node;
+ });
+ }
+
+ function extractInterpolation(ast, options) {
+ if (options.parser === "html") {
+ return ast;
+ }
+
+ var interpolationRegex = /\{\{([\s\S]+?)\}\}/g;
+ return ast.map(function (node) {
+ if (!canHaveInterpolation$1(node)) {
+ return node;
+ }
+
+ var newChildren = [];
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = node.children[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var child = _step2.value;
+
+ if (child.type !== "text") {
+ newChildren.push(child);
+ continue;
+ }
+
+ var ParseSourceSpan = child.sourceSpan.constructor;
+ var startSourceSpan = child.sourceSpan.start;
+ var endSourceSpan = null;
+ var components = child.value.split(interpolationRegex);
+
+ for (var i = 0; i < components.length; i++, startSourceSpan = endSourceSpan) {
+ var value = components[i];
+
+ if (i % 2 === 0) {
+ endSourceSpan = startSourceSpan.moveBy(value.length);
+
+ if (value.length !== 0) {
+ newChildren.push({
+ type: "text",
+ value: value,
+ sourceSpan: new ParseSourceSpan(startSourceSpan, endSourceSpan)
+ });
+ }
+
+ continue;
+ }
+
+ endSourceSpan = startSourceSpan.moveBy(value.length + 4); // `{{` + `}}`
+
+ newChildren.push({
+ type: "interpolation",
+ sourceSpan: new ParseSourceSpan(startSourceSpan, endSourceSpan),
+ children: value.length === 0 ? [] : [{
+ type: "text",
+ value: value,
+ sourceSpan: new ParseSourceSpan(startSourceSpan.moveBy(2), endSourceSpan.moveBy(-2))
+ }]
+ });
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+
+ return node.clone({
+ children: newChildren
+ });
+ });
+ }
+ /**
+ * - add `hasLeadingSpaces` field
+ * - add `hasTrailingSpaces` field
+ * - add `hasDanglingSpaces` field for parent nodes
+ * - add `isWhitespaceSensitive`, `isIndentationSensitive` field for text nodes
+ * - remove insensitive whitespaces
+ */
+
+
+ function extractWhitespaces(ast
+ /*, options*/
+ ) {
+ var TYPE_WHITESPACE = "whitespace";
+ return ast.map(function (node) {
+ if (!node.children) {
+ return node;
+ }
+
+ if (node.children.length === 0 || node.children.length === 1 && node.children[0].type === "text" && node.children[0].value.trim().length === 0) {
+ return node.clone({
+ children: [],
+ hasDanglingSpaces: node.children.length !== 0
+ });
+ }
+
+ var isWhitespaceSensitive = isWhitespaceSensitiveNode$1(node);
+ var isIndentationSensitive = isIndentationSensitiveNode$1(node);
+ return node.clone({
+ isWhitespaceSensitive: isWhitespaceSensitive,
+ isIndentationSensitive: isIndentationSensitive,
+ children: node.children // extract whitespace nodes
+ .reduce(function (newChildren, child) {
+ if (child.type !== "text" || isWhitespaceSensitive) {
+ return newChildren.concat(child);
+ }
+
+ var localChildren = [];
+
+ var _child$value$match = child.value.match(/^(\s*)([\s\S]*?)(\s*)$/),
+ _child$value$match2 = _slicedToArray(_child$value$match, 4),
+ leadingSpaces = _child$value$match2[1],
+ text = _child$value$match2[2],
+ trailingSpaces = _child$value$match2[3];
+
+ if (leadingSpaces) {
+ localChildren.push({
+ type: TYPE_WHITESPACE
+ });
+ }
+
+ var ParseSourceSpan = child.sourceSpan.constructor;
+
+ if (text) {
+ localChildren.push({
+ type: "text",
+ value: text,
+ sourceSpan: new ParseSourceSpan(child.sourceSpan.start.moveBy(leadingSpaces.length), child.sourceSpan.end.moveBy(-trailingSpaces.length))
+ });
+ }
+
+ if (trailingSpaces) {
+ localChildren.push({
+ type: TYPE_WHITESPACE
+ });
+ }
+
+ return newChildren.concat(localChildren);
+ }, []) // set hasLeadingSpaces/hasTrailingSpaces and filter whitespace nodes
+ .reduce(function (newChildren, child, i, children) {
+ if (child.type === TYPE_WHITESPACE) {
+ return newChildren;
+ }
+
+ var hasLeadingSpaces = i !== 0 && children[i - 1].type === TYPE_WHITESPACE;
+ var hasTrailingSpaces = i !== children.length - 1 && children[i + 1].type === TYPE_WHITESPACE;
+ return newChildren.concat(Object.assign({}, child, {
+ hasLeadingSpaces: hasLeadingSpaces,
+ hasTrailingSpaces: hasTrailingSpaces
+ }));
+ }, [])
+ });
+ });
+ }
+
+ function addIsSelfClosing(ast
+ /*, options */
+ ) {
+ return ast.map(function (node) {
+ return Object.assign(node, {
+ isSelfClosing: !node.children || node.type === "element" && (node.tagDefinition.isVoid || // self-closing
+ node.startSourceSpan === node.endSourceSpan)
+ });
+ });
+ }
+
+ function addHasHtmComponentClosingTag(ast, options) {
+ return ast.map(function (node) {
+ return node.type !== "element" ? node : Object.assign(node, {
+ hasHtmComponentClosingTag: node.endSourceSpan && /^<\s*\/\s*\/\s*>$/.test(options.originalText.slice(node.endSourceSpan.start.offset, node.endSourceSpan.end.offset))
+ });
+ });
+ }
+
+ function addCssDisplay(ast, options) {
+ return ast.map(function (node) {
+ return Object.assign(node, {
+ cssDisplay: getNodeCssStyleDisplay$1(node, options)
+ });
+ });
+ }
+ /**
+ * - add `isLeadingSpaceSensitive` field
+ * - add `isTrailingSpaceSensitive` field
+ * - add `isDanglingSpaceSensitive` field for parent nodes
+ */
+
+
+ function addIsSpaceSensitive(ast
+ /*, options */
+ ) {
+ return ast.map(function (node) {
+ if (!node.children) {
+ return node;
+ }
+
+ if (node.children.length === 0) {
+ return node.clone({
+ isDanglingSpaceSensitive: isDanglingSpaceSensitiveNode$1(node)
+ });
+ }
+
+ return node.clone({
+ children: node.children.map(function (child) {
+ return Object.assign({}, child, {
+ isLeadingSpaceSensitive: isLeadingSpaceSensitiveNode$1(child),
+ isTrailingSpaceSensitive: isTrailingSpaceSensitiveNode$1(child)
+ });
+ }).map(function (child, index, children) {
+ return Object.assign({}, child, {
+ isLeadingSpaceSensitive: index === 0 ? child.isLeadingSpaceSensitive : children[index - 1].isTrailingSpaceSensitive && child.isLeadingSpaceSensitive,
+ isTrailingSpaceSensitive: index === children.length - 1 ? child.isTrailingSpaceSensitive : children[index + 1].isLeadingSpaceSensitive && child.isTrailingSpaceSensitive
+ });
+ })
+ });
+ });
+ }
+
+ var preprocess_1 = preprocess;
+
+ function hasPragma$3(text) {
+ return /^\s*<!--\s*@(format|prettier)\s*-->/.test(text);
+ }
+
+ function insertPragma$5(text) {
+ return "<!-- @format -->\n\n" + text.replace(/^\s*\n/, "");
+ }
+
+ var pragma$3 = {
+ hasPragma: hasPragma$3,
+ insertPragma: insertPragma$5
+ };
+
+ var _require$$0$builders$4 = doc.builders,
+ concat$8 = _require$$0$builders$4.concat,
+ group$8 = _require$$0$builders$4.group;
+ /**
+ * v-for="... in ..."
+ * v-for="... of ..."
+ * v-for="(..., ...) in ..."
+ * v-for="(..., ...) of ..."
+ */
+
+ function printVueFor(value, textToDoc) {
+ var _parseVueFor = parseVueFor(value),
+ left = _parseVueFor.left,
+ operator = _parseVueFor.operator,
+ right = _parseVueFor.right;
+
+ return concat$8([group$8(textToDoc("function _(".concat(left, ") {}"), {
+ parser: "babel",
+ __isVueForBindingLeft: true
+ })), " ", operator, " ", textToDoc(right, {
+ parser: "__js_expression"
+ })]);
+ } // modified from https://github.com/vuejs/vue/blob/v2.5.17/src/compiler/parser/index.js#L370-L387
+
+
+ function parseVueFor(value) {
+ var forAliasRE = /([^]*?)\s+(in|of)\s+([^]*)/;
+ var forIteratorRE = /,([^,}\]]*)(?:,([^,}\]]*))?$/;
+ var stripParensRE = /^\(|\)$/g;
+ var inMatch = value.match(forAliasRE);
+
+ if (!inMatch) {
+ return;
+ }
+
+ var res = {};
+ res.for = inMatch[3].trim();
+ var alias = inMatch[1].trim().replace(stripParensRE, "");
+ var iteratorMatch = alias.match(forIteratorRE);
+
+ if (iteratorMatch) {
+ res.alias = alias.replace(forIteratorRE, "");
+ res.iterator1 = iteratorMatch[1].trim();
+
+ if (iteratorMatch[2]) {
+ res.iterator2 = iteratorMatch[2].trim();
+ }
+ } else {
+ res.alias = alias;
+ }
+
+ return {
+ left: "".concat([res.alias, res.iterator1, res.iterator2].filter(Boolean).join(",")),
+ operator: inMatch[2],
+ right: res.for
+ };
+ }
+
+ function printVueSlotScope(value, textToDoc) {
+ return textToDoc("function _(".concat(value, ") {}"), {
+ parser: "babel",
+ __isVueSlotScope: true
+ });
+ }
+
+ function isVueEventBindingExpression(eventBindingValue) {
+ // https://github.com/vuejs/vue/blob/v2.5.17/src/compiler/codegen/events.js#L3-L4
+ // arrow function or anonymous function
+ var fnExpRE = /^([\w$_]+|\([^)]*?\))\s*=>|^function\s*\(/; // simple member expression chain (a, a.b, a['b'], a["b"], a[0], a[b])
+
+ var simplePathRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['[^']*?']|\["[^"]*?"]|\[\d+]|\[[A-Za-z_$][\w$]*])*$/; // https://github.com/vuejs/vue/blob/v2.5.17/src/compiler/helpers.js#L104
+
+ var value = eventBindingValue.trim();
+ return fnExpRE.test(value) || simplePathRE.test(value);
+ }
+
+ var syntaxVue = {
+ isVueEventBindingExpression: isVueEventBindingExpression,
+ printVueFor: printVueFor,
+ printVueSlotScope: printVueSlotScope
+ };
+
+ var parseSrcset = createCommonjsModule(function (module) {
+ /**
+ * Srcset Parser
+ *
+ * By Alex Bell | MIT License
+ *
+ * JS Parser for the string value that appears in markup <img srcset="here">
+ *
+ * @returns Array [{url: _, d: _, w: _, h:_}, ...]
+ *
+ * Based super duper closely on the reference algorithm at:
+ * https://html.spec.whatwg.org/multipage/embedded-content.html#parse-a-srcset-attribute
+ *
+ * Most comments are copied in directly from the spec
+ * (except for comments in parens).
+ */
+ (function (root, factory) {
+ if ( module.exports) {
+ // Node. Does not work with strict CommonJS, but
+ // only CommonJS-like environments that support module.exports,
+ // like Node.
+ module.exports = factory();
+ } else {
+ // Browser globals (root is window)
+ root.parseSrcset = factory();
+ }
+ })(commonjsGlobal, function () {
+ // 1. Let input be the value passed to this algorithm.
+ return function (input, options) {
+ var logger = options && options.logger || console; // UTILITY FUNCTIONS
+ // Manual is faster than RegEx
+ // http://bjorn.tipling.com/state-and-regular-expressions-in-javascript
+ // http://jsperf.com/whitespace-character/5
+
+ function isSpace(c) {
+ return c === " " || // space
+ c === "\t" || // horizontal tab
+ c === "\n" || // new line
+ c === "\f" || // form feed
+ c === "\r"; // carriage return
+ }
+
+ function collectCharacters(regEx) {
+ var chars,
+ match = regEx.exec(input.substring(pos));
+
+ if (match) {
+ chars = match[0];
+ pos += chars.length;
+ return chars;
+ }
+ }
+
+ var inputLength = input.length,
+ // (Don't use \s, to avoid matching non-breaking space)
+ regexLeadingSpaces = /^[ \t\n\r\u000c]+/,
+ regexLeadingCommasOrSpaces = /^[, \t\n\r\u000c]+/,
+ regexLeadingNotSpaces = /^[^ \t\n\r\u000c]+/,
+ regexTrailingCommas = /[,]+$/,
+ regexNonNegativeInteger = /^\d+$/,
+ // ( Positive or negative or unsigned integers or decimals, without or without exponents.
+ // Must include at least one digit.
+ // According to spec tests any decimal point must be followed by a digit.
+ // No leading plus sign is allowed.)
+ // https://html.spec.whatwg.org/multipage/infrastructure.html#valid-floating-point-number
+ regexFloatingPoint = /^-?(?:[0-9]+|[0-9]*\.[0-9]+)(?:[eE][+-]?[0-9]+)?$/,
+ url,
+ descriptors,
+ currentDescriptor,
+ state,
+ c,
+ // 2. Let position be a pointer into input, initially pointing at the start
+ // of the string.
+ pos = 0,
+ // 3. Let candidates be an initially empty source set.
+ candidates = []; // 4. Splitting loop: Collect a sequence of characters that are space
+ // characters or U+002C COMMA characters. If any U+002C COMMA characters
+ // were collected, that is a parse error.
+
+ while (true) {
+ collectCharacters(regexLeadingCommasOrSpaces); // 5. If position is past the end of input, return candidates and abort these steps.
+
+ if (pos >= inputLength) {
+ return candidates; // (we're done, this is the sole return path)
+ } // 6. Collect a sequence of characters that are not space characters,
+ // and let that be url.
+
+
+ url = collectCharacters(regexLeadingNotSpaces); // 7. Let descriptors be a new empty list.
+
+ descriptors = []; // 8. If url ends with a U+002C COMMA character (,), follow these substeps:
+ // (1). Remove all trailing U+002C COMMA characters from url. If this removed
+ // more than one character, that is a parse error.
+
+ if (url.slice(-1) === ",") {
+ url = url.replace(regexTrailingCommas, ""); // (Jump ahead to step 9 to skip tokenization and just push the candidate).
+
+ parseDescriptors(); // Otherwise, follow these substeps:
+ } else {
+ tokenize();
+ } // (close else of step 8)
+ // 16. Return to the step labeled splitting loop.
+
+ } // (Close of big while loop.)
+
+ /**
+ * Tokenizes descriptor properties prior to parsing
+ * Returns undefined.
+ */
+
+
+ function tokenize() {
+ // 8.1. Descriptor tokeniser: Skip whitespace
+ collectCharacters(regexLeadingSpaces); // 8.2. Let current descriptor be the empty string.
+
+ currentDescriptor = ""; // 8.3. Let state be in descriptor.
+
+ state = "in descriptor";
+
+ while (true) {
+ // 8.4. Let c be the character at position.
+ c = input.charAt(pos); // Do the following depending on the value of state.
+ // For the purpose of this step, "EOF" is a special character representing
+ // that position is past the end of input.
+ // In descriptor
+
+ if (state === "in descriptor") {
+ // Do the following, depending on the value of c:
+ // Space character
+ // If current descriptor is not empty, append current descriptor to
+ // descriptors and let current descriptor be the empty string.
+ // Set state to after descriptor.
+ if (isSpace(c)) {
+ if (currentDescriptor) {
+ descriptors.push(currentDescriptor);
+ currentDescriptor = "";
+ state = "after descriptor";
+ } // U+002C COMMA (,)
+ // Advance position to the next character in input. If current descriptor
+ // is not empty, append current descriptor to descriptors. Jump to the step
+ // labeled descriptor parser.
+
+ } else if (c === ",") {
+ pos += 1;
+
+ if (currentDescriptor) {
+ descriptors.push(currentDescriptor);
+ }
+
+ parseDescriptors();
+ return; // U+0028 LEFT PARENTHESIS (()
+ // Append c to current descriptor. Set state to in parens.
+ } else if (c === "(") {
+ currentDescriptor = currentDescriptor + c;
+ state = "in parens"; // EOF
+ // If current descriptor is not empty, append current descriptor to
+ // descriptors. Jump to the step labeled descriptor parser.
+ } else if (c === "") {
+ if (currentDescriptor) {
+ descriptors.push(currentDescriptor);
+ }
+
+ parseDescriptors();
+ return; // Anything else
+ // Append c to current descriptor.
+ } else {
+ currentDescriptor = currentDescriptor + c;
+ } // (end "in descriptor"
+ // In parens
+
+ } else if (state === "in parens") {
+ // U+0029 RIGHT PARENTHESIS ())
+ // Append c to current descriptor. Set state to in descriptor.
+ if (c === ")") {
+ currentDescriptor = currentDescriptor + c;
+ state = "in descriptor"; // EOF
+ // Append current descriptor to descriptors. Jump to the step labeled
+ // descriptor parser.
+ } else if (c === "") {
+ descriptors.push(currentDescriptor);
+ parseDescriptors();
+ return; // Anything else
+ // Append c to current descriptor.
+ } else {
+ currentDescriptor = currentDescriptor + c;
+ } // After descriptor
+
+ } else if (state === "after descriptor") {
+ // Do the following, depending on the value of c:
+ // Space character: Stay in this state.
+ if (isSpace(c)) ; else if (c === "") {
+ parseDescriptors();
+ return; // Anything else
+ // Set state to in descriptor. Set position to the previous character in input.
+ } else {
+ state = "in descriptor";
+ pos -= 1;
+ }
+ } // Advance position to the next character in input.
+
+
+ pos += 1; // Repeat this step.
+ } // (close while true loop)
+
+ }
+ /**
+ * Adds descriptor properties to a candidate, pushes to the candidates array
+ * @return undefined
+ */
+ // Declared outside of the while loop so that it's only created once.
+
+
+ function parseDescriptors() {
+ // 9. Descriptor parser: Let error be no.
+ var pError = false,
+ // 10. Let width be absent.
+ // 11. Let density be absent.
+ // 12. Let future-compat-h be absent. (We're implementing it now as h)
+ w,
+ d,
+ h,
+ i,
+ candidate = {},
+ desc,
+ lastChar,
+ value,
+ intVal,
+ floatVal; // 13. For each descriptor in descriptors, run the appropriate set of steps
+ // from the following list:
+
+ for (i = 0; i < descriptors.length; i++) {
+ desc = descriptors[i];
+ lastChar = desc[desc.length - 1];
+ value = desc.substring(0, desc.length - 1);
+ intVal = parseInt(value, 10);
+ floatVal = parseFloat(value); // If the descriptor consists of a valid non-negative integer followed by
+ // a U+0077 LATIN SMALL LETTER W character
+
+ if (regexNonNegativeInteger.test(value) && lastChar === "w") {
+ // If width and density are not both absent, then let error be yes.
+ if (w || d) {
+ pError = true;
+ } // Apply the rules for parsing non-negative integers to the descriptor.
+ // If the result is zero, let error be yes.
+ // Otherwise, let width be the result.
+
+
+ if (intVal === 0) {
+ pError = true;
+ } else {
+ w = intVal;
+ } // If the descriptor consists of a valid floating-point number followed by
+ // a U+0078 LATIN SMALL LETTER X character
+
+ } else if (regexFloatingPoint.test(value) && lastChar === "x") {
+ // If width, density and future-compat-h are not all absent, then let error
+ // be yes.
+ if (w || d || h) {
+ pError = true;
+ } // Apply the rules for parsing floating-point number values to the descriptor.
+ // If the result is less than zero, let error be yes. Otherwise, let density
+ // be the result.
+
+
+ if (floatVal < 0) {
+ pError = true;
+ } else {
+ d = floatVal;
+ } // If the descriptor consists of a valid non-negative integer followed by
+ // a U+0068 LATIN SMALL LETTER H character
+
+ } else if (regexNonNegativeInteger.test(value) && lastChar === "h") {
+ // If height and density are not both absent, then let error be yes.
+ if (h || d) {
+ pError = true;
+ } // Apply the rules for parsing non-negative integers to the descriptor.
+ // If the result is zero, let error be yes. Otherwise, let future-compat-h
+ // be the result.
+
+
+ if (intVal === 0) {
+ pError = true;
+ } else {
+ h = intVal;
+ } // Anything else, Let error be yes.
+
+ } else {
+ pError = true;
+ }
+ } // (close step 13 for loop)
+ // 15. If error is still no, then append a new image source to candidates whose
+ // URL is url, associated with a width width if not absent and a pixel
+ // density density if not absent. Otherwise, there is a parse error.
+
+
+ if (!pError) {
+ candidate.url = url;
+
+ if (w) {
+ candidate.w = w;
+ }
+
+ if (d) {
+ candidate.d = d;
+ }
+
+ if (h) {
+ candidate.h = h;
+ }
+
+ candidates.push(candidate);
+ } else if (logger && logger.error) {
+ logger.error("Invalid srcset descriptor found in '" + input + "' at '" + desc + "'.");
+ }
+ } // (close parseDescriptors fn)
+
+ };
+ });
+ });
+
+ var _require$$0$builders$5 = doc.builders,
+ concat$9 = _require$$0$builders$5.concat,
+ ifBreak$4 = _require$$0$builders$5.ifBreak,
+ join$5 = _require$$0$builders$5.join,
+ line$4 = _require$$0$builders$5.line;
+
+ function printImgSrcset(value) {
+ var srcset = parseSrcset(value, {
+ logger: {
+ error: function error(message) {
+ throw new Error(message);
+ }
+ }
+ });
+ var hasW = srcset.some(function (src) {
+ return src.w;
+ });
+ var hasH = srcset.some(function (src) {
+ return src.h;
+ });
+ var hasX = srcset.some(function (src) {
+ return src.d;
+ });
+
+ if (hasW + hasH + hasX !== 1) {
+ throw new Error("Mixed descriptor in srcset is not supported");
+ }
+
+ var key = hasW ? "w" : hasH ? "h" : "d";
+ var unit = hasW ? "w" : hasH ? "h" : "x";
+
+ var getMax = function getMax(values) {
+ return Math.max.apply(Math, values);
+ };
+
+ var urls = srcset.map(function (src) {
+ return src.url;
+ });
+ var maxUrlLength = getMax(urls.map(function (url) {
+ return url.length;
+ }));
+ var descriptors = srcset.map(function (src) {
+ return src[key];
+ }).map(function (descriptor) {
+ return descriptor ? descriptor.toString() : "";
+ });
+ var descriptorLeftLengths = descriptors.map(function (descriptor) {
+ var index = descriptor.indexOf(".");
+ return index === -1 ? descriptor.length : index;
+ });
+ var maxDescriptorLeftLength = getMax(descriptorLeftLengths);
+ return join$5(concat$9([",", line$4]), urls.map(function (url, index) {
+ var parts = [url];
+ var descriptor = descriptors[index];
+
+ if (descriptor) {
+ var urlPadding = maxUrlLength - url.length + 1;
+ var descriptorPadding = maxDescriptorLeftLength - descriptorLeftLengths[index];
+ var alignment = " ".repeat(urlPadding + descriptorPadding);
+ parts.push(ifBreak$4(alignment, " "), descriptor + unit);
+ }
+
+ return concat$9(parts);
+ }));
+ }
+
+ var syntaxAttribute = {
+ printImgSrcset: printImgSrcset
+ };
+
+ var builders = doc.builders,
+ _require$$0$utils = doc.utils,
+ stripTrailingHardline$1 = _require$$0$utils.stripTrailingHardline,
+ mapDoc$4 = _require$$0$utils.mapDoc;
+ var breakParent$2 = builders.breakParent,
+ dedentToRoot$1 = builders.dedentToRoot,
+ fill$3 = builders.fill,
+ group$9 = builders.group,
+ hardline$7 = builders.hardline,
+ ifBreak$5 = builders.ifBreak,
+ indent$5 = builders.indent,
+ join$6 = builders.join,
+ line$5 = builders.line,
+ literalline$2 = builders.literalline,
+ markAsRoot$2 = builders.markAsRoot,
+ softline$4 = builders.softline;
+ var countChars$1 = utils$3.countChars,
+ countParents$1 = utils$3.countParents,
+ dedentString$1 = utils$3.dedentString,
+ forceBreakChildren$1 = utils$3.forceBreakChildren,
+ forceBreakContent$1 = utils$3.forceBreakContent,
+ forceNextEmptyLine$1 = utils$3.forceNextEmptyLine,
+ getLastDescendant$1 = utils$3.getLastDescendant,
+ getPrettierIgnoreAttributeCommentData$1 = utils$3.getPrettierIgnoreAttributeCommentData,
+ hasPrettierIgnore$1 = utils$3.hasPrettierIgnore,
+ inferScriptParser$1 = utils$3.inferScriptParser,
+ isScriptLikeTag$1 = utils$3.isScriptLikeTag,
+ isTextLikeNode$1 = utils$3.isTextLikeNode,
+ normalizeParts$1 = utils$3.normalizeParts,
+ preferHardlineAsLeadingSpaces$1 = utils$3.preferHardlineAsLeadingSpaces,
+ shouldNotPrintClosingTag$1 = utils$3.shouldNotPrintClosingTag,
+ shouldPreserveContent$1 = utils$3.shouldPreserveContent,
+ unescapeQuoteEntities$1 = utils$3.unescapeQuoteEntities;
+ var replaceEndOfLineWith$1 = util.replaceEndOfLineWith;
+ var insertPragma$6 = pragma$3.insertPragma;
+ var printVueFor$1 = syntaxVue.printVueFor,
+ printVueSlotScope$1 = syntaxVue.printVueSlotScope,
+ isVueEventBindingExpression$1 = syntaxVue.isVueEventBindingExpression;
+ var printImgSrcset$1 = syntaxAttribute.printImgSrcset;
+
+ function concat$a(parts) {
+ var newParts = normalizeParts$1(parts);
+ return newParts.length === 0 ? "" : newParts.length === 1 ? newParts[0] : builders.concat(newParts);
+ }
+
+ function embed$2(path, print, textToDoc, options) {
+ var node = path.getValue();
+
+ switch (node.type) {
+ case "text":
+ {
+ if (isScriptLikeTag$1(node.parent)) {
+ var parser = inferScriptParser$1(node.parent);
+
+ if (parser) {
+ var value = parser === "markdown" ? dedentString$1(node.value.replace(/^[^\S\n]*?\n/, "")) : node.value;
+ return builders.concat([concat$a([breakParent$2, printOpeningTagPrefix(node, options), stripTrailingHardline$1(textToDoc(value, {
+ parser: parser
+ })), printClosingTagSuffix(node, options)])]);
+ }
+ } else if (node.parent.type === "interpolation") {
+ return concat$a([indent$5(concat$a([line$5, textToDoc(node.value, Object.assign({
+ __isInHtmlInterpolation: true // to avoid unexpected `}}`
+
+ }, options.parser === "angular" ? {
+ parser: "__ng_interpolation",
+ trailingComma: "none"
+ } : options.parser === "vue" ? {
+ parser: "__vue_expression"
+ } : {
+ parser: "__js_expression"
+ }))])), node.parent.next && needsToBorrowPrevClosingTagEndMarker(node.parent.next) ? " " : line$5]);
+ }
+
+ break;
+ }
+
+ case "attribute":
+ {
+ if (!node.value) {
+ break;
+ } // lit-html: html`<my-element obj=${obj}></my-element>`
+
+
+ if (/^PRETTIER_HTML_PLACEHOLDER_\d+_\d+_IN_JS$/.test(options.originalText.slice(node.valueSpan.start.offset, node.valueSpan.end.offset))) {
+ return concat$a([node.rawName, "=", node.value]);
+ } // lwc: html`<my-element data-for={value}></my-element>`
+
+
+ if (options.parser === "lwc") {
+ var interpolationRegex = /^\{[\s\S]*\}$/;
+
+ if (interpolationRegex.test(options.originalText.slice(node.valueSpan.start.offset, node.valueSpan.end.offset))) {
+ return concat$a([node.rawName, "=", node.value]);
+ }
+ }
+
+ var embeddedAttributeValueDoc = printEmbeddedAttributeValue(node, function (code, opts) {
+ return (// strictly prefer single quote to avoid unnecessary html entity escape
+ textToDoc(code, Object.assign({
+ __isInHtmlAttribute: true
+ }, opts))
+ );
+ }, options);
+
+ if (embeddedAttributeValueDoc) {
+ return concat$a([node.rawName, '="', group$9(mapDoc$4(embeddedAttributeValueDoc, function (doc) {
+ return typeof doc === "string" ? doc.replace(/"/g, "&quot;") : doc;
+ })), '"']);
+ }
+
+ break;
+ }
+
+ case "yaml":
+ return markAsRoot$2(concat$a(["---", hardline$7, node.value.trim().length === 0 ? "" : textToDoc(node.value, {
+ parser: "yaml"
+ }), "---"]));
+ }
+ }
+
+ function genericPrint$2(path, options, print) {
+ var node = path.getValue();
+
+ switch (node.type) {
+ case "root":
+ // use original concat to not break stripTrailingHardline
+ return builders.concat([group$9(printChildren$1(path, options, print)), hardline$7]);
+
+ case "element":
+ case "ieConditionalComment":
+ {
+ /**
+ * do not break:
+ *
+ * <div>{{
+ * ~
+ * interpolation
+ * }}</div>
+ * ~
+ *
+ * exception: break if the opening tag breaks
+ *
+ * <div
+ * long
+ * ~
+ * >{{
+ * interpolation
+ * }}</div
+ * ~
+ * >
+ */
+ var shouldHugContent = node.children.length === 1 && node.firstChild.type === "interpolation" && node.firstChild.isLeadingSpaceSensitive && !node.firstChild.hasLeadingSpaces && node.lastChild.isTrailingSpaceSensitive && !node.lastChild.hasTrailingSpaces;
+ var attrGroupId = Symbol("element-attr-group-id");
+ return concat$a([group$9(concat$a([group$9(printOpeningTag(path, options, print), {
+ id: attrGroupId
+ }), node.children.length === 0 ? node.hasDanglingSpaces && node.isDanglingSpaceSensitive ? line$5 : "" : concat$a([forceBreakContent$1(node) ? breakParent$2 : "", function (childrenDoc) {
+ return shouldHugContent ? ifBreak$5(indent$5(childrenDoc), childrenDoc, {
+ groupId: attrGroupId
+ }) : isScriptLikeTag$1(node) && node.parent.type === "root" && options.parser === "vue" && !options.vueIndentScriptAndStyle ? childrenDoc : indent$5(childrenDoc);
+ }(concat$a([shouldHugContent ? ifBreak$5(softline$4, "", {
+ groupId: attrGroupId
+ }) : node.firstChild.hasLeadingSpaces && node.firstChild.isLeadingSpaceSensitive ? line$5 : node.firstChild.type === "text" && node.isWhitespaceSensitive && node.isIndentationSensitive ? dedentToRoot$1(softline$4) : softline$4, printChildren$1(path, options, print)])), (node.next ? needsToBorrowPrevClosingTagEndMarker(node.next) : needsToBorrowLastChildClosingTagEndMarker(node.parent)) ? node.lastChild.hasTrailingSpaces && node.lastChild.isTrailingSpaceSensitive ? " " : "" : shouldHugContent ? ifBreak$5(softline$4, "", {
+ groupId: attrGroupId
+ }) : node.lastChild.hasTrailingSpaces && node.lastChild.isTrailingSpaceSensitive ? line$5 : (node.lastChild.type === "comment" || node.lastChild.type === "text" && node.isWhitespaceSensitive && node.isIndentationSensitive) && new RegExp("\\n\\s{".concat(options.tabWidth * countParents$1(path, function (n) {
+ return n.parent && n.parent.type !== "root";
+ }), "}$")).test(node.lastChild.value) ?
+ /**
+ * <div>
+ * <pre>
+ * something
+ * </pre>
+ * ~
+ * </div>
+ */
+ "" : softline$4])])), printClosingTag(node, options)]);
+ }
+
+ case "ieConditionalStartComment":
+ case "ieConditionalEndComment":
+ return concat$a([printOpeningTagStart(node), printClosingTagEnd(node)]);
+
+ case "interpolation":
+ return concat$a([printOpeningTagStart(node, options), concat$a(path.map(print, "children")), printClosingTagEnd(node, options)]);
+
+ case "text":
+ {
+ if (node.parent.type === "interpolation") {
+ // replace the trailing literalline with hardline for better readability
+ var trailingNewlineRegex = /\n[^\S\n]*?$/;
+ var hasTrailingNewline = trailingNewlineRegex.test(node.value);
+ var value = hasTrailingNewline ? node.value.replace(trailingNewlineRegex, "") : node.value;
+ return concat$a([concat$a(replaceEndOfLineWith$1(value, literalline$2)), hasTrailingNewline ? hardline$7 : ""]);
+ }
+
+ return fill$3(normalizeParts$1([].concat(printOpeningTagPrefix(node, options), getTextValueParts(node), printClosingTagSuffix(node, options))));
+ }
+
+ case "docType":
+ return concat$a([group$9(concat$a([printOpeningTagStart(node, options), " ", node.value.replace(/^html\b/i, "html").replace(/\s+/g, " ")])), printClosingTagEnd(node, options)]);
+
+ case "comment":
+ {
+ return concat$a([printOpeningTagPrefix(node, options), concat$a(replaceEndOfLineWith$1(options.originalText.slice(options.locStart(node), options.locEnd(node)), literalline$2)), printClosingTagSuffix(node, options)]);
+ }
+
+ case "attribute":
+ {
+ if (node.value === null) {
+ return node.rawName;
+ }
+
+ var _value = unescapeQuoteEntities$1(node.value);
+
+ var singleQuoteCount = countChars$1(_value, "'");
+ var doubleQuoteCount = countChars$1(_value, '"');
+ var quote = singleQuoteCount < doubleQuoteCount ? "'" : '"';
+ return concat$a([node.rawName, concat$a(["=", quote, concat$a(replaceEndOfLineWith$1(quote === '"' ? _value.replace(/"/g, "&quot;") : _value.replace(/'/g, "&apos;"), literalline$2)), quote])]);
+ }
+
+ case "yaml":
+ case "toml":
+ return concat$a(replaceEndOfLineWith$1(node.raw, literalline$2));
+
+ default:
+ throw new Error("Unexpected node type ".concat(node.type));
+ }
+ }
+
+ function printChildren$1(path, options, print) {
+ var node = path.getValue();
+
+ if (forceBreakChildren$1(node)) {
+ return concat$a([breakParent$2, concat$a(path.map(function (childPath) {
+ var childNode = childPath.getValue();
+ var prevBetweenLine = !childNode.prev ? "" : printBetweenLine(childNode.prev, childNode);
+ return concat$a([!prevBetweenLine ? "" : concat$a([prevBetweenLine, forceNextEmptyLine$1(childNode.prev) ? hardline$7 : ""]), printChild(childPath)]);
+ }, "children"))]);
+ }
+
+ var groupIds = node.children.map(function () {
+ return Symbol("");
+ });
+ return concat$a(path.map(function (childPath, childIndex) {
+ var childNode = childPath.getValue();
+
+ if (isTextLikeNode$1(childNode)) {
+ if (childNode.prev && isTextLikeNode$1(childNode.prev)) {
+ var _prevBetweenLine = printBetweenLine(childNode.prev, childNode);
+
+ if (_prevBetweenLine) {
+ if (forceNextEmptyLine$1(childNode.prev)) {
+ return concat$a([hardline$7, hardline$7, printChild(childPath)]);
+ }
+
+ return concat$a([_prevBetweenLine, printChild(childPath)]);
+ }
+ }
+
+ return printChild(childPath);
+ }
+
+ var prevParts = [];
+ var leadingParts = [];
+ var trailingParts = [];
+ var nextParts = [];
+ var prevBetweenLine = childNode.prev ? printBetweenLine(childNode.prev, childNode) : "";
+ var nextBetweenLine = childNode.next ? printBetweenLine(childNode, childNode.next) : "";
+
+ if (prevBetweenLine) {
+ if (forceNextEmptyLine$1(childNode.prev)) {
+ prevParts.push(hardline$7, hardline$7);
+ } else if (prevBetweenLine === hardline$7) {
+ prevParts.push(hardline$7);
+ } else {
+ if (isTextLikeNode$1(childNode.prev)) {
+ leadingParts.push(prevBetweenLine);
+ } else {
+ leadingParts.push(ifBreak$5("", softline$4, {
+ groupId: groupIds[childIndex - 1]
+ }));
+ }
+ }
+ }
+
+ if (nextBetweenLine) {
+ if (forceNextEmptyLine$1(childNode)) {
+ if (isTextLikeNode$1(childNode.next)) {
+ nextParts.push(hardline$7, hardline$7);
+ }
+ } else if (nextBetweenLine === hardline$7) {
+ if (isTextLikeNode$1(childNode.next)) {
+ nextParts.push(hardline$7);
+ }
+ } else {
+ trailingParts.push(nextBetweenLine);
+ }
+ }
+
+ return concat$a([].concat(prevParts, group$9(concat$a([concat$a(leadingParts), group$9(concat$a([printChild(childPath), concat$a(trailingParts)]), {
+ id: groupIds[childIndex]
+ })])), nextParts));
+ }, "children"));
+
+ function printChild(childPath) {
+ var child = childPath.getValue();
+
+ if (hasPrettierIgnore$1(child)) {
+ return concat$a([].concat(printOpeningTagPrefix(child, options), replaceEndOfLineWith$1(options.originalText.slice(options.locStart(child) + (child.prev && needsToBorrowNextOpeningTagStartMarker(child.prev) ? printOpeningTagStartMarker(child).length : 0), options.locEnd(child) - (child.next && needsToBorrowPrevClosingTagEndMarker(child.next) ? printClosingTagEndMarker(child, options).length : 0)), literalline$2), printClosingTagSuffix(child, options)));
+ }
+
+ if (shouldPreserveContent$1(child, options)) {
+ return concat$a([].concat(printOpeningTagPrefix(child, options), group$9(printOpeningTag(childPath, options, print)), replaceEndOfLineWith$1(options.originalText.slice(child.startSourceSpan.end.offset + (child.firstChild && needsToBorrowParentOpeningTagEndMarker(child.firstChild) ? -printOpeningTagEndMarker(child).length : 0), child.endSourceSpan.start.offset + (child.lastChild && needsToBorrowParentClosingTagStartMarker(child.lastChild) ? printClosingTagStartMarker(child, options).length : needsToBorrowLastChildClosingTagEndMarker(child) ? -printClosingTagEndMarker(child.lastChild, options).length : 0)), literalline$2), printClosingTag(child, options), printClosingTagSuffix(child, options)));
+ }
+
+ return print(childPath);
+ }
+
+ function printBetweenLine(prevNode, nextNode) {
+ return isTextLikeNode$1(prevNode) && isTextLikeNode$1(nextNode) ? prevNode.isTrailingSpaceSensitive ? prevNode.hasTrailingSpaces ? preferHardlineAsLeadingSpaces$1(nextNode) ? hardline$7 : line$5 : "" : preferHardlineAsLeadingSpaces$1(nextNode) ? hardline$7 : softline$4 : needsToBorrowNextOpeningTagStartMarker(prevNode) && (
+ /**
+ * 123<a
+ * ~
+ * ><b>
+ */
+ nextNode.firstChild ||
+ /**
+ * 123<!--
+ * ~
+ * -->
+ */
+ nextNode.isSelfClosing ||
+ /**
+ * 123<span
+ * ~
+ * attr
+ */
+ nextNode.type === "element" && nextNode.attrs.length !== 0) ||
+ /**
+ * <img
+ * src="long"
+ * ~
+ * />123
+ */
+ prevNode.type === "element" && prevNode.isSelfClosing && needsToBorrowPrevClosingTagEndMarker(nextNode) ? "" : !nextNode.isLeadingSpaceSensitive || preferHardlineAsLeadingSpaces$1(nextNode) ||
+ /**
+ * Want to write us a letter? Use our<a
+ * ><b><a>mailing address</a></b></a
+ * ~
+ * >.
+ */
+ needsToBorrowPrevClosingTagEndMarker(nextNode) && prevNode.lastChild && needsToBorrowParentClosingTagStartMarker(prevNode.lastChild) && prevNode.lastChild.lastChild && needsToBorrowParentClosingTagStartMarker(prevNode.lastChild.lastChild) ? hardline$7 : nextNode.hasLeadingSpaces ? line$5 : softline$4;
+ }
+ }
+
+ function printOpeningTag(path, options, print) {
+ var node = path.getValue();
+ var forceNotToBreakAttrContent = node.type === "element" && node.fullName === "script" && node.attrs.length === 1 && node.attrs[0].fullName === "src" && node.children.length === 0;
+ return concat$a([printOpeningTagStart(node, options), !node.attrs || node.attrs.length === 0 ? node.isSelfClosing ?
+ /**
+ * <br />
+ * ^
+ */
+ " " : "" : concat$a([indent$5(concat$a([forceNotToBreakAttrContent ? " " : line$5, join$6(line$5, function (ignoreAttributeData) {
+ var hasPrettierIgnoreAttribute = typeof ignoreAttributeData === "boolean" ? function () {
+ return ignoreAttributeData;
+ } : Array.isArray(ignoreAttributeData) ? function (attr) {
+ return ignoreAttributeData.indexOf(attr.rawName) !== -1;
+ } : function () {
+ return false;
+ };
+ return path.map(function (attrPath) {
+ var attr = attrPath.getValue();
+ return hasPrettierIgnoreAttribute(attr) ? concat$a(replaceEndOfLineWith$1(options.originalText.slice(options.locStart(attr), options.locEnd(attr)), literalline$2)) : print(attrPath);
+ }, "attrs");
+ }(node.prev && node.prev.type === "comment" && getPrettierIgnoreAttributeCommentData$1(node.prev.value)))])),
+ /**
+ * 123<a
+ * attr
+ * ~
+ * >456
+ */
+ node.firstChild && needsToBorrowParentOpeningTagEndMarker(node.firstChild) ||
+ /**
+ * <span
+ * >123<meta
+ * ~
+ * /></span>
+ */
+ node.isSelfClosing && needsToBorrowLastChildClosingTagEndMarker(node.parent) ? "" : node.isSelfClosing ? forceNotToBreakAttrContent ? " " : line$5 : forceNotToBreakAttrContent ? "" : softline$4]), node.isSelfClosing ? "" : printOpeningTagEnd(node)]);
+ }
+
+ function printOpeningTagStart(node, options) {
+ return node.prev && needsToBorrowNextOpeningTagStartMarker(node.prev) ? "" : concat$a([printOpeningTagPrefix(node, options), printOpeningTagStartMarker(node)]);
+ }
+
+ function printOpeningTagEnd(node) {
+ return node.firstChild && needsToBorrowParentOpeningTagEndMarker(node.firstChild) ? "" : printOpeningTagEndMarker(node);
+ }
+
+ function printClosingTag(node, options) {
+ return concat$a([node.isSelfClosing ? "" : printClosingTagStart(node, options), printClosingTagEnd(node, options)]);
+ }
+
+ function printClosingTagStart(node, options) {
+ return node.lastChild && needsToBorrowParentClosingTagStartMarker(node.lastChild) ? "" : concat$a([printClosingTagPrefix(node, options), printClosingTagStartMarker(node, options)]);
+ }
+
+ function printClosingTagEnd(node, options) {
+ return (node.next ? needsToBorrowPrevClosingTagEndMarker(node.next) : needsToBorrowLastChildClosingTagEndMarker(node.parent)) ? "" : concat$a([printClosingTagEndMarker(node, options), printClosingTagSuffix(node, options)]);
+ }
+
+ function needsToBorrowNextOpeningTagStartMarker(node) {
+ /**
+ * 123<p
+ * ^^
+ * >
+ */
+ return node.next && !isTextLikeNode$1(node.next) && isTextLikeNode$1(node) && node.isTrailingSpaceSensitive && !node.hasTrailingSpaces;
+ }
+
+ function needsToBorrowParentOpeningTagEndMarker(node) {
+ /**
+ * <p
+ * >123
+ * ^
+ *
+ * <p
+ * ><a
+ * ^
+ */
+ return !node.prev && node.isLeadingSpaceSensitive && !node.hasLeadingSpaces;
+ }
+
+ function needsToBorrowPrevClosingTagEndMarker(node) {
+ /**
+ * <p></p
+ * >123
+ * ^
+ *
+ * <p></p
+ * ><a
+ * ^
+ */
+ return node.prev && !isTextLikeNode$1(node.prev) && node.isLeadingSpaceSensitive && !node.hasLeadingSpaces;
+ }
+
+ function needsToBorrowLastChildClosingTagEndMarker(node) {
+ /**
+ * <p
+ * ><a></a
+ * ></p
+ * ^
+ * >
+ */
+ return node.lastChild && node.lastChild.isTrailingSpaceSensitive && !node.lastChild.hasTrailingSpaces && !isTextLikeNode$1(getLastDescendant$1(node.lastChild));
+ }
+
+ function needsToBorrowParentClosingTagStartMarker(node) {
+ /**
+ * <p>
+ * 123</p
+ * ^^^
+ * >
+ *
+ * 123</b
+ * ></a
+ * ^^^
+ * >
+ */
+ return !node.next && !node.hasTrailingSpaces && node.isTrailingSpaceSensitive && isTextLikeNode$1(getLastDescendant$1(node));
+ }
+
+ function printOpeningTagPrefix(node, options) {
+ return needsToBorrowParentOpeningTagEndMarker(node) ? printOpeningTagEndMarker(node.parent) : needsToBorrowPrevClosingTagEndMarker(node) ? printClosingTagEndMarker(node.prev, options) : "";
+ }
+
+ function printClosingTagPrefix(node, options) {
+ return needsToBorrowLastChildClosingTagEndMarker(node) ? printClosingTagEndMarker(node.lastChild, options) : "";
+ }
+
+ function printClosingTagSuffix(node, options) {
+ return needsToBorrowParentClosingTagStartMarker(node) ? printClosingTagStartMarker(node.parent, options) : needsToBorrowNextOpeningTagStartMarker(node) ? printOpeningTagStartMarker(node.next) : "";
+ }
+
+ function printOpeningTagStartMarker(node) {
+ switch (node.type) {
+ case "ieConditionalComment":
+ case "ieConditionalStartComment":
+ return "<!--[if ".concat(node.condition);
+
+ case "ieConditionalEndComment":
+ return "<!--<!";
+
+ case "interpolation":
+ return "{{";
+
+ case "docType":
+ return "<!DOCTYPE";
+
+ case "element":
+ if (node.condition) {
+ return "<!--[if ".concat(node.condition, "]><!--><").concat(node.rawName);
+ }
+
+ // fall through
+
+ default:
+ return "<".concat(node.rawName);
+ }
+ }
+
+ function printOpeningTagEndMarker(node) {
+ assert(!node.isSelfClosing);
+
+ switch (node.type) {
+ case "ieConditionalComment":
+ return "]>";
+
+ case "element":
+ if (node.condition) {
+ return "><!--<![endif]-->";
+ }
+
+ // fall through
+
+ default:
+ return ">";
+ }
+ }
+
+ function printClosingTagStartMarker(node, options) {
+ assert(!node.isSelfClosing);
+
+ if (shouldNotPrintClosingTag$1(node, options)) {
+ return "";
+ }
+
+ switch (node.type) {
+ case "ieConditionalComment":
+ return "<!";
+
+ case "element":
+ if (node.hasHtmComponentClosingTag) {
+ return "<//";
+ }
+
+ // fall through
+
+ default:
+ return "</".concat(node.rawName);
+ }
+ }
+
+ function printClosingTagEndMarker(node, options) {
+ if (shouldNotPrintClosingTag$1(node, options)) {
+ return "";
+ }
+
+ switch (node.type) {
+ case "ieConditionalComment":
+ case "ieConditionalEndComment":
+ return "[endif]-->";
+
+ case "ieConditionalStartComment":
+ return "]><!-->";
+
+ case "interpolation":
+ return "}}";
+
+ case "element":
+ if (node.isSelfClosing) {
+ return "/>";
+ }
+
+ // fall through
+
+ default:
+ return ">";
+ }
+ }
+
+ function getTextValueParts(node) {
+ var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : node.value;
+ return node.parent.isWhitespaceSensitive ? node.parent.isIndentationSensitive ? replaceEndOfLineWith$1(value, literalline$2) : replaceEndOfLineWith$1(dedentString$1(value.replace(/^\s*?\n|\n\s*?$/g, "")), hardline$7) : // https://infra.spec.whatwg.org/#ascii-whitespace
+ join$6(line$5, value.split(/[\t\n\f\r ]+/)).parts;
+ }
+
+ function printEmbeddedAttributeValue(node, originalTextToDoc, options) {
+ var isKeyMatched = function isKeyMatched(patterns) {
+ return new RegExp(patterns.join("|")).test(node.fullName);
+ };
+
+ var getValue = function getValue() {
+ return unescapeQuoteEntities$1(node.value);
+ };
+
+ var shouldHug = false;
+
+ var __onHtmlBindingRoot = function __onHtmlBindingRoot(root) {
+ var rootNode = root.type === "NGRoot" ? root.node.type === "NGMicrosyntax" && root.node.body.length === 1 && root.node.body[0].type === "NGMicrosyntaxExpression" ? root.node.body[0].expression : root.node : root.type === "JsExpressionRoot" ? root.node : root;
+
+ if (rootNode && (rootNode.type === "ObjectExpression" || rootNode.type === "ArrayExpression")) {
+ shouldHug = true;
+ }
+ };
+
+ var printHug = function printHug(doc) {
+ return group$9(doc);
+ };
+
+ var printExpand = function printExpand(doc) {
+ return group$9(concat$a([indent$5(concat$a([softline$4, doc])), softline$4]));
+ };
+
+ var printMaybeHug = function printMaybeHug(doc) {
+ return shouldHug ? printHug(doc) : printExpand(doc);
+ };
+
+ var textToDoc = function textToDoc(code, opts) {
+ return originalTextToDoc(code, Object.assign({
+ __onHtmlBindingRoot: __onHtmlBindingRoot
+ }, opts));
+ };
+
+ if (node.fullName === "srcset" && (node.parent.fullName === "img" || node.parent.fullName === "source")) {
+ return printExpand(printImgSrcset$1(getValue()));
+ }
+
+ if (options.parser === "vue") {
+ if (node.fullName === "v-for") {
+ return printVueFor$1(getValue(), textToDoc);
+ }
+
+ if (node.fullName === "slot-scope") {
+ return printVueSlotScope$1(getValue(), textToDoc);
+ }
+ /**
+ * @click="jsStatement"
+ * @click="jsExpression"
+ * v-on:click="jsStatement"
+ * v-on:click="jsExpression"
+ */
+
+
+ var vueEventBindingPatterns = ["^@", "^v-on:"];
+ /**
+ * :class="vueExpression"
+ * v-bind:id="vueExpression"
+ */
+
+ var vueExpressionBindingPatterns = ["^:", "^v-bind:"];
+ /**
+ * v-if="jsExpression"
+ */
+
+ var jsExpressionBindingPatterns = ["^v-"];
+
+ if (isKeyMatched(vueEventBindingPatterns)) {
+ var value = getValue();
+ return printMaybeHug(isVueEventBindingExpression$1(value) ? textToDoc(value, {
+ parser: "__js_expression"
+ }) : stripTrailingHardline$1(textToDoc(value, {
+ parser: "__vue_event_binding"
+ })));
+ }
+
+ if (isKeyMatched(vueExpressionBindingPatterns)) {
+ return printMaybeHug(textToDoc(getValue(), {
+ parser: "__vue_expression"
+ }));
+ }
+
+ if (isKeyMatched(jsExpressionBindingPatterns)) {
+ return printMaybeHug(textToDoc(getValue(), {
+ parser: "__js_expression"
+ }));
+ }
+ }
+
+ if (options.parser === "angular") {
+ var ngTextToDoc = function ngTextToDoc(code, opts) {
+ return (// angular does not allow trailing comma
+ textToDoc(code, Object.assign({
+ trailingComma: "none"
+ }, opts))
+ );
+ };
+ /**
+ * *directive="angularDirective"
+ */
+
+
+ var ngDirectiveBindingPatterns = ["^\\*"];
+ /**
+ * (click)="angularStatement"
+ * on-click="angularStatement"
+ */
+
+ var ngStatementBindingPatterns = ["^\\(.+\\)$", "^on-"];
+ /**
+ * [target]="angularExpression"
+ * bind-target="angularExpression"
+ * [(target)]="angularExpression"
+ * bindon-target="angularExpression"
+ */
+
+ var ngExpressionBindingPatterns = ["^\\[.+\\]$", "^bind(on)?-"];
+ /**
+ * i18n="longDescription"
+ * i18n-attr="longDescription"
+ */
+
+ var ngI18nPatterns = ["^i18n(-.+)?$"];
+
+ if (isKeyMatched(ngStatementBindingPatterns)) {
+ return printMaybeHug(ngTextToDoc(getValue(), {
+ parser: "__ng_action"
+ }));
+ }
+
+ if (isKeyMatched(ngExpressionBindingPatterns)) {
+ return printMaybeHug(ngTextToDoc(getValue(), {
+ parser: "__ng_binding"
+ }));
+ }
+
+ if (isKeyMatched(ngI18nPatterns)) {
+ return printExpand(fill$3(getTextValueParts(node, getValue())));
+ }
+
+ if (isKeyMatched(ngDirectiveBindingPatterns)) {
+ return printMaybeHug(ngTextToDoc(getValue(), {
+ parser: "__ng_directive"
+ }));
+ }
+
+ var interpolationRegex = /\{\{([\s\S]+?)\}\}/g;
+
+ var _value2 = getValue();
+
+ if (interpolationRegex.test(_value2)) {
+ var parts = [];
+
+ _value2.split(interpolationRegex).forEach(function (part, index) {
+ if (index % 2 === 0) {
+ parts.push(concat$a(replaceEndOfLineWith$1(part, literalline$2)));
+ } else {
+ try {
+ parts.push(group$9(concat$a(["{{", indent$5(concat$a([line$5, ngTextToDoc(part, {
+ parser: "__ng_interpolation",
+ __isInHtmlInterpolation: true // to avoid unexpected `}}`
+
+ })])), line$5, "}}"])));
+ } catch (e) {
+ parts.push("{{", concat$a(replaceEndOfLineWith$1(part, literalline$2)), "}}");
+ }
+ }
+ });
+
+ return group$9(concat$a(parts));
+ }
+ }
+
+ return null;
+ }
+
+ var printerHtml = {
+ preprocess: preprocess_1,
+ print: genericPrint$2,
+ insertPragma: insertPragma$6,
+ massageAstNode: clean$3,
+ embed: embed$2
+ };
+
+ var CATEGORY_HTML = "HTML"; // format based on https://github.com/prettier/prettier/blob/master/src/main/core-options.js
+
+ var options$4 = {
+ htmlWhitespaceSensitivity: {
+ since: "1.15.0",
+ category: CATEGORY_HTML,
+ type: "choice",
+ default: "css",
+ description: "How to handle whitespaces in HTML.",
+ choices: [{
+ value: "css",
+ description: "Respect the default value of CSS display property."
+ }, {
+ value: "strict",
+ description: "Whitespaces are considered sensitive."
+ }, {
+ value: "ignore",
+ description: "Whitespaces are considered insensitive."
+ }]
+ },
+ vueIndentScriptAndStyle: {
+ since: "1.19.0",
+ category: CATEGORY_HTML,
+ type: "boolean",
+ default: false,
+ description: "Indent script and style tags in Vue files."
+ }
+ };
+
+ var name$7 = "HTML";
+ var type$6 = "markup";
+ var tmScope$6 = "text.html.basic";
+ var aceMode$6 = "html";
+ var codemirrorMode$3 = "htmlmixed";
+ var codemirrorMimeType$3 = "text/html";
+ var color$1 = "#e34c26";
+ var aliases$1 = [
+ "xhtml"
+ ];
+ var extensions$6 = [
+ ".html",
+ ".htm",
+ ".html.hl",
+ ".inc",
+ ".st",
+ ".xht",
+ ".xhtml"
+ ];
+ var languageId$6 = 146;
+ var HTML = {
+ name: name$7,
+ type: type$6,
+ tmScope: tmScope$6,
+ aceMode: aceMode$6,
+ codemirrorMode: codemirrorMode$3,
+ codemirrorMimeType: codemirrorMimeType$3,
+ color: color$1,
+ aliases: aliases$1,
+ extensions: extensions$6,
+ languageId: languageId$6
+ };
+
+ var HTML$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$7,
+ type: type$6,
+ tmScope: tmScope$6,
+ aceMode: aceMode$6,
+ codemirrorMode: codemirrorMode$3,
+ codemirrorMimeType: codemirrorMimeType$3,
+ color: color$1,
+ aliases: aliases$1,
+ extensions: extensions$6,
+ languageId: languageId$6,
+ 'default': HTML
+ });
+
+ var name$8 = "Vue";
+ var type$7 = "markup";
+ var color$2 = "#2c3e50";
+ var extensions$7 = [
+ ".vue"
+ ];
+ var tmScope$7 = "text.html.vue";
+ var aceMode$7 = "html";
+ var languageId$7 = 391;
+ var Vue = {
+ name: name$8,
+ type: type$7,
+ color: color$2,
+ extensions: extensions$7,
+ tmScope: tmScope$7,
+ aceMode: aceMode$7,
+ languageId: languageId$7
+ };
+
+ var Vue$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$8,
+ type: type$7,
+ color: color$2,
+ extensions: extensions$7,
+ tmScope: tmScope$7,
+ aceMode: aceMode$7,
+ languageId: languageId$7,
+ 'default': Vue
+ });
+
+ var require$$0$5 = getCjsExportFromNamespace(HTML$1);
+
+ var require$$1$1 = getCjsExportFromNamespace(Vue$1);
+
+ var languages$3 = [createLanguage(require$$0$5, function (data) {
+ return Object.assign(data, {
+ name: "Angular",
+ since: "1.15.0",
+ parsers: ["angular"],
+ vscodeLanguageIds: ["html"],
+ extensions: [".component.html"],
+ filenames: []
+ });
+ }), createLanguage(require$$0$5, function (data) {
+ return Object.assign(data, {
+ since: "1.15.0",
+ parsers: ["html"],
+ vscodeLanguageIds: ["html"],
+ extensions: data.extensions.concat([".mjml" // MJML is considered XML in Linguist but it should be formatted as HTML
+ ])
+ });
+ }), createLanguage(require$$0$5, function (data) {
+ return Object.assign(data, {
+ name: "Lightning Web Components",
+ since: "1.17.0",
+ parsers: ["lwc"],
+ vscodeLanguageIds: ["html"],
+ extensions: [],
+ filenames: []
+ });
+ }), createLanguage(require$$1$1, function (data) {
+ return Object.assign(data, {
+ since: "1.10.0",
+ parsers: ["vue"],
+ vscodeLanguageIds: ["vue"]
+ });
+ })];
+ var printers$3 = {
+ html: printerHtml
+ };
+ var languageHtml = {
+ languages: languages$3,
+ printers: printers$3,
+ options: options$4
+ };
+
+ var addLeadingComment$2 = utilShared.addLeadingComment,
+ addTrailingComment$2 = utilShared.addTrailingComment,
+ addDanglingComment$2 = utilShared.addDanglingComment;
+
+ function handleOwnLineComment(comment, text, options, ast, isLastComment) {
+ var precedingNode = comment.precedingNode,
+ enclosingNode = comment.enclosingNode,
+ followingNode = comment.followingNode;
+
+ if (handleLastFunctionArgComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleMemberExpressionComments(enclosingNode, followingNode, comment) || handleIfStatementComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleWhileComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleTryStatementComments(enclosingNode, precedingNode, followingNode, comment) || handleClassComments(enclosingNode, precedingNode, followingNode, comment) || handleImportSpecifierComments(enclosingNode, comment) || handleForComments(enclosingNode, precedingNode, comment) || handleUnionTypeComments(precedingNode, enclosingNode, followingNode, comment) || handleOnlyComments(enclosingNode, ast, comment, isLastComment) || handleImportDeclarationComments(text, enclosingNode, precedingNode, comment, options) || handleAssignmentPatternComments(enclosingNode, comment) || handleMethodNameComments(text, enclosingNode, precedingNode, comment, options)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleEndOfLineComment(comment, text, options, ast, isLastComment) {
+ var precedingNode = comment.precedingNode,
+ enclosingNode = comment.enclosingNode,
+ followingNode = comment.followingNode;
+
+ if (handleLastFunctionArgComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleConditionalExpressionComments(enclosingNode, precedingNode, followingNode, comment, text, options) || handleImportSpecifierComments(enclosingNode, comment) || handleIfStatementComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleWhileComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleTryStatementComments(enclosingNode, precedingNode, followingNode, comment) || handleClassComments(enclosingNode, precedingNode, followingNode, comment) || handleLabeledStatementComments(enclosingNode, comment) || handleCallExpressionComments(precedingNode, enclosingNode, comment) || handlePropertyComments(enclosingNode, comment) || handleOnlyComments(enclosingNode, ast, comment, isLastComment) || handleTypeAliasComments(enclosingNode, followingNode, comment) || handleVariableDeclaratorComments(enclosingNode, followingNode, comment)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleRemainingComment(comment, text, options, ast, isLastComment) {
+ var precedingNode = comment.precedingNode,
+ enclosingNode = comment.enclosingNode,
+ followingNode = comment.followingNode;
+
+ if (handleIfStatementComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleWhileComments(text, precedingNode, enclosingNode, followingNode, comment, options) || handleObjectPropertyAssignment(enclosingNode, precedingNode, comment) || handleCommentInEmptyParens(text, enclosingNode, comment, options) || handleMethodNameComments(text, enclosingNode, precedingNode, comment, options) || handleOnlyComments(enclosingNode, ast, comment, isLastComment) || handleCommentAfterArrowParams(text, enclosingNode, comment, options) || handleFunctionNameComments(text, enclosingNode, precedingNode, comment, options) || handleTSMappedTypeComments(text, enclosingNode, precedingNode, followingNode, comment) || handleBreakAndContinueStatementComments(enclosingNode, comment)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ function addBlockStatementFirstComment(node, comment) {
+ var body = node.body.filter(function (n) {
+ return n.type !== "EmptyStatement";
+ });
+
+ if (body.length === 0) {
+ addDanglingComment$2(node, comment);
+ } else {
+ addLeadingComment$2(body[0], comment);
+ }
+ }
+
+ function addBlockOrNotComment(node, comment) {
+ if (node.type === "BlockStatement") {
+ addBlockStatementFirstComment(node, comment);
+ } else {
+ addLeadingComment$2(node, comment);
+ }
+ } // There are often comments before the else clause of if statements like
+ //
+ // if (1) { ... }
+ // // comment
+ // else { ... }
+ //
+ // They are being attached as leading comments of the BlockExpression which
+ // is not well printed. What we want is to instead move the comment inside
+ // of the block and make it leadingComment of the first element of the block
+ // or dangling comment of the block if there is nothing inside
+ //
+ // if (1) { ... }
+ // else {
+ // // comment
+ // ...
+ // }
+
+
+ function handleIfStatementComments(text, precedingNode, enclosingNode, followingNode, comment, options) {
+ if (!enclosingNode || enclosingNode.type !== "IfStatement" || !followingNode) {
+ return false;
+ } // We unfortunately have no way using the AST or location of nodes to know
+ // if the comment is positioned before the condition parenthesis:
+ // if (a /* comment */) {}
+ // The only workaround I found is to look at the next character to see if
+ // it is a ).
+
+
+ var nextCharacter = util.getNextNonSpaceNonCommentCharacter(text, comment, options.locEnd);
+
+ if (nextCharacter === ")") {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ } // Comments before `else`:
+ // - treat as trailing comments of the consequent, if it's a BlockStatement
+ // - treat as a dangling comment otherwise
+
+
+ if (precedingNode === enclosingNode.consequent && followingNode === enclosingNode.alternate) {
+ if (precedingNode.type === "BlockStatement") {
+ addTrailingComment$2(precedingNode, comment);
+ } else {
+ addDanglingComment$2(enclosingNode, comment);
+ }
+
+ return true;
+ }
+
+ if (followingNode.type === "BlockStatement") {
+ addBlockStatementFirstComment(followingNode, comment);
+ return true;
+ }
+
+ if (followingNode.type === "IfStatement") {
+ addBlockOrNotComment(followingNode.consequent, comment);
+ return true;
+ } // For comments positioned after the condition parenthesis in an if statement
+ // before the consequent without brackets on, such as
+ // if (a) /* comment */ true,
+ // we look at the next character to see if the following node
+ // is the consequent for the if statement
+
+
+ if (enclosingNode.consequent === followingNode) {
+ addLeadingComment$2(followingNode, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleWhileComments(text, precedingNode, enclosingNode, followingNode, comment, options) {
+ if (!enclosingNode || enclosingNode.type !== "WhileStatement" || !followingNode) {
+ return false;
+ } // We unfortunately have no way using the AST or location of nodes to know
+ // if the comment is positioned before the condition parenthesis:
+ // while (a /* comment */) {}
+ // The only workaround I found is to look at the next character to see if
+ // it is a ).
+
+
+ var nextCharacter = util.getNextNonSpaceNonCommentCharacter(text, comment, options.locEnd);
+
+ if (nextCharacter === ")") {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ if (followingNode.type === "BlockStatement") {
+ addBlockStatementFirstComment(followingNode, comment);
+ return true;
+ }
+
+ return false;
+ } // Same as IfStatement but for TryStatement
+
+
+ function handleTryStatementComments(enclosingNode, precedingNode, followingNode, comment) {
+ if (!enclosingNode || enclosingNode.type !== "TryStatement" && enclosingNode.type !== "CatchClause" || !followingNode) {
+ return false;
+ }
+
+ if (enclosingNode.type === "CatchClause" && precedingNode) {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ if (followingNode.type === "BlockStatement") {
+ addBlockStatementFirstComment(followingNode, comment);
+ return true;
+ }
+
+ if (followingNode.type === "TryStatement") {
+ addBlockOrNotComment(followingNode.finalizer, comment);
+ return true;
+ }
+
+ if (followingNode.type === "CatchClause") {
+ addBlockOrNotComment(followingNode.body, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleMemberExpressionComments(enclosingNode, followingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "MemberExpression" || enclosingNode.type === "OptionalMemberExpression") && followingNode && followingNode.type === "Identifier") {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleConditionalExpressionComments(enclosingNode, precedingNode, followingNode, comment, text, options) {
+ var isSameLineAsPrecedingNode = precedingNode && !util.hasNewlineInRange(text, options.locEnd(precedingNode), options.locStart(comment));
+
+ if ((!precedingNode || !isSameLineAsPrecedingNode) && enclosingNode && enclosingNode.type === "ConditionalExpression" && followingNode) {
+ addLeadingComment$2(followingNode, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleObjectPropertyAssignment(enclosingNode, precedingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "ObjectProperty" || enclosingNode.type === "Property") && enclosingNode.shorthand && enclosingNode.key === precedingNode && enclosingNode.value.type === "AssignmentPattern") {
+ addTrailingComment$2(enclosingNode.value.left, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleClassComments(enclosingNode, precedingNode, followingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "ClassDeclaration" || enclosingNode.type === "ClassExpression") && enclosingNode.decorators && enclosingNode.decorators.length > 0 && !(followingNode && followingNode.type === "Decorator")) {
+ if (!enclosingNode.decorators || enclosingNode.decorators.length === 0) {
+ addLeadingComment$2(enclosingNode, comment);
+ } else {
+ addTrailingComment$2(enclosingNode.decorators[enclosingNode.decorators.length - 1], comment);
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleMethodNameComments(text, enclosingNode, precedingNode, comment, options) {
+ // This is only needed for estree parsers (flow, typescript) to attach
+ // after a method name:
+ // obj = { fn /*comment*/() {} };
+ if (enclosingNode && precedingNode && (enclosingNode.type === "Property" || enclosingNode.type === "MethodDefinition") && precedingNode.type === "Identifier" && enclosingNode.key === precedingNode && // special Property case: { key: /*comment*/(value) };
+ // comment should be attached to value instead of key
+ util.getNextNonSpaceNonCommentCharacter(text, precedingNode, options.locEnd) !== ":") {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ } // Print comments between decorators and class methods as a trailing comment
+ // on the decorator node instead of the method node
+
+
+ if (precedingNode && enclosingNode && precedingNode.type === "Decorator" && (enclosingNode.type === "ClassMethod" || enclosingNode.type === "ClassProperty" || enclosingNode.type === "TSAbstractClassProperty" || enclosingNode.type === "TSAbstractMethodDefinition" || enclosingNode.type === "MethodDefinition")) {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleFunctionNameComments(text, enclosingNode, precedingNode, comment, options) {
+ if (util.getNextNonSpaceNonCommentCharacter(text, comment, options.locEnd) !== "(") {
+ return false;
+ }
+
+ if (precedingNode && enclosingNode && (enclosingNode.type === "FunctionDeclaration" || enclosingNode.type === "FunctionExpression" || enclosingNode.type === "ClassMethod" || enclosingNode.type === "MethodDefinition" || enclosingNode.type === "ObjectMethod")) {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleCommentAfterArrowParams(text, enclosingNode, comment, options) {
+ if (!(enclosingNode && enclosingNode.type === "ArrowFunctionExpression")) {
+ return false;
+ }
+
+ var index = utilShared.getNextNonSpaceNonCommentCharacterIndex(text, comment, options);
+
+ if (text.substr(index, 2) === "=>") {
+ addDanglingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleCommentInEmptyParens(text, enclosingNode, comment, options) {
+ if (util.getNextNonSpaceNonCommentCharacter(text, comment, options.locEnd) !== ")") {
+ return false;
+ } // Only add dangling comments to fix the case when no params are present,
+ // i.e. a function without any argument.
+
+
+ if (enclosingNode && ((enclosingNode.type === "FunctionDeclaration" || enclosingNode.type === "FunctionExpression" || enclosingNode.type === "ArrowFunctionExpression" || enclosingNode.type === "ClassMethod" || enclosingNode.type === "ObjectMethod") && enclosingNode.params.length === 0 || (enclosingNode.type === "CallExpression" || enclosingNode.type === "OptionalCallExpression" || enclosingNode.type === "NewExpression") && enclosingNode.arguments.length === 0)) {
+ addDanglingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ if (enclosingNode && enclosingNode.type === "MethodDefinition" && enclosingNode.value.params.length === 0) {
+ addDanglingComment$2(enclosingNode.value, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleLastFunctionArgComments(text, precedingNode, enclosingNode, followingNode, comment, options) {
+ // Type definitions functions
+ if (precedingNode && precedingNode.type === "FunctionTypeParam" && enclosingNode && enclosingNode.type === "FunctionTypeAnnotation" && followingNode && followingNode.type !== "FunctionTypeParam") {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ } // Real functions
+
+
+ if (precedingNode && (precedingNode.type === "Identifier" || precedingNode.type === "AssignmentPattern") && enclosingNode && (enclosingNode.type === "ArrowFunctionExpression" || enclosingNode.type === "FunctionExpression" || enclosingNode.type === "FunctionDeclaration" || enclosingNode.type === "ObjectMethod" || enclosingNode.type === "ClassMethod") && util.getNextNonSpaceNonCommentCharacter(text, comment, options.locEnd) === ")") {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ if (enclosingNode && enclosingNode.type === "FunctionDeclaration" && followingNode && followingNode.type === "BlockStatement") {
+ var functionParamRightParenIndex = function () {
+ if (enclosingNode.params.length !== 0) {
+ return util.getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, options.locEnd(util.getLast(enclosingNode.params)));
+ }
+
+ var functionParamLeftParenIndex = util.getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, options.locEnd(enclosingNode.id));
+ return util.getNextNonSpaceNonCommentCharacterIndexWithStartIndex(text, functionParamLeftParenIndex + 1);
+ }();
+
+ if (options.locStart(comment) > functionParamRightParenIndex) {
+ addBlockStatementFirstComment(followingNode, comment);
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ function handleImportSpecifierComments(enclosingNode, comment) {
+ if (enclosingNode && enclosingNode.type === "ImportSpecifier") {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleLabeledStatementComments(enclosingNode, comment) {
+ if (enclosingNode && enclosingNode.type === "LabeledStatement") {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleBreakAndContinueStatementComments(enclosingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "ContinueStatement" || enclosingNode.type === "BreakStatement") && !enclosingNode.label) {
+ addTrailingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleCallExpressionComments(precedingNode, enclosingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "CallExpression" || enclosingNode.type === "OptionalCallExpression") && precedingNode && enclosingNode.callee === precedingNode && enclosingNode.arguments.length > 0) {
+ addLeadingComment$2(enclosingNode.arguments[0], comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleUnionTypeComments(precedingNode, enclosingNode, followingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "UnionTypeAnnotation" || enclosingNode.type === "TSUnionType")) {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handlePropertyComments(enclosingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "Property" || enclosingNode.type === "ObjectProperty")) {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleOnlyComments(enclosingNode, ast, comment, isLastComment) {
+ // With Flow the enclosingNode is undefined so use the AST instead.
+ if (ast && ast.body && ast.body.length === 0) {
+ if (isLastComment) {
+ addDanglingComment$2(ast, comment);
+ } else {
+ addLeadingComment$2(ast, comment);
+ }
+
+ return true;
+ } else if (enclosingNode && enclosingNode.type === "Program" && enclosingNode.body.length === 0 && enclosingNode.directives && enclosingNode.directives.length === 0) {
+ if (isLastComment) {
+ addDanglingComment$2(enclosingNode, comment);
+ } else {
+ addLeadingComment$2(enclosingNode, comment);
+ }
+
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleForComments(enclosingNode, precedingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "ForInStatement" || enclosingNode.type === "ForOfStatement")) {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleImportDeclarationComments(text, enclosingNode, precedingNode, comment, options) {
+ if (precedingNode && precedingNode.type === "ImportSpecifier" && enclosingNode && enclosingNode.type === "ImportDeclaration" && util.hasNewline(text, options.locEnd(comment))) {
+ addTrailingComment$2(precedingNode, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleAssignmentPatternComments(enclosingNode, comment) {
+ if (enclosingNode && enclosingNode.type === "AssignmentPattern") {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleTypeAliasComments(enclosingNode, followingNode, comment) {
+ if (enclosingNode && enclosingNode.type === "TypeAlias") {
+ addLeadingComment$2(enclosingNode, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleVariableDeclaratorComments(enclosingNode, followingNode, comment) {
+ if (enclosingNode && (enclosingNode.type === "VariableDeclarator" || enclosingNode.type === "AssignmentExpression") && followingNode && (followingNode.type === "ObjectExpression" || followingNode.type === "ArrayExpression" || followingNode.type === "TemplateLiteral" || followingNode.type === "TaggedTemplateExpression")) {
+ addLeadingComment$2(followingNode, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function handleTSMappedTypeComments(text, enclosingNode, precedingNode, followingNode, comment) {
+ if (!enclosingNode || enclosingNode.type !== "TSMappedType") {
+ return false;
+ }
+
+ if (followingNode && followingNode.type === "TSTypeParameter" && followingNode.name) {
+ addLeadingComment$2(followingNode.name, comment);
+ return true;
+ }
+
+ if (precedingNode && precedingNode.type === "TSTypeParameter" && precedingNode.constraint) {
+ addTrailingComment$2(precedingNode.constraint, comment);
+ return true;
+ }
+
+ return false;
+ }
+
+ function isBlockComment(comment) {
+ return comment.type === "Block" || comment.type === "CommentBlock";
+ }
+
+ function hasLeadingComment(node) {
+ var fn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {
+ return true;
+ };
+
+ if (node.leadingComments) {
+ return node.leadingComments.some(fn);
+ }
+
+ if (node.comments) {
+ return node.comments.some(function (comment) {
+ return comment.leading && fn(comment);
+ });
+ }
+
+ return false;
+ }
+
+ var comments$1 = {
+ handleOwnLineComment: handleOwnLineComment,
+ handleEndOfLineComment: handleEndOfLineComment,
+ handleRemainingComment: handleRemainingComment,
+ hasLeadingComment: hasLeadingComment,
+ isBlockComment: isBlockComment
+ };
+
+ var isBlockComment$1 = comments$1.isBlockComment,
+ hasLeadingComment$1 = comments$1.hasLeadingComment;
+ var _require$$1$builders = doc.builders,
+ indent$6 = _require$$1$builders.indent,
+ join$7 = _require$$1$builders.join,
+ hardline$8 = _require$$1$builders.hardline,
+ softline$5 = _require$$1$builders.softline,
+ literalline$3 = _require$$1$builders.literalline,
+ concat$b = _require$$1$builders.concat,
+ group$a = _require$$1$builders.group,
+ dedentToRoot$2 = _require$$1$builders.dedentToRoot,
+ _require$$1$utils = doc.utils,
+ mapDoc$5 = _require$$1$utils.mapDoc,
+ stripTrailingHardline$2 = _require$$1$utils.stripTrailingHardline;
+
+ function embed$3(path, print, textToDoc, options) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ var parentParent = path.getParentNode(1);
+
+ switch (node.type) {
+ case "TemplateLiteral":
+ {
+ var isCss = [isStyledJsx, isStyledComponents, isCssProp, isAngularComponentStyles].some(function (isIt) {
+ return isIt(path);
+ });
+
+ if (isCss) {
+ // Get full template literal with expressions replaced by placeholders
+ var rawQuasis = node.quasis.map(function (q) {
+ return q.value.raw;
+ });
+ var placeholderID = 0;
+ var text = rawQuasis.reduce(function (prevVal, currVal, idx) {
+ return idx == 0 ? currVal : prevVal + "@prettier-placeholder-" + placeholderID++ + "-id" + currVal;
+ }, "");
+ var doc = textToDoc(text, {
+ parser: "css"
+ });
+ return transformCssDoc(doc, path, print);
+ }
+ /*
+ * react-relay and graphql-tag
+ * graphql`...`
+ * graphql.experimental`...`
+ * gql`...`
+ *
+ * This intentionally excludes Relay Classic tags, as Prettier does not
+ * support Relay Classic formatting.
+ */
+
+
+ if (isGraphQL(path)) {
+ var expressionDocs = node.expressions ? path.map(print, "expressions") : [];
+ var numQuasis = node.quasis.length;
+
+ if (numQuasis === 1 && node.quasis[0].value.raw.trim() === "") {
+ return "``";
+ }
+
+ var parts = [];
+
+ for (var i = 0; i < numQuasis; i++) {
+ var templateElement = node.quasis[i];
+ var isFirst = i === 0;
+ var isLast = i === numQuasis - 1;
+ var _text = templateElement.value.cooked; // Bail out if any of the quasis have an invalid escape sequence
+ // (which would make the `cooked` value be `null` or `undefined`)
+
+ if (typeof _text !== "string") {
+ return null;
+ }
+
+ var lines = _text.split("\n");
+
+ var numLines = lines.length;
+ var expressionDoc = expressionDocs[i];
+ var startsWithBlankLine = numLines > 2 && lines[0].trim() === "" && lines[1].trim() === "";
+ var endsWithBlankLine = numLines > 2 && lines[numLines - 1].trim() === "" && lines[numLines - 2].trim() === "";
+ var commentsAndWhitespaceOnly = lines.every(function (line) {
+ return /^\s*(?:#[^\r\n]*)?$/.test(line);
+ }); // Bail out if an interpolation occurs within a comment.
+
+ if (!isLast && /#[^\r\n]*$/.test(lines[numLines - 1])) {
+ return null;
+ }
+
+ var _doc = null;
+
+ if (commentsAndWhitespaceOnly) {
+ _doc = printGraphqlComments(lines);
+ } else {
+ _doc = stripTrailingHardline$2(textToDoc(_text, {
+ parser: "graphql"
+ }));
+ }
+
+ if (_doc) {
+ _doc = escapeTemplateCharacters(_doc, false);
+
+ if (!isFirst && startsWithBlankLine) {
+ parts.push("");
+ }
+
+ parts.push(_doc);
+
+ if (!isLast && endsWithBlankLine) {
+ parts.push("");
+ }
+ } else if (!isFirst && !isLast && startsWithBlankLine) {
+ parts.push("");
+ }
+
+ if (expressionDoc) {
+ parts.push(concat$b(["${", expressionDoc, "}"]));
+ }
+ }
+
+ return concat$b(["`", indent$6(concat$b([hardline$8, join$7(hardline$8, parts)])), hardline$8, "`"]);
+ }
+
+ var htmlParser = isHtml(path) ? "html" : isAngularComponentTemplate(path) ? "angular" : undefined;
+
+ if (htmlParser) {
+ return printHtmlTemplateLiteral(path, print, textToDoc, htmlParser, options.embeddedInHtml);
+ }
+
+ break;
+ }
+
+ case "TemplateElement":
+ {
+ /**
+ * md`...`
+ * markdown`...`
+ */
+ if (parentParent && parentParent.type === "TaggedTemplateExpression" && parent.quasis.length === 1 && parentParent.tag.type === "Identifier" && (parentParent.tag.name === "md" || parentParent.tag.name === "markdown")) {
+ var _text2 = parent.quasis[0].value.raw.replace(/((?:\\\\)*)\\`/g, function (_, backslashes) {
+ return "\\".repeat(backslashes.length / 2) + "`";
+ });
+
+ var indentation = getIndentation(_text2);
+ var hasIndent = indentation !== "";
+ return concat$b([hasIndent ? indent$6(concat$b([softline$5, printMarkdown(_text2.replace(new RegExp("^".concat(indentation), "gm"), ""))])) : concat$b([literalline$3, dedentToRoot$2(printMarkdown(_text2))]), softline$5]);
+ }
+
+ break;
+ }
+ }
+
+ function printMarkdown(text) {
+ var doc = textToDoc(text, {
+ parser: "markdown",
+ __inJsTemplate: true
+ });
+ return stripTrailingHardline$2(escapeTemplateCharacters(doc, true));
+ }
+ }
+
+ function getIndentation(str) {
+ var firstMatchedIndent = str.match(/^([^\S\n]*)\S/m);
+ return firstMatchedIndent === null ? "" : firstMatchedIndent[1];
+ }
+
+ function uncook(cookedValue) {
+ return cookedValue.replace(/([\\`]|\$\{)/g, "\\$1");
+ }
+
+ function escapeTemplateCharacters(doc, raw) {
+ return mapDoc$5(doc, function (currentDoc) {
+ if (!currentDoc.parts) {
+ return currentDoc;
+ }
+
+ var parts = [];
+ currentDoc.parts.forEach(function (part) {
+ if (typeof part === "string") {
+ parts.push(raw ? part.replace(/(\\*)`/g, "$1$1\\`") : uncook(part));
+ } else {
+ parts.push(part);
+ }
+ });
+ return Object.assign({}, currentDoc, {
+ parts: parts
+ });
+ });
+ }
+
+ function transformCssDoc(quasisDoc, path, print) {
+ var parentNode = path.getValue();
+ var isEmpty = parentNode.quasis.length === 1 && !parentNode.quasis[0].value.raw.trim();
+
+ if (isEmpty) {
+ return "``";
+ }
+
+ var expressionDocs = parentNode.expressions ? path.map(print, "expressions") : [];
+ var newDoc = replacePlaceholders(quasisDoc, expressionDocs);
+ /* istanbul ignore if */
+
+ if (!newDoc) {
+ throw new Error("Couldn't insert all the expressions");
+ }
+
+ return concat$b(["`", indent$6(concat$b([hardline$8, stripTrailingHardline$2(newDoc)])), softline$5, "`"]);
+ } // Search all the placeholders in the quasisDoc tree
+ // and replace them with the expression docs one by one
+ // returns a new doc with all the placeholders replaced,
+ // or null if it couldn't replace any expression
+
+
+ function replacePlaceholders(quasisDoc, expressionDocs) {
+ if (!expressionDocs || !expressionDocs.length) {
+ return quasisDoc;
+ }
+
+ var expressions = expressionDocs.slice();
+ var replaceCounter = 0;
+ var newDoc = mapDoc$5(quasisDoc, function (doc) {
+ if (!doc || !doc.parts || !doc.parts.length) {
+ return doc;
+ }
+
+ var parts = doc.parts;
+ var atIndex = parts.indexOf("@");
+ var placeholderIndex = atIndex + 1;
+
+ if (atIndex > -1 && typeof parts[placeholderIndex] === "string" && parts[placeholderIndex].startsWith("prettier-placeholder")) {
+ // If placeholder is split, join it
+ var at = parts[atIndex];
+ var placeholder = parts[placeholderIndex];
+ var rest = parts.slice(placeholderIndex + 1);
+ parts = parts.slice(0, atIndex).concat([at + placeholder]).concat(rest);
+ }
+
+ var atPlaceholderIndex = parts.findIndex(function (part) {
+ return typeof part === "string" && part.startsWith("@prettier-placeholder");
+ });
+
+ if (atPlaceholderIndex > -1) {
+ var _placeholder = parts[atPlaceholderIndex];
+
+ var _rest = parts.slice(atPlaceholderIndex + 1);
+
+ var placeholderMatch = _placeholder.match(/@prettier-placeholder-(.+)-id([\s\S]*)/);
+
+ var placeholderID = placeholderMatch[1]; // When the expression has a suffix appended, like:
+ // animation: linear ${time}s ease-out;
+
+ var suffix = placeholderMatch[2];
+ var expression = expressions[placeholderID];
+ replaceCounter++;
+ parts = parts.slice(0, atPlaceholderIndex).concat(["${", expression, "}" + suffix]).concat(_rest);
+ }
+
+ return Object.assign({}, doc, {
+ parts: parts
+ });
+ });
+ return expressions.length === replaceCounter ? newDoc : null;
+ }
+
+ function printGraphqlComments(lines) {
+ var parts = [];
+ var seenComment = false;
+ lines.map(function (textLine) {
+ return textLine.trim();
+ }).forEach(function (textLine, i, array) {
+ // Lines are either whitespace only, or a comment (with potential whitespace
+ // around it). Drop whitespace-only lines.
+ if (textLine === "") {
+ return;
+ }
+
+ if (array[i - 1] === "" && seenComment) {
+ // If a non-first comment is preceded by a blank (whitespace only) line,
+ // add in a blank line.
+ parts.push(concat$b([hardline$8, textLine]));
+ } else {
+ parts.push(textLine);
+ }
+
+ seenComment = true;
+ }); // If `lines` was whitespace only, return `null`.
+
+ return parts.length === 0 ? null : join$7(hardline$8, parts);
+ }
+ /**
+ * Template literal in these contexts:
+ * <style jsx>{`div{color:red}`}</style>
+ * css``
+ * css.global``
+ * css.resolve``
+ */
+
+
+ function isStyledJsx(path) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ var parentParent = path.getParentNode(1);
+ return parentParent && node.quasis && parent.type === "JSXExpressionContainer" && parentParent.type === "JSXElement" && parentParent.openingElement.name.name === "style" && parentParent.openingElement.attributes.some(function (attribute) {
+ return attribute.name.name === "jsx";
+ }) || parent && parent.type === "TaggedTemplateExpression" && parent.tag.type === "Identifier" && parent.tag.name === "css" || parent && parent.type === "TaggedTemplateExpression" && parent.tag.type === "MemberExpression" && parent.tag.object.name === "css" && (parent.tag.property.name === "global" || parent.tag.property.name === "resolve");
+ }
+ /**
+ * Angular Components can have:
+ * - Inline HTML template
+ * - Inline CSS styles
+ *
+ * ...which are both within template literals somewhere
+ * inside of the Component decorator factory.
+ *
+ * E.g.
+ * @Component({
+ * template: `<div>...</div>`,
+ * styles: [`h1 { color: blue; }`]
+ * })
+ */
+
+
+ function isAngularComponentStyles(path) {
+ return isPathMatch(path, [function (node) {
+ return node.type === "TemplateLiteral";
+ }, function (node, name) {
+ return node.type === "ArrayExpression" && name === "elements";
+ }, function (node, name) {
+ return node.type === "Property" && node.key.type === "Identifier" && node.key.name === "styles" && name === "value";
+ }].concat(getAngularComponentObjectExpressionPredicates()));
+ }
+
+ function isAngularComponentTemplate(path) {
+ return isPathMatch(path, [function (node) {
+ return node.type === "TemplateLiteral";
+ }, function (node, name) {
+ return node.type === "Property" && node.key.type === "Identifier" && node.key.name === "template" && name === "value";
+ }].concat(getAngularComponentObjectExpressionPredicates()));
+ }
+
+ function getAngularComponentObjectExpressionPredicates() {
+ return [function (node, name) {
+ return node.type === "ObjectExpression" && name === "properties";
+ }, function (node, name) {
+ return node.type === "CallExpression" && node.callee.type === "Identifier" && node.callee.name === "Component" && name === "arguments";
+ }, function (node, name) {
+ return node.type === "Decorator" && name === "expression";
+ }];
+ }
+ /**
+ * styled-components template literals
+ */
+
+
+ function isStyledComponents(path) {
+ var parent = path.getParentNode();
+
+ if (!parent || parent.type !== "TaggedTemplateExpression") {
+ return false;
+ }
+
+ var tag = parent.tag;
+
+ switch (tag.type) {
+ case "MemberExpression":
+ return (// styled.foo``
+ isStyledIdentifier(tag.object) || // Component.extend``
+ isStyledExtend(tag)
+ );
+
+ case "CallExpression":
+ return (// styled(Component)``
+ isStyledIdentifier(tag.callee) || tag.callee.type === "MemberExpression" && (tag.callee.object.type === "MemberExpression" && ( // styled.foo.attrs({})``
+ isStyledIdentifier(tag.callee.object.object) || // Component.extend.attrs({})``
+ isStyledExtend(tag.callee.object)) || // styled(Component).attrs({})``
+ tag.callee.object.type === "CallExpression" && isStyledIdentifier(tag.callee.object.callee))
+ );
+
+ case "Identifier":
+ // css``
+ return tag.name === "css";
+
+ default:
+ return false;
+ }
+ }
+ /**
+ * JSX element with CSS prop
+ */
+
+
+ function isCssProp(path) {
+ var parent = path.getParentNode();
+ var parentParent = path.getParentNode(1);
+ return parentParent && parent.type === "JSXExpressionContainer" && parentParent.type === "JSXAttribute" && parentParent.name.type === "JSXIdentifier" && parentParent.name.name === "css";
+ }
+
+ function isStyledIdentifier(node) {
+ return node.type === "Identifier" && node.name === "styled";
+ }
+
+ function isStyledExtend(node) {
+ return /^[A-Z]/.test(node.object.name) && node.property.name === "extend";
+ }
+ /*
+ * react-relay and graphql-tag
+ * graphql`...`
+ * graphql.experimental`...`
+ * gql`...`
+ * GraphQL comment block
+ *
+ * This intentionally excludes Relay Classic tags, as Prettier does not
+ * support Relay Classic formatting.
+ */
+
+
+ function isGraphQL(path) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ return hasLanguageComment(node, "GraphQL") || parent && (parent.type === "TaggedTemplateExpression" && (parent.tag.type === "MemberExpression" && parent.tag.object.name === "graphql" && parent.tag.property.name === "experimental" || parent.tag.type === "Identifier" && (parent.tag.name === "gql" || parent.tag.name === "graphql")) || parent.type === "CallExpression" && parent.callee.type === "Identifier" && parent.callee.name === "graphql");
+ }
+
+ function hasLanguageComment(node, languageName) {
+ // This checks for a leading comment that is exactly `/* GraphQL */`
+ // In order to be in line with other implementations of this comment tag
+ // we will not trim the comment value and we will expect exactly one space on
+ // either side of the GraphQL string
+ // Also see ./clean.js
+ return hasLeadingComment$1(node, function (comment) {
+ return isBlockComment$1(comment) && comment.value === " ".concat(languageName, " ");
+ });
+ }
+
+ function isPathMatch(path, predicateStack) {
+ var stack = path.stack.slice();
+ var name = null;
+ var node = stack.pop();
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = predicateStack[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var predicate = _step.value;
+
+ if (node === undefined) {
+ return false;
+ } // skip index/array
+
+
+ if (typeof name === "number") {
+ name = stack.pop();
+ node = stack.pop();
+ }
+
+ if (!predicate(node, name)) {
+ return false;
+ }
+
+ name = stack.pop();
+ node = stack.pop();
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return true;
+ }
+ /**
+ * - html`...`
+ * - HTML comment block
+ */
+
+
+ function isHtml(path) {
+ var node = path.getValue();
+ return hasLanguageComment(node, "HTML") || isPathMatch(path, [function (node) {
+ return node.type === "TemplateLiteral";
+ }, function (node, name) {
+ return node.type === "TaggedTemplateExpression" && node.tag.type === "Identifier" && node.tag.name === "html" && name === "quasi";
+ }]);
+ } // The counter is needed to distinguish nested embeds.
+
+
+ var htmlTemplateLiteralCounter = 0;
+
+ function printHtmlTemplateLiteral(path, print, textToDoc, parser, escapeClosingScriptTag) {
+ var node = path.getValue();
+ var counter = htmlTemplateLiteralCounter;
+ htmlTemplateLiteralCounter = htmlTemplateLiteralCounter + 1 >>> 0;
+
+ var composePlaceholder = function composePlaceholder(index) {
+ return "PRETTIER_HTML_PLACEHOLDER_".concat(index, "_").concat(counter, "_IN_JS");
+ };
+
+ var text = node.quasis.map(function (quasi, index, quasis) {
+ return index === quasis.length - 1 ? quasi.value.cooked : quasi.value.cooked + composePlaceholder(index);
+ }).join("");
+ var expressionDocs = path.map(print, "expressions");
+
+ if (expressionDocs.length === 0 && text.trim().length === 0) {
+ return "``";
+ }
+
+ var placeholderRegex = RegExp(composePlaceholder("(\\d+)"), "g");
+ var contentDoc = mapDoc$5(stripTrailingHardline$2(textToDoc(text, {
+ parser: parser
+ })), function (doc) {
+ if (typeof doc !== "string") {
+ return doc;
+ }
+
+ var parts = [];
+ var components = doc.split(placeholderRegex);
+
+ for (var i = 0; i < components.length; i++) {
+ var component = components[i];
+
+ if (i % 2 === 0) {
+ if (component) {
+ component = uncook(component);
+
+ if (escapeClosingScriptTag) {
+ component = component.replace(/<\/(script)\b/gi, "<\\/$1");
+ }
+
+ parts.push(component);
+ }
+
+ continue;
+ }
+
+ var placeholderIndex = +component;
+ parts.push(concat$b(["${", group$a(expressionDocs[placeholderIndex]), "}"]));
+ }
+
+ return concat$b(parts);
+ });
+ return group$a(concat$b(["`", indent$6(concat$b([hardline$8, group$a(contentDoc)])), softline$5, "`"]));
+ }
+
+ var embed_1$1 = embed$3;
+
+ function clean$4(ast, newObj, parent) {
+ ["range", "raw", "comments", "leadingComments", "trailingComments", "extra", "start", "end", "flags", "errors"].forEach(function (name) {
+ delete newObj[name];
+ });
+
+ if (ast.type === "BigIntLiteral") {
+ newObj.value = newObj.value.toLowerCase();
+ } // We remove extra `;` and add them when needed
+
+
+ if (ast.type === "EmptyStatement") {
+ return null;
+ } // We move text around, including whitespaces and add {" "}
+
+
+ if (ast.type === "JSXText") {
+ return null;
+ }
+
+ if (ast.type === "JSXExpressionContainer" && ast.expression.type === "Literal" && ast.expression.value === " ") {
+ return null;
+ } // We remove unneeded parens around same-operator LogicalExpressions
+
+
+ if (isUnbalancedLogicalTree(newObj)) {
+ return rebalanceLogicalTree(newObj);
+ } // (TypeScript) Ignore `static` in `constructor(static p) {}`
+ // and `export` in `constructor(export p) {}`
+
+
+ if (ast.type === "TSParameterProperty" && ast.accessibility === null && !ast.readonly) {
+ return {
+ type: "Identifier",
+ name: ast.parameter.name,
+ typeAnnotation: newObj.parameter.typeAnnotation,
+ decorators: newObj.decorators
+ };
+ } // (TypeScript) ignore empty `specifiers` array
+
+
+ if (ast.type === "TSNamespaceExportDeclaration" && ast.specifiers && ast.specifiers.length === 0) {
+ delete newObj.specifiers;
+ } // We convert <div></div> to <div />
+
+
+ if (ast.type === "JSXOpeningElement") {
+ delete newObj.selfClosing;
+ }
+
+ if (ast.type === "JSXElement") {
+ delete newObj.closingElement;
+ } // We change {'key': value} into {key: value}
+
+
+ if ((ast.type === "Property" || ast.type === "ObjectProperty" || ast.type === "MethodDefinition" || ast.type === "ClassProperty" || ast.type === "TSPropertySignature" || ast.type === "ObjectTypeProperty") && _typeof(ast.key) === "object" && ast.key && (ast.key.type === "Literal" || ast.key.type === "StringLiteral" || ast.key.type === "Identifier")) {
+ delete newObj.key;
+ }
+
+ if (ast.type === "OptionalMemberExpression" && ast.optional === false) {
+ newObj.type = "MemberExpression";
+ delete newObj.optional;
+ } // Remove raw and cooked values from TemplateElement when it's CSS
+ // styled-jsx
+
+
+ if (ast.type === "JSXElement" && ast.openingElement.name.name === "style" && ast.openingElement.attributes.some(function (attr) {
+ return attr.name.name === "jsx";
+ })) {
+ var templateLiterals = newObj.children.filter(function (child) {
+ return child.type === "JSXExpressionContainer" && child.expression.type === "TemplateLiteral";
+ }).map(function (container) {
+ return container.expression;
+ });
+ var quasis = templateLiterals.reduce(function (quasis, templateLiteral) {
+ return quasis.concat(templateLiteral.quasis);
+ }, []);
+ quasis.forEach(function (q) {
+ return delete q.value;
+ });
+ } // CSS template literals in css prop
+
+
+ if (ast.type === "JSXAttribute" && ast.name.name === "css" && ast.value.type === "JSXExpressionContainer" && ast.value.expression.type === "TemplateLiteral") {
+ newObj.value.expression.quasis.forEach(function (q) {
+ return delete q.value;
+ });
+ } // Angular Components: Inline HTML template and Inline CSS styles
+
+
+ var expression = ast.expression || ast.callee;
+
+ if (ast.type === "Decorator" && expression.type === "CallExpression" && expression.callee.name === "Component" && expression.arguments.length === 1) {
+ var astProps = ast.expression.arguments[0].properties;
+ newObj.expression.arguments[0].properties.forEach(function (prop, index) {
+ var templateLiteral = null;
+
+ switch (astProps[index].key.name) {
+ case "styles":
+ if (prop.value.type === "ArrayExpression") {
+ templateLiteral = prop.value.elements[0];
+ }
+
+ break;
+
+ case "template":
+ if (prop.value.type === "TemplateLiteral") {
+ templateLiteral = prop.value;
+ }
+
+ break;
+ }
+
+ if (templateLiteral) {
+ templateLiteral.quasis.forEach(function (q) {
+ return delete q.value;
+ });
+ }
+ });
+ } // styled-components, graphql, markdown
+
+
+ if (ast.type === "TaggedTemplateExpression" && (ast.tag.type === "MemberExpression" || ast.tag.type === "Identifier" && (ast.tag.name === "gql" || ast.tag.name === "graphql" || ast.tag.name === "css" || ast.tag.name === "md" || ast.tag.name === "markdown" || ast.tag.name === "html") || ast.tag.type === "CallExpression")) {
+ newObj.quasi.quasis.forEach(function (quasi) {
+ return delete quasi.value;
+ });
+ }
+
+ if (ast.type === "TemplateLiteral") {
+ // This checks for a leading comment that is exactly `/* GraphQL */`
+ // In order to be in line with other implementations of this comment tag
+ // we will not trim the comment value and we will expect exactly one space on
+ // either side of the GraphQL string
+ // Also see ./embed.js
+ var hasLanguageComment = ast.leadingComments && ast.leadingComments.some(function (comment) {
+ return comment.type === "CommentBlock" && ["GraphQL", "HTML"].some(function (languageName) {
+ return comment.value === " ".concat(languageName, " ");
+ });
+ });
+
+ if (hasLanguageComment || parent.type === "CallExpression" && parent.callee.name === "graphql") {
+ newObj.quasis.forEach(function (quasi) {
+ return delete quasi.value;
+ });
+ }
+ }
+ }
+
+ function isUnbalancedLogicalTree(newObj) {
+ return newObj.type === "LogicalExpression" && newObj.right.type === "LogicalExpression" && newObj.operator === newObj.right.operator;
+ }
+
+ function rebalanceLogicalTree(newObj) {
+ if (isUnbalancedLogicalTree(newObj)) {
+ return rebalanceLogicalTree({
+ type: "LogicalExpression",
+ operator: newObj.operator,
+ left: rebalanceLogicalTree({
+ type: "LogicalExpression",
+ operator: newObj.operator,
+ left: newObj.left,
+ right: newObj.right.left,
+ loc: {}
+ }),
+ right: newObj.right.right,
+ loc: {}
+ });
+ }
+
+ return newObj;
+ }
+
+ var clean_1$1 = clean$4;
+
+ var getLast$1 = util.getLast,
+ hasNewline$3 = util.hasNewline,
+ hasNewlineInRange$1 = util.hasNewlineInRange,
+ hasIgnoreComment$3 = util.hasIgnoreComment,
+ hasNodeIgnoreComment$1 = util.hasNodeIgnoreComment,
+ skipWhitespace$1 = util.skipWhitespace;
+ var isIdentifierName = utils$1.keyword.isIdentifierNameES5; // We match any whitespace except line terminators because
+ // Flow annotation comments cannot be split across lines. For example:
+ //
+ // (this /*
+ // : any */).foo = 5;
+ //
+ // is not picked up by Flow (see https://github.com/facebook/flow/issues/7050), so
+ // removing the newline would create a type annotation that the user did not intend
+ // to create.
+
+ var NON_LINE_TERMINATING_WHITE_SPACE = "(?:(?=.)\\s)";
+ var FLOW_SHORTHAND_ANNOTATION = new RegExp("^".concat(NON_LINE_TERMINATING_WHITE_SPACE, "*:"));
+ var FLOW_ANNOTATION = new RegExp("^".concat(NON_LINE_TERMINATING_WHITE_SPACE, "*::"));
+
+ function hasFlowShorthandAnnotationComment(node) {
+ // https://flow.org/en/docs/types/comments/
+ // Syntax example: const r = new (window.Request /*: Class<Request> */)("");
+ return node.extra && node.extra.parenthesized && node.trailingComments && node.trailingComments[0].value.match(FLOW_SHORTHAND_ANNOTATION);
+ }
+
+ function hasFlowAnnotationComment(comments) {
+ return comments && comments[0].value.match(FLOW_ANNOTATION);
+ }
+
+ function hasNode(node, fn) {
+ if (!node || _typeof(node) !== "object") {
+ return false;
+ }
+
+ if (Array.isArray(node)) {
+ return node.some(function (value) {
+ return hasNode(value, fn);
+ });
+ }
+
+ var result = fn(node);
+ return typeof result === "boolean" ? result : Object.keys(node).some(function (key) {
+ return hasNode(node[key], fn);
+ });
+ }
+
+ function hasNakedLeftSide(node) {
+ return node.type === "AssignmentExpression" || node.type === "BinaryExpression" || node.type === "LogicalExpression" || node.type === "NGPipeExpression" || node.type === "ConditionalExpression" || node.type === "CallExpression" || node.type === "OptionalCallExpression" || node.type === "MemberExpression" || node.type === "OptionalMemberExpression" || node.type === "SequenceExpression" || node.type === "TaggedTemplateExpression" || node.type === "BindExpression" || node.type === "UpdateExpression" && !node.prefix || node.type === "TSAsExpression" || node.type === "TSNonNullExpression";
+ }
+
+ function getLeftSide(node) {
+ if (node.expressions) {
+ return node.expressions[0];
+ }
+
+ return node.left || node.test || node.callee || node.object || node.tag || node.argument || node.expression;
+ }
+
+ function getLeftSidePathName(path, node) {
+ if (node.expressions) {
+ return ["expressions", 0];
+ }
+
+ if (node.left) {
+ return ["left"];
+ }
+
+ if (node.test) {
+ return ["test"];
+ }
+
+ if (node.object) {
+ return ["object"];
+ }
+
+ if (node.callee) {
+ return ["callee"];
+ }
+
+ if (node.tag) {
+ return ["tag"];
+ }
+
+ if (node.argument) {
+ return ["argument"];
+ }
+
+ if (node.expression) {
+ return ["expression"];
+ }
+
+ throw new Error("Unexpected node has no left side", node);
+ }
+
+ function isLiteral(node) {
+ return node.type === "BooleanLiteral" || node.type === "DirectiveLiteral" || node.type === "Literal" || node.type === "NullLiteral" || node.type === "NumericLiteral" || node.type === "RegExpLiteral" || node.type === "StringLiteral" || node.type === "TemplateLiteral" || node.type === "TSTypeLiteral" || node.type === "JSXText";
+ }
+
+ function isNumericLiteral(node) {
+ return node.type === "NumericLiteral" || node.type === "Literal" && typeof node.value === "number";
+ }
+
+ function isStringLiteral(node) {
+ return node.type === "StringLiteral" || node.type === "Literal" && typeof node.value === "string";
+ }
+
+ function isObjectType(n) {
+ return n.type === "ObjectTypeAnnotation" || n.type === "TSTypeLiteral";
+ }
+
+ function isFunctionOrArrowExpression(node) {
+ return node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression";
+ }
+
+ function isFunctionOrArrowExpressionWithBody(node) {
+ return node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression" && node.body.type === "BlockStatement";
+ }
+
+ function isTemplateLiteral(node) {
+ return node.type === "TemplateLiteral";
+ } // `inject` is used in AngularJS 1.x, `async` in Angular 2+
+ // example: https://docs.angularjs.org/guide/unit-testing#using-beforeall-
+
+
+ function isAngularTestWrapper(node) {
+ return (node.type === "CallExpression" || node.type === "OptionalCallExpression") && node.callee.type === "Identifier" && (node.callee.name === "async" || node.callee.name === "inject" || node.callee.name === "fakeAsync");
+ }
+
+ function isJSXNode(node) {
+ return node.type === "JSXElement" || node.type === "JSXFragment";
+ }
+
+ function isTheOnlyJSXElementInMarkdown(options, path) {
+ if (options.parentParser !== "markdown" && options.parentParser !== "mdx") {
+ return false;
+ }
+
+ var node = path.getNode();
+
+ if (!node.expression || !isJSXNode(node.expression)) {
+ return false;
+ }
+
+ var parent = path.getParentNode();
+ return parent.type === "Program" && parent.body.length == 1;
+ } // Detect an expression node representing `{" "}`
+
+
+ function isJSXWhitespaceExpression(node) {
+ return node.type === "JSXExpressionContainer" && isLiteral(node.expression) && node.expression.value === " " && !node.expression.comments;
+ }
+
+ function isMemberExpressionChain(node) {
+ if (node.type !== "MemberExpression" && node.type !== "OptionalMemberExpression") {
+ return false;
+ }
+
+ if (node.object.type === "Identifier") {
+ return true;
+ }
+
+ return isMemberExpressionChain(node.object);
+ }
+
+ function isGetterOrSetter(node) {
+ return node.kind === "get" || node.kind === "set";
+ }
+
+ function sameLocStart(nodeA, nodeB, options) {
+ return options.locStart(nodeA) === options.locStart(nodeB);
+ } // TODO: This is a bad hack and we need a better way to distinguish between
+ // arrow functions and otherwise
+
+
+ function isFunctionNotation(node, options) {
+ return isGetterOrSetter(node) || sameLocStart(node, node.value, options);
+ } // Hack to differentiate between the following two which have the same ast
+ // type T = { method: () => void };
+ // type T = { method(): void };
+
+
+ function isObjectTypePropertyAFunction(node, options) {
+ return (node.type === "ObjectTypeProperty" || node.type === "ObjectTypeInternalSlot") && node.value.type === "FunctionTypeAnnotation" && !node.static && !isFunctionNotation(node, options);
+ } // Hack to differentiate between the following two which have the same ast
+ // declare function f(a): void;
+ // var f: (a) => void;
+
+
+ function isTypeAnnotationAFunction(node, options) {
+ return (node.type === "TypeAnnotation" || node.type === "TSTypeAnnotation") && node.typeAnnotation.type === "FunctionTypeAnnotation" && !node.static && !sameLocStart(node, node.typeAnnotation, options);
+ }
+
+ function isBinaryish(node) {
+ return node.type === "BinaryExpression" || node.type === "LogicalExpression" || node.type === "NGPipeExpression";
+ }
+
+ function isMemberish(node) {
+ return node.type === "MemberExpression" || node.type === "OptionalMemberExpression" || node.type === "BindExpression" && node.object;
+ }
+
+ function isSimpleFlowType(node) {
+ var flowTypeAnnotations = ["AnyTypeAnnotation", "NullLiteralTypeAnnotation", "GenericTypeAnnotation", "ThisTypeAnnotation", "NumberTypeAnnotation", "VoidTypeAnnotation", "EmptyTypeAnnotation", "MixedTypeAnnotation", "BooleanTypeAnnotation", "BooleanLiteralTypeAnnotation", "StringTypeAnnotation"];
+ return node && flowTypeAnnotations.indexOf(node.type) !== -1 && !(node.type === "GenericTypeAnnotation" && node.typeParameters);
+ }
+
+ var unitTestRe = /^(skip|[fx]?(it|describe|test))$/;
+
+ function isSkipOrOnlyBlock(node) {
+ return (node.callee.type === "MemberExpression" || node.callee.type === "OptionalMemberExpression") && node.callee.object.type === "Identifier" && node.callee.property.type === "Identifier" && unitTestRe.test(node.callee.object.name) && (node.callee.property.name === "only" || node.callee.property.name === "skip");
+ }
+
+ function isUnitTestSetUp(n) {
+ var unitTestSetUpRe = /^(before|after)(Each|All)$/;
+ return n.callee.type === "Identifier" && unitTestSetUpRe.test(n.callee.name) && n.arguments.length === 1;
+ } // eg; `describe("some string", (done) => {})`
+
+
+ function isTestCall(n, parent) {
+ if (n.type !== "CallExpression") {
+ return false;
+ }
+
+ if (n.arguments.length === 1) {
+ if (isAngularTestWrapper(n) && parent && isTestCall(parent)) {
+ return isFunctionOrArrowExpression(n.arguments[0]);
+ }
+
+ if (isUnitTestSetUp(n)) {
+ return isAngularTestWrapper(n.arguments[0]);
+ }
+ } else if (n.arguments.length === 2 || n.arguments.length === 3) {
+ if ((n.callee.type === "Identifier" && unitTestRe.test(n.callee.name) || isSkipOrOnlyBlock(n)) && (isTemplateLiteral(n.arguments[0]) || isStringLiteral(n.arguments[0]))) {
+ // it("name", () => { ... }, 2500)
+ if (n.arguments[2] && !isNumericLiteral(n.arguments[2])) {
+ return false;
+ }
+
+ return (n.arguments.length === 2 ? isFunctionOrArrowExpression(n.arguments[1]) : isFunctionOrArrowExpressionWithBody(n.arguments[1]) && n.arguments[1].params.length <= 1) || isAngularTestWrapper(n.arguments[1]);
+ }
+ }
+
+ return false;
+ }
+
+ function hasLeadingComment$2(node) {
+ return node.comments && node.comments.some(function (comment) {
+ return comment.leading;
+ });
+ }
+
+ function hasTrailingComment(node) {
+ return node.comments && node.comments.some(function (comment) {
+ return comment.trailing;
+ });
+ }
+
+ function isCallOrOptionalCallExpression(node) {
+ return node.type === "CallExpression" || node.type === "OptionalCallExpression";
+ }
+
+ function hasDanglingComments(node) {
+ return node.comments && node.comments.some(function (comment) {
+ return !comment.leading && !comment.trailing;
+ });
+ }
+ /** identify if an angular expression seems to have side effects */
+
+
+ function hasNgSideEffect(path) {
+ return hasNode(path.getValue(), function (node) {
+ switch (node.type) {
+ case undefined:
+ return false;
+
+ case "CallExpression":
+ case "OptionalCallExpression":
+ case "AssignmentExpression":
+ return true;
+ }
+ });
+ }
+
+ function isNgForOf(node, index, parentNode) {
+ return node.type === "NGMicrosyntaxKeyedExpression" && node.key.name === "of" && index === 1 && parentNode.body[0].type === "NGMicrosyntaxLet" && parentNode.body[0].value === null;
+ }
+ /** @param node {import("estree").TemplateLiteral} */
+
+
+ function isSimpleTemplateLiteral(node) {
+ if (node.expressions.length === 0) {
+ return false;
+ }
+
+ return node.expressions.every(function (expr) {
+ // Disallow comments since printDocToString can't print them here
+ if (expr.comments) {
+ return false;
+ } // Allow `x` and `this`
+
+
+ if (expr.type === "Identifier" || expr.type === "ThisExpression") {
+ return true;
+ } // Allow `a.b.c`, `a.b[c]`, and `this.x.y`
+
+
+ if (expr.type === "MemberExpression" || expr.type === "OptionalMemberExpression") {
+ var head = expr;
+
+ while (head.type === "MemberExpression" || head.type === "OptionalMemberExpression") {
+ if (head.property.type !== "Identifier" && head.property.type !== "Literal" && head.property.type !== "StringLiteral" && head.property.type !== "NumericLiteral") {
+ return false;
+ }
+
+ head = head.object;
+
+ if (head.comments) {
+ return false;
+ }
+ }
+
+ if (head.type === "Identifier" || head.type === "ThisExpression") {
+ return true;
+ }
+
+ return false;
+ }
+
+ return false;
+ });
+ }
+
+ function getFlowVariance(path) {
+ if (!path.variance) {
+ return null;
+ } // Babel 7.0 currently uses variance node type, and flow should
+ // follow suit soon:
+ // https://github.com/babel/babel/issues/4722
+
+
+ var variance = path.variance.kind || path.variance;
+
+ switch (variance) {
+ case "plus":
+ return "+";
+
+ case "minus":
+ return "-";
+
+ default:
+ /* istanbul ignore next */
+ return variance;
+ }
+ }
+
+ function classPropMayCauseASIProblems(path) {
+ var node = path.getNode();
+
+ if (node.type !== "ClassProperty") {
+ return false;
+ }
+
+ var name = node.key && node.key.name; // this isn't actually possible yet with most parsers available today
+ // so isn't properly tested yet.
+
+ if ((name === "static" || name === "get" || name === "set") && !node.value && !node.typeAnnotation) {
+ return true;
+ }
+ }
+
+ function classChildNeedsASIProtection(node) {
+ if (!node) {
+ return;
+ }
+
+ if (node.static || node.accessibility // TypeScript
+ ) {
+ return false;
+ }
+
+ if (!node.computed) {
+ var name = node.key && node.key.name;
+
+ if (name === "in" || name === "instanceof") {
+ return true;
+ }
+ }
+
+ switch (node.type) {
+ case "ClassProperty":
+ case "TSAbstractClassProperty":
+ return node.computed;
+
+ case "MethodDefinition": // Flow
+
+ case "TSAbstractMethodDefinition": // TypeScript
+
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ {
+ // Babel
+ var isAsync = node.value ? node.value.async : node.async;
+ var isGenerator = node.value ? node.value.generator : node.generator;
+
+ if (isAsync || node.kind === "get" || node.kind === "set") {
+ return false;
+ }
+
+ if (node.computed || isGenerator) {
+ return true;
+ }
+
+ return false;
+ }
+
+ case "TSIndexSignature":
+ return true;
+
+ default:
+ /* istanbul ignore next */
+ return false;
+ }
+ }
+
+ function getTypeScriptMappedTypeModifier(tokenNode, keyword) {
+ if (tokenNode === "+") {
+ return "+" + keyword;
+ } else if (tokenNode === "-") {
+ return "-" + keyword;
+ }
+
+ return keyword;
+ }
+
+ function hasNewlineBetweenOrAfterDecorators(node, options) {
+ return hasNewlineInRange$1(options.originalText, options.locStart(node.decorators[0]), options.locEnd(getLast$1(node.decorators))) || hasNewline$3(options.originalText, options.locEnd(getLast$1(node.decorators)));
+ } // Only space, newline, carriage return, and tab are treated as whitespace
+ // inside JSX.
+
+
+ var jsxWhitespaceChars = " \n\r\t";
+ var matchJsxWhitespaceRegex = new RegExp("([" + jsxWhitespaceChars + "]+)");
+ var containsNonJsxWhitespaceRegex = new RegExp("[^" + jsxWhitespaceChars + "]"); // Meaningful if it contains non-whitespace characters,
+ // or it contains whitespace without a new line.
+
+ function isMeaningfulJSXText(node) {
+ return isLiteral(node) && (containsNonJsxWhitespaceRegex.test(rawText(node)) || !/\n/.test(rawText(node)));
+ }
+
+ function hasJsxIgnoreComment(path) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+
+ if (!parent || !node || !isJSXNode(node) || !isJSXNode(parent)) {
+ return false;
+ } // Lookup the previous sibling, ignoring any empty JSXText elements
+
+
+ var index = parent.children.indexOf(node);
+ var prevSibling = null;
+
+ for (var i = index; i > 0; i--) {
+ var candidate = parent.children[i - 1];
+
+ if (candidate.type === "JSXText" && !isMeaningfulJSXText(candidate)) {
+ continue;
+ }
+
+ prevSibling = candidate;
+ break;
+ }
+
+ return prevSibling && prevSibling.type === "JSXExpressionContainer" && prevSibling.expression.type === "JSXEmptyExpression" && prevSibling.expression.comments && prevSibling.expression.comments.find(function (comment) {
+ return comment.value.trim() === "prettier-ignore";
+ });
+ }
+
+ function isEmptyJSXElement(node) {
+ if (node.children.length === 0) {
+ return true;
+ }
+
+ if (node.children.length > 1) {
+ return false;
+ } // if there is one text child and does not contain any meaningful text
+ // we can treat the element as empty.
+
+
+ var child = node.children[0];
+ return isLiteral(child) && !isMeaningfulJSXText(child);
+ }
+
+ function hasPrettierIgnore$2(path) {
+ return hasIgnoreComment$3(path) || hasJsxIgnoreComment(path);
+ }
+
+ function isLastStatement(path) {
+ var parent = path.getParentNode();
+
+ if (!parent) {
+ return true;
+ }
+
+ var node = path.getValue();
+ var body = (parent.body || parent.consequent).filter(function (stmt) {
+ return stmt.type !== "EmptyStatement";
+ });
+ return body && body[body.length - 1] === node;
+ }
+
+ function isFlowAnnotationComment(text, typeAnnotation, options) {
+ var start = options.locStart(typeAnnotation);
+ var end = skipWhitespace$1(text, options.locEnd(typeAnnotation));
+ return text.substr(start, 2) === "/*" && text.substr(end, 2) === "*/";
+ }
+
+ function hasLeadingOwnLineComment(text, node, options) {
+ if (isJSXNode(node)) {
+ return hasNodeIgnoreComment$1(node);
+ }
+
+ var res = node.comments && node.comments.some(function (comment) {
+ return comment.leading && hasNewline$3(text, options.locEnd(comment));
+ });
+ return res;
+ } // This recurses the return argument, looking for the first token
+ // (the leftmost leaf node) and, if it (or its parents) has any
+ // leadingComments, returns true (so it can be wrapped in parens).
+
+
+ function returnArgumentHasLeadingComment(options, argument) {
+ if (hasLeadingOwnLineComment(options.originalText, argument, options)) {
+ return true;
+ }
+
+ if (hasNakedLeftSide(argument)) {
+ var leftMost = argument;
+ var newLeftMost;
+
+ while (newLeftMost = getLeftSide(leftMost)) {
+ leftMost = newLeftMost;
+
+ if (hasLeadingOwnLineComment(options.originalText, leftMost, options)) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+
+ function isStringPropSafeToCoerceToIdentifier(node, options) {
+ return isStringLiteral(node.key) && isIdentifierName(node.key.value) && options.parser !== "json" && !(options.parser === "typescript" && node.type === "ClassProperty");
+ }
+
+ function isJestEachTemplateLiteral(node, parentNode) {
+ /**
+ * describe.each`table`(name, fn)
+ * describe.only.each`table`(name, fn)
+ * describe.skip.each`table`(name, fn)
+ * test.each`table`(name, fn)
+ * test.only.each`table`(name, fn)
+ * test.skip.each`table`(name, fn)
+ *
+ * Ref: https://github.com/facebook/jest/pull/6102
+ */
+ var jestEachTriggerRegex = /^[xf]?(describe|it|test)$/;
+ return parentNode.type === "TaggedTemplateExpression" && parentNode.quasi === node && parentNode.tag.type === "MemberExpression" && parentNode.tag.property.type === "Identifier" && parentNode.tag.property.name === "each" && (parentNode.tag.object.type === "Identifier" && jestEachTriggerRegex.test(parentNode.tag.object.name) || parentNode.tag.object.type === "MemberExpression" && parentNode.tag.object.property.type === "Identifier" && (parentNode.tag.object.property.name === "only" || parentNode.tag.object.property.name === "skip") && parentNode.tag.object.object.type === "Identifier" && jestEachTriggerRegex.test(parentNode.tag.object.object.name));
+ }
+
+ function templateLiteralHasNewLines(template) {
+ return template.quasis.some(function (quasi) {
+ return quasi.value.raw.includes("\n");
+ });
+ }
+
+ function isTemplateOnItsOwnLine(n, text, options) {
+ return (n.type === "TemplateLiteral" && templateLiteralHasNewLines(n) || n.type === "TaggedTemplateExpression" && templateLiteralHasNewLines(n.quasi)) && !hasNewline$3(text, options.locStart(n), {
+ backwards: true
+ });
+ }
+
+ function needsHardlineAfterDanglingComment(node) {
+ if (!node.comments) {
+ return false;
+ }
+
+ var lastDanglingComment = getLast$1(node.comments.filter(function (comment) {
+ return !comment.leading && !comment.trailing;
+ }));
+ return lastDanglingComment && !comments$1.isBlockComment(lastDanglingComment);
+ } // If we have nested conditional expressions, we want to print them in JSX mode
+ // if there's at least one JSXElement somewhere in the tree.
+ //
+ // A conditional expression chain like this should be printed in normal mode,
+ // because there aren't JSXElements anywhere in it:
+ //
+ // isA ? "A" : isB ? "B" : isC ? "C" : "Unknown";
+ //
+ // But a conditional expression chain like this should be printed in JSX mode,
+ // because there is a JSXElement in the last ConditionalExpression:
+ //
+ // isA ? "A" : isB ? "B" : isC ? "C" : <span className="warning">Unknown</span>;
+ //
+ // This type of ConditionalExpression chain is structured like this in the AST:
+ //
+ // ConditionalExpression {
+ // test: ...,
+ // consequent: ...,
+ // alternate: ConditionalExpression {
+ // test: ...,
+ // consequent: ...,
+ // alternate: ConditionalExpression {
+ // test: ...,
+ // consequent: ...,
+ // alternate: ...,
+ // }
+ // }
+ // }
+ //
+ // We want to traverse over that shape and convert it into a flat structure so
+ // that we can find if there's a JSXElement somewhere inside.
+
+
+ function getConditionalChainContents(node) {
+ // Given this code:
+ //
+ // // Using a ConditionalExpression as the consequent is uncommon, but should
+ // // be handled.
+ // A ? B : C ? D : E ? F ? G : H : I
+ //
+ // which has this AST:
+ //
+ // ConditionalExpression {
+ // test: Identifier(A),
+ // consequent: Identifier(B),
+ // alternate: ConditionalExpression {
+ // test: Identifier(C),
+ // consequent: Identifier(D),
+ // alternate: ConditionalExpression {
+ // test: Identifier(E),
+ // consequent: ConditionalExpression {
+ // test: Identifier(F),
+ // consequent: Identifier(G),
+ // alternate: Identifier(H),
+ // },
+ // alternate: Identifier(I),
+ // }
+ // }
+ // }
+ //
+ // we should return this Array:
+ //
+ // [
+ // Identifier(A),
+ // Identifier(B),
+ // Identifier(C),
+ // Identifier(D),
+ // Identifier(E),
+ // Identifier(F),
+ // Identifier(G),
+ // Identifier(H),
+ // Identifier(I)
+ // ];
+ //
+ // This loses the information about whether each node was the test,
+ // consequent, or alternate, but we don't care about that here- we are only
+ // flattening this structure to find if there's any JSXElements inside.
+ var nonConditionalExpressions = [];
+
+ function recurse(node) {
+ if (node.type === "ConditionalExpression") {
+ recurse(node.test);
+ recurse(node.consequent);
+ recurse(node.alternate);
+ } else {
+ nonConditionalExpressions.push(node);
+ }
+ }
+
+ recurse(node);
+ return nonConditionalExpressions;
+ }
+
+ function conditionalExpressionChainContainsJSX(node) {
+ return Boolean(getConditionalChainContents(node).find(isJSXNode));
+ } // Logic to check for args with multiple anonymous functions. For instance,
+ // the following call should be split on multiple lines for readability:
+ // source.pipe(map((x) => x + x), filter((x) => x % 2 === 0))
+
+
+ function isFunctionCompositionArgs(args) {
+ if (args.length <= 1) {
+ return false;
+ }
+
+ var count = 0;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = args[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var arg = _step.value;
+
+ if (isFunctionOrArrowExpression(arg)) {
+ count += 1;
+
+ if (count > 1) {
+ return true;
+ }
+ } else if (isCallOrOptionalCallExpression(arg)) {
+ var _iteratorNormalCompletion2 = true;
+ var _didIteratorError2 = false;
+ var _iteratorError2 = undefined;
+
+ try {
+ for (var _iterator2 = arg.arguments[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
+ var childArg = _step2.value;
+
+ if (isFunctionOrArrowExpression(childArg)) {
+ return true;
+ }
+ }
+ } catch (err) {
+ _didIteratorError2 = true;
+ _iteratorError2 = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
+ _iterator2.return();
+ }
+ } finally {
+ if (_didIteratorError2) {
+ throw _iteratorError2;
+ }
+ }
+ }
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return false;
+ } // Logic to determine if a call is a “long curried function call”.
+ // See https://github.com/prettier/prettier/issues/1420.
+ //
+ // `connect(a, b, c)(d)`
+ // In the above call expression, the second call is the parent node and the
+ // first call is the current node.
+
+
+ function isLongCurriedCallExpression(path) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ return isCallOrOptionalCallExpression(node) && isCallOrOptionalCallExpression(parent) && parent.callee === node && node.arguments.length > parent.arguments.length && parent.arguments.length > 0;
+ }
+
+ function rawText(node) {
+ return node.extra ? node.extra.raw : node.raw;
+ }
+
+ function identity$1(x) {
+ return x;
+ }
+
+ function isTSXFile(options) {
+ return options.filepath && /\.tsx$/i.test(options.filepath);
+ }
+
+ var utils$4 = {
+ classChildNeedsASIProtection: classChildNeedsASIProtection,
+ classPropMayCauseASIProblems: classPropMayCauseASIProblems,
+ conditionalExpressionChainContainsJSX: conditionalExpressionChainContainsJSX,
+ getFlowVariance: getFlowVariance,
+ getLeftSidePathName: getLeftSidePathName,
+ getTypeScriptMappedTypeModifier: getTypeScriptMappedTypeModifier,
+ hasDanglingComments: hasDanglingComments,
+ hasFlowAnnotationComment: hasFlowAnnotationComment,
+ hasFlowShorthandAnnotationComment: hasFlowShorthandAnnotationComment,
+ hasLeadingComment: hasLeadingComment$2,
+ hasLeadingOwnLineComment: hasLeadingOwnLineComment,
+ hasNakedLeftSide: hasNakedLeftSide,
+ hasNewlineBetweenOrAfterDecorators: hasNewlineBetweenOrAfterDecorators,
+ hasNgSideEffect: hasNgSideEffect,
+ hasNode: hasNode,
+ hasPrettierIgnore: hasPrettierIgnore$2,
+ hasTrailingComment: hasTrailingComment,
+ identity: identity$1,
+ isBinaryish: isBinaryish,
+ isCallOrOptionalCallExpression: isCallOrOptionalCallExpression,
+ isEmptyJSXElement: isEmptyJSXElement,
+ isFlowAnnotationComment: isFlowAnnotationComment,
+ isFunctionCompositionArgs: isFunctionCompositionArgs,
+ isFunctionNotation: isFunctionNotation,
+ isFunctionOrArrowExpression: isFunctionOrArrowExpression,
+ isGetterOrSetter: isGetterOrSetter,
+ isJestEachTemplateLiteral: isJestEachTemplateLiteral,
+ isJSXNode: isJSXNode,
+ isJSXWhitespaceExpression: isJSXWhitespaceExpression,
+ isLastStatement: isLastStatement,
+ isLiteral: isLiteral,
+ isLongCurriedCallExpression: isLongCurriedCallExpression,
+ isMeaningfulJSXText: isMeaningfulJSXText,
+ isMemberExpressionChain: isMemberExpressionChain,
+ isMemberish: isMemberish,
+ isNgForOf: isNgForOf,
+ isNumericLiteral: isNumericLiteral,
+ isObjectType: isObjectType,
+ isObjectTypePropertyAFunction: isObjectTypePropertyAFunction,
+ isSimpleFlowType: isSimpleFlowType,
+ isSimpleTemplateLiteral: isSimpleTemplateLiteral,
+ isStringLiteral: isStringLiteral,
+ isStringPropSafeToCoerceToIdentifier: isStringPropSafeToCoerceToIdentifier,
+ isTemplateOnItsOwnLine: isTemplateOnItsOwnLine,
+ isTestCall: isTestCall,
+ isTheOnlyJSXElementInMarkdown: isTheOnlyJSXElementInMarkdown,
+ isTSXFile: isTSXFile,
+ isTypeAnnotationAFunction: isTypeAnnotationAFunction,
+ matchJsxWhitespaceRegex: matchJsxWhitespaceRegex,
+ needsHardlineAfterDanglingComment: needsHardlineAfterDanglingComment,
+ rawText: rawText,
+ returnArgumentHasLeadingComment: returnArgumentHasLeadingComment
+ };
+
+ var getLeftSidePathName$1 = utils$4.getLeftSidePathName,
+ hasFlowShorthandAnnotationComment$1 = utils$4.hasFlowShorthandAnnotationComment,
+ hasNakedLeftSide$1 = utils$4.hasNakedLeftSide,
+ hasNode$1 = utils$4.hasNode;
+
+ function hasClosureCompilerTypeCastComment(text, path) {
+ // https://github.com/google/closure-compiler/wiki/Annotating-Types#type-casts
+ // Syntax example: var x = /** @type {string} */ (fruit);
+ var n = path.getValue();
+ return isParenthesized(n) && (hasTypeCastComment(n) || hasAncestorTypeCastComment(0)); // for sub-item: /** @type {array} */ (numberOrString).map(x => x);
+
+ function hasAncestorTypeCastComment(index) {
+ var ancestor = path.getParentNode(index);
+ return ancestor && !isParenthesized(ancestor) ? hasTypeCastComment(ancestor) || hasAncestorTypeCastComment(index + 1) : false;
+ }
+
+ function hasTypeCastComment(node) {
+ return node.comments && node.comments.some(function (comment) {
+ return comment.leading && comments$1.isBlockComment(comment) && isTypeCastComment(comment.value);
+ });
+ }
+
+ function isParenthesized(node) {
+ // Closure typecast comments only really make sense when _not_ using
+ // typescript or flow parsers, so we take advantage of the babel parser's
+ // parenthesized expressions.
+ return node.extra && node.extra.parenthesized;
+ }
+
+ function isTypeCastComment(comment) {
+ var cleaned = comment.trim().split("\n").map(function (line) {
+ return line.replace(/^[\s*]+/, "");
+ }).join(" ").trim();
+
+ if (!/^@type\s*\{[^]+\}$/.test(cleaned)) {
+ return false;
+ }
+
+ var isCompletelyClosed = false;
+ var unpairedBracketCount = 0;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = cleaned[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var char = _step.value;
+
+ if (char === "{") {
+ if (isCompletelyClosed) {
+ return false;
+ }
+
+ unpairedBracketCount++;
+ } else if (char === "}") {
+ if (unpairedBracketCount === 0) {
+ return false;
+ }
+
+ unpairedBracketCount--;
+
+ if (unpairedBracketCount === 0) {
+ isCompletelyClosed = true;
+ }
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return unpairedBracketCount === 0;
+ }
+ }
+
+ function needsParens(path, options) {
+ var parent = path.getParentNode();
+
+ if (!parent) {
+ return false;
+ }
+
+ var name = path.getName();
+ var node = path.getNode(); // If the value of this path is some child of a Node and not a Node
+ // itself, then it doesn't need parentheses. Only Node objects (in
+ // fact, only Expression nodes) need parentheses.
+
+ if (path.getValue() !== node) {
+ return false;
+ } // to avoid unexpected `}}` in HTML interpolations
+
+
+ if (options.__isInHtmlInterpolation && !options.bracketSpacing && endsWithRightBracket(node) && isFollowedByRightBracket(path)) {
+ return true;
+ } // Only statements don't need parentheses.
+
+
+ if (isStatement(node)) {
+ return false;
+ } // Closure compiler requires that type casted expressions to be surrounded by
+ // parentheses.
+
+
+ if (hasClosureCompilerTypeCastComment(options.originalText, path)) {
+ return true;
+ }
+
+ if ( // Preserve parens if we have a Flow annotation comment, unless we're using the Flow
+ // parser. The Flow parser turns Flow comments into type annotation nodes in its
+ // AST, which we handle separately.
+ options.parser !== "flow" && hasFlowShorthandAnnotationComment$1(path.getValue())) {
+ return true;
+ } // Identifiers never need parentheses.
+
+
+ if (node.type === "Identifier") {
+ // ...unless those identifiers are embed placeholders. They might be substituted by complex
+ // expressions, so the parens around them should not be dropped. Example (JS-in-HTML-in-JS):
+ // let tpl = html`<script> f((${expr}) / 2); </script>`;
+ // If the inner JS formatter removes the parens, the expression might change its meaning:
+ // f((a + b) / 2) vs f(a + b / 2)
+ if (node.extra && node.extra.parenthesized && /^PRETTIER_HTML_PLACEHOLDER_\d+_\d+_IN_JS$/.test(node.name)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ if (parent.type === "ParenthesizedExpression") {
+ return false;
+ } // Add parens around the extends clause of a class. It is needed for almost
+ // all expressions.
+
+
+ if ((parent.type === "ClassDeclaration" || parent.type === "ClassExpression") && parent.superClass === node && (node.type === "ArrowFunctionExpression" || node.type === "AssignmentExpression" || node.type === "AwaitExpression" || node.type === "BinaryExpression" || node.type === "ConditionalExpression" || node.type === "LogicalExpression" || node.type === "NewExpression" || node.type === "ObjectExpression" || node.type === "ParenthesizedExpression" || node.type === "SequenceExpression" || node.type === "TaggedTemplateExpression" || node.type === "UnaryExpression" || node.type === "UpdateExpression" || node.type === "YieldExpression")) {
+ return true;
+ } // `export default function` or `export default class` can't be followed by
+ // anything after. So an expression like `export default (function(){}).toString()`
+ // needs to be followed by a parentheses
+
+
+ if (parent.type === "ExportDefaultDeclaration") {
+ return shouldWrapFunctionForExportDefault(path, options);
+ }
+
+ if (parent.type === "Decorator" && parent.expression === node) {
+ var hasCallExpression = false;
+ var hasMemberExpression = false;
+ var current = node;
+
+ while (current) {
+ switch (current.type) {
+ case "MemberExpression":
+ hasMemberExpression = true;
+ current = current.object;
+ break;
+
+ case "CallExpression":
+ if (
+ /** @(x().y) */
+ hasMemberExpression ||
+ /** @(x().y()) */
+ hasCallExpression) {
+ return true;
+ }
+
+ hasCallExpression = true;
+ current = current.callee;
+ break;
+
+ case "Identifier":
+ return false;
+
+ default:
+ return true;
+ }
+ }
+
+ return true;
+ }
+
+ if (parent.type === "ArrowFunctionExpression" && parent.body === node && node.type !== "SequenceExpression" && // these have parens added anyway
+ util.startsWithNoLookaheadToken(node,
+ /* forbidFunctionClassAndDoExpr */
+ false) || parent.type === "ExpressionStatement" && util.startsWithNoLookaheadToken(node,
+ /* forbidFunctionClassAndDoExpr */
+ true)) {
+ return true;
+ }
+
+ switch (node.type) {
+ case "SpreadElement":
+ case "SpreadProperty":
+ return parent.type === "MemberExpression" && name === "object" && parent.object === node;
+
+ case "UpdateExpression":
+ if (parent.type === "UnaryExpression") {
+ return node.prefix && (node.operator === "++" && parent.operator === "+" || node.operator === "--" && parent.operator === "-");
+ }
+
+ // else fallthrough
+
+ case "UnaryExpression":
+ switch (parent.type) {
+ case "UnaryExpression":
+ return node.operator === parent.operator && (node.operator === "+" || node.operator === "-");
+
+ case "BindExpression":
+ return true;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return name === "object";
+
+ case "TaggedTemplateExpression":
+ return true;
+
+ case "NewExpression":
+ case "CallExpression":
+ case "OptionalCallExpression":
+ return name === "callee";
+
+ case "BinaryExpression":
+ return parent.operator === "**" && name === "left";
+
+ case "TSNonNullExpression":
+ return true;
+
+ default:
+ return false;
+ }
+
+ case "BinaryExpression":
+ {
+ if (parent.type === "UpdateExpression") {
+ return true;
+ }
+
+ var isLeftOfAForStatement = function isLeftOfAForStatement(node) {
+ var i = 0;
+
+ while (node) {
+ var _parent = path.getParentNode(i++);
+
+ if (!_parent) {
+ return false;
+ }
+
+ if (_parent.type === "ForStatement" && _parent.init === node) {
+ return true;
+ }
+
+ node = _parent;
+ }
+
+ return false;
+ };
+
+ if (node.operator === "in" && isLeftOfAForStatement(node)) {
+ return true;
+ }
+ }
+ // fallthrough
+
+ case "TSTypeAssertion":
+ case "TSAsExpression":
+ case "LogicalExpression":
+ switch (parent.type) {
+ case "ConditionalExpression":
+ return node.type === "TSAsExpression";
+
+ case "CallExpression":
+ case "NewExpression":
+ case "OptionalCallExpression":
+ return name === "callee";
+
+ case "ClassExpression":
+ case "ClassDeclaration":
+ return name === "superClass" && parent.superClass === node;
+
+ case "TSTypeAssertion":
+ case "TaggedTemplateExpression":
+ case "UnaryExpression":
+ case "JSXSpreadAttribute":
+ case "SpreadElement":
+ case "SpreadProperty":
+ case "BindExpression":
+ case "AwaitExpression":
+ case "TSAsExpression":
+ case "TSNonNullExpression":
+ case "UpdateExpression":
+ return true;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return name === "object";
+
+ case "AssignmentExpression":
+ return parent.left === node && (node.type === "TSTypeAssertion" || node.type === "TSAsExpression");
+
+ case "LogicalExpression":
+ if (node.type === "LogicalExpression") {
+ return parent.operator !== node.operator;
+ }
+
+ // else fallthrough
+
+ case "BinaryExpression":
+ {
+ if (!node.operator && node.type !== "TSTypeAssertion") {
+ return true;
+ }
+
+ var po = parent.operator;
+ var pp = util.getPrecedence(po);
+ var no = node.operator;
+ var np = util.getPrecedence(no);
+
+ if (pp > np) {
+ return true;
+ }
+
+ if (pp === np && name === "right") {
+ assert.strictEqual(parent.right, node);
+ return true;
+ }
+
+ if (pp === np && !util.shouldFlatten(po, no)) {
+ return true;
+ }
+
+ if (pp < np && no === "%") {
+ return po === "+" || po === "-";
+ } // Add parenthesis when working with bitwise operators
+ // It's not strictly needed but helps with code understanding
+
+
+ if (util.isBitwiseOperator(po)) {
+ return true;
+ }
+
+ return false;
+ }
+
+ default:
+ return false;
+ }
+
+ case "SequenceExpression":
+ switch (parent.type) {
+ case "ReturnStatement":
+ return false;
+
+ case "ForStatement":
+ // Although parentheses wouldn't hurt around sequence
+ // expressions in the head of for loops, traditional style
+ // dictates that e.g. i++, j++ should not be wrapped with
+ // parentheses.
+ return false;
+
+ case "ExpressionStatement":
+ return name !== "expression";
+
+ case "ArrowFunctionExpression":
+ // We do need parentheses, but SequenceExpressions are handled
+ // specially when printing bodies of arrow functions.
+ return name !== "body";
+
+ default:
+ // Otherwise err on the side of overparenthesization, adding
+ // explicit exceptions above if this proves overzealous.
+ return true;
+ }
+
+ case "YieldExpression":
+ if (parent.type === "UnaryExpression" || parent.type === "AwaitExpression" || parent.type === "TSAsExpression" || parent.type === "TSNonNullExpression") {
+ return true;
+ }
+
+ // else fallthrough
+
+ case "AwaitExpression":
+ switch (parent.type) {
+ case "TaggedTemplateExpression":
+ case "UnaryExpression":
+ case "BinaryExpression":
+ case "LogicalExpression":
+ case "SpreadElement":
+ case "SpreadProperty":
+ case "TSAsExpression":
+ case "TSNonNullExpression":
+ case "BindExpression":
+ return true;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return name === "object";
+
+ case "NewExpression":
+ case "CallExpression":
+ case "OptionalCallExpression":
+ return name === "callee";
+
+ case "ConditionalExpression":
+ return parent.test === node;
+
+ default:
+ return false;
+ }
+
+ case "TSConditionalType":
+ if (parent.type === "TSConditionalType" && node === parent.extendsType) {
+ return true;
+ }
+
+ // fallthrough
+
+ case "TSFunctionType":
+ case "TSConstructorType":
+ if (parent.type === "TSConditionalType" && node === parent.checkType) {
+ return true;
+ }
+
+ // fallthrough
+
+ case "TSUnionType":
+ case "TSIntersectionType":
+ if (parent.type === "TSUnionType" || parent.type === "TSIntersectionType") {
+ return true;
+ }
+
+ // fallthrough
+
+ case "TSTypeOperator":
+ case "TSInferType":
+ return parent.type === "TSArrayType" || parent.type === "TSOptionalType" || parent.type === "TSRestType" || parent.type === "TSIndexedAccessType" && node === parent.objectType || parent.type === "TSTypeOperator";
+
+ case "ArrayTypeAnnotation":
+ return parent.type === "NullableTypeAnnotation";
+
+ case "IntersectionTypeAnnotation":
+ case "UnionTypeAnnotation":
+ return parent.type === "ArrayTypeAnnotation" || parent.type === "NullableTypeAnnotation" || parent.type === "IntersectionTypeAnnotation" || parent.type === "UnionTypeAnnotation";
+
+ case "NullableTypeAnnotation":
+ return parent.type === "ArrayTypeAnnotation";
+
+ case "FunctionTypeAnnotation":
+ {
+ var ancestor = parent.type === "NullableTypeAnnotation" ? path.getParentNode(1) : parent;
+ return ancestor.type === "UnionTypeAnnotation" || ancestor.type === "IntersectionTypeAnnotation" || ancestor.type === "ArrayTypeAnnotation" || // We should check ancestor's parent to know whether the parentheses
+ // are really needed, but since ??T doesn't make sense this check
+ // will almost never be true.
+ ancestor.type === "NullableTypeAnnotation";
+ }
+
+ case "StringLiteral":
+ case "NumericLiteral":
+ case "Literal":
+ if (typeof node.value === "string" && parent.type === "ExpressionStatement" && ( // TypeScript workaround for https://github.com/JamesHenry/typescript-estree/issues/2
+ // See corresponding workaround in printer.js case: "Literal"
+ options.parser !== "typescript" && !parent.directive || options.parser === "typescript" && options.originalText.substr(options.locStart(node) - 1, 1) === "(")) {
+ // To avoid becoming a directive
+ var grandParent = path.getParentNode(1);
+ return grandParent.type === "Program" || grandParent.type === "BlockStatement";
+ }
+
+ return parent.type === "MemberExpression" && typeof node.value === "number" && name === "object" && parent.object === node;
+
+ case "AssignmentExpression":
+ {
+ var _grandParent = path.getParentNode(1);
+
+ if (parent.type === "ArrowFunctionExpression" && parent.body === node) {
+ return true;
+ } else if (parent.type === "ClassProperty" && parent.key === node && parent.computed) {
+ return false;
+ } else if (parent.type === "TSPropertySignature" && parent.name === node) {
+ return false;
+ } else if (parent.type === "ForStatement" && (parent.init === node || parent.update === node)) {
+ return false;
+ } else if (parent.type === "ExpressionStatement") {
+ return node.left.type === "ObjectPattern";
+ } else if (parent.type === "TSPropertySignature" && parent.key === node) {
+ return false;
+ } else if (parent.type === "AssignmentExpression") {
+ return false;
+ } else if (parent.type === "SequenceExpression" && _grandParent && _grandParent.type === "ForStatement" && (_grandParent.init === parent || _grandParent.update === parent)) {
+ return false;
+ } else if (parent.type === "Property" && parent.value === node) {
+ return false;
+ } else if (parent.type === "NGChainedExpression") {
+ return false;
+ }
+
+ return true;
+ }
+
+ case "ConditionalExpression":
+ switch (parent.type) {
+ case "TaggedTemplateExpression":
+ case "UnaryExpression":
+ case "SpreadElement":
+ case "SpreadProperty":
+ case "BinaryExpression":
+ case "LogicalExpression":
+ case "NGPipeExpression":
+ case "ExportDefaultDeclaration":
+ case "AwaitExpression":
+ case "JSXSpreadAttribute":
+ case "TSTypeAssertion":
+ case "TypeCastExpression":
+ case "TSAsExpression":
+ case "TSNonNullExpression":
+ return true;
+
+ case "NewExpression":
+ case "CallExpression":
+ case "OptionalCallExpression":
+ return name === "callee";
+
+ case "ConditionalExpression":
+ return name === "test" && parent.test === node;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return name === "object";
+
+ default:
+ return false;
+ }
+
+ case "FunctionExpression":
+ switch (parent.type) {
+ case "NewExpression":
+ case "CallExpression":
+ case "OptionalCallExpression":
+ // Not always necessary, but it's clearer to the reader if IIFEs are wrapped in parentheses.
+ // Is necessary if it is `expression` of `ExpressionStatement`.
+ return name === "callee";
+
+ case "TaggedTemplateExpression":
+ return true;
+ // This is basically a kind of IIFE.
+
+ default:
+ return false;
+ }
+
+ case "ArrowFunctionExpression":
+ switch (parent.type) {
+ case "NewExpression":
+ case "CallExpression":
+ case "OptionalCallExpression":
+ return name === "callee";
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ return name === "object";
+
+ case "TSAsExpression":
+ case "BindExpression":
+ case "TaggedTemplateExpression":
+ case "UnaryExpression":
+ case "LogicalExpression":
+ case "BinaryExpression":
+ case "AwaitExpression":
+ case "TSTypeAssertion":
+ return true;
+
+ case "ConditionalExpression":
+ return name === "test";
+
+ default:
+ return false;
+ }
+
+ case "ClassExpression":
+ switch (parent.type) {
+ case "NewExpression":
+ return name === "callee" && parent.callee === node;
+
+ default:
+ return false;
+ }
+
+ case "OptionalMemberExpression":
+ case "OptionalCallExpression":
+ if ((parent.type === "MemberExpression" && name === "object" || parent.type === "CallExpression" && name === "callee") && // workaround for https://github.com/facebook/flow/issues/8159
+ !(options.parser === "flow" && parent.range[0] === node.range[0])) {
+ return true;
+ }
+
+ // fallthrough
+
+ case "CallExpression":
+ case "MemberExpression":
+ case "TaggedTemplateExpression":
+ case "TSNonNullExpression":
+ if ((parent.type === "BindExpression" || parent.type === "NewExpression") && name === "callee") {
+ var object = node;
+
+ while (object) {
+ switch (object.type) {
+ case "CallExpression":
+ case "OptionalCallExpression":
+ return true;
+
+ case "MemberExpression":
+ case "OptionalMemberExpression":
+ case "BindExpression":
+ object = object.object;
+ break;
+ // tagged templates are basically member expressions from a grammar perspective
+ // see https://tc39.github.io/ecma262/#prod-MemberExpression
+
+ case "TaggedTemplateExpression":
+ object = object.tag;
+ break;
+
+ case "TSNonNullExpression":
+ object = object.expression;
+ break;
+
+ default:
+ return false;
+ }
+ }
+ }
+
+ return false;
+
+ case "BindExpression":
+ return (parent.type === "BindExpression" || parent.type === "NewExpression") && name === "callee" || (parent.type === "MemberExpression" || parent.type === "OptionalMemberExpression") && name === "object";
+
+ case "NGPipeExpression":
+ if (parent.type === "NGRoot" || parent.type === "NGMicrosyntaxExpression" || parent.type === "ObjectProperty" || parent.type === "ArrayExpression" || (parent.type === "CallExpression" || parent.type === "OptionalCallExpression") && parent.arguments[name] === node || parent.type === "NGPipeExpression" && name === "right" || parent.type === "MemberExpression" && name === "property" || parent.type === "AssignmentExpression") {
+ return false;
+ }
+
+ return true;
+
+ case "JSXFragment":
+ case "JSXElement":
+ return name === "callee" || parent.type !== "ArrayExpression" && parent.type !== "ArrowFunctionExpression" && parent.type !== "AssignmentExpression" && parent.type !== "AssignmentPattern" && parent.type !== "BinaryExpression" && parent.type !== "CallExpression" && parent.type !== "ConditionalExpression" && parent.type !== "ExpressionStatement" && parent.type !== "JsExpressionRoot" && parent.type !== "JSXAttribute" && parent.type !== "JSXElement" && parent.type !== "JSXExpressionContainer" && parent.type !== "JSXFragment" && parent.type !== "LogicalExpression" && parent.type !== "ObjectProperty" && parent.type !== "OptionalCallExpression" && parent.type !== "Property" && parent.type !== "ReturnStatement" && parent.type !== "TypeCastExpression" && parent.type !== "VariableDeclarator";
+
+ case "TypeAnnotation":
+ return name === "returnType" && parent.type === "ArrowFunctionExpression" && includesFunctionTypeInObjectType(node);
+ }
+
+ return false;
+ }
+
+ function isStatement(node) {
+ return node.type === "BlockStatement" || node.type === "BreakStatement" || node.type === "ClassBody" || node.type === "ClassDeclaration" || node.type === "ClassMethod" || node.type === "ClassProperty" || node.type === "ClassPrivateProperty" || node.type === "ContinueStatement" || node.type === "DebuggerStatement" || node.type === "DeclareClass" || node.type === "DeclareExportAllDeclaration" || node.type === "DeclareExportDeclaration" || node.type === "DeclareFunction" || node.type === "DeclareInterface" || node.type === "DeclareModule" || node.type === "DeclareModuleExports" || node.type === "DeclareVariable" || node.type === "DoWhileStatement" || node.type === "EnumDeclaration" || node.type === "ExportAllDeclaration" || node.type === "ExportDefaultDeclaration" || node.type === "ExportNamedDeclaration" || node.type === "ExpressionStatement" || node.type === "ForAwaitStatement" || node.type === "ForInStatement" || node.type === "ForOfStatement" || node.type === "ForStatement" || node.type === "FunctionDeclaration" || node.type === "IfStatement" || node.type === "ImportDeclaration" || node.type === "InterfaceDeclaration" || node.type === "LabeledStatement" || node.type === "MethodDefinition" || node.type === "ReturnStatement" || node.type === "SwitchStatement" || node.type === "ThrowStatement" || node.type === "TryStatement" || node.type === "TSDeclareFunction" || node.type === "TSEnumDeclaration" || node.type === "TSImportEqualsDeclaration" || node.type === "TSInterfaceDeclaration" || node.type === "TSModuleDeclaration" || node.type === "TSNamespaceExportDeclaration" || node.type === "TypeAlias" || node.type === "VariableDeclaration" || node.type === "WhileStatement" || node.type === "WithStatement";
+ }
+
+ function includesFunctionTypeInObjectType(node) {
+ return hasNode$1(node, function (n1) {
+ return n1.type === "ObjectTypeAnnotation" && hasNode$1(n1, function (n2) {
+ return n2.type === "FunctionTypeAnnotation" || undefined;
+ }) || undefined;
+ });
+ }
+
+ function endsWithRightBracket(node) {
+ switch (node.type) {
+ case "ObjectExpression":
+ return true;
+
+ default:
+ return false;
+ }
+ }
+
+ function isFollowedByRightBracket(path) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ var name = path.getName();
+
+ switch (parent.type) {
+ case "NGPipeExpression":
+ if (typeof name === "number" && parent.arguments[name] === node && parent.arguments.length - 1 === name) {
+ return path.callParent(isFollowedByRightBracket);
+ }
+
+ break;
+
+ case "ObjectProperty":
+ if (name === "value") {
+ var parentParent = path.getParentNode(1);
+ return parentParent.properties[parentParent.properties.length - 1] === parent;
+ }
+
+ break;
+
+ case "BinaryExpression":
+ case "LogicalExpression":
+ if (name === "right") {
+ return path.callParent(isFollowedByRightBracket);
+ }
+
+ break;
+
+ case "ConditionalExpression":
+ if (name === "alternate") {
+ return path.callParent(isFollowedByRightBracket);
+ }
+
+ break;
+
+ case "UnaryExpression":
+ if (parent.prefix) {
+ return path.callParent(isFollowedByRightBracket);
+ }
+
+ break;
+ }
+
+ return false;
+ }
+
+ function shouldWrapFunctionForExportDefault(path, options) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+
+ if (node.type === "FunctionExpression" || node.type === "ClassExpression") {
+ return parent.type === "ExportDefaultDeclaration" || // in some cases the function is already wrapped
+ // (e.g. `export default (function() {})();`)
+ // in this case we don't need to add extra parens
+ !needsParens(path, options);
+ }
+
+ if (!hasNakedLeftSide$1(node) || parent.type !== "ExportDefaultDeclaration" && needsParens(path, options)) {
+ return false;
+ }
+
+ return path.call.apply(path, [function (childPath) {
+ return shouldWrapFunctionForExportDefault(childPath, options);
+ }].concat(getLeftSidePathName$1(path, node)));
+ }
+
+ var needsParens_1 = needsParens;
+
+ var _require$$0$builders$6 = doc.builders,
+ concat$c = _require$$0$builders$6.concat,
+ join$8 = _require$$0$builders$6.join,
+ line$6 = _require$$0$builders$6.line;
+
+ function printHtmlBinding(path, options, print) {
+ var node = path.getValue();
+
+ if (options.__onHtmlBindingRoot && path.getName() === null) {
+ options.__onHtmlBindingRoot(node);
+ }
+
+ if (node.type !== "File") {
+ return;
+ }
+
+ if (options.__isVueForBindingLeft) {
+ return path.call(function (functionDeclarationPath) {
+ var _functionDeclarationP = functionDeclarationPath.getValue(),
+ params = _functionDeclarationP.params;
+
+ return concat$c([params.length > 1 ? "(" : "", join$8(concat$c([",", line$6]), functionDeclarationPath.map(print, "params")), params.length > 1 ? ")" : ""]);
+ }, "program", "body", 0);
+ }
+
+ if (options.__isVueSlotScope) {
+ return path.call(function (functionDeclarationPath) {
+ return join$8(concat$c([",", line$6]), functionDeclarationPath.map(print, "params"));
+ }, "program", "body", 0);
+ }
+ } // based on https://github.com/prettier/prettier/blob/master/src/language-html/syntax-vue.js isVueEventBindingExpression()
+
+
+ function isVueEventBindingExpression$2(node) {
+ switch (node.type) {
+ case "MemberExpression":
+ switch (node.property.type) {
+ case "Identifier":
+ case "NumericLiteral":
+ case "StringLiteral":
+ return isVueEventBindingExpression$2(node.object);
+ }
+
+ return false;
+
+ case "Identifier":
+ return true;
+
+ default:
+ return false;
+ }
+ }
+
+ var htmlBinding = {
+ isVueEventBindingExpression: isVueEventBindingExpression$2,
+ printHtmlBinding: printHtmlBinding
+ };
+
+ function preprocess$1(ast, options) {
+ switch (options.parser) {
+ case "json":
+ case "json5":
+ case "json-stringify":
+ case "__js_expression":
+ case "__vue_expression":
+ return Object.assign({}, ast, {
+ type: options.parser.startsWith("__") ? "JsExpressionRoot" : "JsonRoot",
+ node: ast,
+ comments: []
+ });
+
+ default:
+ return ast;
+ }
+ }
+
+ var preprocess_1$1 = preprocess$1;
+
+ var getParentExportDeclaration$1 = util.getParentExportDeclaration,
+ isExportDeclaration$1 = util.isExportDeclaration,
+ shouldFlatten$1 = util.shouldFlatten,
+ getNextNonSpaceNonCommentCharacter$1 = util.getNextNonSpaceNonCommentCharacter,
+ hasNewline$4 = util.hasNewline,
+ hasNewlineInRange$2 = util.hasNewlineInRange,
+ getLast$2 = util.getLast,
+ getStringWidth$2 = util.getStringWidth,
+ printString$2 = util.printString,
+ printNumber$2 = util.printNumber,
+ hasIgnoreComment$4 = util.hasIgnoreComment,
+ hasNodeIgnoreComment$2 = util.hasNodeIgnoreComment,
+ getPenultimate$1 = util.getPenultimate,
+ startsWithNoLookaheadToken$1 = util.startsWithNoLookaheadToken,
+ getIndentSize$1 = util.getIndentSize,
+ matchAncestorTypes$1 = util.matchAncestorTypes,
+ getPreferredQuote$1 = util.getPreferredQuote;
+ var isNextLineEmpty$4 = utilShared.isNextLineEmpty,
+ isNextLineEmptyAfterIndex$1 = utilShared.isNextLineEmptyAfterIndex,
+ getNextNonSpaceNonCommentCharacterIndex$2 = utilShared.getNextNonSpaceNonCommentCharacterIndex;
+ var insertPragma$7 = pragma.insertPragma;
+ var printHtmlBinding$1 = htmlBinding.printHtmlBinding,
+ isVueEventBindingExpression$3 = htmlBinding.isVueEventBindingExpression;
+ var classChildNeedsASIProtection$1 = utils$4.classChildNeedsASIProtection,
+ classPropMayCauseASIProblems$1 = utils$4.classPropMayCauseASIProblems,
+ conditionalExpressionChainContainsJSX$1 = utils$4.conditionalExpressionChainContainsJSX,
+ getFlowVariance$1 = utils$4.getFlowVariance,
+ getLeftSidePathName$2 = utils$4.getLeftSidePathName,
+ getTypeScriptMappedTypeModifier$1 = utils$4.getTypeScriptMappedTypeModifier,
+ hasDanglingComments$1 = utils$4.hasDanglingComments,
+ hasFlowAnnotationComment$1 = utils$4.hasFlowAnnotationComment,
+ hasFlowShorthandAnnotationComment$2 = utils$4.hasFlowShorthandAnnotationComment,
+ hasLeadingComment$3 = utils$4.hasLeadingComment,
+ hasLeadingOwnLineComment$1 = utils$4.hasLeadingOwnLineComment,
+ hasNakedLeftSide$2 = utils$4.hasNakedLeftSide,
+ hasNewlineBetweenOrAfterDecorators$1 = utils$4.hasNewlineBetweenOrAfterDecorators,
+ hasNgSideEffect$1 = utils$4.hasNgSideEffect,
+ hasPrettierIgnore$3 = utils$4.hasPrettierIgnore,
+ hasTrailingComment$1 = utils$4.hasTrailingComment,
+ identity$2 = utils$4.identity,
+ isBinaryish$1 = utils$4.isBinaryish,
+ isCallOrOptionalCallExpression$1 = utils$4.isCallOrOptionalCallExpression,
+ isEmptyJSXElement$1 = utils$4.isEmptyJSXElement,
+ isFlowAnnotationComment$1 = utils$4.isFlowAnnotationComment,
+ isFunctionCompositionArgs$1 = utils$4.isFunctionCompositionArgs,
+ isFunctionNotation$1 = utils$4.isFunctionNotation,
+ isFunctionOrArrowExpression$1 = utils$4.isFunctionOrArrowExpression,
+ isGetterOrSetter$1 = utils$4.isGetterOrSetter,
+ isJestEachTemplateLiteral$1 = utils$4.isJestEachTemplateLiteral,
+ isJSXNode$1 = utils$4.isJSXNode,
+ isJSXWhitespaceExpression$1 = utils$4.isJSXWhitespaceExpression,
+ isLastStatement$1 = utils$4.isLastStatement,
+ isLiteral$1 = utils$4.isLiteral,
+ isLongCurriedCallExpression$1 = utils$4.isLongCurriedCallExpression,
+ isMeaningfulJSXText$1 = utils$4.isMeaningfulJSXText,
+ isMemberExpressionChain$1 = utils$4.isMemberExpressionChain,
+ isMemberish$1 = utils$4.isMemberish,
+ isNgForOf$1 = utils$4.isNgForOf,
+ isNumericLiteral$1 = utils$4.isNumericLiteral,
+ isObjectType$1 = utils$4.isObjectType,
+ isObjectTypePropertyAFunction$1 = utils$4.isObjectTypePropertyAFunction,
+ isSimpleFlowType$1 = utils$4.isSimpleFlowType,
+ isSimpleTemplateLiteral$1 = utils$4.isSimpleTemplateLiteral,
+ isStringLiteral$1 = utils$4.isStringLiteral,
+ isStringPropSafeToCoerceToIdentifier$1 = utils$4.isStringPropSafeToCoerceToIdentifier,
+ isTemplateOnItsOwnLine$1 = utils$4.isTemplateOnItsOwnLine,
+ isTestCall$1 = utils$4.isTestCall,
+ isTheOnlyJSXElementInMarkdown$1 = utils$4.isTheOnlyJSXElementInMarkdown,
+ isTSXFile$1 = utils$4.isTSXFile,
+ isTypeAnnotationAFunction$1 = utils$4.isTypeAnnotationAFunction,
+ matchJsxWhitespaceRegex$1 = utils$4.matchJsxWhitespaceRegex,
+ needsHardlineAfterDanglingComment$1 = utils$4.needsHardlineAfterDanglingComment,
+ rawText$1 = utils$4.rawText,
+ returnArgumentHasLeadingComment$1 = utils$4.returnArgumentHasLeadingComment;
+ var needsQuoteProps = new WeakMap();
+ var _require$$5$builders = doc.builders,
+ concat$d = _require$$5$builders.concat,
+ join$9 = _require$$5$builders.join,
+ line$7 = _require$$5$builders.line,
+ hardline$9 = _require$$5$builders.hardline,
+ softline$6 = _require$$5$builders.softline,
+ literalline$4 = _require$$5$builders.literalline,
+ group$b = _require$$5$builders.group,
+ indent$7 = _require$$5$builders.indent,
+ align$1 = _require$$5$builders.align,
+ conditionalGroup$1 = _require$$5$builders.conditionalGroup,
+ fill$4 = _require$$5$builders.fill,
+ ifBreak$6 = _require$$5$builders.ifBreak,
+ breakParent$3 = _require$$5$builders.breakParent,
+ lineSuffixBoundary$1 = _require$$5$builders.lineSuffixBoundary,
+ addAlignmentToDoc$2 = _require$$5$builders.addAlignmentToDoc,
+ dedent$2 = _require$$5$builders.dedent,
+ _require$$5$utils = doc.utils,
+ willBreak$1 = _require$$5$utils.willBreak,
+ isLineNext$1 = _require$$5$utils.isLineNext,
+ isEmpty$1 = _require$$5$utils.isEmpty,
+ removeLines$2 = _require$$5$utils.removeLines,
+ printDocToString$1 = doc.printer.printDocToString;
+ var uid = 0;
+
+ function shouldPrintComma$1(options, level) {
+ level = level || "es5";
+
+ switch (options.trailingComma) {
+ case "all":
+ if (level === "all") {
+ return true;
+ }
+
+ // fallthrough
+
+ case "es5":
+ if (level === "es5") {
+ return true;
+ }
+
+ // fallthrough
+
+ case "none":
+ default:
+ return false;
+ }
+ }
+
+ function genericPrint$3(path, options, printPath, args) {
+ var node = path.getValue();
+ var needsParens = false;
+ var linesWithoutParens = printPathNoParens(path, options, printPath, args);
+
+ if (!node || isEmpty$1(linesWithoutParens)) {
+ return linesWithoutParens;
+ }
+
+ var parentExportDecl = getParentExportDeclaration$1(path);
+ var decorators = [];
+
+ if (node.type === "ClassMethod" || node.type === "ClassPrivateMethod" || node.type === "ClassProperty" || node.type === "TSAbstractClassProperty" || node.type === "ClassPrivateProperty" || node.type === "MethodDefinition" || node.type === "TSAbstractMethodDefinition") ; else if (node.decorators && node.decorators.length > 0 && // If the parent node is an export declaration and the decorator
+ // was written before the export, the export will be responsible
+ // for printing the decorators.
+ !(parentExportDecl && options.locStart(parentExportDecl, {
+ ignoreDecorators: true
+ }) > options.locStart(node.decorators[0]))) {
+ var shouldBreak = node.type === "ClassExpression" || node.type === "ClassDeclaration" || hasNewlineBetweenOrAfterDecorators$1(node, options);
+ var separator = shouldBreak ? hardline$9 : line$7;
+ path.each(function (decoratorPath) {
+ var decorator = decoratorPath.getValue();
+
+ if (decorator.expression) {
+ decorator = decorator.expression;
+ } else {
+ decorator = decorator.callee;
+ }
+
+ decorators.push(printPath(decoratorPath), separator);
+ }, "decorators");
+
+ if (parentExportDecl) {
+ decorators.unshift(hardline$9);
+ }
+ } else if (isExportDeclaration$1(node) && node.declaration && node.declaration.decorators && node.declaration.decorators.length > 0 && // Only print decorators here if they were written before the export,
+ // otherwise they are printed by the node.declaration
+ options.locStart(node, {
+ ignoreDecorators: true
+ }) > options.locStart(node.declaration.decorators[0])) {
+ // Export declarations are responsible for printing any decorators
+ // that logically apply to node.declaration.
+ path.each(function (decoratorPath) {
+ var decorator = decoratorPath.getValue();
+ var prefix = decorator.type === "Decorator" ? "" : "@";
+ decorators.push(prefix, printPath(decoratorPath), hardline$9);
+ }, "declaration", "decorators");
+ } else {
+ // Nodes with decorators can't have parentheses, so we can avoid
+ // computing pathNeedsParens() except in this case.
+ needsParens = needsParens_1(path, options);
+ }
+
+ var parts = [];
+
+ if (needsParens) {
+ parts.unshift("(");
+ }
+
+ parts.push(linesWithoutParens);
+
+ if (needsParens) {
+ var _node = path.getValue();
+
+ if (hasFlowShorthandAnnotationComment$2(_node)) {
+ parts.push(" /*");
+ parts.push(_node.trailingComments[0].value.trimLeft());
+ parts.push("*/");
+ _node.trailingComments[0].printed = true;
+ }
+
+ parts.push(")");
+ }
+
+ if (decorators.length > 0) {
+ return group$b(concat$d(decorators.concat(parts)));
+ }
+
+ return concat$d(parts);
+ }
+
+ function printDecorators(path, options, print) {
+ var node = path.getValue();
+ return group$b(concat$d([join$9(line$7, path.map(print, "decorators")), hasNewlineBetweenOrAfterDecorators$1(node, options) ? hardline$9 : line$7]));
+ }
+ /**
+ * The following is the shared logic for
+ * ternary operators, namely ConditionalExpression
+ * and TSConditionalType
+ * @typedef {Object} OperatorOptions
+ * @property {() => Array<string | Doc>} beforeParts - Parts to print before the `?`.
+ * @property {(breakClosingParen: boolean) => Array<string | Doc>} afterParts - Parts to print after the conditional expression.
+ * @property {boolean} shouldCheckJsx - Whether to check for and print in JSX mode.
+ * @property {string} conditionalNodeType - The type of the conditional expression node, ie "ConditionalExpression" or "TSConditionalType".
+ * @property {string} consequentNodePropertyName - The property at which the consequent node can be found on the main node, eg "consequent".
+ * @property {string} alternateNodePropertyName - The property at which the alternate node can be found on the main node, eg "alternate".
+ * @property {string} testNodePropertyName - The property at which the test node can be found on the main node, eg "test".
+ * @property {boolean} breakNested - Whether to break all nested ternaries when one breaks.
+ * @param {FastPath} path - The path to the ConditionalExpression/TSConditionalType node.
+ * @param {Options} options - Prettier options
+ * @param {Function} print - Print function to call recursively
+ * @param {OperatorOptions} operatorOptions
+ * @returns Doc
+ */
+
+
+ function printTernaryOperator(path, options, print, operatorOptions) {
+ var node = path.getValue();
+ var testNode = node[operatorOptions.testNodePropertyName];
+ var consequentNode = node[operatorOptions.consequentNodePropertyName];
+ var alternateNode = node[operatorOptions.alternateNodePropertyName];
+ var parts = []; // We print a ConditionalExpression in either "JSX mode" or "normal mode".
+ // See tests/jsx/conditional-expression.js for more info.
+
+ var jsxMode = false;
+ var parent = path.getParentNode();
+ var forceNoIndent = parent.type === operatorOptions.conditionalNodeType; // Find the outermost non-ConditionalExpression parent, and the outermost
+ // ConditionalExpression parent. We'll use these to determine if we should
+ // print in JSX mode.
+
+ var currentParent;
+ var previousParent;
+ var i = 0;
+
+ do {
+ previousParent = currentParent || node;
+ currentParent = path.getParentNode(i);
+ i++;
+ } while (currentParent && currentParent.type === operatorOptions.conditionalNodeType);
+
+ var firstNonConditionalParent = currentParent || parent;
+ var lastConditionalParent = previousParent;
+
+ if (operatorOptions.shouldCheckJsx && (isJSXNode$1(testNode) || isJSXNode$1(consequentNode) || isJSXNode$1(alternateNode) || conditionalExpressionChainContainsJSX$1(lastConditionalParent))) {
+ jsxMode = true;
+ forceNoIndent = true; // Even though they don't need parens, we wrap (almost) everything in
+ // parens when using ?: within JSX, because the parens are analogous to
+ // curly braces in an if statement.
+
+ var wrap = function wrap(doc) {
+ return concat$d([ifBreak$6("(", ""), indent$7(concat$d([softline$6, doc])), softline$6, ifBreak$6(")", "")]);
+ }; // The only things we don't wrap are:
+ // * Nested conditional expressions in alternates
+ // * null
+
+
+ var isNull = function isNull(node) {
+ return node.type === "NullLiteral" || node.type === "Literal" && node.value === null;
+ };
+
+ parts.push(" ? ", isNull(consequentNode) ? path.call(print, operatorOptions.consequentNodePropertyName) : wrap(path.call(print, operatorOptions.consequentNodePropertyName)), " : ", alternateNode.type === operatorOptions.conditionalNodeType || isNull(alternateNode) ? path.call(print, operatorOptions.alternateNodePropertyName) : wrap(path.call(print, operatorOptions.alternateNodePropertyName)));
+ } else {
+ // normal mode
+ var part = concat$d([line$7, "? ", consequentNode.type === operatorOptions.conditionalNodeType ? ifBreak$6("", "(") : "", align$1(2, path.call(print, operatorOptions.consequentNodePropertyName)), consequentNode.type === operatorOptions.conditionalNodeType ? ifBreak$6("", ")") : "", line$7, ": ", alternateNode.type === operatorOptions.conditionalNodeType ? path.call(print, operatorOptions.alternateNodePropertyName) : align$1(2, path.call(print, operatorOptions.alternateNodePropertyName))]);
+ parts.push(parent.type !== operatorOptions.conditionalNodeType || parent[operatorOptions.alternateNodePropertyName] === node ? part : options.useTabs ? dedent$2(indent$7(part)) : align$1(Math.max(0, options.tabWidth - 2), part));
+ } // We want a whole chain of ConditionalExpressions to all
+ // break if any of them break. That means we should only group around the
+ // outer-most ConditionalExpression.
+
+
+ var maybeGroup = function maybeGroup(doc) {
+ return operatorOptions.breakNested ? parent === firstNonConditionalParent ? group$b(doc) : doc : group$b(doc);
+ }; // Break the closing paren to keep the chain right after it:
+ // (a
+ // ? b
+ // : c
+ // ).call()
+
+
+ var breakClosingParen = !jsxMode && (parent.type === "MemberExpression" || parent.type === "OptionalMemberExpression" || parent.type === "NGPipeExpression" && parent.left === node && operatorOptions.breakNested) && !parent.computed;
+ return maybeGroup(concat$d([].concat(function (testDoc) {
+ return (
+ /**
+ * a
+ * ? b
+ * : multiline
+ * test
+ * node
+ * ^^ align(2)
+ * ? d
+ * : e
+ */
+ parent.type === operatorOptions.conditionalNodeType && parent[operatorOptions.alternateNodePropertyName] === node ? align$1(2, testDoc) : testDoc
+ );
+ }(concat$d(operatorOptions.beforeParts())), forceNoIndent ? concat$d(parts) : indent$7(concat$d(parts)), operatorOptions.afterParts(breakClosingParen))));
+ }
+
+ function printPathNoParens(path, options, print, args) {
+ var n = path.getValue();
+ var semi = options.semi ? ";" : "";
+
+ if (!n) {
+ return "";
+ }
+
+ if (typeof n === "string") {
+ return n;
+ }
+
+ var htmlBinding = printHtmlBinding$1(path, options, print);
+
+ if (htmlBinding) {
+ return htmlBinding;
+ }
+
+ var parts = [];
+
+ switch (n.type) {
+ case "JsExpressionRoot":
+ return path.call(print, "node");
+
+ case "JsonRoot":
+ return concat$d([path.call(print, "node"), hardline$9]);
+
+ case "File":
+ // Print @babel/parser's InterpreterDirective here so that
+ // leading comments on the `Program` node get printed after the hashbang.
+ if (n.program && n.program.interpreter) {
+ parts.push(path.call(function (programPath) {
+ return programPath.call(print, "interpreter");
+ }, "program"));
+ }
+
+ parts.push(path.call(print, "program"));
+ return concat$d(parts);
+
+ case "Program":
+ // Babel 6
+ if (n.directives) {
+ path.each(function (childPath) {
+ parts.push(print(childPath), semi, hardline$9);
+
+ if (isNextLineEmpty$4(options.originalText, childPath.getValue(), options)) {
+ parts.push(hardline$9);
+ }
+ }, "directives");
+ }
+
+ parts.push(path.call(function (bodyPath) {
+ return printStatementSequence(bodyPath, options, print);
+ }, "body"));
+ parts.push(comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true)); // Only force a trailing newline if there were any contents.
+
+ if (n.body.length || n.comments) {
+ parts.push(hardline$9);
+ }
+
+ return concat$d(parts);
+ // Babel extension.
+
+ case "EmptyStatement":
+ return "";
+
+ case "ExpressionStatement":
+ // Detect Flow-parsed directives
+ if (n.directive) {
+ return concat$d([nodeStr(n.expression, options, true), semi]);
+ }
+
+ if (options.parser === "__vue_event_binding") {
+ var parent = path.getParentNode();
+
+ if (parent.type === "Program" && parent.body.length === 1 && parent.body[0] === n) {
+ return concat$d([path.call(print, "expression"), isVueEventBindingExpression$3(n.expression) ? ";" : ""]);
+ }
+ } // Do not append semicolon after the only JSX element in a program
+
+
+ return concat$d([path.call(print, "expression"), isTheOnlyJSXElementInMarkdown$1(options, path) ? "" : semi]);
+ // Babel extension.
+
+ case "ParenthesizedExpression":
+ return concat$d(["(", path.call(print, "expression"), ")"]);
+
+ case "AssignmentExpression":
+ return printAssignment(n.left, path.call(print, "left"), concat$d([" ", n.operator]), n.right, path.call(print, "right"), options);
+
+ case "BinaryExpression":
+ case "LogicalExpression":
+ case "NGPipeExpression":
+ {
+ var _parent = path.getParentNode();
+
+ var parentParent = path.getParentNode(1);
+ var isInsideParenthesis = n !== _parent.body && (_parent.type === "IfStatement" || _parent.type === "WhileStatement" || _parent.type === "SwitchStatement" || _parent.type === "DoWhileStatement");
+
+ var _parts = printBinaryishExpressions(path, print, options,
+ /* isNested */
+ false, isInsideParenthesis); // if (
+ // this.hasPlugin("dynamicImports") && this.lookahead().type === tt.parenLeft
+ // ) {
+ //
+ // looks super weird, we want to break the children if the parent breaks
+ //
+ // if (
+ // this.hasPlugin("dynamicImports") &&
+ // this.lookahead().type === tt.parenLeft
+ // ) {
+
+
+ if (isInsideParenthesis) {
+ return concat$d(_parts);
+ } // Break between the parens in
+ // unaries or in a member or specific call expression, i.e.
+ //
+ // (
+ // a &&
+ // b &&
+ // c
+ // ).call()
+
+
+ if ((_parent.type === "CallExpression" || _parent.type === "OptionalCallExpression") && _parent.callee === n || _parent.type === "UnaryExpression" || (_parent.type === "MemberExpression" || _parent.type === "OptionalMemberExpression") && !_parent.computed) {
+ return group$b(concat$d([indent$7(concat$d([softline$6, concat$d(_parts)])), softline$6]));
+ } // Avoid indenting sub-expressions in some cases where the first sub-expression is already
+ // indented accordingly. We should indent sub-expressions where the first case isn't indented.
+
+
+ var shouldNotIndent = _parent.type === "ReturnStatement" || _parent.type === "JSXExpressionContainer" && parentParent.type === "JSXAttribute" || n.type !== "NGPipeExpression" && (_parent.type === "NGRoot" && options.parser === "__ng_binding" || _parent.type === "NGMicrosyntaxExpression" && parentParent.type === "NGMicrosyntax" && parentParent.body.length === 1) || n === _parent.body && _parent.type === "ArrowFunctionExpression" || n !== _parent.body && _parent.type === "ForStatement" || _parent.type === "ConditionalExpression" && parentParent.type !== "ReturnStatement" && parentParent.type !== "CallExpression" && parentParent.type !== "OptionalCallExpression";
+ var shouldIndentIfInlining = _parent.type === "AssignmentExpression" || _parent.type === "VariableDeclarator" || _parent.type === "ClassProperty" || _parent.type === "TSAbstractClassProperty" || _parent.type === "ClassPrivateProperty" || _parent.type === "ObjectProperty" || _parent.type === "Property";
+ var samePrecedenceSubExpression = isBinaryish$1(n.left) && shouldFlatten$1(n.operator, n.left.operator);
+
+ if (shouldNotIndent || shouldInlineLogicalExpression(n) && !samePrecedenceSubExpression || !shouldInlineLogicalExpression(n) && shouldIndentIfInlining) {
+ return group$b(concat$d(_parts));
+ }
+
+ if (_parts.length === 0) {
+ return "";
+ } // If the right part is a JSX node, we include it in a separate group to
+ // prevent it breaking the whole chain, so we can print the expression like:
+ //
+ // foo && bar && (
+ // <Foo>
+ // <Bar />
+ // </Foo>
+ // )
+
+
+ var hasJSX = isJSXNode$1(n.right);
+ var rest = concat$d(hasJSX ? _parts.slice(1, -1) : _parts.slice(1));
+ var groupId = Symbol("logicalChain-" + ++uid);
+ var chain = group$b(concat$d([// Don't include the initial expression in the indentation
+ // level. The first item is guaranteed to be the first
+ // left-most expression.
+ _parts.length > 0 ? _parts[0] : "", indent$7(rest)]), {
+ id: groupId
+ });
+
+ if (!hasJSX) {
+ return chain;
+ }
+
+ var jsxPart = getLast$2(_parts);
+ return group$b(concat$d([chain, ifBreak$6(indent$7(jsxPart), jsxPart, {
+ groupId: groupId
+ })]));
+ }
+
+ case "AssignmentPattern":
+ return concat$d([path.call(print, "left"), " = ", path.call(print, "right")]);
+
+ case "TSTypeAssertion":
+ {
+ var shouldBreakAfterCast = !(n.expression.type === "ArrayExpression" || n.expression.type === "ObjectExpression");
+ var castGroup = group$b(concat$d(["<", indent$7(concat$d([softline$6, path.call(print, "typeAnnotation")])), softline$6, ">"]));
+ var exprContents = concat$d([ifBreak$6("("), indent$7(concat$d([softline$6, path.call(print, "expression")])), softline$6, ifBreak$6(")")]);
+
+ if (shouldBreakAfterCast) {
+ return conditionalGroup$1([concat$d([castGroup, path.call(print, "expression")]), concat$d([castGroup, group$b(exprContents, {
+ shouldBreak: true
+ })]), concat$d([castGroup, path.call(print, "expression")])]);
+ }
+
+ return group$b(concat$d([castGroup, path.call(print, "expression")]));
+ }
+
+ case "OptionalMemberExpression":
+ case "MemberExpression":
+ {
+ var _parent2 = path.getParentNode();
+
+ var firstNonMemberParent;
+ var i = 0;
+
+ do {
+ firstNonMemberParent = path.getParentNode(i);
+ i++;
+ } while (firstNonMemberParent && (firstNonMemberParent.type === "MemberExpression" || firstNonMemberParent.type === "OptionalMemberExpression" || firstNonMemberParent.type === "TSNonNullExpression"));
+
+ var shouldInline = firstNonMemberParent && (firstNonMemberParent.type === "NewExpression" || firstNonMemberParent.type === "BindExpression" || firstNonMemberParent.type === "VariableDeclarator" && firstNonMemberParent.id.type !== "Identifier" || firstNonMemberParent.type === "AssignmentExpression" && firstNonMemberParent.left.type !== "Identifier") || n.computed || n.object.type === "Identifier" && n.property.type === "Identifier" && _parent2.type !== "MemberExpression" && _parent2.type !== "OptionalMemberExpression";
+ return concat$d([path.call(print, "object"), shouldInline ? printMemberLookup(path, options, print) : group$b(indent$7(concat$d([softline$6, printMemberLookup(path, options, print)])))]);
+ }
+
+ case "MetaProperty":
+ return concat$d([path.call(print, "meta"), ".", path.call(print, "property")]);
+
+ case "BindExpression":
+ if (n.object) {
+ parts.push(path.call(print, "object"));
+ }
+
+ parts.push(group$b(indent$7(concat$d([softline$6, printBindExpressionCallee(path, options, print)]))));
+ return concat$d(parts);
+
+ case "Identifier":
+ {
+ return concat$d([n.name, printOptionalToken(path), printTypeAnnotation(path, options, print)]);
+ }
+
+ case "V8IntrinsicIdentifier":
+ return concat$d(["%", n.name]);
+
+ case "SpreadElement":
+ case "SpreadElementPattern":
+ case "RestProperty":
+ case "SpreadProperty":
+ case "SpreadPropertyPattern":
+ case "RestElement":
+ case "ObjectTypeSpreadProperty":
+ return concat$d(["...", path.call(print, "argument"), printTypeAnnotation(path, options, print)]);
+
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ parts.push(printFunctionDeclaration(path, print, options));
+
+ if (!n.body) {
+ parts.push(semi);
+ }
+
+ return concat$d(parts);
+
+ case "ArrowFunctionExpression":
+ {
+ if (n.async) {
+ parts.push("async ");
+ }
+
+ if (shouldPrintParamsWithoutParens(path, options)) {
+ parts.push(path.call(print, "params", 0));
+ } else {
+ parts.push(group$b(concat$d([printFunctionParams(path, print, options,
+ /* expandLast */
+ args && (args.expandLastArg || args.expandFirstArg),
+ /* printTypeParams */
+ true), printReturnType(path, print, options)])));
+ }
+
+ var dangling = comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true, function (comment) {
+ var nextCharacter = getNextNonSpaceNonCommentCharacterIndex$2(options.originalText, comment, options);
+ return options.originalText.substr(nextCharacter, 2) === "=>";
+ });
+
+ if (dangling) {
+ parts.push(" ", dangling);
+ }
+
+ parts.push(" =>");
+ var body = path.call(function (bodyPath) {
+ return print(bodyPath, args);
+ }, "body"); // We want to always keep these types of nodes on the same line
+ // as the arrow.
+
+ if (!hasLeadingOwnLineComment$1(options.originalText, n.body, options) && (n.body.type === "ArrayExpression" || n.body.type === "ObjectExpression" || n.body.type === "BlockStatement" || isJSXNode$1(n.body) || isTemplateOnItsOwnLine$1(n.body, options.originalText, options) || n.body.type === "ArrowFunctionExpression" || n.body.type === "DoExpression")) {
+ return group$b(concat$d([concat$d(parts), " ", body]));
+ } // We handle sequence expressions as the body of arrows specially,
+ // so that the required parentheses end up on their own lines.
+
+
+ if (n.body.type === "SequenceExpression") {
+ return group$b(concat$d([concat$d(parts), group$b(concat$d([" (", indent$7(concat$d([softline$6, body])), softline$6, ")"]))]));
+ } // if the arrow function is expanded as last argument, we are adding a
+ // level of indentation and need to add a softline to align the closing )
+ // with the opening (, or if it's inside a JSXExpression (e.g. an attribute)
+ // we should align the expression's closing } with the line with the opening {.
+
+
+ var shouldAddSoftLine = (args && args.expandLastArg || path.getParentNode().type === "JSXExpressionContainer") && !(n.comments && n.comments.length);
+ var printTrailingComma = args && args.expandLastArg && shouldPrintComma$1(options, "all"); // In order to avoid confusion between
+ // a => a ? a : a
+ // a <= a ? a : a
+
+ var shouldAddParens = n.body.type === "ConditionalExpression" && !startsWithNoLookaheadToken$1(n.body,
+ /* forbidFunctionAndClass */
+ false);
+ return group$b(concat$d([concat$d(parts), group$b(concat$d([indent$7(concat$d([line$7, shouldAddParens ? ifBreak$6("", "(") : "", body, shouldAddParens ? ifBreak$6("", ")") : ""])), shouldAddSoftLine ? concat$d([ifBreak$6(printTrailingComma ? "," : ""), softline$6]) : ""]))]));
+ }
+
+ case "YieldExpression":
+ parts.push("yield");
+
+ if (n.delegate) {
+ parts.push("*");
+ }
+
+ if (n.argument) {
+ parts.push(" ", path.call(print, "argument"));
+ }
+
+ return concat$d(parts);
+
+ case "AwaitExpression":
+ {
+ parts.push("await ", path.call(print, "argument"));
+
+ var _parent3 = path.getParentNode();
+
+ if ((_parent3.type === "CallExpression" || _parent3.type === "OptionalCallExpression") && _parent3.callee === n || (_parent3.type === "MemberExpression" || _parent3.type === "OptionalMemberExpression") && _parent3.object === n) {
+ return group$b(concat$d([indent$7(concat$d([softline$6, concat$d(parts)])), softline$6]));
+ }
+
+ return concat$d(parts);
+ }
+
+ case "ImportSpecifier":
+ if (n.importKind) {
+ parts.push(path.call(print, "importKind"), " ");
+ }
+
+ parts.push(path.call(print, "imported"));
+
+ if (n.local && n.local.name !== n.imported.name) {
+ parts.push(" as ", path.call(print, "local"));
+ }
+
+ return concat$d(parts);
+
+ case "ExportSpecifier":
+ parts.push(path.call(print, "local"));
+
+ if (n.exported && n.exported.name !== n.local.name) {
+ parts.push(" as ", path.call(print, "exported"));
+ }
+
+ return concat$d(parts);
+
+ case "ImportNamespaceSpecifier":
+ parts.push("* as ");
+ parts.push(path.call(print, "local"));
+ return concat$d(parts);
+
+ case "ImportDefaultSpecifier":
+ return path.call(print, "local");
+
+ case "TSExportAssignment":
+ return concat$d(["export = ", path.call(print, "expression"), semi]);
+
+ case "ExportDefaultDeclaration":
+ case "ExportNamedDeclaration":
+ return printExportDeclaration(path, options, print);
+
+ case "ExportAllDeclaration":
+ parts.push("export ");
+
+ if (n.exportKind === "type") {
+ parts.push("type ");
+ }
+
+ parts.push("* from ", path.call(print, "source"), semi);
+ return concat$d(parts);
+
+ case "ExportNamespaceSpecifier":
+ case "ExportDefaultSpecifier":
+ return path.call(print, "exported");
+
+ case "ImportDeclaration":
+ {
+ parts.push("import ");
+
+ if (n.importKind && n.importKind !== "value") {
+ parts.push(n.importKind + " ");
+ }
+
+ var standalones = [];
+ var grouped = [];
+
+ if (n.specifiers && n.specifiers.length > 0) {
+ path.each(function (specifierPath) {
+ var value = specifierPath.getValue();
+
+ if (value.type === "ImportDefaultSpecifier" || value.type === "ImportNamespaceSpecifier") {
+ standalones.push(print(specifierPath));
+ } else {
+ grouped.push(print(specifierPath));
+ }
+ }, "specifiers");
+
+ if (standalones.length > 0) {
+ parts.push(join$9(", ", standalones));
+ }
+
+ if (standalones.length > 0 && grouped.length > 0) {
+ parts.push(", ");
+ }
+
+ if (grouped.length === 1 && standalones.length === 0 && n.specifiers && !n.specifiers.some(function (node) {
+ return node.comments;
+ })) {
+ parts.push(concat$d(["{", options.bracketSpacing ? " " : "", concat$d(grouped), options.bracketSpacing ? " " : "", "}"]));
+ } else if (grouped.length >= 1) {
+ parts.push(group$b(concat$d(["{", indent$7(concat$d([options.bracketSpacing ? line$7 : softline$6, join$9(concat$d([",", line$7]), grouped)])), ifBreak$6(shouldPrintComma$1(options) ? "," : ""), options.bracketSpacing ? line$7 : softline$6, "}"])));
+ }
+
+ parts.push(" from ");
+ } else if (n.importKind && n.importKind === "type" || // import {} from 'x'
+ /{\s*}/.test(options.originalText.slice(options.locStart(n), options.locStart(n.source)))) {
+ parts.push("{} from ");
+ }
+
+ parts.push(path.call(print, "source"), semi);
+ return concat$d(parts);
+ }
+
+ case "Import":
+ return "import";
+
+ case "TSModuleBlock":
+ case "BlockStatement":
+ {
+ var naked = path.call(function (bodyPath) {
+ return printStatementSequence(bodyPath, options, print);
+ }, "body");
+ var hasContent = n.body.find(function (node) {
+ return node.type !== "EmptyStatement";
+ });
+ var hasDirectives = n.directives && n.directives.length > 0;
+
+ var _parent4 = path.getParentNode();
+
+ var _parentParent = path.getParentNode(1);
+
+ if (!hasContent && !hasDirectives && !hasDanglingComments$1(n) && (_parent4.type === "ArrowFunctionExpression" || _parent4.type === "FunctionExpression" || _parent4.type === "FunctionDeclaration" || _parent4.type === "ObjectMethod" || _parent4.type === "ClassMethod" || _parent4.type === "ClassPrivateMethod" || _parent4.type === "ForStatement" || _parent4.type === "WhileStatement" || _parent4.type === "DoWhileStatement" || _parent4.type === "DoExpression" || _parent4.type === "CatchClause" && !_parentParent.finalizer || _parent4.type === "TSModuleDeclaration")) {
+ return "{}";
+ }
+
+ parts.push("{"); // Babel 6
+
+ if (hasDirectives) {
+ path.each(function (childPath) {
+ parts.push(indent$7(concat$d([hardline$9, print(childPath), semi])));
+
+ if (isNextLineEmpty$4(options.originalText, childPath.getValue(), options)) {
+ parts.push(hardline$9);
+ }
+ }, "directives");
+ }
+
+ if (hasContent) {
+ parts.push(indent$7(concat$d([hardline$9, naked])));
+ }
+
+ parts.push(comments.printDanglingComments(path, options));
+ parts.push(hardline$9, "}");
+ return concat$d(parts);
+ }
+
+ case "ReturnStatement":
+ parts.push("return");
+
+ if (n.argument) {
+ if (returnArgumentHasLeadingComment$1(options, n.argument)) {
+ parts.push(concat$d([" (", indent$7(concat$d([hardline$9, path.call(print, "argument")])), hardline$9, ")"]));
+ } else if (n.argument.type === "LogicalExpression" || n.argument.type === "BinaryExpression" || n.argument.type === "SequenceExpression") {
+ parts.push(group$b(concat$d([ifBreak$6(" (", " "), indent$7(concat$d([softline$6, path.call(print, "argument")])), softline$6, ifBreak$6(")")])));
+ } else {
+ parts.push(" ", path.call(print, "argument"));
+ }
+ }
+
+ if (hasDanglingComments$1(n)) {
+ parts.push(" ", comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true));
+ }
+
+ parts.push(semi);
+ return concat$d(parts);
+
+ case "NewExpression":
+ case "OptionalCallExpression":
+ case "CallExpression":
+ {
+ var isNew = n.type === "NewExpression";
+ var optional = printOptionalToken(path);
+
+ if ( // We want to keep CommonJS- and AMD-style require calls, and AMD-style
+ // define calls, as a unit.
+ // e.g. `define(["some/lib", (lib) => {`
+ !isNew && n.callee.type === "Identifier" && (n.callee.name === "require" || n.callee.name === "define") || // Template literals as single arguments
+ n.arguments.length === 1 && isTemplateOnItsOwnLine$1(n.arguments[0], options.originalText, options) || // Keep test declarations on a single line
+ // e.g. `it('long name', () => {`
+ !isNew && isTestCall$1(n, path.getParentNode())) {
+ return concat$d([isNew ? "new " : "", path.call(print, "callee"), optional, printFunctionTypeParameters(path, options, print), concat$d(["(", join$9(", ", path.map(print, "arguments")), ")"])]);
+ } // Inline Flow annotation comments following Identifiers in Call nodes need to
+ // stay with the Identifier. For example:
+ //
+ // foo /*:: <SomeGeneric> */(bar);
+ //
+ // Here, we ensure that such comments stay between the Identifier and the Callee.
+
+
+ var isIdentifierWithFlowAnnotation = n.callee.type === "Identifier" && hasFlowAnnotationComment$1(n.callee.trailingComments);
+
+ if (isIdentifierWithFlowAnnotation) {
+ n.callee.trailingComments[0].printed = true;
+ } // We detect calls on member lookups and possibly print them in a
+ // special chain format. See `printMemberChain` for more info.
+
+
+ if (!isNew && isMemberish$1(n.callee)) {
+ return printMemberChain(path, options, print);
+ }
+
+ var contents = concat$d([isNew ? "new " : "", path.call(print, "callee"), optional, isIdentifierWithFlowAnnotation ? "/*:: ".concat(n.callee.trailingComments[0].value.substring(2).trim(), " */") : "", printFunctionTypeParameters(path, options, print), printArgumentsList(path, options, print)]); // We group here when the callee is itself a call expression.
+ // See `isLongCurriedCallExpression` for more info.
+
+ if (isCallOrOptionalCallExpression$1(n.callee)) {
+ return group$b(contents);
+ }
+
+ return contents;
+ }
+
+ case "TSInterfaceDeclaration":
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ parts.push(n.abstract ? "abstract " : "", printTypeScriptModifiers(path, options, print), "interface ", path.call(print, "id"), n.typeParameters ? path.call(print, "typeParameters") : "", " ");
+
+ if (n.extends && n.extends.length) {
+ parts.push(group$b(indent$7(concat$d([softline$6, "extends ", (n.extends.length === 1 ? identity$2 : indent$7)(join$9(concat$d([",", line$7]), path.map(print, "extends"))), " "]))));
+ }
+
+ parts.push(path.call(print, "body"));
+ return concat$d(parts);
+
+ case "ObjectTypeInternalSlot":
+ return concat$d([n.static ? "static " : "", "[[", path.call(print, "id"), "]]", printOptionalToken(path), n.method ? "" : ": ", path.call(print, "value")]);
+
+ case "ObjectExpression":
+ case "ObjectPattern":
+ case "ObjectTypeAnnotation":
+ case "TSInterfaceBody":
+ case "TSTypeLiteral":
+ {
+ var propertiesField;
+
+ if (n.type === "TSTypeLiteral") {
+ propertiesField = "members";
+ } else if (n.type === "TSInterfaceBody") {
+ propertiesField = "body";
+ } else {
+ propertiesField = "properties";
+ }
+
+ var isTypeAnnotation = n.type === "ObjectTypeAnnotation";
+ var fields = [];
+
+ if (isTypeAnnotation) {
+ fields.push("indexers", "callProperties", "internalSlots");
+ }
+
+ fields.push(propertiesField);
+ var firstProperty = fields.map(function (field) {
+ return n[field][0];
+ }).sort(function (a, b) {
+ return options.locStart(a) - options.locStart(b);
+ })[0];
+
+ var _parent5 = path.getParentNode(0);
+
+ var isFlowInterfaceLikeBody = isTypeAnnotation && _parent5 && (_parent5.type === "InterfaceDeclaration" || _parent5.type === "DeclareInterface" || _parent5.type === "DeclareClass") && path.getName() === "body";
+ var shouldBreak = n.type === "TSInterfaceBody" || isFlowInterfaceLikeBody || n.type === "ObjectPattern" && _parent5.type !== "FunctionDeclaration" && _parent5.type !== "FunctionExpression" && _parent5.type !== "ArrowFunctionExpression" && _parent5.type !== "ObjectMethod" && _parent5.type !== "ClassMethod" && _parent5.type !== "ClassPrivateMethod" && _parent5.type !== "AssignmentPattern" && _parent5.type !== "CatchClause" && n.properties.some(function (property) {
+ return property.value && (property.value.type === "ObjectPattern" || property.value.type === "ArrayPattern");
+ }) || n.type !== "ObjectPattern" && firstProperty && hasNewlineInRange$2(options.originalText, options.locStart(n), options.locStart(firstProperty));
+ var separator = isFlowInterfaceLikeBody ? ";" : n.type === "TSInterfaceBody" || n.type === "TSTypeLiteral" ? ifBreak$6(semi, ";") : ",";
+ var leftBrace = n.exact ? "{|" : "{";
+ var rightBrace = n.exact ? "|}" : "}"; // Unfortunately, things are grouped together in the ast can be
+ // interleaved in the source code. So we need to reorder them before
+ // printing them.
+
+ var propsAndLoc = [];
+ fields.forEach(function (field) {
+ path.each(function (childPath) {
+ var node = childPath.getValue();
+ propsAndLoc.push({
+ node: node,
+ printed: print(childPath),
+ loc: options.locStart(node)
+ });
+ }, field);
+ });
+ var separatorParts = [];
+ var props = propsAndLoc.sort(function (a, b) {
+ return a.loc - b.loc;
+ }).map(function (prop) {
+ var result = concat$d(separatorParts.concat(group$b(prop.printed)));
+ separatorParts = [separator, line$7];
+
+ if ((prop.node.type === "TSPropertySignature" || prop.node.type === "TSMethodSignature" || prop.node.type === "TSConstructSignatureDeclaration") && hasNodeIgnoreComment$2(prop.node)) {
+ separatorParts.shift();
+ }
+
+ if (isNextLineEmpty$4(options.originalText, prop.node, options)) {
+ separatorParts.push(hardline$9);
+ }
+
+ return result;
+ });
+
+ if (n.inexact) {
+ props.push(concat$d(separatorParts.concat(group$b("..."))));
+ }
+
+ var lastElem = getLast$2(n[propertiesField]);
+ var canHaveTrailingSeparator = !(lastElem && (lastElem.type === "RestProperty" || lastElem.type === "RestElement" || hasNodeIgnoreComment$2(lastElem) || n.inexact));
+ var content;
+
+ if (props.length === 0) {
+ if (!hasDanglingComments$1(n)) {
+ return concat$d([leftBrace, rightBrace, printTypeAnnotation(path, options, print)]);
+ }
+
+ content = group$b(concat$d([leftBrace, comments.printDanglingComments(path, options), softline$6, rightBrace, printOptionalToken(path), printTypeAnnotation(path, options, print)]));
+ } else {
+ content = concat$d([leftBrace, indent$7(concat$d([options.bracketSpacing ? line$7 : softline$6, concat$d(props)])), ifBreak$6(canHaveTrailingSeparator && (separator !== "," || shouldPrintComma$1(options)) ? separator : ""), concat$d([options.bracketSpacing ? line$7 : softline$6, rightBrace]), printOptionalToken(path), printTypeAnnotation(path, options, print)]);
+ } // If we inline the object as first argument of the parent, we don't want
+ // to create another group so that the object breaks before the return
+ // type
+
+
+ var parentParentParent = path.getParentNode(2);
+
+ if (n.type === "ObjectPattern" && _parent5 && shouldHugArguments(_parent5) && !n.decorators && _parent5.params[0] === n || shouldHugType(n) && parentParentParent && shouldHugArguments(parentParentParent) && parentParentParent.params[0].typeAnnotation && parentParentParent.params[0].typeAnnotation.typeAnnotation === n) {
+ return content;
+ }
+
+ return group$b(content, {
+ shouldBreak: shouldBreak
+ });
+ }
+ // Babel 6
+
+ case "ObjectProperty": // Non-standard AST node type.
+
+ case "Property":
+ if (n.method || n.kind === "get" || n.kind === "set") {
+ return printMethod(path, options, print);
+ }
+
+ if (n.shorthand) {
+ parts.push(path.call(print, "value"));
+ } else {
+ parts.push(printAssignment(n.key, printPropertyKey(path, options, print), ":", n.value, path.call(print, "value"), options));
+ }
+
+ return concat$d(parts);
+ // Babel 6
+
+ case "ClassMethod":
+ case "ClassPrivateMethod":
+ case "MethodDefinition":
+ case "TSAbstractMethodDefinition":
+ if (n.decorators && n.decorators.length !== 0) {
+ parts.push(printDecorators(path, options, print));
+ }
+
+ if (n.accessibility) {
+ parts.push(n.accessibility + " ");
+ }
+
+ if (n.static) {
+ parts.push("static ");
+ }
+
+ if (n.type === "TSAbstractMethodDefinition") {
+ parts.push("abstract ");
+ }
+
+ parts.push(printMethod(path, options, print));
+ return concat$d(parts);
+
+ case "ObjectMethod":
+ return printMethod(path, options, print);
+
+ case "Decorator":
+ return concat$d(["@", path.call(print, "expression"), path.call(print, "callee")]);
+
+ case "ArrayExpression":
+ case "ArrayPattern":
+ if (n.elements.length === 0) {
+ if (!hasDanglingComments$1(n)) {
+ parts.push("[]");
+ } else {
+ parts.push(group$b(concat$d(["[", comments.printDanglingComments(path, options), softline$6, "]"])));
+ }
+ } else {
+ var _lastElem = getLast$2(n.elements);
+
+ var canHaveTrailingComma = !(_lastElem && _lastElem.type === "RestElement"); // JavaScript allows you to have empty elements in an array which
+ // changes its length based on the number of commas. The algorithm
+ // is that if the last argument is null, we need to force insert
+ // a comma to ensure JavaScript recognizes it.
+ // [,].length === 1
+ // [1,].length === 1
+ // [1,,].length === 2
+ //
+ // Note that getLast returns null if the array is empty, but
+ // we already check for an empty array just above so we are safe
+
+ var needsForcedTrailingComma = canHaveTrailingComma && _lastElem === null;
+
+ var _shouldBreak = n.elements.length > 1 && n.elements.every(function (element, i, elements) {
+ var elementType = element && element.type;
+
+ if (elementType !== "ArrayExpression" && elementType !== "ObjectExpression") {
+ return false;
+ }
+
+ var nextElement = elements[i + 1];
+
+ if (nextElement && elementType !== nextElement.type) {
+ return false;
+ }
+
+ var itemsKey = elementType === "ArrayExpression" ? "elements" : "properties";
+ return element[itemsKey] && element[itemsKey].length > 1;
+ });
+
+ parts.push(group$b(concat$d(["[", indent$7(concat$d([softline$6, printArrayItems(path, options, "elements", print)])), needsForcedTrailingComma ? "," : "", ifBreak$6(canHaveTrailingComma && !needsForcedTrailingComma && shouldPrintComma$1(options) ? "," : ""), comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), softline$6, "]"]), {
+ shouldBreak: _shouldBreak
+ }));
+ }
+
+ parts.push(printOptionalToken(path), printTypeAnnotation(path, options, print));
+ return concat$d(parts);
+
+ case "SequenceExpression":
+ {
+ var _parent6 = path.getParentNode(0);
+
+ if (_parent6.type === "ExpressionStatement" || _parent6.type === "ForStatement") {
+ // For ExpressionStatements and for-loop heads, which are among
+ // the few places a SequenceExpression appears unparenthesized, we want
+ // to indent expressions after the first.
+ var _parts2 = [];
+ path.each(function (p) {
+ if (p.getName() === 0) {
+ _parts2.push(print(p));
+ } else {
+ _parts2.push(",", indent$7(concat$d([line$7, print(p)])));
+ }
+ }, "expressions");
+ return group$b(concat$d(_parts2));
+ }
+
+ return group$b(concat$d([join$9(concat$d([",", line$7]), path.map(print, "expressions"))]));
+ }
+
+ case "ThisExpression":
+ return "this";
+
+ case "Super":
+ return "super";
+
+ case "NullLiteral":
+ // Babel 6 Literal split
+ return "null";
+
+ case "RegExpLiteral":
+ // Babel 6 Literal split
+ return printRegex(n);
+
+ case "NumericLiteral":
+ // Babel 6 Literal split
+ return printNumber$2(n.extra.raw);
+
+ case "BigIntLiteral":
+ // babel: n.extra.raw, typescript: n.raw, flow: n.bigint
+ return (n.bigint || (n.extra ? n.extra.raw : n.raw)).toLowerCase();
+
+ case "BooleanLiteral": // Babel 6 Literal split
+
+ case "StringLiteral": // Babel 6 Literal split
+
+ case "Literal":
+ {
+ if (n.regex) {
+ return printRegex(n.regex);
+ }
+
+ if (typeof n.value === "number") {
+ return printNumber$2(n.raw);
+ }
+
+ if (typeof n.value !== "string") {
+ return "" + n.value;
+ } // TypeScript workaround for https://github.com/JamesHenry/typescript-estree/issues/2
+ // See corresponding workaround in needs-parens.js
+
+
+ var grandParent = path.getParentNode(1);
+ var isTypeScriptDirective = options.parser === "typescript" && typeof n.value === "string" && grandParent && (grandParent.type === "Program" || grandParent.type === "BlockStatement");
+ return nodeStr(n, options, isTypeScriptDirective);
+ }
+
+ case "Directive":
+ return path.call(print, "value");
+ // Babel 6
+
+ case "DirectiveLiteral":
+ return nodeStr(n, options);
+
+ case "UnaryExpression":
+ parts.push(n.operator);
+
+ if (/[a-z]$/.test(n.operator)) {
+ parts.push(" ");
+ }
+
+ if (n.argument.comments && n.argument.comments.length > 0) {
+ parts.push(group$b(concat$d(["(", indent$7(concat$d([softline$6, path.call(print, "argument")])), softline$6, ")"])));
+ } else {
+ parts.push(path.call(print, "argument"));
+ }
+
+ return concat$d(parts);
+
+ case "UpdateExpression":
+ parts.push(path.call(print, "argument"), n.operator);
+
+ if (n.prefix) {
+ parts.reverse();
+ }
+
+ return concat$d(parts);
+
+ case "ConditionalExpression":
+ return printTernaryOperator(path, options, print, {
+ beforeParts: function beforeParts() {
+ return [path.call(print, "test")];
+ },
+ afterParts: function afterParts(breakClosingParen) {
+ return [breakClosingParen ? softline$6 : ""];
+ },
+ shouldCheckJsx: true,
+ conditionalNodeType: "ConditionalExpression",
+ consequentNodePropertyName: "consequent",
+ alternateNodePropertyName: "alternate",
+ testNodePropertyName: "test",
+ breakNested: true
+ });
+
+ case "VariableDeclaration":
+ {
+ var printed = path.map(function (childPath) {
+ return print(childPath);
+ }, "declarations"); // We generally want to terminate all variable declarations with a
+ // semicolon, except when they in the () part of for loops.
+
+ var parentNode = path.getParentNode();
+ var isParentForLoop = parentNode.type === "ForStatement" || parentNode.type === "ForInStatement" || parentNode.type === "ForOfStatement" || parentNode.type === "ForAwaitStatement";
+ var hasValue = n.declarations.some(function (decl) {
+ return decl.init;
+ });
+ var firstVariable;
+
+ if (printed.length === 1 && !n.declarations[0].comments) {
+ firstVariable = printed[0];
+ } else if (printed.length > 0) {
+ // Indent first var to comply with eslint one-var rule
+ firstVariable = indent$7(printed[0]);
+ }
+
+ parts = [n.declare ? "declare " : "", n.kind, firstVariable ? concat$d([" ", firstVariable]) : "", indent$7(concat$d(printed.slice(1).map(function (p) {
+ return concat$d([",", hasValue && !isParentForLoop ? hardline$9 : line$7, p]);
+ })))];
+
+ if (!(isParentForLoop && parentNode.body !== n)) {
+ parts.push(semi);
+ }
+
+ return group$b(concat$d(parts));
+ }
+
+ case "TSTypeAliasDeclaration":
+ {
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ var _printed = printAssignmentRight(n.id, n.typeAnnotation, n.typeAnnotation && path.call(print, "typeAnnotation"), options);
+
+ parts.push("type ", path.call(print, "id"), path.call(print, "typeParameters"), " =", _printed, semi);
+ return group$b(concat$d(parts));
+ }
+
+ case "VariableDeclarator":
+ return printAssignment(n.id, path.call(print, "id"), " =", n.init, n.init && path.call(print, "init"), options);
+
+ case "WithStatement":
+ return group$b(concat$d(["with (", path.call(print, "object"), ")", adjustClause(n.body, path.call(print, "body"))]));
+
+ case "IfStatement":
+ {
+ var con = adjustClause(n.consequent, path.call(print, "consequent"));
+ var opening = group$b(concat$d(["if (", group$b(concat$d([indent$7(concat$d([softline$6, path.call(print, "test")])), softline$6])), ")", con]));
+ parts.push(opening);
+
+ if (n.alternate) {
+ var commentOnOwnLine = hasTrailingComment$1(n.consequent) && n.consequent.comments.some(function (comment) {
+ return comment.trailing && !comments$1.isBlockComment(comment);
+ }) || needsHardlineAfterDanglingComment$1(n);
+ var elseOnSameLine = n.consequent.type === "BlockStatement" && !commentOnOwnLine;
+ parts.push(elseOnSameLine ? " " : hardline$9);
+
+ if (hasDanglingComments$1(n)) {
+ parts.push(comments.printDanglingComments(path, options, true), commentOnOwnLine ? hardline$9 : " ");
+ }
+
+ parts.push("else", group$b(adjustClause(n.alternate, path.call(print, "alternate"), n.alternate.type === "IfStatement")));
+ }
+
+ return concat$d(parts);
+ }
+
+ case "ForStatement":
+ {
+ var _body = adjustClause(n.body, path.call(print, "body")); // We want to keep dangling comments above the loop to stay consistent.
+ // Any comment positioned between the for statement and the parentheses
+ // is going to be printed before the statement.
+
+
+ var _dangling = comments.printDanglingComments(path, options,
+ /* sameLine */
+ true);
+
+ var printedComments = _dangling ? concat$d([_dangling, softline$6]) : "";
+
+ if (!n.init && !n.test && !n.update) {
+ return concat$d([printedComments, group$b(concat$d(["for (;;)", _body]))]);
+ }
+
+ return concat$d([printedComments, group$b(concat$d(["for (", group$b(concat$d([indent$7(concat$d([softline$6, path.call(print, "init"), ";", line$7, path.call(print, "test"), ";", line$7, path.call(print, "update")])), softline$6])), ")", _body]))]);
+ }
+
+ case "WhileStatement":
+ return group$b(concat$d(["while (", group$b(concat$d([indent$7(concat$d([softline$6, path.call(print, "test")])), softline$6])), ")", adjustClause(n.body, path.call(print, "body"))]));
+
+ case "ForInStatement":
+ // Note: esprima can't actually parse "for each (".
+ return group$b(concat$d([n.each ? "for each (" : "for (", path.call(print, "left"), " in ", path.call(print, "right"), ")", adjustClause(n.body, path.call(print, "body"))]));
+
+ case "ForOfStatement":
+ case "ForAwaitStatement":
+ {
+ // Babel 7 removed ForAwaitStatement in favor of ForOfStatement
+ // with `"await": true`:
+ // https://github.com/estree/estree/pull/138
+ var isAwait = n.type === "ForAwaitStatement" || n.await;
+ return group$b(concat$d(["for", isAwait ? " await" : "", " (", path.call(print, "left"), " of ", path.call(print, "right"), ")", adjustClause(n.body, path.call(print, "body"))]));
+ }
+
+ case "DoWhileStatement":
+ {
+ var clause = adjustClause(n.body, path.call(print, "body"));
+ var doBody = group$b(concat$d(["do", clause]));
+ parts = [doBody];
+
+ if (n.body.type === "BlockStatement") {
+ parts.push(" ");
+ } else {
+ parts.push(hardline$9);
+ }
+
+ parts.push("while (");
+ parts.push(group$b(concat$d([indent$7(concat$d([softline$6, path.call(print, "test")])), softline$6])), ")", semi);
+ return concat$d(parts);
+ }
+
+ case "DoExpression":
+ return concat$d(["do ", path.call(print, "body")]);
+
+ case "BreakStatement":
+ parts.push("break");
+
+ if (n.label) {
+ parts.push(" ", path.call(print, "label"));
+ }
+
+ parts.push(semi);
+ return concat$d(parts);
+
+ case "ContinueStatement":
+ parts.push("continue");
+
+ if (n.label) {
+ parts.push(" ", path.call(print, "label"));
+ }
+
+ parts.push(semi);
+ return concat$d(parts);
+
+ case "LabeledStatement":
+ if (n.body.type === "EmptyStatement") {
+ return concat$d([path.call(print, "label"), ":;"]);
+ }
+
+ return concat$d([path.call(print, "label"), ": ", path.call(print, "body")]);
+
+ case "TryStatement":
+ return concat$d(["try ", path.call(print, "block"), n.handler ? concat$d([" ", path.call(print, "handler")]) : "", n.finalizer ? concat$d([" finally ", path.call(print, "finalizer")]) : ""]);
+
+ case "CatchClause":
+ if (n.param) {
+ var hasComments = n.param.comments && n.param.comments.some(function (comment) {
+ return !comments$1.isBlockComment(comment) || comment.leading && hasNewline$4(options.originalText, options.locEnd(comment)) || comment.trailing && hasNewline$4(options.originalText, options.locStart(comment), {
+ backwards: true
+ });
+ });
+ var param = path.call(print, "param");
+ return concat$d(["catch ", hasComments ? concat$d(["(", indent$7(concat$d([softline$6, param])), softline$6, ") "]) : concat$d(["(", param, ") "]), path.call(print, "body")]);
+ }
+
+ return concat$d(["catch ", path.call(print, "body")]);
+
+ case "ThrowStatement":
+ return concat$d(["throw ", path.call(print, "argument"), semi]);
+ // Note: ignoring n.lexical because it has no printing consequences.
+
+ case "SwitchStatement":
+ return concat$d([group$b(concat$d(["switch (", indent$7(concat$d([softline$6, path.call(print, "discriminant")])), softline$6, ")"])), " {", n.cases.length > 0 ? indent$7(concat$d([hardline$9, join$9(hardline$9, path.map(function (casePath) {
+ var caseNode = casePath.getValue();
+ return concat$d([casePath.call(print), n.cases.indexOf(caseNode) !== n.cases.length - 1 && isNextLineEmpty$4(options.originalText, caseNode, options) ? hardline$9 : ""]);
+ }, "cases"))])) : "", hardline$9, "}"]);
+
+ case "SwitchCase":
+ {
+ if (n.test) {
+ parts.push("case ", path.call(print, "test"), ":");
+ } else {
+ parts.push("default:");
+ }
+
+ var consequent = n.consequent.filter(function (node) {
+ return node.type !== "EmptyStatement";
+ });
+
+ if (consequent.length > 0) {
+ var cons = path.call(function (consequentPath) {
+ return printStatementSequence(consequentPath, options, print);
+ }, "consequent");
+ parts.push(consequent.length === 1 && consequent[0].type === "BlockStatement" ? concat$d([" ", cons]) : indent$7(concat$d([hardline$9, cons])));
+ }
+
+ return concat$d(parts);
+ }
+ // JSX extensions below.
+
+ case "DebuggerStatement":
+ return concat$d(["debugger", semi]);
+
+ case "JSXAttribute":
+ parts.push(path.call(print, "name"));
+
+ if (n.value) {
+ var res;
+
+ if (isStringLiteral$1(n.value)) {
+ var raw = rawText$1(n.value); // Unescape all quotes so we get an accurate preferred quote
+
+ var final = raw.replace(/&apos;/g, "'").replace(/&quot;/g, '"');
+ var quote = getPreferredQuote$1(final, options.jsxSingleQuote ? "'" : '"');
+
+ var _escape = quote === "'" ? "&apos;" : "&quot;";
+
+ final = final.slice(1, -1).replace(new RegExp(quote, "g"), _escape);
+ res = concat$d([quote, final, quote]);
+ } else {
+ res = path.call(print, "value");
+ }
+
+ parts.push("=", res);
+ }
+
+ return concat$d(parts);
+
+ case "JSXIdentifier":
+ return "" + n.name;
+
+ case "JSXNamespacedName":
+ return join$9(":", [path.call(print, "namespace"), path.call(print, "name")]);
+
+ case "JSXMemberExpression":
+ return join$9(".", [path.call(print, "object"), path.call(print, "property")]);
+
+ case "TSQualifiedName":
+ return join$9(".", [path.call(print, "left"), path.call(print, "right")]);
+
+ case "JSXSpreadAttribute":
+ case "JSXSpreadChild":
+ {
+ return concat$d(["{", path.call(function (p) {
+ var printed = concat$d(["...", print(p)]);
+ var n = p.getValue();
+
+ if (!n.comments || !n.comments.length) {
+ return printed;
+ }
+
+ return concat$d([indent$7(concat$d([softline$6, comments.printComments(p, function () {
+ return printed;
+ }, options)])), softline$6]);
+ }, n.type === "JSXSpreadAttribute" ? "argument" : "expression"), "}"]);
+ }
+
+ case "JSXExpressionContainer":
+ {
+ var _parent7 = path.getParentNode(0);
+
+ var preventInline = _parent7.type === "JSXAttribute" && n.expression.comments && n.expression.comments.length > 0;
+
+ var _shouldInline = !preventInline && (n.expression.type === "ArrayExpression" || n.expression.type === "ObjectExpression" || n.expression.type === "ArrowFunctionExpression" || n.expression.type === "CallExpression" || n.expression.type === "OptionalCallExpression" || n.expression.type === "FunctionExpression" || n.expression.type === "JSXEmptyExpression" || n.expression.type === "TemplateLiteral" || n.expression.type === "TaggedTemplateExpression" || n.expression.type === "DoExpression" || isJSXNode$1(_parent7) && (n.expression.type === "ConditionalExpression" || isBinaryish$1(n.expression)));
+
+ if (_shouldInline) {
+ return group$b(concat$d(["{", path.call(print, "expression"), lineSuffixBoundary$1, "}"]));
+ }
+
+ return group$b(concat$d(["{", indent$7(concat$d([softline$6, path.call(print, "expression")])), softline$6, lineSuffixBoundary$1, "}"]));
+ }
+
+ case "JSXFragment":
+ case "JSXElement":
+ {
+ var elem = comments.printComments(path, function () {
+ return printJSXElement(path, options, print);
+ }, options);
+ return maybeWrapJSXElementInParens(path, elem, options);
+ }
+
+ case "JSXOpeningElement":
+ {
+ var _n = path.getValue();
+
+ var nameHasComments = _n.name && _n.name.comments && _n.name.comments.length > 0 || _n.typeParameters && _n.typeParameters.comments && _n.typeParameters.comments.length > 0; // Don't break self-closing elements with no attributes and no comments
+
+ if (_n.selfClosing && !_n.attributes.length && !nameHasComments) {
+ return concat$d(["<", path.call(print, "name"), path.call(print, "typeParameters"), " />"]);
+ } // don't break up opening elements with a single long text attribute
+
+
+ if (_n.attributes && _n.attributes.length === 1 && _n.attributes[0].value && isStringLiteral$1(_n.attributes[0].value) && !_n.attributes[0].value.value.includes("\n") && // We should break for the following cases:
+ // <div
+ // // comment
+ // attr="value"
+ // >
+ // <div
+ // attr="value"
+ // // comment
+ // >
+ !nameHasComments && (!_n.attributes[0].comments || !_n.attributes[0].comments.length)) {
+ return group$b(concat$d(["<", path.call(print, "name"), path.call(print, "typeParameters"), " ", concat$d(path.map(print, "attributes")), _n.selfClosing ? " />" : ">"]));
+ }
+
+ var lastAttrHasTrailingComments = _n.attributes.length && hasTrailingComment$1(getLast$2(_n.attributes));
+ var bracketSameLine = // Simple tags (no attributes and no comment in tag name) should be
+ // kept unbroken regardless of `jsxBracketSameLine`
+ !_n.attributes.length && !nameHasComments || options.jsxBracketSameLine && ( // We should print the bracket in a new line for the following cases:
+ // <div
+ // // comment
+ // >
+ // <div
+ // attr // comment
+ // >
+ !nameHasComments || _n.attributes.length) && !lastAttrHasTrailingComments; // We should print the opening element expanded if any prop value is a
+ // string literal with newlines
+
+ var _shouldBreak2 = _n.attributes && _n.attributes.some(function (attr) {
+ return attr.value && isStringLiteral$1(attr.value) && attr.value.value.includes("\n");
+ });
+
+ return group$b(concat$d(["<", path.call(print, "name"), path.call(print, "typeParameters"), concat$d([indent$7(concat$d(path.map(function (attr) {
+ return concat$d([line$7, print(attr)]);
+ }, "attributes"))), _n.selfClosing ? line$7 : bracketSameLine ? ">" : softline$6]), _n.selfClosing ? "/>" : bracketSameLine ? "" : ">"]), {
+ shouldBreak: _shouldBreak2
+ });
+ }
+
+ case "JSXClosingElement":
+ return concat$d(["</", path.call(print, "name"), ">"]);
+
+ case "JSXOpeningFragment":
+ case "JSXClosingFragment":
+ {
+ var hasComment = n.comments && n.comments.length;
+ var hasOwnLineComment = hasComment && !n.comments.every(comments$1.isBlockComment);
+ var isOpeningFragment = n.type === "JSXOpeningFragment";
+ return concat$d([isOpeningFragment ? "<" : "</", indent$7(concat$d([hasOwnLineComment ? hardline$9 : hasComment && !isOpeningFragment ? " " : "", comments.printDanglingComments(path, options, true)])), hasOwnLineComment ? hardline$9 : "", ">"]);
+ }
+
+ case "JSXText":
+ /* istanbul ignore next */
+ throw new Error("JSXTest should be handled by JSXElement");
+
+ case "JSXEmptyExpression":
+ {
+ var requiresHardline = n.comments && !n.comments.every(comments$1.isBlockComment);
+ return concat$d([comments.printDanglingComments(path, options,
+ /* sameIndent */
+ !requiresHardline), requiresHardline ? hardline$9 : ""]);
+ }
+
+ case "ClassBody":
+ if (!n.comments && n.body.length === 0) {
+ return "{}";
+ }
+
+ return concat$d(["{", n.body.length > 0 ? indent$7(concat$d([hardline$9, path.call(function (bodyPath) {
+ return printStatementSequence(bodyPath, options, print);
+ }, "body")])) : comments.printDanglingComments(path, options), hardline$9, "}"]);
+
+ case "ClassProperty":
+ case "TSAbstractClassProperty":
+ case "ClassPrivateProperty":
+ {
+ if (n.decorators && n.decorators.length !== 0) {
+ parts.push(printDecorators(path, options, print));
+ }
+
+ if (n.accessibility) {
+ parts.push(n.accessibility + " ");
+ }
+
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ if (n.static) {
+ parts.push("static ");
+ }
+
+ if (n.type === "TSAbstractClassProperty") {
+ parts.push("abstract ");
+ }
+
+ if (n.readonly) {
+ parts.push("readonly ");
+ }
+
+ var variance = getFlowVariance$1(n);
+
+ if (variance) {
+ parts.push(variance);
+ }
+
+ parts.push(printPropertyKey(path, options, print), printOptionalToken(path), printTypeAnnotation(path, options, print));
+
+ if (n.value) {
+ parts.push(" =", printAssignmentRight(n.key, n.value, path.call(print, "value"), options));
+ }
+
+ parts.push(semi);
+ return group$b(concat$d(parts));
+ }
+
+ case "ClassDeclaration":
+ case "ClassExpression":
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ parts.push(concat$d(printClass(path, options, print)));
+ return concat$d(parts);
+
+ case "TSInterfaceHeritage":
+ parts.push(path.call(print, "expression"));
+
+ if (n.typeParameters) {
+ parts.push(path.call(print, "typeParameters"));
+ }
+
+ return concat$d(parts);
+
+ case "TemplateElement":
+ return join$9(literalline$4, n.value.raw.split(/\r?\n/g));
+
+ case "TemplateLiteral":
+ {
+ var expressions = path.map(print, "expressions");
+
+ var _parentNode = path.getParentNode();
+
+ if (isJestEachTemplateLiteral$1(n, _parentNode)) {
+ var _printed2 = printJestEachTemplateLiteral(n, expressions, options);
+
+ if (_printed2) {
+ return _printed2;
+ }
+ }
+
+ var isSimple = isSimpleTemplateLiteral$1(n);
+
+ if (isSimple) {
+ expressions = expressions.map(function (doc) {
+ return printDocToString$1(doc, Object.assign({}, options, {
+ printWidth: Infinity
+ })).formatted;
+ });
+ }
+
+ parts.push(lineSuffixBoundary$1, "`");
+ path.each(function (childPath) {
+ var i = childPath.getName();
+ parts.push(print(childPath));
+
+ if (i < expressions.length) {
+ // For a template literal of the following form:
+ // `someQuery {
+ // ${call({
+ // a,
+ // b,
+ // })}
+ // }`
+ // the expression is on its own line (there is a \n in the previous
+ // quasi literal), therefore we want to indent the JavaScript
+ // expression inside at the beginning of ${ instead of the beginning
+ // of the `.
+ var tabWidth = options.tabWidth;
+ var quasi = childPath.getValue();
+ var indentSize = getIndentSize$1(quasi.value.raw, tabWidth);
+ var _printed3 = expressions[i];
+
+ if (!isSimple) {
+ // Breaks at the template element boundaries (${ and }) are preferred to breaking
+ // in the middle of a MemberExpression
+ if (n.expressions[i].comments && n.expressions[i].comments.length || n.expressions[i].type === "MemberExpression" || n.expressions[i].type === "OptionalMemberExpression" || n.expressions[i].type === "ConditionalExpression") {
+ _printed3 = concat$d([indent$7(concat$d([softline$6, _printed3])), softline$6]);
+ }
+ }
+
+ var aligned = indentSize === 0 && quasi.value.raw.endsWith("\n") ? align$1(-Infinity, _printed3) : addAlignmentToDoc$2(_printed3, indentSize, tabWidth);
+ parts.push(group$b(concat$d(["${", aligned, lineSuffixBoundary$1, "}"])));
+ }
+ }, "quasis");
+ parts.push("`");
+ return concat$d(parts);
+ }
+ // These types are unprintable because they serve as abstract
+ // supertypes for other (printable) types.
+
+ case "TaggedTemplateExpression":
+ return concat$d([path.call(print, "tag"), path.call(print, "typeParameters"), path.call(print, "quasi")]);
+
+ case "Node":
+ case "Printable":
+ case "SourceLocation":
+ case "Position":
+ case "Statement":
+ case "Function":
+ case "Pattern":
+ case "Expression":
+ case "Declaration":
+ case "Specifier":
+ case "NamedSpecifier":
+ case "Comment":
+ case "MemberTypeAnnotation": // Flow
+
+ case "Type":
+ /* istanbul ignore next */
+ throw new Error("unprintable type: " + JSON.stringify(n.type));
+ // Type Annotations for Facebook Flow, typically stripped out or
+ // transformed away before printing.
+
+ case "TypeAnnotation":
+ case "TSTypeAnnotation":
+ if (n.typeAnnotation) {
+ return path.call(print, "typeAnnotation");
+ }
+ /* istanbul ignore next */
+
+
+ return "";
+
+ case "TSTupleType":
+ case "TupleTypeAnnotation":
+ {
+ var typesField = n.type === "TSTupleType" ? "elementTypes" : "types";
+ return group$b(concat$d(["[", indent$7(concat$d([softline$6, printArrayItems(path, options, typesField, print)])), ifBreak$6(shouldPrintComma$1(options, "all") ? "," : ""), comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), softline$6, "]"]));
+ }
+
+ case "ExistsTypeAnnotation":
+ return "*";
+
+ case "EmptyTypeAnnotation":
+ return "empty";
+
+ case "AnyTypeAnnotation":
+ return "any";
+
+ case "MixedTypeAnnotation":
+ return "mixed";
+
+ case "ArrayTypeAnnotation":
+ return concat$d([path.call(print, "elementType"), "[]"]);
+
+ case "BooleanTypeAnnotation":
+ return "boolean";
+
+ case "BooleanLiteralTypeAnnotation":
+ return "" + n.value;
+
+ case "DeclareClass":
+ return printFlowDeclaration(path, printClass(path, options, print));
+
+ case "TSDeclareFunction":
+ // For TypeScript the TSDeclareFunction node shares the AST
+ // structure with FunctionDeclaration
+ return concat$d([n.declare ? "declare " : "", printFunctionDeclaration(path, print, options), semi]);
+
+ case "DeclareFunction":
+ return printFlowDeclaration(path, ["function ", path.call(print, "id"), n.predicate ? " " : "", path.call(print, "predicate"), semi]);
+
+ case "DeclareModule":
+ return printFlowDeclaration(path, ["module ", path.call(print, "id"), " ", path.call(print, "body")]);
+
+ case "DeclareModuleExports":
+ return printFlowDeclaration(path, ["module.exports", ": ", path.call(print, "typeAnnotation"), semi]);
+
+ case "DeclareVariable":
+ return printFlowDeclaration(path, ["var ", path.call(print, "id"), semi]);
+
+ case "DeclareExportAllDeclaration":
+ return concat$d(["declare export * from ", path.call(print, "source")]);
+
+ case "DeclareExportDeclaration":
+ return concat$d(["declare ", printExportDeclaration(path, options, print)]);
+
+ case "DeclareOpaqueType":
+ case "OpaqueType":
+ {
+ parts.push("opaque type ", path.call(print, "id"), path.call(print, "typeParameters"));
+
+ if (n.supertype) {
+ parts.push(": ", path.call(print, "supertype"));
+ }
+
+ if (n.impltype) {
+ parts.push(" = ", path.call(print, "impltype"));
+ }
+
+ parts.push(semi);
+
+ if (n.type === "DeclareOpaqueType") {
+ return printFlowDeclaration(path, parts);
+ }
+
+ return concat$d(parts);
+ }
+
+ case "EnumDeclaration":
+ return concat$d(["enum ", path.call(print, "id"), " ", path.call(print, "body")]);
+
+ case "EnumBooleanBody":
+ case "EnumNumberBody":
+ case "EnumStringBody":
+ case "EnumSymbolBody":
+ {
+ if (n.type === "EnumSymbolBody" || n.explicitType) {
+ var type = null;
+
+ switch (n.type) {
+ case "EnumBooleanBody":
+ type = "boolean";
+ break;
+
+ case "EnumNumberBody":
+ type = "number";
+ break;
+
+ case "EnumStringBody":
+ type = "string";
+ break;
+
+ case "EnumSymbolBody":
+ type = "symbol";
+ break;
+ }
+
+ parts.push("of ", type, " ");
+ }
+
+ if (n.members.length === 0) {
+ parts.push(group$b(concat$d(["{", comments.printDanglingComments(path, options), softline$6, "}"])));
+ } else {
+ parts.push(group$b(concat$d(["{", indent$7(concat$d([hardline$9, printArrayItems(path, options, "members", print), shouldPrintComma$1(options) ? "," : ""])), comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), hardline$9, "}"])));
+ }
+
+ return concat$d(parts);
+ }
+
+ case "EnumBooleanMember":
+ case "EnumNumberMember":
+ case "EnumStringMember":
+ return concat$d([path.call(print, "id"), " = ", _typeof(n.init) === "object" ? path.call(print, "init") : String(n.init)]);
+
+ case "EnumDefaultedMember":
+ return path.call(print, "id");
+
+ case "FunctionTypeAnnotation":
+ case "TSFunctionType":
+ {
+ // FunctionTypeAnnotation is ambiguous:
+ // declare function foo(a: B): void; OR
+ // var A: (a: B) => void;
+ var _parent8 = path.getParentNode(0);
+
+ var _parentParent2 = path.getParentNode(1);
+
+ var _parentParentParent = path.getParentNode(2);
+
+ var isArrowFunctionTypeAnnotation = n.type === "TSFunctionType" || !((_parent8.type === "ObjectTypeProperty" || _parent8.type === "ObjectTypeInternalSlot") && !getFlowVariance$1(_parent8) && !_parent8.optional && options.locStart(_parent8) === options.locStart(n) || _parent8.type === "ObjectTypeCallProperty" || _parentParentParent && _parentParentParent.type === "DeclareFunction");
+ var needsColon = isArrowFunctionTypeAnnotation && (_parent8.type === "TypeAnnotation" || _parent8.type === "TSTypeAnnotation"); // Sadly we can't put it inside of FastPath::needsColon because we are
+ // printing ":" as part of the expression and it would put parenthesis
+ // around :(
+
+ var needsParens = needsColon && isArrowFunctionTypeAnnotation && (_parent8.type === "TypeAnnotation" || _parent8.type === "TSTypeAnnotation") && _parentParent2.type === "ArrowFunctionExpression";
+
+ if (isObjectTypePropertyAFunction$1(_parent8, options)) {
+ isArrowFunctionTypeAnnotation = true;
+ needsColon = true;
+ }
+
+ if (needsParens) {
+ parts.push("(");
+ }
+
+ parts.push(printFunctionParams(path, print, options,
+ /* expandArg */
+ false,
+ /* printTypeParams */
+ true)); // The returnType is not wrapped in a TypeAnnotation, so the colon
+ // needs to be added separately.
+
+ if (n.returnType || n.predicate || n.typeAnnotation) {
+ parts.push(isArrowFunctionTypeAnnotation ? " => " : ": ", path.call(print, "returnType"), path.call(print, "predicate"), path.call(print, "typeAnnotation"));
+ }
+
+ if (needsParens) {
+ parts.push(")");
+ }
+
+ return group$b(concat$d(parts));
+ }
+
+ case "TSRestType":
+ return concat$d(["...", path.call(print, "typeAnnotation")]);
+
+ case "TSOptionalType":
+ return concat$d([path.call(print, "typeAnnotation"), "?"]);
+
+ case "FunctionTypeParam":
+ return concat$d([path.call(print, "name"), printOptionalToken(path), n.name ? ": " : "", path.call(print, "typeAnnotation")]);
+
+ case "GenericTypeAnnotation":
+ return concat$d([path.call(print, "id"), path.call(print, "typeParameters")]);
+
+ case "DeclareInterface":
+ case "InterfaceDeclaration":
+ case "InterfaceTypeAnnotation":
+ {
+ if (n.type === "DeclareInterface" || n.declare) {
+ parts.push("declare ");
+ }
+
+ parts.push("interface");
+
+ if (n.type === "DeclareInterface" || n.type === "InterfaceDeclaration") {
+ parts.push(" ", path.call(print, "id"), path.call(print, "typeParameters"));
+ }
+
+ if (n["extends"].length > 0) {
+ parts.push(group$b(indent$7(concat$d([line$7, "extends ", (n.extends.length === 1 ? identity$2 : indent$7)(join$9(concat$d([",", line$7]), path.map(print, "extends")))]))));
+ }
+
+ parts.push(" ", path.call(print, "body"));
+ return group$b(concat$d(parts));
+ }
+
+ case "ClassImplements":
+ case "InterfaceExtends":
+ return concat$d([path.call(print, "id"), path.call(print, "typeParameters")]);
+
+ case "TSClassImplements":
+ return concat$d([path.call(print, "expression"), path.call(print, "typeParameters")]);
+
+ case "TSIntersectionType":
+ case "IntersectionTypeAnnotation":
+ {
+ var types = path.map(print, "types");
+ var result = [];
+ var wasIndented = false;
+
+ for (var _i = 0; _i < types.length; ++_i) {
+ if (_i === 0) {
+ result.push(types[_i]);
+ } else if (isObjectType$1(n.types[_i - 1]) && isObjectType$1(n.types[_i])) {
+ // If both are objects, don't indent
+ result.push(concat$d([" & ", wasIndented ? indent$7(types[_i]) : types[_i]]));
+ } else if (!isObjectType$1(n.types[_i - 1]) && !isObjectType$1(n.types[_i])) {
+ // If no object is involved, go to the next line if it breaks
+ result.push(indent$7(concat$d([" &", line$7, types[_i]])));
+ } else {
+ // If you go from object to non-object or vis-versa, then inline it
+ if (_i > 1) {
+ wasIndented = true;
+ }
+
+ result.push(" & ", _i > 1 ? indent$7(types[_i]) : types[_i]);
+ }
+ }
+
+ return group$b(concat$d(result));
+ }
+
+ case "TSUnionType":
+ case "UnionTypeAnnotation":
+ {
+ // single-line variation
+ // A | B | C
+ // multi-line variation
+ // | A
+ // | B
+ // | C
+ var _parent9 = path.getParentNode(); // If there's a leading comment, the parent is doing the indentation
+
+
+ var shouldIndent = _parent9.type !== "TypeParameterInstantiation" && _parent9.type !== "TSTypeParameterInstantiation" && _parent9.type !== "GenericTypeAnnotation" && _parent9.type !== "TSTypeReference" && _parent9.type !== "TSTypeAssertion" && _parent9.type !== "TupleTypeAnnotation" && _parent9.type !== "TSTupleType" && !(_parent9.type === "FunctionTypeParam" && !_parent9.name) && !((_parent9.type === "TypeAlias" || _parent9.type === "VariableDeclarator" || _parent9.type === "TSTypeAliasDeclaration") && hasLeadingOwnLineComment$1(options.originalText, n, options)); // {
+ // a: string
+ // } | null | void
+ // should be inlined and not be printed in the multi-line variant
+
+ var shouldHug = shouldHugType(n); // We want to align the children but without its comment, so it looks like
+ // | child1
+ // // comment
+ // | child2
+
+ var _printed4 = path.map(function (typePath) {
+ var printedType = typePath.call(print);
+
+ if (!shouldHug) {
+ printedType = align$1(2, printedType);
+ }
+
+ return comments.printComments(typePath, function () {
+ return printedType;
+ }, options);
+ }, "types");
+
+ if (shouldHug) {
+ return join$9(" | ", _printed4);
+ }
+
+ var shouldAddStartLine = shouldIndent && !hasLeadingOwnLineComment$1(options.originalText, n, options);
+ var code = concat$d([ifBreak$6(concat$d([shouldAddStartLine ? line$7 : "", "| "])), join$9(concat$d([line$7, "| "]), _printed4)]);
+
+ if (needsParens_1(path, options)) {
+ return group$b(concat$d([indent$7(code), softline$6]));
+ }
+
+ if (_parent9.type === "TupleTypeAnnotation" && _parent9.types.length > 1 || _parent9.type === "TSTupleType" && _parent9.elementTypes.length > 1) {
+ return group$b(concat$d([indent$7(concat$d([ifBreak$6(concat$d(["(", softline$6])), code])), softline$6, ifBreak$6(")")]));
+ }
+
+ return group$b(shouldIndent ? indent$7(code) : code);
+ }
+
+ case "NullableTypeAnnotation":
+ return concat$d(["?", path.call(print, "typeAnnotation")]);
+
+ case "TSNullKeyword":
+ case "NullLiteralTypeAnnotation":
+ return "null";
+
+ case "ThisTypeAnnotation":
+ return "this";
+
+ case "NumberTypeAnnotation":
+ return "number";
+
+ case "ObjectTypeCallProperty":
+ if (n.static) {
+ parts.push("static ");
+ }
+
+ parts.push(path.call(print, "value"));
+ return concat$d(parts);
+
+ case "ObjectTypeIndexer":
+ {
+ var _variance = getFlowVariance$1(n);
+
+ return concat$d([_variance || "", "[", path.call(print, "id"), n.id ? ": " : "", path.call(print, "key"), "]: ", path.call(print, "value")]);
+ }
+
+ case "ObjectTypeProperty":
+ {
+ var _variance2 = getFlowVariance$1(n);
+
+ var modifier = "";
+
+ if (n.proto) {
+ modifier = "proto ";
+ } else if (n.static) {
+ modifier = "static ";
+ }
+
+ return concat$d([modifier, isGetterOrSetter$1(n) ? n.kind + " " : "", _variance2 || "", printPropertyKey(path, options, print), printOptionalToken(path), isFunctionNotation$1(n, options) ? "" : ": ", path.call(print, "value")]);
+ }
+
+ case "QualifiedTypeIdentifier":
+ return concat$d([path.call(print, "qualification"), ".", path.call(print, "id")]);
+
+ case "StringLiteralTypeAnnotation":
+ return nodeStr(n, options);
+
+ case "NumberLiteralTypeAnnotation":
+ assert.strictEqual(_typeof(n.value), "number");
+
+ if (n.extra != null) {
+ return printNumber$2(n.extra.raw);
+ }
+
+ return printNumber$2(n.raw);
+
+ case "StringTypeAnnotation":
+ return "string";
+
+ case "DeclareTypeAlias":
+ case "TypeAlias":
+ {
+ if (n.type === "DeclareTypeAlias" || n.declare) {
+ parts.push("declare ");
+ }
+
+ var _printed5 = printAssignmentRight(n.id, n.right, path.call(print, "right"), options);
+
+ parts.push("type ", path.call(print, "id"), path.call(print, "typeParameters"), " =", _printed5, semi);
+ return group$b(concat$d(parts));
+ }
+
+ case "TypeCastExpression":
+ {
+ var value = path.getValue(); // Flow supports a comment syntax for specifying type annotations: https://flow.org/en/docs/types/comments/.
+ // Unfortunately, its parser doesn't differentiate between comment annotations and regular
+ // annotations when producing an AST. So to preserve parentheses around type casts that use
+ // the comment syntax, we need to hackily read the source itself to see if the code contains
+ // a type annotation comment.
+ //
+ // Note that we're able to use the normal whitespace regex here because the Flow parser has
+ // already deemed this AST node to be a type cast. Only the Babel parser needs the
+ // non-line-break whitespace regex, which is why hasFlowShorthandAnnotationComment() is
+ // implemented differently.
+
+ var commentSyntax = value && value.typeAnnotation && value.typeAnnotation.range && options.originalText.substring(value.typeAnnotation.range[0]).match(/^\/\*\s*:/);
+ return concat$d(["(", path.call(print, "expression"), commentSyntax ? " /*" : "", ": ", path.call(print, "typeAnnotation"), commentSyntax ? " */" : "", ")"]);
+ }
+
+ case "TypeParameterDeclaration":
+ case "TypeParameterInstantiation":
+ {
+ var _value = path.getValue();
+
+ var commentStart = _value.range ? options.originalText.substring(0, _value.range[0]).lastIndexOf("/*") : -1; // As noted in the TypeCastExpression comments above, we're able to use a normal whitespace regex here
+ // because we know for sure that this is a type definition.
+
+ var _commentSyntax = commentStart >= 0 && options.originalText.substring(commentStart).match(/^\/\*\s*::/);
+
+ if (_commentSyntax) {
+ return concat$d(["/*:: ", printTypeParameters(path, options, print, "params"), " */"]);
+ }
+
+ return printTypeParameters(path, options, print, "params");
+ }
+
+ case "TSTypeParameterDeclaration":
+ case "TSTypeParameterInstantiation":
+ return printTypeParameters(path, options, print, "params");
+
+ case "TSTypeParameter":
+ case "TypeParameter":
+ {
+ var _parent10 = path.getParentNode();
+
+ if (_parent10.type === "TSMappedType") {
+ parts.push("[", path.call(print, "name"));
+
+ if (n.constraint) {
+ parts.push(" in ", path.call(print, "constraint"));
+ }
+
+ parts.push("]");
+ return concat$d(parts);
+ }
+
+ var _variance3 = getFlowVariance$1(n);
+
+ if (_variance3) {
+ parts.push(_variance3);
+ }
+
+ parts.push(path.call(print, "name"));
+
+ if (n.bound) {
+ parts.push(": ");
+ parts.push(path.call(print, "bound"));
+ }
+
+ if (n.constraint) {
+ parts.push(" extends ", path.call(print, "constraint"));
+ }
+
+ if (n["default"]) {
+ parts.push(" = ", path.call(print, "default"));
+ } // Keep comma if the file extension is .tsx and
+ // has one type parameter that isn't extend with any types.
+ // Because, otherwise formatted result will be invalid as tsx.
+
+
+ var _grandParent = path.getNode(2);
+
+ if (_parent10.params && _parent10.params.length === 1 && isTSXFile$1(options) && !n.constraint && _grandParent.type === "ArrowFunctionExpression") {
+ parts.push(",");
+ }
+
+ return concat$d(parts);
+ }
+
+ case "TypeofTypeAnnotation":
+ return concat$d(["typeof ", path.call(print, "argument")]);
+
+ case "VoidTypeAnnotation":
+ return "void";
+
+ case "InferredPredicate":
+ return "%checks";
+ // Unhandled types below. If encountered, nodes of these types should
+ // be either left alone or desugared into AST types that are fully
+ // supported by the pretty-printer.
+
+ case "DeclaredPredicate":
+ return concat$d(["%checks(", path.call(print, "value"), ")"]);
+
+ case "TSAbstractKeyword":
+ return "abstract";
+
+ case "TSAnyKeyword":
+ return "any";
+
+ case "TSAsyncKeyword":
+ return "async";
+
+ case "TSBooleanKeyword":
+ return "boolean";
+
+ case "TSBigIntKeyword":
+ return "bigint";
+
+ case "TSConstKeyword":
+ return "const";
+
+ case "TSDeclareKeyword":
+ return "declare";
+
+ case "TSExportKeyword":
+ return "export";
+
+ case "TSNeverKeyword":
+ return "never";
+
+ case "TSNumberKeyword":
+ return "number";
+
+ case "TSObjectKeyword":
+ return "object";
+
+ case "TSProtectedKeyword":
+ return "protected";
+
+ case "TSPrivateKeyword":
+ return "private";
+
+ case "TSPublicKeyword":
+ return "public";
+
+ case "TSReadonlyKeyword":
+ return "readonly";
+
+ case "TSSymbolKeyword":
+ return "symbol";
+
+ case "TSStaticKeyword":
+ return "static";
+
+ case "TSStringKeyword":
+ return "string";
+
+ case "TSUndefinedKeyword":
+ return "undefined";
+
+ case "TSUnknownKeyword":
+ return "unknown";
+
+ case "TSVoidKeyword":
+ return "void";
+
+ case "TSAsExpression":
+ return concat$d([path.call(print, "expression"), " as ", path.call(print, "typeAnnotation")]);
+
+ case "TSArrayType":
+ return concat$d([path.call(print, "elementType"), "[]"]);
+
+ case "TSPropertySignature":
+ {
+ if (n.export) {
+ parts.push("export ");
+ }
+
+ if (n.accessibility) {
+ parts.push(n.accessibility + " ");
+ }
+
+ if (n.static) {
+ parts.push("static ");
+ }
+
+ if (n.readonly) {
+ parts.push("readonly ");
+ }
+
+ parts.push(printPropertyKey(path, options, print), printOptionalToken(path));
+
+ if (n.typeAnnotation) {
+ parts.push(": ");
+ parts.push(path.call(print, "typeAnnotation"));
+ } // This isn't valid semantically, but it's in the AST so we can print it.
+
+
+ if (n.initializer) {
+ parts.push(" = ", path.call(print, "initializer"));
+ }
+
+ return concat$d(parts);
+ }
+
+ case "TSParameterProperty":
+ if (n.accessibility) {
+ parts.push(n.accessibility + " ");
+ }
+
+ if (n.export) {
+ parts.push("export ");
+ }
+
+ if (n.static) {
+ parts.push("static ");
+ }
+
+ if (n.readonly) {
+ parts.push("readonly ");
+ }
+
+ parts.push(path.call(print, "parameter"));
+ return concat$d(parts);
+
+ case "TSTypeReference":
+ return concat$d([path.call(print, "typeName"), printTypeParameters(path, options, print, "typeParameters")]);
+
+ case "TSTypeQuery":
+ return concat$d(["typeof ", path.call(print, "exprName")]);
+
+ case "TSIndexSignature":
+ {
+ var _parent11 = path.getParentNode();
+
+ return concat$d([n.export ? "export " : "", n.accessibility ? concat$d([n.accessibility, " "]) : "", n.static ? "static " : "", n.readonly ? "readonly " : "", "[", n.parameters ? concat$d(path.map(print, "parameters")) : "", "]: ", path.call(print, "typeAnnotation"), _parent11.type === "ClassBody" ? semi : ""]);
+ }
+
+ case "TSTypePredicate":
+ return concat$d([n.asserts ? "asserts " : "", path.call(print, "parameterName"), n.typeAnnotation ? concat$d([" is ", path.call(print, "typeAnnotation")]) : ""]);
+
+ case "TSNonNullExpression":
+ return concat$d([path.call(print, "expression"), "!"]);
+
+ case "TSThisType":
+ return "this";
+
+ case "TSImportType":
+ return concat$d([!n.isTypeOf ? "" : "typeof ", "import(", path.call(print, "parameter"), ")", !n.qualifier ? "" : concat$d([".", path.call(print, "qualifier")]), printTypeParameters(path, options, print, "typeParameters")]);
+
+ case "TSLiteralType":
+ return path.call(print, "literal");
+
+ case "TSIndexedAccessType":
+ return concat$d([path.call(print, "objectType"), "[", path.call(print, "indexType"), "]"]);
+
+ case "TSConstructSignatureDeclaration":
+ case "TSCallSignatureDeclaration":
+ case "TSConstructorType":
+ {
+ if (n.type !== "TSCallSignatureDeclaration") {
+ parts.push("new ");
+ }
+
+ parts.push(group$b(printFunctionParams(path, print, options,
+ /* expandArg */
+ false,
+ /* printTypeParams */
+ true)));
+
+ if (n.returnType) {
+ var isType = n.type === "TSConstructorType";
+ parts.push(isType ? " => " : ": ", path.call(print, "returnType"));
+ }
+
+ return concat$d(parts);
+ }
+
+ case "TSTypeOperator":
+ return concat$d([n.operator, " ", path.call(print, "typeAnnotation")]);
+
+ case "TSMappedType":
+ {
+ var _shouldBreak3 = hasNewlineInRange$2(options.originalText, options.locStart(n), options.locEnd(n));
+
+ return group$b(concat$d(["{", indent$7(concat$d([options.bracketSpacing ? line$7 : softline$6, n.readonly ? concat$d([getTypeScriptMappedTypeModifier$1(n.readonly, "readonly"), " "]) : "", printTypeScriptModifiers(path, options, print), path.call(print, "typeParameter"), n.optional ? getTypeScriptMappedTypeModifier$1(n.optional, "?") : "", ": ", path.call(print, "typeAnnotation"), ifBreak$6(semi, "")])), comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), options.bracketSpacing ? line$7 : softline$6, "}"]), {
+ shouldBreak: _shouldBreak3
+ });
+ }
+
+ case "TSMethodSignature":
+ parts.push(n.accessibility ? concat$d([n.accessibility, " "]) : "", n.export ? "export " : "", n.static ? "static " : "", n.readonly ? "readonly " : "", n.computed ? "[" : "", path.call(print, "key"), n.computed ? "]" : "", printOptionalToken(path), printFunctionParams(path, print, options,
+ /* expandArg */
+ false,
+ /* printTypeParams */
+ true));
+
+ if (n.returnType) {
+ parts.push(": ", path.call(print, "returnType"));
+ }
+
+ return group$b(concat$d(parts));
+
+ case "TSNamespaceExportDeclaration":
+ parts.push("export as namespace ", path.call(print, "id"));
+
+ if (options.semi) {
+ parts.push(";");
+ }
+
+ return group$b(concat$d(parts));
+
+ case "TSEnumDeclaration":
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ if (n.modifiers) {
+ parts.push(printTypeScriptModifiers(path, options, print));
+ }
+
+ if (n.const) {
+ parts.push("const ");
+ }
+
+ parts.push("enum ", path.call(print, "id"), " ");
+
+ if (n.members.length === 0) {
+ parts.push(group$b(concat$d(["{", comments.printDanglingComments(path, options), softline$6, "}"])));
+ } else {
+ parts.push(group$b(concat$d(["{", indent$7(concat$d([hardline$9, printArrayItems(path, options, "members", print), shouldPrintComma$1(options, "es5") ? "," : ""])), comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), hardline$9, "}"])));
+ }
+
+ return concat$d(parts);
+
+ case "TSEnumMember":
+ parts.push(path.call(print, "id"));
+
+ if (n.initializer) {
+ parts.push(" = ", path.call(print, "initializer"));
+ }
+
+ return concat$d(parts);
+
+ case "TSImportEqualsDeclaration":
+ if (n.isExport) {
+ parts.push("export ");
+ }
+
+ parts.push("import ", path.call(print, "id"), " = ", path.call(print, "moduleReference"));
+
+ if (options.semi) {
+ parts.push(";");
+ }
+
+ return group$b(concat$d(parts));
+
+ case "TSExternalModuleReference":
+ return concat$d(["require(", path.call(print, "expression"), ")"]);
+
+ case "TSModuleDeclaration":
+ {
+ var _parent12 = path.getParentNode();
+
+ var isExternalModule = isLiteral$1(n.id);
+ var parentIsDeclaration = _parent12.type === "TSModuleDeclaration";
+ var bodyIsDeclaration = n.body && n.body.type === "TSModuleDeclaration";
+
+ if (parentIsDeclaration) {
+ parts.push(".");
+ } else {
+ if (n.declare) {
+ parts.push("declare ");
+ }
+
+ parts.push(printTypeScriptModifiers(path, options, print));
+ var textBetweenNodeAndItsId = options.originalText.slice(options.locStart(n), options.locStart(n.id)); // Global declaration looks like this:
+ // (declare)? global { ... }
+
+ var isGlobalDeclaration = n.id.type === "Identifier" && n.id.name === "global" && !/namespace|module/.test(textBetweenNodeAndItsId);
+
+ if (!isGlobalDeclaration) {
+ parts.push(isExternalModule || /(^|\s)module(\s|$)/.test(textBetweenNodeAndItsId) ? "module " : "namespace ");
+ }
+ }
+
+ parts.push(path.call(print, "id"));
+
+ if (bodyIsDeclaration) {
+ parts.push(path.call(print, "body"));
+ } else if (n.body) {
+ parts.push(" ", group$b(path.call(print, "body")));
+ } else {
+ parts.push(semi);
+ }
+
+ return concat$d(parts);
+ }
+
+ case "PrivateName":
+ return concat$d(["#", path.call(print, "id")]);
+
+ case "TSConditionalType":
+ return printTernaryOperator(path, options, print, {
+ beforeParts: function beforeParts() {
+ return [path.call(print, "checkType"), " ", "extends", " ", path.call(print, "extendsType")];
+ },
+ afterParts: function afterParts() {
+ return [];
+ },
+ shouldCheckJsx: false,
+ conditionalNodeType: "TSConditionalType",
+ consequentNodePropertyName: "trueType",
+ alternateNodePropertyName: "falseType",
+ testNodePropertyName: "checkType",
+ breakNested: true
+ });
+
+ case "TSInferType":
+ return concat$d(["infer", " ", path.call(print, "typeParameter")]);
+
+ case "InterpreterDirective":
+ parts.push("#!", n.value, hardline$9);
+
+ if (isNextLineEmpty$4(options.originalText, n, options)) {
+ parts.push(hardline$9);
+ }
+
+ return concat$d(parts);
+
+ case "NGRoot":
+ return concat$d([].concat(path.call(print, "node"), !n.node.comments || n.node.comments.length === 0 ? [] : concat$d([" //", n.node.comments[0].value.trimRight()])));
+
+ case "NGChainedExpression":
+ return group$b(join$9(concat$d([";", line$7]), path.map(function (childPath) {
+ return hasNgSideEffect$1(childPath) ? print(childPath) : concat$d(["(", print(childPath), ")"]);
+ }, "expressions")));
+
+ case "NGEmptyExpression":
+ return "";
+
+ case "NGQuotedExpression":
+ return concat$d([n.prefix, ":", n.value]);
+
+ case "NGMicrosyntax":
+ return concat$d(path.map(function (childPath, index) {
+ return concat$d([index === 0 ? "" : isNgForOf$1(childPath.getValue(), index, n) ? " " : concat$d([";", line$7]), print(childPath)]);
+ }, "body"));
+
+ case "NGMicrosyntaxKey":
+ return /^[a-z_$][a-z0-9_$]*(-[a-z_$][a-z0-9_$])*$/i.test(n.name) ? n.name : JSON.stringify(n.name);
+
+ case "NGMicrosyntaxExpression":
+ return concat$d([path.call(print, "expression"), n.alias === null ? "" : concat$d([" as ", path.call(print, "alias")])]);
+
+ case "NGMicrosyntaxKeyedExpression":
+ {
+ var index = path.getName();
+
+ var _parentNode2 = path.getParentNode();
+
+ var shouldNotPrintColon = isNgForOf$1(n, index, _parentNode2) || (index === 1 && (n.key.name === "then" || n.key.name === "else") || index === 2 && n.key.name === "else" && _parentNode2.body[index - 1].type === "NGMicrosyntaxKeyedExpression" && _parentNode2.body[index - 1].key.name === "then") && _parentNode2.body[0].type === "NGMicrosyntaxExpression";
+ return concat$d([path.call(print, "key"), shouldNotPrintColon ? " " : ": ", path.call(print, "expression")]);
+ }
+
+ case "NGMicrosyntaxLet":
+ return concat$d(["let ", path.call(print, "key"), n.value === null ? "" : concat$d([" = ", path.call(print, "value")])]);
+
+ case "NGMicrosyntaxAs":
+ return concat$d([path.call(print, "key"), " as ", path.call(print, "alias")]);
+
+ case "ArgumentPlaceholder":
+ return "?";
+
+ default:
+ /* istanbul ignore next */
+ throw new Error("unknown type: " + JSON.stringify(n.type));
+ }
+ }
+
+ function printStatementSequence(path, options, print) {
+ var printed = [];
+ var bodyNode = path.getNode();
+ var isClass = bodyNode.type === "ClassBody";
+ path.map(function (stmtPath, i) {
+ var stmt = stmtPath.getValue(); // Just in case the AST has been modified to contain falsy
+ // "statements," it's safer simply to skip them.
+
+ /* istanbul ignore if */
+
+ if (!stmt) {
+ return;
+ } // Skip printing EmptyStatement nodes to avoid leaving stray
+ // semicolons lying around.
+
+
+ if (stmt.type === "EmptyStatement") {
+ return;
+ }
+
+ var stmtPrinted = print(stmtPath);
+ var text = options.originalText;
+ var parts = []; // in no-semi mode, prepend statement with semicolon if it might break ASI
+ // don't prepend the only JSX element in a program with semicolon
+
+ if (!options.semi && !isClass && !isTheOnlyJSXElementInMarkdown$1(options, stmtPath) && stmtNeedsASIProtection(stmtPath, options)) {
+ if (stmt.comments && stmt.comments.some(function (comment) {
+ return comment.leading;
+ })) {
+ parts.push(print(stmtPath, {
+ needsSemi: true
+ }));
+ } else {
+ parts.push(";", stmtPrinted);
+ }
+ } else {
+ parts.push(stmtPrinted);
+ }
+
+ if (!options.semi && isClass) {
+ if (classPropMayCauseASIProblems$1(stmtPath)) {
+ parts.push(";");
+ } else if (stmt.type === "ClassProperty") {
+ var nextChild = bodyNode.body[i + 1];
+
+ if (classChildNeedsASIProtection$1(nextChild)) {
+ parts.push(";");
+ }
+ }
+ }
+
+ if (isNextLineEmpty$4(text, stmt, options) && !isLastStatement$1(stmtPath)) {
+ parts.push(hardline$9);
+ }
+
+ printed.push(concat$d(parts));
+ });
+ return join$9(hardline$9, printed);
+ }
+
+ function printPropertyKey(path, options, print) {
+ var node = path.getNode();
+
+ if (node.computed) {
+ return concat$d(["[", path.call(print, "key"), "]"]);
+ }
+
+ var parent = path.getParentNode();
+ var key = node.key;
+
+ if (options.quoteProps === "consistent" && !needsQuoteProps.has(parent)) {
+ var objectHasStringProp = (parent.properties || parent.body || parent.members).some(function (prop) {
+ return !prop.computed && prop.key && isStringLiteral$1(prop.key) && !isStringPropSafeToCoerceToIdentifier$1(prop, options);
+ });
+ needsQuoteProps.set(parent, objectHasStringProp);
+ }
+
+ if (key.type === "Identifier" && (options.parser === "json" || options.quoteProps === "consistent" && needsQuoteProps.get(parent))) {
+ // a -> "a"
+ var prop = printString$2(JSON.stringify(key.name), options);
+ return path.call(function (keyPath) {
+ return comments.printComments(keyPath, function () {
+ return prop;
+ }, options);
+ }, "key");
+ }
+
+ if (isStringPropSafeToCoerceToIdentifier$1(node, options) && (options.quoteProps === "as-needed" || options.quoteProps === "consistent" && !needsQuoteProps.get(parent))) {
+ // 'a' -> a
+ return path.call(function (keyPath) {
+ return comments.printComments(keyPath, function () {
+ return key.value;
+ }, options);
+ }, "key");
+ }
+
+ return path.call(print, "key");
+ }
+
+ function printMethod(path, options, print) {
+ var node = path.getNode();
+ var kind = node.kind;
+ var value = node.value || node;
+ var parts = [];
+
+ if (!kind || kind === "init" || kind === "method" || kind === "constructor") {
+ if (value.async) {
+ parts.push("async ");
+ }
+
+ if (value.generator) {
+ parts.push("*");
+ }
+ } else {
+ assert.ok(kind === "get" || kind === "set");
+ parts.push(kind, " ");
+ }
+
+ parts.push(printPropertyKey(path, options, print), node.optional || node.key.optional ? "?" : "", node === value ? printMethodInternal(path, options, print) : path.call(function (path) {
+ return printMethodInternal(path, options, print);
+ }, "value"));
+ return concat$d(parts);
+ }
+
+ function printMethodInternal(path, options, print) {
+ var parts = [printFunctionTypeParameters(path, options, print), group$b(concat$d([printFunctionParams(path, print, options), printReturnType(path, print, options)]))];
+
+ if (path.getNode().body) {
+ parts.push(" ", path.call(print, "body"));
+ } else {
+ parts.push(options.semi ? ";" : "");
+ }
+
+ return concat$d(parts);
+ }
+
+ function couldGroupArg(arg) {
+ return arg.type === "ObjectExpression" && (arg.properties.length > 0 || arg.comments) || arg.type === "ArrayExpression" && (arg.elements.length > 0 || arg.comments) || arg.type === "TSTypeAssertion" && couldGroupArg(arg.expression) || arg.type === "TSAsExpression" && couldGroupArg(arg.expression) || arg.type === "FunctionExpression" || arg.type === "ArrowFunctionExpression" && ( // we want to avoid breaking inside composite return types but not simple keywords
+ // https://github.com/prettier/prettier/issues/4070
+ // export class Thing implements OtherThing {
+ // do: (type: Type) => Provider<Prop> = memoize(
+ // (type: ObjectType): Provider<Opts> => {}
+ // );
+ // }
+ // https://github.com/prettier/prettier/issues/6099
+ // app.get("/", (req, res): void => {
+ // res.send("Hello World!");
+ // });
+ !arg.returnType || !arg.returnType.typeAnnotation || arg.returnType.typeAnnotation.type !== "TSTypeReference") && (arg.body.type === "BlockStatement" || arg.body.type === "ArrowFunctionExpression" || arg.body.type === "ObjectExpression" || arg.body.type === "ArrayExpression" || arg.body.type === "CallExpression" || arg.body.type === "OptionalCallExpression" || arg.body.type === "ConditionalExpression" || isJSXNode$1(arg.body));
+ }
+
+ function shouldGroupLastArg(args) {
+ var lastArg = getLast$2(args);
+ var penultimateArg = getPenultimate$1(args);
+ return !hasLeadingComment$3(lastArg) && !hasTrailingComment$1(lastArg) && couldGroupArg(lastArg) && ( // If the last two arguments are of the same type,
+ // disable last element expansion.
+ !penultimateArg || penultimateArg.type !== lastArg.type);
+ }
+
+ function shouldGroupFirstArg(args) {
+ if (args.length !== 2) {
+ return false;
+ }
+
+ var firstArg = args[0];
+ var secondArg = args[1];
+ return (!firstArg.comments || !firstArg.comments.length) && (firstArg.type === "FunctionExpression" || firstArg.type === "ArrowFunctionExpression" && firstArg.body.type === "BlockStatement") && secondArg.type !== "FunctionExpression" && secondArg.type !== "ArrowFunctionExpression" && secondArg.type !== "ConditionalExpression" && !couldGroupArg(secondArg);
+ }
+
+ function printJestEachTemplateLiteral(node, expressions, options) {
+ /**
+ * a | b | expected
+ * ${1} | ${1} | ${2}
+ * ${1} | ${2} | ${3}
+ * ${2} | ${1} | ${3}
+ */
+ var headerNames = node.quasis[0].value.raw.trim().split(/\s*\|\s*/);
+
+ if (headerNames.length > 1 || headerNames.some(function (headerName) {
+ return headerName.length !== 0;
+ })) {
+ var parts = [];
+ var stringifiedExpressions = expressions.map(function (doc) {
+ return "${" + printDocToString$1(doc, Object.assign({}, options, {
+ printWidth: Infinity,
+ endOfLine: "lf"
+ })).formatted + "}";
+ });
+ var tableBody = [{
+ hasLineBreak: false,
+ cells: []
+ }];
+
+ for (var i = 1; i < node.quasis.length; i++) {
+ var row = tableBody[tableBody.length - 1];
+ var correspondingExpression = stringifiedExpressions[i - 1];
+ row.cells.push(correspondingExpression);
+
+ if (correspondingExpression.indexOf("\n") !== -1) {
+ row.hasLineBreak = true;
+ }
+
+ if (node.quasis[i].value.raw.indexOf("\n") !== -1) {
+ tableBody.push({
+ hasLineBreak: false,
+ cells: []
+ });
+ }
+ }
+
+ var maxColumnCount = tableBody.reduce(function (maxColumnCount, row) {
+ return Math.max(maxColumnCount, row.cells.length);
+ }, headerNames.length);
+ var maxColumnWidths = Array.from(new Array(maxColumnCount), function () {
+ return 0;
+ });
+ var table = [{
+ cells: headerNames
+ }].concat(tableBody.filter(function (row) {
+ return row.cells.length !== 0;
+ }));
+ table.filter(function (row) {
+ return !row.hasLineBreak;
+ }).forEach(function (row) {
+ row.cells.forEach(function (cell, index) {
+ maxColumnWidths[index] = Math.max(maxColumnWidths[index], getStringWidth$2(cell));
+ });
+ });
+ parts.push(lineSuffixBoundary$1, "`", indent$7(concat$d([hardline$9, join$9(hardline$9, table.map(function (row) {
+ return join$9(" | ", row.cells.map(function (cell, index) {
+ return row.hasLineBreak ? cell : cell + " ".repeat(maxColumnWidths[index] - getStringWidth$2(cell));
+ }));
+ }))])), hardline$9, "`");
+ return concat$d(parts);
+ }
+ }
+
+ function printArgumentsList(path, options, print) {
+ var node = path.getValue();
+ var args = node.arguments;
+
+ if (args.length === 0) {
+ return concat$d(["(", comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true), ")"]);
+ } // useEffect(() => { ... }, [foo, bar, baz])
+
+
+ if (args.length === 2 && args[0].type === "ArrowFunctionExpression" && args[0].params.length === 0 && args[0].body.type === "BlockStatement" && args[1].type === "ArrayExpression" && !args.find(function (arg) {
+ return arg.comments;
+ })) {
+ return concat$d(["(", path.call(print, "arguments", 0), ", ", path.call(print, "arguments", 1), ")"]);
+ } // func(
+ // ({
+ // a,
+ // b
+ // }) => {}
+ // );
+
+
+ function shouldBreakForArrowFunctionInArguments(arg, argPath) {
+ if (!arg || arg.type !== "ArrowFunctionExpression" || !arg.body || arg.body.type !== "BlockStatement" || !arg.params || arg.params.length < 1) {
+ return false;
+ }
+
+ var shouldBreak = false;
+ argPath.each(function (paramPath) {
+ var printed = concat$d([print(paramPath)]);
+ shouldBreak = shouldBreak || willBreak$1(printed);
+ }, "params");
+ return shouldBreak;
+ }
+
+ var anyArgEmptyLine = false;
+ var shouldBreakForArrowFunction = false;
+ var hasEmptyLineFollowingFirstArg = false;
+ var lastArgIndex = args.length - 1;
+ var printedArguments = path.map(function (argPath, index) {
+ var arg = argPath.getNode();
+ var parts = [print(argPath)];
+
+ if (index === lastArgIndex) ; else if (isNextLineEmpty$4(options.originalText, arg, options)) {
+ if (index === 0) {
+ hasEmptyLineFollowingFirstArg = true;
+ }
+
+ anyArgEmptyLine = true;
+ parts.push(",", hardline$9, hardline$9);
+ } else {
+ parts.push(",", line$7);
+ }
+
+ shouldBreakForArrowFunction = shouldBreakForArrowFunctionInArguments(arg, argPath);
+ return concat$d(parts);
+ }, "arguments");
+ var maybeTrailingComma = // Dynamic imports cannot have trailing commas
+ !(node.callee && node.callee.type === "Import") && shouldPrintComma$1(options, "all") ? "," : "";
+
+ function allArgsBrokenOut() {
+ return group$b(concat$d(["(", indent$7(concat$d([line$7, concat$d(printedArguments)])), maybeTrailingComma, line$7, ")"]), {
+ shouldBreak: true
+ });
+ }
+
+ if (isFunctionCompositionArgs$1(args)) {
+ return allArgsBrokenOut();
+ }
+
+ var shouldGroupFirst = shouldGroupFirstArg(args);
+ var shouldGroupLast = shouldGroupLastArg(args);
+
+ if (shouldGroupFirst || shouldGroupLast) {
+ var shouldBreak = (shouldGroupFirst ? printedArguments.slice(1).some(willBreak$1) : printedArguments.slice(0, -1).some(willBreak$1)) || anyArgEmptyLine || shouldBreakForArrowFunction; // We want to print the last argument with a special flag
+
+ var printedExpanded;
+ var i = 0;
+ path.each(function (argPath) {
+ if (shouldGroupFirst && i === 0) {
+ printedExpanded = [concat$d([argPath.call(function (p) {
+ return print(p, {
+ expandFirstArg: true
+ });
+ }), printedArguments.length > 1 ? "," : "", hasEmptyLineFollowingFirstArg ? hardline$9 : line$7, hasEmptyLineFollowingFirstArg ? hardline$9 : ""])].concat(printedArguments.slice(1));
+ }
+
+ if (shouldGroupLast && i === args.length - 1) {
+ printedExpanded = printedArguments.slice(0, -1).concat(argPath.call(function (p) {
+ return print(p, {
+ expandLastArg: true
+ });
+ }));
+ }
+
+ i++;
+ }, "arguments");
+ var somePrintedArgumentsWillBreak = printedArguments.some(willBreak$1);
+ var simpleConcat = concat$d(["(", concat$d(printedExpanded), ")"]);
+ return concat$d([somePrintedArgumentsWillBreak ? breakParent$3 : "", conditionalGroup$1([!somePrintedArgumentsWillBreak && !node.typeArguments && !node.typeParameters ? simpleConcat : ifBreak$6(allArgsBrokenOut(), simpleConcat), shouldGroupFirst ? concat$d(["(", group$b(printedExpanded[0], {
+ shouldBreak: true
+ }), concat$d(printedExpanded.slice(1)), ")"]) : concat$d(["(", concat$d(printedArguments.slice(0, -1)), group$b(getLast$2(printedExpanded), {
+ shouldBreak: true
+ }), ")"]), allArgsBrokenOut()], {
+ shouldBreak: shouldBreak
+ })]);
+ }
+
+ var contents = concat$d(["(", indent$7(concat$d([softline$6, concat$d(printedArguments)])), ifBreak$6(maybeTrailingComma), softline$6, ")"]);
+
+ if (isLongCurriedCallExpression$1(path)) {
+ // By not wrapping the arguments in a group, the printer prioritizes
+ // breaking up these arguments rather than the args of the parent call.
+ return contents;
+ }
+
+ return group$b(contents, {
+ shouldBreak: printedArguments.some(willBreak$1) || anyArgEmptyLine
+ });
+ }
+
+ function printTypeAnnotation(path, options, print) {
+ var node = path.getValue();
+
+ if (!node.typeAnnotation) {
+ return "";
+ }
+
+ var parentNode = path.getParentNode();
+ var isDefinite = node.definite || parentNode && parentNode.type === "VariableDeclarator" && parentNode.definite;
+ var isFunctionDeclarationIdentifier = parentNode.type === "DeclareFunction" && parentNode.id === node;
+
+ if (isFlowAnnotationComment$1(options.originalText, node.typeAnnotation, options)) {
+ return concat$d([" /*: ", path.call(print, "typeAnnotation"), " */"]);
+ }
+
+ return concat$d([isFunctionDeclarationIdentifier ? "" : isDefinite ? "!: " : ": ", path.call(print, "typeAnnotation")]);
+ }
+
+ function printFunctionTypeParameters(path, options, print) {
+ var fun = path.getValue();
+
+ if (fun.typeArguments) {
+ return path.call(print, "typeArguments");
+ }
+
+ if (fun.typeParameters) {
+ return path.call(print, "typeParameters");
+ }
+
+ return "";
+ }
+
+ function printFunctionParams(path, print, options, expandArg, printTypeParams) {
+ var fun = path.getValue();
+ var parent = path.getParentNode();
+ var paramsField = fun.parameters ? "parameters" : "params";
+ var isParametersInTestCall = isTestCall$1(parent);
+ var shouldHugParameters = shouldHugArguments(fun);
+ var shouldExpandParameters = expandArg && !(fun[paramsField] && fun[paramsField].some(function (n) {
+ return n.comments;
+ }));
+ var typeParams = printTypeParams ? printFunctionTypeParameters(path, options, print) : "";
+ var printed = [];
+
+ if (fun[paramsField]) {
+ var lastArgIndex = fun[paramsField].length - 1;
+ printed = path.map(function (childPath, index) {
+ var parts = [];
+ var param = childPath.getValue();
+ parts.push(print(childPath));
+
+ if (index === lastArgIndex) {
+ if (fun.rest) {
+ parts.push(",", line$7);
+ }
+ } else if (isParametersInTestCall || shouldHugParameters || shouldExpandParameters) {
+ parts.push(", ");
+ } else if (isNextLineEmpty$4(options.originalText, param, options)) {
+ parts.push(",", hardline$9, hardline$9);
+ } else {
+ parts.push(",", line$7);
+ }
+
+ return concat$d(parts);
+ }, paramsField);
+ }
+
+ if (fun.rest) {
+ printed.push(concat$d(["...", path.call(print, "rest")]));
+ }
+
+ if (printed.length === 0) {
+ return concat$d([typeParams, "(", comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true, function (comment) {
+ return getNextNonSpaceNonCommentCharacter$1(options.originalText, comment, options.locEnd) === ")";
+ }), ")"]);
+ }
+
+ var lastParam = getLast$2(fun[paramsField]); // If the parent is a call with the first/last argument expansion and this is the
+ // params of the first/last argument, we don't want the arguments to break and instead
+ // want the whole expression to be on a new line.
+ //
+ // Good: Bad:
+ // verylongcall( verylongcall((
+ // (a, b) => { a,
+ // } b,
+ // }) ) => {
+ // })
+
+ if (shouldExpandParameters) {
+ return group$b(concat$d([removeLines$2(typeParams), "(", concat$d(printed.map(removeLines$2)), ")"]));
+ } // Single object destructuring should hug
+ //
+ // function({
+ // a,
+ // b,
+ // c
+ // }) {}
+
+
+ var hasNotParameterDecorator = fun[paramsField].every(function (param) {
+ return !param.decorators;
+ });
+
+ if (shouldHugParameters && hasNotParameterDecorator) {
+ return concat$d([typeParams, "(", concat$d(printed), ")"]);
+ } // don't break in specs, eg; `it("should maintain parens around done even when long", (done) => {})`
+
+
+ if (isParametersInTestCall) {
+ return concat$d([typeParams, "(", concat$d(printed), ")"]);
+ }
+
+ var isFlowShorthandWithOneArg = (isObjectTypePropertyAFunction$1(parent, options) || isTypeAnnotationAFunction$1(parent, options) || parent.type === "TypeAlias" || parent.type === "UnionTypeAnnotation" || parent.type === "TSUnionType" || parent.type === "IntersectionTypeAnnotation" || parent.type === "FunctionTypeAnnotation" && parent.returnType === fun) && fun[paramsField].length === 1 && fun[paramsField][0].name === null && fun[paramsField][0].typeAnnotation && fun.typeParameters === null && isSimpleFlowType$1(fun[paramsField][0].typeAnnotation) && !fun.rest;
+
+ if (isFlowShorthandWithOneArg) {
+ if (options.arrowParens === "always") {
+ return concat$d(["(", concat$d(printed), ")"]);
+ }
+
+ return concat$d(printed);
+ }
+
+ var canHaveTrailingComma = !(lastParam && lastParam.type === "RestElement") && !fun.rest;
+ return concat$d([typeParams, "(", indent$7(concat$d([softline$6, concat$d(printed)])), ifBreak$6(canHaveTrailingComma && shouldPrintComma$1(options, "all") ? "," : ""), softline$6, ")"]);
+ }
+
+ function shouldPrintParamsWithoutParens(path, options) {
+ if (options.arrowParens === "always") {
+ return false;
+ }
+
+ if (options.arrowParens === "avoid") {
+ var node = path.getValue();
+ return canPrintParamsWithoutParens(node);
+ } // Fallback default; should be unreachable
+
+
+ return false;
+ }
+
+ function canPrintParamsWithoutParens(node) {
+ return node.params.length === 1 && !node.rest && !node.typeParameters && !hasDanglingComments$1(node) && node.params[0].type === "Identifier" && !node.params[0].typeAnnotation && !node.params[0].comments && !node.params[0].optional && !node.predicate && !node.returnType;
+ }
+
+ function printFunctionDeclaration(path, print, options) {
+ var n = path.getValue();
+ var parts = [];
+
+ if (n.async) {
+ parts.push("async ");
+ }
+
+ parts.push("function");
+
+ if (n.generator) {
+ parts.push("*");
+ }
+
+ if (n.id) {
+ parts.push(" ", path.call(print, "id"));
+ }
+
+ parts.push(printFunctionTypeParameters(path, options, print), group$b(concat$d([printFunctionParams(path, print, options), printReturnType(path, print, options)])), n.body ? " " : "", path.call(print, "body"));
+ return concat$d(parts);
+ }
+
+ function printReturnType(path, print, options) {
+ var n = path.getValue();
+ var returnType = path.call(print, "returnType");
+
+ if (n.returnType && isFlowAnnotationComment$1(options.originalText, n.returnType, options)) {
+ return concat$d([" /*: ", returnType, " */"]);
+ }
+
+ var parts = [returnType]; // prepend colon to TypeScript type annotation
+
+ if (n.returnType && n.returnType.typeAnnotation) {
+ parts.unshift(": ");
+ }
+
+ if (n.predicate) {
+ // The return type will already add the colon, but otherwise we
+ // need to do it ourselves
+ parts.push(n.returnType ? " " : ": ", path.call(print, "predicate"));
+ }
+
+ return concat$d(parts);
+ }
+
+ function printExportDeclaration(path, options, print) {
+ var decl = path.getValue();
+ var semi = options.semi ? ";" : "";
+ var parts = ["export "];
+ var isDefault = decl["default"] || decl.type === "ExportDefaultDeclaration";
+
+ if (isDefault) {
+ parts.push("default ");
+ }
+
+ parts.push(comments.printDanglingComments(path, options,
+ /* sameIndent */
+ true));
+
+ if (needsHardlineAfterDanglingComment$1(decl)) {
+ parts.push(hardline$9);
+ }
+
+ if (decl.declaration) {
+ parts.push(path.call(print, "declaration"));
+
+ if (isDefault && decl.declaration.type !== "ClassDeclaration" && decl.declaration.type !== "FunctionDeclaration" && decl.declaration.type !== "TSInterfaceDeclaration" && decl.declaration.type !== "DeclareClass" && decl.declaration.type !== "DeclareFunction" && decl.declaration.type !== "TSDeclareFunction") {
+ parts.push(semi);
+ }
+ } else {
+ if (decl.specifiers && decl.specifiers.length > 0) {
+ var specifiers = [];
+ var defaultSpecifiers = [];
+ var namespaceSpecifiers = [];
+ path.each(function (specifierPath) {
+ var specifierType = path.getValue().type;
+
+ if (specifierType === "ExportSpecifier") {
+ specifiers.push(print(specifierPath));
+ } else if (specifierType === "ExportDefaultSpecifier") {
+ defaultSpecifiers.push(print(specifierPath));
+ } else if (specifierType === "ExportNamespaceSpecifier") {
+ namespaceSpecifiers.push(concat$d(["* as ", print(specifierPath)]));
+ }
+ }, "specifiers");
+ var isNamespaceFollowed = namespaceSpecifiers.length !== 0 && specifiers.length !== 0;
+ var isDefaultFollowed = defaultSpecifiers.length !== 0 && (namespaceSpecifiers.length !== 0 || specifiers.length !== 0);
+ var canBreak = specifiers.length > 1 || defaultSpecifiers.length > 0 || decl.specifiers && decl.specifiers.some(function (node) {
+ return node.comments;
+ });
+ var printed = "";
+
+ if (specifiers.length !== 0) {
+ if (canBreak) {
+ printed = group$b(concat$d(["{", indent$7(concat$d([options.bracketSpacing ? line$7 : softline$6, join$9(concat$d([",", line$7]), specifiers)])), ifBreak$6(shouldPrintComma$1(options) ? "," : ""), options.bracketSpacing ? line$7 : softline$6, "}"]));
+ } else {
+ printed = concat$d(["{", options.bracketSpacing ? " " : "", concat$d(specifiers), options.bracketSpacing ? " " : "", "}"]);
+ }
+ }
+
+ parts.push(decl.exportKind === "type" ? "type " : "", concat$d(defaultSpecifiers), concat$d([isDefaultFollowed ? ", " : ""]), concat$d(namespaceSpecifiers), concat$d([isNamespaceFollowed ? ", " : ""]), printed);
+ } else {
+ parts.push("{}");
+ }
+
+ if (decl.source) {
+ parts.push(" from ", path.call(print, "source"));
+ }
+
+ parts.push(semi);
+ }
+
+ return concat$d(parts);
+ }
+
+ function printFlowDeclaration(path, parts) {
+ var parentExportDecl = getParentExportDeclaration$1(path);
+
+ if (parentExportDecl) {
+ assert.strictEqual(parentExportDecl.type, "DeclareExportDeclaration");
+ } else {
+ // If the parent node has type DeclareExportDeclaration, then it
+ // will be responsible for printing the "declare" token. Otherwise
+ // it needs to be printed with this non-exported declaration node.
+ parts.unshift("declare ");
+ }
+
+ return concat$d(parts);
+ }
+
+ function printTypeScriptModifiers(path, options, print) {
+ var n = path.getValue();
+
+ if (!n.modifiers || !n.modifiers.length) {
+ return "";
+ }
+
+ return concat$d([join$9(" ", path.map(print, "modifiers")), " "]);
+ }
+
+ function printTypeParameters(path, options, print, paramsKey) {
+ var n = path.getValue();
+
+ if (!n[paramsKey]) {
+ return "";
+ } // for TypeParameterDeclaration typeParameters is a single node
+
+
+ if (!Array.isArray(n[paramsKey])) {
+ return path.call(print, paramsKey);
+ }
+
+ var grandparent = path.getNode(2);
+ var greatGreatGrandParent = path.getNode(4);
+ var isParameterInTestCall = grandparent != null && isTestCall$1(grandparent);
+ var shouldInline = isParameterInTestCall || n[paramsKey].length === 0 || n[paramsKey].length === 1 && (shouldHugType(n[paramsKey][0]) || n[paramsKey][0].type === "GenericTypeAnnotation" && shouldHugType(n[paramsKey][0].id) || n[paramsKey][0].type === "TSTypeReference" && shouldHugType(n[paramsKey][0].typeName) || n[paramsKey][0].type === "NullableTypeAnnotation" || // See https://github.com/prettier/prettier/pull/6467 for the context.
+ greatGreatGrandParent && greatGreatGrandParent.type === "VariableDeclarator" && grandparent && grandparent.type === "TSTypeAnnotation" && n[paramsKey][0].type !== "TSUnionType" && n[paramsKey][0].type !== "UnionTypeAnnotation" && n[paramsKey][0].type !== "TSConditionalType" && n[paramsKey][0].type !== "TSMappedType");
+
+ if (shouldInline) {
+ return concat$d(["<", join$9(", ", path.map(print, paramsKey)), ">"]);
+ }
+
+ return group$b(concat$d(["<", indent$7(concat$d([softline$6, join$9(concat$d([",", line$7]), path.map(print, paramsKey))])), ifBreak$6(options.parser !== "typescript" && shouldPrintComma$1(options, "all") ? "," : ""), softline$6, ">"]));
+ }
+
+ function printClass(path, options, print) {
+ var n = path.getValue();
+ var parts = [];
+
+ if (n.abstract) {
+ parts.push("abstract ");
+ }
+
+ parts.push("class");
+
+ if (n.id) {
+ parts.push(" ", path.call(print, "id"));
+ }
+
+ parts.push(path.call(print, "typeParameters"));
+ var partsGroup = [];
+
+ if (n.superClass) {
+ var printed = concat$d(["extends ", path.call(print, "superClass"), path.call(print, "superTypeParameters")]); // Keep old behaviour of extends in same line
+ // If there is only on extends and there are not comments
+
+ if ((!n.implements || n.implements.length === 0) && (!n.superClass.comments || n.superClass.comments.length === 0)) {
+ parts.push(concat$d([" ", path.call(function (superClass) {
+ return comments.printComments(superClass, function () {
+ return printed;
+ }, options);
+ }, "superClass")]));
+ } else {
+ partsGroup.push(group$b(concat$d([line$7, path.call(function (superClass) {
+ return comments.printComments(superClass, function () {
+ return printed;
+ }, options);
+ }, "superClass")])));
+ }
+ } else if (n.extends && n.extends.length > 0) {
+ parts.push(" extends ", join$9(", ", path.map(print, "extends")));
+ }
+
+ if (n["mixins"] && n["mixins"].length > 0) {
+ partsGroup.push(line$7, "mixins ", group$b(indent$7(join$9(concat$d([",", line$7]), path.map(print, "mixins")))));
+ }
+
+ if (n["implements"] && n["implements"].length > 0) {
+ partsGroup.push(line$7, "implements", group$b(indent$7(concat$d([line$7, join$9(concat$d([",", line$7]), path.map(print, "implements"))]))));
+ }
+
+ if (partsGroup.length > 0) {
+ parts.push(group$b(indent$7(concat$d(partsGroup))));
+ }
+
+ if (n.body && n.body.comments && hasLeadingOwnLineComment$1(options.originalText, n.body, options)) {
+ parts.push(hardline$9);
+ } else {
+ parts.push(" ");
+ }
+
+ parts.push(path.call(print, "body"));
+ return parts;
+ }
+
+ function printOptionalToken(path) {
+ var node = path.getValue();
+
+ if (!node.optional || // It's an optional computed method parsed by typescript-estree.
+ // "?" is printed in `printMethod`.
+ node.type === "Identifier" && node === path.getParentNode().key) {
+ return "";
+ }
+
+ if (node.type === "OptionalCallExpression" || node.type === "OptionalMemberExpression" && node.computed) {
+ return "?.";
+ }
+
+ return "?";
+ }
+
+ function printMemberLookup(path, options, print) {
+ var property = path.call(print, "property");
+ var n = path.getValue();
+ var optional = printOptionalToken(path);
+
+ if (!n.computed) {
+ return concat$d([optional, ".", property]);
+ }
+
+ if (!n.property || isNumericLiteral$1(n.property)) {
+ return concat$d([optional, "[", property, "]"]);
+ }
+
+ return group$b(concat$d([optional, "[", indent$7(concat$d([softline$6, property])), softline$6, "]"]));
+ }
+
+ function printBindExpressionCallee(path, options, print) {
+ return concat$d(["::", path.call(print, "callee")]);
+ } // We detect calls on member expressions specially to format a
+ // common pattern better. The pattern we are looking for is this:
+ //
+ // arr
+ // .map(x => x + 1)
+ // .filter(x => x > 10)
+ // .some(x => x % 2)
+ //
+ // The way it is structured in the AST is via a nested sequence of
+ // MemberExpression and CallExpression. We need to traverse the AST
+ // and make groups out of it to print it in the desired way.
+
+
+ function printMemberChain(path, options, print) {
+ // The first phase is to linearize the AST by traversing it down.
+ //
+ // a().b()
+ // has the following AST structure:
+ // CallExpression(MemberExpression(CallExpression(Identifier)))
+ // and we transform it into
+ // [Identifier, CallExpression, MemberExpression, CallExpression]
+ var printedNodes = []; // Here we try to retain one typed empty line after each call expression or
+ // the first group whether it is in parentheses or not
+
+ function shouldInsertEmptyLineAfter(node) {
+ var originalText = options.originalText;
+ var nextCharIndex = getNextNonSpaceNonCommentCharacterIndex$2(originalText, node, options);
+ var nextChar = originalText.charAt(nextCharIndex); // if it is cut off by a parenthesis, we only account for one typed empty
+ // line after that parenthesis
+
+ if (nextChar == ")") {
+ return isNextLineEmptyAfterIndex$1(originalText, nextCharIndex + 1, options);
+ }
+
+ return isNextLineEmpty$4(originalText, node, options);
+ }
+
+ function rec(path) {
+ var node = path.getValue();
+
+ if ((node.type === "CallExpression" || node.type === "OptionalCallExpression") && (isMemberish$1(node.callee) || node.callee.type === "CallExpression" || node.callee.type === "OptionalCallExpression")) {
+ printedNodes.unshift({
+ node: node,
+ printed: concat$d([comments.printComments(path, function () {
+ return concat$d([printOptionalToken(path), printFunctionTypeParameters(path, options, print), printArgumentsList(path, options, print)]);
+ }, options), shouldInsertEmptyLineAfter(node) ? hardline$9 : ""])
+ });
+ path.call(function (callee) {
+ return rec(callee);
+ }, "callee");
+ } else if (isMemberish$1(node)) {
+ printedNodes.unshift({
+ node: node,
+ needsParens: needsParens_1(path, options),
+ printed: comments.printComments(path, function () {
+ return node.type === "OptionalMemberExpression" || node.type === "MemberExpression" ? printMemberLookup(path, options, print) : printBindExpressionCallee(path, options, print);
+ }, options)
+ });
+ path.call(function (object) {
+ return rec(object);
+ }, "object");
+ } else if (node.type === "TSNonNullExpression") {
+ printedNodes.unshift({
+ node: node,
+ printed: comments.printComments(path, function () {
+ return "!";
+ }, options)
+ });
+ path.call(function (expression) {
+ return rec(expression);
+ }, "expression");
+ } else {
+ printedNodes.unshift({
+ node: node,
+ printed: path.call(print)
+ });
+ }
+ } // Note: the comments of the root node have already been printed, so we
+ // need to extract this first call without printing them as they would
+ // if handled inside of the recursive call.
+
+
+ var node = path.getValue();
+ printedNodes.unshift({
+ node: node,
+ printed: concat$d([printOptionalToken(path), printFunctionTypeParameters(path, options, print), printArgumentsList(path, options, print)])
+ });
+ path.call(function (callee) {
+ return rec(callee);
+ }, "callee"); // Once we have a linear list of printed nodes, we want to create groups out
+ // of it.
+ //
+ // a().b.c().d().e
+ // will be grouped as
+ // [
+ // [Identifier, CallExpression],
+ // [MemberExpression, MemberExpression, CallExpression],
+ // [MemberExpression, CallExpression],
+ // [MemberExpression],
+ // ]
+ // so that we can print it as
+ // a()
+ // .b.c()
+ // .d()
+ // .e
+ // The first group is the first node followed by
+ // - as many CallExpression as possible
+ // < fn()()() >.something()
+ // - as many array accessors as possible
+ // < fn()[0][1][2] >.something()
+ // - then, as many MemberExpression as possible but the last one
+ // < this.items >.something()
+
+ var groups = [];
+ var currentGroup = [printedNodes[0]];
+ var i = 1;
+
+ for (; i < printedNodes.length; ++i) {
+ if (printedNodes[i].node.type === "TSNonNullExpression" || printedNodes[i].node.type === "OptionalCallExpression" || printedNodes[i].node.type === "CallExpression" || (printedNodes[i].node.type === "MemberExpression" || printedNodes[i].node.type === "OptionalMemberExpression") && printedNodes[i].node.computed && isNumericLiteral$1(printedNodes[i].node.property)) {
+ currentGroup.push(printedNodes[i]);
+ } else {
+ break;
+ }
+ }
+
+ if (printedNodes[0].node.type !== "CallExpression" && printedNodes[0].node.type !== "OptionalCallExpression") {
+ for (; i + 1 < printedNodes.length; ++i) {
+ if (isMemberish$1(printedNodes[i].node) && isMemberish$1(printedNodes[i + 1].node)) {
+ currentGroup.push(printedNodes[i]);
+ } else {
+ break;
+ }
+ }
+ }
+
+ groups.push(currentGroup);
+ currentGroup = []; // Then, each following group is a sequence of MemberExpression followed by
+ // a sequence of CallExpression. To compute it, we keep adding things to the
+ // group until we has seen a CallExpression in the past and reach a
+ // MemberExpression
+
+ var hasSeenCallExpression = false;
+
+ for (; i < printedNodes.length; ++i) {
+ if (hasSeenCallExpression && isMemberish$1(printedNodes[i].node)) {
+ // [0] should be appended at the end of the group instead of the
+ // beginning of the next one
+ if (printedNodes[i].node.computed && isNumericLiteral$1(printedNodes[i].node.property)) {
+ currentGroup.push(printedNodes[i]);
+ continue;
+ }
+
+ groups.push(currentGroup);
+ currentGroup = [];
+ hasSeenCallExpression = false;
+ }
+
+ if (printedNodes[i].node.type === "CallExpression" || printedNodes[i].node.type === "OptionalCallExpression") {
+ hasSeenCallExpression = true;
+ }
+
+ currentGroup.push(printedNodes[i]);
+
+ if (printedNodes[i].node.comments && printedNodes[i].node.comments.some(function (comment) {
+ return comment.trailing;
+ })) {
+ groups.push(currentGroup);
+ currentGroup = [];
+ hasSeenCallExpression = false;
+ }
+ }
+
+ if (currentGroup.length > 0) {
+ groups.push(currentGroup);
+ } // There are cases like Object.keys(), Observable.of(), _.values() where
+ // they are the subject of all the chained calls and therefore should
+ // be kept on the same line:
+ //
+ // Object.keys(items)
+ // .filter(x => x)
+ // .map(x => x)
+ //
+ // In order to detect those cases, we use an heuristic: if the first
+ // node is an identifier with the name starting with a capital
+ // letter or just a sequence of _$. The rationale is that they are
+ // likely to be factories.
+
+
+ function isFactory(name) {
+ return /^[A-Z]|^[_$]+$/.test(name);
+ } // In case the Identifier is shorter than tab width, we can keep the
+ // first call in a single line, if it's an ExpressionStatement.
+ //
+ // d3.scaleLinear()
+ // .domain([0, 100])
+ // .range([0, width]);
+ //
+
+
+ function isShort(name) {
+ return name.length <= options.tabWidth;
+ }
+
+ function shouldNotWrap(groups) {
+ var parent = path.getParentNode();
+ var isExpression = parent && parent.type === "ExpressionStatement";
+ var hasComputed = groups[1].length && groups[1][0].node.computed;
+
+ if (groups[0].length === 1) {
+ var firstNode = groups[0][0].node;
+ return firstNode.type === "ThisExpression" || firstNode.type === "Identifier" && (isFactory(firstNode.name) || isExpression && isShort(firstNode.name) || hasComputed);
+ }
+
+ var lastNode = getLast$2(groups[0]).node;
+ return (lastNode.type === "MemberExpression" || lastNode.type === "OptionalMemberExpression") && lastNode.property.type === "Identifier" && (isFactory(lastNode.property.name) || hasComputed);
+ }
+
+ var shouldMerge = groups.length >= 2 && !groups[1][0].node.comments && shouldNotWrap(groups);
+
+ function printGroup(printedGroup) {
+ var printed = printedGroup.map(function (tuple) {
+ return tuple.printed;
+ }); // Checks if the last node (i.e. the parent node) needs parens and print
+ // accordingly
+
+ if (printedGroup.length > 0 && printedGroup[printedGroup.length - 1].needsParens) {
+ return concat$d(["("].concat(_toConsumableArray(printed), [")"]));
+ }
+
+ return concat$d(printed);
+ }
+
+ function printIndentedGroup(groups) {
+ if (groups.length === 0) {
+ return "";
+ }
+
+ return indent$7(group$b(concat$d([hardline$9, join$9(hardline$9, groups.map(printGroup))])));
+ }
+
+ var printedGroups = groups.map(printGroup);
+ var oneLine = concat$d(printedGroups);
+ var cutoff = shouldMerge ? 3 : 2;
+ var flatGroups = groups.slice(0, cutoff).reduce(function (res, group) {
+ return res.concat(group);
+ }, []);
+ var hasComment = flatGroups.slice(1, -1).some(function (node) {
+ return hasLeadingComment$3(node.node);
+ }) || flatGroups.slice(0, -1).some(function (node) {
+ return hasTrailingComment$1(node.node);
+ }) || groups[cutoff] && hasLeadingComment$3(groups[cutoff][0].node); // If we only have a single `.`, we shouldn't do anything fancy and just
+ // render everything concatenated together.
+
+ if (groups.length <= cutoff && !hasComment) {
+ if (isLongCurriedCallExpression$1(path)) {
+ return oneLine;
+ }
+
+ return group$b(oneLine);
+ } // Find out the last node in the first group and check if it has an
+ // empty line after
+
+
+ var lastNodeBeforeIndent = getLast$2(shouldMerge ? groups.slice(1, 2)[0] : groups[0]).node;
+ var shouldHaveEmptyLineBeforeIndent = lastNodeBeforeIndent.type !== "CallExpression" && lastNodeBeforeIndent.type !== "OptionalCallExpression" && shouldInsertEmptyLineAfter(lastNodeBeforeIndent);
+ var expanded = concat$d([printGroup(groups[0]), shouldMerge ? concat$d(groups.slice(1, 2).map(printGroup)) : "", shouldHaveEmptyLineBeforeIndent ? hardline$9 : "", printIndentedGroup(groups.slice(shouldMerge ? 2 : 1))]);
+ var callExpressions = printedNodes.map(function (_ref) {
+ var node = _ref.node;
+ return node;
+ }).filter(isCallOrOptionalCallExpression$1); // We don't want to print in one line if there's:
+ // * A comment.
+ // * 3 or more chained calls.
+ // * Any group but the last one has a hard line.
+ // If the last group is a function it's okay to inline if it fits.
+
+ if (hasComment || callExpressions.length >= 3 || printedGroups.slice(0, -1).some(willBreak$1) ||
+ /**
+ * scopes.filter(scope => scope.value !== '').map((scope, i) => {
+ * // multi line content
+ * })
+ */
+ function (lastGroupDoc, lastGroupNode) {
+ return isCallOrOptionalCallExpression$1(lastGroupNode) && willBreak$1(lastGroupDoc);
+ }(getLast$2(printedGroups), getLast$2(getLast$2(groups)).node) && callExpressions.slice(0, -1).some(function (n) {
+ return n.arguments.some(isFunctionOrArrowExpression$1);
+ })) {
+ return group$b(expanded);
+ }
+
+ return concat$d([// We only need to check `oneLine` because if `expanded` is chosen
+ // that means that the parent group has already been broken
+ // naturally
+ willBreak$1(oneLine) || shouldHaveEmptyLineBeforeIndent ? breakParent$3 : "", conditionalGroup$1([oneLine, expanded])]);
+ }
+
+ function separatorNoWhitespace(isFacebookTranslationTag, child, childNode, nextNode) {
+ if (isFacebookTranslationTag) {
+ return "";
+ }
+
+ if (childNode.type === "JSXElement" && !childNode.closingElement || nextNode && nextNode.type === "JSXElement" && !nextNode.closingElement) {
+ return child.length === 1 ? softline$6 : hardline$9;
+ }
+
+ return softline$6;
+ }
+
+ function separatorWithWhitespace(isFacebookTranslationTag, child, childNode, nextNode) {
+ if (isFacebookTranslationTag) {
+ return hardline$9;
+ }
+
+ if (child.length === 1) {
+ return childNode.type === "JSXElement" && !childNode.closingElement || nextNode && nextNode.type === "JSXElement" && !nextNode.closingElement ? hardline$9 : softline$6;
+ }
+
+ return hardline$9;
+ } // JSX Children are strange, mostly for two reasons:
+ // 1. JSX reads newlines into string values, instead of skipping them like JS
+ // 2. up to one whitespace between elements within a line is significant,
+ // but not between lines.
+ //
+ // Leading, trailing, and lone whitespace all need to
+ // turn themselves into the rather ugly `{' '}` when breaking.
+ //
+ // We print JSX using the `fill` doc primitive.
+ // This requires that we give it an array of alternating
+ // content and whitespace elements.
+ // To ensure this we add dummy `""` content elements as needed.
+
+
+ function printJSXChildren(path, options, print, jsxWhitespace, isFacebookTranslationTag) {
+ var n = path.getValue();
+ var children = []; // using `map` instead of `each` because it provides `i`
+
+ path.map(function (childPath, i) {
+ var child = childPath.getValue();
+
+ if (isLiteral$1(child)) {
+ var text = rawText$1(child); // Contains a non-whitespace character
+
+ if (isMeaningfulJSXText$1(child)) {
+ var words = text.split(matchJsxWhitespaceRegex$1); // Starts with whitespace
+
+ if (words[0] === "") {
+ children.push("");
+ words.shift();
+
+ if (/\n/.test(words[0])) {
+ var next = n.children[i + 1];
+ children.push(separatorWithWhitespace(isFacebookTranslationTag, words[1], child, next));
+ } else {
+ children.push(jsxWhitespace);
+ }
+
+ words.shift();
+ }
+
+ var endWhitespace; // Ends with whitespace
+
+ if (getLast$2(words) === "") {
+ words.pop();
+ endWhitespace = words.pop();
+ } // This was whitespace only without a new line.
+
+
+ if (words.length === 0) {
+ return;
+ }
+
+ words.forEach(function (word, i) {
+ if (i % 2 === 1) {
+ children.push(line$7);
+ } else {
+ children.push(word);
+ }
+ });
+
+ if (endWhitespace !== undefined) {
+ if (/\n/.test(endWhitespace)) {
+ var _next = n.children[i + 1];
+ children.push(separatorWithWhitespace(isFacebookTranslationTag, getLast$2(children), child, _next));
+ } else {
+ children.push(jsxWhitespace);
+ }
+ } else {
+ var _next2 = n.children[i + 1];
+ children.push(separatorNoWhitespace(isFacebookTranslationTag, getLast$2(children), child, _next2));
+ }
+ } else if (/\n/.test(text)) {
+ // Keep (up to one) blank line between tags/expressions/text.
+ // Note: We don't keep blank lines between text elements.
+ if (text.match(/\n/g).length > 1) {
+ children.push("");
+ children.push(hardline$9);
+ }
+ } else {
+ children.push("");
+ children.push(jsxWhitespace);
+ }
+ } else {
+ var printedChild = print(childPath);
+ children.push(printedChild);
+ var _next3 = n.children[i + 1];
+
+ var directlyFollowedByMeaningfulText = _next3 && isMeaningfulJSXText$1(_next3);
+
+ if (directlyFollowedByMeaningfulText) {
+ var firstWord = rawText$1(_next3).trim().split(matchJsxWhitespaceRegex$1)[0];
+ children.push(separatorNoWhitespace(isFacebookTranslationTag, firstWord, child, _next3));
+ } else {
+ children.push(hardline$9);
+ }
+ }
+ }, "children");
+ return children;
+ } // JSX expands children from the inside-out, instead of the outside-in.
+ // This is both to break children before attributes,
+ // and to ensure that when children break, their parents do as well.
+ //
+ // Any element that is written without any newlines and fits on a single line
+ // is left that way.
+ // Not only that, any user-written-line containing multiple JSX siblings
+ // should also be kept on one line if possible,
+ // so each user-written-line is wrapped in its own group.
+ //
+ // Elements that contain newlines or don't fit on a single line (recursively)
+ // are fully-split, using hardline and shouldBreak: true.
+ //
+ // To support that case properly, all leading and trailing spaces
+ // are stripped from the list of children, and replaced with a single hardline.
+
+
+ function printJSXElement(path, options, print) {
+ var n = path.getValue();
+
+ if (n.type === "JSXElement" && isEmptyJSXElement$1(n)) {
+ return concat$d([path.call(print, "openingElement"), path.call(print, "closingElement")]);
+ }
+
+ var openingLines = n.type === "JSXElement" ? path.call(print, "openingElement") : path.call(print, "openingFragment");
+ var closingLines = n.type === "JSXElement" ? path.call(print, "closingElement") : path.call(print, "closingFragment");
+
+ if (n.children.length === 1 && n.children[0].type === "JSXExpressionContainer" && (n.children[0].expression.type === "TemplateLiteral" || n.children[0].expression.type === "TaggedTemplateExpression")) {
+ return concat$d([openingLines, concat$d(path.map(print, "children")), closingLines]);
+ } // Convert `{" "}` to text nodes containing a space.
+ // This makes it easy to turn them into `jsxWhitespace` which
+ // can then print as either a space or `{" "}` when breaking.
+
+
+ n.children = n.children.map(function (child) {
+ if (isJSXWhitespaceExpression$1(child)) {
+ return {
+ type: "JSXText",
+ value: " ",
+ raw: " "
+ };
+ }
+
+ return child;
+ });
+ var containsTag = n.children.filter(isJSXNode$1).length > 0;
+ var containsMultipleExpressions = n.children.filter(function (child) {
+ return child.type === "JSXExpressionContainer";
+ }).length > 1;
+ var containsMultipleAttributes = n.type === "JSXElement" && n.openingElement.attributes.length > 1; // Record any breaks. Should never go from true to false, only false to true.
+
+ var forcedBreak = willBreak$1(openingLines) || containsTag || containsMultipleAttributes || containsMultipleExpressions;
+ var rawJsxWhitespace = options.singleQuote ? "{' '}" : '{" "}';
+ var jsxWhitespace = ifBreak$6(concat$d([rawJsxWhitespace, softline$6]), " ");
+ var isFacebookTranslationTag = n.openingElement && n.openingElement.name && n.openingElement.name.name === "fbt";
+ var children = printJSXChildren(path, options, print, jsxWhitespace, isFacebookTranslationTag);
+ var containsText = n.children.filter(function (child) {
+ return isMeaningfulJSXText$1(child);
+ }).length > 0; // We can end up we multiple whitespace elements with empty string
+ // content between them.
+ // We need to remove empty whitespace and softlines before JSX whitespace
+ // to get the correct output.
+
+ for (var i = children.length - 2; i >= 0; i--) {
+ var isPairOfEmptyStrings = children[i] === "" && children[i + 1] === "";
+ var isPairOfHardlines = children[i] === hardline$9 && children[i + 1] === "" && children[i + 2] === hardline$9;
+ var isLineFollowedByJSXWhitespace = (children[i] === softline$6 || children[i] === hardline$9) && children[i + 1] === "" && children[i + 2] === jsxWhitespace;
+ var isJSXWhitespaceFollowedByLine = children[i] === jsxWhitespace && children[i + 1] === "" && (children[i + 2] === softline$6 || children[i + 2] === hardline$9);
+ var isDoubleJSXWhitespace = children[i] === jsxWhitespace && children[i + 1] === "" && children[i + 2] === jsxWhitespace;
+ var isPairOfHardOrSoftLines = children[i] === softline$6 && children[i + 1] === "" && children[i + 2] === hardline$9 || children[i] === hardline$9 && children[i + 1] === "" && children[i + 2] === softline$6;
+
+ if (isPairOfHardlines && containsText || isPairOfEmptyStrings || isLineFollowedByJSXWhitespace || isDoubleJSXWhitespace || isPairOfHardOrSoftLines) {
+ children.splice(i, 2);
+ } else if (isJSXWhitespaceFollowedByLine) {
+ children.splice(i + 1, 2);
+ }
+ } // Trim trailing lines (or empty strings)
+
+
+ while (children.length && (isLineNext$1(getLast$2(children)) || isEmpty$1(getLast$2(children)))) {
+ children.pop();
+ } // Trim leading lines (or empty strings)
+
+
+ while (children.length && (isLineNext$1(children[0]) || isEmpty$1(children[0])) && (isLineNext$1(children[1]) || isEmpty$1(children[1]))) {
+ children.shift();
+ children.shift();
+ } // Tweak how we format children if outputting this element over multiple lines.
+ // Also detect whether we will force this element to output over multiple lines.
+
+
+ var multilineChildren = [];
+ children.forEach(function (child, i) {
+ // There are a number of situations where we need to ensure we display
+ // whitespace as `{" "}` when outputting this element over multiple lines.
+ if (child === jsxWhitespace) {
+ if (i === 1 && children[i - 1] === "") {
+ if (children.length === 2) {
+ // Solitary whitespace
+ multilineChildren.push(rawJsxWhitespace);
+ return;
+ } // Leading whitespace
+
+
+ multilineChildren.push(concat$d([rawJsxWhitespace, hardline$9]));
+ return;
+ } else if (i === children.length - 1) {
+ // Trailing whitespace
+ multilineChildren.push(rawJsxWhitespace);
+ return;
+ } else if (children[i - 1] === "" && children[i - 2] === hardline$9) {
+ // Whitespace after line break
+ multilineChildren.push(rawJsxWhitespace);
+ return;
+ }
+ }
+
+ multilineChildren.push(child);
+
+ if (willBreak$1(child)) {
+ forcedBreak = true;
+ }
+ }); // If there is text we use `fill` to fit as much onto each line as possible.
+ // When there is no text (just tags and expressions) we use `group`
+ // to output each on a separate line.
+
+ var content = containsText ? fill$4(multilineChildren) : group$b(concat$d(multilineChildren), {
+ shouldBreak: true
+ });
+ var multiLineElem = group$b(concat$d([openingLines, indent$7(concat$d([hardline$9, content])), hardline$9, closingLines]));
+
+ if (forcedBreak) {
+ return multiLineElem;
+ }
+
+ return conditionalGroup$1([group$b(concat$d([openingLines, concat$d(children), closingLines])), multiLineElem]);
+ }
+
+ function maybeWrapJSXElementInParens(path, elem, options) {
+ var parent = path.getParentNode();
+
+ if (!parent) {
+ return elem;
+ }
+
+ var NO_WRAP_PARENTS = {
+ ArrayExpression: true,
+ JSXAttribute: true,
+ JSXElement: true,
+ JSXExpressionContainer: true,
+ JSXFragment: true,
+ ExpressionStatement: true,
+ CallExpression: true,
+ OptionalCallExpression: true,
+ ConditionalExpression: true,
+ JsExpressionRoot: true
+ };
+
+ if (NO_WRAP_PARENTS[parent.type]) {
+ return elem;
+ }
+
+ var shouldBreak = matchAncestorTypes$1(path, ["ArrowFunctionExpression", "CallExpression", "JSXExpressionContainer"]) || matchAncestorTypes$1(path, ["ArrowFunctionExpression", "OptionalCallExpression", "JSXExpressionContainer"]);
+ var needsParens = needsParens_1(path, options);
+ return group$b(concat$d([needsParens ? "" : ifBreak$6("("), indent$7(concat$d([softline$6, elem])), softline$6, needsParens ? "" : ifBreak$6(")")]), {
+ shouldBreak: shouldBreak
+ });
+ }
+
+ function shouldInlineLogicalExpression(node) {
+ if (node.type !== "LogicalExpression") {
+ return false;
+ }
+
+ if (node.right.type === "ObjectExpression" && node.right.properties.length !== 0) {
+ return true;
+ }
+
+ if (node.right.type === "ArrayExpression" && node.right.elements.length !== 0) {
+ return true;
+ }
+
+ if (isJSXNode$1(node.right)) {
+ return true;
+ }
+
+ return false;
+ } // For binary expressions to be consistent, we need to group
+ // subsequent operators with the same precedence level under a single
+ // group. Otherwise they will be nested such that some of them break
+ // onto new lines but not all. Operators with the same precedence
+ // level should either all break or not. Because we group them by
+ // precedence level and the AST is structured based on precedence
+ // level, things are naturally broken up correctly, i.e. `&&` is
+ // broken before `+`.
+
+
+ function printBinaryishExpressions(path, print, options, isNested, isInsideParenthesis) {
+ var parts = [];
+ var node = path.getValue(); // We treat BinaryExpression and LogicalExpression nodes the same.
+
+ if (isBinaryish$1(node)) {
+ // Put all operators with the same precedence level in the same
+ // group. The reason we only need to do this with the `left`
+ // expression is because given an expression like `1 + 2 - 3`, it
+ // is always parsed like `((1 + 2) - 3)`, meaning the `left` side
+ // is where the rest of the expression will exist. Binary
+ // expressions on the right side mean they have a difference
+ // precedence level and should be treated as a separate group, so
+ // print them normally. (This doesn't hold for the `**` operator,
+ // which is unique in that it is right-associative.)
+ if (shouldFlatten$1(node.operator, node.left.operator)) {
+ // Flatten them out by recursively calling this function.
+ parts = parts.concat(path.call(function (left) {
+ return printBinaryishExpressions(left, print, options,
+ /* isNested */
+ true, isInsideParenthesis);
+ }, "left"));
+ } else {
+ parts.push(path.call(print, "left"));
+ }
+
+ var shouldInline = shouldInlineLogicalExpression(node);
+ var lineBeforeOperator = (node.operator === "|>" || node.type === "NGPipeExpression" || node.operator === "|" && options.parser === "__vue_expression") && !hasLeadingOwnLineComment$1(options.originalText, node.right, options);
+ var operator = node.type === "NGPipeExpression" ? "|" : node.operator;
+ var rightSuffix = node.type === "NGPipeExpression" && node.arguments.length !== 0 ? group$b(indent$7(concat$d([softline$6, ": ", join$9(concat$d([softline$6, ":", ifBreak$6(" ")]), path.map(print, "arguments").map(function (arg) {
+ return align$1(2, group$b(arg));
+ }))]))) : "";
+ var right = shouldInline ? concat$d([operator, " ", path.call(print, "right"), rightSuffix]) : concat$d([lineBeforeOperator ? softline$6 : "", operator, lineBeforeOperator ? " " : line$7, path.call(print, "right"), rightSuffix]); // If there's only a single binary expression, we want to create a group
+ // in order to avoid having a small right part like -1 be on its own line.
+
+ var parent = path.getParentNode();
+ var shouldGroup = !(isInsideParenthesis && node.type === "LogicalExpression") && parent.type !== node.type && node.left.type !== node.type && node.right.type !== node.type;
+ parts.push(" ", shouldGroup ? group$b(right) : right); // The root comments are already printed, but we need to manually print
+ // the other ones since we don't call the normal print on BinaryExpression,
+ // only for the left and right parts
+
+ if (isNested && node.comments) {
+ parts = comments.printComments(path, function () {
+ return concat$d(parts);
+ }, options);
+ }
+ } else {
+ // Our stopping case. Simply print the node normally.
+ parts.push(path.call(print));
+ }
+
+ return parts;
+ }
+
+ function printAssignmentRight(leftNode, rightNode, printedRight, options) {
+ if (hasLeadingOwnLineComment$1(options.originalText, rightNode, options)) {
+ return indent$7(concat$d([hardline$9, printedRight]));
+ }
+
+ var canBreak = isBinaryish$1(rightNode) && !shouldInlineLogicalExpression(rightNode) || rightNode.type === "ConditionalExpression" && isBinaryish$1(rightNode.test) && !shouldInlineLogicalExpression(rightNode.test) || rightNode.type === "StringLiteralTypeAnnotation" || rightNode.type === "ClassExpression" && rightNode.decorators && rightNode.decorators.length || (leftNode.type === "Identifier" || isStringLiteral$1(leftNode) || leftNode.type === "MemberExpression") && (isStringLiteral$1(rightNode) || isMemberExpressionChain$1(rightNode)) && // do not put values on a separate line from the key in json
+ options.parser !== "json" && options.parser !== "json5" || rightNode.type === "SequenceExpression";
+
+ if (canBreak) {
+ return group$b(indent$7(concat$d([line$7, printedRight])));
+ }
+
+ return concat$d([" ", printedRight]);
+ }
+
+ function printAssignment(leftNode, printedLeft, operator, rightNode, printedRight, options) {
+ if (!rightNode) {
+ return printedLeft;
+ }
+
+ var printed = printAssignmentRight(leftNode, rightNode, printedRight, options);
+ return group$b(concat$d([printedLeft, operator, printed]));
+ }
+
+ function adjustClause(node, clause, forceSpace) {
+ if (node.type === "EmptyStatement") {
+ return ";";
+ }
+
+ if (node.type === "BlockStatement" || forceSpace) {
+ return concat$d([" ", clause]);
+ }
+
+ return indent$7(concat$d([line$7, clause]));
+ }
+
+ function nodeStr(node, options, isFlowOrTypeScriptDirectiveLiteral) {
+ var raw = rawText$1(node);
+ var isDirectiveLiteral = isFlowOrTypeScriptDirectiveLiteral || node.type === "DirectiveLiteral";
+ return printString$2(raw, options, isDirectiveLiteral);
+ }
+
+ function printRegex(node) {
+ var flags = node.flags.split("").sort().join("");
+ return "/".concat(node.pattern, "/").concat(flags);
+ }
+
+ function exprNeedsASIProtection(path, options) {
+ var node = path.getValue();
+ var maybeASIProblem = needsParens_1(path, options) || node.type === "ParenthesizedExpression" || node.type === "TypeCastExpression" || node.type === "ArrowFunctionExpression" && !shouldPrintParamsWithoutParens(path, options) || node.type === "ArrayExpression" || node.type === "ArrayPattern" || node.type === "UnaryExpression" && node.prefix && (node.operator === "+" || node.operator === "-") || node.type === "TemplateLiteral" || node.type === "TemplateElement" || isJSXNode$1(node) || node.type === "BindExpression" && !node.object || node.type === "RegExpLiteral" || node.type === "Literal" && node.pattern || node.type === "Literal" && node.regex;
+
+ if (maybeASIProblem) {
+ return true;
+ }
+
+ if (!hasNakedLeftSide$2(node)) {
+ return false;
+ }
+
+ return path.call.apply(path, [function (childPath) {
+ return exprNeedsASIProtection(childPath, options);
+ }].concat(getLeftSidePathName$2(path, node)));
+ }
+
+ function stmtNeedsASIProtection(path, options) {
+ var node = path.getNode();
+
+ if (node.type !== "ExpressionStatement") {
+ return false;
+ }
+
+ return path.call(function (childPath) {
+ return exprNeedsASIProtection(childPath, options);
+ }, "expression");
+ }
+
+ function shouldHugType(node) {
+ if (isSimpleFlowType$1(node) || isObjectType$1(node)) {
+ return true;
+ }
+
+ if (node.type === "UnionTypeAnnotation" || node.type === "TSUnionType") {
+ var voidCount = node.types.filter(function (n) {
+ return n.type === "VoidTypeAnnotation" || n.type === "TSVoidKeyword" || n.type === "NullLiteralTypeAnnotation" || n.type === "TSNullKeyword";
+ }).length;
+ var objectCount = node.types.filter(function (n) {
+ return n.type === "ObjectTypeAnnotation" || n.type === "TSTypeLiteral" || // This is a bit aggressive but captures Array<{x}>
+ n.type === "GenericTypeAnnotation" || n.type === "TSTypeReference";
+ }).length;
+
+ if (node.types.length - 1 === voidCount && objectCount > 0) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ function shouldHugArguments(fun) {
+ return fun && fun.params && fun.params.length === 1 && !fun.params[0].comments && (fun.params[0].type === "ObjectPattern" || fun.params[0].type === "ArrayPattern" || fun.params[0].type === "Identifier" && fun.params[0].typeAnnotation && (fun.params[0].typeAnnotation.type === "TypeAnnotation" || fun.params[0].typeAnnotation.type === "TSTypeAnnotation") && isObjectType$1(fun.params[0].typeAnnotation.typeAnnotation) || fun.params[0].type === "FunctionTypeParam" && isObjectType$1(fun.params[0].typeAnnotation) || fun.params[0].type === "AssignmentPattern" && (fun.params[0].left.type === "ObjectPattern" || fun.params[0].left.type === "ArrayPattern") && (fun.params[0].right.type === "Identifier" || fun.params[0].right.type === "ObjectExpression" && fun.params[0].right.properties.length === 0 || fun.params[0].right.type === "ArrayExpression" && fun.params[0].right.elements.length === 0)) && !fun.rest;
+ }
+
+ function printArrayItems(path, options, printPath, print) {
+ var printedElements = [];
+ var separatorParts = [];
+ path.each(function (childPath) {
+ printedElements.push(concat$d(separatorParts));
+ printedElements.push(group$b(print(childPath)));
+ separatorParts = [",", line$7];
+
+ if (childPath.getValue() && isNextLineEmpty$4(options.originalText, childPath.getValue(), options)) {
+ separatorParts.push(softline$6);
+ }
+ }, printPath);
+ return concat$d(printedElements);
+ }
+
+ function willPrintOwnComments(path
+ /*, options */
+ ) {
+ var node = path.getValue();
+ var parent = path.getParentNode();
+ return (node && (isJSXNode$1(node) || hasFlowShorthandAnnotationComment$2(node) || parent && (parent.type === "CallExpression" || parent.type === "OptionalCallExpression") && (hasFlowAnnotationComment$1(node.leadingComments) || hasFlowAnnotationComment$1(node.trailingComments))) || parent && (parent.type === "JSXSpreadAttribute" || parent.type === "JSXSpreadChild" || parent.type === "UnionTypeAnnotation" || parent.type === "TSUnionType" || (parent.type === "ClassDeclaration" || parent.type === "ClassExpression") && parent.superClass === node)) && !hasIgnoreComment$4(path);
+ }
+
+ function canAttachComment$1(node) {
+ return node.type && node.type !== "CommentBlock" && node.type !== "CommentLine" && node.type !== "Line" && node.type !== "Block" && node.type !== "EmptyStatement" && node.type !== "TemplateElement" && node.type !== "Import";
+ }
+
+ function printComment$2(commentPath, options) {
+ var comment = commentPath.getValue();
+
+ switch (comment.type) {
+ case "CommentBlock":
+ case "Block":
+ {
+ if (isIndentableBlockComment(comment)) {
+ var printed = printIndentableBlockComment(comment); // We need to prevent an edge case of a previous trailing comment
+ // printed as a `lineSuffix` which causes the comments to be
+ // interleaved. See https://github.com/prettier/prettier/issues/4412
+
+ if (comment.trailing && !hasNewline$4(options.originalText, options.locStart(comment), {
+ backwards: true
+ })) {
+ return concat$d([hardline$9, printed]);
+ }
+
+ return printed;
+ }
+
+ var isInsideFlowComment = options.originalText.substr(options.locEnd(comment) - 3, 3) === "*-/";
+ return "/*" + comment.value + (isInsideFlowComment ? "*-/" : "*/");
+ }
+
+ case "CommentLine":
+ case "Line":
+ // Print shebangs with the proper comment characters
+ if (options.originalText.slice(options.locStart(comment)).startsWith("#!")) {
+ return "#!" + comment.value.trimRight();
+ }
+
+ return "//" + comment.value.trimRight();
+
+ default:
+ throw new Error("Not a comment: " + JSON.stringify(comment));
+ }
+ }
+
+ function isIndentableBlockComment(comment) {
+ // If the comment has multiple lines and every line starts with a star
+ // we can fix the indentation of each line. The stars in the `/*` and
+ // `*/` delimiters are not included in the comment value, so add them
+ // back first.
+ var lines = "*".concat(comment.value, "*").split("\n");
+ return lines.length > 1 && lines.every(function (line) {
+ return line.trim()[0] === "*";
+ });
+ }
+
+ function printIndentableBlockComment(comment) {
+ var lines = comment.value.split("\n");
+ return concat$d(["/*", join$9(hardline$9, lines.map(function (line, index) {
+ return index === 0 ? line.trimRight() : " " + (index < lines.length - 1 ? line.trim() : line.trimLeft());
+ })), "*/"]);
+ }
+
+ var printerEstree = {
+ preprocess: preprocess_1$1,
+ print: genericPrint$3,
+ embed: embed_1$1,
+ insertPragma: insertPragma$7,
+ massageAstNode: clean_1$1,
+ hasPrettierIgnore: hasPrettierIgnore$3,
+ willPrintOwnComments: willPrintOwnComments,
+ canAttachComment: canAttachComment$1,
+ printComment: printComment$2,
+ isBlockComment: comments$1.isBlockComment,
+ handleComments: {
+ ownLine: comments$1.handleOwnLineComment,
+ endOfLine: comments$1.handleEndOfLineComment,
+ remaining: comments$1.handleRemainingComment
+ }
+ };
+
+ var _require$$0$builders$7 = doc.builders,
+ concat$e = _require$$0$builders$7.concat,
+ hardline$a = _require$$0$builders$7.hardline,
+ indent$8 = _require$$0$builders$7.indent,
+ join$a = _require$$0$builders$7.join;
+
+ function genericPrint$4(path, options, print) {
+ var node = path.getValue();
+
+ switch (node.type) {
+ case "JsonRoot":
+ return concat$e([path.call(print, "node"), hardline$a]);
+
+ case "ArrayExpression":
+ return node.elements.length === 0 ? "[]" : concat$e(["[", indent$8(concat$e([hardline$a, join$a(concat$e([",", hardline$a]), path.map(print, "elements"))])), hardline$a, "]"]);
+
+ case "ObjectExpression":
+ return node.properties.length === 0 ? "{}" : concat$e(["{", indent$8(concat$e([hardline$a, join$a(concat$e([",", hardline$a]), path.map(print, "properties"))])), hardline$a, "}"]);
+
+ case "ObjectProperty":
+ return concat$e([path.call(print, "key"), ": ", path.call(print, "value")]);
+
+ case "UnaryExpression":
+ return concat$e([node.operator === "+" ? "" : node.operator, path.call(print, "argument")]);
+
+ case "NullLiteral":
+ return "null";
+
+ case "BooleanLiteral":
+ return node.value ? "true" : "false";
+
+ case "StringLiteral":
+ case "NumericLiteral":
+ return JSON.stringify(node.value);
+
+ case "Identifier":
+ return JSON.stringify(node.name);
+
+ default:
+ /* istanbul ignore next */
+ throw new Error("unknown type: " + JSON.stringify(node.type));
+ }
+ }
+
+ function clean$5(node, newNode
+ /*, parent*/
+ ) {
+ delete newNode.start;
+ delete newNode.end;
+ delete newNode.extra;
+ delete newNode.loc;
+ delete newNode.comments;
+ delete newNode.errors;
+
+ if (node.type === "Identifier") {
+ return {
+ type: "StringLiteral",
+ value: node.name
+ };
+ }
+
+ if (node.type === "UnaryExpression" && node.operator === "+") {
+ return newNode.argument;
+ }
+ }
+
+ var printerEstreeJson = {
+ preprocess: preprocess_1$1,
+ print: genericPrint$4,
+ massageAstNode: clean$5
+ };
+
+ var CATEGORY_JAVASCRIPT = "JavaScript"; // format based on https://github.com/prettier/prettier/blob/master/src/main/core-options.js
+
+ var options$5 = {
+ arrowParens: {
+ since: "1.9.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "choice",
+ default: "avoid",
+ description: "Include parentheses around a sole arrow function parameter.",
+ choices: [{
+ value: "avoid",
+ description: "Omit parens when possible. Example: `x => x`"
+ }, {
+ value: "always",
+ description: "Always include parens. Example: `(x) => x`"
+ }]
+ },
+ bracketSpacing: commonOptions.bracketSpacing,
+ jsxBracketSameLine: {
+ since: "0.17.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "boolean",
+ default: false,
+ description: "Put > on the last line instead of at a new line."
+ },
+ semi: {
+ since: "1.0.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "boolean",
+ default: true,
+ description: "Print semicolons.",
+ oppositeDescription: "Do not print semicolons, except at the beginning of lines which may need them."
+ },
+ singleQuote: commonOptions.singleQuote,
+ jsxSingleQuote: {
+ since: "1.15.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "boolean",
+ default: false,
+ description: "Use single quotes in JSX."
+ },
+ quoteProps: {
+ since: "1.17.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "choice",
+ default: "as-needed",
+ description: "Change when properties in objects are quoted.",
+ choices: [{
+ value: "as-needed",
+ description: "Only add quotes around object properties where required."
+ }, {
+ value: "consistent",
+ description: "If at least one property in an object requires quotes, quote all properties."
+ }, {
+ value: "preserve",
+ description: "Respect the input use of quotes in object properties."
+ }]
+ },
+ trailingComma: {
+ since: "0.0.0",
+ category: CATEGORY_JAVASCRIPT,
+ type: "choice",
+ default: [{
+ since: "0.0.0",
+ value: false
+ }, {
+ since: "0.19.0",
+ value: "none"
+ }],
+ description: "Print trailing commas wherever possible when multi-line.",
+ choices: [{
+ value: "none",
+ description: "No trailing commas."
+ }, {
+ value: "es5",
+ description: "Trailing commas where valid in ES5 (objects, arrays, etc.)"
+ }, {
+ value: "all",
+ description: "Trailing commas wherever possible (including function arguments)."
+ }, {
+ value: true,
+ deprecated: "0.19.0",
+ redirect: "es5"
+ }, {
+ value: false,
+ deprecated: "0.19.0",
+ redirect: "none"
+ }]
+ }
+ };
+
+ var name$9 = "JavaScript";
+ var type$8 = "programming";
+ var tmScope$8 = "source.js";
+ var aceMode$8 = "javascript";
+ var codemirrorMode$4 = "javascript";
+ var codemirrorMimeType$4 = "text/javascript";
+ var color$3 = "#f1e05a";
+ var aliases$2 = [
+ "js",
+ "node"
+ ];
+ var extensions$8 = [
+ ".js",
+ "._js",
+ ".bones",
+ ".es",
+ ".es6",
+ ".frag",
+ ".gs",
+ ".jake",
+ ".jsb",
+ ".jscad",
+ ".jsfl",
+ ".jsm",
+ ".jss",
+ ".mjs",
+ ".njs",
+ ".pac",
+ ".sjs",
+ ".ssjs",
+ ".xsjs",
+ ".xsjslib"
+ ];
+ var filenames = [
+ "Jakefile"
+ ];
+ var interpreters = [
+ "chakra",
+ "d8",
+ "js",
+ "node",
+ "rhino",
+ "v8",
+ "v8-shell"
+ ];
+ var languageId$8 = 183;
+ var JavaScript = {
+ name: name$9,
+ type: type$8,
+ tmScope: tmScope$8,
+ aceMode: aceMode$8,
+ codemirrorMode: codemirrorMode$4,
+ codemirrorMimeType: codemirrorMimeType$4,
+ color: color$3,
+ aliases: aliases$2,
+ extensions: extensions$8,
+ filenames: filenames,
+ interpreters: interpreters,
+ languageId: languageId$8
+ };
+
+ var JavaScript$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$9,
+ type: type$8,
+ tmScope: tmScope$8,
+ aceMode: aceMode$8,
+ codemirrorMode: codemirrorMode$4,
+ codemirrorMimeType: codemirrorMimeType$4,
+ color: color$3,
+ aliases: aliases$2,
+ extensions: extensions$8,
+ filenames: filenames,
+ interpreters: interpreters,
+ languageId: languageId$8,
+ 'default': JavaScript
+ });
+
+ var name$a = "JSX";
+ var type$9 = "programming";
+ var group$c = "JavaScript";
+ var extensions$9 = [
+ ".jsx"
+ ];
+ var tmScope$9 = "source.js.jsx";
+ var aceMode$9 = "javascript";
+ var codemirrorMode$5 = "jsx";
+ var codemirrorMimeType$5 = "text/jsx";
+ var languageId$9 = 178;
+ var JSX = {
+ name: name$a,
+ type: type$9,
+ group: group$c,
+ extensions: extensions$9,
+ tmScope: tmScope$9,
+ aceMode: aceMode$9,
+ codemirrorMode: codemirrorMode$5,
+ codemirrorMimeType: codemirrorMimeType$5,
+ languageId: languageId$9
+ };
+
+ var JSX$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$a,
+ type: type$9,
+ group: group$c,
+ extensions: extensions$9,
+ tmScope: tmScope$9,
+ aceMode: aceMode$9,
+ codemirrorMode: codemirrorMode$5,
+ codemirrorMimeType: codemirrorMimeType$5,
+ languageId: languageId$9,
+ 'default': JSX
+ });
+
+ var name$b = "TypeScript";
+ var type$a = "programming";
+ var color$4 = "#2b7489";
+ var aliases$3 = [
+ "ts"
+ ];
+ var interpreters$1 = [
+ "deno",
+ "ts-node"
+ ];
+ var extensions$a = [
+ ".ts"
+ ];
+ var tmScope$a = "source.ts";
+ var aceMode$a = "typescript";
+ var codemirrorMode$6 = "javascript";
+ var codemirrorMimeType$6 = "application/typescript";
+ var languageId$a = 378;
+ var TypeScript = {
+ name: name$b,
+ type: type$a,
+ color: color$4,
+ aliases: aliases$3,
+ interpreters: interpreters$1,
+ extensions: extensions$a,
+ tmScope: tmScope$a,
+ aceMode: aceMode$a,
+ codemirrorMode: codemirrorMode$6,
+ codemirrorMimeType: codemirrorMimeType$6,
+ languageId: languageId$a
+ };
+
+ var TypeScript$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$b,
+ type: type$a,
+ color: color$4,
+ aliases: aliases$3,
+ interpreters: interpreters$1,
+ extensions: extensions$a,
+ tmScope: tmScope$a,
+ aceMode: aceMode$a,
+ codemirrorMode: codemirrorMode$6,
+ codemirrorMimeType: codemirrorMimeType$6,
+ languageId: languageId$a,
+ 'default': TypeScript
+ });
+
+ var name$c = "TSX";
+ var type$b = "programming";
+ var group$d = "TypeScript";
+ var extensions$b = [
+ ".tsx"
+ ];
+ var tmScope$b = "source.tsx";
+ var aceMode$b = "javascript";
+ var codemirrorMode$7 = "jsx";
+ var codemirrorMimeType$7 = "text/jsx";
+ var languageId$b = 94901924;
+ var TSX = {
+ name: name$c,
+ type: type$b,
+ group: group$d,
+ extensions: extensions$b,
+ tmScope: tmScope$b,
+ aceMode: aceMode$b,
+ codemirrorMode: codemirrorMode$7,
+ codemirrorMimeType: codemirrorMimeType$7,
+ languageId: languageId$b
+ };
+
+ var TSX$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$c,
+ type: type$b,
+ group: group$d,
+ extensions: extensions$b,
+ tmScope: tmScope$b,
+ aceMode: aceMode$b,
+ codemirrorMode: codemirrorMode$7,
+ codemirrorMimeType: codemirrorMimeType$7,
+ languageId: languageId$b,
+ 'default': TSX
+ });
+
+ var name$d = "JSON";
+ var type$c = "data";
+ var tmScope$c = "source.json";
+ var aceMode$c = "json";
+ var codemirrorMode$8 = "javascript";
+ var codemirrorMimeType$8 = "application/json";
+ var searchable = false;
+ var extensions$c = [
+ ".json",
+ ".avsc",
+ ".geojson",
+ ".gltf",
+ ".har",
+ ".ice",
+ ".JSON-tmLanguage",
+ ".jsonl",
+ ".mcmeta",
+ ".tfstate",
+ ".tfstate.backup",
+ ".topojson",
+ ".webapp",
+ ".webmanifest",
+ ".yy",
+ ".yyp"
+ ];
+ var filenames$1 = [
+ ".arcconfig",
+ ".htmlhintrc",
+ ".tern-config",
+ ".tern-project",
+ ".watchmanconfig",
+ "composer.lock",
+ "mcmod.info"
+ ];
+ var languageId$c = 174;
+ var _JSON = {
+ name: name$d,
+ type: type$c,
+ tmScope: tmScope$c,
+ aceMode: aceMode$c,
+ codemirrorMode: codemirrorMode$8,
+ codemirrorMimeType: codemirrorMimeType$8,
+ searchable: searchable,
+ extensions: extensions$c,
+ filenames: filenames$1,
+ languageId: languageId$c
+ };
+
+ var _JSON$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$d,
+ type: type$c,
+ tmScope: tmScope$c,
+ aceMode: aceMode$c,
+ codemirrorMode: codemirrorMode$8,
+ codemirrorMimeType: codemirrorMimeType$8,
+ searchable: searchable,
+ extensions: extensions$c,
+ filenames: filenames$1,
+ languageId: languageId$c,
+ 'default': _JSON
+ });
+
+ var name$e = "JSON with Comments";
+ var type$d = "data";
+ var group$e = "JSON";
+ var tmScope$d = "source.js";
+ var aceMode$d = "javascript";
+ var codemirrorMode$9 = "javascript";
+ var codemirrorMimeType$9 = "text/javascript";
+ var aliases$4 = [
+ "jsonc"
+ ];
+ var extensions$d = [
+ ".sublime-build",
+ ".sublime-commands",
+ ".sublime-completions",
+ ".sublime-keymap",
+ ".sublime-macro",
+ ".sublime-menu",
+ ".sublime-mousemap",
+ ".sublime-project",
+ ".sublime-settings",
+ ".sublime-theme",
+ ".sublime-workspace",
+ ".sublime_metrics",
+ ".sublime_session"
+ ];
+ var filenames$2 = [
+ ".babelrc",
+ ".eslintrc.json",
+ ".jscsrc",
+ ".jshintrc",
+ ".jslintrc",
+ "jsconfig.json",
+ "language-configuration.json",
+ "tsconfig.json"
+ ];
+ var languageId$d = 423;
+ var JSON_with_Comments = {
+ name: name$e,
+ type: type$d,
+ group: group$e,
+ tmScope: tmScope$d,
+ aceMode: aceMode$d,
+ codemirrorMode: codemirrorMode$9,
+ codemirrorMimeType: codemirrorMimeType$9,
+ aliases: aliases$4,
+ extensions: extensions$d,
+ filenames: filenames$2,
+ languageId: languageId$d
+ };
+
+ var JSON_with_Comments$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$e,
+ type: type$d,
+ group: group$e,
+ tmScope: tmScope$d,
+ aceMode: aceMode$d,
+ codemirrorMode: codemirrorMode$9,
+ codemirrorMimeType: codemirrorMimeType$9,
+ aliases: aliases$4,
+ extensions: extensions$d,
+ filenames: filenames$2,
+ languageId: languageId$d,
+ 'default': JSON_with_Comments
+ });
+
+ var name$f = "JSON5";
+ var type$e = "data";
+ var extensions$e = [
+ ".json5"
+ ];
+ var tmScope$e = "source.js";
+ var aceMode$e = "javascript";
+ var codemirrorMode$a = "javascript";
+ var codemirrorMimeType$a = "application/json";
+ var languageId$e = 175;
+ var JSON5 = {
+ name: name$f,
+ type: type$e,
+ extensions: extensions$e,
+ tmScope: tmScope$e,
+ aceMode: aceMode$e,
+ codemirrorMode: codemirrorMode$a,
+ codemirrorMimeType: codemirrorMimeType$a,
+ languageId: languageId$e
+ };
+
+ var JSON5$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$f,
+ type: type$e,
+ extensions: extensions$e,
+ tmScope: tmScope$e,
+ aceMode: aceMode$e,
+ codemirrorMode: codemirrorMode$a,
+ codemirrorMimeType: codemirrorMimeType$a,
+ languageId: languageId$e,
+ 'default': JSON5
+ });
+
+ var require$$0$6 = getCjsExportFromNamespace(JavaScript$1);
+
+ var require$$1$2 = getCjsExportFromNamespace(JSX$1);
+
+ var require$$2$1 = getCjsExportFromNamespace(TypeScript$1);
+
+ var require$$3$1 = getCjsExportFromNamespace(TSX$1);
+
+ var require$$4 = getCjsExportFromNamespace(_JSON$1);
+
+ var require$$5 = getCjsExportFromNamespace(JSON_with_Comments$1);
+
+ var require$$6 = getCjsExportFromNamespace(JSON5$1);
+
+ var languages$4 = [createLanguage(require$$0$6, function (data) {
+ return Object.assign(data, {
+ since: "0.0.0",
+ parsers: ["babel", "flow"],
+ vscodeLanguageIds: ["javascript", "mongo"],
+ interpreters: data.interpreters.concat(["nodejs"])
+ });
+ }), createLanguage(require$$0$6, function (data) {
+ return Object.assign(data, {
+ name: "Flow",
+ since: "0.0.0",
+ parsers: ["babel", "flow"],
+ vscodeLanguageIds: ["javascript"],
+ aliases: [],
+ filenames: [],
+ extensions: [".js.flow"]
+ });
+ }), createLanguage(require$$1$2, function (data) {
+ return Object.assign(data, {
+ since: "0.0.0",
+ parsers: ["babel", "flow"],
+ vscodeLanguageIds: ["javascriptreact"]
+ });
+ }), createLanguage(require$$2$1, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["typescript"],
+ vscodeLanguageIds: ["typescript"]
+ });
+ }), createLanguage(require$$3$1, function (data) {
+ return Object.assign(data, {
+ since: "1.4.0",
+ parsers: ["typescript"],
+ vscodeLanguageIds: ["typescriptreact"]
+ });
+ }), createLanguage(require$$4, function (data) {
+ return Object.assign(data, {
+ name: "JSON.stringify",
+ since: "1.13.0",
+ parsers: ["json-stringify"],
+ vscodeLanguageIds: ["json"],
+ extensions: [],
+ // .json file defaults to json instead of json-stringify
+ filenames: ["package.json", "package-lock.json", "composer.json"]
+ });
+ }), createLanguage(require$$4, function (data) {
+ return Object.assign(data, {
+ since: "1.5.0",
+ parsers: ["json"],
+ vscodeLanguageIds: ["json"],
+ filenames: data.filenames.concat([".prettierrc"])
+ });
+ }), createLanguage(require$$5, function (data) {
+ return Object.assign(data, {
+ since: "1.5.0",
+ parsers: ["json"],
+ vscodeLanguageIds: ["jsonc"],
+ filenames: data.filenames.concat([".eslintrc"])
+ });
+ }), createLanguage(require$$6, function (data) {
+ return Object.assign(data, {
+ since: "1.13.0",
+ parsers: ["json5"],
+ vscodeLanguageIds: ["json5"]
+ });
+ })];
+ var printers$4 = {
+ estree: printerEstree,
+ "estree-json": printerEstreeJson
+ };
+ var languageJs = {
+ languages: languages$4,
+ options: options$5,
+ printers: printers$4
+ };
+
+ var json$1 = {
+ "cjkPattern": "[\\u02ea-\\u02eb\\u1100-\\u11ff\\u2e80-\\u2e99\\u2e9b-\\u2ef3\\u2f00-\\u2fd5\\u3000-\\u303f\\u3041-\\u3096\\u3099-\\u309f\\u30a1-\\u30fa\\u30fc-\\u30ff\\u3105-\\u312f\\u3131-\\u318e\\u3190-\\u3191\\u3196-\\u31ba\\u31c0-\\u31e3\\u31f0-\\u321e\\u322a-\\u3247\\u3260-\\u327e\\u328a-\\u32b0\\u32c0-\\u32cb\\u32d0-\\u3370\\u337b-\\u337f\\u33e0-\\u33fe\\u3400-\\u4db5\\u4e00-\\u9fef\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\uf900-\\ufa6d\\ufa70-\\ufad9\\ufe10-\\ufe1f\\ufe30-\\ufe6f\\uff00-\\uffef]|[\\ud840-\\ud868\\ud86a-\\ud86c\\ud86f-\\ud872\\ud874-\\ud879][\\udc00-\\udfff]|\\ud82c[\\udc00-\\udd1e\\udd50-\\udd52\\udd64-\\udd67]|\\ud83c[\\ude00\\ude50-\\ude51]|\\ud869[\\udc00-\\uded6\\udf00-\\udfff]|\\ud86d[\\udc00-\\udf34\\udf40-\\udfff]|\\ud86e[\\udc00-\\udc1d\\udc20-\\udfff]|\\ud873[\\udc00-\\udea1\\udeb0-\\udfff]|\\ud87a[\\udc00-\\udfe0]|\\ud87e[\\udc00-\\ude1d]",
+ "kPattern": "[\\u1100-\\u11ff\\u3001-\\u3003\\u3008-\\u3011\\u3013-\\u301f\\u302e-\\u3030\\u3037\\u30fb\\u3131-\\u318e\\u3200-\\u321e\\u3260-\\u327e\\ua960-\\ua97c\\uac00-\\ud7a3\\ud7b0-\\ud7c6\\ud7cb-\\ud7fb\\ufe45-\\ufe46\\uff61-\\uff65\\uffa0-\\uffbe\\uffc2-\\uffc7\\uffca-\\uffcf\\uffd2-\\uffd7\\uffda-\\uffdc]",
+ "punctuationPattern": "[\\u0021-\\u002f\\u003a-\\u0040\\u005b-\\u0060\\u007b-\\u007e\\u00a1\\u00a7\\u00ab\\u00b6-\\u00b7\\u00bb\\u00bf\\u037e\\u0387\\u055a-\\u055f\\u0589-\\u058a\\u05be\\u05c0\\u05c3\\u05c6\\u05f3-\\u05f4\\u0609-\\u060a\\u060c-\\u060d\\u061b\\u061e-\\u061f\\u066a-\\u066d\\u06d4\\u0700-\\u070d\\u07f7-\\u07f9\\u0830-\\u083e\\u085e\\u0964-\\u0965\\u0970\\u09fd\\u0a76\\u0af0\\u0c77\\u0c84\\u0df4\\u0e4f\\u0e5a-\\u0e5b\\u0f04-\\u0f12\\u0f14\\u0f3a-\\u0f3d\\u0f85\\u0fd0-\\u0fd4\\u0fd9-\\u0fda\\u104a-\\u104f\\u10fb\\u1360-\\u1368\\u1400\\u166e\\u169b-\\u169c\\u16eb-\\u16ed\\u1735-\\u1736\\u17d4-\\u17d6\\u17d8-\\u17da\\u1800-\\u180a\\u1944-\\u1945\\u1a1e-\\u1a1f\\u1aa0-\\u1aa6\\u1aa8-\\u1aad\\u1b5a-\\u1b60\\u1bfc-\\u1bff\\u1c3b-\\u1c3f\\u1c7e-\\u1c7f\\u1cc0-\\u1cc7\\u1cd3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205e\\u207d-\\u207e\\u208d-\\u208e\\u2308-\\u230b\\u2329-\\u232a\\u2768-\\u2775\\u27c5-\\u27c6\\u27e6-\\u27ef\\u2983-\\u2998\\u29d8-\\u29db\\u29fc-\\u29fd\\u2cf9-\\u2cfc\\u2cfe-\\u2cff\\u2d70\\u2e00-\\u2e2e\\u2e30-\\u2e4f\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301f\\u3030\\u303d\\u30a0\\u30fb\\ua4fe-\\ua4ff\\ua60d-\\ua60f\\ua673\\ua67e\\ua6f2-\\ua6f7\\ua874-\\ua877\\ua8ce-\\ua8cf\\ua8f8-\\ua8fa\\ua8fc\\ua92e-\\ua92f\\ua95f\\ua9c1-\\ua9cd\\ua9de-\\ua9df\\uaa5c-\\uaa5f\\uaade-\\uaadf\\uaaf0-\\uaaf1\\uabeb\\ufd3e-\\ufd3f\\ufe10-\\ufe19\\ufe30-\\ufe52\\ufe54-\\ufe61\\ufe63\\ufe68\\ufe6a-\\ufe6b\\uff01-\\uff03\\uff05-\\uff0a\\uff0c-\\uff0f\\uff1a-\\uff1b\\uff1f-\\uff20\\uff3b-\\uff3d\\uff3f\\uff5b\\uff5d\\uff5f-\\uff65]|\\ud800[\\udd00-\\udd02\\udf9f\\udfd0]|\\ud801[\\udd6f]|\\ud802[\\udc57\\udd1f\\udd3f\\ude50-\\ude58\\ude7f\\udef0-\\udef6\\udf39-\\udf3f\\udf99-\\udf9c]|\\ud803[\\udf55-\\udf59]|\\ud804[\\udc47-\\udc4d\\udcbb-\\udcbc\\udcbe-\\udcc1\\udd40-\\udd43\\udd74-\\udd75\\uddc5-\\uddc8\\uddcd\\udddb\\udddd-\\udddf\\ude38-\\ude3d\\udea9]|\\ud805[\\udc4b-\\udc4f\\udc5b\\udc5d\\udcc6\\uddc1-\\uddd7\\ude41-\\ude43\\ude60-\\ude6c\\udf3c-\\udf3e]|\\ud806[\\udc3b\\udde2\\ude3f-\\ude46\\ude9a-\\ude9c\\ude9e-\\udea2]|\\ud807[\\udc41-\\udc45\\udc70-\\udc71\\udef7-\\udef8\\udfff]|\\ud809[\\udc70-\\udc74]|\\ud81a[\\ude6e-\\ude6f\\udef5\\udf37-\\udf3b\\udf44]|\\ud81b[\\ude97-\\ude9a\\udfe2]|\\ud82f[\\udc9f]|\\ud836[\\ude87-\\ude8b]|\\ud83a[\\udd5e-\\udd5f]"
+ };
+
+ var cjkPattern = json$1.cjkPattern,
+ kPattern = json$1.kPattern,
+ punctuationPattern = json$1.punctuationPattern;
+ var getLast$3 = util.getLast;
+ var INLINE_NODE_TYPES = ["liquidNode", "inlineCode", "emphasis", "strong", "delete", "link", "linkReference", "image", "imageReference", "footnote", "footnoteReference", "sentence", "whitespace", "word", "break", "inlineMath"];
+ var INLINE_NODE_WRAPPER_TYPES = INLINE_NODE_TYPES.concat(["tableCell", "paragraph", "heading"]);
+ var kRegex = new RegExp(kPattern);
+ var punctuationRegex = new RegExp(punctuationPattern);
+ /**
+ * split text into whitespaces and words
+ * @param {string} text
+ * @return {Array<{ type: "whitespace", value: " " | "\n" | "" } | { type: "word", value: string }>}
+ */
+
+ function splitText(text, options) {
+ var KIND_NON_CJK = "non-cjk";
+ var KIND_CJ_LETTER = "cj-letter";
+ var KIND_K_LETTER = "k-letter";
+ var KIND_CJK_PUNCTUATION = "cjk-punctuation";
+ var nodes = [];
+ (options.proseWrap === "preserve" ? text : text.replace(new RegExp("(".concat(cjkPattern, ")\n(").concat(cjkPattern, ")"), "g"), "$1$2")).split(/([ \t\n]+)/).forEach(function (token, index, tokens) {
+ // whitespace
+ if (index % 2 === 1) {
+ nodes.push({
+ type: "whitespace",
+ value: /\n/.test(token) ? "\n" : " "
+ });
+ return;
+ } // word separated by whitespace
+
+
+ if ((index === 0 || index === tokens.length - 1) && token === "") {
+ return;
+ }
+
+ token.split(new RegExp("(".concat(cjkPattern, ")"))).forEach(function (innerToken, innerIndex, innerTokens) {
+ if ((innerIndex === 0 || innerIndex === innerTokens.length - 1) && innerToken === "") {
+ return;
+ } // non-CJK word
+
+
+ if (innerIndex % 2 === 0) {
+ if (innerToken !== "") {
+ appendNode({
+ type: "word",
+ value: innerToken,
+ kind: KIND_NON_CJK,
+ hasLeadingPunctuation: punctuationRegex.test(innerToken[0]),
+ hasTrailingPunctuation: punctuationRegex.test(getLast$3(innerToken))
+ });
+ }
+
+ return;
+ } // CJK character
+
+
+ appendNode(punctuationRegex.test(innerToken) ? {
+ type: "word",
+ value: innerToken,
+ kind: KIND_CJK_PUNCTUATION,
+ hasLeadingPunctuation: true,
+ hasTrailingPunctuation: true
+ } : {
+ type: "word",
+ value: innerToken,
+ kind: kRegex.test(innerToken) ? KIND_K_LETTER : KIND_CJ_LETTER,
+ hasLeadingPunctuation: false,
+ hasTrailingPunctuation: false
+ });
+ });
+ });
+ return nodes;
+
+ function appendNode(node) {
+ var lastNode = getLast$3(nodes);
+
+ if (lastNode && lastNode.type === "word") {
+ if (lastNode.kind === KIND_NON_CJK && node.kind === KIND_CJ_LETTER && !lastNode.hasTrailingPunctuation || lastNode.kind === KIND_CJ_LETTER && node.kind === KIND_NON_CJK && !node.hasLeadingPunctuation) {
+ nodes.push({
+ type: "whitespace",
+ value: " "
+ });
+ } else if (!isBetween(KIND_NON_CJK, KIND_CJK_PUNCTUATION) && // disallow leading/trailing full-width whitespace
+ ![lastNode.value, node.value].some(function (value) {
+ return /\u3000/.test(value);
+ })) {
+ nodes.push({
+ type: "whitespace",
+ value: ""
+ });
+ }
+ }
+
+ nodes.push(node);
+
+ function isBetween(kind1, kind2) {
+ return lastNode.kind === kind1 && node.kind === kind2 || lastNode.kind === kind2 && node.kind === kind1;
+ }
+ }
+ }
+
+ function getOrderedListItemInfo(orderListItem, originalText) {
+ var _originalText$slice$m = originalText.slice(orderListItem.position.start.offset, orderListItem.position.end.offset).match(/^\s*(\d+)(\.|\))(\s*)/),
+ _originalText$slice$m2 = _slicedToArray(_originalText$slice$m, 4),
+ numberText = _originalText$slice$m2[1],
+ marker = _originalText$slice$m2[2],
+ leadingSpaces = _originalText$slice$m2[3];
+
+ return {
+ numberText: numberText,
+ marker: marker,
+ leadingSpaces: leadingSpaces
+ };
+ } // workaround for https://github.com/remarkjs/remark/issues/351
+ // leading and trailing newlines are stripped by remark
+
+
+ function getFencedCodeBlockValue(node, originalText) {
+ var text = originalText.slice(node.position.start.offset, node.position.end.offset);
+ var leadingSpaceCount = text.match(/^\s*/)[0].length;
+ var replaceRegex = new RegExp("^\\s{0,".concat(leadingSpaceCount, "}"));
+ var lineContents = text.split("\n");
+ var markerStyle = text[leadingSpaceCount]; // ` or ~
+
+ var marker = text.slice(leadingSpaceCount).match(new RegExp("^[".concat(markerStyle, "]+")))[0]; // https://spec.commonmark.org/0.28/#example-104: Closing fences may be indented by 0-3 spaces
+ // https://spec.commonmark.org/0.28/#example-93: The closing code fence must be at least as long as the opening fence
+
+ var hasEndMarker = new RegExp("^\\s{0,3}".concat(marker)).test(lineContents[lineContents.length - 1].slice(getIndent(lineContents.length - 1)));
+ return lineContents.slice(1, hasEndMarker ? -1 : undefined).map(function (x, i) {
+ return x.slice(getIndent(i + 1)).replace(replaceRegex, "");
+ }).join("\n");
+
+ function getIndent(lineIndex) {
+ return node.position.indent[lineIndex - 1] - 1;
+ }
+ }
+
+ function mapAst(ast, handler) {
+ return function preorder(node, index, parentStack) {
+ parentStack = parentStack || [];
+ var newNode = handler(node, index, parentStack);
+
+ if (Array.isArray(newNode)) {
+ return newNode;
+ }
+
+ newNode = Object.assign({}, newNode);
+
+ if (newNode.children) {
+ newNode.children = newNode.children.reduce(function (nodes, child, index) {
+ var newNodes = preorder(child, index, [newNode].concat(parentStack));
+
+ if (!Array.isArray(newNodes)) {
+ newNodes = [newNodes];
+ }
+
+ nodes.push.apply(nodes, newNodes);
+ return nodes;
+ }, []);
+ }
+
+ return newNode;
+ }(ast, null, null);
+ }
+
+ var utils$5 = {
+ mapAst: mapAst,
+ splitText: splitText,
+ punctuationPattern: punctuationPattern,
+ getFencedCodeBlockValue: getFencedCodeBlockValue,
+ getOrderedListItemInfo: getOrderedListItemInfo,
+ INLINE_NODE_TYPES: INLINE_NODE_TYPES,
+ INLINE_NODE_WRAPPER_TYPES: INLINE_NODE_WRAPPER_TYPES
+ };
+
+ var _require$$0$builders$8 = doc.builders,
+ hardline$b = _require$$0$builders$8.hardline,
+ literalline$5 = _require$$0$builders$8.literalline,
+ concat$f = _require$$0$builders$8.concat,
+ markAsRoot$3 = _require$$0$builders$8.markAsRoot,
+ mapDoc$6 = doc.utils.mapDoc;
+ var getFencedCodeBlockValue$1 = utils$5.getFencedCodeBlockValue;
+
+ function embed$4(path, print, textToDoc, options) {
+ var node = path.getValue();
+
+ if (node.type === "code" && node.lang !== null) {
+ // only look for the first string so as to support [markdown-preview-enhanced](https://shd101wyy.github.io/markdown-preview-enhanced/#/code-chunk)
+ var langMatch = node.lang.match(/^[A-Za-z0-9_-]+/);
+ var lang = langMatch ? langMatch[0] : "";
+ var parser = getParserName(lang);
+
+ if (parser) {
+ var styleUnit = options.__inJsTemplate ? "~" : "`";
+ var style = styleUnit.repeat(Math.max(3, util.getMaxContinuousCount(node.value, styleUnit) + 1));
+ var doc = textToDoc(getFencedCodeBlockValue$1(node, options.originalText), {
+ parser: parser
+ });
+ return markAsRoot$3(concat$f([style, node.lang, hardline$b, replaceNewlinesWithLiterallines(doc), style]));
+ }
+ }
+
+ if (node.type === "yaml") {
+ return markAsRoot$3(concat$f(["---", hardline$b, node.value && node.value.trim() ? replaceNewlinesWithLiterallines(textToDoc(node.value, {
+ parser: "yaml"
+ })) : "", "---"]));
+ } // MDX
+
+
+ switch (node.type) {
+ case "importExport":
+ return textToDoc(node.value, {
+ parser: "babel"
+ });
+
+ case "jsx":
+ return textToDoc(node.value, {
+ parser: "__js_expression"
+ });
+ }
+
+ return null;
+
+ function getParserName(lang) {
+ var supportInfo = support.getSupportInfo(null, {
+ plugins: options.plugins
+ });
+ var language = supportInfo.languages.find(function (language) {
+ return language.name.toLowerCase() === lang || language.aliases && language.aliases.indexOf(lang) !== -1 || language.extensions && language.extensions.find(function (ext) {
+ return ext.substring(1) === lang;
+ });
+ });
+
+ if (language) {
+ return language.parsers[0];
+ }
+
+ return null;
+ }
+
+ function replaceNewlinesWithLiterallines(doc) {
+ return mapDoc$6(doc, function (currentDoc) {
+ return typeof currentDoc === "string" && currentDoc.includes("\n") ? concat$f(currentDoc.split(/(\n)/g).map(function (v, i) {
+ return i % 2 === 0 ? v : literalline$5;
+ })) : currentDoc;
+ });
+ }
+ }
+
+ var embed_1$2 = embed$4;
+
+ var pragmas = ["format", "prettier"];
+
+ function startWithPragma(text) {
+ var pragma = "@(".concat(pragmas.join("|"), ")");
+ var regex = new RegExp(["<!--\\s*".concat(pragma, "\\s*-->"), "<!--.*\r?\n[\\s\\S]*(^|\n)[^\\S\n]*".concat(pragma, "[^\\S\n]*($|\n)[\\s\\S]*\n.*-->")].join("|"), "m");
+ var matched = text.match(regex);
+ return matched && matched.index === 0;
+ }
+
+ var pragma$4 = {
+ startWithPragma: startWithPragma,
+ hasPragma: function hasPragma(text) {
+ return startWithPragma(frontMatter(text).content.trimLeft());
+ },
+ insertPragma: function insertPragma(text) {
+ var extracted = frontMatter(text);
+ var pragma = "<!-- @".concat(pragmas[0], " -->");
+ return extracted.frontMatter ? "".concat(extracted.frontMatter.raw, "\n\n").concat(pragma, "\n\n").concat(extracted.content) : "".concat(pragma, "\n\n").concat(extracted.content);
+ }
+ };
+
+ var getOrderedListItemInfo$1 = utils$5.getOrderedListItemInfo,
+ mapAst$1 = utils$5.mapAst,
+ splitText$1 = utils$5.splitText; // 0x0 ~ 0x10ffff
+ // eslint-disable-next-line no-control-regex
+
+ var isSingleCharRegex = /^([\u0000-\uffff]|[\ud800-\udbff][\udc00-\udfff])$/;
+
+ function preprocess$2(ast, options) {
+ ast = restoreUnescapedCharacter(ast, options);
+ ast = mergeContinuousTexts(ast);
+ ast = transformInlineCode(ast);
+ ast = transformIndentedCodeblockAndMarkItsParentList(ast, options);
+ ast = markAlignedList(ast, options);
+ ast = splitTextIntoSentences(ast, options);
+ ast = transformImportExport(ast);
+ ast = mergeContinuousImportExport(ast);
+ return ast;
+ }
+
+ function transformImportExport(ast) {
+ return mapAst$1(ast, function (node) {
+ if (node.type !== "import" && node.type !== "export") {
+ return node;
+ }
+
+ return Object.assign({}, node, {
+ type: "importExport"
+ });
+ });
+ }
+
+ function transformInlineCode(ast) {
+ return mapAst$1(ast, function (node) {
+ if (node.type !== "inlineCode") {
+ return node;
+ }
+
+ return Object.assign({}, node, {
+ value: node.value.replace(/\s+/g, " ")
+ });
+ });
+ }
+
+ function restoreUnescapedCharacter(ast, options) {
+ return mapAst$1(ast, function (node) {
+ return node.type !== "text" ? node : Object.assign({}, node, {
+ value: node.value !== "*" && node.value !== "_" && node.value !== "$" && // handle these cases in printer
+ isSingleCharRegex.test(node.value) && node.position.end.offset - node.position.start.offset !== node.value.length ? options.originalText.slice(node.position.start.offset, node.position.end.offset) : node.value
+ });
+ });
+ }
+
+ function mergeContinuousImportExport(ast) {
+ return mergeChildren(ast, function (prevNode, node) {
+ return prevNode.type === "importExport" && node.type === "importExport";
+ }, function (prevNode, node) {
+ return {
+ type: "importExport",
+ value: prevNode.value + "\n\n" + node.value,
+ position: {
+ start: prevNode.position.start,
+ end: node.position.end
+ }
+ };
+ });
+ }
+
+ function mergeChildren(ast, shouldMerge, mergeNode) {
+ return mapAst$1(ast, function (node) {
+ if (!node.children) {
+ return node;
+ }
+
+ var children = node.children.reduce(function (current, child) {
+ var lastChild = current[current.length - 1];
+
+ if (lastChild && shouldMerge(lastChild, child)) {
+ current.splice(-1, 1, mergeNode(lastChild, child));
+ } else {
+ current.push(child);
+ }
+
+ return current;
+ }, []);
+ return Object.assign({}, node, {
+ children: children
+ });
+ });
+ }
+
+ function mergeContinuousTexts(ast) {
+ return mergeChildren(ast, function (prevNode, node) {
+ return prevNode.type === "text" && node.type === "text";
+ }, function (prevNode, node) {
+ return {
+ type: "text",
+ value: prevNode.value + node.value,
+ position: {
+ start: prevNode.position.start,
+ end: node.position.end
+ }
+ };
+ });
+ }
+
+ function splitTextIntoSentences(ast, options) {
+ return mapAst$1(ast, function (node, index, _ref) {
+ var _ref2 = _slicedToArray(_ref, 1),
+ parentNode = _ref2[0];
+
+ if (node.type !== "text") {
+ return node;
+ }
+
+ var value = node.value;
+
+ if (parentNode.type === "paragraph") {
+ if (index === 0) {
+ value = value.trimLeft();
+ }
+
+ if (index === parentNode.children.length - 1) {
+ value = value.trimRight();
+ }
+ }
+
+ return {
+ type: "sentence",
+ position: node.position,
+ children: splitText$1(value, options)
+ };
+ });
+ }
+
+ function transformIndentedCodeblockAndMarkItsParentList(ast, options) {
+ return mapAst$1(ast, function (node, index, parentStack) {
+ if (node.type === "code") {
+ // the first char may point to `\n`, e.g. `\n\t\tbar`, just ignore it
+ var isIndented = /^\n?( {4,}|\t)/.test(options.originalText.slice(node.position.start.offset, node.position.end.offset));
+ node.isIndented = isIndented;
+
+ if (isIndented) {
+ for (var i = 0; i < parentStack.length; i++) {
+ var parent = parentStack[i]; // no need to check checked items
+
+ if (parent.hasIndentedCodeblock) {
+ break;
+ }
+
+ if (parent.type === "list") {
+ parent.hasIndentedCodeblock = true;
+ }
+ }
+ }
+ }
+
+ return node;
+ });
+ }
+
+ function markAlignedList(ast, options) {
+ return mapAst$1(ast, function (node, index, parentStack) {
+ if (node.type === "list" && node.children.length !== 0) {
+ // if one of its parents is not aligned, it's not possible to be aligned in sub-lists
+ for (var i = 0; i < parentStack.length; i++) {
+ var parent = parentStack[i];
+
+ if (parent.type === "list" && !parent.isAligned) {
+ node.isAligned = false;
+ return node;
+ }
+ }
+
+ node.isAligned = isAligned(node);
+ }
+
+ return node;
+ });
+
+ function getListItemStart(listItem) {
+ return listItem.children.length === 0 ? -1 : listItem.children[0].position.start.column - 1;
+ }
+
+ function isAligned(list) {
+ if (!list.ordered) {
+ /**
+ * - 123
+ * - 123
+ */
+ return true;
+ }
+
+ var _list$children = _slicedToArray(list.children, 2),
+ firstItem = _list$children[0],
+ secondItem = _list$children[1];
+
+ var firstInfo = getOrderedListItemInfo$1(firstItem, options.originalText);
+
+ if (firstInfo.leadingSpaces.length > 1) {
+ /**
+ * 1. 123
+ *
+ * 1. 123
+ * 1. 123
+ */
+ return true;
+ }
+
+ var firstStart = getListItemStart(firstItem);
+
+ if (firstStart === -1) {
+ /**
+ * 1.
+ *
+ * 1.
+ * 1.
+ */
+ return false;
+ }
+
+ if (list.children.length === 1) {
+ /**
+ * aligned:
+ *
+ * 11. 123
+ *
+ * not aligned:
+ *
+ * 1. 123
+ */
+ return firstStart % options.tabWidth === 0;
+ }
+
+ var secondStart = getListItemStart(secondItem);
+
+ if (firstStart !== secondStart) {
+ /**
+ * 11. 123
+ * 1. 123
+ *
+ * 1. 123
+ * 11. 123
+ */
+ return false;
+ }
+
+ if (firstStart % options.tabWidth === 0) {
+ /**
+ * 11. 123
+ * 12. 123
+ */
+ return true;
+ }
+ /**
+ * aligned:
+ *
+ * 11. 123
+ * 1. 123
+ *
+ * not aligned:
+ *
+ * 1. 123
+ * 2. 123
+ */
+
+
+ var secondInfo = getOrderedListItemInfo$1(secondItem, options.originalText);
+ return secondInfo.leadingSpaces.length > 1;
+ }
+ }
+
+ var preprocess_1$2 = preprocess$2;
+
+ var _require$$0$builders$9 = doc.builders,
+ breakParent$4 = _require$$0$builders$9.breakParent,
+ concat$g = _require$$0$builders$9.concat,
+ join$b = _require$$0$builders$9.join,
+ line$8 = _require$$0$builders$9.line,
+ literalline$6 = _require$$0$builders$9.literalline,
+ markAsRoot$4 = _require$$0$builders$9.markAsRoot,
+ hardline$c = _require$$0$builders$9.hardline,
+ softline$7 = _require$$0$builders$9.softline,
+ ifBreak$7 = _require$$0$builders$9.ifBreak,
+ fill$5 = _require$$0$builders$9.fill,
+ align$2 = _require$$0$builders$9.align,
+ indent$9 = _require$$0$builders$9.indent,
+ group$f = _require$$0$builders$9.group,
+ mapDoc$7 = doc.utils.mapDoc,
+ printDocToString$2 = doc.printer.printDocToString;
+ var getFencedCodeBlockValue$2 = utils$5.getFencedCodeBlockValue,
+ getOrderedListItemInfo$2 = utils$5.getOrderedListItemInfo,
+ splitText$2 = utils$5.splitText,
+ punctuationPattern$1 = utils$5.punctuationPattern,
+ INLINE_NODE_TYPES$1 = utils$5.INLINE_NODE_TYPES,
+ INLINE_NODE_WRAPPER_TYPES$1 = utils$5.INLINE_NODE_WRAPPER_TYPES;
+ var replaceEndOfLineWith$2 = util.replaceEndOfLineWith;
+ var TRAILING_HARDLINE_NODES = ["importExport"];
+ var SINGLE_LINE_NODE_TYPES = ["heading", "tableCell", "link"];
+ var SIBLING_NODE_TYPES = ["listItem", "definition", "footnoteDefinition", "jsx"];
+
+ function genericPrint$5(path, options, print) {
+ var node = path.getValue();
+
+ if (shouldRemainTheSameContent(path)) {
+ return concat$g(splitText$2(options.originalText.slice(node.position.start.offset, node.position.end.offset), options).map(function (node) {
+ return node.type === "word" ? node.value : node.value === "" ? "" : printLine(path, node.value, options);
+ }));
+ }
+
+ switch (node.type) {
+ case "root":
+ if (node.children.length === 0) {
+ return "";
+ }
+
+ return concat$g([normalizeDoc(printRoot(path, options, print)), TRAILING_HARDLINE_NODES.indexOf(getLastDescendantNode(node).type) === -1 ? hardline$c : ""]);
+
+ case "paragraph":
+ return printChildren$2(path, options, print, {
+ postprocessor: fill$5
+ });
+
+ case "sentence":
+ return printChildren$2(path, options, print);
+
+ case "word":
+ return node.value.replace(/[*$]/g, "\\$&") // escape all `*` and `$` (math)
+ .replace(new RegExp(["(^|".concat(punctuationPattern$1, ")(_+)"), "(_+)(".concat(punctuationPattern$1, "|$)")].join("|"), "g"), function (_, text1, underscore1, underscore2, text2) {
+ return (underscore1 ? "".concat(text1).concat(underscore1) : "".concat(underscore2).concat(text2)).replace(/_/g, "\\_");
+ });
+ // escape all `_` except concating with non-punctuation, e.g. `1_2_3` is not considered emphasis
+
+ case "whitespace":
+ {
+ var parentNode = path.getParentNode();
+ var index = parentNode.children.indexOf(node);
+ var nextNode = parentNode.children[index + 1];
+ var proseWrap = // leading char that may cause different syntax
+ nextNode && /^>|^([-+*]|#{1,6}|[0-9]+[.)])$/.test(nextNode.value) ? "never" : options.proseWrap;
+ return printLine(path, node.value, {
+ proseWrap: proseWrap
+ });
+ }
+
+ case "emphasis":
+ {
+ var _parentNode = path.getParentNode();
+
+ var _index = _parentNode.children.indexOf(node);
+
+ var prevNode = _parentNode.children[_index - 1];
+ var _nextNode = _parentNode.children[_index + 1];
+ var hasPrevOrNextWord = // `1*2*3` is considered emphasis but `1_2_3` is not
+ prevNode && prevNode.type === "sentence" && prevNode.children.length > 0 && util.getLast(prevNode.children).type === "word" && !util.getLast(prevNode.children).hasTrailingPunctuation || _nextNode && _nextNode.type === "sentence" && _nextNode.children.length > 0 && _nextNode.children[0].type === "word" && !_nextNode.children[0].hasLeadingPunctuation;
+ var style = hasPrevOrNextWord || getAncestorNode$2(path, "emphasis") ? "*" : "_";
+ return concat$g([style, printChildren$2(path, options, print), style]);
+ }
+
+ case "strong":
+ return concat$g(["**", printChildren$2(path, options, print), "**"]);
+
+ case "delete":
+ return concat$g(["~~", printChildren$2(path, options, print), "~~"]);
+
+ case "inlineCode":
+ {
+ var backtickCount = util.getMinNotPresentContinuousCount(node.value, "`");
+
+ var _style = "`".repeat(backtickCount || 1);
+
+ var gap = backtickCount ? " " : "";
+ return concat$g([_style, gap, node.value, gap, _style]);
+ }
+
+ case "link":
+ switch (options.originalText[node.position.start.offset]) {
+ case "<":
+ {
+ var mailto = "mailto:";
+ var url = // <hello@example.com> is parsed as { url: "mailto:hello@example.com" }
+ node.url.startsWith(mailto) && options.originalText.slice(node.position.start.offset + 1, node.position.start.offset + 1 + mailto.length) !== mailto ? node.url.slice(mailto.length) : node.url;
+ return concat$g(["<", url, ">"]);
+ }
+
+ case "[":
+ return concat$g(["[", printChildren$2(path, options, print), "](", printUrl(node.url, ")"), printTitle(node.title, options), ")"]);
+
+ default:
+ return options.originalText.slice(node.position.start.offset, node.position.end.offset);
+ }
+
+ case "image":
+ return concat$g(["![", node.alt || "", "](", printUrl(node.url, ")"), printTitle(node.title, options), ")"]);
+
+ case "blockquote":
+ return concat$g(["> ", align$2("> ", printChildren$2(path, options, print))]);
+
+ case "heading":
+ return concat$g(["#".repeat(node.depth) + " ", printChildren$2(path, options, print)]);
+
+ case "code":
+ {
+ if (node.isIndented) {
+ // indented code block
+ var alignment = " ".repeat(4);
+ return align$2(alignment, concat$g([alignment, concat$g(replaceEndOfLineWith$2(node.value, hardline$c))]));
+ } // fenced code block
+
+
+ var styleUnit = options.__inJsTemplate ? "~" : "`";
+
+ var _style2 = styleUnit.repeat(Math.max(3, util.getMaxContinuousCount(node.value, styleUnit) + 1));
+
+ return concat$g([_style2, node.lang || "", hardline$c, concat$g(replaceEndOfLineWith$2(getFencedCodeBlockValue$2(node, options.originalText), hardline$c)), hardline$c, _style2]);
+ }
+
+ case "yaml":
+ case "toml":
+ return options.originalText.slice(node.position.start.offset, node.position.end.offset);
+
+ case "html":
+ {
+ var _parentNode2 = path.getParentNode();
+
+ var value = _parentNode2.type === "root" && util.getLast(_parentNode2.children) === node ? node.value.trimRight() : node.value;
+ var isHtmlComment = /^<!--[\s\S]*-->$/.test(value);
+ return concat$g(replaceEndOfLineWith$2(value, isHtmlComment ? hardline$c : markAsRoot$4(literalline$6)));
+ }
+
+ case "list":
+ {
+ var nthSiblingIndex = getNthListSiblingIndex(node, path.getParentNode());
+ var isGitDiffFriendlyOrderedList = node.ordered && node.children.length > 1 && +getOrderedListItemInfo$2(node.children[1], options.originalText).numberText === 1;
+ return printChildren$2(path, options, print, {
+ processor: function processor(childPath, index) {
+ var prefix = getPrefix();
+ return concat$g([prefix, align$2(" ".repeat(prefix.length), printListItem(childPath, options, print, prefix))]);
+
+ function getPrefix() {
+ var rawPrefix = node.ordered ? (index === 0 ? node.start : isGitDiffFriendlyOrderedList ? 1 : node.start + index) + (nthSiblingIndex % 2 === 0 ? ". " : ") ") : nthSiblingIndex % 2 === 0 ? "- " : "* ";
+ return node.isAligned ||
+ /* workaround for https://github.com/remarkjs/remark/issues/315 */
+ node.hasIndentedCodeblock ? alignListPrefix(rawPrefix, options) : rawPrefix;
+ }
+ }
+ });
+ }
+
+ case "thematicBreak":
+ {
+ var counter = getAncestorCounter$1(path, "list");
+
+ if (counter === -1) {
+ return "---";
+ }
+
+ var _nthSiblingIndex = getNthListSiblingIndex(path.getParentNode(counter), path.getParentNode(counter + 1));
+
+ return _nthSiblingIndex % 2 === 0 ? "***" : "---";
+ }
+
+ case "linkReference":
+ return concat$g(["[", printChildren$2(path, options, print), "]", node.referenceType === "full" ? concat$g(["[", node.identifier, "]"]) : node.referenceType === "collapsed" ? "[]" : ""]);
+
+ case "imageReference":
+ switch (node.referenceType) {
+ case "full":
+ return concat$g(["![", node.alt || "", "][", node.identifier, "]"]);
+
+ default:
+ return concat$g(["![", node.alt, "]", node.referenceType === "collapsed" ? "[]" : ""]);
+ }
+
+ case "definition":
+ {
+ var lineOrSpace = options.proseWrap === "always" ? line$8 : " ";
+ return group$f(concat$g([concat$g(["[", node.identifier, "]:"]), indent$9(concat$g([lineOrSpace, printUrl(node.url), node.title === null ? "" : concat$g([lineOrSpace, printTitle(node.title, options, false)])]))]));
+ }
+
+ case "footnote":
+ return concat$g(["[^", printChildren$2(path, options, print), "]"]);
+
+ case "footnoteReference":
+ return concat$g(["[^", node.identifier, "]"]);
+
+ case "footnoteDefinition":
+ {
+ var _nextNode2 = path.getParentNode().children[path.getName() + 1];
+ var shouldInlineFootnote = node.children.length === 1 && node.children[0].type === "paragraph" && (options.proseWrap === "never" || options.proseWrap === "preserve" && node.children[0].position.start.line === node.children[0].position.end.line);
+ return concat$g(["[^", node.identifier, "]: ", shouldInlineFootnote ? printChildren$2(path, options, print) : group$f(concat$g([align$2(" ".repeat(options.tabWidth), printChildren$2(path, options, print, {
+ processor: function processor(childPath, index) {
+ return index === 0 ? group$f(concat$g([softline$7, softline$7, childPath.call(print)])) : childPath.call(print);
+ }
+ })), _nextNode2 && _nextNode2.type === "footnoteDefinition" ? softline$7 : ""]))]);
+ }
+
+ case "table":
+ return printTable(path, options, print);
+
+ case "tableCell":
+ return printChildren$2(path, options, print);
+
+ case "break":
+ return /\s/.test(options.originalText[node.position.start.offset]) ? concat$g([" ", markAsRoot$4(literalline$6)]) : concat$g(["\\", hardline$c]);
+
+ case "liquidNode":
+ return concat$g(replaceEndOfLineWith$2(node.value, hardline$c));
+ // MDX
+
+ case "importExport":
+ case "jsx":
+ return node.value;
+ // fallback to the original text if multiparser failed
+
+ case "math":
+ return concat$g(["$$", hardline$c, node.value ? concat$g([concat$g(replaceEndOfLineWith$2(node.value, hardline$c)), hardline$c]) : "", "$$"]);
+
+ case "inlineMath":
+ {
+ // remark-math trims content but we don't want to remove whitespaces
+ // since it's very possible that it's recognized as math accidentally
+ return options.originalText.slice(options.locStart(node), options.locEnd(node));
+ }
+
+ case "tableRow": // handled in "table"
+
+ case "listItem": // handled in "list"
+
+ default:
+ throw new Error("Unknown markdown type ".concat(JSON.stringify(node.type)));
+ }
+ }
+
+ function printListItem(path, options, print, listPrefix) {
+ var node = path.getValue();
+ var prefix = node.checked === null ? "" : node.checked ? "[x] " : "[ ] ";
+ return concat$g([prefix, printChildren$2(path, options, print, {
+ processor: function processor(childPath, index) {
+ if (index === 0 && childPath.getValue().type !== "list") {
+ return align$2(" ".repeat(prefix.length), childPath.call(print));
+ }
+
+ var alignment = " ".repeat(clamp(options.tabWidth - listPrefix.length, 0, 3) // 4+ will cause indented code block
+ );
+ return concat$g([alignment, align$2(alignment, childPath.call(print))]);
+ }
+ })]);
+ }
+
+ function alignListPrefix(prefix, options) {
+ var additionalSpaces = getAdditionalSpaces();
+ return prefix + " ".repeat(additionalSpaces >= 4 ? 0 : additionalSpaces // 4+ will cause indented code block
+ );
+
+ function getAdditionalSpaces() {
+ var restSpaces = prefix.length % options.tabWidth;
+ return restSpaces === 0 ? 0 : options.tabWidth - restSpaces;
+ }
+ }
+
+ function getNthListSiblingIndex(node, parentNode) {
+ return getNthSiblingIndex(node, parentNode, function (siblingNode) {
+ return siblingNode.ordered === node.ordered;
+ });
+ }
+
+ function getNthSiblingIndex(node, parentNode, condition) {
+ condition = condition || function () {
+ return true;
+ };
+
+ var index = -1;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = parentNode.children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var childNode = _step.value;
+
+ if (childNode.type === node.type && condition(childNode)) {
+ index++;
+ } else {
+ index = -1;
+ }
+
+ if (childNode === node) {
+ return index;
+ }
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+ }
+
+ function getAncestorCounter$1(path, typeOrTypes) {
+ var types = [].concat(typeOrTypes);
+ var counter = -1;
+ var ancestorNode;
+
+ while (ancestorNode = path.getParentNode(++counter)) {
+ if (types.indexOf(ancestorNode.type) !== -1) {
+ return counter;
+ }
+ }
+
+ return -1;
+ }
+
+ function getAncestorNode$2(path, typeOrTypes) {
+ var counter = getAncestorCounter$1(path, typeOrTypes);
+ return counter === -1 ? null : path.getParentNode(counter);
+ }
+
+ function printLine(path, value, options) {
+ if (options.proseWrap === "preserve" && value === "\n") {
+ return hardline$c;
+ }
+
+ var isBreakable = options.proseWrap === "always" && !getAncestorNode$2(path, SINGLE_LINE_NODE_TYPES);
+ return value !== "" ? isBreakable ? line$8 : " " : isBreakable ? softline$7 : "";
+ }
+
+ function printTable(path, options, print) {
+ var hardlineWithoutBreakParent = hardline$c.parts[0];
+ var node = path.getValue();
+ var contents = []; // { [rowIndex: number]: { [columnIndex: number]: string } }
+
+ path.map(function (rowPath) {
+ var rowContents = [];
+ rowPath.map(function (cellPath) {
+ rowContents.push(printDocToString$2(cellPath.call(print), options).formatted);
+ }, "children");
+ contents.push(rowContents);
+ }, "children"); // Get the width of each column
+
+ var columnMaxWidths = contents.reduce(function (currentWidths, rowContents) {
+ return currentWidths.map(function (width, columnIndex) {
+ return Math.max(width, util.getStringWidth(rowContents[columnIndex]));
+ });
+ }, contents[0].map(function () {
+ return 3;
+ }) // minimum width = 3 (---, :--, :-:, --:)
+ );
+ var alignedTable = join$b(hardlineWithoutBreakParent, [printRow(contents[0]), printSeparator(), join$b(hardlineWithoutBreakParent, contents.slice(1).map(function (rowContents) {
+ return printRow(rowContents);
+ }))]);
+
+ if (options.proseWrap !== "never") {
+ return concat$g([breakParent$4, alignedTable]);
+ } // Only if the --prose-wrap never is set and it exceeds the print width.
+
+
+ var compactTable = join$b(hardlineWithoutBreakParent, [printRow(contents[0],
+ /* isCompact */
+ true), printSeparator(
+ /* isCompact */
+ true), join$b(hardlineWithoutBreakParent, contents.slice(1).map(function (rowContents) {
+ return printRow(rowContents,
+ /* isCompact */
+ true);
+ }))]);
+ return concat$g([breakParent$4, group$f(ifBreak$7(compactTable, alignedTable))]);
+
+ function printSeparator(isCompact) {
+ return concat$g(["| ", join$b(" | ", columnMaxWidths.map(function (width, index) {
+ var spaces = isCompact ? 3 : width;
+
+ switch (node.align[index]) {
+ case "left":
+ return ":" + "-".repeat(spaces - 1);
+
+ case "right":
+ return "-".repeat(spaces - 1) + ":";
+
+ case "center":
+ return ":" + "-".repeat(spaces - 2) + ":";
+
+ default:
+ return "-".repeat(spaces);
+ }
+ })), " |"]);
+ }
+
+ function printRow(rowContents, isCompact) {
+ return concat$g(["| ", join$b(" | ", isCompact ? rowContents : rowContents.map(function (rowContent, columnIndex) {
+ switch (node.align[columnIndex]) {
+ case "right":
+ return alignRight(rowContent, columnMaxWidths[columnIndex]);
+
+ case "center":
+ return alignCenter(rowContent, columnMaxWidths[columnIndex]);
+
+ default:
+ return alignLeft(rowContent, columnMaxWidths[columnIndex]);
+ }
+ })), " |"]);
+ }
+
+ function alignLeft(text, width) {
+ var spaces = width - util.getStringWidth(text);
+ return concat$g([text, " ".repeat(spaces)]);
+ }
+
+ function alignRight(text, width) {
+ var spaces = width - util.getStringWidth(text);
+ return concat$g([" ".repeat(spaces), text]);
+ }
+
+ function alignCenter(text, width) {
+ var spaces = width - util.getStringWidth(text);
+ var left = Math.floor(spaces / 2);
+ var right = spaces - left;
+ return concat$g([" ".repeat(left), text, " ".repeat(right)]);
+ }
+ }
+
+ function printRoot(path, options, print) {
+ /** @typedef {{ index: number, offset: number }} IgnorePosition */
+
+ /** @type {Array<{start: IgnorePosition, end: IgnorePosition}>} */
+ var ignoreRanges = [];
+ /** @type {IgnorePosition | null} */
+
+ var ignoreStart = null;
+ var children = path.getValue().children;
+ children.forEach(function (childNode, index) {
+ switch (isPrettierIgnore$1(childNode)) {
+ case "start":
+ if (ignoreStart === null) {
+ ignoreStart = {
+ index: index,
+ offset: childNode.position.end.offset
+ };
+ }
+
+ break;
+
+ case "end":
+ if (ignoreStart !== null) {
+ ignoreRanges.push({
+ start: ignoreStart,
+ end: {
+ index: index,
+ offset: childNode.position.start.offset
+ }
+ });
+ ignoreStart = null;
+ }
+
+ break;
+ }
+ });
+ return printChildren$2(path, options, print, {
+ processor: function processor(childPath, index) {
+ if (ignoreRanges.length !== 0) {
+ var ignoreRange = ignoreRanges[0];
+
+ if (index === ignoreRange.start.index) {
+ return concat$g([children[ignoreRange.start.index].value, options.originalText.slice(ignoreRange.start.offset, ignoreRange.end.offset), children[ignoreRange.end.index].value]);
+ }
+
+ if (ignoreRange.start.index < index && index < ignoreRange.end.index) {
+ return false;
+ }
+
+ if (index === ignoreRange.end.index) {
+ ignoreRanges.shift();
+ return false;
+ }
+ }
+
+ return childPath.call(print);
+ }
+ });
+ }
+
+ function printChildren$2(path, options, print, events) {
+ events = events || {};
+ var postprocessor = events.postprocessor || concat$g;
+
+ var processor = events.processor || function (childPath) {
+ return childPath.call(print);
+ };
+
+ var node = path.getValue();
+ var parts = [];
+ var lastChildNode;
+ path.map(function (childPath, index) {
+ var childNode = childPath.getValue();
+ var result = processor(childPath, index);
+
+ if (result !== false) {
+ var data = {
+ parts: parts,
+ prevNode: lastChildNode,
+ parentNode: node,
+ options: options
+ };
+
+ if (!shouldNotPrePrintHardline(childNode, data)) {
+ parts.push(hardline$c);
+
+ if (lastChildNode && TRAILING_HARDLINE_NODES.indexOf(lastChildNode.type) !== -1) {
+ if (shouldPrePrintTripleHardline(childNode, data)) {
+ parts.push(hardline$c);
+ }
+ } else {
+ if (shouldPrePrintDoubleHardline(childNode, data) || shouldPrePrintTripleHardline(childNode, data)) {
+ parts.push(hardline$c);
+ }
+
+ if (shouldPrePrintTripleHardline(childNode, data)) {
+ parts.push(hardline$c);
+ }
+ }
+ }
+
+ parts.push(result);
+ lastChildNode = childNode;
+ }
+ }, "children");
+ return postprocessor(parts);
+ }
+
+ function getLastDescendantNode(node) {
+ var current = node;
+
+ while (current.children && current.children.length !== 0) {
+ current = current.children[current.children.length - 1];
+ }
+
+ return current;
+ }
+ /** @return {false | 'next' | 'start' | 'end'} */
+
+
+ function isPrettierIgnore$1(node) {
+ if (node.type !== "html") {
+ return false;
+ }
+
+ var match = node.value.match(/^<!--\s*prettier-ignore(?:-(start|end))?\s*-->$/);
+ return match === null ? false : match[1] ? match[1] : "next";
+ }
+
+ function isInlineNode(node) {
+ return node && INLINE_NODE_TYPES$1.indexOf(node.type) !== -1;
+ }
+
+ function isEndsWithHardLine(node) {
+ return node && /\n+$/.test(node.value);
+ }
+
+ function last(nodes) {
+ return nodes && nodes[nodes.length - 1];
+ }
+
+ function shouldNotPrePrintHardline(node, _ref) {
+ var parentNode = _ref.parentNode,
+ parts = _ref.parts,
+ prevNode = _ref.prevNode;
+ var isFirstNode = parts.length === 0;
+ var isInlineHTML = node.type === "html" && INLINE_NODE_WRAPPER_TYPES$1.indexOf(parentNode.type) !== -1;
+ var isAfterHardlineNode = prevNode && (isEndsWithHardLine(prevNode) || isEndsWithHardLine(last(prevNode.children)));
+ return isFirstNode || isInlineNode(node) || isInlineHTML || isAfterHardlineNode;
+ }
+
+ function shouldPrePrintDoubleHardline(node, _ref2) {
+ var parentNode = _ref2.parentNode,
+ prevNode = _ref2.prevNode;
+ var prevNodeType = prevNode && prevNode.type;
+ var nodeType = node.type;
+ var isSequence = prevNodeType === nodeType;
+ var isSiblingNode = isSequence && SIBLING_NODE_TYPES.indexOf(nodeType) !== -1;
+ var isInTightListItem = parentNode.type === "listItem" && !parentNode.loose;
+ var isPrevNodeLooseListItem = prevNodeType === "listItem" && prevNode.loose;
+ var isPrevNodePrettierIgnore = isPrettierIgnore$1(prevNode) === "next";
+ var isBlockHtmlWithoutBlankLineBetweenPrevHtml = nodeType === "html" && prevNodeType === "html" && prevNode.position.end.line + 1 === node.position.start.line;
+ var isJsxInlineSibling = prevNodeType === "jsx" && isInlineNode(node) || nodeType === "jsx" && isInlineNode(prevNode);
+ return isPrevNodeLooseListItem || !(isSiblingNode || isInTightListItem || isPrevNodePrettierIgnore || isBlockHtmlWithoutBlankLineBetweenPrevHtml || isJsxInlineSibling);
+ }
+
+ function shouldPrePrintTripleHardline(node, data) {
+ var isPrevNodeList = data.prevNode && data.prevNode.type === "list";
+ var isIndentedCode = node.type === "code" && node.isIndented;
+ return isPrevNodeList && isIndentedCode;
+ }
+
+ function shouldRemainTheSameContent(path) {
+ var ancestorNode = getAncestorNode$2(path, ["linkReference", "imageReference"]);
+ return ancestorNode && (ancestorNode.type !== "linkReference" || ancestorNode.referenceType !== "full");
+ }
+
+ function normalizeDoc(doc) {
+ return mapDoc$7(doc, function (currentDoc) {
+ if (!currentDoc.parts) {
+ return currentDoc;
+ }
+
+ if (currentDoc.type === "concat" && currentDoc.parts.length === 1) {
+ return currentDoc.parts[0];
+ }
+
+ var parts = [];
+ currentDoc.parts.forEach(function (part) {
+ if (part.type === "concat") {
+ parts.push.apply(parts, part.parts);
+ } else if (part !== "") {
+ parts.push(part);
+ }
+ });
+ return Object.assign({}, currentDoc, {
+ parts: normalizeParts$2(parts)
+ });
+ });
+ }
+
+ function printUrl(url, dangerousCharOrChars) {
+ var dangerousChars = [" "].concat(dangerousCharOrChars || []);
+ return new RegExp(dangerousChars.map(function (x) {
+ return "\\".concat(x);
+ }).join("|")).test(url) ? "<".concat(url, ">") : url;
+ }
+
+ function printTitle(title, options, printSpace) {
+ if (printSpace == null) {
+ printSpace = true;
+ }
+
+ if (!title) {
+ return "";
+ }
+
+ if (printSpace) {
+ return " " + printTitle(title, options, false);
+ }
+
+ if (title.includes('"') && title.includes("'") && !title.includes(")")) {
+ return "(".concat(title, ")"); // avoid escaped quotes
+ } // faster than using RegExps: https://jsperf.com/performance-of-match-vs-split
+
+
+ var singleCount = title.split("'").length - 1;
+ var doubleCount = title.split('"').length - 1;
+ var quote = singleCount > doubleCount ? '"' : doubleCount > singleCount ? "'" : options.singleQuote ? "'" : '"';
+ title = title.replace(new RegExp("(".concat(quote, ")"), "g"), "\\$1");
+ return "".concat(quote).concat(title).concat(quote);
+ }
+
+ function normalizeParts$2(parts) {
+ return parts.reduce(function (current, part) {
+ var lastPart = util.getLast(current);
+
+ if (typeof lastPart === "string" && typeof part === "string") {
+ current.splice(-1, 1, lastPart + part);
+ } else {
+ current.push(part);
+ }
+
+ return current;
+ }, []);
+ }
+
+ function clamp(value, min, max) {
+ return value < min ? min : value > max ? max : value;
+ }
+
+ function clean$6(ast, newObj, parent) {
+ delete newObj.position;
+ delete newObj.raw; // front-matter
+ // for codeblock
+
+ if (ast.type === "code" || ast.type === "yaml" || ast.type === "import" || ast.type === "export" || ast.type === "jsx") {
+ delete newObj.value;
+ }
+
+ if (ast.type === "list") {
+ delete newObj.isAligned;
+ } // texts can be splitted or merged
+
+
+ if (ast.type === "text") {
+ return null;
+ }
+
+ if (ast.type === "inlineCode") {
+ newObj.value = ast.value.replace(/[ \t\n]+/g, " ");
+ } // for insert pragma
+
+
+ if (parent && parent.type === "root" && parent.children.length > 0 && (parent.children[0] === ast || (parent.children[0].type === "yaml" || parent.children[0].type === "toml") && parent.children[1] === ast) && ast.type === "html" && pragma$4.startWithPragma(ast.value)) {
+ return null;
+ }
+ }
+
+ function hasPrettierIgnore$4(path) {
+ var index = +path.getName();
+
+ if (index === 0) {
+ return false;
+ }
+
+ var prevNode = path.getParentNode().children[index - 1];
+ return isPrettierIgnore$1(prevNode) === "next";
+ }
+
+ var printerMarkdown = {
+ preprocess: preprocess_1$2,
+ print: genericPrint$5,
+ embed: embed_1$2,
+ massageAstNode: clean$6,
+ hasPrettierIgnore: hasPrettierIgnore$4,
+ insertPragma: pragma$4.insertPragma
+ };
+
+ var options$6 = {
+ proseWrap: commonOptions.proseWrap,
+ singleQuote: commonOptions.singleQuote
+ };
+
+ var name$g = "Markdown";
+ var type$f = "prose";
+ var aliases$5 = [
+ "pandoc"
+ ];
+ var aceMode$f = "markdown";
+ var codemirrorMode$b = "gfm";
+ var codemirrorMimeType$b = "text/x-gfm";
+ var wrap = true;
+ var extensions$f = [
+ ".md",
+ ".markdown",
+ ".mdown",
+ ".mdwn",
+ ".mdx",
+ ".mkd",
+ ".mkdn",
+ ".mkdown",
+ ".ronn",
+ ".workbook"
+ ];
+ var filenames$3 = [
+ "contents.lr"
+ ];
+ var tmScope$f = "source.gfm";
+ var languageId$f = 222;
+ var Markdown = {
+ name: name$g,
+ type: type$f,
+ aliases: aliases$5,
+ aceMode: aceMode$f,
+ codemirrorMode: codemirrorMode$b,
+ codemirrorMimeType: codemirrorMimeType$b,
+ wrap: wrap,
+ extensions: extensions$f,
+ filenames: filenames$3,
+ tmScope: tmScope$f,
+ languageId: languageId$f
+ };
+
+ var Markdown$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$g,
+ type: type$f,
+ aliases: aliases$5,
+ aceMode: aceMode$f,
+ codemirrorMode: codemirrorMode$b,
+ codemirrorMimeType: codemirrorMimeType$b,
+ wrap: wrap,
+ extensions: extensions$f,
+ filenames: filenames$3,
+ tmScope: tmScope$f,
+ languageId: languageId$f,
+ 'default': Markdown
+ });
+
+ var require$$0$7 = getCjsExportFromNamespace(Markdown$1);
+
+ var languages$5 = [createLanguage(require$$0$7, function (data) {
+ return Object.assign(data, {
+ since: "1.8.0",
+ parsers: ["remark"],
+ vscodeLanguageIds: ["markdown"],
+ filenames: data.filenames.concat(["README"]),
+ extensions: data.extensions.filter(function (extension) {
+ return extension !== ".mdx";
+ })
+ });
+ }), createLanguage(require$$0$7, function (data) {
+ return Object.assign(data, {
+ name: "MDX",
+ since: "1.15.0",
+ parsers: ["mdx"],
+ vscodeLanguageIds: ["mdx"],
+ filenames: [],
+ extensions: [".mdx"]
+ });
+ })];
+ var printers$5 = {
+ mdast: printerMarkdown
+ };
+ var languageMarkdown = {
+ languages: languages$5,
+ options: options$6,
+ printers: printers$5
+ };
+
+ function isPragma(text) {
+ return /^\s*@(prettier|format)\s*$/.test(text);
+ }
+
+ function hasPragma$4(text) {
+ return /^\s*#[^\n\S]*@(prettier|format)\s*?(\n|$)/.test(text);
+ }
+
+ function insertPragma$8(text) {
+ return "# @format\n\n".concat(text);
+ }
+
+ var pragma$5 = {
+ isPragma: isPragma,
+ hasPragma: hasPragma$4,
+ insertPragma: insertPragma$8
+ };
+
+ var getLast$4 = util.getLast;
+
+ function getAncestorCount(path, filter) {
+ var counter = 0;
+ var pathStackLength = path.stack.length - 1;
+
+ for (var i = 0; i < pathStackLength; i++) {
+ var value = path.stack[i];
+
+ if (isNode(value) && filter(value)) {
+ counter++;
+ }
+ }
+
+ return counter;
+ }
+ /**
+ * @param {any} value
+ * @param {string[]=} types
+ */
+
+
+ function isNode(value, types) {
+ return value && typeof value.type === "string" && (!types || types.indexOf(value.type) !== -1);
+ }
+
+ function mapNode(node, callback, parent) {
+ return callback("children" in node ? Object.assign({}, node, {
+ children: node.children.map(function (childNode) {
+ return mapNode(childNode, callback, node);
+ })
+ }) : node, parent);
+ }
+
+ function defineShortcut(x, key, getter) {
+ Object.defineProperty(x, key, {
+ get: getter,
+ enumerable: false
+ });
+ }
+
+ function isNextLineEmpty$5(node, text) {
+ var newlineCount = 0;
+ var textLength = text.length;
+
+ for (var i = node.position.end.offset - 1; i < textLength; i++) {
+ var char = text[i];
+
+ if (char === "\n") {
+ newlineCount++;
+ }
+
+ if (newlineCount === 1 && /\S/.test(char)) {
+ return false;
+ }
+
+ if (newlineCount === 2) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ function isLastDescendantNode(path) {
+ var node = path.getValue();
+
+ switch (node.type) {
+ case "tag":
+ case "anchor":
+ case "comment":
+ return false;
+ }
+
+ var pathStackLength = path.stack.length;
+
+ for (var i = 1; i < pathStackLength; i++) {
+ var item = path.stack[i];
+ var parentItem = path.stack[i - 1];
+
+ if (Array.isArray(parentItem) && typeof item === "number" && item !== parentItem.length - 1) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ function getLastDescendantNode$1(node) {
+ return "children" in node && node.children.length !== 0 ? getLastDescendantNode$1(getLast$4(node.children)) : node;
+ }
+
+ function isPrettierIgnore$2(comment) {
+ return comment.value.trim() === "prettier-ignore";
+ }
+
+ function hasPrettierIgnore$5(path) {
+ var node = path.getValue();
+
+ if (node.type === "documentBody") {
+ var document = path.getParentNode();
+ return hasEndComments(document.head) && isPrettierIgnore$2(getLast$4(document.head.endComments));
+ }
+
+ return hasLeadingComments(node) && isPrettierIgnore$2(getLast$4(node.leadingComments));
+ }
+
+ function isEmptyNode(node) {
+ return (!node.children || node.children.length === 0) && !hasComments(node);
+ }
+
+ function hasComments(node) {
+ return hasLeadingComments(node) || hasMiddleComments(node) || hasIndicatorComment(node) || hasTrailingComment$2(node) || hasEndComments(node);
+ }
+
+ function hasLeadingComments(node) {
+ return node && node.leadingComments && node.leadingComments.length !== 0;
+ }
+
+ function hasMiddleComments(node) {
+ return node && node.middleComments && node.middleComments.length !== 0;
+ }
+
+ function hasIndicatorComment(node) {
+ return node && node.indicatorComment;
+ }
+
+ function hasTrailingComment$2(node) {
+ return node && node.trailingComment;
+ }
+
+ function hasEndComments(node) {
+ return node && node.endComments && node.endComments.length !== 0;
+ }
+ /**
+ * " a b c d e f " -> [" a b", "c d", "e f "]
+ */
+
+
+ function splitWithSingleSpace(text) {
+ var parts = [];
+ var lastPart = undefined;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = text.split(/( +)/g)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var part = _step.value;
+
+ if (part !== " ") {
+ if (lastPart === " ") {
+ parts.push(part);
+ } else {
+ parts.push((parts.pop() || "") + part);
+ }
+ } else if (lastPart === undefined) {
+ parts.unshift("");
+ }
+
+ lastPart = part;
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ if (lastPart === " ") {
+ parts.push((parts.pop() || "") + " ");
+ }
+
+ if (parts[0] === "") {
+ parts.shift();
+ parts.unshift(" " + (parts.shift() || ""));
+ }
+
+ return parts;
+ }
+
+ function getFlowScalarLineContents(nodeType, content, options) {
+ var rawLineContents = content.split("\n").map(function (lineContent, index, lineContents) {
+ return index === 0 && index === lineContents.length - 1 ? lineContent : index !== 0 && index !== lineContents.length - 1 ? lineContent.trim() : index === 0 ? lineContent.trimRight() : lineContent.trimLeft();
+ });
+
+ if (options.proseWrap === "preserve") {
+ return rawLineContents.map(function (lineContent) {
+ return lineContent.length === 0 ? [] : [lineContent];
+ });
+ }
+
+ return rawLineContents.map(function (lineContent) {
+ return lineContent.length === 0 ? [] : splitWithSingleSpace(lineContent);
+ }).reduce(function (reduced, lineContentWords, index) {
+ return index !== 0 && rawLineContents[index - 1].length !== 0 && lineContentWords.length !== 0 && !( // trailing backslash in quoteDouble should be preserved
+ nodeType === "quoteDouble" && getLast$4(getLast$4(reduced)).endsWith("\\")) ? reduced.concat([reduced.pop().concat(lineContentWords)]) : reduced.concat([lineContentWords]);
+ }, []).map(function (lineContentWords) {
+ return options.proseWrap === "never" ? [lineContentWords.join(" ")] : lineContentWords;
+ });
+ }
+
+ function getBlockValueLineContents(node, _ref) {
+ var parentIndent = _ref.parentIndent,
+ isLastDescendant = _ref.isLastDescendant,
+ options = _ref.options;
+ var content = node.position.start.line === node.position.end.line ? "" : options.originalText.slice(node.position.start.offset, node.position.end.offset) // exclude open line `>` or `|`
+ .match(/^[^\n]*?\n([\s\S]*)$/)[1];
+ var leadingSpaceCount = node.indent === null ? function (match) {
+ return match ? match[1].length : Infinity;
+ }(content.match(/^( *)\S/m)) : node.indent - 1 + parentIndent;
+ var rawLineContents = content.split("\n").map(function (lineContent) {
+ return lineContent.slice(leadingSpaceCount);
+ });
+
+ if (options.proseWrap === "preserve" || node.type === "blockLiteral") {
+ return removeUnnecessaryTrailingNewlines(rawLineContents.map(function (lineContent) {
+ return lineContent.length === 0 ? [] : [lineContent];
+ }));
+ }
+
+ return removeUnnecessaryTrailingNewlines(rawLineContents.map(function (lineContent) {
+ return lineContent.length === 0 ? [] : splitWithSingleSpace(lineContent);
+ }).reduce(function (reduced, lineContentWords, index) {
+ return index !== 0 && rawLineContents[index - 1].length !== 0 && lineContentWords.length !== 0 && !/^\s/.test(lineContentWords[0]) && !/^\s|\s$/.test(getLast$4(reduced)) ? reduced.concat([reduced.pop().concat(lineContentWords)]) : reduced.concat([lineContentWords]);
+ }, []).map(function (lineContentWords) {
+ return lineContentWords.reduce(function (reduced, word) {
+ return (// disallow trailing spaces
+ reduced.length !== 0 && /\s$/.test(getLast$4(reduced)) ? reduced.concat(reduced.pop() + " " + word) : reduced.concat(word)
+ );
+ }, []);
+ }).map(function (lineContentWords) {
+ return options.proseWrap === "never" ? [lineContentWords.join(" ")] : lineContentWords;
+ }));
+
+ function removeUnnecessaryTrailingNewlines(lineContents) {
+ if (node.chomping === "keep") {
+ return getLast$4(lineContents).length === 0 ? lineContents.slice(0, -1) : lineContents;
+ }
+
+ var trailingNewlineCount = 0;
+
+ for (var i = lineContents.length - 1; i >= 0; i--) {
+ if (lineContents[i].length === 0) {
+ trailingNewlineCount++;
+ } else {
+ break;
+ }
+ }
+
+ return trailingNewlineCount === 0 ? lineContents : trailingNewlineCount >= 2 && !isLastDescendant ? // next empty line
+ lineContents.slice(0, -(trailingNewlineCount - 1)) : lineContents.slice(0, -trailingNewlineCount);
+ }
+ }
+
+ var utils$6 = {
+ getLast: getLast$4,
+ getAncestorCount: getAncestorCount,
+ isNode: isNode,
+ isEmptyNode: isEmptyNode,
+ mapNode: mapNode,
+ defineShortcut: defineShortcut,
+ isNextLineEmpty: isNextLineEmpty$5,
+ isLastDescendantNode: isLastDescendantNode,
+ getBlockValueLineContents: getBlockValueLineContents,
+ getFlowScalarLineContents: getFlowScalarLineContents,
+ getLastDescendantNode: getLastDescendantNode$1,
+ hasPrettierIgnore: hasPrettierIgnore$5,
+ hasLeadingComments: hasLeadingComments,
+ hasMiddleComments: hasMiddleComments,
+ hasIndicatorComment: hasIndicatorComment,
+ hasTrailingComment: hasTrailingComment$2,
+ hasEndComments: hasEndComments
+ };
+
+ var insertPragma$9 = pragma$5.insertPragma,
+ isPragma$1 = pragma$5.isPragma;
+ var getAncestorCount$1 = utils$6.getAncestorCount,
+ getBlockValueLineContents$1 = utils$6.getBlockValueLineContents,
+ getFlowScalarLineContents$1 = utils$6.getFlowScalarLineContents,
+ getLast$5 = utils$6.getLast,
+ getLastDescendantNode$2 = utils$6.getLastDescendantNode,
+ hasLeadingComments$1 = utils$6.hasLeadingComments,
+ hasMiddleComments$1 = utils$6.hasMiddleComments,
+ hasIndicatorComment$1 = utils$6.hasIndicatorComment,
+ hasTrailingComment$3 = utils$6.hasTrailingComment,
+ hasEndComments$1 = utils$6.hasEndComments,
+ hasPrettierIgnore$6 = utils$6.hasPrettierIgnore,
+ isLastDescendantNode$1 = utils$6.isLastDescendantNode,
+ isNextLineEmpty$6 = utils$6.isNextLineEmpty,
+ isNode$1 = utils$6.isNode,
+ isEmptyNode$1 = utils$6.isEmptyNode,
+ defineShortcut$1 = utils$6.defineShortcut,
+ mapNode$1 = utils$6.mapNode;
+ var docBuilders$2 = doc.builders;
+ var conditionalGroup$2 = docBuilders$2.conditionalGroup,
+ breakParent$5 = docBuilders$2.breakParent,
+ concat$h = docBuilders$2.concat,
+ dedent$3 = docBuilders$2.dedent,
+ dedentToRoot$3 = docBuilders$2.dedentToRoot,
+ fill$6 = docBuilders$2.fill,
+ group$g = docBuilders$2.group,
+ hardline$d = docBuilders$2.hardline,
+ ifBreak$8 = docBuilders$2.ifBreak,
+ join$c = docBuilders$2.join,
+ line$9 = docBuilders$2.line,
+ lineSuffix$2 = docBuilders$2.lineSuffix,
+ literalline$7 = docBuilders$2.literalline,
+ markAsRoot$5 = docBuilders$2.markAsRoot,
+ softline$8 = docBuilders$2.softline;
+ var replaceEndOfLineWith$3 = util.replaceEndOfLineWith;
+
+ function preprocess$3(ast) {
+ return mapNode$1(ast, defineShortcuts);
+ }
+
+ function defineShortcuts(node) {
+ switch (node.type) {
+ case "document":
+ defineShortcut$1(node, "head", function () {
+ return node.children[0];
+ });
+ defineShortcut$1(node, "body", function () {
+ return node.children[1];
+ });
+ break;
+
+ case "documentBody":
+ case "sequenceItem":
+ case "flowSequenceItem":
+ case "mappingKey":
+ case "mappingValue":
+ defineShortcut$1(node, "content", function () {
+ return node.children[0];
+ });
+ break;
+
+ case "mappingItem":
+ case "flowMappingItem":
+ defineShortcut$1(node, "key", function () {
+ return node.children[0];
+ });
+ defineShortcut$1(node, "value", function () {
+ return node.children[1];
+ });
+ break;
+ }
+
+ return node;
+ }
+
+ function genericPrint$6(path, options, print) {
+ var node = path.getValue();
+ var parentNode = path.getParentNode();
+ var tag = !node.tag ? "" : path.call(print, "tag");
+ var anchor = !node.anchor ? "" : path.call(print, "anchor");
+ var nextEmptyLine = isNode$1(node, ["mapping", "sequence", "comment", "directive", "mappingItem", "sequenceItem"]) && !isLastDescendantNode$1(path) ? printNextEmptyLine(path, options.originalText) : "";
+ return concat$h([node.type !== "mappingValue" && hasLeadingComments$1(node) ? concat$h([join$c(hardline$d, path.map(print, "leadingComments")), hardline$d]) : "", tag, tag && anchor ? " " : "", anchor, tag || anchor ? isNode$1(node, ["sequence", "mapping"]) && !hasMiddleComments$1(node) ? hardline$d : " " : "", hasMiddleComments$1(node) ? concat$h([node.middleComments.length === 1 ? "" : hardline$d, join$c(hardline$d, path.map(print, "middleComments")), hardline$d]) : "", hasPrettierIgnore$6(path) ? concat$h(replaceEndOfLineWith$3(options.originalText.slice(node.position.start.offset, node.position.end.offset), literalline$7)) : group$g(_print(node, parentNode, path, options, print)), hasTrailingComment$3(node) && !isNode$1(node, ["document", "documentHead"]) ? lineSuffix$2(concat$h([node.type === "mappingValue" && !node.content ? "" : " ", parentNode.type === "mappingKey" && path.getParentNode(2).type === "mapping" && isInlineNode$1(node) ? "" : breakParent$5, path.call(print, "trailingComment")])) : "", nextEmptyLine, hasEndComments$1(node) && !isNode$1(node, ["documentHead", "documentBody"]) ? align$3(node.type === "sequenceItem" ? 2 : 0, concat$h([hardline$d, join$c(hardline$d, path.map(print, "endComments"))])) : ""]);
+ }
+
+ function _print(node, parentNode, path, options, print) {
+ switch (node.type) {
+ case "root":
+ return concat$h([join$c(hardline$d, path.map(function (childPath, index) {
+ var document = node.children[index];
+ var nextDocument = node.children[index + 1];
+ return concat$h([print(childPath), shouldPrintDocumentEndMarker(document, nextDocument) ? concat$h([hardline$d, "...", hasTrailingComment$3(document) ? concat$h([" ", path.call(print, "trailingComment")]) : ""]) : !nextDocument || hasTrailingComment$3(nextDocument.head) ? "" : concat$h([hardline$d, "---"])]);
+ }, "children")), node.children.length === 0 || function (lastDescendantNode) {
+ return isNode$1(lastDescendantNode, ["blockLiteral", "blockFolded"]) && lastDescendantNode.chomping === "keep";
+ }(getLastDescendantNode$2(node)) ? "" : hardline$d]);
+
+ case "document":
+ {
+ var nextDocument = parentNode.children[path.getName() + 1];
+ return join$c(hardline$d, [shouldPrintDocumentHeadEndMarker(node, nextDocument, parentNode, options) === "head" ? join$c(hardline$d, [node.head.children.length === 0 && node.head.endComments.length === 0 ? "" : path.call(print, "head"), concat$h(["---", hasTrailingComment$3(node.head) ? concat$h([" ", path.call(print, "head", "trailingComment")]) : ""])].filter(Boolean)) : "", shouldPrintDocumentBody(node) ? path.call(print, "body") : ""].filter(Boolean));
+ }
+
+ case "documentHead":
+ return join$c(hardline$d, [].concat(path.map(print, "children"), path.map(print, "endComments")));
+
+ case "documentBody":
+ {
+ var children = join$c(hardline$d, path.map(print, "children")).parts;
+ var endComments = join$c(hardline$d, path.map(print, "endComments")).parts;
+ var separator = children.length === 0 || endComments.length === 0 ? "" : function (lastDescendantNode) {
+ return isNode$1(lastDescendantNode, ["blockFolded", "blockLiteral"]) ? lastDescendantNode.chomping === "keep" ? // there's already a newline printed at the end of blockValue (chomping=keep, lastDescendant=true)
+ "" : // an extra newline for better readability
+ concat$h([hardline$d, hardline$d]) : hardline$d;
+ }(getLastDescendantNode$2(node));
+ return concat$h([].concat(children, separator, endComments));
+ }
+
+ case "directive":
+ return concat$h(["%", join$c(" ", [node.name].concat(node.parameters))]);
+
+ case "comment":
+ return concat$h(["#", node.value]);
+
+ case "alias":
+ return concat$h(["*", node.value]);
+
+ case "tag":
+ return options.originalText.slice(node.position.start.offset, node.position.end.offset);
+
+ case "anchor":
+ return concat$h(["&", node.value]);
+
+ case "plain":
+ return printFlowScalarContent(node.type, options.originalText.slice(node.position.start.offset, node.position.end.offset), options);
+
+ case "quoteDouble":
+ case "quoteSingle":
+ {
+ var singleQuote = "'";
+ var doubleQuote = '"';
+ var raw = options.originalText.slice(node.position.start.offset + 1, node.position.end.offset - 1);
+
+ if (node.type === "quoteSingle" && raw.includes("\\") || node.type === "quoteDouble" && /\\[^"]/.test(raw)) {
+ // only quoteDouble can use escape chars
+ // and quoteSingle do not need to escape backslashes
+ var originalQuote = node.type === "quoteDouble" ? doubleQuote : singleQuote;
+ return concat$h([originalQuote, printFlowScalarContent(node.type, raw, options), originalQuote]);
+ } else if (raw.includes(doubleQuote)) {
+ return concat$h([singleQuote, printFlowScalarContent(node.type, node.type === "quoteDouble" ? raw // double quote needs to be escaped by backslash in quoteDouble
+ .replace(/\\"/g, doubleQuote).replace(/'/g, singleQuote.repeat(2)) : raw, options), singleQuote]);
+ }
+
+ if (raw.includes(singleQuote)) {
+ return concat$h([doubleQuote, printFlowScalarContent(node.type, node.type === "quoteSingle" ? // single quote needs to be escaped by 2 single quotes in quoteSingle
+ raw.replace(/''/g, singleQuote) : raw, options), doubleQuote]);
+ }
+
+ var quote = options.singleQuote ? singleQuote : doubleQuote;
+ return concat$h([quote, printFlowScalarContent(node.type, raw, options), quote]);
+ }
+
+ case "blockFolded":
+ case "blockLiteral":
+ {
+ var parentIndent = getAncestorCount$1(path, function (ancestorNode) {
+ return isNode$1(ancestorNode, ["sequence", "mapping"]);
+ });
+ var isLastDescendant = isLastDescendantNode$1(path);
+ return concat$h([node.type === "blockFolded" ? ">" : "|", node.indent === null ? "" : node.indent.toString(), node.chomping === "clip" ? "" : node.chomping === "keep" ? "+" : "-", hasIndicatorComment$1(node) ? concat$h([" ", path.call(print, "indicatorComment")]) : "", (node.indent === null ? dedent$3 : dedentToRoot$3)(align$3(node.indent === null ? options.tabWidth : node.indent - 1 + parentIndent, concat$h(getBlockValueLineContents$1(node, {
+ parentIndent: parentIndent,
+ isLastDescendant: isLastDescendant,
+ options: options
+ }).reduce(function (reduced, lineWords, index, lineContents) {
+ return reduced.concat(index === 0 ? hardline$d : "", fill$6(join$c(line$9, lineWords).parts), index !== lineContents.length - 1 ? lineWords.length === 0 ? hardline$d : markAsRoot$5(literalline$7) : node.chomping === "keep" && isLastDescendant ? lineWords.length === 0 ? dedentToRoot$3(hardline$d) : dedentToRoot$3(literalline$7) : "");
+ }, []))))]);
+ }
+
+ case "sequence":
+ return join$c(hardline$d, path.map(print, "children"));
+
+ case "sequenceItem":
+ return concat$h(["- ", align$3(2, !node.content ? "" : path.call(print, "content"))]);
+
+ case "mappingKey":
+ return !node.content ? "" : path.call(print, "content");
+
+ case "mappingValue":
+ return !node.content ? "" : path.call(print, "content");
+
+ case "mapping":
+ return join$c(hardline$d, path.map(print, "children"));
+
+ case "mappingItem":
+ case "flowMappingItem":
+ {
+ var isEmptyMappingKey = isEmptyNode$1(node.key);
+ var isEmptyMappingValue = isEmptyNode$1(node.value);
+
+ if (isEmptyMappingKey && isEmptyMappingValue) {
+ return concat$h([": "]);
+ }
+
+ var key = path.call(print, "key");
+ var value = path.call(print, "value");
+
+ if (isEmptyMappingValue) {
+ return node.type === "flowMappingItem" && parentNode.type === "flowMapping" ? key : node.type === "mappingItem" && isAbsolutelyPrintedAsSingleLineNode(node.key.content, options) && !hasTrailingComment$3(node.key.content) && (!parentNode.tag || parentNode.tag.value !== "tag:yaml.org,2002:set") ? concat$h([key, needsSpaceInFrontOfMappingValue(node) ? " " : "", ":"]) : concat$h(["? ", align$3(2, key)]);
+ }
+
+ if (isEmptyMappingKey) {
+ return concat$h([": ", align$3(2, value)]);
+ }
+
+ var groupId = Symbol("mappingKey");
+ var forceExplicitKey = hasLeadingComments$1(node.value) || !isInlineNode$1(node.key.content);
+ return forceExplicitKey ? concat$h(["? ", align$3(2, key), hardline$d, join$c("", path.map(print, "value", "leadingComments").map(function (comment) {
+ return concat$h([comment, hardline$d]);
+ })), ": ", align$3(2, value)]) : // force singleline
+ isSingleLineNode(node.key.content) && !hasLeadingComments$1(node.key.content) && !hasMiddleComments$1(node.key.content) && !hasTrailingComment$3(node.key.content) && !hasEndComments$1(node.key) && !hasLeadingComments$1(node.value.content) && !hasMiddleComments$1(node.value.content) && !hasEndComments$1(node.value) && isAbsolutelyPrintedAsSingleLineNode(node.value.content, options) ? concat$h([key, needsSpaceInFrontOfMappingValue(node) ? " " : "", ": ", value]) : conditionalGroup$2([concat$h([group$g(concat$h([ifBreak$8("? "), group$g(align$3(2, key), {
+ id: groupId
+ })])), ifBreak$8(concat$h([hardline$d, ": ", align$3(2, value)]), indent(concat$h([needsSpaceInFrontOfMappingValue(node) ? " " : "", ":", hasLeadingComments$1(node.value.content) || hasEndComments$1(node.value) && node.value.content && !isNode$1(node.value.content, ["mapping", "sequence"]) || parentNode.type === "mapping" && hasTrailingComment$3(node.key.content) && isInlineNode$1(node.value.content) || isNode$1(node.value.content, ["mapping", "sequence"]) && node.value.content.tag === null && node.value.content.anchor === null ? hardline$d : !node.value.content ? "" : line$9, value])), {
+ groupId: groupId
+ })])]);
+ }
+
+ case "flowMapping":
+ case "flowSequence":
+ {
+ var openMarker = node.type === "flowMapping" ? "{" : "[";
+ var closeMarker = node.type === "flowMapping" ? "}" : "]";
+ var bracketSpacing = node.type === "flowMapping" && node.children.length !== 0 && options.bracketSpacing ? line$9 : softline$8;
+
+ var isLastItemEmptyMappingItem = node.children.length !== 0 && function (lastItem) {
+ return lastItem.type === "flowMappingItem" && isEmptyNode$1(lastItem.key) && isEmptyNode$1(lastItem.value);
+ }(getLast$5(node.children));
+
+ return concat$h([openMarker, indent(concat$h([bracketSpacing, concat$h(path.map(function (childPath, index) {
+ return concat$h([print(childPath), index === node.children.length - 1 ? "" : concat$h([",", line$9, node.children[index].position.start.line !== node.children[index + 1].position.start.line ? printNextEmptyLine(childPath, options.originalText) : ""])]);
+ }, "children")), ifBreak$8(",", "")])), isLastItemEmptyMappingItem ? "" : bracketSpacing, closeMarker]);
+ }
+
+ case "flowSequenceItem":
+ return path.call(print, "content");
+ // istanbul ignore next
+
+ default:
+ throw new Error("Unexpected node type ".concat(node.type));
+ }
+
+ function indent(doc) {
+ return docBuilders$2.align(" ".repeat(options.tabWidth), doc);
+ }
+ }
+
+ function align$3(n, doc) {
+ return typeof n === "number" && n > 0 ? docBuilders$2.align(" ".repeat(n), doc) : docBuilders$2.align(n, doc);
+ }
+
+ function isInlineNode$1(node) {
+ if (!node) {
+ return true;
+ }
+
+ switch (node.type) {
+ case "plain":
+ case "quoteDouble":
+ case "quoteSingle":
+ case "alias":
+ case "flowMapping":
+ case "flowSequence":
+ return true;
+
+ default:
+ return false;
+ }
+ }
+
+ function isSingleLineNode(node) {
+ if (!node) {
+ return true;
+ }
+
+ switch (node.type) {
+ case "plain":
+ case "quoteDouble":
+ case "quoteSingle":
+ return node.position.start.line === node.position.end.line;
+
+ case "alias":
+ return true;
+
+ default:
+ return false;
+ }
+ }
+
+ function shouldPrintDocumentBody(document) {
+ return document.body.children.length !== 0 || hasEndComments$1(document.body);
+ }
+
+ function shouldPrintDocumentEndMarker(document, nextDocument) {
+ return (
+ /**
+ *... # trailingComment
+ */
+ hasTrailingComment$3(document) || nextDocument && (
+ /**
+ * ...
+ * %DIRECTIVE
+ * ---
+ */
+ nextDocument.head.children.length !== 0 ||
+ /**
+ * ...
+ * # endComment
+ * ---
+ */
+ hasEndComments$1(nextDocument.head))
+ );
+ }
+
+ function shouldPrintDocumentHeadEndMarker(document, nextDocument, root, options) {
+ if (
+ /**
+ * ---
+ * preserve the first document head end marker
+ */
+ root.children[0] === document && /---(\s|$)/.test(options.originalText.slice(options.locStart(document), options.locStart(document) + 4)) ||
+ /**
+ * %DIRECTIVE
+ * ---
+ */
+ document.head.children.length !== 0 ||
+ /**
+ * # end comment
+ * ---
+ */
+ hasEndComments$1(document.head) ||
+ /**
+ * --- # trailing comment
+ */
+ hasTrailingComment$3(document.head)) {
+ return "head";
+ }
+
+ if (shouldPrintDocumentEndMarker(document, nextDocument)) {
+ return false;
+ }
+
+ return nextDocument ? "root" : false;
+ }
+
+ function isAbsolutelyPrintedAsSingleLineNode(node, options) {
+ if (!node) {
+ return true;
+ }
+
+ switch (node.type) {
+ case "plain":
+ case "quoteSingle":
+ case "quoteDouble":
+ break;
+
+ case "alias":
+ return true;
+
+ default:
+ return false;
+ }
+
+ if (options.proseWrap === "preserve") {
+ return node.position.start.line === node.position.end.line;
+ }
+
+ if ( // backslash-newline
+ /\\$/m.test(options.originalText.slice(node.position.start.offset, node.position.end.offset))) {
+ return false;
+ }
+
+ switch (options.proseWrap) {
+ case "never":
+ return node.value.indexOf("\n") === -1;
+
+ case "always":
+ return !/[\n ]/.test(node.value);
+ // istanbul ignore next
+
+ default:
+ return false;
+ }
+ }
+
+ function needsSpaceInFrontOfMappingValue(node) {
+ return node.key.content && node.key.content.type === "alias";
+ }
+
+ function printNextEmptyLine(path, originalText) {
+ var node = path.getValue();
+ var root = path.stack[0];
+ root.isNextEmptyLinePrintedChecklist = root.isNextEmptyLinePrintedChecklist || [];
+
+ if (!root.isNextEmptyLinePrintedChecklist[node.position.end.line]) {
+ if (isNextLineEmpty$6(node, originalText)) {
+ root.isNextEmptyLinePrintedChecklist[node.position.end.line] = true;
+ return softline$8;
+ }
+ }
+
+ return "";
+ }
+
+ function printFlowScalarContent(nodeType, content, options) {
+ var lineContents = getFlowScalarLineContents$1(nodeType, content, options);
+ return join$c(hardline$d, lineContents.map(function (lineContentWords) {
+ return fill$6(join$c(line$9, lineContentWords).parts);
+ }));
+ }
+
+ function clean$7(node, newNode
+ /*, parent */
+ ) {
+ if (isNode$1(newNode)) {
+ delete newNode.position;
+
+ switch (newNode.type) {
+ case "comment":
+ // insert pragma
+ if (isPragma$1(newNode.value)) {
+ return null;
+ }
+
+ break;
+
+ case "quoteDouble":
+ case "quoteSingle":
+ newNode.type = "quote";
+ break;
+ }
+ }
+ }
+
+ var printerYaml = {
+ preprocess: preprocess$3,
+ print: genericPrint$6,
+ massageAstNode: clean$7,
+ insertPragma: insertPragma$9
+ };
+
+ var options$7 = {
+ bracketSpacing: commonOptions.bracketSpacing,
+ singleQuote: commonOptions.singleQuote,
+ proseWrap: commonOptions.proseWrap
+ };
+
+ var name$h = "YAML";
+ var type$g = "data";
+ var tmScope$g = "source.yaml";
+ var aliases$6 = [
+ "yml"
+ ];
+ var extensions$g = [
+ ".yml",
+ ".mir",
+ ".reek",
+ ".rviz",
+ ".sublime-syntax",
+ ".syntax",
+ ".yaml",
+ ".yaml-tmlanguage",
+ ".yml.mysql"
+ ];
+ var filenames$4 = [
+ ".clang-format",
+ ".clang-tidy",
+ ".gemrc",
+ "glide.lock"
+ ];
+ var aceMode$g = "yaml";
+ var codemirrorMode$c = "yaml";
+ var codemirrorMimeType$c = "text/x-yaml";
+ var languageId$g = 407;
+ var YAML = {
+ name: name$h,
+ type: type$g,
+ tmScope: tmScope$g,
+ aliases: aliases$6,
+ extensions: extensions$g,
+ filenames: filenames$4,
+ aceMode: aceMode$g,
+ codemirrorMode: codemirrorMode$c,
+ codemirrorMimeType: codemirrorMimeType$c,
+ languageId: languageId$g
+ };
+
+ var YAML$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ name: name$h,
+ type: type$g,
+ tmScope: tmScope$g,
+ aliases: aliases$6,
+ extensions: extensions$g,
+ filenames: filenames$4,
+ aceMode: aceMode$g,
+ codemirrorMode: codemirrorMode$c,
+ codemirrorMimeType: codemirrorMimeType$c,
+ languageId: languageId$g,
+ 'default': YAML
+ });
+
+ var require$$0$8 = getCjsExportFromNamespace(YAML$1);
+
+ var languages$6 = [createLanguage(require$$0$8, function (data) {
+ return Object.assign(data, {
+ since: "1.14.0",
+ parsers: ["yaml"],
+ vscodeLanguageIds: ["yaml"]
+ });
+ })];
+ var languageYaml = {
+ languages: languages$6,
+ printers: {
+ yaml: printerYaml
+ },
+ options: options$7
+ };
+
+ var version$2 = require$$0.version;
+ var getSupportInfo$2 = support.getSupportInfo;
+ var internalPlugins = [languageCss, languageGraphql, languageHandlebars, languageHtml, languageJs, languageMarkdown, languageYaml];
+
+ var isArray$1 = Array.isArray || function (arr) {
+ return Object.prototype.toString.call(arr) === "[object Array]";
+ }; // Luckily `opts` is always the 2nd argument
+
+
+ function withPlugins(fn) {
+ return function () {
+ var args = Array.from(arguments);
+ var plugins = args[1] && args[1].plugins || [];
+
+ if (!isArray$1(plugins)) {
+ plugins = Object.values(plugins);
+ }
+
+ args[1] = Object.assign({}, args[1], {
+ plugins: internalPlugins.concat(plugins)
+ });
+ return fn.apply(null, args);
+ };
+ }
+
+ var formatWithCursor = withPlugins(core.formatWithCursor);
+ var standalone = {
+ formatWithCursor: formatWithCursor,
+ format: function format(text, opts) {
+ return formatWithCursor(text, opts).formatted;
+ },
+ check: function check(text, opts) {
+ var formatted = formatWithCursor(text, opts).formatted;
+ return formatted === text;
+ },
+ doc: doc,
+ getSupportInfo: withPlugins(getSupportInfo$2),
+ version: version$2,
+ util: utilShared,
+ __debug: {
+ parse: withPlugins(core.parse),
+ formatAST: withPlugins(core.formatAST),
+ formatDoc: withPlugins(core.formatDoc),
+ printToDoc: withPlugins(core.printToDoc),
+ printDocToString: withPlugins(core.printDocToString)
+ }
+ };
+
+ var standalone$1 = standalone;
+
+ return standalone$1;
+
+})));
diff --git a/node_modules/prettier/third-party.js b/node_modules/prettier/third-party.js
new file mode 100644
index 0000000..c51a8e0
--- /dev/null
+++ b/node_modules/prettier/third-party.js
@@ -0,0 +1,5590 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', { value: true });
+
+function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
+
+var os = _interopDefault(require('os'));
+var path = _interopDefault(require('path'));
+var util = _interopDefault(require('util'));
+var module$1 = _interopDefault(require('module'));
+var fs = _interopDefault(require('fs'));
+var stream = _interopDefault(require('stream'));
+
+function _classCallCheck(instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+}
+
+function _defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ Object.defineProperty(target, descriptor.key, descriptor);
+ }
+}
+
+function _createClass(Constructor, protoProps, staticProps) {
+ if (protoProps) _defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) _defineProperties(Constructor, staticProps);
+ return Constructor;
+}
+
+function _inherits(subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) _setPrototypeOf(subClass, superClass);
+}
+
+function _getPrototypeOf(o) {
+ _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
+ return o.__proto__ || Object.getPrototypeOf(o);
+ };
+ return _getPrototypeOf(o);
+}
+
+function _setPrototypeOf(o, p) {
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
+ o.__proto__ = p;
+ return o;
+ };
+
+ return _setPrototypeOf(o, p);
+}
+
+function isNativeReflectConstruct() {
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
+ if (Reflect.construct.sham) return false;
+ if (typeof Proxy === "function") return true;
+
+ try {
+ Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
+ return true;
+ } catch (e) {
+ return false;
+ }
+}
+
+function _construct(Parent, args, Class) {
+ if (isNativeReflectConstruct()) {
+ _construct = Reflect.construct;
+ } else {
+ _construct = function _construct(Parent, args, Class) {
+ var a = [null];
+ a.push.apply(a, args);
+ var Constructor = Function.bind.apply(Parent, a);
+ var instance = new Constructor();
+ if (Class) _setPrototypeOf(instance, Class.prototype);
+ return instance;
+ };
+ }
+
+ return _construct.apply(null, arguments);
+}
+
+function _isNativeFunction(fn) {
+ return Function.toString.call(fn).indexOf("[native code]") !== -1;
+}
+
+function _wrapNativeSuper(Class) {
+ var _cache = typeof Map === "function" ? new Map() : undefined;
+
+ _wrapNativeSuper = function _wrapNativeSuper(Class) {
+ if (Class === null || !_isNativeFunction(Class)) return Class;
+
+ if (typeof Class !== "function") {
+ throw new TypeError("Super expression must either be null or a function");
+ }
+
+ if (typeof _cache !== "undefined") {
+ if (_cache.has(Class)) return _cache.get(Class);
+
+ _cache.set(Class, Wrapper);
+ }
+
+ function Wrapper() {
+ return _construct(Class, arguments, _getPrototypeOf(this).constructor);
+ }
+
+ Wrapper.prototype = Object.create(Class.prototype, {
+ constructor: {
+ value: Wrapper,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ return _setPrototypeOf(Wrapper, Class);
+ };
+
+ return _wrapNativeSuper(Class);
+}
+
+function _assertThisInitialized(self) {
+ if (self === void 0) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+
+ return self;
+}
+
+function _possibleConstructorReturn(self, call) {
+ if (call && (typeof call === "object" || typeof call === "function")) {
+ return call;
+ }
+
+ return _assertThisInitialized(self);
+}
+
+var isArrayish = function isArrayish(obj) {
+ if (!obj) {
+ return false;
+ }
+
+ return obj instanceof Array || Array.isArray(obj) || obj.length >= 0 && obj.splice instanceof Function;
+};
+
+var errorEx = function errorEx(name, properties) {
+ if (!name || name.constructor !== String) {
+ properties = name || {};
+ name = Error.name;
+ }
+
+ var errorExError = function ErrorEXError(message) {
+ if (!this) {
+ return new ErrorEXError(message);
+ }
+
+ message = message instanceof Error ? message.message : message || this.message;
+ Error.call(this, message);
+ Error.captureStackTrace(this, errorExError);
+ this.name = name;
+ Object.defineProperty(this, 'message', {
+ configurable: true,
+ enumerable: false,
+ get: function get() {
+ var newMessage = message.split(/\r?\n/g);
+
+ for (var key in properties) {
+ if (!properties.hasOwnProperty(key)) {
+ continue;
+ }
+
+ var modifier = properties[key];
+
+ if ('message' in modifier) {
+ newMessage = modifier.message(this[key], newMessage) || newMessage;
+
+ if (!isArrayish(newMessage)) {
+ newMessage = [newMessage];
+ }
+ }
+ }
+
+ return newMessage.join('\n');
+ },
+ set: function set(v) {
+ message = v;
+ }
+ });
+ var overwrittenStack = null;
+ var stackDescriptor = Object.getOwnPropertyDescriptor(this, 'stack');
+ var stackGetter = stackDescriptor.get;
+ var stackValue = stackDescriptor.value;
+ delete stackDescriptor.value;
+ delete stackDescriptor.writable;
+
+ stackDescriptor.set = function (newstack) {
+ overwrittenStack = newstack;
+ };
+
+ stackDescriptor.get = function () {
+ var stack = (overwrittenStack || (stackGetter ? stackGetter.call(this) : stackValue)).split(/\r?\n+/g); // starting in Node 7, the stack builder caches the message.
+ // just replace it.
+
+ if (!overwrittenStack) {
+ stack[0] = this.name + ': ' + this.message;
+ }
+
+ var lineCount = 1;
+
+ for (var key in properties) {
+ if (!properties.hasOwnProperty(key)) {
+ continue;
+ }
+
+ var modifier = properties[key];
+
+ if ('line' in modifier) {
+ var line = modifier.line(this[key]);
+
+ if (line) {
+ stack.splice(lineCount++, 0, ' ' + line);
+ }
+ }
+
+ if ('stack' in modifier) {
+ modifier.stack(this[key], stack);
+ }
+ }
+
+ return stack.join('\n');
+ };
+
+ Object.defineProperty(this, 'stack', stackDescriptor);
+ };
+
+ if (Object.setPrototypeOf) {
+ Object.setPrototypeOf(errorExError.prototype, Error.prototype);
+ Object.setPrototypeOf(errorExError, Error);
+ } else {
+ util.inherits(errorExError, Error);
+ }
+
+ return errorExError;
+};
+
+errorEx.append = function (str, def) {
+ return {
+ message: function message(v, _message) {
+ v = v || def;
+
+ if (v) {
+ _message[0] += ' ' + str.replace('%s', v.toString());
+ }
+
+ return _message;
+ }
+ };
+};
+
+errorEx.line = function (str, def) {
+ return {
+ line: function line(v) {
+ v = v || def;
+
+ if (v) {
+ return str.replace('%s', v.toString());
+ }
+
+ return null;
+ }
+ };
+};
+
+var errorEx_1 = errorEx;
+
+var jsonParseBetterErrors = parseJson;
+
+function parseJson(txt, reviver, context) {
+ context = context || 20;
+
+ try {
+ return JSON.parse(txt, reviver);
+ } catch (e) {
+ if (typeof txt !== 'string') {
+ var isEmptyArray = Array.isArray(txt) && txt.length === 0;
+ var errorMessage = 'Cannot parse ' + (isEmptyArray ? 'an empty array' : String(txt));
+ throw new TypeError(errorMessage);
+ }
+
+ var syntaxErr = e.message.match(/^Unexpected token.*position\s+(\d+)/i);
+ var errIdx = syntaxErr ? +syntaxErr[1] : e.message.match(/^Unexpected end of JSON.*/i) ? txt.length - 1 : null;
+
+ if (errIdx != null) {
+ var start = errIdx <= context ? 0 : errIdx - context;
+ var end = errIdx + context >= txt.length ? txt.length : errIdx + context;
+ e.message += ` while parsing near '${start === 0 ? '' : '...'}${txt.slice(start, end)}${end === txt.length ? '' : '...'}'`;
+ } else {
+ e.message += ` while parsing '${txt.slice(0, context * 2)}'`;
+ }
+
+ throw e;
+ }
+}
+
+var JSONError = errorEx_1('JSONError', {
+ fileName: errorEx_1.append('in %s')
+});
+
+var parseJson$1 = function parseJson(input, reviver, filename) {
+ if (typeof reviver === 'string') {
+ filename = reviver;
+ reviver = null;
+ }
+
+ try {
+ try {
+ return JSON.parse(input, reviver);
+ } catch (err) {
+ jsonParseBetterErrors(input, reviver);
+ throw err;
+ }
+ } catch (err) {
+ err.message = err.message.replace(/\n/g, '');
+ var jsonErr = new JSONError(err);
+
+ if (filename) {
+ jsonErr.fileName = filename;
+ }
+
+ throw jsonErr;
+ }
+};
+
+function isNothing(subject) {
+ return typeof subject === 'undefined' || subject === null;
+}
+
+function isObject(subject) {
+ return typeof subject === 'object' && subject !== null;
+}
+
+function toArray(sequence) {
+ if (Array.isArray(sequence)) return sequence;else if (isNothing(sequence)) return [];
+ return [sequence];
+}
+
+function extend(target, source) {
+ var index, length, key, sourceKeys;
+
+ if (source) {
+ sourceKeys = Object.keys(source);
+
+ for (index = 0, length = sourceKeys.length; index < length; index += 1) {
+ key = sourceKeys[index];
+ target[key] = source[key];
+ }
+ }
+
+ return target;
+}
+
+function repeat(string, count) {
+ var result = '',
+ cycle;
+
+ for (cycle = 0; cycle < count; cycle += 1) {
+ result += string;
+ }
+
+ return result;
+}
+
+function isNegativeZero(number) {
+ return number === 0 && Number.NEGATIVE_INFINITY === 1 / number;
+}
+
+var isNothing_1 = isNothing;
+var isObject_1 = isObject;
+var toArray_1 = toArray;
+var repeat_1 = repeat;
+var isNegativeZero_1 = isNegativeZero;
+var extend_1 = extend;
+var common = {
+ isNothing: isNothing_1,
+ isObject: isObject_1,
+ toArray: toArray_1,
+ repeat: repeat_1,
+ isNegativeZero: isNegativeZero_1,
+ extend: extend_1
+};
+
+// YAML error class. http://stackoverflow.com/questions/8458984
+
+function YAMLException(reason, mark) {
+ // Super constructor
+ Error.call(this);
+ this.name = 'YAMLException';
+ this.reason = reason;
+ this.mark = mark;
+ this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : ''); // Include stack trace in error object
+
+ if (Error.captureStackTrace) {
+ // Chrome and NodeJS
+ Error.captureStackTrace(this, this.constructor);
+ } else {
+ // FF, IE 10+ and Safari 6+. Fallback for others
+ this.stack = new Error().stack || '';
+ }
+} // Inherit from Error
+
+
+YAMLException.prototype = Object.create(Error.prototype);
+YAMLException.prototype.constructor = YAMLException;
+
+YAMLException.prototype.toString = function toString(compact) {
+ var result = this.name + ': ';
+ result += this.reason || '(unknown reason)';
+
+ if (!compact && this.mark) {
+ result += ' ' + this.mark.toString();
+ }
+
+ return result;
+};
+
+var exception = YAMLException;
+
+function Mark(name, buffer, position, line, column) {
+ this.name = name;
+ this.buffer = buffer;
+ this.position = position;
+ this.line = line;
+ this.column = column;
+}
+
+Mark.prototype.getSnippet = function getSnippet(indent, maxLength) {
+ var head, start, tail, end, snippet;
+ if (!this.buffer) return null;
+ indent = indent || 4;
+ maxLength = maxLength || 75;
+ head = '';
+ start = this.position;
+
+ while (start > 0 && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {
+ start -= 1;
+
+ if (this.position - start > maxLength / 2 - 1) {
+ head = ' ... ';
+ start += 5;
+ break;
+ }
+ }
+
+ tail = '';
+ end = this.position;
+
+ while (end < this.buffer.length && '\x00\r\n\x85\u2028\u2029'.indexOf(this.buffer.charAt(end)) === -1) {
+ end += 1;
+
+ if (end - this.position > maxLength / 2 - 1) {
+ tail = ' ... ';
+ end -= 5;
+ break;
+ }
+ }
+
+ snippet = this.buffer.slice(start, end);
+ return common.repeat(' ', indent) + head + snippet + tail + '\n' + common.repeat(' ', indent + this.position - start + head.length) + '^';
+};
+
+Mark.prototype.toString = function toString(compact) {
+ var snippet,
+ where = '';
+
+ if (this.name) {
+ where += 'in "' + this.name + '" ';
+ }
+
+ where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);
+
+ if (!compact) {
+ snippet = this.getSnippet();
+
+ if (snippet) {
+ where += ':\n' + snippet;
+ }
+ }
+
+ return where;
+};
+
+var mark = Mark;
+
+var TYPE_CONSTRUCTOR_OPTIONS = ['kind', 'resolve', 'construct', 'instanceOf', 'predicate', 'represent', 'defaultStyle', 'styleAliases'];
+var YAML_NODE_KINDS = ['scalar', 'sequence', 'mapping'];
+
+function compileStyleAliases(map) {
+ var result = {};
+
+ if (map !== null) {
+ Object.keys(map).forEach(function (style) {
+ map[style].forEach(function (alias) {
+ result[String(alias)] = style;
+ });
+ });
+ }
+
+ return result;
+}
+
+function Type(tag, options) {
+ options = options || {};
+ Object.keys(options).forEach(function (name) {
+ if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {
+ throw new exception('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.');
+ }
+ }); // TODO: Add tag format check.
+
+ this.tag = tag;
+ this.kind = options['kind'] || null;
+
+ this.resolve = options['resolve'] || function () {
+ return true;
+ };
+
+ this.construct = options['construct'] || function (data) {
+ return data;
+ };
+
+ this.instanceOf = options['instanceOf'] || null;
+ this.predicate = options['predicate'] || null;
+ this.represent = options['represent'] || null;
+ this.defaultStyle = options['defaultStyle'] || null;
+ this.styleAliases = compileStyleAliases(options['styleAliases'] || null);
+
+ if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {
+ throw new exception('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.');
+ }
+}
+
+var type = Type;
+
+/*eslint-disable max-len*/
+
+
+function compileList(schema, name, result) {
+ var exclude = [];
+ schema.include.forEach(function (includedSchema) {
+ result = compileList(includedSchema, name, result);
+ });
+ schema[name].forEach(function (currentType) {
+ result.forEach(function (previousType, previousIndex) {
+ if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {
+ exclude.push(previousIndex);
+ }
+ });
+ result.push(currentType);
+ });
+ return result.filter(function (type, index) {
+ return exclude.indexOf(index) === -1;
+ });
+}
+
+function compileMap()
+/* lists... */
+{
+ var result = {
+ scalar: {},
+ sequence: {},
+ mapping: {},
+ fallback: {}
+ },
+ index,
+ length;
+
+ function collectType(type) {
+ result[type.kind][type.tag] = result['fallback'][type.tag] = type;
+ }
+
+ for (index = 0, length = arguments.length; index < length; index += 1) {
+ arguments[index].forEach(collectType);
+ }
+
+ return result;
+}
+
+function Schema(definition) {
+ this.include = definition.include || [];
+ this.implicit = definition.implicit || [];
+ this.explicit = definition.explicit || [];
+ this.implicit.forEach(function (type) {
+ if (type.loadKind && type.loadKind !== 'scalar') {
+ throw new exception('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');
+ }
+ });
+ this.compiledImplicit = compileList(this, 'implicit', []);
+ this.compiledExplicit = compileList(this, 'explicit', []);
+ this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);
+}
+
+Schema.DEFAULT = null;
+
+Schema.create = function createSchema() {
+ var schemas, types;
+
+ switch (arguments.length) {
+ case 1:
+ schemas = Schema.DEFAULT;
+ types = arguments[0];
+ break;
+
+ case 2:
+ schemas = arguments[0];
+ types = arguments[1];
+ break;
+
+ default:
+ throw new exception('Wrong number of arguments for Schema.create function');
+ }
+
+ schemas = common.toArray(schemas);
+ types = common.toArray(types);
+
+ if (!schemas.every(function (schema) {
+ return schema instanceof Schema;
+ })) {
+ throw new exception('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');
+ }
+
+ if (!types.every(function (type$1) {
+ return type$1 instanceof type;
+ })) {
+ throw new exception('Specified list of YAML types (or a single Type object) contains a non-Type object.');
+ }
+
+ return new Schema({
+ include: schemas,
+ explicit: types
+ });
+};
+
+var schema = Schema;
+
+var str = new type('tag:yaml.org,2002:str', {
+ kind: 'scalar',
+ construct: function construct(data) {
+ return data !== null ? data : '';
+ }
+});
+
+var seq = new type('tag:yaml.org,2002:seq', {
+ kind: 'sequence',
+ construct: function construct(data) {
+ return data !== null ? data : [];
+ }
+});
+
+var map = new type('tag:yaml.org,2002:map', {
+ kind: 'mapping',
+ construct: function construct(data) {
+ return data !== null ? data : {};
+ }
+});
+
+var failsafe = new schema({
+ explicit: [str, seq, map]
+});
+
+function resolveYamlNull(data) {
+ if (data === null) return true;
+ var max = data.length;
+ return max === 1 && data === '~' || max === 4 && (data === 'null' || data === 'Null' || data === 'NULL');
+}
+
+function constructYamlNull() {
+ return null;
+}
+
+function isNull(object) {
+ return object === null;
+}
+
+var _null = new type('tag:yaml.org,2002:null', {
+ kind: 'scalar',
+ resolve: resolveYamlNull,
+ construct: constructYamlNull,
+ predicate: isNull,
+ represent: {
+ canonical: function canonical() {
+ return '~';
+ },
+ lowercase: function lowercase() {
+ return 'null';
+ },
+ uppercase: function uppercase() {
+ return 'NULL';
+ },
+ camelcase: function camelcase() {
+ return 'Null';
+ }
+ },
+ defaultStyle: 'lowercase'
+});
+
+function resolveYamlBoolean(data) {
+ if (data === null) return false;
+ var max = data.length;
+ return max === 4 && (data === 'true' || data === 'True' || data === 'TRUE') || max === 5 && (data === 'false' || data === 'False' || data === 'FALSE');
+}
+
+function constructYamlBoolean(data) {
+ return data === 'true' || data === 'True' || data === 'TRUE';
+}
+
+function isBoolean(object) {
+ return Object.prototype.toString.call(object) === '[object Boolean]';
+}
+
+var bool = new type('tag:yaml.org,2002:bool', {
+ kind: 'scalar',
+ resolve: resolveYamlBoolean,
+ construct: constructYamlBoolean,
+ predicate: isBoolean,
+ represent: {
+ lowercase: function lowercase(object) {
+ return object ? 'true' : 'false';
+ },
+ uppercase: function uppercase(object) {
+ return object ? 'TRUE' : 'FALSE';
+ },
+ camelcase: function camelcase(object) {
+ return object ? 'True' : 'False';
+ }
+ },
+ defaultStyle: 'lowercase'
+});
+
+function isHexCode(c) {
+ return 0x30
+ /* 0 */
+ <= c && c <= 0x39
+ /* 9 */
+ || 0x41
+ /* A */
+ <= c && c <= 0x46
+ /* F */
+ || 0x61
+ /* a */
+ <= c && c <= 0x66
+ /* f */
+ ;
+}
+
+function isOctCode(c) {
+ return 0x30
+ /* 0 */
+ <= c && c <= 0x37
+ /* 7 */
+ ;
+}
+
+function isDecCode(c) {
+ return 0x30
+ /* 0 */
+ <= c && c <= 0x39
+ /* 9 */
+ ;
+}
+
+function resolveYamlInteger(data) {
+ if (data === null) return false;
+ var max = data.length,
+ index = 0,
+ hasDigits = false,
+ ch;
+ if (!max) return false;
+ ch = data[index]; // sign
+
+ if (ch === '-' || ch === '+') {
+ ch = data[++index];
+ }
+
+ if (ch === '0') {
+ // 0
+ if (index + 1 === max) return true;
+ ch = data[++index]; // base 2, base 8, base 16
+
+ if (ch === 'b') {
+ // base 2
+ index++;
+
+ for (; index < max; index++) {
+ ch = data[index];
+ if (ch === '_') continue;
+ if (ch !== '0' && ch !== '1') return false;
+ hasDigits = true;
+ }
+
+ return hasDigits && ch !== '_';
+ }
+
+ if (ch === 'x') {
+ // base 16
+ index++;
+
+ for (; index < max; index++) {
+ ch = data[index];
+ if (ch === '_') continue;
+ if (!isHexCode(data.charCodeAt(index))) return false;
+ hasDigits = true;
+ }
+
+ return hasDigits && ch !== '_';
+ } // base 8
+
+
+ for (; index < max; index++) {
+ ch = data[index];
+ if (ch === '_') continue;
+ if (!isOctCode(data.charCodeAt(index))) return false;
+ hasDigits = true;
+ }
+
+ return hasDigits && ch !== '_';
+ } // base 10 (except 0) or base 60
+ // value should not start with `_`;
+
+
+ if (ch === '_') return false;
+
+ for (; index < max; index++) {
+ ch = data[index];
+ if (ch === '_') continue;
+ if (ch === ':') break;
+
+ if (!isDecCode(data.charCodeAt(index))) {
+ return false;
+ }
+
+ hasDigits = true;
+ } // Should have digits and should not end with `_`
+
+
+ if (!hasDigits || ch === '_') return false; // if !base60 - done;
+
+ if (ch !== ':') return true; // base60 almost not used, no needs to optimize
+
+ return /^(:[0-5]?[0-9])+$/.test(data.slice(index));
+}
+
+function constructYamlInteger(data) {
+ var value = data,
+ sign = 1,
+ ch,
+ base,
+ digits = [];
+
+ if (value.indexOf('_') !== -1) {
+ value = value.replace(/_/g, '');
+ }
+
+ ch = value[0];
+
+ if (ch === '-' || ch === '+') {
+ if (ch === '-') sign = -1;
+ value = value.slice(1);
+ ch = value[0];
+ }
+
+ if (value === '0') return 0;
+
+ if (ch === '0') {
+ if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);
+ if (value[1] === 'x') return sign * parseInt(value, 16);
+ return sign * parseInt(value, 8);
+ }
+
+ if (value.indexOf(':') !== -1) {
+ value.split(':').forEach(function (v) {
+ digits.unshift(parseInt(v, 10));
+ });
+ value = 0;
+ base = 1;
+ digits.forEach(function (d) {
+ value += d * base;
+ base *= 60;
+ });
+ return sign * value;
+ }
+
+ return sign * parseInt(value, 10);
+}
+
+function isInteger(object) {
+ return Object.prototype.toString.call(object) === '[object Number]' && object % 1 === 0 && !common.isNegativeZero(object);
+}
+
+var int_1 = new type('tag:yaml.org,2002:int', {
+ kind: 'scalar',
+ resolve: resolveYamlInteger,
+ construct: constructYamlInteger,
+ predicate: isInteger,
+ represent: {
+ binary: function binary(obj) {
+ return obj >= 0 ? '0b' + obj.toString(2) : '-0b' + obj.toString(2).slice(1);
+ },
+ octal: function octal(obj) {
+ return obj >= 0 ? '0' + obj.toString(8) : '-0' + obj.toString(8).slice(1);
+ },
+ decimal: function decimal(obj) {
+ return obj.toString(10);
+ },
+
+ /* eslint-disable max-len */
+ hexadecimal: function hexadecimal(obj) {
+ return obj >= 0 ? '0x' + obj.toString(16).toUpperCase() : '-0x' + obj.toString(16).toUpperCase().slice(1);
+ }
+ },
+ defaultStyle: 'decimal',
+ styleAliases: {
+ binary: [2, 'bin'],
+ octal: [8, 'oct'],
+ decimal: [10, 'dec'],
+ hexadecimal: [16, 'hex']
+ }
+});
+
+var YAML_FLOAT_PATTERN = new RegExp( // 2.5e4, 2.5 and integers
+'^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?' + // .2e4, .2
+// special case, seems not from spec
+'|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?' + // 20:59
+'|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*' + // .inf
+'|[-+]?\\.(?:inf|Inf|INF)' + // .nan
+'|\\.(?:nan|NaN|NAN))$');
+
+function resolveYamlFloat(data) {
+ if (data === null) return false;
+
+ if (!YAML_FLOAT_PATTERN.test(data) || // Quick hack to not allow integers end with `_`
+ // Probably should update regexp & check speed
+ data[data.length - 1] === '_') {
+ return false;
+ }
+
+ return true;
+}
+
+function constructYamlFloat(data) {
+ var value, sign, base, digits;
+ value = data.replace(/_/g, '').toLowerCase();
+ sign = value[0] === '-' ? -1 : 1;
+ digits = [];
+
+ if ('+-'.indexOf(value[0]) >= 0) {
+ value = value.slice(1);
+ }
+
+ if (value === '.inf') {
+ return sign === 1 ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;
+ } else if (value === '.nan') {
+ return NaN;
+ } else if (value.indexOf(':') >= 0) {
+ value.split(':').forEach(function (v) {
+ digits.unshift(parseFloat(v, 10));
+ });
+ value = 0.0;
+ base = 1;
+ digits.forEach(function (d) {
+ value += d * base;
+ base *= 60;
+ });
+ return sign * value;
+ }
+
+ return sign * parseFloat(value, 10);
+}
+
+var SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;
+
+function representYamlFloat(object, style) {
+ var res;
+
+ if (isNaN(object)) {
+ switch (style) {
+ case 'lowercase':
+ return '.nan';
+
+ case 'uppercase':
+ return '.NAN';
+
+ case 'camelcase':
+ return '.NaN';
+ }
+ } else if (Number.POSITIVE_INFINITY === object) {
+ switch (style) {
+ case 'lowercase':
+ return '.inf';
+
+ case 'uppercase':
+ return '.INF';
+
+ case 'camelcase':
+ return '.Inf';
+ }
+ } else if (Number.NEGATIVE_INFINITY === object) {
+ switch (style) {
+ case 'lowercase':
+ return '-.inf';
+
+ case 'uppercase':
+ return '-.INF';
+
+ case 'camelcase':
+ return '-.Inf';
+ }
+ } else if (common.isNegativeZero(object)) {
+ return '-0.0';
+ }
+
+ res = object.toString(10); // JS stringifier can build scientific format without dots: 5e-100,
+ // while YAML requres dot: 5.e-100. Fix it with simple hack
+
+ return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;
+}
+
+function isFloat(object) {
+ return Object.prototype.toString.call(object) === '[object Number]' && (object % 1 !== 0 || common.isNegativeZero(object));
+}
+
+var float_1 = new type('tag:yaml.org,2002:float', {
+ kind: 'scalar',
+ resolve: resolveYamlFloat,
+ construct: constructYamlFloat,
+ predicate: isFloat,
+ represent: representYamlFloat,
+ defaultStyle: 'lowercase'
+});
+
+var json = new schema({
+ include: [failsafe],
+ implicit: [_null, bool, int_1, float_1]
+});
+
+var core = new schema({
+ include: [json]
+});
+
+var YAML_DATE_REGEXP = new RegExp('^([0-9][0-9][0-9][0-9])' + // [1] year
+'-([0-9][0-9])' + // [2] month
+'-([0-9][0-9])$'); // [3] day
+
+var YAML_TIMESTAMP_REGEXP = new RegExp('^([0-9][0-9][0-9][0-9])' + // [1] year
+'-([0-9][0-9]?)' + // [2] month
+'-([0-9][0-9]?)' + // [3] day
+'(?:[Tt]|[ \\t]+)' + // ...
+'([0-9][0-9]?)' + // [4] hour
+':([0-9][0-9])' + // [5] minute
+':([0-9][0-9])' + // [6] second
+'(?:\\.([0-9]*))?' + // [7] fraction
+'(?:[ \\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour
+'(?::([0-9][0-9]))?))?$'); // [11] tz_minute
+
+function resolveYamlTimestamp(data) {
+ if (data === null) return false;
+ if (YAML_DATE_REGEXP.exec(data) !== null) return true;
+ if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;
+ return false;
+}
+
+function constructYamlTimestamp(data) {
+ var match,
+ year,
+ month,
+ day,
+ hour,
+ minute,
+ second,
+ fraction = 0,
+ delta = null,
+ tz_hour,
+ tz_minute,
+ date;
+ match = YAML_DATE_REGEXP.exec(data);
+ if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);
+ if (match === null) throw new Error('Date resolve error'); // match: [1] year [2] month [3] day
+
+ year = +match[1];
+ month = +match[2] - 1; // JS month starts with 0
+
+ day = +match[3];
+
+ if (!match[4]) {
+ // no hour
+ return new Date(Date.UTC(year, month, day));
+ } // match: [4] hour [5] minute [6] second [7] fraction
+
+
+ hour = +match[4];
+ minute = +match[5];
+ second = +match[6];
+
+ if (match[7]) {
+ fraction = match[7].slice(0, 3);
+
+ while (fraction.length < 3) {
+ // milli-seconds
+ fraction += '0';
+ }
+
+ fraction = +fraction;
+ } // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute
+
+
+ if (match[9]) {
+ tz_hour = +match[10];
+ tz_minute = +(match[11] || 0);
+ delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds
+
+ if (match[9] === '-') delta = -delta;
+ }
+
+ date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));
+ if (delta) date.setTime(date.getTime() - delta);
+ return date;
+}
+
+function representYamlTimestamp(object
+/*, style*/
+) {
+ return object.toISOString();
+}
+
+var timestamp = new type('tag:yaml.org,2002:timestamp', {
+ kind: 'scalar',
+ resolve: resolveYamlTimestamp,
+ construct: constructYamlTimestamp,
+ instanceOf: Date,
+ represent: representYamlTimestamp
+});
+
+function resolveYamlMerge(data) {
+ return data === '<<' || data === null;
+}
+
+var merge = new type('tag:yaml.org,2002:merge', {
+ kind: 'scalar',
+ resolve: resolveYamlMerge
+});
+
+function commonjsRequire () {
+ throw new Error('Dynamic requires are not currently supported by rollup-plugin-commonjs');
+}
+
+function createCommonjsModule(fn, module) {
+ return module = { exports: {} }, fn(module, module.exports), module.exports;
+}
+
+function getCjsExportFromNamespace (n) {
+ return n && n['default'] || n;
+}
+
+/*eslint-disable no-bitwise*/
+
+
+var NodeBuffer;
+
+try {
+ // A trick for browserified version, to not include `Buffer` shim
+ var _require = commonjsRequire;
+ NodeBuffer = _require('buffer').Buffer;
+} catch (__) {} // [ 64, 65, 66 ] -> [ padding, CR, LF ]
+
+
+var BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r';
+
+function resolveYamlBinary(data) {
+ if (data === null) return false;
+ var code,
+ idx,
+ bitlen = 0,
+ max = data.length,
+ map = BASE64_MAP; // Convert one by one.
+
+ for (idx = 0; idx < max; idx++) {
+ code = map.indexOf(data.charAt(idx)); // Skip CR/LF
+
+ if (code > 64) continue; // Fail on illegal characters
+
+ if (code < 0) return false;
+ bitlen += 6;
+ } // If there are any bits left, source was corrupted
+
+
+ return bitlen % 8 === 0;
+}
+
+function constructYamlBinary(data) {
+ var idx,
+ tailbits,
+ input = data.replace(/[\r\n=]/g, ''),
+ // remove CR/LF & padding to simplify scan
+ max = input.length,
+ map = BASE64_MAP,
+ bits = 0,
+ result = []; // Collect by 6*4 bits (3 bytes)
+
+ for (idx = 0; idx < max; idx++) {
+ if (idx % 4 === 0 && idx) {
+ result.push(bits >> 16 & 0xFF);
+ result.push(bits >> 8 & 0xFF);
+ result.push(bits & 0xFF);
+ }
+
+ bits = bits << 6 | map.indexOf(input.charAt(idx));
+ } // Dump tail
+
+
+ tailbits = max % 4 * 6;
+
+ if (tailbits === 0) {
+ result.push(bits >> 16 & 0xFF);
+ result.push(bits >> 8 & 0xFF);
+ result.push(bits & 0xFF);
+ } else if (tailbits === 18) {
+ result.push(bits >> 10 & 0xFF);
+ result.push(bits >> 2 & 0xFF);
+ } else if (tailbits === 12) {
+ result.push(bits >> 4 & 0xFF);
+ } // Wrap into Buffer for NodeJS and leave Array for browser
+
+
+ if (NodeBuffer) {
+ // Support node 6.+ Buffer API when available
+ return NodeBuffer.from ? NodeBuffer.from(result) : new NodeBuffer(result);
+ }
+
+ return result;
+}
+
+function representYamlBinary(object
+/*, style*/
+) {
+ var result = '',
+ bits = 0,
+ idx,
+ tail,
+ max = object.length,
+ map = BASE64_MAP; // Convert every three bytes to 4 ASCII characters.
+
+ for (idx = 0; idx < max; idx++) {
+ if (idx % 3 === 0 && idx) {
+ result += map[bits >> 18 & 0x3F];
+ result += map[bits >> 12 & 0x3F];
+ result += map[bits >> 6 & 0x3F];
+ result += map[bits & 0x3F];
+ }
+
+ bits = (bits << 8) + object[idx];
+ } // Dump tail
+
+
+ tail = max % 3;
+
+ if (tail === 0) {
+ result += map[bits >> 18 & 0x3F];
+ result += map[bits >> 12 & 0x3F];
+ result += map[bits >> 6 & 0x3F];
+ result += map[bits & 0x3F];
+ } else if (tail === 2) {
+ result += map[bits >> 10 & 0x3F];
+ result += map[bits >> 4 & 0x3F];
+ result += map[bits << 2 & 0x3F];
+ result += map[64];
+ } else if (tail === 1) {
+ result += map[bits >> 2 & 0x3F];
+ result += map[bits << 4 & 0x3F];
+ result += map[64];
+ result += map[64];
+ }
+
+ return result;
+}
+
+function isBinary(object) {
+ return NodeBuffer && NodeBuffer.isBuffer(object);
+}
+
+var binary = new type('tag:yaml.org,2002:binary', {
+ kind: 'scalar',
+ resolve: resolveYamlBinary,
+ construct: constructYamlBinary,
+ predicate: isBinary,
+ represent: representYamlBinary
+});
+
+var _hasOwnProperty = Object.prototype.hasOwnProperty;
+var _toString = Object.prototype.toString;
+
+function resolveYamlOmap(data) {
+ if (data === null) return true;
+ var objectKeys = [],
+ index,
+ length,
+ pair,
+ pairKey,
+ pairHasKey,
+ object = data;
+
+ for (index = 0, length = object.length; index < length; index += 1) {
+ pair = object[index];
+ pairHasKey = false;
+ if (_toString.call(pair) !== '[object Object]') return false;
+
+ for (pairKey in pair) {
+ if (_hasOwnProperty.call(pair, pairKey)) {
+ if (!pairHasKey) pairHasKey = true;else return false;
+ }
+ }
+
+ if (!pairHasKey) return false;
+ if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);else return false;
+ }
+
+ return true;
+}
+
+function constructYamlOmap(data) {
+ return data !== null ? data : [];
+}
+
+var omap = new type('tag:yaml.org,2002:omap', {
+ kind: 'sequence',
+ resolve: resolveYamlOmap,
+ construct: constructYamlOmap
+});
+
+var _toString$1 = Object.prototype.toString;
+
+function resolveYamlPairs(data) {
+ if (data === null) return true;
+ var index,
+ length,
+ pair,
+ keys,
+ result,
+ object = data;
+ result = new Array(object.length);
+
+ for (index = 0, length = object.length; index < length; index += 1) {
+ pair = object[index];
+ if (_toString$1.call(pair) !== '[object Object]') return false;
+ keys = Object.keys(pair);
+ if (keys.length !== 1) return false;
+ result[index] = [keys[0], pair[keys[0]]];
+ }
+
+ return true;
+}
+
+function constructYamlPairs(data) {
+ if (data === null) return [];
+ var index,
+ length,
+ pair,
+ keys,
+ result,
+ object = data;
+ result = new Array(object.length);
+
+ for (index = 0, length = object.length; index < length; index += 1) {
+ pair = object[index];
+ keys = Object.keys(pair);
+ result[index] = [keys[0], pair[keys[0]]];
+ }
+
+ return result;
+}
+
+var pairs = new type('tag:yaml.org,2002:pairs', {
+ kind: 'sequence',
+ resolve: resolveYamlPairs,
+ construct: constructYamlPairs
+});
+
+var _hasOwnProperty$1 = Object.prototype.hasOwnProperty;
+
+function resolveYamlSet(data) {
+ if (data === null) return true;
+ var key,
+ object = data;
+
+ for (key in object) {
+ if (_hasOwnProperty$1.call(object, key)) {
+ if (object[key] !== null) return false;
+ }
+ }
+
+ return true;
+}
+
+function constructYamlSet(data) {
+ return data !== null ? data : {};
+}
+
+var set = new type('tag:yaml.org,2002:set', {
+ kind: 'mapping',
+ resolve: resolveYamlSet,
+ construct: constructYamlSet
+});
+
+var default_safe = new schema({
+ include: [core],
+ implicit: [timestamp, merge],
+ explicit: [binary, omap, pairs, set]
+});
+
+function resolveJavascriptUndefined() {
+ return true;
+}
+
+function constructJavascriptUndefined() {
+ /*eslint-disable no-undefined*/
+ return undefined;
+}
+
+function representJavascriptUndefined() {
+ return '';
+}
+
+function isUndefined(object) {
+ return typeof object === 'undefined';
+}
+
+var _undefined = new type('tag:yaml.org,2002:js/undefined', {
+ kind: 'scalar',
+ resolve: resolveJavascriptUndefined,
+ construct: constructJavascriptUndefined,
+ predicate: isUndefined,
+ represent: representJavascriptUndefined
+});
+
+function resolveJavascriptRegExp(data) {
+ if (data === null) return false;
+ if (data.length === 0) return false;
+ var regexp = data,
+ tail = /\/([gim]*)$/.exec(data),
+ modifiers = ''; // if regexp starts with '/' it can have modifiers and must be properly closed
+ // `/foo/gim` - modifiers tail can be maximum 3 chars
+
+ if (regexp[0] === '/') {
+ if (tail) modifiers = tail[1];
+ if (modifiers.length > 3) return false; // if expression starts with /, is should be properly terminated
+
+ if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;
+ }
+
+ return true;
+}
+
+function constructJavascriptRegExp(data) {
+ var regexp = data,
+ tail = /\/([gim]*)$/.exec(data),
+ modifiers = ''; // `/foo/gim` - tail can be maximum 4 chars
+
+ if (regexp[0] === '/') {
+ if (tail) modifiers = tail[1];
+ regexp = regexp.slice(1, regexp.length - modifiers.length - 1);
+ }
+
+ return new RegExp(regexp, modifiers);
+}
+
+function representJavascriptRegExp(object
+/*, style*/
+) {
+ var result = '/' + object.source + '/';
+ if (object.global) result += 'g';
+ if (object.multiline) result += 'm';
+ if (object.ignoreCase) result += 'i';
+ return result;
+}
+
+function isRegExp(object) {
+ return Object.prototype.toString.call(object) === '[object RegExp]';
+}
+
+var regexp = new type('tag:yaml.org,2002:js/regexp', {
+ kind: 'scalar',
+ resolve: resolveJavascriptRegExp,
+ construct: constructJavascriptRegExp,
+ predicate: isRegExp,
+ represent: representJavascriptRegExp
+});
+
+var esprima; // Browserified version does not have esprima
+//
+// 1. For node.js just require module as deps
+// 2. For browser try to require mudule via external AMD system.
+// If not found - try to fallback to window.esprima. If not
+// found too - then fail to parse.
+//
+
+try {
+ // workaround to exclude package from browserify list.
+ var _require$1 = commonjsRequire;
+ esprima = _require$1('esprima');
+} catch (_) {
+ /*global window */
+ if (typeof window !== 'undefined') esprima = window.esprima;
+}
+
+function resolveJavascriptFunction(data) {
+ if (data === null) return false;
+
+ try {
+ var source = '(' + data + ')',
+ ast = esprima.parse(source, {
+ range: true
+ });
+
+ if (ast.type !== 'Program' || ast.body.length !== 1 || ast.body[0].type !== 'ExpressionStatement' || ast.body[0].expression.type !== 'ArrowFunctionExpression' && ast.body[0].expression.type !== 'FunctionExpression') {
+ return false;
+ }
+
+ return true;
+ } catch (err) {
+ return false;
+ }
+}
+
+function constructJavascriptFunction(data) {
+ /*jslint evil:true*/
+ var source = '(' + data + ')',
+ ast = esprima.parse(source, {
+ range: true
+ }),
+ params = [],
+ body;
+
+ if (ast.type !== 'Program' || ast.body.length !== 1 || ast.body[0].type !== 'ExpressionStatement' || ast.body[0].expression.type !== 'ArrowFunctionExpression' && ast.body[0].expression.type !== 'FunctionExpression') {
+ throw new Error('Failed to resolve function');
+ }
+
+ ast.body[0].expression.params.forEach(function (param) {
+ params.push(param.name);
+ });
+ body = ast.body[0].expression.body.range; // Esprima's ranges include the first '{' and the last '}' characters on
+ // function expressions. So cut them out.
+
+ if (ast.body[0].expression.body.type === 'BlockStatement') {
+ /*eslint-disable no-new-func*/
+ return new Function(params, source.slice(body[0] + 1, body[1] - 1));
+ } // ES6 arrow functions can omit the BlockStatement. In that case, just return
+ // the body.
+
+ /*eslint-disable no-new-func*/
+
+
+ return new Function(params, 'return ' + source.slice(body[0], body[1]));
+}
+
+function representJavascriptFunction(object
+/*, style*/
+) {
+ return object.toString();
+}
+
+function isFunction(object) {
+ return Object.prototype.toString.call(object) === '[object Function]';
+}
+
+var _function = new type('tag:yaml.org,2002:js/function', {
+ kind: 'scalar',
+ resolve: resolveJavascriptFunction,
+ construct: constructJavascriptFunction,
+ predicate: isFunction,
+ represent: representJavascriptFunction
+});
+
+var default_full = schema.DEFAULT = new schema({
+ include: [default_safe],
+ explicit: [_undefined, regexp, _function]
+});
+
+/*eslint-disable max-len,no-use-before-define*/
+
+
+var _hasOwnProperty$2 = Object.prototype.hasOwnProperty;
+var CONTEXT_FLOW_IN = 1;
+var CONTEXT_FLOW_OUT = 2;
+var CONTEXT_BLOCK_IN = 3;
+var CONTEXT_BLOCK_OUT = 4;
+var CHOMPING_CLIP = 1;
+var CHOMPING_STRIP = 2;
+var CHOMPING_KEEP = 3;
+var PATTERN_NON_PRINTABLE = /[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/;
+var PATTERN_NON_ASCII_LINE_BREAKS = /[\x85\u2028\u2029]/;
+var PATTERN_FLOW_INDICATORS = /[,\[\]\{\}]/;
+var PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\-]+!)$/i;
+var PATTERN_TAG_URI = /^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;
+
+function _class(obj) {
+ return Object.prototype.toString.call(obj);
+}
+
+function is_EOL(c) {
+ return c === 0x0A
+ /* LF */
+ || c === 0x0D
+ /* CR */
+ ;
+}
+
+function is_WHITE_SPACE(c) {
+ return c === 0x09
+ /* Tab */
+ || c === 0x20
+ /* Space */
+ ;
+}
+
+function is_WS_OR_EOL(c) {
+ return c === 0x09
+ /* Tab */
+ || c === 0x20
+ /* Space */
+ || c === 0x0A
+ /* LF */
+ || c === 0x0D
+ /* CR */
+ ;
+}
+
+function is_FLOW_INDICATOR(c) {
+ return c === 0x2C
+ /* , */
+ || c === 0x5B
+ /* [ */
+ || c === 0x5D
+ /* ] */
+ || c === 0x7B
+ /* { */
+ || c === 0x7D
+ /* } */
+ ;
+}
+
+function fromHexCode(c) {
+ var lc;
+
+ if (0x30
+ /* 0 */
+ <= c && c <= 0x39
+ /* 9 */
+ ) {
+ return c - 0x30;
+ }
+ /*eslint-disable no-bitwise*/
+
+
+ lc = c | 0x20;
+
+ if (0x61
+ /* a */
+ <= lc && lc <= 0x66
+ /* f */
+ ) {
+ return lc - 0x61 + 10;
+ }
+
+ return -1;
+}
+
+function escapedHexLen(c) {
+ if (c === 0x78
+ /* x */
+ ) {
+ return 2;
+ }
+
+ if (c === 0x75
+ /* u */
+ ) {
+ return 4;
+ }
+
+ if (c === 0x55
+ /* U */
+ ) {
+ return 8;
+ }
+
+ return 0;
+}
+
+function fromDecimalCode(c) {
+ if (0x30
+ /* 0 */
+ <= c && c <= 0x39
+ /* 9 */
+ ) {
+ return c - 0x30;
+ }
+
+ return -1;
+}
+
+function simpleEscapeSequence(c) {
+ /* eslint-disable indent */
+ return c === 0x30
+ /* 0 */
+ ? '\x00' : c === 0x61
+ /* a */
+ ? '\x07' : c === 0x62
+ /* b */
+ ? '\x08' : c === 0x74
+ /* t */
+ ? '\x09' : c === 0x09
+ /* Tab */
+ ? '\x09' : c === 0x6E
+ /* n */
+ ? '\x0A' : c === 0x76
+ /* v */
+ ? '\x0B' : c === 0x66
+ /* f */
+ ? '\x0C' : c === 0x72
+ /* r */
+ ? '\x0D' : c === 0x65
+ /* e */
+ ? '\x1B' : c === 0x20
+ /* Space */
+ ? ' ' : c === 0x22
+ /* " */
+ ? '\x22' : c === 0x2F
+ /* / */
+ ? '/' : c === 0x5C
+ /* \ */
+ ? '\x5C' : c === 0x4E
+ /* N */
+ ? '\x85' : c === 0x5F
+ /* _ */
+ ? '\xA0' : c === 0x4C
+ /* L */
+ ? '\u2028' : c === 0x50
+ /* P */
+ ? '\u2029' : '';
+}
+
+function charFromCodepoint(c) {
+ if (c <= 0xFFFF) {
+ return String.fromCharCode(c);
+ } // Encode UTF-16 surrogate pair
+ // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF
+
+
+ return String.fromCharCode((c - 0x010000 >> 10) + 0xD800, (c - 0x010000 & 0x03FF) + 0xDC00);
+}
+
+var simpleEscapeCheck = new Array(256); // integer, for fast access
+
+var simpleEscapeMap = new Array(256);
+
+for (var i = 0; i < 256; i++) {
+ simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;
+ simpleEscapeMap[i] = simpleEscapeSequence(i);
+}
+
+function State(input, options) {
+ this.input = input;
+ this.filename = options['filename'] || null;
+ this.schema = options['schema'] || default_full;
+ this.onWarning = options['onWarning'] || null;
+ this.legacy = options['legacy'] || false;
+ this.json = options['json'] || false;
+ this.listener = options['listener'] || null;
+ this.implicitTypes = this.schema.compiledImplicit;
+ this.typeMap = this.schema.compiledTypeMap;
+ this.length = input.length;
+ this.position = 0;
+ this.line = 0;
+ this.lineStart = 0;
+ this.lineIndent = 0;
+ this.documents = [];
+ /*
+ this.version;
+ this.checkLineBreaks;
+ this.tagMap;
+ this.anchorMap;
+ this.tag;
+ this.anchor;
+ this.kind;
+ this.result;*/
+}
+
+function generateError(state, message) {
+ return new exception(message, new mark(state.filename, state.input, state.position, state.line, state.position - state.lineStart));
+}
+
+function throwError(state, message) {
+ throw generateError(state, message);
+}
+
+function throwWarning(state, message) {
+ if (state.onWarning) {
+ state.onWarning.call(null, generateError(state, message));
+ }
+}
+
+var directiveHandlers = {
+ YAML: function handleYamlDirective(state, name, args) {
+ var match, major, minor;
+
+ if (state.version !== null) {
+ throwError(state, 'duplication of %YAML directive');
+ }
+
+ if (args.length !== 1) {
+ throwError(state, 'YAML directive accepts exactly one argument');
+ }
+
+ match = /^([0-9]+)\.([0-9]+)$/.exec(args[0]);
+
+ if (match === null) {
+ throwError(state, 'ill-formed argument of the YAML directive');
+ }
+
+ major = parseInt(match[1], 10);
+ minor = parseInt(match[2], 10);
+
+ if (major !== 1) {
+ throwError(state, 'unacceptable YAML version of the document');
+ }
+
+ state.version = args[0];
+ state.checkLineBreaks = minor < 2;
+
+ if (minor !== 1 && minor !== 2) {
+ throwWarning(state, 'unsupported YAML version of the document');
+ }
+ },
+ TAG: function handleTagDirective(state, name, args) {
+ var handle, prefix;
+
+ if (args.length !== 2) {
+ throwError(state, 'TAG directive accepts exactly two arguments');
+ }
+
+ handle = args[0];
+ prefix = args[1];
+
+ if (!PATTERN_TAG_HANDLE.test(handle)) {
+ throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');
+ }
+
+ if (_hasOwnProperty$2.call(state.tagMap, handle)) {
+ throwError(state, 'there is a previously declared suffix for "' + handle + '" tag handle');
+ }
+
+ if (!PATTERN_TAG_URI.test(prefix)) {
+ throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');
+ }
+
+ state.tagMap[handle] = prefix;
+ }
+};
+
+function captureSegment(state, start, end, checkJson) {
+ var _position, _length, _character, _result;
+
+ if (start < end) {
+ _result = state.input.slice(start, end);
+
+ if (checkJson) {
+ for (_position = 0, _length = _result.length; _position < _length; _position += 1) {
+ _character = _result.charCodeAt(_position);
+
+ if (!(_character === 0x09 || 0x20 <= _character && _character <= 0x10FFFF)) {
+ throwError(state, 'expected valid JSON character');
+ }
+ }
+ } else if (PATTERN_NON_PRINTABLE.test(_result)) {
+ throwError(state, 'the stream contains non-printable characters');
+ }
+
+ state.result += _result;
+ }
+}
+
+function mergeMappings(state, destination, source, overridableKeys) {
+ var sourceKeys, key, index, quantity;
+
+ if (!common.isObject(source)) {
+ throwError(state, 'cannot merge mappings; the provided source object is unacceptable');
+ }
+
+ sourceKeys = Object.keys(source);
+
+ for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {
+ key = sourceKeys[index];
+
+ if (!_hasOwnProperty$2.call(destination, key)) {
+ destination[key] = source[key];
+ overridableKeys[key] = true;
+ }
+ }
+}
+
+function storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, startLine, startPos) {
+ var index, quantity; // The output is a plain object here, so keys can only be strings.
+ // We need to convert keyNode to a string, but doing so can hang the process
+ // (deeply nested arrays that explode exponentially using aliases).
+
+ if (Array.isArray(keyNode)) {
+ keyNode = Array.prototype.slice.call(keyNode);
+
+ for (index = 0, quantity = keyNode.length; index < quantity; index += 1) {
+ if (Array.isArray(keyNode[index])) {
+ throwError(state, 'nested arrays are not supported inside keys');
+ }
+
+ if (typeof keyNode === 'object' && _class(keyNode[index]) === '[object Object]') {
+ keyNode[index] = '[object Object]';
+ }
+ }
+ } // Avoid code execution in load() via toString property
+ // (still use its own toString for arrays, timestamps,
+ // and whatever user schema extensions happen to have @@toStringTag)
+
+
+ if (typeof keyNode === 'object' && _class(keyNode) === '[object Object]') {
+ keyNode = '[object Object]';
+ }
+
+ keyNode = String(keyNode);
+
+ if (_result === null) {
+ _result = {};
+ }
+
+ if (keyTag === 'tag:yaml.org,2002:merge') {
+ if (Array.isArray(valueNode)) {
+ for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {
+ mergeMappings(state, _result, valueNode[index], overridableKeys);
+ }
+ } else {
+ mergeMappings(state, _result, valueNode, overridableKeys);
+ }
+ } else {
+ if (!state.json && !_hasOwnProperty$2.call(overridableKeys, keyNode) && _hasOwnProperty$2.call(_result, keyNode)) {
+ state.line = startLine || state.line;
+ state.position = startPos || state.position;
+ throwError(state, 'duplicated mapping key');
+ }
+
+ _result[keyNode] = valueNode;
+ delete overridableKeys[keyNode];
+ }
+
+ return _result;
+}
+
+function readLineBreak(state) {
+ var ch;
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch === 0x0A
+ /* LF */
+ ) {
+ state.position++;
+ } else if (ch === 0x0D
+ /* CR */
+ ) {
+ state.position++;
+
+ if (state.input.charCodeAt(state.position) === 0x0A
+ /* LF */
+ ) {
+ state.position++;
+ }
+ } else {
+ throwError(state, 'a line break is expected');
+ }
+
+ state.line += 1;
+ state.lineStart = state.position;
+}
+
+function skipSeparationSpace(state, allowComments, checkIndent) {
+ var lineBreaks = 0,
+ ch = state.input.charCodeAt(state.position);
+
+ while (ch !== 0) {
+ while (is_WHITE_SPACE(ch)) {
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ if (allowComments && ch === 0x23
+ /* # */
+ ) {
+ do {
+ ch = state.input.charCodeAt(++state.position);
+ } while (ch !== 0x0A
+ /* LF */
+ && ch !== 0x0D
+ /* CR */
+ && ch !== 0);
+ }
+
+ if (is_EOL(ch)) {
+ readLineBreak(state);
+ ch = state.input.charCodeAt(state.position);
+ lineBreaks++;
+ state.lineIndent = 0;
+
+ while (ch === 0x20
+ /* Space */
+ ) {
+ state.lineIndent++;
+ ch = state.input.charCodeAt(++state.position);
+ }
+ } else {
+ break;
+ }
+ }
+
+ if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {
+ throwWarning(state, 'deficient indentation');
+ }
+
+ return lineBreaks;
+}
+
+function testDocumentSeparator(state) {
+ var _position = state.position,
+ ch;
+ ch = state.input.charCodeAt(_position); // Condition state.position === state.lineStart is tested
+ // in parent on each call, for efficiency. No needs to test here again.
+
+ if ((ch === 0x2D
+ /* - */
+ || ch === 0x2E
+ /* . */
+ ) && ch === state.input.charCodeAt(_position + 1) && ch === state.input.charCodeAt(_position + 2)) {
+ _position += 3;
+ ch = state.input.charCodeAt(_position);
+
+ if (ch === 0 || is_WS_OR_EOL(ch)) {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+function writeFoldedLines(state, count) {
+ if (count === 1) {
+ state.result += ' ';
+ } else if (count > 1) {
+ state.result += common.repeat('\n', count - 1);
+ }
+}
+
+function readPlainScalar(state, nodeIndent, withinFlowCollection) {
+ var preceding,
+ following,
+ captureStart,
+ captureEnd,
+ hasPendingContent,
+ _line,
+ _lineStart,
+ _lineIndent,
+ _kind = state.kind,
+ _result = state.result,
+ ch;
+
+ ch = state.input.charCodeAt(state.position);
+
+ if (is_WS_OR_EOL(ch) || is_FLOW_INDICATOR(ch) || ch === 0x23
+ /* # */
+ || ch === 0x26
+ /* & */
+ || ch === 0x2A
+ /* * */
+ || ch === 0x21
+ /* ! */
+ || ch === 0x7C
+ /* | */
+ || ch === 0x3E
+ /* > */
+ || ch === 0x27
+ /* ' */
+ || ch === 0x22
+ /* " */
+ || ch === 0x25
+ /* % */
+ || ch === 0x40
+ /* @ */
+ || ch === 0x60
+ /* ` */
+ ) {
+ return false;
+ }
+
+ if (ch === 0x3F
+ /* ? */
+ || ch === 0x2D
+ /* - */
+ ) {
+ following = state.input.charCodeAt(state.position + 1);
+
+ if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {
+ return false;
+ }
+ }
+
+ state.kind = 'scalar';
+ state.result = '';
+ captureStart = captureEnd = state.position;
+ hasPendingContent = false;
+
+ while (ch !== 0) {
+ if (ch === 0x3A
+ /* : */
+ ) {
+ following = state.input.charCodeAt(state.position + 1);
+
+ if (is_WS_OR_EOL(following) || withinFlowCollection && is_FLOW_INDICATOR(following)) {
+ break;
+ }
+ } else if (ch === 0x23
+ /* # */
+ ) {
+ preceding = state.input.charCodeAt(state.position - 1);
+
+ if (is_WS_OR_EOL(preceding)) {
+ break;
+ }
+ } else if (state.position === state.lineStart && testDocumentSeparator(state) || withinFlowCollection && is_FLOW_INDICATOR(ch)) {
+ break;
+ } else if (is_EOL(ch)) {
+ _line = state.line;
+ _lineStart = state.lineStart;
+ _lineIndent = state.lineIndent;
+ skipSeparationSpace(state, false, -1);
+
+ if (state.lineIndent >= nodeIndent) {
+ hasPendingContent = true;
+ ch = state.input.charCodeAt(state.position);
+ continue;
+ } else {
+ state.position = captureEnd;
+ state.line = _line;
+ state.lineStart = _lineStart;
+ state.lineIndent = _lineIndent;
+ break;
+ }
+ }
+
+ if (hasPendingContent) {
+ captureSegment(state, captureStart, captureEnd, false);
+ writeFoldedLines(state, state.line - _line);
+ captureStart = captureEnd = state.position;
+ hasPendingContent = false;
+ }
+
+ if (!is_WHITE_SPACE(ch)) {
+ captureEnd = state.position + 1;
+ }
+
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ captureSegment(state, captureStart, captureEnd, false);
+
+ if (state.result) {
+ return true;
+ }
+
+ state.kind = _kind;
+ state.result = _result;
+ return false;
+}
+
+function readSingleQuotedScalar(state, nodeIndent) {
+ var ch, captureStart, captureEnd;
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch !== 0x27
+ /* ' */
+ ) {
+ return false;
+ }
+
+ state.kind = 'scalar';
+ state.result = '';
+ state.position++;
+ captureStart = captureEnd = state.position;
+
+ while ((ch = state.input.charCodeAt(state.position)) !== 0) {
+ if (ch === 0x27
+ /* ' */
+ ) {
+ captureSegment(state, captureStart, state.position, true);
+ ch = state.input.charCodeAt(++state.position);
+
+ if (ch === 0x27
+ /* ' */
+ ) {
+ captureStart = state.position;
+ state.position++;
+ captureEnd = state.position;
+ } else {
+ return true;
+ }
+ } else if (is_EOL(ch)) {
+ captureSegment(state, captureStart, captureEnd, true);
+ writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
+ captureStart = captureEnd = state.position;
+ } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
+ throwError(state, 'unexpected end of the document within a single quoted scalar');
+ } else {
+ state.position++;
+ captureEnd = state.position;
+ }
+ }
+
+ throwError(state, 'unexpected end of the stream within a single quoted scalar');
+}
+
+function readDoubleQuotedScalar(state, nodeIndent) {
+ var captureStart, captureEnd, hexLength, hexResult, tmp, ch;
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch !== 0x22
+ /* " */
+ ) {
+ return false;
+ }
+
+ state.kind = 'scalar';
+ state.result = '';
+ state.position++;
+ captureStart = captureEnd = state.position;
+
+ while ((ch = state.input.charCodeAt(state.position)) !== 0) {
+ if (ch === 0x22
+ /* " */
+ ) {
+ captureSegment(state, captureStart, state.position, true);
+ state.position++;
+ return true;
+ } else if (ch === 0x5C
+ /* \ */
+ ) {
+ captureSegment(state, captureStart, state.position, true);
+ ch = state.input.charCodeAt(++state.position);
+
+ if (is_EOL(ch)) {
+ skipSeparationSpace(state, false, nodeIndent); // TODO: rework to inline fn with no type cast?
+ } else if (ch < 256 && simpleEscapeCheck[ch]) {
+ state.result += simpleEscapeMap[ch];
+ state.position++;
+ } else if ((tmp = escapedHexLen(ch)) > 0) {
+ hexLength = tmp;
+ hexResult = 0;
+
+ for (; hexLength > 0; hexLength--) {
+ ch = state.input.charCodeAt(++state.position);
+
+ if ((tmp = fromHexCode(ch)) >= 0) {
+ hexResult = (hexResult << 4) + tmp;
+ } else {
+ throwError(state, 'expected hexadecimal character');
+ }
+ }
+
+ state.result += charFromCodepoint(hexResult);
+ state.position++;
+ } else {
+ throwError(state, 'unknown escape sequence');
+ }
+
+ captureStart = captureEnd = state.position;
+ } else if (is_EOL(ch)) {
+ captureSegment(state, captureStart, captureEnd, true);
+ writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));
+ captureStart = captureEnd = state.position;
+ } else if (state.position === state.lineStart && testDocumentSeparator(state)) {
+ throwError(state, 'unexpected end of the document within a double quoted scalar');
+ } else {
+ state.position++;
+ captureEnd = state.position;
+ }
+ }
+
+ throwError(state, 'unexpected end of the stream within a double quoted scalar');
+}
+
+function readFlowCollection(state, nodeIndent) {
+ var readNext = true,
+ _line,
+ _tag = state.tag,
+ _result,
+ _anchor = state.anchor,
+ following,
+ terminator,
+ isPair,
+ isExplicitPair,
+ isMapping,
+ overridableKeys = {},
+ keyNode,
+ keyTag,
+ valueNode,
+ ch;
+
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch === 0x5B
+ /* [ */
+ ) {
+ terminator = 0x5D;
+ /* ] */
+
+ isMapping = false;
+ _result = [];
+ } else if (ch === 0x7B
+ /* { */
+ ) {
+ terminator = 0x7D;
+ /* } */
+
+ isMapping = true;
+ _result = {};
+ } else {
+ return false;
+ }
+
+ if (state.anchor !== null) {
+ state.anchorMap[state.anchor] = _result;
+ }
+
+ ch = state.input.charCodeAt(++state.position);
+
+ while (ch !== 0) {
+ skipSeparationSpace(state, true, nodeIndent);
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch === terminator) {
+ state.position++;
+ state.tag = _tag;
+ state.anchor = _anchor;
+ state.kind = isMapping ? 'mapping' : 'sequence';
+ state.result = _result;
+ return true;
+ } else if (!readNext) {
+ throwError(state, 'missed comma between flow collection entries');
+ }
+
+ keyTag = keyNode = valueNode = null;
+ isPair = isExplicitPair = false;
+
+ if (ch === 0x3F
+ /* ? */
+ ) {
+ following = state.input.charCodeAt(state.position + 1);
+
+ if (is_WS_OR_EOL(following)) {
+ isPair = isExplicitPair = true;
+ state.position++;
+ skipSeparationSpace(state, true, nodeIndent);
+ }
+ }
+
+ _line = state.line;
+ composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
+ keyTag = state.tag;
+ keyNode = state.result;
+ skipSeparationSpace(state, true, nodeIndent);
+ ch = state.input.charCodeAt(state.position);
+
+ if ((isExplicitPair || state.line === _line) && ch === 0x3A
+ /* : */
+ ) {
+ isPair = true;
+ ch = state.input.charCodeAt(++state.position);
+ skipSeparationSpace(state, true, nodeIndent);
+ composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);
+ valueNode = state.result;
+ }
+
+ if (isMapping) {
+ storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);
+ } else if (isPair) {
+ _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));
+ } else {
+ _result.push(keyNode);
+ }
+
+ skipSeparationSpace(state, true, nodeIndent);
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch === 0x2C
+ /* , */
+ ) {
+ readNext = true;
+ ch = state.input.charCodeAt(++state.position);
+ } else {
+ readNext = false;
+ }
+ }
+
+ throwError(state, 'unexpected end of the stream within a flow collection');
+}
+
+function readBlockScalar(state, nodeIndent) {
+ var captureStart,
+ folding,
+ chomping = CHOMPING_CLIP,
+ didReadContent = false,
+ detectedIndent = false,
+ textIndent = nodeIndent,
+ emptyLines = 0,
+ atMoreIndented = false,
+ tmp,
+ ch;
+ ch = state.input.charCodeAt(state.position);
+
+ if (ch === 0x7C
+ /* | */
+ ) {
+ folding = false;
+ } else if (ch === 0x3E
+ /* > */
+ ) {
+ folding = true;
+ } else {
+ return false;
+ }
+
+ state.kind = 'scalar';
+ state.result = '';
+
+ while (ch !== 0) {
+ ch = state.input.charCodeAt(++state.position);
+
+ if (ch === 0x2B
+ /* + */
+ || ch === 0x2D
+ /* - */
+ ) {
+ if (CHOMPING_CLIP === chomping) {
+ chomping = ch === 0x2B
+ /* + */
+ ? CHOMPING_KEEP : CHOMPING_STRIP;
+ } else {
+ throwError(state, 'repeat of a chomping mode identifier');
+ }
+ } else if ((tmp = fromDecimalCode(ch)) >= 0) {
+ if (tmp === 0) {
+ throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');
+ } else if (!detectedIndent) {
+ textIndent = nodeIndent + tmp - 1;
+ detectedIndent = true;
+ } else {
+ throwError(state, 'repeat of an indentation width identifier');
+ }
+ } else {
+ break;
+ }
+ }
+
+ if (is_WHITE_SPACE(ch)) {
+ do {
+ ch = state.input.charCodeAt(++state.position);
+ } while (is_WHITE_SPACE(ch));
+
+ if (ch === 0x23
+ /* # */
+ ) {
+ do {
+ ch = state.input.charCodeAt(++state.position);
+ } while (!is_EOL(ch) && ch !== 0);
+ }
+ }
+
+ while (ch !== 0) {
+ readLineBreak(state);
+ state.lineIndent = 0;
+ ch = state.input.charCodeAt(state.position);
+
+ while ((!detectedIndent || state.lineIndent < textIndent) && ch === 0x20
+ /* Space */
+ ) {
+ state.lineIndent++;
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ if (!detectedIndent && state.lineIndent > textIndent) {
+ textIndent = state.lineIndent;
+ }
+
+ if (is_EOL(ch)) {
+ emptyLines++;
+ continue;
+ } // End of the scalar.
+
+
+ if (state.lineIndent < textIndent) {
+ // Perform the chomping.
+ if (chomping === CHOMPING_KEEP) {
+ state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines);
+ } else if (chomping === CHOMPING_CLIP) {
+ if (didReadContent) {
+ // i.e. only if the scalar is not empty.
+ state.result += '\n';
+ }
+ } // Break this `while` cycle and go to the funciton's epilogue.
+
+
+ break;
+ } // Folded style: use fancy rules to handle line breaks.
+
+
+ if (folding) {
+ // Lines starting with white space characters (more-indented lines) are not folded.
+ if (is_WHITE_SPACE(ch)) {
+ atMoreIndented = true; // except for the first content line (cf. Example 8.1)
+
+ state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines); // End of more-indented block.
+ } else if (atMoreIndented) {
+ atMoreIndented = false;
+ state.result += common.repeat('\n', emptyLines + 1); // Just one line break - perceive as the same line.
+ } else if (emptyLines === 0) {
+ if (didReadContent) {
+ // i.e. only if we have already read some scalar content.
+ state.result += ' ';
+ } // Several line breaks - perceive as different lines.
+
+ } else {
+ state.result += common.repeat('\n', emptyLines);
+ } // Literal style: just add exact number of line breaks between content lines.
+
+ } else {
+ // Keep all line breaks except the header line break.
+ state.result += common.repeat('\n', didReadContent ? 1 + emptyLines : emptyLines);
+ }
+
+ didReadContent = true;
+ detectedIndent = true;
+ emptyLines = 0;
+ captureStart = state.position;
+
+ while (!is_EOL(ch) && ch !== 0) {
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ captureSegment(state, captureStart, state.position, false);
+ }
+
+ return true;
+}
+
+function readBlockSequence(state, nodeIndent) {
+ var _line,
+ _tag = state.tag,
+ _anchor = state.anchor,
+ _result = [],
+ following,
+ detected = false,
+ ch;
+
+ if (state.anchor !== null) {
+ state.anchorMap[state.anchor] = _result;
+ }
+
+ ch = state.input.charCodeAt(state.position);
+
+ while (ch !== 0) {
+ if (ch !== 0x2D
+ /* - */
+ ) {
+ break;
+ }
+
+ following = state.input.charCodeAt(state.position + 1);
+
+ if (!is_WS_OR_EOL(following)) {
+ break;
+ }
+
+ detected = true;
+ state.position++;
+
+ if (skipSeparationSpace(state, true, -1)) {
+ if (state.lineIndent <= nodeIndent) {
+ _result.push(null);
+
+ ch = state.input.charCodeAt(state.position);
+ continue;
+ }
+ }
+
+ _line = state.line;
+ composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);
+
+ _result.push(state.result);
+
+ skipSeparationSpace(state, true, -1);
+ ch = state.input.charCodeAt(state.position);
+
+ if ((state.line === _line || state.lineIndent > nodeIndent) && ch !== 0) {
+ throwError(state, 'bad indentation of a sequence entry');
+ } else if (state.lineIndent < nodeIndent) {
+ break;
+ }
+ }
+
+ if (detected) {
+ state.tag = _tag;
+ state.anchor = _anchor;
+ state.kind = 'sequence';
+ state.result = _result;
+ return true;
+ }
+
+ return false;
+}
+
+function readBlockMapping(state, nodeIndent, flowIndent) {
+ var following,
+ allowCompact,
+ _line,
+ _pos,
+ _tag = state.tag,
+ _anchor = state.anchor,
+ _result = {},
+ overridableKeys = {},
+ keyTag = null,
+ keyNode = null,
+ valueNode = null,
+ atExplicitKey = false,
+ detected = false,
+ ch;
+
+ if (state.anchor !== null) {
+ state.anchorMap[state.anchor] = _result;
+ }
+
+ ch = state.input.charCodeAt(state.position);
+
+ while (ch !== 0) {
+ following = state.input.charCodeAt(state.position + 1);
+ _line = state.line; // Save the current line.
+
+ _pos = state.position; //
+ // Explicit notation case. There are two separate blocks:
+ // first for the key (denoted by "?") and second for the value (denoted by ":")
+ //
+
+ if ((ch === 0x3F
+ /* ? */
+ || ch === 0x3A
+ /* : */
+ ) && is_WS_OR_EOL(following)) {
+ if (ch === 0x3F
+ /* ? */
+ ) {
+ if (atExplicitKey) {
+ storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);
+ keyTag = keyNode = valueNode = null;
+ }
+
+ detected = true;
+ atExplicitKey = true;
+ allowCompact = true;
+ } else if (atExplicitKey) {
+ // i.e. 0x3A/* : */ === character after the explicit key.
+ atExplicitKey = false;
+ allowCompact = true;
+ } else {
+ throwError(state, 'incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line');
+ }
+
+ state.position += 1;
+ ch = following; //
+ // Implicit notation case. Flow-style node as the key first, then ":", and the value.
+ //
+ } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {
+ if (state.line === _line) {
+ ch = state.input.charCodeAt(state.position);
+
+ while (is_WHITE_SPACE(ch)) {
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ if (ch === 0x3A
+ /* : */
+ ) {
+ ch = state.input.charCodeAt(++state.position);
+
+ if (!is_WS_OR_EOL(ch)) {
+ throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');
+ }
+
+ if (atExplicitKey) {
+ storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);
+ keyTag = keyNode = valueNode = null;
+ }
+
+ detected = true;
+ atExplicitKey = false;
+ allowCompact = false;
+ keyTag = state.tag;
+ keyNode = state.result;
+ } else if (detected) {
+ throwError(state, 'can not read an implicit mapping pair; a colon is missed');
+ } else {
+ state.tag = _tag;
+ state.anchor = _anchor;
+ return true; // Keep the result of `composeNode`.
+ }
+ } else if (detected) {
+ throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');
+ } else {
+ state.tag = _tag;
+ state.anchor = _anchor;
+ return true; // Keep the result of `composeNode`.
+ }
+ } else {
+ break; // Reading is done. Go to the epilogue.
+ } //
+ // Common reading code for both explicit and implicit notations.
+ //
+
+
+ if (state.line === _line || state.lineIndent > nodeIndent) {
+ if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {
+ if (atExplicitKey) {
+ keyNode = state.result;
+ } else {
+ valueNode = state.result;
+ }
+ }
+
+ if (!atExplicitKey) {
+ storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode, _line, _pos);
+ keyTag = keyNode = valueNode = null;
+ }
+
+ skipSeparationSpace(state, true, -1);
+ ch = state.input.charCodeAt(state.position);
+ }
+
+ if (state.lineIndent > nodeIndent && ch !== 0) {
+ throwError(state, 'bad indentation of a mapping entry');
+ } else if (state.lineIndent < nodeIndent) {
+ break;
+ }
+ } //
+ // Epilogue.
+ //
+ // Special case: last mapping's node contains only the key in explicit notation.
+
+
+ if (atExplicitKey) {
+ storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);
+ } // Expose the resulting mapping.
+
+
+ if (detected) {
+ state.tag = _tag;
+ state.anchor = _anchor;
+ state.kind = 'mapping';
+ state.result = _result;
+ }
+
+ return detected;
+}
+
+function readTagProperty(state) {
+ var _position,
+ isVerbatim = false,
+ isNamed = false,
+ tagHandle,
+ tagName,
+ ch;
+
+ ch = state.input.charCodeAt(state.position);
+ if (ch !== 0x21
+ /* ! */
+ ) return false;
+
+ if (state.tag !== null) {
+ throwError(state, 'duplication of a tag property');
+ }
+
+ ch = state.input.charCodeAt(++state.position);
+
+ if (ch === 0x3C
+ /* < */
+ ) {
+ isVerbatim = true;
+ ch = state.input.charCodeAt(++state.position);
+ } else if (ch === 0x21
+ /* ! */
+ ) {
+ isNamed = true;
+ tagHandle = '!!';
+ ch = state.input.charCodeAt(++state.position);
+ } else {
+ tagHandle = '!';
+ }
+
+ _position = state.position;
+
+ if (isVerbatim) {
+ do {
+ ch = state.input.charCodeAt(++state.position);
+ } while (ch !== 0 && ch !== 0x3E
+ /* > */
+ );
+
+ if (state.position < state.length) {
+ tagName = state.input.slice(_position, state.position);
+ ch = state.input.charCodeAt(++state.position);
+ } else {
+ throwError(state, 'unexpected end of the stream within a verbatim tag');
+ }
+ } else {
+ while (ch !== 0 && !is_WS_OR_EOL(ch)) {
+ if (ch === 0x21
+ /* ! */
+ ) {
+ if (!isNamed) {
+ tagHandle = state.input.slice(_position - 1, state.position + 1);
+
+ if (!PATTERN_TAG_HANDLE.test(tagHandle)) {
+ throwError(state, 'named tag handle cannot contain such characters');
+ }
+
+ isNamed = true;
+ _position = state.position + 1;
+ } else {
+ throwError(state, 'tag suffix cannot contain exclamation marks');
+ }
+ }
+
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ tagName = state.input.slice(_position, state.position);
+
+ if (PATTERN_FLOW_INDICATORS.test(tagName)) {
+ throwError(state, 'tag suffix cannot contain flow indicator characters');
+ }
+ }
+
+ if (tagName && !PATTERN_TAG_URI.test(tagName)) {
+ throwError(state, 'tag name cannot contain such characters: ' + tagName);
+ }
+
+ if (isVerbatim) {
+ state.tag = tagName;
+ } else if (_hasOwnProperty$2.call(state.tagMap, tagHandle)) {
+ state.tag = state.tagMap[tagHandle] + tagName;
+ } else if (tagHandle === '!') {
+ state.tag = '!' + tagName;
+ } else if (tagHandle === '!!') {
+ state.tag = 'tag:yaml.org,2002:' + tagName;
+ } else {
+ throwError(state, 'undeclared tag handle "' + tagHandle + '"');
+ }
+
+ return true;
+}
+
+function readAnchorProperty(state) {
+ var _position, ch;
+
+ ch = state.input.charCodeAt(state.position);
+ if (ch !== 0x26
+ /* & */
+ ) return false;
+
+ if (state.anchor !== null) {
+ throwError(state, 'duplication of an anchor property');
+ }
+
+ ch = state.input.charCodeAt(++state.position);
+ _position = state.position;
+
+ while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ if (state.position === _position) {
+ throwError(state, 'name of an anchor node must contain at least one character');
+ }
+
+ state.anchor = state.input.slice(_position, state.position);
+ return true;
+}
+
+function readAlias(state) {
+ var _position, alias, ch;
+
+ ch = state.input.charCodeAt(state.position);
+ if (ch !== 0x2A
+ /* * */
+ ) return false;
+ ch = state.input.charCodeAt(++state.position);
+ _position = state.position;
+
+ while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ if (state.position === _position) {
+ throwError(state, 'name of an alias node must contain at least one character');
+ }
+
+ alias = state.input.slice(_position, state.position);
+
+ if (!state.anchorMap.hasOwnProperty(alias)) {
+ throwError(state, 'unidentified alias "' + alias + '"');
+ }
+
+ state.result = state.anchorMap[alias];
+ skipSeparationSpace(state, true, -1);
+ return true;
+}
+
+function composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {
+ var allowBlockStyles,
+ allowBlockScalars,
+ allowBlockCollections,
+ indentStatus = 1,
+ // 1: this>parent, 0: this=parent, -1: this<parent
+ atNewLine = false,
+ hasContent = false,
+ typeIndex,
+ typeQuantity,
+ type,
+ flowIndent,
+ blockIndent;
+
+ if (state.listener !== null) {
+ state.listener('open', state);
+ }
+
+ state.tag = null;
+ state.anchor = null;
+ state.kind = null;
+ state.result = null;
+ allowBlockStyles = allowBlockScalars = allowBlockCollections = CONTEXT_BLOCK_OUT === nodeContext || CONTEXT_BLOCK_IN === nodeContext;
+
+ if (allowToSeek) {
+ if (skipSeparationSpace(state, true, -1)) {
+ atNewLine = true;
+
+ if (state.lineIndent > parentIndent) {
+ indentStatus = 1;
+ } else if (state.lineIndent === parentIndent) {
+ indentStatus = 0;
+ } else if (state.lineIndent < parentIndent) {
+ indentStatus = -1;
+ }
+ }
+ }
+
+ if (indentStatus === 1) {
+ while (readTagProperty(state) || readAnchorProperty(state)) {
+ if (skipSeparationSpace(state, true, -1)) {
+ atNewLine = true;
+ allowBlockCollections = allowBlockStyles;
+
+ if (state.lineIndent > parentIndent) {
+ indentStatus = 1;
+ } else if (state.lineIndent === parentIndent) {
+ indentStatus = 0;
+ } else if (state.lineIndent < parentIndent) {
+ indentStatus = -1;
+ }
+ } else {
+ allowBlockCollections = false;
+ }
+ }
+ }
+
+ if (allowBlockCollections) {
+ allowBlockCollections = atNewLine || allowCompact;
+ }
+
+ if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {
+ if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {
+ flowIndent = parentIndent;
+ } else {
+ flowIndent = parentIndent + 1;
+ }
+
+ blockIndent = state.position - state.lineStart;
+
+ if (indentStatus === 1) {
+ if (allowBlockCollections && (readBlockSequence(state, blockIndent) || readBlockMapping(state, blockIndent, flowIndent)) || readFlowCollection(state, flowIndent)) {
+ hasContent = true;
+ } else {
+ if (allowBlockScalars && readBlockScalar(state, flowIndent) || readSingleQuotedScalar(state, flowIndent) || readDoubleQuotedScalar(state, flowIndent)) {
+ hasContent = true;
+ } else if (readAlias(state)) {
+ hasContent = true;
+
+ if (state.tag !== null || state.anchor !== null) {
+ throwError(state, 'alias node should not have any properties');
+ }
+ } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {
+ hasContent = true;
+
+ if (state.tag === null) {
+ state.tag = '?';
+ }
+ }
+
+ if (state.anchor !== null) {
+ state.anchorMap[state.anchor] = state.result;
+ }
+ }
+ } else if (indentStatus === 0) {
+ // Special case: block sequences are allowed to have same indentation level as the parent.
+ // http://www.yaml.org/spec/1.2/spec.html#id2799784
+ hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);
+ }
+ }
+
+ if (state.tag !== null && state.tag !== '!') {
+ if (state.tag === '?') {
+ for (typeIndex = 0, typeQuantity = state.implicitTypes.length; typeIndex < typeQuantity; typeIndex += 1) {
+ type = state.implicitTypes[typeIndex]; // Implicit resolving is not allowed for non-scalar types, and '?'
+ // non-specific tag is only assigned to plain scalars. So, it isn't
+ // needed to check for 'kind' conformity.
+
+ if (type.resolve(state.result)) {
+ // `state.result` updated in resolver if matched
+ state.result = type.construct(state.result);
+ state.tag = type.tag;
+
+ if (state.anchor !== null) {
+ state.anchorMap[state.anchor] = state.result;
+ }
+
+ break;
+ }
+ }
+ } else if (_hasOwnProperty$2.call(state.typeMap[state.kind || 'fallback'], state.tag)) {
+ type = state.typeMap[state.kind || 'fallback'][state.tag];
+
+ if (state.result !== null && type.kind !== state.kind) {
+ throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be "' + type.kind + '", not "' + state.kind + '"');
+ }
+
+ if (!type.resolve(state.result)) {
+ // `state.result` updated in resolver if matched
+ throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');
+ } else {
+ state.result = type.construct(state.result);
+
+ if (state.anchor !== null) {
+ state.anchorMap[state.anchor] = state.result;
+ }
+ }
+ } else {
+ throwError(state, 'unknown tag !<' + state.tag + '>');
+ }
+ }
+
+ if (state.listener !== null) {
+ state.listener('close', state);
+ }
+
+ return state.tag !== null || state.anchor !== null || hasContent;
+}
+
+function readDocument(state) {
+ var documentStart = state.position,
+ _position,
+ directiveName,
+ directiveArgs,
+ hasDirectives = false,
+ ch;
+
+ state.version = null;
+ state.checkLineBreaks = state.legacy;
+ state.tagMap = {};
+ state.anchorMap = {};
+
+ while ((ch = state.input.charCodeAt(state.position)) !== 0) {
+ skipSeparationSpace(state, true, -1);
+ ch = state.input.charCodeAt(state.position);
+
+ if (state.lineIndent > 0 || ch !== 0x25
+ /* % */
+ ) {
+ break;
+ }
+
+ hasDirectives = true;
+ ch = state.input.charCodeAt(++state.position);
+ _position = state.position;
+
+ while (ch !== 0 && !is_WS_OR_EOL(ch)) {
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ directiveName = state.input.slice(_position, state.position);
+ directiveArgs = [];
+
+ if (directiveName.length < 1) {
+ throwError(state, 'directive name must not be less than one character in length');
+ }
+
+ while (ch !== 0) {
+ while (is_WHITE_SPACE(ch)) {
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ if (ch === 0x23
+ /* # */
+ ) {
+ do {
+ ch = state.input.charCodeAt(++state.position);
+ } while (ch !== 0 && !is_EOL(ch));
+
+ break;
+ }
+
+ if (is_EOL(ch)) break;
+ _position = state.position;
+
+ while (ch !== 0 && !is_WS_OR_EOL(ch)) {
+ ch = state.input.charCodeAt(++state.position);
+ }
+
+ directiveArgs.push(state.input.slice(_position, state.position));
+ }
+
+ if (ch !== 0) readLineBreak(state);
+
+ if (_hasOwnProperty$2.call(directiveHandlers, directiveName)) {
+ directiveHandlers[directiveName](state, directiveName, directiveArgs);
+ } else {
+ throwWarning(state, 'unknown document directive "' + directiveName + '"');
+ }
+ }
+
+ skipSeparationSpace(state, true, -1);
+
+ if (state.lineIndent === 0 && state.input.charCodeAt(state.position) === 0x2D
+ /* - */
+ && state.input.charCodeAt(state.position + 1) === 0x2D
+ /* - */
+ && state.input.charCodeAt(state.position + 2) === 0x2D
+ /* - */
+ ) {
+ state.position += 3;
+ skipSeparationSpace(state, true, -1);
+ } else if (hasDirectives) {
+ throwError(state, 'directives end mark is expected');
+ }
+
+ composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);
+ skipSeparationSpace(state, true, -1);
+
+ if (state.checkLineBreaks && PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {
+ throwWarning(state, 'non-ASCII line breaks are interpreted as content');
+ }
+
+ state.documents.push(state.result);
+
+ if (state.position === state.lineStart && testDocumentSeparator(state)) {
+ if (state.input.charCodeAt(state.position) === 0x2E
+ /* . */
+ ) {
+ state.position += 3;
+ skipSeparationSpace(state, true, -1);
+ }
+
+ return;
+ }
+
+ if (state.position < state.length - 1) {
+ throwError(state, 'end of the stream or a document separator is expected');
+ } else {
+ return;
+ }
+}
+
+function loadDocuments(input, options) {
+ input = String(input);
+ options = options || {};
+
+ if (input.length !== 0) {
+ // Add tailing `\n` if not exists
+ if (input.charCodeAt(input.length - 1) !== 0x0A
+ /* LF */
+ && input.charCodeAt(input.length - 1) !== 0x0D
+ /* CR */
+ ) {
+ input += '\n';
+ } // Strip BOM
+
+
+ if (input.charCodeAt(0) === 0xFEFF) {
+ input = input.slice(1);
+ }
+ }
+
+ var state = new State(input, options); // Use 0 as string terminator. That significantly simplifies bounds check.
+
+ state.input += '\0';
+
+ while (state.input.charCodeAt(state.position) === 0x20
+ /* Space */
+ ) {
+ state.lineIndent += 1;
+ state.position += 1;
+ }
+
+ while (state.position < state.length - 1) {
+ readDocument(state);
+ }
+
+ return state.documents;
+}
+
+function loadAll(input, iterator, options) {
+ var documents = loadDocuments(input, options),
+ index,
+ length;
+
+ if (typeof iterator !== 'function') {
+ return documents;
+ }
+
+ for (index = 0, length = documents.length; index < length; index += 1) {
+ iterator(documents[index]);
+ }
+}
+
+function load(input, options) {
+ var documents = loadDocuments(input, options);
+
+ if (documents.length === 0) {
+ /*eslint-disable no-undefined*/
+ return undefined;
+ } else if (documents.length === 1) {
+ return documents[0];
+ }
+
+ throw new exception('expected a single document in the stream, but found more');
+}
+
+function safeLoadAll(input, output, options) {
+ if (typeof output === 'function') {
+ loadAll(input, output, common.extend({
+ schema: default_safe
+ }, options));
+ } else {
+ return loadAll(input, common.extend({
+ schema: default_safe
+ }, options));
+ }
+}
+
+function safeLoad(input, options) {
+ return load(input, common.extend({
+ schema: default_safe
+ }, options));
+}
+
+var loadAll_1 = loadAll;
+var load_1 = load;
+var safeLoadAll_1 = safeLoadAll;
+var safeLoad_1 = safeLoad;
+var loader = {
+ loadAll: loadAll_1,
+ load: load_1,
+ safeLoadAll: safeLoadAll_1,
+ safeLoad: safeLoad_1
+};
+
+/*eslint-disable no-use-before-define*/
+
+
+var _toString$2 = Object.prototype.toString;
+var _hasOwnProperty$3 = Object.prototype.hasOwnProperty;
+var CHAR_TAB = 0x09;
+/* Tab */
+
+var CHAR_LINE_FEED = 0x0A;
+/* LF */
+
+var CHAR_SPACE = 0x20;
+/* Space */
+
+var CHAR_EXCLAMATION = 0x21;
+/* ! */
+
+var CHAR_DOUBLE_QUOTE = 0x22;
+/* " */
+
+var CHAR_SHARP = 0x23;
+/* # */
+
+var CHAR_PERCENT = 0x25;
+/* % */
+
+var CHAR_AMPERSAND = 0x26;
+/* & */
+
+var CHAR_SINGLE_QUOTE = 0x27;
+/* ' */
+
+var CHAR_ASTERISK = 0x2A;
+/* * */
+
+var CHAR_COMMA = 0x2C;
+/* , */
+
+var CHAR_MINUS = 0x2D;
+/* - */
+
+var CHAR_COLON = 0x3A;
+/* : */
+
+var CHAR_GREATER_THAN = 0x3E;
+/* > */
+
+var CHAR_QUESTION = 0x3F;
+/* ? */
+
+var CHAR_COMMERCIAL_AT = 0x40;
+/* @ */
+
+var CHAR_LEFT_SQUARE_BRACKET = 0x5B;
+/* [ */
+
+var CHAR_RIGHT_SQUARE_BRACKET = 0x5D;
+/* ] */
+
+var CHAR_GRAVE_ACCENT = 0x60;
+/* ` */
+
+var CHAR_LEFT_CURLY_BRACKET = 0x7B;
+/* { */
+
+var CHAR_VERTICAL_LINE = 0x7C;
+/* | */
+
+var CHAR_RIGHT_CURLY_BRACKET = 0x7D;
+/* } */
+
+var ESCAPE_SEQUENCES = {};
+ESCAPE_SEQUENCES[0x00] = '\\0';
+ESCAPE_SEQUENCES[0x07] = '\\a';
+ESCAPE_SEQUENCES[0x08] = '\\b';
+ESCAPE_SEQUENCES[0x09] = '\\t';
+ESCAPE_SEQUENCES[0x0A] = '\\n';
+ESCAPE_SEQUENCES[0x0B] = '\\v';
+ESCAPE_SEQUENCES[0x0C] = '\\f';
+ESCAPE_SEQUENCES[0x0D] = '\\r';
+ESCAPE_SEQUENCES[0x1B] = '\\e';
+ESCAPE_SEQUENCES[0x22] = '\\"';
+ESCAPE_SEQUENCES[0x5C] = '\\\\';
+ESCAPE_SEQUENCES[0x85] = '\\N';
+ESCAPE_SEQUENCES[0xA0] = '\\_';
+ESCAPE_SEQUENCES[0x2028] = '\\L';
+ESCAPE_SEQUENCES[0x2029] = '\\P';
+var DEPRECATED_BOOLEANS_SYNTAX = ['y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON', 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'];
+
+function compileStyleMap(schema, map) {
+ var result, keys, index, length, tag, style, type;
+ if (map === null) return {};
+ result = {};
+ keys = Object.keys(map);
+
+ for (index = 0, length = keys.length; index < length; index += 1) {
+ tag = keys[index];
+ style = String(map[tag]);
+
+ if (tag.slice(0, 2) === '!!') {
+ tag = 'tag:yaml.org,2002:' + tag.slice(2);
+ }
+
+ type = schema.compiledTypeMap['fallback'][tag];
+
+ if (type && _hasOwnProperty$3.call(type.styleAliases, style)) {
+ style = type.styleAliases[style];
+ }
+
+ result[tag] = style;
+ }
+
+ return result;
+}
+
+function encodeHex(character) {
+ var string, handle, length;
+ string = character.toString(16).toUpperCase();
+
+ if (character <= 0xFF) {
+ handle = 'x';
+ length = 2;
+ } else if (character <= 0xFFFF) {
+ handle = 'u';
+ length = 4;
+ } else if (character <= 0xFFFFFFFF) {
+ handle = 'U';
+ length = 8;
+ } else {
+ throw new exception('code point within a string may not be greater than 0xFFFFFFFF');
+ }
+
+ return '\\' + handle + common.repeat('0', length - string.length) + string;
+}
+
+function State$1(options) {
+ this.schema = options['schema'] || default_full;
+ this.indent = Math.max(1, options['indent'] || 2);
+ this.noArrayIndent = options['noArrayIndent'] || false;
+ this.skipInvalid = options['skipInvalid'] || false;
+ this.flowLevel = common.isNothing(options['flowLevel']) ? -1 : options['flowLevel'];
+ this.styleMap = compileStyleMap(this.schema, options['styles'] || null);
+ this.sortKeys = options['sortKeys'] || false;
+ this.lineWidth = options['lineWidth'] || 80;
+ this.noRefs = options['noRefs'] || false;
+ this.noCompatMode = options['noCompatMode'] || false;
+ this.condenseFlow = options['condenseFlow'] || false;
+ this.implicitTypes = this.schema.compiledImplicit;
+ this.explicitTypes = this.schema.compiledExplicit;
+ this.tag = null;
+ this.result = '';
+ this.duplicates = [];
+ this.usedDuplicates = null;
+} // Indents every line in a string. Empty lines (\n only) are not indented.
+
+
+function indentString(string, spaces) {
+ var ind = common.repeat(' ', spaces),
+ position = 0,
+ next = -1,
+ result = '',
+ line,
+ length = string.length;
+
+ while (position < length) {
+ next = string.indexOf('\n', position);
+
+ if (next === -1) {
+ line = string.slice(position);
+ position = length;
+ } else {
+ line = string.slice(position, next + 1);
+ position = next + 1;
+ }
+
+ if (line.length && line !== '\n') result += ind;
+ result += line;
+ }
+
+ return result;
+}
+
+function generateNextLine(state, level) {
+ return '\n' + common.repeat(' ', state.indent * level);
+}
+
+function testImplicitResolving(state, str) {
+ var index, length, type;
+
+ for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {
+ type = state.implicitTypes[index];
+
+ if (type.resolve(str)) {
+ return true;
+ }
+ }
+
+ return false;
+} // [33] s-white ::= s-space | s-tab
+
+
+function isWhitespace(c) {
+ return c === CHAR_SPACE || c === CHAR_TAB;
+} // Returns true if the character can be printed without escaping.
+// From YAML 1.2: "any allowed characters known to be non-printable
+// should also be escaped. [However,] This isn’t mandatory"
+// Derived from nb-char - \t - #x85 - #xA0 - #x2028 - #x2029.
+
+
+function isPrintable(c) {
+ return 0x00020 <= c && c <= 0x00007E || 0x000A1 <= c && c <= 0x00D7FF && c !== 0x2028 && c !== 0x2029 || 0x0E000 <= c && c <= 0x00FFFD && c !== 0xFEFF
+ /* BOM */
+ || 0x10000 <= c && c <= 0x10FFFF;
+} // Simplified test for values allowed after the first character in plain style.
+
+
+function isPlainSafe(c) {
+ // Uses a subset of nb-char - c-flow-indicator - ":" - "#"
+ // where nb-char ::= c-printable - b-char - c-byte-order-mark.
+ return isPrintable(c) && c !== 0xFEFF // - c-flow-indicator
+ && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET // - ":" - "#"
+ && c !== CHAR_COLON && c !== CHAR_SHARP;
+} // Simplified test for values allowed as the first character in plain style.
+
+
+function isPlainSafeFirst(c) {
+ // Uses a subset of ns-char - c-indicator
+ // where ns-char = nb-char - s-white.
+ return isPrintable(c) && c !== 0xFEFF && !isWhitespace(c) // - s-white
+ // - (c-indicator ::=
+ // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”
+ && c !== CHAR_MINUS && c !== CHAR_QUESTION && c !== CHAR_COLON && c !== CHAR_COMMA && c !== CHAR_LEFT_SQUARE_BRACKET && c !== CHAR_RIGHT_SQUARE_BRACKET && c !== CHAR_LEFT_CURLY_BRACKET && c !== CHAR_RIGHT_CURLY_BRACKET // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “"”
+ && c !== CHAR_SHARP && c !== CHAR_AMPERSAND && c !== CHAR_ASTERISK && c !== CHAR_EXCLAMATION && c !== CHAR_VERTICAL_LINE && c !== CHAR_GREATER_THAN && c !== CHAR_SINGLE_QUOTE && c !== CHAR_DOUBLE_QUOTE // | “%” | “@” | “`”)
+ && c !== CHAR_PERCENT && c !== CHAR_COMMERCIAL_AT && c !== CHAR_GRAVE_ACCENT;
+} // Determines whether block indentation indicator is required.
+
+
+function needIndentIndicator(string) {
+ var leadingSpaceRe = /^\n* /;
+ return leadingSpaceRe.test(string);
+}
+
+var STYLE_PLAIN = 1,
+ STYLE_SINGLE = 2,
+ STYLE_LITERAL = 3,
+ STYLE_FOLDED = 4,
+ STYLE_DOUBLE = 5; // Determines which scalar styles are possible and returns the preferred style.
+// lineWidth = -1 => no limit.
+// Pre-conditions: str.length > 0.
+// Post-conditions:
+// STYLE_PLAIN or STYLE_SINGLE => no \n are in the string.
+// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).
+// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).
+
+function chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {
+ var i;
+ var char;
+ var hasLineBreak = false;
+ var hasFoldableLine = false; // only checked if shouldTrackWidth
+
+ var shouldTrackWidth = lineWidth !== -1;
+ var previousLineBreak = -1; // count the first line correctly
+
+ var plain = isPlainSafeFirst(string.charCodeAt(0)) && !isWhitespace(string.charCodeAt(string.length - 1));
+
+ if (singleLineOnly) {
+ // Case: no block styles.
+ // Check for disallowed characters to rule out plain and single.
+ for (i = 0; i < string.length; i++) {
+ char = string.charCodeAt(i);
+
+ if (!isPrintable(char)) {
+ return STYLE_DOUBLE;
+ }
+
+ plain = plain && isPlainSafe(char);
+ }
+ } else {
+ // Case: block styles permitted.
+ for (i = 0; i < string.length; i++) {
+ char = string.charCodeAt(i);
+
+ if (char === CHAR_LINE_FEED) {
+ hasLineBreak = true; // Check if any line can be folded.
+
+ if (shouldTrackWidth) {
+ hasFoldableLine = hasFoldableLine || // Foldable line = too long, and not more-indented.
+ i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== ' ';
+ previousLineBreak = i;
+ }
+ } else if (!isPrintable(char)) {
+ return STYLE_DOUBLE;
+ }
+
+ plain = plain && isPlainSafe(char);
+ } // in case the end is missing a \n
+
+
+ hasFoldableLine = hasFoldableLine || shouldTrackWidth && i - previousLineBreak - 1 > lineWidth && string[previousLineBreak + 1] !== ' ';
+ } // Although every style can represent \n without escaping, prefer block styles
+ // for multiline, since they're more readable and they don't add empty lines.
+ // Also prefer folding a super-long line.
+
+
+ if (!hasLineBreak && !hasFoldableLine) {
+ // Strings interpretable as another type have to be quoted;
+ // e.g. the string 'true' vs. the boolean true.
+ return plain && !testAmbiguousType(string) ? STYLE_PLAIN : STYLE_SINGLE;
+ } // Edge case: block indentation indicator can only have one digit.
+
+
+ if (indentPerLevel > 9 && needIndentIndicator(string)) {
+ return STYLE_DOUBLE;
+ } // At this point we know block styles are valid.
+ // Prefer literal style unless we want to fold.
+
+
+ return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;
+} // Note: line breaking/folding is implemented for only the folded style.
+// NB. We drop the last trailing newline (if any) of a returned block scalar
+// since the dumper adds its own newline. This always works:
+// • No ending newline => unaffected; already using strip "-" chomping.
+// • Ending newline => removed then restored.
+// Importantly, this keeps the "+" chomp indicator from gaining an extra line.
+
+
+function writeScalar(state, string, level, iskey) {
+ state.dump = function () {
+ if (string.length === 0) {
+ return "''";
+ }
+
+ if (!state.noCompatMode && DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {
+ return "'" + string + "'";
+ }
+
+ var indent = state.indent * Math.max(1, level); // no 0-indent scalars
+ // As indentation gets deeper, let the width decrease monotonically
+ // to the lower bound min(state.lineWidth, 40).
+ // Note that this implies
+ // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.
+ // state.lineWidth > 40 + state.indent: width decreases until the lower bound.
+ // This behaves better than a constant minimum width which disallows narrower options,
+ // or an indent threshold which causes the width to suddenly increase.
+
+ var lineWidth = state.lineWidth === -1 ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent); // Without knowing if keys are implicit/explicit, assume implicit for safety.
+
+ var singleLineOnly = iskey // No block styles in flow mode.
+ || state.flowLevel > -1 && level >= state.flowLevel;
+
+ function testAmbiguity(string) {
+ return testImplicitResolving(state, string);
+ }
+
+ switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {
+ case STYLE_PLAIN:
+ return string;
+
+ case STYLE_SINGLE:
+ return "'" + string.replace(/'/g, "''") + "'";
+
+ case STYLE_LITERAL:
+ return '|' + blockHeader(string, state.indent) + dropEndingNewline(indentString(string, indent));
+
+ case STYLE_FOLDED:
+ return '>' + blockHeader(string, state.indent) + dropEndingNewline(indentString(foldString(string, lineWidth), indent));
+
+ case STYLE_DOUBLE:
+ return '"' + escapeString(string) + '"';
+
+ default:
+ throw new exception('impossible error: invalid scalar style');
+ }
+ }();
+} // Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.
+
+
+function blockHeader(string, indentPerLevel) {
+ var indentIndicator = needIndentIndicator(string) ? String(indentPerLevel) : ''; // note the special case: the string '\n' counts as a "trailing" empty line.
+
+ var clip = string[string.length - 1] === '\n';
+ var keep = clip && (string[string.length - 2] === '\n' || string === '\n');
+ var chomp = keep ? '+' : clip ? '' : '-';
+ return indentIndicator + chomp + '\n';
+} // (See the note for writeScalar.)
+
+
+function dropEndingNewline(string) {
+ return string[string.length - 1] === '\n' ? string.slice(0, -1) : string;
+} // Note: a long line without a suitable break point will exceed the width limit.
+// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.
+
+
+function foldString(string, width) {
+ // In folded style, $k$ consecutive newlines output as $k+1$ newlines—
+ // unless they're before or after a more-indented line, or at the very
+ // beginning or end, in which case $k$ maps to $k$.
+ // Therefore, parse each chunk as newline(s) followed by a content line.
+ var lineRe = /(\n+)([^\n]*)/g; // first line (possibly an empty line)
+
+ var result = function () {
+ var nextLF = string.indexOf('\n');
+ nextLF = nextLF !== -1 ? nextLF : string.length;
+ lineRe.lastIndex = nextLF;
+ return foldLine(string.slice(0, nextLF), width);
+ }(); // If we haven't reached the first content line yet, don't add an extra \n.
+
+
+ var prevMoreIndented = string[0] === '\n' || string[0] === ' ';
+ var moreIndented; // rest of the lines
+
+ var match;
+
+ while (match = lineRe.exec(string)) {
+ var prefix = match[1],
+ line = match[2];
+ moreIndented = line[0] === ' ';
+ result += prefix + (!prevMoreIndented && !moreIndented && line !== '' ? '\n' : '') + foldLine(line, width);
+ prevMoreIndented = moreIndented;
+ }
+
+ return result;
+} // Greedy line breaking.
+// Picks the longest line under the limit each time,
+// otherwise settles for the shortest line over the limit.
+// NB. More-indented lines *cannot* be folded, as that would add an extra \n.
+
+
+function foldLine(line, width) {
+ if (line === '' || line[0] === ' ') return line; // Since a more-indented line adds a \n, breaks can't be followed by a space.
+
+ var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.
+
+ var match; // start is an inclusive index. end, curr, and next are exclusive.
+
+ var start = 0,
+ end,
+ curr = 0,
+ next = 0;
+ var result = ''; // Invariants: 0 <= start <= length-1.
+ // 0 <= curr <= next <= max(0, length-2). curr - start <= width.
+ // Inside the loop:
+ // A match implies length >= 2, so curr and next are <= length-2.
+
+ while (match = breakRe.exec(line)) {
+ next = match.index; // maintain invariant: curr - start <= width
+
+ if (next - start > width) {
+ end = curr > start ? curr : next; // derive end <= length-2
+
+ result += '\n' + line.slice(start, end); // skip the space that was output as \n
+
+ start = end + 1; // derive start <= length-1
+ }
+
+ curr = next;
+ } // By the invariants, start <= length-1, so there is something left over.
+ // It is either the whole string or a part starting from non-whitespace.
+
+
+ result += '\n'; // Insert a break if the remainder is too long and there is a break available.
+
+ if (line.length - start > width && curr > start) {
+ result += line.slice(start, curr) + '\n' + line.slice(curr + 1);
+ } else {
+ result += line.slice(start);
+ }
+
+ return result.slice(1); // drop extra \n joiner
+} // Escapes a double-quoted string.
+
+
+function escapeString(string) {
+ var result = '';
+ var char, nextChar;
+ var escapeSeq;
+
+ for (var i = 0; i < string.length; i++) {
+ char = string.charCodeAt(i); // Check for surrogate pairs (reference Unicode 3.0 section "3.7 Surrogates").
+
+ if (char >= 0xD800 && char <= 0xDBFF
+ /* high surrogate */
+ ) {
+ nextChar = string.charCodeAt(i + 1);
+
+ if (nextChar >= 0xDC00 && nextChar <= 0xDFFF
+ /* low surrogate */
+ ) {
+ // Combine the surrogate pair and store it escaped.
+ result += encodeHex((char - 0xD800) * 0x400 + nextChar - 0xDC00 + 0x10000); // Advance index one extra since we already used that char here.
+
+ i++;
+ continue;
+ }
+ }
+
+ escapeSeq = ESCAPE_SEQUENCES[char];
+ result += !escapeSeq && isPrintable(char) ? string[i] : escapeSeq || encodeHex(char);
+ }
+
+ return result;
+}
+
+function writeFlowSequence(state, level, object) {
+ var _result = '',
+ _tag = state.tag,
+ index,
+ length;
+
+ for (index = 0, length = object.length; index < length; index += 1) {
+ // Write only valid elements.
+ if (writeNode(state, level, object[index], false, false)) {
+ if (index !== 0) _result += ',' + (!state.condenseFlow ? ' ' : '');
+ _result += state.dump;
+ }
+ }
+
+ state.tag = _tag;
+ state.dump = '[' + _result + ']';
+}
+
+function writeBlockSequence(state, level, object, compact) {
+ var _result = '',
+ _tag = state.tag,
+ index,
+ length;
+
+ for (index = 0, length = object.length; index < length; index += 1) {
+ // Write only valid elements.
+ if (writeNode(state, level + 1, object[index], true, true)) {
+ if (!compact || index !== 0) {
+ _result += generateNextLine(state, level);
+ }
+
+ if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
+ _result += '-';
+ } else {
+ _result += '- ';
+ }
+
+ _result += state.dump;
+ }
+ }
+
+ state.tag = _tag;
+ state.dump = _result || '[]'; // Empty sequence if no valid values.
+}
+
+function writeFlowMapping(state, level, object) {
+ var _result = '',
+ _tag = state.tag,
+ objectKeyList = Object.keys(object),
+ index,
+ length,
+ objectKey,
+ objectValue,
+ pairBuffer;
+
+ for (index = 0, length = objectKeyList.length; index < length; index += 1) {
+ pairBuffer = state.condenseFlow ? '"' : '';
+ if (index !== 0) pairBuffer += ', ';
+ objectKey = objectKeyList[index];
+ objectValue = object[objectKey];
+
+ if (!writeNode(state, level, objectKey, false, false)) {
+ continue; // Skip this pair because of invalid key;
+ }
+
+ if (state.dump.length > 1024) pairBuffer += '? ';
+ pairBuffer += state.dump + (state.condenseFlow ? '"' : '') + ':' + (state.condenseFlow ? '' : ' ');
+
+ if (!writeNode(state, level, objectValue, false, false)) {
+ continue; // Skip this pair because of invalid value.
+ }
+
+ pairBuffer += state.dump; // Both key and value are valid.
+
+ _result += pairBuffer;
+ }
+
+ state.tag = _tag;
+ state.dump = '{' + _result + '}';
+}
+
+function writeBlockMapping(state, level, object, compact) {
+ var _result = '',
+ _tag = state.tag,
+ objectKeyList = Object.keys(object),
+ index,
+ length,
+ objectKey,
+ objectValue,
+ explicitPair,
+ pairBuffer; // Allow sorting keys so that the output file is deterministic
+
+ if (state.sortKeys === true) {
+ // Default sorting
+ objectKeyList.sort();
+ } else if (typeof state.sortKeys === 'function') {
+ // Custom sort function
+ objectKeyList.sort(state.sortKeys);
+ } else if (state.sortKeys) {
+ // Something is wrong
+ throw new exception('sortKeys must be a boolean or a function');
+ }
+
+ for (index = 0, length = objectKeyList.length; index < length; index += 1) {
+ pairBuffer = '';
+
+ if (!compact || index !== 0) {
+ pairBuffer += generateNextLine(state, level);
+ }
+
+ objectKey = objectKeyList[index];
+ objectValue = object[objectKey];
+
+ if (!writeNode(state, level + 1, objectKey, true, true, true)) {
+ continue; // Skip this pair because of invalid key.
+ }
+
+ explicitPair = state.tag !== null && state.tag !== '?' || state.dump && state.dump.length > 1024;
+
+ if (explicitPair) {
+ if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
+ pairBuffer += '?';
+ } else {
+ pairBuffer += '? ';
+ }
+ }
+
+ pairBuffer += state.dump;
+
+ if (explicitPair) {
+ pairBuffer += generateNextLine(state, level);
+ }
+
+ if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {
+ continue; // Skip this pair because of invalid value.
+ }
+
+ if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {
+ pairBuffer += ':';
+ } else {
+ pairBuffer += ': ';
+ }
+
+ pairBuffer += state.dump; // Both key and value are valid.
+
+ _result += pairBuffer;
+ }
+
+ state.tag = _tag;
+ state.dump = _result || '{}'; // Empty mapping if no valid pairs.
+}
+
+function detectType(state, object, explicit) {
+ var _result, typeList, index, length, type, style;
+
+ typeList = explicit ? state.explicitTypes : state.implicitTypes;
+
+ for (index = 0, length = typeList.length; index < length; index += 1) {
+ type = typeList[index];
+
+ if ((type.instanceOf || type.predicate) && (!type.instanceOf || typeof object === 'object' && object instanceof type.instanceOf) && (!type.predicate || type.predicate(object))) {
+ state.tag = explicit ? type.tag : '?';
+
+ if (type.represent) {
+ style = state.styleMap[type.tag] || type.defaultStyle;
+
+ if (_toString$2.call(type.represent) === '[object Function]') {
+ _result = type.represent(object, style);
+ } else if (_hasOwnProperty$3.call(type.represent, style)) {
+ _result = type.represent[style](object, style);
+ } else {
+ throw new exception('!<' + type.tag + '> tag resolver accepts not "' + style + '" style');
+ }
+
+ state.dump = _result;
+ }
+
+ return true;
+ }
+ }
+
+ return false;
+} // Serializes `object` and writes it to global `result`.
+// Returns true on success, or false on invalid object.
+//
+
+
+function writeNode(state, level, object, block, compact, iskey) {
+ state.tag = null;
+ state.dump = object;
+
+ if (!detectType(state, object, false)) {
+ detectType(state, object, true);
+ }
+
+ var type = _toString$2.call(state.dump);
+
+ if (block) {
+ block = state.flowLevel < 0 || state.flowLevel > level;
+ }
+
+ var objectOrArray = type === '[object Object]' || type === '[object Array]',
+ duplicateIndex,
+ duplicate;
+
+ if (objectOrArray) {
+ duplicateIndex = state.duplicates.indexOf(object);
+ duplicate = duplicateIndex !== -1;
+ }
+
+ if (state.tag !== null && state.tag !== '?' || duplicate || state.indent !== 2 && level > 0) {
+ compact = false;
+ }
+
+ if (duplicate && state.usedDuplicates[duplicateIndex]) {
+ state.dump = '*ref_' + duplicateIndex;
+ } else {
+ if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {
+ state.usedDuplicates[duplicateIndex] = true;
+ }
+
+ if (type === '[object Object]') {
+ if (block && Object.keys(state.dump).length !== 0) {
+ writeBlockMapping(state, level, state.dump, compact);
+
+ if (duplicate) {
+ state.dump = '&ref_' + duplicateIndex + state.dump;
+ }
+ } else {
+ writeFlowMapping(state, level, state.dump);
+
+ if (duplicate) {
+ state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;
+ }
+ }
+ } else if (type === '[object Array]') {
+ var arrayLevel = state.noArrayIndent && level > 0 ? level - 1 : level;
+
+ if (block && state.dump.length !== 0) {
+ writeBlockSequence(state, arrayLevel, state.dump, compact);
+
+ if (duplicate) {
+ state.dump = '&ref_' + duplicateIndex + state.dump;
+ }
+ } else {
+ writeFlowSequence(state, arrayLevel, state.dump);
+
+ if (duplicate) {
+ state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;
+ }
+ }
+ } else if (type === '[object String]') {
+ if (state.tag !== '?') {
+ writeScalar(state, state.dump, level, iskey);
+ }
+ } else {
+ if (state.skipInvalid) return false;
+ throw new exception('unacceptable kind of an object to dump ' + type);
+ }
+
+ if (state.tag !== null && state.tag !== '?') {
+ state.dump = '!<' + state.tag + '> ' + state.dump;
+ }
+ }
+
+ return true;
+}
+
+function getDuplicateReferences(object, state) {
+ var objects = [],
+ duplicatesIndexes = [],
+ index,
+ length;
+ inspectNode(object, objects, duplicatesIndexes);
+
+ for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {
+ state.duplicates.push(objects[duplicatesIndexes[index]]);
+ }
+
+ state.usedDuplicates = new Array(length);
+}
+
+function inspectNode(object, objects, duplicatesIndexes) {
+ var objectKeyList, index, length;
+
+ if (object !== null && typeof object === 'object') {
+ index = objects.indexOf(object);
+
+ if (index !== -1) {
+ if (duplicatesIndexes.indexOf(index) === -1) {
+ duplicatesIndexes.push(index);
+ }
+ } else {
+ objects.push(object);
+
+ if (Array.isArray(object)) {
+ for (index = 0, length = object.length; index < length; index += 1) {
+ inspectNode(object[index], objects, duplicatesIndexes);
+ }
+ } else {
+ objectKeyList = Object.keys(object);
+
+ for (index = 0, length = objectKeyList.length; index < length; index += 1) {
+ inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);
+ }
+ }
+ }
+ }
+}
+
+function dump(input, options) {
+ options = options || {};
+ var state = new State$1(options);
+ if (!state.noRefs) getDuplicateReferences(input, state);
+ if (writeNode(state, 0, input, true, true)) return state.dump + '\n';
+ return '';
+}
+
+function safeDump(input, options) {
+ return dump(input, common.extend({
+ schema: default_safe
+ }, options));
+}
+
+var dump_1 = dump;
+var safeDump_1 = safeDump;
+var dumper = {
+ dump: dump_1,
+ safeDump: safeDump_1
+};
+
+function deprecated(name) {
+ return function () {
+ throw new Error('Function ' + name + ' is deprecated and cannot be used.');
+ };
+}
+
+var Type$1 = type;
+var Schema$1 = schema;
+var FAILSAFE_SCHEMA = failsafe;
+var JSON_SCHEMA = json;
+var CORE_SCHEMA = core;
+var DEFAULT_SAFE_SCHEMA = default_safe;
+var DEFAULT_FULL_SCHEMA = default_full;
+var load$1 = loader.load;
+var loadAll$1 = loader.loadAll;
+var safeLoad$1 = loader.safeLoad;
+var safeLoadAll$1 = loader.safeLoadAll;
+var dump$1 = dumper.dump;
+var safeDump$1 = dumper.safeDump;
+var YAMLException$1 = exception; // Deprecated schema names from JS-YAML 2.0.x
+
+var MINIMAL_SCHEMA = failsafe;
+var SAFE_SCHEMA = default_safe;
+var DEFAULT_SCHEMA = default_full; // Deprecated functions from JS-YAML 1.x.x
+
+var scan = deprecated('scan');
+var parse = deprecated('parse');
+var compose = deprecated('compose');
+var addConstructor = deprecated('addConstructor');
+var jsYaml = {
+ Type: Type$1,
+ Schema: Schema$1,
+ FAILSAFE_SCHEMA: FAILSAFE_SCHEMA,
+ JSON_SCHEMA: JSON_SCHEMA,
+ CORE_SCHEMA: CORE_SCHEMA,
+ DEFAULT_SAFE_SCHEMA: DEFAULT_SAFE_SCHEMA,
+ DEFAULT_FULL_SCHEMA: DEFAULT_FULL_SCHEMA,
+ load: load$1,
+ loadAll: loadAll$1,
+ safeLoad: safeLoad$1,
+ safeLoadAll: safeLoadAll$1,
+ dump: dump$1,
+ safeDump: safeDump$1,
+ YAMLException: YAMLException$1,
+ MINIMAL_SCHEMA: MINIMAL_SCHEMA,
+ SAFE_SCHEMA: SAFE_SCHEMA,
+ DEFAULT_SCHEMA: DEFAULT_SCHEMA,
+ scan: scan,
+ parse: parse,
+ compose: compose,
+ addConstructor: addConstructor
+};
+
+var jsYaml$1 = jsYaml;
+
+var resolveFrom = function resolveFrom(fromDir, moduleId, silent) {
+ if (typeof fromDir !== 'string') {
+ throw new TypeError(`Expected \`fromDir\` to be of type \`string\`, got \`${typeof fromDir}\``);
+ }
+
+ if (typeof moduleId !== 'string') {
+ throw new TypeError(`Expected \`moduleId\` to be of type \`string\`, got \`${typeof moduleId}\``);
+ }
+
+ fromDir = path.resolve(fromDir);
+ var fromFile = path.join(fromDir, 'noop.js');
+
+ var resolveFileName = function resolveFileName() {
+ return module$1._resolveFilename(moduleId, {
+ id: fromFile,
+ filename: fromFile,
+ paths: module$1._nodeModulePaths(fromDir)
+ });
+ };
+
+ if (silent) {
+ try {
+ return resolveFileName();
+ } catch (err) {
+ return null;
+ }
+ }
+
+ return resolveFileName();
+};
+
+var resolveFrom_1 = function resolveFrom_1(fromDir, moduleId) {
+ return resolveFrom(fromDir, moduleId);
+};
+
+var silent = function silent(fromDir, moduleId) {
+ return resolveFrom(fromDir, moduleId, true);
+};
+resolveFrom_1.silent = silent;
+
+var callsites = function callsites() {
+ var _ = Error.prepareStackTrace;
+
+ Error.prepareStackTrace = function (_, stack) {
+ return stack;
+ };
+
+ var stack = new Error().stack.slice(1);
+ Error.prepareStackTrace = _;
+ return stack;
+};
+
+var callerCallsite = function callerCallsite() {
+ var c = callsites();
+ var caller;
+
+ for (var i = 0; i < c.length; i++) {
+ var hasReceiver = c[i].getTypeName() !== null;
+
+ if (hasReceiver) {
+ caller = i;
+ break;
+ }
+ }
+
+ return c[caller];
+};
+
+var callerPath = function callerPath() {
+ return callerCallsite().getFileName();
+};
+
+var importFresh = function importFresh(moduleId) {
+ if (typeof moduleId !== 'string') {
+ throw new TypeError('Expected a string');
+ }
+
+ var filePath = resolveFrom_1(path.dirname(callerPath()), moduleId); // Delete itself from module parent
+
+ if (require.cache[filePath] && require.cache[filePath].parent) {
+ var i = require.cache[filePath].parent.children.length;
+
+ while (i--) {
+ if (require.cache[filePath].parent.children[i].id === filePath) {
+ require.cache[filePath].parent.children.splice(i, 1);
+ }
+ }
+ } // Delete module from cache
+
+
+ delete require.cache[filePath]; // Return fresh module
+
+ return require(filePath);
+};
+
+function loadJs(filepath) {
+ var result = importFresh(filepath);
+ return result;
+}
+
+function loadJson(filepath, content) {
+ try {
+ return parseJson$1(content);
+ } catch (err) {
+ err.message = `JSON Error in ${filepath}:\n${err.message}`;
+ throw err;
+ }
+}
+
+function loadYaml(filepath, content) {
+ return jsYaml$1.safeLoad(content, {
+ filename: filepath
+ });
+}
+
+var loaders = {
+ loadJs,
+ loadJson,
+ loadYaml
+};
+
+function readFile(filepath, options) {
+ options = options || {};
+ var throwNotFound = options.throwNotFound || false;
+ return new Promise(function (resolve, reject) {
+ fs.readFile(filepath, 'utf8', function (err, content) {
+ if (err && err.code === 'ENOENT' && !throwNotFound) {
+ return resolve(null);
+ }
+
+ if (err) return reject(err);
+ resolve(content);
+ });
+ });
+}
+
+readFile.sync = function readFileSync(filepath, options) {
+ options = options || {};
+ var throwNotFound = options.throwNotFound || false;
+
+ try {
+ return fs.readFileSync(filepath, 'utf8');
+ } catch (err) {
+ if (err.code === 'ENOENT' && !throwNotFound) {
+ return null;
+ }
+
+ throw err;
+ }
+};
+
+var readFile_1 = readFile;
+
+//
+
+function cacheWrapper(cache, key, fn) {
+ if (!cache) {
+ return fn();
+ }
+
+ var cached = cache.get(key);
+
+ if (cached !== undefined) {
+ return cached;
+ }
+
+ var result = fn();
+ cache.set(key, result);
+ return result;
+}
+
+var cacheWrapper_1 = cacheWrapper;
+
+/**
+ * async
+ */
+
+
+function isDirectory(filepath, cb) {
+ if (typeof cb !== 'function') {
+ throw new Error('expected a callback function');
+ }
+
+ if (typeof filepath !== 'string') {
+ cb(new Error('expected filepath to be a string'));
+ return;
+ }
+
+ fs.stat(filepath, function (err, stats) {
+ if (err) {
+ if (err.code === 'ENOENT') {
+ cb(null, false);
+ return;
+ }
+
+ cb(err);
+ return;
+ }
+
+ cb(null, stats.isDirectory());
+ });
+}
+/**
+ * sync
+ */
+
+
+isDirectory.sync = function isDirectorySync(filepath) {
+ if (typeof filepath !== 'string') {
+ throw new Error('expected filepath to be a string');
+ }
+
+ try {
+ var stat = fs.statSync(filepath);
+ return stat.isDirectory();
+ } catch (err) {
+ if (err.code === 'ENOENT') {
+ return false;
+ } else {
+ throw err;
+ }
+ }
+
+ return false;
+};
+/**
+ * Expose `isDirectory`
+ */
+
+
+var isDirectory_1 = isDirectory;
+
+function getDirectory(filepath) {
+ return new Promise(function (resolve, reject) {
+ return isDirectory_1(filepath, function (err, filepathIsDirectory) {
+ if (err) {
+ return reject(err);
+ }
+
+ return resolve(filepathIsDirectory ? filepath : path.dirname(filepath));
+ });
+ });
+}
+
+getDirectory.sync = function getDirectorySync(filepath) {
+ return isDirectory_1.sync(filepath) ? filepath : path.dirname(filepath);
+};
+
+var getDirectory_1 = getDirectory;
+
+//
+// strings or arrays of strings. Property names that are found on the source
+// object are used directly (even if they include a period).
+// Nested property names that include periods, within a path, are only
+// understood in array paths.
+
+function getPropertyByPath(source, path) {
+ if (typeof path === 'string' && source.hasOwnProperty(path)) {
+ return source[path];
+ }
+
+ var parsedPath = typeof path === 'string' ? path.split('.') : path;
+ return parsedPath.reduce(function (previous, key) {
+ if (previous === undefined) {
+ return previous;
+ }
+
+ return previous[key];
+ }, source);
+}
+
+var getPropertyByPath_1 = getPropertyByPath;
+
+var MODE_SYNC = 'sync'; // An object value represents a config object.
+// null represents that the loader did not find anything relevant.
+// undefined represents that the loader found something relevant
+// but it was empty.
+
+var Explorer =
+/*#__PURE__*/
+function () {
+ function Explorer(options) {
+ _classCallCheck(this, Explorer);
+
+ this.loadCache = options.cache ? new Map() : null;
+ this.loadSyncCache = options.cache ? new Map() : null;
+ this.searchCache = options.cache ? new Map() : null;
+ this.searchSyncCache = options.cache ? new Map() : null;
+ this.config = options;
+ this.validateConfig();
+ }
+
+ _createClass(Explorer, [{
+ key: "clearLoadCache",
+ value: function clearLoadCache() {
+ if (this.loadCache) {
+ this.loadCache.clear();
+ }
+
+ if (this.loadSyncCache) {
+ this.loadSyncCache.clear();
+ }
+ }
+ }, {
+ key: "clearSearchCache",
+ value: function clearSearchCache() {
+ if (this.searchCache) {
+ this.searchCache.clear();
+ }
+
+ if (this.searchSyncCache) {
+ this.searchSyncCache.clear();
+ }
+ }
+ }, {
+ key: "clearCaches",
+ value: function clearCaches() {
+ this.clearLoadCache();
+ this.clearSearchCache();
+ }
+ }, {
+ key: "validateConfig",
+ value: function validateConfig() {
+ var config = this.config;
+ config.searchPlaces.forEach(function (place) {
+ var loaderKey = path.extname(place) || 'noExt';
+ var loader = config.loaders[loaderKey];
+
+ if (!loader) {
+ throw new Error(`No loader specified for ${getExtensionDescription(place)}, so searchPlaces item "${place}" is invalid`);
+ }
+ });
+ }
+ }, {
+ key: "search",
+ value: function search(searchFrom) {
+ var _this = this;
+
+ searchFrom = searchFrom || process.cwd();
+ return getDirectory_1(searchFrom).then(function (dir) {
+ return _this.searchFromDirectory(dir);
+ });
+ }
+ }, {
+ key: "searchFromDirectory",
+ value: function searchFromDirectory(dir) {
+ var _this2 = this;
+
+ var absoluteDir = path.resolve(process.cwd(), dir);
+
+ var run = function run() {
+ return _this2.searchDirectory(absoluteDir).then(function (result) {
+ var nextDir = _this2.nextDirectoryToSearch(absoluteDir, result);
+
+ if (nextDir) {
+ return _this2.searchFromDirectory(nextDir);
+ }
+
+ return _this2.config.transform(result);
+ });
+ };
+
+ if (this.searchCache) {
+ return cacheWrapper_1(this.searchCache, absoluteDir, run);
+ }
+
+ return run();
+ }
+ }, {
+ key: "searchSync",
+ value: function searchSync(searchFrom) {
+ searchFrom = searchFrom || process.cwd();
+ var dir = getDirectory_1.sync(searchFrom);
+ return this.searchFromDirectorySync(dir);
+ }
+ }, {
+ key: "searchFromDirectorySync",
+ value: function searchFromDirectorySync(dir) {
+ var _this3 = this;
+
+ var absoluteDir = path.resolve(process.cwd(), dir);
+
+ var run = function run() {
+ var result = _this3.searchDirectorySync(absoluteDir);
+
+ var nextDir = _this3.nextDirectoryToSearch(absoluteDir, result);
+
+ if (nextDir) {
+ return _this3.searchFromDirectorySync(nextDir);
+ }
+
+ return _this3.config.transform(result);
+ };
+
+ if (this.searchSyncCache) {
+ return cacheWrapper_1(this.searchSyncCache, absoluteDir, run);
+ }
+
+ return run();
+ }
+ }, {
+ key: "searchDirectory",
+ value: function searchDirectory(dir) {
+ var _this4 = this;
+
+ return this.config.searchPlaces.reduce(function (prevResultPromise, place) {
+ return prevResultPromise.then(function (prevResult) {
+ if (_this4.shouldSearchStopWithResult(prevResult)) {
+ return prevResult;
+ }
+
+ return _this4.loadSearchPlace(dir, place);
+ });
+ }, Promise.resolve(null));
+ }
+ }, {
+ key: "searchDirectorySync",
+ value: function searchDirectorySync(dir) {
+ var result = null;
+ var _iteratorNormalCompletion = true;
+ var _didIteratorError = false;
+ var _iteratorError = undefined;
+
+ try {
+ for (var _iterator = this.config.searchPlaces[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var place = _step.value;
+ result = this.loadSearchPlaceSync(dir, place);
+ if (this.shouldSearchStopWithResult(result)) break;
+ }
+ } catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+ } finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+ }
+
+ return result;
+ }
+ }, {
+ key: "shouldSearchStopWithResult",
+ value: function shouldSearchStopWithResult(result) {
+ if (result === null) return false;
+ if (result.isEmpty && this.config.ignoreEmptySearchPlaces) return false;
+ return true;
+ }
+ }, {
+ key: "loadSearchPlace",
+ value: function loadSearchPlace(dir, place) {
+ var _this5 = this;
+
+ var filepath = path.join(dir, place);
+ return readFile_1(filepath).then(function (content) {
+ return _this5.createCosmiconfigResult(filepath, content);
+ });
+ }
+ }, {
+ key: "loadSearchPlaceSync",
+ value: function loadSearchPlaceSync(dir, place) {
+ var filepath = path.join(dir, place);
+ var content = readFile_1.sync(filepath);
+ return this.createCosmiconfigResultSync(filepath, content);
+ }
+ }, {
+ key: "nextDirectoryToSearch",
+ value: function nextDirectoryToSearch(currentDir, currentResult) {
+ if (this.shouldSearchStopWithResult(currentResult)) {
+ return null;
+ }
+
+ var nextDir = nextDirUp(currentDir);
+
+ if (nextDir === currentDir || currentDir === this.config.stopDir) {
+ return null;
+ }
+
+ return nextDir;
+ }
+ }, {
+ key: "loadPackageProp",
+ value: function loadPackageProp(filepath, content) {
+ var parsedContent = loaders.loadJson(filepath, content);
+ var packagePropValue = getPropertyByPath_1(parsedContent, this.config.packageProp);
+ return packagePropValue || null;
+ }
+ }, {
+ key: "getLoaderEntryForFile",
+ value: function getLoaderEntryForFile(filepath) {
+ if (path.basename(filepath) === 'package.json') {
+ var loader = this.loadPackageProp.bind(this);
+ return {
+ sync: loader,
+ async: loader
+ };
+ }
+
+ var loaderKey = path.extname(filepath) || 'noExt';
+ return this.config.loaders[loaderKey] || {};
+ }
+ }, {
+ key: "getSyncLoaderForFile",
+ value: function getSyncLoaderForFile(filepath) {
+ var entry = this.getLoaderEntryForFile(filepath);
+
+ if (!entry.sync) {
+ throw new Error(`No sync loader specified for ${getExtensionDescription(filepath)}`);
+ }
+
+ return entry.sync;
+ }
+ }, {
+ key: "getAsyncLoaderForFile",
+ value: function getAsyncLoaderForFile(filepath) {
+ var entry = this.getLoaderEntryForFile(filepath);
+ var loader = entry.async || entry.sync;
+
+ if (!loader) {
+ throw new Error(`No async loader specified for ${getExtensionDescription(filepath)}`);
+ }
+
+ return loader;
+ }
+ }, {
+ key: "loadFileContent",
+ value: function loadFileContent(mode, filepath, content) {
+ if (content === null) {
+ return null;
+ }
+
+ if (content.trim() === '') {
+ return undefined;
+ }
+
+ var loader = mode === MODE_SYNC ? this.getSyncLoaderForFile(filepath) : this.getAsyncLoaderForFile(filepath);
+ return loader(filepath, content);
+ }
+ }, {
+ key: "loadedContentToCosmiconfigResult",
+ value: function loadedContentToCosmiconfigResult(filepath, loadedContent) {
+ if (loadedContent === null) {
+ return null;
+ }
+
+ if (loadedContent === undefined) {
+ return {
+ filepath,
+ config: undefined,
+ isEmpty: true
+ };
+ }
+
+ return {
+ config: loadedContent,
+ filepath
+ };
+ }
+ }, {
+ key: "createCosmiconfigResult",
+ value: function createCosmiconfigResult(filepath, content) {
+ var _this6 = this;
+
+ return Promise.resolve().then(function () {
+ return _this6.loadFileContent('async', filepath, content);
+ }).then(function (loaderResult) {
+ return _this6.loadedContentToCosmiconfigResult(filepath, loaderResult);
+ });
+ }
+ }, {
+ key: "createCosmiconfigResultSync",
+ value: function createCosmiconfigResultSync(filepath, content) {
+ var loaderResult = this.loadFileContent('sync', filepath, content);
+ return this.loadedContentToCosmiconfigResult(filepath, loaderResult);
+ }
+ }, {
+ key: "validateFilePath",
+ value: function validateFilePath(filepath) {
+ if (!filepath) {
+ throw new Error('load and loadSync must pass a non-empty string');
+ }
+ }
+ }, {
+ key: "load",
+ value: function load(filepath) {
+ var _this7 = this;
+
+ return Promise.resolve().then(function () {
+ _this7.validateFilePath(filepath);
+
+ var absoluteFilePath = path.resolve(process.cwd(), filepath);
+ return cacheWrapper_1(_this7.loadCache, absoluteFilePath, function () {
+ return readFile_1(absoluteFilePath, {
+ throwNotFound: true
+ }).then(function (content) {
+ return _this7.createCosmiconfigResult(absoluteFilePath, content);
+ }).then(_this7.config.transform);
+ });
+ });
+ }
+ }, {
+ key: "loadSync",
+ value: function loadSync(filepath) {
+ var _this8 = this;
+
+ this.validateFilePath(filepath);
+ var absoluteFilePath = path.resolve(process.cwd(), filepath);
+ return cacheWrapper_1(this.loadSyncCache, absoluteFilePath, function () {
+ var content = readFile_1.sync(absoluteFilePath, {
+ throwNotFound: true
+ });
+
+ var result = _this8.createCosmiconfigResultSync(absoluteFilePath, content);
+
+ return _this8.config.transform(result);
+ });
+ }
+ }]);
+
+ return Explorer;
+}();
+
+var createExplorer = function createExplorer(options) {
+ var explorer = new Explorer(options);
+ return {
+ search: explorer.search.bind(explorer),
+ searchSync: explorer.searchSync.bind(explorer),
+ load: explorer.load.bind(explorer),
+ loadSync: explorer.loadSync.bind(explorer),
+ clearLoadCache: explorer.clearLoadCache.bind(explorer),
+ clearSearchCache: explorer.clearSearchCache.bind(explorer),
+ clearCaches: explorer.clearCaches.bind(explorer)
+ };
+};
+
+function nextDirUp(dir) {
+ return path.dirname(dir);
+}
+
+function getExtensionDescription(filepath) {
+ var ext = path.extname(filepath);
+ return ext ? `extension "${ext}"` : 'files without extensions';
+}
+
+var dist = cosmiconfig;
+
+function cosmiconfig(moduleName, options) {
+ options = options || {};
+ var defaults = {
+ packageProp: moduleName,
+ searchPlaces: ['package.json', `.${moduleName}rc`, `.${moduleName}rc.json`, `.${moduleName}rc.yaml`, `.${moduleName}rc.yml`, `.${moduleName}rc.js`, `${moduleName}.config.js`],
+ ignoreEmptySearchPlaces: true,
+ stopDir: os.homedir(),
+ cache: true,
+ transform: identity
+ };
+ var normalizedOptions = Object.assign({}, defaults, options, {
+ loaders: normalizeLoaders(options.loaders)
+ });
+ return createExplorer(normalizedOptions);
+}
+
+cosmiconfig.loadJs = loaders.loadJs;
+cosmiconfig.loadJson = loaders.loadJson;
+cosmiconfig.loadYaml = loaders.loadYaml;
+
+function normalizeLoaders(rawLoaders) {
+ var defaults = {
+ '.js': {
+ sync: loaders.loadJs,
+ async: loaders.loadJs
+ },
+ '.json': {
+ sync: loaders.loadJson,
+ async: loaders.loadJson
+ },
+ '.yaml': {
+ sync: loaders.loadYaml,
+ async: loaders.loadYaml
+ },
+ '.yml': {
+ sync: loaders.loadYaml,
+ async: loaders.loadYaml
+ },
+ noExt: {
+ sync: loaders.loadYaml,
+ async: loaders.loadYaml
+ }
+ };
+
+ if (!rawLoaders) {
+ return defaults;
+ }
+
+ return Object.keys(rawLoaders).reduce(function (result, ext) {
+ var entry = rawLoaders && rawLoaders[ext];
+
+ if (typeof entry === 'function') {
+ result[ext] = {
+ sync: entry,
+ async: entry
+ };
+ } else {
+ result[ext] = entry;
+ }
+
+ return result;
+ }, defaults);
+}
+
+function identity(x) {
+ return x;
+}
+
+var findParentDir = createCommonjsModule(function (module, exports) {
+
+ var exists = fs.exists || path.exists,
+ existsSync = fs.existsSync || path.existsSync;
+
+ function splitPath(path) {
+ var parts = path.split(/(\/|\\)/);
+ if (!parts.length) return parts; // when path starts with a slash, the first part is empty string
+
+ return !parts[0].length ? parts.slice(1) : parts;
+ }
+
+ exports = module.exports = function (currentFullPath, clue, cb) {
+ function testDir(parts) {
+ if (parts.length === 0) return cb(null, null);
+ var p = parts.join('');
+ exists(path.join(p, clue), function (itdoes) {
+ if (itdoes) return cb(null, p);
+ testDir(parts.slice(0, -1));
+ });
+ }
+
+ testDir(splitPath(currentFullPath));
+ };
+
+ exports.sync = function (currentFullPath, clue) {
+ function testDir(parts) {
+ if (parts.length === 0) return null;
+ var p = parts.join('');
+ var itdoes = existsSync(path.join(p, clue));
+ return itdoes ? p : testDir(parts.slice(0, -1));
+ }
+
+ return testDir(splitPath(currentFullPath));
+ };
+});
+var findParentDir_1 = findParentDir.sync;
+
+// Returns a wrapper function that returns a wrapped callback
+// The wrapper function should do some stuff, and return a
+// presumably different callback function.
+// This makes sure that own properties are retained, so that
+// decorations and such are not lost along the way.
+var wrappy_1 = wrappy;
+
+function wrappy(fn, cb) {
+ if (fn && cb) return wrappy(fn)(cb);
+ if (typeof fn !== 'function') throw new TypeError('need wrapper function');
+ Object.keys(fn).forEach(function (k) {
+ wrapper[k] = fn[k];
+ });
+ return wrapper;
+
+ function wrapper() {
+ var args = new Array(arguments.length);
+
+ for (var i = 0; i < args.length; i++) {
+ args[i] = arguments[i];
+ }
+
+ var ret = fn.apply(this, args);
+ var cb = args[args.length - 1];
+
+ if (typeof ret === 'function' && ret !== cb) {
+ Object.keys(cb).forEach(function (k) {
+ ret[k] = cb[k];
+ });
+ }
+
+ return ret;
+ }
+}
+
+var once_1 = wrappy_1(once);
+var strict = wrappy_1(onceStrict);
+once.proto = once(function () {
+ Object.defineProperty(Function.prototype, 'once', {
+ value: function value() {
+ return once(this);
+ },
+ configurable: true
+ });
+ Object.defineProperty(Function.prototype, 'onceStrict', {
+ value: function value() {
+ return onceStrict(this);
+ },
+ configurable: true
+ });
+});
+
+function once(fn) {
+ var f = function f() {
+ if (f.called) return f.value;
+ f.called = true;
+ return f.value = fn.apply(this, arguments);
+ };
+
+ f.called = false;
+ return f;
+}
+
+function onceStrict(fn) {
+ var f = function f() {
+ if (f.called) throw new Error(f.onceError);
+ f.called = true;
+ return f.value = fn.apply(this, arguments);
+ };
+
+ var name = fn.name || 'Function wrapped with `once`';
+ f.onceError = name + " shouldn't be called more than once";
+ f.called = false;
+ return f;
+}
+once_1.strict = strict;
+
+var noop = function noop() {};
+
+var isRequest = function isRequest(stream) {
+ return stream.setHeader && typeof stream.abort === 'function';
+};
+
+var isChildProcess = function isChildProcess(stream) {
+ return stream.stdio && Array.isArray(stream.stdio) && stream.stdio.length === 3;
+};
+
+var eos = function eos(stream, opts, callback) {
+ if (typeof opts === 'function') return eos(stream, null, opts);
+ if (!opts) opts = {};
+ callback = once_1(callback || noop);
+ var ws = stream._writableState;
+ var rs = stream._readableState;
+ var readable = opts.readable || opts.readable !== false && stream.readable;
+ var writable = opts.writable || opts.writable !== false && stream.writable;
+
+ var onlegacyfinish = function onlegacyfinish() {
+ if (!stream.writable) onfinish();
+ };
+
+ var onfinish = function onfinish() {
+ writable = false;
+ if (!readable) callback.call(stream);
+ };
+
+ var onend = function onend() {
+ readable = false;
+ if (!writable) callback.call(stream);
+ };
+
+ var onexit = function onexit(exitCode) {
+ callback.call(stream, exitCode ? new Error('exited with error code: ' + exitCode) : null);
+ };
+
+ var onerror = function onerror(err) {
+ callback.call(stream, err);
+ };
+
+ var onclose = function onclose() {
+ if (readable && !(rs && rs.ended)) return callback.call(stream, new Error('premature close'));
+ if (writable && !(ws && ws.ended)) return callback.call(stream, new Error('premature close'));
+ };
+
+ var onrequest = function onrequest() {
+ stream.req.on('finish', onfinish);
+ };
+
+ if (isRequest(stream)) {
+ stream.on('complete', onfinish);
+ stream.on('abort', onclose);
+ if (stream.req) onrequest();else stream.on('request', onrequest);
+ } else if (writable && !ws) {
+ // legacy streams
+ stream.on('end', onlegacyfinish);
+ stream.on('close', onlegacyfinish);
+ }
+
+ if (isChildProcess(stream)) stream.on('exit', onexit);
+ stream.on('end', onend);
+ stream.on('finish', onfinish);
+ if (opts.error !== false) stream.on('error', onerror);
+ stream.on('close', onclose);
+ return function () {
+ stream.removeListener('complete', onfinish);
+ stream.removeListener('abort', onclose);
+ stream.removeListener('request', onrequest);
+ if (stream.req) stream.req.removeListener('finish', onfinish);
+ stream.removeListener('end', onlegacyfinish);
+ stream.removeListener('close', onlegacyfinish);
+ stream.removeListener('finish', onfinish);
+ stream.removeListener('exit', onexit);
+ stream.removeListener('end', onend);
+ stream.removeListener('error', onerror);
+ stream.removeListener('close', onclose);
+ };
+};
+
+var endOfStream = eos;
+
+var noop$1 = function noop() {};
+
+var ancient = /^v?\.0/.test(process.version);
+
+var isFn = function isFn(fn) {
+ return typeof fn === 'function';
+};
+
+var isFS = function isFS(stream) {
+ if (!ancient) return false; // newer node version do not need to care about fs is a special way
+
+ if (!fs) return false; // browser
+
+ return (stream instanceof (fs.ReadStream || noop$1) || stream instanceof (fs.WriteStream || noop$1)) && isFn(stream.close);
+};
+
+var isRequest$1 = function isRequest(stream) {
+ return stream.setHeader && isFn(stream.abort);
+};
+
+var destroyer = function destroyer(stream, reading, writing, callback) {
+ callback = once_1(callback);
+ var closed = false;
+ stream.on('close', function () {
+ closed = true;
+ });
+ endOfStream(stream, {
+ readable: reading,
+ writable: writing
+ }, function (err) {
+ if (err) return callback(err);
+ closed = true;
+ callback();
+ });
+ var destroyed = false;
+ return function (err) {
+ if (closed) return;
+ if (destroyed) return;
+ destroyed = true;
+ if (isFS(stream)) return stream.close(noop$1); // use close for fs streams to avoid fd leaks
+
+ if (isRequest$1(stream)) return stream.abort(); // request.destroy just do .end - .abort is what we want
+
+ if (isFn(stream.destroy)) return stream.destroy();
+ callback(err || new Error('stream was destroyed'));
+ };
+};
+
+var call = function call(fn) {
+ fn();
+};
+
+var pipe = function pipe(from, to) {
+ return from.pipe(to);
+};
+
+var pump = function pump() {
+ var streams = Array.prototype.slice.call(arguments);
+ var callback = isFn(streams[streams.length - 1] || noop$1) && streams.pop() || noop$1;
+ if (Array.isArray(streams[0])) streams = streams[0];
+ if (streams.length < 2) throw new Error('pump requires two streams per minimum');
+ var error;
+ var destroys = streams.map(function (stream, i) {
+ var reading = i < streams.length - 1;
+ var writing = i > 0;
+ return destroyer(stream, reading, writing, function (err) {
+ if (!error) error = err;
+ if (err) destroys.forEach(call);
+ if (reading) return;
+ destroys.forEach(call);
+ callback(error);
+ });
+ });
+ return streams.reduce(pipe);
+};
+
+var pump_1 = pump;
+
+var PassThrough = stream.PassThrough;
+
+var bufferStream = function bufferStream(options) {
+ options = Object.assign({}, options);
+ var _options = options,
+ array = _options.array;
+ var _options2 = options,
+ encoding = _options2.encoding;
+ var buffer = encoding === 'buffer';
+ var objectMode = false;
+
+ if (array) {
+ objectMode = !(encoding || buffer);
+ } else {
+ encoding = encoding || 'utf8';
+ }
+
+ if (buffer) {
+ encoding = null;
+ }
+
+ var len = 0;
+ var ret = [];
+ var stream = new PassThrough({
+ objectMode
+ });
+
+ if (encoding) {
+ stream.setEncoding(encoding);
+ }
+
+ stream.on('data', function (chunk) {
+ ret.push(chunk);
+
+ if (objectMode) {
+ len = ret.length;
+ } else {
+ len += chunk.length;
+ }
+ });
+
+ stream.getBufferedValue = function () {
+ if (array) {
+ return ret;
+ }
+
+ return buffer ? Buffer.concat(ret, len) : ret.join('');
+ };
+
+ stream.getBufferedLength = function () {
+ return len;
+ };
+
+ return stream;
+};
+
+var MaxBufferError =
+/*#__PURE__*/
+function (_Error) {
+ _inherits(MaxBufferError, _Error);
+
+ function MaxBufferError() {
+ var _this;
+
+ _classCallCheck(this, MaxBufferError);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(MaxBufferError).call(this, 'maxBuffer exceeded'));
+ _this.name = 'MaxBufferError';
+ return _this;
+ }
+
+ return MaxBufferError;
+}(_wrapNativeSuper(Error));
+
+function getStream(inputStream, options) {
+ if (!inputStream) {
+ return Promise.reject(new Error('Expected a stream'));
+ }
+
+ options = Object.assign({
+ maxBuffer: Infinity
+ }, options);
+ var _options = options,
+ maxBuffer = _options.maxBuffer;
+ var stream;
+ return new Promise(function (resolve, reject) {
+ var rejectPromise = function rejectPromise(error) {
+ if (error) {
+ // A null check
+ error.bufferedData = stream.getBufferedValue();
+ }
+
+ reject(error);
+ };
+
+ stream = pump_1(inputStream, bufferStream(options), function (error) {
+ if (error) {
+ rejectPromise(error);
+ return;
+ }
+
+ resolve();
+ });
+ stream.on('data', function () {
+ if (stream.getBufferedLength() > maxBuffer) {
+ rejectPromise(new MaxBufferError());
+ }
+ });
+ }).then(function () {
+ return stream.getBufferedValue();
+ });
+}
+
+var getStream_1 = getStream;
+
+var buffer = function buffer(stream, options) {
+ return getStream(stream, Object.assign({}, options, {
+ encoding: 'buffer'
+ }));
+};
+
+var array = function array(stream, options) {
+ return getStream(stream, Object.assign({}, options, {
+ array: true
+ }));
+};
+
+var MaxBufferError_1 = MaxBufferError;
+getStream_1.buffer = buffer;
+getStream_1.array = array;
+getStream_1.MaxBufferError = MaxBufferError_1;
+
+var vendors = [
+ {
+ name: "AppVeyor",
+ constant: "APPVEYOR",
+ env: "APPVEYOR",
+ pr: "APPVEYOR_PULL_REQUEST_NUMBER"
+ },
+ {
+ name: "Azure Pipelines",
+ constant: "AZURE_PIPELINES",
+ env: "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI",
+ pr: "SYSTEM_PULLREQUEST_PULLREQUESTID"
+ },
+ {
+ name: "Bamboo",
+ constant: "BAMBOO",
+ env: "bamboo_planKey"
+ },
+ {
+ name: "Bitbucket Pipelines",
+ constant: "BITBUCKET",
+ env: "BITBUCKET_COMMIT",
+ pr: "BITBUCKET_PR_ID"
+ },
+ {
+ name: "Bitrise",
+ constant: "BITRISE",
+ env: "BITRISE_IO",
+ pr: "BITRISE_PULL_REQUEST"
+ },
+ {
+ name: "Buddy",
+ constant: "BUDDY",
+ env: "BUDDY_WORKSPACE_ID",
+ pr: "BUDDY_EXECUTION_PULL_REQUEST_ID"
+ },
+ {
+ name: "Buildkite",
+ constant: "BUILDKITE",
+ env: "BUILDKITE",
+ pr: {
+ env: "BUILDKITE_PULL_REQUEST",
+ ne: "false"
+ }
+ },
+ {
+ name: "CircleCI",
+ constant: "CIRCLE",
+ env: "CIRCLECI",
+ pr: "CIRCLE_PULL_REQUEST"
+ },
+ {
+ name: "Cirrus CI",
+ constant: "CIRRUS",
+ env: "CIRRUS_CI",
+ pr: "CIRRUS_PR"
+ },
+ {
+ name: "AWS CodeBuild",
+ constant: "CODEBUILD",
+ env: "CODEBUILD_BUILD_ARN"
+ },
+ {
+ name: "Codeship",
+ constant: "CODESHIP",
+ env: {
+ CI_NAME: "codeship"
+ }
+ },
+ {
+ name: "Drone",
+ constant: "DRONE",
+ env: "DRONE",
+ pr: {
+ DRONE_BUILD_EVENT: "pull_request"
+ }
+ },
+ {
+ name: "dsari",
+ constant: "DSARI",
+ env: "DSARI"
+ },
+ {
+ name: "GitLab CI",
+ constant: "GITLAB",
+ env: "GITLAB_CI"
+ },
+ {
+ name: "GoCD",
+ constant: "GOCD",
+ env: "GO_PIPELINE_LABEL"
+ },
+ {
+ name: "Hudson",
+ constant: "HUDSON",
+ env: "HUDSON_URL"
+ },
+ {
+ name: "Jenkins",
+ constant: "JENKINS",
+ env: [
+ "JENKINS_URL",
+ "BUILD_ID"
+ ],
+ pr: {
+ any: [
+ "ghprbPullId",
+ "CHANGE_ID"
+ ]
+ }
+ },
+ {
+ name: "Magnum CI",
+ constant: "MAGNUM",
+ env: "MAGNUM"
+ },
+ {
+ name: "Netlify CI",
+ constant: "NETLIFY",
+ env: "NETLIFY_BUILD_BASE",
+ pr: {
+ env: "PULL_REQUEST",
+ ne: "false"
+ }
+ },
+ {
+ name: "Sail CI",
+ constant: "SAIL",
+ env: "SAILCI",
+ pr: "SAIL_PULL_REQUEST_NUMBER"
+ },
+ {
+ name: "Semaphore",
+ constant: "SEMAPHORE",
+ env: "SEMAPHORE",
+ pr: "PULL_REQUEST_NUMBER"
+ },
+ {
+ name: "Shippable",
+ constant: "SHIPPABLE",
+ env: "SHIPPABLE",
+ pr: {
+ IS_PULL_REQUEST: "true"
+ }
+ },
+ {
+ name: "Solano CI",
+ constant: "SOLANO",
+ env: "TDDIUM",
+ pr: "TDDIUM_PR_ID"
+ },
+ {
+ name: "Strider CD",
+ constant: "STRIDER",
+ env: "STRIDER"
+ },
+ {
+ name: "TaskCluster",
+ constant: "TASKCLUSTER",
+ env: [
+ "TASK_ID",
+ "RUN_ID"
+ ]
+ },
+ {
+ name: "TeamCity",
+ constant: "TEAMCITY",
+ env: "TEAMCITY_VERSION"
+ },
+ {
+ name: "Travis CI",
+ constant: "TRAVIS",
+ env: "TRAVIS",
+ pr: {
+ env: "TRAVIS_PULL_REQUEST",
+ ne: "false"
+ }
+ }
+];
+
+var vendors$1 = /*#__PURE__*/Object.freeze({
+ __proto__: null,
+ 'default': vendors
+});
+
+var vendors$2 = getCjsExportFromNamespace(vendors$1);
+
+var ciInfo = createCommonjsModule(function (module, exports) {
+
+ var env = process.env; // Used for testing only
+
+ Object.defineProperty(exports, '_vendors', {
+ value: vendors$2.map(function (v) {
+ return v.constant;
+ })
+ });
+ exports.name = null;
+ exports.isPR = null;
+ vendors$2.forEach(function (vendor) {
+ var envs = Array.isArray(vendor.env) ? vendor.env : [vendor.env];
+ var isCI = envs.every(function (obj) {
+ return checkEnv(obj);
+ });
+ exports[vendor.constant] = isCI;
+
+ if (isCI) {
+ exports.name = vendor.name;
+
+ switch (typeof vendor.pr) {
+ case 'string':
+ // "pr": "CIRRUS_PR"
+ exports.isPR = !!env[vendor.pr];
+ break;
+
+ case 'object':
+ if ('env' in vendor.pr) {
+ // "pr": { "env": "BUILDKITE_PULL_REQUEST", "ne": "false" }
+ exports.isPR = vendor.pr.env in env && env[vendor.pr.env] !== vendor.pr.ne;
+ } else if ('any' in vendor.pr) {
+ // "pr": { "any": ["ghprbPullId", "CHANGE_ID"] }
+ exports.isPR = vendor.pr.any.some(function (key) {
+ return !!env[key];
+ });
+ } else {
+ // "pr": { "DRONE_BUILD_EVENT": "pull_request" }
+ exports.isPR = checkEnv(vendor.pr);
+ }
+
+ break;
+
+ default:
+ // PR detection not supported for this vendor
+ exports.isPR = null;
+ }
+ }
+ });
+ exports.isCI = !!(env.CI || // Travis CI, CircleCI, Cirrus CI, Gitlab CI, Appveyor, CodeShip, dsari
+ env.CONTINUOUS_INTEGRATION || // Travis CI, Cirrus CI
+ env.BUILD_NUMBER || // Jenkins, TeamCity
+ env.RUN_ID || // TaskCluster, dsari
+ exports.name || false);
+
+ function checkEnv(obj) {
+ if (typeof obj === 'string') return !!env[obj];
+ return Object.keys(obj).every(function (k) {
+ return env[k] === obj[k];
+ });
+ }
+});
+var ciInfo_1 = ciInfo.name;
+var ciInfo_2 = ciInfo.isPR;
+var ciInfo_3 = ciInfo.isCI;
+
+var isCi = ciInfo.isCI;
+
+var thirdParty = {
+ cosmiconfig: dist,
+ findParentDir: findParentDir.sync,
+ getStream: getStream_1,
+ isCI: function isCI() {
+ return isCi;
+ }
+};
+var thirdParty_1 = thirdParty.cosmiconfig;
+var thirdParty_2 = thirdParty.findParentDir;
+var thirdParty_3 = thirdParty.getStream;
+var thirdParty_4 = thirdParty.isCI;
+
+exports.cosmiconfig = thirdParty_1;
+exports.default = thirdParty;
+exports.findParentDir = thirdParty_2;
+exports.getStream = thirdParty_3;
+exports.isCI = thirdParty_4;
diff --git a/node_modules/shiki/LICENSE b/node_modules/shiki/LICENSE
new file mode 100644
index 0000000..641ebad
--- /dev/null
+++ b/node_modules/shiki/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2021 Pine Wu
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/shiki/README.md b/node_modules/shiki/README.md
new file mode 100644
index 0000000..c17e10f
--- /dev/null
+++ b/node_modules/shiki/README.md
@@ -0,0 +1,62 @@
+<p>
+ <h2 align="center">Shiki</h2>
+</p>
+<p align="center">
+ Shiki is a beautiful Syntax Highlighter. <a href="http://shiki.matsu.io">Demo</a>.
+</p>
+
+## Usage
+
+```sh
+npm i shiki
+```
+
+```js
+const shiki = require('shiki')
+
+shiki
+ .getHighlighter({
+ theme: 'nord'
+ })
+ .then(highlighter => {
+ console.log(highlighter.codeToHtml(`console.log('shiki');`, { lang: 'js' }))
+ })
+
+// <pre class="shiki" style="background-color: #2e3440"><code>
+// <!-- Highlighted Code -->
+// </code></pre>
+```
+
+```html
+<script src="https://unpkg.com/shiki"></script>
+<script>
+ shiki
+ .getHighlighter({
+ theme: 'nord'
+ })
+ .then(highlighter => {
+ const code = highlighter.codeToHtml(`console.log('shiki');`, { lang: 'js' })
+ document.getElementById('output').innerHTML = code
+ })
+</script>
+```
+
+Clone [shikijs/shiki-starter](https://github.com/shikijs/shiki-starter) to play with Shiki, or try it out on [Repl.it](https://repl.it/@octref/shiki-starter).
+
+Learn more from the GitHub repo: [shikijs/shiki](https://github.com/shikijs/shiki).
+
+
+## Credits
+
+- Shiki uses [vscode-oniguruma](https://github.com/microsoft/vscode-oniguruma)
+- A lot of code is based on [vscode-textmate](https://github.com/Microsoft/vscode-textmate)
+
+## Sponsorship
+
+If you find Shiki useful, please consider sponsoring my Open Source development. Thank you 🙏
+
+https://github.com/sponsors/octref
+
+## License
+
+MIT © [Pine Wu](https://github.com/octref)
diff --git a/node_modules/shiki/dist/index.browser.mjs b/node_modules/shiki/dist/index.browser.mjs
new file mode 100644
index 0000000..1bb41fd
--- /dev/null
+++ b/node_modules/shiki/dist/index.browser.mjs
@@ -0,0 +1 @@
+const e=["css-variables","dark-plus","dracula-soft","dracula","github-dark-dimmed","github-dark","github-light","hc_light","light-plus","material-theme-darker","material-theme-lighter","material-theme-ocean","material-theme-palenight","material-theme","min-dark","min-light","monokai","nord","one-dark-pro","poimandres","rose-pine-dawn","rose-pine-moon","rose-pine","slack-dark","slack-ochin","solarized-dark","solarized-light","vitesse-dark","vitesse-light"],t=[{id:"abap",scopeName:"source.abap",path:"abap.tmLanguage.json",displayName:"ABAP",samplePath:"abap.sample"},{id:"actionscript-3",scopeName:"source.actionscript.3",path:"actionscript-3.tmLanguage.json",displayName:"ActionScript",samplePath:"actionscript-3.sample"},{id:"ada",scopeName:"source.ada",path:"ada.tmLanguage.json",displayName:"Ada",samplePath:"ada.sample"},{id:"apache",scopeName:"source.apacheconf",path:"apache.tmLanguage.json",displayName:"Apache Conf"},{id:"apex",scopeName:"source.apex",path:"apex.tmLanguage.json",displayName:"Apex",samplePath:"apex.sample"},{id:"apl",scopeName:"source.apl",path:"apl.tmLanguage.json",displayName:"APL",embeddedLangs:["html","xml","css","javascript","json"]},{id:"applescript",scopeName:"source.applescript",path:"applescript.tmLanguage.json",displayName:"AppleScript",samplePath:"applescript.sample"},{id:"ara",scopeName:"source.ara",path:"ara.tmLanguage.json",displayName:"Ara",samplePath:"ara.sample"},{id:"asm",scopeName:"source.asm.x86_64",path:"asm.tmLanguage.json",displayName:"Assembly",samplePath:"asm.sample"},{id:"astro",scopeName:"source.astro",path:"astro.tmLanguage.json",displayName:"Astro",samplePath:"astro.sample",embeddedLangs:["json","javascript","typescript","stylus","sass","css","scss","less","postcss","tsx"]},{id:"awk",scopeName:"source.awk",path:"awk.tmLanguage.json",displayName:"AWK",samplePath:"awk.sample"},{id:"ballerina",scopeName:"source.ballerina",path:"ballerina.tmLanguage.json",displayName:"Ballerina",samplePath:"ballerina.sample"},{id:"bat",scopeName:"source.batchfile",path:"bat.tmLanguage.json",displayName:"Batch",samplePath:"bat.sample",aliases:["batch"]},{id:"beancount",scopeName:"text.beancount",path:"beancount.tmLanguage.json",displayName:"Beancount",samplePath:"beancount.sample"},{id:"berry",scopeName:"source.berry",path:"berry.tmLanguage.json",displayName:"Berry",samplePath:"berry.sample",aliases:["be"]},{id:"bibtex",scopeName:"text.bibtex",path:"bibtex.tmLanguage.json",displayName:"BibTeX"},{id:"bicep",scopeName:"source.bicep",path:"bicep.tmLanguage.json",displayName:"Bicep",samplePath:"bicep.sample"},{id:"blade",scopeName:"text.html.php.blade",path:"blade.tmLanguage.json",displayName:"Blade",samplePath:"blade.sample",embeddedLangs:["html","xml","sql","javascript","json","css"]},{id:"c",scopeName:"source.c",path:"c.tmLanguage.json",displayName:"C",samplePath:"c.sample"},{id:"cadence",scopeName:"source.cadence",path:"cadence.tmLanguage.json",displayName:"Cadence",samplePath:"cadence.sample",aliases:["cdc"]},{id:"clarity",scopeName:"source.clar",path:"clarity.tmLanguage.json",displayName:"Clarity",samplePath:"clarity.sample"},{id:"clojure",scopeName:"source.clojure",path:"clojure.tmLanguage.json",displayName:"Clojure",samplePath:"clojure.sample",aliases:["clj"]},{id:"cmake",scopeName:"source.cmake",path:"cmake.tmLanguage.json",displayName:"CMake",samplePath:"cmake.sample"},{id:"cobol",scopeName:"source.cobol",path:"cobol.tmLanguage.json",displayName:"COBOL",samplePath:"cobol.sample",embeddedLangs:["sql","html","java"]},{id:"codeql",scopeName:"source.ql",path:"codeql.tmLanguage.json",displayName:"CodeQL",samplePath:"codeql.sample",aliases:["ql"],embeddedLangs:["markdown"]},{id:"coffee",scopeName:"source.coffee",path:"coffee.tmLanguage.json",displayName:"CoffeeScript",samplePath:"coffee.sample",embeddedLangs:["javascript"]},{id:"cpp",scopeName:"source.cpp",path:"cpp.tmLanguage.json",displayName:"C++",samplePath:"cpp.sample",embeddedLangs:["glsl","sql"]},{id:"crystal",scopeName:"source.crystal",path:"crystal.tmLanguage.json",displayName:"Crystal",samplePath:"crystal.sample",embeddedLangs:["html","sql","css","c","javascript","shellscript"]},{id:"csharp",scopeName:"source.cs",path:"csharp.tmLanguage.json",displayName:"C#",samplePath:"csharp.sample",aliases:["c#","cs"]},{id:"css",scopeName:"source.css",path:"css.tmLanguage.json",displayName:"CSS",samplePath:"css.sample"},{id:"cue",scopeName:"source.cue",path:"cue.tmLanguage.json",displayName:"CUE",samplePath:"cue.sample"},{id:"cypher",scopeName:"source.cypher",path:"cypher.tmLanguage.json",displayName:"Cypher",samplePath:"cypher.sample",aliases:["cql"]},{id:"d",scopeName:"source.d",path:"d.tmLanguage.json",displayName:"D",samplePath:"d.sample"},{id:"dart",scopeName:"source.dart",path:"dart.tmLanguage.json",displayName:"Dart",samplePath:"dart.sample"},{id:"dax",scopeName:"source.dax",path:"dax.tmLanguage.json",displayName:"DAX",samplePath:"dax.sample"},{id:"diff",scopeName:"source.diff",path:"diff.tmLanguage.json",displayName:"Diff",samplePath:"diff.sample"},{id:"docker",scopeName:"source.dockerfile",path:"docker.tmLanguage.json",displayName:"Docker",samplePath:"docker.sample",aliases:["dockerfile"]},{id:"dream-maker",scopeName:"source.dm",path:"dream-maker.tmLanguage.json",displayName:"Dream Maker"},{id:"elixir",scopeName:"source.elixir",path:"elixir.tmLanguage.json",displayName:"Elixir",samplePath:"elixir.sample",embeddedLangs:["html"]},{id:"elm",scopeName:"source.elm",path:"elm.tmLanguage.json",displayName:"Elm",samplePath:"elm.sample",embeddedLangs:["glsl"]},{id:"erb",scopeName:"text.html.erb",path:"erb.tmLanguage.json",displayName:"ERB",samplePath:"erb.sample",embeddedLangs:["html","ruby"]},{id:"erlang",scopeName:"source.erlang",path:"erlang.tmLanguage.json",displayName:"Erlang",samplePath:"erlang.sample",aliases:["erl"]},{id:"fish",scopeName:"source.fish",path:"fish.tmLanguage.json",displayName:"Fish",samplePath:"fish.sample"},{id:"fsharp",scopeName:"source.fsharp",path:"fsharp.tmLanguage.json",displayName:"F#",samplePath:"fsharp.sample",aliases:["f#","fs"],embeddedLangs:["markdown"]},{id:"gdresource",scopeName:"source.gdresource",path:"gdresource.tmLanguage.json",displayName:"GDResource",samplePath:"gdresource.sample",embeddedLangs:["gdshader","gdscript"]},{id:"gdscript",scopeName:"source.gdscript",path:"gdscript.tmLanguage.json",displayName:"GDScript",samplePath:"gdscript.sample"},{id:"gdshader",scopeName:"source.gdshader",path:"gdshader.tmLanguage.json",displayName:"GDShader",samplePath:"gdshader.sample"},{id:"gherkin",scopeName:"text.gherkin.feature",path:"gherkin.tmLanguage.json",displayName:"Gherkin"},{id:"git-commit",scopeName:"text.git-commit",path:"git-commit.tmLanguage.json",displayName:"Git Commit Message",embeddedLangs:["diff"]},{id:"git-rebase",scopeName:"text.git-rebase",path:"git-rebase.tmLanguage.json",displayName:"Git Rebase Message",embeddedLangs:["shellscript"]},{id:"glimmer-js",scopeName:"source.gjs",path:"glimmer-js.tmLanguage.json",displayName:"Glimmer JS",aliases:["gjs"],embeddedLangs:["javascript","handlebars"]},{id:"glimmer-ts",scopeName:"source.gts",path:"glimmer-ts.tmLanguage.json",displayName:"Glimmer TS",aliases:["gts"],embeddedLangs:["typescript","handlebars"]},{id:"glsl",scopeName:"source.glsl",path:"glsl.tmLanguage.json",displayName:"GLSL",samplePath:"glsl.sample",embeddedLangs:["c"]},{id:"gnuplot",scopeName:"source.gnuplot",path:"gnuplot.tmLanguage.json",displayName:"Gnuplot"},{id:"go",scopeName:"source.go",path:"go.tmLanguage.json",displayName:"Go",samplePath:"go.sample"},{id:"graphql",scopeName:"source.graphql",path:"graphql.tmLanguage.json",displayName:"GraphQL",embeddedLangs:["javascript","typescript","jsx","tsx"]},{id:"groovy",scopeName:"source.groovy",path:"groovy.tmLanguage.json",displayName:"Groovy"},{id:"hack",scopeName:"source.hack",path:"hack.tmLanguage.json",displayName:"Hack",embeddedLangs:["html","sql"]},{id:"haml",scopeName:"text.haml",path:"haml.tmLanguage.json",displayName:"Ruby Haml",embeddedLangs:["ruby","javascript","sass","coffee","markdown","css"]},{id:"handlebars",scopeName:"text.html.handlebars",path:"handlebars.tmLanguage.json",displayName:"Handlebars",aliases:["hbs"],embeddedLangs:["html","css","javascript","yaml"]},{id:"haskell",scopeName:"source.haskell",path:"haskell.tmLanguage.json",displayName:"Haskell",aliases:["hs"]},{id:"hcl",scopeName:"source.hcl",path:"hcl.tmLanguage.json",displayName:"HashiCorp HCL",samplePath:"hcl.sample"},{id:"hjson",scopeName:"source.hjson",path:"hjson.tmLanguage.json",displayName:"Hjson",samplePath:"hjson.sample"},{id:"hlsl",scopeName:"source.hlsl",path:"hlsl.tmLanguage.json",displayName:"HLSL"},{id:"html",scopeName:"text.html.basic",path:"html.tmLanguage.json",displayName:"HTML",samplePath:"html.sample",embeddedLangs:["javascript","css"]},{id:"http",scopeName:"source.http",path:"http.tmLanguage.json",displayName:"HTTP",samplePath:"http.sample",embeddedLangs:["shellscript","json","xml","graphql"]},{id:"imba",scopeName:"source.imba",path:"imba.tmLanguage.json",displayName:"Imba",samplePath:"imba.sample"},{id:"ini",scopeName:"source.ini",path:"ini.tmLanguage.json",displayName:"INI",aliases:["properties"]},{id:"java",scopeName:"source.java",path:"java.tmLanguage.json",displayName:"Java",samplePath:"java.sample"},{id:"javascript",scopeName:"source.js",path:"javascript.tmLanguage.json",displayName:"JavaScript",samplePath:"javascript.sample",aliases:["js"]},{id:"jinja-html",scopeName:"text.html.jinja",path:"jinja-html.tmLanguage.json",displayName:"Jinja",embeddedLangs:["html"]},{id:"jison",scopeName:"source.jison",path:"jison.tmLanguage.json",displayName:"Jison",samplePath:"jison.sample",embeddedLangs:["javascript"]},{id:"json",scopeName:"source.json",path:"json.tmLanguage.json",displayName:"JSON"},{id:"json5",scopeName:"source.json5",path:"json5.tmLanguage.json",displayName:"JSON5",samplePath:"json5.sample"},{id:"jsonc",scopeName:"source.json.comments",path:"jsonc.tmLanguage.json",displayName:"JSON with Comments"},{id:"jsonl",scopeName:"source.json.lines",path:"jsonl.tmLanguage.json",displayName:"JSON Lines"},{id:"jsonnet",scopeName:"source.jsonnet",path:"jsonnet.tmLanguage.json",displayName:"Jsonnet"},{id:"jssm",scopeName:"source.jssm",path:"jssm.tmLanguage.json",displayName:"JSSM",samplePath:"jssm.sample",aliases:["fsl"]},{id:"jsx",scopeName:"source.js.jsx",path:"jsx.tmLanguage.json",displayName:"JSX"},{id:"julia",scopeName:"source.julia",path:"julia.tmLanguage.json",displayName:"Julia",embeddedLangs:["cpp","python","javascript","r","sql"]},{id:"kotlin",scopeName:"source.kotlin",path:"kotlin.tmLanguage.json",displayName:"Kotlin",samplePath:"kotlin.sample"},{id:"kusto",scopeName:"source.kusto",path:"kusto.tmLanguage.json",displayName:"Kusto",samplePath:"kusto.sample",aliases:["kql"]},{id:"latex",scopeName:"text.tex.latex",path:"latex.tmLanguage.json",displayName:"LaTeX",embeddedLangs:["tex","css","haskell","html","xml","java","lua","julia","ruby","javascript","typescript","python","yaml","rust","scala","gnuplot"]},{id:"less",scopeName:"source.css.less",path:"less.tmLanguage.json",displayName:"Less",embeddedLangs:["css"]},{id:"liquid",scopeName:"text.html.liquid",path:"liquid.tmLanguage.json",displayName:"Liquid",samplePath:"liquid.sample",embeddedLangs:["html","css","json","javascript"]},{id:"lisp",scopeName:"source.lisp",path:"lisp.tmLanguage.json",displayName:"Lisp"},{id:"logo",scopeName:"source.logo",path:"logo.tmLanguage.json",displayName:"Logo"},{id:"lua",scopeName:"source.lua",path:"lua.tmLanguage.json",displayName:"Lua",embeddedLangs:["c"]},{id:"make",scopeName:"source.makefile",path:"make.tmLanguage.json",displayName:"Makefile",aliases:["makefile"]},{id:"markdown",scopeName:"text.html.markdown",path:"markdown.tmLanguage.json",displayName:"Markdown",aliases:["md"],embeddedLangs:["css","html","ini","java","lua","make","perl","r","ruby","php","sql","vb","xml","xsl","yaml","bat","clojure","coffee","c","cpp","diff","docker","git-commit","git-rebase","go","groovy","pug","javascript","json","jsonc","less","objective-c","swift","scss","raku","powershell","python","julia","rust","scala","shellscript","typescript","tsx","csharp","fsharp","dart","handlebars","erlang","elixir","latex","bibtex"]},{id:"marko",scopeName:"text.marko",path:"marko.tmLanguage.json",displayName:"Marko",embeddedLangs:["css","less","scss","javascript"]},{id:"matlab",scopeName:"source.matlab",path:"matlab.tmLanguage.json",displayName:"MATLAB"},{id:"mdx",scopeName:"source.mdx",path:"mdx.tmLanguage.json",displayName:"MDX",embeddedLangs:["tsx","toml","yaml","c","clojure","coffee","cpp","csharp","css","diff","docker","elixir","elm","erlang","go","graphql","haskell","html","ini","java","javascript","json","julia","kotlin","less","lua","make","markdown","objective-c","perl","python","r","ruby","rust","scala","scss","shellscript","sql","xml","swift","typescript"]},{id:"mermaid",scopeName:"source.mermaid",path:"mermaid.tmLanguage.json",displayName:"Mermaid"},{id:"narrat",scopeName:"source.narrat",path:"narrat.tmLanguage.json",displayName:"Narrat Language",samplePath:"narrat.sample",aliases:["nar"]},{id:"nextflow",scopeName:"source.nextflow",path:"nextflow.tmLanguage.json",displayName:"Nextflow",samplePath:"nextflow.sample",aliases:["nf"]},{id:"nginx",scopeName:"source.nginx",path:"nginx.tmLanguage.json",displayName:"Nginx",embeddedLangs:["lua"]},{id:"nim",scopeName:"source.nim",path:"nim.tmLanguage.json",displayName:"Nim",embeddedLangs:["c","html","xml","javascript","css","glsl","markdown"]},{id:"nix",scopeName:"source.nix",path:"nix.tmLanguage.json",displayName:"Nix"},{id:"objective-c",scopeName:"source.objc",path:"objective-c.tmLanguage.json",displayName:"Objective-C",aliases:["objc"]},{id:"objective-cpp",scopeName:"source.objcpp",path:"objective-cpp.tmLanguage.json",displayName:"Objective-C++"},{id:"ocaml",scopeName:"source.ocaml",path:"ocaml.tmLanguage.json",displayName:"OCaml"},{id:"pascal",scopeName:"source.pascal",path:"pascal.tmLanguage.json",displayName:"Pascal"},{id:"perl",scopeName:"source.perl",path:"perl.tmLanguage.json",displayName:"Perl",embeddedLangs:["html","xml","css","javascript","sql"]},{id:"php",scopeName:"source.php",path:"php.tmLanguage.json",displayName:"PHP",embeddedLangs:["html","xml","sql","javascript","json","css"]},{id:"plsql",scopeName:"source.plsql.oracle",path:"plsql.tmLanguage.json",displayName:"PL/SQL"},{id:"postcss",scopeName:"source.css.postcss",path:"postcss.tmLanguage.json",displayName:"PostCSS"},{id:"powerquery",scopeName:"source.powerquery",path:"powerquery.tmLanguage.json",displayName:"PowerQuery",samplePath:"powerquery.sample"},{id:"powershell",scopeName:"source.powershell",path:"powershell.tmLanguage.json",displayName:"PowerShell",aliases:["ps","ps1"]},{id:"prisma",scopeName:"source.prisma",path:"prisma.tmLanguage.json",displayName:"Prisma",samplePath:"prisma.sample"},{id:"prolog",scopeName:"source.prolog",path:"prolog.tmLanguage.json",displayName:"Prolog"},{id:"proto",scopeName:"source.proto",path:"proto.tmLanguage.json",displayName:"Protocol Buffer 3",samplePath:"proto.sample"},{id:"pug",scopeName:"text.pug",path:"pug.tmLanguage.json",displayName:"Pug",aliases:["jade"],embeddedLangs:["javascript","css","sass","scss","stylus","coffee","html"]},{id:"puppet",scopeName:"source.puppet",path:"puppet.tmLanguage.json",displayName:"Puppet"},{id:"purescript",scopeName:"source.purescript",path:"purescript.tmLanguage.json",displayName:"PureScript"},{id:"python",scopeName:"source.python",path:"python.tmLanguage.json",displayName:"Python",samplePath:"python.sample",aliases:["py"]},{id:"r",scopeName:"source.r",path:"r.tmLanguage.json",displayName:"R"},{id:"raku",scopeName:"source.perl.6",path:"raku.tmLanguage.json",displayName:"Perl 6",aliases:["perl6"]},{id:"razor",scopeName:"text.aspnetcorerazor",path:"razor.tmLanguage.json",displayName:"ASP.NET Razor",embeddedLangs:["html","csharp"]},{id:"reg",scopeName:"source.reg",path:"reg.tmLanguage.json",displayName:"Windows Registry Script",samplePath:"reg.sample"},{id:"rel",scopeName:"source.rel",path:"rel.tmLanguage.json",displayName:"Rel",samplePath:"rel.sample"},{id:"riscv",scopeName:"source.riscv",path:"riscv.tmLanguage.json",displayName:"RISC-V"},{id:"rst",scopeName:"source.rst",path:"rst.tmLanguage.json",displayName:"reStructuredText",embeddedLangs:["cpp","python","javascript","shellscript","yaml","cmake","ruby"]},{id:"ruby",scopeName:"source.ruby",path:"ruby.tmLanguage.json",displayName:"Ruby",samplePath:"ruby.sample",aliases:["rb"],embeddedLangs:["html","xml","sql","css","c","javascript","shellscript","lua"]},{id:"rust",scopeName:"source.rust",path:"rust.tmLanguage.json",displayName:"Rust",aliases:["rs"]},{id:"sas",scopeName:"source.sas",path:"sas.tmLanguage.json",displayName:"SAS",embeddedLangs:["sql"]},{id:"sass",scopeName:"source.sass",path:"sass.tmLanguage.json",displayName:"Sass"},{id:"scala",scopeName:"source.scala",path:"scala.tmLanguage.json",displayName:"Scala"},{id:"scheme",scopeName:"source.scheme",path:"scheme.tmLanguage.json",displayName:"Scheme"},{id:"scss",scopeName:"source.css.scss",path:"scss.tmLanguage.json",displayName:"SCSS",embeddedLangs:["css"]},{id:"shaderlab",scopeName:"source.shaderlab",path:"shaderlab.tmLanguage.json",displayName:"ShaderLab",aliases:["shader"],embeddedLangs:["hlsl"]},{id:"shellscript",scopeName:"source.shell",path:"shellscript.tmLanguage.json",displayName:"Shell",aliases:["bash","console","sh","shell","zsh"]},{id:"smalltalk",scopeName:"source.smalltalk",path:"smalltalk.tmLanguage.json",displayName:"Smalltalk"},{id:"solidity",scopeName:"source.solidity",path:"solidity.tmLanguage.json",displayName:"Solidity"},{id:"sparql",scopeName:"source.sparql",path:"sparql.tmLanguage.json",displayName:"SPARQL",samplePath:"sparql.sample",embeddedLangs:["turtle"]},{id:"sql",scopeName:"source.sql",path:"sql.tmLanguage.json",displayName:"SQL"},{id:"ssh-config",scopeName:"source.ssh-config",path:"ssh-config.tmLanguage.json",displayName:"SSH Config"},{id:"stata",scopeName:"source.stata",path:"stata.tmLanguage.json",displayName:"Stata",samplePath:"stata.sample",embeddedLangs:["sql"]},{id:"stylus",scopeName:"source.stylus",path:"stylus.tmLanguage.json",displayName:"Stylus",aliases:["styl"]},{id:"svelte",scopeName:"source.svelte",path:"svelte.tmLanguage.json",displayName:"Svelte",embeddedLangs:["javascript","typescript","coffee","stylus","sass","css","scss","less","postcss","pug","markdown"]},{id:"swift",scopeName:"source.swift",path:"swift.tmLanguage.json",displayName:"Swift"},{id:"system-verilog",scopeName:"source.systemverilog",path:"system-verilog.tmLanguage.json",displayName:"SystemVerilog"},{id:"tasl",scopeName:"source.tasl",path:"tasl.tmLanguage.json",displayName:"Tasl",samplePath:"tasl.sample"},{id:"tcl",scopeName:"source.tcl",path:"tcl.tmLanguage.json",displayName:"Tcl"},{id:"tex",scopeName:"text.tex",path:"tex.tmLanguage.json",displayName:"TeX",embeddedLangs:["r"]},{id:"toml",scopeName:"source.toml",path:"toml.tmLanguage.json",displayName:"TOML"},{id:"tsx",scopeName:"source.tsx",path:"tsx.tmLanguage.json",displayName:"TSX",samplePath:"tsx.sample"},{id:"turtle",scopeName:"source.turtle",path:"turtle.tmLanguage.json",displayName:"Turtle",samplePath:"turtle.sample"},{id:"twig",scopeName:"text.html.twig",path:"twig.tmLanguage.json",displayName:"Twig",embeddedLangs:["css","javascript","php","python","ruby"]},{id:"typescript",scopeName:"source.ts",path:"typescript.tmLanguage.json",displayName:"TypeScript",aliases:["ts"]},{id:"v",scopeName:"source.v",path:"v.tmLanguage.json",displayName:"V",samplePath:"v.sample"},{id:"vb",scopeName:"source.asp.vb.net",path:"vb.tmLanguage.json",displayName:"Visual Basic",aliases:["cmd"]},{id:"verilog",scopeName:"source.verilog",path:"verilog.tmLanguage.json",displayName:"Verilog"},{id:"vhdl",scopeName:"source.vhdl",path:"vhdl.tmLanguage.json",displayName:"VHDL"},{id:"viml",scopeName:"source.viml",path:"viml.tmLanguage.json",displayName:"Vim Script",aliases:["vim","vimscript"]},{id:"vue-html",scopeName:"text.html.vue-html",path:"vue-html.tmLanguage.json",displayName:"Vue HTML",embeddedLangs:["vue","javascript"]},{id:"vue",scopeName:"source.vue",path:"vue.tmLanguage.json",displayName:"Vue",embeddedLangs:["html","markdown","pug","stylus","sass","css","scss","less","javascript","typescript","jsx","tsx","json","jsonc","json5","yaml","toml","graphql"]},{id:"vyper",scopeName:"source.vyper",path:"vyper.tmLanguage.json",displayName:"Vyper",samplePath:"vyper.sample",aliases:["vy"]},{id:"wasm",scopeName:"source.wat",path:"wasm.tmLanguage.json",displayName:"WebAssembly"},{id:"wenyan",scopeName:"source.wenyan",path:"wenyan.tmLanguage.json",displayName:"Wenyan",aliases:["文言"]},{id:"wgsl",scopeName:"source.wgsl",path:"wgsl.tmLanguage.json",displayName:"WGSL",samplePath:"wgsl.sample"},{id:"wolfram",scopeName:"source.wolfram",path:"wolfram.tmLanguage.json",displayName:"Wolfram",samplePath:"wolfram.sample"},{id:"xml",scopeName:"text.xml",path:"xml.tmLanguage.json",displayName:"XML",embeddedLangs:["java"]},{id:"xsl",scopeName:"text.xml.xsl",path:"xsl.tmLanguage.json",displayName:"XSL",embeddedLangs:["xml"]},{id:"yaml",scopeName:"source.yaml",path:"yaml.tmLanguage.json",displayName:"YAML",aliases:["yml"]},{id:"zenscript",scopeName:"source.zenscript",path:"zenscript.tmLanguage.json",displayName:"ZenScript",samplePath:"zenscript.sample"}];var s=(e=>(e[e.NotSet=-1]="NotSet",e[e.None=0]="None",e[e.Italic=1]="Italic",e[e.Bold=2]="Bold",e[e.Underline=4]="Underline",e))(s||{});class n{static toBinaryStr(e){let t=e.toString(2);for(;t.length<32;)t="0"+t;return t}static printMetadata(e){let t=n.getLanguageId(e),s=n.getTokenType(e),a=n.getFontStyle(e),r=n.getForeground(e),o=n.getBackground(e);console.log({languageId:t,tokenType:s,fontStyle:a,foreground:r,background:o})}static getLanguageId(e){return(255&e)>>>0}static getTokenType(e){return(768&e)>>>8}static getFontStyle(e){return(14336&e)>>>11}static getForeground(e){return(8372224&e)>>>15}static getBackground(e){return(4286578688&e)>>>24}static containsBalancedBrackets(e){return 0!=(1024&e)}static set(e,t,s,a,r,o){let i=n.getLanguageId(e),c=n.getTokenType(e),l=n.getFontStyle(e),u=n.getForeground(e),p=n.getBackground(e);return 0!==t&&(i=t),0!==s&&(c=8===s?0:s),-1!==a&&(l=a),0!==r&&(u=r),0!==o&&(p=o),(i<<0|c<<8|l<<11|(n.containsBalancedBrackets(e)?1:0)<<10|u<<15|p<<24)>>>0}}function a(e){return e.endsWith("/")||e.endsWith("\\")?e.slice(0,-1):e}function r(e){return e.startsWith("./")?e.slice(2):e}function o(e){const t=e.split(/[\/\\]/g);return t.slice(0,t.length-1)}function i(...e){return e.map(a).map(r).join("/")}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var c,l={exports:{}};c=()=>{return e={770:function(e,t,s){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.setDefaultDebugCall=t.createOnigScanner=t.createOnigString=t.loadWASM=t.OnigScanner=t.OnigString=void 0;const a=n(s(418));let r=null,o=!1;class i{static _utf8ByteLength(e){let t=0;for(let s=0,n=e.length;s<n;s++){const a=e.charCodeAt(s);let r=a,o=!1;if(a>=55296&&a<=56319&&s+1<n){const t=e.charCodeAt(s+1);t>=56320&&t<=57343&&(r=65536+(a-55296<<10)|t-56320,o=!0)}t+=r<=127?1:r<=2047?2:r<=65535?3:4,o&&s++}return t}constructor(e){const t=e.length,s=i._utf8ByteLength(e),n=s!==t,a=n?new Uint32Array(t+1):null;n&&(a[t]=s);const r=n?new Uint32Array(s+1):null;n&&(r[s]=t);const o=new Uint8Array(s);let c=0;for(let s=0;s<t;s++){const i=e.charCodeAt(s);let l=i,u=!1;if(i>=55296&&i<=56319&&s+1<t){const t=e.charCodeAt(s+1);t>=56320&&t<=57343&&(l=65536+(i-55296<<10)|t-56320,u=!0)}n&&(a[s]=c,u&&(a[s+1]=c),l<=127?r[c+0]=s:l<=2047?(r[c+0]=s,r[c+1]=s):l<=65535?(r[c+0]=s,r[c+1]=s,r[c+2]=s):(r[c+0]=s,r[c+1]=s,r[c+2]=s,r[c+3]=s)),l<=127?o[c++]=l:l<=2047?(o[c++]=192|(1984&l)>>>6,o[c++]=128|(63&l)>>>0):l<=65535?(o[c++]=224|(61440&l)>>>12,o[c++]=128|(4032&l)>>>6,o[c++]=128|(63&l)>>>0):(o[c++]=240|(1835008&l)>>>18,o[c++]=128|(258048&l)>>>12,o[c++]=128|(4032&l)>>>6,o[c++]=128|(63&l)>>>0),u&&s++}this.utf16Length=t,this.utf8Length=s,this.utf16Value=e,this.utf8Value=o,this.utf16OffsetToUtf8=a,this.utf8OffsetToUtf16=r}createString(e){const t=e._omalloc(this.utf8Length);return e.HEAPU8.set(this.utf8Value,t),t}}class c{constructor(e){if(this.id=++c.LAST_ID,!r)throw new Error("Must invoke loadWASM first.");this._onigBinding=r,this.content=e;const t=new i(e);this.utf16Length=t.utf16Length,this.utf8Length=t.utf8Length,this.utf16OffsetToUtf8=t.utf16OffsetToUtf8,this.utf8OffsetToUtf16=t.utf8OffsetToUtf16,this.utf8Length<1e4&&!c._sharedPtrInUse?(c._sharedPtr||(c._sharedPtr=r._omalloc(1e4)),c._sharedPtrInUse=!0,r.HEAPU8.set(t.utf8Value,c._sharedPtr),this.ptr=c._sharedPtr):this.ptr=t.createString(r)}convertUtf8OffsetToUtf16(e){return this.utf8OffsetToUtf16?e<0?0:e>this.utf8Length?this.utf16Length:this.utf8OffsetToUtf16[e]:e}convertUtf16OffsetToUtf8(e){return this.utf16OffsetToUtf8?e<0?0:e>this.utf16Length?this.utf8Length:this.utf16OffsetToUtf8[e]:e}dispose(){this.ptr===c._sharedPtr?c._sharedPtrInUse=!1:this._onigBinding._ofree(this.ptr)}}t.OnigString=c,c.LAST_ID=0,c._sharedPtr=0,c._sharedPtrInUse=!1;class l{constructor(e){if(!r)throw new Error("Must invoke loadWASM first.");const t=[],s=[];for(let n=0,a=e.length;n<a;n++){const a=new i(e[n]);t[n]=a.createString(r),s[n]=a.utf8Length}const n=r._omalloc(4*e.length);r.HEAPU32.set(t,n/4);const a=r._omalloc(4*e.length);r.HEAPU32.set(s,a/4);const o=r._createOnigScanner(n,a,e.length);for(let s=0,n=e.length;s<n;s++)r._ofree(t[s]);r._ofree(a),r._ofree(n),0===o&&function(e){throw new Error(e.UTF8ToString(e._getLastOnigError()))}(r),this._onigBinding=r,this._ptr=o}dispose(){this._onigBinding._freeOnigScanner(this._ptr)}findNextMatchSync(e,t,s){let n=o,a=0;if("number"==typeof s?(8&s&&(n=!0),a=s):"boolean"==typeof s&&(n=s),"string"==typeof e){e=new c(e);const s=this._findNextMatchSync(e,t,n,a);return e.dispose(),s}return this._findNextMatchSync(e,t,n,a)}_findNextMatchSync(e,t,s,n){const a=this._onigBinding;let r;if(r=s?a._findNextOnigScannerMatchDbg(this._ptr,e.id,e.ptr,e.utf8Length,e.convertUtf16OffsetToUtf8(t),n):a._findNextOnigScannerMatch(this._ptr,e.id,e.ptr,e.utf8Length,e.convertUtf16OffsetToUtf8(t),n),0===r)return null;const o=a.HEAPU32;let i=r/4;const c=o[i++],l=o[i++];let u=[];for(let t=0;t<l;t++){const s=e.convertUtf8OffsetToUtf16(o[i++]),n=e.convertUtf8OffsetToUtf16(o[i++]);u[t]={start:s,end:n,length:n-s}}return{index:c,captureIndices:u}}}t.OnigScanner=l;let u=!1,p=null;t.loadWASM=function(e){if(u)return p;let t,s,n,o;if(u=!0,function(e){return"function"==typeof e.instantiator}(e))t=e.instantiator,s=e.print;else{let n;!function(e){return void 0!==e.data}(e)?n=e:(n=e.data,s=e.print),t=function(e){return"undefined"!=typeof Response&&e instanceof Response}(n)?"function"==typeof WebAssembly.instantiateStreaming?function(e){return t=>WebAssembly.instantiateStreaming(e,t)}(n):function(e){return async t=>{const s=await e.arrayBuffer();return WebAssembly.instantiate(s,t)}}(n):function(e){return t=>WebAssembly.instantiate(e,t)}(n)}return p=new Promise(((e,t)=>{n=e,o=t})),function(e,t,s,n){(0,a.default)({print:t,instantiateWasm:(t,s)=>{if("undefined"==typeof performance){const e=()=>Date.now();t.env.emscripten_get_now=e,t.wasi_snapshot_preview1.emscripten_get_now=e}return e(t).then((e=>s(e.instance)),n),{}}}).then((e=>{r=e,s()}))}(t,s,n,o),p},t.createOnigString=function(e){return new c(e)},t.createOnigScanner=function(e){return new l(e)},t.setDefaultDebugCall=function(e){o=e}},418:e=>{var t=("undefined"!=typeof document&&document.currentScript&&document.currentScript.src,function(e){var t,s,n=void 0!==(e=e||{})?e:{};n.ready=new Promise((function(e,n){t=e,s=n}));var a,r=Object.assign({},n),o=!1;a=function(e){let t;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(t=read(e,"binary"),function(e,t){e||C(t)}("object"==typeof t),t)},"undefined"!=typeof scriptArgs&&scriptArgs,"undefined"!=typeof onig_print&&("undefined"==typeof console&&(console={}),console.log=onig_print,console.warn=console.error="undefined"!=typeof printErr?printErr:onig_print);var i,c,l=n.print||console.log.bind(console),u=n.printErr||console.warn.bind(console);Object.assign(n,r),r=null,n.arguments&&n.arguments,n.thisProgram&&n.thisProgram,n.quit&&n.quit,n.wasmBinary&&(i=n.wasmBinary),n.noExitRuntime,"object"!=typeof WebAssembly&&C("no native wasm support detected");var p,h,d,m=!1,g="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function f(e,t,s){for(var n=t+s,a=t;e[a]&&!(a>=n);)++a;if(a-t>16&&e.buffer&&g)return g.decode(e.subarray(t,a));for(var r="";t<a;){var o=e[t++];if(128&o){var i=63&e[t++];if(192!=(224&o)){var c=63&e[t++];if((o=224==(240&o)?(15&o)<<12|i<<6|c:(7&o)<<18|i<<12|c<<6|63&e[t++])<65536)r+=String.fromCharCode(o);else{var l=o-65536;r+=String.fromCharCode(55296|l>>10,56320|1023&l)}}else r+=String.fromCharCode((31&o)<<6|i)}else r+=String.fromCharCode(o)}return r}function y(e){p=e,n.HEAP8=new Int8Array(e),n.HEAP16=new Int16Array(e),n.HEAP32=new Int32Array(e),n.HEAPU8=h=new Uint8Array(e),n.HEAPU16=new Uint16Array(e),n.HEAPU32=d=new Uint32Array(e),n.HEAPF32=new Float32Array(e),n.HEAPF64=new Float64Array(e)}n.INITIAL_MEMORY;var b=[],_=[],N=[];function k(e){b.unshift(e)}function L(e){N.unshift(e)}var S=0,v=null;function C(e){n.onAbort&&n.onAbort(e),u(e="Aborted("+e+")"),m=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw s(t),t}var j,w,P="data:application/octet-stream;base64,";function A(e){return e.startsWith(P)}function x(e){try{if(e==j&&i)return new Uint8Array(i);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}catch(e){C(e)}}function T(e){for(;e.length>0;)e.shift()(n)}function R(e){try{return c.grow(e-p.byteLength+65535>>>16),y(c.buffer),1}catch(e){}}A(j="onig.wasm")||(j=function(e){return n.locateFile?n.locateFile(e,""):""+e}(j)),w="undefined"!=typeof dateNow?dateNow:()=>performance.now();var I=[null,[],[]];function E(e,t){var s=I[e];0===t||10===t?((1===e?l:u)(f(s,0)),s.length=0):s.push(t)}var O,M={emscripten_get_now:w,emscripten_memcpy_big:function(e,t,s){h.copyWithin(e,t,t+s)},emscripten_resize_heap:function(e){var t,s=h.length,n=2147483648;if((e>>>=0)>n)return!1;for(var a=1;a<=4;a*=2){var r=s*(1+.2/a);if(r=Math.min(r,e+100663296),R(Math.min(n,(t=Math.max(e,r))+(65536-t%65536)%65536)))return!0}return!1},fd_write:function(e,t,s,n){for(var a=0,r=0;r<s;r++){var o=d[t>>2],i=d[t+4>>2];t+=8;for(var c=0;c<i;c++)E(e,h[o+c]);a+=i}return d[n>>2]=a,0}};function B(e){function s(){O||(O=!0,n.calledRun=!0,m||(T(_),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),function(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)L(n.postRun.shift());T(N)}()))}S>0||(function(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)k(n.preRun.shift());T(b)}(),S>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),s()}),1)):s()))}if(function(){var e={env:M,wasi_snapshot_preview1:M};function t(e,t){var s=e.exports;n.asm=s,y((c=n.asm.memory).buffer),n.asm.__indirect_function_table,function(e){_.unshift(e)}(n.asm.__wasm_call_ctors),function(e){if(S--,n.monitorRunDependencies&&n.monitorRunDependencies(S),0==S&&v){var t=v;v=null,t()}}()}function a(e){t(e.instance)}function r(t){return(i||!o||"function"!=typeof fetch?Promise.resolve().then((function(){return x(j)})):fetch(j,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+j+"'";return e.arrayBuffer()})).catch((function(){return x(j)}))).then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){u("failed to asynchronously prepare wasm: "+e),C(e)}))}if(S++,n.monitorRunDependencies&&n.monitorRunDependencies(S),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){u("Module.instantiateWasm callback failed with error: "+e),s(e)}(i||"function"!=typeof WebAssembly.instantiateStreaming||A(j)||"function"!=typeof fetch?r(a):fetch(j,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(a,(function(e){return u("wasm streaming compile failed: "+e),u("falling back to ArrayBuffer instantiation"),r(a)}))}))).catch(s)}(),n.___wasm_call_ctors=function(){return(n.___wasm_call_ctors=n.asm.__wasm_call_ctors).apply(null,arguments)},n.___errno_location=function(){return(n.___errno_location=n.asm.__errno_location).apply(null,arguments)},n._omalloc=function(){return(n._omalloc=n.asm.omalloc).apply(null,arguments)},n._ofree=function(){return(n._ofree=n.asm.ofree).apply(null,arguments)},n._getLastOnigError=function(){return(n._getLastOnigError=n.asm.getLastOnigError).apply(null,arguments)},n._createOnigScanner=function(){return(n._createOnigScanner=n.asm.createOnigScanner).apply(null,arguments)},n._freeOnigScanner=function(){return(n._freeOnigScanner=n.asm.freeOnigScanner).apply(null,arguments)},n._findNextOnigScannerMatch=function(){return(n._findNextOnigScannerMatch=n.asm.findNextOnigScannerMatch).apply(null,arguments)},n._findNextOnigScannerMatchDbg=function(){return(n._findNextOnigScannerMatchDbg=n.asm.findNextOnigScannerMatchDbg).apply(null,arguments)},n.stackSave=function(){return(n.stackSave=n.asm.stackSave).apply(null,arguments)},n.stackRestore=function(){return(n.stackRestore=n.asm.stackRestore).apply(null,arguments)},n.stackAlloc=function(){return(n.stackAlloc=n.asm.stackAlloc).apply(null,arguments)},n.dynCall_jiji=function(){return(n.dynCall_jiji=n.asm.dynCall_jiji).apply(null,arguments)},n.UTF8ToString=function(e,t){return e?f(h,e,t):""},v=function e(){O||B(),O||(v=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return B(),e.ready});e.exports=t}},t={},function s(n){var a=t[n];if(void 0!==a)return a.exports;var r=t[n]={exports:{}};return e[n].call(r.exports,r,r.exports,s),r.exports}(770);var e,t};var u,p,h,d,m=l.exports=c();function g(e,t=!1){const s=e.length;let n=0,a="",r=0,o=16,i=0,c=0,l=0,u=0,p=0;function h(t,s){let a=0,r=0;for(;a<t||!s;){let t=e.charCodeAt(n);if(t>=48&&t<=57)r=16*r+t-48;else if(t>=65&&t<=70)r=16*r+t-65+10;else{if(!(t>=97&&t<=102))break;r=16*r+t-97+10}n++,a++}return a<t&&(r=-1),r}function d(){if(a="",p=0,r=n,c=i,u=l,n>=s)return r=s,o=17;let t=e.charCodeAt(n);if(f(t)){do{n++,a+=String.fromCharCode(t),t=e.charCodeAt(n)}while(f(t));return o=15}if(y(t))return n++,a+=String.fromCharCode(t),13===t&&10===e.charCodeAt(n)&&(n++,a+="\n"),i++,l=n,o=14;switch(t){case 123:return n++,o=1;case 125:return n++,o=2;case 91:return n++,o=3;case 93:return n++,o=4;case 58:return n++,o=6;case 44:return n++,o=5;case 34:return n++,a=function(){let t="",a=n;for(;;){if(n>=s){t+=e.substring(a,n),p=2;break}const r=e.charCodeAt(n);if(34===r){t+=e.substring(a,n),n++;break}if(92!==r){if(r>=0&&r<=31){if(y(r)){t+=e.substring(a,n),p=2;break}p=6}n++}else{if(t+=e.substring(a,n),n++,n>=s){p=2;break}switch(e.charCodeAt(n++)){case 34:t+='"';break;case 92:t+="\\";break;case 47:t+="/";break;case 98:t+="\b";break;case 102:t+="\f";break;case 110:t+="\n";break;case 114:t+="\r";break;case 116:t+="\t";break;case 117:const e=h(4,!0);e>=0?t+=String.fromCharCode(e):p=4;break;default:p=5}a=n}}return t}(),o=10;case 47:const c=n-1;if(47===e.charCodeAt(n+1)){for(n+=2;n<s&&!y(e.charCodeAt(n));)n++;return a=e.substring(c,n),o=12}if(42===e.charCodeAt(n+1)){n+=2;const t=s-1;let r=!1;for(;n<t;){const t=e.charCodeAt(n);if(42===t&&47===e.charCodeAt(n+1)){n+=2,r=!0;break}n++,y(t)&&(13===t&&10===e.charCodeAt(n)&&n++,i++,l=n)}return r||(n++,p=1),a=e.substring(c,n),o=13}return a+=String.fromCharCode(t),n++,o=16;case 45:if(a+=String.fromCharCode(t),n++,n===s||!b(e.charCodeAt(n)))return o=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return a+=function(){let t=n;if(48===e.charCodeAt(n))n++;else for(n++;n<e.length&&b(e.charCodeAt(n));)n++;if(n<e.length&&46===e.charCodeAt(n)){if(n++,!(n<e.length&&b(e.charCodeAt(n))))return p=3,e.substring(t,n);for(n++;n<e.length&&b(e.charCodeAt(n));)n++}let s=n;if(n<e.length&&(69===e.charCodeAt(n)||101===e.charCodeAt(n)))if(n++,(n<e.length&&43===e.charCodeAt(n)||45===e.charCodeAt(n))&&n++,n<e.length&&b(e.charCodeAt(n))){for(n++;n<e.length&&b(e.charCodeAt(n));)n++;s=n}else p=3;return e.substring(t,s)}(),o=11;default:for(;n<s&&m(t);)n++,t=e.charCodeAt(n);if(r!==n){switch(a=e.substring(r,n),a){case"true":return o=8;case"false":return o=9;case"null":return o=7}return o=16}return a+=String.fromCharCode(t),n++,o=16}}function m(e){if(f(e)||y(e))return!1;switch(e){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}return{setPosition:function(e){n=e,a="",r=0,o=16,p=0},getPosition:()=>n,scan:t?function(){let e;do{e=d()}while(e>=12&&e<=15);return e}:d,getToken:()=>o,getTokenValue:()=>a,getTokenOffset:()=>r,getTokenLength:()=>n-r,getTokenStartLine:()=>c,getTokenStartCharacter:()=>r-u,getTokenError:()=>p}}function f(e){return 32===e||9===e}function y(e){return 10===e||13===e}function b(e){return e>=48&&e<=57}!function(e){e[e.lineFeed=10]="lineFeed",e[e.carriageReturn=13]="carriageReturn",e[e.space=32]="space",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.asterisk=42]="asterisk",e[e.backslash=92]="backslash",e[e.closeBrace=125]="closeBrace",e[e.closeBracket=93]="closeBracket",e[e.colon=58]="colon",e[e.comma=44]="comma",e[e.dot=46]="dot",e[e.doubleQuote=34]="doubleQuote",e[e.minus=45]="minus",e[e.openBrace=123]="openBrace",e[e.openBracket=91]="openBracket",e[e.plus=43]="plus",e[e.slash=47]="slash",e[e.formFeed=12]="formFeed",e[e.tab=9]="tab"}(u||(u={})),function(e){e.DEFAULT={allowTrailingComma:!1}}(p||(p={})),function(e){e[e.None=0]="None",e[e.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=2]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",e[e.InvalidUnicode=4]="InvalidUnicode",e[e.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",e[e.InvalidCharacter=6]="InvalidCharacter"}(h||(h={})),function(e){e[e.OpenBraceToken=1]="OpenBraceToken",e[e.CloseBraceToken=2]="CloseBraceToken",e[e.OpenBracketToken=3]="OpenBracketToken",e[e.CloseBracketToken=4]="CloseBracketToken",e[e.CommaToken=5]="CommaToken",e[e.ColonToken=6]="ColonToken",e[e.NullKeyword=7]="NullKeyword",e[e.TrueKeyword=8]="TrueKeyword",e[e.FalseKeyword=9]="FalseKeyword",e[e.StringLiteral=10]="StringLiteral",e[e.NumericLiteral=11]="NumericLiteral",e[e.LineCommentTrivia=12]="LineCommentTrivia",e[e.BlockCommentTrivia=13]="BlockCommentTrivia",e[e.LineBreakTrivia=14]="LineBreakTrivia",e[e.Trivia=15]="Trivia",e[e.Unknown=16]="Unknown",e[e.EOF=17]="EOF"}(d||(d={}));const _=function(e,t=[],s=p.DEFAULT){let n=null,a=[];const r=[];function o(e){Array.isArray(a)?a.push(e):null!==n&&(a[n]=e)}return function(e,t,s=p.DEFAULT){const n=g(e,!1),a=[];function r(e){return e?()=>e(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function o(e){return e?()=>e(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),(()=>a.slice())):()=>!0}function i(e){return e?t=>e(t,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function c(e){return e?t=>e(t,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),(()=>a.slice())):()=>!0}const l=o(t.onObjectBegin),u=c(t.onObjectProperty),h=r(t.onObjectEnd),d=o(t.onArrayBegin),m=r(t.onArrayEnd),f=c(t.onLiteralValue),y=i(t.onSeparator),b=r(t.onComment),_=i(t.onError),N=s&&s.disallowComments,k=s&&s.allowTrailingComma;function L(){for(;;){const e=n.scan();switch(n.getTokenError()){case 4:S(14);break;case 5:S(15);break;case 3:S(13);break;case 1:N||S(11);break;case 2:S(12);break;case 6:S(16)}switch(e){case 12:case 13:N?S(10):b();break;case 16:S(1);break;case 15:case 14:break;default:return e}}}function S(e,t=[],s=[]){if(_(e),t.length+s.length>0){let e=n.getToken();for(;17!==e;){if(-1!==t.indexOf(e)){L();break}if(-1!==s.indexOf(e))break;e=L()}}}function v(e){const t=n.getTokenValue();return e?f(t):(u(t),a.push(t)),L(),!0}function C(){switch(n.getToken()){case 11:const e=n.getTokenValue();let t=Number(e);isNaN(t)&&(S(2),t=0),f(t);break;case 7:f(null);break;case 8:f(!0);break;case 9:f(!1);break;default:return!1}return L(),!0}function j(){return 10!==n.getToken()?(S(3,[],[2,5]),!1):(v(!1),6===n.getToken()?(y(":"),L(),A()||S(4,[],[2,5])):S(5,[],[2,5]),a.pop(),!0)}function w(){l(),L();let e=!1;for(;2!==n.getToken()&&17!==n.getToken();){if(5===n.getToken()){if(e||S(4,[],[]),y(","),L(),2===n.getToken()&&k)break}else e&&S(6,[],[]);j()||S(4,[],[2,5]),e=!0}return h(),2!==n.getToken()?S(7,[2],[]):L(),!0}function P(){d(),L();let e=!0,t=!1;for(;4!==n.getToken()&&17!==n.getToken();){if(5===n.getToken()){if(t||S(4,[],[]),y(","),L(),4===n.getToken()&&k)break}else t&&S(6,[],[]);e?(a.push(0),e=!1):a[a.length-1]++,A()||S(4,[],[4,5]),t=!0}return m(),e||a.pop(),4!==n.getToken()?S(8,[4],[]):L(),!0}function A(){switch(n.getToken()){case 3:return P();case 1:return w();case 10:return v(!0);default:return C()}}if(L(),17===n.getToken())return!!s.allowEmptyContent||(S(4,[],[]),!1);if(!A())return S(4,[],[]),!1;17!==n.getToken()&&S(9,[],[])}(e,{onObjectBegin:()=>{const e={};o(e),r.push(a),a=e,n=null},onObjectProperty:e=>{n=e},onObjectEnd:()=>{a=r.pop()},onArrayBegin:()=>{const e=[];o(e),r.push(a),a=e,n=null},onArrayEnd:()=>{a=r.pop()},onLiteralValue:o,onError:(e,s,n)=>{t.push({error:e,offset:s,length:n})}},s),a[0]};var N;!function(e){e[e.InvalidSymbol=1]="InvalidSymbol",e[e.InvalidNumberFormat=2]="InvalidNumberFormat",e[e.PropertyNameExpected=3]="PropertyNameExpected",e[e.ValueExpected=4]="ValueExpected",e[e.ColonExpected=5]="ColonExpected",e[e.CommaExpected=6]="CommaExpected",e[e.CloseBraceExpected=7]="CloseBraceExpected",e[e.CloseBracketExpected=8]="CloseBracketExpected",e[e.EndOfFileExpected=9]="EndOfFileExpected",e[e.InvalidCommentToken=10]="InvalidCommentToken",e[e.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=12]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",e[e.InvalidUnicode=14]="InvalidUnicode",e[e.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",e[e.InvalidCharacter=16]="InvalidCharacter"}(N||(N={}));const k="undefined"!=typeof self&&void 0!==self.WorkerGlobalScope,L="process"in globalThis&&"undefined"!=typeof process&&void 0!==process.release&&"node"===process.release.name,S=k||!L;let v="",C="";const j="dist/";function w(e){v=e.endsWith("/")?e:e+"/"}function P(e){C=e}let A=null;function x(e){if(S)return`${v}${e}`;{const t=require("path");return t.isAbsolute(e)?e:t.resolve(__dirname,"..",e)}}async function T(e){const t=[],s=await async function(e){const t=x(e);if(S)return await fetch(t).then((e=>e.text()));{const e=require("fs");return await e.promises.readFile(t,"utf-8")}}(e);let n;try{n=JSON.parse(s)}catch(e){if(n=_(s,t,{allowTrailingComma:!0}),t.length)throw t[0]}return n}async function R(e){const t=I(await T(e));if(t.include){const s=await R(i(...o(e),t.include));s.settings&&(t.settings=s.settings.concat(t.settings)),s.bg&&!t.bg&&(t.bg=s.bg),s.colors&&(t.colors={...s.colors,...t.colors}),delete t.include}return t}function I(e){const t=e.type||"dark",s={name:e.name,type:t,...e,...M(e)};var n;return e.include&&(s.include=e.include),e.tokenColors&&(s.settings=e.tokenColors,delete s.tokenColors),(n=s).settings||(n.settings=[]),n.settings[0]&&n.settings[0].settings&&!n.settings[0].scope||n.settings.unshift({settings:{foreground:n.fg,background:n.bg}}),s}const E={light:"#333333",dark:"#bbbbbb"},O={light:"#fffffe",dark:"#1e1e1e"};function M(e){let t,s,n=e.settings?e.settings:e.tokenColors;const a=n?n.find((e=>!e.name&&!e.scope)):void 0;return a?.settings?.foreground&&(t=a.settings.foreground),a?.settings?.background&&(s=a.settings.background),!t&&e?.colors?.["editor.foreground"]&&(t=e.colors["editor.foreground"]),!s&&e?.colors?.["editor.background"]&&(s=e.colors["editor.background"]),t||(t="light"===e.type?E.light:E.dark),s||(s="light"===e.type?O.light:O.dark),{fg:t,bg:s}}class B{constructor(e,t){this.languagesPath="languages/",this.languageMap={},this.scopeToLangMap={},this._onigLibPromise=e,this._onigLibName=t}get onigLib(){return this._onigLibPromise}getOnigLibName(){return this._onigLibName}getLangRegistration(e){return this.languageMap[e]}async loadGrammar(e){const s=this.scopeToLangMap[e];if(!s)return null;if(s.grammar)return s.grammar;const n=await async function(e){return await T(e)}(t.includes(s)?`${this.languagesPath}${s.path}`:s.path);return s.grammar=n,n}addLanguage(e){this.languageMap[e.id]=e,e.aliases&&e.aliases.forEach((t=>{this.languageMap[t]=e})),this.scopeToLangMap[e.scopeName]=e}}var G,F,D={exports:{}};D.exports=(G={350:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UseOnigurumaFindOptions=t.DebugFlags=void 0,t.DebugFlags={InDebugMode:"undefined"!=typeof process&&!!process.env.VSCODE_TEXTMATE_DEBUG},t.UseOnigurumaFindOptions=!1},36:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.toOptionalTokenType=t.EncodedTokenAttributes=void 0,(s=t.EncodedTokenAttributes||(t.EncodedTokenAttributes={})).toBinaryStr=function(e){let t=e.toString(2);for(;t.length<32;)t="0"+t;return t},s.print=function(e){const t=s.getLanguageId(e),n=s.getTokenType(e),a=s.getFontStyle(e),r=s.getForeground(e),o=s.getBackground(e);console.log({languageId:t,tokenType:n,fontStyle:a,foreground:r,background:o})},s.getLanguageId=function(e){return(255&e)>>>0},s.getTokenType=function(e){return(768&e)>>>8},s.containsBalancedBrackets=function(e){return 0!=(1024&e)},s.getFontStyle=function(e){return(30720&e)>>>11},s.getForeground=function(e){return(16744448&e)>>>15},s.getBackground=function(e){return(4278190080&e)>>>24},s.set=function(e,t,n,a,r,o,i){let c=s.getLanguageId(e),l=s.getTokenType(e),u=s.containsBalancedBrackets(e)?1:0,p=s.getFontStyle(e),h=s.getForeground(e),d=s.getBackground(e);return 0!==t&&(c=t),8!==n&&(l=n),null!==a&&(u=a?1:0),-1!==r&&(p=r),0!==o&&(h=o),0!==i&&(d=i),(c<<0|l<<8|u<<10|p<<11|h<<15|d<<24)>>>0},t.toOptionalTokenType=function(e){return e}},996:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BasicScopeAttributesProvider=t.BasicScopeAttributes=void 0;const n=s(878);class a{constructor(e,t){this.languageId=e,this.tokenType=t}}t.BasicScopeAttributes=a;class r{constructor(e,t){this._getBasicScopeAttributes=new n.CachedFn((e=>{const t=this._scopeToLanguage(e),s=this._toStandardTokenType(e);return new a(t,s)})),this._defaultAttributes=new a(e,8),this._embeddedLanguagesMatcher=new o(Object.entries(t||{}))}getDefaultAttributes(){return this._defaultAttributes}getBasicScopeAttributes(e){return null===e?r._NULL_SCOPE_METADATA:this._getBasicScopeAttributes.get(e)}_scopeToLanguage(e){return this._embeddedLanguagesMatcher.match(e)||0}_toStandardTokenType(e){const t=e.match(r.STANDARD_TOKEN_TYPE_REGEXP);if(!t)return 8;switch(t[1]){case"comment":return 1;case"string":return 2;case"regex":return 3;case"meta.embedded":return 0}throw new Error("Unexpected match for standard token type!")}}t.BasicScopeAttributesProvider=r,r._NULL_SCOPE_METADATA=new a(0,0),r.STANDARD_TOKEN_TYPE_REGEXP=/\b(comment|string|regex|meta\.embedded)\b/;class o{constructor(e){if(0===e.length)this.values=null,this.scopesRegExp=null;else{this.values=new Map(e);const t=e.map((([e,t])=>n.escapeRegExpCharacters(e)));t.sort(),t.reverse(),this.scopesRegExp=new RegExp(`^((${t.join(")|(")}))($|\\.)`,"")}}match(e){if(!this.scopesRegExp)return;const t=e.match(this.scopesRegExp);return t?this.values.get(t[1]):void 0}}},947:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LineTokens=t.BalancedBracketSelectors=t.StateStack=t.AttributedScopeStack=t.Grammar=t.createGrammar=void 0;const n=s(350),a=s(36),r=s(736),o=s(44),i=s(792),c=s(583),l=s(878),u=s(996),p=s(47);function h(e,t,s,n,a){const o=r.createMatchers(t,d),c=i.RuleFactory.getCompiledRuleId(s,n,a.repository);for(const s of o)e.push({debugSelector:t,matcher:s.matcher,ruleId:c,grammar:a,priority:s.priority})}function d(e,t){if(t.length<e.length)return!1;let s=0;return e.every((e=>{for(let n=s;n<t.length;n++)if(m(t[n],e))return s=n+1,!0;return!1}))}function m(e,t){if(!e)return!1;if(e===t)return!0;const s=t.length;return e.length>s&&e.substr(0,s)===t&&"."===e[s]}t.createGrammar=function(e,t,s,n,a,r,o,i){return new g(e,t,s,n,a,r,o,i)};class g{constructor(e,t,s,n,a,o,i,c){if(this._rootScopeName=e,this.balancedBracketSelectors=o,this._onigLib=c,this._basicScopeAttributesProvider=new u.BasicScopeAttributesProvider(s,n),this._rootId=-1,this._lastRuleId=0,this._ruleId2desc=[null],this._includedGrammars={},this._grammarRepository=i,this._grammar=f(t,null),this._injections=null,this._tokenTypeMatchers=[],a)for(const e of Object.keys(a)){const t=r.createMatchers(e,d);for(const s of t)this._tokenTypeMatchers.push({matcher:s.matcher,type:a[e]})}}get themeProvider(){return this._grammarRepository}dispose(){for(const e of this._ruleId2desc)e&&e.dispose()}createOnigScanner(e){return this._onigLib.createOnigScanner(e)}createOnigString(e){return this._onigLib.createOnigString(e)}getMetadataForScope(e){return this._basicScopeAttributesProvider.getBasicScopeAttributes(e)}_collectInjections(){const e=[],t=this._rootScopeName,s=(e=>e===this._rootScopeName?this._grammar:this.getExternalGrammar(e))(t);if(s){const n=s.injections;if(n)for(let t in n)h(e,t,n[t],this,s);const a=this._grammarRepository.injections(t);a&&a.forEach((t=>{const s=this.getExternalGrammar(t);if(s){const t=s.injectionSelector;t&&h(e,t,s,this,s)}}))}return e.sort(((e,t)=>e.priority-t.priority)),e}getInjections(){if(null===this._injections&&(this._injections=this._collectInjections(),n.DebugFlags.InDebugMode&&this._injections.length>0)){console.log(`Grammar ${this._rootScopeName} contains the following injections:`);for(const e of this._injections)console.log(` - ${e.debugSelector}`)}return this._injections}registerRule(e){const t=++this._lastRuleId,s=e(i.ruleIdFromNumber(t));return this._ruleId2desc[t]=s,s}getRule(e){return this._ruleId2desc[i.ruleIdToNumber(e)]}getExternalGrammar(e,t){if(this._includedGrammars[e])return this._includedGrammars[e];if(this._grammarRepository){const s=this._grammarRepository.lookup(e);if(s)return this._includedGrammars[e]=f(s,t&&t.$base),this._includedGrammars[e]}}tokenizeLine(e,t,s=0){const n=this._tokenize(e,t,!1,s);return{tokens:n.lineTokens.getResult(n.ruleStack,n.lineLength),ruleStack:n.ruleStack,stoppedEarly:n.stoppedEarly}}tokenizeLine2(e,t,s=0){const n=this._tokenize(e,t,!0,s);return{tokens:n.lineTokens.getBinaryResult(n.ruleStack,n.lineLength),ruleStack:n.ruleStack,stoppedEarly:n.stoppedEarly}}_tokenize(e,t,s,n){let r;if(-1===this._rootId&&(this._rootId=i.RuleFactory.getCompiledRuleId(this._grammar.repository.$self,this,this._grammar.repository)),t&&t!==b.NULL)r=!1,t.reset();else{r=!0;const e=this._basicScopeAttributesProvider.getDefaultAttributes(),s=this.themeProvider.getDefaults(),n=a.EncodedTokenAttributes.set(0,e.languageId,e.tokenType,null,s.fontStyle,s.foregroundId,s.backgroundId),o=this.getRule(this._rootId).getName(null,null);let i;i=o?y.createRootAndLookUpScopeName(o,n,this):y.createRoot("unknown",n),t=new b(null,this._rootId,-1,-1,!1,null,i,i)}e+="\n";const c=this.createOnigString(e),l=c.content.length,u=new _(s,e,this._tokenTypeMatchers,this.balancedBracketSelectors),h=p._tokenizeString(this,c,r,0,t,u,!0,n);return o.disposeOnigString(c),{lineLength:l,lineTokens:u,ruleStack:h.stack,stoppedEarly:h.stoppedEarly}}}function f(e,t){return(e=l.clone(e)).repository=e.repository||{},e.repository.$self={$vscodeTextmateLocation:e.$vscodeTextmateLocation,patterns:e.patterns,name:e.scopeName},e.repository.$base=t||e.repository.$self,e}t.Grammar=g;class y{constructor(e,t,s){this.parent=e,this.scopePath=t,this.tokenAttributes=s}static createRoot(e,t){return new y(null,new c.ScopeStack(null,e),t)}static createRootAndLookUpScopeName(e,t,s){const n=s.getMetadataForScope(e),a=new c.ScopeStack(null,e),r=s.themeProvider.themeMatch(a),o=y.mergeAttributes(t,n,r);return new y(null,a,o)}get scopeName(){return this.scopePath.scopeName}equals(e){return y._equals(this,e)}static _equals(e,t){for(;;){if(e===t)return!0;if(!e&&!t)return!0;if(!e||!t)return!1;if(e.scopeName!==t.scopeName||e.tokenAttributes!==t.tokenAttributes)return!1;e=e.parent,t=t.parent}}static mergeAttributes(e,t,s){let n=-1,r=0,o=0;return null!==s&&(n=s.fontStyle,r=s.foregroundId,o=s.backgroundId),a.EncodedTokenAttributes.set(e,t.languageId,t.tokenType,null,n,r,o)}pushAttributed(e,t){if(null===e)return this;if(-1===e.indexOf(" "))return y._pushAttributed(this,e,t);const s=e.split(/ /g);let n=this;for(const e of s)n=y._pushAttributed(n,e,t);return n}static _pushAttributed(e,t,s){const n=s.getMetadataForScope(t),a=e.scopePath.push(t),r=s.themeProvider.themeMatch(a),o=y.mergeAttributes(e.tokenAttributes,n,r);return new y(e,a,o)}getScopeNames(){return this.scopePath.getSegments()}}t.AttributedScopeStack=y;class b{constructor(e,t,s,n,a,r,o,i){this.parent=e,this.ruleId=t,this.beginRuleCapturedEOL=a,this.endRule=r,this.nameScopesList=o,this.contentNameScopesList=i,this._stackElementBrand=void 0,this.depth=this.parent?this.parent.depth+1:1,this._enterPos=s,this._anchorPos=n}equals(e){return null!==e&&b._equals(this,e)}static _equals(e,t){return e===t||!!this._structuralEquals(e,t)&&e.contentNameScopesList.equals(t.contentNameScopesList)}static _structuralEquals(e,t){for(;;){if(e===t)return!0;if(!e&&!t)return!0;if(!e||!t)return!1;if(e.depth!==t.depth||e.ruleId!==t.ruleId||e.endRule!==t.endRule)return!1;e=e.parent,t=t.parent}}clone(){return this}static _reset(e){for(;e;)e._enterPos=-1,e._anchorPos=-1,e=e.parent}reset(){b._reset(this)}pop(){return this.parent}safePop(){return this.parent?this.parent:this}push(e,t,s,n,a,r,o){return new b(this,e,t,s,n,a,r,o)}getEnterPos(){return this._enterPos}getAnchorPos(){return this._anchorPos}getRule(e){return e.getRule(this.ruleId)}toString(){const e=[];return this._writeString(e,0),"["+e.join(",")+"]"}_writeString(e,t){return this.parent&&(t=this.parent._writeString(e,t)),e[t++]=`(${this.ruleId}, TODO-${this.nameScopesList}, TODO-${this.contentNameScopesList})`,t}withContentNameScopesList(e){return this.contentNameScopesList===e?this:this.parent.push(this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,this.endRule,this.nameScopesList,e)}withEndRule(e){return this.endRule===e?this:new b(this.parent,this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,e,this.nameScopesList,this.contentNameScopesList)}hasSameRuleAs(e){let t=this;for(;t&&t._enterPos===e._enterPos;){if(t.ruleId===e.ruleId)return!0;t=t.parent}return!1}}t.StateStack=b,b.NULL=new b(null,0,0,0,!1,null,null,null),t.BalancedBracketSelectors=class{constructor(e,t){this.allowAny=!1,this.balancedBracketScopes=e.flatMap((e=>"*"===e?(this.allowAny=!0,[]):r.createMatchers(e,d).map((e=>e.matcher)))),this.unbalancedBracketScopes=t.flatMap((e=>r.createMatchers(e,d).map((e=>e.matcher))))}get matchesAlways(){return this.allowAny&&0===this.unbalancedBracketScopes.length}get matchesNever(){return 0===this.balancedBracketScopes.length&&!this.allowAny}match(e){for(const t of this.unbalancedBracketScopes)if(t(e))return!1;for(const t of this.balancedBracketScopes)if(t(e))return!0;return this.allowAny}};class _{constructor(e,t,s,a){this.balancedBracketSelectors=a,this._emitBinaryTokens=e,this._tokenTypeOverrides=s,n.DebugFlags.InDebugMode?this._lineText=t:this._lineText=null,this._tokens=[],this._binaryTokens=[],this._lastTokenEndIndex=0}produce(e,t){this.produceFromScopes(e.contentNameScopesList,t)}produceFromScopes(e,t){if(this._lastTokenEndIndex>=t)return;if(this._emitBinaryTokens){let s=e.tokenAttributes,r=!1;if(this.balancedBracketSelectors?.matchesAlways&&(r=!0),this._tokenTypeOverrides.length>0||this.balancedBracketSelectors&&!this.balancedBracketSelectors.matchesAlways&&!this.balancedBracketSelectors.matchesNever){const t=e.getScopeNames();for(const e of this._tokenTypeOverrides)e.matcher(t)&&(s=a.EncodedTokenAttributes.set(s,0,a.toOptionalTokenType(e.type),null,-1,0,0));this.balancedBracketSelectors&&(r=this.balancedBracketSelectors.match(t))}if(r&&(s=a.EncodedTokenAttributes.set(s,0,8,r,-1,0,0)),this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-1]===s)return void(this._lastTokenEndIndex=t);if(n.DebugFlags.InDebugMode){const s=e.getScopeNames();console.log(" token: |"+this._lineText.substring(this._lastTokenEndIndex,t).replace(/\n$/,"\\n")+"|");for(let e=0;e<s.length;e++)console.log(" * "+s[e])}return this._binaryTokens.push(this._lastTokenEndIndex),this._binaryTokens.push(s),void(this._lastTokenEndIndex=t)}const s=e.getScopeNames();if(n.DebugFlags.InDebugMode){console.log(" token: |"+this._lineText.substring(this._lastTokenEndIndex,t).replace(/\n$/,"\\n")+"|");for(let e=0;e<s.length;e++)console.log(" * "+s[e])}this._tokens.push({startIndex:this._lastTokenEndIndex,endIndex:t,scopes:s}),this._lastTokenEndIndex=t}getResult(e,t){return this._tokens.length>0&&this._tokens[this._tokens.length-1].startIndex===t-1&&this._tokens.pop(),0===this._tokens.length&&(this._lastTokenEndIndex=-1,this.produce(e,t),this._tokens[this._tokens.length-1].startIndex=0),this._tokens}getBinaryResult(e,t){this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-2]===t-1&&(this._binaryTokens.pop(),this._binaryTokens.pop()),0===this._binaryTokens.length&&(this._lastTokenEndIndex=-1,this.produce(e,t),this._binaryTokens[this._binaryTokens.length-2]=0);const s=new Uint32Array(this._binaryTokens.length);for(let e=0,t=this._binaryTokens.length;e<t;e++)s[e]=this._binaryTokens[e];return s}}t.LineTokens=_},965:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseInclude=t.TopLevelRepositoryReference=t.TopLevelReference=t.RelativeReference=t.SelfReference=t.BaseReference=t.ScopeDependencyProcessor=t.ExternalReferenceCollector=t.TopLevelRepositoryRuleReference=t.TopLevelRuleReference=void 0;const n=s(878);class a{constructor(e){this.scopeName=e}toKey(){return this.scopeName}}t.TopLevelRuleReference=a;class r{constructor(e,t){this.scopeName=e,this.ruleName=t}toKey(){return`${this.scopeName}#${this.ruleName}`}}t.TopLevelRepositoryRuleReference=r;class o{constructor(){this._references=[],this._seenReferenceKeys=new Set,this.visitedRule=new Set}get references(){return this._references}add(e){const t=e.toKey();this._seenReferenceKeys.has(t)||(this._seenReferenceKeys.add(t),this._references.push(e))}}function i(e,t,s,n){const r=s.lookup(e.scopeName);if(!r){if(e.scopeName===t)throw new Error(`No grammar provided for <${t}>`);return}const o=s.lookup(t);e instanceof a?l({baseGrammar:o,selfGrammar:r},n):c(e.ruleName,{baseGrammar:o,selfGrammar:r,repository:r.repository},n);const i=s.injections(e.scopeName);if(i)for(const e of i)n.add(new a(e))}function c(e,t,s){t.repository&&t.repository[e]&&u([t.repository[e]],t,s)}function l(e,t){e.selfGrammar.patterns&&Array.isArray(e.selfGrammar.patterns)&&u(e.selfGrammar.patterns,{...e,repository:e.selfGrammar.repository},t),e.selfGrammar.injections&&u(Object.values(e.selfGrammar.injections),{...e,repository:e.selfGrammar.repository},t)}function u(e,t,s){for(const o of e){if(s.visitedRule.has(o))continue;s.visitedRule.add(o);const e=o.repository?n.mergeObjects({},t.repository,o.repository):t.repository;Array.isArray(o.patterns)&&u(o.patterns,{...t,repository:e},s);const i=o.include;if(!i)continue;const p=f(i);switch(p.kind){case 0:l({...t,selfGrammar:t.baseGrammar},s);break;case 1:l(t,s);break;case 2:c(p.ruleName,{...t,repository:e},s);break;case 3:case 4:const n=p.scopeName===t.selfGrammar.scopeName?t.selfGrammar:p.scopeName===t.baseGrammar.scopeName?t.baseGrammar:void 0;if(n){const a={baseGrammar:t.baseGrammar,selfGrammar:n,repository:e};4===p.kind?c(p.ruleName,a,s):l(a,s)}else 4===p.kind?s.add(new r(p.scopeName,p.ruleName)):s.add(new a(p.scopeName))}}}t.ExternalReferenceCollector=o,t.ScopeDependencyProcessor=class{constructor(e,t){this.repo=e,this.initialScopeName=t,this.seenFullScopeRequests=new Set,this.seenPartialScopeRequests=new Set,this.seenFullScopeRequests.add(this.initialScopeName),this.Q=[new a(this.initialScopeName)]}processQueue(){const e=this.Q;this.Q=[];const t=new o;for(const s of e)i(s,this.initialScopeName,this.repo,t);for(const e of t.references)if(e instanceof a){if(this.seenFullScopeRequests.has(e.scopeName))continue;this.seenFullScopeRequests.add(e.scopeName),this.Q.push(e)}else{if(this.seenFullScopeRequests.has(e.scopeName))continue;if(this.seenPartialScopeRequests.has(e.toKey()))continue;this.seenPartialScopeRequests.add(e.toKey()),this.Q.push(e)}}};class p{constructor(){this.kind=0}}t.BaseReference=p;class h{constructor(){this.kind=1}}t.SelfReference=h;class d{constructor(e){this.ruleName=e,this.kind=2}}t.RelativeReference=d;class m{constructor(e){this.scopeName=e,this.kind=3}}t.TopLevelReference=m;class g{constructor(e,t){this.scopeName=e,this.ruleName=t,this.kind=4}}function f(e){if("$base"===e)return new p;if("$self"===e)return new h;const t=e.indexOf("#");if(-1===t)return new m(e);if(0===t)return new d(e.substring(1));{const s=e.substring(0,t),n=e.substring(t+1);return new g(s,n)}}t.TopLevelRepositoryReference=g,t.parseInclude=f},391:function(e,t,s){var n=this&&this.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),a=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||n(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),a(s(947),t)},47:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LocalStackElement=t._tokenizeString=void 0;const n=s(350),a=s(44),r=s(792),o=s(878);class i{constructor(e,t){this.stack=e,this.stoppedEarly=t}}function c(e,t,s,a,c,p,d,m){const g=t.content.length;let f=!1,y=-1;if(d){const o=function(e,t,s,a,o,i){let c=o.beginRuleCapturedEOL?0:-1;const l=[];for(let t=o;t;t=t.pop()){const s=t.getRule(e);s instanceof r.BeginWhileRule&&l.push({rule:s,stack:t})}for(let p=l.pop();p;p=l.pop()){const{ruleScanner:l,findOptions:d}=u(p.rule,e,p.stack.endRule,s,a===c),m=l.findNextMatchSync(t,a,d);if(n.DebugFlags.InDebugMode&&(console.log(" scanning for while rule"),console.log(l.toString())),!m){n.DebugFlags.InDebugMode&&console.log(" popping "+p.rule.debugName+" - "+p.rule.debugWhileRegExp),o=p.stack.pop();break}if(m.ruleId!==r.whileRuleId){o=p.stack.pop();break}m.captureIndices&&m.captureIndices.length&&(i.produce(p.stack,m.captureIndices[0].start),h(e,t,s,p.stack,i,p.rule.whileCaptures,m.captureIndices),i.produce(p.stack,m.captureIndices[0].end),c=m.captureIndices[0].end,m.captureIndices[0].end>a&&(a=m.captureIndices[0].end,s=!1))}return{stack:o,linePos:a,anchorPosition:c,isFirstLine:s}}(e,t,s,a,c,p);c=o.stack,a=o.linePos,s=o.isFirstLine,y=o.anchorPosition}const b=Date.now();for(;!f;){if(0!==m&&Date.now()-b>m)return new i(c,!0);_()}return new i(c,!1);function _(){n.DebugFlags.InDebugMode&&(console.log(""),console.log(`@@scanNext ${a}: |${t.content.substr(a).replace(/\n$/,"\\n")}|`));const i=function(e,t,s,a,r,i){const c=function(e,t,s,a,r,i){const c=r.getRule(e),{ruleScanner:u,findOptions:p}=l(c,e,r.endRule,s,a===i);let h=0;n.DebugFlags.InDebugMode&&(h=o.performanceNow());const d=u.findNextMatchSync(t,a,p);if(n.DebugFlags.InDebugMode){const e=o.performanceNow()-h;e>5&&console.warn(`Rule ${c.debugName} (${c.id}) matching took ${e} against '${t}'`),console.log(` scanning for (linePos: ${a}, anchorPosition: ${i})`),console.log(u.toString()),d&&console.log(`matched rule id: ${d.ruleId} from ${d.captureIndices[0].start} to ${d.captureIndices[0].end}`)}return d?{captureIndices:d.captureIndices,matchedRuleId:d.ruleId}:null}(e,t,s,a,r,i),u=e.getInjections();if(0===u.length)return c;const p=function(e,t,s,a,r,o,i){let c,u=Number.MAX_VALUE,p=null,h=0;const d=o.contentNameScopesList.getScopeNames();for(let o=0,m=e.length;o<m;o++){const m=e[o];if(!m.matcher(d))continue;const g=t.getRule(m.ruleId),{ruleScanner:f,findOptions:y}=l(g,t,null,a,r===i),b=f.findNextMatchSync(s,r,y);if(!b)continue;n.DebugFlags.InDebugMode&&(console.log(` matched injection: ${m.debugSelector}`),console.log(f.toString()));const _=b.captureIndices[0].start;if(!(_>=u)&&(u=_,p=b.captureIndices,c=b.ruleId,h=m.priority,u===r))break}return p?{priorityMatch:-1===h,captureIndices:p,matchedRuleId:c}:null}(u,e,t,s,a,r,i);if(!p)return c;if(!c)return p;const h=c.captureIndices[0].start,d=p.captureIndices[0].start;return d<h||p.priorityMatch&&d===h?p:c}(e,t,s,a,c,y);if(!i)return n.DebugFlags.InDebugMode&&console.log(" no more matches."),p.produce(c,g),void(f=!0);const u=i.captureIndices,d=i.matchedRuleId,m=!!(u&&u.length>0)&&u[0].end>a;if(d===r.endRuleId){const r=c.getRule(e);n.DebugFlags.InDebugMode&&console.log(" popping "+r.debugName+" - "+r.debugEndRegExp),p.produce(c,u[0].start),c=c.withContentNameScopesList(c.nameScopesList),h(e,t,s,c,p,r.endCaptures,u),p.produce(c,u[0].end);const o=c;if(c=c.parent,y=o.getAnchorPos(),!m&&o.getEnterPos()===a)return n.DebugFlags.InDebugMode&&console.error("[1] - Grammar is in an endless loop - Grammar pushed & popped a rule without advancing"),c=o,p.produce(c,g),void(f=!0)}else{const o=e.getRule(d);p.produce(c,u[0].start);const i=c,l=o.getName(t.content,u),b=c.contentNameScopesList.pushAttributed(l,e);if(c=c.push(d,a,y,u[0].end===g,null,b,b),o instanceof r.BeginEndRule){const a=o;n.DebugFlags.InDebugMode&&console.log(" pushing "+a.debugName+" - "+a.debugBeginRegExp),h(e,t,s,c,p,a.beginCaptures,u),p.produce(c,u[0].end),y=u[0].end;const r=a.getContentName(t.content,u),l=b.pushAttributed(r,e);if(c=c.withContentNameScopesList(l),a.endHasBackReferences&&(c=c.withEndRule(a.getEndWithResolvedBackReferences(t.content,u))),!m&&i.hasSameRuleAs(c))return n.DebugFlags.InDebugMode&&console.error("[2] - Grammar is in an endless loop - Grammar pushed the same rule without advancing"),c=c.pop(),p.produce(c,g),void(f=!0)}else if(o instanceof r.BeginWhileRule){const a=o;n.DebugFlags.InDebugMode&&console.log(" pushing "+a.debugName),h(e,t,s,c,p,a.beginCaptures,u),p.produce(c,u[0].end),y=u[0].end;const r=a.getContentName(t.content,u),l=b.pushAttributed(r,e);if(c=c.withContentNameScopesList(l),a.whileHasBackReferences&&(c=c.withEndRule(a.getWhileWithResolvedBackReferences(t.content,u))),!m&&i.hasSameRuleAs(c))return n.DebugFlags.InDebugMode&&console.error("[3] - Grammar is in an endless loop - Grammar pushed the same rule without advancing"),c=c.pop(),p.produce(c,g),void(f=!0)}else{const a=o;if(n.DebugFlags.InDebugMode&&console.log(" matched "+a.debugName+" - "+a.debugMatchRegExp),h(e,t,s,c,p,a.captures,u),p.produce(c,u[0].end),c=c.pop(),!m)return n.DebugFlags.InDebugMode&&console.error("[4] - Grammar is in an endless loop - Grammar is not advancing, nor is it pushing/popping"),c=c.safePop(),p.produce(c,g),void(f=!0)}}u[0].end>a&&(a=u[0].end,s=!1)}}function l(e,t,s,a,r){return n.UseOnigurumaFindOptions?{ruleScanner:e.compile(t,s),findOptions:p(a,r)}:{ruleScanner:e.compileAG(t,s,a,r),findOptions:0}}function u(e,t,s,a,r){return n.UseOnigurumaFindOptions?{ruleScanner:e.compileWhile(t,s),findOptions:p(a,r)}:{ruleScanner:e.compileWhileAG(t,s,a,r),findOptions:0}}function p(e,t){let s=0;return e||(s|=1),t||(s|=4),s}function h(e,t,s,n,r,o,i){if(0===o.length)return;const l=t.content,u=Math.min(o.length,i.length),p=[],h=i[0].end;for(let t=0;t<u;t++){const u=o[t];if(null===u)continue;const m=i[t];if(0===m.length)continue;if(m.start>h)break;for(;p.length>0&&p[p.length-1].endPos<=m.start;)r.produceFromScopes(p[p.length-1].scopes,p[p.length-1].endPos),p.pop();if(p.length>0?r.produceFromScopes(p[p.length-1].scopes,m.start):r.produce(n,m.start),u.retokenizeCapturedWithRuleId){const t=u.getName(l,i),o=n.contentNameScopesList.pushAttributed(t,e),p=u.getContentName(l,i),h=o.pushAttributed(p,e),d=n.push(u.retokenizeCapturedWithRuleId,m.start,-1,!1,null,o,h),g=e.createOnigString(l.substring(0,m.end));c(e,g,s&&0===m.start,m.start,d,r,!1,0),a.disposeOnigString(g);continue}const g=u.getName(l,i);if(null!==g){const t=(p.length>0?p[p.length-1].scopes:n.contentNameScopesList).pushAttributed(g,e);p.push(new d(t,m.end))}}for(;p.length>0;)r.produceFromScopes(p[p.length-1].scopes,p[p.length-1].endPos),p.pop()}t._tokenizeString=c;class d{constructor(e,t){this.scopes=e,this.endPos=t}}t.LocalStackElement=d},974:(e,t)=>{function s(e,t){throw new Error("Near offset "+e.pos+": "+t+" ~~~"+e.source.substr(e.pos,50)+"~~~")}Object.defineProperty(t,"__esModule",{value:!0}),t.parseJSON=void 0,t.parseJSON=function(e,t,o){let i=new n(e),c=new a,l=0,u=null,p=[],h=[];function d(){p.push(l),h.push(u)}function m(){l=p.pop(),u=h.pop()}function g(e){s(i,e)}for(;r(i,c);){if(0===l){if(null!==u&&g("too many constructs in root"),3===c.type){u={},o&&(u.$vscodeTextmateLocation=c.toLocation(t)),d(),l=1;continue}if(2===c.type){u=[],d(),l=4;continue}g("unexpected token in root")}if(2===l){if(5===c.type){m();continue}if(7===c.type){l=3;continue}g("expected , or }")}if(1===l||3===l){if(1===l&&5===c.type){m();continue}if(1===c.type){let e=c.value;if(r(i,c)&&6===c.type||g("expected colon"),r(i,c)||g("expected value"),l=2,1===c.type){u[e]=c.value;continue}if(8===c.type){u[e]=null;continue}if(9===c.type){u[e]=!0;continue}if(10===c.type){u[e]=!1;continue}if(11===c.type){u[e]=parseFloat(c.value);continue}if(2===c.type){let t=[];u[e]=t,d(),l=4,u=t;continue}if(3===c.type){let s={};o&&(s.$vscodeTextmateLocation=c.toLocation(t)),u[e]=s,d(),l=1,u=s;continue}}g("unexpected token in dict")}if(5===l){if(4===c.type){m();continue}if(7===c.type){l=6;continue}g("expected , or ]")}if(4===l||6===l){if(4===l&&4===c.type){m();continue}if(l=5,1===c.type){u.push(c.value);continue}if(8===c.type){u.push(null);continue}if(9===c.type){u.push(!0);continue}if(10===c.type){u.push(!1);continue}if(11===c.type){u.push(parseFloat(c.value));continue}if(2===c.type){let e=[];u.push(e),d(),l=4,u=e;continue}if(3===c.type){let e={};o&&(e.$vscodeTextmateLocation=c.toLocation(t)),u.push(e),d(),l=1,u=e;continue}g("unexpected token in array")}g("unknown state")}return 0!==h.length&&g("unclosed constructs"),u};class n{constructor(e){this.source=e,this.pos=0,this.len=e.length,this.line=1,this.char=0}}class a{constructor(){this.value=null,this.type=0,this.offset=-1,this.len=-1,this.line=-1,this.char=-1}toLocation(e){return{filename:e,line:this.line,char:this.char}}}function r(e,t){t.value=null,t.type=0,t.offset=-1,t.len=-1,t.line=-1,t.char=-1;let n,a=e.source,r=e.pos,o=e.len,i=e.line,c=e.char;for(;;){if(r>=o)return!1;if(n=a.charCodeAt(r),32!==n&&9!==n&&13!==n){if(10!==n)break;r++,i++,c=0}else r++,c++}if(t.offset=r,t.line=i,t.char=c,34===n){for(t.type=1,r++,c++;;){if(r>=o)return!1;if(n=a.charCodeAt(r),r++,c++,92!==n){if(34===n)break}else r++,c++}t.value=a.substring(t.offset+1,r-1).replace(/\\u([0-9A-Fa-f]{4})/g,((e,t)=>String.fromCodePoint(parseInt(t,16)))).replace(/\\(.)/g,((t,n)=>{switch(n){case'"':return'"';case"\\":return"\\";case"/":return"/";case"b":return"\b";case"f":return"\f";case"n":return"\n";case"r":return"\r";case"t":return"\t";default:s(e,"invalid escape sequence")}throw new Error("unreachable")}))}else if(91===n)t.type=2,r++,c++;else if(123===n)t.type=3,r++,c++;else if(93===n)t.type=4,r++,c++;else if(125===n)t.type=5,r++,c++;else if(58===n)t.type=6,r++,c++;else if(44===n)t.type=7,r++,c++;else if(110===n){if(t.type=8,r++,c++,n=a.charCodeAt(r),117!==n)return!1;if(r++,c++,n=a.charCodeAt(r),108!==n)return!1;if(r++,c++,n=a.charCodeAt(r),108!==n)return!1;r++,c++}else if(116===n){if(t.type=9,r++,c++,n=a.charCodeAt(r),114!==n)return!1;if(r++,c++,n=a.charCodeAt(r),117!==n)return!1;if(r++,c++,n=a.charCodeAt(r),101!==n)return!1;r++,c++}else if(102===n){if(t.type=10,r++,c++,n=a.charCodeAt(r),97!==n)return!1;if(r++,c++,n=a.charCodeAt(r),108!==n)return!1;if(r++,c++,n=a.charCodeAt(r),115!==n)return!1;if(r++,c++,n=a.charCodeAt(r),101!==n)return!1;r++,c++}else for(t.type=11;;){if(r>=o)return!1;if(n=a.charCodeAt(r),!(46===n||n>=48&&n<=57||101===n||69===n||45===n||43===n))break;r++,c++}return t.len=r-t.offset,null===t.value&&(t.value=a.substr(t.offset,t.len)),e.pos=r,e.line=i,e.char=c,!0}},787:function(e,t,s){var n=this&&this.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),a=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||n(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),t.parseRawGrammar=t.INITIAL=t.Registry=void 0;const r=s(391),o=s(50),i=s(652),c=s(583),l=s(965);a(s(44),t),t.Registry=class{constructor(e){this._options=e,this._syncRegistry=new i.SyncRegistry(c.Theme.createFromRawTheme(e.theme,e.colorMap),e.onigLib),this._ensureGrammarCache=new Map}dispose(){this._syncRegistry.dispose()}setTheme(e,t){this._syncRegistry.setTheme(c.Theme.createFromRawTheme(e,t))}getColorMap(){return this._syncRegistry.getColorMap()}loadGrammarWithEmbeddedLanguages(e,t,s){return this.loadGrammarWithConfiguration(e,t,{embeddedLanguages:s})}loadGrammarWithConfiguration(e,t,s){return this._loadGrammar(e,t,s.embeddedLanguages,s.tokenTypes,new r.BalancedBracketSelectors(s.balancedBracketSelectors||[],s.unbalancedBracketSelectors||[]))}loadGrammar(e){return this._loadGrammar(e,0,null,null,null)}async _loadGrammar(e,t,s,n,a){const r=new l.ScopeDependencyProcessor(this._syncRegistry,e);for(;r.Q.length>0;)await Promise.all(r.Q.map((e=>this._loadSingleGrammar(e.scopeName)))),r.processQueue();return this._grammarForScopeName(e,t,s,n,a)}async _loadSingleGrammar(e){return this._ensureGrammarCache.has(e)||this._ensureGrammarCache.set(e,this._doLoadSingleGrammar(e)),this._ensureGrammarCache.get(e)}async _doLoadSingleGrammar(e){const t=await this._options.loadGrammar(e);if(t){const s="function"==typeof this._options.getInjections?this._options.getInjections(e):void 0;this._syncRegistry.addGrammar(t,s)}}async addGrammar(e,t=[],s=0,n=null){return this._syncRegistry.addGrammar(e,t),await this._grammarForScopeName(e.scopeName,s,n)}_grammarForScopeName(e,t=0,s=null,n=null,a=null){return this._syncRegistry.grammarForScopeName(e,t,s,n,a)}},t.INITIAL=r.StateStack.NULL,t.parseRawGrammar=o.parseRawGrammar},736:(e,t)=>{function s(e){return!!e&&!!e.match(/[\w\.:]+/)}Object.defineProperty(t,"__esModule",{value:!0}),t.createMatchers=void 0,t.createMatchers=function(e,t){const n=[],a=function(e){let t=/([LR]:|[\w\.:][\w\.:\-]*|[\,\|\-\(\)])/g,s=t.exec(e);return{next:()=>{if(!s)return null;const n=s[0];return s=t.exec(e),n}}}(e);let r=a.next();for(;null!==r;){let e=0;if(2===r.length&&":"===r.charAt(1)){switch(r.charAt(0)){case"R":e=1;break;case"L":e=-1;break;default:console.log(`Unknown priority ${r} in scope selector`)}r=a.next()}let t=i();if(n.push({matcher:t,priority:e}),","!==r)break;r=a.next()}return n;function o(){if("-"===r){r=a.next();const e=o();return t=>!!e&&!e(t)}if("("===r){r=a.next();const e=function(){const e=[];let t=i();for(;t&&(e.push(t),"|"===r||","===r);){do{r=a.next()}while("|"===r||","===r);t=i()}return t=>e.some((e=>e(t)))}();return")"===r&&(r=a.next()),e}if(s(r)){const e=[];do{e.push(r),r=a.next()}while(s(r));return s=>t(e,s)}return null}function i(){const e=[];let t=o();for(;t;)e.push(t),t=o();return t=>e.every((e=>e(t)))}}},44:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.disposeOnigString=void 0,t.disposeOnigString=function(e){"function"==typeof e.dispose&&e.dispose()}},50:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseRawGrammar=void 0;const n=s(69),a=s(350),r=s(974);t.parseRawGrammar=function(e,t=null){return null!==t&&/\.json$/.test(t)?(s=e,o=t,a.DebugFlags.InDebugMode?r.parseJSON(s,o,!0):JSON.parse(s)):function(e,t){return a.DebugFlags.InDebugMode?n.parseWithLocation(e,t,"$vscodeTextmateLocation"):n.parsePLIST(e)}(e,t);var s,o}},69:(e,t)=>{function s(e,t,s){const n=e.length;let a=0,r=1,o=0;function i(t){if(null===s)a+=t;else for(;t>0;)10===e.charCodeAt(a)?(a++,r++,o=0):(a++,o++),t--}function c(e){null===s?a=e:i(e-a)}function l(){for(;a<n;){let t=e.charCodeAt(a);if(32!==t&&9!==t&&13!==t&&10!==t)break;i(1)}}function u(t){return e.substr(a,t.length)===t&&(i(t.length),!0)}function p(t){let s=e.indexOf(t,a);c(-1!==s?s+t.length:n)}function h(t){let s=e.indexOf(t,a);if(-1!==s){let n=e.substring(a,s);return c(s+t.length),n}{let t=e.substr(a);return c(n),t}}n>0&&65279===e.charCodeAt(0)&&(a=1);let d=0,m=null,g=[],f=[],y=null;function b(e,t){g.push(d),f.push(m),d=e,m=t}function _(){if(0===g.length)return N("illegal state stack");d=g.pop(),m=f.pop()}function N(t){throw new Error("Near offset "+a+": "+t+" ~~~"+e.substr(a,50)+"~~~")}const k=function(){if(null===y)return N("missing <key>");let e={};null!==s&&(e[s]={filename:t,line:r,char:o}),m[y]=e,y=null,b(1,e)},L=function(){if(null===y)return N("missing <key>");let e=[];m[y]=e,y=null,b(2,e)},S=function(){let e={};null!==s&&(e[s]={filename:t,line:r,char:o}),m.push(e),b(1,e)},v=function(){let e=[];m.push(e),b(2,e)};function C(){if(1!==d)return N("unexpected </dict>");_()}function j(){return 1===d||2!==d?N("unexpected </array>"):void _()}function w(e){if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function P(e){if(isNaN(e))return N("cannot parse float");if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function A(e){if(isNaN(e))return N("cannot parse integer");if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function x(e){if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function T(e){if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function R(e){if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function I(){let e=h(">"),t=!1;return 47===e.charCodeAt(e.length-1)&&(t=!0,e=e.substring(0,e.length-1)),{name:e.trim(),isClosed:t}}function E(e){if(e.isClosed)return"";let t=h("</");return p(">"),t.replace(/&#([0-9]+);/g,(function(e,t){return String.fromCodePoint(parseInt(t,10))})).replace(/&#x([0-9a-f]+);/g,(function(e,t){return String.fromCodePoint(parseInt(t,16))})).replace(/&amp;|&lt;|&gt;|&quot;|&apos;/g,(function(e){switch(e){case"&amp;":return"&";case"&lt;":return"<";case"&gt;":return">";case"&quot;":return'"';case"&apos;":return"'"}return e}))}for(;a<n&&(l(),!(a>=n));){const c=e.charCodeAt(a);if(i(1),60!==c)return N("expected <");if(a>=n)return N("unexpected end of input");const h=e.charCodeAt(a);if(63===h){i(1),p("?>");continue}if(33===h){if(i(1),u("--")){p("--\x3e");continue}p(">");continue}if(47===h){if(i(1),l(),u("plist")){p(">");continue}if(u("dict")){p(">"),C();continue}if(u("array")){p(">"),j();continue}return N("unexpected closed tag")}let g=I();switch(g.name){case"dict":1===d?k():2===d?S():(m={},null!==s&&(m[s]={filename:t,line:r,char:o}),b(1,m)),g.isClosed&&C();continue;case"array":1===d?L():2===d?v():(m=[],b(2,m)),g.isClosed&&j();continue;case"key":O=E(g),1!==d?N("unexpected <key>"):null!==y?N("too many <key>"):y=O;continue;case"string":w(E(g));continue;case"real":P(parseFloat(E(g)));continue;case"integer":A(parseInt(E(g),10));continue;case"date":x(new Date(E(g)));continue;case"data":T(E(g));continue;case"true":E(g),R(!0);continue;case"false":E(g),R(!1);continue}if(!/^plist/.test(g.name))return N("unexpected opened tag "+g.name)}var O;return m}Object.defineProperty(t,"__esModule",{value:!0}),t.parsePLIST=t.parseWithLocation=void 0,t.parseWithLocation=function(e,t,n){return s(e,t,n)},t.parsePLIST=function(e){return s(e,null,null)}},652:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SyncRegistry=void 0;const n=s(391);t.SyncRegistry=class{constructor(e,t){this._onigLibPromise=t,this._grammars=new Map,this._rawGrammars=new Map,this._injectionGrammars=new Map,this._theme=e}dispose(){for(const e of this._grammars.values())e.dispose()}setTheme(e){this._theme=e}getColorMap(){return this._theme.getColorMap()}addGrammar(e,t){this._rawGrammars.set(e.scopeName,e),t&&this._injectionGrammars.set(e.scopeName,t)}lookup(e){return this._rawGrammars.get(e)}injections(e){return this._injectionGrammars.get(e)}getDefaults(){return this._theme.getDefaults()}themeMatch(e){return this._theme.match(e)}async grammarForScopeName(e,t,s,a,r){if(!this._grammars.has(e)){let o=this._rawGrammars.get(e);if(!o)return null;this._grammars.set(e,n.createGrammar(e,o,t,s,a,r,this,await this._onigLibPromise))}return this._grammars.get(e)}}},792:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CompiledRule=t.RegExpSourceList=t.RegExpSource=t.RuleFactory=t.BeginWhileRule=t.BeginEndRule=t.IncludeOnlyRule=t.MatchRule=t.CaptureRule=t.Rule=t.ruleIdToNumber=t.ruleIdFromNumber=t.whileRuleId=t.endRuleId=void 0;const n=s(878),a=s(965),r=/\\(\d+)/,o=/\\(\d+)/g;t.endRuleId=-1,t.whileRuleId=-2,t.ruleIdFromNumber=function(e){return e},t.ruleIdToNumber=function(e){return e};class i{constructor(e,t,s,a){this.$location=e,this.id=t,this._name=s||null,this._nameIsCapturing=n.RegexSource.hasCaptures(this._name),this._contentName=a||null,this._contentNameIsCapturing=n.RegexSource.hasCaptures(this._contentName)}get debugName(){const e=this.$location?`${n.basename(this.$location.filename)}:${this.$location.line}`:"unknown";return`${this.constructor.name}#${this.id} @ ${e}`}getName(e,t){return this._nameIsCapturing&&null!==this._name&&null!==e&&null!==t?n.RegexSource.replaceCaptures(this._name,e,t):this._name}getContentName(e,t){return this._contentNameIsCapturing&&null!==this._contentName?n.RegexSource.replaceCaptures(this._contentName,e,t):this._contentName}}t.Rule=i;class c extends i{constructor(e,t,s,n,a){super(e,t,s,n),this.retokenizeCapturedWithRuleId=a}dispose(){}collectPatterns(e,t){throw new Error("Not supported!")}compile(e,t){throw new Error("Not supported!")}compileAG(e,t,s,n){throw new Error("Not supported!")}}t.CaptureRule=c;class l extends i{constructor(e,t,s,n,a){super(e,t,s,null),this._match=new m(n,this.id),this.captures=a,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}get debugMatchRegExp(){return`${this._match.source}`}collectPatterns(e,t){t.push(this._match)}compile(e,t){return this._getCachedCompiledPatterns(e).compile(e)}compileAG(e,t,s,n){return this._getCachedCompiledPatterns(e).compileAG(e,s,n)}_getCachedCompiledPatterns(e){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new g,this.collectPatterns(e,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}}t.MatchRule=l;class u extends i{constructor(e,t,s,n,a){super(e,t,s,n),this.patterns=a.patterns,this.hasMissingPatterns=a.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}collectPatterns(e,t){for(const s of this.patterns)e.getRule(s).collectPatterns(e,t)}compile(e,t){return this._getCachedCompiledPatterns(e).compile(e)}compileAG(e,t,s,n){return this._getCachedCompiledPatterns(e).compileAG(e,s,n)}_getCachedCompiledPatterns(e){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new g,this.collectPatterns(e,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}}t.IncludeOnlyRule=u;class p extends i{constructor(e,t,s,n,a,r,o,i,c,l){super(e,t,s,n),this._begin=new m(a,this.id),this.beginCaptures=r,this._end=new m(o||"￿",-1),this.endHasBackReferences=this._end.hasBackReferences,this.endCaptures=i,this.applyEndPatternLast=c||!1,this.patterns=l.patterns,this.hasMissingPatterns=l.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugEndRegExp(){return`${this._end.source}`}getEndWithResolvedBackReferences(e,t){return this._end.resolveBackReferences(e,t)}collectPatterns(e,t){t.push(this._begin)}compile(e,t){return this._getCachedCompiledPatterns(e,t).compile(e)}compileAG(e,t,s,n){return this._getCachedCompiledPatterns(e,t).compileAG(e,s,n)}_getCachedCompiledPatterns(e,t){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new g;for(const t of this.patterns)e.getRule(t).collectPatterns(e,this._cachedCompiledPatterns);this.applyEndPatternLast?this._cachedCompiledPatterns.push(this._end.hasBackReferences?this._end.clone():this._end):this._cachedCompiledPatterns.unshift(this._end.hasBackReferences?this._end.clone():this._end)}return this._end.hasBackReferences&&(this.applyEndPatternLast?this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length()-1,t):this._cachedCompiledPatterns.setSource(0,t)),this._cachedCompiledPatterns}}t.BeginEndRule=p;class h extends i{constructor(e,s,n,a,r,o,i,c,l){super(e,s,n,a),this._begin=new m(r,this.id),this.beginCaptures=o,this.whileCaptures=c,this._while=new m(i,t.whileRuleId),this.whileHasBackReferences=this._while.hasBackReferences,this.patterns=l.patterns,this.hasMissingPatterns=l.hasMissingPatterns,this._cachedCompiledPatterns=null,this._cachedCompiledWhilePatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null),this._cachedCompiledWhilePatterns&&(this._cachedCompiledWhilePatterns.dispose(),this._cachedCompiledWhilePatterns=null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugWhileRegExp(){return`${this._while.source}`}getWhileWithResolvedBackReferences(e,t){return this._while.resolveBackReferences(e,t)}collectPatterns(e,t){t.push(this._begin)}compile(e,t){return this._getCachedCompiledPatterns(e).compile(e)}compileAG(e,t,s,n){return this._getCachedCompiledPatterns(e).compileAG(e,s,n)}_getCachedCompiledPatterns(e){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new g;for(const t of this.patterns)e.getRule(t).collectPatterns(e,this._cachedCompiledPatterns)}return this._cachedCompiledPatterns}compileWhile(e,t){return this._getCachedCompiledWhilePatterns(e,t).compile(e)}compileWhileAG(e,t,s,n){return this._getCachedCompiledWhilePatterns(e,t).compileAG(e,s,n)}_getCachedCompiledWhilePatterns(e,t){return this._cachedCompiledWhilePatterns||(this._cachedCompiledWhilePatterns=new g,this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences?this._while.clone():this._while)),this._while.hasBackReferences&&this._cachedCompiledWhilePatterns.setSource(0,t||"￿"),this._cachedCompiledWhilePatterns}}t.BeginWhileRule=h;class d{static createCaptureRule(e,t,s,n,a){return e.registerRule((e=>new c(t,e,s,n,a)))}static getCompiledRuleId(e,t,s){return e.id||t.registerRule((a=>{if(e.id=a,e.match)return new l(e.$vscodeTextmateLocation,e.id,e.name,e.match,d._compileCaptures(e.captures,t,s));if(void 0===e.begin){e.repository&&(s=n.mergeObjects({},s,e.repository));let a=e.patterns;return void 0===a&&e.include&&(a=[{include:e.include}]),new u(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,d._compilePatterns(a,t,s))}return e.while?new h(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,e.begin,d._compileCaptures(e.beginCaptures||e.captures,t,s),e.while,d._compileCaptures(e.whileCaptures||e.captures,t,s),d._compilePatterns(e.patterns,t,s)):new p(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,e.begin,d._compileCaptures(e.beginCaptures||e.captures,t,s),e.end,d._compileCaptures(e.endCaptures||e.captures,t,s),e.applyEndPatternLast,d._compilePatterns(e.patterns,t,s))})),e.id}static _compileCaptures(e,t,s){let n=[];if(e){let a=0;for(const t in e){if("$vscodeTextmateLocation"===t)continue;const e=parseInt(t,10);e>a&&(a=e)}for(let e=0;e<=a;e++)n[e]=null;for(const a in e){if("$vscodeTextmateLocation"===a)continue;const r=parseInt(a,10);let o=0;e[a].patterns&&(o=d.getCompiledRuleId(e[a],t,s)),n[r]=d.createCaptureRule(t,e[a].$vscodeTextmateLocation,e[a].name,e[a].contentName,o)}}return n}static _compilePatterns(e,t,s){let n=[];if(e)for(let r=0,o=e.length;r<o;r++){const o=e[r];let i=-1;if(o.include){const e=a.parseInclude(o.include);switch(e.kind){case 0:case 1:i=d.getCompiledRuleId(s[o.include],t,s);break;case 2:let n=s[e.ruleName];n&&(i=d.getCompiledRuleId(n,t,s));break;case 3:case 4:const a=e.scopeName,r=4===e.kind?e.ruleName:null,c=t.getExternalGrammar(a,s);if(c)if(r){let e=c.repository[r];e&&(i=d.getCompiledRuleId(e,t,c.repository))}else i=d.getCompiledRuleId(c.repository.$self,t,c.repository)}}else i=d.getCompiledRuleId(o,t,s);if(-1!==i){const e=t.getRule(i);let s=!1;if((e instanceof u||e instanceof p||e instanceof h)&&e.hasMissingPatterns&&0===e.patterns.length&&(s=!0),s)continue;n.push(i)}}return{patterns:n,hasMissingPatterns:(e?e.length:0)!==n.length}}}t.RuleFactory=d;class m{constructor(e,t){if(e){const t=e.length;let s=0,n=[],a=!1;for(let r=0;r<t;r++)if("\\"===e.charAt(r)&&r+1<t){const t=e.charAt(r+1);"z"===t?(n.push(e.substring(s,r)),n.push("$(?!\\n)(?<!\\n)"),s=r+2):"A"!==t&&"G"!==t||(a=!0),r++}this.hasAnchor=a,0===s?this.source=e:(n.push(e.substring(s,t)),this.source=n.join(""))}else this.hasAnchor=!1,this.source=e;this.hasAnchor?this._anchorCache=this._buildAnchorCache():this._anchorCache=null,this.ruleId=t,this.hasBackReferences=r.test(this.source)}clone(){return new m(this.source,this.ruleId)}setSource(e){this.source!==e&&(this.source=e,this.hasAnchor&&(this._anchorCache=this._buildAnchorCache()))}resolveBackReferences(e,t){let s=t.map((t=>e.substring(t.start,t.end)));return o.lastIndex=0,this.source.replace(o,((e,t)=>n.escapeRegExpCharacters(s[parseInt(t,10)]||"")))}_buildAnchorCache(){let e,t,s,n,a=[],r=[],o=[],i=[];for(e=0,t=this.source.length;e<t;e++)s=this.source.charAt(e),a[e]=s,r[e]=s,o[e]=s,i[e]=s,"\\"===s&&e+1<t&&(n=this.source.charAt(e+1),"A"===n?(a[e+1]="￿",r[e+1]="￿",o[e+1]="A",i[e+1]="A"):"G"===n?(a[e+1]="￿",r[e+1]="G",o[e+1]="￿",i[e+1]="G"):(a[e+1]=n,r[e+1]=n,o[e+1]=n,i[e+1]=n),e++);return{A0_G0:a.join(""),A0_G1:r.join(""),A1_G0:o.join(""),A1_G1:i.join("")}}resolveAnchors(e,t){return this.hasAnchor&&this._anchorCache?e?t?this._anchorCache.A1_G1:this._anchorCache.A1_G0:t?this._anchorCache.A0_G1:this._anchorCache.A0_G0:this.source}}t.RegExpSource=m;class g{constructor(){this._items=[],this._hasAnchors=!1,this._cached=null,this._anchorCache={A0_G0:null,A0_G1:null,A1_G0:null,A1_G1:null}}dispose(){this._disposeCaches()}_disposeCaches(){this._cached&&(this._cached.dispose(),this._cached=null),this._anchorCache.A0_G0&&(this._anchorCache.A0_G0.dispose(),this._anchorCache.A0_G0=null),this._anchorCache.A0_G1&&(this._anchorCache.A0_G1.dispose(),this._anchorCache.A0_G1=null),this._anchorCache.A1_G0&&(this._anchorCache.A1_G0.dispose(),this._anchorCache.A1_G0=null),this._anchorCache.A1_G1&&(this._anchorCache.A1_G1.dispose(),this._anchorCache.A1_G1=null)}push(e){this._items.push(e),this._hasAnchors=this._hasAnchors||e.hasAnchor}unshift(e){this._items.unshift(e),this._hasAnchors=this._hasAnchors||e.hasAnchor}length(){return this._items.length}setSource(e,t){this._items[e].source!==t&&(this._disposeCaches(),this._items[e].setSource(t))}compile(e){if(!this._cached){let t=this._items.map((e=>e.source));this._cached=new f(e,t,this._items.map((e=>e.ruleId)))}return this._cached}compileAG(e,t,s){return this._hasAnchors?t?s?(this._anchorCache.A1_G1||(this._anchorCache.A1_G1=this._resolveAnchors(e,t,s)),this._anchorCache.A1_G1):(this._anchorCache.A1_G0||(this._anchorCache.A1_G0=this._resolveAnchors(e,t,s)),this._anchorCache.A1_G0):s?(this._anchorCache.A0_G1||(this._anchorCache.A0_G1=this._resolveAnchors(e,t,s)),this._anchorCache.A0_G1):(this._anchorCache.A0_G0||(this._anchorCache.A0_G0=this._resolveAnchors(e,t,s)),this._anchorCache.A0_G0):this.compile(e)}_resolveAnchors(e,t,s){let n=this._items.map((e=>e.resolveAnchors(t,s)));return new f(e,n,this._items.map((e=>e.ruleId)))}}t.RegExpSourceList=g;class f{constructor(e,t,s){this.regExps=t,this.rules=s,this.scanner=e.createOnigScanner(t)}dispose(){"function"==typeof this.scanner.dispose&&this.scanner.dispose()}toString(){const e=[];for(let t=0,s=this.rules.length;t<s;t++)e.push(" - "+this.rules[t]+": "+this.regExps[t]);return e.join("\n")}findNextMatchSync(e,t,s){const n=this.scanner.findNextMatchSync(e,t,s);return n?{ruleId:this.rules[n.index],captureIndices:n.captureIndices}:null}}t.CompiledRule=f},583:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ThemeTrieElement=t.ThemeTrieElementRule=t.ColorMap=t.fontStyleToString=t.ParsedThemeRule=t.parseTheme=t.StyleAttributes=t.ScopeStack=t.Theme=void 0;const n=s(878);class a{constructor(e,t,s){this._colorMap=e,this._defaults=t,this._root=s,this._cachedMatchRoot=new n.CachedFn((e=>this._root.match(e)))}static createFromRawTheme(e,t){return this.createFromParsedTheme(c(e),t)}static createFromParsedTheme(e,t){return function(e,t){e.sort(((e,t)=>{let s=n.strcmp(e.scope,t.scope);return 0!==s?s:(s=n.strArrCmp(e.parentScopes,t.parentScopes),0!==s?s:e.index-t.index)}));let s=0,r="#000000",o="#ffffff";for(;e.length>=1&&""===e[0].scope;){let t=e.shift();-1!==t.fontStyle&&(s=t.fontStyle),null!==t.foreground&&(r=t.foreground),null!==t.background&&(o=t.background)}let c=new u(t),l=new i(s,c.getId(r),c.getId(o)),d=new h(new p(0,null,-1,0,0),[]);for(let t=0,s=e.length;t<s;t++){let s=e[t];d.insert(0,s.scope,s.parentScopes,s.fontStyle,c.getId(s.foreground),c.getId(s.background))}return new a(c,l,d)}(e,t)}getColorMap(){return this._colorMap.getColorMap()}getDefaults(){return this._defaults}match(e){if(null===e)return this._defaults;const t=e.scopeName,s=this._cachedMatchRoot.get(t).find((t=>function(e,t){if(null===t)return!0;let s=0,n=t[s];for(;e;){if(o(e.scopeName,n)){if(s++,s===t.length)return!0;n=t[s]}e=e.parent}return!1}(e.parent,t.parentScopes)));return s?new i(s.fontStyle,s.foreground,s.background):null}}t.Theme=a;class r{constructor(e,t){this.parent=e,this.scopeName=t}static from(...e){let t=null;for(let s=0;s<e.length;s++)t=new r(t,e[s]);return t}push(e){return new r(this,e)}getSegments(){let e=this;const t=[];for(;e;)t.push(e.scopeName),e=e.parent;return t.reverse(),t}toString(){return this.getSegments().join(" ")}}function o(e,t){return t===e||e.startsWith(t)&&"."===e[t.length]}t.ScopeStack=r;class i{constructor(e,t,s){this.fontStyle=e,this.foregroundId=t,this.backgroundId=s}}function c(e){if(!e)return[];if(!e.settings||!Array.isArray(e.settings))return[];let t=e.settings,s=[],a=0;for(let e=0,r=t.length;e<r;e++){let r,o=t[e];if(!o.settings)continue;if("string"==typeof o.scope){let e=o.scope;e=e.replace(/^[,]+/,""),e=e.replace(/[,]+$/,""),r=e.split(",")}else r=Array.isArray(o.scope)?o.scope:[""];let i=-1;if("string"==typeof o.settings.fontStyle){i=0;let e=o.settings.fontStyle.split(" ");for(let t=0,s=e.length;t<s;t++)switch(e[t]){case"italic":i|=1;break;case"bold":i|=2;break;case"underline":i|=4;break;case"strikethrough":i|=8}}let c=null;"string"==typeof o.settings.foreground&&n.isValidHexColor(o.settings.foreground)&&(c=o.settings.foreground);let u=null;"string"==typeof o.settings.background&&n.isValidHexColor(o.settings.background)&&(u=o.settings.background);for(let t=0,n=r.length;t<n;t++){let n=r[t].trim().split(" "),o=n[n.length-1],p=null;n.length>1&&(p=n.slice(0,n.length-1),p.reverse()),s[a++]=new l(o,p,e,i,c,u)}}return s}t.StyleAttributes=i,t.parseTheme=c;class l{constructor(e,t,s,n,a,r){this.scope=e,this.parentScopes=t,this.index=s,this.fontStyle=n,this.foreground=a,this.background=r}}t.ParsedThemeRule=l,t.fontStyleToString=function(e){if(-1===e)return"not set";let t="";return 1&e&&(t+="italic "),2&e&&(t+="bold "),4&e&&(t+="underline "),8&e&&(t+="strikethrough "),""===t&&(t="none"),t.trim()};class u{constructor(e){if(this._lastColorId=0,this._id2color=[],this._color2id=Object.create(null),Array.isArray(e)){this._isFrozen=!0;for(let t=0,s=e.length;t<s;t++)this._color2id[e[t]]=t,this._id2color[t]=e[t]}else this._isFrozen=!1}getId(e){if(null===e)return 0;e=e.toUpperCase();let t=this._color2id[e];if(t)return t;if(this._isFrozen)throw new Error(`Missing color in color map - ${e}`);return t=++this._lastColorId,this._color2id[e]=t,this._id2color[t]=e,t}getColorMap(){return this._id2color.slice(0)}}t.ColorMap=u;class p{constructor(e,t,s,n,a){this.scopeDepth=e,this.parentScopes=t,this.fontStyle=s,this.foreground=n,this.background=a}clone(){return new p(this.scopeDepth,this.parentScopes,this.fontStyle,this.foreground,this.background)}static cloneArr(e){let t=[];for(let s=0,n=e.length;s<n;s++)t[s]=e[s].clone();return t}acceptOverwrite(e,t,s,n){this.scopeDepth>e?console.log("how did this happen?"):this.scopeDepth=e,-1!==t&&(this.fontStyle=t),0!==s&&(this.foreground=s),0!==n&&(this.background=n)}}t.ThemeTrieElementRule=p;class h{constructor(e,t=[],s={}){this._mainRule=e,this._children=s,this._rulesWithParentScopes=t}static _sortBySpecificity(e){return 1===e.length||e.sort(this._cmpBySpecificity),e}static _cmpBySpecificity(e,t){if(e.scopeDepth===t.scopeDepth){const s=e.parentScopes,n=t.parentScopes;let a=null===s?0:s.length,r=null===n?0:n.length;if(a===r)for(let e=0;e<a;e++){const t=s[e].length,a=n[e].length;if(t!==a)return a-t}return r-a}return t.scopeDepth-e.scopeDepth}match(e){if(""===e)return h._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes));let t,s,n=e.indexOf(".");return-1===n?(t=e,s=""):(t=e.substring(0,n),s=e.substring(n+1)),this._children.hasOwnProperty(t)?this._children[t].match(s):h._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes))}insert(e,t,s,n,a,r){if(""===t)return void this._doInsertHere(e,s,n,a,r);let o,i,c,l=t.indexOf(".");-1===l?(o=t,i=""):(o=t.substring(0,l),i=t.substring(l+1)),this._children.hasOwnProperty(o)?c=this._children[o]:(c=new h(this._mainRule.clone(),p.cloneArr(this._rulesWithParentScopes)),this._children[o]=c),c.insert(e+1,i,s,n,a,r)}_doInsertHere(e,t,s,a,r){if(null!==t){for(let o=0,i=this._rulesWithParentScopes.length;o<i;o++){let i=this._rulesWithParentScopes[o];if(0===n.strArrCmp(i.parentScopes,t))return void i.acceptOverwrite(e,s,a,r)}-1===s&&(s=this._mainRule.fontStyle),0===a&&(a=this._mainRule.foreground),0===r&&(r=this._mainRule.background),this._rulesWithParentScopes.push(new p(e,t,s,a,r))}else this._mainRule.acceptOverwrite(e,s,a,r)}}t.ThemeTrieElement=h},878:(e,t)=>{function s(e){return Array.isArray(e)?function(e){let t=[];for(let n=0,a=e.length;n<a;n++)t[n]=s(e[n]);return t}(e):"object"==typeof e?function(e){let t={};for(let n in e)t[n]=s(e[n]);return t}(e):e}Object.defineProperty(t,"__esModule",{value:!0}),t.performanceNow=t.CachedFn=t.escapeRegExpCharacters=t.isValidHexColor=t.strArrCmp=t.strcmp=t.RegexSource=t.basename=t.mergeObjects=t.clone=void 0,t.clone=function(e){return s(e)},t.mergeObjects=function(e,...t){return t.forEach((t=>{for(let s in t)e[s]=t[s]})),e},t.basename=function e(t){const s=~t.lastIndexOf("/")||~t.lastIndexOf("\\");return 0===s?t:~s==t.length-1?e(t.substring(0,t.length-1)):t.substr(1+~s)};let n=/\$(\d+)|\${(\d+):\/(downcase|upcase)}/g;function a(e,t){return e<t?-1:e>t?1:0}t.RegexSource=class{static hasCaptures(e){return null!==e&&(n.lastIndex=0,n.test(e))}static replaceCaptures(e,t,s){return e.replace(n,((e,n,a,r)=>{let o=s[parseInt(n||a,10)];if(!o)return e;{let e=t.substring(o.start,o.end);for(;"."===e[0];)e=e.substring(1);switch(r){case"downcase":return e.toLowerCase();case"upcase":return e.toUpperCase();default:return e}}}))}},t.strcmp=a,t.strArrCmp=function(e,t){if(null===e&&null===t)return 0;if(!e)return-1;if(!t)return 1;let s=e.length,n=t.length;if(s===n){for(let n=0;n<s;n++){let s=a(e[n],t[n]);if(0!==s)return s}return 0}return s-n},t.isValidHexColor=function(e){return!!(/^#[0-9a-f]{6}$/i.test(e)||/^#[0-9a-f]{8}$/i.test(e)||/^#[0-9a-f]{3}$/i.test(e)||/^#[0-9a-f]{4}$/i.test(e))},t.escapeRegExpCharacters=function(e){return e.replace(/[\-\\\{\}\*\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&")},t.CachedFn=class{constructor(e){this.fn=e,this.cache=new Map}get(e){if(this.cache.has(e))return this.cache.get(e);const t=this.fn(e);return this.cache.set(e,t),t}},t.performanceNow="undefined"==typeof performance?function(){return Date.now()}:function(){return performance.now()}}},F={},function e(t){var s=F[t];if(void 0!==s)return s.exports;var n=F[t]={exports:{}};return G[t].call(n.exports,n,n.exports,e),n.exports}(787));var $=D.exports;function U(e,t){let s=[];for(let n=0,a=t.length;n<a;n++){let a=t.slice(0,n),r=t[n];s[n]={scopeName:r,themeMatches:H(e,r,a)}}return s}function W(e,t){let s=e+".";return e===t||t.substring(0,s.length)===s}function q(e,t,s,n){if(!W(e,s))return!1;let a=t.length-1,r=n.length-1;for(;a>=0&&r>=0;)W(t[a],n[r])&&a--,r--;return-1===a}function H(e,t,s){let n=[],a=0;for(let r=0,o=e.settings.length;r<o;r++){let o,i=e.settings[r];if("string"==typeof i.scope)o=i.scope.split(/,/).map((e=>e.trim()));else{if(!Array.isArray(i.scope))continue;o=i.scope}for(let e=0,r=o.length;e<r;e++){let c=o[e].split(/ /);q(c[c.length-1],c.slice(0,c.length-1),t,s)&&(n[a++]=i,e=r)}}return n}var z=["black","red","green","yellow","blue","magenta","cyan","white","brightBlack","brightRed","brightGreen","brightYellow","brightBlue","brightMagenta","brightCyan","brightWhite"],V={1:"bold",2:"dim",3:"italic",4:"underline",7:"reverse",9:"strikethrough"};function K(e,t){const s=e.indexOf("",t);if(-1!==s&&"["===e[s+1]){const t=e.indexOf("m",s);return{sequence:e.substring(s+2,t).split(";"),startPosition:s,position:t+1}}return{position:e.length}}function J(e){const t=e.shift();if("2"===t){const t=e.splice(0,3).map((e=>Number.parseInt(e)));if(3!==t.length||t.some((e=>Number.isNaN(e))))return;return{type:"rgb",rgb:t}}if("5"===t){const t=e.shift();if(t)return{type:"table",index:Number(t)}}}function Q(e){const t=[];for(;e.length>0;){const s=e.shift();if(!s)continue;const n=Number.parseInt(s);if(!Number.isNaN(n))if(0===n)t.push({type:"resetAll"});else if(n<=9){V[n]&&t.push({type:"setDecoration",value:V[n]})}else if(n<=29){const e=V[n-20];e&&t.push({type:"resetDecoration",value:e})}else if(n<=37)t.push({type:"setForegroundColor",value:{type:"named",name:z[n-30]}});else if(38===n){const s=J(e);s&&t.push({type:"setForegroundColor",value:s})}else if(39===n)t.push({type:"resetForegroundColor"});else if(n<=47)t.push({type:"setBackgroundColor",value:{type:"named",name:z[n-40]}});else if(48===n){const s=J(e);s&&t.push({type:"setBackgroundColor",value:s})}else 49===n?t.push({type:"resetBackgroundColor"}):n>=90&&n<=97?t.push({type:"setForegroundColor",value:{type:"named",name:z[n-90+8]}}):n>=100&&n<=107&&t.push({type:"setBackgroundColor",value:{type:"named",name:z[n-100+8]}})}return t}var X={black:"#000000",red:"#bb0000",green:"#00bb00",yellow:"#bbbb00",blue:"#0000bb",magenta:"#ff00ff",cyan:"#00bbbb",white:"#eeeeee",brightBlack:"#555555",brightRed:"#ff5555",brightGreen:"#00ff00",brightYellow:"#ffff55",brightBlue:"#5555ff",brightMagenta:"#ff55ff",brightCyan:"#55ffff",brightWhite:"#ffffff"};function Y(e=X){function t(t){return e[t]}function s(e){return`#${e.map((e=>Math.max(0,Math.min(e,255)).toString(16).padStart(2,"0"))).join("")}`}let n;function a(e){return function(){if(n)return n;n=[];for(let e=0;e<z.length;e++)n.push(t(z[e]));let e=[0,95,135,175,215,255];for(let t=0;t<6;t++)for(let a=0;a<6;a++)for(let r=0;r<6;r++)n.push(s([e[t],e[a],e[r]]));let a=8;for(let e=0;e<24;e++,a+=10)n.push(s([a,a,a]));return n}()[e]}return{value:function(e){switch(e.type){case"named":return t(e.name);case"rgb":return s(e.rgb);case"table":return a(e.index)}}}}function Z(e,t){const n=t.split(/\r?\n/),a=Y(Object.fromEntries(z.map((t=>[t,e.colors[`terminal.ansi${t[0].toUpperCase()}${t.substring(1)}`]])))),r=function(){let e=null,t=null,s=new Set;return{parse(n){const a=[];let r=0;do{const o=K(n,r),i=o.sequence?n.substring(r,o.startPosition):n.substring(r);if(i.length>0&&a.push({value:i,foreground:e,background:t,decorations:new Set(s)}),o.sequence){const n=Q(o.sequence);for(const a of n)"resetAll"===a.type?(e=null,t=null,s.clear()):"resetForegroundColor"===a.type?e=null:"resetBackgroundColor"===a.type?t=null:"resetDecoration"===a.type&&s.delete(a.value);for(const a of n)"setForegroundColor"===a.type?e=a.value:"setBackgroundColor"===a.type?t=a.value:"setDecoration"===a.type&&s.add(a.value)}r=o.position}while(r<n.length);return a}}}();return n.map((t=>r.parse(t).map((t=>{let n;n=t.decorations.has("reverse")?t.background?a.value(t.background):e.bg:t.foreground?a.value(t.foreground):e.fg,t.decorations.has("dim")&&(n=function(e){const t=e.match(/#([0-9a-f]{3})([0-9a-f]{3})?([0-9a-f]{2})?/);if(t){if(t[3]){const e=Math.round(Number.parseInt(t[3],16)/2).toString(16).padStart(2,"0");return`#${t[1]}${t[2]}${e}`}return t[2]?`#${t[1]}${t[2]}80`:`#${Array.from(t[1]).map((e=>`${e}${e}`)).join("")}80`}const s=e.match(/var\((--shiki-color-ansi-[\w-]+)\)/);if(s)return`var(${s[1]}-dim)`;return e}(n));let r=s.None;return t.decorations.has("bold")&&(r|=s.Bold),t.decorations.has("italic")&&(r|=s.Italic),t.decorations.has("underline")&&(r|=s.Underline),{content:t.value,color:n,fontStyle:r}}))))}const ee={pre:({className:e,style:t,children:s})=>`<pre class="${e}" style="${t}" tabindex="0">${s}</pre>`,code:({children:e})=>`<code>${e}</code>`,line:({className:e,children:t})=>`<span class="${e}">${t}</span>`,token:({style:e,children:t})=>`<span style="${e}">${t}</span>`};function te(e,t={}){const n=t.bg||"#fff",a=function(e,t){const s=new Map;for(const n of e){const e=t(n);s.has(e)?s.get(e).push(n):s.set(e,[n])}return s}(t.lineOptions??[],(e=>e.line)),r=t.elements||{};function o(e="",t={},s){const n=r[e]||ee[e];return n?(s=s.filter(Boolean),n({...t,children:"code"===e?s.join("\n"):s.join("")})):""}return o("pre",{className:"shiki "+(t.themeName||""),style:`background-color: ${n}`},[t.langId?`<div class="language-id">${t.langId}</div>`:"",o("code",{},e.map(((n,r)=>{const i=r+1,c=function(e){const t=new Set(["line"]);for(const s of e)for(const e of s.classes??[])t.add(e);return Array.from(t)}(a.get(i)??[]).join(" ");return o("line",{className:c,lines:e,line:n,index:r},n.map(((e,a)=>{const r=[`color: ${e.color||t.fg}`];return e.fontStyle&s.Italic&&r.push("font-style: italic"),e.fontStyle&s.Bold&&r.push("font-weight: bold"),e.fontStyle&s.Underline&&r.push("text-decoration: underline"),o("token",{style:r.join("; "),tokens:n,token:e,index:a},[(i=e.content,i.replace(/[&<>"']/g,(e=>se[e])))]);var i})))})))])}const se={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};class ne extends $.Registry{constructor(e){super(e),this._resolver=e,this.themesPath="themes/",this._resolvedThemes={},this._resolvedGrammars={},this._langGraph=new Map,this._langMap=t.reduce(((e,t)=>(e[t.id]=t,e)),{})}getTheme(e){return"string"==typeof e?this._resolvedThemes[e]:e}async loadTheme(e){return"string"==typeof e?(this._resolvedThemes[e]||(this._resolvedThemes[e]=await R(`${this.themesPath}${e}.json`)),this._resolvedThemes[e]):((e=I(e)).name&&(this._resolvedThemes[e.name]=e),e)}async loadThemes(e){return await Promise.all(e.map((e=>this.loadTheme(e))))}getLoadedThemes(){return Object.keys(this._resolvedThemes)}getGrammar(e){return this._resolvedGrammars[e]}async loadLanguage(e){const t=e.embeddedLangs?.reduce((async(e,t,s)=>{if(!this.getLoadedLanguages().includes(t)&&this._resolver.getLangRegistration(t))return await this._resolver.loadGrammar(this._resolver.getLangRegistration(t).scopeName),e[this._resolver.getLangRegistration(t).scopeName]=s+2,e}),{}),s={embeddedLanguages:t,balancedBracketSelectors:e.balancedBracketSelectors||["*"],unbalancedBracketSelectors:e.unbalancedBracketSelectors||[]},n=await this.loadGrammarWithConfiguration(e.scopeName,1,s);this._resolvedGrammars[e.id]=n,e.aliases&&e.aliases.forEach((e=>{this._resolvedGrammars[e]=n}))}async loadLanguages(e){for(const t of e)this.resolveEmbeddedLanguages(t);const t=Array.from(this._langGraph.values());for(const e of t)this._resolver.addLanguage(e);for(const e of t)await this.loadLanguage(e)}getLoadedLanguages(){return Object.keys(this._resolvedGrammars)}resolveEmbeddedLanguages(e){if(this._langGraph.has(e.id)||this._langGraph.set(e.id,e),e.embeddedLangs)for(const t of e.embeddedLangs)this._langGraph.set(t,this._langMap[t])}}function ae(e){return"string"==typeof e?t.find((t=>t.id===e||t.aliases?.includes(e))):e}async function re(e){const{_languages:s,_themes:a,_wasmPath:r}=function(e){let s=t,n=e.themes||[],a=e.paths?.wasm?e.paths.wasm.endsWith("/")?e.paths.wasm:e.paths.wasm+"/":j;return e.langs&&(s=e.langs.map(ae)),e.theme&&n.unshift(e.theme),n.length||(n=["nord"]),{_languages:s,_themes:n,_wasmPath:a}}(e),c=new B(async function(e){if(!A){let t;if(S)t="string"==typeof C?m.loadWASM({data:await fetch(x(i(...o(e),"onig.wasm")))}):m.loadWASM({data:C});else{const e=require("path").join(require.resolve("vscode-oniguruma"),"../onig.wasm"),s=require("fs").readFileSync(e).buffer;t=m.loadWASM(s)}A=t.then((()=>({createOnigScanner:e=>m.createOnigScanner(e),createOnigString:e=>m.createOnigString(e)})))}return A}(r),"vscode-oniguruma"),l=new ne(c);e.paths?.themes&&(l.themesPath=e.paths.themes.endsWith("/")?e.paths.themes:e.paths.themes+"/"),e.paths?.languages&&(c.languagesPath=e.paths.languages.endsWith("/")?e.paths.languages:e.paths.languages+"/");const u=(await l.loadThemes(a))[0];let p;await l.loadLanguages(s);let h=function(){const e={"#000001":"var(--shiki-color-text)","#000002":"var(--shiki-color-background)","#000004":"var(--shiki-token-constant)","#000005":"var(--shiki-token-string)","#000006":"var(--shiki-token-comment)","#000007":"var(--shiki-token-keyword)","#000008":"var(--shiki-token-parameter)","#000009":"var(--shiki-token-function)","#000010":"var(--shiki-token-string-expression)","#000011":"var(--shiki-token-punctuation)","#000012":"var(--shiki-token-link)"};for(let t=0;t<z.length;t++){const s=`#A${t.toString().padStart(5,"0")}`,n=z[t].replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();e[s]=`var(--shiki-color-ansi-${n})`}return e}();function d(e){const t=e?l.getTheme(e):u;if(!t)throw Error(`No theme registration for ${e}`);p&&p.name===t.name||(l.setTheme(t),p=t);const s=l.getColorMap();return"css"===t.type&&function(e,t){e.bg=h[e.bg]||e.bg,e.fg=h[e.fg]||e.fg,Object.entries(e.colors).forEach((([t,s])=>{e.colors[t]=h[s]||s})),t.forEach(((e,s)=>{t[s]=h[e]||e}))}(t,s),{_theme:t,_colorMap:s}}function g(e,t="text",s,a={includeExplanation:!0}){if(function(e){return!e||["plaintext","txt","text"].includes(e)}(t)){return[...e.split(/\r\n|\r|\n/).map((e=>[{content:e}]))]}const{_grammar:r}=function(e){const t=l.getGrammar(e);if(!t)throw Error(`No language registration for ${e}`);return{_grammar:t}}(t),{_theme:o,_colorMap:i}=d(s);return function(e,t,s,a,r){let o=s.split(/\r\n|\r|\n/),i=$.INITIAL,c=[],l=[];for(let s=0,u=o.length;s<u;s++){let u,p,h,d=o[s];if(""===d){c=[],l.push([]);continue}r.includeExplanation&&(u=a.tokenizeLine(d,i),p=u.tokens,h=0);let m=a.tokenizeLine2(d,i),g=m.tokens.length/2;for(let s=0;s<g;s++){let a=m.tokens[2*s],o=s+1<g?m.tokens[2*s+2]:d.length;if(a===o)continue;let i=m.tokens[2*s+1],l=t[n.getForeground(i)],u=n.getFontStyle(i),f=[];if(r.includeExplanation){let t=0;for(;a+t<o;){let s=p[h],n=d.substring(s.startIndex,s.endIndex);t+=n.length,f.push({content:n,scopes:U(e,s.scopes)}),h++}}c.push({content:d.substring(a,o),color:l,fontStyle:u,explanation:f})}l.push(c),c=[],i=m.ruleStack}return l}(o,i,e,r,a)}function f(e,t){const{_theme:s}=d(t);return Z(s,e)}return{codeToThemedTokens:g,codeToHtml:function(e,t="text",s){let n;n="object"==typeof t?t:{lang:t,theme:s};const a=g(e,n.lang,n.theme,{includeExplanation:!1}),{_theme:r}=d(n.theme);return te(a,{fg:r.fg,bg:r.bg,lineOptions:n?.lineOptions,themeName:r.name})},ansiToThemedTokens:f,ansiToHtml:function(e,t){const s=f(e,t?.theme),{_theme:n}=d(t?.theme);return te(s,{fg:n.fg,bg:n.bg,lineOptions:t?.lineOptions,themeName:n.name})},getTheme:e=>d(e)._theme,loadTheme:async function(e){await l.loadTheme(e)},loadLanguage:async function(e){const t=ae(e);c.addLanguage(t),await l.loadLanguage(t)},getBackgroundColor:function(e){const{_theme:t}=d(e);return t.bg},getForegroundColor:function(e){const{_theme:t}=d(e);return t.fg},getLoadedThemes:function(){return l.getLoadedThemes()},getLoadedLanguages:function(){return l.getLoadedLanguages()},setColorReplacements:function(e){h=e}}}function oe(e){P(e)}export{t as BUNDLED_LANGUAGES,e as BUNDLED_THEMES,s as FontStyle,re as getHighlighter,R as loadTheme,te as renderToHtml,w as setCDN,oe as setOnigasmWASM,P as setWasm,I as toShikiTheme};
diff --git a/node_modules/shiki/dist/index.d.ts b/node_modules/shiki/dist/index.d.ts
new file mode 100644
index 0000000..fe222c6
--- /dev/null
+++ b/node_modules/shiki/dist/index.d.ts
@@ -0,0 +1,345 @@
+import { IGrammar, IRawTheme } from 'vscode-textmate';
+
+type Theme = 'css-variables' | 'dark-plus' | 'dracula-soft' | 'dracula' | 'github-dark-dimmed' | 'github-dark' | 'github-light' | 'hc_light' | 'light-plus' | 'material-theme-darker' | 'material-theme-lighter' | 'material-theme-ocean' | 'material-theme-palenight' | 'material-theme' | 'min-dark' | 'min-light' | 'monokai' | 'nord' | 'one-dark-pro' | 'poimandres' | 'rose-pine-dawn' | 'rose-pine-moon' | 'rose-pine' | 'slack-dark' | 'slack-ochin' | 'solarized-dark' | 'solarized-light' | 'vitesse-dark' | 'vitesse-light';
+declare const themes: Theme[];
+
+declare enum FontStyle {
+ NotSet = -1,
+ None = 0,
+ Italic = 1,
+ Bold = 2,
+ Underline = 4
+}
+
+interface IThemedTokenScopeExplanation {
+ scopeName: string;
+ themeMatches: any[];
+}
+interface IThemedTokenExplanation {
+ content: string;
+ scopes: IThemedTokenScopeExplanation[];
+}
+/**
+ * A single token with color, and optionally with explanation.
+ *
+ * For example:
+ *
+ * {
+ * "content": "shiki",
+ * "color": "#D8DEE9",
+ * "explanation": [
+ * {
+ * "content": "shiki",
+ * "scopes": [
+ * {
+ * "scopeName": "source.js",
+ * "themeMatches": []
+ * },
+ * {
+ * "scopeName": "meta.objectliteral.js",
+ * "themeMatches": []
+ * },
+ * {
+ * "scopeName": "meta.object.member.js",
+ * "themeMatches": []
+ * },
+ * {
+ * "scopeName": "meta.array.literal.js",
+ * "themeMatches": []
+ * },
+ * {
+ * "scopeName": "variable.other.object.js",
+ * "themeMatches": [
+ * {
+ * "name": "Variable",
+ * "scope": "variable.other",
+ * "settings": {
+ * "foreground": "#D8DEE9"
+ * }
+ * },
+ * {
+ * "name": "[JavaScript] Variable Other Object",
+ * "scope": "source.js variable.other.object",
+ * "settings": {
+ * "foreground": "#D8DEE9"
+ * }
+ * }
+ * ]
+ * }
+ * ]
+ * }
+ * ]
+ * }
+ *
+ */
+interface IThemedToken {
+ /**
+ * The content of the token
+ */
+ content: string;
+ /**
+ * 6 or 8 digit hex code representation of the token's color
+ */
+ color?: string;
+ /**
+ * Font style of token. Can be None/Italic/Bold/Underline
+ */
+ fontStyle?: FontStyle;
+ /**
+ * Explanation of
+ *
+ * - token text's matching scopes
+ * - reason that token text is given a color (one matching scope matches a rule (scope -> color) in the theme)
+ */
+ explanation?: IThemedTokenExplanation[];
+}
+
+interface HighlighterOptions {
+ /**
+ * The theme to load upfront.
+ *
+ * Default to: 'nord'
+ */
+ theme?: IThemeRegistration;
+ /**
+ * A list of themes to load upfront.
+ */
+ themes?: IThemeRegistration[];
+ /**
+ * A list of languages to load upfront.
+ *
+ * Default to all the bundled languages.
+ */
+ langs?: (Lang | ILanguageRegistration)[];
+ /**
+ * Paths for loading themes and langs. Relative to the package's root.
+ */
+ paths?: IHighlighterPaths;
+}
+interface Highlighter {
+ /**
+ * Convert code to HTML tokens.
+ * `lang` and `theme` must have been loaded.
+ * @deprecated Please use the `codeToHtml(code, options?)` overload instead.
+ */
+ codeToHtml(code: string, lang?: StringLiteralUnion<Lang>, theme?: StringLiteralUnion<Theme>, options?: CodeToHtmlOptions): string;
+ /**
+ * Convert code to HTML tokens.
+ * `lang` and `theme` must have been loaded.
+ */
+ codeToHtml(code: string, options?: CodeToHtmlOptions): string;
+ /**
+ * Convert code to themed tokens for custom processing.
+ * `lang` and `theme` must have been loaded.
+ * You may customize the bundled HTML / SVG renderer or write your own
+ * renderer for another render target.
+ */
+ codeToThemedTokens(code: string, lang?: StringLiteralUnion<Lang>, theme?: StringLiteralUnion<Theme>, options?: ThemedTokenizerOptions): IThemedToken[][];
+ /**
+ * Convert ansi-escaped text to HTML tokens.
+ * `theme` must have been loaded.
+ */
+ ansiToHtml(ansi: string, options?: AnsiToHtmlOptions): string;
+ /**
+ * Convert ansi-escaped text to themed tokens for custom processing.
+ * `theme` must have been loaded.
+ * You may customize the bundled HTML / SVG renderer or write your own
+ * renderer for another render target.
+ */
+ ansiToThemedTokens(ansi: string, theme?: StringLiteralUnion<Theme>): IThemedToken[][];
+ /**
+ * Get the loaded theme
+ */
+ getTheme(theme?: IThemeRegistration): IShikiTheme;
+ /**
+ * Load a theme
+ */
+ loadTheme(theme: IThemeRegistration): Promise<void>;
+ /**
+ * Load a language
+ */
+ loadLanguage(lang: ILanguageRegistration | Lang): Promise<void>;
+ /**
+ * Get all loaded themes
+ */
+ getLoadedThemes(): Theme[];
+ /**
+ * Get all loaded languages
+ */
+ getLoadedLanguages(): Lang[];
+ /**
+ * Get the foreground color for theme. Can be used for CSS `color`.
+ */
+ getForegroundColor(theme?: StringLiteralUnion<Theme>): string;
+ /**
+ * Get the background color for theme. Can be used for CSS `background-color`.
+ */
+ getBackgroundColor(theme?: StringLiteralUnion<Theme>): string;
+ setColorReplacements(map: Record<string, string>): void;
+}
+interface IHighlighterPaths {
+ /**
+ * @default 'themes/'
+ */
+ themes?: string;
+ /**
+ * @default 'languages/'
+ */
+ languages?: string;
+ /**
+ * @default 'dist/'
+ */
+ wasm?: string;
+}
+type ILanguageRegistration = {
+ id: string;
+ scopeName: string;
+ displayName?: string;
+ aliases?: string[];
+ samplePath?: string;
+ /**
+ * A list of languages the current language embeds.
+ * If manually specifying languages to load, make sure to load the embedded
+ * languages for each parent language.
+ */
+ embeddedLangs?: Lang[];
+ balancedBracketSelectors?: string[];
+ unbalancedBracketSelectors?: string[];
+} & {
+ path: string;
+ grammar?: IGrammar;
+};
+type IThemeRegistration = IShikiTheme | StringLiteralUnion<Theme>;
+interface IShikiTheme extends IRawTheme {
+ /**
+ * @description theme name
+ */
+ name: string;
+ /**
+ * @description light/dark theme
+ */
+ type: 'light' | 'dark' | 'css';
+ /**
+ * @description tokenColors of the theme file
+ */
+ settings: any[];
+ /**
+ * @description text default foreground color
+ */
+ fg: string;
+ /**
+ * @description text default background color
+ */
+ bg: string;
+ /**
+ * @description relative path of included theme
+ */
+ include?: string;
+ /**
+ *
+ * @description color map of the theme file
+ */
+ colors?: Record<string, string>;
+}
+interface Nothing {
+}
+/**
+ * type StringLiteralUnion<'foo'> = 'foo' | string
+ * This has auto completion whereas `'foo' | string` doesn't
+ * Adapted from https://github.com/microsoft/TypeScript/issues/29729
+ */
+type StringLiteralUnion<T extends U, U = string> = T | (U & Nothing);
+interface CodeToHtmlOptions {
+ lang?: StringLiteralUnion<Lang>;
+ theme?: StringLiteralUnion<Theme>;
+ lineOptions?: LineOption[];
+}
+interface AnsiToHtmlOptions {
+ theme?: StringLiteralUnion<Theme>;
+ lineOptions?: LineOption[];
+}
+interface HtmlRendererOptions {
+ langId?: string;
+ fg?: string;
+ bg?: string;
+ lineOptions?: LineOption[];
+ elements?: ElementsOptions;
+ themeName?: string;
+}
+interface LineOption {
+ /**
+ * 1-based line number.
+ */
+ line: number;
+ classes?: string[];
+}
+interface ElementProps {
+ children: string;
+ [key: string]: unknown;
+}
+interface PreElementProps extends ElementProps {
+ className: string;
+ style: string;
+}
+interface CodeElementProps extends ElementProps {
+}
+interface LineElementProps extends ElementProps {
+ className: string;
+ lines: IThemedToken[][];
+ line: IThemedToken[];
+ index: number;
+}
+interface TokenElementProps extends ElementProps {
+ style: string;
+ tokens: IThemedToken[];
+ token: IThemedToken;
+ index: number;
+}
+interface ElementsOptions {
+ pre?: (props: PreElementProps) => string;
+ code?: (props: CodeElementProps) => string;
+ line?: (props: LineElementProps) => string;
+ token?: (props: TokenElementProps) => string;
+}
+interface ThemedTokenizerOptions {
+ /**
+ * Whether to include explanation of each token's matching scopes and
+ * why it's given its color. Default to false to reduce output verbosity.
+ */
+ includeExplanation?: boolean;
+}
+
+type Lang = 'abap' | 'actionscript-3' | 'ada' | 'apache' | 'apex' | 'apl' | 'applescript' | 'ara' | 'asm' | 'astro' | 'awk' | 'ballerina' | 'bat' | 'batch' | 'beancount' | 'berry' | 'be' | 'bibtex' | 'bicep' | 'blade' | 'c' | 'cadence' | 'cdc' | 'clarity' | 'clojure' | 'clj' | 'cmake' | 'cobol' | 'codeql' | 'ql' | 'coffee' | 'cpp' | 'crystal' | 'csharp' | 'c#' | 'cs' | 'css' | 'cue' | 'cypher' | 'cql' | 'd' | 'dart' | 'dax' | 'diff' | 'docker' | 'dockerfile' | 'dream-maker' | 'elixir' | 'elm' | 'erb' | 'erlang' | 'erl' | 'fish' | 'fsharp' | 'f#' | 'fs' | 'gdresource' | 'gdscript' | 'gdshader' | 'gherkin' | 'git-commit' | 'git-rebase' | 'glimmer-js' | 'gjs' | 'glimmer-ts' | 'gts' | 'glsl' | 'gnuplot' | 'go' | 'graphql' | 'groovy' | 'hack' | 'haml' | 'handlebars' | 'hbs' | 'haskell' | 'hs' | 'hcl' | 'hjson' | 'hlsl' | 'html' | 'http' | 'imba' | 'ini' | 'properties' | 'java' | 'javascript' | 'js' | 'jinja-html' | 'jison' | 'json' | 'json5' | 'jsonc' | 'jsonl' | 'jsonnet' | 'jssm' | 'fsl' | 'jsx' | 'julia' | 'kotlin' | 'kusto' | 'kql' | 'latex' | 'less' | 'liquid' | 'lisp' | 'logo' | 'lua' | 'make' | 'makefile' | 'markdown' | 'md' | 'marko' | 'matlab' | 'mdx' | 'mermaid' | 'narrat' | 'nar' | 'nextflow' | 'nf' | 'nginx' | 'nim' | 'nix' | 'objective-c' | 'objc' | 'objective-cpp' | 'ocaml' | 'pascal' | 'perl' | 'php' | 'plsql' | 'postcss' | 'powerquery' | 'powershell' | 'ps' | 'ps1' | 'prisma' | 'prolog' | 'proto' | 'pug' | 'jade' | 'puppet' | 'purescript' | 'python' | 'py' | 'r' | 'raku' | 'perl6' | 'razor' | 'reg' | 'rel' | 'riscv' | 'rst' | 'ruby' | 'rb' | 'rust' | 'rs' | 'sas' | 'sass' | 'scala' | 'scheme' | 'scss' | 'shaderlab' | 'shader' | 'shellscript' | 'bash' | 'console' | 'sh' | 'shell' | 'zsh' | 'smalltalk' | 'solidity' | 'sparql' | 'sql' | 'ssh-config' | 'stata' | 'stylus' | 'styl' | 'svelte' | 'swift' | 'system-verilog' | 'tasl' | 'tcl' | 'tex' | 'toml' | 'tsx' | 'turtle' | 'twig' | 'typescript' | 'ts' | 'v' | 'vb' | 'cmd' | 'verilog' | 'vhdl' | 'viml' | 'vim' | 'vimscript' | 'vue-html' | 'vue' | 'vyper' | 'vy' | 'wasm' | 'wenyan' | '文言' | 'wgsl' | 'wolfram' | 'xml' | 'xsl' | 'yaml' | 'yml' | 'zenscript';
+declare const languages: ILanguageRegistration[];
+
+declare function getHighlighter(options: HighlighterOptions): Promise<Highlighter>;
+
+declare function renderToHtml(lines: IThemedToken[][], options?: HtmlRendererOptions): string;
+
+/**
+ * Set the route for loading the assets
+ * URL should end with `/`
+ *
+ * For example:
+ * ```ts
+ * setCDN('https://unpkg.com/shiki/') // use unpkg
+ * setCDN('/assets/shiki/') // serve by yourself
+ * ```
+ */
+declare function setCDN(root: string): void;
+/**
+ * Explicitly set the source for loading the oniguruma web assembly module.
+ * *
+ * Accepts ArrayBuffer or Response (usage of string is deprecated)
+ */
+declare function setWasm(data: string | ArrayBuffer | Response): void;
+/**
+ * @param themePath related path to theme.json
+ */
+declare function fetchTheme(themePath: string): Promise<IShikiTheme>;
+declare function toShikiTheme(rawTheme: IRawTheme): IShikiTheme;
+
+/** @deprecated use setWasm instead, will be removed in a future version */
+declare function setOnigasmWASM(path: string | ArrayBuffer): void;
+
+export { languages as BUNDLED_LANGUAGES, themes as BUNDLED_THEMES, FontStyle, Highlighter, HighlighterOptions, HtmlRendererOptions, ILanguageRegistration, IShikiTheme, IThemeRegistration, IThemedToken, Lang, Theme, getHighlighter, fetchTheme as loadTheme, renderToHtml, setCDN, setOnigasmWASM, setWasm, toShikiTheme };
diff --git a/node_modules/shiki/dist/index.esm.js b/node_modules/shiki/dist/index.esm.js
new file mode 100644
index 0000000..a9dd309
--- /dev/null
+++ b/node_modules/shiki/dist/index.esm.js
@@ -0,0 +1,3136 @@
+import { loadWASM, createOnigScanner, createOnigString } from 'vscode-oniguruma';
+import { INITIAL, Registry as Registry$1 } from 'vscode-textmate';
+
+const themes = [
+ "css-variables",
+ "dark-plus",
+ "dracula-soft",
+ "dracula",
+ "github-dark-dimmed",
+ "github-dark",
+ "github-light",
+ "hc_light",
+ "light-plus",
+ "material-theme-darker",
+ "material-theme-lighter",
+ "material-theme-ocean",
+ "material-theme-palenight",
+ "material-theme",
+ "min-dark",
+ "min-light",
+ "monokai",
+ "nord",
+ "one-dark-pro",
+ "poimandres",
+ "rose-pine-dawn",
+ "rose-pine-moon",
+ "rose-pine",
+ "slack-dark",
+ "slack-ochin",
+ "solarized-dark",
+ "solarized-light",
+ "vitesse-dark",
+ "vitesse-light"
+];
+
+const languages = [
+ {
+ id: "abap",
+ scopeName: "source.abap",
+ path: "abap.tmLanguage.json",
+ displayName: "ABAP",
+ samplePath: "abap.sample"
+ },
+ {
+ id: "actionscript-3",
+ scopeName: "source.actionscript.3",
+ path: "actionscript-3.tmLanguage.json",
+ displayName: "ActionScript",
+ samplePath: "actionscript-3.sample"
+ },
+ {
+ id: "ada",
+ scopeName: "source.ada",
+ path: "ada.tmLanguage.json",
+ displayName: "Ada",
+ samplePath: "ada.sample"
+ },
+ {
+ id: "apache",
+ scopeName: "source.apacheconf",
+ path: "apache.tmLanguage.json",
+ displayName: "Apache Conf"
+ },
+ {
+ id: "apex",
+ scopeName: "source.apex",
+ path: "apex.tmLanguage.json",
+ displayName: "Apex",
+ samplePath: "apex.sample"
+ },
+ {
+ id: "apl",
+ scopeName: "source.apl",
+ path: "apl.tmLanguage.json",
+ displayName: "APL",
+ embeddedLangs: ["html", "xml", "css", "javascript", "json"]
+ },
+ {
+ id: "applescript",
+ scopeName: "source.applescript",
+ path: "applescript.tmLanguage.json",
+ displayName: "AppleScript",
+ samplePath: "applescript.sample"
+ },
+ {
+ id: "ara",
+ scopeName: "source.ara",
+ path: "ara.tmLanguage.json",
+ displayName: "Ara",
+ samplePath: "ara.sample"
+ },
+ {
+ id: "asm",
+ scopeName: "source.asm.x86_64",
+ path: "asm.tmLanguage.json",
+ displayName: "Assembly",
+ samplePath: "asm.sample"
+ },
+ {
+ id: "astro",
+ scopeName: "source.astro",
+ path: "astro.tmLanguage.json",
+ displayName: "Astro",
+ samplePath: "astro.sample",
+ embeddedLangs: ["json", "javascript", "typescript", "stylus", "sass", "css", "scss", "less", "postcss", "tsx"]
+ },
+ {
+ id: "awk",
+ scopeName: "source.awk",
+ path: "awk.tmLanguage.json",
+ displayName: "AWK",
+ samplePath: "awk.sample"
+ },
+ {
+ id: "ballerina",
+ scopeName: "source.ballerina",
+ path: "ballerina.tmLanguage.json",
+ displayName: "Ballerina",
+ samplePath: "ballerina.sample"
+ },
+ {
+ id: "bat",
+ scopeName: "source.batchfile",
+ path: "bat.tmLanguage.json",
+ displayName: "Batch",
+ samplePath: "bat.sample",
+ aliases: ["batch"]
+ },
+ {
+ id: "beancount",
+ scopeName: "text.beancount",
+ path: "beancount.tmLanguage.json",
+ displayName: "Beancount",
+ samplePath: "beancount.sample"
+ },
+ {
+ id: "berry",
+ scopeName: "source.berry",
+ path: "berry.tmLanguage.json",
+ displayName: "Berry",
+ samplePath: "berry.sample",
+ aliases: ["be"]
+ },
+ {
+ id: "bibtex",
+ scopeName: "text.bibtex",
+ path: "bibtex.tmLanguage.json",
+ displayName: "BibTeX"
+ },
+ {
+ id: "bicep",
+ scopeName: "source.bicep",
+ path: "bicep.tmLanguage.json",
+ displayName: "Bicep",
+ samplePath: "bicep.sample"
+ },
+ {
+ id: "blade",
+ scopeName: "text.html.php.blade",
+ path: "blade.tmLanguage.json",
+ displayName: "Blade",
+ samplePath: "blade.sample",
+ embeddedLangs: ["html", "xml", "sql", "javascript", "json", "css"]
+ },
+ {
+ id: "c",
+ scopeName: "source.c",
+ path: "c.tmLanguage.json",
+ displayName: "C",
+ samplePath: "c.sample"
+ },
+ {
+ id: "cadence",
+ scopeName: "source.cadence",
+ path: "cadence.tmLanguage.json",
+ displayName: "Cadence",
+ samplePath: "cadence.sample",
+ aliases: ["cdc"]
+ },
+ {
+ id: "clarity",
+ scopeName: "source.clar",
+ path: "clarity.tmLanguage.json",
+ displayName: "Clarity",
+ samplePath: "clarity.sample"
+ },
+ {
+ id: "clojure",
+ scopeName: "source.clojure",
+ path: "clojure.tmLanguage.json",
+ displayName: "Clojure",
+ samplePath: "clojure.sample",
+ aliases: ["clj"]
+ },
+ {
+ id: "cmake",
+ scopeName: "source.cmake",
+ path: "cmake.tmLanguage.json",
+ displayName: "CMake",
+ samplePath: "cmake.sample"
+ },
+ {
+ id: "cobol",
+ scopeName: "source.cobol",
+ path: "cobol.tmLanguage.json",
+ displayName: "COBOL",
+ samplePath: "cobol.sample",
+ embeddedLangs: ["sql", "html", "java"]
+ },
+ {
+ id: "codeql",
+ scopeName: "source.ql",
+ path: "codeql.tmLanguage.json",
+ displayName: "CodeQL",
+ samplePath: "codeql.sample",
+ aliases: ["ql"],
+ embeddedLangs: ["markdown"]
+ },
+ {
+ id: "coffee",
+ scopeName: "source.coffee",
+ path: "coffee.tmLanguage.json",
+ displayName: "CoffeeScript",
+ samplePath: "coffee.sample",
+ embeddedLangs: ["javascript"]
+ },
+ {
+ id: "cpp",
+ scopeName: "source.cpp",
+ path: "cpp.tmLanguage.json",
+ displayName: "C++",
+ samplePath: "cpp.sample",
+ embeddedLangs: ["glsl", "sql"]
+ },
+ {
+ id: "crystal",
+ scopeName: "source.crystal",
+ path: "crystal.tmLanguage.json",
+ displayName: "Crystal",
+ samplePath: "crystal.sample",
+ embeddedLangs: ["html", "sql", "css", "c", "javascript", "shellscript"]
+ },
+ {
+ id: "csharp",
+ scopeName: "source.cs",
+ path: "csharp.tmLanguage.json",
+ displayName: "C#",
+ samplePath: "csharp.sample",
+ aliases: ["c#", "cs"]
+ },
+ {
+ id: "css",
+ scopeName: "source.css",
+ path: "css.tmLanguage.json",
+ displayName: "CSS",
+ samplePath: "css.sample"
+ },
+ {
+ id: "cue",
+ scopeName: "source.cue",
+ path: "cue.tmLanguage.json",
+ displayName: "CUE",
+ samplePath: "cue.sample"
+ },
+ {
+ id: "cypher",
+ scopeName: "source.cypher",
+ path: "cypher.tmLanguage.json",
+ displayName: "Cypher",
+ samplePath: "cypher.sample",
+ aliases: ["cql"]
+ },
+ {
+ id: "d",
+ scopeName: "source.d",
+ path: "d.tmLanguage.json",
+ displayName: "D",
+ samplePath: "d.sample"
+ },
+ {
+ id: "dart",
+ scopeName: "source.dart",
+ path: "dart.tmLanguage.json",
+ displayName: "Dart",
+ samplePath: "dart.sample"
+ },
+ {
+ id: "dax",
+ scopeName: "source.dax",
+ path: "dax.tmLanguage.json",
+ displayName: "DAX",
+ samplePath: "dax.sample"
+ },
+ {
+ id: "diff",
+ scopeName: "source.diff",
+ path: "diff.tmLanguage.json",
+ displayName: "Diff",
+ samplePath: "diff.sample"
+ },
+ {
+ id: "docker",
+ scopeName: "source.dockerfile",
+ path: "docker.tmLanguage.json",
+ displayName: "Docker",
+ samplePath: "docker.sample",
+ aliases: ["dockerfile"]
+ },
+ {
+ id: "dream-maker",
+ scopeName: "source.dm",
+ path: "dream-maker.tmLanguage.json",
+ displayName: "Dream Maker"
+ },
+ {
+ id: "elixir",
+ scopeName: "source.elixir",
+ path: "elixir.tmLanguage.json",
+ displayName: "Elixir",
+ samplePath: "elixir.sample",
+ embeddedLangs: ["html"]
+ },
+ {
+ id: "elm",
+ scopeName: "source.elm",
+ path: "elm.tmLanguage.json",
+ displayName: "Elm",
+ samplePath: "elm.sample",
+ embeddedLangs: ["glsl"]
+ },
+ {
+ id: "erb",
+ scopeName: "text.html.erb",
+ path: "erb.tmLanguage.json",
+ displayName: "ERB",
+ samplePath: "erb.sample",
+ embeddedLangs: ["html", "ruby"]
+ },
+ {
+ id: "erlang",
+ scopeName: "source.erlang",
+ path: "erlang.tmLanguage.json",
+ displayName: "Erlang",
+ samplePath: "erlang.sample",
+ aliases: ["erl"]
+ },
+ {
+ id: "fish",
+ scopeName: "source.fish",
+ path: "fish.tmLanguage.json",
+ displayName: "Fish",
+ samplePath: "fish.sample"
+ },
+ {
+ id: "fsharp",
+ scopeName: "source.fsharp",
+ path: "fsharp.tmLanguage.json",
+ displayName: "F#",
+ samplePath: "fsharp.sample",
+ aliases: ["f#", "fs"],
+ embeddedLangs: ["markdown"]
+ },
+ {
+ id: "gdresource",
+ scopeName: "source.gdresource",
+ path: "gdresource.tmLanguage.json",
+ displayName: "GDResource",
+ samplePath: "gdresource.sample",
+ embeddedLangs: ["gdshader", "gdscript"]
+ },
+ {
+ id: "gdscript",
+ scopeName: "source.gdscript",
+ path: "gdscript.tmLanguage.json",
+ displayName: "GDScript",
+ samplePath: "gdscript.sample"
+ },
+ {
+ id: "gdshader",
+ scopeName: "source.gdshader",
+ path: "gdshader.tmLanguage.json",
+ displayName: "GDShader",
+ samplePath: "gdshader.sample"
+ },
+ {
+ id: "gherkin",
+ scopeName: "text.gherkin.feature",
+ path: "gherkin.tmLanguage.json",
+ displayName: "Gherkin"
+ },
+ {
+ id: "git-commit",
+ scopeName: "text.git-commit",
+ path: "git-commit.tmLanguage.json",
+ displayName: "Git Commit Message",
+ embeddedLangs: ["diff"]
+ },
+ {
+ id: "git-rebase",
+ scopeName: "text.git-rebase",
+ path: "git-rebase.tmLanguage.json",
+ displayName: "Git Rebase Message",
+ embeddedLangs: ["shellscript"]
+ },
+ {
+ id: "glimmer-js",
+ scopeName: "source.gjs",
+ path: "glimmer-js.tmLanguage.json",
+ displayName: "Glimmer JS",
+ aliases: ["gjs"],
+ embeddedLangs: ["javascript", "handlebars"]
+ },
+ {
+ id: "glimmer-ts",
+ scopeName: "source.gts",
+ path: "glimmer-ts.tmLanguage.json",
+ displayName: "Glimmer TS",
+ aliases: ["gts"],
+ embeddedLangs: ["typescript", "handlebars"]
+ },
+ {
+ id: "glsl",
+ scopeName: "source.glsl",
+ path: "glsl.tmLanguage.json",
+ displayName: "GLSL",
+ samplePath: "glsl.sample",
+ embeddedLangs: ["c"]
+ },
+ {
+ id: "gnuplot",
+ scopeName: "source.gnuplot",
+ path: "gnuplot.tmLanguage.json",
+ displayName: "Gnuplot"
+ },
+ {
+ id: "go",
+ scopeName: "source.go",
+ path: "go.tmLanguage.json",
+ displayName: "Go",
+ samplePath: "go.sample"
+ },
+ {
+ id: "graphql",
+ scopeName: "source.graphql",
+ path: "graphql.tmLanguage.json",
+ displayName: "GraphQL",
+ embeddedLangs: ["javascript", "typescript", "jsx", "tsx"]
+ },
+ {
+ id: "groovy",
+ scopeName: "source.groovy",
+ path: "groovy.tmLanguage.json",
+ displayName: "Groovy"
+ },
+ {
+ id: "hack",
+ scopeName: "source.hack",
+ path: "hack.tmLanguage.json",
+ displayName: "Hack",
+ embeddedLangs: ["html", "sql"]
+ },
+ {
+ id: "haml",
+ scopeName: "text.haml",
+ path: "haml.tmLanguage.json",
+ displayName: "Ruby Haml",
+ embeddedLangs: ["ruby", "javascript", "sass", "coffee", "markdown", "css"]
+ },
+ {
+ id: "handlebars",
+ scopeName: "text.html.handlebars",
+ path: "handlebars.tmLanguage.json",
+ displayName: "Handlebars",
+ aliases: ["hbs"],
+ embeddedLangs: ["html", "css", "javascript", "yaml"]
+ },
+ {
+ id: "haskell",
+ scopeName: "source.haskell",
+ path: "haskell.tmLanguage.json",
+ displayName: "Haskell",
+ aliases: ["hs"]
+ },
+ {
+ id: "hcl",
+ scopeName: "source.hcl",
+ path: "hcl.tmLanguage.json",
+ displayName: "HashiCorp HCL",
+ samplePath: "hcl.sample"
+ },
+ {
+ id: "hjson",
+ scopeName: "source.hjson",
+ path: "hjson.tmLanguage.json",
+ displayName: "Hjson",
+ samplePath: "hjson.sample"
+ },
+ {
+ id: "hlsl",
+ scopeName: "source.hlsl",
+ path: "hlsl.tmLanguage.json",
+ displayName: "HLSL"
+ },
+ {
+ id: "html",
+ scopeName: "text.html.basic",
+ path: "html.tmLanguage.json",
+ displayName: "HTML",
+ samplePath: "html.sample",
+ embeddedLangs: ["javascript", "css"]
+ },
+ {
+ id: "http",
+ scopeName: "source.http",
+ path: "http.tmLanguage.json",
+ displayName: "HTTP",
+ samplePath: "http.sample",
+ embeddedLangs: ["shellscript", "json", "xml", "graphql"]
+ },
+ {
+ id: "imba",
+ scopeName: "source.imba",
+ path: "imba.tmLanguage.json",
+ displayName: "Imba",
+ samplePath: "imba.sample"
+ },
+ {
+ id: "ini",
+ scopeName: "source.ini",
+ path: "ini.tmLanguage.json",
+ displayName: "INI",
+ aliases: ["properties"]
+ },
+ {
+ id: "java",
+ scopeName: "source.java",
+ path: "java.tmLanguage.json",
+ displayName: "Java",
+ samplePath: "java.sample"
+ },
+ {
+ id: "javascript",
+ scopeName: "source.js",
+ path: "javascript.tmLanguage.json",
+ displayName: "JavaScript",
+ samplePath: "javascript.sample",
+ aliases: ["js"]
+ },
+ {
+ id: "jinja-html",
+ scopeName: "text.html.jinja",
+ path: "jinja-html.tmLanguage.json",
+ displayName: "Jinja",
+ embeddedLangs: ["html"]
+ },
+ {
+ id: "jison",
+ scopeName: "source.jison",
+ path: "jison.tmLanguage.json",
+ displayName: "Jison",
+ samplePath: "jison.sample",
+ embeddedLangs: ["javascript"]
+ },
+ {
+ id: "json",
+ scopeName: "source.json",
+ path: "json.tmLanguage.json",
+ displayName: "JSON"
+ },
+ {
+ id: "json5",
+ scopeName: "source.json5",
+ path: "json5.tmLanguage.json",
+ displayName: "JSON5",
+ samplePath: "json5.sample"
+ },
+ {
+ id: "jsonc",
+ scopeName: "source.json.comments",
+ path: "jsonc.tmLanguage.json",
+ displayName: "JSON with Comments"
+ },
+ {
+ id: "jsonl",
+ scopeName: "source.json.lines",
+ path: "jsonl.tmLanguage.json",
+ displayName: "JSON Lines"
+ },
+ {
+ id: "jsonnet",
+ scopeName: "source.jsonnet",
+ path: "jsonnet.tmLanguage.json",
+ displayName: "Jsonnet"
+ },
+ {
+ id: "jssm",
+ scopeName: "source.jssm",
+ path: "jssm.tmLanguage.json",
+ displayName: "JSSM",
+ samplePath: "jssm.sample",
+ aliases: ["fsl"]
+ },
+ {
+ id: "jsx",
+ scopeName: "source.js.jsx",
+ path: "jsx.tmLanguage.json",
+ displayName: "JSX"
+ },
+ {
+ id: "julia",
+ scopeName: "source.julia",
+ path: "julia.tmLanguage.json",
+ displayName: "Julia",
+ embeddedLangs: ["cpp", "python", "javascript", "r", "sql"]
+ },
+ {
+ id: "kotlin",
+ scopeName: "source.kotlin",
+ path: "kotlin.tmLanguage.json",
+ displayName: "Kotlin",
+ samplePath: "kotlin.sample"
+ },
+ {
+ id: "kusto",
+ scopeName: "source.kusto",
+ path: "kusto.tmLanguage.json",
+ displayName: "Kusto",
+ samplePath: "kusto.sample",
+ aliases: ["kql"]
+ },
+ {
+ id: "latex",
+ scopeName: "text.tex.latex",
+ path: "latex.tmLanguage.json",
+ displayName: "LaTeX",
+ embeddedLangs: ["tex", "css", "haskell", "html", "xml", "java", "lua", "julia", "ruby", "javascript", "typescript", "python", "yaml", "rust", "scala", "gnuplot"]
+ },
+ {
+ id: "less",
+ scopeName: "source.css.less",
+ path: "less.tmLanguage.json",
+ displayName: "Less",
+ embeddedLangs: ["css"]
+ },
+ {
+ id: "liquid",
+ scopeName: "text.html.liquid",
+ path: "liquid.tmLanguage.json",
+ displayName: "Liquid",
+ samplePath: "liquid.sample",
+ embeddedLangs: ["html", "css", "json", "javascript"]
+ },
+ {
+ id: "lisp",
+ scopeName: "source.lisp",
+ path: "lisp.tmLanguage.json",
+ displayName: "Lisp"
+ },
+ {
+ id: "logo",
+ scopeName: "source.logo",
+ path: "logo.tmLanguage.json",
+ displayName: "Logo"
+ },
+ {
+ id: "lua",
+ scopeName: "source.lua",
+ path: "lua.tmLanguage.json",
+ displayName: "Lua",
+ embeddedLangs: ["c"]
+ },
+ {
+ id: "make",
+ scopeName: "source.makefile",
+ path: "make.tmLanguage.json",
+ displayName: "Makefile",
+ aliases: ["makefile"]
+ },
+ {
+ id: "markdown",
+ scopeName: "text.html.markdown",
+ path: "markdown.tmLanguage.json",
+ displayName: "Markdown",
+ aliases: ["md"],
+ embeddedLangs: ["css", "html", "ini", "java", "lua", "make", "perl", "r", "ruby", "php", "sql", "vb", "xml", "xsl", "yaml", "bat", "clojure", "coffee", "c", "cpp", "diff", "docker", "git-commit", "git-rebase", "go", "groovy", "pug", "javascript", "json", "jsonc", "less", "objective-c", "swift", "scss", "raku", "powershell", "python", "julia", "rust", "scala", "shellscript", "typescript", "tsx", "csharp", "fsharp", "dart", "handlebars", "erlang", "elixir", "latex", "bibtex"]
+ },
+ {
+ id: "marko",
+ scopeName: "text.marko",
+ path: "marko.tmLanguage.json",
+ displayName: "Marko",
+ embeddedLangs: ["css", "less", "scss", "javascript"]
+ },
+ {
+ id: "matlab",
+ scopeName: "source.matlab",
+ path: "matlab.tmLanguage.json",
+ displayName: "MATLAB"
+ },
+ {
+ id: "mdx",
+ scopeName: "source.mdx",
+ path: "mdx.tmLanguage.json",
+ displayName: "MDX",
+ embeddedLangs: ["tsx", "toml", "yaml", "c", "clojure", "coffee", "cpp", "csharp", "css", "diff", "docker", "elixir", "elm", "erlang", "go", "graphql", "haskell", "html", "ini", "java", "javascript", "json", "julia", "kotlin", "less", "lua", "make", "markdown", "objective-c", "perl", "python", "r", "ruby", "rust", "scala", "scss", "shellscript", "sql", "xml", "swift", "typescript"]
+ },
+ {
+ id: "mermaid",
+ scopeName: "source.mermaid",
+ path: "mermaid.tmLanguage.json",
+ displayName: "Mermaid"
+ },
+ {
+ id: "narrat",
+ scopeName: "source.narrat",
+ path: "narrat.tmLanguage.json",
+ displayName: "Narrat Language",
+ samplePath: "narrat.sample",
+ aliases: ["nar"]
+ },
+ {
+ id: "nextflow",
+ scopeName: "source.nextflow",
+ path: "nextflow.tmLanguage.json",
+ displayName: "Nextflow",
+ samplePath: "nextflow.sample",
+ aliases: ["nf"]
+ },
+ {
+ id: "nginx",
+ scopeName: "source.nginx",
+ path: "nginx.tmLanguage.json",
+ displayName: "Nginx",
+ embeddedLangs: ["lua"]
+ },
+ {
+ id: "nim",
+ scopeName: "source.nim",
+ path: "nim.tmLanguage.json",
+ displayName: "Nim",
+ embeddedLangs: ["c", "html", "xml", "javascript", "css", "glsl", "markdown"]
+ },
+ {
+ id: "nix",
+ scopeName: "source.nix",
+ path: "nix.tmLanguage.json",
+ displayName: "Nix"
+ },
+ {
+ id: "objective-c",
+ scopeName: "source.objc",
+ path: "objective-c.tmLanguage.json",
+ displayName: "Objective-C",
+ aliases: ["objc"]
+ },
+ {
+ id: "objective-cpp",
+ scopeName: "source.objcpp",
+ path: "objective-cpp.tmLanguage.json",
+ displayName: "Objective-C++"
+ },
+ {
+ id: "ocaml",
+ scopeName: "source.ocaml",
+ path: "ocaml.tmLanguage.json",
+ displayName: "OCaml"
+ },
+ {
+ id: "pascal",
+ scopeName: "source.pascal",
+ path: "pascal.tmLanguage.json",
+ displayName: "Pascal"
+ },
+ {
+ id: "perl",
+ scopeName: "source.perl",
+ path: "perl.tmLanguage.json",
+ displayName: "Perl",
+ embeddedLangs: ["html", "xml", "css", "javascript", "sql"]
+ },
+ {
+ id: "php",
+ scopeName: "source.php",
+ path: "php.tmLanguage.json",
+ displayName: "PHP",
+ embeddedLangs: ["html", "xml", "sql", "javascript", "json", "css"]
+ },
+ {
+ id: "plsql",
+ scopeName: "source.plsql.oracle",
+ path: "plsql.tmLanguage.json",
+ displayName: "PL/SQL"
+ },
+ {
+ id: "postcss",
+ scopeName: "source.css.postcss",
+ path: "postcss.tmLanguage.json",
+ displayName: "PostCSS"
+ },
+ {
+ id: "powerquery",
+ scopeName: "source.powerquery",
+ path: "powerquery.tmLanguage.json",
+ displayName: "PowerQuery",
+ samplePath: "powerquery.sample"
+ },
+ {
+ id: "powershell",
+ scopeName: "source.powershell",
+ path: "powershell.tmLanguage.json",
+ displayName: "PowerShell",
+ aliases: ["ps", "ps1"]
+ },
+ {
+ id: "prisma",
+ scopeName: "source.prisma",
+ path: "prisma.tmLanguage.json",
+ displayName: "Prisma",
+ samplePath: "prisma.sample"
+ },
+ {
+ id: "prolog",
+ scopeName: "source.prolog",
+ path: "prolog.tmLanguage.json",
+ displayName: "Prolog"
+ },
+ {
+ id: "proto",
+ scopeName: "source.proto",
+ path: "proto.tmLanguage.json",
+ displayName: "Protocol Buffer 3",
+ samplePath: "proto.sample"
+ },
+ {
+ id: "pug",
+ scopeName: "text.pug",
+ path: "pug.tmLanguage.json",
+ displayName: "Pug",
+ aliases: ["jade"],
+ embeddedLangs: ["javascript", "css", "sass", "scss", "stylus", "coffee", "html"]
+ },
+ {
+ id: "puppet",
+ scopeName: "source.puppet",
+ path: "puppet.tmLanguage.json",
+ displayName: "Puppet"
+ },
+ {
+ id: "purescript",
+ scopeName: "source.purescript",
+ path: "purescript.tmLanguage.json",
+ displayName: "PureScript"
+ },
+ {
+ id: "python",
+ scopeName: "source.python",
+ path: "python.tmLanguage.json",
+ displayName: "Python",
+ samplePath: "python.sample",
+ aliases: ["py"]
+ },
+ {
+ id: "r",
+ scopeName: "source.r",
+ path: "r.tmLanguage.json",
+ displayName: "R"
+ },
+ {
+ id: "raku",
+ scopeName: "source.perl.6",
+ path: "raku.tmLanguage.json",
+ displayName: "Perl 6",
+ aliases: ["perl6"]
+ },
+ {
+ id: "razor",
+ scopeName: "text.aspnetcorerazor",
+ path: "razor.tmLanguage.json",
+ displayName: "ASP.NET Razor",
+ embeddedLangs: ["html", "csharp"]
+ },
+ {
+ id: "reg",
+ scopeName: "source.reg",
+ path: "reg.tmLanguage.json",
+ displayName: "Windows Registry Script",
+ samplePath: "reg.sample"
+ },
+ {
+ id: "rel",
+ scopeName: "source.rel",
+ path: "rel.tmLanguage.json",
+ displayName: "Rel",
+ samplePath: "rel.sample"
+ },
+ {
+ id: "riscv",
+ scopeName: "source.riscv",
+ path: "riscv.tmLanguage.json",
+ displayName: "RISC-V"
+ },
+ {
+ id: "rst",
+ scopeName: "source.rst",
+ path: "rst.tmLanguage.json",
+ displayName: "reStructuredText",
+ embeddedLangs: ["cpp", "python", "javascript", "shellscript", "yaml", "cmake", "ruby"]
+ },
+ {
+ id: "ruby",
+ scopeName: "source.ruby",
+ path: "ruby.tmLanguage.json",
+ displayName: "Ruby",
+ samplePath: "ruby.sample",
+ aliases: ["rb"],
+ embeddedLangs: ["html", "xml", "sql", "css", "c", "javascript", "shellscript", "lua"]
+ },
+ {
+ id: "rust",
+ scopeName: "source.rust",
+ path: "rust.tmLanguage.json",
+ displayName: "Rust",
+ aliases: ["rs"]
+ },
+ {
+ id: "sas",
+ scopeName: "source.sas",
+ path: "sas.tmLanguage.json",
+ displayName: "SAS",
+ embeddedLangs: ["sql"]
+ },
+ {
+ id: "sass",
+ scopeName: "source.sass",
+ path: "sass.tmLanguage.json",
+ displayName: "Sass"
+ },
+ {
+ id: "scala",
+ scopeName: "source.scala",
+ path: "scala.tmLanguage.json",
+ displayName: "Scala"
+ },
+ {
+ id: "scheme",
+ scopeName: "source.scheme",
+ path: "scheme.tmLanguage.json",
+ displayName: "Scheme"
+ },
+ {
+ id: "scss",
+ scopeName: "source.css.scss",
+ path: "scss.tmLanguage.json",
+ displayName: "SCSS",
+ embeddedLangs: ["css"]
+ },
+ {
+ id: "shaderlab",
+ scopeName: "source.shaderlab",
+ path: "shaderlab.tmLanguage.json",
+ displayName: "ShaderLab",
+ aliases: ["shader"],
+ embeddedLangs: ["hlsl"]
+ },
+ {
+ id: "shellscript",
+ scopeName: "source.shell",
+ path: "shellscript.tmLanguage.json",
+ displayName: "Shell",
+ aliases: ["bash", "console", "sh", "shell", "zsh"]
+ },
+ {
+ id: "smalltalk",
+ scopeName: "source.smalltalk",
+ path: "smalltalk.tmLanguage.json",
+ displayName: "Smalltalk"
+ },
+ {
+ id: "solidity",
+ scopeName: "source.solidity",
+ path: "solidity.tmLanguage.json",
+ displayName: "Solidity"
+ },
+ {
+ id: "sparql",
+ scopeName: "source.sparql",
+ path: "sparql.tmLanguage.json",
+ displayName: "SPARQL",
+ samplePath: "sparql.sample",
+ embeddedLangs: ["turtle"]
+ },
+ {
+ id: "sql",
+ scopeName: "source.sql",
+ path: "sql.tmLanguage.json",
+ displayName: "SQL"
+ },
+ {
+ id: "ssh-config",
+ scopeName: "source.ssh-config",
+ path: "ssh-config.tmLanguage.json",
+ displayName: "SSH Config"
+ },
+ {
+ id: "stata",
+ scopeName: "source.stata",
+ path: "stata.tmLanguage.json",
+ displayName: "Stata",
+ samplePath: "stata.sample",
+ embeddedLangs: ["sql"]
+ },
+ {
+ id: "stylus",
+ scopeName: "source.stylus",
+ path: "stylus.tmLanguage.json",
+ displayName: "Stylus",
+ aliases: ["styl"]
+ },
+ {
+ id: "svelte",
+ scopeName: "source.svelte",
+ path: "svelte.tmLanguage.json",
+ displayName: "Svelte",
+ embeddedLangs: ["javascript", "typescript", "coffee", "stylus", "sass", "css", "scss", "less", "postcss", "pug", "markdown"]
+ },
+ {
+ id: "swift",
+ scopeName: "source.swift",
+ path: "swift.tmLanguage.json",
+ displayName: "Swift"
+ },
+ {
+ id: "system-verilog",
+ scopeName: "source.systemverilog",
+ path: "system-verilog.tmLanguage.json",
+ displayName: "SystemVerilog"
+ },
+ {
+ id: "tasl",
+ scopeName: "source.tasl",
+ path: "tasl.tmLanguage.json",
+ displayName: "Tasl",
+ samplePath: "tasl.sample"
+ },
+ {
+ id: "tcl",
+ scopeName: "source.tcl",
+ path: "tcl.tmLanguage.json",
+ displayName: "Tcl"
+ },
+ {
+ id: "tex",
+ scopeName: "text.tex",
+ path: "tex.tmLanguage.json",
+ displayName: "TeX",
+ embeddedLangs: ["r"]
+ },
+ {
+ id: "toml",
+ scopeName: "source.toml",
+ path: "toml.tmLanguage.json",
+ displayName: "TOML"
+ },
+ {
+ id: "tsx",
+ scopeName: "source.tsx",
+ path: "tsx.tmLanguage.json",
+ displayName: "TSX",
+ samplePath: "tsx.sample"
+ },
+ {
+ id: "turtle",
+ scopeName: "source.turtle",
+ path: "turtle.tmLanguage.json",
+ displayName: "Turtle",
+ samplePath: "turtle.sample"
+ },
+ {
+ id: "twig",
+ scopeName: "text.html.twig",
+ path: "twig.tmLanguage.json",
+ displayName: "Twig",
+ embeddedLangs: ["css", "javascript", "php", "python", "ruby"]
+ },
+ {
+ id: "typescript",
+ scopeName: "source.ts",
+ path: "typescript.tmLanguage.json",
+ displayName: "TypeScript",
+ aliases: ["ts"]
+ },
+ {
+ id: "v",
+ scopeName: "source.v",
+ path: "v.tmLanguage.json",
+ displayName: "V",
+ samplePath: "v.sample"
+ },
+ {
+ id: "vb",
+ scopeName: "source.asp.vb.net",
+ path: "vb.tmLanguage.json",
+ displayName: "Visual Basic",
+ aliases: ["cmd"]
+ },
+ {
+ id: "verilog",
+ scopeName: "source.verilog",
+ path: "verilog.tmLanguage.json",
+ displayName: "Verilog"
+ },
+ {
+ id: "vhdl",
+ scopeName: "source.vhdl",
+ path: "vhdl.tmLanguage.json",
+ displayName: "VHDL"
+ },
+ {
+ id: "viml",
+ scopeName: "source.viml",
+ path: "viml.tmLanguage.json",
+ displayName: "Vim Script",
+ aliases: ["vim", "vimscript"]
+ },
+ {
+ id: "vue-html",
+ scopeName: "text.html.vue-html",
+ path: "vue-html.tmLanguage.json",
+ displayName: "Vue HTML",
+ embeddedLangs: ["vue", "javascript"]
+ },
+ {
+ id: "vue",
+ scopeName: "source.vue",
+ path: "vue.tmLanguage.json",
+ displayName: "Vue",
+ embeddedLangs: ["html", "markdown", "pug", "stylus", "sass", "css", "scss", "less", "javascript", "typescript", "jsx", "tsx", "json", "jsonc", "json5", "yaml", "toml", "graphql"]
+ },
+ {
+ id: "vyper",
+ scopeName: "source.vyper",
+ path: "vyper.tmLanguage.json",
+ displayName: "Vyper",
+ samplePath: "vyper.sample",
+ aliases: ["vy"]
+ },
+ {
+ id: "wasm",
+ scopeName: "source.wat",
+ path: "wasm.tmLanguage.json",
+ displayName: "WebAssembly"
+ },
+ {
+ id: "wenyan",
+ scopeName: "source.wenyan",
+ path: "wenyan.tmLanguage.json",
+ displayName: "Wenyan",
+ aliases: ["\u6587\u8A00"]
+ },
+ {
+ id: "wgsl",
+ scopeName: "source.wgsl",
+ path: "wgsl.tmLanguage.json",
+ displayName: "WGSL",
+ samplePath: "wgsl.sample"
+ },
+ {
+ id: "wolfram",
+ scopeName: "source.wolfram",
+ path: "wolfram.tmLanguage.json",
+ displayName: "Wolfram",
+ samplePath: "wolfram.sample"
+ },
+ {
+ id: "xml",
+ scopeName: "text.xml",
+ path: "xml.tmLanguage.json",
+ displayName: "XML",
+ embeddedLangs: ["java"]
+ },
+ {
+ id: "xsl",
+ scopeName: "text.xml.xsl",
+ path: "xsl.tmLanguage.json",
+ displayName: "XSL",
+ embeddedLangs: ["xml"]
+ },
+ {
+ id: "yaml",
+ scopeName: "source.yaml",
+ path: "yaml.tmLanguage.json",
+ displayName: "YAML",
+ aliases: ["yml"]
+ },
+ {
+ id: "zenscript",
+ scopeName: "source.zenscript",
+ path: "zenscript.tmLanguage.json",
+ displayName: "ZenScript",
+ samplePath: "zenscript.sample"
+ }
+];
+
+var FontStyle = /* @__PURE__ */ ((FontStyle2) => {
+ FontStyle2[FontStyle2["NotSet"] = -1] = "NotSet";
+ FontStyle2[FontStyle2["None"] = 0] = "None";
+ FontStyle2[FontStyle2["Italic"] = 1] = "Italic";
+ FontStyle2[FontStyle2["Bold"] = 2] = "Bold";
+ FontStyle2[FontStyle2["Underline"] = 4] = "Underline";
+ return FontStyle2;
+})(FontStyle || {});
+class StackElementMetadata {
+ static toBinaryStr(metadata) {
+ let r = metadata.toString(2);
+ while (r.length < 32) {
+ r = "0" + r;
+ }
+ return r;
+ }
+ static printMetadata(metadata) {
+ let languageId = StackElementMetadata.getLanguageId(metadata);
+ let tokenType = StackElementMetadata.getTokenType(metadata);
+ let fontStyle = StackElementMetadata.getFontStyle(metadata);
+ let foreground = StackElementMetadata.getForeground(metadata);
+ let background = StackElementMetadata.getBackground(metadata);
+ console.log({
+ languageId,
+ tokenType,
+ fontStyle,
+ foreground,
+ background
+ });
+ }
+ static getLanguageId(metadata) {
+ return (metadata & 255 /* LANGUAGEID_MASK */) >>> 0 /* LANGUAGEID_OFFSET */;
+ }
+ static getTokenType(metadata) {
+ return (metadata & 768 /* TOKEN_TYPE_MASK */) >>> 8 /* TOKEN_TYPE_OFFSET */;
+ }
+ static getFontStyle(metadata) {
+ return (metadata & 14336 /* FONT_STYLE_MASK */) >>> 11 /* FONT_STYLE_OFFSET */;
+ }
+ static getForeground(metadata) {
+ return (metadata & 8372224 /* FOREGROUND_MASK */) >>> 15 /* FOREGROUND_OFFSET */;
+ }
+ static getBackground(metadata) {
+ return (metadata & 4286578688 /* BACKGROUND_MASK */) >>> 24 /* BACKGROUND_OFFSET */;
+ }
+ static containsBalancedBrackets(metadata) {
+ return (metadata & 1024 /* BALANCED_BRACKETS_MASK */) !== 0;
+ }
+ static set(metadata, languageId, tokenType, fontStyle, foreground, background) {
+ let _languageId = StackElementMetadata.getLanguageId(metadata);
+ let _tokenType = StackElementMetadata.getTokenType(metadata);
+ let _fontStyle = StackElementMetadata.getFontStyle(metadata);
+ let _foreground = StackElementMetadata.getForeground(metadata);
+ let _background = StackElementMetadata.getBackground(metadata);
+ let _containsBalancedBracketsBit = StackElementMetadata.containsBalancedBrackets(
+ metadata
+ ) ? 1 : 0;
+ if (languageId !== 0) {
+ _languageId = languageId;
+ }
+ if (tokenType !== 0 /* Other */) {
+ _tokenType = tokenType === 8 /* MetaEmbedded */ ? 0 /* Other */ : tokenType;
+ }
+ if (fontStyle !== -1 /* NotSet */) {
+ _fontStyle = fontStyle;
+ }
+ if (foreground !== 0) {
+ _foreground = foreground;
+ }
+ if (background !== 0) {
+ _background = background;
+ }
+ return (_languageId << 0 /* LANGUAGEID_OFFSET */ | _tokenType << 8 /* TOKEN_TYPE_OFFSET */ | _fontStyle << 11 /* FONT_STYLE_OFFSET */ | _containsBalancedBracketsBit << 10 /* BALANCED_BRACKETS_OFFSET */ | _foreground << 15 /* FOREGROUND_OFFSET */ | _background << 24 /* BACKGROUND_OFFSET */) >>> 0;
+ }
+}
+
+function trimEndSlash(str) {
+ if (str.endsWith("/") || str.endsWith("\\"))
+ return str.slice(0, -1);
+ return str;
+}
+function trimStartDot(str) {
+ if (str.startsWith("./"))
+ return str.slice(2);
+ return str;
+}
+function dirpathparts(str) {
+ const parts = str.split(/[\/\\]/g);
+ return parts.slice(0, parts.length - 1);
+}
+function join(...parts) {
+ return parts.map(trimEndSlash).map(trimStartDot).join("/");
+}
+function groupBy(elements, keyGetter) {
+ const map = /* @__PURE__ */ new Map();
+ for (const element of elements) {
+ const key = keyGetter(element);
+ if (map.has(key)) {
+ const group = map.get(key);
+ group.push(element);
+ } else {
+ map.set(key, [element]);
+ }
+ }
+ return map;
+}
+
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+/**
+ * Creates a JSON scanner on the given text.
+ * If ignoreTrivia is set, whitespaces or comments are ignored.
+ */
+function createScanner(text, ignoreTrivia = false) {
+ const len = text.length;
+ let pos = 0, value = '', tokenOffset = 0, token = 16 /* SyntaxKind.Unknown */, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0 /* ScanError.None */;
+ function scanHexDigits(count, exact) {
+ let digits = 0;
+ let value = 0;
+ while (digits < count || !exact) {
+ let ch = text.charCodeAt(pos);
+ if (ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */) {
+ value = value * 16 + ch - 48 /* CharacterCodes._0 */;
+ }
+ else if (ch >= 65 /* CharacterCodes.A */ && ch <= 70 /* CharacterCodes.F */) {
+ value = value * 16 + ch - 65 /* CharacterCodes.A */ + 10;
+ }
+ else if (ch >= 97 /* CharacterCodes.a */ && ch <= 102 /* CharacterCodes.f */) {
+ value = value * 16 + ch - 97 /* CharacterCodes.a */ + 10;
+ }
+ else {
+ break;
+ }
+ pos++;
+ digits++;
+ }
+ if (digits < count) {
+ value = -1;
+ }
+ return value;
+ }
+ function setPosition(newPosition) {
+ pos = newPosition;
+ value = '';
+ tokenOffset = 0;
+ token = 16 /* SyntaxKind.Unknown */;
+ scanError = 0 /* ScanError.None */;
+ }
+ function scanNumber() {
+ let start = pos;
+ if (text.charCodeAt(pos) === 48 /* CharacterCodes._0 */) {
+ pos++;
+ }
+ else {
+ pos++;
+ while (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ }
+ }
+ if (pos < text.length && text.charCodeAt(pos) === 46 /* CharacterCodes.dot */) {
+ pos++;
+ if (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ while (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ }
+ }
+ else {
+ scanError = 3 /* ScanError.UnexpectedEndOfNumber */;
+ return text.substring(start, pos);
+ }
+ }
+ let end = pos;
+ if (pos < text.length && (text.charCodeAt(pos) === 69 /* CharacterCodes.E */ || text.charCodeAt(pos) === 101 /* CharacterCodes.e */)) {
+ pos++;
+ if (pos < text.length && text.charCodeAt(pos) === 43 /* CharacterCodes.plus */ || text.charCodeAt(pos) === 45 /* CharacterCodes.minus */) {
+ pos++;
+ }
+ if (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ while (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ }
+ end = pos;
+ }
+ else {
+ scanError = 3 /* ScanError.UnexpectedEndOfNumber */;
+ }
+ }
+ return text.substring(start, end);
+ }
+ function scanString() {
+ let result = '', start = pos;
+ while (true) {
+ if (pos >= len) {
+ result += text.substring(start, pos);
+ scanError = 2 /* ScanError.UnexpectedEndOfString */;
+ break;
+ }
+ const ch = text.charCodeAt(pos);
+ if (ch === 34 /* CharacterCodes.doubleQuote */) {
+ result += text.substring(start, pos);
+ pos++;
+ break;
+ }
+ if (ch === 92 /* CharacterCodes.backslash */) {
+ result += text.substring(start, pos);
+ pos++;
+ if (pos >= len) {
+ scanError = 2 /* ScanError.UnexpectedEndOfString */;
+ break;
+ }
+ const ch2 = text.charCodeAt(pos++);
+ switch (ch2) {
+ case 34 /* CharacterCodes.doubleQuote */:
+ result += '\"';
+ break;
+ case 92 /* CharacterCodes.backslash */:
+ result += '\\';
+ break;
+ case 47 /* CharacterCodes.slash */:
+ result += '/';
+ break;
+ case 98 /* CharacterCodes.b */:
+ result += '\b';
+ break;
+ case 102 /* CharacterCodes.f */:
+ result += '\f';
+ break;
+ case 110 /* CharacterCodes.n */:
+ result += '\n';
+ break;
+ case 114 /* CharacterCodes.r */:
+ result += '\r';
+ break;
+ case 116 /* CharacterCodes.t */:
+ result += '\t';
+ break;
+ case 117 /* CharacterCodes.u */:
+ const ch3 = scanHexDigits(4, true);
+ if (ch3 >= 0) {
+ result += String.fromCharCode(ch3);
+ }
+ else {
+ scanError = 4 /* ScanError.InvalidUnicode */;
+ }
+ break;
+ default:
+ scanError = 5 /* ScanError.InvalidEscapeCharacter */;
+ }
+ start = pos;
+ continue;
+ }
+ if (ch >= 0 && ch <= 0x1f) {
+ if (isLineBreak(ch)) {
+ result += text.substring(start, pos);
+ scanError = 2 /* ScanError.UnexpectedEndOfString */;
+ break;
+ }
+ else {
+ scanError = 6 /* ScanError.InvalidCharacter */;
+ // mark as error but continue with string
+ }
+ }
+ pos++;
+ }
+ return result;
+ }
+ function scanNext() {
+ value = '';
+ scanError = 0 /* ScanError.None */;
+ tokenOffset = pos;
+ lineStartOffset = lineNumber;
+ prevTokenLineStartOffset = tokenLineStartOffset;
+ if (pos >= len) {
+ // at the end
+ tokenOffset = len;
+ return token = 17 /* SyntaxKind.EOF */;
+ }
+ let code = text.charCodeAt(pos);
+ // trivia: whitespace
+ if (isWhiteSpace(code)) {
+ do {
+ pos++;
+ value += String.fromCharCode(code);
+ code = text.charCodeAt(pos);
+ } while (isWhiteSpace(code));
+ return token = 15 /* SyntaxKind.Trivia */;
+ }
+ // trivia: newlines
+ if (isLineBreak(code)) {
+ pos++;
+ value += String.fromCharCode(code);
+ if (code === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {
+ pos++;
+ value += '\n';
+ }
+ lineNumber++;
+ tokenLineStartOffset = pos;
+ return token = 14 /* SyntaxKind.LineBreakTrivia */;
+ }
+ switch (code) {
+ // tokens: []{}:,
+ case 123 /* CharacterCodes.openBrace */:
+ pos++;
+ return token = 1 /* SyntaxKind.OpenBraceToken */;
+ case 125 /* CharacterCodes.closeBrace */:
+ pos++;
+ return token = 2 /* SyntaxKind.CloseBraceToken */;
+ case 91 /* CharacterCodes.openBracket */:
+ pos++;
+ return token = 3 /* SyntaxKind.OpenBracketToken */;
+ case 93 /* CharacterCodes.closeBracket */:
+ pos++;
+ return token = 4 /* SyntaxKind.CloseBracketToken */;
+ case 58 /* CharacterCodes.colon */:
+ pos++;
+ return token = 6 /* SyntaxKind.ColonToken */;
+ case 44 /* CharacterCodes.comma */:
+ pos++;
+ return token = 5 /* SyntaxKind.CommaToken */;
+ // strings
+ case 34 /* CharacterCodes.doubleQuote */:
+ pos++;
+ value = scanString();
+ return token = 10 /* SyntaxKind.StringLiteral */;
+ // comments
+ case 47 /* CharacterCodes.slash */:
+ const start = pos - 1;
+ // Single-line comment
+ if (text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {
+ pos += 2;
+ while (pos < len) {
+ if (isLineBreak(text.charCodeAt(pos))) {
+ break;
+ }
+ pos++;
+ }
+ value = text.substring(start, pos);
+ return token = 12 /* SyntaxKind.LineCommentTrivia */;
+ }
+ // Multi-line comment
+ if (text.charCodeAt(pos + 1) === 42 /* CharacterCodes.asterisk */) {
+ pos += 2;
+ const safeLength = len - 1; // For lookahead.
+ let commentClosed = false;
+ while (pos < safeLength) {
+ const ch = text.charCodeAt(pos);
+ if (ch === 42 /* CharacterCodes.asterisk */ && text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {
+ pos += 2;
+ commentClosed = true;
+ break;
+ }
+ pos++;
+ if (isLineBreak(ch)) {
+ if (ch === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {
+ pos++;
+ }
+ lineNumber++;
+ tokenLineStartOffset = pos;
+ }
+ }
+ if (!commentClosed) {
+ pos++;
+ scanError = 1 /* ScanError.UnexpectedEndOfComment */;
+ }
+ value = text.substring(start, pos);
+ return token = 13 /* SyntaxKind.BlockCommentTrivia */;
+ }
+ // just a single slash
+ value += String.fromCharCode(code);
+ pos++;
+ return token = 16 /* SyntaxKind.Unknown */;
+ // numbers
+ case 45 /* CharacterCodes.minus */:
+ value += String.fromCharCode(code);
+ pos++;
+ if (pos === len || !isDigit(text.charCodeAt(pos))) {
+ return token = 16 /* SyntaxKind.Unknown */;
+ }
+ // found a minus, followed by a number so
+ // we fall through to proceed with scanning
+ // numbers
+ case 48 /* CharacterCodes._0 */:
+ case 49 /* CharacterCodes._1 */:
+ case 50 /* CharacterCodes._2 */:
+ case 51 /* CharacterCodes._3 */:
+ case 52 /* CharacterCodes._4 */:
+ case 53 /* CharacterCodes._5 */:
+ case 54 /* CharacterCodes._6 */:
+ case 55 /* CharacterCodes._7 */:
+ case 56 /* CharacterCodes._8 */:
+ case 57 /* CharacterCodes._9 */:
+ value += scanNumber();
+ return token = 11 /* SyntaxKind.NumericLiteral */;
+ // literals and unknown symbols
+ default:
+ // is a literal? Read the full word.
+ while (pos < len && isUnknownContentCharacter(code)) {
+ pos++;
+ code = text.charCodeAt(pos);
+ }
+ if (tokenOffset !== pos) {
+ value = text.substring(tokenOffset, pos);
+ // keywords: true, false, null
+ switch (value) {
+ case 'true': return token = 8 /* SyntaxKind.TrueKeyword */;
+ case 'false': return token = 9 /* SyntaxKind.FalseKeyword */;
+ case 'null': return token = 7 /* SyntaxKind.NullKeyword */;
+ }
+ return token = 16 /* SyntaxKind.Unknown */;
+ }
+ // some
+ value += String.fromCharCode(code);
+ pos++;
+ return token = 16 /* SyntaxKind.Unknown */;
+ }
+ }
+ function isUnknownContentCharacter(code) {
+ if (isWhiteSpace(code) || isLineBreak(code)) {
+ return false;
+ }
+ switch (code) {
+ case 125 /* CharacterCodes.closeBrace */:
+ case 93 /* CharacterCodes.closeBracket */:
+ case 123 /* CharacterCodes.openBrace */:
+ case 91 /* CharacterCodes.openBracket */:
+ case 34 /* CharacterCodes.doubleQuote */:
+ case 58 /* CharacterCodes.colon */:
+ case 44 /* CharacterCodes.comma */:
+ case 47 /* CharacterCodes.slash */:
+ return false;
+ }
+ return true;
+ }
+ function scanNextNonTrivia() {
+ let result;
+ do {
+ result = scanNext();
+ } while (result >= 12 /* SyntaxKind.LineCommentTrivia */ && result <= 15 /* SyntaxKind.Trivia */);
+ return result;
+ }
+ return {
+ setPosition: setPosition,
+ getPosition: () => pos,
+ scan: ignoreTrivia ? scanNextNonTrivia : scanNext,
+ getToken: () => token,
+ getTokenValue: () => value,
+ getTokenOffset: () => tokenOffset,
+ getTokenLength: () => pos - tokenOffset,
+ getTokenStartLine: () => lineStartOffset,
+ getTokenStartCharacter: () => tokenOffset - prevTokenLineStartOffset,
+ getTokenError: () => scanError,
+ };
+}
+function isWhiteSpace(ch) {
+ return ch === 32 /* CharacterCodes.space */ || ch === 9 /* CharacterCodes.tab */;
+}
+function isLineBreak(ch) {
+ return ch === 10 /* CharacterCodes.lineFeed */ || ch === 13 /* CharacterCodes.carriageReturn */;
+}
+function isDigit(ch) {
+ return ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */;
+}
+var CharacterCodes;
+(function (CharacterCodes) {
+ CharacterCodes[CharacterCodes["lineFeed"] = 10] = "lineFeed";
+ CharacterCodes[CharacterCodes["carriageReturn"] = 13] = "carriageReturn";
+ CharacterCodes[CharacterCodes["space"] = 32] = "space";
+ CharacterCodes[CharacterCodes["_0"] = 48] = "_0";
+ CharacterCodes[CharacterCodes["_1"] = 49] = "_1";
+ CharacterCodes[CharacterCodes["_2"] = 50] = "_2";
+ CharacterCodes[CharacterCodes["_3"] = 51] = "_3";
+ CharacterCodes[CharacterCodes["_4"] = 52] = "_4";
+ CharacterCodes[CharacterCodes["_5"] = 53] = "_5";
+ CharacterCodes[CharacterCodes["_6"] = 54] = "_6";
+ CharacterCodes[CharacterCodes["_7"] = 55] = "_7";
+ CharacterCodes[CharacterCodes["_8"] = 56] = "_8";
+ CharacterCodes[CharacterCodes["_9"] = 57] = "_9";
+ CharacterCodes[CharacterCodes["a"] = 97] = "a";
+ CharacterCodes[CharacterCodes["b"] = 98] = "b";
+ CharacterCodes[CharacterCodes["c"] = 99] = "c";
+ CharacterCodes[CharacterCodes["d"] = 100] = "d";
+ CharacterCodes[CharacterCodes["e"] = 101] = "e";
+ CharacterCodes[CharacterCodes["f"] = 102] = "f";
+ CharacterCodes[CharacterCodes["g"] = 103] = "g";
+ CharacterCodes[CharacterCodes["h"] = 104] = "h";
+ CharacterCodes[CharacterCodes["i"] = 105] = "i";
+ CharacterCodes[CharacterCodes["j"] = 106] = "j";
+ CharacterCodes[CharacterCodes["k"] = 107] = "k";
+ CharacterCodes[CharacterCodes["l"] = 108] = "l";
+ CharacterCodes[CharacterCodes["m"] = 109] = "m";
+ CharacterCodes[CharacterCodes["n"] = 110] = "n";
+ CharacterCodes[CharacterCodes["o"] = 111] = "o";
+ CharacterCodes[CharacterCodes["p"] = 112] = "p";
+ CharacterCodes[CharacterCodes["q"] = 113] = "q";
+ CharacterCodes[CharacterCodes["r"] = 114] = "r";
+ CharacterCodes[CharacterCodes["s"] = 115] = "s";
+ CharacterCodes[CharacterCodes["t"] = 116] = "t";
+ CharacterCodes[CharacterCodes["u"] = 117] = "u";
+ CharacterCodes[CharacterCodes["v"] = 118] = "v";
+ CharacterCodes[CharacterCodes["w"] = 119] = "w";
+ CharacterCodes[CharacterCodes["x"] = 120] = "x";
+ CharacterCodes[CharacterCodes["y"] = 121] = "y";
+ CharacterCodes[CharacterCodes["z"] = 122] = "z";
+ CharacterCodes[CharacterCodes["A"] = 65] = "A";
+ CharacterCodes[CharacterCodes["B"] = 66] = "B";
+ CharacterCodes[CharacterCodes["C"] = 67] = "C";
+ CharacterCodes[CharacterCodes["D"] = 68] = "D";
+ CharacterCodes[CharacterCodes["E"] = 69] = "E";
+ CharacterCodes[CharacterCodes["F"] = 70] = "F";
+ CharacterCodes[CharacterCodes["G"] = 71] = "G";
+ CharacterCodes[CharacterCodes["H"] = 72] = "H";
+ CharacterCodes[CharacterCodes["I"] = 73] = "I";
+ CharacterCodes[CharacterCodes["J"] = 74] = "J";
+ CharacterCodes[CharacterCodes["K"] = 75] = "K";
+ CharacterCodes[CharacterCodes["L"] = 76] = "L";
+ CharacterCodes[CharacterCodes["M"] = 77] = "M";
+ CharacterCodes[CharacterCodes["N"] = 78] = "N";
+ CharacterCodes[CharacterCodes["O"] = 79] = "O";
+ CharacterCodes[CharacterCodes["P"] = 80] = "P";
+ CharacterCodes[CharacterCodes["Q"] = 81] = "Q";
+ CharacterCodes[CharacterCodes["R"] = 82] = "R";
+ CharacterCodes[CharacterCodes["S"] = 83] = "S";
+ CharacterCodes[CharacterCodes["T"] = 84] = "T";
+ CharacterCodes[CharacterCodes["U"] = 85] = "U";
+ CharacterCodes[CharacterCodes["V"] = 86] = "V";
+ CharacterCodes[CharacterCodes["W"] = 87] = "W";
+ CharacterCodes[CharacterCodes["X"] = 88] = "X";
+ CharacterCodes[CharacterCodes["Y"] = 89] = "Y";
+ CharacterCodes[CharacterCodes["Z"] = 90] = "Z";
+ CharacterCodes[CharacterCodes["asterisk"] = 42] = "asterisk";
+ CharacterCodes[CharacterCodes["backslash"] = 92] = "backslash";
+ CharacterCodes[CharacterCodes["closeBrace"] = 125] = "closeBrace";
+ CharacterCodes[CharacterCodes["closeBracket"] = 93] = "closeBracket";
+ CharacterCodes[CharacterCodes["colon"] = 58] = "colon";
+ CharacterCodes[CharacterCodes["comma"] = 44] = "comma";
+ CharacterCodes[CharacterCodes["dot"] = 46] = "dot";
+ CharacterCodes[CharacterCodes["doubleQuote"] = 34] = "doubleQuote";
+ CharacterCodes[CharacterCodes["minus"] = 45] = "minus";
+ CharacterCodes[CharacterCodes["openBrace"] = 123] = "openBrace";
+ CharacterCodes[CharacterCodes["openBracket"] = 91] = "openBracket";
+ CharacterCodes[CharacterCodes["plus"] = 43] = "plus";
+ CharacterCodes[CharacterCodes["slash"] = 47] = "slash";
+ CharacterCodes[CharacterCodes["formFeed"] = 12] = "formFeed";
+ CharacterCodes[CharacterCodes["tab"] = 9] = "tab";
+})(CharacterCodes || (CharacterCodes = {}));
+
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+var ParseOptions;
+(function (ParseOptions) {
+ ParseOptions.DEFAULT = {
+ allowTrailingComma: false
+ };
+})(ParseOptions || (ParseOptions = {}));
+/**
+ * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ * Therefore always check the errors list to find out if the input was valid.
+ */
+function parse$1(text, errors = [], options = ParseOptions.DEFAULT) {
+ let currentProperty = null;
+ let currentParent = [];
+ const previousParents = [];
+ function onValue(value) {
+ if (Array.isArray(currentParent)) {
+ currentParent.push(value);
+ }
+ else if (currentProperty !== null) {
+ currentParent[currentProperty] = value;
+ }
+ }
+ const visitor = {
+ onObjectBegin: () => {
+ const object = {};
+ onValue(object);
+ previousParents.push(currentParent);
+ currentParent = object;
+ currentProperty = null;
+ },
+ onObjectProperty: (name) => {
+ currentProperty = name;
+ },
+ onObjectEnd: () => {
+ currentParent = previousParents.pop();
+ },
+ onArrayBegin: () => {
+ const array = [];
+ onValue(array);
+ previousParents.push(currentParent);
+ currentParent = array;
+ currentProperty = null;
+ },
+ onArrayEnd: () => {
+ currentParent = previousParents.pop();
+ },
+ onLiteralValue: onValue,
+ onError: (error, offset, length) => {
+ errors.push({ error, offset, length });
+ }
+ };
+ visit(text, visitor, options);
+ return currentParent[0];
+}
+/**
+ * Parses the given text and invokes the visitor functions for each object, array and literal reached.
+ */
+function visit(text, visitor, options = ParseOptions.DEFAULT) {
+ const _scanner = createScanner(text, false);
+ // Important: Only pass copies of this to visitor functions to prevent accidental modification, and
+ // to not affect visitor functions which stored a reference to a previous JSONPath
+ const _jsonPath = [];
+ function toNoArgVisit(visitFunction) {
+ return visitFunction ? () => visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;
+ }
+ function toNoArgVisitWithPath(visitFunction) {
+ return visitFunction ? () => visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;
+ }
+ function toOneArgVisit(visitFunction) {
+ return visitFunction ? (arg) => visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;
+ }
+ function toOneArgVisitWithPath(visitFunction) {
+ return visitFunction ? (arg) => visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;
+ }
+ const onObjectBegin = toNoArgVisitWithPath(visitor.onObjectBegin), onObjectProperty = toOneArgVisitWithPath(visitor.onObjectProperty), onObjectEnd = toNoArgVisit(visitor.onObjectEnd), onArrayBegin = toNoArgVisitWithPath(visitor.onArrayBegin), onArrayEnd = toNoArgVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisitWithPath(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError);
+ const disallowComments = options && options.disallowComments;
+ const allowTrailingComma = options && options.allowTrailingComma;
+ function scanNext() {
+ while (true) {
+ const token = _scanner.scan();
+ switch (_scanner.getTokenError()) {
+ case 4 /* ScanError.InvalidUnicode */:
+ handleError(14 /* ParseErrorCode.InvalidUnicode */);
+ break;
+ case 5 /* ScanError.InvalidEscapeCharacter */:
+ handleError(15 /* ParseErrorCode.InvalidEscapeCharacter */);
+ break;
+ case 3 /* ScanError.UnexpectedEndOfNumber */:
+ handleError(13 /* ParseErrorCode.UnexpectedEndOfNumber */);
+ break;
+ case 1 /* ScanError.UnexpectedEndOfComment */:
+ if (!disallowComments) {
+ handleError(11 /* ParseErrorCode.UnexpectedEndOfComment */);
+ }
+ break;
+ case 2 /* ScanError.UnexpectedEndOfString */:
+ handleError(12 /* ParseErrorCode.UnexpectedEndOfString */);
+ break;
+ case 6 /* ScanError.InvalidCharacter */:
+ handleError(16 /* ParseErrorCode.InvalidCharacter */);
+ break;
+ }
+ switch (token) {
+ case 12 /* SyntaxKind.LineCommentTrivia */:
+ case 13 /* SyntaxKind.BlockCommentTrivia */:
+ if (disallowComments) {
+ handleError(10 /* ParseErrorCode.InvalidCommentToken */);
+ }
+ else {
+ onComment();
+ }
+ break;
+ case 16 /* SyntaxKind.Unknown */:
+ handleError(1 /* ParseErrorCode.InvalidSymbol */);
+ break;
+ case 15 /* SyntaxKind.Trivia */:
+ case 14 /* SyntaxKind.LineBreakTrivia */:
+ break;
+ default:
+ return token;
+ }
+ }
+ }
+ function handleError(error, skipUntilAfter = [], skipUntil = []) {
+ onError(error);
+ if (skipUntilAfter.length + skipUntil.length > 0) {
+ let token = _scanner.getToken();
+ while (token !== 17 /* SyntaxKind.EOF */) {
+ if (skipUntilAfter.indexOf(token) !== -1) {
+ scanNext();
+ break;
+ }
+ else if (skipUntil.indexOf(token) !== -1) {
+ break;
+ }
+ token = scanNext();
+ }
+ }
+ }
+ function parseString(isValue) {
+ const value = _scanner.getTokenValue();
+ if (isValue) {
+ onLiteralValue(value);
+ }
+ else {
+ onObjectProperty(value);
+ // add property name afterwards
+ _jsonPath.push(value);
+ }
+ scanNext();
+ return true;
+ }
+ function parseLiteral() {
+ switch (_scanner.getToken()) {
+ case 11 /* SyntaxKind.NumericLiteral */:
+ const tokenValue = _scanner.getTokenValue();
+ let value = Number(tokenValue);
+ if (isNaN(value)) {
+ handleError(2 /* ParseErrorCode.InvalidNumberFormat */);
+ value = 0;
+ }
+ onLiteralValue(value);
+ break;
+ case 7 /* SyntaxKind.NullKeyword */:
+ onLiteralValue(null);
+ break;
+ case 8 /* SyntaxKind.TrueKeyword */:
+ onLiteralValue(true);
+ break;
+ case 9 /* SyntaxKind.FalseKeyword */:
+ onLiteralValue(false);
+ break;
+ default:
+ return false;
+ }
+ scanNext();
+ return true;
+ }
+ function parseProperty() {
+ if (_scanner.getToken() !== 10 /* SyntaxKind.StringLiteral */) {
+ handleError(3 /* ParseErrorCode.PropertyNameExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
+ return false;
+ }
+ parseString(false);
+ if (_scanner.getToken() === 6 /* SyntaxKind.ColonToken */) {
+ onSeparator(':');
+ scanNext(); // consume colon
+ if (!parseValue()) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
+ }
+ }
+ else {
+ handleError(5 /* ParseErrorCode.ColonExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
+ }
+ _jsonPath.pop(); // remove processed property name
+ return true;
+ }
+ function parseObject() {
+ onObjectBegin();
+ scanNext(); // consume open brace
+ let needsComma = false;
+ while (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {
+ if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {
+ if (!needsComma) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
+ }
+ onSeparator(',');
+ scanNext(); // consume comma
+ if (_scanner.getToken() === 2 /* SyntaxKind.CloseBraceToken */ && allowTrailingComma) {
+ break;
+ }
+ }
+ else if (needsComma) {
+ handleError(6 /* ParseErrorCode.CommaExpected */, [], []);
+ }
+ if (!parseProperty()) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
+ }
+ needsComma = true;
+ }
+ onObjectEnd();
+ if (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */) {
+ handleError(7 /* ParseErrorCode.CloseBraceExpected */, [2 /* SyntaxKind.CloseBraceToken */], []);
+ }
+ else {
+ scanNext(); // consume close brace
+ }
+ return true;
+ }
+ function parseArray() {
+ onArrayBegin();
+ scanNext(); // consume open bracket
+ let isFirstElement = true;
+ let needsComma = false;
+ while (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {
+ if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {
+ if (!needsComma) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
+ }
+ onSeparator(',');
+ scanNext(); // consume comma
+ if (_scanner.getToken() === 4 /* SyntaxKind.CloseBracketToken */ && allowTrailingComma) {
+ break;
+ }
+ }
+ else if (needsComma) {
+ handleError(6 /* ParseErrorCode.CommaExpected */, [], []);
+ }
+ if (isFirstElement) {
+ _jsonPath.push(0);
+ isFirstElement = false;
+ }
+ else {
+ _jsonPath[_jsonPath.length - 1]++;
+ }
+ if (!parseValue()) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], [4 /* SyntaxKind.CloseBracketToken */, 5 /* SyntaxKind.CommaToken */]);
+ }
+ needsComma = true;
+ }
+ onArrayEnd();
+ if (!isFirstElement) {
+ _jsonPath.pop(); // remove array index
+ }
+ if (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */) {
+ handleError(8 /* ParseErrorCode.CloseBracketExpected */, [4 /* SyntaxKind.CloseBracketToken */], []);
+ }
+ else {
+ scanNext(); // consume close bracket
+ }
+ return true;
+ }
+ function parseValue() {
+ switch (_scanner.getToken()) {
+ case 3 /* SyntaxKind.OpenBracketToken */:
+ return parseArray();
+ case 1 /* SyntaxKind.OpenBraceToken */:
+ return parseObject();
+ case 10 /* SyntaxKind.StringLiteral */:
+ return parseString(true);
+ default:
+ return parseLiteral();
+ }
+ }
+ scanNext();
+ if (_scanner.getToken() === 17 /* SyntaxKind.EOF */) {
+ if (options.allowEmptyContent) {
+ return true;
+ }
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
+ return false;
+ }
+ if (!parseValue()) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
+ return false;
+ }
+ if (_scanner.getToken() !== 17 /* SyntaxKind.EOF */) {
+ handleError(9 /* ParseErrorCode.EndOfFileExpected */, [], []);
+ }
+ return true;
+}
+
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+var ScanError;
+(function (ScanError) {
+ ScanError[ScanError["None"] = 0] = "None";
+ ScanError[ScanError["UnexpectedEndOfComment"] = 1] = "UnexpectedEndOfComment";
+ ScanError[ScanError["UnexpectedEndOfString"] = 2] = "UnexpectedEndOfString";
+ ScanError[ScanError["UnexpectedEndOfNumber"] = 3] = "UnexpectedEndOfNumber";
+ ScanError[ScanError["InvalidUnicode"] = 4] = "InvalidUnicode";
+ ScanError[ScanError["InvalidEscapeCharacter"] = 5] = "InvalidEscapeCharacter";
+ ScanError[ScanError["InvalidCharacter"] = 6] = "InvalidCharacter";
+})(ScanError || (ScanError = {}));
+var SyntaxKind;
+(function (SyntaxKind) {
+ SyntaxKind[SyntaxKind["OpenBraceToken"] = 1] = "OpenBraceToken";
+ SyntaxKind[SyntaxKind["CloseBraceToken"] = 2] = "CloseBraceToken";
+ SyntaxKind[SyntaxKind["OpenBracketToken"] = 3] = "OpenBracketToken";
+ SyntaxKind[SyntaxKind["CloseBracketToken"] = 4] = "CloseBracketToken";
+ SyntaxKind[SyntaxKind["CommaToken"] = 5] = "CommaToken";
+ SyntaxKind[SyntaxKind["ColonToken"] = 6] = "ColonToken";
+ SyntaxKind[SyntaxKind["NullKeyword"] = 7] = "NullKeyword";
+ SyntaxKind[SyntaxKind["TrueKeyword"] = 8] = "TrueKeyword";
+ SyntaxKind[SyntaxKind["FalseKeyword"] = 9] = "FalseKeyword";
+ SyntaxKind[SyntaxKind["StringLiteral"] = 10] = "StringLiteral";
+ SyntaxKind[SyntaxKind["NumericLiteral"] = 11] = "NumericLiteral";
+ SyntaxKind[SyntaxKind["LineCommentTrivia"] = 12] = "LineCommentTrivia";
+ SyntaxKind[SyntaxKind["BlockCommentTrivia"] = 13] = "BlockCommentTrivia";
+ SyntaxKind[SyntaxKind["LineBreakTrivia"] = 14] = "LineBreakTrivia";
+ SyntaxKind[SyntaxKind["Trivia"] = 15] = "Trivia";
+ SyntaxKind[SyntaxKind["Unknown"] = 16] = "Unknown";
+ SyntaxKind[SyntaxKind["EOF"] = 17] = "EOF";
+})(SyntaxKind || (SyntaxKind = {}));
+/**
+ * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ * Therefore, always check the errors list to find out if the input was valid.
+ */
+const parse = parse$1;
+var ParseErrorCode;
+(function (ParseErrorCode) {
+ ParseErrorCode[ParseErrorCode["InvalidSymbol"] = 1] = "InvalidSymbol";
+ ParseErrorCode[ParseErrorCode["InvalidNumberFormat"] = 2] = "InvalidNumberFormat";
+ ParseErrorCode[ParseErrorCode["PropertyNameExpected"] = 3] = "PropertyNameExpected";
+ ParseErrorCode[ParseErrorCode["ValueExpected"] = 4] = "ValueExpected";
+ ParseErrorCode[ParseErrorCode["ColonExpected"] = 5] = "ColonExpected";
+ ParseErrorCode[ParseErrorCode["CommaExpected"] = 6] = "CommaExpected";
+ ParseErrorCode[ParseErrorCode["CloseBraceExpected"] = 7] = "CloseBraceExpected";
+ ParseErrorCode[ParseErrorCode["CloseBracketExpected"] = 8] = "CloseBracketExpected";
+ ParseErrorCode[ParseErrorCode["EndOfFileExpected"] = 9] = "EndOfFileExpected";
+ ParseErrorCode[ParseErrorCode["InvalidCommentToken"] = 10] = "InvalidCommentToken";
+ ParseErrorCode[ParseErrorCode["UnexpectedEndOfComment"] = 11] = "UnexpectedEndOfComment";
+ ParseErrorCode[ParseErrorCode["UnexpectedEndOfString"] = 12] = "UnexpectedEndOfString";
+ ParseErrorCode[ParseErrorCode["UnexpectedEndOfNumber"] = 13] = "UnexpectedEndOfNumber";
+ ParseErrorCode[ParseErrorCode["InvalidUnicode"] = 14] = "InvalidUnicode";
+ ParseErrorCode[ParseErrorCode["InvalidEscapeCharacter"] = 15] = "InvalidEscapeCharacter";
+ ParseErrorCode[ParseErrorCode["InvalidCharacter"] = 16] = "InvalidCharacter";
+})(ParseErrorCode || (ParseErrorCode = {}));
+
+const isWebWorker = typeof self !== "undefined" && typeof self.WorkerGlobalScope !== "undefined";
+const isNode = "process" in globalThis && typeof process !== "undefined" && typeof process.release !== "undefined" && process.release.name === "node";
+const isBrowser = isWebWorker || !isNode;
+let CDN_ROOT = "";
+let WASM = "";
+const WASM_PATH = "dist/";
+function setCDN(root) {
+ CDN_ROOT = root.endsWith("/") ? root : root + "/";
+}
+function setWasm(data) {
+ WASM = data;
+}
+let _onigurumaPromise = null;
+async function getOniguruma(wasmPath) {
+ if (!_onigurumaPromise) {
+ let loader;
+ if (isBrowser) {
+ if (typeof WASM === "string") {
+ loader = loadWASM({
+ data: await fetch(_resolvePath(join(...dirpathparts(wasmPath), "onig.wasm")))
+ });
+ } else {
+ loader = loadWASM({
+ data: WASM
+ });
+ }
+ } else {
+ const path = require("path");
+ const wasmPath2 = path.join(require.resolve("vscode-oniguruma"), "../onig.wasm");
+ const fs = require("fs");
+ const wasmBin = fs.readFileSync(wasmPath2).buffer;
+ loader = loadWASM(wasmBin);
+ }
+ _onigurumaPromise = loader.then(() => {
+ return {
+ createOnigScanner(patterns) {
+ return createOnigScanner(patterns);
+ },
+ createOnigString(s) {
+ return createOnigString(s);
+ }
+ };
+ });
+ }
+ return _onigurumaPromise;
+}
+function _resolvePath(filepath) {
+ if (isBrowser) {
+ return `${CDN_ROOT}${filepath}`;
+ } else {
+ const path = require("path");
+ if (path.isAbsolute(filepath)) {
+ return filepath;
+ } else {
+ return path.resolve(__dirname, "..", filepath);
+ }
+ }
+}
+async function _fetchAssets(filepath) {
+ const path = _resolvePath(filepath);
+ if (isBrowser) {
+ return await fetch(path).then((r) => r.text());
+ } else {
+ const fs = require("fs");
+ return await fs.promises.readFile(path, "utf-8");
+ }
+}
+async function _fetchJSONAssets(filepath) {
+ const errors = [];
+ const assetString = await _fetchAssets(filepath);
+ let rawAsset;
+ try {
+ rawAsset = JSON.parse(assetString);
+ } catch (e) {
+ rawAsset = parse(assetString, errors, {
+ allowTrailingComma: true
+ });
+ if (errors.length) {
+ throw errors[0];
+ }
+ }
+ return rawAsset;
+}
+async function fetchTheme(themePath) {
+ let theme = await _fetchJSONAssets(themePath);
+ const shikiTheme = toShikiTheme(theme);
+ if (shikiTheme.include) {
+ const includedTheme = await fetchTheme(join(...dirpathparts(themePath), shikiTheme.include));
+ if (includedTheme.settings) {
+ shikiTheme.settings = includedTheme.settings.concat(shikiTheme.settings);
+ }
+ if (includedTheme.bg && !shikiTheme.bg) {
+ shikiTheme.bg = includedTheme.bg;
+ }
+ if (includedTheme.colors) {
+ shikiTheme.colors = { ...includedTheme.colors, ...shikiTheme.colors };
+ }
+ delete shikiTheme.include;
+ }
+ return shikiTheme;
+}
+async function fetchGrammar(filepath) {
+ return await _fetchJSONAssets(filepath);
+}
+function repairTheme(theme) {
+ if (!theme.settings)
+ theme.settings = [];
+ if (theme.settings[0] && theme.settings[0].settings && !theme.settings[0].scope) {
+ return;
+ }
+ theme.settings.unshift({
+ settings: {
+ foreground: theme.fg,
+ background: theme.bg
+ }
+ });
+}
+function toShikiTheme(rawTheme) {
+ const type = rawTheme.type || "dark";
+ const shikiTheme = {
+ name: rawTheme.name,
+ type,
+ ...rawTheme,
+ ...getThemeDefaultColors(rawTheme)
+ };
+ if (rawTheme.include) {
+ shikiTheme.include = rawTheme.include;
+ }
+ if (rawTheme.tokenColors) {
+ shikiTheme.settings = rawTheme.tokenColors;
+ delete shikiTheme.tokenColors;
+ }
+ repairTheme(shikiTheme);
+ return shikiTheme;
+}
+const VSCODE_FALLBACK_EDITOR_FG = { light: "#333333", dark: "#bbbbbb" };
+const VSCODE_FALLBACK_EDITOR_BG = { light: "#fffffe", dark: "#1e1e1e" };
+function getThemeDefaultColors(theme) {
+ let fg, bg;
+ let settings = theme.settings ? theme.settings : theme.tokenColors;
+ const globalSetting = settings ? settings.find((s) => {
+ return !s.name && !s.scope;
+ }) : void 0;
+ if (globalSetting?.settings?.foreground) {
+ fg = globalSetting.settings.foreground;
+ }
+ if (globalSetting?.settings?.background) {
+ bg = globalSetting.settings.background;
+ }
+ if (!fg && theme?.colors?.["editor.foreground"]) {
+ fg = theme.colors["editor.foreground"];
+ }
+ if (!bg && theme?.colors?.["editor.background"]) {
+ bg = theme.colors["editor.background"];
+ }
+ if (!fg) {
+ fg = theme.type === "light" ? VSCODE_FALLBACK_EDITOR_FG.light : VSCODE_FALLBACK_EDITOR_FG.dark;
+ }
+ if (!bg) {
+ bg = theme.type === "light" ? VSCODE_FALLBACK_EDITOR_BG.light : VSCODE_FALLBACK_EDITOR_BG.dark;
+ }
+ return {
+ fg,
+ bg
+ };
+}
+
+class Resolver {
+ constructor(onigLibPromise, onigLibName) {
+ this.languagesPath = "languages/";
+ this.languageMap = {};
+ this.scopeToLangMap = {};
+ this._onigLibPromise = onigLibPromise;
+ this._onigLibName = onigLibName;
+ }
+ get onigLib() {
+ return this._onigLibPromise;
+ }
+ getOnigLibName() {
+ return this._onigLibName;
+ }
+ getLangRegistration(langIdOrAlias) {
+ return this.languageMap[langIdOrAlias];
+ }
+ async loadGrammar(scopeName) {
+ const lang = this.scopeToLangMap[scopeName];
+ if (!lang) {
+ return null;
+ }
+ if (lang.grammar) {
+ return lang.grammar;
+ }
+ const g = await fetchGrammar(
+ languages.includes(lang) ? `${this.languagesPath}${lang.path}` : lang.path
+ );
+ lang.grammar = g;
+ return g;
+ }
+ addLanguage(l) {
+ this.languageMap[l.id] = l;
+ if (l.aliases) {
+ l.aliases.forEach((a) => {
+ this.languageMap[a] = l;
+ });
+ }
+ this.scopeToLangMap[l.scopeName] = l;
+ }
+}
+
+function tokenizeWithTheme(theme, colorMap, fileContents, grammar, options) {
+ let lines = fileContents.split(/\r\n|\r|\n/);
+ let ruleStack = INITIAL;
+ let actual = [];
+ let final = [];
+ for (let i = 0, len = lines.length; i < len; i++) {
+ let line = lines[i];
+ if (line === "") {
+ actual = [];
+ final.push([]);
+ continue;
+ }
+ let resultWithScopes;
+ let tokensWithScopes;
+ let tokensWithScopesIndex;
+ if (options.includeExplanation) {
+ resultWithScopes = grammar.tokenizeLine(line, ruleStack);
+ tokensWithScopes = resultWithScopes.tokens;
+ tokensWithScopesIndex = 0;
+ }
+ let result = grammar.tokenizeLine2(line, ruleStack);
+ let tokensLength = result.tokens.length / 2;
+ for (let j = 0; j < tokensLength; j++) {
+ let startIndex = result.tokens[2 * j];
+ let nextStartIndex = j + 1 < tokensLength ? result.tokens[2 * j + 2] : line.length;
+ if (startIndex === nextStartIndex) {
+ continue;
+ }
+ let metadata = result.tokens[2 * j + 1];
+ let foreground = StackElementMetadata.getForeground(metadata);
+ let foregroundColor = colorMap[foreground];
+ let fontStyle = StackElementMetadata.getFontStyle(metadata);
+ let explanation = [];
+ if (options.includeExplanation) {
+ let offset = 0;
+ while (startIndex + offset < nextStartIndex) {
+ let tokenWithScopes = tokensWithScopes[tokensWithScopesIndex];
+ let tokenWithScopesText = line.substring(
+ tokenWithScopes.startIndex,
+ tokenWithScopes.endIndex
+ );
+ offset += tokenWithScopesText.length;
+ explanation.push({
+ content: tokenWithScopesText,
+ scopes: explainThemeScopes(theme, tokenWithScopes.scopes)
+ });
+ tokensWithScopesIndex++;
+ }
+ }
+ actual.push({
+ content: line.substring(startIndex, nextStartIndex),
+ color: foregroundColor,
+ fontStyle,
+ explanation
+ });
+ }
+ final.push(actual);
+ actual = [];
+ ruleStack = result.ruleStack;
+ }
+ return final;
+}
+function explainThemeScopes(theme, scopes) {
+ let result = [];
+ for (let i = 0, len = scopes.length; i < len; i++) {
+ let parentScopes = scopes.slice(0, i);
+ let scope = scopes[i];
+ result[i] = {
+ scopeName: scope,
+ themeMatches: explainThemeScope(theme, scope, parentScopes)
+ };
+ }
+ return result;
+}
+function matchesOne(selector, scope) {
+ let selectorPrefix = selector + ".";
+ if (selector === scope || scope.substring(0, selectorPrefix.length) === selectorPrefix) {
+ return true;
+ }
+ return false;
+}
+function matches(selector, selectorParentScopes, scope, parentScopes) {
+ if (!matchesOne(selector, scope)) {
+ return false;
+ }
+ let selectorParentIndex = selectorParentScopes.length - 1;
+ let parentIndex = parentScopes.length - 1;
+ while (selectorParentIndex >= 0 && parentIndex >= 0) {
+ if (matchesOne(selectorParentScopes[selectorParentIndex], parentScopes[parentIndex])) {
+ selectorParentIndex--;
+ }
+ parentIndex--;
+ }
+ if (selectorParentIndex === -1) {
+ return true;
+ }
+ return false;
+}
+function explainThemeScope(theme, scope, parentScopes) {
+ let result = [], resultLen = 0;
+ for (let i = 0, len = theme.settings.length; i < len; i++) {
+ let setting = theme.settings[i];
+ let selectors;
+ if (typeof setting.scope === "string") {
+ selectors = setting.scope.split(/,/).map((scope2) => scope2.trim());
+ } else if (Array.isArray(setting.scope)) {
+ selectors = setting.scope;
+ } else {
+ continue;
+ }
+ for (let j = 0, lenJ = selectors.length; j < lenJ; j++) {
+ let rawSelector = selectors[j];
+ let rawSelectorPieces = rawSelector.split(/ /);
+ let selector = rawSelectorPieces[rawSelectorPieces.length - 1];
+ let selectorParentScopes = rawSelectorPieces.slice(0, rawSelectorPieces.length - 1);
+ if (matches(selector, selectorParentScopes, scope, parentScopes)) {
+ result[resultLen++] = setting;
+ j = lenJ;
+ }
+ }
+ }
+ return result;
+}
+
+// src/colors.ts
+var namedColors = [
+ "black",
+ "red",
+ "green",
+ "yellow",
+ "blue",
+ "magenta",
+ "cyan",
+ "white",
+ "brightBlack",
+ "brightRed",
+ "brightGreen",
+ "brightYellow",
+ "brightBlue",
+ "brightMagenta",
+ "brightCyan",
+ "brightWhite"
+];
+
+// src/decorations.ts
+var decorations = {
+ 1: "bold",
+ 2: "dim",
+ 3: "italic",
+ 4: "underline",
+ 7: "reverse",
+ 9: "strikethrough"
+};
+
+// src/parser.ts
+function findSequence(value, position) {
+ const nextEscape = value.indexOf("\x1B", position);
+ if (nextEscape !== -1) {
+ if (value[nextEscape + 1] === "[") {
+ const nextClose = value.indexOf("m", nextEscape);
+ return {
+ sequence: value.substring(nextEscape + 2, nextClose).split(";"),
+ startPosition: nextEscape,
+ position: nextClose + 1
+ };
+ }
+ }
+ return {
+ position: value.length
+ };
+}
+function parseColor(sequence) {
+ const colorMode = sequence.shift();
+ if (colorMode === "2") {
+ const rgb = sequence.splice(0, 3).map((x) => Number.parseInt(x));
+ if (rgb.length !== 3 || rgb.some((x) => Number.isNaN(x)))
+ return;
+ return {
+ type: "rgb",
+ rgb
+ };
+ } else if (colorMode === "5") {
+ const index = sequence.shift();
+ if (index) {
+ return { type: "table", index: Number(index) };
+ }
+ }
+}
+function parseSequence(sequence) {
+ const commands = [];
+ while (sequence.length > 0) {
+ const code = sequence.shift();
+ if (!code)
+ continue;
+ const codeInt = Number.parseInt(code);
+ if (Number.isNaN(codeInt))
+ continue;
+ if (codeInt === 0) {
+ commands.push({ type: "resetAll" });
+ } else if (codeInt <= 9) {
+ const decoration = decorations[codeInt];
+ if (decoration) {
+ commands.push({
+ type: "setDecoration",
+ value: decorations[codeInt]
+ });
+ }
+ } else if (codeInt <= 29) {
+ const decoration = decorations[codeInt - 20];
+ if (decoration) {
+ commands.push({
+ type: "resetDecoration",
+ value: decoration
+ });
+ }
+ } else if (codeInt <= 37) {
+ commands.push({
+ type: "setForegroundColor",
+ value: { type: "named", name: namedColors[codeInt - 30] }
+ });
+ } else if (codeInt === 38) {
+ const color = parseColor(sequence);
+ if (color) {
+ commands.push({
+ type: "setForegroundColor",
+ value: color
+ });
+ }
+ } else if (codeInt === 39) {
+ commands.push({
+ type: "resetForegroundColor"
+ });
+ } else if (codeInt <= 47) {
+ commands.push({
+ type: "setBackgroundColor",
+ value: { type: "named", name: namedColors[codeInt - 40] }
+ });
+ } else if (codeInt === 48) {
+ const color = parseColor(sequence);
+ if (color) {
+ commands.push({
+ type: "setBackgroundColor",
+ value: color
+ });
+ }
+ } else if (codeInt === 49) {
+ commands.push({
+ type: "resetBackgroundColor"
+ });
+ } else if (codeInt >= 90 && codeInt <= 97) {
+ commands.push({
+ type: "setForegroundColor",
+ value: { type: "named", name: namedColors[codeInt - 90 + 8] }
+ });
+ } else if (codeInt >= 100 && codeInt <= 107) {
+ commands.push({
+ type: "setBackgroundColor",
+ value: { type: "named", name: namedColors[codeInt - 100 + 8] }
+ });
+ }
+ }
+ return commands;
+}
+function createAnsiSequenceParser() {
+ let foreground = null;
+ let background = null;
+ let decorations2 = /* @__PURE__ */ new Set();
+ return {
+ parse(value) {
+ const tokens = [];
+ let position = 0;
+ do {
+ const findResult = findSequence(value, position);
+ const text = findResult.sequence ? value.substring(position, findResult.startPosition) : value.substring(position);
+ if (text.length > 0) {
+ tokens.push({
+ value: text,
+ foreground,
+ background,
+ decorations: new Set(decorations2)
+ });
+ }
+ if (findResult.sequence) {
+ const commands = parseSequence(findResult.sequence);
+ for (const styleToken of commands) {
+ if (styleToken.type === "resetAll") {
+ foreground = null;
+ background = null;
+ decorations2.clear();
+ } else if (styleToken.type === "resetForegroundColor") {
+ foreground = null;
+ } else if (styleToken.type === "resetBackgroundColor") {
+ background = null;
+ } else if (styleToken.type === "resetDecoration") {
+ decorations2.delete(styleToken.value);
+ }
+ }
+ for (const styleToken of commands) {
+ if (styleToken.type === "setForegroundColor") {
+ foreground = styleToken.value;
+ } else if (styleToken.type === "setBackgroundColor") {
+ background = styleToken.value;
+ } else if (styleToken.type === "setDecoration") {
+ decorations2.add(styleToken.value);
+ }
+ }
+ }
+ position = findResult.position;
+ } while (position < value.length);
+ return tokens;
+ }
+ };
+}
+
+// src/palette.ts
+var defaultNamedColorsMap = {
+ black: "#000000",
+ red: "#bb0000",
+ green: "#00bb00",
+ yellow: "#bbbb00",
+ blue: "#0000bb",
+ magenta: "#ff00ff",
+ cyan: "#00bbbb",
+ white: "#eeeeee",
+ brightBlack: "#555555",
+ brightRed: "#ff5555",
+ brightGreen: "#00ff00",
+ brightYellow: "#ffff55",
+ brightBlue: "#5555ff",
+ brightMagenta: "#ff55ff",
+ brightCyan: "#55ffff",
+ brightWhite: "#ffffff"
+};
+function createColorPalette(namedColorsMap = defaultNamedColorsMap) {
+ function namedColor(name) {
+ return namedColorsMap[name];
+ }
+ function rgbColor(rgb) {
+ return `#${rgb.map((x) => Math.max(0, Math.min(x, 255)).toString(16).padStart(2, "0")).join("")}`;
+ }
+ let colorTable;
+ function getColorTable() {
+ if (colorTable) {
+ return colorTable;
+ }
+ colorTable = [];
+ for (let i = 0; i < namedColors.length; i++) {
+ colorTable.push(namedColor(namedColors[i]));
+ }
+ let levels = [0, 95, 135, 175, 215, 255];
+ for (let r = 0; r < 6; r++) {
+ for (let g = 0; g < 6; g++) {
+ for (let b = 0; b < 6; b++) {
+ colorTable.push(rgbColor([levels[r], levels[g], levels[b]]));
+ }
+ }
+ }
+ let level = 8;
+ for (let i = 0; i < 24; i++, level += 10) {
+ colorTable.push(rgbColor([level, level, level]));
+ }
+ return colorTable;
+ }
+ function tableColor(index) {
+ return getColorTable()[index];
+ }
+ function value(color) {
+ switch (color.type) {
+ case "named":
+ return namedColor(color.name);
+ case "rgb":
+ return rgbColor(color.rgb);
+ case "table":
+ return tableColor(color.index);
+ }
+ }
+ return {
+ value
+ };
+}
+
+function tokenizeAnsiWithTheme(theme, fileContents) {
+ const lines = fileContents.split(/\r?\n/);
+ const colorPalette = createColorPalette(
+ Object.fromEntries(
+ namedColors.map((name) => [
+ name,
+ theme.colors[`terminal.ansi${name[0].toUpperCase()}${name.substring(1)}`]
+ ])
+ )
+ );
+ const parser = createAnsiSequenceParser();
+ return lines.map(
+ (line) => parser.parse(line).map((token) => {
+ let color;
+ if (token.decorations.has("reverse")) {
+ color = token.background ? colorPalette.value(token.background) : theme.bg;
+ } else {
+ color = token.foreground ? colorPalette.value(token.foreground) : theme.fg;
+ }
+ if (token.decorations.has("dim")) {
+ color = dimColor(color);
+ }
+ let fontStyle = FontStyle.None;
+ if (token.decorations.has("bold")) {
+ fontStyle |= FontStyle.Bold;
+ }
+ if (token.decorations.has("italic")) {
+ fontStyle |= FontStyle.Italic;
+ }
+ if (token.decorations.has("underline")) {
+ fontStyle |= FontStyle.Underline;
+ }
+ return {
+ content: token.value,
+ color,
+ fontStyle
+ };
+ })
+ );
+}
+function dimColor(color) {
+ const hexMatch = color.match(/#([0-9a-f]{3})([0-9a-f]{3})?([0-9a-f]{2})?/);
+ if (hexMatch) {
+ if (hexMatch[3]) {
+ const alpha = Math.round(Number.parseInt(hexMatch[3], 16) / 2).toString(16).padStart(2, "0");
+ return `#${hexMatch[1]}${hexMatch[2]}${alpha}`;
+ } else if (hexMatch[2]) {
+ return `#${hexMatch[1]}${hexMatch[2]}80`;
+ } else {
+ return `#${Array.from(hexMatch[1]).map((x) => `${x}${x}`).join("")}80`;
+ }
+ }
+ const cssVarMatch = color.match(/var\((--shiki-color-ansi-[\w-]+)\)/);
+ if (cssVarMatch) {
+ return `var(${cssVarMatch[1]}-dim)`;
+ }
+ return color;
+}
+
+const defaultElements = {
+ pre({ className, style, children }) {
+ return `<pre class="${className}" style="${style}" tabindex="0">${children}</pre>`;
+ },
+ code({ children }) {
+ return `<code>${children}</code>`;
+ },
+ line({ className, children }) {
+ return `<span class="${className}">${children}</span>`;
+ },
+ token({ style, children }) {
+ return `<span style="${style}">${children}</span>`;
+ }
+};
+function renderToHtml(lines, options = {}) {
+ const bg = options.bg || "#fff";
+ const optionsByLineNumber = groupBy(options.lineOptions ?? [], (option) => option.line);
+ const userElements = options.elements || {};
+ function h(type = "", props = {}, children) {
+ const element = userElements[type] || defaultElements[type];
+ if (element) {
+ children = children.filter(Boolean);
+ return element({
+ ...props,
+ children: type === "code" ? children.join("\n") : children.join("")
+ });
+ }
+ return "";
+ }
+ return h(
+ "pre",
+ { className: "shiki " + (options.themeName || ""), style: `background-color: ${bg}` },
+ [
+ options.langId ? `<div class="language-id">${options.langId}</div>` : "",
+ h(
+ "code",
+ {},
+ lines.map((line, index) => {
+ const lineNumber = index + 1;
+ const lineOptions = optionsByLineNumber.get(lineNumber) ?? [];
+ const lineClasses = getLineClasses(lineOptions).join(" ");
+ return h(
+ "line",
+ {
+ className: lineClasses,
+ lines,
+ line,
+ index
+ },
+ line.map((token, index2) => {
+ const cssDeclarations = [`color: ${token.color || options.fg}`];
+ if (token.fontStyle & FontStyle.Italic) {
+ cssDeclarations.push("font-style: italic");
+ }
+ if (token.fontStyle & FontStyle.Bold) {
+ cssDeclarations.push("font-weight: bold");
+ }
+ if (token.fontStyle & FontStyle.Underline) {
+ cssDeclarations.push("text-decoration: underline");
+ }
+ return h(
+ "token",
+ {
+ style: cssDeclarations.join("; "),
+ tokens: line,
+ token,
+ index: index2
+ },
+ [escapeHtml(token.content)]
+ );
+ })
+ );
+ })
+ )
+ ]
+ );
+}
+const htmlEscapes = {
+ "&": "&amp;",
+ "<": "&lt;",
+ ">": "&gt;",
+ '"': "&quot;",
+ "'": "&#39;"
+};
+function escapeHtml(html) {
+ return html.replace(/[&<>"']/g, (chr) => htmlEscapes[chr]);
+}
+function getLineClasses(lineOptions) {
+ const lineClasses = /* @__PURE__ */ new Set(["line"]);
+ for (const lineOption of lineOptions) {
+ for (const lineClass of lineOption.classes ?? []) {
+ lineClasses.add(lineClass);
+ }
+ }
+ return Array.from(lineClasses);
+}
+
+class Registry extends Registry$1 {
+ constructor(_resolver) {
+ super(_resolver);
+ this._resolver = _resolver;
+ this.themesPath = "themes/";
+ this._resolvedThemes = {};
+ this._resolvedGrammars = {};
+ this._langGraph = /* @__PURE__ */ new Map();
+ this._langMap = languages.reduce((acc, lang) => {
+ acc[lang.id] = lang;
+ return acc;
+ }, {});
+ }
+ getTheme(theme) {
+ if (typeof theme === "string") {
+ return this._resolvedThemes[theme];
+ } else {
+ return theme;
+ }
+ }
+ async loadTheme(theme) {
+ if (typeof theme === "string") {
+ if (!this._resolvedThemes[theme]) {
+ this._resolvedThemes[theme] = await fetchTheme(`${this.themesPath}${theme}.json`);
+ }
+ return this._resolvedThemes[theme];
+ } else {
+ theme = toShikiTheme(theme);
+ if (theme.name) {
+ this._resolvedThemes[theme.name] = theme;
+ }
+ return theme;
+ }
+ }
+ async loadThemes(themes) {
+ return await Promise.all(themes.map((theme) => this.loadTheme(theme)));
+ }
+ getLoadedThemes() {
+ return Object.keys(this._resolvedThemes);
+ }
+ getGrammar(name) {
+ return this._resolvedGrammars[name];
+ }
+ async loadLanguage(lang) {
+ const embeddedLanguages = lang.embeddedLangs?.reduce(async (acc, l, idx) => {
+ if (!this.getLoadedLanguages().includes(l) && this._resolver.getLangRegistration(l)) {
+ await this._resolver.loadGrammar(this._resolver.getLangRegistration(l).scopeName);
+ acc[this._resolver.getLangRegistration(l).scopeName] = idx + 2;
+ return acc;
+ }
+ }, {});
+ const grammarConfig = {
+ embeddedLanguages,
+ balancedBracketSelectors: lang.balancedBracketSelectors || ["*"],
+ unbalancedBracketSelectors: lang.unbalancedBracketSelectors || []
+ };
+ const g = await this.loadGrammarWithConfiguration(lang.scopeName, 1, grammarConfig);
+ this._resolvedGrammars[lang.id] = g;
+ if (lang.aliases) {
+ lang.aliases.forEach((la) => {
+ this._resolvedGrammars[la] = g;
+ });
+ }
+ }
+ async loadLanguages(langs) {
+ for (const lang of langs) {
+ this.resolveEmbeddedLanguages(lang);
+ }
+ const langsGraphArray = Array.from(this._langGraph.values());
+ for (const lang of langsGraphArray) {
+ this._resolver.addLanguage(lang);
+ }
+ for (const lang of langsGraphArray) {
+ await this.loadLanguage(lang);
+ }
+ }
+ getLoadedLanguages() {
+ return Object.keys(this._resolvedGrammars);
+ }
+ resolveEmbeddedLanguages(lang) {
+ if (!this._langGraph.has(lang.id)) {
+ this._langGraph.set(lang.id, lang);
+ }
+ if (lang.embeddedLangs) {
+ for (const embeddedLang of lang.embeddedLangs) {
+ this._langGraph.set(embeddedLang, this._langMap[embeddedLang]);
+ }
+ }
+ }
+}
+
+function resolveLang(lang) {
+ return typeof lang === "string" ? languages.find((l) => l.id === lang || l.aliases?.includes(lang)) : lang;
+}
+function resolveOptions(options) {
+ let _languages = languages;
+ let _themes = options.themes || [];
+ let _wasmPath = options.paths?.wasm ? options.paths.wasm.endsWith("/") ? options.paths.wasm : options.paths.wasm + "/" : WASM_PATH;
+ if (options.langs) {
+ _languages = options.langs.map(resolveLang);
+ }
+ if (options.theme) {
+ _themes.unshift(options.theme);
+ }
+ if (!_themes.length) {
+ _themes = ["nord"];
+ }
+ return { _languages, _themes, _wasmPath };
+}
+function generateDefaultColorReplacements() {
+ const replacements = {
+ "#000001": "var(--shiki-color-text)",
+ "#000002": "var(--shiki-color-background)",
+ "#000004": "var(--shiki-token-constant)",
+ "#000005": "var(--shiki-token-string)",
+ "#000006": "var(--shiki-token-comment)",
+ "#000007": "var(--shiki-token-keyword)",
+ "#000008": "var(--shiki-token-parameter)",
+ "#000009": "var(--shiki-token-function)",
+ "#000010": "var(--shiki-token-string-expression)",
+ "#000011": "var(--shiki-token-punctuation)",
+ "#000012": "var(--shiki-token-link)"
+ };
+ for (let i = 0; i < namedColors.length; i++) {
+ const code = `#A${i.toString().padStart(5, "0")}`;
+ const colorNameKebab = namedColors[i].replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
+ replacements[code] = `var(--shiki-color-ansi-${colorNameKebab})`;
+ }
+ return replacements;
+}
+async function getHighlighter(options) {
+ const { _languages, _themes, _wasmPath } = resolveOptions(options);
+ const _resolver = new Resolver(getOniguruma(_wasmPath), "vscode-oniguruma");
+ const _registry = new Registry(_resolver);
+ if (options.paths?.themes) {
+ _registry.themesPath = options.paths.themes.endsWith("/") ? options.paths.themes : options.paths.themes + "/";
+ }
+ if (options.paths?.languages) {
+ _resolver.languagesPath = options.paths.languages.endsWith("/") ? options.paths.languages : options.paths.languages + "/";
+ }
+ const themes = await _registry.loadThemes(_themes);
+ const _defaultTheme = themes[0];
+ let _currentTheme;
+ await _registry.loadLanguages(_languages);
+ let COLOR_REPLACEMENTS = generateDefaultColorReplacements();
+ function setColorReplacements(map) {
+ COLOR_REPLACEMENTS = map;
+ }
+ function fixCssVariablesTheme(theme, colorMap) {
+ theme.bg = COLOR_REPLACEMENTS[theme.bg] || theme.bg;
+ theme.fg = COLOR_REPLACEMENTS[theme.fg] || theme.fg;
+ Object.entries(theme.colors).forEach(([key, value]) => {
+ theme.colors[key] = COLOR_REPLACEMENTS[value] || value;
+ });
+ colorMap.forEach((val, i) => {
+ colorMap[i] = COLOR_REPLACEMENTS[val] || val;
+ });
+ }
+ function getTheme(theme) {
+ const _theme = theme ? _registry.getTheme(theme) : _defaultTheme;
+ if (!_theme) {
+ throw Error(`No theme registration for ${theme}`);
+ }
+ if (!_currentTheme || _currentTheme.name !== _theme.name) {
+ _registry.setTheme(_theme);
+ _currentTheme = _theme;
+ }
+ const _colorMap = _registry.getColorMap();
+ if (_theme.type === "css") {
+ fixCssVariablesTheme(_theme, _colorMap);
+ }
+ return { _theme, _colorMap };
+ }
+ function getGrammar(lang) {
+ const _grammar = _registry.getGrammar(lang);
+ if (!_grammar) {
+ throw Error(`No language registration for ${lang}`);
+ }
+ return { _grammar };
+ }
+ function codeToThemedTokens(code, lang = "text", theme, options2 = { includeExplanation: true }) {
+ if (isPlaintext(lang)) {
+ const lines = code.split(/\r\n|\r|\n/);
+ return [...lines.map((line) => [{ content: line }])];
+ }
+ const { _grammar } = getGrammar(lang);
+ const { _theme, _colorMap } = getTheme(theme);
+ return tokenizeWithTheme(_theme, _colorMap, code, _grammar, options2);
+ }
+ function ansiToThemedTokens(ansi, theme) {
+ const { _theme } = getTheme(theme);
+ return tokenizeAnsiWithTheme(_theme, ansi);
+ }
+ function codeToHtml(code, arg1 = "text", arg2) {
+ let options2;
+ if (typeof arg1 === "object") {
+ options2 = arg1;
+ } else {
+ options2 = {
+ lang: arg1,
+ theme: arg2
+ };
+ }
+ const tokens = codeToThemedTokens(code, options2.lang, options2.theme, {
+ includeExplanation: false
+ });
+ const { _theme } = getTheme(options2.theme);
+ return renderToHtml(tokens, {
+ fg: _theme.fg,
+ bg: _theme.bg,
+ lineOptions: options2?.lineOptions,
+ themeName: _theme.name
+ });
+ }
+ function ansiToHtml(ansi, options2) {
+ const tokens = ansiToThemedTokens(ansi, options2?.theme);
+ const { _theme } = getTheme(options2?.theme);
+ return renderToHtml(tokens, {
+ fg: _theme.fg,
+ bg: _theme.bg,
+ lineOptions: options2?.lineOptions,
+ themeName: _theme.name
+ });
+ }
+ async function loadTheme(theme) {
+ await _registry.loadTheme(theme);
+ }
+ async function loadLanguage(lang) {
+ const _lang = resolveLang(lang);
+ _resolver.addLanguage(_lang);
+ await _registry.loadLanguage(_lang);
+ }
+ function getLoadedThemes() {
+ return _registry.getLoadedThemes();
+ }
+ function getLoadedLanguages() {
+ return _registry.getLoadedLanguages();
+ }
+ function getBackgroundColor(theme) {
+ const { _theme } = getTheme(theme);
+ return _theme.bg;
+ }
+ function getForegroundColor(theme) {
+ const { _theme } = getTheme(theme);
+ return _theme.fg;
+ }
+ return {
+ codeToThemedTokens,
+ codeToHtml,
+ ansiToThemedTokens,
+ ansiToHtml,
+ getTheme: (theme) => {
+ return getTheme(theme)._theme;
+ },
+ loadTheme,
+ loadLanguage,
+ getBackgroundColor,
+ getForegroundColor,
+ getLoadedThemes,
+ getLoadedLanguages,
+ setColorReplacements
+ };
+}
+function isPlaintext(lang) {
+ return !lang || ["plaintext", "txt", "text"].includes(lang);
+}
+
+function setOnigasmWASM(path) {
+ setWasm(path);
+}
+
+export { languages as BUNDLED_LANGUAGES, themes as BUNDLED_THEMES, FontStyle, getHighlighter, fetchTheme as loadTheme, renderToHtml, setCDN, setOnigasmWASM, setWasm, toShikiTheme };
diff --git a/node_modules/shiki/dist/index.js b/node_modules/shiki/dist/index.js
new file mode 100644
index 0000000..0482b3c
--- /dev/null
+++ b/node_modules/shiki/dist/index.js
@@ -0,0 +1,3147 @@
+'use strict';
+
+var vscodeOniguruma = require('vscode-oniguruma');
+var vscodeTextmate = require('vscode-textmate');
+
+const themes = [
+ "css-variables",
+ "dark-plus",
+ "dracula-soft",
+ "dracula",
+ "github-dark-dimmed",
+ "github-dark",
+ "github-light",
+ "hc_light",
+ "light-plus",
+ "material-theme-darker",
+ "material-theme-lighter",
+ "material-theme-ocean",
+ "material-theme-palenight",
+ "material-theme",
+ "min-dark",
+ "min-light",
+ "monokai",
+ "nord",
+ "one-dark-pro",
+ "poimandres",
+ "rose-pine-dawn",
+ "rose-pine-moon",
+ "rose-pine",
+ "slack-dark",
+ "slack-ochin",
+ "solarized-dark",
+ "solarized-light",
+ "vitesse-dark",
+ "vitesse-light"
+];
+
+const languages = [
+ {
+ id: "abap",
+ scopeName: "source.abap",
+ path: "abap.tmLanguage.json",
+ displayName: "ABAP",
+ samplePath: "abap.sample"
+ },
+ {
+ id: "actionscript-3",
+ scopeName: "source.actionscript.3",
+ path: "actionscript-3.tmLanguage.json",
+ displayName: "ActionScript",
+ samplePath: "actionscript-3.sample"
+ },
+ {
+ id: "ada",
+ scopeName: "source.ada",
+ path: "ada.tmLanguage.json",
+ displayName: "Ada",
+ samplePath: "ada.sample"
+ },
+ {
+ id: "apache",
+ scopeName: "source.apacheconf",
+ path: "apache.tmLanguage.json",
+ displayName: "Apache Conf"
+ },
+ {
+ id: "apex",
+ scopeName: "source.apex",
+ path: "apex.tmLanguage.json",
+ displayName: "Apex",
+ samplePath: "apex.sample"
+ },
+ {
+ id: "apl",
+ scopeName: "source.apl",
+ path: "apl.tmLanguage.json",
+ displayName: "APL",
+ embeddedLangs: ["html", "xml", "css", "javascript", "json"]
+ },
+ {
+ id: "applescript",
+ scopeName: "source.applescript",
+ path: "applescript.tmLanguage.json",
+ displayName: "AppleScript",
+ samplePath: "applescript.sample"
+ },
+ {
+ id: "ara",
+ scopeName: "source.ara",
+ path: "ara.tmLanguage.json",
+ displayName: "Ara",
+ samplePath: "ara.sample"
+ },
+ {
+ id: "asm",
+ scopeName: "source.asm.x86_64",
+ path: "asm.tmLanguage.json",
+ displayName: "Assembly",
+ samplePath: "asm.sample"
+ },
+ {
+ id: "astro",
+ scopeName: "source.astro",
+ path: "astro.tmLanguage.json",
+ displayName: "Astro",
+ samplePath: "astro.sample",
+ embeddedLangs: ["json", "javascript", "typescript", "stylus", "sass", "css", "scss", "less", "postcss", "tsx"]
+ },
+ {
+ id: "awk",
+ scopeName: "source.awk",
+ path: "awk.tmLanguage.json",
+ displayName: "AWK",
+ samplePath: "awk.sample"
+ },
+ {
+ id: "ballerina",
+ scopeName: "source.ballerina",
+ path: "ballerina.tmLanguage.json",
+ displayName: "Ballerina",
+ samplePath: "ballerina.sample"
+ },
+ {
+ id: "bat",
+ scopeName: "source.batchfile",
+ path: "bat.tmLanguage.json",
+ displayName: "Batch",
+ samplePath: "bat.sample",
+ aliases: ["batch"]
+ },
+ {
+ id: "beancount",
+ scopeName: "text.beancount",
+ path: "beancount.tmLanguage.json",
+ displayName: "Beancount",
+ samplePath: "beancount.sample"
+ },
+ {
+ id: "berry",
+ scopeName: "source.berry",
+ path: "berry.tmLanguage.json",
+ displayName: "Berry",
+ samplePath: "berry.sample",
+ aliases: ["be"]
+ },
+ {
+ id: "bibtex",
+ scopeName: "text.bibtex",
+ path: "bibtex.tmLanguage.json",
+ displayName: "BibTeX"
+ },
+ {
+ id: "bicep",
+ scopeName: "source.bicep",
+ path: "bicep.tmLanguage.json",
+ displayName: "Bicep",
+ samplePath: "bicep.sample"
+ },
+ {
+ id: "blade",
+ scopeName: "text.html.php.blade",
+ path: "blade.tmLanguage.json",
+ displayName: "Blade",
+ samplePath: "blade.sample",
+ embeddedLangs: ["html", "xml", "sql", "javascript", "json", "css"]
+ },
+ {
+ id: "c",
+ scopeName: "source.c",
+ path: "c.tmLanguage.json",
+ displayName: "C",
+ samplePath: "c.sample"
+ },
+ {
+ id: "cadence",
+ scopeName: "source.cadence",
+ path: "cadence.tmLanguage.json",
+ displayName: "Cadence",
+ samplePath: "cadence.sample",
+ aliases: ["cdc"]
+ },
+ {
+ id: "clarity",
+ scopeName: "source.clar",
+ path: "clarity.tmLanguage.json",
+ displayName: "Clarity",
+ samplePath: "clarity.sample"
+ },
+ {
+ id: "clojure",
+ scopeName: "source.clojure",
+ path: "clojure.tmLanguage.json",
+ displayName: "Clojure",
+ samplePath: "clojure.sample",
+ aliases: ["clj"]
+ },
+ {
+ id: "cmake",
+ scopeName: "source.cmake",
+ path: "cmake.tmLanguage.json",
+ displayName: "CMake",
+ samplePath: "cmake.sample"
+ },
+ {
+ id: "cobol",
+ scopeName: "source.cobol",
+ path: "cobol.tmLanguage.json",
+ displayName: "COBOL",
+ samplePath: "cobol.sample",
+ embeddedLangs: ["sql", "html", "java"]
+ },
+ {
+ id: "codeql",
+ scopeName: "source.ql",
+ path: "codeql.tmLanguage.json",
+ displayName: "CodeQL",
+ samplePath: "codeql.sample",
+ aliases: ["ql"],
+ embeddedLangs: ["markdown"]
+ },
+ {
+ id: "coffee",
+ scopeName: "source.coffee",
+ path: "coffee.tmLanguage.json",
+ displayName: "CoffeeScript",
+ samplePath: "coffee.sample",
+ embeddedLangs: ["javascript"]
+ },
+ {
+ id: "cpp",
+ scopeName: "source.cpp",
+ path: "cpp.tmLanguage.json",
+ displayName: "C++",
+ samplePath: "cpp.sample",
+ embeddedLangs: ["glsl", "sql"]
+ },
+ {
+ id: "crystal",
+ scopeName: "source.crystal",
+ path: "crystal.tmLanguage.json",
+ displayName: "Crystal",
+ samplePath: "crystal.sample",
+ embeddedLangs: ["html", "sql", "css", "c", "javascript", "shellscript"]
+ },
+ {
+ id: "csharp",
+ scopeName: "source.cs",
+ path: "csharp.tmLanguage.json",
+ displayName: "C#",
+ samplePath: "csharp.sample",
+ aliases: ["c#", "cs"]
+ },
+ {
+ id: "css",
+ scopeName: "source.css",
+ path: "css.tmLanguage.json",
+ displayName: "CSS",
+ samplePath: "css.sample"
+ },
+ {
+ id: "cue",
+ scopeName: "source.cue",
+ path: "cue.tmLanguage.json",
+ displayName: "CUE",
+ samplePath: "cue.sample"
+ },
+ {
+ id: "cypher",
+ scopeName: "source.cypher",
+ path: "cypher.tmLanguage.json",
+ displayName: "Cypher",
+ samplePath: "cypher.sample",
+ aliases: ["cql"]
+ },
+ {
+ id: "d",
+ scopeName: "source.d",
+ path: "d.tmLanguage.json",
+ displayName: "D",
+ samplePath: "d.sample"
+ },
+ {
+ id: "dart",
+ scopeName: "source.dart",
+ path: "dart.tmLanguage.json",
+ displayName: "Dart",
+ samplePath: "dart.sample"
+ },
+ {
+ id: "dax",
+ scopeName: "source.dax",
+ path: "dax.tmLanguage.json",
+ displayName: "DAX",
+ samplePath: "dax.sample"
+ },
+ {
+ id: "diff",
+ scopeName: "source.diff",
+ path: "diff.tmLanguage.json",
+ displayName: "Diff",
+ samplePath: "diff.sample"
+ },
+ {
+ id: "docker",
+ scopeName: "source.dockerfile",
+ path: "docker.tmLanguage.json",
+ displayName: "Docker",
+ samplePath: "docker.sample",
+ aliases: ["dockerfile"]
+ },
+ {
+ id: "dream-maker",
+ scopeName: "source.dm",
+ path: "dream-maker.tmLanguage.json",
+ displayName: "Dream Maker"
+ },
+ {
+ id: "elixir",
+ scopeName: "source.elixir",
+ path: "elixir.tmLanguage.json",
+ displayName: "Elixir",
+ samplePath: "elixir.sample",
+ embeddedLangs: ["html"]
+ },
+ {
+ id: "elm",
+ scopeName: "source.elm",
+ path: "elm.tmLanguage.json",
+ displayName: "Elm",
+ samplePath: "elm.sample",
+ embeddedLangs: ["glsl"]
+ },
+ {
+ id: "erb",
+ scopeName: "text.html.erb",
+ path: "erb.tmLanguage.json",
+ displayName: "ERB",
+ samplePath: "erb.sample",
+ embeddedLangs: ["html", "ruby"]
+ },
+ {
+ id: "erlang",
+ scopeName: "source.erlang",
+ path: "erlang.tmLanguage.json",
+ displayName: "Erlang",
+ samplePath: "erlang.sample",
+ aliases: ["erl"]
+ },
+ {
+ id: "fish",
+ scopeName: "source.fish",
+ path: "fish.tmLanguage.json",
+ displayName: "Fish",
+ samplePath: "fish.sample"
+ },
+ {
+ id: "fsharp",
+ scopeName: "source.fsharp",
+ path: "fsharp.tmLanguage.json",
+ displayName: "F#",
+ samplePath: "fsharp.sample",
+ aliases: ["f#", "fs"],
+ embeddedLangs: ["markdown"]
+ },
+ {
+ id: "gdresource",
+ scopeName: "source.gdresource",
+ path: "gdresource.tmLanguage.json",
+ displayName: "GDResource",
+ samplePath: "gdresource.sample",
+ embeddedLangs: ["gdshader", "gdscript"]
+ },
+ {
+ id: "gdscript",
+ scopeName: "source.gdscript",
+ path: "gdscript.tmLanguage.json",
+ displayName: "GDScript",
+ samplePath: "gdscript.sample"
+ },
+ {
+ id: "gdshader",
+ scopeName: "source.gdshader",
+ path: "gdshader.tmLanguage.json",
+ displayName: "GDShader",
+ samplePath: "gdshader.sample"
+ },
+ {
+ id: "gherkin",
+ scopeName: "text.gherkin.feature",
+ path: "gherkin.tmLanguage.json",
+ displayName: "Gherkin"
+ },
+ {
+ id: "git-commit",
+ scopeName: "text.git-commit",
+ path: "git-commit.tmLanguage.json",
+ displayName: "Git Commit Message",
+ embeddedLangs: ["diff"]
+ },
+ {
+ id: "git-rebase",
+ scopeName: "text.git-rebase",
+ path: "git-rebase.tmLanguage.json",
+ displayName: "Git Rebase Message",
+ embeddedLangs: ["shellscript"]
+ },
+ {
+ id: "glimmer-js",
+ scopeName: "source.gjs",
+ path: "glimmer-js.tmLanguage.json",
+ displayName: "Glimmer JS",
+ aliases: ["gjs"],
+ embeddedLangs: ["javascript", "handlebars"]
+ },
+ {
+ id: "glimmer-ts",
+ scopeName: "source.gts",
+ path: "glimmer-ts.tmLanguage.json",
+ displayName: "Glimmer TS",
+ aliases: ["gts"],
+ embeddedLangs: ["typescript", "handlebars"]
+ },
+ {
+ id: "glsl",
+ scopeName: "source.glsl",
+ path: "glsl.tmLanguage.json",
+ displayName: "GLSL",
+ samplePath: "glsl.sample",
+ embeddedLangs: ["c"]
+ },
+ {
+ id: "gnuplot",
+ scopeName: "source.gnuplot",
+ path: "gnuplot.tmLanguage.json",
+ displayName: "Gnuplot"
+ },
+ {
+ id: "go",
+ scopeName: "source.go",
+ path: "go.tmLanguage.json",
+ displayName: "Go",
+ samplePath: "go.sample"
+ },
+ {
+ id: "graphql",
+ scopeName: "source.graphql",
+ path: "graphql.tmLanguage.json",
+ displayName: "GraphQL",
+ embeddedLangs: ["javascript", "typescript", "jsx", "tsx"]
+ },
+ {
+ id: "groovy",
+ scopeName: "source.groovy",
+ path: "groovy.tmLanguage.json",
+ displayName: "Groovy"
+ },
+ {
+ id: "hack",
+ scopeName: "source.hack",
+ path: "hack.tmLanguage.json",
+ displayName: "Hack",
+ embeddedLangs: ["html", "sql"]
+ },
+ {
+ id: "haml",
+ scopeName: "text.haml",
+ path: "haml.tmLanguage.json",
+ displayName: "Ruby Haml",
+ embeddedLangs: ["ruby", "javascript", "sass", "coffee", "markdown", "css"]
+ },
+ {
+ id: "handlebars",
+ scopeName: "text.html.handlebars",
+ path: "handlebars.tmLanguage.json",
+ displayName: "Handlebars",
+ aliases: ["hbs"],
+ embeddedLangs: ["html", "css", "javascript", "yaml"]
+ },
+ {
+ id: "haskell",
+ scopeName: "source.haskell",
+ path: "haskell.tmLanguage.json",
+ displayName: "Haskell",
+ aliases: ["hs"]
+ },
+ {
+ id: "hcl",
+ scopeName: "source.hcl",
+ path: "hcl.tmLanguage.json",
+ displayName: "HashiCorp HCL",
+ samplePath: "hcl.sample"
+ },
+ {
+ id: "hjson",
+ scopeName: "source.hjson",
+ path: "hjson.tmLanguage.json",
+ displayName: "Hjson",
+ samplePath: "hjson.sample"
+ },
+ {
+ id: "hlsl",
+ scopeName: "source.hlsl",
+ path: "hlsl.tmLanguage.json",
+ displayName: "HLSL"
+ },
+ {
+ id: "html",
+ scopeName: "text.html.basic",
+ path: "html.tmLanguage.json",
+ displayName: "HTML",
+ samplePath: "html.sample",
+ embeddedLangs: ["javascript", "css"]
+ },
+ {
+ id: "http",
+ scopeName: "source.http",
+ path: "http.tmLanguage.json",
+ displayName: "HTTP",
+ samplePath: "http.sample",
+ embeddedLangs: ["shellscript", "json", "xml", "graphql"]
+ },
+ {
+ id: "imba",
+ scopeName: "source.imba",
+ path: "imba.tmLanguage.json",
+ displayName: "Imba",
+ samplePath: "imba.sample"
+ },
+ {
+ id: "ini",
+ scopeName: "source.ini",
+ path: "ini.tmLanguage.json",
+ displayName: "INI",
+ aliases: ["properties"]
+ },
+ {
+ id: "java",
+ scopeName: "source.java",
+ path: "java.tmLanguage.json",
+ displayName: "Java",
+ samplePath: "java.sample"
+ },
+ {
+ id: "javascript",
+ scopeName: "source.js",
+ path: "javascript.tmLanguage.json",
+ displayName: "JavaScript",
+ samplePath: "javascript.sample",
+ aliases: ["js"]
+ },
+ {
+ id: "jinja-html",
+ scopeName: "text.html.jinja",
+ path: "jinja-html.tmLanguage.json",
+ displayName: "Jinja",
+ embeddedLangs: ["html"]
+ },
+ {
+ id: "jison",
+ scopeName: "source.jison",
+ path: "jison.tmLanguage.json",
+ displayName: "Jison",
+ samplePath: "jison.sample",
+ embeddedLangs: ["javascript"]
+ },
+ {
+ id: "json",
+ scopeName: "source.json",
+ path: "json.tmLanguage.json",
+ displayName: "JSON"
+ },
+ {
+ id: "json5",
+ scopeName: "source.json5",
+ path: "json5.tmLanguage.json",
+ displayName: "JSON5",
+ samplePath: "json5.sample"
+ },
+ {
+ id: "jsonc",
+ scopeName: "source.json.comments",
+ path: "jsonc.tmLanguage.json",
+ displayName: "JSON with Comments"
+ },
+ {
+ id: "jsonl",
+ scopeName: "source.json.lines",
+ path: "jsonl.tmLanguage.json",
+ displayName: "JSON Lines"
+ },
+ {
+ id: "jsonnet",
+ scopeName: "source.jsonnet",
+ path: "jsonnet.tmLanguage.json",
+ displayName: "Jsonnet"
+ },
+ {
+ id: "jssm",
+ scopeName: "source.jssm",
+ path: "jssm.tmLanguage.json",
+ displayName: "JSSM",
+ samplePath: "jssm.sample",
+ aliases: ["fsl"]
+ },
+ {
+ id: "jsx",
+ scopeName: "source.js.jsx",
+ path: "jsx.tmLanguage.json",
+ displayName: "JSX"
+ },
+ {
+ id: "julia",
+ scopeName: "source.julia",
+ path: "julia.tmLanguage.json",
+ displayName: "Julia",
+ embeddedLangs: ["cpp", "python", "javascript", "r", "sql"]
+ },
+ {
+ id: "kotlin",
+ scopeName: "source.kotlin",
+ path: "kotlin.tmLanguage.json",
+ displayName: "Kotlin",
+ samplePath: "kotlin.sample"
+ },
+ {
+ id: "kusto",
+ scopeName: "source.kusto",
+ path: "kusto.tmLanguage.json",
+ displayName: "Kusto",
+ samplePath: "kusto.sample",
+ aliases: ["kql"]
+ },
+ {
+ id: "latex",
+ scopeName: "text.tex.latex",
+ path: "latex.tmLanguage.json",
+ displayName: "LaTeX",
+ embeddedLangs: ["tex", "css", "haskell", "html", "xml", "java", "lua", "julia", "ruby", "javascript", "typescript", "python", "yaml", "rust", "scala", "gnuplot"]
+ },
+ {
+ id: "less",
+ scopeName: "source.css.less",
+ path: "less.tmLanguage.json",
+ displayName: "Less",
+ embeddedLangs: ["css"]
+ },
+ {
+ id: "liquid",
+ scopeName: "text.html.liquid",
+ path: "liquid.tmLanguage.json",
+ displayName: "Liquid",
+ samplePath: "liquid.sample",
+ embeddedLangs: ["html", "css", "json", "javascript"]
+ },
+ {
+ id: "lisp",
+ scopeName: "source.lisp",
+ path: "lisp.tmLanguage.json",
+ displayName: "Lisp"
+ },
+ {
+ id: "logo",
+ scopeName: "source.logo",
+ path: "logo.tmLanguage.json",
+ displayName: "Logo"
+ },
+ {
+ id: "lua",
+ scopeName: "source.lua",
+ path: "lua.tmLanguage.json",
+ displayName: "Lua",
+ embeddedLangs: ["c"]
+ },
+ {
+ id: "make",
+ scopeName: "source.makefile",
+ path: "make.tmLanguage.json",
+ displayName: "Makefile",
+ aliases: ["makefile"]
+ },
+ {
+ id: "markdown",
+ scopeName: "text.html.markdown",
+ path: "markdown.tmLanguage.json",
+ displayName: "Markdown",
+ aliases: ["md"],
+ embeddedLangs: ["css", "html", "ini", "java", "lua", "make", "perl", "r", "ruby", "php", "sql", "vb", "xml", "xsl", "yaml", "bat", "clojure", "coffee", "c", "cpp", "diff", "docker", "git-commit", "git-rebase", "go", "groovy", "pug", "javascript", "json", "jsonc", "less", "objective-c", "swift", "scss", "raku", "powershell", "python", "julia", "rust", "scala", "shellscript", "typescript", "tsx", "csharp", "fsharp", "dart", "handlebars", "erlang", "elixir", "latex", "bibtex"]
+ },
+ {
+ id: "marko",
+ scopeName: "text.marko",
+ path: "marko.tmLanguage.json",
+ displayName: "Marko",
+ embeddedLangs: ["css", "less", "scss", "javascript"]
+ },
+ {
+ id: "matlab",
+ scopeName: "source.matlab",
+ path: "matlab.tmLanguage.json",
+ displayName: "MATLAB"
+ },
+ {
+ id: "mdx",
+ scopeName: "source.mdx",
+ path: "mdx.tmLanguage.json",
+ displayName: "MDX",
+ embeddedLangs: ["tsx", "toml", "yaml", "c", "clojure", "coffee", "cpp", "csharp", "css", "diff", "docker", "elixir", "elm", "erlang", "go", "graphql", "haskell", "html", "ini", "java", "javascript", "json", "julia", "kotlin", "less", "lua", "make", "markdown", "objective-c", "perl", "python", "r", "ruby", "rust", "scala", "scss", "shellscript", "sql", "xml", "swift", "typescript"]
+ },
+ {
+ id: "mermaid",
+ scopeName: "source.mermaid",
+ path: "mermaid.tmLanguage.json",
+ displayName: "Mermaid"
+ },
+ {
+ id: "narrat",
+ scopeName: "source.narrat",
+ path: "narrat.tmLanguage.json",
+ displayName: "Narrat Language",
+ samplePath: "narrat.sample",
+ aliases: ["nar"]
+ },
+ {
+ id: "nextflow",
+ scopeName: "source.nextflow",
+ path: "nextflow.tmLanguage.json",
+ displayName: "Nextflow",
+ samplePath: "nextflow.sample",
+ aliases: ["nf"]
+ },
+ {
+ id: "nginx",
+ scopeName: "source.nginx",
+ path: "nginx.tmLanguage.json",
+ displayName: "Nginx",
+ embeddedLangs: ["lua"]
+ },
+ {
+ id: "nim",
+ scopeName: "source.nim",
+ path: "nim.tmLanguage.json",
+ displayName: "Nim",
+ embeddedLangs: ["c", "html", "xml", "javascript", "css", "glsl", "markdown"]
+ },
+ {
+ id: "nix",
+ scopeName: "source.nix",
+ path: "nix.tmLanguage.json",
+ displayName: "Nix"
+ },
+ {
+ id: "objective-c",
+ scopeName: "source.objc",
+ path: "objective-c.tmLanguage.json",
+ displayName: "Objective-C",
+ aliases: ["objc"]
+ },
+ {
+ id: "objective-cpp",
+ scopeName: "source.objcpp",
+ path: "objective-cpp.tmLanguage.json",
+ displayName: "Objective-C++"
+ },
+ {
+ id: "ocaml",
+ scopeName: "source.ocaml",
+ path: "ocaml.tmLanguage.json",
+ displayName: "OCaml"
+ },
+ {
+ id: "pascal",
+ scopeName: "source.pascal",
+ path: "pascal.tmLanguage.json",
+ displayName: "Pascal"
+ },
+ {
+ id: "perl",
+ scopeName: "source.perl",
+ path: "perl.tmLanguage.json",
+ displayName: "Perl",
+ embeddedLangs: ["html", "xml", "css", "javascript", "sql"]
+ },
+ {
+ id: "php",
+ scopeName: "source.php",
+ path: "php.tmLanguage.json",
+ displayName: "PHP",
+ embeddedLangs: ["html", "xml", "sql", "javascript", "json", "css"]
+ },
+ {
+ id: "plsql",
+ scopeName: "source.plsql.oracle",
+ path: "plsql.tmLanguage.json",
+ displayName: "PL/SQL"
+ },
+ {
+ id: "postcss",
+ scopeName: "source.css.postcss",
+ path: "postcss.tmLanguage.json",
+ displayName: "PostCSS"
+ },
+ {
+ id: "powerquery",
+ scopeName: "source.powerquery",
+ path: "powerquery.tmLanguage.json",
+ displayName: "PowerQuery",
+ samplePath: "powerquery.sample"
+ },
+ {
+ id: "powershell",
+ scopeName: "source.powershell",
+ path: "powershell.tmLanguage.json",
+ displayName: "PowerShell",
+ aliases: ["ps", "ps1"]
+ },
+ {
+ id: "prisma",
+ scopeName: "source.prisma",
+ path: "prisma.tmLanguage.json",
+ displayName: "Prisma",
+ samplePath: "prisma.sample"
+ },
+ {
+ id: "prolog",
+ scopeName: "source.prolog",
+ path: "prolog.tmLanguage.json",
+ displayName: "Prolog"
+ },
+ {
+ id: "proto",
+ scopeName: "source.proto",
+ path: "proto.tmLanguage.json",
+ displayName: "Protocol Buffer 3",
+ samplePath: "proto.sample"
+ },
+ {
+ id: "pug",
+ scopeName: "text.pug",
+ path: "pug.tmLanguage.json",
+ displayName: "Pug",
+ aliases: ["jade"],
+ embeddedLangs: ["javascript", "css", "sass", "scss", "stylus", "coffee", "html"]
+ },
+ {
+ id: "puppet",
+ scopeName: "source.puppet",
+ path: "puppet.tmLanguage.json",
+ displayName: "Puppet"
+ },
+ {
+ id: "purescript",
+ scopeName: "source.purescript",
+ path: "purescript.tmLanguage.json",
+ displayName: "PureScript"
+ },
+ {
+ id: "python",
+ scopeName: "source.python",
+ path: "python.tmLanguage.json",
+ displayName: "Python",
+ samplePath: "python.sample",
+ aliases: ["py"]
+ },
+ {
+ id: "r",
+ scopeName: "source.r",
+ path: "r.tmLanguage.json",
+ displayName: "R"
+ },
+ {
+ id: "raku",
+ scopeName: "source.perl.6",
+ path: "raku.tmLanguage.json",
+ displayName: "Perl 6",
+ aliases: ["perl6"]
+ },
+ {
+ id: "razor",
+ scopeName: "text.aspnetcorerazor",
+ path: "razor.tmLanguage.json",
+ displayName: "ASP.NET Razor",
+ embeddedLangs: ["html", "csharp"]
+ },
+ {
+ id: "reg",
+ scopeName: "source.reg",
+ path: "reg.tmLanguage.json",
+ displayName: "Windows Registry Script",
+ samplePath: "reg.sample"
+ },
+ {
+ id: "rel",
+ scopeName: "source.rel",
+ path: "rel.tmLanguage.json",
+ displayName: "Rel",
+ samplePath: "rel.sample"
+ },
+ {
+ id: "riscv",
+ scopeName: "source.riscv",
+ path: "riscv.tmLanguage.json",
+ displayName: "RISC-V"
+ },
+ {
+ id: "rst",
+ scopeName: "source.rst",
+ path: "rst.tmLanguage.json",
+ displayName: "reStructuredText",
+ embeddedLangs: ["cpp", "python", "javascript", "shellscript", "yaml", "cmake", "ruby"]
+ },
+ {
+ id: "ruby",
+ scopeName: "source.ruby",
+ path: "ruby.tmLanguage.json",
+ displayName: "Ruby",
+ samplePath: "ruby.sample",
+ aliases: ["rb"],
+ embeddedLangs: ["html", "xml", "sql", "css", "c", "javascript", "shellscript", "lua"]
+ },
+ {
+ id: "rust",
+ scopeName: "source.rust",
+ path: "rust.tmLanguage.json",
+ displayName: "Rust",
+ aliases: ["rs"]
+ },
+ {
+ id: "sas",
+ scopeName: "source.sas",
+ path: "sas.tmLanguage.json",
+ displayName: "SAS",
+ embeddedLangs: ["sql"]
+ },
+ {
+ id: "sass",
+ scopeName: "source.sass",
+ path: "sass.tmLanguage.json",
+ displayName: "Sass"
+ },
+ {
+ id: "scala",
+ scopeName: "source.scala",
+ path: "scala.tmLanguage.json",
+ displayName: "Scala"
+ },
+ {
+ id: "scheme",
+ scopeName: "source.scheme",
+ path: "scheme.tmLanguage.json",
+ displayName: "Scheme"
+ },
+ {
+ id: "scss",
+ scopeName: "source.css.scss",
+ path: "scss.tmLanguage.json",
+ displayName: "SCSS",
+ embeddedLangs: ["css"]
+ },
+ {
+ id: "shaderlab",
+ scopeName: "source.shaderlab",
+ path: "shaderlab.tmLanguage.json",
+ displayName: "ShaderLab",
+ aliases: ["shader"],
+ embeddedLangs: ["hlsl"]
+ },
+ {
+ id: "shellscript",
+ scopeName: "source.shell",
+ path: "shellscript.tmLanguage.json",
+ displayName: "Shell",
+ aliases: ["bash", "console", "sh", "shell", "zsh"]
+ },
+ {
+ id: "smalltalk",
+ scopeName: "source.smalltalk",
+ path: "smalltalk.tmLanguage.json",
+ displayName: "Smalltalk"
+ },
+ {
+ id: "solidity",
+ scopeName: "source.solidity",
+ path: "solidity.tmLanguage.json",
+ displayName: "Solidity"
+ },
+ {
+ id: "sparql",
+ scopeName: "source.sparql",
+ path: "sparql.tmLanguage.json",
+ displayName: "SPARQL",
+ samplePath: "sparql.sample",
+ embeddedLangs: ["turtle"]
+ },
+ {
+ id: "sql",
+ scopeName: "source.sql",
+ path: "sql.tmLanguage.json",
+ displayName: "SQL"
+ },
+ {
+ id: "ssh-config",
+ scopeName: "source.ssh-config",
+ path: "ssh-config.tmLanguage.json",
+ displayName: "SSH Config"
+ },
+ {
+ id: "stata",
+ scopeName: "source.stata",
+ path: "stata.tmLanguage.json",
+ displayName: "Stata",
+ samplePath: "stata.sample",
+ embeddedLangs: ["sql"]
+ },
+ {
+ id: "stylus",
+ scopeName: "source.stylus",
+ path: "stylus.tmLanguage.json",
+ displayName: "Stylus",
+ aliases: ["styl"]
+ },
+ {
+ id: "svelte",
+ scopeName: "source.svelte",
+ path: "svelte.tmLanguage.json",
+ displayName: "Svelte",
+ embeddedLangs: ["javascript", "typescript", "coffee", "stylus", "sass", "css", "scss", "less", "postcss", "pug", "markdown"]
+ },
+ {
+ id: "swift",
+ scopeName: "source.swift",
+ path: "swift.tmLanguage.json",
+ displayName: "Swift"
+ },
+ {
+ id: "system-verilog",
+ scopeName: "source.systemverilog",
+ path: "system-verilog.tmLanguage.json",
+ displayName: "SystemVerilog"
+ },
+ {
+ id: "tasl",
+ scopeName: "source.tasl",
+ path: "tasl.tmLanguage.json",
+ displayName: "Tasl",
+ samplePath: "tasl.sample"
+ },
+ {
+ id: "tcl",
+ scopeName: "source.tcl",
+ path: "tcl.tmLanguage.json",
+ displayName: "Tcl"
+ },
+ {
+ id: "tex",
+ scopeName: "text.tex",
+ path: "tex.tmLanguage.json",
+ displayName: "TeX",
+ embeddedLangs: ["r"]
+ },
+ {
+ id: "toml",
+ scopeName: "source.toml",
+ path: "toml.tmLanguage.json",
+ displayName: "TOML"
+ },
+ {
+ id: "tsx",
+ scopeName: "source.tsx",
+ path: "tsx.tmLanguage.json",
+ displayName: "TSX",
+ samplePath: "tsx.sample"
+ },
+ {
+ id: "turtle",
+ scopeName: "source.turtle",
+ path: "turtle.tmLanguage.json",
+ displayName: "Turtle",
+ samplePath: "turtle.sample"
+ },
+ {
+ id: "twig",
+ scopeName: "text.html.twig",
+ path: "twig.tmLanguage.json",
+ displayName: "Twig",
+ embeddedLangs: ["css", "javascript", "php", "python", "ruby"]
+ },
+ {
+ id: "typescript",
+ scopeName: "source.ts",
+ path: "typescript.tmLanguage.json",
+ displayName: "TypeScript",
+ aliases: ["ts"]
+ },
+ {
+ id: "v",
+ scopeName: "source.v",
+ path: "v.tmLanguage.json",
+ displayName: "V",
+ samplePath: "v.sample"
+ },
+ {
+ id: "vb",
+ scopeName: "source.asp.vb.net",
+ path: "vb.tmLanguage.json",
+ displayName: "Visual Basic",
+ aliases: ["cmd"]
+ },
+ {
+ id: "verilog",
+ scopeName: "source.verilog",
+ path: "verilog.tmLanguage.json",
+ displayName: "Verilog"
+ },
+ {
+ id: "vhdl",
+ scopeName: "source.vhdl",
+ path: "vhdl.tmLanguage.json",
+ displayName: "VHDL"
+ },
+ {
+ id: "viml",
+ scopeName: "source.viml",
+ path: "viml.tmLanguage.json",
+ displayName: "Vim Script",
+ aliases: ["vim", "vimscript"]
+ },
+ {
+ id: "vue-html",
+ scopeName: "text.html.vue-html",
+ path: "vue-html.tmLanguage.json",
+ displayName: "Vue HTML",
+ embeddedLangs: ["vue", "javascript"]
+ },
+ {
+ id: "vue",
+ scopeName: "source.vue",
+ path: "vue.tmLanguage.json",
+ displayName: "Vue",
+ embeddedLangs: ["html", "markdown", "pug", "stylus", "sass", "css", "scss", "less", "javascript", "typescript", "jsx", "tsx", "json", "jsonc", "json5", "yaml", "toml", "graphql"]
+ },
+ {
+ id: "vyper",
+ scopeName: "source.vyper",
+ path: "vyper.tmLanguage.json",
+ displayName: "Vyper",
+ samplePath: "vyper.sample",
+ aliases: ["vy"]
+ },
+ {
+ id: "wasm",
+ scopeName: "source.wat",
+ path: "wasm.tmLanguage.json",
+ displayName: "WebAssembly"
+ },
+ {
+ id: "wenyan",
+ scopeName: "source.wenyan",
+ path: "wenyan.tmLanguage.json",
+ displayName: "Wenyan",
+ aliases: ["\u6587\u8A00"]
+ },
+ {
+ id: "wgsl",
+ scopeName: "source.wgsl",
+ path: "wgsl.tmLanguage.json",
+ displayName: "WGSL",
+ samplePath: "wgsl.sample"
+ },
+ {
+ id: "wolfram",
+ scopeName: "source.wolfram",
+ path: "wolfram.tmLanguage.json",
+ displayName: "Wolfram",
+ samplePath: "wolfram.sample"
+ },
+ {
+ id: "xml",
+ scopeName: "text.xml",
+ path: "xml.tmLanguage.json",
+ displayName: "XML",
+ embeddedLangs: ["java"]
+ },
+ {
+ id: "xsl",
+ scopeName: "text.xml.xsl",
+ path: "xsl.tmLanguage.json",
+ displayName: "XSL",
+ embeddedLangs: ["xml"]
+ },
+ {
+ id: "yaml",
+ scopeName: "source.yaml",
+ path: "yaml.tmLanguage.json",
+ displayName: "YAML",
+ aliases: ["yml"]
+ },
+ {
+ id: "zenscript",
+ scopeName: "source.zenscript",
+ path: "zenscript.tmLanguage.json",
+ displayName: "ZenScript",
+ samplePath: "zenscript.sample"
+ }
+];
+
+var FontStyle = /* @__PURE__ */ ((FontStyle2) => {
+ FontStyle2[FontStyle2["NotSet"] = -1] = "NotSet";
+ FontStyle2[FontStyle2["None"] = 0] = "None";
+ FontStyle2[FontStyle2["Italic"] = 1] = "Italic";
+ FontStyle2[FontStyle2["Bold"] = 2] = "Bold";
+ FontStyle2[FontStyle2["Underline"] = 4] = "Underline";
+ return FontStyle2;
+})(FontStyle || {});
+class StackElementMetadata {
+ static toBinaryStr(metadata) {
+ let r = metadata.toString(2);
+ while (r.length < 32) {
+ r = "0" + r;
+ }
+ return r;
+ }
+ static printMetadata(metadata) {
+ let languageId = StackElementMetadata.getLanguageId(metadata);
+ let tokenType = StackElementMetadata.getTokenType(metadata);
+ let fontStyle = StackElementMetadata.getFontStyle(metadata);
+ let foreground = StackElementMetadata.getForeground(metadata);
+ let background = StackElementMetadata.getBackground(metadata);
+ console.log({
+ languageId,
+ tokenType,
+ fontStyle,
+ foreground,
+ background
+ });
+ }
+ static getLanguageId(metadata) {
+ return (metadata & 255 /* LANGUAGEID_MASK */) >>> 0 /* LANGUAGEID_OFFSET */;
+ }
+ static getTokenType(metadata) {
+ return (metadata & 768 /* TOKEN_TYPE_MASK */) >>> 8 /* TOKEN_TYPE_OFFSET */;
+ }
+ static getFontStyle(metadata) {
+ return (metadata & 14336 /* FONT_STYLE_MASK */) >>> 11 /* FONT_STYLE_OFFSET */;
+ }
+ static getForeground(metadata) {
+ return (metadata & 8372224 /* FOREGROUND_MASK */) >>> 15 /* FOREGROUND_OFFSET */;
+ }
+ static getBackground(metadata) {
+ return (metadata & 4286578688 /* BACKGROUND_MASK */) >>> 24 /* BACKGROUND_OFFSET */;
+ }
+ static containsBalancedBrackets(metadata) {
+ return (metadata & 1024 /* BALANCED_BRACKETS_MASK */) !== 0;
+ }
+ static set(metadata, languageId, tokenType, fontStyle, foreground, background) {
+ let _languageId = StackElementMetadata.getLanguageId(metadata);
+ let _tokenType = StackElementMetadata.getTokenType(metadata);
+ let _fontStyle = StackElementMetadata.getFontStyle(metadata);
+ let _foreground = StackElementMetadata.getForeground(metadata);
+ let _background = StackElementMetadata.getBackground(metadata);
+ let _containsBalancedBracketsBit = StackElementMetadata.containsBalancedBrackets(
+ metadata
+ ) ? 1 : 0;
+ if (languageId !== 0) {
+ _languageId = languageId;
+ }
+ if (tokenType !== 0 /* Other */) {
+ _tokenType = tokenType === 8 /* MetaEmbedded */ ? 0 /* Other */ : tokenType;
+ }
+ if (fontStyle !== -1 /* NotSet */) {
+ _fontStyle = fontStyle;
+ }
+ if (foreground !== 0) {
+ _foreground = foreground;
+ }
+ if (background !== 0) {
+ _background = background;
+ }
+ return (_languageId << 0 /* LANGUAGEID_OFFSET */ | _tokenType << 8 /* TOKEN_TYPE_OFFSET */ | _fontStyle << 11 /* FONT_STYLE_OFFSET */ | _containsBalancedBracketsBit << 10 /* BALANCED_BRACKETS_OFFSET */ | _foreground << 15 /* FOREGROUND_OFFSET */ | _background << 24 /* BACKGROUND_OFFSET */) >>> 0;
+ }
+}
+
+function trimEndSlash(str) {
+ if (str.endsWith("/") || str.endsWith("\\"))
+ return str.slice(0, -1);
+ return str;
+}
+function trimStartDot(str) {
+ if (str.startsWith("./"))
+ return str.slice(2);
+ return str;
+}
+function dirpathparts(str) {
+ const parts = str.split(/[\/\\]/g);
+ return parts.slice(0, parts.length - 1);
+}
+function join(...parts) {
+ return parts.map(trimEndSlash).map(trimStartDot).join("/");
+}
+function groupBy(elements, keyGetter) {
+ const map = /* @__PURE__ */ new Map();
+ for (const element of elements) {
+ const key = keyGetter(element);
+ if (map.has(key)) {
+ const group = map.get(key);
+ group.push(element);
+ } else {
+ map.set(key, [element]);
+ }
+ }
+ return map;
+}
+
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+/**
+ * Creates a JSON scanner on the given text.
+ * If ignoreTrivia is set, whitespaces or comments are ignored.
+ */
+function createScanner(text, ignoreTrivia = false) {
+ const len = text.length;
+ let pos = 0, value = '', tokenOffset = 0, token = 16 /* SyntaxKind.Unknown */, lineNumber = 0, lineStartOffset = 0, tokenLineStartOffset = 0, prevTokenLineStartOffset = 0, scanError = 0 /* ScanError.None */;
+ function scanHexDigits(count, exact) {
+ let digits = 0;
+ let value = 0;
+ while (digits < count || !exact) {
+ let ch = text.charCodeAt(pos);
+ if (ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */) {
+ value = value * 16 + ch - 48 /* CharacterCodes._0 */;
+ }
+ else if (ch >= 65 /* CharacterCodes.A */ && ch <= 70 /* CharacterCodes.F */) {
+ value = value * 16 + ch - 65 /* CharacterCodes.A */ + 10;
+ }
+ else if (ch >= 97 /* CharacterCodes.a */ && ch <= 102 /* CharacterCodes.f */) {
+ value = value * 16 + ch - 97 /* CharacterCodes.a */ + 10;
+ }
+ else {
+ break;
+ }
+ pos++;
+ digits++;
+ }
+ if (digits < count) {
+ value = -1;
+ }
+ return value;
+ }
+ function setPosition(newPosition) {
+ pos = newPosition;
+ value = '';
+ tokenOffset = 0;
+ token = 16 /* SyntaxKind.Unknown */;
+ scanError = 0 /* ScanError.None */;
+ }
+ function scanNumber() {
+ let start = pos;
+ if (text.charCodeAt(pos) === 48 /* CharacterCodes._0 */) {
+ pos++;
+ }
+ else {
+ pos++;
+ while (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ }
+ }
+ if (pos < text.length && text.charCodeAt(pos) === 46 /* CharacterCodes.dot */) {
+ pos++;
+ if (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ while (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ }
+ }
+ else {
+ scanError = 3 /* ScanError.UnexpectedEndOfNumber */;
+ return text.substring(start, pos);
+ }
+ }
+ let end = pos;
+ if (pos < text.length && (text.charCodeAt(pos) === 69 /* CharacterCodes.E */ || text.charCodeAt(pos) === 101 /* CharacterCodes.e */)) {
+ pos++;
+ if (pos < text.length && text.charCodeAt(pos) === 43 /* CharacterCodes.plus */ || text.charCodeAt(pos) === 45 /* CharacterCodes.minus */) {
+ pos++;
+ }
+ if (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ while (pos < text.length && isDigit(text.charCodeAt(pos))) {
+ pos++;
+ }
+ end = pos;
+ }
+ else {
+ scanError = 3 /* ScanError.UnexpectedEndOfNumber */;
+ }
+ }
+ return text.substring(start, end);
+ }
+ function scanString() {
+ let result = '', start = pos;
+ while (true) {
+ if (pos >= len) {
+ result += text.substring(start, pos);
+ scanError = 2 /* ScanError.UnexpectedEndOfString */;
+ break;
+ }
+ const ch = text.charCodeAt(pos);
+ if (ch === 34 /* CharacterCodes.doubleQuote */) {
+ result += text.substring(start, pos);
+ pos++;
+ break;
+ }
+ if (ch === 92 /* CharacterCodes.backslash */) {
+ result += text.substring(start, pos);
+ pos++;
+ if (pos >= len) {
+ scanError = 2 /* ScanError.UnexpectedEndOfString */;
+ break;
+ }
+ const ch2 = text.charCodeAt(pos++);
+ switch (ch2) {
+ case 34 /* CharacterCodes.doubleQuote */:
+ result += '\"';
+ break;
+ case 92 /* CharacterCodes.backslash */:
+ result += '\\';
+ break;
+ case 47 /* CharacterCodes.slash */:
+ result += '/';
+ break;
+ case 98 /* CharacterCodes.b */:
+ result += '\b';
+ break;
+ case 102 /* CharacterCodes.f */:
+ result += '\f';
+ break;
+ case 110 /* CharacterCodes.n */:
+ result += '\n';
+ break;
+ case 114 /* CharacterCodes.r */:
+ result += '\r';
+ break;
+ case 116 /* CharacterCodes.t */:
+ result += '\t';
+ break;
+ case 117 /* CharacterCodes.u */:
+ const ch3 = scanHexDigits(4, true);
+ if (ch3 >= 0) {
+ result += String.fromCharCode(ch3);
+ }
+ else {
+ scanError = 4 /* ScanError.InvalidUnicode */;
+ }
+ break;
+ default:
+ scanError = 5 /* ScanError.InvalidEscapeCharacter */;
+ }
+ start = pos;
+ continue;
+ }
+ if (ch >= 0 && ch <= 0x1f) {
+ if (isLineBreak(ch)) {
+ result += text.substring(start, pos);
+ scanError = 2 /* ScanError.UnexpectedEndOfString */;
+ break;
+ }
+ else {
+ scanError = 6 /* ScanError.InvalidCharacter */;
+ // mark as error but continue with string
+ }
+ }
+ pos++;
+ }
+ return result;
+ }
+ function scanNext() {
+ value = '';
+ scanError = 0 /* ScanError.None */;
+ tokenOffset = pos;
+ lineStartOffset = lineNumber;
+ prevTokenLineStartOffset = tokenLineStartOffset;
+ if (pos >= len) {
+ // at the end
+ tokenOffset = len;
+ return token = 17 /* SyntaxKind.EOF */;
+ }
+ let code = text.charCodeAt(pos);
+ // trivia: whitespace
+ if (isWhiteSpace(code)) {
+ do {
+ pos++;
+ value += String.fromCharCode(code);
+ code = text.charCodeAt(pos);
+ } while (isWhiteSpace(code));
+ return token = 15 /* SyntaxKind.Trivia */;
+ }
+ // trivia: newlines
+ if (isLineBreak(code)) {
+ pos++;
+ value += String.fromCharCode(code);
+ if (code === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {
+ pos++;
+ value += '\n';
+ }
+ lineNumber++;
+ tokenLineStartOffset = pos;
+ return token = 14 /* SyntaxKind.LineBreakTrivia */;
+ }
+ switch (code) {
+ // tokens: []{}:,
+ case 123 /* CharacterCodes.openBrace */:
+ pos++;
+ return token = 1 /* SyntaxKind.OpenBraceToken */;
+ case 125 /* CharacterCodes.closeBrace */:
+ pos++;
+ return token = 2 /* SyntaxKind.CloseBraceToken */;
+ case 91 /* CharacterCodes.openBracket */:
+ pos++;
+ return token = 3 /* SyntaxKind.OpenBracketToken */;
+ case 93 /* CharacterCodes.closeBracket */:
+ pos++;
+ return token = 4 /* SyntaxKind.CloseBracketToken */;
+ case 58 /* CharacterCodes.colon */:
+ pos++;
+ return token = 6 /* SyntaxKind.ColonToken */;
+ case 44 /* CharacterCodes.comma */:
+ pos++;
+ return token = 5 /* SyntaxKind.CommaToken */;
+ // strings
+ case 34 /* CharacterCodes.doubleQuote */:
+ pos++;
+ value = scanString();
+ return token = 10 /* SyntaxKind.StringLiteral */;
+ // comments
+ case 47 /* CharacterCodes.slash */:
+ const start = pos - 1;
+ // Single-line comment
+ if (text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {
+ pos += 2;
+ while (pos < len) {
+ if (isLineBreak(text.charCodeAt(pos))) {
+ break;
+ }
+ pos++;
+ }
+ value = text.substring(start, pos);
+ return token = 12 /* SyntaxKind.LineCommentTrivia */;
+ }
+ // Multi-line comment
+ if (text.charCodeAt(pos + 1) === 42 /* CharacterCodes.asterisk */) {
+ pos += 2;
+ const safeLength = len - 1; // For lookahead.
+ let commentClosed = false;
+ while (pos < safeLength) {
+ const ch = text.charCodeAt(pos);
+ if (ch === 42 /* CharacterCodes.asterisk */ && text.charCodeAt(pos + 1) === 47 /* CharacterCodes.slash */) {
+ pos += 2;
+ commentClosed = true;
+ break;
+ }
+ pos++;
+ if (isLineBreak(ch)) {
+ if (ch === 13 /* CharacterCodes.carriageReturn */ && text.charCodeAt(pos) === 10 /* CharacterCodes.lineFeed */) {
+ pos++;
+ }
+ lineNumber++;
+ tokenLineStartOffset = pos;
+ }
+ }
+ if (!commentClosed) {
+ pos++;
+ scanError = 1 /* ScanError.UnexpectedEndOfComment */;
+ }
+ value = text.substring(start, pos);
+ return token = 13 /* SyntaxKind.BlockCommentTrivia */;
+ }
+ // just a single slash
+ value += String.fromCharCode(code);
+ pos++;
+ return token = 16 /* SyntaxKind.Unknown */;
+ // numbers
+ case 45 /* CharacterCodes.minus */:
+ value += String.fromCharCode(code);
+ pos++;
+ if (pos === len || !isDigit(text.charCodeAt(pos))) {
+ return token = 16 /* SyntaxKind.Unknown */;
+ }
+ // found a minus, followed by a number so
+ // we fall through to proceed with scanning
+ // numbers
+ case 48 /* CharacterCodes._0 */:
+ case 49 /* CharacterCodes._1 */:
+ case 50 /* CharacterCodes._2 */:
+ case 51 /* CharacterCodes._3 */:
+ case 52 /* CharacterCodes._4 */:
+ case 53 /* CharacterCodes._5 */:
+ case 54 /* CharacterCodes._6 */:
+ case 55 /* CharacterCodes._7 */:
+ case 56 /* CharacterCodes._8 */:
+ case 57 /* CharacterCodes._9 */:
+ value += scanNumber();
+ return token = 11 /* SyntaxKind.NumericLiteral */;
+ // literals and unknown symbols
+ default:
+ // is a literal? Read the full word.
+ while (pos < len && isUnknownContentCharacter(code)) {
+ pos++;
+ code = text.charCodeAt(pos);
+ }
+ if (tokenOffset !== pos) {
+ value = text.substring(tokenOffset, pos);
+ // keywords: true, false, null
+ switch (value) {
+ case 'true': return token = 8 /* SyntaxKind.TrueKeyword */;
+ case 'false': return token = 9 /* SyntaxKind.FalseKeyword */;
+ case 'null': return token = 7 /* SyntaxKind.NullKeyword */;
+ }
+ return token = 16 /* SyntaxKind.Unknown */;
+ }
+ // some
+ value += String.fromCharCode(code);
+ pos++;
+ return token = 16 /* SyntaxKind.Unknown */;
+ }
+ }
+ function isUnknownContentCharacter(code) {
+ if (isWhiteSpace(code) || isLineBreak(code)) {
+ return false;
+ }
+ switch (code) {
+ case 125 /* CharacterCodes.closeBrace */:
+ case 93 /* CharacterCodes.closeBracket */:
+ case 123 /* CharacterCodes.openBrace */:
+ case 91 /* CharacterCodes.openBracket */:
+ case 34 /* CharacterCodes.doubleQuote */:
+ case 58 /* CharacterCodes.colon */:
+ case 44 /* CharacterCodes.comma */:
+ case 47 /* CharacterCodes.slash */:
+ return false;
+ }
+ return true;
+ }
+ function scanNextNonTrivia() {
+ let result;
+ do {
+ result = scanNext();
+ } while (result >= 12 /* SyntaxKind.LineCommentTrivia */ && result <= 15 /* SyntaxKind.Trivia */);
+ return result;
+ }
+ return {
+ setPosition: setPosition,
+ getPosition: () => pos,
+ scan: ignoreTrivia ? scanNextNonTrivia : scanNext,
+ getToken: () => token,
+ getTokenValue: () => value,
+ getTokenOffset: () => tokenOffset,
+ getTokenLength: () => pos - tokenOffset,
+ getTokenStartLine: () => lineStartOffset,
+ getTokenStartCharacter: () => tokenOffset - prevTokenLineStartOffset,
+ getTokenError: () => scanError,
+ };
+}
+function isWhiteSpace(ch) {
+ return ch === 32 /* CharacterCodes.space */ || ch === 9 /* CharacterCodes.tab */;
+}
+function isLineBreak(ch) {
+ return ch === 10 /* CharacterCodes.lineFeed */ || ch === 13 /* CharacterCodes.carriageReturn */;
+}
+function isDigit(ch) {
+ return ch >= 48 /* CharacterCodes._0 */ && ch <= 57 /* CharacterCodes._9 */;
+}
+var CharacterCodes;
+(function (CharacterCodes) {
+ CharacterCodes[CharacterCodes["lineFeed"] = 10] = "lineFeed";
+ CharacterCodes[CharacterCodes["carriageReturn"] = 13] = "carriageReturn";
+ CharacterCodes[CharacterCodes["space"] = 32] = "space";
+ CharacterCodes[CharacterCodes["_0"] = 48] = "_0";
+ CharacterCodes[CharacterCodes["_1"] = 49] = "_1";
+ CharacterCodes[CharacterCodes["_2"] = 50] = "_2";
+ CharacterCodes[CharacterCodes["_3"] = 51] = "_3";
+ CharacterCodes[CharacterCodes["_4"] = 52] = "_4";
+ CharacterCodes[CharacterCodes["_5"] = 53] = "_5";
+ CharacterCodes[CharacterCodes["_6"] = 54] = "_6";
+ CharacterCodes[CharacterCodes["_7"] = 55] = "_7";
+ CharacterCodes[CharacterCodes["_8"] = 56] = "_8";
+ CharacterCodes[CharacterCodes["_9"] = 57] = "_9";
+ CharacterCodes[CharacterCodes["a"] = 97] = "a";
+ CharacterCodes[CharacterCodes["b"] = 98] = "b";
+ CharacterCodes[CharacterCodes["c"] = 99] = "c";
+ CharacterCodes[CharacterCodes["d"] = 100] = "d";
+ CharacterCodes[CharacterCodes["e"] = 101] = "e";
+ CharacterCodes[CharacterCodes["f"] = 102] = "f";
+ CharacterCodes[CharacterCodes["g"] = 103] = "g";
+ CharacterCodes[CharacterCodes["h"] = 104] = "h";
+ CharacterCodes[CharacterCodes["i"] = 105] = "i";
+ CharacterCodes[CharacterCodes["j"] = 106] = "j";
+ CharacterCodes[CharacterCodes["k"] = 107] = "k";
+ CharacterCodes[CharacterCodes["l"] = 108] = "l";
+ CharacterCodes[CharacterCodes["m"] = 109] = "m";
+ CharacterCodes[CharacterCodes["n"] = 110] = "n";
+ CharacterCodes[CharacterCodes["o"] = 111] = "o";
+ CharacterCodes[CharacterCodes["p"] = 112] = "p";
+ CharacterCodes[CharacterCodes["q"] = 113] = "q";
+ CharacterCodes[CharacterCodes["r"] = 114] = "r";
+ CharacterCodes[CharacterCodes["s"] = 115] = "s";
+ CharacterCodes[CharacterCodes["t"] = 116] = "t";
+ CharacterCodes[CharacterCodes["u"] = 117] = "u";
+ CharacterCodes[CharacterCodes["v"] = 118] = "v";
+ CharacterCodes[CharacterCodes["w"] = 119] = "w";
+ CharacterCodes[CharacterCodes["x"] = 120] = "x";
+ CharacterCodes[CharacterCodes["y"] = 121] = "y";
+ CharacterCodes[CharacterCodes["z"] = 122] = "z";
+ CharacterCodes[CharacterCodes["A"] = 65] = "A";
+ CharacterCodes[CharacterCodes["B"] = 66] = "B";
+ CharacterCodes[CharacterCodes["C"] = 67] = "C";
+ CharacterCodes[CharacterCodes["D"] = 68] = "D";
+ CharacterCodes[CharacterCodes["E"] = 69] = "E";
+ CharacterCodes[CharacterCodes["F"] = 70] = "F";
+ CharacterCodes[CharacterCodes["G"] = 71] = "G";
+ CharacterCodes[CharacterCodes["H"] = 72] = "H";
+ CharacterCodes[CharacterCodes["I"] = 73] = "I";
+ CharacterCodes[CharacterCodes["J"] = 74] = "J";
+ CharacterCodes[CharacterCodes["K"] = 75] = "K";
+ CharacterCodes[CharacterCodes["L"] = 76] = "L";
+ CharacterCodes[CharacterCodes["M"] = 77] = "M";
+ CharacterCodes[CharacterCodes["N"] = 78] = "N";
+ CharacterCodes[CharacterCodes["O"] = 79] = "O";
+ CharacterCodes[CharacterCodes["P"] = 80] = "P";
+ CharacterCodes[CharacterCodes["Q"] = 81] = "Q";
+ CharacterCodes[CharacterCodes["R"] = 82] = "R";
+ CharacterCodes[CharacterCodes["S"] = 83] = "S";
+ CharacterCodes[CharacterCodes["T"] = 84] = "T";
+ CharacterCodes[CharacterCodes["U"] = 85] = "U";
+ CharacterCodes[CharacterCodes["V"] = 86] = "V";
+ CharacterCodes[CharacterCodes["W"] = 87] = "W";
+ CharacterCodes[CharacterCodes["X"] = 88] = "X";
+ CharacterCodes[CharacterCodes["Y"] = 89] = "Y";
+ CharacterCodes[CharacterCodes["Z"] = 90] = "Z";
+ CharacterCodes[CharacterCodes["asterisk"] = 42] = "asterisk";
+ CharacterCodes[CharacterCodes["backslash"] = 92] = "backslash";
+ CharacterCodes[CharacterCodes["closeBrace"] = 125] = "closeBrace";
+ CharacterCodes[CharacterCodes["closeBracket"] = 93] = "closeBracket";
+ CharacterCodes[CharacterCodes["colon"] = 58] = "colon";
+ CharacterCodes[CharacterCodes["comma"] = 44] = "comma";
+ CharacterCodes[CharacterCodes["dot"] = 46] = "dot";
+ CharacterCodes[CharacterCodes["doubleQuote"] = 34] = "doubleQuote";
+ CharacterCodes[CharacterCodes["minus"] = 45] = "minus";
+ CharacterCodes[CharacterCodes["openBrace"] = 123] = "openBrace";
+ CharacterCodes[CharacterCodes["openBracket"] = 91] = "openBracket";
+ CharacterCodes[CharacterCodes["plus"] = 43] = "plus";
+ CharacterCodes[CharacterCodes["slash"] = 47] = "slash";
+ CharacterCodes[CharacterCodes["formFeed"] = 12] = "formFeed";
+ CharacterCodes[CharacterCodes["tab"] = 9] = "tab";
+})(CharacterCodes || (CharacterCodes = {}));
+
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+var ParseOptions;
+(function (ParseOptions) {
+ ParseOptions.DEFAULT = {
+ allowTrailingComma: false
+ };
+})(ParseOptions || (ParseOptions = {}));
+/**
+ * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ * Therefore always check the errors list to find out if the input was valid.
+ */
+function parse$1(text, errors = [], options = ParseOptions.DEFAULT) {
+ let currentProperty = null;
+ let currentParent = [];
+ const previousParents = [];
+ function onValue(value) {
+ if (Array.isArray(currentParent)) {
+ currentParent.push(value);
+ }
+ else if (currentProperty !== null) {
+ currentParent[currentProperty] = value;
+ }
+ }
+ const visitor = {
+ onObjectBegin: () => {
+ const object = {};
+ onValue(object);
+ previousParents.push(currentParent);
+ currentParent = object;
+ currentProperty = null;
+ },
+ onObjectProperty: (name) => {
+ currentProperty = name;
+ },
+ onObjectEnd: () => {
+ currentParent = previousParents.pop();
+ },
+ onArrayBegin: () => {
+ const array = [];
+ onValue(array);
+ previousParents.push(currentParent);
+ currentParent = array;
+ currentProperty = null;
+ },
+ onArrayEnd: () => {
+ currentParent = previousParents.pop();
+ },
+ onLiteralValue: onValue,
+ onError: (error, offset, length) => {
+ errors.push({ error, offset, length });
+ }
+ };
+ visit(text, visitor, options);
+ return currentParent[0];
+}
+/**
+ * Parses the given text and invokes the visitor functions for each object, array and literal reached.
+ */
+function visit(text, visitor, options = ParseOptions.DEFAULT) {
+ const _scanner = createScanner(text, false);
+ // Important: Only pass copies of this to visitor functions to prevent accidental modification, and
+ // to not affect visitor functions which stored a reference to a previous JSONPath
+ const _jsonPath = [];
+ function toNoArgVisit(visitFunction) {
+ return visitFunction ? () => visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;
+ }
+ function toNoArgVisitWithPath(visitFunction) {
+ return visitFunction ? () => visitFunction(_scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;
+ }
+ function toOneArgVisit(visitFunction) {
+ return visitFunction ? (arg) => visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter()) : () => true;
+ }
+ function toOneArgVisitWithPath(visitFunction) {
+ return visitFunction ? (arg) => visitFunction(arg, _scanner.getTokenOffset(), _scanner.getTokenLength(), _scanner.getTokenStartLine(), _scanner.getTokenStartCharacter(), () => _jsonPath.slice()) : () => true;
+ }
+ const onObjectBegin = toNoArgVisitWithPath(visitor.onObjectBegin), onObjectProperty = toOneArgVisitWithPath(visitor.onObjectProperty), onObjectEnd = toNoArgVisit(visitor.onObjectEnd), onArrayBegin = toNoArgVisitWithPath(visitor.onArrayBegin), onArrayEnd = toNoArgVisit(visitor.onArrayEnd), onLiteralValue = toOneArgVisitWithPath(visitor.onLiteralValue), onSeparator = toOneArgVisit(visitor.onSeparator), onComment = toNoArgVisit(visitor.onComment), onError = toOneArgVisit(visitor.onError);
+ const disallowComments = options && options.disallowComments;
+ const allowTrailingComma = options && options.allowTrailingComma;
+ function scanNext() {
+ while (true) {
+ const token = _scanner.scan();
+ switch (_scanner.getTokenError()) {
+ case 4 /* ScanError.InvalidUnicode */:
+ handleError(14 /* ParseErrorCode.InvalidUnicode */);
+ break;
+ case 5 /* ScanError.InvalidEscapeCharacter */:
+ handleError(15 /* ParseErrorCode.InvalidEscapeCharacter */);
+ break;
+ case 3 /* ScanError.UnexpectedEndOfNumber */:
+ handleError(13 /* ParseErrorCode.UnexpectedEndOfNumber */);
+ break;
+ case 1 /* ScanError.UnexpectedEndOfComment */:
+ if (!disallowComments) {
+ handleError(11 /* ParseErrorCode.UnexpectedEndOfComment */);
+ }
+ break;
+ case 2 /* ScanError.UnexpectedEndOfString */:
+ handleError(12 /* ParseErrorCode.UnexpectedEndOfString */);
+ break;
+ case 6 /* ScanError.InvalidCharacter */:
+ handleError(16 /* ParseErrorCode.InvalidCharacter */);
+ break;
+ }
+ switch (token) {
+ case 12 /* SyntaxKind.LineCommentTrivia */:
+ case 13 /* SyntaxKind.BlockCommentTrivia */:
+ if (disallowComments) {
+ handleError(10 /* ParseErrorCode.InvalidCommentToken */);
+ }
+ else {
+ onComment();
+ }
+ break;
+ case 16 /* SyntaxKind.Unknown */:
+ handleError(1 /* ParseErrorCode.InvalidSymbol */);
+ break;
+ case 15 /* SyntaxKind.Trivia */:
+ case 14 /* SyntaxKind.LineBreakTrivia */:
+ break;
+ default:
+ return token;
+ }
+ }
+ }
+ function handleError(error, skipUntilAfter = [], skipUntil = []) {
+ onError(error);
+ if (skipUntilAfter.length + skipUntil.length > 0) {
+ let token = _scanner.getToken();
+ while (token !== 17 /* SyntaxKind.EOF */) {
+ if (skipUntilAfter.indexOf(token) !== -1) {
+ scanNext();
+ break;
+ }
+ else if (skipUntil.indexOf(token) !== -1) {
+ break;
+ }
+ token = scanNext();
+ }
+ }
+ }
+ function parseString(isValue) {
+ const value = _scanner.getTokenValue();
+ if (isValue) {
+ onLiteralValue(value);
+ }
+ else {
+ onObjectProperty(value);
+ // add property name afterwards
+ _jsonPath.push(value);
+ }
+ scanNext();
+ return true;
+ }
+ function parseLiteral() {
+ switch (_scanner.getToken()) {
+ case 11 /* SyntaxKind.NumericLiteral */:
+ const tokenValue = _scanner.getTokenValue();
+ let value = Number(tokenValue);
+ if (isNaN(value)) {
+ handleError(2 /* ParseErrorCode.InvalidNumberFormat */);
+ value = 0;
+ }
+ onLiteralValue(value);
+ break;
+ case 7 /* SyntaxKind.NullKeyword */:
+ onLiteralValue(null);
+ break;
+ case 8 /* SyntaxKind.TrueKeyword */:
+ onLiteralValue(true);
+ break;
+ case 9 /* SyntaxKind.FalseKeyword */:
+ onLiteralValue(false);
+ break;
+ default:
+ return false;
+ }
+ scanNext();
+ return true;
+ }
+ function parseProperty() {
+ if (_scanner.getToken() !== 10 /* SyntaxKind.StringLiteral */) {
+ handleError(3 /* ParseErrorCode.PropertyNameExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
+ return false;
+ }
+ parseString(false);
+ if (_scanner.getToken() === 6 /* SyntaxKind.ColonToken */) {
+ onSeparator(':');
+ scanNext(); // consume colon
+ if (!parseValue()) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
+ }
+ }
+ else {
+ handleError(5 /* ParseErrorCode.ColonExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
+ }
+ _jsonPath.pop(); // remove processed property name
+ return true;
+ }
+ function parseObject() {
+ onObjectBegin();
+ scanNext(); // consume open brace
+ let needsComma = false;
+ while (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {
+ if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {
+ if (!needsComma) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
+ }
+ onSeparator(',');
+ scanNext(); // consume comma
+ if (_scanner.getToken() === 2 /* SyntaxKind.CloseBraceToken */ && allowTrailingComma) {
+ break;
+ }
+ }
+ else if (needsComma) {
+ handleError(6 /* ParseErrorCode.CommaExpected */, [], []);
+ }
+ if (!parseProperty()) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], [2 /* SyntaxKind.CloseBraceToken */, 5 /* SyntaxKind.CommaToken */]);
+ }
+ needsComma = true;
+ }
+ onObjectEnd();
+ if (_scanner.getToken() !== 2 /* SyntaxKind.CloseBraceToken */) {
+ handleError(7 /* ParseErrorCode.CloseBraceExpected */, [2 /* SyntaxKind.CloseBraceToken */], []);
+ }
+ else {
+ scanNext(); // consume close brace
+ }
+ return true;
+ }
+ function parseArray() {
+ onArrayBegin();
+ scanNext(); // consume open bracket
+ let isFirstElement = true;
+ let needsComma = false;
+ while (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */ && _scanner.getToken() !== 17 /* SyntaxKind.EOF */) {
+ if (_scanner.getToken() === 5 /* SyntaxKind.CommaToken */) {
+ if (!needsComma) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
+ }
+ onSeparator(',');
+ scanNext(); // consume comma
+ if (_scanner.getToken() === 4 /* SyntaxKind.CloseBracketToken */ && allowTrailingComma) {
+ break;
+ }
+ }
+ else if (needsComma) {
+ handleError(6 /* ParseErrorCode.CommaExpected */, [], []);
+ }
+ if (isFirstElement) {
+ _jsonPath.push(0);
+ isFirstElement = false;
+ }
+ else {
+ _jsonPath[_jsonPath.length - 1]++;
+ }
+ if (!parseValue()) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], [4 /* SyntaxKind.CloseBracketToken */, 5 /* SyntaxKind.CommaToken */]);
+ }
+ needsComma = true;
+ }
+ onArrayEnd();
+ if (!isFirstElement) {
+ _jsonPath.pop(); // remove array index
+ }
+ if (_scanner.getToken() !== 4 /* SyntaxKind.CloseBracketToken */) {
+ handleError(8 /* ParseErrorCode.CloseBracketExpected */, [4 /* SyntaxKind.CloseBracketToken */], []);
+ }
+ else {
+ scanNext(); // consume close bracket
+ }
+ return true;
+ }
+ function parseValue() {
+ switch (_scanner.getToken()) {
+ case 3 /* SyntaxKind.OpenBracketToken */:
+ return parseArray();
+ case 1 /* SyntaxKind.OpenBraceToken */:
+ return parseObject();
+ case 10 /* SyntaxKind.StringLiteral */:
+ return parseString(true);
+ default:
+ return parseLiteral();
+ }
+ }
+ scanNext();
+ if (_scanner.getToken() === 17 /* SyntaxKind.EOF */) {
+ if (options.allowEmptyContent) {
+ return true;
+ }
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
+ return false;
+ }
+ if (!parseValue()) {
+ handleError(4 /* ParseErrorCode.ValueExpected */, [], []);
+ return false;
+ }
+ if (_scanner.getToken() !== 17 /* SyntaxKind.EOF */) {
+ handleError(9 /* ParseErrorCode.EndOfFileExpected */, [], []);
+ }
+ return true;
+}
+
+/*---------------------------------------------------------------------------------------------
+ * Copyright (c) Microsoft Corporation. All rights reserved.
+ * Licensed under the MIT License. See License.txt in the project root for license information.
+ *--------------------------------------------------------------------------------------------*/
+var ScanError;
+(function (ScanError) {
+ ScanError[ScanError["None"] = 0] = "None";
+ ScanError[ScanError["UnexpectedEndOfComment"] = 1] = "UnexpectedEndOfComment";
+ ScanError[ScanError["UnexpectedEndOfString"] = 2] = "UnexpectedEndOfString";
+ ScanError[ScanError["UnexpectedEndOfNumber"] = 3] = "UnexpectedEndOfNumber";
+ ScanError[ScanError["InvalidUnicode"] = 4] = "InvalidUnicode";
+ ScanError[ScanError["InvalidEscapeCharacter"] = 5] = "InvalidEscapeCharacter";
+ ScanError[ScanError["InvalidCharacter"] = 6] = "InvalidCharacter";
+})(ScanError || (ScanError = {}));
+var SyntaxKind;
+(function (SyntaxKind) {
+ SyntaxKind[SyntaxKind["OpenBraceToken"] = 1] = "OpenBraceToken";
+ SyntaxKind[SyntaxKind["CloseBraceToken"] = 2] = "CloseBraceToken";
+ SyntaxKind[SyntaxKind["OpenBracketToken"] = 3] = "OpenBracketToken";
+ SyntaxKind[SyntaxKind["CloseBracketToken"] = 4] = "CloseBracketToken";
+ SyntaxKind[SyntaxKind["CommaToken"] = 5] = "CommaToken";
+ SyntaxKind[SyntaxKind["ColonToken"] = 6] = "ColonToken";
+ SyntaxKind[SyntaxKind["NullKeyword"] = 7] = "NullKeyword";
+ SyntaxKind[SyntaxKind["TrueKeyword"] = 8] = "TrueKeyword";
+ SyntaxKind[SyntaxKind["FalseKeyword"] = 9] = "FalseKeyword";
+ SyntaxKind[SyntaxKind["StringLiteral"] = 10] = "StringLiteral";
+ SyntaxKind[SyntaxKind["NumericLiteral"] = 11] = "NumericLiteral";
+ SyntaxKind[SyntaxKind["LineCommentTrivia"] = 12] = "LineCommentTrivia";
+ SyntaxKind[SyntaxKind["BlockCommentTrivia"] = 13] = "BlockCommentTrivia";
+ SyntaxKind[SyntaxKind["LineBreakTrivia"] = 14] = "LineBreakTrivia";
+ SyntaxKind[SyntaxKind["Trivia"] = 15] = "Trivia";
+ SyntaxKind[SyntaxKind["Unknown"] = 16] = "Unknown";
+ SyntaxKind[SyntaxKind["EOF"] = 17] = "EOF";
+})(SyntaxKind || (SyntaxKind = {}));
+/**
+ * Parses the given text and returns the object the JSON content represents. On invalid input, the parser tries to be as fault tolerant as possible, but still return a result.
+ * Therefore, always check the errors list to find out if the input was valid.
+ */
+const parse = parse$1;
+var ParseErrorCode;
+(function (ParseErrorCode) {
+ ParseErrorCode[ParseErrorCode["InvalidSymbol"] = 1] = "InvalidSymbol";
+ ParseErrorCode[ParseErrorCode["InvalidNumberFormat"] = 2] = "InvalidNumberFormat";
+ ParseErrorCode[ParseErrorCode["PropertyNameExpected"] = 3] = "PropertyNameExpected";
+ ParseErrorCode[ParseErrorCode["ValueExpected"] = 4] = "ValueExpected";
+ ParseErrorCode[ParseErrorCode["ColonExpected"] = 5] = "ColonExpected";
+ ParseErrorCode[ParseErrorCode["CommaExpected"] = 6] = "CommaExpected";
+ ParseErrorCode[ParseErrorCode["CloseBraceExpected"] = 7] = "CloseBraceExpected";
+ ParseErrorCode[ParseErrorCode["CloseBracketExpected"] = 8] = "CloseBracketExpected";
+ ParseErrorCode[ParseErrorCode["EndOfFileExpected"] = 9] = "EndOfFileExpected";
+ ParseErrorCode[ParseErrorCode["InvalidCommentToken"] = 10] = "InvalidCommentToken";
+ ParseErrorCode[ParseErrorCode["UnexpectedEndOfComment"] = 11] = "UnexpectedEndOfComment";
+ ParseErrorCode[ParseErrorCode["UnexpectedEndOfString"] = 12] = "UnexpectedEndOfString";
+ ParseErrorCode[ParseErrorCode["UnexpectedEndOfNumber"] = 13] = "UnexpectedEndOfNumber";
+ ParseErrorCode[ParseErrorCode["InvalidUnicode"] = 14] = "InvalidUnicode";
+ ParseErrorCode[ParseErrorCode["InvalidEscapeCharacter"] = 15] = "InvalidEscapeCharacter";
+ ParseErrorCode[ParseErrorCode["InvalidCharacter"] = 16] = "InvalidCharacter";
+})(ParseErrorCode || (ParseErrorCode = {}));
+
+const isWebWorker = typeof self !== "undefined" && typeof self.WorkerGlobalScope !== "undefined";
+const isNode = "process" in globalThis && typeof process !== "undefined" && typeof process.release !== "undefined" && process.release.name === "node";
+const isBrowser = isWebWorker || !isNode;
+let CDN_ROOT = "";
+let WASM = "";
+const WASM_PATH = "dist/";
+function setCDN(root) {
+ CDN_ROOT = root.endsWith("/") ? root : root + "/";
+}
+function setWasm(data) {
+ WASM = data;
+}
+let _onigurumaPromise = null;
+async function getOniguruma(wasmPath) {
+ if (!_onigurumaPromise) {
+ let loader;
+ if (isBrowser) {
+ if (typeof WASM === "string") {
+ loader = vscodeOniguruma.loadWASM({
+ data: await fetch(_resolvePath(join(...dirpathparts(wasmPath), "onig.wasm")))
+ });
+ } else {
+ loader = vscodeOniguruma.loadWASM({
+ data: WASM
+ });
+ }
+ } else {
+ const path = require("path");
+ const wasmPath2 = path.join(require.resolve("vscode-oniguruma"), "../onig.wasm");
+ const fs = require("fs");
+ const wasmBin = fs.readFileSync(wasmPath2).buffer;
+ loader = vscodeOniguruma.loadWASM(wasmBin);
+ }
+ _onigurumaPromise = loader.then(() => {
+ return {
+ createOnigScanner(patterns) {
+ return vscodeOniguruma.createOnigScanner(patterns);
+ },
+ createOnigString(s) {
+ return vscodeOniguruma.createOnigString(s);
+ }
+ };
+ });
+ }
+ return _onigurumaPromise;
+}
+function _resolvePath(filepath) {
+ if (isBrowser) {
+ return `${CDN_ROOT}${filepath}`;
+ } else {
+ const path = require("path");
+ if (path.isAbsolute(filepath)) {
+ return filepath;
+ } else {
+ return path.resolve(__dirname, "..", filepath);
+ }
+ }
+}
+async function _fetchAssets(filepath) {
+ const path = _resolvePath(filepath);
+ if (isBrowser) {
+ return await fetch(path).then((r) => r.text());
+ } else {
+ const fs = require("fs");
+ return await fs.promises.readFile(path, "utf-8");
+ }
+}
+async function _fetchJSONAssets(filepath) {
+ const errors = [];
+ const assetString = await _fetchAssets(filepath);
+ let rawAsset;
+ try {
+ rawAsset = JSON.parse(assetString);
+ } catch (e) {
+ rawAsset = parse(assetString, errors, {
+ allowTrailingComma: true
+ });
+ if (errors.length) {
+ throw errors[0];
+ }
+ }
+ return rawAsset;
+}
+async function fetchTheme(themePath) {
+ let theme = await _fetchJSONAssets(themePath);
+ const shikiTheme = toShikiTheme(theme);
+ if (shikiTheme.include) {
+ const includedTheme = await fetchTheme(join(...dirpathparts(themePath), shikiTheme.include));
+ if (includedTheme.settings) {
+ shikiTheme.settings = includedTheme.settings.concat(shikiTheme.settings);
+ }
+ if (includedTheme.bg && !shikiTheme.bg) {
+ shikiTheme.bg = includedTheme.bg;
+ }
+ if (includedTheme.colors) {
+ shikiTheme.colors = { ...includedTheme.colors, ...shikiTheme.colors };
+ }
+ delete shikiTheme.include;
+ }
+ return shikiTheme;
+}
+async function fetchGrammar(filepath) {
+ return await _fetchJSONAssets(filepath);
+}
+function repairTheme(theme) {
+ if (!theme.settings)
+ theme.settings = [];
+ if (theme.settings[0] && theme.settings[0].settings && !theme.settings[0].scope) {
+ return;
+ }
+ theme.settings.unshift({
+ settings: {
+ foreground: theme.fg,
+ background: theme.bg
+ }
+ });
+}
+function toShikiTheme(rawTheme) {
+ const type = rawTheme.type || "dark";
+ const shikiTheme = {
+ name: rawTheme.name,
+ type,
+ ...rawTheme,
+ ...getThemeDefaultColors(rawTheme)
+ };
+ if (rawTheme.include) {
+ shikiTheme.include = rawTheme.include;
+ }
+ if (rawTheme.tokenColors) {
+ shikiTheme.settings = rawTheme.tokenColors;
+ delete shikiTheme.tokenColors;
+ }
+ repairTheme(shikiTheme);
+ return shikiTheme;
+}
+const VSCODE_FALLBACK_EDITOR_FG = { light: "#333333", dark: "#bbbbbb" };
+const VSCODE_FALLBACK_EDITOR_BG = { light: "#fffffe", dark: "#1e1e1e" };
+function getThemeDefaultColors(theme) {
+ let fg, bg;
+ let settings = theme.settings ? theme.settings : theme.tokenColors;
+ const globalSetting = settings ? settings.find((s) => {
+ return !s.name && !s.scope;
+ }) : void 0;
+ if (globalSetting?.settings?.foreground) {
+ fg = globalSetting.settings.foreground;
+ }
+ if (globalSetting?.settings?.background) {
+ bg = globalSetting.settings.background;
+ }
+ if (!fg && theme?.colors?.["editor.foreground"]) {
+ fg = theme.colors["editor.foreground"];
+ }
+ if (!bg && theme?.colors?.["editor.background"]) {
+ bg = theme.colors["editor.background"];
+ }
+ if (!fg) {
+ fg = theme.type === "light" ? VSCODE_FALLBACK_EDITOR_FG.light : VSCODE_FALLBACK_EDITOR_FG.dark;
+ }
+ if (!bg) {
+ bg = theme.type === "light" ? VSCODE_FALLBACK_EDITOR_BG.light : VSCODE_FALLBACK_EDITOR_BG.dark;
+ }
+ return {
+ fg,
+ bg
+ };
+}
+
+class Resolver {
+ constructor(onigLibPromise, onigLibName) {
+ this.languagesPath = "languages/";
+ this.languageMap = {};
+ this.scopeToLangMap = {};
+ this._onigLibPromise = onigLibPromise;
+ this._onigLibName = onigLibName;
+ }
+ get onigLib() {
+ return this._onigLibPromise;
+ }
+ getOnigLibName() {
+ return this._onigLibName;
+ }
+ getLangRegistration(langIdOrAlias) {
+ return this.languageMap[langIdOrAlias];
+ }
+ async loadGrammar(scopeName) {
+ const lang = this.scopeToLangMap[scopeName];
+ if (!lang) {
+ return null;
+ }
+ if (lang.grammar) {
+ return lang.grammar;
+ }
+ const g = await fetchGrammar(
+ languages.includes(lang) ? `${this.languagesPath}${lang.path}` : lang.path
+ );
+ lang.grammar = g;
+ return g;
+ }
+ addLanguage(l) {
+ this.languageMap[l.id] = l;
+ if (l.aliases) {
+ l.aliases.forEach((a) => {
+ this.languageMap[a] = l;
+ });
+ }
+ this.scopeToLangMap[l.scopeName] = l;
+ }
+}
+
+function tokenizeWithTheme(theme, colorMap, fileContents, grammar, options) {
+ let lines = fileContents.split(/\r\n|\r|\n/);
+ let ruleStack = vscodeTextmate.INITIAL;
+ let actual = [];
+ let final = [];
+ for (let i = 0, len = lines.length; i < len; i++) {
+ let line = lines[i];
+ if (line === "") {
+ actual = [];
+ final.push([]);
+ continue;
+ }
+ let resultWithScopes;
+ let tokensWithScopes;
+ let tokensWithScopesIndex;
+ if (options.includeExplanation) {
+ resultWithScopes = grammar.tokenizeLine(line, ruleStack);
+ tokensWithScopes = resultWithScopes.tokens;
+ tokensWithScopesIndex = 0;
+ }
+ let result = grammar.tokenizeLine2(line, ruleStack);
+ let tokensLength = result.tokens.length / 2;
+ for (let j = 0; j < tokensLength; j++) {
+ let startIndex = result.tokens[2 * j];
+ let nextStartIndex = j + 1 < tokensLength ? result.tokens[2 * j + 2] : line.length;
+ if (startIndex === nextStartIndex) {
+ continue;
+ }
+ let metadata = result.tokens[2 * j + 1];
+ let foreground = StackElementMetadata.getForeground(metadata);
+ let foregroundColor = colorMap[foreground];
+ let fontStyle = StackElementMetadata.getFontStyle(metadata);
+ let explanation = [];
+ if (options.includeExplanation) {
+ let offset = 0;
+ while (startIndex + offset < nextStartIndex) {
+ let tokenWithScopes = tokensWithScopes[tokensWithScopesIndex];
+ let tokenWithScopesText = line.substring(
+ tokenWithScopes.startIndex,
+ tokenWithScopes.endIndex
+ );
+ offset += tokenWithScopesText.length;
+ explanation.push({
+ content: tokenWithScopesText,
+ scopes: explainThemeScopes(theme, tokenWithScopes.scopes)
+ });
+ tokensWithScopesIndex++;
+ }
+ }
+ actual.push({
+ content: line.substring(startIndex, nextStartIndex),
+ color: foregroundColor,
+ fontStyle,
+ explanation
+ });
+ }
+ final.push(actual);
+ actual = [];
+ ruleStack = result.ruleStack;
+ }
+ return final;
+}
+function explainThemeScopes(theme, scopes) {
+ let result = [];
+ for (let i = 0, len = scopes.length; i < len; i++) {
+ let parentScopes = scopes.slice(0, i);
+ let scope = scopes[i];
+ result[i] = {
+ scopeName: scope,
+ themeMatches: explainThemeScope(theme, scope, parentScopes)
+ };
+ }
+ return result;
+}
+function matchesOne(selector, scope) {
+ let selectorPrefix = selector + ".";
+ if (selector === scope || scope.substring(0, selectorPrefix.length) === selectorPrefix) {
+ return true;
+ }
+ return false;
+}
+function matches(selector, selectorParentScopes, scope, parentScopes) {
+ if (!matchesOne(selector, scope)) {
+ return false;
+ }
+ let selectorParentIndex = selectorParentScopes.length - 1;
+ let parentIndex = parentScopes.length - 1;
+ while (selectorParentIndex >= 0 && parentIndex >= 0) {
+ if (matchesOne(selectorParentScopes[selectorParentIndex], parentScopes[parentIndex])) {
+ selectorParentIndex--;
+ }
+ parentIndex--;
+ }
+ if (selectorParentIndex === -1) {
+ return true;
+ }
+ return false;
+}
+function explainThemeScope(theme, scope, parentScopes) {
+ let result = [], resultLen = 0;
+ for (let i = 0, len = theme.settings.length; i < len; i++) {
+ let setting = theme.settings[i];
+ let selectors;
+ if (typeof setting.scope === "string") {
+ selectors = setting.scope.split(/,/).map((scope2) => scope2.trim());
+ } else if (Array.isArray(setting.scope)) {
+ selectors = setting.scope;
+ } else {
+ continue;
+ }
+ for (let j = 0, lenJ = selectors.length; j < lenJ; j++) {
+ let rawSelector = selectors[j];
+ let rawSelectorPieces = rawSelector.split(/ /);
+ let selector = rawSelectorPieces[rawSelectorPieces.length - 1];
+ let selectorParentScopes = rawSelectorPieces.slice(0, rawSelectorPieces.length - 1);
+ if (matches(selector, selectorParentScopes, scope, parentScopes)) {
+ result[resultLen++] = setting;
+ j = lenJ;
+ }
+ }
+ }
+ return result;
+}
+
+// src/colors.ts
+var namedColors = [
+ "black",
+ "red",
+ "green",
+ "yellow",
+ "blue",
+ "magenta",
+ "cyan",
+ "white",
+ "brightBlack",
+ "brightRed",
+ "brightGreen",
+ "brightYellow",
+ "brightBlue",
+ "brightMagenta",
+ "brightCyan",
+ "brightWhite"
+];
+
+// src/decorations.ts
+var decorations = {
+ 1: "bold",
+ 2: "dim",
+ 3: "italic",
+ 4: "underline",
+ 7: "reverse",
+ 9: "strikethrough"
+};
+
+// src/parser.ts
+function findSequence(value, position) {
+ const nextEscape = value.indexOf("\x1B", position);
+ if (nextEscape !== -1) {
+ if (value[nextEscape + 1] === "[") {
+ const nextClose = value.indexOf("m", nextEscape);
+ return {
+ sequence: value.substring(nextEscape + 2, nextClose).split(";"),
+ startPosition: nextEscape,
+ position: nextClose + 1
+ };
+ }
+ }
+ return {
+ position: value.length
+ };
+}
+function parseColor(sequence) {
+ const colorMode = sequence.shift();
+ if (colorMode === "2") {
+ const rgb = sequence.splice(0, 3).map((x) => Number.parseInt(x));
+ if (rgb.length !== 3 || rgb.some((x) => Number.isNaN(x)))
+ return;
+ return {
+ type: "rgb",
+ rgb
+ };
+ } else if (colorMode === "5") {
+ const index = sequence.shift();
+ if (index) {
+ return { type: "table", index: Number(index) };
+ }
+ }
+}
+function parseSequence(sequence) {
+ const commands = [];
+ while (sequence.length > 0) {
+ const code = sequence.shift();
+ if (!code)
+ continue;
+ const codeInt = Number.parseInt(code);
+ if (Number.isNaN(codeInt))
+ continue;
+ if (codeInt === 0) {
+ commands.push({ type: "resetAll" });
+ } else if (codeInt <= 9) {
+ const decoration = decorations[codeInt];
+ if (decoration) {
+ commands.push({
+ type: "setDecoration",
+ value: decorations[codeInt]
+ });
+ }
+ } else if (codeInt <= 29) {
+ const decoration = decorations[codeInt - 20];
+ if (decoration) {
+ commands.push({
+ type: "resetDecoration",
+ value: decoration
+ });
+ }
+ } else if (codeInt <= 37) {
+ commands.push({
+ type: "setForegroundColor",
+ value: { type: "named", name: namedColors[codeInt - 30] }
+ });
+ } else if (codeInt === 38) {
+ const color = parseColor(sequence);
+ if (color) {
+ commands.push({
+ type: "setForegroundColor",
+ value: color
+ });
+ }
+ } else if (codeInt === 39) {
+ commands.push({
+ type: "resetForegroundColor"
+ });
+ } else if (codeInt <= 47) {
+ commands.push({
+ type: "setBackgroundColor",
+ value: { type: "named", name: namedColors[codeInt - 40] }
+ });
+ } else if (codeInt === 48) {
+ const color = parseColor(sequence);
+ if (color) {
+ commands.push({
+ type: "setBackgroundColor",
+ value: color
+ });
+ }
+ } else if (codeInt === 49) {
+ commands.push({
+ type: "resetBackgroundColor"
+ });
+ } else if (codeInt >= 90 && codeInt <= 97) {
+ commands.push({
+ type: "setForegroundColor",
+ value: { type: "named", name: namedColors[codeInt - 90 + 8] }
+ });
+ } else if (codeInt >= 100 && codeInt <= 107) {
+ commands.push({
+ type: "setBackgroundColor",
+ value: { type: "named", name: namedColors[codeInt - 100 + 8] }
+ });
+ }
+ }
+ return commands;
+}
+function createAnsiSequenceParser() {
+ let foreground = null;
+ let background = null;
+ let decorations2 = /* @__PURE__ */ new Set();
+ return {
+ parse(value) {
+ const tokens = [];
+ let position = 0;
+ do {
+ const findResult = findSequence(value, position);
+ const text = findResult.sequence ? value.substring(position, findResult.startPosition) : value.substring(position);
+ if (text.length > 0) {
+ tokens.push({
+ value: text,
+ foreground,
+ background,
+ decorations: new Set(decorations2)
+ });
+ }
+ if (findResult.sequence) {
+ const commands = parseSequence(findResult.sequence);
+ for (const styleToken of commands) {
+ if (styleToken.type === "resetAll") {
+ foreground = null;
+ background = null;
+ decorations2.clear();
+ } else if (styleToken.type === "resetForegroundColor") {
+ foreground = null;
+ } else if (styleToken.type === "resetBackgroundColor") {
+ background = null;
+ } else if (styleToken.type === "resetDecoration") {
+ decorations2.delete(styleToken.value);
+ }
+ }
+ for (const styleToken of commands) {
+ if (styleToken.type === "setForegroundColor") {
+ foreground = styleToken.value;
+ } else if (styleToken.type === "setBackgroundColor") {
+ background = styleToken.value;
+ } else if (styleToken.type === "setDecoration") {
+ decorations2.add(styleToken.value);
+ }
+ }
+ }
+ position = findResult.position;
+ } while (position < value.length);
+ return tokens;
+ }
+ };
+}
+
+// src/palette.ts
+var defaultNamedColorsMap = {
+ black: "#000000",
+ red: "#bb0000",
+ green: "#00bb00",
+ yellow: "#bbbb00",
+ blue: "#0000bb",
+ magenta: "#ff00ff",
+ cyan: "#00bbbb",
+ white: "#eeeeee",
+ brightBlack: "#555555",
+ brightRed: "#ff5555",
+ brightGreen: "#00ff00",
+ brightYellow: "#ffff55",
+ brightBlue: "#5555ff",
+ brightMagenta: "#ff55ff",
+ brightCyan: "#55ffff",
+ brightWhite: "#ffffff"
+};
+function createColorPalette(namedColorsMap = defaultNamedColorsMap) {
+ function namedColor(name) {
+ return namedColorsMap[name];
+ }
+ function rgbColor(rgb) {
+ return `#${rgb.map((x) => Math.max(0, Math.min(x, 255)).toString(16).padStart(2, "0")).join("")}`;
+ }
+ let colorTable;
+ function getColorTable() {
+ if (colorTable) {
+ return colorTable;
+ }
+ colorTable = [];
+ for (let i = 0; i < namedColors.length; i++) {
+ colorTable.push(namedColor(namedColors[i]));
+ }
+ let levels = [0, 95, 135, 175, 215, 255];
+ for (let r = 0; r < 6; r++) {
+ for (let g = 0; g < 6; g++) {
+ for (let b = 0; b < 6; b++) {
+ colorTable.push(rgbColor([levels[r], levels[g], levels[b]]));
+ }
+ }
+ }
+ let level = 8;
+ for (let i = 0; i < 24; i++, level += 10) {
+ colorTable.push(rgbColor([level, level, level]));
+ }
+ return colorTable;
+ }
+ function tableColor(index) {
+ return getColorTable()[index];
+ }
+ function value(color) {
+ switch (color.type) {
+ case "named":
+ return namedColor(color.name);
+ case "rgb":
+ return rgbColor(color.rgb);
+ case "table":
+ return tableColor(color.index);
+ }
+ }
+ return {
+ value
+ };
+}
+
+function tokenizeAnsiWithTheme(theme, fileContents) {
+ const lines = fileContents.split(/\r?\n/);
+ const colorPalette = createColorPalette(
+ Object.fromEntries(
+ namedColors.map((name) => [
+ name,
+ theme.colors[`terminal.ansi${name[0].toUpperCase()}${name.substring(1)}`]
+ ])
+ )
+ );
+ const parser = createAnsiSequenceParser();
+ return lines.map(
+ (line) => parser.parse(line).map((token) => {
+ let color;
+ if (token.decorations.has("reverse")) {
+ color = token.background ? colorPalette.value(token.background) : theme.bg;
+ } else {
+ color = token.foreground ? colorPalette.value(token.foreground) : theme.fg;
+ }
+ if (token.decorations.has("dim")) {
+ color = dimColor(color);
+ }
+ let fontStyle = FontStyle.None;
+ if (token.decorations.has("bold")) {
+ fontStyle |= FontStyle.Bold;
+ }
+ if (token.decorations.has("italic")) {
+ fontStyle |= FontStyle.Italic;
+ }
+ if (token.decorations.has("underline")) {
+ fontStyle |= FontStyle.Underline;
+ }
+ return {
+ content: token.value,
+ color,
+ fontStyle
+ };
+ })
+ );
+}
+function dimColor(color) {
+ const hexMatch = color.match(/#([0-9a-f]{3})([0-9a-f]{3})?([0-9a-f]{2})?/);
+ if (hexMatch) {
+ if (hexMatch[3]) {
+ const alpha = Math.round(Number.parseInt(hexMatch[3], 16) / 2).toString(16).padStart(2, "0");
+ return `#${hexMatch[1]}${hexMatch[2]}${alpha}`;
+ } else if (hexMatch[2]) {
+ return `#${hexMatch[1]}${hexMatch[2]}80`;
+ } else {
+ return `#${Array.from(hexMatch[1]).map((x) => `${x}${x}`).join("")}80`;
+ }
+ }
+ const cssVarMatch = color.match(/var\((--shiki-color-ansi-[\w-]+)\)/);
+ if (cssVarMatch) {
+ return `var(${cssVarMatch[1]}-dim)`;
+ }
+ return color;
+}
+
+const defaultElements = {
+ pre({ className, style, children }) {
+ return `<pre class="${className}" style="${style}" tabindex="0">${children}</pre>`;
+ },
+ code({ children }) {
+ return `<code>${children}</code>`;
+ },
+ line({ className, children }) {
+ return `<span class="${className}">${children}</span>`;
+ },
+ token({ style, children }) {
+ return `<span style="${style}">${children}</span>`;
+ }
+};
+function renderToHtml(lines, options = {}) {
+ const bg = options.bg || "#fff";
+ const optionsByLineNumber = groupBy(options.lineOptions ?? [], (option) => option.line);
+ const userElements = options.elements || {};
+ function h(type = "", props = {}, children) {
+ const element = userElements[type] || defaultElements[type];
+ if (element) {
+ children = children.filter(Boolean);
+ return element({
+ ...props,
+ children: type === "code" ? children.join("\n") : children.join("")
+ });
+ }
+ return "";
+ }
+ return h(
+ "pre",
+ { className: "shiki " + (options.themeName || ""), style: `background-color: ${bg}` },
+ [
+ options.langId ? `<div class="language-id">${options.langId}</div>` : "",
+ h(
+ "code",
+ {},
+ lines.map((line, index) => {
+ const lineNumber = index + 1;
+ const lineOptions = optionsByLineNumber.get(lineNumber) ?? [];
+ const lineClasses = getLineClasses(lineOptions).join(" ");
+ return h(
+ "line",
+ {
+ className: lineClasses,
+ lines,
+ line,
+ index
+ },
+ line.map((token, index2) => {
+ const cssDeclarations = [`color: ${token.color || options.fg}`];
+ if (token.fontStyle & FontStyle.Italic) {
+ cssDeclarations.push("font-style: italic");
+ }
+ if (token.fontStyle & FontStyle.Bold) {
+ cssDeclarations.push("font-weight: bold");
+ }
+ if (token.fontStyle & FontStyle.Underline) {
+ cssDeclarations.push("text-decoration: underline");
+ }
+ return h(
+ "token",
+ {
+ style: cssDeclarations.join("; "),
+ tokens: line,
+ token,
+ index: index2
+ },
+ [escapeHtml(token.content)]
+ );
+ })
+ );
+ })
+ )
+ ]
+ );
+}
+const htmlEscapes = {
+ "&": "&amp;",
+ "<": "&lt;",
+ ">": "&gt;",
+ '"': "&quot;",
+ "'": "&#39;"
+};
+function escapeHtml(html) {
+ return html.replace(/[&<>"']/g, (chr) => htmlEscapes[chr]);
+}
+function getLineClasses(lineOptions) {
+ const lineClasses = /* @__PURE__ */ new Set(["line"]);
+ for (const lineOption of lineOptions) {
+ for (const lineClass of lineOption.classes ?? []) {
+ lineClasses.add(lineClass);
+ }
+ }
+ return Array.from(lineClasses);
+}
+
+class Registry extends vscodeTextmate.Registry {
+ constructor(_resolver) {
+ super(_resolver);
+ this._resolver = _resolver;
+ this.themesPath = "themes/";
+ this._resolvedThemes = {};
+ this._resolvedGrammars = {};
+ this._langGraph = /* @__PURE__ */ new Map();
+ this._langMap = languages.reduce((acc, lang) => {
+ acc[lang.id] = lang;
+ return acc;
+ }, {});
+ }
+ getTheme(theme) {
+ if (typeof theme === "string") {
+ return this._resolvedThemes[theme];
+ } else {
+ return theme;
+ }
+ }
+ async loadTheme(theme) {
+ if (typeof theme === "string") {
+ if (!this._resolvedThemes[theme]) {
+ this._resolvedThemes[theme] = await fetchTheme(`${this.themesPath}${theme}.json`);
+ }
+ return this._resolvedThemes[theme];
+ } else {
+ theme = toShikiTheme(theme);
+ if (theme.name) {
+ this._resolvedThemes[theme.name] = theme;
+ }
+ return theme;
+ }
+ }
+ async loadThemes(themes) {
+ return await Promise.all(themes.map((theme) => this.loadTheme(theme)));
+ }
+ getLoadedThemes() {
+ return Object.keys(this._resolvedThemes);
+ }
+ getGrammar(name) {
+ return this._resolvedGrammars[name];
+ }
+ async loadLanguage(lang) {
+ const embeddedLanguages = lang.embeddedLangs?.reduce(async (acc, l, idx) => {
+ if (!this.getLoadedLanguages().includes(l) && this._resolver.getLangRegistration(l)) {
+ await this._resolver.loadGrammar(this._resolver.getLangRegistration(l).scopeName);
+ acc[this._resolver.getLangRegistration(l).scopeName] = idx + 2;
+ return acc;
+ }
+ }, {});
+ const grammarConfig = {
+ embeddedLanguages,
+ balancedBracketSelectors: lang.balancedBracketSelectors || ["*"],
+ unbalancedBracketSelectors: lang.unbalancedBracketSelectors || []
+ };
+ const g = await this.loadGrammarWithConfiguration(lang.scopeName, 1, grammarConfig);
+ this._resolvedGrammars[lang.id] = g;
+ if (lang.aliases) {
+ lang.aliases.forEach((la) => {
+ this._resolvedGrammars[la] = g;
+ });
+ }
+ }
+ async loadLanguages(langs) {
+ for (const lang of langs) {
+ this.resolveEmbeddedLanguages(lang);
+ }
+ const langsGraphArray = Array.from(this._langGraph.values());
+ for (const lang of langsGraphArray) {
+ this._resolver.addLanguage(lang);
+ }
+ for (const lang of langsGraphArray) {
+ await this.loadLanguage(lang);
+ }
+ }
+ getLoadedLanguages() {
+ return Object.keys(this._resolvedGrammars);
+ }
+ resolveEmbeddedLanguages(lang) {
+ if (!this._langGraph.has(lang.id)) {
+ this._langGraph.set(lang.id, lang);
+ }
+ if (lang.embeddedLangs) {
+ for (const embeddedLang of lang.embeddedLangs) {
+ this._langGraph.set(embeddedLang, this._langMap[embeddedLang]);
+ }
+ }
+ }
+}
+
+function resolveLang(lang) {
+ return typeof lang === "string" ? languages.find((l) => l.id === lang || l.aliases?.includes(lang)) : lang;
+}
+function resolveOptions(options) {
+ let _languages = languages;
+ let _themes = options.themes || [];
+ let _wasmPath = options.paths?.wasm ? options.paths.wasm.endsWith("/") ? options.paths.wasm : options.paths.wasm + "/" : WASM_PATH;
+ if (options.langs) {
+ _languages = options.langs.map(resolveLang);
+ }
+ if (options.theme) {
+ _themes.unshift(options.theme);
+ }
+ if (!_themes.length) {
+ _themes = ["nord"];
+ }
+ return { _languages, _themes, _wasmPath };
+}
+function generateDefaultColorReplacements() {
+ const replacements = {
+ "#000001": "var(--shiki-color-text)",
+ "#000002": "var(--shiki-color-background)",
+ "#000004": "var(--shiki-token-constant)",
+ "#000005": "var(--shiki-token-string)",
+ "#000006": "var(--shiki-token-comment)",
+ "#000007": "var(--shiki-token-keyword)",
+ "#000008": "var(--shiki-token-parameter)",
+ "#000009": "var(--shiki-token-function)",
+ "#000010": "var(--shiki-token-string-expression)",
+ "#000011": "var(--shiki-token-punctuation)",
+ "#000012": "var(--shiki-token-link)"
+ };
+ for (let i = 0; i < namedColors.length; i++) {
+ const code = `#A${i.toString().padStart(5, "0")}`;
+ const colorNameKebab = namedColors[i].replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase();
+ replacements[code] = `var(--shiki-color-ansi-${colorNameKebab})`;
+ }
+ return replacements;
+}
+async function getHighlighter(options) {
+ const { _languages, _themes, _wasmPath } = resolveOptions(options);
+ const _resolver = new Resolver(getOniguruma(_wasmPath), "vscode-oniguruma");
+ const _registry = new Registry(_resolver);
+ if (options.paths?.themes) {
+ _registry.themesPath = options.paths.themes.endsWith("/") ? options.paths.themes : options.paths.themes + "/";
+ }
+ if (options.paths?.languages) {
+ _resolver.languagesPath = options.paths.languages.endsWith("/") ? options.paths.languages : options.paths.languages + "/";
+ }
+ const themes = await _registry.loadThemes(_themes);
+ const _defaultTheme = themes[0];
+ let _currentTheme;
+ await _registry.loadLanguages(_languages);
+ let COLOR_REPLACEMENTS = generateDefaultColorReplacements();
+ function setColorReplacements(map) {
+ COLOR_REPLACEMENTS = map;
+ }
+ function fixCssVariablesTheme(theme, colorMap) {
+ theme.bg = COLOR_REPLACEMENTS[theme.bg] || theme.bg;
+ theme.fg = COLOR_REPLACEMENTS[theme.fg] || theme.fg;
+ Object.entries(theme.colors).forEach(([key, value]) => {
+ theme.colors[key] = COLOR_REPLACEMENTS[value] || value;
+ });
+ colorMap.forEach((val, i) => {
+ colorMap[i] = COLOR_REPLACEMENTS[val] || val;
+ });
+ }
+ function getTheme(theme) {
+ const _theme = theme ? _registry.getTheme(theme) : _defaultTheme;
+ if (!_theme) {
+ throw Error(`No theme registration for ${theme}`);
+ }
+ if (!_currentTheme || _currentTheme.name !== _theme.name) {
+ _registry.setTheme(_theme);
+ _currentTheme = _theme;
+ }
+ const _colorMap = _registry.getColorMap();
+ if (_theme.type === "css") {
+ fixCssVariablesTheme(_theme, _colorMap);
+ }
+ return { _theme, _colorMap };
+ }
+ function getGrammar(lang) {
+ const _grammar = _registry.getGrammar(lang);
+ if (!_grammar) {
+ throw Error(`No language registration for ${lang}`);
+ }
+ return { _grammar };
+ }
+ function codeToThemedTokens(code, lang = "text", theme, options2 = { includeExplanation: true }) {
+ if (isPlaintext(lang)) {
+ const lines = code.split(/\r\n|\r|\n/);
+ return [...lines.map((line) => [{ content: line }])];
+ }
+ const { _grammar } = getGrammar(lang);
+ const { _theme, _colorMap } = getTheme(theme);
+ return tokenizeWithTheme(_theme, _colorMap, code, _grammar, options2);
+ }
+ function ansiToThemedTokens(ansi, theme) {
+ const { _theme } = getTheme(theme);
+ return tokenizeAnsiWithTheme(_theme, ansi);
+ }
+ function codeToHtml(code, arg1 = "text", arg2) {
+ let options2;
+ if (typeof arg1 === "object") {
+ options2 = arg1;
+ } else {
+ options2 = {
+ lang: arg1,
+ theme: arg2
+ };
+ }
+ const tokens = codeToThemedTokens(code, options2.lang, options2.theme, {
+ includeExplanation: false
+ });
+ const { _theme } = getTheme(options2.theme);
+ return renderToHtml(tokens, {
+ fg: _theme.fg,
+ bg: _theme.bg,
+ lineOptions: options2?.lineOptions,
+ themeName: _theme.name
+ });
+ }
+ function ansiToHtml(ansi, options2) {
+ const tokens = ansiToThemedTokens(ansi, options2?.theme);
+ const { _theme } = getTheme(options2?.theme);
+ return renderToHtml(tokens, {
+ fg: _theme.fg,
+ bg: _theme.bg,
+ lineOptions: options2?.lineOptions,
+ themeName: _theme.name
+ });
+ }
+ async function loadTheme(theme) {
+ await _registry.loadTheme(theme);
+ }
+ async function loadLanguage(lang) {
+ const _lang = resolveLang(lang);
+ _resolver.addLanguage(_lang);
+ await _registry.loadLanguage(_lang);
+ }
+ function getLoadedThemes() {
+ return _registry.getLoadedThemes();
+ }
+ function getLoadedLanguages() {
+ return _registry.getLoadedLanguages();
+ }
+ function getBackgroundColor(theme) {
+ const { _theme } = getTheme(theme);
+ return _theme.bg;
+ }
+ function getForegroundColor(theme) {
+ const { _theme } = getTheme(theme);
+ return _theme.fg;
+ }
+ return {
+ codeToThemedTokens,
+ codeToHtml,
+ ansiToThemedTokens,
+ ansiToHtml,
+ getTheme: (theme) => {
+ return getTheme(theme)._theme;
+ },
+ loadTheme,
+ loadLanguage,
+ getBackgroundColor,
+ getForegroundColor,
+ getLoadedThemes,
+ getLoadedLanguages,
+ setColorReplacements
+ };
+}
+function isPlaintext(lang) {
+ return !lang || ["plaintext", "txt", "text"].includes(lang);
+}
+
+function setOnigasmWASM(path) {
+ setWasm(path);
+}
+
+exports.BUNDLED_LANGUAGES = languages;
+exports.BUNDLED_THEMES = themes;
+exports.FontStyle = FontStyle;
+exports.getHighlighter = getHighlighter;
+exports.loadTheme = fetchTheme;
+exports.renderToHtml = renderToHtml;
+exports.setCDN = setCDN;
+exports.setOnigasmWASM = setOnigasmWASM;
+exports.setWasm = setWasm;
+exports.toShikiTheme = toShikiTheme;
diff --git a/node_modules/shiki/dist/index.jsdelivr.iife.js b/node_modules/shiki/dist/index.jsdelivr.iife.js
new file mode 100644
index 0000000..b1b1220
--- /dev/null
+++ b/node_modules/shiki/dist/index.jsdelivr.iife.js
@@ -0,0 +1 @@
+!function(e){"use strict";const t=[{id:"abap",scopeName:"source.abap",path:"abap.tmLanguage.json",displayName:"ABAP",samplePath:"abap.sample"},{id:"actionscript-3",scopeName:"source.actionscript.3",path:"actionscript-3.tmLanguage.json",displayName:"ActionScript",samplePath:"actionscript-3.sample"},{id:"ada",scopeName:"source.ada",path:"ada.tmLanguage.json",displayName:"Ada",samplePath:"ada.sample"},{id:"apache",scopeName:"source.apacheconf",path:"apache.tmLanguage.json",displayName:"Apache Conf"},{id:"apex",scopeName:"source.apex",path:"apex.tmLanguage.json",displayName:"Apex",samplePath:"apex.sample"},{id:"apl",scopeName:"source.apl",path:"apl.tmLanguage.json",displayName:"APL",embeddedLangs:["html","xml","css","javascript","json"]},{id:"applescript",scopeName:"source.applescript",path:"applescript.tmLanguage.json",displayName:"AppleScript",samplePath:"applescript.sample"},{id:"ara",scopeName:"source.ara",path:"ara.tmLanguage.json",displayName:"Ara",samplePath:"ara.sample"},{id:"asm",scopeName:"source.asm.x86_64",path:"asm.tmLanguage.json",displayName:"Assembly",samplePath:"asm.sample"},{id:"astro",scopeName:"source.astro",path:"astro.tmLanguage.json",displayName:"Astro",samplePath:"astro.sample",embeddedLangs:["json","javascript","typescript","stylus","sass","css","scss","less","postcss","tsx"]},{id:"awk",scopeName:"source.awk",path:"awk.tmLanguage.json",displayName:"AWK",samplePath:"awk.sample"},{id:"ballerina",scopeName:"source.ballerina",path:"ballerina.tmLanguage.json",displayName:"Ballerina",samplePath:"ballerina.sample"},{id:"bat",scopeName:"source.batchfile",path:"bat.tmLanguage.json",displayName:"Batch",samplePath:"bat.sample",aliases:["batch"]},{id:"beancount",scopeName:"text.beancount",path:"beancount.tmLanguage.json",displayName:"Beancount",samplePath:"beancount.sample"},{id:"berry",scopeName:"source.berry",path:"berry.tmLanguage.json",displayName:"Berry",samplePath:"berry.sample",aliases:["be"]},{id:"bibtex",scopeName:"text.bibtex",path:"bibtex.tmLanguage.json",displayName:"BibTeX"},{id:"bicep",scopeName:"source.bicep",path:"bicep.tmLanguage.json",displayName:"Bicep",samplePath:"bicep.sample"},{id:"blade",scopeName:"text.html.php.blade",path:"blade.tmLanguage.json",displayName:"Blade",samplePath:"blade.sample",embeddedLangs:["html","xml","sql","javascript","json","css"]},{id:"c",scopeName:"source.c",path:"c.tmLanguage.json",displayName:"C",samplePath:"c.sample"},{id:"cadence",scopeName:"source.cadence",path:"cadence.tmLanguage.json",displayName:"Cadence",samplePath:"cadence.sample",aliases:["cdc"]},{id:"clarity",scopeName:"source.clar",path:"clarity.tmLanguage.json",displayName:"Clarity",samplePath:"clarity.sample"},{id:"clojure",scopeName:"source.clojure",path:"clojure.tmLanguage.json",displayName:"Clojure",samplePath:"clojure.sample",aliases:["clj"]},{id:"cmake",scopeName:"source.cmake",path:"cmake.tmLanguage.json",displayName:"CMake",samplePath:"cmake.sample"},{id:"cobol",scopeName:"source.cobol",path:"cobol.tmLanguage.json",displayName:"COBOL",samplePath:"cobol.sample",embeddedLangs:["sql","html","java"]},{id:"codeql",scopeName:"source.ql",path:"codeql.tmLanguage.json",displayName:"CodeQL",samplePath:"codeql.sample",aliases:["ql"],embeddedLangs:["markdown"]},{id:"coffee",scopeName:"source.coffee",path:"coffee.tmLanguage.json",displayName:"CoffeeScript",samplePath:"coffee.sample",embeddedLangs:["javascript"]},{id:"cpp",scopeName:"source.cpp",path:"cpp.tmLanguage.json",displayName:"C++",samplePath:"cpp.sample",embeddedLangs:["glsl","sql"]},{id:"crystal",scopeName:"source.crystal",path:"crystal.tmLanguage.json",displayName:"Crystal",samplePath:"crystal.sample",embeddedLangs:["html","sql","css","c","javascript","shellscript"]},{id:"csharp",scopeName:"source.cs",path:"csharp.tmLanguage.json",displayName:"C#",samplePath:"csharp.sample",aliases:["c#","cs"]},{id:"css",scopeName:"source.css",path:"css.tmLanguage.json",displayName:"CSS",samplePath:"css.sample"},{id:"cue",scopeName:"source.cue",path:"cue.tmLanguage.json",displayName:"CUE",samplePath:"cue.sample"},{id:"cypher",scopeName:"source.cypher",path:"cypher.tmLanguage.json",displayName:"Cypher",samplePath:"cypher.sample",aliases:["cql"]},{id:"d",scopeName:"source.d",path:"d.tmLanguage.json",displayName:"D",samplePath:"d.sample"},{id:"dart",scopeName:"source.dart",path:"dart.tmLanguage.json",displayName:"Dart",samplePath:"dart.sample"},{id:"dax",scopeName:"source.dax",path:"dax.tmLanguage.json",displayName:"DAX",samplePath:"dax.sample"},{id:"diff",scopeName:"source.diff",path:"diff.tmLanguage.json",displayName:"Diff",samplePath:"diff.sample"},{id:"docker",scopeName:"source.dockerfile",path:"docker.tmLanguage.json",displayName:"Docker",samplePath:"docker.sample",aliases:["dockerfile"]},{id:"dream-maker",scopeName:"source.dm",path:"dream-maker.tmLanguage.json",displayName:"Dream Maker"},{id:"elixir",scopeName:"source.elixir",path:"elixir.tmLanguage.json",displayName:"Elixir",samplePath:"elixir.sample",embeddedLangs:["html"]},{id:"elm",scopeName:"source.elm",path:"elm.tmLanguage.json",displayName:"Elm",samplePath:"elm.sample",embeddedLangs:["glsl"]},{id:"erb",scopeName:"text.html.erb",path:"erb.tmLanguage.json",displayName:"ERB",samplePath:"erb.sample",embeddedLangs:["html","ruby"]},{id:"erlang",scopeName:"source.erlang",path:"erlang.tmLanguage.json",displayName:"Erlang",samplePath:"erlang.sample",aliases:["erl"]},{id:"fish",scopeName:"source.fish",path:"fish.tmLanguage.json",displayName:"Fish",samplePath:"fish.sample"},{id:"fsharp",scopeName:"source.fsharp",path:"fsharp.tmLanguage.json",displayName:"F#",samplePath:"fsharp.sample",aliases:["f#","fs"],embeddedLangs:["markdown"]},{id:"gdresource",scopeName:"source.gdresource",path:"gdresource.tmLanguage.json",displayName:"GDResource",samplePath:"gdresource.sample",embeddedLangs:["gdshader","gdscript"]},{id:"gdscript",scopeName:"source.gdscript",path:"gdscript.tmLanguage.json",displayName:"GDScript",samplePath:"gdscript.sample"},{id:"gdshader",scopeName:"source.gdshader",path:"gdshader.tmLanguage.json",displayName:"GDShader",samplePath:"gdshader.sample"},{id:"gherkin",scopeName:"text.gherkin.feature",path:"gherkin.tmLanguage.json",displayName:"Gherkin"},{id:"git-commit",scopeName:"text.git-commit",path:"git-commit.tmLanguage.json",displayName:"Git Commit Message",embeddedLangs:["diff"]},{id:"git-rebase",scopeName:"text.git-rebase",path:"git-rebase.tmLanguage.json",displayName:"Git Rebase Message",embeddedLangs:["shellscript"]},{id:"glimmer-js",scopeName:"source.gjs",path:"glimmer-js.tmLanguage.json",displayName:"Glimmer JS",aliases:["gjs"],embeddedLangs:["javascript","handlebars"]},{id:"glimmer-ts",scopeName:"source.gts",path:"glimmer-ts.tmLanguage.json",displayName:"Glimmer TS",aliases:["gts"],embeddedLangs:["typescript","handlebars"]},{id:"glsl",scopeName:"source.glsl",path:"glsl.tmLanguage.json",displayName:"GLSL",samplePath:"glsl.sample",embeddedLangs:["c"]},{id:"gnuplot",scopeName:"source.gnuplot",path:"gnuplot.tmLanguage.json",displayName:"Gnuplot"},{id:"go",scopeName:"source.go",path:"go.tmLanguage.json",displayName:"Go",samplePath:"go.sample"},{id:"graphql",scopeName:"source.graphql",path:"graphql.tmLanguage.json",displayName:"GraphQL",embeddedLangs:["javascript","typescript","jsx","tsx"]},{id:"groovy",scopeName:"source.groovy",path:"groovy.tmLanguage.json",displayName:"Groovy"},{id:"hack",scopeName:"source.hack",path:"hack.tmLanguage.json",displayName:"Hack",embeddedLangs:["html","sql"]},{id:"haml",scopeName:"text.haml",path:"haml.tmLanguage.json",displayName:"Ruby Haml",embeddedLangs:["ruby","javascript","sass","coffee","markdown","css"]},{id:"handlebars",scopeName:"text.html.handlebars",path:"handlebars.tmLanguage.json",displayName:"Handlebars",aliases:["hbs"],embeddedLangs:["html","css","javascript","yaml"]},{id:"haskell",scopeName:"source.haskell",path:"haskell.tmLanguage.json",displayName:"Haskell",aliases:["hs"]},{id:"hcl",scopeName:"source.hcl",path:"hcl.tmLanguage.json",displayName:"HashiCorp HCL",samplePath:"hcl.sample"},{id:"hjson",scopeName:"source.hjson",path:"hjson.tmLanguage.json",displayName:"Hjson",samplePath:"hjson.sample"},{id:"hlsl",scopeName:"source.hlsl",path:"hlsl.tmLanguage.json",displayName:"HLSL"},{id:"html",scopeName:"text.html.basic",path:"html.tmLanguage.json",displayName:"HTML",samplePath:"html.sample",embeddedLangs:["javascript","css"]},{id:"http",scopeName:"source.http",path:"http.tmLanguage.json",displayName:"HTTP",samplePath:"http.sample",embeddedLangs:["shellscript","json","xml","graphql"]},{id:"imba",scopeName:"source.imba",path:"imba.tmLanguage.json",displayName:"Imba",samplePath:"imba.sample"},{id:"ini",scopeName:"source.ini",path:"ini.tmLanguage.json",displayName:"INI",aliases:["properties"]},{id:"java",scopeName:"source.java",path:"java.tmLanguage.json",displayName:"Java",samplePath:"java.sample"},{id:"javascript",scopeName:"source.js",path:"javascript.tmLanguage.json",displayName:"JavaScript",samplePath:"javascript.sample",aliases:["js"]},{id:"jinja-html",scopeName:"text.html.jinja",path:"jinja-html.tmLanguage.json",displayName:"Jinja",embeddedLangs:["html"]},{id:"jison",scopeName:"source.jison",path:"jison.tmLanguage.json",displayName:"Jison",samplePath:"jison.sample",embeddedLangs:["javascript"]},{id:"json",scopeName:"source.json",path:"json.tmLanguage.json",displayName:"JSON"},{id:"json5",scopeName:"source.json5",path:"json5.tmLanguage.json",displayName:"JSON5",samplePath:"json5.sample"},{id:"jsonc",scopeName:"source.json.comments",path:"jsonc.tmLanguage.json",displayName:"JSON with Comments"},{id:"jsonl",scopeName:"source.json.lines",path:"jsonl.tmLanguage.json",displayName:"JSON Lines"},{id:"jsonnet",scopeName:"source.jsonnet",path:"jsonnet.tmLanguage.json",displayName:"Jsonnet"},{id:"jssm",scopeName:"source.jssm",path:"jssm.tmLanguage.json",displayName:"JSSM",samplePath:"jssm.sample",aliases:["fsl"]},{id:"jsx",scopeName:"source.js.jsx",path:"jsx.tmLanguage.json",displayName:"JSX"},{id:"julia",scopeName:"source.julia",path:"julia.tmLanguage.json",displayName:"Julia",embeddedLangs:["cpp","python","javascript","r","sql"]},{id:"kotlin",scopeName:"source.kotlin",path:"kotlin.tmLanguage.json",displayName:"Kotlin",samplePath:"kotlin.sample"},{id:"kusto",scopeName:"source.kusto",path:"kusto.tmLanguage.json",displayName:"Kusto",samplePath:"kusto.sample",aliases:["kql"]},{id:"latex",scopeName:"text.tex.latex",path:"latex.tmLanguage.json",displayName:"LaTeX",embeddedLangs:["tex","css","haskell","html","xml","java","lua","julia","ruby","javascript","typescript","python","yaml","rust","scala","gnuplot"]},{id:"less",scopeName:"source.css.less",path:"less.tmLanguage.json",displayName:"Less",embeddedLangs:["css"]},{id:"liquid",scopeName:"text.html.liquid",path:"liquid.tmLanguage.json",displayName:"Liquid",samplePath:"liquid.sample",embeddedLangs:["html","css","json","javascript"]},{id:"lisp",scopeName:"source.lisp",path:"lisp.tmLanguage.json",displayName:"Lisp"},{id:"logo",scopeName:"source.logo",path:"logo.tmLanguage.json",displayName:"Logo"},{id:"lua",scopeName:"source.lua",path:"lua.tmLanguage.json",displayName:"Lua",embeddedLangs:["c"]},{id:"make",scopeName:"source.makefile",path:"make.tmLanguage.json",displayName:"Makefile",aliases:["makefile"]},{id:"markdown",scopeName:"text.html.markdown",path:"markdown.tmLanguage.json",displayName:"Markdown",aliases:["md"],embeddedLangs:["css","html","ini","java","lua","make","perl","r","ruby","php","sql","vb","xml","xsl","yaml","bat","clojure","coffee","c","cpp","diff","docker","git-commit","git-rebase","go","groovy","pug","javascript","json","jsonc","less","objective-c","swift","scss","raku","powershell","python","julia","rust","scala","shellscript","typescript","tsx","csharp","fsharp","dart","handlebars","erlang","elixir","latex","bibtex"]},{id:"marko",scopeName:"text.marko",path:"marko.tmLanguage.json",displayName:"Marko",embeddedLangs:["css","less","scss","javascript"]},{id:"matlab",scopeName:"source.matlab",path:"matlab.tmLanguage.json",displayName:"MATLAB"},{id:"mdx",scopeName:"source.mdx",path:"mdx.tmLanguage.json",displayName:"MDX",embeddedLangs:["tsx","toml","yaml","c","clojure","coffee","cpp","csharp","css","diff","docker","elixir","elm","erlang","go","graphql","haskell","html","ini","java","javascript","json","julia","kotlin","less","lua","make","markdown","objective-c","perl","python","r","ruby","rust","scala","scss","shellscript","sql","xml","swift","typescript"]},{id:"mermaid",scopeName:"source.mermaid",path:"mermaid.tmLanguage.json",displayName:"Mermaid"},{id:"narrat",scopeName:"source.narrat",path:"narrat.tmLanguage.json",displayName:"Narrat Language",samplePath:"narrat.sample",aliases:["nar"]},{id:"nextflow",scopeName:"source.nextflow",path:"nextflow.tmLanguage.json",displayName:"Nextflow",samplePath:"nextflow.sample",aliases:["nf"]},{id:"nginx",scopeName:"source.nginx",path:"nginx.tmLanguage.json",displayName:"Nginx",embeddedLangs:["lua"]},{id:"nim",scopeName:"source.nim",path:"nim.tmLanguage.json",displayName:"Nim",embeddedLangs:["c","html","xml","javascript","css","glsl","markdown"]},{id:"nix",scopeName:"source.nix",path:"nix.tmLanguage.json",displayName:"Nix"},{id:"objective-c",scopeName:"source.objc",path:"objective-c.tmLanguage.json",displayName:"Objective-C",aliases:["objc"]},{id:"objective-cpp",scopeName:"source.objcpp",path:"objective-cpp.tmLanguage.json",displayName:"Objective-C++"},{id:"ocaml",scopeName:"source.ocaml",path:"ocaml.tmLanguage.json",displayName:"OCaml"},{id:"pascal",scopeName:"source.pascal",path:"pascal.tmLanguage.json",displayName:"Pascal"},{id:"perl",scopeName:"source.perl",path:"perl.tmLanguage.json",displayName:"Perl",embeddedLangs:["html","xml","css","javascript","sql"]},{id:"php",scopeName:"source.php",path:"php.tmLanguage.json",displayName:"PHP",embeddedLangs:["html","xml","sql","javascript","json","css"]},{id:"plsql",scopeName:"source.plsql.oracle",path:"plsql.tmLanguage.json",displayName:"PL/SQL"},{id:"postcss",scopeName:"source.css.postcss",path:"postcss.tmLanguage.json",displayName:"PostCSS"},{id:"powerquery",scopeName:"source.powerquery",path:"powerquery.tmLanguage.json",displayName:"PowerQuery",samplePath:"powerquery.sample"},{id:"powershell",scopeName:"source.powershell",path:"powershell.tmLanguage.json",displayName:"PowerShell",aliases:["ps","ps1"]},{id:"prisma",scopeName:"source.prisma",path:"prisma.tmLanguage.json",displayName:"Prisma",samplePath:"prisma.sample"},{id:"prolog",scopeName:"source.prolog",path:"prolog.tmLanguage.json",displayName:"Prolog"},{id:"proto",scopeName:"source.proto",path:"proto.tmLanguage.json",displayName:"Protocol Buffer 3",samplePath:"proto.sample"},{id:"pug",scopeName:"text.pug",path:"pug.tmLanguage.json",displayName:"Pug",aliases:["jade"],embeddedLangs:["javascript","css","sass","scss","stylus","coffee","html"]},{id:"puppet",scopeName:"source.puppet",path:"puppet.tmLanguage.json",displayName:"Puppet"},{id:"purescript",scopeName:"source.purescript",path:"purescript.tmLanguage.json",displayName:"PureScript"},{id:"python",scopeName:"source.python",path:"python.tmLanguage.json",displayName:"Python",samplePath:"python.sample",aliases:["py"]},{id:"r",scopeName:"source.r",path:"r.tmLanguage.json",displayName:"R"},{id:"raku",scopeName:"source.perl.6",path:"raku.tmLanguage.json",displayName:"Perl 6",aliases:["perl6"]},{id:"razor",scopeName:"text.aspnetcorerazor",path:"razor.tmLanguage.json",displayName:"ASP.NET Razor",embeddedLangs:["html","csharp"]},{id:"reg",scopeName:"source.reg",path:"reg.tmLanguage.json",displayName:"Windows Registry Script",samplePath:"reg.sample"},{id:"rel",scopeName:"source.rel",path:"rel.tmLanguage.json",displayName:"Rel",samplePath:"rel.sample"},{id:"riscv",scopeName:"source.riscv",path:"riscv.tmLanguage.json",displayName:"RISC-V"},{id:"rst",scopeName:"source.rst",path:"rst.tmLanguage.json",displayName:"reStructuredText",embeddedLangs:["cpp","python","javascript","shellscript","yaml","cmake","ruby"]},{id:"ruby",scopeName:"source.ruby",path:"ruby.tmLanguage.json",displayName:"Ruby",samplePath:"ruby.sample",aliases:["rb"],embeddedLangs:["html","xml","sql","css","c","javascript","shellscript","lua"]},{id:"rust",scopeName:"source.rust",path:"rust.tmLanguage.json",displayName:"Rust",aliases:["rs"]},{id:"sas",scopeName:"source.sas",path:"sas.tmLanguage.json",displayName:"SAS",embeddedLangs:["sql"]},{id:"sass",scopeName:"source.sass",path:"sass.tmLanguage.json",displayName:"Sass"},{id:"scala",scopeName:"source.scala",path:"scala.tmLanguage.json",displayName:"Scala"},{id:"scheme",scopeName:"source.scheme",path:"scheme.tmLanguage.json",displayName:"Scheme"},{id:"scss",scopeName:"source.css.scss",path:"scss.tmLanguage.json",displayName:"SCSS",embeddedLangs:["css"]},{id:"shaderlab",scopeName:"source.shaderlab",path:"shaderlab.tmLanguage.json",displayName:"ShaderLab",aliases:["shader"],embeddedLangs:["hlsl"]},{id:"shellscript",scopeName:"source.shell",path:"shellscript.tmLanguage.json",displayName:"Shell",aliases:["bash","console","sh","shell","zsh"]},{id:"smalltalk",scopeName:"source.smalltalk",path:"smalltalk.tmLanguage.json",displayName:"Smalltalk"},{id:"solidity",scopeName:"source.solidity",path:"solidity.tmLanguage.json",displayName:"Solidity"},{id:"sparql",scopeName:"source.sparql",path:"sparql.tmLanguage.json",displayName:"SPARQL",samplePath:"sparql.sample",embeddedLangs:["turtle"]},{id:"sql",scopeName:"source.sql",path:"sql.tmLanguage.json",displayName:"SQL"},{id:"ssh-config",scopeName:"source.ssh-config",path:"ssh-config.tmLanguage.json",displayName:"SSH Config"},{id:"stata",scopeName:"source.stata",path:"stata.tmLanguage.json",displayName:"Stata",samplePath:"stata.sample",embeddedLangs:["sql"]},{id:"stylus",scopeName:"source.stylus",path:"stylus.tmLanguage.json",displayName:"Stylus",aliases:["styl"]},{id:"svelte",scopeName:"source.svelte",path:"svelte.tmLanguage.json",displayName:"Svelte",embeddedLangs:["javascript","typescript","coffee","stylus","sass","css","scss","less","postcss","pug","markdown"]},{id:"swift",scopeName:"source.swift",path:"swift.tmLanguage.json",displayName:"Swift"},{id:"system-verilog",scopeName:"source.systemverilog",path:"system-verilog.tmLanguage.json",displayName:"SystemVerilog"},{id:"tasl",scopeName:"source.tasl",path:"tasl.tmLanguage.json",displayName:"Tasl",samplePath:"tasl.sample"},{id:"tcl",scopeName:"source.tcl",path:"tcl.tmLanguage.json",displayName:"Tcl"},{id:"tex",scopeName:"text.tex",path:"tex.tmLanguage.json",displayName:"TeX",embeddedLangs:["r"]},{id:"toml",scopeName:"source.toml",path:"toml.tmLanguage.json",displayName:"TOML"},{id:"tsx",scopeName:"source.tsx",path:"tsx.tmLanguage.json",displayName:"TSX",samplePath:"tsx.sample"},{id:"turtle",scopeName:"source.turtle",path:"turtle.tmLanguage.json",displayName:"Turtle",samplePath:"turtle.sample"},{id:"twig",scopeName:"text.html.twig",path:"twig.tmLanguage.json",displayName:"Twig",embeddedLangs:["css","javascript","php","python","ruby"]},{id:"typescript",scopeName:"source.ts",path:"typescript.tmLanguage.json",displayName:"TypeScript",aliases:["ts"]},{id:"v",scopeName:"source.v",path:"v.tmLanguage.json",displayName:"V",samplePath:"v.sample"},{id:"vb",scopeName:"source.asp.vb.net",path:"vb.tmLanguage.json",displayName:"Visual Basic",aliases:["cmd"]},{id:"verilog",scopeName:"source.verilog",path:"verilog.tmLanguage.json",displayName:"Verilog"},{id:"vhdl",scopeName:"source.vhdl",path:"vhdl.tmLanguage.json",displayName:"VHDL"},{id:"viml",scopeName:"source.viml",path:"viml.tmLanguage.json",displayName:"Vim Script",aliases:["vim","vimscript"]},{id:"vue-html",scopeName:"text.html.vue-html",path:"vue-html.tmLanguage.json",displayName:"Vue HTML",embeddedLangs:["vue","javascript"]},{id:"vue",scopeName:"source.vue",path:"vue.tmLanguage.json",displayName:"Vue",embeddedLangs:["html","markdown","pug","stylus","sass","css","scss","less","javascript","typescript","jsx","tsx","json","jsonc","json5","yaml","toml","graphql"]},{id:"vyper",scopeName:"source.vyper",path:"vyper.tmLanguage.json",displayName:"Vyper",samplePath:"vyper.sample",aliases:["vy"]},{id:"wasm",scopeName:"source.wat",path:"wasm.tmLanguage.json",displayName:"WebAssembly"},{id:"wenyan",scopeName:"source.wenyan",path:"wenyan.tmLanguage.json",displayName:"Wenyan",aliases:["文言"]},{id:"wgsl",scopeName:"source.wgsl",path:"wgsl.tmLanguage.json",displayName:"WGSL",samplePath:"wgsl.sample"},{id:"wolfram",scopeName:"source.wolfram",path:"wolfram.tmLanguage.json",displayName:"Wolfram",samplePath:"wolfram.sample"},{id:"xml",scopeName:"text.xml",path:"xml.tmLanguage.json",displayName:"XML",embeddedLangs:["java"]},{id:"xsl",scopeName:"text.xml.xsl",path:"xsl.tmLanguage.json",displayName:"XSL",embeddedLangs:["xml"]},{id:"yaml",scopeName:"source.yaml",path:"yaml.tmLanguage.json",displayName:"YAML",aliases:["yml"]},{id:"zenscript",scopeName:"source.zenscript",path:"zenscript.tmLanguage.json",displayName:"ZenScript",samplePath:"zenscript.sample"}];var s=(e=>(e[e.NotSet=-1]="NotSet",e[e.None=0]="None",e[e.Italic=1]="Italic",e[e.Bold=2]="Bold",e[e.Underline=4]="Underline",e))(s||{});class n{static toBinaryStr(e){let t=e.toString(2);for(;t.length<32;)t="0"+t;return t}static printMetadata(e){let t=n.getLanguageId(e),s=n.getTokenType(e),a=n.getFontStyle(e),r=n.getForeground(e),o=n.getBackground(e);console.log({languageId:t,tokenType:s,fontStyle:a,foreground:r,background:o})}static getLanguageId(e){return(255&e)>>>0}static getTokenType(e){return(768&e)>>>8}static getFontStyle(e){return(14336&e)>>>11}static getForeground(e){return(8372224&e)>>>15}static getBackground(e){return(4286578688&e)>>>24}static containsBalancedBrackets(e){return 0!=(1024&e)}static set(e,t,s,a,r,o){let i=n.getLanguageId(e),c=n.getTokenType(e),l=n.getFontStyle(e),u=n.getForeground(e),p=n.getBackground(e);return 0!==t&&(i=t),0!==s&&(c=8===s?0:s),-1!==a&&(l=a),0!==r&&(u=r),0!==o&&(p=o),(i<<0|c<<8|l<<11|(n.containsBalancedBrackets(e)?1:0)<<10|u<<15|p<<24)>>>0}}function a(e){return e.endsWith("/")||e.endsWith("\\")?e.slice(0,-1):e}function r(e){return e.startsWith("./")?e.slice(2):e}function o(e){const t=e.split(/[\/\\]/g);return t.slice(0,t.length-1)}function i(...e){return e.map(a).map(r).join("/")}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var c,l={exports:{}};c=()=>{return e={770:function(e,t,s){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.setDefaultDebugCall=t.createOnigScanner=t.createOnigString=t.loadWASM=t.OnigScanner=t.OnigString=void 0;const a=n(s(418));let r=null,o=!1;class i{static _utf8ByteLength(e){let t=0;for(let s=0,n=e.length;s<n;s++){const a=e.charCodeAt(s);let r=a,o=!1;if(a>=55296&&a<=56319&&s+1<n){const t=e.charCodeAt(s+1);t>=56320&&t<=57343&&(r=65536+(a-55296<<10)|t-56320,o=!0)}t+=r<=127?1:r<=2047?2:r<=65535?3:4,o&&s++}return t}constructor(e){const t=e.length,s=i._utf8ByteLength(e),n=s!==t,a=n?new Uint32Array(t+1):null;n&&(a[t]=s);const r=n?new Uint32Array(s+1):null;n&&(r[s]=t);const o=new Uint8Array(s);let c=0;for(let s=0;s<t;s++){const i=e.charCodeAt(s);let l=i,u=!1;if(i>=55296&&i<=56319&&s+1<t){const t=e.charCodeAt(s+1);t>=56320&&t<=57343&&(l=65536+(i-55296<<10)|t-56320,u=!0)}n&&(a[s]=c,u&&(a[s+1]=c),l<=127?r[c+0]=s:l<=2047?(r[c+0]=s,r[c+1]=s):l<=65535?(r[c+0]=s,r[c+1]=s,r[c+2]=s):(r[c+0]=s,r[c+1]=s,r[c+2]=s,r[c+3]=s)),l<=127?o[c++]=l:l<=2047?(o[c++]=192|(1984&l)>>>6,o[c++]=128|(63&l)>>>0):l<=65535?(o[c++]=224|(61440&l)>>>12,o[c++]=128|(4032&l)>>>6,o[c++]=128|(63&l)>>>0):(o[c++]=240|(1835008&l)>>>18,o[c++]=128|(258048&l)>>>12,o[c++]=128|(4032&l)>>>6,o[c++]=128|(63&l)>>>0),u&&s++}this.utf16Length=t,this.utf8Length=s,this.utf16Value=e,this.utf8Value=o,this.utf16OffsetToUtf8=a,this.utf8OffsetToUtf16=r}createString(e){const t=e._omalloc(this.utf8Length);return e.HEAPU8.set(this.utf8Value,t),t}}class c{constructor(e){if(this.id=++c.LAST_ID,!r)throw new Error("Must invoke loadWASM first.");this._onigBinding=r,this.content=e;const t=new i(e);this.utf16Length=t.utf16Length,this.utf8Length=t.utf8Length,this.utf16OffsetToUtf8=t.utf16OffsetToUtf8,this.utf8OffsetToUtf16=t.utf8OffsetToUtf16,this.utf8Length<1e4&&!c._sharedPtrInUse?(c._sharedPtr||(c._sharedPtr=r._omalloc(1e4)),c._sharedPtrInUse=!0,r.HEAPU8.set(t.utf8Value,c._sharedPtr),this.ptr=c._sharedPtr):this.ptr=t.createString(r)}convertUtf8OffsetToUtf16(e){return this.utf8OffsetToUtf16?e<0?0:e>this.utf8Length?this.utf16Length:this.utf8OffsetToUtf16[e]:e}convertUtf16OffsetToUtf8(e){return this.utf16OffsetToUtf8?e<0?0:e>this.utf16Length?this.utf8Length:this.utf16OffsetToUtf8[e]:e}dispose(){this.ptr===c._sharedPtr?c._sharedPtrInUse=!1:this._onigBinding._ofree(this.ptr)}}t.OnigString=c,c.LAST_ID=0,c._sharedPtr=0,c._sharedPtrInUse=!1;class l{constructor(e){if(!r)throw new Error("Must invoke loadWASM first.");const t=[],s=[];for(let n=0,a=e.length;n<a;n++){const a=new i(e[n]);t[n]=a.createString(r),s[n]=a.utf8Length}const n=r._omalloc(4*e.length);r.HEAPU32.set(t,n/4);const a=r._omalloc(4*e.length);r.HEAPU32.set(s,a/4);const o=r._createOnigScanner(n,a,e.length);for(let s=0,n=e.length;s<n;s++)r._ofree(t[s]);r._ofree(a),r._ofree(n),0===o&&function(e){throw new Error(e.UTF8ToString(e._getLastOnigError()))}(r),this._onigBinding=r,this._ptr=o}dispose(){this._onigBinding._freeOnigScanner(this._ptr)}findNextMatchSync(e,t,s){let n=o,a=0;if("number"==typeof s?(8&s&&(n=!0),a=s):"boolean"==typeof s&&(n=s),"string"==typeof e){e=new c(e);const s=this._findNextMatchSync(e,t,n,a);return e.dispose(),s}return this._findNextMatchSync(e,t,n,a)}_findNextMatchSync(e,t,s,n){const a=this._onigBinding;let r;if(r=s?a._findNextOnigScannerMatchDbg(this._ptr,e.id,e.ptr,e.utf8Length,e.convertUtf16OffsetToUtf8(t),n):a._findNextOnigScannerMatch(this._ptr,e.id,e.ptr,e.utf8Length,e.convertUtf16OffsetToUtf8(t),n),0===r)return null;const o=a.HEAPU32;let i=r/4;const c=o[i++],l=o[i++];let u=[];for(let t=0;t<l;t++){const s=e.convertUtf8OffsetToUtf16(o[i++]),n=e.convertUtf8OffsetToUtf16(o[i++]);u[t]={start:s,end:n,length:n-s}}return{index:c,captureIndices:u}}}t.OnigScanner=l;let u=!1,p=null;t.loadWASM=function(e){if(u)return p;let t,s,n,o;if(u=!0,function(e){return"function"==typeof e.instantiator}(e))t=e.instantiator,s=e.print;else{let n;!function(e){return void 0!==e.data}(e)?n=e:(n=e.data,s=e.print),t=function(e){return"undefined"!=typeof Response&&e instanceof Response}(n)?"function"==typeof WebAssembly.instantiateStreaming?function(e){return t=>WebAssembly.instantiateStreaming(e,t)}(n):function(e){return async t=>{const s=await e.arrayBuffer();return WebAssembly.instantiate(s,t)}}(n):function(e){return t=>WebAssembly.instantiate(e,t)}(n)}return p=new Promise(((e,t)=>{n=e,o=t})),function(e,t,s,n){(0,a.default)({print:t,instantiateWasm:(t,s)=>{if("undefined"==typeof performance){const e=()=>Date.now();t.env.emscripten_get_now=e,t.wasi_snapshot_preview1.emscripten_get_now=e}return e(t).then((e=>s(e.instance)),n),{}}}).then((e=>{r=e,s()}))}(t,s,n,o),p},t.createOnigString=function(e){return new c(e)},t.createOnigScanner=function(e){return new l(e)},t.setDefaultDebugCall=function(e){o=e}},418:e=>{var t=("undefined"!=typeof document&&document.currentScript&&document.currentScript.src,function(e){var t,s,n=void 0!==(e=e||{})?e:{};n.ready=new Promise((function(e,n){t=e,s=n}));var a,r=Object.assign({},n),o=!1;a=function(e){let t;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(t=read(e,"binary"),function(e,t){e||C(t)}("object"==typeof t),t)},"undefined"!=typeof scriptArgs&&scriptArgs,"undefined"!=typeof onig_print&&("undefined"==typeof console&&(console={}),console.log=onig_print,console.warn=console.error="undefined"!=typeof printErr?printErr:onig_print);var i,c,l=n.print||console.log.bind(console),u=n.printErr||console.warn.bind(console);Object.assign(n,r),r=null,n.arguments&&n.arguments,n.thisProgram&&n.thisProgram,n.quit&&n.quit,n.wasmBinary&&(i=n.wasmBinary),n.noExitRuntime,"object"!=typeof WebAssembly&&C("no native wasm support detected");var p,h,d,m=!1,g="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function f(e,t,s){for(var n=t+s,a=t;e[a]&&!(a>=n);)++a;if(a-t>16&&e.buffer&&g)return g.decode(e.subarray(t,a));for(var r="";t<a;){var o=e[t++];if(128&o){var i=63&e[t++];if(192!=(224&o)){var c=63&e[t++];if((o=224==(240&o)?(15&o)<<12|i<<6|c:(7&o)<<18|i<<12|c<<6|63&e[t++])<65536)r+=String.fromCharCode(o);else{var l=o-65536;r+=String.fromCharCode(55296|l>>10,56320|1023&l)}}else r+=String.fromCharCode((31&o)<<6|i)}else r+=String.fromCharCode(o)}return r}function y(e){p=e,n.HEAP8=new Int8Array(e),n.HEAP16=new Int16Array(e),n.HEAP32=new Int32Array(e),n.HEAPU8=h=new Uint8Array(e),n.HEAPU16=new Uint16Array(e),n.HEAPU32=d=new Uint32Array(e),n.HEAPF32=new Float32Array(e),n.HEAPF64=new Float64Array(e)}n.INITIAL_MEMORY;var b=[],_=[],N=[];function k(e){b.unshift(e)}function L(e){N.unshift(e)}var S=0,v=null;function C(e){n.onAbort&&n.onAbort(e),u(e="Aborted("+e+")"),m=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw s(t),t}var j,w,P="data:application/octet-stream;base64,";function A(e){return e.startsWith(P)}function x(e){try{if(e==j&&i)return new Uint8Array(i);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}catch(e){C(e)}}function T(e){for(;e.length>0;)e.shift()(n)}function R(e){try{return c.grow(e-p.byteLength+65535>>>16),y(c.buffer),1}catch(e){}}A(j="onig.wasm")||(j=function(e){return n.locateFile?n.locateFile(e,""):""+e}(j)),w="undefined"!=typeof dateNow?dateNow:()=>performance.now();var I=[null,[],[]];function E(e,t){var s=I[e];0===t||10===t?((1===e?l:u)(f(s,0)),s.length=0):s.push(t)}var O,M={emscripten_get_now:w,emscripten_memcpy_big:function(e,t,s){h.copyWithin(e,t,t+s)},emscripten_resize_heap:function(e){var t,s=h.length,n=2147483648;if((e>>>=0)>n)return!1;for(var a=1;a<=4;a*=2){var r=s*(1+.2/a);if(r=Math.min(r,e+100663296),R(Math.min(n,(t=Math.max(e,r))+(65536-t%65536)%65536)))return!0}return!1},fd_write:function(e,t,s,n){for(var a=0,r=0;r<s;r++){var o=d[t>>2],i=d[t+4>>2];t+=8;for(var c=0;c<i;c++)E(e,h[o+c]);a+=i}return d[n>>2]=a,0}};function B(e){function s(){O||(O=!0,n.calledRun=!0,m||(T(_),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),function(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)L(n.postRun.shift());T(N)}()))}S>0||(function(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)k(n.preRun.shift());T(b)}(),S>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),s()}),1)):s()))}if(function(){var e={env:M,wasi_snapshot_preview1:M};function t(e,t){var s=e.exports;n.asm=s,y((c=n.asm.memory).buffer),n.asm.__indirect_function_table,function(e){_.unshift(e)}(n.asm.__wasm_call_ctors),function(e){if(S--,n.monitorRunDependencies&&n.monitorRunDependencies(S),0==S&&v){var t=v;v=null,t()}}()}function a(e){t(e.instance)}function r(t){return(i||!o||"function"!=typeof fetch?Promise.resolve().then((function(){return x(j)})):fetch(j,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+j+"'";return e.arrayBuffer()})).catch((function(){return x(j)}))).then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){u("failed to asynchronously prepare wasm: "+e),C(e)}))}if(S++,n.monitorRunDependencies&&n.monitorRunDependencies(S),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){u("Module.instantiateWasm callback failed with error: "+e),s(e)}(i||"function"!=typeof WebAssembly.instantiateStreaming||A(j)||"function"!=typeof fetch?r(a):fetch(j,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(a,(function(e){return u("wasm streaming compile failed: "+e),u("falling back to ArrayBuffer instantiation"),r(a)}))}))).catch(s)}(),n.___wasm_call_ctors=function(){return(n.___wasm_call_ctors=n.asm.__wasm_call_ctors).apply(null,arguments)},n.___errno_location=function(){return(n.___errno_location=n.asm.__errno_location).apply(null,arguments)},n._omalloc=function(){return(n._omalloc=n.asm.omalloc).apply(null,arguments)},n._ofree=function(){return(n._ofree=n.asm.ofree).apply(null,arguments)},n._getLastOnigError=function(){return(n._getLastOnigError=n.asm.getLastOnigError).apply(null,arguments)},n._createOnigScanner=function(){return(n._createOnigScanner=n.asm.createOnigScanner).apply(null,arguments)},n._freeOnigScanner=function(){return(n._freeOnigScanner=n.asm.freeOnigScanner).apply(null,arguments)},n._findNextOnigScannerMatch=function(){return(n._findNextOnigScannerMatch=n.asm.findNextOnigScannerMatch).apply(null,arguments)},n._findNextOnigScannerMatchDbg=function(){return(n._findNextOnigScannerMatchDbg=n.asm.findNextOnigScannerMatchDbg).apply(null,arguments)},n.stackSave=function(){return(n.stackSave=n.asm.stackSave).apply(null,arguments)},n.stackRestore=function(){return(n.stackRestore=n.asm.stackRestore).apply(null,arguments)},n.stackAlloc=function(){return(n.stackAlloc=n.asm.stackAlloc).apply(null,arguments)},n.dynCall_jiji=function(){return(n.dynCall_jiji=n.asm.dynCall_jiji).apply(null,arguments)},n.UTF8ToString=function(e,t){return e?f(h,e,t):""},v=function e(){O||B(),O||(v=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return B(),e.ready});e.exports=t}},t={},function s(n){var a=t[n];if(void 0!==a)return a.exports;var r=t[n]={exports:{}};return e[n].call(r.exports,r,r.exports,s),r.exports}(770);var e,t},l.exports=c();var u,p,h,d,m=l.exports;function g(e,t=!1){const s=e.length;let n=0,a="",r=0,o=16,i=0,c=0,l=0,u=0,p=0;function h(t,s){let a=0,r=0;for(;a<t||!s;){let t=e.charCodeAt(n);if(t>=48&&t<=57)r=16*r+t-48;else if(t>=65&&t<=70)r=16*r+t-65+10;else{if(!(t>=97&&t<=102))break;r=16*r+t-97+10}n++,a++}return a<t&&(r=-1),r}function d(){if(a="",p=0,r=n,c=i,u=l,n>=s)return r=s,o=17;let t=e.charCodeAt(n);if(f(t)){do{n++,a+=String.fromCharCode(t),t=e.charCodeAt(n)}while(f(t));return o=15}if(y(t))return n++,a+=String.fromCharCode(t),13===t&&10===e.charCodeAt(n)&&(n++,a+="\n"),i++,l=n,o=14;switch(t){case 123:return n++,o=1;case 125:return n++,o=2;case 91:return n++,o=3;case 93:return n++,o=4;case 58:return n++,o=6;case 44:return n++,o=5;case 34:return n++,a=function(){let t="",a=n;for(;;){if(n>=s){t+=e.substring(a,n),p=2;break}const r=e.charCodeAt(n);if(34===r){t+=e.substring(a,n),n++;break}if(92!==r){if(r>=0&&r<=31){if(y(r)){t+=e.substring(a,n),p=2;break}p=6}n++}else{if(t+=e.substring(a,n),n++,n>=s){p=2;break}switch(e.charCodeAt(n++)){case 34:t+='"';break;case 92:t+="\\";break;case 47:t+="/";break;case 98:t+="\b";break;case 102:t+="\f";break;case 110:t+="\n";break;case 114:t+="\r";break;case 116:t+="\t";break;case 117:const e=h(4,!0);e>=0?t+=String.fromCharCode(e):p=4;break;default:p=5}a=n}}return t}(),o=10;case 47:const c=n-1;if(47===e.charCodeAt(n+1)){for(n+=2;n<s&&!y(e.charCodeAt(n));)n++;return a=e.substring(c,n),o=12}if(42===e.charCodeAt(n+1)){n+=2;const t=s-1;let r=!1;for(;n<t;){const t=e.charCodeAt(n);if(42===t&&47===e.charCodeAt(n+1)){n+=2,r=!0;break}n++,y(t)&&(13===t&&10===e.charCodeAt(n)&&n++,i++,l=n)}return r||(n++,p=1),a=e.substring(c,n),o=13}return a+=String.fromCharCode(t),n++,o=16;case 45:if(a+=String.fromCharCode(t),n++,n===s||!b(e.charCodeAt(n)))return o=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return a+=function(){let t=n;if(48===e.charCodeAt(n))n++;else for(n++;n<e.length&&b(e.charCodeAt(n));)n++;if(n<e.length&&46===e.charCodeAt(n)){if(n++,!(n<e.length&&b(e.charCodeAt(n))))return p=3,e.substring(t,n);for(n++;n<e.length&&b(e.charCodeAt(n));)n++}let s=n;if(n<e.length&&(69===e.charCodeAt(n)||101===e.charCodeAt(n)))if(n++,(n<e.length&&43===e.charCodeAt(n)||45===e.charCodeAt(n))&&n++,n<e.length&&b(e.charCodeAt(n))){for(n++;n<e.length&&b(e.charCodeAt(n));)n++;s=n}else p=3;return e.substring(t,s)}(),o=11;default:for(;n<s&&m(t);)n++,t=e.charCodeAt(n);if(r!==n){switch(a=e.substring(r,n),a){case"true":return o=8;case"false":return o=9;case"null":return o=7}return o=16}return a+=String.fromCharCode(t),n++,o=16}}function m(e){if(f(e)||y(e))return!1;switch(e){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}return{setPosition:function(e){n=e,a="",r=0,o=16,p=0},getPosition:()=>n,scan:t?function(){let e;do{e=d()}while(e>=12&&e<=15);return e}:d,getToken:()=>o,getTokenValue:()=>a,getTokenOffset:()=>r,getTokenLength:()=>n-r,getTokenStartLine:()=>c,getTokenStartCharacter:()=>r-u,getTokenError:()=>p}}function f(e){return 32===e||9===e}function y(e){return 10===e||13===e}function b(e){return e>=48&&e<=57}!function(e){e[e.lineFeed=10]="lineFeed",e[e.carriageReturn=13]="carriageReturn",e[e.space=32]="space",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.asterisk=42]="asterisk",e[e.backslash=92]="backslash",e[e.closeBrace=125]="closeBrace",e[e.closeBracket=93]="closeBracket",e[e.colon=58]="colon",e[e.comma=44]="comma",e[e.dot=46]="dot",e[e.doubleQuote=34]="doubleQuote",e[e.minus=45]="minus",e[e.openBrace=123]="openBrace",e[e.openBracket=91]="openBracket",e[e.plus=43]="plus",e[e.slash=47]="slash",e[e.formFeed=12]="formFeed",e[e.tab=9]="tab"}(u||(u={})),function(e){e.DEFAULT={allowTrailingComma:!1}}(p||(p={})),function(e){e[e.None=0]="None",e[e.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=2]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",e[e.InvalidUnicode=4]="InvalidUnicode",e[e.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",e[e.InvalidCharacter=6]="InvalidCharacter"}(h||(h={})),function(e){e[e.OpenBraceToken=1]="OpenBraceToken",e[e.CloseBraceToken=2]="CloseBraceToken",e[e.OpenBracketToken=3]="OpenBracketToken",e[e.CloseBracketToken=4]="CloseBracketToken",e[e.CommaToken=5]="CommaToken",e[e.ColonToken=6]="ColonToken",e[e.NullKeyword=7]="NullKeyword",e[e.TrueKeyword=8]="TrueKeyword",e[e.FalseKeyword=9]="FalseKeyword",e[e.StringLiteral=10]="StringLiteral",e[e.NumericLiteral=11]="NumericLiteral",e[e.LineCommentTrivia=12]="LineCommentTrivia",e[e.BlockCommentTrivia=13]="BlockCommentTrivia",e[e.LineBreakTrivia=14]="LineBreakTrivia",e[e.Trivia=15]="Trivia",e[e.Unknown=16]="Unknown",e[e.EOF=17]="EOF"}(d||(d={}));const _=function(e,t=[],s=p.DEFAULT){let n=null,a=[];const r=[];function o(e){Array.isArray(a)?a.push(e):null!==n&&(a[n]=e)}return function(e,t,s=p.DEFAULT){const n=g(e,!1),a=[];function r(e){return e?()=>e(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function o(e){return e?()=>e(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),(()=>a.slice())):()=>!0}function i(e){return e?t=>e(t,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function c(e){return e?t=>e(t,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),(()=>a.slice())):()=>!0}const l=o(t.onObjectBegin),u=c(t.onObjectProperty),h=r(t.onObjectEnd),d=o(t.onArrayBegin),m=r(t.onArrayEnd),f=c(t.onLiteralValue),y=i(t.onSeparator),b=r(t.onComment),_=i(t.onError),N=s&&s.disallowComments,k=s&&s.allowTrailingComma;function L(){for(;;){const e=n.scan();switch(n.getTokenError()){case 4:S(14);break;case 5:S(15);break;case 3:S(13);break;case 1:N||S(11);break;case 2:S(12);break;case 6:S(16)}switch(e){case 12:case 13:N?S(10):b();break;case 16:S(1);break;case 15:case 14:break;default:return e}}}function S(e,t=[],s=[]){if(_(e),t.length+s.length>0){let e=n.getToken();for(;17!==e;){if(-1!==t.indexOf(e)){L();break}if(-1!==s.indexOf(e))break;e=L()}}}function v(e){const t=n.getTokenValue();return e?f(t):(u(t),a.push(t)),L(),!0}function C(){switch(n.getToken()){case 11:const e=n.getTokenValue();let t=Number(e);isNaN(t)&&(S(2),t=0),f(t);break;case 7:f(null);break;case 8:f(!0);break;case 9:f(!1);break;default:return!1}return L(),!0}function j(){return 10!==n.getToken()?(S(3,[],[2,5]),!1):(v(!1),6===n.getToken()?(y(":"),L(),A()||S(4,[],[2,5])):S(5,[],[2,5]),a.pop(),!0)}function w(){l(),L();let e=!1;for(;2!==n.getToken()&&17!==n.getToken();){if(5===n.getToken()){if(e||S(4,[],[]),y(","),L(),2===n.getToken()&&k)break}else e&&S(6,[],[]);j()||S(4,[],[2,5]),e=!0}return h(),2!==n.getToken()?S(7,[2],[]):L(),!0}function P(){d(),L();let e=!0,t=!1;for(;4!==n.getToken()&&17!==n.getToken();){if(5===n.getToken()){if(t||S(4,[],[]),y(","),L(),4===n.getToken()&&k)break}else t&&S(6,[],[]);e?(a.push(0),e=!1):a[a.length-1]++,A()||S(4,[],[4,5]),t=!0}return m(),e||a.pop(),4!==n.getToken()?S(8,[4],[]):L(),!0}function A(){switch(n.getToken()){case 3:return P();case 1:return w();case 10:return v(!0);default:return C()}}if(L(),17===n.getToken())return!!s.allowEmptyContent||(S(4,[],[]),!1);if(!A())return S(4,[],[]),!1;17!==n.getToken()&&S(9,[],[])}(e,{onObjectBegin:()=>{const e={};o(e),r.push(a),a=e,n=null},onObjectProperty:e=>{n=e},onObjectEnd:()=>{a=r.pop()},onArrayBegin:()=>{const e=[];o(e),r.push(a),a=e,n=null},onArrayEnd:()=>{a=r.pop()},onLiteralValue:o,onError:(e,s,n)=>{t.push({error:e,offset:s,length:n})}},s),a[0]};var N;!function(e){e[e.InvalidSymbol=1]="InvalidSymbol",e[e.InvalidNumberFormat=2]="InvalidNumberFormat",e[e.PropertyNameExpected=3]="PropertyNameExpected",e[e.ValueExpected=4]="ValueExpected",e[e.ColonExpected=5]="ColonExpected",e[e.CommaExpected=6]="CommaExpected",e[e.CloseBraceExpected=7]="CloseBraceExpected",e[e.CloseBracketExpected=8]="CloseBracketExpected",e[e.EndOfFileExpected=9]="EndOfFileExpected",e[e.InvalidCommentToken=10]="InvalidCommentToken",e[e.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=12]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",e[e.InvalidUnicode=14]="InvalidUnicode",e[e.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",e[e.InvalidCharacter=16]="InvalidCharacter"}(N||(N={}));const k="undefined"!=typeof self&&void 0!==self.WorkerGlobalScope,L="process"in globalThis&&"undefined"!=typeof process&&void 0!==process.release&&"node"===process.release.name,S=k||!L;let v="https://cdn.jsdelivr.net/npm/shiki@0.14.3/",C="";const j="dist/";function w(e){C=e}let P=null;function A(e){if(S)return`${v}${e}`;{const t=require("path");return t.isAbsolute(e)?e:t.resolve(__dirname,"..",e)}}async function x(e){const t=[],s=await async function(e){const t=A(e);if(S)return await fetch(t).then((e=>e.text()));{const e=require("fs");return await e.promises.readFile(t,"utf-8")}}(e);let n;try{n=JSON.parse(s)}catch(e){if(n=_(s,t,{allowTrailingComma:!0}),t.length)throw t[0]}return n}async function T(e){const t=R(await x(e));if(t.include){const s=await T(i(...o(e),t.include));s.settings&&(t.settings=s.settings.concat(t.settings)),s.bg&&!t.bg&&(t.bg=s.bg),s.colors&&(t.colors={...s.colors,...t.colors}),delete t.include}return t}function R(e){const t=e.type||"dark",s={name:e.name,type:t,...e,...O(e)};var n;return e.include&&(s.include=e.include),e.tokenColors&&(s.settings=e.tokenColors,delete s.tokenColors),(n=s).settings||(n.settings=[]),n.settings[0]&&n.settings[0].settings&&!n.settings[0].scope||n.settings.unshift({settings:{foreground:n.fg,background:n.bg}}),s}const I={light:"#333333",dark:"#bbbbbb"},E={light:"#fffffe",dark:"#1e1e1e"};function O(e){let t,s,n=e.settings?e.settings:e.tokenColors;const a=n?n.find((e=>!e.name&&!e.scope)):void 0;return a?.settings?.foreground&&(t=a.settings.foreground),a?.settings?.background&&(s=a.settings.background),!t&&e?.colors?.["editor.foreground"]&&(t=e.colors["editor.foreground"]),!s&&e?.colors?.["editor.background"]&&(s=e.colors["editor.background"]),t||(t="light"===e.type?I.light:I.dark),s||(s="light"===e.type?E.light:E.dark),{fg:t,bg:s}}class M{constructor(e,t){this.languagesPath="languages/",this.languageMap={},this.scopeToLangMap={},this._onigLibPromise=e,this._onigLibName=t}get onigLib(){return this._onigLibPromise}getOnigLibName(){return this._onigLibName}getLangRegistration(e){return this.languageMap[e]}async loadGrammar(e){const s=this.scopeToLangMap[e];if(!s)return null;if(s.grammar)return s.grammar;const n=await async function(e){return await x(e)}(t.includes(s)?`${this.languagesPath}${s.path}`:s.path);return s.grammar=n,n}addLanguage(e){this.languageMap[e.id]=e,e.aliases&&e.aliases.forEach((t=>{this.languageMap[t]=e})),this.scopeToLangMap[e.scopeName]=e}}var B={exports:{}};!function(e,t){var s,n;e.exports=(s={350:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UseOnigurumaFindOptions=t.DebugFlags=void 0,t.DebugFlags={InDebugMode:"undefined"!=typeof process&&!!process.env.VSCODE_TEXTMATE_DEBUG},t.UseOnigurumaFindOptions=!1},36:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.toOptionalTokenType=t.EncodedTokenAttributes=void 0,(s=t.EncodedTokenAttributes||(t.EncodedTokenAttributes={})).toBinaryStr=function(e){let t=e.toString(2);for(;t.length<32;)t="0"+t;return t},s.print=function(e){const t=s.getLanguageId(e),n=s.getTokenType(e),a=s.getFontStyle(e),r=s.getForeground(e),o=s.getBackground(e);console.log({languageId:t,tokenType:n,fontStyle:a,foreground:r,background:o})},s.getLanguageId=function(e){return(255&e)>>>0},s.getTokenType=function(e){return(768&e)>>>8},s.containsBalancedBrackets=function(e){return 0!=(1024&e)},s.getFontStyle=function(e){return(30720&e)>>>11},s.getForeground=function(e){return(16744448&e)>>>15},s.getBackground=function(e){return(4278190080&e)>>>24},s.set=function(e,t,n,a,r,o,i){let c=s.getLanguageId(e),l=s.getTokenType(e),u=s.containsBalancedBrackets(e)?1:0,p=s.getFontStyle(e),h=s.getForeground(e),d=s.getBackground(e);return 0!==t&&(c=t),8!==n&&(l=n),null!==a&&(u=a?1:0),-1!==r&&(p=r),0!==o&&(h=o),0!==i&&(d=i),(c<<0|l<<8|u<<10|p<<11|h<<15|d<<24)>>>0},t.toOptionalTokenType=function(e){return e}},996:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BasicScopeAttributesProvider=t.BasicScopeAttributes=void 0;const n=s(878);class a{constructor(e,t){this.languageId=e,this.tokenType=t}}t.BasicScopeAttributes=a;class r{constructor(e,t){this._getBasicScopeAttributes=new n.CachedFn((e=>{const t=this._scopeToLanguage(e),s=this._toStandardTokenType(e);return new a(t,s)})),this._defaultAttributes=new a(e,8),this._embeddedLanguagesMatcher=new o(Object.entries(t||{}))}getDefaultAttributes(){return this._defaultAttributes}getBasicScopeAttributes(e){return null===e?r._NULL_SCOPE_METADATA:this._getBasicScopeAttributes.get(e)}_scopeToLanguage(e){return this._embeddedLanguagesMatcher.match(e)||0}_toStandardTokenType(e){const t=e.match(r.STANDARD_TOKEN_TYPE_REGEXP);if(!t)return 8;switch(t[1]){case"comment":return 1;case"string":return 2;case"regex":return 3;case"meta.embedded":return 0}throw new Error("Unexpected match for standard token type!")}}t.BasicScopeAttributesProvider=r,r._NULL_SCOPE_METADATA=new a(0,0),r.STANDARD_TOKEN_TYPE_REGEXP=/\b(comment|string|regex|meta\.embedded)\b/;class o{constructor(e){if(0===e.length)this.values=null,this.scopesRegExp=null;else{this.values=new Map(e);const t=e.map((([e,t])=>n.escapeRegExpCharacters(e)));t.sort(),t.reverse(),this.scopesRegExp=new RegExp(`^((${t.join(")|(")}))($|\\.)`,"")}}match(e){if(!this.scopesRegExp)return;const t=e.match(this.scopesRegExp);return t?this.values.get(t[1]):void 0}}},947:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LineTokens=t.BalancedBracketSelectors=t.StateStack=t.AttributedScopeStack=t.Grammar=t.createGrammar=void 0;const n=s(350),a=s(36),r=s(736),o=s(44),i=s(792),c=s(583),l=s(878),u=s(996),p=s(47);function h(e,t,s,n,a){const o=r.createMatchers(t,d),c=i.RuleFactory.getCompiledRuleId(s,n,a.repository);for(const s of o)e.push({debugSelector:t,matcher:s.matcher,ruleId:c,grammar:a,priority:s.priority})}function d(e,t){if(t.length<e.length)return!1;let s=0;return e.every((e=>{for(let n=s;n<t.length;n++)if(m(t[n],e))return s=n+1,!0;return!1}))}function m(e,t){if(!e)return!1;if(e===t)return!0;const s=t.length;return e.length>s&&e.substr(0,s)===t&&"."===e[s]}t.createGrammar=function(e,t,s,n,a,r,o,i){return new g(e,t,s,n,a,r,o,i)};class g{constructor(e,t,s,n,a,o,i,c){if(this._rootScopeName=e,this.balancedBracketSelectors=o,this._onigLib=c,this._basicScopeAttributesProvider=new u.BasicScopeAttributesProvider(s,n),this._rootId=-1,this._lastRuleId=0,this._ruleId2desc=[null],this._includedGrammars={},this._grammarRepository=i,this._grammar=f(t,null),this._injections=null,this._tokenTypeMatchers=[],a)for(const e of Object.keys(a)){const t=r.createMatchers(e,d);for(const s of t)this._tokenTypeMatchers.push({matcher:s.matcher,type:a[e]})}}get themeProvider(){return this._grammarRepository}dispose(){for(const e of this._ruleId2desc)e&&e.dispose()}createOnigScanner(e){return this._onigLib.createOnigScanner(e)}createOnigString(e){return this._onigLib.createOnigString(e)}getMetadataForScope(e){return this._basicScopeAttributesProvider.getBasicScopeAttributes(e)}_collectInjections(){const e=[],t=this._rootScopeName,s=(e=>e===this._rootScopeName?this._grammar:this.getExternalGrammar(e))(t);if(s){const n=s.injections;if(n)for(let t in n)h(e,t,n[t],this,s);const a=this._grammarRepository.injections(t);a&&a.forEach((t=>{const s=this.getExternalGrammar(t);if(s){const t=s.injectionSelector;t&&h(e,t,s,this,s)}}))}return e.sort(((e,t)=>e.priority-t.priority)),e}getInjections(){if(null===this._injections&&(this._injections=this._collectInjections(),n.DebugFlags.InDebugMode&&this._injections.length>0)){console.log(`Grammar ${this._rootScopeName} contains the following injections:`);for(const e of this._injections)console.log(` - ${e.debugSelector}`)}return this._injections}registerRule(e){const t=++this._lastRuleId,s=e(i.ruleIdFromNumber(t));return this._ruleId2desc[t]=s,s}getRule(e){return this._ruleId2desc[i.ruleIdToNumber(e)]}getExternalGrammar(e,t){if(this._includedGrammars[e])return this._includedGrammars[e];if(this._grammarRepository){const s=this._grammarRepository.lookup(e);if(s)return this._includedGrammars[e]=f(s,t&&t.$base),this._includedGrammars[e]}}tokenizeLine(e,t,s=0){const n=this._tokenize(e,t,!1,s);return{tokens:n.lineTokens.getResult(n.ruleStack,n.lineLength),ruleStack:n.ruleStack,stoppedEarly:n.stoppedEarly}}tokenizeLine2(e,t,s=0){const n=this._tokenize(e,t,!0,s);return{tokens:n.lineTokens.getBinaryResult(n.ruleStack,n.lineLength),ruleStack:n.ruleStack,stoppedEarly:n.stoppedEarly}}_tokenize(e,t,s,n){let r;if(-1===this._rootId&&(this._rootId=i.RuleFactory.getCompiledRuleId(this._grammar.repository.$self,this,this._grammar.repository)),t&&t!==b.NULL)r=!1,t.reset();else{r=!0;const e=this._basicScopeAttributesProvider.getDefaultAttributes(),s=this.themeProvider.getDefaults(),n=a.EncodedTokenAttributes.set(0,e.languageId,e.tokenType,null,s.fontStyle,s.foregroundId,s.backgroundId),o=this.getRule(this._rootId).getName(null,null);let i;i=o?y.createRootAndLookUpScopeName(o,n,this):y.createRoot("unknown",n),t=new b(null,this._rootId,-1,-1,!1,null,i,i)}e+="\n";const c=this.createOnigString(e),l=c.content.length,u=new _(s,e,this._tokenTypeMatchers,this.balancedBracketSelectors),h=p._tokenizeString(this,c,r,0,t,u,!0,n);return o.disposeOnigString(c),{lineLength:l,lineTokens:u,ruleStack:h.stack,stoppedEarly:h.stoppedEarly}}}function f(e,t){return(e=l.clone(e)).repository=e.repository||{},e.repository.$self={$vscodeTextmateLocation:e.$vscodeTextmateLocation,patterns:e.patterns,name:e.scopeName},e.repository.$base=t||e.repository.$self,e}t.Grammar=g;class y{constructor(e,t,s){this.parent=e,this.scopePath=t,this.tokenAttributes=s}static createRoot(e,t){return new y(null,new c.ScopeStack(null,e),t)}static createRootAndLookUpScopeName(e,t,s){const n=s.getMetadataForScope(e),a=new c.ScopeStack(null,e),r=s.themeProvider.themeMatch(a),o=y.mergeAttributes(t,n,r);return new y(null,a,o)}get scopeName(){return this.scopePath.scopeName}equals(e){return y._equals(this,e)}static _equals(e,t){for(;;){if(e===t)return!0;if(!e&&!t)return!0;if(!e||!t)return!1;if(e.scopeName!==t.scopeName||e.tokenAttributes!==t.tokenAttributes)return!1;e=e.parent,t=t.parent}}static mergeAttributes(e,t,s){let n=-1,r=0,o=0;return null!==s&&(n=s.fontStyle,r=s.foregroundId,o=s.backgroundId),a.EncodedTokenAttributes.set(e,t.languageId,t.tokenType,null,n,r,o)}pushAttributed(e,t){if(null===e)return this;if(-1===e.indexOf(" "))return y._pushAttributed(this,e,t);const s=e.split(/ /g);let n=this;for(const e of s)n=y._pushAttributed(n,e,t);return n}static _pushAttributed(e,t,s){const n=s.getMetadataForScope(t),a=e.scopePath.push(t),r=s.themeProvider.themeMatch(a),o=y.mergeAttributes(e.tokenAttributes,n,r);return new y(e,a,o)}getScopeNames(){return this.scopePath.getSegments()}}t.AttributedScopeStack=y;class b{constructor(e,t,s,n,a,r,o,i){this.parent=e,this.ruleId=t,this.beginRuleCapturedEOL=a,this.endRule=r,this.nameScopesList=o,this.contentNameScopesList=i,this._stackElementBrand=void 0,this.depth=this.parent?this.parent.depth+1:1,this._enterPos=s,this._anchorPos=n}equals(e){return null!==e&&b._equals(this,e)}static _equals(e,t){return e===t||!!this._structuralEquals(e,t)&&e.contentNameScopesList.equals(t.contentNameScopesList)}static _structuralEquals(e,t){for(;;){if(e===t)return!0;if(!e&&!t)return!0;if(!e||!t)return!1;if(e.depth!==t.depth||e.ruleId!==t.ruleId||e.endRule!==t.endRule)return!1;e=e.parent,t=t.parent}}clone(){return this}static _reset(e){for(;e;)e._enterPos=-1,e._anchorPos=-1,e=e.parent}reset(){b._reset(this)}pop(){return this.parent}safePop(){return this.parent?this.parent:this}push(e,t,s,n,a,r,o){return new b(this,e,t,s,n,a,r,o)}getEnterPos(){return this._enterPos}getAnchorPos(){return this._anchorPos}getRule(e){return e.getRule(this.ruleId)}toString(){const e=[];return this._writeString(e,0),"["+e.join(",")+"]"}_writeString(e,t){return this.parent&&(t=this.parent._writeString(e,t)),e[t++]=`(${this.ruleId}, TODO-${this.nameScopesList}, TODO-${this.contentNameScopesList})`,t}withContentNameScopesList(e){return this.contentNameScopesList===e?this:this.parent.push(this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,this.endRule,this.nameScopesList,e)}withEndRule(e){return this.endRule===e?this:new b(this.parent,this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,e,this.nameScopesList,this.contentNameScopesList)}hasSameRuleAs(e){let t=this;for(;t&&t._enterPos===e._enterPos;){if(t.ruleId===e.ruleId)return!0;t=t.parent}return!1}}t.StateStack=b,b.NULL=new b(null,0,0,0,!1,null,null,null),t.BalancedBracketSelectors=class{constructor(e,t){this.allowAny=!1,this.balancedBracketScopes=e.flatMap((e=>"*"===e?(this.allowAny=!0,[]):r.createMatchers(e,d).map((e=>e.matcher)))),this.unbalancedBracketScopes=t.flatMap((e=>r.createMatchers(e,d).map((e=>e.matcher))))}get matchesAlways(){return this.allowAny&&0===this.unbalancedBracketScopes.length}get matchesNever(){return 0===this.balancedBracketScopes.length&&!this.allowAny}match(e){for(const t of this.unbalancedBracketScopes)if(t(e))return!1;for(const t of this.balancedBracketScopes)if(t(e))return!0;return this.allowAny}};class _{constructor(e,t,s,a){this.balancedBracketSelectors=a,this._emitBinaryTokens=e,this._tokenTypeOverrides=s,n.DebugFlags.InDebugMode?this._lineText=t:this._lineText=null,this._tokens=[],this._binaryTokens=[],this._lastTokenEndIndex=0}produce(e,t){this.produceFromScopes(e.contentNameScopesList,t)}produceFromScopes(e,t){if(this._lastTokenEndIndex>=t)return;if(this._emitBinaryTokens){let s=e.tokenAttributes,r=!1;if(this.balancedBracketSelectors?.matchesAlways&&(r=!0),this._tokenTypeOverrides.length>0||this.balancedBracketSelectors&&!this.balancedBracketSelectors.matchesAlways&&!this.balancedBracketSelectors.matchesNever){const t=e.getScopeNames();for(const e of this._tokenTypeOverrides)e.matcher(t)&&(s=a.EncodedTokenAttributes.set(s,0,a.toOptionalTokenType(e.type),null,-1,0,0));this.balancedBracketSelectors&&(r=this.balancedBracketSelectors.match(t))}if(r&&(s=a.EncodedTokenAttributes.set(s,0,8,r,-1,0,0)),this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-1]===s)return void(this._lastTokenEndIndex=t);if(n.DebugFlags.InDebugMode){const s=e.getScopeNames();console.log(" token: |"+this._lineText.substring(this._lastTokenEndIndex,t).replace(/\n$/,"\\n")+"|");for(let e=0;e<s.length;e++)console.log(" * "+s[e])}return this._binaryTokens.push(this._lastTokenEndIndex),this._binaryTokens.push(s),void(this._lastTokenEndIndex=t)}const s=e.getScopeNames();if(n.DebugFlags.InDebugMode){console.log(" token: |"+this._lineText.substring(this._lastTokenEndIndex,t).replace(/\n$/,"\\n")+"|");for(let e=0;e<s.length;e++)console.log(" * "+s[e])}this._tokens.push({startIndex:this._lastTokenEndIndex,endIndex:t,scopes:s}),this._lastTokenEndIndex=t}getResult(e,t){return this._tokens.length>0&&this._tokens[this._tokens.length-1].startIndex===t-1&&this._tokens.pop(),0===this._tokens.length&&(this._lastTokenEndIndex=-1,this.produce(e,t),this._tokens[this._tokens.length-1].startIndex=0),this._tokens}getBinaryResult(e,t){this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-2]===t-1&&(this._binaryTokens.pop(),this._binaryTokens.pop()),0===this._binaryTokens.length&&(this._lastTokenEndIndex=-1,this.produce(e,t),this._binaryTokens[this._binaryTokens.length-2]=0);const s=new Uint32Array(this._binaryTokens.length);for(let e=0,t=this._binaryTokens.length;e<t;e++)s[e]=this._binaryTokens[e];return s}}t.LineTokens=_},965:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseInclude=t.TopLevelRepositoryReference=t.TopLevelReference=t.RelativeReference=t.SelfReference=t.BaseReference=t.ScopeDependencyProcessor=t.ExternalReferenceCollector=t.TopLevelRepositoryRuleReference=t.TopLevelRuleReference=void 0;const n=s(878);class a{constructor(e){this.scopeName=e}toKey(){return this.scopeName}}t.TopLevelRuleReference=a;class r{constructor(e,t){this.scopeName=e,this.ruleName=t}toKey(){return`${this.scopeName}#${this.ruleName}`}}t.TopLevelRepositoryRuleReference=r;class o{constructor(){this._references=[],this._seenReferenceKeys=new Set,this.visitedRule=new Set}get references(){return this._references}add(e){const t=e.toKey();this._seenReferenceKeys.has(t)||(this._seenReferenceKeys.add(t),this._references.push(e))}}function i(e,t,s,n){const r=s.lookup(e.scopeName);if(!r){if(e.scopeName===t)throw new Error(`No grammar provided for <${t}>`);return}const o=s.lookup(t);e instanceof a?l({baseGrammar:o,selfGrammar:r},n):c(e.ruleName,{baseGrammar:o,selfGrammar:r,repository:r.repository},n);const i=s.injections(e.scopeName);if(i)for(const e of i)n.add(new a(e))}function c(e,t,s){t.repository&&t.repository[e]&&u([t.repository[e]],t,s)}function l(e,t){e.selfGrammar.patterns&&Array.isArray(e.selfGrammar.patterns)&&u(e.selfGrammar.patterns,{...e,repository:e.selfGrammar.repository},t),e.selfGrammar.injections&&u(Object.values(e.selfGrammar.injections),{...e,repository:e.selfGrammar.repository},t)}function u(e,t,s){for(const o of e){if(s.visitedRule.has(o))continue;s.visitedRule.add(o);const e=o.repository?n.mergeObjects({},t.repository,o.repository):t.repository;Array.isArray(o.patterns)&&u(o.patterns,{...t,repository:e},s);const i=o.include;if(!i)continue;const p=f(i);switch(p.kind){case 0:l({...t,selfGrammar:t.baseGrammar},s);break;case 1:l(t,s);break;case 2:c(p.ruleName,{...t,repository:e},s);break;case 3:case 4:const n=p.scopeName===t.selfGrammar.scopeName?t.selfGrammar:p.scopeName===t.baseGrammar.scopeName?t.baseGrammar:void 0;if(n){const a={baseGrammar:t.baseGrammar,selfGrammar:n,repository:e};4===p.kind?c(p.ruleName,a,s):l(a,s)}else 4===p.kind?s.add(new r(p.scopeName,p.ruleName)):s.add(new a(p.scopeName))}}}t.ExternalReferenceCollector=o,t.ScopeDependencyProcessor=class{constructor(e,t){this.repo=e,this.initialScopeName=t,this.seenFullScopeRequests=new Set,this.seenPartialScopeRequests=new Set,this.seenFullScopeRequests.add(this.initialScopeName),this.Q=[new a(this.initialScopeName)]}processQueue(){const e=this.Q;this.Q=[];const t=new o;for(const s of e)i(s,this.initialScopeName,this.repo,t);for(const e of t.references)if(e instanceof a){if(this.seenFullScopeRequests.has(e.scopeName))continue;this.seenFullScopeRequests.add(e.scopeName),this.Q.push(e)}else{if(this.seenFullScopeRequests.has(e.scopeName))continue;if(this.seenPartialScopeRequests.has(e.toKey()))continue;this.seenPartialScopeRequests.add(e.toKey()),this.Q.push(e)}}};class p{constructor(){this.kind=0}}t.BaseReference=p;class h{constructor(){this.kind=1}}t.SelfReference=h;class d{constructor(e){this.ruleName=e,this.kind=2}}t.RelativeReference=d;class m{constructor(e){this.scopeName=e,this.kind=3}}t.TopLevelReference=m;class g{constructor(e,t){this.scopeName=e,this.ruleName=t,this.kind=4}}function f(e){if("$base"===e)return new p;if("$self"===e)return new h;const t=e.indexOf("#");if(-1===t)return new m(e);if(0===t)return new d(e.substring(1));{const s=e.substring(0,t),n=e.substring(t+1);return new g(s,n)}}t.TopLevelRepositoryReference=g,t.parseInclude=f},391:function(e,t,s){var n=this&&this.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),a=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||n(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),a(s(947),t)},47:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LocalStackElement=t._tokenizeString=void 0;const n=s(350),a=s(44),r=s(792),o=s(878);class i{constructor(e,t){this.stack=e,this.stoppedEarly=t}}function c(e,t,s,a,c,p,d,m){const g=t.content.length;let f=!1,y=-1;if(d){const o=function(e,t,s,a,o,i){let c=o.beginRuleCapturedEOL?0:-1;const l=[];for(let t=o;t;t=t.pop()){const s=t.getRule(e);s instanceof r.BeginWhileRule&&l.push({rule:s,stack:t})}for(let p=l.pop();p;p=l.pop()){const{ruleScanner:l,findOptions:d}=u(p.rule,e,p.stack.endRule,s,a===c),m=l.findNextMatchSync(t,a,d);if(n.DebugFlags.InDebugMode&&(console.log(" scanning for while rule"),console.log(l.toString())),!m){n.DebugFlags.InDebugMode&&console.log(" popping "+p.rule.debugName+" - "+p.rule.debugWhileRegExp),o=p.stack.pop();break}if(m.ruleId!==r.whileRuleId){o=p.stack.pop();break}m.captureIndices&&m.captureIndices.length&&(i.produce(p.stack,m.captureIndices[0].start),h(e,t,s,p.stack,i,p.rule.whileCaptures,m.captureIndices),i.produce(p.stack,m.captureIndices[0].end),c=m.captureIndices[0].end,m.captureIndices[0].end>a&&(a=m.captureIndices[0].end,s=!1))}return{stack:o,linePos:a,anchorPosition:c,isFirstLine:s}}(e,t,s,a,c,p);c=o.stack,a=o.linePos,s=o.isFirstLine,y=o.anchorPosition}const b=Date.now();for(;!f;){if(0!==m&&Date.now()-b>m)return new i(c,!0);_()}return new i(c,!1);function _(){n.DebugFlags.InDebugMode&&(console.log(""),console.log(`@@scanNext ${a}: |${t.content.substr(a).replace(/\n$/,"\\n")}|`));const i=function(e,t,s,a,r,i){const c=function(e,t,s,a,r,i){const c=r.getRule(e),{ruleScanner:u,findOptions:p}=l(c,e,r.endRule,s,a===i);let h=0;n.DebugFlags.InDebugMode&&(h=o.performanceNow());const d=u.findNextMatchSync(t,a,p);if(n.DebugFlags.InDebugMode){const e=o.performanceNow()-h;e>5&&console.warn(`Rule ${c.debugName} (${c.id}) matching took ${e} against '${t}'`),console.log(` scanning for (linePos: ${a}, anchorPosition: ${i})`),console.log(u.toString()),d&&console.log(`matched rule id: ${d.ruleId} from ${d.captureIndices[0].start} to ${d.captureIndices[0].end}`)}return d?{captureIndices:d.captureIndices,matchedRuleId:d.ruleId}:null}(e,t,s,a,r,i),u=e.getInjections();if(0===u.length)return c;const p=function(e,t,s,a,r,o,i){let c,u=Number.MAX_VALUE,p=null,h=0;const d=o.contentNameScopesList.getScopeNames();for(let o=0,m=e.length;o<m;o++){const m=e[o];if(!m.matcher(d))continue;const g=t.getRule(m.ruleId),{ruleScanner:f,findOptions:y}=l(g,t,null,a,r===i),b=f.findNextMatchSync(s,r,y);if(!b)continue;n.DebugFlags.InDebugMode&&(console.log(` matched injection: ${m.debugSelector}`),console.log(f.toString()));const _=b.captureIndices[0].start;if(!(_>=u)&&(u=_,p=b.captureIndices,c=b.ruleId,h=m.priority,u===r))break}return p?{priorityMatch:-1===h,captureIndices:p,matchedRuleId:c}:null}(u,e,t,s,a,r,i);if(!p)return c;if(!c)return p;const h=c.captureIndices[0].start,d=p.captureIndices[0].start;return d<h||p.priorityMatch&&d===h?p:c}(e,t,s,a,c,y);if(!i)return n.DebugFlags.InDebugMode&&console.log(" no more matches."),p.produce(c,g),void(f=!0);const u=i.captureIndices,d=i.matchedRuleId,m=!!(u&&u.length>0)&&u[0].end>a;if(d===r.endRuleId){const r=c.getRule(e);n.DebugFlags.InDebugMode&&console.log(" popping "+r.debugName+" - "+r.debugEndRegExp),p.produce(c,u[0].start),c=c.withContentNameScopesList(c.nameScopesList),h(e,t,s,c,p,r.endCaptures,u),p.produce(c,u[0].end);const o=c;if(c=c.parent,y=o.getAnchorPos(),!m&&o.getEnterPos()===a)return n.DebugFlags.InDebugMode&&console.error("[1] - Grammar is in an endless loop - Grammar pushed & popped a rule without advancing"),c=o,p.produce(c,g),void(f=!0)}else{const o=e.getRule(d);p.produce(c,u[0].start);const i=c,l=o.getName(t.content,u),b=c.contentNameScopesList.pushAttributed(l,e);if(c=c.push(d,a,y,u[0].end===g,null,b,b),o instanceof r.BeginEndRule){const a=o;n.DebugFlags.InDebugMode&&console.log(" pushing "+a.debugName+" - "+a.debugBeginRegExp),h(e,t,s,c,p,a.beginCaptures,u),p.produce(c,u[0].end),y=u[0].end;const r=a.getContentName(t.content,u),l=b.pushAttributed(r,e);if(c=c.withContentNameScopesList(l),a.endHasBackReferences&&(c=c.withEndRule(a.getEndWithResolvedBackReferences(t.content,u))),!m&&i.hasSameRuleAs(c))return n.DebugFlags.InDebugMode&&console.error("[2] - Grammar is in an endless loop - Grammar pushed the same rule without advancing"),c=c.pop(),p.produce(c,g),void(f=!0)}else if(o instanceof r.BeginWhileRule){const a=o;n.DebugFlags.InDebugMode&&console.log(" pushing "+a.debugName),h(e,t,s,c,p,a.beginCaptures,u),p.produce(c,u[0].end),y=u[0].end;const r=a.getContentName(t.content,u),l=b.pushAttributed(r,e);if(c=c.withContentNameScopesList(l),a.whileHasBackReferences&&(c=c.withEndRule(a.getWhileWithResolvedBackReferences(t.content,u))),!m&&i.hasSameRuleAs(c))return n.DebugFlags.InDebugMode&&console.error("[3] - Grammar is in an endless loop - Grammar pushed the same rule without advancing"),c=c.pop(),p.produce(c,g),void(f=!0)}else{const a=o;if(n.DebugFlags.InDebugMode&&console.log(" matched "+a.debugName+" - "+a.debugMatchRegExp),h(e,t,s,c,p,a.captures,u),p.produce(c,u[0].end),c=c.pop(),!m)return n.DebugFlags.InDebugMode&&console.error("[4] - Grammar is in an endless loop - Grammar is not advancing, nor is it pushing/popping"),c=c.safePop(),p.produce(c,g),void(f=!0)}}u[0].end>a&&(a=u[0].end,s=!1)}}function l(e,t,s,a,r){return n.UseOnigurumaFindOptions?{ruleScanner:e.compile(t,s),findOptions:p(a,r)}:{ruleScanner:e.compileAG(t,s,a,r),findOptions:0}}function u(e,t,s,a,r){return n.UseOnigurumaFindOptions?{ruleScanner:e.compileWhile(t,s),findOptions:p(a,r)}:{ruleScanner:e.compileWhileAG(t,s,a,r),findOptions:0}}function p(e,t){let s=0;return e||(s|=1),t||(s|=4),s}function h(e,t,s,n,r,o,i){if(0===o.length)return;const l=t.content,u=Math.min(o.length,i.length),p=[],h=i[0].end;for(let t=0;t<u;t++){const u=o[t];if(null===u)continue;const m=i[t];if(0===m.length)continue;if(m.start>h)break;for(;p.length>0&&p[p.length-1].endPos<=m.start;)r.produceFromScopes(p[p.length-1].scopes,p[p.length-1].endPos),p.pop();if(p.length>0?r.produceFromScopes(p[p.length-1].scopes,m.start):r.produce(n,m.start),u.retokenizeCapturedWithRuleId){const t=u.getName(l,i),o=n.contentNameScopesList.pushAttributed(t,e),p=u.getContentName(l,i),h=o.pushAttributed(p,e),d=n.push(u.retokenizeCapturedWithRuleId,m.start,-1,!1,null,o,h),g=e.createOnigString(l.substring(0,m.end));c(e,g,s&&0===m.start,m.start,d,r,!1,0),a.disposeOnigString(g);continue}const g=u.getName(l,i);if(null!==g){const t=(p.length>0?p[p.length-1].scopes:n.contentNameScopesList).pushAttributed(g,e);p.push(new d(t,m.end))}}for(;p.length>0;)r.produceFromScopes(p[p.length-1].scopes,p[p.length-1].endPos),p.pop()}t._tokenizeString=c;class d{constructor(e,t){this.scopes=e,this.endPos=t}}t.LocalStackElement=d},974:(e,t)=>{function s(e,t){throw new Error("Near offset "+e.pos+": "+t+" ~~~"+e.source.substr(e.pos,50)+"~~~")}Object.defineProperty(t,"__esModule",{value:!0}),t.parseJSON=void 0,t.parseJSON=function(e,t,o){let i=new n(e),c=new a,l=0,u=null,p=[],h=[];function d(){p.push(l),h.push(u)}function m(){l=p.pop(),u=h.pop()}function g(e){s(i,e)}for(;r(i,c);){if(0===l){if(null!==u&&g("too many constructs in root"),3===c.type){u={},o&&(u.$vscodeTextmateLocation=c.toLocation(t)),d(),l=1;continue}if(2===c.type){u=[],d(),l=4;continue}g("unexpected token in root")}if(2===l){if(5===c.type){m();continue}if(7===c.type){l=3;continue}g("expected , or }")}if(1===l||3===l){if(1===l&&5===c.type){m();continue}if(1===c.type){let e=c.value;if(r(i,c)&&6===c.type||g("expected colon"),r(i,c)||g("expected value"),l=2,1===c.type){u[e]=c.value;continue}if(8===c.type){u[e]=null;continue}if(9===c.type){u[e]=!0;continue}if(10===c.type){u[e]=!1;continue}if(11===c.type){u[e]=parseFloat(c.value);continue}if(2===c.type){let t=[];u[e]=t,d(),l=4,u=t;continue}if(3===c.type){let s={};o&&(s.$vscodeTextmateLocation=c.toLocation(t)),u[e]=s,d(),l=1,u=s;continue}}g("unexpected token in dict")}if(5===l){if(4===c.type){m();continue}if(7===c.type){l=6;continue}g("expected , or ]")}if(4===l||6===l){if(4===l&&4===c.type){m();continue}if(l=5,1===c.type){u.push(c.value);continue}if(8===c.type){u.push(null);continue}if(9===c.type){u.push(!0);continue}if(10===c.type){u.push(!1);continue}if(11===c.type){u.push(parseFloat(c.value));continue}if(2===c.type){let e=[];u.push(e),d(),l=4,u=e;continue}if(3===c.type){let e={};o&&(e.$vscodeTextmateLocation=c.toLocation(t)),u.push(e),d(),l=1,u=e;continue}g("unexpected token in array")}g("unknown state")}return 0!==h.length&&g("unclosed constructs"),u};class n{constructor(e){this.source=e,this.pos=0,this.len=e.length,this.line=1,this.char=0}}class a{constructor(){this.value=null,this.type=0,this.offset=-1,this.len=-1,this.line=-1,this.char=-1}toLocation(e){return{filename:e,line:this.line,char:this.char}}}function r(e,t){t.value=null,t.type=0,t.offset=-1,t.len=-1,t.line=-1,t.char=-1;let n,a=e.source,r=e.pos,o=e.len,i=e.line,c=e.char;for(;;){if(r>=o)return!1;if(n=a.charCodeAt(r),32!==n&&9!==n&&13!==n){if(10!==n)break;r++,i++,c=0}else r++,c++}if(t.offset=r,t.line=i,t.char=c,34===n){for(t.type=1,r++,c++;;){if(r>=o)return!1;if(n=a.charCodeAt(r),r++,c++,92!==n){if(34===n)break}else r++,c++}t.value=a.substring(t.offset+1,r-1).replace(/\\u([0-9A-Fa-f]{4})/g,((e,t)=>String.fromCodePoint(parseInt(t,16)))).replace(/\\(.)/g,((t,n)=>{switch(n){case'"':return'"';case"\\":return"\\";case"/":return"/";case"b":return"\b";case"f":return"\f";case"n":return"\n";case"r":return"\r";case"t":return"\t";default:s(e,"invalid escape sequence")}throw new Error("unreachable")}))}else if(91===n)t.type=2,r++,c++;else if(123===n)t.type=3,r++,c++;else if(93===n)t.type=4,r++,c++;else if(125===n)t.type=5,r++,c++;else if(58===n)t.type=6,r++,c++;else if(44===n)t.type=7,r++,c++;else if(110===n){if(t.type=8,r++,c++,n=a.charCodeAt(r),117!==n)return!1;if(r++,c++,n=a.charCodeAt(r),108!==n)return!1;if(r++,c++,n=a.charCodeAt(r),108!==n)return!1;r++,c++}else if(116===n){if(t.type=9,r++,c++,n=a.charCodeAt(r),114!==n)return!1;if(r++,c++,n=a.charCodeAt(r),117!==n)return!1;if(r++,c++,n=a.charCodeAt(r),101!==n)return!1;r++,c++}else if(102===n){if(t.type=10,r++,c++,n=a.charCodeAt(r),97!==n)return!1;if(r++,c++,n=a.charCodeAt(r),108!==n)return!1;if(r++,c++,n=a.charCodeAt(r),115!==n)return!1;if(r++,c++,n=a.charCodeAt(r),101!==n)return!1;r++,c++}else for(t.type=11;;){if(r>=o)return!1;if(n=a.charCodeAt(r),!(46===n||n>=48&&n<=57||101===n||69===n||45===n||43===n))break;r++,c++}return t.len=r-t.offset,null===t.value&&(t.value=a.substr(t.offset,t.len)),e.pos=r,e.line=i,e.char=c,!0}},787:function(e,t,s){var n=this&&this.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),a=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||n(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),t.parseRawGrammar=t.INITIAL=t.Registry=void 0;const r=s(391),o=s(50),i=s(652),c=s(583),l=s(965);a(s(44),t),t.Registry=class{constructor(e){this._options=e,this._syncRegistry=new i.SyncRegistry(c.Theme.createFromRawTheme(e.theme,e.colorMap),e.onigLib),this._ensureGrammarCache=new Map}dispose(){this._syncRegistry.dispose()}setTheme(e,t){this._syncRegistry.setTheme(c.Theme.createFromRawTheme(e,t))}getColorMap(){return this._syncRegistry.getColorMap()}loadGrammarWithEmbeddedLanguages(e,t,s){return this.loadGrammarWithConfiguration(e,t,{embeddedLanguages:s})}loadGrammarWithConfiguration(e,t,s){return this._loadGrammar(e,t,s.embeddedLanguages,s.tokenTypes,new r.BalancedBracketSelectors(s.balancedBracketSelectors||[],s.unbalancedBracketSelectors||[]))}loadGrammar(e){return this._loadGrammar(e,0,null,null,null)}async _loadGrammar(e,t,s,n,a){const r=new l.ScopeDependencyProcessor(this._syncRegistry,e);for(;r.Q.length>0;)await Promise.all(r.Q.map((e=>this._loadSingleGrammar(e.scopeName)))),r.processQueue();return this._grammarForScopeName(e,t,s,n,a)}async _loadSingleGrammar(e){return this._ensureGrammarCache.has(e)||this._ensureGrammarCache.set(e,this._doLoadSingleGrammar(e)),this._ensureGrammarCache.get(e)}async _doLoadSingleGrammar(e){const t=await this._options.loadGrammar(e);if(t){const s="function"==typeof this._options.getInjections?this._options.getInjections(e):void 0;this._syncRegistry.addGrammar(t,s)}}async addGrammar(e,t=[],s=0,n=null){return this._syncRegistry.addGrammar(e,t),await this._grammarForScopeName(e.scopeName,s,n)}_grammarForScopeName(e,t=0,s=null,n=null,a=null){return this._syncRegistry.grammarForScopeName(e,t,s,n,a)}},t.INITIAL=r.StateStack.NULL,t.parseRawGrammar=o.parseRawGrammar},736:(e,t)=>{function s(e){return!!e&&!!e.match(/[\w\.:]+/)}Object.defineProperty(t,"__esModule",{value:!0}),t.createMatchers=void 0,t.createMatchers=function(e,t){const n=[],a=function(e){let t=/([LR]:|[\w\.:][\w\.:\-]*|[\,\|\-\(\)])/g,s=t.exec(e);return{next:()=>{if(!s)return null;const n=s[0];return s=t.exec(e),n}}}(e);let r=a.next();for(;null!==r;){let e=0;if(2===r.length&&":"===r.charAt(1)){switch(r.charAt(0)){case"R":e=1;break;case"L":e=-1;break;default:console.log(`Unknown priority ${r} in scope selector`)}r=a.next()}let t=i();if(n.push({matcher:t,priority:e}),","!==r)break;r=a.next()}return n;function o(){if("-"===r){r=a.next();const e=o();return t=>!!e&&!e(t)}if("("===r){r=a.next();const e=function(){const e=[];let t=i();for(;t&&(e.push(t),"|"===r||","===r);){do{r=a.next()}while("|"===r||","===r);t=i()}return t=>e.some((e=>e(t)))}();return")"===r&&(r=a.next()),e}if(s(r)){const e=[];do{e.push(r),r=a.next()}while(s(r));return s=>t(e,s)}return null}function i(){const e=[];let t=o();for(;t;)e.push(t),t=o();return t=>e.every((e=>e(t)))}}},44:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.disposeOnigString=void 0,t.disposeOnigString=function(e){"function"==typeof e.dispose&&e.dispose()}},50:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseRawGrammar=void 0;const n=s(69),a=s(350),r=s(974);t.parseRawGrammar=function(e,t=null){return null!==t&&/\.json$/.test(t)?(s=e,o=t,a.DebugFlags.InDebugMode?r.parseJSON(s,o,!0):JSON.parse(s)):function(e,t){return a.DebugFlags.InDebugMode?n.parseWithLocation(e,t,"$vscodeTextmateLocation"):n.parsePLIST(e)}(e,t);var s,o}},69:(e,t)=>{function s(e,t,s){const n=e.length;let a=0,r=1,o=0;function i(t){if(null===s)a+=t;else for(;t>0;)10===e.charCodeAt(a)?(a++,r++,o=0):(a++,o++),t--}function c(e){null===s?a=e:i(e-a)}function l(){for(;a<n;){let t=e.charCodeAt(a);if(32!==t&&9!==t&&13!==t&&10!==t)break;i(1)}}function u(t){return e.substr(a,t.length)===t&&(i(t.length),!0)}function p(t){let s=e.indexOf(t,a);c(-1!==s?s+t.length:n)}function h(t){let s=e.indexOf(t,a);if(-1!==s){let n=e.substring(a,s);return c(s+t.length),n}{let t=e.substr(a);return c(n),t}}n>0&&65279===e.charCodeAt(0)&&(a=1);let d=0,m=null,g=[],f=[],y=null;function b(e,t){g.push(d),f.push(m),d=e,m=t}function _(){if(0===g.length)return N("illegal state stack");d=g.pop(),m=f.pop()}function N(t){throw new Error("Near offset "+a+": "+t+" ~~~"+e.substr(a,50)+"~~~")}const k=function(){if(null===y)return N("missing <key>");let e={};null!==s&&(e[s]={filename:t,line:r,char:o}),m[y]=e,y=null,b(1,e)},L=function(){if(null===y)return N("missing <key>");let e=[];m[y]=e,y=null,b(2,e)},S=function(){let e={};null!==s&&(e[s]={filename:t,line:r,char:o}),m.push(e),b(1,e)},v=function(){let e=[];m.push(e),b(2,e)};function C(){if(1!==d)return N("unexpected </dict>");_()}function j(){return 1===d||2!==d?N("unexpected </array>"):void _()}function w(e){if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function P(e){if(isNaN(e))return N("cannot parse float");if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function A(e){if(isNaN(e))return N("cannot parse integer");if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function x(e){if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function T(e){if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function R(e){if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function I(){let e=h(">"),t=!1;return 47===e.charCodeAt(e.length-1)&&(t=!0,e=e.substring(0,e.length-1)),{name:e.trim(),isClosed:t}}function E(e){if(e.isClosed)return"";let t=h("</");return p(">"),t.replace(/&#([0-9]+);/g,(function(e,t){return String.fromCodePoint(parseInt(t,10))})).replace(/&#x([0-9a-f]+);/g,(function(e,t){return String.fromCodePoint(parseInt(t,16))})).replace(/&amp;|&lt;|&gt;|&quot;|&apos;/g,(function(e){switch(e){case"&amp;":return"&";case"&lt;":return"<";case"&gt;":return">";case"&quot;":return'"';case"&apos;":return"'"}return e}))}for(;a<n&&(l(),!(a>=n));){const c=e.charCodeAt(a);if(i(1),60!==c)return N("expected <");if(a>=n)return N("unexpected end of input");const h=e.charCodeAt(a);if(63===h){i(1),p("?>");continue}if(33===h){if(i(1),u("--")){p("--\x3e");continue}p(">");continue}if(47===h){if(i(1),l(),u("plist")){p(">");continue}if(u("dict")){p(">"),C();continue}if(u("array")){p(">"),j();continue}return N("unexpected closed tag")}let g=I();switch(g.name){case"dict":1===d?k():2===d?S():(m={},null!==s&&(m[s]={filename:t,line:r,char:o}),b(1,m)),g.isClosed&&C();continue;case"array":1===d?L():2===d?v():(m=[],b(2,m)),g.isClosed&&j();continue;case"key":O=E(g),1!==d?N("unexpected <key>"):null!==y?N("too many <key>"):y=O;continue;case"string":w(E(g));continue;case"real":P(parseFloat(E(g)));continue;case"integer":A(parseInt(E(g),10));continue;case"date":x(new Date(E(g)));continue;case"data":T(E(g));continue;case"true":E(g),R(!0);continue;case"false":E(g),R(!1);continue}if(!/^plist/.test(g.name))return N("unexpected opened tag "+g.name)}var O;return m}Object.defineProperty(t,"__esModule",{value:!0}),t.parsePLIST=t.parseWithLocation=void 0,t.parseWithLocation=function(e,t,n){return s(e,t,n)},t.parsePLIST=function(e){return s(e,null,null)}},652:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SyncRegistry=void 0;const n=s(391);t.SyncRegistry=class{constructor(e,t){this._onigLibPromise=t,this._grammars=new Map,this._rawGrammars=new Map,this._injectionGrammars=new Map,this._theme=e}dispose(){for(const e of this._grammars.values())e.dispose()}setTheme(e){this._theme=e}getColorMap(){return this._theme.getColorMap()}addGrammar(e,t){this._rawGrammars.set(e.scopeName,e),t&&this._injectionGrammars.set(e.scopeName,t)}lookup(e){return this._rawGrammars.get(e)}injections(e){return this._injectionGrammars.get(e)}getDefaults(){return this._theme.getDefaults()}themeMatch(e){return this._theme.match(e)}async grammarForScopeName(e,t,s,a,r){if(!this._grammars.has(e)){let o=this._rawGrammars.get(e);if(!o)return null;this._grammars.set(e,n.createGrammar(e,o,t,s,a,r,this,await this._onigLibPromise))}return this._grammars.get(e)}}},792:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CompiledRule=t.RegExpSourceList=t.RegExpSource=t.RuleFactory=t.BeginWhileRule=t.BeginEndRule=t.IncludeOnlyRule=t.MatchRule=t.CaptureRule=t.Rule=t.ruleIdToNumber=t.ruleIdFromNumber=t.whileRuleId=t.endRuleId=void 0;const n=s(878),a=s(965),r=/\\(\d+)/,o=/\\(\d+)/g;t.endRuleId=-1,t.whileRuleId=-2,t.ruleIdFromNumber=function(e){return e},t.ruleIdToNumber=function(e){return e};class i{constructor(e,t,s,a){this.$location=e,this.id=t,this._name=s||null,this._nameIsCapturing=n.RegexSource.hasCaptures(this._name),this._contentName=a||null,this._contentNameIsCapturing=n.RegexSource.hasCaptures(this._contentName)}get debugName(){const e=this.$location?`${n.basename(this.$location.filename)}:${this.$location.line}`:"unknown";return`${this.constructor.name}#${this.id} @ ${e}`}getName(e,t){return this._nameIsCapturing&&null!==this._name&&null!==e&&null!==t?n.RegexSource.replaceCaptures(this._name,e,t):this._name}getContentName(e,t){return this._contentNameIsCapturing&&null!==this._contentName?n.RegexSource.replaceCaptures(this._contentName,e,t):this._contentName}}t.Rule=i;class c extends i{constructor(e,t,s,n,a){super(e,t,s,n),this.retokenizeCapturedWithRuleId=a}dispose(){}collectPatterns(e,t){throw new Error("Not supported!")}compile(e,t){throw new Error("Not supported!")}compileAG(e,t,s,n){throw new Error("Not supported!")}}t.CaptureRule=c;class l extends i{constructor(e,t,s,n,a){super(e,t,s,null),this._match=new m(n,this.id),this.captures=a,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}get debugMatchRegExp(){return`${this._match.source}`}collectPatterns(e,t){t.push(this._match)}compile(e,t){return this._getCachedCompiledPatterns(e).compile(e)}compileAG(e,t,s,n){return this._getCachedCompiledPatterns(e).compileAG(e,s,n)}_getCachedCompiledPatterns(e){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new g,this.collectPatterns(e,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}}t.MatchRule=l;class u extends i{constructor(e,t,s,n,a){super(e,t,s,n),this.patterns=a.patterns,this.hasMissingPatterns=a.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}collectPatterns(e,t){for(const s of this.patterns)e.getRule(s).collectPatterns(e,t)}compile(e,t){return this._getCachedCompiledPatterns(e).compile(e)}compileAG(e,t,s,n){return this._getCachedCompiledPatterns(e).compileAG(e,s,n)}_getCachedCompiledPatterns(e){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new g,this.collectPatterns(e,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}}t.IncludeOnlyRule=u;class p extends i{constructor(e,t,s,n,a,r,o,i,c,l){super(e,t,s,n),this._begin=new m(a,this.id),this.beginCaptures=r,this._end=new m(o||"￿",-1),this.endHasBackReferences=this._end.hasBackReferences,this.endCaptures=i,this.applyEndPatternLast=c||!1,this.patterns=l.patterns,this.hasMissingPatterns=l.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugEndRegExp(){return`${this._end.source}`}getEndWithResolvedBackReferences(e,t){return this._end.resolveBackReferences(e,t)}collectPatterns(e,t){t.push(this._begin)}compile(e,t){return this._getCachedCompiledPatterns(e,t).compile(e)}compileAG(e,t,s,n){return this._getCachedCompiledPatterns(e,t).compileAG(e,s,n)}_getCachedCompiledPatterns(e,t){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new g;for(const t of this.patterns)e.getRule(t).collectPatterns(e,this._cachedCompiledPatterns);this.applyEndPatternLast?this._cachedCompiledPatterns.push(this._end.hasBackReferences?this._end.clone():this._end):this._cachedCompiledPatterns.unshift(this._end.hasBackReferences?this._end.clone():this._end)}return this._end.hasBackReferences&&(this.applyEndPatternLast?this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length()-1,t):this._cachedCompiledPatterns.setSource(0,t)),this._cachedCompiledPatterns}}t.BeginEndRule=p;class h extends i{constructor(e,s,n,a,r,o,i,c,l){super(e,s,n,a),this._begin=new m(r,this.id),this.beginCaptures=o,this.whileCaptures=c,this._while=new m(i,t.whileRuleId),this.whileHasBackReferences=this._while.hasBackReferences,this.patterns=l.patterns,this.hasMissingPatterns=l.hasMissingPatterns,this._cachedCompiledPatterns=null,this._cachedCompiledWhilePatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null),this._cachedCompiledWhilePatterns&&(this._cachedCompiledWhilePatterns.dispose(),this._cachedCompiledWhilePatterns=null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugWhileRegExp(){return`${this._while.source}`}getWhileWithResolvedBackReferences(e,t){return this._while.resolveBackReferences(e,t)}collectPatterns(e,t){t.push(this._begin)}compile(e,t){return this._getCachedCompiledPatterns(e).compile(e)}compileAG(e,t,s,n){return this._getCachedCompiledPatterns(e).compileAG(e,s,n)}_getCachedCompiledPatterns(e){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new g;for(const t of this.patterns)e.getRule(t).collectPatterns(e,this._cachedCompiledPatterns)}return this._cachedCompiledPatterns}compileWhile(e,t){return this._getCachedCompiledWhilePatterns(e,t).compile(e)}compileWhileAG(e,t,s,n){return this._getCachedCompiledWhilePatterns(e,t).compileAG(e,s,n)}_getCachedCompiledWhilePatterns(e,t){return this._cachedCompiledWhilePatterns||(this._cachedCompiledWhilePatterns=new g,this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences?this._while.clone():this._while)),this._while.hasBackReferences&&this._cachedCompiledWhilePatterns.setSource(0,t||"￿"),this._cachedCompiledWhilePatterns}}t.BeginWhileRule=h;class d{static createCaptureRule(e,t,s,n,a){return e.registerRule((e=>new c(t,e,s,n,a)))}static getCompiledRuleId(e,t,s){return e.id||t.registerRule((a=>{if(e.id=a,e.match)return new l(e.$vscodeTextmateLocation,e.id,e.name,e.match,d._compileCaptures(e.captures,t,s));if(void 0===e.begin){e.repository&&(s=n.mergeObjects({},s,e.repository));let a=e.patterns;return void 0===a&&e.include&&(a=[{include:e.include}]),new u(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,d._compilePatterns(a,t,s))}return e.while?new h(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,e.begin,d._compileCaptures(e.beginCaptures||e.captures,t,s),e.while,d._compileCaptures(e.whileCaptures||e.captures,t,s),d._compilePatterns(e.patterns,t,s)):new p(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,e.begin,d._compileCaptures(e.beginCaptures||e.captures,t,s),e.end,d._compileCaptures(e.endCaptures||e.captures,t,s),e.applyEndPatternLast,d._compilePatterns(e.patterns,t,s))})),e.id}static _compileCaptures(e,t,s){let n=[];if(e){let a=0;for(const t in e){if("$vscodeTextmateLocation"===t)continue;const e=parseInt(t,10);e>a&&(a=e)}for(let e=0;e<=a;e++)n[e]=null;for(const a in e){if("$vscodeTextmateLocation"===a)continue;const r=parseInt(a,10);let o=0;e[a].patterns&&(o=d.getCompiledRuleId(e[a],t,s)),n[r]=d.createCaptureRule(t,e[a].$vscodeTextmateLocation,e[a].name,e[a].contentName,o)}}return n}static _compilePatterns(e,t,s){let n=[];if(e)for(let r=0,o=e.length;r<o;r++){const o=e[r];let i=-1;if(o.include){const e=a.parseInclude(o.include);switch(e.kind){case 0:case 1:i=d.getCompiledRuleId(s[o.include],t,s);break;case 2:let n=s[e.ruleName];n&&(i=d.getCompiledRuleId(n,t,s));break;case 3:case 4:const a=e.scopeName,r=4===e.kind?e.ruleName:null,c=t.getExternalGrammar(a,s);if(c)if(r){let e=c.repository[r];e&&(i=d.getCompiledRuleId(e,t,c.repository))}else i=d.getCompiledRuleId(c.repository.$self,t,c.repository)}}else i=d.getCompiledRuleId(o,t,s);if(-1!==i){const e=t.getRule(i);let s=!1;if((e instanceof u||e instanceof p||e instanceof h)&&e.hasMissingPatterns&&0===e.patterns.length&&(s=!0),s)continue;n.push(i)}}return{patterns:n,hasMissingPatterns:(e?e.length:0)!==n.length}}}t.RuleFactory=d;class m{constructor(e,t){if(e){const t=e.length;let s=0,n=[],a=!1;for(let r=0;r<t;r++)if("\\"===e.charAt(r)&&r+1<t){const t=e.charAt(r+1);"z"===t?(n.push(e.substring(s,r)),n.push("$(?!\\n)(?<!\\n)"),s=r+2):"A"!==t&&"G"!==t||(a=!0),r++}this.hasAnchor=a,0===s?this.source=e:(n.push(e.substring(s,t)),this.source=n.join(""))}else this.hasAnchor=!1,this.source=e;this.hasAnchor?this._anchorCache=this._buildAnchorCache():this._anchorCache=null,this.ruleId=t,this.hasBackReferences=r.test(this.source)}clone(){return new m(this.source,this.ruleId)}setSource(e){this.source!==e&&(this.source=e,this.hasAnchor&&(this._anchorCache=this._buildAnchorCache()))}resolveBackReferences(e,t){let s=t.map((t=>e.substring(t.start,t.end)));return o.lastIndex=0,this.source.replace(o,((e,t)=>n.escapeRegExpCharacters(s[parseInt(t,10)]||"")))}_buildAnchorCache(){let e,t,s,n,a=[],r=[],o=[],i=[];for(e=0,t=this.source.length;e<t;e++)s=this.source.charAt(e),a[e]=s,r[e]=s,o[e]=s,i[e]=s,"\\"===s&&e+1<t&&(n=this.source.charAt(e+1),"A"===n?(a[e+1]="￿",r[e+1]="￿",o[e+1]="A",i[e+1]="A"):"G"===n?(a[e+1]="￿",r[e+1]="G",o[e+1]="￿",i[e+1]="G"):(a[e+1]=n,r[e+1]=n,o[e+1]=n,i[e+1]=n),e++);return{A0_G0:a.join(""),A0_G1:r.join(""),A1_G0:o.join(""),A1_G1:i.join("")}}resolveAnchors(e,t){return this.hasAnchor&&this._anchorCache?e?t?this._anchorCache.A1_G1:this._anchorCache.A1_G0:t?this._anchorCache.A0_G1:this._anchorCache.A0_G0:this.source}}t.RegExpSource=m;class g{constructor(){this._items=[],this._hasAnchors=!1,this._cached=null,this._anchorCache={A0_G0:null,A0_G1:null,A1_G0:null,A1_G1:null}}dispose(){this._disposeCaches()}_disposeCaches(){this._cached&&(this._cached.dispose(),this._cached=null),this._anchorCache.A0_G0&&(this._anchorCache.A0_G0.dispose(),this._anchorCache.A0_G0=null),this._anchorCache.A0_G1&&(this._anchorCache.A0_G1.dispose(),this._anchorCache.A0_G1=null),this._anchorCache.A1_G0&&(this._anchorCache.A1_G0.dispose(),this._anchorCache.A1_G0=null),this._anchorCache.A1_G1&&(this._anchorCache.A1_G1.dispose(),this._anchorCache.A1_G1=null)}push(e){this._items.push(e),this._hasAnchors=this._hasAnchors||e.hasAnchor}unshift(e){this._items.unshift(e),this._hasAnchors=this._hasAnchors||e.hasAnchor}length(){return this._items.length}setSource(e,t){this._items[e].source!==t&&(this._disposeCaches(),this._items[e].setSource(t))}compile(e){if(!this._cached){let t=this._items.map((e=>e.source));this._cached=new f(e,t,this._items.map((e=>e.ruleId)))}return this._cached}compileAG(e,t,s){return this._hasAnchors?t?s?(this._anchorCache.A1_G1||(this._anchorCache.A1_G1=this._resolveAnchors(e,t,s)),this._anchorCache.A1_G1):(this._anchorCache.A1_G0||(this._anchorCache.A1_G0=this._resolveAnchors(e,t,s)),this._anchorCache.A1_G0):s?(this._anchorCache.A0_G1||(this._anchorCache.A0_G1=this._resolveAnchors(e,t,s)),this._anchorCache.A0_G1):(this._anchorCache.A0_G0||(this._anchorCache.A0_G0=this._resolveAnchors(e,t,s)),this._anchorCache.A0_G0):this.compile(e)}_resolveAnchors(e,t,s){let n=this._items.map((e=>e.resolveAnchors(t,s)));return new f(e,n,this._items.map((e=>e.ruleId)))}}t.RegExpSourceList=g;class f{constructor(e,t,s){this.regExps=t,this.rules=s,this.scanner=e.createOnigScanner(t)}dispose(){"function"==typeof this.scanner.dispose&&this.scanner.dispose()}toString(){const e=[];for(let t=0,s=this.rules.length;t<s;t++)e.push(" - "+this.rules[t]+": "+this.regExps[t]);return e.join("\n")}findNextMatchSync(e,t,s){const n=this.scanner.findNextMatchSync(e,t,s);return n?{ruleId:this.rules[n.index],captureIndices:n.captureIndices}:null}}t.CompiledRule=f},583:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ThemeTrieElement=t.ThemeTrieElementRule=t.ColorMap=t.fontStyleToString=t.ParsedThemeRule=t.parseTheme=t.StyleAttributes=t.ScopeStack=t.Theme=void 0;const n=s(878);class a{constructor(e,t,s){this._colorMap=e,this._defaults=t,this._root=s,this._cachedMatchRoot=new n.CachedFn((e=>this._root.match(e)))}static createFromRawTheme(e,t){return this.createFromParsedTheme(c(e),t)}static createFromParsedTheme(e,t){return function(e,t){e.sort(((e,t)=>{let s=n.strcmp(e.scope,t.scope);return 0!==s?s:(s=n.strArrCmp(e.parentScopes,t.parentScopes),0!==s?s:e.index-t.index)}));let s=0,r="#000000",o="#ffffff";for(;e.length>=1&&""===e[0].scope;){let t=e.shift();-1!==t.fontStyle&&(s=t.fontStyle),null!==t.foreground&&(r=t.foreground),null!==t.background&&(o=t.background)}let c=new u(t),l=new i(s,c.getId(r),c.getId(o)),d=new h(new p(0,null,-1,0,0),[]);for(let t=0,s=e.length;t<s;t++){let s=e[t];d.insert(0,s.scope,s.parentScopes,s.fontStyle,c.getId(s.foreground),c.getId(s.background))}return new a(c,l,d)}(e,t)}getColorMap(){return this._colorMap.getColorMap()}getDefaults(){return this._defaults}match(e){if(null===e)return this._defaults;const t=e.scopeName,s=this._cachedMatchRoot.get(t).find((t=>function(e,t){if(null===t)return!0;let s=0,n=t[s];for(;e;){if(o(e.scopeName,n)){if(s++,s===t.length)return!0;n=t[s]}e=e.parent}return!1}(e.parent,t.parentScopes)));return s?new i(s.fontStyle,s.foreground,s.background):null}}t.Theme=a;class r{constructor(e,t){this.parent=e,this.scopeName=t}static from(...e){let t=null;for(let s=0;s<e.length;s++)t=new r(t,e[s]);return t}push(e){return new r(this,e)}getSegments(){let e=this;const t=[];for(;e;)t.push(e.scopeName),e=e.parent;return t.reverse(),t}toString(){return this.getSegments().join(" ")}}function o(e,t){return t===e||e.startsWith(t)&&"."===e[t.length]}t.ScopeStack=r;class i{constructor(e,t,s){this.fontStyle=e,this.foregroundId=t,this.backgroundId=s}}function c(e){if(!e)return[];if(!e.settings||!Array.isArray(e.settings))return[];let t=e.settings,s=[],a=0;for(let e=0,r=t.length;e<r;e++){let r,o=t[e];if(!o.settings)continue;if("string"==typeof o.scope){let e=o.scope;e=e.replace(/^[,]+/,""),e=e.replace(/[,]+$/,""),r=e.split(",")}else r=Array.isArray(o.scope)?o.scope:[""];let i=-1;if("string"==typeof o.settings.fontStyle){i=0;let e=o.settings.fontStyle.split(" ");for(let t=0,s=e.length;t<s;t++)switch(e[t]){case"italic":i|=1;break;case"bold":i|=2;break;case"underline":i|=4;break;case"strikethrough":i|=8}}let c=null;"string"==typeof o.settings.foreground&&n.isValidHexColor(o.settings.foreground)&&(c=o.settings.foreground);let u=null;"string"==typeof o.settings.background&&n.isValidHexColor(o.settings.background)&&(u=o.settings.background);for(let t=0,n=r.length;t<n;t++){let n=r[t].trim().split(" "),o=n[n.length-1],p=null;n.length>1&&(p=n.slice(0,n.length-1),p.reverse()),s[a++]=new l(o,p,e,i,c,u)}}return s}t.StyleAttributes=i,t.parseTheme=c;class l{constructor(e,t,s,n,a,r){this.scope=e,this.parentScopes=t,this.index=s,this.fontStyle=n,this.foreground=a,this.background=r}}t.ParsedThemeRule=l,t.fontStyleToString=function(e){if(-1===e)return"not set";let t="";return 1&e&&(t+="italic "),2&e&&(t+="bold "),4&e&&(t+="underline "),8&e&&(t+="strikethrough "),""===t&&(t="none"),t.trim()};class u{constructor(e){if(this._lastColorId=0,this._id2color=[],this._color2id=Object.create(null),Array.isArray(e)){this._isFrozen=!0;for(let t=0,s=e.length;t<s;t++)this._color2id[e[t]]=t,this._id2color[t]=e[t]}else this._isFrozen=!1}getId(e){if(null===e)return 0;e=e.toUpperCase();let t=this._color2id[e];if(t)return t;if(this._isFrozen)throw new Error(`Missing color in color map - ${e}`);return t=++this._lastColorId,this._color2id[e]=t,this._id2color[t]=e,t}getColorMap(){return this._id2color.slice(0)}}t.ColorMap=u;class p{constructor(e,t,s,n,a){this.scopeDepth=e,this.parentScopes=t,this.fontStyle=s,this.foreground=n,this.background=a}clone(){return new p(this.scopeDepth,this.parentScopes,this.fontStyle,this.foreground,this.background)}static cloneArr(e){let t=[];for(let s=0,n=e.length;s<n;s++)t[s]=e[s].clone();return t}acceptOverwrite(e,t,s,n){this.scopeDepth>e?console.log("how did this happen?"):this.scopeDepth=e,-1!==t&&(this.fontStyle=t),0!==s&&(this.foreground=s),0!==n&&(this.background=n)}}t.ThemeTrieElementRule=p;class h{constructor(e,t=[],s={}){this._mainRule=e,this._children=s,this._rulesWithParentScopes=t}static _sortBySpecificity(e){return 1===e.length||e.sort(this._cmpBySpecificity),e}static _cmpBySpecificity(e,t){if(e.scopeDepth===t.scopeDepth){const s=e.parentScopes,n=t.parentScopes;let a=null===s?0:s.length,r=null===n?0:n.length;if(a===r)for(let e=0;e<a;e++){const t=s[e].length,a=n[e].length;if(t!==a)return a-t}return r-a}return t.scopeDepth-e.scopeDepth}match(e){if(""===e)return h._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes));let t,s,n=e.indexOf(".");return-1===n?(t=e,s=""):(t=e.substring(0,n),s=e.substring(n+1)),this._children.hasOwnProperty(t)?this._children[t].match(s):h._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes))}insert(e,t,s,n,a,r){if(""===t)return void this._doInsertHere(e,s,n,a,r);let o,i,c,l=t.indexOf(".");-1===l?(o=t,i=""):(o=t.substring(0,l),i=t.substring(l+1)),this._children.hasOwnProperty(o)?c=this._children[o]:(c=new h(this._mainRule.clone(),p.cloneArr(this._rulesWithParentScopes)),this._children[o]=c),c.insert(e+1,i,s,n,a,r)}_doInsertHere(e,t,s,a,r){if(null!==t){for(let o=0,i=this._rulesWithParentScopes.length;o<i;o++){let i=this._rulesWithParentScopes[o];if(0===n.strArrCmp(i.parentScopes,t))return void i.acceptOverwrite(e,s,a,r)}-1===s&&(s=this._mainRule.fontStyle),0===a&&(a=this._mainRule.foreground),0===r&&(r=this._mainRule.background),this._rulesWithParentScopes.push(new p(e,t,s,a,r))}else this._mainRule.acceptOverwrite(e,s,a,r)}}t.ThemeTrieElement=h},878:(e,t)=>{function s(e){return Array.isArray(e)?function(e){let t=[];for(let n=0,a=e.length;n<a;n++)t[n]=s(e[n]);return t}(e):"object"==typeof e?function(e){let t={};for(let n in e)t[n]=s(e[n]);return t}(e):e}Object.defineProperty(t,"__esModule",{value:!0}),t.performanceNow=t.CachedFn=t.escapeRegExpCharacters=t.isValidHexColor=t.strArrCmp=t.strcmp=t.RegexSource=t.basename=t.mergeObjects=t.clone=void 0,t.clone=function(e){return s(e)},t.mergeObjects=function(e,...t){return t.forEach((t=>{for(let s in t)e[s]=t[s]})),e},t.basename=function e(t){const s=~t.lastIndexOf("/")||~t.lastIndexOf("\\");return 0===s?t:~s==t.length-1?e(t.substring(0,t.length-1)):t.substr(1+~s)};let n=/\$(\d+)|\${(\d+):\/(downcase|upcase)}/g;function a(e,t){return e<t?-1:e>t?1:0}t.RegexSource=class{static hasCaptures(e){return null!==e&&(n.lastIndex=0,n.test(e))}static replaceCaptures(e,t,s){return e.replace(n,((e,n,a,r)=>{let o=s[parseInt(n||a,10)];if(!o)return e;{let e=t.substring(o.start,o.end);for(;"."===e[0];)e=e.substring(1);switch(r){case"downcase":return e.toLowerCase();case"upcase":return e.toUpperCase();default:return e}}}))}},t.strcmp=a,t.strArrCmp=function(e,t){if(null===e&&null===t)return 0;if(!e)return-1;if(!t)return 1;let s=e.length,n=t.length;if(s===n){for(let n=0;n<s;n++){let s=a(e[n],t[n]);if(0!==s)return s}return 0}return s-n},t.isValidHexColor=function(e){return!!(/^#[0-9a-f]{6}$/i.test(e)||/^#[0-9a-f]{8}$/i.test(e)||/^#[0-9a-f]{3}$/i.test(e)||/^#[0-9a-f]{4}$/i.test(e))},t.escapeRegExpCharacters=function(e){return e.replace(/[\-\\\{\}\*\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&")},t.CachedFn=class{constructor(e){this.fn=e,this.cache=new Map}get(e){if(this.cache.has(e))return this.cache.get(e);const t=this.fn(e);return this.cache.set(e,t),t}},t.performanceNow="undefined"==typeof performance?function(){return Date.now()}:function(){return performance.now()}}},n={},function e(t){var a=n[t];if(void 0!==a)return a.exports;var r=n[t]={exports:{}};return s[t].call(r.exports,r,r.exports,e),r.exports}(787))}(B);var G=B.exports;function F(e,t){let s=[];for(let n=0,a=t.length;n<a;n++){let a=t.slice(0,n),r=t[n];s[n]={scopeName:r,themeMatches:U(e,r,a)}}return s}function D(e,t){let s=e+".";return e===t||t.substring(0,s.length)===s}function $(e,t,s,n){if(!D(e,s))return!1;let a=t.length-1,r=n.length-1;for(;a>=0&&r>=0;)D(t[a],n[r])&&a--,r--;return-1===a}function U(e,t,s){let n=[],a=0;for(let r=0,o=e.settings.length;r<o;r++){let o,i=e.settings[r];if("string"==typeof i.scope)o=i.scope.split(/,/).map((e=>e.trim()));else{if(!Array.isArray(i.scope))continue;o=i.scope}for(let e=0,r=o.length;e<r;e++){let c=o[e].split(/ /);$(c[c.length-1],c.slice(0,c.length-1),t,s)&&(n[a++]=i,e=r)}}return n}var W=["black","red","green","yellow","blue","magenta","cyan","white","brightBlack","brightRed","brightGreen","brightYellow","brightBlue","brightMagenta","brightCyan","brightWhite"],q={1:"bold",2:"dim",3:"italic",4:"underline",7:"reverse",9:"strikethrough"};function H(e,t){const s=e.indexOf("",t);if(-1!==s&&"["===e[s+1]){const t=e.indexOf("m",s);return{sequence:e.substring(s+2,t).split(";"),startPosition:s,position:t+1}}return{position:e.length}}function z(e){const t=e.shift();if("2"===t){const t=e.splice(0,3).map((e=>Number.parseInt(e)));if(3!==t.length||t.some((e=>Number.isNaN(e))))return;return{type:"rgb",rgb:t}}if("5"===t){const t=e.shift();if(t)return{type:"table",index:Number(t)}}}function V(e){const t=[];for(;e.length>0;){const s=e.shift();if(!s)continue;const n=Number.parseInt(s);if(!Number.isNaN(n))if(0===n)t.push({type:"resetAll"});else if(n<=9){q[n]&&t.push({type:"setDecoration",value:q[n]})}else if(n<=29){const e=q[n-20];e&&t.push({type:"resetDecoration",value:e})}else if(n<=37)t.push({type:"setForegroundColor",value:{type:"named",name:W[n-30]}});else if(38===n){const s=z(e);s&&t.push({type:"setForegroundColor",value:s})}else if(39===n)t.push({type:"resetForegroundColor"});else if(n<=47)t.push({type:"setBackgroundColor",value:{type:"named",name:W[n-40]}});else if(48===n){const s=z(e);s&&t.push({type:"setBackgroundColor",value:s})}else 49===n?t.push({type:"resetBackgroundColor"}):n>=90&&n<=97?t.push({type:"setForegroundColor",value:{type:"named",name:W[n-90+8]}}):n>=100&&n<=107&&t.push({type:"setBackgroundColor",value:{type:"named",name:W[n-100+8]}})}return t}var K={black:"#000000",red:"#bb0000",green:"#00bb00",yellow:"#bbbb00",blue:"#0000bb",magenta:"#ff00ff",cyan:"#00bbbb",white:"#eeeeee",brightBlack:"#555555",brightRed:"#ff5555",brightGreen:"#00ff00",brightYellow:"#ffff55",brightBlue:"#5555ff",brightMagenta:"#ff55ff",brightCyan:"#55ffff",brightWhite:"#ffffff"};function J(e=K){function t(t){return e[t]}function s(e){return`#${e.map((e=>Math.max(0,Math.min(e,255)).toString(16).padStart(2,"0"))).join("")}`}let n;function a(e){return function(){if(n)return n;n=[];for(let e=0;e<W.length;e++)n.push(t(W[e]));let e=[0,95,135,175,215,255];for(let t=0;t<6;t++)for(let a=0;a<6;a++)for(let r=0;r<6;r++)n.push(s([e[t],e[a],e[r]]));let a=8;for(let e=0;e<24;e++,a+=10)n.push(s([a,a,a]));return n}()[e]}return{value:function(e){switch(e.type){case"named":return t(e.name);case"rgb":return s(e.rgb);case"table":return a(e.index)}}}}function Q(e,t){const n=t.split(/\r?\n/),a=J(Object.fromEntries(W.map((t=>[t,e.colors[`terminal.ansi${t[0].toUpperCase()}${t.substring(1)}`]])))),r=function(){let e=null,t=null,s=new Set;return{parse(n){const a=[];let r=0;do{const o=H(n,r),i=o.sequence?n.substring(r,o.startPosition):n.substring(r);if(i.length>0&&a.push({value:i,foreground:e,background:t,decorations:new Set(s)}),o.sequence){const n=V(o.sequence);for(const a of n)"resetAll"===a.type?(e=null,t=null,s.clear()):"resetForegroundColor"===a.type?e=null:"resetBackgroundColor"===a.type?t=null:"resetDecoration"===a.type&&s.delete(a.value);for(const a of n)"setForegroundColor"===a.type?e=a.value:"setBackgroundColor"===a.type?t=a.value:"setDecoration"===a.type&&s.add(a.value)}r=o.position}while(r<n.length);return a}}}();return n.map((t=>r.parse(t).map((t=>{let n;n=t.decorations.has("reverse")?t.background?a.value(t.background):e.bg:t.foreground?a.value(t.foreground):e.fg,t.decorations.has("dim")&&(n=function(e){const t=e.match(/#([0-9a-f]{3})([0-9a-f]{3})?([0-9a-f]{2})?/);if(t){if(t[3]){const e=Math.round(Number.parseInt(t[3],16)/2).toString(16).padStart(2,"0");return`#${t[1]}${t[2]}${e}`}return t[2]?`#${t[1]}${t[2]}80`:`#${Array.from(t[1]).map((e=>`${e}${e}`)).join("")}80`}const s=e.match(/var\((--shiki-color-ansi-[\w-]+)\)/);if(s)return`var(${s[1]}-dim)`;return e}(n));let r=s.None;return t.decorations.has("bold")&&(r|=s.Bold),t.decorations.has("italic")&&(r|=s.Italic),t.decorations.has("underline")&&(r|=s.Underline),{content:t.value,color:n,fontStyle:r}}))))}const X={pre:({className:e,style:t,children:s})=>`<pre class="${e}" style="${t}" tabindex="0">${s}</pre>`,code:({children:e})=>`<code>${e}</code>`,line:({className:e,children:t})=>`<span class="${e}">${t}</span>`,token:({style:e,children:t})=>`<span style="${e}">${t}</span>`};function Y(e,t={}){const n=t.bg||"#fff",a=function(e,t){const s=new Map;for(const n of e){const e=t(n);s.has(e)?s.get(e).push(n):s.set(e,[n])}return s}(t.lineOptions??[],(e=>e.line)),r=t.elements||{};function o(e="",t={},s){const n=r[e]||X[e];return n?(s=s.filter(Boolean),n({...t,children:"code"===e?s.join("\n"):s.join("")})):""}return o("pre",{className:"shiki "+(t.themeName||""),style:`background-color: ${n}`},[t.langId?`<div class="language-id">${t.langId}</div>`:"",o("code",{},e.map(((n,r)=>{const i=r+1,c=function(e){const t=new Set(["line"]);for(const s of e)for(const e of s.classes??[])t.add(e);return Array.from(t)}(a.get(i)??[]).join(" ");return o("line",{className:c,lines:e,line:n,index:r},n.map(((e,a)=>{const r=[`color: ${e.color||t.fg}`];return e.fontStyle&s.Italic&&r.push("font-style: italic"),e.fontStyle&s.Bold&&r.push("font-weight: bold"),e.fontStyle&s.Underline&&r.push("text-decoration: underline"),o("token",{style:r.join("; "),tokens:n,token:e,index:a},[(i=e.content,i.replace(/[&<>"']/g,(e=>Z[e])))]);var i})))})))])}const Z={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};class ee extends G.Registry{constructor(e){super(e),this._resolver=e,this.themesPath="themes/",this._resolvedThemes={},this._resolvedGrammars={},this._langGraph=new Map,this._langMap=t.reduce(((e,t)=>(e[t.id]=t,e)),{})}getTheme(e){return"string"==typeof e?this._resolvedThemes[e]:e}async loadTheme(e){return"string"==typeof e?(this._resolvedThemes[e]||(this._resolvedThemes[e]=await T(`${this.themesPath}${e}.json`)),this._resolvedThemes[e]):((e=R(e)).name&&(this._resolvedThemes[e.name]=e),e)}async loadThemes(e){return await Promise.all(e.map((e=>this.loadTheme(e))))}getLoadedThemes(){return Object.keys(this._resolvedThemes)}getGrammar(e){return this._resolvedGrammars[e]}async loadLanguage(e){const t=e.embeddedLangs?.reduce((async(e,t,s)=>{if(!this.getLoadedLanguages().includes(t)&&this._resolver.getLangRegistration(t))return await this._resolver.loadGrammar(this._resolver.getLangRegistration(t).scopeName),e[this._resolver.getLangRegistration(t).scopeName]=s+2,e}),{}),s={embeddedLanguages:t,balancedBracketSelectors:e.balancedBracketSelectors||["*"],unbalancedBracketSelectors:e.unbalancedBracketSelectors||[]},n=await this.loadGrammarWithConfiguration(e.scopeName,1,s);this._resolvedGrammars[e.id]=n,e.aliases&&e.aliases.forEach((e=>{this._resolvedGrammars[e]=n}))}async loadLanguages(e){for(const t of e)this.resolveEmbeddedLanguages(t);const t=Array.from(this._langGraph.values());for(const e of t)this._resolver.addLanguage(e);for(const e of t)await this.loadLanguage(e)}getLoadedLanguages(){return Object.keys(this._resolvedGrammars)}resolveEmbeddedLanguages(e){if(this._langGraph.has(e.id)||this._langGraph.set(e.id,e),e.embeddedLangs)for(const t of e.embeddedLangs)this._langGraph.set(t,this._langMap[t])}}function te(e){return"string"==typeof e?t.find((t=>t.id===e||t.aliases?.includes(e))):e}e.BUNDLED_LANGUAGES=t,e.BUNDLED_THEMES=["css-variables","dark-plus","dracula-soft","dracula","github-dark-dimmed","github-dark","github-light","hc_light","light-plus","material-theme-darker","material-theme-lighter","material-theme-ocean","material-theme-palenight","material-theme","min-dark","min-light","monokai","nord","one-dark-pro","poimandres","rose-pine-dawn","rose-pine-moon","rose-pine","slack-dark","slack-ochin","solarized-dark","solarized-light","vitesse-dark","vitesse-light"],e.FontStyle=s,e.getHighlighter=async function(e){const{_languages:s,_themes:a,_wasmPath:r}=function(e){let s=t,n=e.themes||[],a=e.paths?.wasm?e.paths.wasm.endsWith("/")?e.paths.wasm:e.paths.wasm+"/":j;return e.langs&&(s=e.langs.map(te)),e.theme&&n.unshift(e.theme),n.length||(n=["nord"]),{_languages:s,_themes:n,_wasmPath:a}}(e),c=new M(async function(e){if(!P){let t;if(S)t="string"==typeof C?m.loadWASM({data:await fetch(A(i(...o(e),"onig.wasm")))}):m.loadWASM({data:C});else{const e=require("path").join(require.resolve("vscode-oniguruma"),"../onig.wasm"),s=require("fs").readFileSync(e).buffer;t=m.loadWASM(s)}P=t.then((()=>({createOnigScanner:e=>m.createOnigScanner(e),createOnigString:e=>m.createOnigString(e)})))}return P}(r),"vscode-oniguruma"),l=new ee(c);e.paths?.themes&&(l.themesPath=e.paths.themes.endsWith("/")?e.paths.themes:e.paths.themes+"/"),e.paths?.languages&&(c.languagesPath=e.paths.languages.endsWith("/")?e.paths.languages:e.paths.languages+"/");const u=(await l.loadThemes(a))[0];let p;await l.loadLanguages(s);let h=function(){const e={"#000001":"var(--shiki-color-text)","#000002":"var(--shiki-color-background)","#000004":"var(--shiki-token-constant)","#000005":"var(--shiki-token-string)","#000006":"var(--shiki-token-comment)","#000007":"var(--shiki-token-keyword)","#000008":"var(--shiki-token-parameter)","#000009":"var(--shiki-token-function)","#000010":"var(--shiki-token-string-expression)","#000011":"var(--shiki-token-punctuation)","#000012":"var(--shiki-token-link)"};for(let t=0;t<W.length;t++){const s=`#A${t.toString().padStart(5,"0")}`,n=W[t].replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();e[s]=`var(--shiki-color-ansi-${n})`}return e}();function d(e){const t=e?l.getTheme(e):u;if(!t)throw Error(`No theme registration for ${e}`);p&&p.name===t.name||(l.setTheme(t),p=t);const s=l.getColorMap();return"css"===t.type&&function(e,t){e.bg=h[e.bg]||e.bg,e.fg=h[e.fg]||e.fg,Object.entries(e.colors).forEach((([t,s])=>{e.colors[t]=h[s]||s})),t.forEach(((e,s)=>{t[s]=h[e]||e}))}(t,s),{_theme:t,_colorMap:s}}function g(e,t="text",s,a={includeExplanation:!0}){if(function(e){return!e||["plaintext","txt","text"].includes(e)}(t)){return[...e.split(/\r\n|\r|\n/).map((e=>[{content:e}]))]}const{_grammar:r}=function(e){const t=l.getGrammar(e);if(!t)throw Error(`No language registration for ${e}`);return{_grammar:t}}(t),{_theme:o,_colorMap:i}=d(s);return function(e,t,s,a,r){let o=s.split(/\r\n|\r|\n/),i=G.INITIAL,c=[],l=[];for(let s=0,u=o.length;s<u;s++){let u,p,h,d=o[s];if(""===d){c=[],l.push([]);continue}r.includeExplanation&&(u=a.tokenizeLine(d,i),p=u.tokens,h=0);let m=a.tokenizeLine2(d,i),g=m.tokens.length/2;for(let s=0;s<g;s++){let a=m.tokens[2*s],o=s+1<g?m.tokens[2*s+2]:d.length;if(a===o)continue;let i=m.tokens[2*s+1],l=t[n.getForeground(i)],u=n.getFontStyle(i),f=[];if(r.includeExplanation){let t=0;for(;a+t<o;){let s=p[h],n=d.substring(s.startIndex,s.endIndex);t+=n.length,f.push({content:n,scopes:F(e,s.scopes)}),h++}}c.push({content:d.substring(a,o),color:l,fontStyle:u,explanation:f})}l.push(c),c=[],i=m.ruleStack}return l}(o,i,e,r,a)}function f(e,t){const{_theme:s}=d(t);return Q(s,e)}return{codeToThemedTokens:g,codeToHtml:function(e,t="text",s){let n;n="object"==typeof t?t:{lang:t,theme:s};const a=g(e,n.lang,n.theme,{includeExplanation:!1}),{_theme:r}=d(n.theme);return Y(a,{fg:r.fg,bg:r.bg,lineOptions:n?.lineOptions,themeName:r.name})},ansiToThemedTokens:f,ansiToHtml:function(e,t){const s=f(e,t?.theme),{_theme:n}=d(t?.theme);return Y(s,{fg:n.fg,bg:n.bg,lineOptions:t?.lineOptions,themeName:n.name})},getTheme:e=>d(e)._theme,loadTheme:async function(e){await l.loadTheme(e)},loadLanguage:async function(e){const t=te(e);c.addLanguage(t),await l.loadLanguage(t)},getBackgroundColor:function(e){const{_theme:t}=d(e);return t.bg},getForegroundColor:function(e){const{_theme:t}=d(e);return t.fg},getLoadedThemes:function(){return l.getLoadedThemes()},getLoadedLanguages:function(){return l.getLoadedLanguages()},setColorReplacements:function(e){h=e}}},e.loadTheme=T,e.renderToHtml=Y,e.setCDN=function(e){v=e.endsWith("/")?e:e+"/"},e.setOnigasmWASM=function(e){w(e)},e.setWasm=w,e.toShikiTheme=R}(this.shiki=this.shiki||{});
diff --git a/node_modules/shiki/dist/index.unpkg.iife.js b/node_modules/shiki/dist/index.unpkg.iife.js
new file mode 100644
index 0000000..1a33e16
--- /dev/null
+++ b/node_modules/shiki/dist/index.unpkg.iife.js
@@ -0,0 +1 @@
+!function(e){"use strict";const t=[{id:"abap",scopeName:"source.abap",path:"abap.tmLanguage.json",displayName:"ABAP",samplePath:"abap.sample"},{id:"actionscript-3",scopeName:"source.actionscript.3",path:"actionscript-3.tmLanguage.json",displayName:"ActionScript",samplePath:"actionscript-3.sample"},{id:"ada",scopeName:"source.ada",path:"ada.tmLanguage.json",displayName:"Ada",samplePath:"ada.sample"},{id:"apache",scopeName:"source.apacheconf",path:"apache.tmLanguage.json",displayName:"Apache Conf"},{id:"apex",scopeName:"source.apex",path:"apex.tmLanguage.json",displayName:"Apex",samplePath:"apex.sample"},{id:"apl",scopeName:"source.apl",path:"apl.tmLanguage.json",displayName:"APL",embeddedLangs:["html","xml","css","javascript","json"]},{id:"applescript",scopeName:"source.applescript",path:"applescript.tmLanguage.json",displayName:"AppleScript",samplePath:"applescript.sample"},{id:"ara",scopeName:"source.ara",path:"ara.tmLanguage.json",displayName:"Ara",samplePath:"ara.sample"},{id:"asm",scopeName:"source.asm.x86_64",path:"asm.tmLanguage.json",displayName:"Assembly",samplePath:"asm.sample"},{id:"astro",scopeName:"source.astro",path:"astro.tmLanguage.json",displayName:"Astro",samplePath:"astro.sample",embeddedLangs:["json","javascript","typescript","stylus","sass","css","scss","less","postcss","tsx"]},{id:"awk",scopeName:"source.awk",path:"awk.tmLanguage.json",displayName:"AWK",samplePath:"awk.sample"},{id:"ballerina",scopeName:"source.ballerina",path:"ballerina.tmLanguage.json",displayName:"Ballerina",samplePath:"ballerina.sample"},{id:"bat",scopeName:"source.batchfile",path:"bat.tmLanguage.json",displayName:"Batch",samplePath:"bat.sample",aliases:["batch"]},{id:"beancount",scopeName:"text.beancount",path:"beancount.tmLanguage.json",displayName:"Beancount",samplePath:"beancount.sample"},{id:"berry",scopeName:"source.berry",path:"berry.tmLanguage.json",displayName:"Berry",samplePath:"berry.sample",aliases:["be"]},{id:"bibtex",scopeName:"text.bibtex",path:"bibtex.tmLanguage.json",displayName:"BibTeX"},{id:"bicep",scopeName:"source.bicep",path:"bicep.tmLanguage.json",displayName:"Bicep",samplePath:"bicep.sample"},{id:"blade",scopeName:"text.html.php.blade",path:"blade.tmLanguage.json",displayName:"Blade",samplePath:"blade.sample",embeddedLangs:["html","xml","sql","javascript","json","css"]},{id:"c",scopeName:"source.c",path:"c.tmLanguage.json",displayName:"C",samplePath:"c.sample"},{id:"cadence",scopeName:"source.cadence",path:"cadence.tmLanguage.json",displayName:"Cadence",samplePath:"cadence.sample",aliases:["cdc"]},{id:"clarity",scopeName:"source.clar",path:"clarity.tmLanguage.json",displayName:"Clarity",samplePath:"clarity.sample"},{id:"clojure",scopeName:"source.clojure",path:"clojure.tmLanguage.json",displayName:"Clojure",samplePath:"clojure.sample",aliases:["clj"]},{id:"cmake",scopeName:"source.cmake",path:"cmake.tmLanguage.json",displayName:"CMake",samplePath:"cmake.sample"},{id:"cobol",scopeName:"source.cobol",path:"cobol.tmLanguage.json",displayName:"COBOL",samplePath:"cobol.sample",embeddedLangs:["sql","html","java"]},{id:"codeql",scopeName:"source.ql",path:"codeql.tmLanguage.json",displayName:"CodeQL",samplePath:"codeql.sample",aliases:["ql"],embeddedLangs:["markdown"]},{id:"coffee",scopeName:"source.coffee",path:"coffee.tmLanguage.json",displayName:"CoffeeScript",samplePath:"coffee.sample",embeddedLangs:["javascript"]},{id:"cpp",scopeName:"source.cpp",path:"cpp.tmLanguage.json",displayName:"C++",samplePath:"cpp.sample",embeddedLangs:["glsl","sql"]},{id:"crystal",scopeName:"source.crystal",path:"crystal.tmLanguage.json",displayName:"Crystal",samplePath:"crystal.sample",embeddedLangs:["html","sql","css","c","javascript","shellscript"]},{id:"csharp",scopeName:"source.cs",path:"csharp.tmLanguage.json",displayName:"C#",samplePath:"csharp.sample",aliases:["c#","cs"]},{id:"css",scopeName:"source.css",path:"css.tmLanguage.json",displayName:"CSS",samplePath:"css.sample"},{id:"cue",scopeName:"source.cue",path:"cue.tmLanguage.json",displayName:"CUE",samplePath:"cue.sample"},{id:"cypher",scopeName:"source.cypher",path:"cypher.tmLanguage.json",displayName:"Cypher",samplePath:"cypher.sample",aliases:["cql"]},{id:"d",scopeName:"source.d",path:"d.tmLanguage.json",displayName:"D",samplePath:"d.sample"},{id:"dart",scopeName:"source.dart",path:"dart.tmLanguage.json",displayName:"Dart",samplePath:"dart.sample"},{id:"dax",scopeName:"source.dax",path:"dax.tmLanguage.json",displayName:"DAX",samplePath:"dax.sample"},{id:"diff",scopeName:"source.diff",path:"diff.tmLanguage.json",displayName:"Diff",samplePath:"diff.sample"},{id:"docker",scopeName:"source.dockerfile",path:"docker.tmLanguage.json",displayName:"Docker",samplePath:"docker.sample",aliases:["dockerfile"]},{id:"dream-maker",scopeName:"source.dm",path:"dream-maker.tmLanguage.json",displayName:"Dream Maker"},{id:"elixir",scopeName:"source.elixir",path:"elixir.tmLanguage.json",displayName:"Elixir",samplePath:"elixir.sample",embeddedLangs:["html"]},{id:"elm",scopeName:"source.elm",path:"elm.tmLanguage.json",displayName:"Elm",samplePath:"elm.sample",embeddedLangs:["glsl"]},{id:"erb",scopeName:"text.html.erb",path:"erb.tmLanguage.json",displayName:"ERB",samplePath:"erb.sample",embeddedLangs:["html","ruby"]},{id:"erlang",scopeName:"source.erlang",path:"erlang.tmLanguage.json",displayName:"Erlang",samplePath:"erlang.sample",aliases:["erl"]},{id:"fish",scopeName:"source.fish",path:"fish.tmLanguage.json",displayName:"Fish",samplePath:"fish.sample"},{id:"fsharp",scopeName:"source.fsharp",path:"fsharp.tmLanguage.json",displayName:"F#",samplePath:"fsharp.sample",aliases:["f#","fs"],embeddedLangs:["markdown"]},{id:"gdresource",scopeName:"source.gdresource",path:"gdresource.tmLanguage.json",displayName:"GDResource",samplePath:"gdresource.sample",embeddedLangs:["gdshader","gdscript"]},{id:"gdscript",scopeName:"source.gdscript",path:"gdscript.tmLanguage.json",displayName:"GDScript",samplePath:"gdscript.sample"},{id:"gdshader",scopeName:"source.gdshader",path:"gdshader.tmLanguage.json",displayName:"GDShader",samplePath:"gdshader.sample"},{id:"gherkin",scopeName:"text.gherkin.feature",path:"gherkin.tmLanguage.json",displayName:"Gherkin"},{id:"git-commit",scopeName:"text.git-commit",path:"git-commit.tmLanguage.json",displayName:"Git Commit Message",embeddedLangs:["diff"]},{id:"git-rebase",scopeName:"text.git-rebase",path:"git-rebase.tmLanguage.json",displayName:"Git Rebase Message",embeddedLangs:["shellscript"]},{id:"glimmer-js",scopeName:"source.gjs",path:"glimmer-js.tmLanguage.json",displayName:"Glimmer JS",aliases:["gjs"],embeddedLangs:["javascript","handlebars"]},{id:"glimmer-ts",scopeName:"source.gts",path:"glimmer-ts.tmLanguage.json",displayName:"Glimmer TS",aliases:["gts"],embeddedLangs:["typescript","handlebars"]},{id:"glsl",scopeName:"source.glsl",path:"glsl.tmLanguage.json",displayName:"GLSL",samplePath:"glsl.sample",embeddedLangs:["c"]},{id:"gnuplot",scopeName:"source.gnuplot",path:"gnuplot.tmLanguage.json",displayName:"Gnuplot"},{id:"go",scopeName:"source.go",path:"go.tmLanguage.json",displayName:"Go",samplePath:"go.sample"},{id:"graphql",scopeName:"source.graphql",path:"graphql.tmLanguage.json",displayName:"GraphQL",embeddedLangs:["javascript","typescript","jsx","tsx"]},{id:"groovy",scopeName:"source.groovy",path:"groovy.tmLanguage.json",displayName:"Groovy"},{id:"hack",scopeName:"source.hack",path:"hack.tmLanguage.json",displayName:"Hack",embeddedLangs:["html","sql"]},{id:"haml",scopeName:"text.haml",path:"haml.tmLanguage.json",displayName:"Ruby Haml",embeddedLangs:["ruby","javascript","sass","coffee","markdown","css"]},{id:"handlebars",scopeName:"text.html.handlebars",path:"handlebars.tmLanguage.json",displayName:"Handlebars",aliases:["hbs"],embeddedLangs:["html","css","javascript","yaml"]},{id:"haskell",scopeName:"source.haskell",path:"haskell.tmLanguage.json",displayName:"Haskell",aliases:["hs"]},{id:"hcl",scopeName:"source.hcl",path:"hcl.tmLanguage.json",displayName:"HashiCorp HCL",samplePath:"hcl.sample"},{id:"hjson",scopeName:"source.hjson",path:"hjson.tmLanguage.json",displayName:"Hjson",samplePath:"hjson.sample"},{id:"hlsl",scopeName:"source.hlsl",path:"hlsl.tmLanguage.json",displayName:"HLSL"},{id:"html",scopeName:"text.html.basic",path:"html.tmLanguage.json",displayName:"HTML",samplePath:"html.sample",embeddedLangs:["javascript","css"]},{id:"http",scopeName:"source.http",path:"http.tmLanguage.json",displayName:"HTTP",samplePath:"http.sample",embeddedLangs:["shellscript","json","xml","graphql"]},{id:"imba",scopeName:"source.imba",path:"imba.tmLanguage.json",displayName:"Imba",samplePath:"imba.sample"},{id:"ini",scopeName:"source.ini",path:"ini.tmLanguage.json",displayName:"INI",aliases:["properties"]},{id:"java",scopeName:"source.java",path:"java.tmLanguage.json",displayName:"Java",samplePath:"java.sample"},{id:"javascript",scopeName:"source.js",path:"javascript.tmLanguage.json",displayName:"JavaScript",samplePath:"javascript.sample",aliases:["js"]},{id:"jinja-html",scopeName:"text.html.jinja",path:"jinja-html.tmLanguage.json",displayName:"Jinja",embeddedLangs:["html"]},{id:"jison",scopeName:"source.jison",path:"jison.tmLanguage.json",displayName:"Jison",samplePath:"jison.sample",embeddedLangs:["javascript"]},{id:"json",scopeName:"source.json",path:"json.tmLanguage.json",displayName:"JSON"},{id:"json5",scopeName:"source.json5",path:"json5.tmLanguage.json",displayName:"JSON5",samplePath:"json5.sample"},{id:"jsonc",scopeName:"source.json.comments",path:"jsonc.tmLanguage.json",displayName:"JSON with Comments"},{id:"jsonl",scopeName:"source.json.lines",path:"jsonl.tmLanguage.json",displayName:"JSON Lines"},{id:"jsonnet",scopeName:"source.jsonnet",path:"jsonnet.tmLanguage.json",displayName:"Jsonnet"},{id:"jssm",scopeName:"source.jssm",path:"jssm.tmLanguage.json",displayName:"JSSM",samplePath:"jssm.sample",aliases:["fsl"]},{id:"jsx",scopeName:"source.js.jsx",path:"jsx.tmLanguage.json",displayName:"JSX"},{id:"julia",scopeName:"source.julia",path:"julia.tmLanguage.json",displayName:"Julia",embeddedLangs:["cpp","python","javascript","r","sql"]},{id:"kotlin",scopeName:"source.kotlin",path:"kotlin.tmLanguage.json",displayName:"Kotlin",samplePath:"kotlin.sample"},{id:"kusto",scopeName:"source.kusto",path:"kusto.tmLanguage.json",displayName:"Kusto",samplePath:"kusto.sample",aliases:["kql"]},{id:"latex",scopeName:"text.tex.latex",path:"latex.tmLanguage.json",displayName:"LaTeX",embeddedLangs:["tex","css","haskell","html","xml","java","lua","julia","ruby","javascript","typescript","python","yaml","rust","scala","gnuplot"]},{id:"less",scopeName:"source.css.less",path:"less.tmLanguage.json",displayName:"Less",embeddedLangs:["css"]},{id:"liquid",scopeName:"text.html.liquid",path:"liquid.tmLanguage.json",displayName:"Liquid",samplePath:"liquid.sample",embeddedLangs:["html","css","json","javascript"]},{id:"lisp",scopeName:"source.lisp",path:"lisp.tmLanguage.json",displayName:"Lisp"},{id:"logo",scopeName:"source.logo",path:"logo.tmLanguage.json",displayName:"Logo"},{id:"lua",scopeName:"source.lua",path:"lua.tmLanguage.json",displayName:"Lua",embeddedLangs:["c"]},{id:"make",scopeName:"source.makefile",path:"make.tmLanguage.json",displayName:"Makefile",aliases:["makefile"]},{id:"markdown",scopeName:"text.html.markdown",path:"markdown.tmLanguage.json",displayName:"Markdown",aliases:["md"],embeddedLangs:["css","html","ini","java","lua","make","perl","r","ruby","php","sql","vb","xml","xsl","yaml","bat","clojure","coffee","c","cpp","diff","docker","git-commit","git-rebase","go","groovy","pug","javascript","json","jsonc","less","objective-c","swift","scss","raku","powershell","python","julia","rust","scala","shellscript","typescript","tsx","csharp","fsharp","dart","handlebars","erlang","elixir","latex","bibtex"]},{id:"marko",scopeName:"text.marko",path:"marko.tmLanguage.json",displayName:"Marko",embeddedLangs:["css","less","scss","javascript"]},{id:"matlab",scopeName:"source.matlab",path:"matlab.tmLanguage.json",displayName:"MATLAB"},{id:"mdx",scopeName:"source.mdx",path:"mdx.tmLanguage.json",displayName:"MDX",embeddedLangs:["tsx","toml","yaml","c","clojure","coffee","cpp","csharp","css","diff","docker","elixir","elm","erlang","go","graphql","haskell","html","ini","java","javascript","json","julia","kotlin","less","lua","make","markdown","objective-c","perl","python","r","ruby","rust","scala","scss","shellscript","sql","xml","swift","typescript"]},{id:"mermaid",scopeName:"source.mermaid",path:"mermaid.tmLanguage.json",displayName:"Mermaid"},{id:"narrat",scopeName:"source.narrat",path:"narrat.tmLanguage.json",displayName:"Narrat Language",samplePath:"narrat.sample",aliases:["nar"]},{id:"nextflow",scopeName:"source.nextflow",path:"nextflow.tmLanguage.json",displayName:"Nextflow",samplePath:"nextflow.sample",aliases:["nf"]},{id:"nginx",scopeName:"source.nginx",path:"nginx.tmLanguage.json",displayName:"Nginx",embeddedLangs:["lua"]},{id:"nim",scopeName:"source.nim",path:"nim.tmLanguage.json",displayName:"Nim",embeddedLangs:["c","html","xml","javascript","css","glsl","markdown"]},{id:"nix",scopeName:"source.nix",path:"nix.tmLanguage.json",displayName:"Nix"},{id:"objective-c",scopeName:"source.objc",path:"objective-c.tmLanguage.json",displayName:"Objective-C",aliases:["objc"]},{id:"objective-cpp",scopeName:"source.objcpp",path:"objective-cpp.tmLanguage.json",displayName:"Objective-C++"},{id:"ocaml",scopeName:"source.ocaml",path:"ocaml.tmLanguage.json",displayName:"OCaml"},{id:"pascal",scopeName:"source.pascal",path:"pascal.tmLanguage.json",displayName:"Pascal"},{id:"perl",scopeName:"source.perl",path:"perl.tmLanguage.json",displayName:"Perl",embeddedLangs:["html","xml","css","javascript","sql"]},{id:"php",scopeName:"source.php",path:"php.tmLanguage.json",displayName:"PHP",embeddedLangs:["html","xml","sql","javascript","json","css"]},{id:"plsql",scopeName:"source.plsql.oracle",path:"plsql.tmLanguage.json",displayName:"PL/SQL"},{id:"postcss",scopeName:"source.css.postcss",path:"postcss.tmLanguage.json",displayName:"PostCSS"},{id:"powerquery",scopeName:"source.powerquery",path:"powerquery.tmLanguage.json",displayName:"PowerQuery",samplePath:"powerquery.sample"},{id:"powershell",scopeName:"source.powershell",path:"powershell.tmLanguage.json",displayName:"PowerShell",aliases:["ps","ps1"]},{id:"prisma",scopeName:"source.prisma",path:"prisma.tmLanguage.json",displayName:"Prisma",samplePath:"prisma.sample"},{id:"prolog",scopeName:"source.prolog",path:"prolog.tmLanguage.json",displayName:"Prolog"},{id:"proto",scopeName:"source.proto",path:"proto.tmLanguage.json",displayName:"Protocol Buffer 3",samplePath:"proto.sample"},{id:"pug",scopeName:"text.pug",path:"pug.tmLanguage.json",displayName:"Pug",aliases:["jade"],embeddedLangs:["javascript","css","sass","scss","stylus","coffee","html"]},{id:"puppet",scopeName:"source.puppet",path:"puppet.tmLanguage.json",displayName:"Puppet"},{id:"purescript",scopeName:"source.purescript",path:"purescript.tmLanguage.json",displayName:"PureScript"},{id:"python",scopeName:"source.python",path:"python.tmLanguage.json",displayName:"Python",samplePath:"python.sample",aliases:["py"]},{id:"r",scopeName:"source.r",path:"r.tmLanguage.json",displayName:"R"},{id:"raku",scopeName:"source.perl.6",path:"raku.tmLanguage.json",displayName:"Perl 6",aliases:["perl6"]},{id:"razor",scopeName:"text.aspnetcorerazor",path:"razor.tmLanguage.json",displayName:"ASP.NET Razor",embeddedLangs:["html","csharp"]},{id:"reg",scopeName:"source.reg",path:"reg.tmLanguage.json",displayName:"Windows Registry Script",samplePath:"reg.sample"},{id:"rel",scopeName:"source.rel",path:"rel.tmLanguage.json",displayName:"Rel",samplePath:"rel.sample"},{id:"riscv",scopeName:"source.riscv",path:"riscv.tmLanguage.json",displayName:"RISC-V"},{id:"rst",scopeName:"source.rst",path:"rst.tmLanguage.json",displayName:"reStructuredText",embeddedLangs:["cpp","python","javascript","shellscript","yaml","cmake","ruby"]},{id:"ruby",scopeName:"source.ruby",path:"ruby.tmLanguage.json",displayName:"Ruby",samplePath:"ruby.sample",aliases:["rb"],embeddedLangs:["html","xml","sql","css","c","javascript","shellscript","lua"]},{id:"rust",scopeName:"source.rust",path:"rust.tmLanguage.json",displayName:"Rust",aliases:["rs"]},{id:"sas",scopeName:"source.sas",path:"sas.tmLanguage.json",displayName:"SAS",embeddedLangs:["sql"]},{id:"sass",scopeName:"source.sass",path:"sass.tmLanguage.json",displayName:"Sass"},{id:"scala",scopeName:"source.scala",path:"scala.tmLanguage.json",displayName:"Scala"},{id:"scheme",scopeName:"source.scheme",path:"scheme.tmLanguage.json",displayName:"Scheme"},{id:"scss",scopeName:"source.css.scss",path:"scss.tmLanguage.json",displayName:"SCSS",embeddedLangs:["css"]},{id:"shaderlab",scopeName:"source.shaderlab",path:"shaderlab.tmLanguage.json",displayName:"ShaderLab",aliases:["shader"],embeddedLangs:["hlsl"]},{id:"shellscript",scopeName:"source.shell",path:"shellscript.tmLanguage.json",displayName:"Shell",aliases:["bash","console","sh","shell","zsh"]},{id:"smalltalk",scopeName:"source.smalltalk",path:"smalltalk.tmLanguage.json",displayName:"Smalltalk"},{id:"solidity",scopeName:"source.solidity",path:"solidity.tmLanguage.json",displayName:"Solidity"},{id:"sparql",scopeName:"source.sparql",path:"sparql.tmLanguage.json",displayName:"SPARQL",samplePath:"sparql.sample",embeddedLangs:["turtle"]},{id:"sql",scopeName:"source.sql",path:"sql.tmLanguage.json",displayName:"SQL"},{id:"ssh-config",scopeName:"source.ssh-config",path:"ssh-config.tmLanguage.json",displayName:"SSH Config"},{id:"stata",scopeName:"source.stata",path:"stata.tmLanguage.json",displayName:"Stata",samplePath:"stata.sample",embeddedLangs:["sql"]},{id:"stylus",scopeName:"source.stylus",path:"stylus.tmLanguage.json",displayName:"Stylus",aliases:["styl"]},{id:"svelte",scopeName:"source.svelte",path:"svelte.tmLanguage.json",displayName:"Svelte",embeddedLangs:["javascript","typescript","coffee","stylus","sass","css","scss","less","postcss","pug","markdown"]},{id:"swift",scopeName:"source.swift",path:"swift.tmLanguage.json",displayName:"Swift"},{id:"system-verilog",scopeName:"source.systemverilog",path:"system-verilog.tmLanguage.json",displayName:"SystemVerilog"},{id:"tasl",scopeName:"source.tasl",path:"tasl.tmLanguage.json",displayName:"Tasl",samplePath:"tasl.sample"},{id:"tcl",scopeName:"source.tcl",path:"tcl.tmLanguage.json",displayName:"Tcl"},{id:"tex",scopeName:"text.tex",path:"tex.tmLanguage.json",displayName:"TeX",embeddedLangs:["r"]},{id:"toml",scopeName:"source.toml",path:"toml.tmLanguage.json",displayName:"TOML"},{id:"tsx",scopeName:"source.tsx",path:"tsx.tmLanguage.json",displayName:"TSX",samplePath:"tsx.sample"},{id:"turtle",scopeName:"source.turtle",path:"turtle.tmLanguage.json",displayName:"Turtle",samplePath:"turtle.sample"},{id:"twig",scopeName:"text.html.twig",path:"twig.tmLanguage.json",displayName:"Twig",embeddedLangs:["css","javascript","php","python","ruby"]},{id:"typescript",scopeName:"source.ts",path:"typescript.tmLanguage.json",displayName:"TypeScript",aliases:["ts"]},{id:"v",scopeName:"source.v",path:"v.tmLanguage.json",displayName:"V",samplePath:"v.sample"},{id:"vb",scopeName:"source.asp.vb.net",path:"vb.tmLanguage.json",displayName:"Visual Basic",aliases:["cmd"]},{id:"verilog",scopeName:"source.verilog",path:"verilog.tmLanguage.json",displayName:"Verilog"},{id:"vhdl",scopeName:"source.vhdl",path:"vhdl.tmLanguage.json",displayName:"VHDL"},{id:"viml",scopeName:"source.viml",path:"viml.tmLanguage.json",displayName:"Vim Script",aliases:["vim","vimscript"]},{id:"vue-html",scopeName:"text.html.vue-html",path:"vue-html.tmLanguage.json",displayName:"Vue HTML",embeddedLangs:["vue","javascript"]},{id:"vue",scopeName:"source.vue",path:"vue.tmLanguage.json",displayName:"Vue",embeddedLangs:["html","markdown","pug","stylus","sass","css","scss","less","javascript","typescript","jsx","tsx","json","jsonc","json5","yaml","toml","graphql"]},{id:"vyper",scopeName:"source.vyper",path:"vyper.tmLanguage.json",displayName:"Vyper",samplePath:"vyper.sample",aliases:["vy"]},{id:"wasm",scopeName:"source.wat",path:"wasm.tmLanguage.json",displayName:"WebAssembly"},{id:"wenyan",scopeName:"source.wenyan",path:"wenyan.tmLanguage.json",displayName:"Wenyan",aliases:["文言"]},{id:"wgsl",scopeName:"source.wgsl",path:"wgsl.tmLanguage.json",displayName:"WGSL",samplePath:"wgsl.sample"},{id:"wolfram",scopeName:"source.wolfram",path:"wolfram.tmLanguage.json",displayName:"Wolfram",samplePath:"wolfram.sample"},{id:"xml",scopeName:"text.xml",path:"xml.tmLanguage.json",displayName:"XML",embeddedLangs:["java"]},{id:"xsl",scopeName:"text.xml.xsl",path:"xsl.tmLanguage.json",displayName:"XSL",embeddedLangs:["xml"]},{id:"yaml",scopeName:"source.yaml",path:"yaml.tmLanguage.json",displayName:"YAML",aliases:["yml"]},{id:"zenscript",scopeName:"source.zenscript",path:"zenscript.tmLanguage.json",displayName:"ZenScript",samplePath:"zenscript.sample"}];var s=(e=>(e[e.NotSet=-1]="NotSet",e[e.None=0]="None",e[e.Italic=1]="Italic",e[e.Bold=2]="Bold",e[e.Underline=4]="Underline",e))(s||{});class n{static toBinaryStr(e){let t=e.toString(2);for(;t.length<32;)t="0"+t;return t}static printMetadata(e){let t=n.getLanguageId(e),s=n.getTokenType(e),a=n.getFontStyle(e),r=n.getForeground(e),o=n.getBackground(e);console.log({languageId:t,tokenType:s,fontStyle:a,foreground:r,background:o})}static getLanguageId(e){return(255&e)>>>0}static getTokenType(e){return(768&e)>>>8}static getFontStyle(e){return(14336&e)>>>11}static getForeground(e){return(8372224&e)>>>15}static getBackground(e){return(4286578688&e)>>>24}static containsBalancedBrackets(e){return 0!=(1024&e)}static set(e,t,s,a,r,o){let i=n.getLanguageId(e),c=n.getTokenType(e),l=n.getFontStyle(e),u=n.getForeground(e),p=n.getBackground(e);return 0!==t&&(i=t),0!==s&&(c=8===s?0:s),-1!==a&&(l=a),0!==r&&(u=r),0!==o&&(p=o),(i<<0|c<<8|l<<11|(n.containsBalancedBrackets(e)?1:0)<<10|u<<15|p<<24)>>>0}}function a(e){return e.endsWith("/")||e.endsWith("\\")?e.slice(0,-1):e}function r(e){return e.startsWith("./")?e.slice(2):e}function o(e){const t=e.split(/[\/\\]/g);return t.slice(0,t.length-1)}function i(...e){return e.map(a).map(r).join("/")}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var c,l={exports:{}};c=()=>{return e={770:function(e,t,s){var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.setDefaultDebugCall=t.createOnigScanner=t.createOnigString=t.loadWASM=t.OnigScanner=t.OnigString=void 0;const a=n(s(418));let r=null,o=!1;class i{static _utf8ByteLength(e){let t=0;for(let s=0,n=e.length;s<n;s++){const a=e.charCodeAt(s);let r=a,o=!1;if(a>=55296&&a<=56319&&s+1<n){const t=e.charCodeAt(s+1);t>=56320&&t<=57343&&(r=65536+(a-55296<<10)|t-56320,o=!0)}t+=r<=127?1:r<=2047?2:r<=65535?3:4,o&&s++}return t}constructor(e){const t=e.length,s=i._utf8ByteLength(e),n=s!==t,a=n?new Uint32Array(t+1):null;n&&(a[t]=s);const r=n?new Uint32Array(s+1):null;n&&(r[s]=t);const o=new Uint8Array(s);let c=0;for(let s=0;s<t;s++){const i=e.charCodeAt(s);let l=i,u=!1;if(i>=55296&&i<=56319&&s+1<t){const t=e.charCodeAt(s+1);t>=56320&&t<=57343&&(l=65536+(i-55296<<10)|t-56320,u=!0)}n&&(a[s]=c,u&&(a[s+1]=c),l<=127?r[c+0]=s:l<=2047?(r[c+0]=s,r[c+1]=s):l<=65535?(r[c+0]=s,r[c+1]=s,r[c+2]=s):(r[c+0]=s,r[c+1]=s,r[c+2]=s,r[c+3]=s)),l<=127?o[c++]=l:l<=2047?(o[c++]=192|(1984&l)>>>6,o[c++]=128|(63&l)>>>0):l<=65535?(o[c++]=224|(61440&l)>>>12,o[c++]=128|(4032&l)>>>6,o[c++]=128|(63&l)>>>0):(o[c++]=240|(1835008&l)>>>18,o[c++]=128|(258048&l)>>>12,o[c++]=128|(4032&l)>>>6,o[c++]=128|(63&l)>>>0),u&&s++}this.utf16Length=t,this.utf8Length=s,this.utf16Value=e,this.utf8Value=o,this.utf16OffsetToUtf8=a,this.utf8OffsetToUtf16=r}createString(e){const t=e._omalloc(this.utf8Length);return e.HEAPU8.set(this.utf8Value,t),t}}class c{constructor(e){if(this.id=++c.LAST_ID,!r)throw new Error("Must invoke loadWASM first.");this._onigBinding=r,this.content=e;const t=new i(e);this.utf16Length=t.utf16Length,this.utf8Length=t.utf8Length,this.utf16OffsetToUtf8=t.utf16OffsetToUtf8,this.utf8OffsetToUtf16=t.utf8OffsetToUtf16,this.utf8Length<1e4&&!c._sharedPtrInUse?(c._sharedPtr||(c._sharedPtr=r._omalloc(1e4)),c._sharedPtrInUse=!0,r.HEAPU8.set(t.utf8Value,c._sharedPtr),this.ptr=c._sharedPtr):this.ptr=t.createString(r)}convertUtf8OffsetToUtf16(e){return this.utf8OffsetToUtf16?e<0?0:e>this.utf8Length?this.utf16Length:this.utf8OffsetToUtf16[e]:e}convertUtf16OffsetToUtf8(e){return this.utf16OffsetToUtf8?e<0?0:e>this.utf16Length?this.utf8Length:this.utf16OffsetToUtf8[e]:e}dispose(){this.ptr===c._sharedPtr?c._sharedPtrInUse=!1:this._onigBinding._ofree(this.ptr)}}t.OnigString=c,c.LAST_ID=0,c._sharedPtr=0,c._sharedPtrInUse=!1;class l{constructor(e){if(!r)throw new Error("Must invoke loadWASM first.");const t=[],s=[];for(let n=0,a=e.length;n<a;n++){const a=new i(e[n]);t[n]=a.createString(r),s[n]=a.utf8Length}const n=r._omalloc(4*e.length);r.HEAPU32.set(t,n/4);const a=r._omalloc(4*e.length);r.HEAPU32.set(s,a/4);const o=r._createOnigScanner(n,a,e.length);for(let s=0,n=e.length;s<n;s++)r._ofree(t[s]);r._ofree(a),r._ofree(n),0===o&&function(e){throw new Error(e.UTF8ToString(e._getLastOnigError()))}(r),this._onigBinding=r,this._ptr=o}dispose(){this._onigBinding._freeOnigScanner(this._ptr)}findNextMatchSync(e,t,s){let n=o,a=0;if("number"==typeof s?(8&s&&(n=!0),a=s):"boolean"==typeof s&&(n=s),"string"==typeof e){e=new c(e);const s=this._findNextMatchSync(e,t,n,a);return e.dispose(),s}return this._findNextMatchSync(e,t,n,a)}_findNextMatchSync(e,t,s,n){const a=this._onigBinding;let r;if(r=s?a._findNextOnigScannerMatchDbg(this._ptr,e.id,e.ptr,e.utf8Length,e.convertUtf16OffsetToUtf8(t),n):a._findNextOnigScannerMatch(this._ptr,e.id,e.ptr,e.utf8Length,e.convertUtf16OffsetToUtf8(t),n),0===r)return null;const o=a.HEAPU32;let i=r/4;const c=o[i++],l=o[i++];let u=[];for(let t=0;t<l;t++){const s=e.convertUtf8OffsetToUtf16(o[i++]),n=e.convertUtf8OffsetToUtf16(o[i++]);u[t]={start:s,end:n,length:n-s}}return{index:c,captureIndices:u}}}t.OnigScanner=l;let u=!1,p=null;t.loadWASM=function(e){if(u)return p;let t,s,n,o;if(u=!0,function(e){return"function"==typeof e.instantiator}(e))t=e.instantiator,s=e.print;else{let n;!function(e){return void 0!==e.data}(e)?n=e:(n=e.data,s=e.print),t=function(e){return"undefined"!=typeof Response&&e instanceof Response}(n)?"function"==typeof WebAssembly.instantiateStreaming?function(e){return t=>WebAssembly.instantiateStreaming(e,t)}(n):function(e){return async t=>{const s=await e.arrayBuffer();return WebAssembly.instantiate(s,t)}}(n):function(e){return t=>WebAssembly.instantiate(e,t)}(n)}return p=new Promise(((e,t)=>{n=e,o=t})),function(e,t,s,n){(0,a.default)({print:t,instantiateWasm:(t,s)=>{if("undefined"==typeof performance){const e=()=>Date.now();t.env.emscripten_get_now=e,t.wasi_snapshot_preview1.emscripten_get_now=e}return e(t).then((e=>s(e.instance)),n),{}}}).then((e=>{r=e,s()}))}(t,s,n,o),p},t.createOnigString=function(e){return new c(e)},t.createOnigScanner=function(e){return new l(e)},t.setDefaultDebugCall=function(e){o=e}},418:e=>{var t=("undefined"!=typeof document&&document.currentScript&&document.currentScript.src,function(e){var t,s,n=void 0!==(e=e||{})?e:{};n.ready=new Promise((function(e,n){t=e,s=n}));var a,r=Object.assign({},n),o=!1;a=function(e){let t;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(t=read(e,"binary"),function(e,t){e||C(t)}("object"==typeof t),t)},"undefined"!=typeof scriptArgs&&scriptArgs,"undefined"!=typeof onig_print&&("undefined"==typeof console&&(console={}),console.log=onig_print,console.warn=console.error="undefined"!=typeof printErr?printErr:onig_print);var i,c,l=n.print||console.log.bind(console),u=n.printErr||console.warn.bind(console);Object.assign(n,r),r=null,n.arguments&&n.arguments,n.thisProgram&&n.thisProgram,n.quit&&n.quit,n.wasmBinary&&(i=n.wasmBinary),n.noExitRuntime,"object"!=typeof WebAssembly&&C("no native wasm support detected");var p,h,d,m=!1,g="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function f(e,t,s){for(var n=t+s,a=t;e[a]&&!(a>=n);)++a;if(a-t>16&&e.buffer&&g)return g.decode(e.subarray(t,a));for(var r="";t<a;){var o=e[t++];if(128&o){var i=63&e[t++];if(192!=(224&o)){var c=63&e[t++];if((o=224==(240&o)?(15&o)<<12|i<<6|c:(7&o)<<18|i<<12|c<<6|63&e[t++])<65536)r+=String.fromCharCode(o);else{var l=o-65536;r+=String.fromCharCode(55296|l>>10,56320|1023&l)}}else r+=String.fromCharCode((31&o)<<6|i)}else r+=String.fromCharCode(o)}return r}function y(e){p=e,n.HEAP8=new Int8Array(e),n.HEAP16=new Int16Array(e),n.HEAP32=new Int32Array(e),n.HEAPU8=h=new Uint8Array(e),n.HEAPU16=new Uint16Array(e),n.HEAPU32=d=new Uint32Array(e),n.HEAPF32=new Float32Array(e),n.HEAPF64=new Float64Array(e)}n.INITIAL_MEMORY;var b=[],_=[],N=[];function k(e){b.unshift(e)}function L(e){N.unshift(e)}var S=0,v=null;function C(e){n.onAbort&&n.onAbort(e),u(e="Aborted("+e+")"),m=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw s(t),t}var j,w,P="data:application/octet-stream;base64,";function A(e){return e.startsWith(P)}function x(e){try{if(e==j&&i)return new Uint8Array(i);if(a)return a(e);throw"both async and sync fetching of the wasm failed"}catch(e){C(e)}}function T(e){for(;e.length>0;)e.shift()(n)}function R(e){try{return c.grow(e-p.byteLength+65535>>>16),y(c.buffer),1}catch(e){}}A(j="onig.wasm")||(j=function(e){return n.locateFile?n.locateFile(e,""):""+e}(j)),w="undefined"!=typeof dateNow?dateNow:()=>performance.now();var I=[null,[],[]];function E(e,t){var s=I[e];0===t||10===t?((1===e?l:u)(f(s,0)),s.length=0):s.push(t)}var O,M={emscripten_get_now:w,emscripten_memcpy_big:function(e,t,s){h.copyWithin(e,t,t+s)},emscripten_resize_heap:function(e){var t,s=h.length,n=2147483648;if((e>>>=0)>n)return!1;for(var a=1;a<=4;a*=2){var r=s*(1+.2/a);if(r=Math.min(r,e+100663296),R(Math.min(n,(t=Math.max(e,r))+(65536-t%65536)%65536)))return!0}return!1},fd_write:function(e,t,s,n){for(var a=0,r=0;r<s;r++){var o=d[t>>2],i=d[t+4>>2];t+=8;for(var c=0;c<i;c++)E(e,h[o+c]);a+=i}return d[n>>2]=a,0}};function B(e){function s(){O||(O=!0,n.calledRun=!0,m||(T(_),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),function(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)L(n.postRun.shift());T(N)}()))}S>0||(function(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)k(n.preRun.shift());T(b)}(),S>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),s()}),1)):s()))}if(function(){var e={env:M,wasi_snapshot_preview1:M};function t(e,t){var s=e.exports;n.asm=s,y((c=n.asm.memory).buffer),n.asm.__indirect_function_table,function(e){_.unshift(e)}(n.asm.__wasm_call_ctors),function(e){if(S--,n.monitorRunDependencies&&n.monitorRunDependencies(S),0==S&&v){var t=v;v=null,t()}}()}function a(e){t(e.instance)}function r(t){return(i||!o||"function"!=typeof fetch?Promise.resolve().then((function(){return x(j)})):fetch(j,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+j+"'";return e.arrayBuffer()})).catch((function(){return x(j)}))).then((function(t){return WebAssembly.instantiate(t,e)})).then((function(e){return e})).then(t,(function(e){u("failed to asynchronously prepare wasm: "+e),C(e)}))}if(S++,n.monitorRunDependencies&&n.monitorRunDependencies(S),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){u("Module.instantiateWasm callback failed with error: "+e),s(e)}(i||"function"!=typeof WebAssembly.instantiateStreaming||A(j)||"function"!=typeof fetch?r(a):fetch(j,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(a,(function(e){return u("wasm streaming compile failed: "+e),u("falling back to ArrayBuffer instantiation"),r(a)}))}))).catch(s)}(),n.___wasm_call_ctors=function(){return(n.___wasm_call_ctors=n.asm.__wasm_call_ctors).apply(null,arguments)},n.___errno_location=function(){return(n.___errno_location=n.asm.__errno_location).apply(null,arguments)},n._omalloc=function(){return(n._omalloc=n.asm.omalloc).apply(null,arguments)},n._ofree=function(){return(n._ofree=n.asm.ofree).apply(null,arguments)},n._getLastOnigError=function(){return(n._getLastOnigError=n.asm.getLastOnigError).apply(null,arguments)},n._createOnigScanner=function(){return(n._createOnigScanner=n.asm.createOnigScanner).apply(null,arguments)},n._freeOnigScanner=function(){return(n._freeOnigScanner=n.asm.freeOnigScanner).apply(null,arguments)},n._findNextOnigScannerMatch=function(){return(n._findNextOnigScannerMatch=n.asm.findNextOnigScannerMatch).apply(null,arguments)},n._findNextOnigScannerMatchDbg=function(){return(n._findNextOnigScannerMatchDbg=n.asm.findNextOnigScannerMatchDbg).apply(null,arguments)},n.stackSave=function(){return(n.stackSave=n.asm.stackSave).apply(null,arguments)},n.stackRestore=function(){return(n.stackRestore=n.asm.stackRestore).apply(null,arguments)},n.stackAlloc=function(){return(n.stackAlloc=n.asm.stackAlloc).apply(null,arguments)},n.dynCall_jiji=function(){return(n.dynCall_jiji=n.asm.dynCall_jiji).apply(null,arguments)},n.UTF8ToString=function(e,t){return e?f(h,e,t):""},v=function e(){O||B(),O||(v=e)},n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return B(),e.ready});e.exports=t}},t={},function s(n){var a=t[n];if(void 0!==a)return a.exports;var r=t[n]={exports:{}};return e[n].call(r.exports,r,r.exports,s),r.exports}(770);var e,t},l.exports=c();var u,p,h,d,m=l.exports;function g(e,t=!1){const s=e.length;let n=0,a="",r=0,o=16,i=0,c=0,l=0,u=0,p=0;function h(t,s){let a=0,r=0;for(;a<t||!s;){let t=e.charCodeAt(n);if(t>=48&&t<=57)r=16*r+t-48;else if(t>=65&&t<=70)r=16*r+t-65+10;else{if(!(t>=97&&t<=102))break;r=16*r+t-97+10}n++,a++}return a<t&&(r=-1),r}function d(){if(a="",p=0,r=n,c=i,u=l,n>=s)return r=s,o=17;let t=e.charCodeAt(n);if(f(t)){do{n++,a+=String.fromCharCode(t),t=e.charCodeAt(n)}while(f(t));return o=15}if(y(t))return n++,a+=String.fromCharCode(t),13===t&&10===e.charCodeAt(n)&&(n++,a+="\n"),i++,l=n,o=14;switch(t){case 123:return n++,o=1;case 125:return n++,o=2;case 91:return n++,o=3;case 93:return n++,o=4;case 58:return n++,o=6;case 44:return n++,o=5;case 34:return n++,a=function(){let t="",a=n;for(;;){if(n>=s){t+=e.substring(a,n),p=2;break}const r=e.charCodeAt(n);if(34===r){t+=e.substring(a,n),n++;break}if(92!==r){if(r>=0&&r<=31){if(y(r)){t+=e.substring(a,n),p=2;break}p=6}n++}else{if(t+=e.substring(a,n),n++,n>=s){p=2;break}switch(e.charCodeAt(n++)){case 34:t+='"';break;case 92:t+="\\";break;case 47:t+="/";break;case 98:t+="\b";break;case 102:t+="\f";break;case 110:t+="\n";break;case 114:t+="\r";break;case 116:t+="\t";break;case 117:const e=h(4,!0);e>=0?t+=String.fromCharCode(e):p=4;break;default:p=5}a=n}}return t}(),o=10;case 47:const c=n-1;if(47===e.charCodeAt(n+1)){for(n+=2;n<s&&!y(e.charCodeAt(n));)n++;return a=e.substring(c,n),o=12}if(42===e.charCodeAt(n+1)){n+=2;const t=s-1;let r=!1;for(;n<t;){const t=e.charCodeAt(n);if(42===t&&47===e.charCodeAt(n+1)){n+=2,r=!0;break}n++,y(t)&&(13===t&&10===e.charCodeAt(n)&&n++,i++,l=n)}return r||(n++,p=1),a=e.substring(c,n),o=13}return a+=String.fromCharCode(t),n++,o=16;case 45:if(a+=String.fromCharCode(t),n++,n===s||!b(e.charCodeAt(n)))return o=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return a+=function(){let t=n;if(48===e.charCodeAt(n))n++;else for(n++;n<e.length&&b(e.charCodeAt(n));)n++;if(n<e.length&&46===e.charCodeAt(n)){if(n++,!(n<e.length&&b(e.charCodeAt(n))))return p=3,e.substring(t,n);for(n++;n<e.length&&b(e.charCodeAt(n));)n++}let s=n;if(n<e.length&&(69===e.charCodeAt(n)||101===e.charCodeAt(n)))if(n++,(n<e.length&&43===e.charCodeAt(n)||45===e.charCodeAt(n))&&n++,n<e.length&&b(e.charCodeAt(n))){for(n++;n<e.length&&b(e.charCodeAt(n));)n++;s=n}else p=3;return e.substring(t,s)}(),o=11;default:for(;n<s&&m(t);)n++,t=e.charCodeAt(n);if(r!==n){switch(a=e.substring(r,n),a){case"true":return o=8;case"false":return o=9;case"null":return o=7}return o=16}return a+=String.fromCharCode(t),n++,o=16}}function m(e){if(f(e)||y(e))return!1;switch(e){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}return{setPosition:function(e){n=e,a="",r=0,o=16,p=0},getPosition:()=>n,scan:t?function(){let e;do{e=d()}while(e>=12&&e<=15);return e}:d,getToken:()=>o,getTokenValue:()=>a,getTokenOffset:()=>r,getTokenLength:()=>n-r,getTokenStartLine:()=>c,getTokenStartCharacter:()=>r-u,getTokenError:()=>p}}function f(e){return 32===e||9===e}function y(e){return 10===e||13===e}function b(e){return e>=48&&e<=57}!function(e){e[e.lineFeed=10]="lineFeed",e[e.carriageReturn=13]="carriageReturn",e[e.space=32]="space",e[e._0=48]="_0",e[e._1=49]="_1",e[e._2=50]="_2",e[e._3=51]="_3",e[e._4=52]="_4",e[e._5=53]="_5",e[e._6=54]="_6",e[e._7=55]="_7",e[e._8=56]="_8",e[e._9=57]="_9",e[e.a=97]="a",e[e.b=98]="b",e[e.c=99]="c",e[e.d=100]="d",e[e.e=101]="e",e[e.f=102]="f",e[e.g=103]="g",e[e.h=104]="h",e[e.i=105]="i",e[e.j=106]="j",e[e.k=107]="k",e[e.l=108]="l",e[e.m=109]="m",e[e.n=110]="n",e[e.o=111]="o",e[e.p=112]="p",e[e.q=113]="q",e[e.r=114]="r",e[e.s=115]="s",e[e.t=116]="t",e[e.u=117]="u",e[e.v=118]="v",e[e.w=119]="w",e[e.x=120]="x",e[e.y=121]="y",e[e.z=122]="z",e[e.A=65]="A",e[e.B=66]="B",e[e.C=67]="C",e[e.D=68]="D",e[e.E=69]="E",e[e.F=70]="F",e[e.G=71]="G",e[e.H=72]="H",e[e.I=73]="I",e[e.J=74]="J",e[e.K=75]="K",e[e.L=76]="L",e[e.M=77]="M",e[e.N=78]="N",e[e.O=79]="O",e[e.P=80]="P",e[e.Q=81]="Q",e[e.R=82]="R",e[e.S=83]="S",e[e.T=84]="T",e[e.U=85]="U",e[e.V=86]="V",e[e.W=87]="W",e[e.X=88]="X",e[e.Y=89]="Y",e[e.Z=90]="Z",e[e.asterisk=42]="asterisk",e[e.backslash=92]="backslash",e[e.closeBrace=125]="closeBrace",e[e.closeBracket=93]="closeBracket",e[e.colon=58]="colon",e[e.comma=44]="comma",e[e.dot=46]="dot",e[e.doubleQuote=34]="doubleQuote",e[e.minus=45]="minus",e[e.openBrace=123]="openBrace",e[e.openBracket=91]="openBracket",e[e.plus=43]="plus",e[e.slash=47]="slash",e[e.formFeed=12]="formFeed",e[e.tab=9]="tab"}(u||(u={})),function(e){e.DEFAULT={allowTrailingComma:!1}}(p||(p={})),function(e){e[e.None=0]="None",e[e.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=2]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",e[e.InvalidUnicode=4]="InvalidUnicode",e[e.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",e[e.InvalidCharacter=6]="InvalidCharacter"}(h||(h={})),function(e){e[e.OpenBraceToken=1]="OpenBraceToken",e[e.CloseBraceToken=2]="CloseBraceToken",e[e.OpenBracketToken=3]="OpenBracketToken",e[e.CloseBracketToken=4]="CloseBracketToken",e[e.CommaToken=5]="CommaToken",e[e.ColonToken=6]="ColonToken",e[e.NullKeyword=7]="NullKeyword",e[e.TrueKeyword=8]="TrueKeyword",e[e.FalseKeyword=9]="FalseKeyword",e[e.StringLiteral=10]="StringLiteral",e[e.NumericLiteral=11]="NumericLiteral",e[e.LineCommentTrivia=12]="LineCommentTrivia",e[e.BlockCommentTrivia=13]="BlockCommentTrivia",e[e.LineBreakTrivia=14]="LineBreakTrivia",e[e.Trivia=15]="Trivia",e[e.Unknown=16]="Unknown",e[e.EOF=17]="EOF"}(d||(d={}));const _=function(e,t=[],s=p.DEFAULT){let n=null,a=[];const r=[];function o(e){Array.isArray(a)?a.push(e):null!==n&&(a[n]=e)}return function(e,t,s=p.DEFAULT){const n=g(e,!1),a=[];function r(e){return e?()=>e(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function o(e){return e?()=>e(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),(()=>a.slice())):()=>!0}function i(e){return e?t=>e(t,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}function c(e){return e?t=>e(t,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),(()=>a.slice())):()=>!0}const l=o(t.onObjectBegin),u=c(t.onObjectProperty),h=r(t.onObjectEnd),d=o(t.onArrayBegin),m=r(t.onArrayEnd),f=c(t.onLiteralValue),y=i(t.onSeparator),b=r(t.onComment),_=i(t.onError),N=s&&s.disallowComments,k=s&&s.allowTrailingComma;function L(){for(;;){const e=n.scan();switch(n.getTokenError()){case 4:S(14);break;case 5:S(15);break;case 3:S(13);break;case 1:N||S(11);break;case 2:S(12);break;case 6:S(16)}switch(e){case 12:case 13:N?S(10):b();break;case 16:S(1);break;case 15:case 14:break;default:return e}}}function S(e,t=[],s=[]){if(_(e),t.length+s.length>0){let e=n.getToken();for(;17!==e;){if(-1!==t.indexOf(e)){L();break}if(-1!==s.indexOf(e))break;e=L()}}}function v(e){const t=n.getTokenValue();return e?f(t):(u(t),a.push(t)),L(),!0}function C(){switch(n.getToken()){case 11:const e=n.getTokenValue();let t=Number(e);isNaN(t)&&(S(2),t=0),f(t);break;case 7:f(null);break;case 8:f(!0);break;case 9:f(!1);break;default:return!1}return L(),!0}function j(){return 10!==n.getToken()?(S(3,[],[2,5]),!1):(v(!1),6===n.getToken()?(y(":"),L(),A()||S(4,[],[2,5])):S(5,[],[2,5]),a.pop(),!0)}function w(){l(),L();let e=!1;for(;2!==n.getToken()&&17!==n.getToken();){if(5===n.getToken()){if(e||S(4,[],[]),y(","),L(),2===n.getToken()&&k)break}else e&&S(6,[],[]);j()||S(4,[],[2,5]),e=!0}return h(),2!==n.getToken()?S(7,[2],[]):L(),!0}function P(){d(),L();let e=!0,t=!1;for(;4!==n.getToken()&&17!==n.getToken();){if(5===n.getToken()){if(t||S(4,[],[]),y(","),L(),4===n.getToken()&&k)break}else t&&S(6,[],[]);e?(a.push(0),e=!1):a[a.length-1]++,A()||S(4,[],[4,5]),t=!0}return m(),e||a.pop(),4!==n.getToken()?S(8,[4],[]):L(),!0}function A(){switch(n.getToken()){case 3:return P();case 1:return w();case 10:return v(!0);default:return C()}}if(L(),17===n.getToken())return!!s.allowEmptyContent||(S(4,[],[]),!1);if(!A())return S(4,[],[]),!1;17!==n.getToken()&&S(9,[],[])}(e,{onObjectBegin:()=>{const e={};o(e),r.push(a),a=e,n=null},onObjectProperty:e=>{n=e},onObjectEnd:()=>{a=r.pop()},onArrayBegin:()=>{const e=[];o(e),r.push(a),a=e,n=null},onArrayEnd:()=>{a=r.pop()},onLiteralValue:o,onError:(e,s,n)=>{t.push({error:e,offset:s,length:n})}},s),a[0]};var N;!function(e){e[e.InvalidSymbol=1]="InvalidSymbol",e[e.InvalidNumberFormat=2]="InvalidNumberFormat",e[e.PropertyNameExpected=3]="PropertyNameExpected",e[e.ValueExpected=4]="ValueExpected",e[e.ColonExpected=5]="ColonExpected",e[e.CommaExpected=6]="CommaExpected",e[e.CloseBraceExpected=7]="CloseBraceExpected",e[e.CloseBracketExpected=8]="CloseBracketExpected",e[e.EndOfFileExpected=9]="EndOfFileExpected",e[e.InvalidCommentToken=10]="InvalidCommentToken",e[e.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",e[e.UnexpectedEndOfString=12]="UnexpectedEndOfString",e[e.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",e[e.InvalidUnicode=14]="InvalidUnicode",e[e.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",e[e.InvalidCharacter=16]="InvalidCharacter"}(N||(N={}));const k="undefined"!=typeof self&&void 0!==self.WorkerGlobalScope,L="process"in globalThis&&"undefined"!=typeof process&&void 0!==process.release&&"node"===process.release.name,S=k||!L;let v="https://unpkg.com/shiki@0.14.3/",C="";const j="dist/";function w(e){C=e}let P=null;function A(e){if(S)return`${v}${e}`;{const t=require("path");return t.isAbsolute(e)?e:t.resolve(__dirname,"..",e)}}async function x(e){const t=[],s=await async function(e){const t=A(e);if(S)return await fetch(t).then((e=>e.text()));{const e=require("fs");return await e.promises.readFile(t,"utf-8")}}(e);let n;try{n=JSON.parse(s)}catch(e){if(n=_(s,t,{allowTrailingComma:!0}),t.length)throw t[0]}return n}async function T(e){const t=R(await x(e));if(t.include){const s=await T(i(...o(e),t.include));s.settings&&(t.settings=s.settings.concat(t.settings)),s.bg&&!t.bg&&(t.bg=s.bg),s.colors&&(t.colors={...s.colors,...t.colors}),delete t.include}return t}function R(e){const t=e.type||"dark",s={name:e.name,type:t,...e,...O(e)};var n;return e.include&&(s.include=e.include),e.tokenColors&&(s.settings=e.tokenColors,delete s.tokenColors),(n=s).settings||(n.settings=[]),n.settings[0]&&n.settings[0].settings&&!n.settings[0].scope||n.settings.unshift({settings:{foreground:n.fg,background:n.bg}}),s}const I={light:"#333333",dark:"#bbbbbb"},E={light:"#fffffe",dark:"#1e1e1e"};function O(e){let t,s,n=e.settings?e.settings:e.tokenColors;const a=n?n.find((e=>!e.name&&!e.scope)):void 0;return a?.settings?.foreground&&(t=a.settings.foreground),a?.settings?.background&&(s=a.settings.background),!t&&e?.colors?.["editor.foreground"]&&(t=e.colors["editor.foreground"]),!s&&e?.colors?.["editor.background"]&&(s=e.colors["editor.background"]),t||(t="light"===e.type?I.light:I.dark),s||(s="light"===e.type?E.light:E.dark),{fg:t,bg:s}}class M{constructor(e,t){this.languagesPath="languages/",this.languageMap={},this.scopeToLangMap={},this._onigLibPromise=e,this._onigLibName=t}get onigLib(){return this._onigLibPromise}getOnigLibName(){return this._onigLibName}getLangRegistration(e){return this.languageMap[e]}async loadGrammar(e){const s=this.scopeToLangMap[e];if(!s)return null;if(s.grammar)return s.grammar;const n=await async function(e){return await x(e)}(t.includes(s)?`${this.languagesPath}${s.path}`:s.path);return s.grammar=n,n}addLanguage(e){this.languageMap[e.id]=e,e.aliases&&e.aliases.forEach((t=>{this.languageMap[t]=e})),this.scopeToLangMap[e.scopeName]=e}}var B={exports:{}};!function(e,t){var s,n;e.exports=(s={350:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UseOnigurumaFindOptions=t.DebugFlags=void 0,t.DebugFlags={InDebugMode:"undefined"!=typeof process&&!!process.env.VSCODE_TEXTMATE_DEBUG},t.UseOnigurumaFindOptions=!1},36:(e,t)=>{var s;Object.defineProperty(t,"__esModule",{value:!0}),t.toOptionalTokenType=t.EncodedTokenAttributes=void 0,(s=t.EncodedTokenAttributes||(t.EncodedTokenAttributes={})).toBinaryStr=function(e){let t=e.toString(2);for(;t.length<32;)t="0"+t;return t},s.print=function(e){const t=s.getLanguageId(e),n=s.getTokenType(e),a=s.getFontStyle(e),r=s.getForeground(e),o=s.getBackground(e);console.log({languageId:t,tokenType:n,fontStyle:a,foreground:r,background:o})},s.getLanguageId=function(e){return(255&e)>>>0},s.getTokenType=function(e){return(768&e)>>>8},s.containsBalancedBrackets=function(e){return 0!=(1024&e)},s.getFontStyle=function(e){return(30720&e)>>>11},s.getForeground=function(e){return(16744448&e)>>>15},s.getBackground=function(e){return(4278190080&e)>>>24},s.set=function(e,t,n,a,r,o,i){let c=s.getLanguageId(e),l=s.getTokenType(e),u=s.containsBalancedBrackets(e)?1:0,p=s.getFontStyle(e),h=s.getForeground(e),d=s.getBackground(e);return 0!==t&&(c=t),8!==n&&(l=n),null!==a&&(u=a?1:0),-1!==r&&(p=r),0!==o&&(h=o),0!==i&&(d=i),(c<<0|l<<8|u<<10|p<<11|h<<15|d<<24)>>>0},t.toOptionalTokenType=function(e){return e}},996:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BasicScopeAttributesProvider=t.BasicScopeAttributes=void 0;const n=s(878);class a{constructor(e,t){this.languageId=e,this.tokenType=t}}t.BasicScopeAttributes=a;class r{constructor(e,t){this._getBasicScopeAttributes=new n.CachedFn((e=>{const t=this._scopeToLanguage(e),s=this._toStandardTokenType(e);return new a(t,s)})),this._defaultAttributes=new a(e,8),this._embeddedLanguagesMatcher=new o(Object.entries(t||{}))}getDefaultAttributes(){return this._defaultAttributes}getBasicScopeAttributes(e){return null===e?r._NULL_SCOPE_METADATA:this._getBasicScopeAttributes.get(e)}_scopeToLanguage(e){return this._embeddedLanguagesMatcher.match(e)||0}_toStandardTokenType(e){const t=e.match(r.STANDARD_TOKEN_TYPE_REGEXP);if(!t)return 8;switch(t[1]){case"comment":return 1;case"string":return 2;case"regex":return 3;case"meta.embedded":return 0}throw new Error("Unexpected match for standard token type!")}}t.BasicScopeAttributesProvider=r,r._NULL_SCOPE_METADATA=new a(0,0),r.STANDARD_TOKEN_TYPE_REGEXP=/\b(comment|string|regex|meta\.embedded)\b/;class o{constructor(e){if(0===e.length)this.values=null,this.scopesRegExp=null;else{this.values=new Map(e);const t=e.map((([e,t])=>n.escapeRegExpCharacters(e)));t.sort(),t.reverse(),this.scopesRegExp=new RegExp(`^((${t.join(")|(")}))($|\\.)`,"")}}match(e){if(!this.scopesRegExp)return;const t=e.match(this.scopesRegExp);return t?this.values.get(t[1]):void 0}}},947:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LineTokens=t.BalancedBracketSelectors=t.StateStack=t.AttributedScopeStack=t.Grammar=t.createGrammar=void 0;const n=s(350),a=s(36),r=s(736),o=s(44),i=s(792),c=s(583),l=s(878),u=s(996),p=s(47);function h(e,t,s,n,a){const o=r.createMatchers(t,d),c=i.RuleFactory.getCompiledRuleId(s,n,a.repository);for(const s of o)e.push({debugSelector:t,matcher:s.matcher,ruleId:c,grammar:a,priority:s.priority})}function d(e,t){if(t.length<e.length)return!1;let s=0;return e.every((e=>{for(let n=s;n<t.length;n++)if(m(t[n],e))return s=n+1,!0;return!1}))}function m(e,t){if(!e)return!1;if(e===t)return!0;const s=t.length;return e.length>s&&e.substr(0,s)===t&&"."===e[s]}t.createGrammar=function(e,t,s,n,a,r,o,i){return new g(e,t,s,n,a,r,o,i)};class g{constructor(e,t,s,n,a,o,i,c){if(this._rootScopeName=e,this.balancedBracketSelectors=o,this._onigLib=c,this._basicScopeAttributesProvider=new u.BasicScopeAttributesProvider(s,n),this._rootId=-1,this._lastRuleId=0,this._ruleId2desc=[null],this._includedGrammars={},this._grammarRepository=i,this._grammar=f(t,null),this._injections=null,this._tokenTypeMatchers=[],a)for(const e of Object.keys(a)){const t=r.createMatchers(e,d);for(const s of t)this._tokenTypeMatchers.push({matcher:s.matcher,type:a[e]})}}get themeProvider(){return this._grammarRepository}dispose(){for(const e of this._ruleId2desc)e&&e.dispose()}createOnigScanner(e){return this._onigLib.createOnigScanner(e)}createOnigString(e){return this._onigLib.createOnigString(e)}getMetadataForScope(e){return this._basicScopeAttributesProvider.getBasicScopeAttributes(e)}_collectInjections(){const e=[],t=this._rootScopeName,s=(e=>e===this._rootScopeName?this._grammar:this.getExternalGrammar(e))(t);if(s){const n=s.injections;if(n)for(let t in n)h(e,t,n[t],this,s);const a=this._grammarRepository.injections(t);a&&a.forEach((t=>{const s=this.getExternalGrammar(t);if(s){const t=s.injectionSelector;t&&h(e,t,s,this,s)}}))}return e.sort(((e,t)=>e.priority-t.priority)),e}getInjections(){if(null===this._injections&&(this._injections=this._collectInjections(),n.DebugFlags.InDebugMode&&this._injections.length>0)){console.log(`Grammar ${this._rootScopeName} contains the following injections:`);for(const e of this._injections)console.log(` - ${e.debugSelector}`)}return this._injections}registerRule(e){const t=++this._lastRuleId,s=e(i.ruleIdFromNumber(t));return this._ruleId2desc[t]=s,s}getRule(e){return this._ruleId2desc[i.ruleIdToNumber(e)]}getExternalGrammar(e,t){if(this._includedGrammars[e])return this._includedGrammars[e];if(this._grammarRepository){const s=this._grammarRepository.lookup(e);if(s)return this._includedGrammars[e]=f(s,t&&t.$base),this._includedGrammars[e]}}tokenizeLine(e,t,s=0){const n=this._tokenize(e,t,!1,s);return{tokens:n.lineTokens.getResult(n.ruleStack,n.lineLength),ruleStack:n.ruleStack,stoppedEarly:n.stoppedEarly}}tokenizeLine2(e,t,s=0){const n=this._tokenize(e,t,!0,s);return{tokens:n.lineTokens.getBinaryResult(n.ruleStack,n.lineLength),ruleStack:n.ruleStack,stoppedEarly:n.stoppedEarly}}_tokenize(e,t,s,n){let r;if(-1===this._rootId&&(this._rootId=i.RuleFactory.getCompiledRuleId(this._grammar.repository.$self,this,this._grammar.repository)),t&&t!==b.NULL)r=!1,t.reset();else{r=!0;const e=this._basicScopeAttributesProvider.getDefaultAttributes(),s=this.themeProvider.getDefaults(),n=a.EncodedTokenAttributes.set(0,e.languageId,e.tokenType,null,s.fontStyle,s.foregroundId,s.backgroundId),o=this.getRule(this._rootId).getName(null,null);let i;i=o?y.createRootAndLookUpScopeName(o,n,this):y.createRoot("unknown",n),t=new b(null,this._rootId,-1,-1,!1,null,i,i)}e+="\n";const c=this.createOnigString(e),l=c.content.length,u=new _(s,e,this._tokenTypeMatchers,this.balancedBracketSelectors),h=p._tokenizeString(this,c,r,0,t,u,!0,n);return o.disposeOnigString(c),{lineLength:l,lineTokens:u,ruleStack:h.stack,stoppedEarly:h.stoppedEarly}}}function f(e,t){return(e=l.clone(e)).repository=e.repository||{},e.repository.$self={$vscodeTextmateLocation:e.$vscodeTextmateLocation,patterns:e.patterns,name:e.scopeName},e.repository.$base=t||e.repository.$self,e}t.Grammar=g;class y{constructor(e,t,s){this.parent=e,this.scopePath=t,this.tokenAttributes=s}static createRoot(e,t){return new y(null,new c.ScopeStack(null,e),t)}static createRootAndLookUpScopeName(e,t,s){const n=s.getMetadataForScope(e),a=new c.ScopeStack(null,e),r=s.themeProvider.themeMatch(a),o=y.mergeAttributes(t,n,r);return new y(null,a,o)}get scopeName(){return this.scopePath.scopeName}equals(e){return y._equals(this,e)}static _equals(e,t){for(;;){if(e===t)return!0;if(!e&&!t)return!0;if(!e||!t)return!1;if(e.scopeName!==t.scopeName||e.tokenAttributes!==t.tokenAttributes)return!1;e=e.parent,t=t.parent}}static mergeAttributes(e,t,s){let n=-1,r=0,o=0;return null!==s&&(n=s.fontStyle,r=s.foregroundId,o=s.backgroundId),a.EncodedTokenAttributes.set(e,t.languageId,t.tokenType,null,n,r,o)}pushAttributed(e,t){if(null===e)return this;if(-1===e.indexOf(" "))return y._pushAttributed(this,e,t);const s=e.split(/ /g);let n=this;for(const e of s)n=y._pushAttributed(n,e,t);return n}static _pushAttributed(e,t,s){const n=s.getMetadataForScope(t),a=e.scopePath.push(t),r=s.themeProvider.themeMatch(a),o=y.mergeAttributes(e.tokenAttributes,n,r);return new y(e,a,o)}getScopeNames(){return this.scopePath.getSegments()}}t.AttributedScopeStack=y;class b{constructor(e,t,s,n,a,r,o,i){this.parent=e,this.ruleId=t,this.beginRuleCapturedEOL=a,this.endRule=r,this.nameScopesList=o,this.contentNameScopesList=i,this._stackElementBrand=void 0,this.depth=this.parent?this.parent.depth+1:1,this._enterPos=s,this._anchorPos=n}equals(e){return null!==e&&b._equals(this,e)}static _equals(e,t){return e===t||!!this._structuralEquals(e,t)&&e.contentNameScopesList.equals(t.contentNameScopesList)}static _structuralEquals(e,t){for(;;){if(e===t)return!0;if(!e&&!t)return!0;if(!e||!t)return!1;if(e.depth!==t.depth||e.ruleId!==t.ruleId||e.endRule!==t.endRule)return!1;e=e.parent,t=t.parent}}clone(){return this}static _reset(e){for(;e;)e._enterPos=-1,e._anchorPos=-1,e=e.parent}reset(){b._reset(this)}pop(){return this.parent}safePop(){return this.parent?this.parent:this}push(e,t,s,n,a,r,o){return new b(this,e,t,s,n,a,r,o)}getEnterPos(){return this._enterPos}getAnchorPos(){return this._anchorPos}getRule(e){return e.getRule(this.ruleId)}toString(){const e=[];return this._writeString(e,0),"["+e.join(",")+"]"}_writeString(e,t){return this.parent&&(t=this.parent._writeString(e,t)),e[t++]=`(${this.ruleId}, TODO-${this.nameScopesList}, TODO-${this.contentNameScopesList})`,t}withContentNameScopesList(e){return this.contentNameScopesList===e?this:this.parent.push(this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,this.endRule,this.nameScopesList,e)}withEndRule(e){return this.endRule===e?this:new b(this.parent,this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,e,this.nameScopesList,this.contentNameScopesList)}hasSameRuleAs(e){let t=this;for(;t&&t._enterPos===e._enterPos;){if(t.ruleId===e.ruleId)return!0;t=t.parent}return!1}}t.StateStack=b,b.NULL=new b(null,0,0,0,!1,null,null,null),t.BalancedBracketSelectors=class{constructor(e,t){this.allowAny=!1,this.balancedBracketScopes=e.flatMap((e=>"*"===e?(this.allowAny=!0,[]):r.createMatchers(e,d).map((e=>e.matcher)))),this.unbalancedBracketScopes=t.flatMap((e=>r.createMatchers(e,d).map((e=>e.matcher))))}get matchesAlways(){return this.allowAny&&0===this.unbalancedBracketScopes.length}get matchesNever(){return 0===this.balancedBracketScopes.length&&!this.allowAny}match(e){for(const t of this.unbalancedBracketScopes)if(t(e))return!1;for(const t of this.balancedBracketScopes)if(t(e))return!0;return this.allowAny}};class _{constructor(e,t,s,a){this.balancedBracketSelectors=a,this._emitBinaryTokens=e,this._tokenTypeOverrides=s,n.DebugFlags.InDebugMode?this._lineText=t:this._lineText=null,this._tokens=[],this._binaryTokens=[],this._lastTokenEndIndex=0}produce(e,t){this.produceFromScopes(e.contentNameScopesList,t)}produceFromScopes(e,t){if(this._lastTokenEndIndex>=t)return;if(this._emitBinaryTokens){let s=e.tokenAttributes,r=!1;if(this.balancedBracketSelectors?.matchesAlways&&(r=!0),this._tokenTypeOverrides.length>0||this.balancedBracketSelectors&&!this.balancedBracketSelectors.matchesAlways&&!this.balancedBracketSelectors.matchesNever){const t=e.getScopeNames();for(const e of this._tokenTypeOverrides)e.matcher(t)&&(s=a.EncodedTokenAttributes.set(s,0,a.toOptionalTokenType(e.type),null,-1,0,0));this.balancedBracketSelectors&&(r=this.balancedBracketSelectors.match(t))}if(r&&(s=a.EncodedTokenAttributes.set(s,0,8,r,-1,0,0)),this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-1]===s)return void(this._lastTokenEndIndex=t);if(n.DebugFlags.InDebugMode){const s=e.getScopeNames();console.log(" token: |"+this._lineText.substring(this._lastTokenEndIndex,t).replace(/\n$/,"\\n")+"|");for(let e=0;e<s.length;e++)console.log(" * "+s[e])}return this._binaryTokens.push(this._lastTokenEndIndex),this._binaryTokens.push(s),void(this._lastTokenEndIndex=t)}const s=e.getScopeNames();if(n.DebugFlags.InDebugMode){console.log(" token: |"+this._lineText.substring(this._lastTokenEndIndex,t).replace(/\n$/,"\\n")+"|");for(let e=0;e<s.length;e++)console.log(" * "+s[e])}this._tokens.push({startIndex:this._lastTokenEndIndex,endIndex:t,scopes:s}),this._lastTokenEndIndex=t}getResult(e,t){return this._tokens.length>0&&this._tokens[this._tokens.length-1].startIndex===t-1&&this._tokens.pop(),0===this._tokens.length&&(this._lastTokenEndIndex=-1,this.produce(e,t),this._tokens[this._tokens.length-1].startIndex=0),this._tokens}getBinaryResult(e,t){this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-2]===t-1&&(this._binaryTokens.pop(),this._binaryTokens.pop()),0===this._binaryTokens.length&&(this._lastTokenEndIndex=-1,this.produce(e,t),this._binaryTokens[this._binaryTokens.length-2]=0);const s=new Uint32Array(this._binaryTokens.length);for(let e=0,t=this._binaryTokens.length;e<t;e++)s[e]=this._binaryTokens[e];return s}}t.LineTokens=_},965:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseInclude=t.TopLevelRepositoryReference=t.TopLevelReference=t.RelativeReference=t.SelfReference=t.BaseReference=t.ScopeDependencyProcessor=t.ExternalReferenceCollector=t.TopLevelRepositoryRuleReference=t.TopLevelRuleReference=void 0;const n=s(878);class a{constructor(e){this.scopeName=e}toKey(){return this.scopeName}}t.TopLevelRuleReference=a;class r{constructor(e,t){this.scopeName=e,this.ruleName=t}toKey(){return`${this.scopeName}#${this.ruleName}`}}t.TopLevelRepositoryRuleReference=r;class o{constructor(){this._references=[],this._seenReferenceKeys=new Set,this.visitedRule=new Set}get references(){return this._references}add(e){const t=e.toKey();this._seenReferenceKeys.has(t)||(this._seenReferenceKeys.add(t),this._references.push(e))}}function i(e,t,s,n){const r=s.lookup(e.scopeName);if(!r){if(e.scopeName===t)throw new Error(`No grammar provided for <${t}>`);return}const o=s.lookup(t);e instanceof a?l({baseGrammar:o,selfGrammar:r},n):c(e.ruleName,{baseGrammar:o,selfGrammar:r,repository:r.repository},n);const i=s.injections(e.scopeName);if(i)for(const e of i)n.add(new a(e))}function c(e,t,s){t.repository&&t.repository[e]&&u([t.repository[e]],t,s)}function l(e,t){e.selfGrammar.patterns&&Array.isArray(e.selfGrammar.patterns)&&u(e.selfGrammar.patterns,{...e,repository:e.selfGrammar.repository},t),e.selfGrammar.injections&&u(Object.values(e.selfGrammar.injections),{...e,repository:e.selfGrammar.repository},t)}function u(e,t,s){for(const o of e){if(s.visitedRule.has(o))continue;s.visitedRule.add(o);const e=o.repository?n.mergeObjects({},t.repository,o.repository):t.repository;Array.isArray(o.patterns)&&u(o.patterns,{...t,repository:e},s);const i=o.include;if(!i)continue;const p=f(i);switch(p.kind){case 0:l({...t,selfGrammar:t.baseGrammar},s);break;case 1:l(t,s);break;case 2:c(p.ruleName,{...t,repository:e},s);break;case 3:case 4:const n=p.scopeName===t.selfGrammar.scopeName?t.selfGrammar:p.scopeName===t.baseGrammar.scopeName?t.baseGrammar:void 0;if(n){const a={baseGrammar:t.baseGrammar,selfGrammar:n,repository:e};4===p.kind?c(p.ruleName,a,s):l(a,s)}else 4===p.kind?s.add(new r(p.scopeName,p.ruleName)):s.add(new a(p.scopeName))}}}t.ExternalReferenceCollector=o,t.ScopeDependencyProcessor=class{constructor(e,t){this.repo=e,this.initialScopeName=t,this.seenFullScopeRequests=new Set,this.seenPartialScopeRequests=new Set,this.seenFullScopeRequests.add(this.initialScopeName),this.Q=[new a(this.initialScopeName)]}processQueue(){const e=this.Q;this.Q=[];const t=new o;for(const s of e)i(s,this.initialScopeName,this.repo,t);for(const e of t.references)if(e instanceof a){if(this.seenFullScopeRequests.has(e.scopeName))continue;this.seenFullScopeRequests.add(e.scopeName),this.Q.push(e)}else{if(this.seenFullScopeRequests.has(e.scopeName))continue;if(this.seenPartialScopeRequests.has(e.toKey()))continue;this.seenPartialScopeRequests.add(e.toKey()),this.Q.push(e)}}};class p{constructor(){this.kind=0}}t.BaseReference=p;class h{constructor(){this.kind=1}}t.SelfReference=h;class d{constructor(e){this.ruleName=e,this.kind=2}}t.RelativeReference=d;class m{constructor(e){this.scopeName=e,this.kind=3}}t.TopLevelReference=m;class g{constructor(e,t){this.scopeName=e,this.ruleName=t,this.kind=4}}function f(e){if("$base"===e)return new p;if("$self"===e)return new h;const t=e.indexOf("#");if(-1===t)return new m(e);if(0===t)return new d(e.substring(1));{const s=e.substring(0,t),n=e.substring(t+1);return new g(s,n)}}t.TopLevelRepositoryReference=g,t.parseInclude=f},391:function(e,t,s){var n=this&&this.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),a=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||n(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),a(s(947),t)},47:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LocalStackElement=t._tokenizeString=void 0;const n=s(350),a=s(44),r=s(792),o=s(878);class i{constructor(e,t){this.stack=e,this.stoppedEarly=t}}function c(e,t,s,a,c,p,d,m){const g=t.content.length;let f=!1,y=-1;if(d){const o=function(e,t,s,a,o,i){let c=o.beginRuleCapturedEOL?0:-1;const l=[];for(let t=o;t;t=t.pop()){const s=t.getRule(e);s instanceof r.BeginWhileRule&&l.push({rule:s,stack:t})}for(let p=l.pop();p;p=l.pop()){const{ruleScanner:l,findOptions:d}=u(p.rule,e,p.stack.endRule,s,a===c),m=l.findNextMatchSync(t,a,d);if(n.DebugFlags.InDebugMode&&(console.log(" scanning for while rule"),console.log(l.toString())),!m){n.DebugFlags.InDebugMode&&console.log(" popping "+p.rule.debugName+" - "+p.rule.debugWhileRegExp),o=p.stack.pop();break}if(m.ruleId!==r.whileRuleId){o=p.stack.pop();break}m.captureIndices&&m.captureIndices.length&&(i.produce(p.stack,m.captureIndices[0].start),h(e,t,s,p.stack,i,p.rule.whileCaptures,m.captureIndices),i.produce(p.stack,m.captureIndices[0].end),c=m.captureIndices[0].end,m.captureIndices[0].end>a&&(a=m.captureIndices[0].end,s=!1))}return{stack:o,linePos:a,anchorPosition:c,isFirstLine:s}}(e,t,s,a,c,p);c=o.stack,a=o.linePos,s=o.isFirstLine,y=o.anchorPosition}const b=Date.now();for(;!f;){if(0!==m&&Date.now()-b>m)return new i(c,!0);_()}return new i(c,!1);function _(){n.DebugFlags.InDebugMode&&(console.log(""),console.log(`@@scanNext ${a}: |${t.content.substr(a).replace(/\n$/,"\\n")}|`));const i=function(e,t,s,a,r,i){const c=function(e,t,s,a,r,i){const c=r.getRule(e),{ruleScanner:u,findOptions:p}=l(c,e,r.endRule,s,a===i);let h=0;n.DebugFlags.InDebugMode&&(h=o.performanceNow());const d=u.findNextMatchSync(t,a,p);if(n.DebugFlags.InDebugMode){const e=o.performanceNow()-h;e>5&&console.warn(`Rule ${c.debugName} (${c.id}) matching took ${e} against '${t}'`),console.log(` scanning for (linePos: ${a}, anchorPosition: ${i})`),console.log(u.toString()),d&&console.log(`matched rule id: ${d.ruleId} from ${d.captureIndices[0].start} to ${d.captureIndices[0].end}`)}return d?{captureIndices:d.captureIndices,matchedRuleId:d.ruleId}:null}(e,t,s,a,r,i),u=e.getInjections();if(0===u.length)return c;const p=function(e,t,s,a,r,o,i){let c,u=Number.MAX_VALUE,p=null,h=0;const d=o.contentNameScopesList.getScopeNames();for(let o=0,m=e.length;o<m;o++){const m=e[o];if(!m.matcher(d))continue;const g=t.getRule(m.ruleId),{ruleScanner:f,findOptions:y}=l(g,t,null,a,r===i),b=f.findNextMatchSync(s,r,y);if(!b)continue;n.DebugFlags.InDebugMode&&(console.log(` matched injection: ${m.debugSelector}`),console.log(f.toString()));const _=b.captureIndices[0].start;if(!(_>=u)&&(u=_,p=b.captureIndices,c=b.ruleId,h=m.priority,u===r))break}return p?{priorityMatch:-1===h,captureIndices:p,matchedRuleId:c}:null}(u,e,t,s,a,r,i);if(!p)return c;if(!c)return p;const h=c.captureIndices[0].start,d=p.captureIndices[0].start;return d<h||p.priorityMatch&&d===h?p:c}(e,t,s,a,c,y);if(!i)return n.DebugFlags.InDebugMode&&console.log(" no more matches."),p.produce(c,g),void(f=!0);const u=i.captureIndices,d=i.matchedRuleId,m=!!(u&&u.length>0)&&u[0].end>a;if(d===r.endRuleId){const r=c.getRule(e);n.DebugFlags.InDebugMode&&console.log(" popping "+r.debugName+" - "+r.debugEndRegExp),p.produce(c,u[0].start),c=c.withContentNameScopesList(c.nameScopesList),h(e,t,s,c,p,r.endCaptures,u),p.produce(c,u[0].end);const o=c;if(c=c.parent,y=o.getAnchorPos(),!m&&o.getEnterPos()===a)return n.DebugFlags.InDebugMode&&console.error("[1] - Grammar is in an endless loop - Grammar pushed & popped a rule without advancing"),c=o,p.produce(c,g),void(f=!0)}else{const o=e.getRule(d);p.produce(c,u[0].start);const i=c,l=o.getName(t.content,u),b=c.contentNameScopesList.pushAttributed(l,e);if(c=c.push(d,a,y,u[0].end===g,null,b,b),o instanceof r.BeginEndRule){const a=o;n.DebugFlags.InDebugMode&&console.log(" pushing "+a.debugName+" - "+a.debugBeginRegExp),h(e,t,s,c,p,a.beginCaptures,u),p.produce(c,u[0].end),y=u[0].end;const r=a.getContentName(t.content,u),l=b.pushAttributed(r,e);if(c=c.withContentNameScopesList(l),a.endHasBackReferences&&(c=c.withEndRule(a.getEndWithResolvedBackReferences(t.content,u))),!m&&i.hasSameRuleAs(c))return n.DebugFlags.InDebugMode&&console.error("[2] - Grammar is in an endless loop - Grammar pushed the same rule without advancing"),c=c.pop(),p.produce(c,g),void(f=!0)}else if(o instanceof r.BeginWhileRule){const a=o;n.DebugFlags.InDebugMode&&console.log(" pushing "+a.debugName),h(e,t,s,c,p,a.beginCaptures,u),p.produce(c,u[0].end),y=u[0].end;const r=a.getContentName(t.content,u),l=b.pushAttributed(r,e);if(c=c.withContentNameScopesList(l),a.whileHasBackReferences&&(c=c.withEndRule(a.getWhileWithResolvedBackReferences(t.content,u))),!m&&i.hasSameRuleAs(c))return n.DebugFlags.InDebugMode&&console.error("[3] - Grammar is in an endless loop - Grammar pushed the same rule without advancing"),c=c.pop(),p.produce(c,g),void(f=!0)}else{const a=o;if(n.DebugFlags.InDebugMode&&console.log(" matched "+a.debugName+" - "+a.debugMatchRegExp),h(e,t,s,c,p,a.captures,u),p.produce(c,u[0].end),c=c.pop(),!m)return n.DebugFlags.InDebugMode&&console.error("[4] - Grammar is in an endless loop - Grammar is not advancing, nor is it pushing/popping"),c=c.safePop(),p.produce(c,g),void(f=!0)}}u[0].end>a&&(a=u[0].end,s=!1)}}function l(e,t,s,a,r){return n.UseOnigurumaFindOptions?{ruleScanner:e.compile(t,s),findOptions:p(a,r)}:{ruleScanner:e.compileAG(t,s,a,r),findOptions:0}}function u(e,t,s,a,r){return n.UseOnigurumaFindOptions?{ruleScanner:e.compileWhile(t,s),findOptions:p(a,r)}:{ruleScanner:e.compileWhileAG(t,s,a,r),findOptions:0}}function p(e,t){let s=0;return e||(s|=1),t||(s|=4),s}function h(e,t,s,n,r,o,i){if(0===o.length)return;const l=t.content,u=Math.min(o.length,i.length),p=[],h=i[0].end;for(let t=0;t<u;t++){const u=o[t];if(null===u)continue;const m=i[t];if(0===m.length)continue;if(m.start>h)break;for(;p.length>0&&p[p.length-1].endPos<=m.start;)r.produceFromScopes(p[p.length-1].scopes,p[p.length-1].endPos),p.pop();if(p.length>0?r.produceFromScopes(p[p.length-1].scopes,m.start):r.produce(n,m.start),u.retokenizeCapturedWithRuleId){const t=u.getName(l,i),o=n.contentNameScopesList.pushAttributed(t,e),p=u.getContentName(l,i),h=o.pushAttributed(p,e),d=n.push(u.retokenizeCapturedWithRuleId,m.start,-1,!1,null,o,h),g=e.createOnigString(l.substring(0,m.end));c(e,g,s&&0===m.start,m.start,d,r,!1,0),a.disposeOnigString(g);continue}const g=u.getName(l,i);if(null!==g){const t=(p.length>0?p[p.length-1].scopes:n.contentNameScopesList).pushAttributed(g,e);p.push(new d(t,m.end))}}for(;p.length>0;)r.produceFromScopes(p[p.length-1].scopes,p[p.length-1].endPos),p.pop()}t._tokenizeString=c;class d{constructor(e,t){this.scopes=e,this.endPos=t}}t.LocalStackElement=d},974:(e,t)=>{function s(e,t){throw new Error("Near offset "+e.pos+": "+t+" ~~~"+e.source.substr(e.pos,50)+"~~~")}Object.defineProperty(t,"__esModule",{value:!0}),t.parseJSON=void 0,t.parseJSON=function(e,t,o){let i=new n(e),c=new a,l=0,u=null,p=[],h=[];function d(){p.push(l),h.push(u)}function m(){l=p.pop(),u=h.pop()}function g(e){s(i,e)}for(;r(i,c);){if(0===l){if(null!==u&&g("too many constructs in root"),3===c.type){u={},o&&(u.$vscodeTextmateLocation=c.toLocation(t)),d(),l=1;continue}if(2===c.type){u=[],d(),l=4;continue}g("unexpected token in root")}if(2===l){if(5===c.type){m();continue}if(7===c.type){l=3;continue}g("expected , or }")}if(1===l||3===l){if(1===l&&5===c.type){m();continue}if(1===c.type){let e=c.value;if(r(i,c)&&6===c.type||g("expected colon"),r(i,c)||g("expected value"),l=2,1===c.type){u[e]=c.value;continue}if(8===c.type){u[e]=null;continue}if(9===c.type){u[e]=!0;continue}if(10===c.type){u[e]=!1;continue}if(11===c.type){u[e]=parseFloat(c.value);continue}if(2===c.type){let t=[];u[e]=t,d(),l=4,u=t;continue}if(3===c.type){let s={};o&&(s.$vscodeTextmateLocation=c.toLocation(t)),u[e]=s,d(),l=1,u=s;continue}}g("unexpected token in dict")}if(5===l){if(4===c.type){m();continue}if(7===c.type){l=6;continue}g("expected , or ]")}if(4===l||6===l){if(4===l&&4===c.type){m();continue}if(l=5,1===c.type){u.push(c.value);continue}if(8===c.type){u.push(null);continue}if(9===c.type){u.push(!0);continue}if(10===c.type){u.push(!1);continue}if(11===c.type){u.push(parseFloat(c.value));continue}if(2===c.type){let e=[];u.push(e),d(),l=4,u=e;continue}if(3===c.type){let e={};o&&(e.$vscodeTextmateLocation=c.toLocation(t)),u.push(e),d(),l=1,u=e;continue}g("unexpected token in array")}g("unknown state")}return 0!==h.length&&g("unclosed constructs"),u};class n{constructor(e){this.source=e,this.pos=0,this.len=e.length,this.line=1,this.char=0}}class a{constructor(){this.value=null,this.type=0,this.offset=-1,this.len=-1,this.line=-1,this.char=-1}toLocation(e){return{filename:e,line:this.line,char:this.char}}}function r(e,t){t.value=null,t.type=0,t.offset=-1,t.len=-1,t.line=-1,t.char=-1;let n,a=e.source,r=e.pos,o=e.len,i=e.line,c=e.char;for(;;){if(r>=o)return!1;if(n=a.charCodeAt(r),32!==n&&9!==n&&13!==n){if(10!==n)break;r++,i++,c=0}else r++,c++}if(t.offset=r,t.line=i,t.char=c,34===n){for(t.type=1,r++,c++;;){if(r>=o)return!1;if(n=a.charCodeAt(r),r++,c++,92!==n){if(34===n)break}else r++,c++}t.value=a.substring(t.offset+1,r-1).replace(/\\u([0-9A-Fa-f]{4})/g,((e,t)=>String.fromCodePoint(parseInt(t,16)))).replace(/\\(.)/g,((t,n)=>{switch(n){case'"':return'"';case"\\":return"\\";case"/":return"/";case"b":return"\b";case"f":return"\f";case"n":return"\n";case"r":return"\r";case"t":return"\t";default:s(e,"invalid escape sequence")}throw new Error("unreachable")}))}else if(91===n)t.type=2,r++,c++;else if(123===n)t.type=3,r++,c++;else if(93===n)t.type=4,r++,c++;else if(125===n)t.type=5,r++,c++;else if(58===n)t.type=6,r++,c++;else if(44===n)t.type=7,r++,c++;else if(110===n){if(t.type=8,r++,c++,n=a.charCodeAt(r),117!==n)return!1;if(r++,c++,n=a.charCodeAt(r),108!==n)return!1;if(r++,c++,n=a.charCodeAt(r),108!==n)return!1;r++,c++}else if(116===n){if(t.type=9,r++,c++,n=a.charCodeAt(r),114!==n)return!1;if(r++,c++,n=a.charCodeAt(r),117!==n)return!1;if(r++,c++,n=a.charCodeAt(r),101!==n)return!1;r++,c++}else if(102===n){if(t.type=10,r++,c++,n=a.charCodeAt(r),97!==n)return!1;if(r++,c++,n=a.charCodeAt(r),108!==n)return!1;if(r++,c++,n=a.charCodeAt(r),115!==n)return!1;if(r++,c++,n=a.charCodeAt(r),101!==n)return!1;r++,c++}else for(t.type=11;;){if(r>=o)return!1;if(n=a.charCodeAt(r),!(46===n||n>=48&&n<=57||101===n||69===n||45===n||43===n))break;r++,c++}return t.len=r-t.offset,null===t.value&&(t.value=a.substr(t.offset,t.len)),e.pos=r,e.line=i,e.char=c,!0}},787:function(e,t,s){var n=this&&this.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),a=this&&this.__exportStar||function(e,t){for(var s in e)"default"===s||Object.prototype.hasOwnProperty.call(t,s)||n(t,e,s)};Object.defineProperty(t,"__esModule",{value:!0}),t.parseRawGrammar=t.INITIAL=t.Registry=void 0;const r=s(391),o=s(50),i=s(652),c=s(583),l=s(965);a(s(44),t),t.Registry=class{constructor(e){this._options=e,this._syncRegistry=new i.SyncRegistry(c.Theme.createFromRawTheme(e.theme,e.colorMap),e.onigLib),this._ensureGrammarCache=new Map}dispose(){this._syncRegistry.dispose()}setTheme(e,t){this._syncRegistry.setTheme(c.Theme.createFromRawTheme(e,t))}getColorMap(){return this._syncRegistry.getColorMap()}loadGrammarWithEmbeddedLanguages(e,t,s){return this.loadGrammarWithConfiguration(e,t,{embeddedLanguages:s})}loadGrammarWithConfiguration(e,t,s){return this._loadGrammar(e,t,s.embeddedLanguages,s.tokenTypes,new r.BalancedBracketSelectors(s.balancedBracketSelectors||[],s.unbalancedBracketSelectors||[]))}loadGrammar(e){return this._loadGrammar(e,0,null,null,null)}async _loadGrammar(e,t,s,n,a){const r=new l.ScopeDependencyProcessor(this._syncRegistry,e);for(;r.Q.length>0;)await Promise.all(r.Q.map((e=>this._loadSingleGrammar(e.scopeName)))),r.processQueue();return this._grammarForScopeName(e,t,s,n,a)}async _loadSingleGrammar(e){return this._ensureGrammarCache.has(e)||this._ensureGrammarCache.set(e,this._doLoadSingleGrammar(e)),this._ensureGrammarCache.get(e)}async _doLoadSingleGrammar(e){const t=await this._options.loadGrammar(e);if(t){const s="function"==typeof this._options.getInjections?this._options.getInjections(e):void 0;this._syncRegistry.addGrammar(t,s)}}async addGrammar(e,t=[],s=0,n=null){return this._syncRegistry.addGrammar(e,t),await this._grammarForScopeName(e.scopeName,s,n)}_grammarForScopeName(e,t=0,s=null,n=null,a=null){return this._syncRegistry.grammarForScopeName(e,t,s,n,a)}},t.INITIAL=r.StateStack.NULL,t.parseRawGrammar=o.parseRawGrammar},736:(e,t)=>{function s(e){return!!e&&!!e.match(/[\w\.:]+/)}Object.defineProperty(t,"__esModule",{value:!0}),t.createMatchers=void 0,t.createMatchers=function(e,t){const n=[],a=function(e){let t=/([LR]:|[\w\.:][\w\.:\-]*|[\,\|\-\(\)])/g,s=t.exec(e);return{next:()=>{if(!s)return null;const n=s[0];return s=t.exec(e),n}}}(e);let r=a.next();for(;null!==r;){let e=0;if(2===r.length&&":"===r.charAt(1)){switch(r.charAt(0)){case"R":e=1;break;case"L":e=-1;break;default:console.log(`Unknown priority ${r} in scope selector`)}r=a.next()}let t=i();if(n.push({matcher:t,priority:e}),","!==r)break;r=a.next()}return n;function o(){if("-"===r){r=a.next();const e=o();return t=>!!e&&!e(t)}if("("===r){r=a.next();const e=function(){const e=[];let t=i();for(;t&&(e.push(t),"|"===r||","===r);){do{r=a.next()}while("|"===r||","===r);t=i()}return t=>e.some((e=>e(t)))}();return")"===r&&(r=a.next()),e}if(s(r)){const e=[];do{e.push(r),r=a.next()}while(s(r));return s=>t(e,s)}return null}function i(){const e=[];let t=o();for(;t;)e.push(t),t=o();return t=>e.every((e=>e(t)))}}},44:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.disposeOnigString=void 0,t.disposeOnigString=function(e){"function"==typeof e.dispose&&e.dispose()}},50:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseRawGrammar=void 0;const n=s(69),a=s(350),r=s(974);t.parseRawGrammar=function(e,t=null){return null!==t&&/\.json$/.test(t)?(s=e,o=t,a.DebugFlags.InDebugMode?r.parseJSON(s,o,!0):JSON.parse(s)):function(e,t){return a.DebugFlags.InDebugMode?n.parseWithLocation(e,t,"$vscodeTextmateLocation"):n.parsePLIST(e)}(e,t);var s,o}},69:(e,t)=>{function s(e,t,s){const n=e.length;let a=0,r=1,o=0;function i(t){if(null===s)a+=t;else for(;t>0;)10===e.charCodeAt(a)?(a++,r++,o=0):(a++,o++),t--}function c(e){null===s?a=e:i(e-a)}function l(){for(;a<n;){let t=e.charCodeAt(a);if(32!==t&&9!==t&&13!==t&&10!==t)break;i(1)}}function u(t){return e.substr(a,t.length)===t&&(i(t.length),!0)}function p(t){let s=e.indexOf(t,a);c(-1!==s?s+t.length:n)}function h(t){let s=e.indexOf(t,a);if(-1!==s){let n=e.substring(a,s);return c(s+t.length),n}{let t=e.substr(a);return c(n),t}}n>0&&65279===e.charCodeAt(0)&&(a=1);let d=0,m=null,g=[],f=[],y=null;function b(e,t){g.push(d),f.push(m),d=e,m=t}function _(){if(0===g.length)return N("illegal state stack");d=g.pop(),m=f.pop()}function N(t){throw new Error("Near offset "+a+": "+t+" ~~~"+e.substr(a,50)+"~~~")}const k=function(){if(null===y)return N("missing <key>");let e={};null!==s&&(e[s]={filename:t,line:r,char:o}),m[y]=e,y=null,b(1,e)},L=function(){if(null===y)return N("missing <key>");let e=[];m[y]=e,y=null,b(2,e)},S=function(){let e={};null!==s&&(e[s]={filename:t,line:r,char:o}),m.push(e),b(1,e)},v=function(){let e=[];m.push(e),b(2,e)};function C(){if(1!==d)return N("unexpected </dict>");_()}function j(){return 1===d||2!==d?N("unexpected </array>"):void _()}function w(e){if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function P(e){if(isNaN(e))return N("cannot parse float");if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function A(e){if(isNaN(e))return N("cannot parse integer");if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function x(e){if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function T(e){if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function R(e){if(1===d){if(null===y)return N("missing <key>");m[y]=e,y=null}else 2===d?m.push(e):m=e}function I(){let e=h(">"),t=!1;return 47===e.charCodeAt(e.length-1)&&(t=!0,e=e.substring(0,e.length-1)),{name:e.trim(),isClosed:t}}function E(e){if(e.isClosed)return"";let t=h("</");return p(">"),t.replace(/&#([0-9]+);/g,(function(e,t){return String.fromCodePoint(parseInt(t,10))})).replace(/&#x([0-9a-f]+);/g,(function(e,t){return String.fromCodePoint(parseInt(t,16))})).replace(/&amp;|&lt;|&gt;|&quot;|&apos;/g,(function(e){switch(e){case"&amp;":return"&";case"&lt;":return"<";case"&gt;":return">";case"&quot;":return'"';case"&apos;":return"'"}return e}))}for(;a<n&&(l(),!(a>=n));){const c=e.charCodeAt(a);if(i(1),60!==c)return N("expected <");if(a>=n)return N("unexpected end of input");const h=e.charCodeAt(a);if(63===h){i(1),p("?>");continue}if(33===h){if(i(1),u("--")){p("--\x3e");continue}p(">");continue}if(47===h){if(i(1),l(),u("plist")){p(">");continue}if(u("dict")){p(">"),C();continue}if(u("array")){p(">"),j();continue}return N("unexpected closed tag")}let g=I();switch(g.name){case"dict":1===d?k():2===d?S():(m={},null!==s&&(m[s]={filename:t,line:r,char:o}),b(1,m)),g.isClosed&&C();continue;case"array":1===d?L():2===d?v():(m=[],b(2,m)),g.isClosed&&j();continue;case"key":O=E(g),1!==d?N("unexpected <key>"):null!==y?N("too many <key>"):y=O;continue;case"string":w(E(g));continue;case"real":P(parseFloat(E(g)));continue;case"integer":A(parseInt(E(g),10));continue;case"date":x(new Date(E(g)));continue;case"data":T(E(g));continue;case"true":E(g),R(!0);continue;case"false":E(g),R(!1);continue}if(!/^plist/.test(g.name))return N("unexpected opened tag "+g.name)}var O;return m}Object.defineProperty(t,"__esModule",{value:!0}),t.parsePLIST=t.parseWithLocation=void 0,t.parseWithLocation=function(e,t,n){return s(e,t,n)},t.parsePLIST=function(e){return s(e,null,null)}},652:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SyncRegistry=void 0;const n=s(391);t.SyncRegistry=class{constructor(e,t){this._onigLibPromise=t,this._grammars=new Map,this._rawGrammars=new Map,this._injectionGrammars=new Map,this._theme=e}dispose(){for(const e of this._grammars.values())e.dispose()}setTheme(e){this._theme=e}getColorMap(){return this._theme.getColorMap()}addGrammar(e,t){this._rawGrammars.set(e.scopeName,e),t&&this._injectionGrammars.set(e.scopeName,t)}lookup(e){return this._rawGrammars.get(e)}injections(e){return this._injectionGrammars.get(e)}getDefaults(){return this._theme.getDefaults()}themeMatch(e){return this._theme.match(e)}async grammarForScopeName(e,t,s,a,r){if(!this._grammars.has(e)){let o=this._rawGrammars.get(e);if(!o)return null;this._grammars.set(e,n.createGrammar(e,o,t,s,a,r,this,await this._onigLibPromise))}return this._grammars.get(e)}}},792:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CompiledRule=t.RegExpSourceList=t.RegExpSource=t.RuleFactory=t.BeginWhileRule=t.BeginEndRule=t.IncludeOnlyRule=t.MatchRule=t.CaptureRule=t.Rule=t.ruleIdToNumber=t.ruleIdFromNumber=t.whileRuleId=t.endRuleId=void 0;const n=s(878),a=s(965),r=/\\(\d+)/,o=/\\(\d+)/g;t.endRuleId=-1,t.whileRuleId=-2,t.ruleIdFromNumber=function(e){return e},t.ruleIdToNumber=function(e){return e};class i{constructor(e,t,s,a){this.$location=e,this.id=t,this._name=s||null,this._nameIsCapturing=n.RegexSource.hasCaptures(this._name),this._contentName=a||null,this._contentNameIsCapturing=n.RegexSource.hasCaptures(this._contentName)}get debugName(){const e=this.$location?`${n.basename(this.$location.filename)}:${this.$location.line}`:"unknown";return`${this.constructor.name}#${this.id} @ ${e}`}getName(e,t){return this._nameIsCapturing&&null!==this._name&&null!==e&&null!==t?n.RegexSource.replaceCaptures(this._name,e,t):this._name}getContentName(e,t){return this._contentNameIsCapturing&&null!==this._contentName?n.RegexSource.replaceCaptures(this._contentName,e,t):this._contentName}}t.Rule=i;class c extends i{constructor(e,t,s,n,a){super(e,t,s,n),this.retokenizeCapturedWithRuleId=a}dispose(){}collectPatterns(e,t){throw new Error("Not supported!")}compile(e,t){throw new Error("Not supported!")}compileAG(e,t,s,n){throw new Error("Not supported!")}}t.CaptureRule=c;class l extends i{constructor(e,t,s,n,a){super(e,t,s,null),this._match=new m(n,this.id),this.captures=a,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}get debugMatchRegExp(){return`${this._match.source}`}collectPatterns(e,t){t.push(this._match)}compile(e,t){return this._getCachedCompiledPatterns(e).compile(e)}compileAG(e,t,s,n){return this._getCachedCompiledPatterns(e).compileAG(e,s,n)}_getCachedCompiledPatterns(e){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new g,this.collectPatterns(e,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}}t.MatchRule=l;class u extends i{constructor(e,t,s,n,a){super(e,t,s,n),this.patterns=a.patterns,this.hasMissingPatterns=a.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}collectPatterns(e,t){for(const s of this.patterns)e.getRule(s).collectPatterns(e,t)}compile(e,t){return this._getCachedCompiledPatterns(e).compile(e)}compileAG(e,t,s,n){return this._getCachedCompiledPatterns(e).compileAG(e,s,n)}_getCachedCompiledPatterns(e){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new g,this.collectPatterns(e,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}}t.IncludeOnlyRule=u;class p extends i{constructor(e,t,s,n,a,r,o,i,c,l){super(e,t,s,n),this._begin=new m(a,this.id),this.beginCaptures=r,this._end=new m(o||"￿",-1),this.endHasBackReferences=this._end.hasBackReferences,this.endCaptures=i,this.applyEndPatternLast=c||!1,this.patterns=l.patterns,this.hasMissingPatterns=l.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugEndRegExp(){return`${this._end.source}`}getEndWithResolvedBackReferences(e,t){return this._end.resolveBackReferences(e,t)}collectPatterns(e,t){t.push(this._begin)}compile(e,t){return this._getCachedCompiledPatterns(e,t).compile(e)}compileAG(e,t,s,n){return this._getCachedCompiledPatterns(e,t).compileAG(e,s,n)}_getCachedCompiledPatterns(e,t){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new g;for(const t of this.patterns)e.getRule(t).collectPatterns(e,this._cachedCompiledPatterns);this.applyEndPatternLast?this._cachedCompiledPatterns.push(this._end.hasBackReferences?this._end.clone():this._end):this._cachedCompiledPatterns.unshift(this._end.hasBackReferences?this._end.clone():this._end)}return this._end.hasBackReferences&&(this.applyEndPatternLast?this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length()-1,t):this._cachedCompiledPatterns.setSource(0,t)),this._cachedCompiledPatterns}}t.BeginEndRule=p;class h extends i{constructor(e,s,n,a,r,o,i,c,l){super(e,s,n,a),this._begin=new m(r,this.id),this.beginCaptures=o,this.whileCaptures=c,this._while=new m(i,t.whileRuleId),this.whileHasBackReferences=this._while.hasBackReferences,this.patterns=l.patterns,this.hasMissingPatterns=l.hasMissingPatterns,this._cachedCompiledPatterns=null,this._cachedCompiledWhilePatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null),this._cachedCompiledWhilePatterns&&(this._cachedCompiledWhilePatterns.dispose(),this._cachedCompiledWhilePatterns=null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugWhileRegExp(){return`${this._while.source}`}getWhileWithResolvedBackReferences(e,t){return this._while.resolveBackReferences(e,t)}collectPatterns(e,t){t.push(this._begin)}compile(e,t){return this._getCachedCompiledPatterns(e).compile(e)}compileAG(e,t,s,n){return this._getCachedCompiledPatterns(e).compileAG(e,s,n)}_getCachedCompiledPatterns(e){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new g;for(const t of this.patterns)e.getRule(t).collectPatterns(e,this._cachedCompiledPatterns)}return this._cachedCompiledPatterns}compileWhile(e,t){return this._getCachedCompiledWhilePatterns(e,t).compile(e)}compileWhileAG(e,t,s,n){return this._getCachedCompiledWhilePatterns(e,t).compileAG(e,s,n)}_getCachedCompiledWhilePatterns(e,t){return this._cachedCompiledWhilePatterns||(this._cachedCompiledWhilePatterns=new g,this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences?this._while.clone():this._while)),this._while.hasBackReferences&&this._cachedCompiledWhilePatterns.setSource(0,t||"￿"),this._cachedCompiledWhilePatterns}}t.BeginWhileRule=h;class d{static createCaptureRule(e,t,s,n,a){return e.registerRule((e=>new c(t,e,s,n,a)))}static getCompiledRuleId(e,t,s){return e.id||t.registerRule((a=>{if(e.id=a,e.match)return new l(e.$vscodeTextmateLocation,e.id,e.name,e.match,d._compileCaptures(e.captures,t,s));if(void 0===e.begin){e.repository&&(s=n.mergeObjects({},s,e.repository));let a=e.patterns;return void 0===a&&e.include&&(a=[{include:e.include}]),new u(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,d._compilePatterns(a,t,s))}return e.while?new h(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,e.begin,d._compileCaptures(e.beginCaptures||e.captures,t,s),e.while,d._compileCaptures(e.whileCaptures||e.captures,t,s),d._compilePatterns(e.patterns,t,s)):new p(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,e.begin,d._compileCaptures(e.beginCaptures||e.captures,t,s),e.end,d._compileCaptures(e.endCaptures||e.captures,t,s),e.applyEndPatternLast,d._compilePatterns(e.patterns,t,s))})),e.id}static _compileCaptures(e,t,s){let n=[];if(e){let a=0;for(const t in e){if("$vscodeTextmateLocation"===t)continue;const e=parseInt(t,10);e>a&&(a=e)}for(let e=0;e<=a;e++)n[e]=null;for(const a in e){if("$vscodeTextmateLocation"===a)continue;const r=parseInt(a,10);let o=0;e[a].patterns&&(o=d.getCompiledRuleId(e[a],t,s)),n[r]=d.createCaptureRule(t,e[a].$vscodeTextmateLocation,e[a].name,e[a].contentName,o)}}return n}static _compilePatterns(e,t,s){let n=[];if(e)for(let r=0,o=e.length;r<o;r++){const o=e[r];let i=-1;if(o.include){const e=a.parseInclude(o.include);switch(e.kind){case 0:case 1:i=d.getCompiledRuleId(s[o.include],t,s);break;case 2:let n=s[e.ruleName];n&&(i=d.getCompiledRuleId(n,t,s));break;case 3:case 4:const a=e.scopeName,r=4===e.kind?e.ruleName:null,c=t.getExternalGrammar(a,s);if(c)if(r){let e=c.repository[r];e&&(i=d.getCompiledRuleId(e,t,c.repository))}else i=d.getCompiledRuleId(c.repository.$self,t,c.repository)}}else i=d.getCompiledRuleId(o,t,s);if(-1!==i){const e=t.getRule(i);let s=!1;if((e instanceof u||e instanceof p||e instanceof h)&&e.hasMissingPatterns&&0===e.patterns.length&&(s=!0),s)continue;n.push(i)}}return{patterns:n,hasMissingPatterns:(e?e.length:0)!==n.length}}}t.RuleFactory=d;class m{constructor(e,t){if(e){const t=e.length;let s=0,n=[],a=!1;for(let r=0;r<t;r++)if("\\"===e.charAt(r)&&r+1<t){const t=e.charAt(r+1);"z"===t?(n.push(e.substring(s,r)),n.push("$(?!\\n)(?<!\\n)"),s=r+2):"A"!==t&&"G"!==t||(a=!0),r++}this.hasAnchor=a,0===s?this.source=e:(n.push(e.substring(s,t)),this.source=n.join(""))}else this.hasAnchor=!1,this.source=e;this.hasAnchor?this._anchorCache=this._buildAnchorCache():this._anchorCache=null,this.ruleId=t,this.hasBackReferences=r.test(this.source)}clone(){return new m(this.source,this.ruleId)}setSource(e){this.source!==e&&(this.source=e,this.hasAnchor&&(this._anchorCache=this._buildAnchorCache()))}resolveBackReferences(e,t){let s=t.map((t=>e.substring(t.start,t.end)));return o.lastIndex=0,this.source.replace(o,((e,t)=>n.escapeRegExpCharacters(s[parseInt(t,10)]||"")))}_buildAnchorCache(){let e,t,s,n,a=[],r=[],o=[],i=[];for(e=0,t=this.source.length;e<t;e++)s=this.source.charAt(e),a[e]=s,r[e]=s,o[e]=s,i[e]=s,"\\"===s&&e+1<t&&(n=this.source.charAt(e+1),"A"===n?(a[e+1]="￿",r[e+1]="￿",o[e+1]="A",i[e+1]="A"):"G"===n?(a[e+1]="￿",r[e+1]="G",o[e+1]="￿",i[e+1]="G"):(a[e+1]=n,r[e+1]=n,o[e+1]=n,i[e+1]=n),e++);return{A0_G0:a.join(""),A0_G1:r.join(""),A1_G0:o.join(""),A1_G1:i.join("")}}resolveAnchors(e,t){return this.hasAnchor&&this._anchorCache?e?t?this._anchorCache.A1_G1:this._anchorCache.A1_G0:t?this._anchorCache.A0_G1:this._anchorCache.A0_G0:this.source}}t.RegExpSource=m;class g{constructor(){this._items=[],this._hasAnchors=!1,this._cached=null,this._anchorCache={A0_G0:null,A0_G1:null,A1_G0:null,A1_G1:null}}dispose(){this._disposeCaches()}_disposeCaches(){this._cached&&(this._cached.dispose(),this._cached=null),this._anchorCache.A0_G0&&(this._anchorCache.A0_G0.dispose(),this._anchorCache.A0_G0=null),this._anchorCache.A0_G1&&(this._anchorCache.A0_G1.dispose(),this._anchorCache.A0_G1=null),this._anchorCache.A1_G0&&(this._anchorCache.A1_G0.dispose(),this._anchorCache.A1_G0=null),this._anchorCache.A1_G1&&(this._anchorCache.A1_G1.dispose(),this._anchorCache.A1_G1=null)}push(e){this._items.push(e),this._hasAnchors=this._hasAnchors||e.hasAnchor}unshift(e){this._items.unshift(e),this._hasAnchors=this._hasAnchors||e.hasAnchor}length(){return this._items.length}setSource(e,t){this._items[e].source!==t&&(this._disposeCaches(),this._items[e].setSource(t))}compile(e){if(!this._cached){let t=this._items.map((e=>e.source));this._cached=new f(e,t,this._items.map((e=>e.ruleId)))}return this._cached}compileAG(e,t,s){return this._hasAnchors?t?s?(this._anchorCache.A1_G1||(this._anchorCache.A1_G1=this._resolveAnchors(e,t,s)),this._anchorCache.A1_G1):(this._anchorCache.A1_G0||(this._anchorCache.A1_G0=this._resolveAnchors(e,t,s)),this._anchorCache.A1_G0):s?(this._anchorCache.A0_G1||(this._anchorCache.A0_G1=this._resolveAnchors(e,t,s)),this._anchorCache.A0_G1):(this._anchorCache.A0_G0||(this._anchorCache.A0_G0=this._resolveAnchors(e,t,s)),this._anchorCache.A0_G0):this.compile(e)}_resolveAnchors(e,t,s){let n=this._items.map((e=>e.resolveAnchors(t,s)));return new f(e,n,this._items.map((e=>e.ruleId)))}}t.RegExpSourceList=g;class f{constructor(e,t,s){this.regExps=t,this.rules=s,this.scanner=e.createOnigScanner(t)}dispose(){"function"==typeof this.scanner.dispose&&this.scanner.dispose()}toString(){const e=[];for(let t=0,s=this.rules.length;t<s;t++)e.push(" - "+this.rules[t]+": "+this.regExps[t]);return e.join("\n")}findNextMatchSync(e,t,s){const n=this.scanner.findNextMatchSync(e,t,s);return n?{ruleId:this.rules[n.index],captureIndices:n.captureIndices}:null}}t.CompiledRule=f},583:(e,t,s)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ThemeTrieElement=t.ThemeTrieElementRule=t.ColorMap=t.fontStyleToString=t.ParsedThemeRule=t.parseTheme=t.StyleAttributes=t.ScopeStack=t.Theme=void 0;const n=s(878);class a{constructor(e,t,s){this._colorMap=e,this._defaults=t,this._root=s,this._cachedMatchRoot=new n.CachedFn((e=>this._root.match(e)))}static createFromRawTheme(e,t){return this.createFromParsedTheme(c(e),t)}static createFromParsedTheme(e,t){return function(e,t){e.sort(((e,t)=>{let s=n.strcmp(e.scope,t.scope);return 0!==s?s:(s=n.strArrCmp(e.parentScopes,t.parentScopes),0!==s?s:e.index-t.index)}));let s=0,r="#000000",o="#ffffff";for(;e.length>=1&&""===e[0].scope;){let t=e.shift();-1!==t.fontStyle&&(s=t.fontStyle),null!==t.foreground&&(r=t.foreground),null!==t.background&&(o=t.background)}let c=new u(t),l=new i(s,c.getId(r),c.getId(o)),d=new h(new p(0,null,-1,0,0),[]);for(let t=0,s=e.length;t<s;t++){let s=e[t];d.insert(0,s.scope,s.parentScopes,s.fontStyle,c.getId(s.foreground),c.getId(s.background))}return new a(c,l,d)}(e,t)}getColorMap(){return this._colorMap.getColorMap()}getDefaults(){return this._defaults}match(e){if(null===e)return this._defaults;const t=e.scopeName,s=this._cachedMatchRoot.get(t).find((t=>function(e,t){if(null===t)return!0;let s=0,n=t[s];for(;e;){if(o(e.scopeName,n)){if(s++,s===t.length)return!0;n=t[s]}e=e.parent}return!1}(e.parent,t.parentScopes)));return s?new i(s.fontStyle,s.foreground,s.background):null}}t.Theme=a;class r{constructor(e,t){this.parent=e,this.scopeName=t}static from(...e){let t=null;for(let s=0;s<e.length;s++)t=new r(t,e[s]);return t}push(e){return new r(this,e)}getSegments(){let e=this;const t=[];for(;e;)t.push(e.scopeName),e=e.parent;return t.reverse(),t}toString(){return this.getSegments().join(" ")}}function o(e,t){return t===e||e.startsWith(t)&&"."===e[t.length]}t.ScopeStack=r;class i{constructor(e,t,s){this.fontStyle=e,this.foregroundId=t,this.backgroundId=s}}function c(e){if(!e)return[];if(!e.settings||!Array.isArray(e.settings))return[];let t=e.settings,s=[],a=0;for(let e=0,r=t.length;e<r;e++){let r,o=t[e];if(!o.settings)continue;if("string"==typeof o.scope){let e=o.scope;e=e.replace(/^[,]+/,""),e=e.replace(/[,]+$/,""),r=e.split(",")}else r=Array.isArray(o.scope)?o.scope:[""];let i=-1;if("string"==typeof o.settings.fontStyle){i=0;let e=o.settings.fontStyle.split(" ");for(let t=0,s=e.length;t<s;t++)switch(e[t]){case"italic":i|=1;break;case"bold":i|=2;break;case"underline":i|=4;break;case"strikethrough":i|=8}}let c=null;"string"==typeof o.settings.foreground&&n.isValidHexColor(o.settings.foreground)&&(c=o.settings.foreground);let u=null;"string"==typeof o.settings.background&&n.isValidHexColor(o.settings.background)&&(u=o.settings.background);for(let t=0,n=r.length;t<n;t++){let n=r[t].trim().split(" "),o=n[n.length-1],p=null;n.length>1&&(p=n.slice(0,n.length-1),p.reverse()),s[a++]=new l(o,p,e,i,c,u)}}return s}t.StyleAttributes=i,t.parseTheme=c;class l{constructor(e,t,s,n,a,r){this.scope=e,this.parentScopes=t,this.index=s,this.fontStyle=n,this.foreground=a,this.background=r}}t.ParsedThemeRule=l,t.fontStyleToString=function(e){if(-1===e)return"not set";let t="";return 1&e&&(t+="italic "),2&e&&(t+="bold "),4&e&&(t+="underline "),8&e&&(t+="strikethrough "),""===t&&(t="none"),t.trim()};class u{constructor(e){if(this._lastColorId=0,this._id2color=[],this._color2id=Object.create(null),Array.isArray(e)){this._isFrozen=!0;for(let t=0,s=e.length;t<s;t++)this._color2id[e[t]]=t,this._id2color[t]=e[t]}else this._isFrozen=!1}getId(e){if(null===e)return 0;e=e.toUpperCase();let t=this._color2id[e];if(t)return t;if(this._isFrozen)throw new Error(`Missing color in color map - ${e}`);return t=++this._lastColorId,this._color2id[e]=t,this._id2color[t]=e,t}getColorMap(){return this._id2color.slice(0)}}t.ColorMap=u;class p{constructor(e,t,s,n,a){this.scopeDepth=e,this.parentScopes=t,this.fontStyle=s,this.foreground=n,this.background=a}clone(){return new p(this.scopeDepth,this.parentScopes,this.fontStyle,this.foreground,this.background)}static cloneArr(e){let t=[];for(let s=0,n=e.length;s<n;s++)t[s]=e[s].clone();return t}acceptOverwrite(e,t,s,n){this.scopeDepth>e?console.log("how did this happen?"):this.scopeDepth=e,-1!==t&&(this.fontStyle=t),0!==s&&(this.foreground=s),0!==n&&(this.background=n)}}t.ThemeTrieElementRule=p;class h{constructor(e,t=[],s={}){this._mainRule=e,this._children=s,this._rulesWithParentScopes=t}static _sortBySpecificity(e){return 1===e.length||e.sort(this._cmpBySpecificity),e}static _cmpBySpecificity(e,t){if(e.scopeDepth===t.scopeDepth){const s=e.parentScopes,n=t.parentScopes;let a=null===s?0:s.length,r=null===n?0:n.length;if(a===r)for(let e=0;e<a;e++){const t=s[e].length,a=n[e].length;if(t!==a)return a-t}return r-a}return t.scopeDepth-e.scopeDepth}match(e){if(""===e)return h._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes));let t,s,n=e.indexOf(".");return-1===n?(t=e,s=""):(t=e.substring(0,n),s=e.substring(n+1)),this._children.hasOwnProperty(t)?this._children[t].match(s):h._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes))}insert(e,t,s,n,a,r){if(""===t)return void this._doInsertHere(e,s,n,a,r);let o,i,c,l=t.indexOf(".");-1===l?(o=t,i=""):(o=t.substring(0,l),i=t.substring(l+1)),this._children.hasOwnProperty(o)?c=this._children[o]:(c=new h(this._mainRule.clone(),p.cloneArr(this._rulesWithParentScopes)),this._children[o]=c),c.insert(e+1,i,s,n,a,r)}_doInsertHere(e,t,s,a,r){if(null!==t){for(let o=0,i=this._rulesWithParentScopes.length;o<i;o++){let i=this._rulesWithParentScopes[o];if(0===n.strArrCmp(i.parentScopes,t))return void i.acceptOverwrite(e,s,a,r)}-1===s&&(s=this._mainRule.fontStyle),0===a&&(a=this._mainRule.foreground),0===r&&(r=this._mainRule.background),this._rulesWithParentScopes.push(new p(e,t,s,a,r))}else this._mainRule.acceptOverwrite(e,s,a,r)}}t.ThemeTrieElement=h},878:(e,t)=>{function s(e){return Array.isArray(e)?function(e){let t=[];for(let n=0,a=e.length;n<a;n++)t[n]=s(e[n]);return t}(e):"object"==typeof e?function(e){let t={};for(let n in e)t[n]=s(e[n]);return t}(e):e}Object.defineProperty(t,"__esModule",{value:!0}),t.performanceNow=t.CachedFn=t.escapeRegExpCharacters=t.isValidHexColor=t.strArrCmp=t.strcmp=t.RegexSource=t.basename=t.mergeObjects=t.clone=void 0,t.clone=function(e){return s(e)},t.mergeObjects=function(e,...t){return t.forEach((t=>{for(let s in t)e[s]=t[s]})),e},t.basename=function e(t){const s=~t.lastIndexOf("/")||~t.lastIndexOf("\\");return 0===s?t:~s==t.length-1?e(t.substring(0,t.length-1)):t.substr(1+~s)};let n=/\$(\d+)|\${(\d+):\/(downcase|upcase)}/g;function a(e,t){return e<t?-1:e>t?1:0}t.RegexSource=class{static hasCaptures(e){return null!==e&&(n.lastIndex=0,n.test(e))}static replaceCaptures(e,t,s){return e.replace(n,((e,n,a,r)=>{let o=s[parseInt(n||a,10)];if(!o)return e;{let e=t.substring(o.start,o.end);for(;"."===e[0];)e=e.substring(1);switch(r){case"downcase":return e.toLowerCase();case"upcase":return e.toUpperCase();default:return e}}}))}},t.strcmp=a,t.strArrCmp=function(e,t){if(null===e&&null===t)return 0;if(!e)return-1;if(!t)return 1;let s=e.length,n=t.length;if(s===n){for(let n=0;n<s;n++){let s=a(e[n],t[n]);if(0!==s)return s}return 0}return s-n},t.isValidHexColor=function(e){return!!(/^#[0-9a-f]{6}$/i.test(e)||/^#[0-9a-f]{8}$/i.test(e)||/^#[0-9a-f]{3}$/i.test(e)||/^#[0-9a-f]{4}$/i.test(e))},t.escapeRegExpCharacters=function(e){return e.replace(/[\-\\\{\}\*\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&")},t.CachedFn=class{constructor(e){this.fn=e,this.cache=new Map}get(e){if(this.cache.has(e))return this.cache.get(e);const t=this.fn(e);return this.cache.set(e,t),t}},t.performanceNow="undefined"==typeof performance?function(){return Date.now()}:function(){return performance.now()}}},n={},function e(t){var a=n[t];if(void 0!==a)return a.exports;var r=n[t]={exports:{}};return s[t].call(r.exports,r,r.exports,e),r.exports}(787))}(B);var G=B.exports;function F(e,t){let s=[];for(let n=0,a=t.length;n<a;n++){let a=t.slice(0,n),r=t[n];s[n]={scopeName:r,themeMatches:U(e,r,a)}}return s}function D(e,t){let s=e+".";return e===t||t.substring(0,s.length)===s}function $(e,t,s,n){if(!D(e,s))return!1;let a=t.length-1,r=n.length-1;for(;a>=0&&r>=0;)D(t[a],n[r])&&a--,r--;return-1===a}function U(e,t,s){let n=[],a=0;for(let r=0,o=e.settings.length;r<o;r++){let o,i=e.settings[r];if("string"==typeof i.scope)o=i.scope.split(/,/).map((e=>e.trim()));else{if(!Array.isArray(i.scope))continue;o=i.scope}for(let e=0,r=o.length;e<r;e++){let c=o[e].split(/ /);$(c[c.length-1],c.slice(0,c.length-1),t,s)&&(n[a++]=i,e=r)}}return n}var W=["black","red","green","yellow","blue","magenta","cyan","white","brightBlack","brightRed","brightGreen","brightYellow","brightBlue","brightMagenta","brightCyan","brightWhite"],q={1:"bold",2:"dim",3:"italic",4:"underline",7:"reverse",9:"strikethrough"};function H(e,t){const s=e.indexOf("",t);if(-1!==s&&"["===e[s+1]){const t=e.indexOf("m",s);return{sequence:e.substring(s+2,t).split(";"),startPosition:s,position:t+1}}return{position:e.length}}function z(e){const t=e.shift();if("2"===t){const t=e.splice(0,3).map((e=>Number.parseInt(e)));if(3!==t.length||t.some((e=>Number.isNaN(e))))return;return{type:"rgb",rgb:t}}if("5"===t){const t=e.shift();if(t)return{type:"table",index:Number(t)}}}function V(e){const t=[];for(;e.length>0;){const s=e.shift();if(!s)continue;const n=Number.parseInt(s);if(!Number.isNaN(n))if(0===n)t.push({type:"resetAll"});else if(n<=9){q[n]&&t.push({type:"setDecoration",value:q[n]})}else if(n<=29){const e=q[n-20];e&&t.push({type:"resetDecoration",value:e})}else if(n<=37)t.push({type:"setForegroundColor",value:{type:"named",name:W[n-30]}});else if(38===n){const s=z(e);s&&t.push({type:"setForegroundColor",value:s})}else if(39===n)t.push({type:"resetForegroundColor"});else if(n<=47)t.push({type:"setBackgroundColor",value:{type:"named",name:W[n-40]}});else if(48===n){const s=z(e);s&&t.push({type:"setBackgroundColor",value:s})}else 49===n?t.push({type:"resetBackgroundColor"}):n>=90&&n<=97?t.push({type:"setForegroundColor",value:{type:"named",name:W[n-90+8]}}):n>=100&&n<=107&&t.push({type:"setBackgroundColor",value:{type:"named",name:W[n-100+8]}})}return t}var K={black:"#000000",red:"#bb0000",green:"#00bb00",yellow:"#bbbb00",blue:"#0000bb",magenta:"#ff00ff",cyan:"#00bbbb",white:"#eeeeee",brightBlack:"#555555",brightRed:"#ff5555",brightGreen:"#00ff00",brightYellow:"#ffff55",brightBlue:"#5555ff",brightMagenta:"#ff55ff",brightCyan:"#55ffff",brightWhite:"#ffffff"};function J(e=K){function t(t){return e[t]}function s(e){return`#${e.map((e=>Math.max(0,Math.min(e,255)).toString(16).padStart(2,"0"))).join("")}`}let n;function a(e){return function(){if(n)return n;n=[];for(let e=0;e<W.length;e++)n.push(t(W[e]));let e=[0,95,135,175,215,255];for(let t=0;t<6;t++)for(let a=0;a<6;a++)for(let r=0;r<6;r++)n.push(s([e[t],e[a],e[r]]));let a=8;for(let e=0;e<24;e++,a+=10)n.push(s([a,a,a]));return n}()[e]}return{value:function(e){switch(e.type){case"named":return t(e.name);case"rgb":return s(e.rgb);case"table":return a(e.index)}}}}function Q(e,t){const n=t.split(/\r?\n/),a=J(Object.fromEntries(W.map((t=>[t,e.colors[`terminal.ansi${t[0].toUpperCase()}${t.substring(1)}`]])))),r=function(){let e=null,t=null,s=new Set;return{parse(n){const a=[];let r=0;do{const o=H(n,r),i=o.sequence?n.substring(r,o.startPosition):n.substring(r);if(i.length>0&&a.push({value:i,foreground:e,background:t,decorations:new Set(s)}),o.sequence){const n=V(o.sequence);for(const a of n)"resetAll"===a.type?(e=null,t=null,s.clear()):"resetForegroundColor"===a.type?e=null:"resetBackgroundColor"===a.type?t=null:"resetDecoration"===a.type&&s.delete(a.value);for(const a of n)"setForegroundColor"===a.type?e=a.value:"setBackgroundColor"===a.type?t=a.value:"setDecoration"===a.type&&s.add(a.value)}r=o.position}while(r<n.length);return a}}}();return n.map((t=>r.parse(t).map((t=>{let n;n=t.decorations.has("reverse")?t.background?a.value(t.background):e.bg:t.foreground?a.value(t.foreground):e.fg,t.decorations.has("dim")&&(n=function(e){const t=e.match(/#([0-9a-f]{3})([0-9a-f]{3})?([0-9a-f]{2})?/);if(t){if(t[3]){const e=Math.round(Number.parseInt(t[3],16)/2).toString(16).padStart(2,"0");return`#${t[1]}${t[2]}${e}`}return t[2]?`#${t[1]}${t[2]}80`:`#${Array.from(t[1]).map((e=>`${e}${e}`)).join("")}80`}const s=e.match(/var\((--shiki-color-ansi-[\w-]+)\)/);if(s)return`var(${s[1]}-dim)`;return e}(n));let r=s.None;return t.decorations.has("bold")&&(r|=s.Bold),t.decorations.has("italic")&&(r|=s.Italic),t.decorations.has("underline")&&(r|=s.Underline),{content:t.value,color:n,fontStyle:r}}))))}const X={pre:({className:e,style:t,children:s})=>`<pre class="${e}" style="${t}" tabindex="0">${s}</pre>`,code:({children:e})=>`<code>${e}</code>`,line:({className:e,children:t})=>`<span class="${e}">${t}</span>`,token:({style:e,children:t})=>`<span style="${e}">${t}</span>`};function Y(e,t={}){const n=t.bg||"#fff",a=function(e,t){const s=new Map;for(const n of e){const e=t(n);s.has(e)?s.get(e).push(n):s.set(e,[n])}return s}(t.lineOptions??[],(e=>e.line)),r=t.elements||{};function o(e="",t={},s){const n=r[e]||X[e];return n?(s=s.filter(Boolean),n({...t,children:"code"===e?s.join("\n"):s.join("")})):""}return o("pre",{className:"shiki "+(t.themeName||""),style:`background-color: ${n}`},[t.langId?`<div class="language-id">${t.langId}</div>`:"",o("code",{},e.map(((n,r)=>{const i=r+1,c=function(e){const t=new Set(["line"]);for(const s of e)for(const e of s.classes??[])t.add(e);return Array.from(t)}(a.get(i)??[]).join(" ");return o("line",{className:c,lines:e,line:n,index:r},n.map(((e,a)=>{const r=[`color: ${e.color||t.fg}`];return e.fontStyle&s.Italic&&r.push("font-style: italic"),e.fontStyle&s.Bold&&r.push("font-weight: bold"),e.fontStyle&s.Underline&&r.push("text-decoration: underline"),o("token",{style:r.join("; "),tokens:n,token:e,index:a},[(i=e.content,i.replace(/[&<>"']/g,(e=>Z[e])))]);var i})))})))])}const Z={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};class ee extends G.Registry{constructor(e){super(e),this._resolver=e,this.themesPath="themes/",this._resolvedThemes={},this._resolvedGrammars={},this._langGraph=new Map,this._langMap=t.reduce(((e,t)=>(e[t.id]=t,e)),{})}getTheme(e){return"string"==typeof e?this._resolvedThemes[e]:e}async loadTheme(e){return"string"==typeof e?(this._resolvedThemes[e]||(this._resolvedThemes[e]=await T(`${this.themesPath}${e}.json`)),this._resolvedThemes[e]):((e=R(e)).name&&(this._resolvedThemes[e.name]=e),e)}async loadThemes(e){return await Promise.all(e.map((e=>this.loadTheme(e))))}getLoadedThemes(){return Object.keys(this._resolvedThemes)}getGrammar(e){return this._resolvedGrammars[e]}async loadLanguage(e){const t=e.embeddedLangs?.reduce((async(e,t,s)=>{if(!this.getLoadedLanguages().includes(t)&&this._resolver.getLangRegistration(t))return await this._resolver.loadGrammar(this._resolver.getLangRegistration(t).scopeName),e[this._resolver.getLangRegistration(t).scopeName]=s+2,e}),{}),s={embeddedLanguages:t,balancedBracketSelectors:e.balancedBracketSelectors||["*"],unbalancedBracketSelectors:e.unbalancedBracketSelectors||[]},n=await this.loadGrammarWithConfiguration(e.scopeName,1,s);this._resolvedGrammars[e.id]=n,e.aliases&&e.aliases.forEach((e=>{this._resolvedGrammars[e]=n}))}async loadLanguages(e){for(const t of e)this.resolveEmbeddedLanguages(t);const t=Array.from(this._langGraph.values());for(const e of t)this._resolver.addLanguage(e);for(const e of t)await this.loadLanguage(e)}getLoadedLanguages(){return Object.keys(this._resolvedGrammars)}resolveEmbeddedLanguages(e){if(this._langGraph.has(e.id)||this._langGraph.set(e.id,e),e.embeddedLangs)for(const t of e.embeddedLangs)this._langGraph.set(t,this._langMap[t])}}function te(e){return"string"==typeof e?t.find((t=>t.id===e||t.aliases?.includes(e))):e}e.BUNDLED_LANGUAGES=t,e.BUNDLED_THEMES=["css-variables","dark-plus","dracula-soft","dracula","github-dark-dimmed","github-dark","github-light","hc_light","light-plus","material-theme-darker","material-theme-lighter","material-theme-ocean","material-theme-palenight","material-theme","min-dark","min-light","monokai","nord","one-dark-pro","poimandres","rose-pine-dawn","rose-pine-moon","rose-pine","slack-dark","slack-ochin","solarized-dark","solarized-light","vitesse-dark","vitesse-light"],e.FontStyle=s,e.getHighlighter=async function(e){const{_languages:s,_themes:a,_wasmPath:r}=function(e){let s=t,n=e.themes||[],a=e.paths?.wasm?e.paths.wasm.endsWith("/")?e.paths.wasm:e.paths.wasm+"/":j;return e.langs&&(s=e.langs.map(te)),e.theme&&n.unshift(e.theme),n.length||(n=["nord"]),{_languages:s,_themes:n,_wasmPath:a}}(e),c=new M(async function(e){if(!P){let t;if(S)t="string"==typeof C?m.loadWASM({data:await fetch(A(i(...o(e),"onig.wasm")))}):m.loadWASM({data:C});else{const e=require("path").join(require.resolve("vscode-oniguruma"),"../onig.wasm"),s=require("fs").readFileSync(e).buffer;t=m.loadWASM(s)}P=t.then((()=>({createOnigScanner:e=>m.createOnigScanner(e),createOnigString:e=>m.createOnigString(e)})))}return P}(r),"vscode-oniguruma"),l=new ee(c);e.paths?.themes&&(l.themesPath=e.paths.themes.endsWith("/")?e.paths.themes:e.paths.themes+"/"),e.paths?.languages&&(c.languagesPath=e.paths.languages.endsWith("/")?e.paths.languages:e.paths.languages+"/");const u=(await l.loadThemes(a))[0];let p;await l.loadLanguages(s);let h=function(){const e={"#000001":"var(--shiki-color-text)","#000002":"var(--shiki-color-background)","#000004":"var(--shiki-token-constant)","#000005":"var(--shiki-token-string)","#000006":"var(--shiki-token-comment)","#000007":"var(--shiki-token-keyword)","#000008":"var(--shiki-token-parameter)","#000009":"var(--shiki-token-function)","#000010":"var(--shiki-token-string-expression)","#000011":"var(--shiki-token-punctuation)","#000012":"var(--shiki-token-link)"};for(let t=0;t<W.length;t++){const s=`#A${t.toString().padStart(5,"0")}`,n=W[t].replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();e[s]=`var(--shiki-color-ansi-${n})`}return e}();function d(e){const t=e?l.getTheme(e):u;if(!t)throw Error(`No theme registration for ${e}`);p&&p.name===t.name||(l.setTheme(t),p=t);const s=l.getColorMap();return"css"===t.type&&function(e,t){e.bg=h[e.bg]||e.bg,e.fg=h[e.fg]||e.fg,Object.entries(e.colors).forEach((([t,s])=>{e.colors[t]=h[s]||s})),t.forEach(((e,s)=>{t[s]=h[e]||e}))}(t,s),{_theme:t,_colorMap:s}}function g(e,t="text",s,a={includeExplanation:!0}){if(function(e){return!e||["plaintext","txt","text"].includes(e)}(t)){return[...e.split(/\r\n|\r|\n/).map((e=>[{content:e}]))]}const{_grammar:r}=function(e){const t=l.getGrammar(e);if(!t)throw Error(`No language registration for ${e}`);return{_grammar:t}}(t),{_theme:o,_colorMap:i}=d(s);return function(e,t,s,a,r){let o=s.split(/\r\n|\r|\n/),i=G.INITIAL,c=[],l=[];for(let s=0,u=o.length;s<u;s++){let u,p,h,d=o[s];if(""===d){c=[],l.push([]);continue}r.includeExplanation&&(u=a.tokenizeLine(d,i),p=u.tokens,h=0);let m=a.tokenizeLine2(d,i),g=m.tokens.length/2;for(let s=0;s<g;s++){let a=m.tokens[2*s],o=s+1<g?m.tokens[2*s+2]:d.length;if(a===o)continue;let i=m.tokens[2*s+1],l=t[n.getForeground(i)],u=n.getFontStyle(i),f=[];if(r.includeExplanation){let t=0;for(;a+t<o;){let s=p[h],n=d.substring(s.startIndex,s.endIndex);t+=n.length,f.push({content:n,scopes:F(e,s.scopes)}),h++}}c.push({content:d.substring(a,o),color:l,fontStyle:u,explanation:f})}l.push(c),c=[],i=m.ruleStack}return l}(o,i,e,r,a)}function f(e,t){const{_theme:s}=d(t);return Q(s,e)}return{codeToThemedTokens:g,codeToHtml:function(e,t="text",s){let n;n="object"==typeof t?t:{lang:t,theme:s};const a=g(e,n.lang,n.theme,{includeExplanation:!1}),{_theme:r}=d(n.theme);return Y(a,{fg:r.fg,bg:r.bg,lineOptions:n?.lineOptions,themeName:r.name})},ansiToThemedTokens:f,ansiToHtml:function(e,t){const s=f(e,t?.theme),{_theme:n}=d(t?.theme);return Y(s,{fg:n.fg,bg:n.bg,lineOptions:t?.lineOptions,themeName:n.name})},getTheme:e=>d(e)._theme,loadTheme:async function(e){await l.loadTheme(e)},loadLanguage:async function(e){const t=te(e);c.addLanguage(t),await l.loadLanguage(t)},getBackgroundColor:function(e){const{_theme:t}=d(e);return t.bg},getForegroundColor:function(e){const{_theme:t}=d(e);return t.fg},getLoadedThemes:function(){return l.getLoadedThemes()},getLoadedLanguages:function(){return l.getLoadedLanguages()},setColorReplacements:function(e){h=e}}},e.loadTheme=T,e.renderToHtml=Y,e.setCDN=function(e){v=e.endsWith("/")?e:e+"/"},e.setOnigasmWASM=function(e){w(e)},e.setWasm=w,e.toShikiTheme=R}(this.shiki=this.shiki||{});
diff --git a/node_modules/shiki/dist/onig.wasm b/node_modules/shiki/dist/onig.wasm
new file mode 100644
index 0000000..6edbc88
--- /dev/null
+++ b/node_modules/shiki/dist/onig.wasm
Binary files differ
diff --git a/node_modules/shiki/languages/abap.tmLanguage.json b/node_modules/shiki/languages/abap.tmLanguage.json
new file mode 100644
index 0000000..b17a1d8
--- /dev/null
+++ b/node_modules/shiki/languages/abap.tmLanguage.json
@@ -0,0 +1,378 @@
+{
+ "fileTypes": ["abap", "ABAP"],
+ "foldingStartMarker": "/\\*\\*|\\{\\s*$",
+ "foldingStopMarker": "\\*\\*/|^\\s*\\}",
+ "keyEquivalent": "^~A",
+ "name": "abap",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.abap"
+ }
+ },
+ "match": "^\\*.*\\n?",
+ "name": "comment.line.full.abap"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.abap"
+ }
+ },
+ "match": "\".*\\n?",
+ "name": "comment.line.partial.abap"
+ },
+ {
+ "match": "(?<![^\\s])##.*?(?=([\\.:,\\s]))",
+ "name": "comment.line.pragma.abap"
+ },
+ {
+ "match": "(?i)(?<=(?:\\s|~|-))(?<=(?:->|=>))([a-z_\\/][a-z_0-9\\/]*)(?=\\s+(?:=|\\+=|-=|\\*=|\\/=|&&=|&=)\\s+)",
+ "name": "variable.other.abap"
+ },
+ {
+ "match": "\\b[0-9]+(\\b|\\.|,)",
+ "name": "constant.numeric.abap"
+ },
+ {
+ "match": "(?ix)(^|\\s+)((PUBLIC|PRIVATE|PROTECTED)\\sSECTION)(?=\\s+|:|\\.)",
+ "name": "storage.modifier.class.abap"
+ },
+ {
+ "begin": "(?<!\\\\)(\\|)(.*?)",
+ "end": "(?<!\\\\)(\\||(\\\\\\\\\\|))",
+ "name": "string.interpolated.abap",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.character.escape.abap"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "constant.character.escape.abap"
+ }
+ },
+ "patterns": [
+ {
+ "match": "({ )|( })",
+ "name": "constant.character.escape"
+ },
+ {
+ "match": "(?<={ ).*?(?= })",
+ "name": "variable.other.abap"
+ },
+ {
+ "match": "\\\\\\|",
+ "name": "constant.character.escape.abap"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "end": "'",
+ "name": "string.quoted.single.abap",
+ "patterns": [
+ {
+ "match": "''",
+ "name": "constant.character.escape.abap"
+ }
+ ]
+ },
+ {
+ "begin": "`",
+ "end": "`",
+ "name": "string.quoted.single.abap",
+ "patterns": [
+ {
+ "match": "``",
+ "name": "constant.character.escape.abap"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)^\\s*(class)\\s([a-z_\\/][a-z_0-9\\/]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.block.abap"
+ },
+ "2": {
+ "name": "entity.name.type.block.abap"
+ }
+ },
+ "end": "\\s*\\.\\s*\\n?",
+ "name": "meta.block.begin.implementation.abap",
+ "patterns": [
+ {
+ "match": "(?ix)(^|\\s+)(definition|implementation|public|inheriting\\s+from|final|deferred|abstract|shared\\s+memory\\s+enabled|(global|local)*\\s*friends|(create\\s+(public|protected|private))|for\\s+behavior\\s+of|for\\s+testing|risk\\s+level\\s+(critical|dangerous|harmless))|duration\\s(short|medium|long)(?=\\s+|\\.)",
+ "name": "storage.modifier.class.abap"
+ },
+ {
+ "begin": "(?=[A-Za-z_][A-Za-z0-9_]*)",
+ "contentName": "entity.name.type.block.abap",
+ "end": "(?![A-Za-z0-9_])",
+ "patterns": [
+ {
+ "include": "#generic_names"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?ix)^\\s*(method)\\s(?:([a-z_\\/][a-z_0-9\\/]*)~)?([a-z_\\/][a-z_0-9\\/]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.block.abap"
+ },
+ "2": {
+ "name": "entity.name.type.abap"
+ },
+ "3": {
+ "name": "entity.name.function.abap"
+ }
+ },
+ "end": "\\s*\\.\\s*\\n?",
+ "patterns": [
+ {
+ "match": "(?ix)(?<=^|\\s)(BY\\s+DATABASE(\\s+PROCEDURE|\\s+FUNCTION|\\s+GRAPH\\s+WORKSPACE)|BY\\s+KERNEL\\s+MODULE)(?=\\s+|\\.)",
+ "name": "storage.modifier.method.abap"
+ },
+ {
+ "match": "(?ix)(?<=^|\\s)(FOR\\s+(HDB|LLANG))(?=\\s+|\\.)",
+ "name": "storage.modifier.method.abap"
+ },
+ {
+ "match": "(?ix)(?<=\\s)(OPTIONS\\s+(READ-ONLY|DETERMINISTIC|SUPPRESS\\s+SYNTAX\\s+ERRORS))(?=\\s+|\\.)",
+ "name": "storage.modifier.method.abap"
+ },
+ {
+ "match": "(?ix)(?<=^|\\s)(LANGUAGE\\s+(SQLSCRIPT|SQL|GRAPH))(?=\\s+|\\.)",
+ "name": "storage.modifier.method.abap"
+ },
+ {
+ "match": "(?ix)(?<=\\s)(USING)\\s+([a-z_\\/][a-z_0-9\\/=\\>]*)+(?=\\s+|\\.)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.method.abap"
+ }
+ }
+ },
+ {
+ "begin": "(?=[A-Za-z_][A-Za-z0-9_]*)",
+ "end": "(?![A-Za-z0-9_])",
+ "patterns": [
+ {
+ "include": "#generic_names"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?ix)^\\s*(INTERFACE)\\s([a-z_\\/][a-z_0-9\\/]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.block.abap"
+ },
+ "2": {
+ "name": "entity.name.type.abap"
+ }
+ },
+ "end": "\\s*\\.\\s*\\n?",
+ "patterns": [
+ {
+ "match": "(?ix)(?<=^|\\s)(DEFERRED|PUBLIC)(?=\\s+|\\.)",
+ "name": "storage.modifier.method.abap"
+ }
+ ]
+ },
+ {
+ "begin": "(?ix)^\\s*(FORM)\\s([a-z_\\/][a-z_0-9\\/\\-\\?]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.block.abap"
+ },
+ "2": {
+ "name": "entity.name.type.abap"
+ }
+ },
+ "end": "\\s*\\.\\s*\\n?",
+ "patterns": [
+ {
+ "match": "(?ix)(?<=^|\\s)(USING|TABLES|CHANGING|RAISING|IMPLEMENTATION|DEFINITION)(?=\\s+|\\.)",
+ "name": "storage.modifier.form.abap"
+ },
+ {
+ "include": "#abaptypes"
+ },
+ {
+ "include": "#keywords_followed_by_braces"
+ }
+ ]
+ },
+ {
+ "match": "(?i)(endclass|endmethod|endform|endinterface)",
+ "name": "storage.type.block.end.abap"
+ },
+ {
+ "match": "(?i)(<[A-Za-z_][A-Za-z0-9_]*>)",
+ "name": "variable.other.field.symbol.abap"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#abap_constants"
+ },
+ {
+ "include": "#reserved_names"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#builtin_functions"
+ },
+ {
+ "include": "#abaptypes"
+ },
+ {
+ "include": "#system_fields"
+ },
+ {
+ "include": "#sql_functions"
+ },
+ {
+ "include": "#sql_types"
+ }
+ ],
+ "repository": {
+ "abap_constants": {
+ "match": "(?ix)(?<=\\s)(initial|null|space|abap_true|abap_false|abap_undefined|table_line|\n\t\t\t\t%_final|%_hints|%_predefined|col_background|col_group|col_heading|col_key|col_negative|col_normal|col_positive|col_total|\n\t\t\t\tadabas|as400|db2|db6|hdb|oracle|sybase|mssqlnt|pos_low|pos_high)(?=\\s|\\.|,)",
+ "name": "constant.language.abap"
+ },
+ "reserved_names": {
+ "match": "(?ix)(?<=\\s)(me|super)(?=\\s|\\.|,|->)",
+ "name": "constant.language.abap"
+ },
+ "abaptypes": {
+ "patterns": [
+ {
+ "match": "(?ix)\\s(abap_bool|string|xstring|any|clike|csequence|numeric|xsequence|decfloat|decfloat16|decfloat34|utclong|simple|int8|c|n|i|p|f|d|t|x)(?=\\s|\\.|,)",
+ "name": "support.type.abap"
+ },
+ {
+ "match": "(?ix)\\s(TYPE|REF|TO|LIKE|LINE|OF|STRUCTURE|STANDARD|SORTED|HASHED|INDEX|TABLE|WITH|UNIQUE|NON-UNIQUE|SECONDARY|DEFAULT|KEY)(?=\\s|\\.|,)",
+ "name": "keyword.control.simple.abap"
+ }
+ ]
+ },
+ "arithmetic_operator": {
+ "match": "(?i)(?<=\\s)(\\+|\\-|\\*|\\*\\*|\\/|%|DIV|MOD|BIT-AND|BIT-OR|BIT-XOR|BIT-NOT)(?=\\s)",
+ "name": "keyword.control.simple.abap"
+ },
+ "comparison_operator": {
+ "match": "(?i)(?<=\\s)(<|>|<\\=|>\\=|\\=|<>|eq|ne|lt|le|gt|ge|cs|cp|co|cn|ca|na|ns|np|byte-co|byte-cn|byte-ca|byte-na|byte-cs|byte-ns|o|z|m)(?=\\s)",
+ "name": "keyword.control.simple.abap"
+ },
+ "control_keywords": {
+ "match": "(?ix)(^|\\s)(\n\t at|case|catch|continue|do|elseif|else|endat|endcase|endcatch|enddo|endif|\n\t endloop|endon|endtry|endwhile|if|loop|on|raise|try|while)(?=\\s|\\.|:)",
+ "name": "keyword.control.flow.abap"
+ },
+ "generic_names": {
+ "match": "[A-Za-z_][A-Za-z0-9_]*"
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "include": "#main_keywords"
+ },
+ {
+ "include": "#text_symbols"
+ },
+ {
+ "include": "#control_keywords"
+ },
+ {
+ "include": "#keywords_followed_by_braces"
+ }
+ ]
+ },
+ "logical_operator": {
+ "match": "(?i)(?<=\\s)(not|or|and)(?=\\s)",
+ "name": "keyword.control.simple.abap"
+ },
+ "system_fields": {
+ "match": "(?ix)\\b(sy)-(abcde|batch|binpt|calld|callr|colno|cpage|cprog|cucol|curow|datar|datlo|datum|dayst|dbcnt|dbnam|dbsysc|dyngr|dynnr|fdayw|fdpos|host|index|langu|ldbpg|lilli|linct|linno|linsz|lisel|listi|loopc|lsind|macol|mandt|marow|modno|msgid|msgli|msgno|msgty|msgv[1-4]|opsysc|pagno|pfkey|repid|saprl|scols|slset|spono|srows|staco|staro|stepl|subrc|sysid|tabix|tcode|tfill|timlo|title|tleng|tvar[0-9]|tzone|ucomm|uline|uname|uzeit|vline|wtitl|zonlo)(?=\\.|\\s)",
+ "captures": {
+ "1": {
+ "name": "variable.language.abap"
+ },
+ "2": {
+ "name": "variable.language.abap"
+ }
+ }
+ },
+ "main_keywords": {
+ "match": "(?ix)(?<=^|\\s)(\nabap-source|\nabstract|\naccept|\naccepting|\naccess|\naction|\nactivation|\nactual|\nadd|\nadd-corresponding|\nadjacent|\nalias|\naliases|\nalign|\nall|\nallocate|\nalpha|\namdp|\nanalysis|\nanalyzer|\nappend|\nappending|\napplication|\narchive|\narea|\narithmetic|\nas|\nascending|\nassert|\nassign|\nassigned|\nassigning|\nassociation|\nasynchronous|\nat|\nattributes|\nauthority|\nauthority-check|\nauthorization|\nauto|\nback|\nbackground|\nbackward|\nbadi|\nbase|\nbefore|\nbegin|\nbehavior|\nbetween|\nbinary|\nbit|\nblank|\nblanks|\nblock|\nblocks|\nbound|\nboundaries|\nbounds|\nboxed|\nbreak|\nbreak-point|\nbuffer|\nby|\nbypassing|\nbyte|\nbyte-order|\ncall|\ncalling|\ncast|\ncasting|\ncds|\ncenter|\ncentered|\nchange|\nchanging|\nchannels|\nchar-to-hex|\ncharacter|\ncheck|\ncheckbox|\ncid|\ncircular|\nclass|\nclass-data|\nclass-events|\nclass-method|\nclass-methods|\nclass-pool|\ncleanup|\nclear|\nclient|\nclients|\nclock|\nclone|\nclose|\ncnt|\ncode|\ncollect|\ncolor|\ncolumn|\ncomment|\ncomments|\ncommit|\ncommon|\ncommunication|\ncomparing|\ncomponent|\ncomponents|\ncompression|\ncompute|\nconcatenate|\ncond|\ncondense|\ncondition|\nconnection|\nconstant|\nconstants|\ncontext|\ncontexts|\ncontrol|\ncontrols|\nconv|\nconversion|\nconvert|\ncopy|\ncorresponding|\ncount|\ncountry|\ncover|\ncreate|\ncurrency|\ncurrent|\ncursor|\ncustomer-function|\ndata|\ndatabase|\ndatainfo|\ndataset|\ndate|\ndaylight|\nddl|\ndeallocate|\ndecimals|\ndeclarations|\ndeep|\ndefault|\ndeferred|\ndefine|\ndelete|\ndeleting|\ndemand|\ndescending|\ndescribe|\ndestination|\ndetail|\ndetermine|\ndialog|\ndid|\ndirectory|\ndiscarding|\ndisplay|\ndisplay-mode|\ndistance|\ndistinct|\ndivide|\ndivide-corresponding|\ndummy|\nduplicate|\nduplicates|\nduration|\nduring|\ndynpro|\nedit|\neditor-call|\nempty|\nenabled|\nenabling|\nencoding|\nend|\nend-enhancement-section|\nend-of-definition|\nend-of-page|\nend-of-selection|\nend-test-injection|\nend-test-seam|\nendenhancement|\nendexec|\nendfunction|\nendian|\nending|\nendmodule|\nendprovide|\nendselect|\nendwith|\nengineering|\nenhancement|\nenhancement-point|\nenhancement-section|\nenhancements|\nentities|\nentity|\nentries|\nentry|\nenum|\nenvironment|\nequiv|\nerrors|\nescape|\nescaping|\nevent|\nevents|\nexact|\nexcept|\nexception|\nexception-table|\nexceptions|\nexcluding|\nexec|\nexecute|\nexists|\nexit|\nexit-command|\nexpanding|\nexplicit|\nexponent|\nexport|\nexporting|\nextended|\nextension|\nextract|\nfail|\nfailed|\nfeatures|\nfetch|\nfield|\nfield-groups|\nfield-symbols|\nfields|\nfile|\nfill|\nfilter|\nfilters|\nfinal|\nfind|\nfirst|\nfirst-line|\nfixed-point|\nflush|\nfor|\nformat|\nforward|\nfound|\nframe|\nframes|\nfree|\nfrom|\nfull|\nfunction|\nfunction-pool|\ngenerate|\nget|\ngiving|\ngraph|\ngroup|\ngroups|\nhandle|\nhandler|\nhashed|\nhaving|\nheader|\nheaders|\nheading|\nhelp-id|\nhelp-request|\nhide|\nhint|\nhold|\nhotspot|\nicon|\nid|\nidentification|\nidentifier|\nignore|\nignoring|\nimmediately|\nimplemented|\nimplicit|\nimport|\nimporting|\nin|\ninactive|\nincl|\ninclude|\nincludes|\nincrement|\nindex|\nindex-line|\ninfotypes|\ninheriting|\ninit|\ninitial|\ninitialization|\ninner|\ninput|\ninsert|\ninstance|\ninstances|\nintensified|\ninterface|\ninterface-pool|\ninterfaces|\ninternal|\nintervals|\ninto|\ninverse|\ninverted-date|\nis|\niso|\njob|\njoin|\nkeep|\nkeeping|\nkernel|\nkey|\nkeys|\nkeywords|\nkind|\nlanguage|\nlast|\nlate|\nlayout|\nleading|\nleave|\nleft|\nleft-justified|\nleftplus|\nleftspace|\nlegacy|\nlength|\nlet|\nlevel|\nlevels|\nlike|\nline|\nline-count|\nline-selection|\nline-size|\nlinefeed|\nlines|\nlink|\nlist|\nlist-processing|\nlistbox|\nload|\nload-of-program|\nlocal|\nlocale|\nlock|\nlocks|\nlog-point|\nlogical|\nlower|\nmapped|\nmapping|\nmargin|\nmark|\nmask|\nmatch|\nmatchcode|\nmaximum|\nmembers|\nmemory|\nmesh|\nmessage|\nmessage-id|\nmessages|\nmessaging|\nmethod|\nmethods|\nmode|\nmodif|\nmodifier|\nmodify|\nmodule|\nmove|\nmove-corresponding|\nmultiply|\nmultiply-corresponding|\nname|\nnametab|\nnative|\nnested|\nnesting|\nnew|\nnew-line|\nnew-page|\nnew-section|\nnext|\nno|\nno-display|\nno-extension|\nno-gap|\nno-gaps|\nno-grouping|\nno-heading|\nno-scrolling|\nno-sign|\nno-title|\nno-zero|\nnodes|\nnon-unicode|\nnon-unique|\nnumber|\nobject|\nobjects|\nobjmgr|\nobligatory|\noccurence|\noccurences|\noccurrence|\noccurrences|\noccurs|\nof|\noffset|\non|\nonly|\nopen|\noptional|\noption|\noptions|\norder|\nothers|\nout|\nouter|\noutput|\noutput-length|\noverflow|\noverlay|\npack|\npackage|\npad|\npadding|\npage|\nparameter|\nparameter-table|\nparameters|\npart|\npartially|\npcre|\nperform|\nperforming|\npermissions|\npf-status|\nplaces|\npool|\nposition|\npragmas|\nprecompiled|\npreferred|\npreserving|\nprimary|\nprint|\nprint-control|\nprivate|\nprivileged|\nprocedure|\nprogram|\nproperty|\nprotected|\nprovide|\npush|\npushbutton|\nput|\nquery|\nqueue-only|\nqueueonly|\nquickinfo|\nradiobutton|\nraising|\nrange|\nranges|\nread|\nread-only|\nreceive|\nreceived|\nreceiving|\nredefinition|\nreduce|\nref|\nreference|\nrefresh|\nregex|\nreject|\nrenaming|\nreplace|\nreplacement|\nreplacing|\nreport|\nreported|\nrequest|\nrequested|\nrequired|\nreserve|\nreset|\nresolution|\nrespecting|\nresponse|\nrestore|\nresult|\nresults|\nresumable|\nresume|\nretry|\nreturn|\nreturning|\nright|\nright-justified|\nrightplus|\nrightspace|\nrollback|\nrows|\nrp-provide-from-last|\nrun|\nsap|\nsap-spool|\nsave|\nsaving|\nscale_preserving|\nscale_preserving_scientific|\nscan|\nscientific|\nscientific_with_leading_zero|\nscreen|\nscroll|\nscroll-boundary|\nscrolling|\nsearch|\nseconds|\nsection|\nselect|\nselect-options|\nselection|\nselection-screen|\nselection-set|\nselection-sets|\nselection-table|\nselections|\nsend|\nseparate|\nseparated|\nsession|\nset|\nshared|\nshift|\nshortdump|\nshortdump-id|\nsign|\nsign_as_postfix|\nsimple|\nsimulation|\nsingle|\nsize|\nskip|\nskipping|\nsmart|\nsome|\nsort|\nsortable|\nsorted|\nsource|\nspecified|\nsplit|\nspool|\nspots|\nsql|\nstable|\nstamp|\nstandard|\nstart-of-selection|\nstarting|\nstate|\nstatement|\nstatements|\nstatic|\nstatics|\nstatusinfo|\nstep|\nstep-loop|\nstop|\nstructure|\nstructures|\nstyle|\nsubkey|\nsubmatches|\nsubmit|\nsubroutine|\nsubscreen|\nsubstring|\nsubtract|\nsubtract-corresponding|\nsuffix|\nsum|\nsummary|\nsupplied|\nsupply|\nsuppress|\nswitch|\nsymbol|\nsyntax-check|\nsyntax-trace|\nsystem-call|\nsystem-exceptions|\ntab|\ntabbed|\ntable|\ntables|\ntableview|\ntabstrip|\ntarget|\ntask|\ntasks|\ntest|\ntest-injection|\ntest-seam|\ntesting|\ntext|\ntextpool|\nthen|\nthrow|\ntime|\ntimes|\ntimestamp|\ntimezone|\ntitle|\ntitlebar|\nto|\ntokens|\ntop-lines|\ntop-of-page|\ntrace-file|\ntrace-table|\ntrailing|\ntransaction|\ntransfer|\ntransformation|\ntranslate|\ntransporting|\ntrmac|\ntruncate|\ntruncation|\ntype|\ntype-pool|\ntype-pools|\ntypes|\nuline|\nunassign|\nunder|\nunicode|\nunion|\nunique|\nunit|\nunix|\nunpack|\nuntil|\nunwind|\nup|\nupdate|\nupper|\nuser|\nuser-command|\nusing|\nutf-8|\nuuid|\nvalid|\nvalidate|\nvalue|\nvalue-request|\nvalues|\nvary|\nvarying|\nversion|\nvia|\nvisible|\nwait|\nwhen|\nwhere|\nwidth|\nwindow|\nwindows|\nwith|\nwith-heading|\nwith-title|\nwithout|\nword|\nwork|\nworkspace|\nwrite|\nxml|\nxsd|\nyes|\nzero|\nzone\n\t\t \t)(?=\\s|\\.|:|,)",
+ "name": "keyword.control.simple.abap"
+ },
+ "text_symbols": {
+ "match": "(?ix)(?<=^|\\s)(text)-([A-Z0-9]{1,3})(?=\\s|\\.|:|,)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.simple.abap"
+ },
+ "2": {
+ "name": "constant.numeric.abap"
+ }
+ }
+ },
+ "keywords_followed_by_braces": {
+ "match": "(?ix)\\b(data|value|field-symbol|final|reference|resumable)\\((<?[a-z_\\/][a-z_0-9\\/]*>?)\\)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.simple.abap"
+ },
+ "2": {
+ "name": "variable.other.abap"
+ }
+ }
+ },
+ "operators": {
+ "patterns": [
+ {
+ "include": "#other_operator"
+ },
+ {
+ "include": "#arithmetic_operator"
+ },
+ {
+ "include": "#comparison_operator"
+ },
+ {
+ "include": "#logical_operator"
+ }
+ ]
+ },
+ "other_operator": {
+ "match": "(?<=\\s)(&&|&|\\?=|\\+=|-=|\\/=|\\*=|&&=|&=)(?=\\s)",
+ "name": "keyword.control.simple.abap"
+ },
+ "builtin_functions": {
+ "match": "(?ix)(?<=\\s)(abs|sign|ceil|floor|trunc|frac|acos|asin|atan|cos|sin|tan|cosh|sinh|tanh|exp|log|log10|sqrt|strlen|xstrlen|charlen|lines|numofchar|dbmaxlen|round|rescale|nmax|nmin|cmax|cmin|boolc|boolx|xsdbool|contains|contains_any_of|contains_any_not_of|matches|line_exists|ipow|char_off|count|count_any_of|count_any_not_of|distance|condense|concat_lines_of|escape|find|find_end|find_any_of|find_any_not_of|insert|match|repeat|replace|reverse|segment|shift_left|shift_right|substring|substring_after|substring_from|substring_before|substring_to|to_upper|to_lower|to_mixed|from_mixed|translate|bit-set|line_index)(?=\\()",
+ "name": "entity.name.function.builtin.abap"
+ },
+ "sql_types": {
+ "match": "(?ix)(?<=\\s)(char|clnt|cuky|curr|datn|dats|dec|decfloat16|decfloat34|fltp|int1|int2|int4|int8|lang|numc|quan|raw|sstring|timn|tims|unit|utclong)(?=\\s|\\(|\\))",
+ "name": "entity.name.type.sql.abap"
+ },
+ "sql_functions": {
+ "match": "(?ix)(?<=\\s)(abs|ceil|div|division|floor|mod|round|concat|concat_with_space|instr|left|length|like_regexpr|lower|lpad|ltrim|occurrences_regexpr|replace|replace_regexpr|rigth|rpad|rtrim|substring|upper|coalesce|uuid|bintohex|hextobin|to_clob|to_blob|currency_conversion|datn_days_between|datn_add_days|datn_add_months|dats_is_valid|dats_days_between|dats_add_days|dats_add_months|tims_is_valid|utcl_current|utcl_add_seconds|utcl_seconds_between|tstmp_is_valid|tstmp_current_utctimestamp|tstmp_seconds_between|tstmp_add_seconds|abap_system_timezone|abap_user_timezone|tstmp_to_dats|tstmp_to_tims|tstmp_to_dst|dats_tims_to_tstmp|tstmpl_to_utcl|tstmpl_from_utcl|dats_to_datn|dats_from_datn|tims_to_timn|tims_from_timn|avg|median|max|min|sum|product|stddev|var|corr|corr_spearman|string_agg|count|grouping|allow_precision_loss|over|cast)(?=\\()",
+ "name": "entity.name.function.sql.abap"
+ }
+ },
+ "scopeName": "source.abap",
+ "uuid": "0357FFB4-EFFF-4DE9-8371-B0F9C8DF1B21"
+}
diff --git a/node_modules/shiki/languages/actionscript-3.tmLanguage.json b/node_modules/shiki/languages/actionscript-3.tmLanguage.json
new file mode 100644
index 0000000..75210d9
--- /dev/null
+++ b/node_modules/shiki/languages/actionscript-3.tmLanguage.json
@@ -0,0 +1,949 @@
+{
+ "fileTypes": ["as"],
+ "name": "actionscript-3",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#package"
+ },
+ {
+ "include": "#class"
+ },
+ {
+ "include": "#interface"
+ },
+ {
+ "include": "#namespace_declaration"
+ },
+ {
+ "include": "#import"
+ },
+ {
+ "include": "#mxml"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#regexp"
+ },
+ {
+ "include": "#variable_declaration"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#primitive_types"
+ },
+ {
+ "include": "#primitive_error_types"
+ },
+ {
+ "include": "#dynamic_type"
+ },
+ {
+ "include": "#primitive_functions"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "include": "#language_variables"
+ },
+ {
+ "include": "#guess_type"
+ },
+ {
+ "include": "#guess_constant"
+ },
+ {
+ "include": "#other_operators"
+ },
+ {
+ "include": "#arithmetic_operators"
+ },
+ {
+ "include": "#logical_operators"
+ },
+ {
+ "include": "#array_access_operators"
+ },
+ {
+ "include": "#vector_creation_operators"
+ },
+ {
+ "include": "#control_keywords"
+ },
+ {
+ "include": "#other_keywords"
+ },
+ {
+ "include": "#use_namespace"
+ },
+ {
+ "include": "#functions"
+ }
+ ],
+ "repository": {
+ "arithmetic_operators": {
+ "match": "(\\+|\\-|/|%|(?<!:)\\*)",
+ "name": "keyword.operator.actionscript.3"
+ },
+ "array_access_operators": {
+ "match": "(\\[|\\])",
+ "name": "keyword.operator.actionscript.3"
+ },
+ "class": {
+ "begin": "(?x) (^|\\s+|;) (\\b(dynamic|final|abstract)\\b\\s+)? (\\b(internal|public)\\b\\s+)? (\\b(dynamic|final|abstract)\\b\\s+)? (?=\\bclass\\b)",
+ "beginCaptures": {
+ "3": {
+ "name": "storage.modifier.actionscript.3"
+ },
+ "5": {
+ "name": "storage.modifier.actionscript.3"
+ },
+ "7": {
+ "name": "storage.modifier.actionscript.3"
+ }
+ },
+ "end": "\\}",
+ "name": "meta.class.actionscript.3",
+ "patterns": [
+ {
+ "include": "#class_declaration"
+ },
+ {
+ "include": "#metadata"
+ },
+ {
+ "include": "#method"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#regexp"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#primitive_types"
+ },
+ {
+ "include": "#primitive_error_types"
+ },
+ {
+ "include": "#dynamic_type"
+ },
+ {
+ "include": "#primitive_functions"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "include": "#language_variables"
+ },
+ {
+ "include": "#other_operators"
+ },
+ {
+ "include": "#other_keywords"
+ },
+ {
+ "include": "#use_namespace"
+ },
+ {
+ "include": "#guess_type"
+ },
+ {
+ "include": "#guess_constant"
+ },
+ {
+ "include": "#arithmetic_operators"
+ },
+ {
+ "include": "#array_access_operators"
+ },
+ {
+ "include": "#vector_creation_operators"
+ },
+ {
+ "include": "#variable_declaration"
+ },
+ {
+ "include": "#object_literal"
+ }
+ ]
+ },
+ "namespace_declaration": {
+ "captures": {
+ "2": {
+ "name": "storage.modifier.actionscript.3"
+ },
+ "3": {
+ "name": "storage.modifier.actionscript.3"
+ }
+ },
+ "match": "(?x) ((\\w+)\\s+)? (namespace) \\s+ (?:[A-Za-z0-9_\\$]+)",
+ "name": "meta.namespace_declaration.actionscript.3"
+ },
+ "class_declaration": {
+ "begin": "(?x) \\b(class)\\b \\s+ ([\\.\\w]+|\\*)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.actionscript.3"
+ },
+ "2": {
+ "name": "entity.name.class.actionscript.3"
+ }
+ },
+ "end": "\\{",
+ "name": "meta.class_declaration.actionscript.3",
+ "patterns": [
+ {
+ "include": "#extends"
+ },
+ {
+ "include": "#implements"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "code_block": {
+ "begin": "\\{",
+ "end": "\\}",
+ "name": "meta.code_block.actionscript.3",
+ "patterns": [
+ {
+ "include": "#code_block"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#regexp"
+ },
+ {
+ "include": "#variable_declaration"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#primitive_types"
+ },
+ {
+ "include": "#primitive_error_types"
+ },
+ {
+ "include": "#dynamic_type"
+ },
+ {
+ "include": "#primitive_functions"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "include": "#language_variables"
+ },
+ {
+ "include": "#guess_type"
+ },
+ {
+ "include": "#guess_constant"
+ },
+ {
+ "include": "#other_operators"
+ },
+ {
+ "include": "#arithmetic_operators"
+ },
+ {
+ "include": "#logical_operators"
+ },
+ {
+ "include": "#array_access_operators"
+ },
+ {
+ "include": "#vector_creation_operators"
+ },
+ {
+ "include": "#control_keywords"
+ },
+ {
+ "include": "#other_keywords"
+ },
+ {
+ "include": "#use_namespace"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#import"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "/\\*\\*(?!/)",
+ "end": "\\*/",
+ "name": "comment.block.documentation.actionscript.3",
+ "patterns": [
+ {
+ "match": "@(copy|default|eventType|example|exampleText|includeExample|inheritDoc|internal|param|private|return|see|since|throws)\\b",
+ "name": "keyword.other.documentation.actionscript.3.asdoc"
+ }
+ ]
+ },
+ {
+ "begin": "/\\*",
+ "end": "\\*/",
+ "name": "comment.block.actionscript.3"
+ },
+ {
+ "match": "//.*",
+ "name": "comment.line.actionscript.3"
+ }
+ ]
+ },
+ "control_keywords": {
+ "match": "\\b(if|else|do|while|for|each|continue|return|switch|case|default|break|try|catch|finally|throw|with)\\b",
+ "name": "keyword.control.actionscript.3"
+ },
+ "dynamic_type": {
+ "captures": {
+ "1": {
+ "name": "support.type.actionscript.3"
+ }
+ },
+ "match": "(?<=:)\\s*(\\*)"
+ },
+ "escapes": {
+ "match": "\\\\(x\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)",
+ "name": "constant.character.escape.actionscript.3"
+ },
+ "extends": {
+ "captures": {
+ "1": {
+ "name": "keyword.other.actionscript.3"
+ },
+ "2": {
+ "name": "entity.other.inherited-class.actionscript.3"
+ },
+ "3": {
+ "name": "entity.other.inherited-class.actionscript.3"
+ }
+ },
+ "match": "(?x) \\b(extends)\\b \\s+ ([\\.\\w]+) \\s* (?:, \\s* ([\\.\\w]+))* \\s*",
+ "name": "meta.extends.actionscript.3"
+ },
+ "function_arguments": {
+ "begin": "\\(",
+ "end": "\\)",
+ "name": "meta.function_arguments.actionscript.3",
+ "patterns": [
+ {
+ "include": "#parameters"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "parameters": {
+ "begin": "(\\.\\.\\.)?\\s*([A-Za-z\\_\\$][A-Za-z0-9_\\$]*)(?:\\s*(\\:)\\s*(?:(?:([A-Za-z\\$][A-Za-z0-9_\\$]+(?:\\.[A-Za-z\\$][A-Za-z0-9_\\$]+)*)(?:\\.<([A-Za-z\\$][A-Za-z0-9_\\$]+(?:\\.[A-Za-z\\$][A-Za-z0-9_\\$]+)*)>)?)|(\\*)))?(?:\\s*(=))?",
+ "end": ",|(?=\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.actionscript.3"
+ },
+ "2": {
+ "name": "variable.parameter.actionscript.3"
+ },
+ "3": {
+ "name": "keyword.operator.actionscript.3"
+ },
+ "4": {
+ "name": "support.type.actionscript.3"
+ },
+ "5": {
+ "name": "support.type.actionscript.3"
+ },
+ "6": {
+ "name": "support.type.actionscript.3"
+ },
+ "7": {
+ "name": "keyword.operator.actionscript.3"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#primitive_types"
+ },
+ {
+ "include": "#primitive_error_types"
+ },
+ {
+ "include": "#dynamic_type"
+ },
+ {
+ "include": "#guess_type"
+ },
+ {
+ "include": "#guess_constant"
+ }
+ ]
+ },
+ "functions": {
+ "begin": "(?x) \\b(function)\\b (?:\\s+\\b(get|set)\\b\\s+)? \\s* ([a-zA-Z0-9_\\$]+\\b)?",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.actionscript.3"
+ },
+ "2": {
+ "name": "storage.modifier.actionscript.3"
+ },
+ "3": {
+ "name": "entity.name.function.actionscript.3"
+ }
+ },
+ "end": "($|;|(?=\\{))",
+ "name": "meta.function.actionscript.3",
+ "patterns": [
+ {
+ "include": "#function_arguments"
+ },
+ {
+ "include": "#return_type"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "guess_constant": {
+ "captures": {
+ "1": {
+ "name": "constant.other.actionscript.3"
+ }
+ },
+ "comment": "Following convention, let's guess that anything in all caps/digits (possible underscores) is a constant.",
+ "match": "\\b([A-Z\\$][A-Z0-9_]+)\\b"
+ },
+ "guess_type": {
+ "captures": {
+ "1": {
+ "name": "support.type.actionscript.3"
+ }
+ },
+ "comment": "Following convention, let's guess that any word starting with one or more capital letters (that contains at least some lower-case letters so that constants aren't detected) refers to a class/type. May be fully-qualified.",
+ "match": "\\b((?:[A-Za-z0-9_\\$]+\\.)*[A-Z][A-Z0-9]*[a-z]+[A-Za-z0-9_\\$]*)\\b"
+ },
+ "implements": {
+ "captures": {
+ "1": {
+ "name": "keyword.other.actionscript.3"
+ },
+ "2": {
+ "name": "entity.other.inherited-class.actionscript.3"
+ },
+ "3": {
+ "name": "entity.other.inherited-class.actionscript.3"
+ }
+ },
+ "match": "(?x) \\b(implements)\\b \\s+ ([\\.\\w]+) \\s* (?:, \\s* ([\\.\\w]+))* \\s*",
+ "name": "meta.implements.actionscript.3"
+ },
+ "import": {
+ "captures": {
+ "2": {
+ "name": "keyword.control.import.actionscript.3"
+ },
+ "3": {
+ "name": "support.type.actionscript.3"
+ }
+ },
+ "match": "(?x) (^|\\s+|;) \\b(import)\\b \\s+ ([A-Za-z0-9\\$_\\.]+(?:\\.\\*)?) \\s* (?=;|$)",
+ "name": "meta.import.actionscript.3"
+ },
+ "interface": {
+ "begin": "(?x) (^|\\s+|;) (\\b(internal|public)\\b\\s+)? (?=\\binterface\\b)",
+ "beginCaptures": {
+ "3": {
+ "name": "storage.modifier.actionscript.3"
+ }
+ },
+ "end": "\\}",
+ "name": "meta.interface.actionscript.3",
+ "patterns": [
+ {
+ "include": "#interface_declaration"
+ },
+ {
+ "include": "#metadata"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "interface_declaration": {
+ "begin": "(?x) \\b(interface)\\b \\s+ ([\\.\\w]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.interface.actionscript.3"
+ },
+ "2": {
+ "name": "entity.name.class.actionscript.3"
+ }
+ },
+ "end": "\\{",
+ "name": "meta.class_declaration.actionscript.3",
+ "patterns": [
+ {
+ "include": "#extends"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "language_constants": {
+ "match": "\\b(true|false|null|Infinity|-Infinity|NaN|undefined)\\b",
+ "name": "constant.language.actionscript.3"
+ },
+ "language_variables": {
+ "match": "\\b(super|this|arguments)\\b",
+ "name": "variable.language.actionscript.3"
+ },
+ "logical_operators": {
+ "match": "(&|<|~|\\||>|\\^|!|\\?)",
+ "name": "keyword.operator.actionscript.3"
+ },
+ "metadata_info": {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "variable.parameter.actionscript.3"
+ },
+ "2": {
+ "name": "keyword.operator.actionscript.3"
+ }
+ },
+ "match": "(\\w+)\\s*(=)"
+ }
+ ]
+ },
+ "method": {
+ "begin": "(?x) (^|\\s+) ((\\w+)\\s+)? ((\\w+)\\s+)? ((\\w+)\\s+)? ((\\w+)\\s+)? (?=\\bfunction\\b)",
+ "beginCaptures": {
+ "3": {
+ "name": "storage.modifier.actionscript.3"
+ },
+ "5": {
+ "name": "storage.modifier.actionscript.3"
+ },
+ "7": {
+ "name": "storage.modifier.actionscript.3"
+ },
+ "8": {
+ "name": "storage.modifier.actionscript.3"
+ }
+ },
+ "end": "(?<=(;|\\}))",
+ "name": "meta.method.actionscript.3",
+ "patterns": [
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#code_block"
+ }
+ ]
+ },
+ "mxml": {
+ "begin": "<!\\[CDATA\\[",
+ "end": "\\]\\]>",
+ "name": "meta.cdata.actionscript.3",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#import"
+ },
+ {
+ "include": "#metadata"
+ },
+ {
+ "include": "#class"
+ },
+ {
+ "include": "#namespace_declaration"
+ },
+ {
+ "include": "#use_namespace"
+ },
+ {
+ "include": "#class_declaration"
+ },
+ {
+ "include": "#method"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#regexp"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#primitive_types"
+ },
+ {
+ "include": "#primitive_error_types"
+ },
+ {
+ "include": "#dynamic_type"
+ },
+ {
+ "include": "#primitive_functions"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "include": "#language_variables"
+ },
+ {
+ "include": "#other_keywords"
+ },
+ {
+ "include": "#guess_type"
+ },
+ {
+ "include": "#guess_constant"
+ },
+ {
+ "include": "#other_operators"
+ },
+ {
+ "include": "#arithmetic_operators"
+ },
+ {
+ "include": "#array_access_operators"
+ },
+ {
+ "include": "#vector_creation_operators"
+ },
+ {
+ "include": "#variable_declaration"
+ }
+ ]
+ },
+ "numbers": {
+ "match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b",
+ "name": "constant.numeric.actionscript.3"
+ },
+ "object_literal": {
+ "begin": "\\{",
+ "end": "\\}",
+ "name": "meta.object_literal.actionscript.3",
+ "patterns": [
+ {
+ "include": "#object_literal"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#regexp"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#primitive_types"
+ },
+ {
+ "include": "#primitive_error_types"
+ },
+ {
+ "include": "#dynamic_type"
+ },
+ {
+ "include": "#primitive_functions"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "include": "#language_variables"
+ },
+ {
+ "include": "#guess_type"
+ },
+ {
+ "include": "#guess_constant"
+ },
+ {
+ "include": "#array_access_operators"
+ },
+ {
+ "include": "#vector_creation_operators"
+ },
+ {
+ "include": "#functions"
+ }
+ ]
+ },
+ "other_keywords": {
+ "match": "\\b(as|delete|in|instanceof|is|native|new|to|typeof)\\b",
+ "name": "keyword.other.actionscript.3"
+ },
+ "other_operators": {
+ "match": "(\\.|=)",
+ "name": "keyword.operator.actionscript.3"
+ },
+ "package": {
+ "begin": "(^|\\s+)(package)\\b",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.actionscript.3"
+ }
+ },
+ "end": "\\}",
+ "name": "meta.package.actionscript.3",
+ "patterns": [
+ {
+ "include": "#package_name"
+ },
+ {
+ "include": "#variable_declaration"
+ },
+ {
+ "include": "#method"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#return_type"
+ },
+ {
+ "include": "#import"
+ },
+ {
+ "include": "#use_namespace"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "include": "#metadata"
+ },
+ {
+ "include": "#class"
+ },
+ {
+ "include": "#interface"
+ },
+ {
+ "include": "#namespace_declaration"
+ }
+ ]
+ },
+ "package_name": {
+ "begin": "(?<=package)\\s+([\\w\\._]*)\\b",
+ "end": "\\{",
+ "name": "meta.package_name.actionscript.3"
+ },
+ "primitive_types": {
+ "captures": {
+ "1": {
+ "name": "support.class.builtin.actionscript.3"
+ }
+ },
+ "match": "\\b(Array|Boolean|Class|Date|Function|int|JSON|Math|Namespace|Number|Object|QName|RegExp|String|uint|Vector|XML|XMLList|\\*(?<=a))\\b"
+ },
+ "primitive_error_types": {
+ "captures": {
+ "1": {
+ "name": "support.class.error.actionscript.3"
+ }
+ },
+ "match": "\\b((Argument|Definition|Eval|Internal|Range|Reference|Security|Syntax|Type|URI|Verify)?Error)\\b"
+ },
+ "primitive_functions": {
+ "captures": {
+ "1": {
+ "name": "support.function.actionscript.3"
+ }
+ },
+ "match": "\\b(decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|isFinite|isNaN|isXMLName|parseFloat|parseInt|trace|unescape)(?=\\s*\\()"
+ },
+ "regexp": {
+ "begin": "(?<=[=(:,\\[]|^|return|&&|\\|\\||!)\\s*(/)(?![/*+{}?])",
+ "end": "$|(/)[igm]*",
+ "name": "string.regex.actionscript.3",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.actionscript.3"
+ },
+ {
+ "match": "\\[(\\\\\\]|[^\\]])*\\]",
+ "name": "constant.character.class.actionscript.3"
+ }
+ ]
+ },
+ "return_type": {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.actionscript.3"
+ },
+ "2": {
+ "name": "support.type.actionscript.3"
+ },
+ "3": {
+ "name": "support.type.actionscript.3"
+ },
+ "4": {
+ "name": "support.type.actionscript.3"
+ }
+ },
+ "match": "(\\:)\\s*(?:([A-Za-z\\$][A-Za-z0-9_\\$]+(?:\\.[A-Za-z\\$][A-Za-z0-9_\\$]+)*)(?:\\.<([A-Za-z\\$][A-Za-z0-9_\\$]+(?:\\.[A-Za-z\\$][A-Za-z0-9_\\$]+)*)>)?)|(\\*)"
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "end": "\"",
+ "name": "string.quoted.double.actionscript.3",
+ "patterns": [
+ {
+ "include": "#escapes"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "end": "'",
+ "name": "string.quoted.single.actionscript.3",
+ "patterns": [
+ {
+ "include": "#escapes"
+ }
+ ]
+ }
+ ]
+ },
+ "metadata": {
+ "begin": "\\[\\s*\\b(\\w+)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.actionscript.3"
+ }
+ },
+ "end": "\\]",
+ "name": "meta.metadata_info.actionscript.3",
+ "patterns": [
+ {
+ "include": "#metadata_info"
+ }
+ ]
+ },
+ "use_namespace": {
+ "captures": {
+ "2": {
+ "name": "keyword.other.actionscript.3"
+ },
+ "3": {
+ "name": "keyword.other.actionscript.3"
+ },
+ "4": {
+ "name": "storage.modifier.actionscript.3"
+ }
+ },
+ "match": "(?x) (^|\\s+|;) (use\\s+)? (namespace) \\s+ (\\w+) \\s* (;|$)"
+ },
+ "variable_declaration": {
+ "captures": {
+ "2": {
+ "name": "storage.modifier.actionscript.3"
+ },
+ "4": {
+ "name": "storage.modifier.actionscript.3"
+ },
+ "6": {
+ "name": "storage.modifier.actionscript.3"
+ },
+ "7": {
+ "name": "storage.modifier.actionscript.3"
+ },
+ "8": {
+ "name": "keyword.operator.actionscript.3"
+ }
+ },
+ "match": "(?x) ((static)\\s+)? ((\\w+)\\s+)? ((static)\\s+)? (const|var) \\s+ (?:[A-Za-z0-9_\\$]+)(?:\\s*(:))?",
+ "name": "meta.variable_declaration.actionscript.3"
+ },
+ "vector_creation_operators": {
+ "match": "(<|>)",
+ "name": "keyword.operator.actionscript.3"
+ }
+ },
+ "scopeName": "source.actionscript.3",
+ "uuid": "aa6f75ba-ab10-466e-8c6f-28c69aca1e9d"
+}
diff --git a/node_modules/shiki/languages/ada.tmLanguage.json b/node_modules/shiki/languages/ada.tmLanguage.json
new file mode 100644
index 0000000..2c7ddf5
--- /dev/null
+++ b/node_modules/shiki/languages/ada.tmLanguage.json
@@ -0,0 +1,3871 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "name": "ada",
+ "patterns": [
+ {
+ "include": "#library_unit"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#use_clause"
+ },
+ {
+ "include": "#with_clause"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "#keyword"
+ }
+ ],
+ "repository": {
+ "abort_statement": {
+ "name": "meta.statement.abort.ada",
+ "begin": "(?i)\\babort\\b",
+ "end": ";",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": ","
+ },
+ {
+ "name": "entity.name.task.ada",
+ "match": "\\b(\\w|\\d|\\.|_)+\\b"
+ }
+ ]
+ },
+ "accept_statement": {
+ "name": "meta.statement.accept.ada",
+ "begin": "(?i)\\b(accept)\\s+((?:\\w|\\d|\\.|_)+)\\b",
+ "end": "(?i)(?:\\b(end)\\s*(\\s\\2)?\\s*)?(;)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.ada"
+ },
+ "2": {
+ "name": "entity.name.accept.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.ada"
+ },
+ "2": {
+ "name": "entity.name.accept.ada"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bdo\\b",
+ "end": "(?i)\\b(?=end)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ {
+ "include": "#parameter_profile"
+ }
+ ]
+ },
+ "access_definition": {
+ "name": "meta.declaration.access.definition.ada",
+ "match": "(?i)(not\\s+null\\s+)?(access)\\s+(constant\\s+)?((?:\\w|\\d|\\.|_)+)\\b",
+ "captures": {
+ "1": {
+ "name": "storage.visibility.ada"
+ },
+ "2": {
+ "name": "storage.visibility.ada"
+ },
+ "3": {
+ "name": "storage.modifier.ada"
+ },
+ "4": {
+ "name": "entity.name.type.ada"
+ }
+ }
+ },
+ "access_type_definition": {
+ "name": "meta.declaration.type.definition.access.ada",
+ "begin": "(?i)\\b(not\\s+null\\s+)?(access)\\b",
+ "end": "(?i)(?=(with|;))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.visibility.ada"
+ },
+ "2": {
+ "name": "storage.visibility.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "storage.visibility.ada",
+ "match": "(?i)\\ball\\b"
+ },
+ {
+ "name": "storage.modifier.ada",
+ "match": "(?i)\\bconstant\\b"
+ },
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ },
+ "actual_parameter_part": {
+ "begin": "\\(",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": ","
+ },
+ {
+ "include": "#parameter_association"
+ }
+ ]
+ },
+ "adding_operator": {
+ "name": "keyword.operator.adding.ada",
+ "match": "(\\+|-|\\&)"
+ },
+ "array_aggregate": {
+ "name": "meta.definition.array.aggregate.ada",
+ "begin": "\\(",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": ","
+ },
+ {
+ "include": "#positional_array_aggregate"
+ },
+ {
+ "include": "#array_component_association"
+ }
+ ]
+ },
+ "array_component_association": {
+ "name": "meta.definition.array.aggregate.component.ada",
+ "match": "(?i)\\b([^(=>)]*)\\s*(=>)\\s*([^,\\)]+)",
+ "captures": {
+ "1": {
+ "name": "variable.name.ada"
+ },
+ "2": {
+ "name": "keyword.other.ada"
+ },
+ "3": {
+ "patterns": [
+ {
+ "name": "keyword.modifier.unknown.ada",
+ "match": "<>"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ }
+ },
+ "array_dimensions": {
+ "name": "meta.declaration.type.definition.array.dimensions.ada",
+ "begin": "\\(",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": ","
+ },
+ {
+ "name": "storage.modifier.ada",
+ "match": "(?i)\\brange\\b"
+ },
+ {
+ "name": "keyword.modifier.unknown.ada",
+ "match": "<>"
+ },
+ {
+ "name": "keyword.ada",
+ "match": "\\.\\."
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "patterns": [
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ }
+ ]
+ },
+ "array_type_definition": {
+ "name": "meta.declaration.type.definition.array.ada",
+ "begin": "(?i)\\barray\\b",
+ "end": "(?i)(?=(with|;))",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.modifier.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#array_dimensions"
+ },
+ {
+ "name": "storage.modifier.ada",
+ "match": "(?i)\\bof\\b"
+ },
+ {
+ "name": "storage.visibility.ada",
+ "match": "(?i)\\baliased\\b"
+ },
+ {
+ "include": "#access_definition"
+ },
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ },
+ "aspect_clause": {
+ "name": "meta.aspect.clause.ada",
+ "begin": "(?i)\\b(for)\\b",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.ada"
+ },
+ "5": {
+ "name": "keyword.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\buse\\b",
+ "end": "(?=;)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#record_representation_clause"
+ },
+ {
+ "include": "#array_aggregate"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?<=for)",
+ "end": "(?i)(?=use)",
+ "captures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "match": "((?:\\w|\\d|_)+)('((?:\\w|\\d|_)+))?",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "aspect_definition": {
+ "name": "meta.aspect.definition.ada",
+ "begin": "=>",
+ "end": "(?i)(?=(,|;|\\bis\\b))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "aspect_mark": {
+ "name": "meta.aspect.mark.ada",
+ "match": "(?i)\\b((?:\\w|\\d|\\.|_)+)(?:(')(class))?\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.directive.ada"
+ },
+ "2": {
+ "name": "punctuation.ada"
+ },
+ "3": {
+ "name": "entity.other.attribute-name.ada"
+ }
+ }
+ },
+ "aspect_specification": {
+ "name": "meta.aspect.specification.ada",
+ "begin": "(?i)\\bwith\\b",
+ "end": "(?i)(?=(;|\\bis\\b))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": ","
+ },
+ {
+ "match": "(?i)\\b(null)\\s+(record)\\b",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.ada"
+ },
+ "2": {
+ "name": "storage.modifier.ada"
+ }
+ }
+ },
+ {
+ "begin": "(?i)\\brecord\\b",
+ "end": "(?i)\\b(end)\\s+(record)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.modifier.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "storage.modifier.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#component_item"
+ }
+ ]
+ },
+ {
+ "match": "(?i)\\bprivate\\b",
+ "captures": {
+ "0": {
+ "name": "storage.visibility.ada"
+ }
+ }
+ },
+ {
+ "include": "#aspect_definition"
+ },
+ {
+ "include": "#aspect_mark"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "assignment_statement": {
+ "name": "meta.statement.assignment.ada",
+ "begin": "\\b((?:\\w|\\d|\\.|_|\\(|\\)|\"|'|\\s)+)\\s*(:=)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "((?:\\w|\\d|\\.|_)+)",
+ "name": "variable.name.ada"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.operator.new.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "attribute": {
+ "name": "meta.attribute.ada",
+ "match": "(')((?:\\w|\\d|_)+)\\b",
+ "captures": {
+ "1": {
+ "name": "punctuation.ada"
+ },
+ "2": {
+ "name": "entity.other.attribute-name.ada"
+ }
+ }
+ },
+ "based_literal": {
+ "name": "constant.numeric.ada",
+ "match": "(?i)(\\d(?:(_)?\\d)*#)[0-9a-f](?:(_)?[0-9a-f])*(?:(\\.)[0-9a-f](?:(_)?[0-9a-f])*)?(#)([eE](?:\\+|\\-)?\\d(?:_?\\d)*)?",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.base.ada"
+ },
+ "2": {
+ "name": "punctuation.ada"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ },
+ "4": {
+ "name": "punctuation.radix-point.ada"
+ },
+ "5": {
+ "name": "punctuation.ada"
+ },
+ "6": {
+ "name": "constant.numeric.base.ada"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#exponent_part"
+ }
+ ]
+ }
+ }
+ },
+ "basic_declarative_item": {
+ "patterns": [
+ {
+ "include": "#basic_declaration"
+ },
+ {
+ "include": "#aspect_clause"
+ },
+ {
+ "include": "#use_clause"
+ },
+ {
+ "include": "#keyword"
+ }
+ ]
+ },
+ "basic_declaration": {
+ "patterns": [
+ {
+ "include": "#type_declaration"
+ },
+ {
+ "include": "#subtype_declaration"
+ },
+ {
+ "include": "#exception_declaration"
+ },
+ {
+ "include": "#object_declaration"
+ },
+ {
+ "include": "#single_protected_declaration"
+ },
+ {
+ "include": "#single_task_declaration"
+ },
+ {
+ "include": "#subprogram_specification"
+ },
+ {
+ "include": "#package_declaration"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "block_statement": {
+ "name": "meta.statement.block.ada",
+ "begin": "(?i)\\bdeclare\\b",
+ "end": "(?i)\\b(end)(\\s+(?:\\w|\\d|_)+)?\\s*(;)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "entity.name.label.ada"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)(?<=declare)",
+ "end": "(?i)\\bbegin\\b",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#body"
+ },
+ {
+ "include": "#basic_declarative_item"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?<=begin)",
+ "end": "(?i)(?=end)",
+ "patterns": [
+ {
+ "include": "#statement"
+ }
+ ]
+ }
+ ]
+ },
+ "body": {
+ "patterns": [
+ {
+ "include": "#subprogram_body"
+ },
+ {
+ "include": "#package_body"
+ },
+ {
+ "include": "#task_body"
+ },
+ {
+ "include": "#protected_body"
+ }
+ ]
+ },
+ "case_statement": {
+ "name": "meta.statement.case.ada",
+ "begin": "(?i)\\bcase\\b",
+ "end": "(?i)\\b(end)\\s+(case)\\s*(;)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.ada"
+ },
+ "2": {
+ "name": "keyword.control.ada"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)(?<=case)\\b",
+ "end": "(?i)\\bis\\b",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "meta.statement.case.alternative.ada",
+ "begin": "(?i)\\bwhen\\b",
+ "end": "=>",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.modifier.unknown.ada",
+ "match": "(?i)\\bothers\\b"
+ },
+ {
+ "name": "punctuation.ada",
+ "match": "\\|"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "character_literal": {
+ "name": "string.quoted.single.ada",
+ "match": "'.'",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "name": "punctuation.definition.string.ada",
+ "match": "'"
+ }
+ ]
+ }
+ }
+ },
+ "comment": {
+ "patterns": [
+ {
+ "include": "#preprocessor"
+ },
+ {
+ "include": "#comment-section"
+ },
+ {
+ "include": "#comment-doc"
+ },
+ {
+ "include": "#comment-line"
+ }
+ ]
+ },
+ "comment-doc": {
+ "name": "comment.block.documentation.ada",
+ "match": "(--)\\s*(@)(\\w+)\\s+(.*)$",
+ "captures": {
+ "1": {
+ "name": "comment.line.double-dash.ada"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.ada"
+ },
+ "3": {
+ "name": "entity.name.tag.ada"
+ },
+ "4": {
+ "name": "comment.line.double-dash.ada"
+ }
+ }
+ },
+ "comment-line": {
+ "name": "comment.line.double-dash.ada",
+ "match": "--.*$"
+ },
+ "comment-section": {
+ "name": "comment.line.double-dash.ada",
+ "match": "--\\s*([^-].*?[^-])\\s*--\\s*$",
+ "captures": {
+ "1": {
+ "name": "entity.name.section.ada"
+ }
+ }
+ },
+ "component_clause": {
+ "name": "meta.aspect.clause.record.representation.component.ada",
+ "begin": "(?i)\\b((?:\\w|\\d|_)+)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.name.ada"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bat\\b",
+ "end": "(?i)\\b(?=range)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.modifier.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#range_constraint"
+ }
+ ]
+ },
+ "component_declaration": {
+ "name": "meta.declaration.type.definition.record.component.ada",
+ "begin": "(?i)\\b((?:\\w|\\d|_)+(?:\\s*,\\s*(?:\\w|\\d|_)+)?)\\s*(:)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": ","
+ },
+ {
+ "name": "variable.name.ada",
+ "match": "\\b(\\w|\\d|_)+\\b"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "patterns": [
+ {
+ "name": "keyword.operator.new.ada",
+ "match": ":="
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#component_definition"
+ }
+ ]
+ },
+ "component_definition": {
+ "patterns": [
+ {
+ "name": "storage.visibility.ada",
+ "match": "(?i)\\baliased\\b"
+ },
+ {
+ "name": "storage.modifier.ada",
+ "match": "(?i)\\brange\\b"
+ },
+ {
+ "name": "keyword.ada",
+ "match": "\\.\\."
+ },
+ {
+ "include": "#access_definition"
+ },
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ },
+ "component_item": {
+ "patterns": [
+ {
+ "include": "#component_declaration"
+ },
+ {
+ "include": "#variant_part"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#aspect_clause"
+ },
+ {
+ "match": "(?i)\\b(null)\\s*(;)",
+ "captures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "punctuation.ada"
+ }
+ }
+ }
+ ]
+ },
+ "composite_constraint": {
+ "name": "meta.declaration.constraint.composite.ada",
+ "begin": "\\(",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": ","
+ },
+ {
+ "name": "keyword.ada",
+ "match": "\\.\\."
+ },
+ {
+ "match": "(?i)\\b((?:\\w|\\d|_)+)\\s*(=>)\\s*([^,\\)])+\\b",
+ "captures": {
+ "1": {
+ "name": "variable.name.ada"
+ },
+ "2": {
+ "name": "keyword.other.ada"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "decimal_literal": {
+ "name": "constant.numeric.ada",
+ "match": "\\d(?:(_)?\\d)*(?:(\\.)\\d(?:(_)?\\d)*)?([eE](?:\\+|\\-)?\\d(?:_?\\d)*)?",
+ "captures": {
+ "1": {
+ "name": "punctuation.ada"
+ },
+ "2": {
+ "name": "punctuation.radix-point.ada"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#exponent_part"
+ }
+ ]
+ }
+ }
+ },
+ "declarative_item": {
+ "patterns": [
+ {
+ "include": "#body"
+ },
+ {
+ "include": "#basic_declarative_item"
+ }
+ ]
+ },
+ "delay_statement": {
+ "patterns": [
+ {
+ "include": "#delay_until_statement"
+ },
+ {
+ "include": "#delay_relative_statement"
+ }
+ ]
+ },
+ "delay_until_statement": {
+ "name": "meta.statement.delay.until.ada",
+ "begin": "(?i)\\b(delay)\\s+(until)\\b",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.ada"
+ },
+ "2": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "delay_relative_statement": {
+ "begin": "(?i)\\b(delay)\\b",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "derived_type_definition": {
+ "name": "meta.declaration.type.definition.derived.ada",
+ "patterns": [
+ {
+ "begin": "(?i)\\bnew\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.modifier.ada"
+ }
+ },
+ "end": "(?i)(?=(\\bwith\\b|;))",
+ "patterns": [
+ {
+ "name": "storage.modifier.ada",
+ "match": "(?i)\\band\\b"
+ },
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ },
+ {
+ "name": "storage.modifier.ada",
+ "match": "(?i)\\b(abstract|and|limited|tagged)\\b"
+ },
+ {
+ "name": "storage.visibility.ada",
+ "match": "(?i)\\bprivate\\b"
+ },
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ },
+ "discriminant_specification": {
+ "begin": "(?i)\\b((?:\\w|\\d|_)+(?:\\s*,\\s*(?:\\w|\\d|_)+)?)\\s*(:)",
+ "end": "(?=(;|\\)))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": ","
+ },
+ {
+ "name": "variable.name.ada",
+ "match": "\\b(\\w|\\d|_)+\\b"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": ":=",
+ "end": "(?=(;|\\)))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.new.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "match": "(?i)(not\\s+null\\s+)?((?:\\w|\\d|\\.|_)+)\\b",
+ "captures": {
+ "1": {
+ "name": "storage.visibility.ada"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "#access_definition"
+ }
+ ]
+ },
+ "entry_body": {
+ "begin": "(?i)\\b(entry)\\s+((?:\\w|\\d|_)+)\\b",
+ "end": "(?i)\\b(end)\\s*(\\s\\2)\\s*(;)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "entity.name.entry.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "entity.name.entry.ada"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bis\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "end": "(?i)\\b(?=begin)\\b",
+ "patterns": [
+ {
+ "include": "#declarative_item"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)\\bbegin\\b",
+ "end": "(?i)\\b(?=end)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)\\bwhen\\b",
+ "end": "(?i)\\b(?=is)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#parameter_profile"
+ }
+ ]
+ },
+ "entry_declaration": {
+ "begin": "(?i)\\b(?:(not)?\\s+(overriding)\\s+)?(entry)\\s+((?:\\w|\\d|_)+)\\b",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ada"
+ },
+ "2": {
+ "name": "storage.modifier.ada"
+ },
+ "3": {
+ "name": "keyword.ada"
+ },
+ "4": {
+ "name": "entity.name.entry.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter_profile"
+ }
+ ]
+ },
+ "enumeration_type_definition": {
+ "name": "meta.declaration.type.definition.enumeration.ada",
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": ","
+ },
+ {
+ "name": "variable.name.ada",
+ "match": "\\b(\\w|\\d|_)+\\b"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "exception_declaration": {
+ "name": "meta.declaration.exception.ada",
+ "begin": "(?i)\\b((?:\\w|\\d|_)+(?:\\s*,\\s*(?:\\w|\\d|_)+)?)\\s*(:)\\s*(exception)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": ","
+ },
+ {
+ "name": "entity.name.exception.ada",
+ "match": "\\b(\\w|\\d|_)+\\b"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.ada"
+ },
+ "3": {
+ "name": "storage.type.ada"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?i)\\b(renames)\\s+((\\w|\\d|_|\\.)+)",
+ "name": "entity.name.exception.ada"
+ }
+ ]
+ },
+ "exit_statement": {
+ "name": "meta.statement.exit.ada",
+ "begin": "(?i)\\bexit\\b",
+ "end": ";",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bwhen\\b",
+ "end": "(?=;)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "match": "(?:\\w|\\d|_)+",
+ "name": "entity.name.label.ada"
+ }
+ ]
+ },
+ "exponent_part": {
+ "match": "([eE])(\\+|\\-)?\\d(?:(_)?\\d)*",
+ "captures": {
+ "1": {
+ "name": "punctuation.exponent-mark.ada"
+ },
+ "2": {
+ "name": "keyword.operator.unary.ada"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ }
+ },
+ "expression": {
+ "name": "meta.expression.ada",
+ "patterns": [
+ {
+ "match": "(?i)\\bnull\\b",
+ "name": "constant.language.ada"
+ },
+ {
+ "match": "=>(\\+)?",
+ "name": "keyword.other.ada"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "match": ",",
+ "name": "punctuation.ada"
+ },
+ {
+ "match": "\\.\\.",
+ "name": "keyword.ada"
+ },
+ {
+ "include": "#value"
+ },
+ {
+ "include": "#attribute"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "match": "(?i)\\b(and|or|xor)\\b",
+ "name": "keyword.ada"
+ },
+ {
+ "match": "(?i)\\b(if|then|else|elsif|in|for|(?<!\\.)all|some|\\.\\.|delta|with)\\b",
+ "name": "keyword.ada"
+ }
+ ]
+ },
+ "for_loop_statement": {
+ "name": "meta.statement.loop.for.ada",
+ "begin": "(?i)\\bfor\\b",
+ "end": "(?i)\\b(end)\\s+(loop)(\\s+(?:\\w|\\d|_)+)?\\s*(;)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.ada"
+ },
+ "2": {
+ "name": "keyword.control.ada"
+ },
+ "3": {
+ "name": "entity.name.label.ada"
+ },
+ "4": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)(?<=for)",
+ "end": "(?i)\\bloop\\b",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?i)\\b((?:\\w|\\d|_)+)\\s+(in)(\\s+reverse)?\\b",
+ "captures": {
+ "1": {
+ "name": "variable.name.ada"
+ },
+ "2": {
+ "name": "keyword.control.ada"
+ },
+ "3": {
+ "name": "keyword.control.ada"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b((?:\\w|\\d|_)+)(?:\\s*(:)\\s*((?:\\w|\\d|\\.|_)+))?\\s+(of)(\\s+reverse)?\\b",
+ "captures": {
+ "1": {
+ "name": "variable.name.ada"
+ },
+ "2": {
+ "name": "punctuation.ada"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ },
+ "4": {
+ "name": "keyword.control.ada"
+ },
+ "5": {
+ "name": "keyword.control.ada"
+ }
+ }
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "full_type_declaration": {
+ "patterns": [
+ {
+ "include": "#task_type_declaration"
+ },
+ {
+ "include": "#regular_type_declaration"
+ }
+ ]
+ },
+ "function_body": {
+ "name": "meta.declaration.function.body.ada",
+ "begin": "(?i)\\b(overriding\\s+)?(function)\\s+(?:((?:\\w|\\d|\\.|_)+\\b)|(\".+\"))",
+ "end": "(?i)(?:\\b(end)\\s+(\\3|\\4)\\s*)?(;)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.visibility.ada"
+ },
+ "2": {
+ "name": "keyword.ada"
+ },
+ "3": {
+ "name": "entity.name.function.ada"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#string_literal"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "entity.name.function.ada"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bbegin\\b",
+ "end": "(?i)(?=end)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#handled_sequence_of_statements"
+ }
+ ]
+ },
+ {
+ "include": "#aspect_specification"
+ },
+ {
+ "include": "#result_profile"
+ },
+ {
+ "include": "#subprogram_renaming_declaration"
+ },
+ {
+ "include": "#parameter_profile"
+ },
+ {
+ "name": "meta.function.body.spec_part.ada",
+ "begin": "(?i)\\bis\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "end": "(?i)(?=(with|begin|;))",
+ "patterns": [
+ {
+ "name": "meta.declaration.package.generic.ada",
+ "begin": "(?i)\\bnew\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.new.ada"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "match": "((?:\\w|\\d|\\.|_)+)",
+ "name": "entity.name.function.ada"
+ },
+ {
+ "include": "#actual_parameter_part"
+ }
+ ]
+ },
+ {
+ "name": "meta.declaration.function.abstract.ada",
+ "match": "(?i)\\babstract\\b",
+ "captures": {
+ "0": {
+ "name": "storage.modifier.ada"
+ }
+ }
+ },
+ {
+ "include": "#declarative_item"
+ },
+ {
+ "include": "#subprogram_renaming_declaration"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "function_specification": {
+ "patterns": [
+ {
+ "include": "#function_body"
+ }
+ ]
+ },
+ "goto_statement": {
+ "name": "meta.statement.goto.ada",
+ "begin": "(?i)\\bgoto\\b",
+ "end": ";",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.goto.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [{}]
+ },
+ "guard": {
+ "begin": "(?i)\\bwhen\\b",
+ "end": "=>",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "handled_sequence_of_statements": {
+ "patterns": [
+ {
+ "name": "meta.handler.exception.ada",
+ "begin": "(?i)\\bexception\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "end": "(?i)\\b(?=end)\\b",
+ "patterns": [
+ {
+ "begin": "(?i)\\bwhen\\b",
+ "end": "=>",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.ada"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\b((?:\\w|\\d|\\.|_)+)\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "variable.name.ada"
+ },
+ "2": {
+ "name": "punctuation.ada"
+ }
+ }
+ },
+ {
+ "match": "\\|",
+ "name": "punctuation.ada"
+ },
+ {
+ "match": "(?i)\\bothers\\b",
+ "name": "keyword.ada"
+ },
+ {
+ "match": "(?:\\w|\\d|\\.|_)+",
+ "name": "entity.name.exception.ada"
+ }
+ ]
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "highest_precedence_operator": {
+ "name": "keyword.operator.highest-precedence.ada",
+ "match": "(?i)(\\*\\*|\\babs\\b|\\bnot\\b)"
+ },
+ "if_statement": {
+ "name": "meta.statement.if.ada",
+ "begin": "(?i)\\bif\\b",
+ "end": "(?i)\\b(end)\\s+(if)\\s*(;)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.ada"
+ },
+ "2": {
+ "name": "keyword.control.ada"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\belsif\\b",
+ "end": "(?i)(?:(?<!\\sand)\\s+(?=then))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)\\belse\\b",
+ "end": "(?i)(?=end)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?<=if)\\b",
+ "end": "(?i)(?:(?<!\\sand)\\s+(?=then))",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)\\bthen\\b",
+ "end": "(?i)(?=(elsif|else|end))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#statement"
+ }
+ ]
+ }
+ ]
+ },
+ "integer_type_definition": {
+ "name": "meta.declaration.type.definition.integer.ada",
+ "patterns": [
+ {
+ "include": "#signed_integer_type_definition"
+ },
+ {
+ "include": "#modular_type_definition"
+ }
+ ]
+ },
+ "interface_type_definition": {
+ "name": "meta.declaration.type.definition.interface.ada",
+ "begin": "(?i)\\b(?:(limited|task|protected|synchronized)\\s+)?(interface)",
+ "end": "(?i)(?=(with|;))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ada"
+ },
+ "2": {
+ "name": "storage.modifier.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "storage.modifier.ada",
+ "match": "(?i)\\band\\b"
+ },
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ },
+ "keyword": {
+ "patterns": [
+ {
+ "name": "keyword.ada",
+ "match": "(?i)\\b(abort|abs|accept|all|and|at|begin|body|declare|delay|end|entry|exception|function|generic|in|is|mod|new|not|null|of|or|others|out|package|pragma|procedure|range|record|rem|renames|requeue|reverse|select|separate|some|subtype|then|type|use|when|with|xor)\\b"
+ },
+ {
+ "name": "keyword.control.ada",
+ "match": "(?i)\\b(case|do|else|elsif|exit|for|goto|if|loop|raise|return|terminate|until|while)\\b"
+ },
+ {
+ "name": "storage.modifier.ada",
+ "match": "(?i)\\b(abstract|access|aliased|array|constant|delta|digits|interface|limited|protected|synchronized|tagged|task)\\b"
+ },
+ {
+ "name": "storage.visibility.ada",
+ "match": "(?i)\\b(private|overriding)\\b"
+ },
+ {
+ "name": "keyword.modifier.unknown.ada",
+ "match": "<>"
+ },
+ {
+ "name": "keyword.operator.arithmetic.ada",
+ "match": "(\\+|-|\\*|/)"
+ },
+ {
+ "name": "keyword.operator.assignment.ada",
+ "match": ":="
+ },
+ {
+ "name": "keyword.operator.logic.ada",
+ "match": "(=|/=|<|>|<=|>=)"
+ },
+ {
+ "name": "keyword.operator.concatenation.ada",
+ "match": "\\&"
+ }
+ ]
+ },
+ "known_discriminant_part": {
+ "name": "meta.declaration.type.discriminant.ada",
+ "begin": "\\(",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": ";"
+ },
+ {
+ "include": "#discriminant_specification"
+ }
+ ]
+ },
+ "label": {
+ "name": "meta.label.ada",
+ "match": "(<<)?((?:\\w|\\d|_)+)\\s*(:[^=]|>>)",
+ "captures": {
+ "1": {
+ "name": "punctuation.label.ada"
+ },
+ "2": {
+ "name": "entity.name.label.ada"
+ },
+ "3": {
+ "name": "punctuation.label.ada"
+ }
+ }
+ },
+ "library_unit": {
+ "name": "meta.library.unit.ada",
+ "patterns": [
+ {
+ "include": "#package_body"
+ },
+ {
+ "include": "#package_specification"
+ },
+ {
+ "include": "#subprogram_body"
+ }
+ ]
+ },
+ "loop_statement": {
+ "patterns": [
+ {
+ "include": "#simple_loop_statement"
+ },
+ {
+ "include": "#while_loop_statement"
+ },
+ {
+ "include": "#for_loop_statement"
+ }
+ ]
+ },
+ "modular_type_definition": {
+ "begin": "(?i)\\b(mod)\\b",
+ "end": "(?i)(?=(with|;))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.modifier.unknown.ada",
+ "match": "<>"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "multiplying_operator": {
+ "name": "keyword.operator.multiplying.ada",
+ "match": "(?i)(\\*|/|\\bmod\\b|\\brem\\b)"
+ },
+ "null_statement": {
+ "name": "meta.statement.null.ada",
+ "match": "(?i)\\b(null)\\s*(;)",
+ "captures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "punctuation.ada"
+ }
+ }
+ },
+ "object_declaration": {
+ "name": "meta.declaration.object.ada",
+ "begin": "(?i)\\b((?:\\w|\\d|_)+(?:\\s*,\\s*(?:\\w|\\d|_)+)*)\\s*(:)",
+ "end": "(;)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": ","
+ },
+ {
+ "name": "variable.name.ada",
+ "match": "\\b(\\w|\\d|_)+\\b"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?<=:)",
+ "end": "(?:(?=;)|(:=)|(\\brenames\\b))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.new.ada"
+ },
+ "2": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "storage.modifier.ada",
+ "match": "(?i)\\bconstant\\b"
+ },
+ {
+ "name": "storage.visibility.ada",
+ "match": "(?i)\\baliased\\b"
+ },
+ {
+ "include": "#aspect_specification"
+ },
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=:=)",
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#aspect_specification"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=renames)",
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#aspect_specification"
+ }
+ ]
+ }
+ ]
+ },
+ "operator": {
+ "patterns": [
+ {
+ "include": "#highest_precedence_operator"
+ },
+ {
+ "include": "#multiplying_operator"
+ },
+ {
+ "include": "#adding_operator"
+ },
+ {
+ "include": "#relational_operator"
+ },
+ {
+ "include": "#logical_operator"
+ }
+ ]
+ },
+ "package_body": {
+ "name": "meta.declaration.package.body.ada",
+ "begin": "(?i)\\b(package)\\s+(body)\\s+((?:\\w|\\d|\\.|_)+)\\b",
+ "end": "(?i)\\b(end)\\s+(\\3)\\s*(;)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "keyword.ada"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#package_mark"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#package_mark"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bbegin\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "end": "(?i)\\b(?=end)\\b",
+ "patterns": [
+ {
+ "include": "#handled_sequence_of_statements"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)\\bis\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "end": "(?i)(?=(\\bbegin\\b|\\bend\\b))",
+ "patterns": [
+ {
+ "match": "(?i)\\bprivate\\b",
+ "name": "keyword.ada"
+ },
+ {
+ "include": "#declarative_item"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "include": "#aspect_specification"
+ }
+ ]
+ },
+ "package_declaration": {
+ "patterns": [
+ {
+ "include": "#package_specification"
+ }
+ ]
+ },
+ "package_mark": {
+ "name": "entity.name.package.ada",
+ "match": "\\b(\\w|\\d|\\.|_)+\\b"
+ },
+ "package_specification": {
+ "name": "meta.declaration.package.specification.ada",
+ "begin": "(?i)\\b(package)\\s+((?:\\w|\\d|\\.|_)+)\\b",
+ "end": "(?i)(?:\\b(end)\\s+(\\2)\\s*)?(;)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#package_mark"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#package_mark"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bis\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "end": "(?=(end|;))",
+ "patterns": [
+ {
+ "name": "meta.declaration.package.generic.ada",
+ "begin": "(?i)\\bnew\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.new.ada"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#package_mark"
+ },
+ {
+ "include": "#actual_parameter_part"
+ }
+ ]
+ },
+ {
+ "match": "(?i)\\bprivate\\b",
+ "name": "keyword.ada"
+ },
+ {
+ "include": "#basic_declarative_item"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "include": "#aspect_specification"
+ }
+ ]
+ },
+ "parameter_association": {
+ "patterns": [
+ {
+ "match": "((?:\\w|\\d|_)+)\\s*(=>)",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.ada"
+ },
+ "2": {
+ "name": "keyword.other.ada"
+ }
+ }
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "parameter_profile": {
+ "begin": "\\(",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": ";"
+ },
+ {
+ "include": "#parameter_specification"
+ }
+ ]
+ },
+ "parameter_specification": {
+ "patterns": [
+ {
+ "name": "meta.type.annotation.ada",
+ "begin": ":(?!=)",
+ "end": "(?=[:;)])",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.ada",
+ "match": "(?i)\\b(in|out)\\b"
+ },
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ },
+ {
+ "begin": ":=",
+ "end": "(?=[:;)])",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.new.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "punctuation.ada",
+ "match": ","
+ },
+ {
+ "name": "variable.parameter.ada",
+ "match": "\\b(?:\\w|\\d|\\.|_)+\\b"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "pragma": {
+ "name": "meta.pragma.ada",
+ "begin": "(?i)\\b(pragma)\\s+((?:\\w|\\d|_)+)\\b",
+ "end": "(;)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "keyword.control.directive.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "preprocessor": {
+ "name": "meta.preprocessor.ada",
+ "patterns": [
+ {
+ "match": "^\\s*(#)(if|elsif)\\s+(.*)$",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.directive.ada"
+ },
+ "2": {
+ "name": "keyword.control.directive.conditional.ada"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "^\\s*(#)(end if)(;)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.directive.ada"
+ },
+ "2": {
+ "name": "keyword.control.directive.conditional"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ }
+ },
+ {
+ "match": "^\\s*(#)(else)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.directive.ada"
+ },
+ "2": {
+ "name": "keyword.control.directive.conditional"
+ }
+ }
+ }
+ ]
+ },
+ "procedure_body": {
+ "name": "meta.declaration.procedure.body.ada",
+ "begin": "(?i)\\b(overriding\\s+)?(procedure)\\s+((?:\\w|\\d|\\.|_)+)\\b",
+ "end": "(?i)(?:\\b(end)\\s+(\\3)\\s*)?(;)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.visibility.ada"
+ },
+ "2": {
+ "name": "keyword.ada"
+ },
+ "3": {
+ "name": "entity.name.function.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "entity.name.function.ada"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bis\\b",
+ "end": "(?i)(?=(with|begin|;))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.declaration.package.generic.ada",
+ "begin": "(?i)\\bnew\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.new.ada"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "match": "((?:\\w|\\d|\\.|_)+)",
+ "name": "entity.name.function.ada"
+ },
+ {
+ "include": "#actual_parameter_part"
+ }
+ ]
+ },
+ {
+ "match": "(?i)\\b(null|abstract)\\b",
+ "name": "storage.modifier.ada"
+ },
+ {
+ "include": "#declarative_item"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)\\bbegin\\b",
+ "end": "(?i)(?=\\bend\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#handled_sequence_of_statements"
+ }
+ ]
+ },
+ {
+ "include": "#subprogram_renaming_declaration"
+ },
+ {
+ "include": "#aspect_specification"
+ },
+ {
+ "include": "#parameter_profile"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "procedure_call_statement": {
+ "name": "meta.statement.call.ada",
+ "begin": "(?i)\\b((?:\\w|\\d|_|\\.)+)\\b",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attribute"
+ },
+ {
+ "include": "#actual_parameter_part"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "procedure_specification": {
+ "patterns": [
+ {
+ "include": "#procedure_body"
+ }
+ ]
+ },
+ "protected_body": {
+ "name": "meta.declaration.procedure.body.ada",
+ "begin": "(?i)\\b(protected)\\s+(body)\\s+((?:\\w|\\d|\\.|_)+)\\b",
+ "end": "(?i)(?:\\b(end)\\s*(\\s\\3)\\s*)(;)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ada"
+ },
+ "2": {
+ "name": "keyword.ada"
+ },
+ "3": {
+ "name": "entity.name.body.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "entity.name.body.ada"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bis\\b",
+ "end": "(?i)\\b(?=end)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#protected_operation_item"
+ }
+ ]
+ }
+ ]
+ },
+ "protected_element_declaration": {
+ "patterns": [
+ {
+ "include": "#subprogram_specification"
+ },
+ {
+ "include": "#aspect_clause"
+ },
+ {
+ "include": "#entry_declaration"
+ },
+ {
+ "include": "#component_declaration"
+ },
+ {
+ "include": "#pragma"
+ }
+ ]
+ },
+ "protected_operation_item": {
+ "patterns": [
+ {
+ "include": "#subprogram_specification"
+ },
+ {
+ "include": "#subprogram_body"
+ },
+ {
+ "include": "#aspect_clause"
+ },
+ {
+ "include": "#entry_body"
+ }
+ ]
+ },
+ "positional_array_aggregate": {
+ "name": "meta.definition.array.aggregate.positional.ada",
+ "patterns": [
+ {
+ "match": "(?i)\\b(others)\\s*(=>)\\s*([^,\\)]+)",
+ "captures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "keyword.other.ada"
+ },
+ "3": {
+ "patterns": [
+ {
+ "name": "keyword.modifier.unknown.ada",
+ "match": "<>"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "raise_statement": {
+ "name": "meta.statement.raise.ada",
+ "begin": "(?i)\\braise\\b",
+ "end": ";",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bwith\\b",
+ "end": "(?=;)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "entity.name.exception.ada",
+ "match": "\\b(\\w|\\d|\\.|_)+\\b"
+ }
+ ]
+ },
+ "raise_expression": {
+ "name": "meta.expression.raise.ada",
+ "begin": "(?i)\\braise\\b",
+ "end": "(?=;)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bwith\\b",
+ "end": "(?=(;|\\))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "entity.name.exception.ada",
+ "match": "\\b(\\w|\\d|_)+\\b"
+ }
+ ]
+ },
+ "range_constraint": {
+ "begin": "(?i)\\brange\\b",
+ "end": "(?=(\\bwith\\b|;))",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.modifier.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.ada",
+ "match": "\\.\\."
+ },
+ {
+ "name": "keyword.modifier.unknown.ada",
+ "match": "<>"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "relational_operator": {
+ "name": "keyword.operator.relational.ada",
+ "match": "(=|/=|<|<=|>|>=)"
+ },
+ "record_representation_clause": {
+ "name": "meta.aspect.clause.record.representation.ada",
+ "begin": "(?i)\\b(record)\\b",
+ "end": "(?i)\\b(end)\\s+(record)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "storage.modifier.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#component_clause"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "real_type_definition": {
+ "name": "meta.declaration.type.definition.real-type.ada",
+ "patterns": [
+ {
+ "include": "#scalar_constraint"
+ }
+ ]
+ },
+ "record_type_definition": {
+ "patterns": [
+ {
+ "name": "meta.declaration.type.definition.record.null.ada",
+ "match": "(?i)\\b(?:(abstract)\\s+)?(?:(tagged)\\s+)?(?:(limited)\\s+)?(null)\\s+(record)\\b",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.ada"
+ },
+ "2": {
+ "name": "storage.modifier.ada"
+ },
+ "3": {
+ "name": "storage.modifier.ada"
+ },
+ "4": {
+ "name": "storage.modifier.ada"
+ },
+ "5": {
+ "name": "storage.modifier.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#component_item"
+ }
+ ]
+ },
+ {
+ "name": "meta.declaration.type.definition.record.ada",
+ "begin": "(?i)\\b(?:(abstract)\\s+)?(?:(tagged)\\s+)?(?:(limited)\\s+)?(record)\\b",
+ "end": "(?i)\\b(end)\\s+(record)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ada"
+ },
+ "2": {
+ "name": "storage.modifier.ada"
+ },
+ "3": {
+ "name": "storage.modifier.ada"
+ },
+ "4": {
+ "name": "storage.modifier.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "storage.modifier.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#component_item"
+ }
+ ]
+ }
+ ]
+ },
+ "regular_type_declaration": {
+ "name": "meta.declaration.type.definition.regular.ada",
+ "begin": "(?i)\\b(type)\\b",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bis\\b",
+ "end": "(?i)(?=(with(?!\\s+(private))|;))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type_definition"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)\\b(?<=type)\\b",
+ "end": "(?i)(?=(is|;))",
+ "patterns": [
+ {
+ "include": "#known_discriminant_part"
+ },
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ },
+ {
+ "include": "#aspect_specification"
+ }
+ ]
+ },
+ "requeue_statement": {
+ "name": "meta.statement.requeue.ada",
+ "begin": "(?i)\\brequeue\\b",
+ "end": ";",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.control.ada",
+ "match": "(?i)\\b(with|abort)\\b"
+ },
+ {
+ "name": "entity.name.function.ada",
+ "match": "\\b(\\w|\\d|\\.|_)+\\b"
+ }
+ ]
+ },
+ "result_profile": {
+ "begin": "(?i)\\breturn\\b",
+ "end": "(?=(is|with|renames|;))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ },
+ "return_statement": {
+ "name": "meta.statement.return.ada",
+ "begin": "(?i)\\breturn\\b",
+ "end": ";",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bdo\\b",
+ "end": "(?i)\\b(end)\\s+(return)\\s*(?=;)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.ada"
+ },
+ "2": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#label"
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ {
+ "match": "\\b((?:\\w|\\d|_)+)\\s*(:)\\s*((?:\\w|\\d|\\.|_)+)\\b",
+ "captures": {
+ "1": {
+ "name": "variable.name.ada"
+ },
+ "2": {
+ "name": "punctuation.ada"
+ },
+ "3": {
+ "name": "entity.name.type.ada"
+ }
+ }
+ },
+ {
+ "match": ":=",
+ "name": "keyword.operator.new.ada"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "scalar_constraint": {
+ "name": "meta.declaration.constraint.scalar.ada",
+ "patterns": [
+ {
+ "begin": "(?i)\\b(digits|delta)\\b",
+ "end": "(?i)(?=\\brange\\b|\\bdigits\\b|\\bwith\\b|;)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#range_constraint"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "select_alternative": {
+ "patterns": [
+ {
+ "begin": "(?i)\\bterminate\\b",
+ "end": ";",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ }
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "select_statement": {
+ "name": "meta.statement.select.ada",
+ "begin": "(?i)\\bselect\\b",
+ "end": "(?i)\\b(end)\\s+(select)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.ada"
+ },
+ "2": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\b(?:(or)|(?<=select))\\b",
+ "end": "(?i)\\b(?=(or|else|end))\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#guard"
+ },
+ {
+ "include": "#select_alternative"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)\\belse\\b",
+ "end": "(?i)\\b(?=end)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#statement"
+ }
+ ]
+ }
+ ]
+ },
+ "signed_integer_type_definition": {
+ "patterns": [
+ {
+ "include": "#range_constraint"
+ }
+ ]
+ },
+ "simple_loop_statement": {
+ "name": "meta.statement.loop.ada",
+ "begin": "(?i)\\bloop\\b",
+ "end": "(?i)\\b(end)\\s+(loop)(\\s+(?:\\w|\\d|_)+)?\\s*(;)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.ada"
+ },
+ "2": {
+ "name": "keyword.control.ada"
+ },
+ "3": {
+ "name": "entity.name.label.ada"
+ },
+ "4": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "single_protected_declaration": {
+ "name": "meta.declaration.protected.ada",
+ "begin": "(?i)\\b(protected)\\s+((?:\\w|\\d|_)+)\\b",
+ "end": "(?i)(?:\\b(end)\\s*(\\s\\2)?\\s*)?(;)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "entity.name.protected.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "entity.name.protected.ada"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bis\\b",
+ "end": "(?i)(?=(\\bend\\b|;))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bnew\\b",
+ "end": "(?i)\\bwith\\b",
+ "captures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?i)\\band\\b",
+ "name": "keyword.ada"
+ },
+ {
+ "include": "#subtype_mark"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "match": "(?i)\\bprivate\\b",
+ "name": "keyword.ada"
+ },
+ {
+ "include": "#protected_element_declaration"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "single_task_declaration": {
+ "begin": "(?i)\\b(task)\\s+((?:\\w|\\d|_)+)\\b",
+ "end": "(?i)(?:\\b(end)\\s*(\\s\\2)?\\s*)?(;)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "entity.name.task.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "entity.name.task.ada"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bis\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "end": "(?i)\\b(?=end)\\b",
+ "patterns": [
+ {
+ "begin": "(?i)\\bnew\\b",
+ "end": "(?i)\\bwith\\b",
+ "captures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?i)\\band\\b",
+ "name": "keyword.ada"
+ },
+ {
+ "include": "#subtype_mark"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "match": "(?i)\\bprivate\\b",
+ "name": "keyword.ada"
+ },
+ {
+ "include": "#task_item"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "statement": {
+ "patterns": [
+ {
+ "begin": "(?i)\\bbegin\\b",
+ "end": "(?i)\\b(end)\\s*(;)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#handled_sequence_of_statements"
+ }
+ ]
+ },
+ {
+ "include": "#label"
+ },
+ {
+ "include": "#null_statement"
+ },
+ {
+ "include": "#return_statement"
+ },
+ {
+ "include": "#assignment_statement"
+ },
+ {
+ "include": "#exit_statement"
+ },
+ {
+ "include": "#goto_statement"
+ },
+ {
+ "include": "#requeue_statement"
+ },
+ {
+ "include": "#delay_statement"
+ },
+ {
+ "include": "#abort_statement"
+ },
+ {
+ "include": "#raise_statement"
+ },
+ {
+ "include": "#if_statement"
+ },
+ {
+ "include": "#case_statement"
+ },
+ {
+ "include": "#loop_statement"
+ },
+ {
+ "include": "#block_statement"
+ },
+ {
+ "include": "#select_statement"
+ },
+ {
+ "include": "#accept_statement"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "#procedure_call_statement"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "string_literal": {
+ "name": "string.quoted.double.ada",
+ "match": "(\").*?(\")",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.ada"
+ },
+ "2": {
+ "name": "punctuation.definition.string.ada"
+ }
+ }
+ },
+ "subprogram_body": {
+ "name": "meta.declaration.subprogram.body.ada",
+ "patterns": [
+ {
+ "include": "#procedure_body"
+ },
+ {
+ "include": "#function_body"
+ }
+ ]
+ },
+ "subprogram_renaming_declaration": {
+ "begin": "(?i)\\brenames\\b",
+ "end": "(?=(with|;))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?:\\w|\\d|_|\\.)+",
+ "name": "entity.name.function.ada"
+ }
+ ]
+ },
+ "subprogram_specification": {
+ "name": "meta.declaration.subprogram.specification.ada",
+ "patterns": [
+ {
+ "include": "#procedure_specification"
+ },
+ {
+ "include": "#function_specification"
+ }
+ ]
+ },
+ "subtype_declaration": {
+ "name": "meta.declaration.subtype.ada",
+ "begin": "(?i)\\bsubtype\\b",
+ "end": ";",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bis\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "name": "storage.modifier.ada",
+ "match": "(?i)\\b(not\\s+null)\\b"
+ },
+ {
+ "include": "#composite_constraint"
+ },
+ {
+ "include": "#aspect_specification"
+ },
+ {
+ "include": "#subtype_indication"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?<=subtype)",
+ "end": "(?i)\\b(?=is)\\b",
+ "patterns": [
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ }
+ ]
+ },
+ "subtype_indication": {
+ "name": "meta.declaration.indication.subtype.ada",
+ "patterns": [
+ {
+ "include": "#scalar_constraint"
+ },
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ },
+ "subtype_mark": {
+ "patterns": [
+ {
+ "name": "storage.visibility.ada",
+ "match": "(?i)\\b(access|aliased|not\\s+null|constant)\\b"
+ },
+ {
+ "include": "#attribute"
+ },
+ {
+ "include": "#actual_parameter_part"
+ },
+ {
+ "begin": "(?i)\\b(procedure|function)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "end": "(?=(;|\\)))",
+ "patterns": [
+ {
+ "include": "#parameter_profile"
+ },
+ {
+ "begin": "(?i)\\breturn\\b",
+ "end": "(?=(;|\\)))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "entity.name.type.ada",
+ "match": "\\b(?:\\w|\\d|\\.|_)+\\b",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": "[_.]"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "task_body": {
+ "name": "meta.declaration.task.body.ada",
+ "begin": "(?i)\\b(task)\\s+(body)\\s+((\\w|\\d|\\.|_)+)\\b",
+ "end": "(?i)(?:\\b(end)\\s*(?:\\s(\\3))?\\s*)?(;)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "keyword.ada"
+ },
+ "3": {
+ "name": "entity.name.task.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "entity.name.task.ada"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\bbegin\\b",
+ "end": "(?i)(?=end)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#handled_sequence_of_statements"
+ }
+ ]
+ },
+ {
+ "include": "#aspect_specification"
+ },
+ {
+ "begin": "(?i)\\bis\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "end": "(?i)(?=(with|begin))",
+ "patterns": [
+ {
+ "include": "#declarative_item"
+ }
+ ]
+ }
+ ]
+ },
+ "task_item": {
+ "patterns": [
+ {
+ "include": "#aspect_clause"
+ },
+ {
+ "include": "#entry_declaration"
+ }
+ ]
+ },
+ "task_type_declaration": {
+ "name": "meta.declaration.type.task.ada",
+ "begin": "(?i)\\b(task)\\s+(type)\\s+((\\w|\\d|\\.|_)+)\\b",
+ "end": "(?i)(?:\\b(end)\\s*(?:\\s(\\3))?\\s*)?(;)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ada"
+ },
+ "2": {
+ "name": "keyword.ada"
+ },
+ "3": {
+ "name": "entity.name.task.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "entity.name.task.ada"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#known_discriminant_part"
+ },
+ {
+ "begin": "(?i)\\bis\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "end": "(?i)\\b(?=end)\\b",
+ "patterns": [
+ {
+ "begin": "(?i)\\bnew\\b",
+ "end": "(?i)\\bwith\\b",
+ "captures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?i)\\band\\b",
+ "name": "keyword.ada"
+ },
+ {
+ "include": "#subtype_mark"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "match": "(?i)\\bprivate\\b",
+ "name": "keyword.ada"
+ },
+ {
+ "include": "#task_item"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "type_declaration": {
+ "name": "meta.declaration.type.ada",
+ "patterns": [
+ {
+ "include": "#full_type_declaration"
+ }
+ ]
+ },
+ "type_definition": {
+ "name": "meta.declaration.type.definition.ada",
+ "patterns": [
+ {
+ "include": "#enumeration_type_definition"
+ },
+ {
+ "include": "#integer_type_definition"
+ },
+ {
+ "include": "#real_type_definition"
+ },
+ {
+ "include": "#array_type_definition"
+ },
+ {
+ "include": "#record_type_definition"
+ },
+ {
+ "include": "#access_type_definition"
+ },
+ {
+ "include": "#interface_type_definition"
+ },
+ {
+ "include": "#derived_type_definition"
+ }
+ ]
+ },
+ "use_clause": {
+ "name": "meta.context.use.ada",
+ "patterns": [
+ {
+ "include": "#use_type_clause"
+ },
+ {
+ "include": "#use_package_clause"
+ }
+ ]
+ },
+ "use_package_clause": {
+ "name": "meta.context.use.package.ada",
+ "begin": "(?i)\\buse\\b",
+ "end": ";",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.using.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": ","
+ },
+ {
+ "include": "#package_mark"
+ }
+ ]
+ },
+ "use_type_clause": {
+ "name": "meta.context.use.type.ada",
+ "begin": "(?i)\\b(use)\\s+(?:(all)\\s+)?(type)\\b",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.using.ada"
+ },
+ "2": {
+ "name": "keyword.modifier.ada"
+ },
+ "3": {
+ "name": "keyword.modifier.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": ","
+ },
+ {
+ "include": "#subtype_mark"
+ }
+ ]
+ },
+ "value": {
+ "patterns": [
+ {
+ "include": "#based_literal"
+ },
+ {
+ "include": "#decimal_literal"
+ },
+ {
+ "include": "#character_literal"
+ },
+ {
+ "include": "#string_literal"
+ }
+ ]
+ },
+ "variant_part": {
+ "name": "meta.declaration.variant.ada",
+ "begin": "(?i)\\bcase\\b",
+ "end": "(?i)\\b(end)\\s+(case);",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.ada"
+ },
+ "2": {
+ "name": "keyword.ada"
+ },
+ "3": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)\\b(?<=case)\\b",
+ "end": "(?i)\\bis\\b",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?:\\w|\\d|_)+",
+ "name": "variable.name.ada"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)\\b(?<=is)\\b",
+ "end": "(?i)\\b(?=end)\\b",
+ "patterns": [
+ {
+ "begin": "(?i)\\bwhen\\b",
+ "end": "=>",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.ada"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\|",
+ "name": "punctuation.ada"
+ },
+ {
+ "match": "(?i)\\bothers\\b",
+ "name": "keyword.ada"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#component_item"
+ }
+ ]
+ }
+ ]
+ },
+ "while_loop_statement": {
+ "name": "meta.statement.loop.while.ada",
+ "begin": "(?i)\\bwhile\\b",
+ "end": "(?i)\\b(end)\\s+(loop)(\\s+(?:\\w|\\d|_)+)?\\s*(;)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.ada"
+ },
+ "2": {
+ "name": "keyword.control.ada"
+ },
+ "3": {
+ "name": "entity.name.label.ada"
+ },
+ "4": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)(?<=while)\\b",
+ "end": "(?i)\\bloop\\b",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.ada"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "with_clause": {
+ "name": "meta.context.with.ada",
+ "begin": "(?i)\\b(?:(limited)\\s+)?(?:(private)\\s+)?(with)\\b",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.modifier.ada"
+ },
+ "2": {
+ "name": "storage.visibility.ada"
+ },
+ "3": {
+ "name": "keyword.other.using.ada"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.ada"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.ada",
+ "match": ","
+ },
+ {
+ "include": "#package_mark"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.ada"
+}
diff --git a/node_modules/shiki/languages/apache.tmLanguage.json b/node_modules/shiki/languages/apache.tmLanguage.json
new file mode 100644
index 0000000..0ed1954
--- /dev/null
+++ b/node_modules/shiki/languages/apache.tmLanguage.json
@@ -0,0 +1,562 @@
+{
+ "fileTypes": [
+ "conf",
+ "CONF",
+ "envvars",
+ "htaccess",
+ "HTACCESS",
+ "htgroups",
+ "HTGROUPS",
+ "htpasswd",
+ "HTPASSWD",
+ ".htaccess",
+ ".HTACCESS",
+ ".htgroups",
+ ".HTGROUPS",
+ ".htpasswd",
+ ".HTPASSWD"
+ ],
+ "name": "apache",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.apacheconf"
+ }
+ },
+ "match": "^(\\s)*(#).*$\\n?",
+ "name": "comment.line.hash.ini"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.apacheconf"
+ },
+ "2": {
+ "name": "entity.tag.apacheconf"
+ },
+ "4": {
+ "name": "string.value.apacheconf"
+ },
+ "5": {
+ "name": "punctuation.definition.tag.apacheconf"
+ }
+ },
+ "match": "(<)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost|Macro|If|Else|ElseIf)(\\s(.+?))?(>)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.apacheconf"
+ },
+ "2": {
+ "name": "entity.tag.apacheconf"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.apacheconf"
+ }
+ },
+ "match": "(</)(Proxy|ProxyMatch|IfVersion|Directory|DirectoryMatch|Files|FilesMatch|IfDefine|IfModule|Limit|LimitExcept|Location|LocationMatch|VirtualHost|Macro|If|Else|ElseIf)(>)"
+ },
+ {
+ "captures": {
+ "3": {
+ "name": "string.regexp.apacheconf"
+ },
+ "4": {
+ "name": "string.replacement.apacheconf"
+ }
+ },
+ "match": "(?<=(Rewrite(Rule|Cond)))\\s+(.+?)\\s+(.+?)($|\\s)"
+ },
+ {
+ "captures": {
+ "2": {
+ "name": "entity.status.apacheconf"
+ },
+ "3": {
+ "name": "string.regexp.apacheconf"
+ },
+ "5": {
+ "name": "string.path.apacheconf"
+ }
+ },
+ "match": "(?<=RedirectMatch)(\\s+(\\d\\d\\d|permanent|temp|seeother|gone))?\\s+(.+?)\\s+((.+?)($|\\s))?"
+ },
+ {
+ "captures": {
+ "2": {
+ "name": "entity.status.apacheconf"
+ },
+ "3": {
+ "name": "string.path.apacheconf"
+ },
+ "5": {
+ "name": "string.path.apacheconf"
+ }
+ },
+ "match": "(?<=Redirect)(\\s+(\\d\\d\\d|permanent|temp|seeother|gone))?\\s+(.+?)\\s+((.+?)($|\\s))?"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "string.regexp.apacheconf"
+ },
+ "3": {
+ "name": "string.path.apacheconf"
+ }
+ },
+ "match": "(?<=ScriptAliasMatch|AliasMatch)\\s+(.+?)\\s+((.+?)\\s)?"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "string.path.apacheconf"
+ },
+ "3": {
+ "name": "string.path.apacheconf"
+ }
+ },
+ "match": "(?<=RedirectPermanent|RedirectTemp|ScriptAlias|Alias)\\s+(.+?)\\s+((.+?)($|\\s))?"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.core.apacheconf"
+ }
+ },
+ "match": "\\b(AcceptPathInfo|AccessFileName|AddDefaultCharset|AddOutputFilterByType|AllowEncodedSlashes|AllowOverride|AuthName|AuthType|CGIMapExtension|ContentDigest|DefaultType|Define|DocumentRoot|EnableMMAP|EnableSendfile|ErrorDocument|ErrorLog|FileETag|ForceType|HostnameLookups|IdentityCheck|Include(Optional)?|KeepAlive|KeepAliveTimeout|LimitInternalRecursion|LimitRequestBody|LimitRequestFields|LimitRequestFieldSize|LimitRequestLine|LimitXMLRequestBody|LogLevel|MaxKeepAliveRequests|Mutex|NameVirtualHost|Options|Require|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScriptInterpreterSource|ServerAdmin|ServerAlias|ServerName|ServerPath|ServerRoot|ServerSignature|ServerTokens|SetHandler|SetInputFilter|SetOutputFilter|Time(O|o)ut|TraceEnable|UseCanonicalName|Use|ErrorLogFormat|GlobalLog|PHPIniDir|SSLHonorCipherOrder|SSLCompression|SSLUseStapling|SSLStapling\\w+|SSLCARevocationCheck|SSLSRPVerifierFile|SSLSessionTickets|RequestReadTimeout|ProxyHTML\\w+|MaxRanges)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.mpm.apacheconf"
+ }
+ },
+ "match": "\\b(AcceptMutex|AssignUserID|BS2000Account|ChildPerUserID|CoreDumpDirectory|EnableExceptionHook|Group|Listen|ListenBacklog|LockFile|MaxClients|MaxConnectionsPerChild|MaxMemFree|MaxRequestsPerChild|MaxRequestsPerThread|MaxRequestWorkers|MaxSpareServers|MaxSpareThreads|MaxThreads|MaxThreadsPerChild|MinSpareServers|MinSpareThreads|NumServers|PidFile|ReceiveBufferSize|ScoreBoardFile|SendBufferSize|ServerLimit|StartServers|StartThreads|ThreadLimit|ThreadsPerChild|ThreadStackSize|User|Win32DisableAcceptEx)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.access.apacheconf"
+ }
+ },
+ "match": "\\b(Allow|Deny|Order)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.actions.apacheconf"
+ }
+ },
+ "match": "\\b(Action|Script)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.alias.apacheconf"
+ }
+ },
+ "match": "\\b(Alias|AliasMatch|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ScriptAlias|ScriptAliasMatch)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.auth.apacheconf"
+ }
+ },
+ "match": "\\b(AuthAuthoritative|AuthGroupFile|AuthUserFile|AuthBasicProvider|AuthBasicFake|AuthBasicAuthoritative|AuthBasicUseDigestAlgorithm)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.auth_anon.apacheconf"
+ }
+ },
+ "match": "\\b(Anonymous|Anonymous_Authoritative|Anonymous_LogEmail|Anonymous_MustGiveEmail|Anonymous_NoUserID|Anonymous_VerifyEmail)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.auth_dbm.apacheconf"
+ }
+ },
+ "match": "\\b(AuthDBMAuthoritative|AuthDBMGroupFile|AuthDBMType|AuthDBMUserFile)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.auth_digest.apacheconf"
+ }
+ },
+ "match": "\\b(AuthDigestAlgorithm|AuthDigestDomain|AuthDigestFile|AuthDigestGroupFile|AuthDigestNcCheck|AuthDigestNonceFormat|AuthDigestNonceLifetime|AuthDigestQop|AuthDigestShmemSize|AuthDigestProvider)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.auth_ldap.apacheconf"
+ }
+ },
+ "match": "\\b(AuthLDAPAuthoritative|AuthLDAPBindDN|AuthLDAPBindPassword|AuthLDAPCharsetConfig|AuthLDAPCompareDNOnServer|AuthLDAPDereferenceAliases|AuthLDAPEnabled|AuthLDAPFrontPageHack|AuthLDAPGroupAttribute|AuthLDAPGroupAttributeIsDN|AuthLDAPRemoteUserIsDN|AuthLDAPUrl)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.autoindex.apacheconf"
+ }
+ },
+ "match": "\\b(AddAlt|AddAltByEncoding|AddAltByType|AddDescription|AddIcon|AddIconByEncoding|AddIconByType|DefaultIcon|HeaderName|IndexIgnore|IndexOptions|IndexOrderDefault|IndexStyleSheet|IndexHeadInsert|ReadmeName)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.filter.apacheconf"
+ }
+ },
+ "match": "\\b(BalancerMember|BalancerGrowth|BalancerPersist|BalancerInherit)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.cache.apacheconf"
+ }
+ },
+ "match": "\\b(CacheDefaultExpire|CacheDisable|CacheEnable|CacheForceCompletion|CacheIgnoreCacheControl|CacheIgnoreHeaders|CacheIgnoreNoLastMod|CacheLastModifiedFactor|CacheMaxExpire)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.cern_meta.apacheconf"
+ }
+ },
+ "match": "\\b(MetaDir|MetaFiles|MetaSuffix)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.cgi.apacheconf"
+ }
+ },
+ "match": "\\b(ScriptLog|ScriptLogBuffer|ScriptLogLength)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.cgid.apacheconf"
+ }
+ },
+ "match": "\\b(ScriptLog|ScriptLogBuffer|ScriptLogLength|ScriptSock)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.charset_lite.apacheconf"
+ }
+ },
+ "match": "\\b(CharsetDefault|CharsetOptions|CharsetSourceEnc)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.dav.apacheconf"
+ }
+ },
+ "match": "\\b(Dav|DavDepthInfinity|DavMinTimeout|DavLockDB)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.deflate.apacheconf"
+ }
+ },
+ "match": "\\b(DeflateBufferSize|DeflateCompressionLevel|DeflateFilterNote|DeflateMemLevel|DeflateWindowSize)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.dir.apacheconf"
+ }
+ },
+ "match": "\\b(DirectoryIndex|DirectorySlash|FallbackResource)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.disk_cache.apacheconf"
+ }
+ },
+ "match": "\\b(CacheDirLength|CacheDirLevels|CacheExpiryCheck|CacheGcClean|CacheGcDaily|CacheGcInterval|CacheGcMemUsage|CacheGcUnused|CacheMaxFileSize|CacheMinFileSize|CacheRoot|CacheSize|CacheTimeMargin)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.dumpio.apacheconf"
+ }
+ },
+ "match": "\\b(DumpIOInput|DumpIOOutput)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.env.apacheconf"
+ }
+ },
+ "match": "\\b(PassEnv|SetEnv|UnsetEnv)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.expires.apacheconf"
+ }
+ },
+ "match": "\\b(ExpiresActive|ExpiresByType|ExpiresDefault)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.ext_filter.apacheconf"
+ }
+ },
+ "match": "\\b(ExtFilterDefine|ExtFilterOptions)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.file_cache.apacheconf"
+ }
+ },
+ "match": "\\b(CacheFile|MMapFile)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.filter.apacheconf"
+ }
+ },
+ "match": "\\b(AddOutputFilterByType|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.headers.apacheconf"
+ }
+ },
+ "match": "\\b(Header|RequestHeader)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.imap.apacheconf"
+ }
+ },
+ "match": "\\b(ImapBase|ImapDefault|ImapMenu)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.include.apacheconf"
+ }
+ },
+ "match": "\\b(SSIEndTag|SSIErrorMsg|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|XBitHack)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.isapi.apacheconf"
+ }
+ },
+ "match": "\\b(ISAPIAppendLogToErrors|ISAPIAppendLogToQuery|ISAPICacheFile|ISAPIFakeAsync|ISAPILogNotSupported|ISAPIReadAheadBuffer)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.ldap.apacheconf"
+ }
+ },
+ "match": "\\b(LDAPCacheEntries|LDAPCacheTTL|LDAPConnectionTimeout|LDAPOpCacheEntries|LDAPOpCacheTTL|LDAPSharedCacheFile|LDAPSharedCacheSize|LDAPTrustedCA|LDAPTrustedCAType)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.log.apacheconf"
+ }
+ },
+ "match": "\\b(BufferedLogs|CookieLog|CustomLog|LogFormat|TransferLog|ForensicLog)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.mem_cache.apacheconf"
+ }
+ },
+ "match": "\\b(MCacheMaxObjectCount|MCacheMaxObjectSize|MCacheMaxStreamingBuffer|MCacheMinObjectSize|MCacheRemovalAlgorithm|MCacheSize)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.mime.apacheconf"
+ }
+ },
+ "match": "\\b(AddCharset|AddEncoding|AddHandler|AddInputFilter|AddLanguage|AddOutputFilter|AddType|DefaultLanguage|ModMimeUsePathInfo|MultiviewsMatch|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|TypesConfig)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.misc.apacheconf"
+ }
+ },
+ "match": "\\b(ProtocolEcho|Example|AddModuleInfo|MimeMagicFile|CheckSpelling|ExtendedStatus|SuexecUserGroup|UserDir)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.negotiation.apacheconf"
+ }
+ },
+ "match": "\\b(CacheNegotiatedDocs|ForceLanguagePriority|LanguagePriority)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.nw_ssl.apacheconf"
+ }
+ },
+ "match": "\\b(NWSSLTrustedCerts|NWSSLUpgradeable|SecureListen)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.proxy.apacheconf"
+ }
+ },
+ "match": "\\b(AllowCONNECT|NoProxy|ProxyBadHeader|ProxyBlock|ProxyDomain|ProxyErrorOverride|ProxyFtpDirCharset|ProxyIOBufferSize|ProxyMaxForwards|ProxyPass|ProxyPassMatch|ProxyPassReverse|ProxyPreserveHost|ProxyReceiveBufferSize|ProxyRemote|ProxyRemoteMatch|ProxyRequests|ProxyTimeout|ProxyVia)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.rewrite.apacheconf"
+ }
+ },
+ "match": "\\b(RewriteBase|RewriteCond|RewriteEngine|RewriteLock|RewriteLog|RewriteLogLevel|RewriteMap|RewriteOptions|RewriteRule)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.setenvif.apacheconf"
+ }
+ },
+ "match": "\\b(BrowserMatch|BrowserMatchNoCase|SetEnvIf|SetEnvIfNoCase)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.so.apacheconf"
+ }
+ },
+ "match": "\\b(LoadFile|LoadModule)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.ssl.apacheconf"
+ }
+ },
+ "match": "\\b(SSLCACertificateFile|SSLCACertificatePath|SSLCARevocationFile|SSLCARevocationPath|SSLCertificateChainFile|SSLCertificateFile|SSLCertificateKeyFile|SSLCipherSuite|SSLEngine|SSLMutex|SSLOptions|SSLPassPhraseDialog|SSLProtocol|SSLProxyCACertificateFile|SSLProxyCACertificatePath|SSLProxyCARevocationFile|SSLProxyCARevocationPath|SSLProxyCipherSuite|SSLProxyEngine|SSLProxyMachineCertificateFile|SSLProxyMachineCertificatePath|SSLProxyProtocol|SSLProxyVerify|SSLProxyVerifyDepth|SSLRandomSeed|SSLRequire|SSLRequireSSL|SSLSessionCache|SSLSessionCacheTimeout|SSLUserName|SSLVerifyClient|SSLVerifyDepth|SSLInsecureRenegotiation|SSLOpenSSLConfCmd)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.substitute.apacheconf"
+ }
+ },
+ "match": "\\b(Substitute|SubstituteInheritBefore|SubstituteMaxLineLength)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.usertrack.apacheconf"
+ }
+ },
+ "match": "\\b(CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.vhost_alias.apacheconf"
+ }
+ },
+ "match": "\\b(VirtualDocumentRoot|VirtualDocumentRootIP|VirtualScriptAlias|VirtualScriptAliasIP)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.php.apacheconf"
+ },
+ "3": {
+ "name": "entity.property.apacheconf"
+ },
+ "5": {
+ "name": "string.value.apacheconf"
+ }
+ },
+ "match": "\\b(php_value|php_flag|php_admin_value|php_admin_flag)\\b(\\s+(.+?)(\\s+(\".+?\"|.+?))?)?\\s"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.variable.apacheconf"
+ },
+ "3": {
+ "name": "variable.env.apacheconf"
+ },
+ "4": {
+ "name": "variable.misc.apacheconf"
+ },
+ "5": {
+ "name": "punctuation.variable.apacheconf"
+ }
+ },
+ "match": "(%\\{)((HTTP_USER_AGENT|HTTP_REFERER|HTTP_COOKIE|HTTP_FORWARDED|HTTP_HOST|HTTP_PROXY_CONNECTION|HTTP_ACCEPT|REMOTE_ADDR|REMOTE_HOST|REMOTE_PORT|REMOTE_USER|REMOTE_IDENT|REQUEST_METHOD|SCRIPT_FILENAME|PATH_INFO|QUERY_STRING|AUTH_TYPE|DOCUMENT_ROOT|SERVER_ADMIN|SERVER_NAME|SERVER_ADDR|SERVER_PORT|SERVER_PROTOCOL|SERVER_SOFTWARE|TIME_YEAR|TIME_MON|TIME_DAY|TIME_HOUR|TIME_MIN|TIME_SEC|TIME_WDAY|TIME|API_VERSION|THE_REQUEST|REQUEST_URI|REQUEST_FILENAME|IS_SUBREQ|HTTPS)|(.*?))(\\})"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.mime-type.apacheconf"
+ }
+ },
+ "match": "\\b((text|image|application|video|audio)/.+?)\\s"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.helper.apacheconf"
+ }
+ },
+ "match": "\\b(?i)(export|from|unset|set|on|off)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "constant.numeric.integer.decimal.apacheconf"
+ }
+ },
+ "match": "\\b(\\d+)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.flag.apacheconf"
+ },
+ "2": {
+ "name": "string.flag.apacheconf"
+ },
+ "3": {
+ "name": "punctuation.definition.flag.apacheconf"
+ }
+ },
+ "match": "\\s(\\[)(.*?)(\\])\\s"
+ }
+ ],
+ "scopeName": "source.apacheconf",
+ "uuid": "8747d9e4-b308-4fc2-9aa1-66b6919bc7b9"
+}
diff --git a/node_modules/shiki/languages/apex.tmLanguage.json b/node_modules/shiki/languages/apex.tmLanguage.json
new file mode 100644
index 0000000..e3ce90d
--- /dev/null
+++ b/node_modules/shiki/languages/apex.tmLanguage.json
@@ -0,0 +1,3199 @@
+{
+ "name": "apex",
+ "scopeName": "source.apex",
+ "fileTypes": ["apex", "cls", "trigger"],
+ "uuid": "F5FC6824-F257-43B1-B53A-14E1CCD18631",
+ "patterns": [
+ {
+ "include": "#javadoc-comment"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#directives"
+ },
+ {
+ "include": "#declarations"
+ },
+ {
+ "include": "#script-top-level"
+ }
+ ],
+ "repository": {
+ "directives": {
+ "patterns": [
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "declarations": {
+ "patterns": [
+ {
+ "include": "#type-declarations"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "script-top-level": {
+ "patterns": [
+ {
+ "include": "#method-declaration"
+ },
+ {
+ "include": "#statement"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "type-declarations": {
+ "patterns": [
+ {
+ "include": "#javadoc-comment"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#annotation-declaration"
+ },
+ {
+ "include": "#storage-modifier"
+ },
+ {
+ "include": "#sharing-modifier"
+ },
+ {
+ "include": "#class-declaration"
+ },
+ {
+ "include": "#enum-declaration"
+ },
+ {
+ "include": "#interface-declaration"
+ },
+ {
+ "include": "#trigger-declaration"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "class-or-trigger-members": {
+ "patterns": [
+ {
+ "include": "#javadoc-comment"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#storage-modifier"
+ },
+ {
+ "include": "#sharing-modifier"
+ },
+ {
+ "include": "#type-declarations"
+ },
+ {
+ "include": "#field-declaration"
+ },
+ {
+ "include": "#property-declaration"
+ },
+ {
+ "include": "#indexer-declaration"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#constructor-declaration"
+ },
+ {
+ "include": "#method-declaration"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "interface-members": {
+ "patterns": [
+ {
+ "include": "#javadoc-comment"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#property-declaration"
+ },
+ {
+ "include": "#indexer-declaration"
+ },
+ {
+ "include": "#method-declaration"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "statement": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#while-statement"
+ },
+ {
+ "include": "#do-statement"
+ },
+ {
+ "include": "#for-statement"
+ },
+ {
+ "include": "#switch-statement"
+ },
+ {
+ "include": "#when-else-statement"
+ },
+ {
+ "include": "#when-sobject-statement"
+ },
+ {
+ "include": "#when-statement"
+ },
+ {
+ "include": "#when-multiple-statement"
+ },
+ {
+ "include": "#if-statement"
+ },
+ {
+ "include": "#else-part"
+ },
+ {
+ "include": "#goto-statement"
+ },
+ {
+ "include": "#return-statement"
+ },
+ {
+ "include": "#break-or-continue-statement"
+ },
+ {
+ "include": "#throw-statement"
+ },
+ {
+ "include": "#try-statement"
+ },
+ {
+ "include": "#soql-query-expression"
+ },
+ {
+ "include": "#local-declaration"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "expression": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#merge-expression"
+ },
+ {
+ "include": "#support-expression"
+ },
+ {
+ "include": "#throw-expression"
+ },
+ {
+ "include": "#this-expression"
+ },
+ {
+ "include": "#trigger-context-declaration"
+ },
+ {
+ "include": "#conditional-operator"
+ },
+ {
+ "include": "#expression-operators"
+ },
+ {
+ "include": "#soql-query-expression"
+ },
+ {
+ "include": "#object-creation-expression"
+ },
+ {
+ "include": "#array-creation-expression"
+ },
+ {
+ "include": "#invocation-expression"
+ },
+ {
+ "include": "#member-access-expression"
+ },
+ {
+ "include": "#element-access-expression"
+ },
+ {
+ "include": "#cast-expression"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#parenthesized-expression"
+ },
+ {
+ "include": "#initializer-expression"
+ },
+ {
+ "include": "#identifier"
+ }
+ ]
+ },
+ "annotation-declaration": {
+ "begin": "([@][_[:alpha:]]+)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.annotation.apex"
+ }
+ },
+ "end": "(?<=\\)|$)",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.apex"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "support-expression": {
+ "begin": "(?x)\n(ApexPages|Database|DMLException|Exception|PageReference|Savepoint|SchedulableContext|Schema|SObject|System|Test)(?=\\.|\\s) # supported apex namespaces",
+ "beginCaptures": {
+ "1": {
+ "name": "support.class.apex"
+ }
+ },
+ "end": "(?<=\\)|$)|(?=\\})|(?=;)|(?=\\)|(?=\\]))|(?=\\,)",
+ "patterns": [
+ {
+ "include": "#support-type"
+ },
+ {
+ "match": "(?:(\\.))([[:alpha:]]*)(?=\\()",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.apex"
+ },
+ "2": {
+ "name": "support.function.apex"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.))([[:alpha:]]+)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.apex"
+ },
+ "2": {
+ "name": "support.type.apex"
+ }
+ }
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.apex"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "support-type": {
+ "name": "support.apex",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#support-class"
+ },
+ {
+ "include": "#support-functions"
+ },
+ {
+ "include": "#support-name"
+ }
+ ]
+ },
+ "support-class": {
+ "match": "\\b(ApexPages|Database|DMLException|Exception|PageReference|Savepoint|SchedulableContext|Schema|SObject|System|Test)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.apex"
+ }
+ }
+ },
+ "support-functions": {
+ "match": "\\b(delete|execute|finish|insert|start|undelete|update|upsert)\\b",
+ "captures": {
+ "1": {
+ "name": "support.function.apex"
+ }
+ }
+ },
+ "support-name": {
+ "patterns": [
+ {
+ "match": "(\\.)\\s*([[:alpha:]]*)(?=\\()",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.apex"
+ },
+ "2": {
+ "name": "support.function.apex"
+ }
+ }
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.apex"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ {
+ "match": "(\\.)\\s*([_[:alpha:]]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.apex"
+ },
+ "2": {
+ "name": "support.type.apex"
+ }
+ }
+ }
+ ]
+ },
+ "support-arguments": {
+ "begin": "<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.begin.apex"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.end.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#support-type"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "merge-expression": {
+ "begin": "(merge)\\b\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.apex"
+ }
+ },
+ "end": "(?<=\\;)",
+ "patterns": [
+ {
+ "include": "#object-creation-expression"
+ },
+ {
+ "include": "#merge-type-statement"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "merge-type-statement": {
+ "match": "([_[:alpha:]]*)\\b\\s+([_[:alpha:]]*)\\b\\s*(\\;)",
+ "captures": {
+ "1": {
+ "name": "variable.other.readwrite.apex"
+ },
+ "2": {
+ "name": "variable.other.readwrite.apex"
+ },
+ "3": {
+ "name": "punctuation.terminator.statement.apex"
+ }
+ }
+ },
+ "sharing-modifier": {
+ "name": "sharing.modifier.apex",
+ "match": "(?<!\\.)\\b(with sharing|without sharing|inherited sharing)\\b"
+ },
+ "storage-modifier": {
+ "name": "storage.modifier.apex",
+ "match": "(?<!\\.)\\b(new|public|protected|private|abstract|virtual|override|global|static|final|transient)\\b"
+ },
+ "class-declaration": {
+ "begin": "(?=\\bclass\\b)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "begin": "(?x)\n\\b(class)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.class.apex"
+ },
+ "2": {
+ "name": "entity.name.type.class.apex"
+ }
+ },
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#javadoc-comment"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameter-list"
+ },
+ {
+ "include": "#extends-class"
+ },
+ {
+ "include": "#implements-class"
+ }
+ ]
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.apex"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#class-or-trigger-members"
+ }
+ ]
+ },
+ {
+ "include": "#javadoc-comment"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "trigger-declaration": {
+ "begin": "(?=\\btrigger\\b)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "begin": "(?x)\n\\b(trigger)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)\\s*\n\\b(on)\\b\\s+\n([_[:alpha:]][_[:alnum:]]*)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.trigger.apex"
+ },
+ "2": {
+ "name": "entity.name.type.trigger.apex"
+ },
+ "3": {
+ "name": "keyword.operator.trigger.on.apex"
+ },
+ "4": {
+ "name": "storage.type.apex"
+ }
+ },
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.apex"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#trigger-type-statement"
+ },
+ {
+ "include": "#trigger-operator-statement"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#javadoc-comment"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameter-list"
+ }
+ ]
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.apex"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#statement"
+ },
+ {
+ "include": "#class-or-trigger-members"
+ }
+ ]
+ },
+ {
+ "include": "#javadoc-comment"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "trigger-type-statement": {
+ "match": "\\b(?:(before)|(after))\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.trigger.before.apex"
+ },
+ "2": {
+ "name": "keyword.control.trigger.after.apex"
+ }
+ }
+ },
+ "trigger-operator-statement": {
+ "name": "keyword.operator.trigger.apex",
+ "match": "\\b(insert|update|delete|merge|upsert|undelete)\\b"
+ },
+ "trigger-context-declaration": {
+ "begin": "\\b(?:(Trigger))\\b(\\.)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "support.class.trigger.apex"
+ },
+ "2": {
+ "name": "punctuation.accessor.apex"
+ }
+ },
+ "end": "(?=\\})|(?=;)|(?=\\)|(?=\\]))",
+ "patterns": [
+ {
+ "name": "support.type.trigger.apex",
+ "match": "\\b(isExecuting|isInsert|isUpdate|isDelete|isBefore|isAfter|isUndelete|new|newMap|old|oldMap|size)\\b"
+ },
+ {
+ "match": "(?:(\\??\\.))([[:alpha:]]+)(?=\\()",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#punctuation-accessor"
+ },
+ {
+ "include": "#operator-safe-navigation"
+ }
+ ]
+ },
+ "2": {
+ "name": "support.function.trigger.apex"
+ }
+ }
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.apex"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#trigger-type-statement"
+ },
+ {
+ "include": "#javadoc-comment"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "enum-declaration": {
+ "begin": "(?=\\benum\\b)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "begin": "(?=enum)",
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#javadoc-comment"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "(enum)\\s+(@?[_[:alpha:]][_[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.enum.apex"
+ },
+ "2": {
+ "name": "entity.name.type.enum.apex"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.apex"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#javadoc-comment"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "begin": "@?[_[:alpha:]][_[:alnum:]]*",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.variable.enum-member.apex"
+ }
+ },
+ "end": "(?=(,|\\}))",
+ "patterns": [
+ {
+ "include": "#javadoc-comment"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#javadoc-comment"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "interface-declaration": {
+ "begin": "(?=\\binterface\\b)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "begin": "(?x)\n(interface)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.interface.apex"
+ },
+ "2": {
+ "name": "entity.name.type.interface.apex"
+ }
+ },
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#javadoc-comment"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameter-list"
+ },
+ {
+ "include": "#extends-class"
+ }
+ ]
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.apex"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#interface-members"
+ }
+ ]
+ },
+ {
+ "include": "#javadoc-comment"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "extends-class": {
+ "begin": "(extends)\\b\\s+([_[:alpha:]][_[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.extends.apex"
+ },
+ "2": {
+ "name": "entity.name.type.extends.apex"
+ }
+ },
+ "end": "(?={|implements)"
+ },
+ "implements-class": {
+ "begin": "(implements)\\b\\s+([_[:alpha:]][_[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.implements.apex"
+ },
+ "2": {
+ "name": "entity.name.type.implements.apex"
+ }
+ },
+ "end": "(?={|extends)"
+ },
+ "soql-query-expression": {
+ "begin": "\\b(SELECT)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.query.select.apex"
+ }
+ },
+ "end": "(?=;)|(?=\\])|(?=\\))",
+ "patterns": [
+ {
+ "include": "#soql-query-body"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#operator-assignment"
+ },
+ {
+ "include": "#parenthesized-expression"
+ },
+ {
+ "include": "#expression-operators"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "match": "([_.[:alpha:]][_.[:alnum:]]*)\\s*(\\,)?",
+ "captures": {
+ "1": {
+ "name": "keyword.query.field.apex"
+ },
+ "2": {
+ "name": "punctuation.separator.comma.apex"
+ }
+ }
+ }
+ ]
+ },
+ "soql-query-body": {
+ "patterns": [
+ {
+ "include": "#trigger-context-declaration"
+ },
+ {
+ "include": "#soql-colon-vars"
+ },
+ {
+ "include": "#soql-functions"
+ },
+ {
+ "include": "#from-clause"
+ },
+ {
+ "include": "#where-clause"
+ },
+ {
+ "include": "#query-operators"
+ },
+ {
+ "include": "#date-literals"
+ },
+ {
+ "include": "#date-literal-with-params"
+ },
+ {
+ "include": "#using-scope"
+ },
+ {
+ "include": "#soql-group-clauses"
+ },
+ {
+ "include": "#orderby-clause"
+ },
+ {
+ "include": "#ordering-direction"
+ },
+ {
+ "include": "#ordering-nulls"
+ }
+ ]
+ },
+ "soql-colon-vars": {
+ "begin": "(\\:)\\s*",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.colon.apex"
+ }
+ },
+ "end": "(?![_[:alnum:]]|\\(|(\\?)?\\[|<)",
+ "patterns": [
+ {
+ "include": "#trigger-context-declaration"
+ },
+ {
+ "match": "([_[:alpha:]][_[:alnum:]]*)(\\??\\.)",
+ "captures": {
+ "1": {
+ "name": "variable.other.object.apex"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#punctuation-accessor"
+ },
+ {
+ "include": "#operator-safe-navigation"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "#soql-colon-method-statement"
+ },
+ {
+ "name": "entity.name.variable.local.apex",
+ "match": "[_[:alpha:]][_[:alnum:]]*"
+ }
+ ]
+ },
+ "soql-colon-method-statement": {
+ "begin": "(:?\\.)?([_[:alpha:]][_[:alnum:]]*)(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.accessor.apex"
+ },
+ "2": {
+ "name": "entity.name.function.apex"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.apex"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "soql-group-clauses": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.apex"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#soql-query-expression"
+ },
+ {
+ "include": "#soql-colon-vars"
+ },
+ {
+ "include": "#soql-group-clauses"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#operator-assignment"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#query-operators"
+ },
+ {
+ "include": "#date-literals"
+ },
+ {
+ "include": "#date-literal-with-params"
+ },
+ {
+ "include": "#using-scope"
+ },
+ {
+ "name": "keyword.query.field.apex",
+ "match": "[_.[:alpha:]][_.[:alnum:]]*"
+ }
+ ]
+ },
+ "soql-functions": {
+ "begin": "\\b(AVG|CALENDAR_MONTH|CALENDAR_QUARTER|CALENDAR_YEAR|convertCurrency|convertTimezone|COUNT|COUNT_DISTINCT|DAY_IN_MONTH|DAY_IN_WEEK|DAY_IN_YEAR|DAY_ONLY|toLabel|INCLUDES|EXCLUDES|FISCAL_MONTH|FISCAL_QUARTER|FISCAL_YEAR|FORMAT|GROUPING|GROUP BY CUBE|GROUP BY ROLLUP|HOUR_IN_DAY|MAX|MIN|SUM|WEEK_IN_MONTH|WEEK_IN_YEAR)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.query.apex"
+ },
+ "2": {
+ "name": "punctuation.parenthesis.open.apex"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#soql-functions"
+ },
+ {
+ "name": "keyword.query.field.apex",
+ "match": "[_.[:alpha:]][_.[:alnum:]]*"
+ }
+ ]
+ },
+ "from-clause": {
+ "match": "(FROM)\\b\\s*([_\\.[:alnum:]]+\\b)?",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.query.from.apex"
+ },
+ "2": {
+ "name": "storage.type.apex"
+ }
+ }
+ },
+ "where-clause": {
+ "match": "\\b(WHERE)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.query.where.apex"
+ }
+ }
+ },
+ "orderby-clause": {
+ "match": "\\b(ORDER BY)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.query.orderby.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ordering-direction"
+ },
+ {
+ "include": "#ordering-nulls"
+ }
+ ]
+ },
+ "ordering-direction": {
+ "match": "\\b(?:(ASC)|(DESC))\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.query.ascending.apex"
+ },
+ "2": {
+ "name": "keyword.operator.query.descending.apex"
+ }
+ }
+ },
+ "ordering-nulls": {
+ "match": "\\b(?:(NULLS FIRST)|(NULLS LAST))\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.query.nullsfirst.apex"
+ },
+ "2": {
+ "name": "keyword.operator.query.nullslast.apex"
+ }
+ }
+ },
+ "query-operators": {
+ "match": "\\b(ABOVE|AND|AT|FOR REFERENCE|FOR UPDATE|FOR VIEW|GROUP BY|HAVING|IN|LIKE|LIMIT|NOT IN|NOT|OFFSET|OR|TYPEOF|UPDATE TRACKING|UPDATE VIEWSTAT|WITH DATA CATEGORY|WITH)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.query.apex"
+ }
+ }
+ },
+ "date-literals": {
+ "match": "\\b(YESTERDAY|TODAY|TOMORROW|LAST_WEEK|THIS_WEEK|NEXT_WEEK|LAST_MONTH|THIS_MONTH|NEXT_MONTH|LAST_90_DAYS|NEXT_90_DAYS|THIS_QUARTER|LAST_QUARTER|NEXT_QUARTER|THIS_YEAR|LAST_YEAR|NEXT_YEAR|THIS_FISCAL_QUARTER|LAST_FISCAL_QUARTER|NEXT_FISCAL_QUARTER|THIS_FISCAL_YEAR|LAST_FISCAL_YEAR|NEXT_FISCAL_YEAR)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.query.date.apex"
+ }
+ }
+ },
+ "date-literal-with-params": {
+ "match": "\\b((LAST_N_DAYS|NEXT_N_DAYS|NEXT_N_WEEKS|LAST_N_WEEKS|NEXT_N_MONTHS|LAST_N_MONTHS|NEXT_N_QUARTERS|LAST_N_QUARTERS|NEXT_N_YEARS|LAST_N_YEARS|NEXT_N_FISCAL_QUARTERS|LAST_N_FISCAL_QUARTERS|NEXT_N_FISCAL_YEARS|LAST_N_FISCAL_YEARS)\\s*\\:\\d+)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.query.date.apex"
+ }
+ }
+ },
+ "using-scope": {
+ "match": "((USING SCOPE)\\b\\s*(Delegated|Everything|Mine|My_Territory|My_Team_Territory|Team))\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.query.using.apex"
+ }
+ }
+ },
+ "type-parameter-list": {
+ "begin": "\\<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.begin.apex"
+ }
+ },
+ "end": "\\>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.end.apex"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(@?[_[:alpha:]][_[:alnum:]]*)\\b",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.type-parameter.apex"
+ }
+ }
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "field-declaration": {
+ "begin": "(?x)\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s+\n(\\g<identifier>)\\s* # first field name\n(?!=>|==)(?=,|;|=|$)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#support-type"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "5": {
+ "name": "entity.name.variable.field.apex"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "name": "entity.name.variable.field.apex",
+ "match": "@?[_[:alpha:]][_[:alnum:]]*"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#class-or-trigger-members"
+ }
+ ]
+ },
+ "property-declaration": {
+ "begin": "(?x)\n(?!.*\\b(?:class|interface|enum)\\b)\\s*\n(?<return_type>\n (?<type_name>\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\\s+\n)\n(?<interface_name>\\g<type_name>\\s*\\.\\s*)?\n(?<property_name>\\g<identifier>)\\s*\n(?=\\{|=>|$)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-accessor"
+ }
+ ]
+ },
+ "7": {
+ "name": "entity.name.variable.property.apex"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#property-accessors"
+ },
+ {
+ "include": "#expression-body"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#class-or-trigger-members"
+ }
+ ]
+ },
+ "indexer-declaration": {
+ "begin": "(?x)\n(?<return_type>\n (?<type_name>\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\\s+\n)\n(?<interface_name>\\g<type_name>\\s*\\.\\s*)?\n(?<indexer_name>this)\\s*\n(?=\\[)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-accessor"
+ }
+ ]
+ },
+ "7": {
+ "name": "keyword.other.this.apex"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#property-accessors"
+ },
+ {
+ "include": "#expression-body"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "property-accessors": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.apex"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "name": "storage.modifier.apex",
+ "match": "\\b(private|protected)\\b"
+ },
+ {
+ "name": "keyword.other.get.apex",
+ "match": "\\b(get)\\b"
+ },
+ {
+ "name": "keyword.other.set.apex",
+ "match": "\\b(set)\\b"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#expression-body"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "method-declaration": {
+ "begin": "(?x)\n(?<return_type>\n (?<type_name>\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\\s+\n)\n(?<interface_name>\\g<type_name>\\s*\\.\\s*)?\n(\\g<identifier>)\\s*\n(<([^<>]+)>)?\\s*\n(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#support-type"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-accessor"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#support-type"
+ },
+ {
+ "include": "#method-name-custom"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#type-parameter-list"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#parenthesized-parameter-list"
+ },
+ {
+ "include": "#expression-body"
+ },
+ {
+ "include": "#block"
+ }
+ ]
+ },
+ "method-name-custom": {
+ "name": "entity.name.function.apex",
+ "match": "@?[_[:alpha:]][_[:alnum:]]*"
+ },
+ "constructor-declaration": {
+ "begin": "(?=@?[_[:alpha:]][_[:alnum:]]*\\s*\\()",
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "match": "(@?[_[:alpha:]][_[:alnum:]]*)\\b",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.apex"
+ }
+ }
+ },
+ {
+ "begin": "(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.colon.apex"
+ }
+ },
+ "end": "(?=\\{|=>)",
+ "patterns": [
+ {
+ "include": "#constructor-initializer"
+ }
+ ]
+ },
+ {
+ "include": "#parenthesized-parameter-list"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#expression-body"
+ },
+ {
+ "include": "#block"
+ }
+ ]
+ },
+ "constructor-initializer": {
+ "begin": "\\b(?:(this))\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.this.apex"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#argument-list"
+ }
+ ]
+ },
+ "block": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.apex"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "variable-initializer": {
+ "begin": "(?<!=|!)(=)(?!=|>)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.apex"
+ }
+ },
+ "end": "(?=[,\\)\\];}])",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "expression-body": {
+ "begin": "=>",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.arrow.apex"
+ }
+ },
+ "end": "(?=[,\\);}])",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "goto-statement": {
+ "begin": "(?<!\\.)\\b(goto)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.goto.apex"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "begin": "\\b(case)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.case.apex"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "match": "\\b(default)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.default.apex"
+ }
+ }
+ },
+ {
+ "name": "entity.name.label.apex",
+ "match": "@?[_[:alpha:]][_[:alnum:]]*"
+ }
+ ]
+ },
+ "return-statement": {
+ "begin": "(?<!\\.)\\b(return)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow.return.apex"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "break-or-continue-statement": {
+ "match": "(?<!\\.)\\b(?:(break)|(continue))\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.break.apex"
+ },
+ "2": {
+ "name": "keyword.control.flow.continue.apex"
+ }
+ }
+ },
+ "throw-statement": {
+ "begin": "(?<!\\.)\\b(throw)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow.throw.apex"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "if-statement": {
+ "begin": "(?<!\\.)\\b(if)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.conditional.if.apex"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.apex"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "else-part": {
+ "begin": "(?<!\\.)\\b(else)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.conditional.else.apex"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "switch-statement": {
+ "begin": "(?x)\n(switch)\\b\\s+\n(on)\\b\\s+\n(?:([_.?\\'\\(\\)[:alnum:]]+)\\s*)?\n(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.apex"
+ },
+ "2": {
+ "name": "keyword.control.switch.on.apex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#statement"
+ },
+ {
+ "include": "#parenthesized-expression"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.curlybrace.open.apex"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#when-string"
+ },
+ {
+ "include": "#when-else-statement"
+ },
+ {
+ "include": "#when-sobject-statement"
+ },
+ {
+ "include": "#when-statement"
+ },
+ {
+ "include": "#when-multiple-statement"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "when-statement": {
+ "begin": "(when)\\b\\s+([\\'_\\-[:alnum:]]+)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.when.apex"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "when-string": {
+ "begin": "(when)(\\b\\s*)((\\')[_.\\,\\'\\s*[:alnum:]]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.when.apex"
+ },
+ "2": {
+ "name": "punctuation.whitespace.apex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#when-string-statement"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "when-string-statement": {
+ "patterns": [
+ {
+ "name": "string.quoted.single.apex",
+ "begin": "\\'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.apex"
+ }
+ },
+ "end": "\\'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.apex"
+ }
+ }
+ }
+ ]
+ },
+ "when-else-statement": {
+ "begin": "(when)\\b\\s+(else)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.when.apex"
+ },
+ "2": {
+ "name": "keyword.control.switch.else.apex"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "when-multiple-statement": {
+ "begin": "(when)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.when.apex"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "when-sobject-statement": {
+ "begin": "(when)\\b\\s+([_[:alnum:]]+)\\s+([_[:alnum:]]+)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.when.apex"
+ },
+ "2": {
+ "name": "storage.type.apex"
+ },
+ "3": {
+ "name": "entity.name.variable.local.apex"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "do-statement": {
+ "begin": "(?<!\\.)\\b(do)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.loop.do.apex"
+ }
+ },
+ "end": "(?=;|})",
+ "patterns": [
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "while-statement": {
+ "begin": "(?<!\\.)\\b(while)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.loop.while.apex"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.apex"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "for-statement": {
+ "begin": "(?<!\\.)\\b(for)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.loop.for.apex"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.apex"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#for-apex-syntax"
+ },
+ {
+ "include": "#local-variable-declaration"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ },
+ {
+ "include": "#colon-expression"
+ }
+ ]
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "for-apex-syntax": {
+ "match": "([_.[:alpha:]][_.[:alnum:]]+)\\s+([_.[:alpha:]][_.[:alnum:]]*)\\s*(\\:)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#support-type"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "2": {
+ "name": "entity.name.variable.local.apex"
+ },
+ "3": {
+ "name": "keyword.operator.iterator.colon.apex"
+ }
+ }
+ },
+ "try-statement": {
+ "patterns": [
+ {
+ "include": "#try-block"
+ },
+ {
+ "include": "#catch-clause"
+ },
+ {
+ "include": "#finally-clause"
+ }
+ ]
+ },
+ "try-block": {
+ "begin": "(?<!\\.)\\b(try)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.try.apex"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#block"
+ }
+ ]
+ },
+ "finally-clause": {
+ "begin": "(?<!\\.)\\b(finally)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.try.finally.apex"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#block"
+ }
+ ]
+ },
+ "catch-clause": {
+ "begin": "(?<!\\.)\\b(catch)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.try.catch.apex"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.apex"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?x)\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(?:(\\g<identifier>)\\b)?",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#support-type"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "5": {
+ "name": "entity.name.variable.local.apex"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#block"
+ }
+ ]
+ },
+ "local-declaration": {
+ "patterns": [
+ {
+ "include": "#local-constant-declaration"
+ },
+ {
+ "include": "#local-variable-declaration"
+ }
+ ]
+ },
+ "local-variable-declaration": {
+ "begin": "(?x)\n(?:\n (?:(\\bref)\\s+)?(\\bvar\\b)| # ref local\n (?<type_name>\n (?:\n (?:ref\\s+)? # ref local\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\n)\\s+\n(\\g<identifier>)\\s*\n(?=,|;|=|\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.apex"
+ },
+ "2": {
+ "name": "keyword.other.var.apex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#support-type"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "7": {
+ "name": "entity.name.variable.local.apex"
+ }
+ },
+ "end": "(?=;|\\))",
+ "patterns": [
+ {
+ "name": "entity.name.variable.local.apex",
+ "match": "@?[_[:alpha:]][_[:alnum:]]*"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "local-constant-declaration": {
+ "begin": "(?x)\n(?<const_keyword>\\b(?:const)\\b)\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s+\n(\\g<identifier>)\\s*\n(?=,|;|=)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.apex"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.variable.local.apex"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "name": "entity.name.variable.local.apex",
+ "match": "@?[_[:alpha:]][_[:alnum:]]*"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "throw-expression": {
+ "match": "(?<!\\.)\\b(throw)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.throw.apex"
+ }
+ }
+ },
+ "literal": {
+ "patterns": [
+ {
+ "include": "#boolean-literal"
+ },
+ {
+ "include": "#null-literal"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#string-literal"
+ }
+ ]
+ },
+ "boolean-literal": {
+ "patterns": [
+ {
+ "name": "constant.language.boolean.true.apex",
+ "match": "(?<!\\.)\\btrue\\b"
+ },
+ {
+ "name": "constant.language.boolean.false.apex",
+ "match": "(?<!\\.)\\bfalse\\b"
+ }
+ ]
+ },
+ "null-literal": {
+ "name": "constant.language.null.apex",
+ "match": "(?<!\\.)\\bnull\\b"
+ },
+ "numeric-literal": {
+ "patterns": [
+ {
+ "name": "constant.numeric.datetime.apex",
+ "match": "\\b(\\d{4}\\-\\d{2}\\-\\d{2}T\\d{2}\\:\\d{2}\\:\\d{2}(\\.\\d{1,3})?(\\-|\\+)\\d{2}\\:\\d{2})\\b"
+ },
+ {
+ "name": "constant.numeric.datetime.apex",
+ "match": "\\b(\\d{4}\\-\\d{2}\\-\\d{2}T\\d{2}\\:\\d{2}\\:\\d{2}(\\.\\d{1,3})?(Z)?)\\b"
+ },
+ {
+ "name": "constant.numeric.date.apex",
+ "match": "\\b(\\d{4}\\-\\d{2}\\-\\d{2})\\b"
+ },
+ {
+ "name": "constant.numeric.hex.apex",
+ "match": "\\b0(x|X)[0-9a-fA-F_]+(U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?\\b"
+ },
+ {
+ "name": "constant.numeric.binary.apex",
+ "match": "\\b0(b|B)[01_]+(U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?\\b"
+ },
+ {
+ "name": "constant.numeric.decimal.apex",
+ "match": "\\b([0-9_]+)?\\.[0-9_]+((e|E)[0-9]+)?(F|f|D|d|M|m)?\\b"
+ },
+ {
+ "name": "constant.numeric.decimal.apex",
+ "match": "\\b[0-9_]+(e|E)[0-9_]+(F|f|D|d|M|m)?\\b"
+ },
+ {
+ "name": "constant.numeric.decimal.apex",
+ "match": "\\b[0-9_]+(F|f|D|d|M|m)\\b"
+ },
+ {
+ "name": "constant.numeric.decimal.apex",
+ "match": "\\b[0-9_]+(U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?\\b"
+ }
+ ]
+ },
+ "string-literal": {
+ "name": "string.quoted.single.apex",
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.apex"
+ }
+ },
+ "end": "(\\')|((?:[^\\\\\\n])$)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.apex"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "string-character-escape": {
+ "name": "constant.character.escape.apex",
+ "match": "\\\\."
+ },
+ "expression-operators": {
+ "patterns": [
+ {
+ "name": "keyword.operator.assignment.compound.apex",
+ "match": "\\*=|/=|%=|\\+=|-="
+ },
+ {
+ "name": "keyword.operator.assignment.compound.bitwise.apex",
+ "match": "\\&=|\\^=|<<=|>>=|\\|="
+ },
+ {
+ "name": "keyword.operator.bitwise.shift.apex",
+ "match": "<<|>>"
+ },
+ {
+ "name": "keyword.operator.comparison.apex",
+ "match": "==|!="
+ },
+ {
+ "name": "keyword.operator.relational.apex",
+ "match": "<=|>=|<|>"
+ },
+ {
+ "name": "keyword.operator.logical.apex",
+ "match": "\\!|&&|\\|\\|"
+ },
+ {
+ "name": "keyword.operator.bitwise.apex",
+ "match": "\\&|~|\\^|\\|"
+ },
+ {
+ "name": "keyword.operator.assignment.apex",
+ "match": "\\="
+ },
+ {
+ "name": "keyword.operator.decrement.apex",
+ "match": "--"
+ },
+ {
+ "name": "keyword.operator.increment.apex",
+ "match": "\\+\\+"
+ },
+ {
+ "name": "keyword.operator.arithmetic.apex",
+ "match": "%|\\*|/|-|\\+"
+ }
+ ]
+ },
+ "conditional-operator": {
+ "begin": "(?<!\\?)\\?(?!\\?|\\.|\\[)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.question-mark.apex"
+ }
+ },
+ "end": ":",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.colon.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "colon-expression": {
+ "name": "keyword.operator.conditional.colon.apex",
+ "match": ":"
+ },
+ "parenthesized-expression": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.apex"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "initializer-expression": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.apex"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "identifier": {
+ "name": "variable.other.readwrite.apex",
+ "match": "@?[_[:alpha:]][_[:alnum:]]*"
+ },
+ "cast-expression": {
+ "match": "(?x)\n(\\()\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(\\))(?=\\s*@?[_[:alnum:]\\(])",
+ "captures": {
+ "1": {
+ "name": "punctuation.parenthesis.open.apex"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#support-type"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.parenthesis.close.apex"
+ }
+ }
+ },
+ "this-expression": {
+ "match": "\\b(?:(this))\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.this.apex"
+ }
+ }
+ },
+ "invocation-expression": {
+ "begin": "(?x)\n(?:(\\??\\.)\\s*)? # safe navigator or accessor\n(@?[_[:alpha:]][_[:alnum:]]*)\\s* # method name\n(?<type_args>\\s*<([^<>]|\\g<type_args>)+>\\s*)?\\s* # type arguments\n(?=\\() # open paren of argument list",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#punctuation-accessor"
+ },
+ {
+ "include": "#operator-safe-navigation"
+ }
+ ]
+ },
+ "2": {
+ "name": "entity.name.function.apex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#argument-list"
+ }
+ ]
+ },
+ "element-access-expression": {
+ "begin": "(?x)\n(?:(\\??\\.)\\s*)? # safe navigator or accessor\n(?:(@?[_[:alpha:]][_[:alnum:]]*)\\s*)? # property name\n(?:(\\?)\\s*)? # null-conditional operator?\n(?=\\[) # open bracket of argument list",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#punctuation-accessor"
+ },
+ {
+ "include": "#operator-safe-navigation"
+ }
+ ]
+ },
+ "2": {
+ "name": "variable.other.object.property.apex"
+ },
+ "3": {
+ "name": "keyword.operator.null-conditional.apex"
+ }
+ },
+ "end": "(?<=\\])(?!\\s*\\[)",
+ "patterns": [
+ {
+ "include": "#bracketed-argument-list"
+ }
+ ]
+ },
+ "member-access-expression": {
+ "patterns": [
+ {
+ "match": "(?x)\n(\\??\\.)\\s* # safe navigator or accessor\n(@?[_[:alpha:]][_[:alnum:]]*)\\s* # property name\n(?![_[:alnum:]]|\\(|(\\?)?\\[|<) # next character is not alpha-numeric, nor a (, [, or <. Also, test for ?[",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#punctuation-accessor"
+ },
+ {
+ "include": "#operator-safe-navigation"
+ }
+ ]
+ },
+ "2": {
+ "name": "variable.other.object.property.apex"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(\\??\\.)?\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\n(?<type_params>\\s*<([^<>]|\\g<type_params>)+>\\s*)\n(?=\n (\\s*\\?)?\n \\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]*\n)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#punctuation-accessor"
+ },
+ {
+ "include": "#operator-safe-navigation"
+ }
+ ]
+ },
+ "2": {
+ "name": "variable.other.object.apex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(@?[_[:alpha:]][_[:alnum:]]*)\n(?=\n (\\s*\\?)?\n \\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]*\n)",
+ "captures": {
+ "1": {
+ "name": "variable.other.object.apex"
+ }
+ }
+ }
+ ]
+ },
+ "object-creation-expression": {
+ "patterns": [
+ {
+ "include": "#object-creation-expression-with-parameters"
+ },
+ {
+ "include": "#object-creation-expression-with-no-parameters"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "object-creation-expression-with-parameters": {
+ "begin": "(?x)\n(delete|insert|undelete|update|upsert)?\n\\s*(new)\\s+\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.apex"
+ },
+ "2": {
+ "name": "keyword.control.new.apex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#support-type"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#argument-list"
+ }
+ ]
+ },
+ "object-creation-expression-with-no-parameters": {
+ "match": "(?x)\n(delete|insert|undelete|update|upsert)?\n\\s*(new)\\s+\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(?=\\{|$)",
+ "captures": {
+ "1": {
+ "name": "support.function.apex"
+ },
+ "2": {
+ "name": "keyword.control.new.apex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#support-type"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ }
+ },
+ "array-creation-expression": {
+ "begin": "(?x)\n\\b(new)\\b\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)?\\s*\n(?=\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.new.apex"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#support-type"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\])",
+ "patterns": [
+ {
+ "include": "#bracketed-argument-list"
+ }
+ ]
+ },
+ "parenthesized-parameter-list": {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.apex"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#parameter"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "parameter": {
+ "match": "(?x)\n(?:(?:\\b(this)\\b)\\s+)?\n(?<type_name>\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)*\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s+\n(\\g<identifier>)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.apex"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#support-type"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.variable.parameter.apex"
+ }
+ }
+ },
+ "argument-list": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.apex"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#named-argument"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "bracketed-argument-list": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.squarebracket.open.apex"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.squarebracket.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#soql-query-expression"
+ },
+ {
+ "include": "#named-argument"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "named-argument": {
+ "begin": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.variable.parameter.apex"
+ },
+ "2": {
+ "name": "punctuation.separator.colon.apex"
+ }
+ },
+ "end": "(?=(,|\\)|\\]))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "type": {
+ "name": "meta.type.apex",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-builtin"
+ },
+ {
+ "include": "#type-name"
+ },
+ {
+ "include": "#type-arguments"
+ },
+ {
+ "include": "#type-array-suffix"
+ },
+ {
+ "include": "#type-nullable-suffix"
+ }
+ ]
+ },
+ "type-builtin": {
+ "match": "\\b(Blob|Boolean|byte|Date|Datetime|Decimal|Double|ID|Integer|Long|Object|String|Time|void)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.type.apex"
+ }
+ }
+ },
+ "type-name": {
+ "patterns": [
+ {
+ "match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\.)",
+ "captures": {
+ "1": {
+ "name": "storage.type.apex"
+ },
+ "2": {
+ "name": "punctuation.accessor.apex"
+ }
+ }
+ },
+ {
+ "match": "(\\.)\\s*(@?[_[:alpha:]][_[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.apex"
+ },
+ "2": {
+ "name": "storage.type.apex"
+ }
+ }
+ },
+ {
+ "name": "storage.type.apex",
+ "match": "@?[_[:alpha:]][_[:alnum:]]*"
+ }
+ ]
+ },
+ "type-arguments": {
+ "begin": "<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.begin.apex"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.end.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#support-type"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "type-array-suffix": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.squarebracket.open.apex"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.squarebracket.close.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "type-nullable-suffix": {
+ "match": "\\?",
+ "captures": {
+ "0": {
+ "name": "punctuation.separator.question-mark.apex"
+ }
+ }
+ },
+ "operator-assignment": {
+ "name": "keyword.operator.assignment.apex",
+ "match": "(?<!=|!)(=)(?!=)"
+ },
+ "operator-safe-navigation": {
+ "name": "keyword.operator.safe-navigation.apex",
+ "match": "\\?\\."
+ },
+ "punctuation-comma": {
+ "name": "punctuation.separator.comma.apex",
+ "match": ","
+ },
+ "punctuation-semicolon": {
+ "name": "punctuation.terminator.statement.apex",
+ "match": ";"
+ },
+ "punctuation-accessor": {
+ "name": "punctuation.accessor.apex",
+ "match": "\\."
+ },
+ "comment": {
+ "patterns": [
+ {
+ "name": "comment.block.apex",
+ "begin": "/\\*(\\*)?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.apex"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.apex"
+ }
+ }
+ },
+ {
+ "begin": "(^\\s+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.apex"
+ }
+ },
+ "end": "(?=$)",
+ "patterns": [
+ {
+ "name": "comment.block.documentation.apex",
+ "begin": "(?<!/)///(?!/)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.apex"
+ }
+ },
+ "end": "(?=$)",
+ "patterns": [
+ {
+ "include": "#xml-doc-comment"
+ }
+ ]
+ },
+ {
+ "name": "comment.line.double-slash.apex",
+ "begin": "(?<!/)//(?:(?!/)|(?=//))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.apex"
+ }
+ },
+ "end": "(?=$)"
+ }
+ ]
+ }
+ ]
+ },
+ "javadoc-comment": {
+ "patterns": [
+ {
+ "name": "comment.block.javadoc.apex",
+ "begin": "^\\s*(/\\*\\*)(?!/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.apex"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.apex"
+ }
+ },
+ "patterns": [
+ {
+ "match": "@(deprecated|author|return|see|serial|since|version|usage|name|link)\\b",
+ "name": "keyword.other.documentation.javadoc.apex"
+ },
+ {
+ "match": "(@param)\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.documentation.javadoc.apex"
+ },
+ "2": {
+ "name": "entity.name.variable.parameter.apex"
+ }
+ }
+ },
+ {
+ "match": "(@(?:exception|throws))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.documentation.javadoc.apex"
+ },
+ "2": {
+ "name": "entity.name.type.class.apex"
+ }
+ }
+ },
+ {
+ "match": "(`([^`]+?)`)",
+ "captures": {
+ "1": {
+ "name": "string.quoted.single.apex"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "xml-doc-comment": {
+ "patterns": [
+ {
+ "include": "#xml-comment"
+ },
+ {
+ "include": "#xml-character-entity"
+ },
+ {
+ "include": "#xml-cdata"
+ },
+ {
+ "include": "#xml-tag"
+ }
+ ]
+ },
+ "xml-tag": {
+ "name": "meta.tag.apex",
+ "begin": "(?x)\n(</?)\n(\n (?:\n ([-_[:alnum:]]+)\n (:)\n )?\n ([-_[:alnum:]]+)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.apex"
+ },
+ "2": {
+ "name": "entity.name.tag.apex"
+ },
+ "3": {
+ "name": "entity.name.tag.namespace.apex"
+ },
+ "4": {
+ "name": "punctuation.separator.colon.apex"
+ },
+ "5": {
+ "name": "entity.name.tag.localname.apex"
+ }
+ },
+ "end": "(/?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#xml-attribute"
+ }
+ ]
+ },
+ "xml-attribute": {
+ "patterns": [
+ {
+ "match": "(?x)\n(?:^|\\s+)\n(\n (?:\n ([-_[:alnum:]]+)\n (:)\n )?\n ([-_[:alnum:]]+)\n)\n(=)",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.apex"
+ },
+ "2": {
+ "name": "entity.other.attribute-name.namespace.apex"
+ },
+ "3": {
+ "name": "punctuation.separator.colon.apex"
+ },
+ "4": {
+ "name": "entity.other.attribute-name.localname.apex"
+ },
+ "5": {
+ "name": "punctuation.separator.equals.apex"
+ }
+ }
+ },
+ {
+ "include": "#xml-string"
+ }
+ ]
+ },
+ "xml-cdata": {
+ "name": "string.unquoted.cdata.apex",
+ "begin": "<!\\[CDATA\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.apex"
+ }
+ },
+ "end": "\\]\\]>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.apex"
+ }
+ }
+ },
+ "xml-string": {
+ "patterns": [
+ {
+ "name": "string.quoted.single.apex",
+ "begin": "\\'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.apex"
+ }
+ },
+ "end": "\\'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#xml-character-entity"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.double.apex",
+ "begin": "\\\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.stringdoublequote.begin.apex"
+ }
+ },
+ "end": "\\\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.stringdoublequote.end.apex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#xml-character-entity"
+ }
+ ]
+ }
+ ]
+ },
+ "xml-character-entity": {
+ "patterns": [
+ {
+ "name": "constant.character.entity.apex",
+ "match": "(?x)\n(&)\n(\n (?:[[:alpha:]:_][[:alnum:]:_.-]*)|\n (?:\\#[[:digit:]]+)|\n (?:\\#x[[:xdigit:]]+)\n)\n(;)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.apex"
+ },
+ "3": {
+ "name": "punctuation.definition.constant.apex"
+ }
+ }
+ },
+ {
+ "name": "invalid.illegal.bad-ampersand.apex",
+ "match": "&"
+ }
+ ]
+ },
+ "xml-comment": {
+ "name": "comment.block.apex",
+ "begin": "<!--",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.apex"
+ }
+ },
+ "end": "-->",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.apex"
+ }
+ }
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/apl.tmLanguage.json b/node_modules/shiki/languages/apl.tmLanguage.json
new file mode 100644
index 0000000..4308635
--- /dev/null
+++ b/node_modules/shiki/languages/apl.tmLanguage.json
@@ -0,0 +1,1468 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "name": "apl",
+ "scopeName": "source.apl",
+ "fileTypes": ["apl", "apla", "aplc", "aplf", "apli", "apln", "aplo", "dyalog", "dyapp", "mipage"],
+ "firstLineMatch": "(?x)\n# APL symbols\n[⌶-⍺]\n|\n\n# Hashbang\n^\\#!.*(?:\\s|\\/|(?<=!)\\b)\n\t(?:gnu[-._]?apl|aplx?|dyalog)\n(?:$|\\s)\n|\n\n# Modeline\n(?i:\n\t# Emacs\n\t-\\*-(?:\\s*(?=[^:;\\s]+\\s*-\\*-)|(?:.*?[;\\s]|(?<=-\\*-))mode\\s*:\\s*)\n\t\tapl\n\t(?=[\\s;]|(?<![-*])-\\*-).*?-\\*-\n\n\t|\n\n\t# Vim\n\t(?:(?:\\s|^)vi(?:m[<=>]?\\d+|m)?|\\sex)(?=:(?=\\s*set?\\s[^\\n:]+:)|:(?!\\s* set?\\s))(?:(?:\\s|\\s*:\\s*)\\w*(?:\\s*=(?:[^\\n\\\\\\s]|\\\\.)*)?)*[\\s:](?:filetype|ft|syntax)\\s*=\n\t\tapl\n\t(?=\\s|:|$)\n)",
+ "foldingStartMarker": "{",
+ "foldingStopMarker": "}",
+ "patterns": [
+ {
+ "match": "\\A#!.*$",
+ "name": "comment.line.shebang.apl"
+ },
+ {
+ "include": "#heredocs"
+ },
+ {
+ "include": "#main"
+ },
+ {
+ "contentName": "text.embedded.apl",
+ "begin": "^\\s*((\\))OFF|(\\])NEXTFILE)\\b(.*)$",
+ "end": "(?=N)A",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.command.eof.apl"
+ },
+ "2": {
+ "name": "punctuation.definition.command.apl"
+ },
+ "3": {
+ "name": "punctuation.definition.command.apl"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "name": "meta.round.bracketed.group.apl",
+ "patterns": [
+ {
+ "include": "#main"
+ }
+ ],
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.round.bracket.begin.apl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.round.bracket.end.apl"
+ }
+ }
+ },
+ {
+ "name": "meta.square.bracketed.group.apl",
+ "patterns": [
+ {
+ "include": "#main"
+ }
+ ],
+ "begin": "\\[",
+ "end": "\\]",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.square.bracket.begin.apl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.square.bracket.end.apl"
+ }
+ }
+ },
+ {
+ "name": "meta.system.command.apl",
+ "begin": "^\\s*((\\))\\S+)",
+ "end": "$",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.command.apl"
+ },
+ "2": {
+ "name": "punctuation.definition.command.apl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#command-arguments"
+ },
+ {
+ "include": "#command-switches"
+ },
+ {
+ "include": "#main"
+ }
+ ]
+ },
+ {
+ "name": "meta.user.command.apl",
+ "begin": "^\\s*((\\])\\S+)",
+ "end": "$",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.command.apl"
+ },
+ "2": {
+ "name": "punctuation.definition.command.apl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#command-arguments"
+ },
+ {
+ "include": "#command-switches"
+ },
+ {
+ "include": "#main"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "main": {
+ "patterns": [
+ {
+ "include": "#class"
+ },
+ {
+ "include": "#definition"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#label"
+ },
+ {
+ "include": "#sck"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#number"
+ },
+ {
+ "include": "#lambda"
+ },
+ {
+ "include": "#sysvars"
+ },
+ {
+ "include": "#symbols"
+ },
+ {
+ "include": "#name"
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "name": "comment.line.apl",
+ "begin": "⍝",
+ "end": "$",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.apl"
+ }
+ }
+ }
+ ]
+ },
+ "number": {
+ "patterns": [
+ {
+ "name": "constant.numeric.apl",
+ "match": "¯?[0-9][¯0-9A-Za-z]*(?:\\.[¯0-9Ee][¯0-9A-Za-z]*)*|¯?\\.[0-9Ee][¯0-9A-Za-z]*"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "name": "string.quoted.single.apl",
+ "begin": "'",
+ "end": "'|$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.apl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.apl"
+ }
+ },
+ "patterns": [
+ {
+ "match": "[^']*[^'\\n\\r\\\\]$",
+ "name": "invalid.illegal.string.apl"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.double.apl",
+ "begin": "\"",
+ "end": "\"|$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.apl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.apl"
+ }
+ },
+ "patterns": [
+ {
+ "match": "[^\"]*[^\"\\n\\r\\\\]$",
+ "name": "invalid.illegal.string.apl"
+ }
+ ]
+ }
+ ]
+ },
+ "name": {
+ "patterns": [
+ {
+ "name": "variable.other.readwrite.apl",
+ "match": "(?x)\n[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ]\n[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*"
+ }
+ ]
+ },
+ "label": {
+ "patterns": [
+ {
+ "name": "meta.label.apl",
+ "match": "(?x)\n^\\s*\n(\n\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ]\n\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*\n)\n(:)",
+ "captures": {
+ "1": {
+ "name": "entity.label.name.apl"
+ },
+ "2": {
+ "name": "punctuation.definition.label.end.apl"
+ }
+ }
+ }
+ ]
+ },
+ "symbols": {
+ "patterns": [
+ {
+ "match": "(?<=\\s)←(?=\\s|$)",
+ "name": "keyword.spaced.operator.assignment.apl"
+ },
+ {
+ "match": "(?<=\\s)→(?=\\s|$)",
+ "name": "keyword.spaced.control.goto.apl"
+ },
+ {
+ "match": "(?<=\\s)≡(?=\\s|$)",
+ "name": "keyword.spaced.operator.identical.apl"
+ },
+ {
+ "match": "(?<=\\s)≢(?=\\s|$)",
+ "name": "keyword.spaced.operator.not-identical.apl"
+ },
+ {
+ "match": "\\+",
+ "name": "keyword.operator.plus.apl"
+ },
+ {
+ "match": "[-−]",
+ "name": "keyword.operator.minus.apl"
+ },
+ {
+ "match": "×",
+ "name": "keyword.operator.times.apl"
+ },
+ {
+ "match": "÷",
+ "name": "keyword.operator.divide.apl"
+ },
+ {
+ "match": "⌊",
+ "name": "keyword.operator.floor.apl"
+ },
+ {
+ "match": "⌈",
+ "name": "keyword.operator.ceiling.apl"
+ },
+ {
+ "match": "[∣|]",
+ "name": "keyword.operator.absolute.apl"
+ },
+ {
+ "match": "[⋆*]",
+ "name": "keyword.operator.exponent.apl"
+ },
+ {
+ "match": "⍟",
+ "name": "keyword.operator.logarithm.apl"
+ },
+ {
+ "match": "○",
+ "name": "keyword.operator.circle.apl"
+ },
+ {
+ "match": "!",
+ "name": "keyword.operator.factorial.apl"
+ },
+ {
+ "match": "∧",
+ "name": "keyword.operator.and.apl"
+ },
+ {
+ "match": "∨",
+ "name": "keyword.operator.or.apl"
+ },
+ {
+ "match": "⍲",
+ "name": "keyword.operator.nand.apl"
+ },
+ {
+ "match": "⍱",
+ "name": "keyword.operator.nor.apl"
+ },
+ {
+ "match": "<",
+ "name": "keyword.operator.less.apl"
+ },
+ {
+ "match": "≤",
+ "name": "keyword.operator.less-or-equal.apl"
+ },
+ {
+ "match": "=",
+ "name": "keyword.operator.equal.apl"
+ },
+ {
+ "match": "≥",
+ "name": "keyword.operator.greater-or-equal.apl"
+ },
+ {
+ "match": ">",
+ "name": "keyword.operator.greater.apl"
+ },
+ {
+ "match": "≠",
+ "name": "keyword.operator.not-equal.apl"
+ },
+ {
+ "match": "[∼~]",
+ "name": "keyword.operator.tilde.apl"
+ },
+ {
+ "match": "\\?",
+ "name": "keyword.operator.random.apl"
+ },
+ {
+ "match": "[∊∈]",
+ "name": "keyword.operator.member-of.apl"
+ },
+ {
+ "match": "⍷",
+ "name": "keyword.operator.find.apl"
+ },
+ {
+ "match": ",",
+ "name": "keyword.operator.comma.apl"
+ },
+ {
+ "match": "⍪",
+ "name": "keyword.operator.comma-bar.apl"
+ },
+ {
+ "match": "⌷",
+ "name": "keyword.operator.squad.apl"
+ },
+ {
+ "match": "⍳",
+ "name": "keyword.operator.iota.apl"
+ },
+ {
+ "match": "⍴",
+ "name": "keyword.operator.rho.apl"
+ },
+ {
+ "match": "↑",
+ "name": "keyword.operator.take.apl"
+ },
+ {
+ "match": "↓",
+ "name": "keyword.operator.drop.apl"
+ },
+ {
+ "match": "⊣",
+ "name": "keyword.operator.left.apl"
+ },
+ {
+ "match": "⊢",
+ "name": "keyword.operator.right.apl"
+ },
+ {
+ "match": "⊤",
+ "name": "keyword.operator.encode.apl"
+ },
+ {
+ "match": "⊥",
+ "name": "keyword.operator.decode.apl"
+ },
+ {
+ "match": "\\/",
+ "name": "keyword.operator.slash.apl"
+ },
+ {
+ "match": "⌿",
+ "name": "keyword.operator.slash-bar.apl"
+ },
+ {
+ "match": "\\x5C",
+ "name": "keyword.operator.backslash.apl"
+ },
+ {
+ "match": "⍀",
+ "name": "keyword.operator.backslash-bar.apl"
+ },
+ {
+ "match": "⌽",
+ "name": "keyword.operator.rotate-last.apl"
+ },
+ {
+ "match": "⊖",
+ "name": "keyword.operator.rotate-first.apl"
+ },
+ {
+ "match": "⍉",
+ "name": "keyword.operator.transpose.apl"
+ },
+ {
+ "match": "⍋",
+ "name": "keyword.operator.grade-up.apl"
+ },
+ {
+ "match": "⍒",
+ "name": "keyword.operator.grade-down.apl"
+ },
+ {
+ "match": "⌹",
+ "name": "keyword.operator.quad-divide.apl"
+ },
+ {
+ "match": "≡",
+ "name": "keyword.operator.identical.apl"
+ },
+ {
+ "match": "≢",
+ "name": "keyword.operator.not-identical.apl"
+ },
+ {
+ "match": "⊂",
+ "name": "keyword.operator.enclose.apl"
+ },
+ {
+ "match": "⊃",
+ "name": "keyword.operator.pick.apl"
+ },
+ {
+ "match": "∩",
+ "name": "keyword.operator.intersection.apl"
+ },
+ {
+ "match": "∪",
+ "name": "keyword.operator.union.apl"
+ },
+ {
+ "match": "⍎",
+ "name": "keyword.operator.hydrant.apl"
+ },
+ {
+ "match": "⍕",
+ "name": "keyword.operator.thorn.apl"
+ },
+ {
+ "match": "⊆",
+ "name": "keyword.operator.underbar-shoe-left.apl"
+ },
+ {
+ "match": "⍸",
+ "name": "keyword.operator.underbar-iota.apl"
+ },
+ {
+ "match": "¨",
+ "name": "keyword.operator.each.apl"
+ },
+ {
+ "match": "⍤",
+ "name": "keyword.operator.rank.apl"
+ },
+ {
+ "match": "⌸",
+ "name": "keyword.operator.quad-equal.apl"
+ },
+ {
+ "match": "⍨",
+ "name": "keyword.operator.commute.apl"
+ },
+ {
+ "match": "⍣",
+ "name": "keyword.operator.power.apl"
+ },
+ {
+ "match": "\\.",
+ "name": "keyword.operator.dot.apl"
+ },
+ {
+ "match": "∘",
+ "name": "keyword.operator.jot.apl"
+ },
+ {
+ "match": "⍠",
+ "name": "keyword.operator.quad-colon.apl"
+ },
+ {
+ "match": "&",
+ "name": "keyword.operator.ampersand.apl"
+ },
+ {
+ "match": "⌶",
+ "name": "keyword.operator.i-beam.apl"
+ },
+ {
+ "match": "⌺",
+ "name": "keyword.operator.quad-diamond.apl"
+ },
+ {
+ "match": "@",
+ "name": "keyword.operator.at.apl"
+ },
+ {
+ "match": "◊",
+ "name": "keyword.operator.lozenge.apl"
+ },
+ {
+ "match": ";",
+ "name": "keyword.operator.semicolon.apl"
+ },
+ {
+ "match": "¯",
+ "name": "keyword.operator.high-minus.apl"
+ },
+ {
+ "match": "←",
+ "name": "keyword.operator.assignment.apl"
+ },
+ {
+ "match": "→",
+ "name": "keyword.control.goto.apl"
+ },
+ {
+ "match": "⍬",
+ "name": "constant.language.zilde.apl"
+ },
+ {
+ "match": "⋄",
+ "name": "keyword.operator.diamond.apl"
+ },
+ {
+ "match": "⍫",
+ "name": "keyword.operator.lock.apl"
+ },
+ {
+ "match": "⎕",
+ "name": "keyword.operator.quad.apl"
+ },
+ {
+ "match": "##",
+ "name": "constant.language.namespace.parent.apl"
+ },
+ {
+ "match": "#",
+ "name": "constant.language.namespace.root.apl"
+ },
+ {
+ "match": "⌻",
+ "name": "keyword.operator.quad-jot.apl"
+ },
+ {
+ "match": "⌼",
+ "name": "keyword.operator.quad-circle.apl"
+ },
+ {
+ "match": "⌾",
+ "name": "keyword.operator.circle-jot.apl"
+ },
+ {
+ "match": "⍁",
+ "name": "keyword.operator.quad-slash.apl"
+ },
+ {
+ "match": "⍂",
+ "name": "keyword.operator.quad-backslash.apl"
+ },
+ {
+ "match": "⍃",
+ "name": "keyword.operator.quad-less.apl"
+ },
+ {
+ "match": "⍄",
+ "name": "keyword.operator.greater.apl"
+ },
+ {
+ "match": "⍅",
+ "name": "keyword.operator.vane-left.apl"
+ },
+ {
+ "match": "⍆",
+ "name": "keyword.operator.vane-right.apl"
+ },
+ {
+ "match": "⍇",
+ "name": "keyword.operator.quad-arrow-left.apl"
+ },
+ {
+ "match": "⍈",
+ "name": "keyword.operator.quad-arrow-right.apl"
+ },
+ {
+ "match": "⍊",
+ "name": "keyword.operator.tack-down.apl"
+ },
+ {
+ "match": "⍌",
+ "name": "keyword.operator.quad-caret-down.apl"
+ },
+ {
+ "match": "⍍",
+ "name": "keyword.operator.quad-del-up.apl"
+ },
+ {
+ "match": "⍏",
+ "name": "keyword.operator.vane-up.apl"
+ },
+ {
+ "match": "⍐",
+ "name": "keyword.operator.quad-arrow-up.apl"
+ },
+ {
+ "match": "⍑",
+ "name": "keyword.operator.tack-up.apl"
+ },
+ {
+ "match": "⍓",
+ "name": "keyword.operator.quad-caret-up.apl"
+ },
+ {
+ "match": "⍔",
+ "name": "keyword.operator.quad-del-down.apl"
+ },
+ {
+ "match": "⍖",
+ "name": "keyword.operator.vane-down.apl"
+ },
+ {
+ "match": "⍗",
+ "name": "keyword.operator.quad-arrow-down.apl"
+ },
+ {
+ "match": "⍘",
+ "name": "keyword.operator.underbar-quote.apl"
+ },
+ {
+ "match": "⍚",
+ "name": "keyword.operator.underbar-diamond.apl"
+ },
+ {
+ "match": "⍛",
+ "name": "keyword.operator.underbar-jot.apl"
+ },
+ {
+ "match": "⍜",
+ "name": "keyword.operator.underbar-circle.apl"
+ },
+ {
+ "match": "⍞",
+ "name": "keyword.operator.quad-quote.apl"
+ },
+ {
+ "match": "⍡",
+ "name": "keyword.operator.dotted-tack-up.apl"
+ },
+ {
+ "match": "⍢",
+ "name": "keyword.operator.dotted-del.apl"
+ },
+ {
+ "match": "⍥",
+ "name": "keyword.operator.dotted-circle.apl"
+ },
+ {
+ "match": "⍦",
+ "name": "keyword.operator.stile-shoe-up.apl"
+ },
+ {
+ "match": "⍧",
+ "name": "keyword.operator.stile-shoe-left.apl"
+ },
+ {
+ "match": "⍩",
+ "name": "keyword.operator.dotted-greater.apl"
+ },
+ {
+ "match": "⍭",
+ "name": "keyword.operator.stile-tilde.apl"
+ },
+ {
+ "match": "⍮",
+ "name": "keyword.operator.underbar-semicolon.apl"
+ },
+ {
+ "match": "⍯",
+ "name": "keyword.operator.quad-not-equal.apl"
+ },
+ {
+ "match": "⍰",
+ "name": "keyword.operator.quad-question.apl"
+ }
+ ]
+ },
+ "definition": {
+ "patterns": [
+ {
+ "name": "meta.function.apl",
+ "begin": "(?x) ^\\s*? (?# 1: keyword.operator.nabla.apl) (∇) (?: \\s* (?: (?# 2: entity.function.return-value.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* ) | \\s* (?# 3: entity.function.return-value.shy.apl) ( (\\{) (?# 4: punctuation.definition.return-value.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\}) (?# 5: punctuation.definition.return-value.end.apl) | (\\() (?# 6: punctuation.definition.return-value.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\)) (?# 7: punctuation.definition.return-value.end.apl) | (\\(\\s*\\{) (?# 8: punctuation.definition.return-value.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\}\\s*\\)) (?# 9: punctuation.definition.return-value.end.apl) | (\\{\\s*\\() (?# 10: punctuation.definition.return-value.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\)\\s*\\}) (?# 11: punctuation.definition.return-value.end.apl) ) \\s* ) \\s* (?# 12: keyword.operator.assignment.apl) (←) )? \\s* (?: (?# MONADIC) (?: (?# 13: entity.function.name.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* ) \\s* (?# 14: entity.function.axis.apl) ( (?# 15: punctuation.definition.axis.begin.apl) (\\[) \\s* (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* (?# 16: invalid.illegal.extra-characters.apl) (.*?) | (?# 17: invalid.illegal.apl) ([^\\]]*) ) \\s* (?# 18: punctuation.definition.axis.end.apl) (\\]) )? \\s*? (?# 19: entity.function.arguments.right.apl) ( (?<=\\s|\\]) [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* | (\\() (?# 20: punctuation.definition.arguments.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\)) (?# 21: punctuation.definition.arguments.end.apl) ) \\s* (?=;|$) ) | (?# DYADIC/AMBIVALENT) (?#==================) (?: (?# 22: entity.function.arguments.left.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s+ ) | (?# 23: entity.function.arguments.left.optional.apl) ( (\\{) (?# 24: punctuation.definition.arguments.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\}) (?# 25: punctuation.definition.arguments.end.apl) | (\\(\\s*\\{) (?# 26: punctuation.definition.arguments.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\}\\s*\\)) (?# 27: punctuation.definition.arguments.end.apl) | (\\{\\s*\\() (?# 28: punctuation.definition.arguments.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\)\\s*\\}) (?# 29: punctuation.definition.arguments.end.apl) ) )? \\s* (?: (?# 30: entity.function.name.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* ) \\s* (?# 31: entity.function.axis.apl) ( (?# 32: punctuation.definition.axis.begin.apl) (\\[) \\s* (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* (?# 33: invalid.illegal.extra-characters.apl) (.*?) | (?# 34: invalid.illegal.apl) ([^\\]]*) ) \\s* (?# 35: punctuation.definition.axis.end.apl) (\\]) )? | (?# 36: entity.function.operands.apl) ( (?# 37: punctuation.definition.operands.begin.apl) (\\() (?# 38: entity.function.operands.left.apl) ( \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* )? \\s* (?# 39: entity.function.name.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* ) \\s*? (?# 40: entity.function.axis.apl) ( (?# 41: punctuation.definition.axis.begin.apl) (\\[) \\s* (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* (?# 42: invalid.illegal.extra-characters.apl) (.*?) | (?# 43: invalid.illegal.apl) ([^\\]]*) ) \\s* (?# 44: punctuation.definition.axis.end.apl) (\\]) )? \\s* (?# 45: entity.function.operands.right.apl) ( [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )? (?# 46: punctuation.definition.operands.end.apl) (\\)) ) ) \\s* (?# 47: entity.function.arguments.right.apl) ( (?<=\\s|\\]) [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* | \\s* (\\() (?# 48: punctuation.definition.arguments.begin.apl) (?: \\s* [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )* (\\)) (?# 49: punctuation.definition.arguments.end.apl) )? (?#==================) ) \\s* (?# 50: invalid.illegal.arguments.right.apl) ([^;]+)? (?# 51: entity.function.local-variables.apl) ( (?# 52: Include “;”) ( (?> \\s* ; (?: \\s* [⎕A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ] [A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]* \\s* )+ )+ ) | (?# 53: invalid.illegal.local-variables.apl) ([^⍝]+) )? \\s* (?# 54: comment.line.apl) (⍝.*)? $",
+ "end": "^\\s*?(?:(∇)|(⍫))\\s*?(⍝.*?)?$",
+ "patterns": [
+ {
+ "name": "entity.function.definition.apl",
+ "match": "(?x)\n^\\s*\n(\n\t(?>\n\t\t;\n\t\t(?:\n\t\t\t\\s*\n\t\t\t[⎕A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ]\n\t\t\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*\n\t\t\t\\s*\n\t\t)+\n\t)+\n)",
+ "captures": {
+ "0": {
+ "name": "entity.function.local-variables.apl"
+ },
+ "1": {
+ "patterns": [
+ {
+ "name": "punctuation.separator.apl",
+ "match": ";"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "$self"
+ }
+ ],
+ "beginCaptures": {
+ "0": {
+ "name": "entity.function.definition.apl"
+ },
+ "1": {
+ "name": "keyword.operator.nabla.apl"
+ },
+ "2": {
+ "name": "entity.function.return-value.apl"
+ },
+ "3": {
+ "name": "entity.function.return-value.shy.apl"
+ },
+ "4": {
+ "name": "punctuation.definition.return-value.begin.apl"
+ },
+ "5": {
+ "name": "punctuation.definition.return-value.end.apl"
+ },
+ "6": {
+ "name": "punctuation.definition.return-value.begin.apl"
+ },
+ "7": {
+ "name": "punctuation.definition.return-value.end.apl"
+ },
+ "8": {
+ "name": "punctuation.definition.return-value.begin.apl"
+ },
+ "9": {
+ "name": "punctuation.definition.return-value.end.apl"
+ },
+ "10": {
+ "name": "punctuation.definition.return-value.begin.apl"
+ },
+ "11": {
+ "name": "punctuation.definition.return-value.end.apl"
+ },
+ "12": {
+ "name": "keyword.operator.assignment.apl"
+ },
+ "13": {
+ "name": "entity.function.name.apl",
+ "patterns": [
+ {
+ "include": "#embolden"
+ }
+ ]
+ },
+ "14": {
+ "name": "entity.function.axis.apl"
+ },
+ "15": {
+ "name": "punctuation.definition.axis.begin.apl"
+ },
+ "16": {
+ "name": "invalid.illegal.extra-characters.apl"
+ },
+ "17": {
+ "name": "invalid.illegal.apl"
+ },
+ "18": {
+ "name": "punctuation.definition.axis.end.apl"
+ },
+ "19": {
+ "name": "entity.function.arguments.right.apl"
+ },
+ "20": {
+ "name": "punctuation.definition.arguments.begin.apl"
+ },
+ "21": {
+ "name": "punctuation.definition.arguments.end.apl"
+ },
+ "22": {
+ "name": "entity.function.arguments.left.apl"
+ },
+ "23": {
+ "name": "entity.function.arguments.left.optional.apl"
+ },
+ "24": {
+ "name": "punctuation.definition.arguments.begin.apl"
+ },
+ "25": {
+ "name": "punctuation.definition.arguments.end.apl"
+ },
+ "26": {
+ "name": "punctuation.definition.arguments.begin.apl"
+ },
+ "27": {
+ "name": "punctuation.definition.arguments.end.apl"
+ },
+ "28": {
+ "name": "punctuation.definition.arguments.begin.apl"
+ },
+ "29": {
+ "name": "punctuation.definition.arguments.end.apl"
+ },
+ "30": {
+ "name": "entity.function.name.apl",
+ "patterns": [
+ {
+ "include": "#embolden"
+ }
+ ]
+ },
+ "31": {
+ "name": "entity.function.axis.apl"
+ },
+ "32": {
+ "name": "punctuation.definition.axis.begin.apl"
+ },
+ "33": {
+ "name": "invalid.illegal.extra-characters.apl"
+ },
+ "34": {
+ "name": "invalid.illegal.apl"
+ },
+ "35": {
+ "name": "punctuation.definition.axis.end.apl"
+ },
+ "36": {
+ "name": "entity.function.operands.apl"
+ },
+ "37": {
+ "name": "punctuation.definition.operands.begin.apl"
+ },
+ "38": {
+ "name": "entity.function.operands.left.apl"
+ },
+ "39": {
+ "name": "entity.function.name.apl",
+ "patterns": [
+ {
+ "include": "#embolden"
+ }
+ ]
+ },
+ "40": {
+ "name": "entity.function.axis.apl"
+ },
+ "41": {
+ "name": "punctuation.definition.axis.begin.apl"
+ },
+ "42": {
+ "name": "invalid.illegal.extra-characters.apl"
+ },
+ "43": {
+ "name": "invalid.illegal.apl"
+ },
+ "44": {
+ "name": "punctuation.definition.axis.end.apl"
+ },
+ "45": {
+ "name": "entity.function.operands.right.apl"
+ },
+ "46": {
+ "name": "punctuation.definition.operands.end.apl"
+ },
+ "47": {
+ "name": "entity.function.arguments.right.apl"
+ },
+ "48": {
+ "name": "punctuation.definition.arguments.begin.apl"
+ },
+ "49": {
+ "name": "punctuation.definition.arguments.end.apl"
+ },
+ "50": {
+ "name": "invalid.illegal.arguments.right.apl"
+ },
+ "51": {
+ "name": "entity.function.local-variables.apl"
+ },
+ "52": {
+ "patterns": [
+ {
+ "name": "punctuation.separator.apl",
+ "match": ";"
+ }
+ ]
+ },
+ "53": {
+ "name": "invalid.illegal.local-variables.apl"
+ },
+ "54": {
+ "name": "comment.line.apl"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.nabla.apl"
+ },
+ "2": {
+ "name": "keyword.operator.lock.apl"
+ },
+ "3": {
+ "name": "comment.line.apl"
+ }
+ }
+ }
+ ]
+ },
+ "embolden": {
+ "patterns": [
+ {
+ "name": "markup.bold.identifier.apl",
+ "match": ".+"
+ }
+ ]
+ },
+ "lambda": {
+ "name": "meta.lambda.function.apl",
+ "begin": "\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.lambda.begin.apl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.lambda.end.apl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#main"
+ },
+ {
+ "include": "#lambda-variables"
+ }
+ ]
+ },
+ "lambda-variables": {
+ "patterns": [
+ {
+ "match": "⍺⍺",
+ "name": "constant.language.lambda.operands.left.apl"
+ },
+ {
+ "match": "⍵⍵",
+ "name": "constant.language.lambda.operands.right.apl"
+ },
+ {
+ "match": "[⍺⍶]",
+ "name": "constant.language.lambda.arguments.left.apl"
+ },
+ {
+ "match": "[⍵⍹]",
+ "name": "constant.language.lambda.arguments.right.apl"
+ },
+ {
+ "match": "χ",
+ "name": "constant.language.lambda.arguments.axis.apl"
+ },
+ {
+ "match": "∇∇",
+ "name": "constant.language.lambda.operands.self.operator.apl"
+ },
+ {
+ "match": "∇",
+ "name": "constant.language.lambda.operands.self.function.apl"
+ },
+ {
+ "match": "λ",
+ "name": "constant.language.lambda.symbol.apl"
+ }
+ ]
+ },
+ "sysvars": {
+ "patterns": [
+ {
+ "match": "(?:(⎕)|(⍞))[A-Za-z]*",
+ "name": "support.system.variable.apl",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.quad.apl"
+ },
+ "2": {
+ "name": "punctuation.definition.quad-quote.apl"
+ }
+ }
+ }
+ ]
+ },
+ "command-arguments": {
+ "patterns": [
+ {
+ "name": "variable.parameter.argument.apl",
+ "begin": "\\b(?=\\S)",
+ "end": "\\b(?=\\s)",
+ "patterns": [
+ {
+ "include": "#main"
+ }
+ ]
+ }
+ ]
+ },
+ "command-switches": {
+ "patterns": [
+ {
+ "name": "variable.parameter.switch.apl",
+ "begin": "(?x)\n(?<=\\s)(-)\n(\n\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ]\n\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*\n)\n(=)",
+ "end": "\\b(?=\\s)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.delimiter.switch.apl"
+ },
+ "2": {
+ "name": "entity.name.switch.apl"
+ },
+ "3": {
+ "name": "punctuation.assignment.switch.apl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#main"
+ }
+ ]
+ },
+ {
+ "name": "variable.parameter.switch.apl",
+ "match": "(?x)\n(?<=\\s)(-)\n(\n\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ]\n\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*\n)\n(?!=)",
+ "captures": {
+ "1": {
+ "name": "punctuation.delimiter.switch.apl"
+ },
+ "2": {
+ "name": "entity.name.switch.apl"
+ }
+ }
+ }
+ ]
+ },
+ "sck": {
+ "patterns": [
+ {
+ "name": "keyword.control.sck.apl",
+ "match": "(?<=\\s|^)(:)[A-Za-z]+",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.sck.begin.apl"
+ }
+ }
+ }
+ ]
+ },
+ "class": {
+ "patterns": [
+ {
+ "begin": "(?x)\n(?<=\\s|^)\n((:)Class)\n\\s+\n(\n\t'[^']*'?\n\t|\n\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ]\n\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*\n)\n\\s*\n(\n\t(:)\n\t\\s*\n\t(?:\n\t\t(\n\t\t\t'[^']*'?\n\t\t\t|\n\t\t\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ]\n\t\t\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*\n\t\t)\n\t\t\\s*\n\t)?\n)?\n(.*?)$",
+ "end": "(?<=\\s|^)((:)EndClass)(?=\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.class.apl"
+ },
+ "1": {
+ "name": "keyword.control.class.apl"
+ },
+ "2": {
+ "name": "punctuation.definition.class.apl"
+ },
+ "3": {
+ "name": "entity.name.type.class.apl",
+ "patterns": [
+ {
+ "include": "#strings"
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.other.inherited-class.apl"
+ },
+ "5": {
+ "name": "punctuation.separator.inheritance.apl"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#strings"
+ }
+ ]
+ },
+ "7": {
+ "name": "entity.other.class.interfaces.apl",
+ "patterns": [
+ {
+ "include": "#csv"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.class.apl"
+ },
+ "2": {
+ "name": "punctuation.definition.class.apl"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.field.apl",
+ "begin": "(?<=\\s|^)(:)Field(?=\\s)",
+ "end": "\\s*(←.*)?(?:$|(?=⍝))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.field.apl"
+ },
+ "1": {
+ "name": "punctuation.definition.field.apl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "entity.other.initial-value.apl"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#main"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "name": "storage.modifier.access.public.apl",
+ "match": "(?<=\\s|^)Public(?=\\s|$)"
+ },
+ {
+ "name": "storage.modifier.access.private.apl",
+ "match": "(?<=\\s|^)Private(?=\\s|$)"
+ },
+ {
+ "name": "storage.modifier.shared.apl",
+ "match": "(?<=\\s|^)Shared(?=\\s|$)"
+ },
+ {
+ "name": "storage.modifier.instance.apl",
+ "match": "(?<=\\s|^)Instance(?=\\s|$)"
+ },
+ {
+ "name": "storage.modifier.readonly.apl",
+ "match": "(?<=\\s|^)ReadOnly(?=\\s|$)"
+ },
+ {
+ "name": "entity.name.type.apl",
+ "match": "(?x)\n(\n\t'[^']*'?\n\t|\n\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ]\n\t[A-Z_a-zÀ-ÖØ-Ýßà-öø-üþ∆⍙Ⓐ-Ⓩ¯0-9]*\n)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#strings"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "csv": {
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.separator.apl"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "heredocs": {
+ "patterns": [
+ {
+ "name": "meta.heredoc.apl",
+ "begin": "^.*?⎕INP\\s+('|\")((?i).*?HTML?.*?|END-OF-⎕INP)\\1.*$",
+ "end": "^.*?\\2.*?$",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#main"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "constant.other.apl"
+ }
+ },
+ "contentName": "text.embedded.html.basic",
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ },
+ {
+ "include": "#embedded-apl"
+ }
+ ]
+ },
+ {
+ "name": "meta.heredoc.apl",
+ "begin": "^.*?⎕INP\\s+('|\")((?i).*?(?:XML|XSLT|SVG|RSS).*?)\\1.*$",
+ "end": "^.*?\\2.*?$",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#main"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "constant.other.apl"
+ }
+ },
+ "contentName": "text.embedded.xml",
+ "patterns": [
+ {
+ "include": "text.xml"
+ },
+ {
+ "include": "#embedded-apl"
+ }
+ ]
+ },
+ {
+ "name": "meta.heredoc.apl",
+ "begin": "^.*?⎕INP\\s+('|\")((?i).*?(?:CSS|stylesheet).*?)\\1.*$",
+ "end": "^.*?\\2.*?$",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#main"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "constant.other.apl"
+ }
+ },
+ "contentName": "source.embedded.css",
+ "patterns": [
+ {
+ "include": "source.css"
+ },
+ {
+ "include": "#embedded-apl"
+ }
+ ]
+ },
+ {
+ "name": "meta.heredoc.apl",
+ "begin": "^.*?⎕INP\\s+('|\")((?i).*?(?:JS(?!ON)|(?:ECMA|J|Java).?Script).*?)\\1.*$",
+ "end": "^.*?\\2.*?$",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#main"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "constant.other.apl"
+ }
+ },
+ "contentName": "source.embedded.js",
+ "patterns": [
+ {
+ "include": "source.js"
+ },
+ {
+ "include": "#embedded-apl"
+ }
+ ]
+ },
+ {
+ "name": "meta.heredoc.apl",
+ "begin": "^.*?⎕INP\\s+('|\")((?i).*?(?:JSON).*?)\\1.*$",
+ "end": "^.*?\\2.*?$",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#main"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "constant.other.apl"
+ }
+ },
+ "contentName": "source.embedded.json",
+ "patterns": [
+ {
+ "include": "source.json"
+ },
+ {
+ "include": "#embedded-apl"
+ }
+ ]
+ },
+ {
+ "name": "meta.heredoc.apl",
+ "begin": "^.*?⎕INP\\s+('|\")(?i)((?:Raw|Plain)?\\s*Te?xt)\\1.*$",
+ "end": "^.*?\\2.*?$",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#main"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "constant.other.apl"
+ }
+ },
+ "contentName": "text.embedded.plain",
+ "patterns": [
+ {
+ "include": "#embedded-apl"
+ }
+ ]
+ },
+ {
+ "name": "meta.heredoc.apl",
+ "begin": "^.*?⎕INP\\s+('|\")(.*?)\\1.*$",
+ "end": "^.*?\\2.*?$",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#main"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "constant.other.apl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "embedded-apl": {
+ "patterns": [
+ {
+ "name": "meta.embedded.block.apl",
+ "begin": "(?i)(<(\\?|%)(?:apl(?=\\s+)|=))",
+ "end": "(?<=\\s)(\\2>)",
+ "patterns": [
+ {
+ "include": "#main"
+ }
+ ],
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.embedded.begin.apl"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.embedded.end.apl"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/applescript.tmLanguage.json b/node_modules/shiki/languages/applescript.tmLanguage.json
new file mode 100644
index 0000000..9815ca7
--- /dev/null
+++ b/node_modules/shiki/languages/applescript.tmLanguage.json
@@ -0,0 +1,1403 @@
+{
+ "fileTypes": ["applescript", "scpt", "script editor"],
+ "firstLineMatch": "^#!.*(osascript)",
+ "keyEquivalent": "^~A",
+ "name": "applescript",
+ "patterns": [
+ {
+ "include": "#blocks"
+ },
+ {
+ "include": "#inline"
+ }
+ ],
+ "repository": {
+ "attributes.considering-ignoring": {
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.separator.array.attributes.applescript"
+ },
+ {
+ "match": "\\b(and)\\b",
+ "name": "keyword.control.attributes.and.applescript"
+ },
+ {
+ "match": "\\b(?i:case|diacriticals|hyphens|numeric\\s+strings|punctuation|white\\s+space)\\b",
+ "name": "constant.other.attributes.text.applescript"
+ },
+ {
+ "match": "\\b(?i:application\\s+responses)\\b",
+ "name": "constant.other.attributes.application.applescript"
+ }
+ ]
+ },
+ "blocks": {
+ "patterns": [
+ {
+ "begin": "^\\s*(script)\\s+(\\w+)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.script.applescript"
+ },
+ "2": {
+ "name": "entity.name.type.script-object.applescript"
+ }
+ },
+ "end": "^\\s*(end(?:\\s+script)?)(?=\\s*(--.*?)?$)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.script.applescript"
+ }
+ },
+ "name": "meta.block.script.applescript",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^(?x)\n\t\t\t\t\t\t\\s*(to|on)\\s+ \t\t\t\t\t# \"on\" or \"to\"\n\t\t\t\t\t\t(\\w+)\t\t\t\t\t\t\t# function name\n\t\t\t\t\t\t(\\()\t\t\t\t\t\t\t# opening paren\n\t\t\t\t\t\t\t((?:[\\s,:\\{\\}]*(?:\\w+)?)*)\t# parameters\n\t\t\t\t\t\t(\\))\t\t\t\t\t\t\t# closing paren\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.function.applescript"
+ },
+ "2": {
+ "name": "entity.name.function.handler.applescript"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.applescript"
+ },
+ "4": {
+ "name": "variable.parameter.handler.applescript"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.end.applescript"
+ }
+ },
+ "comment": "\n\t\t\t\t\t\tThis is not a very well-designed rule. For now,\n\t\t\t\t\t\twe can leave it like this though, as it sorta works.\n\t\t\t\t\t",
+ "end": "^\\s*(end)(?:\\s+(\\2))?(?=\\s*(--.*?)?$)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.function.applescript"
+ }
+ },
+ "name": "meta.function.positional.applescript",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^(?x)\n\t\t\t\t\t\t\\s*(to|on)\\s+ \t\t\t\t\t# \"on\" or \"to\"\n\t\t\t\t\t\t(\\w+)\t\t\t\t\t\t\t# function name\n\t\t\t\t\t\t(?:\\s+\n\t\t\t\t\t\t\t(of|in)\\s+\t\t\t\t\t# \"of\" or \"in\"\n\t\t\t\t\t\t\t(\\w+)\t\t\t\t\t\t# direct parameter\n\t\t\t\t\t\t)?\n\t\t\t\t\t\t(?=\\s+(above|against|apart\\s+from|around|aside\\s+from|at|below|beneath|beside|between|by|for|from|instead\\s+of|into|on|onto|out\\s+of|over|thru|under)\\b)\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.function.applescript"
+ },
+ "2": {
+ "name": "entity.name.function.handler.applescript"
+ },
+ "3": {
+ "name": "keyword.control.function.applescript"
+ },
+ "4": {
+ "name": "variable.parameter.handler.direct.applescript"
+ }
+ },
+ "comment": "TODO: match `given` parameters",
+ "end": "^\\s*(end)(?:\\s+(\\2))?(?=\\s*(--.*?)?$)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.function.applescript"
+ }
+ },
+ "name": "meta.function.prepositional.applescript",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.preposition.applescript"
+ },
+ "2": {
+ "name": "variable.parameter.handler.applescript"
+ }
+ },
+ "match": "\\b(?i:above|against|apart\\s+from|around|aside\\s+from|at|below|beneath|beside|between|by|for|from|instead\\s+of|into|on|onto|out\\s+of|over|thru|under)\\s+(\\w+)\\b"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^(?x)\n\t\t\t\t\t\t\\s*(to|on)\\s+ \t\t\t\t\t# \"on\" or \"to\"\n\t\t\t\t\t\t(\\w+)\t\t\t\t\t\t\t# function name\n\t\t\t\t\t\t(?=\\s*(--.*?)?$)\t\t\t\t# nothing else\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.function.applescript"
+ },
+ "2": {
+ "name": "entity.name.function.handler.applescript"
+ }
+ },
+ "end": "^\\s*(end)(?:\\s+(\\2))?(?=\\s*(--.*?)?$)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.function.applescript"
+ }
+ },
+ "name": "meta.function.parameterless.applescript",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "#blocks.tell"
+ },
+ {
+ "include": "#blocks.repeat"
+ },
+ {
+ "include": "#blocks.statement"
+ },
+ {
+ "include": "#blocks.other"
+ }
+ ]
+ },
+ "blocks.other": {
+ "patterns": [
+ {
+ "begin": "^\\s*(considering)\\b",
+ "end": "^\\s*(end(?:\\s+considering)?)(?=\\s*(--.*?)?$)",
+ "name": "meta.block.considering.applescript",
+ "patterns": [
+ {
+ "begin": "(?<=considering)",
+ "end": "(?<!¬)$",
+ "name": "meta.array.attributes.considering.applescript",
+ "patterns": [
+ {
+ "include": "#attributes.considering-ignoring"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=ignoring)",
+ "end": "(?<!¬)$",
+ "name": "meta.array.attributes.ignoring.applescript",
+ "patterns": [
+ {
+ "include": "#attributes.considering-ignoring"
+ }
+ ]
+ },
+ {
+ "match": "\\b(but)\\b",
+ "name": "keyword.control.but.applescript"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(ignoring)\\b",
+ "end": "^\\s*(end(?:\\s+ignoring)?)(?=\\s*(--.*?)?$)",
+ "name": "meta.block.ignoring.applescript",
+ "patterns": [
+ {
+ "begin": "(?<=considering)",
+ "end": "(?<!¬)$",
+ "name": "meta.array.attributes.considering.applescript",
+ "patterns": [
+ {
+ "include": "#attributes.considering-ignoring"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=ignoring)",
+ "end": "(?<!¬)$",
+ "name": "meta.array.attributes.ignoring.applescript",
+ "patterns": [
+ {
+ "include": "#attributes.considering-ignoring"
+ }
+ ]
+ },
+ {
+ "match": "\\b(but)\\b",
+ "name": "keyword.control.but.applescript"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(if)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.if.applescript"
+ }
+ },
+ "end": "^\\s*(end(?:\\s+if)?)(?=\\s*(--.*?)?$)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.applescript"
+ }
+ },
+ "name": "meta.block.if.applescript",
+ "patterns": [
+ {
+ "match": "\\b(then)\\b",
+ "name": "keyword.control.then.applescript"
+ },
+ {
+ "match": "\\b(else\\s+if)\\b",
+ "name": "keyword.control.else-if.applescript"
+ },
+ {
+ "match": "\\b(else)\\b",
+ "name": "keyword.control.else.applescript"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(try)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.try.applescript"
+ }
+ },
+ "end": "^\\s*(end(?:\\s+(try|error))?)(?=\\s*(--.*?)?$)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.applescript"
+ }
+ },
+ "name": "meta.block.try.applescript",
+ "patterns": [
+ {
+ "begin": "^\\s*(on\\s+error)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.exception.on-error.applescript"
+ }
+ },
+ "end": "(?<!¬)$",
+ "name": "meta.property.error.applescript",
+ "patterns": [
+ {
+ "match": "\\b(?i:number|partial|from|to)\\b",
+ "name": "keyword.control.exception.modifier.applescript"
+ },
+ {
+ "include": "#inline"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(using\\s+terms\\s+from)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.terms.applescript"
+ }
+ },
+ "end": "^\\s*(end(?:\\s+using\\s+terms\\s+from)?)(?=\\s*(--.*?)?$)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.applescript"
+ }
+ },
+ "name": "meta.block.terms.applescript",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(with\\s+timeout(\\s+of)?)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.timeout.applescript"
+ }
+ },
+ "end": "^\\s*(end(?:\\s+timeout)?)(?=\\s*(--.*?)?$)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.applescript"
+ }
+ },
+ "name": "meta.block.timeout.applescript",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(with\\s+transaction(\\s+of)?)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.transaction.applescript"
+ }
+ },
+ "end": "^\\s*(end(?:\\s+transaction)?)(?=\\s*(--.*?)?$)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.applescript"
+ }
+ },
+ "name": "meta.block.transaction.applescript",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "blocks.repeat": {
+ "patterns": [
+ {
+ "begin": "^\\s*(repeat)\\s+(until)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.repeat.applescript"
+ },
+ "2": {
+ "name": "keyword.control.until.applescript"
+ }
+ },
+ "end": "^\\s*(end(?:\\s+repeat)?)(?=\\s*(--.*?)?$)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.applescript"
+ }
+ },
+ "name": "meta.block.repeat.until.applescript",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(repeat)\\s+(while)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.repeat.applescript"
+ },
+ "2": {
+ "name": "keyword.control.while.applescript"
+ }
+ },
+ "end": "^\\s*(end(?:\\s+repeat)?)(?=\\s*(--.*?)?$)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.applescript"
+ }
+ },
+ "name": "meta.block.repeat.while.applescript",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(repeat)\\s+(with)\\s+(\\w+)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.repeat.applescript"
+ },
+ "2": {
+ "name": "keyword.control.until.applescript"
+ },
+ "3": {
+ "name": "variable.parameter.loop.applescript"
+ }
+ },
+ "end": "^\\s*(end(?:\\s+repeat)?)(?=\\s*(--.*?)?$)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.applescript"
+ }
+ },
+ "name": "meta.block.repeat.with.applescript",
+ "patterns": [
+ {
+ "match": "\\b(from|to|by)\\b",
+ "name": "keyword.control.modifier.range.applescript"
+ },
+ {
+ "match": "\\b(in)\\b",
+ "name": "keyword.control.modifier.list.applescript"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(repeat)\\b(?=\\s*(--.*?)?$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.repeat.applescript"
+ }
+ },
+ "end": "^\\s*(end(?:\\s+repeat)?)(?=\\s*(--.*?)?$)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.applescript"
+ }
+ },
+ "name": "meta.block.repeat.forever.applescript",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(repeat)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.repeat.applescript"
+ }
+ },
+ "end": "^\\s*(end(?:\\s+repeat)?)(?=\\s*(--.*?)?$)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.applescript"
+ }
+ },
+ "name": "meta.block.repeat.times.applescript",
+ "patterns": [
+ {
+ "match": "\\b(times)\\b",
+ "name": "keyword.control.times.applescript"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "blocks.statement": {
+ "patterns": [
+ {
+ "begin": "\\b(prop(?:erty)?)\\s+(\\w+)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.def.property.applescript"
+ },
+ "2": {
+ "name": "variable.other.property.applescript"
+ }
+ },
+ "end": "(?<!¬)$",
+ "name": "meta.statement.property.applescript",
+ "patterns": [
+ {
+ "match": ":",
+ "name": "punctuation.separator.key-value.property.applescript"
+ },
+ {
+ "include": "#inline"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(set)\\s+(\\w+)\\s+(to)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.def.set.applescript"
+ },
+ "2": {
+ "name": "variable.other.readwrite.set.applescript"
+ },
+ "3": {
+ "name": "keyword.control.def.set.applescript"
+ }
+ },
+ "end": "(?<!¬)$",
+ "name": "meta.statement.set.applescript",
+ "patterns": [
+ {
+ "include": "#inline"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(local)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.def.local.applescript"
+ }
+ },
+ "end": "(?<!¬)$",
+ "name": "meta.statement.local.applescript",
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.separator.variables.local.applescript"
+ },
+ {
+ "match": "\\b\\w+",
+ "name": "variable.other.readwrite.local.applescript"
+ },
+ {
+ "include": "#inline"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(global)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.def.global.applescript"
+ }
+ },
+ "end": "(?<!¬)$",
+ "name": "meta.statement.global.applescript",
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.separator.variables.global.applescript"
+ },
+ {
+ "match": "\\b\\w+",
+ "name": "variable.other.readwrite.global.applescript"
+ },
+ {
+ "include": "#inline"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(error)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.exception.error.applescript"
+ }
+ },
+ "end": "(?<!¬)$",
+ "name": "meta.statement.error.applescript",
+ "patterns": [
+ {
+ "match": "\\b(number|partial|from|to)\\b",
+ "name": "keyword.control.exception.modifier.applescript"
+ },
+ {
+ "include": "#inline"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(if)\\b(?=.*\\bthen\\b(?!\\s*(--.*?)?$))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.if.applescript"
+ }
+ },
+ "end": "(?<!¬)$",
+ "name": "meta.statement.if-then.applescript",
+ "patterns": [
+ {
+ "include": "#inline"
+ }
+ ]
+ }
+ ]
+ },
+ "blocks.tell": {
+ "patterns": [
+ {
+ "begin": "^\\s*(tell)\\s+(?=app(lication)?\\s+\"(?i:textmate)\")(?!.*\\bto(?!\\s+tell)\\b)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.tell.applescript"
+ }
+ },
+ "comment": "tell Textmate",
+ "end": "^\\s*(end(?:\\s+tell)?)(?=\\s*(--.*?)?$)",
+ "name": "meta.block.tell.application.textmate.applescript",
+ "patterns": [
+ {
+ "include": "#textmate"
+ },
+ {
+ "include": "#standard-suite"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(tell)\\s+(?=app(lication)?\\s+\"(?i:finder)\")(?!.*\\bto(?!\\s+tell)\\b)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.tell.applescript"
+ }
+ },
+ "comment": "tell Finder",
+ "end": "^\\s*(end(?:\\s+tell)?)(?=\\s*(--.*?)?$)",
+ "name": "meta.block.tell.application.finder.applescript",
+ "patterns": [
+ {
+ "include": "#finder"
+ },
+ {
+ "include": "#standard-suite"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(tell)\\s+(?=app(lication)?\\s+\"(?i:system events)\")(?!.*\\bto(?!\\s+tell)\\b)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.tell.applescript"
+ }
+ },
+ "comment": "tell System Events",
+ "end": "^\\s*(end(?:\\s+tell)?)(?=\\s*(--.*?)?$)",
+ "name": "meta.block.tell.application.system-events.applescript",
+ "patterns": [
+ {
+ "include": "#system-events"
+ },
+ {
+ "include": "#standard-suite"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(tell)\\s+(?=app(lication)?\\s+\"(?i:itunes)\")(?!.*\\bto(?!\\s+tell)\\b)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.tell.applescript"
+ }
+ },
+ "comment": "tell iTunes",
+ "end": "^\\s*(end(?:\\s+tell)?)(?=\\s*(--.*?)?$)",
+ "name": "meta.block.tell.application.itunes.applescript",
+ "patterns": [
+ {
+ "include": "#itunes"
+ },
+ {
+ "include": "#standard-suite"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(tell)\\s+(?=app(lication)?\\s+process\\b)(?!.*\\bto(?!\\s+tell)\\b)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.tell.applescript"
+ }
+ },
+ "comment": "tell generic application process",
+ "end": "^\\s*(end(?:\\s+tell)?)(?=\\s*(--.*?)?$)",
+ "name": "meta.block.tell.application-process.generic.applescript",
+ "patterns": [
+ {
+ "include": "#standard-suite"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(tell)\\s+(?=app(lication)?\\b)(?!.*\\bto(?!\\s+tell)\\b)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.tell.applescript"
+ }
+ },
+ "comment": "tell generic application",
+ "end": "^\\s*(end(?:\\s+tell)?)(?=\\s*(--.*?)?$)",
+ "name": "meta.block.tell.application.generic.applescript",
+ "patterns": [
+ {
+ "include": "#standard-suite"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(tell)\\s+(?!.*\\bto(?!\\s+tell)\\b)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.tell.applescript"
+ }
+ },
+ "comment": "generic tell block",
+ "end": "^\\s*(end(?:\\s+tell)?)(?=\\s*(--.*?)?$)",
+ "name": "meta.block.tell.generic.applescript",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(tell)\\s+(?=.*\\bto\\b)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.tell.applescript"
+ }
+ },
+ "comment": "tell … to statement",
+ "end": "(?<!¬)$",
+ "name": "meta.block.tell.generic.applescript",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "built-in": {
+ "patterns": [
+ {
+ "include": "#built-in.constant"
+ },
+ {
+ "include": "#built-in.keyword"
+ },
+ {
+ "include": "#built-in.support"
+ },
+ {
+ "include": "#built-in.punctuation"
+ }
+ ]
+ },
+ "built-in.constant": {
+ "patterns": [
+ {
+ "comment": "yes/no can’t always be used as booleans, e.g. in an if() expression. But they work e.g. for boolean arguments.",
+ "match": "\\b(?i:true|false|yes|no)\\b",
+ "name": "constant.language.boolean.applescript"
+ },
+ {
+ "match": "\\b(?i:null|missing\\s+value)\\b",
+ "name": "constant.language.null.applescript"
+ },
+ {
+ "match": "-?\\b\\d+((\\.(\\d+\\b)?)?(?i:e\\+?\\d*\\b)?|\\b)",
+ "name": "constant.numeric.applescript"
+ },
+ {
+ "match": "\\b(?i:space|tab|return|linefeed|quote)\\b",
+ "name": "constant.other.text.applescript"
+ },
+ {
+ "match": "\\b(?i:all\\s+(caps|lowercase)|bold|condensed|expanded|hidden|italic|outline|plain|shadow|small\\s+caps|strikethrough|(sub|super)script|underline)\\b",
+ "name": "constant.other.styles.applescript"
+ },
+ {
+ "match": "\\b(?i:Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\\b",
+ "name": "constant.other.time.month.applescript"
+ },
+ {
+ "match": "\\b(?i:Mon(day)?|Tue(sday)?|Wed(nesday)?|Thu(rsday)?|Fri(day)?|Sat(urday)?|Sun(day)?)\\b",
+ "name": "constant.other.time.weekday.applescript"
+ },
+ {
+ "match": "\\b(?i:AppleScript|pi|result|version|current\\s+application|its?|m[ey])\\b",
+ "name": "constant.other.miscellaneous.applescript"
+ },
+ {
+ "match": "\\b(?i:text\\s+item\\s+delimiters|print\\s+(length|depth))\\b",
+ "name": "variable.language.applescript"
+ }
+ ]
+ },
+ "built-in.keyword": {
+ "patterns": [
+ {
+ "match": "(&|\\*|\\+|-|/|÷|\\^)",
+ "name": "keyword.operator.arithmetic.applescript"
+ },
+ {
+ "match": "(=|≠|>|<|≥|>=|≤|<=)",
+ "name": "keyword.operator.comparison.applescript"
+ },
+ {
+ "match": "(?ix)\\b\n\t\t\t\t\t\t(and|or|div|mod|as|not\n\t\t\t\t\t\t|(a\\s+)?(ref(\\s+to)?|reference\\s+to)\n\t\t\t\t\t\t|equal(s|\\s+to)|contains?|comes\\s+(after|before)|(start|begin|end)s?\\s+with\n\t\t\t\t\t\t)\n\t\t\t\t\t\\b",
+ "name": "keyword.operator.word.applescript"
+ },
+ {
+ "comment": "In double quotes so we can use a single quote in the keywords.",
+ "match": "(?ix)\\b\n\t\t\t\t\t\t(is(n't|\\s+not)?(\\s+(equal(\\s+to)?|(less|greater)\\s+than(\\s+or\\s+equal(\\s+to)?)?|in|contained\\s+by))?\n\t\t\t\t\t\t|does(n't|\\s+not)\\s+(equal|come\\s+(before|after)|contain)\n\t\t\t\t\t\t)\n\t\t\t\t\t\\b",
+ "name": "keyword.operator.word.applescript"
+ },
+ {
+ "match": "\\b(?i:some|every|whose|where|that|id|index|\\d+(st|nd|rd|th)|first|second|third|fourth|fifth|sixth|seventh|eighth|ninth|tenth|last|front|back|middle|named|beginning|end|from|to|thr(u|ough)|before|(front|back|beginning|end)\\s+of|after|behind|in\\s+(front|back|beginning|end)\\s+of)\\b",
+ "name": "keyword.operator.reference.applescript"
+ },
+ {
+ "match": "\\b(?i:continue|return|exit(\\s+repeat)?)\\b",
+ "name": "keyword.control.loop.applescript"
+ },
+ {
+ "match": "\\b(?i:about|above|after|against|and|apart\\s+from|around|as|aside\\s+from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|contain|contains|contains|copy|div|does|eighth|else|end|equal|equals|error|every|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead\\s+of|into|is|it|its|last|local|me|middle|mod|my|ninth|not|of|on|onto|or|out\\s+of|over|prop|property|put|ref|reference|repeat|returning|script|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\\b",
+ "name": "keyword.other.applescript"
+ }
+ ]
+ },
+ "built-in.punctuation": {
+ "patterns": [
+ {
+ "match": "¬",
+ "name": "punctuation.separator.continuation.line.applescript"
+ },
+ {
+ "comment": "the : in property assignments",
+ "match": ":",
+ "name": "punctuation.separator.key-value.property.applescript"
+ },
+ {
+ "comment": "the parentheses in groups",
+ "match": "[()]",
+ "name": "punctuation.section.group.applescript"
+ }
+ ]
+ },
+ "built-in.support": {
+ "patterns": [
+ {
+ "match": "\\b(?i:POSIX\\s+path|frontmost|id|name|running|version|days?|weekdays?|months?|years?|time|date\\s+string|time\\s+string|length|rest|reverse|items?|contents|quoted\\s+form|characters?|paragraphs?|words?)\\b",
+ "name": "support.function.built-in.property.applescript"
+ },
+ {
+ "match": "\\b(?i:activate|log|clipboard\\s+info|set\\s+the\\s+clipboard\\s+to|the\\s+clipboard|info\\s+for|list\\s+(disks|folder)|mount\\s+volume|path\\s+to(\\s+resource)?|close\\s+access|get\\s+eof|open\\s+for\\s+access|read|set\\s+eof|write|open\\s+location|current\\s+date|do\\s+shell\\s+script|get\\s+volume\\s+settings|random\\s+number|round|set\\s+volume|system\\s+(attribute|info)|time\\s+to\\s+GMT|load\\s+script|run\\s+script|scripting\\s+components|store\\s+script|copy|count|get|launch|run|set|ASCII\\s+(character|number)|localized\\s+string|offset|summarize|beep|choose\\s+(application|color|file(\\s+name)?|folder|from\\s+list|remote\\s+application|URL)|delay|display\\s+(alert|dialog)|say)\\b",
+ "name": "support.function.built-in.command.applescript"
+ },
+ {
+ "match": "\\b(?i:get|run)\\b",
+ "name": "support.function.built-in.applescript"
+ },
+ {
+ "match": "\\b(?i:anything|data|text|upper\\s+case|propert(y|ies))\\b",
+ "name": "support.class.built-in.applescript"
+ },
+ {
+ "match": "\\b(?i:alias|class)(es)?\\b",
+ "name": "support.class.built-in.applescript"
+ },
+ {
+ "match": "\\b(?i:app(lication)?|boolean|character|constant|date|event|file(\\s+specification)?|handler|integer|item|keystroke|linked\\s+list|list|machine|number|picture|preposition|POSIX\\s+file|real|record|reference(\\s+form)?|RGB\\s+color|script|sound|text\\s+item|type\\s+class|vector|writing\\s+code(\\s+info)?|zone|((international|styled(\\s+(Clipboard|Unicode))?|Unicode)\\s+)?text|((C|encoded|Pascal)\\s+)?string)s?\\b",
+ "name": "support.class.built-in.applescript"
+ },
+ {
+ "match": "(?ix)\\b\n\t\t\t\t\t\t(\t(cubic\\s+(centi)?|square\\s+(kilo)?|centi|kilo)met(er|re)s\n\t\t\t\t\t\t|\tsquare\\s+(yards|feet|miles)|cubic\\s+(yards|feet|inches)|miles|inches\n\t\t\t\t\t\t|\tlit(re|er)s|gallons|quarts\n\t\t\t\t\t\t|\t(kilo)?grams|ounces|pounds\n\t\t\t\t\t\t|\tdegrees\\s+(Celsius|Fahrenheit|Kelvin)\n\t\t\t\t\t\t)\n\t\t\t\t\t\\b",
+ "name": "support.class.built-in.unit.applescript"
+ },
+ {
+ "match": "\\b(?i:seconds|minutes|hours|days)\\b",
+ "name": "support.class.built-in.time.applescript"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "^\\s*(#!)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.applescript"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.number-sign.applescript"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.applescript"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.applescript"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.number-sign.applescript"
+ }
+ ]
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=--)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.applescript"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "--",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.applescript"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.double-dash.applescript"
+ }
+ ]
+ },
+ {
+ "begin": "\\(\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.applescript"
+ }
+ },
+ "end": "\\*\\)",
+ "name": "comment.block.applescript",
+ "patterns": [
+ {
+ "include": "#comments.nested"
+ }
+ ]
+ }
+ ]
+ },
+ "comments.nested": {
+ "patterns": [
+ {
+ "begin": "\\(\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.applescript"
+ }
+ },
+ "end": "\\*\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.applescript"
+ }
+ },
+ "name": "comment.block.applescript",
+ "patterns": [
+ {
+ "include": "#comments.nested"
+ }
+ ]
+ }
+ ]
+ },
+ "data-structures": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.begin.applescript"
+ }
+ },
+ "comment": "We cannot necessarily distinguish \"records\" from \"arrays\", and so this could be either.",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.end.applescript"
+ }
+ },
+ "name": "meta.array.applescript",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "constant.other.key.applescript"
+ },
+ "2": {
+ "name": "meta.identifier.applescript"
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.applescript"
+ },
+ "4": {
+ "name": "punctuation.definition.identifier.applescript"
+ },
+ "5": {
+ "name": "punctuation.separator.key-value.applescript"
+ }
+ },
+ "match": "(\\w+|((\\|)[^|\\n]*(\\|)))\\s*(:)"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.separator.key-value.applescript"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.array.applescript"
+ },
+ {
+ "include": "#inline"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=application )|(?<=app ))(\")",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.applescript"
+ }
+ },
+ "end": "(\")",
+ "name": "string.quoted.double.application-name.applescript",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.applescript"
+ }
+ ]
+ },
+ {
+ "begin": "(\")",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.applescript"
+ }
+ },
+ "end": "(\")",
+ "name": "string.quoted.double.applescript",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.applescript"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.identifier.applescript"
+ },
+ "2": {
+ "name": "punctuation.definition.identifier.applescript"
+ }
+ },
+ "match": "(\\|)[^|\\n]*(\\|)",
+ "name": "meta.identifier.applescript"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.data.applescript"
+ },
+ "2": {
+ "name": "support.class.built-in.applescript"
+ },
+ "3": {
+ "name": "storage.type.utxt.applescript"
+ },
+ "4": {
+ "name": "string.unquoted.data.applescript"
+ },
+ "5": {
+ "name": "punctuation.definition.data.applescript"
+ },
+ "6": {
+ "name": "keyword.operator.applescript"
+ },
+ "7": {
+ "name": "support.class.built-in.applescript"
+ }
+ },
+ "match": "(«)(data) (utxt|utf8)([[:xdigit:]]*)(»)(?:\\s+(as)\\s+(?i:Unicode\\s+text))?",
+ "name": "constant.other.data.utxt.applescript"
+ },
+ {
+ "begin": "(«)(\\w+)\\b(?=\\s)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.data.applescript"
+ },
+ "2": {
+ "name": "support.class.built-in.applescript"
+ }
+ },
+ "end": "(»)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.data.applescript"
+ }
+ },
+ "name": "constant.other.data.raw.applescript"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.data.applescript"
+ },
+ "2": {
+ "name": "punctuation.definition.data.applescript"
+ }
+ },
+ "match": "(«)[^»]*(»)",
+ "name": "invalid.illegal.data.applescript"
+ }
+ ]
+ },
+ "finder": {
+ "patterns": [
+ {
+ "match": "\\b(item|container|(computer|disk|trash)-object|disk|folder|((alias|application|document|internet location) )?file|clipping|package)s?\\b",
+ "name": "support.class.finder.items.applescript"
+ },
+ {
+ "match": "\\b((Finder|desktop|information|preferences|clipping) )windows?\\b",
+ "name": "support.class.finder.window-classes.applescript"
+ },
+ {
+ "match": "\\b(preferences|(icon|column|list) view options|(label|column|alias list)s?)\\b",
+ "name": "support.class.finder.type-definitions.applescript"
+ },
+ {
+ "match": "\\b(copy|find|sort|clean up|eject|empty( trash)|erase|reveal|update)\\b",
+ "name": "support.function.finder.items.applescript"
+ },
+ {
+ "match": "\\b(insertion location|product version|startup disk|desktop|trash|home|computer container|finder preferences)\\b",
+ "name": "support.constant.finder.applescript"
+ },
+ {
+ "match": "\\b(visible)\\b",
+ "name": "support.variable.finder.applescript"
+ }
+ ]
+ },
+ "inline": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#data-structures"
+ },
+ {
+ "include": "#built-in"
+ },
+ {
+ "include": "#standardadditions"
+ }
+ ]
+ },
+ "itunes": {
+ "patterns": [
+ {
+ "match": "\\b(artwork|application|encoder|EQ preset|item|source|visual|(EQ |browser )?window|((audio CD|device|shared|URL|file) )?track|playlist window|((audio CD|device|radio tuner|library|folder|user) )?playlist)s?\\b",
+ "name": "support.class.itunes.applescript"
+ },
+ {
+ "match": "\\b(add|back track|convert|fast forward|(next|previous) track|pause|play(pause)?|refresh|resume|rewind|search|stop|update|eject|subscribe|update(Podcast|AllPodcasts)|download)\\b",
+ "name": "support.function.itunes.applescript"
+ },
+ {
+ "match": "\\b(current (playlist|stream (title|URL)|track)|player state)\\b",
+ "name": "support.constant.itunes.applescript"
+ },
+ {
+ "match": "\\b(current (encoder|EQ preset|visual)|EQ enabled|fixed indexing|full screen|mute|player position|sound volume|visuals enabled|visual size)\\b",
+ "name": "support.variable.itunes.applescript"
+ }
+ ]
+ },
+ "standard-suite": {
+ "patterns": [
+ {
+ "match": "\\b(colors?|documents?|items?|windows?)\\b",
+ "name": "support.class.standard-suite.applescript"
+ },
+ {
+ "match": "\\b(close|count|delete|duplicate|exists|make|move|open|print|quit|save|activate|select|data size)\\b",
+ "name": "support.function.standard-suite.applescript"
+ },
+ {
+ "match": "\\b(name|frontmost|version)\\b",
+ "name": "support.constant.standard-suite.applescript"
+ },
+ {
+ "match": "\\b(selection)\\b",
+ "name": "support.variable.standard-suite.applescript"
+ },
+ {
+ "match": "\\b(attachments?|attribute runs?|characters?|paragraphs?|texts?|words?)\\b",
+ "name": "support.class.text-suite.applescript"
+ }
+ ]
+ },
+ "standardadditions": {
+ "patterns": [
+ {
+ "match": "\\b((alert|dialog) reply)\\b",
+ "name": "support.class.standardadditions.user-interaction.applescript"
+ },
+ {
+ "match": "\\b(file information)\\b",
+ "name": "support.class.standardadditions.file.applescript"
+ },
+ {
+ "match": "\\b(POSIX files?|system information|volume settings)\\b",
+ "name": "support.class.standardadditions.miscellaneous.applescript"
+ },
+ {
+ "match": "\\b(URLs?|internet address(es)?|web pages?|FTP items?)\\b",
+ "name": "support.class.standardadditions.internet.applescript"
+ },
+ {
+ "match": "\\b(info for|list (disks|folder)|mount volume|path to( resource)?)\\b",
+ "name": "support.function.standardadditions.file.applescript"
+ },
+ {
+ "match": "\\b(beep|choose (application|color|file( name)?|folder|from list|remote application|URL)|delay|display (alert|dialog)|say)\\b",
+ "name": "support.function.standardadditions.user-interaction.applescript"
+ },
+ {
+ "match": "\\b(ASCII (character|number)|localized string|offset|summarize)\\b",
+ "name": "support.function.standardadditions.string.applescript"
+ },
+ {
+ "match": "\\b(set the clipboard to|the clipboard|clipboard info)\\b",
+ "name": "support.function.standardadditions.clipboard.applescript"
+ },
+ {
+ "match": "\\b(open for access|close access|read|write|get eof|set eof)\\b",
+ "name": "support.function.standardadditions.file-i-o.applescript"
+ },
+ {
+ "match": "\\b((load|store|run) script|scripting components)\\b",
+ "name": "support.function.standardadditions.scripting.applescript"
+ },
+ {
+ "match": "\\b(current date|do shell script|get volume settings|random number|round|set volume|system attribute|system info|time to GMT)\\b",
+ "name": "support.function.standardadditions.miscellaneous.applescript"
+ },
+ {
+ "match": "\\b(opening folder|(closing|moving) folder window for|adding folder items to|removing folder items from)\\b",
+ "name": "support.function.standardadditions.folder-actions.applescript"
+ },
+ {
+ "match": "\\b(open location|handle CGI request)\\b",
+ "name": "support.function.standardadditions.internet.applescript"
+ }
+ ]
+ },
+ "system-events": {
+ "patterns": [
+ {
+ "match": "\\b(audio (data|file))\\b",
+ "name": "support.class.system-events.audio-file.applescript"
+ },
+ {
+ "match": "\\b(alias(es)?|(Classic|local|network|system|user) domain objects?|disk( item)?s?|domains?|file( package)?s?|folders?|items?)\\b",
+ "name": "support.class.system-events.disk-folder-file.applescript"
+ },
+ {
+ "match": "\\b(delete|open|move)\\b",
+ "name": "support.function.system-events.disk-folder-file.applescript"
+ },
+ {
+ "match": "\\b(folder actions?|scripts?)\\b",
+ "name": "support.class.system-events.folder-actions.applescript"
+ },
+ {
+ "match": "\\b(attach action to|attached scripts|edit action of|remove action from)\\b",
+ "name": "support.function.system-events.folder-actions.applescript"
+ },
+ {
+ "match": "\\b(movie data|movie file)\\b",
+ "name": "support.class.system-events.movie-file.applescript"
+ },
+ {
+ "match": "\\b(log out|restart|shut down|sleep)\\b",
+ "name": "support.function.system-events.power.applescript"
+ },
+ {
+ "match": "\\b(((application |desk accessory )?process|(check|combo )?box)(es)?|(action|attribute|browser|(busy|progress|relevance) indicator|color well|column|drawer|group|grow area|image|incrementor|list|menu( bar)?( item)?|(menu |pop up |radio )?button|outline|(radio|tab|splitter) group|row|scroll (area|bar)|sheet|slider|splitter|static text|table|text (area|field)|tool bar|UI element|window)s?)\\b",
+ "name": "support.class.system-events.processes.applescript"
+ },
+ {
+ "match": "\\b(click|key code|keystroke|perform|select)\\b",
+ "name": "support.function.system-events.processes.applescript"
+ },
+ {
+ "match": "\\b(property list (file|item))\\b",
+ "name": "support.class.system-events.property-list.applescript"
+ },
+ {
+ "match": "\\b(annotation|QuickTime (data|file)|track)s?\\b",
+ "name": "support.class.system-events.quicktime-file.applescript"
+ },
+ {
+ "match": "\\b((abort|begin|end) transaction)\\b",
+ "name": "support.function.system-events.system-events.applescript"
+ },
+ {
+ "match": "\\b(XML (attribute|data|element|file)s?)\\b",
+ "name": "support.class.system-events.xml.applescript"
+ },
+ {
+ "match": "\\b(print settings|users?|login items?)\\b",
+ "name": "support.class.sytem-events.other.applescript"
+ }
+ ]
+ },
+ "textmate": {
+ "patterns": [
+ {
+ "match": "\\b(print settings)\\b",
+ "name": "support.class.textmate.applescript"
+ },
+ {
+ "match": "\\b(get url|insert|reload bundles)\\b",
+ "name": "support.function.textmate.applescript"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.applescript",
+ "uuid": "777CF925-14B9-428E-B07B-17FAAB8FA27E"
+}
diff --git a/node_modules/shiki/languages/ara.tmLanguage.json b/node_modules/shiki/languages/ara.tmLanguage.json
new file mode 100644
index 0000000..50e2338
--- /dev/null
+++ b/node_modules/shiki/languages/ara.tmLanguage.json
@@ -0,0 +1,425 @@
+{
+ "scopeName": "source.ara",
+ "name": "ara",
+ "fileTypes": ["ara"],
+ "patterns": [
+ {
+ "include": "#namespace"
+ },
+ {
+ "include": "#named-arguments"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#function-call"
+ }
+ ],
+ "repository": {
+ "class-name": {
+ "patterns": [
+ {
+ "begin": "\\b(?i)(?<!\\$)(?=[\\\\a-zA-Z_])",
+ "end": "(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\])\\b",
+ "endCaptures": {
+ "1": {
+ "name": "support.class.ara"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ }
+ ]
+ },
+ "type": {
+ "name": "support.type.php",
+ "patterns": [
+ {
+ "match": "\\b(?:void|true|false|null|never|float|bool|int|string|dict|vec|object|mixed|nonnull|resource|self|static|parent|iterable)\\b",
+ "name": "support.type.php"
+ },
+ {
+ "begin": "([A-Za-z_][A-Za-z0-9_]*)<",
+ "beginCaptures": {
+ "1": {
+ "name": "support.class.php"
+ }
+ },
+ "end": ">",
+ "patterns": [
+ {
+ "include": "#type-annotation"
+ }
+ ]
+ },
+ {
+ "begin": "(shape\\()",
+ "end": "((,|\\.\\.\\.)?\\s*\\))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.key.php"
+ }
+ },
+ "name": "storage.type.shape.php",
+ "patterns": [
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#constants"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#type-annotation"
+ }
+ ]
+ },
+ {
+ "begin": "\\(fn\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#type-annotation"
+ }
+ ]
+ },
+ {
+ "include": "#class-name"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "namespace": {
+ "begin": "(?i)((namespace)|[a-z0-9_]+)?(\\\\)(?=.*?[^a-z_0-9\\\\])",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.type.namespace.php"
+ },
+ "3": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ },
+ "end": "(?i)(?=[a-z0-9_]*[^a-z0-9_\\\\])",
+ "name": "support.other.namespace.php",
+ "patterns": [
+ {
+ "name": "entity.name.type.namespace.php",
+ "match": "(?i)[a-z0-9_]+(?=\\\\)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ },
+ "match": "(?i)(\\\\)"
+ }
+ ]
+ },
+ "named-arguments": {
+ "match": "(?i)(?<=^|\\(|,)\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)\\s*(:)(?!:)",
+ "captures": {
+ "1": {
+ "name": "entity.name.variable.parameter.ara"
+ },
+ "2": {
+ "name": "punctuation.separator.colon.ara"
+ }
+ }
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.ara"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.ara"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.ara"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.ara"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.double-slash.ara"
+ }
+ ]
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "name": "keyword.control.ara",
+ "match": "\\b(await|async|concurrently|break|continue|do|else|elseif|for|if|loop|while|foreach|match|return|try|yield|from|catch|finally|default|exit)\\b"
+ },
+ {
+ "name": "storage.decl.ara",
+ "match": "\\b(const|enum|class|interface|trait|namespace|type|case|function|fn)\\b"
+ },
+ {
+ "name": "storage.modifier.ara",
+ "match": "\\b(final|abstract|static|readonly|public|private|protected)\\b"
+ },
+ {
+ "name": "keyword.other.ara",
+ "match": "\\b(as|is|extends|implements|use|where|clone|new)\\b"
+ }
+ ]
+ },
+ "function-call": {
+ "patterns": [
+ {
+ "begin": "(?i)(?=\\\\?[a-z_0-9\\\\]+\\\\[a-z_][a-z0-9_]*\\s*(\\(|(::<)))",
+ "comment": "Functions in a user-defined namespace (overrides any built-ins)",
+ "end": "(?=\\s*(\\(|(::<)))",
+ "patterns": [
+ {
+ "include": "#user-function-call"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(\\\\)?(?=\\b[a-z_][a-z_0-9]*\\s*(\\(|(::<)))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ },
+ "comment": "Root namespace function calls (built-in or user)",
+ "end": "(?=\\s*(\\(|(::<)))",
+ "patterns": [
+ {
+ "include": "#user-function-call"
+ }
+ ]
+ }
+ ]
+ },
+ "user-function-call": {
+ "begin": "(?i)(?=[a-z_0-9\\\\]*[a-z_][a-z0-9_]*\\s*\\()",
+ "end": "(?i)[a-z_][a-z_0-9]*(?=\\s*\\()",
+ "endCaptures": {
+ "0": {
+ "name": "entity.name.function.php"
+ }
+ },
+ "name": "meta.function-call.php",
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "name": "string.quoted.single.ara",
+ "begin": "'",
+ "end": "'",
+ "patterns": [
+ {
+ "match": "\\\\[\\\\']",
+ "name": "constant.character.escape.ara"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.double.ara",
+ "begin": "\"",
+ "end": "\"",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ }
+ ]
+ }
+ ]
+ },
+ "interpolation": {
+ "patterns": [
+ {
+ "comment": "Interpolating octal values e.g. \\01 or \\07.",
+ "match": "\\\\[0-7]{1,3}",
+ "name": "constant.numeric.octal.ara"
+ },
+ {
+ "comment": "Interpolating hex values e.g. \\x1 or \\xFF.",
+ "match": "\\\\x[0-9A-Fa-f]{1,2}",
+ "name": "constant.numeric.hex.ara"
+ },
+ {
+ "comment": "Escaped characters in double-quoted strings e.g. \\n or \\t.",
+ "match": "\\\\[nrt\\\\\\$\\\"]",
+ "name": "constant.character.escape.ara"
+ }
+ ]
+ },
+ "numbers": {
+ "patterns": [
+ {
+ "match": "0[xX][0-9a-fA-F]+(?:_[0-9a-fA-F]+)*",
+ "name": "constant.numeric.hex.ara"
+ },
+ {
+ "match": "0[bB][01]+(?:_[01]+)*",
+ "name": "constant.numeric.binary.ara"
+ },
+ {
+ "match": "0[oO][0-7]+(?:_[0-7]+)*",
+ "name": "constant.numeric.octal.ara"
+ },
+ {
+ "match": "0(?:_?[0-7]+)+",
+ "name": "constant.numeric.octal.ara"
+ },
+ {
+ "match": "(?x)\n(?:\n (?:[0-9]+(?:_[0-9]+)*)?(\\.)[0-9]+(?:_[0-9]+)*(?:[eE][+-]?[0-9]+(?:_[0-9]+)*)?| # .3\n [0-9]+(?:_[0-9]+)*(\\.)(?:[0-9]+(?:_[0-9]+)*)?(?:[eE][+-]?[0-9]+(?:_[0-9]+)*)?| # 3.\n [0-9]+(?:_[0-9]+)*[eE][+-]?[0-9]+(?:_[0-9]+)* # 2e-3\n)",
+ "name": "constant.numeric.decimal.ara",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.decimal.period.ara"
+ },
+ "2": {
+ "name": "punctuation.separator.decimal.period.ara"
+ }
+ }
+ },
+ {
+ "match": "0|[1-9](?:_?[0-9]+)*",
+ "name": "constant.numeric.decimal.ara"
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "comment": "assignment operators",
+ "name": "keyword.assignments.ara",
+ "match": "(\\+=|-=|\\*=|/=|%=|\\^=|&&=|<=|>=|&=|\\|=|<<=|>>=|\\?\\?=)"
+ },
+ {
+ "comment": "logical operators",
+ "name": "keyword.operators.ara",
+ "match": "(\\^|\\||\\|\\||&&|>>|<<|&|~|<<|>>|>|<|<=>|\\?\\?|\\?|:|\\?:)(?!=)"
+ },
+ {
+ "comment": "comparison operators",
+ "name": "keyword.operator.comparison.ara",
+ "match": "(==|===|!==|!=|<=|>=|<|>)(?!=)"
+ },
+ {
+ "comment": "math operators",
+ "name": "keyword.operator.math.ara",
+ "match": "(([+%]|(\\*(?!\\w)))(?!=))|(-(?!>))|(/(?!/))"
+ },
+ {
+ "comment": "single equal assignment operator",
+ "name": "keyword.operator.assignment.ara",
+ "match": "(?<![<>])=(?!=|>)"
+ },
+ {
+ "comment": "less than, greater than (special case)",
+ "match": "(?:\\b|(?:(\\))|(\\])|(\\})))[ \\t]+([<>])[ \\t]+(?:\\b|(?:(\\()|(\\[)|(\\{)))",
+ "captures": {
+ "1": {
+ "name": "punctuation.brackets.round.ara"
+ },
+ "2": {
+ "name": "punctuation.brackets.square.ara"
+ },
+ "3": {
+ "name": "punctuation.brackets.curly.ara"
+ },
+ "4": {
+ "name": "keyword.operator.comparison.ara"
+ },
+ "5": {
+ "name": "punctuation.brackets.round.ara"
+ },
+ "6": {
+ "name": "punctuation.brackets.square.ara"
+ },
+ "7": {
+ "name": "punctuation.brackets.curly.ara"
+ }
+ }
+ },
+ {
+ "comment": "arrow method call, arrow property access",
+ "name": "keyword.operator.arrow.ara",
+ "match": "(?x)\n(?:\n -> | \\?-> \n)"
+ },
+ {
+ "comment": "double arrow key-value pair",
+ "name": "keyword.operator.double-arrow.ara",
+ "match": "(?x)\n(?:\n =>\n)"
+ },
+ {
+ "comment": "static method call, static property access",
+ "name": "keyword.operator.static.ara",
+ "match": "(?x)\n(?:\n ::\n)"
+ },
+ {
+ "comment": "closure creation",
+ "name": "keyword.operator.closure.ara",
+ "match": "(?x)\n(?:\n \\(\\.\\.\\.\\)\n)"
+ },
+ {
+ "comment": "spread operator",
+ "name": "keyword.operator.spread.ara",
+ "match": "(?x)\n(?:\n \\.\\.\\.\n)"
+ },
+ {
+ "comment": "namespace operator",
+ "name": "keyword.operator.namespace.ara",
+ "match": "\\\\"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/asm.tmLanguage.json b/node_modules/shiki/languages/asm.tmLanguage.json
new file mode 100644
index 0000000..9055f58
--- /dev/null
+++ b/node_modules/shiki/languages/asm.tmLanguage.json
@@ -0,0 +1,1346 @@
+{
+ "fileTypes": ["asm", "nasm", "yasm", "inc", "s"],
+ "name": "asm",
+ "patterns": [
+ {
+ "include": "#registers"
+ },
+ {
+ "include": "#mnemonics"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#entities"
+ },
+ {
+ "include": "#support"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#preprocessor"
+ },
+ {
+ "include": "#strings"
+ }
+ ],
+ "repository": {
+ "comments": {
+ "patterns": [
+ {
+ "match": "(;|(^|\\s)#\\s).*$",
+ "name": "comment.line"
+ },
+ {
+ "begin": "/\\*",
+ "end": "\\*/",
+ "name": "comment.block"
+ },
+ {
+ "begin": "^\\s*[\\#%]\\s*if\\s+0\\b",
+ "end": "^\\s*[\\#%]\\s*endif\\b",
+ "name": "comment.preprocessor"
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "match": "(?i)\\b0[by](?:[01][01_]*)\\.(?:(?:[01][01_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\b)?",
+ "name": "constant.numeric.binary.floating-point.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b0[by](?:[01][01_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\b",
+ "name": "constant.numeric.binary.floating-point.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b0[oq](?:[0-7][0-7_]*)\\.(?:(?:[0-7][0-7_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\b)?",
+ "name": "constant.numeric.octal.floating-point.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b0[oq](?:[0-7][0-7_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\b",
+ "name": "constant.numeric.octal.floating-point.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:0[dt])?(?:[0-9][0-9_]*)\\.(?:(?:[0-9][0-9_]*)?(?:e[+-]?(?:[0-9][0-9_]*))?\\b)?",
+ "name": "constant.numeric.decimal.floating-point.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:[0-9][0-9_]*)(?:e[+-]?(?:[0-9][0-9_]*))\\b",
+ "name": "constant.numeric.decimal.floating-point.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:[0-9][0-9_]*)p(?:[0-9][0-9_]*)?\\b",
+ "name": "constant.numeric.decimal.packed-bcd.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b0[xh](?:[[:xdigit:]][[:xdigit:]_]*)\\.(?:(?:[[:xdigit:]][[:xdigit:]_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\b)?",
+ "name": "constant.numeric.hex.floating-point.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b0[xh](?:[[:xdigit:]][[:xdigit:]_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\b",
+ "name": "constant.numeric.hex.floating-point.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\$[0-9]\\_?(?:[[:xdigit:]][[:xdigit:]_]*)?\\.(?:(?:[[:xdigit:]][[:xdigit:]_]*)?(?:p[+-]?(?:[0-9][0-9_]*))?\\b)?",
+ "name": "constant.numeric.hex.floating-point.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\$[0-9]\\_?(?:[[:xdigit:]][[:xdigit:]_]*)(?:p[+-]?(?:[0-9][0-9_]*))\\b",
+ "name": "constant.numeric.hex.floating-point.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:(?:0[by](?:[01][01_]*))|(?:(?:[01][01_]*)[by]))\\b",
+ "name": "constant.numeric.binary.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:(?:0[oq](?:[0-7][0-7_]*))|(?:(?:[0-7][0-7_]*)[oq]))\\b",
+ "name": "constant.numeric.octal.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:(?:0[dt](?:[0-9][0-9_]*))|(?:(?:[0-9][0-9_]*)[dt]?))\\b",
+ "name": "constant.numeric.decimal.asm.x86_64"
+ },
+ {
+ "match": "(?i)(?:\\$[0-9]\\_?(?:[[:xdigit:]][[:xdigit:]_]*)?)\\b",
+ "name": "constant.numeric.hex.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:(?:0[xh](?:[[:xdigit:]][[:xdigit:]_]*))|(?:(?:[[:xdigit:]][[:xdigit:]_]*)[hxHX]))\\b",
+ "name": "constant.numeric.hex.asm.x86_64"
+ }
+ ]
+ },
+ "entities": {
+ "patterns": [
+ {
+ "match": "((section|segment)\\s+)?\\.((ro)?data|bss|text)",
+ "name": "entity.name.section"
+ },
+ {
+ "match": "^\\.?(globa?l|extern)\\b",
+ "name": "entity.directive"
+ },
+ {
+ "match": "(\\$\\w+)\\b",
+ "name": "text.variable"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64"
+ },
+ "2": {
+ "name": "entity.name.function.special.asm.x86_64"
+ },
+ "3": {
+ "name": "punctuation.separator.asm.x86_64"
+ }
+ },
+ "match": "(\\.\\.@)((?:[[:alpha:]_?](?:[[:alnum:]_$#@~.?]*)))(?:(\\:)?|\\b)",
+ "name": "entity.name.function.asm.x86_64"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64"
+ },
+ "2": {
+ "name": "entity.name.function.asm.x86_64"
+ },
+ "3": {
+ "name": "punctuation.separator.asm.x86_64"
+ }
+ },
+ "match": "(?:(\\.)?|\\b)((?:[[:alpha:]_?](?:[[:alnum:]_$#@~.?]*)))(?:(\\:))",
+ "name": "entity.name.function.asm.x86_64"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64"
+ },
+ "2": {
+ "name": "entity.name.function.asm.x86_64"
+ },
+ "3": {
+ "name": "punctuation.separator.asm.x86_64"
+ }
+ },
+ "match": "(\\.)([0-9]+(?:[[:alnum:]_$#@~.?]*))(?:(\\:)?|\\b)",
+ "name": "entity.name.function.asm.x86_64"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64"
+ },
+ "2": {
+ "name": "invalid.illegal.entity.name.function.asm.x86_64"
+ },
+ "3": {
+ "name": "punctuation.separator.asm.x86_64"
+ }
+ },
+ "match": "(?:(\\.)?|\\b)([0-9$@~](?:[[:alnum:]_$#@~.?]*))(?:(\\:))",
+ "name": "invalid.illegal.entity.name.function.asm.x86_64"
+ }
+ ]
+ },
+ "mnemonics": {
+ "patterns": [
+ {
+ "include": "#mnemonics-general-purpose"
+ },
+ {
+ "include": "#mnemonics-fpu"
+ },
+ {
+ "include": "#mnemonics-mmx"
+ },
+ {
+ "include": "#mnemonics-sse"
+ },
+ {
+ "include": "#mnemonics-sse2"
+ },
+ {
+ "include": "#mnemonics-sse3"
+ },
+ {
+ "include": "#mnemonics-sse4"
+ },
+ {
+ "include": "#mnemonics-aesni"
+ },
+ {
+ "include": "#mnemonics-avx"
+ },
+ {
+ "include": "#mnemonics-avx2"
+ },
+ {
+ "include": "#mnemonics-tsx"
+ },
+ {
+ "include": "#mnemonics-system"
+ },
+ {
+ "include": "#mnemonics-64bit"
+ },
+ {
+ "include": "#mnemonics-vmx"
+ },
+ {
+ "include": "#mnemonics-smx"
+ },
+ {
+ "include": "#mnemonics-intel-isa-sgx"
+ },
+ {
+ "include": "#mnemonics-intel-isa-mpx"
+ },
+ {
+ "include": "#mnemonics-intel-isa-sha"
+ },
+ {
+ "include": "#mnemonics-supplemental-amd"
+ },
+ {
+ "include": "#mnemonics-supplemental-cyrix"
+ },
+ {
+ "include": "#mnemonics-supplemental-via"
+ },
+ {
+ "include": "#mnemonics-undocumented"
+ },
+ {
+ "include": "#mnemonics-future-intel"
+ },
+ {
+ "include": "#mnemonics-pseudo-ops"
+ }
+ ]
+ },
+ "mnemonics-64bit": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(cdqe|cqo|(cmp|lod|mov|sto)sq|cmpxchg16b|mov(ntq|sxd)|scasq|swapgs|sys(call|ret))\\b",
+ "name": "keyword.operator.word.mnemonic.64-bit-mode"
+ }
+ ]
+ },
+ "mnemonics-aesni": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(aes((dec|enc)(last)?|imc|keygenassist)|pclmulqdq)\\b",
+ "name": "keyword.operator.word.mnemonic.aesni"
+ }
+ ]
+ },
+ "mnemonics-avx": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(v((test|permil|maskmov)p[ds]|zero(all|upper)|(perm2|insert|extract|broadcast)f128|broadcasts[ds]))\\b",
+ "name": "keyword.operator.word.mnemonic.avx"
+ },
+ {
+ "match": "(?i)\\b(vaes((dec|enc)(last)?|imc|keygenassist)|vpclmulqdq)\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.aes"
+ },
+ {
+ "match": "(?i)\\b(v((cmp[ps]|u?comis)[ds]|pcmp([ei]str[im]|(eq|gt)[bdqw])))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.comparison"
+ },
+ {
+ "match": "(?i)\\b(v(cvt(dq2pd|dq2ps|pd2ps|ps2pd|sd2ss|si2sd|si2ss|ss2sd|t?(pd2dq|ps2dq|sd2si|ss2si))))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.conversion"
+ },
+ {
+ "match": "(?i)\\b(vh((add|sub)p[ds])|vph((add|sub)([dw]|sw)|minposuw))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.horizontal-packed-arithmetic"
+ },
+ {
+ "match": "(?i)\\b(v((andn?|x?or)p[ds]))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.logical"
+ },
+ {
+ "match": "(?i)\\b(v(mov(([ahl]|msk|nt|u)p[ds]|(hl|lh)ps|s([ds]|[hl]dup)|q)))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.mov"
+ },
+ {
+ "match": "(?i)\\b(v((add|div|mul|sub|max|min|round|sqrt)[ps][ds]|(addsub|dp)p[ds]|(rcp|rsqrt)[ps]s))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.packed-arithmetic"
+ },
+ {
+ "match": "(?i)\\b(v(pack[su]s(dw|wb)|punpck[hl](bw|dq|wd|qdq)|unpck[hl]p[ds]))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.packed-conversion"
+ },
+ {
+ "match": "(?i)\\b(vp(shuf([bd]|[hl]w))|vshufp[ds])\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.packed-shuffle"
+ },
+ {
+ "match": "(?i)\\b(vp((abs|sign|(max|min)[su])[bdw]|(add|sub)([bdqw]|u?s[bw])|avg[bw]|extr[bdqw]|madd(wd|ubsw)|mul(hu?w|hrsw|l[dw]|u?dq)|sadbw))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.supplemental.arithmetic"
+ },
+ {
+ "match": "(?i)\\b(vp(andn?|x?or))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.supplemental.logical"
+ },
+ {
+ "match": "(?i)\\b(vpblend(vb|w))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.supplemental.blending"
+ },
+ {
+ "match": "(?i)\\b(vpmov(mskb|[sz]x(b[dqw]|w[dq]|dq)))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.supplemental.mov"
+ },
+ {
+ "match": "(?i)\\b(vp(insr[bdqw]|sll(dq|[dqw])|srl(dq)))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.simd-integer"
+ },
+ {
+ "match": "(?i)\\b(vp(sra[dwq]|srl[dqw]))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.shift-and-rotate"
+ },
+ {
+ "match": "(?i)\\b(vblendv?p[ds])\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.packed-blending"
+ },
+ {
+ "match": "(?i)\\b(vp(test|alignr))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.packed-other"
+ },
+ {
+ "match": "(?i)\\b(vmov(d(dup|qa|qu)?))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.simd-integer.mov"
+ },
+ {
+ "match": "(?i)\\b(v((extract|insert)ps|lddqu|(ld|st)mxcsr|mpsadbw))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.other"
+ },
+ {
+ "match": "(?i)\\b(v(maskmovdqu|movntdqa?))\\b",
+ "name": "keyword.operator.word.mnemonic.avx.promoted.cacheability-control"
+ },
+ {
+ "match": "(?i)\\b(vcvt(ph2ps|ps2ph))\\b",
+ "name": "keyword.operator.word.mnemonic.16-bit-floating-point-conversion"
+ },
+ {
+ "match": "(?i)\\b(vfn?m((add|sub)(132|213|231)[ps][ds])|vfm((addsub|subadd)(132|213|231)p[ds]))\\b",
+ "name": "keyword.operator.word.mnemonic.fma"
+ }
+ ]
+ },
+ "mnemonics-avx2": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(v((broadcast|extract|insert|perm2)i128|pmaskmov[dq]|perm([dsq]|p[sd])))\\b",
+ "name": "keyword.operator.word.mnemonic.avx2.promoted.simd"
+ },
+ {
+ "match": "(?i)\\b(vpbroadcast[bdqw])\\b",
+ "name": "keyword.operator.word.mnemonic.avx2.promoted.packed"
+ },
+ {
+ "match": "(?i)\\b(vp(blendd|s[lr]lv[dq]|sravd))\\b",
+ "name": "keyword.operator.word.mnemonic.avx2.blend"
+ },
+ {
+ "match": "(?i)\\b(vp?gather[dq][dq]|vgather([dq]|dq)p[ds])\\b",
+ "name": "keyword.operator.word.mnemonic.avx2.gather"
+ }
+ ]
+ },
+ "mnemonics-fpu": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(fcmov(n?([beu]|be)))\\b",
+ "name": "keyword.operator.word.mnemonic.fpu.data-transfer.mov"
+ },
+ {
+ "match": "(?i)\\b(f(i?(ld|stp?)|b(ld|stp)|xch))\\b",
+ "name": "keyword.operator.word.mnemonic.fpu.data-transfer.other"
+ },
+ {
+ "match": "(?i)\\b(f((add|div|mul|sub)p?|i(add|div|mul|sub)|(div|sub)rp?|i(div|sub)r))\\b",
+ "name": "keyword.operator.word.mnemonic.fpu.basic-arithmetic.basic"
+ },
+ {
+ "match": "(?i)\\b(f(prem1?|abs|chs|rndint|scale|sqrt|xtract))\\b",
+ "name": "keyword.operator.word.mnemonic.fpu.basic-arithmetic.other"
+ },
+ {
+ "match": "(?i)\\b(f(u?com[ip]?p?|icomp?|tst|xam))\\b",
+ "name": "keyword.operator.word.mnemonic.fpu.comparison"
+ },
+ {
+ "match": "(?i)\\b(f(sin|cos|sincos|pa?tan|2xm1|yl2x(p1)?))\\b",
+ "name": "keyword.operator.word.mnemonic.fpu.transcendental"
+ },
+ {
+ "match": "(?i)\\b(fld(1|z|pi|l2[et]|l[ng]2))\\b",
+ "name": "keyword.operator.word.mnemonic.fpu.load-constants"
+ },
+ {
+ "match": "(?i)\\b(f((inc|dec)stp|free|n?(init|clex|st[cs]w|stenv|save)|ld(cw|env)|rstor|nop)|f?wait)\\b",
+ "name": "keyword.operator.word.mnemonic.fpu.control-management"
+ },
+ {
+ "match": "(?i)\\b(fx(save|rstor)(64)?)\\b",
+ "name": "keyword.operator.word.mnemonic.fpu.state-management"
+ }
+ ]
+ },
+ "mnemonics-future-intel": {
+ "patterns": [
+ {
+ "include": "#mnemonics-future-intel-avx512"
+ },
+ {
+ "include": "#mnemonics-future-intel-opmask"
+ },
+ {
+ "include": "#mnemonics-future-intel-cet"
+ },
+ {
+ "include": "#mnemonics-future-intel-other"
+ }
+ ]
+ },
+ "mnemonics-future-intel-avx512": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(vblendm(pd|ps)|vpblendm[bdqw])\\b",
+ "name": "keyword.operator.word.mnemonic.avx512.blend"
+ },
+ {
+ "match": "(?i)\\b(vbroadcast[fi](32x[248]|64x[24])|v(extract|insert)[fi](32x[48]|64x[24])|vshuf[fi](32x4|64x2)|vpbroadcastm(b2q|w2d))\\b",
+ "name": "keyword.operator.word.mnemonic.avx512.bits-mov"
+ },
+ {
+ "match": "(?i)\\b(v(compress|expand)p[ds]|vp(compress|expand|conflict)[dq])\\b",
+ "name": "keyword.operator.word.mnemonic.avx512.compress"
+ },
+ {
+ "match": "(?i)\\b(vcvt(t?p[sd]2(udq|u?qq)|(udq|u?qq)2p[ds]|t?s[ds]2usi|usi2s[ds]))\\b",
+ "name": "keyword.operator.word.mnemonic.avx512.conversion"
+ },
+ {
+ "match": "(?i)\\b(v(fixupimm|fpclass|get(exp|mant)|range|(rcp|rsqrt)(14|28)|reduce|rndscale|scalef)([ps][ds]))\\b",
+ "name": "keyword.operator.word.mnemonic.avx512.math"
+ },
+ {
+ "match": "(?i)\\b(v(exp2p[ds]|(scatter|(gather|scatter)pf[01])[dq]p[ds]))\\b",
+ "name": "keyword.operator.word.mnemonic.avx512.math"
+ },
+ {
+ "match": "(?i)\\b(vmovdq(a(32|64)|u(8|16|32|64)))\\b",
+ "name": "keyword.operator.word.mnemonic.avx512.simd-integer"
+ },
+ {
+ "match": "(?i)\\b(vp(andn?|x?or)[dq])\\b",
+ "name": "keyword.operator.word.mnemonic.avx512.logical"
+ },
+ {
+ "match": "(?i)\\b(vpcmpu?[dqw])\\b",
+ "name": "keyword.operator.word.mnemonic.avx512.packed-comparison"
+ },
+ {
+ "match": "(?i)\\b(vp(absq|(lzcnt|ternlog)[dq]|madd52[lh]uq|(max|min)[su]q|mullq))\\b",
+ "name": "keyword.operator.word.mnemonic.avx512.packed-math"
+ },
+ {
+ "match": "(?i)\\b(vpmov(m2[bdqw]|[bdqw]2m|(u?s)?([qd][bw]|qd|wb)))\\b",
+ "name": "keyword.operator.word.mnemonic.avx512.packed-mov"
+ },
+ {
+ "match": "(?i)\\b(vp(ro[rl]v?[dq]|scatter[dq][dq]))\\b",
+ "name": "keyword.operator.word.mnemonic.avx512.packed-shift"
+ },
+ {
+ "match": "(?i)\\b(vptestn?m[bdqw])\\b",
+ "name": "keyword.operator.word.mnemonic.avx512.packed-test"
+ },
+ {
+ "match": "(?i)\\b(vperm([bdw]|[it]2([bdwq]|p[ds])))\\b",
+ "name": "keyword.operator.word.mnemonic.avx512.permutations"
+ },
+ {
+ "match": "(?i)\\b(valign[dq]|vdbpsadbw|vpmultishiftqb|vpsrav[dqw])\\b",
+ "name": "keyword.operator.word.mnemonic.avx512.other"
+ }
+ ]
+ },
+ "mnemonics-future-intel-cet": {
+ "patterns": [
+ {
+ "match": "(?i)\\b((inc|save|rstor)ssp|wru?ss|(set|clr)ssbsy|endbranch|endbr(32|64))\\b",
+ "name": "keyword.operator.word.mnemonic.cet"
+ }
+ ]
+ },
+ "mnemonics-future-intel-opmask": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(k(add|andn?|(xn?)?or|mov|not|(or)?test|shift[lr])[bdqw]|kunpck(bw|wd|dq))\\b",
+ "name": "keyword.operator.word.mnemonic.opmask"
+ }
+ ]
+ },
+ "mnemonics-future-intel-other": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(clflushopt|clwb|pcommit)\\b",
+ "name": "keyword.operator.word.mnemonic.other"
+ }
+ ]
+ },
+ "mnemonics-general-purpose": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(?:mov(?:[sz]x)?|cmov(?:n?[abceglopsz]|n?[abgl]e|p[eo]))\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.data-transfer.mov"
+ },
+ {
+ "match": "(?i)\\b(xchg|bswap|xadd|cmpxchg(8b)?)\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.data-transfer.xchg"
+ },
+ {
+ "match": "(?i)\\b((push|pop)(ad?)?|cwde?|cdq|cbw)\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.data-transfer.other"
+ },
+ {
+ "match": "(?i)\\b(adcx?|adox|add|sub|sbb|i?mul|i?div|inc|dec|neg|cmp)\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.binary-arithmetic"
+ },
+ {
+ "match": "(?i)\\b(daa|das|aaa|aas|aam|aad)\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.decimal-arithmetic"
+ },
+ {
+ "match": "(?i)\\b(and|x?or|not)\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.logical"
+ },
+ {
+ "match": "(?i)\\b(s[ah][rl]|sh[rl]d|r[co][rl])\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.rotate"
+ },
+ {
+ "match": "(?i)\\b(set(n?[abceglopsz]|n?[abgl]e|p[eo]))\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.bit-and-byte.set"
+ },
+ {
+ "match": "(?i)\\b(bt[crs]?|bs[fr]|test|crc32|popcnt)\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.bit-and-byte.other"
+ },
+ {
+ "match": "(?i)\\b(jmp|jn?[abceglopsz]|jn?[abgl]e|jp[eo]|j[er]?cxz)\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.control-transfer.jmp"
+ },
+ {
+ "match": "(?i)\\b(loop(n?[ez])?|call|ret|iret[dq]?|into?|bound|enter|leave)\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.control-transfer.other"
+ },
+ {
+ "match": "(?i)\\b((mov|cmp|sca|lod|sto)(s[bdw]?)|rep(n?[ez])?)\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.strings"
+ },
+ {
+ "match": "(?i)\\b((in|out)(s[bdw]?)?)\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.io"
+ },
+ {
+ "match": "(?i)\\b((st|cl)[cdi]|cmc|[ls]ahf|(push|pop)f[dq]?)\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.flag-control"
+ },
+ {
+ "match": "(?i)\\b(l[defgs]s)\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.segment-registers"
+ },
+ {
+ "match": "(?i)\\b(lea|nop|ud2|xlatb?|cpuid|movbe)\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.misc"
+ },
+ {
+ "match": "(?i)\\b(rdrand|rdseed)\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.rng"
+ },
+ {
+ "match": "(?i)\\b(andn|bextr|bls(i|r|msk)|bzhi|pdep|pext|[lt]zcnt|(mul|ror|sar|shl|shr)x)\\b",
+ "name": "keyword.operator.word.mnemonic.general-purpose.bmi"
+ }
+ ]
+ },
+ "mnemonics-intel-isa-mpx": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(bnd(mk|c[lnu]|mov|ldx|stx))\\b",
+ "name": "keyword.operator.word.mnemonic.mpx"
+ }
+ ]
+ },
+ "mnemonics-intel-isa-sgx": {
+ "patterns": [
+ {
+ "match": "(?i)\\be(add|block|create|dbg(rd|wr)|extend|init|ld[bu]|pa|remove|track|wb)\\b",
+ "name": "keyword.operator.word.mnemonic.sgx1.supervisor"
+ },
+ {
+ "match": "(?i)\\be(enter|exit|getkey|report|resume)\\b",
+ "name": "keyword.operator.word.mnemonic.sgx1.user"
+ },
+ {
+ "match": "(?i)\\be(aug|mod(pr|t))\\b",
+ "name": "keyword.operator.word.mnemonic.sgx2.supervisor"
+ },
+ {
+ "match": "(?i)\\be(accept(copy)?|modpe)\\b",
+ "name": "keyword.operator.word.mnemonic.sgx2.user"
+ }
+ ]
+ },
+ "mnemonics-intel-isa-sha": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(sha(1rnds4|256rnds2|1nexte|(1|256)msg[12]))\\b",
+ "name": "keyword.operator.word.mnemonic.sha"
+ }
+ ]
+ },
+ "mnemonics-invalid": {
+ "patterns": [
+ {
+ "include": "#mnemonics-invalid-amd-sse5"
+ }
+ ]
+ },
+ "mnemonics-invalid-amd-sse5": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(com[ps][ds]|pcomu?[bdqw])\\b",
+ "name": "invalid.keyword.operator.word.mnemonic.sse5.comparison"
+ },
+ {
+ "match": "(?i)\\b(cvtp(h2ps|s2ph)|frcz[ps][ds])\\b",
+ "name": "invalid.keyword.operator.word.mnemonic.sse5.conversion"
+ },
+ {
+ "match": "(?i)\\b(fn?m((add|sub)[ps][ds])|ph(addu?(b[dqw]|w[dq]|dq)|sub(bw|dq|wd))|pma(css?(d(d|q[hl])|w[dw])|dcss?wd))\\b",
+ "name": "invalid.keyword.operator.word.mnemonic.sse5.packed-arithmetic"
+ },
+ {
+ "match": "(?i)\\b(pcmov|permp[ds]|pperm|prot[bdqw]|psh[al][bdqw])\\b",
+ "name": "invalid.keyword.operator.word.mnemonic.sse5.simd-integer"
+ }
+ ]
+ },
+ "mnemonics-mmx": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(mov[dq])\\b",
+ "name": "keyword.operator.word.mnemonic.mmx.data-transfer"
+ },
+ {
+ "match": "(?i)\\b(pack(ssdw|[su]swb)|punpck[hl](bw|dq|wd))\\b",
+ "name": "keyword.operator.word.mnemonic.mmx.conversion"
+ },
+ {
+ "match": "(?i)\\b(p(((add|sub)(d|(u?s)?[bw]))|maddwd|mul[lh]w))\\b",
+ "name": "keyword.operator.word.mnemonic.mmx.packed-arithmetic"
+ },
+ {
+ "match": "(?i)\\b(pcmp((eq|gt)[bdw]))\\b",
+ "name": "keyword.operator.word.mnemonic.mmx.comparison"
+ },
+ {
+ "match": "(?i)\\b(pandn?|px?or)\\b",
+ "name": "keyword.operator.word.mnemonic.mmx.logical"
+ },
+ {
+ "match": "(?i)\\b(ps([rl]l[dwq]|raw|rad))\\b",
+ "name": "keyword.operator.word.mnemonic.mmx.shift-and-rotate"
+ },
+ {
+ "match": "(?i)\\b(emms)\\b",
+ "name": "keyword.operator.word.mnemonic.mmx.state-management"
+ }
+ ]
+ },
+ "mnemonics-pseudo-ops": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(cmp(n?(eq|lt|le)|(un)?ord)[ps][ds])\\b",
+ "name": "keyword.pseudo-mnemonic.sse2.compare"
+ },
+ {
+ "match": "(?i)\\b(v?pclmul([hl]q[hl]q|[hl]qh)dq)\\b",
+ "name": "keyword.pseudo-mnemonic.avx.promoted.aes"
+ },
+ {
+ "match": "(?i)\\b(vcmp(eq(_(os|uq|us))?|neq(_(oq|os|us))?|[gl][et](_oq)?|n[gl][et](_uq)?|(un)?ord(_s)?|false(_os)?|true(_us)?)[ps][ds])\\b",
+ "name": "keyword.pseudo-mnemonic.avx.promoted.comparison"
+ },
+ {
+ "match": "(?i)\\b(vpcom(n?eq|[gl][et]|false|true)(b|uw))\\b",
+ "name": "keyword.pseudo-mnemonic.supplemental.amd.xop.simd"
+ }
+ ]
+ },
+ "mnemonics-smx": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(getsec)\\b",
+ "name": "keyword.operator.word.mnemonic.smx.getsec"
+ },
+ {
+ "match": "(?i)\\b(capabilities|enteraccs|exitac|senter|sexit|parameters|smctrl|wakeup)\\b",
+ "name": "support.constant"
+ }
+ ]
+ },
+ "mnemonics-sse": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(mov(([ahlu]|hl|lh|msk)ps|ss))\\b",
+ "name": "keyword.operator.word.mnemonic.sse.data-transfer"
+ },
+ {
+ "match": "(?i)\\b((add|div|max|min|mul|rcp|r?sqrt|sub)[ps]s)\\b",
+ "name": "keyword.operator.word.mnemonic.sse.packed-arithmetic"
+ },
+ {
+ "match": "(?i)\\b(cmp[ps]s|u?comiss)\\b",
+ "name": "keyword.operator.word.mnemonic.sse.comparison"
+ },
+ {
+ "match": "(?i)\\b((andn?|x?or)ps)\\b",
+ "name": "keyword.operator.word.mnemonic.sse.logical"
+ },
+ {
+ "match": "(?i)\\b((shuf|unpck[hl])ps)\\b",
+ "name": "keyword.operator.word.mnemonic.sse.shuffle-and-unpack"
+ },
+ {
+ "match": "(?i)\\b(cvt(pi2ps|si2ss|ps2pi|tps2pi|ss2si|tss2si))\\b",
+ "name": "keyword.operator.word.mnemonic.sse.conversion"
+ },
+ {
+ "match": "(?i)\\b((ld|st)mxcsr)\\b",
+ "name": "keyword.operator.word.mnemonic.sse.state-management"
+ },
+ {
+ "match": "(?i)\\b(p(avg[bw]|extrw|insrw|(max|min)(sw|ub)|sadbw|shufw|mulhuw|movmskb))\\b",
+ "name": "keyword.operator.word.mnemonic.sse.simd-integer"
+ },
+ {
+ "match": "(?i)\\b(maskmovq|movntps|sfence)\\b",
+ "name": "keyword.operator.word.mnemonic.sse.cacheability-control"
+ },
+ {
+ "match": "(?i)\\b(prefetch(nta|t[0-2]|w(t1)?))\\b",
+ "name": "keyword.operator.word.mnemonic.sse.prefetch"
+ }
+ ]
+ },
+ "mnemonics-sse2": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(mov([auhl]|msk)pd)\\b",
+ "name": "keyword.operator.word.mnemonic.sse2.data-transfer"
+ },
+ {
+ "match": "(?i)\\b((add|div|max|min|mul|sub|sqrt)[ps]d)\\b",
+ "name": "keyword.operator.word.mnemonic.sse2.packed-arithmetic"
+ },
+ {
+ "match": "(?i)\\b((andn?|x?or)pd)\\b",
+ "name": "keyword.operator.word.mnemonic.sse2.logical"
+ },
+ {
+ "match": "(?i)\\b((cmpp|u?comis)d)\\b",
+ "name": "keyword.operator.word.mnemonic.sse2.compare"
+ },
+ {
+ "match": "(?i)\\b((shuf|unpck[hl])pd)\\b",
+ "name": "keyword.operator.word.mnemonic.sse2.shuffle-and-unpack"
+ },
+ {
+ "match": "(?i)\\b(cvt(dq2pd|pi2pd|ps2pd|pd2ps|si2sd|sd2ss|ss2sd|t?(pd2dq|pd2pi|sd2si)))\\b",
+ "name": "keyword.operator.word.mnemonic.sse2.conversion"
+ },
+ {
+ "match": "(?i)\\b(cvt(dq2ps|ps2dq|tps2dq))\\b",
+ "name": "keyword.operator.word.mnemonic.sse2.packed-floating-point"
+ },
+ {
+ "match": "(?i)\\b(mov(dq[au]|q2dq|dq2q))\\b",
+ "name": "keyword.operator.word.mnemonic.sse2.simd-integer.mov"
+ },
+ {
+ "match": "(?i)\\b(p((add|sub|(s[lr]l|mulu|unpck[hl]q)d)q|shuf(d|[hl]w)))\\b",
+ "name": "keyword.operator.word.mnemonic.sse2.simd-integer.other"
+ },
+ {
+ "match": "(?i)\\b(clflush|[lm]fence|pause|maskmovdqu|movnt(dq|i|pd))\\b",
+ "name": "keyword.operator.word.mnemonic.sse2.cacheability-control"
+ }
+ ]
+ },
+ "mnemonics-sse3": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(fisttp|lddqu|(addsub|h(add|sub))p[sd]|mov(sh|sl|d)dup|monitor|mwait)\\b",
+ "name": "keyword.operator.word.mnemonic.sse3"
+ },
+ {
+ "match": "(?i)\\b(ph(add|sub)(s?w|d))\\b",
+ "name": "keyword.operator.word.mnemonic.sse3.supplimental.horizontal-packed-arithmetic"
+ },
+ {
+ "match": "(?i)\\b(p((abs|sign)[bdw]|maddubsw|mulhrsw|shufb|alignr))\\b",
+ "name": "keyword.operator.word.mnemonic.sse3.supplimental.other"
+ }
+ ]
+ },
+ "mnemonics-sse4": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(pmul(ld|dq)|dpp[ds])\\b",
+ "name": "keyword.operator.word.mnemonic.sse4.1.arithmetic"
+ },
+ {
+ "match": "(?i)\\b(movntdqa)\\b",
+ "name": "keyword.operator.word.mnemonic.sse4.1.load-hint"
+ },
+ {
+ "match": "(?i)\\b(blendv?p[ds]|pblend(vb|w))\\b",
+ "name": "keyword.operator.word.mnemonic.sse4.1.packed-blending"
+ },
+ {
+ "match": "(?i)\\b(p(min|max)(u[dw]|s[bd]))\\b",
+ "name": "keyword.operator.word.mnemonic.sse4.1.packed-integer"
+ },
+ {
+ "match": "(?i)\\b(round[ps][sd])\\b",
+ "name": "keyword.operator.word.mnemonic.sse4.1.packed-floating-point"
+ },
+ {
+ "match": "(?i)\\b((extract|insert)ps|p((ins|ext)(r[bdq])))\\b",
+ "name": "keyword.operator.word.mnemonic.sse4.1.insertion-and-extraction"
+ },
+ {
+ "match": "(?i)\\b(pmov([sz]x(b[dqw]|dq|wd|wq)))\\b",
+ "name": "keyword.operator.word.mnemonic.sse4.1.conversion"
+ },
+ {
+ "match": "(?i)\\b(mpsadbw|phminposuw|ptest|pcmpeqq|packusdw)\\b",
+ "name": "keyword.operator.word.mnemonic.sse4.1.other"
+ },
+ {
+ "match": "(?i)\\b(pcmp([ei]str[im]|gtq))\\b",
+ "name": "keyword.operator.word.mnemonic.sse4.2"
+ }
+ ]
+ },
+ "mnemonics-supplemental-amd": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(bl([cs](fill|ic?|msk)|cs)|t1mskc|tzmsk)\\b",
+ "name": "keyword.operator.word.mnemonic.supplemental.amd.general-purpose"
+ },
+ {
+ "match": "(?i)\\b(clgi|int3|invlpga|iretw|skinit|stgi|vm(load|mcall|run|save)|monitorx|mwaitx)\\b",
+ "name": "keyword.operator.word.mnemonic.supplemental.amd.system"
+ },
+ {
+ "match": "(?i)\\b([ls]lwpcb|lwp(ins|val))\\b",
+ "name": "keyword.operator.word.mnemonic.supplemental.amd.profiling"
+ },
+ {
+ "match": "(?i)\\b(movnts[ds])\\b",
+ "name": "keyword.operator.word.mnemonic.supplemental.amd.memory-management"
+ },
+ {
+ "match": "(?i)\\b(prefetch|clzero)\\b",
+ "name": "keyword.operator.word.mnemonic.supplemental.amd.cache-management"
+ },
+ {
+ "match": "(?i)\\b((extr|insert)q)\\b",
+ "name": "keyword.operator.word.mnemonic.supplemental.amd.sse4.a"
+ },
+ {
+ "match": "(?i)\\b(vfn?m((add|sub)[ps][ds])|vfm((addsub|subadd)p[ds]))\\b",
+ "name": "keyword.operator.word.mnemonic.supplemental.amd.fma4"
+ },
+ {
+ "match": "(?i)\\b(vp(cmov|(comu?|rot|sh[al])[bdqw]|mac(s?s(d(d|q[hl])|w[dw]))|madcss?wd|perm))\\b",
+ "name": "keyword.operator.word.mnemonic.supplemental.amd.xop.simd"
+ },
+ {
+ "match": "(?i)\\b(vph(addu?(b[dqw]|w[dq]|dq)|sub(bw|dq|wd)))\\b",
+ "name": "keyword.operator.word.mnemonic.supplemental.amd.xop.simd-horizontal"
+ },
+ {
+ "match": "(?i)\\b(vfrcz[ps][ds]|vpermil2p[ds])\\b",
+ "name": "keyword.operator.word.mnemonic.supplemental.amd.xop.other"
+ },
+ {
+ "match": "(?i)\\b(femms)\\b",
+ "name": "keyword.operator.word.mnemonic.supplemental.amd.3dnow"
+ },
+ {
+ "match": "(?i)\\b(p(avgusb|(f2i|i2f)[dw]|mulhrw|swapd)|pf((p?n)?acc|add|max|min|mul|rcp(it[12])?|rsqit1|rsqrt|subr?))\\b",
+ "name": "keyword.operator.word.mnemonic.supplemental.amd.3dnow.simd"
+ },
+ {
+ "match": "(?i)\\b(pfcmp(eq|ge|gt))\\b",
+ "name": "keyword.operator.word.mnemonic.supplemental.amd.3dnow.comparison"
+ }
+ ]
+ },
+ "mnemonics-supplemental-cyrix": {
+ "patterns": [
+ {
+ "match": "(?i)\\b((sv|rs)dc|(wr|rd)shr|paddsiw)\\b",
+ "name": "keyword.operator.word.mnemonic.supplemental.cyrix"
+ }
+ ]
+ },
+ "mnemonics-supplemental-via": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(montmul)\\b",
+ "name": "keyword.operator.word.mnemonic.supplemental.via"
+ },
+ {
+ "match": "(?i)\\b(x(store(rng)?|crypt(ecb|cbc|ctr|cfb|ofb)|sha(1|256)))\\b",
+ "name": "keyword.operator.word.mnemonic.supplemental.via.padlock"
+ }
+ ]
+ },
+ "mnemonics-system": {
+ "patterns": [
+ {
+ "match": "(?i)\\b((cl|st)ac|[ls]([gli]dt|tr|msw)|clts|arpl|lar|lsl|ver[rw]|inv(d|lpg|pcid)|wbinvd)\\b",
+ "name": "keyword.operator.word.mnemonic.system"
+ },
+ {
+ "match": "(?i)\\b(lock|hlt|rsm|(rd|wr)(msr|pkru|[fg]sbase)|rd(pmc|tscp?)|sys(enter|exit))\\b",
+ "name": "keyword.operator.word.mnemonic.system"
+ },
+ {
+ "match": "(?i)\\b(x((save(c|opt|s)?|rstors?)(64)?|[gs]etbv))\\b",
+ "name": "keyword.operator.word.mnemonic.system"
+ }
+ ]
+ },
+ "mnemonics-tsx": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(x(abort|acquire|release|begin|end|test))\\b",
+ "name": "keyword.operator.word.mnemonic.tsx"
+ }
+ ]
+ },
+ "mnemonics-undocumented": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(ret[nf]|icebp|int1|int03|smi|ud1)\\b",
+ "name": "keyword.operator.word.mnemonic.undocumented"
+ }
+ ]
+ },
+ "mnemonics-vmx": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(vm(ptr(ld|st)|clear|read|write|launch|resume|xo(ff|n)|call|func)|inv(ept|vpid))\\b",
+ "name": "keyword.operator.word.mnemonic.vmx"
+ }
+ ]
+ },
+ "preprocessor": {
+ "patterns": [
+ {
+ "begin": "^\\s*[#%]\\s*(error|warning)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.import.error.c"
+ }
+ },
+ "end": "$",
+ "name": "meta.preprocessor.diagnostic.c",
+ "patterns": [
+ {
+ "match": "(?>\\\\\\s*\\n)",
+ "name": "punctuation.separator.continuation.c"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*[#%]\\s*(include|import)\\b\\s+",
+ "captures": {
+ "1": {
+ "name": "keyword.control.import.include.c"
+ }
+ },
+ "end": "(?=(?://|/\\*))|$",
+ "name": "meta.preprocessor.c.include",
+ "patterns": [
+ {
+ "match": "(?>\\\\\\s*\\n)",
+ "name": "punctuation.separator.continuation.c"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.c"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.c"
+ }
+ },
+ "name": "string.quoted.double.include.c"
+ },
+ {
+ "begin": "<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.c"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.c"
+ }
+ },
+ "name": "string.quoted.other.lt-gt.include.c"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*[%#]\\s*((xi?)?define|defined|elif(def)?|else|if(macro|ctx|idni?|num|str)?|ifn?def|line|(end)?macro|pragma|undef|endif)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.import.c"
+ }
+ },
+ "end": "(?=(?://|/\\*))|$",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "match": "(?>\\\\\\s*\\n)",
+ "name": "punctuation.separator.continuation.c"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*[#%]\\s*(assign|strlen|substr|(end|exit)?rep|push|pop)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control"
+ }
+ },
+ "end": "$",
+ "name": "meta.preprocessor.nasm",
+ "patterns": [
+ {
+ "match": "(?>\\\\\\s*\\n)",
+ "name": "punctuation.separator.continuation.c"
+ }
+ ]
+ }
+ ]
+ },
+ "registers": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(?:[abcd][hl]|[er]?[abcd]x|[er]?(?:di|si|bp|sp)|dil|sil|bpl|spl|r(?:8|9|1[0-5])[bdlw]?)\\b",
+ "name": "constant.language.register.general-purpose.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:[cdefgs]s)\\b",
+ "name": "constant.language.register.segment.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:[er]?flags)\\b",
+ "name": "constant.language.register.flags.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:[er]?ip)\\b",
+ "name": "constant.language.register.instruction-pointer.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:cr[02-4])\\b",
+ "name": "constant.language.register.control.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:(?:mm|st|fpr)[0-7])\\b",
+ "name": "constant.language.register.mmx.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:[xy]mm(?:[0-9]|1[0-5])|mxcsr)\\b",
+ "name": "constant.language.register.sse_avx.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:zmm(?:[12]?[0-9]|30|31))\\b",
+ "name": "constant.language.register.avx512.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:bnd(?:[0-3]|cfg[su]|status))\\b",
+ "name": "constant.language.register.memory-protection.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:(?:[gil]dt)r?|tr)\\b",
+ "name": "constant.language.register.system-table-pointer.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:dr[0-367])\\b",
+ "name": "constant.language.register.debug.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:cr8|dr(?:[89]|1[0-5])|efer|tpr|syscfg)\\b",
+ "name": "constant.language.register.amd.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:db[0-367]|t[67]|tr[3-7]|st)\\b",
+ "name": "invalid.deprecated.constant.language.register.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b[xy]mm(?:1[6-9]|2[0-9]|3[01])\\b",
+ "name": "constant.language.register.general-purpose.alias.asm.x86_64"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.asm"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.asm"
+ }
+ },
+ "name": "string.quoted.double.asm",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#string_placeholder"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.asm"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.asm"
+ }
+ },
+ "name": "string.quoted.single.asm",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#string_placeholder"
+ }
+ ]
+ },
+ {
+ "begin": "`",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.asm"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.asm"
+ }
+ },
+ "name": "string.quoted.backquote.asm",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#string_placeholder"
+ }
+ ]
+ }
+ ]
+ },
+ "support": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(?:s?byte|(?:[doqtyz]|dq|s[dq]?)?word|(?:d|res)[bdoqtwyz]|ddq)\\b",
+ "name": "storage.type.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:incbin|equ|times)\\b",
+ "name": "support.function.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:strict|nosplit|near|far|abs|rel)\\b",
+ "name": "storage.modifier.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:[ao](?:16|32|64))\\b",
+ "name": "storage.modifier.prefix.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\b(?:rep(?:n?[ez])?|lock|xacquire|xrelease|(?:no)?bnd)\\b",
+ "name": "storage.modifier.prefix.asm.x86_64"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.modifier.prefix.vex.asm.x86_64"
+ }
+ },
+ "match": "{(vex[23]|evex)}"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.modifier.opmask.asm.x86_64"
+ }
+ },
+ "match": "{(k[1-7])}"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.modifier.precision.asm.x86_64"
+ }
+ },
+ "match": "{(1to(?:8|16))}"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.modifier.rounding.asm.x86_64"
+ }
+ },
+ "match": "{(z|(?:r[nudz]-)?sae)}"
+ },
+ {
+ "match": "\\.\\.(?:start|imagebase|tlvp|got(?:pc(?:rel)?|(?:tp)?off)?|plt|sym|tlsie)\\b",
+ "name": "support.constant.asm.x86_64"
+ },
+ {
+ "match": "\\b__(?:utf(?:(?:16|32)(?:[lb]e)?)|float(?:8|16|32|64|80[me]|128[lh])|Infinity|[QS]?NaN)__\\b",
+ "name": "support.function.asm.x86_64"
+ },
+ {
+ "match": "\\b__NASM_(?:MAJOR|(?:SUB)?MINOR|SNAPSHOT|VER(?:SION_ID)?)__\\b",
+ "name": "support.function.asm.x86_64"
+ },
+ {
+ "match": "\\b___NASM_PATCHLEVEL__\\b",
+ "name": "support.function.asm.x86_64"
+ },
+ {
+ "match": "\\b__(?:FILE|LINE|BITS|OUTPUT_FORMAT)__\\b",
+ "name": "support.function.asm.x86_64"
+ },
+ {
+ "match": "\\b__(?:(?:UTC_)?(?:DATE|TIME)(?:_NUM)?|POSIX_TIME)__\\b",
+ "name": "support.function.asm.x86_64"
+ },
+ {
+ "match": "\\b__USE_(?:ALTREG|SMARTALIGN|FP|IFUNC)__\\b",
+ "name": "support.function.asm.x86_64"
+ },
+ {
+ "match": "\\b__PASS__\\b",
+ "name": "invalid.deprecated.support.constant.altreg.asm.x86_64"
+ },
+ {
+ "match": "\\b__ALIGNMODE__\\b",
+ "name": "support.constant.smartalign.asm.x86_64"
+ },
+ {
+ "match": "\\b(?:Inf|[QS]?NaN)\\b",
+ "name": "support.constant.fp.asm.x86_64"
+ },
+ {
+ "match": "\\b(?:float(?:8|16|32|64|80[me]|128[lh]))\\b",
+ "name": "support.function.fp.asm.x86_64"
+ },
+ {
+ "match": "(?i)\\bilog2(?:[ewfc]|[fc]w)?\\b",
+ "name": "support.function.ifunc.asm.x86_64"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.asm.x86_64",
+ "uuid": "05d6565d-991a-4e88-8e28-63bb21197f32"
+}
diff --git a/node_modules/shiki/languages/astro.tmLanguage.json b/node_modules/shiki/languages/astro.tmLanguage.json
new file mode 100644
index 0000000..96dfcf3
--- /dev/null
+++ b/node_modules/shiki/languages/astro.tmLanguage.json
@@ -0,0 +1,773 @@
+{
+ "name": "astro",
+ "scopeName": "source.astro",
+ "fileTypes": ["astro"],
+ "injections": {
+ "L:(meta.script.astro) (meta.lang.json) - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.astro",
+ "contentName": "source.json",
+ "patterns": [
+ {
+ "include": "source.json"
+ }
+ ]
+ }
+ ]
+ },
+ "L:(meta.script.astro) (meta.lang.js | meta.lang.javascript | meta.lang.partytown | meta.lang.node) - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.astro",
+ "contentName": "source.js",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ "L:(meta.script.astro) (meta.lang.ts | meta.lang.typescript) - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.astro",
+ "contentName": "source.ts",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.script.astro - meta.lang - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.astro",
+ "contentName": "source.js",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.style.astro meta.lang.stylus - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.astro",
+ "contentName": "source.stylus",
+ "patterns": [
+ {
+ "include": "source.stylus"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.style.astro meta.lang.sass - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.astro",
+ "contentName": "source.sass",
+ "patterns": [
+ {
+ "include": "source.sass"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.style.astro meta.lang.css - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.astro",
+ "contentName": "source.css",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.style.astro meta.lang.scss - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.astro",
+ "contentName": "source.css.scss",
+ "patterns": [
+ {
+ "include": "source.css.scss"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.style.astro meta.lang.less - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.astro",
+ "contentName": "source.css.less",
+ "patterns": [
+ {
+ "include": "source.css.less"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.style.astro meta.lang.postcss - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.astro",
+ "contentName": "source.css.postcss",
+ "patterns": [
+ {
+ "include": "source.css.postcss"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.style.astro - meta.lang - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.astro",
+ "contentName": "source.css",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#scope"
+ },
+ {
+ "include": "#frontmatter"
+ }
+ ],
+ "repository": {
+ "frontmatter": {
+ "begin": "\\A(-{3})\\s*$",
+ "end": "(^|\\G)(-{3})|\\.{3}\\s*$",
+ "beginCaptures": {
+ "1": {
+ "name": "comment"
+ }
+ },
+ "endCaptures": {
+ "2": {
+ "name": "comment"
+ }
+ },
+ "contentName": "source.ts",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ },
+ "scope": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#tags"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "begin": "(?<=>|})",
+ "end": "(?=<|{)",
+ "name": "text.astro"
+ }
+ ]
+ },
+ "comments": {
+ "begin": "<!--",
+ "end": "-->",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.astro"
+ }
+ },
+ "name": "comment.block.astro",
+ "patterns": [
+ {
+ "match": "\\G-?>|<!--(?!>)|<!-(?=-->)|--!>",
+ "name": "invalid.illegal.characters-not-allowed-here.astro"
+ }
+ ]
+ },
+ "interpolation": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.astro"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.astro"
+ }
+ },
+ "contentName": "meta.embedded.expression.astro source.tsx",
+ "patterns": [
+ {
+ "begin": "\\G\\s*(?={)",
+ "end": "(?<=})",
+ "patterns": [
+ {
+ "include": "source.tsx#object-literal"
+ }
+ ]
+ },
+ {
+ "include": "source.tsx"
+ }
+ ]
+ }
+ ]
+ },
+ "attributes": {
+ "patterns": [
+ {
+ "include": "#attributes-events"
+ },
+ {
+ "include": "#attributes-keyvalue"
+ },
+ {
+ "include": "#attributes-interpolated"
+ }
+ ]
+ },
+ "attributes-events": {
+ "begin": "(on(s(croll|t(orage|alled)|u(spend|bmit)|e(curitypolicyviolation|ek(ing|ed)|lect))|hashchange|c(hange|o(ntextmenu|py)|u(t|echange)|l(ick|ose)|an(cel|play(through)?))|t(imeupdate|oggle)|in(put|valid)|o(nline|ffline)|d(urationchange|r(op|ag(start|over|e(n(ter|d)|xit)|leave)?)|blclick)|un(handledrejection|load)|p(opstate|lay(ing)?|a(ste|use|ge(show|hide))|rogress)|e(nded|rror|mptied)|volumechange|key(down|up|press)|focus|w(heel|aiting)|l(oad(start|e(nd|d(data|metadata)))?|anguagechange)|a(uxclick|fterprint|bort)|r(e(s(ize|et)|jectionhandled)|atechange)|m(ouse(o(ut|ver)|down|up|enter|leave|move)|essage(error)?)|b(efore(unload|print)|lur)))(?![\\\\w:-])",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "match": ".*",
+ "name": "entity.other.attribute-name.astro"
+ }
+ ]
+ }
+ },
+ "end": "(?=\\s*+[^=\\s])",
+ "name": "meta.attribute.$1.astro",
+ "patterns": [
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.key-value.astro"
+ }
+ },
+ "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)",
+ "patterns": [
+ {
+ "begin": "(?=[^\\s=<>`/]|/(?!>))",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.line.js",
+ "patterns": [
+ {
+ "match": "(([^\\s\\\"'=<>`/]|/(?!>))+)",
+ "name": "string.unquoted.astro",
+ "captures": {
+ "0": {
+ "name": "source.js"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "([\"])",
+ "end": "\\1",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.astro"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.astro"
+ }
+ },
+ "name": "string.quoted.astro",
+ "patterns": [
+ {
+ "match": "([^\\n\\\"/]|/(?![/*]))+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.js"
+ }
+ },
+ "end": "(?=\\\")|\\n",
+ "name": "comment.line.double-slash.js"
+ },
+ {
+ "begin": "/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.js"
+ }
+ },
+ "end": "(?=\\\")|\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.js"
+ }
+ },
+ "name": "comment.block.js"
+ }
+ ]
+ },
+ {
+ "begin": "(['])",
+ "end": "\\1",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.astro"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.astro"
+ }
+ },
+ "name": "string.quoted.astro",
+ "patterns": [
+ {
+ "match": "([^\\n\\'/]|/(?![/*]))+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.js"
+ }
+ },
+ "end": "(?=\\')|\\n",
+ "name": "comment.line.double-slash.js"
+ },
+ {
+ "begin": "/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.js"
+ }
+ },
+ "end": "(?=\\')|\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.js"
+ }
+ },
+ "name": "comment.block.js"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "attributes-interpolated": {
+ "begin": "(?<!:|=)\\s*({)",
+ "end": "(\\})",
+ "contentName": "meta.embedded.expression.astro source.tsx",
+ "patterns": [
+ {
+ "include": "source.tsx"
+ }
+ ]
+ },
+ "attributes-keyvalue": {
+ "begin": "([_@$[:alpha:]][:._\\-$[:alnum:]]*)",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "match": ".*",
+ "name": "entity.other.attribute-name.astro"
+ }
+ ]
+ }
+ },
+ "end": "(?=\\s*+[^=\\s])",
+ "name": "meta.attribute.$1.astro",
+ "patterns": [
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.key-value.astro"
+ }
+ },
+ "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)",
+ "patterns": [
+ {
+ "include": "#attributes-value"
+ }
+ ]
+ }
+ ]
+ },
+ "attributes-value": {
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "match": "([^\\s\"'=<>`/]|/(?!>))+",
+ "name": "string.unquoted.astro"
+ },
+ {
+ "begin": "(['\"])",
+ "end": "\\1",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.astro"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.astro"
+ }
+ },
+ "name": "string.quoted.astro"
+ },
+ {
+ "begin": "(`)",
+ "end": "\\1",
+ "name": "string.template.astro",
+ "patterns": [
+ {
+ "include": "source.tsx#template-substitution-element"
+ }
+ ]
+ }
+ ]
+ },
+ "tags": {
+ "patterns": [
+ {
+ "include": "#tags-raw"
+ },
+ {
+ "include": "#tags-lang"
+ },
+ {
+ "include": "#tags-void"
+ },
+ {
+ "include": "#tags-general-end"
+ },
+ {
+ "include": "#tags-general-start"
+ }
+ ]
+ },
+ "tags-name": {
+ "patterns": [
+ {
+ "match": "[A-Z][a-zA-Z0-9_]*",
+ "name": "support.class.component.astro"
+ },
+ {
+ "match": "[a-z][\\w0-9:]*-[\\w0-9:-]*",
+ "name": "meta.tag.custom.astro entity.name.tag.astro"
+ },
+ {
+ "match": "[a-z][\\w0-9:-]*",
+ "name": "entity.name.tag.astro"
+ }
+ ]
+ },
+ "tags-start-attributes": {
+ "begin": "\\G",
+ "end": "(?=/?>)",
+ "name": "meta.tag.start.astro",
+ "patterns": [
+ {
+ "include": "#attributes"
+ }
+ ]
+ },
+ "tags-lang-start-attributes": {
+ "begin": "\\G",
+ "end": "(?=/>)|>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.astro"
+ }
+ },
+ "name": "meta.tag.start.astro",
+ "patterns": [
+ {
+ "include": "#attributes"
+ }
+ ]
+ },
+ "tags-start-node": {
+ "match": "(<)([^/\\s>/]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.astro"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#tags-name"
+ }
+ ]
+ }
+ },
+ "name": "meta.tag.start.astro"
+ },
+ "tags-end-node": {
+ "match": "(</)(.*?)\\s*(>)|(/>)",
+ "captures": {
+ "1": {
+ "name": "meta.tag.end.astro punctuation.definition.tag.begin.astro"
+ },
+ "2": {
+ "name": "meta.tag.end.astro",
+ "patterns": [
+ {
+ "include": "#tags-name"
+ }
+ ]
+ },
+ "3": {
+ "name": "meta.tag.end.astro punctuation.definition.tag.end.astro"
+ },
+ "4": {
+ "name": "meta.tag.start.astro punctuation.definition.tag.end.astro"
+ }
+ }
+ },
+ "tags-raw": {
+ "begin": "<([^/?!\\s<>]+)(?=[^>]+is:raw).*?",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#tags-start-node"
+ }
+ ]
+ }
+ },
+ "end": "</\\1\\s*>|/>",
+ "endCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#tags-end-node"
+ }
+ ]
+ }
+ },
+ "name": "meta.scope.tag.$1.astro meta.raw.astro",
+ "contentName": "source.unknown",
+ "patterns": [
+ {
+ "include": "#tags-lang-start-attributes"
+ }
+ ]
+ },
+ "tags-lang": {
+ "begin": "<(script|style)",
+ "end": "</\\1\\s*>|/>",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#tags-start-node"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#tags-end-node"
+ }
+ ]
+ }
+ },
+ "name": "meta.scope.tag.$1.astro meta.$1.astro",
+ "patterns": [
+ {
+ "begin": "\\G(?=\\s*[^>]*?(type|lang)\\s*=\\s*(['\"]|)(?:text\\/)?(application\\/ld\\+json)\\2)",
+ "end": "(?=</|/>)",
+ "name": "meta.lang.json.astro",
+ "patterns": [
+ {
+ "include": "#tags-lang-start-attributes"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?=\\s*[^>]*?(type|lang)\\s*=\\s*(['\"]|)(module)\\2)",
+ "end": "(?=</|/>)",
+ "name": "meta.lang.javascript.astro",
+ "patterns": [
+ {
+ "include": "#tags-lang-start-attributes"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?=\\s*[^>]*?(type|lang)\\s*=\\s*(['\"]|)(?:text/|application/)?([\\w\\/+]+)\\2)",
+ "end": "(?=</|/>)",
+ "name": "meta.lang.$3.astro",
+ "patterns": [
+ {
+ "include": "#tags-lang-start-attributes"
+ }
+ ]
+ },
+ {
+ "include": "#tags-lang-start-attributes"
+ }
+ ]
+ },
+ "tags-void": {
+ "begin": "(<)(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.astro"
+ },
+ "2": {
+ "name": "entity.name.tag.astro"
+ }
+ },
+ "end": "/?>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.begin.astro"
+ }
+ },
+ "name": "meta.tag.void.astro",
+ "patterns": [
+ {
+ "include": "#attributes"
+ }
+ ]
+ },
+ "tags-general-start": {
+ "begin": "(<)([^/\\s>/]*)",
+ "end": "(/?>)",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#tags-start-node"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "meta.tag.start.astro punctuation.definition.tag.end.astro"
+ }
+ },
+ "name": "meta.scope.tag.$2.astro",
+ "patterns": [
+ {
+ "include": "#tags-start-attributes"
+ }
+ ]
+ },
+ "tags-general-end": {
+ "begin": "(</)([^/\\s>]*)",
+ "end": "(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.tag.end.astro punctuation.definition.tag.begin.astro"
+ },
+ "2": {
+ "name": "meta.tag.end.astro",
+ "patterns": [
+ {
+ "include": "#tags-name"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "meta.tag.end.astro punctuation.definition.tag.end.astro"
+ }
+ },
+ "name": "meta.scope.tag.$2.astro"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/awk.tmLanguage.json b/node_modules/shiki/languages/awk.tmLanguage.json
new file mode 100644
index 0000000..3cd0c6c
--- /dev/null
+++ b/node_modules/shiki/languages/awk.tmLanguage.json
@@ -0,0 +1,386 @@
+{
+ "fileTypes": ["awk"],
+ "name": "awk",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#procedure"
+ },
+ {
+ "include": "#pattern"
+ }
+ ],
+ "repository": {
+ "builtin-pattern": {
+ "match": "\\b(BEGINFILE|BEGIN|ENDFILE|END)\\b",
+ "name": "constant.language.awk"
+ },
+ "command": {
+ "patterns": [
+ {
+ "match": "\\b(?:next|print|printf)\\b",
+ "name": "keyword.other.command.awk"
+ },
+ {
+ "match": "\\b(?:close|getline|delete|system)\\b",
+ "name": "keyword.other.command.nawk"
+ },
+ {
+ "match": "\\b(?:fflush|nextfile)\\b",
+ "name": "keyword.other.command.bell-awk"
+ }
+ ]
+ },
+ "comment": {
+ "match": "#.*",
+ "name": "comment.line.number-sign.awk"
+ },
+ "constant": {
+ "patterns": [
+ {
+ "include": "#numeric-constant"
+ },
+ {
+ "include": "#string-constant"
+ }
+ ]
+ },
+ "escaped-char": {
+ "match": "\\\\(?:[\\\\abfnrtv/\"]|x[0-9A-Fa-f]{2}|[0-7]{3})",
+ "name": "constant.character.escape.awk"
+ },
+ "expression": {
+ "patterns": [
+ {
+ "include": "#command"
+ },
+ {
+ "include": "#function"
+ },
+ {
+ "include": "#constant"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#regexp-in-expression"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#groupings"
+ }
+ ]
+ },
+ "function": {
+ "patterns": [
+ {
+ "match": "\\b(?:exp|int|log|sqrt|index|length|split|sprintf|substr)\\b",
+ "name": "support.function.awk"
+ },
+ {
+ "match": "\\b(?:atan2|cos|rand|sin|srand|gsub|match|sub|tolower|toupper)\\b",
+ "name": "support.function.nawk"
+ },
+ {
+ "match": "\\b(?:gensub|strftime|systime)\\b",
+ "name": "support.function.gawk"
+ }
+ ]
+ },
+ "function-definition": {
+ "begin": "\\b(function)\\s+(\\w+)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.awk"
+ },
+ "2": {
+ "name": "entity.name.function.awk"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.awk"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.awk"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\b(\\w+)\\b",
+ "name": "variable.parameter.function.awk"
+ },
+ {
+ "match": "\\b(,)\\b",
+ "name": "punctuation.separator.parameters.awk"
+ }
+ ]
+ },
+ "groupings": {
+ "patterns": [
+ {
+ "match": "\\(",
+ "name": "meta.brace.round.awk"
+ },
+ {
+ "match": "\\)",
+ "name": "meta.brace.round.awk"
+ },
+ {
+ "match": "\\,",
+ "name": "punctuation.separator.parameters.awk"
+ }
+ ]
+ },
+ "keyword": {
+ "match": "\\b(?:break|continue|do|while|exit|for|if|else|return)\\b",
+ "name": "keyword.control.awk"
+ },
+ "numeric-constant": {
+ "match": "\\b[0-9]+(?:\\.[0-9]+)?(?:e[+-][0-9]+)?\\b",
+ "name": "constant.numeric.awk"
+ },
+ "operator": {
+ "patterns": [
+ {
+ "match": "(!?~|[=<>!]=|[<>])",
+ "name": "keyword.operator.comparison.awk"
+ },
+ {
+ "match": "\\b(in)\\b",
+ "name": "keyword.operator.comparison.awk"
+ },
+ {
+ "match": "([+\\-*/%^]=|\\+\\+|--|>>|=)",
+ "name": "keyword.operator.assignment.awk"
+ },
+ {
+ "match": "(\\|\\||&&|!)",
+ "name": "keyword.operator.boolean.awk"
+ },
+ {
+ "match": "([+\\-*/%^])",
+ "name": "keyword.operator.arithmetic.awk"
+ },
+ {
+ "match": "([?:])",
+ "name": "keyword.operator.trinary.awk"
+ },
+ {
+ "match": "(\\[|\\])",
+ "name": "keyword.operator.index.awk"
+ }
+ ]
+ },
+ "pattern": {
+ "patterns": [
+ {
+ "include": "#regexp-as-pattern"
+ },
+ {
+ "include": "#function-definition"
+ },
+ {
+ "include": "#builtin-pattern"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "procedure": {
+ "begin": "\\{",
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#procedure"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "regex-as-assignment": {
+ "begin": "([^=<>!+\\-*/%^]=)\\s*(/)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.awk"
+ },
+ "2": {
+ "name": "punctuation.definition.regex.begin.awk"
+ }
+ },
+ "contentName": "string.regexp",
+ "end": "/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.regex.end.awk"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.regexp"
+ }
+ ]
+ },
+ "regex-as-comparison": {
+ "begin": "(!?~)\\s*(/)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.comparison.awk"
+ },
+ "2": {
+ "name": "punctuation.definition.regex.begin.awk"
+ }
+ },
+ "contentName": "string.regexp",
+ "end": "/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.regex.end.awk"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.regexp"
+ }
+ ]
+ },
+ "regex-as-first-argument": {
+ "begin": "(\\()\\s*(/)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.round.awk"
+ },
+ "2": {
+ "name": "punctuation.definition.regex.begin.awk"
+ }
+ },
+ "contentName": "string.regexp",
+ "end": "/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.regex.end.awk"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.regexp"
+ }
+ ]
+ },
+ "regex-as-nth-argument": {
+ "begin": "(,)\\s*(/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.parameters.awk"
+ },
+ "2": {
+ "name": "punctuation.definition.regex.begin.awk"
+ }
+ },
+ "contentName": "string.regexp",
+ "end": "/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.regex.end.awk"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.regexp"
+ }
+ ]
+ },
+ "regexp-as-pattern": {
+ "begin": "/",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.regex.begin.awk"
+ }
+ },
+ "contentName": "string.regexp",
+ "end": "/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.regex.end.awk"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.regexp"
+ }
+ ]
+ },
+ "regexp-in-expression": {
+ "patterns": [
+ {
+ "include": "#regex-as-assignment"
+ },
+ {
+ "include": "#regex-as-comparison"
+ },
+ {
+ "include": "#regex-as-first-argument"
+ },
+ {
+ "include": "#regex-as-nth-argument"
+ }
+ ]
+ },
+ "string-constant": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.awk"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.awk"
+ }
+ },
+ "name": "string.quoted.double.awk",
+ "patterns": [
+ {
+ "include": "#escaped-char"
+ }
+ ]
+ },
+ "variable": {
+ "patterns": [
+ {
+ "match": "\\$[0-9]+",
+ "name": "variable.language.awk"
+ },
+ {
+ "match": "\\b(?:FILENAME|FS|NF|NR|OFMT|OFS|ORS|RS)\\b",
+ "name": "variable.language.awk"
+ },
+ {
+ "match": "\\b(?:ARGC|ARGV|CONVFMT|ENVIRON|FNR|RLENGTH|RSTART|SUBSEP)\\b",
+ "name": "variable.language.nawk"
+ },
+ {
+ "match": "\\b(?:ARGIND|ERRNO|FIELDWIDTHS|IGNORECASE|RT)\\b",
+ "name": "variable.language.gawk"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.awk",
+ "uuid": "67bd1ff0-006b-4c32-8b97-8bc198777582"
+}
diff --git a/node_modules/shiki/languages/ballerina.tmLanguage.json b/node_modules/shiki/languages/ballerina.tmLanguage.json
new file mode 100644
index 0000000..97b0f09
--- /dev/null
+++ b/node_modules/shiki/languages/ballerina.tmLanguage.json
@@ -0,0 +1,3784 @@
+{
+ "name": "ballerina",
+ "scopeName": "source.ballerina",
+ "fileTypes": ["bal"],
+ "uuid": "c01f5512-489a-41bd-ba5d-caf4b55ae3b3",
+ "monarchVariables": {
+ "typeScope": "type",
+ "annotationScope": "type",
+ "numberScope": "number",
+ "xmlTagAngle": "tag",
+ "xmlAttribute": "variable.parameter",
+ "xmlTag": "tag",
+ "primitiveScope": "type"
+ },
+ "tmlVariables": {
+ "typeScope": "storage.type.ballerina",
+ "annotationScope": "support.type.ballerina",
+ "numberScope": "constant.numeric.decimal.ballerina",
+ "xmlTagAngle": "punctuation.definition.tag.begin.xml.ballerina",
+ "xmlAttribute": "entity.other.attribute-name.xml.ballerina",
+ "xmlTag": "entity.name.tag.xml.ballerina",
+ "primitiveScope": "support.type.primitive.ballerina"
+ },
+ "patterns": [
+ {
+ "include": "#statements"
+ }
+ ],
+ "repository": {
+ "statements": {
+ "patterns": [
+ {
+ "include": "#stringTemplate"
+ },
+ {
+ "include": "#declaration"
+ },
+ {
+ "include": "#control-statement"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#mdDocumentation"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#annotationAttachment"
+ },
+ {
+ "include": "#regex"
+ }
+ ]
+ },
+ "declaration": {
+ "patterns": [
+ {
+ "include": "#import-declaration"
+ },
+ {
+ "include": "#var-expr"
+ },
+ {
+ "include": "#typeDefinition"
+ },
+ {
+ "include": "#function-defn"
+ },
+ {
+ "include": "#service-decl"
+ },
+ {
+ "include": "#class-defn"
+ },
+ {
+ "include": "#enum-decl"
+ },
+ {
+ "include": "#source"
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ "control-statement": {
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.flow.ballerina"
+ }
+ },
+ "end": "(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\b))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#for-loop"
+ },
+ {
+ "include": "#if-statement"
+ },
+ {
+ "name": "keyword.control.conditional.ballerina",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "expression": {
+ "patterns": [
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#expressionWithoutIdentifiers"
+ },
+ {
+ "include": "#identifiers"
+ },
+ {
+ "include": "#regex"
+ }
+ ]
+ },
+ "expressionWithoutIdentifiers": {
+ "patterns": [
+ {
+ "include": "#xml"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#stringTemplate"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#object-literal"
+ },
+ {
+ "include": "#ternary-expression"
+ },
+ {
+ "include": "#expression-operators"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#paranthesised"
+ },
+ {
+ "include": "#regex"
+ }
+ ]
+ },
+ "object-literal": {
+ "name": "meta.objectliteral.ballerina",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-member"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "import-declaration": {
+ "name": "meta.import.ballerina",
+ "begin": "\\bimport\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.import.ballerina"
+ }
+ },
+ "end": "\\;",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.statement.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(\\')([_$[:alpha:]][_$[:alnum:]]*)",
+ "name": "variable.other.property.ballerina"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#import-clause"
+ },
+ {
+ "include": "#punctuation-accessor"
+ }
+ ]
+ },
+ "identifiers": {
+ "patterns": [
+ {
+ "match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((\n ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n))",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.ballerina"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.ballerina"
+ },
+ "3": {
+ "name": "entity.name.function.ballerina"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=\\()",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.ballerina"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.ballerina"
+ },
+ "3": {
+ "name": "entity.name.function.ballerina"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.ballerina"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.ballerina"
+ },
+ "3": {
+ "name": "variable.other.property.ballerina"
+ }
+ }
+ },
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "include": "#self-literal"
+ },
+ {
+ "name": "keyword.control.ballerina",
+ "match": "\\b(check|foreach|if|checkpanic)\\b"
+ },
+ {
+ "include": "#call"
+ },
+ {
+ "name": "support.type.primitive.ballerina",
+ "match": "\\b(var)\\b"
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)((\\.)([_$[:alpha:]][_$[:alnum:]]*)(\\()(\\)))?",
+ "captures": {
+ "1": {
+ "name": "variable.other.readwrite.ballerina"
+ },
+ "3": {
+ "name": "punctuation.accessor.ballerina"
+ },
+ "4": {
+ "name": "entity.name.function.ballerina"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.begin.ballerina"
+ },
+ "6": {
+ "name": "punctuation.definition.parameters.end.ballerina"
+ }
+ }
+ },
+ {
+ "match": "(\\')([_$[:alpha:]][_$[:alnum:]]*)",
+ "name": "variable.other.property.ballerina"
+ },
+ {
+ "include": "#type-annotation"
+ }
+ ]
+ },
+ "object-member": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#function-defn"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "name": "meta.object.member.ballerina meta.object-literal.key.ballerina",
+ "begin": "(?=\\[)",
+ "end": "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",
+ "patterns": [
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.ballerina meta.object-literal.key.ballerina",
+ "begin": "(?=[\\'\\\"\\`])",
+ "end": "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\n*})|(\\s+(as)\\s+))))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.ballerina meta.object-literal.key.ballerina",
+ "begin": "(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)))",
+ "end": "(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as\\s+))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#numbers"
+ }
+ ]
+ },
+ {
+ "name": "meta.method.declaration.ballerina",
+ "begin": "(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",
+ "end": "(?=\\}|;|,)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.ballerina",
+ "match": "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
+ "captures": {
+ "0": {
+ "name": "meta.object-literal.key.ballerina"
+ },
+ "1": {
+ "name": "constant.numeric.decimal.ballerina"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.ballerina",
+ "match": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(\n ((\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((\n ((<\\s*$)|((<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "0": {
+ "name": "meta.object-literal.key.ballerina"
+ },
+ "1": {
+ "name": "entity.name.function.ballerina"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.ballerina",
+ "match": "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
+ "captures": {
+ "0": {
+ "name": "meta.object-literal.key.ballerina"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.ballerina",
+ "begin": "\\.\\.\\.",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.spread.ballerina"
+ }
+ },
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.ballerina",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",
+ "captures": {
+ "1": {
+ "name": "variable.other.readwrite.ballerina"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.ballerina",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.as.ballerina"
+ },
+ "2": {
+ "name": "storage.modifier.ballerina"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.ballerina",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.as.ballerina"
+ }
+ },
+ "end": "(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+))"
+ },
+ {
+ "name": "meta.object.member.ballerina",
+ "begin": "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",
+ "end": "(?=,|\\}|$|\\/\\/|\\/\\*)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "expression-operators": {
+ "patterns": [
+ {
+ "name": "keyword.operator.assignment.compound.ballerina",
+ "match": "\\*=|(?<!\\()/=|%=|\\+=|\\-="
+ },
+ {
+ "name": "keyword.operator.assignment.compound.bitwise.ballerina",
+ "match": "\\&=|\\^=|<<=|>>=|>>>=|\\|="
+ },
+ {
+ "name": "keyword.operator.bitwise.shift.ballerina",
+ "match": "<<|>>>|>>"
+ },
+ {
+ "name": "keyword.operator.comparison.ballerina",
+ "match": "===|!==|==|!="
+ },
+ {
+ "name": "keyword.operator.relational.ballerina",
+ "match": "<=|>=|<>|<|>"
+ },
+ {
+ "match": "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.logical.ballerina"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.compound.ballerina"
+ },
+ "3": {
+ "name": "keyword.operator.arithmetic.ballerina"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.logical.ballerina",
+ "match": "\\!|&&|\\|\\||\\?\\?"
+ },
+ {
+ "name": "keyword.operator.bitwise.ballerina",
+ "match": "\\&|~|\\^|\\|"
+ },
+ {
+ "name": "keyword.operator.assignment.ballerina",
+ "match": "\\="
+ },
+ {
+ "name": "keyword.operator.decrement.ballerina",
+ "match": "--"
+ },
+ {
+ "name": "keyword.operator.increment.ballerina",
+ "match": "\\+\\+"
+ },
+ {
+ "name": "keyword.operator.arithmetic.ballerina",
+ "match": "%|\\*|/|-|\\+"
+ }
+ ]
+ },
+ "punctuation-comma": {
+ "patterns": [
+ {
+ "name": "punctuation.separator.comma.ballerina",
+ "match": ","
+ }
+ ]
+ },
+ "punctuation-semicolon": {
+ "patterns": [
+ {
+ "match": ";",
+ "name": "punctuation.terminator.statement.ballerina"
+ }
+ ]
+ },
+ "punctuation-accessor": {
+ "patterns": [
+ {
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.ballerina"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.ballerina"
+ }
+ }
+ }
+ ]
+ },
+ "annotationAttachment": {
+ "patterns": [
+ {
+ "match": "(@)((?:[_$[:alpha:]][_$[:alnum:]]*))\\s*(:?)\\s*((?:[_$[:alpha:]][_$[:alnum:]]*)?)",
+ "captures": {
+ "1": {
+ "name": "punctuation.decorator.ballerina"
+ },
+ "2": {
+ "name": "support.type.ballerina"
+ },
+ "3": {
+ "name": "punctuation.decorator.ballerina"
+ },
+ "4": {
+ "name": "support.type.ballerina"
+ }
+ }
+ }
+ ]
+ },
+ "annotationDefinition": {
+ "patterns": [
+ {
+ "begin": "\\bannotation\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ballerina"
+ }
+ },
+ "end": ";",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "booleans": {
+ "patterns": [
+ {
+ "match": "\\b(true|false)\\b",
+ "name": "constant.language.boolean.ballerina"
+ }
+ ]
+ },
+ "butExp": {
+ "patterns": [
+ {
+ "begin": "\\bbut\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ballerina"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina.documentation"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#butExpBody"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "butExpBody": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina.documentation"
+ }
+ },
+ "end": "(?=\\})",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina.documentation"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter"
+ },
+ {
+ "include": "#butClause"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "butClause": {
+ "patterns": [
+ {
+ "begin": "=>",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.arrow.ballerina storage.type.function.arrow.ballerina"
+ }
+ },
+ "end": ",|(?=\\})",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "call": {
+ "patterns": [
+ {
+ "match": "(?:\\')?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=\\()",
+ "name": "entity.name.function.ballerina"
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "name": "comment.ballerina",
+ "match": "\\/\\/.*"
+ }
+ ]
+ },
+ "constrainType": {
+ "patterns": [
+ {
+ "begin": "<",
+ "end": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.begin.ballerina"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#constrainType"
+ },
+ {
+ "name": "storage.type.ballerina",
+ "match": "\\b([_$[:alpha:]][_$[:alnum:]]*)\\b"
+ }
+ ]
+ }
+ ]
+ },
+ "tupleType": {
+ "patterns": [
+ {
+ "begin": "\\[",
+ "end": "(?=\\]|;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#constrainType"
+ },
+ {
+ "include": "#paranthesisedBracket"
+ },
+ {
+ "name": "storage.type.ballerina",
+ "match": "\\b([_$[:alpha:]][_$[:alnum:]]*)\\b"
+ }
+ ]
+ }
+ ]
+ },
+ "decl-block": {
+ "name": "meta.block.ballerina",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "end": "(?=\\} external;)|(\\})",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#statements"
+ },
+ {
+ "include": "#mdDocumentation"
+ }
+ ]
+ },
+ "defaultValue": {
+ "patterns": [
+ {
+ "begin": "[=:]",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.ballerina"
+ }
+ },
+ "end": "(?=[,)])",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "documentationDef": {
+ "patterns": [
+ {
+ "begin": "\\b(?:documentation|deprecated)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ballerina"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "delimiter.curly"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#documentationBody"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "documentationBody": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina.documentation"
+ }
+ },
+ "end": "(?=\\})",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina.documentation"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(P|R|T|F|V)({{)(.*)(}})",
+ "captures": {
+ "1": {
+ "name": "keyword.other.ballerina.documentation"
+ },
+ "2": {
+ "name": "keyword.other.ballerina.documentation"
+ },
+ "3": {
+ "name": "variable.parameter.ballerina.documentation"
+ },
+ "4": {
+ "name": "keyword.other.ballerina.documentation"
+ }
+ }
+ },
+ {
+ "name": "comment.block.code.ballerina.documentation",
+ "begin": "\\```",
+ "end": "\\```"
+ },
+ {
+ "name": "comment.block.code.ballerina.documentation",
+ "begin": "\\``",
+ "end": "\\``"
+ },
+ {
+ "name": "comment.block.code.ballerina.documentation",
+ "begin": "\\`",
+ "end": "\\`"
+ },
+ {
+ "name": "comment.block.ballerina.documentation",
+ "match": "."
+ }
+ ]
+ }
+ ]
+ },
+ "enum-decl": {
+ "name": "meta.enum.declaration.ballerina",
+ "begin": "(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ballerina"
+ },
+ "2": {
+ "name": "keyword.other.ballerina"
+ },
+ "3": {
+ "name": "entity.name.type.enum.ballerina"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#mdDocumentation"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#mdDocumentation"
+ },
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.enummember.ballerina"
+ }
+ },
+ "end": "(?=,|\\}|$)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ {
+ "begin": "(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",
+ "end": "(?=,|\\}|$)",
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ ]
+ },
+ "errorDestructure": {
+ "patterns": [
+ {
+ "begin": "error",
+ "end": "(?==>)",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "callableUnitBody": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "end": "(?=\\})",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#workerDef"
+ },
+ {
+ "include": "#service-decl"
+ },
+ {
+ "include": "#objectDec"
+ },
+ {
+ "include": "#function-defn"
+ },
+ {
+ "include": "#forkStatement"
+ },
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "for-loop": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))foreach\\s*",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.loop.ballerina"
+ },
+ "1": {
+ "name": "support.type.primitive.ballerina"
+ }
+ },
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "name": "keyword.other.ballerina",
+ "match": "\\bin\\b"
+ },
+ {
+ "include": "#identifiers"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#var-expr"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "forkBody": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "end": "(?=\\})",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#workerDef"
+ }
+ ]
+ }
+ ]
+ },
+ "forkStatement": {
+ "patterns": [
+ {
+ "begin": "\\bfork\\b",
+ "end": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ballerina"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#forkBody"
+ }
+ ]
+ }
+ ]
+ },
+ "function-body": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#functionParameters"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "begin": "\\=>",
+ "name": "meta.block.ballerina",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.arrow.ballerina storage.type.function.arrow.ballerina"
+ }
+ },
+ "end": "(?=\\;)|(?=\\,)|(?=)(?=\\);)",
+ "patterns": [
+ {
+ "include": "#statements"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ {
+ "name": "keyword.generator.asterisk.ballerina",
+ "match": "\\*"
+ }
+ ]
+ },
+ "function-defn": {
+ "name": "meta.function.ballerina",
+ "begin": "(?:(public|private)\\s+)?(function\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.ballerina"
+ },
+ "2": {
+ "name": "keyword.other.ballerina"
+ }
+ },
+ "end": "(?<=\\;)|(?<=\\})|(?<=\\,)|(?=)(?=\\);)",
+ "patterns": [
+ {
+ "match": "\\bexternal\\b",
+ "name": "keyword.ballerina"
+ },
+ {
+ "include": "#stringTemplate"
+ },
+ {
+ "include": "#annotationAttachment"
+ },
+ {
+ "include": "#functionReturns"
+ },
+ {
+ "include": "#functionName"
+ },
+ {
+ "include": "#functionParameters"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ },
+ {
+ "include": "#function-body"
+ },
+ {
+ "include": "#regex"
+ }
+ ]
+ },
+ "functionName": {
+ "patterns": [
+ {
+ "name": "keyword.other.ballerina",
+ "match": "\\bfunction\\b"
+ },
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "include": "#self-literal"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "match": "\\s+(\\b(self)|\\b(is|new|isolated|null|function|in)\\b|(string|int|boolean|float|byte|decimal|json|xml|anydata)\\b|\\b(readonly|error|map)\\b|([_$[:alpha:]][_$[:alnum:]]*))",
+ "captures": {
+ "2": {
+ "name": "variable.language.this.ballerina"
+ },
+ "3": {
+ "name": "keyword.other.ballerina"
+ },
+ "4": {
+ "name": "support.type.primitive.ballerina"
+ },
+ "5": {
+ "name": "storage.type.ballerina"
+ },
+ "6": {
+ "name": "meta.definition.function.ballerina entity.name.function.ballerina"
+ }
+ }
+ }
+ ]
+ },
+ "functionParameters": {
+ "name": "meta.parameters.ballerina",
+ "begin": "\\(|\\[",
+ "end": "\\)|\\]",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.begin.ballerina"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-parameters-body"
+ }
+ ]
+ },
+ "function-parameters-body": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#annotationAttachment"
+ },
+ {
+ "include": "#recordLiteral"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#parameter-name"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#identifiers"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "name": "punctuation.separator.parameter.ballerina",
+ "match": "\\,"
+ }
+ ]
+ },
+ "parameter-name": {
+ "patterns": [
+ {
+ "match": "\\s*\\b(var)\\s+",
+ "captures": {
+ "1": {
+ "name": "support.type.primitive.ballerina"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|(string|int|boolean|float|byte|decimal|json|xml|anydata)|\\b(is|new|isolated|null|function|in)\\b|\\b(true|false)\\b|\\b(check|foreach|if|checkpanic)\\b|\\b(readonly|error|map)\\b|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",
+ "captures": {
+ "2": {
+ "name": "keyword.operator.rest.ballerina"
+ },
+ "3": {
+ "name": "support.type.primitive.ballerina"
+ },
+ "4": {
+ "name": "keyword.other.ballerina"
+ },
+ "5": {
+ "name": "constant.language.boolean.ballerina"
+ },
+ "6": {
+ "name": "keyword.control.flow.ballerina"
+ },
+ "7": {
+ "name": "storage.type.ballerina"
+ },
+ "8": {
+ "name": "variable.parameter.ballerina"
+ },
+ "9": {
+ "name": "variable.parameter.ballerina"
+ },
+ "10": {
+ "name": "keyword.operator.optional.ballerina"
+ }
+ }
+ }
+ ]
+ },
+ "functionReturns": {
+ "name": "meta.type.function.return.ballerina",
+ "begin": "\\s*(returns)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.ballerina"
+ }
+ },
+ "end": "(?==>)|(\\=)|(?=\\{)|(\\))|(?=\\;)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "match": "\\s*\\b(var)(?=\\s+|\\[|\\?)",
+ "captures": {
+ "1": {
+ "name": "support.type.primitive.ballerina"
+ }
+ }
+ },
+ {
+ "match": "\\|",
+ "name": "keyword.operator.ballerina"
+ },
+ {
+ "match": "\\?",
+ "name": "keyword.operator.optional.ballerina"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#type-tuple"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "name": "variable.other.readwrite.ballerina"
+ }
+ ]
+ },
+ "functionType": {
+ "patterns": [
+ {
+ "begin": "\\bfunction\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ballerina"
+ }
+ },
+ "end": "(?=\\,)|(?=\\|)|(?=\\:)|(?==>)|(?=\\))|(?=\\])",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#functionTypeParamList"
+ },
+ {
+ "include": "#functionTypeReturns"
+ }
+ ]
+ }
+ ]
+ },
+ "functionTypeParamList": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "delimiter.parenthesis"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "delimiter.parenthesis"
+ }
+ },
+ "patterns": [
+ {
+ "match": "public",
+ "name": "keyword"
+ },
+ {
+ "include": "#annotationAttachment"
+ },
+ {
+ "include": "#recordLiteral"
+ },
+ {
+ "include": "#record"
+ },
+ {
+ "include": "#objectDec"
+ },
+ {
+ "include": "#functionType"
+ },
+ {
+ "include": "#constrainType"
+ },
+ {
+ "include": "#parameterTuple"
+ },
+ {
+ "include": "#functionTypeType"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "functionTypeType": {
+ "patterns": [
+ {
+ "begin": "[_$[:alpha:]][_$[:alnum:]]*",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.ballerina"
+ }
+ },
+ "end": "(?=\\,)|(?:\\|)|(?=\\])|(?=\\))"
+ }
+ ]
+ },
+ "functionTypeReturns": {
+ "patterns": [
+ {
+ "begin": "\\breturns\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword"
+ }
+ },
+ "end": "(?=\\,)|(?:\\|)|(?=\\])|(?=\\))",
+ "patterns": [
+ {
+ "include": "#functionTypeReturnsParameter"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "functionTypeReturnsParameter": {
+ "patterns": [
+ {
+ "begin": "((?=record|object|function)|(?:[_$[:alpha:]][_$[:alnum:]]*))",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.ballerina"
+ }
+ },
+ "end": "(?=\\,)|(?:\\|)|(?:\\:)|(?==>)|(?=\\))|(?=\\])",
+ "patterns": [
+ {
+ "include": "#record"
+ },
+ {
+ "include": "#objectDec"
+ },
+ {
+ "include": "#functionType"
+ },
+ {
+ "include": "#constrainType"
+ },
+ {
+ "include": "#defaultValue"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#parameterTuple"
+ },
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "name": "default.variable.parameter.ballerina"
+ }
+ ]
+ }
+ ]
+ },
+ "if-statement": {
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\b\\s*(?!\\{))",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()?",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.conditional.ballerina"
+ },
+ "2": {
+ "name": "meta.brace.round.ballerina"
+ }
+ },
+ "end": "(\\))|(?=\\{)",
+ "endCaptures": {
+ "1": {
+ "name": "meta.brace.round.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#identifiers"
+ },
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "include": "#xml"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#stringTemplate"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#ternary-expression"
+ },
+ {
+ "include": "#expression-operators"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#paranthesised"
+ },
+ {
+ "include": "#regex"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\))(?=\\s|\\=)",
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ {
+ "include": "#decl-block"
+ }
+ ]
+ }
+ ]
+ },
+ "import-clause": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.default.ballerina"
+ },
+ "3": {
+ "name": "variable.other.readwrite.ballerina meta.import.module.ballerina"
+ },
+ "5": {
+ "name": "keyword.control.default.ballerina"
+ },
+ "6": {
+ "name": "variable.other.readwrite.alias.ballerina"
+ }
+ }
+ },
+ {
+ "name": "variable.other.readwrite.alias.ballerina",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ },
+ "maps": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "matchStatementPatternClause": {
+ "patterns": [
+ {
+ "begin": "=>",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ballerina"
+ }
+ },
+ "end": "((\\})|;|,)",
+ "patterns": [
+ {
+ "include": "#callableUnitBody"
+ },
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "matchStatement": {
+ "patterns": [
+ {
+ "begin": "\\bmatch\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.ballerina"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#matchStatementBody"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "matchStatementBody": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina.documentation"
+ }
+ },
+ "end": "(?=\\})",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina.documentation"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#matchBindingPattern"
+ },
+ {
+ "include": "#matchStatementPatternClause"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "matchBindingPattern": {
+ "patterns": [
+ {
+ "begin": "var",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.ballerina"
+ }
+ },
+ "end": "(?==>)|,",
+ "patterns": [
+ {
+ "include": "#errorDestructure"
+ },
+ {
+ "include": "#code"
+ },
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "name": "variable.parameter.ballerina"
+ }
+ ]
+ }
+ ]
+ },
+ "mdDocumentation": {
+ "name": "comment.mddocs.ballerina",
+ "begin": "\\#",
+ "end": "[\\r\\n]+",
+ "patterns": [
+ {
+ "include": "#mdDocumentationReturnParamDescription"
+ },
+ {
+ "include": "#mdDocumentationParamDescription"
+ }
+ ]
+ },
+ "mdDocumentationParamDescription": {
+ "patterns": [
+ {
+ "begin": "(\\+\\s+)(\\'?[_$[:alpha:]][_$[:alnum:]]*)(\\s*\\-\\s+)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.ballerina"
+ },
+ "2": {
+ "name": "variable.other.readwrite.ballerina"
+ },
+ "3": {
+ "name": "keyword.operator.ballerina"
+ }
+ },
+ "end": "(?=[^#\\r\\n]|(?:# *?\\+))",
+ "patterns": [
+ {
+ "match": "#.*",
+ "name": "comment.mddocs.paramdesc.ballerina"
+ }
+ ]
+ }
+ ]
+ },
+ "mdDocumentationReturnParamDescription": {
+ "patterns": [
+ {
+ "begin": "(#)(?: *?)(\\+)(?: *)(return)(?: *)(-)?(.*)",
+ "beginCaptures": {
+ "1": {
+ "name": "comment.mddocs.ballerina"
+ },
+ "2": {
+ "name": "keyword.ballerina"
+ },
+ "3": {
+ "name": "keyword.ballerina"
+ },
+ "4": {
+ "name": "keyword.ballerina"
+ },
+ "5": {
+ "name": "comment.mddocs.returnparamdesc.ballerina"
+ }
+ },
+ "end": "(?=[^#\\r\\n]|(?:# *?\\+))",
+ "patterns": [
+ {
+ "match": "#.*",
+ "name": "comment.mddocs.returnparamdesc.ballerina"
+ }
+ ]
+ }
+ ]
+ },
+ "multiType": {
+ "patterns": [
+ {
+ "match": "(?<=\\|)([_$[:alpha:]][_$[:alnum:]]*)|([_$[:alpha:]][_$[:alnum:]]*)(?=\\|)",
+ "name": "storage.type.ballerina"
+ },
+ {
+ "match": "\\|",
+ "name": "keyword.operator.ballerina"
+ }
+ ]
+ },
+ "numbers": {
+ "patterns": [
+ {
+ "match": "\\b0[xX][\\da-fA-F]+\\b|\\b\\d+(?:\\.(?:\\d+|$))?",
+ "name": "constant.numeric.decimal.ballerina"
+ }
+ ]
+ },
+ "class-body": {
+ "name": "meta.class.body.ballerina",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#mdDocumentation"
+ },
+ {
+ "include": "#function-defn"
+ },
+ {
+ "include": "#var-expr"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#access-modifier"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "begin": "(?<=:)\\s*",
+ "end": "(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\b))"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "access-modifier": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "name": "storage.modifier.ballerina keyword.other.ballerina"
+ }
+ ]
+ },
+ "class-defn": {
+ "name": "meta.class.ballerina",
+ "begin": "(\\s+)(class\\b)|^class\\b(?=\\s+|/[/*])",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.class.ballerina keyword.other.ballerina"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#keywords"
+ },
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "captures": {
+ "0": {
+ "name": "entity.name.type.class.ballerina"
+ }
+ }
+ },
+ {
+ "include": "#class-body"
+ }
+ ]
+ },
+ "objectDec": {
+ "patterns": [
+ {
+ "begin": "\\bobject\\b(?!:)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.ballerina"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#decl-block"
+ }
+ ]
+ }
+ ]
+ },
+ "objectInitBody": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "end": "(?=\\})",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "objectInitParameters": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.begin.ballerina"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#code"
+ },
+ {
+ "match": "\\b([_$[:alpha:]][_$[:alnum:]]*)\\b",
+ "name": "variable.parameter.ballerina"
+ }
+ ]
+ }
+ ]
+ },
+ "objectMemberFunctionDec": {
+ "patterns": [
+ {
+ "begin": "\\bfunction\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ballerina"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#functionParameters"
+ },
+ {
+ "match": "\\breturns\\b",
+ "name": "keyword.ballerina"
+ },
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "paranthesised": {
+ "name": "meta.brace.round.block.ballerina",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.ballerina"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#self-literal"
+ },
+ {
+ "include": "#function-defn"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#parameters"
+ },
+ {
+ "include": "#annotationAttachment"
+ },
+ {
+ "include": "#recordLiteral"
+ },
+ {
+ "include": "#stringTemplate"
+ },
+ {
+ "include": "#parameter-name"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#regex"
+ }
+ ]
+ },
+ "paranthesisedBracket": {
+ "patterns": [
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "parameters": {
+ "patterns": [
+ {
+ "name": "keyword.control.flow.ballerina",
+ "match": "\\s*(return|break|continue|check|checkpanic|panic|trap|from|where)\\b"
+ },
+ {
+ "name": "keyword.other.ballerina",
+ "match": "\\s*(let|select)\\b"
+ },
+ {
+ "name": "punctuation.separator.parameter.ballerina",
+ "match": "\\,"
+ }
+ ]
+ },
+ "record": {
+ "name": "meta.record.ballerina",
+ "begin": "\\brecord\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.ballerina"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#recordBody"
+ }
+ ]
+ },
+ "recordBody": {
+ "patterns": [
+ {
+ "include": "#decl-block"
+ }
+ ]
+ },
+ "recordLiteral": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "serviceBody": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#mdDocumentation"
+ },
+ {
+ "include": "#documentationDef"
+ },
+ {
+ "include": "#decl-block"
+ }
+ ]
+ },
+ "service-decl": {
+ "name": "meta.service.declaration.ballerina",
+ "begin": "\\bservice\\b",
+ "end": "(?=;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\b))|(?<=\\})|(?<=\\,)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#class-defn"
+ },
+ {
+ "include": "#serviceName"
+ },
+ {
+ "include": "#serviceOn"
+ },
+ {
+ "include": "#serviceBody"
+ },
+ {
+ "include": "#objectDec"
+ }
+ ]
+ },
+ "serviceName": {
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "name": "entity.service.path.ballerina",
+ "match": "(\\/([_$[:alpha:]][_$[:alnum:]]**)|\\\"[_$[:alpha:]][_$[:alnum:]]*\\\")"
+ }
+ ]
+ },
+ "serviceOn": {
+ "patterns": [
+ {
+ "begin": "on",
+ "end": "(?={)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "\\\"",
+ "end": "\\\"",
+ "beginCaptures": {
+ "0": {
+ "name": "string.begin.ballerina"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "string.end.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "name": "constant.character.escape.ballerina",
+ "match": "\\\\."
+ },
+ {
+ "name": "string",
+ "match": "."
+ }
+ ]
+ }
+ ]
+ },
+ "string-character-escape": {
+ "patterns": [
+ {
+ "name": "constant.character.escape.ballerina",
+ "match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
+ }
+ ]
+ },
+ "stringTemplate": {
+ "patterns": [
+ {
+ "name": "string.template.ballerina",
+ "begin": "((string)|([_$[:alpha:]][_$[:alnum:]]*))?(`)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.tagged-template.ballerina"
+ },
+ "2": {
+ "name": "support.type.primitive.ballerina"
+ },
+ "4": {
+ "name": "punctuation.definition.string.template.begin.ballerina"
+ }
+ },
+ "end": "\\\\?`",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.template.end.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template-substitution-element"
+ },
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ }
+ ]
+ },
+ "template-substitution-element": {
+ "patterns": [
+ {
+ "name": "meta.template.expression.ballerina",
+ "begin": "\\$\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.begin.ballerina"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.end.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ],
+ "contentName": "meta.embedded.line.ballerina"
+ }
+ ]
+ },
+ "typeDefinition": {
+ "patterns": [
+ {
+ "begin": "(\\btype\\b)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.ballerina"
+ },
+ "2": {
+ "name": "entity.name.type.ballerina"
+ }
+ },
+ "end": "\\;",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.statement.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#functionParameters"
+ },
+ {
+ "include": "#functionReturns"
+ },
+ {
+ "include": "#mdDocumentation"
+ },
+ {
+ "include": "#record"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#multiType"
+ },
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "name": "variable.other.readwrite.ballerina"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#typeDescription"
+ },
+ {
+ "include": "#decl-block"
+ }
+ ]
+ }
+ ]
+ },
+ "typeDescription": {
+ "patterns": [
+ {
+ "begin": "[_$[:alpha:]][_$[:alnum:]]*",
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "name": "storage.type.ballerina"
+ }
+ ]
+ }
+ ]
+ },
+ "var-expr": {
+ "patterns": [
+ {
+ "name": "meta.var.expr.ballerina",
+ "begin": "(?=\\b(var))",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.modifier.ballerina support.type.primitive.ballerina"
+ }
+ },
+ "end": "(?!\\b(var))((?=;|}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\b))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=(if)\\s+))|((?<!^string|[^\\._$[:alnum:]]string|^int|[^\\._$[:alnum:]]int)(?=\\s*$)))",
+ "patterns": [
+ {
+ "begin": "\\b(var)(?=\\s+|\\[|\\?|\\||\\:)",
+ "beginCaptures": {
+ "0": {
+ "name": "support.type.primitive.ballerina"
+ }
+ },
+ "end": "(?=\\S)"
+ },
+ {
+ "match": "\\|",
+ "name": "keyword.operator.type.annotation.ballerina"
+ },
+ {
+ "name": "keyword.other.ballerina",
+ "match": "\\bin\\b"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#stringTemplate"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#multiType"
+ },
+ {
+ "include": "#self-literal"
+ },
+ {
+ "include": "#var-single-variable"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#type-tuple"
+ },
+ {
+ "include": "#regex"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "name": "meta.var.expr.ballerina",
+ "begin": "(?=\\b(const(?!\\s+enum\\b)))",
+ "end": "(?!\\b(const(?!\\s+enum\\b)))((?=\\bannotation\\b|;|}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\b))|((?<!^string|[^\\._$[:alnum:]]string|^int|[^\\._$[:alnum:]]int)(?=\\s*$)))",
+ "patterns": [
+ {
+ "begin": "\\b(const(?!\\s+enum\\b))\\s+",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.ballerina"
+ }
+ },
+ "end": "(?=\\S)"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#stringTemplate"
+ },
+ {
+ "include": "#var-single-const"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#type-annotation"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "name": "meta.var.expr.ballerina",
+ "begin": "(string|int|boolean|float|byte|decimal|json|xml|anydata)(?=\\s+|\\[|\\?|\\||\\:)",
+ "beginCaptures": {
+ "0": {
+ "name": "support.type.primitive.ballerina"
+ }
+ },
+ "end": "(?!\\b(var))((?=;|}|;|^\\s*$|(?:^\\s*(?:abstract|async|class|const|declare|enum|export|function|import|interface|let|module|namespace|return|service|type|var)\\b))|((?<!^string|[^\\._$[:alnum:]]string|^int|[^\\._$[:alnum:]]int)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#xml"
+ },
+ {
+ "begin": "(string|int|boolean|float|byte|decimal|json|xml|anydata)(?=\\s+|\\[|\\?|\\||\\:)",
+ "beginCaptures": {
+ "0": {
+ "name": "support.type.primitive.ballerina"
+ }
+ },
+ "end": "(?=\\S)"
+ },
+ {
+ "match": "\\|",
+ "name": "keyword.operator.type.annotation.ballerina"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#stringTemplate"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#multiType"
+ },
+ {
+ "include": "#var-single-variable"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#type-tuple"
+ },
+ {
+ "include": "#regex"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "var-single-variable": {
+ "patterns": [
+ {
+ "name": "meta.var-single-variable.expr.ballerina",
+ "begin": "((string|int|boolean|float|byte|decimal|json|xml|anydata)|\\b(readonly|error|map)\\b|([_$[:alpha:]][_$[:alnum:]]*))(?=\\s+|\\;|\\>|\\|)",
+ "beginCaptures": {
+ "2": {
+ "name": "support.type.primitive.ballerina"
+ },
+ "3": {
+ "name": "storage.type.ballerina"
+ },
+ "4": {
+ "name": "meta.definition.variable.ballerina variable.other.readwrite.ballerina"
+ }
+ },
+ "end": "(?=$|^|[;,=}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.statement.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#call"
+ },
+ {
+ "include": "#self-literal"
+ },
+ {
+ "include": "#if-statement"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ {
+ "name": "meta.var-single-variable.expr.ballerina",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s+(\\!)?",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.ballerina variable.other.readwrite.ballerina"
+ },
+ "2": {
+ "name": "keyword.operator.definiteassignment.ballerina"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\s+))"
+ }
+ ]
+ },
+ "var-single-const": {
+ "patterns": [
+ {
+ "name": "meta.var-single-variable.expr.ballerina"
+ },
+ {
+ "begin": "\\b(var)\\s*",
+ "beginCaptures": {
+ "0": {
+ "name": "support.type.primitive.ballerina"
+ }
+ },
+ "end": "(?=\\S)"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.ballerina variable.other.constant.ballerina"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\s+))"
+ }
+ ]
+ },
+ "variable-initializer": {
+ "patterns": [
+ {
+ "begin": "(?<!=|!)(=)(?!=|>)(?=\\s*\\S)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.ballerina"
+ }
+ },
+ "end": "(?=$|[,);}\\]])",
+ "patterns": [
+ {
+ "match": "(\\')([_$[:alpha:]][_$[:alnum:]]*)",
+ "name": "variable.other.property.ballerina"
+ },
+ {
+ "include": "#xml"
+ },
+ {
+ "include": "#function-defn"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-accessor"
+ },
+ {
+ "include": "#regex"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!=|!)(=)(?!=|>)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.ballerina"
+ }
+ },
+ "end": "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\s+))|(?=^\\s*$)|(?<=\\S)(?<!=)(?=\\s*$)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "variableDef": {
+ "patterns": [
+ {
+ "begin": "(?:(?!\\+)[_$[:alpha:]][_$[:alnum:]]*)(?: |\\t)|(?=\\()",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.ballerina"
+ }
+ },
+ "end": "(?:[_$[:alpha:]][_$[:alnum:]]*)|(?=\\,)|(?=;)|\\.\\.\\.",
+ "patterns": [
+ {
+ "include": "#tupleType"
+ },
+ {
+ "include": "#constrainType"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "variableDefInline": {
+ "patterns": [
+ {
+ "begin": "(?=record)|(?=object)",
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#record"
+ },
+ {
+ "include": "#objectDec"
+ }
+ ]
+ }
+ ]
+ },
+ "workerDef": {
+ "patterns": [
+ {
+ "begin": "\\bworker\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.ballerina"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#functionReturns"
+ },
+ {
+ "include": "#workerBody"
+ }
+ ]
+ }
+ ]
+ },
+ "workerBody": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "parameter": {
+ "patterns": [
+ {
+ "begin": "((?=record|object|function)|([_$[:alpha:]][_$[:alnum:]]*)(?=\\|)|(?:[_$[:alpha:]][_$[:alnum:]]*))",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.ballerina"
+ }
+ },
+ "end": "(?:\\,)|(?:\\|)|(?:\\:)|(?==>)|(?=\\))|(?=\\])",
+ "patterns": [
+ {
+ "include": "#parameterWithDescriptor"
+ },
+ {
+ "include": "#record"
+ },
+ {
+ "include": "#objectDec"
+ },
+ {
+ "include": "#functionType"
+ },
+ {
+ "include": "#constrainType"
+ },
+ {
+ "include": "#defaultValue"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#parameterTuple"
+ },
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "name": "default.variable.parameter.ballerina"
+ }
+ ]
+ }
+ ]
+ },
+ "parameterTuple": {
+ "patterns": [
+ {
+ "begin": "\\[",
+ "end": "(?=\\,)|(?=\\|)|(?=\\:)|(?==>)|(?=\\))",
+ "patterns": [
+ {
+ "include": "#record"
+ },
+ {
+ "include": "#objectDec"
+ },
+ {
+ "include": "#parameterTupleType"
+ },
+ {
+ "include": "#parameterTupleEnd"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "parameterTupleType": {
+ "patterns": [
+ {
+ "begin": "[_$[:alpha:]][_$[:alnum:]]*",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.ballerina"
+ }
+ },
+ "end": "(?:\\,)|(?:\\|)|(?=\\])"
+ }
+ ]
+ },
+ "parameterTupleEnd": {
+ "patterns": [
+ {
+ "begin": "\\]",
+ "end": "(?=\\,)|(?=\\|)|(?=\\:)|(?==>)|(?=\\))",
+ "patterns": [
+ {
+ "include": "#defaultWithParentheses"
+ },
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "name": "default.variable.parameter.ballerina"
+ }
+ ]
+ }
+ ]
+ },
+ "parameterWithDescriptor": {
+ "patterns": [
+ {
+ "begin": "\\&",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.ballerina"
+ }
+ },
+ "end": "(?=\\,)|(?=\\|)|(?=\\))",
+ "patterns": [
+ {
+ "include": "#parameter"
+ }
+ ]
+ }
+ ]
+ },
+ "defaultWithParentheses": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ballerina"
+ }
+ }
+ }
+ ]
+ },
+ "string": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "name": "string.quoted.double.ballerina",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ballerina"
+ }
+ },
+ "end": "(\")|((?:[^\\\\\\n])$)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.ballerina"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ }
+ ]
+ },
+ "source": {
+ "patterns": [
+ {
+ "begin": "(\\bsource\\b)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.ballerina"
+ },
+ "2": {
+ "name": "variable.other.readwrite.ballerina"
+ }
+ },
+ "end": "(?=\\,)|(?=\\;)"
+ }
+ ]
+ },
+ "types": {
+ "patterns": [
+ {
+ "name": "storage.type.ballerina",
+ "match": "\\b(handle|any|future|typedesc)\\b"
+ },
+ {
+ "name": "support.type.primitive.ballerina",
+ "match": "\\b(boolean|int|string|float|decimal|byte|json|xml|anydata)\\b"
+ },
+ {
+ "name": "storage.type.ballerina",
+ "match": "\\b(map|error|never|readonly|distinct)\\b"
+ },
+ {
+ "name": "storage.type.ballerina",
+ "match": "\\b(stream)\\b"
+ }
+ ]
+ },
+ "xml": {
+ "patterns": [
+ {
+ "begin": "(\\bxml)(\\s*)(`)",
+ "name": "string.template.ballerina",
+ "beginCaptures": {
+ "1": {
+ "name": "support.type.primitive.ballerina"
+ },
+ "3": {
+ "name": "punctuation.definition.string.template.begin.ballerina"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.template.end.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#xmlTag"
+ },
+ {
+ "include": "#xmlComment"
+ },
+ {
+ "include": "#templateVariable"
+ },
+ {
+ "name": "string",
+ "match": "."
+ }
+ ]
+ }
+ ]
+ },
+ "xmlTag": {
+ "patterns": [
+ {
+ "begin": "(<\\/?\\??)\\s*([-_a-zA-Z0-9]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.xml.ballerina"
+ },
+ "2": {
+ "name": "entity.name.tag.xml.ballerina"
+ }
+ },
+ "end": "\\??\\/?>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.xml.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#xmlSingleQuotedString"
+ },
+ {
+ "include": "#xmlDoubleQuotedString"
+ },
+ {
+ "name": "keyword.other.ballerina",
+ "match": "xmlns"
+ },
+ {
+ "name": "entity.other.attribute-name.xml.ballerina",
+ "match": "([a-zA-Z0-9-]+)"
+ }
+ ]
+ }
+ ]
+ },
+ "xmlComment": {
+ "patterns": [
+ {
+ "begin": "<!--",
+ "beginCaptures": {
+ "0": {
+ "name": "comment.block.xml.ballerina"
+ }
+ },
+ "end": "-->",
+ "endCaptures": {
+ "0": {
+ "name": "comment.block.xml.ballerina"
+ }
+ },
+ "name": "comment.block.xml.ballerina"
+ }
+ ]
+ },
+ "xmlSingleQuotedString": {
+ "patterns": [
+ {
+ "begin": "\\'",
+ "end": "\\'",
+ "beginCaptures": {
+ "0": {
+ "name": "string.begin.ballerina"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "string.end.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "name": "constant.character.escape.ballerina",
+ "match": "\\\\."
+ },
+ {
+ "name": "string",
+ "match": "."
+ }
+ ]
+ }
+ ]
+ },
+ "xmlDoubleQuotedString": {
+ "patterns": [
+ {
+ "begin": "\\\"",
+ "end": "\\\"",
+ "beginCaptures": {
+ "0": {
+ "name": "string.begin.ballerina"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "string.end.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "name": "constant.character.escape.ballerina",
+ "match": "\\\\."
+ },
+ {
+ "name": "string",
+ "match": "."
+ }
+ ]
+ }
+ ]
+ },
+ "templateVariable": {
+ "patterns": [
+ {
+ "begin": "\\${",
+ "beginCaptures": {
+ "0": {
+ "name": "constant.character.escape.ballerina"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "constant.character.escape.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "ternary-expression": {
+ "begin": "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.ballerina"
+ }
+ },
+ "end": "\\s*",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "type": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "include": "#type-tuple"
+ }
+ ]
+ },
+ "type-annotation": {
+ "patterns": [
+ {
+ "name": "meta.type.annotation.ballerina",
+ "begin": "(\\:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.ballerina"
+ }
+ },
+ "end": "(?<![:|&])((?=$|^|[,);\\}\\]\\?\\>\\=>]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))(\\?)?",
+ "patterns": [
+ {
+ "include": "#booleans"
+ },
+ {
+ "include": "#stringTemplate"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#self-literal"
+ },
+ {
+ "include": "#xml"
+ },
+ {
+ "include": "#call"
+ },
+ {
+ "match": "\\b(is|new|isolated|null|function|in)\\b|\\b(true|false)\\b|\\b(check|foreach|if|checkpanic)\\b|\\b(readonly|error|map)\\b|\\b(var)\\b|([_$[:alpha:]][_$[:alnum:]]*)((\\.)([_$[:alpha:]][_$[:alnum:]]*)(\\()(\\)))?",
+ "captures": {
+ "1": {
+ "name": "keyword.other.ballerina"
+ },
+ "2": {
+ "name": "constant.language.boolean.ballerina"
+ },
+ "3": {
+ "name": "keyword.control.ballerina"
+ },
+ "4": {
+ "name": "storage.type.ballerina"
+ },
+ "5": {
+ "name": "support.type.primitive.ballerina"
+ },
+ "6": {
+ "name": "variable.other.readwrite.ballerina"
+ },
+ "8": {
+ "name": "punctuation.accessor.ballerina"
+ },
+ "9": {
+ "name": "entity.name.function.ballerina"
+ },
+ "10": {
+ "name": "punctuation.definition.parameters.begin.ballerina"
+ },
+ "11": {
+ "name": "punctuation.definition.parameters.end.ballerina"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.optional.ballerina",
+ "match": "\\?"
+ },
+ {
+ "include": "#multiType"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#paranthesised"
+ }
+ ]
+ }
+ ]
+ },
+ "type-tuple": {
+ "name": "meta.type.tuple.ballerina",
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.square.ballerina"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.square.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#self-literal"
+ },
+ {
+ "include": "#booleans"
+ },
+ {
+ "name": "keyword.operator.rest.ballerina",
+ "match": "\\.\\.\\."
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "entity.name.label.ballerina"
+ },
+ "2": {
+ "name": "keyword.operator.optional.ballerina"
+ },
+ "3": {
+ "name": "punctuation.separator.label.ballerina"
+ }
+ }
+ },
+ {
+ "include": "#identifiers"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "name": "keyword.control.ballerina",
+ "match": "\\b(fork|join|while|returns|transaction|transactional|retry|commit|rollback|typeof|enum|wait|match)\\b"
+ },
+ {
+ "name": "keyword.control.flow.ballerina",
+ "match": "\\b(return|break|continue|check|checkpanic|panic|trap|from|where)\\b"
+ },
+ {
+ "name": "keyword.other.ballerina",
+ "match": "\\b(public|private|external|return|record|object|remote|abstract|client|true|false|fail|import|version)\\b"
+ },
+ {
+ "name": "keyword.other.ballerina",
+ "match": "\\b(as|on|function|resource|listener|const|final|is|null|lock|annotation|source|worker|parameter|field|isolated|in)\\b"
+ },
+ {
+ "name": "keyword.other.ballerina",
+ "match": "\\b(xmlns|table|key|let|new|select|start|flush|default|do|base16|base64|conflict)\\b"
+ },
+ {
+ "name": "keyword.other.ballerina",
+ "match": "\\b(limit|outer|equals|order|by|ascending|descending|class|configurable|variable|module|service|group|collect)\\b"
+ },
+ {
+ "name": "meta.arrow.ballerina storage.type.function.arrow.ballerina",
+ "match": "(=>)"
+ },
+ {
+ "name": "keyword.operator.ballerina",
+ "match": "(!|%|\\+|\\-|~=|===|==|=|!=|!==|<|>|&|\\||\\?:|\\.\\.\\.|<=|>=|&&|\\|\\||~|>>|>>>)"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#self-literal"
+ },
+ {
+ "include": "#type-primitive"
+ }
+ ]
+ },
+ "literal": {
+ "patterns": [
+ {
+ "include": "#booleans"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#maps"
+ },
+ {
+ "include": "#self-literal"
+ },
+ {
+ "include": "#array-literal"
+ }
+ ]
+ },
+ "array-literal": {
+ "name": "meta.array.literal.ballerina",
+ "begin": "\\s*(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.square.ballerina"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.square.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "self-literal": {
+ "patterns": [
+ {
+ "match": "(\\bself\\b)\\s*(.)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=\\()",
+ "captures": {
+ "1": {
+ "name": "variable.language.this.ballerina"
+ },
+ "2": {
+ "name": "punctuation.accessor.ballerina"
+ },
+ "3": {
+ "name": "entity.name.function.ballerina"
+ }
+ }
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))self\\b(?!\\$)",
+ "name": "variable.language.this.ballerina"
+ }
+ ]
+ },
+ "code": {
+ "patterns": [
+ {
+ "include": "#booleans"
+ },
+ {
+ "include": "#matchStatement"
+ },
+ {
+ "include": "#butExp"
+ },
+ {
+ "include": "#xml"
+ },
+ {
+ "include": "#stringTemplate"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#mdDocumentation"
+ },
+ {
+ "include": "#annotationAttachment"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#maps"
+ },
+ {
+ "include": "#paranthesised"
+ },
+ {
+ "include": "#paranthesisedBracket"
+ },
+ {
+ "include": "#regex"
+ }
+ ]
+ },
+ "type-primitive": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|int|boolean|float|byte|decimal|json|xml|anydata)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "name": "support.type.primitive.ballerina"
+ }
+ ]
+ },
+ "regex": {
+ "patterns": [
+ {
+ "begin": "(\\bre)(\\s*)(`)",
+ "name": "regexp.template.ballerina",
+ "beginCaptures": {
+ "1": {
+ "name": "support.type.primitive.ballerina"
+ },
+ "3": {
+ "name": "punctuation.definition.regexp.template.begin.ballerina"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.regexp.template.end.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template-substitution-element"
+ },
+ {
+ "include": "#regexp"
+ }
+ ]
+ }
+ ]
+ },
+ "regexp": {
+ "patterns": [
+ {
+ "name": "keyword.control.assertion.regexp.ballerina",
+ "match": "\\^|\\$"
+ },
+ {
+ "name": "keyword.operator.quantifier.regexp.ballerina",
+ "match": "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
+ },
+ {
+ "name": "keyword.operator.or.regexp.ballerina",
+ "match": "\\|"
+ },
+ {
+ "name": "meta.group.assertion.regexp.ballerina",
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.regexp.ballerina"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.regexp.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template-substitution-element"
+ },
+ {
+ "include": "#regexp"
+ },
+ {
+ "include": "#flags-on-off"
+ },
+ {
+ "include": "#unicode-property-escape"
+ }
+ ]
+ },
+ {
+ "name": "constant.other.character-class.set.regexp.ballerina",
+ "begin": "(\\[)(\\^)?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.start.regexp.ballerina"
+ },
+ "2": {
+ "name": "keyword.operator.negation.regexp.ballerina"
+ }
+ },
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.end.regexp.ballerina"
+ }
+ },
+ "patterns": [
+ {
+ "name": "constant.other.character-class.range.regexp.ballerina",
+ "match": "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\[^pPu]))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\[^pPu]))",
+ "captures": {
+ "1": {
+ "name": "constant.character.numeric.regexp"
+ },
+ "2": {
+ "name": "constant.character.escape.backslash.regexp"
+ },
+ "3": {
+ "name": "constant.character.numeric.regexp"
+ },
+ "4": {
+ "name": "constant.character.escape.backslash.regexp"
+ }
+ }
+ },
+ {
+ "include": "#regex-character-class"
+ },
+ {
+ "include": "#unicode-values"
+ },
+ {
+ "include": "#unicode-property-escape"
+ }
+ ]
+ },
+ {
+ "include": "#template-substitution-element"
+ },
+ {
+ "include": "#regex-character-class"
+ },
+ {
+ "include": "#unicode-values"
+ },
+ {
+ "include": "#unicode-property-escape"
+ }
+ ]
+ },
+ "regex-character-class": {
+ "patterns": [
+ {
+ "name": "keyword.other.character-class.regexp.ballerina",
+ "match": "\\\\[wWsSdDtrn]|\\."
+ },
+ {
+ "name": "constant.character.escape.backslash.regexp",
+ "match": "\\\\[^pPu]"
+ }
+ ]
+ },
+ "unicode-property-escape": {
+ "patterns": [
+ {
+ "name": "keyword.other.unicode-property.regexp.ballerina",
+ "begin": "(\\\\p|\\\\P)(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.unicode-property.regexp.ballerina"
+ },
+ "2": {
+ "name": "punctuation.other.unicode-property.begin.regexp.ballerina"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.other.unicode-property.end.regexp.ballerina"
+ },
+ "patterns": [
+ {
+ "include": "#regex-unicode-properties-general-category"
+ },
+ {
+ "include": "#regex-unicode-property-key"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "regex-unicode-property-key": {
+ "patterns": [
+ {
+ "name": "keyword.other.unicode-property-key.regexp.ballerina",
+ "begin": "(sc=|gc=)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.unicode-property-key.regexp.ballerina"
+ }
+ },
+ "end": "()",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.other.unicode-property.end.regexp.ballerina"
+ },
+ "patterns": [
+ {
+ "include": "#regex-unicode-properties-general-category"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "regex-unicode-properties-general-category": {
+ "patterns": [
+ {
+ "match": "(Lu|Ll|Lt|Lm|Lo|L|Mn|Mc|Me|M|Nd|Nl|No|N|Pc|Pd|Ps|Pe|Pi|Pf|Po|P|Sm|Sc|Sk|So|S|Zs|Zl|Zp|Z|Cf|Cc|Cn|Co|C)",
+ "name": "constant.other.unicode-property-general-category.regexp.ballerina"
+ }
+ ]
+ },
+ "unicode-values": {
+ "patterns": [
+ {
+ "name": "keyword.other.unicode-value.ballerina",
+ "begin": "(\\\\u)(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.unicode-value.regexp.ballerina"
+ },
+ "2": {
+ "name": "punctuation.other.unicode-value.begin.regexp.ballerina"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.other.unicode-value.end.regexp.ballerina"
+ },
+ "patterns": [
+ {
+ "match": "([0-9A-Fa-f]{1,6})",
+ "name": "constant.other.unicode-value.regexp.ballerina"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "flags-on-off": {
+ "name": "meta.flags.regexp.ballerina",
+ "patterns": [
+ {
+ "begin": "(\\??)([imsx]*)(-?)([imsx]*)(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.other.non-capturing-group-begin.regexp.ballerina"
+ },
+ "2": {
+ "name": "keyword.other.non-capturing-group.flags-on.regexp.ballerina"
+ },
+ "3": {
+ "name": "punctuation.other.non-capturing-group.off.regexp.ballerina"
+ },
+ "4": {
+ "name": "keyword.other.non-capturing-group.flags-off.regexp.ballerina"
+ },
+ "5": {
+ "name": "punctuation.other.non-capturing-group-end.regexp.ballerina"
+ }
+ },
+ "end": "()",
+ "name": "constant.other.flag.regexp.ballerina",
+ "patterns": [
+ {
+ "include": "#regexp"
+ },
+ {
+ "include": "#template-substitution-element"
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/bat.tmLanguage.json b/node_modules/shiki/languages/bat.tmLanguage.json
new file mode 100644
index 0000000..7e32d02
--- /dev/null
+++ b/node_modules/shiki/languages/bat.tmLanguage.json
@@ -0,0 +1,788 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/mmims/language-batchfile/blob/master/grammars/batchfile.cson",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/mmims/language-batchfile/commit/6154ae25a24e01ac9329e7bcf958e093cd8733a9",
+ "name": "bat",
+ "scopeName": "source.batchfile",
+ "injections": {
+ "L:meta.block.repeat.batchfile": {
+ "patterns": [
+ {
+ "include": "#repeatParameter"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#commands"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#controls"
+ },
+ {
+ "include": "#escaped_characters"
+ },
+ {
+ "include": "#labels"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#variables"
+ }
+ ],
+ "repository": {
+ "commands": {
+ "patterns": [
+ {
+ "match": "(?<=^|[\\s@])(?i:adprep|append|arp|assoc|at|atmadm|attrib|auditpol|autochk|autoconv|autofmt|bcdboot|bcdedit|bdehdcfg|bitsadmin|bootcfg|brea|cacls|cd|certreq|certutil|change|chcp|chdir|chglogon|chgport|chgusr|chkdsk|chkntfs|choice|cipher|clip|cls|clscluadmin|cluster|cmd|cmdkey|cmstp|color|comp|compact|convert|copy|cprofile|cscript|csvde|date|dcdiag|dcgpofix|dcpromo|defra|del|dfscmd|dfsdiag|dfsrmig|diantz|dir|dirquota|diskcomp|diskcopy|diskpart|diskperf|diskraid|diskshadow|dispdiag|doin|dnscmd|doskey|driverquery|dsacls|dsadd|dsamain|dsdbutil|dsget|dsmgmt|dsmod|dsmove|dsquery|dsrm|edit|endlocal|eraseesentutl|eventcreate|eventquery|eventtriggers|evntcmd|expand|extract|fc|filescrn|find|findstr|finger|flattemp|fonde|forfiles|format|freedisk|fsutil|ftp|ftype|fveupdate|getmac|gettype|gpfixup|gpresult|gpupdate|graftabl|hashgen|hep|helpctr|hostname|icacls|iisreset|inuse|ipconfig|ipxroute|irftp|ismserv|jetpack|klist|ksetup|ktmutil|ktpass|label|ldifd|ldp|lodctr|logman|logoff|lpq|lpr|macfile|makecab|manage-bde|mapadmin|md|mkdir|mklink|mmc|mode|more|mount|mountvol|move|mqbup|mqsvc|mqtgsvc|msdt|msg|msiexec|msinfo32|mstsc|nbtstat|net computer|net group|net localgroup|net print|net session|net share|net start|net stop|net use|net user|net view|net|netcfg|netdiag|netdom|netsh|netstat|nfsadmin|nfsshare|nfsstat|nlb|nlbmgr|nltest|nslookup|ntackup|ntcmdprompt|ntdsutil|ntfrsutl|openfiles|pagefileconfig|path|pathping|pause|pbadmin|pentnt|perfmon|ping|pnpunatten|pnputil|popd|powercfg|powershell|powershell_ise|print|prncnfg|prndrvr|prnjobs|prnmngr|prnport|prnqctl|prompt|pubprn|pushd|pushprinterconnections|pwlauncher|qappsrv|qprocess|query|quser|qwinsta|rasdial|rcp|rd|rdpsign|regentc|recover|redircmp|redirusr|reg|regini|regsvr32|relog|ren|rename|rendom|repadmin|repair-bde|replace|reset session|rxec|risetup|rmdir|robocopy|route|rpcinfo|rpcping|rsh|runas|rundll32|rwinsta|sc|schtasks|scp|scwcmd|secedit|serverceipoptin|servrmanagercmd|serverweroptin|setspn|setx|sfc|sftp|shadow|shift|showmount|shutdown|sort|ssh|ssh-add|ssh-agent|ssh-keygen|ssh-keyscan|start|storrept|subst|sxstrace|ysocmgr|systeminfo|takeown|tapicfg|taskkill|tasklist|tcmsetup|telnet|tftp|time|timeout|title|tlntadmn|tpmvscmgr|tpmvscmgr|tacerpt|tracert|tree|tscon|tsdiscon|tsecimp|tskill|tsprof|type|typeperf|tzutil|uddiconfig|umount|unlodctr|ver|verifier|verif|vol|vssadmin|w32tm|waitfor|wbadmin|wdsutil|wecutil|wevtutil|where|whoami|winnt|winnt32|winpop|winrm|winrs|winsat|wlbs|wmic|wscript|wsl|xcopy)(?=$|\\s)",
+ "name": "keyword.command.batchfile"
+ },
+ {
+ "begin": "(?i)(?<=^|[\\s@])(echo)(?:(?=$|\\.|:)|\\s+(?:(on|off)(?=\\s*$))?)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.command.batchfile"
+ },
+ "2": {
+ "name": "keyword.other.special-method.batchfile"
+ }
+ },
+ "end": "(?=$\\n|[&|><)])",
+ "patterns": [
+ {
+ "include": "#escaped_characters"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#strings"
+ }
+ ]
+ },
+ {
+ "match": "(?i)(?<=^|[\\s@])(setlocal)(?:\\s*$|\\s+(EnableExtensions|DisableExtensions|EnableDelayedExpansion|DisableDelayedExpansion)(?=\\s*$))",
+ "captures": {
+ "1": {
+ "name": "keyword.command.batchfile"
+ },
+ "2": {
+ "name": "keyword.other.special-method.batchfile"
+ }
+ }
+ },
+ {
+ "include": "#command_set"
+ }
+ ]
+ },
+ "command_set": {
+ "patterns": [
+ {
+ "begin": "(?<=^|[\\s@])(?i:SET)(?=$|\\s)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.command.batchfile"
+ }
+ },
+ "end": "(?=$\\n|[&|><)])",
+ "patterns": [
+ {
+ "include": "#command_set_inside"
+ }
+ ]
+ }
+ ]
+ },
+ "command_set_inside": {
+ "patterns": [
+ {
+ "include": "#escaped_characters"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#command_set_strings"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "begin": "([^ ][^=]*)(=)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.readwrite.batchfile"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.batchfile"
+ }
+ },
+ "end": "(?=$\\n|[&|><)])",
+ "patterns": [
+ {
+ "include": "#escaped_characters"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#strings"
+ }
+ ]
+ },
+ {
+ "begin": "\\s+/[aA]\\s+",
+ "end": "(?=$\\n|[&|><)])",
+ "name": "meta.expression.set.batchfile",
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.batchfile"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.batchfile"
+ }
+ },
+ "name": "string.quoted.double.batchfile",
+ "patterns": [
+ {
+ "include": "#command_set_inside_arithmetic"
+ },
+ {
+ "include": "#command_set_group"
+ },
+ {
+ "include": "#variables"
+ }
+ ]
+ },
+ {
+ "include": "#command_set_inside_arithmetic"
+ },
+ {
+ "include": "#command_set_group"
+ }
+ ]
+ },
+ {
+ "begin": "\\s+/[pP]\\s+",
+ "end": "(?=$\\n|[&|><)])",
+ "patterns": [
+ {
+ "include": "#command_set_strings"
+ },
+ {
+ "begin": "([^ ][^=]*)(=)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.readwrite.batchfile"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.batchfile"
+ }
+ },
+ "end": "(?=$\\n|[&|><)])",
+ "name": "meta.prompt.set.batchfile",
+ "patterns": [
+ {
+ "include": "#strings"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "command_set_group": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.group.begin.batchfile"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.group.end.batchfile"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#command_set_inside_arithmetic"
+ }
+ ]
+ }
+ ]
+ },
+ "command_set_inside_arithmetic": {
+ "patterns": [
+ {
+ "include": "#command_set_operators"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.batchfile"
+ }
+ ]
+ },
+ "command_set_operators": {
+ "patterns": [
+ {
+ "match": "([^ ]*)(\\+\\=|\\-\\=|\\*\\=|\\/\\=|%%\\=|&\\=|\\|\\=|\\^\\=|<<\\=|>>\\=)",
+ "captures": {
+ "1": {
+ "name": "variable.other.readwrite.batchfile"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.augmented.batchfile"
+ }
+ }
+ },
+ {
+ "match": "\\+|\\-|/|\\*|%%|\\||&|\\^|<<|>>|~",
+ "name": "keyword.operator.arithmetic.batchfile"
+ },
+ {
+ "match": "!",
+ "name": "keyword.operator.logical.batchfile"
+ },
+ {
+ "match": "([^ =]*)(=)",
+ "captures": {
+ "1": {
+ "name": "variable.other.readwrite.batchfile"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.batchfile"
+ }
+ }
+ }
+ ]
+ },
+ "command_set_strings": {
+ "patterns": [
+ {
+ "begin": "(\")\\s*([^ ][^=]*)(=)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.batchfile"
+ },
+ "2": {
+ "name": "variable.other.readwrite.batchfile"
+ },
+ "3": {
+ "name": "keyword.operator.assignment.batchfile"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.batchfile"
+ }
+ },
+ "name": "string.quoted.double.batchfile",
+ "patterns": [
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#escaped_characters"
+ }
+ ]
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "(?:^|(&))\\s*(?=((?::[+=,;: ])))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.conditional.batchfile"
+ }
+ },
+ "end": "\\n",
+ "patterns": [
+ {
+ "begin": "((?::[+=,;: ]))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.batchfile"
+ }
+ },
+ "end": "(?=\\n)",
+ "name": "comment.line.colon.batchfile"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=^|[\\s@])(?i)(REM)(\\.)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.command.rem.batchfile"
+ },
+ "2": {
+ "name": "punctuation.separator.batchfile"
+ }
+ },
+ "end": "(?=$\\n|[&|><)])",
+ "name": "comment.line.rem.batchfile"
+ },
+ {
+ "begin": "(?<=^|[\\s@])(?i:rem)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.command.rem.batchfile"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.rem.batchfile",
+ "patterns": [
+ {
+ "match": "[><|]",
+ "name": "invalid.illegal.unexpected-character.batchfile"
+ }
+ ]
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "match": "\\b(?i:NUL)\\b",
+ "name": "constant.language.batchfile"
+ }
+ ]
+ },
+ "controls": {
+ "patterns": [
+ {
+ "match": "(?i)(?<=^|\\s)(?:call|exit(?=$|\\s)|goto(?=$|\\s|:))",
+ "name": "keyword.control.statement.batchfile"
+ },
+ {
+ "match": "(?<=^|\\s)(?i)(if)\\s+(?:(not)\\s+)?(exist|defined|errorlevel|cmdextversion)(?=\\s)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.conditional.batchfile"
+ },
+ "2": {
+ "name": "keyword.operator.logical.batchfile"
+ },
+ "3": {
+ "name": "keyword.other.special-method.batchfile"
+ }
+ }
+ },
+ {
+ "match": "(?<=^|\\s)(?i)(?:if|else)(?=$|\\s)",
+ "name": "keyword.control.conditional.batchfile"
+ },
+ {
+ "begin": "(?<=^|[\\s(&^])(?i)for(?=\\s)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.repeat.batchfile"
+ }
+ },
+ "name": "meta.block.repeat.batchfile",
+ "end": "\\n",
+ "patterns": [
+ {
+ "begin": "(?<=[\\s^])(?i)in(?=\\s)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.repeat.in.batchfile"
+ }
+ },
+ "end": "(?<=[\\s)^])(?i)do(?=\\s)|\\n",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.repeat.do.batchfile"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "escaped_characters": {
+ "patterns": [
+ {
+ "match": "%%|\\^\\^!|\\^(?=.)|\\^\\n",
+ "name": "constant.character.escape.batchfile"
+ }
+ ]
+ },
+ "labels": {
+ "patterns": [
+ {
+ "match": "(?i)(?:^\\s*|(?<=call|goto)\\s*)(:)([^+=,;:\\s]\\S*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.batchfile"
+ },
+ "2": {
+ "name": "keyword.other.special-method.batchfile"
+ }
+ }
+ }
+ ]
+ },
+ "numbers": {
+ "patterns": [
+ {
+ "match": "(?<=^|\\s|=)(0[xX][0-9A-Fa-f]*|[+-]?\\d+)(?=$|\\s|<|>)",
+ "name": "constant.numeric.batchfile"
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "match": "@(?=\\S)",
+ "name": "keyword.operator.at.batchfile"
+ },
+ {
+ "match": "(?<=\\s)(?i:EQU|NEQ|LSS|LEQ|GTR|GEQ)(?=\\s)|==",
+ "name": "keyword.operator.comparison.batchfile"
+ },
+ {
+ "match": "(?<=\\s)(?i)(NOT)(?=\\s)",
+ "name": "keyword.operator.logical.batchfile"
+ },
+ {
+ "match": "(?<!\\^)&&?|\\|\\|",
+ "name": "keyword.operator.conditional.batchfile"
+ },
+ {
+ "match": "(?<!\\^)\\|",
+ "name": "keyword.operator.pipe.batchfile"
+ },
+ {
+ "match": "<&?|>[&>]?",
+ "name": "keyword.operator.redirection.batchfile"
+ }
+ ]
+ },
+ "parens": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.group.begin.batchfile"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.group.end.batchfile"
+ }
+ },
+ "name": "meta.group.batchfile",
+ "patterns": [
+ {
+ "match": ",|;",
+ "name": "punctuation.separator.batchfile"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "repeatParameter": {
+ "patterns": [
+ {
+ "match": "(%%)(?:(?i:~[fdpnxsatz]*(?:\\$PATH:)?)?[a-zA-Z])",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.batchfile"
+ }
+ },
+ "name": "variable.parameter.repeat.batchfile"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.batchfile"
+ }
+ },
+ "end": "(\")|(\\n)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.batchfile"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.batchfile"
+ }
+ },
+ "name": "string.quoted.double.batchfile",
+ "patterns": [
+ {
+ "match": "%%",
+ "name": "constant.character.escape.batchfile"
+ },
+ {
+ "include": "#variables"
+ }
+ ]
+ }
+ ]
+ },
+ "variables": {
+ "patterns": [
+ {
+ "match": "(%)(?:(?i:~[fdpnxsatz]*(?:\\$PATH:)?)?\\d|\\*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.batchfile"
+ }
+ },
+ "name": "variable.parameter.batchfile"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#variable_delayed_expansion"
+ }
+ ]
+ },
+ "variable": {
+ "patterns": [
+ {
+ "begin": "%(?=[^%]+%)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.variable.begin.batchfile"
+ }
+ },
+ "end": "(%)|\\n",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.variable.end.batchfile"
+ }
+ },
+ "name": "variable.other.readwrite.batchfile",
+ "patterns": [
+ {
+ "begin": ":~",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.batchfile"
+ }
+ },
+ "end": "(?=%|\\n)",
+ "name": "meta.variable.substring.batchfile",
+ "patterns": [
+ {
+ "include": "#variable_substring"
+ }
+ ]
+ },
+ {
+ "begin": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.batchfile"
+ }
+ },
+ "end": "(?=%|\\n)",
+ "name": "meta.variable.substitution.batchfile",
+ "patterns": [
+ {
+ "include": "#variable_replace"
+ },
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.batchfile"
+ }
+ },
+ "end": "(?=%|\\n)",
+ "patterns": [
+ {
+ "include": "#variable_delayed_expansion"
+ },
+ {
+ "match": "[^%]+",
+ "name": "string.unquoted.batchfile"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "variable_delayed_expansion": {
+ "patterns": [
+ {
+ "begin": "!(?=[^!]+!)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.variable.begin.batchfile"
+ }
+ },
+ "end": "(!)|\\n",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.variable.end.batchfile"
+ }
+ },
+ "name": "variable.other.readwrite.batchfile",
+ "patterns": [
+ {
+ "begin": ":~",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.batchfile"
+ }
+ },
+ "end": "(?=!|\\n)",
+ "name": "meta.variable.substring.batchfile",
+ "patterns": [
+ {
+ "include": "#variable_substring"
+ }
+ ]
+ },
+ {
+ "begin": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.batchfile"
+ }
+ },
+ "end": "(?=!|\\n)",
+ "name": "meta.variable.substitution.batchfile",
+ "patterns": [
+ {
+ "include": "#escaped_characters"
+ },
+ {
+ "include": "#variable_replace"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.batchfile"
+ }
+ },
+ "end": "(?=!|\\n)",
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "match": "[^!]+",
+ "name": "string.unquoted.batchfile"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "variable_replace": {
+ "patterns": [
+ {
+ "match": "[^=%!\\n]+",
+ "name": "string.unquoted.batchfile"
+ }
+ ]
+ },
+ "variable_substring": {
+ "patterns": [
+ {
+ "match": "([+-]?\\d+)(?:(,)([+-]?\\d+))?",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.batchfile"
+ },
+ "2": {
+ "name": "punctuation.separator.batchfile"
+ },
+ "3": {
+ "name": "constant.numeric.batchfile"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/beancount.tmLanguage.json b/node_modules/shiki/languages/beancount.tmLanguage.json
new file mode 100644
index 0000000..fd8ea38
--- /dev/null
+++ b/node_modules/shiki/languages/beancount.tmLanguage.json
@@ -0,0 +1,829 @@
+{
+ "fileTypes": ["beancount"],
+ "name": "beancount",
+ "patterns": [
+ {
+ "comment": "Comments",
+ "match": ";.*",
+ "name": "comment.line.beancount"
+ },
+ {
+ "begin": "^\\s*(poptag|pushtag)\\s+(#)([A-Za-z0-9\\-_/.]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.beancount"
+ },
+ "2": {
+ "name": "keyword.operator.tag.beancount"
+ },
+ "3": {
+ "name": "entity.name.tag.beancount"
+ }
+ },
+ "comment": "Tag directive",
+ "end": "(?=(^\\s*$|^\\S))",
+ "name": "meta.directive.tag.beancount",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(include)\\s+(\\\".*\\\")",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.beancount"
+ },
+ "2": {
+ "name": "string.quoted.double.beancount"
+ }
+ },
+ "comment": "Include directive",
+ "end": "(?=(^\\s*$|^\\S))",
+ "name": "meta.directive.include.beancount",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(option)\\s+(\\\".*\\\")\\s+(\\\".*\\\")",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.beancount"
+ },
+ "2": {
+ "name": "support.variable.beancount"
+ },
+ "3": {
+ "name": "string.quoted.double.beancount"
+ }
+ },
+ "comment": "Option directive",
+ "end": "(?=(^\\s*$|^\\S))",
+ "name": "meta.directive.option.beancount",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(plugin)\\s*(\"(.*?)\")\\s*(\".*?\")?",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.beancount"
+ },
+ "2": {
+ "name": "string.quoted.double.beancount"
+ },
+ "3": {
+ "name": "entity.name.function.beancount"
+ },
+ "4": {
+ "name": "string.quoted.double.beancount"
+ }
+ },
+ "comment": "Plugin directive",
+ "end": "(?=(^\\s*$|^\\S))",
+ "name": "keyword.operator.directive.beancount",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ {
+ "begin": "([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s+(open|close|pad)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.numeric.date.year.beancount"
+ },
+ "2": {
+ "name": "punctuation.separator.beancount"
+ },
+ "3": {
+ "name": "constant.numeric.date.month.beancount"
+ },
+ "4": {
+ "name": "punctuation.separator.beancount"
+ },
+ "5": {
+ "name": "constant.numeric.date.day.beancount"
+ },
+ "6": {
+ "name": "support.function.beancount"
+ }
+ },
+ "comment": "Open/Close/Pad directive",
+ "end": "(?=(^\\s*$|^\\S))",
+ "name": "meta.directive.dated.beancount",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#meta"
+ },
+ {
+ "include": "#account"
+ },
+ {
+ "include": "#commodity"
+ },
+ {
+ "match": "\\,",
+ "name": "punctuation.separator.beancount"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ {
+ "begin": "([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s+(custom)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.numeric.date.year.beancount"
+ },
+ "2": {
+ "name": "punctuation.separator.beancount"
+ },
+ "3": {
+ "name": "constant.numeric.date.month.beancount"
+ },
+ "4": {
+ "name": "punctuation.separator.beancount"
+ },
+ "5": {
+ "name": "constant.numeric.date.day.beancount"
+ },
+ "6": {
+ "name": "support.function.beancount"
+ }
+ },
+ "comment": "Custom directive",
+ "end": "(?=(^\\s*$|^\\S))",
+ "name": "meta.directive.dated.beancount",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#meta"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#bool"
+ },
+ {
+ "include": "#amount"
+ },
+ {
+ "include": "#number"
+ },
+ {
+ "include": "#date"
+ },
+ {
+ "include": "#account"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ {
+ "begin": "([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s(event)",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.numeric.date.year.beancount"
+ },
+ "2": {
+ "name": "punctuation.separator.beancount"
+ },
+ "3": {
+ "name": "constant.numeric.date.month.beancount"
+ },
+ "4": {
+ "name": "punctuation.separator.beancount"
+ },
+ "5": {
+ "name": "constant.numeric.date.day.beancount"
+ },
+ "6": {
+ "name": "support.function.directive.beancount"
+ }
+ },
+ "comment": "Event directive",
+ "end": "(?=(^\\s*$|^\\S))",
+ "name": "meta.directive.dated.beancount",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#meta"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ {
+ "begin": "([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s(commodity)",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.numeric.date.year.beancount"
+ },
+ "2": {
+ "name": "punctuation.separator.beancount"
+ },
+ "3": {
+ "name": "constant.numeric.date.month.beancount"
+ },
+ "4": {
+ "name": "punctuation.separator.beancount"
+ },
+ "5": {
+ "name": "constant.numeric.date.day.beancount"
+ },
+ "6": {
+ "name": "support.function.directive.beancount"
+ }
+ },
+ "comment": "Commodity directive",
+ "end": "(?=(^\\s*$|^\\S))",
+ "name": "meta.directive.dated.beancount",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#meta"
+ },
+ {
+ "include": "#commodity"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ {
+ "name": "meta.directive.notetotext.beancount",
+ "comment": "Note as Oneliner Transaction directive",
+ "begin": "([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s+(note)(?=(.*\\*\\\"\\s))",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.numeric.date.year.beancount"
+ },
+ "2": {
+ "name": "punctuation.separator.beancount"
+ },
+ "3": {
+ "name": "constant.numeric.date.month.beancount"
+ },
+ "4": {
+ "name": "punctuation.separator.beancount"
+ },
+ "5": {
+ "name": "constant.numeric.date.day.beancount"
+ },
+ "6": {
+ "name": "support.function.directive.beancount"
+ }
+ },
+ "end": "(?=(^\\s*$|^\\S))",
+ "patterns": [
+ {
+ "include": "#meta"
+ },
+ {
+ "include": "#account"
+ },
+ {
+ "name": "punctuation.separator.beancount",
+ "match": "(?<=\\s)\\\""
+ },
+ {
+ "include": "#cost"
+ },
+ {
+ "include": "#amount"
+ },
+ {
+ "begin": "(\\*|\\!)",
+ "beginCaptures": {
+ "0": {
+ "name": "support.function.directive.beancount"
+ }
+ },
+ "end": "(\\*\\\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.separator.beancount"
+ }
+ },
+ "patterns": [
+ {
+ "name": "constant.character.escape.beancount",
+ "match": "\\\\."
+ },
+ {
+ "include": "#tag"
+ },
+ {
+ "name": "string.quoted.double.beancount",
+ "match": "([^\\\"])"
+ }
+ ]
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ {
+ "begin": "([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s(note|document)",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.numeric.date.year.beancount"
+ },
+ "2": {
+ "name": "punctuation.separator.beancount"
+ },
+ "3": {
+ "name": "constant.numeric.date.month.beancount"
+ },
+ "4": {
+ "name": "punctuation.separator.beancount"
+ },
+ "5": {
+ "name": "constant.numeric.date.day.beancount"
+ },
+ "6": {
+ "name": "support.function.directive.beancount"
+ }
+ },
+ "comment": "Note/Document directive",
+ "end": "(?=(^\\s*$|^\\S))",
+ "name": "meta.directive.dated.beancount",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#meta"
+ },
+ {
+ "include": "#account"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ {
+ "begin": "([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s(price)",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.numeric.date.year.beancount"
+ },
+ "2": {
+ "name": "punctuation.separator.beancount"
+ },
+ "3": {
+ "name": "constant.numeric.date.month.beancount"
+ },
+ "4": {
+ "name": "punctuation.separator.beancount"
+ },
+ "5": {
+ "name": "constant.numeric.date.day.beancount"
+ },
+ "6": {
+ "name": "support.function.directive.beancount"
+ }
+ },
+ "comment": "Price directives",
+ "end": "(?=(^\\s*$|^\\S))",
+ "name": "meta.directive.dated.beancount",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#meta"
+ },
+ {
+ "include": "#commodity"
+ },
+ {
+ "include": "#amount"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ {
+ "begin": "([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s(balance)",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.numeric.date.year.beancount"
+ },
+ "2": {
+ "name": "punctuation.separator.beancount"
+ },
+ "3": {
+ "name": "constant.numeric.date.month.beancount"
+ },
+ "4": {
+ "name": "punctuation.separator.beancount"
+ },
+ "5": {
+ "name": "constant.numeric.date.day.beancount"
+ },
+ "6": {
+ "name": "support.function.directive.beancount"
+ }
+ },
+ "comment": "Balance directives",
+ "end": "(?=(^\\s*$|^\\S))",
+ "name": "meta.directive.dated.beancount",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#meta"
+ },
+ {
+ "include": "#account"
+ },
+ {
+ "include": "#amount"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ {
+ "begin": "([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})\\s*(txn|[*!&#?%PSTCURM])\\s*(\".*?\")?\\s*(\".*?\")?",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.numeric.date.year.beancount"
+ },
+ "2": {
+ "name": "punctuation.separator.beancount"
+ },
+ "3": {
+ "name": "constant.numeric.date.month.beancount"
+ },
+ "4": {
+ "name": "punctuation.separator.beancount"
+ },
+ "5": {
+ "name": "constant.numeric.date.day.beancount"
+ },
+ "6": {
+ "name": "support.function.directive.beancount"
+ },
+ "7": {
+ "name": "string.quoted.tiers.beancount"
+ },
+ "8": {
+ "name": "string.quoted.narration.beancount"
+ }
+ },
+ "comment": "Transaction directive",
+ "end": "(?=(^\\s*$|^\\S))",
+ "name": "meta.directive.transaction.beancount",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#posting"
+ },
+ {
+ "include": "#meta"
+ },
+ {
+ "include": "#tag"
+ },
+ {
+ "include": "#link"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "account": {
+ "begin": "([A-Z][a-z]+)(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.language.beancount"
+ },
+ "2": {
+ "name": "punctuation.separator.beancount"
+ }
+ },
+ "end": "\\s",
+ "name": "meta.account.beancount",
+ "patterns": [
+ {
+ "begin": "(\\S+)([:]?)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.account.beancount"
+ },
+ "2": {
+ "name": "punctuation.separator.beancount"
+ }
+ },
+ "comment": "Sub accounts",
+ "end": "([:]?)|(\\s)",
+ "patterns": [
+ {
+ "include": "$self"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ }
+ ]
+ },
+ "bool": {
+ "captures": {
+ "0": {
+ "name": "constant.language.bool.beancount"
+ },
+ "2": {
+ "name": "constant.numeric.currency.beancount"
+ },
+ "3": {
+ "name": "entity.type.commodity.beancount"
+ }
+ },
+ "match": "TRUE|FALSE"
+ },
+ "number": {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.modifier.beancount"
+ },
+ "2": {
+ "name": "constant.numeric.currency.beancount"
+ }
+ },
+ "match": "([\\-|\\+]?)(\\d+(?:,\\d{3})*(?:\\.\\d*)?)"
+ },
+ "amount": {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.modifier.beancount"
+ },
+ "2": {
+ "name": "constant.numeric.currency.beancount"
+ },
+ "3": {
+ "name": "entity.type.commodity.beancount"
+ }
+ },
+ "match": "([\\-|\\+]?)(\\d+(?:,\\d{3})*(?:\\.\\d*)?)\\s*([A-Z][A-Z0-9\\'\\.\\_\\-]{0,22}[A-Z0-9])",
+ "name": "meta.amount.beancount"
+ },
+ "comments": {
+ "captures": {
+ "1": {
+ "name": "comment.line.beancount"
+ }
+ },
+ "match": "(;.*)$"
+ },
+ "commodity": {
+ "match": "([A-Z][A-Z0-9\\'\\.\\_\\-]{0,22}[A-Z0-9])",
+ "name": "entity.type.commodity.beancount"
+ },
+ "cost": {
+ "begin": "\\{\\{?",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.assignment.beancount"
+ }
+ },
+ "end": "\\}\\}?",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.assignment.beancount"
+ }
+ },
+ "name": "meta.cost.beancount",
+ "patterns": [
+ {
+ "include": "#amount"
+ },
+ {
+ "include": "#date"
+ },
+ {
+ "match": "\\,",
+ "name": "punctuation.separator.beancount"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ "date": {
+ "captures": {
+ "1": {
+ "name": "constant.numeric.date.year.beancount"
+ },
+ "2": {
+ "name": "punctuation.separator.beancount"
+ },
+ "3": {
+ "name": "constant.numeric.date.month.beancount"
+ },
+ "4": {
+ "name": "punctuation.separator.beancount"
+ },
+ "5": {
+ "name": "constant.numeric.date.day.beancount"
+ }
+ },
+ "match": "([0-9]{4})([\\-|/])([0-9]{2})([\\-|/])([0-9]{2})",
+ "name": "meta.date.beancount"
+ },
+ "flag": {
+ "match": "(?<=\\s)([*!&#?%PSTCURM])(?=\\s+)",
+ "name": "keyword.other.beancount"
+ },
+ "illegal": {
+ "match": "[^\\s]",
+ "name": "invalid.illegal.unrecognized.beancount"
+ },
+ "link": {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.link.beancount"
+ },
+ "2": {
+ "name": "markup.underline.link.beancount"
+ }
+ },
+ "match": "(\\^)([A-Za-z0-9\\-_/.]+)"
+ },
+ "meta": {
+ "begin": "^\\s*([a-z][A-Za-z0-9\\-_]+)([:])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.directive.beancount"
+ },
+ "2": {
+ "name": "punctuation.separator.beancount"
+ }
+ },
+ "end": "\\n",
+ "name": "meta.meta.beancount",
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#account"
+ },
+ {
+ "include": "#bool"
+ },
+ {
+ "include": "#commodity"
+ },
+ {
+ "include": "#date"
+ },
+ {
+ "include": "#tag"
+ },
+ {
+ "include": "#amount"
+ },
+ {
+ "include": "#number"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ "posting": {
+ "begin": "^\\s+(?=([A-Z\\!]))",
+ "end": "(?=(^\\s*$|^\\S|^\\s*[A-Z]))",
+ "name": "meta.posting.beancount",
+ "patterns": [
+ {
+ "include": "#meta"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#flag"
+ },
+ {
+ "include": "#account"
+ },
+ {
+ "include": "#amount"
+ },
+ {
+ "include": "#cost"
+ },
+ {
+ "include": "#date"
+ },
+ {
+ "include": "#price"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ "price": {
+ "begin": "\\@\\@?",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.assignment.beancount"
+ }
+ },
+ "end": "(?=(;|\\n))",
+ "name": "meta.price.beancount",
+ "patterns": [
+ {
+ "include": "#amount"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ "string": {
+ "begin": "\\\"",
+ "end": "\\\"",
+ "name": "string.quoted.double.beancount",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.beancount"
+ }
+ ]
+ },
+ "tag": {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.tag.beancount"
+ },
+ "2": {
+ "name": "entity.name.tag.beancount"
+ }
+ },
+ "match": "(#)([A-Za-z0-9\\-_/.]+)"
+ }
+ },
+ "scopeName": "text.beancount",
+ "uuid": "dbf28879-ee4d-497e-a678-a5c5a5e8d74f"
+}
diff --git a/node_modules/shiki/languages/berry.tmLanguage.json b/node_modules/shiki/languages/berry.tmLanguage.json
new file mode 100644
index 0000000..d3e5f3c
--- /dev/null
+++ b/node_modules/shiki/languages/berry.tmLanguage.json
@@ -0,0 +1,123 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "name": "berry",
+ "patterns": [
+ {
+ "include": "#controls"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#function"
+ },
+ {
+ "include": "#member"
+ },
+ {
+ "include": "#identifier"
+ },
+ {
+ "include": "#number"
+ },
+ {
+ "include": "#operator"
+ }
+ ],
+ "repository": {
+ "controls": {
+ "patterns": [
+ {
+ "name": "keyword.control.berry",
+ "match": "\\b(if|elif|else|for|while|do|end|break|continue|return|try|except|raise)\\b"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "name": "string.quoted.double.berry",
+ "match": "\"(\\\\.|[^\"])*\""
+ },
+ {
+ "name": "string.quoted.single.berry",
+ "match": "'(\\\\.|[^'])*'"
+ }
+ ]
+ },
+ "comment-block": {
+ "name": "comment.berry",
+ "begin": "\\#\\-",
+ "end": "\\-#",
+ "patterns": [{}]
+ },
+ "comments": {
+ "name": "comment.line.berry",
+ "begin": "\\#",
+ "end": "\\n",
+ "patterns": [{}]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "name": "keyword.berry",
+ "match": "\\b(var|static|def|class|true|false|nil|self|super|import|as)\\b"
+ }
+ ]
+ },
+ "identifier": {
+ "patterns": [
+ {
+ "name": "identifier.berry",
+ "match": "\\b[_A-Za-z]\\w+\\b"
+ }
+ ]
+ },
+ "number": {
+ "patterns": [
+ {
+ "name": "constant.numeric.berry",
+ "match": "0x[a-fA-F0-9]+|\\d+|(\\d+\\.?|\\.\\d)\\d*([eE][+-]?\\d+)?"
+ }
+ ]
+ },
+ "operator": {
+ "patterns": [
+ {
+ "name": "keyword.operator.berry",
+ "match": "\\(|\\)|\\[|\\]|\\.|-|\\!|~|\\*|/|%|\\+|&|\\^|\\||<|>|=|:"
+ }
+ ]
+ },
+ "member": {
+ "patterns": [
+ {
+ "match": "\\.([a-zA-Z_][a-zA-Z0-9_]*)",
+ "captures": {
+ "0": {
+ "name": "entity.other.attribute-name.berry"
+ }
+ }
+ }
+ ]
+ },
+ "function": {
+ "patterns": [
+ {
+ "name": "entity.name.function.berry",
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*(?=\\s*\\())"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.berry"
+}
diff --git a/node_modules/shiki/languages/bibtex.tmLanguage.json b/node_modules/shiki/languages/bibtex.tmLanguage.json
new file mode 100644
index 0000000..0af3b24
--- /dev/null
+++ b/node_modules/shiki/languages/bibtex.tmLanguage.json
@@ -0,0 +1,401 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/jlelong/vscode-latex-basics/blob/master/syntaxes/Bibtex.tmLanguage.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/jlelong/vscode-latex-basics/commit/4b19be579cb4a3c680f8b4bb613dcebfac826f8b",
+ "name": "bibtex",
+ "scopeName": "text.bibtex",
+ "comment": "Grammar based on description from http://artis.imag.fr/~Xavier.Decoret/resources/xdkbibtex/bibtex_summary.html#comment\n\t\n\tTODO: Does not support @preamble\n\t",
+ "patterns": [
+ {
+ "begin": "@Comment",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.bibtex"
+ }
+ },
+ "end": "$\\n?",
+ "name": "comment.line.at-sign.bibtex"
+ },
+ {
+ "patterns": [
+ {
+ "include": "#percentage_comment"
+ }
+ ]
+ },
+ {
+ "begin": "((@)(?i:string))\\s*(\\{)\\s*([a-zA-Z0-9\\!\\$\\&\\*\\+\\-\\.\\/\\:\\;\\<\\>\\?\\[\\]\\^\\_\\`\\|]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.string-constant.bibtex"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.bibtex"
+ },
+ "3": {
+ "name": "punctuation.section.string-constant.begin.bibtex"
+ },
+ "4": {
+ "name": "variable.other.bibtex"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.string-constant.end.bibtex"
+ }
+ },
+ "name": "meta.string-constant.braces.bibtex",
+ "patterns": [
+ {
+ "include": "#string_content"
+ }
+ ]
+ },
+ {
+ "begin": "((@)(?i:string))\\s*(\\()\\s*([a-zA-Z0-9\\!\\$\\&\\*\\+\\-\\.\\/\\:\\;\\<\\>\\?\\[\\]\\^\\_\\`\\|]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.string-constant.bibtex"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.bibtex"
+ },
+ "3": {
+ "name": "punctuation.section.string-constant.begin.bibtex"
+ },
+ "4": {
+ "name": "variable.other.bibtex"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.string-constant.end.bibtex"
+ }
+ },
+ "name": "meta.string-constant.parenthesis.bibtex",
+ "patterns": [
+ {
+ "include": "#string_content"
+ }
+ ]
+ },
+ {
+ "begin": "((@)[a-zA-Z]+)\\s*(\\{)\\s*([^\\s,]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.entry-type.bibtex"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.bibtex"
+ },
+ "3": {
+ "name": "punctuation.section.entry.begin.bibtex"
+ },
+ "4": {
+ "name": "entity.name.type.entry-key.bibtex"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.entry.end.bibtex"
+ }
+ },
+ "name": "meta.entry.braces.bibtex",
+ "patterns": [
+ {
+ "include": "#percentage_comment"
+ },
+ {
+ "include": "#url_field"
+ },
+ {
+ "begin": "([a-zA-Z0-9\\!\\$\\&\\*\\+\\-\\.\\/\\:\\;\\<\\>\\?\\[\\]\\^\\_\\`\\|]+)\\s*(\\=)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.key.bibtex"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.bibtex"
+ }
+ },
+ "end": "(?=[,}])",
+ "name": "meta.key-assignment.bibtex",
+ "patterns": [
+ {
+ "include": "#percentage_comment"
+ },
+ {
+ "include": "#integer"
+ },
+ {
+ "include": "#string_content"
+ },
+ {
+ "include": "#string_var"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((@)[a-zA-Z]+)\\s*(\\()\\s*([^\\s,]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.entry-type.bibtex"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.bibtex"
+ },
+ "3": {
+ "name": "punctuation.section.entry.begin.bibtex"
+ },
+ "4": {
+ "name": "entity.name.type.entry-key.bibtex"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.entry.end.bibtex"
+ }
+ },
+ "name": "meta.entry.parenthesis.bibtex",
+ "patterns": [
+ {
+ "include": "#percentage_comment"
+ },
+ {
+ "include": "#url_field"
+ },
+ {
+ "begin": "([a-zA-Z0-9\\!\\$\\&\\*\\+\\-\\.\\/\\:\\;\\<\\>\\?\\[\\]\\^\\_\\`\\|]+)\\s*(\\=)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.key.bibtex"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.bibtex"
+ }
+ },
+ "end": "(?=[,)])",
+ "name": "meta.key-assignment.bibtex",
+ "patterns": [
+ {
+ "include": "#percentage_comment"
+ },
+ {
+ "include": "#integer"
+ },
+ {
+ "include": "#string_content"
+ },
+ {
+ "include": "#string_var"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "[^@\\n]",
+ "end": "(?=@)",
+ "name": "comment.block.bibtex"
+ }
+ ],
+ "repository": {
+ "integer": {
+ "match": "\\s*(\\d+)\\s*",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.bibtex"
+ }
+ }
+ },
+ "nested_braces": {
+ "begin": "(?<!\\\\)\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.begin.bibtex"
+ }
+ },
+ "end": "(?<!\\\\)\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.end.bibtex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#nested_braces"
+ }
+ ]
+ },
+ "string_var": {
+ "match": "(#)?\\s*([a-zA-Z0-9\\!\\$\\&\\*\\+\\-\\.\\/\\:\\;\\<\\>\\?\\[\\]\\^\\_\\`\\|]+)\\s*(#)?",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.bibtex"
+ },
+ "2": {
+ "name": "support.variable.bibtex"
+ },
+ "3": {
+ "name": "keyword.operator.bibtex"
+ }
+ }
+ },
+ "string_content": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.bibtex"
+ }
+ },
+ "end": "(\\})(?=(?:,?\\s*\\}?\\s*\\n)|(?:\\s*#))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.bibtex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#url_cmd"
+ },
+ {
+ "include": "#percentage_comment"
+ },
+ {
+ "match": "@",
+ "name": "invalid.illegal.at-sign.bibtex"
+ },
+ {
+ "include": "#nested_braces"
+ }
+ ]
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.bibtex"
+ }
+ },
+ "end": "\"(?=(?:,?\\s*\\}?\\s*\\n)|(?:\\s*#))",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.bibtex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#url_cmd"
+ },
+ {
+ "include": "#percentage_comment"
+ },
+ {
+ "match": "@",
+ "name": "invalid.illegal.at-sign.bibtex"
+ }
+ ]
+ }
+ ]
+ },
+ "string_url": {
+ "patterns": [
+ {
+ "begin": "\\{|\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.bibtex"
+ }
+ },
+ "end": "(\\}|\")(?=(?:,?\\s*\\}?\\s*\\n)|(?:\\s*#))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.bibtex"
+ }
+ },
+ "contentName": "meta.url.bibtex",
+ "patterns": [
+ {
+ "include": "#url_cmd"
+ }
+ ]
+ }
+ ]
+ },
+ "percentage_comment": {
+ "patterns": [
+ {
+ "begin": "(^[ \\t]+)?(?=%)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.bibtex"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "%",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.bibtex"
+ }
+ },
+ "end": "$\\n?",
+ "name": "comment.line.percentage.bibtex"
+ }
+ ]
+ }
+ ]
+ },
+ "url_cmd": {
+ "captures": {
+ "1": {
+ "name": "support.function.url.bibtex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.bibtex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.begin.bibtex"
+ },
+ "4": {
+ "name": "markup.underline.link.bibtex"
+ },
+ "5": {
+ "name": "punctuation.definition.arguments.end.bibtex"
+ }
+ },
+ "match": "(?:\\s*)((\\\\)(?:url|href))(\\{)([^}]*)(\\})",
+ "name": "meta.function.link.url.bibtex"
+ },
+ "url_field": {
+ "begin": "(url)\\s*(\\=)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.key.bibtex"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.bibtex"
+ }
+ },
+ "end": "(?=[,}])",
+ "name": "meta.key-assignment.url.bibtex",
+ "patterns": [
+ {
+ "include": "#string_url"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/bicep.tmLanguage.json b/node_modules/shiki/languages/bicep.tmLanguage.json
new file mode 100644
index 0000000..c03f18f
--- /dev/null
+++ b/node_modules/shiki/languages/bicep.tmLanguage.json
@@ -0,0 +1,236 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "name": "bicep",
+ "scopeName": "source.bicep",
+ "fileTypes": [".bicep"],
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comments"
+ }
+ ],
+ "repository": {
+ "array-literal": {
+ "name": "meta.array-literal.bicep",
+ "begin": "\\[(?!(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\bfor\\b)",
+ "end": "]",
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "block-comment": {
+ "name": "comment.block.bicep",
+ "begin": "/\\*",
+ "end": "\\*/"
+ },
+ "comments": {
+ "patterns": [
+ {
+ "include": "#line-comment"
+ },
+ {
+ "include": "#block-comment"
+ }
+ ]
+ },
+ "decorator": {
+ "name": "meta.decorator.bicep",
+ "begin": "@(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*(?=\\b[_$[:alpha:]][_$[:alnum:]]*\\b)",
+ "end": "",
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "directive": {
+ "name": "meta.directive.bicep",
+ "begin": "#\\b[_a-zA-Z-0-9]+\\b",
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#directive-variable"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "directive-variable": {
+ "name": "keyword.control.declaration.bicep",
+ "match": "\\b[_a-zA-Z-0-9]+\\b"
+ },
+ "escape-character": {
+ "name": "constant.character.escape.bicep",
+ "match": "\\\\(u{[0-9A-Fa-f]+}|n|r|t|\\\\|'|\\${)"
+ },
+ "expression": {
+ "patterns": [
+ {
+ "include": "#string-literal"
+ },
+ {
+ "include": "#string-verbatim"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#named-literal"
+ },
+ {
+ "include": "#object-literal"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#identifier"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "include": "#decorator"
+ },
+ {
+ "include": "#lambda-start"
+ },
+ {
+ "include": "#directive"
+ }
+ ]
+ },
+ "function-call": {
+ "name": "meta.function-call.bicep",
+ "begin": "(\\b[_$[:alpha:]][_$[:alnum:]]*\\b)(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\(",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.bicep"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "identifier": {
+ "name": "variable.other.readwrite.bicep",
+ "match": "\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?!(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\()"
+ },
+ "keyword": {
+ "name": "keyword.control.declaration.bicep",
+ "match": "\\b(metadata|targetScope|resource|module|param|var|output|for|in|if|existing|import|as|type|with|using|func)\\b"
+ },
+ "lambda-start": {
+ "name": "meta.lambda-start.bicep",
+ "begin": "(\\((?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*(,(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*)*\\)|\\((?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\)|(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*)(?=(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*=>)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.undefined.bicep",
+ "patterns": [
+ {
+ "include": "#identifier"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ }
+ },
+ "end": "(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*=>"
+ },
+ "line-comment": {
+ "name": "comment.line.double-slash.bicep",
+ "match": "//.*(?=$)"
+ },
+ "named-literal": {
+ "name": "constant.language.bicep",
+ "match": "\\b(true|false|null)\\b"
+ },
+ "numeric-literal": {
+ "name": "constant.numeric.bicep",
+ "match": "[0-9]+"
+ },
+ "object-literal": {
+ "name": "meta.object-literal.bicep",
+ "begin": "{",
+ "end": "}",
+ "patterns": [
+ {
+ "include": "#object-property-key"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "object-property-key": {
+ "name": "variable.other.property.bicep",
+ "match": "\\b[_$[:alpha:]][_$[:alnum:]]*\\b(?=(?:[ \\t\\r\\n]|\\/\\*(?:\\*(?!\\/)|[^*])*\\*\\/)*:)"
+ },
+ "string-literal": {
+ "name": "string.quoted.single.bicep",
+ "begin": "'(?!'')",
+ "end": "'",
+ "patterns": [
+ {
+ "include": "#escape-character"
+ },
+ {
+ "include": "#string-literal-subst"
+ }
+ ]
+ },
+ "string-literal-subst": {
+ "name": "meta.string-literal-subst.bicep",
+ "begin": "(?<!\\\\)(\\${)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.template-expression.begin.bicep"
+ }
+ },
+ "end": "(})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.template-expression.end.bicep"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "string-verbatim": {
+ "name": "string.quoted.multi.bicep",
+ "begin": "'''",
+ "end": "'''",
+ "patterns": []
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/blade.tmLanguage.json b/node_modules/shiki/languages/blade.tmLanguage.json
new file mode 100644
index 0000000..8b95a20
--- /dev/null
+++ b/node_modules/shiki/languages/blade.tmLanguage.json
@@ -0,0 +1,3867 @@
+{
+ "scopeName": "text.html.php.blade",
+ "name": "blade",
+ "fileTypes": ["blade.php"],
+ "foldingStartMarker": "(/\\*|\\{\\s*$|<<<HTML)",
+ "foldingStopMarker": "(\\*/|^\\s*\\}|^HTML;)",
+ "injections": {
+ "text.html.php.blade - (meta.embedded | meta.tag | comment.block.blade), L:(text.html.php.blade meta.tag - (comment.block.blade | meta.embedded.block.blade)), L:(source.js.embedded.html - (comment.block.blade | meta.embedded.block.blade))": {
+ "patterns": [
+ {
+ "include": "#blade"
+ },
+ {
+ "begin": "(^\\s*)(?=<\\?(?![^?]*\\?>))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.leading.php"
+ }
+ },
+ "end": "(?!\\G)(\\s*$\\n)?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.trailing.php"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "<\\?(?i:php|=)?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ }
+ },
+ "contentName": "source.php",
+ "end": "(\\?)>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "source.php"
+ }
+ },
+ "name": "meta.embedded.block.php",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "<\\?(?i:php|=)?(?![^?]*\\?>)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ }
+ },
+ "contentName": "source.php",
+ "end": "(\\?)>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "source.php"
+ }
+ },
+ "name": "meta.embedded.block.php",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "begin": "<\\?(?i:php|=)?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ }
+ },
+ "name": "meta.embedded.line.php",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "source.php"
+ },
+ "2": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "3": {
+ "name": "source.php"
+ }
+ },
+ "match": "\\G(\\s*)((\\?))(?=>)",
+ "name": "meta.special.empty-tag.php"
+ },
+ {
+ "begin": "\\G",
+ "contentName": "source.php",
+ "end": "(\\?)(?=>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "source.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ }
+ ],
+ "repository": {
+ "blade": {
+ "patterns": [
+ {
+ "begin": "{{--",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.blade"
+ }
+ },
+ "end": "--}}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.blade"
+ }
+ },
+ "name": "comment.block.blade",
+ "patterns": [
+ {
+ "name": "invalid.illegal.php-code-in-comment.blade",
+ "begin": "(^\\s*)(?=<\\?(?![^?]*\\?>))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.leading.php"
+ }
+ },
+ "end": "(?!\\G)(\\s*$\\n)?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.trailing.php"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "<\\?(?i:php|=)?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ }
+ },
+ "contentName": "source.php",
+ "end": "(\\?)>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "source.php"
+ }
+ },
+ "name": "meta.embedded.block.php",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "<\\?(?i:php|=)?(?![^?]*\\?>)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ }
+ },
+ "contentName": "source.php",
+ "end": "(\\?)>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "source.php"
+ }
+ },
+ "name": "invalid.illegal.php-code-in-comment.blade.meta.embedded.block.php",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "begin": "<\\?(?i:php|=)?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ }
+ },
+ "name": "invalid.illegal.php-code-in-comment.blade.meta.embedded.line.php",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "source.php"
+ },
+ "2": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "3": {
+ "name": "source.php"
+ }
+ },
+ "match": "\\G(\\s*)((\\?))(?=>)",
+ "name": "meta.special.empty-tag.php"
+ },
+ {
+ "begin": "\\G",
+ "contentName": "source.php",
+ "end": "(\\?)(?=>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "source.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?<!@){{{",
+ "beginCaptures": {
+ "0": {
+ "name": "support.function.construct.begin.blade"
+ }
+ },
+ "contentName": "source.php",
+ "end": "}}}",
+ "endCaptures": {
+ "0": {
+ "name": "support.function.construct.end.blade"
+ },
+ "1": {
+ "name": "source.php"
+ }
+ },
+ "name": "meta.function.echo.blade",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "begin": "(?<![@{]){{",
+ "beginCaptures": {
+ "0": {
+ "name": "support.function.construct.begin.blade"
+ }
+ },
+ "contentName": "source.php",
+ "end": "}}",
+ "endCaptures": {
+ "0": {
+ "name": "support.function.construct.end.blade"
+ },
+ "1": {
+ "name": "source.php"
+ }
+ },
+ "name": "meta.function.echo.blade",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!@){!!",
+ "beginCaptures": {
+ "0": {
+ "name": "support.function.construct.begin.blade"
+ }
+ },
+ "contentName": "source.php",
+ "end": "!!}",
+ "endCaptures": {
+ "0": {
+ "name": "support.function.construct.end.blade"
+ },
+ "1": {
+ "name": "source.php"
+ }
+ },
+ "name": "meta.function.echo.blade",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "begin": "(@){{",
+ "beginCaptures": {
+ "0": {
+ "name": "begin.bracket.round.blade"
+ },
+ "1": {
+ "name": "variable.other.index.php"
+ }
+ },
+ "contentName": "source.php",
+ "end": "}}",
+ "endCaptures": {
+ "0": {
+ "name": "end.bracket.round.blade"
+ },
+ "1": {
+ "name": "source.php"
+ }
+ },
+ "name": "meta.function.echo.blade",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)(?<![A-Za-z0-9_@]) (@ (?i:\n auth\n |break\n |can\n |cannot\n |case\n |choice\n |component\n |continue\n |dd\n |dump\n |each\n |elsecan\n |elsecannot\n |elseif\n |empty\n |error\n |extends\n |for\n |foreach\n |forelse\n |guest\n |hassection\n |if\n |include\n |includefirst\n |includeif\n |includeunless\n |includewhen\n |inject\n |isset\n |json\n |lang\n |once\n |prepend\n |push\n |section\n |sectionMissing\n |slot\n |stack\n |switch\n |unless\n |unset\n |while\n |yield\n |servers\n |task\n |story\n |finished\n |production\n |slack\n |method\n |props\n |env\n |livewire\n |php\n )[\\t ]*\n)(\\() # Followed by opening parentheses\n",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.blade"
+ },
+ "2": {
+ "name": "begin.bracket.round.blade.php"
+ }
+ },
+ "contentName": "source.php",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "end.bracket.round.blade.php"
+ }
+ },
+ "name": "meta.directive.blade",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)(?<![A-Za-z0-9_@]) (@ (?i:\n append\n |default\n |else\n |endauth\n |endcan\n |endcannot\n |endcomponent\n |endempty\n |enderror\n |endfor\n |endforeach\n |endforelse\n |endguest\n |endif\n |endisset\n |endlang\n |endonce\n |endprepend\n |endpush\n |endsection\n |endslot\n |endswitch\n |endunless\n |endwhile\n |overwrite\n |parent\n |show\n |stop\n |endtask\n |endstory\n |endfinished\n |endproduction\n |endenv\n )[\\t ]*\n)(\\() # Followed by opening parentheses\n",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.blade"
+ },
+ "2": {
+ "name": "begin.bracket.round.blade.php"
+ }
+ },
+ "contentName": "comment.blade",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "end.bracket.round.blade.php"
+ }
+ },
+ "name": "meta.directive.blade",
+ "patterns": [
+ {
+ "include": "#balance_brackets"
+ }
+ ]
+ },
+ {
+ "match": "(?x)(?<![A-Za-z0-9_@]) @(?: append\n |break\n |continue\n |csrf\n |default\n |each\n |else\n |overwrite\n |parent\n |sectionMissing\n |show\n |stack\n |stop\n |livewireStyles\n |livewireScripts\n)\\b\n",
+ "name": "keyword.blade"
+ },
+ {
+ "match": "(?x)(?<![A-Za-z0-9_@]) @(end)? (?i: auth\n |can\n |cannot\n |component\n |empty\n |error\n |for\n |foreach\n |forelse\n |guest\n |if\n |isset\n |lang\n |prepend\n |push\n |section\n |slot\n |switch\n |unless\n |verbatim\n |while\n |task\n |story\n |finished\n |production\n |env\n |once\n)\\b\n",
+ "name": "keyword.blade"
+ },
+ {
+ "begin": "(?<![A-Za-z0-9_@])@(?i:php|setup)\\b",
+ "end": "(?<![A-Za-z0-9_@])(?=@(?i:endphp|endsetup)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ }
+ },
+ "contentName": "source.php",
+ "name": "meta.embedded.block.blade",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)(?<![A-Za-z0-9_@]) (@(?i:endphp|endsetup)[\\t ]*) (\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "2": {
+ "name": "begin.bracket.round.blade.php"
+ }
+ },
+ "contentName": "comment.blade",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "end.bracket.round.blade.php"
+ }
+ },
+ "name": "meta.directive.blade",
+ "patterns": [
+ {
+ "include": "#balance_brackets"
+ }
+ ]
+ },
+ {
+ "match": "(?x)(?<![A-Za-z0-9_@]) @(?:(?i)endphp|endsetup)\\b",
+ "name": "punctuation.section.embedded.end.php"
+ },
+ {
+ "begin": "(?x)(?<![A-Za-z0-9_@]) (@\\w+(?:::w+)?[\\t ]*) (\\() # Followed by opening parentheses",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.blade"
+ },
+ "2": {
+ "name": "begin.bracket.round.blade.php"
+ }
+ },
+ "contentName": "source.php",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "end.bracket.round.blade.php"
+ }
+ },
+ "name": "meta.directive.custom.blade",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "match": "(?x)(?<![A-Za-z0-9_@]) @\\w+(?:::w+)?\\b",
+ "name": "entity.name.function.blade"
+ }
+ ]
+ },
+ "balance_brackets": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#balance_brackets"
+ }
+ ]
+ },
+ {
+ "match": "[^()]+"
+ }
+ ]
+ },
+ "class-builtin": {
+ "patterns": [
+ {
+ "match": "(?xi)\n(\\\\)?\\b\n((APC|Append)Iterator|Array(Access|Iterator|Object)\n|Bad(Function|Method)CallException\n|(Caching|CallbackFilter)Iterator|Collator|Collectable|Cond|Countable|CURLFile\n|Date(Interval|Period|Time(Interface|Immutable|Zone)?)?|Directory(Iterator)?|DomainException\n|DOM(Attr|CdataSection|CharacterData|Comment|Document(Fragment)?|Element|EntityReference\n |Implementation|NamedNodeMap|Node(list)?|ProcessingInstruction|Text|XPath)\n|(Error)?Exception|EmptyIterator\n|finfo\n|Ev(Check|Child|Embed|Fork|Idle|Io|Loop|Periodic|Prepare|Signal|Stat|Timer|Watcher)?\n|Event(Base|Buffer(Event)?|SslContext|Http(Request|Connection)?|Config|DnsBase|Util|Listener)?\n|FANNConnection|(Filter|Filesystem)Iterator\n|Gender\\\\Gender|GlobIterator|Gmagick(Draw|Pixel)?\n|Haru(Annotation|Destination|Doc|Encoder|Font|Image|Outline|Page)\n|Http((Inflate|Deflate)?Stream|Message|Request(Pool)?|Response|QueryString)\n|HRTime\\\\(PerformanceCounter|StopWatch)\n|Intl(Calendar|((CodePoint|RuleBased)?Break|Parts)?Iterator|DateFormatter|TimeZone)\n|Imagick(Draw|Pixel(Iterator)?)?\n|InfiniteIterator|InvalidArgumentException|Iterator(Aggregate|Iterator)?\n|JsonSerializable\n|KTaglib_(MPEG_(File|AudioProperties)|Tag|ID3v2_(Tag|(AttachedPicture)?Frame))\n|Lapack|(Length|Locale|Logic)Exception|LimitIterator|Lua(Closure)?\n|Mongo(BinData|Client|Code|Collection|CommandCursor|Cursor(Exception)?|Date|DB(Ref)?|DeleteBatch\n |Grid(FS(Cursor|File)?)|Id|InsertBatch|Int(32|64)|Log|Pool|Regex|ResultException|Timestamp\n |UpdateBatch|Write(Batch|ConcernException))?\n|Memcache(d)?|MessageFormatter|MultipleIterator|Mutex\n|mysqli(_(driver|stmt|warning|result))?\n|MysqlndUh(Connection|PreparedStatement)\n|NoRewindIterator|Normalizer|NumberFormatter\n|OCI-(Collection|Lob)|OuterIterator|(OutOf(Bounds|Range)|Overflow)Exception\n|ParentIterator|PDO(Statement)?|Phar(Data|FileInfo)?|php_user_filter|Pool\n|QuickHash(Int(Set|StringHash)|StringIntHash)\n|Recursive(Array|Caching|Directory|Fallback|Filter|Iterator|Regex|Tree)?Iterator\n|Reflection(Class|Function(Abstract)?|Method|Object|Parameter|Property|(Zend)?Extension)?\n|RangeException|Reflector|RegexIterator|ResourceBundle|RuntimeException|RRD(Creator|Graph|Updater)\n|SAM(Connection|Message)|SCA(_(SoapProxy|LocalProxy))?\n|SDO_(DAS_(ChangeSummary|Data(Factory|Object)|Relational|Setting|XML(_Document)?)\n |Data(Factory|Object)|Exception|List|Model_(Property|ReflectionDataObject|Type)|Sequence)\n|SeekableIterator|Serializable|SessionHandler(Interface)?|SimpleXML(Iterator|Element)|SNMP\n|Soap(Client|Fault|Header|Param|Server|Var)\n|SphinxClient|Spoofchecker\n|Spl(DoublyLinkedList|Enum|File(Info|Object)|FixedArray|(Max|Min)?Heap|Observer|ObjectStorage\n |(Priority)?Queue|Stack|Subject|Type|TempFileObject)\n|SQLite(3(Result|Stmt)?|Database|Result|Unbuffered)\n|stdClass|streamWrapper|SVM(Model)?|Swish(Result(s)?|Search)?|Sync(Event|Mutex|ReaderWriter|Semaphore)\n|Thread(ed)?|tidy(Node)?|TokyoTyrant(Table|Iterator|Query)?|Transliterator|Traversable\n|UConverter|(Underflow|UnexpectedValue)Exception\n|V8Js(Exception)?|Varnish(Admin|Log|Stat)\n|Worker|Weak(Map|Ref)\n|XML(Diff\\\\(Base|DOM|File|Memory)|Reader|Writer)|XsltProcessor\n|Yaf_(Route_(Interface|Map|Regex|Rewrite|Simple|Supervar)\n |Action_Abstract|Application|Config_(Simple|Ini|Abstract)|Controller_Abstract\n |Dispatcher|Exception|Loader|Plugin_Abstract|Registry|Request_(Abstract|Simple|Http)\n |Response_Abstract|Router|Session|View_(Simple|Interface))\n|Yar_(Client(_Exception)?|Concurrent_Client|Server(_Exception)?)\n|ZipArchive|ZMQ(Context|Device|Poll|Socket)?)\n\\b",
+ "name": "support.class.builtin.php",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ }
+ }
+ ]
+ },
+ "class-name": {
+ "patterns": [
+ {
+ "begin": "(?i)(?=\\\\?[a-z_0-9]+\\\\)",
+ "end": "(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\])",
+ "endCaptures": {
+ "1": {
+ "name": "support.class.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ },
+ {
+ "include": "#class-builtin"
+ },
+ {
+ "begin": "(?=[\\\\a-zA-Z_])",
+ "end": "(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\])",
+ "endCaptures": {
+ "1": {
+ "name": "support.class.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "/\\*\\*(?=\\s)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "name": "comment.block.documentation.phpdoc.php",
+ "patterns": [
+ {
+ "include": "#php_doc"
+ }
+ ]
+ },
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.php"
+ },
+ {
+ "begin": "(^\\s+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.php"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "end": "\\n|(?=\\?>)",
+ "name": "comment.line.double-slash.php"
+ }
+ ]
+ },
+ {
+ "begin": "(^\\s+)?(?=#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.php"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "end": "\\n|(?=\\?>)",
+ "name": "comment.line.number-sign.php"
+ }
+ ]
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(TRUE|FALSE|NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__|ON|OFF|YES|NO|NL|BR|TAB)\\b",
+ "name": "constant.language.php"
+ },
+ {
+ "match": "(?x)\n(\\\\)?\\b\n(DEFAULT_INCLUDE_PATH\n|EAR_(INSTALL|EXTENSION)_DIR\n|E_(ALL|COMPILE_(ERROR|WARNING)|CORE_(ERROR|WARNING)|DEPRECATED|ERROR|NOTICE\n |PARSE|RECOVERABLE_ERROR|STRICT|USER_(DEPRECATED|ERROR|NOTICE|WARNING)|WARNING)\n|PHP_(ROUND_HALF_(DOWN|EVEN|ODD|UP)|(MAJOR|MINOR|RELEASE)_VERSION|MAXPATHLEN\n |BINDIR|SHLIB_SUFFIX|SYSCONFDIR|SAPI|CONFIG_FILE_(PATH|SCAN_DIR)\n |INT_(MAX|SIZE)|ZTS|OS|OUTPUT_HANDLER_(START|CONT|END)|DEBUG|DATADIR\n |URL_(SCHEME|HOST|USER|PORT|PASS|PATH|QUERY|FRAGMENT)|PREFIX\n |EXTRA_VERSION|EXTENSION_DIR|EOL|VERSION(_ID)?\n |WINDOWS_(NT_(SERVER|DOMAIN_CONTROLLER|WORKSTATION)\n |VERSION_(MAJOR|MINOR)|BUILD|SUITEMASK|SP_(MAJOR|MINOR)\n |PRODUCTTYPE|PLATFORM)\n |LIBDIR|LOCALSTATEDIR)\n|STD(ERR|IN|OUT)|ZEND_(DEBUG_BUILD|THREAD_SAFE))\n\\b",
+ "name": "support.constant.core.php",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(\\\\)?\\b\n(__COMPILER_HALT_OFFSET__|AB(MON_(1|2|3|4|5|6|7|8|9|10|11|12)|DAY[1-7])\n|AM_STR|ASSERT_(ACTIVE|BAIL|CALLBACK_QUIET_EVAL|WARNING)|ALT_DIGITS\n|CASE_(UPPER|LOWER)|CHAR_MAX|CONNECTION_(ABORTED|NORMAL|TIMEOUT)|CODESET|COUNT_(NORMAL|RECURSIVE)\n|CREDITS_(ALL|DOCS|FULLPAGE|GENERAL|GROUP|MODULES|QA|SAPI)\n|CRYPT_(BLOWFISH|EXT_DES|MD5|SHA(256|512)|SALT_LENGTH|STD_DES)|CURRENCY_SYMBOL\n|D_(T_)?FMT|DATE_(ATOM|COOKIE|ISO8601|RFC(822|850|1036|1123|2822|3339)|RSS|W3C)\n|DAY_[1-7]|DECIMAL_POINT|DIRECTORY_SEPARATOR\n|ENT_(COMPAT|IGNORE|(NO)?QUOTES)|EXTR_(IF_EXISTS|OVERWRITE|PREFIX_(ALL|IF_EXISTS|INVALID|SAME)|REFS|SKIP)\n|ERA(_(D_(T_)?FMT)|T_FMT|YEAR)?|FRAC_DIGITS|GROUPING|HASH_HMAC|HTML_(ENTITIES|SPECIALCHARS)\n|INF|INFO_(ALL|CREDITS|CONFIGURATION|ENVIRONMENT|GENERAL|LICENSEMODULES|VARIABLES)\n|INI_(ALL|CANNER_(NORMAL|RAW)|PERDIR|SYSTEM|USER)|INT_(CURR_SYMBOL|FRAC_DIGITS)\n|LC_(ALL|COLLATE|CTYPE|MESSAGES|MONETARY|NUMERIC|TIME)|LOCK_(EX|NB|SH|UN)\n|LOG_(ALERT|AUTH(PRIV)?|CRIT|CRON|CONS|DAEMON|DEBUG|EMERG|ERR|INFO|LOCAL[1-7]|LPR|KERN|MAIL\n |NEWS|NODELAY|NOTICE|NOWAIT|ODELAY|PID|PERROR|WARNING|SYSLOG|UCP|USER)\n|M_(1_PI|SQRT(1_2|2|3|PI)|2_(SQRT)?PI|PI(_(2|4))?|E(ULER)?|LN(10|2|PI)|LOG(10|2)E)\n|MON_(1|2|3|4|5|6|7|8|9|10|11|12|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)\n|N_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|NAN|NEGATIVE_SIGN|NO(EXPR|STR)\n|P_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|PM_STR|POSITIVE_SIGN\n|PATH(_SEPARATOR|INFO_(EXTENSION|(BASE|DIR|FILE)NAME))|RADIXCHAR\n|SEEK_(CUR|END|SET)|SORT_(ASC|DESC|LOCALE_STRING|REGULAR|STRING)|STR_PAD_(BOTH|LEFT|RIGHT)\n|T_FMT(_AMPM)?|THOUSEP|THOUSANDS_SEP\n|UPLOAD_ERR_(CANT_WRITE|EXTENSION|(FORM|INI)_SIZE|NO_(FILE|TMP_DIR)|OK|PARTIAL)\n|YES(EXPR|STR))\n\\b",
+ "name": "support.constant.std.php",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(\\\\)?\\b\n(GLOB_(MARK|BRACE|NO(SORT|CHECK|ESCAPE)|ONLYDIR|ERR|AVAILABLE_FLAGS)\n|XML_(SAX_IMPL|(DTD|DOCUMENT(_(FRAG|TYPE))?|HTML_DOCUMENT|NOTATION|NAMESPACE_DECL|PI|COMMENT|DATA_SECTION|TEXT)_NODE\n |OPTION_(SKIP_(TAGSTART|WHITE)|CASE_FOLDING|TARGET_ENCODING)\n |ERROR_((BAD_CHAR|(ATTRIBUTE_EXTERNAL|BINARY|PARAM|RECURSIVE)_ENTITY)_REF|MISPLACED_XML_PI|SYNTAX|NONE\n |NO_(MEMORY|ELEMENTS)|TAG_MISMATCH|INCORRECT_ENCODING|INVALID_TOKEN|DUPLICATE_ATTRIBUTE\n |UNCLOSED_(CDATA_SECTION|TOKEN)|UNDEFINED_ENTITY|UNKNOWN_ENCODING|JUNK_AFTER_DOC_ELEMENT\n |PARTIAL_CHAR|EXTERNAL_ENTITY_HANDLING|ASYNC_ENTITY)\n |ENTITY_(((REF|DECL)_)?NODE)|ELEMENT(_DECL)?_NODE|LOCAL_NAMESPACE|ATTRIBUTE_(NMTOKEN(S)?|NOTATION|NODE)\n |CDATA|ID(REF(S)?)?|DECL_NODE|ENTITY|ENUMERATION)\n|MHASH_(RIPEMD(128|160|256|320)|GOST|MD(2|4|5)|SHA(1|224|256|384|512)|SNEFRU256|HAVAL(128|160|192|224|256)\n |CRC23(B)?|TIGER(128|160)?|WHIRLPOOL|ADLER32)\n|MYSQL_(BOTH|NUM|CLIENT_(SSL|COMPRESS|IGNORE_SPACE|INTERACTIVE|ASSOC))\n|MYSQLI_(REPORT_(STRICT|INDEX|OFF|ERROR|ALL)|REFRESH_(GRANT|MASTER|BACKUP_LOG|STATUS|SLAVE|HOSTS|THREADS|TABLES|LOG)\n |READ_DEFAULT_(FILE|GROUP)|(GROUP|MULTIPLE_KEY|BINARY|BLOB)_FLAG|BOTH\n |STMT_ATTR_(CURSOR_TYPE|UPDATE_MAX_LENGTH|PREFETCH_ROWS)|STORE_RESULT\n |SERVER_QUERY_(NO_((GOOD_)?INDEX_USED)|WAS_SLOW)|SET_(CHARSET_NAME|FLAG)\n |NO_(DEFAULT_VALUE_FLAG|DATA)|NOT_NULL_FLAG|NUM(_FLAG)?\n |CURSOR_TYPE_(READ_ONLY|SCROLLABLE|NO_CURSOR|FOR_UPDATE)\n |CLIENT_(SSL|NO_SCHEMA|COMPRESS|IGNORE_SPACE|INTERACTIVE|FOUND_ROWS)\n |TYPE_(GEOMETRY|((MEDIUM|LONG|TINY)_)?BLOB|BIT|SHORT|STRING|SET|YEAR|NULL|NEWDECIMAL|NEWDATE|CHAR\n |TIME(STAMP)?|TINY|INT24|INTERVAL|DOUBLE|DECIMAL|DATE(TIME)?|ENUM|VAR_STRING|FLOAT|LONG(LONG)?)\n |TIME_STAMP_FLAG|INIT_COMMAND|ZEROFILL_FLAG|ON_UPDATE_NOW_FLAG\n |OPT_(NET_((CMD|READ)_BUFFER_SIZE)|CONNECT_TIMEOUT|INT_AND_FLOAT_NATIVE|LOCAL_INFILE)\n |DEBUG_TRACE_ENABLED|DATA_TRUNCATED|USE_RESULT|(ENUM|(PART|PRI|UNIQUE)_KEY|UNSIGNED)_FLAG\n |ASSOC|ASYNC|AUTO_INCREMENT_FLAG)\n|MCRYPT_(RC(2|6)|RIJNDAEL_(128|192|256)|RAND|GOST|XTEA|MODE_(STREAM|NOFB|CBC|CFB|OFB|ECB)|MARS\n |BLOWFISH(_COMPAT)?|SERPENT|SKIPJACK|SAFER(64|128|PLUS)|CRYPT|CAST_(128|256)|TRIPLEDES|THREEWAY\n |TWOFISH|IDEA|(3)?DES|DECRYPT|DEV_(U)?RANDOM|PANAMA|ENCRYPT|ENIGNA|WAKE|LOKI97|ARCFOUR(_IV)?)\n|STREAM_(REPORT_ERRORS|MUST_SEEK|MKDIR_RECURSIVE|BUFFER_(NONE|FULL|LINE)|SHUT_(RD)?WR\n |SOCK_(RDM|RAW|STREAM|SEQPACKET|DGRAM)|SERVER_(BIND|LISTEN)\n |NOTIFY_(REDIRECTED|RESOLVE|MIME_TYPE_IS|SEVERITY_(INFO|ERR|WARN)|COMPLETED|CONNECT|PROGRESS\n |FILE_SIZE_IS|FAILURE|AUTH_(REQUIRED|RESULT))\n |CRYPTO_METHOD_((SSLv2(3)?|SSLv3|TLS)_(CLIENT|SERVER))|CLIENT_((ASYNC_)?CONNECT|PERSISTENT)\n |CAST_(AS_STREAM|FOR_SELECT)|(IGNORE|IS)_URL|IPPROTO_(RAW|TCP|ICMP|IP|UDP)|OOB\n |OPTION_(READ_(BUFFER|TIMEOUT)|BLOCKING|WRITE_BUFFER)|URL_STAT_(LINK|QUIET)|USE_PATH\n |PEEK|PF_(INET(6)?|UNIX)|ENFORCE_SAFE_MODE|FILTER_(ALL|READ|WRITE))\n|SUNFUNCS_RET_(DOUBLE|STRING|TIMESTAMP)\n|SQLITE_(READONLY|ROW|MISMATCH|MISUSE|BOTH|BUSY|SCHEMA|NOMEM|NOTFOUND|NOTADB|NOLFS|NUM|CORRUPT\n |CONSTRAINT|CANTOPEN|TOOBIG|INTERRUPT|INTERNAL|IOERR|OK|DONE|PROTOCOL|PERM|ERROR|EMPTY\n |FORMAT|FULL|LOCKED|ABORT|ASSOC|AUTH)\n|SQLITE3_(BOTH|BLOB|NUM|NULL|TEXT|INTEGER|OPEN_(READ(ONLY|WRITE)|CREATE)|FLOAT_ASSOC)\n|CURL(M_(BAD_((EASY)?HANDLE)|CALL_MULTI_PERFORM|INTERNAL_ERROR|OUT_OF_MEMORY|OK)\n |MSG_DONE|SSH_AUTH_(HOST|NONE|DEFAULT|PUBLICKEY|PASSWORD|KEYBOARD)\n |CLOSEPOLICY_(SLOWEST|CALLBACK|OLDEST|LEAST_(RECENTLY_USED|TRAFFIC)\n |INFO_(REDIRECT_(COUNT|TIME)|REQUEST_SIZE|SSL_VERIFYRESULT|STARTTRANSFER_TIME\n |(SIZE|SPEED)_(DOWNLOAD|UPLOAD)|HTTP_CODE|HEADER_(OUT|SIZE)|NAMELOOKUP_TIME\n |CONNECT_TIME|CONTENT_(TYPE|LENGTH_(DOWNLOAD|UPLOAD))|CERTINFO|TOTAL_TIME\n |PRIVATE|PRETRANSFER_TIME|EFFECTIVE_URL|FILETIME)\n |OPT_(RESUME_FROM|RETURNTRANSFER|REDIR_PROTOCOLS|REFERER|READ(DATA|FUNCTION)|RANGE|RANDOM_FILE\n |MAX(CONNECTS|REDIRS)|BINARYTRANSFER|BUFFERSIZE\n |SSH_(HOST_PUBLIC_KEY_MD5|(PRIVATE|PUBLIC)_KEYFILE)|AUTH_TYPES)\n |SSL(CERT(TYPE|PASSWD)?|ENGINE(_DEFAULT)?|VERSION|KEY(TYPE|PASSWD)?)\n |SSL_(CIPHER_LIST|VERIFY(HOST|PEER))\n |STDERR|HTTP(GET|HEADER|200ALIASES|_VERSION|PROXYTUNNEL|AUTH)\n |HEADER(FUNCTION)?|NO(BODY|SIGNAL|PROGRESS)|NETRC|CRLF|CONNECTTIMEOUT(_MS)?\n |COOKIE(SESSION|JAR|FILE)?|CUSTOMREQUEST|CERTINFO|CLOSEPOLICY|CA(INFO|PATH)|TRANSFERTEXT\n |TCP_NODELAY|TIME(CONDITION|OUT(_MS)?|VALUE)|INTERFACE|INFILE(SIZE)?|IPRESOLVE\n |DNS_(CACHE_TIMEOUT|USE_GLOBAL_CACHE)|URL|USER(AGENT|PWD)|UNRESTRICTED_AUTH|UPLOAD\n |PRIVATE|PROGRESSFUNCTION|PROXY(TYPE|USERPWD|PORT|AUTH)?|PROTOCOLS|PORT\n |POST(REDIR|QUOTE|FIELDS)?|PUT|EGDSOCKET|ENCODING|VERBOSE|KRB4LEVEL|KEYPASSWD|QUOTE|FRESH_CONNECT\n |FTP(APPEND|LISTONLY|PORT|SSLAUTH)\n |FTP_(SSL|SKIP_PASV_IP|CREATE_MISSING_DIRS|USE_EP(RT|SV)|FILEMETHOD)\n |FILE(TIME)?|FORBID_REUSE|FOLLOWLOCATION|FAILONERROR|WRITE(FUNCTION|HEADER)|LOW_SPEED_(LIMIT|TIME)\n |AUTOREFERER)\n |PROXY_(HTTP|SOCKS(4|5))|PROTO_(SCP|SFTP|HTTP(S)?|TELNET|TFTP|DICT|FTP(S)?|FILE|LDAP(S)?|ALL)\n |E_((RECV|READ)_ERROR|GOT_NOTHING|MALFORMAT_USER\n |BAD_(CONTENT_ENCODING|CALLING_ORDER|PASSWORD_ENTERED|FUNCTION_ARGUMENT)\n |SSH|SSL_(CIPHER|CONNECT_ERROR|CERTPROBLEM|CACERT|PEER_CERTIFICATE|ENGINE_(NOTFOUND|SETFAILED))\n |SHARE_IN_USE|SEND_ERROR|HTTP_(RANGE_ERROR|NOT_FOUND|PORT_FAILED|POST_ERROR)\n |COULDNT_(RESOLVE_(HOST|PROXY)|CONNECT)|TOO_MANY_REDIRECTS|TELNET_OPTION_SYNTAX|OBSOLETE\n |OUT_OF_MEMORY|OPERATION|TIMEOUTED|OK|URL_MALFORMAT(_USER)?|UNSUPPORTED_PROTOCOL\n |UNKNOWN_TELNET_OPTION|PARTIAL_FILE\n |FTP_(BAD_DOWNLOAD_RESUME|SSL_FAILED|COULDNT_(RETR_FILE|GET_SIZE|STOR_FILE|SET_(BINARY|ASCII)|USE_REST)\n |CANT_(GET_HOST|RECONNECT)|USER_PASSWORD_INCORRECT|PORT_FAILED|QUOTE_ERROR|WRITE_ERROR\n |WEIRD_((PASS|PASV|SERVER|USER)_REPLY|227_FORMAT)|ACCESS_DENIED)\n |FILESIZE_EXCEEDED|FILE_COULDNT_READ_FILE|FUNCTION_NOT_FOUND|FAILED_INIT|WRITE_ERROR|LIBRARY_NOT_FOUND\n |LDAP_(SEARCH_FAILED|CANNOT_BIND|INVALID_URL)|ABORTED_BY_CALLBACK)\n |VERSION_NOW\n |FTP(METHOD_(MULTI|SINGLE|NO)CWD|SSL_(ALL|NONE|CONTROL|TRY)|AUTH_(DEFAULT|SSL|TLS))\n |AUTH_(ANY(SAFE)?|BASIC|DIGEST|GSSNEGOTIATE|NTLM))\n|CURL_(HTTP_VERSION_(1_(0|1)|NONE)|NETRC_(REQUIRED|IGNORED|OPTIONAL)|TIMECOND_(IF(UN)?MODSINCE|LASTMOD)\n |IPRESOLVE_(V(4|6)|WHATEVER)|VERSION_(SSL|IPV6|KERBEROS4|LIBZ))\n|IMAGETYPE_(GIF|XBM|BMP|SWF|COUNT|TIFF_(MM|II)|ICO|IFF|UNKNOWN|JB2|JPX|JP2|JPC|JPEG(2000)?|PSD|PNG|WBMP)\n|INPUT_(REQUEST|GET|SERVER|SESSION|COOKIE|POST|ENV)|ICONV_(MIME_DECODE_(STRICT|CONTINUE_ON_ERROR)|IMPL|VERSION)\n|DNS_(MX|SRV|SOA|HINFO|NS|NAPTR|CNAME|TXT|PTR|ANY|ALL|AAAA|A(6)?)\n|DOM(STRING_SIZE_ERR)\n|DOM_((SYNTAX|HIERARCHY_REQUEST|NO_(MODIFICATION_ALLOWED|DATA_ALLOWED)|NOT_(FOUND|SUPPORTED)|NAMESPACE\n |INDEX_SIZE|USE_ATTRIBUTE|VALID_(MODIFICATION|STATE|CHARACTER|ACCESS)|PHP|VALIDATION|WRONG_DOCUMENT)_ERR)\n|JSON_(HEX_(TAG|QUOT|AMP|APOS)|NUMERIC_CHECK|ERROR_(SYNTAX|STATE_MISMATCH|NONE|CTRL_CHAR|DEPTH|UTF8)|FORCE_OBJECT)\n|PREG_((D_UTF8(_OFFSET)?|NO|INTERNAL|(BACKTRACK|RECURSION)_LIMIT)_ERROR|GREP_INVERT\n |SPLIT_(NO_EMPTY|(DELIM|OFFSET)_CAPTURE)|SET_ORDER|OFFSET_CAPTURE|PATTERN_ORDER)\n|PSFS_(PASS_ON|ERR_FATAL|FEED_ME|FLAG_(NORMAL|FLUSH_(CLOSE|INC)))\n|PCRE_VERSION|POSIX_((F|R|W|X)_OK|S_IF(REG|BLK|SOCK|CHR|IFO))\n|FNM_(NOESCAPE|CASEFOLD|PERIOD|PATHNAME)\n|FILTER_(REQUIRE_(SCALAR|ARRAY)|NULL_ON_FAILURE|CALLBACK|DEFAULT|UNSAFE_RAW\n |SANITIZE_(MAGIC_QUOTES|STRING|STRIPPED|SPECIAL_CHARS|NUMBER_(INT|FLOAT)|URL\n |EMAIL|ENCODED|FULL_SPCIAL_CHARS)\n |VALIDATE_(REGEXP|BOOLEAN|INT|IP|URL|EMAIL|FLOAT)\n |FORCE_ARRAY\n |FLAG_(SCHEME_REQUIRED|STRIP_(BACKTICK|HIGH|LOW)|HOST_REQUIRED|NONE|NO_(RES|PRIV)_RANGE|ENCODE_QUOTES\n |IPV(4|6)|PATH_REQUIRED|EMPTY_STRING_NULL|ENCODE_(HIGH|LOW|AMP)|QUERY_REQUIRED\n |ALLOW_(SCIENTIFIC|HEX|THOUSAND|OCTAL|FRACTION)))\n|FILE_(BINARY|SKIP_EMPTY_LINES|NO_DEFAULT_CONTEXT|TEXT|IGNORE_NEW_LINES|USE_INCLUDE_PATH|APPEND)\n|FILEINFO_(RAW|MIME(_(ENCODING|TYPE))?|SYMLINK|NONE|CONTINUE|DEVICES|PRESERVE_ATIME)\n|FORCE_(DEFLATE|GZIP)\n|LIBXML_(XINCLUDE|NSCLEAN|NO(XMLDECL|BLANKS|NET|CDATA|ERROR|EMPTYTAG|ENT|WARNING)\n |COMPACT|DTD(VALID|LOAD|ATTR)|((DOTTED|LOADED)_)?VERSION|PARSEHUGE|ERR_(NONE|ERROR|FATAL|WARNING)))\n\\b",
+ "name": "support.constant.ext.php",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(\\\\)?\\b\n(T_(RETURN|REQUIRE(_ONCE)?|GOTO|GLOBAL|(MINUS|MOD|MUL|XOR)_EQUAL|METHOD_C|ML_COMMENT|BREAK\n |BOOL_CAST|BOOLEAN_(AND|OR)|BAD_CHARACTER|SR(_EQUAL)?|STRING(_CAST|VARNAME)?|START_HEREDOC|STATIC\n |SWITCH|SL(_EQUAL)?|HALT_COMPILER|NS_(C|SEPARATOR)|NUM_STRING|NEW|NAMESPACE|CHARACTER|COMMENT\n |CONSTANT(_ENCAPSED_STRING)?|CONCAT_EQUAL|CONTINUE|CURLY_OPEN|CLOSE_TAG|CLONE|CLASS(_C)?\n |CASE|CATCH|TRY|THROW|IMPLEMENTS|ISSET|IS_((GREATER|SMALLER)_OR_EQUAL|(NOT_)?(IDENTICAL|EQUAL))\n |INSTANCEOF|INCLUDE(_ONCE)?|INC|INT_CAST|INTERFACE|INLINE_HTML|IF|OR_EQUAL|OBJECT_(CAST|OPERATOR)\n |OPEN_TAG(_WITH_ECHO)?|OLD_FUNCTION|DNUMBER|DIR|DIV_EQUAL|DOC_COMMENT|DOUBLE_(ARROW|CAST|COLON)\n |DOLLAR_OPEN_CURLY_BRACES|DO|DEC|DECLARE|DEFAULT|USE|UNSET(_CAST)?|PRINT|PRIVATE|PROTECTED|PUBLIC\n |PLUS_EQUAL|PAAMAYIM_NEKUDOTAYIM|EXTENDS|EXIT|EMPTY|ENCAPSED_AND_WHITESPACE\n |END(SWITCH|IF|DECLARE|FOR(EACH)?|WHILE)|END_HEREDOC|ECHO|EVAL|ELSE(IF)?|VAR(IABLE)?|FINAL|FILE\n |FOR(EACH)?|FUNC_C|FUNCTION|WHITESPACE|WHILE|LNUMBER|LIST|LINE|LOGICAL_(AND|OR|XOR)\n |ARRAY_(CAST)?|ABSTRACT|AS|AND_EQUAL))\n\\b",
+ "name": "support.constant.parser-token.php",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ }
+ },
+ {
+ "match": "(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",
+ "name": "constant.other.php"
+ }
+ ]
+ },
+ "function-parameters": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.php"
+ },
+ {
+ "begin": "(?xi)\n(array) # Typehint\n\\s+((&)?\\s*(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) # Variable name with possible reference\n\\s*(=)\\s*(array)\\s*(\\() # Default value",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.php"
+ },
+ "2": {
+ "name": "variable.other.php"
+ },
+ "3": {
+ "name": "storage.modifier.reference.php"
+ },
+ "4": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "5": {
+ "name": "keyword.operator.assignment.php"
+ },
+ "6": {
+ "name": "support.function.construct.php"
+ },
+ "7": {
+ "name": "punctuation.definition.array.begin.bracket.round.php"
+ }
+ },
+ "contentName": "meta.array.php",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.end.bracket.round.php"
+ }
+ },
+ "name": "meta.function.parameter.array.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#numbers"
+ }
+ ]
+ },
+ {
+ "match": "(?xi)\n(array|callable) # Typehint\n\\s+((&)?\\s*(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) # Variable name with possible reference\n(?: # Optional default value\n \\s*(=)\\s*\n (?:\n (null)\n |\n (\\[)((?>[^\\[\\]]+|\\[\\g<8>\\])*)(\\])\n |((?:\\S*?\\(\\))|(?:\\S*?))\n )\n)?\n\\s*(?=,|\\)|/[/*]|\\#|$) # A closing parentheses (end of argument list) or a comma or a comment",
+ "name": "meta.function.parameter.array.php",
+ "captures": {
+ "1": {
+ "name": "storage.type.php"
+ },
+ "2": {
+ "name": "variable.other.php"
+ },
+ "3": {
+ "name": "storage.modifier.reference.php"
+ },
+ "4": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "5": {
+ "name": "keyword.operator.assignment.php"
+ },
+ "6": {
+ "name": "constant.language.php"
+ },
+ "7": {
+ "name": "punctuation.section.array.begin.php"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#parameter-default-types"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.section.array.end.php"
+ },
+ "10": {
+ "name": "invalid.illegal.non-null-typehinted.php"
+ }
+ }
+ },
+ {
+ "begin": "(?xi)\n(\\\\?(?:[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*\\\\)*) # Optional namespace\n([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) # Typehinted class name\n\\s+((&)?\\s*(\\.\\.\\.)?(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) # Variable name with possible reference",
+ "beginCaptures": {
+ "1": {
+ "name": "support.other.namespace.php",
+ "patterns": [
+ {
+ "match": "(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",
+ "name": "storage.type.php"
+ },
+ {
+ "match": "\\\\",
+ "name": "punctuation.separator.inheritance.php"
+ }
+ ]
+ },
+ "2": {
+ "name": "storage.type.php"
+ },
+ "3": {
+ "name": "variable.other.php"
+ },
+ "4": {
+ "name": "storage.modifier.reference.php"
+ },
+ "5": {
+ "name": "keyword.operator.variadic.php"
+ },
+ "6": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "end": "(?=,|\\)|/[/*]|\\#)",
+ "name": "meta.function.parameter.typehinted.php",
+ "patterns": [
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.assignment.php"
+ }
+ },
+ "end": "(?=,|\\)|/[/*]|\\#)",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "variable.other.php"
+ },
+ "2": {
+ "name": "storage.modifier.reference.php"
+ },
+ "3": {
+ "name": "keyword.operator.variadic.php"
+ },
+ "4": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(?xi)\n((&)?\\s*(\\.\\.\\.)?(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) # Variable name with possible reference\n\\s*(?=,|\\)|/[/*]|\\#|$) # A closing parentheses (end of argument list) or a comma or a comment",
+ "name": "meta.function.parameter.no-default.php"
+ },
+ {
+ "begin": "(?xi)\n((&)?\\s*(\\.\\.\\.)?(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) # Variable name with possible reference\n\\s*(=)\\s*\n(?:(\\[)((?>[^\\[\\]]+|\\[\\g<6>\\])*)(\\]))? # Optional default type",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.php"
+ },
+ "2": {
+ "name": "storage.modifier.reference.php"
+ },
+ "3": {
+ "name": "keyword.operator.variadic.php"
+ },
+ "4": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "5": {
+ "name": "keyword.operator.assignment.php"
+ },
+ "6": {
+ "name": "punctuation.section.array.begin.php"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#parameter-default-types"
+ }
+ ]
+ },
+ "8": {
+ "name": "punctuation.section.array.end.php"
+ }
+ },
+ "end": "(?=,|\\)|/[/*]|\\#)",
+ "name": "meta.function.parameter.default.php",
+ "patterns": [
+ {
+ "include": "#parameter-default-types"
+ }
+ ]
+ }
+ ]
+ },
+ "function-call": {
+ "patterns": [
+ {
+ "begin": "(?xi)\n(\n \\\\?\\b # Optional root namespace\n [a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]* # First namespace\n (?:\\\\[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)+ # Additional namespaces\n)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#namespace"
+ },
+ {
+ "match": "(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",
+ "name": "entity.name.function.php"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
+ }
+ },
+ "name": "meta.function-call.php",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(\\\\)?\\b([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#support"
+ },
+ {
+ "match": "(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",
+ "name": "entity.name.function.php"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
+ }
+ },
+ "name": "meta.function-call.php",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "match": "(?i)\\b(print|echo)\\b",
+ "name": "support.function.construct.output.php"
+ }
+ ]
+ },
+ "heredoc": {
+ "patterns": [
+ {
+ "begin": "(?i)(?=<<<\\s*(\"?)([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)(\\1)\\s*$)",
+ "end": "(?!\\G)",
+ "name": "string.unquoted.heredoc.php",
+ "patterns": [
+ {
+ "include": "#heredoc_interior"
+ }
+ ]
+ },
+ {
+ "begin": "(?=<<<\\s*'([a-zA-Z_]+[a-zA-Z0-9_]*)'\\s*$)",
+ "end": "(?!\\G)",
+ "name": "string.unquoted.nowdoc.php",
+ "patterns": [
+ {
+ "include": "#nowdoc_interior"
+ }
+ ]
+ }
+ ]
+ },
+ "heredoc_interior": {
+ "patterns": [
+ {
+ "begin": "(<<<)\\s*(\"?)(HTML)(\\2)(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "text.html",
+ "end": "^(\\3)\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "name": "meta.embedded.html",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*(\"?)(XML)(\\2)(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "text.xml",
+ "end": "^(\\3)\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "name": "meta.embedded.xml",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "text.xml"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*(\"?)(SQL)(\\2)(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "source.sql",
+ "end": "^(\\3)\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "name": "meta.embedded.sql",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "source.sql"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*(\"?)(JAVASCRIPT|JS)(\\2)(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "source.js",
+ "end": "^(\\3)\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "name": "meta.embedded.js",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*(\"?)(JSON)(\\2)(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "source.json",
+ "end": "^(\\3)\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "name": "meta.embedded.json",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "source.json"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*(\"?)(CSS)(\\2)(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "source.css",
+ "end": "^(\\3)\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "name": "meta.embedded.css",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "source.css"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*(\"?)(REGEXP?)(\\2)(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "string.regexp.heredoc.php",
+ "end": "^(\\3)\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "match": "(\\\\){1,2}[.$^\\[\\]{}]",
+ "name": "constant.character.escape.regex.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arbitrary-repitition.php"
+ },
+ "3": {
+ "name": "punctuation.definition.arbitrary-repitition.php"
+ }
+ },
+ "match": "({)\\d+(,\\d+)?(})",
+ "name": "string.regexp.arbitrary-repitition.php"
+ },
+ {
+ "begin": "\\[(?:\\^?\\])?",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.character-class.php"
+ }
+ },
+ "end": "\\]",
+ "name": "string.regexp.character-class.php",
+ "patterns": [
+ {
+ "match": "\\\\[\\\\'\\[\\]]",
+ "name": "constant.character.escape.php"
+ }
+ ]
+ },
+ {
+ "match": "[$^+*]",
+ "name": "keyword.operator.regexp.php"
+ },
+ {
+ "begin": "(?i)(?<=^|\\s)(#)\\s(?=[[a-z0-9_\\x{7f}-\\x{ff},. \\t?!-][^\\x{00}-\\x{7f}]]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "end": "$",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "name": "comment.line.number-sign.php"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<<<)\\s*(\"?)([a-z_\\x{7f}-\\x{ff}]+[a-z0-9_\\x{7f}-\\x{ff}]*)(\\2)(\\s*)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "end": "^(\\3)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#interpolation"
+ }
+ ]
+ }
+ ]
+ },
+ "nowdoc_interior": {
+ "patterns": [
+ {
+ "begin": "(<<<)\\s*'(HTML)'(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "text.html",
+ "end": "^(\\2)\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ },
+ "name": "meta.embedded.html",
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*'(XML)'(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "text.xml",
+ "end": "^(\\2)\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ },
+ "name": "meta.embedded.xml",
+ "patterns": [
+ {
+ "include": "text.xml"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*'(SQL)'(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "source.sql",
+ "end": "^(\\2)\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ },
+ "name": "meta.embedded.sql",
+ "patterns": [
+ {
+ "include": "source.sql"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*'(JAVASCRIPT|JS)'(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "source.js",
+ "end": "^(\\2)\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ },
+ "name": "meta.embedded.js",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*'(JSON)'(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "source.json",
+ "end": "^(\\2)\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ },
+ "name": "meta.embedded.json",
+ "patterns": [
+ {
+ "include": "source.json"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*'(CSS)'(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "source.css",
+ "end": "^(\\2)\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ },
+ "name": "meta.embedded.css",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*'(REGEXP?)'(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "string.regexp.nowdoc.php",
+ "end": "^(\\2)\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(\\\\){1,2}[.$^\\[\\]{}]",
+ "name": "constant.character.escape.regex.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arbitrary-repitition.php"
+ },
+ "3": {
+ "name": "punctuation.definition.arbitrary-repitition.php"
+ }
+ },
+ "match": "({)\\d+(,\\d+)?(})",
+ "name": "string.regexp.arbitrary-repitition.php"
+ },
+ {
+ "begin": "\\[(?:\\^?\\])?",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.character-class.php"
+ }
+ },
+ "end": "\\]",
+ "name": "string.regexp.character-class.php",
+ "patterns": [
+ {
+ "match": "\\\\[\\\\'\\[\\]]",
+ "name": "constant.character.escape.php"
+ }
+ ]
+ },
+ {
+ "match": "[$^+*]",
+ "name": "keyword.operator.regexp.php"
+ },
+ {
+ "begin": "(?i)(?<=^|\\s)(#)\\s(?=[[a-z0-9_\\x{7f}-\\x{ff},. \\t?!-][^\\x{00}-\\x{7f}]]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "end": "$",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "name": "comment.line.number-sign.php"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<<<)\\s*'([a-z_\\x{7f}-\\x{ff}]+[a-z0-9_\\x{7f}-\\x{ff}]*)'(\\s*)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "end": "^(\\2)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ }
+ }
+ ]
+ },
+ "instantiation": {
+ "begin": "(?i)(new)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.new.php"
+ }
+ },
+ "end": "(?i)(?=[^a-z0-9_\\x{7f}-\\x{ff}\\\\])",
+ "patterns": [
+ {
+ "match": "(?i)(parent|static|self)(?![a-z0-9_\\x{7f}-\\x{ff}])",
+ "name": "storage.type.php"
+ },
+ {
+ "include": "#class-name"
+ },
+ {
+ "include": "#variable-name"
+ }
+ ]
+ },
+ "interpolation": {
+ "patterns": [
+ {
+ "match": "\\\\[0-7]{1,3}",
+ "name": "constant.character.escape.octal.php"
+ },
+ {
+ "match": "\\\\x[0-9A-Fa-f]{1,2}",
+ "name": "constant.character.escape.hex.php"
+ },
+ {
+ "match": "\\\\u{[0-9A-Fa-f]+}",
+ "name": "constant.character.escape.unicode.php"
+ },
+ {
+ "match": "\\\\[nrtvef$\"\\\\]",
+ "name": "constant.character.escape.php"
+ },
+ {
+ "begin": "{(?=\\$.*?})",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "include": "#variable-name"
+ }
+ ]
+ },
+ "invoke-call": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "2": {
+ "name": "variable.other.php"
+ }
+ },
+ "match": "(?i)(\\$+)([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)(?=\\s*\\()",
+ "name": "meta.function-call.invoke.php"
+ },
+ "language": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "(?i)^\\s*(interface)\\s+([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)\\s*(extends)?\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.interface.php"
+ },
+ "2": {
+ "name": "entity.name.type.interface.php"
+ },
+ "3": {
+ "name": "storage.modifier.extends.php"
+ }
+ },
+ "end": "(?i)((?:[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*\\s*,\\s*)*)([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)?\\s*(?:(?={)|$)",
+ "endCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",
+ "name": "entity.other.inherited-class.php"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.classes.php"
+ }
+ ]
+ },
+ "2": {
+ "name": "entity.other.inherited-class.php"
+ }
+ },
+ "name": "meta.interface.php",
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)^\\s*(trait)\\s+([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.trait.php"
+ },
+ "2": {
+ "name": "entity.name.type.trait.php"
+ }
+ },
+ "end": "(?={)",
+ "name": "meta.trait.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "match": "(?i)(?:^|(?<=<\\?php))\\s*(namespace)\\s+([a-z0-9_\\x{7f}-\\x{ff}\\\\]+)(?=\\s*;)",
+ "name": "meta.namespace.php",
+ "captures": {
+ "1": {
+ "name": "keyword.other.namespace.php"
+ },
+ "2": {
+ "name": "entity.name.type.namespace.php",
+ "patterns": [
+ {
+ "match": "\\\\",
+ "name": "punctuation.separator.inheritance.php"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "(?i)(?:^|(?<=<\\?php))\\s*(namespace)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.namespace.php"
+ }
+ },
+ "end": "(?<=})|(?=\\?>)",
+ "name": "meta.namespace.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "(?i)[a-z0-9_\\x{7f}-\\x{ff}\\\\]+",
+ "name": "entity.name.type.namespace.php",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "\\\\",
+ "name": "punctuation.separator.inheritance.php"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.namespace.begin.bracket.curly.php"
+ }
+ },
+ "end": "}|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.namespace.end.bracket.curly.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "match": "[^\\s]+",
+ "name": "invalid.illegal.identifier.php"
+ }
+ ]
+ },
+ {
+ "match": "\\s+(?=use\\b)"
+ },
+ {
+ "begin": "(?i)\\buse\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.use.php"
+ }
+ },
+ "end": "(?<=})|(?=;)",
+ "name": "meta.use.php",
+ "patterns": [
+ {
+ "match": "\\b(const|function)\\b",
+ "name": "storage.type.${1:/downcase}.php"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.use.begin.bracket.curly.php"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.use.end.bracket.curly.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#scope-resolution"
+ },
+ {
+ "match": "(?xi)\n\\b(as)\n\\s+(final|abstract|public|private|protected|static)\n\\s+([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)\n\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.use-as.php"
+ },
+ "2": {
+ "name": "storage.modifier.php"
+ },
+ "3": {
+ "name": "entity.other.alias.php"
+ }
+ }
+ },
+ {
+ "match": "(?xi)\n\\b(as)\n\\s+([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)\n\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.use-as.php"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "^(?:final|abstract|public|private|protected|static)$",
+ "name": "storage.modifier.php"
+ },
+ {
+ "match": ".+",
+ "name": "entity.other.alias.php"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(insteadof)\\s+([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.use-insteadof.php"
+ },
+ "2": {
+ "name": "support.class.php"
+ }
+ }
+ },
+ {
+ "match": ";",
+ "name": "punctuation.terminator.expression.php"
+ },
+ {
+ "include": "#use-inner"
+ }
+ ]
+ },
+ {
+ "include": "#use-inner"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)^\\s*(?:(abstract|final)\\s+)?(class)\\s+([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.${1:/downcase}.php"
+ },
+ "2": {
+ "name": "storage.type.class.php"
+ },
+ "3": {
+ "name": "entity.name.type.class.php"
+ }
+ },
+ "end": "}|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.class.end.bracket.curly.php"
+ }
+ },
+ "name": "meta.class.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "(?i)(extends)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.extends.php"
+ }
+ },
+ "contentName": "meta.other.inherited-class.php",
+ "end": "(?i)(?=[^a-z0-9_\\x{7f}-\\x{ff}\\\\])",
+ "patterns": [
+ {
+ "begin": "(?i)(?=\\\\?[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*\\\\)",
+ "end": "(?i)([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)?(?=[^a-z0-9_\\x{7f}-\\x{ff}\\\\])",
+ "endCaptures": {
+ "1": {
+ "name": "entity.other.inherited-class.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ },
+ {
+ "include": "#class-builtin"
+ },
+ {
+ "include": "#namespace"
+ },
+ {
+ "match": "(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",
+ "name": "entity.other.inherited-class.php"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(implements)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.implements.php"
+ }
+ },
+ "end": "(?i)(?=[;{])",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "(?i)(?=[a-z0-9_\\x{7f}-\\x{ff}\\\\]+)",
+ "contentName": "meta.other.inherited-class.php",
+ "end": "(?i)(?:\\s*(?:,|(?=[^a-z0-9_\\x{7f}-\\x{ff}\\\\\\s]))\\s*)",
+ "patterns": [
+ {
+ "begin": "(?i)(?=\\\\?[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*\\\\)",
+ "end": "(?i)([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)?(?=[^a-z0-9_\\x{7f}-\\x{ff}\\\\])",
+ "endCaptures": {
+ "1": {
+ "name": "entity.other.inherited-class.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ },
+ {
+ "include": "#class-builtin"
+ },
+ {
+ "include": "#namespace"
+ },
+ {
+ "match": "(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",
+ "name": "entity.other.inherited-class.php"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.class.begin.bracket.curly.php"
+ }
+ },
+ "end": "(?=}|\\?>)",
+ "contentName": "meta.class.body.php",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#switch_statement"
+ },
+ {
+ "match": "(?x)\n\\s*\n\\b(\n break|case|continue|declare|default|die|do|\n else(if)?|end(declare|for(each)?|if|switch|while)|exit|\n for(each)?|if|return|switch|use|while|yield\n)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.${1:/downcase}.php"
+ }
+ }
+ },
+ {
+ "begin": "(?i)\\b((?:require|include)(?:_once)?)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.import.include.php"
+ }
+ },
+ "end": "(?=\\s|;|$|\\?>)",
+ "name": "meta.include.php",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(catch)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.exception.catch.php"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
+ }
+ },
+ "name": "meta.catch.php",
+ "patterns": [
+ {
+ "include": "#namespace"
+ },
+ {
+ "match": "(?xi)\n([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) # Exception class\n((?:\\s*\\|\\s*[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)*) # Optional additional exception classes\n\\s*\n((\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) # Variable",
+ "captures": {
+ "1": {
+ "name": "support.class.exception.php"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",
+ "name": "support.class.exception.php"
+ },
+ {
+ "match": "\\|",
+ "name": "punctuation.separator.delimiter.php"
+ }
+ ]
+ },
+ "3": {
+ "name": "variable.other.php"
+ },
+ "4": {
+ "name": "punctuation.definition.variable.php"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "match": "\\b(catch|try|throw|exception|finally)\\b",
+ "name": "keyword.control.exception.php"
+ },
+ {
+ "begin": "(?i)\\b(function)\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.php"
+ }
+ },
+ "end": "(?={)",
+ "name": "meta.function.closure.php",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
+ }
+ },
+ "contentName": "meta.function.parameters.php",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-parameters"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(use)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.function.use.php"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
+ }
+ },
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "variable.other.php"
+ },
+ "2": {
+ "name": "storage.modifier.reference.php"
+ },
+ "3": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(?i)((&)?\\s*(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)\\s*(?=,|\\))",
+ "name": "meta.function.closure.use.php"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n((?:(?:final|abstract|public|private|protected|static)\\s+)*)\n(function)\\s+\n(?i:\n (__(?:call|construct|debugInfo|destruct|get|set|isset|unset|tostring|\n clone|set_state|sleep|wakeup|autoload|invoke|callStatic))\n |([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "final|abstract|public|private|protected|static",
+ "name": "storage.modifier.php"
+ }
+ ]
+ },
+ "2": {
+ "name": "storage.type.function.php"
+ },
+ "3": {
+ "name": "support.function.magic.php"
+ },
+ "4": {
+ "name": "entity.name.function.php"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
+ }
+ },
+ "contentName": "meta.function.parameters.php",
+ "end": "(\\))(?:\\s*(:)\\s*([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*))?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
+ },
+ "2": {
+ "name": "keyword.operator.return-value.php"
+ },
+ "3": {
+ "name": "storage.type.php"
+ }
+ },
+ "name": "meta.function.php",
+ "patterns": [
+ {
+ "include": "#function-parameters"
+ }
+ ]
+ },
+ {
+ "include": "#invoke-call"
+ },
+ {
+ "include": "#scope-resolution"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.construct.php"
+ },
+ "2": {
+ "name": "punctuation.definition.array.begin.bracket.round.php"
+ },
+ "3": {
+ "name": "punctuation.definition.array.end.bracket.round.php"
+ }
+ },
+ "match": "(array)(\\()(\\))",
+ "name": "meta.array.empty.php"
+ },
+ {
+ "begin": "(array)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.construct.php"
+ },
+ "2": {
+ "name": "punctuation.definition.array.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.end.bracket.round.php"
+ }
+ },
+ "name": "meta.array.php",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "match": "(?i)(\\()\\s*(array|real|double|float|int(?:eger)?|bool(?:ean)?|string|object|binary|unset)\\s*(\\))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.storage-type.begin.bracket.round.php"
+ },
+ "2": {
+ "name": "storage.type.php"
+ },
+ "3": {
+ "name": "punctuation.definition.storage-type.end.bracket.round.php"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(array|real|double|float|int(eger)?|bool(ean)?|string|class|var|function|interface|trait|parent|self|object)\\b",
+ "name": "storage.type.php"
+ },
+ {
+ "match": "(?i)\\b(global|abstract|const|extends|implements|final|private|protected|public|static)\\b",
+ "name": "storage.modifier.php"
+ },
+ {
+ "include": "#object"
+ },
+ {
+ "match": ";",
+ "name": "punctuation.terminator.expression.php"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.terminator.statement.php"
+ },
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "match": "(?i)\\bclone\\b",
+ "name": "keyword.other.clone.php"
+ },
+ {
+ "match": "\\.=?",
+ "name": "keyword.operator.string.php"
+ },
+ {
+ "match": "=>",
+ "name": "keyword.operator.key.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.php"
+ },
+ "2": {
+ "name": "storage.modifier.reference.php"
+ },
+ "3": {
+ "name": "storage.modifier.reference.php"
+ }
+ },
+ "match": "(?i)(\\=)(&)|(&)(?=[$a-z_])"
+ },
+ {
+ "match": "@",
+ "name": "keyword.operator.error-control.php"
+ },
+ {
+ "match": "===|==|!==|!=|<>",
+ "name": "keyword.operator.comparison.php"
+ },
+ {
+ "match": "=|\\+=|\\-=|\\*=|/=|%=|&=|\\|=|\\^=|<<=|>>=",
+ "name": "keyword.operator.assignment.php"
+ },
+ {
+ "match": "<=>|<=|>=|<|>",
+ "name": "keyword.operator.comparison.php"
+ },
+ {
+ "match": "\\-\\-|\\+\\+",
+ "name": "keyword.operator.increment-decrement.php"
+ },
+ {
+ "match": "\\-|\\+|\\*|/|%",
+ "name": "keyword.operator.arithmetic.php"
+ },
+ {
+ "match": "(?i)(!|&&|\\|\\|)|\\b(and|or|xor|as)\\b",
+ "name": "keyword.operator.logical.php"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "match": "<<|>>|~|\\^|&|\\|",
+ "name": "keyword.operator.bitwise.php"
+ },
+ {
+ "begin": "(?i)\\b(instanceof)\\s+(?=[\\\\$a-z_])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.php"
+ }
+ },
+ "end": "(?=[^\\\\$a-z0-9_\\x{7f}-\\x{ff}])",
+ "patterns": [
+ {
+ "include": "#class-name"
+ },
+ {
+ "include": "#variable-name"
+ }
+ ]
+ },
+ {
+ "include": "#instantiation"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.goto.php"
+ },
+ "2": {
+ "name": "support.other.php"
+ }
+ },
+ "match": "(?i)(goto)\\s+([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.name.goto-label.php"
+ }
+ },
+ "match": "(?i)^\\s*([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)\\s*:(?!:)"
+ },
+ {
+ "include": "#string-backtick"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.begin.bracket.curly.php"
+ }
+ },
+ "end": "}|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.curly.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.php"
+ }
+ },
+ "end": "\\]|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.round.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.php"
+ }
+ ]
+ },
+ "namespace": {
+ "begin": "(?i)(?:(namespace)|[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)?(\\\\)(?=.*?[^a-z0-9_\\x{7f}-\\x{ff}\\\\])",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.language.namespace.php"
+ },
+ "2": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ },
+ "end": "(?i)(?=[a-z0-9_\\x{7f}-\\x{ff}]*[^a-z0-9_\\x{7f}-\\x{ff}\\\\])",
+ "name": "support.other.namespace.php",
+ "patterns": [
+ {
+ "match": "\\\\",
+ "name": "punctuation.separator.inheritance.php"
+ }
+ ]
+ },
+ "numbers": {
+ "patterns": [
+ {
+ "match": "0[xX][0-9a-fA-F]+",
+ "name": "constant.numeric.hex.php"
+ },
+ {
+ "match": "0[bB][01]+",
+ "name": "constant.numeric.binary.php"
+ },
+ {
+ "match": "0[0-7]+",
+ "name": "constant.numeric.octal.php"
+ },
+ {
+ "match": "(?x)\n(?:\n [0-9]*(\\.)[0-9]+(?:[eE][+-]?[0-9]+)?|\n [0-9]+(\\.)[0-9]*(?:[eE][+-]?[0-9]+)?|\n [0-9]+[eE][+-]?[0-9]+\n)",
+ "name": "constant.numeric.decimal.php",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.decimal.period.php"
+ },
+ "2": {
+ "name": "punctuation.separator.decimal.period.php"
+ }
+ }
+ },
+ {
+ "match": "0|[1-9][0-9]*",
+ "name": "constant.numeric.decimal.php"
+ }
+ ]
+ },
+ "object": {
+ "patterns": [
+ {
+ "begin": "(->)(\\$?{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(->)([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "entity.name.function.php"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
+ }
+ },
+ "name": "meta.method-call.php",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "variable.other.property.php"
+ },
+ "3": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(?i)(->)((\\$+)?[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)?"
+ }
+ ]
+ },
+ "parameter-default-types": {
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#string-backtick"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "match": "=>",
+ "name": "keyword.operator.key.php"
+ },
+ {
+ "match": "=",
+ "name": "keyword.operator.assignment.php"
+ },
+ {
+ "match": "&(?=\\s*\\$)",
+ "name": "storage.modifier.reference.php"
+ },
+ {
+ "begin": "(array)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.construct.php"
+ },
+ "2": {
+ "name": "punctuation.definition.array.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.end.bracket.round.php"
+ }
+ },
+ "name": "meta.array.php",
+ "patterns": [
+ {
+ "include": "#parameter-default-types"
+ }
+ ]
+ },
+ {
+ "include": "#instantiation"
+ },
+ {
+ "begin": "(?xi)\n(?=[a-z0-9_\\x{7f}-\\x{ff}\\\\]+(::)\n ([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)?\n)",
+ "end": "(?i)(::)([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)?",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "constant.other.class.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#class-name"
+ }
+ ]
+ },
+ {
+ "include": "#constants"
+ }
+ ]
+ },
+ "php_doc": {
+ "patterns": [
+ {
+ "match": "^(?!\\s*\\*).*?(?:(?=\\*\\/)|$\\n?)",
+ "name": "invalid.illegal.missing-asterisk.phpdoc.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.phpdoc.php"
+ },
+ "3": {
+ "name": "storage.modifier.php"
+ },
+ "4": {
+ "name": "invalid.illegal.wrong-access-type.phpdoc.php"
+ }
+ },
+ "match": "^\\s*\\*\\s*(@access)\\s+((public|private|protected)|(.+))\\s*$"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.phpdoc.php"
+ },
+ "2": {
+ "name": "markup.underline.link.php"
+ }
+ },
+ "match": "(@xlink)\\s+(.+)\\s*$"
+ },
+ {
+ "begin": "(@(?:global|param|property(-(read|write))?|return|throws|var))\\s+(?=[A-Za-z_\\x{7f}-\\x{ff}\\\\]|\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.phpdoc.php"
+ }
+ },
+ "end": "(?=\\s|\\*/)",
+ "contentName": "meta.other.type.phpdoc.php",
+ "patterns": [
+ {
+ "include": "#php_doc_types_array_multiple"
+ },
+ {
+ "include": "#php_doc_types_array_single"
+ },
+ {
+ "include": "#php_doc_types"
+ }
+ ]
+ },
+ {
+ "match": "(?x)\n@\n(\n api|abstract|author|category|copyright|example|global|inherit[Dd]oc|internal|\n license|link|method|property(-(read|write))?|package|param|return|see|since|source|\n static|subpackage|throws|todo|var|version|uses|deprecated|final|ignore\n)\\b",
+ "name": "keyword.other.phpdoc.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.phpdoc.php"
+ }
+ },
+ "match": "{(@(link|inherit[Dd]oc)).+?}",
+ "name": "meta.tag.inline.phpdoc.php"
+ }
+ ]
+ },
+ "php_doc_types": {
+ "match": "(?i)[a-z_\\x{7f}-\\x{ff}\\\\][a-z0-9_\\x{7f}-\\x{ff}\\\\]*(\\|[a-z_\\x{7f}-\\x{ff}\\\\][a-z0-9_\\x{7f}-\\x{ff}\\\\]*)*",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "(?x)\\b\n(string|integer|int|boolean|bool|float|double|object|mixed\n|array|resource|void|null|callback|false|true|self)\\b",
+ "name": "keyword.other.type.php"
+ },
+ {
+ "include": "#class-name"
+ },
+ {
+ "match": "\\|",
+ "name": "punctuation.separator.delimiter.php"
+ }
+ ]
+ }
+ }
+ },
+ "php_doc_types_array_multiple": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.type.begin.bracket.round.phpdoc.php"
+ }
+ },
+ "end": "(\\))(\\[\\])|(?=\\*/)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.type.end.bracket.round.phpdoc.php"
+ },
+ "2": {
+ "name": "keyword.other.array.phpdoc.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#php_doc_types_array_multiple"
+ },
+ {
+ "include": "#php_doc_types_array_single"
+ },
+ {
+ "include": "#php_doc_types"
+ },
+ {
+ "match": "\\|",
+ "name": "punctuation.separator.delimiter.php"
+ }
+ ]
+ },
+ "php_doc_types_array_single": {
+ "match": "(?i)([a-z_\\x{7f}-\\x{ff}\\\\][a-z0-9_\\x{7f}-\\x{ff}\\\\]*)(\\[\\])",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#php_doc_types"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.other.array.phpdoc.php"
+ }
+ }
+ },
+ "regex-double-quoted": {
+ "begin": "\"/(?=(\\\\.|[^\"/])++/[imsxeADSUXu]*\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "end": "(/)([imsxeADSUXu]*)(\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.regexp.double-quoted.php",
+ "patterns": [
+ {
+ "match": "(\\\\){1,2}[.$^\\[\\]{}]",
+ "name": "constant.character.escape.regex.php"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arbitrary-repetition.php"
+ },
+ "3": {
+ "name": "punctuation.definition.arbitrary-repetition.php"
+ }
+ },
+ "match": "({)\\d+(,\\d+)?(})",
+ "name": "string.regexp.arbitrary-repetition.php"
+ },
+ {
+ "begin": "\\[(?:\\^?\\])?",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.character-class.php"
+ }
+ },
+ "end": "\\]",
+ "name": "string.regexp.character-class.php",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "match": "[$^+*]",
+ "name": "keyword.operator.regexp.php"
+ }
+ ]
+ },
+ "regex-single-quoted": {
+ "begin": "'/(?=(\\\\(?:\\\\(?:\\\\[\\\\']?|[^'])|.)|[^'/])++/[imsxeADSUXu]*')",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "end": "(/)([imsxeADSUXu]*)(')",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.regexp.single-quoted.php",
+ "patterns": [
+ {
+ "include": "#single_quote_regex_escape"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arbitrary-repetition.php"
+ },
+ "3": {
+ "name": "punctuation.definition.arbitrary-repetition.php"
+ }
+ },
+ "match": "({)\\d+(,\\d+)?(})",
+ "name": "string.regexp.arbitrary-repetition.php"
+ },
+ {
+ "begin": "\\[(?:\\^?\\])?",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.character-class.php"
+ }
+ },
+ "end": "\\]",
+ "name": "string.regexp.character-class.php"
+ },
+ {
+ "match": "[$^+*]",
+ "name": "keyword.operator.regexp.php"
+ }
+ ]
+ },
+ "scope-resolution": {
+ "patterns": [
+ {
+ "match": "(?i)\\b([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)(?=\\s*::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "\\b(self|static|parent)\\b",
+ "name": "storage.type.php"
+ },
+ {
+ "match": "\\w+",
+ "name": "entity.name.class.php"
+ },
+ {
+ "include": "#class-name"
+ },
+ {
+ "include": "#variable-name"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "(?i)(::)\\s*([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "entity.name.function.php"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
+ }
+ },
+ "name": "meta.method-call.static.php",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "match": "(?i)(::)\\s*(class)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "keyword.other.class.php"
+ }
+ }
+ },
+ {
+ "match": "(?xi)\n(::)\\s*\n(?:\n ((\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) # Variable\n |\n ([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) # Constant\n)?",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "variable.other.class.php"
+ },
+ "3": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "4": {
+ "name": "constant.other.class.php"
+ }
+ }
+ }
+ ]
+ },
+ "single_quote_regex_escape": {
+ "match": "\\\\(?:\\\\(?:\\\\[\\\\']?|[^'])|.)",
+ "name": "constant.character.escape.php"
+ },
+ "sql-string-double-quoted": {
+ "begin": "\"\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "contentName": "source.sql.embedded.php",
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.quoted.double.sql.php",
+ "patterns": [
+ {
+ "match": "(#)(\\\\\"|[^\"])*(?=\"|$)",
+ "name": "comment.line.number-sign.sql",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.sql"
+ }
+ }
+ },
+ {
+ "match": "(--)(\\\\\"|[^\"])*(?=\"|$)",
+ "name": "comment.line.double-dash.sql",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.sql"
+ }
+ }
+ },
+ {
+ "match": "\\\\[\\\\\"`']",
+ "name": "constant.character.escape.php"
+ },
+ {
+ "match": "'(?=((\\\\')|[^'\"])*(\"|$))",
+ "name": "string.quoted.single.unclosed.sql"
+ },
+ {
+ "match": "`(?=((\\\\`)|[^`\"])*(\"|$))",
+ "name": "string.quoted.other.backtick.unclosed.sql"
+ },
+ {
+ "begin": "'",
+ "end": "'",
+ "name": "string.quoted.single.sql",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "`",
+ "end": "`",
+ "name": "string.quoted.other.backtick.sql",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "source.sql"
+ }
+ ]
+ },
+ "sql-string-single-quoted": {
+ "begin": "'\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "contentName": "source.sql.embedded.php",
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.quoted.single.sql.php",
+ "patterns": [
+ {
+ "match": "(#)(\\\\'|[^'])*(?='|$)",
+ "name": "comment.line.number-sign.sql",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.sql"
+ }
+ }
+ },
+ {
+ "match": "(--)(\\\\'|[^'])*(?='|$)",
+ "name": "comment.line.double-dash.sql",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.sql"
+ }
+ }
+ },
+ {
+ "match": "\\\\[\\\\'`\"]",
+ "name": "constant.character.escape.php"
+ },
+ {
+ "match": "`(?=((\\\\`)|[^`'])*('|$))",
+ "name": "string.quoted.other.backtick.unclosed.sql"
+ },
+ {
+ "match": "\"(?=((\\\\\")|[^\"'])*('|$))",
+ "name": "string.quoted.double.unclosed.sql"
+ },
+ {
+ "include": "source.sql"
+ }
+ ]
+ },
+ "string-backtick": {
+ "begin": "`",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.interpolated.php",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.php"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ "string-double-quoted": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.quoted.double.php",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ "string-single-quoted": {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.quoted.single.php",
+ "patterns": [
+ {
+ "match": "\\\\[\\\\']",
+ "name": "constant.character.escape.php"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "include": "#regex-double-quoted"
+ },
+ {
+ "include": "#sql-string-double-quoted"
+ },
+ {
+ "include": "#string-double-quoted"
+ },
+ {
+ "include": "#regex-single-quoted"
+ },
+ {
+ "include": "#sql-string-single-quoted"
+ },
+ {
+ "include": "#string-single-quoted"
+ }
+ ]
+ },
+ "support": {
+ "patterns": [
+ {
+ "match": "(?xi)\n\\b\napc_(\n store|sma_info|compile_file|clear_cache|cas|cache_info|inc|dec|define_constants|delete(_file)?|\n exists|fetch|load_constants|add|bin_(dump|load)(file)?\n)\\b",
+ "name": "support.function.apc.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n shuffle|sizeof|sort|next|nat(case)?sort|count|compact|current|in_array|usort|uksort|uasort|\n pos|prev|end|each|extract|ksort|key(_exists)?|krsort|list|asort|arsort|rsort|reset|range|\n array(_(shift|sum|splice|search|slice|chunk|change_key_case|count_values|column|combine|\n (diff|intersect)(_(u)?(key|assoc))?|u(diff|intersect)(_(u)?assoc)?|unshift|unique|\n pop|push|pad|product|values|keys|key_exists|filter|fill(_keys)?|flip|walk(_recursive)?|\n reduce|replace(_recursive)?|reverse|rand|multisort|merge(_recursive)?|map)?)\n)\\b",
+ "name": "support.function.array.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n show_source|sys_getloadavg|sleep|highlight_(file|string)|constant|connection_(aborted|status)|\n time_(nanosleep|sleep_until)|ignore_user_abort|die|define(d)?|usleep|uniqid|unpack|__halt_compiler|\n php_(check_syntax|strip_whitespace)|pack|eval|exit|get_browser\n)\\b",
+ "name": "support.function.basic_functions.php"
+ },
+ {
+ "match": "(?i)\\bbc(scale|sub|sqrt|comp|div|pow(mod)?|add|mod|mul)\\b",
+ "name": "support.function.bcmath.php"
+ },
+ {
+ "match": "(?i)\\bblenc_encrypt\\b",
+ "name": "support.function.blenc.php"
+ },
+ {
+ "match": "(?i)\\bbz(compress|close|open|decompress|errstr|errno|error|flush|write|read)\\b",
+ "name": "support.function.bz2.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n (French|Gregorian|Jewish|Julian)ToJD|cal_(to_jd|info|days_in_month|from_jd)|unixtojd|\n jdto(unix|jewish)|easter_(date|days)|JD(MonthName|To(Gregorian|Julian|French)|DayOfWeek)\n)\\b",
+ "name": "support.function.calendar.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n class_alias|all_user_method(_array)?|is_(a|subclass_of)|__autoload|(class|interface|method|property|trait)_exists|\n get_(class(_(vars|methods))?|(called|parent)_class|object_vars|declared_(classes|interfaces|traits))\n)\\b",
+ "name": "support.function.classobj.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n com_(create_guid|print_typeinfo|event_sink|load_typelib|get_active_object|message_pump)|\n variant_(sub|set(_type)?|not|neg|cast|cat|cmp|int|idiv|imp|or|div|date_(from|to)_timestamp|\n pow|eqv|fix|and|add|abs|round|get_type|xor|mod|mul)\n)\\b",
+ "name": "support.function.com.php"
+ },
+ {
+ "begin": "(?i)\\b(isset|unset|eval|empty|list)\\b",
+ "name": "support.function.construct.php"
+ },
+ {
+ "match": "(?i)\\b(print|echo)\\b",
+ "name": "support.function.construct.output.php"
+ },
+ {
+ "match": "(?i)\\bctype_(space|cntrl|digit|upper|punct|print|lower|alnum|alpha|graph|xdigit)\\b",
+ "name": "support.function.ctype.php"
+ },
+ {
+ "match": "(?xi)\\b\ncurl_(\n share_(close|init|setopt)|strerror|setopt(_array)?|copy_handle|close|init|unescape|pause|escape|\n errno|error|exec|version|file_create|reset|getinfo|\n multi_(strerror|setopt|select|close|init|info_read|(add|remove)_handle|getcontent|exec)\n)\\b",
+ "name": "support.function.curl.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n strtotime|str[fp]time|checkdate|time|timezone_name_(from_abbr|get)|idate|\n timezone_((location|offset|transitions|version)_get|(abbreviations|identifiers)_list|open)|\n date(_(sun(rise|set)|sun_info|sub|create(_(immutable_)?from_format)?|timestamp_(get|set)|timezone_(get|set)|time_set|\n isodate_set|interval_(create_from_date_string|format)|offset_get|diff|default_timezone_(get|set)|date_set|\n parse(_from_format)?|format|add|get_last_errors|modify))?|\n localtime|get(date|timeofday)|gm(strftime|date|mktime)|microtime|mktime\n)\\b",
+ "name": "support.function.datetime.php"
+ },
+ {
+ "match": "(?i)\\bdba_(sync|handlers|nextkey|close|insert|optimize|open|delete|popen|exists|key_split|firstkey|fetch|list|replace)\\b",
+ "name": "support.function.dba.php"
+ },
+ {
+ "match": "(?i)\\bdbx_(sort|connect|compare|close|escape_string|error|query|fetch_row)\\b",
+ "name": "support.function.dbx.php"
+ },
+ {
+ "match": "(?i)\\b(scandir|chdir|chroot|closedir|opendir|dir|rewinddir|readdir|getcwd)\\b",
+ "name": "support.function.dir.php"
+ },
+ {
+ "match": "(?xi)\\b\neio_(\n sync(fs)?|sync_file_range|symlink|stat(vfs)?|sendfile|set_min_parallel|set_max_(idle|poll_(reqs|time)|parallel)|\n seek|n(threads|op|pending|reqs|ready)|chown|chmod|custom|close|cancel|truncate|init|open|dup2|unlink|utime|poll|\n event_loop|f(sync|stat(vfs)?|chown|chmod|truncate|datasync|utime|allocate)|write|lstat|link|rename|realpath|\n read(ahead|dir|link)?|rmdir|get_(event_stream|last_error)|grp(_(add|cancel|limit))?|mknod|mkdir|busy\n)\\b",
+ "name": "support.function.eio.php"
+ },
+ {
+ "match": "(?xi)\\b\nenchant_(\n dict_(store_replacement|suggest|check|is_in_session|describe|quick_check|add_to_(personal|session)|get_error)|\n broker_(set_ordering|init|dict_exists|describe|free(_dict)?|list_dicts|request_(pwl_)?dict|get_error)\n)\\b",
+ "name": "support.function.enchant.php"
+ },
+ {
+ "match": "(?i)\\bsplit(i)?|sql_regcase|ereg(i)?(_replace)?\\b",
+ "name": "support.function.ereg.php"
+ },
+ {
+ "match": "(?i)\\b((restore|set)_(error_handler|exception_handler)|trigger_error|debug_(print_)?backtrace|user_error|error_(log|reporting|get_last))\\b",
+ "name": "support.function.errorfunc.php"
+ },
+ {
+ "match": "(?i)\\bshell_exec|system|passthru|proc_(nice|close|terminate|open|get_status)|escapeshell(arg|cmd)|exec\\b",
+ "name": "support.function.exec.php"
+ },
+ {
+ "match": "(?i)\\b(exif_(thumbnail|tagname|imagetype|read_data)|read_exif_data)\\b",
+ "name": "support.function.exif.php"
+ },
+ {
+ "match": "(?xi)\\b\nfann_(\n (duplicate|length|merge|shuffle|subset)_train_data|scale_(train(_data)?|(input|output)(_train_data)?)|\n set_(scaling_params|sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|\n cascade_(num_candidate_groups|candidate_(change_fraction|limit|stagnation_epochs)|\n output_(change_fraction|stagnation_epochs)|weight_multiplier|activation_(functions|steepnesses)|\n (max|min)_(cand|out)_epochs)|\n callback|training_algorithm|train_(error|stop)_function|(input|output)_scaling_params|error_log|\n quickprop_(decay|mu)|weight(_array)?|learning_(momentum|rate)|bit_fail_limit|\n activation_(function|steepness)(_(hidden|layer|output))?|\n rprop_((decrease|increase)_factor|delta_(max|min|zero)))|\n save(_train)?|num_(input|output)_train_data|copy|clear_scaling_params|cascadetrain_on_(file|data)|\n create_((sparse|shortcut|standard)(_array)?|train(_from_callback)?|from_file)|\n test(_data)?|train(_(on_(file|data)|epoch))?|init_weights|descale_(input|output|train)|destroy(_train)?|\n print_error|run|reset_(MSE|err(no|str))|read_train_from_file|randomize_weights|\n get_(sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|num_(input|output|layers)|\n network_type|MSE|connection_(array|rate)|bias_array|bit_fail(_limit)?|\n cascade_(num_(candidates|candidate_groups)|(candidate|output)_(change_fraction|limit|stagnation_epochs)|\n weight_multiplier|activation_(functions|steepnesses)(_count)?|(max|min)_(cand|out)_epochs)|\n total_(connections|neurons)|training_algorithm|train_(error|stop)_function|err(no|str)|\n quickprop_(decay|mu)|learning_(momentum|rate)|layer_array|activation_(function|steepness)|\n rprop_((decrease|increase)_factor|delta_(max|min|zero)))\n)\\b",
+ "name": "support.function.fann.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n symlink|stat|set_file_buffer|chown|chgrp|chmod|copy|clearstatcache|touch|tempnam|tmpfile|\n is_(dir|(uploaded_)?file|executable|link|readable|writ(e)?able)|disk_(free|total)_space|diskfreespace|\n dirname|delete|unlink|umask|pclose|popen|pathinfo|parse_ini_(file|string)|fscanf|fstat|fseek|fnmatch|\n fclose|ftell|ftruncate|file(size|[acm]time|type|inode|owner|perms|group)?|file_(exists|(get|put)_contents)|\n f(open|puts|putcsv|passthru|eof|flush|write|lock|read|gets(s)?|getc(sv)?)|lstat|lchown|lchgrp|link(info)?|\n rename|rewind|read(file|link)|realpath(_cache_(get|size))?|rmdir|glob|move_uploaded_file|mkdir|basename\n)\\b",
+ "name": "support.function.file.php"
+ },
+ {
+ "match": "(?i)\\b(finfo_(set_flags|close|open|file|buffer)|mime_content_type)\\b",
+ "name": "support.function.fileinfo.php"
+ },
+ {
+ "match": "(?i)\\bfilter_(has_var|input(_array)?|id|var(_array)?|list)\\b",
+ "name": "support.function.filter.php"
+ },
+ {
+ "match": "(?i)\\bfastcgi_finish_request\\b",
+ "name": "support.function.fpm.php"
+ },
+ {
+ "match": "(?i)\\b(call_user_(func|method)(_array)?|create_function|unregister_tick_function|forward_static_call(_array)?|function_exists|func_(num_args|get_arg(s)?)|register_(shutdown|tick)_function|get_defined_functions)\\b",
+ "name": "support.function.funchand.php"
+ },
+ {
+ "match": "(?i)\\b((n)?gettext|textdomain|d((n)?gettext|c(n)?gettext)|bind(textdomain|_textdomain_codeset))\\b",
+ "name": "support.function.gettext.php"
+ },
+ {
+ "match": "(?xi)\\b\ngmp_(\n scan[01]|strval|sign|sub|setbit|sqrt(rem)?|hamdist|neg|nextprime|com|clrbit|cmp|testbit|\n intval|init|invert|import|or|div(exact)?|div_(q|qr|r)|jacobi|popcount|pow(m)?|perfect_square|\n prob_prime|export|fact|legendre|and|add|abs|root(rem)?|random(_(bits|range))?|gcd(ext)?|xor|mod|mul\n)\\b",
+ "name": "support.function.gmp.php"
+ },
+ {
+ "match": "(?i)\\bhash(_(hmac(_file)?|copy|init|update(_(file|stream))?|pbkdf2|equals|file|final|algos))?\\b",
+ "name": "support.function.hash.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n http_(support|send_(status|stream|content_(disposition|type)|data|file|last_modified)|head|\n negotiate_(charset|content_type|language)|chunked_decode|cache_(etag|last_modified)|throttle|\n inflate|deflate|date|post_(data|fields)|put_(data|file|stream)|persistent_handles_(count|clean|ident)|\n parse_(cookie|headers|message|params)|redirect|request(_(method_(exists|name|(un)?register)|body_encode))?|\n get(_request_(headers|body(_stream)?))?|match_(etag|modified|request_header)|build_(cookie|str|url))|\n ob_(etag|deflate|inflate)handler\n)\\b",
+ "name": "support.function.http.php"
+ },
+ {
+ "match": "(?i)\\b(iconv(_(str(pos|len|rpos)|substr|(get|set)_encoding|mime_(decode(_headers)?|encode)))?|ob_iconv_handler)\\b",
+ "name": "support.function.iconv.php"
+ },
+ {
+ "match": "(?i)\\biis_((start|stop)_(service|server)|set_(script_map|server_rights|dir_security|app_settings)|(add|remove)_server|get_(script_map|service_state|server_(rights|by_(comment|path))|dir_security))\\b",
+ "name": "support.function.iisfunc.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n iptc(embed|parse)|(jpeg|png)2wbmp|gd_info|getimagesize(fromstring)?|\n image(s[xy]|scale|(char|string)(up)?|set(style|thickness|tile|interpolation|pixel|brush)|savealpha|\n convolution|copy(resampled|resized|merge(gray)?)?|colors(forindex|total)|\n color(set|closest(alpha|hwb)?|transparent|deallocate|(allocate|exact|resolve)(alpha)?|at|match)|\n crop(auto)?|create(truecolor|from(string|jpeg|png|wbmp|webp|gif|gd(2(part)?)?|xpm|xbm))?|\n types|ttf(bbox|text)|truecolortopalette|istruecolor|interlace|2wbmp|destroy|dashedline|jpeg|\n _type_to_(extension|mime_type)|ps(slantfont|text|(encode|extend|free|load)font|bbox)|png|polygon|\n palette(copy|totruecolor)|ellipse|ft(text|bbox)|filter|fill|filltoborder|\n filled(arc|ellipse|polygon|rectangle)|font(height|width)|flip|webp|wbmp|line|loadfont|layereffect|\n antialias|affine(matrix(concat|get))?|alphablending|arc|rotate|rectangle|gif|gd(2)?|gammacorrect|\n grab(screen|window)|xbm)\n)\\b",
+ "name": "support.function.image.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n sys_get_temp_dir|set_(time_limit|include_path|magic_quotes_runtime)|cli_(get|set)_process_title|\n ini_(alter|get(_all)?|restore|set)|zend_(thread_id|version|logo_guid)|dl|php(credits|info|version)|\n php_(sapi_name|ini_(scanned_files|loaded_file)|uname|logo_guid)|putenv|extension_loaded|version_compare|\n assert(_options)?|restore_include_path|gc_(collect_cycles|disable|enable(d)?)|getopt|\n get_(cfg_var|current_user|defined_constants|extension_funcs|include_path|included_files|loaded_extensions|\n magic_quotes_(gpc|runtime)|required_files|resources)|\n get(env|lastmod|rusage|my(inode|[gup]id))|\n memory_get_(peak_)?usage|main|magic_quotes_runtime\n)\\b",
+ "name": "support.function.info.php"
+ },
+ {
+ "match": "(?xi)\\b\nibase_(\n set_event_handler|service_(attach|detach)|server_info|num_(fields|params)|name_result|connect|\n commit(_ret)?|close|trans|delete_user|drop_db|db_info|pconnect|param_info|prepare|err(code|msg)|\n execute|query|field_info|fetch_(assoc|object|row)|free_(event_handler|query|result)|wait_event|\n add_user|affected_rows|rollback(_ret)?|restore|gen_id|modify_user|maintain_db|backup|\n blob_(cancel|close|create|import|info|open|echo|add|get)\n)\\b",
+ "name": "support.function.interbase.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n normalizer_(normalize|is_normalized)|idn_to_(unicode|utf8|ascii)|\n numfmt_(set_(symbol|(text_)?attribute|pattern)|create|(parse|format)(_currency)?|\n get_(symbol|(text_)?attribute|pattern|error_(code|message)|locale))|\n collator_(sort(_with_sort_keys)?|set_(attribute|strength)|compare|create|asort|\n get_(strength|sort_key|error_(code|message)|locale|attribute))|\n transliterator_(create(_(inverse|from_rules))?|transliterate|list_ids|get_error_(code|message))|\n intl(cal|tz)_get_error_(code|message)|intl_(is_failure|error_name|get_error_(code|message))|\n datefmt_(set_(calendar|lenient|pattern|timezone(_id)?)|create|is_lenient|parse|format(_object)?|localtime|\n get_(calendar(_object)?|time(type|zone(_id)?)|datetype|pattern|error_(code|message)|locale))|\n locale_(set_default|compose|canonicalize|parse|filter_matches|lookup|accept_from_http|\n get_(script|display_(script|name|variant|language|region)|default|primary_language|keywords|all_variants|region))|\n resourcebundle_(create|count|locales|get(_(error_(code|message)))?)|\n grapheme_(str(i?str|r?i?pos|len)|substr|extract)|\n msgfmt_(set_pattern|create|(format|parse)(_message)?|get_(pattern|error_(code|message)|locale))\n)\\b",
+ "name": "support.function.intl.php"
+ },
+ {
+ "match": "(?i)\\bjson_(decode|encode|last_error(_msg)?)\\b",
+ "name": "support.function.json.php"
+ },
+ {
+ "match": "(?xi)\\b\nldap_(\n start|tls|sort|search|sasl_bind|set_(option|rebind_proc)|(first|next)_(attribute|entry|reference)|\n connect|control_paged_result(_response)?|count_entries|compare|close|t61_to_8859|8859_to_t61|\n dn2ufn|delete|unbind|parse_(reference|result)|escape|errno|err2str|error|explode_dn|bind|\n free_result|list|add|rename|read|get_(option|dn|entries|values(_len)?|attributes)|modify(_batch)?|\n mod_(add|del|replace)\n)\\b",
+ "name": "support.function.ldap.php"
+ },
+ {
+ "match": "(?i)\\blibxml_(set_(streams_context|external_entity_loader)|clear_errors|disable_entity_loader|use_internal_errors|get_(errors|last_error))\\b",
+ "name": "support.function.libxml.php"
+ },
+ {
+ "match": "(?i)\\b(ezmlm_hash|mail)\\b",
+ "name": "support.function.mail.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n (a)?(cos|sin|tan)(h)?|sqrt|srand|hypot|hexdec|ceil|is_(nan|(in)?finite)|octdec|dec(hex|oct|bin)|deg2rad|\n pi|pow|exp(m1)?|floor|fmod|lcg_value|log(1(p|0))?|atan2|abs|round|rand|rad2deg|getrandmax|\n mt_(srand|rand|getrandmax)|max|min|bindec|base_convert\n)\\b",
+ "name": "support.function.math.php"
+ },
+ {
+ "match": "(?xi)\\b\nmb_(\n str(cut|str|to(lower|upper)|istr|ipos|imwidth|pos|width|len|rchr|richr|ripos|rpos)|\n substitute_character|substr(_count)?|split|send_mail|http_(input|output)|check_encoding|\n convert_(case|encoding|kana|variables)|internal_encoding|output_handler|decode_(numericentity|mimeheader)|\n detect_(encoding|order)|parse_str|preferred_mime_name|encoding_aliases|encode_(numericentity|mimeheader)|\n ereg(i(_replace)?)?|ereg_(search(_(get(pos|regs)|init|regs|(set)?pos))?|replace(_callback)?|match)|\n list_encodings|language|regex_(set_options|encoding)|get_info\n)\\b",
+ "name": "support.function.mbstring.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n mcrypt_(\n cfb|create_iv|cbc|ofb|decrypt|encrypt|ecb|list_(algorithms|modes)|generic(_((de)?init|end))?|\n enc_(self_test|is_block_(algorithm|algorithm_mode|mode)|\n get_(supported_key_sizes|(block|iv|key)_size|(algorithms|modes)_name))|\n get_(cipher_name|(block|iv|key)_size)|\n module_(close|self_test|is_block_(algorithm|algorithm_mode|mode)|open|\n get_(supported_key_sizes|algo_(block|key)_size)))|\n mdecrypt_generic\n)\\b",
+ "name": "support.function.mcrypt.php"
+ },
+ {
+ "match": "(?i)\\bmemcache_debug\\b",
+ "name": "support.function.memcache.php"
+ },
+ {
+ "match": "(?i)\\bmhash(_(count|keygen_s2k|get_(hash_name|block_size)))?\\b",
+ "name": "support.function.mhash.php"
+ },
+ {
+ "match": "(?i)\\b(log_(cmd_(insert|delete|update)|killcursor|write_batch|reply|getmore)|bson_(decode|encode))\\b",
+ "name": "support.function.mongo.php"
+ },
+ {
+ "match": "(?xi)\\b\nmysql_(\n stat|set_charset|select_db|num_(fields|rows)|connect|client_encoding|close|create_db|escape_string|\n thread_id|tablename|insert_id|info|data_seek|drop_db|db_(name|query)|unbuffered_query|pconnect|ping|\n errno|error|query|field_(seek|name|type|table|flags|len)|fetch_(object|field|lengths|assoc|array|row)|\n free_result|list_(tables|dbs|processes|fields)|affected_rows|result|real_escape_string|\n get_(client|host|proto|server)_info\n)\\b",
+ "name": "support.function.mysql.php"
+ },
+ {
+ "match": "(?xi)\\b\nmysqli_(\n ssl_set|store_result|stat|send_(query|long_data)|set_(charset|opt|local_infile_(default|handler))|\n stmt_(store_result|send_long_data|next_result|close|init|data_seek|prepare|execute|fetch|free_result|\n attr_(get|set)|result_metadata|reset|get_(result|warnings)|more_results|bind_(param|result))|\n select_db|slave_query|savepoint|next_result|change_user|character_set_name|connect|commit|\n client_encoding|close|thread_safe|init|options|(enable|disable)_(reads_from_master|rpl_parse)|\n dump_debug_info|debug|data_seek|use_result|ping|poll|param_count|prepare|escape_string|execute|\n embedded_server_(start|end)|kill|query|field_seek|free_result|autocommit|rollback|report|refresh|\n fetch(_(object|fields|field(_direct)?|assoc|all|array|row))?|rpl_(parse_enabled|probe|query_type)|\n release_savepoint|reap_async_query|real_(connect|escape_string|query)|more_results|multi_query|\n get_(charset|connection_stats|client_(stats|info|version)|cache_stats|warnings|links_stats|metadata)|\n master_query|bind_(param|result)|begin_transaction\n)\\b",
+ "name": "support.function.mysqli.php"
+ },
+ {
+ "match": "(?i)\\bmysqlnd_memcache_(set|get_config)\\b",
+ "name": "support.function.mysqlnd-memcache.php"
+ },
+ {
+ "match": "(?i)\\bmysqlnd_ms_(set_(user_pick_server|qos)|dump_servers|query_is_select|fabric_select_(shard|global)|get_(stats|last_(used_connection|gtid))|xa_(commit|rollback|gc|begin)|match_wild)\\b",
+ "name": "support.function.mysqlnd-ms.php"
+ },
+ {
+ "match": "(?i)\\bmysqlnd_qc_(set_(storage_handler|cache_condition|is_select|user_handlers)|clear_cache|get_(normalized_query_trace_log|core_stats|cache_info|query_trace_log|available_handlers))\\b",
+ "name": "support.function.mysqlnd-qc.php"
+ },
+ {
+ "match": "(?i)\\bmysqlnd_uh_(set_(statement|connection)_proxy|convert_to_mysqlnd)\\b",
+ "name": "support.function.mysqlnd-uh.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n syslog|socket_(set_(blocking|timeout)|get_status)|set(raw)?cookie|http_response_code|openlog|\n headers_(list|sent)|header(_(register_callback|remove))?|checkdnsrr|closelog|inet_(ntop|pton)|ip2long|\n openlog|dns_(check_record|get_(record|mx))|define_syslog_variables|(p)?fsockopen|long2ip|\n get(servby(name|port)|host(name|by(name(l)?|addr))|protoby(name|number)|mxrr)\n)\\b",
+ "name": "support.function.network.php"
+ },
+ {
+ "match": "(?i)\\bnsapi_(virtual|response_headers|request_headers)\\b",
+ "name": "support.function.nsapi.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n oci(statementtype|setprefetch|serverversion|savelob(file)?|numcols|new(collection|cursor|descriptor)|nlogon|\n column(scale|size|name|type(raw)?|isnull|precision)|coll(size|trim|assign(elem)?|append|getelem|max)|commit|\n closelob|cancel|internaldebug|definebyname|plogon|parse|error|execute|fetch(statement|into)?|\n free(statement|collection|cursor|desc)|write(temporarylob|lobtofile)|loadlob|log(on|off)|rowcount|rollback|\n result|bindbyname)|\n oci_(statement_type|set_(client_(info|identifier)|prefetch|edition|action|module_name)|server_version|\n num_(fields|rows)|new_(connect|collection|cursor|descriptor)|connect|commit|client_version|close|cancel|\n internal_debug|define_by_name|pconnect|password_change|parse|error|execute|bind_(array_)?by_name|\n field_(scale|size|name|type(_raw)?|is_null|precision)|fetch(_(object|assoc|all|array|row))?|\n free_(statement|descriptor)|lob_(copy|is_equal)|rollback|result|get_implicit_resultset)\n)\\b",
+ "name": "support.function.oci8.php"
+ },
+ {
+ "match": "(?i)\\bopcache_(compile_file|invalidate|reset|get_(status|configuration))\\b",
+ "name": "support.function.opcache.php"
+ },
+ {
+ "match": "(?xi)\\b\nopenssl_(\n sign|spki_(new|export(_challenge)?|verify)|seal|csr_(sign|new|export(_to_file)?|get_(subject|public_key))|\n cipher_iv_length|open|dh_compute_key|digest|decrypt|public_(decrypt|encrypt)|encrypt|error_string|\n pkcs12_(export(_to_file)?|read)|pkcs7_(sign|decrypt|encrypt|verify)|verify|free_key|random_pseudo_bytes|\n pkey_(new|export(_to_file)?|free|get_(details|public|private))|private_(decrypt|encrypt)|pbkdf2|\n get_((cipher|md)_methods|cert_locations|(public|private)key)|\n x509_(check_private_key|checkpurpose|parse|export(_to_file)?|fingerprint|free|read)\n)\\b",
+ "name": "support.function.openssl.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n output_(add_rewrite_var|reset_rewrite_vars)|flush|\n ob_(start|clean|implicit_flush|end_(clean|flush)|flush|list_handlers|gzhandler|\n get_(status|contents|clean|flush|length|level))\n)\\b",
+ "name": "support.function.output.php"
+ },
+ {
+ "match": "(?i)\\bpassword_(hash|needs_rehash|verify|get_info)\\b",
+ "name": "support.function.password.php"
+ },
+ {
+ "match": "(?xi)\\b\npcntl_(\n strerror|signal(_dispatch)?|sig(timedwait|procmask|waitinfo)|setpriority|errno|exec|fork|\n w(stopsig|termsig|if(stopped|signaled|exited))|wait(pid)?|alarm|getpriority|get_last_error\n)\\b",
+ "name": "support.function.pcntl.php"
+ },
+ {
+ "match": "(?xi)\\b\npg_(\n socket|send_(prepare|execute|query(_params)?)|set_(client_encoding|error_verbosity)|select|host|\n num_(fields|rows)|consume_input|connection_(status|reset|busy)|connect(_poll)?|convert|copy_(from|to)|\n client_encoding|close|cancel_query|tty|transaction_status|trace|insert|options|delete|dbname|untrace|\n unescape_bytea|update|pconnect|ping|port|put_line|parameter_status|prepare|version|query(_params)?|\n escape_(string|identifier|literal|bytea)|end_copy|execute|flush|free_result|last_(notice|error|oid)|\n field_(size|num|name|type(_oid)?|table|is_null|prtlen)|affected_rows|result_(status|seek|error(_field)?)|\n fetch_(object|assoc|all(_columns)?|array|row|result)|get_(notify|pid|result)|meta_data|\n lo_(seek|close|create|tell|truncate|import|open|unlink|export|write|read(_all)?)|\n)\\b",
+ "name": "support.function.pgsql.php"
+ },
+ {
+ "match": "(?i)\\b(virtual|getallheaders|apache_((get|set)env|note|child_terminate|lookup_uri|response_headers|reset_timeout|request_headers|get_(version|modules)))\\b",
+ "name": "support.function.php_apache.php"
+ },
+ {
+ "match": "(?i)\\bdom_import_simplexml\\b",
+ "name": "support.function.php_dom.php"
+ },
+ {
+ "match": "(?xi)\\b\nftp_(\n ssl_connect|systype|site|size|set_option|nlist|nb_(continue|f?(put|get))|ch(dir|mod)|connect|cdup|close|\n delete|put|pwd|pasv|exec|quit|f(put|get)|login|alloc|rename|raw(list)?|rmdir|get(_option)?|mdtm|mkdir\n)\\b",
+ "name": "support.function.php_ftp.php"
+ },
+ {
+ "match": "(?xi)\\b\nimap_(\n (create|delete|list|rename|scan)(mailbox)?|status|sort|subscribe|set_quota|set(flag_full|acl)|search|savebody|\n num_(recent|msg)|check|close|clearflag_full|thread|timeout|open|header(info)?|headers|append|alerts|reopen|\n 8bit|unsubscribe|undelete|utf7_(decode|encode)|utf8|uid|ping|errors|expunge|qprint|gc|\n fetch(structure|header|text|mime|body)|fetch_overview|lsub|list(scan|subscribed)|last_error|\n rfc822_(parse_(headers|adrlist)|write_address)|get(subscribed|acl|mailboxes)|get_quota(root)?|\n msgno|mime_header_decode|mail_(copy|compose|move)|mail|mailboxmsginfo|binary|body(struct)?|base64\n)\\b",
+ "name": "support.function.php_imap.php"
+ },
+ {
+ "match": "(?xi)\\b\nmssql_(\n select_db|num_(fields|rows)|next_result|connect|close|init|data_seek|pconnect|execute|query|\n field_(seek|name|type|length)|fetch_(object|field|assoc|array|row|batch)|free_(statement|result)|\n rows_affected|result|guid_string|get_last_message|min_(error|message)_severity|bind\n)\\b",
+ "name": "support.function.php_mssql.php"
+ },
+ {
+ "match": "(?xi)\\b\nodbc_(\n statistics|specialcolumns|setoption|num_(fields|rows)|next_result|connect|columns|columnprivileges|commit|\n cursor|close(_all)?|tables|tableprivileges|do|data_source|pconnect|primarykeys|procedures|procedurecolumns|\n prepare|error(msg)?|exec(ute)?|field_(scale|num|name|type|precision|len)|foreignkeys|free_result|\n fetch_(into|object|array|row)|longreadlen|autocommit|rollback|result(_all)?|gettypeinfo|binmode\n)\\b",
+ "name": "support.function.php_odbc.php"
+ },
+ {
+ "match": "(?i)\\bpreg_(split|quote|filter|last_error|replace(_callback)?|grep|match(_all)?)\\b",
+ "name": "support.function.php_pcre.php"
+ },
+ {
+ "match": "(?i)\\b(spl_(classes|object_hash|autoload(_(call|unregister|extensions|functions|register))?)|class_(implements|uses|parents)|iterator_(count|to_array|apply))\\b",
+ "name": "support.function.php_spl.php"
+ },
+ {
+ "match": "(?i)\\bzip_(close|open|entry_(name|compressionmethod|compressedsize|close|open|filesize|read)|read)\\b",
+ "name": "support.function.php_zip.php"
+ },
+ {
+ "match": "(?xi)\\b\nposix_(\n strerror|set(s|e?u|[ep]?g)id|ctermid|ttyname|times|isatty|initgroups|uname|errno|kill|access|\n get(sid|cwd|uid|pid|ppid|pwnam|pwuid|pgid|pgrp|euid|egid|login|rlimit|gid|grnam|groups|grgid)|\n get_last_error|mknod|mkfifo\n)\\b",
+ "name": "support.function.posix.php"
+ },
+ {
+ "match": "(?i)\\bset(thread|proc)title\\b",
+ "name": "support.function.proctitle.php"
+ },
+ {
+ "match": "(?xi)\\b\npspell_(\n store_replacement|suggest|save_wordlist|new(_(config|personal))?|check|clear_session|\n config_(save_repl|create|ignore|(data|dict)_dir|personal|runtogether|repl|mode)|add_to_(session|personal)\n)\\b",
+ "name": "support.function.pspell.php"
+ },
+ {
+ "match": "(?i)\\breadline(_(completion_function|clear_history|callback_(handler_(install|remove)|read_char)|info|on_new_line|write_history|list_history|add_history|redisplay|read_history))?\\b",
+ "name": "support.function.readline.php"
+ },
+ {
+ "match": "(?i)\\brecode(_(string|file))?\\b",
+ "name": "support.function.recode.php"
+ },
+ {
+ "match": "(?i)\\brrd(c_disconnect|_(create|tune|info|update|error|version|first|fetch|last(update)?|restore|graph|xport))\\b",
+ "name": "support.function.rrd.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n shm_((get|has|remove|put)_var|detach|attach|remove)|sem_(acquire|release|remove|get)|ftok|\n msg_((get|remove|set|stat)_queue|send|queue_exists|receive)\n)\\b",
+ "name": "support.function.sem.php"
+ },
+ {
+ "match": "(?xi)\\b\nsession_(\n status|start|set_(save_handler|cookie_params)|save_path|name|commit|cache_(expire|limiter)|\n is_registered|id|destroy|decode|unset|unregister|encode|write_close|abort|reset|register(_shutdown)?|\n regenerate_id|get_cookie_params|module_name\n)\\b",
+ "name": "support.function.session.php"
+ },
+ {
+ "match": "(?i)\\bshmop_(size|close|open|delete|write|read)\\b",
+ "name": "support.function.shmop.php"
+ },
+ {
+ "match": "(?i)\\bsimplexml_(import_dom|load_(string|file))\\b",
+ "name": "support.function.simplexml.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n snmp(walk(oid)?|realwalk|get(next)?|set)|\n snmp_(set_(valueretrieval|quick_print|enum_print|oid_(numeric_print|output_format))|read_mib|\n get_(valueretrieval|quick_print))|\n snmp[23]_(set|walk|real_walk|get(next)?)\n)\\b",
+ "name": "support.function.snmp.php"
+ },
+ {
+ "match": "(?i)\\b(is_soap_fault|use_soap_error_handler)\\b",
+ "name": "support.function.soap.php"
+ },
+ {
+ "match": "(?xi)\\b\nsocket_(\n shutdown|strerror|send(to|msg)?|set_((non)?block|option)|select|connect|close|clear_error|bind|\n create(_(pair|listen))?|cmsg_space|import_stream|write|listen|last_error|accept|recv(from|msg)?|\n read|get(peer|sock)name|get_option\n)\\b",
+ "name": "support.function.sockets.php"
+ },
+ {
+ "match": "(?xi)\\b\nsqlite_(\n single_query|seek|has_(more|prev)|num_(fields|rows)|next|changes|column|current|close|\n create_(aggregate|function)|open|unbuffered_query|udf_(decode|encode)_binary|popen|prev|\n escape_string|error_string|exec|valid|key|query|field_name|factory|\n fetch_(string|single|column_types|object|all|array)|lib(encoding|version)|\n last_(insert_rowid|error)|array_query|rewind|busy_timeout\n)\\b",
+ "name": "support.function.sqlite.php"
+ },
+ {
+ "match": "(?xi)\\b\nsqlsrv_(\n send_stream_data|server_info|has_rows|num_(fields|rows)|next_result|connect|configure|commit|\n client_info|close|cancel|prepare|errors|execute|query|field_metadata|fetch(_(array|object))?|\n free_stmt|rows_affected|rollback|get_(config|field)|begin_transaction\n)\\b",
+ "name": "support.function.sqlsrv.php"
+ },
+ {
+ "match": "(?xi)\\b\nstats_(\n harmonic_mean|covariance|standard_deviation|skew|\n cdf_(noncentral_(chisquare|f)|negative_binomial|chisquare|cauchy|t|uniform|poisson|exponential|f|weibull|\n logistic|laplace|gamma|binomial|beta)|\n stat_(noncentral_t|correlation|innerproduct|independent_t|powersum|percentile|paired_t|gennch|binomial_coef)|\n dens_(normal|negative_binomial|chisquare|cauchy|t|pmf_(hypergeometric|poisson|binomial)|exponential|f|\n weibull|logistic|laplace|gamma|beta)|\n den_uniform|variance|kurtosis|absolute_deviation|\n rand_(setall|phrase_to_seeds|ranf|get_seeds|\n gen_(noncentral_[ft]|noncenral_chisquare|normal|chisquare|t|int|\n i(uniform|poisson|binomial(_negative)?)|exponential|f(uniform)?|gamma|beta))\n)\\b",
+ "name": "support.function.stats.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n set_socket_blocking|\n stream_(socket_(shutdown|sendto|server|client|pair|enable_crypto|accept|recvfrom|get_name)|\n set_(chunk_size|timeout|(read|write)_buffer|blocking)|select|notification_callback|supports_lock|\n context_(set_(option|default|params)|create|get_(options|default|params))|copy_to_stream|is_local|\n encoding|filter_(append|prepend|register|remove)|wrapper_((un)?register|restore)|\n resolve_include_path|register_wrapper|get_(contents|transports|filters|wrappers|line|meta_data)|\n bucket_(new|prepend|append|make_writeable)\n )\n)\\b",
+ "name": "support.function.streamsfuncs.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n money_format|md5(_file)?|metaphone|bin2hex|sscanf|sha1(_file)?|\n str(str|c?spn|n(at)?(case)?cmp|chr|coll|(case)?cmp|to(upper|lower)|tok|tr|istr|pos|pbrk|len|rchr|ri?pos|rev)|\n str_(getcsv|ireplace|pad|repeat|replace|rot13|shuffle|split|word_count)|\n strip(c?slashes|os)|strip_tags|similar_text|soundex|substr(_(count|compare|replace))?|setlocale|\n html(specialchars(_decode)?|entities)|html_entity_decode|hex2bin|hebrev(c)?|number_format|nl2br|nl_langinfo|\n chop|chunk_split|chr|convert_(cyr_string|uu(decode|encode))|count_chars|crypt|crc32|trim|implode|ord|\n uc(first|words)|join|parse_str|print(f)?|echo|explode|v?[fs]?printf|quoted_printable_(decode|encode)|\n quotemeta|wordwrap|lcfirst|[lr]trim|localeconv|levenshtein|addc?slashes|get_html_translation_table\n)\\b",
+ "name": "support.function.string.php"
+ },
+ {
+ "match": "(?xi)\\b\nsybase_(\n set_message_handler|select_db|num_(fields|rows)|connect|close|deadlock_retry_count|data_seek|\n unbuffered_query|pconnect|query|field_seek|fetch_(object|field|assoc|array|row)|free_result|\n affected_rows|result|get_last_message|min_(client|error|message|server)_severity\n)\\b",
+ "name": "support.function.sybase.php"
+ },
+ {
+ "match": "(?i)\\b(taint|is_tainted|untaint)\\b",
+ "name": "support.function.taint.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n tidy_((get|set)opt|set_encoding|save_config|config_count|clean_repair|is_(xhtml|xml)|diagnose|\n (access|error|warning)_count|load_config|reset_config|(parse|repair)_(string|file)|\n get_(status|html(_ver)?|head|config|output|opt_doc|root|release|body))|\n ob_tidyhandler\n)\\b",
+ "name": "support.function.tidy.php"
+ },
+ {
+ "match": "(?i)\\btoken_(name|get_all)\\b",
+ "name": "support.function.tokenizer.php"
+ },
+ {
+ "match": "(?xi)\\b\ntrader_(\n stoch(f|r|rsi)?|stddev|sin(h)?|sum|sub|set_(compat|unstable_period)|sqrt|sar(ext)?|sma|\n ht_(sine|trend(line|mode)|dc(period|phase)|phasor)|natr|cci|cos(h)?|correl|\n cdl(shootingstar|shortline|sticksandwich|stalledpattern|spinningtop|separatinglines|\n hikkake(mod)?|highwave|homingpigeon|hangingman|harami(cross)?|hammer|concealbabyswall|\n counterattack|closingmarubozu|thrusting|tasukigap|takuri|tristar|inneck|invertedhammer|\n identical3crows|2crows|onneck|doji(star)?|darkcloudcover|dragonflydoji|unique3river|\n upsidegap2crows|3(starsinsouth|inside|outside|whitesoldiers|linestrike|blackcrows)|\n piercing|engulfing|evening(doji)?star|kicking(bylength)?|longline|longleggeddoji|\n ladderbottom|advanceblock|abandonedbaby|risefall3methods|rickshawman|gapsidesidewhite|\n gravestonedoji|xsidegap3methods|morning(doji)?star|mathold|matchinglow|marubozu|\n belthold|breakaway)|\n ceil|cmo|tsf|typprice|t3|tema|tan(h)?|trix|trima|trange|obv|div|dema|dx|ultosc|ppo|\n plus_d[im]|errno|exp|ema|var|kama|floor|wclprice|willr|wma|ln|log10|bop|beta|bbands|\n linearreg(_(slope|intercept|angle))?|asin|acos|atan|atr|adosc|ad|add|adx(r)?|apo|avgprice|\n aroon(osc)?|rsi|roc|rocp|rocr(100)?|get_(compat|unstable_period)|min(index)?|minus_d[im]|\n minmax(index)?|mid(point|price)|mom|mult|medprice|mfi|macd(ext|fix)?|mavp|max(index)?|ma(ma)?\n)\\b",
+ "name": "support.function.trader.php"
+ },
+ {
+ "match": "(?i)\\buopz_(copy|compose|implement|overload|delete|undefine|extend|function|flags|restore|rename|redefine|backup)\\b",
+ "name": "support.function.uopz.php"
+ },
+ {
+ "match": "(?i)\\b(http_build_query|(raw)?url(decode|encode)|parse_url|get_(headers|meta_tags)|base64_(decode|encode))\\b",
+ "name": "support.function.url.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n strval|settype|serialize|(bool|double|float)val|debug_zval_dump|intval|import_request_variables|isset|\n is_(scalar|string|null|numeric|callable|int(eger)?|object|double|float|long|array|resource|real|bool)|\n unset|unserialize|print_r|empty|var_(dump|export)|gettype|get_(defined_vars|resource_type)\n)\\b",
+ "name": "support.function.var.php"
+ },
+ {
+ "match": "(?i)\\bwddx_(serialize_(value|vars)|deserialize|packet_(start|end)|add_vars)\\b",
+ "name": "support.function.wddx.php"
+ },
+ {
+ "match": "(?i)\\bxhprof_(sample_)?(disable|enable)\\b",
+ "name": "support.function.xhprof.php"
+ },
+ {
+ "match": "(?xi)\n\\b\n(\n utf8_(decode|encode)|\n xml_(set_((notation|(end|start)_namespace|unparsed_entity)_decl_handler|\n (character_data|default|element|external_entity_ref|processing_instruction)_handler|object)|\n parse(_into_struct)?|parser_((get|set)_option|create(_ns)?|free)|error_string|\n get_(current_((column|line)_number|byte_index)|error_code))\n)\\b",
+ "name": "support.function.xml.php"
+ },
+ {
+ "match": "(?xi)\\b\nxmlrpc_(\n server_(call_method|create|destroy|add_introspection_data|register_(introspection_callback|method))|\n is_fault|decode(_request)?|parse_method_descriptions|encode(_request)?|(get|set)_type\n)\\b",
+ "name": "support.function.xmlrpc.php"
+ },
+ {
+ "match": "(?xi)\\b\nxmlwriter_(\n (end|start|write)_(comment|cdata|dtd(_(attlist|entity|element))?|document|pi|attribute|element)|\n (start|write)_(attribute|element)_ns|write_raw|set_indent(_string)?|text|output_memory|open_(memory|uri)|\n full_end_element|flush|\n)\\b",
+ "name": "support.function.xmlwriter.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n zlib_(decode|encode|get_coding_type)|readgzfile|\n gz(seek|compress|close|tell|inflate|open|decode|deflate|uncompress|puts|passthru|encode|eof|file|\n write|rewind|read|getc|getss?)\n)\\b",
+ "name": "support.function.zlib.php"
+ },
+ {
+ "match": "(?i)\\bis_int(eger)?\\b",
+ "name": "support.function.alias.php"
+ }
+ ]
+ },
+ "switch_statement": {
+ "patterns": [
+ {
+ "match": "\\s+(?=switch\\b)"
+ },
+ {
+ "begin": "\\bswitch\\b(?!\\s*\\(.*\\)\\s*:)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.switch.php"
+ }
+ },
+ "end": "}|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.section.switch-block.end.bracket.curly.php"
+ }
+ },
+ "name": "meta.switch-statement.php",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.switch-expression.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.switch-expression.end.bracket.round.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.section.switch-block.begin.bracket.curly.php"
+ }
+ },
+ "end": "(?=}|\\?>)",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "use-inner": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "(?i)\\b(as)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.use-as.php"
+ }
+ },
+ "end": "(?i)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*",
+ "endCaptures": {
+ "0": {
+ "name": "entity.other.alias.php"
+ }
+ }
+ },
+ {
+ "include": "#class-name"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.php"
+ }
+ ]
+ },
+ "var_basic": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(?i)(\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*\\b",
+ "name": "variable.other.php"
+ }
+ ]
+ },
+ "var_global": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(\\$)((_(COOKIE|FILES|GET|POST|REQUEST))|arg(v|c))\\b",
+ "name": "variable.other.global.php"
+ },
+ "var_global_safer": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(\\$)((GLOBALS|_(ENV|SERVER|SESSION)))",
+ "name": "variable.other.global.safer.php"
+ },
+ "var_language": {
+ "match": "(\\$)this\\b",
+ "name": "variable.language.this.php",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.php"
+ }
+ }
+ },
+ "variable-name": {
+ "patterns": [
+ {
+ "include": "#var_global"
+ },
+ {
+ "include": "#var_global_safer"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "variable.other.php"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "4": {
+ "name": "keyword.operator.class.php"
+ },
+ "5": {
+ "name": "variable.other.property.php"
+ },
+ "6": {
+ "name": "punctuation.section.array.begin.php"
+ },
+ "7": {
+ "name": "constant.numeric.index.php"
+ },
+ "8": {
+ "name": "variable.other.index.php"
+ },
+ "9": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "10": {
+ "name": "string.unquoted.index.php"
+ },
+ "11": {
+ "name": "punctuation.section.array.end.php"
+ }
+ },
+ "match": "(?xi)\n((\\$)(?<name>[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*))\n(?:\n (->)(\\g<name>)\n |\n (\\[)(?:(\\d+)|((\\$)\\g<name>)|([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*))(\\])\n)?"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "variable.other.php"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "4": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(?i)((\\${)(?<name>[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)(}))"
+ }
+ ]
+ },
+ "variables": {
+ "patterns": [
+ {
+ "include": "#var_language"
+ },
+ {
+ "include": "#var_global"
+ },
+ {
+ "include": "#var_global_safer"
+ },
+ {
+ "include": "#var_basic"
+ },
+ {
+ "begin": "\\${(?=.*?})",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/c.tmLanguage.json b/node_modules/shiki/languages/c.tmLanguage.json
new file mode 100644
index 0000000..cf111bf
--- /dev/null
+++ b/node_modules/shiki/languages/c.tmLanguage.json
@@ -0,0 +1,3555 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/jeff-hykin/better-c-syntax/blob/master/autogenerated/c.tmLanguage.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/jeff-hykin/better-c-syntax/commit/34712a6106a4ffb0a04d2fa836fd28ff6c5849a4",
+ "name": "c",
+ "scopeName": "source.c",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-enabled"
+ },
+ {
+ "include": "#preprocessor-rule-disabled"
+ },
+ {
+ "include": "#preprocessor-rule-conditional"
+ },
+ {
+ "include": "#predefined_macros"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#switch_statement"
+ },
+ {
+ "include": "#anon_pattern_1"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#anon_pattern_2"
+ },
+ {
+ "include": "#anon_pattern_3"
+ },
+ {
+ "include": "#anon_pattern_4"
+ },
+ {
+ "include": "#anon_pattern_5"
+ },
+ {
+ "include": "#anon_pattern_6"
+ },
+ {
+ "include": "#anon_pattern_7"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#anon_pattern_range_1"
+ },
+ {
+ "include": "#anon_pattern_range_2"
+ },
+ {
+ "include": "#anon_pattern_range_3"
+ },
+ {
+ "include": "#pragma-mark"
+ },
+ {
+ "include": "#anon_pattern_range_4"
+ },
+ {
+ "include": "#anon_pattern_range_5"
+ },
+ {
+ "include": "#anon_pattern_range_6"
+ },
+ {
+ "include": "#anon_pattern_8"
+ },
+ {
+ "include": "#anon_pattern_9"
+ },
+ {
+ "include": "#anon_pattern_10"
+ },
+ {
+ "include": "#anon_pattern_11"
+ },
+ {
+ "include": "#anon_pattern_12"
+ },
+ {
+ "include": "#anon_pattern_13"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#anon_pattern_range_7"
+ },
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "include": "#anon_pattern_range_8"
+ },
+ {
+ "include": "#anon_pattern_range_9"
+ },
+ {
+ "include": "#anon_pattern_14"
+ },
+ {
+ "include": "#anon_pattern_15"
+ }
+ ],
+ "repository": {
+ "access-method": {
+ "name": "meta.function-call.member.c",
+ "begin": "([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))\\s*(?:(\\.)|(->))((?:(?:[a-zA-Z_][a-zA-Z_0-9]*)\\s*(?:(?:\\.)|(?:->)))*)\\s*([a-zA-Z_][a-zA-Z_0-9]*)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.object.c"
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.c"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.c"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.dot-access.c"
+ },
+ {
+ "match": "->",
+ "name": "punctuation.separator.pointer-access.c"
+ },
+ {
+ "match": "[a-zA-Z_][a-zA-Z_0-9]*",
+ "name": "variable.object.c"
+ },
+ {
+ "name": "everything.else.c",
+ "match": ".+"
+ }
+ ]
+ },
+ "5": {
+ "name": "entity.name.function.member.c"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.member.c"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.member.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ "anon_pattern_1": {
+ "match": "\\b(break|continue|do|else|for|goto|if|_Pragma|return|while)\\b",
+ "name": "keyword.control.c"
+ },
+ "anon_pattern_10": {
+ "match": "(?x) \\b\n(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t\n|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t\n|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t\n|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t\n|uintmax_t|uintmax_t)\n\\b",
+ "name": "support.type.stdint.c"
+ },
+ "anon_pattern_11": {
+ "match": "\\b(noErr|kNilOptions|kInvalidID|kVariableLengthArray)\\b",
+ "name": "support.constant.mac-classic.c"
+ },
+ "anon_pattern_12": {
+ "match": "(?x) \\b\n(AbsoluteTime|Boolean|Byte|ByteCount|ByteOffset|BytePtr|CompTimeValue|ConstLogicalAddress|ConstStrFileNameParam\n|ConstStringPtr|Duration|Fixed|FixedPtr|Float32|Float32Point|Float64|Float80|Float96|FourCharCode|Fract|FractPtr\n|Handle|ItemCount|LogicalAddress|OptionBits|OSErr|OSStatus|OSType|OSTypePtr|PhysicalAddress|ProcessSerialNumber\n|ProcessSerialNumberPtr|ProcHandle|Ptr|ResType|ResTypePtr|ShortFixed|ShortFixedPtr|SignedByte|SInt16|SInt32|SInt64\n|SInt8|Size|StrFileName|StringHandle|StringPtr|TimeBase|TimeRecord|TimeScale|TimeValue|TimeValue64|UInt16|UInt32\n|UInt64|UInt8|UniChar|UniCharCount|UniCharCountPtr|UniCharPtr|UnicodeScalarValue|UniversalProcHandle|UniversalProcPtr\n|UnsignedFixed|UnsignedFixedPtr|UnsignedWide|UTF16Char|UTF32Char|UTF8Char)\n\\b",
+ "name": "support.type.mac-classic.c"
+ },
+ "anon_pattern_13": {
+ "match": "\\b([A-Za-z0-9_]+_t)\\b",
+ "name": "support.type.posix-reserved.c"
+ },
+ "anon_pattern_14": {
+ "match": ";",
+ "name": "punctuation.terminator.statement.c"
+ },
+ "anon_pattern_15": {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.c"
+ },
+ "anon_pattern_2": {
+ "match": "typedef",
+ "name": "keyword.other.typedef.c"
+ },
+ "anon_pattern_3": {
+ "match": "\\b(const|extern|register|restrict|static|volatile|inline)\\b",
+ "name": "storage.modifier.c"
+ },
+ "anon_pattern_4": {
+ "match": "\\bk[A-Z]\\w*\\b",
+ "name": "constant.other.variable.mac-classic.c"
+ },
+ "anon_pattern_5": {
+ "match": "\\bg[A-Z]\\w*\\b",
+ "name": "variable.other.readwrite.global.mac-classic.c"
+ },
+ "anon_pattern_6": {
+ "match": "\\bs[A-Z]\\w*\\b",
+ "name": "variable.other.readwrite.static.mac-classic.c"
+ },
+ "anon_pattern_7": {
+ "match": "\\b(NULL|true|false|TRUE|FALSE)\\b",
+ "name": "constant.language.c"
+ },
+ "anon_pattern_8": {
+ "match": "\\b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\\b",
+ "name": "support.type.sys-types.c"
+ },
+ "anon_pattern_9": {
+ "match": "\\b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\\b",
+ "name": "support.type.pthread.c"
+ },
+ "anon_pattern_range_1": {
+ "name": "meta.preprocessor.macro.c",
+ "begin": "((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))((#)\\s*define\\b)\\s+((?<!\\w)[a-zA-Z_]\\w*(?!\\w))(?:(\\()([^()\\\\]+)(\\)))?",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "3": {
+ "name": "comment.block.c"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ },
+ "5": {
+ "name": "keyword.control.directive.define.c"
+ },
+ "6": {
+ "name": "punctuation.definition.directive.c"
+ },
+ "7": {
+ "name": "entity.name.function.preprocessor.c"
+ },
+ "8": {
+ "name": "punctuation.definition.parameters.begin.c"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "(?<=[(,])\\s*((?<!\\w)[a-zA-Z_]\\w*(?!\\w))\\s*",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.preprocessor.c"
+ }
+ }
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.parameters.c"
+ },
+ {
+ "match": "\\.\\.\\.",
+ "name": "ellipses.c punctuation.vararg-ellipses.variable.parameter.preprocessor.c"
+ }
+ ]
+ },
+ "10": {
+ "name": "punctuation.definition.parameters.end.c"
+ }
+ },
+ "end": "(?<!\\\\)(?=\\n)",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-contents"
+ }
+ ]
+ },
+ "anon_pattern_range_2": {
+ "begin": "^\\s*((#)\\s*(error|warning))\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.diagnostic.$3.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.diagnostic.c",
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.c"
+ }
+ },
+ "end": "\"|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.c"
+ }
+ },
+ "name": "string.quoted.double.c",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.c"
+ }
+ },
+ "end": "'|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.c"
+ }
+ },
+ "name": "string.quoted.single.c",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "[^'\"]",
+ "end": "(?<!\\\\)(?=\\s*\\n)",
+ "name": "string.unquoted.single.c",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ }
+ ]
+ },
+ "anon_pattern_range_3": {
+ "begin": "^\\s*((#)\\s*(include(?:_next)?|import))\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.$3.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.include.c",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.c"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.c"
+ }
+ },
+ "name": "string.quoted.double.include.c"
+ },
+ {
+ "begin": "<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.c"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.c"
+ }
+ },
+ "name": "string.quoted.other.lt-gt.include.c"
+ }
+ ]
+ },
+ "anon_pattern_range_4": {
+ "begin": "^\\s*((#)\\s*line)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.line.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ "anon_pattern_range_5": {
+ "begin": "^\\s*(?:((#)\\s*undef))\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.undef.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "match": "[a-zA-Z_$][\\w$]*",
+ "name": "entity.name.function.preprocessor.c"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ "anon_pattern_range_6": {
+ "begin": "^\\s*(?:((#)\\s*pragma))\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.pragma.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.pragma.c",
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "match": "[a-zA-Z_$][\\w\\-$]*",
+ "name": "entity.other.attribute-name.pragma.preprocessor.c"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ "anon_pattern_range_7": {
+ "name": "meta.function.c",
+ "begin": "(?<!\\w)(?!\\s*(?:atomic_uint_least64_t|atomic_uint_least16_t|atomic_uint_least32_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_fast64_t|atomic_uint_fast32_t|atomic_int_least64_t|atomic_int_least32_t|pthread_rwlockattr_t|atomic_uint_fast16_t|pthread_mutexattr_t|atomic_int_fast16_t|atomic_uint_fast8_t|atomic_int_fast64_t|atomic_int_least8_t|atomic_int_fast32_t|atomic_int_fast8_t|pthread_condattr_t|pthread_rwlock_t|atomic_uintptr_t|atomic_ptrdiff_t|atomic_uintmax_t|atomic_intmax_t|atomic_char32_t|atomic_intptr_t|atomic_char16_t|pthread_mutex_t|pthread_cond_t|atomic_wchar_t|uint_least64_t|uint_least32_t|uint_least16_t|pthread_once_t|pthread_attr_t|uint_least8_t|int_least32_t|int_least16_t|pthread_key_t|uint_fast32_t|uint_fast64_t|uint_fast16_t|atomic_size_t|atomic_ushort|atomic_ullong|int_least64_t|atomic_ulong|int_least8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|memory_order|atomic_schar|atomic_uchar|atomic_short|atomic_llong|thread_local|atomic_bool|atomic_uint|atomic_long|int_fast8_t|suseconds_t|atomic_char|atomic_int|useconds_t|_Imaginary|uintmax_t|uintmax_t|in_addr_t|in_port_t|_Noreturn|blksize_t|pthread_t|uintptr_t|volatile|u_quad_t|blkcnt_t|intmax_t|intptr_t|_Complex|uint16_t|uint32_t|uint64_t|_Alignof|_Alignas|continue|unsigned|restrict|intmax_t|register|int64_t|qaddr_t|segsz_t|_Atomic|alignas|default|caddr_t|nlink_t|typedef|u_short|fixpt_t|clock_t|swblk_t|ssize_t|alignof|daddr_t|int16_t|int32_t|uint8_t|struct|mode_t|size_t|time_t|ushort|u_long|u_char|int8_t|double|signed|static|extern|inline|return|switch|xor_eq|and_eq|bitand|not_eq|sizeof|quad_t|uid_t|bitor|union|off_t|key_t|ino_t|compl|u_int|short|const|false|while|float|pid_t|break|_Bool|or_eq|div_t|dev_t|gid_t|id_t|long|case|goto|else|bool|auto|id_t|enum|uint|true|NULL|void|char|for|not|int|and|xor|do|or|if)\\s*\\()(?=[a-zA-Z_]\\w*\\s*\\()",
+ "end": "(?!\\G)(?<=\\))",
+ "patterns": [
+ {
+ "include": "#function-innards"
+ }
+ ]
+ },
+ "anon_pattern_range_8": {
+ "name": "meta.bracket.square.access.c",
+ "begin": "([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))?(\\[)(?!\\])",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.object.c"
+ },
+ "2": {
+ "name": "punctuation.definition.begin.bracket.square.c"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.square.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ "anon_pattern_range_9": {
+ "name": "storage.modifier.array.bracket.square.c",
+ "match": "\\[\\s*\\]"
+ },
+ "backslash_escapes": {
+ "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} )",
+ "name": "constant.character.escape.c"
+ },
+ "block": {
+ "patterns": [
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.c"
+ }
+ },
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.c"
+ }
+ },
+ "name": "meta.block.c",
+ "patterns": [
+ {
+ "include": "#block_innards"
+ }
+ ]
+ }
+ ]
+ },
+ "block_comment": {
+ "patterns": [
+ {
+ "begin": "\\s*+(\\/\\*)",
+ "end": "\\*\\/",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.begin.c"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.c"
+ }
+ },
+ "name": "comment.block.c"
+ },
+ {
+ "begin": "\\s*+(\\/\\*)",
+ "end": "\\*\\/",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.begin.c"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.c"
+ }
+ },
+ "name": "comment.block.c"
+ }
+ ]
+ },
+ "block_innards": {
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-enabled-block"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-block"
+ },
+ {
+ "include": "#preprocessor-rule-conditional-block"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#c_function_call"
+ },
+ {
+ "name": "meta.initialization.c",
+ "begin": "(?x)\n(?:\n (?:\n\t(?=\\s)(?<!else|new|return)\n\t(?<=\\w) \\s+(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas) # or word + space before name\n )\n)\n(\n (?:[A-Za-z_][A-Za-z0-9_]*+ | :: )++ # actual name\n |\n (?:(?<=operator) (?:[-*&<>=+!]+ | \\(\\) | \\[\\]))\n)\n\\s*(\\() # opening bracket",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.c"
+ },
+ "2": {
+ "name": "punctuation.section.parens.begin.bracket.round.initialization.c"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.initialization.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.c"
+ }
+ },
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ {
+ "include": "#parens-block"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "c_conditional_context": {
+ "patterns": [
+ {
+ "include": "$self"
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ "c_function_call": {
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(?=\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)",
+ "end": "(?<=\\))(?!\\w)",
+ "name": "meta.function-call.c",
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ "case_statement": {
+ "name": "meta.conditional.case.c",
+ "begin": "((?>(?:(?:(?>(?<!\\s)\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?<!\\w)case(?!\\w))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "3": {
+ "name": "comment.block.c"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ },
+ "5": {
+ "name": "keyword.control.case.c"
+ }
+ },
+ "end": "(:)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.colon.case.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ },
+ {
+ "include": "#c_conditional_context"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "patterns": [
+ {
+ "patterns": [
+ {
+ "name": "comment.line.double-slash.documentation.c",
+ "begin": "(?:^)(?>\\s*)(\\/\\/[!\\/]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.documentation.c"
+ }
+ },
+ "end": "(?<=\\n)(?<!\\\\\\n)",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.c"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.c"
+ },
+ "2": {
+ "name": "markup.italic.doxygen.c"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.c"
+ },
+ "2": {
+ "name": "markup.bold.doxygen.c"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.c"
+ },
+ "2": {
+ "name": "markup.inline.raw.string.c"
+ }
+ }
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.c"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.c"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?\\s*(?:in|out)\\s*)+)\\])?\\s+(\\b\\w+\\b)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.c"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "in|out",
+ "name": "keyword.other.parameter.direction.$0.c"
+ }
+ ]
+ },
+ "3": {
+ "name": "variable.parameter.c"
+ }
+ }
+ },
+ {
+ "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|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.c"
+ },
+ {
+ "match": "(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.c"
+ },
+ {
+ "match": "(?:\\b[A-Z]+:|@[a-z_]+:)",
+ "name": "storage.type.class.gtkdoc"
+ }
+ ]
+ },
+ {
+ "match": "(\\/\\*[!*]+(?=\\s))(.+)([!*]*\\*\\/)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.begin.documentation.c"
+ },
+ "2": {
+ "patterns": [
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.c"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.c"
+ },
+ "2": {
+ "name": "markup.italic.doxygen.c"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.c"
+ },
+ "2": {
+ "name": "markup.bold.doxygen.c"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.c"
+ },
+ "2": {
+ "name": "markup.inline.raw.string.c"
+ }
+ }
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.c"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.c"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?\\s*(?:in|out)\\s*)+)\\])?\\s+(\\b\\w+\\b)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.c"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "in|out",
+ "name": "keyword.other.parameter.direction.$0.c"
+ }
+ ]
+ },
+ "3": {
+ "name": "variable.parameter.c"
+ }
+ }
+ },
+ {
+ "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|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.c"
+ },
+ {
+ "match": "(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.c"
+ },
+ {
+ "match": "(?:\\b[A-Z]+:|@[a-z_]+:)",
+ "name": "storage.type.class.gtkdoc"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.comment.end.documentation.c"
+ }
+ },
+ "name": "comment.block.documentation.c"
+ },
+ {
+ "name": "comment.block.documentation.c",
+ "begin": "((?>\\s*)\\/\\*[!*]+(?:(?:\\n|$)|(?=\\s)))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.begin.documentation.c"
+ }
+ },
+ "end": "([!*]*\\*\\/)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.end.documentation.c"
+ }
+ },
+ "patterns": [
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.c"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.c"
+ },
+ "2": {
+ "name": "markup.italic.doxygen.c"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.c"
+ },
+ "2": {
+ "name": "markup.bold.doxygen.c"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.c"
+ },
+ "2": {
+ "name": "markup.inline.raw.string.c"
+ }
+ }
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.c"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.c"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?\\s*(?:in|out)\\s*)+)\\])?\\s+(\\b\\w+\\b)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.c"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "in|out",
+ "name": "keyword.other.parameter.direction.$0.c"
+ }
+ ]
+ },
+ "3": {
+ "name": "variable.parameter.c"
+ }
+ }
+ },
+ {
+ "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|todo|tparam|version|warning|xrefitem)\\b(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.c"
+ },
+ {
+ "match": "(?<=[\\s*!\\/])[\\\\@](?:code|cond|docbookonly|dot|htmlonly|internal|latexonly|link|manonly|msc|parblock|rtfonly|secreflist|uml|verbatim|xmlonly|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|enduml|endverbatim|endxmlonly)\\b(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.c"
+ },
+ {
+ "match": "(?:\\b[A-Z]+:|@[a-z_]+:)",
+ "name": "storage.type.class.gtkdoc"
+ }
+ ]
+ },
+ {
+ "match": "^\\/\\* =(\\s*.*?)\\s*= \\*\\/$\\n?",
+ "captures": {
+ "1": {
+ "name": "meta.toc-list.banner.block.c"
+ }
+ },
+ "name": "comment.block.banner.c"
+ },
+ {
+ "name": "comment.block.c",
+ "begin": "(\\/\\*)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.begin.c"
+ }
+ },
+ "end": "(\\*\\/)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.end.c"
+ }
+ }
+ },
+ {
+ "match": "^\\/\\/ =(\\s*.*?)\\s*=$\\n?",
+ "captures": {
+ "1": {
+ "name": "meta.toc-list.banner.line.c"
+ }
+ },
+ "name": "comment.line.banner.c"
+ },
+ {
+ "begin": "((?:^[ \\t]+)?)(?=\\/\\/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.c"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "name": "comment.line.double-slash.c",
+ "begin": "(\\/\\/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.c"
+ }
+ },
+ "end": "(?=\\n)",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#block_comment"
+ },
+ {
+ "include": "#line_comment"
+ }
+ ]
+ },
+ {
+ "include": "#block_comment"
+ },
+ {
+ "include": "#line_comment"
+ }
+ ]
+ },
+ "default_statement": {
+ "name": "meta.conditional.case.c",
+ "begin": "((?>(?:(?:(?>(?<!\\s)\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?<!\\w)default(?!\\w))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "3": {
+ "name": "comment.block.c"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ },
+ "5": {
+ "name": "keyword.control.default.c"
+ }
+ },
+ "end": "(:)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.colon.case.default.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ },
+ {
+ "include": "#c_conditional_context"
+ }
+ ]
+ },
+ "disabled": {
+ "begin": "^\\s*#\\s*if(n?def)?\\b.*$",
+ "end": "^\\s*#\\s*endif\\b",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ "evaluation_context": {
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "function-call-innards": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.c"
+ },
+ "2": {
+ "name": "punctuation.section.arguments.begin.bracket.round.c"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.c"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ "function-innards": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#vararg_ellipses"
+ },
+ {
+ "name": "meta.function.definition.parameters.c",
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.c"
+ },
+ "2": {
+ "name": "punctuation.section.parameters.begin.bracket.round.c"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#probably_a_parameter"
+ },
+ {
+ "include": "#function-innards"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.c"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-innards"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "inline_comment": {
+ "patterns": [
+ {
+ "patterns": [
+ {
+ "match": "(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/))",
+ "captures": {
+ "1": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "2": {
+ "name": "comment.block.c"
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/))",
+ "captures": {
+ "1": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "2": {
+ "name": "comment.block.c"
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "match": "(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/))",
+ "captures": {
+ "1": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "2": {
+ "name": "comment.block.c"
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "line_comment": {
+ "patterns": [
+ {
+ "begin": "\\s*+(\\/\\/)",
+ "end": "(?<=\\n)(?<!\\\\\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.c"
+ }
+ },
+ "endCaptures": {},
+ "name": "comment.line.double-slash.c",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*+(\\/\\/)",
+ "end": "(?<=\\n)(?<!\\\\\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.c"
+ }
+ },
+ "endCaptures": {},
+ "name": "comment.line.double-slash.c",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ }
+ ]
+ },
+ "line_continuation_character": {
+ "patterns": [
+ {
+ "match": "(\\\\)\\n",
+ "captures": {
+ "1": {
+ "name": "constant.character.escape.line-continuation.c"
+ }
+ }
+ }
+ ]
+ },
+ "member_access": {
+ "match": "((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))((?:[a-zA-Z_]\\w*\\s*(?:(?:(?:\\.\\*|\\.))|(?:(?:->\\*|->)))\\s*)*)\\s*(\\b(?!(?:atomic_uint_least64_t|atomic_uint_least16_t|atomic_uint_least32_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_fast64_t|atomic_uint_fast32_t|atomic_int_least64_t|atomic_int_least32_t|pthread_rwlockattr_t|atomic_uint_fast16_t|pthread_mutexattr_t|atomic_int_fast16_t|atomic_uint_fast8_t|atomic_int_fast64_t|atomic_int_least8_t|atomic_int_fast32_t|atomic_int_fast8_t|pthread_condattr_t|atomic_uintptr_t|atomic_ptrdiff_t|pthread_rwlock_t|atomic_uintmax_t|pthread_mutex_t|atomic_intmax_t|atomic_intptr_t|atomic_char32_t|atomic_char16_t|pthread_attr_t|atomic_wchar_t|uint_least64_t|uint_least32_t|uint_least16_t|pthread_cond_t|pthread_once_t|uint_fast64_t|uint_fast16_t|atomic_size_t|uint_least8_t|int_least64_t|int_least32_t|int_least16_t|pthread_key_t|atomic_ullong|atomic_ushort|uint_fast32_t|atomic_schar|atomic_short|uint_fast8_t|int_fast64_t|int_fast32_t|int_fast16_t|atomic_ulong|atomic_llong|int_least8_t|atomic_uchar|memory_order|suseconds_t|int_fast8_t|atomic_bool|atomic_char|atomic_uint|atomic_long|atomic_int|useconds_t|_Imaginary|blksize_t|pthread_t|in_addr_t|uintptr_t|in_port_t|uintmax_t|uintmax_t|blkcnt_t|uint16_t|unsigned|_Complex|uint32_t|intptr_t|intmax_t|intmax_t|uint64_t|u_quad_t|int64_t|int32_t|ssize_t|caddr_t|clock_t|uint8_t|u_short|swblk_t|segsz_t|int16_t|fixpt_t|daddr_t|nlink_t|qaddr_t|size_t|time_t|mode_t|signed|quad_t|ushort|u_long|u_char|double|int8_t|ino_t|uid_t|pid_t|_Bool|float|dev_t|div_t|short|gid_t|off_t|u_int|key_t|id_t|uint|long|void|char|bool|id_t|int)\\b)[a-zA-Z_]\\w*\\b(?!\\())",
+ "captures": {
+ "1": {
+ "name": "variable.other.object.access.c"
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.c"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.c"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "match": "((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
+ "captures": {
+ "1": {
+ "name": "variable.other.object.access.c"
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.c"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.c"
+ }
+ }
+ }
+ ]
+ },
+ "5": {
+ "name": "variable.other.member.c"
+ }
+ }
+ },
+ "method_access": {
+ "contentName": "meta.function-call.member.c",
+ "begin": "((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))((?:[a-zA-Z_]\\w*\\s*(?:(?:(?:\\.\\*|\\.))|(?:(?:->\\*|->)))\\s*)*)\\s*([a-zA-Z_]\\w*)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.object.access.c"
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.c"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.c"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "match": "((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
+ "captures": {
+ "1": {
+ "name": "variable.other.object.access.c"
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.c"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.c"
+ }
+ }
+ }
+ ]
+ },
+ "5": {
+ "name": "entity.name.function.member.c"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.member.c"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.member.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ "numbers": {
+ "match": "(?<!\\w)\\.?\\d(?:(?:[0-9a-zA-Z_\\.]|')|(?<=[eEpP])[+-])*",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "begin": "(?=.)",
+ "end": "$",
+ "patterns": [
+ {
+ "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))?$",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.hexadecimal.c"
+ },
+ "2": {
+ "name": "constant.numeric.hexadecimal.c",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric"
+ },
+ "4": {
+ "name": "constant.numeric.hexadecimal.c"
+ },
+ "5": {
+ "name": "constant.numeric.hexadecimal.c",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.separator.constant.numeric"
+ },
+ "8": {
+ "name": "keyword.other.unit.exponent.hexadecimal.c"
+ },
+ "9": {
+ "name": "keyword.operator.plus.exponent.hexadecimal.c"
+ },
+ "10": {
+ "name": "keyword.operator.minus.exponent.hexadecimal.c"
+ },
+ "11": {
+ "name": "constant.numeric.exponent.hexadecimal.c",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric"
+ }
+ ]
+ },
+ "12": {
+ "name": "keyword.other.unit.suffix.floating-point.c"
+ }
+ }
+ },
+ {
+ "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))?$",
+ "captures": {
+ "2": {
+ "name": "constant.numeric.decimal.c",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric"
+ },
+ "4": {
+ "name": "constant.numeric.decimal.point.c"
+ },
+ "5": {
+ "name": "constant.numeric.decimal.c",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.separator.constant.numeric"
+ },
+ "8": {
+ "name": "keyword.other.unit.exponent.decimal.c"
+ },
+ "9": {
+ "name": "keyword.operator.plus.exponent.decimal.c"
+ },
+ "10": {
+ "name": "keyword.operator.minus.exponent.decimal.c"
+ },
+ "11": {
+ "name": "constant.numeric.exponent.decimal.c",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric"
+ }
+ ]
+ },
+ "12": {
+ "name": "keyword.other.unit.suffix.floating-point.c"
+ }
+ }
+ },
+ {
+ "match": "(\\G0[bB])([01](?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w))?$",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.binary.c"
+ },
+ "2": {
+ "name": "constant.numeric.binary.c",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric"
+ },
+ "4": {
+ "name": "keyword.other.unit.suffix.integer.c"
+ }
+ }
+ },
+ {
+ "match": "(\\G0)((?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))+)((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w))?$",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.octal.c"
+ },
+ "2": {
+ "name": "constant.numeric.octal.c",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric"
+ },
+ "4": {
+ "name": "keyword.other.unit.suffix.integer.c"
+ }
+ }
+ },
+ {
+ "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))?$",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.hexadecimal.c"
+ },
+ "2": {
+ "name": "constant.numeric.hexadecimal.c",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric"
+ },
+ "5": {
+ "name": "keyword.other.unit.exponent.hexadecimal.c"
+ },
+ "6": {
+ "name": "keyword.operator.plus.exponent.hexadecimal.c"
+ },
+ "7": {
+ "name": "keyword.operator.minus.exponent.hexadecimal.c"
+ },
+ "8": {
+ "name": "constant.numeric.exponent.hexadecimal.c",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric"
+ }
+ ]
+ },
+ "9": {
+ "name": "keyword.other.unit.suffix.integer.c"
+ }
+ }
+ },
+ {
+ "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))?$",
+ "captures": {
+ "2": {
+ "name": "constant.numeric.decimal.c",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric"
+ },
+ "5": {
+ "name": "keyword.other.unit.exponent.decimal.c"
+ },
+ "6": {
+ "name": "keyword.operator.plus.exponent.decimal.c"
+ },
+ "7": {
+ "name": "keyword.operator.minus.exponent.decimal.c"
+ },
+ "8": {
+ "name": "constant.numeric.exponent.decimal.c",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric"
+ }
+ ]
+ },
+ "9": {
+ "name": "keyword.other.unit.suffix.integer.c"
+ }
+ }
+ },
+ {
+ "match": "(?:(?:[0-9a-zA-Z_\\.]|')|(?<=[eEpP])[+-])+",
+ "name": "invalid.illegal.constant.numeric"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "operators": {
+ "patterns": [
+ {
+ "match": "(?<![\\w$])(sizeof)(?![\\w$])",
+ "name": "keyword.operator.sizeof.c"
+ },
+ {
+ "match": "--",
+ "name": "keyword.operator.decrement.c"
+ },
+ {
+ "match": "\\+\\+",
+ "name": "keyword.operator.increment.c"
+ },
+ {
+ "match": "%=|\\+=|-=|\\*=|(?<!\\()/=",
+ "name": "keyword.operator.assignment.compound.c"
+ },
+ {
+ "match": "&=|\\^=|<<=|>>=|\\|=",
+ "name": "keyword.operator.assignment.compound.bitwise.c"
+ },
+ {
+ "match": "<<|>>",
+ "name": "keyword.operator.bitwise.shift.c"
+ },
+ {
+ "match": "!=|<=|>=|==|<|>",
+ "name": "keyword.operator.comparison.c"
+ },
+ {
+ "match": "&&|!|\\|\\|",
+ "name": "keyword.operator.logical.c"
+ },
+ {
+ "match": "&|\\||\\^|~",
+ "name": "keyword.operator.c"
+ },
+ {
+ "match": "=",
+ "name": "keyword.operator.assignment.c"
+ },
+ {
+ "match": "%|\\*|/|-|\\+",
+ "name": "keyword.operator.c"
+ },
+ {
+ "begin": "(\\?)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.c"
+ }
+ },
+ "end": "(:)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "parens": {
+ "name": "meta.parens.c",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.c"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "parens-block": {
+ "name": "meta.parens.block.c",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.c"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block_innards"
+ },
+ {
+ "match": "(?-mix:(?<!:):(?!:))",
+ "name": "punctuation.range-based.c"
+ }
+ ]
+ },
+ "pragma-mark": {
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.pragma.c"
+ },
+ "2": {
+ "name": "keyword.control.directive.pragma.pragma-mark.c"
+ },
+ "3": {
+ "name": "punctuation.definition.directive.c"
+ },
+ "4": {
+ "name": "entity.name.tag.pragma-mark.c"
+ }
+ },
+ "match": "^\\s*(((#)\\s*pragma\\s+mark)\\s+(.*))",
+ "name": "meta.section.c"
+ },
+ "predefined_macros": {
+ "patterns": [
+ {
+ "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",
+ "captures": {
+ "1": {
+ "name": "entity.name.other.preprocessor.macro.predefined.$1.c"
+ }
+ }
+ },
+ {
+ "match": "\\b__([A-Z_]+)__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.probably.$1.c"
+ }
+ ]
+ },
+ "preprocessor-rule-conditional": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if(?:n?def)?\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-enabled-elif"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-else"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-elif"
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "match": "^\\s*#\\s*(else|elif|endif)\\b",
+ "captures": {
+ "0": {
+ "name": "invalid.illegal.stray-$1.c"
+ }
+ }
+ }
+ ]
+ },
+ "preprocessor-rule-conditional-block": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if(?:n?def)?\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-enabled-elif-block"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-else-block"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-elif"
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ {
+ "match": "^\\s*#\\s*(else|elif|endif)\\b",
+ "captures": {
+ "0": {
+ "name": "invalid.illegal.stray-$1.c"
+ }
+ }
+ }
+ ]
+ },
+ "preprocessor-rule-conditional-line": {
+ "patterns": [
+ {
+ "match": "(?:\\bdefined\\b\\s*$)|(?:\\bdefined\\b(?=\\s*\\(*\\s*(?:(?!defined\\b)[a-zA-Z_$][\\w$]*\\b)\\s*\\)*\\s*(?:\\n|//|/\\*|\\?|\\:|&&|\\|\\||\\\\\\s*\\n)))",
+ "name": "keyword.control.directive.conditional.c"
+ },
+ {
+ "match": "\\bdefined\\b",
+ "name": "invalid.illegal.macro-name.c"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "begin": "\\?",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.c"
+ }
+ },
+ "end": ":",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "match": "\\b(NULL|true|false|TRUE|FALSE)\\b",
+ "name": "constant.language.c"
+ },
+ {
+ "match": "[a-zA-Z_$][\\w$]*",
+ "name": "entity.name.function.preprocessor.c"
+ },
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.c"
+ }
+ },
+ "end": "\\)|(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-define-line-blocks": {
+ "patterns": [
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.c"
+ }
+ },
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-blocks"
+ },
+ {
+ "include": "#preprocessor-rule-define-line-contents"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-define-line-contents"
+ }
+ ]
+ },
+ "preprocessor-rule-define-line-contents": {
+ "patterns": [
+ {
+ "include": "#vararg_ellipses"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.c"
+ }
+ },
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.c"
+ }
+ },
+ "name": "meta.block.c",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-blocks"
+ }
+ ]
+ },
+ {
+ "match": "\\(",
+ "name": "punctuation.section.parens.begin.bracket.round.c"
+ },
+ {
+ "match": "\\)",
+ "name": "punctuation.section.parens.end.bracket.round.c"
+ },
+ {
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\s*\\()\n(?=\n (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n |\n (?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)",
+ "end": "(?<=\\))(?!\\w)|(?<!\\\\)(?=\\s*\\n)",
+ "name": "meta.function.c",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-functions"
+ }
+ ]
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.c"
+ }
+ },
+ "end": "\"|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.c"
+ }
+ },
+ "name": "string.quoted.double.c",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#string_placeholder"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.c"
+ }
+ },
+ "end": "'|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.c"
+ }
+ },
+ "name": "string.quoted.single.c",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "preprocessor-rule-define-line-functions": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#vararg_ellipses"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.c"
+ },
+ "2": {
+ "name": "punctuation.section.arguments.begin.bracket.round.c"
+ }
+ },
+ "end": "(\\))|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-functions"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.c"
+ }
+ },
+ "end": "(\\))|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.end.bracket.round.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-functions"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-define-line-contents"
+ }
+ ]
+ },
+ "preprocessor-rule-disabled": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-elif"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-else"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-elif"
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "contentName": "comment.block.preprocessor.if-branch.c",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-disabled-block": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-elif-block"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-else-block"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-elif"
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "contentName": "comment.block.preprocessor.if-branch.in-block.c",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-disabled-elif": {
+ "begin": "^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "contentName": "comment.block.preprocessor.elif-branch.c",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ },
+ "3": {
+ "name": "constant.numeric.preprocessor.c"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "^\\s*((#)\\s*else\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "contentName": "comment.block.preprocessor.else-branch.c",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "contentName": "comment.block.preprocessor.if-branch.c",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-block": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "^\\s*((#)\\s*else\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "contentName": "comment.block.preprocessor.else-branch.in-block.c",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "contentName": "comment.block.preprocessor.if-branch.in-block.c",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#block_innards"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-elif": {
+ "begin": "^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:endif)\\b))",
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*(else)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "contentName": "comment.block.preprocessor.elif-branch.c",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*((#)\\s*(elif)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "contentName": "comment.block.preprocessor.elif-branch.c",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-elif-block": {
+ "begin": "^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:endif)\\b))",
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*(else)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "contentName": "comment.block.preprocessor.elif-branch.in-block.c",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*((#)\\s*(elif)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "contentName": "comment.block.preprocessor.elif-branch.c",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-else": {
+ "begin": "^\\s*((#)\\s*else\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-else-block": {
+ "begin": "^\\s*((#)\\s*else\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.c"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.c"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.c"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ "probably_a_parameter": {
+ "match": "(?<=(?:[a-zA-Z_0-9] |[&*>\\]\\)]))\\s*([a-zA-Z_]\\w*)\\s*(?=(?:\\[\\]\\s*)?(?:,|\\)))",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.probably.c"
+ }
+ }
+ },
+ "static_assert": {
+ "begin": "((?>(?:(?:(?>(?<!\\s)\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?<!\\w)static_assert|_Static_assert(?!\\w))((?>(?:(?:(?>(?<!\\s)\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "3": {
+ "name": "comment.block.c"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ },
+ "5": {
+ "name": "keyword.other.static_assert.c"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "8": {
+ "name": "comment.block.c"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ },
+ "10": {
+ "name": "punctuation.section.arguments.begin.bracket.round.static_assert.c"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.static_assert.c"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.static_assert.message.c",
+ "begin": "(,)\\s*(?=(?:L|u8|u|U\\s*\\\")?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.comma.c"
+ }
+ },
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#string_context"
+ }
+ ]
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "storage_types": {
+ "patterns": [
+ {
+ "match": "(?-mix:(?<!\\w)(?:unsigned|signed|double|_Bool|short|float|long|void|char|bool|int)(?!\\w))",
+ "name": "storage.type.built-in.primitive.c"
+ },
+ {
+ "match": "(?-mix:(?<!\\w)(?:atomic_uint_least64_t|atomic_uint_least16_t|atomic_uint_least32_t|pthread_rwlockattr_t|atomic_uint_fast64_t|atomic_uint_fast32_t|atomic_uint_fast16_t|atomic_int_least64_t|atomic_int_least32_t|atomic_int_least16_t|atomic_uint_least8_t|atomic_uint_fast8_t|atomic_int_least8_t|atomic_int_fast16_t|pthread_mutexattr_t|atomic_int_fast32_t|atomic_int_fast64_t|atomic_int_fast8_t|pthread_condattr_t|atomic_ptrdiff_t|pthread_rwlock_t|atomic_uintptr_t|atomic_uintmax_t|atomic_intmax_t|atomic_intptr_t|atomic_char32_t|atomic_char16_t|pthread_mutex_t|pthread_cond_t|atomic_wchar_t|uint_least64_t|uint_least32_t|uint_least16_t|pthread_once_t|pthread_attr_t|int_least32_t|pthread_key_t|int_least16_t|int_least64_t|uint_least8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|atomic_ushort|atomic_ullong|atomic_size_t|int_fast16_t|int_fast64_t|uint_fast8_t|atomic_short|atomic_uchar|atomic_schar|int_least8_t|memory_order|atomic_llong|atomic_ulong|int_fast32_t|atomic_long|atomic_uint|atomic_char|int_fast8_t|suseconds_t|atomic_bool|atomic_int|_Imaginary|useconds_t|in_port_t|uintmax_t|uintmax_t|pthread_t|blksize_t|in_addr_t|uintptr_t|blkcnt_t|uint16_t|uint32_t|uint64_t|u_quad_t|_Complex|intptr_t|intmax_t|intmax_t|segsz_t|u_short|nlink_t|uint8_t|int64_t|int32_t|int16_t|fixpt_t|daddr_t|caddr_t|qaddr_t|ssize_t|clock_t|swblk_t|u_long|mode_t|int8_t|time_t|ushort|u_char|quad_t|size_t|pid_t|gid_t|uid_t|dev_t|div_t|off_t|u_int|key_t|ino_t|uint|id_t|id_t)(?!\\w))",
+ "name": "storage.type.built-in.c"
+ },
+ {
+ "match": "(?-mix:\\b(enum|struct|union)\\b)",
+ "name": "storage.type.$1.c"
+ },
+ {
+ "name": "meta.asm.c",
+ "begin": "(\\b(?:__asm__|asm)\\b)\\s*((?:volatile)?)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.asm.c"
+ },
+ "2": {
+ "name": "storage.modifier.c"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "match": "(?:^)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))(?:\\n|$)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "3": {
+ "name": "comment.block.c"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "(((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.begin.bracket.round.assembly.c"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "4": {
+ "name": "comment.block.c"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.end.bracket.round.assembly.c"
+ }
+ },
+ "patterns": [
+ {
+ "name": "string.quoted.double.c",
+ "contentName": "meta.embedded.assembly.c",
+ "begin": "(R?)(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.encoding.c"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.assembly.c"
+ }
+ },
+ "end": "(\")",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.assembly.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.asm"
+ },
+ {
+ "include": "source.x86"
+ },
+ {
+ "include": "source.x86_64"
+ },
+ {
+ "include": "source.arm"
+ },
+ {
+ "include": "#backslash_escapes"
+ },
+ {
+ "include": "#string_escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.begin.bracket.round.assembly.inner.c"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.end.bracket.round.assembly.inner.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": "\\[((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))([a-zA-Z_]\\w*)((?:(?:(?>\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+?|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z)))\\]",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "3": {
+ "name": "comment.block.c"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ },
+ "5": {
+ "name": "variable.other.asm.label.c"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "8": {
+ "name": "comment.block.c"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": ":",
+ "name": "punctuation.separator.delimiter.colon.assembly.c"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "string_escaped_char": {
+ "patterns": [
+ {
+ "match": "(?x)\\\\ (\n\\\\\t\t\t |\n[abefnprtv'\"?] |\n[0-3]\\d{,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} )",
+ "name": "constant.character.escape.c"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unknown-escape.c"
+ }
+ ]
+ },
+ "string_placeholder": {
+ "patterns": [
+ {
+ "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",
+ "name": "constant.other.placeholder.c"
+ },
+ {
+ "match": "(%)(?!\"\\s*(PRI|SCN))",
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.placeholder.c"
+ }
+ }
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.c"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.c"
+ }
+ },
+ "name": "string.quoted.double.c",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#string_placeholder"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.c"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.c"
+ }
+ },
+ "name": "string.quoted.single.c",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ }
+ ]
+ },
+ "switch_conditional_parentheses": {
+ "name": "meta.conditional.switch.c",
+ "begin": "((?>(?:(?:(?>(?<!\\s)\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "3": {
+ "name": "comment.block.c"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.section.parens.begin.bracket.round.conditional.switch.c"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.end.bracket.round.conditional.switch.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ },
+ {
+ "include": "#c_conditional_context"
+ }
+ ]
+ },
+ "switch_statement": {
+ "name": "meta.block.switch.c",
+ "begin": "(((?>(?:(?:(?>(?<!\\s)\\s+)|(\\/\\*)((?>(?:[^\\*]|(?>\\*+)[^\\/])*)((?>\\*+)\\/)))+|(?:(?:(?:(?:\\b|(?<=\\W))|(?=\\W))|\\A)|\\Z))))((?<!\\w)switch(?!\\w)))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.switch.c"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.c punctuation.definition.comment.begin.c"
+ },
+ "4": {
+ "name": "comment.block.c"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.c punctuation.definition.comment.end.c"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.c"
+ }
+ ]
+ },
+ "6": {
+ "name": "keyword.control.switch.c"
+ }
+ },
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "patterns": [
+ {
+ "name": "meta.head.switch.c",
+ "begin": "\\G ?",
+ "end": "((?:\\{|<%|\\?\\?<|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.switch.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#switch_conditional_parentheses"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.switch.c",
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "(\\}|%>|\\?\\?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.switch.c"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#default_statement"
+ },
+ {
+ "include": "#case_statement"
+ },
+ {
+ "include": "$self"
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.switch.c",
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "vararg_ellipses": {
+ "match": "(?<!\\.)\\.\\.\\.(?!\\.)",
+ "name": "punctuation.vararg-ellipses.c"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/cadence.tmLanguage.json b/node_modules/shiki/languages/cadence.tmLanguage.json
new file mode 100644
index 0000000..13c0d07
--- /dev/null
+++ b/node_modules/shiki/languages/cadence.tmLanguage.json
@@ -0,0 +1,738 @@
+{
+ "scopeName": "source.cadence",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#expressions"
+ },
+ {
+ "include": "#declarations"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#code-block"
+ },
+ {
+ "include": "#composite"
+ },
+ {
+ "include": "#event"
+ }
+ ],
+ "repository": {
+ "comments": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.cadence"
+ }
+ },
+ "match": "\\A^(#!).*$\\n?",
+ "name": "comment.line.number-sign.cadence"
+ },
+ {
+ "begin": "/\\*\\*(?!/)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.cadence"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.cadence"
+ }
+ },
+ "name": "comment.block.documentation.cadence",
+ "patterns": [
+ {
+ "include": "#nested"
+ }
+ ]
+ },
+ {
+ "begin": "/\\*:",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.cadence"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.cadence"
+ }
+ },
+ "name": "comment.block.documentation.playground.cadence",
+ "patterns": [
+ {
+ "include": "#nested"
+ }
+ ]
+ },
+ {
+ "begin": "/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.cadence"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.cadence"
+ }
+ },
+ "name": "comment.block.cadence",
+ "patterns": [
+ {
+ "include": "#nested"
+ }
+ ]
+ },
+ {
+ "match": "\\*/",
+ "name": "invalid.illegal.unexpected-end-of-block-comment.cadence"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.cadence"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "///",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.cadence"
+ }
+ },
+ "end": "^",
+ "name": "comment.line.triple-slash.documentation.cadence"
+ },
+ {
+ "begin": "//:",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.cadence"
+ }
+ },
+ "end": "^",
+ "name": "comment.line.double-slash.documentation.cadence"
+ },
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.cadence"
+ }
+ },
+ "end": "^",
+ "name": "comment.line.double-slash.cadence"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "nested": {
+ "begin": "/\\*",
+ "end": "\\*/",
+ "patterns": [
+ {
+ "include": "#nested"
+ }
+ ]
+ }
+ }
+ },
+ "literals": {
+ "patterns": [
+ {
+ "include": "#boolean"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "match": "\\bnil\\b",
+ "name": "constant.language.nil.cadence"
+ }
+ ],
+ "repository": {
+ "boolean": {
+ "match": "\\b(true|false)\\b",
+ "name": "constant.language.boolean.cadence"
+ },
+ "numeric": {
+ "patterns": [
+ {
+ "include": "#binary"
+ },
+ {
+ "include": "#octal"
+ },
+ {
+ "include": "#decimal"
+ },
+ {
+ "include": "#hexadecimal"
+ }
+ ],
+ "repository": {
+ "binary": {
+ "comment": "",
+ "match": "(\\B\\-|\\b)0b[01]([_01]*[01])?\\b",
+ "name": "constant.numeric.integer.binary.cadence"
+ },
+ "octal": {
+ "comment": "",
+ "match": "(\\B\\-|\\b)0o[0-7]([_0-7]*[0-7])?\\b",
+ "name": "constant.numeric.integer.octal.cadence"
+ },
+ "decimal": {
+ "comment": "",
+ "match": "(\\B\\-|\\b)[0-9]([_0-9]*[0-9])?\\b",
+ "name": "constant.numeric.integer.decimal.cadence"
+ },
+ "hexadecimal": {
+ "comment": "",
+ "match": "(\\B\\-|\\b)0x[0-9A-Fa-f]([_0-9A-Fa-f]*[0-9A-Fa-f])?\\b",
+ "name": "constant.numeric.integer.hexadecimal.cadence"
+ }
+ }
+ },
+ "string": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cadence"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cadence"
+ }
+ },
+ "name": "string.quoted.double.single-line.cadence",
+ "patterns": [
+ {
+ "match": "\\r|\\n",
+ "name": "invalid.illegal.returns-not-allowed.cadence"
+ },
+ {
+ "include": "#string-guts"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "string-guts": {
+ "patterns": [
+ {
+ "match": "\\\\[0\\\\tnr\"']",
+ "name": "constant.character.escape.cadence"
+ },
+ {
+ "match": "\\\\u\\{[0-9a-fA-F]{1,8}\\}",
+ "name": "constant.character.escape.unicode.cadence"
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "operators": {
+ "patterns": [
+ {
+ "match": "\\-",
+ "name": "keyword.operator.arithmetic.unary.cadence"
+ },
+ {
+ "match": "!",
+ "name": "keyword.operator.logical.not.cadence"
+ },
+ {
+ "match": "=",
+ "name": "keyword.operator.assignment.cadence"
+ },
+ {
+ "match": "<-",
+ "name": "keyword.operator.move.cadence"
+ },
+ {
+ "match": "<-!",
+ "name": "keyword.operator.force-move.cadence"
+ },
+ {
+ "match": "\\+|\\-|\\*|/",
+ "name": "keyword.operator.arithmetic.cadence"
+ },
+ {
+ "match": "%",
+ "name": "keyword.operator.arithmetic.remainder.cadence"
+ },
+ {
+ "match": "==|!=|>|<|>=|<=",
+ "name": "keyword.operator.comparison.cadence"
+ },
+ {
+ "match": "\\?\\?",
+ "name": "keyword.operator.coalescing.cadence"
+ },
+ {
+ "match": "&&|\\|\\|",
+ "name": "keyword.operator.logical.cadence"
+ },
+ {
+ "match": "[?!]",
+ "name": "keyword.operator.type.optional.cadence"
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "match": "(?<!\\.)\\b(?:if|else|switch|case|default)\\b",
+ "name": "keyword.control.branch.cadence"
+ },
+ {
+ "match": "(?<!\\.)\\b(?:return|continue|break)\\b",
+ "name": "keyword.control.transfer.cadence"
+ },
+ {
+ "match": "(?<!\\.)\\b(?:while|for|in)\\b",
+ "name": "keyword.control.loop.cadence"
+ },
+ {
+ "match": "(?<!\\.)\\b(?:pre|post|prepare|execute|create|destroy|emit)\\b",
+ "name": "keyword.other.cadence"
+ },
+ {
+ "match": "(?<!\\.)\\b(?:private|pub(?:\\(set\\))?|access\\((?:self|contract|account|all)\\))\\b",
+ "name": "keyword.other.declaration-specifier.accessibility.cadence"
+ },
+ {
+ "match": "\\b(?:init|destroy)\\b",
+ "name": "storage.type.function.cadence"
+ },
+ {
+ "match": "(?<!\\.)\\b(?:import|from)\\b",
+ "name": "keyword.control.import.cadence"
+ }
+ ]
+ },
+ "code-block": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.begin.cadence"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.end.cadence"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "function": {
+ "begin": "\\b(fun)\\b\\s+([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.cadence"
+ },
+ "2": {
+ "name": "entity.name.function.cadence"
+ }
+ },
+ "end": "(?<=\\})|$",
+ "name": "meta.definition.function.cadence",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#parameter-clause"
+ },
+ {
+ "include": "#function-result"
+ },
+ {
+ "begin": "(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.function.begin.cadence"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.function.end.cadence"
+ }
+ },
+ "name": "meta.definition.function.body.cadence",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "initializer": {
+ "begin": "(?<!\\.)\\b(init)\\s*(?=\\(|<)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.cadence"
+ }
+ },
+ "end": "(?<=\\})|$",
+ "name": "meta.definition.function.initializer.cadence",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#parameter-clause"
+ },
+ {
+ "begin": "(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.function.begin.cadence"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.function.end.cadence"
+ }
+ },
+ "name": "meta.definition.function.body.cadence",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "function-result": {
+ "begin": "(?<![/=\\-+!*%<>&|\\^~.])(:)(?![/=\\-+!*%<>&|\\^~.])\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.function-result.cadence"
+ }
+ },
+ "end": "(?!\\G)(?=\\{|;)|$",
+ "name": "meta.function-result.cadence",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "expressions": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#function-call-expression"
+ },
+ {
+ "include": "#literals"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#language-variables"
+ }
+ ]
+ },
+ "language-variables": {
+ "patterns": [
+ {
+ "match": "\\b(self)\\b",
+ "name": "variable.language.cadence"
+ }
+ ]
+ },
+ "function-call-expression": {
+ "patterns": [
+ {
+ "begin": "(?!(?:set|init))([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.any-method.cadence"
+ },
+ "4": {
+ "name": "punctuation.definition.arguments.begin.cadence"
+ }
+ },
+ "comment": "foo(args) -- a call whose callee is a highlightable name",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.cadence"
+ }
+ },
+ "name": "meta.function-call.cadence",
+ "patterns": [
+ {
+ "include": "#expression-element-list"
+ }
+ ]
+ }
+ ]
+ },
+ "expression-element-list": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.any-method.cadence"
+ },
+ "2": {
+ "name": "punctuation.separator.argument-label.cadence"
+ }
+ },
+ "comment": "an element with a label",
+ "end": "(?=[,)\\]])",
+ "patterns": [
+ {
+ "include": "#expressions"
+ }
+ ]
+ },
+ {
+ "begin": "(?![,)\\]])(?=\\S)",
+ "comment": "an element without a label (i.e. anything else)",
+ "end": "(?=[,)\\]])",
+ "patterns": [
+ {
+ "include": "#expressions"
+ }
+ ]
+ }
+ ]
+ },
+ "declarations": {
+ "patterns": [
+ {
+ "include": "#var-let-declaration"
+ },
+ {
+ "include": "#function"
+ },
+ {
+ "include": "#initializer"
+ }
+ ]
+ },
+ "var-let-declaration": {
+ "begin": "\\b(var|let)\\b\\s+([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.$1.cadence"
+ },
+ "2": {
+ "name": "entity.name.type.$1.cadence"
+ }
+ },
+ "end": "=|<-|<-!|$",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)",
+ "name": "storage.type.cadence"
+ }
+ ]
+ },
+ "parameter-clause": {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.begin.cadence"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.cadence"
+ }
+ },
+ "name": "meta.parameter-clause.cadence",
+ "patterns": [
+ {
+ "include": "#parameter-list"
+ }
+ ]
+ },
+ "parameter-list": {
+ "patterns": [
+ {
+ "match": "([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)\\s+([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)(?=\\s*:)",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.cadence"
+ },
+ "2": {
+ "name": "variable.parameter.function.cadence"
+ }
+ },
+ "comment": "External parameter labels are considered part of the function name"
+ },
+ {
+ "match": "(([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*))(?=\\s*:)",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.function.cadence"
+ },
+ "2": {
+ "name": "entity.name.function.cadence"
+ }
+ },
+ "comment": "If no external label is given, the name is both the external label and the internal variable name"
+ },
+ {
+ "begin": ":\\s*(?!\\s)",
+ "end": "(?=[,)])",
+ "patterns": [
+ {
+ "include": "#type"
+ },
+ {
+ "match": ":",
+ "name": "invalid.illegal.extra-colon-in-parameter-list.cadence"
+ }
+ ]
+ }
+ ]
+ },
+ "event": {
+ "begin": "\\b(event)\\b\\s+([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.event.cadence"
+ },
+ "2": {
+ "name": "entity.name.type.event.cadence"
+ }
+ },
+ "end": "(?<=\\))|$",
+ "name": "meta.definition.type.event.cadence",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#parameter-clause"
+ }
+ ]
+ },
+ "composite": {
+ "begin": "\\b((?:(?:struct|resource|contract)(?:\\s+interface)?)|transaction|enum)\\s+([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.$1.cadence"
+ },
+ "2": {
+ "name": "entity.name.type.$1.cadence"
+ }
+ },
+ "end": "(?<=\\})",
+ "name": "meta.definition.type.composite.cadence",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#conformance-clause"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.type.begin.cadence"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.type.end.cadence"
+ }
+ },
+ "name": "meta.definition.type.body.cadence",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "conformance-clause": {
+ "begin": "(:)(?=\\s*\\{)|(:)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "invalid.illegal.empty-conformance-clause.cadence"
+ },
+ "2": {
+ "name": "punctuation.separator.conformance-clause.cadence"
+ }
+ },
+ "end": "(?!\\G)$|(?=[={}])",
+ "name": "meta.conformance-clause.cadence",
+ "patterns": [
+ {
+ "begin": "\\G",
+ "end": "(?!\\G)$|(?=[={}])",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "name": "cadence"
+}
diff --git a/node_modules/shiki/languages/clarity.tmLanguage.json b/node_modules/shiki/languages/clarity.tmLanguage.json
new file mode 100644
index 0000000..d383c09
--- /dev/null
+++ b/node_modules/shiki/languages/clarity.tmLanguage.json
@@ -0,0 +1,875 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "name": "clarity",
+ "scopeName": "source.clar",
+ "uuid": "f9e9871d-2ea6-4be0-afd2-fc382d704716",
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#define-constant"
+ },
+ {
+ "include": "#define-data-var"
+ },
+ {
+ "include": "#define-map"
+ },
+ {
+ "include": "#define-function"
+ },
+ {
+ "include": "#define-fungible-token"
+ },
+ {
+ "include": "#define-non-fungible-token"
+ },
+ {
+ "include": "#define-trait"
+ },
+ {
+ "include": "#use-trait"
+ }
+ ],
+ "repository": {
+ "comment": {
+ "name": "comment.line.semicolon.clarity",
+ "match": "(?x) (?<=^|[()\\[\\]{}\",'`;\\s]) (;) .* $"
+ },
+ "expression": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#let-func"
+ },
+ {
+ "include": "#built-in-func"
+ },
+ {
+ "include": "#get-set-func"
+ }
+ ]
+ },
+ "keyword": {
+ "name": "constant.language.clarity",
+ "match": "\\b(?:block-height|burn-block-height|contract-caller|is-in-regtest|stx-liquid-supply|tx-sender)\\b"
+ },
+ "define-function": {
+ "begin": "(?x) (\\() \\s* (define-(?:public|private|read-only)) \\s+",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.define-function.start.clarity"
+ },
+ "2": {
+ "name": "keyword.declaration.define-function.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.define-function.end.clarity"
+ }
+ },
+ "name": "meta.define-function",
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "begin": "(?x) (\\() \\s* ([a-zA-Z][a-zA-Z0-9_\\-\\!\\?]*) \\s*",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.function-signature.start.clarity"
+ },
+ "2": {
+ "name": "entity.name.function.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.function-signature.end.clarity"
+ }
+ },
+ "name": "meta.define-function-signature",
+ "patterns": [
+ {
+ "begin": "(?x) (\\() \\s* ([a-zA-Z][a-zA-Z0-9_\\-\\!\\?]*) \\s+",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.function-argument.start.clarity"
+ },
+ "2": {
+ "name": "variable.parameter.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.function-argument.end.clarity"
+ }
+ },
+ "name": "meta.function-argument",
+ "patterns": [
+ {
+ "include": "#data-type"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "define-fungible-token": {
+ "match": "(?x) (\\() \\s* (define-fungible-token) \\s+ ([a-zA-Z][a-zA-Z0-9_\\-\\!\\?]*) (?:\\s+(u\\d+))?",
+ "captures": {
+ "1": {
+ "name": "punctuation.define-fungible-token.start.clarity"
+ },
+ "2": {
+ "name": "keyword.declaration.define-fungible-token.clarity"
+ },
+ "3": {
+ "name": "entity.name.fungible-token-name.clarity variable.other.clarity"
+ },
+ "4": {
+ "name": "constant.numeric.fungible-token-total-supply.clarity"
+ },
+ "5": {
+ "name": "punctuation.define-fungible-token.end.clarity"
+ }
+ }
+ },
+ "define-non-fungible-token": {
+ "begin": "(?x) (\\() \\s* (define-non-fungible-token) \\s+ ([a-zA-Z][a-zA-Z0-9_\\-\\!\\?]*) \\s+",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.define-non-fungible-token.start.clarity"
+ },
+ "2": {
+ "name": "keyword.declaration.define-non-fungible-token.clarity"
+ },
+ "3": {
+ "name": "entity.name.non-fungible-token-name.clarity variable.other.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.define-non-fungible-token.end.clarity"
+ }
+ },
+ "name": "meta.define-non-fungible-token",
+ "patterns": [
+ {
+ "include": "#data-type"
+ }
+ ]
+ },
+ "define-trait": {
+ "begin": "(?x) (\\() \\s* (define-trait) \\s+ ([a-zA-Z][a-zA-Z0-9_\\-\\!\\?]*) \\s+",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.define-trait.start.clarity"
+ },
+ "2": {
+ "name": "keyword.declaration.define-trait.clarity"
+ },
+ "3": {
+ "name": "entity.name.trait-name.clarity variable.other.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.define-trait.end.clarity"
+ }
+ },
+ "name": "meta.define-trait",
+ "patterns": [
+ {
+ "begin": "(?x) (\\() \\s*",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.define-trait-body.start.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.define-trait-body.end.clarity"
+ }
+ },
+ "name": "meta.define-trait-body",
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "begin": "(?x) (\\() \\s* ([a-zA-Z][a-zA-Z0-9_\\-\\!\\?]+\\??) \\s+",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.trait-function.start.clarity"
+ },
+ "2": {
+ "name": "entity.name.trait-function-name.clarity variable.other.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.trait-function.end.clarity"
+ }
+ },
+ "name": "meta.trait-function",
+ "patterns": [
+ {
+ "include": "#data-type"
+ },
+ {
+ "begin": "(?x) (\\() \\s*",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.trait-function-args.start.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.trait-function-args.end.clarity"
+ }
+ },
+ "name": "meta.trait-function-args",
+ "patterns": [
+ {
+ "include": "#data-type"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "use-trait": {
+ "begin": "(?x) (\\() \\s* (use-trait) \\s+ ([a-zA-Z][a-zA-Z0-9_\\-\\!\\?]*) \\s+",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.use-trait.start.clarity"
+ },
+ "2": {
+ "name": "keyword.declaration.use-trait.clarity"
+ },
+ "3": {
+ "name": "entity.name.trait-alias.clarity variable.other.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.use-trait.end.clarity"
+ }
+ },
+ "name": "meta.use-trait",
+ "patterns": [
+ {
+ "include": "#literal"
+ }
+ ]
+ },
+ "define-constant": {
+ "begin": "(?x) (\\() \\s* (define-constant) \\s+ ([a-zA-Z][a-zA-Z0-9_\\-\\!\\?]*) \\s+",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.define-constant.start.clarity"
+ },
+ "2": {
+ "name": "keyword.declaration.define-constant.clarity"
+ },
+ "3": {
+ "name": "entity.name.constant-name.clarity variable.other.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.define-constant.end.clarity"
+ }
+ },
+ "name": "meta.define-constant",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "define-data-var": {
+ "begin": "(?x) (\\() \\s* (define-data-var) \\s+ ([a-zA-Z][a-zA-Z0-9_\\-\\!\\?]*) \\s+",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.define-data-var.start.clarity"
+ },
+ "2": {
+ "name": "keyword.declaration.define-data-var.clarity"
+ },
+ "3": {
+ "name": "entity.name.data-var-name.clarity variable.other.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.define-data-var.end.clarity"
+ }
+ },
+ "name": "meta.define-data-var",
+ "patterns": [
+ {
+ "include": "#data-type"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "define-map": {
+ "begin": "(?x) (\\() \\s* (define-map) \\s+ ([a-zA-Z][a-zA-Z0-9_\\-\\!\\?]*) \\s+",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.define-map.start.clarity"
+ },
+ "2": {
+ "name": "keyword.declaration.define-map.clarity"
+ },
+ "3": {
+ "name": "entity.name.map-name.clarity variable.other.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.define-map.end.clarity"
+ }
+ },
+ "name": "meta.define-map",
+ "patterns": [
+ {
+ "include": "#data-type"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "literal": {
+ "patterns": [
+ {
+ "include": "#number-literal"
+ },
+ {
+ "include": "#bool-literal"
+ },
+ {
+ "include": "#string-literal"
+ },
+ {
+ "include": "#tuple-literal"
+ },
+ {
+ "include": "#principal-literal"
+ },
+ {
+ "include": "#list-literal"
+ },
+ {
+ "include": "#optional-literal"
+ },
+ {
+ "include": "#response-literal"
+ }
+ ],
+ "repository": {
+ "number-literal": {
+ "patterns": [
+ {
+ "comment": "unsigned integers",
+ "name": "constant.numeric.uint.clarity",
+ "match": "\\bu\\d+\\b"
+ },
+ {
+ "comment": "signed integers",
+ "name": "constant.numeric.int.clarity",
+ "match": "\\b\\d+\\b"
+ },
+ {
+ "comment": "hexadecimals",
+ "name": "constant.numeric.hex.clarity",
+ "match": "\\b0x[0-9a-f]*\\b"
+ }
+ ]
+ },
+ "bool-literal": {
+ "name": "constant.language.bool.clarity",
+ "match": "\\b(true|false)\\b"
+ },
+ "string-literal": {
+ "patterns": [
+ {
+ "name": "string.quoted.double.clarity",
+ "begin": "(u?)(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "string.quoted.utf8.clarity"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.clarity"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.clarity"
+ }
+ },
+ "patterns": [
+ {
+ "name": "constant.character.escape.quote",
+ "match": "\\\\."
+ }
+ ]
+ }
+ ]
+ },
+ "tuple-literal": {
+ "begin": "(\\{)",
+ "end": "(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.tuple.start.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.tuple.end.clarity"
+ }
+ },
+ "name": "meta.tuple",
+ "patterns": [
+ {
+ "name": "entity.name.tag.tuple-key.clarity",
+ "match": "([a-zA-Z][a-zA-Z0-9_\\-\\!\\?]*)(?=:)"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#user-func"
+ }
+ ]
+ },
+ "principal-literal": {
+ "name": "constant.other.principal.clarity",
+ "match": "(?x) \\'[0-9A-Z]{28,41}(:?\\.[a-zA-Z][a-zA-Z0-9\\-]+){0,2} | (\\.[a-zA-Z][a-zA-Z0-9\\-]*){1,2} (?=[\\s(){},]|$)"
+ },
+ "list-literal": {
+ "begin": "(?x) (\\() \\s* (list) \\s+",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.list.start.clarity"
+ },
+ "2": {
+ "name": "entity.name.type.list.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "names": "punctuation.list.end.clarity"
+ }
+ },
+ "name": "meta.list",
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#user-func"
+ }
+ ]
+ },
+ "optional-literal": {
+ "patterns": [
+ {
+ "match": "\\b(none)\\b",
+ "name": "constant.language.none.clarity"
+ },
+ {
+ "begin": "(?x) (\\() \\s* (some) \\s+",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.some.start.clarity"
+ },
+ "2": {
+ "name": "constant.language.some.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.some.end.clarity"
+ }
+ },
+ "name": "meta.some",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "response-literal": {
+ "begin": "(?x) (\\() \\s* (ok|err) \\s+",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.response.start.clarity"
+ },
+ "2": {
+ "name": "constant.language.ok-err.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.response.end.clarity"
+ }
+ },
+ "name": "meta.response",
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#user-func"
+ }
+ ]
+ }
+ }
+ },
+ "data-type": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "comment": "numerics",
+ "name": "entity.name.type.numeric.clarity",
+ "match": "\\b(uint|int)\\b"
+ },
+ {
+ "comment": "principal",
+ "name": "entity.name.type.principal.clarity",
+ "match": "\\b(principal)\\b"
+ },
+ {
+ "comment": "bool",
+ "name": "entity.name.type.bool.clarity",
+ "match": "\\b(bool)\\b"
+ },
+ {
+ "match": "(?x) (\\() \\s* (?:(string-ascii|string-utf8)\\s+(\\d+)) \\s* (\\))",
+ "captures": {
+ "1": {
+ "name": "punctuation.string-def.start.clarity"
+ },
+ "2": {
+ "name": "entity.name.type.string.clarity"
+ },
+ "3": {
+ "name": "constant.numeric.string-len.clarity"
+ },
+ "4": {
+ "name": "punctuation.string-def.end.clarity"
+ }
+ }
+ },
+ {
+ "match": "(?x) (\\() \\s* (buff)\\s+(\\d+)\\s* (\\))",
+ "captures": {
+ "1": {
+ "name": "punctuation.buff-def.start.clarity"
+ },
+ "2": {
+ "name": "entity.name.type.buff.clarity"
+ },
+ "3": {
+ "name": "constant.numeric.buf-len.clarity"
+ },
+ "4": {
+ "name": "punctuation.buff-def.end.clarity"
+ }
+ }
+ },
+ {
+ "comment": "optional",
+ "begin": "(?x) (\\() \\s* (optional)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.optional-def.start.clarity"
+ },
+ "2": {
+ "name": "storage.type.modifier"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.optional-def.end.clarity"
+ }
+ },
+ "name": "meta.optional-def",
+ "patterns": [
+ {
+ "include": "#data-type"
+ }
+ ]
+ },
+ {
+ "comment": "response",
+ "begin": "(?x) (\\() \\s* (response)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.response-def.start.clarity"
+ },
+ "2": {
+ "name": "storage.type.modifier"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.response-def.end.clarity"
+ }
+ },
+ "name": "meta.response-def",
+ "patterns": [
+ {
+ "include": "#data-type"
+ }
+ ]
+ },
+ {
+ "comment": "list",
+ "begin": "(?x) (\\() \\s* (list) \\s+ (\\d+) \\s+",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.list-def.start.clarity"
+ },
+ "2": {
+ "name": "entity.name.type.list.clarity"
+ },
+ "3": {
+ "name": "constant.numeric.list-len.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.list-def.end.clarity"
+ }
+ },
+ "name": "meta.list-def",
+ "patterns": [
+ {
+ "include": "#data-type"
+ }
+ ]
+ },
+ {
+ "begin": "(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.tuple-def.start.clarity"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.tuple-def.end.clarity"
+ }
+ },
+ "name": "meta.tuple-def",
+ "patterns": [
+ {
+ "name": "entity.name.tag.tuple-data-type-key.clarity",
+ "match": "([a-zA-Z][a-zA-Z0-9_\\-\\!\\?]*)(?=:)"
+ },
+ {
+ "include": "#data-type"
+ }
+ ]
+ }
+ ]
+ },
+ "built-in-func": {
+ "begin": "(?x) (\\() \\s* (\\-|\\+|<\\=|>\\=|<|>|\\*|/|and|append|as-contract|as-max-len\\?|asserts!|at-block|begin|concat|contract-call\\?|contract-of|default-to|element-at|filter|fold|ft-burn\\?|ft-get-balance|ft-get-supply|ft-mint\\?|ft-transfer\\?|get-block-info\\?|hash160|if|impl-trait|index-of|is-eq|is-err|is-none|is-ok|is-some|keccak256|len|log2|map|match|merge|mod|nft-burn\\?|nft-get-owner\\?|nft-mint\\?|nft-transfer\\?|not|or|pow|principal-of\\?|print|secp256k1-recover\\?|secp256k1-verify|sha256|sha512|sha512/256|sqrti|stx-burn\\?|stx-get-balance|stx-transfer\\?|to-int|to-uint|try!|unwrap-err-panic|unwrap-err!|unwrap-panic|unwrap!|xor) \\s+",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.built-in-function.start.clarity"
+ },
+ "2": {
+ "name": "keyword.declaration.built-in-function.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.built-in-function.end.clarity"
+ }
+ },
+ "name": "meta.built-in-function",
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#user-func"
+ }
+ ]
+ },
+ "get-set-func": {
+ "name": "meta.get-set-func",
+ "begin": "(?x) (\\() \\s* (var-get|var-set|map-get\\?|map-set|map-insert|map-delete|get) \\s+ ([a-zA-Z][a-zA-Z0-9_\\-\\!\\?]*) \\s*",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.get-set-func.start.clarity"
+ },
+ "2": {
+ "name": "keyword.control.clarity"
+ },
+ "3": {
+ "name": "variable.other.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.get-set-func.end.clarity"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "let-func": {
+ "begin": "(?x) (\\() \\s* (let) \\s*",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.let-function.start.clarity"
+ },
+ "2": {
+ "name": "keyword.declaration.let-function.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.let-function.end.clarity"
+ }
+ },
+ "name": "meta.let-function",
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#user-func"
+ },
+ {
+ "begin": "(?x) (\\() \\s*",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.let-var.start.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.let-var.end.clarity"
+ }
+ },
+ "name": "meta.let-var",
+ "patterns": [
+ {
+ "begin": "(?x) (\\() ([a-zA-Z][a-zA-Z0-9_\\-\\!\\?]*) \\s+",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.let-local-var.start.clarity"
+ },
+ "2": {
+ "name": "entity.name.let-local-var-name.clarity variable.parameter.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.let-local-var.end.clarity"
+ }
+ },
+ "name": "meta.let-local-var",
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#user-func"
+ }
+ ]
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "user-func": {
+ "begin": "(?x) (\\() \\s* (([a-zA-Z][a-zA-Z0-9_\\-\\!\\?]*)) \\s*",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.user-function.start.clarity"
+ },
+ "2": {
+ "name": "entity.name.function.clarity"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.user-function.end.clarity"
+ }
+ },
+ "name": "meta.user-function",
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/clojure.tmLanguage.json b/node_modules/shiki/languages/clojure.tmLanguage.json
new file mode 100644
index 0000000..d078016
--- /dev/null
+++ b/node_modules/shiki/languages/clojure.tmLanguage.json
@@ -0,0 +1,431 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/atom/language-clojure/blob/master/grammars/clojure.cson",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/atom/language-clojure/commit/45bdb881501d0b8f8b707ca1d3fcc8b4b99fca03",
+ "name": "clojure",
+ "scopeName": "source.clojure",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#shebang-comment"
+ },
+ {
+ "include": "#quoted-sexp"
+ },
+ {
+ "include": "#sexp"
+ },
+ {
+ "include": "#keyfn"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#vector"
+ },
+ {
+ "include": "#set"
+ },
+ {
+ "include": "#map"
+ },
+ {
+ "include": "#regexp"
+ },
+ {
+ "include": "#var"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#dynamic-variables"
+ },
+ {
+ "include": "#metadata"
+ },
+ {
+ "include": "#namespace-symbol"
+ },
+ {
+ "include": "#symbol"
+ }
+ ],
+ "repository": {
+ "comment": {
+ "begin": "(?<!\\\\);",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.clojure"
+ }
+ },
+ "end": "$",
+ "name": "comment.line.semicolon.clojure"
+ },
+ "constants": {
+ "patterns": [
+ {
+ "match": "(nil)(?=(\\s|\\)|\\]|\\}))",
+ "name": "constant.language.nil.clojure"
+ },
+ {
+ "match": "(true|false)",
+ "name": "constant.language.boolean.clojure"
+ },
+ {
+ "match": "(##(?:Inf|-Inf|NaN))",
+ "name": "constant.numeric.symbol.clojure"
+ },
+ {
+ "match": "([-+]?\\d+/\\d+)",
+ "name": "constant.numeric.ratio.clojure"
+ },
+ {
+ "match": "([-+]?(?:(?:3[0-6])|(?:[12]\\d)|[2-9])[rR][0-9A-Za-z]+N?)",
+ "name": "constant.numeric.arbitrary-radix.clojure"
+ },
+ {
+ "match": "([-+]?0[xX][0-9a-fA-F]+N?)",
+ "name": "constant.numeric.hexadecimal.clojure"
+ },
+ {
+ "match": "([-+]?0[0-7]+N?)",
+ "name": "constant.numeric.octal.clojure"
+ },
+ {
+ "match": "([-+]?[0-9]+(?:(\\.|(?=[eEM]))[0-9]*([eE][-+]?[0-9]+)?)M?)",
+ "name": "constant.numeric.double.clojure"
+ },
+ {
+ "match": "([-+]?\\d+N?)",
+ "name": "constant.numeric.long.clojure"
+ },
+ {
+ "include": "#keyword"
+ }
+ ]
+ },
+ "keyword": {
+ "match": "(?<=(\\s|\\(|\\[|\\{)):[\\w\\#\\.\\-\\_\\:\\+\\=\\>\\<\\/\\!\\?\\*]+(?=(\\s|\\)|\\]|\\}|\\,))",
+ "name": "constant.keyword.clojure"
+ },
+ "keyfn": {
+ "patterns": [
+ {
+ "match": "(?<=(\\s|\\(|\\[|\\{))(if(-[-\\p{Ll}\\?]*)?|when(-[-\\p{Ll}]*)?|for(-[-\\p{Ll}]*)?|cond|do|let(-[-\\p{Ll}\\?]*)?|binding|loop|recur|fn|throw[\\p{Ll}\\-]*|try|catch|finally|([\\p{Ll}]*case))(?=(\\s|\\)|\\]|\\}))",
+ "name": "storage.control.clojure"
+ },
+ {
+ "match": "(?<=(\\s|\\(|\\[|\\{))(declare-?|(in-)?ns|import|use|require|load|compile|(def[\\p{Ll}\\-]*))(?=(\\s|\\)|\\]|\\}))",
+ "name": "keyword.control.clojure"
+ }
+ ]
+ },
+ "dynamic-variables": {
+ "match": "\\*[\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\d]+\\*",
+ "name": "meta.symbol.dynamic.clojure"
+ },
+ "map": {
+ "begin": "(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.map.begin.clojure"
+ }
+ },
+ "end": "(\\}(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.map.end.trailing.clojure"
+ },
+ "2": {
+ "name": "punctuation.section.map.end.clojure"
+ }
+ },
+ "name": "meta.map.clojure",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "metadata": {
+ "patterns": [
+ {
+ "begin": "(\\^\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.metadata.map.begin.clojure"
+ }
+ },
+ "end": "(\\}(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.metadata.map.end.trailing.clojure"
+ },
+ "2": {
+ "name": "punctuation.section.metadata.map.end.clojure"
+ }
+ },
+ "name": "meta.metadata.map.clojure",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(\\^)",
+ "end": "(\\s)",
+ "name": "meta.metadata.simple.clojure",
+ "patterns": [
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "quoted-sexp": {
+ "begin": "(['``]\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.expression.begin.clojure"
+ }
+ },
+ "end": "(\\))$|(\\)(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.expression.end.trailing.clojure"
+ },
+ "2": {
+ "name": "punctuation.section.expression.end.trailing.clojure"
+ },
+ "3": {
+ "name": "punctuation.section.expression.end.clojure"
+ }
+ },
+ "name": "meta.quoted-expression.clojure",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "regexp": {
+ "begin": "#\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.regexp.begin.clojure"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.regexp.end.clojure"
+ }
+ },
+ "name": "string.regexp.clojure",
+ "patterns": [
+ {
+ "include": "#regexp_escaped_char"
+ }
+ ]
+ },
+ "regexp_escaped_char": {
+ "match": "\\\\.",
+ "name": "constant.character.escape.clojure"
+ },
+ "set": {
+ "begin": "(\\#\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.set.begin.clojure"
+ }
+ },
+ "end": "(\\}(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.set.end.trailing.clojure"
+ },
+ "2": {
+ "name": "punctuation.section.set.end.clojure"
+ }
+ },
+ "name": "meta.set.clojure",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "sexp": {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.expression.begin.clojure"
+ }
+ },
+ "end": "(\\))$|(\\)(?=[\\}\\]\\)\\s]*(?:;|$)))|(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.expression.end.trailing.clojure"
+ },
+ "2": {
+ "name": "punctuation.section.expression.end.trailing.clojure"
+ },
+ "3": {
+ "name": "punctuation.section.expression.end.clojure"
+ }
+ },
+ "name": "meta.expression.clojure",
+ "patterns": [
+ {
+ "begin": "(?<=\\()(ns|declare|def[\\w\\d._:+=><!?*-]*|[\\w._:+=><!?*-][\\w\\d._:+=><!?*-]*/def[\\w\\d._:+=><!?*-]*)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.clojure"
+ }
+ },
+ "end": "(?=\\))",
+ "name": "meta.definition.global.clojure",
+ "patterns": [
+ {
+ "include": "#metadata"
+ },
+ {
+ "include": "#dynamic-variables"
+ },
+ {
+ "match": "([\\p{L}\\.\\-\\_\\+\\=\\>\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)",
+ "name": "entity.global.clojure"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "#keyfn"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#vector"
+ },
+ {
+ "include": "#map"
+ },
+ {
+ "include": "#set"
+ },
+ {
+ "include": "#sexp"
+ },
+ {
+ "match": "(?<=\\()(.+?)(?=\\s|\\))",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.clojure"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "shebang-comment": {
+ "begin": "^(#!)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.shebang.clojure"
+ }
+ },
+ "end": "$",
+ "name": "comment.line.shebang.clojure"
+ },
+ "string": {
+ "begin": "(?<!\\\\)(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.clojure"
+ }
+ },
+ "end": "(\")",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.clojure"
+ }
+ },
+ "name": "string.quoted.double.clojure",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.clojure"
+ }
+ ]
+ },
+ "namespace-symbol": {
+ "patterns": [
+ {
+ "match": "([\\p{L}\\.\\-\\_\\+\\=\\>\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)/",
+ "captures": {
+ "1": {
+ "name": "meta.symbol.namespace.clojure"
+ }
+ }
+ }
+ ]
+ },
+ "symbol": {
+ "patterns": [
+ {
+ "match": "([\\p{L}\\.\\-\\_\\+\\=\\>\\<\\!\\?\\*][\\w\\.\\-\\_\\:\\+\\=\\>\\<\\!\\?\\*\\d]*)",
+ "name": "meta.symbol.clojure"
+ }
+ ]
+ },
+ "var": {
+ "match": "(?<=(\\s|\\(|\\[|\\{)\\#)'[\\w\\.\\-\\_\\:\\+\\=\\>\\<\\/\\!\\?\\*]+(?=(\\s|\\)|\\]|\\}))",
+ "name": "meta.var.clojure"
+ },
+ "vector": {
+ "begin": "(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.vector.begin.clojure"
+ }
+ },
+ "end": "(\\](?=[\\}\\]\\)\\s]*(?:;|$)))|(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.vector.end.trailing.clojure"
+ },
+ "2": {
+ "name": "punctuation.section.vector.end.clojure"
+ }
+ },
+ "name": "meta.vector.clojure",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/cmake.tmLanguage.json b/node_modules/shiki/languages/cmake.tmLanguage.json
new file mode 100644
index 0000000..d8bfb8d
--- /dev/null
+++ b/node_modules/shiki/languages/cmake.tmLanguage.json
@@ -0,0 +1,139 @@
+{
+ "fileTypes": ["cmake", "CMakeLists.txt"],
+ "name": "cmake",
+ "patterns": [
+ {
+ "comment": "Variables That Describe the System",
+ "match": "\\b(?i:APPLE|BORLAND|(CMAKE_)?(CL_64|COMPILER_2005|HOST_APPLE|HOST_SYSTEM|HOST_SYSTEM_NAME|HOST_SYSTEM_PROCESSOR|HOST_SYSTEM_VERSION|HOST_UNIX|HOST_WIN32|LIBRARY_ARCHITECTURE|LIBRARY_ARCHITECTURE_REGEX|OBJECT_PATH_MAX|SYSTEM|SYSTEM_NAME|SYSTEM_PROCESSOR|SYSTEM_VERSION)|CYGWIN|MSVC|MSVC80|MSVC_IDE|MSVC_VERSION|UNIX|WIN32|XCODE_VERSION|MSVC60|MSVC70|MSVC90|MSVC71)\\b",
+ "name": "constant.source.cmake"
+ },
+ {
+ "comment": "cmakeOperators",
+ "match": "\\b(?i:ABSOLUTE|AND|BOOL|CACHE|COMMAND|COMMENT|DEFINED|DOC|EQUAL|EXISTS|EXT|FALSE|GREATER|GREATER_EQUAL|INTERNAL|IN_LIST|IS_ABSOLUTE|IS_DIRECTORY|IS_NEWER_THAN|IS_SYMLINK|LESS|LESS_EQUAL|MATCHES|NAME|NAMES|NAME_WE|NOT|OFF|ON|OR|PATH|PATHS|POLICY|PROGRAM|STREQUAL|STRGREATER|STRGREATER_EQUAL|STRING|STRLESS|STRLESS_EQUAL|TARGET|TEST|TRUE|VERSION_EQUAL|VERSION_GREATER|VERSION_GREATER_EQUAL|VERSION_LESS)\\b",
+ "name": "keyword.cmake"
+ },
+ {
+ "comment": "Commands",
+ "match": "^\\s*\\b(?i:add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_libraries|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)\\b",
+ "name": "keyword.cmake"
+ },
+ {
+ "comment": "Variables That Change Behavior",
+ "match": "\\b(?i:BUILD_SHARED_LIBS|(CMAKE_)?(ABSOLUTE_DESTINATION_FILES|AUTOMOC_RELAXED_MODE|BACKWARDS_COMPATIBILITY|BUILD_TYPE|COLOR_MAKEFILE|CONFIGURATION_TYPES|DEBUG_TARGET_PROPERTIES|DISABLE_FIND_PACKAGE_\\w+|FIND_LIBRARY_PREFIXES|FIND_LIBRARY_SUFFIXES|IGNORE_PATH|INCLUDE_PATH|INSTALL_DEFAULT_COMPONENT_NAME|INSTALL_PREFIX|LIBRARY_PATH|MFC_FLAG|MODULE_PATH|NOT_USING_CONFIG_FLAGS|POLICY_DEFAULT_CMP\\w+|PREFIX_PATH|PROGRAM_PATH|SKIP_INSTALL_ALL_DEPENDENCY|SYSTEM_IGNORE_PATH|SYSTEM_INCLUDE_PATH|SYSTEM_LIBRARY_PATH|SYSTEM_PREFIX_PATH|SYSTEM_PROGRAM_PATH|USER_MAKE_RULES_OVERRIDE|WARN_ON_ABSOLUTE_INSTALL_DESTINATION))\\b",
+ "name": "variable.source.cmake"
+ },
+ {
+ "match": "\\$\\{\\w+\\}",
+ "name": "storage.source.cmake"
+ },
+ {
+ "match": "\\$ENV\\{\\w+\\}",
+ "name": "storage.source.cmake"
+ },
+ {
+ "comment": "Variables that Control the Build",
+ "match": "\\b(?i:(CMAKE_)?(\\w+_POSTFIX|ARCHIVE_OUTPUT_DIRECTORY|AUTOMOC|AUTOMOC_MOC_OPTIONS|BUILD_WITH_INSTALL_RPATH|DEBUG_POSTFIX|EXE_LINKER_FLAGS|EXE_LINKER_FLAGS_\\w+|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GNUtoMS|INCLUDE_CURRENT_DIR|INCLUDE_CURRENT_DIR_IN_INTERFACE|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_PATH_FLAG|LINK_DEF_FILE_FLAG|LINK_DEPENDS_NO_SHARED|LINK_INTERFACE_LIBRARIES|LINK_LIBRARY_FILE_FLAG|LINK_LIBRARY_FLAG|MACOSX_BUNDLE|NO_BUILTIN_CHRPATH|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|RUNTIME_OUTPUT_DIRECTORY|SKIP_BUILD_RPATH|SKIP_INSTALL_RPATH|TRY_COMPILE_CONFIGURATION|USE_RELATIVE_PATHS|WIN32_EXECUTABLE)|EXECUTABLE_OUTPUT_PATH|LIBRARY_OUTPUT_PATH)\\b",
+ "name": "variable.source.cmake"
+ },
+ {
+ "comment": "Variables that Provide Information",
+ "match": "\\b(?i:CMAKE_(AR|ARGC|ARGV0|BINARY_DIR|BUILD_TOOL|CACHEFILE_DIR|CACHE_MAJOR_VERSION|CACHE_MINOR_VERSION|CACHE_PATCH_VERSION|CFG_INTDIR|COMMAND|CROSSCOMPILING|CTEST_COMMAND|CURRENT_BINARY_DIR|CURRENT_LIST_DIR|CURRENT_LIST_FILE|CURRENT_LIST_LINE|CURRENT_SOURCE_DIR|DL_LIBS|EDIT_COMMAND|EXECUTABLE_SUFFIX|EXTRA_GENERATOR|EXTRA_SHARED_LIBRARY_SUFFIXES|GENERATOR|HOME_DIRECTORY|IMPORT_LIBRARY_PREFIX|IMPORT_LIBRARY_SUFFIX|LINK_LIBRARY_SUFFIX|MAJOR_VERSION|MAKE_PROGRAM|MINOR_VERSION|PARENT_LIST_FILE|PATCH_VERSION|PROJECT_NAME|RANLIB|ROOT|SCRIPT_MODE_FILE|SHARED_LIBRARY_PREFIX|SHARED_LIBRARY_SUFFIX|SHARED_MODULE_PREFIX|SHARED_MODULE_SUFFIX|SIZEOF_VOID_P|SKIP_RPATH|SOURCE_DIR|STANDARD_LIBRARIES|STATIC_LIBRARY_PREFIX|STATIC_LIBRARY_SUFFIX|TWEAK_VERSION|USING_VC_FREE_TOOLS|VERBOSE_MAKEFILE|VERSION)|PROJECT_BINARY_DIR|PROJECT_NAME|PROJECT_SOURCE_DIR|\\w+_BINARY_DIR|\\w+__SOURCE_DIR)\\b",
+ "name": "variable.source.cmake"
+ },
+ {
+ "comment": "BracketArgs",
+ "begin": "#\\[(=*)\\[",
+ "end": "\\]\\1\\]",
+ "name": "comment.source.cmake",
+ "patterns": [
+ {
+ "match": "\\\\(.|$)",
+ "name": "constant.character.escape"
+ }
+ ]
+ },
+ {
+ "comment": "BracketArgs",
+ "begin": "\\[(=*)\\[",
+ "end": "\\]\\1\\]",
+ "name": "argument.source.cmake",
+ "patterns": [
+ {
+ "match": "\\\\(.|$)",
+ "name": "constant.character.escape"
+ }
+ ]
+ },
+ {
+ "match": "#+.*$",
+ "name": "comment.source.cmake"
+ },
+ {
+ "comment": "Properties on Cache Entries",
+ "match": "\\b(?i:ADVANCED|HELPSTRING|MODIFIED|STRINGS|TYPE|VALUE)\\b",
+ "name": "entity.source.cmake"
+ },
+ {
+ "comment": "Properties on Source Files",
+ "match": "\\b(?i:ABSTRACT|COMPILE_DEFINITIONS|COMPILE_DEFINITIONS_<CONFIG>|COMPILE_FLAGS|EXTERNAL_OBJECT|Fortran_FORMAT|GENERATED|HEADER_FILE_ONLY|KEEP_EXTENSION|LABELS|LANGUAGE|LOCATION|MACOSX_PACKAGE_LOCATION|OBJECT_DEPENDS|OBJECT_OUTPUTS|SYMBOLIC|WRAP_EXCLUDE)\\b",
+ "name": "entity.source.cmake"
+ },
+ {
+ "comment": "Properties on Tests",
+ "match": "\\b(?i:ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|COST|DEPENDS|ENVIRONMENT|FAIL_REGULAR_EXPRESSION|LABELS|MEASUREMENT|PASS_REGULAR_EXPRESSION|PROCESSORS|REQUIRED_FILES|RESOURCE_LOCK|RUN_SERIAL|TIMEOUT|WILL_FAIL|WORKING_DIRECTORY)\\b",
+ "name": "entity.source.cmake"
+ },
+ {
+ "comment": "Properties on Directories",
+ "match": "\\b(?i:ADDITIONAL_MAKE_CLEAN_FILES|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMPILE_DEFINITIONS|COMPILE_DEFINITIONS_\\w+|DEFINITIONS|EXCLUDE_FROM_ALL|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INTERPROCEDURAL_OPTIMIZATION|INTERPROCEDURAL_OPTIMIZATION_\\w+|LINK_DIRECTORIES|LISTFILE_STACK|MACROS|PARENT_DIRECTORY|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|TEST_INCLUDE_FILE|VARIABLES|VS_GLOBAL_SECTION_POST_\\w+|VS_GLOBAL_SECTION_PRE_\\w+)\\b",
+ "name": "entity.source.cmake"
+ },
+ {
+ "comment": "Properties of Global Scope",
+ "match": "\\b(?i:ALLOW_DUPLICATE_CUSTOM_TARGETS|DEBUG_CONFIGURATIONS|DISABLED_FEATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|IN_TRY_COMPILE|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PREDEFINED_TARGETS_FOLDER|REPORT_UNDEFINED_PROPERTIES|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_SUPPORTS_SHARED_LIBS|USE_FOLDERS|__CMAKE_DELETE_CACHE_CHANGE_VARS_)\\b",
+ "name": "entity.source.cmake"
+ },
+ {
+ "comment": "Properties on Targets",
+ "match": "\\b(?i:\\w+_(OUTPUT_NAME|POSTFIX)|ARCHIVE_OUTPUT_(DIRECTORY(_\\w+)?|NAME(_\\w+)?)|AUTOMOC(_MOC_OPTIONS)?|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE(_EXTENSION)?|COMPATIBLE_INTERFACE_BOOL|COMPATIBLE_INTERFACE_STRING|COMPILE_(DEFINITIONS(_\\w+)?|FLAGS)|DEBUG_POSTFIX|DEFINE_SYMBOL|ENABLE_EXPORTS|EXCLUDE_FROM_ALL|EchoString|FOLDER|FRAMEWORK|Fortran_(FORMAT|MODULE_DIRECTORY)|GENERATOR_FILE_NAME|GNUtoMS|HAS_CXX|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(CONFIGURATIONS|IMPLIB(_\\w+)?|LINK_DEPENDENT_LIBRARIES(_\\w+)?|LINK_INTERFACE_LANGUAGES(_\\w+)?|LINK_INTERFACE_LIBRARIES(_\\w+)?|LINK_INTERFACE_MULTIPLICITY(_\\w+)?|LOCATION(_\\w+)?|NO_SONAME(_\\w+)?|SONAME(_\\w+)?)|IMPORT_PREFIX|IMPORT_SUFFIX|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE|INTERFACE_COMPILE_DEFINITIONS|INTERFACE_INCLUDE_DIRECTORIES|INTERPROCEDURAL_OPTIMIZATION|INTERPROCEDURAL_OPTIMIZATION_\\w+|LABELS|LIBRARY_OUTPUT_DIRECTORY(_\\w+)?|LIBRARY_OUTPUT_NAME(_\\w+)?|LINKER_LANGUAGE|LINK_DEPENDS|LINK_FLAGS(_\\w+)?|LINK_INTERFACE_LIBRARIES(_\\w+)?|LINK_INTERFACE_MULTIPLICITY(_\\w+)?|LINK_LIBRARIES|LINK_SEARCH_END_STATIC|LINK_SEARCH_START_STATIC|LOCATION(_\\w+)?|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MAP_IMPORTED_CONFIG_\\w+|NO_SONAME|OSX_ARCHITECTURES(_\\w+)?|OUTPUT_NAME(_\\w+)?|PDB_NAME(_\\w+)?|POST_INSTALL_SCRIPT|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE|PRIVATE_HEADER|PROJECT_LABEL|PUBLIC|PUBLIC_HEADER|RESOURCE|RULE_LAUNCH_(COMPILE|CUSTOM|LINK)|RUNTIME_OUTPUT_(DIRECTORY(_\\w+)?|NAME(_\\w+)?)|SKIP_BUILD_RPATH|SOURCES|SOVERSION|STATIC_LIBRARY_FLAGS(_\\w+)?|SUFFIX|TYPE|VERSION|VS_DOTNET_REFERENCES|VS_GLOBAL_(\\w+|KEYWORD|PROJECT_TYPES)|VS_KEYWORD|VS_SCC_(AUXPATH|LOCALPATH|PROJECTNAME|PROVIDER)|VS_WINRT_EXTENSIONS|VS_WINRT_REFERENCES|WIN32_EXECUTABLE|XCODE_ATTRIBUTE_\\w+)\\b",
+ "name": "entity.source.cmake"
+ },
+ {
+ "comment": "Escaped Strings",
+ "begin": "\\\\\"",
+ "end": "\\\\\"",
+ "name": "string.source.cmake",
+ "patterns": [
+ {
+ "match": "\\\\(.|$)",
+ "name": "constant.character.escape"
+ }
+ ]
+ },
+ {
+ "comment": "Normal Strings",
+ "begin": "\"",
+ "end": "\"",
+ "name": "string.source.cmake",
+ "patterns": [
+ {
+ "match": "\\\\(.|$)",
+ "name": "constant.character.escape"
+ }
+ ]
+ },
+ {
+ "comment": "Derecated keyword",
+ "match": "\\bBUILD_NAME\\b",
+ "name": "invalid.deprecated.source.cmake"
+ },
+ {
+ "comment": "Compiler Flags",
+ "match": "\\b(?i:(CMAKE_)?(CXX_FLAGS|CMAKE_CXX_FLAGS_DEBUG|CMAKE_CXX_FLAGS_MINSIZEREL|CMAKE_CXX_FLAGS_RELEASE|CMAKE_CXX_FLAGS_RELWITHDEBINFO))\\b",
+ "name": "variable.source.cmake"
+ }
+ ],
+ "repository": {},
+ "scopeName": "source.cmake",
+ "uuid": "7aed2d59-22d9-41c8-ba9e-4f178191e380"
+}
diff --git a/node_modules/shiki/languages/cobol.tmLanguage.json b/node_modules/shiki/languages/cobol.tmLanguage.json
new file mode 100644
index 0000000..608dcbb
--- /dev/null
+++ b/node_modules/shiki/languages/cobol.tmLanguage.json
@@ -0,0 +1,1121 @@
+{
+ "_copyright": "The MIT License (MIT)\nCopyright (c) 2015-2022 spgennard\nSource: https://github.com/spgennard/vscode_cobol/blob/main/syntaxes/COBOL.tmLanguage.json",
+ "$schema": "https://raw.githubusercontent.com/spgennard/vscode_cobol/main/schemas/tmlanguage.json",
+ "fileTypes": [
+ "ccp",
+ "scbl",
+ "cobol",
+ "cbl",
+ "cblle",
+ "cblsrce",
+ "cblcpy",
+ "lks",
+ "pdv",
+ "cpy",
+ "copybook",
+ "cobcopy",
+ "fd",
+ "sel",
+ "scb",
+ "scbl",
+ "sqlcblle",
+ "cob",
+ "dds",
+ "def",
+ "src",
+ "ss",
+ "wks",
+ "bib",
+ "pco"
+ ],
+ "name": "cobol",
+ "patterns": [
+ {
+ "match": "(^[ \\*][ \\*][ \\*][ \\*][ \\*][ \\*])([dD]\\s.*$)",
+ "name": "token.info-token.cobol"
+ },
+ {
+ "match": "(^[ \\*][ \\*][ \\*][ \\*][ \\*][ \\*])(\\/.*$)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.cobol"
+ },
+ "2": {
+ "name": "comment.line.cobol.newpage"
+ }
+ }
+ },
+ {
+ "match": "(^[ \\*][ \\*][ \\*][ \\*][ \\*][ \\*])(\\*.*$)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.cobol"
+ },
+ "2": {
+ "name": "comment.line.cobol.fixed"
+ }
+ }
+ },
+ {
+ "match": "(^[0-9\\s][0-9\\s][0-9\\s][0-9\\s][0-9\\s][0-9\\s])(\\/.*$)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.cobol"
+ },
+ "2": {
+ "name": "comment.line.cobol.newpage"
+ }
+ }
+ },
+ {
+ "match": "^[0-9\\s][0-9\\s][0-9\\s][0-9\\s][0-9\\s][0-9\\s]$",
+ "name": "constant.numeric.cobol"
+ },
+ {
+ "match": "(^[0-9\\s][0-9\\s][0-9\\s][0-9\\s][0-9\\s][0-9\\s])(\\*.*$)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.cobol"
+ },
+ "2": {
+ "name": "comment.line.cobol.fixed"
+ }
+ }
+ },
+ {
+ "match": "(^[0-9a-zA-Z\\s\\$#%\\.@\\- ][0-9a-zA-Z\\s\\$#%\\.@\\- ][0-9a-zA-Z\\s\\$#%\\.@\\- ][0-9a-zA-Z\\s\\$#%\\.@\\- ][0-9a-zA-Z\\s\\$#%\\.@\\- ][0-9a-zA-Z\\s\\$#%\\.@\\- ])(\\*.*$)",
+ "captures": {
+ "1": {
+ "name": "constant.cobol"
+ },
+ "2": {
+ "name": "comment.line.cobol.fixed"
+ }
+ }
+ },
+ {
+ "match": "^\\s+(78)\\s+([0-9a-zA-Z][a-zA-Z\\-0-9_]+)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.cobol"
+ },
+ "2": {
+ "name": "variable.other.constant"
+ }
+ }
+ },
+ {
+ "match": "^\\s+([0-9]+)\\s+([0-9a-zA-Z][a-zA-Z\\-0-9_]+)\\s+((?i:constant))",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.cobol"
+ },
+ "2": {
+ "name": "variable.other.constant"
+ },
+ "3": {
+ "name": "keyword.identifers.cobol"
+ }
+ }
+ },
+ {
+ "match": "(^[0-9a-zA-Z\\s\\$#%\\.@][0-9a-zA-Z\\s\\$#%\\.@][0-9a-zA-Z\\s\\$#%\\.@][0-9a-zA-Z\\s\\$#%\\.@][0-9a-zA-Z\\s\\$#%\\.@][0-9a-zA-Z\\s\\$#%\\.@])(\\/.*$)",
+ "captures": {
+ "1": {
+ "name": "constant.cobol"
+ },
+ "2": {
+ "name": "comment.line.cobol.newpage"
+ }
+ }
+ },
+ {
+ "match": "^\\*.*$",
+ "name": "comment.line.cobol.fixed"
+ },
+ {
+ "match": "((?:^|\\s+)(?i:\\$set)\\s+)((?i:constant)\\s+)([0-9a-zA-Z][a-zA-Z\\-0-9]+\\s*)([a-zA-Z\\-0-9]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.directive.conditional.cobol"
+ },
+ "2": {
+ "name": "entity.name.function.preprocessor.cobol"
+ },
+ "3": {
+ "name": "entity.name.function.cobol"
+ },
+ "4": {
+ "name": "keyword.control.directive.conditional.cobol"
+ }
+ }
+ },
+ {
+ "match": "((?i:\\$\\s*set\\s+)(ilusing)(\\()(.*)(\\)))",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.preprocessor.cobol"
+ },
+ "2": {
+ "name": "storage.modifier.import.cobol"
+ },
+ "3": {
+ "name": "punctuation.begin.bracket.round.cobol"
+ },
+ "4": {
+ "name": "string.quoted.other.cobol"
+ },
+ "5": {
+ "name": "punctuation.end.bracket.round.cobol"
+ }
+ }
+ },
+ {
+ "match": "((?i:\\$\\s*set\\s+)(ilusing)(\")(.*)(\"))",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.preprocessor.cobol"
+ },
+ "2": {
+ "name": "storage.modifier.import.cobol"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.cobol"
+ },
+ "4": {
+ "name": "string.quoted.other.cobol"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.cobol"
+ }
+ }
+ },
+ {
+ "match": "((?i:\\$set))\\s+(\\w+)\\s*(\")(\\w*)(\")",
+ "captures": {
+ "1": {
+ "name": "keyword.control.directive.conditional.cobol"
+ },
+ "2": {
+ "name": "entity.name.function.preprocessor.cobol"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.cobol"
+ },
+ "4": {
+ "name": "string.quoted.other.cobol"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.cobol"
+ }
+ }
+ },
+ {
+ "match": "((?i:\\$set))\\s+(\\w+)\\s*(\\()(.*)(\\))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.directive.conditional.cobol"
+ },
+ "2": {
+ "name": "entity.name.function.preprocessor.cobol"
+ },
+ "3": {
+ "name": "punctuation.begin.bracket.round.cobol"
+ },
+ "4": {
+ "name": "string.quoted.other.cobol"
+ },
+ "5": {
+ "name": "punctuation.end.bracket.round.cobol"
+ }
+ }
+ },
+ {
+ "match": "(?:^|\\s+)(?i:\\$\\s*set\\s)((?i:01SHUFFLE|64KPARA|64KSECT|AUXOPT|CHIP|DATALIT|EANIM|EXPANDDATA|FIXING|FLAG-CHIP|MASM|MODEL|OPTSIZE|OPTSPEED|PARAS|PROTMODE|REGPARM|SEGCROSS|SEGSIZE|SIGNCOMPARE|SMALLDD|TABLESEGCROSS|TRICKLECHECK|\\s)+).*$",
+ "captures": {
+ "0": {
+ "name": "keyword.control.directive.conditional.cobol"
+ },
+ "1": {
+ "name": "invalid.illegal.directive"
+ },
+ "2": {
+ "name": "comment.line.set.cobol"
+ }
+ }
+ },
+ {
+ "match": "(\\$region|\\$end-region)(.*$)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.directive.cobol"
+ },
+ "2": {
+ "name": "entity.other.attribute-name.preprocessor.cobol"
+ }
+ }
+ },
+ {
+ "begin": "\\$(?i:doc)(.*$)",
+ "end": "\\$(?i:end-doc)(.*$)",
+ "name": "invalid.illegal.iscobol"
+ },
+ {
+ "match": ">>\\s*(?i:turn|page|listing|leap-seconds|d)\\s+.*$",
+ "name": "invalid.illegal.meta.preprocessor.cobolit"
+ },
+ {
+ "match": "((((>>|\\$)[\\s]*)(?i:if|else|elif|end-if|end-evaluate|end|define|evaluate|when|display|call-convention|set))(.*$))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.directive.conditional.cobol"
+ },
+ "2": {
+ "name": "entity.name.function.preprocessor.cobol"
+ },
+ "3": {
+ "name": "entity.name.function.preprocessor.cobol"
+ }
+ }
+ },
+ {
+ "match": "(\\*>)\\s+(@[0-9a-zA-Z][a-zA-Z\\-0-9]+)\\s+(.*$)",
+ "captures": {
+ "1": {
+ "name": "comment.line.scantoken.cobol"
+ },
+ "2": {
+ "name": "keyword.cobol"
+ },
+ "3": {
+ "name": "string.cobol"
+ }
+ }
+ },
+ {
+ "match": "(\\*>.*$)",
+ "name": "comment.line.modern"
+ },
+ {
+ "match": "(>>.*)$",
+ "name": "strong comment.line.set.acucobol"
+ },
+ {
+ "match": "([nNuU][xX]|[hHxX])'\\h*'",
+ "name": "constant.numeric.integer.hexadecimal.cobol"
+ },
+ {
+ "match": "([nNuU][xX]|[hHxX])'.*'",
+ "name": "invalid.illegal.hexadecimal.cobol"
+ },
+ {
+ "match": "([nNuU][xX]|[hHxX])\"\\h*\"",
+ "name": "constant.numeric.integer.hexadecimal.cobol"
+ },
+ {
+ "match": "([nNuU][xX]|[hHxX])\".*\"",
+ "name": "invalid.illegal.hexadecimal.cobol"
+ },
+ {
+ "match": "[bB]\"[0-1]\"",
+ "name": "constant.numeric.integer.boolean.cobol"
+ },
+ {
+ "match": "[bB]'[0-1]'",
+ "name": "constant.numeric.integer.boolean.cobol"
+ },
+ {
+ "match": "[oO]\"[0-7]*\"",
+ "name": "constant.numeric.integer.octal.cobol"
+ },
+ {
+ "match": "[oO]\".*\"",
+ "name": "invalid.illegal.octal.cobol"
+ },
+ {
+ "match": "(#)([0-9a-zA-Z][a-zA-Z\\-0-9]+)",
+ "name": "meta.symbol.cobol.forced"
+ },
+ {
+ "begin": "((?<![-_a-zA-Z0-9()-])(?i:installation|author|source-computer|object-computer|date-written|security|date-compiled)(\\.|$))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.identifiers.cobol"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(^[0-9 ][0-9 ][0-9 ][0-9 ][0-9 ][0-9 ])",
+ "name": "constant.numeric.cobol"
+ }
+ ],
+ "name": "comment.block.cobol.remark",
+ "end": "(?=((?<![-_])(?i:remarks|author|date-written|source-computer|object-computer|installation|date-compiled|special-names|security|environment\\s+division|data\\s+division|working-storage\\s+section|input-output\\s+section|linkage\\s+section|procedure\\s+division|local-storage\\s+section)|^[ \\*][ \\*][ \\*][ \\*][ \\*][ \\*]\\*.*$|^\\+$))"
+ },
+ {
+ "match": "(?<=(\\(|\\[))((\\-\\+)*\\s*[0-9 ,\\.\\+\\-\\*\\/]+)(?=(\\)|\\]))",
+ "name": "constant.numeric.cobol",
+ "captures": {
+ "1": {
+ "name": "keyword.start.bracket.cobol"
+ },
+ "2": {
+ "name": "constant.numeric.cobol"
+ },
+ "3": {
+ "name": "keyword.end.bracket.cobol"
+ }
+ },
+ "comment": "simple numerics in () and []"
+ },
+ {
+ "include": "#number-complex-constant"
+ },
+ {
+ "include": "#number-simple-constant"
+ },
+ {
+ "match": "(?<![-_])(?i:true|false|null|nulls)(?![0-9A-Za-z_-])",
+ "name": "constant.language.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:zeroes|alphabetic-lower|alphabetic-upper|alphanumeric-edited|alphabetic|alphabet|alphanumeric|zeros|zeros|zero|spaces|space|quotes|quote|low-values|low-value|high-values|high-value)(?=\\s+|\\.|,|\\))",
+ "name": "constant.language.figurative.cobol"
+ },
+ {
+ "begin": "(?i:exec\\s+sqlims|exec\\s+sql)",
+ "name": "keyword.verb.cobol",
+ "contentName": "meta.embedded.block.sql",
+ "patterns": [
+ {
+ "match": "(^\\s*\\*.*)$",
+ "name": "comment.line.sql"
+ },
+ {
+ "match": "(\\:([0-9a-zA-Z\\-_])*)",
+ "name": "variable.cobol"
+ },
+ {
+ "include": "source.sql"
+ }
+ ],
+ "end": "(?i:end\\-exec)"
+ },
+ {
+ "begin": "(?i:exec\\s+cics)",
+ "name": "keyword.verb.cobol",
+ "contentName": "meta.embedded.block.cics",
+ "patterns": [
+ {
+ "match": "(\\()",
+ "name": "meta.symbol.cobol"
+ },
+ {
+ "include": "#cics-keywords"
+ },
+ {
+ "include": "#string-double-quoted-constant"
+ },
+ {
+ "include": "#string-quoted-constant"
+ },
+ {
+ "include": "#number-complex-constant"
+ },
+ {
+ "include": "#number-simple-constant"
+ },
+ {
+ "match": "([a-zA-Z-0-9_]*[a-zA-Z0-9]|([#]?[0-9a-zA-Z]+[a-zA-Z-0-9_]*[a-zA-Z0-9]))",
+ "name": "variable.cobol"
+ }
+ ],
+ "end": "(?i:end\\-exec)"
+ },
+ {
+ "begin": "(?i:exec\\s+dli)",
+ "name": "keyword.verb.cobol",
+ "contentName": "meta.embedded.block.dli",
+ "patterns": [
+ {
+ "match": "(\\()",
+ "name": "meta.symbol.cobol"
+ },
+ {
+ "include": "#dli-keywords"
+ },
+ {
+ "include": "#string-double-quoted-constant"
+ },
+ {
+ "include": "#string-quoted-constant"
+ },
+ {
+ "include": "#number-complex-constant"
+ },
+ {
+ "include": "#number-simple-constant"
+ },
+ {
+ "match": "([a-zA-Z-0-9_]*[a-zA-Z0-9]|([#]?[0-9a-zA-Z]+[a-zA-Z-0-9_]*[a-zA-Z0-9]))",
+ "name": "variable.cobol"
+ }
+ ],
+ "end": "(?i:end\\-exec)"
+ },
+ {
+ "begin": "(?i:exec\\s+sqlims)",
+ "name": "keyword.verb.cobol",
+ "contentName": "meta.embedded.block.sql",
+ "patterns": [
+ {
+ "match": "(\\:([a-zA-Z\\-])*)",
+ "name": "variable.cobol"
+ },
+ {
+ "include": "source.sql"
+ }
+ ],
+ "end": "(?i:end\\-exec)"
+ },
+ {
+ "begin": "(?i:exec\\s+ado)",
+ "name": "keyword.verb.cobol",
+ "contentName": "meta.embedded.block.sql",
+ "patterns": [
+ {
+ "match": "(\\:([a-zA-Z\\-])*)",
+ "name": "variable.cobol"
+ },
+ {
+ "include": "source.sql"
+ }
+ ],
+ "end": "(?i:end\\-exec)"
+ },
+ {
+ "begin": "(?i:exec\\s+html)",
+ "name": "keyword.verb.cobol",
+ "contentName": "meta.embedded.block.html",
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ }
+ ],
+ "end": "(?i:end\\-exec)"
+ },
+ {
+ "begin": "(?i:exec\\s+java)",
+ "name": "keyword.verb.cobol",
+ "contentName": "meta.embedded.block.java",
+ "patterns": [
+ {
+ "include": "source.java"
+ }
+ ],
+ "end": "(?i:end\\-exec)"
+ },
+ {
+ "match": "(\")(CBL_.*)(\")",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.cobol"
+ },
+ "2": {
+ "name": "support.function.cobol"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.cobol"
+ }
+ }
+ },
+ {
+ "match": "(\")(PC_.*)(\")",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.cobol"
+ },
+ "2": {
+ "name": "support.function.cobol"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.cobol"
+ }
+ }
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cobol"
+ }
+ },
+ "end": "(\"|$)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cobol"
+ }
+ },
+ "name": "string.quoted.double.cobol"
+ },
+ {
+ "match": "(\\')(CBL_.*)(\\')",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.cobol"
+ },
+ "2": {
+ "name": "support.function.cobol"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.cobol"
+ }
+ }
+ },
+ {
+ "match": "(\\')(PC_.*)(\\')",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.cobol"
+ },
+ "2": {
+ "name": "support.function.cobol"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.cobol"
+ }
+ }
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cobol"
+ }
+ },
+ "end": "('|$)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cobol"
+ }
+ },
+ "name": "string.quoted.single.cobol"
+ },
+ {
+ "begin": "(?<![\\-\\w])[gGzZ]\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cobol"
+ }
+ },
+ "end": "(\"|$)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cobol"
+ }
+ },
+ "name": "string.quoted.double.cobol"
+ },
+ {
+ "begin": "(?<![\\-\\w])[gGzZ]'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cobol"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cobol"
+ }
+ },
+ "name": "string.quoted.single.cobol"
+ },
+ {
+ "begin": "(?<![\\-\\w])[gGnN]\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cobol"
+ }
+ },
+ "end": "(\"|$)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cobol"
+ }
+ },
+ "name": "string.quoted.double.cobol"
+ },
+ {
+ "begin": "(?<![\\-\\w])[gGnN]'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cobol"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cobol"
+ }
+ },
+ "name": "string.quoted.single.cobol"
+ },
+ {
+ "begin": "(?<![\\-\\w])[uU]\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cobol"
+ }
+ },
+ "end": "(\"|$)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cobol"
+ }
+ },
+ "name": "string.quoted.utf8.double.cobol"
+ },
+ {
+ "begin": "(?<![\\-\\w])[uU]'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cobol"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cobol"
+ }
+ },
+ "name": "string.quoted.utf8.single.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:id\\s+division|identification\\s+division|identification|id|property-id|getter|setter|entry|function-id|end\\s+attribute|attribute|interface-id|indexer-id|factory|ctl|class-control|options|environment\\s+division|environment-name|environment-value|environment|configuration\\s+section|configuration|decimal-point\\s+is|decimal-point|console\\s+is|call-convention|special-names|cursor\\s+is|update|picture\\s+symbol|currency\\s+sign|currency|repository|input-output\\s+section|input-output|file\\s+section|file-control|select|optional|i-o-control|data\\s+division|working-storage\\s+section|working-storage|section|local-storage|linkage\\s+section|linkage|communication|report|screen\\s+section|object-storage|object\\s+section|class-object|fd|rd|cd|sd|printing|procedure\\s+division|procedure|division|references|debugging|end\\s+declaratives|declaratives|end\\s+static|end\\s+factory|end\\s+class-object|based-storage|size|font|national-edited|national)(?![0-9A-Za-z_-])",
+ "name": "keyword.identifiers.cobol"
+ },
+ {
+ "match": "(?<![-_])((?i:valuetype-id|operator-id|method-id|method|property-id|attribute-id|enum-id|iterator-id|class-id|program-id|operator-id|end\\s+program|end\\s+valuetype|extension))[\\.]*[\\s]+([a-zA-Z0-9_-]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.verb.cobol"
+ },
+ "2": {
+ "name": "entity.name.function.cobol"
+ }
+ }
+ },
+ {
+ "match": "(?<![-_])(?i:implements|inherits|constraints|constrain)(?=\\s|\\.)",
+ "name": "keyword.verb.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:end\\s+enum|end\\s+interface|end\\s+class|end\\s+property|end\\s+method|end\\s+object|end\\s+iterator|end\\s+function|end\\s+operator|end\\s+program|end\\s+indexer|create|reset|instance|delegate|end-delegate|delegate-id|declare|exception-object|as|stop\\s+iterator|stop\\s+run|stop)(?=\\s|\\.|,|\\))",
+ "name": "keyword.identifiers.cobol"
+ },
+ {
+ "match": "\\s+(?i:attach\\s+method|attach\\s+del|attach|detach\\s+del|detach\\s+method|detach|method|del)(?=\\s|\\.|$)",
+ "name": "keyword.identifiers.cobol"
+ },
+ {
+ "match": "\\s+(?i:sync\\s+(?i:on))(?=\\s|\\.)",
+ "name": "keyword.other.sync.cobol"
+ },
+ {
+ "match": "\\s+(?i:try|finally|catch|end-try|throw)(?=\\s|\\.|$)",
+ "name": "keyword.control.catch-exception.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:select|use|thru|varying|giving|remainder|tallying|through|until|execute|returning|using|chaining|yielding|\\+\\+include|copy|replace)(?=\\s)",
+ "name": "keyword.otherverb.cobol"
+ },
+ {
+ "match": "(?i:dynamic)\\s+(?i:length)(?=\\s|\\.)",
+ "name": "storage.type.dynamiclength.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:assign|external|prototype|organization|organisation|indexed|column|plus|line\\*s*sequential|sequential|access|dynamic|relative|label|block|contains|standard|records|record\\s+key|record|is|alternate|duplicates|reel|tape|terminal|disk\\sfilename|disk|disc|recording\\smode|mode|random)(?=\\s|\\.)",
+ "name": "keyword.identifers.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:max|min|integer-of-date|integer-of-day|integer-part|integer|date-to-yyyymmdd|year-to-yyyy|day-to-yyyyddd|exp|exception-file|exception-location|exception-statement|exception-status|e|variance|integer-of-date|rem|pi|factorial|sqrt|log10|fraction-part|mean|exp|log|char|day-of-integer|date-of-integer|exp10|atan|integer-part|tan|sin|cos|midrange|addr|acos|asin|annuity|present-value|integer-of-day|ord-max|ord-min|ord|random|integer-of-date|sum|standard-deviation|median|reverse|abs|upper-case|lower-case|char-national|numval|mod|range|length|locale-date|locale-time-from-seconds|locale-time|seconds-past-midnight|stored-char-length|substitute-case|substitute|seconds-from-formatted-time|seconds-past-midnight|trim|length-an|numval-c|current-date|national-of|display-of|when-compiled|integer-of-boolean|combined-datetime|concatenate)(?=\\s|\\.|\\(|\\))",
+ "name": "support.function.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:DFHRESP|DFHVALUE)(\\s*\\(\\s*)([a-zA-Z]*)(\\s*\\))",
+ "captures": {
+ "0": {
+ "name": "support.function.cics.cobol"
+ },
+ "1": {
+ "name": "punctuation.definition.string.end.cobol"
+ },
+ "2": {
+ "name": "keyword.identifers.cobol"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.cobol"
+ }
+ }
+ },
+ {
+ "match": "(?<![-_])(?i:function)(?=\\s|\\.)",
+ "name": "keyword.verb.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:end-accept|end-add|end-sync|end-compute|end-delete|end-display|end-divide|end-set|end-multiply|end-of-page|end-read|end-receive|end-return|end-rewrite|end-search|end-start|end-string|end-subtract|end-unstring|end-write|program|class|interface|enum|interface)(?![0-9A-Za-z_-])",
+ "name": "keyword.verb.cobol"
+ },
+ {
+ "match": "(?<![-_])(?:by value|by reference|by content|property-value)(?![0-9A-Za-z_-])",
+ "name": "keyword.other.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:attr-string|automatic|auto-skip|footing|next|group|indicate|source|control|full|required|of|input|output|i-o|extend|file|error|exception|overflow|goto|off|on|proceed|procedures|procedure|through|invalid|data|normal|eop|returning|to|for|giving|into|by|params|remainder|also|numeric|free|depending|converting|replacing|after|before|all|leading|first|recursive|initialized|global|common|initial|resident|reference|content|are\\sstandard|are|renames|like|format\\stime|values|omitted|value|constant|ascending|descending|key|retry|until|varying|with|no|advancing|up|down|uccurs|ignore\\s+lock|lock|length|delimited|count|delimiter|redefines|from\\s+console|from\\s+command-line|from\\s+user\\s+name|from\\s+day\\s+yyyyddd|from\\s+day|from\\s+time|from\\s+day-of-week|from\\s+escape|from\\s+day\\s+yyyyddd|from\\s+date\\s+yyyymmdd|from\\s+date|from|raising|crt\\s+status|status|class|upon\\s+crt|upon|lines|columns|step|linage|auto|line|position|col|reports|code-set|reporting|arithmetic|localize|program|class|interface|in|at\\s+end|page|name)(?![0-9A-Za-z_-])",
+ "name": "keyword.identifers.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:type|new)\\s+([a-zA-Z][a-zA-Z0-9\\$\\-\\._]*|[a-zA-Z])(?=\\.$)",
+ "captures": {
+ "0": {
+ "name": "keyword.verb.cobol"
+ },
+ "1": {
+ "name": "storage.type.cobol"
+ }
+ },
+ "comment": "type ssss "
+ },
+ {
+ "match": "(?<![-_])(?i:string)(?=\\s+value|\\.)",
+ "name": "storage.type.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:bit|byte|binary-char|binary-char-unsigned|binary-short|binary-short-unsigned|binary.long|binary-c-long|binary-long-unsigned|binary-long|binary-double|binary-double-unsigned|float-short|float-extended|float-long|bit|condition-value|characters|character\\s+type|character|comma|crt|decimal|object\\+sreference|object-reference|object|list|dictionary|unsigned)(?=\\s|\\.|,|\\]|\\[)",
+ "name": "storage.type.cobol"
+ },
+ {
+ "match": "(operator-id\\s+[+\\-\\*\\/])",
+ "name": "keyword.operator-id.cobol",
+ "captures": {
+ "1": {
+ "name": "keyword.other.verb.cobol"
+ },
+ "2": {
+ "name": "meta.symbol.cobol"
+ }
+ },
+ "comment": "operator-id ssss "
+ },
+ {
+ "match": "(?i:self)(\\:\\:)([0-9a-zA-Z_\\-\\.]*)(?=\\.$)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.cobol.b3"
+ },
+ "2": {
+ "name": "entity.name.function.b3"
+ }
+ },
+ "comment": " ::.. "
+ },
+ {
+ "match": "(\\:\\:)([0-9a-zA-Z_\\-\\.]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.cobol"
+ },
+ "2": {
+ "name": "entity.name.function.cobol"
+ }
+ },
+ "comment": " ::.. "
+ },
+ {
+ "match": "(?<![-_])(?i:type)\\s+([0-9a-zA-Z\\.]*)",
+ "captures": {
+ "0": {
+ "name": "keyword.verb.cobol.aa"
+ },
+ "1": {
+ "name": "storage.type.cobol.bb"
+ }
+ }
+ },
+ {
+ "match": "(?<![-_])(?i:if|else|end-if|exit\\s+iterator|exit\\s+program|exit\\s+method|evaluate|end-evaluate|exit\\s+perform|perform|end-perform|when\\s+other|when|continue|call|end-call|chain|end-chain|invoke|end\\s+invoke|go\\s+to|go|sort|merge|use|xml|parse|stop\\s+run|goback\\s+returning|goback|raise|exit\\s+function|exit\\sparagraph|await)(?![0-9A-Za-z_-])",
+ "name": "keyword.control.cobol"
+ },
+ {
+ "match": "(?<![-_])((?i:picture\\s+is|picture|pic\\s+is|pic)\\s+[-+sS\\*$09aAbBxXuUpPnNzZ/,.]*)\\(([0-9]*)\\)([vV][-+sS\\*$09aAbBxXuUpPnNzZ/,\\.]*)\\(([0-9]*)\\)[-|+]",
+ "captures": {
+ "1": {
+ "name": "storage.type.picture10.cobol"
+ },
+ "2": {
+ "name": "constant.numeric.cobol"
+ },
+ "3": {
+ "name": "storage.type.picture10.cobol"
+ },
+ "4": {
+ "name": "constant.numeric.cobol"
+ }
+ }
+ },
+ {
+ "match": "(?<![-_])((?i:picture\\s+is|picture|pic\\s+is|pic)\\s+[-+sS\\*$09aAbBxXuUpPnNzZ/,.]*)\\(([0-9]*)\\)([vV][-+sS\\*$09aAbBxXuUpPnNzZ/,\\.]*)\\(([0-9]*)\\)",
+ "captures": {
+ "1": {
+ "name": "storage.type.picture9.cobol"
+ },
+ "2": {
+ "name": "constant.numeric.cobol"
+ },
+ "3": {
+ "name": "storage.type.picture9.cobol"
+ },
+ "4": {
+ "name": "constant.numeric.cobol"
+ }
+ }
+ },
+ {
+ "match": "(?<![-_])((?i:picture\\s+is|picture|pic\\s+is|pic)\\s+[-+sS\\*$09aAbBxXuUpPnNzZ/,.]*)\\(([0-9]*)\\)([vV\\.][-+s\\*$09aAbBsSnNxXuUzZ/,]*[0-9\\.()])*",
+ "captures": {
+ "1": {
+ "name": "storage.type.picture8.cobol"
+ },
+ "2": {
+ "name": "constant.numeric.cobol"
+ },
+ "3": {
+ "name": "storage.type.picture8.cobol"
+ }
+ }
+ },
+ {
+ "match": "(?<![-_])(?i:picture\\s+is|picture|pic\\s+is|pic)\\s+[-+sS\\*$09aAbBsSnpPNxXuUzZ/,.]*\\([0-9]*\\)[Vv\\.][-+s\\*0$9aAbBsSnNxpPxXuUzZ/,]*",
+ "name": "storage.type.picture7.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:picture\\s+is|picture|pic\\s+is|pic)\\s+[-+sS\\*$09aAbBsSnpPNxXuUzZ/,.]*\\([0-9]*\\)[-+s\\*0$9aAbBsSnNxpPxXuUzZ/,]*[Vv\\.][-+s\\*0$9aAbBsSnNxpPxXuUzZ/,]*",
+ "name": "storage.type.picture6.cobol"
+ },
+ {
+ "match": "(?<![-_])((?i:picture\\s+is|picture|pic\\s+is|pic)\\s+[-+sS\\*$09aAbBsSnpPNxuUXzZ/,.]*)\\(([0-9]*)\\)[-+s\\*0$9aAbBsSnNxpPxXuUzZ/,]*",
+ "captures": {
+ "1": {
+ "name": "storage.type.picture5.cobol"
+ },
+ "2": {
+ "name": "constant.numeric.cobol"
+ }
+ }
+ },
+ {
+ "match": "(?<![-_])(?i:picture\\s+is|picture|pic\\s+is|pic)\\s+[-+sS\\*$09aAbBsSnpNNxXuUzZ/,.]*\\([0-9]*\\)",
+ "name": "storage.type.picture4.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:picture\\s+is|picture|pic\\s+is|pic)\\s+[sS]?[9aAbBsSnNxXuUzZ]*[Vv][9aAxbXuUzZ]*\\([0-9]*\\)",
+ "name": "storage.type.picture3.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:picture\\s+is|picture|pic\\s+is|pic)\\s+[sS]?[9aAbBsSnNxXuUzZ]*[Vv][9aAxbXuUzZ]*",
+ "name": "storage.type.picture2.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:picture\\s+is|picture|pic\\s+is|pic)\\s+[-+\\*$9aAbBsSnpPNxXuUzZ/,.vV]*",
+ "name": "storage.type.picture1.cobol"
+ },
+ {
+ "match": "((?<![-_])(?i:binary|computational-4|comp-4|computational-5|comp-5))\\(([0-9]*)\\)",
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.keyword.verb.acu.cobol"
+ },
+ "2": {
+ "name": "invalid.illegal.constant.numeric.integer"
+ }
+ }
+ },
+ {
+ "match": "(?i:cblt-x1-compx-const|cblt-x2-compx-const|cblt-x4-compx-const|cblt-alphanum-const|cblt-x9-compx|cblt-x8-compx|cblt-x8-comp5|cblt-x4-compx|cblt-x4-comp5|cblt-x2-compx|cblt-x2-comp5|cblt-x1-compx|cblt-x1-comp5|cblt-x1|cblt-vfile-status|cblt-vfile-handle|cblt-sx8-comp5|cblt-sx4-comp5|cblt-sx2-comp5|cblt-sx1-comp5|cblt-subsys-params|cblt-splitjoin-buf|cblt-screen-position|cblt-rtncode|cblt-request-context|cblt-reqhand-service-info|cblt-reqhand-service-funcs|cblt-reqhand-response|cblt-reqhand-funcs|cblt-prog-info-params|cblt-prog-info-arg-info|cblt-printer-properties|cblt-printer-name|cblt-printer-info|cblt-printer-default|cblt-ppointer|cblt-pointer|cblt-os-ssize|cblt-os-size|cblt-os-offset|cblt-os-info-params|cblt-os-flags|cblt-node-name|cblt-nls-msg-params|cblt-nls-msg-number-pair|cblt-nls-msg-ins-struct|cblt-nls-msg-buffer|cblt-mouse-shape|cblt-mouse-rect|cblt-mouse-pos|cblt-mouse-event|cblt-mem-validate-param|cblt-idp-exit-service-funcs|cblt-idp-exit-info|cblt-HWND|cblt-HINSTANCE|cblt-get-scr-line-draw-buffer|cblt-get-scr-graphics-buffer|cblt-generic-attr-value|cblt-generic-attr-rgb-values|cblt-generic-attr-information|cblt-file-status|cblt-fileexist-buf|cblt-exit-params|cblt-exit-info-params|cblt-cancel-proc-params|cblt-bytestream-handle|cblt-alphanum)",
+ "name": "support.function.cbltypes.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:computational-1|comp-1|computational-2|comp-2|computational-3|comp-3|computational-4|comp-4|computational-x|comp-x|computational-5|comp-5|computational-6|comp-6|computational-n|comp-n|packed-decimal|index|float|double|signed-short|unsigned-short|signed-int|unsigned-int|signed-long|unsigned-long|comp|computational|group-usage|usage\\sis\\sdisplay|usage\\sis\\sfont|usage\\s+display|binary|mutex-pointer|data-pointer|thread-pointer|sempahore-pointer|event-pointer|program-pointer|procedure-pointer|pointer|window|subwindow|control-type|thread|menu|variant|layout-manager|occurs|typedef|any|times|display\\s+blank\\s+when|blank\\s+when|blank\\s+screen|blank|usage\\sis|is\\spartial|usage|justified|just|right|signed|trailing\\s+separate|sign|seperate|sql)(?=\\s|\\.|\\))",
+ "name": "storage.type.picture.cobol"
+ },
+ {
+ "match": "(?i:byte-length)\\s+[0-9]+",
+ "name": "storage.type.length.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:accept|add|address|allocate|cancel|close|commit|compute|continue|delete|disable|display|bell|divide|eject|enable|enter|evaluate|exhibit|named|exit|free|generate|go\\s+to|initialize\\sonly|initialize|initiate|inspect|merge|end-set|set|end-invoke|invoke\\s+run|invoke|move|corresponding|corr|multiply|otherwise|open|sharing|sort-merge|purge|ready|read|kept|receive|release|return|rewrite|rounded|rollback|search|send|sort|collating\\s+sequence|collating|start|service|subtract|suppress|terminate|then|unlock|string|unstring|validate|write|next|statement|sentence)(?![0-9A-Za-z_-])",
+ "name": "keyword.verb.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:thread-local)(?![0-9A-Za-z_-])",
+ "name": "keyword.verb.cobol"
+ },
+ {
+ "match": "(\\s+|^)(?i:foreground-color|background-color|prompt|underline|reverse-video|no-echo|highlight|blink)(?![0-9A-Za-z_-])",
+ "name": "keyword.screens.cobol"
+ },
+ {
+ "match": "(\\s+|^)(?i:bold|high|lowlight|low|standard|background-high|background-low|background-standard)(?![0-9A-Za-z_-])",
+ "name": "invalid.illegal.screens.acu.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:internal|public|protected|final|private|static|new|abstract|override|readonly|property|async-void|async-value|async)(?=\\s|\\.)",
+ "name": "storage.modifier.cobol"
+ },
+ {
+ "match": "=|<|>|<=|>=|<>|\\+|\\-|\\*|\\/|(?<![-_])(?i:b-and|b-or|b-xor|b-exor|b-not|b-left|b-right|and|or|equals|equal|greater\\s+than|less\\s+than|greater)(?![0-9A-Za-z_-])",
+ "name": "keyword.operator.cobol"
+ },
+ {
+ "match": "(?i:not\\s+at\\s+end)(?![0-9A-Za-z_-])",
+ "name": "keyword.verb.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:not)(?![0-9A-Za-z_-])",
+ "name": "keyword.operator.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:sysout-flush|sysin|stderr|stdout|csp|stdin|sysipt|sysout|sysprint|syslist|syslst|printer|syserr|console|c01|c02|c03|c04|c05|c06|c07|c08|c09|c10|c11|c12|formfeed|switch-0|switch-10|switch-11|switch-12|switch-13|switch-13|switch-14|switch-15|switch-1|switch-2|switch-3|switch-4|switch-5|switch-6|switch-7|switch-8|switch-9|sw0|sw11|sw12|sw13|sw14|sw15|sw1|sw2|sw3|sw4|sw5|sw6|sw7|sw8|sw9|sw10|lc_all|lc_collate|lc_ctype|lc_messages|lc_monetary|lc_numeric|lc_time|ucs-4|utf-8|utf-16)(?![0-9A-Za-z_-])",
+ "name": "support.type.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:end-xml|processing.*procedure|xml\\sparse|xml|xml-information|xml-text|xml-schemal|xml-declaration)(?![0-9A-Za-z_-])",
+ "name": "keyword.xml.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:json\\s+generate|json|end-json|name\\sof)(?![0-9A-Za-z_-])",
+ "name": "keyword.json.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:modify|inquire|tab|title|event|center|label-offset|cell|help-id|cells|push-button|radio-button|page-layout-screen|entry-field|list-box|label|default-font|id|no-tab|unsorted|color|height|width|bind|thread|erase|modeless|scroll|system|menu|title-bar|wrap|destroy|resizeable|user-gray|large-font|newline|3-d|data-columns|display-columns|alignment|separation|cursor-frame-width|divider-color|drag-color|heading-color|heading-divider-color|num-rows|record-data|tiled-headings|vpadding|centered-headings|column-headings|self-act|cancel-button|vscroll|report-composer|clsid|primary-interface|active-x-control|default-interface|default-source|auto-minimize|auto-resize|resource|engraved|initial-state|frame|acuactivexcontrol|activex-res|grid|box|message|namespace|class-name|module|constructor|version|strong|culture|method|handle|exception-value|read-only|dividers|graphical|indexed|termination-value|permanent|boxed|visible|centered|record-position|convert)(?=\\s|\\.|,|;|$)",
+ "name": "invalid.illegal.acu.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:actual|auto|automatic|based-storage|complex|connect|contained|core-index|db-access-control-key|db-data-name|db-exception|db-record-name|db-set-name|db-status|dead-lock|endcobol|end-disable|end-enable|end-send|end-transceive|eos|file-limits|file-limit|formatted|sort-status|usage-mode)(?=\\s|\\.|,|;|$)",
+ "name": "invalid.illegal.netcobol.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:System-Info|Terminal-Info)(?![0-9A-Za-z_-])",
+ "name": "support.type.cobol.acu strong"
+ },
+ {
+ "match": "(?<![-_])(?i:alter)(?=\\s|\\.)",
+ "name": "invalid.illegal.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:apply|areas|area|clock-units|code|com-reg|controls|dbcs|destination|detail|display-1|ending|every|insert|kanjikey|last|left|less|limits|limit|memory|metaclass|modules|more-labels|multiple|native_binary|native|negative|number|numeric-edited|other|padding|password|pf|ph|postive|processing|queue|recording|reload|removal|rerun|reserve|reserved|rewind|segment-limit|segment|separate|sequence|skip1|skip2|skip3|standard-1|standard-2|sub-queue-1|sub-queue-2|sub-queue-3|sum|symbolic|synchronized|sync|table|test|text|than|top|trace|trailing|unit|words|write-only|at|basis|beginning|bottom|cbl|cf|ch|de|positive|egcs|egi|emi|end|reversed|rf|rh|run|same|order|heading|esi)(?![0-9A-Za-z_-])",
+ "name": "keyword.ibmreserved.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:active-class|aligned|anycase|boolean|cols|col|condition|ec|eo|system-default|function-pointer)(?![0-9A-Za-z_-])",
+ "name": "strong keyword.potential.reserved.cobol"
+ },
+ {
+ "match": "(?i:filler)",
+ "name": "keyword.filler.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:address-of|date|day-of-week|day|debug-content|debug-item|debug-line|debug-item|debug-sub-1|debug-sub-2|debug-sub-3|shift-in|shift-out|sort-control|sort-core-size|sort-file-size|sort-message|sort-return|sort-mode-size|sort-return|tally|time|when-compiled|line-counter|page-counter|return-code|linage-counter|debug-line|debug-name|debug-contents|json-code|json-status|xml-code|xml-event|xml-information|xml-namespace-prefix|xml-namespace|xml-nnamespace-repfix|xml-nnamespace|xml-ntext|jnienvptr)(?![0-9A-Za-z_-])",
+ "name": "variable.language"
+ },
+ {
+ "match": "(?<![-_])(?i:shortint1|shortint2|shortint3|shortint4|shortint5|shortint6|shortint7|longint1|longint2|longint3|longint4|longint5|longint6|bigint1|bigint2|blob-locator|clob-locator|dbclob-locator|dbclob-file|blob-file|clob-file|clob|dbclob|blob|varbinary|long-varbinary|time-record|timestamp-record|timestamp-offset-record|timestamp-offset|timestamp|rowid|xml|long-varchar)(?=\\s|\\.|\\)|\\()",
+ "name": "storage.type.sql.picture.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:self)",
+ "name": "keyword.other.self.cobol"
+ },
+ {
+ "match": "(?<![-_])(?i:super)",
+ "name": "keyword.other.super.cobol"
+ },
+ {
+ "match": "(^[0-9][0-9][0-9][0-9][0-9][0-9])",
+ "name": "constant.numeric.cobol"
+ },
+ {
+ "match": "(\\()([0-9]*)(:)([0-9]*)(\\))",
+ "captures": {
+ "1": {
+ "name": "meta.symbol.cobol"
+ },
+ "2": {
+ "name": "constant.numeric.integer"
+ },
+ "3": {
+ "name": "meta.symbol.cobol"
+ },
+ "4": {
+ "name": "constant.numeric.integer"
+ },
+ "5": {
+ "name": "meta.symbol.cobol"
+ }
+ }
+ },
+ {
+ "match": "([a-zA-Z-0-9_]*[a-zA-Z0-9]|([#]?[0-9a-zA-Z]+[a-zA-Z-0-9_]*[a-zA-Z0-9]))",
+ "name": "meta.symbol.cobol"
+ }
+ ],
+ "repository": {
+ "cics-keywords": {
+ "match": "(?<![\\-\\w])(?i:abcode|abdump|abend|abort|abprogram|abstime|accum|acee|acqactivity|acqprocess|acquactivity|action|activity|activityid|actpartn|add|address|after|aid|alarm|all|allocate|alter|alternate|altscrnht|altscrnwd|and|anykey|aplkybd|apltext|applid|as|asa|asis|asktime|asraintrpt|asrakey|asrapsw|asraregs|asraspc|asrastg|assign|asynchronous|at|attach|attachid|attributes|authenticate|autopage|auxiliary|base64|basicauth|below|bif|binary|bit|bodycharset|bookmark|brdata|brdatalength|brexit|bridge|browsetoken|btrans|buffer|build|burgeability|caddrlength|cancel|card|cbuff|ccsid|certificate|change|changetime|channel|char|characterset|check|chunkend|chunking|chunkno|chunkyes|cicsdatakey|ciphers|class|clear|cliconvert|client|clientaddr|clientaddrnu|clientconv|clientname|clntaddr6nu|clntipfamily|close|closestatus|clrpartn|cmdsec|cnamelength|cnotcompl|codepage|color|commarea|commonname|commonnamlen|comparemax|comparemin|complete|composite|compstatus|condition|confirm|confirmation|connect|consistent|console|container|contexttype|control|convdata|converse|convertst|converttime|convid|copy|counter|country|countrylen|create|critical|ctlchar|current|cursor|cwa|cwaleng|data|data1|data2|datalength|datalenth|dataonly|datapointer|dataset|datastr|datatoxml|datatype|datcontainer|date|dateform|datesep|datestring|day|daycount|dayofmonth|dayofweek|dayofyear|days|daysleft|day-of-week|dcounter|ddmmyy|ddmmyyyy|debkey|debrec|debug-contents|debug-item|debug-line|debug-name|debug-sub-1|debug-sub-2|debug-sub-3|deedit|default|define|defresp|defscrnht|defscrnwd|delay|delete|deleteq|delimiter|deq|destcount|destid|destidleng|detail|detaillength|dfhresp|dfhvalue|digest|digesttype|disconnect|docdelete|docsize|docstatus|doctoken|document|ds3270|dsscs|dump|dumpcode|dumpid|duprec|ecaddr|ecblist|eib|elemname|elemnamelen|elemns|elemnslen|end|endactivity|endbr|endbrowse|endfile|endoutput|enq|enter|entry|entryname|eoc|eods|eprfield|eprfrom|eprinto|eprlength|eprset|eprtype|equal|erase|eraseaup|error|errterm|esmreason|esmresp|event|eventtype|eventual|ewasupp|exception|expect|expirytime|extds|external|extract|facility|facilitytokn|false|faultactlen|faultactor|faultcode|faultcodelen|faultcodestr|faultstring|faultstrlen|fci|fct|field|file|firestatus|flength|fmh|fmhparm|for|force|formattime|formfeed|formfield|free|freekb|freemain|from|fromactivity|fromccsid|fromchannel|fromcodepage|fromdoc|fromflength|fromlength|fromprocess|frset|fulldate|function|gchars|gcodes|gds|generic|get|getmain|getnext|gmmi|groupid|gtec|gteq|handle|head|header|hex|high-value|high-values|hilight|hold|honeom|host|hostcodepage|hostlength|hosttype|hours|httpheader|httpmethod|httprnum|httpversion|httpvnum|ignore|immediate|in|increment|initimg|initparm|initparmlen|inpartn|input|inputevent|inputmsg|inputmsglen|inquire|insert|integer|interval|into|intoccsid|intocodepage|invalidcount|invite|invmpsz|invoke|invokingprog|invpartn|invreq|issue|issuer|item|iutype|journalname|jtypeid|jusfirst|juslast|justify|katakana|keep|keylength|keynumber|l40|l64|l80|label|langinuse|languagecode|last|lastusetime|ldc|ldcmnem|ldcnum|leavekb|length|lengthlist|level|lightpen|linage-counter|line|lineaddr|line-counter|link|list|listlength|llid|load|locality|localitylen|logmessage|logmode|logonlogmode|logonmsg|low-value|low-values|luname|main|map|mapcolumn|mapfail|mapheight|mapline|maponly|mapped|mappingdev|mapset|mapwidth|massinsert|maxdatalen|maxflength|maximum|maxlength|maxlifetime|maxproclen|mcc|mediatype|message|messageid|metadata|metadatalen|method|methodlength|milliseconds|minimum|minutes|mmddyy|mmddyyyy|mode|modename|monitor|month|monthofyear|move|msr|msrcontrol|name|namelength|natlang|natlanginuse|netname|newpassword|newphrase|newphraselen|next|nexttransid|nleom|noautopage|nocc|nocheck|nocliconvert|noclose|nodata|node|nodocdelete|nodump|noedit|noflush|nohandle|noinconvert|none|nooutconert|noqueue|noquiesce|nosrvconvert|nosuspend|note|notpurgeable|notruncate|nowait|nscontainer|null|nulls|numciphers|numevents|numitems|numrec|numroutes|numsegments|numtab|of|oidcard|on|opclass|open|operation|operator|operid|operkeys|operpurge|opid|opsecurity|options|or|orgabcode|organization|organizatlen|orgunit|orgunitlen|outdescr|outline|outpartn|output|owner|pa1|pa2|pa3|page|pagenum|page-counter|paging|parse|partn|partner|partnfail|partnpage|partns|partnset|pass|passbk|password|passwordlen|path|pathlength|pct|pf1|pf10|pf11|pf12|pf13|pf14|pf15|pf16|pf17|pf18|pf19|pf2|pf20|pf21|pf22|pf23|pf24|pf3|pf4|pf5|pf6|pf7|pf8|pf9|pfxleng|phrase|phraselen|piplength|piplist|point|pool|pop|portnumber|portnumnu|post|ppt|predicate|prefix|prepare|princonvid|prinsysid|print|priority|privacy|process|processtype|proclength|procname|profile|program|protect|ps|punch|purge|purgeable|push|put|qname|query|queryparm|querystring|querystrlen|queue|quote|quotes|random|rba|rbn|rdatt|read|readnext|readprev|readq|reattach|receive|receiver|recfm|record|recordlen|recordlength|reduce|refparms|refparmslen|relatesindex|relatestype|relatesuri|release|remove|repeatable|repetable|replace|reply|replylength|reqid|requesttype|resclass|reset|resetbr|resid|residlength|resource|resp|resp2|ressec|restart|restype|result|resume|retain|retcode|retcord|retriece|retrieve|return|returnprog|return-code|rewind|rewrite|ridfld|role|rolelength|rollback|route|routecodes|rprocess|rresource|rrn|rtermid|rtransid|run|saddrlength|scheme|schemename|scope|scopelen|scrnht|scrnwd|seconds|security|segmentlist|send|sender|serialnum|serialnumlen|server|serveraddr|serveraddrnu|serverconv|servername|service|session|sesstoken|set|shared|shift-in|shift-out|sigdata|signal|signoff|signon|sit|snamelength|soapfault|sort-control|sort-core-size|sort-file-size|sort-message|sort-mode-size|sort-return|sosi|space|spaces|spoolclose|spoolopen|spoolread|spoolwrite|srvconvert|srvraddr6nu|srvripfamily|ssltype|start|startbr|startbrowse|startcode|state|statelen|stationid|status|statuscode|statuslen|statustext|storage|strfield|stringformat|subaddr|subcodelen|subcodestr|subevent|subevent1|subevent2|subevent3|subevent4|subevent5|subevent6|subevent7|subevent8|sum|suspend|suspstatus|symbol|symbollist|synchronous|synclevel|synconreturn|syncpoint|sysid|tables|tally|task|taskpriority|tcpip|tcpipservice|tct|tctua|tctualeng|td|tellerid|template|termcode|termid|terminal|termpriority|test|text|textkybd|textlength|textprint|time|timeout|timer|timesep|title|to|toactivity|tochannel|tocontainer|toflength|token|tolength|toprocess|trace|tracenum|trailer|tranpriority|transaction|transform|transid|trigger|trt|true|ts|twa|twaleng|type|typename|typenamelen|typens|typenslen|unattend|uncommitted|unescaped|unexpin|unlock|until|uow|update|uri|urimap|url|urllength|userdatakey|userid|username|usernamelen|userpriority|using|validation|value|valuelength|verify|versionlen|volume|volumeleng|wait|waitcics|web|when-compiled|wpmedia1|wpmedia2|wpmedia3|wpmedia4|wrap|write|writeq|wsacontext|wsaepr|xctl|xmlcontainer|xmltodata|xmltransform|xrba|year|yyddd|yyddmm|yymmdd|yyyyddd|yyyyddmm|yyyymmdd|zero|zeroes|zeros)(?![\\-\\w])",
+ "name": "keyword.verb.cics"
+ },
+ "dli-keywords": {
+ "match": "(?<![\\-\\w])(?i:accept|chkp|deq|dlet|gnp|gn|gu|isrt|load|log|pos|query|refresh|repl|retrieve|rolb|roll|rols|schd|sets|setu|symchkp|term|xrst)(?![\\-\\w])",
+ "name": "keyword.verb.dli"
+ },
+ "string-quoted-constant": {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cobol"
+ }
+ },
+ "end": "('|$)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cobol"
+ }
+ },
+ "name": "string.quoted.single.cobol"
+ },
+ "string-double-quoted-constant": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cobol"
+ }
+ },
+ "end": "(\"|$)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cobol"
+ }
+ }
+ },
+ "number-complex-constant": {
+ "match": "(\\-|\\+)?((([0-9]+(\\.[0-9]+))|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)([LlFfUuDd]|UL|ul)?(?=\\s|\\.$|,|\\))",
+ "name": "constant.numeric.cobol"
+ },
+ "number-simple-constant": {
+ "match": "(\\-|\\+)?([0-9]+)(?=\\s|\\.$|,|\\))",
+ "name": "constant.numeric.cobol"
+ }
+ },
+ "scopeName": "source.cobol"
+}
diff --git a/node_modules/shiki/languages/codeql.tmLanguage.json b/node_modules/shiki/languages/codeql.tmLanguage.json
new file mode 100644
index 0000000..4141b63
--- /dev/null
+++ b/node_modules/shiki/languages/codeql.tmLanguage.json
@@ -0,0 +1,1485 @@
+{
+ "name": "codeql",
+ "scopeName": "source.ql",
+ "fileTypes": ["ql", "qll"],
+ "uuid": "7F6926BF-1C6C-468A-A7AA-215EBAC86A4E",
+ "patterns": [
+ {
+ "include": "#module-member"
+ }
+ ],
+ "repository": {
+ "id-character": {
+ "match": "(?x)[0-9A-Za-z_]"
+ },
+ "end-of-id": {
+ "match": "(?x)(?!(?:[0-9A-Za-z_]))"
+ },
+ "simple-id": {
+ "match": "(?x)\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))"
+ },
+ "lower-id": {
+ "match": "(?x)\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))"
+ },
+ "upper-id": {
+ "match": "(?x)\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))"
+ },
+ "at-lower-id": {
+ "match": "(?x)@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))"
+ },
+ "comment-start": {
+ "match": "(?x)// | /\\*"
+ },
+ "whitespace-or-comment-start": {
+ "match": "(?x)\\s | $ | (?:// | /\\*)"
+ },
+ "non-context-sensitive": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#operator-or-punctuation"
+ },
+ {
+ "include": "#keyword"
+ }
+ ]
+ },
+ "relational-operator": {
+ "match": "(?x)<=|<|>=|>",
+ "name": "keyword.operator.relational.ql"
+ },
+ "comparison-operator": {
+ "match": "(?x)=|\\!\\=",
+ "name": "keyword.operator.comparison.ql"
+ },
+ "arithmetic-operator": {
+ "match": "(?x)\\+|-|\\*|/|%",
+ "name": "keyword.operator.arithmetic.ql"
+ },
+ "comma": {
+ "match": "(?x),",
+ "name": "punctuation.separator.comma.ql"
+ },
+ "semicolon": {
+ "match": "(?x);",
+ "name": "punctuation.separator.statement.ql"
+ },
+ "dot": {
+ "match": "(?x)\\.",
+ "name": "punctuation.accessor.ql"
+ },
+ "dotdot": {
+ "match": "(?x)\\.\\.",
+ "name": "punctuation.operator.range.ql"
+ },
+ "pipe": {
+ "match": "(?x)\\|",
+ "name": "punctuation.separator.pipe.ql"
+ },
+ "open-paren": {
+ "match": "(?x)\\(",
+ "name": "punctuation.parenthesis.open.ql"
+ },
+ "close-paren": {
+ "match": "(?x)\\)",
+ "name": "punctuation.parenthesis.close.ql"
+ },
+ "open-brace": {
+ "match": "(?x)\\{",
+ "name": "punctuation.curlybrace.open.ql"
+ },
+ "close-brace": {
+ "match": "(?x)\\}",
+ "name": "punctuation.curlybrace.close.ql"
+ },
+ "open-bracket": {
+ "match": "(?x)\\[",
+ "name": "punctuation.squarebracket.open.ql"
+ },
+ "close-bracket": {
+ "match": "(?x)\\]",
+ "name": "punctuation.squarebracket.close.ql"
+ },
+ "operator-or-punctuation": {
+ "patterns": [
+ {
+ "include": "#relational-operator"
+ },
+ {
+ "include": "#comparison-operator"
+ },
+ {
+ "include": "#arithmetic-operator"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#semicolon"
+ },
+ {
+ "include": "#dot"
+ },
+ {
+ "include": "#dotdot"
+ },
+ {
+ "include": "#pipe"
+ },
+ {
+ "include": "#open-paren"
+ },
+ {
+ "include": "#close-paren"
+ },
+ {
+ "include": "#open-brace"
+ },
+ {
+ "include": "#close-brace"
+ },
+ {
+ "include": "#open-bracket"
+ },
+ {
+ "include": "#close-bracket"
+ }
+ ]
+ },
+ "dont-care": {
+ "match": "(?x)\\b(?:_)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "variable.language.dont-care.ql"
+ },
+ "and": {
+ "match": "(?x)\\b(?:and)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.and.ql"
+ },
+ "any": {
+ "match": "(?x)\\b(?:any)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.quantifier.any.ql"
+ },
+ "as": {
+ "match": "(?x)\\b(?:as)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.as.ql"
+ },
+ "asc": {
+ "match": "(?x)\\b(?:asc)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.order.asc.ql"
+ },
+ "avg": {
+ "match": "(?x)\\b(?:avg)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.aggregate.avg.ql"
+ },
+ "boolean": {
+ "match": "(?x)\\b(?:boolean)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.type.boolean.ql"
+ },
+ "by": {
+ "match": "(?x)\\b(?:by)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.order.by.ql"
+ },
+ "class": {
+ "match": "(?x)\\b(?:class)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.class.ql"
+ },
+ "concat": {
+ "match": "(?x)\\b(?:concat)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.aggregate.concat.ql"
+ },
+ "count": {
+ "match": "(?x)\\b(?:count)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.aggregate.count.ql"
+ },
+ "date": {
+ "match": "(?x)\\b(?:date)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.type.date.ql"
+ },
+ "desc": {
+ "match": "(?x)\\b(?:desc)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.order.desc.ql"
+ },
+ "else": {
+ "match": "(?x)\\b(?:else)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.else.ql"
+ },
+ "exists": {
+ "match": "(?x)\\b(?:exists)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.quantifier.exists.ql"
+ },
+ "extends": {
+ "match": "(?x)\\b(?:extends)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.extends.ql"
+ },
+ "false": {
+ "match": "(?x)\\b(?:false)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "constant.language.boolean.false.ql"
+ },
+ "float": {
+ "match": "(?x)\\b(?:float)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.type.float.ql"
+ },
+ "forall": {
+ "match": "(?x)\\b(?:forall)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.quantifier.forall.ql"
+ },
+ "forex": {
+ "match": "(?x)\\b(?:forex)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.quantifier.forex.ql"
+ },
+ "from": {
+ "match": "(?x)\\b(?:from)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.from.ql"
+ },
+ "if": {
+ "match": "(?x)\\b(?:if)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.if.ql"
+ },
+ "implies": {
+ "match": "(?x)\\b(?:implies)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.implies.ql"
+ },
+ "import": {
+ "match": "(?x)\\b(?:import)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.import.ql"
+ },
+ "in": {
+ "match": "(?x)\\b(?:in)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.in.ql"
+ },
+ "instanceof": {
+ "match": "(?x)\\b(?:instanceof)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.instanceof.ql"
+ },
+ "int": {
+ "match": "(?x)\\b(?:int)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.type.int.ql"
+ },
+ "max": {
+ "match": "(?x)\\b(?:max)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.aggregate.max.ql"
+ },
+ "min": {
+ "match": "(?x)\\b(?:min)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.aggregate.min.ql"
+ },
+ "module": {
+ "match": "(?x)\\b(?:module)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.module.ql"
+ },
+ "newtype": {
+ "match": "(?x)\\b(?:newtype)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.newtype.ql"
+ },
+ "none": {
+ "match": "(?x)\\b(?:none)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.quantifier.none.ql"
+ },
+ "not": {
+ "match": "(?x)\\b(?:not)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.not.ql"
+ },
+ "or": {
+ "match": "(?x)\\b(?:or)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.or.ql"
+ },
+ "order": {
+ "match": "(?x)\\b(?:order)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.order.order.ql"
+ },
+ "predicate": {
+ "match": "(?x)\\b(?:predicate)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.predicate.ql"
+ },
+ "rank": {
+ "match": "(?x)\\b(?:rank)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.aggregate.rank.ql"
+ },
+ "result": {
+ "match": "(?x)\\b(?:result)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "variable.language.result.ql"
+ },
+ "select": {
+ "match": "(?x)\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.query.select.ql"
+ },
+ "strictconcat": {
+ "match": "(?x)\\b(?:strictconcat)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.aggregate.strictconcat.ql"
+ },
+ "strictcount": {
+ "match": "(?x)\\b(?:strictcount)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.aggregate.strictcount.ql"
+ },
+ "strictsum": {
+ "match": "(?x)\\b(?:strictsum)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.aggregate.strictsum.ql"
+ },
+ "string": {
+ "match": "(?x)\\b(?:string)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.type.string.ql"
+ },
+ "sum": {
+ "match": "(?x)\\b(?:sum)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.aggregate.sum.ql"
+ },
+ "super": {
+ "match": "(?x)\\b(?:super)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "variable.language.super.ql"
+ },
+ "then": {
+ "match": "(?x)\\b(?:then)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.then.ql"
+ },
+ "this": {
+ "match": "(?x)\\b(?:this)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "variable.language.this.ql"
+ },
+ "true": {
+ "match": "(?x)\\b(?:true)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "constant.language.boolean.true.ql"
+ },
+ "unique": {
+ "match": "(?x)\\b(?:unique)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.aggregate.unique.ql"
+ },
+ "where": {
+ "match": "(?x)\\b(?:where)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.query.where.ql"
+ },
+ "keyword": {
+ "patterns": [
+ {
+ "include": "#dont-care"
+ },
+ {
+ "include": "#and"
+ },
+ {
+ "include": "#any"
+ },
+ {
+ "include": "#as"
+ },
+ {
+ "include": "#asc"
+ },
+ {
+ "include": "#avg"
+ },
+ {
+ "include": "#boolean"
+ },
+ {
+ "include": "#by"
+ },
+ {
+ "include": "#class"
+ },
+ {
+ "include": "#concat"
+ },
+ {
+ "include": "#count"
+ },
+ {
+ "include": "#date"
+ },
+ {
+ "include": "#desc"
+ },
+ {
+ "include": "#else"
+ },
+ {
+ "include": "#exists"
+ },
+ {
+ "include": "#extends"
+ },
+ {
+ "include": "#false"
+ },
+ {
+ "include": "#float"
+ },
+ {
+ "include": "#forall"
+ },
+ {
+ "include": "#forex"
+ },
+ {
+ "include": "#from"
+ },
+ {
+ "include": "#if"
+ },
+ {
+ "include": "#implies"
+ },
+ {
+ "include": "#import"
+ },
+ {
+ "include": "#in"
+ },
+ {
+ "include": "#instanceof"
+ },
+ {
+ "include": "#int"
+ },
+ {
+ "include": "#max"
+ },
+ {
+ "include": "#min"
+ },
+ {
+ "include": "#module"
+ },
+ {
+ "include": "#newtype"
+ },
+ {
+ "include": "#none"
+ },
+ {
+ "include": "#not"
+ },
+ {
+ "include": "#or"
+ },
+ {
+ "include": "#order"
+ },
+ {
+ "include": "#predicate"
+ },
+ {
+ "include": "#rank"
+ },
+ {
+ "include": "#result"
+ },
+ {
+ "include": "#select"
+ },
+ {
+ "include": "#strictconcat"
+ },
+ {
+ "include": "#strictcount"
+ },
+ {
+ "include": "#strictsum"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#sum"
+ },
+ {
+ "include": "#super"
+ },
+ {
+ "include": "#then"
+ },
+ {
+ "include": "#this"
+ },
+ {
+ "include": "#true"
+ },
+ {
+ "include": "#unique"
+ },
+ {
+ "include": "#where"
+ }
+ ]
+ },
+ "predicate-start-keyword": {
+ "patterns": [
+ {
+ "include": "#boolean"
+ },
+ {
+ "include": "#date"
+ },
+ {
+ "include": "#float"
+ },
+ {
+ "include": "#int"
+ },
+ {
+ "include": "#predicate"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ "abstract": {
+ "match": "(?x)\\b(?:abstract)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "storage.modifier.abstract.ql"
+ },
+ "bindingset": {
+ "match": "(?x)\\b(?:bindingset)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "storage.modifier.bindingset.ql"
+ },
+ "cached": {
+ "match": "(?x)\\b(?:cached)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "storage.modifier.cached.ql"
+ },
+ "deprecated": {
+ "match": "(?x)\\b(?:deprecated)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "storage.modifier.deprecated.ql"
+ },
+ "external": {
+ "match": "(?x)\\b(?:external)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "storage.modifier.external.ql"
+ },
+ "final": {
+ "match": "(?x)\\b(?:final)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "storage.modifier.final.ql"
+ },
+ "language": {
+ "match": "(?x)\\b(?:language)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "storage.modifier.language.ql"
+ },
+ "library": {
+ "match": "(?x)\\b(?:library)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "storage.modifier.library.ql"
+ },
+ "override": {
+ "match": "(?x)\\b(?:override)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "storage.modifier.override.ql"
+ },
+ "pragma": {
+ "match": "(?x)\\b(?:pragma)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "storage.modifier.pragma.ql"
+ },
+ "private": {
+ "match": "(?x)\\b(?:private)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "storage.modifier.private.ql"
+ },
+ "query": {
+ "match": "(?x)\\b(?:query)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "storage.modifier.query.ql"
+ },
+ "signature": {
+ "match": "(?x)\\b(?:signature)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "storage.modifier.signature.ql"
+ },
+ "transient": {
+ "match": "(?x)\\b(?:transient)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "storage.modifier.transient.ql"
+ },
+ "annotation-keyword": {
+ "patterns": [
+ {
+ "include": "#abstract"
+ },
+ {
+ "include": "#bindingset"
+ },
+ {
+ "include": "#cached"
+ },
+ {
+ "include": "#deprecated"
+ },
+ {
+ "include": "#external"
+ },
+ {
+ "include": "#final"
+ },
+ {
+ "include": "#language"
+ },
+ {
+ "include": "#library"
+ },
+ {
+ "include": "#override"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "#private"
+ },
+ {
+ "include": "#query"
+ },
+ {
+ "include": "#signature"
+ },
+ {
+ "include": "#transient"
+ }
+ ]
+ },
+ "implements": {
+ "match": "(?x)\\b(?:implements)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "keyword.other.implements.ql"
+ },
+ "comment": {
+ "patterns": [
+ {
+ "begin": "(?x)/\\*\\*",
+ "end": "(?x)\\*/",
+ "name": "comment.block.documentation.ql",
+ "patterns": [
+ {
+ "begin": "(?x)(?<=/\\*\\*)([^*]|\\*(?!/))*$",
+ "while": "(?x)(^|\\G)\\s*([^*]|\\*(?!/))(?=([^*]|[*](?!/))*$)",
+ "patterns": [
+ {
+ "include": "text.html.markdown#fenced_code_block"
+ },
+ {
+ "include": "text.html.markdown#lists"
+ },
+ {
+ "include": "text.html.markdown#inline"
+ },
+ {
+ "match": "(?x)\\G\\s* (@\\S+)",
+ "name": "keyword.tag.ql"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?x)/\\*",
+ "end": "(?x)\\*/",
+ "name": "comment.block.ql"
+ },
+ {
+ "match": "(?x)//.*$",
+ "name": "comment.line.double-slash.ql"
+ }
+ ]
+ },
+ "module-member": {
+ "patterns": [
+ {
+ "include": "#import-directive"
+ },
+ {
+ "include": "#import-as-clause"
+ },
+ {
+ "include": "#module-declaration"
+ },
+ {
+ "include": "#newtype-declaration"
+ },
+ {
+ "include": "#newtype-branch-name-with-prefix"
+ },
+ {
+ "include": "#predicate-parameter-list"
+ },
+ {
+ "include": "#predicate-body"
+ },
+ {
+ "include": "#class-declaration"
+ },
+ {
+ "include": "#select-clause"
+ },
+ {
+ "include": "#predicate-or-field-declaration"
+ },
+ {
+ "include": "#non-context-sensitive"
+ },
+ {
+ "include": "#annotation"
+ }
+ ]
+ },
+ "import-directive": {
+ "end": "(?x)(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))) (?!\\s*(\\.|\\:\\:))",
+ "endCaptures": {
+ "0": {
+ "name": "entity.name.type.namespace.ql"
+ }
+ },
+ "name": "meta.block.import-directive.ql",
+ "patterns": [
+ {
+ "include": "#non-context-sensitive"
+ },
+ {
+ "match": "(?x)(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "entity.name.type.namespace.ql"
+ }
+ ],
+ "begin": "(?x)((?:\\b(?:import)(?:(?!(?:[0-9A-Za-z_])))))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#import"
+ }
+ ]
+ }
+ }
+ },
+ "end-of-as-clause": {
+ "match": "(?x)(?: (?<=(?:[0-9A-Za-z_])) (?!(?:[0-9A-Za-z_])) (?<!(?<!(?:[0-9A-Za-z_]))as)) | (?=\\s* (?!(?:// | /\\*) | (?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))) \\S) | (?=\\s* (?:(?:(?:\\b(?:_)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:and)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:any)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:as)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:asc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:avg)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:boolean)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:by)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:class)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:concat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:count)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:date)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:desc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:else)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:exists)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:extends)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:false)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:float)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:forall)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:forex)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:from)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:if)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:implies)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:import)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:in)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:instanceof)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:int)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:max)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:min)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:module)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:newtype)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:none)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:not)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:or)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:order)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:predicate)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:rank)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:result)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:select)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:strictconcat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:strictcount)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:strictsum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:string)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:sum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:super)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:then)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:this)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:true)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:unique)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:where)(?:(?!(?:[0-9A-Za-z_])))))))"
+ },
+ "import-as-clause": {
+ "end": "(?x)(?:(?: (?<=(?:[0-9A-Za-z_])) (?!(?:[0-9A-Za-z_])) (?<!(?<!(?:[0-9A-Za-z_]))as)) | (?=\\s* (?!(?:// | /\\*) | (?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))) \\S) | (?=\\s* (?:(?:(?:\\b(?:_)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:and)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:any)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:as)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:asc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:avg)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:boolean)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:by)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:class)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:concat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:count)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:date)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:desc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:else)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:exists)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:extends)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:false)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:float)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:forall)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:forex)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:from)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:if)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:implies)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:import)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:in)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:instanceof)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:int)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:max)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:min)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:module)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:newtype)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:none)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:not)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:or)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:order)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:predicate)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:rank)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:result)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:select)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:strictconcat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:strictcount)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:strictsum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:string)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:sum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:super)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:then)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:this)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:true)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:unique)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:where)(?:(?!(?:[0-9A-Za-z_]))))))))",
+ "name": "meta.block.import-as-clause.ql",
+ "patterns": [
+ {
+ "include": "#non-context-sensitive"
+ },
+ {
+ "match": "(?x)(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "entity.name.type.namespace.ql"
+ }
+ ],
+ "begin": "(?x)((?:\\b(?:as)(?:(?!(?:[0-9A-Za-z_])))))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#as"
+ }
+ ]
+ }
+ }
+ },
+ "implements-clause": {
+ "end": "(?x)(?= \\{ )",
+ "name": "meta.block.implements-clause.ql",
+ "patterns": [
+ {
+ "include": "#non-context-sensitive"
+ },
+ {
+ "match": "(?x)(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))|(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "entity.name.type.ql"
+ }
+ ],
+ "begin": "(?x)((?:\\b(?:implements)(?:(?!(?:[0-9A-Za-z_])))))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#implements"
+ }
+ ]
+ }
+ }
+ },
+ "module-declaration": {
+ "end": "(?x)(?<=\\}|;)",
+ "name": "meta.block.module-declaration.ql",
+ "patterns": [
+ {
+ "include": "#module-body"
+ },
+ {
+ "include": "#implements-clause"
+ },
+ {
+ "include": "#non-context-sensitive"
+ },
+ {
+ "match": "(?x)(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "entity.name.type.namespace.ql"
+ }
+ ],
+ "begin": "(?x)((?:\\b(?:module)(?:(?!(?:[0-9A-Za-z_])))))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#module"
+ }
+ ]
+ }
+ }
+ },
+ "module-body": {
+ "name": "meta.block.module-body.ql",
+ "patterns": [
+ {
+ "include": "#module-member"
+ }
+ ],
+ "begin": "(?x)((?:\\{))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#open-brace"
+ }
+ ]
+ }
+ },
+ "end": "(?x)((?:\\}))",
+ "endCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#close-brace"
+ }
+ ]
+ }
+ }
+ },
+ "module-qualifier": {
+ "match": "(?x)(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))) (?=\\s*\\:\\:)",
+ "name": "entity.name.type.namespace.ql"
+ },
+ "predicate-or-field-declaration": {
+ "begin": "(?x)(?:(?=(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))))(?!(?:(?:(?:\\b(?:_)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:and)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:any)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:as)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:asc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:avg)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:boolean)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:by)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:class)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:concat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:count)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:date)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:desc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:else)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:exists)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:extends)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:false)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:float)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:forall)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:forex)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:from)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:if)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:implies)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:import)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:in)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:instanceof)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:int)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:max)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:min)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:module)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:newtype)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:none)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:not)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:or)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:order)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:predicate)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:rank)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:result)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:select)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:strictconcat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:strictcount)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:strictsum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:string)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:sum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:super)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:then)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:this)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:true)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:unique)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:where)(?:(?!(?:[0-9A-Za-z_]))))))|(?:(?:(?:\\b(?:abstract)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:bindingset)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:cached)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:deprecated)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:external)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:final)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:language)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:library)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:override)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:pragma)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:private)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:query)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:signature)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:transient)(?:(?!(?:[0-9A-Za-z_])))))))) | (?=(?:(?:(?:\\b(?:boolean)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:date)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:float)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:int)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:predicate)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:string)(?:(?!(?:[0-9A-Za-z_]))))))) | (?=(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_])))))",
+ "end": "(?x)(?<=\\}|;)",
+ "name": "meta.block.predicate-or-field-declaration.ql",
+ "patterns": [
+ {
+ "include": "#predicate-parameter-list"
+ },
+ {
+ "include": "#predicate-body"
+ },
+ {
+ "include": "#non-context-sensitive"
+ },
+ {
+ "include": "#module-qualifier"
+ },
+ {
+ "match": "(?x)(?:\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))(?=\\s*;)",
+ "name": "variable.field.ql"
+ },
+ {
+ "match": "(?x)(?:\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "entity.name.function.ql"
+ },
+ {
+ "match": "(?x)(?:\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))|(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "entity.name.type.ql"
+ }
+ ]
+ },
+ "predicate-parameter-list": {
+ "name": "meta.block.predicate-parameter-list.ql",
+ "patterns": [
+ {
+ "include": "#non-context-sensitive"
+ },
+ {
+ "match": "(?x)(?:\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))(?=\\s*(?:,|\\)))",
+ "name": "variable.parameter.ql"
+ },
+ {
+ "include": "#module-qualifier"
+ },
+ {
+ "match": "(?x)(?:\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))|(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "entity.name.type.ql"
+ },
+ {
+ "match": "(?x)(?:\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "variable.parameter.ql"
+ }
+ ],
+ "begin": "(?x)((?:\\())",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#open-paren"
+ }
+ ]
+ }
+ },
+ "end": "(?x)((?:\\)))",
+ "endCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#close-paren"
+ }
+ ]
+ }
+ }
+ },
+ "expr-as-clause": {
+ "end": "(?x)(?:(?: (?<=(?:[0-9A-Za-z_])) (?!(?:[0-9A-Za-z_])) (?<!(?<!(?:[0-9A-Za-z_]))as)) | (?=\\s* (?!(?:// | /\\*) | (?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))) \\S) | (?=\\s* (?:(?:(?:\\b(?:_)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:and)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:any)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:as)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:asc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:avg)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:boolean)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:by)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:class)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:concat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:count)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:date)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:desc)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:else)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:exists)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:extends)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:false)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:float)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:forall)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:forex)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:from)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:if)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:implies)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:import)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:in)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:instanceof)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:int)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:max)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:min)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:module)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:newtype)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:none)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:not)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:or)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:order)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:predicate)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:rank)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:result)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:select)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:strictconcat)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:strictcount)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:strictsum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:string)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:sum)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:super)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:then)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:this)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:true)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:unique)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:where)(?:(?!(?:[0-9A-Za-z_]))))))))",
+ "name": "meta.block.expr-as-clause.ql",
+ "patterns": [
+ {
+ "include": "#non-context-sensitive"
+ },
+ {
+ "match": "(?x)(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "variable.other.ql"
+ }
+ ],
+ "begin": "(?x)((?:\\b(?:as)(?:(?!(?:[0-9A-Za-z_])))))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#as"
+ }
+ ]
+ }
+ }
+ },
+ "predicate-body-contents": {
+ "patterns": [
+ {
+ "include": "#expr-as-clause"
+ },
+ {
+ "include": "#non-context-sensitive"
+ },
+ {
+ "include": "#module-qualifier"
+ },
+ {
+ "match": "(?x)(?:\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))\\s*(?:\\*|\\+)?\\s*(?=\\()",
+ "name": "entity.name.function.ql"
+ },
+ {
+ "match": "(?x)(?:\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "variable.other.ql"
+ },
+ {
+ "match": "(?x)(?:\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))|(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "entity.name.type.ql"
+ }
+ ]
+ },
+ "predicate-body": {
+ "name": "meta.block.predicate-body.ql",
+ "patterns": [
+ {
+ "include": "#predicate-body-contents"
+ }
+ ],
+ "begin": "(?x)((?:\\{))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#open-brace"
+ }
+ ]
+ }
+ },
+ "end": "(?x)((?:\\}))",
+ "endCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#close-brace"
+ }
+ ]
+ }
+ }
+ },
+ "annotation": {
+ "patterns": [
+ {
+ "include": "#bindingset-annotation"
+ },
+ {
+ "include": "#language-annotation"
+ },
+ {
+ "include": "#pragma-annotation"
+ },
+ {
+ "include": "#annotation-keyword"
+ }
+ ]
+ },
+ "bindingset-annotation": {
+ "end": "(?x)(?! (?:\\s | $ | (?:// | /\\*)) | \\[ ) | (?<=\\])",
+ "name": "meta.block.bindingset-annotation.ql",
+ "patterns": [
+ {
+ "include": "#bindingset-annotation-body"
+ },
+ {
+ "include": "#non-context-sensitive"
+ }
+ ],
+ "begin": "(?x)((?:\\b(?:bindingset)(?:(?!(?:[0-9A-Za-z_])))))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#bindingset"
+ }
+ ]
+ }
+ }
+ },
+ "bindingset-annotation-body": {
+ "name": "meta.block.bindingset-annotation-body.ql",
+ "patterns": [
+ {
+ "include": "#non-context-sensitive"
+ },
+ {
+ "match": "(?x)(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "variable.parameter.ql"
+ }
+ ],
+ "begin": "(?x)((?:\\[))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#open-bracket"
+ }
+ ]
+ }
+ },
+ "end": "(?x)((?:\\]))",
+ "endCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#close-bracket"
+ }
+ ]
+ }
+ }
+ },
+ "language-annotation": {
+ "end": "(?x)(?! (?:\\s | $ | (?:// | /\\*)) | \\[ ) | (?<=\\])",
+ "name": "meta.block.language-annotation.ql",
+ "patterns": [
+ {
+ "include": "#language-annotation-body"
+ },
+ {
+ "include": "#non-context-sensitive"
+ }
+ ],
+ "begin": "(?x)((?:\\b(?:language)(?:(?!(?:[0-9A-Za-z_])))))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ }
+ }
+ },
+ "language-annotation-body": {
+ "name": "meta.block.language-annotation-body.ql",
+ "patterns": [
+ {
+ "include": "#non-context-sensitive"
+ },
+ {
+ "match": "(?x)\\b(?:monotonicAggregates)(?:(?!(?:[0-9A-Za-z_])))",
+ "name": "storage.modifier.ql"
+ }
+ ],
+ "begin": "(?x)((?:\\[))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#open-bracket"
+ }
+ ]
+ }
+ },
+ "end": "(?x)((?:\\]))",
+ "endCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#close-bracket"
+ }
+ ]
+ }
+ }
+ },
+ "pragma-annotation": {
+ "end": "(?x)(?! (?:\\s | $ | (?:// | /\\*)) | \\[ ) | (?<=\\])",
+ "name": "meta.block.pragma-annotation.ql",
+ "patterns": [
+ {
+ "include": "#pragma-annotation-body"
+ },
+ {
+ "include": "#non-context-sensitive"
+ }
+ ],
+ "begin": "(?x)((?:\\b(?:pragma)(?:(?!(?:[0-9A-Za-z_])))))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#pragma"
+ }
+ ]
+ }
+ }
+ },
+ "pragma-annotation-body": {
+ "name": "meta.block.pragma-annotation-body.ql",
+ "patterns": [
+ {
+ "match": "(?x)\\b(?:inline|noinline|nomagic|noopt)\\b",
+ "name": "storage.modifier.ql"
+ }
+ ],
+ "begin": "(?x)((?:\\[))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#open-bracket"
+ }
+ ]
+ }
+ },
+ "end": "(?x)((?:\\]))",
+ "endCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#close-bracket"
+ }
+ ]
+ }
+ }
+ },
+ "newtype-declaration": {
+ "end": "(?x)(?:\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "endCaptures": {
+ "0": {
+ "name": "entity.name.type.ql"
+ }
+ },
+ "name": "meta.block.newtype-declaration.ql",
+ "patterns": [
+ {
+ "include": "#non-context-sensitive"
+ }
+ ],
+ "begin": "(?x)((?:\\b(?:newtype)(?:(?!(?:[0-9A-Za-z_])))))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#newtype"
+ }
+ ]
+ }
+ }
+ },
+ "newtype-branch-name-with-prefix": {
+ "begin": "(?x)\\= | (?:\\b(?:or)(?:(?!(?:[0-9A-Za-z_]))))",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#or"
+ },
+ {
+ "include": "#comparison-operator"
+ }
+ ]
+ }
+ },
+ "end": "(?x)(?:\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "endCaptures": {
+ "0": {
+ "name": "entity.name.type.ql"
+ }
+ },
+ "name": "meta.block.newtype-branch-name-with-prefix.ql",
+ "patterns": [
+ {
+ "include": "#non-context-sensitive"
+ }
+ ]
+ },
+ "class-declaration": {
+ "end": "(?x)(?<= \\} | ; )",
+ "name": "meta.block.class-declaration.ql",
+ "patterns": [
+ {
+ "include": "#class-body"
+ },
+ {
+ "include": "#extends-clause"
+ },
+ {
+ "include": "#non-context-sensitive"
+ },
+ {
+ "match": "(?x)(?:\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "entity.name.type.class.ql"
+ }
+ ],
+ "begin": "(?x)((?:\\b(?:class)(?:(?!(?:[0-9A-Za-z_])))))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#class"
+ }
+ ]
+ }
+ }
+ },
+ "extends-clause": {
+ "end": "(?x)(?= \\{ )",
+ "name": "meta.block.extends-clause.ql",
+ "patterns": [
+ {
+ "include": "#non-context-sensitive"
+ },
+ {
+ "match": "(?x)(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))|(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "entity.name.type.ql"
+ }
+ ],
+ "begin": "(?x)((?:\\b(?:extends)(?:(?!(?:[0-9A-Za-z_])))))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#extends"
+ }
+ ]
+ }
+ }
+ },
+ "class-body": {
+ "name": "meta.block.class-body.ql",
+ "patterns": [
+ {
+ "include": "#class-member"
+ }
+ ],
+ "begin": "(?x)((?:\\{))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#open-brace"
+ }
+ ]
+ }
+ },
+ "end": "(?x)((?:\\}))",
+ "endCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#close-brace"
+ }
+ ]
+ }
+ }
+ },
+ "class-member": {
+ "patterns": [
+ {
+ "include": "#predicate-or-field-declaration"
+ },
+ {
+ "include": "#annotation"
+ },
+ {
+ "include": "#non-context-sensitive"
+ }
+ ]
+ },
+ "select-clause": {
+ "begin": "(?x)(?=(?:\\b(?:from)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:where)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))))",
+ "end": "(?x)(?!(?:\\b(?:from)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:where)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))))",
+ "name": "meta.block.select-clause.ql",
+ "patterns": [
+ {
+ "include": "#from-section"
+ },
+ {
+ "include": "#where-section"
+ },
+ {
+ "include": "#select-section"
+ }
+ ]
+ },
+ "from-section": {
+ "end": "(?x)(?= (?:\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))) | (?:\\b(?:where)(?:(?!(?:[0-9A-Za-z_])))) )",
+ "name": "meta.block.from-section.ql",
+ "patterns": [
+ {
+ "include": "#non-context-sensitive"
+ },
+ {
+ "match": "(?x)(?:\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))(?=\\s*(?:,|(?:\\b(?:where)(?:(?!(?:[0-9A-Za-z_]))))|(?:\\b(?:select)(?:(?!(?:[0-9A-Za-z_]))))|$))",
+ "name": "variable.parameter.ql"
+ },
+ {
+ "include": "#module-qualifier"
+ },
+ {
+ "match": "(?x)(?:\\b [A-Z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))|(?:@[a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "entity.name.type.ql"
+ },
+ {
+ "match": "(?x)(?:\\b [a-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "variable.parameter.ql"
+ }
+ ],
+ "begin": "(?x)((?:\\b(?:from)(?:(?!(?:[0-9A-Za-z_])))))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#from"
+ }
+ ]
+ }
+ }
+ },
+ "where-section": {
+ "end": "(?x)(?=(?:\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))))",
+ "name": "meta.block.where-section.ql",
+ "patterns": [
+ {
+ "include": "#predicate-body-contents"
+ }
+ ],
+ "begin": "(?x)((?:\\b(?:where)(?:(?!(?:[0-9A-Za-z_])))))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#where"
+ }
+ ]
+ }
+ }
+ },
+ "select-section": {
+ "end": "(?x)(?=\\n)",
+ "name": "meta.block.select-section.ql",
+ "patterns": [
+ {
+ "include": "#predicate-body-contents"
+ },
+ {
+ "include": "#select-as-clause"
+ }
+ ],
+ "begin": "(?x)((?:\\b(?:select)(?:(?!(?:[0-9A-Za-z_])))))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#select"
+ }
+ ]
+ }
+ }
+ },
+ "select-as-clause": {
+ "end": "(?x)(?<=(?:[0-9A-Za-z_])(?:(?!(?:[0-9A-Za-z_]))))",
+ "match": "(?x)meta.block.select-as-clause.ql",
+ "patterns": [
+ {
+ "include": "#non-context-sensitive"
+ },
+ {
+ "match": "(?x)(?:\\b [A-Za-z][0-9A-Za-z_]* (?:(?!(?:[0-9A-Za-z_]))))",
+ "name": "variable.other.ql"
+ }
+ ],
+ "begin": "(?x)((?:\\b(?:as)(?:(?!(?:[0-9A-Za-z_])))))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#as"
+ }
+ ]
+ }
+ }
+ },
+ "literal": {
+ "patterns": [
+ {
+ "include": "#float-literal"
+ },
+ {
+ "include": "#int-literal"
+ },
+ {
+ "include": "#string-literal"
+ }
+ ]
+ },
+ "int-literal": {
+ "match": "(?x)-?[0-9]+(?![0-9])",
+ "name": "constant.numeric.decimal.ql"
+ },
+ "float-literal": {
+ "match": "(?x)-?[0-9]+\\.[0-9]+(?![0-9])",
+ "name": "constant.numeric.decimal.ql"
+ },
+ "string-literal": {
+ "name": "string.quoted.double.ql",
+ "begin": "(?x)\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ql"
+ }
+ },
+ "end": "(?x)(\") | ((?:[^\\\\\\n])$)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.ql"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.ql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-escape"
+ }
+ ]
+ },
+ "string-escape": {
+ "match": "(?x)\\\\[\"\\\\nrt]",
+ "name": "constant.character.escape.ql"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/coffee.tmLanguage.json b/node_modules/shiki/languages/coffee.tmLanguage.json
new file mode 100644
index 0000000..4c5589c
--- /dev/null
+++ b/node_modules/shiki/languages/coffee.tmLanguage.json
@@ -0,0 +1,1316 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/atom/language-coffee-script/blob/master/grammars/coffeescript.cson",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/atom/language-coffee-script/commit/0f6db9143663e18b1ad00667820f46747dba495e",
+ "name": "coffee",
+ "scopeName": "source.coffee",
+ "patterns": [
+ {
+ "include": "#jsx"
+ },
+ {
+ "match": "(new)\\s+(?:(?:(class)\\s+(\\w+(?:\\.\\w*)*)?)|(\\w+(?:\\.\\w*)*))",
+ "name": "meta.class.instance.constructor.coffee",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.new.coffee"
+ },
+ "2": {
+ "name": "storage.type.class.coffee"
+ },
+ "3": {
+ "name": "entity.name.type.instance.coffee"
+ },
+ "4": {
+ "name": "entity.name.type.instance.coffee"
+ }
+ }
+ },
+ {
+ "begin": "'''",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.coffee"
+ }
+ },
+ "end": "'''",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.coffee"
+ }
+ },
+ "name": "string.quoted.single.heredoc.coffee",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.escape.backslash.coffee"
+ }
+ },
+ "match": "(\\\\).",
+ "name": "constant.character.escape.backslash.coffee"
+ }
+ ]
+ },
+ {
+ "begin": "\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.coffee"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.coffee"
+ }
+ },
+ "name": "string.quoted.double.heredoc.coffee",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.escape.backslash.coffee"
+ }
+ },
+ "match": "(\\\\).",
+ "name": "constant.character.escape.backslash.coffee"
+ },
+ {
+ "include": "#interpolated_coffee"
+ }
+ ]
+ },
+ {
+ "match": "(`)(.*)(`)",
+ "name": "string.quoted.script.coffee",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.coffee"
+ },
+ "2": {
+ "name": "source.js.embedded.coffee",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.coffee"
+ }
+ }
+ },
+ {
+ "begin": "(?<!#)###(?!#)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.coffee"
+ }
+ },
+ "end": "###",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.coffee"
+ }
+ },
+ "name": "comment.block.coffee",
+ "patterns": [
+ {
+ "match": "(?<=^|\\s)@\\w*(?=\\s)",
+ "name": "storage.type.annotation.coffee"
+ }
+ ]
+ },
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.coffee"
+ }
+ },
+ "end": "$",
+ "name": "comment.line.number-sign.coffee"
+ },
+ {
+ "begin": "///",
+ "end": "(///)[gimuy]*",
+ "name": "string.regexp.multiline.coffee",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.coffee"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.coffee"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#heregexp"
+ }
+ ]
+ },
+ {
+ "begin": "(?<![\\w$])(/)(?=(?![/*+?])(.+)(/)[gimuy]*(?!\\s*[\\w$/(]))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.coffee"
+ }
+ },
+ "end": "(/)[gimuy]*(?!\\s*[\\w$/(])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.coffee"
+ }
+ },
+ "name": "string.regexp.coffee",
+ "patterns": [
+ {
+ "include": "source.js.regexp"
+ }
+ ]
+ },
+ {
+ "match": "\\b(?<![\\.\\$])(break|by|catch|continue|else|finally|for|in|of|if|return|switch|then|throw|try|unless|when|while|until|loop|do|export|import|default|from|as|yield|async|await|(?<=for)\\s+own)(?!\\s*:)\\b",
+ "name": "keyword.control.coffee"
+ },
+ {
+ "match": "\\b(?<![\\.\\$])(delete|instanceof|new|typeof)(?!\\s*:)\\b",
+ "name": "keyword.operator.$1.coffee"
+ },
+ {
+ "match": "\\b(?<![\\.\\$])(case|function|var|void|with|const|let|enum|native|__hasProp|__extends|__slice|__bind|__indexOf|implements|interface|package|private|protected|public|static)(?!\\s*:)\\b",
+ "name": "keyword.reserved.coffee"
+ },
+ {
+ "begin": "(?x)\n(?<=\\s|^)((@)?[a-zA-Z_$][\\w$]*)\n\\s*([:=])\\s*\n(?=(\\([^\\(\\)]*\\)\\s*)?[=-]>)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.coffee"
+ },
+ "2": {
+ "name": "variable.other.readwrite.instance.coffee"
+ },
+ "3": {
+ "name": "keyword.operator.assignment.coffee"
+ }
+ },
+ "end": "[=-]>",
+ "endCaptures": {
+ "0": {
+ "name": "storage.type.function.coffee"
+ }
+ },
+ "name": "meta.function.coffee",
+ "patterns": [
+ {
+ "include": "#function_params"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n(?<=\\s|^)(?:((')([^']*?)('))|((\")([^\"]*?)(\")))\n\\s*([:=])\\s*\n(?=(\\([^\\(\\)]*\\)\\s*)?[=-]>)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.quoted.single.coffee"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.coffee"
+ },
+ "3": {
+ "name": "entity.name.function.coffee"
+ },
+ "4": {
+ "name": "punctuation.definition.string.end.coffee"
+ },
+ "5": {
+ "name": "string.quoted.double.coffee"
+ },
+ "6": {
+ "name": "punctuation.definition.string.begin.coffee"
+ },
+ "7": {
+ "name": "entity.name.function.coffee"
+ },
+ "8": {
+ "name": "punctuation.definition.string.end.coffee"
+ },
+ "9": {
+ "name": "keyword.operator.assignment.coffee"
+ }
+ },
+ "end": "[=-]>",
+ "endCaptures": {
+ "0": {
+ "name": "storage.type.function.coffee"
+ }
+ },
+ "name": "meta.function.coffee",
+ "patterns": [
+ {
+ "include": "#function_params"
+ }
+ ]
+ },
+ {
+ "begin": "(?=(\\([^\\(\\)]*\\)\\s*)?[=-]>)",
+ "end": "[=-]>",
+ "endCaptures": {
+ "0": {
+ "name": "storage.type.function.coffee"
+ }
+ },
+ "name": "meta.function.inline.coffee",
+ "patterns": [
+ {
+ "include": "#function_params"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\s|^)({)(?=[^'\"#]+?}[\\s\\]}]*=)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.destructuring.begin.bracket.curly.coffee"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.destructuring.end.bracket.curly.coffee"
+ }
+ },
+ "name": "meta.variable.assignment.destructured.object.coffee",
+ "patterns": [
+ {
+ "include": "$self"
+ },
+ {
+ "match": "[a-zA-Z$_]\\w*",
+ "name": "variable.assignment.coffee"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\s|^)(\\[)(?=[^'\"#]+?\\][\\s\\]}]*=)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.destructuring.begin.bracket.square.coffee"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.destructuring.end.bracket.square.coffee"
+ }
+ },
+ "name": "meta.variable.assignment.destructured.array.coffee",
+ "patterns": [
+ {
+ "include": "$self"
+ },
+ {
+ "match": "[a-zA-Z$_]\\w*",
+ "name": "variable.assignment.coffee"
+ }
+ ]
+ },
+ {
+ "match": "\\b(?<!\\.|::)(true|on|yes)(?!\\s*[:=][^=])\\b",
+ "name": "constant.language.boolean.true.coffee"
+ },
+ {
+ "match": "\\b(?<!\\.|::)(false|off|no)(?!\\s*[:=][^=])\\b",
+ "name": "constant.language.boolean.false.coffee"
+ },
+ {
+ "match": "\\b(?<!\\.|::)null(?!\\s*[:=][^=])\\b",
+ "name": "constant.language.null.coffee"
+ },
+ {
+ "match": "\\b(?<!\\.|::)extends(?!\\s*[:=])\\b",
+ "name": "variable.language.coffee"
+ },
+ {
+ "match": "(?<!\\.)\\b(?<!\\$)(super|this|arguments)(?!\\s*[:=][^=]|\\$)\\b",
+ "name": "variable.language.$1.coffee"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.class.coffee"
+ },
+ "2": {
+ "name": "keyword.control.inheritance.coffee"
+ },
+ "3": {
+ "name": "entity.other.inherited-class.coffee"
+ }
+ },
+ "match": "(?<=\\s|^|\\[|\\()(class)\\s+(extends)\\s+(@?[a-zA-Z\\$\\._][\\w\\.]*)",
+ "name": "meta.class.coffee"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.class.coffee"
+ },
+ "2": {
+ "name": "entity.name.type.class.coffee"
+ },
+ "3": {
+ "name": "keyword.control.inheritance.coffee"
+ },
+ "4": {
+ "name": "entity.other.inherited-class.coffee"
+ }
+ },
+ "match": "(?<=\\s|^|\\[|\\()(class\\b)\\s+(@?[a-zA-Z\\$_][\\w\\.]*)?(?:\\s+(extends)\\s+(@?[a-zA-Z\\$\\._][\\w\\.]*))?",
+ "name": "meta.class.coffee"
+ },
+ {
+ "match": "\\b(debugger|\\\\)\\b",
+ "name": "keyword.other.coffee"
+ },
+ {
+ "match": "\\b(Array|ArrayBuffer|Blob|Boolean|Date|document|Function|Int(8|16|32|64)Array|Math|Map|Number|Object|Proxy|RegExp|Set|String|WeakMap|window|Uint(8|16|32|64)Array|XMLHttpRequest)\\b",
+ "name": "support.class.coffee"
+ },
+ {
+ "match": "\\b(console)\\b",
+ "name": "entity.name.type.object.coffee"
+ },
+ {
+ "match": "((?<=console\\.)(debug|warn|info|log|error|time|timeEnd|assert))\\b",
+ "name": "support.function.console.coffee"
+ },
+ {
+ "match": "((?<=\\.)(apply|call|concat|every|filter|forEach|from|hasOwnProperty|indexOf|isPrototypeOf|join|lastIndexOf|map|of|pop|propertyIsEnumerable|push|reduce(Right)?|reverse|shift|slice|some|sort|splice|to(Locale)?String|unshift|valueOf))\\b",
+ "name": "support.function.method.array.coffee"
+ },
+ {
+ "match": "((?<=Array\\.)(isArray))\\b",
+ "name": "support.function.static.array.coffee"
+ },
+ {
+ "match": "((?<=Object\\.)(create|definePropert(ies|y)|freeze|getOwnProperty(Descriptors?|Names)|getProperty(Descriptor|Names)|getPrototypeOf|is(Extensible|Frozen|Sealed)?|isnt|keys|preventExtensions|seal))\\b",
+ "name": "support.function.static.object.coffee"
+ },
+ {
+ "match": "((?<=Math\\.)(abs|acos|acosh|asin|asinh|atan|atan2|atanh|ceil|cos|cosh|exp|expm1|floor|hypot|log|log10|log1p|log2|max|min|pow|random|round|sign|sin|sinh|sqrt|tan|tanh|trunc))\\b",
+ "name": "support.function.static.math.coffee"
+ },
+ {
+ "match": "((?<=Number\\.)(is(Finite|Integer|NaN)|toInteger))\\b",
+ "name": "support.function.static.number.coffee"
+ },
+ {
+ "match": "(?<!\\.)\\b(module|exports|__filename|__dirname|global|process)(?!\\s*:)\\b",
+ "name": "support.variable.coffee"
+ },
+ {
+ "match": "\\b(Infinity|NaN|undefined)\\b",
+ "name": "constant.language.coffee"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#method_calls"
+ },
+ {
+ "include": "#function_calls"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#objects"
+ },
+ {
+ "include": "#properties"
+ },
+ {
+ "match": "::",
+ "name": "keyword.operator.prototype.coffee"
+ },
+ {
+ "match": "(?<!\\$)\\b[0-9]+[\\w$]*",
+ "name": "invalid.illegal.identifier.coffee"
+ },
+ {
+ "match": ";",
+ "name": "punctuation.terminator.statement.coffee"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.coffee"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.curly.coffee"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.curly.coffee"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.begin.bracket.square.coffee"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.end.bracket.square.coffee"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?<!\\.)\\.{3}",
+ "name": "keyword.operator.slice.exclusive.coffee"
+ },
+ {
+ "match": "(?<!\\.)\\.{2}",
+ "name": "keyword.operator.slice.inclusive.coffee"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.coffee"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.coffee"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "#instance_variable"
+ },
+ {
+ "include": "#single_quoted_string"
+ },
+ {
+ "include": "#double_quoted_string"
+ }
+ ],
+ "repository": {
+ "arguments": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.begin.bracket.round.coffee"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.bracket.round.coffee"
+ }
+ },
+ "name": "meta.arguments.coffee",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?=(@|@?[\\w$]+|[=-]>|\\-\\d|\\[|{|\"|'))",
+ "end": "(?=\\s*(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))|(?=\\s*(}|\\]|\\)|#|$))",
+ "name": "meta.arguments.coffee",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "double_quoted_string": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.coffee"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.coffee"
+ }
+ },
+ "name": "string.quoted.double.coffee",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.escape.backslash.coffee"
+ }
+ },
+ "match": "(\\\\)(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)",
+ "name": "constant.character.escape.backslash.coffee"
+ },
+ {
+ "include": "#interpolated_coffee"
+ }
+ ]
+ }
+ ]
+ },
+ "function_calls": {
+ "patterns": [
+ {
+ "begin": "(@)?([\\w$]+)(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.readwrite.instance.coffee"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#function_names"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\))",
+ "name": "meta.function-call.coffee",
+ "patterns": [
+ {
+ "include": "#arguments"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n(@)?([\\w$]+)\n\\s*\n(?=\\s+(?!(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))(?=(@?[\\w$]+|[=-]>|\\-\\d|\\[|{|\"|')))",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.readwrite.instance.coffee"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#function_names"
+ }
+ ]
+ }
+ },
+ "end": "(?=\\s*(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))|(?=\\s*(}|\\]|\\)|#|$))",
+ "name": "meta.function-call.coffee",
+ "patterns": [
+ {
+ "include": "#arguments"
+ }
+ ]
+ }
+ ]
+ },
+ "function_names": {
+ "patterns": [
+ {
+ "match": "(?x)\n\\b(isNaN|isFinite|eval|uneval|parseInt|parseFloat|decodeURI|\ndecodeURIComponent|encodeURI|encodeURIComponent|escape|unescape|\nrequire|set(Interval|Timeout)|clear(Interval|Timeout))\\b",
+ "name": "support.function.coffee"
+ },
+ {
+ "match": "[a-zA-Z_$][\\w$]*",
+ "name": "entity.name.function.coffee"
+ },
+ {
+ "match": "\\d[\\w$]*",
+ "name": "invalid.illegal.identifier.coffee"
+ }
+ ]
+ },
+ "function_params": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.coffee"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.coffee"
+ }
+ },
+ "name": "meta.parameters.coffee",
+ "patterns": [
+ {
+ "match": "([a-zA-Z_$][\\w$]*)(\\.\\.\\.)?",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.function.coffee"
+ },
+ "2": {
+ "name": "keyword.operator.splat.coffee"
+ }
+ }
+ },
+ {
+ "match": "(@(?:[a-zA-Z_$][\\w$]*)?)(\\.\\.\\.)?",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.function.readwrite.instance.coffee"
+ },
+ "2": {
+ "name": "keyword.operator.splat.coffee"
+ }
+ }
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "embedded_comment": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.coffee"
+ }
+ },
+ "match": "(?<!\\\\)(#).*$\\n?",
+ "name": "comment.line.number-sign.coffee"
+ }
+ ]
+ },
+ "instance_variable": {
+ "patterns": [
+ {
+ "match": "(@)([a-zA-Z_\\$]\\w*)?",
+ "name": "variable.other.readwrite.instance.coffee"
+ }
+ ]
+ },
+ "interpolated_coffee": {
+ "patterns": [
+ {
+ "begin": "\\#\\{",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.embedded.coffee"
+ }
+ },
+ "end": "\\}",
+ "name": "source.coffee.embedded.source",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "method_calls": {
+ "patterns": [
+ {
+ "begin": "(?:(\\.)|(::))\\s*([\\w$]+)\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.method.period.coffee"
+ },
+ "2": {
+ "name": "keyword.operator.prototype.coffee"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#method_names"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\))",
+ "name": "meta.method-call.coffee",
+ "patterns": [
+ {
+ "include": "#arguments"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(\\.)|(::))\\s*([\\w$]+)\\s*(?=\\s+(?!(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))(?=(@|@?[\\w$]+|[=-]>|\\-\\d|\\[|{|\"|')))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.method.period.coffee"
+ },
+ "2": {
+ "name": "keyword.operator.prototype.coffee"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#method_names"
+ }
+ ]
+ }
+ },
+ "end": "(?=\\s*(?<![\\w$])(of|in|then|is|isnt|and|or|for|else|when|if|unless|by|instanceof)(?![\\w$]))|(?=\\s*(}|\\]|\\)|#|$))",
+ "name": "meta.method-call.coffee",
+ "patterns": [
+ {
+ "include": "#arguments"
+ }
+ ]
+ }
+ ]
+ },
+ "method_names": {
+ "patterns": [
+ {
+ "match": "(?x)\n\\bon(Rowsinserted|Rowsdelete|Rowenter|Rowexit|Resize|Resizestart|Resizeend|Reset|\nReadystatechange|Mouseout|Mouseover|Mousedown|Mouseup|Mousemove|\nBefore(cut|deactivate|unload|update|paste|print|editfocus|activate)|\nBlur|Scrolltop|Submit|Select|Selectstart|Selectionchange|Hover|Help|\nChange|Contextmenu|Controlselect|Cut|Cellchange|Clock|Close|Deactivate|\nDatasetchanged|Datasetcomplete|Dataavailable|Drop|Drag|Dragstart|Dragover|\nDragdrop|Dragenter|Dragend|Dragleave|Dblclick|Unload|Paste|Propertychange|Error|\nErrorupdate|Keydown|Keyup|Keypress|Focus|Load|Activate|Afterupdate|Afterprint|Abort)\\b",
+ "name": "support.function.event-handler.coffee"
+ },
+ {
+ "match": "(?x)\n\\b(shift|showModelessDialog|showModalDialog|showHelp|scroll|scrollX|scrollByPages|\nscrollByLines|scrollY|scrollTo|stop|strike|sizeToContent|sidebar|signText|sort|\nsup|sub|substr|substring|splice|split|send|set(Milliseconds|Seconds|Minutes|Hours|\nMonth|Year|FullYear|Date|UTC(Milliseconds|Seconds|Minutes|Hours|Month|FullYear|Date)|\nTime|Hotkeys|Cursor|ZOptions|Active|Resizable|RequestHeader)|search|slice|\nsavePreferences|small|home|handleEvent|navigate|char|charCodeAt|charAt|concat|\ncontextual|confirm|compile|clear|captureEvents|call|createStyleSheet|createPopup|\ncreateEventObject|to(GMTString|UTCString|String|Source|UpperCase|LowerCase|LocaleString)|\ntest|taint|taintEnabled|indexOf|italics|disableExternalCapture|dump|detachEvent|unshift|\nuntaint|unwatch|updateCommands|join|javaEnabled|pop|push|plugins.refresh|paddings|parse|\nprint|prompt|preference|enableExternalCapture|exec|execScript|valueOf|UTC|find|file|\nfileModifiedDate|fileSize|fileCreatedDate|fileUpdatedDate|fixed|fontsize|fontcolor|\nforward|fromCharCode|watch|link|load|lastIndexOf|anchor|attachEvent|atob|apply|alert|\nabort|routeEvents|resize|resizeBy|resizeTo|recalc|returnValue|replace|reverse|reload|\nreleaseCapture|releaseEvents|go|get(Milliseconds|Seconds|Minutes|Hours|Month|Day|Year|FullYear|\nTime|Date|TimezoneOffset|UTC(Milliseconds|Seconds|Minutes|Hours|Day|Month|FullYear|Date)|\nAttention|Selection|ResponseHeader|AllResponseHeaders)|moveBy|moveBelow|moveTo|\nmoveToAbsolute|moveAbove|mergeAttributes|match|margins|btoa|big|bold|borderWidths|blink|back)\\b",
+ "name": "support.function.coffee"
+ },
+ {
+ "match": "(?x)\n\\b(acceptNode|add|addEventListener|addTextTrack|adoptNode|after|animate|append|\nappendChild|appendData|before|blur|canPlayType|captureStream|\ncaretPositionFromPoint|caretRangeFromPoint|checkValidity|clear|click|\ncloneContents|cloneNode|cloneRange|close|closest|collapse|\ncompareBoundaryPoints|compareDocumentPosition|comparePoint|contains|\nconvertPointFromNode|convertQuadFromNode|convertRectFromNode|createAttribute|\ncreateAttributeNS|createCaption|createCDATASection|createComment|\ncreateContextualFragment|createDocument|createDocumentFragment|\ncreateDocumentType|createElement|createElementNS|createEntityReference|\ncreateEvent|createExpression|createHTMLDocument|createNodeIterator|\ncreateNSResolver|createProcessingInstruction|createRange|createShadowRoot|\ncreateTBody|createTextNode|createTFoot|createTHead|createTreeWalker|delete|\ndeleteCaption|deleteCell|deleteContents|deleteData|deleteRow|deleteTFoot|\ndeleteTHead|detach|disconnect|dispatchEvent|elementFromPoint|elementsFromPoint|\nenableStyleSheetsForSet|entries|evaluate|execCommand|exitFullscreen|\nexitPointerLock|expand|extractContents|fastSeek|firstChild|focus|forEach|get|\ngetAll|getAnimations|getAttribute|getAttributeNames|getAttributeNode|\ngetAttributeNodeNS|getAttributeNS|getBoundingClientRect|getBoxQuads|\ngetClientRects|getContext|getDestinationInsertionPoints|getElementById|\ngetElementsByClassName|getElementsByName|getElementsByTagName|\ngetElementsByTagNameNS|getItem|getNamedItem|getSelection|getStartDate|\ngetVideoPlaybackQuality|has|hasAttribute|hasAttributeNS|hasAttributes|\nhasChildNodes|hasFeature|hasFocus|importNode|initEvent|insertAdjacentElement|\ninsertAdjacentHTML|insertAdjacentText|insertBefore|insertCell|insertData|\ninsertNode|insertRow|intersectsNode|isDefaultNamespace|isEqualNode|\nisPointInRange|isSameNode|item|key|keys|lastChild|load|lookupNamespaceURI|\nlookupPrefix|matches|move|moveAttribute|moveAttributeNode|moveChild|\nmoveNamedItem|namedItem|nextNode|nextSibling|normalize|observe|open|\nparentNode|pause|play|postMessage|prepend|preventDefault|previousNode|\npreviousSibling|probablySupportsContext|queryCommandEnabled|\nqueryCommandIndeterm|queryCommandState|queryCommandSupported|queryCommandValue|\nquerySelector|querySelectorAll|registerContentHandler|registerElement|\nregisterProtocolHandler|releaseCapture|releaseEvents|remove|removeAttribute|\nremoveAttributeNode|removeAttributeNS|removeChild|removeEventListener|\nremoveItem|replace|replaceChild|replaceData|replaceWith|reportValidity|\nrequestFullscreen|requestPointerLock|reset|scroll|scrollBy|scrollIntoView|\nscrollTo|seekToNextFrame|select|selectNode|selectNodeContents|set|setAttribute|\nsetAttributeNode|setAttributeNodeNS|setAttributeNS|setCapture|\nsetCustomValidity|setEnd|setEndAfter|setEndBefore|setItem|setNamedItem|\nsetRangeText|setSelectionRange|setSinkId|setStart|setStartAfter|setStartBefore|\nslice|splitText|stepDown|stepUp|stopImmediatePropagation|stopPropagation|\nsubmit|substringData|supports|surroundContents|takeRecords|terminate|toBlob|\ntoDataURL|toggle|toString|values|write|writeln)\\b",
+ "name": "support.function.dom.coffee"
+ },
+ {
+ "match": "[a-zA-Z_$][\\w$]*",
+ "name": "entity.name.function.coffee"
+ },
+ {
+ "match": "\\d[\\w$]*",
+ "name": "invalid.illegal.identifier.coffee"
+ }
+ ]
+ },
+ "numbers": {
+ "patterns": [
+ {
+ "match": "\\b(?<!\\$)0(x|X)[0-9a-fA-F]+\\b(?!\\$)",
+ "name": "constant.numeric.hex.coffee"
+ },
+ {
+ "match": "\\b(?<!\\$)0(b|B)[01]+\\b(?!\\$)",
+ "name": "constant.numeric.binary.coffee"
+ },
+ {
+ "match": "\\b(?<!\\$)0(o|O)?[0-7]+\\b(?!\\$)",
+ "name": "constant.numeric.octal.coffee"
+ },
+ {
+ "match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9]+(\\.)[0-9]+[eE][+-]?[0-9]+\\b)| # 1.1E+3\n (?:\\b[0-9]+(\\.)[eE][+-]?[0-9]+\\b)| # 1.E+3\n (?:\\B(\\.)[0-9]+[eE][+-]?[0-9]+\\b)| # .1E+3\n (?:\\b[0-9]+[eE][+-]?[0-9]+\\b)| # 1E+3\n (?:\\b[0-9]+(\\.)[0-9]+\\b)| # 1.1\n (?:\\b[0-9]+(?=\\.{2,3}))| # 1 followed by a slice\n (?:\\b[0-9]+(\\.)\\B)| # 1.\n (?:\\B(\\.)[0-9]+\\b)| # .1\n (?:\\b[0-9]+\\b(?!\\.)) # 1\n)(?!\\$)",
+ "captures": {
+ "0": {
+ "name": "constant.numeric.decimal.coffee"
+ },
+ "1": {
+ "name": "punctuation.separator.decimal.period.coffee"
+ },
+ "2": {
+ "name": "punctuation.separator.decimal.period.coffee"
+ },
+ "3": {
+ "name": "punctuation.separator.decimal.period.coffee"
+ },
+ "4": {
+ "name": "punctuation.separator.decimal.period.coffee"
+ },
+ "5": {
+ "name": "punctuation.separator.decimal.period.coffee"
+ },
+ "6": {
+ "name": "punctuation.separator.decimal.period.coffee"
+ }
+ }
+ }
+ ]
+ },
+ "objects": {
+ "patterns": [
+ {
+ "match": "[A-Z][A-Z0-9_$]*(?=\\s*\\??(\\.\\s*[a-zA-Z_$]\\w*|::))",
+ "name": "constant.other.object.coffee"
+ },
+ {
+ "match": "[a-zA-Z_$][\\w$]*(?=\\s*\\??(\\.\\s*[a-zA-Z_$]\\w*|::))",
+ "name": "variable.other.object.coffee"
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "match": "(?:([a-zA-Z$_][\\w$]*)?\\s+|(?<![\\w$]))(and=|or=)",
+ "captures": {
+ "1": {
+ "name": "variable.assignment.coffee"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.compound.coffee"
+ }
+ }
+ },
+ {
+ "match": "([a-zA-Z$_][\\w$]*)?\\s*(%=|\\+=|-=|\\*=|&&=|\\|\\|=|\\?=|(?<!\\()/=)",
+ "captures": {
+ "1": {
+ "name": "variable.assignment.coffee"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.compound.coffee"
+ }
+ }
+ },
+ {
+ "match": "([a-zA-Z$_][\\w$]*)?\\s*(&=|\\^=|<<=|>>=|>>>=|\\|=)",
+ "captures": {
+ "1": {
+ "name": "variable.assignment.coffee"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.compound.bitwise.coffee"
+ }
+ }
+ },
+ {
+ "match": "<<|>>>|>>",
+ "name": "keyword.operator.bitwise.shift.coffee"
+ },
+ {
+ "match": "!=|<=|>=|==|<|>",
+ "name": "keyword.operator.comparison.coffee"
+ },
+ {
+ "match": "&&|!|\\|\\|",
+ "name": "keyword.operator.logical.coffee"
+ },
+ {
+ "match": "&|\\||\\^|~",
+ "name": "keyword.operator.bitwise.coffee"
+ },
+ {
+ "match": "([a-zA-Z$_][\\w$]*)?\\s*(=|:(?!:))(?![>=])",
+ "captures": {
+ "1": {
+ "name": "variable.assignment.coffee"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.coffee"
+ }
+ }
+ },
+ {
+ "match": "--",
+ "name": "keyword.operator.decrement.coffee"
+ },
+ {
+ "match": "\\+\\+",
+ "name": "keyword.operator.increment.coffee"
+ },
+ {
+ "match": "\\.\\.\\.",
+ "name": "keyword.operator.splat.coffee"
+ },
+ {
+ "match": "\\?",
+ "name": "keyword.operator.existential.coffee"
+ },
+ {
+ "match": "%|\\*|/|-|\\+",
+ "name": "keyword.operator.coffee"
+ },
+ {
+ "match": "(?x)\n\\b(?<![\\.\\$])\n(?:\n (and|or|not) # logical\n |\n (is|isnt) # comparison\n)\n(?!\\s*:)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.logical.coffee"
+ },
+ "2": {
+ "name": "keyword.operator.comparison.coffee"
+ }
+ }
+ }
+ ]
+ },
+ "properties": {
+ "patterns": [
+ {
+ "match": "(?:(\\.)|(::))\\s*([A-Z][A-Z0-9_$]*\\b\\$*)(?=\\s*\\??(\\.\\s*[a-zA-Z_$]\\w*|::))",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.property.period.coffee"
+ },
+ "2": {
+ "name": "keyword.operator.prototype.coffee"
+ },
+ "3": {
+ "name": "constant.other.object.property.coffee"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(::))\\s*(\\$*[a-zA-Z_$][\\w$]*)(?=\\s*\\??(\\.\\s*[a-zA-Z_$]\\w*|::))",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.property.period.coffee"
+ },
+ "2": {
+ "name": "keyword.operator.prototype.coffee"
+ },
+ "3": {
+ "name": "variable.other.object.property.coffee"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(::))\\s*([A-Z][A-Z0-9_$]*\\b\\$*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.property.period.coffee"
+ },
+ "2": {
+ "name": "keyword.operator.prototype.coffee"
+ },
+ "3": {
+ "name": "constant.other.property.coffee"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(::))\\s*(\\$*[a-zA-Z_$][\\w$]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.property.period.coffee"
+ },
+ "2": {
+ "name": "keyword.operator.prototype.coffee"
+ },
+ "3": {
+ "name": "variable.other.property.coffee"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(::))\\s*([0-9][\\w$]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.property.period.coffee"
+ },
+ "2": {
+ "name": "keyword.operator.prototype.coffee"
+ },
+ "3": {
+ "name": "invalid.illegal.identifier.coffee"
+ }
+ }
+ }
+ ]
+ },
+ "single_quoted_string": {
+ "patterns": [
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.coffee"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.coffee"
+ }
+ },
+ "name": "string.quoted.single.coffee",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.escape.backslash.coffee"
+ }
+ },
+ "match": "(\\\\)(x[0-9A-Fa-f]{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)",
+ "name": "constant.character.escape.backslash.coffee"
+ }
+ ]
+ }
+ ]
+ },
+ "regex-character-class": {
+ "patterns": [
+ {
+ "match": "\\\\[wWsSdD]|\\.",
+ "name": "constant.character.character-class.regexp"
+ },
+ {
+ "match": "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})",
+ "name": "constant.character.numeric.regexp"
+ },
+ {
+ "match": "\\\\c[A-Z]",
+ "name": "constant.character.control.regexp"
+ },
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.backslash.regexp"
+ }
+ ]
+ },
+ "heregexp": {
+ "patterns": [
+ {
+ "match": "\\\\[bB]|\\^|\\$",
+ "name": "keyword.control.anchor.regexp"
+ },
+ {
+ "match": "\\\\[1-9]\\d*",
+ "name": "keyword.other.back-reference.regexp"
+ },
+ {
+ "match": "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",
+ "name": "keyword.operator.quantifier.regexp"
+ },
+ {
+ "match": "\\|",
+ "name": "keyword.operator.or.regexp"
+ },
+ {
+ "begin": "(\\()((\\?=)|(\\?!))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.regexp"
+ },
+ "3": {
+ "name": "meta.assertion.look-ahead.regexp"
+ },
+ "4": {
+ "name": "meta.assertion.negative-look-ahead.regexp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.regexp"
+ }
+ },
+ "name": "meta.group.assertion.regexp",
+ "patterns": [
+ {
+ "include": "#heregexp"
+ }
+ ]
+ },
+ {
+ "begin": "\\((\\?:)?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.regexp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.regexp"
+ }
+ },
+ "name": "meta.group.regexp",
+ "patterns": [
+ {
+ "include": "#heregexp"
+ }
+ ]
+ },
+ {
+ "begin": "(\\[)(\\^)?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.regexp"
+ },
+ "2": {
+ "name": "keyword.operator.negation.regexp"
+ }
+ },
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.regexp"
+ }
+ },
+ "name": "constant.other.character-class.set.regexp",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "constant.character.numeric.regexp"
+ },
+ "2": {
+ "name": "constant.character.control.regexp"
+ },
+ "3": {
+ "name": "constant.character.escape.backslash.regexp"
+ },
+ "4": {
+ "name": "constant.character.numeric.regexp"
+ },
+ "5": {
+ "name": "constant.character.control.regexp"
+ },
+ "6": {
+ "name": "constant.character.escape.backslash.regexp"
+ }
+ },
+ "match": "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",
+ "name": "constant.other.character-class.range.regexp"
+ },
+ {
+ "include": "#regex-character-class"
+ }
+ ]
+ },
+ {
+ "include": "#regex-character-class"
+ },
+ {
+ "include": "#interpolated_coffee"
+ },
+ {
+ "include": "#embedded_comment"
+ }
+ ]
+ },
+ "jsx": {
+ "patterns": [
+ {
+ "include": "#jsx-tag"
+ },
+ {
+ "include": "#jsx-end-tag"
+ }
+ ]
+ },
+ "jsx-expression": {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.curly.coffee"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.curly.coffee"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double_quoted_string"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "jsx-attribute": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.coffee"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.coffee"
+ }
+ },
+ "match": "(?:^|\\s+)([-\\w.]+)\\s*(=)"
+ },
+ {
+ "include": "#double_quoted_string"
+ },
+ {
+ "include": "#single_quoted_string"
+ },
+ {
+ "include": "#jsx-expression"
+ }
+ ]
+ },
+ "jsx-tag": {
+ "patterns": [
+ {
+ "begin": "(<)([-\\w\\.]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.coffee"
+ },
+ "2": {
+ "name": "entity.name.tag.coffee"
+ }
+ },
+ "end": "(/?>)",
+ "name": "meta.tag.coffee",
+ "patterns": [
+ {
+ "include": "#jsx-attribute"
+ }
+ ]
+ }
+ ]
+ },
+ "jsx-end-tag": {
+ "patterns": [
+ {
+ "begin": "(</)([-\\w\\.]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.coffee"
+ },
+ "2": {
+ "name": "entity.name.tag.coffee"
+ }
+ },
+ "end": "(/?>)",
+ "name": "meta.tag.coffee"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/cpp-macro.tmLanguage.json b/node_modules/shiki/languages/cpp-macro.tmLanguage.json
new file mode 100644
index 0000000..73defb9
--- /dev/null
+++ b/node_modules/shiki/languages/cpp-macro.tmLanguage.json
@@ -0,0 +1,9366 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/jeff-hykin/better-cpp-syntax/blob/master/autogenerated/cpp.embedded.macro.tmLanguage.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/jeff-hykin/better-cpp-syntax/commit/f1d127a8af2b184db570345f0bb179503c47fdf6",
+ "name": "cpp-macro",
+ "scopeName": "source.cpp.embedded.macro",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#constructor_root"
+ },
+ {
+ "include": "#destructor_root"
+ },
+ {
+ "include": "#function_definition"
+ },
+ {
+ "include": "#operator_overload"
+ },
+ {
+ "include": "#using_namespace"
+ },
+ {
+ "include": "source.cpp#type_alias"
+ },
+ {
+ "include": "source.cpp#using_name"
+ },
+ {
+ "include": "source.cpp#namespace_alias"
+ },
+ {
+ "include": "#namespace_block"
+ },
+ {
+ "include": "#extern_block"
+ },
+ {
+ "include": "#typedef_class"
+ },
+ {
+ "include": "#typedef_struct"
+ },
+ {
+ "include": "#typedef_union"
+ },
+ {
+ "include": "source.cpp#misc_keywords"
+ },
+ {
+ "include": "source.cpp#standard_declares"
+ },
+ {
+ "include": "#class_block"
+ },
+ {
+ "include": "#struct_block"
+ },
+ {
+ "include": "#union_block"
+ },
+ {
+ "include": "#enum_block"
+ },
+ {
+ "include": "source.cpp#template_isolated_definition"
+ },
+ {
+ "include": "#template_definition"
+ },
+ {
+ "include": "source.cpp#template_explicit_instantiation"
+ },
+ {
+ "include": "source.cpp#access_control_keywords"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#assembly"
+ },
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ],
+ "repository": {
+ "alignas_attribute": {
+ "begin": "alignas\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.attribute.begin.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.attribute.end.cpp"
+ }
+ },
+ "name": "support.other.attribute.cpp",
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ {
+ "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))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.using.directive.cpp"
+ },
+ "2": {
+ "name": "entity.name.namespace.cpp"
+ }
+ }
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.attribute.cpp"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.accessor.attribute.cpp"
+ },
+ {
+ "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)(?=::)",
+ "name": "entity.name.namespace.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.other.attribute.$0.cpp"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ "alignas_operator": {
+ "begin": "((?<!\\w)alignas(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.alignas.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.alignas.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.alignas",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "alignof_operator": {
+ "begin": "((?<!\\w)alignof(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.alignof.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.alignof.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.alignof",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "assembly": {
+ "begin": "(\\b(?:__asm__|asm)\\b)(?:\\s+)?((?:volatile)?)",
+ "end": "(?!\\G)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.asm.cpp"
+ },
+ "2": {
+ "name": "storage.modifier.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.asm.cpp",
+ "patterns": [
+ {
+ "match": "^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:\\n|$)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.assembly.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.assembly.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(R?)(\")",
+ "end": "\"|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.encoding.cpp"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.assembly.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.assembly.cpp"
+ }
+ },
+ "name": "string.quoted.double.cpp",
+ "contentName": "meta.embedded.assembly",
+ "patterns": [
+ {
+ "include": "source.asm"
+ },
+ {
+ "include": "source.x86"
+ },
+ {
+ "include": "source.x86_64"
+ },
+ {
+ "include": "source.arm"
+ },
+ {
+ "include": "source.cpp#backslash_escapes"
+ },
+ {
+ "include": "#string_escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.assembly.inner.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.assembly.inner.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": "\\[((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))\\]",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "variable.other.asm.label.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "match": ":",
+ "name": "punctuation.separator.delimiter.colon.assembly.cpp"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ }
+ ]
+ },
+ "attributes_context": {
+ "patterns": [
+ {
+ "include": "#cpp_attributes"
+ },
+ {
+ "include": "#gcc_attributes"
+ },
+ {
+ "include": "#ms_attributes"
+ },
+ {
+ "include": "#alignas_attribute"
+ }
+ ]
+ },
+ "block": {
+ "begin": "{",
+ "end": "}|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.cpp"
+ }
+ },
+ "name": "meta.block.cpp",
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ "block_comment": {
+ "begin": "\\s*+(\\/\\*)",
+ "end": "\\*\\/|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.begin.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "comment.block.cpp"
+ },
+ "builtin_storage_type_initilizer": {
+ "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)(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.primitive.cpp storage.type.built-in.primitive.cpp"
+ },
+ "2": {
+ "name": "storage.type.cpp storage.type.built-in.cpp"
+ },
+ "3": {
+ "name": "support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp"
+ },
+ "4": {
+ "name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
+ },
+ "5": {
+ "name": "punctuation.section.arguments.begin.bracket.round.initializer.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.initializer.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "case_statement": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)case(?!\\w))",
+ "end": ":|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "keyword.control.case.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.separator.colon.case.cpp"
+ }
+ },
+ "name": "meta.conditional.case.cpp",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "class_block": {
+ "begin": "((?<!\\w)class(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.class.cpp"
+ },
+ "1": {
+ "name": "storage.type.$1.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.class.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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}))*",
+ "name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "20": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.block.class.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.class.cpp"
+ }
+ },
+ "name": "meta.head.class.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.class.cpp"
+ }
+ },
+ "name": "meta.body.class.cpp",
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.class.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "^(?:\\s+)?+(\\/\\/[!\\/]+)",
+ "end": "(?<=\\n)(?<!\\\\\\n)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.documentation.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "comment.line.double-slash.documentation.cpp",
+ "patterns": [
+ {
+ "include": "source.cpp#line_continuation_character"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.italic.doxygen.cpp"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.bold.doxygen.cpp"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.inline.raw.string.cpp"
+ }
+ }
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:\\s+)?(?:in|out)(?:\\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+)?((?<!\\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)))*)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "in|out",
+ "name": "keyword.other.parameter.direction.$0.cpp"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "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)",
+ "name": "variable.parameter.cpp"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.cpp"
+ }
+ ]
+ },
+ "4": {
+ "name": "variable.parameter.cpp"
+ },
+ "5": {
+ "name": "punctuation.cpp"
+ },
+ "6": {
+ "name": "variable.parameter.cpp"
+ }
+ }
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "(?:\\b[A-Z]+:|@[a-z_]+:)",
+ "name": "storage.type.class.gtkdoc.cpp"
+ }
+ ]
+ },
+ {
+ "match": "(\\/\\*[!*]+(?=\\s))(.+)([!*]*\\*\\/)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.begin.documentation.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.italic.doxygen.cpp"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.bold.doxygen.cpp"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.inline.raw.string.cpp"
+ }
+ }
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:\\s+)?(?:in|out)(?:\\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+)?((?<!\\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)))*)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "in|out",
+ "name": "keyword.other.parameter.direction.$0.cpp"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "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)",
+ "name": "variable.parameter.cpp"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.cpp"
+ }
+ ]
+ },
+ "4": {
+ "name": "variable.parameter.cpp"
+ },
+ "5": {
+ "name": "punctuation.cpp"
+ },
+ "6": {
+ "name": "variable.parameter.cpp"
+ }
+ }
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "(?:\\b[A-Z]+:|@[a-z_]+:)",
+ "name": "storage.type.class.gtkdoc.cpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.comment.end.documentation.cpp"
+ }
+ },
+ "name": "comment.block.documentation.cpp"
+ },
+ {
+ "begin": "(?:\\s+)?+\\/\\*[!*]+(?:(?:\\n|$)|(?=\\s))",
+ "end": "[!*]*\\*\\/|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.documentation.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.documentation.cpp"
+ }
+ },
+ "name": "comment.block.documentation.cpp",
+ "patterns": [
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.italic.doxygen.cpp"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.bold.doxygen.cpp"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.inline.raw.string.cpp"
+ }
+ }
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:\\s+)?(?:in|out)(?:\\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+)?((?<!\\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)))*)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "in|out",
+ "name": "keyword.other.parameter.direction.$0.cpp"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "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)",
+ "name": "variable.parameter.cpp"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.cpp"
+ }
+ ]
+ },
+ "4": {
+ "name": "variable.parameter.cpp"
+ },
+ "5": {
+ "name": "punctuation.cpp"
+ },
+ "6": {
+ "name": "variable.parameter.cpp"
+ }
+ }
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "(?:\\b[A-Z]+:|@[a-z_]+:)",
+ "name": "storage.type.class.gtkdoc.cpp"
+ }
+ ]
+ },
+ {
+ "include": "source.cpp#emacs_file_banner"
+ },
+ {
+ "include": "#block_comment"
+ },
+ {
+ "include": "#line_comment"
+ },
+ {
+ "include": "source.cpp#invalid_comment_end"
+ }
+ ]
+ },
+ "constructor_inline": {
+ "begin": "^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*)((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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)(?=\\())",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.function.definition.special.constructor.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "source.cpp#functional_specifiers_pre_parameters"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "10": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "12": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "15": {
+ "name": "entity.name.function.constructor.cpp entity.name.function.definition.special.constructor.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.function.definition.special.constructor.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp"
+ }
+ },
+ "name": "meta.head.function.definition.special.constructor.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "match": "(\\=)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "keyword.other.default.function.cpp keyword.other.default.constructor.cpp"
+ },
+ "7": {
+ "name": "keyword.other.delete.function.cpp keyword.other.delete.constructor.cpp"
+ }
+ }
+ },
+ {
+ "include": "source.cpp#functional_specifiers_pre_parameters"
+ },
+ {
+ "begin": ":",
+ "end": "(?=\\{)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.initializers.cpp"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "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*+)?(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.call.initializer.cpp"
+ },
+ "2": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "3": {},
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "7": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "contentName": "meta.parameter.initialization",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "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))(\\{)",
+ "end": "\\}|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.call.initializer.cpp"
+ },
+ "2": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "contentName": "meta.parameter.initialization",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.begin.bracket.round.special.constructor.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.special.constructor.cpp"
+ }
+ },
+ "contentName": "meta.function.definition.parameters.special.constructor",
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "include": "source.cpp#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp"
+ }
+ },
+ "name": "meta.body.function.definition.special.constructor.cpp",
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.function.definition.special.constructor.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "constructor_root": {
+ "begin": "\\s*+((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+)?::)*+)(((?>(?<!\\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*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))::((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:\\10)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\())",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.function.definition.special.constructor.cpp"
+ },
+ "1": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.constructor.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "8": {},
+ "9": {
+ "patterns": [
+ {
+ "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}))*(?=:)",
+ "name": "entity.name.type.constructor.cpp"
+ },
+ {
+ "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}))*",
+ "name": "entity.name.function.definition.special.constructor.cpp"
+ },
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp"
+ }
+ ]
+ },
+ "10": {},
+ "11": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "12": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "21": {
+ "name": "comment.block.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.function.definition.special.constructor.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp"
+ }
+ },
+ "name": "meta.head.function.definition.special.constructor.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "match": "(\\=)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "keyword.other.default.function.cpp keyword.other.default.constructor.cpp"
+ },
+ "7": {
+ "name": "keyword.other.delete.function.cpp keyword.other.delete.constructor.cpp"
+ }
+ }
+ },
+ {
+ "include": "source.cpp#functional_specifiers_pre_parameters"
+ },
+ {
+ "begin": ":",
+ "end": "(?=\\{)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.initializers.cpp"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "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*+)?(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.call.initializer.cpp"
+ },
+ "2": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "3": {},
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "7": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "contentName": "meta.parameter.initialization",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "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))(\\{)",
+ "end": "\\}|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.call.initializer.cpp"
+ },
+ "2": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "contentName": "meta.parameter.initialization",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.begin.bracket.round.special.constructor.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.special.constructor.cpp"
+ }
+ },
+ "contentName": "meta.function.definition.parameters.special.constructor",
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "include": "source.cpp#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp"
+ }
+ },
+ "name": "meta.body.function.definition.special.constructor.cpp",
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.function.definition.special.constructor.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "cpp_attributes": {
+ "begin": "\\[\\[",
+ "end": "\\]\\]|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.attribute.begin.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.attribute.end.cpp"
+ }
+ },
+ "name": "support.other.attribute.cpp",
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ {
+ "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))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.using.directive.cpp"
+ },
+ "2": {
+ "name": "entity.name.namespace.cpp"
+ }
+ }
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.attribute.cpp"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.accessor.attribute.cpp"
+ },
+ {
+ "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)(?=::)",
+ "name": "entity.name.namespace.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.other.attribute.$0.cpp"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ "curly_initializer": {
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\{)",
+ "end": "\\}|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "source.cpp#comma"
+ },
+ {
+ "include": "source.cpp#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "13": {},
+ "14": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "16": {
+ "name": "comment.block.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "18": {},
+ "19": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "21": {
+ "name": "comment.block.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "23": {
+ "name": "punctuation.section.arguments.begin.bracket.curly.initializer.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.curly.initializer.cpp"
+ }
+ },
+ "name": "meta.initialization.cpp",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ },
+ {
+ "include": "source.cpp#comma"
+ }
+ ]
+ },
+ "decltype": {
+ "begin": "((?<!\\w)decltype(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.decltype.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.decltype.cpp"
+ }
+ },
+ "contentName": "meta.arguments.decltype",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "decltype_specifier": {
+ "begin": "((?<!\\w)decltype(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.decltype.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.decltype.cpp"
+ }
+ },
+ "contentName": "meta.arguments.decltype",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "default_statement": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)default(?!\\w))",
+ "end": ":|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "keyword.control.default.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.separator.colon.case.default.cpp"
+ }
+ },
+ "name": "meta.conditional.case.cpp",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "destructor_inline": {
+ "begin": "^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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)(?=\\())",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.function.definition.special.member.destructor.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "source.cpp#functional_specifiers_pre_parameters"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "12": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "15": {
+ "name": "entity.name.function.destructor.cpp entity.name.function.definition.special.member.destructor.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.function.definition.special.member.destructor.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp"
+ }
+ },
+ "name": "meta.head.function.definition.special.member.destructor.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "match": "(\\=)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "keyword.other.default.function.cpp keyword.other.default.constructor.cpp keyword.other.default.destructor.cpp"
+ },
+ "7": {
+ "name": "keyword.other.delete.function.cpp keyword.other.delete.constructor.cpp keyword.other.delete.destructor.cpp"
+ }
+ }
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp"
+ }
+ },
+ "contentName": "meta.function.definition.parameters.special.member.destructor",
+ "patterns": []
+ },
+ {
+ "include": "source.cpp#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp"
+ }
+ },
+ "name": "meta.body.function.definition.special.member.destructor.cpp",
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.function.definition.special.member.destructor.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "destructor_root": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))::((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))~(?:\\14)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\())",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.function.definition.special.member.destructor.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.destructor.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "12": {},
+ "13": {
+ "patterns": [
+ {
+ "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}))*(?=:)",
+ "name": "entity.name.type.destructor.cpp"
+ },
+ {
+ "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}))*",
+ "name": "entity.name.function.definition.special.member.destructor.cpp"
+ },
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp"
+ }
+ ]
+ },
+ "14": {},
+ "15": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "21": {
+ "name": "comment.block.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "23": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "24": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "25": {
+ "name": "comment.block.cpp"
+ },
+ "26": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.function.definition.special.member.destructor.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp"
+ }
+ },
+ "name": "meta.head.function.definition.special.member.destructor.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "match": "(\\=)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "keyword.other.default.function.cpp keyword.other.default.constructor.cpp keyword.other.default.destructor.cpp"
+ },
+ "7": {
+ "name": "keyword.other.delete.function.cpp keyword.other.delete.constructor.cpp keyword.other.delete.destructor.cpp"
+ }
+ }
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp"
+ }
+ },
+ "contentName": "meta.function.definition.parameters.special.member.destructor",
+ "patterns": []
+ },
+ {
+ "include": "source.cpp#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp"
+ }
+ },
+ "name": "meta.body.function.definition.special.member.destructor.cpp",
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.function.definition.special.member.destructor.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "diagnostic": {
+ "begin": "(^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(#)(?:\\s+)?((?:error|warning)))\\b(?:\\s+)?",
+ "end": "(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.diagnostic.$7.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.definition.directive.cpp"
+ },
+ "7": {}
+ },
+ "endCaptures": {},
+ "name": "meta.preprocessor.diagnostic.$reference(directive).cpp",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "\"",
+ "end": "(?:(\")|(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$)))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.cpp"
+ }
+ },
+ "name": "string.quoted.double.cpp",
+ "patterns": [
+ {
+ "include": "source.cpp#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "end": "(?:(')|(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$)))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.cpp"
+ }
+ },
+ "name": "string.quoted.single.cpp",
+ "patterns": [
+ {
+ "include": "source.cpp#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "[^'\"]",
+ "end": "(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "string.unquoted.cpp",
+ "patterns": [
+ {
+ "include": "source.cpp#line_continuation_character"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ }
+ ]
+ },
+ "enum_block": {
+ "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|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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)))?",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.enum.cpp"
+ },
+ "1": {
+ "name": "storage.type.enum.cpp"
+ },
+ "2": {
+ "name": "storage.type.enum.enum-key.$2.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.enum.cpp"
+ },
+ "5": {
+ "name": "punctuation.separator.colon.type-specifier.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "source.cpp#scope_resolution_inner_generated"
+ }
+ ]
+ },
+ "7": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {},
+ "10": {
+ "name": "entity.name.scope-resolution.cpp"
+ },
+ "11": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "12": {},
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "16": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ "17": {
+ "name": "storage.type.integral.$17.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.block.enum.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.enum.cpp"
+ }
+ },
+ "name": "meta.head.enum.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.enum.cpp"
+ }
+ },
+ "name": "meta.body.enum.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "source.cpp#enumerator_list"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "source.cpp#comma"
+ },
+ {
+ "include": "source.cpp#semicolon"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.enum.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "evaluation_context": {
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "source.cpp#member_access"
+ },
+ {
+ "include": "source.cpp#predefined_macros"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "source.cpp#memory_operators"
+ },
+ {
+ "include": "source.cpp#wordlike_operators"
+ },
+ {
+ "include": "source.cpp#type_casting_operators"
+ },
+ {
+ "include": "source.cpp#control_flow_keywords"
+ },
+ {
+ "include": "source.cpp#exception_keywords"
+ },
+ {
+ "include": "source.cpp#the_this_keyword"
+ },
+ {
+ "include": "source.cpp#language_constants"
+ },
+ {
+ "include": "#builtin_storage_type_initilizer"
+ },
+ {
+ "include": "source.cpp#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "include": "source.cpp#functional_specifiers_pre_parameters"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#lambdas"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#parentheses"
+ },
+ {
+ "include": "#function_call"
+ },
+ {
+ "include": "source.cpp#scope_resolution_inner_generated"
+ },
+ {
+ "include": "#square_brackets"
+ },
+ {
+ "include": "source.cpp#semicolon"
+ },
+ {
+ "include": "source.cpp#comma"
+ }
+ ]
+ },
+ "ever_present_context": {
+ "patterns": [
+ {
+ "include": "source.cpp#pragma_mark"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "source.cpp#include"
+ },
+ {
+ "include": "#line"
+ },
+ {
+ "include": "#diagnostic"
+ },
+ {
+ "include": "source.cpp#undef"
+ },
+ {
+ "include": "#preprocessor_conditional_range"
+ },
+ {
+ "include": "source.cpp#single_line_macro"
+ },
+ {
+ "include": "#macro"
+ },
+ {
+ "include": "source.cpp#preprocessor_conditional_standalone"
+ },
+ {
+ "include": "source.cpp#macro_argument"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "source.cpp#line_continuation_character"
+ }
+ ]
+ },
+ "extern_block": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(extern)(?=\\s*\\\")",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.extern.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "storage.type.extern.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.block.extern.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.extern.cpp"
+ }
+ },
+ "name": "meta.head.extern.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.extern.cpp"
+ }
+ },
+ "name": "meta.body.extern.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.extern.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "function_body_context": {
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#using_namespace"
+ },
+ {
+ "include": "source.cpp#type_alias"
+ },
+ {
+ "include": "source.cpp#using_name"
+ },
+ {
+ "include": "source.cpp#namespace_alias"
+ },
+ {
+ "include": "#typedef_class"
+ },
+ {
+ "include": "#typedef_struct"
+ },
+ {
+ "include": "#typedef_union"
+ },
+ {
+ "include": "source.cpp#misc_keywords"
+ },
+ {
+ "include": "source.cpp#standard_declares"
+ },
+ {
+ "include": "#class_block"
+ },
+ {
+ "include": "#struct_block"
+ },
+ {
+ "include": "#union_block"
+ },
+ {
+ "include": "#enum_block"
+ },
+ {
+ "include": "source.cpp#access_control_keywords"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#assembly"
+ },
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#switch_statement"
+ },
+ {
+ "include": "source.cpp#goto_statement"
+ },
+ {
+ "include": "#evaluation_context"
+ },
+ {
+ "include": "source.cpp#label"
+ }
+ ]
+ },
+ "function_call": {
+ "begin": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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|\\Watomic_cancel|^atomic_cancel|\\Watomic_commit|^atomic_commit|\\Wuint_least8_t|^uint_least8_t|\\Wuint_fast16_t|^uint_fast16_t|\\Wuint_fast32_t|^uint_fast32_t|\\Wint_least16_t|^int_least16_t|\\Wint_least32_t|^int_least32_t|\\Wint_least64_t|^int_least64_t|\\Wuint_fast64_t|^uint_fast64_t|\\Wthread_local|^thread_local|\\Wint_fast16_t|^int_fast16_t|\\Wint_fast32_t|^int_fast32_t|\\Wint_fast64_t|^int_fast64_t|\\Wsynchronized|^synchronized|\\Wuint_fast8_t|^uint_fast8_t|\\Wdynamic_cast|^dynamic_cast|\\Wint_least8_t|^int_least8_t|\\Wint_fast8_t|^int_fast8_t|\\Wstatic_cast|^static_cast|\\Wsuseconds_t|^suseconds_t|\\Wconst_cast|^const_cast|\\Wuseconds_t|^useconds_t|\\Wconstinit|^constinit|\\Wco_return|^co_return|\\Wuintmax_t|^uintmax_t|\\Wuintmax_t|^uintmax_t|\\Wuintmax_t|^uintmax_t|\\Wconstexpr|^constexpr|\\Wconsteval|^consteval|\\Wconstexpr|^constexpr|\\Wconstexpr|^constexpr|\\Wconsteval|^consteval|\\Wprotected|^protected|\\Wnamespace|^namespace|\\Wblksize_t|^blksize_t|\\Wco_return|^co_return|\\Win_addr_t|^in_addr_t|\\Win_port_t|^in_port_t|\\Wuintptr_t|^uintptr_t|\\Wtemplate|^template|\\Wnoexcept|^noexcept|\\Wnoexcept|^noexcept|\\Wcontinue|^continue|\\Wco_await|^co_await|\\Wco_yield|^co_yield|\\Wunsigned|^unsigned|\\Wu_quad_t|^u_quad_t|\\Wblkcnt_t|^blkcnt_t|\\Wuint16_t|^uint16_t|\\Wuint32_t|^uint32_t|\\Wuint64_t|^uint64_t|\\Wintptr_t|^intptr_t|\\Wintmax_t|^intmax_t|\\Wintmax_t|^intmax_t|\\Wvolatile|^volatile|\\Wregister|^register|\\Wrestrict|^restrict|\\Wexplicit|^explicit|\\Wvolatile|^volatile|\\Wnoexcept|^noexcept|\\Woperator|^operator|\\Wdecltype|^decltype|\\Wtypename|^typename|\\Wrequires|^requires|\\Wco_await|^co_await|\\Wco_yield|^co_yield|\\Wreflexpr|^reflexpr|\\Wswblk_t|^swblk_t|\\Wvirtual|^virtual|\\Wssize_t|^ssize_t|\\Wconcept|^concept|\\Wmutable|^mutable|\\Wfixpt_t|^fixpt_t|\\Wint16_t|^int16_t|\\Wint32_t|^int32_t|\\Wint64_t|^int64_t|\\Wuint8_t|^uint8_t|\\Wtypedef|^typedef|\\Wdaddr_t|^daddr_t|\\Wcaddr_t|^caddr_t|\\Wqaddr_t|^qaddr_t|\\Wdefault|^default|\\Wnlink_t|^nlink_t|\\Wsegsz_t|^segsz_t|\\Wu_short|^u_short|\\Wwchar_t|^wchar_t|\\Wprivate|^private|\\W__asm__|^__asm__|\\Walignas|^alignas|\\Walignof|^alignof|\\Wmutable|^mutable|\\Wnullptr|^nullptr|\\Wclock_t|^clock_t|\\Wmode_t|^mode_t|\\Wpublic|^public|\\Wsize_t|^size_t|\\Wdouble|^double|\\Wquad_t|^quad_t|\\Wstatic|^static|\\Wtime_t|^time_t|\\Wmodule|^module|\\Wimport|^import|\\Wexport|^export|\\Wextern|^extern|\\Winline|^inline|\\Wxor_eq|^xor_eq|\\Wand_eq|^and_eq|\\Wreturn|^return|\\Wfriend|^friend|\\Wnot_eq|^not_eq|\\Wsigned|^signed|\\Wstruct|^struct|\\Wint8_t|^int8_t|\\Wushort|^ushort|\\Wswitch|^switch|\\Wu_long|^u_long|\\Wtypeid|^typeid|\\Wu_char|^u_char|\\Wsizeof|^sizeof|\\Wbitand|^bitand|\\Wdelete|^delete|\\Wino_t|^ino_t|\\Wkey_t|^key_t|\\Wpid_t|^pid_t|\\Woff_t|^off_t|\\Wuid_t|^uid_t|\\Wshort|^short|\\Wbreak|^break|\\Wcatch|^catch|\\Wcompl|^compl|\\Wwhile|^while|\\Wfalse|^false|\\Wclass|^class|\\Wunion|^union|\\Wconst|^const|\\Wor_eq|^or_eq|\\Wconst|^const|\\Wthrow|^throw|\\Wbitor|^bitor|\\Wu_int|^u_int|\\Wusing|^using|\\Wdiv_t|^div_t|\\Wdev_t|^dev_t|\\Wgid_t|^gid_t|\\Wfloat|^float|\\Wlong|^long|\\Wgoto|^goto|\\Wuint|^uint|\\Wid_t|^id_t|\\Wcase|^case|\\Wauto|^auto|\\Wvoid|^void|\\Wenum|^enum|\\Wtrue|^true|\\Wchar|^char|\\Wid_t|^id_t|\\WNULL|^NULL|\\Wthis|^this|\\Wbool|^bool|\\Welse|^else|\\Wfor|^for|\\Wnew|^new|\\Wnot|^not|\\Wxor|^xor|\\Wand|^and|\\Wasm|^asm|\\Wint|^int|\\Wtry|^try|\\Wdo|^do|\\Wif|^if|\\Wor|^or)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(((?<!<)<(?!<)(?:(?:(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/)))|(?:\"(?:[^\"]*|\\\\\")\")|(?:'(?:[^']*|\\\\')')|\\g<11>|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#scope_resolution_function_call_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {},
+ "5": {
+ "name": "entity.name.function.call.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "10": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "11": {},
+ "12": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "15": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.call.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "function_definition": {
+ "begin": "(?:(?:^|\\G|(?<=;|\\}))|(?<=>|\\*\\/))\\s*+(?:((?<!\\w)template(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?<!\\w)(?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))|(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*)(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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<52>|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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<52>|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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<52>|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\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|\\Watomic_cancel|^atomic_cancel|\\Watomic_commit|^atomic_commit|\\Wuint_least8_t|^uint_least8_t|\\Wuint_fast16_t|^uint_fast16_t|\\Wuint_fast32_t|^uint_fast32_t|\\Wint_least16_t|^int_least16_t|\\Wint_least32_t|^int_least32_t|\\Wint_least64_t|^int_least64_t|\\Wuint_fast64_t|^uint_fast64_t|\\Wthread_local|^thread_local|\\Wint_fast16_t|^int_fast16_t|\\Wint_fast32_t|^int_fast32_t|\\Wint_fast64_t|^int_fast64_t|\\Wsynchronized|^synchronized|\\Wuint_fast8_t|^uint_fast8_t|\\Wdynamic_cast|^dynamic_cast|\\Wint_least8_t|^int_least8_t|\\Wint_fast8_t|^int_fast8_t|\\Wstatic_cast|^static_cast|\\Wsuseconds_t|^suseconds_t|\\Wconst_cast|^const_cast|\\Wuseconds_t|^useconds_t|\\Wconstinit|^constinit|\\Wco_return|^co_return|\\Wuintmax_t|^uintmax_t|\\Wuintmax_t|^uintmax_t|\\Wuintmax_t|^uintmax_t|\\Wconstexpr|^constexpr|\\Wconsteval|^consteval|\\Wconstexpr|^constexpr|\\Wconstexpr|^constexpr|\\Wconsteval|^consteval|\\Wprotected|^protected|\\Wnamespace|^namespace|\\Wblksize_t|^blksize_t|\\Wco_return|^co_return|\\Win_addr_t|^in_addr_t|\\Win_port_t|^in_port_t|\\Wuintptr_t|^uintptr_t|\\Wtemplate|^template|\\Wnoexcept|^noexcept|\\Wnoexcept|^noexcept|\\Wcontinue|^continue|\\Wco_await|^co_await|\\Wco_yield|^co_yield|\\Wunsigned|^unsigned|\\Wu_quad_t|^u_quad_t|\\Wblkcnt_t|^blkcnt_t|\\Wuint16_t|^uint16_t|\\Wuint32_t|^uint32_t|\\Wuint64_t|^uint64_t|\\Wintptr_t|^intptr_t|\\Wintmax_t|^intmax_t|\\Wintmax_t|^intmax_t|\\Wvolatile|^volatile|\\Wregister|^register|\\Wrestrict|^restrict|\\Wexplicit|^explicit|\\Wvolatile|^volatile|\\Wnoexcept|^noexcept|\\Woperator|^operator|\\Wdecltype|^decltype|\\Wtypename|^typename|\\Wrequires|^requires|\\Wco_await|^co_await|\\Wco_yield|^co_yield|\\Wreflexpr|^reflexpr|\\Wswblk_t|^swblk_t|\\Wvirtual|^virtual|\\Wssize_t|^ssize_t|\\Wconcept|^concept|\\Wmutable|^mutable|\\Wfixpt_t|^fixpt_t|\\Wint16_t|^int16_t|\\Wint32_t|^int32_t|\\Wint64_t|^int64_t|\\Wuint8_t|^uint8_t|\\Wtypedef|^typedef|\\Wdaddr_t|^daddr_t|\\Wcaddr_t|^caddr_t|\\Wqaddr_t|^qaddr_t|\\Wdefault|^default|\\Wnlink_t|^nlink_t|\\Wsegsz_t|^segsz_t|\\Wu_short|^u_short|\\Wwchar_t|^wchar_t|\\Wprivate|^private|\\W__asm__|^__asm__|\\Walignas|^alignas|\\Walignof|^alignof|\\Wmutable|^mutable|\\Wnullptr|^nullptr|\\Wclock_t|^clock_t|\\Wmode_t|^mode_t|\\Wpublic|^public|\\Wsize_t|^size_t|\\Wdouble|^double|\\Wquad_t|^quad_t|\\Wstatic|^static|\\Wtime_t|^time_t|\\Wmodule|^module|\\Wimport|^import|\\Wexport|^export|\\Wextern|^extern|\\Winline|^inline|\\Wxor_eq|^xor_eq|\\Wand_eq|^and_eq|\\Wreturn|^return|\\Wfriend|^friend|\\Wnot_eq|^not_eq|\\Wsigned|^signed|\\Wstruct|^struct|\\Wint8_t|^int8_t|\\Wushort|^ushort|\\Wswitch|^switch|\\Wu_long|^u_long|\\Wtypeid|^typeid|\\Wu_char|^u_char|\\Wsizeof|^sizeof|\\Wbitand|^bitand|\\Wdelete|^delete|\\Wino_t|^ino_t|\\Wkey_t|^key_t|\\Wpid_t|^pid_t|\\Woff_t|^off_t|\\Wuid_t|^uid_t|\\Wshort|^short|\\Wbreak|^break|\\Wcatch|^catch|\\Wcompl|^compl|\\Wwhile|^while|\\Wfalse|^false|\\Wclass|^class|\\Wunion|^union|\\Wconst|^const|\\Wor_eq|^or_eq|\\Wconst|^const|\\Wthrow|^throw|\\Wbitor|^bitor|\\Wu_int|^u_int|\\Wusing|^using|\\Wdiv_t|^div_t|\\Wdev_t|^dev_t|\\Wgid_t|^gid_t|\\Wfloat|^float|\\Wlong|^long|\\Wgoto|^goto|\\Wuint|^uint|\\Wid_t|^id_t|\\Wcase|^case|\\Wauto|^auto|\\Wvoid|^void|\\Wenum|^enum|\\Wtrue|^true|\\Wchar|^char|\\Wid_t|^id_t|\\WNULL|^NULL|\\Wthis|^this|\\Wbool|^bool|\\Welse|^else|\\Wfor|^for|\\Wnew|^new|\\Wnot|^not|\\Wxor|^xor|\\Wand|^and|\\Wasm|^asm|\\Wint|^int|\\Wtry|^try|\\Wdo|^do|\\Wif|^if|\\Wor|^or)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\()",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.function.definition.cpp"
+ },
+ "1": {
+ "name": "storage.type.template.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "((?<!\\w)(?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))|(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.$1.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "8": {
+ "name": "storage.modifier.$8.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "11": {
+ "name": "comment.block.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "13": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "source.cpp#comma"
+ },
+ {
+ "include": "source.cpp#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ }
+ ]
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "21": {
+ "name": "comment.block.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "23": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "24": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "25": {},
+ "26": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "27": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "28": {
+ "name": "comment.block.cpp"
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "30": {},
+ "31": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "32": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "33": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "34": {
+ "name": "comment.block.cpp"
+ },
+ "35": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "37": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "38": {
+ "name": "comment.block.cpp"
+ },
+ "39": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "40": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "41": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "42": {
+ "name": "comment.block.cpp"
+ },
+ "43": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "44": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "45": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "46": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "47": {
+ "name": "comment.block.cpp"
+ },
+ "48": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "49": {
+ "patterns": [
+ {
+ "include": "source.cpp#scope_resolution_function_definition_inner_generated"
+ }
+ ]
+ },
+ "50": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
+ },
+ "51": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "52": {},
+ "53": {
+ "name": "entity.name.function.definition.cpp"
+ },
+ "54": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "55": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "56": {
+ "name": "comment.block.cpp"
+ },
+ "57": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.function.definition.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.cpp"
+ }
+ },
+ "name": "meta.head.function.definition.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.begin.bracket.round.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.cpp"
+ }
+ },
+ "contentName": "meta.function.definition.parameters",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#parameter_or_maybe_value"
+ },
+ {
+ "include": "source.cpp#comma"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": "(?<=^|\\))(?:\\s+)?(->)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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<:.]))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.function.return-type.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "source.cpp#comma"
+ },
+ {
+ "include": "source.cpp#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp"
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "18": {},
+ "19": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "21": {
+ "name": "comment.block.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "23": {}
+ }
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.cpp"
+ }
+ },
+ "name": "meta.body.function.definition.cpp",
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.function.definition.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "function_parameter_context": {
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#parameter"
+ },
+ {
+ "include": "source.cpp#comma"
+ }
+ ]
+ },
+ "function_pointer": {
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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+)?(\\()",
+ "end": "(\\))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=[{=,);>]|\\n)(?!\\()|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "source.cpp#comma"
+ },
+ {
+ "include": "source.cpp#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "13": {},
+ "14": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "16": {
+ "name": "comment.block.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "18": {},
+ "19": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "21": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp"
+ },
+ "23": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "24": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "25": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "26": {
+ "name": "comment.block.cpp"
+ },
+ "27": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "28": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "30": {
+ "name": "comment.block.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "32": {
+ "name": "punctuation.section.parens.begin.bracket.round.function.pointer.cpp"
+ },
+ "33": {
+ "name": "punctuation.definition.function.pointer.dereference.cpp"
+ },
+ "34": {
+ "name": "variable.other.definition.pointer.function.cpp"
+ },
+ "35": {
+ "name": "punctuation.definition.begin.bracket.square.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "37": {
+ "name": "punctuation.definition.end.bracket.square.cpp"
+ },
+ "38": {
+ "name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
+ },
+ "39": {
+ "name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.end.bracket.round.function.pointer.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ }
+ ]
+ },
+ "function_pointer_parameter": {
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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+)?(\\()",
+ "end": "(\\))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=[{=,);>]|\\n)(?!\\()|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "source.cpp#comma"
+ },
+ {
+ "include": "source.cpp#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "13": {},
+ "14": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "16": {
+ "name": "comment.block.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "18": {},
+ "19": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "21": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp"
+ },
+ "23": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "24": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "25": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "26": {
+ "name": "comment.block.cpp"
+ },
+ "27": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "28": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "30": {
+ "name": "comment.block.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "32": {
+ "name": "punctuation.section.parens.begin.bracket.round.function.pointer.cpp"
+ },
+ "33": {
+ "name": "punctuation.definition.function.pointer.dereference.cpp"
+ },
+ "34": {
+ "name": "variable.parameter.pointer.function.cpp"
+ },
+ "35": {
+ "name": "punctuation.definition.begin.bracket.square.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "37": {
+ "name": "punctuation.definition.end.bracket.square.cpp"
+ },
+ "38": {
+ "name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
+ },
+ "39": {
+ "name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.end.bracket.round.function.pointer.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ }
+ ]
+ },
+ "gcc_attributes": {
+ "begin": "__attribute(?:__)?\\s*\\(\\s*\\(",
+ "end": "\\)\\s*\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.attribute.begin.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.attribute.end.cpp"
+ }
+ },
+ "name": "support.other.attribute.cpp",
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ {
+ "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))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.using.directive.cpp"
+ },
+ "2": {
+ "name": "entity.name.namespace.cpp"
+ }
+ }
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.attribute.cpp"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.accessor.attribute.cpp"
+ },
+ {
+ "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)(?=::)",
+ "name": "entity.name.namespace.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.other.attribute.$0.cpp"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ "inheritance_context": {
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.comma.inheritance.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:protected)|(?:private)|(?:public))(?!\\w)",
+ "name": "storage.type.modifier.access.$0.cpp"
+ },
+ {
+ "match": "(?<!\\w)virtual(?!\\w)",
+ "name": "storage.type.modifier.virtual.cpp"
+ },
+ {
+ "match": "(?<=protected|virtual|private|public|,|:)(?:\\s+)?(?!(?:(?:(?:protected)|(?:private)|(?:public))|virtual))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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<:.]))",
+ "captures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "source.cpp#comma"
+ },
+ {
+ "include": "source.cpp#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {},
+ "10": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {}
+ }
+ }
+ ]
+ },
+ "lambdas": {
+ "begin": "(?:(?<=[^\\s]|^)(?<![\\w\\]\\)\\[\\*&\">])|(?<=\\Wreturn|^return))(?:\\s+)?(\\[(?!\\[| *+\"| *+\\d))((?:[^\\[\\]]|((?<!\\[)\\[(?!\\[)(?:[^\\[\\]]*+\\g<3>?)++\\]))*+)(\\](?!((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))[\\[\\];=]))",
+ "end": "(?<=[;}])|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.capture.begin.lambda.cpp"
+ },
+ "2": {
+ "name": "meta.lambda.capture.cpp",
+ "patterns": [
+ {
+ "include": "source.cpp#the_this_keyword"
+ },
+ {
+ "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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?=\\]|\\z|$)|(,))|(\\=))",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.capture.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ },
+ "7": {
+ "name": "keyword.operator.assignment.cpp"
+ }
+ }
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "3": {},
+ "4": {
+ "name": "punctuation.definition.capture.end.lambda.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.begin.lambda.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.lambda.cpp"
+ }
+ },
+ "name": "meta.function.definition.parameters.lambda.cpp",
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ }
+ ]
+ },
+ {
+ "match": "(?<!\\w)(?:(?:constexpr)|(?:consteval)|(?:mutable))(?!\\w)",
+ "name": "storage.modifier.lambda.$0.cpp"
+ },
+ {
+ "begin": "->",
+ "end": "(?=\\{)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.lambda.return-type.cpp"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "\\S+",
+ "name": "storage.type.return-type.lambda.cpp"
+ }
+ ]
+ },
+ {
+ "begin": "\\{",
+ "end": "\\}|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.lambda.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.lambda.cpp"
+ }
+ },
+ "name": "meta.function.definition.body.lambda.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "line": {
+ "begin": "^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(#)(?:\\s+)?line\\b",
+ "end": "(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.directive.line.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "punctuation.definition.directive.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.preprocessor.line.cpp",
+ "patterns": [
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#preprocessor_number_literal"
+ },
+ {
+ "include": "source.cpp#line_continuation_character"
+ }
+ ]
+ },
+ "line_comment": {
+ "begin": "\\s*+(\\/\\/)",
+ "end": "(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "comment.line.double-slash.cpp",
+ "patterns": [
+ {
+ "include": "source.cpp#line_continuation_character"
+ }
+ ]
+ },
+ "macro": {
+ "begin": "(^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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))",
+ "end": "(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.define.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.definition.directive.cpp"
+ },
+ "7": {
+ "name": "entity.name.function.preprocessor.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.preprocessor.macro.cpp",
+ "patterns": [
+ {
+ "match": "\\G(?:\\s+)?(\\()([^\\(]*)(\\))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.parameters.begin.preprocessor.cpp"
+ },
+ "2": {
+ "name": "meta.function.preprocessor.parameters.cpp",
+ "patterns": [
+ {
+ "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+)?",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.preprocessor.cpp"
+ }
+ }
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.parameters.cpp"
+ },
+ {
+ "match": "\\.\\.\\.",
+ "name": "punctuation.vararg-ellipses.variable.parameter.preprocessor.cpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.end.preprocessor.cpp"
+ }
+ }
+ },
+ {
+ "include": "#macro_context"
+ },
+ {
+ "include": "source.cpp#macro_argument"
+ }
+ ]
+ },
+ "macro_context": {
+ "patterns": [
+ {
+ "include": "source.cpp.embedded.macro"
+ }
+ ]
+ },
+ "method_access": {
+ "begin": "(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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+)?(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "variable.language.this.cpp"
+ },
+ "6": {
+ "name": "variable.other.object.access.cpp"
+ },
+ "7": {
+ "name": "punctuation.separator.dot-access.cpp"
+ },
+ "8": {
+ "name": "punctuation.separator.pointer-access.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "(?<=(?:\\.\\*|\\.|->|->\\*))(?:\\s+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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+)?))(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "variable.language.this.cpp"
+ },
+ "6": {
+ "name": "variable.other.object.property.cpp"
+ },
+ "7": {
+ "name": "punctuation.separator.dot-access.cpp"
+ },
+ "8": {
+ "name": "punctuation.separator.pointer-access.cpp"
+ }
+ }
+ },
+ {
+ "match": "(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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+)?))(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "variable.language.this.cpp"
+ },
+ "6": {
+ "name": "variable.other.object.access.cpp"
+ },
+ "7": {
+ "name": "punctuation.separator.dot-access.cpp"
+ },
+ "8": {
+ "name": "punctuation.separator.pointer-access.cpp"
+ }
+ }
+ },
+ {
+ "include": "source.cpp#member_access"
+ },
+ {
+ "include": "#method_access"
+ }
+ ]
+ },
+ "10": {
+ "name": "entity.name.function.member.cpp"
+ },
+ "11": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.member.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.member.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "ms_attributes": {
+ "begin": "__declspec\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.attribute.begin.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.attribute.end.cpp"
+ }
+ },
+ "name": "support.other.attribute.cpp",
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ {
+ "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))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.using.directive.cpp"
+ },
+ "2": {
+ "name": "entity.name.namespace.cpp"
+ }
+ }
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.attribute.cpp"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.accessor.attribute.cpp"
+ },
+ {
+ "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)(?=::)",
+ "name": "entity.name.namespace.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.other.attribute.$0.cpp"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ "namespace_block": {
+ "begin": "((?<!\\w)namespace(?!\\w))",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.namespace.cpp"
+ },
+ "1": {
+ "name": "keyword.other.namespace.definition.cpp storage.type.namespace.definition.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.block.namespace.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.namespace.cpp"
+ }
+ },
+ "name": "meta.head.namespace.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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))?",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#scope_resolution_namespace_block_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {},
+ "5": {
+ "name": "entity.name.namespace.cpp"
+ },
+ "6": {
+ "name": "punctuation.separator.scope-resolution.namespace.block.cpp"
+ },
+ "7": {
+ "name": "storage.modifier.inline.cpp"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.namespace.cpp"
+ }
+ },
+ "name": "meta.body.namespace.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.namespace.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "noexcept_operator": {
+ "begin": "((?<!\\w)noexcept(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.noexcept",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "operator_overload": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:\\[\\])?)))|(\"\")((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\<|\\()",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.function.definition.special.operator-overload.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "source.cpp#comma"
+ },
+ {
+ "include": "source.cpp#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "12": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "17": {},
+ "18": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "20": {
+ "name": "comment.block.cpp"
+ },
+ "21": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "22": {},
+ "23": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "24": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "25": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "26": {
+ "name": "comment.block.cpp"
+ },
+ "27": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "28": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "30": {
+ "name": "comment.block.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "32": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "33": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "34": {
+ "name": "comment.block.cpp"
+ },
+ "35": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "36": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "37": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "38": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "39": {
+ "name": "comment.block.cpp"
+ },
+ "40": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "41": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "42": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "43": {
+ "name": "comment.block.cpp"
+ },
+ "44": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "45": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.operator.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "46": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "47": {},
+ "48": {
+ "name": "keyword.other.operator.overload.cpp"
+ },
+ "49": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "50": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "51": {
+ "name": "comment.block.cpp"
+ },
+ "52": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "53": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator-overload.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.operator-overload.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "54": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "55": {},
+ "56": {
+ "name": "entity.name.operator.cpp"
+ },
+ "57": {
+ "name": "entity.name.operator.type.cpp"
+ },
+ "58": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "entity.name.operator.type.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "entity.name.operator.type.reference.cpp"
+ }
+ ]
+ },
+ "59": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "60": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "61": {
+ "name": "comment.block.cpp"
+ },
+ "62": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "63": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "64": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "65": {
+ "name": "comment.block.cpp"
+ },
+ "66": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "67": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "68": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "69": {
+ "name": "comment.block.cpp"
+ },
+ "70": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "71": {
+ "name": "entity.name.operator.type.array.cpp"
+ },
+ "72": {
+ "name": "entity.name.operator.custom-literal.cpp"
+ },
+ "73": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "74": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "75": {
+ "name": "comment.block.cpp"
+ },
+ "76": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "77": {
+ "name": "entity.name.operator.custom-literal.cpp"
+ },
+ "78": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "79": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "80": {
+ "name": "comment.block.cpp"
+ },
+ "81": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.function.definition.special.operator-overload.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.special.operator-overload.cpp"
+ }
+ },
+ "name": "meta.head.function.definition.special.operator-overload.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#template_call_range"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.begin.bracket.round.special.operator-overload.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.special.operator-overload.cpp"
+ }
+ },
+ "contentName": "meta.function.definition.parameters.special.operator-overload",
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "include": "source.cpp#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "match": "(\\=)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "keyword.other.default.function.cpp"
+ },
+ "7": {
+ "name": "keyword.other.delete.function.cpp"
+ }
+ }
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.operator-overload.cpp"
+ }
+ },
+ "name": "meta.body.function.definition.special.operator-overload.cpp",
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.function.definition.special.operator-overload.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "begin": "((?<!\\w)sizeof(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.sizeof",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "begin": "((?<!\\w)alignof(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.alignof.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.alignof.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.alignof",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "begin": "((?<!\\w)alignas(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.alignas.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.alignas.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.alignas",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "begin": "((?<!\\w)typeid(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.typeid.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.typeid.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.typeid",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "begin": "((?<!\\w)noexcept(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.noexcept",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "begin": "(\\bsizeof\\.\\.\\.)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.sizeof.variadic",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": "--",
+ "name": "keyword.operator.decrement.cpp"
+ },
+ {
+ "match": "\\+\\+",
+ "name": "keyword.operator.increment.cpp"
+ },
+ {
+ "match": "%=|\\+=|-=|\\*=|(?<!\\()\\/=",
+ "name": "keyword.operator.assignment.compound.cpp"
+ },
+ {
+ "match": "&=|\\^=|<<=|>>=|\\|=",
+ "name": "keyword.operator.assignment.compound.bitwise.cpp"
+ },
+ {
+ "match": "<<|>>",
+ "name": "keyword.operator.bitwise.shift.cpp"
+ },
+ {
+ "match": "!=|<=|>=|==|<|>",
+ "name": "keyword.operator.comparison.cpp"
+ },
+ {
+ "match": "&&|!|\\|\\|",
+ "name": "keyword.operator.logical.cpp"
+ },
+ {
+ "match": "&|\\||\\^|~",
+ "name": "keyword.operator.bitwise.cpp"
+ },
+ {
+ "include": "source.cpp#assignment_operator"
+ },
+ {
+ "match": "%|\\*|\\/|-|\\+",
+ "name": "keyword.operator.arithmetic.cpp"
+ },
+ {
+ "include": "#ternary_operator"
+ }
+ ]
+ },
+ "parameter": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\w)",
+ "end": "(?:(?=\\))|(,))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ }
+ },
+ "name": "meta.parameter.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#function_pointer_parameter"
+ },
+ {
+ "include": "#decltype"
+ },
+ {
+ "include": "source.cpp#vararg_ellipses"
+ },
+ {
+ "match": "((?:((?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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(?<!\\Wthread_local|^thread_local|\\Wvolatile|^volatile|\\Wregister|^register|\\Wrestrict|^restrict|\\Wstatic|^static|\\Wextern|^extern|\\Wconst|^const)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=,|\\)|=)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#storage_types"
+ }
+ ]
+ },
+ "2": {
+ "name": "storage.modifier.specifier.parameter.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "name": "storage.type.primitive.cpp storage.type.built-in.primitive.cpp"
+ },
+ "12": {
+ "name": "storage.type.cpp storage.type.built-in.cpp"
+ },
+ "13": {
+ "name": "support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp"
+ },
+ "14": {
+ "name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
+ },
+ "15": {
+ "name": "entity.name.type.parameter.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "source.cpp#scope_resolution_parameter_inner_generated"
+ },
+ {
+ "match": "(?:(?:struct)|(?:class)|(?:union)|(?:enum))",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "begin": "(?<==)",
+ "end": "(?:(?=\\))|(,))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": "\\=",
+ "name": "keyword.operator.assignment.cpp"
+ },
+ {
+ "match": "(?<!\\s|\\(|,|:)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\)|,|\\[|=|\\n)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "variable.parameter.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.begin.bracket.square.array.type.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.square.array.type.cpp"
+ }
+ },
+ "name": "meta.bracket.square.array.cpp",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "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)",
+ "name": "entity.name.type.parameter.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ },
+ {
+ "match": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*)",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ "parameter_or_maybe_value": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\w)",
+ "end": "(?:(?=\\))|(,))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ }
+ },
+ "name": "meta.parameter.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#function_pointer_parameter"
+ },
+ {
+ "include": "source.cpp#memory_operators"
+ },
+ {
+ "include": "#builtin_storage_type_initilizer"
+ },
+ {
+ "include": "#curly_initializer"
+ },
+ {
+ "include": "#decltype"
+ },
+ {
+ "include": "source.cpp#vararg_ellipses"
+ },
+ {
+ "match": "((?:((?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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(?<!\\Wthread_local|^thread_local|\\Wvolatile|^volatile|\\Wregister|^register|\\Wrestrict|^restrict|\\Wstatic|^static|\\Wextern|^extern|\\Wconst|^const)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=,|\\)|=)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#storage_types"
+ }
+ ]
+ },
+ "2": {
+ "name": "storage.modifier.specifier.parameter.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "name": "storage.type.primitive.cpp storage.type.built-in.primitive.cpp"
+ },
+ "12": {
+ "name": "storage.type.cpp storage.type.built-in.cpp"
+ },
+ "13": {
+ "name": "support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp"
+ },
+ "14": {
+ "name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
+ },
+ "15": {
+ "name": "entity.name.type.parameter.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#function_call"
+ },
+ {
+ "include": "source.cpp#scope_resolution_parameter_inner_generated"
+ },
+ {
+ "match": "(?:(?:struct)|(?:class)|(?:union)|(?:enum))",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "begin": "(?<==)",
+ "end": "(?:(?=\\))|(,))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": "(?<!\\s|\\(|,|:)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=(?:\\)|,|\\[|=|\\/\\/|(?:\\n|$)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "variable.parameter.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.begin.bracket.square.array.type.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.square.array.type.cpp"
+ }
+ },
+ "name": "meta.bracket.square.array.cpp",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "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)",
+ "name": "entity.name.type.parameter.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ },
+ {
+ "match": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*)",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "include": "#evaluation_context"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ "parentheses": {
+ "begin": "\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.cpp"
+ }
+ },
+ "name": "meta.parens.cpp",
+ "patterns": [
+ {
+ "include": "source.cpp#over_qualified_types"
+ },
+ {
+ "match": "(?<!:):(?!:)",
+ "name": "punctuation.separator.colon.range-based.cpp"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "pragma": {
+ "begin": "^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(#)(?:\\s+)?pragma\\b",
+ "end": "(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.directive.pragma.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "punctuation.definition.directive.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.preprocessor.pragma.cpp",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "match": "[a-zA-Z_$][\\w\\-$]*",
+ "name": "entity.other.attribute-name.pragma.preprocessor.cpp"
+ },
+ {
+ "include": "#preprocessor_number_literal"
+ },
+ {
+ "include": "source.cpp#line_continuation_character"
+ }
+ ]
+ },
+ "preprocessor_conditional_context": {
+ "patterns": [
+ {
+ "include": "#preprocessor_conditional_defined"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "source.cpp#language_constants"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "source.cpp#d9bc4796b0b_preprocessor_number_literal"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "source.cpp#predefined_macros"
+ },
+ {
+ "include": "source.cpp#macro_name"
+ },
+ {
+ "include": "source.cpp#line_continuation_character"
+ }
+ ]
+ },
+ "preprocessor_conditional_defined": {
+ "begin": "((?<!\\w)defined(?!\\w))(\\()",
+ "end": "(?:\\)|(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$)))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.conditional.defined.cpp"
+ },
+ "2": {
+ "name": "punctuation.section.parens.control.defined.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.control.defined.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.cpp#macro_name"
+ }
+ ]
+ },
+ "preprocessor_conditional_parentheses": {
+ "begin": "\\(",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.cpp"
+ }
+ },
+ "name": "meta.parens.preprocessor.conditional.cpp"
+ },
+ "preprocessor_conditional_range": {
+ "begin": "^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(#)(?:\\s+)?((?:(?:ifndef|ifdef)|if))",
+ "end": "(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.directive.conditional.$6.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "punctuation.definition.directive.cpp"
+ },
+ "6": {}
+ },
+ "endCaptures": {},
+ "contentName": "meta.preprocessor.conditional",
+ "patterns": [
+ {
+ "include": "#preprocessor_conditional_context"
+ }
+ ]
+ },
+ "preprocessor_context": {
+ "patterns": [
+ {
+ "include": "source.cpp#pragma_mark"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "source.cpp#include"
+ },
+ {
+ "include": "#line"
+ },
+ {
+ "include": "#diagnostic"
+ },
+ {
+ "include": "source.cpp#undef"
+ },
+ {
+ "include": "#preprocessor_conditional_range"
+ },
+ {
+ "include": "source.cpp#single_line_macro"
+ },
+ {
+ "include": "#macro"
+ },
+ {
+ "include": "source.cpp#preprocessor_conditional_standalone"
+ },
+ {
+ "include": "source.cpp#macro_argument"
+ }
+ ]
+ },
+ "sizeof_operator": {
+ "begin": "((?<!\\w)sizeof(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.sizeof",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "sizeof_variadic_operator": {
+ "begin": "(\\bsizeof\\.\\.\\.)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.sizeof.variadic",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "square_brackets": {
+ "name": "meta.bracket.square.access",
+ "begin": "([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))?(\\[)(?!\\])",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.object"
+ },
+ "2": {
+ "name": "punctuation.definition.begin.bracket.square"
+ }
+ },
+ "end": "\\]|(?=(?<!\\\\)\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.square"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "static_assert": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)static_assert|_Static_assert(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "keyword.other.static_assert.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "10": {
+ "name": "punctuation.section.arguments.begin.bracket.round.static_assert.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.static_assert.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(,)(?:\\s+)?(?=(?:L|u8|u|U(?:\\s+)?\\\")?)",
+ "end": "(?=\\))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.static_assert.message.cpp",
+ "patterns": [
+ {
+ "include": "#string_context"
+ }
+ ]
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "storage_types": {
+ "patterns": [
+ {
+ "include": "source.cpp#storage_specifiers"
+ },
+ {
+ "include": "source.cpp#inline_builtin_storage_type"
+ },
+ {
+ "include": "#decltype"
+ },
+ {
+ "include": "source.cpp#typename"
+ }
+ ]
+ },
+ "string_context": {
+ "patterns": [
+ {
+ "begin": "((?:u|u8|U|L)?)\"",
+ "end": "(\")(?:((?:[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-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))?|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "1": {
+ "name": "meta.encoding.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.cpp"
+ },
+ "2": {
+ "name": "keyword.other.suffix.literal.user-defined.reserved.string.cpp"
+ },
+ "3": {
+ "name": "keyword.other.suffix.literal.user-defined.string.cpp"
+ }
+ },
+ "name": "string.quoted.double.cpp",
+ "patterns": [
+ {
+ "match": "(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8})",
+ "name": "constant.character.escape.cpp"
+ },
+ {
+ "match": "\\\\['\"?\\\\abfnrtv]",
+ "name": "constant.character.escape.cpp"
+ },
+ {
+ "match": "\\\\[0-7]{1,3}",
+ "name": "constant.character.escape.cpp"
+ },
+ {
+ "match": "(?:(\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\x[0-9a-fA-F]*|\\\\x)))",
+ "captures": {
+ "1": {
+ "name": "constant.character.escape.cpp"
+ },
+ "2": {
+ "name": "invalid.illegal.unknown-escape.cpp"
+ }
+ }
+ },
+ {
+ "include": "source.cpp#string_escapes_context_c"
+ }
+ ]
+ },
+ {
+ "begin": "(?<![0-9A-Fa-f])((?:u|u8|U|L)?)'",
+ "end": "(')(?:((?:[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-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))?|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "1": {
+ "name": "meta.encoding.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.cpp"
+ },
+ "2": {
+ "name": "keyword.other.suffix.literal.user-defined.reserved.character.cpp"
+ },
+ "3": {
+ "name": "keyword.other.suffix.literal.user-defined.character.cpp"
+ }
+ },
+ "name": "string.quoted.single.cpp",
+ "patterns": [
+ {
+ "match": "(?:(\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\x[0-9a-fA-F]*|\\\\x)))",
+ "captures": {
+ "1": {
+ "name": "constant.character.escape.cpp"
+ },
+ "2": {
+ "name": "invalid.illegal.unknown-escape.cpp"
+ }
+ }
+ },
+ {
+ "include": "source.cpp#string_escapes_context_c"
+ },
+ {
+ "include": "source.cpp#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "((?:[uUL]8?)?R)\\\"(?:(?:_r|re)|regex)\\(",
+ "end": "\\)(?:(?:_r|re)|regex)\\\"|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "1": {
+ "name": "meta.encoding.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cpp"
+ }
+ },
+ "name": "string.quoted.double.raw.regex.cpp",
+ "patterns": [
+ {
+ "include": "source.regexp.python"
+ }
+ ]
+ },
+ {
+ "begin": "((?:[uUL]8?)?R)\\\"(?:glsl|GLSL)\\(",
+ "end": "\\)(?:glsl|GLSL)\\\"|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "1": {
+ "name": "meta.encoding.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cpp"
+ }
+ },
+ "name": "meta.string.quoted.double.raw.glsl.cpp",
+ "patterns": [
+ {
+ "include": "source.glsl"
+ }
+ ]
+ },
+ {
+ "begin": "((?:[uUL]8?)?R)\\\"(?:[pP]?(?:sql|SQL)|d[dm]l)\\(",
+ "end": "\\)(?:[pP]?(?:sql|SQL)|d[dm]l)\\\"|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "1": {
+ "name": "meta.encoding.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cpp"
+ }
+ },
+ "name": "meta.string.quoted.double.raw.sql.cpp",
+ "patterns": [
+ {
+ "include": "source.sql"
+ }
+ ]
+ },
+ {
+ "begin": "((?:u|u8|U|L)?R)\"(?:([^ ()\\\\\\t]{0,16})|([^ ()\\\\\\t]*))\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin"
+ },
+ "1": {
+ "name": "meta.encoding"
+ },
+ "3": {
+ "name": "invalid.illegal.delimiter-too-long"
+ }
+ },
+ "end": "(\\)\\2(\\3)\")(?:((?:[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-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))?|(?=(?<!\\\\)\n)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end"
+ },
+ "2": {
+ "name": "invalid.illegal.delimiter-too-long"
+ },
+ "3": {
+ "name": "keyword.other.suffix.literal.user-defined.reserved.string.cpp"
+ },
+ "4": {
+ "name": "keyword.other.suffix.literal.user-defined.string.cpp"
+ }
+ },
+ "name": "string.quoted.double.raw"
+ }
+ ]
+ },
+ "struct_block": {
+ "begin": "((?<!\\w)struct(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.struct.cpp"
+ },
+ "1": {
+ "name": "storage.type.$1.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.struct.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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}))*",
+ "name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "20": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.block.struct.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.struct.cpp"
+ }
+ },
+ "name": "meta.head.struct.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.struct.cpp"
+ }
+ },
+ "name": "meta.body.struct.cpp",
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.struct.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "switch_conditional_parentheses": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "punctuation.section.parens.begin.bracket.round.conditional.switch.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.conditional.switch.cpp"
+ }
+ },
+ "name": "meta.conditional.switch.cpp",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "switch_statement": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)switch(?!\\w))",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.switch.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "keyword.control.switch.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.block.switch.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.switch.cpp"
+ }
+ },
+ "name": "meta.head.switch.cpp",
+ "patterns": [
+ {
+ "include": "#switch_conditional_parentheses"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.switch.cpp"
+ }
+ },
+ "name": "meta.body.switch.cpp",
+ "patterns": [
+ {
+ "include": "#default_statement"
+ },
+ {
+ "include": "#case_statement"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.switch.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "template_call_context": {
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#template_call_range"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "source.cpp#language_constants"
+ },
+ {
+ "include": "source.cpp#scope_resolution_template_call_inner_generated"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "source.cpp#comma_in_template_argument"
+ },
+ {
+ "include": "source.cpp#qualified_type"
+ }
+ ]
+ },
+ "template_call_range": {
+ "begin": "<",
+ "end": ">|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ "template_definition": {
+ "begin": "(?<!\\w)(template)(?:\\s+)?(<)",
+ "end": ">|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.template.cpp"
+ },
+ "2": {
+ "name": "punctuation.section.angle-brackets.begin.template.definition.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.definition.cpp"
+ }
+ },
+ "name": "meta.template.definition.cpp",
+ "patterns": [
+ {
+ "begin": "(?<=\\w)(?:\\s+)?<",
+ "end": ">|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "include": "#template_definition_context"
+ }
+ ]
+ },
+ "template_definition_context": {
+ "patterns": [
+ {
+ "include": "source.cpp#scope_resolution_template_definition_inner_generated"
+ },
+ {
+ "include": "source.cpp#template_definition_argument"
+ },
+ {
+ "include": "source.cpp#template_argument_defaulted"
+ },
+ {
+ "include": "source.cpp#template_call_innards"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "ternary_operator": {
+ "begin": "\\?",
+ "end": ":|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "source.cpp#member_access"
+ },
+ {
+ "include": "source.cpp#predefined_macros"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "source.cpp#memory_operators"
+ },
+ {
+ "include": "source.cpp#wordlike_operators"
+ },
+ {
+ "include": "source.cpp#type_casting_operators"
+ },
+ {
+ "include": "source.cpp#control_flow_keywords"
+ },
+ {
+ "include": "source.cpp#exception_keywords"
+ },
+ {
+ "include": "source.cpp#the_this_keyword"
+ },
+ {
+ "include": "source.cpp#language_constants"
+ },
+ {
+ "include": "#builtin_storage_type_initilizer"
+ },
+ {
+ "include": "source.cpp#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "include": "source.cpp#functional_specifiers_pre_parameters"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#lambdas"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#parentheses"
+ },
+ {
+ "include": "#function_call"
+ },
+ {
+ "include": "source.cpp#scope_resolution_inner_generated"
+ },
+ {
+ "include": "#square_brackets"
+ },
+ {
+ "include": "source.cpp#semicolon"
+ },
+ {
+ "include": "source.cpp#comma"
+ }
+ ],
+ "applyEndPatternLast": 1
+ },
+ "typedef_class": {
+ "begin": "((?<!\\w)typedef(?!\\w))(?:\\s+)?(?=(?<!\\w)class(?!\\w))",
+ "end": "(?<=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.typedef.cpp"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "begin": "((?<!\\w)class(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.class.cpp"
+ },
+ "1": {
+ "name": "storage.type.$1.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.class.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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}))*",
+ "name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "20": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.block.class.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.class.cpp"
+ }
+ },
+ "name": "meta.head.class.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.class.cpp"
+ }
+ },
+ "name": "meta.body.class.cpp",
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.class.cpp",
+ "patterns": [
+ {
+ "match": "(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "14": {
+ "name": "entity.name.type.alias.cpp"
+ }
+ }
+ },
+ {
+ "match": ","
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "typedef_function_pointer": {
+ "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*\\))",
+ "end": "(?<=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.typedef.cpp"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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+)?(\\()",
+ "end": "(\\))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=[{=,);>]|\\n)(?!\\()|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "source.cpp#comma"
+ },
+ {
+ "include": "source.cpp#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "13": {},
+ "14": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "16": {
+ "name": "comment.block.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "18": {},
+ "19": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "21": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp"
+ },
+ "23": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "24": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "25": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "26": {
+ "name": "comment.block.cpp"
+ },
+ "27": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "28": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "30": {
+ "name": "comment.block.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "32": {
+ "name": "punctuation.section.parens.begin.bracket.round.function.pointer.cpp"
+ },
+ "33": {
+ "name": "punctuation.definition.function.pointer.dereference.cpp"
+ },
+ "34": {
+ "name": "entity.name.type.alias.cpp entity.name.type.pointer.function.cpp"
+ },
+ "35": {
+ "name": "punctuation.definition.begin.bracket.square.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "37": {
+ "name": "punctuation.definition.end.bracket.square.cpp"
+ },
+ "38": {
+ "name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
+ },
+ "39": {
+ "name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.end.bracket.round.function.pointer.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ }
+ ]
+ }
+ ]
+ },
+ "typedef_struct": {
+ "begin": "((?<!\\w)typedef(?!\\w))(?:\\s+)?(?=(?<!\\w)struct(?!\\w))",
+ "end": "(?<=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.typedef.cpp"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "begin": "((?<!\\w)struct(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.struct.cpp"
+ },
+ "1": {
+ "name": "storage.type.$1.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.struct.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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}))*",
+ "name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "20": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.block.struct.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.struct.cpp"
+ }
+ },
+ "name": "meta.head.struct.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.struct.cpp"
+ }
+ },
+ "name": "meta.body.struct.cpp",
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.struct.cpp",
+ "patterns": [
+ {
+ "match": "(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "14": {
+ "name": "entity.name.type.alias.cpp"
+ }
+ }
+ },
+ {
+ "match": ","
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "typedef_union": {
+ "begin": "((?<!\\w)typedef(?!\\w))(?:\\s+)?(?=(?<!\\w)union(?!\\w))",
+ "end": "(?<=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.typedef.cpp"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "begin": "((?<!\\w)union(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.union.cpp"
+ },
+ "1": {
+ "name": "storage.type.$1.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.union.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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}))*",
+ "name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "20": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.block.union.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.union.cpp"
+ }
+ },
+ "name": "meta.head.union.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.union.cpp"
+ }
+ },
+ "name": "meta.body.union.cpp",
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.union.cpp",
+ "patterns": [
+ {
+ "match": "(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "14": {
+ "name": "entity.name.type.alias.cpp"
+ }
+ }
+ },
+ {
+ "match": ","
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "typeid_operator": {
+ "begin": "((?<!\\w)typeid(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.typeid.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.typeid.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.typeid",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "union_block": {
+ "begin": "((?<!\\w)union(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.union.cpp"
+ },
+ "1": {
+ "name": "storage.type.$1.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "source.cpp#number_literal"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.union.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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}))*",
+ "name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "source.cpp#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "20": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.block.union.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.union.cpp"
+ }
+ },
+ "name": "meta.head.union.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.union.cpp"
+ }
+ },
+ "name": "meta.body.union.cpp",
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)|(?=(?<!\\\\)\n)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.union.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "using_namespace": {
+ "begin": "(?<!\\w)(using)\\s+(namespace)\\s+((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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)",
+ "end": ";|(?=(?<!\\\\)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.using.directive.cpp"
+ },
+ "2": {
+ "name": "keyword.other.namespace.directive.cpp storage.type.namespace.directive.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.cpp#scope_resolution_namespace_using_inner_generated"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "6": {},
+ "7": {
+ "name": "entity.name.namespace.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.using-namespace.cpp"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/cpp.tmLanguage.json b/node_modules/shiki/languages/cpp.tmLanguage.json
new file mode 100644
index 0000000..2529211
--- /dev/null
+++ b/node_modules/shiki/languages/cpp.tmLanguage.json
@@ -0,0 +1,16474 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/jeff-hykin/better-cpp-syntax/blob/master/autogenerated/cpp.tmLanguage.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/jeff-hykin/better-cpp-syntax/commit/f1d127a8af2b184db570345f0bb179503c47fdf6",
+ "name": "cpp",
+ "scopeName": "source.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#constructor_root"
+ },
+ {
+ "include": "#destructor_root"
+ },
+ {
+ "include": "#function_definition"
+ },
+ {
+ "include": "#operator_overload"
+ },
+ {
+ "include": "#using_namespace"
+ },
+ {
+ "include": "#type_alias"
+ },
+ {
+ "include": "#using_name"
+ },
+ {
+ "include": "#namespace_alias"
+ },
+ {
+ "include": "#namespace_block"
+ },
+ {
+ "include": "#extern_block"
+ },
+ {
+ "include": "#typedef_class"
+ },
+ {
+ "include": "#typedef_struct"
+ },
+ {
+ "include": "#typedef_union"
+ },
+ {
+ "include": "#misc_keywords"
+ },
+ {
+ "include": "#standard_declares"
+ },
+ {
+ "include": "#class_block"
+ },
+ {
+ "include": "#struct_block"
+ },
+ {
+ "include": "#union_block"
+ },
+ {
+ "include": "#enum_block"
+ },
+ {
+ "include": "#template_isolated_definition"
+ },
+ {
+ "include": "#template_definition"
+ },
+ {
+ "include": "#template_explicit_instantiation"
+ },
+ {
+ "include": "#access_control_keywords"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#assembly"
+ },
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ],
+ "repository": {
+ "access_control_keywords": {
+ "match": "((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(((?:(?:protected)|(?:private)|(?:public)))(?:\\s+)?(:))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "3": {
+ "name": "storage.type.modifier.access.control.$4.cpp"
+ },
+ "4": {},
+ "5": {
+ "name": "punctuation.separator.colon.access.control.cpp"
+ }
+ }
+ },
+ "alignas_attribute": {
+ "begin": "alignas\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.attribute.begin.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.attribute.end.cpp"
+ }
+ },
+ "name": "support.other.attribute.cpp",
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ {
+ "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))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.using.directive.cpp"
+ },
+ "2": {
+ "name": "entity.name.namespace.cpp"
+ }
+ }
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.attribute.cpp"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.accessor.attribute.cpp"
+ },
+ {
+ "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)(?=::)",
+ "name": "entity.name.namespace.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.other.attribute.$0.cpp"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ "alignas_operator": {
+ "begin": "((?<!\\w)alignas(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.alignas.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.alignas.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.alignas",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "alignof_operator": {
+ "begin": "((?<!\\w)alignof(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.alignof.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.alignof.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.alignof",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "assembly": {
+ "begin": "(\\b(?:__asm__|asm)\\b)(?:\\s+)?((?:volatile)?)",
+ "end": "(?!\\G)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.asm.cpp"
+ },
+ "2": {
+ "name": "storage.modifier.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.asm.cpp",
+ "patterns": [
+ {
+ "match": "^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:\\n|$)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.assembly.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.assembly.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(R?)(\")",
+ "end": "\"",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.encoding.cpp"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.assembly.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.assembly.cpp"
+ }
+ },
+ "name": "string.quoted.double.cpp",
+ "contentName": "meta.embedded.assembly",
+ "patterns": [
+ {
+ "include": "source.asm"
+ },
+ {
+ "include": "source.x86"
+ },
+ {
+ "include": "source.x86_64"
+ },
+ {
+ "include": "source.arm"
+ },
+ {
+ "include": "#backslash_escapes"
+ },
+ {
+ "include": "#string_escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.assembly.inner.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.assembly.inner.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": "\\[((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))\\]",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "variable.other.asm.label.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "match": ":",
+ "name": "punctuation.separator.delimiter.colon.assembly.cpp"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ }
+ ]
+ },
+ "assignment_operator": {
+ "match": "\\=",
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "attributes_context": {
+ "patterns": [
+ {
+ "include": "#cpp_attributes"
+ },
+ {
+ "include": "#gcc_attributes"
+ },
+ {
+ "include": "#ms_attributes"
+ },
+ {
+ "include": "#alignas_attribute"
+ }
+ ]
+ },
+ "backslash_escapes": {
+ "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} )",
+ "name": "constant.character.escape"
+ },
+ "block": {
+ "begin": "{",
+ "end": "}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.cpp"
+ }
+ },
+ "name": "meta.block.cpp",
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ "block_comment": {
+ "begin": "\\s*+(\\/\\*)",
+ "end": "\\*\\/",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.begin.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "comment.block.cpp"
+ },
+ "builtin_storage_type_initilizer": {
+ "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)(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.primitive.cpp storage.type.built-in.primitive.cpp"
+ },
+ "2": {
+ "name": "storage.type.cpp storage.type.built-in.cpp"
+ },
+ "3": {
+ "name": "support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp"
+ },
+ "4": {
+ "name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
+ },
+ "5": {
+ "name": "punctuation.section.arguments.begin.bracket.round.initializer.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.initializer.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "case_statement": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)case(?!\\w))",
+ "end": ":",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "keyword.control.case.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.separator.colon.case.cpp"
+ }
+ },
+ "name": "meta.conditional.case.cpp",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "class_block": {
+ "begin": "((?<!\\w)class(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.class.cpp"
+ },
+ "1": {
+ "name": "storage.type.$1.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.class.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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}))*",
+ "name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "20": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.block.class.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.class.cpp"
+ }
+ },
+ "name": "meta.head.class.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.class.cpp"
+ }
+ },
+ "name": "meta.body.class.cpp",
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.class.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "class_declare": {
+ "match": "((?<!\\w)class(?!\\w))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\S)(?![:{a-zA-Z])",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.declare.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.class.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "comma": {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ },
+ "comma_in_template_argument": {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.comma.template.argument.cpp"
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "^(?:\\s+)?+(\\/\\/[!\\/]+)",
+ "end": "(?<=\\n)(?<!\\\\\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.documentation.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "comment.line.double-slash.documentation.cpp",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.italic.doxygen.cpp"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.bold.doxygen.cpp"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.inline.raw.string.cpp"
+ }
+ }
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:\\s+)?(?:in|out)(?:\\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+)?((?<!\\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)))*)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "in|out",
+ "name": "keyword.other.parameter.direction.$0.cpp"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "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)",
+ "name": "variable.parameter.cpp"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.cpp"
+ }
+ ]
+ },
+ "4": {
+ "name": "variable.parameter.cpp"
+ },
+ "5": {
+ "name": "punctuation.cpp"
+ },
+ "6": {
+ "name": "variable.parameter.cpp"
+ }
+ }
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "(?:\\b[A-Z]+:|@[a-z_]+:)",
+ "name": "storage.type.class.gtkdoc.cpp"
+ }
+ ]
+ },
+ {
+ "match": "(\\/\\*[!*]+(?=\\s))(.+)([!*]*\\*\\/)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.begin.documentation.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.italic.doxygen.cpp"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.bold.doxygen.cpp"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.inline.raw.string.cpp"
+ }
+ }
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:\\s+)?(?:in|out)(?:\\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+)?((?<!\\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)))*)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "in|out",
+ "name": "keyword.other.parameter.direction.$0.cpp"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "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)",
+ "name": "variable.parameter.cpp"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.cpp"
+ }
+ ]
+ },
+ "4": {
+ "name": "variable.parameter.cpp"
+ },
+ "5": {
+ "name": "punctuation.cpp"
+ },
+ "6": {
+ "name": "variable.parameter.cpp"
+ }
+ }
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "(?:\\b[A-Z]+:|@[a-z_]+:)",
+ "name": "storage.type.class.gtkdoc.cpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.comment.end.documentation.cpp"
+ }
+ },
+ "name": "comment.block.documentation.cpp"
+ },
+ {
+ "begin": "(?:\\s+)?+\\/\\*[!*]+(?:(?:\\n|$)|(?=\\s))",
+ "end": "[!*]*\\*\\/",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.documentation.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.documentation.cpp"
+ }
+ },
+ "name": "comment.block.documentation.cpp",
+ "patterns": [
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:a|em|e))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.italic.doxygen.cpp"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]b)\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.bold.doxygen.cpp"
+ }
+ }
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@](?:c|p))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "name": "markup.inline.raw.string.cpp"
+ }
+ }
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "((?<=[\\s*!\\/])[\\\\@]param)(?:\\s*\\[((?:,?(?:\\s+)?(?:in|out)(?:\\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+)?((?<!\\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)))*)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "in|out",
+ "name": "keyword.other.parameter.direction.$0.cpp"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "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)",
+ "name": "variable.parameter.cpp"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.cpp"
+ }
+ ]
+ },
+ "4": {
+ "name": "variable.parameter.cpp"
+ },
+ "5": {
+ "name": "punctuation.cpp"
+ },
+ "6": {
+ "name": "variable.parameter.cpp"
+ }
+ }
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "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(?:\\{[^}]*\\})?",
+ "name": "storage.type.class.doxygen.cpp"
+ },
+ {
+ "match": "(?:\\b[A-Z]+:|@[a-z_]+:)",
+ "name": "storage.type.class.gtkdoc.cpp"
+ }
+ ]
+ },
+ {
+ "include": "#emacs_file_banner"
+ },
+ {
+ "include": "#block_comment"
+ },
+ {
+ "include": "#line_comment"
+ },
+ {
+ "include": "#invalid_comment_end"
+ }
+ ]
+ },
+ "constructor_inline": {
+ "begin": "^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*)((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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)(?=\\())",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.function.definition.special.constructor.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#functional_specifiers_pre_parameters"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "10": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "12": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "15": {
+ "name": "entity.name.function.constructor.cpp entity.name.function.definition.special.constructor.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.function.definition.special.constructor.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp"
+ }
+ },
+ "name": "meta.head.function.definition.special.constructor.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "match": "(\\=)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "keyword.other.default.function.cpp keyword.other.default.constructor.cpp"
+ },
+ "7": {
+ "name": "keyword.other.delete.function.cpp keyword.other.delete.constructor.cpp"
+ }
+ }
+ },
+ {
+ "include": "#functional_specifiers_pre_parameters"
+ },
+ {
+ "begin": ":",
+ "end": "(?=\\{)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.initializers.cpp"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "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*+)?(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.call.initializer.cpp"
+ },
+ "2": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "3": {},
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "7": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "contentName": "meta.parameter.initialization",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "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))(\\{)",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.call.initializer.cpp"
+ },
+ "2": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "contentName": "meta.parameter.initialization",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.begin.bracket.round.special.constructor.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.special.constructor.cpp"
+ }
+ },
+ "contentName": "meta.function.definition.parameters.special.constructor",
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "include": "#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp"
+ }
+ },
+ "name": "meta.body.function.definition.special.constructor.cpp",
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.function.definition.special.constructor.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "constructor_root": {
+ "begin": "\\s*+((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+)?::)*+)(((?>(?<!\\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*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))::((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:\\10)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\())",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.function.definition.special.constructor.cpp"
+ },
+ "1": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.constructor.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "8": {},
+ "9": {
+ "patterns": [
+ {
+ "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}))*(?=:)",
+ "name": "entity.name.type.constructor.cpp"
+ },
+ {
+ "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}))*",
+ "name": "entity.name.function.definition.special.constructor.cpp"
+ },
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.constructor.cpp"
+ }
+ ]
+ },
+ "10": {},
+ "11": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "12": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "21": {
+ "name": "comment.block.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.function.definition.special.constructor.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.special.constructor.cpp"
+ }
+ },
+ "name": "meta.head.function.definition.special.constructor.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "match": "(\\=)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "keyword.other.default.function.cpp keyword.other.default.constructor.cpp"
+ },
+ "7": {
+ "name": "keyword.other.delete.function.cpp keyword.other.delete.constructor.cpp"
+ }
+ }
+ },
+ {
+ "include": "#functional_specifiers_pre_parameters"
+ },
+ {
+ "begin": ":",
+ "end": "(?=\\{)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.initializers.cpp"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "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*+)?(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.call.initializer.cpp"
+ },
+ "2": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "3": {},
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "7": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "contentName": "meta.parameter.initialization",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "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))(\\{)",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.call.initializer.cpp"
+ },
+ "2": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.call.initializer.cpp"
+ }
+ },
+ "contentName": "meta.parameter.initialization",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.begin.bracket.round.special.constructor.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.special.constructor.cpp"
+ }
+ },
+ "contentName": "meta.function.definition.parameters.special.constructor",
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "include": "#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.constructor.cpp"
+ }
+ },
+ "name": "meta.body.function.definition.special.constructor.cpp",
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.function.definition.special.constructor.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "control_flow_keywords": {
+ "match": "((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)(?:(?:co_return)|(?:co_yield)|(?:co_await)|(?:continue)|(?:default)|(?:switch)|(?:return)|(?:catch)|(?:while)|(?:throw)|(?:break)|(?:case)|(?:goto)|(?:else)|(?:for)|(?:try)|(?:if)|(?:do))(?!\\w))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.control.$3.cpp"
+ }
+ }
+ },
+ "cpp_attributes": {
+ "begin": "\\[\\[",
+ "end": "\\]\\]",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.attribute.begin.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.attribute.end.cpp"
+ }
+ },
+ "name": "support.other.attribute.cpp",
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ {
+ "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))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.using.directive.cpp"
+ },
+ "2": {
+ "name": "entity.name.namespace.cpp"
+ }
+ }
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.attribute.cpp"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.accessor.attribute.cpp"
+ },
+ {
+ "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)(?=::)",
+ "name": "entity.name.namespace.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.other.attribute.$0.cpp"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ "curly_initializer": {
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\{)",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "13": {},
+ "14": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "16": {
+ "name": "comment.block.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "18": {},
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "21": {
+ "name": "comment.block.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "23": {
+ "name": "punctuation.section.arguments.begin.bracket.curly.initializer.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.curly.initializer.cpp"
+ }
+ },
+ "name": "meta.initialization.cpp",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ },
+ "d9bc4796b0b_module_import": {
+ "match": "^((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((import))(?:\\s+)?(?:(?:(?:((<)[^>]*(>?)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:\\n|$)|(?=\\/\\/)))|((\\\")[^\\\"]*(\\\"?)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:\\n|$)|(?=\\/\\/))))|(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:\\n|$)|(?=(?:\\/\\/|;)))))|((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:\\n|$)|(?=(?:\\/\\/|;))))(?:\\s+)?(;?)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.control.directive.import.cpp"
+ },
+ "5": {
+ "name": "string.quoted.other.lt-gt.include.cpp"
+ },
+ "6": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "7": {
+ "name": "punctuation.definition.string.end.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "name": "string.quoted.double.include.cpp"
+ },
+ "11": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "12": {
+ "name": "punctuation.definition.string.end.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "15": {
+ "name": "entity.name.other.preprocessor.macro.include.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "18": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "19": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "21": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "22": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.preprocessor.import.cpp"
+ },
+ "d9bc4796b0b_preprocessor_number_literal": {
+ "match": "(?<!\\w)\\.?\\d(?:(?:[0-9a-zA-Z_\\.]|')|(?<=[eEpP])[+-])*",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "begin": "(?=.)",
+ "end": "$",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "patterns": [
+ {
+ "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))?$",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.hexadecimal.cpp"
+ },
+ "2": {
+ "name": "constant.numeric.hexadecimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.cpp"
+ },
+ "4": {
+ "name": "constant.numeric.hexadecimal.cpp"
+ },
+ "5": {
+ "name": "constant.numeric.hexadecimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.separator.constant.numeric.cpp"
+ },
+ "7": {
+ "name": "keyword.other.unit.exponent.hexadecimal.cpp"
+ },
+ "8": {
+ "name": "keyword.operator.plus.exponent.hexadecimal.cpp"
+ },
+ "9": {
+ "name": "keyword.operator.minus.exponent.hexadecimal.cpp"
+ },
+ "10": {
+ "name": "constant.numeric.exponent.hexadecimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "11": {
+ "name": "keyword.other.suffix.literal.built-in.floating-point.cpp keyword.other.unit.suffix.floating-point.cpp"
+ }
+ }
+ },
+ {
+ "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))?$",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.decimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.constant.numeric.cpp"
+ },
+ "3": {
+ "name": "constant.numeric.decimal.point.cpp"
+ },
+ "4": {
+ "name": "constant.numeric.decimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.separator.constant.numeric.cpp"
+ },
+ "6": {
+ "name": "keyword.other.unit.exponent.decimal.cpp"
+ },
+ "7": {
+ "name": "keyword.operator.plus.exponent.decimal.cpp"
+ },
+ "8": {
+ "name": "keyword.operator.minus.exponent.decimal.cpp"
+ },
+ "9": {
+ "name": "constant.numeric.exponent.decimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "10": {
+ "name": "keyword.other.suffix.literal.built-in.floating-point.cpp keyword.other.unit.suffix.floating-point.cpp"
+ }
+ }
+ },
+ {
+ "match": "(\\G0[bB])([01](?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))*)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\w))?$",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.binary.cpp"
+ },
+ "2": {
+ "name": "constant.numeric.binary.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.cpp"
+ },
+ "4": {
+ "name": "keyword.other.suffix.literal.built-in.integer.cpp keyword.other.unit.suffix.integer.cpp"
+ }
+ }
+ },
+ {
+ "match": "(\\G0)((?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F])))+)((?:[uU]|(?:[uU]ll?)|(?:[uU]LL?)|(?:ll?[uU]?)|(?:LL?[uU]?)|[fF])(?!\\w))?$",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.octal.cpp"
+ },
+ "2": {
+ "name": "constant.numeric.octal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.cpp"
+ },
+ "4": {
+ "name": "keyword.other.suffix.literal.built-in.integer.cpp keyword.other.unit.suffix.integer.cpp"
+ }
+ }
+ },
+ {
+ "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))?$",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.hexadecimal.cpp"
+ },
+ "2": {
+ "name": "constant.numeric.hexadecimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.cpp"
+ },
+ "4": {
+ "name": "keyword.other.unit.exponent.hexadecimal.cpp"
+ },
+ "5": {
+ "name": "keyword.operator.plus.exponent.hexadecimal.cpp"
+ },
+ "6": {
+ "name": "keyword.operator.minus.exponent.hexadecimal.cpp"
+ },
+ "7": {
+ "name": "constant.numeric.exponent.hexadecimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "8": {
+ "name": "keyword.other.suffix.literal.built-in.integer.cpp keyword.other.unit.suffix.integer.cpp"
+ }
+ }
+ },
+ {
+ "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))?$",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.decimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.constant.numeric.cpp"
+ },
+ "3": {
+ "name": "keyword.other.unit.exponent.decimal.cpp"
+ },
+ "4": {
+ "name": "keyword.operator.plus.exponent.decimal.cpp"
+ },
+ "5": {
+ "name": "keyword.operator.minus.exponent.decimal.cpp"
+ },
+ "6": {
+ "name": "constant.numeric.exponent.decimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "7": {
+ "name": "keyword.other.suffix.literal.built-in.integer.cpp keyword.other.unit.suffix.integer.cpp"
+ }
+ }
+ },
+ {
+ "match": "(?:(?:[0-9a-zA-Z_\\.]|')|(?<=[eEpP])[+-])+",
+ "name": "invalid.illegal.constant.numeric.cpp"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "decltype": {
+ "begin": "((?<!\\w)decltype(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.decltype.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.decltype.cpp"
+ }
+ },
+ "contentName": "meta.arguments.decltype",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "decltype_specifier": {
+ "begin": "((?<!\\w)decltype(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.other.decltype.cpp storage.type.decltype.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.decltype.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.decltype.cpp"
+ }
+ },
+ "contentName": "meta.arguments.decltype",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "default_statement": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)default(?!\\w))",
+ "end": ":",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "keyword.control.default.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.separator.colon.case.default.cpp"
+ }
+ },
+ "name": "meta.conditional.case.cpp",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "destructor_inline": {
+ "begin": "^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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)(?=\\())",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.function.definition.special.member.destructor.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#functional_specifiers_pre_parameters"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "12": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "15": {
+ "name": "entity.name.function.destructor.cpp entity.name.function.definition.special.member.destructor.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.function.definition.special.member.destructor.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp"
+ }
+ },
+ "name": "meta.head.function.definition.special.member.destructor.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "match": "(\\=)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "keyword.other.default.function.cpp keyword.other.default.constructor.cpp keyword.other.default.destructor.cpp"
+ },
+ "7": {
+ "name": "keyword.other.delete.function.cpp keyword.other.delete.constructor.cpp keyword.other.delete.destructor.cpp"
+ }
+ }
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp"
+ }
+ },
+ "contentName": "meta.function.definition.parameters.special.member.destructor",
+ "patterns": []
+ },
+ {
+ "include": "#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp"
+ }
+ },
+ "name": "meta.body.function.definition.special.member.destructor.cpp",
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.function.definition.special.member.destructor.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "destructor_root": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))::((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))~(?:\\14)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\())",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.function.definition.special.member.destructor.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.destructor.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "12": {},
+ "13": {
+ "patterns": [
+ {
+ "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}))*(?=:)",
+ "name": "entity.name.type.destructor.cpp"
+ },
+ {
+ "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}))*",
+ "name": "entity.name.function.definition.special.member.destructor.cpp"
+ },
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.destructor.cpp"
+ }
+ ]
+ },
+ "14": {},
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "21": {
+ "name": "comment.block.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "23": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "24": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "25": {
+ "name": "comment.block.cpp"
+ },
+ "26": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.function.definition.special.member.destructor.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.special.member.destructor.cpp"
+ }
+ },
+ "name": "meta.head.function.definition.special.member.destructor.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "match": "(\\=)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "keyword.other.default.function.cpp keyword.other.default.constructor.cpp keyword.other.default.destructor.cpp"
+ },
+ "7": {
+ "name": "keyword.other.delete.function.cpp keyword.other.delete.constructor.cpp keyword.other.delete.destructor.cpp"
+ }
+ }
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.begin.bracket.round.special.member.destructor.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.special.member.destructor.cpp"
+ }
+ },
+ "contentName": "meta.function.definition.parameters.special.member.destructor",
+ "patterns": []
+ },
+ {
+ "include": "#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.member.destructor.cpp"
+ }
+ },
+ "name": "meta.body.function.definition.special.member.destructor.cpp",
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.function.definition.special.member.destructor.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "diagnostic": {
+ "begin": "(^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(#)(?:\\s+)?((?:error|warning)))\\b(?:\\s+)?",
+ "end": "(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.diagnostic.$7.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.definition.directive.cpp"
+ },
+ "7": {}
+ },
+ "endCaptures": {},
+ "name": "meta.preprocessor.diagnostic.$reference(directive).cpp",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "\"",
+ "end": "(?:(\")|(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$)))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.cpp"
+ }
+ },
+ "name": "string.quoted.double.cpp",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "end": "(?:(')|(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$)))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.cpp"
+ }
+ },
+ "name": "string.quoted.single.cpp",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "[^'\"]",
+ "end": "(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$))",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "string.unquoted.cpp",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ }
+ ]
+ },
+ "emacs_file_banner": {
+ "match": "(?:(^(?:\\s+)?((\\/\\/)(?:\\s+)?((?:[#;\\/=*C~]+)++(?![#;\\/=*C~]))(?:\\s+)?.+(?:\\s+)?(?:\\4)(?:\\s+)?(?:\\n|$)))|(^(?:\\s+)?((\\/\\*)(?:\\s+)?((?:[#;\\/=*C~]+)++(?![#;\\/=*C~]))(?:\\s+)?.+(?:\\s+)?(?:\\8)(?:\\s+)?\\*\\/)))",
+ "captures": {
+ "1": {
+ "name": "meta.toc-list.banner.double-slash.cpp"
+ },
+ "2": {
+ "name": "comment.line.double-slash.cpp"
+ },
+ "3": {
+ "name": "punctuation.definition.comment.cpp"
+ },
+ "4": {
+ "name": "meta.banner.character.cpp"
+ },
+ "5": {
+ "name": "meta.toc-list.banner.block.cpp"
+ },
+ "6": {
+ "name": "comment.line.banner.cpp"
+ },
+ "7": {
+ "name": "punctuation.definition.comment.cpp"
+ },
+ "8": {
+ "name": "meta.banner.character.cpp"
+ }
+ }
+ },
+ "empty_square_brackets": {
+ "name": "storage.modifier.array.bracket.square",
+ "match": "(?<!delete)\\[(?:\\s+)?\\]"
+ },
+ "enum_block": {
+ "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|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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)))?",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.enum.cpp"
+ },
+ "1": {
+ "name": "storage.type.enum.cpp"
+ },
+ "2": {
+ "name": "storage.type.enum.enum-key.$2.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.enum.cpp"
+ },
+ "5": {
+ "name": "punctuation.separator.colon.type-specifier.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_inner_generated"
+ }
+ ]
+ },
+ "7": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {},
+ "10": {
+ "name": "entity.name.scope-resolution.cpp"
+ },
+ "11": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "12": {},
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "16": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ "17": {
+ "name": "storage.type.integral.$17.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.block.enum.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.enum.cpp"
+ }
+ },
+ "name": "meta.head.enum.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.enum.cpp"
+ }
+ },
+ "name": "meta.body.enum.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#enumerator_list"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#semicolon"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.enum.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "enum_declare": {
+ "match": "((?<!\\w)enum(?!\\w))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\S)(?![:{a-zA-Z])",
+ "captures": {
+ "1": {
+ "name": "storage.type.enum.declare.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.enum.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "enumerator_list": {
+ "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))|(?=\\}[^']))|(?=(?:\\/\\/|\\/\\*)))",
+ "captures": {
+ "1": {
+ "name": "variable.other.enummember.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#semicolon"
+ }
+ ]
+ }
+ },
+ "name": "meta.enum.definition.cpp"
+ },
+ "evaluation_context": {
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#predefined_macros"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#memory_operators"
+ },
+ {
+ "include": "#wordlike_operators"
+ },
+ {
+ "include": "#type_casting_operators"
+ },
+ {
+ "include": "#control_flow_keywords"
+ },
+ {
+ "include": "#exception_keywords"
+ },
+ {
+ "include": "#the_this_keyword"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "include": "#builtin_storage_type_initilizer"
+ },
+ {
+ "include": "#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "include": "#functional_specifiers_pre_parameters"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#lambdas"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#parentheses"
+ },
+ {
+ "include": "#function_call"
+ },
+ {
+ "include": "#scope_resolution_inner_generated"
+ },
+ {
+ "include": "#square_brackets"
+ },
+ {
+ "include": "#semicolon"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ },
+ "ever_present_context": {
+ "patterns": [
+ {
+ "include": "#pragma_mark"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "#include"
+ },
+ {
+ "include": "#line"
+ },
+ {
+ "include": "#diagnostic"
+ },
+ {
+ "include": "#undef"
+ },
+ {
+ "include": "#preprocessor_conditional_range"
+ },
+ {
+ "include": "#single_line_macro"
+ },
+ {
+ "include": "#macro"
+ },
+ {
+ "include": "#preprocessor_conditional_standalone"
+ },
+ {
+ "include": "#macro_argument"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ "exception_keywords": {
+ "match": "((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)(?:(?:throw)|(?:catch)|(?:try))(?!\\w))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.control.exception.$3.cpp"
+ }
+ }
+ },
+ "extern_block": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(extern)(?=\\s*\\\")",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.extern.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "storage.type.extern.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.block.extern.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.extern.cpp"
+ }
+ },
+ "name": "meta.head.extern.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.extern.cpp"
+ }
+ },
+ "name": "meta.body.extern.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.extern.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "function_body_context": {
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#using_namespace"
+ },
+ {
+ "include": "#type_alias"
+ },
+ {
+ "include": "#using_name"
+ },
+ {
+ "include": "#namespace_alias"
+ },
+ {
+ "include": "#typedef_class"
+ },
+ {
+ "include": "#typedef_struct"
+ },
+ {
+ "include": "#typedef_union"
+ },
+ {
+ "include": "#misc_keywords"
+ },
+ {
+ "include": "#standard_declares"
+ },
+ {
+ "include": "#class_block"
+ },
+ {
+ "include": "#struct_block"
+ },
+ {
+ "include": "#union_block"
+ },
+ {
+ "include": "#enum_block"
+ },
+ {
+ "include": "#access_control_keywords"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#assembly"
+ },
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#switch_statement"
+ },
+ {
+ "include": "#goto_statement"
+ },
+ {
+ "include": "#evaluation_context"
+ },
+ {
+ "include": "#label"
+ }
+ ]
+ },
+ "function_call": {
+ "begin": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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|\\Watomic_cancel|^atomic_cancel|\\Watomic_commit|^atomic_commit|\\Wuint_least8_t|^uint_least8_t|\\Wuint_fast16_t|^uint_fast16_t|\\Wuint_fast32_t|^uint_fast32_t|\\Wint_least16_t|^int_least16_t|\\Wint_least32_t|^int_least32_t|\\Wint_least64_t|^int_least64_t|\\Wuint_fast64_t|^uint_fast64_t|\\Wthread_local|^thread_local|\\Wint_fast16_t|^int_fast16_t|\\Wint_fast32_t|^int_fast32_t|\\Wint_fast64_t|^int_fast64_t|\\Wsynchronized|^synchronized|\\Wuint_fast8_t|^uint_fast8_t|\\Wdynamic_cast|^dynamic_cast|\\Wint_least8_t|^int_least8_t|\\Wint_fast8_t|^int_fast8_t|\\Wstatic_cast|^static_cast|\\Wsuseconds_t|^suseconds_t|\\Wconst_cast|^const_cast|\\Wuseconds_t|^useconds_t|\\Wconstinit|^constinit|\\Wco_return|^co_return|\\Wuintmax_t|^uintmax_t|\\Wuintmax_t|^uintmax_t|\\Wuintmax_t|^uintmax_t|\\Wconstexpr|^constexpr|\\Wconsteval|^consteval|\\Wconstexpr|^constexpr|\\Wconstexpr|^constexpr|\\Wconsteval|^consteval|\\Wprotected|^protected|\\Wnamespace|^namespace|\\Wblksize_t|^blksize_t|\\Wco_return|^co_return|\\Win_addr_t|^in_addr_t|\\Win_port_t|^in_port_t|\\Wuintptr_t|^uintptr_t|\\Wtemplate|^template|\\Wnoexcept|^noexcept|\\Wnoexcept|^noexcept|\\Wcontinue|^continue|\\Wco_await|^co_await|\\Wco_yield|^co_yield|\\Wunsigned|^unsigned|\\Wu_quad_t|^u_quad_t|\\Wblkcnt_t|^blkcnt_t|\\Wuint16_t|^uint16_t|\\Wuint32_t|^uint32_t|\\Wuint64_t|^uint64_t|\\Wintptr_t|^intptr_t|\\Wintmax_t|^intmax_t|\\Wintmax_t|^intmax_t|\\Wvolatile|^volatile|\\Wregister|^register|\\Wrestrict|^restrict|\\Wexplicit|^explicit|\\Wvolatile|^volatile|\\Wnoexcept|^noexcept|\\Woperator|^operator|\\Wdecltype|^decltype|\\Wtypename|^typename|\\Wrequires|^requires|\\Wco_await|^co_await|\\Wco_yield|^co_yield|\\Wreflexpr|^reflexpr|\\Wswblk_t|^swblk_t|\\Wvirtual|^virtual|\\Wssize_t|^ssize_t|\\Wconcept|^concept|\\Wmutable|^mutable|\\Wfixpt_t|^fixpt_t|\\Wint16_t|^int16_t|\\Wint32_t|^int32_t|\\Wint64_t|^int64_t|\\Wuint8_t|^uint8_t|\\Wtypedef|^typedef|\\Wdaddr_t|^daddr_t|\\Wcaddr_t|^caddr_t|\\Wqaddr_t|^qaddr_t|\\Wdefault|^default|\\Wnlink_t|^nlink_t|\\Wsegsz_t|^segsz_t|\\Wu_short|^u_short|\\Wwchar_t|^wchar_t|\\Wprivate|^private|\\W__asm__|^__asm__|\\Walignas|^alignas|\\Walignof|^alignof|\\Wmutable|^mutable|\\Wnullptr|^nullptr|\\Wclock_t|^clock_t|\\Wmode_t|^mode_t|\\Wpublic|^public|\\Wsize_t|^size_t|\\Wdouble|^double|\\Wquad_t|^quad_t|\\Wstatic|^static|\\Wtime_t|^time_t|\\Wmodule|^module|\\Wimport|^import|\\Wexport|^export|\\Wextern|^extern|\\Winline|^inline|\\Wxor_eq|^xor_eq|\\Wand_eq|^and_eq|\\Wreturn|^return|\\Wfriend|^friend|\\Wnot_eq|^not_eq|\\Wsigned|^signed|\\Wstruct|^struct|\\Wint8_t|^int8_t|\\Wushort|^ushort|\\Wswitch|^switch|\\Wu_long|^u_long|\\Wtypeid|^typeid|\\Wu_char|^u_char|\\Wsizeof|^sizeof|\\Wbitand|^bitand|\\Wdelete|^delete|\\Wino_t|^ino_t|\\Wkey_t|^key_t|\\Wpid_t|^pid_t|\\Woff_t|^off_t|\\Wuid_t|^uid_t|\\Wshort|^short|\\Wbreak|^break|\\Wcatch|^catch|\\Wcompl|^compl|\\Wwhile|^while|\\Wfalse|^false|\\Wclass|^class|\\Wunion|^union|\\Wconst|^const|\\Wor_eq|^or_eq|\\Wconst|^const|\\Wthrow|^throw|\\Wbitor|^bitor|\\Wu_int|^u_int|\\Wusing|^using|\\Wdiv_t|^div_t|\\Wdev_t|^dev_t|\\Wgid_t|^gid_t|\\Wfloat|^float|\\Wlong|^long|\\Wgoto|^goto|\\Wuint|^uint|\\Wid_t|^id_t|\\Wcase|^case|\\Wauto|^auto|\\Wvoid|^void|\\Wenum|^enum|\\Wtrue|^true|\\Wchar|^char|\\Wid_t|^id_t|\\WNULL|^NULL|\\Wthis|^this|\\Wbool|^bool|\\Welse|^else|\\Wfor|^for|\\Wnew|^new|\\Wnot|^not|\\Wxor|^xor|\\Wand|^and|\\Wasm|^asm|\\Wint|^int|\\Wtry|^try|\\Wdo|^do|\\Wif|^if|\\Wor|^or)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(((?<!<)<(?!<)(?:(?:(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/)))|(?:\"(?:[^\"]*|\\\\\")\")|(?:'(?:[^']*|\\\\')')|\\g<11>|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_call_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {},
+ "5": {
+ "name": "entity.name.function.call.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "10": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "11": {},
+ "12": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "15": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.call.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "function_definition": {
+ "begin": "(?:(?:^|\\G|(?<=;|\\}))|(?<=>|\\*\\/))\\s*+(?:((?<!\\w)template(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?<!\\w)(?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))|(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*)(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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<52>|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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<52>|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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<52>|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\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|\\Watomic_cancel|^atomic_cancel|\\Watomic_commit|^atomic_commit|\\Wuint_least8_t|^uint_least8_t|\\Wuint_fast16_t|^uint_fast16_t|\\Wuint_fast32_t|^uint_fast32_t|\\Wint_least16_t|^int_least16_t|\\Wint_least32_t|^int_least32_t|\\Wint_least64_t|^int_least64_t|\\Wuint_fast64_t|^uint_fast64_t|\\Wthread_local|^thread_local|\\Wint_fast16_t|^int_fast16_t|\\Wint_fast32_t|^int_fast32_t|\\Wint_fast64_t|^int_fast64_t|\\Wsynchronized|^synchronized|\\Wuint_fast8_t|^uint_fast8_t|\\Wdynamic_cast|^dynamic_cast|\\Wint_least8_t|^int_least8_t|\\Wint_fast8_t|^int_fast8_t|\\Wstatic_cast|^static_cast|\\Wsuseconds_t|^suseconds_t|\\Wconst_cast|^const_cast|\\Wuseconds_t|^useconds_t|\\Wconstinit|^constinit|\\Wco_return|^co_return|\\Wuintmax_t|^uintmax_t|\\Wuintmax_t|^uintmax_t|\\Wuintmax_t|^uintmax_t|\\Wconstexpr|^constexpr|\\Wconsteval|^consteval|\\Wconstexpr|^constexpr|\\Wconstexpr|^constexpr|\\Wconsteval|^consteval|\\Wprotected|^protected|\\Wnamespace|^namespace|\\Wblksize_t|^blksize_t|\\Wco_return|^co_return|\\Win_addr_t|^in_addr_t|\\Win_port_t|^in_port_t|\\Wuintptr_t|^uintptr_t|\\Wtemplate|^template|\\Wnoexcept|^noexcept|\\Wnoexcept|^noexcept|\\Wcontinue|^continue|\\Wco_await|^co_await|\\Wco_yield|^co_yield|\\Wunsigned|^unsigned|\\Wu_quad_t|^u_quad_t|\\Wblkcnt_t|^blkcnt_t|\\Wuint16_t|^uint16_t|\\Wuint32_t|^uint32_t|\\Wuint64_t|^uint64_t|\\Wintptr_t|^intptr_t|\\Wintmax_t|^intmax_t|\\Wintmax_t|^intmax_t|\\Wvolatile|^volatile|\\Wregister|^register|\\Wrestrict|^restrict|\\Wexplicit|^explicit|\\Wvolatile|^volatile|\\Wnoexcept|^noexcept|\\Woperator|^operator|\\Wdecltype|^decltype|\\Wtypename|^typename|\\Wrequires|^requires|\\Wco_await|^co_await|\\Wco_yield|^co_yield|\\Wreflexpr|^reflexpr|\\Wswblk_t|^swblk_t|\\Wvirtual|^virtual|\\Wssize_t|^ssize_t|\\Wconcept|^concept|\\Wmutable|^mutable|\\Wfixpt_t|^fixpt_t|\\Wint16_t|^int16_t|\\Wint32_t|^int32_t|\\Wint64_t|^int64_t|\\Wuint8_t|^uint8_t|\\Wtypedef|^typedef|\\Wdaddr_t|^daddr_t|\\Wcaddr_t|^caddr_t|\\Wqaddr_t|^qaddr_t|\\Wdefault|^default|\\Wnlink_t|^nlink_t|\\Wsegsz_t|^segsz_t|\\Wu_short|^u_short|\\Wwchar_t|^wchar_t|\\Wprivate|^private|\\W__asm__|^__asm__|\\Walignas|^alignas|\\Walignof|^alignof|\\Wmutable|^mutable|\\Wnullptr|^nullptr|\\Wclock_t|^clock_t|\\Wmode_t|^mode_t|\\Wpublic|^public|\\Wsize_t|^size_t|\\Wdouble|^double|\\Wquad_t|^quad_t|\\Wstatic|^static|\\Wtime_t|^time_t|\\Wmodule|^module|\\Wimport|^import|\\Wexport|^export|\\Wextern|^extern|\\Winline|^inline|\\Wxor_eq|^xor_eq|\\Wand_eq|^and_eq|\\Wreturn|^return|\\Wfriend|^friend|\\Wnot_eq|^not_eq|\\Wsigned|^signed|\\Wstruct|^struct|\\Wint8_t|^int8_t|\\Wushort|^ushort|\\Wswitch|^switch|\\Wu_long|^u_long|\\Wtypeid|^typeid|\\Wu_char|^u_char|\\Wsizeof|^sizeof|\\Wbitand|^bitand|\\Wdelete|^delete|\\Wino_t|^ino_t|\\Wkey_t|^key_t|\\Wpid_t|^pid_t|\\Woff_t|^off_t|\\Wuid_t|^uid_t|\\Wshort|^short|\\Wbreak|^break|\\Wcatch|^catch|\\Wcompl|^compl|\\Wwhile|^while|\\Wfalse|^false|\\Wclass|^class|\\Wunion|^union|\\Wconst|^const|\\Wor_eq|^or_eq|\\Wconst|^const|\\Wthrow|^throw|\\Wbitor|^bitor|\\Wu_int|^u_int|\\Wusing|^using|\\Wdiv_t|^div_t|\\Wdev_t|^dev_t|\\Wgid_t|^gid_t|\\Wfloat|^float|\\Wlong|^long|\\Wgoto|^goto|\\Wuint|^uint|\\Wid_t|^id_t|\\Wcase|^case|\\Wauto|^auto|\\Wvoid|^void|\\Wenum|^enum|\\Wtrue|^true|\\Wchar|^char|\\Wid_t|^id_t|\\WNULL|^NULL|\\Wthis|^this|\\Wbool|^bool|\\Welse|^else|\\Wfor|^for|\\Wnew|^new|\\Wnot|^not|\\Wxor|^xor|\\Wand|^and|\\Wasm|^asm|\\Wint|^int|\\Wtry|^try|\\Wdo|^do|\\Wif|^if|\\Wor|^or)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\()",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.function.definition.cpp"
+ },
+ "1": {
+ "name": "storage.type.template.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "((?<!\\w)(?:(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))|(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.$1.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "8": {
+ "name": "storage.modifier.$8.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "11": {
+ "name": "comment.block.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "13": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "21": {
+ "name": "comment.block.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "23": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "24": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "25": {},
+ "26": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "27": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "28": {
+ "name": "comment.block.cpp"
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "30": {},
+ "31": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "32": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "33": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "34": {
+ "name": "comment.block.cpp"
+ },
+ "35": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "37": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "38": {
+ "name": "comment.block.cpp"
+ },
+ "39": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "40": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "41": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "42": {
+ "name": "comment.block.cpp"
+ },
+ "43": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "44": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "45": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "46": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "47": {
+ "name": "comment.block.cpp"
+ },
+ "48": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "49": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_definition_inner_generated"
+ }
+ ]
+ },
+ "50": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
+ },
+ "51": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "52": {},
+ "53": {
+ "name": "entity.name.function.definition.cpp"
+ },
+ "54": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "55": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "56": {
+ "name": "comment.block.cpp"
+ },
+ "57": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.function.definition.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.cpp"
+ }
+ },
+ "name": "meta.head.function.definition.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.begin.bracket.round.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.cpp"
+ }
+ },
+ "contentName": "meta.function.definition.parameters",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#parameter_or_maybe_value"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": "(?<=^|\\))(?:\\s+)?(->)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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<:.]))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.function.return-type.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp"
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "18": {},
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "21": {
+ "name": "comment.block.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "23": {}
+ }
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.cpp"
+ }
+ },
+ "name": "meta.body.function.definition.cpp",
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.function.definition.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "function_parameter_context": {
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#parameter"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ },
+ "function_pointer": {
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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+)?(\\()",
+ "end": "(\\))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=[{=,);>]|\\n)(?!\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "13": {},
+ "14": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "16": {
+ "name": "comment.block.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "18": {},
+ "19": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "21": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp"
+ },
+ "23": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "24": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "25": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "26": {
+ "name": "comment.block.cpp"
+ },
+ "27": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "28": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "30": {
+ "name": "comment.block.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "32": {
+ "name": "punctuation.section.parens.begin.bracket.round.function.pointer.cpp"
+ },
+ "33": {
+ "name": "punctuation.definition.function.pointer.dereference.cpp"
+ },
+ "34": {
+ "name": "variable.other.definition.pointer.function.cpp"
+ },
+ "35": {
+ "name": "punctuation.definition.begin.bracket.square.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "37": {
+ "name": "punctuation.definition.end.bracket.square.cpp"
+ },
+ "38": {
+ "name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
+ },
+ "39": {
+ "name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.end.bracket.round.function.pointer.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ }
+ ]
+ },
+ "function_pointer_parameter": {
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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+)?(\\()",
+ "end": "(\\))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=[{=,);>]|\\n)(?!\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "13": {},
+ "14": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "16": {
+ "name": "comment.block.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "18": {},
+ "19": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "21": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp"
+ },
+ "23": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "24": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "25": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "26": {
+ "name": "comment.block.cpp"
+ },
+ "27": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "28": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "30": {
+ "name": "comment.block.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "32": {
+ "name": "punctuation.section.parens.begin.bracket.round.function.pointer.cpp"
+ },
+ "33": {
+ "name": "punctuation.definition.function.pointer.dereference.cpp"
+ },
+ "34": {
+ "name": "variable.parameter.pointer.function.cpp"
+ },
+ "35": {
+ "name": "punctuation.definition.begin.bracket.square.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "37": {
+ "name": "punctuation.definition.end.bracket.square.cpp"
+ },
+ "38": {
+ "name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
+ },
+ "39": {
+ "name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.end.bracket.round.function.pointer.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ }
+ ]
+ },
+ "functional_specifiers_pre_parameters": {
+ "match": "(?<!\\w)(?:(?:constexpr)|(?:consteval)|(?:explicit)|(?:mutable)|(?:virtual)|(?:inline)|(?:friend))(?!\\w)",
+ "name": "storage.modifier.specifier.functional.pre-parameters.$0.cpp"
+ },
+ "gcc_attributes": {
+ "begin": "__attribute(?:__)?\\s*\\(\\s*\\(",
+ "end": "\\)\\s*\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.attribute.begin.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.attribute.end.cpp"
+ }
+ },
+ "name": "support.other.attribute.cpp",
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ {
+ "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))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.using.directive.cpp"
+ },
+ "2": {
+ "name": "entity.name.namespace.cpp"
+ }
+ }
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.attribute.cpp"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.accessor.attribute.cpp"
+ },
+ {
+ "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)(?=::)",
+ "name": "entity.name.namespace.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.other.attribute.$0.cpp"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ "goto_statement": {
+ "match": "((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)goto(?!\\w))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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}))*)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.control.goto.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.label.call.cpp"
+ }
+ }
+ },
+ "identifier": {
+ "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}))*"
+ },
+ "include": {
+ "match": "^((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((#)(?:\\s+)?((?:include|include_next))\\b)(?:\\s+)?(?:(?:(?:((<)[^>]*(>?)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:\\n|$)|(?=\\/\\/)))|((\\\")[^\\\"]*(\\\"?)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:\\n|$)|(?=\\/\\/))))|(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:\\n|$)|(?=(?:\\/\\/|;)))))|((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:\\n|$)|(?=(?:\\/\\/|;))))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.control.directive.$5.cpp"
+ },
+ "4": {
+ "name": "punctuation.definition.directive.cpp"
+ },
+ "6": {
+ "name": "string.quoted.other.lt-gt.include.cpp"
+ },
+ "7": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "8": {
+ "name": "punctuation.definition.string.end.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "11": {
+ "name": "string.quoted.double.include.cpp"
+ },
+ "12": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "13": {
+ "name": "punctuation.definition.string.end.cpp"
+ },
+ "14": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "15": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "16": {
+ "name": "entity.name.other.preprocessor.macro.include.cpp"
+ },
+ "17": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "21": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "22": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "name": "meta.preprocessor.include.cpp"
+ },
+ "inheritance_context": {
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.comma.inheritance.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:protected)|(?:private)|(?:public))(?!\\w)",
+ "name": "storage.type.modifier.access.$0.cpp"
+ },
+ {
+ "match": "(?<!\\w)virtual(?!\\w)",
+ "name": "storage.type.modifier.virtual.cpp"
+ },
+ {
+ "match": "(?<=protected|virtual|private|public|,|:)(?:\\s+)?(?!(?:(?:(?:protected)|(?:private)|(?:public))|virtual))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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<:.]))",
+ "captures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {},
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {}
+ }
+ }
+ ]
+ },
+ "inline_builtin_storage_type": {
+ "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)",
+ "captures": {
+ "1": {
+ "name": "storage.type.primitive.cpp storage.type.built-in.primitive.cpp"
+ },
+ "2": {
+ "name": "storage.type.cpp storage.type.built-in.cpp"
+ },
+ "3": {
+ "name": "support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp"
+ },
+ "4": {
+ "name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
+ }
+ }
+ },
+ "inline_comment": {
+ "match": "(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ "invalid_comment_end": {
+ "match": "\\*\\/",
+ "name": "invalid.illegal.unexpected.punctuation.definition.comment.end.cpp"
+ },
+ "label": {
+ "match": "((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "3": {
+ "name": "entity.name.label.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.separator.label.cpp"
+ }
+ }
+ },
+ "lambdas": {
+ "begin": "(?:(?<=[^\\s]|^)(?<![\\w\\]\\)\\[\\*&\">])|(?<=\\Wreturn|^return))(?:\\s+)?(\\[(?!\\[| *+\"| *+\\d))((?:[^\\[\\]]|((?<!\\[)\\[(?!\\[)(?:[^\\[\\]]*+\\g<3>?)++\\]))*+)(\\](?!((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))[\\[\\];=]))",
+ "end": "(?<=[;}])",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.capture.begin.lambda.cpp"
+ },
+ "2": {
+ "name": "meta.lambda.capture.cpp",
+ "patterns": [
+ {
+ "include": "#the_this_keyword"
+ },
+ {
+ "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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?=\\]|\\z|$)|(,))|(\\=))",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.capture.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ },
+ "7": {
+ "name": "keyword.operator.assignment.cpp"
+ }
+ }
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "3": {},
+ "4": {
+ "name": "punctuation.definition.capture.end.lambda.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.begin.lambda.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.lambda.cpp"
+ }
+ },
+ "name": "meta.function.definition.parameters.lambda.cpp",
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ }
+ ]
+ },
+ {
+ "match": "(?<!\\w)(?:(?:constexpr)|(?:consteval)|(?:mutable))(?!\\w)",
+ "name": "storage.modifier.lambda.$0.cpp"
+ },
+ {
+ "begin": "->",
+ "end": "(?=\\{)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.lambda.return-type.cpp"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "\\S+",
+ "name": "storage.type.return-type.lambda.cpp"
+ }
+ ]
+ },
+ {
+ "begin": "\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.lambda.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.lambda.cpp"
+ }
+ },
+ "name": "meta.function.definition.body.lambda.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "language_constants": {
+ "match": "(?<!\\w)(?:(?:nullptr)|(?:false)|(?:NULL)|(?:true))(?!\\w)",
+ "name": "constant.language.$0.cpp"
+ },
+ "line": {
+ "begin": "^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(#)(?:\\s+)?line\\b",
+ "end": "(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.directive.line.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "punctuation.definition.directive.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.preprocessor.line.cpp",
+ "patterns": [
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#preprocessor_number_literal"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ "line_comment": {
+ "begin": "\\s*+(\\/\\/)",
+ "end": "(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "comment.line.double-slash.cpp",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ "line_continuation_character": {
+ "match": "\\\\\\n",
+ "name": "constant.character.escape.line-continuation.cpp"
+ },
+ "macro": {
+ "begin": "(^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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))",
+ "end": "(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.define.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.definition.directive.cpp"
+ },
+ "7": {
+ "name": "entity.name.function.preprocessor.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.preprocessor.macro.cpp",
+ "patterns": [
+ {
+ "match": "\\G(?:\\s+)?(\\()([^\\(]*)(\\))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.parameters.begin.preprocessor.cpp"
+ },
+ "2": {
+ "name": "meta.function.preprocessor.parameters.cpp",
+ "patterns": [
+ {
+ "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+)?",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.preprocessor.cpp"
+ }
+ }
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.parameters.cpp"
+ },
+ {
+ "match": "\\.\\.\\.",
+ "name": "punctuation.vararg-ellipses.variable.parameter.preprocessor.cpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.end.preprocessor.cpp"
+ }
+ }
+ },
+ {
+ "include": "#macro_context"
+ },
+ {
+ "include": "#macro_argument"
+ }
+ ]
+ },
+ "macro_argument": {
+ "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)",
+ "name": "variable.other.macro.argument.cpp"
+ },
+ "macro_context": {
+ "patterns": [
+ {
+ "include": "source.cpp.embedded.macro"
+ }
+ ]
+ },
+ "macro_name": {
+ "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)",
+ "name": "entity.name.function.preprocessor.cpp"
+ },
+ "member_access": {
+ "match": "(?:((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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[^\\w]|uint_least16_t[^\\w]|uint_least64_t[^\\w]|int_least32_t[^\\w]|int_least64_t[^\\w]|uint_fast32_t[^\\w]|uint_fast64_t[^\\w]|uint_least8_t[^\\w]|uint_fast16_t[^\\w]|int_least16_t[^\\w]|int_fast16_t[^\\w]|int_least8_t[^\\w]|uint_fast8_t[^\\w]|int_fast64_t[^\\w]|int_fast32_t[^\\w]|int_fast8_t[^\\w]|suseconds_t[^\\w]|useconds_t[^\\w]|in_addr_t[^\\w]|uintmax_t[^\\w]|uintmax_t[^\\w]|uintmax_t[^\\w]|in_port_t[^\\w]|uintptr_t[^\\w]|blksize_t[^\\w]|uint32_t[^\\w]|uint64_t[^\\w]|u_quad_t[^\\w]|intmax_t[^\\w]|intmax_t[^\\w]|unsigned[^\\w]|blkcnt_t[^\\w]|uint16_t[^\\w]|intptr_t[^\\w]|swblk_t[^\\w]|wchar_t[^\\w]|u_short[^\\w]|qaddr_t[^\\w]|caddr_t[^\\w]|daddr_t[^\\w]|fixpt_t[^\\w]|nlink_t[^\\w]|segsz_t[^\\w]|clock_t[^\\w]|ssize_t[^\\w]|int16_t[^\\w]|int32_t[^\\w]|int64_t[^\\w]|uint8_t[^\\w]|int8_t[^\\w]|mode_t[^\\w]|quad_t[^\\w]|ushort[^\\w]|u_long[^\\w]|u_char[^\\w]|double[^\\w]|signed[^\\w]|time_t[^\\w]|size_t[^\\w]|key_t[^\\w]|div_t[^\\w]|ino_t[^\\w]|uid_t[^\\w]|gid_t[^\\w]|off_t[^\\w]|pid_t[^\\w]|float[^\\w]|dev_t[^\\w]|u_int[^\\w]|short[^\\w]|bool[^\\w]|id_t[^\\w]|uint[^\\w]|long[^\\w]|char[^\\w]|void[^\\w]|auto[^\\w]|id_t[^\\w]|int[^\\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}))*\\b(?!\\())",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "3": {
+ "name": "variable.language.this.cpp"
+ },
+ "4": {
+ "name": "variable.other.object.access.cpp"
+ },
+ "5": {
+ "name": "punctuation.separator.dot-access.cpp"
+ },
+ "6": {
+ "name": "punctuation.separator.pointer-access.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "(?<=(?:\\.\\*|\\.|->|->\\*))(?:\\s+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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+)?))(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "variable.language.this.cpp"
+ },
+ "6": {
+ "name": "variable.other.object.property.cpp"
+ },
+ "7": {
+ "name": "punctuation.separator.dot-access.cpp"
+ },
+ "8": {
+ "name": "punctuation.separator.pointer-access.cpp"
+ }
+ }
+ },
+ {
+ "match": "(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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+)?))(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "variable.language.this.cpp"
+ },
+ "6": {
+ "name": "variable.other.object.access.cpp"
+ },
+ "7": {
+ "name": "punctuation.separator.dot-access.cpp"
+ },
+ "8": {
+ "name": "punctuation.separator.pointer-access.cpp"
+ }
+ }
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#method_access"
+ }
+ ]
+ },
+ "8": {
+ "name": "variable.other.property.cpp"
+ }
+ }
+ },
+ "memory_operators": {
+ "match": "((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:(?:(delete)(?:\\s+)?(\\[\\])|(delete))|(new))(?!\\w))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.operator.wordlike.cpp"
+ },
+ "4": {
+ "name": "keyword.operator.delete.array.cpp"
+ },
+ "5": {
+ "name": "keyword.operator.delete.array.bracket.cpp"
+ },
+ "6": {
+ "name": "keyword.operator.delete.cpp"
+ },
+ "7": {
+ "name": "keyword.operator.new.cpp"
+ }
+ }
+ },
+ "method_access": {
+ "begin": "(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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+)?(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "variable.language.this.cpp"
+ },
+ "6": {
+ "name": "variable.other.object.access.cpp"
+ },
+ "7": {
+ "name": "punctuation.separator.dot-access.cpp"
+ },
+ "8": {
+ "name": "punctuation.separator.pointer-access.cpp"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "(?<=(?:\\.\\*|\\.|->|->\\*))(?:\\s+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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+)?))(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "variable.language.this.cpp"
+ },
+ "6": {
+ "name": "variable.other.object.property.cpp"
+ },
+ "7": {
+ "name": "punctuation.separator.dot-access.cpp"
+ },
+ "8": {
+ "name": "punctuation.separator.pointer-access.cpp"
+ }
+ }
+ },
+ {
+ "match": "(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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+)?))(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "variable.language.this.cpp"
+ },
+ "6": {
+ "name": "variable.other.object.access.cpp"
+ },
+ "7": {
+ "name": "punctuation.separator.dot-access.cpp"
+ },
+ "8": {
+ "name": "punctuation.separator.pointer-access.cpp"
+ }
+ }
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#method_access"
+ }
+ ]
+ },
+ "10": {
+ "name": "entity.name.function.member.cpp"
+ },
+ "11": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.member.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.member.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "misc_keywords": {
+ "match": "((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)(?:(?:constinit)|(?:requires)|(?:typedef)|(?:concept)|(?:export)|(?:module))(?!\\w))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.other.$3.cpp"
+ }
+ }
+ },
+ "ms_attributes": {
+ "begin": "__declspec\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.attribute.begin.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.attribute.end.cpp"
+ }
+ },
+ "name": "support.other.attribute.cpp",
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ {
+ "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))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.using.directive.cpp"
+ },
+ "2": {
+ "name": "entity.name.namespace.cpp"
+ }
+ }
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.attribute.cpp"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.accessor.attribute.cpp"
+ },
+ {
+ "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)(?=::)",
+ "name": "entity.name.namespace.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.other.attribute.$0.cpp"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ "namespace_alias": {
+ "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|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.namespace.alias.cpp storage.type.namespace.alias.cpp"
+ },
+ "2": {
+ "name": "entity.name.namespace.alias.cpp"
+ },
+ "3": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "4": {
+ "name": "meta.declaration.namespace.alias.value.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_namespace_alias_inner_generated"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {
+ "name": "entity.name.namespace.cpp"
+ },
+ "10": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.declaration.namespace.alias.cpp"
+ },
+ "namespace_block": {
+ "begin": "((?<!\\w)namespace(?!\\w))",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.namespace.cpp"
+ },
+ "1": {
+ "name": "keyword.other.namespace.definition.cpp storage.type.namespace.definition.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.block.namespace.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.namespace.cpp"
+ }
+ },
+ "name": "meta.head.namespace.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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))?",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_namespace_block_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {},
+ "5": {
+ "name": "entity.name.namespace.cpp"
+ },
+ "6": {
+ "name": "punctuation.separator.scope-resolution.namespace.block.cpp"
+ },
+ "7": {
+ "name": "storage.modifier.inline.cpp"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.namespace.cpp"
+ }
+ },
+ "name": "meta.body.namespace.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.namespace.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "noexcept_operator": {
+ "begin": "((?<!\\w)noexcept(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.noexcept",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "number_literal": {
+ "match": "(?<!\\w)\\.?\\d(?:(?:[0-9a-zA-Z_\\.]|')|(?<=[eEpP])[+-])*",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "begin": "(?=.)",
+ "end": "$",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "patterns": [
+ {
+ "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*)?$)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.hexadecimal.cpp"
+ },
+ "2": {
+ "name": "constant.numeric.hexadecimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.cpp"
+ },
+ "4": {
+ "name": "constant.numeric.hexadecimal.cpp"
+ },
+ "5": {
+ "name": "constant.numeric.hexadecimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.separator.constant.numeric.cpp"
+ },
+ "7": {
+ "name": "keyword.other.unit.exponent.hexadecimal.cpp"
+ },
+ "8": {
+ "name": "keyword.operator.plus.exponent.hexadecimal.cpp"
+ },
+ "9": {
+ "name": "keyword.operator.minus.exponent.hexadecimal.cpp"
+ },
+ "10": {
+ "name": "constant.numeric.exponent.hexadecimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "11": {
+ "name": "keyword.other.suffix.literal.built-in.floating-point.cpp keyword.other.unit.suffix.floating-point.cpp"
+ },
+ "12": {
+ "name": "keyword.other.suffix.literal.user-defined.integer.cpp keyword.other.unit.user-defined.cpp"
+ }
+ }
+ },
+ {
+ "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*)?$)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.decimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.constant.numeric.cpp"
+ },
+ "3": {
+ "name": "constant.numeric.decimal.point.cpp"
+ },
+ "4": {
+ "name": "constant.numeric.decimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.separator.constant.numeric.cpp"
+ },
+ "6": {
+ "name": "keyword.other.unit.exponent.decimal.cpp"
+ },
+ "7": {
+ "name": "keyword.operator.plus.exponent.decimal.cpp"
+ },
+ "8": {
+ "name": "keyword.operator.minus.exponent.decimal.cpp"
+ },
+ "9": {
+ "name": "constant.numeric.exponent.decimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "10": {
+ "name": "keyword.other.suffix.literal.built-in.floating-point.cpp keyword.other.unit.suffix.floating-point.cpp"
+ },
+ "11": {
+ "name": "keyword.other.suffix.literal.user-defined.integer.cpp keyword.other.unit.user-defined.cpp"
+ }
+ }
+ },
+ {
+ "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*)?$)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.binary.cpp"
+ },
+ "2": {
+ "name": "constant.numeric.binary.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.cpp"
+ },
+ "4": {
+ "name": "keyword.other.suffix.literal.built-in.integer.cpp keyword.other.unit.suffix.integer.cpp"
+ },
+ "5": {
+ "name": "keyword.other.suffix.literal.user-defined.integer.cpp keyword.other.unit.user-defined.cpp"
+ }
+ }
+ },
+ {
+ "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*)?$)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.octal.cpp"
+ },
+ "2": {
+ "name": "constant.numeric.octal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.cpp"
+ },
+ "4": {
+ "name": "keyword.other.suffix.literal.built-in.integer.cpp keyword.other.unit.suffix.integer.cpp"
+ },
+ "5": {
+ "name": "keyword.other.suffix.literal.user-defined.integer.cpp keyword.other.unit.user-defined.cpp"
+ }
+ }
+ },
+ {
+ "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*)?$)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.hexadecimal.cpp"
+ },
+ "2": {
+ "name": "constant.numeric.hexadecimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.cpp"
+ },
+ "4": {
+ "name": "keyword.other.unit.exponent.hexadecimal.cpp"
+ },
+ "5": {
+ "name": "keyword.operator.plus.exponent.hexadecimal.cpp"
+ },
+ "6": {
+ "name": "keyword.operator.minus.exponent.hexadecimal.cpp"
+ },
+ "7": {
+ "name": "constant.numeric.exponent.hexadecimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "8": {
+ "name": "keyword.other.suffix.literal.built-in.integer.cpp keyword.other.unit.suffix.integer.cpp"
+ },
+ "9": {
+ "name": "keyword.other.suffix.literal.user-defined.integer.cpp keyword.other.unit.user-defined.cpp"
+ }
+ }
+ },
+ {
+ "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*)?$)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.decimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.constant.numeric.cpp"
+ },
+ "3": {
+ "name": "keyword.other.unit.exponent.decimal.cpp"
+ },
+ "4": {
+ "name": "keyword.operator.plus.exponent.decimal.cpp"
+ },
+ "5": {
+ "name": "keyword.operator.minus.exponent.decimal.cpp"
+ },
+ "6": {
+ "name": "constant.numeric.exponent.decimal.cpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.cpp"
+ }
+ ]
+ },
+ "7": {
+ "name": "keyword.other.suffix.literal.built-in.integer.cpp keyword.other.unit.suffix.integer.cpp"
+ },
+ "8": {
+ "name": "keyword.other.suffix.literal.user-defined.integer.cpp keyword.other.unit.user-defined.cpp"
+ }
+ }
+ },
+ {
+ "match": "(?:(?:[0-9a-zA-Z_\\.]|')|(?<=[eEpP])[+-])+",
+ "name": "invalid.illegal.constant.numeric.cpp"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "operator_overload": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?((?:__cdecl|__clrcall|__stdcall|__fastcall|__thiscall|__vectorcall)?)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?:\\[\\])?)))|(\"\")((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\<|\\()",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.function.definition.special.operator-overload.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "12": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "17": {},
+ "18": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "20": {
+ "name": "comment.block.cpp"
+ },
+ "21": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "22": {},
+ "23": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "24": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "25": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "26": {
+ "name": "comment.block.cpp"
+ },
+ "27": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "28": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "30": {
+ "name": "comment.block.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "32": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "33": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "34": {
+ "name": "comment.block.cpp"
+ },
+ "35": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "36": {
+ "name": "storage.type.modifier.calling-convention.cpp"
+ },
+ "37": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "38": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "39": {
+ "name": "comment.block.cpp"
+ },
+ "40": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "41": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "42": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "43": {
+ "name": "comment.block.cpp"
+ },
+ "44": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "45": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.operator.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "46": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "47": {},
+ "48": {
+ "name": "keyword.other.operator.overload.cpp"
+ },
+ "49": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "50": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "51": {
+ "name": "comment.block.cpp"
+ },
+ "52": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "53": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.operator-overload.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.operator-overload.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "54": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "55": {},
+ "56": {
+ "name": "entity.name.operator.cpp"
+ },
+ "57": {
+ "name": "entity.name.operator.type.cpp"
+ },
+ "58": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "entity.name.operator.type.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "entity.name.operator.type.reference.cpp"
+ }
+ ]
+ },
+ "59": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "60": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "61": {
+ "name": "comment.block.cpp"
+ },
+ "62": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "63": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "64": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "65": {
+ "name": "comment.block.cpp"
+ },
+ "66": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "67": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "68": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "69": {
+ "name": "comment.block.cpp"
+ },
+ "70": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "71": {
+ "name": "entity.name.operator.type.array.cpp"
+ },
+ "72": {
+ "name": "entity.name.operator.custom-literal.cpp"
+ },
+ "73": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "74": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "75": {
+ "name": "comment.block.cpp"
+ },
+ "76": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "77": {
+ "name": "entity.name.operator.custom-literal.cpp"
+ },
+ "78": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "79": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "80": {
+ "name": "comment.block.cpp"
+ },
+ "81": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.function.definition.special.operator-overload.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.function.definition.special.operator-overload.cpp"
+ }
+ },
+ "name": "meta.head.function.definition.special.operator-overload.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#template_call_range"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.begin.bracket.round.special.operator-overload.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.special.operator-overload.cpp"
+ }
+ },
+ "contentName": "meta.function.definition.parameters.special.operator-overload",
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "include": "#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "match": "(\\=)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(default)|(delete))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "keyword.other.default.function.cpp"
+ },
+ "7": {
+ "name": "keyword.other.delete.function.cpp"
+ }
+ }
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.function.definition.special.operator-overload.cpp"
+ }
+ },
+ "name": "meta.body.function.definition.special.operator-overload.cpp",
+ "patterns": [
+ {
+ "include": "#function_body_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.function.definition.special.operator-overload.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "begin": "((?<!\\w)sizeof(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.sizeof",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "begin": "((?<!\\w)alignof(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.alignof.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.alignof.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.alignof.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.alignof",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "begin": "((?<!\\w)alignas(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.alignas.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.alignas.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.alignas.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.alignas",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "begin": "((?<!\\w)typeid(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.typeid.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.typeid.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.typeid",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "begin": "((?<!\\w)noexcept(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.noexcept.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.noexcept.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.noexcept.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.noexcept",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "begin": "(\\bsizeof\\.\\.\\.)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.sizeof.variadic",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": "--",
+ "name": "keyword.operator.decrement.cpp"
+ },
+ {
+ "match": "\\+\\+",
+ "name": "keyword.operator.increment.cpp"
+ },
+ {
+ "match": "%=|\\+=|-=|\\*=|(?<!\\()\\/=",
+ "name": "keyword.operator.assignment.compound.cpp"
+ },
+ {
+ "match": "&=|\\^=|<<=|>>=|\\|=",
+ "name": "keyword.operator.assignment.compound.bitwise.cpp"
+ },
+ {
+ "match": "<<|>>",
+ "name": "keyword.operator.bitwise.shift.cpp"
+ },
+ {
+ "match": "!=|<=|>=|==|<|>",
+ "name": "keyword.operator.comparison.cpp"
+ },
+ {
+ "match": "&&|!|\\|\\|",
+ "name": "keyword.operator.logical.cpp"
+ },
+ {
+ "match": "&|\\||\\^|~",
+ "name": "keyword.operator.bitwise.cpp"
+ },
+ {
+ "include": "#assignment_operator"
+ },
+ {
+ "match": "%|\\*|\\/|-|\\+",
+ "name": "keyword.operator.arithmetic.cpp"
+ },
+ {
+ "include": "#ternary_operator"
+ }
+ ]
+ },
+ "over_qualified_types": {
+ "patterns": [
+ {
+ "match": "(\\bstruct)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:\\[((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))\\]((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=,|\\)|\\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.struct.parameter.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.struct.parameter.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "14": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "(\\benum)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:\\[((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))\\]((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=,|\\)|\\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.enum.parameter.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.enum.parameter.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "14": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "(\\bunion)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:\\[((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))\\]((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=,|\\)|\\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.union.parameter.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.union.parameter.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "14": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "(\\bclass)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:\\[((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))\\]((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=,|\\)|\\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.parameter.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.class.parameter.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "14": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "parameter": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\w)",
+ "end": "(?:(?=\\))|(,))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ }
+ },
+ "name": "meta.parameter.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#function_pointer_parameter"
+ },
+ {
+ "include": "#decltype"
+ },
+ {
+ "include": "#vararg_ellipses"
+ },
+ {
+ "match": "((?:((?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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(?<!\\Wthread_local|^thread_local|\\Wvolatile|^volatile|\\Wregister|^register|\\Wrestrict|^restrict|\\Wstatic|^static|\\Wextern|^extern|\\Wconst|^const)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=,|\\)|=)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#storage_types"
+ }
+ ]
+ },
+ "2": {
+ "name": "storage.modifier.specifier.parameter.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "name": "storage.type.primitive.cpp storage.type.built-in.primitive.cpp"
+ },
+ "12": {
+ "name": "storage.type.cpp storage.type.built-in.cpp"
+ },
+ "13": {
+ "name": "support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp"
+ },
+ "14": {
+ "name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
+ },
+ "15": {
+ "name": "entity.name.type.parameter.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#scope_resolution_parameter_inner_generated"
+ },
+ {
+ "match": "(?:(?:struct)|(?:class)|(?:union)|(?:enum))",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "begin": "(?<==)",
+ "end": "(?:(?=\\))|(,))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": "\\=",
+ "name": "keyword.operator.assignment.cpp"
+ },
+ {
+ "match": "(?<!\\s|\\(|,|:)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\)|,|\\[|=|\\n)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "variable.parameter.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.begin.bracket.square.array.type.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.square.array.type.cpp"
+ }
+ },
+ "name": "meta.bracket.square.array.cpp",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "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)",
+ "name": "entity.name.type.parameter.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ },
+ {
+ "match": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*)",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ "parameter_class": {
+ "match": "(\\bclass)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:\\[((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))\\]((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=,|\\)|\\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.parameter.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.class.parameter.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "14": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "parameter_enum": {
+ "match": "(\\benum)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:\\[((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))\\]((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=,|\\)|\\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.enum.parameter.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.enum.parameter.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "14": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "parameter_or_maybe_value": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\w)",
+ "end": "(?:(?=\\))|(,))",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ }
+ },
+ "name": "meta.parameter.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#function_pointer_parameter"
+ },
+ {
+ "include": "#memory_operators"
+ },
+ {
+ "include": "#builtin_storage_type_initilizer"
+ },
+ {
+ "include": "#curly_initializer"
+ },
+ {
+ "include": "#decltype"
+ },
+ {
+ "include": "#vararg_ellipses"
+ },
+ {
+ "match": "((?:((?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))+)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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(?<!\\Wthread_local|^thread_local|\\Wvolatile|^volatile|\\Wregister|^register|\\Wrestrict|^restrict|\\Wstatic|^static|\\Wextern|^extern|\\Wconst|^const)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=,|\\)|=)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#storage_types"
+ }
+ ]
+ },
+ "2": {
+ "name": "storage.modifier.specifier.parameter.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "name": "storage.type.primitive.cpp storage.type.built-in.primitive.cpp"
+ },
+ "12": {
+ "name": "storage.type.cpp storage.type.built-in.cpp"
+ },
+ "13": {
+ "name": "support.type.posix-reserved.pthread.cpp support.type.built-in.posix-reserved.pthread.cpp"
+ },
+ "14": {
+ "name": "support.type.posix-reserved.cpp support.type.built-in.posix-reserved.cpp"
+ },
+ "15": {
+ "name": "entity.name.type.parameter.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#function_call"
+ },
+ {
+ "include": "#scope_resolution_parameter_inner_generated"
+ },
+ {
+ "match": "(?:(?:struct)|(?:class)|(?:union)|(?:enum))",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "begin": "(?<==)",
+ "end": "(?:(?=\\))|(,))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "match": "(?<!\\s|\\(|,|:)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=(?:\\)|,|\\[|=|\\/\\/|(?:\\n|$)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "variable.parameter.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.begin.bracket.square.array.type.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.square.array.type.cpp"
+ }
+ },
+ "name": "meta.bracket.square.array.cpp",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ {
+ "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)",
+ "name": "entity.name.type.parameter.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ },
+ {
+ "match": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*)",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "7": {
+ "name": "comment.block.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "include": "#evaluation_context"
+ },
+ {
+ "include": "#ever_present_context"
+ }
+ ]
+ },
+ "parameter_struct": {
+ "match": "(\\bstruct)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:\\[((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))\\]((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=,|\\)|\\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.struct.parameter.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.struct.parameter.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "14": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "parameter_union": {
+ "match": "(\\bunion)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:\\[((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))\\]((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=,|\\)|\\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.union.parameter.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.union.parameter.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "14": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "19": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "parentheses": {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.cpp"
+ }
+ },
+ "name": "meta.parens.cpp",
+ "patterns": [
+ {
+ "include": "#over_qualified_types"
+ },
+ {
+ "match": "(?<!:):(?!:)",
+ "name": "punctuation.separator.colon.range-based.cpp"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "pragma": {
+ "begin": "^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(#)(?:\\s+)?pragma\\b",
+ "end": "(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.directive.pragma.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "punctuation.definition.directive.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.preprocessor.pragma.cpp",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "match": "[a-zA-Z_$][\\w\\-$]*",
+ "name": "entity.other.attribute-name.pragma.preprocessor.cpp"
+ },
+ {
+ "include": "#preprocessor_number_literal"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ "pragma_mark": {
+ "match": "(^((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(#)(?:\\s+)?pragma\\s+mark)\\s+(.*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.directive.pragma.pragma-mark.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.directive.cpp"
+ },
+ "5": {
+ "name": "entity.name.tag.pragma-mark.cpp"
+ }
+ },
+ "name": "meta.preprocessor.pragma.cpp"
+ },
+ "predefined_macros": {
+ "patterns": [
+ {
+ "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",
+ "captures": {
+ "1": {
+ "name": "entity.name.other.preprocessor.macro.predefined.$1.cpp"
+ }
+ }
+ },
+ {
+ "match": "\\b__([A-Z_]+)__\\b",
+ "name": "entity.name.other.preprocessor.macro.predefined.probably.$1.cpp"
+ }
+ ]
+ },
+ "preprocessor_conditional_context": {
+ "patterns": [
+ {
+ "include": "#preprocessor_conditional_defined"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#d9bc4796b0b_preprocessor_number_literal"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#predefined_macros"
+ },
+ {
+ "include": "#macro_name"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ "preprocessor_conditional_defined": {
+ "begin": "((?<!\\w)defined(?!\\w))(\\()",
+ "end": "(?:\\)|(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$)))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.conditional.defined.cpp"
+ },
+ "2": {
+ "name": "punctuation.section.parens.control.defined.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.control.defined.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#macro_name"
+ }
+ ]
+ },
+ "preprocessor_conditional_parentheses": {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.cpp"
+ }
+ },
+ "name": "meta.parens.preprocessor.conditional.cpp"
+ },
+ "preprocessor_conditional_range": {
+ "begin": "^((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(#)(?:\\s+)?((?:(?:ifndef|ifdef)|if))",
+ "end": "(?<!\\\\)(?:(?=\\n)|(?<=^\\n|[^\\\\]\\n)(?=$))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.directive.conditional.$6.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "punctuation.definition.directive.cpp"
+ },
+ "6": {}
+ },
+ "endCaptures": {},
+ "contentName": "meta.preprocessor.conditional",
+ "patterns": [
+ {
+ "include": "#preprocessor_conditional_context"
+ }
+ ]
+ },
+ "preprocessor_conditional_standalone": {
+ "match": "^((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(#)(?:\\s+)?((?<!\\w)(?:endif|else|elif)(?!\\w))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.directive.cpp"
+ }
+ },
+ "name": "keyword.control.directive.$4.cpp"
+ },
+ "preprocessor_context": {
+ "patterns": [
+ {
+ "include": "#pragma_mark"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "#include"
+ },
+ {
+ "include": "#line"
+ },
+ {
+ "include": "#diagnostic"
+ },
+ {
+ "include": "#undef"
+ },
+ {
+ "include": "#preprocessor_conditional_range"
+ },
+ {
+ "include": "#single_line_macro"
+ },
+ {
+ "include": "#macro"
+ },
+ {
+ "include": "#preprocessor_conditional_standalone"
+ },
+ {
+ "include": "#macro_argument"
+ }
+ ]
+ },
+ "qualified_type": {
+ "match": "\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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<:.])",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "name": "meta.qualified_type.cpp"
+ },
+ "qualifiers_and_specifiers_post_parameters": {
+ "match": "((?:(?:(?:(?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)(?<!\\w)(?:(?:override)|(?:volatile)|(?:noexcept)|(?:final)|(?:const))(?!\\w))+)(?=\\s*(?:\\{|;|\\n|\\r|=))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)(?:(?:override)|(?:volatile)|(?:noexcept)|(?:final)|(?:const))(?!\\w))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "storage.modifier.specifier.functional.post-parameters.$5.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution": {
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_function_call": {
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_call_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_function_call_inner_generated": {
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_call_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {},
+ "5": {
+ "name": "entity.name.scope-resolution.function.call.cpp"
+ },
+ "6": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "7": {},
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.call.cpp"
+ }
+ }
+ },
+ "scope_resolution_function_definition": {
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_definition_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_function_definition_inner_generated": {
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_definition_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {},
+ "5": {
+ "name": "entity.name.scope-resolution.function.definition.cpp"
+ },
+ "6": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "7": {},
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.cpp"
+ }
+ }
+ },
+ "scope_resolution_function_definition_operator_overload": {
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_definition_operator_overload_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_function_definition_operator_overload_inner_generated": {
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_function_definition_operator_overload_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {},
+ "5": {
+ "name": "entity.name.scope-resolution.function.definition.operator-overload.cpp"
+ },
+ "6": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "7": {},
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.function.definition.operator-overload.cpp"
+ }
+ }
+ },
+ "scope_resolution_inner_generated": {
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {},
+ "5": {
+ "name": "entity.name.scope-resolution.cpp"
+ },
+ "6": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "7": {},
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ }
+ }
+ },
+ "scope_resolution_namespace_alias": {
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_namespace_alias_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_namespace_alias_inner_generated": {
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_namespace_alias_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {},
+ "5": {
+ "name": "entity.name.scope-resolution.namespace.alias.cpp"
+ },
+ "6": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "7": {},
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.alias.cpp"
+ }
+ }
+ },
+ "scope_resolution_namespace_block": {
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_namespace_block_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_namespace_block_inner_generated": {
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_namespace_block_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {},
+ "5": {
+ "name": "entity.name.scope-resolution.namespace.block.cpp"
+ },
+ "6": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "7": {},
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.block.cpp"
+ }
+ }
+ },
+ "scope_resolution_namespace_using": {
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_namespace_using_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_namespace_using_inner_generated": {
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_namespace_using_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {},
+ "5": {
+ "name": "entity.name.scope-resolution.namespace.using.cpp"
+ },
+ "6": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "7": {},
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"
+ }
+ }
+ },
+ "scope_resolution_parameter": {
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_parameter_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_parameter_inner_generated": {
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_parameter_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {},
+ "5": {
+ "name": "entity.name.scope-resolution.parameter.cpp"
+ },
+ "6": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "7": {},
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.parameter.cpp"
+ }
+ }
+ },
+ "scope_resolution_template_call": {
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_template_call_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_template_call_inner_generated": {
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_template_call_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {},
+ "5": {
+ "name": "entity.name.scope-resolution.template.call.cpp"
+ },
+ "6": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "7": {},
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.call.cpp"
+ }
+ }
+ },
+ "scope_resolution_template_definition": {
+ "match": "(::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_template_definition_inner_generated"
+ }
+ ]
+ },
+ "1": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ }
+ }
+ },
+ "scope_resolution_template_definition_inner_generated": {
+ "match": "((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+)?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_template_definition_inner_generated"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "4": {},
+ "5": {
+ "name": "entity.name.scope-resolution.template.definition.cpp"
+ },
+ "6": {
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "7": {},
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.template.definition.cpp"
+ }
+ }
+ },
+ "semicolon": {
+ "match": ";",
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "simple_type": {
+ "match": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?",
+ "captures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "9": {},
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {},
+ "13": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "15": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "single_line_macro": {
+ "match": "^((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))#define.*(?<![\\\\])(?:\\n|$)",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#macro"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "sizeof_operator": {
+ "begin": "((?<!\\w)sizeof(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.sizeof.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.sizeof.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.sizeof",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "sizeof_variadic_operator": {
+ "begin": "(\\bsizeof\\.\\.\\.)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.sizeof.variadic.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.sizeof.variadic.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.sizeof.variadic.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.sizeof.variadic",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "square_brackets": {
+ "name": "meta.bracket.square.access",
+ "begin": "([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))?(\\[)(?!\\])",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.object"
+ },
+ "2": {
+ "name": "punctuation.definition.begin.bracket.square"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.square"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "standard_declares": {
+ "patterns": [
+ {
+ "match": "((?<!\\w)struct(?!\\w))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\S)(?![:{a-zA-Z])",
+ "captures": {
+ "1": {
+ "name": "storage.type.struct.declare.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.struct.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "((?<!\\w)union(?!\\w))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\S)(?![:{a-zA-Z])",
+ "captures": {
+ "1": {
+ "name": "storage.type.union.declare.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.union.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "((?<!\\w)enum(?!\\w))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\S)(?![:{a-zA-Z])",
+ "captures": {
+ "1": {
+ "name": "storage.type.enum.declare.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.enum.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "((?<!\\w)class(?!\\w))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\S)(?![:{a-zA-Z])",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.declare.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.class.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "static_assert": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)static_assert|_Static_assert(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "keyword.other.static_assert.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "10": {
+ "name": "punctuation.section.arguments.begin.bracket.round.static_assert.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.static_assert.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(,)(?:\\s+)?(?=(?:L|u8|u|U(?:\\s+)?\\\")?)",
+ "end": "(?=\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.comma.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.static_assert.message.cpp",
+ "patterns": [
+ {
+ "include": "#string_context"
+ }
+ ]
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "std_space": {
+ "match": "(?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "1": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "storage_specifiers": {
+ "match": "((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const))(?!\\w))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "3": {
+ "name": "storage.modifier.specifier.$3.cpp"
+ }
+ }
+ },
+ "storage_types": {
+ "patterns": [
+ {
+ "include": "#storage_specifiers"
+ },
+ {
+ "include": "#inline_builtin_storage_type"
+ },
+ {
+ "include": "#decltype"
+ },
+ {
+ "include": "#typename"
+ }
+ ]
+ },
+ "string_context": {
+ "patterns": [
+ {
+ "begin": "((?:u|u8|U|L)?)\"",
+ "end": "(\")(?:((?:[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-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "1": {
+ "name": "meta.encoding.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.cpp"
+ },
+ "2": {
+ "name": "keyword.other.suffix.literal.user-defined.reserved.string.cpp"
+ },
+ "3": {
+ "name": "keyword.other.suffix.literal.user-defined.string.cpp"
+ }
+ },
+ "name": "string.quoted.double.cpp",
+ "patterns": [
+ {
+ "match": "(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8})",
+ "name": "constant.character.escape.cpp"
+ },
+ {
+ "match": "\\\\['\"?\\\\abfnrtv]",
+ "name": "constant.character.escape.cpp"
+ },
+ {
+ "match": "\\\\[0-7]{1,3}",
+ "name": "constant.character.escape.cpp"
+ },
+ {
+ "match": "(?:(\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\x[0-9a-fA-F]*|\\\\x)))",
+ "captures": {
+ "1": {
+ "name": "constant.character.escape.cpp"
+ },
+ "2": {
+ "name": "invalid.illegal.unknown-escape.cpp"
+ }
+ }
+ },
+ {
+ "include": "#string_escapes_context_c"
+ }
+ ]
+ },
+ {
+ "begin": "(?<![0-9A-Fa-f])((?:u|u8|U|L)?)'",
+ "end": "(')(?:((?:[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-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "1": {
+ "name": "meta.encoding.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.cpp"
+ },
+ "2": {
+ "name": "keyword.other.suffix.literal.user-defined.reserved.character.cpp"
+ },
+ "3": {
+ "name": "keyword.other.suffix.literal.user-defined.character.cpp"
+ }
+ },
+ "name": "string.quoted.single.cpp",
+ "patterns": [
+ {
+ "match": "(?:(\\\\x0*[0-9a-fA-F]{2}(?![0-9a-fA-F]))|((?:\\\\x[0-9a-fA-F]*|\\\\x)))",
+ "captures": {
+ "1": {
+ "name": "constant.character.escape.cpp"
+ },
+ "2": {
+ "name": "invalid.illegal.unknown-escape.cpp"
+ }
+ }
+ },
+ {
+ "include": "#string_escapes_context_c"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "((?:[uUL]8?)?R)\\\"(?:(?:_r|re)|regex)\\(",
+ "end": "\\)(?:(?:_r|re)|regex)\\\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "1": {
+ "name": "meta.encoding.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cpp"
+ }
+ },
+ "name": "string.quoted.double.raw.regex.cpp",
+ "patterns": [
+ {
+ "include": "source.regexp.python"
+ }
+ ]
+ },
+ {
+ "begin": "((?:[uUL]8?)?R)\\\"(?:glsl|GLSL)\\(",
+ "end": "\\)(?:glsl|GLSL)\\\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "1": {
+ "name": "meta.encoding.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cpp"
+ }
+ },
+ "name": "meta.string.quoted.double.raw.glsl.cpp",
+ "patterns": [
+ {
+ "include": "source.glsl"
+ }
+ ]
+ },
+ {
+ "begin": "((?:[uUL]8?)?R)\\\"(?:[pP]?(?:sql|SQL)|d[dm]l)\\(",
+ "end": "\\)(?:[pP]?(?:sql|SQL)|d[dm]l)\\\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cpp"
+ },
+ "1": {
+ "name": "meta.encoding.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cpp"
+ }
+ },
+ "name": "meta.string.quoted.double.raw.sql.cpp",
+ "patterns": [
+ {
+ "include": "source.sql"
+ }
+ ]
+ },
+ {
+ "begin": "((?:u|u8|U|L)?R)\"(?:([^ ()\\\\\\t]{0,16})|([^ ()\\\\\\t]*))\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin"
+ },
+ "1": {
+ "name": "meta.encoding"
+ },
+ "3": {
+ "name": "invalid.illegal.delimiter-too-long"
+ }
+ },
+ "end": "(\\)\\2(\\3)\")(?:((?:[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-Z0-9_]|(?:\\\\u[0-9a-fA-F]{4}|\\\\U[0-9a-fA-F]{8}))*))?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end"
+ },
+ "2": {
+ "name": "invalid.illegal.delimiter-too-long"
+ },
+ "3": {
+ "name": "keyword.other.suffix.literal.user-defined.reserved.string.cpp"
+ },
+ "4": {
+ "name": "keyword.other.suffix.literal.user-defined.string.cpp"
+ }
+ },
+ "name": "string.quoted.double.raw"
+ }
+ ]
+ },
+ "string_escapes_context_c": {
+ "patterns": [
+ {
+ "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} )",
+ "name": "constant.character.escape"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unknown-escape"
+ },
+ {
+ "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",
+ "name": "constant.other.placeholder"
+ }
+ ]
+ },
+ "struct_block": {
+ "begin": "((?<!\\w)struct(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.struct.cpp"
+ },
+ "1": {
+ "name": "storage.type.$1.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.struct.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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}))*",
+ "name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "20": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.block.struct.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.struct.cpp"
+ }
+ },
+ "name": "meta.head.struct.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.struct.cpp"
+ }
+ },
+ "name": "meta.body.struct.cpp",
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.struct.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "struct_declare": {
+ "match": "((?<!\\w)struct(?!\\w))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\S)(?![:{a-zA-Z])",
+ "captures": {
+ "1": {
+ "name": "storage.type.struct.declare.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.struct.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "switch_conditional_parentheses": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "punctuation.section.parens.begin.bracket.round.conditional.switch.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.conditional.switch.cpp"
+ }
+ },
+ "name": "meta.conditional.switch.cpp",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "switch_statement": {
+ "begin": "((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)switch(?!\\w))",
+ "end": "(?:(?<=\\}|%>|\\?\\?>)|(?=[;>\\[\\]=]))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.switch.cpp"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "5": {
+ "name": "keyword.control.switch.cpp"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.block.switch.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.switch.cpp"
+ }
+ },
+ "name": "meta.head.switch.cpp",
+ "patterns": [
+ {
+ "include": "#switch_conditional_parentheses"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.switch.cpp"
+ }
+ },
+ "name": "meta.body.switch.cpp",
+ "patterns": [
+ {
+ "include": "#default_statement"
+ },
+ {
+ "include": "#case_statement"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.switch.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "template_argument_defaulted": {
+ "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+)?(\\=)",
+ "captures": {
+ "1": {
+ "name": "storage.type.template.argument.$1.cpp"
+ },
+ "2": {
+ "name": "entity.name.type.template.cpp"
+ },
+ "3": {
+ "name": "keyword.operator.assignment.cpp"
+ }
+ }
+ },
+ "template_call_context": {
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#template_call_range"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "include": "#scope_resolution_template_call_inner_generated"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#comma_in_template_argument"
+ },
+ {
+ "include": "#qualified_type"
+ }
+ ]
+ },
+ "template_call_innards": {
+ "match": "((?<!<)<(?!<)(?:(?:(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/)))|(?:\"(?:[^\"]*|\\\\\")\")|(?:'(?:[^']*|\\\\')')|\\g<1>|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp"
+ },
+ "template_call_range": {
+ "begin": "<",
+ "end": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ "template_definition": {
+ "begin": "(?<!\\w)(template)(?:\\s+)?(<)",
+ "end": ">",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.template.cpp"
+ },
+ "2": {
+ "name": "punctuation.section.angle-brackets.begin.template.definition.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.definition.cpp"
+ }
+ },
+ "name": "meta.template.definition.cpp",
+ "patterns": [
+ {
+ "begin": "(?<=\\w)(?:\\s+)?<",
+ "end": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "include": "#template_definition_context"
+ }
+ ]
+ },
+ "template_definition_argument": {
+ "match": "((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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}))*))|(?<!\\w)(template)(?:\\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+)?((?:(?:[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+)?(class|typename)(?:\\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+)?(?:[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}))*)?(?:(,)|(?=>|$))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "3": {
+ "name": "storage.type.template.argument.$3.cpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "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}))*",
+ "name": "storage.type.template.argument.$0.cpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "entity.name.type.template.cpp"
+ },
+ "6": {
+ "name": "storage.type.template.argument.$6.cpp"
+ },
+ "7": {
+ "name": "punctuation.vararg-ellipses.template.definition.cpp"
+ },
+ "8": {
+ "name": "entity.name.type.template.cpp"
+ },
+ "9": {
+ "name": "storage.type.template.cpp"
+ },
+ "10": {
+ "name": "punctuation.section.angle-brackets.begin.template.definition.cpp"
+ },
+ "11": {
+ "name": "storage.type.template.argument.$11.cpp"
+ },
+ "12": {
+ "name": "entity.name.type.template.cpp"
+ },
+ "13": {
+ "name": "punctuation.section.angle-brackets.end.template.definition.cpp"
+ },
+ "14": {
+ "name": "storage.type.template.argument.$14.cpp"
+ },
+ "15": {
+ "name": "entity.name.type.template.cpp"
+ },
+ "16": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "17": {
+ "name": "punctuation.separator.delimiter.comma.template.argument.cpp"
+ }
+ }
+ },
+ "template_definition_context": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_template_definition_inner_generated"
+ },
+ {
+ "include": "#template_definition_argument"
+ },
+ {
+ "include": "#template_argument_defaulted"
+ },
+ {
+ "include": "#template_call_innards"
+ },
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "template_explicit_instantiation": {
+ "match": "(?<!\\w)(?:(extern)\\s+)?(template)\\s+",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.specifier.extern.cpp"
+ },
+ "2": {
+ "name": "storage.type.template.cpp"
+ }
+ },
+ "name": "meta.template.explicit-instantiation.cpp"
+ },
+ "template_isolated_definition": {
+ "match": "(?<!\\w)(template)(?:\\s+)?(<)(.*)(>)(?:\\s+)?$",
+ "captures": {
+ "1": {
+ "name": "storage.type.template.cpp"
+ },
+ "2": {
+ "name": "punctuation.section.angle-brackets.begin.template.definition.cpp"
+ },
+ "3": {
+ "name": "meta.template.definition.cpp",
+ "patterns": [
+ {
+ "include": "#template_definition_context"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.section.angle-brackets.end.template.definition.cpp"
+ }
+ }
+ },
+ "ternary_operator": {
+ "begin": "\\?",
+ "end": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#predefined_macros"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#memory_operators"
+ },
+ {
+ "include": "#wordlike_operators"
+ },
+ {
+ "include": "#type_casting_operators"
+ },
+ {
+ "include": "#control_flow_keywords"
+ },
+ {
+ "include": "#exception_keywords"
+ },
+ {
+ "include": "#the_this_keyword"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "include": "#builtin_storage_type_initilizer"
+ },
+ {
+ "include": "#qualifiers_and_specifiers_post_parameters"
+ },
+ {
+ "include": "#functional_specifiers_pre_parameters"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#lambdas"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#parentheses"
+ },
+ {
+ "include": "#function_call"
+ },
+ {
+ "include": "#scope_resolution_inner_generated"
+ },
+ {
+ "include": "#square_brackets"
+ },
+ {
+ "include": "#semicolon"
+ },
+ {
+ "include": "#comma"
+ }
+ ],
+ "applyEndPatternLast": 1
+ },
+ "the_this_keyword": {
+ "match": "((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)this(?!\\w))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "3": {
+ "name": "variable.language.this.cpp"
+ }
+ }
+ },
+ "type_alias": {
+ "match": "(using)\\s+(?!namespace)((?:[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+)?((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?(?:\\s+)?(\\=)(?:\\s+)?((?:typename)?)(?:\\s+)?((?:(?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)(?<!\\w)(?:(?:thread_local)|(?:volatile)|(?:register)|(?:restrict)|(?:static)|(?:extern)|(?:const))(?!\\w)\\s+)+)?(?:(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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<19>|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)\\s*+)?::)*+)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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<19>|(?:(?:[^'\"<>\\/]|\\/[^*])++))*>)?(?![\\w<:.]))|(.*(?<!;)))(?:(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?:(\\[)(\\w*)(\\])(?:\\s+)?)?(?:\\s+)?(?:(;)|\\n)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.using.directive.cpp"
+ },
+ "2": {
+ "name": "entity.name.type.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "4": {
+ "name": "keyword.operator.assignment.cpp"
+ },
+ "5": {
+ "name": "keyword.other.typename.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#storage_specifiers"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "8": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "15": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "17": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "18": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "20": {
+ "name": "meta.declaration.type.alias.value.unknown.cpp",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "21": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "22": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "23": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "24": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "25": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "26": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "27": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "28": {
+ "name": "punctuation.definition.begin.bracket.square.cpp"
+ },
+ "29": {
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "30": {
+ "name": "punctuation.definition.end.bracket.square.cpp"
+ },
+ "31": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.declaration.type.alias.cpp"
+ },
+ "type_casting_operators": {
+ "match": "((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))((?<!\\w)(?:(?:reinterpret_cast)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast))(?!\\w))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.operator.wordlike.cpp keyword.operator.cast.$3.cpp"
+ }
+ }
+ },
+ "typedef_class": {
+ "begin": "((?<!\\w)typedef(?!\\w))(?:\\s+)?(?=(?<!\\w)class(?!\\w))",
+ "end": "(?<=;)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.typedef.cpp"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "begin": "((?<!\\w)class(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.class.cpp"
+ },
+ "1": {
+ "name": "storage.type.$1.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.class.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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}))*",
+ "name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "20": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.block.class.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.class.cpp"
+ }
+ },
+ "name": "meta.head.class.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.class.cpp"
+ }
+ },
+ "name": "meta.body.class.cpp",
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.class.cpp",
+ "patterns": [
+ {
+ "match": "(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "14": {
+ "name": "entity.name.type.alias.cpp"
+ }
+ }
+ },
+ {
+ "match": ","
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "typedef_function_pointer": {
+ "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*\\))",
+ "end": "(?<=;)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.typedef.cpp"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "begin": "(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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+)?(\\()",
+ "end": "(\\))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=[{=,);>]|\\n)(?!\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp"
+ },
+ "6": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "13": {},
+ "14": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "16": {
+ "name": "comment.block.cpp"
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "18": {},
+ "19": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "20": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "21": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "22": {
+ "name": "comment.block.cpp"
+ },
+ "23": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "24": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "25": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "26": {
+ "name": "comment.block.cpp"
+ },
+ "27": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "28": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "29": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "30": {
+ "name": "comment.block.cpp"
+ },
+ "31": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "32": {
+ "name": "punctuation.section.parens.begin.bracket.round.function.pointer.cpp"
+ },
+ "33": {
+ "name": "punctuation.definition.function.pointer.dereference.cpp"
+ },
+ "34": {
+ "name": "entity.name.type.alias.cpp entity.name.type.pointer.function.cpp"
+ },
+ "35": {
+ "name": "punctuation.definition.begin.bracket.square.cpp"
+ },
+ "36": {
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "37": {
+ "name": "punctuation.definition.end.bracket.square.cpp"
+ },
+ "38": {
+ "name": "punctuation.section.parens.end.bracket.round.function.pointer.cpp"
+ },
+ "39": {
+ "name": "punctuation.section.parameters.begin.bracket.round.function.pointer.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parameters.end.bracket.round.function.pointer.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_parameter_context"
+ }
+ ]
+ }
+ ]
+ },
+ "typedef_struct": {
+ "begin": "((?<!\\w)typedef(?!\\w))(?:\\s+)?(?=(?<!\\w)struct(?!\\w))",
+ "end": "(?<=;)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.typedef.cpp"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "begin": "((?<!\\w)struct(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.struct.cpp"
+ },
+ "1": {
+ "name": "storage.type.$1.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.struct.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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}))*",
+ "name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "20": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.block.struct.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.struct.cpp"
+ }
+ },
+ "name": "meta.head.struct.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.struct.cpp"
+ }
+ },
+ "name": "meta.body.struct.cpp",
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.struct.cpp",
+ "patterns": [
+ {
+ "match": "(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "14": {
+ "name": "entity.name.type.alias.cpp"
+ }
+ }
+ },
+ {
+ "match": ","
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "typedef_union": {
+ "begin": "((?<!\\w)typedef(?!\\w))(?:\\s+)?(?=(?<!\\w)union(?!\\w))",
+ "end": "(?<=;)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.typedef.cpp"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "begin": "((?<!\\w)union(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.union.cpp"
+ },
+ "1": {
+ "name": "storage.type.$1.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.union.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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}))*",
+ "name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "20": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.block.union.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.union.cpp"
+ }
+ },
+ "name": "meta.head.union.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.union.cpp"
+ }
+ },
+ "name": "meta.body.union.cpp",
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.union.cpp",
+ "patterns": [
+ {
+ "match": "(((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "8": {
+ "name": "comment.block.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "12": {
+ "name": "comment.block.cpp"
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "14": {
+ "name": "entity.name.type.alias.cpp"
+ }
+ }
+ },
+ {
+ "match": ","
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "typeid_operator": {
+ "begin": "((?<!\\w)typeid(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.functionlike.cpp keyword.operator.typeid.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.operator.typeid.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.operator.typeid.cpp"
+ }
+ },
+ "contentName": "meta.arguments.operator.typeid",
+ "patterns": [
+ {
+ "include": "#evaluation_context"
+ }
+ ]
+ },
+ "typename": {
+ "match": "(((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?<!\\w)typename(?!\\w))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(\\s*+((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?:(?:(?:unsigned)|(?:signed)|(?:short)|(?:long))|(?:(?:struct)|(?:class)|(?:union)|(?:enum)))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:((?:::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?!(?:(?:transaction_safe_dynamic)|(?:__has_cpp_attribute)|(?:reinterpret_cast)|(?:transaction_safe)|(?:atomic_noexcept)|(?:atomic_commit)|(?:__has_include)|(?:atomic_cancel)|(?:synchronized)|(?:thread_local)|(?:dynamic_cast)|(?:static_cast)|(?:const_cast)|(?:constexpr)|(?:co_return)|(?:constinit)|(?:namespace)|(?:protected)|(?:consteval)|(?:constexpr)|(?:constexpr)|(?:co_return)|(?:consteval)|(?:co_await)|(?:continue)|(?:template)|(?:reflexpr)|(?:volatile)|(?:register)|(?:co_await)|(?:co_yield)|(?:restrict)|(?:noexcept)|(?:volatile)|(?:override)|(?:explicit)|(?:decltype)|(?:operator)|(?:noexcept)|(?:noexcept)|(?:typename)|(?:requires)|(?:co_yield)|(?:nullptr)|(?:alignof)|(?:alignas)|(?:default)|(?:mutable)|(?:virtual)|(?:mutable)|(?:private)|(?:include)|(?:warning)|(?:_Pragma)|(?:defined)|(?:typedef)|(?:__asm__)|(?:concept)|(?:define)|(?:module)|(?:sizeof)|(?:switch)|(?:delete)|(?:pragma)|(?:and_eq)|(?:inline)|(?:xor_eq)|(?:typeid)|(?:import)|(?:extern)|(?:public)|(?:bitand)|(?:static)|(?:export)|(?:return)|(?:friend)|(?:ifndef)|(?:not_eq)|(?:false)|(?:final)|(?:break)|(?:const)|(?:catch)|(?:endif)|(?:ifdef)|(?:undef)|(?:error)|(?:audit)|(?:while)|(?:using)|(?:axiom)|(?:or_eq)|(?:compl)|(?:throw)|(?:bitor)|(?:const)|(?:line)|(?:case)|(?:else)|(?:this)|(?:true)|(?:goto)|(?:else)|(?:NULL)|(?:elif)|(?:new)|(?:asm)|(?:xor)|(?:and)|(?:try)|(?:not)|(?:for)|(?:do)|(?:if)|(?: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<:.]))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "6": {
+ "name": "meta.qualified_type.cpp",
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.cpp"
+ },
+ {
+ "match": "(?<!\\w)(?:(?:struct)|(?:class)|(?:union)|(?:enum))(?!\\w)",
+ "name": "storage.type.$0.cpp"
+ },
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#scope_resolution_inner_generated"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.begin.template.call.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.angle-brackets.end.template.call.cpp"
+ }
+ },
+ "name": "meta.template.call.cpp",
+ "patterns": [
+ {
+ "include": "#template_call_context"
+ }
+ ]
+ },
+ {
+ "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}))*",
+ "name": "entity.name.type.cpp"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.type.cpp"
+ },
+ {
+ "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)",
+ "name": "entity.name.scope-resolution.type.cpp"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "13": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "14": {},
+ "15": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "16": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "17": {}
+ }
+ },
+ "undef": {
+ "match": "(^((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(#)(?:\\s+)?undef\\b)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.directive.undef.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.directive.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "7": {
+ "name": "entity.name.function.preprocessor.cpp"
+ }
+ },
+ "name": "meta.preprocessor.undef.cpp"
+ },
+ "union_block": {
+ "begin": "((?<!\\w)union(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:(?={)|(?:((?:(?:(?:\\[\\[.*?\\]\\]|__attribute(?:__)?\\s*\\(\\s*\\(.*?\\)\\s*\\))|__declspec\\(.*?\\))|alignas\\(.*?\\))(?!\\)))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*+)?(?:((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(:(?!:)))?)",
+ "end": "(?:(?:(?<=\\}|%>|\\?\\?>)(?:\\s+)?(;)|(;))|(?=[;>\\[\\]=]))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.head.union.cpp"
+ },
+ "1": {
+ "name": "storage.type.$1.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#attributes_context"
+ },
+ {
+ "include": "#number_literal"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "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*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?:((?<!\\w)final(?!\\w))((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))?(?=:|{|$)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.union.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp"
+ },
+ "5": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "6": {
+ "name": "storage.type.modifier.final.cpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "8": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "9": {
+ "name": "comment.block.cpp"
+ },
+ "10": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ },
+ {
+ "match": "DLLEXPORT",
+ "name": "entity.name.other.preprocessor.macro.predefined.DLLEXPORT.cpp"
+ },
+ {
+ "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}))*",
+ "name": "entity.name.other.preprocessor.macro.predefined.probably.$0.cpp"
+ }
+ ]
+ },
+ "12": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "13": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "14": {
+ "name": "comment.block.cpp"
+ },
+ "15": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "16": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "17": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "18": {
+ "name": "comment.block.cpp"
+ },
+ "19": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ },
+ "20": {
+ "name": "punctuation.separator.colon.inheritance.cpp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cpp"
+ },
+ "2": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.block.union.cpp",
+ "patterns": [
+ {
+ "begin": "\\G ?",
+ "end": "(?:\\{|<%|\\?\\?<|(?=;))",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.union.cpp"
+ }
+ },
+ "name": "meta.head.union.cpp",
+ "patterns": [
+ {
+ "include": "#ever_present_context"
+ },
+ {
+ "include": "#inheritance_context"
+ },
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|<%|\\?\\?<)",
+ "end": "\\}|%>|\\?\\?>",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.union.cpp"
+ }
+ },
+ "name": "meta.body.union.cpp",
+ "patterns": [
+ {
+ "include": "#function_pointer"
+ },
+ {
+ "include": "#static_assert"
+ },
+ {
+ "include": "#constructor_inline"
+ },
+ {
+ "include": "#destructor_inline"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\}|%>|\\?\\?>)[\\s]*",
+ "end": "[\\s]*(?=;)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.tail.union.cpp",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "union_declare": {
+ "match": "((?<!\\w)union(?!\\w))((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))?(?:(?:&|\\*)((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z)))*(?:&|\\*))?((?:((?:\\s*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\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*+\\/\\*(?:[^\\*]++|\\*+(?!\\/))*+\\*\\/\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))(?=\\S)(?![:{a-zA-Z])",
+ "captures": {
+ "1": {
+ "name": "storage.type.union.declare.cpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.union.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "storage.modifier.pointer.cpp"
+ },
+ {
+ "match": "(?:\\&((?:(?:(?:\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+)+)|(?:\\s++)|(?<=\\W)|(?=\\W)|^|(?:\\n?$)|\\A|\\Z))){2,}\\&",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "2": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp"
+ },
+ "4": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ },
+ "name": "invalid.illegal.reference-type.cpp"
+ },
+ {
+ "match": "\\&",
+ "name": "storage.modifier.reference.cpp"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "11": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ },
+ "12": {
+ "name": "variable.other.object.declare.cpp"
+ },
+ "13": {
+ "patterns": [
+ {
+ "include": "#inline_comment"
+ }
+ ]
+ },
+ "14": {
+ "patterns": [
+ {
+ "match": "\\s*+(\\/\\*)((?:[^\\*]++|\\*+(?!\\/))*+(\\*\\/))\\s*+",
+ "captures": {
+ "1": {
+ "name": "comment.block.cpp punctuation.definition.comment.begin.cpp"
+ },
+ "2": {
+ "name": "comment.block.cpp"
+ },
+ "3": {
+ "name": "comment.block.cpp punctuation.definition.comment.end.cpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "using_name": {
+ "match": "(using)\\s+(?!namespace\\b)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.using.directive.cpp"
+ }
+ }
+ },
+ "using_namespace": {
+ "begin": "(?<!\\w)(using)\\s+(namespace)\\s+((::)?(?:(?!\\b(?:__has_cpp_attribute|reinterpret_cast|atomic_noexcept|atomic_commit|atomic_cancel|__has_include|thread_local|dynamic_cast|synchronized|static_cast|const_cast|consteval|co_return|protected|constinit|constexpr|co_return|consteval|namespace|constexpr|constexpr|co_await|explicit|volatile|noexcept|co_yield|noexcept|noexcept|requires|typename|decltype|operator|template|continue|co_await|co_yield|volatile|register|restrict|reflexpr|mutable|alignof|include|private|defined|typedef|_Pragma|__asm__|concept|mutable|warning|default|virtual|alignas|public|sizeof|delete|not_eq|bitand|and_eq|xor_eq|typeid|switch|return|struct|static|extern|inline|friend|ifndef|define|pragma|export|import|module|catch|throw|const|or_eq|compl|while|ifdef|const|bitor|union|class|undef|error|break|using|endif|goto|line|enum|this|case|else|elif|else|not|try|for|asm|and|xor|new|do|if|or|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)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.using.directive.cpp"
+ },
+ "2": {
+ "name": "keyword.other.namespace.directive.cpp storage.type.namespace.directive.cpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#scope_resolution_namespace_using_inner_generated"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.separator.namespace.access.cpp punctuation.separator.scope-resolution.namespace.using.cpp"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#template_call_range"
+ }
+ ]
+ },
+ "6": {},
+ "7": {
+ "name": "entity.name.namespace.cpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.statement.cpp"
+ }
+ },
+ "name": "meta.using-namespace.cpp"
+ },
+ "vararg_ellipses": {
+ "match": "(?<!\\.)\\.\\.\\.(?!\\.)",
+ "name": "punctuation.vararg-ellipses.cpp"
+ },
+ "wordlike_operators": {
+ "patterns": [
+ {
+ "match": "(?<!\\w)(?:(?:noexcept)|(?:xor_eq)|(?:and_eq)|(?:delete)|(?:not_eq)|(?:bitand)|(?:bitor)|(?:compl)|(?:or_eq)|(?:not)|(?:xor)|(?:new)|(?:and)|(?:or))(?!\\w)",
+ "name": "keyword.operator.wordlike.cpp keyword.operator.$0.cpp"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/crystal.tmLanguage.json b/node_modules/shiki/languages/crystal.tmLanguage.json
new file mode 100644
index 0000000..c827904
--- /dev/null
+++ b/node_modules/shiki/languages/crystal.tmLanguage.json
@@ -0,0 +1,1868 @@
+{
+ "information_for_contributors": [
+ "This file is based on https://github.com/Microsoft/vscode/blob/master/extensions/ruby/syntaxes/ruby.tmLanguage.json"
+ ],
+ "version": "https://github.com/Microsoft/vscode/blob/3f1f36333d3453f67a36b6bfb1206e9159e9c4f0/extensions/ruby/syntaxes/ruby.tmLanguage.json",
+ "name": "crystal",
+ "scopeName": "source.crystal",
+ "fileTypes": ["cr"],
+ "firstLineMatch": "^#!/.*\\bcrystal",
+ "foldingStartMarker": "(?x)^(\\s*+(annotation|module|class|struct|union|enum|def(?!.*\\bend\\s*$)|unless|if|case|begin|for|while|until|^=begin|(\"(\\\\.|[^\"])*+\"|'(\\\\.|[^'])*+'|[^#\"'])*(\\s(do|begin|case)|(?<!\\$)[-+=&|*/~%^<>~]\\s*+(if|unless)))\\b(?![^;]*+;.*?\\bend\\b)|(\"(\\\\.|[^\"])*+\"|'(\\\\.|[^'])*+'|[^#\"'])*(\\{(?![^}]*+\\})|\\[(?![^\\]]*+\\]))).*$|[#].*?\\(fold\\)\\s*+$",
+ "foldingStopMarker": "(?x)((^|;)\\s*+end\\s*+([#].*)?$|(^|;)\\s*+end\\..*$|^\\s*+[}\\]] ,?\\s*+([#].*)?$|[#].*?\\(end\\)\\s*+$|^=end)",
+ "keyEquivalent": "^~R",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.class.crystal"
+ },
+ "2": {
+ "name": "keyword.control.class.crystal"
+ },
+ "3": {
+ "name": "entity.name.type.class.crystal"
+ },
+ "5": {
+ "name": "punctuation.separator.crystal"
+ },
+ "6": {
+ "name": "support.class.other.type-param.crystal"
+ },
+ "7": {
+ "name": "entity.other.inherited-class.crystal"
+ },
+ "8": {
+ "name": "punctuation.separator.crystal"
+ },
+ "9": {
+ "name": "punctuation.separator.crystal"
+ },
+ "10": {
+ "name": "support.class.other.type-param.crystal"
+ },
+ "11": {
+ "name": "punctuation.definition.variable.crystal"
+ }
+ },
+ "match": "(?x)^\\s*(abstract)?\\s*(class|struct|union|annotation|enum)\\s+(([.A-Z_:\\x{80}-\\x{10FFFF}][.\\w:\\x{80}-\\x{10FFFF}]*(\\(([,\\s.a-zA-Z0-9_:\\x{80}-\\x{10FFFF}]+)\\))?(\\s*(<)\\s*[.:A-Z\\x{80}-\\x{10FFFF}][.:\\w\\x{80}-\\x{10FFFF}]*(\\(([.a-zA-Z0-9_:]+\\s,)\\))?)?)|((<<)\\s*[.A-Z0-9_:\\x{80}-\\x{10FFFF}]+))",
+ "name": "meta.class.crystal"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.module.crystal"
+ },
+ "2": {
+ "name": "entity.name.type.module.crystal"
+ },
+ "3": {
+ "name": "entity.other.inherited-class.module.first.crystal"
+ },
+ "4": {
+ "name": "punctuation.separator.inheritance.crystal"
+ },
+ "5": {
+ "name": "entity.other.inherited-class.module.second.crystal"
+ },
+ "6": {
+ "name": "punctuation.separator.inheritance.crystal"
+ },
+ "7": {
+ "name": "entity.other.inherited-class.module.third.crystal"
+ },
+ "8": {
+ "name": "punctuation.separator.inheritance.crystal"
+ }
+ },
+ "match": "^\\s*(module)\\s+(([A-Z\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*(::))?([A-Z\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*(::))?([A-Z\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*(::))*[A-Z\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*)",
+ "name": "meta.module.crystal"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.lib.crystal"
+ },
+ "2": {
+ "name": "entity.name.type.lib.crystal"
+ },
+ "3": {
+ "name": "entity.other.inherited-class.lib.first.crystal"
+ },
+ "4": {
+ "name": "punctuation.separator.inheritance.crystal"
+ },
+ "5": {
+ "name": "entity.other.inherited-class.lib.second.crystal"
+ },
+ "6": {
+ "name": "punctuation.separator.inheritance.crystal"
+ },
+ "7": {
+ "name": "entity.other.inherited-class.lib.third.crystal"
+ },
+ "8": {
+ "name": "punctuation.separator.inheritance.crystal"
+ }
+ },
+ "match": "^\\s*(lib)\\s+(([A-Z]\\w*(::))?([A-Z]\\w*(::))?([A-Z]\\w*(::))*[A-Z]\\w*)",
+ "name": "meta.lib.crystal"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.lib.type.crystal"
+ },
+ "2": {
+ "name": "entity.name.lib.type.crystal"
+ },
+ "3": {
+ "name": "keyword.control.lib.crystal"
+ },
+ "4": {
+ "name": "entity.name.lib.type.value.crystal"
+ }
+ },
+ "comment": "type in lib",
+ "match": "(?<!\\.)\\b(type)\\s+([A-Z]\\w+)\\s*(=)\\s*(.+)",
+ "name": "meta.lib.type.crystal"
+ },
+ {
+ "comment": "everything being a reserved word, not a value and needing a 'end' is a..",
+ "match": "(?<!\\.)\\b(fun|begin|case|class|else|elsif|end|ensure|enum|for|if|macro|module|rescue|struct|then|union|unless|until|when|while)\\b(?![?!:])",
+ "name": "keyword.control.crystal"
+ },
+ {
+ "comment": "everything being a reserved word, not a value and not needing a 'end' is a..",
+ "match": "(?<!\\.)\\b(abstract|alias|asm|break|extend|in|include|next|of|private|protected|struct|return|select|super|with|yield)\\b(?![?!:])",
+ "name": "keyword.control.primary.crystal"
+ },
+ {
+ "comment": "contextual smart pair support for block parameters",
+ "match": "(?<!\\.)\\bdo\\b\\s*",
+ "name": "keyword.control.start-block.crystal"
+ },
+ {
+ "comment": "contextual smart pair support",
+ "match": "(?<=\\{)(\\s+)",
+ "name": "meta.syntax.crystal.start-block"
+ },
+ {
+ "comment": "Just as above but being not a logical operation",
+ "match": "(?<!\\.)\\b(pointerof|typeof|sizeof|instance_sizeof|offsetof|previous_def|forall|out|uninitialized)\\b(?![?!:])|\\.(is_a\\?|nil\\?|responds_to\\?|as\\?|as\b)",
+ "name": "keyword.control.pseudo-method.crystal"
+ },
+ {
+ "match": "\\bnil\\b(?![?!:])",
+ "name": "constant.language.nil.crystal"
+ },
+ {
+ "match": "\\b(true|false)\\b(?![?!:])",
+ "name": "constant.language.boolean.crystal"
+ },
+ {
+ "match": "\\b(__(DIR|FILE|LINE|END_LINE)__)\\b(?![?!:])",
+ "name": "variable.language.crystal"
+ },
+ {
+ "match": "\\b(self)\\b(?![?!:])",
+ "name": "variable.language.self.crystal"
+ },
+ {
+ "comment": "https://crystal-lang.org/api/0.36.1/Object.html#macro-summary",
+ "match": "(?<!\\.)\\b(((class_)?((getter|property)\\b[!?]?|setter\\b))|(def_(clone|equals|equals_and_hash|hash)|delegate|forward_missing_to)\\b)(?![?!:])",
+ "name": "support.function.kernel.crystal"
+ },
+ {
+ "begin": "\\b(require)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.special-method.crystal"
+ }
+ },
+ "end": "$|(?=#)",
+ "name": "meta.require.crystal",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.crystal"
+ }
+ },
+ "match": "(@)[a-zA-Z_\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*[?!=]?",
+ "name": "variable.other.readwrite.instance.crystal"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.crystal"
+ }
+ },
+ "match": "(@@)[a-zA-Z_\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*[?!=]?",
+ "name": "variable.other.readwrite.class.crystal"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.crystal"
+ }
+ },
+ "match": "(\\$)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.global.crystal"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.crystal"
+ }
+ },
+ "match": "(?!%[Qxrqwi]?[\\(\\[\\{\\<\\|])%([a-zA-Z_]\\w*\\.)*[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.fresh.crystal"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.crystal"
+ }
+ },
+ "match": "(\\$)(!|@|&|`|'|\\+|\\d+|~|=|/|\\\\|,|;|\\.|<|>|_|\\*|\\$|\\?|:|\"|-[0adFiIlpv])",
+ "name": "variable.other.readwrite.global.pre-defined.crystal"
+ },
+ {
+ "begin": "\\b(ENV)\\[",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.constant.crystal"
+ }
+ },
+ "end": "\\]",
+ "name": "meta.environment-variable.crystal",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "match": "\\b[A-Z\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*",
+ "name": "support.class.crystal",
+ "comment": "Literals name of Crystal"
+ },
+ {
+ "match": "(?<!\\.)\\b(abort|at_exit|caller|exit|gets|loop|main|p|pp|print|printf|puts|raise|rand|read_line|sleep|spawn|sprintf|system|debugger|record|spawn)\\b(?![?!:])",
+ "name": "support.function.kernel.crystal",
+ "comment": "Fetch from https://crystal-lang.org/api/0.36.1/toplevel.html"
+ },
+ {
+ "match": "\\b[_A-Z]+\\b",
+ "name": "variable.other.constant.crystal",
+ "comment": "Constant name in any where"
+ },
+ {
+ "begin": "(?x)\n(?=def\\b) # optimization to help Oniguruma fail fast\n(?<=^|\\s)(def)\\s+\n(\n (?>[a-zA-Z_]\\w*(?>\\.|::))? # method prefix\n (?> # method name\n [a-zA-Z_]\\w*(?>[?!]|=(?!>))?\n |\n \\^|===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[][?=]?|\\[]=?\n )\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.def.crystal"
+ },
+ "2": {
+ "name": "entity.name.function.crystal"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.crystal"
+ }
+ },
+ "comment": "The method pattern comes from the symbol pattern. See there for an explanation.",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.crystal"
+ }
+ },
+ "name": "meta.function.method.with-arguments.crystal",
+ "patterns": [
+ {
+ "begin": "(?![\\s,)])",
+ "end": "(?=,|\\)\\s*$)",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.variable.crystal"
+ },
+ "2": {
+ "name": "constant.other.symbol.hashkey.parameter.function.crystal"
+ },
+ "3": {
+ "name": "punctuation.definition.constant.hashkey.crystal"
+ },
+ "4": {
+ "name": "variable.parameter.function.crystal"
+ }
+ },
+ "match": "\\G([&*]?)(?:([_a-zA-Z]\\w*(:))|([_a-zA-Z]\\w*))"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.def.crystal"
+ },
+ "3": {
+ "name": "entity.name.function.crystal"
+ }
+ },
+ "comment": " the optional name is just to catch the def also without a method-name",
+ "match": "(?x)\n(?=def\\b) # optimization to help Oniguruma fail fast\n(?<=^|\\s)(def)\\b\n(\n \\s+\n (\n (?>[a-zA-Z_]\\w*(?>\\.|::))? # method prefix\n (?> # method name\n [a-zA-Z_]\\w*(?>[?!]|=(?!>))?\n |\n \\^|===?|!=|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[][?=]?|\\[]=?\n )\n )\n)?",
+ "name": "meta.function.method.without-arguments.crystal"
+ },
+ {
+ "comment": "Floating point literal (fraction)",
+ "name": "constant.numeric.float.crystal",
+ "match": "\\b[0-9][0-9_]*\\.[0-9][0-9_]*([eE][+-]?[0-9_]+)?(f32|f64)?\\b"
+ },
+ {
+ "comment": "Floating point literal (exponent)",
+ "name": "constant.numeric.float.crystal",
+ "match": "\\b[0-9][0-9_]*(\\.[0-9][0-9_]*)?[eE][+-]?[0-9_]+(f32|f64)?\\b"
+ },
+ {
+ "comment": "Floating point literal (typed)",
+ "name": "constant.numeric.float.crystal",
+ "match": "\\b[0-9][0-9_]*(\\.[0-9][0-9_]*)?([eE][+-]?[0-9_]+)?(f32|f64)\\b"
+ },
+ {
+ "comment": "Integer literal (decimal)",
+ "name": "constant.numeric.integer.decimal.crystal",
+ "match": "\\b(?!0[0-9])[0-9][0-9_]*([ui](8|16|32|64|128))?\\b"
+ },
+ {
+ "comment": "Integer literal (hexadecimal)",
+ "name": "constant.numeric.integer.hexadecimal.crystal",
+ "match": "\\b0x[a-fA-F0-9_]+([ui](8|16|32|64|128))?\\b"
+ },
+ {
+ "comment": "Integer literal (octal)",
+ "name": "constant.numeric.integer.octal.crystal",
+ "match": "\\b0o[0-7_]+([ui](8|16|32|64|128))?\\b"
+ },
+ {
+ "comment": "Integer literal (binary)",
+ "name": "constant.numeric.integer.binary.crystal",
+ "match": "\\b0b[01_]+([ui](8|16|32|64|128))?\\b"
+ },
+ {
+ "begin": ":'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.symbol.begin.crystal"
+ }
+ },
+ "comment": "symbol literal with '' delimiter",
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.symbol.end.crystal"
+ }
+ },
+ "name": "constant.other.symbol.crystal",
+ "patterns": [
+ {
+ "match": "\\\\['\\\\]",
+ "name": "constant.character.escape.crystal"
+ }
+ ]
+ },
+ {
+ "begin": ":\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.symbol.begin.crystal"
+ }
+ },
+ "comment": "symbol literal with \"\" delimiter",
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.symbol.end.crystal"
+ }
+ },
+ "name": "constant.other.symbol.interpolated.crystal",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "comment": "Needs higher precedence than regular expressions.",
+ "match": "(?<!\\()/=",
+ "name": "keyword.operator.assignment.augmented.crystal"
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "string literal with '' delimiter",
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.quoted.single.crystal",
+ "patterns": [
+ {
+ "match": "\\\\'|\\\\\\\\",
+ "name": "constant.character.escape.crystal"
+ }
+ ]
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "string literal with interpolation and \"\" delimiter",
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.quoted.double.interpolated.crystal",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "`",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "execute string (allows for interpolation)",
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.interpolated.crystal",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "%x\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "execute string (allow for interpolation)",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.interpolated.crystal",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_curly_i"
+ }
+ ]
+ },
+ {
+ "begin": "%x\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "execute string (allow for interpolation)",
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.interpolated.crystal",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_brackets_i"
+ }
+ ]
+ },
+ {
+ "begin": "%x\\<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "execute string (allow for interpolation)",
+ "end": "\\>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.interpolated.crystal",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_ltgt_i"
+ }
+ ]
+ },
+ {
+ "begin": "%x\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "execute string (allow for interpolation)",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.interpolated.crystal",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_parens_i"
+ }
+ ]
+ },
+ {
+ "begin": "%x\\|",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "execute string (allow for interpolation)",
+ "end": "\\|",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.interpolated.crystal",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?x) (?: ^| (?<=[=>~(?:\\[,|&;] | [\\s;]if\\s| [\\s;]elsif\\s | [\\s;]while\\s | [\\s;]unless\\s | [\\s;]when\\s | [\\s;]assert_match\\s | [\\s;]or\\s| [\\s;]and\\s | [\\s;]not\\s | [\\s.]index\\s| [\\s.]scan\\s | [\\s.]sub\\s | [\\s.]sub!\\s | [\\s.]gsub\\s | [\\s.]gsub!\\s | [\\s.]match\\s ) | (?<=^when\\s| ^if\\s | ^elsif\\s | ^while\\s | ^unless\\s ) ) \\s*((/))(?![*+{}?])",
+ "captures": {
+ "1": {
+ "name": "string.regexp.classic.crystal"
+ },
+ "2": {
+ "name": "punctuation.definition.string.crystal"
+ }
+ },
+ "comment": "regular expressions (normal) we only start a regexp if the character before it (excluding whitespace) is what we think is before a regexp",
+ "contentName": "string.regexp.classic.crystal",
+ "end": "((/[imsx]*))",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ }
+ ]
+ },
+ {
+ "begin": "%r\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "regular expressions (literal)",
+ "end": "\\}[imsx]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.regexp.mod-r.crystal",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "include": "#nest_curly_r"
+ }
+ ]
+ },
+ {
+ "begin": "%r\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "regular expressions (literal)",
+ "end": "\\][imsx]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.regexp.mod-r.crystal",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "include": "#nest_brackets_r"
+ }
+ ]
+ },
+ {
+ "begin": "%r\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "regular expressions (literal)",
+ "end": "\\)[imsx]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.regexp.mod-r.crystal",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "include": "#nest_parens_r"
+ }
+ ]
+ },
+ {
+ "begin": "%r\\<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "regular expressions (literal)",
+ "end": "\\>[imsx]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.regexp.mod-r.crystal",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "include": "#nest_ltgt_r"
+ }
+ ]
+ },
+ {
+ "begin": "%r\\|",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "regular expressions (literal)",
+ "end": "\\|[imsx]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.regexp.mod-r.crystal",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ }
+ ]
+ },
+ {
+ "begin": "%Q?\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "literal capable of interpolation ()",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.quoted.other.literal.upper.crystal",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_parens_i"
+ }
+ ]
+ },
+ {
+ "begin": "%Q?\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "literal capable of interpolation []",
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.quoted.other.literal.upper.crystal",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_brackets_i"
+ }
+ ]
+ },
+ {
+ "begin": "%Q?\\<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "literal capable of interpolation <>",
+ "end": "\\>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.quoted.other.literal.upper.crystal",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_ltgt_i"
+ }
+ ]
+ },
+ {
+ "begin": "%Q?\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "literal capable of interpolation -- {}",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.quoted.double.crystal.mod",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_curly_i"
+ }
+ ]
+ },
+ {
+ "begin": "%Q\\|",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "literal capable of interpolation -- ||",
+ "end": "\\|",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.quoted.other.literal.upper.crystal",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "%[qwi]\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "literal incapable of interpolation -- ()",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.quoted.other.literal.lower.crystal",
+ "patterns": [
+ {
+ "match": "\\\\\\)|\\\\\\\\",
+ "name": "constant.character.escape.crystal"
+ },
+ {
+ "include": "#nest_parens"
+ }
+ ]
+ },
+ {
+ "begin": "%[qwi]\\<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "literal incapable of interpolation -- <>",
+ "end": "\\>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.quoted.other.literal.lower.crystal",
+ "patterns": [
+ {
+ "match": "\\\\\\>|\\\\\\\\",
+ "name": "constant.character.escape.crystal"
+ },
+ {
+ "include": "#nest_ltgt"
+ }
+ ]
+ },
+ {
+ "begin": "%[qwi]\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "literal incapable of interpolation -- []",
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.quoted.other.literal.lower.crystal",
+ "patterns": [
+ {
+ "match": "\\\\\\]|\\\\\\\\",
+ "name": "constant.character.escape.crystal"
+ },
+ {
+ "include": "#nest_brackets"
+ }
+ ]
+ },
+ {
+ "begin": "%[qwi]\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "literal incapable of interpolation -- {}",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.quoted.other.literal.lower.crystal",
+ "patterns": [
+ {
+ "match": "\\\\\\}|\\\\\\\\",
+ "name": "constant.character.escape.crystal"
+ },
+ {
+ "include": "#nest_curly"
+ }
+ ]
+ },
+ {
+ "begin": "%[qwi]\\|",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "literal incapable of interpolation -- ||",
+ "end": "\\|",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.quoted.other.literal.lower.crystal",
+ "patterns": [
+ {
+ "comment": "Cant be named because its not necessarily an escape.",
+ "match": "\\\\."
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.crystal"
+ }
+ },
+ "comment": "symbols",
+ "match": "(?<!:)(:)(?>[a-zA-Z_\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<[<=]?|<=>|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\][?=]?|@@?[a-zA-Z_\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*)",
+ "name": "constant.other.symbol.crystal"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.crystal"
+ }
+ },
+ "comment": "symbols",
+ "match": "(?>[a-zA-Z_\\x{80}-\\x{10FFFF}][\\w\\x{80}-\\x{10FFFF}]*(?>[?!])?)(:)(?!:)",
+ "name": "constant.other.symbol.crystal.19syntax"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.crystal"
+ }
+ },
+ "match": "(?:^[ \\t]+)?(#).*$\\n?",
+ "name": "comment.line.number-sign.crystal"
+ },
+ {
+ "match": "\\b_([\\w]+[?!]?)",
+ "name": "comment.unused.crystal"
+ },
+ {
+ "begin": "(?><<-('?)((?:[_\\w]+_|)HTML)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "heredoc with embedded HTML and indented terminator",
+ "contentName": "text.html.embedded.crystal",
+ "end": "\\s*\\2\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.unquoted.embedded.html.crystal",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "text.html.basic"
+ },
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?><<-('?)((?:[_\\w]+_|)SQL)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "heredoc with embedded SQL and indented terminator",
+ "contentName": "text.sql.embedded.crystal",
+ "end": "\\s*\\2\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.unquoted.embedded.sql.crystal",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "source.sql"
+ },
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?><<-('?)((?:[_\\w]+_|)CSS)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "heredoc with embedded css and intented terminator",
+ "contentName": "text.css.embedded.crystal",
+ "end": "\\s*\\2\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.unquoted.embedded.css.crystal",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "source.css"
+ },
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?><<-('?)((?:[_\\w]+_|)CPP)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "heredoc with embedded c++ and intented terminator",
+ "contentName": "text.c++.embedded.crystal",
+ "end": "\\s*\\2\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.unquoted.embedded.cplusplus.crystal",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "source.c++"
+ },
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?><<-('?)((?:[_\\w]+_|)C)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "heredoc with embedded c++ and intented terminator",
+ "contentName": "text.c.embedded.crystal",
+ "end": "\\s*\\2\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.unquoted.embedded.c.crystal",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "source.c"
+ },
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?><<-('?)((?:[_\\w]+_|)(?:JS|JAVASCRIPT))\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "heredoc with embedded javascript and intented terminator",
+ "contentName": "text.js.embedded.crystal",
+ "end": "\\s*\\2\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.unquoted.embedded.js.crystal",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "source.js"
+ },
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?><<-('?)((?:[_\\w]+_|)JQUERY)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "heredoc with embedded javascript and intented terminator",
+ "contentName": "text.js.jquery.embedded.crystal",
+ "end": "\\s*\\2\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.unquoted.embedded.js.jquery.crystal",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "source.js.jquery"
+ },
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?><<-('?)((?:[_\\w]+_|)(?:SH|SHELL))\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "heredoc with embedded shell and intented terminator",
+ "contentName": "text.shell.embedded.crystal",
+ "end": "\\s*\\2\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.unquoted.embedded.shell.crystal",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "source.shell"
+ },
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?><<-('?)((?:[_\\w]+_|)CRYSTAL)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "heredoc with embedded crystal and intented terminator",
+ "contentName": "text.crystal.embedded.crystal",
+ "end": "\\s*\\2\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.unquoted.embedded.crystal.crystal",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "source.crystal"
+ },
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?><<-'(\\w+)')",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "heredoc with indented terminator",
+ "end": "\\s*\\1\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.unquoted.heredoc.crystal",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?><<-(\\w+)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.crystal"
+ }
+ },
+ "comment": "heredoc with indented terminator",
+ "end": "\\s*\\1\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.crystal"
+ }
+ },
+ "name": "string.unquoted.heredoc.crystal",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?<={|{\\s|[^A-Za-z0-9_]do|^do|[^A-Za-z0-9_]do\\s|^do\\s)(\\|)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.variable.crystal"
+ }
+ },
+ "end": "(?<!\\|)(\\|)(?!\\|)",
+ "patterns": [
+ {
+ "include": "source.crystal"
+ },
+ {
+ "match": "[_a-zA-Z][_a-zA-Z0-9]*",
+ "name": "variable.other.block.crystal"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.variable.crystal"
+ }
+ ]
+ },
+ {
+ "match": "=>",
+ "name": "punctuation.separator.key-value"
+ },
+ {
+ "match": "->",
+ "name": "support.function.kernel.crystal"
+ },
+ {
+ "match": "<<=|%=|&{1,2}=|\\*=|\\*\\*=|\\+=|-=|\\^=|\\|{1,2}=|<<",
+ "name": "keyword.operator.assignment.augmented.crystal"
+ },
+ {
+ "match": "<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \\t])\\?",
+ "name": "keyword.operator.comparison.crystal"
+ },
+ {
+ "match": "(?<=^|[ \\t])!|&&|\\|\\||\\^",
+ "name": "keyword.operator.logical.crystal"
+ },
+ {
+ "match": "(\\{\\%|\\%\\}|\\{\\{|\\}\\})",
+ "name": "keyword.operator.macro.crystal"
+ },
+ {
+ "comment": "Safe navigation operator",
+ "match": "(&\\.)\\s*(?![A-Z])",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.method.crystal"
+ }
+ }
+ },
+ {
+ "match": "(%|&|\\*\\*|\\*|\\+|\\-|/)",
+ "name": "keyword.operator.arithmetic.crystal"
+ },
+ {
+ "match": "=",
+ "name": "keyword.operator.assignment.crystal"
+ },
+ {
+ "match": "\\||~|>>",
+ "name": "keyword.operator.other.crystal"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.separator.other.crystal"
+ },
+ {
+ "match": "\\;",
+ "name": "punctuation.separator.statement.crystal"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.object.crystal"
+ },
+ {
+ "match": "\\.|::",
+ "name": "punctuation.separator.method.crystal"
+ },
+ {
+ "match": "\\{|\\}",
+ "name": "punctuation.section.scope.crystal"
+ },
+ {
+ "match": "\\[|\\]",
+ "name": "punctuation.section.array.crystal"
+ },
+ {
+ "match": "\\(|\\)",
+ "name": "punctuation.section.function.crystal"
+ },
+ {
+ "begin": "(?=[a-zA-Z0-9_!?]+\\()",
+ "end": "(?<=\\))",
+ "name": "meta.function-call.crystal",
+ "patterns": [
+ {
+ "match": "([a-zA-Z0-9_!?]+)(?=\\()",
+ "name": "entity.name.function.crystal"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "comment": "This is kindof experimental. There really is no way to perfectly match all regular variables, but you can pretty well assume that any normal word in certain curcumstances that havnt already been scoped as something else are probably variables, and the advantages beat the potential errors",
+ "match": "((?<=\\W)\\b|^)\\w+\\b(?=\\s*([\\]\\)\\}\\=\\+\\-\\*\\/\\^\\$\\,\\.]|<\\s|<<[\\s|\\.]))",
+ "name": "variable.other.crystal"
+ }
+ ],
+ "repository": {
+ "escaped_char": {
+ "comment": "https://crystal-lang.org/reference/syntax_and_semantics/literals/string.html",
+ "match": "\\\\(?:[0-7]{1,3}|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|u\\{[a-fA-F0-9 ]+\\}|.)",
+ "name": "constant.character.escape.crystal"
+ },
+ "heredoc": {
+ "begin": "^<<-?\\w+",
+ "end": "$",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "interpolated_crystal": {
+ "patterns": [
+ {
+ "begin": "#\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.crystal"
+ }
+ },
+ "contentName": "source.crystal",
+ "end": "(\\})",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.crystal"
+ },
+ "1": {
+ "name": "source.crystal"
+ }
+ },
+ "name": "meta.embedded.line.crystal",
+ "patterns": [
+ {
+ "include": "#nest_curly_and_self"
+ },
+ {
+ "include": "$self"
+ }
+ ],
+ "repository": {
+ "nest_curly_and_self": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.crystal"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#nest_curly_and_self"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.crystal"
+ }
+ },
+ "match": "(#@)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.instance.crystal"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.crystal"
+ }
+ },
+ "match": "(#@@)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.class.crystal"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.crystal"
+ }
+ },
+ "match": "(#\\$)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.global.crystal"
+ }
+ ]
+ },
+ "nest_brackets": {
+ "begin": "\\[",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.crystal"
+ }
+ },
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#nest_brackets"
+ }
+ ]
+ },
+ "nest_brackets_i": {
+ "begin": "\\[",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.crystal"
+ }
+ },
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_brackets_i"
+ }
+ ]
+ },
+ "nest_brackets_r": {
+ "begin": "\\[",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.crystal"
+ }
+ },
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "include": "#nest_brackets_r"
+ }
+ ]
+ },
+ "nest_curly": {
+ "begin": "\\{",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.crystal"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#nest_curly"
+ }
+ ]
+ },
+ "nest_curly_and_self": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.crystal"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#nest_curly_and_self"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "nest_curly_i": {
+ "begin": "\\{",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.crystal"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_curly_i"
+ }
+ ]
+ },
+ "nest_curly_r": {
+ "begin": "\\{",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.crystal"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "include": "#nest_curly_r"
+ }
+ ]
+ },
+ "nest_ltgt": {
+ "begin": "\\<",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.crystal"
+ }
+ },
+ "end": "\\>",
+ "patterns": [
+ {
+ "include": "#nest_ltgt"
+ }
+ ]
+ },
+ "nest_ltgt_i": {
+ "begin": "\\<",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.crystal"
+ }
+ },
+ "end": "\\>",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_ltgt_i"
+ }
+ ]
+ },
+ "nest_ltgt_r": {
+ "begin": "\\<",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.crystal"
+ }
+ },
+ "end": "\\>",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "include": "#nest_ltgt_r"
+ }
+ ]
+ },
+ "nest_parens": {
+ "begin": "\\(",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.crystal"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#nest_parens"
+ }
+ ]
+ },
+ "nest_parens_i": {
+ "begin": "\\(",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.crystal"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nest_parens_i"
+ }
+ ]
+ },
+ "nest_parens_r": {
+ "begin": "\\(",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.crystal"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "include": "#nest_parens_r"
+ }
+ ]
+ },
+ "regex_sub": {
+ "patterns": [
+ {
+ "include": "#interpolated_crystal"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arbitrary-repetition.crystal"
+ },
+ "3": {
+ "name": "punctuation.definition.arbitrary-repetition.crystal"
+ }
+ },
+ "match": "({)\\d+(,\\d+)?(})",
+ "name": "string.regexp.arbitrary-repetition.crystal"
+ },
+ {
+ "begin": "\\[(?:\\^?])?",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.character-class.crystal"
+ }
+ },
+ "end": "]",
+ "name": "string.regexp.character-class.crystal",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.group.crystal"
+ }
+ },
+ "end": "\\)",
+ "name": "string.regexp.group.crystal",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.crystal"
+ }
+ },
+ "comment": "We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.",
+ "match": "(?<=^|\\s)(#)\\s[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$",
+ "name": "comment.line.number-sign.crystal"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/csharp.tmLanguage.json b/node_modules/shiki/languages/csharp.tmLanguage.json
new file mode 100644
index 0000000..d6b8eaa
--- /dev/null
+++ b/node_modules/shiki/languages/csharp.tmLanguage.json
@@ -0,0 +1,4995 @@
+{
+ "name": "csharp",
+ "scopeName": "source.cs",
+ "fileTypes": ["cs"],
+ "uuid": "f7de61e2-bdde-4e2a-a139-8221b179584e",
+ "patterns": [
+ {
+ "include": "#preprocessor"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#directives"
+ },
+ {
+ "include": "#declarations"
+ },
+ {
+ "include": "#script-top-level"
+ }
+ ],
+ "repository": {
+ "directives": {
+ "patterns": [
+ {
+ "include": "#extern-alias-directive"
+ },
+ {
+ "include": "#using-directive"
+ },
+ {
+ "include": "#attribute-section"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "declarations": {
+ "patterns": [
+ {
+ "include": "#namespace-declaration"
+ },
+ {
+ "include": "#type-declarations"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "script-top-level": {
+ "patterns": [
+ {
+ "include": "#statement"
+ },
+ {
+ "include": "#method-declaration"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "type-declarations": {
+ "patterns": [
+ {
+ "include": "#preprocessor"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#storage-modifier"
+ },
+ {
+ "include": "#class-declaration"
+ },
+ {
+ "include": "#delegate-declaration"
+ },
+ {
+ "include": "#enum-declaration"
+ },
+ {
+ "include": "#interface-declaration"
+ },
+ {
+ "include": "#struct-declaration"
+ },
+ {
+ "include": "#record-declaration"
+ },
+ {
+ "include": "#attribute-section"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "class-or-struct-members": {
+ "patterns": [
+ {
+ "include": "#preprocessor"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#storage-modifier"
+ },
+ {
+ "include": "#type-declarations"
+ },
+ {
+ "include": "#property-declaration"
+ },
+ {
+ "include": "#field-declaration"
+ },
+ {
+ "include": "#event-declaration"
+ },
+ {
+ "include": "#indexer-declaration"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#constructor-declaration"
+ },
+ {
+ "include": "#destructor-declaration"
+ },
+ {
+ "include": "#operator-declaration"
+ },
+ {
+ "include": "#conversion-operator-declaration"
+ },
+ {
+ "include": "#method-declaration"
+ },
+ {
+ "include": "#attribute-section"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "interface-members": {
+ "patterns": [
+ {
+ "include": "#preprocessor"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#property-declaration"
+ },
+ {
+ "include": "#event-declaration"
+ },
+ {
+ "include": "#indexer-declaration"
+ },
+ {
+ "include": "#method-declaration"
+ },
+ {
+ "include": "#attribute-section"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "statement": {
+ "patterns": [
+ {
+ "include": "#preprocessor"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#while-statement"
+ },
+ {
+ "include": "#do-statement"
+ },
+ {
+ "include": "#for-statement"
+ },
+ {
+ "include": "#foreach-statement"
+ },
+ {
+ "include": "#if-statement"
+ },
+ {
+ "include": "#else-part"
+ },
+ {
+ "include": "#switch-statement"
+ },
+ {
+ "include": "#goto-statement"
+ },
+ {
+ "include": "#return-statement"
+ },
+ {
+ "include": "#break-or-continue-statement"
+ },
+ {
+ "include": "#throw-statement"
+ },
+ {
+ "include": "#yield-statement"
+ },
+ {
+ "include": "#await-statement"
+ },
+ {
+ "include": "#try-statement"
+ },
+ {
+ "include": "#checked-unchecked-statement"
+ },
+ {
+ "include": "#lock-statement"
+ },
+ {
+ "include": "#using-statement"
+ },
+ {
+ "include": "#labeled-statement"
+ },
+ {
+ "include": "#object-creation-expression"
+ },
+ {
+ "include": "#array-creation-expression"
+ },
+ {
+ "include": "#anonymous-object-creation-expression"
+ },
+ {
+ "include": "#local-declaration"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "expression": {
+ "patterns": [
+ {
+ "include": "#preprocessor"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#checked-unchecked-expression"
+ },
+ {
+ "include": "#typeof-or-default-expression"
+ },
+ {
+ "include": "#nameof-expression"
+ },
+ {
+ "include": "#throw-expression"
+ },
+ {
+ "include": "#raw-interpolated-string"
+ },
+ {
+ "include": "#interpolated-string"
+ },
+ {
+ "include": "#verbatim-interpolated-string"
+ },
+ {
+ "include": "#this-or-base-expression"
+ },
+ {
+ "include": "#switch-expression"
+ },
+ {
+ "include": "#conditional-operator"
+ },
+ {
+ "include": "#expression-operators"
+ },
+ {
+ "include": "#await-expression"
+ },
+ {
+ "include": "#query-expression"
+ },
+ {
+ "include": "#as-expression"
+ },
+ {
+ "include": "#is-expression"
+ },
+ {
+ "include": "#anonymous-method-expression"
+ },
+ {
+ "include": "#object-creation-expression"
+ },
+ {
+ "include": "#array-creation-expression"
+ },
+ {
+ "include": "#anonymous-object-creation-expression"
+ },
+ {
+ "include": "#invocation-expression"
+ },
+ {
+ "include": "#member-access-expression"
+ },
+ {
+ "include": "#element-access-expression"
+ },
+ {
+ "include": "#cast-expression"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#parenthesized-expression"
+ },
+ {
+ "include": "#tuple-deconstruction-assignment"
+ },
+ {
+ "include": "#initializer-expression"
+ },
+ {
+ "include": "#identifier"
+ }
+ ]
+ },
+ "extern-alias-directive": {
+ "begin": "\\s*(extern)\\b\\s*(alias)\\b\\s*(@?[_[:alpha:]][_[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.extern.cs"
+ },
+ "2": {
+ "name": "keyword.other.alias.cs"
+ },
+ "3": {
+ "name": "variable.other.alias.cs"
+ }
+ },
+ "end": "(?=;)"
+ },
+ "using-directive": {
+ "patterns": [
+ {
+ "begin": "\\b(using)\\b\\s+(static)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.using.cs"
+ },
+ "2": {
+ "name": "keyword.other.static.cs"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(using)\\s+(?=(@?[_[:alpha:]][_[:alnum:]]*)\\s*=)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.using.cs"
+ },
+ "2": {
+ "name": "entity.name.type.alias.cs"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#operator-assignment"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(using)\\s*(?!\\(|\\s|var)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.using.cs"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "name": "entity.name.type.namespace.cs",
+ "match": "@?[_[:alpha:]][_[:alnum:]]*"
+ },
+ {
+ "include": "#operator-assignment"
+ }
+ ]
+ }
+ ]
+ },
+ "attribute-section": {
+ "begin": "(\\[)(assembly|module|field|event|method|param|property|return|type)?(\\:)?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.squarebracket.open.cs"
+ },
+ "2": {
+ "name": "keyword.other.attribute-specifier.cs"
+ },
+ "3": {
+ "name": "punctuation.separator.colon.cs"
+ }
+ },
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.squarebracket.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#attribute"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "attribute": {
+ "patterns": [
+ {
+ "include": "#type-name"
+ },
+ {
+ "include": "#attribute-arguments"
+ }
+ ]
+ },
+ "attribute-arguments": {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attribute-named-argument"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "attribute-named-argument": {
+ "begin": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(?==)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.variable.property.cs"
+ }
+ },
+ "end": "(?=(,|\\)))",
+ "patterns": [
+ {
+ "include": "#operator-assignment"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "namespace-declaration": {
+ "begin": "\\b(namespace)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.namespace.cs"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "name": "entity.name.type.namespace.cs",
+ "match": "@?[_[:alpha:]][_[:alnum:]]*"
+ },
+ {
+ "include": "#punctuation-accessor"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.cs"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#declarations"
+ },
+ {
+ "include": "#using-directive"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ }
+ ]
+ },
+ "storage-modifier": {
+ "name": "storage.modifier.cs",
+ "match": "(?<!\\.)\\b(new|public|protected|internal|private|abstract|virtual|override|sealed|static|partial|readonly|volatile|const|extern|async|unsafe|ref|required|file)\\b"
+ },
+ "class-declaration": {
+ "begin": "(?=(\\brecord\\b\\s+)?\\bclass\\b)",
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "begin": "(?x)\n(\\b(record)\\b\\s+)?\n\\b(class)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)\\s*",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.record.cs"
+ },
+ "3": {
+ "name": "keyword.other.class.cs"
+ },
+ "4": {
+ "name": "entity.name.type.class.cs"
+ }
+ },
+ "end": "(?=\\{)|(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameter-list"
+ },
+ {
+ "include": "#parenthesized-parameter-list"
+ },
+ {
+ "include": "#base-types"
+ },
+ {
+ "include": "#generic-constraints"
+ }
+ ]
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.cs"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#class-or-struct-members"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "delegate-declaration": {
+ "begin": "(?x)\n(?:\\b(delegate)\\b)\\s+\n(?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s+\n(\\g<identifier>)\\s*\n(<([^<>]+)>)?\\s*\n(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.delegate.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "7": {
+ "name": "entity.name.type.delegate.cs"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#type-parameter-list"
+ }
+ ]
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#parenthesized-parameter-list"
+ },
+ {
+ "include": "#generic-constraints"
+ }
+ ]
+ },
+ "enum-declaration": {
+ "begin": "(?=\\benum\\b)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "begin": "(?=enum)",
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "(enum)\\s+(@?[_[:alpha:]][_[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.enum.cs"
+ },
+ "2": {
+ "name": "entity.name.type.enum.cs"
+ }
+ }
+ },
+ {
+ "begin": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.colon.cs"
+ }
+ },
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.cs"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#attribute-section"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "begin": "@?[_[:alpha:]][_[:alnum:]]*",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.variable.enum-member.cs"
+ }
+ },
+ "end": "(?=(,|\\}))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "interface-declaration": {
+ "begin": "(?=\\binterface\\b)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "begin": "(?x)\n(interface)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.interface.cs"
+ },
+ "2": {
+ "name": "entity.name.type.interface.cs"
+ }
+ },
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameter-list"
+ },
+ {
+ "include": "#base-types"
+ },
+ {
+ "include": "#generic-constraints"
+ }
+ ]
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.cs"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#interface-members"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "record-declaration": {
+ "begin": "(?=\\brecord\\b)",
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "begin": "(?x)\n(record)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.record.cs"
+ },
+ "2": {
+ "name": "entity.name.type.class.cs"
+ }
+ },
+ "end": "(?=\\{)|(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameter-list"
+ },
+ {
+ "include": "#parenthesized-parameter-list"
+ },
+ {
+ "include": "#base-types"
+ },
+ {
+ "include": "#generic-constraints"
+ }
+ ]
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.cs"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#class-or-struct-members"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "struct-declaration": {
+ "begin": "(?=(\\brecord\\b\\s+)?\\bstruct\\b)",
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "begin": "(?x)\n(\\b(record)\\b\\s+)?\n(struct)\\b\\s+\n(@?[_[:alpha:]][_[:alnum:]]*)",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.record.cs"
+ },
+ "3": {
+ "name": "keyword.other.struct.cs"
+ },
+ "4": {
+ "name": "entity.name.type.struct.cs"
+ }
+ },
+ "end": "(?=\\{)|(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameter-list"
+ },
+ {
+ "include": "#parenthesized-parameter-list"
+ },
+ {
+ "include": "#base-types"
+ },
+ {
+ "include": "#generic-constraints"
+ }
+ ]
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.cs"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#class-or-struct-members"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "type-parameter-list": {
+ "begin": "\\<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.begin.cs"
+ }
+ },
+ "end": "\\>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.end.cs"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\b(in|out)\\b",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.cs"
+ }
+ }
+ },
+ {
+ "match": "(@?[_[:alpha:]][_[:alnum:]]*)\\b",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.type-parameter.cs"
+ }
+ }
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#attribute-section"
+ }
+ ]
+ },
+ "base-types": {
+ "begin": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.colon.cs"
+ }
+ },
+ "end": "(?=\\{|where|;)",
+ "patterns": [
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#preprocessor"
+ }
+ ]
+ },
+ "generic-constraints": {
+ "begin": "(where)\\s+(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.where.cs"
+ },
+ "2": {
+ "name": "entity.name.type.type-parameter.cs"
+ },
+ "3": {
+ "name": "punctuation.separator.colon.cs"
+ }
+ },
+ "end": "(?=\\{|where|;|=>)",
+ "patterns": [
+ {
+ "name": "keyword.other.class.cs",
+ "match": "\\bclass\\b"
+ },
+ {
+ "name": "keyword.other.struct.cs",
+ "match": "\\bstruct\\b"
+ },
+ {
+ "match": "(new)\\s*(\\()\\s*(\\))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.new.cs"
+ },
+ "2": {
+ "name": "punctuation.parenthesis.open.cs"
+ },
+ "3": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ }
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#generic-constraints"
+ }
+ ]
+ },
+ "field-declaration": {
+ "begin": "(?x)\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s+\n(\\g<identifier>)\\s* # first field name\n(?!=>|==)(?=,|;|=|$)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.variable.field.cs"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "name": "entity.name.variable.field.cs",
+ "match": "@?[_[:alpha:]][_[:alnum:]]*"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#class-or-struct-members"
+ }
+ ]
+ },
+ "property-declaration": {
+ "begin": "(?x)\n\n# The negative lookahead below ensures that we don't match nested types\n# or other declarations as properties.\n(?![[:word:][:space:]]*\\b(?:class|interface|struct|enum|event)\\b)\n\n(?<return_type>\n (?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\\s+\n)\n(?<interface_name>\\g<type_name>\\s*\\.\\s*)?\n(?<property_name>\\g<identifier>)\\s*\n(?=\\{|=>|$)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-accessor"
+ }
+ ]
+ },
+ "8": {
+ "name": "entity.name.variable.property.cs"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#property-accessors"
+ },
+ {
+ "include": "#expression-body"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#class-or-struct-members"
+ }
+ ]
+ },
+ "indexer-declaration": {
+ "begin": "(?x)\n(?<return_type>\n (?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\\s+\n)\n(?<interface_name>\\g<type_name>\\s*\\.\\s*)?\n(?<indexer_name>this)\\s*\n(?=\\[)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-accessor"
+ }
+ ]
+ },
+ "8": {
+ "name": "keyword.other.this.cs"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#bracketed-parameter-list"
+ },
+ {
+ "include": "#property-accessors"
+ },
+ {
+ "include": "#expression-body"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "event-declaration": {
+ "begin": "(?x)\n\\b(event)\\b\\s*\n(?<return_type>\n (?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\\s+\n)\n(?<interface_name>\\g<type_name>\\s*\\.\\s*)?\n(?<event_names>\\g<identifier>(?:\\s*,\\s*\\g<identifier>)*)\\s*\n(?=\\{|;|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.event.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-accessor"
+ }
+ ]
+ },
+ "9": {
+ "patterns": [
+ {
+ "name": "entity.name.variable.event.cs",
+ "match": "@?[_[:alpha:]][_[:alnum:]]*"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#event-accessors"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "property-accessors": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.cs"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "name": "storage.modifier.cs",
+ "match": "\\b(private|protected|internal)\\b"
+ },
+ {
+ "name": "keyword.other.get.cs",
+ "match": "\\b(get)\\b"
+ },
+ {
+ "name": "keyword.other.set.cs",
+ "match": "\\b(set)\\b"
+ },
+ {
+ "name": "keyword.other.init.cs",
+ "match": "\\b(init)\\b"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#attribute-section"
+ },
+ {
+ "include": "#expression-body"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "event-accessors": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.cs"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.other.add.cs",
+ "match": "\\b(add)\\b"
+ },
+ {
+ "name": "keyword.other.remove.cs",
+ "match": "\\b(remove)\\b"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#attribute-section"
+ },
+ {
+ "include": "#expression-body"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "method-declaration": {
+ "begin": "(?x)\n(?<return_type>\n (?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\\s+\n)\n(?<interface_name>\\g<type_name>\\s*\\.\\s*)?\n(\\g<identifier>)\\s*\n(<([^<>]+)>)?\\s*\n(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-accessor"
+ }
+ ]
+ },
+ "8": {
+ "name": "entity.name.function.cs"
+ },
+ "9": {
+ "patterns": [
+ {
+ "include": "#type-parameter-list"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#parenthesized-parameter-list"
+ },
+ {
+ "include": "#generic-constraints"
+ },
+ {
+ "include": "#expression-body"
+ },
+ {
+ "include": "#block"
+ }
+ ]
+ },
+ "constructor-declaration": {
+ "begin": "(?=@?[_[:alpha:]][_[:alnum:]]*\\s*\\()",
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "match": "(@?[_[:alpha:]][_[:alnum:]]*)\\b",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.cs"
+ }
+ }
+ },
+ {
+ "begin": "(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.colon.cs"
+ }
+ },
+ "end": "(?=\\{|=>)",
+ "patterns": [
+ {
+ "include": "#constructor-initializer"
+ }
+ ]
+ },
+ {
+ "include": "#parenthesized-parameter-list"
+ },
+ {
+ "include": "#preprocessor"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#expression-body"
+ },
+ {
+ "include": "#block"
+ }
+ ]
+ },
+ "constructor-initializer": {
+ "begin": "\\b(?:(base)|(this))\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.base.cs"
+ },
+ "2": {
+ "name": "keyword.other.this.cs"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#argument-list"
+ }
+ ]
+ },
+ "destructor-declaration": {
+ "begin": "(~)(@?[_[:alpha:]][_[:alnum:]]*)\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.tilde.cs"
+ },
+ "2": {
+ "name": "entity.name.function.cs"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#parenthesized-parameter-list"
+ },
+ {
+ "include": "#expression-body"
+ },
+ {
+ "include": "#block"
+ }
+ ]
+ },
+ "operator-declaration": {
+ "begin": "(?x)\n(?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n(?<operator_keyword>(?:\\b(?:operator)))\\s*\n(?<operator>(?:\\+|-|\\*|/|%|&|\\||\\^|\\<\\<|\\>\\>|==|!=|\\>|\\<|\\>=|\\<=|!|~|\\+\\+|--|true|false))\\s*\n(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "6": {
+ "name": "keyword.other.operator-decl.cs"
+ },
+ "7": {
+ "name": "entity.name.function.cs"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#parenthesized-parameter-list"
+ },
+ {
+ "include": "#expression-body"
+ },
+ {
+ "include": "#block"
+ }
+ ]
+ },
+ "conversion-operator-declaration": {
+ "begin": "(?x)\n(?<explicit_or_implicit_keyword>(?:\\b(?:explicit|implicit)))\\s*\n(?<operator_keyword>(?:\\b(?:operator)))\\s*\n(?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "\\b(explicit)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.explicit.cs"
+ }
+ }
+ },
+ {
+ "match": "\\b(implicit)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.implicit.cs"
+ }
+ }
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.other.operator-decl.cs"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#parenthesized-parameter-list"
+ },
+ {
+ "include": "#expression-body"
+ },
+ {
+ "include": "#block"
+ }
+ ]
+ },
+ "block": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.cs"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "variable-initializer": {
+ "begin": "(?<!=|!)(=)(?!=|>)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.cs"
+ }
+ },
+ "end": "(?=[,\\)\\];}])",
+ "patterns": [
+ {
+ "include": "#ref-modifier"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "expression-body": {
+ "begin": "=>",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.arrow.cs"
+ }
+ },
+ "end": "(?=[,\\);}])",
+ "patterns": [
+ {
+ "include": "#ref-modifier"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "goto-statement": {
+ "begin": "(?<!\\.)\\b(goto)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.goto.cs"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "begin": "\\b(case)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.case.cs"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "match": "\\b(default)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.default.cs"
+ }
+ }
+ },
+ {
+ "name": "entity.name.label.cs",
+ "match": "@?[_[:alpha:]][_[:alnum:]]*"
+ }
+ ]
+ },
+ "return-statement": {
+ "begin": "(?<!\\.)\\b(return)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow.return.cs"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#ref-modifier"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "break-or-continue-statement": {
+ "match": "(?<!\\.)\\b(?:(break)|(continue))\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.break.cs"
+ },
+ "2": {
+ "name": "keyword.control.flow.continue.cs"
+ }
+ }
+ },
+ "throw-statement": {
+ "begin": "(?<!\\.)\\b(throw)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow.throw.cs"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "yield-statement": {
+ "patterns": [
+ {
+ "include": "#yield-return-statement"
+ },
+ {
+ "include": "#yield-break-statement"
+ }
+ ]
+ },
+ "yield-return-statement": {
+ "begin": "(?<!\\.)\\b(yield)\\b\\s*\\b(return)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow.yield.cs"
+ },
+ "2": {
+ "name": "keyword.control.flow.return.cs"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "yield-break-statement": {
+ "match": "(?<!\\.)\\b(yield)\\b\\s*\\b(break)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.yield.cs"
+ },
+ "2": {
+ "name": "keyword.control.flow.break.cs"
+ }
+ }
+ },
+ "await-statement": {
+ "begin": "(?<!\\.)\\b(await)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.await.cs"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "if-statement": {
+ "begin": "(?<!\\.)\\b(if)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.conditional.if.cs"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "else-part": {
+ "begin": "(?<!\\.)\\b(else)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.conditional.else.cs"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "switch-statement": {
+ "begin": "(?<!\\.)\\b(switch)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.cs"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.cs"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#switch-label"
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ }
+ ]
+ },
+ "switch-expression": {
+ "begin": "(?x) (?<!\\.)\\b(switch)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.cs"
+ }
+ },
+ "end": "(?<=\\})",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.cs"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#switch-var-pattern"
+ },
+ {
+ "include": "#switch-property-expression"
+ },
+ {
+ "include": "#member-access-expression"
+ },
+ {
+ "include": "#switch-pattern"
+ },
+ {
+ "include": "#expression-body"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ ]
+ },
+ "switch-pattern": {
+ "begin": "(?x) # e.g. int x OR var x\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s+\n(\\g<identifier>)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "2": {
+ "name": "entity.name.variable.local.cs"
+ }
+ },
+ "end": "(?==>)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#switch-when-clause"
+ }
+ ]
+ },
+ "switch-property-expression": {
+ "begin": "(?x) # e.g. int x OR var x\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)?\\s*\n(\\{)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.curlybrace.open.cs"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "switch-var-pattern": {
+ "begin": "(?x) # match foreach (var (x, y) in ...)\n(?:\\b(var)\\b\\s*)\n(?<tuple>\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.var.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#tuple-declaration-deconstruction-element-list"
+ }
+ ]
+ }
+ },
+ "end": "(?==>)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#switch-when-clause"
+ }
+ ]
+ },
+ "switch-when-clause": {
+ "begin": "(?<!\\.)\\b(when)\\b\\s*(\\()?",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.try.when.cs"
+ },
+ "2": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "(?==>)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "match": "\\(",
+ "captures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ }
+ },
+ {
+ "match": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ }
+ }
+ ]
+ },
+ "switch-label": {
+ "patterns": [
+ {
+ "begin": "(?<!\\.)\\b(case)\\b\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.case.cs"
+ }
+ },
+ "end": ":",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.separator.colon.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "match": "(?<!\\.)\\b(default)\\b\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.default.cs"
+ },
+ "2": {
+ "name": "punctuation.separator.colon.cs"
+ }
+ }
+ }
+ ]
+ },
+ "do-statement": {
+ "begin": "(?<!\\.)\\b(do)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.loop.do.cs"
+ }
+ },
+ "end": "(?=;|})",
+ "patterns": [
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "while-statement": {
+ "begin": "(?<!\\.)\\b(while)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.loop.while.cs"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "for-statement": {
+ "begin": "(?<!\\.)\\b(for)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.loop.for.cs"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#local-variable-declaration"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "foreach-statement": {
+ "begin": "(?<!\\.)\\b(foreach)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.loop.foreach.cs"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?x)\n(?:\n (\\bvar\\b)|\n (?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\n)\\s+\n(\\g<identifier>)\\s+\n\\b(in)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.var.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "7": {
+ "name": "entity.name.variable.local.cs"
+ },
+ "8": {
+ "name": "keyword.control.loop.in.cs"
+ }
+ }
+ },
+ {
+ "match": "(?x) # match foreach (var (x, y) in ...)\n(?:\\b(var)\\b\\s*)?\n(?<tuple>\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s+\n\\b(in)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.var.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#tuple-declaration-deconstruction-element-list"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.control.loop.in.cs"
+ }
+ }
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "try-statement": {
+ "patterns": [
+ {
+ "include": "#try-block"
+ },
+ {
+ "include": "#catch-clause"
+ },
+ {
+ "include": "#finally-clause"
+ }
+ ]
+ },
+ "try-block": {
+ "begin": "(?<!\\.)\\b(try)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.try.cs"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#block"
+ }
+ ]
+ },
+ "finally-clause": {
+ "begin": "(?<!\\.)\\b(finally)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.try.finally.cs"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#block"
+ }
+ ]
+ },
+ "catch-clause": {
+ "begin": "(?<!\\.)\\b(catch)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.try.catch.cs"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?x)\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n(?:(\\g<identifier>)\\b)?",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.variable.local.cs"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "include": "#when-clause"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#block"
+ }
+ ]
+ },
+ "when-clause": {
+ "begin": "(?<!\\.)\\b(when)\\b\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.try.when.cs"
+ },
+ "2": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "checked-unchecked-statement": {
+ "begin": "(?<!\\.)\\b(?:(checked)|(unchecked))\\b\\s*(?!\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.checked.cs"
+ },
+ "2": {
+ "name": "keyword.other.unchecked.cs"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "lock-statement": {
+ "begin": "(?<!\\.)\\b(lock)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.lock.cs"
+ }
+ },
+ "end": "(?<=\\})|(?=;)",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "using-statement": {
+ "begin": "(?<!\\.)\\b(using)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.using.cs"
+ }
+ },
+ "end": "(?=\\;|})",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#local-variable-declaration"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#statement"
+ }
+ ]
+ },
+ "labeled-statement": {
+ "match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "entity.name.label.cs"
+ },
+ "2": {
+ "name": "punctuation.separator.colon.cs"
+ }
+ }
+ },
+ "local-declaration": {
+ "patterns": [
+ {
+ "include": "#local-constant-declaration"
+ },
+ {
+ "include": "#local-variable-declaration"
+ },
+ {
+ "include": "#local-function-declaration"
+ },
+ {
+ "include": "#local-tuple-var-deconstruction"
+ }
+ ]
+ },
+ "local-variable-declaration": {
+ "begin": "(?x)\n(?:\n (?:(\\busing)\\s+)?\n (?:(\\bref)\\s+(?:(\\breadonly)\\s+)?)?(\\bvar\\b)| # ref local\n (?<type_name>\n (?:\n (?:ref\\s+(?:readonly\\s+)?)? # ref local\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\n)\\s+\n(\\g<identifier>)\\s*\n(?!=>)\n(?=,|;|=|\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.using.cs"
+ },
+ "2": {
+ "name": "storage.modifier.cs"
+ },
+ "3": {
+ "name": "storage.modifier.cs"
+ },
+ "4": {
+ "name": "keyword.other.var.cs"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "10": {
+ "name": "entity.name.variable.local.cs"
+ }
+ },
+ "end": "(?=;|\\))",
+ "patterns": [
+ {
+ "name": "entity.name.variable.local.cs",
+ "match": "@?[_[:alpha:]][_[:alnum:]]*"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "local-constant-declaration": {
+ "begin": "(?x)\n(?<const_keyword>\\b(?:const)\\b)\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s+\n(\\g<identifier>)\\s*\n(?=,|;|=)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "7": {
+ "name": "entity.name.variable.local.cs"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "name": "entity.name.variable.local.cs",
+ "match": "@?[_[:alpha:]][_[:alnum:]]*"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "local-function-declaration": {
+ "patterns": [
+ {
+ "include": "#method-declaration"
+ }
+ ]
+ },
+ "local-tuple-var-deconstruction": {
+ "begin": "(?x) # e.g. var (x, y) = GetPoint();\n(?:\\b(var)\\b\\s*)\n(?<tuple>\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s*\n(?=;|=|\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.var.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#tuple-declaration-deconstruction-element-list"
+ }
+ ]
+ }
+ },
+ "end": "(?=;|\\))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "tuple-deconstruction-assignment": {
+ "match": "(?x)\n(?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s*\n(?!=>|==)(?==)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#tuple-deconstruction-element-list"
+ }
+ ]
+ }
+ }
+ },
+ "tuple-declaration-deconstruction-element-list": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#tuple-declaration-deconstruction-element-list"
+ },
+ {
+ "include": "#declaration-expression-tuple"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "match": "(?x) # e.g. x\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*\n(?=[,)])",
+ "captures": {
+ "1": {
+ "name": "entity.name.variable.tuple-element.cs"
+ }
+ }
+ }
+ ]
+ },
+ "tuple-deconstruction-element-list": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#tuple-deconstruction-element-list"
+ },
+ {
+ "include": "#declaration-expression-tuple"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "match": "(?x) # e.g. x\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*\n(?=[,)])",
+ "captures": {
+ "1": {
+ "name": "variable.other.readwrite.cs"
+ }
+ }
+ }
+ ]
+ },
+ "declaration-expression-local": {
+ "match": "(?x) # e.g. int x OR var x\n(?:\n \\b(var)\\b|\n (?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\n)\\s+\n(\\g<identifier>)\\b\\s*\n(?=[,)\\]])",
+ "captures": {
+ "1": {
+ "name": "keyword.other.var.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "7": {
+ "name": "entity.name.variable.local.cs"
+ }
+ }
+ },
+ "declaration-expression-tuple": {
+ "match": "(?x) # e.g. int x OR var x\n(?:\n \\b(var)\\b|\n (?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n )\n)\\s+\n(\\g<identifier>)\\b\\s*\n(?=[,)])",
+ "captures": {
+ "1": {
+ "name": "keyword.other.var.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "7": {
+ "name": "entity.name.variable.tuple-element.cs"
+ }
+ }
+ },
+ "checked-unchecked-expression": {
+ "begin": "(?<!\\.)\\b(?:(checked)|(unchecked))\\b\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.checked.cs"
+ },
+ "2": {
+ "name": "keyword.other.unchecked.cs"
+ },
+ "3": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "typeof-or-default-expression": {
+ "begin": "(?<!\\.)\\b(?:(typeof)|(default))\\b\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.typeof.cs"
+ },
+ "2": {
+ "name": "keyword.other.default.cs"
+ },
+ "3": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "nameof-expression": {
+ "begin": "(?<!\\.)\\b(nameof)\\b\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.nameof.cs"
+ },
+ "2": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "throw-expression": {
+ "match": "(?<!\\.)\\b(throw)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.throw.cs"
+ }
+ }
+ },
+ "interpolated-string": {
+ "name": "string.quoted.double.cs",
+ "begin": "\\$\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cs"
+ }
+ },
+ "end": "(\")|((?:[^\\\\\\n])$)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.cs"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ "verbatim-interpolated-string": {
+ "name": "string.quoted.double.cs",
+ "begin": "(?:\\$@|@\\$)\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cs"
+ }
+ },
+ "end": "\"(?=[^\"])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#verbatim-string-character-escape"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ "interpolation": {
+ "name": "meta.interpolation.cs",
+ "begin": "(?<=[^\\{]|^)((?:\\{\\{)*)(\\{)(?=[^\\{])",
+ "beginCaptures": {
+ "1": {
+ "name": "string.quoted.double.cs"
+ },
+ "2": {
+ "name": "punctuation.definition.interpolation.begin.cs"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.interpolation.end.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "raw-interpolated-string": {
+ "patterns": [
+ {
+ "include": "#raw-interpolated-string-five-or-more-quote-one-or-more-interpolation"
+ },
+ {
+ "include": "#raw-interpolated-string-three-or-more-quote-three-or-more-interpolation"
+ },
+ {
+ "include": "#raw-interpolated-string-quadruple-quote-double-interpolation"
+ },
+ {
+ "include": "#raw-interpolated-string-quadruple-quote-single-interpolation"
+ },
+ {
+ "include": "#raw-interpolated-string-triple-quote-double-interpolation"
+ },
+ {
+ "include": "#raw-interpolated-string-triple-quote-single-interpolation"
+ }
+ ]
+ },
+ "raw-interpolated-string-triple-quote-single-interpolation": {
+ "name": "string.quoted.double.cs",
+ "begin": "\\$\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cs"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#raw-interpolation"
+ }
+ ]
+ },
+ "raw-interpolated-string-triple-quote-double-interpolation": {
+ "name": "string.quoted.double.cs",
+ "begin": "\\$\\$\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cs"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-raw-interpolation"
+ }
+ ]
+ },
+ "raw-interpolated-string-quadruple-quote-single-interpolation": {
+ "name": "string.quoted.double.cs",
+ "begin": "\\$\"\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cs"
+ }
+ },
+ "end": "\"\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#raw-interpolation"
+ }
+ ]
+ },
+ "raw-interpolated-string-quadruple-quote-double-interpolation": {
+ "name": "string.quoted.double.cs",
+ "begin": "\\$\\$\"\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cs"
+ }
+ },
+ "end": "\"\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-raw-interpolation"
+ }
+ ]
+ },
+ "raw-interpolated-string-three-or-more-quote-three-or-more-interpolation": {
+ "name": "string.quoted.double.cs",
+ "begin": "\\$\\$\\$+\"\"\"+",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cs"
+ }
+ },
+ "end": "\"\"\"+",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cs"
+ }
+ }
+ },
+ "raw-interpolated-string-five-or-more-quote-one-or-more-interpolation": {
+ "name": "string.quoted.double.cs",
+ "begin": "\\$+\"\"\"\"\"+",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cs"
+ }
+ },
+ "end": "\"\"\"\"\"+",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cs"
+ }
+ }
+ },
+ "raw-interpolation": {
+ "name": "meta.interpolation.cs",
+ "begin": "(?<=[^\\{]|^)((?:\\{)*)(\\{)(?=[^\\{])",
+ "beginCaptures": {
+ "1": {
+ "name": "string.quoted.double.cs"
+ },
+ "2": {
+ "name": "punctuation.definition.interpolation.begin.cs"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.interpolation.end.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "double-raw-interpolation": {
+ "name": "meta.interpolation.cs",
+ "begin": "(?<=[^\\{][^\\{]|^)((?:\\{)*)(\\{\\{)(?=[^\\{])",
+ "beginCaptures": {
+ "1": {
+ "name": "string.quoted.double.cs"
+ },
+ "2": {
+ "name": "punctuation.definition.interpolation.begin.cs"
+ }
+ },
+ "end": "\\}\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.interpolation.end.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "literal": {
+ "patterns": [
+ {
+ "include": "#boolean-literal"
+ },
+ {
+ "include": "#null-literal"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#char-literal"
+ },
+ {
+ "include": "#raw-string-literal"
+ },
+ {
+ "include": "#string-literal"
+ },
+ {
+ "include": "#verbatim-string-literal"
+ },
+ {
+ "include": "#tuple-literal"
+ }
+ ]
+ },
+ "boolean-literal": {
+ "patterns": [
+ {
+ "name": "constant.language.boolean.true.cs",
+ "match": "(?<!\\.)\\btrue\\b"
+ },
+ {
+ "name": "constant.language.boolean.false.cs",
+ "match": "(?<!\\.)\\bfalse\\b"
+ }
+ ]
+ },
+ "null-literal": {
+ "name": "constant.language.null.cs",
+ "match": "(?<!\\.)\\bnull\\b"
+ },
+ "numeric-literal": {
+ "match": "(?<!\\w)\\.?\\d(?:(?:[0-9a-zA-Z_]|_)|(?<=[eE])[+-]|\\.\\d)*",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "begin": "(?=.)",
+ "end": "$",
+ "patterns": [
+ {
+ "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])))*)))?([fFdDmM](?!\\w))?$",
+ "captures": {
+ "2": {
+ "name": "constant.numeric.decimal.cs",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "constant.numeric.other.separator.thousands.cs"
+ }
+ ]
+ },
+ "3": {
+ "name": "constant.numeric.other.separator.thousands.cs"
+ },
+ "4": {
+ "name": "constant.numeric.other.separator.decimals.cs"
+ },
+ "5": {
+ "name": "constant.numeric.decimal.cs",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "constant.numeric.other.separator.thousands.cs"
+ }
+ ]
+ },
+ "6": {
+ "name": "constant.numeric.other.separator.thousands.cs"
+ },
+ "8": {
+ "name": "constant.numeric.other.exponent.cs"
+ },
+ "9": {
+ "name": "keyword.operator.arithmetic.cs"
+ },
+ "10": {
+ "name": "keyword.operator.arithmetic.cs"
+ },
+ "11": {
+ "name": "constant.numeric.decimal.cs",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "constant.numeric.other.separator.thousands.cs"
+ }
+ ]
+ },
+ "12": {
+ "name": "constant.numeric.other.suffix.cs"
+ }
+ }
+ },
+ {
+ "match": "(\\G0[bB])([01_](?:[01_]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\w))?$",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.other.preffix.binary.cs"
+ },
+ "2": {
+ "name": "constant.numeric.binary.cs",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "constant.numeric.other.separator.thousands.cs"
+ }
+ ]
+ },
+ "3": {
+ "name": "constant.numeric.other.separator.thousands.cs"
+ },
+ "4": {
+ "name": "constant.numeric.other.suffix.cs"
+ }
+ }
+ },
+ {
+ "match": "(\\G0[xX])([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)((?:(?:(?:(?:(?:[uU]|[uU]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\w))?$",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.other.preffix.hex.cs"
+ },
+ "2": {
+ "name": "constant.numeric.hex.cs",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "constant.numeric.other.separator.thousands.cs"
+ }
+ ]
+ },
+ "3": {
+ "name": "constant.numeric.other.separator.thousands.cs"
+ },
+ "4": {
+ "name": "constant.numeric.other.suffix.cs"
+ }
+ }
+ },
+ {
+ "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]l)|[uU]L)|l[uU]?)|L[uU]?)|[fFdDmM])(?!\\w))?$",
+ "captures": {
+ "2": {
+ "name": "constant.numeric.decimal.cs",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "constant.numeric.other.separator.thousands.cs"
+ }
+ ]
+ },
+ "3": {
+ "name": "constant.numeric.other.separator.thousands.cs"
+ },
+ "5": {
+ "name": "constant.numeric.other.exponent.cs"
+ },
+ "6": {
+ "name": "keyword.operator.arithmetic.cs"
+ },
+ "7": {
+ "name": "keyword.operator.arithmetic.cs"
+ },
+ "8": {
+ "name": "constant.numeric.decimal.cs",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "constant.numeric.other.separator.thousands.cs"
+ }
+ ]
+ },
+ "9": {
+ "name": "constant.numeric.other.suffix.cs"
+ }
+ }
+ },
+ {
+ "match": "(?:(?:[0-9a-zA-Z_]|_)|(?<=[eE])[+-]|\\.\\d)+",
+ "name": "invalid.illegal.constant.numeric.cs"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "char-literal": {
+ "name": "string.quoted.single.cs",
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.char.begin.cs"
+ }
+ },
+ "end": "(\\')|((?:[^\\\\\\n])$)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.char.end.cs"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#char-character-escape"
+ }
+ ]
+ },
+ "char-character-escape": {
+ "name": "constant.character.escape.cs",
+ "match": "\\\\(['\"\\\\0abfnrtv]|x[0-9a-fA-F]{1,4}|u[0-9a-fA-F]{4})"
+ },
+ "string-literal": {
+ "name": "string.quoted.double.cs",
+ "begin": "(?<!@)\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cs"
+ }
+ },
+ "end": "(\")|((?:[^\\\\\\n])$)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.cs"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "string-character-escape": {
+ "name": "constant.character.escape.cs",
+ "match": "\\\\(['\"\\\\0abfnrtv]|x[0-9a-fA-F]{1,4}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4})"
+ },
+ "verbatim-string-literal": {
+ "name": "string.quoted.double.cs",
+ "begin": "@\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cs"
+ }
+ },
+ "end": "\"(?=[^\"])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#verbatim-string-character-escape"
+ }
+ ]
+ },
+ "verbatim-string-character-escape": {
+ "name": "constant.character.escape.cs",
+ "match": "\"\""
+ },
+ "raw-string-literal": {
+ "patterns": [
+ {
+ "include": "#raw-string-literal-more"
+ },
+ {
+ "include": "#raw-string-literal-quadruple"
+ },
+ {
+ "include": "#raw-string-literal-triple"
+ }
+ ]
+ },
+ "raw-string-literal-triple": {
+ "name": "string.quoted.double.cs",
+ "begin": "\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cs"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cs"
+ }
+ }
+ },
+ "raw-string-literal-quadruple": {
+ "name": "string.quoted.double.cs",
+ "begin": "\"\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cs"
+ }
+ },
+ "end": "\"\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cs"
+ }
+ }
+ },
+ "raw-string-literal-more": {
+ "name": "string.quoted.double.cs",
+ "begin": "\"\"\"\"\"+",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cs"
+ }
+ },
+ "end": "\"\"\"\"\"+",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cs"
+ }
+ }
+ },
+ "tuple-literal": {
+ "begin": "(\\()(?=.*[:,])",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#tuple-literal-element"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "tuple-literal-element": {
+ "begin": "(?x)\n(@?[_[:alpha:]][_[:alnum:]]*)\\s*\n(?=:)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.variable.tuple-element.cs"
+ }
+ },
+ "end": "(:)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.separator.colon.cs"
+ }
+ }
+ },
+ "expression-operators": {
+ "patterns": [
+ {
+ "name": "keyword.operator.assignment.compound.cs",
+ "match": "\\*=|/=|%=|\\+=|-=|\\?\\?="
+ },
+ {
+ "name": "keyword.operator.assignment.compound.bitwise.cs",
+ "match": "\\&=|\\^=|<<=|>>=|\\|="
+ },
+ {
+ "name": "keyword.operator.bitwise.shift.cs",
+ "match": "<<|>>"
+ },
+ {
+ "name": "keyword.operator.comparison.cs",
+ "match": "==|!="
+ },
+ {
+ "name": "keyword.operator.relational.cs",
+ "match": "<=|>=|<|>"
+ },
+ {
+ "name": "keyword.operator.logical.cs",
+ "match": "\\!|&&|\\|\\|"
+ },
+ {
+ "name": "keyword.operator.bitwise.cs",
+ "match": "\\&|~|\\^|\\|"
+ },
+ {
+ "name": "keyword.operator.assignment.cs",
+ "match": "\\="
+ },
+ {
+ "name": "keyword.operator.decrement.cs",
+ "match": "--"
+ },
+ {
+ "name": "keyword.operator.increment.cs",
+ "match": "\\+\\+"
+ },
+ {
+ "name": "keyword.operator.arithmetic.cs",
+ "match": "%|\\*|/|-|\\+"
+ },
+ {
+ "name": "keyword.operator.null-coalescing.cs",
+ "match": "\\?\\?"
+ }
+ ]
+ },
+ "switch-literal": {
+ "name": "constant.language.null.cs",
+ "match": "(?<!\\.)\\bnull\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.language.null.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#expression-body"
+ }
+ ]
+ },
+ "conditional-operator": {
+ "begin": "\\?(?!\\s*[?.\\[]|\\s*$)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.question-mark.cs"
+ }
+ },
+ "end": ":",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.colon.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "await-expression": {
+ "name": "keyword.other.await.cs",
+ "match": "(?!\\.)\\b(await)\\b"
+ },
+ "parenthesized-expression": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "initializer-expression": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.open.cs"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.curlybrace.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "identifier": {
+ "name": "variable.other.readwrite.cs",
+ "match": "@?[_[:alpha:]][_[:alnum:]]*"
+ },
+ "cast-expression": {
+ "match": "(?x)\n(\\()\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n(\\))(?=\\s*-*!*@?[_[:alnum:]\\(])",
+ "captures": {
+ "1": {
+ "name": "punctuation.parenthesis.open.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "7": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ }
+ },
+ "as-expression": {
+ "match": "(?x)\n(?<!\\.)\\b(as)\\b\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)?",
+ "captures": {
+ "1": {
+ "name": "keyword.other.as.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ }
+ },
+ "is-expression": {
+ "match": "(?x)\n(?<!\\.)\\b(is)\\b\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)?",
+ "captures": {
+ "1": {
+ "name": "keyword.other.is.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ }
+ },
+ "this-or-base-expression": {
+ "match": "\\b(?:(base)|(this))\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.base.cs"
+ },
+ "2": {
+ "name": "keyword.other.this.cs"
+ }
+ }
+ },
+ "invocation-expression": {
+ "begin": "(?x)\n(?:(\\?)\\s*)? # preceding null-conditional operator?\n(?:(\\.)\\s*)? # preceding dot?\n(@?[_[:alpha:]][_[:alnum:]]*)\\s* # method name\n(?<type_args>\\s*<([^<>]|\\g<type_args>)+>\\s*)?\\s* # type arguments\n(?=\\() # open paren of argument list",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.null-conditional.cs"
+ },
+ "2": {
+ "name": "punctuation.accessor.cs"
+ },
+ "3": {
+ "name": "entity.name.function.cs"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#argument-list"
+ }
+ ]
+ },
+ "element-access-expression": {
+ "begin": "(?x)\n(?:(\\?)\\s*)? # preceding null-conditional operator?\n(?:(\\.)\\s*)? # preceding dot?\n(?:(@?[_[:alpha:]][_[:alnum:]]*)\\s*)? # property name\n(?:(\\?)\\s*)? # null-conditional operator?\n(?=\\[) # open bracket of argument list",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.null-conditional.cs"
+ },
+ "2": {
+ "name": "punctuation.accessor.cs"
+ },
+ "3": {
+ "name": "variable.other.object.property.cs"
+ },
+ "4": {
+ "name": "keyword.operator.null-conditional.cs"
+ }
+ },
+ "end": "(?<=\\])(?!\\s*\\[)",
+ "patterns": [
+ {
+ "include": "#bracketed-argument-list"
+ }
+ ]
+ },
+ "member-access-expression": {
+ "patterns": [
+ {
+ "match": "(?x)\n(?:(\\?)\\s*)? # preceding null-conditional operator?\n(\\.)\\s* # preceding dot\n(@?[_[:alpha:]][_[:alnum:]]*)\\s* # property name\n(?![_[:alnum:]]|\\(|(\\?)?\\[|<) # next character is not alpha-numeric, nor a (, [, or <. Also, test for ?[",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.null-conditional.cs"
+ },
+ "2": {
+ "name": "punctuation.accessor.cs"
+ },
+ "3": {
+ "name": "variable.other.object.property.cs"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(\\.)?\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\n(?<type_params>\\s*<([^<>]|\\g<type_params>)+>\\s*)\n(?=\n (\\s*\\?)?\n \\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]*\n)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.cs"
+ },
+ "2": {
+ "name": "variable.other.object.cs"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(@?[_[:alpha:]][_[:alnum:]]*)\n(?=\n (\\s*\\?)?\n \\s*\\.\\s*@?[_[:alpha:]][_[:alnum:]]*\n)",
+ "captures": {
+ "1": {
+ "name": "variable.other.object.cs"
+ }
+ }
+ }
+ ]
+ },
+ "object-creation-expression": {
+ "patterns": [
+ {
+ "include": "#object-creation-expression-with-parameters"
+ },
+ {
+ "include": "#object-creation-expression-with-no-parameters"
+ }
+ ]
+ },
+ "object-creation-expression-with-parameters": {
+ "begin": "(?x)\n(new)\\s+\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.new.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#argument-list"
+ }
+ ]
+ },
+ "object-creation-expression-with-no-parameters": {
+ "match": "(?x)\n(new)\\s+\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s*\n(?=\\{|$)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.new.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ }
+ },
+ "array-creation-expression": {
+ "begin": "(?x)\n\\b(new|stackalloc)\\b\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)?\\s*\n(?=\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.new.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\])",
+ "patterns": [
+ {
+ "include": "#bracketed-argument-list"
+ }
+ ]
+ },
+ "anonymous-object-creation-expression": {
+ "begin": "\\b(new)\\b\\s*(?=\\{|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.new.cs"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#initializer-expression"
+ }
+ ]
+ },
+ "bracketed-parameter-list": {
+ "begin": "(?=(\\[))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.squarebracket.open.cs"
+ }
+ },
+ "end": "(?=(\\]))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.squarebracket.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?<=\\[)",
+ "end": "(?=\\])",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#attribute-section"
+ },
+ {
+ "include": "#parameter"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ }
+ ]
+ },
+ "parenthesized-parameter-list": {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#attribute-section"
+ },
+ {
+ "include": "#parameter"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "parameter": {
+ "match": "(?x)\n(?:(?:\\b(ref|params|out|in|this)\\b)\\s+)?\n(?<type_name>\n (?:\n (?:ref\\s+)? # ref return\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s+\n(\\g<identifier>)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "7": {
+ "name": "entity.name.variable.parameter.cs"
+ }
+ }
+ },
+ "argument-list": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#named-argument"
+ },
+ {
+ "include": "#argument"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "bracketed-argument-list": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.squarebracket.open.cs"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.squarebracket.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#named-argument"
+ },
+ {
+ "include": "#argument"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "named-argument": {
+ "begin": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.variable.parameter.cs"
+ },
+ "2": {
+ "name": "punctuation.separator.colon.cs"
+ }
+ },
+ "end": "(?=(,|\\)|\\]))",
+ "patterns": [
+ {
+ "include": "#argument"
+ }
+ ]
+ },
+ "argument": {
+ "patterns": [
+ {
+ "name": "storage.modifier.cs",
+ "match": "\\b(ref|out|in)\\b"
+ },
+ {
+ "include": "#declaration-expression-local"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "query-expression": {
+ "begin": "(?x)\n\\b(from)\\b\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)?\n\\s+(\\g<identifier>)\\b\\s*\n\\b(in)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.query.from.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "7": {
+ "name": "entity.name.variable.range-variable.cs"
+ },
+ "8": {
+ "name": "keyword.query.in.cs"
+ }
+ },
+ "end": "(?=;|\\))",
+ "patterns": [
+ {
+ "include": "#query-body"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "query-body": {
+ "patterns": [
+ {
+ "include": "#let-clause"
+ },
+ {
+ "include": "#where-clause"
+ },
+ {
+ "include": "#join-clause"
+ },
+ {
+ "include": "#orderby-clause"
+ },
+ {
+ "include": "#select-clause"
+ },
+ {
+ "include": "#group-clause"
+ }
+ ]
+ },
+ "let-clause": {
+ "begin": "(?x)\n\\b(let)\\b\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*\n(=)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.query.let.cs"
+ },
+ "2": {
+ "name": "entity.name.variable.range-variable.cs"
+ },
+ "3": {
+ "name": "keyword.operator.assignment.cs"
+ }
+ },
+ "end": "(?=;|\\))",
+ "patterns": [
+ {
+ "include": "#query-body"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "where-clause": {
+ "begin": "(?x)\n\\b(where)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.query.where.cs"
+ }
+ },
+ "end": "(?=;|\\))",
+ "patterns": [
+ {
+ "include": "#query-body"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "join-clause": {
+ "begin": "(?x)\n\\b(join)\\b\\s*\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)?\n\\s+(\\g<identifier>)\\b\\s*\n\\b(in)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.query.join.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "7": {
+ "name": "entity.name.variable.range-variable.cs"
+ },
+ "8": {
+ "name": "keyword.query.in.cs"
+ }
+ },
+ "end": "(?=;|\\))",
+ "patterns": [
+ {
+ "include": "#join-on"
+ },
+ {
+ "include": "#join-equals"
+ },
+ {
+ "include": "#join-into"
+ },
+ {
+ "include": "#query-body"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "join-on": {
+ "match": "\\b(on)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.query.on.cs"
+ }
+ }
+ },
+ "join-equals": {
+ "match": "\\b(equals)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.query.equals.cs"
+ }
+ }
+ },
+ "join-into": {
+ "match": "(?x)\n\\b(into)\\b\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.query.into.cs"
+ },
+ "2": {
+ "name": "entity.name.variable.range-variable.cs"
+ }
+ }
+ },
+ "orderby-clause": {
+ "begin": "\\b(orderby)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.query.orderby.cs"
+ }
+ },
+ "end": "(?=;|\\))",
+ "patterns": [
+ {
+ "include": "#ordering-direction"
+ },
+ {
+ "include": "#query-body"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "ordering-direction": {
+ "match": "\\b(?:(ascending)|(descending))\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.query.ascending.cs"
+ },
+ "2": {
+ "name": "keyword.query.descending.cs"
+ }
+ }
+ },
+ "select-clause": {
+ "begin": "\\b(select)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.query.select.cs"
+ }
+ },
+ "end": "(?=;|\\))",
+ "patterns": [
+ {
+ "include": "#query-body"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "group-clause": {
+ "begin": "\\b(group)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.query.group.cs"
+ }
+ },
+ "end": "(?=;|\\))",
+ "patterns": [
+ {
+ "include": "#group-by"
+ },
+ {
+ "include": "#group-into"
+ },
+ {
+ "include": "#query-body"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "group-by": {
+ "match": "\\b(by)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.query.by.cs"
+ }
+ }
+ },
+ "group-into": {
+ "match": "(?x)\n\\b(into)\\b\\s*\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.query.into.cs"
+ },
+ "2": {
+ "name": "entity.name.variable.range-variable.cs"
+ }
+ }
+ },
+ "anonymous-method-expression": {
+ "patterns": [
+ {
+ "begin": "(?x)\n(?:\\b(async)\\b\\s*)?\n(@?[_[:alpha:]][_[:alnum:]]*)\\b\\s*\n(=>)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.cs"
+ },
+ "2": {
+ "name": "entity.name.variable.parameter.cs"
+ },
+ "3": {
+ "name": "keyword.operator.arrow.cs"
+ }
+ },
+ "end": "(?=\\)|;|}|,)",
+ "patterns": [
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#ref-modifier"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n(?:\\b(async)\\b\\s*)?\n(\\(.*?\\))\\s*\n(=>)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#lambda-parameter-list"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.operator.arrow.cs"
+ }
+ },
+ "end": "(?=\\)|;|}|,)",
+ "patterns": [
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#ref-modifier"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n(?:\\b(async)\\b\\s*)?\n(?:\\b(delegate)\\b\\s*)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.cs"
+ },
+ "2": {
+ "name": "keyword.other.delegate.cs"
+ }
+ },
+ "end": "(?=\\)|;|}|,)",
+ "patterns": [
+ {
+ "include": "#parenthesized-parameter-list"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "lambda-parameter-list": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#attribute-section"
+ },
+ {
+ "include": "#lambda-parameter"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "lambda-parameter": {
+ "match": "(?x)\n(?:\\b(ref|out|in)\\b)?\\s*\n(?:(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\\s+)?\n(\\g<identifier>)\\b\\s*\n(?=[,)])",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "7": {
+ "name": "entity.name.variable.parameter.cs"
+ }
+ }
+ },
+ "type": {
+ "name": "meta.type.cs",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#ref-modifier"
+ },
+ {
+ "include": "#readonly-modifier"
+ },
+ {
+ "include": "#tuple-type"
+ },
+ {
+ "include": "#type-builtin"
+ },
+ {
+ "include": "#type-name"
+ },
+ {
+ "include": "#type-arguments"
+ },
+ {
+ "include": "#type-array-suffix"
+ },
+ {
+ "include": "#type-nullable-suffix"
+ }
+ ]
+ },
+ "ref-modifier": {
+ "name": "storage.modifier.cs",
+ "match": "\\b(ref)\\b"
+ },
+ "readonly-modifier": {
+ "name": "storage.modifier.cs",
+ "match": "\\b(readonly)\\b"
+ },
+ "tuple-type": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tuple-element"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "tuple-element": {
+ "match": "(?x)\n(?<type_name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name_and_type_args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type_args>\\s*<(?:[^<>]|\\g<type_args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name_and_type_args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s* # array suffix?\n \\[\n (?:\\s*,\\s*)* # commata for multi-dimensional arrays\n \\]\n \\s*\n (?:\\?)? # arrays can be nullable reference types\n \\s*\n )*\n )\n)\n(?:(?<tuple_name>\\g<identifier>)\\b)?",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.variable.tuple-element.cs"
+ }
+ }
+ },
+ "type-builtin": {
+ "match": "\\b(bool|byte|char|decimal|double|float|int|long|object|sbyte|short|string|uint|ulong|ushort|void|dynamic)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.type.cs"
+ }
+ }
+ },
+ "type-name": {
+ "patterns": [
+ {
+ "match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\:\\:)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.alias.cs"
+ },
+ "2": {
+ "name": "punctuation.separator.coloncolon.cs"
+ }
+ }
+ },
+ {
+ "match": "(@?[_[:alpha:]][_[:alnum:]]*)\\s*(\\.)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.cs"
+ },
+ "2": {
+ "name": "punctuation.accessor.cs"
+ }
+ }
+ },
+ {
+ "match": "(\\.)\\s*(@?[_[:alpha:]][_[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.cs"
+ },
+ "2": {
+ "name": "entity.name.type.cs"
+ }
+ }
+ },
+ {
+ "name": "entity.name.type.cs",
+ "match": "@?[_[:alpha:]][_[:alnum:]]*"
+ }
+ ]
+ },
+ "type-arguments": {
+ "begin": "<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.begin.cs"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.end.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "type-array-suffix": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.squarebracket.open.cs"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.squarebracket.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "type-nullable-suffix": {
+ "match": "\\?",
+ "captures": {
+ "0": {
+ "name": "punctuation.separator.question-mark.cs"
+ }
+ }
+ },
+ "operator-assignment": {
+ "name": "keyword.operator.assignment.cs",
+ "match": "(?<!=|!)(=)(?!=)"
+ },
+ "punctuation-comma": {
+ "name": "punctuation.separator.comma.cs",
+ "match": ","
+ },
+ "punctuation-semicolon": {
+ "name": "punctuation.terminator.statement.cs",
+ "match": ";"
+ },
+ "punctuation-accessor": {
+ "name": "punctuation.accessor.cs",
+ "match": "\\."
+ },
+ "preprocessor": {
+ "name": "meta.preprocessor.cs",
+ "begin": "^\\s*(\\#)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.hash.cs"
+ }
+ },
+ "end": "(?<=$)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#preprocessor-define-or-undef"
+ },
+ {
+ "include": "#preprocessor-if-or-elif"
+ },
+ {
+ "include": "#preprocessor-else-or-endif"
+ },
+ {
+ "include": "#preprocessor-warning-or-error"
+ },
+ {
+ "include": "#preprocessor-region"
+ },
+ {
+ "include": "#preprocessor-endregion"
+ },
+ {
+ "include": "#preprocessor-load"
+ },
+ {
+ "include": "#preprocessor-r"
+ },
+ {
+ "include": "#preprocessor-line"
+ },
+ {
+ "include": "#preprocessor-pragma-warning"
+ },
+ {
+ "include": "#preprocessor-pragma-checksum"
+ }
+ ]
+ },
+ "preprocessor-define-or-undef": {
+ "match": "\\b(?:(define)|(undef))\\b\\s*\\b([_[:alpha:]][_[:alnum:]]*)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.preprocessor.define.cs"
+ },
+ "2": {
+ "name": "keyword.preprocessor.undef.cs"
+ },
+ "3": {
+ "name": "entity.name.variable.preprocessor.symbol.cs"
+ }
+ }
+ },
+ "preprocessor-if-or-elif": {
+ "begin": "\\b(?:(if)|(elif))\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.preprocessor.if.cs"
+ },
+ "2": {
+ "name": "keyword.preprocessor.elif.cs"
+ }
+ },
+ "end": "(?=$)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#preprocessor-expression"
+ }
+ ]
+ },
+ "preprocessor-else-or-endif": {
+ "match": "\\b(?:(else)|(endif))\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.preprocessor.else.cs"
+ },
+ "2": {
+ "name": "keyword.preprocessor.endif.cs"
+ }
+ }
+ },
+ "preprocessor-warning-or-error": {
+ "match": "\\b(?:(warning)|(error))\\b\\s*(.*)(?=$)",
+ "captures": {
+ "1": {
+ "name": "keyword.preprocessor.warning.cs"
+ },
+ "2": {
+ "name": "keyword.preprocessor.error.cs"
+ },
+ "3": {
+ "name": "string.unquoted.preprocessor.message.cs"
+ }
+ }
+ },
+ "preprocessor-load": {
+ "begin": "\\b(load)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.preprocessor.load.cs"
+ }
+ },
+ "end": "(?=$)",
+ "patterns": [
+ {
+ "match": "\\\"[^\"]*\\\"",
+ "captures": {
+ "0": {
+ "name": "string.quoted.double.cs"
+ }
+ }
+ }
+ ]
+ },
+ "preprocessor-r": {
+ "begin": "\\b(r)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.preprocessor.r.cs"
+ }
+ },
+ "end": "(?=$)",
+ "patterns": [
+ {
+ "match": "\\\"[^\"]*\\\"",
+ "captures": {
+ "0": {
+ "name": "string.quoted.double.cs"
+ }
+ }
+ }
+ ]
+ },
+ "preprocessor-region": {
+ "match": "\\b(region)\\b\\s*(.*)(?=$)",
+ "captures": {
+ "1": {
+ "name": "keyword.preprocessor.region.cs"
+ },
+ "2": {
+ "name": "string.unquoted.preprocessor.message.cs"
+ }
+ }
+ },
+ "preprocessor-endregion": {
+ "match": "\\b(endregion)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.preprocessor.endregion.cs"
+ }
+ }
+ },
+ "preprocessor-line": {
+ "begin": "\\b(line)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.preprocessor.line.cs"
+ }
+ },
+ "end": "(?=$)",
+ "patterns": [
+ {
+ "match": "\\b(?:(default|hidden))",
+ "captures": {
+ "1": {
+ "name": "keyword.preprocessor.default.cs"
+ },
+ "2": {
+ "name": "keyword.preprocessor.hidden.cs"
+ }
+ }
+ },
+ {
+ "match": "[0-9]+",
+ "captures": {
+ "0": {
+ "name": "constant.numeric.decimal.cs"
+ }
+ }
+ },
+ {
+ "match": "\\\"[^\"]*\\\"",
+ "captures": {
+ "0": {
+ "name": "string.quoted.double.cs"
+ }
+ }
+ }
+ ]
+ },
+ "preprocessor-pragma-warning": {
+ "match": "\\b(pragma)\\b\\s*\\b(warning)\\b\\s*\\b(?:(disable)|(restore))\\b(\\s*[0-9]+(?:\\s*,\\s*[0-9]+)?)?",
+ "captures": {
+ "1": {
+ "name": "keyword.preprocessor.pragma.cs"
+ },
+ "2": {
+ "name": "keyword.preprocessor.warning.cs"
+ },
+ "3": {
+ "name": "keyword.preprocessor.disable.cs"
+ },
+ "4": {
+ "name": "keyword.preprocessor.restore.cs"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "[0-9]+",
+ "captures": {
+ "0": {
+ "name": "constant.numeric.decimal.cs"
+ }
+ }
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ }
+ },
+ "preprocessor-pragma-checksum": {
+ "match": "\\b(pragma)\\b\\s*\\b(checksum)\\b\\s*(\\\"[^\"]*\\\")\\s*(\\\"[^\"]*\\\")\\s*(\\\"[^\"]*\\\")",
+ "captures": {
+ "1": {
+ "name": "keyword.preprocessor.pragma.cs"
+ },
+ "2": {
+ "name": "keyword.preprocessor.checksum.cs"
+ },
+ "3": {
+ "name": "string.quoted.double.cs"
+ },
+ "4": {
+ "name": "string.quoted.double.cs"
+ },
+ "5": {
+ "name": "string.quoted.double.cs"
+ }
+ }
+ },
+ "preprocessor-expression": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-expression"
+ }
+ ]
+ },
+ {
+ "match": "\\b(?:(true)|(false)|([_[:alpha:]][_[:alnum:]]*))\\b",
+ "captures": {
+ "1": {
+ "name": "constant.language.boolean.true.cs"
+ },
+ "2": {
+ "name": "constant.language.boolean.false.cs"
+ },
+ "3": {
+ "name": "entity.name.variable.preprocessor.symbol.cs"
+ }
+ }
+ },
+ {
+ "match": "(==|!=)|(\\!|&&|\\|\\|)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.comparison.cs"
+ },
+ "2": {
+ "name": "keyword.operator.logical.cs"
+ }
+ }
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "name": "comment.block.cs",
+ "begin": "/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.cs"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.cs"
+ }
+ }
+ },
+ {
+ "begin": "(^\\s+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.cs"
+ }
+ },
+ "end": "(?=$)",
+ "patterns": [
+ {
+ "name": "comment.block.documentation.cs",
+ "begin": "(?<!/)///(?!/)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.cs"
+ }
+ },
+ "end": "(?=$)",
+ "patterns": [
+ {
+ "include": "#xml-doc-comment"
+ }
+ ]
+ },
+ {
+ "name": "comment.line.double-slash.cs",
+ "begin": "(?<!/)//(?:(?!/)|(?=//))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.cs"
+ }
+ },
+ "end": "(?=$)"
+ }
+ ]
+ }
+ ]
+ },
+ "xml-doc-comment": {
+ "patterns": [
+ {
+ "include": "#xml-comment"
+ },
+ {
+ "include": "#xml-character-entity"
+ },
+ {
+ "include": "#xml-cdata"
+ },
+ {
+ "include": "#xml-tag"
+ }
+ ]
+ },
+ "xml-tag": {
+ "name": "meta.tag.cs",
+ "begin": "(?x)\n(</?)\n(\n (?:\n ([-_[:alnum:]]+)\n (:)\n )?\n ([-_[:alnum:]]+)\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.cs"
+ },
+ "2": {
+ "name": "entity.name.tag.cs"
+ },
+ "3": {
+ "name": "entity.name.tag.namespace.cs"
+ },
+ "4": {
+ "name": "punctuation.separator.colon.cs"
+ },
+ "5": {
+ "name": "entity.name.tag.localname.cs"
+ }
+ },
+ "end": "(/?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#xml-attribute"
+ }
+ ]
+ },
+ "xml-attribute": {
+ "patterns": [
+ {
+ "match": "(?x)\n(?:^|\\s+)\n(\n (?:\n ([-_[:alnum:]]+)\n (:)\n )?\n ([-_[:alnum:]]+)\n)\n(=)",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.cs"
+ },
+ "2": {
+ "name": "entity.other.attribute-name.namespace.cs"
+ },
+ "3": {
+ "name": "punctuation.separator.colon.cs"
+ },
+ "4": {
+ "name": "entity.other.attribute-name.localname.cs"
+ },
+ "5": {
+ "name": "punctuation.separator.equals.cs"
+ }
+ }
+ },
+ {
+ "include": "#xml-string"
+ }
+ ]
+ },
+ "xml-cdata": {
+ "name": "string.unquoted.cdata.cs",
+ "begin": "<!\\[CDATA\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cs"
+ }
+ },
+ "end": "\\]\\]>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cs"
+ }
+ }
+ },
+ "xml-string": {
+ "patterns": [
+ {
+ "name": "string.quoted.single.cs",
+ "begin": "\\'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cs"
+ }
+ },
+ "end": "\\'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#xml-character-entity"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.double.cs",
+ "begin": "\\\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.cs"
+ }
+ },
+ "end": "\\\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#xml-character-entity"
+ }
+ ]
+ }
+ ]
+ },
+ "xml-character-entity": {
+ "patterns": [
+ {
+ "name": "constant.character.entity.cs",
+ "match": "(?x)\n(&)\n(\n (?:[[:alpha:]:_][[:alnum:]:_.-]*)|\n (?:\\#[[:digit:]]+)|\n (?:\\#x[[:xdigit:]]+)\n)\n(;)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.cs"
+ },
+ "3": {
+ "name": "punctuation.definition.constant.cs"
+ }
+ }
+ },
+ {
+ "name": "invalid.illegal.bad-ampersand.cs",
+ "match": "&"
+ }
+ ]
+ },
+ "xml-comment": {
+ "name": "comment.block.cs",
+ "begin": "<!--",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.cs"
+ }
+ },
+ "end": "-->",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.cs"
+ }
+ }
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/css.tmLanguage.json b/node_modules/shiki/languages/css.tmLanguage.json
new file mode 100644
index 0000000..cfb6612
--- /dev/null
+++ b/node_modules/shiki/languages/css.tmLanguage.json
@@ -0,0 +1,1865 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/microsoft/vscode-css/blob/master/grammars/css.cson",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/microsoft/vscode-css/commit/1452547185a1793c946cf67f8c7c9001716e32c3",
+ "name": "css",
+ "scopeName": "source.css",
+ "patterns": [
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ },
+ {
+ "include": "#combinators"
+ },
+ {
+ "include": "#selector"
+ },
+ {
+ "include": "#at-rules"
+ },
+ {
+ "include": "#rule-list"
+ }
+ ],
+ "repository": {
+ "at-rules": {
+ "patterns": [
+ {
+ "begin": "\\A(?:\\xEF\\xBB\\xBF)?(?i:(?=\\s*@charset\\b))",
+ "end": ";|(?=$)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.rule.css"
+ }
+ },
+ "name": "meta.at-rule.charset.css",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.not-lowercase.charset.css"
+ },
+ "2": {
+ "name": "invalid.illegal.leading-whitespace.charset.css"
+ },
+ "3": {
+ "name": "invalid.illegal.no-whitespace.charset.css"
+ },
+ "4": {
+ "name": "invalid.illegal.whitespace.charset.css"
+ },
+ "5": {
+ "name": "invalid.illegal.not-double-quoted.charset.css"
+ },
+ "6": {
+ "name": "invalid.illegal.unclosed-string.charset.css"
+ },
+ "7": {
+ "name": "invalid.illegal.unexpected-characters.charset.css"
+ }
+ },
+ "match": "(?x) # Possible errors:\n\\G\n((?!@charset)@\\w+) # Not lowercase (@charset is case-sensitive)\n|\n\\G(\\s+) # Preceding whitespace\n|\n(@charset\\S[^;]*) # No whitespace after @charset\n|\n(?<=@charset) # Before quoted charset name\n(\\x20{2,}|\\t+) # More than one space used, or a tab\n|\n(?<=@charset\\x20) # Beginning of charset name\n([^\";]+) # Not double-quoted\n|\n(\"[^\"]+$) # Unclosed quote\n|\n(?<=\") # After charset name\n([^;]+) # Unexpected junk instead of semicolon"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.charset.css"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "match": "((@)charset)(?=\\s)"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.css"
+ }
+ },
+ "end": "\"|$",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.css"
+ }
+ },
+ "name": "string.quoted.double.css",
+ "patterns": [
+ {
+ "begin": "(?:\\G|^)(?=(?:[^\"])+$)",
+ "end": "$",
+ "name": "invalid.illegal.unclosed.string.css"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?i)((@)import)(?:\\s+|$|(?=['\"]|/\\*))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.at-rule.import.css"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.rule.css"
+ }
+ },
+ "name": "meta.at-rule.import.css",
+ "patterns": [
+ {
+ "begin": "\\G\\s*(?=/\\*)",
+ "end": "(?<=\\*/)\\s*",
+ "patterns": [
+ {
+ "include": "#comment-block"
+ }
+ ]
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#url"
+ },
+ {
+ "include": "#media-query-list"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)((@)font-face)(?=\\s*|{|/\\*|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.at-rule.font-face.css"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "end": "(?!\\G)",
+ "name": "meta.at-rule.font-face.css",
+ "patterns": [
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ },
+ {
+ "include": "#rule-list"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(@)page(?=[\\s:{]|/\\*|$)",
+ "captures": {
+ "0": {
+ "name": "keyword.control.at-rule.page.css"
+ },
+ "1": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "end": "(?=\\s*($|[:{;]))",
+ "name": "meta.at-rule.page.css",
+ "patterns": [
+ {
+ "include": "#rule-list"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?=@media(\\s|\\(|/\\*|$))",
+ "end": "(?<=})(?!\\G)",
+ "patterns": [
+ {
+ "begin": "(?i)\\G(@)media",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.at-rule.media.css"
+ },
+ "1": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "end": "(?=\\s*[{;])",
+ "name": "meta.at-rule.media.header.css",
+ "patterns": [
+ {
+ "include": "#media-query-list"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.media.begin.bracket.curly.css"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.media.end.bracket.curly.css"
+ }
+ },
+ "name": "meta.at-rule.media.body.css",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?=@counter-style([\\s'\"{;]|/\\*|$))",
+ "end": "(?<=})(?!\\G)",
+ "patterns": [
+ {
+ "begin": "(?i)\\G(@)counter-style",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.at-rule.counter-style.css"
+ },
+ "1": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "end": "(?=\\s*{)",
+ "name": "meta.at-rule.counter-style.header.css",
+ "patterns": [
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ },
+ {
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#escapes"
+ }
+ ]
+ }
+ },
+ "match": "(?x)\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
+ "name": "variable.parameter.style-name.css"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.property-list.begin.bracket.curly.css"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.property-list.end.bracket.curly.css"
+ }
+ },
+ "name": "meta.at-rule.counter-style.body.css",
+ "patterns": [
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ },
+ {
+ "include": "#rule-list-innards"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?=@document([\\s'\"{;]|/\\*|$))",
+ "end": "(?<=})(?!\\G)",
+ "patterns": [
+ {
+ "begin": "(?i)\\G(@)document",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.at-rule.document.css"
+ },
+ "1": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "end": "(?=\\s*[{;])",
+ "name": "meta.at-rule.document.header.css",
+ "patterns": [
+ {
+ "begin": "(?i)(?<![\\w-])(url-prefix|domain|regexp)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.document-rule.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "name": "meta.function.document-rule.css",
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ },
+ {
+ "match": "[^'\")\\s]+",
+ "name": "variable.parameter.document-rule.css"
+ }
+ ]
+ },
+ {
+ "include": "#url"
+ },
+ {
+ "include": "#commas"
+ },
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.document.begin.bracket.curly.css"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.document.end.bracket.curly.css"
+ }
+ },
+ "name": "meta.at-rule.document.body.css",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?=@(?:-(?:webkit|moz|o|ms)-)?keyframes([\\s'\"{;]|/\\*|$))",
+ "end": "(?<=})(?!\\G)",
+ "patterns": [
+ {
+ "begin": "(?i)\\G(@)(?:-(?:webkit|moz|o|ms)-)?keyframes",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.at-rule.keyframes.css"
+ },
+ "1": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "end": "(?=\\s*{)",
+ "name": "meta.at-rule.keyframes.header.css",
+ "patterns": [
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ },
+ {
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#escapes"
+ }
+ ]
+ }
+ },
+ "match": "(?x)\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
+ "name": "variable.parameter.keyframe-list.css"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.keyframes.begin.bracket.curly.css"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.keyframes.end.bracket.curly.css"
+ }
+ },
+ "name": "meta.at-rule.keyframes.body.css",
+ "patterns": [
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.other.keyframe-offset.css"
+ },
+ "2": {
+ "name": "entity.other.keyframe-offset.percentage.css"
+ }
+ },
+ "match": "(?xi)\n(?<![\\w-]) (from|to) (?![\\w-]) # Keywords for 0% | 100%\n|\n([-+]?(?:\\d+(?:\\.\\d+)?|\\.\\d+)%) # Percentile value"
+ },
+ {
+ "include": "#rule-list"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?=@supports(\\s|\\(|/\\*|$))",
+ "end": "(?<=})(?!\\G)|(?=;)",
+ "patterns": [
+ {
+ "begin": "(?i)\\G(@)supports",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.at-rule.supports.css"
+ },
+ "1": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "end": "(?=\\s*[{;])",
+ "name": "meta.at-rule.supports.header.css",
+ "patterns": [
+ {
+ "include": "#feature-query-operators"
+ },
+ {
+ "include": "#feature-query"
+ },
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.supports.begin.bracket.curly.css"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.supports.end.bracket.curly.css"
+ }
+ },
+ "name": "meta.at-rule.supports.body.css",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?i)((@)(-(ms|o)-)?viewport)(?=[\\s'\"{;]|/\\*|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.at-rule.viewport.css"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "end": "(?=\\s*[@{;])",
+ "name": "meta.at-rule.viewport.css",
+ "patterns": [
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)((@)font-feature-values)(?=[\\s'\"{;]|/\\*|$)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.at-rule.font-feature-values.css"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "contentName": "variable.parameter.font-name.css",
+ "end": "(?=\\s*[@{;])",
+ "name": "meta.at-rule.font-features.css",
+ "patterns": [
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ }
+ ]
+ },
+ {
+ "include": "#font-features"
+ },
+ {
+ "begin": "(?i)((@)namespace)(?=[\\s'\";]|/\\*|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.at-rule.namespace.css"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "end": ";|(?=[@{])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.rule.css"
+ }
+ },
+ "name": "meta.at-rule.namespace.css",
+ "patterns": [
+ {
+ "include": "#url"
+ },
+ {
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#comment-block"
+ }
+ ]
+ },
+ "2": {
+ "name": "entity.name.function.namespace-prefix.css",
+ "patterns": [
+ {
+ "include": "#escapes"
+ }
+ ]
+ }
+ },
+ "match": "(?xi)\n(?:\\G|^|(?<=\\s))\n(?=\n (?<=\\s|^) # Starts with whitespace\n (?:[-a-zA-Z_]|[^\\x00-\\x7F]) # Then a valid identifier character\n |\n \\s* # Possible adjoining whitespace\n /\\*(?:[^*]|\\*[^/])*\\*/ # Injected comment\n)\n(.*?) # Grouped to embed #comment-block\n(\n (?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n (?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n )*\n)"
+ },
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?=@[\\w-]+[^;]+;s*$)",
+ "end": "(?<=;)(?!\\G)",
+ "patterns": [
+ {
+ "begin": "(?i)\\G(@)[\\w-]+",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.at-rule.css"
+ },
+ "1": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.rule.css"
+ }
+ },
+ "name": "meta.at-rule.header.css"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?=@[\\w-]+(\\s|\\(|{|/\\*|$))",
+ "end": "(?<=})(?!\\G)",
+ "patterns": [
+ {
+ "begin": "(?i)\\G(@)[\\w-]+",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.at-rule.css"
+ },
+ "1": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "end": "(?=\\s*[{;])",
+ "name": "meta.at-rule.header.css"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.begin.bracket.curly.css"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.end.bracket.curly.css"
+ }
+ },
+ "name": "meta.at-rule.body.css",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "color-keywords": {
+ "patterns": [
+ {
+ "match": "(?i)(?<![\\w-])(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)(?![\\w-])",
+ "name": "support.constant.color.w3c-standard-color-name.css"
+ },
+ {
+ "match": "(?xi) (?<![\\w-])\n(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood\n|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan\n|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange\n|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise\n|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen\n|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki\n|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow\n|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray\n|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue\n|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise\n|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered\n|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum\n|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell\n|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato\n|transparent|turquoise|violet|wheat|whitesmoke|yellowgreen)\n(?![\\w-])",
+ "name": "support.constant.color.w3c-extended-color-name.css"
+ },
+ {
+ "match": "(?i)(?<![\\w-])currentColor(?![\\w-])",
+ "name": "support.constant.color.current.css"
+ },
+ {
+ "match": "(?xi) (?<![\\w-])\n(ActiveBorder|ActiveCaption|AppWorkspace|Background|ButtonFace|ButtonHighlight|ButtonShadow\n|ButtonText|CaptionText|GrayText|Highlight|HighlightText|InactiveBorder|InactiveCaption\n|InactiveCaptionText|InfoBackground|InfoText|Menu|MenuText|Scrollbar|ThreeDDarkShadow\n|ThreeDFace|ThreeDHighlight|ThreeDLightShadow|ThreeDShadow|Window|WindowFrame|WindowText)\n(?![\\w-])",
+ "name": "invalid.deprecated.color.system.css"
+ }
+ ]
+ },
+ "combinators": {
+ "patterns": [
+ {
+ "match": "/deep/|>>>",
+ "name": "invalid.deprecated.combinator.css"
+ },
+ {
+ "match": ">>|>|\\+|~",
+ "name": "keyword.operator.combinator.css"
+ }
+ ]
+ },
+ "commas": {
+ "match": ",",
+ "name": "punctuation.separator.list.comma.css"
+ },
+ "comment-block": {
+ "begin": "/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.css"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.css"
+ }
+ },
+ "name": "comment.block.css"
+ },
+ "escapes": {
+ "patterns": [
+ {
+ "match": "\\\\[0-9a-fA-F]{1,6}",
+ "name": "constant.character.escape.codepoint.css"
+ },
+ {
+ "begin": "\\\\$\\s*",
+ "end": "^(?<!\\G)",
+ "name": "constant.character.escape.newline.css"
+ },
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.css"
+ }
+ ]
+ },
+ "feature-query": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.condition.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.condition.end.bracket.round.css"
+ }
+ },
+ "name": "meta.feature-query.css",
+ "patterns": [
+ {
+ "include": "#feature-query-operators"
+ },
+ {
+ "include": "#feature-query"
+ }
+ ]
+ },
+ "feature-query-operators": {
+ "patterns": [
+ {
+ "match": "(?i)(?<=[\\s()]|^|\\*/)(and|not|or)(?=[\\s()]|/\\*|$)",
+ "name": "keyword.operator.logical.feature.$1.css"
+ },
+ {
+ "include": "#rule-list-innards"
+ }
+ ]
+ },
+ "font-features": {
+ "begin": "(?xi)\n((@)(annotation|character-variant|ornaments|styleset|stylistic|swash))\n(?=[\\s@'\"{;]|/\\*|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.at-rule.${3:/downcase}.css"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "end": "(?<=})",
+ "name": "meta.at-rule.${3:/downcase}.css",
+ "patterns": [
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.property-list.begin.bracket.curly.css"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.property-list.end.bracket.curly.css"
+ }
+ },
+ "name": "meta.property-list.font-feature.css",
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#escapes"
+ }
+ ]
+ }
+ },
+ "match": "(?x)\n(?: [-a-zA-Z_] | [^\\x00-\\x7F] ) # First letter\n(?: [-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n | \\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
+ "name": "variable.font-feature.css"
+ },
+ {
+ "include": "#rule-list-innards"
+ }
+ ]
+ }
+ ]
+ },
+ "functions": {
+ "patterns": [
+ {
+ "begin": "(?i)(?<![\\w-])(calc)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.calc.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "name": "meta.function.calc.css",
+ "patterns": [
+ {
+ "match": "[*/]|(?<=\\s|^)[-+](?=\\s|$)",
+ "name": "keyword.operator.arithmetic.css"
+ },
+ {
+ "include": "#property-values"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?<![\\w-])(rgba?|hsla?|hwb|lab|lch)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.misc.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "name": "meta.function.color.css",
+ "patterns": [
+ {
+ "include": "#property-values"
+ }
+ ]
+ },
+ {
+ "begin": "(?xi) (?<![\\w-])\n(\n (?:-webkit-|-moz-|-o-)? # Accept prefixed/historical variants\n (?:repeating-)? # \"Repeating\"-type gradient\n (?:linear|radial|conic) # Shape\n -gradient\n)\n(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.gradient.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "name": "meta.function.gradient.css",
+ "patterns": [
+ {
+ "match": "(?i)(?<![\\w-])(from|to|at)(?![\\w-])",
+ "name": "keyword.operator.gradient.css"
+ },
+ {
+ "include": "#property-values"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?<![\\w-])(-webkit-gradient)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "invalid.deprecated.gradient.function.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "name": "meta.function.gradient.invalid.deprecated.gradient.css",
+ "patterns": [
+ {
+ "begin": "(?i)(?<![\\w-])(from|to|color-stop)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "invalid.deprecated.function.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#property-values"
+ }
+ ]
+ },
+ {
+ "include": "#property-values"
+ }
+ ]
+ },
+ {
+ "begin": "(?xi) (?<![\\w-])\n(annotation|attr|blur|brightness|character-variant|clamp|contrast|counters?\n|cross-fade|drop-shadow|element|fit-content|format|grayscale|hue-rotate\n|image-set|invert|local|max|min|minmax|opacity|ornaments|repeat|saturate|sepia\n|styleset|stylistic|swash|symbols)\n(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.misc.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "name": "meta.function.misc.css",
+ "patterns": [
+ {
+ "match": "(?i)(?<=[,\\s\"]|\\*/|^)\\d+x(?=[\\s,\"')]|/\\*|$)",
+ "name": "constant.numeric.other.density.css"
+ },
+ {
+ "include": "#property-values"
+ },
+ {
+ "match": "[^'\"),\\s]+",
+ "name": "variable.parameter.misc.css"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?<![\\w-])(circle|ellipse|inset|polygon|rect)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.shape.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "name": "meta.function.shape.css",
+ "patterns": [
+ {
+ "match": "(?i)(?<=\\s|^|\\*/)(at|round)(?=\\s|/\\*|$)",
+ "name": "keyword.operator.shape.css"
+ },
+ {
+ "include": "#property-values"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?<![\\w-])(cubic-bezier|steps)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.timing-function.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "name": "meta.function.timing-function.css",
+ "patterns": [
+ {
+ "match": "(?i)(?<![\\w-])(start|end)(?=\\s*\\)|$)",
+ "name": "support.constant.step-direction.css"
+ },
+ {
+ "include": "#property-values"
+ }
+ ]
+ },
+ {
+ "begin": "(?xi) (?<![\\w-])\n( (?:translate|scale|rotate)(?:[XYZ]|3D)?\n| matrix(?:3D)?\n| skew[XY]?\n| perspective\n)\n(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.transform.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#property-values"
+ }
+ ]
+ },
+ {
+ "include": "#url"
+ },
+ {
+ "begin": "(?i)(?<![\\w-])(var)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.misc.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "name": "meta.function.variable.css",
+ "patterns": [
+ {
+ "name": "variable.argument.css",
+ "match": "(?x)\n--\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*"
+ },
+ {
+ "include": "#property-values"
+ }
+ ]
+ }
+ ]
+ },
+ "functional-pseudo-classes": {
+ "patterns": [
+ {
+ "begin": "(?i)((:)dir)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.other.attribute-name.pseudo-class.css"
+ },
+ "2": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "3": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ },
+ {
+ "match": "(?i)(?<![\\w-])(ltr|rtl)(?![\\w-])",
+ "name": "support.constant.text-direction.css"
+ },
+ {
+ "include": "#property-values"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)((:)lang)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.other.attribute-name.pseudo-class.css"
+ },
+ "2": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "3": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?<=[(,\\s])[a-zA-Z]+(-[a-zA-Z0-9]*|\\\\(?:[0-9a-fA-F]{1,6}|.))*(?=[),\\s])",
+ "name": "support.constant.language-range.css"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.css"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.css"
+ }
+ },
+ "name": "string.quoted.double.css",
+ "patterns": [
+ {
+ "include": "#escapes"
+ },
+ {
+ "match": "(?<=[\"\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=[\"\\s])",
+ "name": "support.constant.language-range.css"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.css"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.css"
+ }
+ },
+ "name": "string.quoted.single.css",
+ "patterns": [
+ {
+ "include": "#escapes"
+ },
+ {
+ "match": "(?<=['\\s])[a-zA-Z*]+(-[a-zA-Z0-9*]*)*(?=['\\s])",
+ "name": "support.constant.language-range.css"
+ }
+ ]
+ },
+ {
+ "include": "#commas"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)((:)(?:not|has|matches|where|is))(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.other.attribute-name.pseudo-class.css"
+ },
+ "2": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "3": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#selector-innards"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)((:)nth-(?:last-)?(?:child|of-type))(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.other.attribute-name.pseudo-class.css"
+ },
+ "2": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "3": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?i)[+-]?(\\d+n?|n)(\\s*[+-]\\s*\\d+)?",
+ "name": "constant.numeric.css"
+ },
+ {
+ "match": "(?i)even|odd",
+ "name": "support.constant.parity.css"
+ }
+ ]
+ }
+ ]
+ },
+ "media-features": {
+ "captures": {
+ "1": {
+ "name": "support.type.property-name.media.css"
+ },
+ "2": {
+ "name": "support.type.property-name.media.css"
+ },
+ "3": {
+ "name": "support.type.vendored.property-name.media.css"
+ }
+ },
+ "match": "(?xi)\n(?<=^|\\s|\\(|\\*/) # Preceded by whitespace, bracket or comment\n(?:\n # Standardised features\n (\n (?:min-|max-)? # Range features\n (?: height\n | width\n | aspect-ratio\n | color\n | color-index\n | monochrome\n | resolution\n )\n | grid # Discrete features\n | scan\n | orientation\n | display-mode\n | hover\n )\n |\n # Deprecated features\n (\n (?:min-|max-)? # Deprecated in Media Queries 4\n device-\n (?: height\n | width\n | aspect-ratio\n )\n )\n |\n # Vendor extensions\n (\n (?:\n # Spec-compliant syntax\n [-_]\n (?: webkit # Webkit/Blink\n | apple|khtml # Webkit aliases\n | epub # ePub3\n | moz # Gecko\n | ms # Microsoft\n | o # Presto (pre-Opera 15)\n | xv|ah|rim|atsc| # Less common vendors\n hp|tc|wap|ro\n )\n |\n # Non-standard prefixes\n (?: mso # Microsoft Office\n | prince # YesLogic\n )\n )\n -\n [\\w-]+ # Feature name\n (?= # Terminates correctly\n \\s* # Possible whitespace\n (?: # Possible injected comment\n /\\*\n (?:[^*]|\\*[^/])*\n \\*/\n )?\n \\s*\n [:)] # Ends with a colon or closed bracket\n )\n )\n)\n(?=\\s|$|[><:=]|\\)|/\\*) # Terminates cleanly"
+ },
+ "media-feature-keywords": {
+ "match": "(?xi)\n(?<=^|\\s|:|\\*/)\n(?: portrait # Orientation\n | landscape\n | progressive # Scan types\n | interlace\n | fullscreen # Display modes\n | standalone\n | minimal-ui\n | browser\n | hover\n)\n(?=\\s|\\)|$)",
+ "name": "support.constant.property-value.css"
+ },
+ "media-query": {
+ "begin": "\\G",
+ "end": "(?=\\s*[{;])",
+ "patterns": [
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ },
+ {
+ "include": "#media-types"
+ },
+ {
+ "match": "(?i)(?<=\\s|^|,|\\*/)(only|not)(?=\\s|{|/\\*|$)",
+ "name": "keyword.operator.logical.$1.media.css"
+ },
+ {
+ "match": "(?i)(?<=\\s|^|\\*/|\\))and(?=\\s|/\\*|$)",
+ "name": "keyword.operator.logical.and.media.css"
+ },
+ {
+ "match": ",(?:(?:\\s*,)+|(?=\\s*[;){]))",
+ "name": "invalid.illegal.comma.css"
+ },
+ {
+ "include": "#commas"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#media-features"
+ },
+ {
+ "include": "#media-feature-keywords"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.separator.key-value.css"
+ },
+ {
+ "match": ">=|<=|=|<|>",
+ "name": "keyword.operator.comparison.css"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "constant.numeric.css"
+ },
+ "2": {
+ "name": "keyword.operator.arithmetic.css"
+ },
+ "3": {
+ "name": "constant.numeric.css"
+ }
+ },
+ "match": "(\\d+)\\s*(/)\\s*(\\d+)",
+ "name": "meta.ratio.css"
+ },
+ {
+ "include": "#numeric-values"
+ },
+ {
+ "include": "#comment-block"
+ }
+ ]
+ }
+ ]
+ },
+ "media-query-list": {
+ "begin": "(?=\\s*[^{;])",
+ "end": "(?=\\s*[{;])",
+ "patterns": [
+ {
+ "include": "#media-query"
+ }
+ ]
+ },
+ "media-types": {
+ "captures": {
+ "1": {
+ "name": "support.constant.media.css"
+ },
+ "2": {
+ "name": "invalid.deprecated.constant.media.css"
+ }
+ },
+ "match": "(?xi)\n(?<=^|\\s|,|\\*/)\n(?:\n # Valid media types\n (all|print|screen|speech)\n |\n # Deprecated in Media Queries 4: http://dev.w3.org/csswg/mediaqueries/#media-types\n (aural|braille|embossed|handheld|projection|tty|tv)\n)\n(?=$|[{,\\s;]|/\\*)"
+ },
+ "numeric-values": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.css"
+ }
+ },
+ "match": "(#)(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b",
+ "name": "constant.other.color.rgb-value.hex.css"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.percentage.css"
+ },
+ "2": {
+ "name": "keyword.other.unit.${2:/downcase}.css"
+ }
+ },
+ "match": "(?xi) (?<![\\w-])\n[-+]? # Sign indicator\n\n(?: # Numerals\n [0-9]+ (?:\\.[0-9]+)? # Integer/float with leading digits\n | \\.[0-9]+ # Float without leading digits\n)\n\n(?: # Scientific notation\n (?<=[0-9]) # Exponent must follow a digit\n E # Exponent indicator\n [-+]? # Possible sign indicator\n [0-9]+ # Exponent value\n)?\n\n(?: # Possible unit for data-type:\n (%) # - Percentage\n | ( deg|grad|rad|turn # - Angle\n | Hz|kHz # - Frequency\n | ch|cm|em|ex|fr|in|mm|mozmm| # - Length\n pc|pt|px|q|rem|vh|vmax|vmin|\n vw\n | dpi|dpcm|dppx # - Resolution\n | s|ms # - Time\n )\n \\b # Boundary checking intentionally lax to\n)? # facilitate embedding in CSS-like grammars",
+ "name": "constant.numeric.css"
+ }
+ ]
+ },
+ "property-keywords": {
+ "patterns": [
+ {
+ "match": "(?xi) (?<![\\w-])\n(above|absolute|active|add|additive|after-edge|alias|all|all-petite-caps|all-scroll|all-small-caps|alpha|alphabetic|alternate|alternate-reverse\n|always|antialiased|auto|auto-pos|available|avoid|avoid-column|avoid-page|avoid-region|backwards|balance|baseline|before-edge|below|bevel\n|bidi-override|blink|block|block-axis|block-start|block-end|bold|bolder|border|border-box|both|bottom|bottom-outside|break-all|break-word|bullets\n|butt|capitalize|caption|cell|center|central|char|circle|clip|clone|close-quote|closest-corner|closest-side|col-resize|collapse|color|color-burn\n|color-dodge|column|column-reverse|common-ligatures|compact|condensed|contain|content|content-box|contents|context-menu|contextual|copy|cover\n|crisp-edges|crispEdges|crosshair|cyclic|dark|darken|dashed|decimal|default|dense|diagonal-fractions|difference|digits|disabled|disc|discretionary-ligatures\n|distribute|distribute-all-lines|distribute-letter|distribute-space|dot|dotted|double|double-circle|downleft|downright|e-resize|each-line|ease|ease-in\n|ease-in-out|ease-out|economy|ellipse|ellipsis|embed|end|evenodd|ew-resize|exact|exclude|exclusion|expanded|extends|extra-condensed|extra-expanded\n|fallback|farthest-corner|farthest-side|fill|fill-available|fill-box|filled|fit-content|fixed|flat|flex|flex-end|flex-start|flip|flow-root|forwards|freeze\n|from-image|full-width|geometricPrecision|georgian|grab|grabbing|grayscale|grid|groove|hand|hanging|hard-light|help|hidden|hide\n|historical-forms|historical-ligatures|horizontal|horizontal-tb|hue|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space\n|ideographic|inactive|infinite|inherit|initial|inline|inline-axis|inline-block|inline-end|inline-flex|inline-grid|inline-list-item|inline-start\n|inline-table|inset|inside|inter-character|inter-ideograph|inter-word|intersect|invert|isolate|isolate-override|italic|jis04|jis78|jis83\n|jis90|justify|justify-all|kannada|keep-all|landscape|large|larger|left|light|lighten|lighter|line|line-edge|line-through|linear|linearRGB\n|lining-nums|list-item|local|loose|lowercase|lr|lr-tb|ltr|luminance|luminosity|main-size|mandatory|manipulation|manual|margin-box|match-parent\n|match-source|mathematical|max-content|medium|menu|message-box|middle|min-content|miter|mixed|move|multiply|n-resize|narrower|ne-resize\n|nearest-neighbor|nesw-resize|newspaper|no-change|no-clip|no-close-quote|no-common-ligatures|no-contextual|no-discretionary-ligatures\n|no-drop|no-historical-ligatures|no-open-quote|no-repeat|none|nonzero|normal|not-allowed|nowrap|ns-resize|numbers|numeric|nw-resize|nwse-resize\n|oblique|oldstyle-nums|open|open-quote|optimizeLegibility|optimizeQuality|optimizeSpeed|optional|ordinal|outset|outside|over|overlay|overline|padding\n|padding-box|page|painted|pan-down|pan-left|pan-right|pan-up|pan-x|pan-y|paused|petite-caps|pixelated|plaintext|pointer|portrait|pre|pre-line\n|pre-wrap|preserve-3d|progress|progressive|proportional-nums|proportional-width|proximity|radial|recto|region|relative|remove|repeat|repeat-[xy]\n|reset-size|reverse|revert|ridge|right|rl|rl-tb|round|row|row-resize|row-reverse|row-severse|rtl|ruby|ruby-base|ruby-base-container|ruby-text\n|ruby-text-container|run-in|running|s-resize|saturation|scale-down|screen|scroll|scroll-position|se-resize|semi-condensed|semi-expanded|separate\n|sesame|show|sideways|sideways-left|sideways-lr|sideways-right|sideways-rl|simplified|slashed-zero|slice|small|small-caps|small-caption|smaller\n|smooth|soft-light|solid|space|space-around|space-between|space-evenly|spell-out|square|sRGB|stacked-fractions|start|static|status-bar|swap\n|step-end|step-start|sticky|stretch|strict|stroke|stroke-box|style|sub|subgrid|subpixel-antialiased|subtract|super|sw-resize|symbolic|table\n|table-caption|table-cell|table-column|table-column-group|table-footer-group|table-header-group|table-row|table-row-group|tabular-nums|tb|tb-rl\n|text|text-after-edge|text-before-edge|text-bottom|text-top|thick|thin|titling-caps|top|top-outside|touch|traditional|transparent|triangle\n|ultra-condensed|ultra-expanded|under|underline|unicase|unset|upleft|uppercase|upright|use-glyph-orientation|use-script|verso|vertical\n|vertical-ideographic|vertical-lr|vertical-rl|vertical-text|view-box|visible|visibleFill|visiblePainted|visibleStroke|w-resize|wait|wavy\n|weight|whitespace|wider|words|wrap|wrap-reverse|x|x-large|x-small|xx-large|xx-small|y|zero|zoom-in|zoom-out)\n(?![\\w-])",
+ "name": "support.constant.property-value.css"
+ },
+ {
+ "match": "(?xi) (?<![\\w-])\n(arabic-indic|armenian|bengali|cambodian|circle|cjk-decimal|cjk-earthly-branch|cjk-heavenly-stem|cjk-ideographic\n|decimal|decimal-leading-zero|devanagari|disc|disclosure-closed|disclosure-open|ethiopic-halehame-am\n|ethiopic-halehame-ti-e[rt]|ethiopic-numeric|georgian|gujarati|gurmukhi|hangul|hangul-consonant|hebrew\n|hiragana|hiragana-iroha|japanese-formal|japanese-informal|kannada|katakana|katakana-iroha|khmer\n|korean-hangul-formal|korean-hanja-formal|korean-hanja-informal|lao|lower-alpha|lower-armenian|lower-greek\n|lower-latin|lower-roman|malayalam|mongolian|myanmar|oriya|persian|simp-chinese-formal|simp-chinese-informal\n|square|tamil|telugu|thai|tibetan|trad-chinese-formal|trad-chinese-informal|upper-alpha|upper-armenian\n|upper-latin|upper-roman|urdu)\n(?![\\w-])",
+ "name": "support.constant.property-value.list-style-type.css"
+ },
+ {
+ "match": "(?<![\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+",
+ "name": "support.constant.vendored.property-value.css"
+ },
+ {
+ "match": "(?<![\\w-])(?i:arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system-ui|system|tahoma|times|trebuchet|ui-monospace|ui-rounded|ui-sans-serif|ui-serif|utopia|verdana|webdings|sans-serif|serif|monospace)(?![\\w-])",
+ "name": "support.constant.font-name.css"
+ }
+ ]
+ },
+ "property-names": {
+ "patterns": [
+ {
+ "match": "(?xi) (?<![\\w-])\n(?:\n # Standard CSS\n accent-color|additive-symbols|align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration\n | animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backdrop-filter\n | backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image\n | background-origin|background-position|background-position-[xy]|background-repeat|background-size|bleed|block-size|border\n | border-block-end|border-block-end-color|border-block-end-style|border-block-end-width|border-block-start|border-block-start-color\n | border-block-start-style|border-block-start-width|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius\n | border-bottom-style|border-bottom-width|border-collapse|border-color|border-end-end-radius|border-end-start-radius|border-image\n | border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-inline-end\n | border-inline-end-color|border-inline-end-style|border-inline-end-width|border-inline-start|border-inline-start-color\n | border-inline-start-style|border-inline-start-width|border-left|border-left-color|border-left-style|border-left-width\n | border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-start-end-radius\n | border-start-start-radius|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style\n | border-top-width|border-width|bottom|box-decoration-break|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side\n | caret-color|clear|clip|clip-path|clip-rule|color|color-adjust|color-interpolation-filters|color-scheme|column-count|column-fill|column-gap\n | column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|contain|content|counter-increment\n | counter-reset|cursor|direction|display|empty-cells|enable-background|fallback|fill|fill-opacity|fill-rule|filter|flex|flex-basis\n | flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|flood-color|flood-opacity|font|font-display|font-family\n | font-feature-settings|font-kerning|font-language-override|font-optical-sizing|font-size|font-size-adjust|font-stretch\n | font-style|font-synthesis|font-variant|font-variant-alternates|font-variant-caps|font-variant-east-asian|font-variant-ligatures\n | font-variant-numeric|font-variant-position|font-variation-settings|font-weight|gap|glyph-orientation-horizontal|glyph-orientation-vertical\n | grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-gap|grid-column-start\n | grid-gap|grid-row|grid-row-end|grid-row-gap|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows\n | hanging-punctuation|height|hyphens|image-orientation|image-rendering|image-resolution|ime-mode|initial-letter|initial-letter-align\n | inline-size|inset|inset-block|inset-block-end|inset-block-start|inset-inline|inset-inline-end|inset-inline-start|isolation\n | justify-content|justify-items|justify-self|kerning|left|letter-spacing|lighting-color|line-break|line-clamp|line-height|list-style\n | list-style-image|list-style-position|list-style-type|margin|margin-block|margin-block-end|margin-block-start|margin-bottom|margin-inline|margin-inline-end|margin-inline-start\n | margin-left|margin-right|margin-top|marker-end|marker-mid|marker-start|marks|mask|mask-border|mask-border-mode|mask-border-outset\n | mask-border-repeat|mask-border-slice|mask-border-source|mask-border-width|mask-clip|mask-composite|mask-image|mask-mode\n | mask-origin|mask-position|mask-repeat|mask-size|mask-type|max-block-size|max-height|max-inline-size|max-lines|max-width\n | max-zoom|min-block-size|min-height|min-inline-size|min-width|min-zoom|mix-blend-mode|negative|object-fit|object-position\n | offset|offset-anchor|offset-distance|offset-path|offset-position|offset-rotation|opacity|order|orientation|orphans\n | outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-anchor|overflow-block|overflow-inline\n | overflow-wrap|overflow-[xy]|overscroll-behavior|overscroll-behavior-block|overscroll-behavior-inline|overscroll-behavior-[xy]\n | pad|padding|padding-block|padding-block-end|padding-block-start|padding-bottom|padding-inline|padding-inline-end|padding-inline-start|padding-left\n | padding-right|padding-top|page-break-after|page-break-before|page-break-inside|paint-order|perspective|perspective-origin\n | place-content|place-items|place-self|pointer-events|position|prefix|quotes|range|resize|right|rotate|row-gap|ruby-align\n | ruby-merge|ruby-position|scale|scroll-behavior|scroll-margin|scroll-margin-block|scroll-margin-block-end|scroll-margin-block-start\n | scroll-margin-bottom|scroll-margin-inline|scroll-margin-inline-end|scroll-margin-inline-start|scroll-margin-left|scroll-margin-right\n | scroll-margin-top|scroll-padding|scroll-padding-block|scroll-padding-block-end|scroll-padding-block-start|scroll-padding-bottom\n | scroll-padding-inline|scroll-padding-inline-end|scroll-padding-inline-start|scroll-padding-left|scroll-padding-right\n | scroll-padding-top|scroll-snap-align|scroll-snap-coordinate|scroll-snap-destination|scroll-snap-stop|scroll-snap-type\n | scrollbar-color|scrollbar-gutter|scrollbar-width|shape-image-threshold|shape-margin|shape-outside|shape-rendering|size\n | speak-as|src|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap|stroke-linejoin|stroke-miterlimit\n | stroke-opacity|stroke-width|suffix|symbols|system|tab-size|table-layout|text-align|text-align-last|text-anchor|text-combine-upright\n | text-decoration|text-decoration-color|text-decoration-line|text-decoration-skip|text-decoration-skip-ink|text-decoration-style\n | text-emphasis|text-emphasis-color|text-emphasis-position|text-emphasis-style|text-indent|text-justify|text-orientation\n | text-overflow|text-rendering|text-shadow|text-size-adjust|text-transform|text-underline-offset|text-underline-position|top|touch-action|transform\n | transform-box|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function\n | translate|unicode-bidi|unicode-range|user-select|user-zoom|vertical-align|visibility|white-space|widows|width|will-change\n | word-break|word-spacing|word-wrap|writing-mode|z-index|zoom\n\n # SVG attributes\n | alignment-baseline|baseline-shift|clip-rule|color-interpolation|color-interpolation-filters|color-profile\n | color-rendering|cx|cy|dominant-baseline|enable-background|fill|fill-opacity|fill-rule|flood-color|flood-opacity\n | glyph-orientation-horizontal|glyph-orientation-vertical|height|kerning|lighting-color|marker-end|marker-mid\n | marker-start|r|rx|ry|shape-rendering|stop-color|stop-opacity|stroke|stroke-dasharray|stroke-dashoffset|stroke-linecap\n | stroke-linejoin|stroke-miterlimit|stroke-opacity|stroke-width|text-anchor|width|x|y\n\n # Not listed on MDN; presumably deprecated\n | adjust|after|align|align-last|alignment|alignment-adjust|appearance|attachment|azimuth|background-break\n | balance|baseline|before|bidi|binding|bookmark|bookmark-label|bookmark-level|bookmark-target|border-length\n | bottom-color|bottom-left-radius|bottom-right-radius|bottom-style|bottom-width|box|box-align|box-direction\n | box-flex|box-flex-group|box-lines|box-ordinal-group|box-orient|box-pack|break|character|collapse|column\n | column-break-after|column-break-before|count|counter|crop|cue|cue-after|cue-before|decoration|decoration-break\n | delay|display-model|display-role|down|drop|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust\n | drop-initial-before-align|drop-initial-size|drop-initial-value|duration|elevation|emphasis|family|fit|fit-position\n | flex-group|float-offset|gap|grid-columns|grid-rows|hanging-punctuation|header|hyphenate|hyphenate-after|hyphenate-before\n | hyphenate-character|hyphenate-lines|hyphenate-resource|icon|image|increment|indent|index|initial-after-adjust\n | initial-after-align|initial-before-adjust|initial-before-align|initial-size|initial-value|inline-box-align|iteration-count\n | justify|label|left-color|left-style|left-width|length|level|line|line-stacking|line-stacking-ruby|line-stacking-shift\n | line-stacking-strategy|lines|list|mark|mark-after|mark-before|marks|marquee|marquee-direction|marquee-play-count|marquee-speed\n | marquee-style|max|min|model|move-to|name|nav|nav-down|nav-index|nav-left|nav-right|nav-up|new|numeral|offset|ordinal-group\n | orient|origin|overflow-style|overhang|pack|page|page-policy|pause|pause-after|pause-before|phonemes|pitch|pitch-range\n | play-count|play-during|play-state|point|presentation|presentation-level|profile|property|punctuation|punctuation-trim\n | radius|rate|rendering-intent|repeat|replace|reset|resolution|resource|respond-to|rest|rest-after|rest-before|richness\n | right-color|right-style|right-width|role|rotation|rotation-point|rows|ruby|ruby-overhang|ruby-span|rule|rule-color\n | rule-style|rule-width|shadow|size|size-adjust|sizing|space|space-collapse|spacing|span|speak|speak-header|speak-numeral\n | speak-punctuation|speech|speech-rate|speed|stacking|stacking-ruby|stacking-shift|stacking-strategy|stress|stretch\n | string-set|style|style-image|style-position|style-type|target|target-name|target-new|target-position|text|text-height\n | text-justify|text-outline|text-replace|text-wrap|timing-function|top-color|top-left-radius|top-right-radius|top-style\n | top-width|trim|unicode|up|user-select|variant|voice|voice-balance|voice-duration|voice-family|voice-pitch|voice-pitch-range\n | voice-rate|voice-stress|voice-volume|volume|weight|white|white-space-collapse|word|wrap\n)\n(?![\\w-])",
+ "name": "support.type.property-name.css"
+ },
+ {
+ "match": "(?<![\\w-])(?i:-(?:ah|apple|atsc|epub|hp|khtml|moz|ms|o|rim|ro|tc|wap|webkit|xv)|(?:mso|prince))-[a-zA-Z-]+",
+ "name": "support.type.vendored.property-name.css"
+ }
+ ]
+ },
+ "property-values": {
+ "patterns": [
+ {
+ "include": "#commas"
+ },
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#property-keywords"
+ },
+ {
+ "include": "#unicode-range"
+ },
+ {
+ "include": "#numeric-values"
+ },
+ {
+ "include": "#color-keywords"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "match": "!\\s*important(?![\\w-])",
+ "name": "keyword.other.important.css"
+ }
+ ]
+ },
+ "pseudo-classes": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "2": {
+ "name": "invalid.illegal.colon.css"
+ }
+ },
+ "match": "(?xi)\n(:)(:*)\n(?: active|any-link|checked|default|disabled|empty|enabled|first\n | (?:first|last|only)-(?:child|of-type)|focus|focus-visible|focus-within|fullscreen|host|hover\n | in-range|indeterminate|invalid|left|link|optional|out-of-range\n | read-only|read-write|required|right|root|scope|target|unresolved\n | valid|visited\n)(?![\\w-]|\\s*[;}])",
+ "name": "entity.other.attribute-name.pseudo-class.css"
+ },
+ "pseudo-elements": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "2": {
+ "name": "punctuation.definition.entity.css"
+ }
+ },
+ "match": "(?xi)\n(?:\n (::?) # Elements using both : and :: notation\n (?: after\n | before\n | first-letter\n | first-line\n | (?:-(?:ah|apple|atsc|epub|hp|khtml|moz\n |ms|o|rim|ro|tc|wap|webkit|xv)\n | (?:mso|prince))\n -[a-z-]+\n )\n |\n (::) # Double-colon only\n (?: backdrop\n | content\n | grammar-error\n | marker\n | placeholder\n | selection\n | shadow\n | spelling-error\n )\n)\n(?![\\w-]|\\s*[;}])",
+ "name": "entity.other.attribute-name.pseudo-element.css"
+ },
+ "rule-list": {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.property-list.begin.bracket.curly.css"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.property-list.end.bracket.curly.css"
+ }
+ },
+ "name": "meta.property-list.css",
+ "patterns": [
+ {
+ "include": "#rule-list-innards"
+ }
+ ]
+ },
+ "rule-list-innards": {
+ "patterns": [
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ },
+ {
+ "include": "#font-features"
+ },
+ {
+ "match": "(?x) (?<![\\w-])\n--\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
+ "name": "variable.css"
+ },
+ {
+ "begin": "(?<![-a-zA-Z])(?=[-a-zA-Z])",
+ "end": "$|(?![-a-zA-Z])",
+ "name": "meta.property-name.css",
+ "patterns": [
+ {
+ "include": "#property-names"
+ }
+ ]
+ },
+ {
+ "begin": "(:)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.key-value.css"
+ }
+ },
+ "end": "\\s*(;)|\\s*(?=}|\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.rule.css"
+ }
+ },
+ "contentName": "meta.property-value.css",
+ "patterns": [
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#property-values"
+ }
+ ]
+ },
+ {
+ "match": ";",
+ "name": "punctuation.terminator.rule.css"
+ }
+ ]
+ },
+ "selector": {
+ "begin": "(?x)\n(?=\n (?:\\|)? # Possible anonymous namespace prefix\n (?:\n [-\\[:.*\\#a-zA-Z_] # Valid selector character\n |\n [^\\x00-\\x7F] # Which can include non-ASCII symbols\n |\n \\\\ # Or an escape sequence\n (?:[0-9a-fA-F]{1,6}|.)\n )\n)",
+ "end": "(?=\\s*[/@{)])",
+ "name": "meta.selector.css",
+ "patterns": [
+ {
+ "include": "#selector-innards"
+ }
+ ]
+ },
+ "selector-innards": {
+ "patterns": [
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#commas"
+ },
+ {
+ "include": "#escapes"
+ },
+ {
+ "include": "#combinators"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.other.namespace-prefix.css"
+ },
+ "2": {
+ "name": "punctuation.separator.css"
+ }
+ },
+ "match": "(?x)\n(?:^|(?<=[\\s,(};])) # Follows whitespace, comma, semicolon, or bracket\n(?!\n [-\\w*]+\n \\|\n (?!\n [-\\[:.*\\#a-zA-Z_] # Make sure there's a selector to match\n | [^\\x00-\\x7F]\n )\n)\n(\n (?: [-a-zA-Z_] | [^\\x00-\\x7F] ) # First letter\n (?: [-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n | \\\\(?:[0-9a-fA-F]{1,6}|.)\n )*\n |\n \\* # Universal namespace\n)?\n(\\|) # Namespace separator"
+ },
+ {
+ "include": "#tag-names"
+ },
+ {
+ "match": "\\*",
+ "name": "entity.name.tag.wildcard.css"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#escapes"
+ }
+ ]
+ }
+ },
+ "match": "(?x) (?<![@\\w-])\n([.\\#])\n# Invalid identifier\n(\n (?:\n # Starts with ASCII digits, with possible hyphen preceding it\n -?[0-9]\n |\n # Consists of a hyphen only\n - # Terminated by either:\n (?= $ # - End-of-line\n | [\\s,.\\#)\\[:{>+~|] # - Followed by another selector\n | /\\* # - Followed by a block comment\n )\n |\n # Name contains unescaped ASCII symbol\n (?: # Check for acceptable preceding characters\n [-a-zA-Z_0-9]|[^\\x00-\\x7F] # - Valid selector character\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # - Escape sequence\n )*\n (?: # Invalid punctuation\n [!\"'%&(*;<?@^`|\\]}] # - NOTE: We exempt `)` from the list of checked\n | # symbols to avoid matching `:not(.invalid)`\n / (?!\\*) # - Avoid invalidating the start of a comment\n )+\n )\n # Mark remainder of selector invalid\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # - Otherwise valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # - Escape sequence\n )*\n)",
+ "name": "invalid.illegal.bad-identifier.css"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#escapes"
+ }
+ ]
+ }
+ },
+ "match": "(?x)\n(\\.) # Valid class-name\n(\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n )+\n) # Followed by either:\n(?= $ # - End of the line\n | [\\s,.\\#)\\[:{>+~|] # - Another selector\n | /\\* # - A block comment\n)",
+ "name": "entity.other.attribute-name.class.css"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#escapes"
+ }
+ ]
+ }
+ },
+ "match": "(?x)\n(\\#)\n(\n -?\n (?![0-9])\n (?:[-a-zA-Z0-9_]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+\n)\n(?=$|[\\s,.\\#)\\[:{>+~|]|/\\*)",
+ "name": "entity.other.attribute-name.id.css"
+ },
+ {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.entity.begin.bracket.square.css"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.entity.end.bracket.square.css"
+ }
+ },
+ "name": "meta.attribute-selector.css",
+ "patterns": [
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.modifier.ignore-case.css"
+ }
+ },
+ "match": "(?<=[\"'\\s]|^|\\*/)\\s*([iI])\\s*(?=[\\s\\]]|/\\*|$)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "string.unquoted.attribute-value.css",
+ "patterns": [
+ {
+ "include": "#escapes"
+ }
+ ]
+ }
+ },
+ "match": "(?x)(?<==)\\s*((?!/\\*)(?:[^\\\\\"'\\s\\]]|\\\\.)+)"
+ },
+ {
+ "include": "#escapes"
+ },
+ {
+ "match": "[~|^$*]?=",
+ "name": "keyword.operator.pattern.css"
+ },
+ {
+ "match": "\\|",
+ "name": "punctuation.separator.css"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.other.namespace-prefix.css",
+ "patterns": [
+ {
+ "include": "#escapes"
+ }
+ ]
+ }
+ },
+ "match": "(?x)\n# Qualified namespace prefix\n( -?(?!\\d)(?:[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+\n| \\*\n)\n# Lookahead to ensure there's a valid identifier ahead\n(?=\n \\| (?!\\s|=|$|\\])\n (?: -?(?!\\d)\n | [\\\\\\w-]\n | [^\\x00-\\x7F]\n )\n)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.css",
+ "patterns": [
+ {
+ "include": "#escapes"
+ }
+ ]
+ }
+ },
+ "match": "(?x)\n(-?(?!\\d)(?>[\\w-]|[^\\x00-\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+)\n\\s*\n(?=[~|^\\]$*=]|/\\*)"
+ }
+ ]
+ },
+ {
+ "include": "#pseudo-classes"
+ },
+ {
+ "include": "#pseudo-elements"
+ },
+ {
+ "include": "#functional-pseudo-classes"
+ },
+ {
+ "match": "(?x) (?<![@\\w-])\n(?= # Custom element names must:\n [a-z] # - start with a lowercase ASCII letter,\n \\w* - # - contain at least one dash\n)\n(?:\n (?![A-Z]) # No uppercase ASCII letters are allowed\n [\\w-] # Allow any other word character or dash\n)+\n(?![(\\w-])",
+ "name": "entity.name.tag.custom.css"
+ }
+ ]
+ },
+ "string": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.css"
+ }
+ },
+ "end": "\"|(?<!\\\\)(?=$|\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.css"
+ }
+ },
+ "name": "string.quoted.double.css",
+ "patterns": [
+ {
+ "begin": "(?:\\G|^)(?=(?:[^\\\\\"]|\\\\.)+$)",
+ "end": "$",
+ "name": "invalid.illegal.unclosed.string.css",
+ "patterns": [
+ {
+ "include": "#escapes"
+ }
+ ]
+ },
+ {
+ "include": "#escapes"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.css"
+ }
+ },
+ "end": "'|(?<!\\\\)(?=$|\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.css"
+ }
+ },
+ "name": "string.quoted.single.css",
+ "patterns": [
+ {
+ "begin": "(?:\\G|^)(?=(?:[^\\\\']|\\\\.)+$)",
+ "end": "$",
+ "name": "invalid.illegal.unclosed.string.css",
+ "patterns": [
+ {
+ "include": "#escapes"
+ }
+ ]
+ },
+ {
+ "include": "#escapes"
+ }
+ ]
+ }
+ ]
+ },
+ "tag-names": {
+ "match": "(?xi) (?<![\\w:-])\n(?:\n # HTML\n a|abbr|acronym|address|applet|area|article|aside|audio|b|base|basefont|bdi|bdo|bgsound\n | big|blink|blockquote|body|br|button|canvas|caption|center|cite|code|col|colgroup|command\n | content|data|datalist|dd|del|details|dfn|dialog|dir|div|dl|dt|element|em|embed|fieldset\n | figcaption|figure|font|footer|form|frame|frameset|h[1-6]|head|header|hgroup|hr|html|i\n | iframe|image|img|input|ins|isindex|kbd|keygen|label|legend|li|link|listing|main|map|mark\n | marquee|math|menu|menuitem|meta|meter|multicol|nav|nextid|nobr|noembed|noframes|noscript\n | object|ol|optgroup|option|output|p|param|picture|plaintext|pre|progress|q|rb|rp|rt|rtc\n | ruby|s|samp|script|section|select|shadow|slot|small|source|spacer|span|strike|strong\n | style|sub|summary|sup|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr\n | track|tt|u|ul|var|video|wbr|xmp\n\n # SVG\n | altGlyph|altGlyphDef|altGlyphItem|animate|animateColor|animateMotion|animateTransform\n | circle|clipPath|color-profile|cursor|defs|desc|discard|ellipse|feBlend|feColorMatrix\n | feComponentTransfer|feComposite|feConvolveMatrix|feDiffuseLighting|feDisplacementMap\n | feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur\n | feImage|feMerge|feMergeNode|feMorphology|feOffset|fePointLight|feSpecularLighting\n | feSpotLight|feTile|feTurbulence|filter|font-face|font-face-format|font-face-name\n | font-face-src|font-face-uri|foreignObject|g|glyph|glyphRef|hatch|hatchpath|hkern\n | line|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|metadata\n | missing-glyph|mpath|path|pattern|polygon|polyline|radialGradient|rect|set|solidcolor\n | stop|svg|switch|symbol|text|textPath|tref|tspan|use|view|vkern\n\n # MathML\n | annotation|annotation-xml|maction|maligngroup|malignmark|math|menclose|merror|mfenced\n | mfrac|mglyph|mi|mlabeledtr|mlongdiv|mmultiscripts|mn|mo|mover|mpadded|mphantom|mroot\n | mrow|ms|mscarries|mscarry|msgroup|msline|mspace|msqrt|msrow|mstack|mstyle|msub|msubsup\n | msup|mtable|mtd|mtext|mtr|munder|munderover|semantics\n)\n(?=[+~>\\s,.\\#|){:\\[]|/\\*|$)",
+ "name": "entity.name.tag.css"
+ },
+ "unicode-range": {
+ "captures": {
+ "0": {
+ "name": "constant.other.unicode-range.css"
+ },
+ "1": {
+ "name": "punctuation.separator.dash.unicode-range.css"
+ }
+ },
+ "match": "(?<![\\w-])[Uu]\\+[0-9A-Fa-f?]{1,6}(?:(-)[0-9A-Fa-f]{1,6})?(?![\\w-])"
+ },
+ "url": {
+ "begin": "(?i)(?<![\\w@-])(url)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.url.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "name": "meta.function.url.css",
+ "patterns": [
+ {
+ "match": "[^'\")\\s]+",
+ "name": "variable.parameter.url.css"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#escapes"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/cue.tmLanguage.json b/node_modules/shiki/languages/cue.tmLanguage.json
new file mode 100644
index 0000000..15aa409
--- /dev/null
+++ b/node_modules/shiki/languages/cue.tmLanguage.json
@@ -0,0 +1,1126 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "name": "cue",
+ "fileTypes": ["cue"],
+ "scopeName": "source.cue",
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\$\\#])(package)[ \\t]+([\\p{L}\\$\\#][\\p{L}\\p{Nd}_\\$\\#]*)(?![\\p{L}\\p{Nd}_\\$\\#])",
+ "captures": {
+ "1": {
+ "name": "keyword.other.package"
+ },
+ "2": {
+ "name": "entity.name.namespace"
+ }
+ }
+ },
+ {
+ "patterns": [
+ {
+ "begin": "(?<![\\p{L}\\p{Nd}_\\$\\#])(import)[ \\t]+(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.import"
+ },
+ "2": {
+ "name": "punctuation.section.parens.begin"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "(?:([\\p{L}\\$\\#][\\p{L}\\p{Nd}_\\$\\#]*)[ \\t]+)?(\")([^:\"]+)(?:(:)([\\p{L}\\$\\#][\\p{L}\\p{Nd}_\\$\\#]*))?(\")",
+ "captures": {
+ "1": {
+ "name": "entity.name.namespace"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin"
+ },
+ "3": {
+ "name": "string.quoted.double-import"
+ },
+ "4": {
+ "name": "punctuation.colon"
+ },
+ "5": {
+ "name": "entity.name"
+ },
+ "6": {
+ "name": "punctuation.definition.string.end"
+ }
+ },
+ "name": "meta.import-spec"
+ },
+ {
+ "match": ";",
+ "name": "punctuation.separator"
+ },
+ {
+ "include": "#invalid_in_parens"
+ }
+ ],
+ "name": "meta.imports"
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\$\\#])(import)[ \\t]+(?:([\\p{L}\\$\\#][\\p{L}\\p{Nd}_\\$\\#]*)[ \\t]+)?(\")([^:\"]+)(?:(:)([\\p{L}\\$\\#][\\p{L}\\p{Nd}_\\$\\#]*))?(\")",
+ "captures": {
+ "1": {
+ "name": "keyword.other.import"
+ },
+ "2": {
+ "name": "entity.name.namespace"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin"
+ },
+ "4": {
+ "name": "string.quoted.double-import"
+ },
+ "5": {
+ "name": "punctuation.colon"
+ },
+ "6": {
+ "name": "entity.name"
+ },
+ "7": {
+ "name": "punctuation.definition.string.end"
+ }
+ },
+ "name": "meta.import"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation_comma"
+ },
+ {
+ "include": "#declaration"
+ },
+ {
+ "include": "#invalid_in_braces"
+ }
+ ],
+ "repository": {
+ "attribute_element": {
+ "patterns": [
+ {
+ "begin": "([\\p{L}\\$\\#][\\p{L}\\p{Nd}_\\$\\#]*|_[\\p{L}\\p{Nd}_\\$\\#]+)(=)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other"
+ },
+ "2": {
+ "name": "punctuation.bind"
+ }
+ },
+ "end": "(?=[,\\)])",
+ "patterns": [
+ {
+ "include": "#attribute_string"
+ }
+ ]
+ },
+ {
+ "begin": "([\\p{L}\\$\\#][\\p{L}\\p{Nd}_\\$\\#]*|_[\\p{L}\\p{Nd}_\\$\\#]+)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other"
+ },
+ "2": {
+ "name": "punctuation.attribute-elements.begin"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.attribute-elements.end"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#punctuation_comma"
+ },
+ {
+ "include": "#attribute_element"
+ }
+ ]
+ },
+ {
+ "include": "#attribute_string"
+ }
+ ]
+ },
+ "attribute_string": {
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "match": "[^\\n,\"'#=\\(\\)]+",
+ "name": "string.unquoted"
+ },
+ {
+ "match": "[^,\\)]+",
+ "name": "invalid"
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "match": "(//).*$\\n?",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment"
+ }
+ },
+ "name": "comment.line"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment"
+ }
+ },
+ "begin": "/\\*",
+ "end": "\\*/",
+ "name": "comment.block"
+ }
+ ]
+ },
+ "declaration": {
+ "patterns": [
+ {
+ "begin": "(@)([\\p{L}\\$\\#][\\p{L}\\p{Nd}_\\$\\#]*|_[\\p{L}\\p{Nd}_\\$\\#]+)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.annotation"
+ },
+ "2": {
+ "name": "variable.annotation"
+ },
+ "3": {
+ "name": "punctuation.attribute-elements.begin"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.attribute-elements.end"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#punctuation_comma"
+ },
+ {
+ "include": "#attribute_element"
+ }
+ ],
+ "name": "meta.annotation"
+ },
+ {
+ "match": "(?<!:)::(?!:)",
+ "name": "punctuation.isa"
+ },
+ {
+ "include": "#punctuation_colon"
+ },
+ {
+ "match": "\\?",
+ "name": "punctuation.option"
+ },
+ {
+ "match": "(?<![=!><])=(?![=~])",
+ "name": "punctuation.bind"
+ },
+ {
+ "match": "<-",
+ "name": "punctuation.arrow"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "expression": {
+ "patterns": [
+ {
+ "patterns": [
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\$\\#])(for)[ \\t]+([\\p{L}\\$\\#][\\p{L}\\p{Nd}_\\$\\#]*|_[\\p{L}\\p{Nd}_\\$\\#]+)(?:[ \\t]*(,)[ \\t]*([\\p{L}\\$\\#][\\p{L}\\p{Nd}_\\$\\#]*|_[\\p{L}\\p{Nd}_\\$\\#]+))?[ \\t]+(in)(?![\\p{L}\\p{Nd}_\\$\\#])",
+ "captures": {
+ "1": {
+ "name": "keyword.control.for"
+ },
+ "2": {
+ "name": "variable.other"
+ },
+ "3": {
+ "name": "punctuation.separator"
+ },
+ "4": {
+ "name": "variable.other"
+ },
+ "5": {
+ "name": "keyword.control.in"
+ }
+ }
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\$\\#])if(?![\\p{L}\\p{Nd}_\\$\\#])",
+ "name": "keyword.control.conditional"
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\$\\#])(let)[ \\t]+([\\p{L}\\$\\#][\\p{L}\\p{Nd}_\\$\\#]*|_[\\p{L}\\p{Nd}_\\$\\#]+)[ \\t]*(=)(?![=])",
+ "captures": {
+ "1": {
+ "name": "keyword.control.let"
+ },
+ "2": {
+ "name": "variable.other"
+ },
+ "3": {
+ "name": "punctuation.bind"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "patterns": [
+ {
+ "match": "[\\+\\-\\*]|/(?![/*])",
+ "name": "keyword.operator"
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\$\\#])(?:div|mod|quo|rem)(?![\\p{L}\\p{Nd}_\\$\\#])",
+ "name": "keyword.operator.word"
+ },
+ {
+ "match": "=[=~]|![=~]|<=|>=|[<](?![-=])|[>](?![=])",
+ "name": "keyword.operator.comparison"
+ },
+ {
+ "match": "&{2}|\\|{2}|!(?![=~])",
+ "name": "keyword.operator.logical"
+ },
+ {
+ "match": "&(?!&)|\\|(?!\\|)",
+ "name": "keyword.operator.set"
+ }
+ ]
+ },
+ {
+ "match": "(?<!\\.)(\\.)([\\p{L}\\$\\#][\\p{L}\\p{Nd}_\\$\\#]*|_[\\p{L}\\p{Nd}_\\$\\#]+)(?![\\p{L}\\p{Nd}_\\$\\#])",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor"
+ },
+ "2": {
+ "name": "variable.other.member"
+ }
+ }
+ },
+ {
+ "patterns": [
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\$\\#])_(?!\\|)(?![\\p{L}\\p{Nd}_\\$\\#])",
+ "name": "constant.language.top"
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\$\\#])_\\|_(?![\\p{L}\\p{Nd}_\\$\\#])",
+ "name": "constant.language.bottom"
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\$\\#])null(?![\\p{L}\\p{Nd}_\\$\\#])",
+ "name": "constant.language.null"
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\$\\#])(?:true|false)(?![\\p{L}\\p{Nd}_\\$\\#])",
+ "name": "constant.language.bool"
+ },
+ {
+ "patterns": [
+ {
+ "patterns": [
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\.])[0-9](?:_?[0-9])*\\.(?:[0-9](?:_?[0-9])*)?(?:[eE][\\+\\-]?[0-9](?:_?[0-9])*)?(?![\\p{L}\\p{Nd}_\\.])",
+ "name": "constant.numeric.float.decimal"
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\.])[0-9](?:_?[0-9])*[eE][\\+\\-]?[0-9](?:_?[0-9])*(?![\\p{L}\\p{Nd}_\\.])",
+ "name": "constant.numeric.float.decimal"
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\.])\\.[0-9](?:_?[0-9])*(?:[eE][\\+\\-]?[0-9](?:_?[0-9])*)?(?![\\p{L}\\p{Nd}_\\.])",
+ "name": "constant.numeric.float.decimal"
+ }
+ ]
+ },
+ {
+ "patterns": [
+ {
+ "patterns": [
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\.])(?:0|[1-9](?:_?[0-9])*)(?:\\.[0-9](?:_?[0-9])*)?(?:[KMGTPEYZ]i?)(?![\\p{L}\\p{Nd}_\\.])",
+ "name": "constant.numeric.integer.other"
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\.])\\.[0-9](?:_?[0-9])*(?:[KMGTPEYZ]i?)(?![\\p{L}\\p{Nd}_\\.])",
+ "name": "constant.numeric.integer.other"
+ }
+ ]
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\.])(?:0|[1-9](?:_?[0-9])*)(?![\\p{L}\\p{Nd}_\\.])",
+ "name": "constant.numeric.integer.decimal"
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\.])0b[0-1](?:_?[0-1])*(?![\\p{L}\\p{Nd}_\\.])",
+ "name": "constant.numeric.integer.binary"
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\.])0[xX][0-9a-fA-F](?:_?[0-9a-fA-F])*(?![\\p{L}\\p{Nd}_\\.])",
+ "name": "constant.numeric.integer.hexadecimal"
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\.])0o?[0-7](?:_?[0-7])*(?![\\p{L}\\p{Nd}_\\.])",
+ "name": "constant.numeric.integer.octal"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\$\\#])(?:bool|u?int(?:8|16|32|64|128)?|float(?:32|64)?|string|bytes|number|rune)(?![\\p{L}\\p{Nd}_\\$\\#])",
+ "name": "support.type"
+ },
+ {
+ "patterns": [
+ {
+ "begin": "(?<![\\p{L}\\p{Nd}_\\$\\#])(len|close|and|or)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function"
+ },
+ "2": {
+ "name": "punctuation.section.parens.begin"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#punctuation_comma"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#invalid_in_parens"
+ }
+ ],
+ "name": "meta.function-call"
+ },
+ {
+ "begin": "(?<![\\p{L}\\p{Nd}_\\$\\#])([\\p{L}\\$\\#][\\p{L}\\p{Nd}_\\$\\#]*)(\\.)(\\p{Lu}[\\p{L}\\p{Nd}_\\$\\#]*)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.module"
+ },
+ "2": {
+ "name": "punctuation"
+ },
+ "3": {
+ "name": "support.function"
+ },
+ "4": {
+ "name": "punctuation.section.parens.begin"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#punctuation_comma"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#invalid_in_parens"
+ }
+ ],
+ "name": "meta.function-call"
+ }
+ ]
+ },
+ {
+ "match": "(?<![\\p{L}\\p{Nd}_\\$\\#])(?:[\\p{L}\\$\\#][\\p{L}\\p{Nd}_\\$\\#]*|_[\\p{L}\\p{Nd}_\\$\\#]+)(?![\\p{L}\\p{Nd}_\\$\\#])",
+ "name": "variable.other"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.struct.begin"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.struct.end"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#punctuation_comma"
+ },
+ {
+ "include": "#punctuation_ellipsis"
+ },
+ {
+ "include": "#declaration"
+ },
+ {
+ "include": "#invalid_in_braces"
+ }
+ ],
+ "name": "meta.struct"
+ },
+ {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.brackets.begin"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.brackets.end"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#punctuation_colon"
+ },
+ {
+ "include": "#punctuation_comma"
+ },
+ {
+ "include": "#punctuation_ellipsis"
+ },
+ {
+ "match": "([\\p{L}\\$\\#][\\p{L}\\p{Nd}_\\$\\#]*|_[\\p{L}\\p{Nd}_\\$\\#]+)[ \\t]*(=)",
+ "captures": {
+ "1": {
+ "name": "variable.other"
+ },
+ "2": {
+ "name": "punctuation.alias"
+ }
+ }
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "match": "[^\\]]+",
+ "name": "invalid"
+ }
+ ],
+ "name": "meta.brackets"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#punctuation_comma"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#invalid_in_parens"
+ }
+ ],
+ "name": "meta.parens"
+ }
+ ]
+ }
+ ]
+ },
+ "invalid_in_braces": {
+ "match": "[^\\}]+",
+ "name": "invalid"
+ },
+ "invalid_in_parens": {
+ "match": "[^\\)]+",
+ "name": "invalid"
+ },
+ "punctuation_colon": {
+ "match": "(?<!:):(?!:)",
+ "name": "punctuation.colon"
+ },
+ "punctuation_comma": {
+ "match": ",",
+ "name": "punctuation.separator"
+ },
+ "punctuation_ellipsis": {
+ "match": "(?<!\\.)\\.{3}(?!\\.)",
+ "name": "punctuation.ellipsis"
+ },
+ "string": {
+ "patterns": [
+ {
+ "begin": "#\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin"
+ }
+ },
+ "end": "\"\"\"#",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end"
+ }
+ },
+ "contentName": "string.quoted.double-multiline",
+ "patterns": [
+ {
+ "match": "\\\\#(?:\"\"\"|/|\\\\|[abfnrtv]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})",
+ "name": "constant.character.escape"
+ },
+ {
+ "match": "\\\\#(?:[0-7]{3}|x[0-9A-Fa-f]{2})",
+ "name": "invalid.illegal"
+ },
+ {
+ "begin": "\\\\#\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.interpolation.begin"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.interpolation.end"
+ }
+ },
+ "contentName": "source.cue.embedded",
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#invalid_in_parens"
+ }
+ ],
+ "name": "meta.interpolation"
+ },
+ {
+ "match": "\\\\#.",
+ "name": "invalid.illegal"
+ }
+ ],
+ "name": "meta.string"
+ },
+ {
+ "begin": "#\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin"
+ }
+ },
+ "end": "\"#",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end"
+ }
+ },
+ "contentName": "string.quoted.double",
+ "patterns": [
+ {
+ "match": "\\\\#(?:\"|/|\\\\|[abfnrtv]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})",
+ "name": "constant.character.escape"
+ },
+ {
+ "match": "\\\\#(?:[0-7]{3}|x[0-9A-Fa-f]{2})",
+ "name": "invalid.illegal"
+ },
+ {
+ "begin": "\\\\#\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.interpolation.begin"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.interpolation.end"
+ }
+ },
+ "contentName": "source.cue.embedded",
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#invalid_in_parens"
+ }
+ ],
+ "name": "meta.interpolation"
+ },
+ {
+ "match": "\\\\#.",
+ "name": "invalid.illegal"
+ }
+ ],
+ "name": "meta.string"
+ },
+ {
+ "begin": "#'''",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin"
+ }
+ },
+ "end": "'''#",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end"
+ }
+ },
+ "contentName": "string.quoted.single-multiline",
+ "patterns": [
+ {
+ "match": "\\\\#(?:'''|/|\\\\|[abfnrtv]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})",
+ "name": "constant.character.escape"
+ },
+ {
+ "match": "\\\\#(?:[0-7]{3}|x[0-9A-Fa-f]{2})",
+ "name": "constant.character.escape"
+ },
+ {
+ "begin": "\\\\#\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.interpolation.begin"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.interpolation.end"
+ }
+ },
+ "contentName": "source.cue.embedded",
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#invalid_in_parens"
+ }
+ ],
+ "name": "meta.interpolation"
+ },
+ {
+ "match": "\\\\#.",
+ "name": "invalid.illegal"
+ }
+ ],
+ "name": "meta.string"
+ },
+ {
+ "begin": "#'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin"
+ }
+ },
+ "end": "'#",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end"
+ }
+ },
+ "contentName": "string.quoted.single",
+ "patterns": [
+ {
+ "match": "\\\\#(?:'|/|\\\\|[abfnrtv]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})",
+ "name": "constant.character.escape"
+ },
+ {
+ "match": "\\\\#(?:[0-7]{3}|x[0-9A-Fa-f]{2})",
+ "name": "constant.character.escape"
+ },
+ {
+ "begin": "\\\\#\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.interpolation.begin"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.interpolation.end"
+ }
+ },
+ "contentName": "source.cue.embedded",
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#invalid_in_parens"
+ }
+ ],
+ "name": "meta.interpolation"
+ },
+ {
+ "match": "\\\\#.",
+ "name": "invalid.illegal"
+ }
+ ],
+ "name": "meta.string"
+ },
+ {
+ "begin": "\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end"
+ }
+ },
+ "contentName": "string.quoted.double-multiline",
+ "patterns": [
+ {
+ "match": "\\\\(?:\"\"\"|/|\\\\|[abfnrtv]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})",
+ "name": "constant.character.escape"
+ },
+ {
+ "match": "\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2})",
+ "name": "invalid.illegal"
+ },
+ {
+ "begin": "\\\\\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.interpolation.begin"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.interpolation.end"
+ }
+ },
+ "contentName": "source.cue.embedded",
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#invalid_in_parens"
+ }
+ ],
+ "name": "meta.interpolation"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal"
+ }
+ ],
+ "name": "meta.string"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end"
+ }
+ },
+ "contentName": "string.quoted.double",
+ "patterns": [
+ {
+ "match": "\\\\(?:\"|/|\\\\|[abfnrtv]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})",
+ "name": "constant.character.escape"
+ },
+ {
+ "match": "\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2})",
+ "name": "invalid.illegal"
+ },
+ {
+ "begin": "\\\\\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.interpolation.begin"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.interpolation.end"
+ }
+ },
+ "contentName": "source.cue.embedded",
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#invalid_in_parens"
+ }
+ ],
+ "name": "meta.interpolation"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal"
+ }
+ ],
+ "name": "meta.string"
+ },
+ {
+ "begin": "'''",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin"
+ }
+ },
+ "end": "'''",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end"
+ }
+ },
+ "contentName": "string.quoted.single-multiline",
+ "patterns": [
+ {
+ "match": "\\\\(?:'''|/|\\\\|[abfnrtv]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})",
+ "name": "constant.character.escape"
+ },
+ {
+ "match": "\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2})",
+ "name": "constant.character.escape"
+ },
+ {
+ "begin": "\\\\\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.interpolation.begin"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.interpolation.end"
+ }
+ },
+ "contentName": "source.cue.embedded",
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#invalid_in_parens"
+ }
+ ],
+ "name": "meta.interpolation"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal"
+ }
+ ],
+ "name": "meta.string"
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end"
+ }
+ },
+ "contentName": "string.quoted.single",
+ "patterns": [
+ {
+ "match": "\\\\(?:'|/|\\\\|[abfnrtv]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})",
+ "name": "constant.character.escape"
+ },
+ {
+ "match": "\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2})",
+ "name": "constant.character.escape"
+ },
+ {
+ "begin": "\\\\\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.interpolation.begin"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.interpolation.end"
+ }
+ },
+ "contentName": "source.cue.embedded",
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#invalid_in_parens"
+ }
+ ],
+ "name": "meta.interpolation"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal"
+ }
+ ],
+ "name": "meta.string"
+ },
+ {
+ "begin": "`",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end"
+ }
+ },
+ "contentName": "string.quoted.backtick",
+ "name": "meta.string"
+ }
+ ]
+ },
+ "whitespace": {
+ "match": "[ \\t\\r\\n]+"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/cypher.tmLanguage.json b/node_modules/shiki/languages/cypher.tmLanguage.json
new file mode 100644
index 0000000..c39f493
--- /dev/null
+++ b/node_modules/shiki/languages/cypher.tmLanguage.json
@@ -0,0 +1,349 @@
+{
+ "fileTypes": ["cql", "cyp", "cypher"],
+ "name": "cypher",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#path-patterns"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#identifiers"
+ },
+ {
+ "include": "#properties_literal"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#strings"
+ }
+ ],
+ "repository": {
+ "comments": {
+ "patterns": [
+ {
+ "match": "//.*$\\n?",
+ "name": "comment.line.double-slash.cypher"
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "match": "(?i)\\bTRUE|FALSE\\b",
+ "name": "constant.language.bool.cypher"
+ },
+ {
+ "match": "(?i)\\bNULL\\b",
+ "name": "constant.language.missing.cypher"
+ }
+ ]
+ },
+ "functions": {
+ "patterns": [
+ {
+ "comment": "List of Cypher built-in functions from http://docs.neo4j.org/chunked/milestone/query-function.html",
+ "match": "(?i)\\b((NOT)(?=\\s*\\()|IS\\s+NULL|IS\\s+NOT\\s+NULL)",
+ "name": "keyword.control.function.boolean.cypher"
+ },
+ {
+ "comment": "List of Cypher built-in functions from http://docs.neo4j.org/chunked/milestone/query-function.html",
+ "match": "(?i)\\b(ALL|ANY|NONE|SINGLE)(?=\\s*\\()",
+ "name": "support.function.predicate.cypher"
+ },
+ {
+ "comment": "List of Cypher built-in functions from http://docs.neo4j.org/chunked/milestone/query-function.html",
+ "match": "(?i)\\b(LENGTH|TYPE|ID|COALESCE|HEAD|LAST|TIMESTAMP|STARTNODE|ENDNODE|TOINT|TOFLOAT)(?=\\s*\\()",
+ "name": "support.function.scalar.cypher"
+ },
+ {
+ "comment": "List of Cypher built-in functions from http://docs.neo4j.org/chunked/milestone/query-function.html",
+ "match": "(?i)\\b(NODES|RELATIONSHIPS|LABELS|EXTRACT|FILTER|TAIL|RANGE|REDUCE)(?=\\s*\\()",
+ "name": "support.function.collection.cypher"
+ },
+ {
+ "comment": "List of Cypher built-in functions from http://docs.neo4j.org/chunked/milestone/query-function.html",
+ "match": "(?i)\\b(ABS|ACOS|ASIN|ATAN|ATAN2|COS|COT|DEGREES|E|EXP|FLOOR|HAVERSIN|LOG|LOG10|PI|RADIANS|RAND|ROUND|SIGN|SIN|SQRT|TAN)(?=\\s*\\()",
+ "name": "support.function.math.cypher"
+ },
+ {
+ "comment": "List of Cypher built-in functions from http://docs.neo4j.org/chunked/milestone/query-function.html",
+ "match": "(?i)\\b(COUNT|sum|avg|max|min|stdev|stdevp|percentileDisc|percentileCont|collect)(?=\\s*\\()",
+ "name": "support.function.aggregation.cypher"
+ },
+ {
+ "comment": "List of Cypher built-in functions from http://docs.neo4j.org/chunked/milestone/query-function.html",
+ "match": "(?i)\\b(STR|REPLACE|SUBSTRING|LEFT|RIGHT|LTRIM|RTRIM|TRIM|LOWER|UPPER|SPLIT)(?=\\s*\\()",
+ "name": "support.function.string.cypher"
+ }
+ ]
+ },
+ "identifiers": {
+ "patterns": [
+ {
+ "match": "`.+?`",
+ "name": "variable.other.quoted-identifier.cypher"
+ },
+ {
+ "match": "[\\p{L}_][\\p{L}0-9_]*",
+ "name": "variable.other.identifier.cypher"
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(START|MATCH|WHERE|RETURN|UNION|FOREACH|WITH|AS|LIMIT|SKIP|UNWIND|HAS|DISTINCT|OPTIONAL\\\\s+MATCH|ORDER\\s+BY|CALL|YIELD)\\b",
+ "name": "keyword.control.clause.cypher"
+ },
+ {
+ "match": "(?i)\\b(ELSE|END|THEN|CASE|WHEN)\\b",
+ "name": "keyword.control.case.cypher"
+ },
+ {
+ "match": "(?i)\\b(FIELDTERMINATOR|USING\\s+PERIODIC\\s+COMMIT|HEADERS|LOAD\\s+CSV|FROM)\\b",
+ "name": "keyword.data.import.cypher"
+ },
+ {
+ "match": "(?i)\\b(USING\\s+INDEX|CREATE\\s+INDEX\\s+ON|DROP\\s+INDEX\\s+ON|CREATE\\s+CONSTRAINT\\s+ON|DROP\\s+CONSTRAINT\\s+ON)\\b",
+ "name": "keyword.other.indexes.cypher"
+ },
+ {
+ "match": "(?i)\\b(MERGE|DELETE|SET|REMOVE|ON\\s+CREATE|ON\\s+MATCH|CREATE\\s+UNIQUE|CREATE)\\b",
+ "name": "keyword.data.definition.cypher"
+ },
+ {
+ "match": "(?i)\\b(DESC|ASC)\\b",
+ "name": "keyword.other.order.cypher"
+ },
+ {
+ "begin": "(?i)\\b(node|relationship|rel)((:)([\\p{L}_-][\\p{L}0-9_]*))?(?=\\s*\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.class.starting-functions-point.cypher"
+ },
+ "2": {
+ "name": "keyword.control.index-seperator.cypher"
+ },
+ "3": {
+ "name": "keyword.control.index-seperator.cypher"
+ },
+ "4": {
+ "name": "support.class.index.cypher"
+ }
+ },
+ "end": "\\)",
+ "name": "source.starting-functions.cypher",
+ "patterns": [
+ {
+ "match": "((?:`.+?`)|(?:[\\p{L}_][\\p{L}0-9_]*))",
+ "name": "variable.parameter.relationship-name.cypher"
+ },
+ {
+ "match": "(\\*)",
+ "name": "keyword.control.starting-function-params.cypher"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#strings"
+ }
+ ]
+ }
+ ]
+ },
+ "numbers": {
+ "patterns": [
+ {
+ "match": "\\b\\d+(\\.\\d+)?\\b",
+ "name": "constant.numeric.cypher"
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "match": "(\\+|\\-|\\/|\\*|\\%|\\?|!)",
+ "name": "keyword.operator.math.cypher"
+ },
+ {
+ "match": "(<=|=>|<>|<|>|=~|=)",
+ "name": "keyword.operator.compare.cypher"
+ },
+ {
+ "match": "(?i)\\b(OR|AND|XOR|IS)\\b",
+ "name": "keyword.operator.logical.cypher"
+ },
+ {
+ "match": "(?i)\\b(IN)\\b",
+ "name": "keyword.operator.in.cypher"
+ }
+ ]
+ },
+ "path-patterns": {
+ "patterns": [
+ {
+ "match": "(<--|-->|--)",
+ "name": "support.function.relationship-pattern.cypher"
+ },
+ {
+ "begin": "(<-|-)(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.relationship-pattern-start.cypher"
+ },
+ "2": {
+ "name": "keyword.operator.relationship-pattern-start.cypher"
+ }
+ },
+ "end": "(])(->|-)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.relationship-pattern-end.cypher"
+ },
+ "2": {
+ "name": "support.function.relationship-pattern-end.cypher"
+ }
+ },
+ "name": "path-pattern.cypher",
+ "patterns": [
+ {
+ "include": "#identifiers"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.relationship-type-start.cypher"
+ },
+ "2": {
+ "name": "entity.name.class.relationship.type.cypher"
+ }
+ },
+ "match": "(:)((?:`.+?`)|(?:[\\p{L}_][\\p{L}0-9_]*))",
+ "name": "entity.name.class.relationship-type.cypher"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.type.operator.relationship-type-or.cypher"
+ },
+ "2": {
+ "name": "entity.name.class.relationship.type-or.cypher"
+ }
+ },
+ "match": "(\\|)(\\s*)((?:`.+?`)|(?:[\\p{L}_][\\p{L}0-9_]*))",
+ "name": "entity.name.class.relationship-type-ored.cypher"
+ },
+ {
+ "match": "(?:\\?\\*|\\?|\\*)\\s*(?:\\d+\\s*(?:\\.\\.\\s*\\d+)?)?",
+ "name": "support.function.relationship-pattern.quant.cypher"
+ },
+ {
+ "include": "#properties_literal"
+ }
+ ]
+ }
+ ]
+ },
+ "properties_literal": {
+ "patterns": [
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.properties_literal.cypher"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.properties_literal.cypher"
+ }
+ },
+ "name": "source.cypher",
+ "patterns": [
+ {
+ "match": ":|,",
+ "name": "keyword.control.properties_literal.seperator.cypher"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#identifiers"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#strings"
+ }
+ ]
+ }
+ ]
+ },
+ "string_escape": {
+ "captures": {
+ "2": {
+ "name": "string.quoted.double.cypher"
+ }
+ },
+ "match": "(\\\\\\\\|\\\\[tbnrf])|(\\\\'|\\\\\")",
+ "name": "constant.character.escape.cypher"
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "'",
+ "end": "'",
+ "name": "string.quoted.single.cypher",
+ "patterns": [
+ {
+ "include": "#string_escape"
+ }
+ ]
+ },
+ {
+ "begin": "\"",
+ "end": "\"",
+ "name": "string.quoted.double.cypher",
+ "patterns": [
+ {
+ "include": "#string_escape"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "scopeName": "source.cypher",
+ "uuid": "698F4D06-BAE8-40A8-8AA4-3307ABC03B31"
+}
diff --git a/node_modules/shiki/languages/d.tmLanguage.json b/node_modules/shiki/languages/d.tmLanguage.json
new file mode 100644
index 0000000..9d0f689
--- /dev/null
+++ b/node_modules/shiki/languages/d.tmLanguage.json
@@ -0,0 +1,3195 @@
+{
+ "fileTypes": ["d", "di", "dpp"],
+ "name": "d",
+ "scopeName": "source.d",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#statement"
+ },
+ {
+ "include": "#expression"
+ }
+ ],
+ "repository": {
+ "type": {
+ "patterns": [
+ {
+ "include": "#typeof"
+ },
+ {
+ "include": "#base-type"
+ },
+ {
+ "include": "#type-ctor"
+ },
+ {
+ "begin": "!\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "base-type": {
+ "patterns": [
+ {
+ "match": "\\b(auto|bool|byte|ubyte|short|ushort|int|uint|long|ulong|char|wchar|dchar|float|double|real|ifloat|idouble|ireal|cfloat|cdouble|creal|void|noreturn)\\b",
+ "name": "storage.type.basic-type.d"
+ },
+ {
+ "match": "\\b(string|wstring|dstring|size_t|ptrdiff_t)\\b(?!\\s*=)",
+ "name": "storage.type.basic-type.d"
+ }
+ ]
+ },
+ "extended-type": {
+ "patterns": [
+ {
+ "match": "\\b((\\.\\s*)?[_\\w][_\\d\\w]*)(\\s*\\.\\s*[_\\w][_\\d\\w]*)*\\b",
+ "name": "entity.name.type.d"
+ },
+ {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.array.expression.begin.d"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "storage.type.array.expression.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\.\\.|\\$",
+ "name": "keyword.operator.slice.d"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "type-ctor": {
+ "patterns": [
+ {
+ "match": "(const|immutable|inout|shared)\\b",
+ "name": "storage.type.modifier.d"
+ }
+ ]
+ },
+ "typeof": {
+ "begin": "typeof\\s*\\(",
+ "end": "\\)",
+ "name": "keyword.token.typeof.d",
+ "patterns": [
+ {
+ "match": "return",
+ "name": "keyword.control.return.d"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "expression": {
+ "patterns": [
+ {
+ "include": "#index-expression"
+ },
+ {
+ "include": "#expression-no-index"
+ }
+ ]
+ },
+ "expression-no-index": {
+ "patterns": [
+ {
+ "include": "#function-literal"
+ },
+ {
+ "include": "#assert-expression"
+ },
+ {
+ "include": "#assign-expression"
+ },
+ {
+ "include": "#mixin-expression"
+ },
+ {
+ "include": "#import-expression"
+ },
+ {
+ "include": "#traits-expression"
+ },
+ {
+ "include": "#is-expression"
+ },
+ {
+ "include": "#typeid-expression"
+ },
+ {
+ "include": "#shift-expression"
+ },
+ {
+ "include": "#logical-expression"
+ },
+ {
+ "include": "#rel-expression"
+ },
+ {
+ "include": "#bitwise-expression"
+ },
+ {
+ "include": "#identity-expression"
+ },
+ {
+ "include": "#in-expression"
+ },
+ {
+ "include": "#conditional-expression"
+ },
+ {
+ "include": "#arithmetic-expression"
+ },
+ {
+ "include": "#new-expression"
+ },
+ {
+ "include": "#delete-expression"
+ },
+ {
+ "include": "#cast-expression"
+ },
+ {
+ "include": "#type-specialization"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#special-keyword"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#parentheses-expression"
+ },
+ {
+ "include": "#lexical"
+ }
+ ]
+ },
+ "assign-expression": {
+ "patterns": [
+ {
+ "match": ">>>=|\\^\\^=|>>=|<<=|~=|\\^=|\\|=|&=|%=|/=|\\*=|-=|\\+=|=(?!>)",
+ "name": "keyword.operator.assign.d"
+ }
+ ]
+ },
+ "conditional-expression": {
+ "patterns": [
+ {
+ "match": "\\s(\\?|:)\\s",
+ "name": "keyword.operator.ternary.d"
+ }
+ ]
+ },
+ "logical-expression": {
+ "patterns": [
+ {
+ "match": "\\|\\||&&|==|!=|!",
+ "name": "keyword.operator.logical.d"
+ }
+ ]
+ },
+ "bitwise-expression": {
+ "patterns": [
+ {
+ "match": "\\||\\^|&",
+ "name": "keyword.operator.bitwise.d"
+ }
+ ]
+ },
+ "identity-expression": {
+ "patterns": [
+ {
+ "match": "\\b(is|!is)\\b",
+ "name": "keyword.operator.identity.d"
+ }
+ ]
+ },
+ "rel-expression": {
+ "patterns": [
+ {
+ "match": "!<>=|!<>|<>=|!>=|!<=|<=|>=|<>|!>|!<|<|>",
+ "name": "keyword.operator.rel.d"
+ }
+ ]
+ },
+ "in-expression": {
+ "patterns": [
+ {
+ "match": "\\b(in|!in)\\b",
+ "name": "keyword.operator.in.d"
+ }
+ ]
+ },
+ "shift-expression": {
+ "patterns": [
+ {
+ "match": "<<|>>|>>>",
+ "name": "keyword.operator.shift.d"
+ },
+ {
+ "include": "#add-expression"
+ }
+ ]
+ },
+ "arithmetic-expression": {
+ "patterns": [
+ {
+ "match": "\\^\\^|\\+\\+|--|(?<!/)\\+(?!/)|-|~|(?<!/)\\*(?!/)|(?<![+*/])/(?![+*/])|%",
+ "name": "keyword.operator.numeric.d"
+ }
+ ]
+ },
+ "new-expression": {
+ "patterns": [
+ {
+ "match": "\\bnew\\s+",
+ "name": "keyword.other.new.d"
+ }
+ ]
+ },
+ "delete-expression": {
+ "patterns": [
+ {
+ "match": "\\bdelete\\s+",
+ "name": "keyword.other.delete.d"
+ }
+ ]
+ },
+ "cast-expression": {
+ "patterns": [
+ {
+ "begin": "\\b(cast)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.cast.d"
+ },
+ "2": {
+ "name": "keyword.operator.cast.begin.d"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.cast.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#extended-type"
+ }
+ ]
+ }
+ ]
+ },
+ "index-expression": {
+ "patterns": [
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "patterns": [
+ {
+ "match": "\\.\\.|\\$",
+ "name": "keyword.operator.slice.d"
+ },
+ {
+ "include": "#expression-no-index"
+ }
+ ]
+ }
+ ]
+ },
+ "function-literal": {
+ "patterns": [
+ {
+ "match": "=>",
+ "name": "keyword.operator.lambda.d"
+ },
+ {
+ "match": "\\b(function|delegate)\\b",
+ "name": "keyword.other.function-literal.d"
+ },
+ {
+ "begin": "\\b([_\\w][_\\d\\w]*)\\s*(=>)",
+ "end": "(?=[\\);,\\]}])",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.parameter.d"
+ },
+ "2": {
+ "name": "meta.lexical.token.symbolic.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.d"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\)|\\()(\\s*)({)",
+ "beginCaptures": {
+ "1": {
+ "name": "source.d"
+ },
+ "2": {
+ "name": "source.d"
+ }
+ },
+ "end": "}",
+ "patterns": [
+ {
+ "include": "source.d"
+ }
+ ]
+ }
+ ]
+ },
+ "assert-expression": {
+ "patterns": [
+ {
+ "begin": "\\bassert\\s*\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.assert.begin.d"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.assert.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ }
+ ]
+ },
+ "mixin-expression": {
+ "patterns": [
+ {
+ "begin": "\\bmixin\\s*\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.mixin.begin.d"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.mixin.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ }
+ ]
+ },
+ "import-expression": {
+ "patterns": [
+ {
+ "begin": "\\b(import)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.import.d"
+ },
+ "2": {
+ "name": "keyword.other.import.begin.d"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.import.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ }
+ ]
+ },
+ "typeid-expression": {
+ "patterns": [
+ {
+ "match": "\\btypeid\\s*(?=\\()",
+ "name": "keyword.other.typeid.d"
+ }
+ ]
+ },
+ "type-specialization": {
+ "patterns": [
+ {
+ "match": "\\b(struct|union|class|interface|enum|function|delegate|super|const|immutable|inout|shared|return|__parameters)\\b",
+ "name": "keyword.other.storage.type-specialization.d"
+ }
+ ]
+ },
+ "traits-expression": {
+ "patterns": [
+ {
+ "begin": "\\b__traits\\s*\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.traits.begin.d"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.traits.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#traits-keyword"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#traits-argument"
+ }
+ ]
+ }
+ ]
+ },
+ "traits-keyword": {
+ "patterns": [
+ {
+ "match": "isAbstractClass|isArithmetic|isAssociativeArray|isFinalClass|isPOD|isNested|isFloating|isIntegral|isScalar|isStaticArray|isUnsigned|isVirtualFunction|isVirtualMethod|isAbstractFunction|isFinalFunction|isStaticFunction|isOverrideFunction|isRef|isOut|isLazy|hasMember|identifier|getAliasThis|getAttributes|getMember|getOverloads|getProtection|getVirtualFunctions|getVirtualMethods|getUnitTests|parent|classInstanceSize|getVirtualIndex|allMembers|derivedMembers|isSame|compiles",
+ "name": "support.constant.traits-keyword.d"
+ }
+ ]
+ },
+ "traits-arguments": {
+ "patterns": [
+ {
+ "include": "#traits-argument"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ },
+ "traits-argument": {
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "special-keyword": {
+ "patterns": [
+ {
+ "match": "\\b(__FILE__|__FILE_FULL_PATH__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__)\\b",
+ "name": "constant.language.special-keyword.d"
+ }
+ ]
+ },
+ "statement": {
+ "patterns": [
+ {
+ "include": "#non-block-statement"
+ },
+ {
+ "include": "#semi-colon"
+ }
+ ]
+ },
+ "non-block-statement": {
+ "patterns": [
+ {
+ "include": "#module-declaration"
+ },
+ {
+ "include": "#labeled-statement"
+ },
+ {
+ "include": "#if-statement"
+ },
+ {
+ "include": "#while-statement"
+ },
+ {
+ "include": "#do-statement"
+ },
+ {
+ "include": "#for-statement"
+ },
+ {
+ "include": "#static-foreach"
+ },
+ {
+ "include": "#static-foreach-reverse"
+ },
+ {
+ "include": "#foreach-statement"
+ },
+ {
+ "include": "#foreach-reverse-statement"
+ },
+ {
+ "include": "#switch-statement"
+ },
+ {
+ "include": "#final-switch-statement"
+ },
+ {
+ "include": "#case-statement"
+ },
+ {
+ "include": "#default-statement"
+ },
+ {
+ "include": "#continue-statement"
+ },
+ {
+ "include": "#break-statement"
+ },
+ {
+ "include": "#return-statement"
+ },
+ {
+ "include": "#goto-statement"
+ },
+ {
+ "include": "#with-statement"
+ },
+ {
+ "include": "#synchronized-statement"
+ },
+ {
+ "include": "#try-statement"
+ },
+ {
+ "include": "#catches"
+ },
+ {
+ "include": "#scope-guard-statement"
+ },
+ {
+ "include": "#throw-statement"
+ },
+ {
+ "include": "#finally-statement"
+ },
+ {
+ "include": "#asm-statement"
+ },
+ {
+ "include": "#pragma-statement"
+ },
+ {
+ "include": "#mixin-statement"
+ },
+ {
+ "include": "#conditional-statement"
+ },
+ {
+ "include": "#static-assert"
+ },
+ {
+ "include": "#deprecated-statement"
+ },
+ {
+ "include": "#unit-test"
+ },
+ {
+ "include": "#declaration-statement"
+ }
+ ]
+ },
+ "labeled-statement": {
+ "patterns": [
+ {
+ "match": "\\b(?!abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|in|inout|int|interface|invariant|ireal|is|lazy|long|macro|mixin|module|new|nothrow|noreturn|null|out|override|package|pragma|private|protected|public|pure|real|ref|return|scope|shared|short|static|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|__FILE__|__MODULE__|__LINE__|__FUNCTION__|__PRETTY_FUNCTION__|__gshared|__traits|__vector|__parameters)[a-zA-Z_][a-zA-Z_0-9]*\\s*:",
+ "name": "entity.name.d"
+ }
+ ]
+ },
+ "declaration-statement": {
+ "patterns": [
+ {
+ "include": "#declaration"
+ }
+ ]
+ },
+ "if-statement": {
+ "patterns": [
+ {
+ "begin": "\\b(if)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.if.d"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "source.d"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "match": "\\belse\\b\\s*",
+ "name": "keyword.control.else.d"
+ }
+ ]
+ },
+ "while-statement": {
+ "patterns": [
+ {
+ "begin": "\\b(while)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.while.d"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "source.d"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "do-statement": {
+ "patterns": [
+ {
+ "match": "\\bdo\\b",
+ "name": "keyword.control.do.d"
+ }
+ ]
+ },
+ "for-statement": {
+ "patterns": [
+ {
+ "begin": "\\b(for)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.for.d"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "source.d"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "foreach-statement": {
+ "patterns": [
+ {
+ "begin": "\\b(foreach)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.foreach.d"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "match": ";",
+ "name": "keyword.operator.semi-colon.d"
+ },
+ {
+ "include": "source.d"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "foreach-reverse-statement": {
+ "patterns": [
+ {
+ "begin": "\\b(foreach_reverse)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.foreach_reverse.d"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "match": ";",
+ "name": "keyword.operator.semi-colon.d"
+ },
+ {
+ "include": "source.d"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "switch-statement": {
+ "patterns": [
+ {
+ "begin": "\\b(switch)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.switch.d"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "source.d"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "case-statement": {
+ "patterns": [
+ {
+ "begin": "\\b(case)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.case.range.d"
+ }
+ },
+ "end": ":",
+ "endCaptures": {
+ "0": {
+ "name": "meta.case.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ }
+ ]
+ },
+ "default-statement": {
+ "patterns": [
+ {
+ "match": "\\b(default)\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.case.default.d"
+ },
+ "2": {
+ "name": "meta.default.colon.d"
+ }
+ }
+ }
+ ]
+ },
+ "final-switch-statement": {
+ "patterns": [
+ {
+ "begin": "\\b(final\\s+switch)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.final.switch.d"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "source.d"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "continue-statement": {
+ "patterns": [
+ {
+ "match": "\\bcontinue\\b",
+ "name": "keyword.control.continue.d"
+ }
+ ]
+ },
+ "break-statement": {
+ "patterns": [
+ {
+ "match": "\\bbreak\\b",
+ "name": "keyword.control.break.d"
+ }
+ ]
+ },
+ "return-statement": {
+ "patterns": [
+ {
+ "match": "\\breturn\\b",
+ "name": "keyword.control.return.d"
+ }
+ ]
+ },
+ "goto-statement": {
+ "patterns": [
+ {
+ "match": "\\bgoto\\s+default\\b",
+ "name": "keyword.control.goto.d"
+ },
+ {
+ "match": "\\bgoto\\s+case\\b",
+ "name": "keyword.control.goto.d"
+ },
+ {
+ "match": "\\bgoto\\b",
+ "name": "keyword.control.goto.d"
+ }
+ ]
+ },
+ "with-statement": {
+ "patterns": [
+ {
+ "begin": "\\b(with)\\b\\s*(?=\\()",
+ "captures": {
+ "1": {
+ "name": "keyword.control.with.d"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "source.d"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "synchronized-statement": {
+ "patterns": [
+ {
+ "begin": "\\b(synchronized)\\b\\s*(?=\\()",
+ "captures": {
+ "1": {
+ "name": "keyword.control.synchronized.d"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "source.d"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "try-statement": {
+ "patterns": [
+ {
+ "match": "\\btry\\b",
+ "name": "keyword.control.try.d"
+ }
+ ]
+ },
+ "catches": {
+ "patterns": [
+ {
+ "include": "#catch"
+ }
+ ]
+ },
+ "catch": {
+ "patterns": [
+ {
+ "begin": "\\b(catch)\\b\\s*(?=\\()",
+ "captures": {
+ "1": {
+ "name": "keyword.control.catch.d"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "source.d"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "finally-statement": {
+ "patterns": [
+ {
+ "match": "\\bfinally\\b",
+ "name": "keyword.control.throw.d"
+ }
+ ]
+ },
+ "throw-statement": {
+ "patterns": [
+ {
+ "match": "\\bthrow\\b",
+ "name": "keyword.control.throw.d"
+ }
+ ]
+ },
+ "scope-guard-statement": {
+ "patterns": [
+ {
+ "match": "\\bscope\\s*\\((exit|success|failure)\\)",
+ "name": "keyword.control.scope.d"
+ }
+ ]
+ },
+ "asm-statement": {
+ "patterns": [
+ {
+ "begin": "\\b(asm)\\b\\s*(?=\\{)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.switch.d"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "begin": "\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.asm.begin.d"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.asm.end.d"
+ }
+ },
+ "contentName": "gfm.markup.raw.assembly.d",
+ "patterns": [
+ {
+ "include": "#asm-instruction"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "pragma-statement": {
+ "patterns": [
+ {
+ "include": "#pragma"
+ }
+ ]
+ },
+ "mixin-statement": {
+ "patterns": [
+ {
+ "begin": "\\bmixin\\s*\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.mixin.begin.d"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.mixin.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ }
+ ]
+ },
+ "is-expression": {
+ "patterns": [
+ {
+ "begin": "\\bis\\s*\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.token.is.begin.d"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.token.is.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ }
+ ]
+ },
+ "parentheses-expression": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "deprecated-statement": {
+ "patterns": [
+ {
+ "begin": "\\bdeprecated\\s*\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.deprecated.begin.d"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.deprecated.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ },
+ {
+ "match": "\\bdeprecated\\b\\s*(?!\\()",
+ "name": "keyword.other.deprecated.plain.d"
+ }
+ ]
+ },
+ "asm-instruction": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "\\b(align|even|naked|db|ds|di|dl|df|dd|de)\\b|:",
+ "name": "keyword.asm-instruction.d"
+ },
+ {
+ "match": "\\b__LOCAL_SIZE\\b",
+ "name": "constant.language.assembly.d"
+ },
+ {
+ "match": "\\b(offsetof|seg)\\b",
+ "name": "support.type.assembly.d"
+ },
+ {
+ "include": "#asm-type-prefix"
+ },
+ {
+ "include": "#asm-primary-expression"
+ },
+ {
+ "include": "#operands"
+ },
+ {
+ "include": "#register"
+ },
+ {
+ "include": "#register-64"
+ },
+ {
+ "include": "#float-literal"
+ },
+ {
+ "include": "#integer-literal"
+ },
+ {
+ "include": "#identifier"
+ }
+ ]
+ },
+ "operands": {
+ "patterns": [
+ {
+ "match": "\\?|:",
+ "name": "keyword.operator.ternary.assembly.d"
+ },
+ {
+ "match": "\\]|\\[",
+ "name": "keyword.operator.bracket.assembly.d"
+ },
+ {
+ "match": ">>>|\\|\\||&&|==|!=|<=|>=|<<|>>|\\||\\^|&|<|>|\\+|-|\\*|/|%|~|!",
+ "name": "keyword.operator.assembly.d"
+ }
+ ]
+ },
+ "asm-type-prefix": {
+ "patterns": [
+ {
+ "match": "\\b((near\\s+ptr)|(far\\s+ptr)|(byte\\s+ptr)|(short\\s+ptr)|(int\\s+ptr)|(word\\s+ptr)|(dword\\s+ptr)|(qword\\s+ptr)|(float\\s+ptr)|(double\\s+ptr)|(real\\s+ptr))\\b",
+ "name": "support.type.asm-type-prefix.d"
+ }
+ ]
+ },
+ "register": {
+ "patterns": [
+ {
+ "match": "\\b(XMM0|XMM1|XMM2|XMM3|XMM4|XMM5|XMM6|XMM7|MM0|MM1|MM2|MM3|MM4|MM5|MM6|MM7|ST\\(0\\)|ST\\(1\\)|ST\\(2\\)|ST\\(3\\)|ST\\(4\\)|ST\\(5\\)|ST\\(6\\)|ST\\(7\\)|ST|TR1|TR2|TR3|TR4|TR5|TR6|TR7|DR0|DR1|DR2|DR3|DR4|DR5|DR6|DR7|CR0|CR2|CR3|CR4|EAX|EBX|ECX|EDX|EBP|ESP|EDI|ESI|AL|AH|AX|BL|BH|BX|CL|CH|CX|DL|DH|DX|BP|SP|DI|SI|ES|CS|SS|DS|GS|FS)\\b",
+ "name": "storage.type.assembly.register.d"
+ }
+ ]
+ },
+ "register-64": {
+ "patterns": [
+ {
+ "match": "\\b(RAX|RBX|RCX|RDX|BPL|RBP|SPL|RSP|DIL|RDI|SIL|RSI|R8B|R8W|R8D|R8|R9B|R9W|R9D|R9|R10B|R10W|R10D|R10|R11B|R11W|R11D|R11|R12B|R12W|R12D|R12|R13B|R13W|R13D|R13|R14B|R14W|R14D|R14|R15B|R15W|R15D|R15|XMM8|XMM9|XMM10|XMM11|XMM12|XMM13|XMM14|XMM15|YMM0|YMM1|YMM2|YMM3|YMM4|YMM5|YMM6|YMM7|YMM8|YMM9|YMM10|YMM11|YMM12|YMM13|YMM14|YMM15)\\b",
+ "name": "storage.type.assembly.register-64.d"
+ }
+ ]
+ },
+ "declaration": {
+ "patterns": [
+ {
+ "include": "#alias-declaration"
+ },
+ {
+ "include": "#aggregate-declaration"
+ },
+ {
+ "include": "#enum-declaration"
+ },
+ {
+ "include": "#import-declaration"
+ },
+ {
+ "include": "#storage-class"
+ },
+ {
+ "include": "#void-initializer"
+ },
+ {
+ "include": "#mixin-declaration"
+ }
+ ]
+ },
+ "alias-declaration": {
+ "patterns": [
+ {
+ "begin": "\\b(alias)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.alias.d"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "meta.alias.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ },
+ {
+ "match": "=(?![=>])",
+ "name": "keyword.operator.equal.alias.d"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "storage-class": {
+ "patterns": [
+ {
+ "match": "\\b(deprecated|enum|static|extern|abstract|final|override|synchronized|auto|scope|const|immutable|inout|shared|__gshared|nothrow|pure|ref)\\b",
+ "name": "storage.class.d"
+ },
+ {
+ "include": "#linkage-attribute"
+ },
+ {
+ "include": "#align-attribute"
+ },
+ {
+ "include": "#property"
+ }
+ ]
+ },
+ "void-initializer": {
+ "patterns": [
+ {
+ "match": "\\bvoid\\b",
+ "name": "support.type.void.d"
+ }
+ ]
+ },
+ "functions": {
+ "patterns": [
+ {
+ "include": "#function-attribute"
+ },
+ {
+ "include": "#function-prelude"
+ }
+ ]
+ },
+ "function-prelude": {
+ "patterns": [
+ {
+ "match": "(?!typeof|typeid)((\\.\\s*)?[_\\w][_\\d\\w]*)(\\s*\\.\\s*[_\\w][_\\d\\w]*)*\\s*(?=\\()",
+ "name": "entity.name.function.d"
+ }
+ ]
+ },
+ "class-members": {
+ "patterns": [
+ {
+ "include": "#shared-static-constructor"
+ },
+ {
+ "include": "#shared-static-destructor"
+ },
+ {
+ "include": "#constructor"
+ },
+ {
+ "include": "#destructor"
+ },
+ {
+ "include": "#postblit"
+ },
+ {
+ "include": "#invariant"
+ },
+ {
+ "include": "#member-function-attribute"
+ }
+ ]
+ },
+ "function-attribute": {
+ "patterns": [
+ {
+ "match": "\\b(nothrow|pure)\\b",
+ "name": "storage.type.modifier.function-attribute.d"
+ },
+ {
+ "include": "#property"
+ }
+ ]
+ },
+ "member-function-attribute": {
+ "patterns": [
+ {
+ "match": "\\b(const|immutable|inout|shared)\\b",
+ "name": "storage.type.modifier.member-function-attribute"
+ }
+ ]
+ },
+ "function-body": {
+ "patterns": [
+ {
+ "include": "#in-statement"
+ },
+ {
+ "include": "#out-statement"
+ },
+ {
+ "include": "#body-statement"
+ },
+ {
+ "include": "#block-statement"
+ }
+ ]
+ },
+ "in-statement": {
+ "patterns": [
+ {
+ "match": "\\bin\\b",
+ "name": "keyword.control.in.d"
+ }
+ ]
+ },
+ "out-statement": {
+ "patterns": [
+ {
+ "begin": "\\bout\\s*\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.out.begin.d"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.out.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#identifier"
+ }
+ ]
+ },
+ {
+ "match": "\\bout\\b",
+ "name": "keyword.control.out.d"
+ }
+ ]
+ },
+ "body-statement": {
+ "patterns": [
+ {
+ "match": "\\bbody\\b",
+ "name": "keyword.control.body.d"
+ }
+ ]
+ },
+ "constructor": {
+ "patterns": [
+ {
+ "match": "\\bthis\\b",
+ "name": "entity.name.function.constructor.d"
+ }
+ ]
+ },
+ "destructor": {
+ "patterns": [
+ {
+ "match": "\\b~this\\s*\\(\\s*\\)",
+ "name": "entity.name.class.destructor.d"
+ }
+ ]
+ },
+ "postblit": {
+ "patterns": [
+ {
+ "match": "\\bthis\\s*\\(\\s*this\\s*\\)\\s",
+ "name": "entity.name.class.postblit.d"
+ }
+ ]
+ },
+ "invariant": {
+ "patterns": [
+ {
+ "match": "\\binvariant\\s*\\(\\s*\\)",
+ "name": "entity.name.class.invariant.d"
+ }
+ ]
+ },
+ "shared-static-constructor": {
+ "patterns": [
+ {
+ "match": "\\b(shared\\s+)?static\\s+this\\s*\\(\\s*\\)",
+ "name": "entity.name.class.constructor.shared-static.d"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ "shared-static-destructor": {
+ "patterns": [
+ {
+ "match": "\\b(shared\\s+)?static\\s+~this\\s*\\(\\s*\\)",
+ "name": "entity.name.class.destructor.static.d"
+ }
+ ]
+ },
+ "aggregate-declaration": {
+ "patterns": [
+ {
+ "include": "#class-declaration"
+ },
+ {
+ "include": "#interface-declaration"
+ },
+ {
+ "include": "#struct-declaration"
+ },
+ {
+ "include": "#union-declaration"
+ },
+ {
+ "include": "#mixin-template-declaration"
+ },
+ {
+ "include": "#template-declaration"
+ }
+ ]
+ },
+ "class-declaration": {
+ "patterns": [
+ {
+ "match": "\\b(class)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.d"
+ },
+ "2": {
+ "name": "entity.name.class.d"
+ }
+ }
+ },
+ {
+ "include": "#protection-attribute"
+ },
+ {
+ "include": "#class-members"
+ }
+ ]
+ },
+ "interface-declaration": {
+ "patterns": [
+ {
+ "match": "\\b(interface)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.interface.d"
+ },
+ "2": {
+ "name": "entity.name.type.interface.d"
+ }
+ }
+ }
+ ]
+ },
+ "struct-declaration": {
+ "patterns": [
+ {
+ "match": "\\b(struct)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.struct.d"
+ },
+ "2": {
+ "name": "entity.name.type.struct.d"
+ }
+ }
+ }
+ ]
+ },
+ "union-declaration": {
+ "patterns": [
+ {
+ "match": "\\b(union)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.union.d"
+ },
+ "2": {
+ "name": "entity.name.type.union.d"
+ }
+ }
+ }
+ ]
+ },
+ "enum-declaration": {
+ "patterns": [
+ {
+ "begin": "\\b(enum)\\b\\s+(?=.*[=;])",
+ "end": "([A-Za-z_][\\w_\\d]*)\\s*(?=;|=|\\()(;)?",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.enum.d"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.type.enum.d"
+ },
+ "2": {
+ "name": "meta.enum.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#extended-type"
+ },
+ {
+ "match": "=(?![=>])",
+ "name": "keyword.operator.equal.alias.d"
+ }
+ ]
+ }
+ ]
+ },
+ "template-declaration": {
+ "patterns": [
+ {
+ "match": "\\b(template)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.template.d"
+ },
+ "2": {
+ "name": "entity.name.type.template.d"
+ }
+ }
+ }
+ ]
+ },
+ "mixin-template-declaration": {
+ "patterns": [
+ {
+ "match": "\\b(mixin\\s*template)(?:\\s+([A-Za-z_][\\w_\\d]*))?\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.mixintemplate.d"
+ },
+ "2": {
+ "name": "entity.name.type.mixintemplate.d"
+ }
+ }
+ }
+ ]
+ },
+ "attribute": {
+ "patterns": [
+ {
+ "include": "#linkage-attribute"
+ },
+ {
+ "include": "#align-attribute"
+ },
+ {
+ "include": "#deprecated-attribute"
+ },
+ {
+ "include": "#protection-attribute"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "match": "\\b(static|extern|abstract|final|override|synchronized|auto|scope|const|immutable|inout|shared|__gshared|nothrow|pure|ref)\\b",
+ "name": "entity.other.attribute-name.d"
+ },
+ {
+ "include": "#property"
+ }
+ ]
+ },
+ "linkage-attribute": {
+ "patterns": [
+ {
+ "begin": "\\bextern\\s*\\(\\s*C\\+\\+\\s*,",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.extern.cplusplus.begin.d"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.extern.cplusplus.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#identifier"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ },
+ {
+ "begin": "\\bextern\\s*\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.extern.begin.d"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.extern.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#linkage-type"
+ }
+ ]
+ }
+ ]
+ },
+ "linkage-type": {
+ "patterns": [
+ {
+ "match": "C|C\\+\\+|D|Windows|Pascal|System",
+ "name": "storage.modifier.linkage-type.d"
+ }
+ ]
+ },
+ "align-attribute": {
+ "patterns": [
+ {
+ "begin": "\\balign\\s*\\(",
+ "end": "\\)",
+ "name": "storage.modifier.align-attribute.d",
+ "patterns": [
+ {
+ "include": "#integer-literal"
+ }
+ ]
+ },
+ {
+ "match": "\\balign\\b\\s*(?!\\()",
+ "name": "storage.modifier.align-attribute.d"
+ }
+ ]
+ },
+ "protection-attribute": {
+ "patterns": [
+ {
+ "match": "\\b(private|package|protected|public|export)\\b",
+ "name": "keyword.other.protections.d"
+ }
+ ]
+ },
+ "property": {
+ "patterns": [
+ {
+ "match": "@(property|safe|trusted|system|disable|nogc)\\b",
+ "name": "entity.name.tag.property.d"
+ },
+ {
+ "include": "#user-defined-attribute"
+ }
+ ]
+ },
+ "user-defined-attribute": {
+ "patterns": [
+ {
+ "match": "@([_\\w][_\\d\\w]*)\\b",
+ "name": "entity.name.tag.user-defined-property.d"
+ },
+ {
+ "begin": "@([_\\w][_\\d\\w]*)?\\(",
+ "end": "\\)",
+ "name": "entity.name.tag.user-defined-property.d",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "pragma": {
+ "patterns": [
+ {
+ "match": "\\bpragma\\s*\\(\\s*[_\\w][_\\d\\w]*\\s*\\)",
+ "name": "keyword.other.pragma.d"
+ },
+ {
+ "begin": "\\bpragma\\s*\\(\\s*[_\\w][_\\d\\w]*\\s*,",
+ "end": "\\)",
+ "name": "keyword.other.pragma.d",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "match": "^#!.+",
+ "name": "gfm.markup.header.preprocessor.script-tag.d"
+ }
+ ]
+ },
+ "conditional-declaration": {
+ "patterns": [
+ {
+ "include": "#condition"
+ },
+ {
+ "match": "\\belse\\b",
+ "name": "keyword.control.else.d"
+ },
+ {
+ "include": "#colon"
+ },
+ {
+ "include": "#decl-defs"
+ }
+ ]
+ },
+ "conditional-statement": {
+ "patterns": [
+ {
+ "include": "#condition"
+ },
+ {
+ "include": "#no-scope-non-empty-statement"
+ },
+ {
+ "match": "\\belse\\b",
+ "name": "keyword.control.else.d"
+ }
+ ]
+ },
+ "condition": {
+ "patterns": [
+ {
+ "include": "#version-condition"
+ },
+ {
+ "include": "#debug-condition"
+ },
+ {
+ "include": "#static-if-condition"
+ }
+ ]
+ },
+ "version-condition": {
+ "patterns": [
+ {
+ "match": "\\bversion\\s*\\(\\s*unittest\\s*\\)",
+ "name": "keyword.other.version.unittest.d"
+ },
+ {
+ "match": "\\bversion\\s*\\(\\s*assert\\s*\\)",
+ "name": "keyword.other.version.assert.d"
+ },
+ {
+ "begin": "\\bversion\\s*\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.version.identifier.begin.d"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.version.identifer.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#integer-literal"
+ },
+ {
+ "include": "#identifier"
+ }
+ ]
+ },
+ {
+ "include": "#version-specification"
+ }
+ ]
+ },
+ "debug-condition": {
+ "patterns": [
+ {
+ "begin": "\\bdebug\\s*\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.debug.identifier.begin.d"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.debug.identifier.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#integer-literal"
+ },
+ {
+ "include": "#identifier"
+ }
+ ]
+ },
+ {
+ "match": "\\bdebug\\b\\s*(?!\\()",
+ "name": "keyword.other.debug.plain.d"
+ }
+ ]
+ },
+ "version-specification": {
+ "patterns": [
+ {
+ "match": "\\bversion\\b\\s*(?==)",
+ "name": "keyword.other.version-specification.d"
+ }
+ ]
+ },
+ "debug-specification": {
+ "patterns": [
+ {
+ "match": "\\bdebug\\b\\s*(?==)",
+ "name": "keyword.other.debug-specification.d"
+ }
+ ]
+ },
+ "static-if-condition": {
+ "patterns": [
+ {
+ "begin": "\\bstatic\\s+if\\b\\s*\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.static-if.begin.d"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.static-if.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "static-assert": {
+ "patterns": [
+ {
+ "begin": "\\bstatic\\s+assert\\b\\s*\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.static-assert.begin.d"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.static-assert.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "static-foreach": {
+ "patterns": [
+ {
+ "begin": "\\b(static\\s+foreach)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.static-foreach.d"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "match": ";",
+ "name": "keyword.operator.semi-colon.d"
+ },
+ {
+ "include": "source.d"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "static-foreach-reverse": {
+ "patterns": [
+ {
+ "begin": "\\b(static\\s+foreach_reverse)\\b\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.static-foreach.d"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "match": ";",
+ "name": "keyword.operator.semi-colon.d"
+ },
+ {
+ "include": "source.d"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "module": {
+ "packages": [
+ {
+ "import": "#module-declaration"
+ }
+ ]
+ },
+ "module-declaration": {
+ "patterns": [
+ {
+ "begin": "\\b(module)\\s+",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.package.module.d"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "meta.module.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#module-identifier"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "import-declaration": {
+ "patterns": [
+ {
+ "begin": "\\b(static\\s+)?(import)\\s+(?!\\()",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.package.import.d"
+ },
+ "2": {
+ "name": "keyword.package.import.d"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "meta.import.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#import-identifier"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "mixin-declaration": {
+ "patterns": [
+ {
+ "begin": "\\bmixin\\s*\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.mixin.begin.d"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword.mixin.end.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ }
+ ]
+ },
+ "comma": {
+ "patterns": [
+ {
+ "match": ",",
+ "name": "keyword.operator.comma.d"
+ }
+ ]
+ },
+ "colon": {
+ "patterns": [
+ {
+ "match": ":",
+ "name": "support.type.colon.d"
+ }
+ ]
+ },
+ "equal": {
+ "patterns": [
+ {
+ "match": "=(?![=>])",
+ "name": "keyword.operator.equal.d"
+ }
+ ]
+ },
+ "semi-colon": {
+ "patterns": [
+ {
+ "match": ";",
+ "name": "meta.statement.end.d"
+ }
+ ]
+ },
+ "lexical": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string-literal"
+ },
+ {
+ "include": "#character-literal"
+ },
+ {
+ "include": "#float-literal"
+ },
+ {
+ "include": "#integer-literal"
+ },
+ {
+ "include": "#eof"
+ },
+ {
+ "include": "#special-tokens"
+ },
+ {
+ "include": "#special-token-sequence"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#identifier"
+ }
+ ]
+ },
+ "integer-literal": {
+ "patterns": [
+ {
+ "include": "#decimal-integer"
+ },
+ {
+ "include": "#binary-integer"
+ },
+ {
+ "include": "#hexadecimal-integer"
+ }
+ ]
+ },
+ "decimal-integer": {
+ "patterns": [
+ {
+ "match": "\\b(0(?=[^\\dxXbB]))|([1-9][0-9_]*)(Lu|LU|uL|UL|L|u|U)?\\b",
+ "name": "constant.numeric.integer.decimal.d"
+ }
+ ]
+ },
+ "binary-integer": {
+ "patterns": [
+ {
+ "match": "\\b(0b|0B)[0-1_]+(Lu|LU|uL|UL|L|u|U)?\\b",
+ "name": "constant.numeric.integer.binary.d"
+ }
+ ]
+ },
+ "hexadecimal-integer": {
+ "patterns": [
+ {
+ "match": "\\b(0x|0X)([0-9a-fA-F][0-9a-fA-F_]*)(Lu|LU|uL|UL|L|u|U)?\\b",
+ "name": "constant.numeric.integer.hexadecimal.d"
+ }
+ ]
+ },
+ "float-literal": {
+ "patterns": [
+ {
+ "include": "#decimal-float"
+ },
+ {
+ "include": "#hexadecimal-float"
+ }
+ ]
+ },
+ "decimal-float": {
+ "patterns": [
+ {
+ "match": "\\b((\\.[0-9])|(0\\.)|(([1-9]|(0[1-9_]))[0-9_]*\\.))[0-9_]*((e-|E-|e\\+|E\\+|e|E)[0-9][0-9_]*)?[LfF]?i?\\b",
+ "name": "constant.numeric.float.decimal.d"
+ }
+ ]
+ },
+ "hexadecimal-float": {
+ "patterns": [
+ {
+ "match": "\\b0[xX][0-9a-fA-F_]*(\\.[0-9a-fA-F_]*)?(p-|P-|p\\+|P\\+|p|P)[0-9][0-9_]*[LfF]?i?\\b",
+ "name": "constant.numeric.float.hexadecimal.d"
+ }
+ ]
+ },
+ "string-literal": {
+ "patterns": [
+ {
+ "include": "#wysiwyg-string"
+ },
+ {
+ "include": "#alternate-wysiwyg-string"
+ },
+ {
+ "include": "#hex-string"
+ },
+ {
+ "include": "#arbitrary-delimited-string"
+ },
+ {
+ "include": "#delimited-string"
+ },
+ {
+ "include": "#double-quoted-string"
+ },
+ {
+ "include": "#token-string"
+ }
+ ]
+ },
+ "wysiwyg-string": {
+ "patterns": [
+ {
+ "begin": "r\\\"",
+ "end": "\\\"[cwd]?",
+ "name": "string.wysiwyg-string.d",
+ "patterns": [
+ {
+ "include": "#wysiwyg-characters"
+ }
+ ]
+ }
+ ]
+ },
+ "alternate-wysiwyg-string": {
+ "patterns": [
+ {
+ "begin": "`",
+ "end": "`[cwd]?",
+ "name": "string.alternate-wysiwyg-string.d",
+ "patterns": [
+ {
+ "include": "#wysiwyg-characters"
+ }
+ ]
+ }
+ ]
+ },
+ "double-quoted-string": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "end": "\"[cwd]?",
+ "name": "string.double-quoted-string.d",
+ "patterns": [
+ {
+ "include": "#double-quoted-characters"
+ }
+ ]
+ }
+ ]
+ },
+ "hex-string": {
+ "patterns": [
+ {
+ "begin": "x\"",
+ "end": "\"[cwd]?",
+ "name": "string.hex-string.d",
+ "patterns": [
+ {
+ "match": "[a-fA-F0-9_s]+",
+ "name": "constant.character.hex-string.d"
+ }
+ ]
+ }
+ ]
+ },
+ "arbitrary-delimited-string": {
+ "begin": "q\"(\\w+)",
+ "end": "\\1\"",
+ "name": "string.delimited.d",
+ "patterns": [
+ {
+ "match": ".",
+ "name": "string.delimited.d"
+ }
+ ]
+ },
+ "delimited-string": {
+ "begin": "q\"",
+ "end": "\"",
+ "name": "string.delimited.d",
+ "patterns": [
+ {
+ "include": "#delimited-string-bracket"
+ },
+ {
+ "include": "#delimited-string-parens"
+ },
+ {
+ "include": "#delimited-string-angle-brackets"
+ },
+ {
+ "include": "#delimited-string-braces"
+ }
+ ]
+ },
+ "token-string": {
+ "begin": "q\\{",
+ "end": "\\}[cdw]?",
+ "beginCaptures": {
+ "0": {
+ "name": "string.quoted.token.d"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "string.quoted.token.d"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#token-string-content"
+ }
+ ]
+ },
+ "delimited-string-bracket": {
+ "patterns": [
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "name": "constant.characters.delimited.brackets.d",
+ "patterns": [
+ {
+ "include": "#wysiwyg-characters"
+ }
+ ]
+ }
+ ]
+ },
+ "delimited-string-parens": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "name": "constant.character.delimited.parens.d",
+ "patterns": [
+ {
+ "include": "#wysiwyg-characters"
+ }
+ ]
+ }
+ ]
+ },
+ "delimited-string-angle-brackets": {
+ "patterns": [
+ {
+ "begin": "<",
+ "end": ">",
+ "name": "constant.character.angle-brackets.d",
+ "patterns": [
+ {
+ "include": "#wysiwyg-characters"
+ }
+ ]
+ }
+ ]
+ },
+ "delimited-string-braces": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "end": "\\}",
+ "name": "constant.character.delimited.braces.d",
+ "patterns": [
+ {
+ "include": "#wysiwyg-characters"
+ }
+ ]
+ }
+ ]
+ },
+ "wysiwyg-characters": {
+ "patterns": [
+ {
+ "include": "#character"
+ },
+ {
+ "include": "#end-of-line"
+ }
+ ]
+ },
+ "double-quoted-characters": {
+ "patterns": [
+ {
+ "include": "#character"
+ },
+ {
+ "include": "#end-of-line"
+ },
+ {
+ "include": "#escape-sequence"
+ }
+ ]
+ },
+ "escape-sequence": {
+ "patterns": [
+ {
+ "match": "(\\\\(?:quot|amp|lt|gt|OElig|oelig|Scaron|scaron|Yuml|circ|tilde|ensp|emsp|thinsp|zwnj|zwj|lrm|rlm|ndash|mdash|lsquo|rsquo|sbquo|ldquo|rdquo|bdquo|dagger|Dagger|permil|lsaquo|rsaquo|euro|nbsp|iexcl|cent|pound|curren|yen|brvbar|sect|uml|copy|ordf|laquo|not|shy|reg|macr|deg|plusmn|sup2|sup3|acute|micro|para|middot|cedil|sup1|ordm|raquo|frac14|frac12|frac34|iquest|Agrave|Aacute|Acirc|Atilde|Auml|Aring|Aelig|Ccedil|egrave|eacute|ecirc|iuml|eth|ntilde|ograve|oacute|ocirc|otilde|ouml|divide|oslash|ugrave|uacute|ucirc|uuml|yacute|thorn|yuml|fnof|Alpha|Beta|Gamma|Delta|Epsilon|Zeta|Eta|Theta|Iota|Kappa|Lambda|Mu|Nu|Xi|Omicron|Pi|Rho|Sigma|Tau|Upsilon|Phi|Chi|Psi|Omega|alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigmaf|sigma|tau|upsilon|phi|chi|psi|omega|thetasym|upsih|piv|bull|hellip|prime|Prime|oline|frasl|weierp|image|real|trade|alefsym|larr|uarr|rarr|darr|harr|crarr|lArr|uArr|rArr|dArr|hArr|forall|part|exist|empty|nabla|isin|notin|ni|prod|sum|minux|lowast|radic|prop|infin|ang|and|or|cap|cup|int|there4|sim|cong|asymp|ne|equiv|le|ge|sub|sup|nsub|sube|supe|oplus|otimes|perp|sdot|lceil|rceil|lfloor|rfloor|loz|spades|clubs|hearts|diams|lang|rang))",
+ "name": "constant.character.escape-sequence.entity.d"
+ },
+ {
+ "match": "(\\\\x[0-9a-fA-F_]{2}|\\\\u[0-9a-fA-F_]{4}|\\\\U[0-9a-fA-F_]{8}|\\\\[0-7]{1,3})",
+ "name": "constant.character.escape-sequence.number.d"
+ },
+ {
+ "match": "(\\\\t|\\\\'|\\\\\"|\\\\\\?|\\\\0|\\\\a|\\\\b|\\\\f|\\\\n|\\\\r|\\\\v|\\\\\\\\)",
+ "name": "constant.character.escape-sequence.d"
+ }
+ ]
+ },
+ "character-literal": {
+ "patterns": [
+ {
+ "begin": "'",
+ "end": "'",
+ "name": "string.character-literal.d",
+ "patterns": [
+ {
+ "include": "#character"
+ },
+ {
+ "include": "#escape-sequence"
+ }
+ ]
+ }
+ ]
+ },
+ "character": {
+ "patterns": [
+ {
+ "match": "[\\w\\s]+",
+ "name": "string.character.d"
+ }
+ ]
+ },
+ "end-of-line": {
+ "patterns": [
+ {
+ "match": "\\n+",
+ "name": "string.character.end-of-line.d"
+ }
+ ]
+ },
+ "identifier-list": {
+ "patterns": [
+ {
+ "match": ",",
+ "name": "keyword.other.comma.d"
+ },
+ {
+ "include": "#identifier"
+ }
+ ]
+ },
+ "identifier": {
+ "patterns": [
+ {
+ "match": "\\b((\\.\\s*)?[_\\w][_\\d\\w]*)(\\s*\\.\\s*[_\\w][_\\d\\w]*)*\\b",
+ "name": "variable.d"
+ }
+ ]
+ },
+ "module-identifier": {
+ "patterns": [
+ {
+ "match": "([_a-zA-Z][_\\d\\w]*)(\\s*\\.\\s*[_a-zA-Z][_\\d\\w]*)*",
+ "name": "variable.parameter.module.d"
+ }
+ ]
+ },
+ "import-identifier": {
+ "patterns": [
+ {
+ "match": "([_a-zA-Z][_\\d\\w]*)(\\s*\\.\\s*[_a-zA-Z][_\\d\\w]*)*",
+ "name": "variable.parameter.import.d"
+ }
+ ]
+ },
+ "eof": {
+ "patterns": [
+ {
+ "begin": "__EOF__",
+ "beginCaptures": {
+ "0": {
+ "name": "comment.block.documentation.eof.start.d"
+ }
+ },
+ "end": "(?!__NEVER_MATCH__)__NEVER_MATCH__",
+ "name": "text.eof.d"
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "include": "#block-comment"
+ },
+ {
+ "include": "#line-comment"
+ },
+ {
+ "include": "#nesting-block-comment"
+ }
+ ]
+ },
+ "block-comment": {
+ "patterns": [
+ {
+ "begin": "/((?!\\*/)\\*)+",
+ "beginCaptures": {
+ "0": {
+ "name": "comment.block.begin.d"
+ }
+ },
+ "end": "\\*+/",
+ "endCaptures": {
+ "0": {
+ "name": "comment.block.end.d"
+ }
+ },
+ "name": "comment.block.content.d"
+ }
+ ]
+ },
+ "line-comment": {
+ "patterns": [
+ {
+ "match": "//+.*$",
+ "name": "comment.line.d"
+ }
+ ]
+ },
+ "nesting-block-comment": {
+ "patterns": [
+ {
+ "begin": "/((?!\\+/)\\+)+",
+ "beginCaptures": {
+ "0": {
+ "name": "comment.block.documentation.begin.d"
+ }
+ },
+ "end": "\\++/",
+ "endCaptures": {
+ "0": {
+ "name": "comment.block.documentation.end.d"
+ }
+ },
+ "name": "comment.block.documentation.content.d",
+ "patterns": [
+ {
+ "include": "#nesting-block-comment"
+ }
+ ]
+ }
+ ]
+ },
+ "token-string-content": {
+ "patterns": [
+ {
+ "begin": "{",
+ "end": "}",
+ "patterns": [
+ {
+ "include": "#token-string-content"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#tokens"
+ }
+ ]
+ },
+ "tokens": {
+ "patterns": [
+ {
+ "include": "#string-literal"
+ },
+ {
+ "include": "#character-literal"
+ },
+ {
+ "include": "#integer-literal"
+ },
+ {
+ "include": "#float-literal"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "match": "~=|~|>>>|>>=|>>|>=|>|=>|==|=|<>|<=|<<|<|%=|%|#|&=|&&|&|\\$|\\|=|\\|\\||\\||\\+=|\\+\\+|\\+|\\^=|\\^\\^=|\\^\\^|\\^|\\*=|\\*|\\}|\\{|\\]|\\[|\\)|\\(|\\.\\.\\.|\\.\\.|\\.|\\?|\\!>=|\\!>|\\!=|\\!<>=|\\!<>|\\!<=|\\!<|\\!|/=|/|@|:|;|,|-=|--|-",
+ "name": "meta.lexical.token.symbolic.d"
+ },
+ {
+ "include": "#identifier"
+ }
+ ]
+ },
+ "keyword": {
+ "patterns": [
+ {
+ "match": "\\babstract\\b",
+ "name": "keyword.token.abstract.d"
+ },
+ {
+ "match": "\\balias\\b",
+ "name": "keyword.token.alias.d"
+ },
+ {
+ "match": "\\balign\\b",
+ "name": "keyword.token.align.d"
+ },
+ {
+ "match": "\\basm\\b",
+ "name": "keyword.token.asm.d"
+ },
+ {
+ "match": "\\bassert\\b",
+ "name": "keyword.token.assert.d"
+ },
+ {
+ "match": "\\bauto\\b",
+ "name": "keyword.token.auto.d"
+ },
+ {
+ "match": "\\bbody\\b",
+ "name": "keyword.token.body.d"
+ },
+ {
+ "match": "\\bbool\\b",
+ "name": "keyword.token.bool.d"
+ },
+ {
+ "match": "\\bbreak\\b",
+ "name": "keyword.token.break.d"
+ },
+ {
+ "match": "\\bbyte\\b",
+ "name": "keyword.token.byte.d"
+ },
+ {
+ "match": "\\bcase\\b",
+ "name": "keyword.token.case.d"
+ },
+ {
+ "match": "\\bcast\\b",
+ "name": "keyword.token.cast.d"
+ },
+ {
+ "match": "\\bcatch\\b",
+ "name": "keyword.token.catch.d"
+ },
+ {
+ "match": "\\bcdouble\\b",
+ "name": "keyword.token.cdouble.d"
+ },
+ {
+ "match": "\\bcent\\b",
+ "name": "keyword.token.cent.d"
+ },
+ {
+ "match": "\\bcfloat\\b",
+ "name": "keyword.token.cfloat.d"
+ },
+ {
+ "match": "\\bchar\\b",
+ "name": "keyword.token.char.d"
+ },
+ {
+ "match": "\\bclass\\b",
+ "name": "keyword.token.class.d"
+ },
+ {
+ "match": "\\bconst\\b",
+ "name": "keyword.token.const.d"
+ },
+ {
+ "match": "\\bcontinue\\b",
+ "name": "keyword.token.continue.d"
+ },
+ {
+ "match": "\\bcreal\\b",
+ "name": "keyword.token.creal.d"
+ },
+ {
+ "match": "\\bdchar\\b",
+ "name": "keyword.token.dchar.d"
+ },
+ {
+ "match": "\\bdebug\\b",
+ "name": "keyword.token.debug.d"
+ },
+ {
+ "match": "\\bdefault\\b",
+ "name": "keyword.token.default.d"
+ },
+ {
+ "match": "\\bdelegate\\b",
+ "name": "keyword.token.delegate.d"
+ },
+ {
+ "match": "\\bdelete\\b",
+ "name": "keyword.token.delete.d"
+ },
+ {
+ "match": "\\bdeprecated\\b",
+ "name": "keyword.token.deprecated.d"
+ },
+ {
+ "match": "\\bdo\\b",
+ "name": "keyword.token.do.d"
+ },
+ {
+ "match": "\\bdouble\\b",
+ "name": "keyword.token.double.d"
+ },
+ {
+ "match": "\\belse\\b",
+ "name": "keyword.token.else.d"
+ },
+ {
+ "match": "\\benum\\b",
+ "name": "keyword.token.enum.d"
+ },
+ {
+ "match": "\\bexport\\b",
+ "name": "keyword.token.export.d"
+ },
+ {
+ "match": "\\bextern\\b",
+ "name": "keyword.token.extern.d"
+ },
+ {
+ "match": "\\bfalse\\b",
+ "name": "constant.language.boolean.false.d"
+ },
+ {
+ "match": "\\bfinal\\b",
+ "name": "keyword.token.final.d"
+ },
+ {
+ "match": "\\bfinally\\b",
+ "name": "keyword.token.finally.d"
+ },
+ {
+ "match": "\\bfloat\\b",
+ "name": "keyword.token.float.d"
+ },
+ {
+ "match": "\\bfor\\b",
+ "name": "keyword.token.for.d"
+ },
+ {
+ "match": "\\bforeach\\b",
+ "name": "keyword.token.foreach.d"
+ },
+ {
+ "match": "\\bforeach_reverse\\b",
+ "name": "keyword.token.foreach_reverse.d"
+ },
+ {
+ "match": "\\bfunction\\b",
+ "name": "keyword.token.function.d"
+ },
+ {
+ "match": "\\bgoto\\b",
+ "name": "keyword.token.goto.d"
+ },
+ {
+ "match": "\\bidouble\\b",
+ "name": "keyword.token.idouble.d"
+ },
+ {
+ "match": "\\bif\\b",
+ "name": "keyword.token.if.d"
+ },
+ {
+ "match": "\\bifloat\\b",
+ "name": "keyword.token.ifloat.d"
+ },
+ {
+ "match": "\\bimmutable\\b",
+ "name": "keyword.token.immutable.d"
+ },
+ {
+ "match": "\\bimport\\b",
+ "name": "keyword.token.import.d"
+ },
+ {
+ "match": "\\bin\\b",
+ "name": "keyword.token.in.d"
+ },
+ {
+ "match": "\\binout\\b",
+ "name": "keyword.token.inout.d"
+ },
+ {
+ "match": "\\bint\\b",
+ "name": "keyword.token.int.d"
+ },
+ {
+ "match": "\\binterface\\b",
+ "name": "keyword.token.interface.d"
+ },
+ {
+ "match": "\\binvariant\\b",
+ "name": "keyword.token.invariant.d"
+ },
+ {
+ "match": "\\bireal\\b",
+ "name": "keyword.token.ireal.d"
+ },
+ {
+ "match": "\\bis\\b",
+ "name": "keyword.token.is.d"
+ },
+ {
+ "match": "\\blazy\\b",
+ "name": "keyword.token.lazy.d"
+ },
+ {
+ "match": "\\blong\\b",
+ "name": "keyword.token.long.d"
+ },
+ {
+ "match": "\\bmacro\\b",
+ "name": "keyword.token.macro.d"
+ },
+ {
+ "match": "\\bmixin\\b",
+ "name": "keyword.token.mixin.d"
+ },
+ {
+ "match": "\\bmodule\\b",
+ "name": "keyword.token.module.d"
+ },
+ {
+ "match": "\\bnew\\b",
+ "name": "keyword.token.new.d"
+ },
+ {
+ "match": "\\bnothrow\\b",
+ "name": "keyword.token.nothrow.d"
+ },
+ {
+ "match": "\\bnull\\b",
+ "name": "constant.language.null.d"
+ },
+ {
+ "match": "\\bout\\b",
+ "name": "keyword.token.out.d"
+ },
+ {
+ "match": "\\boverride\\b",
+ "name": "keyword.token.override.d"
+ },
+ {
+ "match": "\\bpackage\\b",
+ "name": "keyword.token.package.d"
+ },
+ {
+ "match": "\\bpragma\\b",
+ "name": "keyword.token.pragma.d"
+ },
+ {
+ "match": "\\bprivate\\b",
+ "name": "keyword.token.private.d"
+ },
+ {
+ "match": "\\bprotected\\b",
+ "name": "keyword.token.protected.d"
+ },
+ {
+ "match": "\\bpublic\\b",
+ "name": "keyword.token.public.d"
+ },
+ {
+ "match": "\\bpure\\b",
+ "name": "keyword.token.pure.d"
+ },
+ {
+ "match": "\\breal\\b",
+ "name": "keyword.token.real.d"
+ },
+ {
+ "match": "\\bref\\b",
+ "name": "keyword.token.ref.d"
+ },
+ {
+ "match": "\\breturn\\b",
+ "name": "keyword.token.return.d"
+ },
+ {
+ "match": "\\bscope\\b",
+ "name": "keyword.token.scope.d"
+ },
+ {
+ "match": "\\bshared\\b",
+ "name": "keyword.token.shared.d"
+ },
+ {
+ "match": "\\bshort\\b",
+ "name": "keyword.token.short.d"
+ },
+ {
+ "match": "\\bstatic\\b",
+ "name": "keyword.token.static.d"
+ },
+ {
+ "match": "\\bstruct\\b",
+ "name": "keyword.token.struct.d"
+ },
+ {
+ "match": "\\bsuper\\b",
+ "name": "keyword.token.super.d"
+ },
+ {
+ "match": "\\bswitch\\b",
+ "name": "keyword.token.switch.d"
+ },
+ {
+ "match": "\\bsynchronized\\b",
+ "name": "keyword.token.synchronized.d"
+ },
+ {
+ "match": "\\btemplate\\b",
+ "name": "keyword.token.template.d"
+ },
+ {
+ "match": "\\bthis\\b",
+ "name": "keyword.token.this.d"
+ },
+ {
+ "match": "\\bthrow\\b",
+ "name": "keyword.token.throw.d"
+ },
+ {
+ "match": "\\btrue\\b",
+ "name": "constant.language.boolean.true.d"
+ },
+ {
+ "match": "\\btry\\b",
+ "name": "keyword.token.try.d"
+ },
+ {
+ "match": "\\btypedef\\b",
+ "name": "keyword.token.typedef.d"
+ },
+ {
+ "match": "\\btypeid\\b",
+ "name": "keyword.token.typeid.d"
+ },
+ {
+ "match": "\\btypeof\\b",
+ "name": "keyword.token.typeof.d"
+ },
+ {
+ "match": "\\bubyte\\b",
+ "name": "keyword.token.ubyte.d"
+ },
+ {
+ "match": "\\bucent\\b",
+ "name": "keyword.token.ucent.d"
+ },
+ {
+ "match": "\\buint\\b",
+ "name": "keyword.token.uint.d"
+ },
+ {
+ "match": "\\bulong\\b",
+ "name": "keyword.token.ulong.d"
+ },
+ {
+ "match": "\\bunion\\b",
+ "name": "keyword.token.union.d"
+ },
+ {
+ "match": "\\bunittest\\b",
+ "name": "keyword.token.unittest.d"
+ },
+ {
+ "match": "\\bushort\\b",
+ "name": "keyword.token.ushort.d"
+ },
+ {
+ "match": "\\bversion\\b",
+ "name": "keyword.token.version.d"
+ },
+ {
+ "match": "\\bvoid\\b",
+ "name": "keyword.token.void.d"
+ },
+ {
+ "match": "\\bvolatile\\b",
+ "name": "keyword.token.volatile.d"
+ },
+ {
+ "match": "\\bwchar\\b",
+ "name": "keyword.token.wchar.d"
+ },
+ {
+ "match": "\\bwhile\\b",
+ "name": "keyword.token.while.d"
+ },
+ {
+ "match": "\\bwith\\b",
+ "name": "keyword.token.with.d"
+ },
+ {
+ "match": "\\b__FILE__\\b",
+ "name": "keyword.token.__FILE__.d"
+ },
+ {
+ "match": "\\b__MODULE__\\b",
+ "name": "keyword.token.__MODULE__.d"
+ },
+ {
+ "match": "\\b__LINE__\\b",
+ "name": "keyword.token.__LINE__.d"
+ },
+ {
+ "match": "\\b__FUNCTION__\\b",
+ "name": "keyword.token.__FUNCTION__.d"
+ },
+ {
+ "match": "\\b__PRETTY_FUNCTION__\\b",
+ "name": "keyword.token.__PRETTY_FUNCTION__.d"
+ },
+ {
+ "match": "\\b__gshared\\b",
+ "name": "keyword.token.__gshared.d"
+ },
+ {
+ "match": "\\b__traits\\b",
+ "name": "keyword.token.__traits.d"
+ },
+ {
+ "match": "\\b__vector\\b",
+ "name": "keyword.token.__vector.d"
+ },
+ {
+ "match": "\\b__parameters\\b",
+ "name": "keyword.token.__parameters.d"
+ }
+ ]
+ },
+ "special-token-sequence": {
+ "patterns": [
+ {
+ "match": "#\\s*line.*",
+ "name": "gfm.markup.italic.special-token-sequence.d"
+ }
+ ]
+ },
+ "special-tokens": {
+ "patterns": [
+ {
+ "match": "\\b(__DATE__|__TIME__|__TIMESTAMP__|__VENDOR__|__VERSION__)\\b",
+ "name": "gfm.markup.raw.special-tokens.d"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/dart.tmLanguage.json b/node_modules/shiki/languages/dart.tmLanguage.json
new file mode 100644
index 0000000..4072cf3
--- /dev/null
+++ b/node_modules/shiki/languages/dart.tmLanguage.json
@@ -0,0 +1,528 @@
+{
+ "name": "dart",
+ "version": "1.2.1",
+ "fileTypes": ["dart"],
+ "scopeName": "source.dart",
+ "foldingStartMarker": "\\{\\s*$",
+ "foldingStopMarker": "^\\s*\\}",
+ "patterns": [
+ {
+ "name": "meta.preprocessor.script.dart",
+ "match": "^(#!.*)$"
+ },
+ {
+ "name": "meta.declaration.dart",
+ "begin": "^\\w*\\b(library|import|part of|part|export)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.import.dart"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.dart"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "name": "keyword.other.import.dart",
+ "match": "\\b(as|show|hide)\\b"
+ },
+ {
+ "name": "keyword.control.dart",
+ "match": "\\b(if)\\b"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#annotations"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#constants-and-special-vars"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#strings"
+ }
+ ],
+ "repository": {
+ "dartdoc": {
+ "patterns": [
+ {
+ "match": "(\\[.*?\\])",
+ "captures": {
+ "0": {
+ "name": "variable.name.source.dart"
+ }
+ }
+ },
+ {
+ "match": "^ {4,}(?![ \\*]).*",
+ "captures": {
+ "0": {
+ "name": "variable.name.source.dart"
+ }
+ }
+ },
+ {
+ "contentName": "variable.other.source.dart",
+ "begin": "```.*?$",
+ "end": "```"
+ },
+ {
+ "match": "(`.*?`)",
+ "captures": {
+ "0": {
+ "name": "variable.other.source.dart"
+ }
+ }
+ },
+ {
+ "match": "(`.*?`)",
+ "captures": {
+ "0": {
+ "name": "variable.other.source.dart"
+ }
+ }
+ },
+ {
+ "match": "(\\* (( ).*))$",
+ "captures": {
+ "2": {
+ "name": "variable.other.source.dart"
+ }
+ }
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "name": "comment.block.empty.dart",
+ "match": "/\\*\\*/",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.dart"
+ }
+ }
+ },
+ {
+ "include": "#comments-doc-oldschool"
+ },
+ {
+ "include": "#comments-doc"
+ },
+ {
+ "include": "#comments-inline"
+ }
+ ]
+ },
+ "comments-doc-oldschool": {
+ "patterns": [
+ {
+ "name": "comment.block.documentation.dart",
+ "begin": "/\\*\\*",
+ "end": "\\*/",
+ "patterns": [
+ {
+ "include": "#comments-doc-oldschool"
+ },
+ {
+ "include": "#comments-block"
+ },
+ {
+ "include": "#dartdoc"
+ }
+ ]
+ }
+ ]
+ },
+ "comments-doc": {
+ "patterns": [
+ {
+ "name": "comment.block.documentation.dart",
+ "begin": "///",
+ "while": "^\\s*///",
+ "patterns": [
+ {
+ "include": "#dartdoc"
+ }
+ ]
+ }
+ ]
+ },
+ "comments-inline": {
+ "patterns": [
+ {
+ "include": "#comments-block"
+ },
+ {
+ "match": "((//).*)$",
+ "captures": {
+ "1": {
+ "name": "comment.line.double-slash.dart"
+ }
+ }
+ }
+ ]
+ },
+ "comments-block": {
+ "patterns": [
+ {
+ "name": "comment.block.dart",
+ "begin": "/\\*",
+ "end": "\\*/",
+ "patterns": [
+ {
+ "include": "#comments-block"
+ }
+ ]
+ }
+ ]
+ },
+ "annotations": {
+ "patterns": [
+ {
+ "name": "storage.type.annotation.dart",
+ "match": "@[a-zA-Z]+"
+ }
+ ]
+ },
+ "constants-and-special-vars": {
+ "patterns": [
+ {
+ "name": "constant.language.dart",
+ "match": "(?<!\\$)\\b(true|false|null)\\b(?!\\$)"
+ },
+ {
+ "name": "variable.language.dart",
+ "match": "(?<!\\$)\\b(this|super)\\b(?!\\$)"
+ },
+ {
+ "name": "constant.numeric.dart",
+ "match": "(?<!\\$)\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)\\b(?!\\$)"
+ },
+ {
+ "include": "#class-identifier"
+ },
+ {
+ "include": "#function-identifier"
+ }
+ ]
+ },
+ "class-identifier": {
+ "patterns": [
+ {
+ "match": "(?<!\\$)\\b(bool|num|int|double|dynamic)\\b(?!\\$)",
+ "name": "support.class.dart"
+ },
+ {
+ "match": "(?<!\\$)\\bvoid\\b(?!\\$)",
+ "name": "storage.type.primitive.dart"
+ },
+ {
+ "begin": "(?<![a-zA-Z0-9_$])([_$]*[A-Z][a-zA-Z0-9_$]*)\\b",
+ "end": "(?!<)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.class.dart"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type-args"
+ }
+ ]
+ }
+ ]
+ },
+ "function-identifier": {
+ "patterns": [
+ {
+ "match": "([_$]*[a-z][a-zA-Z0-9_$]*)(<(?:[a-zA-Z0-9_$<>?]|,\\s*|\\s+extends\\s+)+>)?[!?]?\\(",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.dart"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type-args"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "type-args": {
+ "begin": "(<)",
+ "end": "(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "other.source.dart"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "other.source.dart"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#class-identifier"
+ },
+ {
+ "match": ","
+ },
+ {
+ "name": "keyword.declaration.dart",
+ "match": "extends"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "name": "keyword.cast.dart",
+ "match": "(?<!\\$)\\bas\\b(?!\\$)"
+ },
+ {
+ "name": "keyword.control.catch-exception.dart",
+ "match": "(?<!\\$)\\b(try|on|catch|finally|throw|rethrow)\\b(?!\\$)"
+ },
+ {
+ "name": "keyword.control.dart",
+ "match": "(?<!\\$)\\b(break|case|continue|default|do|else|for|if|in|return|switch|while|when)\\b(?!\\$)"
+ },
+ {
+ "name": "keyword.control.dart",
+ "match": "(?<!\\$)\\b(sync(\\*)?|async(\\*)?|await|yield(\\*)?)\\b(?!\\$)"
+ },
+ {
+ "name": "keyword.control.dart",
+ "match": "(?<!\\$)\\bassert\\b(?!\\$)"
+ },
+ {
+ "name": "keyword.control.new.dart",
+ "match": "(?<!\\$)\\b(new)\\b(?!\\$)"
+ },
+ {
+ "name": "keyword.declaration.dart",
+ "match": "(?<!\\$)\\b(abstract|sealed|base|interface|class|enum|extends|extension|external|factory|implements|get(?!\\()|mixin|native|operator|set(?!\\()|typedef|with|covariant)\\b(?!\\$)"
+ },
+ {
+ "name": "storage.modifier.dart",
+ "match": "(?<!\\$)\\b(static|final|const|required|late)\\b(?!\\$)"
+ },
+ {
+ "name": "storage.type.primitive.dart",
+ "match": "(?<!\\$)\\b(?:void|var)\\b(?!\\$)"
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "name": "keyword.operator.dart",
+ "match": "(?<!\\$)\\b(is\\!?)\\b(?!\\$)"
+ },
+ {
+ "name": "keyword.operator.ternary.dart",
+ "match": "\\?|:"
+ },
+ {
+ "name": "keyword.operator.bitwise.dart",
+ "match": "(<<|>>>?|~|\\^|\\||&)"
+ },
+ {
+ "name": "keyword.operator.assignment.bitwise.dart",
+ "match": "((&|\\^|\\||<<|>>>?)=)"
+ },
+ {
+ "name": "keyword.operator.closure.dart",
+ "match": "(=>)"
+ },
+ {
+ "name": "keyword.operator.comparison.dart",
+ "match": "(==|!=|<=?|>=?)"
+ },
+ {
+ "name": "keyword.operator.assignment.arithmetic.dart",
+ "match": "(([+*/%-]|\\~)=)"
+ },
+ {
+ "name": "keyword.operator.assignment.dart",
+ "match": "(=)"
+ },
+ {
+ "name": "keyword.operator.increment-decrement.dart",
+ "match": "(\\-\\-|\\+\\+)"
+ },
+ {
+ "name": "keyword.operator.arithmetic.dart",
+ "match": "(\\-|\\+|\\*|\\/|\\~\\/|%)"
+ },
+ {
+ "name": "keyword.operator.logical.dart",
+ "match": "(!|&&|\\|\\|)"
+ }
+ ]
+ },
+ "string-interp": {
+ "patterns": [
+ {
+ "match": "\\$([a-zA-Z0-9_]+)",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.dart"
+ }
+ }
+ },
+ {
+ "name": "string.interpolated.expression.dart",
+ "begin": "\\$\\{",
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#constants-and-special-vars",
+ "name": "variable.parameter.dart"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "name": "variable.parameter.dart",
+ "match": "[a-zA-Z0-9_]+"
+ }
+ ]
+ },
+ {
+ "name": "constant.character.escape.dart",
+ "match": "\\\\."
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "name": "string.interpolated.triple.double.dart",
+ "begin": "(?<!r)\"\"\"",
+ "end": "\"\"\"(?!\")",
+ "patterns": [
+ {
+ "include": "#string-interp"
+ }
+ ]
+ },
+ {
+ "name": "string.interpolated.triple.single.dart",
+ "begin": "(?<!r)'''",
+ "end": "'''(?!')",
+ "patterns": [
+ {
+ "include": "#string-interp"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.triple.double.dart",
+ "begin": "r\"\"\"",
+ "end": "\"\"\"(?!\")"
+ },
+ {
+ "name": "string.quoted.triple.single.dart",
+ "begin": "r'''",
+ "end": "'''(?!')"
+ },
+ {
+ "name": "string.interpolated.double.dart",
+ "begin": "(?<!\\|r)\"",
+ "end": "\"",
+ "patterns": [
+ {
+ "name": "invalid.string.newline",
+ "match": "\\n"
+ },
+ {
+ "include": "#string-interp"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.double.dart",
+ "begin": "r\"",
+ "end": "\"",
+ "patterns": [
+ {
+ "name": "invalid.string.newline",
+ "match": "\\n"
+ }
+ ]
+ },
+ {
+ "name": "string.interpolated.single.dart",
+ "begin": "(?<!\\|r)'",
+ "end": "'",
+ "patterns": [
+ {
+ "name": "invalid.string.newline",
+ "match": "\\n"
+ },
+ {
+ "include": "#string-interp"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.single.dart",
+ "begin": "r'",
+ "end": "'",
+ "patterns": [
+ {
+ "name": "invalid.string.newline",
+ "match": "\\n"
+ }
+ ]
+ }
+ ]
+ },
+ "punctuation": {
+ "patterns": [
+ {
+ "name": "punctuation.comma.dart",
+ "match": ","
+ },
+ {
+ "name": "punctuation.terminator.dart",
+ "match": ";"
+ },
+ {
+ "name": "punctuation.dot.dart",
+ "match": "\\."
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/dax.tmLanguage.json b/node_modules/shiki/languages/dax.tmLanguage.json
new file mode 100644
index 0000000..cc08ff1
--- /dev/null
+++ b/node_modules/shiki/languages/dax.tmLanguage.json
@@ -0,0 +1,185 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "name": "dax",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#labels"
+ },
+ {
+ "include": "#parameters"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#numbers"
+ }
+ ],
+ "repository": {
+ "parameters": {
+ "patterns": [
+ {
+ "name": "meta.function.definition.parameters.dax",
+ "comment": "build out variable assignment",
+ "begin": "\\b(?<!\\.)(VAR)\\b(?<!\\.)\\b",
+ "end": "=",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.dax"
+ },
+ "2": {
+ "name": "variable.other.readwrite.dax"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.assignment.dax"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.control.dax",
+ "match": "(?x)\n = \n"
+ }
+ ]
+ },
+ {
+ "name": "variable.other.constant.dax",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ }
+ ]
+ },
+ "labels": {
+ "patterns": [
+ {
+ "match": "(^(.*?)\\s*(:=|!=))",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.label.dax"
+ },
+ "2": {
+ "name": "entity.name.label.dax"
+ }
+ }
+ }
+ ]
+ },
+ "numbers": {
+ "name": "constant.numeric.dax",
+ "match": "(?x) # turn on extended mode\n -? # an optional minus\n (?:\n 0 # a zero\n | # ...or...\n [1-9] # a 1-9 character\n \\d* # followed by zero or more digits\n )\n (?:\n (?:\n \\. # a period\n \\d+ # followed by one or more digits\n )?\n (?:\n [eE] # an e character\n [+-]? # followed by an option +/-\n \\d+ # followed by one or more digits\n )? # make exponent optional\n )? # make decimal portion optional"
+ },
+ "comments": {
+ "patterns": [
+ {
+ "name": "comment.line.dax",
+ "begin": "//",
+ "end": "\n",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.dax"
+ }
+ }
+ },
+ {
+ "name": "comment.line.dax",
+ "begin": "--",
+ "end": "\n",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.dax"
+ }
+ }
+ },
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.dax"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.dax"
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "match": "\\b(YIELDMAT|YIELDDISC|YIELD|YEARFRAC|YEAR|XNPV|XIRR|WEEKNUM|WEEKDAY|VDB|VARX.S|VARX.P|VAR.S|VAR.P|VALUES|VALUE|UTCTODAY|UTCNOW|USERPRINCIPALNAME|USEROBJECTID|USERNAME|USERELATIONSHIP|USERCULTURE|UPPER|UNION|UNICODE|UNICHAR|TRUNC|TRUE|TRIM|TREATAS|TOTALYTD|TOTALQTD|TOTALMTD|TOPNSKIP|TOPNPERLEVEL|TOPN|TODAY|TIMEVALUE|TIME|TBILLYIELD|TBILLPRICE|TBILLEQ|TANH|TAN|T.INV.2T|T.INV|T.DIST.RT|T.DIST.2T|T.DIST|SYD|SWITCH|SUMX|SUMMARIZECOLUMNS|SUMMARIZE|SUM|SUBSTITUTEWITHINDEX|SUBSTITUTE|STDEVX.S|STDEVX.P|STDEV.S|STDEV.P|STARTOFYEAR|STARTOFQUARTER|STARTOFMONTH|SQRTPI|SQRT|SLN|SINH|SIN|SIGN|SELECTEDVALUE|SELECTEDMEASURENAME|SELECTEDMEASUREFORMATSTRING|SELECTEDMEASURE|SELECTCOLUMNS|SECOND|SEARCH|SAMPLE|SAMEPERIODLASTYEAR|RRI|ROW|ROUNDUP|ROUNDDOWN|ROUND|ROLLUPISSUBTOTAL|ROLLUPGROUP|ROLLUPADDISSUBTOTAL|ROLLUP|RIGHT|REPT|REPLACE|REMOVEFILTERS|RELATEDTABLE|RELATED|RECEIVED|RATE|RANKX|RANK.EQ|RANDBETWEEN|RAND|RADIANS|QUOTIENT|QUARTER|PV|PRODUCTX|PRODUCT|PRICEMAT|PRICEDISC|PRICE|PREVIOUSYEAR|PREVIOUSQUARTER|PREVIOUSMONTH|PREVIOUSDAY|PPMT|POWER|POISSON.DIST|PMT|PI|PERMUT|PERCENTILEX.INC|PERCENTILEX.EXC|PERCENTILE.INC|PERCENTILE.EXC|PDURATION|PATHLENGTH|PATHITEMREVERSE|PATHITEM|PATHCONTAINS|PATH|PARALLELPERIOD|OR|OPENINGBALANCEYEAR|OPENINGBALANCEQUARTER|OPENINGBALANCEMONTH|ODDLYIELD|ODDLPRICE|ODDFYIELD|ODDFPRICE|ODD|NPER|NOW|NOT|NORM.S.INV|NORM.S.DIST|NORM.INV|NORM.DIST|NONVISUAL|NOMINAL|NEXTYEAR|NEXTQUARTER|NEXTMONTH|NEXTDAY|NATURALLEFTOUTERJOIN|NATURALINNERJOIN|MROUND|MONTH|MOD|MINX|MINUTE|MINA|MIN|MID|MEDIANX|MEDIAN|MDURATION|MAXX|MAXA|MAX|LOWER|LOOKUPVALUE|LOG10|LOG|LN|LEN|LEFT|LCM|LASTNONBLANKVALUE|LASTNONBLANK|LASTDATE|KEYWORDMATCH|KEEPFILTERS|ISTEXT|ISSUBTOTAL|ISSELECTEDMEASURE|ISPMT|ISONORAFTER|ISODD|ISO.CEILING|ISNUMBER|ISNONTEXT|ISLOGICAL|ISINSCOPE|ISFILTERED|ISEVEN|ISERROR|ISEMPTY|ISCROSSFILTERED|ISBLANK|ISAFTER|IPMT|INTRATE|INTERSECT|INT|IGNORE|IFERROR|IF.EAGER|IF|HOUR|HASONEVALUE|HASONEFILTER|HASH|GROUPBY|GEOMEANX|GEOMEAN|GENERATESERIES|GENERATEALL|GENERATE|GCD|FV|FORMAT|FLOOR|FIXED|FIRSTNONBLANKVALUE|FIRSTNONBLANK|FIRSTDATE|FIND|FILTERS|FILTER|FALSE|FACT|EXPON.DIST|EXP|EXCEPT|EXACT|EVEN|ERROR|EOMONTH|ENDOFYEAR|ENDOFQUARTER|ENDOFMONTH|EFFECT|EDATE|EARLIEST|EARLIER|DURATION|DOLLARFR|DOLLARDE|DIVIDE|DISTINCTCOUNTNOBLANK|DISTINCTCOUNT|DISTINCT|DISC|DETAILROWS|DEGREES|DDB|DB|DAY|DATEVALUE|DATESYTD|DATESQTD|DATESMTD|DATESINPERIOD|DATESBETWEEN|DATEDIFF|DATEADD|DATE|DATATABLE|CUSTOMDATA|CURRENTGROUP|CURRENCY|CUMPRINC|CUMIPMT|CROSSJOIN|CROSSFILTER|COUPPCD|COUPNUM|COUPNCD|COUPDAYSNC|COUPDAYS|COUPDAYBS|COUNTX|COUNTROWS|COUNTBLANK|COUNTAX|COUNTA|COUNT|COTH|COT|COSH|COS|CONVERT|CONTAINSSTRINGEXACT|CONTAINSSTRING|CONTAINSROW|CONTAINS|CONFIDENCE.T|CONFIDENCE.NORM|CONCATENATEX|CONCATENATE|COMBINEVALUES|COMBINA|COMBIN|COLUMNSTATISTICS|COALESCE|CLOSINGBALANCEYEAR|CLOSINGBALANCEQUARTER|CLOSINGBALANCEMONTH|CHISQ.INV.RT|CHISQ.INV|CHISQ.DIST.RT|CHISQ.DIST|CEILING|CALENDARAUTO|CALENDAR|CALCULATETABLE|CALCULATE|BLANK|BETA.INV|BETA.DIST|AVERAGEX|AVERAGEA|AVERAGE|ATANH|ATAN|ASINH|ASIN|APPROXIMATEDISTINCTCOUNT|AND|AMORLINC|AMORDEGRC|ALLSELECTED|ALLNOBLANKROW|ALLEXCEPT|ALLCROSSFILTERED|ALL|ADDMISSINGITEMS|ADDCOLUMNS|ACOTH|ACOT|ACOSH|ACOS|ACCRINTM|ACCRINT|ABS)\\b",
+ "name": "variable.language.dax"
+ },
+ {
+ "name": "keyword.control.dax",
+ "match": "\\b(DEFINE|EVALUATE|ORDER BY|RETURN|VAR)\\b"
+ },
+ {
+ "name": "keyword.array.constructor.dax",
+ "match": "(?x)\n { | }"
+ },
+ {
+ "name": "keyword.operator.comparison.dax",
+ "match": "(?x)\n > | < | >= | <= | =(?!==)\n"
+ },
+ {
+ "name": "keyword.operator.logical.dax",
+ "match": "(?x)\n && | IN | NOT | \\|\\|"
+ },
+ {
+ "name": "keyword.arithmetic.operator.dax",
+ "match": "(?x)\n \\+ | \\- | \\* | \\/ \n"
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "name": "support.function.dax"
+ },
+ {
+ "begin": "\"",
+ "end": "\"",
+ "name": "string.quoted.double.dax"
+ },
+ {
+ "begin": "\\'",
+ "end": "\\'",
+ "name": "support.class.dax"
+ }
+ ]
+ },
+ "strings": {
+ "name": "string.quoted.double.dax",
+ "begin": "\"",
+ "end": "\"",
+ "patterns": [
+ {
+ "name": "constant.character.escape.dax",
+ "match": "\\\\."
+ }
+ ]
+ },
+ "metas": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.dax"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.dax"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "scopeName": "source.dax"
+}
diff --git a/node_modules/shiki/languages/diff.tmLanguage.json b/node_modules/shiki/languages/diff.tmLanguage.json
new file mode 100644
index 0000000..a7bddb7
--- /dev/null
+++ b/node_modules/shiki/languages/diff.tmLanguage.json
@@ -0,0 +1,160 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/textmate/diff.tmbundle/blob/master/Syntaxes/Diff.plist",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/textmate/diff.tmbundle/commit/0593bb775eab1824af97ef2172fd38822abd97d7",
+ "name": "diff",
+ "scopeName": "source.diff",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.separator.diff"
+ }
+ },
+ "match": "^((\\*{15})|(={67})|(-{3}))$\\n?",
+ "name": "meta.separator.diff"
+ },
+ {
+ "match": "^\\d+(,\\d+)*(a|d|c)\\d+(,\\d+)*$\\n?",
+ "name": "meta.diff.range.normal"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.range.diff"
+ },
+ "2": {
+ "name": "meta.toc-list.line-number.diff"
+ },
+ "3": {
+ "name": "punctuation.definition.range.diff"
+ }
+ },
+ "match": "^(@@)\\s*(.+?)\\s*(@@)($\\n?)?",
+ "name": "meta.diff.range.unified"
+ },
+ {
+ "captures": {
+ "3": {
+ "name": "punctuation.definition.range.diff"
+ },
+ "4": {
+ "name": "punctuation.definition.range.diff"
+ },
+ "6": {
+ "name": "punctuation.definition.range.diff"
+ },
+ "7": {
+ "name": "punctuation.definition.range.diff"
+ }
+ },
+ "match": "^(((\\-{3}) .+ (\\-{4}))|((\\*{3}) .+ (\\*{4})))$\\n?",
+ "name": "meta.diff.range.context"
+ },
+ {
+ "match": "^diff --git a/.*$\\n?",
+ "name": "meta.diff.header.git"
+ },
+ {
+ "match": "^diff (-|\\S+\\s+\\S+).*$\\n?",
+ "name": "meta.diff.header.command"
+ },
+ {
+ "captures": {
+ "4": {
+ "name": "punctuation.definition.from-file.diff"
+ },
+ "6": {
+ "name": "punctuation.definition.from-file.diff"
+ },
+ "7": {
+ "name": "punctuation.definition.from-file.diff"
+ }
+ },
+ "match": "(^(((-{3}) .+)|((\\*{3}) .+))$\\n?|^(={4}) .+(?= - ))",
+ "name": "meta.diff.header.from-file"
+ },
+ {
+ "captures": {
+ "2": {
+ "name": "punctuation.definition.to-file.diff"
+ },
+ "3": {
+ "name": "punctuation.definition.to-file.diff"
+ },
+ "4": {
+ "name": "punctuation.definition.to-file.diff"
+ }
+ },
+ "match": "(^(\\+{3}) .+$\\n?| (-) .* (={4})$\\n?)",
+ "name": "meta.diff.header.to-file"
+ },
+ {
+ "captures": {
+ "3": {
+ "name": "punctuation.definition.inserted.diff"
+ },
+ "6": {
+ "name": "punctuation.definition.inserted.diff"
+ }
+ },
+ "match": "^(((>)( .*)?)|((\\+).*))$\\n?",
+ "name": "markup.inserted.diff"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.changed.diff"
+ }
+ },
+ "match": "^(!).*$\\n?",
+ "name": "markup.changed.diff"
+ },
+ {
+ "captures": {
+ "3": {
+ "name": "punctuation.definition.deleted.diff"
+ },
+ "6": {
+ "name": "punctuation.definition.deleted.diff"
+ }
+ },
+ "match": "^(((<)( .*)?)|((-).*))$\\n?",
+ "name": "markup.deleted.diff"
+ },
+ {
+ "begin": "^(#)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.diff"
+ }
+ },
+ "comment": "Git produces unified diffs with embedded comments\"",
+ "end": "\\n",
+ "name": "comment.line.number-sign.diff"
+ },
+ {
+ "match": "^index [0-9a-f]{7,40}\\.\\.[0-9a-f]{7,40}.*$\\n?",
+ "name": "meta.diff.index.git"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.key-value.diff"
+ },
+ "2": {
+ "name": "meta.toc-list.file-name.diff"
+ }
+ },
+ "match": "^Index(:) (.+)$\\n?",
+ "name": "meta.diff.index"
+ },
+ {
+ "match": "^Only in .*: .*$\\n?",
+ "name": "meta.diff.only-in"
+ }
+ ]
+}
diff --git a/node_modules/shiki/languages/docker.tmLanguage.json b/node_modules/shiki/languages/docker.tmLanguage.json
new file mode 100644
index 0000000..9599f0f
--- /dev/null
+++ b/node_modules/shiki/languages/docker.tmLanguage.json
@@ -0,0 +1,102 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/moby/moby/blob/master/contrib/syntax/textmate/Docker.tmbundle/Syntaxes/Dockerfile.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/moby/moby/commit/abd39744c6f3ed854500e423f5fabf952165161f",
+ "name": "docker",
+ "scopeName": "source.dockerfile",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.special-method.dockerfile"
+ },
+ "2": {
+ "name": "keyword.other.special-method.dockerfile"
+ }
+ },
+ "match": "^\\s*\\b(?i:(FROM))\\b.*?\\b(?i:(AS))\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.dockerfile"
+ },
+ "2": {
+ "name": "keyword.other.special-method.dockerfile"
+ }
+ },
+ "match": "^\\s*(?i:(ONBUILD)\\s+)?(?i:(ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR))\\s"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.dockerfile"
+ },
+ "2": {
+ "name": "keyword.other.special-method.dockerfile"
+ }
+ },
+ "match": "^\\s*(?i:(ONBUILD)\\s+)?(?i:(CMD|ENTRYPOINT))\\s"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.dockerfile"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.dockerfile"
+ }
+ },
+ "name": "string.quoted.double.dockerfile",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escaped.dockerfile"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.dockerfile"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.dockerfile"
+ }
+ },
+ "name": "string.quoted.single.dockerfile",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escaped.dockerfile"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.dockerfile"
+ },
+ "2": {
+ "name": "comment.line.number-sign.dockerfile"
+ },
+ "3": {
+ "name": "punctuation.definition.comment.dockerfile"
+ }
+ },
+ "comment": "comment.line",
+ "match": "^(\\s*)((#).*$\\n?)"
+ }
+ ]
+}
diff --git a/node_modules/shiki/languages/dream-maker.tmLanguage.json b/node_modules/shiki/languages/dream-maker.tmLanguage.json
new file mode 100644
index 0000000..ccb9db6
--- /dev/null
+++ b/node_modules/shiki/languages/dream-maker.tmLanguage.json
@@ -0,0 +1,636 @@
+{
+ "fileTypes": ["dm", "dme"],
+ "foldingStartMarker": "(?x)\n/\\*\\*(?!\\*)\n|^(?![^{]*?//|[^{]*?/\\*(?!.*?\\*/.*?\\{)).*?\\{\\s*($|//|/\\*(?!.*?\\*/.*\\S))",
+ "foldingStopMarker": "(?<!\\*)\\*\\*/|^\\s*\\}",
+ "name": "dream-maker",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-enabled"
+ },
+ {
+ "include": "#preprocessor-rule-disabled"
+ },
+ {
+ "include": "#preprocessor-rule-other"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "(?x)\n(var)[\\/ ]\n(?:(static|global|tmp|const)\\/)?\n(?:(datum|atom(?:\\/movable)?|obj|mob|turf|area|savefile|list|client|sound|image|database|matrix|regex|exception)\\/)?\n(?:\n\t([a-zA-Z0-9_\\-$]*)\\/\n)*\n\n([A-Za-z0-9_$]*)\\b",
+ "name": "meta.initialization.dm",
+ "captures": {
+ "1": {
+ "name": "storage.type.dm"
+ },
+ "2": {
+ "name": "storage.modifier.dm"
+ },
+ "3": {
+ "name": "storage.type.dm"
+ },
+ "5": {
+ "name": "variable.other.dm"
+ }
+ }
+ },
+ {
+ "match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)\\b",
+ "name": "constant.numeric.dm"
+ },
+ {
+ "match": "\\b(sleep|spawn|break|continue|do|else|for|goto|if|return|switch|while)\\b",
+ "name": "keyword.control.dm"
+ },
+ {
+ "match": "\\b(del|new)\\b",
+ "name": "keyword.other.dm"
+ },
+ {
+ "match": "\\b(proc|verb|datum|atom(/movable)?|obj|mob|turf|area|savefile|list|client|sound|image|database|matrix|regex|exception)\\b",
+ "name": "storage.type.dm"
+ },
+ {
+ "match": "\\b(as|const|global|set|static|tmp)\\b",
+ "name": "storage.modifier.dm"
+ },
+ {
+ "match": "\\b(usr|world|src|args)\\b",
+ "name": "variable.language.dm"
+ },
+ {
+ "match": "(\\?|(>|<)(=)?|\\.|:|/(=)?|~|\\+(\\+|=)?|-(-|=)?|\\*(\\*|=)?|%|>>|<<|=(=)?|!(=)?|<>|&|&&|\\^|\\||\\|\\||\\bto\\b|\\bin\\b|\\bstep\\b)",
+ "name": "keyword.operator.dm"
+ },
+ {
+ "match": "\\b([A-Z_][A-Z_0-9]*)\\b",
+ "name": "constant.language.dm"
+ },
+ {
+ "match": "\\bnull\\b",
+ "name": "constant.language.dm"
+ },
+ {
+ "begin": "{\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.dm"
+ }
+ },
+ "end": "\"}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.dm"
+ }
+ },
+ "name": "string.quoted.triple.dm",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#string_embedded_expression"
+ }
+ ]
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.dm"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.dm"
+ }
+ },
+ "name": "string.quoted.double.dm",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#string_embedded_expression"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.dm"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.dm"
+ }
+ },
+ "name": "string.quoted.single.dm",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n^\\s* ((\\#)\\s*define) \\s+ # define\n((?<id>[a-zA-Z_][a-zA-Z0-9_]*)) # macro name\n(?:\n\t(\\()\n\t\t(\n\t\t\t\\s* \\g<id> \\s* # first argument\n\t\t\t((,) \\s* \\g<id> \\s*)* # additional arguments\n\t\t\t(?:\\.\\.\\.)? # varargs ellipsis?\n\t\t)\n\t(\\))\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.define.dm"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.dm"
+ },
+ "3": {
+ "name": "entity.name.function.preprocessor.dm"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.begin.dm"
+ },
+ "6": {
+ "name": "variable.parameter.preprocessor.dm"
+ },
+ "8": {
+ "name": "punctuation.separator.parameters.dm"
+ },
+ "9": {
+ "name": "punctuation.definition.parameters.end.dm"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.macro.dm",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n^\\s* ((\\#)\\s*define) \\s+ # define\n((?<id>[a-zA-Z_][a-zA-Z0-9_]*)) # macro name",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.define.dm"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.dm"
+ },
+ "3": {
+ "name": "variable.other.preprocessor.dm"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.macro.dm",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(#\\s*(error|warn))\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.import.error.dm"
+ }
+ },
+ "end": "$",
+ "name": "meta.preprocessor.diagnostic.dm",
+ "patterns": [
+ {
+ "match": "(?>\\\\\\s*\\n)",
+ "name": "punctuation.separator.continuation.dm"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(?:((#)\\s*(?:elif|else|if|ifdef|ifndef))|((#)\\s*(undef|include)))\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.conditional.dm"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.dm"
+ },
+ "3": {
+ "name": "keyword.control.directive.$5.dm"
+ },
+ "4": {
+ "name": "punctuation.definition.directive.dm"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.dm",
+ "patterns": [
+ {
+ "match": "(?>\\\\\\s*\\n)",
+ "name": "punctuation.separator.continuation.dm"
+ }
+ ]
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "begin": "(?x)\n\t\t\t\t(?: ^ # begin-of-line\n\t\t\t\t\t|\n\t\t\t\t\t\t (?: (?= \\s ) (?<!else|new|return) (?<=\\w) # or word + space before name\n\t\t\t\t\t\t\t | (?= \\s*[A-Za-z_] ) (?<!&&) (?<=[*&>]) # or type modifier before name\n\t\t\t\t\t\t )\n\t\t\t\t)\n\t\t\t\t(\\s*) (?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\\s*\\()\n\t\t\t\t(\n\t\t\t\t\t(?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ | # actual name\n\t\t\t\t\t(?: (?<=operator) (?: [-*&<>=+!]+ | \\(\\) | \\[\\] ) ) # if it is a C++ operator\n\t\t\t\t)\n\t\t\t\t \\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.function.leading.dm"
+ },
+ "3": {
+ "name": "entity.name.function.dm"
+ },
+ "4": {
+ "name": "punctuation.definition.parameters.dm"
+ }
+ },
+ "end": "(?<=\\})|(?=#)|(;)?",
+ "name": "meta.function.dm",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#parens"
+ },
+ {
+ "match": "\\bconst\\b",
+ "name": "storage.modifier.dm"
+ },
+ {
+ "include": "#block"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "access": {
+ "match": "\\.[a-zA-Z_][a-zA-Z_0-9]*\\b(?!\\s*\\()",
+ "name": "variable.other.dot-access.dm"
+ },
+ "block": {
+ "begin": "\\{",
+ "end": "\\}",
+ "name": "meta.block.dm",
+ "patterns": [
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ "block_innards": {
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-enabled-block"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-block"
+ },
+ {
+ "include": "#preprocessor-rule-other-block"
+ },
+ {
+ "include": "#access"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.whitespace.function-call.leading.dm"
+ },
+ "2": {
+ "name": "support.function.any-method.dm"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.dm"
+ }
+ },
+ "match": "(?x) (?: (?= \\s ) (?:(?<=else|new|return) | (?<!\\w)) (\\s+))?\n\t\t\t(\\b\n\t\t\t\t(?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\\s*\\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\\b | :: )++ # actual name\n\t\t\t)\n\t\t\t \\s*(\\()",
+ "name": "meta.function-call.dm"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "meta.toc-list.banner.block.dm"
+ }
+ },
+ "match": "^/\\* =(\\s*.*?)\\s*= \\*/$\\n?",
+ "name": "comment.block.dm"
+ },
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.dm"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.dm",
+ "patterns": [
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "match": "\\*/.*\\n",
+ "name": "invalid.illegal.stray-comment-end.dm"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "meta.toc-list.banner.line.dm"
+ }
+ },
+ "match": "^// =(\\s*.*?)\\s*=\\s*$\\n?",
+ "name": "comment.line.banner.dm"
+ },
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.dm"
+ }
+ },
+ "end": "$\\n?",
+ "name": "comment.line.double-slash.dm",
+ "patterns": [
+ {
+ "match": "(?>\\\\\\s*\\n)",
+ "name": "punctuation.separator.continuation.dm"
+ }
+ ]
+ }
+ ]
+ },
+ "disabled": {
+ "begin": "^\\s*#\\s*if(n?def)?\\b.*$",
+ "comment": "eat nested preprocessor if(def)s",
+ "end": "^\\s*#\\s*endif\\b.*$",
+ "patterns": [
+ {
+ "include": "#disabled"
+ }
+ ]
+ },
+ "parens": {
+ "begin": "\\(",
+ "end": "\\)",
+ "name": "meta.parens.dm",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "preprocessor-rule-disabled": {
+ "begin": "^\\s*(#(if)\\s+(0)\\b).*",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.dm"
+ },
+ "2": {
+ "name": "keyword.control.import.if.dm"
+ },
+ "3": {
+ "name": "constant.numeric.preprocessor.dm"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b)",
+ "patterns": [
+ {
+ "begin": "^\\s*(#\\s*(else)\\b)",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.dm"
+ },
+ "2": {
+ "name": "keyword.control.import.else.dm"
+ }
+ },
+ "end": "(?=^\\s*#\\s*endif\\b.*$)",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "",
+ "end": "(?=^\\s*#\\s*(else|endif)\\b.*$)",
+ "name": "comment.block.preprocessor.if-branch",
+ "patterns": [
+ {
+ "include": "#disabled"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-disabled-block": {
+ "begin": "^\\s*(#(if)\\s+(0)\\b).*",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.dm"
+ },
+ "2": {
+ "name": "keyword.control.import.if.dm"
+ },
+ "3": {
+ "name": "constant.numeric.preprocessor.dm"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b)",
+ "patterns": [
+ {
+ "begin": "^\\s*(#\\s*(else)\\b)",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.dm"
+ },
+ "2": {
+ "name": "keyword.control.import.else.dm"
+ }
+ },
+ "end": "(?=^\\s*#\\s*endif\\b.*$)",
+ "patterns": [
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ {
+ "begin": "",
+ "end": "(?=^\\s*#\\s*(else|endif)\\b.*$)",
+ "name": "comment.block.preprocessor.if-branch.in-block",
+ "patterns": [
+ {
+ "include": "#disabled"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled": {
+ "begin": "^\\s*(#(if)\\s+(0*1)\\b)",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.dm"
+ },
+ "2": {
+ "name": "keyword.control.import.if.dm"
+ },
+ "3": {
+ "name": "constant.numeric.preprocessor.dm"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b)",
+ "patterns": [
+ {
+ "begin": "^\\s*(#\\s*(else)\\b).*",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.dm"
+ },
+ "2": {
+ "name": "keyword.control.import.else.dm"
+ }
+ },
+ "contentName": "comment.block.preprocessor.else-branch",
+ "end": "(?=^\\s*#\\s*endif\\b.*$)",
+ "patterns": [
+ {
+ "include": "#disabled"
+ }
+ ]
+ },
+ {
+ "begin": "",
+ "end": "(?=^\\s*#\\s*(else|endif)\\b.*$)",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-block": {
+ "begin": "^\\s*(#(if)\\s+(0*1)\\b)",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.dm"
+ },
+ "2": {
+ "name": "keyword.control.import.if.dm"
+ },
+ "3": {
+ "name": "constant.numeric.preprocessor.dm"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b)",
+ "patterns": [
+ {
+ "begin": "^\\s*(#\\s*(else)\\b).*",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.dm"
+ },
+ "2": {
+ "name": "keyword.control.import.else.dm"
+ }
+ },
+ "contentName": "comment.block.preprocessor.else-branch.in-block",
+ "end": "(?=^\\s*#\\s*endif\\b.*$)",
+ "patterns": [
+ {
+ "include": "#disabled"
+ }
+ ]
+ },
+ {
+ "begin": "",
+ "end": "(?=^\\s*#\\s*(else|endif)\\b.*$)",
+ "patterns": [
+ {
+ "include": "#block_innards"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-other": {
+ "begin": "^\\s*((#\\s*(if(n?def)?))\\b.*?(?:(?=(?://|/\\*))|$))",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.dm"
+ },
+ "2": {
+ "name": "keyword.control.import.dm"
+ }
+ },
+ "end": "^\\s*((#\\s*(endif))\\b).*$",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "preprocessor-rule-other-block": {
+ "begin": "^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.dm"
+ },
+ "2": {
+ "name": "keyword.control.import.dm"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b).*$",
+ "patterns": [
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ "string_embedded_expression": {
+ "patterns": [
+ {
+ "begin": "(?<!\\\\)\\[",
+ "end": "\\]",
+ "name": "string.interpolated.dm",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "string_escaped_char": {
+ "patterns": [
+ {
+ "match": "(?x)\n\\\\\n(\n\th(?:(?:er|im)self|ers|im)\n\t|([tTsS]?he) # Weird regex to match The, the, She, she and he at once.\n\t|He\n\t|[Hh]is\n\t|[aA]n?\n\t|(?:im)?proper\n\t|\\.\\.\\.\n\t|(?:icon|ref|[Rr]oman)(?=\\[) # Macros which need a [] after them.\n\t|[s<>\"n\\n \\[]\n)",
+ "name": "constant.character.escape.dm"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unknown-escape.dm"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.dm"
+}
diff --git a/node_modules/shiki/languages/elixir.tmLanguage.json b/node_modules/shiki/languages/elixir.tmLanguage.json
new file mode 100644
index 0000000..2e4291a
--- /dev/null
+++ b/node_modules/shiki/languages/elixir.tmLanguage.json
@@ -0,0 +1,1013 @@
+{
+ "comment": "Textmate bundle for Elixir Programming Language.",
+ "fileTypes": ["ex", "exs"],
+ "firstLineMatch": "^#!/.*\\belixir",
+ "foldingStartMarker": "(after|else|catch|rescue|\\-\\>|\\{|\\[|do)\\s*$",
+ "foldingStopMarker": "^\\s*((\\}|\\]|after|else|catch|rescue)\\s*$|end\\b)",
+ "keyEquivalent": "^~E",
+ "name": "elixir",
+ "patterns": [
+ {
+ "begin": "\\b(fn)\\b(?!.*->)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.elixir"
+ }
+ },
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#core_syntax"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.name.type.class.elixir"
+ },
+ "2": {
+ "name": "punctuation.separator.method.elixir"
+ },
+ "3": {
+ "name": "entity.name.function.elixir"
+ }
+ },
+ "match": "([A-Z]\\w+)\\s*(\\.)\\s*([a-z_]\\w*[!?]?)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "constant.other.symbol.elixir"
+ },
+ "2": {
+ "name": "punctuation.separator.method.elixir"
+ },
+ "3": {
+ "name": "entity.name.function.elixir"
+ }
+ },
+ "match": "(\\:\\w+)\\s*(\\.)\\s*([_]?\\w*[!?]?)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.other.elixir"
+ },
+ "2": {
+ "name": "entity.name.function.elixir"
+ }
+ },
+ "match": "(\\|\\>)\\s*([a-z_]\\w*[!?]?)"
+ },
+ {
+ "match": "\\b[a-z_]\\w*[!?]?(?=\\s*\\.?\\s*\\()",
+ "name": "entity.name.function.elixir"
+ },
+ {
+ "begin": "\\b(fn)\\b(?=.*->)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.elixir"
+ }
+ },
+ "end": "(?>(->)|(when)|(\\)))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.other.elixir"
+ },
+ "2": {
+ "name": "keyword.control.elixir"
+ },
+ "3": {
+ "name": "punctuation.section.function.elixir"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#core_syntax"
+ }
+ ]
+ },
+ {
+ "include": "#core_syntax"
+ },
+ {
+ "begin": "^(?=.*->)((?![^\"']*(\"|')[^\"']*->)|(?=.*->[^\"']*(\"|')[^\"']*->))((?!.*\\([^\\)]*->)|(?=[^\\(\\)]*->)|(?=\\s*\\(.*\\).*->))((?!.*\\b(fn)\\b)|(?=.*->.*\\bfn\\b))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.elixir"
+ }
+ },
+ "end": "(?>(->)|(when)|(\\)))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.other.elixir"
+ },
+ "2": {
+ "name": "keyword.control.elixir"
+ },
+ "3": {
+ "name": "punctuation.section.function.elixir"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#core_syntax"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "core_syntax": {
+ "patterns": [
+ {
+ "begin": "^\\s*(defmodule)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.module.elixir"
+ }
+ },
+ "end": "\\b(do)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.module.elixir"
+ }
+ },
+ "name": "meta.module.elixir",
+ "patterns": [
+ {
+ "match": "\\b[A-Z]\\w*(?=\\.)",
+ "name": "entity.other.inherited-class.elixir"
+ },
+ {
+ "match": "\\b[A-Z]\\w*\\b",
+ "name": "entity.name.type.class.elixir"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(defprotocol)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.protocol.elixir"
+ }
+ },
+ "end": "\\b(do)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.protocol.elixir"
+ }
+ },
+ "name": "meta.protocol_declaration.elixir",
+ "patterns": [
+ {
+ "match": "\\b[A-Z]\\w*\\b",
+ "name": "entity.name.type.protocol.elixir"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(defimpl)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.protocol.elixir"
+ }
+ },
+ "end": "\\b(do)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.protocol.elixir"
+ }
+ },
+ "name": "meta.protocol_implementation.elixir",
+ "patterns": [
+ {
+ "match": "\\b[A-Z]\\w*\\b",
+ "name": "entity.name.type.protocol.elixir"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(def|defmacro|defdelegate|defguard)\\s+((?>[a-zA-Z_]\\w*(?>\\.|::))?(?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))?|===?|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\]=?))((\\()|\\s*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.module.elixir"
+ },
+ "2": {
+ "name": "entity.name.function.public.elixir"
+ },
+ "4": {
+ "name": "punctuation.section.function.elixir"
+ }
+ },
+ "end": "(\\bdo:)|(\\bdo\\b)|(?=\\s+(def|defn|defmacro|defdelegate|defguard)\\b)",
+ "endCaptures": {
+ "1": {
+ "name": "constant.other.keywords.elixir"
+ },
+ "2": {
+ "name": "keyword.control.module.elixir"
+ }
+ },
+ "name": "meta.function.public.elixir",
+ "patterns": [
+ {
+ "include": "$self"
+ },
+ {
+ "begin": "\\s(\\\\\\\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.other.elixir"
+ }
+ },
+ "end": ",|\\)|$",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "match": "\\b(is_atom|is_binary|is_bitstring|is_boolean|is_float|is_function|is_integer|is_list|is_map|is_nil|is_number|is_pid|is_port|is_record|is_reference|is_tuple|is_exception|abs|bit_size|byte_size|div|elem|hd|length|map_size|node|rem|round|tl|trunc|tuple_size)\\b",
+ "name": "keyword.control.elixir"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(defp|defnp|defmacrop|defguardp)\\s+((?>[a-zA-Z_]\\w*(?>\\.|::))?(?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))?|===?|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\]=?))((\\()|\\s*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.module.elixir"
+ },
+ "2": {
+ "name": "entity.name.function.private.elixir"
+ },
+ "4": {
+ "name": "punctuation.section.function.elixir"
+ }
+ },
+ "end": "(\\bdo:)|(\\bdo\\b)|(?=\\s+(defp|defmacrop|defguardp)\\b)",
+ "endCaptures": {
+ "1": {
+ "name": "constant.other.keywords.elixir"
+ },
+ "2": {
+ "name": "keyword.control.module.elixir"
+ }
+ },
+ "name": "meta.function.private.elixir",
+ "patterns": [
+ {
+ "include": "$self"
+ },
+ {
+ "begin": "\\s(\\\\\\\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.other.elixir"
+ }
+ },
+ "end": ",|\\)|$",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "match": "\\b(is_atom|is_binary|is_bitstring|is_boolean|is_float|is_function|is_integer|is_list|is_map|is_nil|is_number|is_pid|is_port|is_record|is_reference|is_tuple|is_exception|abs|bit_size|byte_size|div|elem|hd|length|map_size|node|rem|round|tl|trunc|tuple_size)\\b",
+ "name": "keyword.control.elixir"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*~L\"\"\"",
+ "comment": "Leex Sigil",
+ "end": "\\s*\"\"\"",
+ "name": "sigil.leex",
+ "patterns": [
+ {
+ "include": "text.elixir"
+ },
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*~H\"\"\"",
+ "comment": "HEEx Sigil",
+ "end": "\\s*\"\"\"",
+ "name": "sigil.heex",
+ "patterns": [
+ {
+ "include": "text.elixir"
+ },
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ },
+ {
+ "begin": "@(module|type)?doc (~[a-z])?\"\"\"",
+ "comment": "@doc with heredocs is treated as documentation",
+ "end": "\\s*\"\"\"",
+ "name": "comment.block.documentation.heredoc",
+ "patterns": [
+ {
+ "include": "#interpolated_elixir"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "@(module|type)?doc ~[A-Z]\"\"\"",
+ "comment": "@doc with heredocs is treated as documentation",
+ "end": "\\s*\"\"\"",
+ "name": "comment.block.documentation.heredoc"
+ },
+ {
+ "begin": "@(module|type)?doc (~[a-z])?'''",
+ "comment": "@doc with heredocs is treated as documentation",
+ "end": "\\s*'''",
+ "name": "comment.block.documentation.heredoc",
+ "patterns": [
+ {
+ "include": "#interpolated_elixir"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "@(module|type)?doc ~[A-Z]'''",
+ "comment": "@doc with heredocs is treated as documentation",
+ "end": "\\s*'''",
+ "name": "comment.block.documentation.heredoc"
+ },
+ {
+ "comment": "@doc false is treated as documentation",
+ "match": "@(module|type)?doc false",
+ "name": "comment.block.documentation.false"
+ },
+ {
+ "begin": "@(module|type)?doc \"",
+ "comment": "@doc with string is treated as documentation",
+ "end": "\"",
+ "name": "comment.block.documentation.string",
+ "patterns": [
+ {
+ "include": "#interpolated_elixir"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "match": "(?<!\\.)\\b(do|end|case|bc|lc|for|if|cond|unless|try|receive|fn|defmodule|defp?|defprotocol|defimpl|defrecord|defstruct|defnp?|defmacrop?|defguardp?|defdelegate|defexception|defoverridable|exit|after|rescue|catch|else|raise|reraise|throw|import|require|alias|use|quote|unquote|super|with)\\b(?![?!:])",
+ "name": "keyword.control.elixir"
+ },
+ {
+ "comment": " as above, just doesn't need a 'end' and does a logic operation",
+ "match": "(?<!\\.)\\b(and|not|or|when|xor|in)\\b",
+ "name": "keyword.operator.elixir"
+ },
+ {
+ "match": "\\b[A-Z]\\w*\\b",
+ "name": "entity.name.type.class.elixir"
+ },
+ {
+ "match": "\\b(nil|true|false)\\b(?![?!])",
+ "name": "constant.language.elixir"
+ },
+ {
+ "match": "\\b(__(CALLER|ENV|MODULE|DIR|STACKTRACE)__)\\b(?![?!])",
+ "name": "variable.language.elixir"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.elixir"
+ }
+ },
+ "match": "(@)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.module.elixir"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.elixir"
+ }
+ },
+ "match": "(&)\\d+",
+ "name": "variable.other.anonymous.elixir"
+ },
+ {
+ "match": "&(?![&])",
+ "name": "variable.other.anonymous.elixir"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.elixir"
+ }
+ },
+ "match": "\\^[a-z_]\\w*",
+ "name": "variable.other.capture.elixir"
+ },
+ {
+ "match": "\\b0x[0-9A-Fa-f](?>_?[0-9A-Fa-f])*\\b",
+ "name": "constant.numeric.hex.elixir"
+ },
+ {
+ "match": "\\b\\d(?>_?\\d)*(\\.(?![^[:space:][:digit:]])(?>_?\\d)+)([eE][-+]?\\d(?>_?\\d)*)?\\b",
+ "name": "constant.numeric.float.elixir"
+ },
+ {
+ "match": "\\b\\d(?>_?\\d)*\\b",
+ "name": "constant.numeric.integer.elixir"
+ },
+ {
+ "match": "\\b0b[01](?>_?[01])*\\b",
+ "name": "constant.numeric.binary.elixir"
+ },
+ {
+ "match": "\\b0o[0-7](?>_?[0-7])*\\b",
+ "name": "constant.numeric.octal.elixir"
+ },
+ {
+ "begin": ":'",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.constant.elixir"
+ }
+ },
+ "end": "'",
+ "name": "constant.other.symbol.single-quoted.elixir",
+ "patterns": [
+ {
+ "include": "#interpolated_elixir"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": ":\"",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.constant.elixir"
+ }
+ },
+ "end": "\"",
+ "name": "constant.other.symbol.double-quoted.elixir",
+ "patterns": [
+ {
+ "include": "#interpolated_elixir"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?>''')",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elixir"
+ }
+ },
+ "comment": "Single-quoted heredocs",
+ "end": "^\\s*'''",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elixir"
+ }
+ },
+ "name": "string.quoted.single.heredoc.elixir",
+ "patterns": [
+ {
+ "include": "#interpolated_elixir"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elixir"
+ }
+ },
+ "comment": "single quoted string (allows for interpolation)",
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elixir"
+ }
+ },
+ "name": "string.quoted.single.elixir",
+ "patterns": [
+ {
+ "include": "#interpolated_elixir"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?>\"\"\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elixir"
+ }
+ },
+ "comment": "Double-quoted heredocs",
+ "end": "^\\s*\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elixir"
+ }
+ },
+ "name": "string.quoted.double.heredoc.elixir",
+ "patterns": [
+ {
+ "include": "#interpolated_elixir"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elixir"
+ }
+ },
+ "comment": "double quoted string (allows for interpolation)",
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elixir"
+ }
+ },
+ "name": "string.quoted.double.elixir",
+ "patterns": [
+ {
+ "include": "#interpolated_elixir"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "~[a-z](?>\"\"\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elixir"
+ }
+ },
+ "comment": "Double-quoted heredocs sigils",
+ "end": "^\\s*\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elixir"
+ }
+ },
+ "name": "string.quoted.other.sigil.heredoc.elixir",
+ "patterns": [
+ {
+ "include": "#interpolated_elixir"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "~[a-z]\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elixir"
+ }
+ },
+ "comment": "sigil (allow for interpolation)",
+ "end": "\\}[a-z]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elixir"
+ }
+ },
+ "name": "string.quoted.other.sigil.elixir",
+ "patterns": [
+ {
+ "include": "#interpolated_elixir"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "~[a-z]\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elixir"
+ }
+ },
+ "comment": "sigil (allow for interpolation)",
+ "end": "\\][a-z]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elixir"
+ }
+ },
+ "name": "string.quoted.other.sigil.elixir",
+ "patterns": [
+ {
+ "include": "#interpolated_elixir"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "~[a-z]\\<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elixir"
+ }
+ },
+ "comment": "sigil (allow for interpolation)",
+ "end": "\\>[a-z]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elixir"
+ }
+ },
+ "name": "string.quoted.other.sigil.elixir",
+ "patterns": [
+ {
+ "include": "#interpolated_elixir"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "~[a-z]\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elixir"
+ }
+ },
+ "comment": "sigil (allow for interpolation)",
+ "end": "\\)[a-z]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elixir"
+ }
+ },
+ "name": "string.quoted.other.sigil.elixir",
+ "patterns": [
+ {
+ "include": "#interpolated_elixir"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "~[a-z]([^\\w])",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elixir"
+ }
+ },
+ "comment": "sigil (allow for interpolation)",
+ "end": "\\1[a-z]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elixir"
+ }
+ },
+ "name": "string.quoted.other.sigil.elixir",
+ "patterns": [
+ {
+ "include": "#interpolated_elixir"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "~[A-Z](?>\"\"\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elixir"
+ }
+ },
+ "comment": "Double-quoted heredocs sigils",
+ "end": "^\\s*\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elixir"
+ }
+ },
+ "name": "string.quoted.other.sigil.heredoc.literal.elixir"
+ },
+ {
+ "begin": "~[A-Z]\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elixir"
+ }
+ },
+ "comment": "sigil (without interpolation)",
+ "end": "\\}[a-z]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elixir"
+ }
+ },
+ "name": "string.quoted.other.sigil.literal.elixir"
+ },
+ {
+ "begin": "~[A-Z]\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elixir"
+ }
+ },
+ "comment": "sigil (without interpolation)",
+ "end": "\\][a-z]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elixir"
+ }
+ },
+ "name": "string.quoted.other.sigil.literal.elixir"
+ },
+ {
+ "begin": "~[A-Z]\\<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elixir"
+ }
+ },
+ "comment": "sigil (without interpolation)",
+ "end": "\\>[a-z]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elixir"
+ }
+ },
+ "name": "string.quoted.other.sigil.literal.elixir"
+ },
+ {
+ "begin": "~[A-Z]\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elixir"
+ }
+ },
+ "comment": "sigil (without interpolation)",
+ "end": "\\)[a-z]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elixir"
+ }
+ },
+ "name": "string.quoted.other.sigil.literal.elixir"
+ },
+ {
+ "begin": "~[A-Z]([^\\w])",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elixir"
+ }
+ },
+ "comment": "sigil (without interpolation)",
+ "end": "\\1[a-z]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elixir"
+ }
+ },
+ "name": "string.quoted.other.sigil.literal.elixir"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.elixir"
+ }
+ },
+ "comment": "symbols",
+ "match": "(?<!:)(:)(?>[a-zA-Z_][\\w@]*(?>[?!]|=(?![>=]))?|\\<\\>|===?|!==?|<<>>|<<<|>>>|~~~|::|<\\-|\\|>|=>|=~|=|/|\\\\\\\\|\\*\\*?|\\.\\.?\\.?|\\.\\.//|>=?|<=?|&&?&?|\\+\\+?|\\-\\-?|\\|\\|?\\|?|\\!|@|\\%?\\{\\}|%|\\[\\]|\\^(\\^\\^)?)",
+ "name": "constant.other.symbol.elixir"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.elixir"
+ }
+ },
+ "comment": "symbols",
+ "match": "(?>[a-zA-Z_][\\w@]*(?>[?!])?)(:)(?!:)",
+ "name": "constant.other.keywords.elixir"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=##)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.elixir"
+ }
+ },
+ "end": "(?!#)",
+ "patterns": [
+ {
+ "begin": "##",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.elixir"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.section.elixir"
+ }
+ ]
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.elixir"
+ }
+ },
+ "end": "(?!#)",
+ "patterns": [
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.elixir"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.number-sign.elixir"
+ }
+ ]
+ },
+ {
+ "match": "\\b_([^_][\\w]+[?!]?)",
+ "name": "comment.unused.elixir"
+ },
+ {
+ "match": "\\b_\\b",
+ "name": "comment.wildcard.elixir"
+ },
+ {
+ "comment": "\n\t\t\tmatches questionmark-letters.\n\n\t\t\texamples (1st alternation = hex):\n\t\t\t?\\x1 ?\\x61\n\n\t\t\texamples (2rd alternation = escaped):\n\t\t\t?\\n ?\\b\n\n\t\t\texamples (3rd alternation = normal):\n\t\t\t?a ?A ?0\n\t\t\t?* ?\" ?(\n\t\t\t?. ?#\n\n\t\t\tthe negative lookbehind prevents against matching\n\t\t\tp(42.tainted?)\n\t\t\t",
+ "match": "(?<!\\w)\\?(\\\\(x[0-9A-Fa-f]{1,2}(?![0-9A-Fa-f])\\b|[^xMC])|[^\\s\\\\])",
+ "name": "constant.numeric.elixir"
+ },
+ {
+ "match": "\\+\\+|\\-\\-|<\\|>",
+ "name": "keyword.operator.concatenation.elixir"
+ },
+ {
+ "match": "\\|\\>|<~>|<>|<<<|>>>|~>>|<<~|~>|<~|<\\|>",
+ "name": "keyword.operator.sigils_1.elixir"
+ },
+ {
+ "match": "&&&|&&",
+ "name": "keyword.operator.sigils_2.elixir"
+ },
+ {
+ "match": "<\\-|\\\\\\\\",
+ "name": "keyword.operator.sigils_3.elixir"
+ },
+ {
+ "match": "===?|!==?|<=?|>=?",
+ "name": "keyword.operator.comparison.elixir"
+ },
+ {
+ "match": "(\\|\\|\\||&&&|\\^\\^\\^|<<<|>>>|~~~)",
+ "name": "keyword.operator.bitwise.elixir"
+ },
+ {
+ "match": "(?<=[ \\t])!+|\\bnot\\b|&&|\\band\\b|\\|\\||\\bor\\b|\\bxor\\b",
+ "name": "keyword.operator.logical.elixir"
+ },
+ {
+ "match": "(\\*|\\+|\\-|/)",
+ "name": "keyword.operator.arithmetic.elixir"
+ },
+ {
+ "match": "\\||\\+\\+|\\-\\-|\\*\\*|\\\\\\\\|\\<\\-|\\<\\>|\\<\\<|\\>\\>|\\:\\:|\\.\\.|//|\\|>|~|=>|&",
+ "name": "keyword.operator.other.elixir"
+ },
+ {
+ "match": "=",
+ "name": "keyword.operator.assignment.elixir"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.separator.other.elixir"
+ },
+ {
+ "match": "\\;",
+ "name": "punctuation.separator.statement.elixir"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.object.elixir"
+ },
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.method.elixir"
+ },
+ {
+ "match": "\\{|\\}",
+ "name": "punctuation.section.scope.elixir"
+ },
+ {
+ "match": "\\[|\\]",
+ "name": "punctuation.section.array.elixir"
+ },
+ {
+ "match": "\\(|\\)",
+ "name": "punctuation.section.function.elixir"
+ }
+ ]
+ },
+ "escaped_char": {
+ "match": "\\\\(x[\\da-fA-F]{1,2}|.)",
+ "name": "constant.character.escaped.elixir"
+ },
+ "interpolated_elixir": {
+ "begin": "#\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.elixir"
+ }
+ },
+ "contentName": "source.elixir",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.elixir"
+ }
+ },
+ "name": "meta.embedded.line.elixir",
+ "patterns": [
+ {
+ "include": "#nest_curly_and_self"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "nest_curly_and_self": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.elixir"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#nest_curly_and_self"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.elixir",
+ "uuid": "D00C06B9-71B2-4FEB-A0E3-37237F579456"
+}
diff --git a/node_modules/shiki/languages/elm.tmLanguage.json b/node_modules/shiki/languages/elm.tmLanguage.json
new file mode 100644
index 0000000..f38de1f
--- /dev/null
+++ b/node_modules/shiki/languages/elm.tmLanguage.json
@@ -0,0 +1,748 @@
+{
+ "fileTypes": ["elm"],
+ "name": "elm",
+ "scopeName": "source.elm",
+ "patterns": [
+ {
+ "include": "#import"
+ },
+ {
+ "include": "#module"
+ },
+ {
+ "include": "#debug"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "\\b(_)\\b",
+ "name": "keyword.unused.elm"
+ },
+ {
+ "include": "#type-signature"
+ },
+ {
+ "include": "#type-declaration"
+ },
+ {
+ "include": "#type-alias-declaration"
+ },
+ {
+ "include": "#string-triple"
+ },
+ {
+ "include": "#string-quote"
+ },
+ {
+ "include": "#char"
+ },
+ {
+ "comment": "Floats are always decimal",
+ "match": "\\b([0-9]+\\.[0-9]+([eE][+-]?[0-9]+)?|[0-9]+[eE][+-]?[0-9]+)\\b",
+ "name": "constant.numeric.float.elm"
+ },
+ {
+ "match": "\\b([0-9]+)\\b",
+ "name": "constant.numeric.elm"
+ },
+ {
+ "match": "\\b(0x[0-9a-fA-F]+)\\b",
+ "name": "constant.numeric.elm"
+ },
+ {
+ "include": "#glsl"
+ },
+ {
+ "include": "#record-prefix"
+ },
+ {
+ "include": "#module-prefix"
+ },
+ {
+ "include": "#constructor"
+ },
+ {
+ "name": "meta.record.field.update.elm",
+ "match": "(\\{)\\s+([a-z][a-zA-Z0-9_]*)\\s+(\\|)\\s+([a-z][a-zA-Z0-9_]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.bracket.elm"
+ },
+ "2": {
+ "name": "record.name.elm"
+ },
+ "3": {
+ "name": "keyword.pipe.elm"
+ },
+ "4": {
+ "name": "entity.name.record.field.elm"
+ }
+ }
+ },
+ {
+ "name": "meta.record.field.update.elm",
+ "match": "(\\|)\\s+([a-z][a-zA-Z0-9_]*)\\s+(\\=)",
+ "captures": {
+ "1": {
+ "name": "keyword.pipe.elm"
+ },
+ "2": {
+ "name": "entity.name.record.field.elm"
+ },
+ "3": {
+ "name": "keyword.operator.assignment.elm"
+ }
+ }
+ },
+ {
+ "name": "meta.record.field.update.elm",
+ "match": "(\\{)\\s+([a-z][a-zA-Z0-9_]*)\\s+$",
+ "captures": {
+ "1": {
+ "name": "punctuation.bracket.elm"
+ },
+ "2": {
+ "name": "record.name.elm"
+ }
+ }
+ },
+ {
+ "name": "meta.record.field.elm",
+ "match": "(\\{)\\s+([a-z][a-zA-Z0-9_]*)\\s+(\\=)",
+ "captures": {
+ "1": {
+ "name": "punctuation.bracket.elm"
+ },
+ "2": {
+ "name": "entity.name.record.field.elm"
+ },
+ "3": {
+ "name": "keyword.operator.assignment.elm"
+ }
+ }
+ },
+ {
+ "name": "meta.record.field.elm",
+ "match": "(,)\\s+([a-z][a-zA-Z0-9_]*)\\s+(\\=)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.comma.elm"
+ },
+ "2": {
+ "name": "entity.name.record.field.elm"
+ },
+ "3": {
+ "name": "keyword.operator.assignment.elm"
+ }
+ }
+ },
+ {
+ "match": "(\\}|\\{)",
+ "name": "punctuation.bracket.elm"
+ },
+ {
+ "include": "#unit"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#parens"
+ },
+ {
+ "match": "(->)",
+ "name": "keyword.operator.arrow.elm"
+ },
+ {
+ "include": "#infix_op"
+ },
+ {
+ "match": "(\\=|\\:|\\||\\\\)",
+ "name": "keyword.other.elm"
+ },
+ {
+ "match": "\\b(type|as|port|exposing|alias|infixl|infixr|infix)\\s+",
+ "name": "keyword.other.elm"
+ },
+ {
+ "match": "\\b(if|then|else|case|of|let|in)\\s+",
+ "name": "keyword.control.elm"
+ },
+ {
+ "include": "#record-accessor"
+ },
+ {
+ "include": "#top_level_value"
+ },
+ {
+ "include": "#value"
+ },
+ {
+ "include": "#period"
+ },
+ {
+ "include": "#square_brackets"
+ }
+ ],
+ "repository": {
+ "comma": {
+ "match": "(,)",
+ "name": "punctuation.separator.comma.elm"
+ },
+ "parens": {
+ "match": "(\\(|\\))",
+ "name": "punctuation.parens.elm"
+ },
+ "block_comment": {
+ "applyEndPatternLast": 1,
+ "begin": "\\{-(?!#)",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.elm"
+ }
+ },
+ "end": "-\\}",
+ "name": "comment.block.elm",
+ "patterns": [
+ {
+ "include": "#block_comment"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.elm"
+ }
+ },
+ "begin": "--",
+ "end": "$",
+ "name": "comment.line.double-dash.elm"
+ },
+ {
+ "include": "#block_comment"
+ }
+ ]
+ },
+ "import": {
+ "name": "meta.import.elm",
+ "begin": "^\\b(import)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.import.elm"
+ }
+ },
+ "end": "\\n(?!\\s)",
+ "patterns": [
+ {
+ "match": "(as|exposing)",
+ "name": "keyword.control.elm"
+ },
+ {
+ "include": "#module_chunk"
+ },
+ {
+ "include": "#period"
+ },
+ {
+ "match": "\\s+",
+ "name": "punctuation.spaces.elm"
+ },
+ {
+ "include": "#module-exports"
+ }
+ ]
+ },
+ "module": {
+ "begin": "^\\b((port |effect )?module)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.elm"
+ }
+ },
+ "end": "\\n(?!\\s)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.other.elm"
+ }
+ },
+ "name": "meta.declaration.module.elm",
+ "patterns": [
+ {
+ "include": "#module_chunk"
+ },
+ {
+ "include": "#period"
+ },
+ {
+ "match": "(exposing)",
+ "name": "keyword.other.elm"
+ },
+ {
+ "match": "\\s+",
+ "name": "punctuation.spaces.elm"
+ },
+ {
+ "include": "#module-exports"
+ }
+ ]
+ },
+ "string-triple": {
+ "name": "string.quoted.triple.elm",
+ "begin": "\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elm"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elm"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&]|x[0-9a-fA-F]{1,5})",
+ "name": "constant.character.escape.elm"
+ },
+ {
+ "match": "\\^[A-Z@\\[\\]\\\\\\^_]",
+ "name": "constant.character.escape.control.elm"
+ }
+ ]
+ },
+ "string-quote": {
+ "name": "string.quoted.double.elm",
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.elm"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.elm"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&]|x[0-9a-fA-F]{1,5})",
+ "name": "constant.character.escape.elm"
+ },
+ {
+ "match": "\\^[A-Z@\\[\\]\\\\\\^_]",
+ "name": "constant.character.escape.control.elm"
+ }
+ ]
+ },
+ "char": {
+ "name": "string.quoted.single.elm",
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.char.begin.elm"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.char.end.elm"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&]|x[0-9a-fA-F]{1,5})",
+ "name": "constant.character.escape.elm"
+ },
+ {
+ "match": "\\^[A-Z@\\[\\]\\\\\\^_]",
+ "name": "constant.character.escape.control.elm"
+ }
+ ]
+ },
+ "debug": {
+ "match": "\\b(Debug)\\b",
+ "name": "invalid.illegal.debug.elm"
+ },
+ "module-exports": {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.parens.module-export.elm"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.parens.module-export.elm"
+ }
+ },
+ "name": "meta.declaration.exports.elm",
+ "patterns": [
+ {
+ "match": "\\b[a-z][a-zA-Z_'0-9]*",
+ "name": "entity.name.function.elm"
+ },
+ {
+ "match": "\\b[A-Z][A-Za-z_'0-9]*",
+ "name": "storage.type.elm"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.comma.elm"
+ },
+ {
+ "match": "\\s+",
+ "name": "punctuation.spaces.elm"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "match": "\\(\\.\\.\\)",
+ "name": "punctuation.parens.ellipses.elm"
+ },
+ {
+ "match": "\\.\\.",
+ "name": "punctuation.parens.ellipses.elm"
+ },
+ {
+ "include": "#infix_op"
+ },
+ {
+ "comment": "So named because I don't know what to call this.",
+ "match": "\\(.*?\\)",
+ "name": "meta.other.unknown.elm"
+ }
+ ]
+ },
+ "module_chunk": {
+ "match": "[A-Z][a-zA-Z0-9_]*",
+ "name": "support.module.elm"
+ },
+ "period": {
+ "match": "[.]",
+ "name": "keyword.other.period.elm"
+ },
+ "square_brackets": {
+ "match": "[\\[\\]]",
+ "name": "punctuation.definition.list.elm"
+ },
+ "record-prefix": {
+ "match": "([a-z][a-zA-Z0-9_]*)(\\.)([a-z][a-zA-Z0-9_]*)",
+ "name": "record.accessor.elm",
+ "captures": {
+ "1": {
+ "name": "record.name.elm"
+ },
+ "2": {
+ "name": "keyword.other.period.elm"
+ },
+ "3": {
+ "name": "entity.name.record.field.accessor.elm"
+ }
+ }
+ },
+ "module-prefix": {
+ "match": "([A-Z][a-zA-Z0-9_]*)(\\.)",
+ "name": "meta.module.name.elm",
+ "captures": {
+ "1": {
+ "name": "support.module.elm"
+ },
+ "2": {
+ "name": "keyword.other.period.elm"
+ }
+ }
+ },
+ "constructor": {
+ "match": "\\b[A-Z][a-zA-Z0-9_]*\\b",
+ "name": "constant.type-constructor.elm"
+ },
+ "value": {
+ "match": "\\b[a-z][a-zA-Z0-9_]*\\b",
+ "name": "meta.value.elm"
+ },
+ "unit": {
+ "match": "\\(\\)",
+ "name": "constant.unit.elm"
+ },
+ "top_level_value": {
+ "match": "^[a-z][a-zA-Z0-9_]*\\b",
+ "name": "entity.name.function.top_level.elm"
+ },
+ "record-accessor": {
+ "match": "(\\.)([a-z][a-zA-Z0-9_]*)",
+ "name": "meta.record.accessor",
+ "captures": {
+ "1": {
+ "name": "keyword.other.period.elm"
+ },
+ "2": {
+ "name": "entity.name.record.field.accessor.elm"
+ }
+ }
+ },
+ "infix_op": {
+ "match": "(</>|<\\?>|<\\||<=|\\|\\||&&|>=|\\|>|\\|=|\\|\\.|\\+\\+|::|/=|==|//|>>|<<|<|>|\\^|\\+|-|/|\\*)",
+ "name": "keyword.operator.elm"
+ },
+ "type-declaration": {
+ "begin": "^(type\\s+)([A-Z][a-zA-Z0-9_']*)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.type.elm"
+ },
+ "2": {
+ "name": "storage.type.elm"
+ }
+ },
+ "end": "^(?=\\S)",
+ "name": "meta.function.type-declaration.elm",
+ "patterns": [
+ {
+ "name": "meta.record.field.elm",
+ "match": "^\\s*([A-Z][a-zA-Z0-9_]*)\\b",
+ "captures": {
+ "1": {
+ "name": "constant.type-constructor.elm"
+ }
+ }
+ },
+ {
+ "match": "\\s+",
+ "name": "punctuation.spaces.elm"
+ },
+ {
+ "name": "meta.record.field.elm",
+ "match": "(\\=|\\|)\\s+([A-Z][a-zA-Z0-9_]*)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.elm"
+ },
+ "2": {
+ "name": "constant.type-constructor.elm"
+ }
+ }
+ },
+ {
+ "match": "\\=",
+ "name": "keyword.operator.assignment.elm"
+ },
+ {
+ "match": "\\-\\>",
+ "name": "keyword.operator.arrow.elm"
+ },
+ {
+ "include": "#module-prefix"
+ },
+ {
+ "match": "\\b[a-z][a-zA-Z0-9_]*\\b",
+ "name": "variable.type.elm"
+ },
+ {
+ "match": "\\b[A-Z][a-zA-Z0-9_]*\\b",
+ "name": "storage.type.elm"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#type-record"
+ }
+ ]
+ },
+ "type-alias-declaration": {
+ "begin": "^(type\\s+)(alias\\s+)([A-Z][a-zA-Z0-9_']*)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.type.elm"
+ },
+ "2": {
+ "name": "keyword.type-alias.elm"
+ },
+ "3": {
+ "name": "storage.type.elm"
+ }
+ },
+ "end": "^(?=\\S)",
+ "name": "meta.function.type-declaration.elm",
+ "patterns": [
+ {
+ "match": "\\n\\s+",
+ "name": "punctuation.spaces.elm"
+ },
+ {
+ "match": "\\=",
+ "name": "keyword.operator.assignment.elm"
+ },
+ {
+ "include": "#module-prefix"
+ },
+ {
+ "match": "\\b[A-Z][a-zA-Z0-9_]*\\b",
+ "name": "storage.type.elm"
+ },
+ {
+ "match": "\\b[a-z][a-zA-Z0-9_]*\\b",
+ "name": "variable.type.elm"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#type-record"
+ }
+ ]
+ },
+ "type-record": {
+ "begin": "(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.braces.begin"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.braces.end"
+ }
+ },
+ "name": "meta.function.type-record.elm",
+ "patterns": [
+ {
+ "match": "\\s+",
+ "name": "punctuation.spaces.elm"
+ },
+ {
+ "match": "->",
+ "name": "keyword.operator.arrow.elm"
+ },
+ {
+ "name": "meta.record.field.elm",
+ "match": "([a-z][a-zA-Z0-9_]*)\\s+(\\:)",
+ "captures": {
+ "1": {
+ "name": "entity.name.record.field.elm"
+ },
+ "2": {
+ "name": "keyword.other.elm"
+ }
+ }
+ },
+ {
+ "match": "\\,",
+ "name": "punctuation.separator.comma.elm"
+ },
+ {
+ "include": "#module-prefix"
+ },
+ {
+ "match": "\\b[a-z][a-zA-Z0-9_]*\\b",
+ "name": "variable.type.elm"
+ },
+ {
+ "match": "\\b[A-Z][a-zA-Z0-9_]*\\b",
+ "name": "storage.type.elm"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#type-record"
+ }
+ ]
+ },
+ "type-signature": {
+ "begin": "^(port\\s+)?([a-z_][a-zA-Z0-9_']*)\\s+(\\:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.port.elm"
+ },
+ "2": {
+ "name": "entity.name.function.elm"
+ },
+ "3": {
+ "name": "keyword.other.colon.elm"
+ }
+ },
+ "end": "((^(?=[a-z]))|^$)",
+ "name": "meta.function.type-declaration.elm",
+ "patterns": [
+ {
+ "include": "#type-signature-chunk"
+ }
+ ]
+ },
+ "type-signature-chunk": {
+ "patterns": [
+ {
+ "match": "->",
+ "name": "keyword.operator.arrow.elm"
+ },
+ {
+ "match": "\\s+",
+ "name": "punctuation.spaces.elm"
+ },
+ {
+ "include": "#module-prefix"
+ },
+ {
+ "match": "\\b[a-z][a-zA-Z0-9_]*\\b",
+ "name": "variable.type.elm"
+ },
+ {
+ "match": "\\b[A-Z][a-zA-Z0-9_]*\\b",
+ "name": "storage.type.elm"
+ },
+ {
+ "match": "\\(\\)",
+ "name": "constant.unit.elm"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#type-record"
+ }
+ ]
+ },
+ "glsl": {
+ "begin": "(\\[)(glsl)(\\|)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.glsl.bracket.elm"
+ },
+ "2": {
+ "name": "entity.glsl.name.elm"
+ },
+ "3": {
+ "name": "entity.glsl.bracket.elm"
+ }
+ },
+ "end": "(\\|\\])",
+ "endCaptures": {
+ "1": {
+ "name": "entity.glsl.bracket.elm"
+ }
+ },
+ "name": "meta.embedded.block.glsl",
+ "patterns": [
+ {
+ "include": "source.glsl"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/erb.tmLanguage.json b/node_modules/shiki/languages/erb.tmLanguage.json
new file mode 100644
index 0000000..c1d8421
--- /dev/null
+++ b/node_modules/shiki/languages/erb.tmLanguage.json
@@ -0,0 +1,153 @@
+{
+ "fileTypes": ["erb", "rhtml", "html.erb"],
+ "injections": {
+ "text.html.erb - (meta.embedded.block.erb | meta.embedded.line.erb | comment)": {
+ "patterns": [
+ {
+ "begin": "(^\\s*)(?=<%+#(?![^%]*%>))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.comment.leading.erb"
+ }
+ },
+ "end": "(?!\\G)(\\s*$\\n)?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.comment.trailing.erb"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "begin": "(^\\s*)(?=<%(?![^%]*%>))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.leading.erb"
+ }
+ },
+ "end": "(?!\\G)(\\s*$\\n)?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.trailing.erb"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tags"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#tags"
+ }
+ ]
+ }
+ },
+ "keyEquivalent": "^~H",
+ "name": "erb",
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ }
+ ],
+ "repository": {
+ "comment": {
+ "patterns": [
+ {
+ "begin": "<%+#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.erb"
+ }
+ },
+ "end": "%>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.erb"
+ }
+ },
+ "name": "comment.block.erb"
+ }
+ ]
+ },
+ "tags": {
+ "patterns": [
+ {
+ "begin": "<%+(?!>)[-=]?(?![^%]*%>)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.erb"
+ }
+ },
+ "contentName": "source.ruby",
+ "end": "(-?%)>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.erb"
+ },
+ "1": {
+ "name": "source.ruby"
+ }
+ },
+ "name": "meta.embedded.block.erb",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.erb"
+ }
+ },
+ "match": "(#).*?(?=-?%>)",
+ "name": "comment.line.number-sign.erb"
+ },
+ {
+ "include": "source.ruby"
+ }
+ ]
+ },
+ {
+ "begin": "<%+(?!>)[-=]?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.erb"
+ }
+ },
+ "contentName": "source.ruby",
+ "end": "(-?%)>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.erb"
+ },
+ "1": {
+ "name": "source.ruby"
+ }
+ },
+ "name": "meta.embedded.line.erb",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.erb"
+ }
+ },
+ "match": "(#).*?(?=-?%>)",
+ "name": "comment.line.number-sign.erb"
+ },
+ {
+ "include": "source.ruby"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "scopeName": "text.html.erb",
+ "uuid": "13FF9439-15D0-4E74-9A8E-83ABF0BAA5E7"
+}
diff --git a/node_modules/shiki/languages/erlang.tmLanguage.json b/node_modules/shiki/languages/erlang.tmLanguage.json
new file mode 100644
index 0000000..8a366bb
--- /dev/null
+++ b/node_modules/shiki/languages/erlang.tmLanguage.json
@@ -0,0 +1,1730 @@
+{
+ "comment": "The recognition of function definitions and compiler directives (such as module, record and macro definitions) requires that each of the aforementioned constructs must be the first string inside a line (except for whitespace). Also, the function/module/record/macro names must be given unquoted. -- desp",
+ "fileTypes": ["erl", "escript", "hrl", "xrl", "yrl"],
+ "keyEquivalent": "^~E",
+ "name": "erlang",
+ "patterns": [
+ {
+ "include": "#module-directive"
+ },
+ {
+ "include": "#import-export-directive"
+ },
+ {
+ "include": "#behaviour-directive"
+ },
+ {
+ "include": "#record-directive"
+ },
+ {
+ "include": "#define-directive"
+ },
+ {
+ "include": "#macro-directive"
+ },
+ {
+ "include": "#directive"
+ },
+ {
+ "include": "#function"
+ },
+ {
+ "include": "#everything-else"
+ }
+ ],
+ "repository": {
+ "atom": {
+ "patterns": [
+ {
+ "begin": "(')",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.symbol.begin.erlang"
+ }
+ },
+ "end": "(')",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.symbol.end.erlang"
+ }
+ },
+ "name": "constant.other.symbol.quoted.single.erlang",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.escape.erlang"
+ },
+ "3": {
+ "name": "punctuation.definition.escape.erlang"
+ }
+ },
+ "match": "(\\\\)([bdefnrstv\\\\'\"]|(\\^)[@-_a-z]|[0-7]{1,3}|x[\\da-fA-F]{2})",
+ "name": "constant.other.symbol.escape.erlang"
+ },
+ {
+ "match": "\\\\\\^?.?",
+ "name": "invalid.illegal.atom.erlang"
+ }
+ ]
+ },
+ {
+ "match": "[a-z][a-zA-Z\\d@_]*+",
+ "name": "constant.other.symbol.unquoted.erlang"
+ }
+ ]
+ },
+ "behaviour-directive": {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.directive.begin.erlang"
+ },
+ "2": {
+ "name": "keyword.control.directive.behaviour.erlang"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.erlang"
+ },
+ "4": {
+ "name": "entity.name.type.class.behaviour.definition.erlang"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.end.erlang"
+ },
+ "6": {
+ "name": "punctuation.section.directive.end.erlang"
+ }
+ },
+ "match": "^\\s*+(-)\\s*+(behaviour)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\))\\s*+(\\.)",
+ "name": "meta.directive.behaviour.erlang"
+ },
+ "binary": {
+ "begin": "(<<)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.binary.begin.erlang"
+ }
+ },
+ "end": "(>>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.binary.end.erlang"
+ }
+ },
+ "name": "meta.structure.binary.erlang",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.binary.erlang"
+ },
+ "2": {
+ "name": "punctuation.separator.value-size.erlang"
+ }
+ },
+ "match": "(,)|(:)"
+ },
+ {
+ "include": "#internal-type-specifiers"
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ "character": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.character.erlang"
+ },
+ "2": {
+ "name": "constant.character.escape.erlang"
+ },
+ "3": {
+ "name": "punctuation.definition.escape.erlang"
+ },
+ "5": {
+ "name": "punctuation.definition.escape.erlang"
+ }
+ },
+ "match": "(\\$)((\\\\)([bdefnrstv\\\\'\"]|(\\^)[@-_a-z]|[0-7]{1,3}|x[\\da-fA-F]{2}))",
+ "name": "constant.character.erlang"
+ },
+ {
+ "match": "\\$\\\\\\^?.?",
+ "name": "invalid.illegal.character.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.character.erlang"
+ }
+ },
+ "match": "(\\$)[ \\S]",
+ "name": "constant.character.erlang"
+ },
+ {
+ "match": "\\$.?",
+ "name": "invalid.illegal.character.erlang"
+ }
+ ]
+ },
+ "comment": {
+ "begin": "(^[ \\t]+)?(?=%)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.erlang"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "%",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.erlang"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.percentage.erlang"
+ }
+ ]
+ },
+ "define-directive": {
+ "patterns": [
+ {
+ "begin": "^\\s*+(-)\\s*+(define)\\s*+(\\()\\s*+([a-zA-Z\\d@_]++)\\s*+",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.directive.begin.erlang"
+ },
+ "2": {
+ "name": "keyword.control.directive.define.erlang"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.erlang"
+ },
+ "4": {
+ "name": "entity.name.function.macro.definition.erlang"
+ }
+ },
+ "end": "(\\))\\s*+(\\.)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.erlang"
+ },
+ "2": {
+ "name": "punctuation.section.directive.end.erlang"
+ }
+ },
+ "name": "meta.directive.define.erlang",
+ "patterns": [
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ {
+ "begin": "(?=^\\s*+-\\s*+define\\s*+\\(\\s*+[a-zA-Z\\d@_]++\\s*+\\()",
+ "end": "(\\))\\s*+(\\.)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.erlang"
+ },
+ "2": {
+ "name": "punctuation.section.directive.end.erlang"
+ }
+ },
+ "name": "meta.directive.define.erlang",
+ "patterns": [
+ {
+ "begin": "^\\s*+(-)\\s*+(define)\\s*+(\\()\\s*+([a-zA-Z\\d@_]++)\\s*+(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.directive.begin.erlang"
+ },
+ "2": {
+ "name": "keyword.control.directive.define.erlang"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.erlang"
+ },
+ "4": {
+ "name": "entity.name.function.macro.definition.erlang"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.begin.erlang"
+ }
+ },
+ "end": "(\\))\\s*(,)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.erlang"
+ },
+ "2": {
+ "name": "punctuation.separator.parameters.erlang"
+ }
+ },
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.separator.parameters.erlang"
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ {
+ "match": "\\|\\||\\||:|;|,|\\.|->",
+ "name": "punctuation.separator.define.erlang"
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ }
+ ]
+ },
+ "directive": {
+ "patterns": [
+ {
+ "begin": "^\\s*+(-)\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\(?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.directive.begin.erlang"
+ },
+ "2": {
+ "name": "keyword.control.directive.erlang"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.erlang"
+ }
+ },
+ "end": "(\\)?)\\s*+(\\.)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.erlang"
+ },
+ "2": {
+ "name": "punctuation.section.directive.end.erlang"
+ }
+ },
+ "name": "meta.directive.erlang",
+ "patterns": [
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.directive.begin.erlang"
+ },
+ "2": {
+ "name": "keyword.control.directive.erlang"
+ },
+ "3": {
+ "name": "punctuation.section.directive.end.erlang"
+ }
+ },
+ "match": "^\\s*+(-)\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\.)",
+ "name": "meta.directive.erlang"
+ }
+ ]
+ },
+ "everything-else": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#record-usage"
+ },
+ {
+ "include": "#macro-usage"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#textual-operator"
+ },
+ {
+ "include": "#language-constant"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "include": "#tuple"
+ },
+ {
+ "include": "#list"
+ },
+ {
+ "include": "#binary"
+ },
+ {
+ "include": "#parenthesized-expression"
+ },
+ {
+ "include": "#character"
+ },
+ {
+ "include": "#number"
+ },
+ {
+ "include": "#atom"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#symbolic-operator"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ "expression": {
+ "patterns": [
+ {
+ "begin": "\\b(if)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.if.erlang"
+ }
+ },
+ "end": "\\b(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.erlang"
+ }
+ },
+ "name": "meta.expression.if.erlang",
+ "patterns": [
+ {
+ "include": "#internal-expression-punctuation"
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(case)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.case.erlang"
+ }
+ },
+ "end": "\\b(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.erlang"
+ }
+ },
+ "name": "meta.expression.case.erlang",
+ "patterns": [
+ {
+ "include": "#internal-expression-punctuation"
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(receive)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.receive.erlang"
+ }
+ },
+ "end": "\\b(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.erlang"
+ }
+ },
+ "name": "meta.expression.receive.erlang",
+ "patterns": [
+ {
+ "include": "#internal-expression-punctuation"
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.fun.erlang"
+ },
+ "4": {
+ "name": "entity.name.type.class.module.erlang"
+ },
+ "5": {
+ "name": "variable.other.erlang"
+ },
+ "6": {
+ "name": "punctuation.separator.module-function.erlang"
+ },
+ "8": {
+ "name": "entity.name.function.erlang"
+ },
+ "9": {
+ "name": "variable.other.erlang"
+ },
+ "10": {
+ "name": "punctuation.separator.function-arity.erlang"
+ }
+ },
+ "comment": "Implicit function expression with optional module qualifier when both module and function can be atom or variable",
+ "match": "\\b(fun)\\s+((([a-z][a-zA-Z\\d@_]*+)|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*+(:)\\s*+)?(([a-z][a-zA-Z\\d@_]*+|'[^']*+')|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*(/)",
+ "name": "meta.expression.fun.implicit.erlang"
+ },
+ {
+ "begin": "\\b(fun)\\s+(([a-z][a-zA-Z\\d@_]*+)|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*+(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.fun.erlang"
+ },
+ "3": {
+ "name": "entity.name.type.class.module.erlang"
+ },
+ "4": {
+ "name": "variable.other.erlang"
+ },
+ "5": {
+ "name": "punctuation.separator.module-function.erlang"
+ }
+ },
+ "comment": "Implicit function expression with module qualifier when module can be atom or variable and function can by anything",
+ "end": "(/)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.function-arity.erlang"
+ }
+ },
+ "name": "meta.expression.fun.implicit.erlang",
+ "patterns": [
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(fun)\\s+(?!\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.fun.erlang"
+ }
+ },
+ "comment": "Implicit function expression when both module and function can by anything",
+ "end": "(/)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.function-arity.erlang"
+ }
+ },
+ "name": "meta.expression.fun.implicit.erlang",
+ "patterns": [
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(fun)\\s*+(\\()(?=(\\s*+\\())",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.erlang"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.erlang"
+ }
+ },
+ "comment": "Function type in type specification",
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.erlang"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(fun)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.fun.erlang"
+ }
+ },
+ "comment": "Explicit function expression",
+ "end": "\\b(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.erlang"
+ }
+ },
+ "name": "meta.expression.fun.erlang",
+ "patterns": [
+ {
+ "begin": "(?=\\()",
+ "end": "(;)|(?=\\bend\\b)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.clauses.erlang"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#internal-function-parts"
+ }
+ ]
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(try)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.try.erlang"
+ }
+ },
+ "end": "\\b(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.erlang"
+ }
+ },
+ "name": "meta.expression.try.erlang",
+ "patterns": [
+ {
+ "include": "#internal-expression-punctuation"
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(begin)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.begin.erlang"
+ }
+ },
+ "end": "\\b(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.erlang"
+ }
+ },
+ "name": "meta.expression.begin.erlang",
+ "patterns": [
+ {
+ "include": "#internal-expression-punctuation"
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ }
+ ]
+ },
+ "function": {
+ "begin": "^\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.definition.erlang"
+ }
+ },
+ "end": "(\\.)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.function.erlang"
+ }
+ },
+ "name": "meta.function.erlang",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "entity.name.function.erlang"
+ }
+ },
+ "match": "^\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(?=\\()"
+ },
+ {
+ "begin": "(?=\\()",
+ "end": "(;)|(?=\\.)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.clauses.erlang"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parenthesized-expression"
+ },
+ {
+ "include": "#internal-function-parts"
+ }
+ ]
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ "function-call": {
+ "begin": "(?=([a-z][a-zA-Z\\d@_]*+|'[^']*+'|_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+)\\s*+(\\(|:\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+'|_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+)\\s*+\\())",
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.erlang"
+ }
+ },
+ "name": "meta.function-call.erlang",
+ "patterns": [
+ {
+ "begin": "((erlang)\\s*+(:)\\s*+)?(is_atom|is_binary|is_constant|is_float|is_function|is_integer|is_list|is_number|is_pid|is_port|is_reference|is_tuple|is_record|abs|element|hd|length|node|round|self|size|tl|trunc)\\s*+(\\()",
+ "beginCaptures": {
+ "2": {
+ "name": "entity.name.type.class.module.erlang"
+ },
+ "3": {
+ "name": "punctuation.separator.module-function.erlang"
+ },
+ "4": {
+ "name": "entity.name.function.guard.erlang"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.begin.erlang"
+ }
+ },
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.separator.parameters.erlang"
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ {
+ "begin": "((([a-z][a-zA-Z\\d@_]*+|'[^']*+')|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*+(:)\\s*+)?(([a-z][a-zA-Z\\d@_]*+|'[^']*+')|(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+))\\s*+(\\()",
+ "beginCaptures": {
+ "3": {
+ "name": "entity.name.type.class.module.erlang"
+ },
+ "4": {
+ "name": "variable.other.erlang"
+ },
+ "5": {
+ "name": "punctuation.separator.module-function.erlang"
+ },
+ "7": {
+ "name": "entity.name.function.erlang"
+ },
+ "8": {
+ "name": "variable.other.erlang"
+ },
+ "9": {
+ "name": "punctuation.definition.parameters.begin.erlang"
+ }
+ },
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.separator.parameters.erlang"
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ }
+ ]
+ },
+ "import-export-directive": {
+ "patterns": [
+ {
+ "begin": "^\\s*+(-)\\s*+(import)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(,)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.directive.begin.erlang"
+ },
+ "2": {
+ "name": "keyword.control.directive.import.erlang"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.erlang"
+ },
+ "4": {
+ "name": "entity.name.type.class.module.erlang"
+ },
+ "5": {
+ "name": "punctuation.separator.parameters.erlang"
+ }
+ },
+ "end": "(\\))\\s*+(\\.)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.erlang"
+ },
+ "2": {
+ "name": "punctuation.section.directive.end.erlang"
+ }
+ },
+ "name": "meta.directive.import.erlang",
+ "patterns": [
+ {
+ "include": "#internal-function-list"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*+(-)\\s*+(export)\\s*+(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.directive.begin.erlang"
+ },
+ "2": {
+ "name": "keyword.control.directive.export.erlang"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.erlang"
+ }
+ },
+ "end": "(\\))\\s*+(\\.)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.erlang"
+ },
+ "2": {
+ "name": "punctuation.section.directive.end.erlang"
+ }
+ },
+ "name": "meta.directive.export.erlang",
+ "patterns": [
+ {
+ "include": "#internal-function-list"
+ }
+ ]
+ }
+ ]
+ },
+ "internal-expression-punctuation": {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.clause-head-body.erlang"
+ },
+ "2": {
+ "name": "punctuation.separator.clauses.erlang"
+ },
+ "3": {
+ "name": "punctuation.separator.expressions.erlang"
+ }
+ },
+ "match": "(->)|(;)|(,)"
+ },
+ "internal-function-list": {
+ "begin": "(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.list.begin.erlang"
+ }
+ },
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.list.end.erlang"
+ }
+ },
+ "name": "meta.structure.list.function.erlang",
+ "patterns": [
+ {
+ "begin": "([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(/)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.erlang"
+ },
+ "2": {
+ "name": "punctuation.separator.function-arity.erlang"
+ }
+ },
+ "end": "(,)|(?=\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.list.erlang"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ "internal-function-parts": {
+ "patterns": [
+ {
+ "begin": "(?=\\()",
+ "end": "(->)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.clause-head-body.erlang"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.begin.erlang"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.erlang"
+ }
+ },
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.separator.parameters.erlang"
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ {
+ "match": ",|;",
+ "name": "punctuation.separator.guards.erlang"
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.expressions.erlang"
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ "internal-record-body": {
+ "begin": "(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.class.record.begin.erlang"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.class.record.end.erlang"
+ }
+ },
+ "name": "meta.structure.record.erlang",
+ "patterns": [
+ {
+ "begin": "(([a-z][a-zA-Z\\d@_]*+|'[^']*+')|(_))",
+ "beginCaptures": {
+ "2": {
+ "name": "variable.other.field.erlang"
+ },
+ "3": {
+ "name": "variable.language.omitted.field.erlang"
+ }
+ },
+ "end": "(,)|(?=\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.class.record.erlang"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ "internal-type-specifiers": {
+ "begin": "(/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.value-type.erlang"
+ }
+ },
+ "end": "(?=,|:|>>)",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.erlang"
+ },
+ "2": {
+ "name": "storage.modifier.signedness.erlang"
+ },
+ "3": {
+ "name": "storage.modifier.endianness.erlang"
+ },
+ "4": {
+ "name": "storage.modifier.unit.erlang"
+ },
+ "5": {
+ "name": "punctuation.separator.unit-specifiers.erlang"
+ },
+ "6": {
+ "name": "constant.numeric.integer.decimal.erlang"
+ },
+ "7": {
+ "name": "punctuation.separator.type-specifiers.erlang"
+ }
+ },
+ "match": "(integer|float|binary|bytes|bitstring|bits|utf8|utf16|utf32)|(signed|unsigned)|(big|little|native)|(unit)(:)(\\d++)|(-)"
+ }
+ ]
+ },
+ "keyword": {
+ "match": "\\b(after|begin|case|catch|cond|end|fun|if|let|of|try|receive|when)\\b",
+ "name": "keyword.control.erlang"
+ },
+ "language-constant": {
+ "match": "\\b(false|true|undefined)\\b",
+ "name": "constant.language"
+ },
+ "list": {
+ "begin": "(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.list.begin.erlang"
+ }
+ },
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.list.end.erlang"
+ }
+ },
+ "name": "meta.structure.list.erlang",
+ "patterns": [
+ {
+ "match": "\\||\\|\\||,",
+ "name": "punctuation.separator.list.erlang"
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ "macro-directive": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.directive.begin.erlang"
+ },
+ "2": {
+ "name": "keyword.control.directive.ifdef.erlang"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.erlang"
+ },
+ "4": {
+ "name": "entity.name.function.macro.erlang"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.end.erlang"
+ },
+ "6": {
+ "name": "punctuation.section.directive.end.erlang"
+ }
+ },
+ "match": "^\\s*+(-)\\s*+(ifdef)\\s*+(\\()\\s*+([a-zA-z\\d@_]++)\\s*+(\\))\\s*+(\\.)",
+ "name": "meta.directive.ifdef.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.directive.begin.erlang"
+ },
+ "2": {
+ "name": "keyword.control.directive.ifndef.erlang"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.erlang"
+ },
+ "4": {
+ "name": "entity.name.function.macro.erlang"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.end.erlang"
+ },
+ "6": {
+ "name": "punctuation.section.directive.end.erlang"
+ }
+ },
+ "match": "^\\s*+(-)\\s*+(ifndef)\\s*+(\\()\\s*+([a-zA-z\\d@_]++)\\s*+(\\))\\s*+(\\.)",
+ "name": "meta.directive.ifndef.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.directive.begin.erlang"
+ },
+ "2": {
+ "name": "keyword.control.directive.undef.erlang"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.erlang"
+ },
+ "4": {
+ "name": "entity.name.function.macro.erlang"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.end.erlang"
+ },
+ "6": {
+ "name": "punctuation.section.directive.end.erlang"
+ }
+ },
+ "match": "^\\s*+(-)\\s*+(undef)\\s*+(\\()\\s*+([a-zA-z\\d@_]++)\\s*+(\\))\\s*+(\\.)",
+ "name": "meta.directive.undef.erlang"
+ }
+ ]
+ },
+ "macro-usage": {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.macro.erlang"
+ },
+ "2": {
+ "name": "entity.name.function.macro.erlang"
+ }
+ },
+ "match": "(\\?\\??)\\s*+([a-zA-Z\\d@_]++)",
+ "name": "meta.macro-usage.erlang"
+ },
+ "module-directive": {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.directive.begin.erlang"
+ },
+ "2": {
+ "name": "keyword.control.directive.module.erlang"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.erlang"
+ },
+ "4": {
+ "name": "entity.name.type.class.module.definition.erlang"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.end.erlang"
+ },
+ "6": {
+ "name": "punctuation.section.directive.end.erlang"
+ }
+ },
+ "match": "^\\s*+(-)\\s*+(module)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+)\\s*+(\\))\\s*+(\\.)",
+ "name": "meta.directive.module.erlang"
+ },
+ "number": {
+ "begin": "(?=\\d)",
+ "end": "(?!\\d)",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.integer-float.erlang"
+ },
+ "2": {
+ "name": "punctuation.separator.float-exponent.erlang"
+ }
+ },
+ "match": "\\d++(\\.)\\d++([eE][\\+\\-]?\\d++)?",
+ "name": "constant.numeric.float.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "2(#)([0-1]++_)*[0-1]++",
+ "name": "constant.numeric.integer.binary.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "3(#)([0-2]++_)*[0-2]++",
+ "name": "constant.numeric.integer.base-3.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "4(#)([0-3]++_)*[0-3]++",
+ "name": "constant.numeric.integer.base-4.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "5(#)([0-4]++_)*[0-4]++",
+ "name": "constant.numeric.integer.base-5.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "6(#)([0-5]++_)*[0-5]++",
+ "name": "constant.numeric.integer.base-6.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "7(#)([0-6]++_)*[0-6]++",
+ "name": "constant.numeric.integer.base-7.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "8(#)([0-7]++_)*[0-7]++",
+ "name": "constant.numeric.integer.octal.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "9(#)([0-8]++_)*[0-8]++",
+ "name": "constant.numeric.integer.base-9.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "10(#)(\\d++_)*\\d++",
+ "name": "constant.numeric.integer.decimal.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "11(#)([\\daA]++_)*[\\daA]++",
+ "name": "constant.numeric.integer.base-11.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "12(#)([\\da-bA-B]++_)*[\\da-bA-B]++",
+ "name": "constant.numeric.integer.base-12.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "13(#)([\\da-cA-C]++_)*[\\da-cA-C]++",
+ "name": "constant.numeric.integer.base-13.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "14(#)([\\da-dA-D]++_)*[\\da-dA-D]++",
+ "name": "constant.numeric.integer.base-14.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "15(#)([\\da-eA-E]++_)*[\\da-eA-E]++",
+ "name": "constant.numeric.integer.base-15.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "16(#)([\\da-fA-F]++_)*[\\da-fA-F]++",
+ "name": "constant.numeric.integer.hexadecimal.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "17(#)([\\da-gA-G]++_)*[\\da-gA-G]++",
+ "name": "constant.numeric.integer.base-17.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "18(#)([\\da-hA-H]++_)*[\\da-hA-H]++",
+ "name": "constant.numeric.integer.base-18.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "19(#)([\\da-iA-I]++_)*[\\da-iA-I]++",
+ "name": "constant.numeric.integer.base-19.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "20(#)([\\da-jA-J]++_)*[\\da-jA-J]++",
+ "name": "constant.numeric.integer.base-20.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "21(#)([\\da-kA-K]++_)*[\\da-kA-K]++",
+ "name": "constant.numeric.integer.base-21.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "22(#)([\\da-lA-L]++_)*[\\da-lA-L]++",
+ "name": "constant.numeric.integer.base-22.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "23(#)([\\da-mA-M]++_)*[\\da-mA-M]++",
+ "name": "constant.numeric.integer.base-23.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "24(#)([\\da-nA-N]++_)*[\\da-nA-N]++",
+ "name": "constant.numeric.integer.base-24.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "25(#)([\\da-oA-O]++_)*[\\da-oA-O]++",
+ "name": "constant.numeric.integer.base-25.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "26(#)([\\da-pA-P]++_)*[\\da-pA-P]++",
+ "name": "constant.numeric.integer.base-26.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "27(#)([\\da-qA-Q]++_)*[\\da-qA-Q]++",
+ "name": "constant.numeric.integer.base-27.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "28(#)([\\da-rA-R]++_)*[\\da-rA-R]++",
+ "name": "constant.numeric.integer.base-28.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "29(#)([\\da-sA-S]++_)*[\\da-sA-S]++",
+ "name": "constant.numeric.integer.base-29.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "30(#)([\\da-tA-T]++_)*[\\da-tA-T]++",
+ "name": "constant.numeric.integer.base-30.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "31(#)([\\da-uA-U]++_)*[\\da-uA-U]++",
+ "name": "constant.numeric.integer.base-31.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "32(#)([\\da-vA-V]++_)*[\\da-vA-V]++",
+ "name": "constant.numeric.integer.base-32.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "33(#)([\\da-wA-W]++_)*[\\da-wA-W]++",
+ "name": "constant.numeric.integer.base-33.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "34(#)([\\da-xA-X]++_)*[\\da-xA-X]++",
+ "name": "constant.numeric.integer.base-34.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "35(#)([\\da-yA-Y]++_)*[\\da-yA-Y]++",
+ "name": "constant.numeric.integer.base-35.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.base-integer.erlang"
+ }
+ },
+ "match": "36(#)([\\da-zA-Z]++_)*[\\da-zA-Z]++",
+ "name": "constant.numeric.integer.base-36.erlang"
+ },
+ {
+ "match": "\\d++#([\\da-zA-Z]++_)*[\\da-zA-Z]++",
+ "name": "invalid.illegal.integer.erlang"
+ },
+ {
+ "match": "(\\d++_)*\\d++",
+ "name": "constant.numeric.integer.decimal.erlang"
+ }
+ ]
+ },
+ "parenthesized-expression": {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.expression.begin.erlang"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.expression.end.erlang"
+ }
+ },
+ "name": "meta.expression.parenthesized",
+ "patterns": [
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ "record-directive": {
+ "begin": "^\\s*+(-)\\s*+(record)\\s*+(\\()\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(,)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.directive.begin.erlang"
+ },
+ "2": {
+ "name": "keyword.control.directive.import.erlang"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.erlang"
+ },
+ "4": {
+ "name": "entity.name.type.class.record.definition.erlang"
+ },
+ "5": {
+ "name": "punctuation.separator.parameters.erlang"
+ }
+ },
+ "end": "(\\))\\s*+(\\.)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.erlang"
+ },
+ "2": {
+ "name": "punctuation.section.directive.end.erlang"
+ }
+ },
+ "name": "meta.directive.record.erlang",
+ "patterns": [
+ {
+ "include": "#internal-record-body"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "record-usage": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.record.erlang"
+ },
+ "2": {
+ "name": "entity.name.type.class.record.erlang"
+ },
+ "3": {
+ "name": "punctuation.separator.record-field.erlang"
+ },
+ "4": {
+ "name": "variable.other.field.erlang"
+ }
+ },
+ "match": "(#)\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')\\s*+(\\.)\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')",
+ "name": "meta.record-usage.erlang"
+ },
+ {
+ "begin": "(#)\\s*+([a-z][a-zA-Z\\d@_]*+|'[^']*+')",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.record.erlang"
+ },
+ "2": {
+ "name": "entity.name.type.class.record.erlang"
+ }
+ },
+ "end": "(?<=\\})",
+ "name": "meta.record-usage.erlang",
+ "patterns": [
+ {
+ "include": "#internal-record-body"
+ }
+ ]
+ }
+ ]
+ },
+ "string": {
+ "begin": "(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.erlang"
+ }
+ },
+ "end": "(\")",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.erlang"
+ }
+ },
+ "name": "string.quoted.double.erlang",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.escape.erlang"
+ },
+ "3": {
+ "name": "punctuation.definition.escape.erlang"
+ }
+ },
+ "match": "(\\\\)([bdefnrstv\\\\'\"]|(\\^)[@-_a-z]|[0-7]{1,3}|x[\\da-fA-F]{2})",
+ "name": "constant.character.escape.erlang"
+ },
+ {
+ "match": "\\\\\\^?.?",
+ "name": "invalid.illegal.string.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.placeholder.erlang"
+ },
+ "3": {
+ "name": "punctuation.separator.placeholder-parts.erlang"
+ },
+ "4": {
+ "name": "punctuation.separator.placeholder-parts.erlang"
+ },
+ "6": {
+ "name": "punctuation.separator.placeholder-parts.erlang"
+ },
+ "8": {
+ "name": "punctuation.separator.placeholder-parts.erlang"
+ },
+ "10": {
+ "name": "punctuation.separator.placeholder-parts.erlang"
+ },
+ "12": {
+ "name": "punctuation.separator.placeholder-parts.erlang"
+ }
+ },
+ "match": "(~)((\\-)?\\d++|(\\*))?((\\.)(\\d++|(\\*)))?((\\.)((\\*)|.))?[~cfegswpWPBX#bx\\+ni]",
+ "name": "constant.other.placeholder.erlang"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.placeholder.erlang"
+ },
+ "2": {
+ "name": "punctuation.separator.placeholder-parts.erlang"
+ }
+ },
+ "match": "(~)(\\*)?(\\d++)?[~du\\-#fsacl]",
+ "name": "constant.other.placeholder.erlang"
+ },
+ {
+ "match": "~[^\"]?",
+ "name": "invalid.illegal.string.erlang"
+ }
+ ]
+ },
+ "symbolic-operator": {
+ "match": "\\+\\+|\\+|--|-|\\*|/=|/|=/=|=:=|==|=<|=|<-|<|>=|>|!|::",
+ "name": "keyword.operator.symbolic.erlang"
+ },
+ "textual-operator": {
+ "match": "\\b(andalso|band|and|bxor|xor|bor|orelse|or|bnot|not|bsl|bsr|div|rem)\\b",
+ "name": "keyword.operator.textual.erlang"
+ },
+ "tuple": {
+ "begin": "(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tuple.begin.erlang"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tuple.end.erlang"
+ }
+ },
+ "name": "meta.structure.tuple.erlang",
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.separator.tuple.erlang"
+ },
+ {
+ "include": "#everything-else"
+ }
+ ]
+ },
+ "variable": {
+ "captures": {
+ "1": {
+ "name": "variable.other.erlang"
+ },
+ "2": {
+ "name": "variable.language.omitted.erlang"
+ }
+ },
+ "match": "(_[a-zA-Z\\d@_]++|[A-Z][a-zA-Z\\d@_]*+)|(_)"
+ }
+ },
+ "scopeName": "source.erlang",
+ "uuid": "58EA597D-5158-4BF7-9FB2-B05135D1E166"
+}
diff --git a/node_modules/shiki/languages/fish.tmLanguage.json b/node_modules/shiki/languages/fish.tmLanguage.json
new file mode 100644
index 0000000..235909b
--- /dev/null
+++ b/node_modules/shiki/languages/fish.tmLanguage.json
@@ -0,0 +1,189 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "fileTypes": ["fish"],
+ "firstLineMatch": "^#!.*\\bfish\\b",
+ "foldingStartMarker": "^\\s*(function|while|if|switch|for|begin)\\s.*$",
+ "foldingStopMarker": "^\\s*end\\s*$",
+ "keyEquivalent": "^~F",
+ "name": "fish",
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.fish"
+ }
+ },
+ "comment": "Double quoted string",
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.fish"
+ }
+ },
+ "name": "string.quoted.double.fish",
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "comment": "https://fishshell.com/docs/current/#quotes",
+ "match": "\\\\(\\\"|\\$|$|\\\\)",
+ "name": "constant.character.escape.fish"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.fish"
+ }
+ },
+ "comment": "Single quoted string",
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.fish"
+ }
+ },
+ "name": "string.quoted.single.fish",
+ "patterns": [
+ {
+ "comment": "https://fishshell.com/docs/current/#quotes",
+ "match": "\\\\('|`|\\\\)",
+ "name": "constant.character.escape.fish"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.fish"
+ }
+ },
+ "comment": "line comment",
+ "match": "(?<!\\$)(#)(?!\\{).*$\\n?",
+ "name": "comment.line.number-sign.fish"
+ },
+ {
+ "comment": "name of command, either a function or a binary",
+ "match": "(^\\s*|&&\\s*|\\|\\s*|\\(\\s*|[;]\\s*|\\b(if|while)\\b\\s+)(?!(?<!\\.)\\b(function|while|if|else|switch|case|for|in|begin|end|continue|break|return|source|exit|wait|and|or|not)\\b(?![?!]))([a-zA-Z_\\-0-9\\[\\].]+)",
+ "captures": {
+ "2": {
+ "name": "keyword.control.fish"
+ },
+ "4": {
+ "name": "support.function.command.fish"
+ }
+ }
+ },
+ {
+ "comment": "keywords that affect control flow",
+ "match": "(?<!\\.)\\b(function|while|if|else|switch|case|for|in|begin|end|continue|break|return|source|exit|wait|and|or|not)\\b(?![?!])",
+ "name": "keyword.control.fish"
+ },
+ {
+ "match": "(?<!\\.)\\bfunction\\b(?![?!])",
+ "name": "storage.type.fish"
+ },
+ {
+ "match": "\\|",
+ "name": "keyword.operator.pipe.fish"
+ },
+ {
+ "comment": "IO Redirection",
+ "match": "(?x:\n<|# Standard Input\n(>|\\^|>>|\\^\\^)(&[012\\-])?| # Redirection of stderr\n[012](<|>|>>)(&[012\\-])? # Redirect input/output of file descriptors\n)",
+ "name": "keyword.operator.redirect.fish"
+ },
+ {
+ "match": "&",
+ "name": "keyword.operator.background.fish"
+ },
+ {
+ "match": "\\*\\*|\\*|\\?",
+ "name": "keyword.operator.glob.fish"
+ },
+ {
+ "comment": "command short/long options",
+ "match": "\\s(-{1,2}[a-zA-Z_\\-0-9]+|-\\w)\\b",
+ "captures": {
+ "1": {
+ "name": "source.option.fish"
+ }
+ }
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#escape"
+ }
+ ],
+ "repository": {
+ "escape": {
+ "patterns": [
+ {
+ "comment": "single character character escape sequences",
+ "match": "\\\\[abefnrtv $*?~#(){}\\[\\]<>^&|;\"']",
+ "name": "constant.character.escape.single.fish"
+ },
+ {
+ "comment": "escapes the ascii character with the specified value (hexadecimal)",
+ "match": "\\\\x[0-9a-fA-F]{1,2}",
+ "name": "constant.character.escape.hex-ascii.fish"
+ },
+ {
+ "comment": "escapes a byte of data with the specified value (hexadecimal). If you are using mutibyte encoding, this can be used to enter invalid strings. Only use this if you know what are doing.",
+ "match": "\\\\X[0-9a-fA-F]{1,2}",
+ "name": "constant.character.escape.hex-byte.fish"
+ },
+ {
+ "comment": "escapes the ascii character with the specified value (octal)",
+ "match": "\\\\[0-7]{1,3}",
+ "name": "constant.character.escape.octal.fish"
+ },
+ {
+ "comment": "escapes the 16-bit unicode character with the specified value (hexadecimal)",
+ "match": "\\\\u[0-9a-fA-F]{1,4}",
+ "name": "constant.character.escape.unicode-16-bit.fish"
+ },
+ {
+ "comment": "escapes the 32-bit unicode character with the specified value (hexadecimal)",
+ "match": "\\\\U[0-9a-fA-F]{1,8}",
+ "name": "constant.character.escape.unicode-32-bit.fish"
+ },
+ {
+ "comment": "escapes the control sequence generated by pressing the control key and the specified letter",
+ "match": "\\\\c[a-zA-Z]",
+ "name": "constant.character.escape.control.fish"
+ }
+ ]
+ },
+ "variable": {
+ "patterns": [
+ {
+ "comment": "Built-in variables visible by pressing $ TAB TAB in a new shell",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.fish"
+ }
+ },
+ "match": "(\\$)(argv|CMD_DURATION|COLUMNS|fish_bind_mode|fish_color_autosuggestion|fish_color_cancel|fish_color_command|fish_color_comment|fish_color_cwd|fish_color_cwd_root|fish_color_end|fish_color_error|fish_color_escape|fish_color_hg_added|fish_color_hg_clean|fish_color_hg_copied|fish_color_hg_deleted|fish_color_hg_dirty|fish_color_hg_modified|fish_color_hg_renamed|fish_color_hg_unmerged|fish_color_hg_untracked|fish_color_history_current|fish_color_host|fish_color_host_remote|fish_color_match|fish_color_normal|fish_color_operator|fish_color_param|fish_color_quote|fish_color_redirection|fish_color_search_match|fish_color_selection|fish_color_status|fish_color_user|fish_color_valid_path|fish_complete_path|fish_function_path|fish_greeting|fish_key_bindings|fish_pager_color_completion|fish_pager_color_description|fish_pager_color_prefix|fish_pager_color_progress|fish_pid|fish_prompt_hg_status_added|fish_prompt_hg_status_copied|fish_prompt_hg_status_deleted|fish_prompt_hg_status_modified|fish_prompt_hg_status_order|fish_prompt_hg_status_unmerged|fish_prompt_hg_status_untracked|FISH_VERSION|history|hostname|IFS|LINES|pipestatus|status|umask|version)\\b",
+ "name": "variable.language.fish"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.fish"
+ }
+ },
+ "match": "(\\$)[a-zA-Z_][a-zA-Z0-9_]*",
+ "name": "variable.other.normal.fish"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.fish",
+ "uuid": "9CA6DB6F-A16F-4836-A058-617C7378775D"
+}
diff --git a/node_modules/shiki/languages/fsharp.tmLanguage.json b/node_modules/shiki/languages/fsharp.tmLanguage.json
new file mode 100644
index 0000000..1a8c41a
--- /dev/null
+++ b/node_modules/shiki/languages/fsharp.tmLanguage.json
@@ -0,0 +1,1835 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/ionide/ionide-fsgrammar/blob/master/grammars/fsharp.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/ionide/ionide-fsgrammar/commit/71b1ead8c99715f6c994115ebab7ee4a14cf0c59",
+ "name": "fsharp",
+ "scopeName": "source.fsharp",
+ "patterns": [
+ {
+ "include": "#compiler_directives"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#chars"
+ },
+ {
+ "include": "#double_tick"
+ },
+ {
+ "include": "#definition"
+ },
+ {
+ "include": "#abstract_definition"
+ },
+ {
+ "include": "#attributes"
+ },
+ {
+ "include": "#modules"
+ },
+ {
+ "include": "#anonymous_functions"
+ },
+ {
+ "include": "#du_declaration"
+ },
+ {
+ "include": "#record_declaration"
+ },
+ {
+ "include": "#records"
+ },
+ {
+ "include": "#strp_inlined"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#cexprs"
+ },
+ {
+ "include": "#text"
+ }
+ ],
+ "repository": {
+ "strp_inlined_body": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#anonymous_functions"
+ },
+ {
+ "match": "(\\^[[:alpha:]0-9'._]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "name": "keyword.fsharp",
+ "match": "\\b(and|when|or)\\b"
+ },
+ {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#strp_inlined_body"
+ }
+ ]
+ },
+ {
+ "match": "(static member|member)\\s*([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "keyword.fsharp"
+ },
+ "2": {
+ "name": "variable.fsharp"
+ },
+ "3": {
+ "name": "keyword.symbol.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#compiler_directives"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#chars"
+ },
+ {
+ "include": "#double_tick"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#text"
+ },
+ {
+ "include": "#definition"
+ },
+ {
+ "include": "#attributes"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#cexprs"
+ },
+ {
+ "include": "#text"
+ }
+ ]
+ },
+ "strp_inlined": {
+ "patterns": [
+ {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#strp_inlined_body"
+ }
+ ]
+ }
+ ]
+ },
+ "generic_declaration": {
+ "patterns": [
+ {
+ "comments": "SRTP syntax support",
+ "begin": "(:)\\s*(\\()\\s*(static member|member)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "2": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "3": {
+ "name": "keyword.fsharp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#member_declaration"
+ }
+ ]
+ },
+ {
+ "match": "(('|\\^)[[:alpha:]0-9'._]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ {
+ "name": "keyword.fsharp",
+ "match": "\\b(private|to|public|internal|function|yield!|yield|class|exception|match|delegate|of|new|in|as|if|then|else|elif|for|begin|end|inherit|do|let\\!|return\\!|return|interface|with|abstract|enum|member|try|finally|and|when|or|use|use\\!|struct|while|mutable|assert|base|done|downcast|downto|extern|fixed|global|lazy|upcast|not)(?!')\\b"
+ },
+ {
+ "name": "keyword.symbol.fsharp",
+ "match": ":"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "match": "(('|\\^)[[:alpha:]0-9'._]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "begin": "(<)",
+ "end": "(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(('|\\^)[[:alpha:]0-9'._]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#tuple_signature"
+ },
+ {
+ "include": "#generic_declaration"
+ }
+ ]
+ },
+ {
+ "begin": "(\\()",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(([?[:alpha:]0-9'`^._ ]+))+",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#tuple_signature"
+ }
+ ]
+ },
+ {
+ "match": "(?!when|and|or\\b)\\b([\\w0-9'`^._]+)",
+ "comments": "Here we need the \\w modifier in order to check that the words are allowed",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "match": "(\\|)",
+ "comments": "Prevent captures of `|>` as a keyword when defining custom operator like `<|>`",
+ "captures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ "anonymous_record_declaration": {
+ "begin": "(\\{\\|)",
+ "end": "(\\|\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "match": "[[:alpha:]0-9'`^_ ]+(:)",
+ "captures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ }
+ },
+ {
+ "match": "([[:alpha:]0-9'`^_ ]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#anonymous_record_declaration"
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ "record_signature": {
+ "patterns": [
+ {
+ "match": "[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)",
+ "captures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "2": {
+ "name": "variable.parameter.fsharp"
+ }
+ }
+ },
+ {
+ "begin": "({)",
+ "end": "(})",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "match": "[[:alpha:]0-9'`^_ ]+(=)([[:alpha:]0-9'`^_ ]+)",
+ "captures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "2": {
+ "name": "variable.parameter.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#record_signature"
+ }
+ ]
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ "tuple_signature": {
+ "patterns": [
+ {
+ "match": "(([?[:alpha:]0-9'`^._ ]+))+",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "begin": "(\\()",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(([?[:alpha:]0-9'`^._ ]+))+",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#tuple_signature"
+ }
+ ]
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ "anonymous_functions": {
+ "patterns": [
+ {
+ "name": "function.anonymous",
+ "begin": "\\b(fun)\\b",
+ "end": "(->)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.arrow.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "(\\()",
+ "end": "\\s*(?=(->))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.arrow.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#member_declaration"
+ }
+ ]
+ },
+ {
+ "include": "#variables"
+ }
+ ]
+ }
+ ]
+ },
+ "attributes": {
+ "patterns": [
+ {
+ "name": "support.function.attribute.fsharp",
+ "begin": "\\[\\<",
+ "end": "\\>\\]|\\]",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "name": "comment.literate.command.fsharp",
+ "match": "(\\(\\*{3}.*\\*{3}\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "comment.block.fsharp"
+ }
+ }
+ },
+ {
+ "name": "comment.block.markdown.fsharp",
+ "begin": "^\\s*(\\(\\*\\*(?!\\)))((?!\\*\\)).)*$",
+ "while": "^(?!\\s*(\\*)+\\)\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "comment.block.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "comment.block.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "text.html.markdown"
+ }
+ ]
+ },
+ {
+ "name": "comment.block.fsharp",
+ "begin": "(\\(\\*(?!\\)))",
+ "end": "(\\*+\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "comment.block.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "comment.block.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "comments": "Capture // when inside of (* *) like that the rule which capture comments starting by // is not trigger. See https://github.com/ionide/ionide-fsgrammar/issues/155",
+ "name": "fast-capture.comment.line.double-slash.fsharp",
+ "match": "//"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "name": "comment.block.markdown.fsharp.end",
+ "match": "((?<!\\()(\\*)+\\))",
+ "captures": {
+ "1": {
+ "name": "comment.block.fsharp"
+ }
+ }
+ },
+ {
+ "name": "comment.line.markdown.fsharp",
+ "begin": "///",
+ "while": "///",
+ "patterns": [
+ {
+ "include": "text.html.markdown"
+ }
+ ]
+ },
+ {
+ "name": "comment.line.double-slash.fsharp",
+ "match": "//.*$"
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "name": "keyword.symbol.fsharp",
+ "match": "\\(\\)"
+ },
+ {
+ "name": "constant.numeric.float.fsharp",
+ "match": "\\b-?[0-9][0-9_]*((\\.([0-9][0-9_]*([eE][+-]??[0-9][0-9_]*)?)?)|([eE][+-]??[0-9][0-9_]*))"
+ },
+ {
+ "name": "constant.numeric.integer.nativeint.fsharp",
+ "match": "\\b(-?((0(x|X)[0-9a-fA-F][0-9a-fA-F_]*)|(0(o|O)[0-7][0-7_]*)|(0(b|B)[01][01_]*)|([0-9][0-9_]*)))"
+ },
+ {
+ "name": "constant.language.boolean.fsharp",
+ "match": "\\b(true|false)\\b"
+ },
+ {
+ "name": "constant.other.fsharp",
+ "match": "\\b(null|void)\\b"
+ }
+ ]
+ },
+ "abstract_definition": {
+ "name": "abstract.definition.fsharp",
+ "begin": "\\b(abstract)\\s+(member)?(\\s+\\[\\<.*\\>\\])?\\s*([_[:alpha:]0-9,\\._`\\s]+)(:)",
+ "end": "\\s*(with)\\b|=|$",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.fsharp"
+ },
+ "2": {
+ "name": "keyword.fsharp"
+ },
+ "3": {
+ "name": "support.function.attribute.fsharp"
+ },
+ "5": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#common_declaration"
+ },
+ {
+ "match": "(\\?{0,1})([[:alpha:]0-9'`^._ ]+)\\s*(:)((?!with\\b)\\b([\\w0-9'`^._ ]+)){0,1}",
+ "captures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "2": {
+ "name": "variable.parameter.fsharp"
+ },
+ "3": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "4": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "match": "(?!with|get|set\\b)\\b([\\w0-9'`^._]+)",
+ "comments": "Here we need the \\w modifier in order to check that the words are allowed",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ "common_binding_definition": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#attributes"
+ },
+ {
+ "comments": "SRTP syntax support",
+ "begin": "(:)\\s*(\\()\\s*(static member|member)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "2": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "3": {
+ "name": "keyword.fsharp"
+ }
+ },
+ "end": "(\\))\\s*((?=,)|(?=\\=))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(\\^[[:alpha:]0-9'._]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ {
+ "begin": "(:)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "2": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "end": "(\\)\\s*(([?[:alpha:]0-9'`^._ ]*)))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "2": {
+ "name": "entity.name.type.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tuple_signature"
+ }
+ ]
+ },
+ {
+ "begin": "(:)\\s*(\\^[[:alpha:]0-9'._]+)\\s*(when)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "2": {
+ "name": "entity.name.type.fsharp"
+ },
+ "3": {
+ "name": "keyword.fsharp"
+ }
+ },
+ "end": "(?=:)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.fsharp",
+ "match": "\\b(and|when|or)\\b"
+ },
+ {
+ "comment": "Because we first capture the keywords, we can capture what looks like a word and assume it's an entity definition",
+ "match": "([[:alpha:]0-9'^._]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "name": "keyword.symbol.fsharp",
+ "match": "(\\(|\\))"
+ }
+ ]
+ },
+ {
+ "match": "(:)\\s*([?[:alpha:]0-9'`^._ ]+)",
+ "captures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "2": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "match": "(->)\\s*(\\()?\\s*([?[:alpha:]0-9'`^._ ]+)*",
+ "captures": {
+ "1": {
+ "name": "keyword.symbol.arrow.fsharp"
+ },
+ "2": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "3": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "begin": "(\\*)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "2": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "end": "(\\)\\s*(([?[:alpha:]0-9'`^._ ]+))+)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "2": {
+ "name": "entity.name.type.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tuple_signature"
+ }
+ ]
+ },
+ {
+ "begin": "(\\*)(\\s*([?[:alpha:]0-9'`^._ ]+))*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "2": {
+ "name": "entity.name.type.fsharp"
+ }
+ },
+ "end": "(?==)|(?=\\))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tuple_signature"
+ }
+ ]
+ },
+ {
+ "begin": "(<+(?![[:space:]]*\\)))",
+ "beginComment": "The group (?![[:space:]]*\\) is for protection against overload operator. static member (<)",
+ "end": "((?<!:)>|\\))",
+ "endComment": "The group (?<!:) prevent us from stopping on :> when using SRTP synthax",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#generic_declaration"
+ }
+ ]
+ },
+ {
+ "include": "#anonymous_record_declaration"
+ },
+ {
+ "begin": "({)",
+ "end": "(})",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#record_signature"
+ }
+ ]
+ },
+ {
+ "include": "#definition"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ "definition": {
+ "patterns": [
+ {
+ "name": "binding.fsharp",
+ "begin": "\\b(let mutable|static let mutable|static let|let inline|let|and|member val|static member inline|static member|default|member|override|let!)(\\s+rec|mutable)?(\\s+\\[\\<.*\\>\\])?\\s*(private|internal|public)?\\s+(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\._`\\s]+|(?<=,)\\s)*)?",
+ "end": "\\s*((with\\b)|(=|\\n+=|(?<=\\=)))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.fsharp"
+ },
+ "2": {
+ "name": "keyword.fsharp"
+ },
+ "3": {
+ "name": "support.function.attribute.fsharp"
+ },
+ "4": {
+ "name": "storage.modifier.fsharp"
+ },
+ "5": {
+ "name": "variable.fsharp"
+ }
+ },
+ "endCaptures": {
+ "2": {
+ "name": "keyword.fsharp"
+ },
+ "3": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#common_binding_definition"
+ }
+ ]
+ },
+ {
+ "name": "binding.fsharp",
+ "begin": "\\b(use|use!|and|and!)\\s+(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\._`\\s]+|(?<=,)\\s)*)?",
+ "end": "\\s*(=)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#common_binding_definition"
+ }
+ ]
+ },
+ {
+ "name": "binding.fsharp",
+ "begin": "(?<=with|and)\\s*\\b((get|set)\\s*(?=\\())(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9\\._`\\s]+|(?<=,)\\s)*)?",
+ "end": "\\s*(=|\\n+=|(?<=\\=))",
+ "beginCaptures": {
+ "4": {
+ "name": "variable.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#common_binding_definition"
+ }
+ ]
+ },
+ {
+ "name": "binding.fsharp",
+ "begin": "\\b(static val mutable|val mutable|val)(\\s+rec|mutable)?(\\s+\\[\\<.*\\>\\])?\\s*(private|internal|public)?\\s+(\\[[^-=]*\\]|[_[:alpha:]]([_[:alpha:]0-9,\\._]+)*|``[_[:alpha:]]([_[:alpha:]0-9,\\._`\\s]+|(?<=,)\\s)*)?",
+ "end": "\\n$",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.fsharp"
+ },
+ "2": {
+ "name": "keyword.fsharp"
+ },
+ "3": {
+ "name": "support.function.attribute.fsharp"
+ },
+ "4": {
+ "name": "storage.modifier.fsharp"
+ },
+ "5": {
+ "name": "variable.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#common_binding_definition"
+ }
+ ]
+ },
+ {
+ "name": "binding.fsharp",
+ "begin": "\\b(new)\\b\\s+(\\()",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.fsharp"
+ },
+ "2": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#common_binding_definition"
+ }
+ ]
+ }
+ ]
+ },
+ "du_declaration": {
+ "patterns": [
+ {
+ "name": "du_declaration.fsharp",
+ "begin": "\\b(of)\\b",
+ "end": "$|(\\|)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)\\s*(:)\\s*([[:alpha:]0-9'`<>^._]+|``[[:alpha:]0-9' <>^._]+``)",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.fsharp"
+ },
+ "2": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "3": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "match": "(``([[:alpha:]0-9'^._ ]+)``|[[:alpha:]0-9'`^._]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#anonymous_record_declaration"
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "name": "storage.modifier",
+ "match": "\\b(private|public|internal)\\b"
+ },
+ {
+ "name": "keyword.fsharp",
+ "match": "\\b(private|to|public|internal|function|class|exception|delegate|of|new|as|begin|end|inherit|let!|interface|abstract|enum|member|and|when|or|use|use\\!|struct|mutable|assert|base|done|downcast|downto|extern|fixed|global|lazy|upcast|not)(?!')\\b"
+ },
+ {
+ "name": "keyword.control",
+ "match": "\\b(match|yield|yield!|with|if|then|else|elif|for|in|return!|return|try|finally|while|do)(?!')\\b"
+ },
+ {
+ "name": "keyword.symbol.arrow.fsharp",
+ "match": "(\\->|\\<\\-)"
+ },
+ {
+ "name": "keyword.symbol.fsharp",
+ "match": "(&&&|\\|\\|\\||\\^\\^\\^|~~~|<<<|>>>|\\|>|:>|:\\?>|:|\\[|\\]|\\;|<>|=|@|\\|\\||&&|{|}|\\||_|\\.\\.|\\,|\\+|\\-|\\*|\\/|\\^|\\!|\\>|\\>\\=|\\>\\>|\\<|\\<\\=|\\(|\\)|\\<\\<)"
+ }
+ ]
+ },
+ "modules": {
+ "patterns": [
+ {
+ "name": "entity.name.section.fsharp",
+ "begin": "\\b(namespace global)|\\b(namespace|module)\\s*(public|internal|private|rec)?\\s+([[:alpha:]][[:alpha:]0-9'_. ]*)",
+ "end": "(\\s?=|\\s|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.fsharp"
+ },
+ "2": {
+ "name": "keyword.fsharp"
+ },
+ "3": {
+ "name": "storage.modifier.fsharp"
+ },
+ "4": {
+ "name": "entity.name.section.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "entity.name.section.fsharp",
+ "match": "(\\.)([A-Z][[:alpha:]0-9'_]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.namespace-reference.fsharp"
+ },
+ "2": {
+ "name": "entity.name.section.fsharp"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "namespace.open.fsharp",
+ "begin": "\\b(open type|open)\\s+([[:alpha:]][[:alpha:]0-9'_]*)(?=(\\.[A-Z][[:alpha:]0-9_]*)*)",
+ "end": "(\\s|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.fsharp"
+ },
+ "2": {
+ "name": "entity.name.section.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "entity.name.section.fsharp",
+ "match": "(\\.)([[:alpha:]][[:alpha:]0-9'_]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.namespace-reference.fsharp"
+ },
+ "2": {
+ "name": "entity.name.section.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "name": "namespace.alias.fsharp",
+ "begin": "^\\s*(module)\\s+([A-Z][[:alpha:]0-9'_]*)\\s*(=)\\s*([A-Z][[:alpha:]0-9'_]*)",
+ "end": "(\\s|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.fsharp"
+ },
+ "2": {
+ "name": "entity.name.type.namespace.fsharp"
+ },
+ "3": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "4": {
+ "name": "entity.name.section.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "entity.name.section.fsharp",
+ "match": "(\\.)([A-Z][[:alpha:]0-9'_]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.namespace-reference.fsharp"
+ },
+ "2": {
+ "name": "entity.name.section.fsharp"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "name": "string.quoted.literal.fsharp",
+ "begin": "(?=[^\\\\])(@\")",
+ "end": "(\")(?!\")",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "constant.character.string.escape.fsharp",
+ "match": "\"(\")"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.triple.fsharp",
+ "begin": "(?=[^\\\\])(\"\"\")",
+ "end": "(\"\"\")",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string_formatter"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.double.fsharp",
+ "begin": "(?=[^\\\\])(\")",
+ "end": "(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.separator.string.ignore-eol.fsharp",
+ "match": "\\\\$[ \\t]*"
+ },
+ {
+ "name": "constant.character.string.escape.fsharp",
+ "match": "\\\\(['\"\\\\abfnrtv]|([01][0-9][0-9]|2[0-4][0-9]|25[0-5])|(x[0-9a-fA-F]{2})|(u[0-9a-fA-F]{4})|(U00(0[0-9a-fA-F]|10)[0-9a-fA-F]{4}))"
+ },
+ {
+ "name": "invalid.illegal.character.string.fsharp",
+ "match": "\\\\(([0-9]{1,3})|(x[^\\s]{0,2})|(u[^\\s]{0,4})|(U[^\\s]{0,8})|[^\\s])"
+ },
+ {
+ "include": "#string_formatter"
+ }
+ ]
+ }
+ ]
+ },
+ "string_formatter": {
+ "patterns": [
+ {
+ "name": "entity.name.type.format.specifier.fsharp",
+ "match": "(%0?-?(\\d+)?((a|t)|(\\.\\d+)?(f|F|e|E|g|G|M)|(b|c|s|d|i|x|X|o|u)|(s|b|O)|(\\+?A)))",
+ "captures": {
+ "1": {
+ "name": "keyword.format.specifier.fsharp"
+ }
+ }
+ }
+ ]
+ },
+ "variables": {
+ "patterns": [
+ {
+ "name": "keyword.symbol.fsharp",
+ "match": "\\(\\)"
+ },
+ {
+ "match": "(\\?{0,1})(``[[:alpha:]0-9'`^:,._ ]+``|(?!private\\b)\\b[\\w[:alpha:]0-9'`<>^._ ]+)",
+ "captures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "2": {
+ "name": "variable.parameter.fsharp"
+ }
+ }
+ }
+ ]
+ },
+ "common_declaration": {
+ "patterns": [
+ {
+ "begin": "\\s*(->)\\s*([[:alpha:]0-9'`^._ ]+)(<)",
+ "end": "(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.arrow.fsharp"
+ },
+ "2": {
+ "name": "entity.name.type.fsharp"
+ },
+ "3": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "match": "([[:alpha:]0-9'`^._ ]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ {
+ "match": "\\s*(->)\\s*(?!with|get|set\\b)\\b([\\w0-9'`^._]+)",
+ "captures": {
+ "1": {
+ "name": "keyword.symbol.arrow.fsharp"
+ },
+ "2": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#anonymous_record_declaration"
+ },
+ {
+ "begin": "(\\?{0,1})([[:alpha:]0-9'`^._ ]+)\\s*(:)(\\s*([?[:alpha:]0-9'`^._ ]+)(<))",
+ "end": "(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "2": {
+ "name": "variable.parameter.fsharp"
+ },
+ "3": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "4": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "5": {
+ "name": "entity.name.type.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "match": "([[:alpha:]0-9'`^._ ]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ }
+ ]
+ },
+ "member_declaration": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#common_declaration"
+ },
+ {
+ "comments": "SRTP syntax support",
+ "begin": "(:)\\s*(\\()\\s*(static member|member)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "2": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "3": {
+ "name": "keyword.fsharp"
+ }
+ },
+ "end": "(\\))\\s*((?=,)|(?=\\=))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#member_declaration"
+ }
+ ]
+ },
+ {
+ "match": "(\\^[[:alpha:]0-9'._]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ {
+ "match": "(\\^[[:alpha:]0-9'._]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "name": "keyword.fsharp",
+ "match": "\\b(and|when|or)\\b"
+ },
+ {
+ "name": "keyword.symbol.fsharp",
+ "match": "(\\(|\\))"
+ },
+ {
+ "match": "(\\?{0,1})([[:alpha:]0-9'`^._]+|``[[:alpha:]0-9'`^:,._ ]+``)\\s*(:{0,1})(\\s*([?[:alpha:]0-9'`<>._ ]+)){0,1}",
+ "captures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "2": {
+ "name": "variable.parameter.fsharp"
+ },
+ "3": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "4": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ "double_tick": {
+ "patterns": [
+ {
+ "name": "variable.other.binding.fsharp",
+ "match": "(``)([^`]*)(``)",
+ "captures": {
+ "1": {
+ "name": "string.quoted.single.fsharp"
+ },
+ "2": {
+ "name": "variable.other.binding.fsharp"
+ },
+ "3": {
+ "name": "string.quoted.single.fsharp"
+ }
+ }
+ }
+ ]
+ },
+ "records": {
+ "patterns": [
+ {
+ "name": "record.fsharp",
+ "begin": "\\b(type)[\\s]+(private|internal|public)?\\s*",
+ "end": "\\s*((with)|((as)\\s+([[:alpha:]0-9']+))|(=)|[\\n=]|(\\(\\)))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.fsharp"
+ },
+ "2": {
+ "name": "storage.modifier.fsharp"
+ }
+ },
+ "endCaptures": {
+ "2": {
+ "name": "keyword.fsharp"
+ },
+ "3": {
+ "name": "keyword.fsharp"
+ },
+ "4": {
+ "name": "keyword.fsharp"
+ },
+ "5": {
+ "name": "variable.parameter.fsharp"
+ },
+ "6": {
+ "name": "keyword.symbol.fsharp"
+ },
+ "7": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#attributes"
+ },
+ {
+ "match": "([[:alpha:]0-9'^._]+|``[[:alpha:]0-9'`^:,._ ]+``)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "begin": "(<)",
+ "end": "((?<!:)>)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(('|\\^)``[[:alpha:]0-9`^:,._ ]+``|('|\\^)[[:alpha:]0-9`^:._]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "name": "keyword.fsharp",
+ "match": "\\b(interface|with|abstract|and|when|or|not|struct|equality|comparison|unmanaged|delegate|enum)\\b"
+ },
+ {
+ "begin": "(\\()",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(static member|member|new)",
+ "captures": {
+ "1": {
+ "name": "keyword.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#common_binding_definition"
+ }
+ ]
+ },
+ {
+ "match": "([\\w0-9'`^._]+)",
+ "comments": "Here we need the \\w modifier in order to check that the words are allowed",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ {
+ "match": "\\s*(private|internal|public)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.fsharp"
+ }
+ }
+ },
+ {
+ "begin": "(\\()",
+ "end": "\\s*(?=(=)|[\\n=]|(\\(\\))|(as))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#member_declaration"
+ }
+ ]
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ }
+ ]
+ },
+ "record_declaration": {
+ "patterns": [
+ {
+ "begin": "(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "(((mutable)\\s[[:alpha:]]+)|[[:alpha:]0-9'`<>^._]*)\\s*((?<!:):(?!:))\\s*",
+ "beginCaptures": {
+ "3": {
+ "name": "keyword.fsharp"
+ },
+ "4": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "end": "$|(;|\\})",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.symbol.fsharp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "([[:alpha:]0-9'`^_ ]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.fsharp"
+ }
+ }
+ },
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ {
+ "include": "#compiler_directives"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#chars"
+ },
+ {
+ "include": "#double_tick"
+ },
+ {
+ "include": "#definition"
+ },
+ {
+ "include": "#attributes"
+ },
+ {
+ "include": "#anonymous_functions"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#cexprs"
+ },
+ {
+ "include": "#text"
+ }
+ ]
+ }
+ ]
+ },
+ "cexprs": {
+ "patterns": [
+ {
+ "name": "cexpr.fsharp",
+ "match": "\\b(async|seq|promise|task|maybe|asyncMaybe|controller|scope|application|pipeline)(?=\\s*\\{)",
+ "captures": {
+ "0": {
+ "name": "keyword.fsharp"
+ }
+ }
+ }
+ ]
+ },
+ "chars": {
+ "patterns": [
+ {
+ "name": "char.fsharp",
+ "match": "('\\\\?.')",
+ "captures": {
+ "1": {
+ "name": "string.quoted.single.fsharp"
+ }
+ }
+ }
+ ]
+ },
+ "text": {
+ "patterns": [
+ {
+ "name": "text.fsharp",
+ "match": "\\\\"
+ }
+ ]
+ },
+ "compiler_directives": {
+ "patterns": [
+ {
+ "name": "keyword.control.directive.fsharp",
+ "match": "\\s?(#if|#elif|#elseif|#else|#endif|#light|#nowarn)",
+ "captures": {}
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/gdresource.tmLanguage.json b/node_modules/shiki/languages/gdresource.tmLanguage.json
new file mode 100644
index 0000000..b4690f4
--- /dev/null
+++ b/node_modules/shiki/languages/gdresource.tmLanguage.json
@@ -0,0 +1,326 @@
+{
+ "scopeName": "source.gdresource",
+ "uuid": "e076faa2-3c52-42fa-a8e6-9a7c453c1a5b",
+ "patterns": [
+ {
+ "include": "#embedded_shader"
+ },
+ {
+ "include": "#embedded_gdscript"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#heading"
+ },
+ {
+ "include": "#key_value"
+ }
+ ],
+ "repository": {
+ "comment": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.gdresource"
+ }
+ },
+ "match": "(;).*$\\n?",
+ "name": "comment.line.gdresource"
+ },
+ "embedded_shader": {
+ "name": "meta.embedded.block.gdshader",
+ "begin": "(code) = \"",
+ "end": "\"",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.property.gdresource"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.gdshader"
+ }
+ ]
+ },
+ "embedded_gdscript": {
+ "comment": "meta.embedded.block.gdscript",
+ "begin": "(script/source) = \"",
+ "end": "\"",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.property.gdresource"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.gdscript"
+ }
+ ]
+ },
+ "heading": {
+ "begin": "\\[([a-z_]*)\\s?",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.gdresource"
+ }
+ },
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#heading_properties"
+ },
+ {
+ "include": "#data"
+ }
+ ]
+ },
+ "heading_properties": {
+ "patterns": [
+ {
+ "name": "invalid.deprecated.noValue.gdresource",
+ "match": "(\\s*[A-Za-z_\\-][A-Za-z0-9_\\-]*\\s*=)(?=\\s*$)"
+ },
+ {
+ "begin": "\\s*([A-Za-z_-][^\\s]*|\".+\"|'.+'|[0-9]+)\\s*(=)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.property.gdresource"
+ },
+ "2": {
+ "name": "punctuation.definition.keyValue.gdresource"
+ }
+ },
+ "end": "($|(?==)|\\,?|\\s*(?=\\}))",
+ "patterns": [
+ {
+ "include": "#data"
+ }
+ ]
+ }
+ ]
+ },
+ "key_value": {
+ "patterns": [
+ {
+ "name": "invalid.deprecated.noValue.gdresource",
+ "match": "(\\s*[A-Za-z_\\-][A-Za-z0-9_\\-]*\\s*=)(?=\\s*$)"
+ },
+ {
+ "begin": "\\s*([A-Za-z_-][^\\s]*|\".+\"|'.+'|[0-9]+)\\s*(=)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.property.gdresource"
+ },
+ "2": {
+ "name": "punctuation.definition.keyValue.gdresource"
+ }
+ },
+ "end": "($|(?==)|\\,|\\s*(?=\\}))",
+ "patterns": [
+ {
+ "include": "#data"
+ }
+ ]
+ }
+ ]
+ },
+ "data": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<!\\w)(\\{)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.table.inline.gdresource"
+ }
+ },
+ "end": "\\s*(\\})(?!\\w)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.table.inline.gdresource"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#key_value"
+ },
+ {
+ "include": "#data"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\\w)(\\[)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.array.gdresource"
+ }
+ },
+ "end": "\\s*(\\])(?!\\w)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.array.gdresource"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#data"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.triple.basic.block.gdresource",
+ "begin": "\"\"\"",
+ "end": "\"\"\"",
+ "patterns": [
+ {
+ "match": "\\\\([btnfr\"\\\\\\n/ ]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})",
+ "name": "constant.character.escape.gdresource"
+ },
+ {
+ "match": "\\\\[^btnfr/\"\\\\\\n]",
+ "name": "invalid.illegal.escape.gdresource"
+ }
+ ]
+ },
+ {
+ "name": "support.function.any-method.gdresource",
+ "match": "\"res:\\/\\/[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\""
+ },
+ {
+ "name": "support.class.library.gdresource",
+ "match": "(?<=type=)\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\""
+ },
+ {
+ "name": "constant.character.escape.gdresource",
+ "match": "(?<=NodePath\\(|parent=|name=)\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\""
+ },
+ {
+ "name": "string.quoted.double.basic.line.gdresource",
+ "match": "\"[^\"\\\\]*(?:\\\\.[^\"\\\\]*)*\"",
+ "patterns": [
+ {
+ "match": "\\\\([btnfr\"\\\\\\n/ ]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})",
+ "name": "constant.character.escape.gdresource"
+ },
+ {
+ "match": "\\\\[^btnfr/\"\\\\\\n]",
+ "name": "invalid.illegal.escape.gdresource"
+ }
+ ]
+ },
+ {
+ "name": "invalid.illegal.escape.gdresource",
+ "begin": "'''",
+ "end": "'''"
+ },
+ {
+ "name": "string.quoted.single.literal.line.gdresource",
+ "match": "'.*?'"
+ },
+ {
+ "match": "(?<!\\w)(true|false)(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "constant.language.gdresource"
+ }
+ }
+ },
+ {
+ "match": "(?<!\\w)([\\+\\-]?(0|([1-9](([0-9]|_[0-9])+)?))(?:(?:\\.(0|([1-9](([0-9]|_[0-9])+)?)))?[eE][\\+\\-]?[1-9]_?[0-9]*|(?:\\.[0-9_]*)))(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.float.gdresource"
+ }
+ }
+ },
+ {
+ "match": "(?<!\\w)((?:[\\+\\-]?(0|([1-9](([0-9]|_[0-9])+)?))))(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.integer.gdresource"
+ }
+ }
+ },
+ {
+ "match": "(?<!\\w)([\\+\\-]?inf)(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.inf.gdresource"
+ }
+ }
+ },
+ {
+ "match": "(?<!\\w)([\\+\\-]?nan)(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.nan.gdresource"
+ }
+ }
+ },
+ {
+ "match": "(?<!\\w)((?:0x(([0-9a-fA-F](([0-9a-fA-F]|_[0-9a-fA-F])+)?))))(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.hex.gdresource"
+ }
+ }
+ },
+ {
+ "match": "(?<!\\w)(0o[0-7](_?[0-7])*)(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.oct.gdresource"
+ }
+ }
+ },
+ {
+ "match": "(?<!\\w)(0b[01](_?[01])*)(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.bin.gdresource"
+ }
+ }
+ },
+ {
+ "begin": "(?<!\\w)(Vector2|Vector2i|Vector3|Vector3i|Color|Rect2|Rect2i|Array|Basis|Dictionary|Plane|Quat|RID|Rect3|Transform|Transform2D|Transform3D|AABB|String|Color|NodePath|Object|PoolByteArray|PoolIntArray|PoolRealArray|PoolStringArray|PoolVector2Array|PoolVector3Array|PoolColorArray|bool|int|float|StringName|Quaternion|PackedByteArray|PackedInt32Array|PackedInt64Array|PackedFloat32Array|PackedFloat64Array|PackedStringArray|PackedVector2Array|PackedVector2iArray|PackedVector3Array|PackedVector3iArray|PackedColorArray)(\\()\\s?",
+ "beginCaptures": {
+ "1": {
+ "name": "support.class.library.gdresource"
+ }
+ },
+ "end": "\\s?(\\))",
+ "patterns": [
+ {
+ "include": "#key_value"
+ },
+ {
+ "include": "#data"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\\w)(ExtResource|SubResource)(\\()\\s?",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.gdresource"
+ }
+ },
+ "end": "\\s?(\\))",
+ "patterns": [
+ {
+ "include": "#key_value"
+ },
+ {
+ "include": "#data"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "name": "gdresource"
+}
diff --git a/node_modules/shiki/languages/gdscript.tmLanguage.json b/node_modules/shiki/languages/gdscript.tmLanguage.json
new file mode 100644
index 0000000..4a4d6d2
--- /dev/null
+++ b/node_modules/shiki/languages/gdscript.tmLanguage.json
@@ -0,0 +1,883 @@
+{
+ "fileTypes": ["gd"],
+ "scopeName": "source.gdscript",
+ "name": "gdscript",
+ "patterns": [
+ {
+ "include": "#nodepath_object"
+ },
+ {
+ "include": "#nodepath_function"
+ },
+ {
+ "include": "#base_expression"
+ },
+ {
+ "include": "#logic_op"
+ },
+ {
+ "include": "#in_keyword"
+ },
+ {
+ "include": "#getter_setter_godot4"
+ },
+ {
+ "include": "#compare_op"
+ },
+ {
+ "include": "#arithmetic_op"
+ },
+ {
+ "include": "#assignment_op"
+ },
+ {
+ "include": "#lambda_declaration"
+ },
+ {
+ "include": "#control_flow"
+ },
+ {
+ "include": "#annotations"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#self"
+ },
+ {
+ "include": "#class_definition"
+ },
+ {
+ "include": "#variable_definition"
+ },
+ {
+ "include": "#class_name"
+ },
+ {
+ "include": "#builtin_func"
+ },
+ {
+ "include": "#builtin_get_node_shorthand"
+ },
+ {
+ "include": "#builtin_classes"
+ },
+ {
+ "include": "#const_vars"
+ },
+ {
+ "include": "#pascal_case_class"
+ },
+ {
+ "include": "#class_new"
+ },
+ {
+ "include": "#class_is"
+ },
+ {
+ "include": "#class_enum"
+ },
+ {
+ "include": "#signal_declaration_bare"
+ },
+ {
+ "include": "#signal_declaration"
+ },
+ {
+ "include": "#function_declaration"
+ },
+ {
+ "include": "#function_keyword"
+ },
+ {
+ "include": "#any_method"
+ },
+ {
+ "include": "#any_property"
+ },
+ {
+ "include": "#extends"
+ }
+ ],
+ "repository": {
+ "comment": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.number-sign.gdscript"
+ }
+ },
+ "match": "(#).*$\\n?",
+ "name": "comment.line.number-sign.gdscript"
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "(?:(?<=get_node|has_node|find_node|get_node_or_null|NodePath)\\s*\\(\\s*)",
+ "end": "(?:\\s*\\))",
+ "patterns": [
+ {
+ "begin": "[\"']",
+ "end": "[\"']",
+ "name": "constant.character.escape"
+ },
+ {
+ "include": "#base_expression"
+ }
+ ]
+ },
+ {
+ "name": "invalid.illegal.escape.gdscript",
+ "begin": "'''",
+ "end": "'''"
+ },
+ {
+ "begin": "\"",
+ "end": "\"",
+ "patterns": [
+ {
+ "name": "constant.character.escape.untitled",
+ "match": "\\\\."
+ }
+ ],
+ "name": "string.quoted.double.gdscript"
+ },
+ {
+ "begin": "'",
+ "end": "'",
+ "patterns": [
+ {
+ "name": "constant.character.escape.untitled",
+ "match": "\\\\."
+ }
+ ],
+ "name": "string.quoted.single.gdscript"
+ },
+ {
+ "begin": "@\"",
+ "end": "\"",
+ "patterns": [
+ {
+ "name": "constant.character.escape.untitled",
+ "match": "\\."
+ }
+ ],
+ "name": "string.nodepath.gdscript"
+ }
+ ]
+ },
+ "nodepath_object": {
+ "name": "meta.literal.nodepath.gdscript",
+ "begin": "(NodePath)\\s*(?:\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.class.library.gdscript"
+ }
+ },
+ "end": "(?:\\))",
+ "patterns": [
+ {
+ "begin": "[\"']",
+ "end": "[\"']",
+ "name": "constant.character.escape",
+ "patterns": [
+ {
+ "match": "%",
+ "name": "keyword.control.flow"
+ }
+ ]
+ }
+ ]
+ },
+ "nodepath_function": {
+ "name": "meta.literal.nodepath.gdscript",
+ "begin": "(get_node_or_null|has_node|has_node_and_resource|find_node|get_node)\\s*(?:\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.gdscript"
+ }
+ },
+ "end": "(?:\\))",
+ "patterns": [
+ {
+ "begin": "[\"']",
+ "end": "[\"']",
+ "name": "constant.character.escape",
+ "patterns": [
+ {
+ "match": "%",
+ "name": "keyword.control.flow"
+ }
+ ]
+ }
+ ]
+ },
+ "self": {
+ "match": "\\bself\\b",
+ "name": "variable.language.gdscript"
+ },
+ "base_expression": {
+ "patterns": [
+ {
+ "include": "#builtin_get_node_shorthand"
+ },
+ {
+ "include": "#nodepath_object"
+ },
+ {
+ "include": "#nodepath_function"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#logic_op"
+ },
+ {
+ "include": "#lambda_declaration"
+ },
+ {
+ "include": "#in_keyword"
+ },
+ {
+ "include": "#control_flow"
+ },
+ {
+ "include": "#function_call"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#self"
+ },
+ {
+ "include": "#letter"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#builtin_func"
+ },
+ {
+ "include": "#builtin_classes"
+ },
+ {
+ "include": "#const_vars"
+ },
+ {
+ "include": "#pascal_case_class"
+ },
+ {
+ "include": "#line_continuation"
+ }
+ ]
+ },
+ "logic_op": {
+ "match": "\\b(and|or|not)\\b",
+ "name": "keyword.operator.wordlike.gdscript"
+ },
+ "in_keyword": {
+ "patterns": [
+ {
+ "match": "\\b(for)\\s+[a-zA-Z_]\\w*\\s+(in)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.gdscript"
+ },
+ "2": {
+ "name": "keyword.control.gdscript"
+ }
+ }
+ },
+ {
+ "match": "\\bin\\b",
+ "name": "keyword.operator.wordlike.gdscript"
+ }
+ ]
+ },
+ "compare_op": {
+ "match": "<=|>=|==|<|>|!=",
+ "name": "keyword.operator.comparison.gdscript"
+ },
+ "arithmetic_op": {
+ "match": "\\+=|-=|\\*=|/=|%=|&=|\\|=|\\*|/|%|\\+|-|<<|>>|&|\\||\\^|~",
+ "name": "keyword.operator.arithmetic.gdscript"
+ },
+ "assignment_op": {
+ "match": "=",
+ "name": "keyword.operator.assignment.gdscript"
+ },
+ "control_flow": {
+ "match": "\\b(?i:if|elif|else|for|while|break|continue|pass|return|match|yield|await)\\b",
+ "name": "keyword.control.gdscript"
+ },
+ "keywords": {
+ "match": "\\b(?i:class|class_name|extends|is|onready|tool|static|export|as|void|enum|preload|assert|breakpoint|rpc|sync|remote|master|puppet|slave|remotesync|mastersync|puppetsync|trait|namespace)\\b",
+ "name": "keyword.language.gdscript"
+ },
+ "letter": {
+ "match": "\\b(?i:true|false|null)\\b",
+ "name": "constant.language.gdscript"
+ },
+ "numbers": {
+ "patterns": [
+ {
+ "match": "\\b(?i:0x\\h*)\\b",
+ "name": "constant.numeric.integer.hexadecimal.gdscript"
+ },
+ {
+ "match": "\\b(?i:(\\d+\\.\\d*(e[\\-\\+]?\\d+)?))\\b",
+ "name": "constant.numeric.float.gdscript"
+ },
+ {
+ "match": "\\b(?i:(\\.\\d+(e[\\-\\+]?\\d+)?))\\b",
+ "name": "constant.numeric.float.gdscript"
+ },
+ {
+ "match": "\\b(?i:(\\d+e[\\-\\+]?\\d+))\\b",
+ "name": "constant.numeric.float.gdscript"
+ },
+ {
+ "match": "\\b\\d+\\b",
+ "name": "constant.numeric.integer.gdscript"
+ }
+ ]
+ },
+ "variable_definition": {
+ "begin": "\\b(?:(var)|(const))\\s+",
+ "end": "$|;",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.var.gdscript"
+ },
+ "2": {
+ "name": "storage.type.const.gdscript"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(:)\\s*([a-zA-Z_]\\w*)?",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.annotation.gdscript"
+ },
+ "2": {
+ "name": "entity.name.type.class.gdscript"
+ }
+ }
+ },
+ {
+ "match": "=(?!=)",
+ "name": "keyword.operator.assignment.gdscript"
+ },
+ {
+ "match": "(setget)\\s+([a-zA-Z_]\\w*)(?:[,]\\s*([a-zA-Z_]\\w*))?",
+ "captures": {
+ "1": {
+ "name": "storage.type.const.gdscript"
+ },
+ "2": {
+ "name": "entity.name.function.gdscript"
+ },
+ "3": {
+ "name": "entity.name.function.gdscript"
+ }
+ }
+ },
+ {
+ "include": "#base_expression"
+ }
+ ]
+ },
+ "getter_setter_godot4": {
+ "patterns": [
+ {
+ "match": "\\b(get):",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.gdscript"
+ }
+ }
+ },
+ {
+ "name": "meta.function.gdscript",
+ "begin": "(?x) \\s+\n (set) \\s*\n (?=\\()",
+ "end": "(:|(?=[#'\"\\n]))",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.gdscript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameters"
+ },
+ {
+ "include": "#line_continuation"
+ },
+ {
+ "match": "\\s*(\\-\\>)\\s*([a-zA-Z_]\\w*)\\s*\\:",
+ "captures": {
+ "1": {},
+ "2": {
+ "name": "entity.name.type.class.gdscript"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "class_definition": {
+ "captures": {
+ "1": {
+ "name": "entity.name.type.class.gdscript"
+ },
+ "2": {
+ "name": "class.other.gdscript"
+ }
+ },
+ "match": "(?<=^class)\\s+([a-zA-Z_]\\w*)\\s*(?=:)"
+ },
+ "class_new": {
+ "captures": {
+ "1": {
+ "name": "entity.name.type.class.gdscript"
+ },
+ "2": {
+ "name": "storage.type.new.gdscript"
+ }
+ },
+ "match": "\\b([a-zA-Z_]\\w*).(new)\\("
+ },
+ "class_is": {
+ "captures": {
+ "1": {
+ "name": "storage.type.is.gdscript"
+ },
+ "2": {
+ "name": "entity.name.type.class.gdscript"
+ }
+ },
+ "match": "\\s+(is)\\s+([a-zA-Z_]\\w*)"
+ },
+ "class_enum": {
+ "captures": {
+ "1": {
+ "name": "entity.name.type.class.gdscript"
+ },
+ "2": {
+ "name": "constant.language.gdscript"
+ }
+ },
+ "match": "\\b([A-Z][a-zA-Z_0-9]*)\\.([A-Z_0-9]+)"
+ },
+ "class_name": {
+ "captures": {
+ "1": {
+ "name": "entity.name.type.class.gdscript"
+ },
+ "2": {
+ "name": "class.other.gdscript"
+ }
+ },
+ "match": "(?<=class_name)\\s+([a-zA-Z_]\\w*(\\.([a-zA-Z_]\\w*))?)"
+ },
+ "extends": {
+ "match": "(?<=extends)\\s+[a-zA-Z_]\\w*(\\.([a-zA-Z_]\\w*))?",
+ "name": "entity.other.inherited-class.gdscript"
+ },
+ "builtin_func": {
+ "match": "(?<![^.]\\.|:)\\b(abs|absf|absi|acos|asin|assert|atan|atan2|bytes2var|bytes2var_with_objects|ceil|char|clamp|clampf|clampi|Color8|convert|cos|cosh|cubic_interpolate|db2linear|decimals|dectime|deg2rad|dict2inst|ease|error_string|exp|floor|fmod|fposmod|funcref|get_stack|hash|inst2dict|instance_from_id|inverse_lerp|is_equal_approx|is_inf|is_instance_id_valid|is_instance_valid|is_nan|is_zero_approx|len|lerp|lerp_angle|linear2db|load|log|max|maxf|maxi|min|minf|mini|move_toward|nearest_po2|pingpong|posmod|pow|preload|print|printerr|printraw|prints|printt|print_debug|print_stack|print_verbose|push_error|push_warning|rad2deg|randf|randfn|randf_range|randi|randi_range|randomize|rand_from_seed|rand_range|rand_seed|range|range_lerp|range_step_decimals|rid_allocate_id|rid_from_int64|round|seed|sign|signf|signi|sin|sinh|smoothstep|snapped|sqrt|stepify|step_decimals|str|str2var|tan|tanh|typeof|type_exists|var2bytes|var2bytes_with_objects|var2str|weakref|wrapf|wrapi|yield)\\b(?=(\\()([^)]*)(\\)))",
+ "name": "support.function.builtin.gdscript"
+ },
+ "builtin_get_node_shorthand": {
+ "patterns": [
+ {
+ "include": "#builtin_get_node_shorthand_quoted"
+ },
+ {
+ "include": "#builtin_get_node_shorthand_bare"
+ }
+ ]
+ },
+ "builtin_get_node_shorthand_quoted": {
+ "begin": "(\\$)([\"'])",
+ "end": "([\"'])",
+ "name": "support.function.builtin.shorthand.gdscript",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow"
+ },
+ "2": {
+ "name": "constant.character.escape"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "constant.character.escape"
+ }
+ },
+ "patterns": [
+ {
+ "match": "%",
+ "name": "keyword.control.flow"
+ },
+ {
+ "match": "[^%^\"^']*",
+ "name": "constant.character.escape"
+ }
+ ]
+ },
+ "builtin_get_node_shorthand_bare": {
+ "begin": "(\\$)",
+ "end": "[^\\w%]",
+ "name": "support.function.builtin.shorthand.gdscript",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow"
+ }
+ },
+ "patterns": [
+ {
+ "match": "[a-zA-Z_]\\w*/?",
+ "name": "constant.character.escape"
+ },
+ {
+ "match": "%[a-zA-Z_]\\w*/?",
+ "name": "invalid.illegal.escape.gdscript"
+ }
+ ]
+ },
+ "annotations": {
+ "match": "(@)(export|export_color_no_alpha|export_dir|export_enum|export_exp_easing|export_file|export_flags|export_flags_2d_navigation|export_flags_2d_physics|export_flags_2d_render|export_flags_3d_navigation|export_flags_3d_physics|export_flags_3d_render|export_global_dir|export_global_file|export_multiline|export_node_path|export_placeholder|export_range|icon|onready|rpc|tool|warning_ignore)\\b",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.decorator.gdscript"
+ },
+ "2": {
+ "name": "entity.name.function.decorator.gdscript"
+ }
+ }
+ },
+ "builtin_classes": {
+ "match": "(?<![^.]\\.|:)\\b(OS|GDScript|Vector2|Vector2i|Vector3|Vector3i|Color|Rect2|Rect2i|Array|Basis|Dictionary|Plane|Quat|RID|Rect3|Transform|Transform2D|Transform3D|AABB|String|Color|NodePath|Object|PoolByteArray|PoolIntArray|PoolRealArray|PoolStringArray|PoolVector2Array|PoolVector3Array|PoolColorArray|bool|int|float|StringName|Quaternion|PackedByteArray|PackedInt32Array|PackedInt64Array|PackedFloat32Array|PackedFloat64Array|PackedStringArray|PackedVector2Array|PackedVector2iArray|PackedVector3Array|PackedVector3iArray|PackedColorArray|super)\\b",
+ "name": "support.class.library.gdscript"
+ },
+ "const_vars": {
+ "match": "\\b([A-Z_][A-Z_0-9]*)\\b",
+ "name": "constant.language.gdscript"
+ },
+ "pascal_case_class": {
+ "match": "\\b([A-Z][a-z_0-9]*([A-Z]?[a-z_0-9]+)*[A-Z]?)\\b",
+ "name": "support.class.library.gdscript"
+ },
+ "signal_declaration_bare": {
+ "match": "(?x) \\s*\n (signal) \\s+\n ([a-zA-Z_]\\w*)(?=[\\n\\s])",
+ "captures": {
+ "1": {
+ "name": "storage.type.function.gdscript"
+ },
+ "2": {
+ "name": "entity.name.function.gdscript"
+ }
+ }
+ },
+ "signal_declaration": {
+ "name": "meta.signal.gdscript",
+ "begin": "(?x) \\s*\n (signal) \\s+\n ([a-zA-Z_]\\w*) \\s*\n (?=\\()",
+ "end": "((?=[#'\"\\n]))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.gdscript"
+ },
+ "2": {
+ "name": "entity.name.function.gdscript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameters"
+ },
+ {
+ "include": "#line_continuation"
+ },
+ {
+ "match": "\\s*(\\-\\>)\\s*([a-zA-Z_]\\w*)\\s*\\:",
+ "captures": {
+ "1": {},
+ "2": {
+ "name": "entity.name.type.class.gdscript"
+ }
+ }
+ }
+ ]
+ },
+ "lambda_declaration": {
+ "name": "meta.function.gdscript",
+ "begin": "(func)(?=\\()",
+ "end": "(:|(?=[#'\"\\n]))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.gdscript"
+ },
+ "2": {
+ "name": "entity.name.function.gdscript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameters"
+ },
+ {
+ "include": "#line_continuation"
+ }
+ ]
+ },
+ "function_declaration": {
+ "name": "meta.function.gdscript",
+ "begin": "(?x) \\s*\n (func) \\s+\n ([a-zA-Z_]\\w*) \\s*\n (?=\\()",
+ "end": "((:)|(?=[#'\"\\n]))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.gdscript"
+ },
+ "2": {
+ "name": "entity.name.function.gdscript"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.function.begin.gdscript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameters"
+ },
+ {
+ "include": "#line_continuation"
+ },
+ {
+ "match": "\\s*(\\-\\>)\\s*([a-zA-Z_]\\w*)\\s*\\:",
+ "captures": {
+ "1": {},
+ "2": {
+ "name": "entity.name.type.class.gdscript"
+ }
+ }
+ },
+ {
+ "include": "#base_expression"
+ }
+ ]
+ },
+ "function_keyword": {
+ "match": "func",
+ "name": "keyword.language.gdscript"
+ },
+ "parameters": {
+ "name": "meta.function.parameters.gdscript",
+ "begin": "(\\()",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.begin.gdscript"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.gdscript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#annotated_parameter"
+ },
+ {
+ "match": "(?x)\n ([a-zA-Z_]\\w*)\n \\s* (?: (,) | (?=[)#\\n=]))\n",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.function.language.gdscript"
+ },
+ "2": {
+ "name": "punctuation.separator.parameters.gdscript"
+ }
+ }
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#loose_default"
+ }
+ ]
+ },
+ "loose_default": {
+ "begin": "(=)",
+ "end": "(,)|(?=\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.gdscript"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.parameters.gdscript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#base_expression"
+ }
+ ]
+ },
+ "annotated_parameter": {
+ "begin": "(?x)\n \\b\n ([a-zA-Z_]\\w*) \\s* (:)\n",
+ "end": "(,)|(?=\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.parameter.function.language.gdscript"
+ },
+ "2": {
+ "name": "punctuation.separator.annotation.gdscript"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.parameters.gdscript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#base_expression"
+ },
+ {
+ "name": "keyword.operator.assignment.gdscript",
+ "match": "=(?!=)"
+ }
+ ]
+ },
+ "line_continuation": {
+ "patterns": [
+ {
+ "match": "(\\\\)\\s*(\\S.*$\\n?)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.continuation.line.gdscript"
+ },
+ "2": {
+ "name": "invalid.illegal.line.continuation.gdscript"
+ }
+ }
+ },
+ {
+ "begin": "(\\\\)\\s*$\\n?",
+ "end": "(?x)\n (?=^\\s*$)\n |\n (?! (\\s* [rR]? (\\'\\'\\'|\\\"\\\"\\\"|\\'|\\\"))\n |\n (\\G $) (?# '\\G' is necessary for ST)\n )\n",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.continuation.line.gdscript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#base_expression"
+ }
+ ]
+ }
+ ]
+ },
+ "any_method": {
+ "match": "\\b([A-Za-z_]\\w*)\\b(?=\\s*(?:[(]))",
+ "name": "support.function.any-method.gdscript"
+ },
+ "any_property": {
+ "match": "(?<=[^.]\\.)\\b([A-Za-z_]\\w*)\\b(?![(])",
+ "name": "variable.other.property.gdscript"
+ },
+ "function_call": {
+ "name": "meta.function-call.gdscript",
+ "comment": "Regular function call of the type \"name(args)\"",
+ "begin": "(?x)\n \\b(?=\n ([a-zA-Z_]\\w*) \\s* (\\()\n )\n",
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.gdscript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_name"
+ },
+ {
+ "include": "#function_arguments"
+ }
+ ]
+ },
+ "function_name": {
+ "patterns": [
+ {
+ "include": "#builtin_func"
+ },
+ {
+ "include": "#builtin_classes"
+ },
+ {
+ "comment": "Some color schemas support meta.function-call.generic scope",
+ "name": "support.function.any-method.gdscript",
+ "match": "(?x)\n \\b ([a-zA-Z_]\\w*) \\b\n"
+ }
+ ]
+ },
+ "function_arguments": {
+ "begin": "(\\()",
+ "end": "(?=\\))(?!\\)\\s*\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.gdscript"
+ }
+ },
+ "contentName": "meta.function-call.arguments.gdscript",
+ "patterns": [
+ {
+ "name": "punctuation.separator.arguments.gdscript",
+ "match": "(,)"
+ },
+ {
+ "match": "\\b([a-zA-Z_]\\w*)\\s*(=)(?!=)",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.function-call.gdscript"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.gdscript"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.assignment.gdscript",
+ "match": "=(?!=)"
+ },
+ {
+ "include": "#base_expression"
+ },
+ {
+ "match": "\\s*(\\))\\s*(\\()",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.gdscript"
+ },
+ "2": {
+ "name": "punctuation.definition.arguments.begin.gdscript"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/gdshader.tmLanguage.json b/node_modules/shiki/languages/gdshader.tmLanguage.json
new file mode 100644
index 0000000..9221f38
--- /dev/null
+++ b/node_modules/shiki/languages/gdshader.tmLanguage.json
@@ -0,0 +1,403 @@
+{
+ "name": "gdshader",
+ "scopeName": "source.gdshader",
+ "uuid": "3a95d25d-688b-481f-a581-eee47f00e5ca",
+ "fileTypes": ["gdshader"],
+ "patterns": [
+ {
+ "include": "#any"
+ }
+ ],
+ "repository": {
+ "any": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#enclosed"
+ },
+ {
+ "include": "#classifier"
+ },
+ {
+ "include": "#definition"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#element"
+ },
+ {
+ "include": "#separator"
+ },
+ {
+ "include": "#operator"
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "include": "#commentLine"
+ },
+ {
+ "include": "#commentBlock"
+ }
+ ]
+ },
+ "commentLine": {
+ "name": "comment.line.double-slash.gdshader",
+ "begin": "//",
+ "end": "$"
+ },
+ "commentBlock": {
+ "name": "comment.block.gdshader",
+ "begin": "/\\*",
+ "end": "\\*/"
+ },
+ "enclosed": {
+ "name": "meta.parenthesis.gdshader",
+ "begin": "\\(",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.parenthesis.gdshader"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#any"
+ }
+ ]
+ },
+ "classifier": {
+ "name": "meta.classifier.gdshader",
+ "begin": "(?=\\b(?:shader_type|render_mode)\\b)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#identifierClassification"
+ },
+ {
+ "include": "#separator"
+ }
+ ],
+ "end": "(?<=;)"
+ },
+ "classifierKeyword": {
+ "name": "keyword.language.classifier.gdshader",
+ "match": "\\b(?:shader_type|render_mode)\\b"
+ },
+ "identifierClassification": {
+ "name": "entity.other.inherited-class.gdshader",
+ "match": "\\b[a-z_]+\\b"
+ },
+ "definition": {
+ "patterns": [
+ {
+ "include": "#structDefinition"
+ }
+ ]
+ },
+ "arraySize": {
+ "name": "meta.array-size.gdshader",
+ "begin": "\\[",
+ "end": "\\]",
+ "captures": {
+ "0": {
+ "name": "punctuation.bracket.gdshader"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#element"
+ },
+ {
+ "include": "#separator"
+ }
+ ]
+ },
+ "structDefinition": {
+ "begin": "(?=\\b(?:struct)\\b)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#structName"
+ },
+ {
+ "include": "#structDefinitionBlock"
+ },
+ {
+ "include": "#separator"
+ }
+ ],
+ "end": "(?<=;)"
+ },
+ "structKeyword": {
+ "name": "keyword.other.struct.gdshader",
+ "match": "\\b(?:struct)\\b"
+ },
+ "structName": {
+ "name": "entity.name.type.struct.gdshader",
+ "match": "\\b[a-zA-Z_]\\w*\\b"
+ },
+ "structDefinitionBlock": {
+ "name": "meta.definition.block.struct.gdshader",
+ "begin": "\\{",
+ "end": "\\}",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.block.struct.gdshader"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#precisionKeyword"
+ },
+ {
+ "include": "#fieldDefinition"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#any"
+ }
+ ]
+ },
+ "fieldDefinition": {
+ "name": "meta.definition.field.gdshader",
+ "begin": "\\b[a-zA-Z_]\\w*\\b",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#typeKeyword"
+ },
+ {
+ "match": ".+",
+ "name": "entity.name.type.gdshader"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#arraySize"
+ },
+ {
+ "include": "#fieldName"
+ },
+ {
+ "include": "#any"
+ }
+ ],
+ "end": "(?<=;)"
+ },
+ "fieldName": {
+ "name": "entity.name.variable.field.gdshader",
+ "match": "\\b[a-zA-Z_]\\w*\\b"
+ },
+ "keyword": {
+ "patterns": [
+ {
+ "include": "#classifierKeyword"
+ },
+ {
+ "include": "#structKeyword"
+ },
+ {
+ "include": "#controlKeyword"
+ },
+ {
+ "include": "#modifierKeyword"
+ },
+ {
+ "include": "#precisionKeyword"
+ },
+ {
+ "include": "#typeKeyword"
+ },
+ {
+ "include": "#hintKeyword"
+ }
+ ]
+ },
+ "controlKeyword": {
+ "name": "keyword.control.gdshader",
+ "match": "\\b(?:if|else|do|while|for|continue|break|switch|case|default|return|discard)\\b"
+ },
+ "modifierKeyword": {
+ "name": "storage.modifier.gdshader",
+ "match": "\\b(?:const|global|instance|uniform|varying|in|out|inout|flat|smooth)\\b"
+ },
+ "precisionKeyword": {
+ "name": "storage.type.built-in.primitive.precision.gdshader",
+ "match": "\\b(?:low|medium|high)p\\b"
+ },
+ "typeKeyword": {
+ "name": "support.type.gdshader",
+ "match": "\\b(?:void|bool|[biu]?vec[234]|u?int|float|mat[234]|[iu]?sampler(?:3D|2D(?:Array)?)|samplerCube)\\b"
+ },
+ "hintKeyword": {
+ "name": "support.type.annotation.gdshader",
+ "match": "\\b(?:source_color|hint_(?:color|range|(?:black_)?albedo|normal|(?:default_)?(?:white|black)|aniso|anisotropy|roughness_(?:[rgba]|normal|gray))|filter_(?:nearest|linear)(?:_mipmap(?:_anisotropic)?)?|repeat_(?:en|dis)able)\\b"
+ },
+ "element": {
+ "patterns": [
+ {
+ "include": "#literalFloat"
+ },
+ {
+ "include": "#literalInt"
+ },
+ {
+ "include": "#literalBool"
+ },
+ {
+ "include": "#identifierType"
+ },
+ {
+ "include": "#constructor"
+ },
+ {
+ "include": "#processorFunction"
+ },
+ {
+ "include": "#identifierFunction"
+ },
+ {
+ "include": "#swizzling"
+ },
+ {
+ "include": "#identifierField"
+ },
+ {
+ "include": "#constantFloat"
+ },
+ {
+ "include": "#languageVariable"
+ },
+ {
+ "include": "#identifierVariable"
+ }
+ ]
+ },
+ "literalFloat": {
+ "name": "constant.numeric.float.gdshader",
+ "match": "\\b(?:\\d+[eE][-+]?\\d+|(?:\\d*[.]\\d+|\\d+[.])(?:[eE][-+]?\\d+)?)[fF]?"
+ },
+ "literalInt": {
+ "name": "constant.numeric.integer.gdshader",
+ "match": "\\b(?:0[xX][0-9A-Fa-f]+|\\d+[uU]?)\\b"
+ },
+ "literalBool": {
+ "name": "constant.language.boolean.gdshader",
+ "match": "\\b(?:false|true)\\b"
+ },
+ "identifierType": {
+ "name": "entity.name.type.gdshader",
+ "match": "\\b[a-zA-Z_]\\w*(?=(?:\\s*\\[\\s*\\w*\\s*\\])?\\s+[a-zA-Z_]\\w*\\b)"
+ },
+ "constructor": {
+ "name": "entity.name.type.constructor.gdshader",
+ "match": "\\b[a-zA-Z_]\\w*(?=\\s*\\[\\s*\\w*\\s*\\]\\s*[(])|\\b[A-Z]\\w*(?=\\s*[(])"
+ },
+ "processorFunction": {
+ "name": "support.function.gdshader",
+ "match": "\\b(?:vertex|fragment|light|start|process|sky|fog)(?=(?:\\s|/\\*(?:\\*(?!/)|[^*])*\\*/)*[(])"
+ },
+ "identifierFunction": {
+ "name": "entity.name.function.gdshader",
+ "match": "\\b[a-zA-Z_]\\w*(?=(?:\\s|/\\*(?:\\*(?!/)|[^*])*\\*/)*[(])"
+ },
+ "swizzling": {
+ "match": "([.])\\s*([xyzw]{2,4}|[rgba]{2,4}|[stpq]{2,4})\\b",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.gdshader"
+ },
+ "2": {
+ "name": "variable.other.property.gdshader"
+ }
+ }
+ },
+ "identifierField": {
+ "match": "([.])\\s*([a-zA-Z_]\\w*)\\b(?!\\s*\\()",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.gdshader"
+ },
+ "2": {
+ "name": "entity.name.variable.field.gdshader"
+ }
+ }
+ },
+ "constantFloat": {
+ "name": "constant.language.float.gdshader",
+ "match": "\\b(?:E|PI|TAU)\\b"
+ },
+ "languageVariable": {
+ "name": "variable.language.gdshader",
+ "match": "\\b(?:[A-Z][A-Z_0-9]*)\\b"
+ },
+ "identifierVariable": {
+ "name": "variable.name.gdshader",
+ "match": "\\b[a-zA-Z_]\\w*\\b"
+ },
+ "separator": {
+ "patterns": [
+ {
+ "match": "[.]",
+ "name": "punctuation.accessor.gdshader"
+ },
+ {
+ "include": "#separatorComma"
+ },
+ {
+ "match": "[;]",
+ "name": "punctuation.terminator.statement.gdshader"
+ },
+ {
+ "match": "[:]",
+ "name": "keyword.operator.type.annotation.gdshader"
+ }
+ ]
+ },
+ "separatorComma": {
+ "name": "punctuation.separator.comma.gdshader",
+ "match": "[,]"
+ },
+ "operator": {
+ "name": "keyword.operator.gdshader",
+ "match": "\\<\\<\\=?|\\>\\>\\=?|[-+*/&|<>=!]\\=|\\&\\&|[|][|]|[-+~!*/%<>&^|=]"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/gherkin.tmLanguage.json b/node_modules/shiki/languages/gherkin.tmLanguage.json
new file mode 100644
index 0000000..3b33010
--- /dev/null
+++ b/node_modules/shiki/languages/gherkin.tmLanguage.json
@@ -0,0 +1,132 @@
+{
+ "fileTypes": ["feature"],
+ "firstLineMatch": "기능|機能|功能|フィーチャ|خاصية|תכונה|Функціонал|Функционалност|Функционал|Особина|Функция|Функциональность|Свойство|Могућност|Özellik|Właściwość|Tính năng|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Ability|Business Need|Feature|Egenskap|Egenskab|Crikey|Característica|Arwedd(.*)",
+ "foldingStartMarker": "^\\s*\\b(예|시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|例子|例|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|サンプル|سيناريو مخطط|سيناريو|امثلة|الخلفية|תרחיש|תבנית תרחיש|רקע|דוגמאות|Тарих|Сценарій|Сценарији|Сценарио|Сценарий структураси|Сценарий|Структура сценарію|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Примери|Пример|Приклади|Предыстория|Предистория|Позадина|Передумова|Основа|Мисоллар|Концепт|Контекст|Значения|Örnekler|Założenia|Wharrimean is|Voorbeelden|Variantai|Tình huống|The thing of it is|Tausta|Taust|Tapausaihio|Tapaus|Tapaukset|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenarios|Scenario Outline|Scenario Amlinellol|Scenario|Example|Scenarijus|Scenariji|Scenarijaus šablonas|Scenarijai|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Piemēri|Pavyzdžiai|Paraugs|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Juhtumid|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Exemplos|Exemples|Exemplele|Exempel|Examples|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esempi|Escenario|Escenari|Enghreifftiau|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Dis is what went down|Dasar|Contoh|Contexto|Contexte|Contesto|Condiţii|Conditii|Cobber|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Beispiele|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y'all|Achtergrond|Abstrakt Scenario|Abstract Scenario|Rule|Regla|Règle|Regel|Regra)",
+ "foldingStopMarker": "^\\s*$",
+ "keyEquivalent": "^~C",
+ "name": "gherkin",
+ "patterns": [
+ {
+ "include": "#feature_element_keyword"
+ },
+ {
+ "include": "#feature_keyword"
+ },
+ {
+ "include": "#step_keyword"
+ },
+ {
+ "include": "#strings_triple_quote"
+ },
+ {
+ "include": "#strings_single_quote"
+ },
+ {
+ "include": "#strings_double_quote"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#tags"
+ },
+ {
+ "include": "#scenario_outline_variable"
+ },
+ {
+ "include": "#table"
+ }
+ ],
+ "repository": {
+ "comments": {
+ "captures": {
+ "0": {
+ "name": "comment.line.number-sign"
+ }
+ },
+ "match": "^\\s*(#.*)"
+ },
+ "table": {
+ "begin": "^\\s*\\|",
+ "end": "\\|\\s*$",
+ "name": "keyword.control.cucumber.table",
+ "patterns": [
+ {
+ "match": "\\w",
+ "name": "source"
+ }
+ ]
+ },
+ "feature_keyword": {
+ "captures": {
+ "1": {
+ "name": "keyword.language.gherkin.feature"
+ },
+ "2": {
+ "name": "string.language.gherkin.feature.title"
+ }
+ },
+ "match": "^\\s*(기능|機能|功能|フィーチャ|خاصية|תכונה|Функціонал|Функционалност|Функционал|Особина|Функция|Функциональность|Свойство|Могућност|Özellik|Właściwość|Tính năng|Savybė|Požiadavka|Požadavek|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|Jellemző|Fīča|Funzionalità|Funktionalität|Funkcionalnost|Funkcionalitāte|Funcționalitate|Functionaliteit|Functionalitate|Funcionalitat|Funcionalidade|Fonctionnalité|Fitur|Ability|Business Need|Feature|Ability|Egenskap|Egenskab|Crikey|Característica|Arwedd):(.*)\\b"
+ },
+ "step_keyword": {
+ "captures": {
+ "1": {
+ "name": "keyword.language.gherkin.feature.step"
+ }
+ },
+ "match": "^\\s*(En |و |Y |E |Եվ |Ya |Too right |Və |Həm |A |И |而且 |并且 |同时 |並且 |同時 |Ak |Epi |A také |Og |😂 |And |Kaj |Ja |Et que |Et qu' |Et |და |Und |Και |અને |וגם |और |तथा |És |Dan |Agus |かつ |Lan |ಮತ್ತು |'ej |latlh |그리고 |AN |Un |Ir |an |a |Мөн |Тэгээд |Ond |7 |ਅਤੇ |Aye |Oraz |Si |Și |Şi |К тому же |Также |An |A tiež |A taktiež |A zároveň |In |Ter |Och |மேலும் |மற்றும் |Һәм |Вә |మరియు |และ |Ve |І |А також |Та |اور |Ва |Và |Maar |لكن |Pero |Բայց |Peru |Yeah nah |Amma |Ancaq |Ali |Но |Però |但是 |Men |Ale |😔 |But |Sed |Kuid |Mutta |Mais que |Mais qu' |Mais |მაგ­რამ |Aber |Αλλά |પણ |אבל |पर |परन्तु |किन्तु |De |En |Tapi |Ach |Ma |しかし |但し |ただし |Nanging |Ananging |ಆದರೆ |'ach |'a |하지만 |단 |BUT |Bet |awer |mä |No |Tetapi |Гэхдээ |Харин |Ac |ਪਰ |اما |Avast! |Mas |Dar |А |Иначе |Buh |Али |Toda |Ampak |Vendar |ஆனால் |Ләкин |Әмма |కాని |แต่ |Fakat |Ama |Але |لیکن |Лекин |Бирок |Аммо |Nhưng |Ond |Dan |اذاً |ثم |Alavez |Allora |Antonces |Ապա |Entós |But at the end of the day I reckon |O halda |Zatim |То |Aleshores |Cal |那么 |那麼 |Lè sa a |Le sa a |Onda |Pak |Så |🙏 |Then |Do |Siis |Niin |Alors |Entón |Logo |მაშინ |Dann |Τότε |પછી |אז |אזי |तब |तदा |Akkor |Þá |Maka |Ansin |ならば |Njuk |Banjur |ನಂತರ |vaj |그러면 |DEN |Tad |Tada |dann |Тогаш |Togash |Kemudian |Тэгэхэд |Үүний дараа |Tha |Þa |Ða |Tha the |Þa þe |Ða ðe |ਤਦ |آنگاه |Let go and haul |Wtedy |Então |Entao |Atunci |Затем |Тогда |Dun |Den youse gotta |Онда |Tak |Potom |Nato |Potem |Takrat |Entonces |அப்பொழுது |Нәтиҗәдә |అప్పుడు |ดังนั้น |O zaman |Тоді |پھر |تب |Унда |Thì |Yna |Wanneer |متى |عندما |Cuan |Եթե |Երբ |Cuando |It's just unbelievable |Əgər |Nə vaxt ki |Kada |Когато |Quan |当 |當 |Lè |Le |Kad |Když |Når |Als |🎬 |When |Se |Kui |Kun |Quand |Lorsque |Lorsqu' |Cando |როდესაც |Wenn |Όταν |ક્યારે |כאשר |जब |कदा |Majd |Ha |Amikor |Þegar |Ketika |Nuair a |Nuair nach |Nuair ba |Nuair nár |Quando |もし |Manawa |Menawa |ಸ್ಥಿತಿಯನ್ನು |qaSDI' |만일 |만약 |WEN |Ja |Kai |wann |Кога |Koga |Apabila |Хэрэв |Tha |Þa |Ða |ਜਦੋਂ |هنگامی |Blimey! |Jeżeli |Jeśli |Gdy |Kiedy |Cand |Când |Когда |Если |Wun |Youse know like when |Када |Кад |Keď |Ak |Ko |Ce |Če |Kadar |När |எப்போது |Әгәр |ఈ పరిస్థితిలో |เมื่อ |Eğer ki |Якщо |Коли |جب |Агар |Khi |Pryd |Gegewe |بفرض |Dau |Dada |Daus |Dadas |Դիցուք |Dáu |Daos |Daes |Y'know |Tutaq ki |Verilir |Dato |Дадено |Donat |Donada |Atès |Atesa |假如 |假设 |假定 |假設 |Sipoze |Sipoze ke |Sipoze Ke |Zadan |Zadani |Zadano |Pokud |Za předpokladu |Givet |Gegeven |Stel |😐 |Given |Donitaĵo |Komence |Eeldades |Oletetaan |Soit |Etant donné que |Etant donné qu' |Etant donné |Etant donnée |Etant donnés |Etant données |Étant donné que |Étant donné qu' |Étant donné |Étant donnée |Étant donnés |Étant données |Dado |Dados |მოცემული |Angenommen |Gegeben sei |Gegeben seien |Δεδομένου |આપેલ છે |בהינתן |अगर |यदि |चूंकि |Amennyiben |Adott |Ef |Dengan |Cuir i gcás go |Cuir i gcás nach |Cuir i gcás gur |Cuir i gcás nár |Data |Dati |Date |前提 |Nalika |Nalikaning |ನೀಡಿದ |ghu' noblu' |DaH ghu' bejlu' |조건 |먼저 |I CAN HAZ |Kad |Duota |ugeholl |Дадена |Dadeno |Dadena |Diberi |Bagi |Өгөгдсөн нь |Анх |Gitt |Thurh |Þurh |Ðurh |ਜੇਕਰ |ਜਿਵੇਂ ਕਿ |با فرض |Gangway! |Zakładając |Mając |Zakładając, że |Date fiind |Dat fiind |Dată fiind |Dati fiind |Dați fiind |Daţi fiind |Допустим |Дано |Пусть |Givun |Youse know when youse got |За дато |За дате |За дати |Za dato |Za date |Za dati |Pokiaľ |Za predpokladu |Dano |Podano |Zaradi |Privzeto |கொடுக்கப்பட்ட |Әйтик |చెప్పబడినది |กำหนดให้ |Diyelim ki |Припустимо |Припустимо, що |Нехай |اگر |بالفرض |فرض کیا |Агар |Biết |Cho |Anrhegedig a |\\* )"
+ },
+ "feature_element_keyword": {
+ "captures": {
+ "1": {
+ "name": "keyword.language.gherkin.feature.scenario"
+ },
+ "2": {
+ "name": "string.language.gherkin.scenario.title.title"
+ }
+ },
+ "match": "^\\s*(예|시나리오 개요|시나리오|배경|背景|場景大綱|場景|场景大纲|场景|劇本大綱|劇本|例子|例|テンプレ|シナリオテンプレート|シナリオテンプレ|シナリオアウトライン|シナリオ|サンプル|سيناريو مخطط|سيناريو|امثلة|الخلفية|תרחיש|תבנית תרחיש|רקע|דוגמאות|Тарих|Сценарій|Сценарији|Сценарио|Сценарий структураси|Сценарий|Структура сценарію|Структура сценарија|Структура сценария|Скица|Рамка на сценарий|Примери|Пример|Приклади|Предыстория|Предистория|Позадина|Передумова|Основа|Мисоллар|Концепт|Контекст|Значения|Örnekler|Założenia|Wharrimean is|Voorbeelden|Variantai|Tình huống|The thing of it is|Tausta|Taust|Tapausaihio|Tapaus|Tapaukset|Szenariogrundriss|Szenario|Szablon scenariusza|Stsenaarium|Struktura scenarija|Skica|Skenario konsep|Skenario|Situācija|Senaryo taslağı|Senaryo|Scénář|Scénario|Schema dello scenario|Scenārijs pēc parauga|Scenārijs|Scenár|Scenariusz|Scenariul de şablon|Scenariul de sablon|Scenariu|Scenarios|Scenario Outline|Scenario Amlinellol|Scenario|Example|Scenarijus|Scenariji|Scenarijaus šablonas|Scenarijai|Scenarij|Scenarie|Rerefons|Raamstsenaarium|Příklady|Példák|Príklady|Przykłady|Primjeri|Primeri|Primer|Pozadí|Pozadina|Pozadie|Plan du scénario|Plan du Scénario|Piemēri|Pavyzdžiai|Paraugs|Osnova scénáře|Osnova|Náčrt Scénáře|Náčrt Scenáru|Mate|MISHUN SRSLY|MISHUN|Kịch bản|Kontext|Konteksts|Kontekstas|Kontekst|Koncept|Khung tình huống|Khung kịch bản|Juhtumid|Háttér|Grundlage|Geçmiş|Forgatókönyv vázlat|Forgatókönyv|Exemplos|Exemples|Exemplele|Exempel|Examples|Esquema do Cenário|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esempi|Escenario|Escenari|Enghreifftiau|Eksempler|Ejemplos|EXAMPLZ|Dữ liệu|Dis is what went down|Dasar|Contoh|Contexto|Contexte|Contesto|Condiţii|Conditii|Cobber|Cenário|Cenario|Cefndir|Bối cảnh|Blokes|Beispiele|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|All y'all|Achtergrond|Abstrakt Scenario|Abstract Scenario|Rule|Regla|Règle|Regel|Regra):(.*)"
+ },
+ "scenario_outline_variable": {
+ "match": "<[a-zA-Z0-9 _-]*>",
+ "name": "variable.other"
+ },
+ "strings_double_quote": {
+ "begin": "(?<![a-zA-Z0-9'])\"",
+ "end": "\"(?![a-zA-Z0-9'])",
+ "name": "string.quoted.double",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.untitled"
+ }
+ ]
+ },
+ "strings_single_quote": {
+ "begin": "(?<![a-zA-Z0-9\"])'",
+ "end": "'(?![a-zA-Z0-9\"])",
+ "name": "string.quoted.single",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape"
+ }
+ ]
+ },
+ "strings_triple_quote": {
+ "begin": "\"\"\".*",
+ "end": "\"\"\"",
+ "name": "string.quoted.single"
+ },
+ "tags": {
+ "captures": {
+ "0": {
+ "name": "entity.name.type.class.tsx"
+ }
+ },
+ "match": "(@[^@\\r\\n\\t ]+)"
+ }
+ },
+ "scopeName": "text.gherkin.feature",
+ "uuid": "85E2C52C-9B16-4A54-81E7-6D8D3ADAEFA8"
+}
diff --git a/node_modules/shiki/languages/git-commit.tmLanguage.json b/node_modules/shiki/languages/git-commit.tmLanguage.json
new file mode 100644
index 0000000..f619774
--- /dev/null
+++ b/node_modules/shiki/languages/git-commit.tmLanguage.json
@@ -0,0 +1,90 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/walles/git-commit-message-plus/blob/master/syntaxes/git-commit.tmLanguage.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/walles/git-commit-message-plus/commit/35a079dea5a91b087021b40c01a6bb4eb0337a87",
+ "name": "git-commit",
+ "scopeName": "text.git-commit",
+ "patterns": [
+ {
+ "comment": "diff presented at the end of the commit message when using commit -v.",
+ "name": "meta.embedded.diff.git-commit",
+ "contentName": "source.diff",
+ "begin": "(?=^diff\\ \\-\\-git)",
+ "end": "\\z",
+ "patterns": [
+ {
+ "include": "source.diff"
+ }
+ ]
+ },
+ {
+ "comment": "User supplied message",
+ "name": "meta.scope.message.git-commit",
+ "begin": "^(?!#)",
+ "end": "^(?=#)",
+ "patterns": [
+ {
+ "comment": "Mark > 50 lines as deprecated, > 72 as illegal",
+ "name": "meta.scope.subject.git-commit",
+ "match": "\\G.{0,50}(.{0,22}(.*))$",
+ "captures": {
+ "1": {
+ "name": "invalid.deprecated.line-too-long.git-commit"
+ },
+ "2": {
+ "name": "invalid.illegal.line-too-long.git-commit"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "comment": "Git supplied metadata in a number of lines starting with #",
+ "name": "meta.scope.metadata.git-commit",
+ "begin": "^(?=#)",
+ "contentName": "comment.line.number-sign.git-commit",
+ "end": "^(?!#)",
+ "patterns": [
+ {
+ "match": "^#\\t((modified|renamed):.*)$",
+ "captures": {
+ "1": {
+ "name": "markup.changed.git-commit"
+ }
+ }
+ },
+ {
+ "match": "^#\\t(new file:.*)$",
+ "captures": {
+ "1": {
+ "name": "markup.inserted.git-commit"
+ }
+ }
+ },
+ {
+ "match": "^#\\t(deleted.*)$",
+ "captures": {
+ "1": {
+ "name": "markup.deleted.git-commit"
+ }
+ }
+ },
+ {
+ "comment": "Fallback for non-English git commit template",
+ "match": "^#\\t([^:]+): *(.*)$",
+ "captures": {
+ "1": {
+ "name": "keyword.other.file-type.git-commit"
+ },
+ "2": {
+ "name": "string.unquoted.filename.git-commit"
+ }
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/node_modules/shiki/languages/git-rebase.tmLanguage.json b/node_modules/shiki/languages/git-rebase.tmLanguage.json
new file mode 100644
index 0000000..33e164c
--- /dev/null
+++ b/node_modules/shiki/languages/git-rebase.tmLanguage.json
@@ -0,0 +1,61 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/textmate/git.tmbundle/blob/master/Syntaxes/Git%20Rebase%20Message.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/textmate/git.tmbundle/commit/5870cf3f8abad3a6637bdf69250b5d2ded427dc4",
+ "name": "git-rebase",
+ "scopeName": "text.git-rebase",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.git-rebase"
+ }
+ },
+ "match": "^\\s*(#).*$\\n?",
+ "name": "comment.line.number-sign.git-rebase"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.git-rebase"
+ },
+ "2": {
+ "name": "constant.sha.git-rebase"
+ },
+ "3": {
+ "name": "meta.commit-message.git-rebase"
+ }
+ },
+ "match": "^\\s*(pick|p|reword|r|edit|e|squash|s|fixup|f|drop|d)\\s+([0-9a-f]+)\\s+(.*)$",
+ "name": "meta.commit-command.git-rebase"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.git-rebase"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.shell"
+ }
+ ]
+ }
+ },
+ "match": "^\\s*(exec|x)\\s+(.*)$",
+ "name": "meta.commit-command.git-rebase"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.git-rebase"
+ }
+ },
+ "match": "^\\s*(break|b)\\s*$",
+ "name": "meta.commit-command.git-rebase"
+ }
+ ]
+}
diff --git a/node_modules/shiki/languages/glimmer-js.tmLanguage.json b/node_modules/shiki/languages/glimmer-js.tmLanguage.json
new file mode 100644
index 0000000..07fa21c
--- /dev/null
+++ b/node_modules/shiki/languages/glimmer-js.tmLanguage.json
@@ -0,0 +1,98 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "name": "glimmer-js",
+ "scopeName": "source.gjs",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ],
+ "injections": {
+ "L:source.gjs -comment": {
+ "patterns": [
+ {
+ "name": "meta.js.embeddedTemplateWithoutArgs",
+ "begin": "\\s*(<)(template)\\s*(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.other.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "end": "(</)(template)(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.other.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "text.html.handlebars"
+ }
+ ]
+ },
+ {
+ "name": "meta.js.embeddedTemplateWithArgs",
+ "begin": "(<)(template)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.other.html"
+ }
+ },
+ "end": "(</)(template)(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.other.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?<=\\<template)",
+ "end": "(?=\\>)",
+ "patterns": [
+ {
+ "include": "text.html.handlebars#tag-stuff"
+ }
+ ]
+ },
+ {
+ "begin": "(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.js"
+ }
+ },
+ "end": "(?=</template>)",
+ "contentName": "meta.html.embedded.block",
+ "patterns": [
+ {
+ "include": "text.html.handlebars"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/glimmer-ts.tmLanguage.json b/node_modules/shiki/languages/glimmer-ts.tmLanguage.json
new file mode 100644
index 0000000..52e0b6c
--- /dev/null
+++ b/node_modules/shiki/languages/glimmer-ts.tmLanguage.json
@@ -0,0 +1,98 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "name": "glimmer-ts",
+ "scopeName": "source.gts",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ],
+ "injections": {
+ "L:source.gts -comment": {
+ "patterns": [
+ {
+ "name": "meta.js.embeddedTemplateWithoutArgs",
+ "begin": "\\s*(<)(template)\\s*(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.other.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "end": "(</)(template)(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.other.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "text.html.handlebars"
+ }
+ ]
+ },
+ {
+ "name": "meta.js.embeddedTemplateWithArgs",
+ "begin": "(<)(template)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.other.html"
+ }
+ },
+ "end": "(</)(template)(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.other.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?<=\\<template)",
+ "end": "(?=\\>)",
+ "patterns": [
+ {
+ "include": "text.html.handlebars#tag-stuff"
+ }
+ ]
+ },
+ {
+ "begin": "(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.js"
+ }
+ },
+ "end": "(?=</template>)",
+ "contentName": "meta.html.embedded.block",
+ "patterns": [
+ {
+ "include": "text.html.handlebars"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/glsl.tmLanguage.json b/node_modules/shiki/languages/glsl.tmLanguage.json
new file mode 100644
index 0000000..d127031
--- /dev/null
+++ b/node_modules/shiki/languages/glsl.tmLanguage.json
@@ -0,0 +1,58 @@
+{
+ "fileTypes": [
+ "vs",
+ "fs",
+ "gs",
+ "vsh",
+ "fsh",
+ "gsh",
+ "vshader",
+ "fshader",
+ "gshader",
+ "vert",
+ "frag",
+ "geom",
+ "f.glsl",
+ "v.glsl",
+ "g.glsl"
+ ],
+ "foldingStartMarker": "/\\*\\*|\\{\\s*$",
+ "foldingStopMarker": "\\*\\*/|^\\s*\\}",
+ "keyEquivalent": "^~G",
+ "name": "glsl",
+ "patterns": [
+ {
+ "match": "\\b(break|case|continue|default|discard|do|else|for|if|return|switch|while)\\b",
+ "name": "keyword.control.glsl"
+ },
+ {
+ "match": "\\b(void|bool|int|uint|float|vec2|vec3|vec4|bvec2|bvec3|bvec4|ivec2|ivec2|ivec3|uvec2|uvec2|uvec3|mat2|mat3|mat4|mat2x2|mat2x3|mat2x4|mat3x2|mat3x3|mat3x4|mat4x2|mat4x3|mat4x4|sampler[1|2|3]D|samplerCube|sampler2DRect|sampler[1|2]DShadow|sampler2DRectShadow|sampler[1|2]DArray|sampler[1|2]DArrayShadow|samplerBuffer|sampler2DMS|sampler2DMSArray|struct|isampler[1|2|3]D|isamplerCube|isampler2DRect|isampler[1|2]DArray|isamplerBuffer|isampler2DMS|isampler2DMSArray|usampler[1|2|3]D|usamplerCube|usampler2DRect|usampler[1|2]DArray|usamplerBuffer|usampler2DMS|usampler2DMSArray)\\b",
+ "name": "storage.type.glsl"
+ },
+ {
+ "match": "\\b(attribute|centroid|const|flat|in|inout|invariant|noperspective|out|smooth|uniform|varying)\\b",
+ "name": "storage.modifier.glsl"
+ },
+ {
+ "match": "\\b(gl_BackColor|gl_BackLightModelProduct|gl_BackLightProduct|gl_BackMaterial|gl_BackSecondaryColor|gl_ClipDistance|gl_ClipPlane|gl_ClipVertex|gl_Color|gl_DepthRange|gl_DepthRangeParameters|gl_EyePlaneQ|gl_EyePlaneR|gl_EyePlaneS|gl_EyePlaneT|gl_Fog|gl_FogCoord|gl_FogFragCoord|gl_FogParameters|gl_FragColor|gl_FragCoord|gl_FragDat|gl_FragDept|gl_FrontColor|gl_FrontFacing|gl_FrontLightModelProduct|gl_FrontLightProduct|gl_FrontMaterial|gl_FrontSecondaryColor|gl_InstanceID|gl_Layer|gl_LightModel|gl_LightModelParameters|gl_LightModelProducts|gl_LightProducts|gl_LightSource|gl_LightSourceParameters|gl_MaterialParameters|gl_ModelViewMatrix|gl_ModelViewMatrixInverse|gl_ModelViewMatrixInverseTranspose|gl_ModelViewMatrixTranspose|gl_ModelViewProjectionMatrix|gl_ModelViewProjectionMatrixInverse|gl_ModelViewProjectionMatrixInverseTranspose|gl_ModelViewProjectionMatrixTranspose|gl_MultiTexCoord[0-7]|gl_Normal|gl_NormalMatrix|gl_NormalScale|gl_ObjectPlaneQ|gl_ObjectPlaneR|gl_ObjectPlaneS|gl_ObjectPlaneT|gl_Point|gl_PointCoord|gl_PointParameters|gl_PointSize|gl_Position|gl_PrimitiveIDIn|gl_ProjectionMatrix|gl_ProjectionMatrixInverse|gl_ProjectionMatrixInverseTranspose|gl_ProjectionMatrixTranspose|gl_SecondaryColor|gl_TexCoord|gl_TextureEnvColor|gl_TextureMatrix|gl_TextureMatrixInverse|gl_TextureMatrixInverseTranspose|gl_TextureMatrixTranspose|gl_Vertex|gl_VertexIDh)\\b",
+ "name": "support.variable.glsl"
+ },
+ {
+ "match": "\\b(gl_MaxClipPlanes|gl_MaxCombinedTextureImageUnits|gl_MaxDrawBuffers|gl_MaxFragmentUniformComponents|gl_MaxLights|gl_MaxTextureCoords|gl_MaxTextureImageUnits|gl_MaxTextureUnits|gl_MaxVaryingFloats|gl_MaxVertexAttribs|gl_MaxVertexTextureImageUnits|gl_MaxVertexUniformComponents)\\b",
+ "name": "support.constant.glsl"
+ },
+ {
+ "match": "\\b(abs|acos|all|any|asin|atan|ceil|clamp|cos|cross|degrees|dFdx|dFdy|distance|dot|equal|exp|exp2|faceforward|floor|fract|ftransform|fwidth|greaterThan|greaterThanEqual|inversesqrt|length|lessThan|lessThanEqual|log|log2|matrixCompMult|max|min|mix|mod|noise[1-4]|normalize|not|notEqual|outerProduct|pow|radians|reflect|refract|shadow1D|shadow1DLod|shadow1DProj|shadow1DProjLod|shadow2D|shadow2DLod|shadow2DProj|shadow2DProjLod|sign|sin|smoothstep|sqrt|step|tan|texture1D|texture1DLod|texture1DProj|texture1DProjLod|texture2D|texture2DLod|texture2DProj|texture2DProjLod|texture3D|texture3DLod|texture3DProj|texture3DProjLod|textureCube|textureCubeLod|transpose)\\b",
+ "name": "support.function.glsl"
+ },
+ {
+ "match": "\\b(asm|double|enum|extern|goto|inline|long|short|sizeof|static|typedef|union|unsigned|volatile)\\b",
+ "name": "invalid.illegal.glsl"
+ },
+ {
+ "include": "source.c"
+ }
+ ],
+ "scopeName": "source.glsl",
+ "uuid": "D0FD1B52-F137-4FBA-A148-B8A893CD948C"
+}
diff --git a/node_modules/shiki/languages/gnuplot.tmLanguage.json b/node_modules/shiki/languages/gnuplot.tmLanguage.json
new file mode 100644
index 0000000..4d5273c
--- /dev/null
+++ b/node_modules/shiki/languages/gnuplot.tmLanguage.json
@@ -0,0 +1,887 @@
+{
+ "name": "gnuplot",
+ "scopeName": "source.gnuplot",
+ "uuid": "A75AB1C2-611C-4500-9EE4-20668B5BB465",
+ "fileTypes": ["gp", "plt", "plot", "gnuplot"],
+ "patterns": [
+ {
+ "name": "invalid.illegal.backslash.gnuplot",
+ "match": "(\\\\(?!\\n).*)"
+ },
+ {
+ "name": "punctuation.separator.statement.gnuplot",
+ "match": "(;)"
+ },
+ {
+ "include": "#LineComment"
+ },
+ {
+ "include": "#DataBlock"
+ },
+ {
+ "include": "#MacroExpansion"
+ },
+ {
+ "include": "#VariableDecl"
+ },
+ {
+ "include": "#ArrayDecl"
+ },
+ {
+ "include": "#FunctionDecl"
+ },
+ {
+ "include": "#ShellCommand"
+ },
+ {
+ "include": "#Command"
+ }
+ ],
+ "repository": {
+ "DataBlock": {
+ "name": "meta.datablock.gnuplot",
+ "begin": "(?x:\n\t\t\t\t([$][A-Za-z_]\\w*)\\s* # 1: var name\n\t\t\t\t(<<)\\s* # 2: shift operator\n\t\t\t\t([A-Za-z_]\\w*)\\s* # 3: end tag\n\t\t\t\t(?=(\\#|$)) # 4: comment or end of line\n\t\t\t)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#SpecialVariable"
+ }
+ ]
+ },
+ "3": {
+ "name": "constant.language.datablock.gnuplot"
+ }
+ },
+ "end": "^(\\3)\\b(.*)",
+ "endCaptures": {
+ "1": {
+ "name": "constant.language.datablock.gnuplot"
+ },
+ "2": {
+ "name": "invalid.illegal.datablock.gnuplot"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#LineComment"
+ },
+ {
+ "include": "#NumberLiteral"
+ },
+ {
+ "include": "#DoubleQuotedStringLiteral"
+ }
+ ]
+ },
+ "MacroExpansion": {
+ "begin": "([@][A-Za-z_]\\w*)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#SpecialVariable"
+ }
+ ]
+ }
+ },
+ "end": "(?=(;|#|\\\\(?!\\n)|(?<!\\\\)\\n$))",
+ "patterns": [
+ {
+ "include": "#Expression"
+ }
+ ]
+ },
+ "VariableDecl": {
+ "name": "meta.variable.gnuplot",
+ "begin": "\\b(?x:\n\t\t\t\t([A-Za-z_]\\w*)\\s* # 1: var name\n\t\t\t\t(?:\n\t\t\t\t\t(\\[)\\s* # 2: opening bracket\n\t\t\t\t\t(.*)\\s* # 3: expression\n\t\t\t\t\t(\\])\\s* # 4: closing bracket\n\t\t\t\t)?\n\t\t\t\t(?=(=)(?!\\s*=)) # 5: assignment\n\t\t\t)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.variable.gnuplot",
+ "patterns": [
+ {
+ "include": "#InvalidVariableDecl"
+ },
+ {
+ "include": "#BuiltinVariable"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#Expression"
+ }
+ ]
+ }
+ },
+ "end": "(?=(;|#|\\\\(?!\\n)|(?<!\\\\)\\n$))",
+ "patterns": [
+ {
+ "include": "#Expression"
+ }
+ ]
+ },
+ "ArrayDecl": {
+ "name": "meta.variable.gnuplot",
+ "begin": "\\b(?x:\n\t\t\t\t(array)\\s+ # 1: array keyword\n\t\t\t\t([A-Za-z_]\\w*)? # 2: var name\n\t\t\t\t# Note: Handle size decl and init expression inside.\n\t\t\t\t# TODO: Properly annotate brackets.\n\t\t\t)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.type.array.gnuplot"
+ },
+ "2": {
+ "name": "entity.name.variable.gnuplot",
+ "patterns": [
+ {
+ "include": "#InvalidVariableDecl"
+ },
+ {
+ "include": "#BuiltinVariable"
+ }
+ ]
+ }
+ },
+ "end": "(?=(;|#|\\\\(?!\\n)|(?<!\\\\)\\n$))",
+ "patterns": [
+ {
+ "include": "#Expression"
+ }
+ ]
+ },
+ "FunctionDecl": {
+ "name": "meta.function.gnuplot",
+ "begin": "\\b(?x:\n\t\t\t\t([A-Za-z_]\\w*)\\s* # 1: func name\n\t\t\t\t( # 2: parameter list\n\t\t\t\t\t(\\()\\s* # 3: opening parens\n\t\t\t\t\t([A-Za-z_]\\w*)\\s* # 4: arg name\n\t\t\t\t\t(?:\n\t\t\t\t\t\t(,)\\s* # 5: comma\n\t\t\t\t\t\t([A-Za-z_]\\w*)\\s* # 6: other args\n\t\t\t\t\t)*\n\t\t\t\t\t(\\)) # 7: closing parens\n\t\t\t\t)\n\t\t\t)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.gnuplot",
+ "patterns": [
+ {
+ "include": "#BuiltinFunction"
+ }
+ ]
+ },
+ "2": {
+ "name": "meta.function.parameters.gnuplot"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.gnuplot"
+ },
+ "4": {
+ "name": "variable.parameter.function.language.gnuplot"
+ },
+ "5": {
+ "name": "punctuation.separator.parameters.gnuplot"
+ },
+ "6": {
+ "name": "variable.parameter.function.language.gnuplot"
+ },
+ "7": {
+ "name": "punctuation.definition.parameters.end.gnuplot"
+ }
+ },
+ "end": "(?=(;|#|\\\\(?!\\n)|(?<!\\\\)\\n$))",
+ "patterns": [
+ {
+ "include": "#Expression"
+ }
+ ]
+ },
+ "InvalidVariableDecl": {
+ "name": "invalid.illegal.variable.gnuplot",
+ "match": "\\b(GPVAL_\\w*|MOUSE_\\w*)\\b"
+ },
+ "ShellCommand": {
+ "begin": "(!)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.shell.gnuplot"
+ }
+ },
+ "end": "(?=(#|\\\\(?!\\n)|(?<!\\\\)\\n$))",
+ "patterns": [
+ {
+ "name": "string.unquoted",
+ "match": "([^#]|\\\\(?=\\n))"
+ }
+ ]
+ },
+ "Command": {
+ "patterns": [
+ {
+ "name": "invalid.deprecated.command.gnuplot",
+ "begin": "\\b(?x:\n\t\t\t\t\t\tupdate\n\t\t\t\t\t)\\b",
+ "end": "(?=(;|#|\\\\(?!\\n)|(?<!\\\\)\\n$))"
+ },
+ {
+ "begin": "\\b(?x:\n\t\t\t\t\t\tbreak |\n\t\t\t\t\t\tclear |\n\t\t\t\t\t\tcontinue |\n\t\t\t\t\t\tpwd |\n\t\t\t\t\t\trefresh |\n\t\t\t\t\t\treplot |\n\t\t\t\t\t\treread |\n\t\t\t\t\t\tshell\n\t\t\t\t\t)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.command.gnuplot"
+ }
+ },
+ "end": "(?=(;|#|\\\\(?!\\n)|(?<!\\\\)\\n$))",
+ "patterns": [
+ {
+ "include": "#InvalidWord"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(?x:\n\t\t\t\t\t\tcd |\n\t\t\t\t\t\tcall |\n\t\t\t\t\t\teval |\n\t\t\t\t\t\texit |\n\t\t\t\t\t\thelp |\n\t\t\t\t\t\thistory |\n\t\t\t\t\t\tload |\n\t\t\t\t\t\tlower |\n\t\t\t\t\t\tpause |\n\t\t\t\t\t\tprint |\n\t\t\t\t\t\tprinterr |\n\t\t\t\t\t\tquit |\n\t\t\t\t\t\traise |\n\t\t\t\t\t\tsave |\n\t\t\t\t\t\tstats |\n\t\t\t\t\t\tsystem |\n\t\t\t\t\t\ttest |\n\t\t\t\t\t\ttoggle\n\t\t\t\t\t)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.command.gnuplot"
+ }
+ },
+ "end": "(?=(;|#|\\\\(?!\\n)|(?<!\\\\)\\n$))",
+ "patterns": [
+ {
+ "include": "#Expression"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(import)\\s(.+)\\s(from)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.import.gnuplot"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#FunctionDecl"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.control.import.gnuplot"
+ }
+ },
+ "end": "(?=(;|#|\\\\(?!\\n)|(?<!\\\\)\\n$))",
+ "patterns": [
+ {
+ "include": "#SingleQuotedStringLiteral"
+ },
+ {
+ "include": "#DoubleQuotedStringLiteral"
+ },
+ {
+ "include": "#InvalidWord"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(reset)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.command.gnuplot"
+ }
+ },
+ "end": "(?=(;|#|\\\\(?!\\n)|(?<!\\\\)\\n$))",
+ "patterns": [
+ {
+ "name": "support.class.reset.gnuplot",
+ "match": "\\b(bind|error(state)?|session)\\b"
+ },
+ {
+ "include": "#InvalidWord"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(undefine)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.command.gnuplot"
+ }
+ },
+ "end": "(?=(;|#|\\\\(?!\\n)|(?<!\\\\)\\n$))",
+ "patterns": [
+ {
+ "include": "#BuiltinVariable"
+ },
+ {
+ "include": "#BuiltinFunction"
+ },
+ {
+ "name": "source.gnuplot",
+ "match": "(?<=\\s)([$]?[A-Za-z_]\\w*\\*?)(?=\\s)"
+ },
+ {
+ "include": "#InvalidWord"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(if|while)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.conditional.gnuplot"
+ }
+ },
+ "end": "(?=(\\{|#|\\\\(?!\\n)|(?<!\\\\)\\n$))",
+ "patterns": [
+ {
+ "include": "#Expression"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(else)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.conditional.gnuplot"
+ }
+ },
+ "end": "(?=(\\{|#|\\\\(?!\\n)|(?<!\\\\)\\n$))"
+ },
+ {
+ "begin": "\\b(do)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow.gnuplot"
+ }
+ },
+ "end": "(?=(\\{|#|\\\\(?!\\n)|(?<!\\\\)\\n$))",
+ "patterns": [
+ {
+ "include": "#ForIterationExpr"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(set)(?=\\s+pm3d)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.command.gnuplot"
+ }
+ },
+ "end": "(?=(;|#|\\\\(?!\\n)|(?<!\\\\)\\n$))",
+ "patterns": [
+ {
+ "name": "invalid.deprecated.options.gnuplot",
+ "match": "\\b(hidden3d|map|transparent|solid)\\b"
+ },
+ {
+ "include": "#SetUnsetOptions"
+ },
+ {
+ "include": "#ForIterationExpr"
+ },
+ {
+ "include": "#Expression"
+ }
+ ]
+ },
+ {
+ "begin": "\\b((un)?set)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.command.gnuplot"
+ }
+ },
+ "end": "(?=(;|#|\\\\(?!\\n)|(?<!\\\\)\\n$))",
+ "patterns": [
+ {
+ "include": "#SetUnsetOptions"
+ },
+ {
+ "include": "#ForIterationExpr"
+ },
+ {
+ "include": "#Expression"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(show)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.command.gnuplot"
+ }
+ },
+ "end": "(?=(;|#|\\\\(?!\\n)|(?<!\\\\)\\n$))",
+ "patterns": [
+ {
+ "include": "#ExtraShowOptions"
+ },
+ {
+ "include": "#SetUnsetOptions"
+ },
+ {
+ "include": "#Expression"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(fit|(s)?plot)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.command.gnuplot"
+ }
+ },
+ "end": "(?=(;|#|\\\\(?!\\n)|(?<!\\\\)\\n$))",
+ "patterns": [
+ {
+ "include": "#ColumnIndexLiteral"
+ },
+ {
+ "include": "#PlotModifiers"
+ },
+ {
+ "include": "#ForIterationExpr"
+ },
+ {
+ "include": "#Expression"
+ }
+ ]
+ }
+ ]
+ },
+ "SetUnsetOptions": {
+ "patterns": [
+ {
+ "name": "invalid.deprecated.options.gnuplot",
+ "match": "\\G\\s*\\b(?x:\n\t\t\t\t\t\tclabel |\n\t\t\t\t\t\tdata |\n\t\t\t\t\t\tfunction |\n\t\t\t\t\t\thistorysize |\n\t\t\t\t\t\tmacros |\n\t\t\t\t\t\tticslevel |\n\t\t\t\t\t\tticscale |\n\t\t\t\t\t\t(style\\s+increment\\s+\\w+)\n\t\t\t\t\t)\\b"
+ },
+ {
+ "name": "support.class.options.gnuplot",
+ "match": "\\G\\s*\\b(?x:\n\t\t\t\t\t\tangles |\n\t\t\t\t\t\tarrow |\n\t\t\t\t\t\tautoscale |\n\t\t\t\t\t\tborder |\n\t\t\t\t\t\tboxwidth |\n\t\t\t\t\t\tclip |\n\t\t\t\t\t\tcntr(label|param) |\n\t\t\t\t\t\tcolor(box|sequence)?|\n\t\t\t\t\t\tcontour |\n\t\t\t\t\t\t(dash|line)type |\n\t\t\t\t\t\tdatafile |\n\t\t\t\t\t\tdecimal(sign)? |\n\t\t\t\t\t\tdgrid3d |\n\t\t\t\t\t\tdummy |\n\t\t\t\t\t\tencoding |\n\t\t\t\t\t\t(error)?bars |\n\t\t\t\t\t\tfit |\n\t\t\t\t\t\tfontpath |\n\t\t\t\t\t\tformat |\n\t\t\t\t\t\tgrid |\n\t\t\t\t\t\thidden3d |\n\t\t\t\t\t\thistory |\n\t\t\t\t\t\t(iso)?samples |\n\t\t\t\t\t\tjitter |\n\t\t\t\t\t\tkey |\n\t\t\t\t\t\tlabel |\n\t\t\t\t\t\tlink |\n\t\t\t\t\t\tloadpath |\n\t\t\t\t\t\tlocale |\n\t\t\t\t\t\tlogscale |\n\t\t\t\t\t\tmapping |\n\t\t\t\t\t\t[lrtb]margin |\n\t\t\t\t\t\tmargins |\n\t\t\t\t\t\tmicro |\n\t\t\t\t\t\tminus(sign)? |\n\t\t\t\t\t\tmono(chrome)? |\n\t\t\t\t\t\tmouse |\n\t\t\t\t\t\tmultiplot |\n\t\t\t\t\t\tnonlinear |\n\t\t\t\t\t\tobject |\n\t\t\t\t\t\toffsets |\n\t\t\t\t\t\torigin |\n\t\t\t\t\t\toutput |\n\t\t\t\t\t\tparametric |\n\t\t\t\t\t\t(p|r)axis |\n\t\t\t\t\t\tpm3d |\n\t\t\t\t\t\tpalette |\n\t\t\t\t\t\tpointintervalbox |\n\t\t\t\t\t\tpointsize |\n\t\t\t\t\t\tpolar |\n\t\t\t\t\t\tprint |\n\t\t\t\t\t\tpsdir |\n\t\t\t\t\t\tsize |\n\t\t\t\t\t\tstyle |\n\t\t\t\t\t\tsurface |\n\t\t\t\t\t\ttable |\n\t\t\t\t\t\tterminal |\n\t\t\t\t\t\ttermoption |\n\t\t\t\t\t\ttheta |\n\t\t\t\t\t\ttics |\n\t\t\t\t\t\ttimestamp |\n\t\t\t\t\t\ttimefmt |\n\t\t\t\t\t\ttitle |\n\t\t\t\t\t\tview |\n\t\t\t\t\t\txyplane |\n\t\t\t\t\t\tzero |\n\t\t\t\t\t\t(no)?(m)?(x|x2|y|y2|z|cb|r|t)tics |\n\t\t\t\t\t\t(x|x2|y|y2|z|cb)data |\n\t\t\t\t\t\t(x|x2|y|y2|z|cb|r)label |\n\t\t\t\t\t\t(x|x2|y|y2|z|cb)dtics |\n\t\t\t\t\t\t(x|x2|y|y2|z|cb)mtics |\n\t\t\t\t\t\t(x|x2|y|y2|z|cb|[rtuv])range |\n\t\t\t\t\t\t(x|x2|y|y2|z)?zeroaxis\n\t\t\t\t\t)\\b"
+ }
+ ]
+ },
+ "ExtraShowOptions": {
+ "name": "support.class.options.gnuplot",
+ "match": "\\b(?x:\n\t\t\t\tall |\n\t\t\t\tbind |\n\t\t\t\tcolornames |\n\t\t\t\tfunctions |\n\t\t\t\tplot |\n\t\t\t\tvariables |\n\t\t\t\tversion\n\t\t\t)\\b"
+ },
+ "PlotModifiers": {
+ "patterns": [
+ {
+ "name": "invalid.deprecated.plot.gnuplot",
+ "match": "\\b(thru)\\b"
+ },
+ {
+ "name": "storage.type.plot.gnuplot",
+ "match": "\\b(?x:\n\t\t\t\t\t\tin(dex)? |\n\t\t\t\t\t\tevery |\n\t\t\t\t\t\tus(ing)? |\n\t\t\t\t\t\twi(th)? |\n\t\t\t\t\t\tvia\n\t\t\t\t\t)\\b"
+ },
+ {
+ "name": "storage.type.plot.gnuplot",
+ "match": "\\b(newhist(ogram)?)\\b"
+ }
+ ]
+ },
+ "InvalidWord": {
+ "name": "invalid.illegal.gnuplot",
+ "match": "([^;#\\\\[:space:]]+)"
+ },
+ "Expression": {
+ "patterns": [
+ {
+ "include": "#Literal"
+ },
+ {
+ "include": "#SpecialVariable"
+ },
+ {
+ "include": "#BuiltinVariable"
+ },
+ {
+ "include": "#BuiltinOperator"
+ },
+ {
+ "include": "#TernaryExpr"
+ },
+ {
+ "include": "#FunctionCallExpr"
+ },
+ {
+ "include": "#SummationExpr"
+ }
+ ]
+ },
+ "ForIterationExpr": {
+ "begin": "\\b(?x:\n\t\t\t\t(for)\\s* # 1: for keyword\n\t\t\t\t(\\[)\\s* # 2: opening bracket\n\t\t\t\t(?: # optionally\n\t\t\t\t\t([A-Za-z_]\\w*)\\s+ # 3: var name\n\t\t\t\t\t(in)\\b # 4: in keyword\n\t\t\t\t)?\n\t\t\t)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow.gnuplot"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#RangeSeparators"
+ }
+ ]
+ },
+ "3": {
+ "name": "variable.other.iterator.gnuplot"
+ },
+ "4": {
+ "name": "keyword.control.flow.gnuplot"
+ }
+ },
+ "end": "((\\])|(?=(#|\\\\(?!\\n)|(?<!\\\\)\\n$)))",
+ "endCaptures": {
+ "2": {
+ "patterns": [
+ {
+ "include": "#RangeSeparators"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#Expression"
+ },
+ {
+ "include": "#RangeSeparators"
+ }
+ ]
+ },
+ "SummationExpr": {
+ "begin": "\\b(sum)\\s*(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.sum.gnuplot"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#RangeSeparators"
+ }
+ ]
+ }
+ },
+ "end": "((\\])|(?=(#|\\\\(?!\\n)|(?<!\\\\)\\n$)))",
+ "endCaptures": {
+ "2": {
+ "patterns": [
+ {
+ "include": "#RangeSeparators"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#Expression"
+ },
+ {
+ "include": "#RangeSeparators"
+ }
+ ]
+ },
+ "FunctionCallExpr": {
+ "name": "meta.function-call.gnuplot",
+ "begin": "\\b([A-Za-z_]\\w*)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.function.gnuplot",
+ "patterns": [
+ {
+ "include": "#BuiltinFunction"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.definition.arguments.begin.gnuplot"
+ }
+ },
+ "end": "((\\))|(?=(#|\\\\(?!\\n)|(?<!\\\\)\\n$)))",
+ "endCaptures": {
+ "2": {
+ "name": "punctuation.definition.arguments.end.gnuplot"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#Expression"
+ }
+ ]
+ },
+ "TernaryExpr": {
+ "begin": "(?<!\\?)(\\?)(?!\\?)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.gnuplot"
+ }
+ },
+ "end": "((?<!:)(:)(?!:)|(?=(#|\\\\(?!\\n)|(?<!\\\\)\\n$)))",
+ "endCaptures": {
+ "2": {
+ "name": "keyword.operator.ternary.gnuplot"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#Expression"
+ }
+ ]
+ },
+ "RangeSeparators": {
+ "patterns": [
+ {
+ "name": "punctuation.section.brackets.begin.gnuplot",
+ "match": "(\\[)"
+ },
+ {
+ "name": "punctuation.separator.range.gnuplot",
+ "match": "(:)"
+ },
+ {
+ "name": "punctuation.section.brackets.end.gnuplot",
+ "match": "(\\])"
+ }
+ ]
+ },
+ "BuiltinOperator": {
+ "patterns": [
+ {
+ "name": "keyword.operator.logical.gnuplot",
+ "match": "(&&|\\|\\|)"
+ },
+ {
+ "name": "keyword.operator.bitwise.gnuplot",
+ "match": "(<<|>>|&|\\||\\^)"
+ },
+ {
+ "name": "keyword.operator.comparison.gnuplot",
+ "match": "(==|!=|<=|<|>=|>)"
+ },
+ {
+ "name": "keyword.operator.assignment.gnuplot",
+ "match": "(=)"
+ },
+ {
+ "name": "keyword.operator.arithmetic.gnuplot",
+ "match": "(\\+|-|~|!)"
+ },
+ {
+ "name": "keyword.operator.arithmetic.gnuplot",
+ "match": "(\\*\\*|\\+|-|\\*|/|%)"
+ },
+ {
+ "name": "keyword.operator.strings.gnuplot",
+ "match": "(\\.|\\b(eq|ne)\\b)",
+ "captures": {
+ "2": {
+ "name": "keyword.operator.word.gnuplot"
+ }
+ }
+ }
+ ]
+ },
+ "BuiltinVariable": {
+ "patterns": [
+ {
+ "name": "invalid.deprecated.variable.gnuplot",
+ "match": "\\b(?x:\n\t\t\t\t\t\tFIT_LIMIT |\n\t\t\t\t\t\tFIT_MAXITER |\n\t\t\t\t\t\tFIT_START_LAMBDA |\n\t\t\t\t\t\tFIT_LAMBDA_FACTOR |\n\t\t\t\t\t\tFIT_SKIP |\n\t\t\t\t\t\tFIT_INDEX\n\t\t\t\t\t)\\b"
+ },
+ {
+ "name": "support.constant.gnuplot",
+ "match": "\\b(GPVAL_\\w*|MOUSE_\\w*)\\b"
+ },
+ {
+ "name": "support.variable.gnuplot",
+ "match": "\\b(ARG[0-9C]|GPFUN_\\w*|FIT_\\w*|STATS_\\w*|pi|NaN)\\b"
+ }
+ ]
+ },
+ "SpecialVariable": {
+ "patterns": [
+ {
+ "match": "(?<=[\\[:=])\\s*(\\*)\\s*(?=[:\\]])",
+ "captures": {
+ "1": {
+ "name": "constant.language.wildcard.gnuplot"
+ }
+ }
+ },
+ {
+ "name": "constant.language.special.gnuplot",
+ "match": "(([@$])[A-Za-z_]\\w*)\\b",
+ "captures": {
+ "2": {
+ "name": "punctuation.definition.variable.gnuplot"
+ }
+ }
+ }
+ ]
+ },
+ "BuiltinFunction": {
+ "patterns": [
+ {
+ "name": "invalid.deprecated.function.gnuplot",
+ "match": "\\b(?x:\n\t\t\t\t\t\tdefined\n\t\t\t\t\t)\\b"
+ },
+ {
+ "name": "support.function.math.gnuplot",
+ "match": "\\b(?x:\n\t\t\t\t\t\tabs |\n\t\t\t\t\t\tacos |\n\t\t\t\t\t\tacosh |\n\t\t\t\t\t\tairy |\n\t\t\t\t\t\targ |\n\t\t\t\t\t\tasin |\n\t\t\t\t\t\tasinh |\n\t\t\t\t\t\tatan |\n\t\t\t\t\t\tatan2 |\n\t\t\t\t\t\tatanh |\n\t\t\t\t\t\tEllipticK |\n\t\t\t\t\t\tEllipticE |\n\t\t\t\t\t\tEllipticPi |\n\t\t\t\t\t\tbesj0 |\n\t\t\t\t\t\tbesj1 |\n\t\t\t\t\t\tbesy0 |\n\t\t\t\t\t\tbesy1 |\n\t\t\t\t\t\tceil |\n\t\t\t\t\t\tcos |\n\t\t\t\t\t\tcosh |\n\t\t\t\t\t\terf |\n\t\t\t\t\t\terfc |\n\t\t\t\t\t\texp |\n\t\t\t\t\t\texpint |\n\t\t\t\t\t\tfloor |\n\t\t\t\t\t\tgamma |\n\t\t\t\t\t\tibeta |\n\t\t\t\t\t\tinverf |\n\t\t\t\t\t\tigamma |\n\t\t\t\t\t\timag |\n\t\t\t\t\t\tinvnorm |\n\t\t\t\t\t\tint |\n\t\t\t\t\t\tlambertw |\n\t\t\t\t\t\tlgamma |\n\t\t\t\t\t\tlog |\n\t\t\t\t\t\tlog10 |\n\t\t\t\t\t\tnorm |\n\t\t\t\t\t\trand |\n\t\t\t\t\t\treal |\n\t\t\t\t\t\tsgn |\n\t\t\t\t\t\tsin |\n\t\t\t\t\t\tsinh |\n\t\t\t\t\t\tsqrt |\n\t\t\t\t\t\ttan |\n\t\t\t\t\t\ttanh |\n\t\t\t\t\t\tvoigt |\n\t\t\t\t\t\tcerf |\n\t\t\t\t\t\tcdawson |\n\t\t\t\t\t\tfaddeeva |\n\t\t\t\t\t\terfi |\n\t\t\t\t\t\tVP\n\t\t\t\t\t)\\b"
+ },
+ {
+ "name": "support.function.string.gnuplot",
+ "match": "\\b(?x:\n\t\t\t\t\t\tgprintf |\n\t\t\t\t\t\tsprintf |\n\t\t\t\t\t\tstrlen |\n\t\t\t\t\t\tstrstrt |\n\t\t\t\t\t\tsubstr |\n\t\t\t\t\t\tstrftime |\n\t\t\t\t\t\tstrptime |\n\t\t\t\t\t\tsystem |\n\t\t\t\t\t\tword |\n\t\t\t\t\t\twords\n\t\t\t\t\t)\\b"
+ },
+ {
+ "name": "support.function.other.gnuplot",
+ "match": "\\b(?x:\n\t\t\t\t\t\tcolumn |\n\t\t\t\t\t\tcolumnhead |\n\t\t\t\t\t\texists |\n\t\t\t\t\t\thsv2rgb |\n\t\t\t\t\t\tstringcolumn |\n\t\t\t\t\t\ttimecolumn |\n\t\t\t\t\t\ttm_hour |\n\t\t\t\t\t\ttm_mday |\n\t\t\t\t\t\ttm_min |\n\t\t\t\t\t\ttm_mon |\n\t\t\t\t\t\ttm_sec |\n\t\t\t\t\t\ttm_wday |\n\t\t\t\t\t\ttm_yday |\n\t\t\t\t\t\ttm_year |\n\t\t\t\t\t\ttime |\n\t\t\t\t\t\tvalid |\n\t\t\t\t\t\tvalue\n\t\t\t\t\t)\\b"
+ }
+ ]
+ },
+ "Literal": {
+ "patterns": [
+ {
+ "include": "#NumberLiteral"
+ },
+ {
+ "include": "#DeprecatedScriptArgsLiteral"
+ },
+ {
+ "include": "#SingleQuotedStringLiteral"
+ },
+ {
+ "include": "#DoubleQuotedStringLiteral"
+ },
+ {
+ "include": "#InterpolatedStringLiteral"
+ }
+ ]
+ },
+ "NumberLiteral": {
+ "patterns": [
+ {
+ "name": "constant.numeric.float.gnuplot",
+ "match": "(?x:\n\t\t\t\t\t\t# .5e2 and 0.5e2\n\t\t\t\t\t\t( ((\\b[0-9]+)|(?<!\\d)) ) # number or not a preceding digit\n\t\t\t\t\t\t( [.][0-9]+ ) # non-optional fractional\n\t\t\t\t\t\t( [Ee][+-]?[0-9]+ )? # optional exponent\n\t\t\t\t\t)(cm|in)?\\b"
+ },
+ {
+ "name": "constant.numeric.float.gnuplot",
+ "match": "(?x:\n\t\t\t\t\t\t# 5e2 and 5.e2\n\t\t\t\t\t\t( \\b[0-9]+ ) # non-optional number\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t( ( [Ee][+-]?[0-9]+\\b ) ) | # non-optional exponent\n\t\t\t\t\t\t\t( [.] ( [Ee][+-]?[0-9]+\\b )? ) # point and optional exponent\n\t\t\t\t\t\t)\n\t\t\t\t\t)(cm\\b|in\\b)?"
+ },
+ {
+ "name": "constant.numeric.hex.gnuplot",
+ "match": "\\b(0[Xx][0-9a-fA-F]+)(cm|in)?\\b"
+ },
+ {
+ "name": "constant.numeric.dec.gnuplot",
+ "match": "\\b(0+)(cm|in)?\\b"
+ },
+ {
+ "name": "constant.numeric.oct.gnuplot",
+ "match": "\\b(0[0-7]+)(cm|in)?\\b"
+ },
+ {
+ "name": "invalid.illegal.oct.gnuplot",
+ "match": "\\b(0[0-9]+)(cm|in)?\\b"
+ },
+ {
+ "name": "constant.numeric.dec.gnuplot",
+ "match": "\\b([0-9]+)(cm|in)?\\b"
+ }
+ ]
+ },
+ "ColumnIndexLiteral": {
+ "name": "support.constant.columnindex.gnuplot",
+ "match": "([$][0-9]+)\\b"
+ },
+ "DeprecatedScriptArgsLiteral": {
+ "name": "invalid.illegal.scriptargs.gnuplot",
+ "match": "([$][0-9#])"
+ },
+ "SingleQuotedStringLiteral": {
+ "name": "string.quoted.single.gnuplot",
+ "begin": "(')",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.gnuplot"
+ }
+ },
+ "end": "((')(?!')|(?=(?<!\\\\)\\n$))",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.gnuplot"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#RGBColorSpec"
+ },
+ {
+ "name": "constant.character.escape.gnuplot",
+ "match": "('')"
+ }
+ ]
+ },
+ "DoubleQuotedStringLiteral": {
+ "name": "string.quoted.double.gnuplot",
+ "begin": "(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.gnuplot"
+ }
+ },
+ "end": "((\")|(?=(?<!\\\\)\\n$))",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.gnuplot"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#EscapedChar"
+ },
+ {
+ "include": "#RGBColorSpec"
+ },
+ {
+ "include": "#DeprecatedScriptArgsLiteral"
+ },
+ {
+ "include": "#InterpolatedStringLiteral"
+ }
+ ]
+ },
+ "InterpolatedStringLiteral": {
+ "name": "string.interpolated.gnuplot",
+ "begin": "(`)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.gnuplot"
+ }
+ },
+ "end": "((`)|(?=(?<!\\\\)\\n$))",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.gnuplot"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#EscapedChar"
+ }
+ ]
+ },
+ "RGBColorSpec": {
+ "name": "constant.other.placeholder.gnuplot",
+ "match": "\\G(0x|#)(([0-9a-fA-F]{6})|([0-9a-fA-F]{8}))\\b"
+ },
+ "EscapedChar": {
+ "name": "constant.character.escape.gnuplot",
+ "match": "(\\\\.)"
+ },
+ "LineComment": {
+ "name": "comment.line.number-sign.gnuplot",
+ "begin": "(#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.begin.gnuplot"
+ }
+ },
+ "end": "(?=(?<!\\\\)\\n$)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.gnuplot"
+ }
+ }
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/go.tmLanguage.json b/node_modules/shiki/languages/go.tmLanguage.json
new file mode 100644
index 0000000..32f9615
--- /dev/null
+++ b/node_modules/shiki/languages/go.tmLanguage.json
@@ -0,0 +1,1017 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/jeff-hykin/better-go-syntax/blob/master/export/generated.tmLanguage.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/jeff-hykin/better-go-syntax/commit/6175663a7a0e23d58ccf9aab95054cb6e5c92aff",
+ "name": "go",
+ "scopeName": "source.go",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "comment": "Interpreted string literals",
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.go"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.go"
+ }
+ },
+ "name": "string.quoted.double.go",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#string_placeholder"
+ }
+ ]
+ },
+ {
+ "comment": "Raw string literals",
+ "begin": "`",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.go"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.go"
+ }
+ },
+ "name": "string.quoted.raw.go",
+ "patterns": [
+ {
+ "include": "#string_placeholder"
+ }
+ ]
+ },
+ {
+ "comment": "Syntax error receiving channels",
+ "match": "<\\-([\\t ]+)chan\\b",
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.receive-channel.go"
+ }
+ }
+ },
+ {
+ "comment": "Syntax error sending channels",
+ "match": "\\bchan([\\t ]+)<-",
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.send-channel.go"
+ }
+ }
+ },
+ {
+ "comment": "Syntax error using slices",
+ "match": "\\[\\](\\s+)",
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.slice.go"
+ }
+ }
+ },
+ {
+ "comment": "Syntax error numeric literals",
+ "match": "\\b0[0-7]*[89]\\d*\\b",
+ "name": "invalid.illegal.numeric.go"
+ },
+ {
+ "comment": "Built-in functions",
+ "match": "\\b(append|cap|close|complex|copy|delete|imag|len|make|new|panic|print|println|real|recover)\\b(?=\\()",
+ "name": "support.function.builtin.go"
+ },
+ {
+ "comment": "Function declarations",
+ "match": "^(\\bfunc\\b)(?:\\s+(\\([^\\)]+\\)\\s+)?(\\w+)(?=\\())?",
+ "captures": {
+ "1": {
+ "name": "keyword.function.go"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#operators"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\d\\w*",
+ "name": "invalid.illegal.identifier.go"
+ },
+ {
+ "match": "\\w+",
+ "name": "entity.name.function.go"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "comment": "Functions",
+ "match": "(\\bfunc\\b)|(\\w+)(?=\\()",
+ "captures": {
+ "1": {
+ "name": "keyword.function.go"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\d\\w*",
+ "name": "invalid.illegal.identifier.go"
+ },
+ {
+ "match": "\\w+",
+ "name": "support.function.go"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "#numeric_literals"
+ },
+ {
+ "comment": "Language constants",
+ "match": "\\b(true|false|nil|iota)\\b",
+ "name": "constant.language.go"
+ },
+ {
+ "begin": "\\b(package)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.package.go"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "match": "\\d\\w*",
+ "name": "invalid.illegal.identifier.go"
+ },
+ {
+ "match": "\\w+",
+ "name": "entity.name.package.go"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(type)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.type.go"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "match": "\\d\\w*",
+ "name": "invalid.illegal.identifier.go"
+ },
+ {
+ "match": "\\w+",
+ "name": "entity.name.type.go"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(import)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.import.go"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "include": "#imports"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(var)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.var.go"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "include": "#variables"
+ }
+ ]
+ },
+ {
+ "match": "(?<!var)\\s*(\\w+(?:\\.\\w+)*(?>,\\s*\\w+(?:\\.\\w+)*)*)(?=\\s*=(?!=))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "\\d\\w*",
+ "name": "invalid.illegal.identifier.go"
+ },
+ {
+ "match": "\\w+(?:\\.\\w+)*",
+ "name": "variable.other.assignment.go",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#delimiters"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "#delimiters"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "\\b\\w+(?:,\\s*\\w+)*(?=\\s*:=)",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "\\d\\w*",
+ "name": "invalid.illegal.identifier.go"
+ },
+ {
+ "match": "\\w+",
+ "name": "variable.other.assignment.go"
+ },
+ {
+ "include": "#delimiters"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "comment": "Terminators",
+ "match": ";",
+ "name": "punctuation.terminator.go"
+ },
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#delimiters"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#runes"
+ },
+ {
+ "include": "#storage_types"
+ }
+ ],
+ "repository": {
+ "brackets": {
+ "patterns": [
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.begin.bracket.curly.go"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.curly.go"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.begin.bracket.round.go"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.round.go"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "match": "\\[|\\]",
+ "name": "punctuation.definition.bracket.square.go"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "name": "comment.block.go",
+ "begin": "(\\/\\*)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.go"
+ }
+ },
+ "end": "(\\*\\/)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.go"
+ }
+ }
+ },
+ {
+ "name": "comment.line.double-slash.go",
+ "begin": "(\\/\\/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.go"
+ }
+ },
+ "end": "(?:\\n|$)"
+ }
+ ]
+ },
+ "delimiters": {
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.other.comma.go"
+ },
+ {
+ "match": "\\.(?!\\.\\.)",
+ "name": "punctuation.other.period.go"
+ },
+ {
+ "match": ":(?!=)",
+ "name": "punctuation.other.colon.go"
+ }
+ ]
+ },
+ "imports": {
+ "patterns": [
+ {
+ "match": "((?!\\s+\")[^\\s]*)?\\s*((\")([^\"]*)(\"))",
+ "captures": {
+ "1": {
+ "name": "entity.alias.import.go"
+ },
+ "2": {
+ "name": "string.quoted.double.go"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.go"
+ },
+ "4": {
+ "name": "entity.name.import.go"
+ },
+ "5": {
+ "name": "punctuation.definition.string.end.go"
+ }
+ }
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.imports.begin.bracket.round.go"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.imports.end.bracket.round.go"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#imports"
+ }
+ ]
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "comment": "Flow control keywords",
+ "match": "\\b(break|case|continue|default|defer|else|fallthrough|for|go|goto|if|range|return|select|switch)\\b",
+ "name": "keyword.control.go"
+ },
+ {
+ "match": "\\bchan\\b",
+ "name": "keyword.channel.go"
+ },
+ {
+ "match": "\\bconst\\b",
+ "name": "keyword.const.go"
+ },
+ {
+ "match": "\\bfunc\\b",
+ "name": "keyword.function.go"
+ },
+ {
+ "match": "\\binterface\\b",
+ "name": "keyword.interface.go"
+ },
+ {
+ "match": "\\bmap\\b",
+ "name": "keyword.map.go"
+ },
+ {
+ "match": "\\bstruct\\b",
+ "name": "keyword.struct.go"
+ }
+ ]
+ },
+ "operators": {
+ "comment": "Note that the order here is very important!",
+ "patterns": [
+ {
+ "match": "(\\*|&)(?=\\w)",
+ "name": "keyword.operator.address.go"
+ },
+ {
+ "match": "<\\-",
+ "name": "keyword.operator.channel.go"
+ },
+ {
+ "match": "\\-\\-",
+ "name": "keyword.operator.decrement.go"
+ },
+ {
+ "match": "\\+\\+",
+ "name": "keyword.operator.increment.go"
+ },
+ {
+ "match": "(==|!=|<=|>=|<(?!<)|>(?!>))",
+ "name": "keyword.operator.comparison.go"
+ },
+ {
+ "match": "(&&|\\|\\||!)",
+ "name": "keyword.operator.logical.go"
+ },
+ {
+ "match": "(=|\\+=|\\-=|\\|=|\\^=|\\*=|/=|:=|%=|<<=|>>=|&\\^=|&=)",
+ "name": "keyword.operator.assignment.go"
+ },
+ {
+ "match": "(\\+|\\-|\\*|/|%)",
+ "name": "keyword.operator.arithmetic.go"
+ },
+ {
+ "match": "(&(?!\\^)|\\||\\^|&\\^|<<|>>)",
+ "name": "keyword.operator.arithmetic.bitwise.go"
+ },
+ {
+ "match": "\\.\\.\\.",
+ "name": "keyword.operator.ellipsis.go"
+ }
+ ]
+ },
+ "runes": {
+ "patterns": [
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.go"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.go"
+ }
+ },
+ "name": "string.quoted.rune.go",
+ "patterns": [
+ {
+ "match": "\\G(\\\\([0-7]{3}|[abfnrtv\\\\'\"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})|.)(?=')",
+ "name": "constant.other.rune.go"
+ },
+ {
+ "match": "[^']+",
+ "name": "invalid.illegal.unknown-rune.go"
+ }
+ ]
+ }
+ ]
+ },
+ "storage_types": {
+ "patterns": [
+ {
+ "match": "\\bbool\\b",
+ "name": "storage.type.boolean.go"
+ },
+ {
+ "match": "\\bbyte\\b",
+ "name": "storage.type.byte.go"
+ },
+ {
+ "match": "\\berror\\b",
+ "name": "storage.type.error.go"
+ },
+ {
+ "match": "\\b(complex(64|128)|float(32|64)|u?int(8|16|32|64)?)\\b",
+ "name": "storage.type.numeric.go"
+ },
+ {
+ "match": "\\brune\\b",
+ "name": "storage.type.rune.go"
+ },
+ {
+ "match": "\\bstring\\b",
+ "name": "storage.type.string.go"
+ },
+ {
+ "match": "\\buintptr\\b",
+ "name": "storage.type.uintptr.go"
+ }
+ ]
+ },
+ "string_escaped_char": {
+ "patterns": [
+ {
+ "match": "\\\\([0-7]{3}|[abfnrtv\\\\'\"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})",
+ "name": "constant.character.escape.go"
+ },
+ {
+ "match": "\\\\[^0-7xuUabfnrtv\\'\"]",
+ "name": "invalid.illegal.unknown-escape.go"
+ }
+ ]
+ },
+ "string_placeholder": {
+ "patterns": [
+ {
+ "match": "%(\\[\\d+\\])?([\\+#\\-0\\x20]{,2}((\\d+|\\*)?(\\.?(\\d+|\\*|(\\[\\d+\\])\\*?)?(\\[\\d+\\])?)?))?[vT%tbcdoqxXUbeEfFgGspw]",
+ "name": "constant.other.placeholder.go"
+ }
+ ]
+ },
+ "variables": {
+ "patterns": [
+ {
+ "match": "(\\w+(?:,\\s*\\w+)*)(\\s+\\*?\\w+(?:\\.\\w+)?\\s*)?(?=\\s*=)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "\\d\\w*",
+ "name": "invalid.illegal.identifier.go"
+ },
+ {
+ "match": "\\w+",
+ "name": "variable.other.assignment.go"
+ },
+ {
+ "include": "#delimiters"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "(\\w+(?:,\\s*\\w+)*)(\\s+(\\[(\\d*|\\.\\.\\.)\\])*\\*?(<-)?\\w+(?:\\.\\w+)?\\s*[^=].*)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "\\d\\w*",
+ "name": "invalid.illegal.identifier.go"
+ },
+ {
+ "match": "\\w+",
+ "name": "variable.other.declaration.go"
+ },
+ {
+ "include": "#delimiters"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.variables.begin.bracket.round.go"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.variables.end.bracket.round.go"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ },
+ {
+ "include": "#variables"
+ }
+ ]
+ }
+ ]
+ },
+ "numeric_literals": {
+ "match": "(?<!\\w)\\.?\\d(?:(?:[0-9a-zA-Z_\\.])|(?<=[eEpP])[+-])*",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "begin": "(?=.)",
+ "end": "(?:\\n|$)",
+ "patterns": [
+ {
+ "match": "(?:(?:(?:(?:(?:\\G(?=[0-9.])(?!0[xXbBoO])([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])))*)))?(i(?!\\w))?(?:\\n|$)|\\G(?=[0-9.])(?!0[xXbBoO])([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])))*))(i(?!\\w))?(?:\\n|$))|\\G((?:(?<=[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])))*)))?(i(?!\\w))?(?:\\n|$))|(\\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])))*))(i(?!\\w))?(?:\\n|$))|(\\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])))*))(i(?!\\w))?(?:\\n|$))|(\\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])))*)(?<!_)([pP])(\\+?)(\\-?)((?:[0-9](?:[0-9]|(?:(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*))(i(?!\\w))?(?:\\n|$))",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.decimal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.constant.numeric.go"
+ },
+ "3": {
+ "name": "constant.numeric.decimal.point.go"
+ },
+ "4": {
+ "name": "constant.numeric.decimal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.separator.constant.numeric.go"
+ },
+ "6": {
+ "name": "keyword.other.unit.exponent.decimal.go"
+ },
+ "7": {
+ "name": "keyword.operator.plus.exponent.decimal.go"
+ },
+ "8": {
+ "name": "keyword.operator.minus.exponent.decimal.go"
+ },
+ "9": {
+ "name": "constant.numeric.exponent.decimal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "10": {
+ "name": "keyword.other.unit.imaginary.go"
+ },
+ "11": {
+ "name": "constant.numeric.decimal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "12": {
+ "name": "punctuation.separator.constant.numeric.go"
+ },
+ "13": {
+ "name": "keyword.other.unit.exponent.decimal.go"
+ },
+ "14": {
+ "name": "keyword.operator.plus.exponent.decimal.go"
+ },
+ "15": {
+ "name": "keyword.operator.minus.exponent.decimal.go"
+ },
+ "16": {
+ "name": "constant.numeric.exponent.decimal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "17": {
+ "name": "keyword.other.unit.imaginary.go"
+ },
+ "18": {
+ "name": "constant.numeric.decimal.point.go"
+ },
+ "19": {
+ "name": "constant.numeric.decimal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "20": {
+ "name": "punctuation.separator.constant.numeric.go"
+ },
+ "21": {
+ "name": "keyword.other.unit.exponent.decimal.go"
+ },
+ "22": {
+ "name": "keyword.operator.plus.exponent.decimal.go"
+ },
+ "23": {
+ "name": "keyword.operator.minus.exponent.decimal.go"
+ },
+ "24": {
+ "name": "constant.numeric.exponent.decimal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "25": {
+ "name": "keyword.other.unit.imaginary.go"
+ },
+ "26": {
+ "name": "keyword.other.unit.hexadecimal.go"
+ },
+ "27": {
+ "name": "constant.numeric.hexadecimal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "28": {
+ "name": "punctuation.separator.constant.numeric.go"
+ },
+ "29": {
+ "name": "constant.numeric.hexadecimal.go"
+ },
+ "30": {
+ "name": "constant.numeric.hexadecimal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "31": {
+ "name": "punctuation.separator.constant.numeric.go"
+ },
+ "32": {
+ "name": "keyword.other.unit.exponent.hexadecimal.go"
+ },
+ "33": {
+ "name": "keyword.operator.plus.exponent.hexadecimal.go"
+ },
+ "34": {
+ "name": "keyword.operator.minus.exponent.hexadecimal.go"
+ },
+ "35": {
+ "name": "constant.numeric.exponent.hexadecimal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "36": {
+ "name": "keyword.other.unit.imaginary.go"
+ },
+ "37": {
+ "name": "keyword.other.unit.hexadecimal.go"
+ },
+ "38": {
+ "name": "constant.numeric.hexadecimal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "39": {
+ "name": "punctuation.separator.constant.numeric.go"
+ },
+ "40": {
+ "name": "keyword.other.unit.exponent.hexadecimal.go"
+ },
+ "41": {
+ "name": "keyword.operator.plus.exponent.hexadecimal.go"
+ },
+ "42": {
+ "name": "keyword.operator.minus.exponent.hexadecimal.go"
+ },
+ "43": {
+ "name": "constant.numeric.exponent.hexadecimal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "44": {
+ "name": "keyword.other.unit.imaginary.go"
+ },
+ "45": {
+ "name": "keyword.other.unit.hexadecimal.go"
+ },
+ "46": {
+ "name": "constant.numeric.hexadecimal.go"
+ },
+ "47": {
+ "name": "constant.numeric.hexadecimal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "48": {
+ "name": "punctuation.separator.constant.numeric.go"
+ },
+ "49": {
+ "name": "keyword.other.unit.exponent.hexadecimal.go"
+ },
+ "50": {
+ "name": "keyword.operator.plus.exponent.hexadecimal.go"
+ },
+ "51": {
+ "name": "keyword.operator.minus.exponent.hexadecimal.go"
+ },
+ "52": {
+ "name": "constant.numeric.exponent.hexadecimal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "53": {
+ "name": "keyword.other.unit.imaginary.go"
+ }
+ }
+ },
+ {
+ "match": "(?:(?:(?:\\G(?=[0-9.])(?!0[xXbBoO])([0-9](?:[0-9]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(i(?!\\w))?(?:\\n|$)|(\\G0[bB])_?([01](?:[01]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(i(?!\\w))?(?:\\n|$))|(\\G0[oO]?)_?((?:[0-7]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))+)(i(?!\\w))?(?:\\n|$))|(\\G0[xX])_?([0-9a-fA-F](?:[0-9a-fA-F]|((?<=[0-9a-fA-F])_(?=[0-9a-fA-F])))*)(i(?!\\w))?(?:\\n|$))",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.decimal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.constant.numeric.go"
+ },
+ "3": {
+ "name": "keyword.other.unit.imaginary.go"
+ },
+ "4": {
+ "name": "keyword.other.unit.binary.go"
+ },
+ "5": {
+ "name": "constant.numeric.binary.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.separator.constant.numeric.go"
+ },
+ "7": {
+ "name": "keyword.other.unit.imaginary.go"
+ },
+ "8": {
+ "name": "keyword.other.unit.octal.go"
+ },
+ "9": {
+ "name": "constant.numeric.octal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "10": {
+ "name": "punctuation.separator.constant.numeric.go"
+ },
+ "11": {
+ "name": "keyword.other.unit.imaginary.go"
+ },
+ "12": {
+ "name": "keyword.other.unit.hexadecimal.go"
+ },
+ "13": {
+ "name": "constant.numeric.hexadecimal.go",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])_(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.go"
+ }
+ ]
+ },
+ "14": {
+ "name": "punctuation.separator.constant.numeric.go"
+ },
+ "15": {
+ "name": "keyword.other.unit.imaginary.go"
+ }
+ }
+ },
+ {
+ "match": "(?:(?:[0-9a-zA-Z_\\.])|(?<=[eEpP])[+-])+",
+ "name": "invalid.illegal.constant.numeric.go"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/graphql.tmLanguage.json b/node_modules/shiki/languages/graphql.tmLanguage.json
new file mode 100644
index 0000000..44c48e4
--- /dev/null
+++ b/node_modules/shiki/languages/graphql.tmLanguage.json
@@ -0,0 +1,1289 @@
+{
+ "name": "graphql",
+ "scopeName": "source.graphql",
+ "fileTypes": ["graphql", "graphqls", "gql", "graphcool"],
+ "patterns": [
+ {
+ "include": "#graphql"
+ }
+ ],
+ "repository": {
+ "graphql": {
+ "patterns": [
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-fragment-definition"
+ },
+ {
+ "include": "#graphql-directive-definition"
+ },
+ {
+ "include": "#graphql-type-interface"
+ },
+ {
+ "include": "#graphql-enum"
+ },
+ {
+ "include": "#graphql-scalar"
+ },
+ {
+ "include": "#graphql-union"
+ },
+ {
+ "include": "#graphql-schema"
+ },
+ {
+ "include": "#graphql-operation-def"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ }
+ ]
+ },
+ "graphql-operation-def": {
+ "patterns": [
+ {
+ "include": "#graphql-query-mutation"
+ },
+ {
+ "include": "#graphql-name"
+ },
+ {
+ "include": "#graphql-variable-definitions"
+ },
+ {
+ "include": "#graphql-directive"
+ },
+ {
+ "include": "#graphql-selection-set"
+ }
+ ]
+ },
+ "graphql-fragment-definition": {
+ "name": "meta.fragment.graphql",
+ "begin": "\\s*(?:(\\bfragment\\b)\\s*([_A-Za-z][_0-9A-Za-z]*)?\\s*(?:(\\bon\\b)\\s*([_A-Za-z][_0-9A-Za-z]*)))",
+ "end": "(?<=})",
+ "captures": {
+ "1": {
+ "name": "keyword.fragment.graphql"
+ },
+ "2": {
+ "name": "entity.name.fragment.graphql"
+ },
+ "3": {
+ "name": "keyword.on.graphql"
+ },
+ "4": {
+ "name": "support.type.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-selection-set"
+ },
+ {
+ "include": "#graphql-directive"
+ },
+ {
+ "include": "#graphql-skip-newlines"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ }
+ ]
+ },
+ "graphql-query-mutation": {
+ "match": "\\s*\\b(query|mutation)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.operation.graphql"
+ }
+ }
+ },
+ "graphql-type-interface": {
+ "name": "meta.type.interface.graphql",
+ "begin": "\\s*\\b(?:(extends?)?\\b\\s*\\b(type)|(interface)|(input))\\b\\s*([_A-Za-z][_0-9A-Za-z]*)?",
+ "end": "(?=.)",
+ "applyEndPatternLast": 1,
+ "captures": {
+ "1": {
+ "name": "keyword.type.graphql"
+ },
+ "2": {
+ "name": "keyword.type.graphql"
+ },
+ "3": {
+ "name": "keyword.interface.graphql"
+ },
+ "4": {
+ "name": "keyword.input.graphql"
+ },
+ "5": {
+ "name": "support.type.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\s*\\b(implements)\\b\\s*",
+ "end": "\\s*(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.implements.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\s*([_A-Za-z][_0-9A-Za-z]*)",
+ "captures": {
+ "1": {
+ "name": "support.type.graphql"
+ }
+ }
+ },
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-directive"
+ },
+ {
+ "include": "#graphql-ampersand"
+ },
+ {
+ "include": "#graphql-comma"
+ }
+ ]
+ },
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-directive"
+ },
+ {
+ "include": "#graphql-type-object"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ },
+ {
+ "include": "#graphql-ignore-spaces"
+ }
+ ]
+ },
+ "graphql-ignore-spaces": {
+ "match": "\\s*"
+ },
+ "graphql-type-object": {
+ "name": "meta.type.object.graphql",
+ "begin": "\\s*({)",
+ "end": "\\s*(})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.operation.graphql"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.operation.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-object-type"
+ },
+ {
+ "include": "#graphql-type-definition"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ }
+ ]
+ },
+ "graphql-type-definition": {
+ "comment": "key (optionalArgs): Type",
+ "begin": "\\s*([_A-Za-z][_0-9A-Za-z]*)(?=\\s*\\(|:)",
+ "end": "(?=\\s*(([_A-Za-z][_0-9A-Za-z]*)\\s*(\\(|:)|(})))|\\s*(,)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.graphql"
+ }
+ },
+ "endCaptures": {
+ "5": {
+ "name": "punctuation.comma.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-directive"
+ },
+ {
+ "include": "#graphql-variable-definitions"
+ },
+ {
+ "include": "#graphql-type-object"
+ },
+ {
+ "include": "#graphql-colon"
+ },
+ {
+ "include": "#graphql-input-types"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ }
+ ]
+ },
+ "graphql-schema": {
+ "begin": "\\s*\\b(schema)\\b",
+ "end": "(?<=})",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.schema.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\s*({)",
+ "end": "\\s*(})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.operation.graphql"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.operation.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\s*([_A-Za-z][_0-9A-Za-z]*)(?=\\s*\\(|:)",
+ "end": "(?=\\s*(([_A-Za-z][_0-9A-Za-z]*)\\s*(\\(|:)|(})))|\\s*(,)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.arguments.graphql"
+ }
+ },
+ "endCaptures": {
+ "5": {
+ "name": "punctuation.comma.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\s*([_A-Za-z][_0-9A-Za-z]*)",
+ "captures": {
+ "1": {
+ "name": "support.type.graphql"
+ }
+ }
+ },
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-colon"
+ },
+ {
+ "include": "#graphql-skip-newlines"
+ }
+ ]
+ },
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-skip-newlines"
+ }
+ ]
+ },
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-directive"
+ },
+ {
+ "include": "#graphql-skip-newlines"
+ }
+ ]
+ },
+ "graphql-comment": {
+ "patterns": [
+ {
+ "comment": "need to prefix comment space with a scope else Atom's reflow cmd doesn't work",
+ "name": "comment.line.graphql.js",
+ "match": "(\\s*)(#).*",
+ "captures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.graphql"
+ }
+ }
+ },
+ {
+ "name": "comment.line.graphql.js",
+ "begin": "(\"\"\")",
+ "end": "(\"\"\")",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.graphql"
+ }
+ }
+ },
+ {
+ "name": "comment.line.graphql.js",
+ "begin": "(\")",
+ "end": "(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.graphql"
+ }
+ }
+ }
+ ]
+ },
+ "graphql-description-singleline": {
+ "name": "comment.line.number-sign.graphql",
+ "match": "#(?=([^\"]*\"[^\"]*\")*[^\"]*$).*$"
+ },
+ "graphql-description-docstring": {
+ "name": "comment.block.graphql",
+ "begin": "\"\"\"",
+ "end": "\"\"\""
+ },
+ "graphql-variable-definitions": {
+ "begin": "\\s*(\\()",
+ "end": "\\s*(\\))",
+ "captures": {
+ "1": {
+ "name": "meta.brace.round.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-variable-definition"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ }
+ ]
+ },
+ "graphql-variable-definition": {
+ "comment": "variable: type = value,.... which may be a list",
+ "name": "meta.variables.graphql",
+ "begin": "\\s*(\\$?[_A-Za-z][_0-9A-Za-z]*)(?=\\s*\\(|:)",
+ "end": "(?=\\s*((\\$?[_A-Za-z][_0-9A-Za-z]*)\\s*(\\(|:)|(}|\\))))|\\s*(,)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.parameter.graphql"
+ }
+ },
+ "endCaptures": {
+ "5": {
+ "name": "punctuation.comma.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-directive"
+ },
+ {
+ "include": "#graphql-colon"
+ },
+ {
+ "include": "#graphql-input-types"
+ },
+ {
+ "include": "#graphql-variable-assignment"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ },
+ {
+ "include": "#graphql-skip-newlines"
+ }
+ ]
+ },
+ "graphql-input-types": {
+ "patterns": [
+ {
+ "include": "#graphql-scalar-type"
+ },
+ {
+ "match": "\\s*([_A-Za-z][_0-9A-Za-z]*)(?:\\s*(!))?",
+ "captures": {
+ "1": {
+ "name": "support.type.graphql"
+ },
+ "2": {
+ "name": "keyword.operator.nulltype.graphql"
+ }
+ }
+ },
+ {
+ "name": "meta.type.list.graphql",
+ "begin": "\\s*(\\[)",
+ "end": "\\s*(\\])(?:\\s*(!))?",
+ "captures": {
+ "1": {
+ "name": "meta.brace.square.graphql"
+ },
+ "2": {
+ "name": "keyword.operator.nulltype.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-input-types"
+ },
+ {
+ "include": "#graphql-comma"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ }
+ ]
+ }
+ ]
+ },
+ "graphql-scalar": {
+ "match": "\\s*\\b(scalar)\\b\\s*([_A-Za-z][_0-9A-Za-z]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.scalar.graphql"
+ },
+ "2": {
+ "name": "entity.scalar.graphql"
+ }
+ }
+ },
+ "graphql-scalar-type": {
+ "match": "\\s*\\b(Int|Float|String|Boolean|ID)\\b(?:\\s*(!))?",
+ "captures": {
+ "1": {
+ "name": "support.type.builtin.graphql"
+ },
+ "2": {
+ "name": "keyword.operator.nulltype.graphql"
+ }
+ }
+ },
+ "graphql-variable-assignment": {
+ "begin": "\\s(=)",
+ "end": "(?=[\n,)])",
+ "applyEndPatternLast": 1,
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.assignment.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-value"
+ }
+ ]
+ },
+ "graphql-comma": {
+ "match": "\\s*(,)",
+ "captures": {
+ "1": {
+ "name": "punctuation.comma.graphql"
+ }
+ }
+ },
+ "graphql-ampersand": {
+ "match": "\\s*(&)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.logical.graphql"
+ }
+ }
+ },
+ "graphql-colon": {
+ "match": "\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "punctuation.colon.graphql"
+ }
+ }
+ },
+ "graphql-union-mark": {
+ "match": "\\s*(\\|)",
+ "captures": {
+ "1": {
+ "name": "punctuation.union.graphql"
+ }
+ }
+ },
+ "graphql-name": {
+ "match": "\\s*([_A-Za-z][_0-9A-Za-z]*)",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.graphql"
+ }
+ }
+ },
+ "graphql-directive": {
+ "begin": "\\s*((@)\\s*([_A-Za-z][_0-9A-Za-z]*))",
+ "end": "(?=.)",
+ "applyEndPatternLast": 1,
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.directive.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-arguments"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ },
+ {
+ "include": "#graphql-skip-newlines"
+ }
+ ]
+ },
+ "graphql-directive-definition": {
+ "begin": "\\s*(\\bdirective\\b)\\s*(@[_A-Za-z][_0-9A-Za-z]*)",
+ "end": "(?=.)",
+ "applyEndPatternLast": 1,
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.graphql"
+ },
+ "2": {
+ "name": "entity.name.function.directive.graphql"
+ },
+ "3": {
+ "name": "keyword.on.graphql"
+ },
+ "4": {
+ "name": "support.type.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-variable-definitions"
+ },
+ {
+ "begin": "\\s*(\\bon\\b)\\s*([_A-Za-z]*)",
+ "end": "(?=.)",
+ "applyEndPatternLast": 1,
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.on.graphql"
+ },
+ "2": {
+ "name": "support.type.location.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-skip-newlines"
+ },
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ },
+ {
+ "match": "\\s*(\\|)\\s*([_A-Za-z]*)",
+ "captures": {
+ "2": {
+ "name": "support.type.location.graphql"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "include": "#graphql-skip-newlines"
+ },
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ }
+ ]
+ },
+ "graphql-selection-set": {
+ "name": "meta.selectionset.graphql",
+ "begin": "\\s*({)",
+ "end": "\\s*(})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.operation.graphql"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.operation.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-field"
+ },
+ {
+ "include": "#graphql-fragment-spread"
+ },
+ {
+ "include": "#graphql-inline-fragment"
+ },
+ {
+ "include": "#graphql-comma"
+ },
+ {
+ "include": "#native-interpolation"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ }
+ ]
+ },
+ "graphql-field": {
+ "patterns": [
+ {
+ "match": "\\s*([_A-Za-z][_0-9A-Za-z]*)\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "string.unquoted.alias.graphql"
+ },
+ "2": {
+ "name": "punctuation.colon.graphql"
+ }
+ }
+ },
+ {
+ "match": "\\s*([_A-Za-z][_0-9A-Za-z]*)",
+ "captures": {
+ "1": {
+ "name": "variable.graphql"
+ }
+ }
+ },
+ {
+ "include": "#graphql-arguments"
+ },
+ {
+ "include": "#graphql-directive"
+ },
+ {
+ "include": "#graphql-selection-set"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ },
+ {
+ "include": "#graphql-skip-newlines"
+ }
+ ]
+ },
+ "graphql-fragment-spread": {
+ "begin": "\\s*(\\.\\.\\.)\\s*(?!\\bon\\b)([_A-Za-z][_0-9A-Za-z]*)",
+ "end": "(?=.)",
+ "applyEndPatternLast": 1,
+ "captures": {
+ "1": {
+ "name": "keyword.operator.spread.graphql"
+ },
+ "2": {
+ "name": "variable.fragment.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-selection-set"
+ },
+ {
+ "include": "#graphql-directive"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ },
+ {
+ "include": "#graphql-skip-newlines"
+ }
+ ]
+ },
+ "graphql-inline-fragment": {
+ "begin": "\\s*(\\.\\.\\.)\\s*(?:(\\bon\\b)\\s*([_A-Za-z][_0-9A-Za-z]*))?",
+ "end": "(?=.)",
+ "applyEndPatternLast": 1,
+ "captures": {
+ "1": {
+ "name": "keyword.operator.spread.graphql"
+ },
+ "2": {
+ "name": "keyword.on.graphql"
+ },
+ "3": {
+ "name": "support.type.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-selection-set"
+ },
+ {
+ "include": "#graphql-directive"
+ },
+ {
+ "include": "#graphql-skip-newlines"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ }
+ ]
+ },
+ "graphql-arguments": {
+ "name": "meta.arguments.graphql",
+ "begin": "\\s*(\\()",
+ "end": "\\s*(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.round.directive.graphql"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "meta.brace.round.directive.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "begin": "\\s*([_A-Za-z][_0-9A-Za-z]*)(?:\\s*(:))",
+ "end": "(?=\\s*(?:(?:([_A-Za-z][_0-9A-Za-z]*)\\s*(:))|\\)))|\\s*(,)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.parameter.graphql"
+ },
+ "2": {
+ "name": "punctuation.colon.graphql"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.comma.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-directive"
+ },
+ {
+ "include": "#graphql-value"
+ },
+ {
+ "include": "#graphql-skip-newlines"
+ }
+ ]
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ }
+ ]
+ },
+ "graphql-variable-name": {
+ "match": "\\s*(\\$[_A-Za-z][_0-9A-Za-z]*)",
+ "captures": {
+ "1": {
+ "name": "variable.graphql"
+ }
+ }
+ },
+ "graphql-float-value": {
+ "match": "\\s*(-?(0|[1-9][0-9]*)(\\.[0-9]+)?((e|E)(\\+|-)?[0-9]+)?)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.float.graphql"
+ }
+ }
+ },
+ "graphql-boolean-value": {
+ "match": "\\s*\\b(true|false)\\b",
+ "captures": {
+ "1": {
+ "name": "constant.language.boolean.graphql"
+ }
+ }
+ },
+ "graphql-null-value": {
+ "match": "\\s*\\b(null)\\b",
+ "captures": {
+ "1": {
+ "name": "constant.language.null.graphql"
+ }
+ }
+ },
+ "graphql-string-value": {
+ "contentName": "string.quoted.double.graphql",
+ "begin": "\\s*+((\"))",
+ "end": "\\s*+(?:((\"))|(\n))",
+ "beginCaptures": {
+ "1": {
+ "name": "string.quoted.double.graphql"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.graphql"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "string.quoted.double.graphql"
+ },
+ "2": {
+ "name": "punctuation.definition.string.end.graphql"
+ },
+ "3": {
+ "name": "invalid.illegal.newline.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-string-content"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ }
+ ]
+ },
+ "graphql-string-content": {
+ "patterns": [
+ {
+ "name": "constant.character.escape.graphql",
+ "match": "\\\\[/'\"\\\\nrtbf]"
+ },
+ {
+ "name": "constant.character.escape.graphql",
+ "match": "\\\\u([0-9a-fA-F]{4})"
+ }
+ ]
+ },
+ "graphql-enum": {
+ "name": "meta.enum.graphql",
+ "begin": "\\s*+\\b(enum)\\b\\s*([_A-Za-z][_0-9A-Za-z]*)",
+ "end": "(?<=})",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.enum.graphql"
+ },
+ "2": {
+ "name": "support.type.enum.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.type.object.graphql",
+ "begin": "\\s*({)",
+ "end": "\\s*(})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.operation.graphql"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.operation.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-object-type"
+ },
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-directive"
+ },
+ {
+ "include": "#graphql-enum-value"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ }
+ ]
+ },
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-directive"
+ }
+ ]
+ },
+ "graphql-enum-value": {
+ "name": "constant.character.enum.graphql",
+ "match": "\\s*(?!=\\b(true|false|null)\\b)([_A-Za-z][_0-9A-Za-z]*)"
+ },
+ "graphql-value": {
+ "patterns": [
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-variable-name"
+ },
+ {
+ "include": "#graphql-float-value"
+ },
+ {
+ "include": "#graphql-string-value"
+ },
+ {
+ "include": "#graphql-boolean-value"
+ },
+ {
+ "include": "#graphql-null-value"
+ },
+ {
+ "include": "#graphql-enum-value"
+ },
+ {
+ "include": "#graphql-list-value"
+ },
+ {
+ "include": "#graphql-object-value"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ }
+ ]
+ },
+ "graphql-list-value": {
+ "patterns": [
+ {
+ "name": "meta.listvalues.graphql",
+ "begin": "\\s*+(\\[)",
+ "end": "\\s*(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "meta.brace.square.graphql"
+ }
+ },
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.square.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-value"
+ }
+ ]
+ }
+ ]
+ },
+ "graphql-object-value": {
+ "patterns": [
+ {
+ "name": "meta.objectvalues.graphql",
+ "begin": "\\s*+({)",
+ "end": "\\s*(})",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.curly.graphql"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "meta.brace.curly.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-object-field"
+ },
+ {
+ "include": "#graphql-value"
+ }
+ ]
+ }
+ ]
+ },
+ "graphql-object-field": {
+ "match": "\\s*(([_A-Za-z][_0-9A-Za-z]*))\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "constant.object.key.graphql"
+ },
+ "2": {
+ "name": "string.unquoted.graphql"
+ },
+ "3": {
+ "name": "punctuation.graphql"
+ }
+ }
+ },
+ "graphql-union": {
+ "begin": "\\s*\\b(union)\\b\\s*([_A-Za-z][_0-9A-Za-z]*)",
+ "end": "(?=.)",
+ "applyEndPatternLast": 1,
+ "captures": {
+ "1": {
+ "name": "keyword.union.graphql"
+ },
+ "2": {
+ "name": "support.type.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\s*(=)\\s*([_A-Za-z][_0-9A-Za-z]*)",
+ "end": "(?=.)",
+ "applyEndPatternLast": 1,
+ "captures": {
+ "1": {
+ "name": "punctuation.assignment.graphql"
+ },
+ "2": {
+ "name": "support.type.graphql"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-skip-newlines"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ },
+ {
+ "match": "\\s*(\\|)\\s*([_A-Za-z][_0-9A-Za-z]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.or.graphql"
+ },
+ "2": {
+ "name": "support.type.graphql"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "include": "#graphql-comment"
+ },
+ {
+ "include": "#graphql-description-docstring"
+ },
+ {
+ "include": "#graphql-description-singleline"
+ },
+ {
+ "include": "#graphql-skip-newlines"
+ },
+ {
+ "include": "#literal-quasi-embedded"
+ }
+ ]
+ },
+ "native-interpolation": {
+ "name": "native.interpolation",
+ "begin": "\\s*(\\${)",
+ "end": "(})",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.substitution.begin"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.other.substitution.end"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.js"
+ },
+ {
+ "include": "source.ts"
+ },
+ {
+ "include": "source.js.jsx"
+ },
+ {
+ "include": "source.tsx"
+ }
+ ]
+ },
+ "graphql-skip-newlines": {
+ "match": "\\s*\n"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/groovy.tmLanguage.json b/node_modules/shiki/languages/groovy.tmLanguage.json
new file mode 100644
index 0000000..cbab66f
--- /dev/null
+++ b/node_modules/shiki/languages/groovy.tmLanguage.json
@@ -0,0 +1,1383 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/textmate/groovy.tmbundle/blob/master/Syntaxes/Groovy.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/textmate/groovy.tmbundle/commit/85d8f7c97ae473ccb9473f6c8d27e4ec957f4be1",
+ "name": "groovy",
+ "scopeName": "source.groovy",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.groovy"
+ }
+ },
+ "match": "^(#!).+$\\n",
+ "name": "comment.line.hashbang.groovy"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.package.groovy"
+ },
+ "2": {
+ "name": "storage.modifier.package.groovy"
+ },
+ "3": {
+ "name": "punctuation.terminator.groovy"
+ }
+ },
+ "match": "^\\s*(package)\\b(?:\\s*([^ ;$]+)\\s*(;)?)?",
+ "name": "meta.package.groovy"
+ },
+ {
+ "begin": "(import static)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.import.static.groovy"
+ }
+ },
+ "captures": {
+ "1": {
+ "name": "keyword.other.import.groovy"
+ },
+ "2": {
+ "name": "storage.modifier.import.groovy"
+ },
+ "3": {
+ "name": "punctuation.terminator.groovy"
+ }
+ },
+ "contentName": "storage.modifier.import.groovy",
+ "end": "\\s*(?:$|(?=%>)(;))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.groovy"
+ }
+ },
+ "name": "meta.import.groovy",
+ "patterns": [
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.groovy"
+ },
+ {
+ "match": "\\s",
+ "name": "invalid.illegal.character_not_allowed_here.groovy"
+ }
+ ]
+ },
+ {
+ "begin": "(import)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.import.groovy"
+ }
+ },
+ "captures": {
+ "1": {
+ "name": "keyword.other.import.groovy"
+ },
+ "2": {
+ "name": "storage.modifier.import.groovy"
+ },
+ "3": {
+ "name": "punctuation.terminator.groovy"
+ }
+ },
+ "contentName": "storage.modifier.import.groovy",
+ "end": "\\s*(?:$|(?=%>)|(;))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.groovy"
+ }
+ },
+ "name": "meta.import.groovy",
+ "patterns": [
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.groovy"
+ },
+ {
+ "match": "\\s",
+ "name": "invalid.illegal.character_not_allowed_here.groovy"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.import.groovy"
+ },
+ "2": {
+ "name": "keyword.other.import.static.groovy"
+ },
+ "3": {
+ "name": "storage.modifier.import.groovy"
+ },
+ "4": {
+ "name": "punctuation.terminator.groovy"
+ }
+ },
+ "match": "^\\s*(import)(?:\\s+(static)\\s+)\\b(?:\\s*([^ ;$]+)\\s*(;)?)?",
+ "name": "meta.import.groovy"
+ },
+ {
+ "include": "#groovy"
+ }
+ ],
+ "repository": {
+ "annotations": {
+ "patterns": [
+ {
+ "begin": "(?<!\\.)(@[^ (]+)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.annotation.groovy"
+ },
+ "2": {
+ "name": "punctuation.definition.annotation-arguments.begin.groovy"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.annotation-arguments.end.groovy"
+ }
+ },
+ "name": "meta.declaration.annotation.groovy",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "constant.other.key.groovy"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.groovy"
+ }
+ },
+ "match": "(\\w*)\\s*(=)"
+ },
+ {
+ "include": "#values"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.definition.seperator.groovy"
+ }
+ ]
+ },
+ {
+ "match": "(?<!\\.)@\\S+",
+ "name": "storage.type.annotation.groovy"
+ }
+ ]
+ },
+ "anonymous-classes-and-new": {
+ "begin": "\\bnew\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.new.groovy"
+ }
+ },
+ "end": "(?<=\\)|\\])(?!\\s*{)|(?<=})|(?=[;])|$",
+ "patterns": [
+ {
+ "begin": "(\\w+)\\s*(?=\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.groovy"
+ }
+ },
+ "end": "}|(?=\\s*(?:,|;|\\)))|$",
+ "patterns": [
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#groovy"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "end": "(?=})",
+ "patterns": [
+ {
+ "include": "#groovy"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=\\w.*\\(?)",
+ "end": "(?<=\\))|$",
+ "patterns": [
+ {
+ "include": "#object-types"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.groovy"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#groovy"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "end": "}",
+ "name": "meta.inner-class.groovy",
+ "patterns": [
+ {
+ "include": "#class-body"
+ }
+ ]
+ }
+ ]
+ },
+ "braces": {
+ "begin": "\\{",
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#groovy-code"
+ }
+ ]
+ },
+ "class": {
+ "begin": "(?=\\w?[\\w\\s]*(?:class|(?:@)?interface|enum)\\s+\\w+)",
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.class.end.groovy"
+ }
+ },
+ "name": "meta.definition.class.groovy",
+ "patterns": [
+ {
+ "include": "#storage-modifiers"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.modifier.groovy"
+ },
+ "2": {
+ "name": "entity.name.type.class.groovy"
+ }
+ },
+ "match": "(class|(?:@)?interface|enum)\\s+(\\w+)",
+ "name": "meta.class.identifier.groovy"
+ },
+ {
+ "begin": "extends",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.modifier.extends.groovy"
+ }
+ },
+ "end": "(?={|implements)",
+ "name": "meta.definition.class.inherited.classes.groovy",
+ "patterns": [
+ {
+ "include": "#object-types-inherited"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "begin": "(implements)\\s",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.implements.groovy"
+ }
+ },
+ "end": "(?=\\s*extends|\\{)",
+ "name": "meta.definition.class.implemented.interfaces.groovy",
+ "patterns": [
+ {
+ "include": "#object-types-inherited"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "end": "(?=})",
+ "name": "meta.class.body.groovy",
+ "patterns": [
+ {
+ "include": "#class-body"
+ }
+ ]
+ }
+ ]
+ },
+ "class-body": {
+ "patterns": [
+ {
+ "include": "#enum-values"
+ },
+ {
+ "include": "#constructors"
+ },
+ {
+ "include": "#groovy"
+ }
+ ]
+ },
+ "closures": {
+ "begin": "\\{(?=.*?->)",
+ "end": "\\}",
+ "patterns": [
+ {
+ "begin": "(?<=\\{)(?=[^\\}]*?->)",
+ "end": "->",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.groovy"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?!->)",
+ "end": "(?=->)",
+ "name": "meta.closure.parameters.groovy",
+ "patterns": [
+ {
+ "begin": "(?!,|->)",
+ "end": "(?=,|->)",
+ "name": "meta.closure.parameter.groovy",
+ "patterns": [
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.assignment.groovy"
+ }
+ },
+ "end": "(?=,|->)",
+ "name": "meta.parameter.default.groovy",
+ "patterns": [
+ {
+ "include": "#groovy-code"
+ }
+ ]
+ },
+ {
+ "include": "#parameters"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=[^}])",
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "include": "#groovy-code"
+ }
+ ]
+ }
+ ]
+ },
+ "comment-block": {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.groovy"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.groovy"
+ },
+ "comments": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.groovy"
+ }
+ },
+ "match": "/\\*\\*/",
+ "name": "comment.block.empty.groovy"
+ },
+ {
+ "include": "text.html.javadoc"
+ },
+ {
+ "include": "#comment-block"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.groovy"
+ }
+ },
+ "match": "(//).*$\\n?",
+ "name": "comment.line.double-slash.groovy"
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "match": "\\b([A-Z][A-Z0-9_]+)\\b",
+ "name": "constant.other.groovy"
+ },
+ {
+ "match": "\\b(true|false|null)\\b",
+ "name": "constant.language.groovy"
+ }
+ ]
+ },
+ "constructors": {
+ "applyEndPatternLast": 1,
+ "begin": "(?<=;|^)(?=\\s*(?:(?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)\\s+)*[A-Z]\\w*\\()",
+ "end": "}",
+ "patterns": [
+ {
+ "include": "#method-content"
+ }
+ ]
+ },
+ "enum-values": {
+ "patterns": [
+ {
+ "begin": "(?<=;|^)\\s*\\b([A-Z0-9_]+)(?=\\s*(?:,|;|}|\\(|$))",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.enum.name.groovy"
+ }
+ },
+ "end": ",|;|(?=})|^(?!\\s*\\w+\\s*(?:,|$))",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "name": "meta.enum.value.groovy",
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.definition.seperator.parameter.groovy"
+ },
+ {
+ "include": "#groovy-code"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "groovy": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#class"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#methods"
+ },
+ {
+ "include": "#annotations"
+ },
+ {
+ "include": "#groovy-code"
+ }
+ ]
+ },
+ "groovy-code": {
+ "patterns": [
+ {
+ "include": "#groovy-code-minus-map-keys"
+ },
+ {
+ "include": "#map-keys"
+ }
+ ]
+ },
+ "groovy-code-minus-map-keys": {
+ "comment": "In some situations, maps can't be declared without enclosing []'s, \n\t\t\t\ttherefore we create a collection of everything but that",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#annotations"
+ },
+ {
+ "include": "#support-functions"
+ },
+ {
+ "include": "#keyword-language"
+ },
+ {
+ "include": "#values"
+ },
+ {
+ "include": "#anonymous-classes-and-new"
+ },
+ {
+ "include": "#keyword-operator"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#storage-modifiers"
+ },
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#closures"
+ },
+ {
+ "include": "#braces"
+ }
+ ]
+ },
+ "keyword": {
+ "patterns": [
+ {
+ "include": "#keyword-operator"
+ },
+ {
+ "include": "#keyword-language"
+ }
+ ]
+ },
+ "keyword-language": {
+ "patterns": [
+ {
+ "match": "\\b(try|catch|finally|throw)\\b",
+ "name": "keyword.control.exception.groovy"
+ },
+ {
+ "match": "\\b((?<!\\.)(?:return|break|continue|default|do|while|for|switch|if|else))\\b",
+ "name": "keyword.control.groovy"
+ },
+ {
+ "begin": "\\bcase\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.groovy"
+ }
+ },
+ "end": ":",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.case-terminator.groovy"
+ }
+ },
+ "name": "meta.case.groovy",
+ "patterns": [
+ {
+ "include": "#groovy-code-minus-map-keys"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(assert)\\s",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.assert.groovy"
+ }
+ },
+ "end": "$|;|}",
+ "name": "meta.declaration.assertion.groovy",
+ "patterns": [
+ {
+ "match": ":",
+ "name": "keyword.operator.assert.expression-seperator.groovy"
+ },
+ {
+ "include": "#groovy-code-minus-map-keys"
+ }
+ ]
+ },
+ {
+ "match": "\\b(throws)\\b",
+ "name": "keyword.other.throws.groovy"
+ }
+ ]
+ },
+ "keyword-operator": {
+ "patterns": [
+ {
+ "match": "\\b(as)\\b",
+ "name": "keyword.operator.as.groovy"
+ },
+ {
+ "match": "\\b(in)\\b",
+ "name": "keyword.operator.in.groovy"
+ },
+ {
+ "match": "\\?\\:",
+ "name": "keyword.operator.elvis.groovy"
+ },
+ {
+ "match": "\\*\\:",
+ "name": "keyword.operator.spreadmap.groovy"
+ },
+ {
+ "match": "\\.\\.",
+ "name": "keyword.operator.range.groovy"
+ },
+ {
+ "match": "\\->",
+ "name": "keyword.operator.arrow.groovy"
+ },
+ {
+ "match": "<<",
+ "name": "keyword.operator.leftshift.groovy"
+ },
+ {
+ "match": "(?<=\\S)\\.(?=\\S)",
+ "name": "keyword.operator.navigation.groovy"
+ },
+ {
+ "match": "(?<=\\S)\\?\\.(?=\\S)",
+ "name": "keyword.operator.safe-navigation.groovy"
+ },
+ {
+ "begin": "\\?",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.groovy"
+ }
+ },
+ "end": "(?=$|\\)|}|])",
+ "name": "meta.evaluation.ternary.groovy",
+ "patterns": [
+ {
+ "match": ":",
+ "name": "keyword.operator.ternary.expression-seperator.groovy"
+ },
+ {
+ "include": "#groovy-code-minus-map-keys"
+ }
+ ]
+ },
+ {
+ "match": "==~",
+ "name": "keyword.operator.match.groovy"
+ },
+ {
+ "match": "=~",
+ "name": "keyword.operator.find.groovy"
+ },
+ {
+ "match": "\\b(instanceof)\\b",
+ "name": "keyword.operator.instanceof.groovy"
+ },
+ {
+ "match": "(===|==|!=|<=|>=|<=>|<>|<|>|<<)",
+ "name": "keyword.operator.comparison.groovy"
+ },
+ {
+ "match": "=",
+ "name": "keyword.operator.assignment.groovy"
+ },
+ {
+ "match": "(\\-\\-|\\+\\+)",
+ "name": "keyword.operator.increment-decrement.groovy"
+ },
+ {
+ "match": "(\\-|\\+|\\*|\\/|%)",
+ "name": "keyword.operator.arithmetic.groovy"
+ },
+ {
+ "match": "(!|&&|\\|\\|)",
+ "name": "keyword.operator.logical.groovy"
+ }
+ ]
+ },
+ "language-variables": {
+ "patterns": [
+ {
+ "match": "\\b(this|super)\\b",
+ "name": "variable.language.groovy"
+ }
+ ]
+ },
+ "map-keys": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "constant.other.key.groovy"
+ },
+ "2": {
+ "name": "punctuation.definition.seperator.key-value.groovy"
+ }
+ },
+ "match": "(\\w+)\\s*(:)"
+ }
+ ]
+ },
+ "method-call": {
+ "begin": "([\\w$]+)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.method.groovy"
+ },
+ "2": {
+ "name": "punctuation.definition.method-parameters.begin.groovy"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.method-parameters.end.groovy"
+ }
+ },
+ "name": "meta.method-call.groovy",
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.definition.seperator.parameter.groovy"
+ },
+ {
+ "include": "#groovy-code"
+ }
+ ]
+ },
+ "method-content": {
+ "patterns": [
+ {
+ "match": "\\s"
+ },
+ {
+ "include": "#annotations"
+ },
+ {
+ "begin": "(?=(?:\\w|<)[^\\(]*\\s+(?:[\\w$]|<)+\\s*\\()",
+ "end": "(?=[\\w$]+\\s*\\()",
+ "name": "meta.method.return-type.java",
+ "patterns": [
+ {
+ "include": "#storage-modifiers"
+ },
+ {
+ "include": "#types"
+ }
+ ]
+ },
+ {
+ "begin": "([\\w$]+)\\s*\\(",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.java"
+ }
+ },
+ "end": "\\)",
+ "name": "meta.definition.method.signature.java",
+ "patterns": [
+ {
+ "begin": "(?=[^)])",
+ "end": "(?=\\))",
+ "name": "meta.method.parameters.groovy",
+ "patterns": [
+ {
+ "begin": "(?=[^,)])",
+ "end": "(?=,|\\))",
+ "name": "meta.method.parameter.groovy",
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.definition.separator.groovy"
+ },
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.assignment.groovy"
+ }
+ },
+ "end": "(?=,|\\))",
+ "name": "meta.parameter.default.groovy",
+ "patterns": [
+ {
+ "include": "#groovy-code"
+ }
+ ]
+ },
+ {
+ "include": "#parameters"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=<)",
+ "end": "(?=\\s)",
+ "name": "meta.method.paramerised-type.groovy",
+ "patterns": [
+ {
+ "begin": "<",
+ "end": ">",
+ "name": "storage.type.parameters.groovy",
+ "patterns": [
+ {
+ "include": "#types"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.definition.seperator.groovy"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "throws",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.modifier.groovy"
+ }
+ },
+ "end": "(?={|;)|^(?=\\s*(?:[^{\\s]|$))",
+ "name": "meta.throwables.groovy",
+ "patterns": [
+ {
+ "include": "#object-types"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "end": "(?=})",
+ "name": "meta.method.body.java",
+ "patterns": [
+ {
+ "include": "#groovy-code"
+ }
+ ]
+ }
+ ]
+ },
+ "methods": {
+ "applyEndPatternLast": 1,
+ "begin": "(?x:(?<=;|^|{)(?=\\s*\n (?:\n (?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final) # visibility/modifier\n |\n (?:def)\n |\n (?:\n (?:\n (?:void|boolean|byte|char|short|int|float|long|double)\n |\n (?:@?(?:[a-zA-Z]\\w*\\.)*[A-Z]+\\w*) # object type\n )\n [\\[\\]]*\n (?:<.*>)?\n ) \n \n )\n \\s+\n ([^=]+\\s+)?\\w+\\s*\\(\n\t\t\t))",
+ "end": "}|(?=[^{])",
+ "name": "meta.definition.method.groovy",
+ "patterns": [
+ {
+ "include": "#method-content"
+ }
+ ]
+ },
+ "nest_curly": {
+ "begin": "\\{",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.groovy"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#nest_curly"
+ }
+ ]
+ },
+ "numbers": {
+ "patterns": [
+ {
+ "match": "((0(x|X)[0-9a-fA-F]*)|(\\+|-)?\\b(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)([LlFfUuDdg]|UL|ul)?\\b",
+ "name": "constant.numeric.groovy"
+ }
+ ]
+ },
+ "object-types": {
+ "patterns": [
+ {
+ "begin": "\\b((?:[a-z]\\w*\\.)*(?:[A-Z]+\\w*[a-z]+\\w*|UR[LI]))<",
+ "end": ">|[^\\w\\s,\\?<\\[\\]]",
+ "name": "storage.type.generic.groovy",
+ "patterns": [
+ {
+ "include": "#object-types"
+ },
+ {
+ "begin": "<",
+ "comment": "This is just to support <>'s with no actual type prefix",
+ "end": ">|[^\\w\\s,\\[\\]<]",
+ "name": "storage.type.generic.groovy"
+ }
+ ]
+ },
+ {
+ "begin": "\\b((?:[a-z]\\w*\\.)*[A-Z]+\\w*[a-z]+\\w*)(?=\\[)",
+ "end": "(?=[^\\]\\s])",
+ "name": "storage.type.object.array.groovy",
+ "patterns": [
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#groovy"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "match": "\\b(?:[a-zA-Z]\\w*\\.)*(?:[A-Z]+\\w*[a-z]+\\w*|UR[LI])\\b",
+ "name": "storage.type.groovy"
+ }
+ ]
+ },
+ "object-types-inherited": {
+ "patterns": [
+ {
+ "begin": "\\b((?:[a-zA-Z]\\w*\\.)*[A-Z]+\\w*[a-z]+\\w*)<",
+ "end": ">|[^\\w\\s,\\?<\\[\\]]",
+ "name": "entity.other.inherited-class.groovy",
+ "patterns": [
+ {
+ "include": "#object-types-inherited"
+ },
+ {
+ "begin": "<",
+ "comment": "This is just to support <>'s with no actual type prefix",
+ "end": ">|[^\\w\\s,\\[\\]<]",
+ "name": "storage.type.generic.groovy"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.dereference.groovy"
+ }
+ },
+ "match": "\\b(?:[a-zA-Z]\\w*(\\.))*[A-Z]+\\w*[a-z]+\\w*\\b",
+ "name": "entity.other.inherited-class.groovy"
+ }
+ ]
+ },
+ "parameters": {
+ "patterns": [
+ {
+ "include": "#annotations"
+ },
+ {
+ "include": "#storage-modifiers"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "match": "\\w+",
+ "name": "variable.parameter.method.groovy"
+ }
+ ]
+ },
+ "parens": {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#groovy-code"
+ }
+ ]
+ },
+ "primitive-arrays": {
+ "patterns": [
+ {
+ "match": "\\b(?:void|boolean|byte|char|short|int|float|long|double)(\\[\\])*\\b",
+ "name": "storage.type.primitive.array.groovy"
+ }
+ ]
+ },
+ "primitive-types": {
+ "patterns": [
+ {
+ "match": "\\b(?:void|boolean|byte|char|short|int|float|long|double)\\b",
+ "name": "storage.type.primitive.groovy"
+ }
+ ]
+ },
+ "regexp": {
+ "patterns": [
+ {
+ "begin": "/(?=[^/]+/([^>]|$))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.regexp.begin.groovy"
+ }
+ },
+ "end": "/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.regexp.end.groovy"
+ }
+ },
+ "name": "string.regexp.groovy",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.groovy"
+ }
+ ]
+ },
+ {
+ "begin": "~\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.regexp.begin.groovy"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.regexp.end.groovy"
+ }
+ },
+ "name": "string.regexp.compiled.groovy",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.groovy"
+ }
+ ]
+ }
+ ]
+ },
+ "storage-modifiers": {
+ "patterns": [
+ {
+ "match": "\\b(private|protected|public)\\b",
+ "name": "storage.modifier.access-control.groovy"
+ },
+ {
+ "match": "\\b(static)\\b",
+ "name": "storage.modifier.static.groovy"
+ },
+ {
+ "match": "\\b(final)\\b",
+ "name": "storage.modifier.final.groovy"
+ },
+ {
+ "match": "\\b(native|synchronized|abstract|threadsafe|transient)\\b",
+ "name": "storage.modifier.other.groovy"
+ }
+ ]
+ },
+ "string-quoted-double": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.groovy"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.groovy"
+ }
+ },
+ "name": "string.quoted.double.groovy",
+ "patterns": [
+ {
+ "include": "#string-quoted-double-contents"
+ }
+ ]
+ },
+ "string-quoted-double-contents": {
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.groovy"
+ },
+ {
+ "applyEndPatternLast": 1,
+ "begin": "\\$\\w",
+ "end": "(?=\\W)",
+ "name": "variable.other.interpolated.groovy",
+ "patterns": [
+ {
+ "match": "\\w",
+ "name": "variable.other.interpolated.groovy"
+ },
+ {
+ "match": "\\.",
+ "name": "keyword.other.dereference.groovy"
+ }
+ ]
+ },
+ {
+ "begin": "\\$\\{",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.embedded.groovy"
+ }
+ },
+ "end": "\\}",
+ "name": "source.groovy.embedded.source",
+ "patterns": [
+ {
+ "include": "#nest_curly"
+ }
+ ]
+ }
+ ]
+ },
+ "string-quoted-double-multiline": {
+ "begin": "\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.groovy"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.groovy"
+ }
+ },
+ "name": "string.quoted.double.multiline.groovy",
+ "patterns": [
+ {
+ "include": "#string-quoted-double-contents"
+ }
+ ]
+ },
+ "string-quoted-single": {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.groovy"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.groovy"
+ }
+ },
+ "name": "string.quoted.single.groovy",
+ "patterns": [
+ {
+ "include": "#string-quoted-single-contents"
+ }
+ ]
+ },
+ "string-quoted-single-contents": {
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.groovy"
+ }
+ ]
+ },
+ "string-quoted-single-multiline": {
+ "begin": "'''",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.groovy"
+ }
+ },
+ "end": "'''",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.groovy"
+ }
+ },
+ "name": "string.quoted.single.multiline.groovy",
+ "patterns": [
+ {
+ "include": "#string-quoted-single-contents"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "include": "#string-quoted-double-multiline"
+ },
+ {
+ "include": "#string-quoted-single-multiline"
+ },
+ {
+ "include": "#string-quoted-double"
+ },
+ {
+ "include": "#string-quoted-single"
+ },
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ "structures": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.structure.begin.groovy"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.structure.end.groovy"
+ }
+ },
+ "name": "meta.structure.groovy",
+ "patterns": [
+ {
+ "include": "#groovy-code"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.definition.separator.groovy"
+ }
+ ]
+ },
+ "support-functions": {
+ "patterns": [
+ {
+ "match": "(?x)\\b(?:sprintf|print(?:f|ln)?)\\b",
+ "name": "support.function.print.groovy"
+ },
+ {
+ "match": "(?x)\\b(?:shouldFail|fail(?:NotEquals)?|ass(?:ume|ert(?:S(?:cript|ame)|N(?:ot(?:Same|\n\t\t\t\t\tNull)|ull)|Contains|T(?:hat|oString|rue)|Inspect|Equals|False|Length|\n\t\t\t\t\tArrayEquals)))\\b",
+ "name": "support.function.testing.groovy"
+ }
+ ]
+ },
+ "types": {
+ "patterns": [
+ {
+ "match": "\\b(def)\\b",
+ "name": "storage.type.def.groovy"
+ },
+ {
+ "include": "#primitive-types"
+ },
+ {
+ "include": "#primitive-arrays"
+ },
+ {
+ "include": "#object-types"
+ }
+ ]
+ },
+ "values": {
+ "patterns": [
+ {
+ "include": "#language-variables"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#structures"
+ },
+ {
+ "include": "#method-call"
+ }
+ ]
+ },
+ "variables": {
+ "applyEndPatternLast": 1,
+ "patterns": [
+ {
+ "begin": "(?x:(?=\n (?:\n (?:private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final) # visibility/modifier\n |\n (?:def)\n |\n (?:void|boolean|byte|char|short|int|float|long|double)\n |\n (?:(?:[a-z]\\w*\\.)*[A-Z]+\\w*) # object type\n )\n \\s+\n [\\w\\d_<>\\[\\],\\s]+\n (?:=|$)\n \n \t\t\t))",
+ "end": ";|$",
+ "name": "meta.definition.variable.groovy",
+ "patterns": [
+ {
+ "match": "\\s"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "constant.variable.groovy"
+ }
+ },
+ "match": "([A-Z_0-9]+)\\s+(?=\\=)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "meta.definition.variable.name.groovy"
+ }
+ },
+ "match": "(\\w[^\\s,]*)\\s+(?=\\=)"
+ },
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.assignment.groovy"
+ }
+ },
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#groovy-code"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "meta.definition.variable.name.groovy"
+ }
+ },
+ "match": "(\\w[^\\s=]*)(?=\\s*($|;))"
+ },
+ {
+ "include": "#groovy-code"
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/hack.tmLanguage.json b/node_modules/shiki/languages/hack.tmLanguage.json
new file mode 100644
index 0000000..1b8265d
--- /dev/null
+++ b/node_modules/shiki/languages/hack.tmLanguage.json
@@ -0,0 +1,2645 @@
+{
+ "scopeName": "source.hack",
+ "name": "hack",
+ "fileTypes": ["hh", "php", "hack"],
+ "foldingStartMarker": "(/\\*|\\{\\s*$|<<<HTML)",
+ "foldingStopMarker": "(\\*/|^\\s*\\}|^HTML;)",
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ },
+ {
+ "include": "#language"
+ }
+ ],
+ "repository": {
+ "class-builtin": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ },
+ "match": "(?i)(\\\\)?\\b(st(dClass|reamWrapper)|R(RD(Graph|Creator|Updater)|untimeException|e(sourceBundle|cursive(RegexIterator|Ca(chingIterator|llbackFilterIterator)|TreeIterator|Iterator(Iterator)?|DirectoryIterator|FilterIterator|ArrayIterator)|flect(ion(Method|Class|ZendExtension|Object|P(arameter|roperty)|Extension|Function(Abstract)?)?|or)|gexIterator)|angeException)|G(ender\\Gender|lobIterator|magick(Draw|Pixel)?)|X(sltProcessor|ML(Reader|Writer)|SLTProcessor)|M(ysqlndUh(Connection|PreparedStatement)|ongo(Re(sultException|gex)|Grid(fsFile|FS(Cursor|File)?)|BinData|C(o(de|llection)|ursor(Exception)?|lient)|Timestamp|I(nt(32|64)|d)|D(B(Ref)?|ate)|Pool|Log)?|u(tex|ltipleIterator)|e(ssageFormatter|mcache(d)?))|Bad(MethodCallException|FunctionCallException)|tidy(Node)?|S(tackable|impleXML(Iterator|Element)|oap(Server|Header|Client|Param|Var|Fault)|NMP|CA(_(SoapProxy|LocalProxy))?|p(hinxClient|oofchecker|l(M(inHeap|axHeap)|S(tack|ubject)|Heap|T(ype|empFileObject)|Ob(server|jectStorage)|DoublyLinkedList|PriorityQueue|Enum|Queue|Fi(le(Info|Object)|xedArray)))|e(ssionHandler(Interface)?|ekableIterator|rializable)|DO_(Model_(ReflectionDataObject|Type|Property)|Sequence|D(ata(Object|Factory)|AS_(Relational|XML(_Document)?|Setting|ChangeSummary|Data(Object|Factory)))|Exception|List)|wish(Result(s)?|Search)?|VM(Model)?|QLite(Result|3(Result|Stmt)?|Database|Unbuffered)|AM(Message|Connection))|H(ttp(Re(sponse|quest(Pool)?)|Message|InflateStream|DeflateStream|QueryString)|aru(Image|Outline|D(oc|estination)|Page|Encoder|Font|Annotation))|Yaf_(R(oute(_(Re(write|gex)|Map|S(tatic|imple|upervar)|Interface)|r)|e(sponse_Abstract|quest_(Simple|Http|Abstract)|gistry))|Session|Con(troller_Abstract|fig_(Simple|Ini|Abstract))|Dispatcher|Plugin_Abstract|Exception|View_(Simple|Interface)|Loader|A(ction_Abstract|pplication))|N(o(RewindIterator|rmalizer)|umberFormatter)|C(o(nd|untable|llator)|a(chingIterator|llbackFilterIterator))|T(hread|okyoTyrant(Table|Iterator|Query)?|ra(nsliterator|versable))|I(n(tlDateFormatter|validArgumentException|finiteIterator)|terator(Iterator|Aggregate)?|magick(Draw|Pixel(Iterator)?)?)|php_user_filter|ZipArchive|O(CI-(Collection|Lob)|ut(erIterator|Of(RangeException|BoundsException))|verflowException)|D(irectory(Iterator)?|omainException|OM(XPath|N(ode(list)?|amedNodeMap)|C(haracterData|omment|dataSection)|Text|Implementation|Document(Fragment)?|ProcessingInstruction|E(ntityReference|lement)|Attr)|ate(Time(Zone)?|Interval|Period))|Un(derflowException|expectedValueException)|JsonSerializable|finfo|P(har(Data|FileInfo)?|DO(Statement)?|arentIterator)|E(v(S(tat|ignal)|Ch(ild|eck)|Timer|I(o|dle)|P(eriodic|repare)|Embed|Fork|Watcher|Loop)?|rrorException|xception|mptyIterator)|V(8Js(Exception)?|arnish(Stat|Log|Admin))|KTaglib_(MPEG_(File|AudioProperties)|Tag|ID3v2_(Tag|Frame|AttachedPictureFrame))|QuickHash(StringIntHash|Int(S(tringHash|et)|Hash))|Fil(terIterator|esystemIterator)|mysqli(_(stmt|driver|warning|result))?|W(orker|eak(Map|ref))|L(imitIterator|o(cale|gicException)|ua(Closure)?|engthException|apack)|A(MQP(C(hannel|onnection)|E(nvelope|xchange)|Queue)|ppendIterator|PCIterator|rray(Iterator|Object|Access)))\\b",
+ "name": "support.class.builtin.php"
+ }
+ ]
+ },
+ "class-name": {
+ "patterns": [
+ {
+ "begin": "(?i)(?=\\\\?[a-z_0-9]+\\\\)",
+ "end": "(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\])",
+ "endCaptures": {
+ "1": {
+ "name": "support.class.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ },
+ {
+ "include": "#class-builtin"
+ },
+ {
+ "begin": "(?=[\\\\a-zA-Z_])",
+ "end": "(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\])",
+ "endCaptures": {
+ "1": {
+ "name": "support.class.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "/\\*\\*(?:#@\\+)?\\s*$",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "comment": "This now only highlights a docblock if the first line contains only /**\n- this is to stop highlighting everything as invalid when people do comment banners with /******** ...\n- Now matches /**#@+ too - used for docblock templates:\n http://manual.phpdoc.org/HTMLframesConverter/default/phpDocumentor/tutorial_phpDocumentor.howto.pkg.html#basics.docblocktemplate",
+ "end": "\\*/",
+ "name": "comment.block.documentation.phpdoc.php",
+ "patterns": [
+ {
+ "include": "#php_doc"
+ }
+ ]
+ },
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.php"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.php"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "end": "\\n|(?=\\?>)",
+ "name": "comment.line.double-slash.php"
+ }
+ ]
+ }
+ ]
+ },
+ "generics": {
+ "patterns": [
+ {
+ "begin": "(<)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.generics.php"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.generics.php"
+ }
+ },
+ "name": "meta.generics.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#generics"
+ },
+ {
+ "match": "([-+])?([A-Za-z_][A-Za-z0-9_]*)(?:\\s+(as|super)\\s+([A-Za-z_][A-Za-z0-9_]*))?",
+ "name": "support.type.php"
+ },
+ {
+ "include": "#type-annotation"
+ }
+ ]
+ }
+ ]
+ },
+ "implements": {
+ "patterns": [
+ {
+ "begin": "(?i)(implements)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.implements.php"
+ }
+ },
+ "end": "(?i)(?=[;{])",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "(?i)(?=[a-z0-9_\\\\]+)",
+ "contentName": "meta.other.inherited-class.php",
+ "end": "(?i)(?:\\s*(?:,|(?=[^a-z0-9_\\\\\\s]))\\s*)",
+ "patterns": [
+ {
+ "begin": "(?i)(?=\\\\?[a-z_0-9]+\\\\)",
+ "end": "(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\])",
+ "endCaptures": {
+ "1": {
+ "name": "entity.other.inherited-class.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ },
+ {
+ "include": "#class-builtin"
+ },
+ {
+ "include": "#namespace"
+ },
+ {
+ "match": "(?i)[a-z_][a-z_0-9]*",
+ "name": "entity.other.inherited-class.php"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "attributes": {
+ "patterns": [
+ {
+ "begin": "(<<)(?!<)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.attributes.php"
+ }
+ },
+ "end": "(>>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.attributes.php"
+ }
+ },
+ "name": "meta.attributes.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "([A-Za-z_][A-Za-z0-9_]*)",
+ "name": "entity.other.attribute-name.php"
+ },
+ {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.begin.php"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "begin": "(?xi)\n(?=\n (\n (\\\\[a-z_][a-z_0-9]*\\\\[a-z_][a-z_0-9\\\\]*)\n |\n ([a-z_][a-z_0-9]*\\\\[a-z_][a-z_0-9\\\\]*)\n )\n [^a-z_0-9\\\\]\n)",
+ "end": "(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\])",
+ "endCaptures": {
+ "1": {
+ "name": "constant.other.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ },
+ {
+ "begin": "(?=\\\\?[a-zA-Z_\\x{7f}-\\x{ff}])",
+ "end": "(?=[^\\\\a-zA-Z_\\x{7f}-\\x{ff}])",
+ "patterns": [
+ {
+ "match": "(?i)\\b(TRUE|FALSE|NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__)\\b",
+ "name": "constant.language.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ },
+ "match": "(\\\\)?\\b(STD(IN|OUT|ERR)|ZEND_(THREAD_SAFE|DEBUG_BUILD)|DEFAULT_INCLUDE_PATH|P(HP_(R(OUND_HALF_(ODD|DOWN|UP|EVEN)|ELEASE_VERSION)|M(INOR_VERSION|A(XPATHLEN|JOR_VERSION))|BINDIR|S(HLIB_SUFFIX|YSCONFDIR|API)|CONFIG_FILE_(SCAN_DIR|PATH)|INT_(MAX|SIZE)|ZTS|O(S|UTPUT_HANDLER_(START|CONT|END))|D(EBUG|ATADIR)|URL_(SCHEME|HOST|USER|P(ORT|A(SS|TH))|QUERY|FRAGMENT)|PREFIX|E(XT(RA_VERSION|ENSION_DIR)|OL)|VERSION(_ID)?|WINDOWS_(NT_(SERVER|DOMAIN_CONTROLLER|WORKSTATION)|VERSION_(M(INOR|AJOR)|BUILD|S(UITEMASK|P_M(INOR|AJOR))|P(RODUCTTYPE|LATFORM)))|L(IBDIR|OCALSTATEDIR))|EAR_(INSTALL_DIR|EXTENSION_DIR))|E_(RECOVERABLE_ERROR|STRICT|NOTICE|CO(RE_(ERROR|WARNING)|MPILE_(ERROR|WARNING))|DEPRECATED|USER_(NOTICE|DEPRECATED|ERROR|WARNING)|PARSE|ERROR|WARNING|ALL))\\b",
+ "name": "support.constant.core.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ },
+ "match": "(\\\\)?\\b(RADIXCHAR|GROUPING|M(_(1_PI|SQRT(1_2|2|3|PI)|2_(SQRTPI|PI)|PI(_(2|4))?|E(ULER)?|L(N(10|2|PI)|OG(10E|2E)))|ON_(GROUPING|1(1|2|0)?|7|2|8|THOUSANDS_SEP|3|DECIMAL_POINT|9|4|5|6))|S(TR_PAD_(RIGHT|BOTH|LEFT)|ORT_(REGULAR|STRING|NUMERIC|DESC|LOCALE_STRING|ASC)|EEK_(SET|CUR|END))|H(TML_(SPECIALCHARS|ENTITIES)|ASH_HMAC)|YES(STR|EXPR)|N(_(S(IGN_POSN|EP_BY_SPACE)|CS_PRECEDES)|O(STR|EXPR)|EGATIVE_SIGN|AN)|C(R(YPT_(MD5|BLOWFISH|S(HA(256|512)|TD_DES|ALT_LENGTH)|EXT_DES)|NCYSTR|EDITS_(G(ROUP|ENERAL)|MODULES|SAPI|DOCS|QA|FULLPAGE|ALL))|HAR_MAX|O(NNECTION_(NORMAL|TIMEOUT|ABORTED)|DESET|UNT_(RECURSIVE|NORMAL))|URRENCY_SYMBOL|ASE_(UPPER|LOWER))|__COMPILER_HALT_OFFSET__|T(HOUS(EP|ANDS_SEP)|_FMT(_AMPM)?)|IN(T_(CURR_SYMBOL|FRAC_DIGITS)|I_(S(YSTEM|CANNER_(RAW|NORMAL))|USER|PERDIR|ALL)|F(O_(GENERAL|MODULES|C(REDITS|ONFIGURATION)|ENVIRONMENT|VARIABLES|LICENSE|ALL))?)|D(_(T_FMT|FMT)|IRECTORY_SEPARATOR|ECIMAL_POINT|A(Y_(1|7|2|3|4|5|6)|TE_(R(SS|FC(1(123|036)|2822|8(22|50)|3339))|COOKIE|ISO8601|W3C|ATOM)))|UPLOAD_ERR_(NO_(TMP_DIR|FILE)|CANT_WRITE|INI_SIZE|OK|PARTIAL|EXTENSION|FORM_SIZE)|P(M_STR|_(S(IGN_POSN|EP_BY_SPACE)|CS_PRECEDES)|OSITIVE_SIGN|ATH(_SEPARATOR|INFO_(BASENAME|DIRNAME|EXTENSION|FILENAME)))|E(RA(_(YEAR|T_FMT|D_(T_FMT|FMT)))?|XTR_(REFS|SKIP|IF_EXISTS|OVERWRITE|PREFIX_(SAME|I(NVALID|F_EXISTS)|ALL))|NT_(NOQUOTES|COMPAT|IGNORE|QUOTES))|FRAC_DIGITS|L(C_(M(ONETARY|ESSAGES)|NUMERIC|C(TYPE|OLLATE)|TIME|ALL)|O(G_(MAIL|SYSLOG|N(O(TICE|WAIT)|DELAY|EWS)|C(R(IT|ON)|ONS)|INFO|ODELAY|D(EBUG|AEMON)|U(SER|UCP)|P(ID|ERROR)|E(RR|MERG)|KERN|WARNING|L(OCAL(1|7|2|3|4|5|0|6)|PR)|A(UTH(PRIV)?|LERT))|CK_(SH|NB|UN|EX)))|A(M_STR|B(MON_(1(1|2|0)?|7|2|8|3|9|4|5|6)|DAY_(1|7|2|3|4|5|6))|SSERT_(BAIL|CALLBACK|QUIET_EVAL|WARNING|ACTIVE)|LT_DIGITS))\\b",
+ "name": "support.constant.std.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ },
+ "match": "(\\\\)?\\b(GLOB_(MARK|BRACE|NO(SORT|CHECK|ESCAPE)|ONLYDIR|ERR|AVAILABLE_FLAGS)|XML_(SAX_IMPL|HTML_DOCUMENT_NODE|N(OTATION_NODE|AMESPACE_DECL_NODE)|C(OMMENT_NODE|DATA_SECTION_NODE)|TEXT_NODE|OPTION_(SKIP_(TAGSTART|WHITE)|CASE_FOLDING|TARGET_ENCODING)|D(TD_NODE|OCUMENT_(NODE|TYPE_NODE|FRAG_NODE))|PI_NODE|E(RROR_(RECURSIVE_ENTITY_REF|MISPLACED_XML_PI|B(INARY_ENTITY_REF|AD_CHAR_REF)|SYNTAX|NO(NE|_(MEMORY|ELEMENTS))|TAG_MISMATCH|IN(CORRECT_ENCODING|VALID_TOKEN)|DUPLICATE_ATTRIBUTE|UN(CLOSED_(CDATA_SECTION|TOKEN)|DEFINED_ENTITY|KNOWN_ENCODING)|JUNK_AFTER_DOC_ELEMENT|PAR(TIAL_CHAR|AM_ENTITY_REF)|EXTERNAL_ENTITY_HANDLING|A(SYNC_ENTITY|TTRIBUTE_EXTERNAL_ENTITY_REF))|NTITY_(REF_NODE|NODE|DECL_NODE)|LEMENT_(NODE|DECL_NODE))|LOCAL_NAMESPACE|ATTRIBUTE_(N(MTOKEN(S)?|O(TATION|DE))|CDATA|ID(REF(S)?)?|DECL_NODE|EN(TITY|UMERATION)))|M(HASH_(RIPEMD(1(28|60)|256|320)|GOST|MD(2|4|5)|S(HA(1|2(24|56)|384|512)|NEFRU256)|HAVAL(1(28|92|60)|2(24|56))|CRC32(B)?|TIGER(1(28|60))?|WHIRLPOOL|ADLER32)|YSQL(_(BOTH|NUM|CLIENT_(SSL|COMPRESS|I(GNORE_SPACE|NTERACTIVE))|ASSOC)|I_(RE(PORT_(STRICT|INDEX|OFF|ERROR|ALL)|FRESH_(GRANT|MASTER|BACKUP_LOG|S(TATUS|LAVE)|HOSTS|T(HREADS|ABLES)|LOG)|AD_DEFAULT_(GROUP|FILE))|GROUP_FLAG|MULTIPLE_KEY_FLAG|B(INARY_FLAG|OTH|LOB_FLAG)|S(T(MT_ATTR_(CURSOR_TYPE|UPDATE_MAX_LENGTH|PREFETCH_ROWS)|ORE_RESULT)|E(RVER_QUERY_(NO_(GOOD_INDEX_USED|INDEX_USED)|WAS_SLOW)|T_(CHARSET_NAME|FLAG)))|N(O(_D(EFAULT_VALUE_FLAG|ATA)|T_NULL_FLAG)|UM(_FLAG)?)|C(URSOR_TYPE_(READ_ONLY|SCROLLABLE|NO_CURSOR|FOR_UPDATE)|LIENT_(SSL|NO_SCHEMA|COMPRESS|I(GNORE_SPACE|NTERACTIVE)|FOUND_ROWS))|T(YPE_(GEOMETRY|MEDIUM_BLOB|B(IT|LOB)|S(HORT|TRING|ET)|YEAR|N(ULL|EWD(ECIMAL|ATE))|CHAR|TI(ME(STAMP)?|NY(_BLOB)?)|INT(24|ERVAL)|D(OUBLE|ECIMAL|ATE(TIME)?)|ENUM|VAR_STRING|FLOAT|LONG(_BLOB|LONG)?)|IMESTAMP_FLAG)|INIT_COMMAND|ZEROFILL_FLAG|O(N_UPDATE_NOW_FLAG|PT_(NET_(READ_BUFFER_SIZE|CMD_BUFFER_SIZE)|CONNECT_TIMEOUT|INT_AND_FLOAT_NATIVE|LOCAL_INFILE))|D(EBUG_TRACE_ENABLED|ATA_TRUNCATED)|U(SE_RESULT|N(SIGNED_FLAG|IQUE_KEY_FLAG))|P(RI_KEY_FLAG|ART_KEY_FLAG)|ENUM_FLAG|A(S(SOC|YNC)|UTO_INCREMENT_FLAG)))|CRYPT_(R(C(2|6)|IJNDAEL_(1(28|92)|256)|AND)|GOST|XTEA|M(ODE_(STREAM|NOFB|C(BC|FB)|OFB|ECB)|ARS)|BLOWFISH(_COMPAT)?|S(ERPENT|KIPJACK|AFER(128|PLUS|64))|C(RYPT|AST_(128|256))|T(RIPLEDES|HREEWAY|WOFISH)|IDEA|3DES|DE(S|CRYPT|V_(RANDOM|URANDOM))|PANAMA|EN(CRYPT|IGNA)|WAKE|LOKI97|ARCFOUR(_IV)?))|S(TREAM_(REPORT_ERRORS|M(UST_SEEK|KDIR_RECURSIVE)|BUFFER_(NONE|FULL|LINE)|S(HUT_(RD(WR)?|WR)|OCK_(R(DM|AW)|S(TREAM|EQPACKET)|DGRAM)|ERVER_(BIND|LISTEN))|NOTIFY_(RE(SOLVE|DIRECTED)|MIME_TYPE_IS|SEVERITY_(INFO|ERR|WARN)|CO(MPLETED|NNECT)|PROGRESS|F(ILE_SIZE_IS|AILURE)|AUTH_RE(SULT|QUIRED))|C(RYPTO_METHOD_(SSLv(2(_(SERVER|CLIENT)|3_(SERVER|CLIENT))|3_(SERVER|CLIENT))|TLS_(SERVER|CLIENT))|LIENT_(CONNECT|PERSISTENT|ASYNC_CONNECT)|AST_(FOR_SELECT|AS_STREAM))|I(GNORE_URL|S_URL|PPROTO_(RAW|TCP|I(CMP|P)|UDP))|O(OB|PTION_(READ_(BUFFER|TIMEOUT)|BLOCKING|WRITE_BUFFER))|U(RL_STAT_(QUIET|LINK)|SE_PATH)|P(EEK|F_(INET(6)?|UNIX))|ENFORCE_SAFE_MODE|FILTER_(READ|WRITE|ALL))|UNFUNCS_RET_(STRING|TIMESTAMP|DOUBLE)|QLITE(_(R(OW|EADONLY)|MIS(MATCH|USE)|B(OTH|USY)|SCHEMA|N(O(MEM|T(FOUND|ADB)|LFS)|UM)|C(O(RRUPT|NSTRAINT)|ANTOPEN)|TOOBIG|I(NTER(RUPT|NAL)|OERR)|OK|DONE|P(ROTOCOL|ERM)|E(RROR|MPTY)|F(ORMAT|ULL)|LOCKED|A(BORT|SSOC|UTH))|3_(B(OTH|LOB)|NU(M|LL)|TEXT|INTEGER|OPEN_(READ(ONLY|WRITE)|CREATE)|FLOAT|ASSOC)))|CURL(M(SG_DONE|_(BAD_(HANDLE|EASY_HANDLE)|CALL_MULTI_PERFORM|INTERNAL_ERROR|O(UT_OF_MEMORY|K)))|SSH_AUTH_(HOST|NONE|DEFAULT|P(UBLICKEY|ASSWORD)|KEYBOARD)|CLOSEPOLICY_(SLOWEST|CALLBACK|OLDEST|LEAST_(RECENTLY_USED|TRAFFIC))|_(HTTP_VERSION_(1_(1|0)|NONE)|NETRC_(REQUIRED|IGNORED|OPTIONAL)|TIMECOND_(IF(MODSINCE|UNMODSINCE)|LASTMOD)|IPRESOLVE_(V(4|6)|WHATEVER)|VERSION_(SSL|IPV6|KERBEROS4|LIBZ))|INFO_(RE(DIRECT_(COUNT|TIME)|QUEST_SIZE)|S(SL_VERIFYRESULT|TARTTRANSFER_TIME|IZE_(DOWNLOAD|UPLOAD)|PEED_(DOWNLOAD|UPLOAD))|H(TTP_CODE|EADER_(SIZE|OUT))|NAMELOOKUP_TIME|C(ON(NECT_TIME|TENT_(TYPE|LENGTH_(DOWNLOAD|UPLOAD)))|ERTINFO)|TOTAL_TIME|PR(IVATE|ETRANSFER_TIME)|EFFECTIVE_URL|FILETIME)|OPT_(R(E(SUME_FROM|TURNTRANSFER|DIR_PROTOCOLS|FERER|AD(DATA|FUNCTION))|AN(GE|DOM_FILE))|MAX(REDIRS|CONNECTS)|B(INARYTRANSFER|UFFERSIZE)|S(S(H_(HOST_PUBLIC_KEY_MD5|P(RIVATE_KEYFILE|UBLIC_KEYFILE)|AUTH_TYPES)|L(CERT(TYPE|PASSWD)?|_(CIPHER_LIST|VERIFY(HOST|PEER))|ENGINE(_DEFAULT)?|VERSION|KEY(TYPE|PASSWD)?))|TDERR)|H(TTP(GET|HEADER|200ALIASES|_VERSION|PROXYTUNNEL|AUTH)|EADER(FUNCTION)?)|N(O(BODY|SIGNAL|PROGRESS)|ETRC)|C(RLF|O(NNECTTIMEOUT(_MS)?|OKIE(SESSION|JAR|FILE)?)|USTOMREQUEST|ERTINFO|LOSEPOLICY|A(INFO|PATH))|T(RANSFERTEXT|CP_NODELAY|IME(CONDITION|OUT(_MS)?|VALUE))|I(N(TERFACE|FILE(SIZE)?)|PRESOLVE)|DNS_(CACHE_TIMEOUT|USE_GLOBAL_CACHE)|U(RL|SER(PWD|AGENT)|NRESTRICTED_AUTH|PLOAD)|P(R(IVATE|O(GRESSFUNCTION|XY(TYPE|USERPWD|PORT|AUTH)?|TOCOLS))|O(RT|ST(REDIR|QUOTE|FIELDS)?)|UT)|E(GDSOCKET|NCODING)|VERBOSE|K(RB4LEVEL|EYPASSWD)|QUOTE|F(RESH_CONNECT|TP(SSLAUTH|_(S(SL|KIP_PASV_IP)|CREATE_MISSING_DIRS|USE_EP(RT|SV)|FILEMETHOD)|PORT|LISTONLY|APPEND)|ILE(TIME)?|O(RBID_REUSE|LLOWLOCATION)|AILONERROR)|WRITE(HEADER|FUNCTION)|LOW_SPEED_(TIME|LIMIT)|AUTOREFERER)|PRO(XY_(SOCKS(4|5)|HTTP)|TO_(S(CP|FTP)|HTTP(S)?|T(ELNET|FTP)|DICT|F(TP(S)?|ILE)|LDAP(S)?|ALL))|E_(RE(CV_ERROR|AD_ERROR)|GOT_NOTHING|MALFORMAT_USER|BAD_(C(ONTENT_ENCODING|ALLING_ORDER)|PASSWORD_ENTERED|FUNCTION_ARGUMENT)|S(S(H|L_(C(IPHER|ONNECT_ERROR|ERTPROBLEM|ACERT)|PEER_CERTIFICATE|ENGINE_(SETFAILED|NOTFOUND)))|HARE_IN_USE|END_ERROR)|HTTP_(RANGE_ERROR|NOT_FOUND|PO(RT_FAILED|ST_ERROR))|COULDNT_(RESOLVE_(HOST|PROXY)|CONNECT)|T(OO_MANY_REDIRECTS|ELNET_OPTION_SYNTAX)|O(BSOLETE|UT_OF_MEMORY|PERATION_TIMEOUTED|K)|U(RL_MALFORMAT(_USER)?|N(SUPPORTED_PROTOCOL|KNOWN_TELNET_OPTION))|PARTIAL_FILE|F(TP_(BAD_DOWNLOAD_RESUME|SSL_FAILED|C(OULDNT_(RETR_FILE|GET_SIZE|S(TOR_FILE|ET_(BINARY|ASCII))|USE_REST)|ANT_(RECONNECT|GET_HOST))|USER_PASSWORD_INCORRECT|PORT_FAILED|QUOTE_ERROR|W(RITE_ERROR|EIRD_(SERVER_REPLY|227_FORMAT|USER_REPLY|PAS(S_REPLY|V_REPLY)))|ACCESS_DENIED)|ILE(SIZE_EXCEEDED|_COULDNT_READ_FILE)|UNCTION_NOT_FOUND|AILED_INIT)|WRITE_ERROR|L(IBRARY_NOT_FOUND|DAP_(SEARCH_FAILED|CANNOT_BIND|INVALID_URL))|ABORTED_BY_CALLBACK)|VERSION_NOW|FTP(METHOD_(MULTICWD|SINGLECWD|NOCWD)|SSL_(NONE|CONTROL|TRY|ALL)|AUTH_(SSL|TLS|DEFAULT))|AUTH_(GSSNEGOTIATE|BASIC|NTLM|DIGEST|ANY(SAFE)?))|I(MAGETYPE_(GIF|XBM|BMP|SWF|COUNT|TIFF_(MM|II)|I(CO|FF)|UNKNOWN|J(B2|P(X|2|C|EG(2000)?))|P(SD|NG)|WBMP)|NPUT_(REQUEST|GET|SE(RVER|SSION)|COOKIE|POST|ENV)|CONV_(MIME_DECODE_(STRICT|CONTINUE_ON_ERROR)|IMPL|VERSION))|D(NS_(MX|S(RV|OA)|HINFO|N(S|APTR)|CNAME|TXT|PTR|A(NY|LL|AAA|6)?)|OM(STRING_SIZE_ERR|_(SYNTAX_ERR|HIERARCHY_REQUEST_ERR|N(O(_(MODIFICATION_ALLOWED_ERR|DATA_ALLOWED_ERR)|T_(SUPPORTED_ERR|FOUND_ERR))|AMESPACE_ERR)|IN(DEX_SIZE_ERR|USE_ATTRIBUTE_ERR|VALID_(MODIFICATION_ERR|STATE_ERR|CHARACTER_ERR|ACCESS_ERR))|PHP_ERR|VALIDATION_ERR|WRONG_DOCUMENT_ERR)))|JSON_(HEX_(TAG|QUOT|A(MP|POS))|NUMERIC_CHECK|ERROR_(S(YNTAX|TATE_MISMATCH)|NONE|CTRL_CHAR|DEPTH|UTF8)|FORCE_OBJECT)|P(REG_(RECURSION_LIMIT_ERROR|GREP_INVERT|BA(CKTRACK_LIMIT_ERROR|D_UTF8_(OFFSET_ERROR|ERROR))|S(PLIT_(NO_EMPTY|OFFSET_CAPTURE|DELIM_CAPTURE)|ET_ORDER)|NO_ERROR|INTERNAL_ERROR|OFFSET_CAPTURE|PATTERN_ORDER)|SFS_(PASS_ON|ERR_FATAL|F(EED_ME|LAG_(NORMAL|FLUSH_(CLOSE|INC))))|CRE_VERSION|OSIX_(R_OK|X_OK|S_IF(REG|BLK|SOCK|CHR|IFO)|F_OK|W_OK))|F(NM_(NOESCAPE|CASEFOLD|P(ERIOD|ATHNAME))|IL(TER_(REQUIRE_(SCALAR|ARRAY)|SANITIZE_(MAGIC_QUOTES|S(TRI(NG|PPED)|PECIAL_CHARS)|NUMBER_(INT|FLOAT)|URL|E(MAIL|NCODED)|FULL_SPECIAL_CHARS)|NULL_ON_FAILURE|CALLBACK|DEFAULT|UNSAFE_RAW|VALIDATE_(REGEXP|BOOLEAN|I(NT|P)|URL|EMAIL|FLOAT)|F(ORCE_ARRAY|LAG_(S(CHEME_REQUIRED|TRIP_(BACKTICK|HIGH|LOW))|HOST_REQUIRED|NO(NE|_(RES_RANGE|PRIV_RANGE|ENCODE_QUOTES))|IPV(4|6)|PATH_REQUIRED|E(MPTY_STRING_NULL|NCODE_(HIGH|LOW|AMP))|QUERY_REQUIRED|ALLOW_(SCIENTIFIC|HEX|THOUSAND|OCTAL|FRACTION))))|E(_(BINARY|SKIP_EMPTY_LINES|NO_DEFAULT_CONTEXT|TEXT|IGNORE_NEW_LINES|USE_INCLUDE_PATH|APPEND)|INFO_(RAW|MIME(_(TYPE|ENCODING))?|SYMLINK|NONE|CONTINUE|DEVICES|PRESERVE_ATIME)))|ORCE_(GZIP|DEFLATE))|LIBXML_(XINCLUDE|N(SCLEAN|O(XMLDECL|BLANKS|NET|CDATA|E(RROR|MPTYTAG|NT)|WARNING))|COMPACT|D(TD(VALID|LOAD|ATTR)|OTTED_VERSION)|PARSEHUGE|ERR_(NONE|ERROR|FATAL|WARNING)|VERSION|LOADED_VERSION))\\b",
+ "name": "support.constant.ext.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ },
+ "match": "(\\\\)?\\bT_(RE(TURN|QUIRE(_ONCE)?)|G(OTO|LOBAL)|XOR_EQUAL|M(INUS_EQUAL|OD_EQUAL|UL_EQUAL|ETHOD_C|L_COMMENT)|B(REAK|OOL(_CAST|EAN_(OR|AND))|AD_CHARACTER)|S(R(_EQUAL)?|T(RING(_(CAST|VARNAME))?|A(RT_HEREDOC|TIC))|WITCH|L(_EQUAL)?)|HALT_COMPILER|N(S_(SEPARATOR|C)|UM_STRING|EW|AMESPACE)|C(HARACTER|O(MMENT|N(ST(ANT_ENCAPSED_STRING)?|CAT_EQUAL|TINUE))|URLY_OPEN|L(O(SE_TAG|NE)|ASS(_C)?)|A(SE|TCH))|T(RY|HROW)|I(MPLEMENTS|S(SET|_(GREATER_OR_EQUAL|SMALLER_OR_EQUAL|NOT_(IDENTICAL|EQUAL)|IDENTICAL|EQUAL))|N(STANCEOF|C(LUDE(_ONCE)?)?|T(_CAST|ERFACE)|LINE_HTML)|F)|O(R_EQUAL|BJECT_(CAST|OPERATOR)|PEN_TAG(_WITH_ECHO)?|LD_FUNCTION)|D(NUMBER|I(R|V_EQUAL)|O(C_COMMENT|UBLE_(C(OLON|AST)|ARROW)|LLAR_OPEN_CURLY_BRACES)?|E(C(LARE)?|FAULT))|U(SE|NSET(_CAST)?)|P(R(I(NT|VATE)|OTECTED)|UBLIC|LUS_EQUAL|AAMAYIM_NEKUDOTAYIM)|E(X(TENDS|IT)|MPTY|N(CAPSED_AND_WHITESPACE|D(SWITCH|_HEREDOC|IF|DECLARE|FOR(EACH)?|WHILE))|CHO|VAL|LSE(IF)?)|VAR(IABLE)?|F(I(NAL|LE)|OR(EACH)?|UNC(_C|TION))|WHI(TESPACE|LE)|L(NUMBER|I(ST|NE)|OGICAL_(XOR|OR|AND))|A(RRAY(_CAST)?|BSTRACT|S|ND_EQUAL))\\b",
+ "name": "support.constant.parser-token.php"
+ },
+ {
+ "comment": "In PHP, any identifier which is not a variable is taken to be a constant.\nHowever, if there is no constant defined with the given name then a notice\nis generated and the constant is assumed to have the value of its name.",
+ "match": "[a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*",
+ "name": "constant.other.php"
+ }
+ ]
+ }
+ ]
+ },
+ "function-return-type": {
+ "patterns": [
+ {
+ "begin": "(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.type.php"
+ }
+ },
+ "end": "(?=[{;])",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#class-name"
+ }
+ ]
+ }
+ ]
+ },
+ "type-annotation": {
+ "name": "support.type.php",
+ "patterns": [
+ {
+ "match": "\\b(?:bool|int|float|string|resource|mixed|arraykey|nonnull|dict|vec|keyset)\\b",
+ "name": "support.type.php"
+ },
+ {
+ "begin": "([A-Za-z_][A-Za-z0-9_]*)<",
+ "beginCaptures": {
+ "1": {
+ "name": "support.class.php"
+ }
+ },
+ "end": ">",
+ "patterns": [
+ {
+ "include": "#type-annotation"
+ }
+ ]
+ },
+ {
+ "begin": "(shape\\()",
+ "end": "((,|\\.\\.\\.)?\\s*\\))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.key.php"
+ }
+ },
+ "name": "storage.type.shape.php",
+ "patterns": [
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#constants"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#type-annotation"
+ }
+ ]
+ },
+ {
+ "include": "#class-name"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "function-arguments": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#attributes"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "begin": "(?xi)((\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*) # The variable name",
+ "end": "(?xi)\n\\s*(?=,|\\)|$) # A closing parentheses (end of argument list) or a comma",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.php"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(=)",
+ "end": "(?=,|\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "literal-collections": {
+ "patterns": [
+ {
+ "begin": "(Vector|ImmVector|Set|ImmSet|Map|ImmMap|Pair)\\s*({)",
+ "end": "(})",
+ "beginCaptures": {
+ "1": {
+ "name": "support.class.php"
+ },
+ "2": {
+ "name": "punctuation.section.array.begin.php"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.array.end.php"
+ }
+ },
+ "name": "meta.collection.literal.php",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ }
+ ]
+ },
+ "function-call": {
+ "patterns": [
+ {
+ "begin": "(?i)(?=\\\\?[a-z_0-9\\\\]+\\\\[a-z_][a-z0-9_]*\\s*\\()",
+ "comment": "Functions in a user-defined namespace (overrides any built-ins)",
+ "end": "(?=\\s*\\()",
+ "patterns": [
+ {
+ "include": "#user-function-call"
+ }
+ ]
+ },
+ {
+ "match": "(?i)\\b(print|echo)\\b",
+ "name": "support.function.construct.php"
+ },
+ {
+ "begin": "(?i)(\\\\)?(?=\\b[a-z_][a-z_0-9]*\\s*\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ },
+ "comment": "Root namespace function calls (built-in or user)",
+ "end": "(?=\\s*\\()",
+ "patterns": [
+ {
+ "match": "(?i)\\b(isset|unset|e(val|mpty)|list)(?=\\s*\\()",
+ "name": "support.function.construct.php"
+ },
+ {
+ "include": "#support"
+ },
+ {
+ "include": "#user-function-call"
+ }
+ ]
+ }
+ ]
+ },
+ "heredoc": {
+ "patterns": [
+ {
+ "begin": "<<<\\s*(\"?)([a-zA-Z_]+[a-zA-Z0-9_]*)(\\1)\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "end": "^(\\2)(?=;?$)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "name": "string.unquoted.heredoc.php",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "<<<\\s*('?)([a-zA-Z_]+[a-zA-Z0-9_]*)(\\1)\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "end": "^(\\2)(?=;?$)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "name": "string.unquoted.heredoc.nowdoc.php"
+ }
+ ]
+ },
+ "instantiation": {
+ "begin": "(?i)(new)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.new.php"
+ }
+ },
+ "end": "(?i)(?=[^$a-z0-9_\\\\])",
+ "patterns": [
+ {
+ "match": "(parent|static|self)(?=[^a-z0-9_])",
+ "name": "support.type.php"
+ },
+ {
+ "include": "#class-name"
+ },
+ {
+ "include": "#variable-name"
+ }
+ ]
+ },
+ "interpolation": {
+ "comment": "http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing",
+ "patterns": [
+ {
+ "comment": "Interpolating octal values e.g. \\01 or \\07.",
+ "match": "\\\\[0-7]{1,3}",
+ "name": "constant.numeric.octal.php"
+ },
+ {
+ "comment": "Interpolating hex values e.g. \\x1 or \\xFF.",
+ "match": "\\\\x[0-9A-Fa-f]{1,2}",
+ "name": "constant.numeric.hex.php"
+ },
+ {
+ "comment": "Escaped characters in double-quoted strings e.g. \\n or \\t.",
+ "match": "\\\\[nrt\\\\\\$\\\"]",
+ "name": "constant.character.escape.php"
+ },
+ {
+ "comment": "Interpolating expressions in double-quoted strings with {} e.g. {$x->y->z[0][1]}.",
+ "match": "(\\{\\$.*?\\})",
+ "name": "variable.other.php"
+ },
+ {
+ "comment": "Interpolating simple variables, e.g. $x, $x->y, $x[z] but not $x->y->z.",
+ "match": "(\\$[a-zA-Z_][a-zA-Z0-9_]*((->[a-zA-Z_][a-zA-Z0-9_]*)|(\\[[a-zA-Z0-9_]+\\]))?)",
+ "name": "variable.other.php"
+ }
+ ]
+ },
+ "invoke-call": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "2": {
+ "name": "variable.other.php"
+ }
+ },
+ "match": "(?i)(\\$+)([a-z_][a-z_0-9]*)(?=\\s*\\()",
+ "name": "meta.function-call.invoke.php"
+ },
+ "interface": {
+ "begin": "^(?i)\\s*(?:(public|internal)\\s+)?(interface)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.php"
+ },
+ "2": {
+ "name": "storage.type.interface.php"
+ }
+ },
+ "name": "meta.interface.php",
+ "end": "(?=[;{])",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "\\b(extends)\\b",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.extends.php"
+ }
+ }
+ },
+ {
+ "include": "#generics"
+ },
+ {
+ "include": "#namespace"
+ },
+ {
+ "match": "(?i)[a-z0-9_]+",
+ "name": "entity.name.type.class.php"
+ }
+ ]
+ },
+ "language": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "(?=^\\s*<<)",
+ "end": "(?<=>>)",
+ "patterns": [
+ {
+ "include": "#attributes"
+ }
+ ]
+ },
+ {
+ "include": "#xhp"
+ },
+ {
+ "include": "#interface"
+ },
+ {
+ "begin": "(?xi)\n^\\s*\n(?:(module)\\s*)?(type|newtype)\n\\s+\n([a-z0-9_]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.php"
+ },
+ "2": {
+ "name": "storage.type.typedecl.php"
+ },
+ "3": {
+ "name": "entity.name.type.typedecl.php"
+ }
+ },
+ "end": "(;)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.termination.expression.php"
+ }
+ },
+ "name": "meta.typedecl.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#generics"
+ },
+ {
+ "match": "(=)",
+ "name": "keyword.operator.assignment.php"
+ },
+ {
+ "include": "#type-annotation"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)^\\s*(?:(public|internal)\\s+)?(enum)\\s+(class)\\s+([a-z0-9_]+)\\s*:?",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.php"
+ },
+ "2": {
+ "name": "storage.modifier.php"
+ },
+ "3": {
+ "name": "storage.type.class.enum.php"
+ },
+ "4": {
+ "name": "entity.name.type.class.enum.php"
+ }
+ },
+ "end": "(?=[{])",
+ "name": "meta.class.enum.php",
+ "patterns": [
+ {
+ "match": "\\b(extends)\\b",
+ "name": "storage.modifier.extends.php"
+ },
+ {
+ "include": "#type-annotation"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)^\\s*(?:(public|internal)\\s+)?(enum)\\s+([a-z0-9_]+)\\s*:?",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.php"
+ },
+ "2": {
+ "name": "storage.type.enum.php"
+ },
+ "3": {
+ "name": "entity.name.type.enum.php"
+ }
+ },
+ "end": "\\{",
+ "name": "meta.enum.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#type-annotation"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)^\\s*(?:(public|internal)\\s+)?(trait)\\s+([a-z0-9_]+)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.php"
+ },
+ "2": {
+ "name": "storage.type.trait.php"
+ },
+ "3": {
+ "name": "entity.name.type.class.php"
+ }
+ },
+ "end": "(?=[{])",
+ "name": "meta.trait.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#generics"
+ },
+ {
+ "include": "#implements"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(new)\\s+(module)\\s+([A-Za-z0-9_\\.]+)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.module.php"
+ },
+ "2": {
+ "name": "storage.type.module.php"
+ },
+ "3": {
+ "name": "entity.name.type.module.php"
+ }
+ },
+ "end": "(?=[{])",
+ "name": "meta.module.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(module)\\s+([A-Za-z0-9_\\.]+)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.module.php"
+ },
+ "2": {
+ "name": "entity.name.type.module.php"
+ }
+ },
+ "end": "$|(?=[\\s;])",
+ "name": "meta.use.module.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(?:^\\s*|\\s*)(namespace)\\b\\s+(?=([a-z0-9_\\\\]*\\s*($|[;{]|(\\/[\\/*])))|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.namespace.php"
+ }
+ },
+ "contentName": "entity.name.type.namespace.php",
+ "end": "(?i)(?=\\s*$|[^a-z0-9_\\\\])",
+ "name": "meta.namespace.php",
+ "patterns": [
+ {
+ "match": "\\\\",
+ "name": "punctuation.separator.inheritance.php"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)\\s*\\b(use)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.use.php"
+ }
+ },
+ "end": "(?=;|(?:^\\s*$))",
+ "name": "meta.use.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "(?i)\\s*(?=[a-z_0-9\\\\])",
+ "end": "(?xi)\n(?:\n (?:\\s*(as)\\b\\s*([a-z_0-9]*)\\s*(?=,|;|$))|\n (?=,|;|$)\n)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.other.use-as.php"
+ },
+ "2": {
+ "name": "support.other.namespace.use-as.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#class-builtin"
+ },
+ {
+ "begin": "(?i)\\s*(?=[\\\\a-z_0-9])",
+ "end": "$|(?=[\\s,;])",
+ "name": "support.other.namespace.use.php",
+ "patterns": [
+ {
+ "match": "\\\\",
+ "name": "punctuation.separator.inheritance.php"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "match": "\\s*,\\s*"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)^\\s*((?:(?:final|abstract|public|internal)\\s+)*)(class)\\s+([a-z0-9_]+)\\s*",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "final|abstract|public|internal",
+ "name": "storage.modifier.php"
+ }
+ ]
+ },
+ "2": {
+ "name": "storage.type.class.php"
+ },
+ "3": {
+ "name": "entity.name.type.class.php"
+ }
+ },
+ "end": "(?=[;{])",
+ "name": "meta.class.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#generics"
+ },
+ {
+ "include": "#implements"
+ },
+ {
+ "begin": "(?i)(extends)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.extends.php"
+ }
+ },
+ "contentName": "meta.other.inherited-class.php",
+ "end": "(?i)(?=[^a-z_0-9\\\\])",
+ "patterns": [
+ {
+ "begin": "(?i)(?=\\\\?[a-z_0-9]+\\\\)",
+ "end": "(?i)([a-z_][a-z_0-9]*)?(?=[^a-z0-9_\\\\])",
+ "endCaptures": {
+ "1": {
+ "name": "entity.other.inherited-class.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ },
+ {
+ "include": "#class-builtin"
+ },
+ {
+ "include": "#namespace"
+ },
+ {
+ "match": "(?i)[a-z_][a-z_0-9]*",
+ "name": "entity.other.inherited-class.php"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.php"
+ }
+ },
+ "match": "\\s*\\b(await|break|c(ase|ontinue)|concurrent|default|do|else|for(each)?|if|return|switch|use|while)\\b"
+ },
+ {
+ "begin": "(?i)\\b((?:require|include)(?:_once)?)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.import.include.php"
+ }
+ },
+ "end": "(?=\\s|;|$)",
+ "name": "meta.include.php",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(catch)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.exception.catch.php"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
+ }
+ },
+ "name": "meta.catch.php",
+ "patterns": [
+ {
+ "include": "#namespace"
+ },
+ {
+ "match": "(?xi)\n([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) # Exception class\n((?:\\s*\\|\\s*[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)*) # Optional additional exception classes\n\\s*\n((\\$+)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) # Variable",
+ "captures": {
+ "1": {
+ "name": "support.class.exception.php"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "(?i)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*",
+ "name": "support.class.exception.php"
+ },
+ {
+ "match": "\\|",
+ "name": "punctuation.separator.delimiter.php"
+ }
+ ]
+ },
+ "3": {
+ "name": "variable.other.php"
+ },
+ "4": {
+ "name": "punctuation.definition.variable.php"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "match": "\\b(catch|try|throw|exception|finally)\\b",
+ "name": "keyword.control.exception.php"
+ },
+ {
+ "begin": "(?i)\\s*(?:(public|internal)\\s+)?(function)\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.php"
+ },
+ "2": {
+ "name": "storage.type.function.php"
+ }
+ },
+ "end": "\\{|\\)",
+ "name": "meta.function.closure.php",
+ "patterns": [
+ {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.begin.php"
+ }
+ },
+ "contentName": "meta.function.arguments.php",
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-arguments"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(use)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.function.use.php"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.php"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.php"
+ }
+ },
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "storage.modifier.reference.php"
+ },
+ "2": {
+ "name": "variable.other.php"
+ },
+ "3": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(?:\\s*(&))?\\s*((\\$+)[a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)\\s*(?=,|\\))",
+ "name": "meta.function.closure.use.php"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n\\s*((?:(?:final|abstract|public|private|protected|internal|static|async)\\s+)*)\n(function)\n(?:\\s+)\n(?:\n (__(?:call|construct|destruct|get|set|isset|unset|tostring|clone|set_state|sleep|wakeup|autoload|invoke|callStatic|dispose|disposeAsync)(?=[^a-zA-Z0-9_\\x7f-\\xff]))\n |\n ([a-zA-Z0-9_]+)\n)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "final|abstract|public|private|protected|internal|static|async",
+ "name": "storage.modifier.php"
+ }
+ ]
+ },
+ "2": {
+ "name": "storage.type.function.php"
+ },
+ "3": {
+ "name": "support.function.magic.php"
+ },
+ "4": {
+ "name": "entity.name.function.php"
+ },
+ "5": {
+ "name": "meta.function.generics.php"
+ }
+ },
+ "end": "(?=[{;])",
+ "name": "meta.function.php",
+ "patterns": [
+ {
+ "include": "#generics"
+ },
+ {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.begin.php"
+ }
+ },
+ "end": "(?=\\))",
+ "contentName": "meta.function.arguments.php",
+ "patterns": [
+ {
+ "include": "#function-arguments"
+ }
+ ]
+ },
+ {
+ "begin": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.php"
+ }
+ },
+ "end": "(?=[{;])",
+ "patterns": [
+ {
+ "include": "#function-return-type"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#invoke-call"
+ },
+ {
+ "begin": "(?xi)\n\\s*\n (?=\n [a-z_0-9$\\\\]+(::)\n (?:\n ([a-z_][a-z_0-9]*)\\s*\\(\n |\n ((\\$+)[a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)\n |\n ([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)\n )?\n )",
+ "end": "(?x)\n(::)\n(?:\n ([A-Za-z_][A-Za-z_0-9]*)\\s*\\(\n |\n ((\\$+)[a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)\n |\n ([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)\n)?",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "meta.function-call.static.php"
+ },
+ "3": {
+ "name": "variable.other.class.php"
+ },
+ "4": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "5": {
+ "name": "constant.other.class.php"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(self|static|parent)\\b",
+ "name": "support.type.php"
+ },
+ {
+ "include": "#class-name"
+ },
+ {
+ "include": "#variable-name"
+ }
+ ]
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.construct.php"
+ },
+ "2": {
+ "name": "punctuation.definition.array.begin.php"
+ },
+ "3": {
+ "name": "punctuation.definition.array.end.php"
+ }
+ },
+ "match": "(array)(\\()(\\))",
+ "name": "meta.array.empty.php"
+ },
+ {
+ "begin": "(array)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.construct.php"
+ },
+ "2": {
+ "name": "punctuation.definition.array.begin.php"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.end.php"
+ }
+ },
+ "name": "meta.array.php",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.type.php"
+ }
+ },
+ "match": "(?i)\\s*\\(\\s*(array|real|double|float|int(eger)?|bool(ean)?|string|object|binary|unset|arraykey|nonnull|dict|vec|keyset)\\s*\\)"
+ },
+ {
+ "match": "(?i)\\b(array|real|double|float|int(eger)?|bool(ean)?|string|class|clone|var|function|interface|trait|parent|self|object|arraykey|nonnull|dict|vec|keyset)\\b",
+ "name": "support.type.php"
+ },
+ {
+ "match": "(?i)\\b(global|abstract|const|extends|implements|final|p(r(ivate|otected)|ublic)|internal|static)\\b",
+ "name": "storage.modifier.php"
+ },
+ {
+ "include": "#object"
+ },
+ {
+ "match": ";",
+ "name": "punctuation.terminator.expression.php"
+ },
+ {
+ "include": "#heredoc"
+ },
+ {
+ "match": "\\.=?",
+ "name": "keyword.operator.string.php"
+ },
+ {
+ "match": "=>",
+ "name": "keyword.operator.key.php"
+ },
+ {
+ "match": "==>",
+ "name": "keyword.operator.lambda.php"
+ },
+ {
+ "match": "\\|>",
+ "name": "keyword.operator.pipe.php"
+ },
+ {
+ "match": "(!==|!=|===|==)",
+ "name": "keyword.operator.comparison.php"
+ },
+ {
+ "match": "=|\\+=|\\-=|\\*=|/=|%=|&=|\\|=|\\^=|<<=|>>=",
+ "name": "keyword.operator.assignment.php"
+ },
+ {
+ "match": "(<=|>=|<|>)",
+ "name": "keyword.operator.comparison.php"
+ },
+ {
+ "match": "(\\-\\-|\\+\\+)",
+ "name": "keyword.operator.increment-decrement.php"
+ },
+ {
+ "match": "(\\-|\\+|\\*|/|%)",
+ "name": "keyword.operator.arithmetic.php"
+ },
+ {
+ "match": "(!|&&|\\|\\|)",
+ "name": "keyword.operator.logical.php"
+ },
+ {
+ "begin": "(?i)\\b(as|is)\\b\\s+(?=[\\\\$a-z_])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.php"
+ }
+ },
+ "end": "(?=[^\\\\$A-Za-z_0-9])",
+ "patterns": [
+ {
+ "include": "#class-name"
+ },
+ {
+ "include": "#variable-name"
+ }
+ ]
+ },
+ {
+ "match": "(?i)\\b(is|as)\\b",
+ "name": "keyword.operator.type.php"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "match": "<<|>>|~|\\^|&|\\|",
+ "name": "keyword.operator.bitwise.php"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#instantiation"
+ },
+ {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.php"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "include": "#literal-collections"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.begin.php"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.end.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "include": "#constants"
+ }
+ ]
+ },
+ "namespace": {
+ "begin": "(?i)((namespace)|[a-z0-9_]+)?(\\\\)(?=.*?[^a-z_0-9\\\\])",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.type.namespace.php"
+ },
+ "3": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ },
+ "end": "(?i)(?=[a-z0-9_]*[^a-z0-9_\\\\])",
+ "name": "support.other.namespace.php",
+ "patterns": [
+ {
+ "name": "entity.name.type.namespace.php",
+ "match": "(?i)[a-z0-9_]+(?=\\\\)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ },
+ "match": "(?i)(\\\\)"
+ }
+ ]
+ },
+ "numbers": {
+ "match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)\\b",
+ "name": "constant.numeric.php"
+ },
+ "object": {
+ "patterns": [
+ {
+ "begin": "(->)(\\$?\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "meta.function-call.object.php"
+ },
+ "3": {
+ "name": "variable.other.property.php"
+ },
+ "4": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(?x)\n(->)\n (?:\n ([A-Za-z_][A-Za-z_0-9]*)\\s*\\(\n |\n ((\\$+)?[a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)\n )?"
+ }
+ ]
+ },
+ "parameter-default-types": {
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "match": "=>",
+ "name": "keyword.operator.key.php"
+ },
+ {
+ "match": "=",
+ "name": "keyword.operator.assignment.php"
+ },
+ {
+ "include": "#instantiation"
+ },
+ {
+ "begin": "(?xi)\n\\s*\n(?=\n [a-z_0-9\\\\]+(::)\n ([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)?\n)",
+ "end": "(?i)(::)([a-z_\\x{7f}-\\x{ff}][a-z0-9_\\x{7f}-\\x{ff}]*)?",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "constant.other.class.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#class-name"
+ }
+ ]
+ },
+ {
+ "include": "#constants"
+ }
+ ]
+ },
+ "php_doc": {
+ "patterns": [
+ {
+ "comment": "PHPDocumentor only recognises lines with an asterisk as the first non-whitespaces character",
+ "match": "^(?!\\s*\\*).*$\\n?",
+ "name": "invalid.illegal.missing-asterisk.phpdoc.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.phpdoc.php"
+ },
+ "3": {
+ "name": "storage.modifier.php"
+ },
+ "4": {
+ "name": "invalid.illegal.wrong-access-type.phpdoc.php"
+ }
+ },
+ "match": "^\\s*\\*\\s*(@access)\\s+((public|private|protected|internal)|(.+))\\s*$"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.phpdoc.php"
+ },
+ "2": {
+ "name": "markup.underline.link.php"
+ }
+ },
+ "match": "(@xlink)\\s+(.+)\\s*$"
+ },
+ {
+ "match": "\\@(a(bstract|uthor)|c(ategory|opyright)|example|global|internal|li(cense|nk)|pa(ckage|ram)|return|s(ee|ince|tatic|ubpackage)|t(hrows|odo)|v(ar|ersion)|uses|deprecated|final|ignore)\\b",
+ "name": "keyword.other.phpdoc.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.phpdoc.php"
+ }
+ },
+ "match": "\\{(@(link)).+?\\}",
+ "name": "meta.tag.inline.phpdoc.php"
+ }
+ ]
+ },
+ "regex-double-quoted": {
+ "begin": "(?x)\n(?<=re)\"/ (?=(\\\\.|[^\"/])++/[imsxeADSUXu]*\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "end": "(/)([imsxeADSUXu]*)(\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.regexp.double-quoted.php",
+ "patterns": [
+ {
+ "comment": "Escaped from the regexp – there can also be 2 backslashes (since 1 will escape the first)",
+ "match": "(\\\\){1,2}[.$^\\[\\]{}]",
+ "name": "constant.character.escape.regex.php"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arbitrary-repetition.php"
+ },
+ "3": {
+ "name": "punctuation.definition.arbitrary-repetition.php"
+ }
+ },
+ "match": "(\\{)\\d+(,\\d+)?(\\})",
+ "name": "string.regexp.arbitrary-repetition.php"
+ },
+ {
+ "begin": "\\[(?:\\^?\\])?",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.character-class.php"
+ }
+ },
+ "end": "\\]",
+ "name": "string.regexp.character-class.php",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "match": "[$^+*]",
+ "name": "keyword.operator.regexp.php"
+ }
+ ]
+ },
+ "regex-single-quoted": {
+ "begin": "(?x)\n(?<=re)'/ (?=(\\\\.|[^'/])++/[imsxeADSUXu]*')",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "end": "(/)([imsxeADSUXu]*)(')",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.regexp.single-quoted.php",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arbitrary-repetition.php"
+ },
+ "3": {
+ "name": "punctuation.definition.arbitrary-repetition.php"
+ }
+ },
+ "match": "(\\{)\\d+(,\\d+)?(\\})",
+ "name": "string.regexp.arbitrary-repetition.php"
+ },
+ {
+ "comment": "Escaped from the regexp – there can also be 2 backslashes (since 1 will escape the first)",
+ "match": "(\\\\){1,2}[.$^\\[\\]{}]",
+ "name": "constant.character.escape.regex.php"
+ },
+ {
+ "comment": "Escaped from the PHP string – there can also be 2 backslashes (since 1 will escape the first)",
+ "match": "\\\\{1,2}[\\\\']",
+ "name": "constant.character.escape.php"
+ },
+ {
+ "begin": "\\[(?:\\^?\\])?",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.character-class.php"
+ }
+ },
+ "end": "\\]",
+ "name": "string.regexp.character-class.php",
+ "patterns": [
+ {
+ "match": "\\\\[\\\\'\\[\\]]",
+ "name": "constant.character.escape.php"
+ }
+ ]
+ },
+ {
+ "match": "[$^+*]",
+ "name": "keyword.operator.regexp.php"
+ }
+ ]
+ },
+ "sql-string-double-quoted": {
+ "begin": "\"\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "contentName": "source.sql.embedded.php",
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.quoted.double.sql.php",
+ "patterns": [
+ {
+ "comment": "Open parens cause the next escaped character to not be captured as an\nescape character. Example: $x = \"SELECT (\")\";",
+ "match": "\\(",
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
+ },
+ {
+ "match": "#(\\\\\"|[^\"])*(?=\"|$\\n?)",
+ "name": "comment.line.number-sign.sql"
+ },
+ {
+ "match": "--(\\\\\"|[^\"])*(?=\"|$\\n?)",
+ "name": "comment.line.double-dash.sql"
+ },
+ {
+ "match": "\\\\[\\\\\"`']",
+ "name": "constant.character.escape.php"
+ },
+ {
+ "comment": "Unclosed strings must be captured to avoid them eating the remainder of the PHP script\nSample case: $sql = \"SELECT * FROM bar WHERE foo = '\" . $variable . \"'\"",
+ "match": "'(?=((\\\\')|[^'\"])*(\"|$))",
+ "name": "string.quoted.single.unclosed.sql"
+ },
+ {
+ "comment": "Unclosed strings must be captured to avoid them eating the remainder of the PHP script\nSample case: $sql = \"SELECT * FROM bar WHERE foo = '\" . $variable . \"'\"",
+ "match": "`(?=((\\\\`)|[^`\"])*(\"|$))",
+ "name": "string.quoted.other.backtick.unclosed.sql"
+ },
+ {
+ "begin": "'",
+ "end": "'",
+ "name": "string.quoted.single.sql",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "`",
+ "end": "`",
+ "name": "string.quoted.other.backtick.sql",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "source.sql"
+ }
+ ]
+ },
+ "sql-string-single-quoted": {
+ "begin": "'\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "contentName": "source.sql.embedded.php",
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.quoted.single.sql.php",
+ "patterns": [
+ {
+ "comment": "Open parens cause the next escaped character to not be captured as an\nescape character. Example: $x = 'SELECT (')';",
+ "match": "\\(",
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
+ },
+ {
+ "match": "#(\\\\'|[^'])*(?='|$\\n?)",
+ "name": "comment.line.number-sign.sql"
+ },
+ {
+ "match": "--(\\\\'|[^'])*(?='|$\\n?)",
+ "name": "comment.line.double-dash.sql"
+ },
+ {
+ "match": "\\\\[\\\\'`\"]",
+ "name": "constant.character.escape.php"
+ },
+ {
+ "comment": "Unclosed strings must be captured to avoid them eating the remainder of the PHP script\nSample case: $sql = \"SELECT * FROM bar WHERE foo = '\" . $variable . \"'\"",
+ "match": "`(?=((\\\\`)|[^`'])*('|$))",
+ "name": "string.quoted.other.backtick.unclosed.sql"
+ },
+ {
+ "comment": "Unclosed strings must be captured to avoid them eating the remainder of the PHP script\nSample case: $sql = \"SELECT * FROM bar WHERE foo = '\" . $variable . \"'\"",
+ "match": "\"(?=((\\\\\")|[^\"'])*('|$))",
+ "name": "string.quoted.double.unclosed.sql"
+ },
+ {
+ "include": "source.sql"
+ }
+ ]
+ },
+ "string-double-quoted": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "comment": "This contentName is just to allow the usage of “select scope” to select the string contents first, then the string with quotes",
+ "contentName": "meta.string-contents.quoted.double.php",
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.quoted.double.php",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ "string-single-quoted": {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "contentName": "meta.string-contents.quoted.single.php",
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.quoted.single.php",
+ "patterns": [
+ {
+ "match": "\\\\[\\\\']",
+ "name": "constant.character.escape.php"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "include": "#regex-double-quoted"
+ },
+ {
+ "include": "#sql-string-double-quoted"
+ },
+ {
+ "include": "#string-double-quoted"
+ },
+ {
+ "include": "#regex-single-quoted"
+ },
+ {
+ "include": "#sql-string-single-quoted"
+ },
+ {
+ "include": "#string-single-quoted"
+ }
+ ]
+ },
+ "support": {
+ "patterns": [
+ {
+ "match": "(?i)\\bapc_(s(tore|ma_info)|c(ompile_file|lear_cache|a(s|che_info))|inc|de(c|fine_constants|lete(_file)?)|exists|fetch|load_constants|add|bin_(dump(file)?|load(file)?))\\b",
+ "name": "support.function.apc.php"
+ },
+ {
+ "match": "(?i)\\b(s(huffle|izeof|ort)|n(ext|at(sort|casesort))|c(o(unt|mpact)|urrent)|in_array|u(sort|ksort|asort)|p(os|rev)|e(nd|ach|xtract)|k(sort|ey|rsort)|list|a(sort|r(sort|ray(_(s(hift|um|plice|earch|lice)|c(h(unk|ange_key_case)|o(unt_values|mbine))|intersect(_(u(key|assoc)|key|assoc))?|diff(_(u(key|assoc)|key|assoc))?|u(n(shift|ique)|intersect(_(uassoc|assoc))?|diff(_(uassoc|assoc))?)|p(op|ush|ad|roduct)|values|key(s|_exists)|f(il(ter|l(_keys)?)|lip)|walk(_recursive)?|r(e(duce|place(_recursive)?|verse)|and)|m(ultisort|erge(_recursive)?|ap)))?))|r(sort|eset|ange))\\b",
+ "name": "support.function.array.php"
+ },
+ {
+ "match": "(?i)\\b(s(how_source|ys_getloadavg|leep)|highlight_(string|file)|con(stant|nection_(status|timeout|aborted))|time_(sleep_until|nanosleep)|ignore_user_abort|d(ie|efine(d)?)|u(sleep|n(iqid|pack))|__halt_compiler|p(hp_(strip_whitespace|check_syntax)|ack)|e(val|xit)|get_browser)\\b",
+ "name": "support.function.basic_functions.php"
+ },
+ {
+ "match": "(?i)\\bbc(s(cale|ub|qrt)|comp|div|pow(mod)?|add|m(od|ul))\\b",
+ "name": "support.function.bcmath.php"
+ },
+ {
+ "match": "(?i)\\bbz(c(ompress|lose)|open|decompress|err(str|no|or)|flush|write|read)\\b",
+ "name": "support.function.bz2.php"
+ },
+ {
+ "match": "(?i)\\b(GregorianToJD|cal_(to_jd|info|days_in_month|from_jd)|unixtojd|jdto(unix|jewish)|easter_da(ys|te)|J(ulianToJD|ewishToJD|D(MonthName|To(Gregorian|Julian|French)|DayOfWeek))|FrenchToJD)\\b",
+ "name": "support.function.calendar.php"
+ },
+ {
+ "match": "(?i)\\b(c(lass_(exists|alias)|all_user_method(_array)?)|trait_exists|i(s_(subclass_of|a)|nterface_exists)|__autoload|property_exists|get_(c(lass(_(vars|methods))?|alled_class)|object_vars|declared_(classes|traits|interfaces)|parent_class)|method_exists)\\b",
+ "name": "support.function.classobj.php"
+ },
+ {
+ "match": "(?i)\\b(com_(set|create_guid|i(senum|nvoke)|pr(int_typeinfo|op(set|put|get))|event_sink|load(_typelib)?|addref|release|get(_active_object)?|message_pump)|variant_(s(ub|et(_type)?)|n(ot|eg)|c(a(st|t)|mp)|i(nt|div|mp)|or|d(iv|ate_(to_timestamp|from_timestamp))|pow|eqv|fix|a(nd|dd|bs)|round|get_type|xor|m(od|ul)))\\b",
+ "name": "support.function.com.php"
+ },
+ {
+ "match": "(?i)\\bctype_(space|cntrl|digit|upper|p(unct|rint)|lower|al(num|pha)|graph|xdigit)\\b",
+ "name": "support.function.ctype.php"
+ },
+ {
+ "match": "(?i)\\bcurl_(setopt(_array)?|c(opy_handle|lose)|init|e(rr(no|or)|xec)|version|getinfo|multi_(select|close|in(it|fo_read)|exec|add_handle|remove_handle|getcontent))\\b",
+ "name": "support.function.curl.php"
+ },
+ {
+ "match": "(?i)\\b(str(totime|ptime|ftime)|checkdate|time(zone_(name_(from_abbr|get)|transitions_get|identifiers_list|o(pen|ffset_get)|version_get|location_get|abbreviations_list))?|idate|date(_(su(n(set|_info|rise)|b)|create(_from_format)?|time(stamp_(set|get)|zone_(set|get)|_set)|i(sodate_set|nterval_(create_from_date_string|format))|offset_get|d(iff|efault_timezone_(set|get)|ate_set)|parse(_from_format)?|format|add|get_last_errors|modify))?|localtime|g(et(timeofday|date)|m(strftime|date|mktime))|m(icrotime|ktime))\\b",
+ "name": "support.function.datetime.php"
+ },
+ {
+ "match": "(?i)\\bdba_(sync|handlers|nextkey|close|insert|op(timize|en)|delete|popen|exists|key_split|f(irstkey|etch)|list|replace)\\b",
+ "name": "support.function.dba.php"
+ },
+ {
+ "match": "(?i)\\bdbx_(sort|c(o(nnect|mpare)|lose)|e(scape_string|rror)|query|fetch_row)\\b",
+ "name": "support.function.dbx.php"
+ },
+ {
+ "match": "(?i)\\b(scandir|c(h(dir|root)|losedir)|opendir|dir|re(winddir|addir)|getcwd)\\b",
+ "name": "support.function.dir.php"
+ },
+ {
+ "match": "(?i)\\bdotnet_load\\b",
+ "name": "support.function.dotnet.php"
+ },
+ {
+ "match": "(?i)\\beio_(s(y(nc(_file_range|fs)?|mlink)|tat(vfs)?|e(ndfile|t_m(in_parallel|ax_(idle|p(oll_(time|reqs)|arallel)))|ek))|n(threads|op|pending|re(qs|ady))|c(h(own|mod)|ustom|lose|ancel)|truncate|init|open|dup2|u(nlink|time)|poll|event_loop|f(s(ync|tat(vfs)?)|ch(own|mod)|truncate|datasync|utime|allocate)|write|l(stat|ink)|r(e(name|a(d(dir|link|ahead)?|lpath))|mdir)|g(et_(event_stream|last_error)|rp(_(cancel|limit|add))?)|mk(nod|dir)|busy)\\b",
+ "name": "support.function.eio.php"
+ },
+ {
+ "match": "(?i)\\benchant_(dict_(s(tore_replacement|uggest)|check|is_in_session|describe|quick_check|add_to_(session|personal)|get_error)|broker_(set_ordering|init|d(ict_exists|escribe)|free(_dict)?|list_dicts|request_(dict|pwl_dict)|get_error))\\b",
+ "name": "support.function.enchant.php"
+ },
+ {
+ "match": "(?i)\\b(s(plit(i)?|ql_regcase)|ereg(i(_replace)?|_replace)?)\\b",
+ "name": "support.function.ereg.php"
+ },
+ {
+ "match": "(?i)\\b(set_e(rror_handler|xception_handler)|trigger_error|debug_(print_backtrace|backtrace)|user_error|error_(log|reporting|get_last)|restore_e(rror_handler|xception_handler))\\b",
+ "name": "support.function.errorfunc.php"
+ },
+ {
+ "match": "(?i)\\b(s(hell_exec|ystem)|p(assthru|roc_(nice|close|terminate|open|get_status))|e(scapeshell(cmd|arg)|xec))\\b",
+ "name": "support.function.exec.php"
+ },
+ {
+ "match": "(?i)\\b(exif_(t(humbnail|agname)|imagetype|read_data)|read_exif_data)\\b",
+ "name": "support.function.exif.php"
+ },
+ {
+ "match": "(?i)\\b(s(ymlink|tat|et_file_buffer)|c(h(own|grp|mod)|opy|learstatcache)|t(ouch|empnam|mpfile)|is_(dir|uploaded_file|executable|file|writ(eable|able)|link|readable)|d(i(sk(_(total_space|free_space)|freespace)|rname)|elete)|u(nlink|mask)|p(close|open|a(thinfo|rse_ini_(string|file)))|f(s(canf|tat|eek)|nmatch|close|t(ell|runcate)|ile(size|ctime|type|inode|owner|_(put_contents|exists|get_contents)|perms|atime|group|mtime)?|open|p(ut(s|csv)|assthru)|eof|flush|write|lock|read|get(s(s)?|c(sv)?))|l(stat|ch(own|grp)|ink(info)?)|r(e(name|wind|a(d(file|link)|lpath(_cache_(size|get))?))|mdir)|glob|m(ove_uploaded_file|kdir)|basename)\\b",
+ "name": "support.function.file.php"
+ },
+ {
+ "match": "(?i)\\b(finfo_(set_flags|close|open|file|buffer)|mime_content_type)\\b",
+ "name": "support.function.fileinfo.php"
+ },
+ {
+ "match": "(?i)\\bfilter_(has_var|i(nput(_array)?|d)|var(_array)?|list)\\b",
+ "name": "support.function.filter.php"
+ },
+ {
+ "match": "(?i)\\b(c(all_user_func(_array)?|reate_function)|unregister_tick_function|f(orward_static_call(_array)?|unc(tion_exists|_(num_args|get_arg(s)?)))|register_(shutdown_function|tick_function)|get_defined_functions)\\b",
+ "name": "support.function.funchand.php"
+ },
+ {
+ "match": "(?i)\\b(ngettext|textdomain|d(ngettext|c(ngettext|gettext)|gettext)|gettext|bind(textdomain|_textdomain_codeset))\\b",
+ "name": "support.function.gettext.php"
+ },
+ {
+ "match": "(?i)\\bgmp_(s(can(1|0)|trval|ign|ub|etbit|qrt(rem)?)|hamdist|ne(g|xtprime)|c(om|lrbit|mp)|testbit|in(tval|it|vert)|or|div(_(q(r)?|r)|exact)?|jacobi|p(o(pcount|w(m)?)|erfect_square|rob_prime)|fact|legendre|a(nd|dd|bs)|random|gcd(ext)?|xor|m(od|ul))\\b",
+ "name": "support.function.gmp.php"
+ },
+ {
+ "match": "(?i)\\bhash(_(hmac(_file)?|copy|init|update(_(stream|file))?|pbkdf2|fi(nal|le)|algos))?\\b",
+ "name": "support.function.hash.php"
+ },
+ {
+ "match": "(?i)\\b(http_(s(upport|end_(st(atus|ream)|content_(type|disposition)|data|file|last_modified))|head|negotiate_(c(harset|ontent_type)|language)|c(hunked_decode|ache_(etag|last_modified))|throttle|inflate|d(eflate|ate)|p(ost_(data|fields)|ut_(stream|data|file)|ersistent_handles_(c(ount|lean)|ident)|arse_(headers|cookie|params|message))|re(direct|quest(_(method_(name|unregister|exists|register)|body_encode))?)|get(_request_(headers|body(_stream)?))?|match_(etag|request_header|modified)|build_(str|cookie|url))|ob_(inflatehandler|deflatehandler|etaghandler))\\b",
+ "name": "support.function.http.php"
+ },
+ {
+ "match": "(?i)\\b(iconv(_(s(tr(pos|len|rpos)|ubstr|et_encoding)|get_encoding|mime_(decode(_headers)?|encode)))?|ob_iconv_handler)\\b",
+ "name": "support.function.iconv.php"
+ },
+ {
+ "match": "(?i)\\biis_(s(t(op_serv(ice|er)|art_serv(ice|er))|et_(s(cript_map|erver_rights)|dir_security|app_settings))|add_server|remove_server|get_(s(cript_map|erv(ice_state|er_(rights|by_(comment|path))))|dir_security))\\b",
+ "name": "support.function.iisfunc.php"
+ },
+ {
+ "match": "(?i)\\b(i(ptc(parse|embed)|mage(s(y|tring(up)?|et(style|t(hickness|ile)|pixel|brush)|avealpha|x)|c(har(up)?|o(nvolution|py(res(ized|ampled)|merge(gray)?)?|lor(s(total|et|forindex)|closest(hwb|alpha)?|transparent|deallocate|exact(alpha)?|a(t|llocate(alpha)?)|resolve(alpha)?|match))|reate(truecolor|from(string|jpeg|png|wbmp|g(if|d(2(part)?)?)|x(pm|bm)))?)|t(ypes|tf(text|bbox)|ruecolortopalette)|i(struecolor|nterlace)|2wbmp|d(estroy|ashedline)|jpeg|_type_to_(extension|mime_type)|p(s(slantfont|text|e(ncodefont|xtendfont)|freefont|loadfont|bbox)|ng|olygon|alettecopy)|ellipse|f(t(text|bbox)|il(ter|l(toborder|ed(polygon|ellipse|arc|rectangle))?)|ont(height|width))|wbmp|l(ine|oadfont|ayereffect)|a(ntialias|lphablending|rc)|r(otate|ectangle)|g(if|d(2)?|ammacorrect|rab(screen|window))|xbm))|jpeg2wbmp|png2wbmp|g(d_info|etimagesize(fromstring)?))\\b",
+ "name": "support.function.image.php"
+ },
+ {
+ "match": "(?i)\\b(s(ys_get_temp_dir|et_(time_limit|include_path|magic_quotes_runtime))|ini_(set|alter|restore|get(_all)?)|zend_(thread_id|version|logo_guid)|dl|p(hp(credits|info|_(sapi_name|ini_(scanned_files|loaded_file)|uname|logo_guid)|version)|utenv)|extension_loaded|version_compare|assert(_options)?|restore_include_path|g(c_(collect_cycles|disable|enable(d)?)|et(opt|_(c(urrent_user|fg_var)|include(d_files|_path)|defined_constants|extension_funcs|loaded_extensions|required_files|magic_quotes_(runtime|gpc))|env|lastmod|rusage|my(inode|uid|pid|gid)))|m(emory_get_(usage|peak_usage)|a(in|gic_quotes_runtime)))\\b",
+ "name": "support.function.info.php"
+ },
+ {
+ "match": "(?i)\\bibase_(se(t_event_handler|rv(ice_(detach|attach)|er_info))|n(um_(params|fields)|ame_result)|c(o(nnect|mmit(_ret)?)|lose)|trans|d(elete_user|rop_db|b_info)|p(connect|aram_info|repare)|e(rr(code|msg)|xecute)|query|f(ield_info|etch_(object|assoc|row)|ree_(event_handler|query|result))|wait_event|a(dd_user|ffected_rows)|r(ollback(_ret)?|estore)|gen_id|m(odify_user|aintain_db)|b(lob_(c(lose|ancel|reate)|i(nfo|mport)|open|echo|add|get)|ackup))\\b",
+ "name": "support.function.interbase.php"
+ },
+ {
+ "match": "(?i)\\b(n(ormalizer_(normalize|is_normalized)|umfmt_(set_(symbol|text_attribute|pattern|attribute)|create|parse(_currency)?|format(_currency)?|get_(symbol|text_attribute|pattern|error_(code|message)|locale|attribute)))|collator_(s(ort(_with_sort_keys)?|et_(strength|attribute))|c(ompare|reate)|asort|get_(s(trength|ort_key)|error_(code|message)|locale|attribute))|transliterator_(create(_(inverse|from_rules))?|transliterate|list_ids|get_error_(code|message))|i(ntl_(is_failure|error_name|get_error_(code|message))|dn_to_(u(nicode|tf8)|ascii))|datefmt_(set_(calendar|timezone(_id)?|pattern|lenient)|create|is_lenient|parse|format(_object)?|localtime|get_(calendar(_object)?|time(type|zone(_id)?)|datetype|pattern|error_(code|message)|locale))|locale_(set_default|compose|parse|filter_matches|lookup|accept_from_http|get_(script|d(isplay_(script|name|variant|language|region)|efault)|primary_language|keywords|all_variants|region))|resourcebundle_(c(ount|reate)|locales|get(_error_(code|message))?)|grapheme_(s(tr(str|i(str|pos)|pos|len|r(ipos|pos))|ubstr)|extract)|msgfmt_(set_pattern|create|parse(_message)?|format(_message)?|get_(pattern|error_(code|message)|locale)))\\b",
+ "name": "support.function.intl.php"
+ },
+ {
+ "match": "(?i)\\bjson_(decode|encode|last_error)\\b",
+ "name": "support.function.json.php"
+ },
+ {
+ "match": "(?i)\\bldap_(s(tart_tls|ort|e(t_(option|rebind_proc)|arch)|asl_bind)|next_(entry|attribute|reference)|c(o(n(nect|trol_paged_result(_response)?)|unt_entries|mpare)|lose)|t61_to_8859|d(n2ufn|elete)|8859_to_t61|unbind|parse_re(sult|ference)|e(rr(no|2str|or)|xplode_dn)|f(irst_(entry|attribute|reference)|ree_result)|list|add|re(name|ad)|get_(option|dn|entries|values(_len)?|attributes)|mod(ify|_(del|add|replace))|bind)\\b",
+ "name": "support.function.ldap.php"
+ },
+ {
+ "match": "(?i)\\blibxml_(set_(streams_context|external_entity_loader)|clear_errors|disable_entity_loader|use_internal_errors|get_(errors|last_error))\\b",
+ "name": "support.function.libxml.php"
+ },
+ {
+ "match": "(?i)\\b(ezmlm_hash|mail)\\b",
+ "name": "support.function.mail.php"
+ },
+ {
+ "match": "(?i)\\b(s(in(h)?|qrt|rand)|h(ypot|exdec)|c(os(h)?|eil)|tan(h)?|is_(nan|infinite|finite)|octdec|de(c(hex|oct|bin)|g2rad)|p(i|ow)|exp(m1)?|f(loor|mod)|l(cg_value|og(1(p|0))?)|a(sin(h)?|cos(h)?|tan(h|2)?|bs)|r(ound|a(nd|d2deg))|getrandmax|m(t_(srand|rand|getrandmax)|in|ax)|b(indec|ase_convert))\\b",
+ "name": "support.function.math.php"
+ },
+ {
+ "match": "(?i)\\bmb_(s(tr(str|cut|to(upper|lower)|i(str|pos|mwidth)|pos|width|len|r(chr|i(chr|pos)|pos))|ubst(itute_character|r(_count)?)|plit|end_mail)|http_(input|output)|c(heck_encoding|onvert_(case|encoding|variables|kana))|internal_encoding|output_handler|de(code_(numericentity|mimeheader)|tect_(order|encoding))|p(arse_str|referred_mime_name)|e(ncod(ing_aliases|e_(numericentity|mimeheader))|reg(i(_replace)?|_(search(_(setpos|init|pos|regs|get(pos|regs)))?|replace(_callback)?|match))?)|l(ist_encodings|anguage)|regex_(set_options|encoding)|get_info)\\b",
+ "name": "support.function.mbstring.php"
+ },
+ {
+ "match": "(?i)\\bm(crypt_(c(fb|reate_iv|bc)|ofb|decrypt|e(nc(_(self_test|is_block_(algorithm(_mode)?|mode)|get_(supported_key_sizes|iv_size|key_size|algorithms_name|modes_name|block_size))|rypt)|cb)|list_(algorithms|modes)|ge(neric(_(init|deinit|end))?|t_(cipher_name|iv_size|key_size|block_size))|module_(self_test|close|is_block_(algorithm(_mode)?|mode)|open|get_(supported_key_sizes|algo_(key_size|block_size))))|decrypt_generic)\\b",
+ "name": "support.function.mcrypt.php"
+ },
+ {
+ "match": "(?i)\\bmemcache_debug\\b",
+ "name": "support.function.memcache.php"
+ },
+ {
+ "match": "(?i)\\bmhash(_(count|keygen_s2k|get_(hash_name|block_size)))?\\b",
+ "name": "support.function.mhash.php"
+ },
+ {
+ "match": "(?i)\\bbson_(decode|encode)\\b",
+ "name": "support.function.mongo.php"
+ },
+ {
+ "match": "(?i)\\bmysql_(s(tat|e(t_charset|lect_db))|num_(fields|rows)|c(onnect|l(ient_encoding|ose)|reate_db)|t(hread_id|ablename)|in(sert_id|fo)|d(ata_seek|rop_db|b_(name|query))|unbuffered_query|p(connect|ing)|e(scape_string|rr(no|or))|query|f(ield_(seek|name|t(ype|able)|flags|len)|etch_(object|field|lengths|a(ssoc|rray)|row)|ree_result)|list_(tables|dbs|processes|fields)|affected_rows|re(sult|al_escape_string)|get_(server_info|host_info|client_info|proto_info))\\b",
+ "name": "support.function.mysql.php"
+ },
+ {
+ "match": "(?i)\\bmysqli_(s(sl_set|t(ore_result|at|mt_(s(tore_result|end_long_data)|next_result|close|init|data_seek|prepare|execute|f(etch|ree_result)|attr_(set|get)|res(ult_metadata|et)|get_(warnings|result)|more_results|bind_(param|result)))|e(nd_(query|long_data)|t_(charset|opt|local_infile_(handler|default))|lect_db)|lave_query)|next_result|c(ha(nge_user|racter_set_name)|o(nnect|mmit)|l(ient_encoding|ose))|thread_safe|init|options|d(isable_r(pl_parse|eads_from_master)|ump_debug_info|ebug|ata_seek)|use_result|p(ing|oll|aram_count|repare)|e(scape_string|nable_r(pl_parse|eads_from_master)|xecute|mbedded_server_(start|end))|kill|query|f(ield_seek|etch(_(object|field(s|_direct)?|a(ssoc|ll|rray)|row))?|ree_result)|autocommit|r(ollback|pl_(p(arse_enabled|robe)|query_type)|e(port|fresh|a(p_async_query|l_(connect|escape_string|query))))|get_(c(harset|onnection_stats|lient_(stats|info|version)|ache_stats)|warnings|metadata)|m(ore_results|ulti_query|aster_query)|bind_(param|result))\\b",
+ "name": "support.function.mysqli.php"
+ },
+ {
+ "match": "(?i)\\bmysqlnd_memcache_(set|get_config)\\b",
+ "name": "support.function.mysqlnd-memcache.php"
+ },
+ {
+ "match": "(?i)\\bmysqlnd_ms_(set_(user_pick_server|qos)|query_is_select|get_(stats|last_(used_connection|gtid))|match_wild)\\b",
+ "name": "support.function.mysqlnd-ms.php"
+ },
+ {
+ "match": "(?i)\\bmysqlnd_qc_(set_(storage_handler|cache_condition|is_select|user_handlers)|clear_cache|get_(normalized_query_trace_log|c(ore_stats|ache_info)|query_trace_log|available_handlers))\\b",
+ "name": "support.function.mysqlnd-qc.php"
+ },
+ {
+ "match": "(?i)\\bmysqlnd_uh_(set_(statement_proxy|connection_proxy)|convert_to_mysqlnd)\\b",
+ "name": "support.function.mysqlnd-uh.php"
+ },
+ {
+ "match": "(?i)\\b(s(yslog|ocket_(set_(timeout|blocking)|get_status)|et(cookie|rawcookie))|h(ttp_response_code|eader(s_(sent|list)|_re(gister_callback|move))?)|c(heckdnsrr|loselog)|i(net_(ntop|pton)|p2long)|openlog|d(ns_(check_record|get_(record|mx))|efine_syslog_variables)|pfsockopen|fsockopen|long2ip|get(servby(name|port)|host(name|by(name(l)?|addr))|protobyn(umber|ame)|mxrr))\\b",
+ "name": "support.function.network.php"
+ },
+ {
+ "match": "(?i)\\bnsapi_(virtual|re(sponse_headers|quest_headers))\\b",
+ "name": "support.function.nsapi.php"
+ },
+ {
+ "match": "(?i)\\b(deaggregate|aggregat(ion_info|e(_(info|properties(_by_(list|regexp))?|methods(_by_(list|regexp))?))?))\\b",
+ "name": "support.function.objaggregation.php"
+ },
+ {
+ "match": "(?i)\\boci(s(tatementtype|e(tprefetch|rverversion)|avelob(file)?)|n(umcols|ew(c(ollection|ursor)|descriptor)|logon)|c(o(l(umn(s(cale|ize)|name|type(raw)?|isnull|precision)|l(size|trim|a(ssign(elem)?|ppend)|getelem|max))|mmit)|loselob|ancel)|internaldebug|definebyname|_(s(tatement_type|e(t_(client_i(nfo|dentifier)|prefetch|edition|action|module_name)|rver_version))|n(um_(fields|rows)|ew_(c(o(nnect|llection)|ursor)|descriptor))|c(o(nnect|mmit)|l(ient_version|ose)|ancel)|internal_debug|define_by_name|p(connect|a(ssword_change|rse))|e(rror|xecute)|f(ield_(s(cale|ize)|name|type(_raw)?|is_null|precision)|etch(_(object|a(ssoc|ll|rray)|row))?|ree_(statement|descriptor))|lob_(copy|is_equal)|r(ollback|esult)|bind_(array_by_name|by_name))|p(logon|arse)|e(rror|xecute)|f(etch(statement|into)?|ree(statement|c(ollection|ursor)|desc))|write(temporarylob|lobtofile)|lo(adlob|go(n|ff))|r(o(wcount|llback)|esult)|bindbyname)\\b",
+ "name": "support.function.oci8.php"
+ },
+ {
+ "match": "(?i)\\bopenssl_(s(ign|eal)|c(sr_(sign|new|export(_to_file)?|get_(subject|public_key))|ipher_iv_length)|open|d(h_compute_key|igest|ecrypt)|p(ublic_(decrypt|encrypt)|k(cs(12_(export(_to_file)?|read)|7_(sign|decrypt|encrypt|verify))|ey_(new|export(_to_file)?|free|get_(details|p(ublic|rivate))))|rivate_(decrypt|encrypt))|e(ncrypt|rror_string)|verify|free_key|random_pseudo_bytes|get_(cipher_methods|p(ublickey|rivatekey)|md_methods)|x509_(check(_private_key|purpose)|parse|export(_to_file)?|free|read))\\b",
+ "name": "support.function.openssl.php"
+ },
+ {
+ "match": "(?i)\\b(o(utput_(add_rewrite_var|reset_rewrite_vars)|b_(start|clean|implicit_flush|end_(clean|flush)|flush|list_handlers|g(zhandler|et_(status|c(ontents|lean)|flush|le(ngth|vel)))))|flush)\\b",
+ "name": "support.function.output.php"
+ },
+ {
+ "match": "(?i)\\bpassword_(hash|needs_rehash|verify|get_info)\\b",
+ "name": "support.function.password.php"
+ },
+ {
+ "match": "(?i)\\bpcntl_(s(ig(nal(_dispatch)?|timedwait|procmask|waitinfo)|etpriority)|exec|fork|w(stopsig|termsig|if(s(topped|ignaled)|exited)|exitstatus|ait(pid)?)|alarm|getpriority)\\b",
+ "name": "support.function.pcntl.php"
+ },
+ {
+ "match": "(?i)\\bpg_(se(nd_(prepare|execute|query(_params)?)|t_(client_encoding|error_verbosity)|lect)|host|num_(fields|rows)|c(o(n(nect(ion_(status|reset|busy))?|vert)|py_(to|from))|l(ient_encoding|ose)|ancel_query)|t(ty|ra(nsaction_status|ce))|insert|options|d(elete|bname)|u(n(trace|escape_bytea)|pdate)|p(connect|ing|ort|ut_line|arameter_status|repare)|e(scape_(string|identifier|literal|bytea)|nd_copy|xecute)|version|query(_params)?|f(ield_(size|n(um|ame)|t(ype(_oid)?|able)|is_null|prtlen)|etch_(object|a(ssoc|ll(_columns)?|rray)|r(ow|esult))|ree_result)|l(o_(seek|c(lose|reate)|tell|import|open|unlink|export|write|read(_all)?)|ast_(notice|oid|error))|affected_rows|result_(s(tatus|eek)|error(_field)?)|get_(notify|pid|result)|meta_data)\\b",
+ "name": "support.function.pgsql.php"
+ },
+ {
+ "match": "(?i)\\b(virtual|apache_(setenv|note|child_terminate|lookup_uri|re(s(ponse_headers|et_timeout)|quest_headers)|get(_(version|modules)|env))|getallheaders)\\b",
+ "name": "support.function.php_apache.php"
+ },
+ {
+ "match": "(?i)\\bdom_import_simplexml\\b",
+ "name": "support.function.php_dom.php"
+ },
+ {
+ "match": "(?i)\\bftp_(s(sl_connect|ystype|i(te|ze)|et_option)|n(list|b_(continue|put|f(put|get)|get))|c(h(dir|mod)|onnect|dup|lose)|delete|p(ut|wd|asv)|exec|quit|f(put|get)|login|alloc|r(ename|aw(list)?|mdir)|get(_option)?|m(dtm|kdir))\\b",
+ "name": "support.function.php_ftp.php"
+ },
+ {
+ "match": "(?i)\\bimap_(s(can(mailbox)?|tatus|ort|ubscribe|e(t(_quota|flag_full|acl)|arch)|avebody)|header(s|info)?|num_(recent|msg)|c(heck|l(ose|earflag_full)|reate(mailbox)?)|t(hread|imeout)|open|delete(mailbox)?|8bit|u(n(subscribe|delete)|tf(7_(decode|encode)|8)|id)|ping|e(rrors|xpunge)|qprint|fetch(structure|header|text|_overview|mime|body)|l(sub|ist(s(can|ubscribed)|mailbox)?|ast_error)|a(ppend|lerts)|r(e(name(mailbox)?|open)|fc822_(parse_(headers|adrlist)|write_address))|g(c|et(subscribed|_quota(root)?|acl|mailboxes))|m(sgno|ime_header_decode|ail(_(co(py|mpose)|move)|boxmsginfo)?)|b(inary|ody(struct)?|ase64))\\b",
+ "name": "support.function.php_imap.php"
+ },
+ {
+ "match": "(?i)\\bmssql_(select_db|n(um_(fields|rows)|ext_result)|c(onnect|lose)|init|data_seek|pconnect|execute|query|f(ield_(seek|name|type|length)|etch_(object|field|a(ssoc|rray)|row|batch)|ree_(statement|result))|r(ows_affected|esult)|g(uid_string|et_last_message)|min_(error_severity|message_severity)|bind)\\b",
+ "name": "support.function.php_mssql.php"
+ },
+ {
+ "match": "(?i)\\bodbc_(s(tatistics|pecialcolumns|etoption)|n(um_(fields|rows)|ext_result)|c(o(nnect|lumn(s|privileges)|mmit)|ursor|lose(_all)?)|table(s|privileges)|d(o|ata_source)|p(connect|r(imarykeys|ocedure(s|columns)|epare))|e(rror(msg)?|xec(ute)?)|f(ield_(scale|n(um|ame)|type|precision|len)|oreignkeys|etch_(into|object|array|row)|ree_result)|longreadlen|autocommit|r(ollback|esult(_all)?)|gettypeinfo|binmode)\\b",
+ "name": "support.function.php_odbc.php"
+ },
+ {
+ "match": "(?i)\\bpreg_(split|quote|filter|last_error|replace(_callback)?|grep|match(_all)?)\\b",
+ "name": "support.function.php_pcre.php"
+ },
+ {
+ "match": "(?i)\\b(spl_(classes|object_hash|autoload(_(call|unregister|extensions|functions|register))?)|class_(implements|uses|parents)|iterator_(count|to_array|apply))\\b",
+ "name": "support.function.php_spl.php"
+ },
+ {
+ "match": "(?i)\\bzip_(close|open|entry_(name|c(ompress(ionmethod|edsize)|lose)|open|filesize|read)|read)\\b",
+ "name": "support.function.php_zip.php"
+ },
+ {
+ "match": "(?i)\\bposix_(s(trerror|et(sid|uid|pgid|e(uid|gid)|gid))|ctermid|t(tyname|imes)|i(satty|nitgroups)|uname|errno|kill|access|get(sid|cwd|uid|_last_error|p(id|pid|w(nam|uid)|g(id|rp))|e(uid|gid)|login|rlimit|g(id|r(nam|oups|gid)))|mk(nod|fifo))\\b",
+ "name": "support.function.posix.php"
+ },
+ {
+ "match": "(?i)\\bset(threadtitle|proctitle)\\b",
+ "name": "support.function.proctitle.php"
+ },
+ {
+ "match": "(?i)\\bpspell_(s(tore_replacement|uggest|ave_wordlist)|new(_(config|personal))?|c(heck|onfig_(save_repl|create|ignore|d(ict_dir|ata_dir)|personal|r(untogether|epl)|mode)|lear_session)|add_to_(session|personal))\\b",
+ "name": "support.function.pspell.php"
+ },
+ {
+ "match": "(?i)\\breadline(_(c(ompletion_function|lear_history|allback_(handler_(install|remove)|read_char))|info|on_new_line|write_history|list_history|add_history|re(display|ad_history)))?\\b",
+ "name": "support.function.readline.php"
+ },
+ {
+ "match": "(?i)\\brecode(_(string|file))?\\b",
+ "name": "support.function.recode.php"
+ },
+ {
+ "match": "(?i)\\brrd_(create|tune|info|update|error|version|f(irst|etch)|last(update)?|restore|graph|xport)\\b",
+ "name": "support.function.rrd.php"
+ },
+ {
+ "match": "(?i)\\b(s(hm_(has_var|detach|put_var|attach|remove(_var)?|get_var)|em_(acquire|re(lease|move)|get))|ftok|msg_(s(tat_queue|e(nd|t_queue))|queue_exists|re(ceive|move_queue)|get_queue))\\b",
+ "name": "support.function.sem.php"
+ },
+ {
+ "match": "(?i)\\bsession_(s(ta(tus|rt)|et_(save_handler|cookie_params)|ave_path)|name|c(ommit|ache_(expire|limiter))|i(s_registered|d)|de(stroy|code)|un(set|register)|encode|write_close|reg(ister(_shutdown)?|enerate_id)|get_cookie_params|module_name)\\b",
+ "name": "support.function.session.php"
+ },
+ {
+ "match": "(?i)\\bshmop_(size|close|open|delete|write|read)\\b",
+ "name": "support.function.shmop.php"
+ },
+ {
+ "match": "(?i)\\bsimplexml_(import_dom|load_(string|file))\\b",
+ "name": "support.function.simplexml.php"
+ },
+ {
+ "match": "(?i)\\bsnmp(set|2_(set|walk|real_walk|get(next)?)|_(set_(oid_(numeric_print|output_format)|enum_print|valueretrieval|quick_print)|read_mib|get_(valueretrieval|quick_print))|3_(set|walk|real_walk|get(next)?)|walk(oid)?|realwalk|get(next)?)\\b",
+ "name": "support.function.snmp.php"
+ },
+ {
+ "match": "(?i)\\b(is_soap_fault|use_soap_error_handler)\\b",
+ "name": "support.function.soap.php"
+ },
+ {
+ "match": "(?i)\\bsocket_(s(hutdown|trerror|e(nd(to)?|t_(nonblock|option|block)|lect))|c(onnect|l(ose|ear_error)|reate(_(pair|listen))?)|import_stream|write|l(isten|ast_error)|accept|re(cv(from)?|ad)|get(sockname|_option|peername)|bind)\\b",
+ "name": "support.function.sockets.php"
+ },
+ {
+ "match": "(?i)\\bsqlite_(s(ingle_query|eek)|has_(prev|more)|n(um_(fields|rows)|ext)|c(hanges|olumn|urrent|lose|reate_(function|aggregate))|open|u(nbuffered_query|df_(decode_binary|encode_binary))|p(open|rev)|e(scape_string|rror_string|xec)|valid|key|query|f(ield_name|etch_(s(tring|ingle)|column_types|object|a(ll|rray))|actory)|l(ib(encoding|version)|ast_(insert_rowid|error))|array_query|rewind|busy_timeout)\\b",
+ "name": "support.function.sqlite.php"
+ },
+ {
+ "match": "(?i)\\bsqlsrv_(se(nd_stream_data|rver_info)|has_rows|n(um_(fields|rows)|ext_result)|c(o(n(nect|figure)|mmit)|l(ient_info|ose)|ancel)|prepare|e(rrors|xecute)|query|f(ield_metadata|etch(_(object|array))?|ree_stmt)|ro(ws_affected|llback)|get_(config|field)|begin_transaction)\\b",
+ "name": "support.function.sqlsrv.php"
+ },
+ {
+ "match": "(?i)\\bstats_(s(ta(ndard_deviation|t_(noncentral_t|correlation|in(nerproduct|dependent_t)|p(owersum|ercentile|aired_t)|gennch|binomial_coef))|kew)|harmonic_mean|c(ovariance|df_(n(oncentral_(chisquare|f)|egative_binomial)|c(hisquare|auchy)|t|uniform|poisson|exponential|f|weibull|l(ogistic|aplace)|gamma|b(inomial|eta)))|den(s_(n(ormal|egative_binomial)|c(hisquare|auchy)|t|pmf_(hypergeometric|poisson|binomial)|exponential|f|weibull|l(ogistic|aplace)|gamma|beta)|_uniform)|variance|kurtosis|absolute_deviation|rand_(setall|phrase_to_seeds|ranf|ge(n_(no(ncen(tral_(t|f)|ral_chisquare)|rmal)|chisquare|t|i(nt|uniform|poisson|binomial(_negative)?)|exponential|f(uniform)?|gamma|beta)|t_seeds)))\\b",
+ "name": "support.function.stats.php"
+ },
+ {
+ "match": "(?i)\\bs(tream_(s(ocket_(s(hutdown|e(ndto|rver))|client|pair|enable_crypto|accept|recvfrom|get_name)|upports_lock|e(t_(chunk_size|timeout|write_buffer|read_buffer|blocking)|lect))|notification_callback|co(ntext_(set_(option|default|params)|create|get_(options|default|params))|py_to_stream)|is_local|encoding|filter_(prepend|append|re(gister|move))|wrapper_(unregister|re(store|gister))|re(solve_include_path|gister_wrapper)|get_(contents|transports|filters|wrappers|line|meta_data)|bucket_(new|prepend|append|make_writeable))|et_socket_blocking)\\b",
+ "name": "support.function.streamsfuncs.php"
+ },
+ {
+ "match": "(?i)\\b(s(scanf|ha1(_file)?|tr(s(tr|pn)|n(c(asecmp|mp)|atc(asecmp|mp))|c(spn|hr|oll|asecmp|mp)|t(o(upper|k|lower)|r)|i(str|p(slashes|cslashes|os|_tags))|_(s(huffle|plit)|ireplace|pad|word_count|r(ot13|ep(eat|lace))|getcsv)|p(os|brk)|len|r(chr|ipos|pos|ev))|imilar_text|oundex|ubstr(_(co(unt|mpare)|replace))?|printf|etlocale)|h(tml(specialchars(_decode)?|_entity_decode|entities)|e(x2bin|brev(c)?))|n(umber_format|l(2br|_langinfo))|c(h(op|unk_split|r)|o(nvert_(cyr_string|uu(decode|encode))|unt_chars)|r(ypt|c32))|trim|implode|ord|uc(first|words)|join|p(arse_str|rint(f)?)|e(cho|xplode)|v(sprintf|printf|fprintf)|quote(d_printable_(decode|encode)|meta)|fprintf|wordwrap|l(cfirst|trim|ocaleconv|evenshtein)|add(slashes|cslashes)|rtrim|get_html_translation_table|m(oney_format|d5(_file)?|etaphone)|bin2hex)\\b",
+ "name": "support.function.string.php"
+ },
+ {
+ "match": "(?i)\\bsybase_(se(t_message_handler|lect_db)|num_(fields|rows)|c(onnect|lose)|d(eadlock_retry_count|ata_seek)|unbuffered_query|pconnect|query|f(ield_seek|etch_(object|field|a(ssoc|rray)|row)|ree_result)|affected_rows|result|get_last_message|min_(server_severity|client_severity|error_severity|message_severity))\\b",
+ "name": "support.function.sybase.php"
+ },
+ {
+ "match": "(?i)\\b(taint|is_tainted|untaint)\\b",
+ "name": "support.function.taint.php"
+ },
+ {
+ "match": "(?i)\\b(tidy_(s(et(opt|_encoding)|ave_config)|c(onfig_count|lean_repair)|is_x(html|ml)|diagnose|parse_(string|file)|error_count|warning_count|load_config|access_count|re(set_config|pair_(string|file))|get(opt|_(status|h(tml(_ver)?|ead)|config|o(utput|pt_doc)|r(oot|elease)|body)))|ob_tidyhandler)\\b",
+ "name": "support.function.tidy.php"
+ },
+ {
+ "match": "(?i)\\btoken_(name|get_all)\\b",
+ "name": "support.function.tokenizer.php"
+ },
+ {
+ "match": "(?i)\\btrader_(s(t(och(f|rsi)?|ddev)|in(h)?|u(m|b)|et_(compat|unstable_period)|qrt|ar(ext)?|ma)|ht_(sine|trend(line|mode)|dcp(hase|eriod)|phasor)|natr|c(ci|o(s(h)?|rrel)|dl(s(ho(otingstar|rtline)|t(icksandwich|alledpattern)|pinningtop|eparatinglines)|h(i(kkake(mod)?|ghwave)|omingpigeon|a(ngingman|rami(cross)?|mmer))|c(o(ncealbabyswall|unterattack)|losingmarubozu)|t(hrusting|a(sukigap|kuri)|ristar)|i(n(neck|vertedhammer)|dentical3crows)|2crows|onneck|d(oji(star)?|arkcloudcover|ragonflydoji)|u(nique3river|psidegap2crows)|3(starsinsouth|inside|outside|whitesoldiers|linestrike|blackcrows)|piercing|e(ngulfing|vening(star|dojistar))|kicking(bylength)?|l(ongl(ine|eggeddoji)|adderbottom)|a(dvanceblock|bandonedbaby)|ri(sefall3methods|ckshawman)|g(apsidesidewhite|ravestonedoji)|xsidegap3methods|m(orning(star|dojistar)|a(t(hold|chinglow)|rubozu))|b(elthold|reakaway))|eil|mo)|t(sf|ypprice|3|ema|an(h)?|r(i(x|ma)|ange))|obv|d(iv|ema|x)|ultosc|p(po|lus_d(i|m))|e(rrno|xp|ma)|var|kama|floor|w(clprice|illr|ma)|l(n|inearreg(_(slope|intercept|angle))?|og10)|a(sin|cos|t(an|r)|d(osc|d|x(r)?)?|po|vgprice|roon(osc)?)|r(si|oc(p|r(100)?)?)|get_(compat|unstable_period)|m(i(n(index|us_d(i|m)|max(index)?)?|dp(oint|rice))|om|ult|edprice|fi|a(cd(ext|fix)?|vp|x(index)?|ma)?)|b(op|eta|bands))\\b",
+ "name": "support.function.trader.php"
+ },
+ {
+ "match": "(?i)\\b(http_build_query|url(decode|encode)|parse_url|rawurl(decode|encode)|get_(headers|meta_tags)|base64_(decode|encode))\\b",
+ "name": "support.function.url.php"
+ },
+ {
+ "match": "(?i)\\b(s(trval|e(ttype|rialize))|i(s(set|_(s(calar|tring)|nu(ll|meric)|callable|int(eger)?|object|double|float|long|array|re(source|al)|bool|arraykey|nonnull|dict|vec|keyset))|ntval|mport_request_variables)|d(oubleval|ebug_zval_dump)|unse(t|rialize)|print_r|empty|var_(dump|export)|floatval|get(type|_(defined_vars|resource_type))|boolval)\\b",
+ "name": "support.function.var.php"
+ },
+ {
+ "match": "(?i)\\bwddx_(serialize_va(lue|rs)|deserialize|packet_(start|end)|add_vars)\\b",
+ "name": "support.function.wddx.php"
+ },
+ {
+ "match": "(?i)\\bxhprof_(sample_(disable|enable)|disable|enable)\\b",
+ "name": "support.function.xhprof.php"
+ },
+ {
+ "match": "(?i)\\b(utf8_(decode|encode)|xml_(set_(start_namespace_decl_handler|notation_decl_handler|character_data_handler|object|default_handler|unparsed_entity_decl_handler|processing_instruction_handler|e(nd_namespace_decl_handler|lement_handler|xternal_entity_ref_handler))|parse(_into_struct|r_(set_option|create(_ns)?|free|get_option))?|error_string|get_(current_(column_number|line_number|byte_index)|error_code)))\\b",
+ "name": "support.function.xml.php"
+ },
+ {
+ "match": "(?i)\\bxmlrpc_(se(t_type|rver_(c(all_method|reate)|destroy|add_introspection_data|register_(introspection_callback|method)))|is_fault|decode(_request)?|parse_method_descriptions|encode(_request)?|get_type)\\b",
+ "name": "support.function.xmlrpc.php"
+ },
+ {
+ "match": "(?i)\\bxmlwriter_(s(tart_(c(omment|data)|d(td(_(e(ntity|lement)|attlist))?|ocument)|pi|element(_ns)?|attribute(_ns)?)|et_indent(_string)?)|text|o(utput_memory|pen_(uri|memory))|end_(c(omment|data)|d(td(_(e(ntity|lement)|attlist))?|ocument)|pi|element|attribute)|f(ull_end_element|lush)|write_(c(omment|data)|dtd(_(e(ntity|lement)|attlist))?|pi|element(_ns)?|attribute(_ns)?|raw))\\b",
+ "name": "support.function.xmlwriter.php"
+ },
+ {
+ "match": "(?i)\\bxslt_(set(opt|_(s(cheme_handler(s)?|ax_handler(s)?)|object|e(ncoding|rror_handler)|log|base))|create|process|err(no|or)|free|getopt|backend_(name|info|version))\\b",
+ "name": "support.function.xslt.php"
+ },
+ {
+ "match": "(?i)\\b(zlib_(decode|encode|get_coding_type)|readgzfile|gz(seek|c(ompress|lose)|tell|inflate|open|de(code|flate)|uncompress|p(uts|assthru)|e(ncode|of)|file|write|re(wind|ad)|get(s(s)?|c)))\\b",
+ "name": "support.function.zlib.php"
+ },
+ {
+ "match": "(?i)\\bis_int(eger)?\\b",
+ "name": "support.function.alias.php"
+ }
+ ]
+ },
+ "user-function-call": {
+ "begin": "(?i)(?=[a-z_0-9\\\\]*[a-z_][a-z0-9_]*\\s*\\()",
+ "end": "(?i)[a-z_][a-z_0-9]*(?=\\s*\\()",
+ "endCaptures": {
+ "0": {
+ "name": "entity.name.function.php"
+ }
+ },
+ "name": "meta.function-call.php",
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ },
+ "var_basic": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(?x)\n(\\$+)\n[a-zA-Z_\\x{7f}-\\x{ff}]\n[a-zA-Z0-9_\\x{7f}-\\x{ff}]*?\n\\b",
+ "name": "variable.other.php"
+ }
+ ]
+ },
+ "var_global": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(\\$)((_(COOKIE|FILES|GET|POST|REQUEST))|arg(v|c))\\b",
+ "name": "variable.other.global.php"
+ },
+ "var_global_safer": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(\\$)((GLOBALS|_(ENV|SERVER|SESSION)))",
+ "name": "variable.other.global.safer.php"
+ },
+ "variable-name": {
+ "patterns": [
+ {
+ "include": "#var_global"
+ },
+ {
+ "include": "#var_global_safer"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "variable.other.php"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "4": {
+ "name": "keyword.operator.class.php"
+ },
+ "5": {
+ "name": "variable.other.property.php"
+ },
+ "6": {
+ "name": "punctuation.section.array.begin.php"
+ },
+ "7": {
+ "name": "constant.numeric.index.php"
+ },
+ "8": {
+ "name": "variable.other.index.php"
+ },
+ "9": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "10": {
+ "name": "string.unquoted.index.php"
+ },
+ "11": {
+ "name": "punctuation.section.array.end.php"
+ }
+ },
+ "comment": "Simple syntax: $foo, $foo[0], $foo[$bar], $foo->bar",
+ "match": "(?x)\n((\\$)(?<name>[a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*))\n(?:\n (->)(\\g<name>)\n |\n (\\[)\n (?:(\\d+)|((\\$)\\g<name>)|(\\w+))\n (\\])\n)?"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "variable.other.php"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "4": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "comment": "Simple syntax with braces: \"foo${bar}baz\"",
+ "match": "(?x)\n((\\$\\{)(?<name>[a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)(\\}))"
+ }
+ ]
+ },
+ "variables": {
+ "patterns": [
+ {
+ "include": "#var_global"
+ },
+ {
+ "include": "#var_global_safer"
+ },
+ {
+ "include": "#var_basic"
+ },
+ {
+ "begin": "(\\$\\{)(?=.*?\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ }
+ ]
+ },
+ "xhp": {
+ "comment": "Avoid < operator expressions as best we can using Zertosh's regex",
+ "patterns": [
+ {
+ "contentName": "source.xhp",
+ "begin": "(?<=\\(|\\{|\\[|,|&&|\\|\\||\\?|:|=|=>|\\Wreturn|^return|^)\\s*(?=<[_\\p{L}])",
+ "end": "(?=.)",
+ "applyEndPatternLast": 1,
+ "patterns": [
+ {
+ "include": "#xhp-tag-element-name"
+ }
+ ]
+ }
+ ]
+ },
+ "xhp-tag-element-name": {
+ "patterns": [
+ {
+ "comment": "Tags that end > are trapped in #xhp-tag-termination",
+ "begin": "\\s*(<)([_\\p{L}](?:[:\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}-])*+)(?=[/>\\s])(?<![\\:])",
+ "end": "\\s*(?<=</)(\\2)(>)|(/>)|((?<=</)[\\S ]*?)>",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.xhp"
+ },
+ "2": {
+ "name": "entity.name.tag.open.xhp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.tag.close.xhp"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.xhp"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.xhp"
+ },
+ "4": {
+ "name": "invalid.illegal.termination.xhp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#xhp-tag-termination"
+ },
+ {
+ "include": "#xhp-html-comments"
+ },
+ {
+ "include": "#xhp-tag-attributes"
+ }
+ ]
+ }
+ ]
+ },
+ "xhp-tag-termination": {
+ "patterns": [
+ {
+ "comment": "uses non consuming search for </ in </tag>",
+ "begin": "(?<!--)(>)",
+ "end": "(</)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.xhp"
+ },
+ "1": {
+ "name": "XHPStartTagEnd"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.xhp"
+ },
+ "1": {
+ "name": "XHPEndTagStart"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#xhp-evaluated-code"
+ },
+ {
+ "include": "#xhp-entities"
+ },
+ {
+ "include": "#xhp-html-comments"
+ },
+ {
+ "include": "#xhp-tag-element-name"
+ }
+ ]
+ }
+ ]
+ },
+ "xhp-tag-attributes": {
+ "patterns": [
+ {
+ "include": "#xhp-attribute-name"
+ },
+ {
+ "include": "#xhp-assignment"
+ },
+ {
+ "include": "#xhp-string-double-quoted"
+ },
+ {
+ "include": "#xhp-string-single-quoted"
+ },
+ {
+ "include": "#xhp-evaluated-code"
+ },
+ {
+ "include": "#xhp-tag-element-name"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "xhp-attribute-name": {
+ "patterns": [
+ {
+ "comment": "look for attribute name",
+ "match": "(?<!\\S)([_\\p{L}](?:[\\p{L}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Nl}\\p{Pc}-](?<!\\.\\.))*+)(?<!\\.)(?=//|/\\*|=|\\s|>|/>)",
+ "captures": {
+ "0": {
+ "name": "entity.other.attribute-name.xhp"
+ }
+ }
+ }
+ ]
+ },
+ "xhp-assignment": {
+ "patterns": [
+ {
+ "comment": "look for attribute assignment",
+ "name": "keyword.operator.assignment.xhp",
+ "match": "=(?=\\s*(?:'|\"|{|/\\*|<|//|\\n))"
+ }
+ ]
+ },
+ "xhp-string-double-quoted": {
+ "name": "string.quoted.double.php",
+ "begin": "\"",
+ "end": "\"(?<!\\\\\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.xhp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.xhp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#xhp-entities"
+ }
+ ]
+ },
+ "xhp-string-single-quoted": {
+ "name": "string.quoted.single.php",
+ "begin": "'",
+ "end": "'(?<!\\\\')",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.xhp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.xhp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#xhp-entities"
+ }
+ ]
+ },
+ "xhp-evaluated-code": {
+ "name": "meta.embedded.expression.php",
+ "begin": "{",
+ "end": "}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.xhp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.xhp"
+ }
+ },
+ "contentName": "source.php.xhp",
+ "patterns": [
+ {
+ "include": "#language"
+ }
+ ]
+ },
+ "xhp-entities": {
+ "patterns": [
+ {
+ "comment": "Embeded HTML entities &blah",
+ "match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
+ "captures": {
+ "0": {
+ "name": "constant.character.entity.xhp"
+ },
+ "1": {
+ "name": "punctuation.definition.entity.xhp"
+ },
+ "2": {
+ "name": "entity.name.tag.html.xhp"
+ },
+ "3": {
+ "name": "punctuation.definition.entity.xhp"
+ }
+ }
+ },
+ {
+ "comment": "Entity with & and invalid name",
+ "match": "&\\S*;",
+ "name": "invalid.illegal.bad-ampersand.xhp"
+ }
+ ]
+ },
+ "xhp-html-comments": {
+ "begin": "<!--",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.html"
+ }
+ },
+ "end": "--\\s*>",
+ "name": "comment.block.html",
+ "patterns": [
+ {
+ "match": "--(?!-*\\s*>)",
+ "name": "invalid.illegal.bad-comments-or-CDATA.html"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/haml.tmLanguage.json b/node_modules/shiki/languages/haml.tmLanguage.json
new file mode 100644
index 0000000..c1220ee
--- /dev/null
+++ b/node_modules/shiki/languages/haml.tmLanguage.json
@@ -0,0 +1,596 @@
+{
+ "fileTypes": ["haml", "html.haml"],
+ "foldingStartMarker": "^\\s*([-%#\\:\\.\\w\\=].*)\\s$",
+ "foldingStopMarker": "^\\s*$",
+ "keyEquivalent": "^~H",
+ "name": "haml",
+ "patterns": [
+ {
+ "begin": "^(\\s*)==",
+ "contentName": "string.quoted.double.ruby",
+ "end": "$\\n*",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*):ruby",
+ "end": "^(?!\\1\\s+|$\\n*)",
+ "name": "source.ruby.embedded.filter.haml",
+ "patterns": [
+ {
+ "include": "source.ruby"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.prolog.haml"
+ }
+ },
+ "match": "^(!!!)($|\\s.*)",
+ "name": "meta.prolog.haml"
+ },
+ {
+ "begin": "^(\\s*):javascript",
+ "end": "^(?!\\1\\s+|$\\n*)",
+ "name": "js.haml",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*)%script",
+ "end": "^(?!\\1\\s+|$\\n*)",
+ "name": "js.inline.haml",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*):ruby$",
+ "end": "^(?!\\1\\s+|$\\n*)",
+ "name": "source.ruby.embedded.filter.haml",
+ "patterns": [
+ {
+ "include": "source.ruby"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.comment.haml"
+ }
+ },
+ "match": "^(\\s*)(\\/\\[[^\\]].*?$\\n?)",
+ "name": "comment.line.slash.haml"
+ },
+ {
+ "begin": "^(\\s*)(\\-\\#|\\/|\\-\\s*\\/\\*+)",
+ "beginCaptures": {
+ "2": {
+ "name": "punctuation.section.comment.haml"
+ }
+ },
+ "end": "^(?!\\1\\s+|\\n)",
+ "name": "comment.block.haml",
+ "patterns": [
+ {
+ "include": "text.haml"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(?:((%)([-\\w:]+))|(?=\\.|#))",
+ "end": "$|(?!\\.|#|\\{|\\(|\\[|&amp;|=|-|~|!=|&=|/)",
+ "captures": {
+ "1": {
+ "name": "meta.tag.haml"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.haml"
+ },
+ "3": {
+ "name": "entity.name.tag.haml"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "==",
+ "contentName": "string.quoted.double.ruby",
+ "end": "$\\n?",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.class"
+ }
+ },
+ "match": "(\\.[\\w\\-\\:]+)",
+ "name": "meta.selector.css"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.id"
+ }
+ },
+ "match": "(#[\\w-]+)",
+ "name": "meta.selector.css"
+ },
+ {
+ "begin": "(?<!\\#)\\{(?=.*(,|(do)|\\{|\\}|\\||(\\#.*)|\\R)\\s*)",
+ "end": "\\s*\\}(?!\\s*\\,)(?!\\s*\\|)(?!\\#\\{.*\\})",
+ "name": "meta.section.attributes.haml",
+ "patterns": [
+ {
+ "include": "source.ruby"
+ },
+ {
+ "include": "#continuation"
+ },
+ {
+ "include": "#rubyline"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "name": "meta.section.attributes.plain.haml",
+ "patterns": [
+ {
+ "match": "([\\w-]+)",
+ "name": "constant.other.symbol.ruby"
+ },
+ {
+ "match": "\\=",
+ "name": "punctuation"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "begin": "\"",
+ "end": "\"",
+ "name": "string.quoted.double.ruby",
+ "patterns": [
+ {
+ "match": "\\\\(x\\h{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "include": "#interpolated_ruby"
+ }
+ ]
+ },
+ {
+ "include": "#interpolated_ruby"
+ }
+ ]
+ },
+ {
+ "begin": "\\[(?=.+(,|\\[|\\]|\\||(\\#.*))\\s*)",
+ "end": "\\s*\\](?!.*(?!\\#\\[)\\])",
+ "name": "meta.section.object.haml",
+ "patterns": [
+ {
+ "include": "source.ruby"
+ },
+ {
+ "include": "#continuation"
+ },
+ {
+ "include": "#rubyline"
+ }
+ ]
+ },
+ {
+ "include": "#interpolated_ruby_line"
+ },
+ {
+ "include": "#rubyline"
+ },
+ {
+ "match": "/",
+ "name": "punctuation.terminator.tag.haml"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*):(ruby|opal)$",
+ "end": "^(?!\\1\\s+|$\\n*)",
+ "name": "source.ruby.embedded.filter.haml",
+ "patterns": [
+ {
+ "include": "source.ruby"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*):ruby$",
+ "end": "^(?!\\1\\s+|$\\n*)",
+ "name": "source.ruby.embedded.filter.haml",
+ "patterns": [
+ {
+ "include": "source.ruby"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*):(style|sass)$",
+ "end": "^(?=\\1\\s+|$\\n*)",
+ "name": "source.sass.embedded.filter.haml",
+ "patterns": [
+ {
+ "include": "source.sass"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*):coffee(script)?",
+ "end": "^(?!\\1\\s+|$\\n*)",
+ "name": "source.coffee.embedded.filter.haml",
+ "patterns": [
+ {
+ "include": "source.coffee"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*):plain$",
+ "end": "^(?=\\1\\s+|$\\n*)",
+ "name": "text.plain.embedded.filter.haml",
+ "patterns": [
+ {
+ "include": "text.plain"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*)(:ruby)",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control.filter.haml"
+ }
+ },
+ "end": "(?m:(?<=\\n)(?!\\1\\s+|$\\n*))",
+ "name": "source.ruby.embedded.filter.haml",
+ "patterns": [
+ {
+ "include": "source.ruby"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*)(:sass)",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control.filter.haml"
+ }
+ },
+ "end": "^(?!\\1\\s+|$\\n*)",
+ "name": "source.embedded.filter.sass",
+ "patterns": [
+ {
+ "include": "source.sass"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*):(styles|sass)$",
+ "end": "^(?=\\1\\s+|$\\n*)",
+ "name": "source.sass.embedded.filter.haml",
+ "patterns": [
+ {
+ "include": "source.sass"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*):plain$",
+ "end": "^(?=\\1\\s+|$\\n*)",
+ "name": "text.plain.embedded.filter.haml",
+ "patterns": [
+ {
+ "include": "text.plain"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "meta.escape.haml"
+ }
+ },
+ "match": "^\\s*(\\.)"
+ },
+ {
+ "begin": "^\\s*(?==|-|~|!=|&=)",
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby_line"
+ },
+ {
+ "include": "#rubyline"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*)(:php)",
+ "end": "^(?!\\1\\s+|$\\n*)",
+ "name": "meta.embedded.php",
+ "captures": {
+ "2": {
+ "name": "entity.name.tag.haml"
+ }
+ },
+ "patterns": [
+ {
+ "include": "text.html.php#language"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*)(:markdown)",
+ "end": "^(?!\\1\\s+|$\\n*)",
+ "name": "meta.embedded.markdown",
+ "captures": {
+ "2": {
+ "name": "entity.name.tag.haml"
+ }
+ },
+ "patterns": [
+ {
+ "include": "text.html.markdown"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*)(:(css|styles?))$",
+ "end": "^(?!\\1\\s+|$\\n*)",
+ "name": "meta.embedded.css",
+ "captures": {
+ "2": {
+ "name": "entity.name.tag.haml"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*)(:sass)$",
+ "end": "^(?!\\1\\s+|$\\n*)",
+ "name": "meta.embedded.sass",
+ "captures": {
+ "2": {
+ "name": "entity.name.tag.haml"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.sass"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*)(:scss)$",
+ "end": "^(?!\\1\\s+|$\\n*)",
+ "name": "meta.embedded.scss",
+ "captures": {
+ "2": {
+ "name": "entity.name.tag.haml"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.scss"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "continuation": {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.continuation.haml"
+ }
+ },
+ "match": "(\\|)\\s*\\n"
+ },
+ "interpolated_ruby": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "punctuation.section.embedded.ruby"
+ },
+ "1": {
+ "name": "source.ruby.embedded.source.empty"
+ }
+ },
+ "match": "#\\{(\\})",
+ "name": "source.ruby.embedded.source"
+ },
+ {
+ "begin": "#\\{",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.embedded.ruby"
+ }
+ },
+ "end": "(\\})",
+ "name": "source.ruby.embedded.source",
+ "patterns": [
+ {
+ "include": "#nest_curly_and_self"
+ },
+ {
+ "include": "source.ruby"
+ }
+ ]
+ },
+ {
+ "include": "#variables"
+ }
+ ]
+ },
+ "interpolated_ruby_line": {
+ "begin": "!?==",
+ "contentName": "string.source.ruby.embedded.haml",
+ "end": "$",
+ "name": "meta.line.ruby.interpolated.haml",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.ruby#escaped_char"
+ }
+ ]
+ },
+ "nest_curly_and_self": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.ruby"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#nest_curly_and_self"
+ },
+ {
+ "include": "source.ruby"
+ }
+ ]
+ }
+ ]
+ },
+ "variables": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.ruby"
+ }
+ },
+ "match": "(#@)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.instance.ruby"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.ruby"
+ }
+ },
+ "match": "(#@@)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.class.ruby"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.ruby"
+ }
+ },
+ "match": "(#\\$)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.global.ruby"
+ }
+ ]
+ },
+ "rubyline": {
+ "begin": "(&amp|!)?(=|-|~)",
+ "contentName": "source.ruby.embedded.haml",
+ "end": "((do|\\{)( \\|[.*]+\\|)?)$|$|^(?!.*\\|\\s*)$\\n?",
+ "endCaptures": {
+ "1": {
+ "name": "source.ruby.embedded.html"
+ },
+ "2": {
+ "name": "keyword.control.ruby.start-block"
+ }
+ },
+ "name": "meta.line.ruby.haml",
+ "patterns": [
+ {
+ "match": "\\s+((elseif|foreach|switch|declare|default|use))(?=\\s|\\()",
+ "captures": {
+ "1": {
+ "name": "keyword.control.php"
+ }
+ }
+ },
+ {
+ "match": "\\s+(require_once|include_once)(?=\\s|\\()",
+ "captures": {
+ "1": {
+ "name": "keyword.control.import.include.php"
+ }
+ }
+ },
+ {
+ "match": "\\s+(catch|try|throw|exception|finally|die)(?=\\s|\\(|\\n*)",
+ "name": "keyword.control.exception.php"
+ },
+ {
+ "match": "\\s+(function\\s*)((?=\\())",
+ "captures": {
+ "1": {
+ "name": "storage.type.function.php"
+ }
+ }
+ },
+ {
+ "match": "\\s+(use\\s*)((?=\\())",
+ "captures": {
+ "1": {
+ "name": "keyword.control.php"
+ }
+ }
+ },
+ {
+ "match": "(\\||,|<|do|\\{)\\s*(\\#.*)?$\\n*",
+ "name": "source.ruby",
+ "patterns": [
+ {
+ "include": "#rubyline"
+ }
+ ]
+ },
+ {
+ "comment": "Hack to let ruby comments work in this context properly",
+ "match": "#.*$",
+ "name": "comment.line.number-sign.ruby"
+ },
+ {
+ "include": "source.ruby"
+ },
+ {
+ "include": "#continuation"
+ }
+ ]
+ }
+ },
+ "scopeName": "text.haml",
+ "uuid": "3D727049-DD05-45DF-92A5-D50EA36FD035"
+}
diff --git a/node_modules/shiki/languages/handlebars.tmLanguage.json b/node_modules/shiki/languages/handlebars.tmLanguage.json
new file mode 100644
index 0000000..6cf744e
--- /dev/null
+++ b/node_modules/shiki/languages/handlebars.tmLanguage.json
@@ -0,0 +1,852 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/daaain/Handlebars/blob/master/grammars/Handlebars.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/daaain/Handlebars/commit/85a153a6f759df4e8da7533e1b3651f007867c51",
+ "name": "handlebars",
+ "scopeName": "text.html.handlebars",
+ "patterns": [
+ {
+ "include": "#yfm"
+ },
+ {
+ "include": "#extends"
+ },
+ {
+ "include": "#block_comments"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#block_helper"
+ },
+ {
+ "include": "#end_block"
+ },
+ {
+ "include": "#else_token"
+ },
+ {
+ "include": "#partial_and_var"
+ },
+ {
+ "include": "#inline_script"
+ },
+ {
+ "include": "#html_tags"
+ },
+ {
+ "include": "text.html.basic"
+ }
+ ],
+ "repository": {
+ "html_tags": {
+ "patterns": [
+ {
+ "begin": "(<)([a-zA-Z0-9:-]+)(?=[^>]*></\\2>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": "(>(<)/)(\\2)(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "meta.scope.between-tag-pair.html"
+ },
+ "3": {
+ "name": "entity.name.tag.html"
+ },
+ "4": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "name": "meta.tag.any.html",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "begin": "(<\\?)(xml)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.xml.html"
+ }
+ },
+ "end": "(\\?>)",
+ "name": "meta.tag.preprocessor.xml.html",
+ "patterns": [
+ {
+ "include": "#tag_generic_attribute"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "begin": "<!--",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.html"
+ }
+ },
+ "end": "--\\s*>",
+ "name": "comment.block.html",
+ "patterns": [
+ {
+ "match": "--",
+ "name": "invalid.illegal.bad-comments-or-CDATA.html"
+ }
+ ]
+ },
+ {
+ "begin": "<!",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "end": ">",
+ "name": "meta.tag.sgml.html",
+ "patterns": [
+ {
+ "begin": "(DOCTYPE|doctype)",
+ "captures": {
+ "1": {
+ "name": "entity.name.tag.doctype.html"
+ }
+ },
+ "end": "(?=>)",
+ "name": "meta.tag.sgml.doctype.html",
+ "patterns": [
+ {
+ "match": "\"[^\">]*\"",
+ "name": "string.quoted.double.doctype.identifiers-and-DTDs.html"
+ }
+ ]
+ },
+ {
+ "begin": "\\[CDATA\\[",
+ "end": "]](?=>)",
+ "name": "constant.other.inline-data.html"
+ },
+ {
+ "match": "(\\s*)(?!--|>)\\S(\\s*)",
+ "name": "invalid.illegal.bad-comments-or-CDATA.html"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^\\s+)?(<)((?i:style))\\b(?![^>]*/>)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.style.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "end": "(</)((?i:style))(>)(?:\\s*\\n)?",
+ "name": "source.css.embedded.html",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "end": "(?=</(?i:style))",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?:^\\s+)?(<)((?i:script))\\b(?![^>]*/>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.script.html"
+ }
+ },
+ "end": "(?<=</(script|SCRIPT))(>)(?:\\s*\\n)?",
+ "endCaptures": {
+ "2": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "name": "source.js.embedded.html",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<!</(?:script|SCRIPT))(>)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.script.html"
+ }
+ },
+ "end": "(</)((?i:script))",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.js"
+ }
+ },
+ "match": "(//).*?((?=</script)|$\\n?)",
+ "name": "comment.line.double-slash.js"
+ },
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.js"
+ }
+ },
+ "end": "\\*/|(?=</script)",
+ "name": "comment.block.js"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(</?)((?i:body|head|html)\\b)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.structure.any.html"
+ }
+ },
+ "end": "(>)",
+ "name": "meta.tag.structure.any.html",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "begin": "(</?)((?i:address|blockquote|dd|div|header|section|footer|aside|nav|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\\b)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.block.any.html"
+ }
+ },
+ "end": "(>)",
+ "name": "meta.tag.block.any.html",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "begin": "(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\\b)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.inline.any.html"
+ }
+ },
+ "end": "((?: ?/)?>)",
+ "name": "meta.tag.inline.any.html",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "begin": "(</?)([a-zA-Z0-9:-]+)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.other.html"
+ }
+ },
+ "end": "(>)",
+ "name": "meta.tag.other.html",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "begin": "(</?)([a-zA-Z0-9{}:-]+)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.tokenised.html"
+ }
+ },
+ "end": "(>)",
+ "name": "meta.tag.tokenised.html",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "include": "#entities"
+ },
+ {
+ "match": "<>",
+ "name": "invalid.illegal.incomplete.html"
+ },
+ {
+ "match": "<",
+ "name": "invalid.illegal.bad-angle-bracket.html"
+ }
+ ]
+ },
+ "entities": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.html"
+ },
+ "3": {
+ "name": "punctuation.definition.entity.html"
+ }
+ },
+ "name": "constant.character.entity.html",
+ "match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)"
+ },
+ {
+ "name": "invalid.illegal.bad-ampersand.html",
+ "match": "&"
+ }
+ ]
+ },
+ "end_block": {
+ "begin": "(\\{\\{)(~?/)([a-zA-Z0-9/_\\.-]+)\\s*",
+ "end": "(~?\\}\\})",
+ "name": "meta.function.block.end.handlebars",
+ "endCaptures": {
+ "1": {
+ "name": "support.constant.handlebars"
+ }
+ },
+ "beginCaptures": {
+ "1": {
+ "name": "support.constant.handlebars"
+ },
+ "2": {
+ "name": "support.constant.handlebars keyword.control"
+ },
+ "3": {
+ "name": "support.constant.handlebars keyword.control"
+ }
+ },
+ "patterns": []
+ },
+ "yfm": {
+ "patterns": [
+ {
+ "patterns": [
+ {
+ "include": "source.yaml"
+ }
+ ],
+ "begin": "(?<!\\s)---\\n$",
+ "end": "^---\\s",
+ "name": "markup.raw.yaml.front-matter"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "patterns": [
+ {
+ "name": "keyword.annotation.handlebars",
+ "match": "@\\w*"
+ },
+ {
+ "include": "#comments"
+ }
+ ],
+ "begin": "\\{\\{!",
+ "end": "\\}\\}",
+ "name": "comment.block.handlebars"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.html"
+ }
+ },
+ "begin": "<!--",
+ "end": "-{2,3}\\s*>",
+ "name": "comment.block.html",
+ "patterns": [
+ {
+ "name": "invalid.illegal.bad-comments-or-CDATA.html",
+ "match": "--"
+ }
+ ]
+ }
+ ]
+ },
+ "block_comments": {
+ "patterns": [
+ {
+ "patterns": [
+ {
+ "name": "keyword.annotation.handlebars",
+ "match": "@\\w*"
+ },
+ {
+ "include": "#comments"
+ }
+ ],
+ "begin": "\\{\\{!--",
+ "end": "--\\}\\}",
+ "name": "comment.block.handlebars"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.html"
+ }
+ },
+ "begin": "<!--",
+ "end": "-{2,3}\\s*>",
+ "name": "comment.block.html",
+ "patterns": [
+ {
+ "name": "invalid.illegal.bad-comments-or-CDATA.html",
+ "match": "--"
+ }
+ ]
+ }
+ ]
+ },
+ "block_helper": {
+ "begin": "(\\{\\{)(~?\\#)([-a-zA-Z0-9_\\./>]+)\\s?(@?[-a-zA-Z0-9_\\./]+)*\\s?(@?[-a-zA-Z0-9_\\./]+)*\\s?(@?[-a-zA-Z0-9_\\./]+)*",
+ "end": "(~?\\}\\})",
+ "name": "meta.function.block.start.handlebars",
+ "endCaptures": {
+ "1": {
+ "name": "support.constant.handlebars"
+ }
+ },
+ "beginCaptures": {
+ "1": {
+ "name": "support.constant.handlebars"
+ },
+ "2": {
+ "name": "support.constant.handlebars keyword.control"
+ },
+ "3": {
+ "name": "support.constant.handlebars keyword.control"
+ },
+ "4": {
+ "name": "variable.parameter.handlebars"
+ },
+ "5": {
+ "name": "support.constant.handlebars"
+ },
+ "6": {
+ "name": "variable.parameter.handlebars"
+ },
+ "7": {
+ "name": "support.constant.handlebars"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#handlebars_attribute"
+ }
+ ]
+ },
+ "string-single-quoted": {
+ "begin": "'",
+ "end": "'",
+ "name": "string.quoted.single.handlebars",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ }
+ },
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#escaped-single-quote"
+ },
+ {
+ "include": "#block_comments"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#block_helper"
+ },
+ {
+ "include": "#else_token"
+ },
+ {
+ "include": "#end_block"
+ },
+ {
+ "include": "#partial_and_var"
+ }
+ ]
+ },
+ "string": {
+ "patterns": [
+ {
+ "include": "#string-single-quoted"
+ },
+ {
+ "include": "#string-double-quoted"
+ }
+ ]
+ },
+ "escaped-single-quote": {
+ "name": "constant.character.escape.js",
+ "match": "\\\\'"
+ },
+ "escaped-double-quote": {
+ "name": "constant.character.escape.js",
+ "match": "\\\\\""
+ },
+ "partial_and_var": {
+ "begin": "(\\{\\{~?\\{*(>|!<)*)\\s*(@?[-a-zA-Z0-9$_\\./]+)*",
+ "end": "(~?\\}\\}\\}*)",
+ "name": "meta.function.inline.other.handlebars",
+ "beginCaptures": {
+ "1": {
+ "name": "support.constant.handlebars"
+ },
+ "3": {
+ "name": "variable.parameter.handlebars"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.constant.handlebars"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#handlebars_attribute"
+ }
+ ]
+ },
+ "handlebars_attribute_name": {
+ "begin": "\\b([-a-zA-Z0-9_\\.]+)\\b=",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.handlebars"
+ }
+ },
+ "end": "(?='|\"|)",
+ "name": "entity.other.attribute-name.handlebars"
+ },
+ "handlebars_attribute_value": {
+ "begin": "([-a-zA-Z0-9_\\./]+)\\b",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.handlebars"
+ }
+ },
+ "end": "('|\"|)",
+ "name": "entity.other.attribute-value.handlebars",
+ "patterns": [
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ "handlebars_attribute": {
+ "patterns": [
+ {
+ "include": "#handlebars_attribute_name"
+ },
+ {
+ "include": "#handlebars_attribute_value"
+ }
+ ]
+ },
+ "extends": {
+ "patterns": [
+ {
+ "end": "(\\}\\})",
+ "begin": "(\\{\\{!<)\\s([-a-zA-Z0-9_\\./]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.handlebars"
+ },
+ "2": {
+ "name": "support.class.handlebars"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.function.handlebars"
+ }
+ },
+ "name": "meta.preprocessor.handlebars"
+ }
+ ]
+ },
+ "else_token": {
+ "begin": "(\\{\\{)(~?else)(@?\\s(if)\\s([-a-zA-Z0-9_\\.\\(\\s\\)/]+))?",
+ "end": "(~?\\}\\}\\}*)",
+ "name": "meta.function.inline.else.handlebars",
+ "beginCaptures": {
+ "1": {
+ "name": "support.constant.handlebars"
+ },
+ "2": {
+ "name": "support.constant.handlebars keyword.control"
+ },
+ "3": {
+ "name": "support.constant.handlebars"
+ },
+ "4": {
+ "name": "variable.parameter.handlebars"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.constant.handlebars"
+ }
+ }
+ },
+ "string-double-quoted": {
+ "begin": "\"",
+ "end": "\"",
+ "name": "string.quoted.double.handlebars",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#escaped-double-quote"
+ },
+ {
+ "include": "#block_comments"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#block_helper"
+ },
+ {
+ "include": "#else_token"
+ },
+ {
+ "include": "#end_block"
+ },
+ {
+ "include": "#partial_and_var"
+ }
+ ]
+ },
+ "inline_script": {
+ "begin": "(?:^\\s+)?(<)((?i:script))\\b(?:.*(type)=([\"'](?:text/x-handlebars-template|text/x-handlebars|text/template|x-tmpl-handlebars)[\"']))(?![^>]*/>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.script.html"
+ },
+ "3": {
+ "name": "entity.other.attribute-name.html"
+ },
+ "4": {
+ "name": "string.quoted.double.html"
+ }
+ },
+ "end": "(?<=</(script|SCRIPT))(>)(?:\\s*\\n)?",
+ "endCaptures": {
+ "2": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "name": "source.handlebars.embedded.html",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<!</(?:script|SCRIPT))(>)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.script.html"
+ }
+ },
+ "end": "(</)((?i:script))",
+ "patterns": [
+ {
+ "include": "#block_comments"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#block_helper"
+ },
+ {
+ "include": "#end_block"
+ },
+ {
+ "include": "#else_token"
+ },
+ {
+ "include": "#partial_and_var"
+ },
+ {
+ "include": "#html_tags"
+ },
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ }
+ ]
+ },
+ "tag_generic_attribute": {
+ "begin": "\\b([a-zA-Z0-9_-]+)\\b\\s*(=)",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.generic.html"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string"
+ }
+ ],
+ "name": "entity.other.attribute-name.html",
+ "end": "(?<='|\"|)"
+ },
+ "tag_id_attribute": {
+ "begin": "\\b(id)\\b\\s*(=)",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.id.html"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.html"
+ }
+ },
+ "end": "(?<='|\"|)",
+ "name": "meta.attribute-with-value.id.html",
+ "patterns": [
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ "tag-stuff": {
+ "patterns": [
+ {
+ "include": "#tag_id_attribute"
+ },
+ {
+ "include": "#tag_generic_attribute"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#block_comments"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#block_helper"
+ },
+ {
+ "include": "#end_block"
+ },
+ {
+ "include": "#else_token"
+ },
+ {
+ "include": "#partial_and_var"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/haskell.tmLanguage.json b/node_modules/shiki/languages/haskell.tmLanguage.json
new file mode 100644
index 0000000..8342ee2
--- /dev/null
+++ b/node_modules/shiki/languages/haskell.tmLanguage.json
@@ -0,0 +1,2428 @@
+{
+ "fileTypes": ["hs", "hs-boot", "hsig"],
+ "keyEquivalent": "^~H",
+ "name": "haskell",
+ "patterns": [
+ {
+ "include": "#liquid_haskell"
+ },
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#numeric_literals"
+ },
+ {
+ "include": "#string_literal"
+ },
+ {
+ "include": "#char_literal"
+ },
+ {
+ "match": "(?<!@|#)-\\}",
+ "name": "invalid"
+ },
+ {
+ "match": "(\\()\\s*(\\))",
+ "name": "constant.language.unit.haskell",
+ "captures": {
+ "1": {
+ "name": "punctuation.paren.haskell"
+ },
+ "2": {
+ "name": "punctuation.paren.haskell"
+ }
+ }
+ },
+ {
+ "match": "(\\()(#)\\s*(#)(\\))",
+ "name": "constant.language.unit.unboxed.haskell",
+ "captures": {
+ "1": {
+ "name": "punctuation.paren.haskell"
+ },
+ "2": {
+ "name": "keyword.operator.hash.haskell"
+ },
+ "3": {
+ "name": "keyword.operator.hash.haskell"
+ },
+ "4": {
+ "name": "punctuation.paren.haskell"
+ }
+ }
+ },
+ {
+ "match": "(\\()\\s*,[\\s,]*(\\))",
+ "name": "support.constant.tuple.haskell",
+ "captures": {
+ "1": {
+ "name": "punctuation.paren.haskell"
+ },
+ "2": {
+ "name": "punctuation.paren.haskell"
+ }
+ }
+ },
+ {
+ "match": "(\\()(#)\\s*,[\\s,]*(#)(\\))",
+ "name": "support.constant.tuple.unboxed.haskell",
+ "captures": {
+ "1": {
+ "name": "punctuation.paren.haskell"
+ },
+ "2": {
+ "name": "keyword.operator.hash.haskell"
+ },
+ "3": {
+ "name": "keyword.operator.hash.haskell"
+ },
+ "4": {
+ "name": "punctuation.paren.haskell"
+ }
+ }
+ },
+ {
+ "match": "(\\[)\\s*(\\])",
+ "name": "constant.language.empty-list.haskell",
+ "captures": {
+ "1": {
+ "name": "punctuation.bracket.haskell"
+ },
+ "2": {
+ "name": "punctuation.bracket.haskell"
+ }
+ }
+ },
+ {
+ "begin": "(\\b(?<!')(module)|^(signature))(\\b(?!'))",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.module.haskell"
+ },
+ "3": {
+ "name": "keyword.other.signature.haskell"
+ }
+ },
+ "end": "(?=\\b(?<!')where\\b(?!'))",
+ "name": "meta.declaration.module.haskell",
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#module_name"
+ },
+ {
+ "include": "#module_exports"
+ },
+ {
+ "match": "[a-z]+",
+ "name": "invalid"
+ }
+ ]
+ },
+ {
+ "include": "#ffi"
+ },
+ {
+ "begin": "^(\\s*)(class)(\\b(?!'))",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.class.haskell"
+ }
+ },
+ "end": "(?x) # Detect end of class declaration:\n # 'where' keyword\n (?=(?<!')\\bwhere\\b(?!')) \n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )",
+ "name": "meta.declaration.class.haskell",
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#where"
+ },
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n ^(\\s*)(data|newtype)(?:\\s+(instance))?\\s+\n # Keep consuming characters until:\n ((?:(?!\n # the equals symbol or the start of a single-line comment, or\n (?: \n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:=|--+)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n )\n # the \"where\" or \"deriving\" keywords, or\n | (?:\\b(?<!')(?:where|deriving)\\b(?!'))\n # the start of a block comment.\n | {-\n #\n ).)*)\n (?=\\b(?<!'')where\\b(?!''))",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.$2.haskell"
+ },
+ "3": {
+ "name": "keyword.other.instance.haskell"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ }
+ },
+ "name": "meta.declaration.$2.generalized.haskell",
+ "end": "(?x) # Detect end of data declaration:\n # Deriving clause\n (?=(?<!')\\bderiving\\b(?!')) \n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "begin": "(?x)\n (?<!')\\b(where)\n \\s*(\\{)(?!-)",
+ "end": "(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.where.haskell"
+ },
+ "2": {
+ "name": "punctuation.brace.haskell"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.brace.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#gadt_constructor"
+ },
+ {
+ "match": ";",
+ "name": "punctuation.semicolon.haskell"
+ }
+ ]
+ },
+ {
+ "match": "\\b(?<!')(where)\\b(?!')",
+ "name": "keyword.other.where.haskell"
+ },
+ {
+ "include": "#deriving"
+ },
+ {
+ "include": "#gadt_constructor"
+ }
+ ]
+ },
+ {
+ "include": "#role_annotation"
+ },
+ {
+ "name": "meta.declaration.pattern.type.haskell",
+ "begin": "^(\\s*)(pattern)\\s+(.*?)\\s+(::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.pattern.haskell"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#data_constructor"
+ }
+ ]
+ },
+ "4": {
+ "name": "keyword.operator.double-colon.haskell"
+ }
+ },
+ "end": "(?x) # Detect end of pattern type definition by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "name": "meta.declaration.pattern.haskell",
+ "begin": "^\\s*(pattern)\\b(?!')",
+ "captures": {
+ "1": {
+ "name": "keyword.other.pattern.haskell"
+ }
+ },
+ "end": "(?x) # Detect end of pattern type definition by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n # Data declaration\n ^(\\s*)(data|newtype)(?:\\s+(family|instance))?\\s+\n # Keep consuming characters until:\n (((?!\n # the equals symbol or the start of a single-line comment, or\n (?: \n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:=|--+)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n )\n # the \"where\" or \"deriving\" keywords, or\n | (?:\\b(?<!')(?:where|deriving)\\b(?!'))\n # the start of a block comment.\n | {-\n #\n ).)*)",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.$2.haskell"
+ },
+ "3": {
+ "name": "keyword.other.$3.haskell"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ }
+ },
+ "name": "meta.declaration.$2.algebraic.haskell",
+ "end": "(?x) # Detect end of data declaration: \n # Decreasing indentation\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )",
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#deriving"
+ },
+ {
+ "include": "#forall"
+ },
+ {
+ "include": "#adt_constructor"
+ },
+ {
+ "include": "#context"
+ },
+ {
+ "include": "#record_decl"
+ },
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "name": "meta.declaration.type.family.haskell",
+ "begin": "(?x)\n # Type family\n ^(\\s*)(type)\\s+(family)\\b(?!')\n # Keep consuming characters until:\n (((?!\n # the equals symbol or the start of a single-line comment, or\n (?: \n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:=|--+)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n )\n # the \"where\" keyword, or\n | \\b(?<!')where\\b(?!')\n # the start of a block comment.\n | {-\n #\n ).)*)",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.type.haskell"
+ },
+ "3": {
+ "name": "keyword.other.family.haskell"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#where"
+ },
+ {
+ "include": "#type_signature"
+ }
+ ]
+ }
+ },
+ "end": "(?x) # Detect end of type family by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#where"
+ },
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "name": "meta.declaration.type.haskell",
+ "begin": "(?x)\n # Type declaration\n ^(\\s*)(type)(?:\\s+(instance))?\\s+\n # Keep consuming characters until:\n (((?!\n # the equals symbol, the start of a single-line comment, or a type signature\n (?: \n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:=|--+|::|∷)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n )\n # the start of a block comment.\n | {-\n #\n ).)*)",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.type.haskell"
+ },
+ "3": {
+ "name": "keyword.other.instance.haskell"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ }
+ },
+ "end": "(?x) # Detect end of type definition by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*)(instance)(\\b(?!'))",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.instance.haskell"
+ }
+ },
+ "end": "(?x) # Detect end of instance declaration:\n # 'where' keyword\n (?=\\b(?<!')(where)\\b(?!'))\n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
+ "name": "meta.declaration.instance.haskell",
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#where"
+ },
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*)(import)(\\b(?!'))",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.import.haskell"
+ }
+ },
+ "end": "(?x) # Detect end of import\n # 'where' keyword\n (?=\\b(?<!')(where)\\b(?!'))\n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
+ "name": "meta.import.haskell",
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#where"
+ },
+ {
+ "match": "(qualified|as|hiding)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.$1.haskell"
+ }
+ }
+ },
+ {
+ "include": "#module_name"
+ },
+ {
+ "include": "#module_exports"
+ }
+ ]
+ },
+ {
+ "include": "#deriving"
+ },
+ {
+ "include": "#layout_herald"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "match": "^\\s*(infix[lr]?)\\s+(.*)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.$1.haskell"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#integer_literals"
+ },
+ {
+ "include": "#infix_op"
+ }
+ ]
+ }
+ },
+ "name": "meta.fixity-declaration.haskell"
+ },
+ {
+ "include": "#overloaded_label"
+ },
+ {
+ "include": "#type_application"
+ },
+ {
+ "include": "#reserved_symbol"
+ },
+ {
+ "include": "#fun_decl"
+ },
+ {
+ "include": "#qualifier"
+ },
+ {
+ "include": "#data_constructor"
+ },
+ {
+ "include": "#start_type_signature"
+ },
+ {
+ "include": "#prefix_op"
+ },
+ {
+ "include": "#infix_op"
+ },
+ {
+ "begin": "(\\()(#)\\s",
+ "end": "(#)(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.paren.haskell"
+ },
+ "2": {
+ "name": "keyword.operator.hash.haskell"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.hash.haskell"
+ },
+ "2": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(\\()",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "#quasi_quote"
+ },
+ {
+ "begin": "(\\[)",
+ "end": "(\\])",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.bracket.haskell"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.bracket.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "#record"
+ }
+ ],
+ "repository": {
+ "block_comment": {
+ "applyEndPatternLast": 1,
+ "begin": "\\{-",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.haskell"
+ }
+ },
+ "end": "-\\}",
+ "name": "comment.block.haskell",
+ "patterns": [
+ {
+ "include": "#block_comment"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "^(\\s*)(--\\s[\\|\\$])",
+ "beginCaptures": {
+ "2": {
+ "name": "punctuation.whitespace.comment.leading.haskell"
+ }
+ },
+ "end": "(?=^(?!\\1--+(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])))",
+ "name": "comment.block.documentation.haskell"
+ },
+ {
+ "begin": "(^[ \\t]+)?(--\\s[\\^\\*])",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.haskell"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.documentation.haskell"
+ },
+ {
+ "applyEndPatternLast": 1,
+ "begin": "\\{-\\s?[\\|\\$\\*\\^]",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.haskell"
+ }
+ },
+ "end": "-\\}",
+ "name": "comment.block.documentation.haskell",
+ "patterns": [
+ {
+ "include": "#block_comment"
+ }
+ ]
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=--+(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.haskell"
+ }
+ },
+ "comment": "Operators may begin with '--' as long as they are not entirely composed of '-' characters. This means comments can't be immediately followed by an allowable operator character.",
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "--",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.haskell"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.double-dash.haskell"
+ }
+ ]
+ },
+ {
+ "include": "#block_comment"
+ }
+ ]
+ },
+ "comment_like": {
+ "patterns": [
+ {
+ "include": "#cpp"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "cpp": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.preprocessor.c"
+ }
+ },
+ "comment": "In addition to Haskell's \"native\" syntax, GHC permits the C preprocessor to be run on a source file.",
+ "match": "^(#).*$",
+ "name": "meta.preprocessor.c"
+ },
+ "where": {
+ "patterns": [
+ {
+ "begin": "(?x)\n (?<!')\\b(where)\n \\s*(\\{)(?!-)",
+ "end": "(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.where.haskell"
+ },
+ "2": {
+ "name": "punctuation.brace.haskell"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.brace.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ },
+ {
+ "match": ";",
+ "name": "punctuation.semicolon.haskell"
+ }
+ ]
+ },
+ {
+ "match": "\\b(?<!')(where)\\b(?!')",
+ "name": "keyword.other.where.haskell"
+ }
+ ]
+ },
+ "layout_herald": {
+ "begin": "(?x)\n (?<!')\\b(?:(where|let|m?do)|(of))\n \\s*(\\{)(?!-)",
+ "end": "(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.$1.haskell"
+ },
+ "2": {
+ "name": "keyword.control.of.haskell"
+ },
+ "3": {
+ "name": "punctuation.brace.haskell"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.brace.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ },
+ {
+ "match": ";",
+ "name": "punctuation.semicolon.haskell"
+ }
+ ]
+ },
+ "keyword": {
+ "match": "\\b(?<!')(?:(where|let|in|default)|(m?do|if|then|else|case|of|proc|rec))\\b(?!')",
+ "captures": {
+ "1": {
+ "name": "keyword.other.$1.haskell"
+ },
+ "2": {
+ "name": "keyword.control.$2.haskell"
+ }
+ }
+ },
+ "deriving": {
+ "patterns": [
+ {
+ "begin": "^(\\s*)(deriving)\\s+(?:(via|stock|newtype|anyclass)\\s+)?",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.deriving.haskell"
+ },
+ "3": {
+ "name": "keyword.other.deriving.strategy.$3.haskell"
+ }
+ },
+ "end": "(?x) # Detect end of deriving statement\n # Decreasing indentation\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )",
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "match": "(?<!')\\b(instance)\\b(?!')",
+ "name": "keyword.other.instance.haskell"
+ },
+ {
+ "match": "(?<!')\\b(via|stock|newtype|anyclass)\\b(?!')",
+ "captures": {
+ "1": {
+ "name": "keyword.other.deriving.strategy.$1.haskell"
+ }
+ }
+ },
+ {
+ "include": "#type_signature"
+ }
+ ],
+ "name": "meta.deriving.haskell"
+ },
+ {
+ "begin": "(deriving)(?:\\s+(stock|newtype|anyclass))?\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.deriving.haskell"
+ },
+ "2": {
+ "name": "keyword.other.deriving.strategy.$2.haskell"
+ },
+ "3": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "name": "meta.deriving.haskell",
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "match": "(?x)\n (deriving)(?:\\s+(stock|newtype|anyclass))?\\s+\n ([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n (\\s+(via)\\s+(.*)$)?\n",
+ "captures": {
+ "1": {
+ "name": "keyword.other.deriving.haskell"
+ },
+ "2": {
+ "name": "keyword.other.deriving.strategy.$2.haskell"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ "5": {
+ "name": "keyword.other.deriving.strategy.via.haskell"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ }
+ },
+ "name": "meta.deriving.haskell"
+ },
+ {
+ "match": "(?<!')\\b(via)\\b(?!')",
+ "name": "keyword.other.deriving.strategy.via.haskell"
+ }
+ ]
+ },
+ "prefix_op": {
+ "patterns": [
+ {
+ "comment": "An operator cannot be composed entirely of '-' characters; instead, it should be matched as a comment.\n",
+ "match": "(?x)\n (\\()\\s*(?!(?:--+|\\.\\.)\\))(\\#+|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+(?<!\\#))\\s*(\\))",
+ "captures": {
+ "1": {
+ "name": "punctuation.paren.haskell"
+ },
+ "2": {
+ "name": "entity.name.function.infix.haskell"
+ },
+ "3": {
+ "name": "punctuation.paren.haskell"
+ }
+ }
+ }
+ ]
+ },
+ "infix_op": {
+ "patterns": [
+ {
+ "match": "(?x)\n ((?:(?<!'')('')?[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'']*\\.)*)\n (\\#+|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+(?<!\\#))",
+ "comment": "In case this regex seems overly general, note that Haskell permits the definition of new operators which can be nearly any string of punctuation characters, such as $%^&*.\n",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.promotion.haskell"
+ },
+ "2": {
+ "name": "entity.name.namespace.haskell"
+ },
+ "3": {
+ "name": "keyword.operator.infix.haskell"
+ }
+ }
+ },
+ {
+ "match": "(`)((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'']*\\.)*)([\\p{Ll}\\p{Lu}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'']*)(`)",
+ "captures": {
+ "1": {
+ "name": "punctuation.backtick.haskell"
+ },
+ "2": {
+ "name": "entity.name.namespace.haskell"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#data_constructor"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.backtick.haskell"
+ }
+ },
+ "comment": "In case this regex seems unusual for an infix operator, note that Haskell\nallows any ordinary function application (elem 4 [1..10]) to be rewritten\nas an infix expression (4 `elem` [1..10]).\n",
+ "name": "keyword.operator.function.infix.haskell"
+ }
+ ]
+ },
+ "module_exports": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "applyEndPatternLast": 1,
+ "name": "meta.declaration.exports.haskell",
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "match": "\\b(?<!')(module)\\b(?!')",
+ "captures": {
+ "1": {
+ "name": "keyword.other.module.haskell"
+ }
+ }
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#export_constructs"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#record_wildcard"
+ },
+ {
+ "include": "#export_constructs"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ }
+ ]
+ },
+ "export_constructs": {
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "begin": "\\b(?<!')(pattern)\\b(?!')",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.pattern.haskell"
+ }
+ },
+ "end": "(?x)\n # Data constructor\n ([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n # Prefix form of symbolic constructor\n | (\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "constant.other.haskell"
+ },
+ "2": {
+ "name": "punctuation.paren.haskell"
+ },
+ "3": {
+ "name": "constant.other.operator.haskell"
+ },
+ "4": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment_like"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(?<!')(type)\\b(?!')",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.type.haskell"
+ }
+ },
+ "end": "(?x)\n # Type name\n ([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n # Prefix form of type operator\n | (\\()\\s*([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "storage.type.haskell"
+ },
+ "2": {
+ "name": "punctuation.paren.haskell"
+ },
+ "3": {
+ "name": "storage.type.operator.haskell"
+ },
+ "4": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment_like"
+ }
+ ]
+ },
+ {
+ "match": "(?<!')\\b[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
+ "name": "entity.name.function.haskell"
+ },
+ {
+ "match": "(?<!')\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
+ "name": "storage.type.haskell"
+ },
+ {
+ "include": "#record_wildcard"
+ },
+ {
+ "include": "#reserved_symbol"
+ },
+ {
+ "include": "#prefix_op"
+ }
+ ]
+ },
+ "comma": {
+ "match": ",",
+ "name": "punctuation.separator.comma.haskell"
+ },
+ "module_name": {
+ "match": "(?<conid>[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(\\.\\g<conid>)?)",
+ "name": "entity.name.namespace.haskell"
+ },
+ "pragma": {
+ "begin": "\\{-#",
+ "end": "#-\\}",
+ "name": "meta.preprocessor.haskell",
+ "patterns": [
+ {
+ "begin": "(?xi) \\b(?<!')(LANGUAGE)\\b(?!')",
+ "end": "(?=#-\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.preprocessor.pragma.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?x)\n (?:No)?\n (?:AutoDeriveTypeable|DatatypeContexts|DoRec|IncoherentInstances|MonadFailDesugaring|MonoPatBinds|NullaryTypeClasses|OverlappingInstances|PatternSignatures|RecordPuns|RelaxedPolyRec)",
+ "name": "invalid.deprecated"
+ },
+ {
+ "match": "(?x)\n (\n (?:No)?\n (?:AllowAmbiguousTypes|AlternativeLayoutRule|AlternativeLayoutRuleTransitional|Arrows|BangPatterns|BinaryLiterals|CApiFFI|CPP|CUSKs|ConstrainedClassMethods|ConstraintKinds|DataKinds|DefaultSignatures|DeriveAnyClass|DeriveDataTypeable|DeriveFoldable|DeriveFunctor|DeriveGeneric|DeriveLift|DeriveTraversable|DerivingStrategies|DerivingVia|DisambiguateRecordFields|DoAndIfThenElse|BlockArguments|DuplicateRecordFields|EmptyCase|EmptyDataDecls|EmptyDataDeriving|ExistentialQuantification|ExplicitForAll|ExplicitNamespaces|ExtendedDefaultRules|FlexibleContexts|FlexibleInstances|ForeignFunctionInterface|FunctionalDependencies|GADTSyntax|GADTs|GHCForeignImportPrim|Generali(?:s|z)edNewtypeDeriving|ImplicitParams|ImplicitPrelude|ImportQualifiedPost|ImpredicativeTypes|TypeFamilyDependencies|InstanceSigs|ApplicativeDo|InterruptibleFFI|JavaScriptFFI|KindSignatures|LambdaCase|LiberalTypeSynonyms|MagicHash|MonadComprehensions|MonoLocalBinds|MonomorphismRestriction|MultiParamTypeClasses|MultiWayIf|NumericUnderscores|NPlusKPatterns|NamedFieldPuns|NamedWildCards|NegativeLiterals|HexFloatLiterals|NondecreasingIndentation|NumDecimals|OverloadedLabels|OverloadedLists|OverloadedStrings|PackageImports|ParallelArrays|ParallelListComp|PartialTypeSignatures|PatternGuards|PatternSynonyms|PolyKinds|PolymorphicComponents|QuantifiedConstraints|PostfixOperators|QuasiQuotes|Rank2Types|RankNTypes|RebindableSyntax|RecordWildCards|RecursiveDo|RelaxedLayout|RoleAnnotations|ScopedTypeVariables|StandaloneDeriving|StarIsType|StaticPointers|Strict|StrictData|TemplateHaskell|TemplateHaskellQuotes|StandaloneKindSignatures|TraditionalRecordSyntax|TransformListComp|TupleSections|TypeApplications|TypeInType|TypeFamilies|TypeOperators|TypeSynonymInstances|UnboxedTuples|UnboxedSums|UndecidableInstances|UndecidableSuperClasses|UnicodeSyntax|UnliftedFFITypes|UnliftedNewtypes|ViewPatterns)\n )",
+ "captures": {
+ "1": {
+ "name": "keyword.other.preprocessor.extension.haskell"
+ }
+ }
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ },
+ {
+ "begin": "(?xi)\n \\b(?<!')(SPECIALI(?:S|Z)E)\n (?:\n \\s*( \\[ [^\\[\\]]* \\])?\\s*\n |\\s+\n )\n (instance)\\b(?!')",
+ "end": "(?=#-\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.preprocessor.pragma.haskell"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline_phase"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.other.instance.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "begin": "(?xi)\n \\b(?<!')(SPECIALI(?:S|Z)E)\\b(?!')\n (?:\\s+(INLINE)\\b(?!'))?\n (?:\\s*(\\[ [^\\[\\]]* \\])?)\n \\s*",
+ "end": "(?=#-\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.preprocessor.pragma.haskell"
+ },
+ "2": {
+ "name": "keyword.other.preprocessor.pragma.haskell"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#inline_phase"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "match": "(?xi) \\b(?<!')\n (LANGUAGE|OPTIONS_GHC|INCLUDE\n |MINIMAL|UNPACK|OVERLAPS|INCOHERENT\n |NOUNPACK|SOURCE|OVERLAPPING|OVERLAPPABLE|INLINE\n |NOINLINE|INLINE?ABLE|CONLIKE|LINE|COLUMN|RULES\n |COMPLETE)\\b(?!')",
+ "name": "keyword.other.preprocessor.haskell"
+ },
+ {
+ "begin": "(?i)\\b(DEPRECATED|WARNING)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.preprocessor.pragma.haskell"
+ }
+ },
+ "end": "(?=#-\\})",
+ "patterns": [
+ {
+ "include": "#string_literal"
+ }
+ ]
+ }
+ ]
+ },
+ "liquid_haskell": {
+ "name": "block.liquidhaskell.haskell",
+ "begin": "\\{-@",
+ "end": "@-\\}",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "context": {
+ "match": "(?x)\n (.*)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n (=>|⇒)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.operator.big-arrow.haskell"
+ }
+ }
+ },
+ "data_constructor": {
+ "match": "\\b(?<!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?![\\.'\\w])",
+ "name": "constant.other.haskell"
+ },
+ "qualifier": {
+ "match": "\\b(?<!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.",
+ "name": "entity.name.namespace.haskell"
+ },
+ "record_decl": {
+ "begin": "({)(?!-)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.brace.haskell"
+ }
+ },
+ "end": "(?<!-)(})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.brace.haskell"
+ }
+ },
+ "name": "meta.record.definition.haskell",
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#record_decl_field"
+ }
+ ]
+ },
+ "record": {
+ "begin": "({)(?!-)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.brace.haskell"
+ }
+ },
+ "end": "(?<!-)(})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.brace.haskell"
+ }
+ },
+ "name": "meta.record.haskell",
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#record_field"
+ }
+ ]
+ },
+ "record_decl_field": {
+ "begin": "(?x)\n (?:([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n |(\\()\\s*([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\))\n )\n",
+ "end": "(,)|(?=})",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.member.definition.haskell"
+ },
+ "2": {
+ "name": "punctuation.paren.haskell"
+ },
+ "3": {
+ "name": "variable.other.member.definition.haskell"
+ },
+ "4": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.comma.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#double_colon"
+ },
+ {
+ "include": "#type_signature"
+ },
+ {
+ "include": "#record_decl_field"
+ }
+ ]
+ },
+ "record_wildcard": {
+ "match": "(?x)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n (\\.\\.)\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
+ "captures": {
+ "1": {
+ "name": "variable.other.member.wildcard.haskell"
+ }
+ }
+ },
+ "record_field": {
+ "patterns": [
+ {
+ "begin": "(?x)\n (?:([\\p{Ll}\\p{Lu}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\.']*)\n |(\\()\\s*([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\))\n )\n",
+ "end": "(,)|(?=})",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.member.haskell",
+ "patterns": [
+ {
+ "include": "#qualifier"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.paren.haskell"
+ },
+ "3": {
+ "name": "variable.other.member.haskell"
+ },
+ "4": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.comma.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "#record_wildcard"
+ }
+ ]
+ },
+ "role_annotation": {
+ "patterns": [
+ {
+ "begin": "^(\\s*)(type)\\s+(role)\\b(?!')",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.type.haskell"
+ },
+ "3": {
+ "name": "keyword.other.role.haskell"
+ }
+ },
+ "end": "(?x) # Detect end of block by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )",
+ "name": "meta.role-annotation.haskell",
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#type_constructor"
+ },
+ {
+ "match": "\\b(?<!')(nominal|representational|phantom)\\b(?!')",
+ "captures": {
+ "1": {
+ "name": "keyword.other.role.$1.haskell"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "fun_decl": {
+ "begin": "(?x)^(\\s*)\n (?<fn>\n (?:\n [\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\#*\n | \\(\\s*\n (?!--+\\))\n [\\p{S}\\p{P}&&[^(),:;\\[\\]`{}_\"']]\n [\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*\n \\s*\\)\n )\n (?:\\s*,\\s*\\g<fn>)?\n )\n \\s*(?<![\\p{S}\\p{P}&&[^\\),;\\]`}_\"']])(::|∷)(?![\\p{S}\\p{P}&&[^\\(,;\\[`{_\"']])\n",
+ "beginCaptures": {
+ "2": {
+ "name": "entity.name.function.haskell",
+ "patterns": [
+ {
+ "include": "#reserved_symbol"
+ },
+ {
+ "include": "#prefix_op"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.operator.double-colon.haskell"
+ }
+ },
+ "name": "meta.function.type-declaration.haskell",
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ],
+ "end": "(?x)\n # End of type annotation:\n # To the left of a reserved symbolic keyword such as = or <-\n (?= \n # non-symbolic character\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n # symbolic keyword except (->)\n ((<-|←)|(=)|(-<|↢)|(-<<|⤛))\n # non-symbolic character\n ([(),;\\[\\]`{}_\"']|[^\\p{S}\\p{P}])\n )\n # Decreasing indentation:\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n"
+ },
+ "adt_constructor": {
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "begin": "(?x)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol\n (?:(=)|(\\|))\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]) # non-symbol",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.eq.haskell"
+ },
+ "2": {
+ "name": "keyword.operator.pipe.haskell"
+ }
+ },
+ "end": "(?x)\n (?:\\G|^)\\s* # Enforce starting condition to avoid catastrophic backtracking (https://github.com/JustusAdam/language-haskell/issues/161)\n (?: # Infix data constructor\n # First argument\n (?:\n # Simple type\n (?<!')\\b((?:[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'\\.])+)\n # Type inside balanced parentheses\n | ('? # Optional promotion tick\n (?<paren>\n \\( # Opening parenthesis\n (?:\n [^\\(\\)]* # Match non-parentheses\n | \\g<paren> # or recurse into further depth\n )*\n \\) # Closing parenthesis\n )\n )\n # Type inside balanced brackets\n | ('? # Optional promotion tick\n (?<brac>\n \\( # Opening bracket\n (?:\n [^\\[\\]]* # Match non-brackets\n | \\g<brac> # or recurse into further depth\n )*\n \\] # Closing bracket\n )\n )\n ) \n # Then either\n \\s*\n # - a symbolic infix constructor, or\n (?:(?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\n # - an alphabetic infix constructor\n | (`)([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(`)\n )\n\n ) # Otherwise, prefix data constructor, either:\n | # - an alphabetic data constructor e.g. \"Cons_123\"\n (?:(?<!')\\b([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*))\n | # - a symbolic (prefix) data constructor\n (\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\\s*(\\))",
+ "endCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ "6": {
+ "name": "constant.other.operator.haskell"
+ },
+ "7": {
+ "name": "punctuation.backtick.haskell"
+ },
+ "8": {
+ "name": "constant.other.haskell"
+ },
+ "9": {
+ "name": "punctuation.backtick.haskell"
+ },
+ "10": {
+ "name": "constant.other.haskell"
+ },
+ "11": {
+ "name": "punctuation.paren.haskell"
+ },
+ "12": {
+ "name": "constant.other.operator.haskell"
+ },
+ "13": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#deriving"
+ },
+ {
+ "include": "#record_decl"
+ },
+ {
+ "include": "#forall"
+ },
+ {
+ "include": "#context"
+ }
+ ]
+ }
+ ]
+ },
+ "gadt_constructor": {
+ "patterns": [
+ {
+ "begin": "(?x)\n ^(\\s*)\n (?:\n (\\b(?<!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n |(\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\\s*(\\))\n )",
+ "beginCaptures": {
+ "2": {
+ "name": "constant.other.haskell"
+ },
+ "3": {
+ "name": "punctuation.paren.haskell"
+ },
+ "4": {
+ "name": "constant.other.operator.haskell"
+ },
+ "5": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "end": "(?x)\n # GADT constructor ends\n (?=\\b(?<!'')deriving\\b(?!')) \n # Decreasing indentation\n |(?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#deriving"
+ },
+ {
+ "include": "#double_colon"
+ },
+ {
+ "include": "#record_decl"
+ },
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n (\\b(?<!')[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}]*) # named constructor\n |(\\()\\s*(:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]*)\\s*(\\)) # prefix operator",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.other.haskell"
+ },
+ "2": {
+ "name": "punctuation.paren.haskell"
+ },
+ "3": {
+ "name": "constant.other.operator.haskell"
+ },
+ "4": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#deriving"
+ },
+ {
+ "include": "#double_colon"
+ },
+ {
+ "include": "#record_decl"
+ },
+ {
+ "include": "#type_signature"
+ }
+ ]
+ }
+ ]
+ },
+ "type_application": {
+ "patterns": [
+ {
+ "begin": "(?<=[\\s,;\\[\\]{}\"])(@)(')?(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.prefix.at.haskell"
+ },
+ "2": {
+ "name": "keyword.operator.promotion.haskell"
+ },
+ "3": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "name": "meta.type-application.haskell",
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=[\\s,;\\[\\]{}\"])(@)(')?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.prefix.at.haskell"
+ },
+ "2": {
+ "name": "keyword.operator.promotion.haskell"
+ },
+ "3": {
+ "name": "punctuation.bracket.haskell"
+ }
+ },
+ "end": "\\]",
+ "name": "meta.type-application.haskell",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.bracket.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=[\\s,;\\[\\]{}\"])(@)(?=\\\")",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.prefix.at.haskell"
+ }
+ },
+ "end": "(?<=\\\")",
+ "name": "meta.type-application.haskell",
+ "patterns": [
+ {
+ "include": "#string_literal"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=[\\s,;\\[\\]{}\"])(@)(?=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.prefix.at.haskell"
+ }
+ },
+ "end": "(?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])",
+ "name": "meta.type-application.haskell",
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ }
+ ]
+ },
+ "type_signature": {
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "match": "(')?(\\()\\s*(\\))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.promotion.haskell"
+ },
+ "2": {
+ "name": "punctuation.paren.haskell"
+ },
+ "3": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "name": "support.constant.unit.haskell"
+ },
+ {
+ "match": "(\\()(#)\\s*(#)(\\))",
+ "name": "support.constant.unit.unboxed.haskell",
+ "captures": {
+ "1": {
+ "name": "punctuation.paren.haskell"
+ },
+ "2": {
+ "name": "keyword.operator.hash.haskell"
+ },
+ "3": {
+ "name": "keyword.operator.hash.haskell"
+ },
+ "4": {
+ "name": "punctuation.paren.haskell"
+ }
+ }
+ },
+ {
+ "match": "(')?(\\()\\s*,[\\s,]*(\\))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.promotion.haskell"
+ },
+ "2": {
+ "name": "punctuation.paren.haskell"
+ },
+ "3": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "name": "support.constant.tuple.haskell"
+ },
+ {
+ "match": "(\\()(#)\\s*(#)(\\))",
+ "name": "support.constant.unit.unboxed.haskell",
+ "captures": {
+ "1": {
+ "name": "punctuation.paren.haskell"
+ },
+ "2": {
+ "name": "keyword.operator.hash.haskell"
+ },
+ "3": {
+ "name": "keyword.operator.hash.haskell"
+ },
+ "4": {
+ "name": "punctuation.paren.haskell"
+ }
+ }
+ },
+ {
+ "match": "(\\()(#)\\s*,[\\s,]*(#)(\\))",
+ "captures": {
+ "1": {
+ "name": "punctuation.paren.haskell"
+ },
+ "2": {
+ "name": "keyword.operator.hash.haskell"
+ },
+ "3": {
+ "name": "keyword.operator.hash.haskell"
+ },
+ "4": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "name": "support.constant.tuple.unboxed.haskell"
+ },
+ {
+ "match": "(')?(\\[)\\s*(\\])",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.promotion.haskell"
+ },
+ "2": {
+ "name": "punctuation.bracket.haskell"
+ },
+ "3": {
+ "name": "punctuation.bracket.haskell"
+ }
+ },
+ "name": "support.constant.empty-list.haskell"
+ },
+ {
+ "include": "#integer_literals"
+ },
+ {
+ "match": "(::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])",
+ "name": "keyword.operator.double-colon.haskell"
+ },
+ {
+ "include": "#forall"
+ },
+ {
+ "match": "=>|⇒",
+ "name": "keyword.operator.big-arrow.haskell"
+ },
+ {
+ "include": "#string_literal"
+ },
+ {
+ "match": "'[^']'",
+ "name": "invalid"
+ },
+ {
+ "include": "#type_application"
+ },
+ {
+ "include": "#reserved_symbol"
+ },
+ {
+ "include": "#type_operator"
+ },
+ {
+ "include": "#type_constructor"
+ },
+ {
+ "begin": "(\\()(#)",
+ "end": "(#)(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.paren.haskell"
+ },
+ "2": {
+ "name": "keyword.operator.hash.haskell"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.hash.haskell"
+ },
+ "2": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "begin": "(')?(\\()",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.promotion.haskell"
+ },
+ "2": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.paren.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "begin": "(')?(\\[)",
+ "end": "(\\])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.promotion.haskell"
+ },
+ "2": {
+ "name": "punctuation.bracket.haskell"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.bracket.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "include": "#type_variable"
+ }
+ ]
+ },
+ "double_colon": {
+ "match": "\\s*(::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.double-colon.haskell"
+ }
+ }
+ },
+ "start_type_signature": {
+ "patterns": [
+ {
+ "begin": "^(\\s*)(::|∷)(?![\\p{S}\\p{P}&&[^\\(,;\\[`{_\"']])\\s*",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.operator.double-colon.haskell"
+ }
+ },
+ "end": "(?x)\n # End type annotation when seeing one of:\n (?=\n \\#?\\) # closing parenthesis\n |\\] # closing bracket\n |, # comma\n |(?<!')\\b(in|then|else|of)\\b(?!') # keyword\n | # symbolic keyword except (->)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n (?:\n (\\\\|λ)\n |(<-|←)\n |(=)\n |(-<|↢)\n |(-<<|⤛)\n )\n ([(),;\\[\\]`{}_\"']|[^\\p{S}\\p{P}])\n |(\\#|@)-\\} # End of annotation block (LiquidHaskell or pragma)\n # Decreasing indentation:\n | (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s*\\S # - equally indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n )",
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ],
+ "name": "meta.type-declaration.haskell"
+ },
+ {
+ "begin": "(?<![\\p{S}\\p{P}&&[^\\(,;\\[`{_\"']])(::|∷)(?![\\p{S}\\p{P}&&[^\\(,;\\[`{_\"']])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.double-colon.haskell"
+ }
+ },
+ "end": "(?x)\n # End type annotation when seeing one of:\n (?=\n \\#?\\) # closing parenthesis\n |\\] # closing bracket\n |, # comma\n |\\b(?<!')(in|then|else|of)\\b(?!') # keyword\n |(\\#|@)-\\} # End of annotation block (LiquidHaskell or pragma)\n | # symbolic keyword except (->)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']])\n (?:\n (\\\\|λ)\n |(<-|←)\n |(=)\n |(-<|↢)\n |(-<<|⤛)\n )\n ([(),;\\[\\]`{}_\"']|[^\\p{S}\\p{P}])\n # Indentation \n |(?=\\}|;) # Explicit indentation\n |$ # End of line\n )",
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ }
+ ]
+ },
+ "type_variable": {
+ "match": "\\b(?<!')(?!(?:forall|deriving)\\b(?!'))[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
+ "name": "variable.other.generic-type.haskell"
+ },
+ "type_constructor": {
+ "patterns": [
+ {
+ "match": "(?x)\n # Optional promotion tick\n (')?\n # Optional qualified name\n ((?:\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n # Type constructor proper\n (\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.promotion.haskell"
+ },
+ "2": {
+ "name": "entity.name.namespace.haskell"
+ },
+ "3": {
+ "name": "storage.type.haskell"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n # Optional promotion tick\n (')?\n # Opening parenthesis\n (\\()\\s*\n # Optional qualified name\n ((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n # Type operator proper\n ([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\n # Closing parenthesis\n \\s*(\\))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.promotion.haskell"
+ },
+ "2": {
+ "name": "punctuation.paren.haskell"
+ },
+ "3": {
+ "name": "entity.name.namespace.haskell"
+ },
+ "4": {
+ "name": "storage.type.operator.haskell"
+ },
+ "5": {
+ "name": "punctuation.paren.haskell"
+ }
+ }
+ }
+ ]
+ },
+ "overloaded_label": {
+ "patterns": [
+ {
+ "match": "(?x) \n (?<![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}&&[^(,;\\[`{]]) # Disallow closing characters\n (\\#)\n (?:\n # String\n (\"(?:\\\\\"|[^\"])*\")\n # Sequence of allowed label identifiers\n |[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'\\.]+\n )",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.prefix.hash.haskell"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#string_literal"
+ }
+ ]
+ }
+ },
+ "name": "entity.name.label.haskell"
+ }
+ ]
+ },
+ "reserved_symbol": {
+ "patterns": [
+ {
+ "match": "(?x)\n (?<![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'']])\n (?:\n (\\.\\.)\n |(:)\n |(=)\n |(\\\\) # λ not reserved as it is a letter\n |(\\|)\n |(<-|←)\n |(->|→)\n |(-<|↢)\n |(-<<|⤛)\n |(>-|⤚)\n |(>>-|⤜)\n |(∀)\n )\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"'']])",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.double-dot.haskell"
+ },
+ "2": {
+ "name": "keyword.operator.colon.haskell"
+ },
+ "3": {
+ "name": "keyword.operator.eq.haskell"
+ },
+ "4": {
+ "name": "keyword.operator.lambda.haskell"
+ },
+ "5": {
+ "name": "keyword.operator.pipe.haskell"
+ },
+ "6": {
+ "name": "keyword.operator.arrow.left.haskell"
+ },
+ "7": {
+ "name": "keyword.operator.arrow.haskell"
+ },
+ "8": {
+ "name": "keyword.operator.arrow.left.tail.haskell"
+ },
+ "9": {
+ "name": "keyword.operator.arrow.left.tail.double.haskell"
+ },
+ "10": {
+ "name": "keyword.operator.arrow.tail.haskell"
+ },
+ "11": {
+ "name": "keyword.operator.arrow.tail.double.haskell"
+ },
+ "12": {
+ "name": "keyword.other.forall.haskell"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n (?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}&&[^\\#,;\\[`{]]) # Require closing characters\n (\\#+)\n (?![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}&&[^),;\\]`}]]) # Disallow opening character",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.postfix.hash.haskell"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n (?<=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\)\\}\\]]) # Require closing characters\n (@)\n (?=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\(\\[\\{]) # Require opening character",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.infix.tight.at.haskell"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n (?<![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\p{S}\\p{P}&&[^(,;\\[`{]]) # Disallow closing characters\n (?:(~)|(!)|(-)|(\\$)|(\\$\\$))\n (?=[\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}\\(\\{\\[]) # Require opening character (non operator symbol)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.prefix.tilde.haskell"
+ },
+ "2": {
+ "name": "keyword.operator.prefix.bang.haskell"
+ },
+ "3": {
+ "name": "keyword.operator.prefix.minus.haskell"
+ },
+ "4": {
+ "name": "keyword.operator.prefix.dollar.haskell"
+ },
+ "5": {
+ "name": "keyword.operator.prefix.double-dollar.haskell"
+ }
+ }
+ }
+ ]
+ },
+ "type_operator": {
+ "patterns": [
+ {
+ "match": "(?x)\n # Optional promotion tick\n (?:(?<!')('))?\n # Optional qualified name\n ((?:\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n # Type operator proper\n (?![#@]?-})(\\#+|[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+(?<!\\#))\n #((?:[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']&&[^#@]]|[@#](?!-}))+)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.promotion.haskell"
+ },
+ "2": {
+ "name": "entity.name.namespace.haskell"
+ },
+ "3": {
+ "name": "storage.type.operator.infix.haskell"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n # Optional promotion tick\n (')?\n # Opening backtick\n (\\`)\n # Optional qualified name\n ((?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*\\.)*)\n # Type constructor proper\n ([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\n # Closing backtick\n (`)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.promotion.haskell"
+ },
+ "2": {
+ "name": "punctuation.backtick.haskell"
+ },
+ "3": {
+ "name": "entity.name.namespace.haskell"
+ },
+ "4": {
+ "name": "storage.type.infix.haskell"
+ },
+ "5": {
+ "name": "punctuation.backtick.haskell"
+ }
+ }
+ }
+ ]
+ },
+ "forall": {
+ "begin": "\\b(?<!')(forall|∀)\\b(?!')",
+ "end": "(\\.)|(->|→)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.forall.haskell"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.period.haskell"
+ },
+ "2": {
+ "name": "keyword.operator.arrow.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "include": "#type_variable"
+ },
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ "string_literal": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.haskell"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.haskell"
+ }
+ },
+ "name": "string.quoted.double.haskell",
+ "patterns": [
+ {
+ "match": "\\\\(NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&])",
+ "name": "constant.character.escape.haskell"
+ },
+ {
+ "match": "\\\\o[0-7]+|\\\\x[0-9A-Fa-f]+|\\\\[0-9]+",
+ "name": "constant.character.escape.octal.haskell"
+ },
+ {
+ "match": "\\\\\\^[A-Z@\\[\\]\\\\\\^_]",
+ "name": "constant.character.escape.control.haskell"
+ },
+ {
+ "begin": "\\\\\\s",
+ "beginCaptures": {
+ "0": {
+ "name": "constant.character.escape.begin.haskell"
+ }
+ },
+ "end": "\\\\",
+ "endCaptures": {
+ "0": {
+ "name": "constant.character.escape.end.haskell"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\S+",
+ "name": "invalid.illegal.character-not-allowed-here.haskell"
+ }
+ ]
+ }
+ ]
+ },
+ "char_literal": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.haskell"
+ },
+ "2": {
+ "name": "constant.character.escape.haskell"
+ },
+ "3": {
+ "name": "constant.character.escape.octal.haskell"
+ },
+ "4": {
+ "name": "constant.character.escape.hexadecimal.haskell"
+ },
+ "5": {
+ "name": "constant.character.escape.control.haskell"
+ },
+ "6": {
+ "name": "punctuation.definition.string.end.haskell"
+ }
+ },
+ "match": "(?x)\n (?<![\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}'])\n (')\n (?:\n [\\ -\\[\\]-~] # Basic Char\n | (\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE\n |DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS\n |US|SP|DEL|[abfnrtv\\\\\\\"'\\\\&])) # Escapes\n | (\\\\o[0-7]+) # Octal Escapes\n | (\\\\x[0-9A-Fa-f]+) # Hexadecimal Escapes\n | (\\\\\\^[A-Z@\\[\\]\\\\\\^_]) # Control Chars\n )\n (')\n",
+ "name": "string.quoted.single.haskell"
+ },
+ "float_literals": {
+ "comment": "Floats are decimal or hexadecimal",
+ "match": "(?x)\n \\b(?<!')\n (?: # Decimal\n ([0-9][_0-9]*\\.[0-9][_0-9]*(?:[eE][-+]?[0-9][_0-9]*)?\n |[0-9][_0-9]*[eE][-+]?[0-9][_0-9]*\n )\n | # Hexadecimal\n (0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*\\.[0-9a-fA-F][_0-9a-fA-F]*(?:[pP][-+]?[0-9][_0-9]*)?\n |0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*[pP][-+]?[0-9][_0-9]*\n )\n )\\b(?!')",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.floating.decimal.haskell"
+ },
+ "2": {
+ "name": "constant.numeric.floating.hexadecimal.haskell"
+ }
+ }
+ },
+ "integer_literals": {
+ "match": "(?x)\n \\b(?<!')\n (?:\n ([0-9][_0-9]*) # Decimal integer\n | (0[xX]_*[0-9a-fA-F][_0-9a-fA-F]*) # Hexadecimal integer\n | (0[oO]_*[0-7][_0-7]*) # Octal integer\n | (0[bB]_*[01][_01]*) # Binary integer\n )\n \\b(?!')",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.integral.decimal.haskell"
+ },
+ "2": {
+ "name": "constant.numeric.integral.hexadecimal.haskell"
+ },
+ "3": {
+ "name": "constant.numeric.integral.octal.haskell"
+ },
+ "4": {
+ "name": "constant.numeric.integral.binary.haskell"
+ }
+ }
+ },
+ "numeric_literals": {
+ "patterns": [
+ {
+ "include": "#float_literals"
+ },
+ {
+ "include": "#integer_literals"
+ }
+ ]
+ },
+ "ffi": {
+ "begin": "^(\\s*)(foreign)\\s+(import|export)\\s+",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.foreign.haskell"
+ },
+ "3": {
+ "name": "keyword.other.$3.haskell"
+ }
+ },
+ "name": "meta.$3.foreign.haskell",
+ "end": "(?x) # Detect end of FFI block by decreasing indentation:\n (?=\\}|;) # Explicit indentation\n |^(?! # Implicit indentation: end match on newline *unless* the new line is either:\n \\1\\s+\\S # - more indented, or\n | \\s* # - starts with whitespace, followed by:\n (?: $ # - the end of the line (i.e. empty line), or\n |\\{-[^@] # - the start of a block comment, or\n |--+ # - the start of a single-line comment.\n (?![\\p{S}\\p{P}&&[^(),;\\[\\]{}`_\"']]).*$) # non-symbol\n # The double dash may not be followed by other operator characters\n # (then it would be an operator, not a comment)\n )\n",
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "match": "\\b(?<!')(ccall|cplusplus|dotnet|jvm|stdcall|prim|capi)\\s+",
+ "captures": {
+ "1": {
+ "name": "keyword.other.calling-convention.$1.haskell"
+ }
+ }
+ },
+ {
+ "begin": "(?=\")|(?=\\b(?<!')([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\b(?!'))",
+ "end": "(?=(::|∷)(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))",
+ "patterns": [
+ {
+ "include": "#comment_like"
+ },
+ {
+ "match": "(?x)\n \\b(?<!')(safe|unsafe|interruptible)\\b(?!')\n \\s*\n (\"(?:\\\\\"|[^\"])*\")?\n \\s*\n (?:\n (?:\\b(?<!'')([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\b(?!'))\n |(?:\\(\\s*(?!--+\\))([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*\\))\n )\n",
+ "captures": {
+ "1": {
+ "name": "keyword.other.safety.$1.haskell"
+ },
+ "2": {
+ "name": "entity.name.foreign.haskell",
+ "patterns": [
+ {
+ "include": "#string_literal"
+ }
+ ]
+ },
+ "3": {
+ "name": "entity.name.function.haskell"
+ },
+ "4": {
+ "name": "entity.name.function.infix.haskell"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n \\b(?<!')(safe|unsafe|interruptible)\\b(?!')\n \\s*\n (\"(?:\\\\\"|[^\"])*\")?\n \\s*$\n",
+ "captures": {
+ "1": {
+ "name": "keyword.other.safety.$1.haskell"
+ },
+ "2": {
+ "name": "entity.name.foreign.haskell",
+ "patterns": [
+ {
+ "include": "#string_literal"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "(?x)\n \"(?:\\\\\"|[^\"])*\"",
+ "captures": {
+ "0": {
+ "name": "entity.name.foreign.haskell",
+ "patterns": [
+ {
+ "include": "#string_literal"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "(?x)\n (?:\\b(?<!'')([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\b(?!'))\n |(?:(\\()\\s*(?!--+\\))([\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+)\\s*(\\)))\n",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.haskell"
+ },
+ "2": {
+ "name": "punctuation.paren.haskell"
+ },
+ "3": {
+ "name": "entity.name.function.infix.haskell"
+ },
+ "4": {
+ "name": "punctuation.paren.haskell"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "include": "#double_colon"
+ },
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ "inline_phase": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.bracket.haskell"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.bracket.haskell"
+ }
+ },
+ "name": "meta.inlining-phase.haskell",
+ "patterns": [
+ {
+ "match": "~",
+ "name": "punctuation.tilde.haskell"
+ },
+ {
+ "include": "#integer_literals"
+ },
+ {
+ "match": "\\w*",
+ "name": "invalid"
+ }
+ ]
+ },
+ "quasi_quote": {
+ "patterns": [
+ {
+ "begin": "(?x)\n (\\[)\n (e|d|p)?\n (\\|\\|?)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.quasi-quotation.begin.haskell"
+ },
+ "2": {
+ "name": "entity.name.quasi-quoter.haskell"
+ },
+ "3": {
+ "name": "keyword.operator.quasi-quotation.begin.haskell"
+ }
+ },
+ "end": "\\3\\]",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.quasi-quotation.end.haskell"
+ }
+ },
+ "name": "meta.quasi-quotation.haskell",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n (\\[)\n (t)\n (\\|\\|?)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.quasi-quotation.begin.haskell"
+ },
+ "2": {
+ "name": "entity.name.quasi-quoter.haskell"
+ },
+ "3": {
+ "name": "keyword.operator.quasi-quotation.begin.haskell"
+ }
+ },
+ "end": "\\3\\]",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.quasi-quotation.end.haskell"
+ }
+ },
+ "name": "meta.quasi-quotation.haskell",
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n (\\[)\n (?:(\\$\\$)|(\\$))?\n ((?:[^\\s\\p{S}\\p{P}]|[\\.'_])*)\n (\\|\\|?)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.quasi-quotation.begin.haskell"
+ },
+ "2": {
+ "name": "keyword.operator.prefix.double-dollar.haskell"
+ },
+ "3": {
+ "name": "keyword.operator.prefix.dollar.haskell"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#qualifier"
+ }
+ ],
+ "name": "entity.name.quasi-quoter.haskell"
+ },
+ "5": {
+ "name": "keyword.operator.quasi-quotation.begin.haskell"
+ }
+ },
+ "end": "\\5\\]",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.quasi-quotation.end.haskell"
+ }
+ },
+ "name": "meta.quasi-quotation.haskell"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.haskell",
+ "uuid": "5C034675-1F6D-497E-8073-369D37E2FD7D"
+}
diff --git a/node_modules/shiki/languages/hcl.tmLanguage.json b/node_modules/shiki/languages/hcl.tmLanguage.json
new file mode 100644
index 0000000..a7b44bf
--- /dev/null
+++ b/node_modules/shiki/languages/hcl.tmLanguage.json
@@ -0,0 +1,780 @@
+{
+ "scopeName": "source.hcl",
+ "name": "hcl",
+ "uuid": "a14187be-98d8-42c1-ac89-bb5eaccf911e",
+ "fileTypes": ["hcl"],
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#attribute_definition"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#expressions"
+ }
+ ],
+ "repository": {
+ "attribute_access": {
+ "begin": "\\.(?!\\*)",
+ "end": "[[:alpha:]][\\w-]*|\\d*",
+ "comment": "Matches traversal attribute access such as .attr",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.accessor.hcl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "(?!null|false|true)[[:alpha:]][\\w-]*",
+ "comment": "Attribute name",
+ "name": "variable.other.member.hcl"
+ },
+ {
+ "match": "\\d+",
+ "comment": "Optional attribute index",
+ "name": "constant.numeric.integer.hcl"
+ }
+ ]
+ }
+ }
+ },
+ "attribute_definition": {
+ "name": "variable.declaration.hcl",
+ "match": "(\\()?(\\b(?!null\\b|false\\b|true\\b)[[:alpha:]][[:alnum:]_-]*)(\\))?\\s*(\\=(?!\\=|\\>))\\s*",
+ "comment": "Identifier \"=\" with optional parens",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.parens.begin.hcl"
+ },
+ "2": {
+ "name": "variable.other.readwrite.hcl"
+ },
+ "3": {
+ "name": "punctuation.section.parens.end.hcl"
+ },
+ "4": {
+ "name": "keyword.operator.assignment.hcl"
+ }
+ }
+ },
+ "attribute_splat": {
+ "begin": "\\.",
+ "end": "\\*",
+ "comment": "Legacy attribute-only splat",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.accessor.hcl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.splat.hcl"
+ }
+ }
+ },
+ "block": {
+ "name": "meta.block.hcl",
+ "begin": "([\\w][\\-\\w]*)([\\s\\\"\\-\\w]*)(\\{)",
+ "end": "\\}",
+ "comment": "This will match HCL blocks like `thing1 \"one\" \"two\" {` or `thing2 {`",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\b",
+ "comment": "Block type",
+ "name": "entity.name.type.hcl"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "[\\\"\\-\\w]+",
+ "comment": "Block label",
+ "name": "variable.other.enummember.hcl"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.section.block.begin.hcl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.hcl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#attribute_definition"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#expressions"
+ }
+ ]
+ },
+ "block_inline_comments": {
+ "name": "comment.block.hcl",
+ "begin": "/\\*",
+ "end": "\\*/",
+ "comment": "Inline comments start with the /* sequence and end with the */ sequence, and may have any characters within except the ending sequence. An inline comment is considered equivalent to a whitespace sequence",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.hcl"
+ }
+ }
+ },
+ "brackets": {
+ "begin": "\\[",
+ "end": "\\]",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.brackets.begin.hcl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.brackets.end.hcl"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.operator.splat.hcl",
+ "match": "\\*",
+ "comment": "Splat operator"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#inline_for_expression"
+ },
+ {
+ "include": "#inline_if_expression"
+ },
+ {
+ "include": "#expressions"
+ },
+ {
+ "include": "#local_identifiers"
+ }
+ ]
+ },
+ "char_escapes": {
+ "name": "constant.character.escape.hcl",
+ "match": "\\\\[nrt\"\\\\]|\\\\u(\\h{8}|\\h{4})",
+ "comment": "Character Escapes"
+ },
+ "comma": {
+ "name": "punctuation.separator.hcl",
+ "match": "\\,",
+ "comment": "Commas - used in certain expressions"
+ },
+ "comments": {
+ "patterns": [
+ {
+ "include": "#hash_line_comments"
+ },
+ {
+ "include": "#double_slash_line_comments"
+ },
+ {
+ "include": "#block_inline_comments"
+ }
+ ]
+ },
+ "double_slash_line_comments": {
+ "name": "comment.line.double-slash.hcl",
+ "begin": "//",
+ "end": "$\\n?",
+ "comment": "Line comments start with // sequence and end with the next newline sequence. A line comment is considered equivalent to a newline sequence",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.hcl"
+ }
+ }
+ },
+ "expressions": {
+ "patterns": [
+ {
+ "include": "#literal_values"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#tuple_for_expression"
+ },
+ {
+ "include": "#object_for_expression"
+ },
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#objects"
+ },
+ {
+ "include": "#attribute_access"
+ },
+ {
+ "include": "#attribute_splat"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#parens"
+ }
+ ]
+ },
+ "for_expression_body": {
+ "patterns": [
+ {
+ "name": "keyword.operator.word.hcl",
+ "match": "\\bin\\b",
+ "comment": "in keyword"
+ },
+ {
+ "name": "keyword.control.conditional.hcl",
+ "match": "\\bif\\b",
+ "comment": "if keyword"
+ },
+ {
+ "name": "keyword.operator.hcl",
+ "match": "\\:"
+ },
+ {
+ "include": "#expressions"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#local_identifiers"
+ }
+ ]
+ },
+ "functions": {
+ "name": "meta.function-call.hcl",
+ "begin": "(\\w+)(\\()",
+ "end": "\\)",
+ "comment": "Built-in function calls",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\b",
+ "name": "support.function.builtin.hcl"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.section.parens.begin.hcl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.hcl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#expressions"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ },
+ "hash_line_comments": {
+ "name": "comment.line.number-sign.hcl",
+ "begin": "#",
+ "end": "$\\n?",
+ "comment": "Line comments start with # sequence and end with the next newline sequence. A line comment is considered equivalent to a newline sequence",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.hcl"
+ }
+ }
+ },
+ "hcl_type_keywords": {
+ "name": "storage.type.hcl",
+ "match": "\\b(any|string|number|bool|list|set|map|tuple|object)\\b",
+ "comment": "Type keywords known to HCL."
+ },
+ "heredoc": {
+ "name": "string.unquoted.heredoc.hcl",
+ "begin": "(\\<\\<\\-?)\\s*(\\w+)\\s*$",
+ "end": "^\\s*\\2\\s*$",
+ "comment": "String Heredoc",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.heredoc.hcl"
+ },
+ "2": {
+ "name": "keyword.control.heredoc.hcl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.heredoc.hcl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string_interpolation"
+ }
+ ]
+ },
+ "inline_for_expression": {
+ "begin": "(for)\\b",
+ "end": "\\n",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.hcl"
+ }
+ },
+ "patterns": [
+ {
+ "name": "storage.type.function.hcl",
+ "match": "\\=\\>"
+ },
+ {
+ "include": "#for_expression_body"
+ }
+ ]
+ },
+ "inline_if_expression": {
+ "begin": "(if)\\b",
+ "end": "\\n",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.conditional.hcl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expressions"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#local_identifiers"
+ }
+ ]
+ },
+ "language_constants": {
+ "name": "constant.language.hcl",
+ "match": "\\b(true|false|null)\\b",
+ "comment": "Language Constants"
+ },
+ "literal_values": {
+ "patterns": [
+ {
+ "include": "#numeric_literals"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "include": "#string_literals"
+ },
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#hcl_type_keywords"
+ }
+ ]
+ },
+ "local_identifiers": {
+ "name": "variable.other.readwrite.hcl",
+ "match": "\\b(?!null|false|true)[[:alpha:]][[:alnum:]_-]*\\b",
+ "comment": "Local Identifiers"
+ },
+ "numeric_literals": {
+ "patterns": [
+ {
+ "name": "constant.numeric.float.hcl",
+ "match": "\\b\\d+([Ee][+-]?)\\d+\\b",
+ "comment": "Integer, no fraction, optional exponent",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.exponent.hcl"
+ }
+ }
+ },
+ {
+ "name": "constant.numeric.float.hcl",
+ "match": "\\b\\d+(\\.)\\d+(?:([Ee][+-]?)\\d+)?\\b",
+ "comment": "Integer, fraction, optional exponent",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.decimal.hcl"
+ },
+ "2": {
+ "name": "punctuation.separator.exponent.hcl"
+ }
+ }
+ },
+ {
+ "name": "constant.numeric.integer.hcl",
+ "match": "\\b\\d+\\b",
+ "comment": "Integers"
+ }
+ ]
+ },
+ "object_for_expression": {
+ "begin": "(\\{)\\s?(for)\\b",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.braces.begin.hcl"
+ },
+ "2": {
+ "name": "keyword.control.hcl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.braces.end.hcl"
+ }
+ },
+ "patterns": [
+ {
+ "name": "storage.type.function.hcl",
+ "match": "\\=\\>"
+ },
+ {
+ "include": "#for_expression_body"
+ }
+ ]
+ },
+ "object_key_values": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#literal_values"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#tuple_for_expression"
+ },
+ {
+ "include": "#object_for_expression"
+ },
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#functions"
+ }
+ ]
+ },
+ "objects": {
+ "name": "meta.braces.hcl",
+ "begin": "\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.braces.begin.hcl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.braces.end.hcl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#objects"
+ },
+ {
+ "include": "#inline_for_expression"
+ },
+ {
+ "include": "#inline_if_expression"
+ },
+ {
+ "match": "\\b((?!null|false|true)[[:alpha:]][[:alnum:]_-]*)\\s*(\\=\\>?)\\s*",
+ "comment": "Literal, named object key",
+ "captures": {
+ "1": {
+ "name": "meta.mapping.key.hcl variable.other.readwrite.hcl"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.hcl",
+ "patterns": [
+ {
+ "match": "\\=\\>",
+ "name": "storage.type.function.hcl"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "\\b((\").*(\"))\\s*(\\=)\\s*",
+ "comment": "String object key",
+ "captures": {
+ "1": {
+ "name": "meta.mapping.key.hcl string.quoted.double.hcl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.hcl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.hcl"
+ },
+ "4": {
+ "name": "keyword.operator.hcl"
+ }
+ }
+ },
+ {
+ "name": "meta.mapping.key.hcl",
+ "begin": "^\\s*\\(",
+ "end": "(\\))\\s*(=|:)\\s*",
+ "comment": "Computed object key (any expression between parens)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.hcl"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.end.hcl"
+ },
+ "2": {
+ "name": "keyword.operator.hcl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attribute_access"
+ },
+ {
+ "include": "#attribute_splat"
+ }
+ ]
+ },
+ {
+ "include": "#object_key_values"
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "name": "keyword.operator.hcl",
+ "match": "\\>\\="
+ },
+ {
+ "name": "keyword.operator.hcl",
+ "match": "\\<\\="
+ },
+ {
+ "name": "keyword.operator.hcl",
+ "match": "\\=\\="
+ },
+ {
+ "name": "keyword.operator.hcl",
+ "match": "\\!\\="
+ },
+ {
+ "name": "keyword.operator.arithmetic.hcl",
+ "match": "\\+"
+ },
+ {
+ "name": "keyword.operator.arithmetic.hcl",
+ "match": "\\-"
+ },
+ {
+ "name": "keyword.operator.arithmetic.hcl",
+ "match": "\\*"
+ },
+ {
+ "name": "keyword.operator.arithmetic.hcl",
+ "match": "\\/"
+ },
+ {
+ "name": "keyword.operator.arithmetic.hcl",
+ "match": "\\%"
+ },
+ {
+ "name": "keyword.operator.logical.hcl",
+ "match": "\\&\\&"
+ },
+ {
+ "name": "keyword.operator.logical.hcl",
+ "match": "\\|\\|"
+ },
+ {
+ "name": "keyword.operator.logical.hcl",
+ "match": "\\!"
+ },
+ {
+ "name": "keyword.operator.hcl",
+ "match": "\\>"
+ },
+ {
+ "name": "keyword.operator.hcl",
+ "match": "\\<"
+ },
+ {
+ "name": "keyword.operator.hcl",
+ "match": "\\?"
+ },
+ {
+ "name": "keyword.operator.hcl",
+ "match": "\\.\\.\\."
+ },
+ {
+ "match": "\\:"
+ }
+ ]
+ },
+ "parens": {
+ "begin": "\\(",
+ "end": "\\)",
+ "comment": "Parens - matched *after* function syntax",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.hcl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.hcl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#expressions"
+ }
+ ]
+ },
+ "string_interpolation": {
+ "name": "meta.interpolation.hcl",
+ "begin": "(?<![%$])([%$]{)",
+ "end": "\\}",
+ "comment": "String interpolation",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.interpolation.begin.hcl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.interpolation.end.hcl"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.operator.template.left.trim.hcl",
+ "match": "\\~\\s",
+ "comment": "Trim left whitespace"
+ },
+ {
+ "name": "keyword.operator.template.right.trim.hcl",
+ "match": "\\s\\~",
+ "comment": "Trim right whitespace"
+ },
+ {
+ "name": "keyword.control.hcl",
+ "match": "\\b(if|else|endif|for|in|endfor)\\b",
+ "comment": "if/else/endif and for/in/endfor directives"
+ },
+ {
+ "include": "#expressions"
+ },
+ {
+ "include": "#local_identifiers"
+ }
+ ]
+ },
+ "string_literals": {
+ "name": "string.quoted.double.hcl",
+ "begin": "\"",
+ "end": "\"",
+ "comment": "Strings",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.hcl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.hcl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string_interpolation"
+ },
+ {
+ "include": "#char_escapes"
+ }
+ ]
+ },
+ "tuple_for_expression": {
+ "begin": "(\\[)\\s?(for)\\b",
+ "end": "\\]",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.brackets.begin.hcl"
+ },
+ "2": {
+ "name": "keyword.control.hcl"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.brackets.end.hcl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#for_expression_body"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/hjson.tmLanguage.json b/node_modules/shiki/languages/hjson.tmLanguage.json
new file mode 100644
index 0000000..d5466a9
--- /dev/null
+++ b/node_modules/shiki/languages/hjson.tmLanguage.json
@@ -0,0 +1,819 @@
+{
+ "fileTypes": ["hjson"],
+ "foldingStartMarker": "(?x: # turn on extended mode\n ^ # a line beginning with\n \\s* # some optional space\n [{\\[] # the start of an object or array\n (?! # but not followed by\n .* # whatever\n [}\\]] # and the close of an object or array\n ,? # an optional comma\n \\s* # some optional space\n $ # at the end of the line\n )\n | # ...or...\n [{\\[] # the start of an object or array\n \\s* # some optional space\n $ # at the end of the line\n )",
+ "foldingStopMarker": "(?x: # turn on extended mode\n ^ # a line beginning with\n \\s* # some optional space\n [}\\]] # and the close of an object or array\n )",
+ "keyEquivalent": "^~J",
+ "name": "hjson",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#value"
+ },
+ {
+ "match": "[^\\s]",
+ "name": "invalid.illegal.excess-characters.hjson"
+ }
+ ],
+ "repository": {
+ "array": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.begin.hjson"
+ }
+ },
+ "end": "(\\])(?:\\s*([^,\\s]+))?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.array.end.hjson"
+ },
+ "2": {
+ "name": "invalid.illegal.value.hjson"
+ }
+ },
+ "name": "meta.structure.array.hjson",
+ "patterns": [
+ {
+ "include": "#arrayContent"
+ }
+ ]
+ },
+ "arrayArray": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.begin.hjson"
+ }
+ },
+ "end": "(\\])(?:\\s*([^,\\s\\]]+))?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.array.end.hjson"
+ },
+ "2": {
+ "name": "invalid.illegal.value.hjson"
+ }
+ },
+ "name": "meta.structure.array.hjson",
+ "patterns": [
+ {
+ "include": "#arrayContent"
+ }
+ ]
+ },
+ "arrayConstant": {
+ "captures": {
+ "1": {
+ "name": "constant.language.hjson"
+ },
+ "2": {
+ "name": "punctuation.separator.array.after-const.hjson"
+ }
+ },
+ "match": "\\b(true|false|null)(?:[\\t ]*(?=,)|[\\t ]*(?:(,)[\\t ]*)?(?=$|#|/\\*|//|\\]))"
+ },
+ "arrayContent": {
+ "name": "meta.structure.array.hjson",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#arrayValue"
+ },
+ {
+ "begin": "(?<=\\[)|,",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.dictionary.pair.hjson"
+ }
+ },
+ "end": "(?=[^\\s,/#])|(?=/[^/*])",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": ",",
+ "name": "invalid.illegal.extra-comma.hjson"
+ }
+ ]
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.array.hjson"
+ },
+ {
+ "match": "[^\\s\\]]",
+ "name": "invalid.illegal.expected-array-separator.hjson"
+ }
+ ]
+ },
+ "arrayJstring": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.hjson"
+ }
+ },
+ "end": "(\")(?:\\s*((?:[^,\\s\\]#/]|/[^/*])+))?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.hjson"
+ },
+ "2": {
+ "name": "invalid.illegal.value.hjson"
+ }
+ },
+ "name": "string.quoted.double.hjson",
+ "patterns": [
+ {
+ "include": "#jstringDoubleContent"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.hjson"
+ }
+ },
+ "end": "(')(?:\\s*((?:[^,\\s\\]#/]|/[^/*])+))?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.hjson"
+ },
+ "2": {
+ "name": "invalid.illegal.value.hjson"
+ }
+ },
+ "name": "string.quoted.single.hjson",
+ "patterns": [
+ {
+ "include": "#jstringSingleContent"
+ }
+ ]
+ }
+ ]
+ },
+ "arrayMstring": {
+ "begin": "'''",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.hjson"
+ }
+ },
+ "end": "(''')(?:\\s*((?:[^,\\s\\]#/]|/[^/*])+))?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.hjson"
+ },
+ "2": {
+ "name": "invalid.illegal.value.hjson"
+ }
+ },
+ "name": "string.quoted.multiline.hjson"
+ },
+ "arrayNumber": {
+ "captures": {
+ "1": {
+ "name": "constant.numeric.hjson"
+ },
+ "2": {
+ "name": "punctuation.separator.array.after-num.hjson"
+ }
+ },
+ "match": "(-?(?:0|(?:[1-9]\\d*))(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)(?:[\\t ]*(?=,)|[\\t ]*(?:(,)[\\t ]*)?(?=$|#|/\\*|//|\\]))"
+ },
+ "arrayObject": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.dictionary.begin.hjson"
+ }
+ },
+ "end": "(\\}|(?<=\\}))(?:\\s*([^,\\s\\]]+))?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.dictionary.end.hjson"
+ },
+ "2": {
+ "name": "invalid.illegal.value.hjson"
+ }
+ },
+ "name": "meta.structure.dictionary.hjson",
+ "patterns": [
+ {
+ "include": "#objectContent"
+ }
+ ]
+ },
+ "arrayString": {
+ "patterns": [
+ {
+ "include": "#arrayMstring"
+ },
+ {
+ "include": "#arrayJstring"
+ },
+ {
+ "include": "#ustring"
+ }
+ ]
+ },
+ "arrayValue": {
+ "patterns": [
+ {
+ "include": "#arrayNumber"
+ },
+ {
+ "include": "#arrayConstant"
+ },
+ {
+ "include": "#arrayString"
+ },
+ {
+ "include": "#arrayObject"
+ },
+ {
+ "include": "#arrayArray"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.hjson"
+ }
+ },
+ "match": "^\\s*(#).*(?:\\n)?",
+ "name": "comment.line.hash"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.hjson"
+ }
+ },
+ "match": "^\\s*(//).*(?:\\n)?",
+ "name": "comment.line.double-slash"
+ },
+ {
+ "begin": "^\\s*/\\*",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.hjson"
+ }
+ },
+ "end": "\\*/(?:\\s*\\n)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.hjson"
+ }
+ },
+ "name": "comment.block.double-slash"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.hjson"
+ }
+ },
+ "match": "(#)[^\\n]*",
+ "name": "comment.line.hash"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.hjson"
+ }
+ },
+ "match": "(//)[^\\n]*",
+ "name": "comment.line.double-slash"
+ },
+ {
+ "begin": "/\\*",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.hjson"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.hjson"
+ }
+ },
+ "name": "comment.block.double-slash"
+ }
+ ]
+ },
+ "commentsNewline": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.hjson"
+ }
+ },
+ "match": "(#).*\\n",
+ "name": "comment.line.hash"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.hjson"
+ }
+ },
+ "match": "(//).*\\n",
+ "name": "comment.line.double-slash"
+ },
+ {
+ "begin": "/\\*",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.hjson"
+ }
+ },
+ "end": "\\*/(\\s*\\n)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.hjson"
+ }
+ },
+ "name": "comment.block.double-slash"
+ }
+ ]
+ },
+ "constant": {
+ "captures": {
+ "1": {
+ "name": "constant.language.hjson"
+ }
+ },
+ "match": "\\b(true|false|null)[\\t ]*(?=$|#|/\\*|//|\\])"
+ },
+ "jstring": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.hjson"
+ }
+ },
+ "end": "(\")(?:\\s*((?:[^\\s#/]|/[^/*]).*)$)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.hjson"
+ },
+ "2": {
+ "name": "invalid.illegal.value.hjson"
+ }
+ },
+ "name": "string.quoted.double.hjson",
+ "patterns": [
+ {
+ "include": "#jstringDoubleContent"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.hjson"
+ }
+ },
+ "end": "(')(?:\\s*((?:[^\\s#/]|/[^/*]).*)$)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.hjson"
+ },
+ "2": {
+ "name": "invalid.illegal.value.hjson"
+ }
+ },
+ "name": "string.quoted.single.hjson",
+ "patterns": [
+ {
+ "include": "#jstringSingleContent"
+ }
+ ]
+ }
+ ]
+ },
+ "jstringDoubleContent": {
+ "patterns": [
+ {
+ "match": "\\\\(?:[\"'\\\\\\/bfnrt]|u[0-9a-fA-F]{4})",
+ "name": "constant.character.escape.hjson"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unrecognized-string-escape.hjson"
+ },
+ {
+ "match": "[^\"]*[^\\n\\r\"\\\\]$",
+ "name": "invalid.illegal.string.hjson"
+ }
+ ]
+ },
+ "jstringSingleContent": {
+ "patterns": [
+ {
+ "match": "\\\\(?:[\"'\\\\\\/bfnrt]|u[0-9a-fA-F]{4})",
+ "name": "constant.character.escape.hjson"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unrecognized-string-escape.hjson"
+ },
+ {
+ "match": "[^']*[^\\n\\r'\\\\]$",
+ "name": "invalid.illegal.string.hjson"
+ }
+ ]
+ },
+ "key": {
+ "begin": "(?x:\n (\n (?:[^:,\\{\\}\\[\\]\\s\"'][^:,\\{\\}\\[\\]\\s]*) |\n (?: # json string w/ '\n '\n (?:\n [^\\\\'] | # anything but an escape character or quote\n (\\\\(?:[\"'\\\\\\/bfnrt]|u[0-9a-fA-F]{4})) | # escape characters\n (\\\\.) # bad escape characters\n )*\n '\n ) |\n (?: # json string w/ \"\n \"\n (?:\n [^\\\\\"] | # anything but an escape character or quote\n (\\\\(?:[\"'\\\\\\/bfnrt]|u[0-9a-fA-F]{4})) | # escape characters\n (\\\\.) # bad escape characters\n )*\n \"\n )\n )\n \\s*\n (?!\\n)\n ([,\\{\\}\\[\\]]*)\n )",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.structure.key-value.begin.hjson"
+ },
+ "1": {
+ "name": "support.type.property-name.hjson"
+ },
+ "2": {
+ "name": "constant.character.escape.hjson"
+ },
+ "3": {
+ "name": "invalid.illegal.unrecognized-string-escape.hjson"
+ },
+ "4": {
+ "name": "constant.character.escape.hjson"
+ },
+ "5": {
+ "name": "invalid.illegal.unrecognized-string-escape.hjson"
+ },
+ "6": {
+ "name": "invalid.illegal.separator.hjson"
+ },
+ "7": {
+ "name": "invalid.illegal.property-name.hjson"
+ }
+ },
+ "end": "(?<!^|:)\\s*\\n|(?=})|(,)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.dictionary.pair.hjson"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#commentsNewline"
+ },
+ {
+ "include": "#keyValue"
+ },
+ {
+ "match": "[^\\s]",
+ "name": "invalid.illegal.object-property.hjson"
+ }
+ ]
+ },
+ "keyValue": {
+ "begin": "(?x:\n \\s*\n (:)\n \\s* # capture the line ending if there is no value on the same line\n ([,\\}\\]]*)\n )",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.dictionary.key-value.hjson"
+ },
+ "2": {
+ "name": "invalid.illegal.object-property.hjson"
+ }
+ },
+ "end": "(?<!^)\\s*(?=\\n)|(?=[},])",
+ "name": "meta.structure.key-value.hjson",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "^\\s+"
+ },
+ {
+ "include": "#objectValue"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.object-property.closing-bracket.hjson"
+ }
+ },
+ "match": "^\\s*(\\})"
+ },
+ {
+ "match": "[^\\s]",
+ "name": "invalid.illegal.object-property.hjson"
+ }
+ ]
+ },
+ "mstring": {
+ "begin": "'''",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.hjson"
+ }
+ },
+ "end": "(''')(?:\\s*((?:[^\\s#/]|/[^/*]).*)$)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.hjson"
+ },
+ "2": {
+ "name": "invalid.illegal.value.hjson"
+ }
+ },
+ "name": "string.quoted.multiline.hjson"
+ },
+ "number": {
+ "captures": {
+ "1": {
+ "name": "constant.numeric.hjson"
+ }
+ },
+ "match": "(-?(?:0|(?:[1-9]\\d*))(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)[\\t ]*(?=$|#|/\\*|//|\\])"
+ },
+ "object": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.dictionary.begin.hjson"
+ }
+ },
+ "end": "(\\}|(?<=\\}))(?:\\s*([^,\\s]+))?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.dictionary.end.hjson"
+ },
+ "2": {
+ "name": "invalid.illegal.value.hjson"
+ }
+ },
+ "name": "meta.structure.dictionary.hjson",
+ "patterns": [
+ {
+ "include": "#objectContent"
+ }
+ ]
+ },
+ "objectArray": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.begin.hjson"
+ }
+ },
+ "end": "(\\])(?:\\s*([^,\\s\\}]+))?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.array.end.hjson"
+ },
+ "2": {
+ "name": "invalid.illegal.value.hjson"
+ }
+ },
+ "name": "meta.structure.array.hjson",
+ "patterns": [
+ {
+ "include": "#arrayContent"
+ }
+ ]
+ },
+ "objectConstant": {
+ "captures": {
+ "1": {
+ "name": "constant.language.hjson"
+ },
+ "2": {
+ "name": "punctuation.separator.dictionary.pair.after-const.hjson"
+ }
+ },
+ "match": "\\b(true|false|null)(?:[\\t ]*(?=,)|[\\t ]*(?:(,)[\\t ]*)?(?=$|#|/\\*|//|\\}))"
+ },
+ "objectContent": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#key"
+ },
+ {
+ "match": ":[.|\\s]",
+ "name": "invalid.illegal.object-property.hjson"
+ },
+ {
+ "begin": "(?<=\\{|,)|,",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.dictionary.pair.hjson"
+ }
+ },
+ "end": "(?=[^\\s,/#])|(?=/[^/*])",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": ",",
+ "name": "invalid.illegal.extra-comma.hjson"
+ }
+ ]
+ },
+ {
+ "match": "[^\\s]",
+ "name": "invalid.illegal.object-property.hjson"
+ }
+ ]
+ },
+ "objectJstring": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.hjson"
+ }
+ },
+ "end": "(\")(?:\\s*((?:[^,\\s\\}#/]|/[^/*])+))?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.hjson"
+ },
+ "2": {
+ "name": "invalid.illegal.value.hjson"
+ }
+ },
+ "name": "string.quoted.double.hjson",
+ "patterns": [
+ {
+ "include": "#jstringDoubleContent"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.hjson"
+ }
+ },
+ "end": "(')(?:\\s*((?:[^,\\s\\}#/]|/[^/*])+))?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.hjson"
+ },
+ "2": {
+ "name": "invalid.illegal.value.hjson"
+ }
+ },
+ "name": "string.quoted.single.hjson",
+ "patterns": [
+ {
+ "include": "#jstringSingleContent"
+ }
+ ]
+ }
+ ]
+ },
+ "objectMstring": {
+ "begin": "'''",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.hjson"
+ }
+ },
+ "end": "(''')(?:\\s*((?:[^,\\s\\}#/]|/[^/*])+))?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.hjson"
+ },
+ "2": {
+ "name": "invalid.illegal.value.hjson"
+ }
+ },
+ "name": "string.quoted.multiline.hjson"
+ },
+ "objectNumber": {
+ "captures": {
+ "1": {
+ "name": "constant.numeric.hjson"
+ },
+ "2": {
+ "name": "punctuation.separator.dictionary.pair.after-num.hjson"
+ }
+ },
+ "match": "(-?(?:0|(?:[1-9]\\d*))(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)(?:[\\t ]*(?=,)|[\\t ]*(?:(,)[\\t ]*)?(?=$|#|/\\*|//|\\}))"
+ },
+ "objectObject": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.dictionary.begin.hjson"
+ }
+ },
+ "end": "(\\}|(?<=\\})\\}?)(?:\\s*([^,\\s}]+))?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.dictionary.end.hjson"
+ },
+ "2": {
+ "name": "invalid.illegal.value.hjson"
+ }
+ },
+ "name": "meta.structure.dictionary.hjson",
+ "patterns": [
+ {
+ "include": "#objectContent"
+ }
+ ]
+ },
+ "objectString": {
+ "patterns": [
+ {
+ "include": "#objectMstring"
+ },
+ {
+ "include": "#objectJstring"
+ },
+ {
+ "include": "#ustring"
+ }
+ ]
+ },
+ "objectValue": {
+ "patterns": [
+ {
+ "include": "#objectNumber"
+ },
+ {
+ "include": "#objectConstant"
+ },
+ {
+ "include": "#objectString"
+ },
+ {
+ "include": "#objectObject"
+ },
+ {
+ "include": "#objectArray"
+ }
+ ]
+ },
+ "string": {
+ "patterns": [
+ {
+ "include": "#mstring"
+ },
+ {
+ "include": "#jstring"
+ },
+ {
+ "include": "#ustring"
+ }
+ ]
+ },
+ "ustring": {
+ "match": "([^:,\\{\\[\\}\\]\\s].*)$",
+ "name": "string.quoted.none.hjson"
+ },
+ "value": {
+ "patterns": [
+ {
+ "include": "#number"
+ },
+ {
+ "include": "#constant"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#object"
+ },
+ {
+ "include": "#array"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.hjson"
+}
diff --git a/node_modules/shiki/languages/hlsl.tmLanguage.json b/node_modules/shiki/languages/hlsl.tmLanguage.json
new file mode 100644
index 0000000..bdcee21
--- /dev/null
+++ b/node_modules/shiki/languages/hlsl.tmLanguage.json
@@ -0,0 +1,217 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/tgjones/shaders-tmLanguage/blob/master/grammars/hlsl.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/tgjones/shaders-tmLanguage/commit/87c0dca3a39170dbd7ee7e277db4f915fb2de14a",
+ "name": "hlsl",
+ "scopeName": "source.hlsl",
+ "patterns": [
+ {
+ "name": "comment.line.block.hlsl",
+ "begin": "/\\*",
+ "end": "\\*/"
+ },
+ {
+ "name": "comment.line.double-slash.hlsl",
+ "begin": "//",
+ "end": "$"
+ },
+ {
+ "name": "constant.numeric.decimal.hlsl",
+ "match": "\\b[0-9]+\\.[0-9]*(F|f)?\\b"
+ },
+ {
+ "name": "constant.numeric.decimal.hlsl",
+ "match": "(\\.([0-9]+)(F|f)?)\\b"
+ },
+ {
+ "name": "constant.numeric.decimal.hlsl",
+ "match": "\\b([0-9]+(F|f)?)\\b"
+ },
+ {
+ "name": "constant.numeric.hex.hlsl",
+ "match": "\\b(0(x|X)[0-9a-fA-F]+)\\b"
+ },
+ {
+ "name": "constant.language.hlsl",
+ "match": "\\b(false|true)\\b"
+ },
+ {
+ "name": "keyword.preprocessor.hlsl",
+ "match": "^\\s*#\\s*(define|elif|else|endif|ifdef|ifndef|if|undef|include|line|error|pragma)"
+ },
+ {
+ "name": "keyword.control.hlsl",
+ "match": "\\b(break|case|continue|default|discard|do|else|for|if|return|switch|while)\\b"
+ },
+ {
+ "name": "keyword.control.fx.hlsl",
+ "match": "\\b(compile)\\b"
+ },
+ {
+ "name": "keyword.typealias.hlsl",
+ "match": "\\b(typedef)\\b"
+ },
+ {
+ "name": "storage.type.basic.hlsl",
+ "match": "\\b(bool([1-4](x[1-4])?)?|double([1-4](x[1-4])?)?|dword|float([1-4](x[1-4])?)?|half([1-4](x[1-4])?)?|int([1-4](x[1-4])?)?|matrix|min10float([1-4](x[1-4])?)?|min12int([1-4](x[1-4])?)?|min16float([1-4](x[1-4])?)?|min16int([1-4](x[1-4])?)?|min16uint([1-4](x[1-4])?)?|unsigned|uint([1-4](x[1-4])?)?|vector|void)\\b"
+ },
+ {
+ "name": "support.function.hlsl",
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)(?=[\\s]*\\()"
+ },
+ {
+ "name": "support.variable.semantic.hlsl",
+ "match": "(?<=\\:\\s|\\:)(?i:BINORMAL[0-9]*|BLENDINDICES[0-9]*|BLENDWEIGHT[0-9]*|COLOR[0-9]*|NORMAL[0-9]*|POSITIONT|POSITION|PSIZE[0-9]*|TANGENT[0-9]*|TEXCOORD[0-9]*|FOG|TESSFACTOR[0-9]*|VFACE|VPOS|DEPTH[0-9]*)\\b"
+ },
+ {
+ "name": "support.variable.semantic.sm4.hlsl",
+ "match": "(?<=\\:\\s|\\:)(?i:SV_ClipDistance[0-9]*|SV_CullDistance[0-9]*|SV_Coverage|SV_Depth|SV_DepthGreaterEqual[0-9]*|SV_DepthLessEqual[0-9]*|SV_InstanceID|SV_IsFrontFace|SV_Position|SV_RenderTargetArrayIndex|SV_SampleIndex|SV_StencilRef|SV_Target[0-7]?|SV_VertexID|SV_ViewportArrayIndex)\\b"
+ },
+ {
+ "name": "support.variable.semantic.sm5.hlsl",
+ "match": "(?<=\\:\\s|\\:)(?i:SV_DispatchThreadID|SV_DomainLocation|SV_GroupID|SV_GroupIndex|SV_GroupThreadID|SV_GSInstanceID|SV_InsideTessFactor|SV_OutputControlPointID|SV_TessFactor)\\b"
+ },
+ {
+ "name": "support.variable.semantic.sm5_1.hlsl",
+ "match": "(?<=\\:\\s|\\:)(?i:SV_InnerCoverage|SV_StencilRef)\\b"
+ },
+ {
+ "name": "storage.modifier.hlsl",
+ "match": "\\b(column_major|const|export|extern|globallycoherent|groupshared|inline|inout|in|out|precise|row_major|shared|static|uniform|volatile)\\b"
+ },
+ {
+ "name": "storage.modifier.float.hlsl",
+ "match": "\\b(snorm|unorm)\\b"
+ },
+ {
+ "name": "storage.modifier.postfix.hlsl",
+ "match": "\\b(packoffset|register)\\b"
+ },
+ {
+ "name": "storage.modifier.interpolation.hlsl",
+ "match": "\\b(centroid|linear|nointerpolation|noperspective|sample)\\b"
+ },
+ {
+ "name": "storage.modifier.geometryshader.hlsl",
+ "match": "\\b(lineadj|line|point|triangle|triangleadj)\\b"
+ },
+ {
+ "name": "support.type.other.hlsl",
+ "match": "\\b(string)\\b"
+ },
+ {
+ "name": "support.type.object.hlsl",
+ "match": "\\b(AppendStructuredBuffer|Buffer|ByteAddressBuffer|ConstantBuffer|ConsumeStructuredBuffer|InputPatch|OutputPatch)\\b"
+ },
+ {
+ "name": "support.type.object.rasterizerordered.hlsl",
+ "match": "\\b(RasterizerOrderedBuffer|RasterizerOrderedByteAddressBuffer|RasterizerOrderedStructuredBuffer|RasterizerOrderedTexture1D|RasterizerOrderedTexture1DArray|RasterizerOrderedTexture2D|RasterizerOrderedTexture2DArray|RasterizerOrderedTexture3D)\\b"
+ },
+ {
+ "name": "support.type.object.rw.hlsl",
+ "match": "\\b(RWBuffer|RWByteAddressBuffer|RWStructuredBuffer|RWTexture1D|RWTexture1DArray|RWTexture2D|RWTexture2DArray|RWTexture3D)\\b"
+ },
+ {
+ "name": "support.type.object.geometryshader.hlsl",
+ "match": "\\b(LineStream|PointStream|TriangleStream)\\b"
+ },
+ {
+ "name": "support.type.sampler.legacy.hlsl",
+ "match": "\\b(sampler|sampler1D|sampler2D|sampler3D|samplerCUBE|sampler_state)\\b"
+ },
+ {
+ "name": "support.type.sampler.hlsl",
+ "match": "\\b(SamplerState|SamplerComparisonState)\\b"
+ },
+ {
+ "name": "support.type.texture.legacy.hlsl",
+ "match": "\\b(texture2D|textureCUBE)\\b"
+ },
+ {
+ "name": "support.type.texture.hlsl",
+ "match": "\\b(Texture1D|Texture1DArray|Texture2D|Texture2DArray|Texture2DMS|Texture2DMSArray|Texture3D|TextureCube|TextureCubeArray)\\b"
+ },
+ {
+ "name": "storage.type.structured.hlsl",
+ "match": "\\b(cbuffer|class|interface|namespace|struct|tbuffer)\\b"
+ },
+ {
+ "name": "support.constant.property-value.fx.hlsl",
+ "match": "\\b(FALSE|TRUE|NULL)\\b"
+ },
+ {
+ "name": "support.type.fx.hlsl",
+ "match": "\\b(BlendState|DepthStencilState|RasterizerState)\\b"
+ },
+ {
+ "name": "storage.type.fx.technique.hlsl",
+ "match": "\\b(technique|Technique|technique10|technique11|pass)\\b"
+ },
+ {
+ "name": "meta.object-literal.key.fx.blendstate.hlsl",
+ "match": "\\b(AlphaToCoverageEnable|BlendEnable|SrcBlend|DestBlend|BlendOp|SrcBlendAlpha|DestBlendAlpha|BlendOpAlpha|RenderTargetWriteMask)\\b"
+ },
+ {
+ "name": "meta.object-literal.key.fx.depthstencilstate.hlsl",
+ "match": "\\b(DepthEnable|DepthWriteMask|DepthFunc|StencilEnable|StencilReadMask|StencilWriteMask|FrontFaceStencilFail|FrontFaceStencilZFail|FrontFaceStencilPass|FrontFaceStencilFunc|BackFaceStencilFail|BackFaceStencilZFail|BackFaceStencilPass|BackFaceStencilFunc)\\b"
+ },
+ {
+ "name": "meta.object-literal.key.fx.rasterizerstate.hlsl",
+ "match": "\\b(FillMode|CullMode|FrontCounterClockwise|DepthBias|DepthBiasClamp|SlopeScaleDepthBias|ZClipEnable|ScissorEnable|MultiSampleEnable|AntiAliasedLineEnable)\\b"
+ },
+ {
+ "name": "meta.object-literal.key.fx.samplerstate.hlsl",
+ "match": "\\b(Filter|AddressU|AddressV|AddressW|MipLODBias|MaxAnisotropy|ComparisonFunc|BorderColor|MinLOD|MaxLOD)\\b"
+ },
+ {
+ "name": "support.constant.property-value.fx.blend.hlsl",
+ "match": "\\b(?i:ZERO|ONE|SRC_COLOR|INV_SRC_COLOR|SRC_ALPHA|INV_SRC_ALPHA|DEST_ALPHA|INV_DEST_ALPHA|DEST_COLOR|INV_DEST_COLOR|SRC_ALPHA_SAT|BLEND_FACTOR|INV_BLEND_FACTOR|SRC1_COLOR|INV_SRC1_COLOR|SRC1_ALPHA|INV_SRC1_ALPHA)\\b"
+ },
+ {
+ "name": "support.constant.property-value.fx.blendop.hlsl",
+ "match": "\\b(?i:ADD|SUBTRACT|REV_SUBTRACT|MIN|MAX)\\b"
+ },
+ {
+ "name": "support.constant.property-value.fx.depthwritemask.hlsl",
+ "match": "\\b(?i:ALL)\\b"
+ },
+ {
+ "name": "support.constant.property-value.fx.comparisonfunc.hlsl",
+ "match": "\\b(?i:NEVER|LESS|EQUAL|LESS_EQUAL|GREATER|NOT_EQUAL|GREATER_EQUAL|ALWAYS)\\b"
+ },
+ {
+ "name": "support.constant.property-value.fx.stencilop.hlsl",
+ "match": "\\b(?i:KEEP|REPLACE|INCR_SAT|DECR_SAT|INVERT|INCR|DECR)\\b"
+ },
+ {
+ "name": "support.constant.property-value.fx.fillmode.hlsl",
+ "match": "\\b(?i:WIREFRAME|SOLID)\\b"
+ },
+ {
+ "name": "support.constant.property-value.fx.cullmode.hlsl",
+ "match": "\\b(?i:NONE|FRONT|BACK)\\b"
+ },
+ {
+ "name": "support.constant.property-value.fx.filter.hlsl",
+ "match": "\\b(?i:MIN_MAG_MIP_POINT|MIN_MAG_POINT_MIP_LINEAR|MIN_POINT_MAG_LINEAR_MIP_POINT|MIN_POINT_MAG_MIP_LINEAR|MIN_LINEAR_MAG_MIP_POINT|MIN_LINEAR_MAG_POINT_MIP_LINEAR|MIN_MAG_LINEAR_MIP_POINT|MIN_MAG_MIP_LINEAR|ANISOTROPIC|COMPARISON_MIN_MAG_MIP_POINT|COMPARISON_MIN_MAG_POINT_MIP_LINEAR|COMPARISON_MIN_POINT_MAG_LINEAR_MIP_POINT|COMPARISON_MIN_POINT_MAG_MIP_LINEAR|COMPARISON_MIN_LINEAR_MAG_MIP_POINT|COMPARISON_MIN_LINEAR_MAG_POINT_MIP_LINEAR|COMPARISON_MIN_MAG_LINEAR_MIP_POINT|COMPARISON_MIN_MAG_MIP_LINEAR|COMPARISON_ANISOTROPIC|TEXT_1BIT)\\b"
+ },
+ {
+ "name": "support.constant.property-value.fx.textureaddressmode.hlsl",
+ "match": "\\b(?i:WRAP|MIRROR|CLAMP|BORDER|MIRROR_ONCE)\\b"
+ },
+ {
+ "name": "string.quoted.double.hlsl",
+ "begin": "\"",
+ "end": "\"",
+ "patterns": [
+ {
+ "name": "constant.character.escape.hlsl",
+ "match": "\\\\."
+ }
+ ]
+ }
+ ]
+}
diff --git a/node_modules/shiki/languages/html.tmLanguage.json b/node_modules/shiki/languages/html.tmLanguage.json
new file mode 100644
index 0000000..f44c8f9
--- /dev/null
+++ b/node_modules/shiki/languages/html.tmLanguage.json
@@ -0,0 +1,2643 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/textmate/html.tmbundle/blob/master/Syntaxes/HTML.plist",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/textmate/html.tmbundle/commit/0c3d5ee54de3a993f747f54186b73a4d2d3c44a2",
+ "name": "html",
+ "scopeName": "text.html.basic",
+ "injections": {
+ "R:text.html - (comment.block, text.html meta.embedded, meta.tag.*.*.html, meta.tag.*.*.*.html, meta.tag.*.*.*.*.html)": {
+ "comment": "Uses R: to ensure this matches after any other injections.",
+ "patterns": [
+ {
+ "match": "<",
+ "name": "invalid.illegal.bad-angle-bracket.html"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#xml-processing"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#doctype"
+ },
+ {
+ "include": "#cdata"
+ },
+ {
+ "include": "#tags-valid"
+ },
+ {
+ "include": "#tags-invalid"
+ },
+ {
+ "include": "#entities"
+ }
+ ],
+ "repository": {
+ "attribute": {
+ "patterns": [
+ {
+ "begin": "(s(hape|cope|t(ep|art)|ize(s)?|p(ellcheck|an)|elected|lot|andbox|rc(set|doc|lang)?)|h(ttp-equiv|i(dden|gh)|e(ight|aders)|ref(lang)?)|n(o(nce|validate|module)|ame)|c(h(ecked|arset)|ite|o(nt(ent(editable)?|rols)|ords|l(s(pan)?|or))|lass|rossorigin)|t(ype(mustmatch)?|itle|a(rget|bindex)|ranslate)|i(s(map)?|n(tegrity|putmode)|tem(scope|type|id|prop|ref)|d)|op(timum|en)|d(i(sabled|r(name)?)|ownload|e(coding|f(er|ault))|at(etime|a)|raggable)|usemap|p(ing|oster|la(ysinline|ceholder)|attern|reload)|enctype|value|kind|for(m(novalidate|target|enctype|action|method)?)?|w(idth|rap)|l(ist|o(op|w)|a(ng|bel))|a(s(ync)?|c(ce(sskey|pt(-charset)?)|tion)|uto(c(omplete|apitalize)|play|focus)|l(t|low(usermedia|paymentrequest|fullscreen))|bbr)|r(ows(pan)?|e(versed|quired|ferrerpolicy|l|adonly))|m(in(length)?|u(ted|ltiple)|e(thod|dia)|a(nifest|x(length)?)))(?![\\w:-])",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.other.attribute-name.html"
+ }
+ },
+ "comment": "HTML5 attributes, not event handlers",
+ "end": "(?=\\s*+[^=\\s])",
+ "name": "meta.attribute.$1.html",
+ "patterns": [
+ {
+ "include": "#attribute-interior"
+ }
+ ]
+ },
+ {
+ "begin": "style(?![\\w:-])",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.other.attribute-name.html"
+ }
+ },
+ "comment": "HTML5 style attribute",
+ "end": "(?=\\s*+[^=\\s])",
+ "name": "meta.attribute.style.html",
+ "patterns": [
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.key-value.html"
+ }
+ },
+ "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)",
+ "patterns": [
+ {
+ "begin": "(?=[^\\s=<>`/]|/(?!>))",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.line.css",
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "source.css"
+ }
+ },
+ "match": "([^\\s\"'=<>`/]|/(?!>))+",
+ "name": "string.unquoted.html"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "contentName": "source.css",
+ "end": "(\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ },
+ "1": {
+ "name": "source.css"
+ }
+ },
+ "name": "string.quoted.double.html",
+ "patterns": [
+ {
+ "include": "#entities"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "contentName": "source.css",
+ "end": "(')",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ },
+ "1": {
+ "name": "source.css"
+ }
+ },
+ "name": "string.quoted.single.html",
+ "patterns": [
+ {
+ "include": "#entities"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "match": "=",
+ "name": "invalid.illegal.unexpected-equals-sign.html"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "on(s(croll|t(orage|alled)|u(spend|bmit)|e(curitypolicyviolation|ek(ing|ed)|lect))|hashchange|c(hange|o(ntextmenu|py)|u(t|echange)|l(ick|ose)|an(cel|play(through)?))|t(imeupdate|oggle)|in(put|valid)|o(nline|ffline)|d(urationchange|r(op|ag(start|over|e(n(ter|d)|xit)|leave)?)|blclick)|un(handledrejection|load)|p(opstate|lay(ing)?|a(ste|use|ge(show|hide))|rogress)|e(nded|rror|mptied)|volumechange|key(down|up|press)|focus|w(heel|aiting)|l(oad(start|e(nd|d(data|metadata)))?|anguagechange)|a(uxclick|fterprint|bort)|r(e(s(ize|et)|jectionhandled)|atechange)|m(ouse(o(ut|ver)|down|up|enter|leave|move)|essage(error)?)|b(efore(unload|print)|lur))(?![\\w:-])",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.other.attribute-name.html"
+ }
+ },
+ "comment": "HTML5 attributes, event handlers",
+ "end": "(?=\\s*+[^=\\s])",
+ "name": "meta.attribute.event-handler.$1.html",
+ "patterns": [
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.key-value.html"
+ }
+ },
+ "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)",
+ "patterns": [
+ {
+ "begin": "(?=[^\\s=<>`/]|/(?!>))",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.line.js",
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "source.js"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ },
+ "match": "(([^\\s\"'=<>`/]|/(?!>))+)",
+ "name": "string.unquoted.html"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "contentName": "source.js",
+ "end": "(\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ },
+ "1": {
+ "name": "source.js"
+ }
+ },
+ "name": "string.quoted.double.html",
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ },
+ "match": "([^\\n\"/]|/(?![/*]))+"
+ },
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.js"
+ }
+ },
+ "end": "(?=\")|\\n",
+ "name": "comment.line.double-slash.js"
+ },
+ {
+ "begin": "/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.js"
+ }
+ },
+ "end": "(?=\")|\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.js"
+ }
+ },
+ "name": "comment.block.js"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "contentName": "source.js",
+ "end": "(')",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ },
+ "1": {
+ "name": "source.js"
+ }
+ },
+ "name": "string.quoted.single.html",
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ },
+ "match": "([^\\n'/]|/(?![/*]))+"
+ },
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.js"
+ }
+ },
+ "end": "(?=')|\\n",
+ "name": "comment.line.double-slash.js"
+ },
+ {
+ "begin": "/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.js"
+ }
+ },
+ "end": "(?=')|\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.js"
+ }
+ },
+ "name": "comment.block.js"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "match": "=",
+ "name": "invalid.illegal.unexpected-equals-sign.html"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(data-[a-z\\-]+)(?![\\w:-])",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.other.attribute-name.html"
+ }
+ },
+ "comment": "HTML5 attributes, data-*",
+ "end": "(?=\\s*+[^=\\s])",
+ "name": "meta.attribute.data-x.$1.html",
+ "patterns": [
+ {
+ "include": "#attribute-interior"
+ }
+ ]
+ },
+ {
+ "begin": "(align|bgcolor|border)(?![\\w:-])",
+ "beginCaptures": {
+ "0": {
+ "name": "invalid.deprecated.entity.other.attribute-name.html"
+ }
+ },
+ "comment": "HTML attributes, deprecated",
+ "end": "(?=\\s*+[^=\\s])",
+ "name": "meta.attribute.$1.html",
+ "patterns": [
+ {
+ "include": "#attribute-interior"
+ }
+ ]
+ },
+ {
+ "begin": "([^\\x{0020}\"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.other.attribute-name.html"
+ }
+ },
+ "comment": "Anything else that is valid",
+ "end": "(?=\\s*+[^=\\s])",
+ "name": "meta.attribute.unrecognized.$1.html",
+ "patterns": [
+ {
+ "include": "#attribute-interior"
+ }
+ ]
+ },
+ {
+ "match": "[^\\s>]+",
+ "name": "invalid.illegal.character-not-allowed-here.html"
+ }
+ ]
+ },
+ "attribute-interior": {
+ "patterns": [
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.key-value.html"
+ }
+ },
+ "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)",
+ "patterns": [
+ {
+ "match": "([^\\s\"'=<>`/]|/(?!>))+",
+ "name": "string.unquoted.html"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ }
+ },
+ "name": "string.quoted.double.html",
+ "patterns": [
+ {
+ "include": "#entities"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ }
+ },
+ "name": "string.quoted.single.html",
+ "patterns": [
+ {
+ "include": "#entities"
+ }
+ ]
+ },
+ {
+ "match": "=",
+ "name": "invalid.illegal.unexpected-equals-sign.html"
+ }
+ ]
+ }
+ ]
+ },
+ "cdata": {
+ "begin": "<!\\[CDATA\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.begin.html"
+ }
+ },
+ "contentName": "string.other.inline-data.html",
+ "end": "]]>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.metadata.cdata.html"
+ },
+ "comment": {
+ "begin": "<!--",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.html"
+ }
+ },
+ "end": "-->",
+ "name": "comment.block.html",
+ "patterns": [
+ {
+ "match": "\\G-?>",
+ "name": "invalid.illegal.characters-not-allowed-here.html"
+ },
+ {
+ "match": "<!--(?!>)|<!-(?=-->)",
+ "name": "invalid.illegal.characters-not-allowed-here.html"
+ },
+ {
+ "match": "--!>",
+ "name": "invalid.illegal.characters-not-allowed-here.html"
+ }
+ ]
+ },
+ "core-minus-invalid": {
+ "comment": "This should be the root pattern array includes minus #tags-invalid",
+ "patterns": [
+ {
+ "include": "#xml-processing"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#doctype"
+ },
+ {
+ "include": "#cdata"
+ },
+ {
+ "include": "#tags-valid"
+ },
+ {
+ "include": "#entities"
+ }
+ ]
+ },
+ "doctype": {
+ "begin": "<!(?=(?i:DOCTYPE\\s))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.begin.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.metadata.doctype.html",
+ "patterns": [
+ {
+ "match": "\\G(?i:DOCTYPE)",
+ "name": "entity.name.tag.html"
+ },
+ {
+ "begin": "\"",
+ "end": "\"",
+ "name": "string.quoted.double.html"
+ },
+ {
+ "match": "[^\\s>]+",
+ "name": "entity.other.attribute-name.html"
+ }
+ ]
+ },
+ "entities": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.html"
+ },
+ "912": {
+ "name": "punctuation.definition.entity.html"
+ }
+ },
+ "comment": "Yes this is a bit ridiculous, there are quite a lot of these",
+ "match": "(?x)\n\t\t\t\t\t\t(&)\t(?=[a-zA-Z])\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(a(s(ymp(eq)?|cr|t)|n(d(slope|d|v|and)?|g(s(t|ph)|zarr|e|le|rt(vb(d)?)?|msd(a(h|c|d|e|f|a|g|b))?)?)|c(y|irc|d|ute|E)?|tilde|o(pf|gon)|uml|p(id|os|prox(eq)?|e|E|acir)?|elig|f(r)?|w(conint|int)|l(pha|e(ph|fsym))|acute|ring|grave|m(p|a(cr|lg))|breve)|A(s(sign|cr)|nd|MP|c(y|irc)|tilde|o(pf|gon)|uml|pplyFunction|fr|Elig|lpha|acute|ring|grave|macr|breve))\n\t\t\t\t\t\t | (B(scr|cy|opf|umpeq|e(cause|ta|rnoullis)|fr|a(ckslash|r(v|wed))|reve)|b(s(cr|im(e)?|ol(hsub|b)?|emi)|n(ot|e(quiv)?)|c(y|ong)|ig(s(tar|qcup)|c(irc|up|ap)|triangle(down|up)|o(times|dot|plus)|uplus|vee|wedge)|o(t(tom)?|pf|wtie|x(h(d|u|D|U)?|times|H(d|u|D|U)?|d(R|l|r|L)|u(R|l|r|L)|plus|D(R|l|r|L)|v(R|h|H|l|r|L)?|U(R|l|r|L)|V(R|h|H|l|r|L)?|minus|box))|Not|dquo|u(ll(et)?|mp(e(q)?|E)?)|prime|e(caus(e)?|t(h|ween|a)|psi|rnou|mptyv)|karow|fr|l(ock|k(1(2|4)|34)|a(nk|ck(square|triangle(down|left|right)?|lozenge)))|a(ck(sim(eq)?|cong|prime|epsilon)|r(vee|wed(ge)?))|r(eve|vbar)|brk(tbrk)?))\n\t\t\t\t\t\t | (c(s(cr|u(p(e)?|b(e)?))|h(cy|i|eck(mark)?)|ylcty|c(irc|ups(sm)?|edil|a(ps|ron))|tdot|ir(scir|c(eq|le(d(R|circ|S|dash|ast)|arrow(left|right)))?|e|fnint|E|mid)?|o(n(int|g(dot)?)|p(y(sr)?|f|rod)|lon(e(q)?)?|m(p(fn|le(xes|ment))?|ma(t)?))|dot|u(darr(l|r)|p(s|c(up|ap)|or|dot|brcap)?|e(sc|pr)|vee|wed|larr(p)?|r(vearrow(left|right)|ly(eq(succ|prec)|vee|wedge)|arr(m)?|ren))|e(nt(erdot)?|dil|mptyv)|fr|w(conint|int)|lubs(uit)?|a(cute|p(s|c(up|ap)|dot|and|brcup)?|r(on|et))|r(oss|arr))|C(scr|hi|c(irc|onint|edil|aron)|ircle(Minus|Times|Dot|Plus)|Hcy|o(n(tourIntegral|int|gruent)|unterClockwiseContourIntegral|p(f|roduct)|lon(e)?)|dot|up(Cap)?|OPY|e(nterDot|dilla)|fr|lo(seCurly(DoubleQuote|Quote)|ckwiseContourIntegral)|a(yleys|cute|p(italDifferentialD)?)|ross))\n\t\t\t\t\t\t | (d(s(c(y|r)|trok|ol)|har(l|r)|c(y|aron)|t(dot|ri(f)?)|i(sin|e|v(ide(ontimes)?|onx)?|am(s|ond(suit)?)?|gamma)|Har|z(cy|igrarr)|o(t(square|plus|eq(dot)?|minus)?|ublebarwedge|pf|wn(harpoon(left|right)|downarrows|arrow)|llar)|d(otseq|a(rr|gger))?|u(har|arr)|jcy|e(lta|g|mptyv)|f(isht|r)|wangle|lc(orn|rop)|a(sh(v)?|leth|rr|gger)|r(c(orn|rop)|bkarow)|b(karow|lac)|Arr)|D(s(cr|trok)|c(y|aron)|Scy|i(fferentialD|a(critical(Grave|Tilde|Do(t|ubleAcute)|Acute)|mond))|o(t(Dot|Equal)?|uble(Right(Tee|Arrow)|ContourIntegral|Do(t|wnArrow)|Up(DownArrow|Arrow)|VerticalBar|L(ong(RightArrow|Left(RightArrow|Arrow))|eft(RightArrow|Tee|Arrow)))|pf|wn(Right(TeeVector|Vector(Bar)?)|Breve|Tee(Arrow)?|arrow|Left(RightVector|TeeVector|Vector(Bar)?)|Arrow(Bar|UpArrow)?))|Zcy|el(ta)?|D(otrahd)?|Jcy|fr|a(shv|rr|gger)))\n\t\t\t\t\t\t | (e(s(cr|im|dot)|n(sp|g)|c(y|ir(c)?|olon|aron)|t(h|a)|o(pf|gon)|dot|u(ro|ml)|p(si(v|lon)?|lus|ar(sl)?)|e|D(ot|Dot)|q(s(im|lant(less|gtr))|c(irc|olon)|u(iv(DD)?|est|als)|vparsl)|f(Dot|r)|l(s(dot)?|inters|l)?|a(ster|cute)|r(Dot|arr)|g(s(dot)?|rave)?|x(cl|ist|p(onentiale|ectation))|m(sp(1(3|4))?|pty(set|v)?|acr))|E(s(cr|im)|c(y|irc|aron)|ta|o(pf|gon)|NG|dot|uml|TH|psilon|qu(ilibrium|al(Tilde)?)|fr|lement|acute|grave|x(ists|ponentialE)|m(pty(SmallSquare|VerySmallSquare)|acr)))\n\t\t\t\t\t\t | (f(scr|nof|cy|ilig|o(pf|r(k(v)?|all))|jlig|partint|emale|f(ilig|l(ig|lig)|r)|l(tns|lig|at)|allingdotseq|r(own|a(sl|c(1(2|8|3|4|5|6)|78|2(3|5)|3(8|4|5)|45|5(8|6)))))|F(scr|cy|illed(SmallSquare|VerySmallSquare)|o(uriertrf|pf|rAll)|fr))\n\t\t\t\t\t\t | (G(scr|c(y|irc|edil)|t|opf|dot|T|Jcy|fr|amma(d)?|reater(Greater|SlantEqual|Tilde|Equal(Less)?|FullEqual|Less)|g|breve)|g(s(cr|im(e|l)?)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|irc)|t(c(c|ir)|dot|quest|lPar|r(sim|dot|eq(qless|less)|less|a(pprox|rr)))?|imel|opf|dot|jcy|e(s(cc|dot(o(l)?)?|l(es)?)?|q(slant|q)?|l)?|v(nE|ertneqq)|fr|E(l)?|l(j|E|a)?|a(cute|p|mma(d)?)|rave|g(g)?|breve))\n\t\t\t\t\t\t | (h(s(cr|trok|lash)|y(phen|bull)|circ|o(ok(leftarrow|rightarrow)|pf|arr|rbar|mtht)|e(llip|arts(uit)?|rcon)|ks(earow|warow)|fr|a(irsp|lf|r(dcy|r(cir|w)?)|milt)|bar|Arr)|H(s(cr|trok)|circ|ilbertSpace|o(pf|rizontalLine)|ump(DownHump|Equal)|fr|a(cek|t)|ARDcy))\n\t\t\t\t\t\t | (i(s(cr|in(s(v)?|dot|v|E)?)|n(care|t(cal|prod|e(rcal|gers)|larhk)?|odot|fin(tie)?)?|c(y|irc)?|t(ilde)?|i(nfin|i(nt|int)|ota)?|o(cy|ta|pf|gon)|u(kcy|ml)|jlig|prod|e(cy|xcl)|quest|f(f|r)|acute|grave|m(of|ped|a(cr|th|g(part|e|line))))|I(scr|n(t(e(rsection|gral))?|visible(Comma|Times))|c(y|irc)|tilde|o(ta|pf|gon)|dot|u(kcy|ml)|Ocy|Jlig|fr|Ecy|acute|grave|m(plies|a(cr|ginaryI))?))\n\t\t\t\t\t\t | (j(s(cr|ercy)|c(y|irc)|opf|ukcy|fr|math)|J(s(cr|ercy)|c(y|irc)|opf|ukcy|fr))\n\t\t\t\t\t\t | (k(scr|hcy|c(y|edil)|opf|jcy|fr|appa(v)?|green)|K(scr|c(y|edil)|Hcy|opf|Jcy|fr|appa))\n\t\t\t\t\t\t | (l(s(h|cr|trok|im(e|g)?|q(uo(r)?|b)|aquo)|h(ar(d|u(l)?)|blk)|n(sim|e(q(q)?)?|E|ap(prox)?)|c(y|ub|e(il|dil)|aron)|Barr|t(hree|c(c|ir)|imes|dot|quest|larr|r(i(e|f)?|Par))?|Har|o(ng(left(arrow|rightarrow)|rightarrow|mapsto)|times|z(enge|f)?|oparrow(left|right)|p(f|lus|ar)|w(ast|bar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|r(dhar|ushar))|ur(dshar|uhar)|jcy|par(lt)?|e(s(s(sim|dot|eq(qgtr|gtr)|approx|gtr)|cc|dot(o(r)?)?|g(es)?)?|q(slant|q)?|ft(harpoon(down|up)|threetimes|leftarrows|arrow(tail)?|right(squigarrow|harpoons|arrow(s)?))|g)?|v(nE|ertneqq)|f(isht|loor|r)|E(g)?|l(hard|corner|tri|arr)?|a(ng(d|le)?|cute|t(e(s)?|ail)?|p|emptyv|quo|rr(sim|hk|tl|pl|fs|lp|b(fs)?)?|gran|mbda)|r(har(d)?|corner|tri|arr|m)|g(E)?|m(idot|oust(ache)?)|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr))|L(s(h|cr|trok)|c(y|edil|aron)|t|o(ng(RightArrow|left(arrow|rightarrow)|rightarrow|Left(RightArrow|Arrow))|pf|wer(RightArrow|LeftArrow))|T|e(ss(Greater|SlantEqual|Tilde|EqualGreater|FullEqual|Less)|ft(Right(Vector|Arrow)|Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|rightarrow|Floor|A(ngleBracket|rrow(RightArrow|Bar)?)))|Jcy|fr|l(eftarrow)?|a(ng|cute|placetrf|rr|mbda)|midot))\n\t\t\t\t\t\t | (M(scr|cy|inusPlus|opf|u|e(diumSpace|llintrf)|fr|ap)|m(s(cr|tpos)|ho|nplus|c(y|omma)|i(nus(d(u)?|b)?|cro|d(cir|dot|ast)?)|o(dels|pf)|dash|u(ltimap|map)?|p|easuredangle|DDot|fr|l(cp|dr)|a(cr|p(sto(down|up|left)?)?|l(t(ese)?|e)|rker)))\n\t\t\t\t\t\t | (n(s(hort(parallel|mid)|c(cue|e|r)?|im(e(q)?)?|u(cc(eq)?|p(set(eq(q)?)?|e|E)?|b(set(eq(q)?)?|e|E)?)|par|qsu(pe|be)|mid)|Rightarrow|h(par|arr|Arr)|G(t(v)?|g)|c(y|ong(dot)?|up|edil|a(p|ron))|t(ilde|lg|riangle(left(eq)?|right(eq)?)|gl)|i(s(d)?|v)?|o(t(ni(v(c|a|b))?|in(dot|v(c|a|b)|E)?)?|pf)|dash|u(m(sp|ero)?)?|jcy|p(olint|ar(sl|t|allel)?|r(cue|e(c(eq)?)?)?)|e(s(im|ear)|dot|quiv|ar(hk|r(ow)?)|xist(s)?|Arr)?|v(sim|infin|Harr|dash|Dash|l(t(rie)?|e|Arr)|ap|r(trie|Arr)|g(t|e))|fr|w(near|ar(hk|r(ow)?)|Arr)|V(dash|Dash)|l(sim|t(ri(e)?)?|dr|e(s(s)?|q(slant|q)?|ft(arrow|rightarrow))?|E|arr|Arr)|a(ng|cute|tur(al(s)?)?|p(id|os|prox|E)?|bla)|r(tri(e)?|ightarrow|arr(c|w)?|Arr)|g(sim|t(r)?|e(s|q(slant|q)?)?|E)|mid|L(t(v)?|eft(arrow|rightarrow)|l)|b(sp|ump(e)?))|N(scr|c(y|edil|aron)|tilde|o(nBreakingSpace|Break|t(R(ightTriangle(Bar|Equal)?|everseElement)|Greater(Greater|SlantEqual|Tilde|Equal|FullEqual|Less)?|S(u(cceeds(SlantEqual|Tilde|Equal)?|perset(Equal)?|bset(Equal)?)|quareSu(perset(Equal)?|bset(Equal)?))|Hump(DownHump|Equal)|Nested(GreaterGreater|LessLess)|C(ongruent|upCap)|Tilde(Tilde|Equal|FullEqual)?|DoubleVerticalBar|Precedes(SlantEqual|Equal)?|E(qual(Tilde)?|lement|xists)|VerticalBar|Le(ss(Greater|SlantEqual|Tilde|Equal|Less)?|ftTriangle(Bar|Equal)?))?|pf)|u|e(sted(GreaterGreater|LessLess)|wLine|gative(MediumSpace|Thi(nSpace|ckSpace)|VeryThinSpace))|Jcy|fr|acute))\n\t\t\t\t\t\t | (o(s(cr|ol|lash)|h(m|bar)|c(y|ir(c)?)|ti(lde|mes(as)?)|S|int|opf|d(sold|iv|ot|ash|blac)|uml|p(erp|lus|ar)|elig|vbar|f(cir|r)|l(c(ir|ross)|t|ine|arr)|a(st|cute)|r(slope|igof|or|d(er(of)?|f|m)?|v|arr)?|g(t|on|rave)|m(i(nus|cron|d)|ega|acr))|O(s(cr|lash)|c(y|irc)|ti(lde|mes)|opf|dblac|uml|penCurly(DoubleQuote|Quote)|ver(B(ar|rac(e|ket))|Parenthesis)|fr|Elig|acute|r|grave|m(icron|ega|acr)))\n\t\t\t\t\t\t | (p(s(cr|i)|h(i(v)?|one|mmat)|cy|i(tchfork|v)?|o(intint|und|pf)|uncsp|er(cnt|tenk|iod|p|mil)|fr|l(us(sim|cir|two|d(o|u)|e|acir|mn|b)?|an(ck(h)?|kv))|ar(s(im|l)|t|a(llel)?)?|r(sim|n(sim|E|ap)|cue|ime(s)?|o(d|p(to)?|f(surf|line|alar))|urel|e(c(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?)?|E|ap)?|m)|P(s(cr|i)|hi|cy|i|o(incareplane|pf)|fr|lusMinus|artialD|r(ime|o(duct|portion(al)?)|ecedes(SlantEqual|Tilde|Equal)?)?))\n\t\t\t\t\t\t | (q(scr|int|opf|u(ot|est(eq)?|at(int|ernions))|prime|fr)|Q(scr|opf|UOT|fr))\n\t\t\t\t\t\t | (R(s(h|cr)|ho|c(y|edil|aron)|Barr|ight(Ceiling|T(ee(Vector|Arrow)?|riangle(Bar|Equal)?)|Do(ubleBracket|wn(TeeVector|Vector(Bar)?))|Up(TeeVector|DownVector|Vector(Bar)?)|Vector(Bar)?|arrow|Floor|A(ngleBracket|rrow(Bar|LeftArrow)?))|o(undImplies|pf)|uleDelayed|e(verse(UpEquilibrium|E(quilibrium|lement)))?|fr|EG|a(ng|cute|rr(tl)?)|rightarrow)|r(s(h|cr|q(uo(r)?|b)|aquo)|h(o(v)?|ar(d|u(l)?))|nmid|c(y|ub|e(il|dil)|aron)|Barr|t(hree|imes|ri(e|f|ltri)?)|i(singdotseq|ng|ght(squigarrow|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(tail)?|rightarrows))|Har|o(times|p(f|lus|ar)|a(ng|rr)|brk)|d(sh|ca|quo(r)?|ldhar)|uluhar|p(polint|ar(gt)?)|e(ct|al(s|ine|part)?|g)|f(isht|loor|r)|l(har|arr|m)|a(ng(d|e|le)?|c(ute|e)|t(io(nals)?|ail)|dic|emptyv|quo|rr(sim|hk|c|tl|pl|fs|w|lp|ap|b(fs)?)?)|rarr|x|moust(ache)?|b(arr|r(k(sl(d|u)|e)|ac(e|k))|brk)|A(tail|arr|rr)))\n\t\t\t\t\t\t | (s(s(cr|tarf|etmn|mile)|h(y|c(hcy|y)|ort(parallel|mid)|arp)|c(sim|y|n(sim|E|ap)|cue|irc|polint|e(dil)?|E|a(p|ron))?|t(ar(f)?|r(ns|aight(phi|epsilon)))|i(gma(v|f)?|m(ne|dot|plus|e(q)?|l(E)?|rarr|g(E)?)?)|zlig|o(pf|ftcy|l(b(ar)?)?)|dot(e|b)?|u(ng|cc(sim|n(sim|eqq|approx)|curlyeq|eq|approx)?|p(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|hs(ol|ub)|1|n(e|E)|2|d(sub|ot)|3|plus|e(dot)?|E|larr|mult)?|m|b(s(im|u(p|b)|et(neq(q)?|eq(q)?)?)|n(e|E)|dot|plus|e(dot)?|E|rarr|mult)?)|pa(des(uit)?|r)|e(swar|ct|tm(n|inus)|ar(hk|r(ow)?)|xt|mi|Arr)|q(su(p(set(eq)?|e)?|b(set(eq)?|e)?)|c(up(s)?|ap(s)?)|u(f|ar(e|f))?)|fr(own)?|w(nwar|ar(hk|r(ow)?)|Arr)|larr|acute|rarr|m(t(e(s)?)?|i(d|le)|eparsl|a(shp|llsetminus))|bquo)|S(scr|hort(RightArrow|DownArrow|UpArrow|LeftArrow)|c(y|irc|edil|aron)?|tar|igma|H(cy|CHcy)|opf|u(c(hThat|ceeds(SlantEqual|Tilde|Equal)?)|p(set|erset(Equal)?)?|m|b(set(Equal)?)?)|OFTcy|q(uare(Su(perset(Equal)?|bset(Equal)?)|Intersection|Union)?|rt)|fr|acute|mallCircle))\n\t\t\t\t\t\t | (t(s(hcy|c(y|r)|trok)|h(i(nsp|ck(sim|approx))|orn|e(ta(sym|v)?|re(4|fore))|k(sim|ap))|c(y|edil|aron)|i(nt|lde|mes(d|b(ar)?)?)|o(sa|p(cir|f(ork)?|bot)?|ea)|dot|prime|elrec|fr|w(ixt|ohead(leftarrow|rightarrow))|a(u|rget)|r(i(sb|time|dot|plus|e|angle(down|q|left(eq)?|right(eq)?)?|minus)|pezium|ade)|brk)|T(s(cr|trok)|RADE|h(i(nSpace|ckSpace)|e(ta|refore))|c(y|edil|aron)|S(cy|Hcy)|ilde(Tilde|Equal|FullEqual)?|HORN|opf|fr|a(u|b)|ripleDot))\n\t\t\t\t\t\t | (u(scr|h(ar(l|r)|blk)|c(y|irc)|t(ilde|dot|ri(f)?)|Har|o(pf|gon)|d(har|arr|blac)|u(arr|ml)|p(si(h|lon)?|harpoon(left|right)|downarrow|uparrows|lus|arrow)|f(isht|r)|wangle|l(c(orn(er)?|rop)|tri)|a(cute|rr)|r(c(orn(er)?|rop)|tri|ing)|grave|m(l|acr)|br(cy|eve)|Arr)|U(scr|n(ion(Plus)?|der(B(ar|rac(e|ket))|Parenthesis))|c(y|irc)|tilde|o(pf|gon)|dblac|uml|p(si(lon)?|downarrow|Tee(Arrow)?|per(RightArrow|LeftArrow)|DownArrow|Equilibrium|arrow|Arrow(Bar|DownArrow)?)|fr|a(cute|rr(ocir)?)|ring|grave|macr|br(cy|eve)))\n\t\t\t\t\t\t | (v(s(cr|u(pn(e|E)|bn(e|E)))|nsu(p|b)|cy|Bar(v)?|zigzag|opf|dash|prop|e(e(eq|bar)?|llip|r(t|bar))|Dash|fr|ltri|a(ngrt|r(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|t(heta|riangle(left|right))|p(hi|i|ropto)|epsilon|kappa|r(ho)?))|rtri|Arr)|V(scr|cy|opf|dash(l)?|e(e|r(yThinSpace|t(ical(Bar|Separator|Tilde|Line))?|bar))|Dash|vdash|fr|bar))\n\t\t\t\t\t\t | (w(scr|circ|opf|p|e(ierp|d(ge(q)?|bar))|fr|r(eath)?)|W(scr|circ|opf|edge|fr))\n\t\t\t\t\t\t | (X(scr|i|opf|fr)|x(s(cr|qcup)|h(arr|Arr)|nis|c(irc|up|ap)|i|o(time|dot|p(f|lus))|dtri|u(tri|plus)|vee|fr|wedge|l(arr|Arr)|r(arr|Arr)|map))\n\t\t\t\t\t\t | (y(scr|c(y|irc)|icy|opf|u(cy|ml)|en|fr|ac(y|ute))|Y(scr|c(y|irc)|opf|uml|Icy|Ucy|fr|acute|Acy))\n\t\t\t\t\t\t | (z(scr|hcy|c(y|aron)|igrarr|opf|dot|e(ta|etrf)|fr|w(nj|j)|acute)|Z(scr|c(y|aron)|Hcy|opf|dot|e(ta|roWidthSpace)|fr|acute))\n\t\t\t\t\t\t)\n\t\t\t\t\t\t(;)\n\t\t\t\t\t",
+ "name": "constant.character.entity.named.$2.html"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.html"
+ },
+ "3": {
+ "name": "punctuation.definition.entity.html"
+ }
+ },
+ "match": "(&)#[0-9]+(;)",
+ "name": "constant.character.entity.numeric.decimal.html"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.html"
+ },
+ "3": {
+ "name": "punctuation.definition.entity.html"
+ }
+ },
+ "match": "(&)#[xX][0-9a-fA-F]+(;)",
+ "name": "constant.character.entity.numeric.hexadecimal.html"
+ },
+ {
+ "match": "&(?=[a-zA-Z0-9]+;)",
+ "name": "invalid.illegal.ambiguous-ampersand.html"
+ }
+ ]
+ },
+ "math": {
+ "patterns": [
+ {
+ "begin": "(?i)(<)(math)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.structure.$2.start.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "end": "(?i)(</)(\\2)\\s*(>)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.structure.$2.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.element.structure.$2.html",
+ "patterns": [
+ {
+ "begin": "(?<!>)\\G",
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.structure.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "include": "#tags"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "attribute": {
+ "patterns": [
+ {
+ "begin": "(s(hift|ymmetric|cript(sizemultiplier|level|minsize)|t(ackalign|retchy)|ide|u(pscriptshift|bscriptshift)|e(parator(s)?|lection)|rc)|h(eight|ref)|n(otation|umalign)|c(haralign|olumn(spa(n|cing)|width|lines|align)|lose|rossout)|i(n(dent(shift(first|last)?|target|align(first|last)?)|fixlinebreakstyle)|d)|o(pen|verflow)|d(i(splay(style)?|r)|e(nomalign|cimalpoint|pth))|position|e(dge|qual(columns|rows))|voffset|f(orm|ence|rame(spacing)?)|width|l(space|ine(thickness|leading|break(style|multchar)?)|o(ngdivstyle|cation)|ength|quote|argeop)|a(c(cent(under)?|tiontype)|l(t(text|img(-(height|valign|width))?)|ign(mentscope)?))|r(space|ow(spa(n|cing)|lines|align)|quote)|groupalign|x(link:href|mlns)|m(in(size|labelspacing)|ovablelimits|a(th(size|color|variant|background)|xsize))|bevelled)(?![\\w:-])",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.other.attribute-name.html"
+ }
+ },
+ "end": "(?=\\s*+[^=\\s])",
+ "name": "meta.attribute.$1.html",
+ "patterns": [
+ {
+ "include": "#attribute-interior"
+ }
+ ]
+ },
+ {
+ "begin": "([^\\x{0020}\"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.other.attribute-name.html"
+ }
+ },
+ "comment": "Anything else that is valid",
+ "end": "(?=\\s*+[^=\\s])",
+ "name": "meta.attribute.unrecognized.$1.html",
+ "patterns": [
+ {
+ "include": "#attribute-interior"
+ }
+ ]
+ },
+ {
+ "match": "[^\\s>]+",
+ "name": "invalid.illegal.character-not-allowed-here.html"
+ }
+ ]
+ },
+ "tags": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#cdata"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "meta.tag.structure.math.$2.void.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "match": "(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))",
+ "name": "meta.element.structure.math.$2.html"
+ },
+ {
+ "begin": "(?i)(<)(annotation|annotation-xml|semantics|menclose|merror|mfenced|mfrac|mpadded|mphantom|mroot|mrow|msqrt|mstyle|mmultiscripts|mover|mprescripts|msub|msubsup|msup|munder|munderover|none|mlabeledtr|mtable|mtd|mtr|mlongdiv|mscarries|mscarry|msgroup|msline|msrow|mstack|maction)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.structure.math.$2.start.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "end": "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.structure.math.$2.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.html"
+ },
+ "4": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.element.structure.math.$2.html",
+ "patterns": [
+ {
+ "begin": "(?<!>)\\G",
+ "end": "(?=/>)|>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.structure.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "include": "#tags"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "meta.tag.inline.math.$2.void.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "match": "(?i)(<)(mi|mn|mo|ms|mspace|mtext|maligngroup|malignmark)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))",
+ "name": "meta.element.inline.math.$2.html"
+ },
+ {
+ "begin": "(?i)(<)(mi|mn|mo|ms|mspace|mtext|maligngroup|malignmark)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.inline.math.$2.start.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "end": "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.inline.math.$2.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.html"
+ },
+ "4": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.element.inline.math.$2.html",
+ "patterns": [
+ {
+ "begin": "(?<!>)\\G",
+ "end": "(?=/>)|>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.inline.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "include": "#tags"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "meta.tag.object.math.$2.void.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "match": "(?i)(<)(mglyph)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))",
+ "name": "meta.element.object.math.$2.html"
+ },
+ {
+ "begin": "(?i)(<)(mglyph)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.object.math.$2.start.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "end": "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.object.math.$2.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.html"
+ },
+ "4": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.element.object.math.$2.html",
+ "patterns": [
+ {
+ "begin": "(?<!>)\\G",
+ "end": "(?=/>)|>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.object.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "include": "#tags"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "meta.tag.other.invalid.void.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.illegal.unrecognized-tag.html"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "match": "(?i)(<)(([\\w:]+))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))",
+ "name": "meta.element.other.invalid.html"
+ },
+ {
+ "begin": "(?i)(<)((\\w[^\\s>]*))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.other.invalid.start.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.illegal.unrecognized-tag.html"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "end": "(?i)(</)((\\2))\\s*(>)|(/>)|(?=</\\w+)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.other.invalid.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.illegal.unrecognized-tag.html"
+ },
+ "4": {
+ "name": "punctuation.definition.tag.end.html"
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.element.other.invalid.html",
+ "patterns": [
+ {
+ "begin": "(?<!>)\\G",
+ "end": "(?=/>)|>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.other.invalid.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "include": "#tags"
+ }
+ ]
+ },
+ {
+ "include": "#tags-invalid"
+ }
+ ]
+ }
+ }
+ },
+ "svg": {
+ "patterns": [
+ {
+ "begin": "(?i)(<)(svg)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.structure.$2.start.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "end": "(?i)(</)(\\2)\\s*(>)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.structure.$2.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.element.structure.$2.html",
+ "patterns": [
+ {
+ "begin": "(?<!>)\\G",
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.structure.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "include": "#tags"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "attribute": {
+ "patterns": [
+ {
+ "begin": "(s(hape-rendering|ystemLanguage|cale|t(yle|itchTiles|op-(color|opacity)|dDeviation|em(h|v)|artOffset|r(i(ng|kethrough-(thickness|position))|oke(-(opacity|dash(offset|array)|width|line(cap|join)|miterlimit))?))|urfaceScale|p(e(cular(Constant|Exponent)|ed)|acing|readMethod)|eed|lope)|h(oriz-(origin-x|adv-x)|eight|anging|ref(lang)?)|y(1|2|ChannelSelector)?|n(umOctaves|ame)|c(y|o(ntentS(criptType|tyleType)|lor(-(interpolation(-filters)?|profile|rendering))?)|ursor|l(ip(-(path|rule)|PathUnits)?|ass)|a(p-height|lcMode)|x)|t(ype|o|ext(-(decoration|anchor|rendering)|Length)|a(rget(X|Y)?|b(index|leValues))|ransform)|i(n(tercept|2)?|d(eographic)?|mage-rendering)|z(oomAndPan)?|o(p(erator|acity)|ver(flow|line-(thickness|position))|ffset|r(i(ent(ation)?|gin)|der))|d(y|i(splay|visor|ffuseConstant|rection)|ominant-baseline|ur|e(scent|celerate)|x)?|u(1|n(i(code(-(range|bidi))?|ts-per-em)|derline-(thickness|position))|2)|p(ing|oint(s(At(X|Y|Z))?|er-events)|a(nose-1|t(h(Length)?|tern(ContentUnits|Transform|Units))|int-order)|r(imitiveUnits|eserveA(spectRatio|lpha)))|e(n(d|able-background)|dgeMode|levation|x(ternalResourcesRequired|ponent))|v(i(sibility|ew(Box|Target))|-(hanging|ideographic|alphabetic|mathematical)|e(ctor-effect|r(sion|t-(origin-(y|x)|adv-y)))|alues)|k(1|2|3|e(y(Splines|Times|Points)|rn(ing|el(Matrix|UnitLength)))|4)?|f(y|il(ter(Res|Units)?|l(-(opacity|rule))?)|o(nt-(s(t(yle|retch)|ize(-adjust)?)|variant|family|weight)|rmat)|lood-(color|opacity)|r(om)?|x)|w(idth(s)?|ord-spacing|riting-mode)|l(i(ghting-color|mitingConeAngle)|ocal|e(ngthAdjust|tter-spacing)|ang)|a(scent|cc(umulate|ent-height)|ttribute(Name|Type)|zimuth|dditive|utoReverse|l(ignment-baseline|phabetic|lowReorder)|rabic-form|mplitude)|r(y|otate|e(s(tart|ult)|ndering-intent|peat(Count|Dur)|quired(Extensions|Features)|f(X|Y|errerPolicy)|l)|adius|x)?|g(1|2|lyph(Ref|-(name|orientation-(horizontal|vertical)))|radient(Transform|Units))|x(1|2|ChannelSelector|-height|link:(show|href|t(ype|itle)|a(ctuate|rcrole)|role)|ml:(space|lang|base))?|m(in|ode|e(thod|dia)|a(sk(ContentUnits|Units)?|thematical|rker(Height|-(start|end|mid)|Units|Width)|x))|b(y|ias|egin|ase(Profile|line-shift|Frequency)|box))(?![\\w:-])",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.other.attribute-name.html"
+ }
+ },
+ "end": "(?=\\s*+[^=\\s])",
+ "name": "meta.attribute.$1.html",
+ "patterns": [
+ {
+ "include": "#attribute-interior"
+ }
+ ]
+ },
+ {
+ "begin": "([^\\x{0020}\"'<>/=\\x{0000}-\\x{001F}\\x{007F}-\\x{009F}\\x{FDD0}-\\x{FDEF}\\x{FFFE}\\x{FFFF}\\x{1FFFE}\\x{1FFFF}\\x{2FFFE}\\x{2FFFF}\\x{3FFFE}\\x{3FFFF}\\x{4FFFE}\\x{4FFFF}\\x{5FFFE}\\x{5FFFF}\\x{6FFFE}\\x{6FFFF}\\x{7FFFE}\\x{7FFFF}\\x{8FFFE}\\x{8FFFF}\\x{9FFFE}\\x{9FFFF}\\x{AFFFE}\\x{AFFFF}\\x{BFFFE}\\x{BFFFF}\\x{CFFFE}\\x{CFFFF}\\x{DFFFE}\\x{DFFFF}\\x{EFFFE}\\x{EFFFF}\\x{FFFFE}\\x{FFFFF}\\x{10FFFE}\\x{10FFFF}]+)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.other.attribute-name.html"
+ }
+ },
+ "comment": "Anything else that is valid",
+ "end": "(?=\\s*+[^=\\s])",
+ "name": "meta.attribute.unrecognized.$1.html",
+ "patterns": [
+ {
+ "include": "#attribute-interior"
+ }
+ ]
+ },
+ {
+ "match": "[^\\s>]+",
+ "name": "invalid.illegal.character-not-allowed-here.html"
+ }
+ ]
+ },
+ "tags": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#cdata"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "meta.tag.metadata.svg.$2.void.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "match": "(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))",
+ "name": "meta.element.metadata.svg.$2.html"
+ },
+ {
+ "begin": "(?i)(<)(color-profile|desc|metadata|script|style|title)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.svg.$2.start.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "end": "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.svg.$2.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.html"
+ },
+ "4": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.element.metadata.svg.$2.html",
+ "patterns": [
+ {
+ "begin": "(?<!>)\\G",
+ "end": "(?=/>)|>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.metadata.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "include": "#tags"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "meta.tag.structure.svg.$2.void.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "match": "(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))",
+ "name": "meta.element.structure.svg.$2.html"
+ },
+ {
+ "begin": "(?i)(<)(animateMotion|clipPath|defs|feComponentTransfer|feDiffuseLighting|feMerge|feSpecularLighting|filter|g|hatch|linearGradient|marker|mask|mesh|meshgradient|meshpatch|meshrow|pattern|radialGradient|switch|text|textPath)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.structure.svg.$2.start.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "end": "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.structure.svg.$2.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.html"
+ },
+ "4": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.element.structure.svg.$2.html",
+ "patterns": [
+ {
+ "begin": "(?<!>)\\G",
+ "end": "(?=/>)|>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.structure.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "include": "#tags"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "meta.tag.inline.svg.$2.void.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "match": "(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))",
+ "name": "meta.element.inline.svg.$2.html"
+ },
+ {
+ "begin": "(?i)(<)(a|animate|discard|feBlend|feColorMatrix|feComposite|feConvolveMatrix|feDisplacementMap|feDistantLight|feDropShadow|feFlood|feFuncA|feFuncB|feFuncG|feFuncR|feGaussianBlur|feMergeNode|feMorphology|feOffset|fePointLight|feSpotLight|feTile|feTurbulence|hatchPath|mpath|set|solidcolor|stop|tspan)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.inline.svg.$2.start.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "end": "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.inline.svg.$2.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.html"
+ },
+ "4": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.element.inline.svg.$2.html",
+ "patterns": [
+ {
+ "begin": "(?<!>)\\G",
+ "end": "(?=/>)|>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.inline.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "include": "#tags"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "meta.tag.object.svg.$2.void.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "match": "(?i)(<)(circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))",
+ "name": "meta.element.object.svg.$2.html"
+ },
+ {
+ "begin": "(?i)(<)(a|circle|ellipse|feImage|foreignObject|image|line|path|polygon|polyline|rect|symbol|use|view)(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.object.svg.$2.start.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "end": "(?i)(</)(\\2)\\s*(>)|(/>)|(?=</\\w+)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.object.svg.$2.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.html"
+ },
+ "4": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.element.object.svg.$2.html",
+ "patterns": [
+ {
+ "begin": "(?<!>)\\G",
+ "end": "(?=/>)|>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.object.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "include": "#tags"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "meta.tag.other.svg.$2.void.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.deprecated.html"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "match": "(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))",
+ "name": "meta.element.other.svg.$2.html"
+ },
+ {
+ "begin": "(?i)(<)((altGlyph|altGlyphDef|altGlyphItem|animateColor|animateTransform|cursor|font|font-face|font-face-format|font-face-name|font-face-src|font-face-uri|glyph|glyphRef|hkern|missing-glyph|tref|vkern))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.other.svg.$2.start.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.deprecated.html"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "end": "(?i)(</)((\\2))\\s*(>)|(/>)|(?=</\\w+)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.other.svg.$2.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.deprecated.html"
+ },
+ "4": {
+ "name": "punctuation.definition.tag.end.html"
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.element.other.svg.$2.html",
+ "patterns": [
+ {
+ "begin": "(?<!>)\\G",
+ "end": "(?=/>)|>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.other.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "include": "#tags"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "meta.tag.other.invalid.void.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.illegal.unrecognized-tag.html"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "match": "(?i)(<)(([\\w:]+))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(/>))",
+ "name": "meta.element.other.invalid.html"
+ },
+ {
+ "begin": "(?i)(<)((\\w[^\\s>]*))(?=\\s|/?>)(?:(([^\"'>]|\"[^\"]*\"|'[^']*')*)(>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.other.invalid.start.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.illegal.unrecognized-tag.html"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "end": "(?i)(</)((\\2))\\s*(>)|(/>)|(?=</\\w+)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.other.invalid.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.illegal.unrecognized-tag.html"
+ },
+ "4": {
+ "name": "punctuation.definition.tag.end.html"
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.element.other.invalid.html",
+ "patterns": [
+ {
+ "begin": "(?<!>)\\G",
+ "end": "(?=/>)|>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.other.invalid.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "include": "#tags"
+ }
+ ]
+ },
+ {
+ "include": "#tags-invalid"
+ }
+ ]
+ }
+ }
+ },
+ "tags-invalid": {
+ "patterns": [
+ {
+ "begin": "(</?)((\\w[^\\s>]*))(?<!/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.illegal.unrecognized-tag.html"
+ }
+ },
+ "end": "((?: ?/)?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.other.$2.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ }
+ ]
+ },
+ "tags-valid": {
+ "patterns": [
+ {
+ "begin": "(^[ \\t]+)?(?=<(?i:style)\\b(?!-))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.embedded.leading.html"
+ }
+ },
+ "end": "(?!\\G)([ \\t]*$\\n?)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.embedded.trailing.html"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)(<)(style)(?=\\s|/?>)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.style.start.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": "(?i)((<)/)(style)\\s*(>)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.style.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "source.css-ignored-vscode"
+ },
+ "3": {
+ "name": "entity.name.tag.html"
+ },
+ "4": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.embedded.block.html",
+ "patterns": [
+ {
+ "begin": "\\G",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "end": "(>)",
+ "name": "meta.tag.metadata.style.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?!\\G)",
+ "end": "(?=</(?i:style))",
+ "name": "source.css",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=<(?i:script)\\b(?!-))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.embedded.leading.html"
+ }
+ },
+ "end": "(?!\\G)([ \\t]*$\\n?)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.embedded.trailing.html"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(<)((?i:script))\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.script.start.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": "(/)((?i:script))(>)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.script.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.embedded.block.html",
+ "patterns": [
+ {
+ "begin": "\\G",
+ "end": "(?=/)",
+ "patterns": [
+ {
+ "begin": "(>)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.script.start.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "end": "((<))(?=/(?i:script))",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.script.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "source.js-ignored-vscode"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G",
+ "end": "(?=</(?i:script))",
+ "name": "source.js",
+ "patterns": [
+ {
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.js"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.js"
+ }
+ },
+ "end": "(?=</script)|\\n",
+ "name": "comment.line.double-slash.js"
+ }
+ ]
+ },
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.js"
+ }
+ },
+ "end": "\\*/|(?=</script)",
+ "name": "comment.block.js"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\G",
+ "end": "(?ix:\n\t\t\t\t\t\t\t\t\t\t\t\t(?=>\t\t\t\t\t\t\t\t\t\t\t# Tag without type attribute\n\t\t\t\t\t\t\t\t\t\t\t\t | type(?=[\\s=])\n\t\t\t\t\t\t\t\t\t\t\t\t \t(?!\\s*=\\s*\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t''\t\t\t\t\t\t\t\t# Empty\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t | \"\"\t\t\t\t\t\t\t\t\t# Values\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t | ('|\"|)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttext/\t\t\t\t\t\t\t# Text mime-types\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tjavascript(1\\.[0-5])?\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | x-javascript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | jscript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | livescript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | (x-)?ecmascript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | babel\t\t\t\t\t\t# Javascript variant currently\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t\t\t\t\t\t\t\t# recognized as such\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | application/\t\t\t\t\t# Application mime-types\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t(x-)?javascript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | (x-)?ecmascript\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t | module\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t \t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\\s\"'>]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t)",
+ "name": "meta.tag.metadata.script.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?ix:\n\t\t\t\t\t\t\t\t\t\t\t\t(?=\n\t\t\t\t\t\t\t\t\t\t\t\t\ttype\\s*=\\s*\n\t\t\t\t\t\t\t\t\t\t\t\t\t('|\"|)\n\t\t\t\t\t\t\t\t\t\t\t\t\ttext/\n\t\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tx-handlebars\n\t\t\t\t\t\t\t\t\t\t\t\t\t | (x-(handlebars-)?|ng-)?template\n\t\t\t\t\t\t\t\t\t\t\t\t\t | html\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t\t[\\s\"'>]\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t)",
+ "end": "((<))(?=/(?i:script))",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.script.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "text.html.basic"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G",
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.metadata.script.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?!\\G)",
+ "end": "(?=</(?i:script))",
+ "name": "text.html.basic",
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?i:type))",
+ "end": "(<)(?=/(?i:script))",
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.script.end.html"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G",
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.metadata.script.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?!\\G)",
+ "end": "(?=</(?i:script))",
+ "name": "source.unknown"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<)(base|link|meta)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": "/?>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.metadata.$2.void.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<)(noscript|title)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.metadata.$2.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(</)(noscript|title)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.metadata.$2.end.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<)(col|hr|input)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": "/?>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.structure.$2.void.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.structure.$2.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(</)(address|article|aside|blockquote|body|button|caption|colgroup|datalist|dd|details|dialog|div|dl|dt|fieldset|figcaption|figure|footer|form|head|header|hgroup|html|h[1-6]|label|legend|li|main|map|menu|meter|nav|ol|optgroup|option|output|p|pre|progress|section|select|slot|summary|table|tbody|td|template|textarea|tfoot|th|thead|tr|ul)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.structure.$2.end.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<)(area|br|wbr)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": "/?>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.inline.$2.void.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.inline.$2.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(</)(a|abbr|b|bdi|bdo|cite|code|data|del|dfn|em|i|ins|kbd|mark|q|rp|rt|ruby|s|samp|small|span|strong|sub|sup|time|u|var)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.inline.$2.end.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<)(embed|img|param|source|track)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": "/?>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.object.$2.void.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<)(audio|canvas|iframe|object|picture|video)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.object.$2.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(</)(audio|canvas|iframe|object|picture|video)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.object.$2.end.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<)((basefont|isindex))(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.deprecated.html"
+ }
+ },
+ "end": "/?>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.metadata.$2.void.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<)((center|frameset|noembed|noframes))(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.deprecated.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.structure.$2.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(</)((center|frameset|noembed|noframes))(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.deprecated.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.structure.$2.end.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<)((acronym|big|blink|font|strike|tt|xmp))(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.deprecated.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.inline.$2.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(</)((acronym|big|blink|font|strike|tt|xmp))(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.deprecated.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.inline.$2.end.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<)((frame))(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.deprecated.html"
+ }
+ },
+ "end": "/?>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.object.$2.void.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<)((applet))(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.deprecated.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.object.$2.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(</)((applet))(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.deprecated.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.object.$2.end.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.illegal.no-longer-supported.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.other.$2.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(</)((dir|keygen|listing|menuitem|plaintext|spacer))(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "invalid.illegal.no-longer-supported.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.other.$2.end.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "include": "#math"
+ },
+ {
+ "include": "#svg"
+ },
+ {
+ "begin": "(<)([a-zA-Z][.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*-[\\-.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": "/?>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.custom.start.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ {
+ "begin": "(</)([a-zA-Z][.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*-[\\-.0-9_a-zA-Z\\x{00B7}\\x{00C0}-\\x{00D6}\\x{00D8}-\\x{00F6}\\x{00F8}-\\x{037D}\\x{037F}-\\x{1FFF}\\x{200C}-\\x{200D}\\x{203F}-\\x{2040}\\x{2070}-\\x{218F}\\x{2C00}-\\x{2FEF}\\x{3001}-\\x{D7FF}\\x{F900}-\\x{FDCF}\\x{FDF0}-\\x{FFFD}\\x{10000}-\\x{EFFFF}]*)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.custom.end.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ }
+ ]
+ },
+ "xml-processing": {
+ "begin": "(<\\?)(xml)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": "(\\?>)",
+ "name": "meta.tag.metadata.processing.xml.html",
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/http.tmLanguage.json b/node_modules/shiki/languages/http.tmLanguage.json
new file mode 100644
index 0000000..80f1614
--- /dev/null
+++ b/node_modules/shiki/languages/http.tmLanguage.json
@@ -0,0 +1,297 @@
+{
+ "scopeName": "source.http",
+ "fileTypes": ["http", "rest"],
+ "keyEquivalent": "^~H",
+ "name": "http",
+ "patterns": [
+ {
+ "begin": "^\\s*(?=curl)",
+ "name": "http.request.curl",
+ "end": "^\\s*(\\#{3,}.*?)?\\s*$",
+ "endCaptures": {
+ "0": {
+ "name": "comment.line.sharp.http"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.shell"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*(?=(\\[|{[^{]))",
+ "name": "http.request.body.json",
+ "end": "^\\s*(\\#{3,}.*?)?\\s*$",
+ "endCaptures": {
+ "0": {
+ "name": "comment.line.sharp.http"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.json"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(?=<\\S)",
+ "name": "http.request.body.xml",
+ "end": "^\\s*(\\#{3,}.*?)?\\s*$",
+ "endCaptures": {
+ "0": {
+ "name": "comment.line.sharp.http"
+ }
+ },
+ "patterns": [
+ {
+ "include": "text.xml"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*(?=(query|mutation))",
+ "name": "http.request.body.graphql",
+ "end": "^\\s*(\\#{3,}.*?)?\\s*$",
+ "endCaptures": {
+ "0": {
+ "name": "comment.line.sharp.http"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.graphql"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*(?=(query|mutation))",
+ "name": "http.request.body.graphql",
+ "end": "^\\{\\s*$",
+ "patterns": [
+ {
+ "include": "source.graphql"
+ }
+ ]
+ },
+ {
+ "include": "#metadata"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.http"
+ },
+ "2": {
+ "name": "variable.other.http"
+ },
+ "3": {
+ "name": "string.other.http"
+ }
+ },
+ "match": "^\\s*(@)([^\\s=]+)\\s*=\\s*(.*?)\\s*$",
+ "name": "http.filevariable"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.http"
+ },
+ "2": {
+ "name": "variable.other.http"
+ },
+ "3": {
+ "name": "string.other.http"
+ }
+ },
+ "match": "^\\s*(\\?|&)([^=\\s]+)=(.*)$",
+ "name": "http.query"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.name.tag.http"
+ },
+ "2": {
+ "name": "keyword.other.http"
+ },
+ "3": {
+ "name": "string.other.http"
+ }
+ },
+ "match": "^([\\w\\-]+)\\s*(\\:)\\s*([^/].*?)\\s*$",
+ "name": "http.headers"
+ },
+ {
+ "include": "#request-line"
+ },
+ {
+ "include": "#response-line"
+ }
+ ],
+ "repository": {
+ "metadata": {
+ "patterns": [
+ {
+ "match": "^\\s*\\#{1,}\\s+(?:((@)name)\\s+([^\\s\\.]+))$",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.metadata"
+ },
+ "3": {
+ "name": "entity.name.type.http"
+ }
+ },
+ "name": "comment.line.sharp.http"
+ },
+ {
+ "match": "^\\s*\\/{2,}\\s+(?:((@)name)\\s+([^\\s\\.]+))$",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.metadata"
+ },
+ "3": {
+ "name": "entity.name.type.http"
+ }
+ },
+ "name": "comment.line.double-slash.http"
+ },
+ {
+ "match": "^\\s*\\#{1,}\\s+((@)note)\\s*$",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.metadata"
+ }
+ },
+ "name": "comment.line.sharp.http"
+ },
+ {
+ "match": "^\\s*\\/{2,}\\s+((@)note)\\s*$",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.metadata"
+ }
+ },
+ "name": "comment.line.double-slash.http"
+ },
+ {
+ "match": "^\\s*\\#{1,}\\s+(?:((@)prompt)\\s+([^\\s]+)(?:\\s+(.*))?\\s*)$",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.metadata"
+ },
+ "3": {
+ "name": "variable.other.http"
+ },
+ "4": {
+ "name": "string.other.http"
+ }
+ },
+ "name": "comment.line.sharp.http"
+ },
+ {
+ "match": "^\\s*\\/{2,}\\s+(?:((@)prompt)\\s+([^\\s]+)(?:\\s+(.*))?\\s*)$",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.metadata"
+ },
+ "3": {
+ "name": "variable.other.http"
+ },
+ "4": {
+ "name": "string.other.http"
+ }
+ },
+ "name": "comment.line.double-slash.http"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "match": "^\\s*\\#{1,}.*$",
+ "name": "comment.line.sharp.http"
+ },
+ {
+ "match": "^\\s*\\/{2,}.*$",
+ "name": "comment.line.double-slash.http"
+ }
+ ]
+ },
+ "request-line": {
+ "captures": {
+ "1": {
+ "name": "keyword.control.http"
+ },
+ "2": {
+ "name": "const.language.http"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#protocol"
+ }
+ ]
+ }
+ },
+ "match": "(?i)^(?:(get|post|put|delete|patch|head|options|connect|trace)\\s+)?\\s*(.+?)(?:\\s+(HTTP\\/\\S+))?$",
+ "name": "http.requestline"
+ },
+ "response-line": {
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#protocol"
+ }
+ ]
+ },
+ "2": {
+ "name": "constant.numeric.http"
+ },
+ "3": {
+ "name": "string.other.http"
+ }
+ },
+ "match": "(?i)^\\s*(HTTP\\/\\S+)\\s([1-5][0-9][0-9])\\s(.*)$",
+ "name": "http.responseLine"
+ },
+ "protocol": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.http"
+ },
+ "2": {
+ "name": "constant.numeric.http"
+ }
+ },
+ "name": "http.version",
+ "match": "(HTTP)/(\\d+.\\d+)"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/imba.tmLanguage.json b/node_modules/shiki/languages/imba.tmLanguage.json
new file mode 100644
index 0000000..d6f366d
--- /dev/null
+++ b/node_modules/shiki/languages/imba.tmLanguage.json
@@ -0,0 +1,2693 @@
+{
+ "name": "imba",
+ "scopeName": "source.imba",
+ "fileTypes": ["imba", "imba2"],
+ "uuid": "ef98eb90-bf9b-11e4-bb52-0800200c9a67",
+ "patterns": [
+ {
+ "include": "#root"
+ },
+ {
+ "name": "comment.line.shebang.imba",
+ "match": "\\A(#!).*(?=$)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.imba"
+ }
+ }
+ }
+ ],
+ "repository": {
+ "root": {
+ "patterns": [
+ {
+ "include": "#block"
+ }
+ ]
+ },
+ "block": {
+ "patterns": [
+ {
+ "include": "#style-declaration"
+ },
+ {
+ "include": "#object-keys"
+ },
+ {
+ "include": "#tag-literal"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#plain-identifiers"
+ },
+ {
+ "include": "#plain-accessors"
+ },
+ {
+ "include": "#pairs"
+ },
+ {
+ "include": "#invalid-indentation"
+ }
+ ]
+ },
+ "expr": {
+ "patterns": [
+ {
+ "include": "#style-declaration"
+ },
+ {
+ "include": "#object-keys"
+ },
+ {
+ "include": "#tag-literal"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#plain-identifiers"
+ },
+ {
+ "include": "#plain-accessors"
+ },
+ {
+ "include": "#pairs"
+ }
+ ]
+ },
+ "literal": {
+ "patterns": [
+ {
+ "include": "#number-with-unit-literal"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#boolean-literal"
+ },
+ {
+ "include": "#null-literal"
+ },
+ {
+ "include": "#undefined-literal"
+ },
+ {
+ "include": "#numericConstant-literal"
+ },
+ {
+ "include": "#this-literal"
+ },
+ {
+ "include": "#global-literal"
+ },
+ {
+ "include": "#super-literal"
+ },
+ {
+ "include": "#type-literal"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ "pairs": {
+ "patterns": [
+ {
+ "include": "#curly-braces"
+ },
+ {
+ "include": "#square-braces"
+ },
+ {
+ "include": "#round-braces"
+ }
+ ]
+ },
+ "curly-braces": {
+ "begin": "\\s*(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.curly.imba"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.curly.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expr"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "square-braces": {
+ "begin": "\\s*(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.square.imba"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.square.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expr"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "round-braces": {
+ "begin": "\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.round.imba"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expr"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "name": "keyword.control.imba",
+ "match": "(if|elif|else|unless|switch|when|then|do|import|export|for own|for|while|until|return|try|catch|await|finally|throw|as|continue|break|extend|augment)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.control.imba",
+ "match": "(?<=export\\s+)(default)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.control.imba",
+ "match": "(?<=import\\s+)(type)(?=\\s+[\\w\\{\\$\\_])"
+ },
+ {
+ "name": "keyword.control.imba",
+ "match": "(extend)\\s+(?=class|tag)"
+ },
+ {
+ "name": "keyword.control.imba",
+ "match": "(?<=[\\*\\}\\w\\$]\\s+)(from)(?=\\s+[\\\"\\'])"
+ },
+ {
+ "name": "storage.type.function.imba",
+ "match": "(def|get|set)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "storage.type.class.imba",
+ "match": "(tag|class|struct)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "storage.type.imba",
+ "match": "(let|const|constructor)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "storage.type.imba",
+ "match": "(prop|attr)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "storage.modifier.imba",
+ "match": "(static)\\s+"
+ },
+ {
+ "include": "#ops"
+ },
+ {
+ "name": "keyword.operator.assignment.imba",
+ "match": "(=|\\|\\|=|\\?\\?=|\\&\\&=|\\+=|\\-=|\\*=|\\^=|\\%=)"
+ },
+ {
+ "name": "keyword.operator.imba",
+ "match": "(\\>\\=?|\\<\\=?)"
+ },
+ {
+ "name": "keyword.operator.imba",
+ "match": "(of|delete|\\!?isa|typeof|in|new)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "ops": {
+ "patterns": [
+ {
+ "name": "keyword.operator.spread.imba",
+ "match": "\\.\\.\\."
+ },
+ {
+ "name": "keyword.operator.assignment.compound.imba",
+ "match": "\\*=|(?<!\\()/=|%=|\\+=|\\-=|\\?=|\\?\\?=|=\\?"
+ },
+ {
+ "name": "keyword.operator.assignment.compound.bitwise.imba",
+ "match": "\\^=\\?|\\|=\\?|\\~=\\?|\\&=|\\^=|<<=|>>=|>>>=|\\|="
+ },
+ {
+ "name": "keyword.operator.bitwise.shift.imba",
+ "match": "<<|>>>|>>"
+ },
+ {
+ "name": "keyword.operator.comparison.imba",
+ "match": "===|!==|==|!=|~="
+ },
+ {
+ "name": "keyword.operator.relational.imba",
+ "match": "<=|>=|<>|<|>"
+ },
+ {
+ "match": "(\\!)\\s*(/)(?![/*])",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.logical.imba"
+ },
+ "2": {
+ "name": "keyword.operator.arithmetic.imba"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.logical.imba",
+ "match": "\\!|&&|\\|\\||\\?\\?|or\\b(?=\\s|$)|and\\b(?=\\s|$)"
+ },
+ {
+ "name": "keyword.operator.bitwise.imba",
+ "match": "\\&|~|\\^|\\|"
+ },
+ {
+ "name": "keyword.operator.assignment.imba",
+ "match": "\\="
+ },
+ {
+ "name": "keyword.operator.decrement.imba",
+ "match": "--"
+ },
+ {
+ "name": "keyword.operator.increment.imba",
+ "match": "\\+\\+"
+ },
+ {
+ "name": "keyword.operator.arithmetic.imba",
+ "match": "%|\\*|/|-|\\+"
+ }
+ ]
+ },
+ "object-keys": {
+ "patterns": [
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?\\:",
+ "name": "meta.object-literal.key"
+ }
+ ]
+ },
+ "invalid-indentation": {
+ "patterns": [
+ {
+ "name": "invalid.whitespace",
+ "match": "^[\\ ]+"
+ },
+ {
+ "name": "invalid.whitespace",
+ "match": "^\\t+\\s+"
+ }
+ ]
+ },
+ "style-property": {
+ "patterns": [
+ {
+ "name": "meta.property-name.css",
+ "begin": "(?=(?:[\\@\\.]+[\\!\\<\\>]?)?[\\w\\-\\$]+(?:[\\@\\.]+[\\!\\<\\>]?[\\w\\-\\$]+)*(?:\\s*\\:))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.calc.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\s*\\:",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.separator.key-value.css"
+ }
+ },
+ "patterns": [
+ {
+ "name": "support.type.property-name.variable.css",
+ "match": "(?:--|\\$)[\\w\\-\\$]+"
+ },
+ {
+ "name": "support.type.property-name.modifier.breakpoint.css",
+ "match": "\\@[\\!\\<\\>]?[0-9]+"
+ },
+ {
+ "name": "support.type.property-name.modifier.css",
+ "match": "\\@[\\w\\-\\$]+"
+ },
+ {
+ "name": "support.type.property-name.modifier.up.css",
+ "match": "\\.\\.[\\w\\-\\$]+"
+ },
+ {
+ "name": "support.type.property-name.modifier.is.css",
+ "match": "\\.[\\w\\-\\$]+"
+ },
+ {
+ "name": "support.type.property-name.css",
+ "match": "[\\w\\-\\$]+"
+ }
+ ]
+ }
+ ]
+ },
+ "style-expr": {
+ "patterns": [
+ {
+ "match": "(\\b[0-9][0-9_]*)(\\w+|%)?",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.integer.decimal.css"
+ },
+ "2": {
+ "name": "keyword.other.unit.css"
+ }
+ }
+ },
+ {
+ "name": "support.constant.property-value.var.css",
+ "match": "--[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?"
+ },
+ {
+ "name": "support.constant.property-value.size.css",
+ "match": "(x+s|sm-|md-|lg-|sm|md|lg|x+l|hg|x+h)(?![\\w-])"
+ },
+ {
+ "name": "support.constant.property-value.css",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?"
+ },
+ {
+ "name": "meta.function.css",
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#style-expr"
+ }
+ ]
+ }
+ ]
+ },
+ "inline-styles": {
+ "patterns": [
+ {
+ "include": "#style-property"
+ },
+ {
+ "include": "#css-property-values"
+ },
+ {
+ "include": "#style-expr"
+ }
+ ]
+ },
+ "style-declaration": {
+ "name": "meta.style.imba",
+ "begin": "^(\\t*)(?:(global|local|export)\\s+)?(?:(scoped)\\s+)?(css)\\s",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control.export.imba"
+ },
+ "3": {
+ "name": "storage.modifier.imba"
+ },
+ "4": {
+ "name": "storage.type.style.imba"
+ }
+ },
+ "end": "^(?!(\\1\\t|\\s*$))",
+ "patterns": [
+ {
+ "include": "#css-selector"
+ },
+ {
+ "include": "#css-comment"
+ },
+ {
+ "include": "#nested-css-selector"
+ },
+ {
+ "include": "#inline-styles"
+ }
+ ]
+ },
+ "nested-style-declaration": {
+ "name": "meta.style.imba",
+ "begin": "^(\\t+)(?=[\\n^]*\\&)",
+ "end": "^(?!(\\1\\t|\\s*$))",
+ "patterns": [
+ {
+ "include": "#nested-css-selector"
+ },
+ {
+ "include": "#inline-styles"
+ }
+ ]
+ },
+ "css-size-keywords": [
+ {
+ "name": "support.constant.size.property-value.css",
+ "match": "(x+s|sm-|md-|lg-|sm|md|lg|x+l|hg|x+h)(?![\\w-])"
+ }
+ ],
+ "css-color-keywords": {
+ "patterns": [
+ {
+ "name": "support.constant.color.w3c-standard-color-name.css",
+ "match": "(?i)(?<![\\w-])(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)(?![\\w-])"
+ },
+ {
+ "name": "support.constant.color.w3c-extended-color-name.css",
+ "match": "(?xi) (?<![\\w-])\n(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood\n|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan\n|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange\n|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise\n|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen\n|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki\n|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow\n|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray\n|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue\n|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise\n|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered\n|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum\n|powderblue|rebeccapurple|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell\n|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato\n|transparent|turquoise|violet|wheat|whitesmoke|yellowgreen)\n(?![\\w-])"
+ },
+ {
+ "name": "support.constant.color.current.css",
+ "match": "(?i)(?<![\\w-])currentColor(?![\\w-])"
+ }
+ ]
+ },
+ "css-functions": {
+ "patterns": [
+ {
+ "name": "meta.function.calc.css",
+ "begin": "(?i)(?<![\\w-])(calc)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.calc.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.operator.arithmetic.css",
+ "match": "[*/]|(?<=\\s|^)[-+](?=\\s|$)"
+ },
+ {
+ "include": "#css-property-values"
+ }
+ ]
+ },
+ {
+ "name": "meta.function.color.css",
+ "begin": "(?i)(?<![\\w-])(rgba?|hsla?)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.misc.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#css-property-values"
+ }
+ ]
+ },
+ {
+ "name": "meta.function.gradient.css",
+ "begin": "(?xi) (?<![\\w-])\n(\n (?:-webkit-|-moz-|-o-)? # Accept prefixed/historical variants\n (?:repeating-)? # \"Repeating\"-type gradient\n (?:linear|radial|conic) # Shape\n -gradient\n)\n(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.gradient.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.operator.gradient.css",
+ "match": "(?i)(?<![\\w-])(from|to|at)(?![\\w-])"
+ },
+ {
+ "include": "#css-property-values"
+ }
+ ]
+ },
+ {
+ "name": "meta.function.gradient.invalid.deprecated.gradient.css",
+ "begin": "(?i)(?<![\\w-])(-webkit-gradient)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "invalid.deprecated.gradient.function.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?i)(?<![\\w-])(from|to|color-stop)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "invalid.deprecated.function.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#css-property-values"
+ }
+ ]
+ },
+ {
+ "include": "#css-property-values"
+ }
+ ]
+ },
+ {
+ "name": "meta.function.misc.css",
+ "begin": "(?xi) (?<![\\w-])\n(annotation|attr|blur|brightness|character-variant|contrast|counters?\n|cross-fade|drop-shadow|element|fit-content|format|grayscale|hue-rotate\n|image-set|invert|local|minmax|opacity|ornaments|repeat|saturate|sepia\n|styleset|stylistic|swash|symbols)\n(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.misc.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "name": "constant.numeric.other.density.css",
+ "match": "(?i)(?<=[,\\s\"]|\\*/|^)\\d+x(?=[\\s,\"')]|/\\*|$)"
+ },
+ {
+ "include": "#css-property-values"
+ },
+ {
+ "name": "variable.parameter.misc.css",
+ "match": "[^'\"),\\s]+"
+ }
+ ]
+ },
+ {
+ "name": "meta.function.shape.css",
+ "begin": "(?i)(?<![\\w-])(circle|ellipse|inset|polygon|rect)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.shape.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.operator.shape.css",
+ "match": "(?i)(?<=\\s|^|\\*/)(at|round)(?=\\s|/\\*|$)"
+ },
+ {
+ "include": "#css-property-values"
+ }
+ ]
+ },
+ {
+ "name": "meta.function.timing-function.css",
+ "begin": "(?i)(?<![\\w-])(cubic-bezier|steps)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.timing-function.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "name": "support.constant.step-direction.css",
+ "match": "(?i)(?<![\\w-])(start|end)(?=\\s*\\)|$)"
+ },
+ {
+ "include": "#css-property-values"
+ }
+ ]
+ },
+ {
+ "begin": "(?xi) (?<![\\w-])\n( (?:translate|scale|rotate)(?:[XYZ]|3D)?\n| matrix(?:3D)?\n| skew[XY]?\n| perspective\n)\n(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.transform.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#css-property-values"
+ }
+ ]
+ }
+ ]
+ },
+ "css-numeric-values": {
+ "patterns": [
+ {
+ "name": "constant.other.color.rgb-value.hex.css",
+ "match": "(#)(?:[0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.css"
+ }
+ }
+ },
+ {
+ "name": "constant.numeric.css",
+ "match": "(?xi) (?<![\\w-])\n[-+]? # Sign indicator\n\n(?: # Numerals\n [0-9]+ (?:\\.[0-9]+)? # Integer/float with leading digits\n | \\.[0-9]+ # Float without leading digits\n)\n\n(?: # Scientific notation\n (?<=[0-9]) # Exponent must follow a digit\n E # Exponent indicator\n [-+]? # Possible sign indicator\n [0-9]+ # Exponent value\n)?\n\n(?: # Possible unit for data-type:\n (%) # - Percentage\n | ( deg|grad|rad|turn # - Angle\n | Hz|kHz # - Frequency\n | ch|cm|em|ex|fr|in|mm|mozmm| # - Length\n pc|pt|px|q|rem|vh|vmax|vmin|\n vw\n | dpi|dpcm|dppx # - Resolution\n | s|ms # - Time\n )\n \\b # Boundary checking intentionally lax to\n)? # facilitate embedding in CSS-like grammars",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.percentage.css"
+ },
+ "2": {
+ "name": "keyword.other.unit.${2:/downcase}.css"
+ }
+ }
+ }
+ ]
+ },
+ "css-combinators": {
+ "patterns": [
+ {
+ "name": "punctuation.separator.combinator.css",
+ "match": ">>>|>>|>|\\+|~"
+ },
+ {
+ "name": "keyword.other.parent-selector.css",
+ "match": "&"
+ }
+ ]
+ },
+ "css-pseudo-classes": {
+ "name": "entity.other.attribute-name.pseudo-class.css",
+ "match": "(?xi)\n(:)(:*)\n(?: active|any-link|checked|default|defined|disabled|empty|enabled|first\n | (?:first|last|only)-(?:child|of-type)|focus|focus-visible|focus-within\n | fullscreen|host|hover|in-range|indeterminate|invalid|left|link\n | optional|out-of-range|placeholder-shown|read-only|read-write\n | required|right|root|scope|target|unresolved\n | valid|visited\n)(?![\\w-]|\\s*[;}])",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "2": {
+ "name": "invalid.illegal.colon.css"
+ }
+ }
+ },
+ "css-pseudo-elements": {
+ "name": "entity.other.attribute-name.pseudo-element.css",
+ "match": "(?xi)\n(?:\n (::?) # Elements using both : and :: notation\n (?: after\n | before\n | first-letter\n | first-line\n | (?:-(?:ah|apple|atsc|epub|hp|khtml|moz\n |ms|o|rim|ro|tc|wap|webkit|xv)\n | (?:mso|prince))\n -[a-z-]+\n )\n |\n (::) # Double-colon only\n (?: backdrop\n | content\n | grammar-error\n | marker\n | placeholder\n | selection\n | shadow\n | spelling-error\n )\n)\n(?![\\w-]|\\s*[;}])",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "2": {
+ "name": "punctuation.definition.entity.css"
+ }
+ }
+ },
+ "css-commas": {
+ "name": "punctuation.separator.list.comma.css",
+ "match": ","
+ },
+ "css-comment": {
+ "patterns": [
+ {
+ "name": "comment.line.imba",
+ "match": "\\#(\\s.+)?(\\n|$)"
+ },
+ {
+ "name": "comment.line.imba",
+ "match": "(^\\t+)(\\#(\\s.+)?(\\n|$))"
+ }
+ ]
+ },
+ "css-escapes": {
+ "patterns": [
+ {
+ "name": "constant.character.escape.codepoint.css",
+ "match": "\\\\[0-9a-fA-F]{1,6}"
+ },
+ {
+ "name": "constant.character.escape.newline.css",
+ "begin": "\\\\$\\s*",
+ "end": "^(?<!\\G)"
+ },
+ {
+ "name": "constant.character.escape.css",
+ "match": "\\\\."
+ }
+ ]
+ },
+ "css-selector": {
+ "name": "meta.selector.css",
+ "begin": "(?<=css\\s)(?!(?:[\\@\\.]+[\\!\\<\\>]?)?[\\w\\-\\$]+(?:[\\@\\.]+[\\!\\<\\>]?[\\w\\-\\$]+)*(?:\\s*\\:))",
+ "end": "(\\s*(?=(?:[\\@\\.]+[\\!\\<\\>]?)?[\\w\\-\\$]+(?:[\\@\\.]+[\\!\\<\\>]?[\\w\\-\\$]+)*(?:\\s*\\:))|\\s*$|(?=\\s+\\#\\s))",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.separator.sel-properties.css"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#css-selector-innards"
+ }
+ ]
+ },
+ "nested-css-selector": {
+ "name": "meta.selector.css",
+ "begin": "(^\\t+)(?!(?:[\\@\\.]+[\\!\\<\\>]?)?[\\w\\-\\$]+(?:[\\@\\.]+[\\!\\<\\>]?[\\w\\-\\$]+)*(?:\\s*\\:))",
+ "end": "(\\s*(?=(?:[\\@\\.]+[\\!\\<\\>]?)?[\\w\\-\\$]+(?:[\\@\\.]+[\\!\\<\\>]?[\\w\\-\\$]+)*(?:\\s*\\:))|\\s*$|(?=\\s+\\#\\s))",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.separator.sel-properties.css"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#css-selector-innards"
+ }
+ ]
+ },
+ "inline-css-selector": {
+ "name": "meta.selector.css",
+ "begin": "(^\\t+)(?!(?:[\\@\\.]+[\\!\\<\\>]?)?[\\w\\-\\$]+(?:[\\@\\.]+[\\!\\<\\>]?[\\w\\-\\$]+)*(?:\\s*\\:))",
+ "end": "(\\s*(?=(?:[\\@\\.]+[\\!\\<\\>]?)?[\\w\\-\\$]+(?:[\\@\\.]+[\\!\\<\\>]?[\\w\\-\\$]+)*(?:\\s*\\:)|\\)|\\])|\\s*$)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.separator.sel-properties.css"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#css-selector-innards"
+ }
+ ]
+ },
+ "css-selector-innards": {
+ "patterns": [
+ {
+ "include": "#css-commas"
+ },
+ {
+ "include": "#css-escapes"
+ },
+ {
+ "include": "#css-combinators"
+ },
+ {
+ "name": "entity.name.tag.wildcard.css",
+ "match": "\\*"
+ },
+ {
+ "name": "meta.attribute-selector.css",
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.entity.begin.bracket.square.css"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.entity.end.bracket.square.css"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "match": "(?<=[\"'\\s]|^|\\*/)\\s*([iI])\\s*(?=[\\s\\]]|/\\*|$)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.ignore-case.css"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?<==)\\s*((?!/\\*)(?:[^\\\\\"'\\s\\]]|\\\\.)+)",
+ "captures": {
+ "1": {
+ "name": "string.unquoted.attribute-value.css"
+ }
+ }
+ },
+ {
+ "include": "#css-escapes"
+ },
+ {
+ "name": "keyword.operator.pattern.css",
+ "match": "[~|^$*]?="
+ },
+ {
+ "name": "punctuation.separator.css",
+ "match": "\\|"
+ },
+ {
+ "match": "(?x)\n# Qualified namespace prefix\n( -?(?!\\d)(?:[\\w-]|[^\\\\x00-\\\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+\n| \\*\n)\n# Lookahead to ensure there's a valid identifier ahead\n(?=\n \\| (?!\\s|=|$|\\])\n (?: -?(?!\\d)\n | [\\\\\\w-]\n | [^\\\\x00-\\\\x7F]\n )\n)",
+ "captures": {
+ "1": {
+ "name": "entity.other.namespace-prefix.css"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(-?(?!\\d)(?>[\\w-]|[^\\\\x00-\\\\x7F]|\\\\(?:[0-9a-fA-F]{1,6}|.))+)\n\\s*\n(?=[~|^\\]$*=]|/\\*)",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.css"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "include": "#css-pseudo-classes"
+ },
+ {
+ "include": "#css-pseudo-elements"
+ }
+ ]
+ },
+ "css-property-values": {
+ "patterns": [
+ {
+ "include": "#css-commas"
+ },
+ {
+ "include": "#css-escapes"
+ },
+ {
+ "include": "#css-functions"
+ },
+ {
+ "include": "#css-numeric-values"
+ },
+ {
+ "include": "#css-size-keywords"
+ },
+ {
+ "include": "#css-color-keywords"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "name": "keyword.other.important.css",
+ "match": "!\\s*important(?![\\w-])"
+ }
+ ]
+ },
+ "tag-literal": {
+ "patterns": [
+ {
+ "name": "meta.tag.imba",
+ "begin": "(<)(?=[\\w\\{\\[\\.\\#\\$\\@])",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.tag.open.imba"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.tag.close.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-content"
+ }
+ ],
+ "contentName": "meta.tag.attributes.imba"
+ }
+ ]
+ },
+ "tag-content": {
+ "patterns": [
+ {
+ "include": "#tag-name"
+ },
+ {
+ "include": "#tag-expr-name"
+ },
+ {
+ "include": "#tag-interpolated-content"
+ },
+ {
+ "include": "#tag-interpolated-parens"
+ },
+ {
+ "include": "#tag-interpolated-brackets"
+ },
+ {
+ "include": "#tag-event-handler"
+ },
+ {
+ "include": "#tag-classname"
+ },
+ {
+ "include": "#tag-ref"
+ },
+ {
+ "include": "#tag-attr-value"
+ },
+ {
+ "include": "#tag-attr-name"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "tag-name": {
+ "patterns": [
+ {
+ "name": "entity.name.tag.special.imba",
+ "match": "(?<=<)(self|global|slot)(?=[\\.\\[\\>\\s\\(])"
+ }
+ ]
+ },
+ "tag-expr-name": {
+ "begin": "(?<=<)(?=[\\w\\{])",
+ "contentName": "entity.name.tag.imba",
+ "end": "(?=[\\.\\[\\>\\s\\(])",
+ "patterns": [
+ {
+ "include": "#tag-interpolated-content"
+ }
+ ]
+ },
+ "tag-interpolated-content": {
+ "name": "meta.tag.expression.imba",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.tag.imba"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.tag.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ],
+ "contentName": "meta.embedded.line.imba"
+ },
+ "tag-interpolated-parens": {
+ "name": "meta.tag.expression.imba",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.tag.imba"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.tag.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ],
+ "contentName": "meta.embedded.line.imba"
+ },
+ "tag-interpolated-brackets": {
+ "name": "meta.tag.expression.imba",
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.tag.imba"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.tag.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#inline-css-selector"
+ },
+ {
+ "include": "#inline-styles"
+ }
+ ],
+ "contentName": "meta.embedded.line.imba"
+ },
+ "tag-classname": {
+ "begin": "\\.",
+ "patterns": [
+ {
+ "include": "#tag-interpolated-content"
+ }
+ ],
+ "end": "(?=[\\.\\[\\>\\s\\(\\=])",
+ "contentName": "entity.other.attribute-name.class.css"
+ },
+ "tag-ref": {
+ "match": "(\\$[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)",
+ "name": "entity.other.attribute-name.reference.css"
+ },
+ "tag-event-handler": {
+ "begin": "(\\@[\\w$_]+(?:\\-[\\w$_]+)*)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.other.event-name.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-interpolated-content"
+ },
+ {
+ "include": "#tag-interpolated-parens"
+ },
+ {
+ "name": "entity.other.event-modifier.imba",
+ "begin": "\\.",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-interpolated-parens"
+ },
+ {
+ "include": "#tag-interpolated-content"
+ }
+ ],
+ "end": "(?=[\\.\\[\\>\\s\\=]|$)"
+ }
+ ],
+ "end": "(?=[\\[\\>\\s\\=])",
+ "contentName": "entity.other.tag.event"
+ },
+ "tag-attr-name": {
+ "begin": "([\\w$_]+(?:\\-[\\w$_]+)*)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.other.attribute-name.imba"
+ }
+ },
+ "end": "(?=[\\s\\.\\[\\>\\=])",
+ "contentName": "entity.other.attribute-name.imba"
+ },
+ "tag-attr-value": {
+ "begin": "(\\=)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.tag.assignment"
+ }
+ },
+ "end": "(?=>|\\s)",
+ "contentName": "meta.tag.attribute-value.imba",
+ "patterns": [
+ {
+ "include": "#expr"
+ }
+ ]
+ },
+ "expression": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.imba"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expr"
+ }
+ ]
+ },
+ {
+ "include": "#tag-literal"
+ },
+ {
+ "include": "#expressionWithoutIdentifiers"
+ },
+ {
+ "include": "#identifiers"
+ },
+ {
+ "include": "#expressionPunctuations"
+ }
+ ]
+ },
+ "expressionWithoutIdentifiers": {
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#function-expression"
+ },
+ {
+ "include": "#class-expression"
+ },
+ {
+ "include": "#ternary-expression"
+ },
+ {
+ "include": "#new-expr"
+ },
+ {
+ "include": "#instanceof-expr"
+ },
+ {
+ "include": "#object-literal"
+ },
+ {
+ "include": "#expression-operators"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#support-objects"
+ }
+ ]
+ },
+ "expressionPunctuations": {
+ "patterns": [
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-accessor"
+ }
+ ]
+ },
+ "decorator": {
+ "name": "meta.decorator.imba",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@(?!\\@)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.decorator.imba"
+ }
+ },
+ "end": "(?=\\s)",
+ "patterns": [
+ {
+ "include": "#expr"
+ }
+ ]
+ },
+ "array-literal": {
+ "name": "meta.array.literal.imba",
+ "begin": "\\s*(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.square.imba"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.square.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expr"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "type-literal": {
+ "name": "meta.type.annotation.imba",
+ "begin": "(\\\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.type.annotation.open.imba"
+ }
+ },
+ "end": "(?=[\\s\\]\\)\\,\\.\\=\\}]|$)",
+ "patterns": [
+ {
+ "include": "#type-brackets"
+ }
+ ]
+ },
+ "type-brackets": {
+ "patterns": [
+ {
+ "begin": "{",
+ "end": "}",
+ "patterns": [
+ {
+ "include": "#type-brackets"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#type-brackets"
+ }
+ ]
+ },
+ {
+ "begin": "\\<",
+ "end": "\\>",
+ "patterns": [
+ {
+ "include": "#type-brackets"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#type-brackets"
+ }
+ ]
+ }
+ ]
+ },
+ "numeric-literal": {
+ "patterns": [
+ {
+ "name": "constant.numeric.hex.imba",
+ "match": "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.numeric.bigint.imba"
+ }
+ }
+ },
+ {
+ "name": "constant.numeric.binary.imba",
+ "match": "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.numeric.bigint.imba"
+ }
+ }
+ },
+ {
+ "name": "constant.numeric.octal.imba",
+ "match": "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.numeric.bigint.imba"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b) # 1\n)(?!\\$)",
+ "captures": {
+ "0": {
+ "name": "constant.numeric.decimal.imba"
+ },
+ "1": {
+ "name": "meta.delimiter.decimal.period.imba"
+ },
+ "2": {
+ "name": "storage.type.numeric.bigint.imba"
+ },
+ "3": {
+ "name": "meta.delimiter.decimal.period.imba"
+ },
+ "4": {
+ "name": "storage.type.numeric.bigint.imba"
+ },
+ "5": {
+ "name": "meta.delimiter.decimal.period.imba"
+ },
+ "6": {
+ "name": "storage.type.numeric.bigint.imba"
+ },
+ "7": {
+ "name": "storage.type.numeric.bigint.imba"
+ },
+ "8": {
+ "name": "meta.delimiter.decimal.period.imba"
+ },
+ "9": {
+ "name": "storage.type.numeric.bigint.imba"
+ },
+ "10": {
+ "name": "meta.delimiter.decimal.period.imba"
+ },
+ "11": {
+ "name": "storage.type.numeric.bigint.imba"
+ },
+ "12": {
+ "name": "meta.delimiter.decimal.period.imba"
+ },
+ "13": {
+ "name": "storage.type.numeric.bigint.imba"
+ },
+ "14": {
+ "name": "storage.type.numeric.bigint.imba"
+ }
+ }
+ }
+ ]
+ },
+ "number-with-unit-literal": {
+ "patterns": [
+ {
+ "match": "([0-9]+)([a-z]+|\\%)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.imba"
+ },
+ "2": {
+ "name": "keyword.other.unit.imba"
+ }
+ }
+ },
+ {
+ "match": "([0-9]*\\.[0-9]+(?:[eE][\\-+]?[0-9]+)?)([a-z]+|\\%)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.decimal.imba"
+ },
+ "2": {
+ "name": "keyword.other.unit.imba"
+ }
+ }
+ }
+ ]
+ },
+ "boolean-literal": {
+ "patterns": [
+ {
+ "name": "constant.language.boolean.true.imba",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(true|yes)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "constant.language.boolean.false.imba",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(false|no)(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "null-literal": {
+ "name": "constant.language.null.imba",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "this-literal": {
+ "name": "variable.language.this.imba",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|self)\\b(?!\\$)"
+ },
+ "global-literal": {
+ "name": "variable.language.global.imba",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(global)\\b(?!\\$)"
+ },
+ "super-literal": {
+ "name": "variable.language.super.imba",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)"
+ },
+ "undefined-literal": {
+ "name": "constant.language.undefined.imba",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "numericConstant-literal": {
+ "patterns": [
+ {
+ "name": "constant.language.nan.imba",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "constant.language.infinity.imba",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_\\-$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "plain-identifiers": {
+ "patterns": [
+ {
+ "name": "variable.other.constant.imba",
+ "match": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
+ },
+ {
+ "name": "variable.other.class.imba",
+ "match": "[[:upper:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\!]?"
+ },
+ {
+ "name": "variable.special.imba",
+ "match": "\\$\\d+"
+ },
+ {
+ "name": "variable.other.internal.imba",
+ "match": "\\$[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?"
+ },
+ {
+ "name": "variable.other.symbol.imba",
+ "match": "\\@\\@+[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?"
+ },
+ {
+ "name": "variable.other.readwrite.imba",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?"
+ },
+ {
+ "name": "variable.other.instance.imba",
+ "match": "\\@[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?"
+ },
+ {
+ "name": "variable.other.private.imba",
+ "match": "\\#+[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?"
+ },
+ {
+ "name": "string.symbol.imba",
+ "match": "\\:[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?"
+ }
+ ]
+ },
+ "plain-accessors": {
+ "patterns": [
+ {
+ "match": "(\\.\\.?)([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.imba"
+ },
+ "2": {
+ "name": "variable.other.property.imba"
+ }
+ }
+ }
+ ]
+ },
+ "identifiers": {
+ "patterns": [
+ {
+ "match": "(?x)(?:(?:(\\.)|(\\.\\.(?!\\s*[[:digit:]]|\\s+)))\\s*)?([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)(?=\\s*={{functionOrArrowLookup}})",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.imba"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.imba"
+ },
+ "3": {
+ "name": "entity.name.function.property.imba"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(\\.\\.(?!\\s*[[:digit:]]|\\s+)))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.imba"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.imba"
+ },
+ "3": {
+ "name": "variable.other.constant.property.imba"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(\\.\\.(?!\\s*[[:digit:]]|\\s+)))([[:upper:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\!]?)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.imba"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.imba"
+ },
+ "3": {
+ "name": "variable.other.class.property.imba"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(\\.\\.(?!\\s*[[:digit:]]|\\s+)))(\\#?[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.imba"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.imba"
+ },
+ "3": {
+ "name": "variable.other.property.imba"
+ }
+ }
+ },
+ {
+ "name": "keyword.other",
+ "match": "(for own|for|if|unless|when)\\b"
+ },
+ {
+ "name": "support.function.require",
+ "match": "require"
+ },
+ {
+ "include": "#plain-identifiers"
+ },
+ {
+ "include": "#type-literal"
+ }
+ ]
+ },
+ "type-annotation": {
+ "patterns": [
+ {
+ "include": "#type-literal"
+ }
+ ]
+ },
+ "punctuation-comma": {
+ "name": "punctuation.separator.comma.imba",
+ "match": ","
+ },
+ "punctuation-semicolon": {
+ "name": "punctuation.terminator.statement.imba",
+ "match": ";"
+ },
+ "punctuation-accessor": {
+ "match": "(?:(\\.)|(\\.\\.(?!\\s*[[:digit:]]|\\s+)))",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.imba"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.imba"
+ }
+ }
+ },
+ "string": {
+ "patterns": [
+ {
+ "include": "#qstring-single-multi"
+ },
+ {
+ "include": "#qstring-double-multi"
+ },
+ {
+ "include": "#qstring-single"
+ },
+ {
+ "include": "#qstring-double"
+ },
+ {
+ "include": "#template"
+ }
+ ]
+ },
+ "qstring-double": {
+ "name": "string.quoted.double.imba",
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.imba"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template-substitution-element"
+ },
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "qstring-single": {
+ "name": "string.quoted.single.imba",
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.imba"
+ }
+ },
+ "end": "(\\')|((?:[^\\\\\\n])$)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.imba"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "qstring-single-multi": {
+ "name": "string.quoted.single.imba",
+ "begin": "'''",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.imba"
+ }
+ },
+ "end": "'''",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "string-character-escape": {
+ "name": "constant.character.escape.imba",
+ "match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
+ },
+ "template": {
+ "patterns": [
+ {
+ "name": "string.template.imba",
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)({{typeArguments}}\\s*)?`)",
+ "end": "(?=`)",
+ "patterns": [
+ {
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?))",
+ "end": "(?=({{typeArguments}}\\s*)?`)",
+ "patterns": [
+ {
+ "name": "entity.name.function.tagged-template.imba",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "string.template.imba",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)\\s*(?=({{typeArguments}}\\s*)`)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.tagged-template.imba"
+ }
+ },
+ "end": "(?=`)",
+ "patterns": [
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ },
+ {
+ "name": "string.template.imba",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?)?(`)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.tagged-template.imba"
+ },
+ "2": {
+ "name": "punctuation.definition.string.template.begin.imba"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.template.end.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template-substitution-element"
+ },
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ }
+ ]
+ },
+ "template-substitution-element": {
+ "name": "meta.template.expression.imba",
+ "begin": "(?<!\\\\)\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.begin.imba"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.end.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expr"
+ }
+ ],
+ "contentName": "meta.embedded.line.imba"
+ },
+ "regex": {
+ "patterns": [
+ {
+ "name": "string.regexp.imba",
+ "begin": "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([gimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.imba"
+ }
+ },
+ "end": "(/)([gimsuy]*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.imba"
+ },
+ "2": {
+ "name": "keyword.other.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "name": "string.regexp.imba",
+ "begin": "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\])+\\/([gimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.imba"
+ }
+ },
+ "end": "(/)([gimsuy]*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.imba"
+ },
+ "2": {
+ "name": "keyword.other.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ }
+ ]
+ },
+ "regexp": {
+ "patterns": [
+ {
+ "name": "keyword.control.anchor.regexp",
+ "match": "\\\\[bB]|\\^|\\$"
+ },
+ {
+ "match": "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>",
+ "captures": {
+ "0": {
+ "name": "keyword.other.back-reference.regexp"
+ },
+ "1": {
+ "name": "variable.other.regexp"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.quantifier.regexp",
+ "match": "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
+ },
+ {
+ "name": "keyword.operator.or.regexp",
+ "match": "\\|"
+ },
+ {
+ "name": "meta.group.assertion.regexp",
+ "begin": "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.regexp"
+ },
+ "2": {
+ "name": "punctuation.definition.group.assertion.regexp"
+ },
+ "3": {
+ "name": "meta.assertion.look-ahead.regexp"
+ },
+ "4": {
+ "name": "meta.assertion.negative-look-ahead.regexp"
+ },
+ "5": {
+ "name": "meta.assertion.look-behind.regexp"
+ },
+ "6": {
+ "name": "meta.assertion.negative-look-behind.regexp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "name": "meta.group.regexp",
+ "begin": "\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.regexp"
+ },
+ "1": {
+ "name": "punctuation.definition.group.no-capture.regexp"
+ },
+ "2": {
+ "name": "variable.other.regexp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "name": "constant.other.character-class.set.regexp",
+ "begin": "(\\[)(\\^)?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.regexp"
+ },
+ "2": {
+ "name": "keyword.operator.negation.regexp"
+ }
+ },
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "constant.other.character-class.range.regexp",
+ "match": "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",
+ "captures": {
+ "1": {
+ "name": "constant.character.numeric.regexp"
+ },
+ "2": {
+ "name": "constant.character.control.regexp"
+ },
+ "3": {
+ "name": "constant.character.escape.backslash.regexp"
+ },
+ "4": {
+ "name": "constant.character.numeric.regexp"
+ },
+ "5": {
+ "name": "constant.character.control.regexp"
+ },
+ "6": {
+ "name": "constant.character.escape.backslash.regexp"
+ }
+ }
+ },
+ {
+ "include": "#regex-character-class"
+ }
+ ]
+ },
+ {
+ "include": "#regex-character-class"
+ }
+ ]
+ },
+ "regex-character-class": {
+ "patterns": [
+ {
+ "name": "constant.other.character-class.regexp",
+ "match": "\\\\[wWsSdDtrnvf]|\\."
+ },
+ {
+ "name": "constant.character.numeric.regexp",
+ "match": "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"
+ },
+ {
+ "name": "constant.character.control.regexp",
+ "match": "\\\\c[A-Z]"
+ },
+ {
+ "name": "constant.character.escape.backslash.regexp",
+ "match": "\\\\."
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "name": "comment.block.documentation.imba",
+ "begin": "/\\*\\*(?!/)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.imba"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.imba"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#docblock"
+ }
+ ]
+ },
+ {
+ "name": "comment.block.imba",
+ "begin": "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.imba"
+ },
+ "2": {
+ "name": "storage.type.internaldeclaration.imba"
+ },
+ "3": {
+ "name": "punctuation.decorator.internaldeclaration.imba"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.imba"
+ }
+ }
+ },
+ {
+ "name": "comment.block.imba",
+ "begin": "(###)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.imba"
+ }
+ },
+ "end": "###(?:[ \\t]*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.imba"
+ }
+ }
+ },
+ {
+ "begin": "(^[ \\t]+)?((//|\\#\\s)(?:\\s*((@)internal)(?=\\s|$))?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.imba"
+ },
+ "2": {
+ "name": "comment.line.double-slash.imba"
+ },
+ "3": {
+ "name": "punctuation.definition.comment.imba"
+ },
+ "4": {
+ "name": "storage.type.internaldeclaration.imba"
+ },
+ "5": {
+ "name": "punctuation.decorator.internaldeclaration.imba"
+ }
+ },
+ "end": "(?=$)",
+ "contentName": "comment.line.double-slash.imba"
+ }
+ ]
+ },
+ "single-line-comment-consuming-line-ending": {
+ "begin": "(^[ \\t]+)?((//|\\#\\s)(?:\\s*((@)internal)(?=\\s|$))?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.imba"
+ },
+ "2": {
+ "name": "comment.line.double-slash.imba"
+ },
+ "3": {
+ "name": "punctuation.definition.comment.imba"
+ },
+ "4": {
+ "name": "storage.type.internaldeclaration.imba"
+ },
+ "5": {
+ "name": "punctuation.decorator.internaldeclaration.imba"
+ }
+ },
+ "end": "(?=^)",
+ "contentName": "comment.line.double-slash.imba"
+ },
+ "directives": {
+ "name": "comment.line.triple-slash.directive.imba",
+ "begin": "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.imba"
+ }
+ },
+ "end": "(?=$)",
+ "patterns": [
+ {
+ "name": "meta.tag.imba",
+ "begin": "(<)(reference|amd-dependency|amd-module)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.directive.imba"
+ },
+ "2": {
+ "name": "entity.name.tag.directive.imba"
+ }
+ },
+ "end": "/>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.directive.imba"
+ }
+ },
+ "patterns": [
+ {
+ "name": "entity.other.attribute-name.directive.imba",
+ "match": "path|types|no-default-lib|lib|name"
+ },
+ {
+ "name": "keyword.operator.assignment.imba",
+ "match": "="
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "docblock": {
+ "patterns": [
+ {
+ "match": "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "constant.language.access-type.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)author)\n\\s+\n(\n [^@\\s<>*/]\n (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n \\s*\n (<)\n ([^>\\s]+)\n (>)\n)?",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "4": {
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
+ },
+ "5": {
+ "name": "constant.other.email.link.underline.jsdoc"
+ },
+ "6": {
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+) # <that namepath>\n\\s+ (as) \\s+ # as\n((?:[^@\\s*/]|\\*[^/])+) # <this namepath>",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "4": {
+ "name": "keyword.operator.control.jsdoc"
+ },
+ "5": {
+ "name": "entity.name.type.instance.jsdoc"
+ }
+ }
+ },
+ {
+ "name": "meta.example.jsdoc",
+ "begin": "((@)example)\\s+",
+ "end": "(?=@|\\*/)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "patterns": [
+ {
+ "match": "^\\s\\*\\s+"
+ },
+ {
+ "contentName": "constant.other.description.jsdoc",
+ "begin": "\\G(<)caption(>)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.tag.inline.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
+ }
+ },
+ "end": "(</)caption(>)|(?=\\*/)",
+ "endCaptures": {
+ "0": {
+ "name": "entity.name.tag.inline.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "[^\\s@*](?:[^*]|\\*[^/])*",
+ "captures": {
+ "0": {
+ "name": "source.embedded.imba"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "match": "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "constant.language.symbol-type.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)see)\n\\s+\n(?:\n # URL\n (\n (?=https?://)\n (?:[^\\s*]|\\*[^/])+\n )\n |\n # JSDoc namepath\n (\n (?!\n # Avoid matching bare URIs (also acceptable as links)\n https?://\n |\n # Avoid matching {@inline tags}; we match those below\n (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n {@(?:link|linkcode|linkplain|tutorial)\\b\n )\n # Matched namepath\n (?:[^@\\s*/]|\\*[^/])+\n )\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.link.underline.jsdoc"
+ },
+ "4": {
+ "name": "entity.name.type.instance.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n [A-Za-z_$] # First character: non-numeric word character\n [\\w$.\\[\\]]* # Rest of identifier\n (?: # Possible list of additional identifiers\n \\s* , \\s*\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n )*\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(\n (@)\n (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ }
+ }
+ },
+ {
+ "begin": "((@)typedef)\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ },
+ {
+ "name": "entity.name.type.instance.jsdoc",
+ "match": "(?:[^@\\s*/]|\\*[^/])+"
+ }
+ ]
+ },
+ {
+ "begin": "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ },
+ {
+ "name": "variable.other.jsdoc",
+ "match": "([A-Za-z_$][\\w$.\\[\\]]*)"
+ },
+ {
+ "name": "variable.other.jsdoc",
+ "match": "(?x)\n(\\[)\\s*\n[\\w$]+\n(?:\n (?:\\[\\])? # Foo[ ].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [\\w$]+\n)*\n(?:\n \\s*\n (=) # [foo=bar] Default parameter value\n \\s*\n (\n # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\n (?>\n \"(?:(?:\\*(?!/))|(?:\\\\(?!\"))|[^*\\\\])*?\" | # [foo=\"bar\"] Double-quoted\n '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | # [foo='bar'] Single-quoted\n \\[ (?:(?:\\*(?!/))|[^*])*? \\] | # [foo=[1,2]] Array literal\n (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* # Everything else\n )*\n )\n)?\n\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.optional-value.begin.bracket.square.jsdoc"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.jsdoc"
+ },
+ "3": {
+ "name": "source.embedded.imba"
+ },
+ "4": {
+ "name": "punctuation.definition.optional-value.end.bracket.square.jsdoc"
+ },
+ "5": {
+ "name": "invalid.illegal.syntax.jsdoc"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n(\n (@)\n (?:define|enum|exception|export|extends|lends|implements|modifies\n |namespace|private|protected|returns?|suppress|this|throws|type\n |yields?)\n)\n\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ }
+ ]
+ },
+ {
+ "match": "(?x)\n(\n (@)\n (?:alias|augments|callback|constructs|emits|event|fires|exports?\n |extends|external|function|func|host|lends|listens|interface|memberof!?\n |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n (?:\n [^{}@\\s*] | \\*[^/]\n )+\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "entity.name.type.instance.jsdoc"
+ }
+ }
+ },
+ {
+ "contentName": "variable.other.jsdoc",
+ "begin": "((@)(?:default(?:value)?|license|version))\\s+(([''\"]))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ },
+ "4": {
+ "name": "punctuation.definition.string.begin.jsdoc"
+ }
+ },
+ "end": "(\\3)|(?=$|\\*/)",
+ "endCaptures": {
+ "0": {
+ "name": "variable.other.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.string.end.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ }
+ }
+ },
+ {
+ "name": "storage.type.class.jsdoc",
+ "match": "(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ }
+ },
+ {
+ "include": "#inline-tags"
+ },
+ {
+ "match": "((@)(?:[_$[:alpha:]][_$[:alnum:]]*(?:\\-[_$[:alnum:]]+)*[\\?\\!]?))(?=\\s+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ }
+ }
+ ]
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "begin": "{",
+ "end": "}|(?=\\*/)",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]|(?=\\*/)",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ }
+ ]
+ },
+ "inline-tags": {
+ "patterns": [
+ {
+ "name": "constant.other.description.jsdoc",
+ "match": "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.bracket.square.begin.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.square.end.jsdoc"
+ }
+ }
+ },
+ {
+ "name": "entity.name.type.instance.jsdoc",
+ "begin": "({)((@)(?:link(?:code|plain)?|tutorial))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.bracket.curly.begin.jsdoc"
+ },
+ "2": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "3": {
+ "name": "punctuation.definition.inline.tag.jsdoc"
+ }
+ },
+ "end": "}|(?=\\*/)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.bracket.curly.end.jsdoc"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?",
+ "captures": {
+ "1": {
+ "name": "variable.other.link.underline.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.separator.pipe.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?",
+ "captures": {
+ "1": {
+ "name": "variable.other.description.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.separator.pipe.jsdoc"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "jsdoctype": {
+ "patterns": [
+ {
+ "name": "invalid.illegal.type.jsdoc",
+ "match": "\\G{(?:[^}*]|\\*[^/}])+$"
+ },
+ {
+ "contentName": "entity.name.type.instance.jsdoc",
+ "begin": "\\G({)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.bracket.curly.begin.jsdoc"
+ }
+ },
+ "end": "((}))\\s*|(?=\\*/)",
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.curly.end.jsdoc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/ini.tmLanguage.json b/node_modules/shiki/languages/ini.tmLanguage.json
new file mode 100644
index 0000000..3a38fb4
--- /dev/null
+++ b/node_modules/shiki/languages/ini.tmLanguage.json
@@ -0,0 +1,113 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/textmate/ini.tmbundle/blob/master/Syntaxes/Ini.plist",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/textmate/ini.tmbundle/commit/2af0cbb0704940f967152616f2f1ff0aae6287a6",
+ "name": "ini",
+ "scopeName": "source.ini",
+ "patterns": [
+ {
+ "begin": "(^[ \\t]+)?(?=#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.ini"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.ini"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.number-sign.ini"
+ }
+ ]
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=;)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.ini"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": ";",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.ini"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.semicolon.ini"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.definition.ini"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.ini"
+ }
+ },
+ "match": "\\b([a-zA-Z0-9_.-]+)\\b\\s*(=)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.ini"
+ },
+ "3": {
+ "name": "punctuation.definition.entity.ini"
+ }
+ },
+ "match": "^(\\[)(.*?)(\\])",
+ "name": "entity.name.section.group-title.ini"
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ini"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ini"
+ }
+ },
+ "name": "string.quoted.single.ini",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.ini"
+ }
+ ]
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ini"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ini"
+ }
+ },
+ "name": "string.quoted.double.ini"
+ }
+ ]
+}
diff --git a/node_modules/shiki/languages/java.tmLanguage.json b/node_modules/shiki/languages/java.tmLanguage.json
new file mode 100644
index 0000000..e26797d
--- /dev/null
+++ b/node_modules/shiki/languages/java.tmLanguage.json
@@ -0,0 +1,1855 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/atom/language-java/blob/master/grammars/java.cson",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/atom/language-java/commit/29f977dc42a7e2568b39bb6fb34c4ef108eb59b3",
+ "name": "java",
+ "scopeName": "source.java",
+ "patterns": [
+ {
+ "begin": "\\b(package)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.package.java"
+ }
+ },
+ "end": "\\s*(;)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.java"
+ }
+ },
+ "name": "meta.package.java",
+ "contentName": "storage.modifier.package.java",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "(?<=\\.)\\s*\\.|\\.(?=\\s*;)",
+ "name": "invalid.illegal.character_not_allowed_here.java"
+ },
+ {
+ "match": "(?<!_)_(?=\\s*(\\.|;))|\\b\\d+|-+",
+ "name": "invalid.illegal.character_not_allowed_here.java"
+ },
+ {
+ "match": "[A-Z]+",
+ "name": "invalid.deprecated.package_name_not_lowercase.java"
+ },
+ {
+ "match": "(?x)\\b(?<!\\$)\n(abstract|assert|boolean|break|byte|case|catch|char|class|\nconst|continue|default|do|double|else|enum|extends|final|\nfinally|float|for|goto|if|implements|import|instanceof|int|\ninterface|long|native|new|non-sealed|package|permits|private|protected|public|\nreturn|sealed|short|static|strictfp|super|switch|syncronized|this|\nthrow|throws|transient|try|void|volatile|while|yield|\ntrue|false|null)\\b",
+ "name": "invalid.illegal.character_not_allowed_here.java"
+ },
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.java"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(import)\\b\\s*\\b(static)?\\b\\s",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.import.java"
+ },
+ "2": {
+ "name": "storage.modifier.java"
+ }
+ },
+ "end": "\\s*(;)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.java"
+ }
+ },
+ "name": "meta.import.java",
+ "contentName": "storage.modifier.import.java",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "(?<=\\.)\\s*\\.|\\.(?=\\s*;)",
+ "name": "invalid.illegal.character_not_allowed_here.java"
+ },
+ {
+ "match": "(?<!\\.)\\s*\\*",
+ "name": "invalid.illegal.character_not_allowed_here.java"
+ },
+ {
+ "match": "(?<!_)_(?=\\s*(\\.|;))|\\b\\d+|-+",
+ "name": "invalid.illegal.character_not_allowed_here.java"
+ },
+ {
+ "match": "(?x)\\b(?<!\\$)\n(abstract|assert|boolean|break|byte|case|catch|char|class|\nconst|continue|default|do|double|else|enum|extends|final|\nfinally|float|for|goto|if|implements|import|instanceof|int|\ninterface|long|native|new|non-sealed|package|permits|private|protected|public|\nreturn|sealed|short|static|strictfp|super|switch|syncronized|this|\nthrow|throws|transient|try|void|volatile|while|yield|\ntrue|false|null)\\b",
+ "name": "invalid.illegal.character_not_allowed_here.java"
+ },
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.java"
+ },
+ {
+ "match": "\\*",
+ "name": "variable.language.wildcard.java"
+ }
+ ]
+ },
+ {
+ "include": "#comments-javadoc"
+ },
+ {
+ "include": "#code"
+ },
+ {
+ "include": "#module"
+ }
+ ],
+ "repository": {
+ "all-types": {
+ "patterns": [
+ {
+ "include": "#primitive-arrays"
+ },
+ {
+ "include": "#primitive-types"
+ },
+ {
+ "include": "#object-types"
+ }
+ ]
+ },
+ "annotations": {
+ "patterns": [
+ {
+ "begin": "((@)\\s*([^\\s(]+))(\\()",
+ "beginCaptures": {
+ "2": {
+ "name": "punctuation.definition.annotation.java"
+ },
+ "3": {
+ "name": "storage.type.annotation.java"
+ },
+ "4": {
+ "name": "punctuation.definition.annotation-arguments.begin.bracket.round.java"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.annotation-arguments.end.bracket.round.java"
+ }
+ },
+ "name": "meta.declaration.annotation.java",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "constant.other.key.java"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.java"
+ }
+ },
+ "match": "(\\w*)\\s*(=)"
+ },
+ {
+ "include": "#code"
+ }
+ ]
+ },
+ {
+ "match": "(@)(interface)\\s+(\\w*)|((@)\\s*(\\w+))",
+ "name": "meta.declaration.annotation.java",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.annotation.java"
+ },
+ "2": {
+ "name": "storage.modifier.java"
+ },
+ "3": {
+ "name": "storage.type.annotation.java"
+ },
+ "5": {
+ "name": "punctuation.definition.annotation.java"
+ },
+ "6": {
+ "name": "storage.type.annotation.java"
+ }
+ }
+ }
+ ]
+ },
+ "anonymous-block-and-instance-initializer": {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.java"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.java"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ },
+ "anonymous-classes-and-new": {
+ "begin": "\\bnew\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.new.java"
+ }
+ },
+ "end": "(?=;|\\)|\\]|\\.|,|\\?|:|}|\\+|\\-|\\*|\\/(?!\\/|\\*)|%|!|&|\\||\\^|=)",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "include": "#all-types"
+ },
+ {
+ "begin": "(?<=\\))",
+ "end": "(?=;|\\)|\\]|\\.|,|\\?|:|}|\\+|\\-|\\*|\\/(?!\\/|\\*)|%|!|&|\\||\\^|=)",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.inner-class.begin.bracket.curly.java"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.inner-class.end.bracket.curly.java"
+ }
+ },
+ "name": "meta.inner-class.java",
+ "patterns": [
+ {
+ "include": "#class-body"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\])",
+ "end": "(?=;|\\)|\\]|\\.|,|\\?|:|}|\\+|\\-|\\*|\\/(?!\\/|\\*)|%|!|&|\\||\\^|=)",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array-initializer.begin.bracket.curly.java"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array-initializer.end.bracket.curly.java"
+ }
+ },
+ "name": "meta.array-initializer.java",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#parens"
+ }
+ ]
+ },
+ "assertions": {
+ "patterns": [
+ {
+ "begin": "\\b(assert)\\s",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.assert.java"
+ }
+ },
+ "end": "$",
+ "name": "meta.declaration.assertion.java",
+ "patterns": [
+ {
+ "match": ":",
+ "name": "keyword.operator.assert.expression-separator.java"
+ },
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "class": {
+ "begin": "(?=\\w?[\\w\\s-]*\\b(?:class|(?<!@)interface|enum)\\s+[\\w$]+)",
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.class.end.bracket.curly.java"
+ }
+ },
+ "name": "meta.class.java",
+ "patterns": [
+ {
+ "include": "#storage-modifiers"
+ },
+ {
+ "include": "#generics"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.modifier.java"
+ },
+ "2": {
+ "name": "entity.name.type.class.java"
+ }
+ },
+ "match": "(class|(?<!@)interface|enum)\\s+([\\w$]+)",
+ "name": "meta.class.identifier.java"
+ },
+ {
+ "begin": "extends",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.modifier.extends.java"
+ }
+ },
+ "end": "(?={|implements|permits)",
+ "name": "meta.definition.class.inherited.classes.java",
+ "patterns": [
+ {
+ "include": "#object-types-inherited"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "begin": "(implements)\\s",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.implements.java"
+ }
+ },
+ "end": "(?=\\s*extends|permits|\\{)",
+ "name": "meta.definition.class.implemented.interfaces.java",
+ "patterns": [
+ {
+ "include": "#object-types-inherited"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "begin": "(permits)\\s",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.permits.java"
+ }
+ },
+ "end": "(?=\\s*extends|implements|\\{)",
+ "name": "meta.definition.class.permits.classes.java",
+ "patterns": [
+ {
+ "include": "#object-types-inherited"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.class.begin.bracket.curly.java"
+ }
+ },
+ "end": "(?=})",
+ "contentName": "meta.class.body.java",
+ "patterns": [
+ {
+ "include": "#class-body"
+ }
+ ]
+ }
+ ]
+ },
+ "class-body": {
+ "patterns": [
+ {
+ "include": "#comments-javadoc"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#enums"
+ },
+ {
+ "include": "#class"
+ },
+ {
+ "include": "#generics"
+ },
+ {
+ "include": "#static-initializer"
+ },
+ {
+ "include": "#class-fields-and-methods"
+ },
+ {
+ "include": "#annotations"
+ },
+ {
+ "include": "#storage-modifiers"
+ },
+ {
+ "include": "#member-variables"
+ },
+ {
+ "include": "#code"
+ }
+ ]
+ },
+ "class-fields-and-methods": {
+ "patterns": [
+ {
+ "begin": "(?=\\=)",
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ },
+ {
+ "include": "#methods"
+ }
+ ]
+ },
+ "code": {
+ "patterns": [
+ {
+ "include": "#annotations"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#enums"
+ },
+ {
+ "include": "#class"
+ },
+ {
+ "include": "#record"
+ },
+ {
+ "include": "#anonymous-block-and-instance-initializer"
+ },
+ {
+ "include": "#try-catch-finally"
+ },
+ {
+ "include": "#assertions"
+ },
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#constants-and-special-vars"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#anonymous-classes-and-new"
+ },
+ {
+ "include": "#lambda-expression"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#storage-modifiers"
+ },
+ {
+ "include": "#method-call"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#variables-local"
+ },
+ {
+ "include": "#objects"
+ },
+ {
+ "include": "#properties"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#all-types"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.java"
+ },
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.period.java"
+ },
+ {
+ "match": ";",
+ "name": "punctuation.terminator.java"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.java"
+ }
+ },
+ "match": "/\\*\\*/",
+ "name": "comment.block.empty.java"
+ },
+ {
+ "include": "#comments-inline"
+ }
+ ]
+ },
+ "comments-inline": {
+ "patterns": [
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.java"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.java"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.java"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.java"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.double-slash.java"
+ }
+ ]
+ }
+ ]
+ },
+ "comments-javadoc": {
+ "patterns": [
+ {
+ "begin": "^\\s*(/\\*\\*)(?!/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.java"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.java"
+ }
+ },
+ "name": "comment.block.javadoc.java",
+ "patterns": [
+ {
+ "match": "@(author|deprecated|return|see|serial|since|version)\\b",
+ "name": "keyword.other.documentation.javadoc.java"
+ },
+ {
+ "match": "(@param)\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.documentation.javadoc.java"
+ },
+ "2": {
+ "name": "variable.parameter.java"
+ }
+ }
+ },
+ {
+ "match": "(@(?:exception|throws))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.documentation.javadoc.java"
+ },
+ "2": {
+ "name": "entity.name.type.class.java"
+ }
+ }
+ },
+ {
+ "match": "{(@link)\\s+(\\S+)?#([\\w$]+\\s*\\([^\\(\\)]*\\)).*?}",
+ "captures": {
+ "1": {
+ "name": "keyword.other.documentation.javadoc.java"
+ },
+ "2": {
+ "name": "entity.name.type.class.java"
+ },
+ "3": {
+ "name": "variable.parameter.java"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "constants-and-special-vars": {
+ "patterns": [
+ {
+ "match": "\\b(true|false|null)\\b",
+ "name": "constant.language.java"
+ },
+ {
+ "match": "\\bthis\\b",
+ "name": "variable.language.this.java"
+ },
+ {
+ "match": "\\bsuper\\b",
+ "name": "variable.language.java"
+ }
+ ]
+ },
+ "enums": {
+ "begin": "^\\s*([\\w\\s]*)(enum)\\s+(\\w+)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#storage-modifiers"
+ }
+ ]
+ },
+ "2": {
+ "name": "storage.modifier.java"
+ },
+ "3": {
+ "name": "entity.name.type.enum.java"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.enum.end.bracket.curly.java"
+ }
+ },
+ "name": "meta.enum.java",
+ "patterns": [
+ {
+ "begin": "\\b(extends)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.extends.java"
+ }
+ },
+ "end": "(?={|\\bimplements\\b)",
+ "name": "meta.definition.class.inherited.classes.java",
+ "patterns": [
+ {
+ "include": "#object-types-inherited"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(implements)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.implements.java"
+ }
+ },
+ "end": "(?={|\\bextends\\b)",
+ "name": "meta.definition.class.implemented.interfaces.java",
+ "patterns": [
+ {
+ "include": "#object-types-inherited"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.enum.begin.bracket.curly.java"
+ }
+ },
+ "end": "(?=})",
+ "patterns": [
+ {
+ "begin": "(?<={)",
+ "end": "(?=;|})",
+ "patterns": [
+ {
+ "include": "#comments-javadoc"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "\\b(\\w+)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.other.enum.java"
+ }
+ },
+ "end": "(,)|(?=;|})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.java"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments-javadoc"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.bracket.round.java"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.bracket.round.java"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.bracket.curly.java"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.bracket.curly.java"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#class-body"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#class-body"
+ }
+ ]
+ }
+ ]
+ },
+ "function-call": {
+ "begin": "([A-Za-z_$][\\w$]*)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.java"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.java"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.java"
+ }
+ },
+ "name": "meta.function-call.java",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ },
+ "generics": {
+ "begin": "<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.bracket.angle.java"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.bracket.angle.java"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\b(extends|super)\\b",
+ "name": "storage.modifier.$1.java"
+ },
+ {
+ "match": "(?<!\\.)([a-zA-Z$_][a-zA-Z0-9$_]*)(?=\\s*<)",
+ "captures": {
+ "1": {
+ "name": "storage.type.java"
+ }
+ }
+ },
+ {
+ "include": "#primitive-arrays"
+ },
+ {
+ "match": "[a-zA-Z$_][a-zA-Z0-9$_]*",
+ "name": "storage.type.generic.java"
+ },
+ {
+ "match": "\\?",
+ "name": "storage.type.generic.wildcard.java"
+ },
+ {
+ "match": "&",
+ "name": "punctuation.separator.types.java"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.java"
+ },
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.period.java"
+ },
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#generics"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "match": "\\bthrow\\b",
+ "name": "keyword.control.throw.java"
+ },
+ {
+ "match": "\\?|:",
+ "name": "keyword.control.ternary.java"
+ },
+ {
+ "match": "\\b(return|yield|break|case|continue|default|do|while|for|switch|if|else)\\b",
+ "name": "keyword.control.java"
+ },
+ {
+ "match": "\\b(instanceof)\\b",
+ "name": "keyword.operator.instanceof.java"
+ },
+ {
+ "match": "(<<|>>>?|~|\\^)",
+ "name": "keyword.operator.bitwise.java"
+ },
+ {
+ "match": "((&|\\^|\\||<<|>>>?)=)",
+ "name": "keyword.operator.assignment.bitwise.java"
+ },
+ {
+ "match": "(===?|!=|<=|>=|<>|<|>)",
+ "name": "keyword.operator.comparison.java"
+ },
+ {
+ "match": "([+*/%-]=)",
+ "name": "keyword.operator.assignment.arithmetic.java"
+ },
+ {
+ "match": "(=)",
+ "name": "keyword.operator.assignment.java"
+ },
+ {
+ "match": "(\\-\\-|\\+\\+)",
+ "name": "keyword.operator.increment-decrement.java"
+ },
+ {
+ "match": "(\\-|\\+|\\*|\\/|%)",
+ "name": "keyword.operator.arithmetic.java"
+ },
+ {
+ "match": "(!|&&|\\|\\|)",
+ "name": "keyword.operator.logical.java"
+ },
+ {
+ "match": "(\\||&)",
+ "name": "keyword.operator.bitwise.java"
+ },
+ {
+ "match": "\\b(const|goto)\\b",
+ "name": "keyword.reserved.java"
+ }
+ ]
+ },
+ "lambda-expression": {
+ "patterns": [
+ {
+ "match": "->",
+ "name": "storage.type.function.arrow.java"
+ }
+ ]
+ },
+ "member-variables": {
+ "begin": "(?=private|protected|public|native|synchronized|abstract|threadsafe|transient|static|final)",
+ "end": "(?=\\=|;)",
+ "patterns": [
+ {
+ "include": "#storage-modifiers"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#primitive-arrays"
+ },
+ {
+ "include": "#object-types"
+ }
+ ]
+ },
+ "method-call": {
+ "begin": "(\\.)\\s*([A-Za-z_$][\\w$]*)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.period.java"
+ },
+ "2": {
+ "name": "entity.name.function.java"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.java"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.java"
+ }
+ },
+ "name": "meta.method-call.java",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ },
+ "methods": {
+ "begin": "(?!new)(?=[\\w<].*\\s+)(?=([^=/]|/(?!/))+\\()",
+ "end": "(})|(?=;)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.method.end.bracket.curly.java"
+ }
+ },
+ "name": "meta.method.java",
+ "patterns": [
+ {
+ "include": "#storage-modifiers"
+ },
+ {
+ "begin": "(\\w+)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.java"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.java"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.java"
+ }
+ },
+ "name": "meta.method.identifier.java",
+ "patterns": [
+ {
+ "include": "#parameters"
+ },
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "include": "#generics"
+ },
+ {
+ "begin": "(?=\\w.*\\s+\\w+\\s*\\()",
+ "end": "(?=\\s+\\w+\\s*\\()",
+ "name": "meta.method.return-type.java",
+ "patterns": [
+ {
+ "include": "#all-types"
+ },
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "include": "#throws"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.method.begin.bracket.curly.java"
+ }
+ },
+ "end": "(?=})",
+ "contentName": "meta.method.body.java",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "module": {
+ "begin": "((open)\\s)?(module)\\s+(\\w+)",
+ "end": "}",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.java"
+ },
+ "3": {
+ "name": "storage.modifier.java"
+ },
+ "4": {
+ "name": "entity.name.type.module.java"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.module.end.bracket.curly.java"
+ }
+ },
+ "name": "meta.module.java",
+ "patterns": [
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.module.begin.bracket.curly.java"
+ }
+ },
+ "end": "(?=})",
+ "contentName": "meta.module.body.java",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#comments-javadoc"
+ },
+ {
+ "match": "\\b(requires|transitive|exports|opens|to|uses|provides|with)\\b",
+ "name": "keyword.module.java"
+ }
+ ]
+ }
+ ]
+ },
+ "numbers": {
+ "patterns": [
+ {
+ "match": "(?x)\n\\b(?<!\\$)\n0(x|X)\n(\n (?<!\\.)[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?[Ll]?(?!\\.)\n |\n (\n [0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?\\.?\n |\n ([0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?)?\\.[0-9a-fA-F]([0-9a-fA-F_]*[0-9a-fA-F])?\n )\n [Pp][+-]?[0-9]([0-9_]*[0-9])?[FfDd]?\n)\n\\b(?!\\$)",
+ "name": "constant.numeric.hex.java"
+ },
+ {
+ "match": "\\b(?<!\\$)0(b|B)[01]([01_]*[01])?[Ll]?\\b(?!\\$)",
+ "name": "constant.numeric.binary.java"
+ },
+ {
+ "match": "\\b(?<!\\$)0[0-7]([0-7_]*[0-7])?[Ll]?\\b(?!\\$)",
+ "name": "constant.numeric.octal.java"
+ },
+ {
+ "match": "(?x)\n(?<!\\$)\n(\n \\b[0-9]([0-9_]*[0-9])?\\.\\B(?!\\.)\n |\n \\b[0-9]([0-9_]*[0-9])?\\.([Ee][+-]?[0-9]([0-9_]*[0-9])?)[FfDd]?\\b\n |\n \\b[0-9]([0-9_]*[0-9])?\\.([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]\\b\n |\n \\b[0-9]([0-9_]*[0-9])?\\.([0-9]([0-9_]*[0-9])?)([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]?\\b\n |\n (?<!\\.)\\B\\.[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]?\\b\n |\n \\b[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)[FfDd]?\\b\n |\n \\b[0-9]([0-9_]*[0-9])?([Ee][+-]?[0-9]([0-9_]*[0-9])?)?[FfDd]\\b\n |\n \\b(0|[1-9]([0-9_]*[0-9])?)(?!\\.)[Ll]?\\b\n)\n(?!\\$)",
+ "name": "constant.numeric.decimal.java"
+ }
+ ]
+ },
+ "object-types": {
+ "patterns": [
+ {
+ "include": "#generics"
+ },
+ {
+ "begin": "\\b((?:[A-Za-z_]\\w*\\s*\\.\\s*)*)([A-Z_]\\w*)\\s*(?=\\[)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "[A-Za-z_]\\w*",
+ "name": "storage.type.java"
+ },
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.period.java"
+ }
+ ]
+ },
+ "2": {
+ "name": "storage.type.object.array.java"
+ }
+ },
+ "end": "(?!\\s*\\[)",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#parens"
+ }
+ ]
+ },
+ {
+ "match": "\\b((?:[A-Za-z_]\\w*\\s*\\.\\s*)*[A-Z_]\\w*)\\s*(?=<)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "[A-Za-z_]\\w*",
+ "name": "storage.type.java"
+ },
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.period.java"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "\\b((?:[A-Za-z_]\\w*\\s*\\.\\s*)*[A-Z_]\\w*)\\b((?=\\s*[A-Za-z$_\\n])|(?=\\s*\\.\\.\\.))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "[A-Za-z_]\\w*",
+ "name": "storage.type.java"
+ },
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.period.java"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "object-types-inherited": {
+ "patterns": [
+ {
+ "include": "#generics"
+ },
+ {
+ "match": "\\b(?:[A-Z]\\w*\\s*(\\.)\\s*)*[A-Z]\\w*\\b",
+ "name": "entity.other.inherited-class.java",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.period.java"
+ }
+ }
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.java"
+ }
+ ]
+ },
+ "objects": {
+ "match": "(?<![\\w$])[a-zA-Z_$][\\w$]*(?=\\s*\\.\\s*[\\w$]+)",
+ "name": "variable.other.object.java"
+ },
+ "parameters": {
+ "patterns": [
+ {
+ "match": "\\bfinal\\b",
+ "name": "storage.modifier.java"
+ },
+ {
+ "include": "#annotations"
+ },
+ {
+ "include": "#all-types"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "match": "\\w+",
+ "name": "variable.parameter.java"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.java"
+ },
+ {
+ "match": "\\.\\.\\.",
+ "name": "punctuation.definition.parameters.varargs.java"
+ }
+ ]
+ },
+ "parens": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.bracket.round.java"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.bracket.round.java"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.bracket.square.java"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.bracket.square.java"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.bracket.curly.java"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.bracket.curly.java"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "primitive-arrays": {
+ "patterns": [
+ {
+ "begin": "\\b(void|boolean|byte|char|short|int|float|long|double)\\b\\s*(?=\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.primitive.array.java"
+ }
+ },
+ "end": "(?!\\s*\\[)",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#parens"
+ }
+ ]
+ }
+ ]
+ },
+ "primitive-types": {
+ "match": "\\b(void|boolean|byte|char|short|int|float|long|double)\\b",
+ "name": "storage.type.primitive.java"
+ },
+ "properties": {
+ "patterns": [
+ {
+ "match": "(\\.)\\s*([a-zA-Z_$][\\w$]*)(?=\\s*\\.\\s*[a-zA-Z_$][\\w$]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.period.java"
+ },
+ "2": {
+ "name": "variable.other.object.property.java"
+ }
+ }
+ },
+ {
+ "match": "(\\.)\\s*([a-zA-Z_$][\\w$]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.period.java"
+ },
+ "2": {
+ "name": "variable.other.object.property.java"
+ }
+ }
+ },
+ {
+ "match": "(\\.)\\s*([0-9][\\w$]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.period.java"
+ },
+ "2": {
+ "name": "invalid.illegal.identifier.java"
+ }
+ }
+ }
+ ]
+ },
+ "record": {
+ "begin": "(?=\\w?[\\w\\s]*\\b(?:record)\\s+[\\w$]+)",
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.class.end.bracket.curly.java"
+ }
+ },
+ "name": "meta.record.java",
+ "patterns": [
+ {
+ "include": "#storage-modifiers"
+ },
+ {
+ "include": "#generics"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "(record)\\s+([\\w$]+)(<[\\w$]+>)?(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.java"
+ },
+ "2": {
+ "name": "entity.name.type.record.java"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#generics"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.java"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.java"
+ }
+ },
+ "name": "meta.record.identifier.java",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ },
+ {
+ "begin": "(implements)\\s",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.implements.java"
+ }
+ },
+ "end": "(?=\\s*\\{)",
+ "name": "meta.definition.class.implemented.interfaces.java",
+ "patterns": [
+ {
+ "include": "#object-types-inherited"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "include": "#record-body"
+ }
+ ]
+ },
+ "record-body": {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.class.begin.bracket.curly.java"
+ }
+ },
+ "end": "(?=})",
+ "name": "meta.record.body.java",
+ "patterns": [
+ {
+ "include": "#record-constructor"
+ },
+ {
+ "include": "#class-body"
+ }
+ ]
+ },
+ "record-constructor": {
+ "begin": "(?!new)(?=[\\w<].*\\s+)(?=([^\\(=/]|/(?!/))+(?={))",
+ "end": "(})|(?=;)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.method.end.bracket.curly.java"
+ }
+ },
+ "name": "meta.method.java",
+ "patterns": [
+ {
+ "include": "#storage-modifiers"
+ },
+ {
+ "begin": "(\\w+)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.java"
+ }
+ },
+ "end": "(?=\\s*{)",
+ "name": "meta.method.identifier.java",
+ "patterns": [
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.method.begin.bracket.curly.java"
+ }
+ },
+ "end": "(?=})",
+ "contentName": "meta.method.body.java",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ "static-initializer": {
+ "patterns": [
+ {
+ "include": "#anonymous-block-and-instance-initializer"
+ },
+ {
+ "match": "static",
+ "name": "storage.modifier.java"
+ }
+ ]
+ },
+ "storage-modifiers": {
+ "match": "\\b(public|private|protected|static|final|native|synchronized|abstract|threadsafe|transient|volatile|default|strictfp|sealed|non-sealed)\\b",
+ "name": "storage.modifier.java"
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.java"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.java"
+ }
+ },
+ "name": "string.quoted.double.java",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.java"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.java"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.java"
+ }
+ },
+ "name": "string.quoted.single.java",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.java"
+ }
+ ]
+ }
+ ]
+ },
+ "throws": {
+ "begin": "throws",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.modifier.java"
+ }
+ },
+ "end": "(?={|;)",
+ "name": "meta.throwables.java",
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.java"
+ },
+ {
+ "match": "[a-zA-Z$_][\\.a-zA-Z0-9$_]*",
+ "name": "storage.type.java"
+ }
+ ]
+ },
+ "try-catch-finally": {
+ "patterns": [
+ {
+ "begin": "\\btry\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.try.java"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.try.end.bracket.curly.java"
+ }
+ },
+ "name": "meta.try.java",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.try.resources.begin.bracket.round.java"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.try.resources.end.bracket.round.java"
+ }
+ },
+ "name": "meta.try.resources.java",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.try.begin.bracket.curly.java"
+ }
+ },
+ "end": "(?=})",
+ "contentName": "meta.try.body.java",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\b(catch)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.catch.java"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.catch.end.bracket.curly.java"
+ }
+ },
+ "name": "meta.catch.java",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.java"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.java"
+ }
+ },
+ "contentName": "meta.catch.parameters.java",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#storage-modifiers"
+ },
+ {
+ "begin": "[a-zA-Z$_][\\.a-zA-Z0-9$_]*",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.java"
+ }
+ },
+ "end": "(\\|)|(?=\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.catch.separator.java"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "\\w+",
+ "captures": {
+ "0": {
+ "name": "variable.parameter.java"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.catch.begin.bracket.curly.java"
+ }
+ },
+ "end": "(?=})",
+ "contentName": "meta.catch.body.java",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\bfinally\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.finally.java"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.finally.end.bracket.curly.java"
+ }
+ },
+ "name": "meta.finally.java",
+ "patterns": [
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.finally.begin.bracket.curly.java"
+ }
+ },
+ "end": "(?=})",
+ "contentName": "meta.finally.body.java",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "variables": {
+ "begin": "(?x)\n(?=\n \\b\n (\n (void|boolean|byte|char|short|int|float|long|double)\n |\n (?>(\\w+\\.)*[A-Z_]+\\w*) # e.g. `javax.ws.rs.Response`, or `String`\n )\n \\b\n \\s*\n (\n <[\\w<>,\\.?\\s\\[\\]]*> # e.g. `HashMap<Integer, String>`, or `List<java.lang.String>`\n )?\n \\s*\n (\n (\\[\\])* # int[][]\n )?\n \\s+\n [A-Za-z_$][\\w$]* # At least one identifier after space\n ([\\w\\[\\],$][\\w\\[\\],\\s]*)? # possibly primitive array or additional identifiers\n \\s*(=|:|;)\n)",
+ "end": "(?=\\=|:|;)",
+ "name": "meta.definition.variable.java",
+ "patterns": [
+ {
+ "match": "([A-Za-z$_][\\w$]*)(?=\\s*(\\[\\])*\\s*(;|:|=|,))",
+ "captures": {
+ "1": {
+ "name": "variable.other.definition.java"
+ }
+ }
+ },
+ {
+ "include": "#all-types"
+ },
+ {
+ "include": "#code"
+ }
+ ]
+ },
+ "variables-local": {
+ "begin": "(?=\\b(var)\\b\\s+[A-Za-z_$][\\w$]*\\s*(=|:|;))",
+ "end": "(?=\\=|:|;)",
+ "name": "meta.definition.variable.local.java",
+ "patterns": [
+ {
+ "match": "\\bvar\\b",
+ "name": "storage.type.local.java"
+ },
+ {
+ "match": "([A-Za-z$_][\\w$]*)(?=\\s*(\\[\\])*\\s*(=|:|;))",
+ "captures": {
+ "1": {
+ "name": "variable.other.definition.java"
+ }
+ }
+ },
+ {
+ "include": "#code"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/javascript.tmLanguage.json b/node_modules/shiki/languages/javascript.tmLanguage.json
new file mode 100644
index 0000000..359af98
--- /dev/null
+++ b/node_modules/shiki/languages/javascript.tmLanguage.json
@@ -0,0 +1,5921 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/microsoft/TypeScript-TmLanguage/commit/e0aefd8205cc9d1bc7859cc5babbee0d833dca0f",
+ "name": "javascript",
+ "scopeName": "source.js",
+ "patterns": [
+ {
+ "include": "#directives"
+ },
+ {
+ "include": "#statements"
+ },
+ {
+ "include": "#shebang"
+ }
+ ],
+ "repository": {
+ "shebang": {
+ "name": "comment.line.shebang.js",
+ "match": "\\A(#!).*(?=$)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.js"
+ }
+ }
+ },
+ "statements": {
+ "patterns": [
+ {
+ "include": "#declaration"
+ },
+ {
+ "include": "#control-statement"
+ },
+ {
+ "include": "#after-operator-block-as-object-literal"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#label"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "declaration": {
+ "patterns": [
+ {
+ "include": "#decorator"
+ },
+ {
+ "include": "#var-expr"
+ },
+ {
+ "include": "#function-declaration"
+ },
+ {
+ "include": "#class-declaration"
+ },
+ {
+ "include": "#interface-declaration"
+ },
+ {
+ "include": "#enum-declaration"
+ },
+ {
+ "include": "#namespace-declaration"
+ },
+ {
+ "include": "#type-alias-declaration"
+ },
+ {
+ "include": "#import-equals-declaration"
+ },
+ {
+ "include": "#import-declaration"
+ },
+ {
+ "include": "#export-declaration"
+ },
+ {
+ "name": "storage.modifier.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "control-statement": {
+ "patterns": [
+ {
+ "include": "#switch-statement"
+ },
+ {
+ "include": "#for-loop"
+ },
+ {
+ "name": "keyword.control.trycatch.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.loop.js"
+ },
+ "2": {
+ "name": "entity.name.label.js"
+ }
+ }
+ },
+ {
+ "name": "keyword.control.loop.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.flow.js"
+ }
+ },
+ "end": "(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "keyword.control.switch.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "include": "#if-statement"
+ },
+ {
+ "name": "keyword.control.conditional.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.control.with.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.control.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.other.debugger.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "label": {
+ "patterns": [
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.label.js"
+ },
+ "2": {
+ "name": "punctuation.separator.label.js"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#decl-block"
+ }
+ ]
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "entity.name.label.js"
+ },
+ "2": {
+ "name": "punctuation.separator.label.js"
+ }
+ }
+ }
+ ]
+ },
+ "expression": {
+ "patterns": [
+ {
+ "include": "#expressionWithoutIdentifiers"
+ },
+ {
+ "include": "#identifiers"
+ },
+ {
+ "include": "#expressionPunctuations"
+ }
+ ]
+ },
+ "expressionWithoutIdentifiers": {
+ "patterns": [
+ {
+ "include": "#jsx"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#function-expression"
+ },
+ {
+ "include": "#class-expression"
+ },
+ {
+ "include": "#arrow-function"
+ },
+ {
+ "include": "#paren-expression-possibly-arrow"
+ },
+ {
+ "include": "#cast"
+ },
+ {
+ "include": "#ternary-expression"
+ },
+ {
+ "include": "#new-expr"
+ },
+ {
+ "include": "#instanceof-expr"
+ },
+ {
+ "include": "#object-literal"
+ },
+ {
+ "include": "#expression-operators"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#support-objects"
+ },
+ {
+ "include": "#paren-expression"
+ }
+ ]
+ },
+ "expressionPunctuations": {
+ "patterns": [
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-accessor"
+ }
+ ]
+ },
+ "decorator": {
+ "name": "meta.decorator.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.decorator.js"
+ }
+ },
+ "end": "(?=\\s)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "var-expr": {
+ "patterns": [
+ {
+ "name": "meta.var.expr.js",
+ "begin": "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
+ "end": "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ },
+ "3": {
+ "name": "storage.type.js"
+ }
+ },
+ "end": "(?=\\S)"
+ },
+ {
+ "include": "#destructuring-variable"
+ },
+ {
+ "include": "#var-single-variable"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(,)\\s*(?=$|\\/\\/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.comma.js"
+ }
+ },
+ "end": "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#destructuring-variable"
+ },
+ {
+ "include": "#var-single-variable"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ {
+ "name": "meta.var.expr.js",
+ "begin": "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ },
+ "3": {
+ "name": "storage.type.js"
+ }
+ },
+ "end": "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ },
+ "3": {
+ "name": "storage.type.js"
+ }
+ },
+ "end": "(?=\\S)"
+ },
+ {
+ "include": "#destructuring-const"
+ },
+ {
+ "include": "#var-single-const"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(,)\\s*(?=$|\\/\\/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.comma.js"
+ }
+ },
+ "end": "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#destructuring-const"
+ },
+ {
+ "include": "#var-single-const"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ ]
+ },
+ "var-single-variable": {
+ "patterns": [
+ {
+ "name": "meta.var-single-variable.expr.js",
+ "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.js entity.name.function.js"
+ },
+ "2": {
+ "name": "keyword.operator.definiteassignment.js"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ },
+ {
+ "name": "meta.var-single-variable.expr.js",
+ "begin": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.js variable.other.constant.js"
+ },
+ "2": {
+ "name": "keyword.operator.definiteassignment.js"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ },
+ {
+ "name": "meta.var-single-variable.expr.js",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)(\\!)?",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.js variable.other.readwrite.js"
+ },
+ "2": {
+ "name": "keyword.operator.definiteassignment.js"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ }
+ ]
+ },
+ "var-single-const": {
+ "patterns": [
+ {
+ "name": "meta.var-single-variable.expr.js",
+ "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.js variable.other.constant.js entity.name.function.js"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ },
+ {
+ "name": "meta.var-single-variable.expr.js",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.js variable.other.constant.js"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ }
+ ]
+ },
+ "var-single-variable-type-annotation": {
+ "patterns": [
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "destructuring-variable": {
+ "patterns": [
+ {
+ "name": "meta.object-binding-pattern-variable.js",
+ "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#object-binding-pattern"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "name": "meta.array-binding-pattern-variable.js",
+ "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#array-binding-pattern"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "destructuring-const": {
+ "patterns": [
+ {
+ "name": "meta.object-binding-pattern-variable.js",
+ "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#object-binding-pattern-const"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "name": "meta.array-binding-pattern-variable.js",
+ "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#array-binding-pattern-const"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "object-binding-element": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#object-binding-element-propertyName"
+ },
+ {
+ "include": "#binding-element"
+ }
+ ]
+ },
+ {
+ "include": "#object-binding-pattern"
+ },
+ {
+ "include": "#destructuring-variable-rest"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "object-binding-element-const": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#object-binding-element-propertyName"
+ },
+ {
+ "include": "#binding-element-const"
+ }
+ ]
+ },
+ {
+ "include": "#object-binding-pattern-const"
+ },
+ {
+ "include": "#destructuring-variable-rest-const"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "object-binding-element-propertyName": {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
+ "end": "(:)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.destructuring.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "name": "variable.object.property.js",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ },
+ "binding-element": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#object-binding-pattern"
+ },
+ {
+ "include": "#array-binding-pattern"
+ },
+ {
+ "include": "#destructuring-variable-rest"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "binding-element-const": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#object-binding-pattern-const"
+ },
+ {
+ "include": "#array-binding-pattern-const"
+ },
+ {
+ "include": "#destructuring-variable-rest-const"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "destructuring-variable-rest": {
+ "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.rest.js"
+ },
+ "2": {
+ "name": "meta.definition.variable.js variable.other.readwrite.js"
+ }
+ }
+ },
+ "destructuring-variable-rest-const": {
+ "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.rest.js"
+ },
+ "2": {
+ "name": "meta.definition.variable.js variable.other.constant.js"
+ }
+ }
+ },
+ "object-binding-pattern": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.js"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.object.js"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.object.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-binding-element"
+ }
+ ]
+ },
+ "object-binding-pattern-const": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.js"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.object.js"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.object.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-binding-element-const"
+ }
+ ]
+ },
+ "array-binding-pattern": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.js"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.array.js"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.array.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#binding-element"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "array-binding-pattern-const": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.js"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.array.js"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.array.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#binding-element-const"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "parameter-name": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js"
+ },
+ "2": {
+ "name": "keyword.operator.rest.js"
+ },
+ "3": {
+ "name": "entity.name.function.js variable.language.this.js"
+ },
+ "4": {
+ "name": "entity.name.function.js"
+ },
+ "5": {
+ "name": "keyword.operator.optional.js"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js"
+ },
+ "2": {
+ "name": "keyword.operator.rest.js"
+ },
+ "3": {
+ "name": "variable.parameter.js variable.language.this.js"
+ },
+ "4": {
+ "name": "variable.parameter.js"
+ },
+ "5": {
+ "name": "keyword.operator.optional.js"
+ }
+ }
+ }
+ ]
+ },
+ "destructuring-parameter": {
+ "patterns": [
+ {
+ "name": "meta.parameter.object-binding-pattern.js",
+ "begin": "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.js"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.object.js"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.object.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter-object-binding-element"
+ }
+ ]
+ },
+ {
+ "name": "meta.paramter.array-binding-pattern.js",
+ "begin": "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.js"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.array.js"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.array.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter-binding-element"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ ]
+ },
+ "parameter-object-binding-element": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#object-binding-element-propertyName"
+ },
+ {
+ "include": "#parameter-binding-element"
+ },
+ {
+ "include": "#paren-expression"
+ }
+ ]
+ },
+ {
+ "include": "#parameter-object-binding-pattern"
+ },
+ {
+ "include": "#destructuring-parameter-rest"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "parameter-binding-element": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#parameter-object-binding-pattern"
+ },
+ {
+ "include": "#parameter-array-binding-pattern"
+ },
+ {
+ "include": "#destructuring-parameter-rest"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "destructuring-parameter-rest": {
+ "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.rest.js"
+ },
+ "2": {
+ "name": "variable.parameter.js"
+ }
+ }
+ },
+ "parameter-object-binding-pattern": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.js"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.object.js"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.object.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter-object-binding-element"
+ }
+ ]
+ },
+ "parameter-array-binding-pattern": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.js"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.array.js"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.array.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter-binding-element"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "field-declaration": {
+ "name": "meta.field.declaration.js",
+ "begin": "(?x)(?<!\\()(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s+)?(?=\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|\\}|$))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js"
+ }
+ },
+ "end": "(?x)(?=\\}|;|,|$|(^(?!\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "1": {
+ "name": "meta.definition.property.js entity.name.function.js"
+ },
+ "2": {
+ "name": "keyword.operator.optional.js"
+ },
+ "3": {
+ "name": "keyword.operator.definiteassignment.js"
+ }
+ }
+ },
+ {
+ "name": "meta.definition.property.js variable.object.property.js",
+ "match": "\\#?[_$[:alpha:]][_$[:alnum:]]*"
+ },
+ {
+ "name": "keyword.operator.optional.js",
+ "match": "\\?"
+ },
+ {
+ "name": "keyword.operator.definiteassignment.js",
+ "match": "\\!"
+ }
+ ]
+ },
+ "variable-initializer": {
+ "patterns": [
+ {
+ "begin": "(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.js"
+ }
+ },
+ "end": "(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!=|!)(=)(?!=)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.js"
+ }
+ },
+ "end": "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<![\\|\\&\\+\\-\\*\\/])(?<=\\S)(?<!=)(?=\\s*$)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "function-declaration": {
+ "name": "meta.function.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ },
+ "3": {
+ "name": "storage.modifier.async.js"
+ },
+ "4": {
+ "name": "storage.type.function.js"
+ },
+ "5": {
+ "name": "keyword.generator.asterisk.js"
+ },
+ "6": {
+ "name": "meta.definition.function.js entity.name.function.js"
+ }
+ },
+ "end": "(?=;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#function-name"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ "function-expression": {
+ "name": "meta.function.expression.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js"
+ },
+ "2": {
+ "name": "storage.type.function.js"
+ },
+ "3": {
+ "name": "keyword.generator.asterisk.js"
+ },
+ "4": {
+ "name": "meta.definition.function.js entity.name.function.js"
+ }
+ },
+ "end": "(?=;)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#function-name"
+ },
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ "function-name": {
+ "name": "meta.definition.function.js entity.name.function.js",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ },
+ "function-body": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#function-parameters"
+ },
+ {
+ "include": "#return-type"
+ },
+ {
+ "include": "#type-function-return-type"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "name": "keyword.generator.asterisk.js",
+ "match": "\\*"
+ }
+ ]
+ },
+ "method-declaration": {
+ "patterns": [
+ {
+ "name": "meta.method.declaration.js",
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ },
+ "3": {
+ "name": "storage.modifier.js"
+ },
+ "4": {
+ "name": "storage.modifier.async.js"
+ },
+ "5": {
+ "name": "storage.type.js"
+ }
+ },
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ {
+ "name": "meta.method.declaration.js",
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\s*\\b(new)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?)(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ },
+ "3": {
+ "name": "storage.modifier.js"
+ },
+ "4": {
+ "name": "storage.modifier.async.js"
+ },
+ "5": {
+ "name": "keyword.operator.new.js"
+ },
+ "6": {
+ "name": "keyword.generator.asterisk.js"
+ }
+ },
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ {
+ "name": "meta.method.declaration.js",
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ },
+ "3": {
+ "name": "storage.modifier.js"
+ },
+ "4": {
+ "name": "storage.modifier.async.js"
+ },
+ "5": {
+ "name": "storage.type.property.js"
+ },
+ "6": {
+ "name": "keyword.generator.asterisk.js"
+ }
+ },
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ }
+ ]
+ },
+ "object-literal-method-declaration": {
+ "name": "meta.method.declaration.js",
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js"
+ },
+ "2": {
+ "name": "storage.type.property.js"
+ },
+ "3": {
+ "name": "keyword.generator.asterisk.js"
+ }
+ },
+ "end": "(?=\\}|;|,)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ },
+ {
+ "include": "#function-body"
+ },
+ {
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js"
+ },
+ "2": {
+ "name": "storage.type.property.js"
+ },
+ "3": {
+ "name": "keyword.generator.asterisk.js"
+ }
+ },
+ "end": "(?=\\(|\\<)",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ }
+ ]
+ }
+ ]
+ },
+ "method-declaration-name": {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])",
+ "end": "(?=\\(|\\<)",
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "name": "meta.definition.method.js entity.name.function.js",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ },
+ {
+ "name": "keyword.operator.optional.js",
+ "match": "\\?"
+ }
+ ]
+ },
+ "arrow-function": {
+ "patterns": [
+ {
+ "name": "meta.arrow.js",
+ "match": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.async.js"
+ },
+ "2": {
+ "name": "variable.parameter.js"
+ }
+ }
+ },
+ {
+ "name": "meta.arrow.js",
+ "begin": "(?x) (?:\n (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\n)? ((?<![})!\\]])\\s*\n (?=\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n )\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js"
+ }
+ },
+ "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#function-parameters"
+ },
+ {
+ "include": "#arrow-return-type"
+ },
+ {
+ "include": "#possibly-arrow-return-type"
+ }
+ ]
+ },
+ {
+ "name": "meta.arrow.js",
+ "begin": "=>",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.function.arrow.js"
+ }
+ },
+ "end": "((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "indexer-declaration": {
+ "name": "meta.indexer.declaration.js",
+ "begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js"
+ },
+ "2": {
+ "name": "meta.brace.square.js"
+ },
+ "3": {
+ "name": "variable.parameter.js"
+ }
+ },
+ "end": "(\\])\\s*(\\?\\s*)?|$",
+ "endCaptures": {
+ "1": {
+ "name": "meta.brace.square.js"
+ },
+ "2": {
+ "name": "keyword.operator.optional.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type-annotation"
+ }
+ ]
+ },
+ "indexer-mapped-type-declaration": {
+ "name": "meta.indexer.mappedtype.declaration.js",
+ "begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.modifier.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ },
+ "3": {
+ "name": "meta.brace.square.js"
+ },
+ "4": {
+ "name": "entity.name.type.js"
+ },
+ "5": {
+ "name": "keyword.operator.expression.in.js"
+ }
+ },
+ "end": "(\\])([+-])?\\s*(\\?\\s*)?|$",
+ "endCaptures": {
+ "1": {
+ "name": "meta.brace.square.js"
+ },
+ "2": {
+ "name": "keyword.operator.type.modifier.js"
+ },
+ "3": {
+ "name": "keyword.operator.optional.js"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
+ "captures": {
+ "1": {
+ "name": "keyword.control.as.js"
+ }
+ }
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "function-parameters": {
+ "name": "meta.parameters.js",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.begin.js"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-parameters-body"
+ }
+ ]
+ },
+ "function-parameters-body": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#decorator"
+ },
+ {
+ "include": "#destructuring-parameter"
+ },
+ {
+ "include": "#parameter-name"
+ },
+ {
+ "include": "#parameter-type-annotation"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "name": "punctuation.separator.parameter.js",
+ "match": ","
+ }
+ ]
+ },
+ "class-declaration": {
+ "name": "meta.class.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ },
+ "3": {
+ "name": "storage.modifier.js"
+ },
+ "4": {
+ "name": "storage.type.class.js"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#class-declaration-or-expression-patterns"
+ }
+ ]
+ },
+ "class-expression": {
+ "name": "meta.class.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js"
+ },
+ "2": {
+ "name": "storage.type.class.js"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#class-declaration-or-expression-patterns"
+ }
+ ]
+ },
+ "class-declaration-or-expression-patterns": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#class-or-interface-heritage"
+ },
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "captures": {
+ "0": {
+ "name": "entity.name.type.class.js"
+ }
+ }
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#class-or-interface-body"
+ }
+ ]
+ },
+ "interface-declaration": {
+ "name": "meta.interface.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ },
+ "3": {
+ "name": "storage.modifier.js"
+ },
+ "4": {
+ "name": "storage.type.interface.js"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#class-or-interface-heritage"
+ },
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "captures": {
+ "0": {
+ "name": "entity.name.type.interface.js"
+ }
+ }
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#class-or-interface-body"
+ }
+ ]
+ },
+ "class-or-interface-heritage": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js"
+ }
+ },
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#class-or-interface-heritage"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#expressionWithoutIdentifiers"
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.module.js"
+ },
+ "2": {
+ "name": "punctuation.accessor.js"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.js"
+ }
+ }
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "entity.other.inherited-class.js"
+ }
+ }
+ },
+ {
+ "include": "#expressionPunctuations"
+ }
+ ]
+ },
+ "class-or-interface-body": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#decorator"
+ },
+ {
+ "begin": "(?<=:)\\s*",
+ "end": "(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#method-declaration"
+ },
+ {
+ "include": "#indexer-declaration"
+ },
+ {
+ "include": "#field-declaration"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#access-modifier"
+ },
+ {
+ "include": "#property-accessor"
+ },
+ {
+ "include": "#async-modifier"
+ },
+ {
+ "include": "#after-operator-block-as-object-literal"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "access-modifier": {
+ "name": "storage.modifier.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "property-accessor": {
+ "name": "storage.type.property.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "async-modifier": {
+ "name": "storage.modifier.async.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "enum-declaration": {
+ "name": "meta.enum.declaration.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ },
+ "3": {
+ "name": "storage.modifier.js"
+ },
+ "4": {
+ "name": "storage.type.enum.js"
+ },
+ "5": {
+ "name": "entity.name.type.enum.js"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.enummember.js"
+ }
+ },
+ "end": "(?=,|\\}|$)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ {
+ "begin": "(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",
+ "end": "(?=,|\\}|$)",
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ ]
+ },
+ "namespace-declaration": {
+ "name": "meta.namespace.declaration.js",
+ "begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ },
+ "3": {
+ "name": "storage.type.namespace.js"
+ }
+ },
+ "end": "(?<=\\})|(?=;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "name": "entity.name.type.module.js",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ },
+ {
+ "include": "#punctuation-accessor"
+ },
+ {
+ "include": "#decl-block"
+ }
+ ]
+ },
+ "type-alias-declaration": {
+ "name": "meta.type.declaration.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ },
+ "3": {
+ "name": "storage.type.type.js"
+ },
+ "4": {
+ "name": "entity.name.type.alias.js"
+ }
+ },
+ "end": "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "begin": "(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.js"
+ },
+ "2": {
+ "name": "keyword.control.intrinsic.js"
+ }
+ },
+ "end": "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "begin": "(=)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.js"
+ }
+ },
+ "end": "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "import-equals-declaration": {
+ "patterns": [
+ {
+ "name": "meta.import-equals.external.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ },
+ "3": {
+ "name": "keyword.control.import.js"
+ },
+ "4": {
+ "name": "keyword.control.type.js"
+ },
+ "5": {
+ "name": "variable.other.readwrite.alias.js"
+ },
+ "6": {
+ "name": "keyword.operator.assignment.js"
+ },
+ "7": {
+ "name": "keyword.control.require.js"
+ },
+ "8": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "name": "meta.import-equals.internal.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ },
+ "3": {
+ "name": "keyword.control.import.js"
+ },
+ "4": {
+ "name": "keyword.control.type.js"
+ },
+ "5": {
+ "name": "variable.other.readwrite.alias.js"
+ },
+ "6": {
+ "name": "keyword.operator.assignment.js"
+ }
+ },
+ "end": "(?=;|$|^)",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.module.js"
+ },
+ "2": {
+ "name": "punctuation.accessor.js"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.js"
+ }
+ }
+ },
+ {
+ "name": "variable.other.readwrite.js",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ }
+ ]
+ },
+ "import-declaration": {
+ "name": "meta.import.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ },
+ "3": {
+ "name": "keyword.control.import.js"
+ },
+ "4": {
+ "name": "keyword.control.type.js"
+ }
+ },
+ "end": "(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "begin": "(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*[\"'])",
+ "end": "\\bfrom\\b",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.from.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#import-export-declaration"
+ }
+ ]
+ },
+ {
+ "include": "#import-export-declaration"
+ }
+ ]
+ },
+ "export-declaration": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.export.js"
+ },
+ "2": {
+ "name": "keyword.control.as.js"
+ },
+ "3": {
+ "name": "storage.type.namespace.js"
+ },
+ "4": {
+ "name": "entity.name.type.module.js"
+ }
+ }
+ },
+ {
+ "name": "meta.export.default.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js"
+ },
+ "2": {
+ "name": "keyword.control.type.js"
+ },
+ "3": {
+ "name": "keyword.operator.assignment.js"
+ },
+ "4": {
+ "name": "keyword.control.default.js"
+ }
+ },
+ "end": "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#interface-declaration"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "meta.export.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js"
+ },
+ "2": {
+ "name": "keyword.control.type.js"
+ }
+ },
+ "end": "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#import-export-declaration"
+ }
+ ]
+ }
+ ]
+ },
+ "import-export-declaration": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#import-export-block"
+ },
+ {
+ "name": "keyword.control.from.js",
+ "match": "\\bfrom\\b"
+ },
+ {
+ "include": "#import-export-assert-clause"
+ },
+ {
+ "include": "#import-export-clause"
+ }
+ ]
+ },
+ "import-export-assert-clause": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(assert)\\s*(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.assert.js"
+ },
+ "2": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "name": "meta.object-literal.key.js",
+ "match": "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)"
+ },
+ {
+ "name": "punctuation.separator.key-value.js",
+ "match": ":"
+ }
+ ]
+ },
+ "import-export-block": {
+ "name": "meta.block.js",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#import-export-clause"
+ }
+ ]
+ },
+ "import-export-clause": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(?:(\\btype)\\s+)?(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*)))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.type.js"
+ },
+ "2": {
+ "name": "keyword.control.default.js"
+ },
+ "3": {
+ "name": "constant.language.import-export-all.js"
+ },
+ "4": {
+ "name": "variable.other.readwrite.js"
+ },
+ "5": {
+ "name": "keyword.control.as.js"
+ },
+ "6": {
+ "name": "keyword.control.default.js"
+ },
+ "7": {
+ "name": "variable.other.readwrite.alias.js"
+ }
+ }
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "name": "constant.language.import-export-all.js",
+ "match": "\\*"
+ },
+ {
+ "name": "keyword.control.default.js",
+ "match": "\\b(default)\\b"
+ },
+ {
+ "match": "(?:(\\btype)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.type.js"
+ },
+ "2": {
+ "name": "variable.other.readwrite.alias.js"
+ }
+ }
+ }
+ ]
+ },
+ "switch-statement": {
+ "name": "switch-statement.expr.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "name": "switch-expression.expr.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.js"
+ },
+ "2": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "switch-block.expr.js",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "name": "case-clause.expr.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.js"
+ }
+ },
+ "end": "(?=:)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(:)\\s*(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "case-clause.expr.js punctuation.definition.section.case-statement.js"
+ },
+ "2": {
+ "name": "meta.block.js punctuation.definition.block.js"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "meta.block.js punctuation.definition.block.js"
+ }
+ },
+ "contentName": "meta.block.js",
+ "patterns": [
+ {
+ "include": "#statements"
+ }
+ ]
+ },
+ {
+ "match": "(:)",
+ "captures": {
+ "0": {
+ "name": "case-clause.expr.js punctuation.definition.section.case-statement.js"
+ }
+ }
+ },
+ {
+ "include": "#statements"
+ }
+ ]
+ }
+ ]
+ },
+ "for-loop": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.loop.js"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "name": "keyword.control.loop.js",
+ "match": "await"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#var-expr"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ }
+ ]
+ },
+ "if-statement": {
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))",
+ "end": "(?=;|$|\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.conditional.js"
+ },
+ "2": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "string.regexp.js",
+ "begin": "(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.js"
+ }
+ },
+ "end": "(/)([dgimsuy]*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.js"
+ },
+ "2": {
+ "name": "keyword.other.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "include": "#statements"
+ }
+ ]
+ }
+ ]
+ },
+ "decl-block": {
+ "name": "meta.block.js",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#statements"
+ }
+ ]
+ },
+ "after-operator-block-as-object-literal": {
+ "name": "meta.objectliteral.js",
+ "begin": "(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-member"
+ }
+ ]
+ },
+ "object-literal": {
+ "name": "meta.objectliteral.js",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-member"
+ }
+ ]
+ },
+ "object-member": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#object-literal-method-declaration"
+ },
+ {
+ "name": "meta.object.member.js meta.object-literal.key.js",
+ "begin": "(?=\\[)",
+ "end": "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#array-literal"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.js meta.object-literal.key.js",
+ "begin": "(?=[\\'\\\"\\`])",
+ "end": "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.js meta.object-literal.key.js",
+ "begin": "(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)))",
+ "end": "(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as|satisifies\\s+))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#numeric-literal"
+ }
+ ]
+ },
+ {
+ "name": "meta.method.declaration.js",
+ "begin": "(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",
+ "end": "(?=\\}|;|,)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.js",
+ "match": "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
+ "captures": {
+ "0": {
+ "name": "meta.object-literal.key.js"
+ },
+ "1": {
+ "name": "constant.numeric.decimal.js"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.js",
+ "match": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "0": {
+ "name": "meta.object-literal.key.js"
+ },
+ "1": {
+ "name": "entity.name.function.js"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.js",
+ "match": "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
+ "captures": {
+ "0": {
+ "name": "meta.object-literal.key.js"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.js",
+ "begin": "\\.\\.\\.",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.spread.js"
+ }
+ },
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.js",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",
+ "captures": {
+ "1": {
+ "name": "variable.other.readwrite.js"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.as.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.as.js"
+ },
+ "2": {
+ "name": "keyword.control.satisfies.js"
+ }
+ },
+ "end": "(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisifies)\\s+))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.js",
+ "begin": "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",
+ "end": "(?=,|\\}|$|\\/\\/|\\/\\*)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.js",
+ "begin": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.object-literal.key.js punctuation.separator.key-value.js"
+ }
+ },
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "begin": "(?<=:)\\s*(async)?(?=\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-inside-possibly-arrow-parens"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js"
+ },
+ "2": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-inside-possibly-arrow-parens"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js"
+ }
+ },
+ "end": "(?<=\\>)",
+ "patterns": [
+ {
+ "include": "#type-parameters"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-inside-possibly-arrow-parens"
+ }
+ ]
+ },
+ {
+ "include": "#possibly-arrow-return-type"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#decl-block"
+ }
+ ]
+ },
+ "ternary-expression": {
+ "begin": "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.js"
+ }
+ },
+ "end": "\\s*(:)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "function-call": {
+ "patterns": [
+ {
+ "begin": "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
+ "end": "(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
+ "patterns": [
+ {
+ "name": "meta.function-call.js",
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
+ "end": "(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
+ "patterns": [
+ {
+ "include": "#function-call-target"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#function-call-optionals"
+ },
+ {
+ "include": "#type-arguments"
+ },
+ {
+ "include": "#paren-expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
+ "end": "(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
+ "patterns": [
+ {
+ "name": "meta.function-call.js",
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
+ "end": "(?=(<\\s*[\\{\\[\\(]\\s*$))",
+ "patterns": [
+ {
+ "include": "#function-call-target"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#function-call-optionals"
+ },
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ }
+ ]
+ },
+ "function-call-target": {
+ "patterns": [
+ {
+ "include": "#support-function-call-identifiers"
+ },
+ {
+ "name": "entity.name.function.js",
+ "match": "(\\#?[_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ },
+ "function-call-optionals": {
+ "patterns": [
+ {
+ "name": "meta.function-call.js punctuation.accessor.optional.js",
+ "match": "\\?\\."
+ },
+ {
+ "name": "meta.function-call.js keyword.operator.definiteassignment.js",
+ "match": "\\!"
+ }
+ ]
+ },
+ "support-function-call-identifiers": {
+ "patterns": [
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#support-objects"
+ },
+ {
+ "include": "#object-identifiers"
+ },
+ {
+ "include": "#punctuation-accessor"
+ },
+ {
+ "name": "keyword.operator.expression.import.js",
+ "match": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"
+ }
+ ]
+ },
+ "new-expr": {
+ "name": "new.expr.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.new.js"
+ }
+ },
+ "end": "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "instanceof-expr": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.expression.instanceof.js"
+ }
+ },
+ "end": "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(===|!==|==|!=)|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "paren-expression-possibly-arrow": {
+ "patterns": [
+ {
+ "begin": "(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#paren-expression-possibly-arrow-with-typeparameters"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)))\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#paren-expression-possibly-arrow-with-typeparameters"
+ }
+ ]
+ },
+ {
+ "include": "#possibly-arrow-return-type"
+ }
+ ]
+ },
+ "paren-expression-possibly-arrow-with-typeparameters": {
+ "patterns": [
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-inside-possibly-arrow-parens"
+ }
+ ]
+ }
+ ]
+ },
+ "expression-inside-possibly-arrow-parens": {
+ "patterns": [
+ {
+ "include": "#expressionWithoutIdentifiers"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#decorator"
+ },
+ {
+ "include": "#destructuring-parameter"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js"
+ },
+ "2": {
+ "name": "keyword.operator.rest.js"
+ },
+ "3": {
+ "name": "entity.name.function.js variable.language.this.js"
+ },
+ "4": {
+ "name": "entity.name.function.js"
+ },
+ "5": {
+ "name": "keyword.operator.optional.js"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js"
+ },
+ "2": {
+ "name": "keyword.operator.rest.js"
+ },
+ "3": {
+ "name": "variable.parameter.js variable.language.this.js"
+ },
+ "4": {
+ "name": "variable.parameter.js"
+ },
+ "5": {
+ "name": "keyword.operator.optional.js"
+ }
+ }
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "name": "punctuation.separator.parameter.js",
+ "match": ","
+ },
+ {
+ "include": "#identifiers"
+ },
+ {
+ "include": "#expressionPunctuations"
+ }
+ ]
+ },
+ "paren-expression": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "cast": {
+ "patterns": [
+ {
+ "include": "#jsx"
+ }
+ ]
+ },
+ "expression-operators": {
+ "patterns": [
+ {
+ "name": "keyword.control.flow.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow.js"
+ }
+ },
+ "end": "\\*",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.generator.asterisk.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.js"
+ },
+ "2": {
+ "name": "keyword.generator.asterisk.js"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.expression.delete.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.operator.expression.in.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
+ },
+ {
+ "name": "keyword.operator.expression.of.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
+ },
+ {
+ "name": "keyword.operator.expression.instanceof.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.operator.new.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "include": "#typeof-operator"
+ },
+ {
+ "name": "keyword.operator.expression.void.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.as.js"
+ },
+ "2": {
+ "name": "storage.modifier.js"
+ }
+ }
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.as.js"
+ },
+ "2": {
+ "name": "keyword.control.satisfies.js"
+ }
+ },
+ "end": "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisfies)\\s+)|(\\s+\\<))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "name": "keyword.operator.spread.js",
+ "match": "\\.\\.\\."
+ },
+ {
+ "name": "keyword.operator.assignment.compound.js",
+ "match": "\\*=|(?<!\\()/=|%=|\\+=|\\-="
+ },
+ {
+ "name": "keyword.operator.assignment.compound.bitwise.js",
+ "match": "\\&=|\\^=|<<=|>>=|>>>=|\\|="
+ },
+ {
+ "name": "keyword.operator.bitwise.shift.js",
+ "match": "<<|>>>|>>"
+ },
+ {
+ "name": "keyword.operator.comparison.js",
+ "match": "===|!==|==|!="
+ },
+ {
+ "name": "keyword.operator.relational.js",
+ "match": "<=|>=|<>|<|>"
+ },
+ {
+ "match": "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.logical.js"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.compound.js"
+ },
+ "3": {
+ "name": "keyword.operator.arithmetic.js"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.logical.js",
+ "match": "\\!|&&|\\|\\||\\?\\?"
+ },
+ {
+ "name": "keyword.operator.bitwise.js",
+ "match": "\\&|~|\\^|\\|"
+ },
+ {
+ "name": "keyword.operator.assignment.js",
+ "match": "\\="
+ },
+ {
+ "name": "keyword.operator.decrement.js",
+ "match": "--"
+ },
+ {
+ "name": "keyword.operator.increment.js",
+ "match": "\\+\\+"
+ },
+ {
+ "name": "keyword.operator.arithmetic.js",
+ "match": "%|\\*|/|-|\\+"
+ },
+ {
+ "begin": "(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",
+ "end": "(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.compound.js"
+ },
+ "2": {
+ "name": "keyword.operator.arithmetic.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "match": "(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.compound.js"
+ },
+ "2": {
+ "name": "keyword.operator.arithmetic.js"
+ }
+ }
+ }
+ ]
+ },
+ "typeof-operator": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.expression.typeof.js"
+ }
+ },
+ "end": "(?=[,);}\\]=>:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#type-arguments"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "literal": {
+ "patterns": [
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#boolean-literal"
+ },
+ {
+ "include": "#null-literal"
+ },
+ {
+ "include": "#undefined-literal"
+ },
+ {
+ "include": "#numericConstant-literal"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#this-literal"
+ },
+ {
+ "include": "#super-literal"
+ }
+ ]
+ },
+ "array-literal": {
+ "name": "meta.array.literal.js",
+ "begin": "\\s*(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.square.js"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.square.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "numeric-literal": {
+ "patterns": [
+ {
+ "name": "constant.numeric.hex.js",
+ "match": "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.numeric.bigint.js"
+ }
+ }
+ },
+ {
+ "name": "constant.numeric.binary.js",
+ "match": "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.numeric.bigint.js"
+ }
+ }
+ },
+ {
+ "name": "constant.numeric.octal.js",
+ "match": "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.numeric.bigint.js"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
+ "captures": {
+ "0": {
+ "name": "constant.numeric.decimal.js"
+ },
+ "1": {
+ "name": "meta.delimiter.decimal.period.js"
+ },
+ "2": {
+ "name": "storage.type.numeric.bigint.js"
+ },
+ "3": {
+ "name": "meta.delimiter.decimal.period.js"
+ },
+ "4": {
+ "name": "storage.type.numeric.bigint.js"
+ },
+ "5": {
+ "name": "meta.delimiter.decimal.period.js"
+ },
+ "6": {
+ "name": "storage.type.numeric.bigint.js"
+ },
+ "7": {
+ "name": "storage.type.numeric.bigint.js"
+ },
+ "8": {
+ "name": "meta.delimiter.decimal.period.js"
+ },
+ "9": {
+ "name": "storage.type.numeric.bigint.js"
+ },
+ "10": {
+ "name": "meta.delimiter.decimal.period.js"
+ },
+ "11": {
+ "name": "storage.type.numeric.bigint.js"
+ },
+ "12": {
+ "name": "meta.delimiter.decimal.period.js"
+ },
+ "13": {
+ "name": "storage.type.numeric.bigint.js"
+ },
+ "14": {
+ "name": "storage.type.numeric.bigint.js"
+ }
+ }
+ }
+ ]
+ },
+ "boolean-literal": {
+ "patterns": [
+ {
+ "name": "constant.language.boolean.true.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "constant.language.boolean.false.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "null-literal": {
+ "name": "constant.language.null.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "this-literal": {
+ "name": "variable.language.this.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)"
+ },
+ "super-literal": {
+ "name": "variable.language.super.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)"
+ },
+ "undefined-literal": {
+ "name": "constant.language.undefined.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "numericConstant-literal": {
+ "patterns": [
+ {
+ "name": "constant.language.nan.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "constant.language.infinity.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "support-objects": {
+ "patterns": [
+ {
+ "name": "variable.language.arguments.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)"
+ },
+ {
+ "name": "support.class.promise.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.import.js"
+ },
+ "2": {
+ "name": "punctuation.accessor.js"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.js"
+ },
+ "4": {
+ "name": "support.variable.property.importmeta.js"
+ }
+ }
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.new.js"
+ },
+ "2": {
+ "name": "punctuation.accessor.js"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.js"
+ },
+ "4": {
+ "name": "support.variable.property.target.js"
+ }
+ }
+ },
+ {
+ "match": "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n (?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\())\n |\n (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.js"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.js"
+ },
+ "3": {
+ "name": "support.variable.property.js"
+ },
+ "4": {
+ "name": "support.constant.js"
+ }
+ }
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "support.type.object.module.js"
+ },
+ "2": {
+ "name": "support.type.object.module.js"
+ },
+ "3": {
+ "name": "punctuation.accessor.js"
+ },
+ "4": {
+ "name": "punctuation.accessor.optional.js"
+ },
+ "5": {
+ "name": "support.type.object.module.js"
+ }
+ }
+ }
+ ]
+ },
+ "identifiers": {
+ "patterns": [
+ {
+ "include": "#object-identifiers"
+ },
+ {
+ "match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n))",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.js"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.js"
+ },
+ "3": {
+ "name": "entity.name.function.js"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.js"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.js"
+ },
+ "3": {
+ "name": "variable.other.constant.property.js"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.js"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.js"
+ },
+ "3": {
+ "name": "variable.other.property.js"
+ }
+ }
+ },
+ {
+ "name": "variable.other.constant.js",
+ "match": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
+ },
+ {
+ "name": "variable.other.readwrite.js",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ }
+ ]
+ },
+ "object-identifiers": {
+ "patterns": [
+ {
+ "name": "support.class.js",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))"
+ },
+ {
+ "match": "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n (\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\n (\\#?[_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.js"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.js"
+ },
+ "3": {
+ "name": "variable.other.constant.object.property.js"
+ },
+ "4": {
+ "name": "variable.other.object.property.js"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:\n ([[:upper:]][_$[:digit:][:upper:]]*) |\n ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "variable.other.constant.object.js"
+ },
+ "2": {
+ "name": "variable.other.object.js"
+ }
+ }
+ }
+ ]
+ },
+ "type-annotation": {
+ "patterns": [
+ {
+ "name": "meta.type.annotation.js",
+ "begin": "(:)(?=\\s*\\S)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.js"
+ }
+ },
+ "end": "(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "name": "meta.type.annotation.js",
+ "begin": "(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.js"
+ }
+ },
+ "end": "(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "parameter-type-annotation": {
+ "patterns": [
+ {
+ "name": "meta.type.annotation.js",
+ "begin": "(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.js"
+ }
+ },
+ "end": "(?=[,)])|(?==[^>])",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "return-type": {
+ "patterns": [
+ {
+ "name": "meta.return.type.js",
+ "begin": "(?<=\\))\\s*(:)(?=\\s*\\S)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.js"
+ }
+ },
+ "end": "(?<![:|&])(?=$|^|[{};,]|//)",
+ "patterns": [
+ {
+ "include": "#return-type-core"
+ }
+ ]
+ },
+ {
+ "name": "meta.return.type.js",
+ "begin": "(?<=\\))\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.js"
+ }
+ },
+ "end": "(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#return-type-core"
+ }
+ ]
+ }
+ ]
+ },
+ "return-type-core": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<=[:|&])(?=\\s*\\{)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type-object"
+ }
+ ]
+ },
+ {
+ "include": "#type-predicate-operator"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "arrow-return-type": {
+ "name": "meta.return.type.arrow.js",
+ "begin": "(?<=\\))\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.js"
+ }
+ },
+ "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
+ "patterns": [
+ {
+ "include": "#arrow-return-type-body"
+ }
+ ]
+ },
+ "possibly-arrow-return-type": {
+ "begin": "(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.arrow.js meta.return.type.arrow.js keyword.operator.type.annotation.js"
+ }
+ },
+ "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
+ "contentName": "meta.arrow.js meta.return.type.arrow.js",
+ "patterns": [
+ {
+ "include": "#arrow-return-type-body"
+ }
+ ]
+ },
+ "arrow-return-type-body": {
+ "patterns": [
+ {
+ "begin": "(?<=[:])(?=\\s*\\{)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type-object"
+ }
+ ]
+ },
+ {
+ "include": "#type-predicate-operator"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type-parameters": {
+ "name": "meta.type.parameters.js",
+ "begin": "(<)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.typeparameters.begin.js"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.typeparameters.end.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "name": "storage.modifier.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "name": "keyword.operator.assignment.js",
+ "match": "(=)(?!>)"
+ }
+ ]
+ },
+ "type-arguments": {
+ "name": "meta.type.parameters.js",
+ "begin": "\\<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.begin.js"
+ }
+ },
+ "end": "\\>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.end.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type-arguments-body"
+ }
+ ]
+ },
+ "type-arguments-body": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "captures": {
+ "0": {
+ "name": "keyword.operator.type.js"
+ }
+ }
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "type": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-string"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "include": "#type-builtin-literals"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#type-tuple"
+ },
+ {
+ "include": "#type-object"
+ },
+ {
+ "include": "#type-operators"
+ },
+ {
+ "include": "#type-conditional"
+ },
+ {
+ "include": "#type-fn-type-parameters"
+ },
+ {
+ "include": "#type-paren-or-function-parameters"
+ },
+ {
+ "include": "#type-function-return-type"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js"
+ }
+ }
+ },
+ {
+ "include": "#type-name"
+ }
+ ]
+ },
+ "type-primitive": {
+ "name": "support.type.primitive.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "type-builtin-literals": {
+ "name": "support.type.builtin.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "type-tuple": {
+ "name": "meta.type.tuple.js",
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.square.js"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.square.js"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.operator.rest.js",
+ "match": "\\.\\.\\."
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "entity.name.label.js"
+ },
+ "2": {
+ "name": "keyword.operator.optional.js"
+ },
+ "3": {
+ "name": "punctuation.separator.label.js"
+ }
+ }
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "type-object": {
+ "name": "meta.object.type.js",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#method-declaration"
+ },
+ {
+ "include": "#indexer-declaration"
+ },
+ {
+ "include": "#indexer-mapped-type-declaration"
+ },
+ {
+ "include": "#field-declaration"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "begin": "\\.\\.\\.",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.spread.js"
+ }
+ },
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type-conditional": {
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js"
+ }
+ },
+ "end": "(?<=:)",
+ "patterns": [
+ {
+ "begin": "\\?",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.js"
+ }
+ },
+ "end": ":",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "type-paren-or-function-parameters": {
+ "name": "meta.type.paren.cover.js",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js"
+ },
+ "2": {
+ "name": "keyword.operator.rest.js"
+ },
+ "3": {
+ "name": "entity.name.function.js variable.language.this.js"
+ },
+ "4": {
+ "name": "entity.name.function.js"
+ },
+ "5": {
+ "name": "keyword.operator.optional.js"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js"
+ },
+ "2": {
+ "name": "keyword.operator.rest.js"
+ },
+ "3": {
+ "name": "variable.parameter.js variable.language.this.js"
+ },
+ "4": {
+ "name": "variable.parameter.js"
+ },
+ "5": {
+ "name": "keyword.operator.optional.js"
+ }
+ }
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "name": "punctuation.separator.parameter.js",
+ "match": ","
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type-fn-type-parameters": {
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.type.constructor.js storage.modifier.js"
+ },
+ "2": {
+ "name": "meta.type.constructor.js keyword.control.new.js"
+ }
+ },
+ "end": "(?<=>)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameters"
+ }
+ ]
+ },
+ {
+ "name": "meta.type.constructor.js",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js"
+ },
+ "2": {
+ "name": "keyword.control.new.js"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#function-parameters"
+ }
+ ]
+ },
+ {
+ "name": "meta.type.function.js",
+ "begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#function-parameters"
+ }
+ ]
+ }
+ ]
+ },
+ "type-function-return-type": {
+ "patterns": [
+ {
+ "name": "meta.type.function.return.js",
+ "begin": "(=>)(?=\\s*\\S)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.arrow.js"
+ }
+ },
+ "end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
+ "patterns": [
+ {
+ "include": "#type-function-return-type-core"
+ }
+ ]
+ },
+ {
+ "name": "meta.type.function.return.js",
+ "begin": "=>",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.function.arrow.js"
+ }
+ },
+ "end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#type-function-return-type-core"
+ }
+ ]
+ }
+ ]
+ },
+ "type-function-return-type-core": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<==>)(?=\\s*\\{)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type-object"
+ }
+ ]
+ },
+ {
+ "include": "#type-predicate-operator"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type-operators": {
+ "patterns": [
+ {
+ "include": "#typeof-operator"
+ },
+ {
+ "include": "#type-infer"
+ },
+ {
+ "begin": "([&|])(?=\\s*\\{)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.type.js"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type-object"
+ }
+ ]
+ },
+ {
+ "begin": "[&|]",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.type.js"
+ }
+ },
+ "end": "(?=\\S)"
+ },
+ {
+ "name": "keyword.operator.expression.keyof.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.operator.ternary.js",
+ "match": "(\\?|\\:)"
+ },
+ {
+ "name": "keyword.operator.expression.import.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
+ }
+ ]
+ },
+ "type-infer": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",
+ "name": "meta.type.infer.js",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.expression.infer.js"
+ },
+ "2": {
+ "name": "entity.name.type.js"
+ },
+ "3": {
+ "name": "keyword.operator.expression.extends.js"
+ }
+ }
+ }
+ ]
+ },
+ "type-predicate-operator": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.type.asserts.js"
+ },
+ "2": {
+ "name": "variable.parameter.js variable.language.this.js"
+ },
+ "3": {
+ "name": "variable.parameter.js"
+ },
+ "4": {
+ "name": "keyword.operator.expression.is.js"
+ }
+ }
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.type.asserts.js"
+ },
+ "2": {
+ "name": "variable.parameter.js variable.language.this.js"
+ },
+ "3": {
+ "name": "variable.parameter.js"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.type.asserts.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.operator.expression.is.js",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "type-name": {
+ "patterns": [
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.module.js"
+ },
+ "2": {
+ "name": "punctuation.accessor.js"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.js"
+ },
+ "4": {
+ "name": "meta.type.parameters.js punctuation.definition.typeparameters.begin.js"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "meta.type.parameters.js punctuation.definition.typeparameters.end.js"
+ }
+ },
+ "contentName": "meta.type.parameters.js",
+ "patterns": [
+ {
+ "include": "#type-arguments-body"
+ }
+ ]
+ },
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.type.js"
+ },
+ "2": {
+ "name": "meta.type.parameters.js punctuation.definition.typeparameters.begin.js"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "meta.type.parameters.js punctuation.definition.typeparameters.end.js"
+ }
+ },
+ "contentName": "meta.type.parameters.js",
+ "patterns": [
+ {
+ "include": "#type-arguments-body"
+ }
+ ]
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.module.js"
+ },
+ "2": {
+ "name": "punctuation.accessor.js"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.js"
+ }
+ }
+ },
+ {
+ "name": "entity.name.type.js",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ }
+ ]
+ },
+ "punctuation-comma": {
+ "name": "punctuation.separator.comma.js",
+ "match": ","
+ },
+ "punctuation-semicolon": {
+ "name": "punctuation.terminator.statement.js",
+ "match": ";"
+ },
+ "punctuation-accessor": {
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.js"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.js"
+ }
+ }
+ },
+ "string": {
+ "patterns": [
+ {
+ "include": "#qstring-single"
+ },
+ {
+ "include": "#qstring-double"
+ },
+ {
+ "include": "#template"
+ }
+ ]
+ },
+ "qstring-double": {
+ "name": "string.quoted.double.js",
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.js"
+ }
+ },
+ "end": "(\")|((?:[^\\\\\\n])$)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.js"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "qstring-single": {
+ "name": "string.quoted.single.js",
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.js"
+ }
+ },
+ "end": "(\\')|((?:[^\\\\\\n])$)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.js"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "string-character-escape": {
+ "name": "constant.character.escape.js",
+ "match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
+ },
+ "template": {
+ "patterns": [
+ {
+ "include": "#template-call"
+ },
+ {
+ "contentName": "string.template.js",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.tagged-template.js"
+ },
+ "2": {
+ "name": "string.template.js punctuation.definition.string.template.begin.js"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "string.template.js punctuation.definition.string.template.end.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template-substitution-element"
+ },
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ }
+ ]
+ },
+ "template-call": {
+ "patterns": [
+ {
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
+ "end": "(?=`)",
+ "patterns": [
+ {
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
+ "end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
+ "patterns": [
+ {
+ "include": "#support-function-call-identifiers"
+ },
+ {
+ "name": "entity.name.function.tagged-template.js",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ },
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ },
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.tagged-template.js"
+ }
+ },
+ "end": "(?=`)",
+ "patterns": [
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ }
+ ]
+ },
+ "template-substitution-element": {
+ "name": "meta.template.expression.js",
+ "begin": "\\$\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.begin.js"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.end.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ],
+ "contentName": "meta.embedded.line.js"
+ },
+ "type-string": {
+ "patterns": [
+ {
+ "include": "#qstring-single"
+ },
+ {
+ "include": "#qstring-double"
+ },
+ {
+ "include": "#template-type"
+ }
+ ]
+ },
+ "template-type": {
+ "patterns": [
+ {
+ "include": "#template-call"
+ },
+ {
+ "contentName": "string.template.js",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.tagged-template.js"
+ },
+ "2": {
+ "name": "string.template.js punctuation.definition.string.template.begin.js"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "string.template.js punctuation.definition.string.template.end.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template-type-substitution-element"
+ },
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ }
+ ]
+ },
+ "template-type-substitution-element": {
+ "name": "meta.template.expression.js",
+ "begin": "\\$\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.begin.js"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.end.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ],
+ "contentName": "meta.embedded.line.js"
+ },
+ "regex": {
+ "patterns": [
+ {
+ "name": "string.regexp.js",
+ "begin": "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.js"
+ }
+ },
+ "end": "(/)([dgimsuy]*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.js"
+ },
+ "2": {
+ "name": "keyword.other.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "name": "string.regexp.js",
+ "begin": "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.js"
+ }
+ },
+ "end": "(/)([dgimsuy]*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.js"
+ },
+ "2": {
+ "name": "keyword.other.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ }
+ ]
+ },
+ "regexp": {
+ "patterns": [
+ {
+ "name": "keyword.control.anchor.regexp",
+ "match": "\\\\[bB]|\\^|\\$"
+ },
+ {
+ "match": "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>",
+ "captures": {
+ "0": {
+ "name": "keyword.other.back-reference.regexp"
+ },
+ "1": {
+ "name": "variable.other.regexp"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.quantifier.regexp",
+ "match": "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
+ },
+ {
+ "name": "keyword.operator.or.regexp",
+ "match": "\\|"
+ },
+ {
+ "name": "meta.group.assertion.regexp",
+ "begin": "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.regexp"
+ },
+ "2": {
+ "name": "punctuation.definition.group.assertion.regexp"
+ },
+ "3": {
+ "name": "meta.assertion.look-ahead.regexp"
+ },
+ "4": {
+ "name": "meta.assertion.negative-look-ahead.regexp"
+ },
+ "5": {
+ "name": "meta.assertion.look-behind.regexp"
+ },
+ "6": {
+ "name": "meta.assertion.negative-look-behind.regexp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "name": "meta.group.regexp",
+ "begin": "\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.regexp"
+ },
+ "1": {
+ "name": "punctuation.definition.group.no-capture.regexp"
+ },
+ "2": {
+ "name": "variable.other.regexp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "name": "constant.other.character-class.set.regexp",
+ "begin": "(\\[)(\\^)?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.regexp"
+ },
+ "2": {
+ "name": "keyword.operator.negation.regexp"
+ }
+ },
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "constant.other.character-class.range.regexp",
+ "match": "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",
+ "captures": {
+ "1": {
+ "name": "constant.character.numeric.regexp"
+ },
+ "2": {
+ "name": "constant.character.control.regexp"
+ },
+ "3": {
+ "name": "constant.character.escape.backslash.regexp"
+ },
+ "4": {
+ "name": "constant.character.numeric.regexp"
+ },
+ "5": {
+ "name": "constant.character.control.regexp"
+ },
+ "6": {
+ "name": "constant.character.escape.backslash.regexp"
+ }
+ }
+ },
+ {
+ "include": "#regex-character-class"
+ }
+ ]
+ },
+ {
+ "include": "#regex-character-class"
+ }
+ ]
+ },
+ "regex-character-class": {
+ "patterns": [
+ {
+ "name": "constant.other.character-class.regexp",
+ "match": "\\\\[wWsSdDtrnvf]|\\."
+ },
+ {
+ "name": "constant.character.numeric.regexp",
+ "match": "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"
+ },
+ {
+ "name": "constant.character.control.regexp",
+ "match": "\\\\c[A-Z]"
+ },
+ {
+ "name": "constant.character.escape.backslash.regexp",
+ "match": "\\\\."
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "name": "comment.block.documentation.js",
+ "begin": "/\\*\\*(?!/)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.js"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#docblock"
+ }
+ ]
+ },
+ {
+ "name": "comment.block.js",
+ "begin": "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.js"
+ },
+ "2": {
+ "name": "storage.type.internaldeclaration.js"
+ },
+ "3": {
+ "name": "punctuation.decorator.internaldeclaration.js"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.js"
+ }
+ }
+ },
+ {
+ "begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.js"
+ },
+ "2": {
+ "name": "comment.line.double-slash.js"
+ },
+ "3": {
+ "name": "punctuation.definition.comment.js"
+ },
+ "4": {
+ "name": "storage.type.internaldeclaration.js"
+ },
+ "5": {
+ "name": "punctuation.decorator.internaldeclaration.js"
+ }
+ },
+ "end": "(?=$)",
+ "contentName": "comment.line.double-slash.js"
+ }
+ ]
+ },
+ "single-line-comment-consuming-line-ending": {
+ "begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.js"
+ },
+ "2": {
+ "name": "comment.line.double-slash.js"
+ },
+ "3": {
+ "name": "punctuation.definition.comment.js"
+ },
+ "4": {
+ "name": "storage.type.internaldeclaration.js"
+ },
+ "5": {
+ "name": "punctuation.decorator.internaldeclaration.js"
+ }
+ },
+ "end": "(?=^)",
+ "contentName": "comment.line.double-slash.js"
+ },
+ "directives": {
+ "name": "comment.line.triple-slash.directive.js",
+ "begin": "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.js"
+ }
+ },
+ "end": "(?=$)",
+ "patterns": [
+ {
+ "name": "meta.tag.js",
+ "begin": "(<)(reference|amd-dependency|amd-module)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.directive.js"
+ },
+ "2": {
+ "name": "entity.name.tag.directive.js"
+ }
+ },
+ "end": "/>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.directive.js"
+ }
+ },
+ "patterns": [
+ {
+ "name": "entity.other.attribute-name.directive.js",
+ "match": "path|types|no-default-lib|lib|name|resolution-mode"
+ },
+ {
+ "name": "keyword.operator.assignment.js",
+ "match": "="
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "docblock": {
+ "patterns": [
+ {
+ "match": "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "constant.language.access-type.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)author)\n\\s+\n(\n [^@\\s<>*/]\n (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n \\s*\n (<)\n ([^>\\s]+)\n (>)\n)?",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "4": {
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
+ },
+ "5": {
+ "name": "constant.other.email.link.underline.jsdoc"
+ },
+ "6": {
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+) # <that namepath>\n\\s+ (as) \\s+ # as\n((?:[^@\\s*/]|\\*[^/])+) # <this namepath>",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "4": {
+ "name": "keyword.operator.control.jsdoc"
+ },
+ "5": {
+ "name": "entity.name.type.instance.jsdoc"
+ }
+ }
+ },
+ {
+ "name": "meta.example.jsdoc",
+ "begin": "((@)example)\\s+",
+ "end": "(?=@|\\*/)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "patterns": [
+ {
+ "match": "^\\s\\*\\s+"
+ },
+ {
+ "contentName": "constant.other.description.jsdoc",
+ "begin": "\\G(<)caption(>)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.tag.inline.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
+ }
+ },
+ "end": "(</)caption(>)|(?=\\*/)",
+ "endCaptures": {
+ "0": {
+ "name": "entity.name.tag.inline.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "[^\\s@*](?:[^*]|\\*[^/])*",
+ "captures": {
+ "0": {
+ "name": "source.embedded.js"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "match": "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "constant.language.symbol-type.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)see)\n\\s+\n(?:\n # URL\n (\n (?=https?://)\n (?:[^\\s*]|\\*[^/])+\n )\n |\n # JSDoc namepath\n (\n (?!\n # Avoid matching bare URIs (also acceptable as links)\n https?://\n |\n # Avoid matching {@inline tags}; we match those below\n (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n {@(?:link|linkcode|linkplain|tutorial)\\b\n )\n # Matched namepath\n (?:[^@\\s*/]|\\*[^/])+\n )\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.link.underline.jsdoc"
+ },
+ "4": {
+ "name": "entity.name.type.instance.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n [A-Za-z_$] # First character: non-numeric word character\n [\\w$.\\[\\]]* # Rest of identifier\n (?: # Possible list of additional identifiers\n \\s* , \\s*\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n )*\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ }
+ }
+ },
+ {
+ "begin": "(?x)((@)template)\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ },
+ {
+ "name": "variable.other.jsdoc",
+ "match": "([A-Za-z_$][\\w$.\\[\\]]*)"
+ }
+ ]
+ },
+ {
+ "match": "(?x)\n(\n (@)\n (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ }
+ }
+ },
+ {
+ "begin": "((@)typedef)\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ },
+ {
+ "name": "entity.name.type.instance.jsdoc",
+ "match": "(?:[^@\\s*/]|\\*[^/])+"
+ }
+ ]
+ },
+ {
+ "begin": "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ },
+ {
+ "name": "variable.other.jsdoc",
+ "match": "([A-Za-z_$][\\w$.\\[\\]]*)"
+ },
+ {
+ "name": "variable.other.jsdoc",
+ "match": "(?x)\n(\\[)\\s*\n[\\w$]+\n(?:\n (?:\\[\\])? # Foo[ ].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [\\w$]+\n)*\n(?:\n \\s*\n (=) # [foo=bar] Default parameter value\n \\s*\n (\n # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\n (?>\n \"(?:(?:\\*(?!/))|(?:\\\\(?!\"))|[^*\\\\])*?\" | # [foo=\"bar\"] Double-quoted\n '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | # [foo='bar'] Single-quoted\n \\[ (?:(?:\\*(?!/))|[^*])*? \\] | # [foo=[1,2]] Array literal\n (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* # Everything else\n )*\n )\n)?\n\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.optional-value.begin.bracket.square.jsdoc"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.jsdoc"
+ },
+ "3": {
+ "name": "source.embedded.js"
+ },
+ "4": {
+ "name": "punctuation.definition.optional-value.end.bracket.square.jsdoc"
+ },
+ "5": {
+ "name": "invalid.illegal.syntax.jsdoc"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n(\n (@)\n (?:define|enum|exception|export|extends|lends|implements|modifies\n |namespace|private|protected|returns?|satisfies|suppress|this|throws|type\n |yields?)\n)\n\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ }
+ ]
+ },
+ {
+ "match": "(?x)\n(\n (@)\n (?:alias|augments|callback|constructs|emits|event|fires|exports?\n |extends|external|function|func|host|lends|listens|interface|memberof!?\n |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n (?:\n [^{}@\\s*] | \\*[^/]\n )+\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "entity.name.type.instance.jsdoc"
+ }
+ }
+ },
+ {
+ "contentName": "variable.other.jsdoc",
+ "begin": "((@)(?:default(?:value)?|license|version))\\s+(([''\"]))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ },
+ "4": {
+ "name": "punctuation.definition.string.begin.jsdoc"
+ }
+ },
+ "end": "(\\3)|(?=$|\\*/)",
+ "endCaptures": {
+ "0": {
+ "name": "variable.other.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.string.end.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ }
+ }
+ },
+ {
+ "name": "storage.type.class.jsdoc",
+ "match": "(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ }
+ },
+ {
+ "include": "#inline-tags"
+ },
+ {
+ "match": "((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ }
+ }
+ ]
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "begin": "{",
+ "end": "}|(?=\\*/)",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]|(?=\\*/)",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ }
+ ]
+ },
+ "inline-tags": {
+ "patterns": [
+ {
+ "name": "constant.other.description.jsdoc",
+ "match": "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.bracket.square.begin.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.square.end.jsdoc"
+ }
+ }
+ },
+ {
+ "name": "entity.name.type.instance.jsdoc",
+ "begin": "({)((@)(?:link(?:code|plain)?|tutorial))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.bracket.curly.begin.jsdoc"
+ },
+ "2": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "3": {
+ "name": "punctuation.definition.inline.tag.jsdoc"
+ }
+ },
+ "end": "}|(?=\\*/)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.bracket.curly.end.jsdoc"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?",
+ "captures": {
+ "1": {
+ "name": "variable.other.link.underline.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.separator.pipe.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?",
+ "captures": {
+ "1": {
+ "name": "variable.other.description.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.separator.pipe.jsdoc"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "jsdoctype": {
+ "patterns": [
+ {
+ "contentName": "entity.name.type.instance.jsdoc",
+ "begin": "\\G({)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.bracket.curly.begin.jsdoc"
+ }
+ },
+ "end": "((}))\\s*|(?=\\*/)",
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.curly.end.jsdoc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ }
+ ]
+ },
+ "jsx": {
+ "patterns": [
+ {
+ "include": "#jsx-tag-without-attributes-in-expression"
+ },
+ {
+ "include": "#jsx-tag-in-expression"
+ }
+ ]
+ },
+ "jsx-tag-without-attributes-in-expression": {
+ "begin": "(?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
+ "end": "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
+ "patterns": [
+ {
+ "include": "#jsx-tag-without-attributes"
+ }
+ ]
+ },
+ "jsx-tag-without-attributes": {
+ "name": "meta.tag.without-attributes.js",
+ "begin": "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
+ "end": "(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.js"
+ },
+ "2": {
+ "name": "entity.name.tag.namespace.js"
+ },
+ "3": {
+ "name": "punctuation.separator.namespace.js"
+ },
+ "4": {
+ "name": "entity.name.tag.js"
+ },
+ "5": {
+ "name": "support.class.component.js"
+ },
+ "6": {
+ "name": "punctuation.definition.tag.end.js"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.js"
+ },
+ "2": {
+ "name": "entity.name.tag.namespace.js"
+ },
+ "3": {
+ "name": "punctuation.separator.namespace.js"
+ },
+ "4": {
+ "name": "entity.name.tag.js"
+ },
+ "5": {
+ "name": "support.class.component.js"
+ },
+ "6": {
+ "name": "punctuation.definition.tag.end.js"
+ }
+ },
+ "contentName": "meta.jsx.children.js",
+ "patterns": [
+ {
+ "include": "#jsx-children"
+ }
+ ]
+ },
+ "jsx-tag-in-expression": {
+ "begin": "(?x)\n (?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*\n (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n (?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
+ "end": "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
+ "patterns": [
+ {
+ "include": "#jsx-tag"
+ }
+ ]
+ },
+ "jsx-tag": {
+ "name": "meta.tag.js",
+ "begin": "(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
+ "end": "(/>)|(?:(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.js"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.begin.js"
+ },
+ "3": {
+ "name": "entity.name.tag.namespace.js"
+ },
+ "4": {
+ "name": "punctuation.separator.namespace.js"
+ },
+ "5": {
+ "name": "entity.name.tag.js"
+ },
+ "6": {
+ "name": "support.class.component.js"
+ },
+ "7": {
+ "name": "punctuation.definition.tag.end.js"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.js"
+ },
+ "2": {
+ "name": "entity.name.tag.namespace.js"
+ },
+ "3": {
+ "name": "punctuation.separator.namespace.js"
+ },
+ "4": {
+ "name": "entity.name.tag.js"
+ },
+ "5": {
+ "name": "support.class.component.js"
+ }
+ },
+ "end": "(?=[/]?>)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-arguments"
+ },
+ {
+ "include": "#jsx-tag-attributes"
+ }
+ ]
+ },
+ {
+ "begin": "(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.js"
+ }
+ },
+ "end": "(?=</)",
+ "contentName": "meta.jsx.children.js",
+ "patterns": [
+ {
+ "include": "#jsx-children"
+ }
+ ]
+ }
+ ]
+ },
+ "jsx-children": {
+ "patterns": [
+ {
+ "include": "#jsx-tag-without-attributes"
+ },
+ {
+ "include": "#jsx-tag"
+ },
+ {
+ "include": "#jsx-evaluated-code"
+ },
+ {
+ "include": "#jsx-entities"
+ }
+ ]
+ },
+ "jsx-evaluated-code": {
+ "contentName": "meta.embedded.expression.js",
+ "begin": "\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.js"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "jsx-entities": {
+ "patterns": [
+ {
+ "name": "constant.character.entity.js",
+ "match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.js"
+ },
+ "3": {
+ "name": "punctuation.definition.entity.js"
+ }
+ }
+ }
+ ]
+ },
+ "jsx-tag-attributes": {
+ "name": "meta.tag.attributes.js",
+ "begin": "\\s+",
+ "end": "(?=[/]?>)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#jsx-tag-attribute-name"
+ },
+ {
+ "include": "#jsx-tag-attribute-assignment"
+ },
+ {
+ "include": "#jsx-string-double-quoted"
+ },
+ {
+ "include": "#jsx-string-single-quoted"
+ },
+ {
+ "include": "#jsx-evaluated-code"
+ },
+ {
+ "include": "#jsx-tag-attributes-illegal"
+ }
+ ]
+ },
+ "jsx-tag-attribute-name": {
+ "match": "(?x)\n \\s*\n (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?\n ([_$[:alpha:]][-_$[:alnum:]]*)\n (?=\\s|=|/?>|/\\*|//)",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.namespace.js"
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.js"
+ },
+ "3": {
+ "name": "entity.other.attribute-name.js"
+ }
+ }
+ },
+ "jsx-tag-attribute-assignment": {
+ "name": "keyword.operator.assignment.js",
+ "match": "=(?=\\s*(?:'|\"|{|/\\*|//|\\n))"
+ },
+ "jsx-string-double-quoted": {
+ "name": "string.quoted.double.js",
+ "begin": "\"",
+ "end": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.js"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#jsx-entities"
+ }
+ ]
+ },
+ "jsx-string-single-quoted": {
+ "name": "string.quoted.single.js",
+ "begin": "'",
+ "end": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.js"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#jsx-entities"
+ }
+ ]
+ },
+ "jsx-tag-attributes-illegal": {
+ "name": "invalid.illegal.attribute.js",
+ "match": "\\S+"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/jinja-html.tmLanguage.json b/node_modules/shiki/languages/jinja-html.tmLanguage.json
new file mode 100644
index 0000000..dfc74b5
--- /dev/null
+++ b/node_modules/shiki/languages/jinja-html.tmLanguage.json
@@ -0,0 +1,16 @@
+{
+ "name": "jinja-html",
+ "scopeName": "text.html.jinja",
+ "comment": "Jinja HTML Templates",
+ "firstLineMatch": "^{% extends [\"'][^\"']+[\"'] %}",
+ "foldingStartMarker": "(<(?i:(head|table|tr|div|style|script|ul|ol|form|dl))\\b.*?>|{%\\s*(block|filter|for|if|macro|raw))",
+ "foldingStopMarker": "(</(?i:(head|table|tr|div|style|script|ul|ol|form|dl))\\b.*?>|{%\\s*(endblock|endfilter|endfor|endif|endmacro|endraw)\\s*%})",
+ "patterns": [
+ {
+ "include": "source.jinja"
+ },
+ {
+ "include": "text.html.basic"
+ }
+ ]
+}
diff --git a/node_modules/shiki/languages/jinja.tmLanguage.json b/node_modules/shiki/languages/jinja.tmLanguage.json
new file mode 100644
index 0000000..aafd061
--- /dev/null
+++ b/node_modules/shiki/languages/jinja.tmLanguage.json
@@ -0,0 +1,345 @@
+{
+ "name": "jinja",
+ "scopeName": "source.jinja",
+ "comment": "Jinja Templates",
+ "foldingStartMarker": "({%\\s*(block|filter|for|if|macro|raw))",
+ "foldingStopMarker": "({%\\s*(endblock|endfilter|endfor|endif|endmacro|endraw)\\s*%})",
+ "patterns": [
+ {
+ "begin": "({%)\\s*(raw)\\s*(%})",
+ "captures": {
+ "1": {
+ "name": "entity.other.jinja.delimiter.tag"
+ },
+ "2": {
+ "name": "keyword.control.jinja"
+ },
+ "3": {
+ "name": "entity.other.jinja.delimiter.tag"
+ }
+ },
+ "end": "({%)\\s*(endraw)\\s*(%})",
+ "name": "comment.block.jinja.raw"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "{{-?",
+ "captures": [
+ {
+ "name": "variable.entity.other.jinja.delimiter"
+ }
+ ],
+ "end": "-?}}",
+ "name": "variable.meta.scope.jinja",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "{%-?",
+ "captures": [
+ {
+ "name": "entity.other.jinja.delimiter.tag"
+ }
+ ],
+ "end": "-?%}",
+ "name": "meta.scope.jinja.tag",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "comments": {
+ "begin": "{#-?",
+ "captures": [
+ {
+ "name": "entity.other.jinja.delimiter.comment"
+ }
+ ],
+ "end": "-?#}",
+ "name": "comment.block.jinja",
+ "patterns": [
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "escaped_char": {
+ "match": "\\\\x[0-9A-F]{2}",
+ "name": "constant.character.escape.hex.jinja"
+ },
+ "escaped_unicode_char": {
+ "captures": {
+ "1": {
+ "name": "constant.character.escape.unicode.16-bit-hex.jinja"
+ },
+ "2": {
+ "name": "constant.character.escape.unicode.32-bit-hex.jinja"
+ },
+ "3": {
+ "name": "constant.character.escape.unicode.name.jinja"
+ }
+ },
+ "match": "(\\\\U[0-9A-Fa-f]{8})|(\\\\u[0-9A-Fa-f]{4})|(\\\\N\\{[a-zA-Z ]+\\})"
+ },
+ "expression": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.jinja"
+ },
+ "2": {
+ "name": "variable.other.jinja.block"
+ }
+ },
+ "match": "\\s*\\b(block)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.jinja"
+ },
+ "2": {
+ "name": "variable.other.jinja.filter"
+ }
+ },
+ "match": "\\s*\\b(filter)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.jinja"
+ },
+ "2": {
+ "name": "variable.other.jinja.test"
+ }
+ },
+ "match": "\\s*\\b(is)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.jinja"
+ }
+ },
+ "match": "(?<=\\{\\%-|\\{\\%)\\s*\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?!\\s*[,=])"
+ },
+ {
+ "match": "\\b(and|else|if|in|import|not|or|recursive|with(out)?\\s+context)\\b",
+ "name": "keyword.control.jinja"
+ },
+ {
+ "match": "\\b(true|false|none)\\b",
+ "name": "constant.language.jinja"
+ },
+ {
+ "match": "\\b(loop|super|self|varargs|kwargs)\\b",
+ "name": "variable.language.jinja"
+ },
+ {
+ "match": "[a-zA-Z_][a-zA-Z0-9_]*",
+ "name": "variable.other.jinja"
+ },
+ {
+ "match": "(\\+|\\-|\\*\\*|\\*|//|/|%)",
+ "name": "keyword.operator.arithmetic.jinja"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.other.jinja"
+ },
+ "2": {
+ "name": "variable.other.jinja.filter"
+ }
+ },
+ "match": "(\\|)([a-zA-Z_][a-zA-Z0-9_]*)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.other.jinja"
+ },
+ "2": {
+ "name": "variable.other.jinja.attribute"
+ }
+ },
+ "match": "(\\.)([a-zA-Z_][a-zA-Z0-9_]*)"
+ },
+ {
+ "begin": "\\[",
+ "captures": [
+ {
+ "name": "punctuation.other.jinja"
+ }
+ ],
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "captures": [
+ {
+ "name": "punctuation.other.jinja"
+ }
+ ],
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "\\{",
+ "captures": [
+ {
+ "name": "punctuation.other.jinja"
+ }
+ ],
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "match": "(\\.|:|\\||,)",
+ "name": "punctuation.other.jinja"
+ },
+ {
+ "match": "(==|<=|=>|<|>|!=)",
+ "name": "keyword.operator.comparison.jinja"
+ },
+ {
+ "match": "=",
+ "name": "keyword.operator.assignment.jinja"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": [
+ {
+ "name": "punctuation.definition.string.begin.jinja"
+ }
+ ],
+ "end": "\"",
+ "endCaptures": [
+ {
+ "name": "punctuation.definition.string.end.jinja"
+ }
+ ],
+ "name": "string.quoted.double.jinja",
+ "patterns": [
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": [
+ {
+ "name": "punctuation.definition.string.begin.jinja"
+ }
+ ],
+ "end": "'",
+ "endCaptures": [
+ {
+ "name": "punctuation.definition.string.end.jinja"
+ }
+ ],
+ "name": "string.quoted.single.jinja",
+ "patterns": [
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "begin": "@/",
+ "beginCaptures": [
+ {
+ "name": "punctuation.definition.regexp.begin.jinja"
+ }
+ ],
+ "end": "/",
+ "endCaptures": [
+ {
+ "name": "punctuation.definition.regexp.end.jinja"
+ }
+ ],
+ "name": "string.regexp.jinja",
+ "patterns": [
+ {
+ "include": "#simple_escapes"
+ }
+ ]
+ }
+ ]
+ },
+ "simple_escapes": {
+ "captures": {
+ "1": {
+ "name": "constant.character.escape.newline.jinja"
+ },
+ "2": {
+ "name": "constant.character.escape.backlash.jinja"
+ },
+ "3": {
+ "name": "constant.character.escape.double-quote.jinja"
+ },
+ "4": {
+ "name": "constant.character.escape.single-quote.jinja"
+ },
+ "5": {
+ "name": "constant.character.escape.bell.jinja"
+ },
+ "6": {
+ "name": "constant.character.escape.backspace.jinja"
+ },
+ "7": {
+ "name": "constant.character.escape.formfeed.jinja"
+ },
+ "8": {
+ "name": "constant.character.escape.linefeed.jinja"
+ },
+ "9": {
+ "name": "constant.character.escape.return.jinja"
+ },
+ "10": {
+ "name": "constant.character.escape.tab.jinja"
+ },
+ "11": {
+ "name": "constant.character.escape.vertical-tab.jinja"
+ }
+ },
+ "match": "(\\\\\\n)|(\\\\\\\\)|(\\\\\\\")|(\\\\')|(\\\\a)|(\\\\b)|(\\\\f)|(\\\\n)|(\\\\r)|(\\\\t)|(\\\\v)"
+ },
+ "string": {
+ "patterns": [
+ {
+ "include": "#simple_escapes"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#escaped_unicode_char"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/jison.tmLanguage.json b/node_modules/shiki/languages/jison.tmLanguage.json
new file mode 100644
index 0000000..103ae9b
--- /dev/null
+++ b/node_modules/shiki/languages/jison.tmLanguage.json
@@ -0,0 +1,712 @@
+{
+ "name": "jison",
+ "scopeName": "source.jison",
+ "fileTypes": ["jison"],
+ "patterns": [
+ {
+ "begin": "%%",
+ "end": "\\z",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.separator.section.jison"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "%%",
+ "end": "\\z",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.separator.section.jison"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.section.epilogue.jison",
+ "begin": "\\G",
+ "end": "\\z",
+ "contentName": "source.js.embedded.jison",
+ "patterns": [
+ {
+ "include": "#epilogue_section"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "meta.section.rules.jison",
+ "begin": "\\G",
+ "end": "(?=%%)",
+ "patterns": [
+ {
+ "include": "#rules_section"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "meta.section.declarations.jison",
+ "begin": "^",
+ "end": "(?=%%)",
+ "patterns": [
+ {
+ "include": "#declarations_section"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "declarations_section": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "^\\s*(%lex)\\s*$",
+ "end": "^\\s*(/lex)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.lexer.begin.jison"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.tag.lexer.end.jison"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "%%",
+ "end": "(?=/lex)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.separator.section.jisonlex"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "^%%",
+ "end": "(?=/lex)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.separator.section.jisonlex"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.section.user-code.jisonlex",
+ "begin": "\\G",
+ "end": "(?=/lex)",
+ "contentName": "source.js.embedded.jisonlex",
+ "patterns": [
+ {
+ "include": "source.jisonlex#user_code_section"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "meta.section.rules.jisonlex",
+ "begin": "\\G",
+ "end": "^(?=%%|/lex)",
+ "patterns": [
+ {
+ "include": "source.jisonlex#rules_section"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "meta.section.definitions.jisonlex",
+ "begin": "^",
+ "end": "(?=%%|/lex)",
+ "patterns": [
+ {
+ "include": "source.jisonlex#definitions_section"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "meta.section.prologue.jison",
+ "begin": "(?=%\\{)",
+ "end": "(?<=%\\})",
+ "patterns": [
+ {
+ "include": "#user_code_blocks"
+ }
+ ]
+ },
+ {
+ "include": "#options_declarations"
+ },
+ {
+ "name": "keyword.other.declaration.$1.jison",
+ "match": "%(ebnf|left|nonassoc|parse-param|right|start)\\b"
+ },
+ {
+ "include": "#include_declarations"
+ },
+ {
+ "name": "meta.code.jison",
+ "begin": "%(code)\\b",
+ "end": "$",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.declaration.$1.jison"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#rule_actions"
+ },
+ {
+ "name": "keyword.other.code-qualifier.$1.jison",
+ "match": "(init|required)"
+ },
+ {
+ "include": "#quoted_strings"
+ },
+ {
+ "name": "string.unquoted.jison",
+ "match": "\\b[[:alpha:]_](?:[\\w-]*\\w)?\\b"
+ }
+ ]
+ },
+ {
+ "name": "meta.parser-type.jison",
+ "begin": "%(parser-type)\\b",
+ "end": "$",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.declaration.$1.jison"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#quoted_strings"
+ },
+ {
+ "name": "string.unquoted.jison",
+ "match": "\\b[[:alpha:]_](?:[\\w-]*\\w)?\\b"
+ }
+ ]
+ },
+ {
+ "name": "meta.token.jison",
+ "begin": "%(token)\\b",
+ "end": "$|(%%|;)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.declaration.$1.jison"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.declaration.token.jison"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#quoted_strings"
+ },
+ {
+ "name": "invalid.unimplemented.jison",
+ "match": "<[[:alpha:]_](?:[\\w-]*\\w)?>"
+ },
+ {
+ "name": "entity.other.token.jison",
+ "match": "\\S+"
+ }
+ ]
+ },
+ {
+ "name": "keyword.other.declaration.$1.jison",
+ "match": "%(debug|import)\\b"
+ },
+ {
+ "name": "invalid.illegal.jison",
+ "match": "%prec\\b"
+ },
+ {
+ "name": "invalid.unimplemented.jison",
+ "match": "%[[:alpha:]_](?:[\\w-]*\\w)?\\b"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#quoted_strings"
+ }
+ ]
+ },
+ "rules_section": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#actions"
+ },
+ {
+ "include": "#include_declarations"
+ },
+ {
+ "name": "meta.rule.jison",
+ "begin": "\\b[[:alpha:]_](?:[\\w-]*\\w)?\\b",
+ "end": ";",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.constant.rule-result.jison"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.rule.jison"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "name": "meta.rule-components.jison",
+ "begin": ":",
+ "end": "(?=;)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.rule-components.assignment.jison"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#quoted_strings"
+ },
+ {
+ "match": "(\\[)([[:alpha:]_](?:[\\w-]*\\w)?)(\\])",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.named-reference.begin.jison"
+ },
+ "2": {
+ "name": "entity.name.other.reference.jison"
+ },
+ "3": {
+ "name": "punctuation.definition.named-reference.end.jison"
+ }
+ }
+ },
+ {
+ "name": "meta.prec.jison",
+ "begin": "(%(prec))\\s*",
+ "end": "(?<=['\"])|(?=\\s)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.$2.jison"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#quoted_strings"
+ },
+ {
+ "name": "constant.other.token.jison",
+ "begin": "(?=\\S)",
+ "end": "(?=\\s)"
+ }
+ ]
+ },
+ {
+ "name": "keyword.operator.rule-components.separator.jison",
+ "match": "\\|"
+ },
+ {
+ "name": "keyword.other.$0.jison",
+ "match": "\\b(?:EOF|error)\\b"
+ },
+ {
+ "name": "keyword.other.empty.jison",
+ "match": "(?:%(?:e(?:mpty|psilon))|\\b[Ɛɛεϵ])\\b"
+ },
+ {
+ "include": "#rule_actions"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "epilogue_section": {
+ "patterns": [
+ {
+ "include": "#user_code_include_declarations"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "actions": {
+ "patterns": [
+ {
+ "name": "meta.action.jison",
+ "begin": "\\{\\{",
+ "end": "\\}\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.action.begin.jison"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.action.end.jison"
+ }
+ },
+ "contentName": "source.js.embedded.jison",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "name": "meta.action.jison",
+ "begin": "(?=%\\{)",
+ "end": "(?<=%\\})",
+ "patterns": [
+ {
+ "include": "#user_code_blocks"
+ }
+ ]
+ }
+ ]
+ },
+ "rule_actions": {
+ "patterns": [
+ {
+ "include": "#actions"
+ },
+ {
+ "name": "meta.action.jison",
+ "begin": "\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.action.begin.jison"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.action.end.jison"
+ }
+ },
+ "contentName": "source.js.embedded.jison",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "include": "#include_declarations"
+ },
+ {
+ "name": "meta.action.jison",
+ "begin": "->|→",
+ "end": "$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.action.arrow.jison"
+ }
+ },
+ "contentName": "source.js.embedded.jison",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "name": "comment.line.double-slash.jison",
+ "begin": "//",
+ "end": "$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.jison"
+ }
+ }
+ },
+ {
+ "name": "comment.block.jison",
+ "begin": "/\\*",
+ "end": "\\*/",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.jison"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.jison"
+ }
+ }
+ }
+ ]
+ },
+ "include_declarations": {
+ "patterns": [
+ {
+ "name": "meta.include.jison",
+ "begin": "(%(include))\\s*",
+ "end": "(?<=['\"])|(?=\\s)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.declaration.$2.jison"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#include_paths"
+ }
+ ]
+ }
+ ]
+ },
+ "user_code_include_declarations": {
+ "patterns": [
+ {
+ "name": "meta.include.jison",
+ "begin": "^(%(include))\\s*",
+ "end": "(?<=['\"])|(?=\\s)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.declaration.$2.jison"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#include_paths"
+ }
+ ]
+ }
+ ]
+ },
+ "include_paths": {
+ "patterns": [
+ {
+ "include": "#quoted_strings"
+ },
+ {
+ "name": "string.unquoted.jison",
+ "begin": "(?=\\S)",
+ "end": "(?=\\s)",
+ "patterns": [
+ {
+ "include": "source.js#string_escapes"
+ }
+ ]
+ }
+ ]
+ },
+ "numbers": {
+ "patterns": [
+ {
+ "match": "(0[Xx])([0-9A-Fa-f]+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.number.jison"
+ },
+ "2": {
+ "name": "constant.numeric.integer.hexadecimal.jison"
+ }
+ }
+ },
+ {
+ "name": "constant.numeric.integer.decimal.jison",
+ "match": "\\d+"
+ }
+ ]
+ },
+ "options_declarations": {
+ "patterns": [
+ {
+ "name": "meta.options.jison",
+ "begin": "%options\\b",
+ "end": "^(?=\\S|\\s*$)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.options.jison"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "name": "entity.name.constant.jison",
+ "match": "\\b[[:alpha:]_](?:[\\w-]*\\w)?\\b"
+ },
+ {
+ "begin": "(=)\\s*",
+ "end": "(?<=['\"])|(?=\\s)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.option.assignment.jison"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "name": "constant.language.boolean.$1.jison",
+ "match": "\\b(true|false)\\b"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#quoted_strings"
+ },
+ {
+ "name": "string.unquoted.jison",
+ "match": "\\S+"
+ }
+ ]
+ },
+ {
+ "include": "#quoted_strings"
+ }
+ ]
+ }
+ ]
+ },
+ "quoted_strings": {
+ "patterns": [
+ {
+ "name": "string.quoted.double.jison",
+ "begin": "\"",
+ "end": "\"",
+ "patterns": [
+ {
+ "include": "source.js#string_escapes"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.single.jison",
+ "begin": "'",
+ "end": "'",
+ "patterns": [
+ {
+ "include": "source.js#string_escapes"
+ }
+ ]
+ }
+ ]
+ },
+ "user_code_blocks": {
+ "patterns": [
+ {
+ "name": "meta.user-code-block.jison",
+ "begin": "%\\{",
+ "end": "%\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.user-code-block.begin.jison"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.user-code-block.end.jison"
+ }
+ },
+ "contentName": "source.js.embedded.jison",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "injections": {
+ "L:(meta.action.jison - (comment | string)), source.js.embedded.jison - (comment | string), source.js.embedded.source - (comment | string.quoted.double | string.quoted.single)": {
+ "patterns": [
+ {
+ "name": "variable.language.semantic-value.jison",
+ "match": "\\${2}"
+ },
+ {
+ "name": "variable.language.result-location.jison",
+ "match": "@\\$"
+ },
+ {
+ "name": "variable.language.stack-index-0.jison",
+ "match": "##\\$|\\byysp\\b"
+ },
+ {
+ "name": "support.variable.token-reference.jison",
+ "match": "#\\S+#"
+ },
+ {
+ "name": "variable.language.result-id.jison",
+ "match": "#\\$"
+ },
+ {
+ "name": "support.variable.token-value.jison",
+ "match": "\\$(?:-?\\d+|[[:alpha:]_](?:[\\w-]*\\w)?)"
+ },
+ {
+ "name": "support.variable.token-location.jison",
+ "match": "@(?:-?\\d+|[[:alpha:]_](?:[\\w-]*\\w)?)"
+ },
+ {
+ "name": "support.variable.stack-index.jison",
+ "match": "##(?:-?\\d+|[[:alpha:]_](?:[\\w-]*\\w)?)"
+ },
+ {
+ "name": "support.variable.token-id.jison",
+ "match": "#(?:-?\\d+|[[:alpha:]_](?:[\\w-]*\\w)?)"
+ },
+ {
+ "name": "variable.language.jison",
+ "match": "\\byy(?:l(?:eng|ineno|oc|stack)|rulelength|s(?:tate|s?tack)|text|vstack)\\b"
+ },
+ {
+ "name": "keyword.other.jison",
+ "match": "\\byy(?:clearin|erro[kr])\\b"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/json.tmLanguage.json b/node_modules/shiki/languages/json.tmLanguage.json
new file mode 100644
index 0000000..f11db55
--- /dev/null
+++ b/node_modules/shiki/languages/json.tmLanguage.json
@@ -0,0 +1,213 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/microsoft/vscode-JSON.tmLanguage/blob/master/JSON.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/microsoft/vscode-JSON.tmLanguage/commit/9bd83f1c252b375e957203f21793316203f61f70",
+ "name": "json",
+ "scopeName": "source.json",
+ "patterns": [
+ {
+ "include": "#value"
+ }
+ ],
+ "repository": {
+ "array": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.begin.json"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.end.json"
+ }
+ },
+ "name": "meta.structure.array.json",
+ "patterns": [
+ {
+ "include": "#value"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.array.json"
+ },
+ {
+ "match": "[^\\s\\]]",
+ "name": "invalid.illegal.expected-array-separator.json"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "/\\*\\*(?!/)",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.json"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.documentation.json"
+ },
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.json"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.json"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.json"
+ }
+ },
+ "match": "(//).*$\\n?",
+ "name": "comment.line.double-slash.js"
+ }
+ ]
+ },
+ "constant": {
+ "match": "\\b(?:true|false|null)\\b",
+ "name": "constant.language.json"
+ },
+ "number": {
+ "match": "(?x) # turn on extended mode\n -? # an optional minus\n (?:\n 0 # a zero\n | # ...or...\n [1-9] # a 1-9 character\n \\d* # followed by zero or more digits\n )\n (?:\n (?:\n \\. # a period\n \\d+ # followed by one or more digits\n )?\n (?:\n [eE] # an e character\n [+-]? # followed by an option +/-\n \\d+ # followed by one or more digits\n )? # make exponent optional\n )? # make decimal portion optional",
+ "name": "constant.numeric.json"
+ },
+ "object": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.dictionary.begin.json"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.dictionary.end.json"
+ }
+ },
+ "name": "meta.structure.dictionary.json",
+ "patterns": [
+ {
+ "comment": "the JSON object key",
+ "include": "#objectkey"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.dictionary.key-value.json"
+ }
+ },
+ "end": "(,)|(?=\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.dictionary.pair.json"
+ }
+ },
+ "name": "meta.structure.dictionary.value.json",
+ "patterns": [
+ {
+ "comment": "the JSON object value",
+ "include": "#value"
+ },
+ {
+ "match": "[^\\s,]",
+ "name": "invalid.illegal.expected-dictionary-separator.json"
+ }
+ ]
+ },
+ {
+ "match": "[^\\s\\}]",
+ "name": "invalid.illegal.expected-dictionary-separator.json"
+ }
+ ]
+ },
+ "string": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.json"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.json"
+ }
+ },
+ "name": "string.quoted.double.json",
+ "patterns": [
+ {
+ "include": "#stringcontent"
+ }
+ ]
+ },
+ "objectkey": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.support.type.property-name.begin.json"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.support.type.property-name.end.json"
+ }
+ },
+ "name": "string.json support.type.property-name.json",
+ "patterns": [
+ {
+ "include": "#stringcontent"
+ }
+ ]
+ },
+ "stringcontent": {
+ "patterns": [
+ {
+ "match": "(?x) # turn on extended mode\n \\\\ # a literal backslash\n (?: # ...followed by...\n [\"\\\\/bfnrt] # one of these characters\n | # ...or...\n u # a u\n [0-9a-fA-F]{4}) # and four hex digits",
+ "name": "constant.character.escape.json"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unrecognized-string-escape.json"
+ }
+ ]
+ },
+ "value": {
+ "patterns": [
+ {
+ "include": "#constant"
+ },
+ {
+ "include": "#number"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array"
+ },
+ {
+ "include": "#object"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/json5.tmLanguage.json b/node_modules/shiki/languages/json5.tmLanguage.json
new file mode 100644
index 0000000..d95c20e
--- /dev/null
+++ b/node_modules/shiki/languages/json5.tmLanguage.json
@@ -0,0 +1,241 @@
+{
+ "scopeName": "source.json5",
+ "fileTypes": ["json5"],
+ "name": "json5",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#value"
+ }
+ ],
+ "repository": {
+ "array": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.begin.json5"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.end.json5"
+ }
+ },
+ "name": "meta.structure.array.json5",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#value"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.array.json5"
+ },
+ {
+ "match": "[^\\s\\]]",
+ "name": "invalid.illegal.expected-array-separator.json5"
+ }
+ ]
+ },
+ "constant": {
+ "match": "\\b(?:true|false|null|Infinity|NaN)\\b",
+ "name": "constant.language.json5"
+ },
+ "infinity": {
+ "match": "(-)*\\b(?:Infinity|NaN)\\b",
+ "name": "constant.language.json5"
+ },
+ "number": {
+ "patterns": [
+ {
+ "comment": "handles hexadecimal numbers",
+ "match": "(0x)[0-9a-fA-f]*",
+ "name": "constant.hex.numeric.json5"
+ },
+ {
+ "comment": "handles integer and decimal numbers",
+ "match": "[+-.]?(?=[1-9]|0(?!\\d))\\d+(\\.\\d+)?([eE][+-]?\\d+)?",
+ "name": "constant.dec.numeric.json5"
+ }
+ ]
+ },
+ "object": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.dictionary.begin.json5"
+ }
+ },
+ "comment": "a json5 object",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.dictionary.end.json5"
+ }
+ },
+ "name": "meta.structure.dictionary.json5",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "comment": "the json5 object key",
+ "include": "#key"
+ },
+ {
+ "begin": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.dictionary.key-value.json5"
+ }
+ },
+ "end": "(,)|(?=\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.dictionary.pair.json5"
+ }
+ },
+ "name": "meta.structure.dictionary.value.json5",
+ "patterns": [
+ {
+ "comment": "the json5 object value",
+ "include": "#value"
+ },
+ {
+ "match": "[^\\s,]",
+ "name": "invalid.illegal.expected-dictionary-separator.json5"
+ }
+ ]
+ },
+ {
+ "match": "[^\\s\\}]",
+ "name": "invalid.illegal.expected-dictionary-separator.json5"
+ }
+ ]
+ },
+ "stringSingle": {
+ "begin": "[']",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.json5"
+ }
+ },
+ "end": "[']",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.json5"
+ }
+ },
+ "name": "string.quoted.json5",
+ "patterns": [
+ {
+ "match": "(?x: # turn on extended mode\n \\\\ # a literal backslash\n (?: # ...followed by...\n [\"\\\\/bfnrt] # one of these characters\n | # ...or...\n u # a u\n [0-9a-fA-F]{4} # and four hex digits\n )\n )",
+ "name": "constant.character.escape.json5"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unrecognized-string-escape.json5"
+ }
+ ]
+ },
+ "stringDouble": {
+ "begin": "[\"]",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.json5"
+ }
+ },
+ "end": "[\"]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.json5"
+ }
+ },
+ "name": "string.quoted.json5",
+ "patterns": [
+ {
+ "match": "(?x: # turn on extended mode\n \\\\ # a literal backslash\n (?: # ...followed by...\n [\"\\\\/bfnrt] # one of these characters\n | # ...or...\n u # a u\n [0-9a-fA-F]{4} # and four hex digits\n )\n )",
+ "name": "constant.character.escape.json5"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unrecognized-string-escape.json5"
+ }
+ ]
+ },
+ "key": {
+ "name": "string.key.json5",
+ "patterns": [
+ {
+ "include": "#stringSingle"
+ },
+ {
+ "include": "#stringDouble"
+ },
+ {
+ "match": "[a-zA-Z0-9_-]",
+ "name": "string.key.json5"
+ }
+ ]
+ },
+ "value": {
+ "comment": "the 'value' diagram at http://json.org",
+ "patterns": [
+ {
+ "include": "#constant"
+ },
+ {
+ "include": "#infinity"
+ },
+ {
+ "include": "#number"
+ },
+ {
+ "include": "#stringSingle"
+ },
+ {
+ "include": "#stringDouble"
+ },
+ {
+ "include": "#array"
+ },
+ {
+ "include": "#object"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "match": "/{2}.*",
+ "name": "comment.single.json5"
+ },
+ {
+ "begin": "/\\*\\*(?!/)",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.json5"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.documentation.json5"
+ },
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.json5"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.json5"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/jsonc.tmLanguage.json b/node_modules/shiki/languages/jsonc.tmLanguage.json
new file mode 100644
index 0000000..a440d4d
--- /dev/null
+++ b/node_modules/shiki/languages/jsonc.tmLanguage.json
@@ -0,0 +1,213 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/microsoft/vscode-JSON.tmLanguage/blob/master/JSON.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/microsoft/vscode-JSON.tmLanguage/commit/9bd83f1c252b375e957203f21793316203f61f70",
+ "name": "jsonc",
+ "scopeName": "source.json.comments",
+ "patterns": [
+ {
+ "include": "#value"
+ }
+ ],
+ "repository": {
+ "array": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.begin.json.comments"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.end.json.comments"
+ }
+ },
+ "name": "meta.structure.array.json.comments",
+ "patterns": [
+ {
+ "include": "#value"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.array.json.comments"
+ },
+ {
+ "match": "[^\\s\\]]",
+ "name": "invalid.illegal.expected-array-separator.json.comments"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "/\\*\\*(?!/)",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.json.comments"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.documentation.json.comments"
+ },
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.json.comments"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.json.comments"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.json.comments"
+ }
+ },
+ "match": "(//).*$\\n?",
+ "name": "comment.line.double-slash.js"
+ }
+ ]
+ },
+ "constant": {
+ "match": "\\b(?:true|false|null)\\b",
+ "name": "constant.language.json.comments"
+ },
+ "number": {
+ "match": "(?x) # turn on extended mode\n -? # an optional minus\n (?:\n 0 # a zero\n | # ...or...\n [1-9] # a 1-9 character\n \\d* # followed by zero or more digits\n )\n (?:\n (?:\n \\. # a period\n \\d+ # followed by one or more digits\n )?\n (?:\n [eE] # an e character\n [+-]? # followed by an option +/-\n \\d+ # followed by one or more digits\n )? # make exponent optional\n )? # make decimal portion optional",
+ "name": "constant.numeric.json.comments"
+ },
+ "object": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.dictionary.begin.json.comments"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.dictionary.end.json.comments"
+ }
+ },
+ "name": "meta.structure.dictionary.json.comments",
+ "patterns": [
+ {
+ "comment": "the JSON object key",
+ "include": "#objectkey"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.dictionary.key-value.json.comments"
+ }
+ },
+ "end": "(,)|(?=\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.dictionary.pair.json.comments"
+ }
+ },
+ "name": "meta.structure.dictionary.value.json.comments",
+ "patterns": [
+ {
+ "comment": "the JSON object value",
+ "include": "#value"
+ },
+ {
+ "match": "[^\\s,]",
+ "name": "invalid.illegal.expected-dictionary-separator.json.comments"
+ }
+ ]
+ },
+ {
+ "match": "[^\\s\\}]",
+ "name": "invalid.illegal.expected-dictionary-separator.json.comments"
+ }
+ ]
+ },
+ "string": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.json.comments"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.json.comments"
+ }
+ },
+ "name": "string.quoted.double.json.comments",
+ "patterns": [
+ {
+ "include": "#stringcontent"
+ }
+ ]
+ },
+ "objectkey": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.support.type.property-name.begin.json.comments"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.support.type.property-name.end.json.comments"
+ }
+ },
+ "name": "string.json.comments support.type.property-name.json.comments",
+ "patterns": [
+ {
+ "include": "#stringcontent"
+ }
+ ]
+ },
+ "stringcontent": {
+ "patterns": [
+ {
+ "match": "(?x) # turn on extended mode\n \\\\ # a literal backslash\n (?: # ...followed by...\n [\"\\\\/bfnrt] # one of these characters\n | # ...or...\n u # a u\n [0-9a-fA-F]{4}) # and four hex digits",
+ "name": "constant.character.escape.json.comments"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unrecognized-string-escape.json.comments"
+ }
+ ]
+ },
+ "value": {
+ "patterns": [
+ {
+ "include": "#constant"
+ },
+ {
+ "include": "#number"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array"
+ },
+ {
+ "include": "#object"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/jsonl.tmLanguage.json b/node_modules/shiki/languages/jsonl.tmLanguage.json
new file mode 100644
index 0000000..f925d27
--- /dev/null
+++ b/node_modules/shiki/languages/jsonl.tmLanguage.json
@@ -0,0 +1,213 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/microsoft/vscode-JSON.tmLanguage/blob/master/JSON.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/microsoft/vscode-JSON.tmLanguage/commit/9bd83f1c252b375e957203f21793316203f61f70",
+ "name": "jsonl",
+ "scopeName": "source.json.lines",
+ "patterns": [
+ {
+ "include": "#value"
+ }
+ ],
+ "repository": {
+ "array": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.begin.json.lines"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.end.json.lines"
+ }
+ },
+ "name": "meta.structure.array.json.lines",
+ "patterns": [
+ {
+ "include": "#value"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.array.json.lines"
+ },
+ {
+ "match": "[^\\s\\]]",
+ "name": "invalid.illegal.expected-array-separator.json.lines"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "/\\*\\*(?!/)",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.json.lines"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.documentation.json.lines"
+ },
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.json.lines"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.json.lines"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.json.lines"
+ }
+ },
+ "match": "(//).*$\\n?",
+ "name": "comment.line.double-slash.js"
+ }
+ ]
+ },
+ "constant": {
+ "match": "\\b(?:true|false|null)\\b",
+ "name": "constant.language.json.lines"
+ },
+ "number": {
+ "match": "(?x) # turn on extended mode\n -? # an optional minus\n (?:\n 0 # a zero\n | # ...or...\n [1-9] # a 1-9 character\n \\d* # followed by zero or more digits\n )\n (?:\n (?:\n \\. # a period\n \\d+ # followed by one or more digits\n )?\n (?:\n [eE] # an e character\n [+-]? # followed by an option +/-\n \\d+ # followed by one or more digits\n )? # make exponent optional\n )? # make decimal portion optional",
+ "name": "constant.numeric.json.lines"
+ },
+ "object": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.dictionary.begin.json.lines"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.dictionary.end.json.lines"
+ }
+ },
+ "name": "meta.structure.dictionary.json.lines",
+ "patterns": [
+ {
+ "comment": "the JSON object key",
+ "include": "#objectkey"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.dictionary.key-value.json.lines"
+ }
+ },
+ "end": "(,)|(?=\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.dictionary.pair.json.lines"
+ }
+ },
+ "name": "meta.structure.dictionary.value.json.lines",
+ "patterns": [
+ {
+ "comment": "the JSON object value",
+ "include": "#value"
+ },
+ {
+ "match": "[^\\s,]",
+ "name": "invalid.illegal.expected-dictionary-separator.json.lines"
+ }
+ ]
+ },
+ {
+ "match": "[^\\s\\}]",
+ "name": "invalid.illegal.expected-dictionary-separator.json.lines"
+ }
+ ]
+ },
+ "string": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.json.lines"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.json.lines"
+ }
+ },
+ "name": "string.quoted.double.json.lines",
+ "patterns": [
+ {
+ "include": "#stringcontent"
+ }
+ ]
+ },
+ "objectkey": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.support.type.property-name.begin.json.lines"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.support.type.property-name.end.json.lines"
+ }
+ },
+ "name": "string.json.lines support.type.property-name.json.lines",
+ "patterns": [
+ {
+ "include": "#stringcontent"
+ }
+ ]
+ },
+ "stringcontent": {
+ "patterns": [
+ {
+ "match": "(?x) # turn on extended mode\n \\\\ # a literal backslash\n (?: # ...followed by...\n [\"\\\\/bfnrt] # one of these characters\n | # ...or...\n u # a u\n [0-9a-fA-F]{4}) # and four hex digits",
+ "name": "constant.character.escape.json.lines"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unrecognized-string-escape.json.lines"
+ }
+ ]
+ },
+ "value": {
+ "patterns": [
+ {
+ "include": "#constant"
+ },
+ {
+ "include": "#number"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array"
+ },
+ {
+ "include": "#object"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/jsonnet.tmLanguage.json b/node_modules/shiki/languages/jsonnet.tmLanguage.json
new file mode 100644
index 0000000..231f6e4
--- /dev/null
+++ b/node_modules/shiki/languages/jsonnet.tmLanguage.json
@@ -0,0 +1,211 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "name": "jsonnet",
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#keywords"
+ }
+ ],
+ "repository": {
+ "builtin-functions": {
+ "patterns": [
+ {
+ "match": "\\bstd[.](acos|asin|atan|ceil|char|codepoint|cos|exp|exponent)\\b",
+ "name": "support.function.jsonnet"
+ },
+ {
+ "match": "\\bstd[.](filter|floor|force|length|log|makeArray|mantissa)\\b",
+ "name": "support.function.jsonnet"
+ },
+ {
+ "match": "\\bstd[.](objectFields|objectHas|pow|sin|sqrt|tan|type|thisFile)\\b",
+ "name": "support.function.jsonnet"
+ },
+ {
+ "match": "\\bstd[.](acos|asin|atan|ceil|char|codepoint|cos|exp|exponent)\\b",
+ "name": "support.function.jsonnet"
+ },
+ {
+ "match": "\\bstd[.](abs|assertEqual|escapeString(Bash|Dollars|Json|Python))\\b",
+ "name": "support.function.jsonnet"
+ },
+ {
+ "match": "\\bstd[.](filterMap|flattenArrays|foldl|foldr|format|join)\\b",
+ "name": "support.function.jsonnet"
+ },
+ {
+ "match": "\\bstd[.](lines|manifest(Ini|Python(Vars)?)|map|max|min|mod)\\b",
+ "name": "support.function.jsonnet"
+ },
+ {
+ "match": "\\bstd[.](set|set(Diff|Inter|Member|Union)|sort)\\b",
+ "name": "support.function.jsonnet"
+ },
+ {
+ "match": "\\bstd[.](range|split|stringChars|substr|toString|uniq)\\b",
+ "name": "support.function.jsonnet"
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "begin": "/\\*",
+ "end": "\\*/",
+ "name": "comment.block.jsonnet"
+ },
+ {
+ "match": "//.*$",
+ "name": "comment.line.jsonnet"
+ },
+ {
+ "match": "#.*$",
+ "name": "comment.block.jsonnet"
+ }
+ ]
+ },
+ "double-quoted-strings": {
+ "begin": "\"",
+ "end": "\"",
+ "name": "string.quoted.double.jsonnet",
+ "patterns": [
+ {
+ "match": "\\\\([\"\\\\/bfnrt]|(u[0-9a-fA-F]{4}))",
+ "name": "constant.character.escape.jsonnet"
+ },
+ {
+ "match": "\\\\[^\"\\\\/bfnrtu]",
+ "name": "invalid.illegal.jsonnet"
+ }
+ ]
+ },
+ "expression": {
+ "patterns": [
+ {
+ "include": "#literals"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#single-quoted-strings"
+ },
+ {
+ "include": "#double-quoted-strings"
+ },
+ {
+ "include": "#triple-quoted-strings"
+ },
+ {
+ "include": "#builtin-functions"
+ },
+ {
+ "include": "#functions"
+ }
+ ]
+ },
+ "functions": {
+ "patterns": [
+ {
+ "begin": "\\b([a-zA-Z_][a-z0-9A-Z_]*)\\s*\\(",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.jsonnet"
+ }
+ },
+ "end": "\\)",
+ "name": "meta.function",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "match": "[!:~\\+\\-&\\|\\^=<>\\*\\/%]",
+ "name": "keyword.operator.jsonnet"
+ },
+ {
+ "match": "\\$",
+ "name": "keyword.other.jsonnet"
+ },
+ {
+ "match": "\\b(self|super|import|importstr|local|tailstrict)\\b",
+ "name": "keyword.other.jsonnet"
+ },
+ {
+ "match": "\\b(if|then|else|for|in|error|assert)\\b",
+ "name": "keyword.control.jsonnet"
+ },
+ {
+ "match": "\\b(function)\\b",
+ "name": "storage.type.jsonnet"
+ },
+ {
+ "match": "[a-zA-Z_][a-z0-9A-Z_]*\\s*(:::|\\+:::)",
+ "name": "variable.parameter.jsonnet"
+ },
+ {
+ "match": "[a-zA-Z_][a-z0-9A-Z_]*\\s*(::|\\+::)",
+ "name": "entity.name.type"
+ },
+ {
+ "match": "[a-zA-Z_][a-z0-9A-Z_]*\\s*(:|\\+:)",
+ "name": "variable.parameter.jsonnet"
+ }
+ ]
+ },
+ "literals": {
+ "patterns": [
+ {
+ "match": "\\b(true|false|null)\\b",
+ "name": "constant.language.jsonnet"
+ },
+ {
+ "match": "\\b(\\d+([Ee][+-]?\\d+)?)\\b",
+ "name": "constant.numeric.jsonnet"
+ },
+ {
+ "match": "\\b\\d+[.]\\d*([Ee][+-]?\\d+)?\\b",
+ "name": "constant.numeric.jsonnet"
+ },
+ {
+ "match": "\\b[.]\\d+([Ee][+-]?\\d+)?\\b",
+ "name": "constant.numeric.jsonnet"
+ }
+ ]
+ },
+ "single-quoted-strings": {
+ "begin": "'",
+ "end": "'",
+ "name": "string.quoted.double.jsonnet",
+ "patterns": [
+ {
+ "match": "\\\\(['\\\\/bfnrt]|(u[0-9a-fA-F]{4}))",
+ "name": "constant.character.escape.jsonnet"
+ },
+ {
+ "match": "\\\\[^'\\\\/bfnrtu]",
+ "name": "invalid.illegal.jsonnet"
+ }
+ ]
+ },
+ "triple-quoted-strings": {
+ "patterns": [
+ {
+ "begin": "\\|\\|\\|",
+ "end": "\\|\\|\\|",
+ "name": "string.quoted.triple.jsonnet"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.jsonnet"
+}
diff --git a/node_modules/shiki/languages/jssm.tmLanguage.json b/node_modules/shiki/languages/jssm.tmLanguage.json
new file mode 100644
index 0000000..d251ac0
--- /dev/null
+++ b/node_modules/shiki/languages/jssm.tmLanguage.json
@@ -0,0 +1,156 @@
+{
+ "fileTypes": ["jssm", "jssm_state"],
+ "name": "jssm",
+ "patterns": [
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.mn"
+ }
+ },
+ "comment": "block comment",
+ "end": "\\*/",
+ "name": "comment.block.jssm"
+ },
+ {
+ "begin": "//",
+ "comment": "block comment",
+ "end": "$",
+ "name": "comment.line.jssm"
+ },
+ {
+ "begin": "\\${",
+ "captures": {
+ "0": {
+ "name": "entity.name.function"
+ }
+ },
+ "comment": "js outcalls",
+ "end": "}",
+ "name": "keyword.other"
+ },
+ {
+ "comment": "semver",
+ "match": "([0-9]*)(\\.)([0-9]*)(\\.)([0-9]*)",
+ "name": "constant.numeric"
+ },
+ {
+ "comment": "jssm language tokens",
+ "match": "graph_layout(\\s*)(:)",
+ "name": "constant.language.jssmLanguage"
+ },
+ {
+ "comment": "jssm language tokens",
+ "match": "machine_name(\\s*)(:)",
+ "name": "constant.language.jssmLanguage"
+ },
+ {
+ "comment": "jssm language tokens",
+ "match": "machine_version(\\s*)(:)",
+ "name": "constant.language.jssmLanguage"
+ },
+ {
+ "comment": "jssm language tokens",
+ "match": "jssm_version(\\s*)(:)",
+ "name": "constant.language.jssmLanguage"
+ },
+ {
+ "comment": "transitions",
+ "match": "<->",
+ "name": "keyword.control.transition.jssmArrow.legal_legal"
+ },
+ {
+ "comment": "transitions",
+ "match": "<-",
+ "name": "keyword.control.transition.jssmArrow.legal_none"
+ },
+ {
+ "comment": "transitions",
+ "match": "->",
+ "name": "keyword.control.transition.jssmArrow.none_legal"
+ },
+ {
+ "comment": "transitions",
+ "match": "<=>",
+ "name": "keyword.control.transition.jssmArrow.main_main"
+ },
+ {
+ "comment": "transitions",
+ "match": "=>",
+ "name": "keyword.control.transition.jssmArrow.none_main"
+ },
+ {
+ "comment": "transitions",
+ "match": "<=",
+ "name": "keyword.control.transition.jssmArrow.main_none"
+ },
+ {
+ "comment": "transitions",
+ "match": "<~>",
+ "name": "keyword.control.transition.jssmArrow.forced_forced"
+ },
+ {
+ "comment": "transitions",
+ "match": "~>",
+ "name": "keyword.control.transition.jssmArrow.none_forced"
+ },
+ {
+ "comment": "transitions",
+ "match": "<~",
+ "name": "keyword.control.transition.jssmArrow.forced_none"
+ },
+ {
+ "comment": "transitions",
+ "match": "<-=>",
+ "name": "keyword.control.transition.jssmArrow.legal_main"
+ },
+ {
+ "comment": "transitions",
+ "match": "<=->",
+ "name": "keyword.control.transition.jssmArrow.main_legal"
+ },
+ {
+ "comment": "transitions",
+ "match": "<-~>",
+ "name": "keyword.control.transition.jssmArrow.legal_forced"
+ },
+ {
+ "comment": "transitions",
+ "match": "<~->",
+ "name": "keyword.control.transition.jssmArrow.forced_legal"
+ },
+ {
+ "comment": "transitions",
+ "match": "<=~>",
+ "name": "keyword.control.transition.jssmArrow.main_forced"
+ },
+ {
+ "comment": "transitions",
+ "match": "<~=>",
+ "name": "keyword.control.transition.jssmArrow.forced_main"
+ },
+ {
+ "comment": "edge probability annotation",
+ "match": "([0-9]+)%",
+ "name": "constant.numeric.jssmProbability"
+ },
+ {
+ "comment": "action annotation",
+ "match": "\\'[^']*\\'",
+ "name": "constant.character.jssmAction"
+ },
+ {
+ "comment": "jssm label annotation",
+ "match": "\\\"[^\"]*\\\"",
+ "name": "entity.name.tag.jssmLabel.doublequoted"
+ },
+ {
+ "comment": "jssm label annotation",
+ "match": "([a-zA-Z0-9_.+&()#@!?,])",
+ "name": "entity.name.tag.jssmLabel.atom"
+ }
+ ],
+ "scopeName": "source.jssm",
+ "uuid": "2bb22b55-e811-4383-9929-ae6d0ab92aca"
+}
diff --git a/node_modules/shiki/languages/jsx.tmLanguage.json b/node_modules/shiki/languages/jsx.tmLanguage.json
new file mode 100644
index 0000000..44e5029
--- /dev/null
+++ b/node_modules/shiki/languages/jsx.tmLanguage.json
@@ -0,0 +1,5921 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/microsoft/TypeScript-TmLanguage/commit/e0aefd8205cc9d1bc7859cc5babbee0d833dca0f",
+ "name": "jsx",
+ "scopeName": "source.js.jsx",
+ "patterns": [
+ {
+ "include": "#directives"
+ },
+ {
+ "include": "#statements"
+ },
+ {
+ "include": "#shebang"
+ }
+ ],
+ "repository": {
+ "shebang": {
+ "name": "comment.line.shebang.js.jsx",
+ "match": "\\A(#!).*(?=$)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.js.jsx"
+ }
+ }
+ },
+ "statements": {
+ "patterns": [
+ {
+ "include": "#declaration"
+ },
+ {
+ "include": "#control-statement"
+ },
+ {
+ "include": "#after-operator-block-as-object-literal"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#label"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "declaration": {
+ "patterns": [
+ {
+ "include": "#decorator"
+ },
+ {
+ "include": "#var-expr"
+ },
+ {
+ "include": "#function-declaration"
+ },
+ {
+ "include": "#class-declaration"
+ },
+ {
+ "include": "#interface-declaration"
+ },
+ {
+ "include": "#enum-declaration"
+ },
+ {
+ "include": "#namespace-declaration"
+ },
+ {
+ "include": "#type-alias-declaration"
+ },
+ {
+ "include": "#import-equals-declaration"
+ },
+ {
+ "include": "#import-declaration"
+ },
+ {
+ "include": "#export-declaration"
+ },
+ {
+ "name": "storage.modifier.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "control-statement": {
+ "patterns": [
+ {
+ "include": "#switch-statement"
+ },
+ {
+ "include": "#for-loop"
+ },
+ {
+ "name": "keyword.control.trycatch.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.loop.js.jsx"
+ },
+ "2": {
+ "name": "entity.name.label.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "keyword.control.loop.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.flow.js.jsx"
+ }
+ },
+ "end": "(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "keyword.control.switch.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "include": "#if-statement"
+ },
+ {
+ "name": "keyword.control.conditional.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.control.with.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.control.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.other.debugger.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "label": {
+ "patterns": [
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.label.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.separator.label.js.jsx"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#decl-block"
+ }
+ ]
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "entity.name.label.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.separator.label.js.jsx"
+ }
+ }
+ }
+ ]
+ },
+ "expression": {
+ "patterns": [
+ {
+ "include": "#expressionWithoutIdentifiers"
+ },
+ {
+ "include": "#identifiers"
+ },
+ {
+ "include": "#expressionPunctuations"
+ }
+ ]
+ },
+ "expressionWithoutIdentifiers": {
+ "patterns": [
+ {
+ "include": "#jsx"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#function-expression"
+ },
+ {
+ "include": "#class-expression"
+ },
+ {
+ "include": "#arrow-function"
+ },
+ {
+ "include": "#paren-expression-possibly-arrow"
+ },
+ {
+ "include": "#cast"
+ },
+ {
+ "include": "#ternary-expression"
+ },
+ {
+ "include": "#new-expr"
+ },
+ {
+ "include": "#instanceof-expr"
+ },
+ {
+ "include": "#object-literal"
+ },
+ {
+ "include": "#expression-operators"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#support-objects"
+ },
+ {
+ "include": "#paren-expression"
+ }
+ ]
+ },
+ "expressionPunctuations": {
+ "patterns": [
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-accessor"
+ }
+ ]
+ },
+ "decorator": {
+ "name": "meta.decorator.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.decorator.js.jsx"
+ }
+ },
+ "end": "(?=\\s)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "var-expr": {
+ "patterns": [
+ {
+ "name": "meta.var.expr.js.jsx",
+ "begin": "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
+ "end": "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "3": {
+ "name": "storage.type.js.jsx"
+ }
+ },
+ "end": "(?=\\S)"
+ },
+ {
+ "include": "#destructuring-variable"
+ },
+ {
+ "include": "#var-single-variable"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(,)\\s*(?=$|\\/\\/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.comma.js.jsx"
+ }
+ },
+ "end": "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#destructuring-variable"
+ },
+ {
+ "include": "#var-single-variable"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ {
+ "name": "meta.var.expr.js.jsx",
+ "begin": "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "3": {
+ "name": "storage.type.js.jsx"
+ }
+ },
+ "end": "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "3": {
+ "name": "storage.type.js.jsx"
+ }
+ },
+ "end": "(?=\\S)"
+ },
+ {
+ "include": "#destructuring-const"
+ },
+ {
+ "include": "#var-single-const"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(,)\\s*(?=$|\\/\\/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.comma.js.jsx"
+ }
+ },
+ "end": "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#destructuring-const"
+ },
+ {
+ "include": "#var-single-const"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ ]
+ },
+ "var-single-variable": {
+ "patterns": [
+ {
+ "name": "meta.var-single-variable.expr.js.jsx",
+ "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.js.jsx entity.name.function.js.jsx"
+ },
+ "2": {
+ "name": "keyword.operator.definiteassignment.js.jsx"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ },
+ {
+ "name": "meta.var-single-variable.expr.js.jsx",
+ "begin": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.js.jsx variable.other.constant.js.jsx"
+ },
+ "2": {
+ "name": "keyword.operator.definiteassignment.js.jsx"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ },
+ {
+ "name": "meta.var-single-variable.expr.js.jsx",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)(\\!)?",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.js.jsx variable.other.readwrite.js.jsx"
+ },
+ "2": {
+ "name": "keyword.operator.definiteassignment.js.jsx"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ }
+ ]
+ },
+ "var-single-const": {
+ "patterns": [
+ {
+ "name": "meta.var-single-variable.expr.js.jsx",
+ "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.js.jsx variable.other.constant.js.jsx entity.name.function.js.jsx"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ },
+ {
+ "name": "meta.var-single-variable.expr.js.jsx",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.js.jsx variable.other.constant.js.jsx"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ }
+ ]
+ },
+ "var-single-variable-type-annotation": {
+ "patterns": [
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "destructuring-variable": {
+ "patterns": [
+ {
+ "name": "meta.object-binding-pattern-variable.js.jsx",
+ "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#object-binding-pattern"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "name": "meta.array-binding-pattern-variable.js.jsx",
+ "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#array-binding-pattern"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "destructuring-const": {
+ "patterns": [
+ {
+ "name": "meta.object-binding-pattern-variable.js.jsx",
+ "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#object-binding-pattern-const"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "name": "meta.array-binding-pattern-variable.js.jsx",
+ "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#array-binding-pattern-const"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "object-binding-element": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#object-binding-element-propertyName"
+ },
+ {
+ "include": "#binding-element"
+ }
+ ]
+ },
+ {
+ "include": "#object-binding-pattern"
+ },
+ {
+ "include": "#destructuring-variable-rest"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "object-binding-element-const": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#object-binding-element-propertyName"
+ },
+ {
+ "include": "#binding-element-const"
+ }
+ ]
+ },
+ {
+ "include": "#object-binding-pattern-const"
+ },
+ {
+ "include": "#destructuring-variable-rest-const"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "object-binding-element-propertyName": {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
+ "end": "(:)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.destructuring.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "name": "variable.object.property.js.jsx",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ },
+ "binding-element": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#object-binding-pattern"
+ },
+ {
+ "include": "#array-binding-pattern"
+ },
+ {
+ "include": "#destructuring-variable-rest"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "binding-element-const": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#object-binding-pattern-const"
+ },
+ {
+ "include": "#array-binding-pattern-const"
+ },
+ {
+ "include": "#destructuring-variable-rest-const"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "destructuring-variable-rest": {
+ "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "2": {
+ "name": "meta.definition.variable.js.jsx variable.other.readwrite.js.jsx"
+ }
+ }
+ },
+ "destructuring-variable-rest-const": {
+ "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "2": {
+ "name": "meta.definition.variable.js.jsx variable.other.constant.js.jsx"
+ }
+ }
+ },
+ "object-binding-pattern": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.object.js.jsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.object.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-binding-element"
+ }
+ ]
+ },
+ "object-binding-pattern-const": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.object.js.jsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.object.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-binding-element-const"
+ }
+ ]
+ },
+ "array-binding-pattern": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.array.js.jsx"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.array.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#binding-element"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "array-binding-pattern-const": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.array.js.jsx"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.array.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#binding-element-const"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "parameter-name": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "2": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "3": {
+ "name": "entity.name.function.js.jsx variable.language.this.js.jsx"
+ },
+ "4": {
+ "name": "entity.name.function.js.jsx"
+ },
+ "5": {
+ "name": "keyword.operator.optional.js.jsx"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "2": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "3": {
+ "name": "variable.parameter.js.jsx variable.language.this.js.jsx"
+ },
+ "4": {
+ "name": "variable.parameter.js.jsx"
+ },
+ "5": {
+ "name": "keyword.operator.optional.js.jsx"
+ }
+ }
+ }
+ ]
+ },
+ "destructuring-parameter": {
+ "patterns": [
+ {
+ "name": "meta.parameter.object-binding-pattern.js.jsx",
+ "begin": "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.object.js.jsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.object.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter-object-binding-element"
+ }
+ ]
+ },
+ {
+ "name": "meta.paramter.array-binding-pattern.js.jsx",
+ "begin": "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.array.js.jsx"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.array.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter-binding-element"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ ]
+ },
+ "parameter-object-binding-element": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#object-binding-element-propertyName"
+ },
+ {
+ "include": "#parameter-binding-element"
+ },
+ {
+ "include": "#paren-expression"
+ }
+ ]
+ },
+ {
+ "include": "#parameter-object-binding-pattern"
+ },
+ {
+ "include": "#destructuring-parameter-rest"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "parameter-binding-element": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#parameter-object-binding-pattern"
+ },
+ {
+ "include": "#parameter-array-binding-pattern"
+ },
+ {
+ "include": "#destructuring-parameter-rest"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "destructuring-parameter-rest": {
+ "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "2": {
+ "name": "variable.parameter.js.jsx"
+ }
+ }
+ },
+ "parameter-object-binding-pattern": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.object.js.jsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.object.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter-object-binding-element"
+ }
+ ]
+ },
+ "parameter-array-binding-pattern": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.array.js.jsx"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.array.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter-binding-element"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "field-declaration": {
+ "name": "meta.field.declaration.js.jsx",
+ "begin": "(?x)(?<!\\()(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s+)?(?=\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|\\}|$))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ }
+ },
+ "end": "(?x)(?=\\}|;|,|$|(^(?!\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "1": {
+ "name": "meta.definition.property.js.jsx entity.name.function.js.jsx"
+ },
+ "2": {
+ "name": "keyword.operator.optional.js.jsx"
+ },
+ "3": {
+ "name": "keyword.operator.definiteassignment.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "meta.definition.property.js.jsx variable.object.property.js.jsx",
+ "match": "\\#?[_$[:alpha:]][_$[:alnum:]]*"
+ },
+ {
+ "name": "keyword.operator.optional.js.jsx",
+ "match": "\\?"
+ },
+ {
+ "name": "keyword.operator.definiteassignment.js.jsx",
+ "match": "\\!"
+ }
+ ]
+ },
+ "variable-initializer": {
+ "patterns": [
+ {
+ "begin": "(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.js.jsx"
+ }
+ },
+ "end": "(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!=|!)(=)(?!=)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.js.jsx"
+ }
+ },
+ "end": "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<![\\|\\&\\+\\-\\*\\/])(?<=\\S)(?<!=)(?=\\s*$)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "function-declaration": {
+ "name": "meta.function.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "3": {
+ "name": "storage.modifier.async.js.jsx"
+ },
+ "4": {
+ "name": "storage.type.function.js.jsx"
+ },
+ "5": {
+ "name": "keyword.generator.asterisk.js.jsx"
+ },
+ "6": {
+ "name": "meta.definition.function.js.jsx entity.name.function.js.jsx"
+ }
+ },
+ "end": "(?=;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#function-name"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ "function-expression": {
+ "name": "meta.function.expression.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js.jsx"
+ },
+ "2": {
+ "name": "storage.type.function.js.jsx"
+ },
+ "3": {
+ "name": "keyword.generator.asterisk.js.jsx"
+ },
+ "4": {
+ "name": "meta.definition.function.js.jsx entity.name.function.js.jsx"
+ }
+ },
+ "end": "(?=;)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#function-name"
+ },
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ "function-name": {
+ "name": "meta.definition.function.js.jsx entity.name.function.js.jsx",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ },
+ "function-body": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#function-parameters"
+ },
+ {
+ "include": "#return-type"
+ },
+ {
+ "include": "#type-function-return-type"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "name": "keyword.generator.asterisk.js.jsx",
+ "match": "\\*"
+ }
+ ]
+ },
+ "method-declaration": {
+ "patterns": [
+ {
+ "name": "meta.method.declaration.js.jsx",
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "3": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "4": {
+ "name": "storage.modifier.async.js.jsx"
+ },
+ "5": {
+ "name": "storage.type.js.jsx"
+ }
+ },
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ {
+ "name": "meta.method.declaration.js.jsx",
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\s*\\b(new)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?)(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "3": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "4": {
+ "name": "storage.modifier.async.js.jsx"
+ },
+ "5": {
+ "name": "keyword.operator.new.js.jsx"
+ },
+ "6": {
+ "name": "keyword.generator.asterisk.js.jsx"
+ }
+ },
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ {
+ "name": "meta.method.declaration.js.jsx",
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "3": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "4": {
+ "name": "storage.modifier.async.js.jsx"
+ },
+ "5": {
+ "name": "storage.type.property.js.jsx"
+ },
+ "6": {
+ "name": "keyword.generator.asterisk.js.jsx"
+ }
+ },
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ }
+ ]
+ },
+ "object-literal-method-declaration": {
+ "name": "meta.method.declaration.js.jsx",
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js.jsx"
+ },
+ "2": {
+ "name": "storage.type.property.js.jsx"
+ },
+ "3": {
+ "name": "keyword.generator.asterisk.js.jsx"
+ }
+ },
+ "end": "(?=\\}|;|,)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ },
+ {
+ "include": "#function-body"
+ },
+ {
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js.jsx"
+ },
+ "2": {
+ "name": "storage.type.property.js.jsx"
+ },
+ "3": {
+ "name": "keyword.generator.asterisk.js.jsx"
+ }
+ },
+ "end": "(?=\\(|\\<)",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ }
+ ]
+ }
+ ]
+ },
+ "method-declaration-name": {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])",
+ "end": "(?=\\(|\\<)",
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "name": "meta.definition.method.js.jsx entity.name.function.js.jsx",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ },
+ {
+ "name": "keyword.operator.optional.js.jsx",
+ "match": "\\?"
+ }
+ ]
+ },
+ "arrow-function": {
+ "patterns": [
+ {
+ "name": "meta.arrow.js.jsx",
+ "match": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.async.js.jsx"
+ },
+ "2": {
+ "name": "variable.parameter.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "meta.arrow.js.jsx",
+ "begin": "(?x) (?:\n (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\n)? ((?<![})!\\]])\\s*\n (?=\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n )\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js.jsx"
+ }
+ },
+ "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#function-parameters"
+ },
+ {
+ "include": "#arrow-return-type"
+ },
+ {
+ "include": "#possibly-arrow-return-type"
+ }
+ ]
+ },
+ {
+ "name": "meta.arrow.js.jsx",
+ "begin": "=>",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.function.arrow.js.jsx"
+ }
+ },
+ "end": "((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "indexer-declaration": {
+ "name": "meta.indexer.declaration.js.jsx",
+ "begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "2": {
+ "name": "meta.brace.square.js.jsx"
+ },
+ "3": {
+ "name": "variable.parameter.js.jsx"
+ }
+ },
+ "end": "(\\])\\s*(\\?\\s*)?|$",
+ "endCaptures": {
+ "1": {
+ "name": "meta.brace.square.js.jsx"
+ },
+ "2": {
+ "name": "keyword.operator.optional.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type-annotation"
+ }
+ ]
+ },
+ "indexer-mapped-type-declaration": {
+ "name": "meta.indexer.mappedtype.declaration.js.jsx",
+ "begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.modifier.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "3": {
+ "name": "meta.brace.square.js.jsx"
+ },
+ "4": {
+ "name": "entity.name.type.js.jsx"
+ },
+ "5": {
+ "name": "keyword.operator.expression.in.js.jsx"
+ }
+ },
+ "end": "(\\])([+-])?\\s*(\\?\\s*)?|$",
+ "endCaptures": {
+ "1": {
+ "name": "meta.brace.square.js.jsx"
+ },
+ "2": {
+ "name": "keyword.operator.type.modifier.js.jsx"
+ },
+ "3": {
+ "name": "keyword.operator.optional.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
+ "captures": {
+ "1": {
+ "name": "keyword.control.as.js.jsx"
+ }
+ }
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "function-parameters": {
+ "name": "meta.parameters.js.jsx",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.begin.js.jsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-parameters-body"
+ }
+ ]
+ },
+ "function-parameters-body": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#decorator"
+ },
+ {
+ "include": "#destructuring-parameter"
+ },
+ {
+ "include": "#parameter-name"
+ },
+ {
+ "include": "#parameter-type-annotation"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "name": "punctuation.separator.parameter.js.jsx",
+ "match": ","
+ }
+ ]
+ },
+ "class-declaration": {
+ "name": "meta.class.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "3": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "4": {
+ "name": "storage.type.class.js.jsx"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#class-declaration-or-expression-patterns"
+ }
+ ]
+ },
+ "class-expression": {
+ "name": "meta.class.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "2": {
+ "name": "storage.type.class.js.jsx"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#class-declaration-or-expression-patterns"
+ }
+ ]
+ },
+ "class-declaration-or-expression-patterns": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#class-or-interface-heritage"
+ },
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "captures": {
+ "0": {
+ "name": "entity.name.type.class.js.jsx"
+ }
+ }
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#class-or-interface-body"
+ }
+ ]
+ },
+ "interface-declaration": {
+ "name": "meta.interface.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "3": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "4": {
+ "name": "storage.type.interface.js.jsx"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#class-or-interface-heritage"
+ },
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "captures": {
+ "0": {
+ "name": "entity.name.type.interface.js.jsx"
+ }
+ }
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#class-or-interface-body"
+ }
+ ]
+ },
+ "class-or-interface-heritage": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ }
+ },
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#class-or-interface-heritage"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#expressionWithoutIdentifiers"
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.module.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.js.jsx"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.js.jsx"
+ }
+ }
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "entity.other.inherited-class.js.jsx"
+ }
+ }
+ },
+ {
+ "include": "#expressionPunctuations"
+ }
+ ]
+ },
+ "class-or-interface-body": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#decorator"
+ },
+ {
+ "begin": "(?<=:)\\s*",
+ "end": "(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#method-declaration"
+ },
+ {
+ "include": "#indexer-declaration"
+ },
+ {
+ "include": "#field-declaration"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#access-modifier"
+ },
+ {
+ "include": "#property-accessor"
+ },
+ {
+ "include": "#async-modifier"
+ },
+ {
+ "include": "#after-operator-block-as-object-literal"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "access-modifier": {
+ "name": "storage.modifier.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "property-accessor": {
+ "name": "storage.type.property.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "async-modifier": {
+ "name": "storage.modifier.async.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "enum-declaration": {
+ "name": "meta.enum.declaration.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "3": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "4": {
+ "name": "storage.type.enum.js.jsx"
+ },
+ "5": {
+ "name": "entity.name.type.enum.js.jsx"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.enummember.js.jsx"
+ }
+ },
+ "end": "(?=,|\\}|$)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ {
+ "begin": "(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",
+ "end": "(?=,|\\}|$)",
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ ]
+ },
+ "namespace-declaration": {
+ "name": "meta.namespace.declaration.js.jsx",
+ "begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "3": {
+ "name": "storage.type.namespace.js.jsx"
+ }
+ },
+ "end": "(?<=\\})|(?=;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "name": "entity.name.type.module.js.jsx",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ },
+ {
+ "include": "#punctuation-accessor"
+ },
+ {
+ "include": "#decl-block"
+ }
+ ]
+ },
+ "type-alias-declaration": {
+ "name": "meta.type.declaration.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "3": {
+ "name": "storage.type.type.js.jsx"
+ },
+ "4": {
+ "name": "entity.name.type.alias.js.jsx"
+ }
+ },
+ "end": "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "begin": "(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.js.jsx"
+ },
+ "2": {
+ "name": "keyword.control.intrinsic.js.jsx"
+ }
+ },
+ "end": "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "begin": "(=)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.js.jsx"
+ }
+ },
+ "end": "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "import-equals-declaration": {
+ "patterns": [
+ {
+ "name": "meta.import-equals.external.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "3": {
+ "name": "keyword.control.import.js.jsx"
+ },
+ "4": {
+ "name": "keyword.control.type.js.jsx"
+ },
+ "5": {
+ "name": "variable.other.readwrite.alias.js.jsx"
+ },
+ "6": {
+ "name": "keyword.operator.assignment.js.jsx"
+ },
+ "7": {
+ "name": "keyword.control.require.js.jsx"
+ },
+ "8": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "name": "meta.import-equals.internal.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "3": {
+ "name": "keyword.control.import.js.jsx"
+ },
+ "4": {
+ "name": "keyword.control.type.js.jsx"
+ },
+ "5": {
+ "name": "variable.other.readwrite.alias.js.jsx"
+ },
+ "6": {
+ "name": "keyword.operator.assignment.js.jsx"
+ }
+ },
+ "end": "(?=;|$|^)",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.module.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.js.jsx"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "variable.other.readwrite.js.jsx",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ }
+ ]
+ },
+ "import-declaration": {
+ "name": "meta.import.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "3": {
+ "name": "keyword.control.import.js.jsx"
+ },
+ "4": {
+ "name": "keyword.control.type.js.jsx"
+ }
+ },
+ "end": "(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "begin": "(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*[\"'])",
+ "end": "\\bfrom\\b",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.from.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#import-export-declaration"
+ }
+ ]
+ },
+ {
+ "include": "#import-export-declaration"
+ }
+ ]
+ },
+ "export-declaration": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.export.js.jsx"
+ },
+ "2": {
+ "name": "keyword.control.as.js.jsx"
+ },
+ "3": {
+ "name": "storage.type.namespace.js.jsx"
+ },
+ "4": {
+ "name": "entity.name.type.module.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "meta.export.default.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js.jsx"
+ },
+ "2": {
+ "name": "keyword.control.type.js.jsx"
+ },
+ "3": {
+ "name": "keyword.operator.assignment.js.jsx"
+ },
+ "4": {
+ "name": "keyword.control.default.js.jsx"
+ }
+ },
+ "end": "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#interface-declaration"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "meta.export.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.js.jsx"
+ },
+ "2": {
+ "name": "keyword.control.type.js.jsx"
+ }
+ },
+ "end": "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#import-export-declaration"
+ }
+ ]
+ }
+ ]
+ },
+ "import-export-declaration": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#import-export-block"
+ },
+ {
+ "name": "keyword.control.from.js.jsx",
+ "match": "\\bfrom\\b"
+ },
+ {
+ "include": "#import-export-assert-clause"
+ },
+ {
+ "include": "#import-export-clause"
+ }
+ ]
+ },
+ "import-export-assert-clause": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(assert)\\s*(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.assert.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "name": "meta.object-literal.key.js.jsx",
+ "match": "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)"
+ },
+ {
+ "name": "punctuation.separator.key-value.js.jsx",
+ "match": ":"
+ }
+ ]
+ },
+ "import-export-block": {
+ "name": "meta.block.js.jsx",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#import-export-clause"
+ }
+ ]
+ },
+ "import-export-clause": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(?:(\\btype)\\s+)?(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*)))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.type.js.jsx"
+ },
+ "2": {
+ "name": "keyword.control.default.js.jsx"
+ },
+ "3": {
+ "name": "constant.language.import-export-all.js.jsx"
+ },
+ "4": {
+ "name": "variable.other.readwrite.js.jsx"
+ },
+ "5": {
+ "name": "keyword.control.as.js.jsx"
+ },
+ "6": {
+ "name": "keyword.control.default.js.jsx"
+ },
+ "7": {
+ "name": "variable.other.readwrite.alias.js.jsx"
+ }
+ }
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "name": "constant.language.import-export-all.js.jsx",
+ "match": "\\*"
+ },
+ {
+ "name": "keyword.control.default.js.jsx",
+ "match": "\\b(default)\\b"
+ },
+ {
+ "match": "(?:(\\btype)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.type.js.jsx"
+ },
+ "2": {
+ "name": "variable.other.readwrite.alias.js.jsx"
+ }
+ }
+ }
+ ]
+ },
+ "switch-statement": {
+ "name": "switch-statement.expr.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "name": "switch-expression.expr.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.js.jsx"
+ },
+ "2": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "switch-block.expr.js.jsx",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "name": "case-clause.expr.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.js.jsx"
+ }
+ },
+ "end": "(?=:)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(:)\\s*(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx"
+ },
+ "2": {
+ "name": "meta.block.js.jsx punctuation.definition.block.js.jsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "meta.block.js.jsx punctuation.definition.block.js.jsx"
+ }
+ },
+ "contentName": "meta.block.js.jsx",
+ "patterns": [
+ {
+ "include": "#statements"
+ }
+ ]
+ },
+ {
+ "match": "(:)",
+ "captures": {
+ "0": {
+ "name": "case-clause.expr.js.jsx punctuation.definition.section.case-statement.js.jsx"
+ }
+ }
+ },
+ {
+ "include": "#statements"
+ }
+ ]
+ }
+ ]
+ },
+ "for-loop": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.loop.js.jsx"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "name": "keyword.control.loop.js.jsx",
+ "match": "await"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#var-expr"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ }
+ ]
+ },
+ "if-statement": {
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))",
+ "end": "(?=;|$|\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.conditional.js.jsx"
+ },
+ "2": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "string.regexp.js.jsx",
+ "begin": "(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.js.jsx"
+ }
+ },
+ "end": "(/)([dgimsuy]*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.js.jsx"
+ },
+ "2": {
+ "name": "keyword.other.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "include": "#statements"
+ }
+ ]
+ }
+ ]
+ },
+ "decl-block": {
+ "name": "meta.block.js.jsx",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#statements"
+ }
+ ]
+ },
+ "after-operator-block-as-object-literal": {
+ "name": "meta.objectliteral.js.jsx",
+ "begin": "(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-member"
+ }
+ ]
+ },
+ "object-literal": {
+ "name": "meta.objectliteral.js.jsx",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-member"
+ }
+ ]
+ },
+ "object-member": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#object-literal-method-declaration"
+ },
+ {
+ "name": "meta.object.member.js.jsx meta.object-literal.key.js.jsx",
+ "begin": "(?=\\[)",
+ "end": "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#array-literal"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.js.jsx meta.object-literal.key.js.jsx",
+ "begin": "(?=[\\'\\\"\\`])",
+ "end": "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.js.jsx meta.object-literal.key.js.jsx",
+ "begin": "(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)))",
+ "end": "(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as|satisifies\\s+))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#numeric-literal"
+ }
+ ]
+ },
+ {
+ "name": "meta.method.declaration.js.jsx",
+ "begin": "(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",
+ "end": "(?=\\}|;|,)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.js.jsx",
+ "match": "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
+ "captures": {
+ "0": {
+ "name": "meta.object-literal.key.js.jsx"
+ },
+ "1": {
+ "name": "constant.numeric.decimal.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.js.jsx",
+ "match": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "0": {
+ "name": "meta.object-literal.key.js.jsx"
+ },
+ "1": {
+ "name": "entity.name.function.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.js.jsx",
+ "match": "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
+ "captures": {
+ "0": {
+ "name": "meta.object-literal.key.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.js.jsx",
+ "begin": "\\.\\.\\.",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.spread.js.jsx"
+ }
+ },
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.js.jsx",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",
+ "captures": {
+ "1": {
+ "name": "variable.other.readwrite.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.as.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.as.js.jsx"
+ },
+ "2": {
+ "name": "keyword.control.satisfies.js.jsx"
+ }
+ },
+ "end": "(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisifies)\\s+))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.js.jsx",
+ "begin": "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",
+ "end": "(?=,|\\}|$|\\/\\/|\\/\\*)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.js.jsx",
+ "begin": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.object-literal.key.js.jsx punctuation.separator.key-value.js.jsx"
+ }
+ },
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "begin": "(?<=:)\\s*(async)?(?=\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js.jsx"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-inside-possibly-arrow-parens"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js.jsx"
+ },
+ "2": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-inside-possibly-arrow-parens"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js.jsx"
+ }
+ },
+ "end": "(?<=\\>)",
+ "patterns": [
+ {
+ "include": "#type-parameters"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-inside-possibly-arrow-parens"
+ }
+ ]
+ },
+ {
+ "include": "#possibly-arrow-return-type"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#decl-block"
+ }
+ ]
+ },
+ "ternary-expression": {
+ "begin": "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.js.jsx"
+ }
+ },
+ "end": "\\s*(:)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "function-call": {
+ "patterns": [
+ {
+ "begin": "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
+ "end": "(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
+ "patterns": [
+ {
+ "name": "meta.function-call.js.jsx",
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
+ "end": "(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
+ "patterns": [
+ {
+ "include": "#function-call-target"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#function-call-optionals"
+ },
+ {
+ "include": "#type-arguments"
+ },
+ {
+ "include": "#paren-expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
+ "end": "(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
+ "patterns": [
+ {
+ "name": "meta.function-call.js.jsx",
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
+ "end": "(?=(<\\s*[\\{\\[\\(]\\s*$))",
+ "patterns": [
+ {
+ "include": "#function-call-target"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#function-call-optionals"
+ },
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ }
+ ]
+ },
+ "function-call-target": {
+ "patterns": [
+ {
+ "include": "#support-function-call-identifiers"
+ },
+ {
+ "name": "entity.name.function.js.jsx",
+ "match": "(\\#?[_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ },
+ "function-call-optionals": {
+ "patterns": [
+ {
+ "name": "meta.function-call.js.jsx punctuation.accessor.optional.js.jsx",
+ "match": "\\?\\."
+ },
+ {
+ "name": "meta.function-call.js.jsx keyword.operator.definiteassignment.js.jsx",
+ "match": "\\!"
+ }
+ ]
+ },
+ "support-function-call-identifiers": {
+ "patterns": [
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#support-objects"
+ },
+ {
+ "include": "#object-identifiers"
+ },
+ {
+ "include": "#punctuation-accessor"
+ },
+ {
+ "name": "keyword.operator.expression.import.js.jsx",
+ "match": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"
+ }
+ ]
+ },
+ "new-expr": {
+ "name": "new.expr.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.new.js.jsx"
+ }
+ },
+ "end": "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "instanceof-expr": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.expression.instanceof.js.jsx"
+ }
+ },
+ "end": "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(===|!==|==|!=)|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "paren-expression-possibly-arrow": {
+ "patterns": [
+ {
+ "begin": "(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js.jsx"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#paren-expression-possibly-arrow-with-typeparameters"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)))\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.js.jsx"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#paren-expression-possibly-arrow-with-typeparameters"
+ }
+ ]
+ },
+ {
+ "include": "#possibly-arrow-return-type"
+ }
+ ]
+ },
+ "paren-expression-possibly-arrow-with-typeparameters": {
+ "patterns": [
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-inside-possibly-arrow-parens"
+ }
+ ]
+ }
+ ]
+ },
+ "expression-inside-possibly-arrow-parens": {
+ "patterns": [
+ {
+ "include": "#expressionWithoutIdentifiers"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#decorator"
+ },
+ {
+ "include": "#destructuring-parameter"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "2": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "3": {
+ "name": "entity.name.function.js.jsx variable.language.this.js.jsx"
+ },
+ "4": {
+ "name": "entity.name.function.js.jsx"
+ },
+ "5": {
+ "name": "keyword.operator.optional.js.jsx"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "2": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "3": {
+ "name": "variable.parameter.js.jsx variable.language.this.js.jsx"
+ },
+ "4": {
+ "name": "variable.parameter.js.jsx"
+ },
+ "5": {
+ "name": "keyword.operator.optional.js.jsx"
+ }
+ }
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "name": "punctuation.separator.parameter.js.jsx",
+ "match": ","
+ },
+ {
+ "include": "#identifiers"
+ },
+ {
+ "include": "#expressionPunctuations"
+ }
+ ]
+ },
+ "paren-expression": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "cast": {
+ "patterns": [
+ {
+ "include": "#jsx"
+ }
+ ]
+ },
+ "expression-operators": {
+ "patterns": [
+ {
+ "name": "keyword.control.flow.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow.js.jsx"
+ }
+ },
+ "end": "\\*",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.generator.asterisk.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.js.jsx"
+ },
+ "2": {
+ "name": "keyword.generator.asterisk.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.expression.delete.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.operator.expression.in.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
+ },
+ {
+ "name": "keyword.operator.expression.of.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
+ },
+ {
+ "name": "keyword.operator.expression.instanceof.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.operator.new.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "include": "#typeof-operator"
+ },
+ {
+ "name": "keyword.operator.expression.void.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.as.js.jsx"
+ },
+ "2": {
+ "name": "storage.modifier.js.jsx"
+ }
+ }
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.as.js.jsx"
+ },
+ "2": {
+ "name": "keyword.control.satisfies.js.jsx"
+ }
+ },
+ "end": "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisfies)\\s+)|(\\s+\\<))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "name": "keyword.operator.spread.js.jsx",
+ "match": "\\.\\.\\."
+ },
+ {
+ "name": "keyword.operator.assignment.compound.js.jsx",
+ "match": "\\*=|(?<!\\()/=|%=|\\+=|\\-="
+ },
+ {
+ "name": "keyword.operator.assignment.compound.bitwise.js.jsx",
+ "match": "\\&=|\\^=|<<=|>>=|>>>=|\\|="
+ },
+ {
+ "name": "keyword.operator.bitwise.shift.js.jsx",
+ "match": "<<|>>>|>>"
+ },
+ {
+ "name": "keyword.operator.comparison.js.jsx",
+ "match": "===|!==|==|!="
+ },
+ {
+ "name": "keyword.operator.relational.js.jsx",
+ "match": "<=|>=|<>|<|>"
+ },
+ {
+ "match": "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.logical.js.jsx"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.compound.js.jsx"
+ },
+ "3": {
+ "name": "keyword.operator.arithmetic.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.logical.js.jsx",
+ "match": "\\!|&&|\\|\\||\\?\\?"
+ },
+ {
+ "name": "keyword.operator.bitwise.js.jsx",
+ "match": "\\&|~|\\^|\\|"
+ },
+ {
+ "name": "keyword.operator.assignment.js.jsx",
+ "match": "\\="
+ },
+ {
+ "name": "keyword.operator.decrement.js.jsx",
+ "match": "--"
+ },
+ {
+ "name": "keyword.operator.increment.js.jsx",
+ "match": "\\+\\+"
+ },
+ {
+ "name": "keyword.operator.arithmetic.js.jsx",
+ "match": "%|\\*|/|-|\\+"
+ },
+ {
+ "begin": "(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",
+ "end": "(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.compound.js.jsx"
+ },
+ "2": {
+ "name": "keyword.operator.arithmetic.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "match": "(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.compound.js.jsx"
+ },
+ "2": {
+ "name": "keyword.operator.arithmetic.js.jsx"
+ }
+ }
+ }
+ ]
+ },
+ "typeof-operator": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.expression.typeof.js.jsx"
+ }
+ },
+ "end": "(?=[,);}\\]=>:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#type-arguments"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "literal": {
+ "patterns": [
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#boolean-literal"
+ },
+ {
+ "include": "#null-literal"
+ },
+ {
+ "include": "#undefined-literal"
+ },
+ {
+ "include": "#numericConstant-literal"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#this-literal"
+ },
+ {
+ "include": "#super-literal"
+ }
+ ]
+ },
+ "array-literal": {
+ "name": "meta.array.literal.js.jsx",
+ "begin": "\\s*(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.square.js.jsx"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.square.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "numeric-literal": {
+ "patterns": [
+ {
+ "name": "constant.numeric.hex.js.jsx",
+ "match": "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.numeric.bigint.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "constant.numeric.binary.js.jsx",
+ "match": "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.numeric.bigint.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "constant.numeric.octal.js.jsx",
+ "match": "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.numeric.bigint.js.jsx"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
+ "captures": {
+ "0": {
+ "name": "constant.numeric.decimal.js.jsx"
+ },
+ "1": {
+ "name": "meta.delimiter.decimal.period.js.jsx"
+ },
+ "2": {
+ "name": "storage.type.numeric.bigint.js.jsx"
+ },
+ "3": {
+ "name": "meta.delimiter.decimal.period.js.jsx"
+ },
+ "4": {
+ "name": "storage.type.numeric.bigint.js.jsx"
+ },
+ "5": {
+ "name": "meta.delimiter.decimal.period.js.jsx"
+ },
+ "6": {
+ "name": "storage.type.numeric.bigint.js.jsx"
+ },
+ "7": {
+ "name": "storage.type.numeric.bigint.js.jsx"
+ },
+ "8": {
+ "name": "meta.delimiter.decimal.period.js.jsx"
+ },
+ "9": {
+ "name": "storage.type.numeric.bigint.js.jsx"
+ },
+ "10": {
+ "name": "meta.delimiter.decimal.period.js.jsx"
+ },
+ "11": {
+ "name": "storage.type.numeric.bigint.js.jsx"
+ },
+ "12": {
+ "name": "meta.delimiter.decimal.period.js.jsx"
+ },
+ "13": {
+ "name": "storage.type.numeric.bigint.js.jsx"
+ },
+ "14": {
+ "name": "storage.type.numeric.bigint.js.jsx"
+ }
+ }
+ }
+ ]
+ },
+ "boolean-literal": {
+ "patterns": [
+ {
+ "name": "constant.language.boolean.true.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "constant.language.boolean.false.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "null-literal": {
+ "name": "constant.language.null.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "this-literal": {
+ "name": "variable.language.this.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)"
+ },
+ "super-literal": {
+ "name": "variable.language.super.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)"
+ },
+ "undefined-literal": {
+ "name": "constant.language.undefined.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "numericConstant-literal": {
+ "patterns": [
+ {
+ "name": "constant.language.nan.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "constant.language.infinity.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "support-objects": {
+ "patterns": [
+ {
+ "name": "variable.language.arguments.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)"
+ },
+ {
+ "name": "support.class.promise.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.import.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.js.jsx"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.js.jsx"
+ },
+ "4": {
+ "name": "support.variable.property.importmeta.js.jsx"
+ }
+ }
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.new.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.js.jsx"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.js.jsx"
+ },
+ "4": {
+ "name": "support.variable.property.target.js.jsx"
+ }
+ }
+ },
+ {
+ "match": "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n (?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\())\n |\n (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.js.jsx"
+ },
+ "3": {
+ "name": "support.variable.property.js.jsx"
+ },
+ "4": {
+ "name": "support.constant.js.jsx"
+ }
+ }
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "support.type.object.module.js.jsx"
+ },
+ "2": {
+ "name": "support.type.object.module.js.jsx"
+ },
+ "3": {
+ "name": "punctuation.accessor.js.jsx"
+ },
+ "4": {
+ "name": "punctuation.accessor.optional.js.jsx"
+ },
+ "5": {
+ "name": "support.type.object.module.js.jsx"
+ }
+ }
+ }
+ ]
+ },
+ "identifiers": {
+ "patterns": [
+ {
+ "include": "#object-identifiers"
+ },
+ {
+ "match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n))",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.js.jsx"
+ },
+ "3": {
+ "name": "entity.name.function.js.jsx"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.js.jsx"
+ },
+ "3": {
+ "name": "variable.other.constant.property.js.jsx"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.js.jsx"
+ },
+ "3": {
+ "name": "variable.other.property.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "variable.other.constant.js.jsx",
+ "match": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
+ },
+ {
+ "name": "variable.other.readwrite.js.jsx",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ }
+ ]
+ },
+ "object-identifiers": {
+ "patterns": [
+ {
+ "name": "support.class.js.jsx",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))"
+ },
+ {
+ "match": "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n (\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\n (\\#?[_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.js.jsx"
+ },
+ "3": {
+ "name": "variable.other.constant.object.property.js.jsx"
+ },
+ "4": {
+ "name": "variable.other.object.property.js.jsx"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:\n ([[:upper:]][_$[:digit:][:upper:]]*) |\n ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "variable.other.constant.object.js.jsx"
+ },
+ "2": {
+ "name": "variable.other.object.js.jsx"
+ }
+ }
+ }
+ ]
+ },
+ "type-annotation": {
+ "patterns": [
+ {
+ "name": "meta.type.annotation.js.jsx",
+ "begin": "(:)(?=\\s*\\S)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.js.jsx"
+ }
+ },
+ "end": "(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "name": "meta.type.annotation.js.jsx",
+ "begin": "(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.js.jsx"
+ }
+ },
+ "end": "(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "parameter-type-annotation": {
+ "patterns": [
+ {
+ "name": "meta.type.annotation.js.jsx",
+ "begin": "(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.js.jsx"
+ }
+ },
+ "end": "(?=[,)])|(?==[^>])",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "return-type": {
+ "patterns": [
+ {
+ "name": "meta.return.type.js.jsx",
+ "begin": "(?<=\\))\\s*(:)(?=\\s*\\S)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.js.jsx"
+ }
+ },
+ "end": "(?<![:|&])(?=$|^|[{};,]|//)",
+ "patterns": [
+ {
+ "include": "#return-type-core"
+ }
+ ]
+ },
+ {
+ "name": "meta.return.type.js.jsx",
+ "begin": "(?<=\\))\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.js.jsx"
+ }
+ },
+ "end": "(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#return-type-core"
+ }
+ ]
+ }
+ ]
+ },
+ "return-type-core": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<=[:|&])(?=\\s*\\{)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type-object"
+ }
+ ]
+ },
+ {
+ "include": "#type-predicate-operator"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "arrow-return-type": {
+ "name": "meta.return.type.arrow.js.jsx",
+ "begin": "(?<=\\))\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.js.jsx"
+ }
+ },
+ "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
+ "patterns": [
+ {
+ "include": "#arrow-return-type-body"
+ }
+ ]
+ },
+ "possibly-arrow-return-type": {
+ "begin": "(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.arrow.js.jsx meta.return.type.arrow.js.jsx keyword.operator.type.annotation.js.jsx"
+ }
+ },
+ "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
+ "contentName": "meta.arrow.js.jsx meta.return.type.arrow.js.jsx",
+ "patterns": [
+ {
+ "include": "#arrow-return-type-body"
+ }
+ ]
+ },
+ "arrow-return-type-body": {
+ "patterns": [
+ {
+ "begin": "(?<=[:])(?=\\s*\\{)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type-object"
+ }
+ ]
+ },
+ {
+ "include": "#type-predicate-operator"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type-parameters": {
+ "name": "meta.type.parameters.js.jsx",
+ "begin": "(<)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.typeparameters.begin.js.jsx"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.typeparameters.end.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "name": "storage.modifier.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "name": "keyword.operator.assignment.js.jsx",
+ "match": "(=)(?!>)"
+ }
+ ]
+ },
+ "type-arguments": {
+ "name": "meta.type.parameters.js.jsx",
+ "begin": "\\<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.begin.js.jsx"
+ }
+ },
+ "end": "\\>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.end.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type-arguments-body"
+ }
+ ]
+ },
+ "type-arguments-body": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "captures": {
+ "0": {
+ "name": "keyword.operator.type.js.jsx"
+ }
+ }
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "type": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-string"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "include": "#type-builtin-literals"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#type-tuple"
+ },
+ {
+ "include": "#type-object"
+ },
+ {
+ "include": "#type-operators"
+ },
+ {
+ "include": "#type-conditional"
+ },
+ {
+ "include": "#type-fn-type-parameters"
+ },
+ {
+ "include": "#type-paren-or-function-parameters"
+ },
+ {
+ "include": "#type-function-return-type"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ }
+ }
+ },
+ {
+ "include": "#type-name"
+ }
+ ]
+ },
+ "type-primitive": {
+ "name": "support.type.primitive.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "type-builtin-literals": {
+ "name": "support.type.builtin.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "type-tuple": {
+ "name": "meta.type.tuple.js.jsx",
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.square.js.jsx"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.square.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.operator.rest.js.jsx",
+ "match": "\\.\\.\\."
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "entity.name.label.js.jsx"
+ },
+ "2": {
+ "name": "keyword.operator.optional.js.jsx"
+ },
+ "3": {
+ "name": "punctuation.separator.label.js.jsx"
+ }
+ }
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "type-object": {
+ "name": "meta.object.type.js.jsx",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#method-declaration"
+ },
+ {
+ "include": "#indexer-declaration"
+ },
+ {
+ "include": "#indexer-mapped-type-declaration"
+ },
+ {
+ "include": "#field-declaration"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "begin": "\\.\\.\\.",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.spread.js.jsx"
+ }
+ },
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type-conditional": {
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ }
+ },
+ "end": "(?<=:)",
+ "patterns": [
+ {
+ "begin": "\\?",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.js.jsx"
+ }
+ },
+ "end": ":",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "type-paren-or-function-parameters": {
+ "name": "meta.type.paren.cover.js.jsx",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "2": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "3": {
+ "name": "entity.name.function.js.jsx variable.language.this.js.jsx"
+ },
+ "4": {
+ "name": "entity.name.function.js.jsx"
+ },
+ "5": {
+ "name": "keyword.operator.optional.js.jsx"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "2": {
+ "name": "keyword.operator.rest.js.jsx"
+ },
+ "3": {
+ "name": "variable.parameter.js.jsx variable.language.this.js.jsx"
+ },
+ "4": {
+ "name": "variable.parameter.js.jsx"
+ },
+ "5": {
+ "name": "keyword.operator.optional.js.jsx"
+ }
+ }
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "name": "punctuation.separator.parameter.js.jsx",
+ "match": ","
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type-fn-type-parameters": {
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.type.constructor.js.jsx storage.modifier.js.jsx"
+ },
+ "2": {
+ "name": "meta.type.constructor.js.jsx keyword.control.new.js.jsx"
+ }
+ },
+ "end": "(?<=>)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameters"
+ }
+ ]
+ },
+ {
+ "name": "meta.type.constructor.js.jsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.js.jsx"
+ },
+ "2": {
+ "name": "keyword.control.new.js.jsx"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#function-parameters"
+ }
+ ]
+ },
+ {
+ "name": "meta.type.function.js.jsx",
+ "begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#function-parameters"
+ }
+ ]
+ }
+ ]
+ },
+ "type-function-return-type": {
+ "patterns": [
+ {
+ "name": "meta.type.function.return.js.jsx",
+ "begin": "(=>)(?=\\s*\\S)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.arrow.js.jsx"
+ }
+ },
+ "end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
+ "patterns": [
+ {
+ "include": "#type-function-return-type-core"
+ }
+ ]
+ },
+ {
+ "name": "meta.type.function.return.js.jsx",
+ "begin": "=>",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.function.arrow.js.jsx"
+ }
+ },
+ "end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#type-function-return-type-core"
+ }
+ ]
+ }
+ ]
+ },
+ "type-function-return-type-core": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<==>)(?=\\s*\\{)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type-object"
+ }
+ ]
+ },
+ {
+ "include": "#type-predicate-operator"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type-operators": {
+ "patterns": [
+ {
+ "include": "#typeof-operator"
+ },
+ {
+ "include": "#type-infer"
+ },
+ {
+ "begin": "([&|])(?=\\s*\\{)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.type.js.jsx"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type-object"
+ }
+ ]
+ },
+ {
+ "begin": "[&|]",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.type.js.jsx"
+ }
+ },
+ "end": "(?=\\S)"
+ },
+ {
+ "name": "keyword.operator.expression.keyof.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.operator.ternary.js.jsx",
+ "match": "(\\?|\\:)"
+ },
+ {
+ "name": "keyword.operator.expression.import.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
+ }
+ ]
+ },
+ "type-infer": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",
+ "name": "meta.type.infer.js.jsx",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.expression.infer.js.jsx"
+ },
+ "2": {
+ "name": "entity.name.type.js.jsx"
+ },
+ "3": {
+ "name": "keyword.operator.expression.extends.js.jsx"
+ }
+ }
+ }
+ ]
+ },
+ "type-predicate-operator": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.type.asserts.js.jsx"
+ },
+ "2": {
+ "name": "variable.parameter.js.jsx variable.language.this.js.jsx"
+ },
+ "3": {
+ "name": "variable.parameter.js.jsx"
+ },
+ "4": {
+ "name": "keyword.operator.expression.is.js.jsx"
+ }
+ }
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.type.asserts.js.jsx"
+ },
+ "2": {
+ "name": "variable.parameter.js.jsx variable.language.this.js.jsx"
+ },
+ "3": {
+ "name": "variable.parameter.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.type.asserts.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.operator.expression.is.js.jsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "type-name": {
+ "patterns": [
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.module.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.js.jsx"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.js.jsx"
+ },
+ "4": {
+ "name": "meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx"
+ }
+ },
+ "contentName": "meta.type.parameters.js.jsx",
+ "patterns": [
+ {
+ "include": "#type-arguments-body"
+ }
+ ]
+ },
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.type.js.jsx"
+ },
+ "2": {
+ "name": "meta.type.parameters.js.jsx punctuation.definition.typeparameters.begin.js.jsx"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "meta.type.parameters.js.jsx punctuation.definition.typeparameters.end.js.jsx"
+ }
+ },
+ "contentName": "meta.type.parameters.js.jsx",
+ "patterns": [
+ {
+ "include": "#type-arguments-body"
+ }
+ ]
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.module.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.js.jsx"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.js.jsx"
+ }
+ }
+ },
+ {
+ "name": "entity.name.type.js.jsx",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ }
+ ]
+ },
+ "punctuation-comma": {
+ "name": "punctuation.separator.comma.js.jsx",
+ "match": ","
+ },
+ "punctuation-semicolon": {
+ "name": "punctuation.terminator.statement.js.jsx",
+ "match": ";"
+ },
+ "punctuation-accessor": {
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.js.jsx"
+ }
+ }
+ },
+ "string": {
+ "patterns": [
+ {
+ "include": "#qstring-single"
+ },
+ {
+ "include": "#qstring-double"
+ },
+ {
+ "include": "#template"
+ }
+ ]
+ },
+ "qstring-double": {
+ "name": "string.quoted.double.js.jsx",
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.js.jsx"
+ }
+ },
+ "end": "(\")|((?:[^\\\\\\n])$)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.js.jsx"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "qstring-single": {
+ "name": "string.quoted.single.js.jsx",
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.js.jsx"
+ }
+ },
+ "end": "(\\')|((?:[^\\\\\\n])$)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.js.jsx"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "string-character-escape": {
+ "name": "constant.character.escape.js.jsx",
+ "match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
+ },
+ "template": {
+ "patterns": [
+ {
+ "include": "#template-call"
+ },
+ {
+ "contentName": "string.template.js.jsx",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.tagged-template.js.jsx"
+ },
+ "2": {
+ "name": "string.template.js.jsx punctuation.definition.string.template.begin.js.jsx"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "string.template.js.jsx punctuation.definition.string.template.end.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template-substitution-element"
+ },
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ }
+ ]
+ },
+ "template-call": {
+ "patterns": [
+ {
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
+ "end": "(?=`)",
+ "patterns": [
+ {
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
+ "end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
+ "patterns": [
+ {
+ "include": "#support-function-call-identifiers"
+ },
+ {
+ "name": "entity.name.function.tagged-template.js.jsx",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ },
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ },
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.tagged-template.js.jsx"
+ }
+ },
+ "end": "(?=`)",
+ "patterns": [
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ }
+ ]
+ },
+ "template-substitution-element": {
+ "name": "meta.template.expression.js.jsx",
+ "begin": "\\$\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.begin.js.jsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.end.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ],
+ "contentName": "meta.embedded.line.js.jsx"
+ },
+ "type-string": {
+ "patterns": [
+ {
+ "include": "#qstring-single"
+ },
+ {
+ "include": "#qstring-double"
+ },
+ {
+ "include": "#template-type"
+ }
+ ]
+ },
+ "template-type": {
+ "patterns": [
+ {
+ "include": "#template-call"
+ },
+ {
+ "contentName": "string.template.js.jsx",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.tagged-template.js.jsx"
+ },
+ "2": {
+ "name": "string.template.js.jsx punctuation.definition.string.template.begin.js.jsx"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "string.template.js.jsx punctuation.definition.string.template.end.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template-type-substitution-element"
+ },
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ }
+ ]
+ },
+ "template-type-substitution-element": {
+ "name": "meta.template.expression.js.jsx",
+ "begin": "\\$\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.begin.js.jsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.end.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ],
+ "contentName": "meta.embedded.line.js.jsx"
+ },
+ "regex": {
+ "patterns": [
+ {
+ "name": "string.regexp.js.jsx",
+ "begin": "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.js.jsx"
+ }
+ },
+ "end": "(/)([dgimsuy]*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.js.jsx"
+ },
+ "2": {
+ "name": "keyword.other.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "name": "string.regexp.js.jsx",
+ "begin": "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.js.jsx"
+ }
+ },
+ "end": "(/)([dgimsuy]*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.js.jsx"
+ },
+ "2": {
+ "name": "keyword.other.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ }
+ ]
+ },
+ "regexp": {
+ "patterns": [
+ {
+ "name": "keyword.control.anchor.regexp",
+ "match": "\\\\[bB]|\\^|\\$"
+ },
+ {
+ "match": "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>",
+ "captures": {
+ "0": {
+ "name": "keyword.other.back-reference.regexp"
+ },
+ "1": {
+ "name": "variable.other.regexp"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.quantifier.regexp",
+ "match": "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
+ },
+ {
+ "name": "keyword.operator.or.regexp",
+ "match": "\\|"
+ },
+ {
+ "name": "meta.group.assertion.regexp",
+ "begin": "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.regexp"
+ },
+ "2": {
+ "name": "punctuation.definition.group.assertion.regexp"
+ },
+ "3": {
+ "name": "meta.assertion.look-ahead.regexp"
+ },
+ "4": {
+ "name": "meta.assertion.negative-look-ahead.regexp"
+ },
+ "5": {
+ "name": "meta.assertion.look-behind.regexp"
+ },
+ "6": {
+ "name": "meta.assertion.negative-look-behind.regexp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "name": "meta.group.regexp",
+ "begin": "\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.regexp"
+ },
+ "1": {
+ "name": "punctuation.definition.group.no-capture.regexp"
+ },
+ "2": {
+ "name": "variable.other.regexp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "name": "constant.other.character-class.set.regexp",
+ "begin": "(\\[)(\\^)?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.regexp"
+ },
+ "2": {
+ "name": "keyword.operator.negation.regexp"
+ }
+ },
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "constant.other.character-class.range.regexp",
+ "match": "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",
+ "captures": {
+ "1": {
+ "name": "constant.character.numeric.regexp"
+ },
+ "2": {
+ "name": "constant.character.control.regexp"
+ },
+ "3": {
+ "name": "constant.character.escape.backslash.regexp"
+ },
+ "4": {
+ "name": "constant.character.numeric.regexp"
+ },
+ "5": {
+ "name": "constant.character.control.regexp"
+ },
+ "6": {
+ "name": "constant.character.escape.backslash.regexp"
+ }
+ }
+ },
+ {
+ "include": "#regex-character-class"
+ }
+ ]
+ },
+ {
+ "include": "#regex-character-class"
+ }
+ ]
+ },
+ "regex-character-class": {
+ "patterns": [
+ {
+ "name": "constant.other.character-class.regexp",
+ "match": "\\\\[wWsSdDtrnvf]|\\."
+ },
+ {
+ "name": "constant.character.numeric.regexp",
+ "match": "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"
+ },
+ {
+ "name": "constant.character.control.regexp",
+ "match": "\\\\c[A-Z]"
+ },
+ {
+ "name": "constant.character.escape.backslash.regexp",
+ "match": "\\\\."
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "name": "comment.block.documentation.js.jsx",
+ "begin": "/\\*\\*(?!/)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.js.jsx"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#docblock"
+ }
+ ]
+ },
+ {
+ "name": "comment.block.js.jsx",
+ "begin": "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.js.jsx"
+ },
+ "2": {
+ "name": "storage.type.internaldeclaration.js.jsx"
+ },
+ "3": {
+ "name": "punctuation.decorator.internaldeclaration.js.jsx"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.js.jsx"
+ }
+ }
+ },
+ {
+ "begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.js.jsx"
+ },
+ "2": {
+ "name": "comment.line.double-slash.js.jsx"
+ },
+ "3": {
+ "name": "punctuation.definition.comment.js.jsx"
+ },
+ "4": {
+ "name": "storage.type.internaldeclaration.js.jsx"
+ },
+ "5": {
+ "name": "punctuation.decorator.internaldeclaration.js.jsx"
+ }
+ },
+ "end": "(?=$)",
+ "contentName": "comment.line.double-slash.js.jsx"
+ }
+ ]
+ },
+ "single-line-comment-consuming-line-ending": {
+ "begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.js.jsx"
+ },
+ "2": {
+ "name": "comment.line.double-slash.js.jsx"
+ },
+ "3": {
+ "name": "punctuation.definition.comment.js.jsx"
+ },
+ "4": {
+ "name": "storage.type.internaldeclaration.js.jsx"
+ },
+ "5": {
+ "name": "punctuation.decorator.internaldeclaration.js.jsx"
+ }
+ },
+ "end": "(?=^)",
+ "contentName": "comment.line.double-slash.js.jsx"
+ },
+ "directives": {
+ "name": "comment.line.triple-slash.directive.js.jsx",
+ "begin": "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.js.jsx"
+ }
+ },
+ "end": "(?=$)",
+ "patterns": [
+ {
+ "name": "meta.tag.js.jsx",
+ "begin": "(<)(reference|amd-dependency|amd-module)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.directive.js.jsx"
+ },
+ "2": {
+ "name": "entity.name.tag.directive.js.jsx"
+ }
+ },
+ "end": "/>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.directive.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "name": "entity.other.attribute-name.directive.js.jsx",
+ "match": "path|types|no-default-lib|lib|name|resolution-mode"
+ },
+ {
+ "name": "keyword.operator.assignment.js.jsx",
+ "match": "="
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "docblock": {
+ "patterns": [
+ {
+ "match": "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "constant.language.access-type.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)author)\n\\s+\n(\n [^@\\s<>*/]\n (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n \\s*\n (<)\n ([^>\\s]+)\n (>)\n)?",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "4": {
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
+ },
+ "5": {
+ "name": "constant.other.email.link.underline.jsdoc"
+ },
+ "6": {
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+) # <that namepath>\n\\s+ (as) \\s+ # as\n((?:[^@\\s*/]|\\*[^/])+) # <this namepath>",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "4": {
+ "name": "keyword.operator.control.jsdoc"
+ },
+ "5": {
+ "name": "entity.name.type.instance.jsdoc"
+ }
+ }
+ },
+ {
+ "name": "meta.example.jsdoc",
+ "begin": "((@)example)\\s+",
+ "end": "(?=@|\\*/)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "patterns": [
+ {
+ "match": "^\\s\\*\\s+"
+ },
+ {
+ "contentName": "constant.other.description.jsdoc",
+ "begin": "\\G(<)caption(>)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.tag.inline.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
+ }
+ },
+ "end": "(</)caption(>)|(?=\\*/)",
+ "endCaptures": {
+ "0": {
+ "name": "entity.name.tag.inline.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "[^\\s@*](?:[^*]|\\*[^/])*",
+ "captures": {
+ "0": {
+ "name": "source.embedded.js.jsx"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "match": "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "constant.language.symbol-type.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)see)\n\\s+\n(?:\n # URL\n (\n (?=https?://)\n (?:[^\\s*]|\\*[^/])+\n )\n |\n # JSDoc namepath\n (\n (?!\n # Avoid matching bare URIs (also acceptable as links)\n https?://\n |\n # Avoid matching {@inline tags}; we match those below\n (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n {@(?:link|linkcode|linkplain|tutorial)\\b\n )\n # Matched namepath\n (?:[^@\\s*/]|\\*[^/])+\n )\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.link.underline.jsdoc"
+ },
+ "4": {
+ "name": "entity.name.type.instance.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n [A-Za-z_$] # First character: non-numeric word character\n [\\w$.\\[\\]]* # Rest of identifier\n (?: # Possible list of additional identifiers\n \\s* , \\s*\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n )*\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ }
+ }
+ },
+ {
+ "begin": "(?x)((@)template)\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ },
+ {
+ "name": "variable.other.jsdoc",
+ "match": "([A-Za-z_$][\\w$.\\[\\]]*)"
+ }
+ ]
+ },
+ {
+ "match": "(?x)\n(\n (@)\n (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ }
+ }
+ },
+ {
+ "begin": "((@)typedef)\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ },
+ {
+ "name": "entity.name.type.instance.jsdoc",
+ "match": "(?:[^@\\s*/]|\\*[^/])+"
+ }
+ ]
+ },
+ {
+ "begin": "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ },
+ {
+ "name": "variable.other.jsdoc",
+ "match": "([A-Za-z_$][\\w$.\\[\\]]*)"
+ },
+ {
+ "name": "variable.other.jsdoc",
+ "match": "(?x)\n(\\[)\\s*\n[\\w$]+\n(?:\n (?:\\[\\])? # Foo[ ].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [\\w$]+\n)*\n(?:\n \\s*\n (=) # [foo=bar] Default parameter value\n \\s*\n (\n # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\n (?>\n \"(?:(?:\\*(?!/))|(?:\\\\(?!\"))|[^*\\\\])*?\" | # [foo=\"bar\"] Double-quoted\n '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | # [foo='bar'] Single-quoted\n \\[ (?:(?:\\*(?!/))|[^*])*? \\] | # [foo=[1,2]] Array literal\n (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* # Everything else\n )*\n )\n)?\n\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.optional-value.begin.bracket.square.jsdoc"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.jsdoc"
+ },
+ "3": {
+ "name": "source.embedded.js.jsx"
+ },
+ "4": {
+ "name": "punctuation.definition.optional-value.end.bracket.square.jsdoc"
+ },
+ "5": {
+ "name": "invalid.illegal.syntax.jsdoc"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n(\n (@)\n (?:define|enum|exception|export|extends|lends|implements|modifies\n |namespace|private|protected|returns?|satisfies|suppress|this|throws|type\n |yields?)\n)\n\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ }
+ ]
+ },
+ {
+ "match": "(?x)\n(\n (@)\n (?:alias|augments|callback|constructs|emits|event|fires|exports?\n |extends|external|function|func|host|lends|listens|interface|memberof!?\n |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n (?:\n [^{}@\\s*] | \\*[^/]\n )+\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "entity.name.type.instance.jsdoc"
+ }
+ }
+ },
+ {
+ "contentName": "variable.other.jsdoc",
+ "begin": "((@)(?:default(?:value)?|license|version))\\s+(([''\"]))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ },
+ "4": {
+ "name": "punctuation.definition.string.begin.jsdoc"
+ }
+ },
+ "end": "(\\3)|(?=$|\\*/)",
+ "endCaptures": {
+ "0": {
+ "name": "variable.other.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.string.end.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ }
+ }
+ },
+ {
+ "name": "storage.type.class.jsdoc",
+ "match": "(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ }
+ },
+ {
+ "include": "#inline-tags"
+ },
+ {
+ "match": "((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ }
+ }
+ ]
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "begin": "{",
+ "end": "}|(?=\\*/)",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]|(?=\\*/)",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ }
+ ]
+ },
+ "inline-tags": {
+ "patterns": [
+ {
+ "name": "constant.other.description.jsdoc",
+ "match": "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.bracket.square.begin.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.square.end.jsdoc"
+ }
+ }
+ },
+ {
+ "name": "entity.name.type.instance.jsdoc",
+ "begin": "({)((@)(?:link(?:code|plain)?|tutorial))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.bracket.curly.begin.jsdoc"
+ },
+ "2": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "3": {
+ "name": "punctuation.definition.inline.tag.jsdoc"
+ }
+ },
+ "end": "}|(?=\\*/)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.bracket.curly.end.jsdoc"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?",
+ "captures": {
+ "1": {
+ "name": "variable.other.link.underline.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.separator.pipe.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?",
+ "captures": {
+ "1": {
+ "name": "variable.other.description.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.separator.pipe.jsdoc"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "jsdoctype": {
+ "patterns": [
+ {
+ "contentName": "entity.name.type.instance.jsdoc",
+ "begin": "\\G({)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.bracket.curly.begin.jsdoc"
+ }
+ },
+ "end": "((}))\\s*|(?=\\*/)",
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.curly.end.jsdoc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ }
+ ]
+ },
+ "jsx": {
+ "patterns": [
+ {
+ "include": "#jsx-tag-without-attributes-in-expression"
+ },
+ {
+ "include": "#jsx-tag-in-expression"
+ }
+ ]
+ },
+ "jsx-tag-without-attributes-in-expression": {
+ "begin": "(?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
+ "end": "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
+ "patterns": [
+ {
+ "include": "#jsx-tag-without-attributes"
+ }
+ ]
+ },
+ "jsx-tag-without-attributes": {
+ "name": "meta.tag.without-attributes.js.jsx",
+ "begin": "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
+ "end": "(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.js.jsx"
+ },
+ "2": {
+ "name": "entity.name.tag.namespace.js.jsx"
+ },
+ "3": {
+ "name": "punctuation.separator.namespace.js.jsx"
+ },
+ "4": {
+ "name": "entity.name.tag.js.jsx"
+ },
+ "5": {
+ "name": "support.class.component.js.jsx"
+ },
+ "6": {
+ "name": "punctuation.definition.tag.end.js.jsx"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.js.jsx"
+ },
+ "2": {
+ "name": "entity.name.tag.namespace.js.jsx"
+ },
+ "3": {
+ "name": "punctuation.separator.namespace.js.jsx"
+ },
+ "4": {
+ "name": "entity.name.tag.js.jsx"
+ },
+ "5": {
+ "name": "support.class.component.js.jsx"
+ },
+ "6": {
+ "name": "punctuation.definition.tag.end.js.jsx"
+ }
+ },
+ "contentName": "meta.jsx.children.js.jsx",
+ "patterns": [
+ {
+ "include": "#jsx-children"
+ }
+ ]
+ },
+ "jsx-tag-in-expression": {
+ "begin": "(?x)\n (?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*\n (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n (?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
+ "end": "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
+ "patterns": [
+ {
+ "include": "#jsx-tag"
+ }
+ ]
+ },
+ "jsx-tag": {
+ "name": "meta.tag.js.jsx",
+ "begin": "(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
+ "end": "(/>)|(?:(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.begin.js.jsx"
+ },
+ "3": {
+ "name": "entity.name.tag.namespace.js.jsx"
+ },
+ "4": {
+ "name": "punctuation.separator.namespace.js.jsx"
+ },
+ "5": {
+ "name": "entity.name.tag.js.jsx"
+ },
+ "6": {
+ "name": "support.class.component.js.jsx"
+ },
+ "7": {
+ "name": "punctuation.definition.tag.end.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.js.jsx"
+ },
+ "2": {
+ "name": "entity.name.tag.namespace.js.jsx"
+ },
+ "3": {
+ "name": "punctuation.separator.namespace.js.jsx"
+ },
+ "4": {
+ "name": "entity.name.tag.js.jsx"
+ },
+ "5": {
+ "name": "support.class.component.js.jsx"
+ }
+ },
+ "end": "(?=[/]?>)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-arguments"
+ },
+ {
+ "include": "#jsx-tag-attributes"
+ }
+ ]
+ },
+ {
+ "begin": "(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.js.jsx"
+ }
+ },
+ "end": "(?=</)",
+ "contentName": "meta.jsx.children.js.jsx",
+ "patterns": [
+ {
+ "include": "#jsx-children"
+ }
+ ]
+ }
+ ]
+ },
+ "jsx-children": {
+ "patterns": [
+ {
+ "include": "#jsx-tag-without-attributes"
+ },
+ {
+ "include": "#jsx-tag"
+ },
+ {
+ "include": "#jsx-evaluated-code"
+ },
+ {
+ "include": "#jsx-entities"
+ }
+ ]
+ },
+ "jsx-evaluated-code": {
+ "contentName": "meta.embedded.expression.js.jsx",
+ "begin": "\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.js.jsx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "jsx-entities": {
+ "patterns": [
+ {
+ "name": "constant.character.entity.js.jsx",
+ "match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.js.jsx"
+ },
+ "3": {
+ "name": "punctuation.definition.entity.js.jsx"
+ }
+ }
+ }
+ ]
+ },
+ "jsx-tag-attributes": {
+ "name": "meta.tag.attributes.js.jsx",
+ "begin": "\\s+",
+ "end": "(?=[/]?>)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#jsx-tag-attribute-name"
+ },
+ {
+ "include": "#jsx-tag-attribute-assignment"
+ },
+ {
+ "include": "#jsx-string-double-quoted"
+ },
+ {
+ "include": "#jsx-string-single-quoted"
+ },
+ {
+ "include": "#jsx-evaluated-code"
+ },
+ {
+ "include": "#jsx-tag-attributes-illegal"
+ }
+ ]
+ },
+ "jsx-tag-attribute-name": {
+ "match": "(?x)\n \\s*\n (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?\n ([_$[:alpha:]][-_$[:alnum:]]*)\n (?=\\s|=|/?>|/\\*|//)",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.namespace.js.jsx"
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.js.jsx"
+ },
+ "3": {
+ "name": "entity.other.attribute-name.js.jsx"
+ }
+ }
+ },
+ "jsx-tag-attribute-assignment": {
+ "name": "keyword.operator.assignment.js.jsx",
+ "match": "=(?=\\s*(?:'|\"|{|/\\*|//|\\n))"
+ },
+ "jsx-string-double-quoted": {
+ "name": "string.quoted.double.js.jsx",
+ "begin": "\"",
+ "end": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.js.jsx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#jsx-entities"
+ }
+ ]
+ },
+ "jsx-string-single-quoted": {
+ "name": "string.quoted.single.js.jsx",
+ "begin": "'",
+ "end": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.js.jsx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.js.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#jsx-entities"
+ }
+ ]
+ },
+ "jsx-tag-attributes-illegal": {
+ "name": "invalid.illegal.attribute.js.jsx",
+ "match": "\\S+"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/julia.tmLanguage.json b/node_modules/shiki/languages/julia.tmLanguage.json
new file mode 100644
index 0000000..00bf957
--- /dev/null
+++ b/node_modules/shiki/languages/julia.tmLanguage.json
@@ -0,0 +1,945 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/JuliaEditorSupport/atom-language-julia/blob/master/grammars/julia_vscode.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/JuliaEditorSupport/atom-language-julia/commit/7b7801f41ce4ac1303bd17e057dbe677e24f597f",
+ "name": "julia",
+ "scopeName": "source.julia",
+ "comment": "This grammar is used by Atom (Oniguruma), GitHub (PCRE), and VSCode (Oniguruma),\nso all regexps must be compatible with both engines.\n\nSpecs:\n- https://github.com/kkos/oniguruma/blob/master/doc/RE\n- https://www.pcre.org/current/doc/html/",
+ "patterns": [
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#array"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#parentheses"
+ },
+ {
+ "include": "#bracket"
+ },
+ {
+ "include": "#function_decl"
+ },
+ {
+ "include": "#function_call"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#number"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type_decl"
+ },
+ {
+ "include": "#symbol"
+ }
+ ],
+ "repository": {
+ "array": {
+ "patterns": [
+ {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.bracket.julia"
+ }
+ },
+ "end": "(\\])((?:\\.)?'*)",
+ "endCaptures": {
+ "1": {
+ "name": "meta.bracket.julia"
+ },
+ "2": {
+ "name": "keyword.operator.transpose.julia"
+ }
+ },
+ "name": "meta.array.julia",
+ "patterns": [
+ {
+ "match": "\\bbegin\\b",
+ "name": "constant.numeric.julia"
+ },
+ {
+ "match": "\\bend\\b",
+ "name": "constant.numeric.julia"
+ },
+ {
+ "match": "\\bfor\\b",
+ "name": "keyword.control.julia"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "parentheses": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.bracket.julia"
+ }
+ },
+ "end": "(\\))((?:\\.)?'*)",
+ "endCaptures": {
+ "1": {
+ "name": "meta.bracket.julia"
+ },
+ "2": {
+ "name": "keyword.operator.transpose.julia"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "bracket": {
+ "patterns": [
+ {
+ "match": "(?:\\(|\\)|\\[|\\]|\\{|\\}|,|;)(?!('|(?:\\.'))*\\.?')",
+ "name": "meta.bracket.julia"
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "include": "#comment_block"
+ },
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.julia"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.number-sign.julia"
+ }
+ ]
+ },
+ "comment_block": {
+ "patterns": [
+ {
+ "begin": "#=",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.julia"
+ }
+ },
+ "end": "=#",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.julia"
+ }
+ },
+ "name": "comment.block.number-sign-equals.julia",
+ "patterns": [
+ {
+ "include": "#comment_block"
+ }
+ ]
+ }
+ ]
+ },
+ "function_call": {
+ "patterns": [
+ {
+ "begin": "((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?\\.?(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.julia"
+ },
+ "2": {
+ "name": "support.type.julia"
+ },
+ "3": {
+ "name": "meta.bracket.julia"
+ }
+ },
+ "end": "\\)(('|(\\.'))*\\.?')?",
+ "endCaptures": {
+ "0": {
+ "name": "meta.bracket.julia"
+ },
+ "1": {
+ "name": "keyword.operator.transposed-func.julia"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\bfor\\b",
+ "name": "keyword.control.julia"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "function_decl": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "entity.name.function.julia"
+ },
+ "2": {
+ "name": "support.type.julia"
+ }
+ },
+ "match": "((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?(?=\\([^#]*\\)(::[^\\s]+)?(\\s*\\bwhere\\b\\s+.+?)?\\s*?=(?![=>]))",
+ "comment": "first group is function name\nSecond group is type parameters (e.g. {T<:Number, S})\nThen open parens\nThen a lookahead ensures that we are followed by:\n - anything (function argumnets)\n - 0 or more spaces\n - Finally an equal sign\nNegative lookahead ensures we don't have another equal sign (not `==`)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.julia"
+ },
+ "2": {
+ "name": "keyword.operator.dots.julia"
+ },
+ "3": {
+ "name": "entity.name.function.julia"
+ },
+ "4": {
+ "name": "support.type.julia"
+ }
+ },
+ "match": "\\b(function|macro)(?:\\s+(?:(?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*(\\.))?((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)({(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})?|\\s*)(?=\\()",
+ "comment": "similar regex to previous, but with keyword not 1-line syntax"
+ }
+ ]
+ },
+ "keyword": {
+ "patterns": [
+ {
+ "match": "\\b(?<![:_\\.])(?:function|mutable\\s+struct|struct|macro|quote|abstract\\s+type|primitive\\s+type|module|baremodule|where)\\b",
+ "name": "keyword.other.julia"
+ },
+ {
+ "comment": "special case for blocks to support tokenizing outer properly",
+ "begin": "\\b(for)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.julia"
+ }
+ },
+ "end": "(?<!,|\\s)(\\s*\\n)",
+ "patterns": [
+ {
+ "match": "\\bouter\\b",
+ "name": "keyword.other.julia"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "match": "\\b(?<![:_])(?:if|else|elseif|while|begin|let|do|try|catch|finally|return|break|continue)\\b",
+ "name": "keyword.control.julia"
+ },
+ {
+ "match": "\\b(?<![:_])end\\b",
+ "name": "keyword.control.end.julia"
+ },
+ {
+ "match": "\\b(?<![:_])(?:global|local|const)\\b",
+ "name": "keyword.storage.modifier.julia"
+ },
+ {
+ "match": "\\b(?<![:_])(?:export)\\b",
+ "name": "keyword.control.export.julia"
+ },
+ {
+ "match": "\\b(?<![:_])(?:import)\\b",
+ "name": "keyword.control.import.julia"
+ },
+ {
+ "match": "\\b(?<![:_])(?:using)\\b",
+ "name": "keyword.control.using.julia"
+ },
+ {
+ "match": "(?<=\\w\\s)\\b(as)\\b(?=\\s\\w)",
+ "name": "keyword.control.as.julia"
+ },
+ {
+ "match": "(@(\\.|(?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*))",
+ "name": "support.function.macro.julia"
+ }
+ ]
+ },
+ "number": {
+ "patterns": [
+ {
+ "match": "((?<!(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿]))(?:(?:\\b0(?:x|X)[0-9a-fA-F](?:_?[0-9a-fA-F])*)|(?:\\b0o[0-7](?:_?[0-7])*)|(?:\\b0b[0-1](?:_?[0-1])*)|(?:(?:\\b[0-9](?:_?[0-9])*\\.?(?!\\.)(?:[_0-9]*))|(?:\\b\\.[0-9](?:_?[0-9])*))(?:[efE][+-]?[0-9](?:_?[0-9])*)?(?:im\\b|Inf(?:16|32|64)?\\b|NaN(?:16|32|64)?\\b|π\\b|pi\\b|ℯ\\b)?|\\b[0-9]+|\\bInf(?:16|32|64)?\\b|\\bNaN(?:16|32|64)?\\b|\\bπ\\b|\\bpi\\b|\\bℯ\\b))('*)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.julia"
+ },
+ "2": {
+ "name": "keyword.operator.conjugate-number.julia"
+ }
+ }
+ },
+ {
+ "match": "\\bARGS\\b|\\bC_NULL\\b|\\bDEPOT_PATH\\b|\\bENDIAN_BOM\\b|\\bENV\\b|\\bLOAD_PATH\\b|\\bPROGRAM_FILE\\b|\\bstdin\\b|\\bstdout\\b|\\bstderr\\b|\\bVERSION\\b|\\bdevnull\\b",
+ "name": "constant.global.julia"
+ },
+ {
+ "match": "\\btrue\\b|\\bfalse\\b|\\bnothing\\b|\\bmissing\\b",
+ "name": "constant.language.julia"
+ }
+ ]
+ },
+ "operator": {
+ "patterns": [
+ {
+ "match": "(?:->|<-|-->|=>)",
+ "name": "keyword.operator.arrow.julia"
+ },
+ {
+ "match": "(?::=|\\+=|-=|\\*=|//=|/=|\\.//=|\\./=|\\.\\*=|\\\\=|\\.\\\\=|\\^=|\\.\\^=|%=|\\.%=|÷=|\\.÷=|\\|=|&=|\\.&=|⊻=|\\.⊻=|\\$=|<<=|>>=|>>>=|=(?!=))",
+ "name": "keyword.operator.update.julia"
+ },
+ {
+ "match": "(?:<<|>>>|>>|\\.>>>|\\.>>|\\.<<)",
+ "name": "keyword.operator.shift.julia"
+ },
+ {
+ "match": "(?:\\s*(::|>:|<:)\\s*((?:(?:Union)?\\([^)]*\\)|[[:alpha:]_$∇][[:word:]⁺-ₜ!′\\.]*(?:(?:{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})*})|(?:\".+?(?<!\\\\)\"))?)))(?:\\.\\.\\.)?",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.relation.types.julia"
+ },
+ "2": {
+ "name": "support.type.julia"
+ }
+ }
+ },
+ {
+ "match": "(?:===|∈|\\.∈|∉|\\.∉|∋|\\.∋|∌|\\.∌|≈|\\.≈|≉|\\.≉|≠|\\.≠|≡|\\.≡|≢|\\.≢|⊆|\\.⊆|⊇|\\.⊇|⊈|\\.⊈|⊉|\\.⊉|⊊|\\.⊊|⊋|\\.⊋|\\.==|!==|!=|\\.>=|\\.>|\\.<=|\\.<|\\.≤|\\.≥|==|\\.!=|\\.=|\\.!|<:|>:|:>|(?<!>)>=|(?<!<)<=|>|<|≥|≤)",
+ "name": "keyword.operator.relation.julia"
+ },
+ {
+ "match": "(?<=\\s)(?:\\?)(?=\\s)",
+ "name": "keyword.operator.ternary.julia"
+ },
+ {
+ "match": "(?<=\\s)(?:\\:)(?=\\s)",
+ "name": "keyword.operator.ternary.julia"
+ },
+ {
+ "match": "(?:\\|\\||&&|(?<!(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿]))!)",
+ "name": "keyword.operator.boolean.julia"
+ },
+ {
+ "match": "(?<=[[:word:]⁺-ₜ!′∇\\)\\]\\}])(?::)",
+ "name": "keyword.operator.range.julia"
+ },
+ {
+ "match": "(?:\\|>)",
+ "name": "keyword.operator.applies.julia"
+ },
+ {
+ "match": "(?:\\||\\.\\||\\&|\\.\\&|~|\\.~|⊻|\\.⊻)",
+ "name": "keyword.operator.bitwise.julia"
+ },
+ {
+ "match": "(?:\\+\\+|--|\\+|\\.\\+|-|\\.\\-|\\*|\\.\\*|//(?!=)|\\.//(?!=)|/|\\./|%|\\.%|\\\\|\\.\\\\|\\^|\\.\\^|÷|\\.÷|⋅|\\.⋅|∩|\\.∩|∪|\\.∪|×|√|∛)",
+ "name": "keyword.operator.arithmetic.julia"
+ },
+ {
+ "match": "(?:∘)",
+ "name": "keyword.operator.compose.julia"
+ },
+ {
+ "match": "(?:::|(?<=\\s)isa(?=\\s))",
+ "name": "keyword.operator.isa.julia"
+ },
+ {
+ "match": "(?:(?<=\\s)in(?=\\s))",
+ "name": "keyword.operator.relation.in.julia"
+ },
+ {
+ "match": "(?:\\.(?=(?:@|_|\\p{L}))|\\.\\.+)",
+ "name": "keyword.operator.dots.julia"
+ },
+ {
+ "match": "(?:\\$)(?=.+)",
+ "name": "keyword.operator.interpolation.julia"
+ },
+ {
+ "captures": {
+ "2": {
+ "name": "keyword.operator.transposed-variable.julia"
+ }
+ },
+ "match": "((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)(('|(\\.'))*\\.?')"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "bracket.end.julia"
+ },
+ "2": {
+ "name": "keyword.operator.transposed-matrix.julia"
+ }
+ },
+ "match": "(\\])((?:'|(?:\\.'))*\\.?')"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "bracket.end.julia"
+ },
+ "2": {
+ "name": "keyword.operator.transposed-parens.julia"
+ }
+ },
+ "match": "(\\))((?:'|(?:\\.'))*\\.?')"
+ }
+ ]
+ },
+ "string": {
+ "patterns": [
+ {
+ "begin": "(?:(@doc)\\s((?:doc)?\"\"\")|(doc\"\"\"))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.macro.julia"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.julia"
+ }
+ },
+ "end": "(\"\"\") ?(->)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.julia"
+ },
+ "2": {
+ "name": "keyword.operator.arrow.julia"
+ }
+ },
+ "name": "string.docstring.julia",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#string_dollar_sign_interpolate"
+ }
+ ]
+ },
+ {
+ "begin": "(i?cxx)(\"\"\")",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.macro.julia"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.julia"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.julia"
+ }
+ },
+ "name": "embed.cxx.julia",
+ "contentName": "meta.embedded.inline.cpp",
+ "patterns": [
+ {
+ "include": "source.cpp#root_context"
+ },
+ {
+ "include": "#string_dollar_sign_interpolate"
+ }
+ ]
+ },
+ {
+ "begin": "(py)(\"\"\")",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.macro.julia"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.julia"
+ }
+ },
+ "end": "([\\s\\w]*)(\"\"\")",
+ "endCaptures": {
+ "2": {
+ "name": "punctuation.definition.string.end.julia"
+ }
+ },
+ "name": "embed.python.julia",
+ "contentName": "meta.embedded.inline.python",
+ "patterns": [
+ {
+ "include": "source.python"
+ },
+ {
+ "include": "#string_dollar_sign_interpolate"
+ }
+ ]
+ },
+ {
+ "begin": "(js)(\"\"\")",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.macro.julia"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.julia"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.julia"
+ }
+ },
+ "name": "embed.js.julia",
+ "contentName": "meta.embedded.inline.javascript",
+ "patterns": [
+ {
+ "include": "source.js"
+ },
+ {
+ "include": "#string_dollar_sign_interpolate"
+ }
+ ]
+ },
+ {
+ "begin": "(R)(\"\"\")",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.macro.julia"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.julia"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.julia"
+ }
+ },
+ "name": "embed.R.julia",
+ "contentName": "meta.embedded.inline.r",
+ "patterns": [
+ {
+ "include": "source.r"
+ },
+ {
+ "include": "#string_dollar_sign_interpolate"
+ }
+ ]
+ },
+ {
+ "begin": "(raw)(\"\"\")",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.macro.julia"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.julia"
+ }
+ },
+ "end": "\"\"\"",
+ "name": "string.quoted.other.julia",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.julia"
+ }
+ }
+ },
+ {
+ "begin": "(raw)(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.macro.julia"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.julia"
+ }
+ },
+ "end": "\"",
+ "name": "string.quoted.other.julia",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.julia"
+ }
+ }
+ },
+ {
+ "begin": "(sql)(\"\"\")",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.macro.julia"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.julia"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.julia"
+ }
+ },
+ "name": "embed.sql.julia",
+ "contentName": "meta.embedded.inline.sql",
+ "patterns": [
+ {
+ "include": "source.sql"
+ },
+ {
+ "include": "#string_dollar_sign_interpolate"
+ }
+ ]
+ },
+ {
+ "begin": "var\"\"\"",
+ "end": "\"\"\"",
+ "name": "constant.other.symbol.julia"
+ },
+ {
+ "begin": "var\"",
+ "end": "\"",
+ "name": "constant.other.symbol.julia"
+ },
+ {
+ "begin": "^\\s?(doc)?(\"\"\")\\s?$",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.macro.julia"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.julia"
+ }
+ },
+ "end": "(\"\"\")",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.julia"
+ }
+ },
+ "name": "string.docstring.julia",
+ "comment": "This only matches docstrings that start and end with triple quotes on\ntheir own line in the void",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#string_dollar_sign_interpolate"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.julia"
+ }
+ },
+ "end": "'(?!')",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.julia"
+ }
+ },
+ "name": "string.quoted.single.julia",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.multiline.begin.julia"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.multiline.end.julia"
+ }
+ },
+ "name": "string.quoted.triple.double.julia",
+ "comment": "multi-line string with triple double quotes",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#string_dollar_sign_interpolate"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.double.julia",
+ "begin": "\"(?!\"\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.julia"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.julia"
+ }
+ },
+ "comment": "String with single pair of double quotes. Regex matches isolated double quote",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#string_dollar_sign_interpolate"
+ }
+ ]
+ },
+ {
+ "begin": "r\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.regexp.begin.julia"
+ }
+ },
+ "end": "(\"\"\")([imsx]{0,4})?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.regexp.end.julia"
+ },
+ "2": {
+ "comment": "I took this scope name from python regex grammar",
+ "name": "keyword.other.option-toggle.regexp.julia"
+ }
+ },
+ "name": "string.regexp.julia",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "r\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.regexp.begin.julia"
+ }
+ },
+ "end": "(\")([imsx]{0,4})?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.regexp.end.julia"
+ },
+ "2": {
+ "comment": "I took this scope name from python regex grammar",
+ "name": "keyword.other.option-toggle.regexp.julia"
+ }
+ },
+ "name": "string.regexp.julia",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\")((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.julia"
+ },
+ "1": {
+ "name": "support.function.macro.julia"
+ }
+ },
+ "end": "(\"\"\")((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.julia"
+ },
+ "2": {
+ "name": "support.function.macro.julia"
+ }
+ },
+ "name": "string.quoted.other.julia",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\")((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.julia"
+ },
+ "1": {
+ "name": "support.function.macro.julia"
+ }
+ },
+ "end": "(?<![^\\\\]\\\\)(\")((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.julia"
+ },
+ "2": {
+ "name": "support.function.macro.julia"
+ }
+ },
+ "name": "string.quoted.other.julia",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!`)((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)?```",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.julia"
+ },
+ "1": {
+ "name": "support.function.macro.julia"
+ }
+ },
+ "end": "(```)((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.julia"
+ },
+ "2": {
+ "name": "support.function.macro.julia"
+ }
+ },
+ "name": "string.interpolated.backtick.julia",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!`)((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)?`",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.julia"
+ },
+ "1": {
+ "name": "support.function.macro.julia"
+ }
+ },
+ "end": "(?<![^\\\\]\\\\)(`)((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.julia"
+ },
+ "2": {
+ "name": "support.function.macro.julia"
+ }
+ },
+ "name": "string.interpolated.backtick.julia",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ "string_escaped_char": {
+ "patterns": [
+ {
+ "match": "\\\\(\\\\|[0-3]\\d{,2}|[4-7]\\d?|x[a-fA-F0-9]{,2}|u[a-fA-F0-9]{,4}|U[a-fA-F0-9]{,8}|.)",
+ "name": "constant.character.escape.julia"
+ }
+ ]
+ },
+ "string_dollar_sign_interpolate": {
+ "patterns": [
+ {
+ "match": "\\$(?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*",
+ "name": "variable.interpolation.julia"
+ },
+ {
+ "begin": "\\$\\(",
+ "end": "\\)",
+ "name": "variable.interpolation.julia",
+ "comment": "`punctuation.section.embedded`, `constant.escape`,\n& `meta.embedded.line` were considered but appear to have even spottier\nsupport among popular syntaxes.",
+ "patterns": [
+ {
+ "include": "#parentheses"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "symbol": {
+ "patterns": [
+ {
+ "match": "(?<![[:word:]⁺-ₜ!′∇\\)\\]\\}]):(?:(?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)(?!(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿]))(?![\"`])",
+ "name": "constant.other.symbol.julia",
+ "comment": "This is string.quoted.symbol.julia in tpoisot's package"
+ }
+ ]
+ },
+ "type_decl": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "entity.name.type.julia"
+ },
+ "2": {
+ "name": "entity.other.inherited-class.julia"
+ },
+ "3": {
+ "name": "punctuation.separator.inheritance.julia"
+ }
+ },
+ "match": "(?>!:_)(?:struct|mutable\\s+struct|abstract\\s+type|primitive\\s+type)\\s+((?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*)(\\s*(<:)\\s*(?:[[:alpha:]_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{So}←-⇿])(?:[[:word:]_!\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Sc}⅀-⅄∿⊾⊿⊤⊥∂∅-∇∎∏∐∑∞∟∫-∳⋀-⋃◸-◿♯⟘⟙⟀⟁⦰-⦴⨀-⨆⨉-⨖⨛⨜𝛁𝛛𝛻𝜕𝜵𝝏𝝯𝞉𝞩𝟃ⁱ-⁾₁-₎∠-∢⦛-⦯℘℮゛-゜𝟎-𝟡]|[^\\P{Mn}\u0001-¡]|[^\\P{Mc}\u0001-¡]|[^\\P{Nd}\u0001-¡]|[^\\P{Pc}\u0001-¡]|[^\\P{Sk}\u0001-¡]|[^\\P{Me}\u0001-¡]|[^\\P{No}\u0001-¡]|[′-‷⁗]|[^\\P{So}←-⇿])*(?:{.*})?)?",
+ "name": "meta.type.julia"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/kotlin.tmLanguage.json b/node_modules/shiki/languages/kotlin.tmLanguage.json
new file mode 100644
index 0000000..c035541
--- /dev/null
+++ b/node_modules/shiki/languages/kotlin.tmLanguage.json
@@ -0,0 +1,531 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "name": "kotlin",
+ "scopeName": "source.kotlin",
+ "patterns": [
+ {
+ "include": "#import"
+ },
+ {
+ "include": "#package"
+ },
+ {
+ "include": "#code"
+ }
+ ],
+ "fileTypes": ["kt", "kts"],
+ "repository": {
+ "import": {
+ "begin": "\\b(import)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.import.kotlin"
+ }
+ },
+ "end": ";|$",
+ "name": "meta.import.kotlin",
+ "contentName": "entity.name.package.kotlin",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#hard-keywords"
+ },
+ {
+ "match": "\\*",
+ "name": "variable.language.wildcard.kotlin"
+ }
+ ]
+ },
+ "package": {
+ "begin": "\\b(package)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.package.kotlin"
+ }
+ },
+ "end": ";|$",
+ "name": "meta.package.kotlin",
+ "contentName": "entity.name.package.kotlin",
+ "patterns": [
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "code": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#annotation-simple"
+ },
+ {
+ "include": "#annotation-site-list"
+ },
+ {
+ "include": "#annotation-site"
+ },
+ {
+ "include": "#class-declaration"
+ },
+ {
+ "include": "#object-declaration"
+ },
+ {
+ "include": "#type-alias"
+ },
+ {
+ "include": "#function-declaration"
+ },
+ {
+ "include": "#variable-declaration"
+ },
+ {
+ "include": "#type-constraint"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "include": "#method-reference"
+ },
+ {
+ "include": "#key"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#string-empty"
+ },
+ {
+ "include": "#string-multiline"
+ },
+ {
+ "include": "#character"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#self-reference"
+ },
+ {
+ "include": "#decimal-literal"
+ },
+ {
+ "include": "#hex-literal"
+ },
+ {
+ "include": "#binary-literal"
+ },
+ {
+ "include": "#boolean-literal"
+ },
+ {
+ "include": "#null-literal"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "include": "#comment-line"
+ },
+ {
+ "include": "#comment-block"
+ },
+ {
+ "include": "#comment-javadoc"
+ }
+ ]
+ },
+ "comment-line": {
+ "begin": "//",
+ "end": "$",
+ "name": "comment.line.double-slash.kotlin"
+ },
+ "comment-block": {
+ "begin": "/\\*(?!\\*)",
+ "end": "\\*/",
+ "name": "comment.block.kotlin"
+ },
+ "comment-javadoc": {
+ "patterns": [
+ {
+ "begin": "/\\*\\*",
+ "end": "\\*/",
+ "name": "comment.block.javadoc.kotlin",
+ "patterns": [
+ {
+ "match": "@(author|deprecated|return|see|serial|since|version)\\b",
+ "name": "keyword.other.documentation.javadoc.kotlin"
+ },
+ {
+ "match": "(@param)\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.documentation.javadoc.kotlin"
+ },
+ "2": {
+ "name": "variable.parameter.kotlin"
+ }
+ }
+ },
+ {
+ "match": "(@(?:exception|throws))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.documentation.javadoc.kotlin"
+ },
+ "2": {
+ "name": "entity.name.type.class.kotlin"
+ }
+ }
+ },
+ {
+ "match": "{(@link)\\s+(\\S+)?#([\\w$]+\\s*\\([^\\(\\)]*\\)).*}",
+ "captures": {
+ "1": {
+ "name": "keyword.other.documentation.javadoc.kotlin"
+ },
+ "2": {
+ "name": "entity.name.type.class.kotlin"
+ },
+ "3": {
+ "name": "variable.parameter.kotlin"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "include": "#prefix-modifiers"
+ },
+ {
+ "include": "#postfix-modifiers"
+ },
+ {
+ "include": "#soft-keywords"
+ },
+ {
+ "include": "#hard-keywords"
+ },
+ {
+ "include": "#control-keywords"
+ }
+ ]
+ },
+ "prefix-modifiers": {
+ "match": "\\b(abstract|final|enum|open|annotation|sealed|data|override|final|lateinit|private|protected|public|internal|inner|companion|noinline|crossinline|vararg|reified|tailrec|operator|infix|inline|external|const|suspend|value)\\b",
+ "name": "storage.modifier.other.kotlin"
+ },
+ "postfix-modifiers": {
+ "match": "\\b(where|by|get|set)\\b",
+ "name": "storage.modifier.other.kotlin"
+ },
+ "soft-keywords": {
+ "match": "\\b(catch|finally|field)\\b",
+ "name": "keyword.soft.kotlin"
+ },
+ "hard-keywords": {
+ "match": "\\b(as|typeof|is|in)\\b",
+ "name": "keyword.hard.kotlin"
+ },
+ "control-keywords": {
+ "match": "\\b(if|else|while|do|when|try|throw|break|continue|return|for)\\b",
+ "name": "keyword.control.kotlin"
+ },
+ "annotation-simple": {
+ "match": "(?<!\\w)@[\\w\\.]+\\b(?!:)",
+ "name": "entity.name.type.annotation.kotlin"
+ },
+ "annotation-site-list": {
+ "begin": "(?<!\\w)(@\\w+):\\s*\\[",
+ "end": "\\]",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.type.annotation-site.kotlin"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#unescaped-annotation"
+ }
+ ]
+ },
+ "annotation-site": {
+ "begin": "(?<!\\w)(@\\w+):\\s*(?!\\[)",
+ "end": "$",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.type.annotation-site.kotlin"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#unescaped-annotation"
+ }
+ ]
+ },
+ "unescaped-annotation": {
+ "match": "\\b[\\w\\.]+\\b",
+ "name": "entity.name.type.annotation.kotlin"
+ },
+ "class-declaration": {
+ "match": "\\b(class|interface)\\s+(\\b\\w+\\b|`[^`]+`)\\s*(?<GROUP><([^<>]|\\g<GROUP>)+>)?",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.kotlin"
+ },
+ "2": {
+ "name": "entity.name.type.class.kotlin"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#type-parameter"
+ }
+ ]
+ }
+ }
+ },
+ "object-declaration": {
+ "match": "\\b(object)\\s+(\\b\\w+\\b|`[^`]+`)",
+ "captures": {
+ "1": {
+ "name": "storage.type.object.kotlin"
+ },
+ "2": {
+ "name": "entity.name.type.object.kotlin"
+ }
+ }
+ },
+ "type-alias": {
+ "match": "\\b(typealias)\\s+(\\b\\w+\\b|`[^`]+`)\\s*(?<GROUP><([^<>]|\\g<GROUP>)+>)?",
+ "captures": {
+ "1": {
+ "name": "storage.type.alias.kotlin"
+ },
+ "2": {
+ "name": "entity.name.type.kotlin"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#type-parameter"
+ }
+ ]
+ }
+ }
+ },
+ "function-declaration": {
+ "match": "\\b(fun)\\b\\s*(?<GROUP><([^<>]|\\g<GROUP>)+>)?\\s*(?:(\\w+)\\.)?(\\b\\w+\\b|`[^`]+`)",
+ "captures": {
+ "1": {
+ "name": "storage.type.function.kotlin"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type-parameter"
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.type.class.extension.kotlin"
+ },
+ "5": {
+ "name": "entity.name.function.declaration.kotlin"
+ }
+ }
+ },
+ "variable-declaration": {
+ "match": "\\b(val|var)\\b\\s*(?<GROUP><([^<>]|\\g<GROUP>)+>)?",
+ "captures": {
+ "1": {
+ "name": "storage.type.variable.kotlin"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type-parameter"
+ }
+ ]
+ }
+ }
+ },
+ "type-parameter": {
+ "patterns": [
+ {
+ "match": "\\b\\w+\\b",
+ "name": "entity.name.type.kotlin"
+ },
+ {
+ "match": "\\b(in|out)\\b",
+ "name": "storage.modifier.kotlin"
+ }
+ ]
+ },
+ "type-annotation": {
+ "match": "(?<![:?]):\\s*(\\w|\\?|\\s|->|(?<GROUP>[<(]([^<>()\"']|\\g<GROUP>)+[)>]))+",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#type-parameter"
+ }
+ ]
+ }
+ }
+ },
+ "function-call": {
+ "match": "\\??\\.?(\\b\\w+\\b|`[^`]+`)\\s*(?<GROUP><([^<>]|\\g<GROUP>)+>)?\\s*(?=[({])",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.call.kotlin"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type-parameter"
+ }
+ ]
+ }
+ }
+ },
+ "method-reference": {
+ "match": "\\??::(\\b\\w+\\b|`[^`]+`)",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.reference.kotlin"
+ }
+ }
+ },
+ "key": {
+ "match": "\\b(\\w=)\\s*(=)",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.kotlin"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.kotlin"
+ }
+ }
+ },
+ "string-empty": {
+ "match": "(?<!\")\"\"(?!\")",
+ "name": "string.quoted.double.kotlin"
+ },
+ "string": {
+ "begin": "(?<!\")\"(?!\")",
+ "end": "\"",
+ "name": "string.quoted.double.kotlin",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.kotlin"
+ },
+ {
+ "include": "#string-escape-simple"
+ },
+ {
+ "include": "#string-escape-bracketed"
+ }
+ ]
+ },
+ "string-multiline": {
+ "begin": "\"\"\"",
+ "end": "\"\"\"",
+ "name": "string.quoted.double.kotlin",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.kotlin"
+ },
+ {
+ "include": "#string-escape-simple"
+ },
+ {
+ "include": "#string-escape-bracketed"
+ }
+ ]
+ },
+ "string-escape-simple": {
+ "match": "(?<!\\\\)\\$\\w+\\b",
+ "name": "variable.string-escape.kotlin"
+ },
+ "string-escape-bracketed": {
+ "begin": "(?<!\\\\)(\\$\\{)",
+ "end": "(\\})",
+ "name": "meta.template.expression.kotlin",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.template-expression.begin"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.template-expression.end"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ },
+ "character": {
+ "begin": "'",
+ "end": "'",
+ "name": "string.quoted.single.kotlin",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.kotlin"
+ }
+ ]
+ },
+ "decimal-literal": {
+ "match": "\\b\\d[\\d_]*(\\.[\\d_]+)?((e|E)\\d+)?(u|U)?(L|F|f)?\\b",
+ "name": "constant.numeric.decimal.kotlin"
+ },
+ "hex-literal": {
+ "match": "0(x|X)[A-Fa-f0-9][A-Fa-f0-9_]*(u|U)?",
+ "name": "constant.numeric.hex.kotlin"
+ },
+ "binary-literal": {
+ "match": "0(b|B)[01][01_]*",
+ "name": "constant.numeric.binary.kotlin"
+ },
+ "boolean-literal": {
+ "match": "\\b(true|false)\\b",
+ "name": "constant.language.boolean.kotlin"
+ },
+ "null-literal": {
+ "match": "\\bnull\\b",
+ "name": "constant.language.null.kotlin"
+ },
+ "operators": {
+ "match": "<=|>=|===|==|=>|=|\\!==|\\!=|\\+=|\\+\\+|\\+|-=|--|-|\\*=|\\*|/=|/|%=|%|!|\\&\\&|\\&|\\|\\||\\|..",
+ "name": "keyword.operator.kotlin"
+ },
+ "self-reference": {
+ "match": "\\b(this|super)(@\\w+)?\\b",
+ "name": "variable.language.this.kotlin"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/kusto.tmLanguage.json b/node_modules/shiki/languages/kusto.tmLanguage.json
new file mode 100644
index 0000000..4912664
--- /dev/null
+++ b/node_modules/shiki/languages/kusto.tmLanguage.json
@@ -0,0 +1,684 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "scopeName": "source.kusto",
+ "fileTypes": ["csl", "kusto", "kql"],
+ "name": "kusto",
+ "patterns": [
+ {
+ "match": "\\b(by|from|of|to|step|with)\\b",
+ "name": "keyword.other.operator.kusto",
+ "comment": "Tabular operators: common helper operators"
+ },
+ {
+ "match": "\\b(let|set|alias|declare|pattern|query_parameters|restrict|access|set)\\b",
+ "name": "keyword.control.kusto",
+ "comment": "Query statements: https://docs.microsoft.com/en-us/azure/kusto/query/statements"
+ },
+ {
+ "match": "\\b(and|or|has_all|has_any|matches|regex)\\b",
+ "name": "keyword.other.operator.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/datatypes-string-operators"
+ },
+ {
+ "match": "\\b(cluster|database)(?:\\s*\\(\\s*(.+?)\\s*\\))?(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "support.function.kusto"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#Strings"
+ }
+ ]
+ }
+ },
+ "name": "meta.special.database.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/clusterfunction"
+ },
+ {
+ "match": "\\b(external_table|materialized_view|materialize|table|toscalar)\\b",
+ "name": "support.function.kusto",
+ "comment": "Special functions: https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/tablefunction"
+ },
+ {
+ "match": "(?<!\\w)(!?between)\\b",
+ "name": "keyword.other.operator.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/betweenoperator"
+ },
+ {
+ "match": "\\b(binary_and|binary_or|binary_shift_left|binary_shift_right|binary_xor)(?:\\s*\\(\\s*(\\w+)\\s*,\\s*(\\w+)\\s*\\))?(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "support.function.kusto"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#Numeric"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#Numeric"
+ }
+ ]
+ }
+ },
+ "name": "meta.scalar.bitwise.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/binoperators"
+ },
+ {
+ "match": "\\b(binary_not|bitset_count_ones)(?:\\s*\\(\\s*(\\w+)\\s*\\))?(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "support.function.kusto"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#Numeric"
+ }
+ ]
+ }
+ },
+ "name": "meta.scalar.bitwise.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/binary-notfunction"
+ },
+ {
+ "match": "(?<!\\w)(!?in~?)(?!\\w)",
+ "name": "keyword.other.operator.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/in-cs-operator"
+ },
+ {
+ "match": "(?<!\\w)(!?(?:contains|endswith|hasprefix|hassuffix|has|startswith)(?:_cs)?)(?!\\w)",
+ "name": "keyword.other.operator.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/datatypes-string-operators"
+ },
+ {
+ "match": "\\b(range)\\s*\\((?:\\s*(\\w+(?:\\(.*?\\))?)\\s*,\\s*(\\w+(?:\\(.*?\\))?)\\s*,?(?:\\s*)?(\\w+(?:\\(.*?\\))?)?\\s*\\))?(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "support.function.kusto"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#DateTimeTimeSpanDataTypes"
+ },
+ {
+ "include": "#TimeSpanLiterals"
+ },
+ {
+ "include": "#DateTimeTimeSpanFunctions"
+ },
+ {
+ "include": "#Numeric"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#DateTimeTimeSpanDataTypes"
+ },
+ {
+ "include": "#TimeSpanLiterals"
+ },
+ {
+ "include": "#DateTimeTimeSpanFunctions"
+ },
+ {
+ "include": "#Numeric"
+ }
+ ]
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#DateTimeTimeSpanDataTypes"
+ },
+ {
+ "include": "#TimeSpanLiterals"
+ },
+ {
+ "include": "#DateTimeTimeSpanFunctions"
+ },
+ {
+ "include": "#Numeric"
+ }
+ ]
+ }
+ },
+ "name": "meta.scalar.function.range.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/rangefunction"
+ },
+ {
+ "match": "\\b(abs|acos|around|array_concat|array_iff|array_index_of|array_length|array_reverse|array_rotate_left|array_rotate_right|array_shift_left|array_shift_right|array_slice|array_sort_asc|array_sort_desc|array_split|array_sum|asin|assert|atan2|atan|bag_has_key|bag_keys|bag_merge|bag_remove_keys|base64_decode_toarray|base64_decode_tostring|base64_decode_toguid|base64_encode_fromarray|base64_encode_tostring|base64_encode_fromguid|beta_cdf|beta_inv|beta_pdf|bin_at|bin_auto|case|ceiling|coalesce|column_ifexists|convert_angle|convert_energy|convert_force|convert_length|convert_mass|convert_speed|convert_temperature|convert_volume|cos|cot|countof|current_cluster_endpoint|current_database|current_principal_details|current_principal_is_member_of|current_principal|cursor_after|cursor_before_or_at|cursor_current|current_cursor|dcount_hll|degrees|dynamic_to_json|estimate_data_size|exp10|exp2|exp|extent_id|extent_tags|extract_all|extract_json|extractjson|extract|floor|format_bytes|format_ipv4_mask|format_ipv4|gamma|gettype|gzip_compress_to_base64_string|gzip_decompress_from_base64_string|has_any_index|has_any_ipv4_prefix|has_any_ipv4|has_ipv4_prefix|has_ipv4|hash_combine|hash_many|hash_md5|hash_sha1|hash_sha256|hash_xxhash64|hash|iff|iif|indexof_regex|indexof|ingestion_time|ipv4_compare|ipv4_is_in_range|ipv4_is_in_any_range|ipv4_is_match|ipv4_is_private|ipv4_netmask_suffix|ipv6_compare|ipv6_is_match|isascii|isempty|isfinite|isinf|isnan|isnotempty|notempty|isnotnull|notnull|isnull|isutf8|jaccard_index|log10|log2|loggamma|log|make_string|max_of|min_of|new_guid|not|bag_pack|pack_all|pack_array|pack_dictionary|pack|parse_command_line|parse_csv|parse_ipv4_mask|parse_ipv4|parse_ipv6_mask|parse_ipv6|parse_path|parse_urlquery|parse_url|parse_user_agent|parse_version|parse_xml|percentile_tdigest|percentile_array_tdigest|percentrank_tdigest|pi|pow|radians|rand|rank_tdigest|regex_quote|repeat|replace_regex|replace_string|reverse|round|set_difference|set_has_element|set_intersect|set_union|sign|sin|split|sqrt|strcat_array|strcat_delim|strcmp|strcat|string_size|strlen|strrep|substring|tan|to_utf8|tobool|todecimal|todouble|toreal|toguid|tohex|toint|tolong|tolower|tostring|toupper|translate|treepath|trim_end|trim_start|trim|unixtime_microseconds_todatetime|unixtime_milliseconds_todatetime|unixtime_nanoseconds_todatetime|unixtime_seconds_todatetime|url_decode|url_encode_component|url_encode|welch_test|zip|zlib_compress_to_base64_string|zlib_decompress_from_base64_string)\\b",
+ "name": "support.function.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/scalarfunctions"
+ },
+ {
+ "match": "\\b(bin)(?:\\s*\\(\\s*(.+?)\\s*,\\s*(.+?)\\s*\\))?(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "support.function.kusto"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#DateTimeTimeSpanDataTypes"
+ },
+ {
+ "include": "#TimeSpanLiterals"
+ },
+ {
+ "include": "#DateTimeTimeSpanFunctions"
+ },
+ {
+ "include": "#Numeric"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#TimeSpanLiterals"
+ },
+ {
+ "include": "#Numeric"
+ }
+ ]
+ }
+ },
+ "name": "meta.scalar.function.bin.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/binfunction"
+ },
+ {
+ "match": "\\b(count)\\s*\\(\\s*\\)(?!\\w)",
+ "name": "support.function.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/count-aggfunction"
+ },
+ {
+ "match": "\\b(arg_max|arg_min|avgif|avg|binary_all_and|binary_all_or|binary_all_xor|buildschema|countif|dcount|dcountif|hll|hll_merge|make_bag_if|make_bag|make_list_with_nulls|make_list_if|make_list|make_set_if|make_set|maxif|max|minif|min|percentilesw_array|percentiles_array|percentilesw|percentilew|percentiles|percentile|stdevif|stdevp|stdev|sumif|sum|take_anyif|take_any|tdigest_merge|merge_tdigest|tdigest|varianceif|variancep|variance)\\b",
+ "name": "support.function.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/aggregation-functions"
+ },
+ {
+ "match": "\\b(geo_distance_2points|geo_distance_point_to_line|geo_distance_point_to_polygon|geo_intersects_2lines|geo_intersects_2polygons|geo_intersects_line_with_polygon|geo_intersection_2lines|geo_intersection_2polygons|geo_intersection_line_with_polygon|geo_line_centroid|geo_line_densify|geo_line_length|geo_line_simplify|geo_polygon_area|geo_polygon_centroid|geo_polygon_densify|geo_polygon_perimeter|geo_polygon_simplify|geo_polygon_to_s2cells|geo_point_in_circle|geo_point_in_polygon|geo_point_to_geohash|geo_point_to_h3cell|geo_point_to_s2cell|geo_geohash_to_central_point|geo_geohash_neighbors|geo_geohash_to_polygon|geo_s2cell_to_central_point|geo_s2cell_neighbors|geo_s2cell_to_polygon|geo_h3cell_to_central_point|geo_h3cell_neighbors|geo_h3cell_to_polygon|geo_h3cell_parent|geo_h3cell_children|geo_h3cell_level|geo_h3cell_rings|geo_simplify_polygons_array|geo_union_lines_array|geo_union_polygons_array)\\b",
+ "name": "support.function.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/geospatial-grid-systems"
+ },
+ {
+ "match": "\\b(next|prev|row_cumsum|row_number|row_rank|row_window_session)\\b",
+ "name": "support.function.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/windowsfunctions"
+ },
+ {
+ "match": "\\.(create-or-alter|replace)",
+ "name": "keyword.control.kusto",
+ "comment": "User-defined functions: https://docs.microsoft.com/en-us/azure/kusto/query/functions/user-defined-functions"
+ },
+ {
+ "match": "(?<=let ).+(?=\\W*=)",
+ "name": "entity.function.name.lambda.kusto",
+ "comment": "User-defined functions: https://docs.microsoft.com/en-us/azure/kusto/query/functions/user-defined-functions"
+ },
+ {
+ "match": "\\b(folder|docstring|skipvalidation)\\b",
+ "name": "keyword.other.operator.kusto",
+ "comment": "User-defined functions: https://docs.microsoft.com/en-us/azure/kusto/query/functions/user-defined-functions"
+ },
+ {
+ "match": "\\b(function)\\b",
+ "name": "storage.type.kusto"
+ },
+ {
+ "match": "\\b(bool|decimal|dynamic|guid|int|long|real|string)\\b",
+ "name": "storage.type.kusto",
+ "comment": "Data types: https://docs.microsoft.com/en-us/azure/kusto/query/scalar-data-types"
+ },
+ {
+ "match": "\\b(as)\\s+(\\w+)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.query.kusto"
+ },
+ "2": {
+ "name": "variable.other.kusto"
+ }
+ },
+ "name": "meta.query.as.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/asoperator"
+ },
+ {
+ "match": "\\b(datatable)(?=\\W*\\()",
+ "name": "keyword.other.query.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/datatableoperator"
+ },
+ {
+ "match": "\\b(facet)(?:\\s+(by))?\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.query.kusto"
+ },
+ "2": {
+ "name": "keyword.other.operator.kusto"
+ }
+ },
+ "name": "meta.query.facet.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/facetoperator"
+ },
+ {
+ "match": "\\b(invoke)(?:\\s+(\\w+))?\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.query.kusto"
+ },
+ "2": {
+ "name": "entity.name.function.kusto"
+ }
+ },
+ "name": "meta.query.invoke.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/invokeoperator"
+ },
+ {
+ "match": "\\b(order)(?:\\s+(by)\\s+(\\w+))?\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.query.kusto"
+ },
+ "2": {
+ "name": "keyword.other.operator.kusto"
+ },
+ "3": {
+ "name": "variable.other.column.kusto"
+ }
+ },
+ "name": "meta.query.order.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/orderoperator"
+ },
+ {
+ "match": "\\b(range)\\s+(\\w+)\\s+(from)\\s+(\\w+(?:\\(\\w*\\))?)\\s+(to)\\s+(\\w+(?:\\(\\w*\\))?)\\s+(step)\\s+(\\w+(?:\\(\\w*\\))?)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.query.kusto"
+ },
+ "2": {
+ "name": "variable.other.column.kusto"
+ },
+ "3": {
+ "name": "keyword.other.operator.kusto"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#TimeSpanLiterals"
+ },
+ {
+ "include": "#DateTimeTimeSpanFunctions"
+ },
+ {
+ "include": "#Numeric"
+ }
+ ]
+ },
+ "5": {
+ "name": "keyword.other.operator.kusto"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#TimeSpanLiterals"
+ },
+ {
+ "include": "#DateTimeTimeSpanFunctions"
+ },
+ {
+ "include": "#Numeric"
+ }
+ ]
+ },
+ "7": {
+ "name": "keyword.other.operator.kusto"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#TimeSpanLiterals"
+ },
+ {
+ "include": "#DateTimeTimeSpanFunctions"
+ },
+ {
+ "include": "#Numeric"
+ }
+ ]
+ }
+ },
+ "name": "meta.query.range.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/rangeoperator"
+ },
+ {
+ "match": "\\b(sample)(?:\\s+(\\d+))?(?![\\w-])",
+ "captures": {
+ "1": {
+ "name": "keyword.other.query.kusto"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#Numeric"
+ }
+ ]
+ }
+ },
+ "name": "meta.query.sample.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/sampleoperator"
+ },
+ {
+ "match": "\\b(sample-distinct)(?:\\s+(\\d+)\\s+(of)\\s+(\\w+))?\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.query.kusto"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#Numeric"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.other.operator.kusto"
+ },
+ "4": {
+ "name": "variable.other.column.kusto"
+ }
+ },
+ "name": "meta.query.sample-distinct.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/sampledistinctoperator"
+ },
+ {
+ "match": "\\b(sort)(?:\\s+(by))?\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.query.kusto"
+ },
+ "2": {
+ "name": "keyword.other.operator.kusto"
+ }
+ },
+ "name": "meta.query.sort.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/sortoperator"
+ },
+ {
+ "match": "\\b(take|limit)(?:\\s+(\\d+))\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.query.kusto"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#Numeric"
+ }
+ ]
+ }
+ },
+ "name": "meta.query.take.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/takeoperator"
+ },
+ {
+ "match": "\\b(top)(?:\\s+(\\d+)\\s+(by)\\s+(\\w+))?(?![\\w-])\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.query.kusto"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#Numeric"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.other.operator.kusto"
+ },
+ "4": {
+ "name": "variable.other.column.kusto"
+ }
+ },
+ "name": "meta.query.top.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/topoperator"
+ },
+ {
+ "match": "\\b(top-hitters)(?:\\s+(\\d+)\\s+(of)\\s+(\\w+)(?:\\s+(by)\\s+(\\w+))?)?\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.query.kusto"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#Numeric"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.other.operator.kusto"
+ },
+ "4": {
+ "name": "variable.other.column.kusto"
+ },
+ "5": {
+ "name": "keyword.other.operator.kusto"
+ },
+ "6": {
+ "name": "variable.other.column.kusto"
+ }
+ },
+ "name": "meta.query.top-hitters.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/tophittersoperator"
+ },
+ {
+ "match": "\\b(consume|count|distinct|evaluate|extend|externaldata|find|fork|getschema|join|lookup|make-series|mv-apply|mv-expand|project-away|project-keep|project-rename|project-reorder|project|parse|parse-where|parse-kv|partition|print|reduce|render|scan|search|serialize|shuffle|summarize|top-nested|union|where)\\b",
+ "name": "keyword.other.query.kusto",
+ "comment": "Tabular operators: https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/queries"
+ },
+ {
+ "match": "\\b(active_users_count|activity_counts_metrics|activity_engagement|new_activity_metrics|activity_metrics|autocluster|azure_digital_twins_query_request|bag_unpack|basket|cosmosdb_sql_request|dcount_intersect|diffpatterns|funnel_sequence_completion|funnel_sequence|http_request_post|http_request|infer_storage_schema|ipv4_lookup|mysql_request|narrow|pivot|preview|rolling_percentile|rows_near|schema_merge|session_count|sequence_detect|sliding_window_counts|sql_request)\\b",
+ "name": "support.function.kusto",
+ "comment": "Tabular operators: evalute (plugins): https://docs.microsoft.com/en-us/azure/kusto/query/evaluateoperator"
+ },
+ {
+ "match": "\\b(on|kind|hint\\.remote|hint\\.strategy)\\b",
+ "name": "keyword.other.operator.kusto",
+ "comment": "Tabular operators: join: https://docs.microsoft.com/en-us/azure/kusto/query/joinoperator"
+ },
+ {
+ "match": "(\\$left|\\$right)\\b",
+ "name": "keyword.other.kusto",
+ "comment": "Tabular operators: join ($left, $right): https://docs.microsoft.com/en-us/azure/kusto/query/joinoperator"
+ },
+ {
+ "match": "\\b(innerunique|inner|leftouter|rightouter|fullouter|leftanti|anti|leftantisemi|rightanti|rightantisemi|leftsemi|rightsemi|broadcast)\\b",
+ "name": "keyword.other.kusto",
+ "comment": "Tabular operators: join (kinds, strategies): https://docs.microsoft.com/en-us/azure/kusto/query/joinoperator"
+ },
+ {
+ "match": "\\b(series_abs|series_acos|series_add|series_asin|series_atan|series_cos|series_decompose|series_decompose_anomalies|series_decompose_forecast|series_divide|series_equals|series_exp|series_fft|series_fill_backward|series_fill_const|series_fill_forward|series_fill_linear|series_fir|series_fit_2lines_dynamic|series_fit_2lines|series_fit_line_dynamic|series_fit_line|series_fit_poly|series_greater_equals|series_greater|series_ifft|series_iir|series_less_equals|series_less|series_multiply|series_not_equals|series_outliers|series_pearson_correlation|series_periods_detect|series_periods_validate|series_pow|series_seasonal|series_sign|series_sin|series_stats|series_stats_dynamic|series_subtract|series_tan)\\b",
+ "name": "support.function.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/machine-learning-and-tsa"
+ },
+ {
+ "match": "\\b(bag|array)\\b",
+ "name": "keyword.other.operator.kusto",
+ "comment": "Tabular operators: mv-expand (bagexpand options): https://docs.microsoft.com/en-us/azure/kusto/query/mvexpandoperator"
+ },
+ {
+ "match": "\\b(asc|desc|nulls first|nulls last)\\b",
+ "name": "keyword.other.kusto",
+ "comment": "Tabular operators: order: https://docs.microsoft.com/en-us/azure/kusto/query/orderoperator"
+ },
+ {
+ "match": "\\b(regex|simple|relaxed)\\b",
+ "name": "keyword.other.kusto",
+ "comment": "Tabular operators: parse: https://docs.microsoft.com/en-us/azure/kusto/query/parseoperator"
+ },
+ {
+ "match": "\\b(anomalychart|areachart|barchart|card|columnchart|ladderchart|linechart|piechart|pivotchart|scatterchart|stackedareachart|timechart|timepivot)\\b",
+ "name": "support.function.kusto"
+ },
+ {
+ "include": "#Strings"
+ },
+ {
+ "match": "\\{.*?\\}",
+ "name": "string.other.kusto"
+ },
+ {
+ "match": "//.*",
+ "name": "comment.line.kusto",
+ "comment": "Comments"
+ },
+ {
+ "include": "#TimeSpanLiterals"
+ },
+ {
+ "include": "#DateTimeTimeSpanFunctions"
+ },
+ {
+ "include": "#DateTimeTimeSpanDataTypes"
+ },
+ {
+ "include": "#Numeric"
+ },
+ {
+ "match": "\\b(true|false|null)\\b",
+ "name": "constant.language.kusto"
+ },
+ {
+ "match": "\\b(anyif|any|array_strcat|base64_decodestring|base64_encodestring|make_dictionary|makelist|makeset|mvexpand|todynamic|parse_json|replace|weekofyear)(?=\\W*\\(|\\b)",
+ "name": "invalid.deprecated.kusto",
+ "comment": "Deprecated functions"
+ }
+ ],
+ "repository": {
+ "Strings": {
+ "patterns": [
+ {
+ "begin": "([@h]?\")",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.kusto"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.kusto"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#Escapes"
+ }
+ ],
+ "name": "string.quoted.double.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/scalar-data-types/string"
+ },
+ {
+ "begin": "([@h]?')",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.kusto"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.kusto"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#Escapes"
+ }
+ ],
+ "name": "string.quoted.single.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/scalar-data-types/string"
+ }
+ ]
+ },
+ "Escapes": {
+ "patterns": [
+ {
+ "match": "\\\\['\"]",
+ "name": "constant.character.escape.kusto"
+ }
+ ]
+ },
+ "Numeric": {
+ "patterns": [
+ {
+ "match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*+)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?(?=\\b|\\w)",
+ "name": "constant.numeric.kusto"
+ }
+ ]
+ },
+ "TimeSpanLiterals": {
+ "patterns": [
+ {
+ "match": "[+-]?(?:\\d*\\.)?\\d+(?:microseconds?|ticks?|seconds?|ms|d|h|m|s)\\b",
+ "name": "constant.numeric.kusto",
+ "comment": "timespan literals: https://docs.microsoft.com/en-us/azure/kusto/query/scalar-data-types/timespan#timespan-literals"
+ }
+ ]
+ },
+ "DateTimeTimeSpanFunctions": {
+ "patterns": [
+ {
+ "match": "\\b(format_datetime)(?:\\s*\\(\\s*(.+?)\\s*,\\s*(['\"].*?['\"])\\s*\\))?(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "support.function.kusto"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#DateTimeTimeSpanDataTypes"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#Strings"
+ }
+ ]
+ }
+ },
+ "name": "meta.scalar.function.format_datetime.kusto",
+ "comment": "https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/format-datetimefunction"
+ },
+ {
+ "match": "\\b(ago|datetime_add|datetime_diff|datetime_local_to_utc|datetime_part|datetime_utc_to_local|dayofmonth|dayofweek|dayofyear|endofday|endofmonth|endofweek|endofyear|format_timespan|getmonth|getyear|hourofday|make_datetime|make_timespan|monthofyear|now|startofday|startofmonth|startofweek|startofyear|todatetime|totimespan|week_of_year)(?=\\W*\\()",
+ "name": "support.function.kusto",
+ "comment": "Scalar function: DateTime/Timespan Functions: https://docs.microsoft.com/en-us/azure/kusto/query/scalarfunctions#datetimetimespan-functions"
+ }
+ ]
+ },
+ "DateTimeTimeSpanDataTypes": {
+ "patterns": [
+ {
+ "match": "\\b(datetime|timespan|time)\\b",
+ "name": "storage.type.kusto"
+ }
+ ]
+ }
+ },
+ "uuid": "FF0550E0-3A29-11E3-AA6E-0800200C9B77"
+}
diff --git a/node_modules/shiki/languages/latex.tmLanguage.json b/node_modules/shiki/languages/latex.tmLanguage.json
new file mode 100644
index 0000000..ad7a46b
--- /dev/null
+++ b/node_modules/shiki/languages/latex.tmLanguage.json
@@ -0,0 +1,2374 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/jlelong/vscode-latex-basics/blob/master/syntaxes/LaTeX.tmLanguage.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/jlelong/vscode-latex-basics/commit/580c019674f82ef887a6dcce7bfc75ab0b58486d",
+ "name": "latex",
+ "scopeName": "text.tex.latex",
+ "patterns": [
+ {
+ "comment": "This scope identifies partially typed commands such as `\\tab`. We use this to trigger “Command Completion” only when it makes sense.",
+ "match": "(?<=\\\\[\\w@]|\\\\[\\w@]{2}|\\\\[\\w@]{3}|\\\\[\\w@]{4}|\\\\[\\w@]{5}|\\\\[\\w@]{6})\\s",
+ "name": "meta.space-after-command.latex"
+ },
+ {
+ "begin": "((\\\\)(?:usepackage|documentclass))\\b(?=\\[|\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.preamble.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ }
+ },
+ "end": "(?<=\\})",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "name": "meta.preamble.latex",
+ "patterns": [
+ {
+ "include": "#multiline-optional-arg"
+ },
+ {
+ "begin": "((?:\\G|(?<=\\]))\\{)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "contentName": "support.class.latex",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((\\\\)(?:include|input))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.include.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "name": "meta.include.latex",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "((\\\\)((?:sub){0,2}section|(?:sub)?paragraph|chapter|part|addpart|addchap|addsec|minisec|frametitle)(?:\\*)?)((?:\\[[^\\[]*?\\]){0,2})(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.section.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#optional-arg"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "comment": "this works OK with all kinds of stuff as long as the section is one line",
+ "contentName": "entity.name.section.latex",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "name": "meta.function.section.$3.latex",
+ "patterns": [
+ {
+ "include": "text.tex#braces"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "name": "meta.function.environment.songs.latex",
+ "begin": "((?:\\s*)\\\\begin\\{songs\\}\\{.*\\})",
+ "end": "(\\\\end\\{songs\\}(?:\\s*\\n)?)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.data.environment.songs.latex",
+ "patterns": [
+ {
+ "name": "meta.chord.block.latex support.class.chord.block.environment.latex",
+ "begin": "\\\\\\[",
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "name": "meta.chord.block.latex support.class.chord.block.environment.latex",
+ "match": "\\^"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(^\\s*)?\\\\begin\\{(lstlisting|minted|pyglist)\\}(?=\\[|\\{)",
+ "end": "\\\\end\\{(?:minted|lstlisting|pyglist)\\}",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#multiline-optional-arg-no-highlight"
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)((?:c|cpp))(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
+ "contentName": "source.cpp.embedded.latex",
+ "patterns": [
+ {
+ "include": "source.cpp.embedded.latex"
+ }
+ ]
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)((?:asy|asymptote))(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
+ "contentName": "source.asy",
+ "patterns": [
+ {
+ "include": "source.asy"
+ }
+ ]
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)((?:css))(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
+ "contentName": "source.css",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)((?:hs|haskell))(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
+ "contentName": "source.haskell",
+ "patterns": [
+ {
+ "include": "source.haskell"
+ }
+ ]
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)((?:html))(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
+ "contentName": "text.html",
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)((?:xml))(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
+ "contentName": "text.xml",
+ "patterns": [
+ {
+ "include": "text.xml"
+ }
+ ]
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)((?:java))(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
+ "contentName": "source.java",
+ "patterns": [
+ {
+ "include": "source.java"
+ }
+ ]
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)((?:lua))(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
+ "contentName": "source.lua",
+ "patterns": [
+ {
+ "include": "source.lua"
+ }
+ ]
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)((?:jl|julia))(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
+ "contentName": "source.julia",
+ "patterns": [
+ {
+ "include": "source.julia"
+ }
+ ]
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)((?:rb|ruby))(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
+ "contentName": "source.ruby",
+ "patterns": [
+ {
+ "include": "source.ruby"
+ }
+ ]
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)((?:js|javascript))(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
+ "contentName": "source.js",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)((?:ts|typescript))(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
+ "contentName": "source.ts",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)((?:py|python))(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
+ "contentName": "source.python",
+ "patterns": [
+ {
+ "include": "source.python"
+ }
+ ]
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)((?:yaml))(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
+ "contentName": "source.yaml",
+ "patterns": [
+ {
+ "include": "source.yaml"
+ }
+ ]
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)((?:rust))(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "end": "^\\s*(?=\\\\end\\{(?:minted|lstlisting|pyglist)\\})",
+ "contentName": "source.rust",
+ "patterns": [
+ {
+ "include": "source.rust"
+ }
+ ]
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)([a-zA-Z]*)(\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "contentName": "meta.function.embedded.latex",
+ "end": "^\\s*(?=\\\\end\\{(?:lstlisting|minted|pyglist)\\})",
+ "name": "meta.embedded.block.generic.latex"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*\\\\begin\\{(?:cppcode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
+ "end": "\\s*\\\\end\\{(?:cppcode)\\*?\\}",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#multiline-optional-arg-no-highlight"
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "contentName": "variable.parameter.function.latex"
+ },
+ {
+ "begin": "^(?=\\s*)",
+ "end": "^\\s*(?=\\\\end\\{(?:cppcode)\\*?\\})",
+ "contentName": "source.cpp.embedded.latex",
+ "patterns": [
+ {
+ "include": "source.cpp.embedded.latex"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\s*\\\\begin\\{(?:hscode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
+ "end": "\\s*\\\\end\\{(?:hscode)\\*?\\}",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#multiline-optional-arg-no-highlight"
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "contentName": "variable.parameter.function.latex"
+ },
+ {
+ "begin": "^(?=\\s*)",
+ "end": "^\\s*(?=\\\\end\\{(?:hscode)\\*?\\})",
+ "contentName": "source.haskell",
+ "patterns": [
+ {
+ "include": "source.haskell"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\s*\\\\begin\\{(?:luacode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
+ "end": "\\s*\\\\end\\{(?:luacode)\\*?\\}",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#multiline-optional-arg-no-highlight"
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "contentName": "variable.parameter.function.latex"
+ },
+ {
+ "begin": "^(?=\\s*)",
+ "end": "^\\s*(?=\\\\end\\{(?:luacode)\\*?\\})",
+ "contentName": "source.lua",
+ "patterns": [
+ {
+ "include": "source.lua"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\s*\\\\begin\\{(?:jlcode|jlverbatim|jlblock|jlconcode|jlconsole|jlconverbatim)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
+ "end": "\\s*\\\\end\\{(?:jlcode|jlverbatim|jlblock|jlconcode|jlconsole|jlconverbatim)\\*?\\}",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#multiline-optional-arg-no-highlight"
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "contentName": "variable.parameter.function.latex"
+ },
+ {
+ "begin": "^(?=\\s*)",
+ "end": "^\\s*(?=\\\\end\\{(?:jlcode|jlverbatim|jlblock|jlconcode|jlconsole|jlconverbatim)\\*?\\})",
+ "contentName": "source.julia",
+ "patterns": [
+ {
+ "include": "source.julia"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\s*\\\\begin\\{(?:juliacode|juliaverbatim|juliablock|juliaconcode|juliaconsole|juliaconverbatim)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
+ "end": "\\s*\\\\end\\{(?:juliacode|juliaverbatim|juliablock|juliaconcode|juliaconsole|juliaconverbatim)\\*?\\}",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#multiline-optional-arg-no-highlight"
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "contentName": "variable.parameter.function.latex"
+ },
+ {
+ "begin": "^(?=\\s*)",
+ "end": "^\\s*(?=\\\\end\\{(?:juliacode|juliaverbatim|juliablock|juliaconcode|juliaconsole|juliaconverbatim)\\*?\\})",
+ "contentName": "source.julia",
+ "patterns": [
+ {
+ "include": "source.julia"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\s*\\\\begin\\{(?:sageblock|sagesilent|sageverbatim|sageexample|sagecommandline|python|pythonq|pythonrepl)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
+ "end": "\\s*\\\\end\\{(?:sageblock|sagesilent|sageverbatim|sageexample|sagecommandline|python|pythonq|pythonrepl)\\*?\\}",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#multiline-optional-arg-no-highlight"
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "contentName": "variable.parameter.function.latex"
+ },
+ {
+ "begin": "^(?=\\s*)",
+ "end": "^\\s*(?=\\\\end\\{(?:sageblock|sagesilent|sageverbatim|sageexample|sagecommandline|python|pythonq|pythonrepl)\\*?\\})",
+ "contentName": "source.python",
+ "patterns": [
+ {
+ "include": "source.python"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\s*\\\\begin\\{(?:pycode|pyverbatim|pyblock|pyconcode|pyconsole|pyconverbatim)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
+ "end": "\\s*\\\\end\\{(?:pycode|pyverbatim|pyblock|pyconcode|pyconsole|pyconverbatim)\\*?\\}",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#multiline-optional-arg-no-highlight"
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "contentName": "variable.parameter.function.latex"
+ },
+ {
+ "begin": "^(?=\\s*)",
+ "end": "^\\s*(?=\\\\end\\{(?:pycode|pyverbatim|pyblock|pyconcode|pyconsole|pyconverbatim)\\*?\\})",
+ "contentName": "source.python",
+ "patterns": [
+ {
+ "include": "source.python"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\s*\\\\begin\\{(?:pylabcode|pylabverbatim|pylabblock|pylabconcode|pylabconsole|pylabconverbatim)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
+ "end": "\\s*\\\\end\\{(?:pylabcode|pylabverbatim|pylabblock|pylabconcode|pylabconsole|pylabconverbatim)\\*?\\}",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#multiline-optional-arg-no-highlight"
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "contentName": "variable.parameter.function.latex"
+ },
+ {
+ "begin": "^(?=\\s*)",
+ "end": "^\\s*(?=\\\\end\\{(?:pylabcode|pylabverbatim|pylabblock|pylabconcode|pylabconsole|pylabconverbatim)\\*?\\})",
+ "contentName": "source.python",
+ "patterns": [
+ {
+ "include": "source.python"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\s*\\\\begin\\{(?:sympycode|sympyverbatim|sympyblock|sympyconcode|sympyconsole|sympyconverbatim)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
+ "end": "\\s*\\\\end\\{(?:sympycode|sympyverbatim|sympyblock|sympyconcode|sympyconsole|sympyconverbatim)\\*?\\}",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#multiline-optional-arg-no-highlight"
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "contentName": "variable.parameter.function.latex"
+ },
+ {
+ "begin": "^(?=\\s*)",
+ "end": "^\\s*(?=\\\\end\\{(?:sympycode|sympyverbatim|sympyblock|sympyconcode|sympyconsole|sympyconverbatim)\\*?\\})",
+ "contentName": "source.python",
+ "patterns": [
+ {
+ "include": "source.python"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\s*\\\\begin\\{(?:scalacode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
+ "end": "\\s*\\\\end\\{(?:scalacode)\\*?\\}",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#multiline-optional-arg-no-highlight"
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "contentName": "variable.parameter.function.latex"
+ },
+ {
+ "begin": "^(?=\\s*)",
+ "end": "^\\s*(?=\\\\end\\{(?:scalacode)\\*?\\})",
+ "contentName": "source.scala",
+ "patterns": [
+ {
+ "include": "source.scala"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\s*\\\\begin\\{(?:asy|asycode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
+ "end": "\\s*\\\\end\\{(?:asy|asycode)\\*?\\}",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#multiline-optional-arg-no-highlight"
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "contentName": "variable.parameter.function.latex"
+ },
+ {
+ "begin": "^(?=\\s*)",
+ "end": "^\\s*(?=\\\\end\\{(?:asy|asycode)\\*?\\})",
+ "contentName": "source.asymptote",
+ "patterns": [
+ {
+ "include": "source.asymptote"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\s*\\\\begin\\{(?:dot2tex|dotcode)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
+ "end": "\\s*\\\\end\\{(?:dot2tex|dotcode)\\*?\\}",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#multiline-optional-arg-no-highlight"
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "contentName": "variable.parameter.function.latex"
+ },
+ {
+ "begin": "^(?=\\s*)",
+ "end": "^\\s*(?=\\\\end\\{(?:dot2tex|dotcode)\\*?\\})",
+ "contentName": "source.dot",
+ "patterns": [
+ {
+ "include": "source.dot"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\s*\\\\begin\\{(?:gnuplot)\\*?\\}(?:\\[[a-zA-Z0-9_-]*\\])?(?=\\[|\\{|\\s*$)",
+ "end": "\\s*\\\\end\\{(?:gnuplot)\\*?\\}",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#multiline-optional-arg-no-highlight"
+ },
+ {
+ "begin": "(?:\\G|(?<=\\]))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "contentName": "variable.parameter.function.latex"
+ },
+ {
+ "begin": "^(?=\\s*)",
+ "end": "^\\s*(?=\\\\end\\{(?:gnuplot)\\*?\\})",
+ "contentName": "source.gnuplot",
+ "patterns": [
+ {
+ "include": "source.gnuplot"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((?:\\s*)\\\\begin\\{([a-zA-Z]*code(?:\\*)?)\\}(?:\\[.*\\])?(?:\\{.*\\})?)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)",
+ "contentName": "meta.function.embedded.latex",
+ "name": "meta.embedded.block.generic.latex"
+ },
+ {
+ "begin": "((\\\\)addplot)(?:\\+?)((?:\\[[^\\[]*\\]))*\\s*(gnuplot)\\s*((?:\\[[^\\[]*\\]))*\\s*(\\{)",
+ "captures": {
+ "1": {
+ "name": "support.function.be.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#optional-arg"
+ }
+ ]
+ },
+ "4": {
+ "name": "variable.parameter.function.latex"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#optional-arg"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "%",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.latex"
+ }
+ },
+ "end": "$\\n?",
+ "name": "comment.line.percentage.latex"
+ },
+ {
+ "include": "source.gnuplot"
+ }
+ ],
+ "end": "\\s*(\\};)"
+ },
+ {
+ "begin": "(\\s*\\\\begin\\{((?:fboxv|boxedv|V|v|spv)erbatim\\*?)\\})",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "contentName": "markup.raw.verbatim.latex",
+ "end": "(\\\\end\\{\\2\\})",
+ "name": "meta.function.verbatim.latex"
+ },
+ {
+ "begin": "(\\s*\\\\begin\\{VerbatimOut\\}\\{[^\\}]*\\})",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "contentName": "markup.raw.verbatim.latex",
+ "end": "(\\\\end\\{\\VerbatimOut\\})",
+ "name": "meta.function.verbatim.latex"
+ },
+ {
+ "begin": "(\\s*\\\\begin\\{alltt\\})",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "contentName": "markup.raw.verbatim.latex",
+ "end": "(\\\\end\\{alltt\\})",
+ "name": "meta.function.alltt.latex",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.function.latex"
+ }
+ },
+ "match": "(\\\\)[A-Za-z]+",
+ "name": "support.function.general.latex"
+ }
+ ]
+ },
+ {
+ "begin": "(\\s*\\\\begin\\{([Cc]omment)\\})",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "contentName": "punctuation.definition.comment.latex",
+ "end": "(\\\\end\\{\\2\\})",
+ "name": "meta.function.verbatim.latex"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.url.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#optional-arg"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "5": {
+ "name": "markup.underline.link.latex"
+ },
+ "6": {
+ "name": "punctuation.definition.arguments.end.latex"
+ },
+ "7": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "8": {
+ "name": "entity.name.hyperlink.latex"
+ },
+ "9": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "match": "(?:\\s*)((\\\\)(?:url|href|hyperref|hyperimage))(\\[[^\\[]*?\\])?(\\{)([^}]*)(\\})(?:\\{[^}]*\\}){2}?(?:(\\{)([^}]*)(\\}))?",
+ "name": "meta.function.link.url.latex"
+ },
+ {
+ "comment": "These two patterns match the \\begin{document} and \\end{document} commands, so that the environment matching pattern following them will ignore those commands.",
+ "match": "(\\s*\\\\begin\\{document\\})",
+ "name": "meta.function.begin-document.latex",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "(\\s*\\\\end\\{document\\})",
+ "name": "meta.function.end-document.latex",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "(?:\\s*)((\\\\)begin)(\\{)((?:\\+?array|equation|(?:IEEE)?eqnarray|multline|align|aligned|alignat|alignedat|flalign|flaligned|flalignat|split|gather|gathered|\\+?cases|(?:display)?math|\\+?[a-zA-Z]*matrix|[pbBvV]?NiceMatrix|[pbBvV]?NiceArray|(?:(?:arg)?(?:mini|maxi)))(?:\\*|!)?)(\\})(\\s*\\n)?",
+ "captures": {
+ "1": {
+ "name": "support.function.be.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "4": {
+ "name": "variable.parameter.function.latex"
+ },
+ "5": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "contentName": "meta.math.block.latex support.class.math.block.environment.latex",
+ "end": "(?:\\s*)((\\\\)end)(\\{)(\\4)(\\})(?:\\s*\\n)?",
+ "name": "meta.function.environment.math.latex",
+ "patterns": [
+ {
+ "match": "(?<!\\\\)&",
+ "name": "keyword.control.equation.align.latex"
+ },
+ {
+ "match": "\\\\\\\\",
+ "name": "keyword.control.equation.newline.latex"
+ },
+ {
+ "include": "#definition-label"
+ },
+ {
+ "include": "text.tex#math"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "(?:\\s*)(\\\\begin\\{empheq\\}(?:\\[.*\\])?)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.math.block.latex support.class.math.block.environment.latex",
+ "end": "(?:\\s*)(\\\\end\\{empheq\\})",
+ "name": "meta.function.environment.math.latex",
+ "patterns": [
+ {
+ "match": "(?<!\\\\)&",
+ "name": "keyword.control.equation.align.latex"
+ },
+ {
+ "match": "\\\\\\\\",
+ "name": "keyword.control.equation.newline.latex"
+ },
+ {
+ "include": "#definition-label"
+ },
+ {
+ "include": "text.tex#math"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "(\\s*\\\\begin\\{(tabular[xy*]?|xltabular|longtable|(?:long)?tabu|(?:long|tall)?tblr|NiceTabular[X*]?)\\}(\\s*\\n)?)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.data.environment.tabular.latex",
+ "end": "(\\s*\\\\end\\{(\\2)\\}(?:\\s*\\n)?)",
+ "name": "meta.function.environment.tabular.latex",
+ "patterns": [
+ {
+ "match": "(?<!\\\\)&",
+ "name": "keyword.control.table.cell.latex"
+ },
+ {
+ "match": "\\\\\\\\",
+ "name": "keyword.control.table.newline.latex"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "(\\s*\\\\begin\\{(itemize|enumerate|description|list)\\})",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)",
+ "name": "meta.function.environment.list.latex",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "(\\s*\\\\begin\\{tikzpicture\\})",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "end": "(\\\\end\\{tikzpicture\\}(?:\\s*\\n)?)",
+ "name": "meta.function.environment.latex.tikz",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "(\\s*\\\\begin\\{frame\\})",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "end": "(\\\\end\\{frame\\})",
+ "name": "meta.function.environment.frame.latex",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "(\\s*\\\\begin\\{(mpost\\*?)\\})",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)",
+ "name": "meta.function.environment.latex.mpost"
+ },
+ {
+ "begin": "(\\s*\\\\begin\\{markdown\\})",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "end": "(\\\\end\\{markdown\\})",
+ "contentName": "meta.embedded.markdown_latex_combined",
+ "patterns": [
+ {
+ "include": "text.tex.markdown_latex_combined"
+ }
+ ]
+ },
+ {
+ "begin": "(\\s*\\\\begin\\{(\\w+\\*?)\\})",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#begin-env-tokenizer"
+ }
+ ]
+ }
+ },
+ "end": "(\\\\end\\{\\2\\}(?:\\s*\\n)?)",
+ "name": "meta.function.environment.general.latex",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.function.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.begin.latex"
+ },
+ "4": {
+ "name": "support.function.general.latex"
+ },
+ "5": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "6": {
+ "name": "punctuation.definition.end.latex"
+ }
+ },
+ "match": "((\\\\)(?:newcommand|renewcommand|(?:re)?newrobustcmd|DeclareRobustCommand))\\*?({)((\\\\)[^}]*)(})"
+ },
+ {
+ "begin": "((\\\\)marginpar)((?:\\[[^\\[]*?\\])*)(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.marginpar.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#optional-arg"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.marginpar.begin.latex"
+ }
+ },
+ "contentName": "meta.paragraph.margin.latex",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.marginpar.end.latex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "text.tex#braces"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "((\\\\)footnote)((?:\\[[^\\[]*?\\])*)(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.footnote.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#optional-arg"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.footnote.begin.latex"
+ }
+ },
+ "contentName": "entity.name.footnote.latex",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.footnote.end.latex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "text.tex#braces"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "((\\\\)emph)(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.emph.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.emph.begin.latex"
+ }
+ },
+ "contentName": "markup.italic.emph.latex",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.emph.end.latex"
+ }
+ },
+ "name": "meta.function.emph.latex",
+ "patterns": [
+ {
+ "include": "text.tex#braces"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "((\\\\)textit)(\\{)",
+ "captures": {
+ "1": {
+ "name": "support.function.textit.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.textit.begin.latex"
+ }
+ },
+ "comment": "We put the keyword in a capture and name this capture, so that disabling spell checking for “keyword” won't be inherited by the argument to \\textit{...}.\n\nPut specific matches for particular LaTeX keyword.functions before the last two more general functions",
+ "contentName": "markup.italic.textit.latex",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.textit.end.latex"
+ }
+ },
+ "name": "meta.function.textit.latex",
+ "patterns": [
+ {
+ "include": "text.tex#braces"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "((\\\\)textbf)(\\{)",
+ "captures": {
+ "1": {
+ "name": "support.function.textbf.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.textbf.begin.latex"
+ }
+ },
+ "contentName": "markup.bold.textbf.latex",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.textbf.end.latex"
+ }
+ },
+ "name": "meta.function.textbf.latex",
+ "patterns": [
+ {
+ "include": "text.tex#braces"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "((\\\\)texttt)(\\{)",
+ "captures": {
+ "1": {
+ "name": "support.function.texttt.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.texttt.begin.latex"
+ }
+ },
+ "contentName": "markup.raw.texttt.latex",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.texttt.end.latex"
+ }
+ },
+ "name": "meta.function.texttt.latex",
+ "patterns": [
+ {
+ "include": "text.tex#braces"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "keyword.other.item.latex"
+ },
+ "1": {
+ "name": "punctuation.definition.keyword.latex"
+ }
+ },
+ "match": "(\\\\)item\\b",
+ "name": "meta.scope.item.latex"
+ },
+ {
+ "begin": "((\\\\)(?:[aA]uto|foot|full|no|ref|short|[tT]ext|[pP]aren|[sS]mart)?[cC]ite(?:al)?(?:p|s|t|author|year(?:par)?|title)?[ANP]*\\*?)((?:(?:\\([^\\)]*\\)){0,2}(?:\\[[^\\]]*\\]){0,2}\\{[\\p{Alphabetic}:.]*\\})*)(?:([<\\[])[^\\]<>]*([>\\]]))?(?:(\\[)[^\\]]*(\\]))?(\\{)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.cite.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.latex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#autocites-arg"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.arguments.optional.begin.latex"
+ },
+ "5": {
+ "name": "punctuation.definition.arguments.optional.end.latex"
+ },
+ "6": {
+ "name": "punctuation.definition.arguments.optional.begin.latex"
+ },
+ "7": {
+ "name": "punctuation.definition.arguments.optional.end.latex"
+ },
+ "8": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "name": "meta.citation.latex",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "comment.line.percentage.tex"
+ },
+ "2": {
+ "name": "punctuation.definition.comment.tex"
+ }
+ },
+ "match": "((%).*)$"
+ },
+ {
+ "match": "[\\p{Alphabetic}\\p{Number}:.-]+",
+ "name": "constant.other.reference.citation.latex"
+ }
+ ]
+ },
+ {
+ "begin": "((\\\\)bibentry)(\\{)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.cite.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "name": "meta.citation.latex",
+ "patterns": [
+ {
+ "match": "[\\p{Alphabetic}\\p{Number}:.]+",
+ "name": "constant.other.reference.citation.latex"
+ }
+ ]
+ },
+ {
+ "begin": "((\\\\)(?:\\w*[rR]ef\\*?))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.ref.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "name": "meta.reference.label.latex",
+ "patterns": [
+ {
+ "match": "[\\p{Alphabetic}\\p{Number}\\.,:/*!^_-]",
+ "name": "constant.other.reference.label.latex"
+ }
+ ]
+ },
+ {
+ "include": "#definition-label"
+ },
+ {
+ "begin": "((\\\\)(?:verb|Verb|spverb)\\*?)\\s*((\\\\)scantokens)(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.verb.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "name": "support.function.verb.latex"
+ },
+ "4": {
+ "name": "punctuation.definition.verb.latex"
+ },
+ "5": {
+ "name": "punctuation.definition.begin.latex"
+ }
+ },
+ "contentName": "markup.raw.verb.latex",
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.end.latex"
+ }
+ },
+ "name": "meta.function.verb.latex",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.verb.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.verb.latex"
+ },
+ "4": {
+ "name": "markup.raw.verb.latex"
+ },
+ "5": {
+ "name": "punctuation.definition.verb.latex"
+ }
+ },
+ "match": "((\\\\)(?:verb|Verb|spverb)\\*?)\\s*((?<=\\s)\\S|[^a-zA-Z])(.*?)(\\3|$)",
+ "name": "meta.function.verb.latex"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.verb.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#optional-arg"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "5": {
+ "name": "punctuation.definition.arguments.end.latex"
+ },
+ "6": {
+ "name": "punctuation.definition.verb.latex"
+ },
+ "7": {
+ "name": "markup.raw.verb.latex"
+ },
+ "8": {
+ "name": "punctuation.definition.verb.latex"
+ },
+ "9": {
+ "name": "punctuation.definition.verb.latex"
+ },
+ "10": {
+ "name": "markup.raw.verb.latex"
+ },
+ "11": {
+ "name": "punctuation.definition.verb.latex"
+ }
+ },
+ "match": "((\\\\)(?:mint|mintinline))((?:\\[[^\\[]*?\\])?)(\\{)[a-zA-Z]*(\\})(?:(?:([^a-zA-Z\\{])(.*?)(\\6))|(?:(\\{)(.*?)(\\})))",
+ "name": "meta.function.verb.latex"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.verb.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#optional-arg"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.verb.latex"
+ },
+ "5": {
+ "name": "markup.raw.verb.latex"
+ },
+ "6": {
+ "name": "punctuation.definition.verb.latex"
+ },
+ "7": {
+ "name": "punctuation.definition.verb.latex"
+ },
+ "8": {
+ "name": "markup.raw.verb.latex"
+ },
+ "9": {
+ "name": "punctuation.definition.verb.latex"
+ }
+ },
+ "match": "((\\\\)[a-z]+inline)((?:\\[[^\\[]*?\\])?)(?:(?:([^a-zA-Z\\{])(.*?)(\\4))|(?:(\\{)(.*?)(\\})))",
+ "name": "meta.function.verb.latex"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.verb.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#optional-arg"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.verb.latex"
+ },
+ "5": {
+ "name": "source.python",
+ "patterns": [
+ {
+ "include": "source.python"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.definition.verb.latex"
+ },
+ "7": {
+ "name": "punctuation.definition.verb.latex"
+ },
+ "8": {
+ "name": "source.python",
+ "patterns": [
+ {
+ "include": "source.python"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.definition.verb.latex"
+ }
+ },
+ "match": "((\\\\)(?:(?:py|pycon|pylab|pylabcon|sympy|sympycon)[cv]?|pyq|pycq|pyif))((?:\\[[^\\[]*?\\])?)(?:(?:([^a-zA-Z\\{])(.*?)(\\4))|(?:(\\{)(.*?)(\\})))",
+ "name": "meta.function.verb.latex"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.verb.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#optional-arg"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.verb.latex"
+ },
+ "5": {
+ "name": "source.julia",
+ "patterns": [
+ {
+ "include": "source.julia"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.definition.verb.latex"
+ },
+ "7": {
+ "name": "punctuation.definition.verb.latex"
+ },
+ "8": {
+ "name": "source.julia",
+ "patterns": [
+ {
+ "include": "source.julia"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.definition.verb.latex"
+ }
+ },
+ "match": "((\\\\)(?:jl|julia)[cv]?)((?:\\[[^\\[]*?\\])?)(?:(?:([^a-zA-Z\\{])(.*?)(\\4))|(?:(\\{)(.*?)(\\})))",
+ "name": "meta.function.verb.latex"
+ },
+ {
+ "match": "\\\\(?:newline|pagebreak|clearpage|linebreak|pause)(?:\\b)",
+ "name": "keyword.control.layout.latex"
+ },
+ {
+ "begin": "\\\\\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.latex"
+ }
+ },
+ "end": "\\\\\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.latex"
+ }
+ },
+ "name": "meta.math.block.latex support.class.math.block.environment.latex",
+ "patterns": [
+ {
+ "include": "text.tex#math"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.double.latex",
+ "match": "(?<!\\\\)(\\`\\`)(?:.*?(?<!\\\\))(\\'\\'|\\\")",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.string.end.latex"
+ }
+ }
+ },
+ {
+ "name": "string.quoted.single.latex",
+ "match": "(?<!\\\\)(\\`)(?:.*?(?<!\\\\))(\\')",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.string.end.latex"
+ }
+ }
+ },
+ {
+ "begin": "\\$\\$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.latex"
+ }
+ },
+ "end": "\\$\\$",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.latex"
+ }
+ },
+ "name": "meta.math.block.latex support.class.math.block.environment.latex",
+ "patterns": [
+ {
+ "match": "\\\\\\$",
+ "name": "constant.character.escape.latex"
+ },
+ {
+ "include": "text.tex#math"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "\\$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.tex"
+ }
+ },
+ "end": "\\$",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.tex"
+ }
+ },
+ "name": "meta.math.block.tex support.class.math.block.tex",
+ "patterns": [
+ {
+ "match": "\\\\\\$",
+ "name": "constant.character.escape.latex"
+ },
+ {
+ "include": "text.tex#math"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "\\\\\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.latex"
+ }
+ },
+ "end": "\\\\\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.latex"
+ }
+ },
+ "name": "meta.math.block.latex support.class.math.block.environment.latex",
+ "patterns": [
+ {
+ "include": "text.tex#math"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.latex"
+ }
+ },
+ "match": "(\\\\)(text(s(terling|ixoldstyle|urd|e(ction|venoldstyle|rvicemark))|yen|n(ineoldstyle|umero|aira)|c(ircledP|o(py(left|right)|lonmonetary)|urrency|e(nt(oldstyle)?|lsius))|t(hree(superior|oldstyle|quarters(emdash)?)|i(ldelow|mes)|w(o(superior|oldstyle)|elveudash)|rademark)|interrobang(down)?|zerooldstyle|o(hm|ne(superior|half|oldstyle|quarter)|penbullet|rd(feminine|masculine))|d(i(scount|ed|v(orced)?)|o(ng|wnarrow|llar(oldstyle)?)|egree|agger(dbl)?|blhyphen(char)?)|uparrow|p(ilcrow|e(so|r(t(housand|enthousand)|iodcentered))|aragraph|m)|e(stimated|ightoldstyle|uro)|quotes(traight(dblbase|base)|ingle)|f(iveoldstyle|ouroldstyle|lorin|ractionsolidus)|won|l(not|ira|e(ftarrow|af)|quill|angle|brackdbl)|a(s(cii(caron|dieresis|acute|grave|macron|breve)|teriskcentered)|cutedbl)|r(ightarrow|e(cipe|ferencemark|gistered)|quill|angle|brackdbl)|g(uarani|ravedbl)|m(ho|inus|u(sicalnote)?|arried)|b(igcircle|orn|ullet|lank|a(ht|rdbl)|rokenbar)))\\b",
+ "name": "constant.character.latex"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.column-specials.begin.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.column-specials.end.latex"
+ }
+ },
+ "match": "(?:<|>)(\\{)\\$(\\})",
+ "name": "meta.column-specials.latex"
+ },
+ {
+ "include": "text.tex"
+ }
+ ],
+ "repository": {
+ "optional-arg": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arguments.optional.begin.latex"
+ },
+ "2": {
+ "name": "variable.parameter.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.optional.end.latex"
+ }
+ },
+ "match": "(\\[)([^\\[]*?)(\\])",
+ "name": "meta.parameter.optional.latex"
+ }
+ ]
+ },
+ "multiline-optional-arg-no-highlight": {
+ "begin": "\\G\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.optional.begin.latex"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.optional.end.latex"
+ }
+ },
+ "name": "meta.parameter.optional.latex",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "multiline-optional-arg": {
+ "begin": "\\G\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.optional.begin.latex"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.optional.end.latex"
+ }
+ },
+ "name": "meta.parameter.optional.latex",
+ "contentName": "variable.parameter.function.latex",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "autocites-arg": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arguments.optional.begin.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.arguments.optional.end.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.optional.begin.latex"
+ },
+ "4": {
+ "name": "punctuation.definition.arguments.optional.end.latex"
+ },
+ "5": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "6": {
+ "name": "constant.other.reference.citation.latex"
+ },
+ "7": {
+ "name": "punctuation.definition.arguments.end.latex"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#autocites-arg"
+ }
+ ]
+ }
+ },
+ "match": "(?:(\\()[^\\)]*(\\))){0,2}(?:(\\[)[^\\]]*(\\])){0,2}(\\{)([\\p{Alphabetic}\\p{Number}:.]+)(\\})(.*)"
+ }
+ ]
+ },
+ "begin-env-tokenizer": {
+ "captures": {
+ "1": {
+ "name": "support.function.be.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.latex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "4": {
+ "name": "variable.parameter.function.latex"
+ },
+ "5": {
+ "name": "punctuation.definition.arguments.end.latex"
+ },
+ "6": {
+ "name": "punctuation.definition.arguments.optional.begin.latex"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "8": {
+ "name": "punctuation.definition.arguments.optional.end.latex"
+ },
+ "9": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ },
+ "10": {
+ "name": "variable.parameter.function.latex"
+ },
+ "11": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "match": "\\s*((\\\\)(?:begin|end))(\\{)([a-zA-Z]*\\*?)(\\})(?:(\\[)(.*)(\\]))?(?:(\\{)([^{}]*)(\\}))?"
+ },
+ "definition-label": {
+ "begin": "((\\\\)label)((?:\\[[^\\[]*?\\])*)(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.label.latex"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.latex"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#optional-arg"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.arguments.begin.latex"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.latex"
+ }
+ },
+ "name": "meta.definition.label.latex",
+ "patterns": [
+ {
+ "match": "[a-zA-Z0-9\\.,:/*!^_-]",
+ "name": "variable.parameter.definition.label.latex"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/less.tmLanguage.json b/node_modules/shiki/languages/less.tmLanguage.json
new file mode 100644
index 0000000..1f265af
--- /dev/null
+++ b/node_modules/shiki/languages/less.tmLanguage.json
@@ -0,0 +1,542 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/atom/language-less/blob/master/grammars/less.cson",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/atom/language-less/commit/87d4d59e8de6796b506b81a16e1dc1fafc99d30f",
+ "name": "less",
+ "scopeName": "source.css.less",
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.class.mixin.css"
+ }
+ },
+ "match": "(\\.[_a-zA-Z][a-zA-Z0-9_-]*(?=\\())"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.class.css"
+ },
+ "2": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "4": {
+ "name": "variable.other.interpolation.less"
+ }
+ },
+ "match": "((\\.)([_a-zA-Z]|(@{[a-zA-Z0-9_-]+}))[a-zA-Z0-9_-]*)"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "entity.other.attribute-name.parent-selector.css"
+ },
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ }
+ },
+ "match": "(&)[a-zA-Z0-9_-]*"
+ },
+ {
+ "begin": "(format|local|url|attr|counter|counters)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.misc.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.css"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.css"
+ }
+ },
+ "name": "string.quoted.single.css",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.css"
+ }
+ ]
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.css"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.css"
+ }
+ },
+ "name": "string.quoted.double.css",
+ "patterns": [
+ {
+ "match": "\\\\(\\d{1,6}|.)",
+ "name": "constant.character.escape.css"
+ }
+ ]
+ },
+ {
+ "match": "[^'\") \\t]+",
+ "name": "variable.parameter.misc.css"
+ }
+ ]
+ },
+ {
+ "match": "(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\b(?!.*?(?<!@){)",
+ "name": "constant.other.rgb-value.css"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.id"
+ },
+ "2": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "4": {
+ "name": "variable.other.interpolation.less"
+ }
+ },
+ "match": "((#)([_a-zA-Z]|(@{[a-zA-Z0-9_-]+}))[a-zA-Z0-9_-]*)",
+ "name": "meta.selector.css"
+ },
+ {
+ "begin": "/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.css"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.css"
+ }
+ },
+ "name": "comment.block.css"
+ },
+ {
+ "include": "source.css#numeric-values"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.begin.entity.css"
+ },
+ "2": {
+ "name": "entity.other.attribute-name.attribute.css"
+ },
+ "3": {
+ "name": "punctuation.separator.operator.css"
+ },
+ "4": {
+ "name": "string.unquoted.attribute-value.css"
+ },
+ "5": {
+ "name": "string.quoted.double.attribute-value.css"
+ },
+ "6": {
+ "name": "punctuation.definition.string.begin.css"
+ },
+ "7": {
+ "name": "punctuation.definition.string.end.css"
+ },
+ "8": {
+ "name": "punctuation.definition.end.entity.css"
+ }
+ },
+ "match": "(?i)(\\[)\\s*(-?[_a-z\\\\[[:^ascii:]]][_a-z0-9\\-\\\\[[:^ascii:]]]*)(?:\\s*([~|^$*]?=)\\s*(?:(-?[_a-z\\\\[[:^ascii:]]][_a-z0-9\\-\\\\[[:^ascii:]]]*)|((?>(['\"])(?:[^\\\\]|\\\\.)*?(\\6)))))?\\s*(\\])",
+ "name": "meta.attribute-selector.css"
+ },
+ {
+ "begin": "((@)import\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.at-rule.import.less"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.less"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.rule.css"
+ }
+ },
+ "name": "meta.at-rule.import.css",
+ "patterns": [
+ {
+ "match": "(?<=\\(|,|\\s)\\b(reference|optional|once|multiple|less|inline)\\b(?=\\)|,)",
+ "name": "keyword.control.import.option.less"
+ },
+ {
+ "include": "#brace_round"
+ },
+ {
+ "include": "source.css#commas"
+ },
+ {
+ "include": "#strings"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.fontface.css"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "match": "^\\s*((@)font-face\\b)",
+ "name": "meta.at-rule.fontface.css"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.media.css"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.css"
+ }
+ },
+ "match": "^\\s*((@)media\\b)",
+ "name": "meta.at-rule.media.css"
+ },
+ {
+ "include": "source.css#media-features"
+ },
+ {
+ "match": "\\b(tv|tty|screen|projection|print|handheld|embossed|braille|aural|all)\\b",
+ "name": "support.constant.media-type.media.css"
+ },
+ {
+ "match": "\\b(portrait|landscape)\\b",
+ "name": "support.constant.property-value.media-property.media.css"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.less"
+ }
+ },
+ "match": "(\\.[a-zA-Z0-9_-]+)\\s*(;|\\()"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.less"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.less"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.double-slash.less"
+ }
+ ]
+ },
+ {
+ "match": "(@|\\-\\-)[\\w-]+(?=\\s*)",
+ "name": "variable.other.less",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.less"
+ }
+ }
+ },
+ {
+ "include": "#variable_interpolation"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.property-list.begin.bracket.curly.css"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.property-list.end.bracket.curly.css"
+ }
+ },
+ "name": "meta.property-list.css",
+ "patterns": [
+ {
+ "include": "source.css#pseudo-elements"
+ },
+ {
+ "include": "source.css#pseudo-classes"
+ },
+ {
+ "include": "source.css#tag-names"
+ },
+ {
+ "include": "source.css#commas"
+ },
+ {
+ "include": "#variable_interpolation"
+ },
+ {
+ "include": "source.css#property-names"
+ },
+ {
+ "include": "#property_values"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "match": "\\!\\s*important",
+ "name": "keyword.other.important.css"
+ },
+ {
+ "match": "\\*|\\/|\\-|\\+|~|=|<=|>=|<|>",
+ "name": "keyword.operator.less"
+ },
+ {
+ "match": "\\b(not|and|when)\\b",
+ "name": "keyword.control.logical.operator.less"
+ },
+ {
+ "include": "source.css#tag-names"
+ },
+ {
+ "match": "(?<![\\w-])[a-z][\\w&&[^A-Z]]*+-[\\w-&&[^A-Z]]+",
+ "name": "entity.name.tag.custom.css"
+ },
+ {
+ "include": "source.css#pseudo-elements"
+ },
+ {
+ "include": "source.css#pseudo-classes"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.property-list.begin.css"
+ },
+ "2": {
+ "name": "punctuation.section.property-list.end.css"
+ }
+ },
+ "match": "(\\{)(\\})",
+ "name": "meta.brace.curly.css"
+ },
+ {
+ "match": "\\{|\\}",
+ "name": "meta.brace.curly.css"
+ },
+ {
+ "include": "#brace_round"
+ },
+ {
+ "match": "\\[|\\]",
+ "name": "meta.brace.square.less"
+ },
+ {
+ "match": ";",
+ "name": "punctuation.terminator.rule.css"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.separator.key-value.css"
+ },
+ {
+ "match": "\\btrue\\b",
+ "name": "constant.language.boolean.less"
+ },
+ {
+ "match": "\\bdefault\\b",
+ "name": "support.function.default.less"
+ },
+ {
+ "match": "\\b(isurl|isstring|isnumber|iskeyword|iscolor)\\b",
+ "name": "support.function.type-checking.less"
+ },
+ {
+ "match": "\\b(isunit|ispixel|ispercentage|isem)\\b",
+ "name": "support.function.unit-checking.less"
+ },
+ {
+ "include": "source.css#property-keywords"
+ },
+ {
+ "include": "source.css#color-keywords"
+ },
+ {
+ "include": "source.css#commas"
+ },
+ {
+ "include": "#less_builtin_functions"
+ },
+ {
+ "include": "source.css#functions"
+ }
+ ],
+ "repository": {
+ "variable_interpolation": {
+ "match": "@{[a-zA-Z0-9_-]+}",
+ "name": "variable.other.interpolation.less"
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.css"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.css"
+ }
+ },
+ "name": "string.quoted.double.css",
+ "patterns": [
+ {
+ "match": "\\\\([0-9A-Fa-f]{1,6}|.)",
+ "name": "constant.character.escape.css"
+ },
+ {
+ "include": "#variable_interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.css"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.css"
+ }
+ },
+ "name": "string.quoted.single.css",
+ "patterns": [
+ {
+ "match": "\\\\([0-9A-Fa-f]{1,6}|.)",
+ "name": "constant.character.escape.css"
+ },
+ {
+ "include": "#variable_interpolation"
+ }
+ ]
+ }
+ ]
+ },
+ "brace_round": {
+ "match": "\\(|\\)",
+ "name": "meta.brace.round.css"
+ },
+ "property_values": {
+ "begin": "(?<!&)(:)\\s*(?!(\\s*{))(?!.*(?<!@){)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.key-value.css"
+ }
+ },
+ "end": "\\s*(;)|\\s*(?=})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.rule.css"
+ }
+ },
+ "contentName": "meta.property-value.css",
+ "patterns": [
+ {
+ "begin": "url(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.css"
+ }
+ },
+ "name": "support.function.any-method.builtin.url.css",
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "match": "(\\b|\\.{0,2}/)[^)]*\\b",
+ "name": "string.url.css"
+ }
+ ]
+ },
+ {
+ "include": "source.css#property-keywords"
+ },
+ {
+ "include": "source.css#color-keywords"
+ },
+ {
+ "include": "source.css#commas"
+ },
+ {
+ "include": "#less_builtin_functions"
+ },
+ {
+ "include": "source.css#functions"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "less_builtin_functions": {
+ "match": "\\b(abs|acos|alpha|argb|asin|atan|average|blue|calc|ceil|color|contrast|convert|convert|cos|darken|data-uri|desaturate|difference|e|escape|exclusion|extract|fade|fadein|fadeout|floor|format|green|greyscale|hardlight|hsl|hsla|hsv|hsva|hsvhue|hsvsaturation|hsvvalue|hue|length|lighten|lightness|luma|max|min|mix|mod|multiply|negation|overlay|percentage|pi|pow|red|replace|round|saturate|saturation|screen|sin|softlight|spin|sqrt|tan|unit)\\b",
+ "name": "support.function.any-method.builtin.less"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/liquid.tmLanguage.json b/node_modules/shiki/languages/liquid.tmLanguage.json
new file mode 100644
index 0000000..45fbf6d
--- /dev/null
+++ b/node_modules/shiki/languages/liquid.tmLanguage.json
@@ -0,0 +1,987 @@
+{
+ "name": "liquid",
+ "scopeName": "text.html.liquid",
+ "fileTypes": ["liquid"],
+ "foldingStartMarker": "(?x)\n{%\n -?\n \\s*\n (capture|case|comment|for|form|if|javascript|paginate|schema|style)\n [^(%})]+\n%}\n",
+ "foldingStopMarker": "(?x)\n{%\n \\s*\n (endcapture|endcase|endcomment|endfor|endform|endif|endjavascript|endpaginate|endschema|endstyle)\n [^(%})]+\n%}\n",
+ "injections": {
+ "L:meta.embedded.block.js, L:meta.embedded.block.css, L:meta.embedded.block.html, L:string.quoted": {
+ "patterns": [
+ {
+ "include": "#injection"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#core"
+ }
+ ],
+ "repository": {
+ "core": {
+ "patterns": [
+ {
+ "include": "#raw_tag"
+ },
+ {
+ "include": "#comment_block"
+ },
+ {
+ "include": "#style_codefence"
+ },
+ {
+ "include": "#stylesheet_codefence"
+ },
+ {
+ "include": "#json_codefence"
+ },
+ {
+ "include": "#javascript_codefence"
+ },
+ {
+ "include": "#object"
+ },
+ {
+ "include": "#tag"
+ },
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ },
+ "injection": {
+ "patterns": [
+ {
+ "include": "#raw_tag"
+ },
+ {
+ "include": "#comment_block"
+ },
+ {
+ "include": "#object"
+ },
+ {
+ "include": "#tag_injection"
+ }
+ ]
+ },
+ "raw_tag": {
+ "begin": "{%-?\\s*(raw)\\s*-?%}",
+ "end": "{%-?\\s*(endraw)\\s*-?%}",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.liquid"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.tag.liquid"
+ }
+ },
+ "name": "meta.entity.tag.raw.liquid",
+ "contentName": "string.unquoted.liquid",
+ "patterns": [
+ {
+ "match": "(.(?!{%-?\\s*endraw\\s*-?%}))*."
+ }
+ ]
+ },
+ "comment_block": {
+ "begin": "{%-?\\s*comment\\s*-?%}",
+ "end": "{%-?\\s*endcomment\\s*-?%}",
+ "name": "comment.block.liquid",
+ "patterns": [
+ {
+ "include": "#comment_block"
+ },
+ {
+ "match": "(.(?!{%-?\\s*(comment|endcomment)\\s*-?%}))*."
+ }
+ ]
+ },
+ "style_codefence": {
+ "begin": "({%-?)\\s*(style)\\s*(-?%})",
+ "end": "({%-?)\\s*(endstyle)\\s*(-?%})",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.style.start.liquid"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.liquid"
+ },
+ "2": {
+ "name": "entity.name.tag.style.liquid"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.begin.liquid"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.style.end.liquid"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.end.liquid"
+ },
+ "2": {
+ "name": "entity.name.tag.style.liquid"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.liquid"
+ }
+ },
+ "name": "meta.block.style.liquid",
+ "contentName": "meta.embedded.block.css",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ },
+ "stylesheet_codefence": {
+ "begin": "({%-?)\\s*(stylesheet)\\s*(-?%})",
+ "end": "({%-?)\\s*(endstylesheet)\\s*(-?%})",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.style.start.liquid"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.liquid"
+ },
+ "2": {
+ "name": "entity.name.tag.style.liquid"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.begin.liquid"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.style.end.liquid"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.end.liquid"
+ },
+ "2": {
+ "name": "entity.name.tag.style.liquid"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.liquid"
+ }
+ },
+ "name": "meta.block.style.liquid",
+ "contentName": "meta.embedded.block.css",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ },
+ "json_codefence": {
+ "begin": "({%-?)\\s*(schema)\\s*(-?%})",
+ "end": "({%-?)\\s*(endschema)\\s*(-?%})",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.schema.start.liquid"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.liquid"
+ },
+ "2": {
+ "name": "entity.name.tag.schema.liquid"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.begin.liquid"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.schema.end.liquid"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.end.liquid"
+ },
+ "2": {
+ "name": "entity.name.tag.schema.liquid"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.liquid"
+ }
+ },
+ "name": "meta.block.schema.liquid",
+ "contentName": "meta.embedded.block.json",
+ "patterns": [
+ {
+ "include": "source.json"
+ }
+ ]
+ },
+ "javascript_codefence": {
+ "begin": "({%-?)\\s*(javascript)\\s*(-?%})",
+ "end": "({%-?)\\s*(endjavascript)\\s*(-?%})",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.javascript.start.liquid"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.begin.liquid"
+ },
+ "2": {
+ "name": "entity.name.tag.javascript.liquid"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.begin.liquid"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "meta.tag.metadata.javascript.end.liquid"
+ },
+ "1": {
+ "name": "punctuation.definition.tag.end.liquid"
+ },
+ "2": {
+ "name": "entity.name.tag.javascript.liquid"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.liquid"
+ }
+ },
+ "name": "meta.block.javascript.liquid",
+ "contentName": "meta.embedded.block.js",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "tag": {
+ "begin": "(?<!comment %})(?<!comment -%})(?<!comment%})(?<!comment-%})(?<!raw %})(?<!raw -%})(?<!raw%})(?<!raw-%}){%-?",
+ "end": "-?%}",
+ "name": "meta.tag.liquid",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.begin.liquid"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.liquid"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag_body"
+ }
+ ]
+ },
+ "tag_injection": {
+ "begin": "(?<!comment %})(?<!comment -%})(?<!comment%})(?<!comment-%})(?<!raw %})(?<!raw -%})(?<!raw%})(?<!raw-%}){%-?(?!-?\\s*(endstyle|endjavascript|endcomment|endraw))",
+ "end": "-?%}",
+ "name": "meta.tag.liquid",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.liquid"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.liquid"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag_body"
+ }
+ ]
+ },
+ "tag_body": {
+ "patterns": [
+ {
+ "include": "#tag_liquid"
+ },
+ {
+ "include": "#tag_assign"
+ },
+ {
+ "include": "#tag_comment_inline"
+ },
+ {
+ "include": "#tag_case"
+ },
+ {
+ "include": "#tag_conditional"
+ },
+ {
+ "include": "#tag_for"
+ },
+ {
+ "include": "#tag_paginate"
+ },
+ {
+ "include": "#tag_render"
+ },
+ {
+ "include": "#tag_tablerow"
+ },
+ {
+ "include": "#tag_expression"
+ }
+ ]
+ },
+ "tag_liquid": {
+ "name": "meta.entity.tag.liquid.liquid",
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(liquid)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.liquid.liquid"
+ }
+ },
+ "end": "(?=%})",
+ "patterns": [
+ {
+ "include": "#tag_comment_block_liquid"
+ },
+ {
+ "include": "#tag_comment_inline_liquid"
+ },
+ {
+ "include": "#tag_assign_liquid"
+ },
+ {
+ "include": "#tag_case_liquid"
+ },
+ {
+ "include": "#tag_conditional_liquid"
+ },
+ {
+ "include": "#tag_for_liquid"
+ },
+ {
+ "include": "#tag_paginate_liquid"
+ },
+ {
+ "include": "#tag_render_liquid"
+ },
+ {
+ "include": "#tag_tablerow_liquid"
+ },
+ {
+ "include": "#tag_expression_liquid"
+ }
+ ]
+ },
+ "tag_comment_block_liquid": {
+ "name": "comment.block.liquid",
+ "begin": "(?:^\\s*)(comment)\\b",
+ "end": "(?:^\\s*)(endcomment)\\b",
+ "patterns": [
+ {
+ "include": "#tag_comment_block_liquid"
+ },
+ {
+ "match": "(?:^\\s*)(?!(comment|endcomment)).*"
+ }
+ ]
+ },
+ "tag_comment_inline": {
+ "name": "comment.line.number-sign.liquid",
+ "begin": "#",
+ "end": "(?=%})"
+ },
+ "tag_comment_inline_liquid": {
+ "name": "comment.line.number-sign.liquid",
+ "begin": "(?:^\\s*)#.*",
+ "end": "$"
+ },
+ "tag_tablerow": {
+ "name": "meta.entity.tag.tablerow.liquid",
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(tablerow)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.tablerow.liquid"
+ }
+ },
+ "end": "(?=%})",
+ "patterns": [
+ {
+ "include": "#tag_tablerow_body"
+ }
+ ]
+ },
+ "tag_tablerow_liquid": {
+ "name": "meta.entity.tag.tablerow.liquid",
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(tablerow)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.tablerow.liquid"
+ }
+ },
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#tag_tablerow_body"
+ }
+ ]
+ },
+ "tag_tablerow_body": {
+ "patterns": [
+ {
+ "match": "\\b(in)\\b",
+ "name": "keyword.control.liquid"
+ },
+ {
+ "match": "\\b(cols|offset|limit):",
+ "name": "keyword.control.liquid"
+ },
+ {
+ "include": "#value_expression"
+ }
+ ]
+ },
+ "tag_for": {
+ "name": "meta.entity.tag.for.liquid",
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(for)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.for.liquid"
+ }
+ },
+ "end": "(?=%})",
+ "patterns": [
+ {
+ "include": "#tag_for_body"
+ }
+ ]
+ },
+ "tag_for_liquid": {
+ "name": "meta.entity.tag.for.liquid",
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(for)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.for.liquid"
+ }
+ },
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#tag_for_body"
+ }
+ ]
+ },
+ "tag_for_body": {
+ "patterns": [
+ {
+ "match": "\\b(in|reversed)\\b",
+ "name": "keyword.control.liquid"
+ },
+ {
+ "match": "\\b(offset|limit):",
+ "name": "keyword.control.liquid"
+ },
+ {
+ "include": "#value_expression"
+ }
+ ]
+ },
+ "tag_assign": {
+ "name": "meta.entity.tag.liquid",
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(assign|echo)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.liquid"
+ }
+ },
+ "end": "(?=%})",
+ "patterns": [
+ {
+ "include": "#filter"
+ },
+ {
+ "include": "#attribute"
+ },
+ {
+ "include": "#value_expression"
+ }
+ ]
+ },
+ "tag_assign_liquid": {
+ "name": "meta.entity.tag.liquid",
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(assign|echo)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.liquid"
+ }
+ },
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#filter"
+ },
+ {
+ "include": "#attribute_liquid"
+ },
+ {
+ "include": "#value_expression"
+ }
+ ]
+ },
+ "tag_render": {
+ "name": "meta.entity.tag.render.liquid",
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(render)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.render.liquid"
+ }
+ },
+ "end": "(?=%})",
+ "patterns": [
+ {
+ "include": "#tag_render_special_keywords"
+ },
+ {
+ "include": "#attribute"
+ },
+ {
+ "include": "#value_expression"
+ }
+ ]
+ },
+ "tag_render_liquid": {
+ "name": "meta.entity.tag.render.liquid",
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(render)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.render.liquid"
+ }
+ },
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#tag_render_special_keywords"
+ },
+ {
+ "include": "#attribute_liquid"
+ },
+ {
+ "include": "#value_expression"
+ }
+ ]
+ },
+ "tag_render_special_keywords": {
+ "match": "\\b(with|as|for)\\b",
+ "name": "keyword.control.other.liquid"
+ },
+ "tag_paginate": {
+ "name": "meta.entity.tag.paginate.liquid",
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(paginate)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.paginate.liquid"
+ }
+ },
+ "end": "(?=%})",
+ "patterns": [
+ {
+ "include": "#tag_paginate_body"
+ }
+ ]
+ },
+ "tag_paginate_liquid": {
+ "name": "meta.entity.tag.paginate.liquid",
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(paginate)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.paginate.liquid"
+ }
+ },
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#tag_paginate_body"
+ }
+ ]
+ },
+ "tag_paginate_body": {
+ "patterns": [
+ {
+ "match": "\\b(by)\\b",
+ "name": "keyword.control.liquid"
+ },
+ {
+ "include": "#value_expression"
+ }
+ ]
+ },
+ "tag_conditional": {
+ "name": "meta.entity.tag.conditional.liquid",
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(if|elsif|unless)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.conditional.liquid"
+ }
+ },
+ "end": "(?=%})",
+ "patterns": [
+ {
+ "include": "#value_expression"
+ }
+ ]
+ },
+ "tag_conditional_liquid": {
+ "name": "meta.entity.tag.conditional.liquid",
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(if|elsif|unless)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.conditional.liquid"
+ }
+ },
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#value_expression"
+ }
+ ]
+ },
+ "tag_case": {
+ "name": "meta.entity.tag.case.liquid",
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(case|when)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.case.liquid"
+ }
+ },
+ "end": "(?=%})",
+ "patterns": [
+ {
+ "include": "#value_expression"
+ }
+ ]
+ },
+ "tag_case_liquid": {
+ "name": "meta.entity.tag.case.liquid",
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(case|when)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.case.liquid"
+ }
+ },
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#value_expression"
+ }
+ ]
+ },
+ "tag_expression_without_arguments": {
+ "patterns": [
+ {
+ "match": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(endunless|endif)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.conditional.liquid"
+ }
+ }
+ },
+ {
+ "match": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(endfor|endtablerow|endpaginate)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.loop.liquid"
+ }
+ }
+ },
+ {
+ "match": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(endcase)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.case.liquid"
+ }
+ }
+ },
+ {
+ "match": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(capture|case|comment|for|form|if|javascript|paginate|schema|style)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.other.liquid"
+ }
+ }
+ },
+ {
+ "match": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(endcapture|endcase|endcomment|endfor|endform|endif|endjavascript|endpaginate|endschema|endstyle)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.other.liquid"
+ }
+ }
+ },
+ {
+ "match": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(else|break|continue)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.other.liquid"
+ }
+ }
+ }
+ ]
+ },
+ "tag_expression": {
+ "patterns": [
+ {
+ "include": "#tag_expression_without_arguments"
+ },
+ {
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(\\w+)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.liquid"
+ }
+ },
+ "end": "(?=%})",
+ "name": "meta.entity.tag.liquid",
+ "patterns": [
+ {
+ "include": "#value_expression"
+ }
+ ]
+ }
+ ]
+ },
+ "tag_expression_liquid": {
+ "patterns": [
+ {
+ "include": "#tag_expression_without_arguments"
+ },
+ {
+ "begin": "(?:(?:(?<={%)|(?<={%-)|^)\\s*)(\\w+)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.liquid"
+ }
+ },
+ "end": "$",
+ "name": "meta.entity.tag.liquid",
+ "patterns": [
+ {
+ "include": "#value_expression"
+ }
+ ]
+ }
+ ]
+ },
+ "object": {
+ "begin": "(?<!comment %})(?<!comment -%})(?<!comment%})(?<!comment-%})(?<!raw %})(?<!raw -%})(?<!raw%})(?<!raw-%}){{-?",
+ "end": "-?}}",
+ "name": "meta.object.liquid",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.begin.liquid"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.liquid"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#filter"
+ },
+ {
+ "include": "#attribute"
+ },
+ {
+ "include": "#value_expression"
+ }
+ ]
+ },
+ "invalid_range": {
+ "match": "\\((.(?!\\.\\.))+\\)",
+ "name": "invalid.illegal.range.liquid"
+ },
+ "range": {
+ "begin": "\\(",
+ "end": "\\)",
+ "name": "meta.range.liquid",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.liquid"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.liquid"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\.\\.",
+ "name": "punctuation.range.liquid"
+ },
+ {
+ "include": "#variable_lookup"
+ },
+ {
+ "include": "#number"
+ }
+ ]
+ },
+ "number": {
+ "match": "((-|\\+)\\s*)?[0-9]+(\\.[0-9]+)?",
+ "name": "constant.numeric.liquid"
+ },
+ "string": {
+ "patterns": [
+ {
+ "include": "#string_single"
+ },
+ {
+ "include": "#string_double"
+ }
+ ]
+ },
+ "string_double": {
+ "begin": "\"",
+ "end": "\"",
+ "name": "string.quoted.double.liquid"
+ },
+ "string_single": {
+ "begin": "'",
+ "end": "'",
+ "name": "string.quoted.single.liquid"
+ },
+ "operator": {
+ "match": "(?:(?<=\\s)|\\b)(\\=\\=|!\\=|\\>|\\<|\\>\\=|\\<\\=|or|and|contains)(?:(?=\\s)|\\b)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.expression.liquid"
+ }
+ }
+ },
+ "language_constant": {
+ "match": "\\b(false|true|nil|blank)\\b|empty(?!\\?)",
+ "name": "constant.language.liquid"
+ },
+ "attribute": {
+ "begin": "\\w+:",
+ "end": "(?=,|%}|}}|\\|)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.other.attribute-name.liquid"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#value_expression"
+ }
+ ]
+ },
+ "attribute_liquid": {
+ "begin": "\\w+:",
+ "end": "(?=,|\\|)|$",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.other.attribute-name.liquid"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#value_expression"
+ }
+ ]
+ },
+ "filter": {
+ "match": "\\|\\s*((?![\\.0-9])[a-zA-Z0-9_-]+\\:?)\\s*",
+ "captures": {
+ "1": {
+ "name": "support.function.liquid"
+ }
+ }
+ },
+ "value_expression": {
+ "patterns": [
+ {
+ "match": "(\\[)(\\|)(?=[^\\]]*)(?=\\])",
+ "captures": {
+ "2": {
+ "name": "invalid.illegal.filter.liquid"
+ },
+ "3": {
+ "name": "invalid.illegal.filter.liquid"
+ }
+ }
+ },
+ {
+ "match": "(?<=\\s)(\\+|\\-|\\/|\\*)(?=\\s)",
+ "name": "invalid.illegal.filter.liquid"
+ },
+ {
+ "include": "#language_constant"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#invalid_range"
+ },
+ {
+ "include": "#range"
+ },
+ {
+ "include": "#number"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#variable_lookup"
+ }
+ ]
+ },
+ "variable_lookup": {
+ "patterns": [
+ {
+ "match": "\\b(additional_checkout_buttons|address|all_country_option_tags|all_products|article|articles|block|blog|blogs|canonical_url|cart|checkout|collection|collections|comment|content_for_additional_checkout_buttons|content_for_header|content_for_index|content_for_layout|country_option_tags|currency|current_page|current_tags|customer|customer_address|discount_allocation|discount_application|external_video|font|forloop|form|fulfillment|gift_card|handle|image|images|line_item|link|linklist|linklists|location|localization|metafield|model|model_source|order|page|page_description|page_image|page_title|pages|paginate|part|policy|powered_by_link|predictive_search|product|product_option|product_variant|recommendations|request|routes|script|scripts|search|section|selling_plan|selling_plan_allocation|selling_plan_group|settings|shipping_method|shop|shop_locale|store_availability|tablerow|tax_line|template|theme|transaction|unit_price_measurement|variant|video|video_source)\\b",
+ "name": "variable.language.liquid"
+ },
+ {
+ "match": "((?<=\\w\\:\\s)\\w+)",
+ "name": "variable.parameter.liquid"
+ },
+ {
+ "begin": "(?<=\\w)\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.brackets.begin.liquid"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.brackets.end.liquid"
+ }
+ },
+ "name": "meta.brackets.liquid",
+ "patterns": [
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "match": "(?<=(\\w|\\])\\.)([-\\w]+\\??)",
+ "name": "variable.other.member.liquid"
+ },
+ {
+ "match": "(?<=\\w)\\.(?=\\w)",
+ "name": "punctuation.accessor.liquid"
+ },
+ {
+ "match": "(?i)[a-z_](\\w|(?:-(?!\\}\\})))*",
+ "name": "variable.other.liquid"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/lisp.tmLanguage.json b/node_modules/shiki/languages/lisp.tmLanguage.json
new file mode 100644
index 0000000..e7ca6be
--- /dev/null
+++ b/node_modules/shiki/languages/lisp.tmLanguage.json
@@ -0,0 +1,117 @@
+{
+ "comment": "",
+ "fileTypes": ["lisp", "cl", "l", "mud", "el"],
+ "foldingStartMarker": "\\(",
+ "foldingStopMarker": "\\)",
+ "keyEquivalent": "^~L",
+ "name": "lisp",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.lisp"
+ }
+ },
+ "match": "(;).*$\\n?",
+ "name": "comment.line.semicolon.lisp"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.function-type.lisp"
+ },
+ "2": {
+ "name": "entity.name.function.lisp"
+ }
+ },
+ "match": "(?:\\()((?i:defgeneric|define-compiler-macro|define-method-combination|define-modify-macro|define-setf-expander|defmacro|defmethod|defsetf|defun||define-\\S+))\\s+((?:\\w|[+\\-<>/*&=.?!$%:@\\[\\]^{}~#|])+)",
+ "name": "meta.function.lisp"
+ },
+ {
+ "match": "(?<=\\s)(?i:&allow-other-keys|&aux|&body|&environment|&key|&optional|&rest|&whole)(?=\\s+)",
+ "name": "meta.function-parameters.lisp"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.function-type.lisp"
+ },
+ "2": {
+ "name": "entity.name.type.lisp"
+ }
+ },
+ "match": "(?:\\()((?i:deftype|defstruct|define-condition|defpackage|defclass))\\s+((?:\\w|[+\\-<>/*&=.?!$%:@\\[\\]^{}~#|])+)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.function-type.lisp"
+ },
+ "2": {
+ "name": "entity.name.variable.lisp"
+ }
+ },
+ "match": "(?:\\()((?i:defvar|defconstant|defparameter|define-symbol-macro))\\s+((?:\\w|[+\\-<>/*&=.?!$%:@\\[\\]^{}~#|])+)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.lisp"
+ }
+ },
+ "match": "(#)(\\w|[\\\\+-=<>'\"&#])+",
+ "name": "constant.character.lisp"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.lisp"
+ },
+ "3": {
+ "name": "punctuation.definition.variable.lisp"
+ }
+ },
+ "match": "(?<=^|\\s|[()])(\\*)(\\S*)(\\*)(?=$|\\s|[()])",
+ "name": "variable.other.global.lisp"
+ },
+ {
+ "match": "(?<=^|\\s|[()]):(\\w|[+\\-<>/*&=.?!$%:@\\[\\]^{}~#|])*",
+ "name": "keyword.constant.lisp"
+ },
+ {
+ "match": "(?<=\\()(?i:\\*|\\*\\*|\\*\\*\\*|\\+|\\+\\+|\\+\\+\\+|\\-|/|//|///|/=|1\\+|1\\-|<|<=|=|>|>=|abort|abs|acons|acos|acosh|add-method|adjoin|adjust-array|adjustable-array-p|allocate-instance|alpha-char-p|alphanumericp|and|append|apply|apropos|apropos-list|aref|arithmetic-error|arithmetic-error-operands|arithmetic-error-operation|array|array-dimension|array-dimension-limit|array-dimensions|array-displacement|array-element-type|array-has-fill-pointer-p|array-in-bounds-p|array-rank|array-rank-limit|array-row-major-index|array-total-size|array-total-size-limit|arrayp|ash|asin|asinh|assert|assoc|assoc-if|assoc-if-not|atan|atanh|atom|base-char|base-string|bignum|bit|bit-and|bit-andc1|bit-andc2|bit-eqv|bit-ior|bit-nand|bit-nor|bit-not|bit-orc1|bit-orc2|bit-vector|bit-vector-p|bit-xor|block|boole|boole-1|boole-2|boole-and|boole-andc1|boole-andc2|boole-c1|boole-c2|boole-clr|boole-eqv|boole-ior|boole-nand|boole-nor|boole-orc1|boole-orc2|boole-set|boole-xor|boolean|both-case-p|boundp|break|broadcast-stream|broadcast-stream-streams|built-in-class|butlast|byte|byte-position|byte-size|caaaar|caaadr|caaar|caadar|caaddr|caadr|caar|cadaar|cadadr|cadar|caddar|cadddr|caddr|cadr|call-arguments-limit|call-method|call-next-method|car|case|catch|ccase|cdaaar|cdaadr|cdaar|cdadar|cdaddr|cdadr|cdar|cddaar|cddadr|cddar|cdddar|cddddr|cdddr|cddr|cdr|ceiling|cell-error|cell-error-name|cerror|change-class|char|char-code|char-code-limit|char-downcase|char-equal|char-greaterp|char-int|char-lessp|char-name|char-not-equal|char-not-greaterp|char-not-lessp|char-upcase|char/=|char<|char<=|char=|char>|char>=|character|characterp|check-type|cis|class|class-name|class-of|clear-input|clear-output|close|clrhash|code-char|coerce|compilation-speed|compile|compile-file|compile-file-pathname|compiled-function|compiled-function-p|compiler-macro|compiler-macro-function|complement|complex|complexp|compute-applicable-methods|compute-restarts|concatenate|concatenated-stream|concatenated-stream-streams|cond|condition|conjugate|cons|consp|constantly|constantp|continue|control-error|copy-alist|copy-list|copy-pprint-dispatch|copy-readtable|copy-seq|copy-structure|copy-symbol|copy-tree|cos|cosh|count|count-if|count-if-not|ctypecase|debug|decf|declaim|declaration|declare|decode-float|decode-universal-time|defclass|defconstant|defgeneric|define-compiler-macro|define-condition|define-method-combination|define-modify-macro|define-setf-expander|define-symbol-macro|defmacro|defmethod|defpackage|defparameter|defsetf|defstruct|deftype|defun|defvar|delete|delete-duplicates|delete-file|delete-if|delete-if-not|delete-package|denominator|deposit-field|describe|describe-object|destructuring-bind|digit-char|digit-char-p|directory|directory-namestring|disassemble|division-by-zero|do|do\\*|do-all-symbols|do-external-symbols|do-symbols|documentation|dolist|dotimes|double-float|double-float-epsilon|double-float-negative-epsilon|dpb|dribble|dynamic-extent|ecase|echo-stream|echo-stream-input-stream|echo-stream-output-stream|ed|eighth|elt|encode-universal-time|end-of-file|endp|enough-namestring|ensure-directories-exist|ensure-generic-function|eq|eql|equal|equalp|error|etypecase|eval|eval-when|evenp|every|exp|export|expt|extended-char|fboundp|fceiling|fdefinition|ffloor|fifth|file-author|file-error|file-error-pathname|file-length|file-namestring|file-position|file-stream|file-string-length|file-write-date|fill|fill-pointer|find|find-all-symbols|find-class|find-if|find-if-not|find-method|find-package|find-restart|find-symbol|finish-output|first|fixnum|flet|float|float-digits|float-precision|float-radix|float-sign|floating-point-inexact|floating-point-invalid-operation|floating-point-overflow|floating-point-underflow|floatp|floor|fmakunbound|force-output|format|formatter|fourth|fresh-line|fround|ftruncate|ftype|funcall|function|function-keywords|function-lambda-expression|functionp|gcd|generic-function|gensym|gentemp|get|get-decoded-time|get-dispatch-macro-character|get-internal-real-time|get-internal-run-time|get-macro-character|get-output-stream-string|get-properties|get-setf-expansion|get-universal-time|getf|gethash|go|graphic-char-p|handler-bind|handler-case|hash-table|hash-table-count|hash-table-p|hash-table-rehash-size|hash-table-rehash-threshold|hash-table-size|hash-table-test|host-namestring|identity|if|ignorable|ignore|ignore-errors|imagpart|import|in-package|incf|initialize-instance|inline|input-stream-p|inspect|integer|integer-decode-float|integer-length|integerp|interactive-stream-p|intern|internal-time-units-per-second|intersection|invalid-method-error|invoke-debugger|invoke-restart|invoke-restart-interactively|isqrt|keyword|keywordp|labels|lambda|lambda-list-keywords|lambda-parameters-limit|last|lcm|ldb|ldb-test|ldiff|least-negative-double-float|least-negative-long-float|least-negative-normalized-double-float|least-negative-normalized-long-float|least-negative-normalized-short-float|least-negative-normalized-single-float|least-negative-short-float|least-negative-single-float|least-positive-double-float|least-positive-long-float|least-positive-normalized-double-float|least-positive-normalized-long-float|least-positive-normalized-short-float|least-positive-normalized-single-float|least-positive-short-float|least-positive-single-float|length|let|let\\*|lisp-implementation-type|lisp-implementation-version|list|list\\*|list-all-packages|list-length|listen|listp|load|load-logical-pathname-translations|load-time-value|locally|log|logand|logandc1|logandc2|logbitp|logcount|logeqv|logical-pathname|logical-pathname-translations|logior|lognand|lognor|lognot|logorc1|logorc2|logtest|logxor|long-float|long-float-epsilon|long-float-negative-epsilon|long-site-name|loop|loop-finish|lower-case-p|machine-instance|machine-type|machine-version|macro-function|macroexpand|macroexpand-1|macrolet|make-array|make-broadcast-stream|make-concatenated-stream|make-condition|make-dispatch-macro-character|make-echo-stream|make-hash-table|make-instance|make-instances-obsolete|make-list|make-load-form|make-load-form-saving-slots|make-method|make-package|make-pathname|make-random-state|make-sequence|make-string|make-string-input-stream|make-string-output-stream|make-symbol|make-synonym-stream|make-two-way-stream|makunbound|map|map-into|mapc|mapcan|mapcar|mapcon|maphash|mapl|maplist|mask-field|max|member|member-if|member-if-not|merge|merge-pathnames|method|method-combination|method-combination-error|method-qualifiers|min|minusp|mismatch|mod|most-negative-double-float|most-negative-fixnum|most-negative-long-float|most-negative-short-float|most-negative-single-float|most-positive-double-float|most-positive-fixnum|most-positive-long-float|most-positive-short-float|most-positive-single-float|muffle-warning|multiple-value-bind|multiple-value-call|multiple-value-list|multiple-value-prog1|multiple-value-setq|multiple-values-limit|name-char|namestring|nbutlast|nconc|next-method-p|nil|nintersection|ninth|no-applicable-method|no-next-method|not|notany|notevery|notinline|nreconc|nreverse|nset-difference|nset-exclusive-or|nstring-capitalize|nstring-downcase|nstring-upcase|nsublis|nsubst|nsubst-if|nsubst-if-not|nsubstitute|nsubstitute-if|nsubstitute-if-not|nth|nth-value|nthcdr|null|number|numberp|numerator|nunion|oddp|open|open-stream-p|optimize|or|otherwise|output-stream-p|package|package-error|package-error-package|package-name|package-nicknames|package-shadowing-symbols|package-use-list|package-used-by-list|packagep|pairlis|parse-error|parse-integer|parse-namestring|pathname|pathname-device|pathname-directory|pathname-host|pathname-match-p|pathname-name|pathname-type|pathname-version|pathnamep|peek-char|phase|pi|plusp|pop|position|position-if|position-if-not|pprint|pprint-dispatch|pprint-exit-if-list-exhausted|pprint-fill|pprint-indent|pprint-linear|pprint-logical-block|pprint-newline|pprint-pop|pprint-tab|pprint-tabular|prin1|prin1-to-string|princ|princ-to-string|print|print-not-readable|print-not-readable-object|print-object|print-unreadable-object|probe-file|proclaim|prog|prog\\*|prog1|prog2|progn|program-error|progv|provide|psetf|psetq|push|pushnew|quote|random|random-state|random-state-p|rassoc|rassoc-if|rassoc-if-not|ratio|rational|rationalize|rationalp|read|read-byte|read-char|read-char-no-hang|read-delimited-list|read-from-string|read-line|read-preserving-whitespace|read-sequence|reader-error|readtable|readtable-case|readtablep|real|realp|realpart|reduce|reinitialize-instance|rem|remf|remhash|remove|remove-duplicates|remove-if|remove-if-not|remove-method|remprop|rename-file|rename-package|replace|require|rest|restart|restart-bind|restart-case|restart-name|return|return-from|revappend|reverse|room|rotatef|round|row-major-aref|rplaca|rplacd|safety|satisfies|sbit|scale-float|schar|search|second|sequence|serious-condition|set|set-difference|set-dispatch-macro-character|set-exclusive-or|set-macro-character|set-pprint-dispatch|set-syntax-from-char|setf|setq|seventh|shadow|shadowing-import|shared-initialize|shiftf|short-float|short-float-epsilon|short-float-negative-epsilon|short-site-name|signal|signed-byte|signum|simple-array|simple-base-string|simple-bit-vector|simple-bit-vector-p|simple-condition|simple-condition-format-arguments|simple-condition-format-control|simple-error|simple-string|simple-string-p|simple-type-error|simple-vector|simple-vector-p|simple-warning|sin|single-float|single-float-epsilon|single-float-negative-epsilon|sinh|sixth|sleep|slot-boundp|slot-exists-p|slot-makunbound|slot-missing|slot-unbound|slot-value|software-type|software-version|some|sort|space|special|special-operator-p|speed|sqrt|stable-sort|standard|standard-char|standard-char-p|standard-class|standard-generic-function|standard-method|standard-object|step|storage-condition|store-value|stream|stream-element-type|stream-error|stream-error-stream|stream-external-format|streamp|string|string-capitalize|string-downcase|string-equal|string-greaterp|string-left-trim|string-lessp|string-not-equal|string-not-greaterp|string-not-lessp|string-right-trim|string-stream|string-trim|string-upcase|string/=|string<|string<=|string=|string>|string>=|stringp|structure|structure-class|structure-object|style-warning|sublis|subseq|subsetp|subst|subst-if|subst-if-not|substitute|substitute-if|substitute-if-not|subtypep|svref|sxhash|symbol|symbol-function|symbol-macrolet|symbol-name|symbol-package|symbol-plist|symbol-value|symbolp|synonym-stream|synonym-stream-symbol|t|tagbody|tailp|tan|tanh|tenth|terpri|the|third|throw|time|trace|translate-logical-pathname|translate-pathname|tree-equal|truename|truncate|two-way-stream|two-way-stream-input-stream|two-way-stream-output-stream|type|type-error|type-error-datum|type-error-expected-type|type-of|typecase|typep|unbound-slot|unbound-slot-instance|unbound-variable|undefined-function|unexport|unintern|union|unless|unread-char|unsigned-byte|untrace|unuse-package|unwind-protect|update-instance-for-different-class|update-instance-for-redefined-class|upgraded-array-element-type|upgraded-complex-part-type|upper-case-p|use-package|use-value|user-homedir-pathname|values|values-list|variable|vector|vector-pop|vector-push|vector-push-extend|vectorp|warn|warning|when|wild-pathname-p|with-accessors|with-compilation-unit|with-condition-restarts|with-hash-table-iterator|with-input-from-string|with-open-file|with-open-stream|with-output-to-string|with-package-iterator|with-simple-restart|with-slots|with-standard-io-syntax|write|write-byte|write-char|write-line|write-sequence|write-string|write-to-string|y-or-n-p|yes-or-no-p|zerop|with-\\S+)(?=\\s+)",
+ "name": "keyword.control.lisp"
+ },
+ {
+ "match": "(?<=^|\\s|[()])(?i:nil|t)(?=$|\\s|[()])",
+ "name": "constant.language.lisp"
+ },
+ {
+ "match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f|ll|LL|ull|ULL)?\\b",
+ "name": "constant.numeric.lisp"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.lisp"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.lisp"
+ }
+ },
+ "name": "string.quoted.double.lisp",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.lisp"
+ }
+ ]
+ }
+ ],
+ "scopeName": "source.lisp",
+ "uuid": "00D451C9-6B1D-11D9-8DFA-000D93589AF6"
+}
diff --git a/node_modules/shiki/languages/logo.tmLanguage.json b/node_modules/shiki/languages/logo.tmLanguage.json
new file mode 100644
index 0000000..4abee2a
--- /dev/null
+++ b/node_modules/shiki/languages/logo.tmLanguage.json
@@ -0,0 +1,56 @@
+{
+ "comment": "Roughed out by Paul Bissex <http://e-scribe.com/news/>",
+ "fileTypes": [],
+ "keyEquivalent": "^~L",
+ "name": "logo",
+ "patterns": [
+ {
+ "match": "^to [\\w.]+",
+ "name": "entity.name.function.logo"
+ },
+ {
+ "match": "continue|do\\.until|do\\.while|end|for(each)?|if(else|falsetrue|)|repeat|stop|until",
+ "name": "keyword.control.logo"
+ },
+ {
+ "match": "\\b(\\.defmacro|\\.eq|\\.macro|\\.maybeoutput|\\.setbf|\\.setfirst|\\.setitem|\\.setsegmentsize|allopen|allowgetset|and|apply|arc|arctan|arity|array|arrayp|arraytolist|ascii|ashift|back|background|backslashedp|beforep|bitand|bitnot|bitor|bitxor|buried|buriedp|bury|buryall|buryname|butfirst|butfirsts|butlast|bye|cascade|case|caseignoredp|catch|char|clean|clearscreen|cleartext|close|closeall|combine|cond|contents|copydef|cos|count|crossmap|cursor|define|definedp|dequeue|difference|dribble|edall|edit|editfile|edn|edns|edpl|edpls|edps|emptyp|eofp|epspict|equalp|erall|erase|erasefile|ern|erns|erpl|erpls|erps|erract|error|exp|fence|filep|fill|filter|find|first|firsts|forever|form|forward|fput|fullprintp|fullscreen|fulltext|gc|gensym|global|goto|gprop|greaterp|heading|help|hideturtle|home|ignore|int|invoke|iseq|item|keyp|label|last|left|lessp|list|listp|listtoarray|ln|load|loadnoisily|loadpict|local|localmake|log10|lowercase|lput|lshift|macroexpand|macrop|make|map|map.se|mdarray|mditem|mdsetitem|member|memberp|minus|modulo|name|namelist|namep|names|nodes|nodribble|norefresh|not|numberp|openappend|openread|openupdate|openwrite|or|output|palette|parse|pause|pen|pencolor|pendown|pendownp|penerase|penmode|penpaint|penreverse|pensize|penup|pick|plist|plistp|plists|pllist|po|poall|pon|pons|pop|popl|popls|pops|pos|pot|pots|power|pprop|prefix|primitivep|print|printdepthlimit|printwidthlimit|procedurep|procedures|product|push|queue|quoted|quotient|radarctan|radcos|radsin|random|rawascii|readchar|readchars|reader|readlist|readpos|readrawline|readword|redefp|reduce|refresh|remainder|remdup|remove|remprop|repcount|rerandom|reverse|right|round|rseq|run|runparse|runresult|save|savel|savepict|screenmode|scrunch|sentence|setbackground|setcursor|seteditor|setheading|sethelploc|setitem|setlibloc|setmargins|setpalette|setpen|setpencolor|setpensize|setpos|setprefix|setread|setreadpos|setscrunch|settemploc|settextcolor|setwrite|setwritepos|setx|setxy|sety|shell|show|shownp|showturtle|sin|splitscreen|sqrt|standout|startup|step|stepped|steppedp|substringp|sum|tag|test|text|textscreen|thing|throw|towards|trace|traced|tracedp|transfer|turtlemode|type|unbury|unburyall|unburyname|unburyonedit|unstep|untrace|uppercase|usealternatenam|wait|while|window|word|wordp|wrap|writepos|writer|xcor|ycor)\\b",
+ "name": "keyword.other.logo"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.logo"
+ }
+ },
+ "match": "(\\:)(?:\\|[^|]*\\||[-\\w.]*)+",
+ "name": "variable.parameter.logo"
+ },
+ {
+ "match": "\"(?:\\|[^|]*\\||[-\\w.]*)+",
+ "name": "string.other.word.logo"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=;)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.logo"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": ";",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.logo"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.semicolon.logo"
+ }
+ ]
+ }
+ ],
+ "scopeName": "source.logo",
+ "uuid": "7613EC24-B0F9-4D01-8706-1D54098BFFD8"
+}
diff --git a/node_modules/shiki/languages/lua.tmLanguage.json b/node_modules/shiki/languages/lua.tmLanguage.json
new file mode 100644
index 0000000..bcd70cf
--- /dev/null
+++ b/node_modules/shiki/languages/lua.tmLanguage.json
@@ -0,0 +1,942 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/sumneko/lua.tmbundle/blob/master/Syntaxes/Lua.plist",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/sumneko/lua.tmbundle/commit/3a18700941737c3ab66ac5964696f141aee61800",
+ "name": "lua",
+ "scopeName": "source.lua",
+ "patterns": [
+ {
+ "begin": "\\b(?:(local)\\s+)?(function)\\b(?![,:])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.local.lua"
+ },
+ "2": {
+ "name": "keyword.control.lua"
+ }
+ },
+ "end": "(?<=[\\)\\-{}\\[\\]\"'])",
+ "name": "meta.function.lua",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.begin.lua"
+ }
+ },
+ "end": "(\\))|(?=[\\-\\.{}\\[\\]\"'])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.finish.lua"
+ }
+ },
+ "name": "meta.parameter.lua",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "[a-zA-Z_][a-zA-Z0-9_]*",
+ "name": "variable.parameter.function.lua"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.arguments.lua"
+ },
+ {
+ "begin": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.arguments.lua"
+ }
+ },
+ "end": "(?=[\\),])",
+ "patterns": [
+ {
+ "include": "#emmydoc.type"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b\\s*(?=:)",
+ "name": "entity.name.class.lua"
+ },
+ {
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
+ "name": "entity.name.function.lua"
+ }
+ ]
+ },
+ {
+ "match": "(?<![\\w\\d.])0[xX][0-9A-Fa-f]+(\\.[0-9A-Fa-f]*)?([eE]-?\\d*)?([pP][-+]\\d+)?",
+ "name": "constant.numeric.float.hexadecimal.lua"
+ },
+ {
+ "match": "(?<![\\w\\d.])0[xX]\\.[0-9A-Fa-f]+([eE]-?\\d*)?([pP][-+]\\d+)?",
+ "name": "constant.numeric.float.hexadecimal.lua"
+ },
+ {
+ "match": "(?<![\\w\\d.])0[xX][0-9A-Fa-f]+(?![pPeE.0-9])",
+ "name": "constant.numeric.integer.hexadecimal.lua"
+ },
+ {
+ "match": "(?<![\\w\\d.])\\d+(\\.\\d*)?([eE]-?\\d*)?",
+ "name": "constant.numeric.float.lua"
+ },
+ {
+ "match": "(?<![\\w\\d.])\\.\\d+([eE]-?\\d*)?",
+ "name": "constant.numeric.float.lua"
+ },
+ {
+ "match": "(?<![\\w\\d.])\\d+(?![pPeE.0-9])",
+ "name": "constant.numeric.integer.lua"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.lua"
+ }
+ },
+ "match": "\\A(#!).*$\\n?",
+ "name": "comment.line.shebang.lua"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.goto.lua"
+ },
+ "2": {
+ "name": "string.tag.lua"
+ }
+ },
+ "match": "\\b(goto)\\s+([a-zA-Z_][a-zA-Z0-9_]*)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.embedded.begin.lua"
+ },
+ "2": {
+ "name": "punctuation.section.embedded.end.lua"
+ }
+ },
+ "match": "(::)\\s*[a-zA-Z_][a-zA-Z0-9_]*\\s*(::)",
+ "name": "string.tag.lua"
+ },
+ {
+ "match": "<\\s*(const|close)\\s*>",
+ "captures": {
+ "1": {
+ "name": "string.tag.lua"
+ }
+ }
+ },
+ {
+ "match": "\\<[a-zA-Z_\\*][a-zA-Z0-9_\\.\\*\\-]*\\>",
+ "name": "storage.type.generic.lua"
+ },
+ {
+ "match": "\\b(break|do|else|for|if|elseif|goto|return|then|repeat|while|until|end|in)\\b",
+ "name": "keyword.control.lua"
+ },
+ {
+ "match": "\\b(local|global)\\b",
+ "name": "keyword.local.lua"
+ },
+ {
+ "match": "\\b(function)\\b(?![,:])",
+ "name": "keyword.control.lua"
+ },
+ {
+ "match": "(?<![^.]\\.|:)\\b(false|nil(?!:)|true|_ENV|_G|_VERSION|math\\.(pi|huge|maxinteger|mininteger)|utf8\\.charpattern|io\\.(stdin|stdout|stderr)|package\\.(config|cpath|loaded|loaders|path|preload|searchers))\\b|(?<![.])\\.{3}(?!\\.)",
+ "name": "constant.language.lua"
+ },
+ {
+ "match": "(?<![^.]\\.|:)\\b(self)\\b",
+ "name": "variable.language.self.lua"
+ },
+ {
+ "match": "(?<![^.]\\.|:)\\b(assert|collectgarbage|dofile|error|getfenv|getmetatable|ipairs|load|loadfile|loadstring|module|next|pairs|pcall|print|rawequal|rawget|rawlen|rawset|require|select|setfenv|setmetatable|tonumber|tostring|type|unpack|xpcall)\\b(?!\\s*=(?!=))",
+ "name": "support.function.lua"
+ },
+ {
+ "match": "(?<![^.]\\.|:)\\b(async)\\b(?!\\s*=(?!=))",
+ "name": "entity.name.tag.lua"
+ },
+ {
+ "match": "(?<![^.]\\.|:)\\b(coroutine\\.(create|isyieldable|close|resume|running|status|wrap|yield)|string\\.(byte|char|dump|find|format|gmatch|gsub|len|lower|match|pack|packsize|rep|reverse|sub|unpack|upper)|table\\.(concat|insert|maxn|move|pack|remove|sort|unpack)|math\\.(abs|acos|asin|atan2?|ceil|cosh?|deg|exp|floor|fmod|frexp|ldexp|log|log10|max|min|modf|pow|rad|random|randomseed|sinh?|sqrt|tanh?|tointeger|type)|io\\.(close|flush|input|lines|open|output|popen|read|tmpfile|type|write)|os\\.(clock|date|difftime|execute|exit|getenv|remove|rename|setlocale|time|tmpname)|package\\.(loadlib|seeall|searchpath)|debug\\.(debug|[gs]etfenv|[gs]ethook|getinfo|[gs]etlocal|[gs]etmetatable|getregistry|[gs]etupvalue|[gs]etuservalue|set[Cc]stacklimit|traceback|upvalueid|upvaluejoin)|bit32\\.(arshift|band|bnot|bor|btest|bxor|extract|replace|lrotate|lshift|rrotate|rshift)|utf8\\.(char|codes|codepoint|len|offset))\\b(?!\\s*=(?!=))",
+ "name": "support.function.library.lua"
+ },
+ {
+ "match": "\\b(and|or|not|\\|\\||\\&\\&|\\!)\\b",
+ "name": "keyword.operator.lua"
+ },
+ {
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?=\\s*(?:[({\"']|\\[\\[))",
+ "name": "support.function.any-method.lua"
+ },
+ {
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?=\\s*\\??:)",
+ "name": "entity.name.class.lua"
+ },
+ {
+ "match": "(?<=[^.]\\.|:)\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?!\\s*=\\s*\\b(function)\\b)",
+ "name": "entity.other.attribute.lua"
+ },
+ {
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?!\\s*=\\s*\\b(function)\\b)",
+ "name": "variable.other.lua"
+ },
+ {
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?=\\s*=\\s*\\b(function)\\b)",
+ "name": "entity.name.function.lua"
+ },
+ {
+ "match": "\\+|-|%|#|\\*|\\/|\\^|==?|~=|!=|<=?|>=?|(?<!\\.)\\.{2}(?!\\.)",
+ "name": "keyword.operator.lua"
+ }
+ ],
+ "repository": {
+ "escaped_char": {
+ "patterns": [
+ {
+ "match": "\\\\[abfnrtv\\\\\"'\\n]",
+ "name": "constant.character.escape.lua"
+ },
+ {
+ "match": "\\\\z[\\n\\t ]*",
+ "name": "constant.character.escape.lua"
+ },
+ {
+ "match": "\\\\\\d{1,3}",
+ "name": "constant.character.escape.byte.lua"
+ },
+ {
+ "match": "\\\\x[0-9A-Fa-f][0-9A-Fa-f]",
+ "name": "constant.character.escape.byte.lua"
+ },
+ {
+ "match": "\\\\u\\{[0-9A-Fa-f]+\\}",
+ "name": "constant.character.escape.unicode.lua"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.character.escape.lua"
+ }
+ ]
+ },
+ "string": {
+ "patterns": [
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.lua"
+ }
+ },
+ "end": "'[ \\t]*|(?=\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.lua"
+ }
+ },
+ "name": "string.quoted.single.lua",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.lua"
+ }
+ },
+ "end": "\"[ \\t]*|(?=\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.lua"
+ }
+ },
+ "name": "string.quoted.double.lua",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "`",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.lua"
+ }
+ },
+ "end": "`[ \\t]*|(?=\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.lua"
+ }
+ },
+ "name": "string.quoted.double.lua"
+ },
+ {
+ "begin": "(?<=\\.cdef)\\s*(\\[(=*)\\[)",
+ "beginCaptures": {
+ "0": {
+ "name": "string.quoted.other.multiline.lua"
+ },
+ "1": {
+ "name": "punctuation.definition.string.begin.lua"
+ }
+ },
+ "contentName": "meta.embedded.lua",
+ "end": "(\\]\\2\\])[ \\t]*",
+ "endCaptures": {
+ "0": {
+ "name": "string.quoted.other.multiline.lua"
+ },
+ "1": {
+ "name": "punctuation.definition.string.end.lua"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.c"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!--)\\[(=*)\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.lua"
+ }
+ },
+ "end": "\\]\\1\\][ \\t]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.lua"
+ }
+ },
+ "name": "string.quoted.other.multiline.lua"
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "begin": "(^[ \\t]+)?(?=--)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.lua"
+ }
+ },
+ "end": "(?!\\G)((?!^)[ \\t]+\\n)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.trailing.lua"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "--\\[(=*)\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.lua"
+ }
+ },
+ "end": "\\]\\1\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.lua"
+ }
+ },
+ "name": "comment.block.lua",
+ "patterns": [
+ {
+ "include": "#emmydoc"
+ },
+ {
+ "include": "#ldoc_tag"
+ }
+ ]
+ },
+ {
+ "begin": "----",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.lua"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.double-dash.lua"
+ },
+ {
+ "begin": "---",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.lua"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.double-dash.documentation.lua",
+ "patterns": [
+ {
+ "include": "#emmydoc"
+ },
+ {
+ "include": "#ldoc_tag"
+ }
+ ]
+ },
+ {
+ "begin": "--",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.lua"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.double-dash.lua",
+ "patterns": [
+ {
+ "include": "#ldoc_tag"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.lua"
+ }
+ },
+ "end": "\\*\\/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.lua"
+ }
+ },
+ "name": "comment.block.lua",
+ "patterns": [
+ {
+ "include": "#emmydoc"
+ },
+ {
+ "include": "#ldoc_tag"
+ }
+ ]
+ }
+ ]
+ },
+ "emmydoc": {
+ "patterns": [
+ {
+ "begin": "(?<=---[ \\t]*)@class",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "match": "\\b([a-zA-Z_\\*][a-zA-Z0-9_\\.\\*\\-]*)",
+ "name": "support.class.lua"
+ },
+ {
+ "match": ":|,",
+ "name": "keyword.operator.lua"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@enum",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "begin": "\\b([a-zA-Z_\\*][a-zA-Z0-9_\\.\\*\\-]*)",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.lua"
+ }
+ },
+ "end": "(?=\\n)"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@type",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "include": "#emmydoc.type"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@alias",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "begin": "\\b([a-zA-Z_\\*][a-zA-Z0-9_\\.\\*\\-]*)",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.lua"
+ }
+ },
+ "end": "(?=[\\n#])",
+ "patterns": [
+ {
+ "include": "#emmydoc.type"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?<=---[ \\t]*)(@operator)\\s*(\\b[a-z]+)?",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.annotation.lua"
+ },
+ "2": {
+ "name": "support.function.library.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "include": "#emmydoc.type"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@cast",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "begin": "\\b([a-zA-Z_\\*][a-zA-Z0-9_\\.\\*\\-]*)",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.lua"
+ }
+ },
+ "end": "(?=\\n)",
+ "patterns": [
+ {
+ "include": "#emmydoc.type"
+ },
+ {
+ "match": "([+-|])",
+ "name": "keyword.operator.lua"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@param",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "begin": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(\\??)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.variable.lua"
+ },
+ "2": {
+ "name": "keyword.operator.lua"
+ }
+ },
+ "end": "(?=[\\n#])",
+ "patterns": [
+ {
+ "include": "#emmydoc.type"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@return",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "match": "\\?",
+ "name": "keyword.operator.lua"
+ },
+ {
+ "include": "#emmydoc.type"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@field",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "begin": "(\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b|(\\[))(\\??)",
+ "beginCaptures": {
+ "2": {
+ "name": "entity.name.variable.lua"
+ },
+ "3": {
+ "name": "keyword.operator.lua"
+ }
+ },
+ "end": "(?=[\\n#])",
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#emmydoc.type"
+ },
+ {
+ "match": "\\]",
+ "name": "keyword.operator.lua"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@generic",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "begin": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.generic.lua"
+ }
+ },
+ "end": "(?=\\n)|(,)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.lua"
+ }
+ },
+ "patterns": [
+ {
+ "match": ":",
+ "name": "keyword.operator.lua"
+ },
+ {
+ "include": "#emmydoc.type"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@vararg",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "include": "#emmydoc.type"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@overload",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "include": "#emmydoc.type"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@deprecated",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])"
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@meta",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])"
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@private",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])"
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@protected",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])"
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@package",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])"
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@version",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "match": "\\b(5\\.1|5\\.2|5\\.3|5\\.4|JIT)\\b",
+ "name": "support.class.lua"
+ },
+ {
+ "match": ",|\\>|\\<",
+ "name": "keyword.operator.lua"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@see",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "match": "\\b([a-zA-Z_\\*][a-zA-Z0-9_\\.\\*\\-]*)",
+ "name": "support.class.lua"
+ },
+ {
+ "match": "#",
+ "name": "keyword.operator.lua"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@diagnostic",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "begin": "([a-zA-Z_\\-0-9]+)[ \\t]*(:)?",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.unit"
+ },
+ "2": {
+ "name": "keyword.operator.unit"
+ }
+ },
+ "end": "(?=\\n)",
+ "patterns": [
+ {
+ "match": "\\b([a-zA-Z_\\*][a-zA-Z0-9_\\-]*)",
+ "name": "support.class.lua"
+ },
+ {
+ "match": ",",
+ "name": "keyword.operator.lua"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?<=---[ \\t]*)@module",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "match": "(?<=---[ \\t]*)@(async|nodiscard)",
+ "name": "storage.type.annotation.lua"
+ },
+ {
+ "begin": "(?<=---)\\|\\s*[\\>\\+]?",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.annotation.lua"
+ }
+ },
+ "end": "(?=[\\n@#])",
+ "patterns": [
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "emmydoc.type": {
+ "patterns": [
+ {
+ "begin": "\\bfun\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.lua"
+ }
+ },
+ "end": "(?=[\\s#])",
+ "patterns": [
+ {
+ "match": "[\\(\\),:\\?][ \\t]*",
+ "name": "keyword.operator.lua"
+ },
+ {
+ "match": "([a-zA-Z_][a-zA-Z0-9_\\.\\*\\[\\]\\<\\>\\,\\-]*)(?<!,)[ \\t]*(?=\\??:)",
+ "name": "entity.name.variable.lua"
+ },
+ {
+ "include": "#emmydoc.type"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "match": "\\<[a-zA-Z_\\*][a-zA-Z0-9_\\.\\*\\-]*\\>",
+ "name": "storage.type.generic.lua"
+ },
+ {
+ "match": "\\basync\\b",
+ "name": "entity.name.tag.lua"
+ },
+ {
+ "match": "[\\{\\}\\:\\,\\?\\|\\`][ \\t]*",
+ "name": "keyword.operator.lua"
+ },
+ {
+ "begin": "(?=[a-zA-Z_\\.\\*\"'\\[])",
+ "end": "(?=[\\s\\)\\,\\?\\:\\}\\|#])",
+ "patterns": [
+ {
+ "match": "([a-zA-Z0-9_\\.\\*\\[\\]\\<\\>\\,\\-]+)(?<!,)[ \\t]*",
+ "name": "support.type.lua"
+ },
+ {
+ "match": "(\\.\\.\\.)[ \\t]*",
+ "name": "constant.language.lua"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "ldoc_tag": {
+ "match": "\\G[ \\t]*(@)(alias|annotation|author|charset|class|classmod|comment|constructor|copyright|description|example|export|factory|field|file|fixme|function|include|lfunction|license|local|module|name|param|pragma|private|raise|release|return|script|section|see|set|static|submodule|summary|tfield|thread|tparam|treturn|todo|topic|type|usage|warning|within)\\b",
+ "end": "(?!@)\\b",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.block.tag.ldoc"
+ },
+ "2": {
+ "name": "storage.type.class.ldoc"
+ }
+ }
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/make.tmLanguage.json b/node_modules/shiki/languages/make.tmLanguage.json
new file mode 100644
index 0000000..439f758
--- /dev/null
+++ b/node_modules/shiki/languages/make.tmLanguage.json
@@ -0,0 +1,634 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/fadeevab/make.tmbundle/blob/master/Syntaxes/Makefile.plist",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/fadeevab/make.tmbundle/commit/1d4c0b541959995db098df751ffc129da39a294b",
+ "name": "make",
+ "scopeName": "source.makefile",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#variable-assignment"
+ },
+ {
+ "include": "#directives"
+ },
+ {
+ "include": "#recipe"
+ },
+ {
+ "include": "#target"
+ }
+ ],
+ "repository": {
+ "comma": {
+ "match": ",",
+ "name": "punctuation.separator.delimeter.comma.makefile"
+ },
+ "comment": {
+ "begin": "(^[ ]+)?((?<!\\\\)(\\\\\\\\)*)(?=#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.makefile"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.makefile"
+ }
+ },
+ "end": "(?=[^\\\\])$",
+ "name": "comment.line.number-sign.makefile",
+ "patterns": [
+ {
+ "match": "\\\\\\n",
+ "name": "constant.character.escape.continuation.makefile"
+ }
+ ]
+ }
+ ]
+ },
+ "directives": {
+ "patterns": [
+ {
+ "begin": "^[ ]*([s\\-]?include)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.include.makefile"
+ }
+ },
+ "end": "^",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "match": "%",
+ "name": "constant.other.placeholder.makefile"
+ }
+ ]
+ },
+ {
+ "begin": "^[ ]*(vpath)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.vpath.makefile"
+ }
+ },
+ "end": "^",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "match": "%",
+ "name": "constant.other.placeholder.makefile"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(?:(override)\\s*)?(define)\\s*([^\\s]+)\\s*(=|\\?=|:=|\\+=)?(?=\\s)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.override.makefile"
+ },
+ "2": {
+ "name": "keyword.control.define.makefile"
+ },
+ "3": {
+ "name": "variable.other.makefile"
+ },
+ "4": {
+ "name": "punctuation.separator.key-value.makefile"
+ }
+ },
+ "end": "^\\s*(endef)\\b",
+ "name": "meta.scope.conditional.makefile",
+ "patterns": [
+ {
+ "begin": "\\G(?!\\n)",
+ "end": "^",
+ "patterns": [
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#directives"
+ }
+ ]
+ },
+ {
+ "begin": "^[ ]*(export)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.$1.makefile"
+ }
+ },
+ "end": "^",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-assignment"
+ },
+ {
+ "match": "[^\\s]+",
+ "name": "variable.other.makefile"
+ }
+ ]
+ },
+ {
+ "begin": "^[ ]*(override|private)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.$1.makefile"
+ }
+ },
+ "end": "^",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-assignment"
+ }
+ ]
+ },
+ {
+ "begin": "^[ ]*(unexport|undefine)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.$1.makefile"
+ }
+ },
+ "end": "^",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "[^\\s]+",
+ "name": "variable.other.makefile"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(ifeq|ifneq|ifdef|ifndef)(?=\\s)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.$1.makefile"
+ }
+ },
+ "end": "^\\s*(endif)\\b",
+ "name": "meta.scope.conditional.makefile",
+ "patterns": [
+ {
+ "begin": "\\G",
+ "end": "^",
+ "name": "meta.scope.condition.makefile",
+ "patterns": [
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*else(?=\\s)\\s*(ifeq|ifneq|ifdef|ifndef)*(?=\\s)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.else.makefile"
+ }
+ },
+ "end": "^",
+ "patterns": [
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "target": {
+ "begin": "^(?!\\t)([^:]*)(:)(?!\\=)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.target.$1.makefile"
+ }
+ },
+ "match": "^\\s*(\\.(PHONY|SUFFIXES|DEFAULT|PRECIOUS|INTERMEDIATE|SECONDARY|SECONDEXPANSION|DELETE_ON_ERROR|IGNORE|LOW_RESOLUTION_TIME|SILENT|EXPORT_ALL_VARIABLES|NOTPARALLEL|ONESHELL|POSIX))\\s*$"
+ },
+ {
+ "begin": "(?=\\S)",
+ "end": "(?=\\s|$)",
+ "name": "entity.name.function.target.makefile",
+ "patterns": [
+ {
+ "include": "#variables"
+ },
+ {
+ "match": "%",
+ "name": "constant.other.placeholder.makefile"
+ }
+ ]
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.makefile"
+ }
+ },
+ "end": "[^\\\\]$",
+ "name": "meta.scope.target.makefile",
+ "patterns": [
+ {
+ "begin": "\\G",
+ "end": "(?=[^\\\\])$",
+ "name": "meta.scope.prerequisites.makefile",
+ "patterns": [
+ {
+ "match": "\\\\\\n",
+ "name": "constant.character.escape.continuation.makefile"
+ },
+ {
+ "match": "%|\\*",
+ "name": "constant.other.placeholder.makefile"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variables"
+ }
+ ]
+ }
+ ]
+ },
+ "recipe": {
+ "begin": "^\\t([+\\-@]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.$1.makefile"
+ }
+ },
+ "end": "[^\\\\]$",
+ "name": "meta.scope.recipe.makefile",
+ "patterns": [
+ {
+ "match": "\\\\\\n",
+ "name": "constant.character.escape.continuation.makefile"
+ },
+ {
+ "include": "#variables"
+ }
+ ]
+ },
+ "variable-assignment": {
+ "begin": "(^[ ]*|\\G\\s*)([^\\s:#=]+)\\s*((?<![?:+!])=|\\?=|:=|\\+=|!=)",
+ "beginCaptures": {
+ "2": {
+ "name": "variable.other.makefile",
+ "patterns": [
+ {
+ "include": "#variables"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.key-value.makefile"
+ }
+ },
+ "end": "\\n",
+ "patterns": [
+ {
+ "match": "\\\\\\n",
+ "name": "constant.character.escape.continuation.makefile"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variables"
+ }
+ ]
+ },
+ "interpolation": {
+ "patterns": [
+ {
+ "include": "#parentheses-interpolation"
+ },
+ {
+ "include": "#braces-interpolation"
+ }
+ ]
+ },
+ "parentheses-interpolation": {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ "braces-interpolation": {
+ "begin": "{",
+ "end": "}",
+ "patterns": [
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ "variables": {
+ "patterns": [
+ {
+ "include": "#simple-variable"
+ },
+ {
+ "include": "#variable-parentheses"
+ },
+ {
+ "include": "#variable-braces"
+ }
+ ]
+ },
+ "simple-variable": {
+ "patterns": [
+ {
+ "match": "\\$[^(){}]",
+ "name": "variable.language.makefile"
+ }
+ ]
+ },
+ "variable-parentheses": {
+ "patterns": [
+ {
+ "begin": "\\$\\(",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.variable.makefile"
+ }
+ },
+ "end": "\\)|((?<!\\\\)\\n)",
+ "name": "string.interpolated.makefile",
+ "patterns": [
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#builtin-variable-parentheses"
+ },
+ {
+ "include": "#function-variable-parentheses"
+ },
+ {
+ "include": "#flavor-variable-parentheses"
+ },
+ {
+ "include": "#another-variable-parentheses"
+ }
+ ]
+ }
+ ]
+ },
+ "variable-braces": {
+ "patterns": [
+ {
+ "begin": "\\${",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.variable.makefile"
+ }
+ },
+ "end": "}|((?<!\\\\)\\n)",
+ "name": "string.interpolated.makefile",
+ "patterns": [
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#builtin-variable-braces"
+ },
+ {
+ "include": "#function-variable-braces"
+ },
+ {
+ "include": "#flavor-variable-braces"
+ },
+ {
+ "include": "#another-variable-braces"
+ }
+ ]
+ }
+ ]
+ },
+ "builtin-variable-parentheses": {
+ "patterns": [
+ {
+ "match": "(?<=\\()(MAKEFILES|VPATH|SHELL|MAKESHELL|MAKE|MAKELEVEL|MAKEFLAGS|MAKECMDGOALS|CURDIR|SUFFIXES|\\.LIBPATTERNS)(?=\\s*\\))",
+ "name": "variable.language.makefile"
+ }
+ ]
+ },
+ "builtin-variable-braces": {
+ "patterns": [
+ {
+ "match": "(?<={)(MAKEFILES|VPATH|SHELL|MAKESHELL|MAKE|MAKELEVEL|MAKEFLAGS|MAKECMDGOALS|CURDIR|SUFFIXES|\\.LIBPATTERNS)(?=\\s*})",
+ "name": "variable.language.makefile"
+ }
+ ]
+ },
+ "function-variable-parentheses": {
+ "patterns": [
+ {
+ "begin": "(?<=\\()(subst|patsubst|strip|findstring|filter(-out)?|sort|word(list)?|firstword|lastword|dir|notdir|suffix|basename|addsuffix|addprefix|join|wildcard|realpath|abspath|info|error|warning|shell|foreach|if|or|and|call|eval|value|file|guile)\\s",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.$1.makefile"
+ }
+ },
+ "end": "(?=\\)|((?<!\\\\)\\n))",
+ "name": "meta.scope.function-call.makefile",
+ "patterns": [
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "match": "%|\\*",
+ "name": "constant.other.placeholder.makefile"
+ },
+ {
+ "match": "\\\\\\n",
+ "name": "constant.character.escape.continuation.makefile"
+ }
+ ]
+ }
+ ]
+ },
+ "function-variable-braces": {
+ "patterns": [
+ {
+ "begin": "(?<={)(subst|patsubst|strip|findstring|filter(-out)?|sort|word(list)?|firstword|lastword|dir|notdir|suffix|basename|addsuffix|addprefix|join|wildcard|realpath|abspath|info|error|warning|shell|foreach|if|or|and|call|eval|value|file|guile)\\s",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.$1.makefile"
+ }
+ },
+ "end": "(?=}|((?<!\\\\)\\n))",
+ "name": "meta.scope.function-call.makefile",
+ "patterns": [
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "match": "%|\\*",
+ "name": "constant.other.placeholder.makefile"
+ },
+ {
+ "match": "\\\\\\n",
+ "name": "constant.character.escape.continuation.makefile"
+ }
+ ]
+ }
+ ]
+ },
+ "flavor-variable-parentheses": {
+ "patterns": [
+ {
+ "begin": "(?<=\\()(origin|flavor)\\s(?=[^\\s)]+\\s*\\))",
+ "contentName": "variable.other.makefile",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.$1.makefile"
+ }
+ },
+ "end": "(?=\\))",
+ "name": "meta.scope.function-call.makefile",
+ "patterns": [
+ {
+ "include": "#variables"
+ }
+ ]
+ }
+ ]
+ },
+ "flavor-variable-braces": {
+ "patterns": [
+ {
+ "begin": "(?<={)(origin|flavor)\\s(?=[^\\s}]+\\s*})",
+ "contentName": "variable.other.makefile",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.$1.makefile"
+ }
+ },
+ "end": "(?=})",
+ "name": "meta.scope.function-call.makefile",
+ "patterns": [
+ {
+ "include": "#variables"
+ }
+ ]
+ }
+ ]
+ },
+ "another-variable-parentheses": {
+ "patterns": [
+ {
+ "begin": "(?<=\\()(?!\\))",
+ "end": "(?=\\)|((?<!\\\\)\\n))",
+ "name": "variable.other.makefile",
+ "patterns": [
+ {
+ "include": "#variables"
+ },
+ {
+ "match": "\\\\\\n",
+ "name": "constant.character.escape.continuation.makefile"
+ }
+ ]
+ }
+ ]
+ },
+ "another-variable-braces": {
+ "patterns": [
+ {
+ "begin": "(?<={)(?!})",
+ "end": "(?=}|((?<!\\\\)\\n))",
+ "name": "variable.other.makefile",
+ "patterns": [
+ {
+ "include": "#variables"
+ },
+ {
+ "match": "\\\\\\n",
+ "name": "constant.character.escape.continuation.makefile"
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/markdown.tmLanguage.json b/node_modules/shiki/languages/markdown.tmLanguage.json
new file mode 100644
index 0000000..4d4e7af
--- /dev/null
+++ b/node_modules/shiki/languages/markdown.tmLanguage.json
@@ -0,0 +1,3037 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/microsoft/vscode-markdown-tm-grammar/blob/master/syntaxes/markdown.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/microsoft/vscode-markdown-tm-grammar/commit/e2af2e59c84c47b7b3c3ea690d74e7001bab96a1",
+ "name": "markdown",
+ "scopeName": "text.html.markdown",
+ "patterns": [
+ {
+ "include": "#frontMatter"
+ },
+ {
+ "include": "#block"
+ }
+ ],
+ "repository": {
+ "block": {
+ "patterns": [
+ {
+ "include": "#separator"
+ },
+ {
+ "include": "#heading"
+ },
+ {
+ "include": "#blockquote"
+ },
+ {
+ "include": "#lists"
+ },
+ {
+ "include": "#fenced_code_block"
+ },
+ {
+ "include": "#raw_block"
+ },
+ {
+ "include": "#link-def"
+ },
+ {
+ "include": "#html"
+ },
+ {
+ "include": "#paragraph"
+ }
+ ]
+ },
+ "blockquote": {
+ "begin": "(^|\\G)[ ]{0,3}(>) ?",
+ "captures": {
+ "2": {
+ "name": "punctuation.definition.quote.begin.markdown"
+ }
+ },
+ "name": "markup.quote.markdown",
+ "patterns": [
+ {
+ "include": "#block"
+ }
+ ],
+ "while": "(^|\\G)\\s*(>) ?"
+ },
+ "fenced_code_block_css": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(css|css.erb)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.css",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_basic": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(html|htm|shtml|xhtml|inc|tmpl|tpl)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.html",
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_ini": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(ini|conf)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.ini",
+ "patterns": [
+ {
+ "include": "source.ini"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_java": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(java|bsh)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.java",
+ "patterns": [
+ {
+ "include": "source.java"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_lua": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(lua)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.lua",
+ "patterns": [
+ {
+ "include": "source.lua"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_makefile": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(Makefile|makefile|GNUmakefile|OCamlMakefile)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.makefile",
+ "patterns": [
+ {
+ "include": "source.makefile"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_perl": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(perl|pl|pm|pod|t|PL|psgi|vcl)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.perl",
+ "patterns": [
+ {
+ "include": "source.perl"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_r": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(R|r|s|S|Rprofile|\\{\\.r.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.r",
+ "patterns": [
+ {
+ "include": "source.r"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_ruby": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(ruby|rb|rbx|rjs|Rakefile|rake|cgi|fcgi|gemspec|irbrc|Capfile|ru|prawn|Cheffile|Gemfile|Guardfile|Hobofile|Vagrantfile|Appraisals|Rantfile|Berksfile|Berksfile.lock|Thorfile|Puppetfile)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.ruby",
+ "patterns": [
+ {
+ "include": "source.ruby"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_php": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(php|php3|php4|php5|phpt|phtml|aw|ctp)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.php",
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ },
+ {
+ "include": "source.php"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_sql": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(sql|ddl|dml)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.sql",
+ "patterns": [
+ {
+ "include": "source.sql"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_vs_net": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(vb)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.vs_net",
+ "patterns": [
+ {
+ "include": "source.asp.vb.net"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_xml": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(xml|xsd|tld|jsp|pt|cpt|dtml|rss|opml)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.xml",
+ "patterns": [
+ {
+ "include": "text.xml"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_xsl": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(xsl|xslt)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.xsl",
+ "patterns": [
+ {
+ "include": "text.xml.xsl"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_yaml": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(yaml|yml)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.yaml",
+ "patterns": [
+ {
+ "include": "source.yaml"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_dosbatch": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(bat|batch)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.dosbatch",
+ "patterns": [
+ {
+ "include": "source.batchfile"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_clojure": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(clj|cljs|clojure)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.clojure",
+ "patterns": [
+ {
+ "include": "source.clojure"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_coffee": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(coffee|Cakefile|coffee.erb)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.coffee",
+ "patterns": [
+ {
+ "include": "source.coffee"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_c": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(c|h)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.c",
+ "patterns": [
+ {
+ "include": "source.c"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_cpp": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(cpp|c\\+\\+|cxx)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.cpp source.cpp",
+ "patterns": [
+ {
+ "include": "source.cpp"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_diff": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(patch|diff|rej)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.diff",
+ "patterns": [
+ {
+ "include": "source.diff"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_dockerfile": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(dockerfile|Dockerfile)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.dockerfile",
+ "patterns": [
+ {
+ "include": "source.dockerfile"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_git_commit": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(COMMIT_EDITMSG|MERGE_MSG)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.git_commit",
+ "patterns": [
+ {
+ "include": "text.git-commit"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_git_rebase": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(git-rebase-todo)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.git_rebase",
+ "patterns": [
+ {
+ "include": "text.git-rebase"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_go": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(go|golang)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.go",
+ "patterns": [
+ {
+ "include": "source.go"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_groovy": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(groovy|gvy)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.groovy",
+ "patterns": [
+ {
+ "include": "source.groovy"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_pug": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(jade|pug)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.pug",
+ "patterns": [
+ {
+ "include": "text.pug"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_js": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(js|jsx|javascript|es6|mjs|cjs|dataviewjs|\\{\\.js.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.javascript",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_js_regexp": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(regexp)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.js_regexp",
+ "patterns": [
+ {
+ "include": "source.js.regexp"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_json": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(json|json5|sublime-settings|sublime-menu|sublime-keymap|sublime-mousemap|sublime-theme|sublime-build|sublime-project|sublime-completions)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.json",
+ "patterns": [
+ {
+ "include": "source.json"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_jsonc": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(jsonc)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.jsonc",
+ "patterns": [
+ {
+ "include": "source.json.comments"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_less": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(less)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.less",
+ "patterns": [
+ {
+ "include": "source.css.less"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_objc": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(objectivec|objective-c|mm|objc|obj-c|m|h)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.objc",
+ "patterns": [
+ {
+ "include": "source.objc"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_swift": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(swift)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.swift",
+ "patterns": [
+ {
+ "include": "source.swift"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_scss": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(scss)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.scss",
+ "patterns": [
+ {
+ "include": "source.css.scss"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_perl6": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(perl6|p6|pl6|pm6|nqp)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.perl6",
+ "patterns": [
+ {
+ "include": "source.perl.6"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_powershell": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(powershell|ps1|psm1|psd1)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.powershell",
+ "patterns": [
+ {
+ "include": "source.powershell"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_python": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(python|py|py3|rpy|pyw|cpy|SConstruct|Sconstruct|sconstruct|SConscript|gyp|gypi|\\{\\.python.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.python",
+ "patterns": [
+ {
+ "include": "source.python"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_julia": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(julia|\\{\\.julia.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.julia",
+ "patterns": [
+ {
+ "include": "source.julia"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_regexp_python": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(re)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.regexp_python",
+ "patterns": [
+ {
+ "include": "source.regexp.python"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_rust": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(rust|rs|\\{\\.rust.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.rust",
+ "patterns": [
+ {
+ "include": "source.rust"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_scala": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(scala|sbt)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.scala",
+ "patterns": [
+ {
+ "include": "source.scala"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_shell": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(shell|sh|bash|zsh|bashrc|bash_profile|bash_login|profile|bash_logout|.textmate_init|\\{\\.bash.+?\\})((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.shellscript",
+ "patterns": [
+ {
+ "include": "source.shell"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_ts": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(typescript|ts)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.typescript",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_tsx": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(tsx)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.typescriptreact",
+ "patterns": [
+ {
+ "include": "source.tsx"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_csharp": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(cs|csharp|c#)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.csharp",
+ "patterns": [
+ {
+ "include": "source.cs"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_fsharp": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(fs|fsharp|f#)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.fsharp",
+ "patterns": [
+ {
+ "include": "source.fsharp"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_dart": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(dart)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.dart",
+ "patterns": [
+ {
+ "include": "source.dart"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_handlebars": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(handlebars|hbs)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.handlebars",
+ "patterns": [
+ {
+ "include": "text.html.handlebars"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_markdown": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(markdown|md)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.markdown",
+ "patterns": [
+ {
+ "include": "text.html.markdown"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_log": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(log)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.log",
+ "patterns": [
+ {
+ "include": "text.log"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_erlang": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(erlang)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.erlang",
+ "patterns": [
+ {
+ "include": "source.erlang"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_elixir": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(elixir)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.elixir",
+ "patterns": [
+ {
+ "include": "source.elixir"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_latex": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(latex|tex)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.latex",
+ "patterns": [
+ {
+ "include": "text.tex.latex"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_bibtex": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(bibtex)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.bibtex",
+ "patterns": [
+ {
+ "include": "text.bibtex"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block_twig": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?i:(twig)((\\s+|:|,|\\{|\\?)[^`]*)?$)",
+ "name": "markup.fenced_code.block.markdown",
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language.markdown"
+ },
+ "5": {
+ "name": "fenced_code.block.language.attributes.markdown"
+ }
+ },
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(^|\\G)(\\s*)(.*)",
+ "while": "(^|\\G)(?!\\s*([`~]{3,})\\s*$)",
+ "contentName": "meta.embedded.block.twig",
+ "patterns": [
+ {
+ "include": "source.twig"
+ }
+ ]
+ }
+ ]
+ },
+ "fenced_code_block": {
+ "patterns": [
+ {
+ "include": "#fenced_code_block_css"
+ },
+ {
+ "include": "#fenced_code_block_basic"
+ },
+ {
+ "include": "#fenced_code_block_ini"
+ },
+ {
+ "include": "#fenced_code_block_java"
+ },
+ {
+ "include": "#fenced_code_block_lua"
+ },
+ {
+ "include": "#fenced_code_block_makefile"
+ },
+ {
+ "include": "#fenced_code_block_perl"
+ },
+ {
+ "include": "#fenced_code_block_r"
+ },
+ {
+ "include": "#fenced_code_block_ruby"
+ },
+ {
+ "include": "#fenced_code_block_php"
+ },
+ {
+ "include": "#fenced_code_block_sql"
+ },
+ {
+ "include": "#fenced_code_block_vs_net"
+ },
+ {
+ "include": "#fenced_code_block_xml"
+ },
+ {
+ "include": "#fenced_code_block_xsl"
+ },
+ {
+ "include": "#fenced_code_block_yaml"
+ },
+ {
+ "include": "#fenced_code_block_dosbatch"
+ },
+ {
+ "include": "#fenced_code_block_clojure"
+ },
+ {
+ "include": "#fenced_code_block_coffee"
+ },
+ {
+ "include": "#fenced_code_block_c"
+ },
+ {
+ "include": "#fenced_code_block_cpp"
+ },
+ {
+ "include": "#fenced_code_block_diff"
+ },
+ {
+ "include": "#fenced_code_block_dockerfile"
+ },
+ {
+ "include": "#fenced_code_block_git_commit"
+ },
+ {
+ "include": "#fenced_code_block_git_rebase"
+ },
+ {
+ "include": "#fenced_code_block_go"
+ },
+ {
+ "include": "#fenced_code_block_groovy"
+ },
+ {
+ "include": "#fenced_code_block_pug"
+ },
+ {
+ "include": "#fenced_code_block_js"
+ },
+ {
+ "include": "#fenced_code_block_js_regexp"
+ },
+ {
+ "include": "#fenced_code_block_json"
+ },
+ {
+ "include": "#fenced_code_block_jsonc"
+ },
+ {
+ "include": "#fenced_code_block_less"
+ },
+ {
+ "include": "#fenced_code_block_objc"
+ },
+ {
+ "include": "#fenced_code_block_swift"
+ },
+ {
+ "include": "#fenced_code_block_scss"
+ },
+ {
+ "include": "#fenced_code_block_perl6"
+ },
+ {
+ "include": "#fenced_code_block_powershell"
+ },
+ {
+ "include": "#fenced_code_block_python"
+ },
+ {
+ "include": "#fenced_code_block_julia"
+ },
+ {
+ "include": "#fenced_code_block_regexp_python"
+ },
+ {
+ "include": "#fenced_code_block_rust"
+ },
+ {
+ "include": "#fenced_code_block_scala"
+ },
+ {
+ "include": "#fenced_code_block_shell"
+ },
+ {
+ "include": "#fenced_code_block_ts"
+ },
+ {
+ "include": "#fenced_code_block_tsx"
+ },
+ {
+ "include": "#fenced_code_block_csharp"
+ },
+ {
+ "include": "#fenced_code_block_fsharp"
+ },
+ {
+ "include": "#fenced_code_block_dart"
+ },
+ {
+ "include": "#fenced_code_block_handlebars"
+ },
+ {
+ "include": "#fenced_code_block_markdown"
+ },
+ {
+ "include": "#fenced_code_block_log"
+ },
+ {
+ "include": "#fenced_code_block_erlang"
+ },
+ {
+ "include": "#fenced_code_block_elixir"
+ },
+ {
+ "include": "#fenced_code_block_latex"
+ },
+ {
+ "include": "#fenced_code_block_bibtex"
+ },
+ {
+ "include": "#fenced_code_block_twig"
+ },
+ {
+ "include": "#fenced_code_block_unknown"
+ }
+ ]
+ },
+ "fenced_code_block_unknown": {
+ "begin": "(^|\\G)(\\s*)(`{3,}|~{3,})\\s*(?=([^`]*)?$)",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ },
+ "4": {
+ "name": "fenced_code.block.language"
+ }
+ },
+ "end": "(^|\\G)(\\2|\\s{0,3})(\\3)\\s*$",
+ "endCaptures": {
+ "3": {
+ "name": "punctuation.definition.markdown"
+ }
+ },
+ "name": "markup.fenced_code.block.markdown"
+ },
+ "heading": {
+ "match": "(?:^|\\G)[ ]{0,3}(#{1,6}\\s+(.*?)(\\s+#{1,6})?\\s*)$",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "(#{6})\\s+(.*?)(?:\\s+(#+))?\\s*$",
+ "name": "heading.6.markdown",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.heading.markdown"
+ },
+ "2": {
+ "name": "entity.name.section.markdown",
+ "patterns": [
+ {
+ "include": "#inline"
+ },
+ {
+ "include": "text.html.derivative"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.heading.markdown"
+ }
+ }
+ },
+ {
+ "match": "(#{5})\\s+(.*?)(?:\\s+(#+))?\\s*$",
+ "name": "heading.5.markdown",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.heading.markdown"
+ },
+ "2": {
+ "name": "entity.name.section.markdown",
+ "patterns": [
+ {
+ "include": "#inline"
+ },
+ {
+ "include": "text.html.derivative"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.heading.markdown"
+ }
+ }
+ },
+ {
+ "match": "(#{4})\\s+(.*?)(?:\\s+(#+))?\\s*$",
+ "name": "heading.4.markdown",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.heading.markdown"
+ },
+ "2": {
+ "name": "entity.name.section.markdown",
+ "patterns": [
+ {
+ "include": "#inline"
+ },
+ {
+ "include": "text.html.derivative"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.heading.markdown"
+ }
+ }
+ },
+ {
+ "match": "(#{3})\\s+(.*?)(?:\\s+(#+))?\\s*$",
+ "name": "heading.3.markdown",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.heading.markdown"
+ },
+ "2": {
+ "name": "entity.name.section.markdown",
+ "patterns": [
+ {
+ "include": "#inline"
+ },
+ {
+ "include": "text.html.derivative"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.heading.markdown"
+ }
+ }
+ },
+ {
+ "match": "(#{2})\\s+(.*?)(?:\\s+(#+))?\\s*$",
+ "name": "heading.2.markdown",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.heading.markdown"
+ },
+ "2": {
+ "name": "entity.name.section.markdown",
+ "patterns": [
+ {
+ "include": "#inline"
+ },
+ {
+ "include": "text.html.derivative"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.heading.markdown"
+ }
+ }
+ },
+ {
+ "match": "(#{1})\\s+(.*?)(?:\\s+(#+))?\\s*$",
+ "name": "heading.1.markdown",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.heading.markdown"
+ },
+ "2": {
+ "name": "entity.name.section.markdown",
+ "patterns": [
+ {
+ "include": "#inline"
+ },
+ {
+ "include": "text.html.derivative"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.heading.markdown"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "name": "markup.heading.markdown",
+ "patterns": [
+ {
+ "include": "#inline"
+ }
+ ]
+ },
+ "heading-setext": {
+ "patterns": [
+ {
+ "match": "^(={3,})(?=[ \\t]*$\\n?)",
+ "name": "markup.heading.setext.1.markdown"
+ },
+ {
+ "match": "^(-{3,})(?=[ \\t]*$\\n?)",
+ "name": "markup.heading.setext.2.markdown"
+ }
+ ]
+ },
+ "html": {
+ "patterns": [
+ {
+ "begin": "(^|\\G)\\s*(<!--)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.html"
+ },
+ "2": {
+ "name": "punctuation.definition.comment.html"
+ }
+ },
+ "end": "(-->)",
+ "name": "comment.block.html"
+ },
+ {
+ "begin": "(?i)(^|\\G)\\s*(?=<(script|style|pre)(\\s|$|>)(?!.*?</(script|style|pre)>))",
+ "end": "(?i)(.*)((</)(script|style|pre)(>))",
+ "endCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "text.html.derivative"
+ }
+ ]
+ },
+ "2": {
+ "name": "meta.tag.structure.$4.end.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "4": {
+ "name": "entity.name.tag.html"
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(\\s*|$)",
+ "patterns": [
+ {
+ "include": "text.html.derivative"
+ }
+ ],
+ "while": "(?i)^(?!.*</(script|style|pre)>)"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(^|\\G)\\s*(?=</?[a-zA-Z]+[^\\s/&gt;]*(\\s|$|/?>))",
+ "patterns": [
+ {
+ "include": "text.html.derivative"
+ }
+ ],
+ "while": "^(?!\\s*$)"
+ },
+ {
+ "begin": "(^|\\G)\\s*(?=(<[a-zA-Z0-9\\-](/?>|\\s.*?>)|</[a-zA-Z0-9\\-]>)\\s*$)",
+ "patterns": [
+ {
+ "include": "text.html.derivative"
+ }
+ ],
+ "while": "^(?!\\s*$)"
+ }
+ ]
+ },
+ "link-def": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.markdown"
+ },
+ "2": {
+ "name": "constant.other.reference.link.markdown"
+ },
+ "3": {
+ "name": "punctuation.definition.constant.markdown"
+ },
+ "4": {
+ "name": "punctuation.separator.key-value.markdown"
+ },
+ "5": {
+ "name": "punctuation.definition.link.markdown"
+ },
+ "6": {
+ "name": "markup.underline.link.markdown"
+ },
+ "7": {
+ "name": "punctuation.definition.link.markdown"
+ },
+ "8": {
+ "name": "markup.underline.link.markdown"
+ },
+ "9": {
+ "name": "string.other.link.description.title.markdown"
+ },
+ "10": {
+ "name": "punctuation.definition.string.begin.markdown"
+ },
+ "11": {
+ "name": "punctuation.definition.string.end.markdown"
+ },
+ "12": {
+ "name": "string.other.link.description.title.markdown"
+ },
+ "13": {
+ "name": "punctuation.definition.string.begin.markdown"
+ },
+ "14": {
+ "name": "punctuation.definition.string.end.markdown"
+ },
+ "15": {
+ "name": "string.other.link.description.title.markdown"
+ },
+ "16": {
+ "name": "punctuation.definition.string.begin.markdown"
+ },
+ "17": {
+ "name": "punctuation.definition.string.end.markdown"
+ }
+ },
+ "match": "(?x)\n \\s* # Leading whitespace\n (\\[)([^]]+?)(\\])(:) # Reference name\n [ \\t]* # Optional whitespace\n (?:(<)((?:\\\\[<>]|[^<>\\n])*)(>)|(\\S+?)) # The url\n [ \\t]* # Optional whitespace\n (?:\n ((\\().+?(\\))) # Match title in parens…\n | ((\").+?(\")) # or in double quotes…\n | ((').+?(')) # or in single quotes.\n )? # Title is optional\n \\s* # Optional whitespace\n $\n",
+ "name": "meta.link.reference.def.markdown"
+ },
+ "list_paragraph": {
+ "begin": "(^|\\G)(?=\\S)(?![*+->]\\s|[0-9]+\\.\\s)",
+ "name": "meta.paragraph.markdown",
+ "patterns": [
+ {
+ "include": "#inline"
+ },
+ {
+ "include": "text.html.derivative"
+ },
+ {
+ "include": "#heading-setext"
+ }
+ ],
+ "while": "(^|\\G)(?!\\s*$|#|[ ]{0,3}([-*_>][ ]{2,}){3,}[ \\t]*$\\n?|[ ]{0,3}[*+->]|[ ]{0,3}[0-9]+\\.)"
+ },
+ "lists": {
+ "patterns": [
+ {
+ "begin": "(^|\\G)([ ]{0,3})([*+-])([ \\t])",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.list.begin.markdown"
+ }
+ },
+ "comment": "Currently does not support un-indented second lines.",
+ "name": "markup.list.unnumbered.markdown",
+ "patterns": [
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#list_paragraph"
+ }
+ ],
+ "while": "((^|\\G)([ ]{2,4}|\\t))|(^[ \\t]*$)"
+ },
+ {
+ "begin": "(^|\\G)([ ]{0,3})([0-9]+\\.)([ \\t])",
+ "beginCaptures": {
+ "3": {
+ "name": "punctuation.definition.list.begin.markdown"
+ }
+ },
+ "name": "markup.list.numbered.markdown",
+ "patterns": [
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#list_paragraph"
+ }
+ ],
+ "while": "((^|\\G)([ ]{2,4}|\\t))|(^[ \\t]*$)"
+ }
+ ]
+ },
+ "paragraph": {
+ "begin": "(^|\\G)[ ]{0,3}(?=\\S)",
+ "name": "meta.paragraph.markdown",
+ "patterns": [
+ {
+ "include": "#inline"
+ },
+ {
+ "include": "text.html.derivative"
+ },
+ {
+ "include": "#heading-setext"
+ }
+ ],
+ "while": "(^|\\G)((?=\\s*[-=]{3,}\\s*$)|[ ]{4,}(?=\\S))"
+ },
+ "raw_block": {
+ "begin": "(^|\\G)([ ]{4}|\\t)",
+ "name": "markup.raw.block.markdown",
+ "while": "(^|\\G)([ ]{4}|\\t)"
+ },
+ "separator": {
+ "match": "(^|\\G)[ ]{0,3}([\\*\\-\\_])([ ]{0,2}\\2){2,}[ \\t]*$\\n?",
+ "name": "meta.separator.markdown"
+ },
+ "frontMatter": {
+ "begin": "\\A-{3}\\s*$",
+ "contentName": "meta.embedded.block.frontmatter",
+ "patterns": [
+ {
+ "include": "source.yaml"
+ }
+ ],
+ "end": "(^|\\G)-{3}|\\.{3}\\s*$"
+ },
+ "inline": {
+ "patterns": [
+ {
+ "include": "#ampersand"
+ },
+ {
+ "include": "#bracket"
+ },
+ {
+ "include": "#bold"
+ },
+ {
+ "include": "#italic"
+ },
+ {
+ "include": "#raw"
+ },
+ {
+ "include": "#strikethrough"
+ },
+ {
+ "include": "#escape"
+ },
+ {
+ "include": "#image-inline"
+ },
+ {
+ "include": "#image-ref"
+ },
+ {
+ "include": "#link-email"
+ },
+ {
+ "include": "#link-inet"
+ },
+ {
+ "include": "#link-inline"
+ },
+ {
+ "include": "#link-ref"
+ },
+ {
+ "include": "#link-ref-literal"
+ },
+ {
+ "include": "#link-ref-shortcut"
+ }
+ ]
+ },
+ "ampersand": {
+ "comment": "Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid.",
+ "match": "&(?!([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+);)",
+ "name": "meta.other.valid-ampersand.markdown"
+ },
+ "bold": {
+ "begin": "(?x) (?<open>(\\*\\*(?=\\w)|(?<!\\w)\\*\\*|(?<!\\w)\\b__))(?=\\S) (?=\n (\n <[^>]*+> # HTML tags\n | (?<raw>`+)([^`]|(?!(?<!`)\\k<raw>(?!`))`)*+\\k<raw>\n # Raw\n | \\\\[\\\\`*_{}\\[\\]()#.!+\\->]?+ # Escapes\n | \\[\n (\n (?<square> # Named group\n [^\\[\\]\\\\] # Match most chars\n | \\\\. # Escaped chars\n | \\[ \\g<square>*+ \\] # Nested brackets\n )*+\n \\]\n (\n ( # Reference Link\n [ ]? # Optional space\n \\[[^\\]]*+\\] # Ref name\n )\n | ( # Inline Link\n \\( # Opening paren\n [ \\t]*+ # Optional whitespace\n <?(.*?)>? # URL\n [ \\t]*+ # Optional whitespace\n ( # Optional Title\n (?<title>['\"])\n (.*?)\n \\k<title>\n )?\n \\)\n )\n )\n )\n | (?!(?<=\\S)\\k<open>). # Everything besides\n # style closer\n )++\n (?<=\\S)(?=__\\b|\\*\\*)\\k<open> # Close\n)\n",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.bold.markdown"
+ }
+ },
+ "end": "(?<=\\S)(\\1)",
+ "name": "markup.bold.markdown",
+ "patterns": [
+ {
+ "applyEndPatternLast": 1,
+ "begin": "(?=<[^>]*?>)",
+ "end": "(?<=>)",
+ "patterns": [
+ {
+ "include": "text.html.derivative"
+ }
+ ]
+ },
+ {
+ "include": "#escape"
+ },
+ {
+ "include": "#ampersand"
+ },
+ {
+ "include": "#bracket"
+ },
+ {
+ "include": "#raw"
+ },
+ {
+ "include": "#bold"
+ },
+ {
+ "include": "#italic"
+ },
+ {
+ "include": "#image-inline"
+ },
+ {
+ "include": "#link-inline"
+ },
+ {
+ "include": "#link-inet"
+ },
+ {
+ "include": "#link-email"
+ },
+ {
+ "include": "#image-ref"
+ },
+ {
+ "include": "#link-ref-literal"
+ },
+ {
+ "include": "#link-ref"
+ },
+ {
+ "include": "#link-ref-shortcut"
+ },
+ {
+ "include": "#strikethrough"
+ }
+ ]
+ },
+ "bracket": {
+ "comment": "Markdown will convert this for us. We match it so that the HTML grammar will not mark it up as invalid.",
+ "match": "<(?![a-zA-Z/?\\$!])",
+ "name": "meta.other.valid-bracket.markdown"
+ },
+ "escape": {
+ "match": "\\\\[-`*_#+.!(){}\\[\\]\\\\>]",
+ "name": "constant.character.escape.markdown"
+ },
+ "image-inline": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.link.description.begin.markdown"
+ },
+ "2": {
+ "name": "string.other.link.description.markdown"
+ },
+ "4": {
+ "name": "punctuation.definition.link.description.end.markdown"
+ },
+ "5": {
+ "name": "punctuation.definition.metadata.markdown"
+ },
+ "7": {
+ "name": "punctuation.definition.link.markdown"
+ },
+ "8": {
+ "name": "markup.underline.link.image.markdown"
+ },
+ "9": {
+ "name": "punctuation.definition.link.markdown"
+ },
+ "10": {
+ "name": "markup.underline.link.image.markdown"
+ },
+ "12": {
+ "name": "string.other.link.description.title.markdown"
+ },
+ "13": {
+ "name": "punctuation.definition.string.begin.markdown"
+ },
+ "14": {
+ "name": "punctuation.definition.string.end.markdown"
+ },
+ "15": {
+ "name": "string.other.link.description.title.markdown"
+ },
+ "16": {
+ "name": "punctuation.definition.string.begin.markdown"
+ },
+ "17": {
+ "name": "punctuation.definition.string.end.markdown"
+ },
+ "18": {
+ "name": "string.other.link.description.title.markdown"
+ },
+ "19": {
+ "name": "punctuation.definition.string.begin.markdown"
+ },
+ "20": {
+ "name": "punctuation.definition.string.end.markdown"
+ },
+ "21": {
+ "name": "punctuation.definition.metadata.markdown"
+ }
+ },
+ "match": "(?x)\n (\\!\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\])\n # Match the link text.\n (\\() # Opening paren for url\n # The url\n [ \\t]*\n (\n (<)((?:\\\\[<>]|[^<>\\n])*)(>)\n | ((?<url>(?>[^\\s()]+)|\\(\\g<url>*\\))*)\n )\n [ \\t]*\n (?:\n ((\\().+?(\\))) # Match title in parens…\n | ((\").+?(\")) # or in double quotes…\n | ((').+?(')) # or in single quotes.\n )? # Title is optional\n \\s* # Optional whitespace\n (\\))\n",
+ "name": "meta.image.inline.markdown"
+ },
+ "image-ref": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.link.description.begin.markdown"
+ },
+ "2": {
+ "name": "string.other.link.description.markdown"
+ },
+ "4": {
+ "name": "punctuation.definition.link.description.end.markdown"
+ },
+ "5": {
+ "name": "punctuation.definition.constant.markdown"
+ },
+ "6": {
+ "name": "constant.other.reference.link.markdown"
+ },
+ "7": {
+ "name": "punctuation.definition.constant.markdown"
+ }
+ },
+ "match": "(\\!\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\])[ ]?(\\[)(.*?)(\\])",
+ "name": "meta.image.reference.markdown"
+ },
+ "italic": {
+ "begin": "(?x) (?<open>(\\*(?=\\w)|(?<!\\w)\\*|(?<!\\w)\\b_))(?=\\S) # Open\n (?=\n (\n <[^>]*+> # HTML tags\n | (?<raw>`+)([^`]|(?!(?<!`)\\k<raw>(?!`))`)*+\\k<raw>\n # Raw\n | \\\\[\\\\`*_{}\\[\\]()#.!+\\->]?+ # Escapes\n | \\[\n (\n (?<square> # Named group\n [^\\[\\]\\\\] # Match most chars\n | \\\\. # Escaped chars\n | \\[ \\g<square>*+ \\] # Nested brackets\n )*+\n \\]\n (\n ( # Reference Link\n [ ]? # Optional space\n \\[[^\\]]*+\\] # Ref name\n )\n | ( # Inline Link\n \\( # Opening paren\n [ \\t]*+ # Optional whtiespace\n <?(.*?)>? # URL\n [ \\t]*+ # Optional whtiespace\n ( # Optional Title\n (?<title>['\"])\n (.*?)\n \\k<title>\n )?\n \\)\n )\n )\n )\n | \\k<open>\\k<open> # Must be bold closer\n | (?!(?<=\\S)\\k<open>). # Everything besides\n # style closer\n )++\n (?<=\\S)(?=_\\b|\\*)\\k<open> # Close\n )\n",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.italic.markdown"
+ }
+ },
+ "end": "(?<=\\S)(\\1)((?!\\1)|(?=\\1\\1))",
+ "name": "markup.italic.markdown",
+ "patterns": [
+ {
+ "applyEndPatternLast": 1,
+ "begin": "(?=<[^>]*?>)",
+ "end": "(?<=>)",
+ "patterns": [
+ {
+ "include": "text.html.derivative"
+ }
+ ]
+ },
+ {
+ "include": "#escape"
+ },
+ {
+ "include": "#ampersand"
+ },
+ {
+ "include": "#bracket"
+ },
+ {
+ "include": "#raw"
+ },
+ {
+ "include": "#bold"
+ },
+ {
+ "include": "#image-inline"
+ },
+ {
+ "include": "#link-inline"
+ },
+ {
+ "include": "#link-inet"
+ },
+ {
+ "include": "#link-email"
+ },
+ {
+ "include": "#image-ref"
+ },
+ {
+ "include": "#link-ref-literal"
+ },
+ {
+ "include": "#link-ref"
+ },
+ {
+ "include": "#link-ref-shortcut"
+ },
+ {
+ "include": "#strikethrough"
+ }
+ ]
+ },
+ "link-email": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.link.markdown"
+ },
+ "2": {
+ "name": "markup.underline.link.markdown"
+ },
+ "4": {
+ "name": "punctuation.definition.link.markdown"
+ }
+ },
+ "match": "(<)((?:mailto:)?[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*)(>)",
+ "name": "meta.link.email.lt-gt.markdown"
+ },
+ "link-inet": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.link.markdown"
+ },
+ "2": {
+ "name": "markup.underline.link.markdown"
+ },
+ "3": {
+ "name": "punctuation.definition.link.markdown"
+ }
+ },
+ "match": "(<)((?:https?|ftp)://.*?)(>)",
+ "name": "meta.link.inet.markdown"
+ },
+ "link-inline": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.link.title.begin.markdown"
+ },
+ "2": {
+ "name": "string.other.link.title.markdown",
+ "patterns": [
+ {
+ "include": "#raw"
+ },
+ {
+ "include": "#bold"
+ },
+ {
+ "include": "#italic"
+ },
+ {
+ "include": "#strikethrough"
+ },
+ {
+ "include": "#image-inline"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.link.title.end.markdown"
+ },
+ "5": {
+ "name": "punctuation.definition.metadata.markdown"
+ },
+ "7": {
+ "name": "punctuation.definition.link.markdown"
+ },
+ "8": {
+ "name": "markup.underline.link.markdown"
+ },
+ "9": {
+ "name": "punctuation.definition.link.markdown"
+ },
+ "10": {
+ "name": "markup.underline.link.markdown"
+ },
+ "12": {
+ "name": "string.other.link.description.title.markdown"
+ },
+ "13": {
+ "name": "punctuation.definition.string.begin.markdown"
+ },
+ "14": {
+ "name": "punctuation.definition.string.end.markdown"
+ },
+ "15": {
+ "name": "string.other.link.description.title.markdown"
+ },
+ "16": {
+ "name": "punctuation.definition.string.begin.markdown"
+ },
+ "17": {
+ "name": "punctuation.definition.string.end.markdown"
+ },
+ "18": {
+ "name": "string.other.link.description.title.markdown"
+ },
+ "19": {
+ "name": "punctuation.definition.string.begin.markdown"
+ },
+ "20": {
+ "name": "punctuation.definition.string.end.markdown"
+ },
+ "21": {
+ "name": "punctuation.definition.metadata.markdown"
+ }
+ },
+ "match": "(?x)\n (\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\])\n # Match the link text.\n (\\() # Opening paren for url\n # The url\n [ \\t]*\n (\n (<)((?:\\\\[<>]|[^<>\\n])*)(>)\n | ((?<url>(?>[^\\s()]+)|\\(\\g<url>*\\))*)\n )\n [ \\t]*\n # The title \n (?:\n ((\\()[^()]*(\\))) # Match title in parens…\n | ((\")[^\"]*(\")) # or in double quotes…\n | ((')[^']*(')) # or in single quotes.\n )? # Title is optional\n \\s* # Optional whitespace\n (\\))\n",
+ "name": "meta.link.inline.markdown"
+ },
+ "link-ref": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.link.title.begin.markdown"
+ },
+ "2": {
+ "name": "string.other.link.title.markdown",
+ "patterns": [
+ {
+ "include": "#raw"
+ },
+ {
+ "include": "#bold"
+ },
+ {
+ "include": "#italic"
+ },
+ {
+ "include": "#strikethrough"
+ },
+ {
+ "include": "#image-inline"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.link.title.end.markdown"
+ },
+ "5": {
+ "name": "punctuation.definition.constant.begin.markdown"
+ },
+ "6": {
+ "name": "constant.other.reference.link.markdown"
+ },
+ "7": {
+ "name": "punctuation.definition.constant.end.markdown"
+ }
+ },
+ "match": "(?<![\\]\\\\])(\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\])(\\[)([^\\]]*+)(\\])",
+ "name": "meta.link.reference.markdown"
+ },
+ "link-ref-literal": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.link.title.begin.markdown"
+ },
+ "2": {
+ "name": "string.other.link.title.markdown"
+ },
+ "4": {
+ "name": "punctuation.definition.link.title.end.markdown"
+ },
+ "5": {
+ "name": "punctuation.definition.constant.begin.markdown"
+ },
+ "6": {
+ "name": "punctuation.definition.constant.end.markdown"
+ }
+ },
+ "match": "(?<![\\]\\\\])(\\[)((?<square>[^\\[\\]\\\\]|\\\\.|\\[\\g<square>*+\\])*+)(\\])[ ]?(\\[)(\\])",
+ "name": "meta.link.reference.literal.markdown"
+ },
+ "link-ref-shortcut": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.link.title.begin.markdown"
+ },
+ "2": {
+ "name": "string.other.link.title.markdown"
+ },
+ "3": {
+ "name": "punctuation.definition.link.title.end.markdown"
+ }
+ },
+ "match": "(?<![\\]\\\\])(\\[)(\\S+?)(\\])",
+ "name": "meta.link.reference.markdown"
+ },
+ "raw": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.raw.markdown"
+ },
+ "3": {
+ "name": "punctuation.definition.raw.markdown"
+ }
+ },
+ "match": "(`+)((?:[^`]|(?!(?<!`)\\1(?!`))`)*+)(\\1)",
+ "name": "markup.inline.raw.string.markdown"
+ },
+ "strikethrough": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.strikethrough.markdown"
+ },
+ "2": {
+ "patterns": [
+ {
+ "applyEndPatternLast": 1,
+ "begin": "(?=<[^>]*?>)",
+ "end": "(?<=>)",
+ "patterns": [
+ {
+ "include": "text.html.derivative"
+ }
+ ]
+ },
+ {
+ "include": "#escape"
+ },
+ {
+ "include": "#ampersand"
+ },
+ {
+ "include": "#bracket"
+ },
+ {
+ "include": "#raw"
+ },
+ {
+ "include": "#bold"
+ },
+ {
+ "include": "#italic"
+ },
+ {
+ "include": "#image-inline"
+ },
+ {
+ "include": "#link-inline"
+ },
+ {
+ "include": "#link-inet"
+ },
+ {
+ "include": "#link-email"
+ },
+ {
+ "include": "#image-ref"
+ },
+ {
+ "include": "#link-ref-literal"
+ },
+ {
+ "include": "#link-ref"
+ },
+ {
+ "include": "#link-ref-shortcut"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.strikethrough.markdown"
+ }
+ },
+ "match": "(?<!\\\\)(~{2,})((?:[^~]|(?!(?<![~\\\\])\\1(?!~))~)*+)(\\1)",
+ "name": "markup.strikethrough.markdown"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/marko.tmLanguage.json b/node_modules/shiki/languages/marko.tmLanguage.json
new file mode 100644
index 0000000..db2f7a4
--- /dev/null
+++ b/node_modules/shiki/languages/marko.tmLanguage.json
@@ -0,0 +1,1342 @@
+{
+ "fileTypes": ["marko"],
+ "name": "marko",
+ "patterns": [
+ {
+ "begin": "^\\s*(style)\\s+(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.marko.css"
+ },
+ "2": {
+ "name": "punctuation.section.scope.begin.marko.css"
+ }
+ },
+ "comment": "CSS style block, eg: style { color: green }",
+ "contentName": "source.css",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.end.marko.css"
+ }
+ },
+ "name": "meta.embedded.css",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(style)\\.(less)\\s+(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.marko.css"
+ },
+ "2": {
+ "name": "storage.modifier.marko.css"
+ },
+ "3": {
+ "name": "punctuation.section.scope.begin.marko.css"
+ }
+ },
+ "comment": "Less style block, eg: style.less { color: green }",
+ "contentName": "source.less",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.end.marko.css"
+ }
+ },
+ "name": "meta.embedded.less",
+ "patterns": [
+ {
+ "include": "source.css.less"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(style)\\.(scss)\\s+(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.marko.css"
+ },
+ "2": {
+ "name": "storage.modifier.marko.css"
+ },
+ "3": {
+ "name": "punctuation.section.scope.begin.marko.css"
+ }
+ },
+ "comment": "SCSS style block, eg: style.scss { color: green }",
+ "contentName": "source.scss",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.end.marko.css"
+ }
+ },
+ "name": "meta.embedded.scss",
+ "patterns": [
+ {
+ "include": "source.css.scss"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(?:(static )|(?=(?:class|import|export) ))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.static.marko"
+ }
+ },
+ "comment": "Top level blocks parsed as JavaScript",
+ "contentName": "source.js",
+ "end": "(?=\\n|$)",
+ "name": "meta.embedded.js",
+ "patterns": [
+ {
+ "include": "#javascript-statement"
+ }
+ ]
+ },
+ {
+ "include": "#content-concise-mode"
+ }
+ ],
+ "repository": {
+ "attrs": {
+ "patterns": [
+ {
+ "applyEndPatternLast": 1,
+ "begin": "(?:\\s+|,)(?:(key|on[a-zA-Z0-9_$-]+|[a-zA-Z0-9_$]+Change|no-update(?:-body)?(?:-if)?)|([a-zA-Z0-9_$][a-zA-Z0-9_$-]*))(:[a-zA-Z0-9_$][a-zA-Z0-9_$-]*)?",
+ "beginCaptures": {
+ "1": {
+ "name": "support.type.attribute-name.marko"
+ },
+ "2": {
+ "name": "entity.other.attribute-name.marko"
+ },
+ "3": {
+ "name": "support.function.attribute-name.marko"
+ }
+ },
+ "comment": "Attribute with optional value",
+ "end": "(?=.|$)",
+ "name": "meta.marko-attribute",
+ "patterns": [
+ {
+ "include": "#html-args-or-method"
+ },
+ {
+ "applyEndPatternLast": 1,
+ "begin": "\\s*(:?=)\\s*",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ },
+ "comment": "Attribute value",
+ "contentName": "source.js",
+ "end": "(?=.|$)",
+ "name": "meta.embedded.js",
+ "patterns": [
+ {
+ "include": "#javascript-expression"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "applyEndPatternLast": 1,
+ "begin": "(?:\\s+|,)\\.\\.\\.",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.spread.marko"
+ }
+ },
+ "comment": "A ...spread attribute",
+ "contentName": "source.js",
+ "end": "(?=.|$)",
+ "name": "meta.marko-spread-attribute",
+ "patterns": [
+ {
+ "include": "#javascript-expression"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*(,(?!,))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ },
+ "comment": "Consume any whitespace after a comma",
+ "end": "(?!\\S)"
+ },
+ {
+ "include": "#javascript-comment-multiline"
+ },
+ {
+ "include": "#invalid"
+ }
+ ]
+ },
+ "concise-html-block": {
+ "begin": "\\s*(--+)\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "punctuation.section.scope.begin.marko"
+ }
+ },
+ "comment": "--- HTML block within concise mode content. ---",
+ "end": "\\1",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.scope.end.marko"
+ }
+ },
+ "name": "meta.section.marko-html-block",
+ "patterns": [
+ {
+ "include": "#content-html-mode"
+ }
+ ]
+ },
+ "concise-html-line": {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.begin.marko"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#html-comments"
+ },
+ {
+ "include": "#tag-html"
+ },
+ {
+ "match": "\\\\.",
+ "name": "string"
+ },
+ {
+ "include": "#placeholder"
+ },
+ {
+ "match": ".+?",
+ "name": "string"
+ }
+ ]
+ }
+ },
+ "comment": "-- HTML line within concise mode content. (content-html-mode w/o scriptlet)",
+ "match": "\\s*(--+)(?=\\s+\\S)(.*$)",
+ "name": "meta.section.marko-html-line"
+ },
+ "concise-open-tag-content": {
+ "patterns": [
+ {
+ "include": "#tag-before-attrs"
+ },
+ {
+ "begin": "\\s*\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.begin.marko"
+ }
+ },
+ "end": "]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.end.marko"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attrs"
+ },
+ {
+ "include": "#invalid"
+ }
+ ]
+ },
+ {
+ "begin": "(?!^)(?= )",
+ "end": "(?=--)|(?<!,)(?=\\n)",
+ "patterns": [
+ {
+ "include": "#attrs"
+ },
+ {
+ "include": "#invalid"
+ }
+ ]
+ }
+ ]
+ },
+ "concise-script-block": {
+ "begin": "(\\s+)(--+)\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "punctuation.section.scope.begin.marko"
+ }
+ },
+ "comment": "--- Embedded concise script content block. ---",
+ "end": "(\\2)|(?=^(?!\\1)\\s*\\S)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.scope.end.marko"
+ }
+ },
+ "name": "meta.section.marko-script-block",
+ "patterns": [
+ {
+ "include": "#content-embedded-script"
+ }
+ ]
+ },
+ "concise-script-line": {
+ "applyEndPatternLast": 1,
+ "begin": "\\s*(--+)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.scope.begin.marko"
+ }
+ },
+ "comment": "-- Embedded concise script content line.",
+ "end": "$",
+ "name": "meta.section.marko-script-line",
+ "patterns": [
+ {
+ "include": "#content-embedded-script"
+ }
+ ]
+ },
+ "concise-style-block": {
+ "begin": "(\\s+)(--+)\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "punctuation.section.scope.begin.marko"
+ }
+ },
+ "comment": "--- Embedded concise style content block. ---",
+ "contentName": "source.css",
+ "end": "(\\2)|(?=^(?!\\1)\\s*\\S)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.scope.end.marko"
+ }
+ },
+ "name": "meta.section.marko-style-block",
+ "patterns": [
+ {
+ "include": "#content-embedded-style"
+ }
+ ]
+ },
+ "concise-style-block-less": {
+ "begin": "(\\s+)(--+)\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "punctuation.section.scope.begin.marko"
+ }
+ },
+ "comment": "--- Embedded concise style content block. ---",
+ "contentName": "source.less",
+ "end": "(\\2)|(?=^(?!\\1)\\s*\\S)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.scope.end.marko"
+ }
+ },
+ "name": "meta.section.marko-style-block",
+ "patterns": [
+ {
+ "include": "#content-embedded-style-less"
+ }
+ ]
+ },
+ "concise-style-block-scss": {
+ "begin": "(\\s+)(--+)\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "punctuation.section.scope.begin.marko"
+ }
+ },
+ "comment": "--- Embedded concise style content block. ---",
+ "contentName": "source.scss",
+ "end": "(\\2)|(?=^(?!\\1)\\s*\\S)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.scope.end.marko"
+ }
+ },
+ "name": "meta.section.marko-style-block",
+ "patterns": [
+ {
+ "include": "#content-embedded-style-scss"
+ }
+ ]
+ },
+ "concise-style-line": {
+ "applyEndPatternLast": 1,
+ "begin": "\\s*(--+)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.scope.begin.marko"
+ }
+ },
+ "comment": "-- Embedded concise style content line.",
+ "contentName": "source.css",
+ "end": "$",
+ "name": "meta.section.marko-style-line",
+ "patterns": [
+ {
+ "include": "#content-embedded-style"
+ }
+ ]
+ },
+ "concise-style-line-less": {
+ "applyEndPatternLast": 1,
+ "begin": "\\s*(--+)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.scope.begin.marko"
+ }
+ },
+ "comment": "-- Embedded concise style content line.",
+ "contentName": "source.less",
+ "end": "$",
+ "name": "meta.section.marko-style-line",
+ "patterns": [
+ {
+ "include": "#content-embedded-style-less"
+ }
+ ]
+ },
+ "concise-style-line-scss": {
+ "applyEndPatternLast": 1,
+ "begin": "\\s*(--+)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.scope.begin.marko"
+ }
+ },
+ "comment": "-- Embedded concise style content line.",
+ "contentName": "source.scss",
+ "end": "$",
+ "name": "meta.section.marko-style-line",
+ "patterns": [
+ {
+ "include": "#content-embedded-style-scss"
+ }
+ ]
+ },
+ "content-concise-mode": {
+ "comment": "Concise mode content block.",
+ "name": "meta.marko-concise-content",
+ "patterns": [
+ {
+ "include": "#scriptlet"
+ },
+ {
+ "include": "#javascript-comments"
+ },
+ {
+ "include": "#html-comments"
+ },
+ {
+ "include": "#concise-html-block"
+ },
+ {
+ "include": "#concise-html-line"
+ },
+ {
+ "include": "#tag-html"
+ },
+ {
+ "comment": "A concise html tag.",
+ "patterns": [
+ {
+ "begin": "^(\\s*)(?=style\\.less\\b)",
+ "comment": "Concise style tag less",
+ "patterns": [
+ {
+ "include": "#concise-open-tag-content"
+ },
+ {
+ "include": "#concise-style-block-less"
+ },
+ {
+ "include": "#concise-style-line-less"
+ }
+ ],
+ "while": "(?=^\\1\\s+(\\S|$))"
+ },
+ {
+ "begin": "^(\\s*)(?=style\\.scss\\b)",
+ "comment": "Concise style tag scss",
+ "patterns": [
+ {
+ "include": "#concise-open-tag-content"
+ },
+ {
+ "include": "#concise-style-block-scss"
+ },
+ {
+ "include": "#concise-style-line-scss"
+ }
+ ],
+ "while": "(?=^\\1\\s+(\\S|$))"
+ },
+ {
+ "begin": "^(\\s*)(?=style\\b)",
+ "comment": "Concise style tag",
+ "patterns": [
+ {
+ "include": "#concise-open-tag-content"
+ },
+ {
+ "include": "#concise-style-block"
+ },
+ {
+ "include": "#concise-style-line"
+ }
+ ],
+ "while": "(?=^\\1\\s+(\\S|$))"
+ },
+ {
+ "begin": "^(\\s*)(?=script\\b)",
+ "comment": "Concise script tag",
+ "patterns": [
+ {
+ "include": "#concise-open-tag-content"
+ },
+ {
+ "include": "#concise-script-block"
+ },
+ {
+ "include": "#concise-script-line"
+ }
+ ],
+ "while": "(?=^\\1\\s+(\\S|$))"
+ },
+ {
+ "begin": "^(\\s*)(?=[a-zA-Z0-9_$@])",
+ "comment": "Normal concise tag",
+ "patterns": [
+ {
+ "include": "#concise-open-tag-content"
+ },
+ {
+ "include": "#content-concise-mode"
+ }
+ ],
+ "while": "(?=^\\1\\s+(\\S|$))"
+ }
+ ]
+ },
+ {
+ "include": "#invalid"
+ }
+ ]
+ },
+ "content-embedded-script": {
+ "name": "meta.embedded.js",
+ "patterns": [
+ {
+ "include": "#placeholder"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "content-embedded-style": {
+ "name": "meta.embedded.css",
+ "patterns": [
+ {
+ "include": "#placeholder"
+ },
+ {
+ "include": "source.css"
+ }
+ ]
+ },
+ "content-embedded-style-less": {
+ "name": "meta.embedded.css.less",
+ "patterns": [
+ {
+ "include": "#placeholder"
+ },
+ {
+ "include": "source.css.less"
+ }
+ ]
+ },
+ "content-embedded-style-scss": {
+ "name": "meta.embedded.css.scss",
+ "patterns": [
+ {
+ "include": "#placeholder"
+ },
+ {
+ "include": "source.css.scss"
+ }
+ ]
+ },
+ "content-html-mode": {
+ "comment": "HTML mode content block.",
+ "patterns": [
+ {
+ "include": "#scriptlet"
+ },
+ {
+ "include": "#html-comments"
+ },
+ {
+ "include": "#tag-html"
+ },
+ {
+ "match": "\\\\.",
+ "name": "string"
+ },
+ {
+ "include": "#placeholder"
+ },
+ {
+ "match": ".+?",
+ "name": "string"
+ }
+ ]
+ },
+ "html-args-or-method": {
+ "patterns": [
+ {
+ "include": "#javascript-args"
+ },
+ {
+ "begin": "(?<=\\))\\s*(?=\\{)",
+ "comment": "Attribute method shorthand following parens",
+ "contentName": "source.js",
+ "end": "(?<=\\})",
+ "name": "meta.embedded.js",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ "html-comments": {
+ "patterns": [
+ {
+ "begin": "\\s*(<!(--)?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.marko"
+ }
+ },
+ "comment": "HTML comments, doctypes & cdata",
+ "end": "\\2>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.marko"
+ }
+ },
+ "name": "comment.block.marko"
+ },
+ {
+ "begin": "\\s*(<html-comment>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.marko"
+ }
+ },
+ "comment": "Preserved HTML comment tag",
+ "end": "</html-comment>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.marko"
+ }
+ },
+ "name": "comment.block.marko"
+ }
+ ]
+ },
+ "invalid": {
+ "match": "[^\\s]",
+ "name": "invalid.illegal.character-not-allowed-here.marko"
+ },
+ "javascript-args": {
+ "begin": "(?=\\()",
+ "comment": "Javascript style arguments",
+ "contentName": "source.js",
+ "end": "(?<=\\))",
+ "name": "meta.embedded.js",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "javascript-comment-line": {
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ },
+ "comment": "JavaScript // single line comment",
+ "contentName": "source.js",
+ "match": "\\s*//.*$"
+ },
+ "javascript-comment-multiline": {
+ "begin": "\\s*(?=/\\*)",
+ "comment": "JavaScript /* block comment */",
+ "contentName": "source.js",
+ "end": "(?<=\\*/)",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "javascript-comments": {
+ "patterns": [
+ {
+ "include": "#javascript-comment-multiline"
+ },
+ {
+ "include": "#javascript-comment-line"
+ }
+ ]
+ },
+ "javascript-enclosed": {
+ "comment": "Matches JavaScript content and ensures enclosed blocks are matched.",
+ "patterns": [
+ {
+ "include": "#javascript-comments"
+ },
+ {
+ "include": "#javascript-args"
+ },
+ {
+ "begin": "(?={)",
+ "end": "(?<=})",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "(?=\\[)",
+ "end": "(?<=])",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "(?=\")",
+ "end": "(?<=\")",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "(?=')",
+ "end": "(?<=')",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "(?=`)",
+ "end": "(?<=`)",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "/(?!<[\\]})A-Z0-9.<%]\\s*/)(?!/?>|$)",
+ "captures": {
+ "0": {
+ "name": "string.regexp.js"
+ }
+ },
+ "contentName": "source.js",
+ "end": "/[gimsuy]*",
+ "patterns": [
+ {
+ "include": "source.js#regexp"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\\s*(?:\n\t\t\t\t\t\t\t\t(?:\\b(?:new|typeof|instanceof|in)\\b)| # Keyword operators\n\t\t\t\t\t\t\t\t\\&\\&|\\|\\|| # Logical operators\n\t\t\t\t\t\t\t\t[\\^|&]| # Bitwise operators\n\t\t\t\t\t\t\t\t[!=]=|[!=]==|<|<[=<]|=>| # Comparison operators (Note you cannot use * or ? here)\n\t\t\t\t\t\t\t\t[?:]| # Ternary operators\n\t\t\t\t\t\t\t\t[-+*%](?!-) # Arithmetic operators\n\t\t\t\t\t\t\t)",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ },
+ "end": "(?=\\S)"
+ }
+ ]
+ },
+ "javascript-expression": {
+ "patterns": [
+ {
+ "include": "#javascript-enclosed"
+ },
+ {
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ },
+ "comment": "Match identifiers and member expressions",
+ "match": "[0-9a-zA-Z$_.]+"
+ }
+ ]
+ },
+ "javascript-statement": {
+ "patterns": [
+ {
+ "include": "#javascript-enclosed"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "open-tag-content": {
+ "patterns": [
+ {
+ "include": "#tag-before-attrs"
+ },
+ {
+ "begin": "(?= )",
+ "comment": "Attributes begin after the first space within the tag name",
+ "end": "(?=/?>)",
+ "patterns": [
+ {
+ "include": "#attrs"
+ }
+ ]
+ }
+ ]
+ },
+ "placeholder": {
+ "begin": "\\$!?{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.begin.js"
+ }
+ },
+ "comment": "${ } placeholder",
+ "contentName": "source.js",
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.end.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "scriptlet": {
+ "begin": "^\\s*(\\$)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.scriptlet.marko"
+ }
+ },
+ "comment": "An inline JavaScript scriptlet.",
+ "contentName": "source.js",
+ "end": "$",
+ "name": "meta.embedded.js",
+ "patterns": [
+ {
+ "include": "#javascript-statement"
+ }
+ ]
+ },
+ "tag-before-attrs": {
+ "comment": "Everything in a tag before the attributes content",
+ "patterns": [
+ {
+ "include": "#tag-name"
+ },
+ {
+ "comment": "Shorthand class or ID attribute",
+ "match": "[#.][a-zA-Z0-9_$][a-zA-Z0-9_$-]*",
+ "name": "entity.other.attribute-name.marko"
+ },
+ {
+ "begin": "/(?!/)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.key-value.marko"
+ }
+ },
+ "comment": "Variable for a tag",
+ "contentName": "source.js",
+ "end": "(?=:?\\=|\\s|>|$|\\||\\(|/)",
+ "name": "meta.embedded.js",
+ "patterns": [
+ {
+ "comment": "Match identifiers",
+ "match": "[a-zA-Z$_][0-9a-zA-Z$_]*",
+ "name": "variable.other.constant.object.js"
+ },
+ {
+ "include": "source.js#object-binding-pattern"
+ },
+ {
+ "include": "source.js#array-binding-pattern"
+ },
+ {
+ "include": "source.js#var-single-variable"
+ },
+ {
+ "include": "#javascript-expression"
+ }
+ ]
+ },
+ {
+ "applyEndPatternLast": 1,
+ "begin": "\\s*(:?=)\\s*",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ },
+ "comment": "Default attribute value",
+ "contentName": "source.js",
+ "end": "(?=.|$)",
+ "name": "meta.embedded.js",
+ "patterns": [
+ {
+ "include": "#javascript-expression"
+ }
+ ]
+ },
+ {
+ "begin": "\\|",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.begin.marko"
+ }
+ },
+ "comment": "Parameters for a tag",
+ "end": "\\|",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.end.marko"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.js#function-parameters-body"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "include": "#html-args-or-method"
+ }
+ ]
+ },
+ "tag-html": {
+ "comment": "Matches an HTML tag and its contents",
+ "patterns": [
+ {
+ "begin": "\\s*(<)(?=(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "comment": "HTML void elements",
+ "end": "/?>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#open-tag-content"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*(<)(?=style\\.less\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.marko"
+ }
+ },
+ "comment": "HTML style tag with less",
+ "end": "/>|(?<=\\>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#open-tag-content"
+ },
+ {
+ "begin": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "comment": "Style body content",
+ "contentName": "source.less",
+ "end": "\\s*(</)(style)?(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.marko"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#tag-name"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#content-embedded-style-less"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\s*(<)(?=style\\.scss\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.marko"
+ }
+ },
+ "comment": "HTML style tag with scss",
+ "end": "/>|(?<=\\>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#open-tag-content"
+ },
+ {
+ "begin": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "comment": "Style body content",
+ "contentName": "source.less",
+ "end": "\\s*(</)(style)?(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.marko"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#tag-name"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#content-embedded-style-scss"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\s*(<)(?=style\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.marko"
+ }
+ },
+ "comment": "HTML style tag",
+ "end": "/>|(?<=\\>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#open-tag-content"
+ },
+ {
+ "begin": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "comment": "Style body content",
+ "contentName": "source.css",
+ "end": "\\s*(</)(style)?(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.marko"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#tag-name"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#content-embedded-style"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\s*(<)(?=script\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.marko"
+ }
+ },
+ "comment": "HTML script tag",
+ "end": "/>|(?<=\\>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#open-tag-content"
+ },
+ {
+ "begin": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "comment": "Script body content",
+ "contentName": "source.js",
+ "end": "\\s*(</)(script)?(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.marko"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#tag-name"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#content-embedded-script"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\s*(<)(?=[a-zA-Z0-9_$@])",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.marko"
+ }
+ },
+ "comment": "HTML normal tag",
+ "end": "/>|(?<=\\>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#open-tag-content"
+ },
+ {
+ "begin": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "comment": "Body content",
+ "end": "\\s*(</)([a-zA-Z0-9_$:@-]+)?(.*?)(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.marko"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#tag-name"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#invalid"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.tag.end.marko"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#content-html-mode"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "tag-name": {
+ "patterns": [
+ {
+ "begin": "\\${",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.begin.js"
+ }
+ },
+ "comment": "Dynamic tag.",
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.end.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.name.tag.marko"
+ },
+ "2": {
+ "name": "storage.type.marko.css"
+ },
+ "3": {
+ "patterns": [
+ {
+ "comment": "Core tag.",
+ "match": "(attrs|return|import)(?=\\b)",
+ "name": "support.type.builtin.marko"
+ },
+ {
+ "comment": "Core tag.",
+ "match": "(for|if|while|else-if|else|macro|tag|await|let|const|effect|set|get|id|lifecycle)(?=\\b)",
+ "name": "support.function.marko"
+ },
+ {
+ "comment": "Attribute tag.",
+ "match": "@.+",
+ "name": "entity.other.attribute-name.marko"
+ },
+ {
+ "comment": "Native or userland tag.",
+ "match": ".+",
+ "name": "entity.name.tag.marko"
+ }
+ ]
+ }
+ },
+ "match": "(style)\\.([a-zA-Z0-9$_-]+(?:\\.[a-zA-Z0-9$_-]+)*)|([a-zA-Z0-9_$@][a-zA-Z0-9_$@:-]*)"
+ }
+ ]
+ }
+ },
+ "scopeName": "text.marko",
+ "uuid": "46c8c3f8-cabe-466a-a633-5deafdc51253"
+}
diff --git a/node_modules/shiki/languages/matlab.tmLanguage.json b/node_modules/shiki/languages/matlab.tmLanguage.json
new file mode 100644
index 0000000..e9226ef
--- /dev/null
+++ b/node_modules/shiki/languages/matlab.tmLanguage.json
@@ -0,0 +1,1130 @@
+{
+ "fileTypes": ["m"],
+ "keyEquivalent": "^~M",
+ "name": "matlab",
+ "patterns": [
+ {
+ "comment": "This and #all_after_command_dual are split out so #command_dual can be excluded in things like (), {}, []",
+ "include": "#all_before_command_dual"
+ },
+ {
+ "include": "#command_dual"
+ },
+ {
+ "include": "#all_after_command_dual"
+ }
+ ],
+ "repository": {
+ "all_before_command_dual": {
+ "patterns": [
+ {
+ "include": "#classdef"
+ },
+ {
+ "include": "#function"
+ },
+ {
+ "include": "#blocks"
+ },
+ {
+ "include": "#control_statements"
+ },
+ {
+ "include": "#global_persistent"
+ },
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#square_brackets"
+ },
+ {
+ "include": "#indexing_curly_brackets"
+ },
+ {
+ "include": "#curly_brackets"
+ }
+ ]
+ },
+ "all_after_command_dual": {
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#line_continuation"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#conjugate_transpose"
+ },
+ {
+ "include": "#transpose"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#operators"
+ }
+ ]
+ },
+ "blocks": {
+ "patterns": [
+ {
+ "begin": "\\s*(?:^|[\\s,;])(for)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.for.matlab"
+ }
+ },
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.for.matlab"
+ }
+ },
+ "name": "meta.for.matlab",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*(?:^|[\\s,;])(if)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.if.matlab"
+ }
+ },
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.if.matlab"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "name": "meta.if.matlab",
+ "patterns": [
+ {
+ "captures": {
+ "2": {
+ "name": "keyword.control.elseif.matlab"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "end": "^",
+ "match": "(\\s*)(?:^|[\\s,;])(elseif)\\b(.*)$\\n?",
+ "name": "meta.elseif.matlab"
+ },
+ {
+ "captures": {
+ "2": {
+ "name": "keyword.control.else.matlab"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "end": "^",
+ "match": "(\\s*)(?:^|[\\s,;])(else)\\b(.*)?$\\n?",
+ "name": "meta.else.matlab"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*(?:^|[\\s,;])(parfor)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.for.matlab"
+ }
+ },
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.for.matlab"
+ }
+ },
+ "name": "meta.parfor.matlab",
+ "patterns": [
+ {
+ "begin": "\\G(?!$)",
+ "end": "$\\n?",
+ "name": "meta.parfor-quantity.matlab",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*(?:^|[\\s,;])(spmd)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.spmd.matlab"
+ }
+ },
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.spmd.matlab"
+ }
+ },
+ "name": "meta.spmd.matlab",
+ "patterns": [
+ {
+ "begin": "\\G(?!$)",
+ "end": "$\\n?",
+ "name": "meta.spmd-statement.matlab",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*(?:^|[\\s,;])(switch)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.matlab"
+ }
+ },
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.switch.matlab"
+ }
+ },
+ "name": "meta.switch.matlab",
+ "patterns": [
+ {
+ "captures": {
+ "2": {
+ "name": "keyword.control.case.matlab"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "end": "^",
+ "match": "(\\s*)(?:^|[\\s,;])(case)\\b(.*)$\\n?",
+ "name": "meta.case.matlab"
+ },
+ {
+ "captures": {
+ "2": {
+ "name": "keyword.control.otherwise.matlab"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "end": "^",
+ "match": "(\\s*)(?:^|[\\s,;])(otherwise)\\b(.*)?$\\n?",
+ "name": "meta.otherwise.matlab"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*(?:^|[\\s,;])(try)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.try.matlab"
+ }
+ },
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.try.matlab"
+ }
+ },
+ "name": "meta.try.matlab",
+ "patterns": [
+ {
+ "captures": {
+ "2": {
+ "name": "keyword.control.catch.matlab"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "end": "^",
+ "match": "(\\s*)(?:^|[\\s,;])(catch)\\b(.*)?$\\n?",
+ "name": "meta.catch.matlab"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*(?:^|[\\s,;])(while)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.while.matlab"
+ }
+ },
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.while.matlab"
+ }
+ },
+ "name": "meta.while.matlab",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "classdef": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\t\t\t\t\t\t\t(classdef)\n\t\t\t\t\t\t\t\\b\\s*\n\t\t\t\t\t\t\t(.*)\n\t\t\t\t\t",
+ "beginCaptures": {
+ "2": {
+ "name": "storage.type.class.matlab"
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(\t\t\t\t\t\t\t\t\t# Optional attributes\n\t\t\t\t\t\t\t\t\t\t\t \\( [^)]* \\)\n\t\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\t\t\t# Class name\n\t\t\t\t\t\t\t\t\t\t\t(?:\t\t\t\t\t\t\t\t# Optional inheritance\n\t\t\t\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t\t\t\t\t(<)\n\t\t\t\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t\t\t\t\t([^%]*)\n\t\t\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\\s*($|(?=(%|...)).*)\n\t\t\t\t\t\t\t\t\t",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "[a-zA-Z][a-zA-Z0-9_]*",
+ "name": "variable.parameter.class.matlab"
+ },
+ {
+ "begin": "=\\s*",
+ "end": ",|(?=\\))",
+ "patterns": [
+ {
+ "match": "true|false",
+ "name": "constant.language.boolean.matlab"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "2": {
+ "name": "meta.class-declaration.matlab"
+ },
+ "3": {
+ "name": "entity.name.section.class.matlab"
+ },
+ "4": {
+ "name": "keyword.operator.other.matlab"
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "[a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)*",
+ "name": "entity.other.inherited-class.matlab"
+ },
+ {
+ "match": "&",
+ "name": "keyword.operator.other.matlab"
+ }
+ ]
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ },
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.class.matlab"
+ }
+ },
+ "name": "meta.class.matlab",
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\t\t\t\t\t\t\t\t\t(properties)\\b([^%]*)\n\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t\t(\t\t\t\t\t\t\t\t\t# Optional attributes\n\t\t\t\t\t\t\t\t\t\t\\( [^)]* \\)\n\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t\\s*($|(?=%))\n\t\t\t\t\t\t\t\t",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control.properties.matlab"
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "[a-zA-Z][a-zA-Z0-9_]*",
+ "name": "variable.parameter.properties.matlab"
+ },
+ {
+ "begin": "=\\s*",
+ "end": ",|(?=\\))",
+ "patterns": [
+ {
+ "match": "true|false",
+ "name": "constant.language.boolean.matlab"
+ },
+ {
+ "match": "public|protected|private",
+ "name": "constant.language.access.matlab"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.properties.matlab"
+ }
+ },
+ "name": "meta.properties.matlab",
+ "patterns": [
+ {
+ "include": "#validators"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\t\t\t\t\t\t\t\t\t(methods)\\b([^%]*)\n\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t\t(\t\t\t\t\t\t\t\t\t# Optional attributes\n\t\t\t\t\t\t\t\t\t\t\\( [^)]* \\)\n\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t\\s*($|(?=%))\n\t\t\t\t\t\t\t\t",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control.methods.matlab"
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "[a-zA-Z][a-zA-Z0-9_]*",
+ "name": "variable.parameter.methods.matlab"
+ },
+ {
+ "begin": "=\\s*",
+ "end": ",|(?=\\))",
+ "patterns": [
+ {
+ "match": "true|false",
+ "name": "constant.language.boolean.matlab"
+ },
+ {
+ "match": "public|protected|private",
+ "name": "constant.language.access.matlab"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.methods.matlab"
+ }
+ },
+ "name": "meta.methods.matlab",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\t\t\t\t\t\t\t\t\t(events)\\b([^%]*)\n\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t\t(\t\t\t\t\t\t\t\t\t# Optional attributes\n\t\t\t\t\t\t\t\t\t\t\\( [^)]* \\)\n\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t\\s*($|(?=%))\n\t\t\t\t\t\t\t\t",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control.events.matlab"
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "[a-zA-Z][a-zA-Z0-9_]*",
+ "name": "variable.parameter.events.matlab"
+ },
+ {
+ "begin": "=\\s*",
+ "end": ",|(?=\\))",
+ "patterns": [
+ {
+ "match": "true|false",
+ "name": "constant.language.boolean.matlab"
+ },
+ {
+ "match": "public|protected|private",
+ "name": "constant.language.access.matlab"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.events.matlab"
+ }
+ },
+ "name": "meta.events.matlab",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\t\t\t\t\t\t\t\t\t(enumeration)\\b([^%]*)\n\t\t\t\t\t\t\t\t\t\\s*($|(?=%))\n\t\t\t\t\t\t\t\t",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control.enumeration.matlab"
+ }
+ },
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.enumeration.matlab"
+ }
+ },
+ "name": "meta.enumeration.matlab",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "command_dual": {
+ "captures": {
+ "1": {
+ "name": "string.interpolated.matlab"
+ },
+ "2": {
+ "name": "variable.other.command.matlab"
+ },
+ "28": {
+ "name": "comment.line.percentage.matlab"
+ }
+ },
+ "comment": " 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1516 17 18 19 20 21 22 23 24 25 26 27 28",
+ "match": "^\\s*((?# A> )([b-df-hk-moq-zA-HJ-MO-Z]\\w*|a|an|a([A-Za-mo-z0-9_]\\w*|n[A-Za-rt-z0-9_]\\w*|ns\\w+)|e|ep|e([A-Za-oq-z0-9_]\\w*|p[A-Za-rt-z0-9_]\\w*|ps\\w+)|in|i([A-Za-mo-z0-9_]\\w*|n[A-Za-eg-z0-9_]\\w*|nf\\w+)|I|In|I([A-Za-mo-z0-9_]\\w*|n[A-Za-eg-z0-9_]\\w*|nf\\w+)|j\\w+|N|Na|N([A-Zb-z0-9_]\\w*|a[A-MO-Za-z0-9_]\\w*|aN\\w+)|n|na|nar|narg|nargi|nargo|nargou|n([A-Zb-z0-9_]\\w*|a([A-Za-mo-qs-z0-9_]\\w*|n\\w+|r([A-Za-fh-z0-9_]\\w*|g([A-Za-hj-nq-z0-9_]\\w*|i([A-Za-mo-z0-9_]\\w*|n\\w+)|o([A-Za-tv-z0-9_]\\w*|u([A-Za-su-z]\\w*|t\\w+))))))|p|p[A-Za-hj-z0-9_]\\w*|pi\\w+)(?# <A )\\s+(((?# B> )([^\\s;,%()=.{&|~<>:+\\-*/\\\\@^'\"]|(?=')|(?=\"))(?# <B )|(?# C> )(\\.\\^|\\.\\*|\\./|\\.\\\\|\\.'|\\.\\(|&&|==|\\|\\||&(?=[^&])|\\|(?=[^\\|])|~=|<=|>=|~(?!=)|<(?!=)|>(?!=)|:|\\+|-|\\*|/|\\\\|@|\\^)(?# <C )(?# D> )([^\\s]|\\s*(?=%)|\\s+$|\\s+(,|;|\\)|}|\\]|&|\\||<|>|=|:|\\*|/|\\\\|\\^|@|(\\.[^\\d.]|\\.\\.[^.])))(?# <D )|(?# E> )(\\.[^^*/\\\\'(\\sA-Za-z])(?# <E ))(?# F> )([^%]|'[^']*'|\"[^\"]*\")*(?# <F )|(?# X> )(\\.(?=\\s)|\\.[A-Za-z]|(?={))(?# <X )(?# Y> )([^(=\\'\"%]|==|'[^']*'|\"[^\"]*\"|\\(|\\([^)%]*\\)|\\[|\\[[^\\]%]*\\]|{|{[^}%]*})*(\\.\\.\\.[^%]*)?((?=%)|$)(?# <Y )))(%.*)?$"
+ },
+ "comment_block": {
+ "begin": "(^[\\s]*)%\\{[^\\n\\S]*+\\n",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.matlab"
+ }
+ },
+ "end": "^[\\s]*%\\}[^\\n\\S]*+(?:\\n|$)",
+ "name": "comment.block.percentage.matlab",
+ "patterns": [
+ {
+ "include": "#comment_block"
+ },
+ {
+ "match": "^[^\\n]*\\n"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "(^[ \\t]+)?(?=%%\\s)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.matlab"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "%%",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.matlab"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.double-percentage.matlab",
+ "patterns": [
+ {
+ "begin": "\\G[^\\S\\n]*(?![\\n\\s])",
+ "contentName": "meta.cell.matlab",
+ "end": "(?=\\n)"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#comment_block"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=%)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.matlab"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "%",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.matlab"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.percentage.matlab"
+ }
+ ]
+ }
+ ]
+ },
+ "control_statements": {
+ "captures": {
+ "1": {
+ "name": "keyword.control.matlab"
+ }
+ },
+ "match": "\\s*(?:^|[\\s,;])(break|continue|return)\\b",
+ "name": "meta.control.matlab"
+ },
+ "function": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t\t\t\t\t# Leading whitespace\n\t\t\t\t\t\t\t(function)\n\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t\t(?:\t\t\t\t\t\t\t\t\t\t\t\t\t# Optional\n\t\t\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\t\t(\\[) ([^\\]]*) (\\])\n\t\t\t\t\t\t\t\t | ([a-zA-Z][a-zA-Z0-9_]*)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\\s* = \\s*\n\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*(\\.[a-zA-Z][a-zA-Z0-9_]*)*)\t# Function name\n\t\t\t\t\t\t\t\\s*\t\t\t\t\t\t\t\t\t\t\t\t\t# Trailing space\n\t\t\t\t\t\t",
+ "beginCaptures": {
+ "2": {
+ "name": "storage.type.function.matlab"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.begin.matlab"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\w+",
+ "name": "variable.parameter.output.matlab"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.arguments.end.matlab"
+ },
+ "6": {
+ "name": "variable.parameter.output.function.matlab"
+ },
+ "7": {
+ "name": "entity.name.function.matlab"
+ }
+ },
+ "end": "\\s*(?:^|[\\s,;])(end)\\b(\\s*\\n)?",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.function.matlab"
+ }
+ },
+ "name": "meta.function.matlab",
+ "patterns": [
+ {
+ "begin": "\\G\\(",
+ "end": "\\)",
+ "name": "meta.arguments.function.matlab",
+ "patterns": [
+ {
+ "include": "#line_continuation"
+ },
+ {
+ "match": "\\w+",
+ "name": "variable.parameter.input.matlab"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t\t\t\t(^\\s*)\t\t\t\t\t\t\t\t# Leading whitespace\n\t\t\t\t\t\t\t\t\t(arguments)\\b([^%]*)\n\t\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t\t(\t\t\t\t\t\t\t\t\t# Optional attributes\n\t\t\t\t\t\t\t\t\t\t\\( [^)]* \\)\n\t\t\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t\t\t\t\\s*($|(?=%))\n\t\t\t\t\t\t\t\t",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control.arguments.matlab"
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "[a-zA-Z][a-zA-Z0-9_]*",
+ "name": "variable.parameter.arguments.matlab"
+ }
+ ]
+ }
+ },
+ "end": "\\s*(?:^|[\\s,;])(end)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.end.arguments.matlab"
+ }
+ },
+ "name": "meta.arguments.matlab",
+ "patterns": [
+ {
+ "include": "#validators"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "global_persistent": {
+ "captures": {
+ "1": {
+ "name": "keyword.control.globalpersistent.matlab"
+ }
+ },
+ "match": "^\\s*(global|persistent)\\b",
+ "name": "meta.globalpersistent.matlab"
+ },
+ "parens": {
+ "begin": "\\(",
+ "end": "(\\)|(?<!\\.\\.\\.).\\n)",
+ "comment": "We don't include $self here to avoid matching command syntax inside (), [], {}",
+ "patterns": [
+ {
+ "include": "#end_in_parens"
+ },
+ {
+ "include": "#all_before_command_dual"
+ },
+ {
+ "include": "#all_after_command_dual"
+ },
+ {
+ "comment": "These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written",
+ "include": "#block_keywords"
+ }
+ ]
+ },
+ "square_brackets": {
+ "begin": "\\[",
+ "end": "\\]",
+ "comment": "We don't include $self here to avoid matching command syntax inside (), [], {}",
+ "patterns": [
+ {
+ "include": "#all_before_command_dual"
+ },
+ {
+ "include": "#all_after_command_dual"
+ },
+ {
+ "comment": "These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written",
+ "include": "#block_keywords"
+ }
+ ]
+ },
+ "curly_brackets": {
+ "begin": "\\{",
+ "end": "\\}",
+ "comment": "We don't include $self here to avoid matching command syntax inside (), [], {}",
+ "patterns": [
+ {
+ "include": "#end_in_parens"
+ },
+ {
+ "include": "#all_before_command_dual"
+ },
+ {
+ "include": "#all_after_command_dual"
+ },
+ {
+ "include": "#end_in_parens"
+ },
+ {
+ "comment": "These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written",
+ "include": "#block_keywords"
+ }
+ ]
+ },
+ "indexing_curly_brackets": {
+ "Comment": "Match identifier{idx, idx, } and stop at newline without ... This helps with partially written code like x{idx ",
+ "begin": "([a-zA-Z][a-zA-Z0-9_\\.]*\\s*)\\{",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "end": "(\\}|(?<!\\.\\.\\.).\\n)",
+ "comment": "We don't include $self here to avoid matching command syntax inside (), [], {}",
+ "patterns": [
+ {
+ "include": "#end_in_parens"
+ },
+ {
+ "include": "#all_before_command_dual"
+ },
+ {
+ "include": "#all_after_command_dual"
+ },
+ {
+ "include": "#end_in_parens"
+ },
+ {
+ "comment": "These block keywords pick up any such missed keywords when the block matching for things like (), if-end, etc. don't work. Useful for when someone has partially written",
+ "include": "#block_keywords"
+ }
+ ]
+ },
+ "line_continuation": {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.symbols.matlab"
+ },
+ "2": {
+ "name": "comment.line.continuation.matlab"
+ }
+ },
+ "comment": "Line continuations",
+ "match": "(\\.\\.\\.)(.*)$",
+ "name": "meta.linecontinuation.matlab"
+ },
+ "string": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "string.interpolated.matlab"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.matlab"
+ }
+ },
+ "comment": "Shell command",
+ "match": "^\\s*((!).*$\\n?)"
+ },
+ {
+ "begin": "((?<=(\\[|\\(|\\{|=|\\s|;|:|,|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^))|^)'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.matlab"
+ }
+ },
+ "comment": "Character vector literal (single-quoted)",
+ "end": "'(?=(\\[|\\(|\\{|\\]|\\)|\\}|=|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^|\\s|;|:|,))",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.matlab"
+ }
+ },
+ "name": "string.quoted.single.matlab",
+ "patterns": [
+ {
+ "match": "''",
+ "name": "constant.character.escape.matlab"
+ },
+ {
+ "match": "'(?=.)",
+ "name": "invalid.illegal.unescaped-quote.matlab"
+ },
+ {
+ "comment": "Operator symbols",
+ "match": "((\\%([\\+\\-0]?\\d{0,3}(\\.\\d{1,3})?)(c|d|e|E|f|g|G|s|((b|t)?(o|u|x|X))))|\\%\\%|\\\\(b|f|n|r|t|\\\\))",
+ "name": "constant.character.escape.matlab"
+ }
+ ]
+ },
+ {
+ "begin": "((?<=(\\[|\\(|\\{|=|\\s|;|:|,|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^))|^)\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.matlab"
+ }
+ },
+ "comment": "String literal (double-quoted)",
+ "end": "\"(?=(\\[|\\(|\\{|\\]|\\)|\\}|=|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^|\\||\\s|;|:|,))",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.matlab"
+ }
+ },
+ "name": "string.quoted.double.matlab",
+ "patterns": [
+ {
+ "match": "\"\"",
+ "name": "constant.character.escape.matlab"
+ },
+ {
+ "match": "\"(?=.)",
+ "name": "invalid.illegal.unescaped-quote.matlab"
+ }
+ ]
+ }
+ ]
+ },
+ "conjugate_transpose": {
+ "match": "((?<=[^\\s])|(?<=\\])|(?<=\\))|(?<=\\}))'",
+ "name": "keyword.operator.transpose.matlab"
+ },
+ "transpose": {
+ "match": "\\.'",
+ "name": "keyword.operator.transpose.matlab"
+ },
+ "constants": {
+ "comment": "MATLAB Constants",
+ "match": "(?<!\\.)\\b(eps|false|Inf|inf|intmax|intmin|namelengthmax|NaN|nan|on|off|realmax|realmin|true|pi)\\b",
+ "name": "constant.language.matlab"
+ },
+ "variables": {
+ "comment": "MATLAB variables",
+ "match": "(?<!\\.)\\b(nargin|nargout|varargin|varargout)\\b",
+ "name": "variable.other.function.matlab"
+ },
+ "end_in_parens": {
+ "comment": "end as operator symbol",
+ "match": "\\bend\\b",
+ "name": "keyword.operator.symbols.matlab"
+ },
+ "numbers": {
+ "comment": "Valid numbers: 1, .1, 1.1, .1e1, 1.1e1, 1e1, 1i, 1j, 1e2j",
+ "match": "(?<=[\\s\\-\\+\\*\\/\\\\=:\\[\\(\\{,]|^)\\d*\\.?\\d+([eE][+-]?\\d)?([0-9&&[^\\.]])*(i|j)?\\b",
+ "name": "constant.numeric.matlab"
+ },
+ "operators": {
+ "comment": "Operator symbols",
+ "match": "(?<=\\s)(==|~=|>|>=|<|<=|&|&&|:|\\||\\|\\||\\+|-|\\*|\\.\\*|/|\\./|\\\\|\\.\\\\|\\^|\\.\\^)(?=\\s)",
+ "name": "keyword.operator.symbols.matlab"
+ },
+ "validators": {
+ "comment": "Property and argument validation. Match an identifier allowing . and ?.",
+ "begin": "\\s*[;]?\\s*([a-zA-Z][a-zA-Z0-9_\\.\\?]*)",
+ "end": "([;\\n%=].*)",
+ "endCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "comment": "Match comments",
+ "match": "([%].*)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "comment": "Handle things like arg = val; nextArg",
+ "match": "(=[^;]*)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "comment": "End of property/argument patterns which start a new property/argument. Look for beginning of identifier after semicolon. Otherwise treat as regular code.",
+ "match": "([\\n;]\\s*[a-zA-Z].*)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#validators"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#line_continuation"
+ },
+ {
+ "comment": "Size declaration",
+ "match": "\\s*(\\([^\\)]*\\))",
+ "name": "storage.type.matlab"
+ },
+ {
+ "comment": "Type declaration",
+ "match": "([a-zA-Z][a-zA-Z0-9_\\.]*)",
+ "name": "storage.type.matlab"
+ },
+ {
+ "include": "#braced_validator_list"
+ }
+ ]
+ },
+ "braced_validator_list": {
+ "comment": "Validator functions. Treated as a recursive group to permit nested brackets, quotes, etc.",
+ "begin": "\\s*({)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.matlab"
+ }
+ },
+ "end": "(})",
+ "endCaptures": {
+ "1": {
+ "name": "storage.type.matlab"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#braced_validator_list"
+ },
+ {
+ "include": "#validator_strings"
+ },
+ {
+ "include": "#line_continuation"
+ },
+ {
+ "match": "([^{}}'\"\\.]+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.matlab"
+ }
+ }
+ },
+ {
+ "match": "\\.",
+ "name": "storage.type.matlab"
+ }
+ ]
+ },
+ "validator_strings": {
+ "comment": "Simplified string patterns nested inside validator functions which don't change scopes of matches.",
+ "patterns": [
+ {
+ "patterns": [
+ {
+ "begin": "((?<=(\\[|\\(|\\{|=|\\s|;|:|,|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^))|^)'",
+ "comment": "Character vector literal (single-quoted)",
+ "end": "'(?=(\\[|\\(|\\{|\\]|\\)|\\}|=|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^|\\s|;|:|,))",
+ "name": "storage.type.matlab",
+ "patterns": [
+ {
+ "match": "''"
+ },
+ {
+ "match": "'(?=.)"
+ },
+ {
+ "match": "([^']+)"
+ }
+ ]
+ },
+ {
+ "begin": "((?<=(\\[|\\(|\\{|=|\\s|;|:|,|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^))|^)\"",
+ "comment": "String literal (double-quoted)",
+ "end": "\"(?=(\\[|\\(|\\{|\\]|\\)|\\}|=|~|<|>|&|\\||-|\\+|\\*|/|\\\\|\\.|\\^|\\||\\s|;|:|,))",
+ "name": "storage.type.matlab",
+ "patterns": [
+ {
+ "match": "\"\""
+ },
+ {
+ "match": "\"(?=.)"
+ },
+ {
+ "match": "[^\"]+"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "scopeName": "source.matlab",
+ "uuid": "48F8858B-72FF-11D9-BFEE-000D93589AF6"
+}
diff --git a/node_modules/shiki/languages/mdx.tmLanguage.json b/node_modules/shiki/languages/mdx.tmLanguage.json
new file mode 100644
index 0000000..534ed99
--- /dev/null
+++ b/node_modules/shiki/languages/mdx.tmLanguage.json
@@ -0,0 +1,5627 @@
+{
+ "name": "mdx",
+ "uuid": "fe65e2cd-7c73-4a27-8b5e-5902893626aa",
+ "fileTypes": ["mdx"],
+ "patterns": [
+ {
+ "include": "#markdown-frontmatter"
+ },
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "repository": {
+ "markdown-frontmatter": {
+ "patterns": [
+ {
+ "include": "#extension-toml"
+ },
+ {
+ "include": "#extension-yaml"
+ }
+ ]
+ },
+ "markdown-sections": {
+ "patterns": [
+ {
+ "include": "#commonmark-block-quote"
+ },
+ {
+ "include": "#commonmark-code-fenced"
+ },
+ {
+ "include": "#extension-gfm-footnote-definition"
+ },
+ {
+ "include": "#commonmark-definition"
+ },
+ {
+ "include": "#commonmark-heading-atx"
+ },
+ {
+ "include": "#commonmark-thematic-break"
+ },
+ {
+ "include": "#commonmark-heading-setext"
+ },
+ {
+ "include": "#commonmark-list-item"
+ },
+ {
+ "include": "#extension-gfm-table"
+ },
+ {
+ "include": "#extension-math-flow"
+ },
+ {
+ "include": "#extension-mdx-esm"
+ },
+ {
+ "include": "#extension-mdx-expression-flow"
+ },
+ {
+ "include": "#extension-mdx-jsx-flow"
+ },
+ {
+ "include": "#commonmark-paragraph"
+ }
+ ]
+ },
+ "markdown-string": {
+ "patterns": [
+ {
+ "include": "#commonmark-character-escape"
+ },
+ {
+ "include": "#commonmark-character-reference"
+ }
+ ]
+ },
+ "markdown-text": {
+ "patterns": [
+ {
+ "include": "#commonmark-attention"
+ },
+ {
+ "include": "#commonmark-character-escape"
+ },
+ {
+ "include": "#commonmark-character-reference"
+ },
+ {
+ "include": "#commonmark-code-text"
+ },
+ {
+ "include": "#commonmark-hard-break-trailing"
+ },
+ {
+ "include": "#commonmark-hard-break-escape"
+ },
+ {
+ "include": "#commonmark-label-end"
+ },
+ {
+ "include": "#extension-gfm-footnote-call"
+ },
+ {
+ "include": "#commonmark-label-start"
+ },
+ {
+ "include": "#extension-gfm-autolink-literal"
+ },
+ {
+ "include": "#extension-gfm-strikethrough"
+ },
+ {
+ "include": "#extension-github-gemoji"
+ },
+ {
+ "include": "#extension-github-mention"
+ },
+ {
+ "include": "#extension-github-reference"
+ },
+ {
+ "include": "#extension-math-text"
+ },
+ {
+ "include": "#extension-mdx-expression-text"
+ },
+ {
+ "include": "#extension-mdx-jsx-text"
+ }
+ ]
+ },
+ "commonmark-attention": {
+ "patterns": [
+ {
+ "match": "(?<=\\S)\\*{3,}|\\*{3,}(?=\\S)",
+ "name": "string.other.strong.emphasis.asterisk.mdx"
+ },
+ {
+ "match": "(?<=[\\p{L}\\p{N}])_{3,}(?![\\p{L}\\p{N}])|(?<=\\p{P})_{3,}|(?<![\\p{L}\\p{N}]|\\p{P})_{3,}(?!\\s)",
+ "name": "string.other.strong.emphasis.underscore.mdx"
+ },
+ {
+ "match": "(?<=\\S)\\*{2}|\\*{2}(?=\\S)",
+ "name": "string.other.strong.asterisk.mdx"
+ },
+ {
+ "match": "(?<=[\\p{L}\\p{N}])_{2}(?![\\p{L}\\p{N}])|(?<=\\p{P})_{2}|(?<![\\p{L}\\p{N}]|\\p{P})_{2}(?!\\s)",
+ "name": "string.other.strong.underscore.mdx"
+ },
+ {
+ "match": "(?<=\\S)\\*|\\*(?=\\S)",
+ "name": "string.other.emphasis.asterisk.mdx"
+ },
+ {
+ "match": "(?<=[\\p{L}\\p{N}])_(?![\\p{L}\\p{N}])|(?<=\\p{P})_|(?<![\\p{L}\\p{N}]|\\p{P})_(?!\\s)",
+ "name": "string.other.emphasis.underscore.mdx"
+ }
+ ]
+ },
+ "commonmark-block-quote": {
+ "begin": "(?:^|\\G)[\\t ]*(>)[ ]?",
+ "beginCaptures": {
+ "0": {
+ "name": "markup.quote.mdx"
+ },
+ "1": {
+ "name": "punctuation.definition.quote.begin.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "name": "markup.quote.mdx",
+ "while": "(?:^|\\G)[\\t ]*(>)[ ]?",
+ "whileCaptures": {
+ "0": {
+ "name": "markup.quote.mdx"
+ },
+ "1": {
+ "name": "punctuation.definition.quote.begin.mdx"
+ }
+ }
+ },
+ "commonmark-character-escape": {
+ "match": "\\\\(?:[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~])",
+ "name": "constant.language.character-escape.mdx"
+ },
+ "commonmark-character-reference": {
+ "patterns": [
+ {
+ "include": "#whatwg-html-data-character-reference-named-terminated"
+ },
+ {
+ "match": "(&)(#)([Xx])([0-9A-Fa-f]{1,6})(;)",
+ "name": "constant.language.character-reference.numeric.hexadecimal.html",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.character-reference.begin.html"
+ },
+ "2": {
+ "name": "punctuation.definition.character-reference.numeric.html"
+ },
+ "3": {
+ "name": "punctuation.definition.character-reference.numeric.hexadecimal.html"
+ },
+ "4": {
+ "name": "constant.numeric.integer.hexadecimal.html"
+ },
+ "5": {
+ "name": "punctuation.definition.character-reference.end.html"
+ }
+ }
+ },
+ {
+ "match": "(&)(#)([0-9]{1,7})(;)",
+ "name": "constant.language.character-reference.numeric.decimal.html",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.character-reference.begin.html"
+ },
+ "2": {
+ "name": "punctuation.definition.character-reference.numeric.html"
+ },
+ "3": {
+ "name": "constant.numeric.integer.decimal.html"
+ },
+ "4": {
+ "name": "punctuation.definition.character-reference.end.html"
+ }
+ }
+ }
+ ]
+ },
+ "commonmark-code-fenced": {
+ "patterns": [
+ {
+ "include": "#commonmark-code-fenced-apib"
+ },
+ {
+ "include": "#commonmark-code-fenced-asciidoc"
+ },
+ {
+ "include": "#commonmark-code-fenced-c"
+ },
+ {
+ "include": "#commonmark-code-fenced-clojure"
+ },
+ {
+ "include": "#commonmark-code-fenced-coffee"
+ },
+ {
+ "include": "#commonmark-code-fenced-console"
+ },
+ {
+ "include": "#commonmark-code-fenced-cpp"
+ },
+ {
+ "include": "#commonmark-code-fenced-cs"
+ },
+ {
+ "include": "#commonmark-code-fenced-css"
+ },
+ {
+ "include": "#commonmark-code-fenced-diff"
+ },
+ {
+ "include": "#commonmark-code-fenced-dockerfile"
+ },
+ {
+ "include": "#commonmark-code-fenced-elixir"
+ },
+ {
+ "include": "#commonmark-code-fenced-elm"
+ },
+ {
+ "include": "#commonmark-code-fenced-erlang"
+ },
+ {
+ "include": "#commonmark-code-fenced-gitconfig"
+ },
+ {
+ "include": "#commonmark-code-fenced-go"
+ },
+ {
+ "include": "#commonmark-code-fenced-graphql"
+ },
+ {
+ "include": "#commonmark-code-fenced-haskell"
+ },
+ {
+ "include": "#commonmark-code-fenced-html"
+ },
+ {
+ "include": "#commonmark-code-fenced-ini"
+ },
+ {
+ "include": "#commonmark-code-fenced-java"
+ },
+ {
+ "include": "#commonmark-code-fenced-js"
+ },
+ {
+ "include": "#commonmark-code-fenced-json"
+ },
+ {
+ "include": "#commonmark-code-fenced-julia"
+ },
+ {
+ "include": "#commonmark-code-fenced-kotlin"
+ },
+ {
+ "include": "#commonmark-code-fenced-less"
+ },
+ {
+ "include": "#commonmark-code-fenced-less"
+ },
+ {
+ "include": "#commonmark-code-fenced-lua"
+ },
+ {
+ "include": "#commonmark-code-fenced-makefile"
+ },
+ {
+ "include": "#commonmark-code-fenced-md"
+ },
+ {
+ "include": "#commonmark-code-fenced-mdx"
+ },
+ {
+ "include": "#commonmark-code-fenced-objc"
+ },
+ {
+ "include": "#commonmark-code-fenced-perl"
+ },
+ {
+ "include": "#commonmark-code-fenced-php"
+ },
+ {
+ "include": "#commonmark-code-fenced-php"
+ },
+ {
+ "include": "#commonmark-code-fenced-python"
+ },
+ {
+ "include": "#commonmark-code-fenced-r"
+ },
+ {
+ "include": "#commonmark-code-fenced-raku"
+ },
+ {
+ "include": "#commonmark-code-fenced-ruby"
+ },
+ {
+ "include": "#commonmark-code-fenced-rust"
+ },
+ {
+ "include": "#commonmark-code-fenced-scala"
+ },
+ {
+ "include": "#commonmark-code-fenced-scss"
+ },
+ {
+ "include": "#commonmark-code-fenced-shell"
+ },
+ {
+ "include": "#commonmark-code-fenced-shell-session"
+ },
+ {
+ "include": "#commonmark-code-fenced-sql"
+ },
+ {
+ "include": "#commonmark-code-fenced-svg"
+ },
+ {
+ "include": "#commonmark-code-fenced-swift"
+ },
+ {
+ "include": "#commonmark-code-fenced-toml"
+ },
+ {
+ "include": "#commonmark-code-fenced-ts"
+ },
+ {
+ "include": "#commonmark-code-fenced-tsx"
+ },
+ {
+ "include": "#commonmark-code-fenced-vbnet"
+ },
+ {
+ "include": "#commonmark-code-fenced-xml"
+ },
+ {
+ "include": "#commonmark-code-fenced-yaml"
+ },
+ {
+ "include": "#commonmark-code-fenced-unknown"
+ }
+ ]
+ },
+ "commonmark-code-fenced-unknown": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?:[^\\t\\n\\r` ])+)(?:[\\t ]+((?:[^\\n\\r`])+))?)?(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "markup.raw.code.fenced.mdx",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.other.mdx"
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?:[^\\t\\n\\r ])+)(?:[\\t ]+((?:[^\\n\\r])+))?)?(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "markup.raw.code.fenced.mdx",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.other.mdx"
+ }
+ ]
+ },
+ "commonmark-code-text": {
+ "match": "(?<!`)(`+)(?!`)(.+?)(?<!`)(\\1)(?!`)",
+ "name": "markup.code.other.mdx",
+ "captures": {
+ "1": {
+ "name": "string.other.begin.code.mdx"
+ },
+ "2": {
+ "name": "markup.raw.code.mdx markup.inline.raw.code.mdx"
+ },
+ "3": {
+ "name": "string.other.end.code.mdx"
+ }
+ }
+ },
+ "commonmark-definition": {
+ "match": "(?:^|\\G)[\\t ]*(\\[)((?:[^\\[\\\\\\]]|\\\\[\\[\\\\\\]]?)+?)(\\])(:)[ \\t]*(?:(<)((?:[^\\n<\\\\>]|\\\\[<\\\\>]?)*)(>)|(\\g<destination_raw>))(?:[\\t ]+(?:(\")((?:[^\"\\\\]|\\\\[\"\\\\]?)*)(\")|(')((?:[^'\\\\]|\\\\['\\\\]?)*)(')|(\\()((?:[^\\)\\\\]|\\\\[\\)\\\\]?)*)(\\))))?$(?<destination_raw>(?!\\<)(?:(?:[^\\p{Cc}\\ \\\\\\(\\)]|\\\\[\\(\\)\\\\]?)|\\(\\g<destination_raw>*\\))+){0}",
+ "name": "meta.link.reference.def.mdx",
+ "captures": {
+ "1": {
+ "name": "string.other.begin.mdx"
+ },
+ "2": {
+ "name": "entity.name.identifier.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "name": "string.other.end.mdx"
+ },
+ "4": {
+ "name": "punctuation.separator.key-value.mdx"
+ },
+ "5": {
+ "name": "string.other.begin.destination.mdx"
+ },
+ "6": {
+ "name": "string.other.link.destination.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "7": {
+ "name": "string.other.end.destination.mdx"
+ },
+ "8": {
+ "name": "string.other.link.destination.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "9": {
+ "name": "string.other.begin.mdx"
+ },
+ "10": {
+ "name": "string.quoted.double.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "11": {
+ "name": "string.other.end.mdx"
+ },
+ "12": {
+ "name": "string.other.begin.mdx"
+ },
+ "13": {
+ "name": "string.quoted.single.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "14": {
+ "name": "string.other.end.mdx"
+ },
+ "15": {
+ "name": "string.other.begin.mdx"
+ },
+ "16": {
+ "name": "string.quoted.paren.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "17": {
+ "name": "string.other.end.mdx"
+ }
+ }
+ },
+ "commonmark-hard-break-escape": {
+ "match": "\\\\$",
+ "name": "constant.language.character-escape.line-ending.mdx"
+ },
+ "commonmark-hard-break-trailing": {
+ "match": "( ){2,}$",
+ "name": "carriage-return constant.language.character-escape.line-ending.mdx"
+ },
+ "commonmark-heading-atx": {
+ "patterns": [
+ {
+ "match": "(?:^|\\G)[\\t ]*(#{1}(?!#))(?:[ \\t]+([^\\r\\n]+?)(?:[ \\t]+(#+?))?)?[ \\t]*$",
+ "name": "markup.heading.atx.1.mdx",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.heading.mdx"
+ },
+ "2": {
+ "name": "entity.name.section.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-text"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.heading.mdx"
+ }
+ }
+ },
+ {
+ "match": "(?:^|\\G)[\\t ]*(#{2}(?!#))(?:[ \\t]+([^\\r\\n]+?)(?:[ \\t]+(#+?))?)?[ \\t]*$",
+ "name": "markup.heading.atx.2.mdx",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.heading.mdx"
+ },
+ "2": {
+ "name": "entity.name.section.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-text"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.heading.mdx"
+ }
+ }
+ },
+ {
+ "match": "(?:^|\\G)[\\t ]*(#{3}(?!#))(?:[ \\t]+([^\\r\\n]+?)(?:[ \\t]+(#+?))?)?[ \\t]*$",
+ "name": "markup.heading.atx.2.mdx",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.heading.mdx"
+ },
+ "2": {
+ "name": "entity.name.section.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-text"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.heading.mdx"
+ }
+ }
+ },
+ {
+ "match": "(?:^|\\G)[\\t ]*(#{4}(?!#))(?:[ \\t]+([^\\r\\n]+?)(?:[ \\t]+(#+?))?)?[ \\t]*$",
+ "name": "markup.heading.atx.2.mdx",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.heading.mdx"
+ },
+ "2": {
+ "name": "entity.name.section.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-text"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.heading.mdx"
+ }
+ }
+ },
+ {
+ "match": "(?:^|\\G)[\\t ]*(#{5}(?!#))(?:[ \\t]+([^\\r\\n]+?)(?:[ \\t]+(#+?))?)?[ \\t]*$",
+ "name": "markup.heading.atx.2.mdx",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.heading.mdx"
+ },
+ "2": {
+ "name": "entity.name.section.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-text"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.heading.mdx"
+ }
+ }
+ },
+ {
+ "match": "(?:^|\\G)[\\t ]*(#{6}(?!#))(?:[ \\t]+([^\\r\\n]+?)(?:[ \\t]+(#+?))?)?[ \\t]*$",
+ "name": "markup.heading.atx.2.mdx",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.heading.mdx"
+ },
+ "2": {
+ "name": "entity.name.section.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-text"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.heading.mdx"
+ }
+ }
+ }
+ ]
+ },
+ "commonmark-heading-setext": {
+ "patterns": [
+ {
+ "match": "(?:^|\\G)[\\t ]*(={1,})[ \\t]*$",
+ "name": "markup.heading.setext.1.mdx"
+ },
+ {
+ "match": "(?:^|\\G)[\\t ]*(-{1,})[ \\t]*$",
+ "name": "markup.heading.setext.2.mdx"
+ }
+ ]
+ },
+ "commonmark-label-end": {
+ "patterns": [
+ {
+ "match": "(\\])(\\()[\\t ]*(?:(?:(<)((?:[^\\n<\\\\>]|\\\\[<\\\\>]?)*)(>)|(\\g<destination_raw>))(?:[\\t ]+(?:(\")((?:[^\"\\\\]|\\\\[\"\\\\]?)*)(\")|(')((?:[^'\\\\]|\\\\['\\\\]?)*)(')|(\\()((?:[^\\)\\\\]|\\\\[\\)\\\\]?)*)(\\))))?)?[\\t ]*(\\))(?<destination_raw>(?!\\<)(?:(?:[^\\p{Cc}\\ \\\\\\(\\)]|\\\\[\\(\\)\\\\]?)|\\(\\g<destination_raw>*\\))+){0}",
+ "captures": {
+ "1": {
+ "name": "string.other.end.mdx"
+ },
+ "2": {
+ "name": "string.other.begin.mdx"
+ },
+ "3": {
+ "name": "string.other.begin.destination.mdx"
+ },
+ "4": {
+ "name": "string.other.link.destination.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "5": {
+ "name": "string.other.end.destination.mdx"
+ },
+ "6": {
+ "name": "string.other.link.destination.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "7": {
+ "name": "string.other.begin.mdx"
+ },
+ "8": {
+ "name": "string.quoted.double.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "9": {
+ "name": "string.other.end.mdx"
+ },
+ "10": {
+ "name": "string.other.begin.mdx"
+ },
+ "11": {
+ "name": "string.quoted.single.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "12": {
+ "name": "string.other.end.mdx"
+ },
+ "13": {
+ "name": "string.other.begin.mdx"
+ },
+ "14": {
+ "name": "string.quoted.paren.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "15": {
+ "name": "string.other.end.mdx"
+ },
+ "16": {
+ "name": "string.other.end.mdx"
+ }
+ }
+ },
+ {
+ "match": "(\\])(\\[)((?:[^\\[\\\\\\]]|\\\\[\\[\\\\\\]]?)+?)(\\])",
+ "captures": {
+ "1": {
+ "name": "string.other.end.mdx"
+ },
+ "2": {
+ "name": "string.other.begin.mdx"
+ },
+ "3": {
+ "name": "entity.name.identifier.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "4": {
+ "name": "string.other.end.mdx"
+ }
+ }
+ },
+ {
+ "match": "(\\])",
+ "captures": {
+ "1": {
+ "name": "string.other.end.mdx"
+ }
+ }
+ }
+ ]
+ },
+ "commonmark-label-start": {
+ "patterns": [
+ {
+ "match": "\\!\\[(?!\\^)",
+ "name": "string.other.begin.image.mdx"
+ },
+ {
+ "match": "\\[",
+ "name": "string.other.begin.link.mdx"
+ }
+ ]
+ },
+ "commonmark-list-item": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*((?:[*+-]))(?:[ ]{4}(?![ ])|\\t)(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.unordered.list.mdx"
+ },
+ "2": {
+ "name": "keyword.other.tasklist.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t)[ ]{1}"
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*((?:[*+-]))(?:[ ]{3}(?![ ]))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.unordered.list.mdx"
+ },
+ "2": {
+ "name": "keyword.other.tasklist.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t)"
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*((?:[*+-]))(?:[ ]{2}(?![ ]))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.unordered.list.mdx"
+ },
+ "2": {
+ "name": "keyword.other.tasklist.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)[ ]{3}"
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*((?:[*+-]))(?:[ ]{1}|(?=\\n))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.unordered.list.mdx"
+ },
+ "2": {
+ "name": "keyword.other.tasklist.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)[ ]{2}"
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*([0-9]{9})((?:\\.|\\)))(?:[ ]{4}(?![ ])|\\t(?![\\t ]))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.number.mdx"
+ },
+ "2": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "3": {
+ "name": "keyword.other.tasklist.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t){3}[ ]{2}"
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(?:([0-9]{9})((?:\\.|\\)))(?:[ ]{3}(?![ ]))|([0-9]{8})((?:\\.|\\)))(?:[ ]{4}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.number.mdx"
+ },
+ "2": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "3": {
+ "name": "string.other.number.mdx"
+ },
+ "4": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "5": {
+ "name": "keyword.other.tasklist.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t){3}[ ]{1}"
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(?:([0-9]{9})((?:\\.|\\)))(?:[ ]{2}(?![ ]))|([0-9]{8})((?:\\.|\\)))(?:[ ]{3}(?![ ]))|([0-9]{7})((?:\\.|\\)))(?:[ ]{4}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.number.mdx"
+ },
+ "2": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "3": {
+ "name": "string.other.number.mdx"
+ },
+ "4": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "5": {
+ "name": "string.other.number.mdx"
+ },
+ "6": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "7": {
+ "name": "keyword.other.tasklist.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t){3}"
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(?:([0-9]{9})((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))|([0-9]{8})((?:\\.|\\)))(?:[ ]{2}(?![ ]))|([0-9]{7})((?:\\.|\\)))(?:[ ]{3}(?![ ]))|([0-9]{6})((?:\\.|\\)))(?:[ ]{4}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.number.mdx"
+ },
+ "2": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "3": {
+ "name": "string.other.number.mdx"
+ },
+ "4": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "5": {
+ "name": "string.other.number.mdx"
+ },
+ "6": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "7": {
+ "name": "string.other.number.mdx"
+ },
+ "8": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "9": {
+ "name": "keyword.other.tasklist.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t){2}[ ]{3}"
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(?:([0-9]{8})((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))|([0-9]{7})((?:\\.|\\)))(?:[ ]{2}(?![ ]))|([0-9]{6})((?:\\.|\\)))(?:[ ]{3}(?![ ]))|([0-9]{5})((?:\\.|\\)))(?:[ ]{4}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.number.mdx"
+ },
+ "2": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "3": {
+ "name": "string.other.number.mdx"
+ },
+ "4": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "5": {
+ "name": "string.other.number.mdx"
+ },
+ "6": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "7": {
+ "name": "string.other.number.mdx"
+ },
+ "8": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "9": {
+ "name": "keyword.other.tasklist.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t){2}[ ]{2}"
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(?:([0-9]{7})((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))|([0-9]{6})((?:\\.|\\)))(?:[ ]{2}(?![ ]))|([0-9]{5})((?:\\.|\\)))(?:[ ]{3}(?![ ]))|([0-9]{4})((?:\\.|\\)))(?:[ ]{4}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.number.mdx"
+ },
+ "2": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "3": {
+ "name": "string.other.number.mdx"
+ },
+ "4": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "5": {
+ "name": "string.other.number.mdx"
+ },
+ "6": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "7": {
+ "name": "string.other.number.mdx"
+ },
+ "8": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "9": {
+ "name": "keyword.other.tasklist.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t){2}[ ]{1}"
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(?:([0-9]{6})((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))|([0-9]{5})((?:\\.|\\)))(?:[ ]{2}(?![ ]))|([0-9]{4})((?:\\.|\\)))(?:[ ]{3}(?![ ]))|([0-9]{3})((?:\\.|\\)))(?:[ ]{4}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.number.mdx"
+ },
+ "2": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "3": {
+ "name": "string.other.number.mdx"
+ },
+ "4": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "5": {
+ "name": "string.other.number.mdx"
+ },
+ "6": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "7": {
+ "name": "string.other.number.mdx"
+ },
+ "8": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "9": {
+ "name": "keyword.other.tasklist.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t){2}"
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(?:([0-9]{5})((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))|([0-9]{4})((?:\\.|\\)))(?:[ ]{2}(?![ ]))|([0-9]{3})((?:\\.|\\)))(?:[ ]{3}(?![ ]))|([0-9]{2})((?:\\.|\\)))(?:[ ]{4}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.number.mdx"
+ },
+ "2": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "3": {
+ "name": "string.other.number.mdx"
+ },
+ "4": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "5": {
+ "name": "string.other.number.mdx"
+ },
+ "6": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "7": {
+ "name": "string.other.number.mdx"
+ },
+ "8": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "9": {
+ "name": "keyword.other.tasklist.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t)[ ]{3}"
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(?:([0-9]{4})((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))|([0-9]{3})((?:\\.|\\)))(?:[ ]{2}(?![ ]))|([0-9]{2})((?:\\.|\\)))(?:[ ]{3}(?![ ]))|([0-9]{1})((?:\\.|\\)))(?:[ ]{4}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.number.mdx"
+ },
+ "2": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "3": {
+ "name": "string.other.number.mdx"
+ },
+ "4": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "5": {
+ "name": "string.other.number.mdx"
+ },
+ "6": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "7": {
+ "name": "string.other.number.mdx"
+ },
+ "8": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "9": {
+ "name": "keyword.other.tasklist.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t)[ ]{2}"
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(?:([0-9]{3})((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))|([0-9]{2})((?:\\.|\\)))(?:[ ]{2}(?![ ]))|([0-9]{1})((?:\\.|\\)))(?:[ ]{3}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.number.mdx"
+ },
+ "2": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "3": {
+ "name": "string.other.number.mdx"
+ },
+ "4": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "5": {
+ "name": "string.other.number.mdx"
+ },
+ "6": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "7": {
+ "name": "keyword.other.tasklist.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t)[ ]{1}"
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(?:([0-9]{2})((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))|([0-9])((?:\\.|\\)))(?:[ ]{2}(?![ ])))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.number.mdx"
+ },
+ "2": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "3": {
+ "name": "string.other.number.mdx"
+ },
+ "4": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "5": {
+ "name": "keyword.other.tasklist.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t)"
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*([0-9])((?:\\.|\\)))(?:[ ]{1}|(?=[ \\t]*\\n))(\\[[\\t Xx]\\](?=[\\t\\n\\r ]+(?:$|[^\\t\\n\\r ])))?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.number.mdx"
+ },
+ "2": {
+ "name": "variable.ordered.list.mdx"
+ },
+ "3": {
+ "name": "keyword.other.tasklist.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)[ ]{3}"
+ }
+ ]
+ },
+ "commonmark-paragraph": {
+ "begin": "(?![\\t ]*$)",
+ "name": "meta.paragraph.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-text"
+ }
+ ],
+ "while": "(?:^|\\G)(?:[ ]{4}|\\t)"
+ },
+ "commonmark-thematic-break": {
+ "match": "(?:^|\\G)[\\t ]*([-*_])[ \\t]*(?:\\1[ \\t]*){2,}$",
+ "name": "meta.separator.mdx"
+ },
+ "extension-gfm-autolink-literal": {
+ "patterns": [
+ {
+ "match": "(?<=^|[\\t\\n\\r \\(\\*\\_\\[\\]~])(?=(?i:www)\\.[^\\n\\r])(?:(?:[\\p{L}\\p{N}]|-|[\\._](?!(?:[!\"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[]))))+\\g<path>?)?(?<path>(?:(?:[^\\t\\n\\r !\"&'\\(\\)\\*,\\.:;<\\?\\]_~]|&(?![A-Za-z]*;(?:[!\"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[])))|[!\"'\\)\\*,\\.:;\\?_~](?!(?:[!\"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[]))))|\\(\\g<path>*\\))+){0}",
+ "name": "string.other.link.autolink.literal.www.mdx"
+ },
+ {
+ "match": "(?<=^|[^A-Za-z])(?i:https?://)(?=[\\p{L}\\p{N}])(?:(?:[\\p{L}\\p{N}]|-|[\\._](?!(?:[!\"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[]))))+\\g<path>?)?(?<path>(?:(?:[^\\t\\n\\r !\"&'\\(\\)\\*,\\.:;<\\?\\]_~]|&(?![A-Za-z]*;(?:[!\"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[])))|[!\"'\\)\\*,\\.:;\\?_~](?!(?:[!\"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[]))))|\\(\\g<path>*\\))+){0}",
+ "name": "string.other.link.autolink.literal.http.mdx"
+ },
+ {
+ "match": "(?<=^|[^A-Za-z/])(?i:mailto:|xmpp:)?(?:[0-9A-Za-z+\\-\\._])+@(?:(?:[0-9A-Za-z]|[-_](?!(?:[!\"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[]))))+(?:\\.(?!(?:[!\"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[])))))+(?:[A-Za-z]|[-_](?!(?:[!\"'\\)\\*,\\.:;<\\?_~]*(?:[\\s<]|\\][\\t\\n \\(\\[]))))+",
+ "name": "string.other.link.autolink.literal.email.mdx"
+ }
+ ]
+ },
+ "extension-gfm-footnote-call": {
+ "match": "(\\[)(\\^)((?:[^\\t\\n\\r \\[\\\\\\]]|\\\\[\\[\\\\\\]]?)+)(\\])",
+ "captures": {
+ "1": {
+ "name": "string.other.begin.link.mdx"
+ },
+ "2": {
+ "name": "string.other.begin.footnote.mdx"
+ },
+ "3": {
+ "name": "entity.name.identifier.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "4": {
+ "name": "string.other.end.footnote.mdx"
+ }
+ }
+ },
+ "extension-gfm-footnote-definition": {
+ "begin": "(?:^|\\G)[\\t ]*(\\[)(\\^)((?:[^\\t\\n\\r \\[\\\\\\]]|\\\\[\\[\\\\\\]]?)+)(\\])(:)[\\t ]*",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.link.mdx"
+ },
+ "2": {
+ "name": "string.other.begin.footnote.mdx"
+ },
+ "3": {
+ "name": "entity.name.identifier.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "4": {
+ "name": "string.other.end.footnote.mdx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#markdown-sections"
+ }
+ ],
+ "while": "^(?=[\\t ]*$)|(?:^|\\G)(?:[ ]{4}|\\t)"
+ },
+ "extension-gfm-strikethrough": {
+ "match": "(?<=\\S)(?<!~)~{1,2}(?!~)|(?<!~)~{1,2}(?=\\S)(?!~)",
+ "name": "string.other.strikethrough.mdx"
+ },
+ "extension-gfm-table": {
+ "begin": "(?:^|\\G)[\\t ]*(?=\\|[^\\n\\r]+\\|[ \\t]*$)",
+ "patterns": [
+ {
+ "match": "(?<=\\||(?:^|\\G))[\\t ]*((?:[^\\n\\r\\\\\\|]|\\\\[\\\\\\|]?)+?)[\\t ]*(?=\\||$)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#markdown-text"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "(?:\\|)",
+ "name": "markup.list.table-delimiter.mdx"
+ }
+ ],
+ "end": "^(?=[\\t ]*$)"
+ },
+ "extension-github-gemoji": {
+ "match": "(:)((?:(?:(?:hand_with_index_finger_and_thumb_cros|mailbox_clo|fist_rai|confu)s|r(?:aised_hand_with_fingers_splay|e(?:gister|l(?:iev|ax)))|disappointed_reliev|confound|(?:a(?:ston|ngu)i|flu)sh|unamus|hush)e|(?:chart_with_(?:down|up)wards_tre|large_orange_diamo|small_(?:orang|blu)e_diamo|large_blue_diamo|parasol_on_grou|loud_sou|rewi)n|(?:rightwards_pushing_h|hourglass_flowing_s|leftwards_(?:pushing_)?h|(?:raised_back_of|palm_(?:down|up)|call_me)_h|(?:(?:(?:clippert|ascensi)on|norfolk)_is|christmas_is|desert_is|bouvet_is|new_zea|thai|eng|fin|ire)l|rightwards_h|pinching_h|writing_h|s(?:w(?:itzer|azi)|cot)l|magic_w|ok_h|icel)an|s(?:un_behind_(?:large|small|rain)_clou|hallow_pan_of_foo|tar_of_davi|leeping_be|kateboar|a(?:tisfie|uropo)|hiel|oun|qui)|(?:ear_with_hearing_a|pouring_liqu)i|(?:identification_c|(?:arrow_(?:back|for)|fast_for)w|credit_c|woman_be|biohaz|man_be|l(?:eop|iz))ar|m(?:usical_key|ortar_)boar|(?:drop_of_bl|canned_f)oo|c(?:apital_abc|upi)|person_bal|(?:black_bi|(?:cust|plac)a)r|(?:clip|key)boar|mermai|pea_po|worrie|po(?:la|u)n|threa|dv)d|(?:(?:(?:face_with_open_eyes_and_hand_over|face_with_diagonal|open|no)_mou|h(?:and_over_mou|yacin)|mammo)t|running_shirt_with_sas|(?:(?:fishing_pole_and_|blow)fi|(?:tropical_f|petri_d)i|(?:paint|tooth)bru|banglade|jellyfi)s|(?:camera_fl|wavy_d)as|triump|menora|pouc|blus|watc|das|has)h|(?:s(?:o(?:(?:uth_georgia_south_sandwich|lomon)_island|ck)|miling_face_with_three_heart|t_kitts_nevi|weat_drop|agittariu|c(?:orpiu|issor)|ymbol|hort)|twisted_rightwards_arrow|(?:northern_mariana|heard_mcdonald|(?:british_virgi|us_virgi|pitcair|cayma)n|turks_caicos|us_outlying|(?:falk|a)land|marshall|c(?:anary|ocos)|faroe)_island|(?:face_holding_back_tea|(?:c(?:ard_index_divid|rossed_fing)|pinched_fing)e|night_with_sta)r|(?:two_(?:wo)?men_holding|people_holding|heart|open)_hand|(?:sunrise_over_mountai|(?:congratul|united_n)atio|jea)n|(?:caribbean_)?netherland|(?:f(?:lower_playing_car|ace_in_clou)|crossed_swor|prayer_bea)d|(?:money_with_win|nest_with_eg|crossed_fla|hotsprin)g|revolving_heart|(?:high_brightne|(?:expression|wire)le|(?:tumbler|wine)_gla|milk_gla|compa|dre)s|performing_art|earth_america|orthodox_cros|l(?:ow_brightnes|a(?:tin_cros|o)|ung)|no_pedestrian|c(?:ontrol_kno|lu)b|b(?:ookmark_tab|rick|ean)|nesting_doll|cook_island|(?:fleur_de_l|tenn)i|(?:o(?:ncoming_b|phiuch|ctop)|hi(?:ppopotam|bisc)|trolleyb|m(?:(?:rs|x)_cla|auriti|inib)|belar|cact|abac|(?:cyp|tau)r)u|medal_sport|(?:chopstic|firewor)k|rhinocero|(?:p(?:aw_prin|eanu)|footprin)t|two_heart|princes|(?:hondur|baham)a|barbado|aquariu|c(?:ustom|hain)|maraca|comoro|flag|wale|hug|vh)s|(?:(?:diamond_shape_with_a_dot_ins|playground_sl)id|(?:(?:first_quarter|last_quarter|full|new)_moon_with|(?:zipper|money)_mouth|dotted_line|upside_down|c(?:rying_c|owboy_h)at|(?:disguis|nauseat)ed|neutral|monocle|panda|tired|woozy|clown|nerd|zany|fox)_fac|s(?:t(?:uck_out_tongue_winking_ey|eam_locomotiv)|(?:lightly_(?:frown|smil)|neez|h(?:ush|ak))ing_fac|(?:tudio_micropho|(?:hinto_shr|lot_mach)i|ierra_leo|axopho)n|mall_airplan|un_with_fac|a(?:luting_fac|tellit|k)|haved_ic|y(?:nagogu|ring)|n(?:owfl)?ak|urinam|pong)|(?:black_(?:medium_)?small|white_(?:(?:medium_)?small|large)|(?:black|white)_medium|black_large|orange|purple|yellow|b(?:rown|lue)|red)_squar|(?:(?:perso|woma)n_with_|man_with_)?probing_can|(?:p(?:ut_litter_in_its_pl|outing_f)|frowning_f|cold_f|wind_f|hot_f)ac|(?:arrows_c(?:ounterc)?lockwi|computer_mou|derelict_hou|carousel_hor|c(?:ity_sunri|hee)|heartpul|briefca|racehor|pig_no|lacros)s|(?:(?:face_with_head_band|ideograph_advant|adhesive_band|under|pack)a|currency_exchan|l(?:eft_l)?ugga|woman_jud|name_bad|man_jud|jud)g|face_with_peeking_ey|(?:(?:e(?:uropean_post_off|ar_of_r)|post_off)i|information_sour|ambulan)c|artificial_satellit|(?:busts?_in_silhouet|(?:vulcan_sal|parach)u|m(?:usical_no|ayot)|ro(?:ller_ska|set)|timor_les|ice_ska)t|(?:(?:incoming|red)_envelo|s(?:ao_tome_princi|tethosco)|(?:micro|tele)sco|citysca)p|(?:(?:(?:convenience|department)_st|musical_sc)o|f(?:light_depar|ramed_pic)tu|love_you_gestu|heart_on_fi|japanese_og|cote_divoi|perseve|singapo)r|b(?:ullettrain_sid|eliz|on)|(?:(?:female_|male_)?dete|radioa)ctiv|(?:christmas|deciduous|evergreen|tanabata|palm)_tre|(?:vibration_mo|cape_ver)d|(?:fortune_cook|neckt|self)i|(?:fork_and_)?knif|athletic_sho|(?:p(?:lead|arty)|drool|curs|melt|yawn|ly)ing_fac|vomiting_fac|(?:(?:c(?:urling_st|ycl)|meat_on_b|repeat_|headst)o|(?:fire_eng|tanger|ukra)i|rice_sce|(?:micro|i)pho|champag|pho)n|(?:cricket|video)_gam|(?:boxing_glo|oli)v|(?:d(?:ragon|izzy)|monkey)_fac|(?:m(?:artin|ozamb)iq|fond)u|wind_chim|test_tub|flat_sho|m(?:a(?:ns_sho|t)|icrob|oos|ut)|(?:handsh|fish_c|moon_c|cupc)ak|nail_car|zimbabw|ho(?:neybe|l)|ice_cub|airplan|pensiv|c(?:a(?:n(?:dl|o)|k)|o(?:ffe|oki))|tongu|purs|f(?:lut|iv)|d(?:at|ov)|n(?:iu|os)|kit|rag|ax)e|(?:(?:british_indian_ocean_territo|(?:plate_with_cutl|batt)e|medal_milita|low_batte|hunga|wea)r|family_(?:woman_(?:woman_(?:girl|boy)|girl|boy)|man_(?:woman_(?:girl|boy)|man_(?:girl|boy)|girl|boy))_bo|person_feeding_bab|woman_feeding_bab|s(?:u(?:spension_railwa|nn)|t(?:atue_of_libert|_barthelem|rawberr))|(?:m(?:ountain_cable|ilky_)|aerial_tram)wa|articulated_lorr|man_feeding_bab|mountain_railwa|partly_sunn|(?:vatican_c|infin)it|(?:outbox_tr|inbox_tr|birthd|motorw|paragu|urugu|norw|x_r)a|butterfl|ring_buo|t(?:urke|roph)|angr|fogg)y|(?:(?:perso|woma)n_in_motorized_wheelchai|(?:(?:notebook_with_decorative_c|four_leaf_cl)ov|(?:index_pointing_at_the_vie|white_flo)w|(?:face_with_thermome|non\\-potable_wa|woman_firefigh|desktop_compu|m(?:an_firefigh|otor_scoo)|(?:ro(?:ller_coa|o)|oy)s|potable_wa|kick_scoo|thermome|firefigh|helicop|ot)t|(?:woman_factory_wor|(?:woman_office|woman_health|health)_wor|man_(?:factory|office|health)_wor|(?:factory|office)_wor|rice_crac|black_jo|firecrac)k|telephone_receiv|(?:palms_up_toget|f(?:ire_extinguis|eat)|teac)h|(?:(?:open_)?file_fol|level_sli)d|police_offic|f(?:lying_sauc|arm)|woman_teach|roll_of_pap|(?:m(?:iddle_f|an_s)in|woman_sin|hambur|plun|dag)g|do_not_litt|wilted_flow|woman_farm|man_(?:teach|farm)|(?:bell_pe|hot_pe|fli)pp|l(?:o(?:udspeak|ve_lett|bst)|edg|add)|tokyo_tow|c(?:ucumb|lapp|anc)|b(?:e(?:ginn|av)|adg)|print|hamst)e|(?:perso|woma)n_in_manual_wheelchai|m(?:an(?:_in_motorized|(?:_in_man)?ual)|otorized)_wheelchai|(?:person_(?:white|curly|red)_|wheelc)hai|triangular_rule|(?:film_project|e(?:l_salv|cu)ad|elevat|tract|anch)o|s(?:traight_rul|pace_invad|crewdriv|nowboard|unflow|peak|wimm|ing|occ|how|urf|ki)e|r(?:ed_ca|unne|azo)|d(?:o(?:lla|o)|ee)|barbe)r|(?:(?:cloud_with_(?:lightning_and_)?ra|japanese_gobl|round_pushp|liechtenste|mandar|pengu|dolph|bahra|pushp|viol)i|(?:couple(?:_with_heart_wo|kiss_)man|construction_worker|(?:mountain_bik|bow|row)ing|lotus_position|(?:w(?:eight_lift|alk)|climb)ing|white_haired|curly_haired|raising_hand|super(?:villain|hero)|red_haired|basketball|s(?:(?:wimm|urf)ing|assy)|haircut|no_good|(?:vampir|massag)e|b(?:iking|ald)|zombie|fairy|mage|elf|ng)_(?:wo)?ma|(?:(?:couple_with_heart_man|isle_of)_m|(?:couplekiss_woman_|(?:b(?:ouncing_ball|lond_haired)|tipping_hand|pregnant|kneeling|deaf)_|frowning_|s(?:tanding|auna)_|po(?:uting_|lice)|running_|blonde_|o(?:lder|k)_)wom|(?:perso|woma)n_with_turb|(?:b(?:ouncing_ball|lond_haired)|tipping_hand|pregnant|kneeling|deaf)_m|f(?:olding_hand_f|rowning_m)|man_with_turb|(?:turkmen|afghan|pak)ist|s(?:tanding_m|(?:outh_s)?ud|auna_m)|po(?:uting_|lice)m|running_m|azerbaij|k(?:yrgyz|azakh)st|tajikist|uzbekist|o(?:lder_m|k_m|ce)|(?:orang|bh)ut|taiw|jord)a|s(?:mall_red_triangle_dow|(?:valbard_jan_may|int_maart|ev)e|afety_pi|top_sig|t_marti|(?:corpi|po|o)o|wede)|(?:heavy_(?:d(?:ivision|ollar)|equals|minus|plus)|no_entry|female|male)_sig|(?:arrow_(?:heading|double)_d|p(?:erson_with_cr|oint_d)|arrow_up_d|thumbsd)ow|(?:house_with_gard|l(?:ock_with_ink_p|eafy_gre)|dancing_(?:wo)?m|fountain_p|keycap_t|chick|ali|yem|od)e|(?:izakaya|jack_o)_lanter|(?:funeral_u|(?:po(?:stal_h|pc)|capric)o|unico)r|chess_paw|b(?:a(?:llo|c)o|eni|rai)|l(?:anter|io)|c(?:o(?:ff)?i|row)|melo|rame|oma|yar)n|(?:s(?:t(?:uck_out_tongue_closed_ey|_vincent_grenadin)|kull_and_crossbon|unglass|pad)|(?:french_souther|palestinia)n_territori|(?:face_with_spiral|kissing_smiling)_ey|united_arab_emirat|kissing_closed_ey|(?:clinking_|dark_sun|eye)glass|(?:no_mobile_|head)phon|womans_cloth|b(?:allet_sho|lueberri)|philippin|(?:no_bicyc|seychel)l|roll_ey|(?:cher|a)ri|p(?:ancak|isc)|maldiv|leav)es|(?:f(?:amily_(?:woman_(?:woman_)?|man_(?:woman_|man_)?)girl_gir|earfu)|(?:woman_playing_hand|m(?:an_playing_hand|irror_)|c(?:onfetti|rystal)_|volley|track|base|8)bal|(?:(?:m(?:ailbox_with_(?:no_)?m|onor)|cockt|e\\-m)a|(?:person|bride|woman)_with_ve|man_with_ve|light_ra|braz|ema)i|(?:transgender|baby)_symbo|passport_contro|(?:arrow_(?:down|up)_sm|rice_b|footb)al|(?:dromedary_cam|ferris_whe|love_hot|high_he|pretz|falaf|isra)e|page_with_cur|me(?:dical_symbo|ta)|(?:n(?:ewspaper_ro|o_be)|bellhop_be)l|rugby_footbal|s(?:chool_satche|(?:peak|ee)_no_evi|oftbal|crol|anda|nai|hel)|(?:peace|atom)_symbo|hear_no_evi|cora|hote|bage|labe|rof|ow)l|(?:(?:negative_squared_cross|heavy_exclamation|part_alternation)_mar|(?:eight_spoked_)?asteris|(?:ballot_box_with_che|(?:(?:mantelpiece|alarm|timer)_c|un)lo|(?:ha(?:(?:mmer_and|ir)_p|tch(?:ing|ed)_ch)|baby_ch|joyst)i|railway_tra|lipsti|peaco)c|heavy_check_mar|white_check_mar|tr(?:opical_drin|uc)|national_par|pickup_truc|diving_mas|floppy_dis|s(?:tar_struc|hamroc|kun|har)|chipmun|denmar|duc|hoo|lin)k|(?:leftwards_arrow_with_h|arrow_right_h|(?:o(?:range|pen)|closed|blue)_b)ook|(?:woman_playing_water_pol|m(?:an(?:_(?:playing_water_pol|with_gua_pi_ma|in_tuxed)|g)|ontenegr|o(?:roc|na)c|e(?:xic|tr|m))|(?:perso|woma)n_in_tuxed|(?:trinidad_toba|vir)g|water_buffal|b(?:urkina_fas|a(?:mbo|nj)|ent)|puerto_ric|water_pol|flaming|kangaro|(?:mosqu|burr)it|(?:avoc|torn)ad|curaca|lesoth|potat|ko(?:sov|k)|tomat|d(?:ang|od)|yo_y|hoch|t(?:ac|og)|zer)o|(?:c(?:entral_african|zech)|dominican)_republic|(?:eight_pointed_black_s|six_pointed_s|qa)tar|(?:business_suit_levitat|(?:classical_buil|breast_fee)d|(?:woman_cartwhee|m(?:an_(?:cartwhee|jugg)|en_wrest)|women_wrest|woman_jugg|face_exha|cartwhee|wrest|dump)l|c(?:hildren_cross|amp)|woman_facepalm|woman_shrugg|man_(?:facepalm|shrugg)|people_hugg|(?:person_fe|woman_da|man_da)nc|fist_oncom|horse_rac|(?:no_smo|thin)k|laugh|s(?:eedl|mok)|park|w(?:arn|edd))ing|f(?:a(?:mily(?:_(?:woman_(?:woman_(?:girl|boy)|girl|boy)|man_(?:woman_(?:girl|boy)|man_(?:girl|boy)|girl|boy)))?|ctory)|o(?:u(?:ntain|r)|ot|g)|r(?:owning)?|i(?:re|s[ht])|ly|u)|(?:(?:(?:information_desk|handball|bearded)_|(?:frowning|ok)_|juggling_|mer)pers|(?:previous_track|p(?:lay_or_p)?ause|black_square|white_square|next_track|r(?:ecord|adio)|eject)_butt|(?:wa[nx]ing_(?:crescent|gibbous)_m|bowl_with_sp|crescent_m|racc)o|(?:b(?:ouncing_ball|lond_haired)|tipping_hand|pregnant|kneeling|deaf)_pers|s(?:t(?:_pierre_miquel|op_butt|ati)|tanding_pers|peech_ballo|auna_pers)|r(?:eminder_r)?ibb|thought_ballo|watermel|badmint|c(?:amero|ray)|le(?:ban|m)|oni|bis)on|(?:heavy_heart_exclama|building_construc|heart_decora|exclama)tion|(?:(?:triangular_flag_on_po|(?:(?:woman_)?technolog|m(?:ountain_bicycl|an_technolog)|bicycl)i|(?:wo)?man_scienti|(?:wo)?man_arti|s(?:afety_ve|cienti)|empty_ne)s|(?:vertical_)?traffic_ligh|(?:rescue_worker_helm|military_helm|nazar_amul|city_suns|wastebask|dropl|t(?:rump|oil)|bouqu|buck|magn|secr)e|one_piece_swimsui|(?:(?:arrow_(?:low|upp)er|point)_r|bridge_at_n|copyr|mag_r)igh|(?:bullettrain_fro|(?:potted_pl|croiss|e(?:ggpl|leph))a)n|s(?:t(?:ar_and_cresc|ud)en|cream_ca|mi(?:ley?|rk)_ca|(?:peed|ail)boa|hir)|(?:arrow_(?:low|upp)er|point)_lef|woman_astronau|r(?:o(?:tating_ligh|cke)|eceip)|heart_eyes_ca|man_astronau|(?:woman_stud|circus_t|man_stud|trid)en|(?:ringed_pla|file_cabi)ne|nut_and_bol|(?:older_)?adul|k(?:i(?:ssing_ca|wi_frui)|uwai|no)|(?:pouting_c|c(?:ut_of_m|old_sw)e|womans_h|montserr|(?:(?:motor_|row)b|lab_c)o|heartbe|toph)a|(?:woman_pil|honey_p|man_pil|[cp]arr|teap|rob)o|hiking_boo|arrow_lef|fist_righ|flashligh|f(?:ist_lef|ee)|black_ca|astronau|(?:c(?:hest|oco)|dough)nu|innocen|joy_ca|artis|(?:acce|egy)p|co(?:me|a)|pilo)t|(?:heavy_multiplication_|t\\-re)x|(?:s(?:miling_face_with_te|piral_calend)|oncoming_police_c|chocolate_b|ra(?:ilway|cing)_c|police_c|polar_be|teddy_be|madagasc|blue_c|calend|myanm)ar|c(?:l(?:o(?:ud(?:_with_lightning)?|ck(?:1[0-2]?|[2-9]))|ap)?|o(?:uple(?:_with_heart|kiss)?|nstruction|mputer|ok|p|w)|a(?:r(?:d_index)?|mera)|r(?:icket|y)|h(?:art|ild))|(?:m(?:artial_arts_unifo|echanical_a)r|(?:cherry_)?blosso|b(?:aggage_clai|roo)|ice_?crea|facepal|mushroo|restroo|vietna|dru|yu)m|(?:woman_with_headscar|m(?:obile_phone_of|aple_lea)|fallen_lea|wol)f|(?:(?:closed_lock_with|old)_|field_hoc|ice_hoc|han|don)key|g(?:lobe_with_meridians|r(?:e(?:y_(?:exclama|ques)tion|e(?:n(?:_(?:square|circle|salad|apple|heart|book)|land)|ce)|y_heart|nada)|i(?:mac|nn)ing|apes)|u(?:inea_bissau|ernsey|am|n)|(?:(?:olfing|enie)_(?:wo)?|uards(?:wo)?)man|(?:inger_roo|oal_ne|hos)t|(?:uadeloup|ame_di|iraff|oos)e|ift_heart|i(?:braltar|rl)|(?:uatemal|(?:eorg|amb)i|orill|uyan|han)a|uide_dog|(?:oggl|lov)es|arlic|emini|uitar|abon|oat|ear|b)|construction_worker|(?:(?:envelope_with|bow_and)_ar|left_right_ar|raised_eyeb)row|(?:(?:oncoming_automob|crocod)i|right_anger_bubb|l(?:eft_speech_bubb|otion_bott|ady_beet)|congo_brazzavil|eye_speech_bubb|(?:large_blue|orange|purple|yellow|brown)_circ|(?:(?:european|japanese)_cas|baby_bot)t|b(?:alance_sca|eet)|s(?:ewing_need|weat_smi)|(?:black|white|red)_circ|(?:motor|re)cyc|pood|turt|tama|waff|musc|eag)le|first_quarter_moon|s(?:m(?:all_red_triangle|i(?:ley?|rk))|t(?:uck_out_tongue|ar)|hopping|leeping|p(?:arkle|ider)|unrise|nowman|chool|cream|k(?:ull|i)|weat|ix|a)|(?:(?:b(?:osnia_herzegovi|ana)|wallis_futu|(?:french_gui|botsw)a|argenti|st_hele)n|(?:(?:equatorial|papua_new)_guin|north_kor|eritr)e|t(?:ristan_da_cunh|ad)|(?:(?:(?:french_poly|indo)ne|tuni)s|(?:new_caledo|ma(?:urita|cedo)|lithua|(?:tanz|alb|rom)a|arme|esto)n|diego_garc|s(?:audi_arab|t_luc|lov(?:ak|en)|omal|erb)|e(?:arth_as|thiop)|m(?:icrone|alay)s|(?:austra|mongo)l|c(?:ambod|roat)|(?:bulga|alge)r|(?:colom|nami|zam)b|boliv|l(?:iber|atv))i|(?:wheel_of_dhar|cine|pana)m|(?:(?:(?:closed|beach|open)_)?umbrel|ceuta_melil|venezue|ang(?:uil|o)|koa)l|c(?:ongo_kinshas|anad|ub)|(?:western_saha|a(?:mpho|ndor)|zeb)r|american_samo|video_camer|m(?:o(?:vie_camer|ldov)|alt|eg)|(?:earth_af|costa_)ric|s(?:outh_afric|ri_lank|a(?:mo|nt))|bubble_te|(?:antarct|jama)ic|ni(?:caragu|geri|nj)|austri|pi(?:nat|zz)|arub|k(?:eny|aab)|indi|u7a7|l(?:lam|ib[ry])|dn)a|l(?:ast_quarter_moon|o(?:tus|ck)|ips|eo)|(?:hammer_and_wren|c(?:ockroa|hur)|facepun|wren|crut|pun)ch|s(?:nowman_with_snow|ignal_strength|weet_potato|miling_imp|p(?:ider_web|arkle[rs])|w(?:im_brief|an)|a(?:n(?:_marino|dwich)|lt)|topwatch|t(?:a(?:dium|r[2s])|ew)|l(?:e(?:epy|d)|oth)|hrimp|yria|carf|(?:hee|oa)p|ea[lt]|h(?:oe|i[pt])|o[bs])|(?:s(?:tuffed_flatbre|p(?:iral_notep|eaking_he))|(?:exploding_h|baguette_br|flatbr)e)ad|(?:arrow_(?:heading|double)_u|(?:p(?:lace_of_wor|assenger_)sh|film_str|tul)i|page_facing_u|biting_li|(?:billed_c|world_m)a|mouse_tra|(?:curly_lo|busst)o|thumbsu|lo(?:llip)?o|clam|im)p|(?:anatomical|light_blue|sparkling|kissing|mending|orange|purple|yellow|broken|b(?:rown|l(?:ack|ue))|pink)_heart|(?:(?:transgender|black)_fla|mechanical_le|(?:checkered|pirate)_fla|electric_plu|rainbow_fla|poultry_le|service_do|white_fla|luxembour|fried_eg|moneyba|h(?:edgeh|otd)o|shru)g|(?:cloud_with|mountain)_snow|(?:(?:antigua_barb|berm)u|(?:kh|ug)an|rwan)da|(?:3r|2n)d_place_medal|1(?:st_place_medal|234|00)|lotus_position|(?:w(?:eight_lift|alk)|climb)ing|(?:(?:cup_with_str|auto_ricksh)a|carpentry_sa|windo|jigsa)w|(?:(?:couch_and|diya)_la|f(?:ried_shri|uelpu))mp|(?:woman_mechan|man_mechan|alemb)ic|(?:european_un|accord|collis|reun)ion|(?:flight_arriv|hospit|portug|seneg|nep)al|card_file_box|(?:(?:oncoming_)?tax|m(?:o(?:unt_fuj|ya)|alaw)|s(?:paghett|ush|ar)|b(?:r(?:occol|une)|urund)|(?:djibou|kiriba)t|hait|fij)i|(?:shopping_c|white_he|bar_ch)art|d(?:isappointed|ominica|e(?:sert)?)|raising_hand|super(?:villain|hero)|b(?:e(?:verage_box|ers|d)|u(?:bbles|lb|g)|i(?:k(?:ini|e)|rd)|o(?:o(?:ks|t)|a[rt]|y)|read|a[cn]k)|ra(?:ised_hands|bbit2|t)|(?:hindu_tem|ap)ple|thong_sandal|a(?:r(?:row_(?:right|down|up)|t)|bc?|nt)?|r(?:a(?:i(?:sed_hand|nbow)|bbit|dio|m)|u(?:nning)?|epeat|i(?:ng|ce)|o(?:ck|se))|takeout_box|(?:flying_|mini)disc|(?:(?:interrob|yin_y)a|b(?:o(?:omera|wli)|angba)|(?:ping_p|hong_k)o|calli|mahjo)ng|b(?:a(?:llot_box|sket|th?|by)|o(?:o(?:k(?:mark)?|m)|w)|u(?:tter|s)|e(?:ll|er?|ar))?|heart_eyes|basketball|(?:paperclip|dancer|ticket)s|point_up_2|(?:wo)?man_cook|n(?:ew(?:spaper)?|o(?:tebook|_entry)|iger)|t(?:e(?:lephone|a)|o(?:oth|p)|r(?:oll)?|wo)|h(?:o(?:u(?:rglass|se)|rse)|a(?:mmer|nd)|eart)|paperclip|full_moon|(?:b(?:lack_ni|athtu|om)|her)b|(?:long|oil)_drum|pineapple|(?:clock(?:1[0-2]?|[2-9])3|u6e8)0|p(?:o(?:int_up|ut)|r(?:ince|ay)|i(?:ck|g)|en)|e(?:nvelope|ight|u(?:ro)?|gg|ar|ye|s)|m(?:o(?:u(?:ntain|se)|nkey|on)|echanic|a(?:ilbox|g|n)|irror)?|new_moon|d(?:iamonds|olls|art)|question|k(?:iss(?:ing)?|ey)|haircut|no_good|(?:vampir|massag)e|g(?:olf(?:ing)?|u(?:inea|ard)|e(?:nie|m)|ift|rin)|h(?:a(?:ndbag|msa)|ouses|earts|ut)|postbox|toolbox|(?:pencil|t(?:rain|iger)|whale|cat|dog)2|belgium|(?:volca|kimo)no|(?:vanuat|tuval|pala|naur|maca)u|tokelau|o(?:range|ne?|m|k)?|office|dancer|ticket|dragon|pencil|zombie|w(?:o(?:mens|rm|od)|ave|in[gk]|c)|m(?:o(?:sque|use2)|e(?:rman|ns)|a(?:li|sk))|jersey|tshirt|w(?:heel|oman)|dizzy|j(?:apan|oy)|t(?:rain|iger)|whale|fairy|a(?:nge[lr]|bcd|tm)|c(?:h(?:a(?:ir|d)|ile)|a(?:ndy|mel)|urry|rab|o(?:rn|ol|w2)|[dn])|p(?:ager|e(?:a(?:ch|r)|ru)|i(?:g2|ll|e)|oop)|n(?:otes|ine)|t(?:onga|hree|ent|ram|[mv])|f(?:erry|r(?:ies|ee|og)|ax)|u(?:7(?:533|981|121)|5(?:5b6|408|272)|6(?:307|70[89]))|mage|e(?:yes|nd)|i(?:ra[nq]|t)|cat|dog|elf|z(?:zz|ap)|yen|j(?:ar|p)|leg|id|u[kps]|ng|o[2x]|vs|kr|[\\+\\x2D]1|x|v)(:)",
+ "name": "string.emoji.mdx",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.gemoji.begin.mdx"
+ },
+ "2": {
+ "name": "keyword.control.gemoji.mdx"
+ },
+ "3": {
+ "name": "punctuation.definition.gemoji.end.mdx"
+ }
+ }
+ },
+ "extension-github-mention": {
+ "match": "(?<![0-9A-Za-z_`])(@)((?:[0-9A-Za-z][0-9A-Za-z-]{0,38})(?:\\/(?:[0-9A-Za-z][0-9A-Za-z-]{0,38}))?)(?![0-9A-Za-z_`])",
+ "name": "string.mention.mdx",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.mention.begin.mdx"
+ },
+ "2": {
+ "name": "string.other.link.mention.mdx"
+ }
+ }
+ },
+ "extension-github-reference": {
+ "patterns": [
+ {
+ "match": "(?<![0-9A-Za-z_])(?:((?i:ghsa-|cve-))([A-Za-z0-9]+)|((?i:gh-|#))([0-9]+))(?![0-9A-Za-z_])",
+ "name": "string.reference.mdx",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.reference.begin.mdx"
+ },
+ "2": {
+ "name": "string.other.link.reference.security-advisory.mdx"
+ },
+ "3": {
+ "name": "punctuation.definition.reference.begin.mdx"
+ },
+ "4": {
+ "name": "string.other.link.reference.issue-or-pr.mdx"
+ }
+ }
+ },
+ {
+ "match": "(?<![^\\t\\n\\r \\(@\\[\\{])((?:[0-9A-Za-z][0-9A-Za-z-]{0,38})(?:\\/(?:(?:\\.git[0-9A-Za-z_-]|\\.(?!git)|[0-9A-Za-z_-])+))?)(#)([0-9]+)(?![0-9A-Za-z_])",
+ "name": "string.reference.mdx",
+ "captures": {
+ "1": {
+ "name": "string.other.link.reference.user.mdx"
+ },
+ "2": {
+ "name": "punctuation.definition.reference.begin.mdx"
+ },
+ "3": {
+ "name": "string.other.link.reference.issue-or-pr.mdx"
+ }
+ }
+ }
+ ]
+ },
+ "extension-math-flow": {
+ "begin": "(?:^|\\G)[\\t ]*(\\${2,})([^\\n\\r\\$]*)$",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.math.flow.mdx"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "markup.raw.math.flow.mdx",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.math.flow.mdx"
+ }
+ },
+ "name": "markup.code.other.mdx"
+ },
+ "extension-math-text": {
+ "match": "(?<!\\$)(\\${2,})(?!\\$)(.+?)(?<!\\$)(\\1)(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "string.other.begin.math.mdx"
+ },
+ "2": {
+ "name": "markup.raw.math.mdx markup.inline.raw.math.mdx"
+ },
+ "3": {
+ "name": "string.other.end.math.mdx"
+ }
+ }
+ },
+ "extension-mdx-esm": {
+ "name": "meta.embedded.tsx",
+ "begin": "(?:^|\\G)(?=(?i:export|import)[ ])",
+ "end": "^(?=[\\t ]*$)",
+ "patterns": [
+ {
+ "include": "source.tsx#statements"
+ }
+ ]
+ },
+ "extension-mdx-expression-flow": {
+ "begin": "(?:^|\\G)[\\t ]*(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.expression.mdx.js"
+ }
+ },
+ "contentName": "meta.embedded.tsx",
+ "end": "(\\})(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.begin.expression.mdx.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.tsx#expression"
+ }
+ ]
+ },
+ "extension-mdx-expression-text": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "string.other.begin.expression.mdx.js"
+ }
+ },
+ "contentName": "meta.embedded.tsx",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "string.other.begin.expression.mdx.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.tsx#expression"
+ }
+ ]
+ },
+ "extension-mdx-jsx-flow": {
+ "begin": "(?<=^|\\G|\\>)[\\t ]*(<)(?=(?![\\t\\n\\r ]))(?:\\s*(/))?(?:\\s*(?:(?:((?:[_$[:alpha:]][-_$[:alnum:]]*))\\s*(:)\\s*((?:[_$[:alpha:]][-_$[:alnum:]]*)))|((?:(?:[_$[:alpha:]][_$[:alnum:]]*)(?:\\s*\\.\\s*(?:[_$[:alpha:]][-_$[:alnum:]]*))+))|((?:[_$[:upper:]][_$[:alnum:]]*))|((?:[_$[:alpha:]][-_$[:alnum:]]*)))(?=[\\s\\/\\>\\{]))?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.jsx"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.closing.jsx"
+ },
+ "3": {
+ "name": "entity.name.tag.namespace.jsx"
+ },
+ "4": {
+ "name": "punctuation.separator.namespace.jsx"
+ },
+ "5": {
+ "name": "entity.name.tag.local.jsx"
+ },
+ "6": {
+ "name": "support.class.component.jsx"
+ },
+ "7": {
+ "name": "support.class.component.jsx"
+ },
+ "8": {
+ "name": "entity.name.tag.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.tsx#jsx-tag-attribute-name"
+ },
+ {
+ "include": "source.tsx#jsx-tag-attribute-assignment"
+ },
+ {
+ "include": "source.tsx#jsx-string-double-quoted"
+ },
+ {
+ "include": "source.tsx#jsx-string-single-quoted"
+ },
+ {
+ "include": "source.tsx#jsx-evaluated-code"
+ },
+ {
+ "include": "source.tsx#jsx-tag-attributes-illegal"
+ }
+ ],
+ "end": "(?:(\\/)\\s*)?(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.self-closing.jsx"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.end.jsx"
+ }
+ }
+ },
+ "extension-mdx-jsx-text": {
+ "begin": "(<)(?=(?![\\t\\n\\r ]))(?:\\s*(/))?(?:\\s*(?:(?:((?:[_$[:alpha:]][-_$[:alnum:]]*))\\s*(:)\\s*((?:[_$[:alpha:]][-_$[:alnum:]]*)))|((?:(?:[_$[:alpha:]][_$[:alnum:]]*)(?:\\s*\\.\\s*(?:[_$[:alpha:]][-_$[:alnum:]]*))+))|((?:[_$[:upper:]][_$[:alnum:]]*))|((?:[_$[:alpha:]][-_$[:alnum:]]*)))(?=[\\s\\/\\>\\{]))?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.jsx"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.closing.jsx"
+ },
+ "3": {
+ "name": "entity.name.tag.namespace.jsx"
+ },
+ "4": {
+ "name": "punctuation.separator.namespace.jsx"
+ },
+ "5": {
+ "name": "entity.name.tag.local.jsx"
+ },
+ "6": {
+ "name": "support.class.component.jsx"
+ },
+ "7": {
+ "name": "support.class.component.jsx"
+ },
+ "8": {
+ "name": "entity.name.tag.jsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.tsx#jsx-tag-attribute-name"
+ },
+ {
+ "include": "source.tsx#jsx-tag-attribute-assignment"
+ },
+ {
+ "include": "source.tsx#jsx-string-double-quoted"
+ },
+ {
+ "include": "source.tsx#jsx-string-single-quoted"
+ },
+ {
+ "include": "source.tsx#jsx-evaluated-code"
+ },
+ {
+ "include": "source.tsx#jsx-tag-attributes-illegal"
+ }
+ ],
+ "end": "(?:(\\/)\\s*)?(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.self-closing.jsx"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.end.jsx"
+ }
+ }
+ },
+ "extension-toml": {
+ "begin": "\\A\\+{3}$",
+ "end": "^\\+{3}$",
+ "beginCaptures": {
+ "0": {
+ "name": "string.other.begin.toml"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "string.other.end.toml"
+ }
+ },
+ "contentName": "meta.embedded.toml",
+ "patterns": [
+ {
+ "include": "source.toml"
+ }
+ ]
+ },
+ "extension-yaml": {
+ "begin": "\\A-{3}$",
+ "end": "^-{3}$",
+ "beginCaptures": {
+ "0": {
+ "name": "string.other.begin.yaml"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "string.other.end.yaml"
+ }
+ },
+ "contentName": "meta.embedded.yaml",
+ "patterns": [
+ {
+ "include": "source.yaml"
+ }
+ ]
+ },
+ "whatwg-html-data-character-reference-named-terminated": {
+ "match": "(&)((?:C(?:(?:o(?:unterClockwiseCo)?|lockwiseCo)ntourIntegra|cedi)|(?:(?:Not(?:S(?:quareSu(?:per|b)set|u(?:cceeds|(?:per|b)set))|Precedes|Greater|Tilde|Less)|Not(?:Righ|Lef)tTriangle|(?:Not(?:(?:Succeed|Precede|Les)s|Greater)|(?:Precede|Succeed)s|Less)Slant|SquareSu(?:per|b)set|(?:Not(?:Greater|Tilde)|Tilde|Less)Full|RightTriangle|LeftTriangle|Greater(?:Slant|Full)|Precedes|Succeeds|Superset|NotHump|Subset|Tilde|Hump)Equ|int(?:er)?c|DotEqu)a|DoubleContourIntegra|(?:n(?:short)?parall|shortparall|p(?:arall|rur))e|(?:rightarrowta|l(?:eftarrowta|ced|ata|Ata)|sced|rata|perm|rced|rAta|ced)i|Proportiona|smepars|e(?:qvpars|pars|xc|um)|Integra|suphso|rarr[pt]|n(?:pars|tg)|l(?:arr[pt]|cei)|Rarrt|(?:hybu|fora)l|ForAl|[GKLNR-Tcknt]cedi|rcei|iexc|gime|fras|[uy]um|oso|dso|ium|Ium)l|D(?:o(?:uble(?:(?:L(?:ong(?:Left)?R|eftR)ight|L(?:ongL)?eft|UpDown|Right|Up)Arrow|Do(?:wnArrow|t))|wn(?:ArrowUpA|TeeA|a)rrow)|iacriticalDot|strok|ashv|cy)|(?:(?:(?:N(?:(?:otN)?estedGreater|ot(?:Greater|Less))|Less(?:Equal)?)Great|GreaterGreat|l[lr]corn|mark|east)e|Not(?:Double)?VerticalBa|(?:Not(?:Righ|Lef)tTriangleB|(?:(?:Righ|Lef)tDown|Right(?:Up)?|Left(?:Up)?)VectorB|RightTriangleB|Left(?:Triangle|Arrow)B|RightArrowB|V(?:er(?:ticalB|b)|b)|UpArrowB|l(?:ur(?:ds|u)h|dr(?:us|d)h|trP|owb|H)|profal|r(?:ulu|dld)h|b(?:igst|rvb)|(?:wed|ve[er])b|s(?:wn|es)w|n(?:wne|ese|sp|hp)|gtlP|d(?:oll|uh|H)|(?:hor|ov)b|u(?:dh|H)|r(?:lh|H)|ohb|hb|St)a|D(?:o(?:wn(?:(?:Left(?:Right|Tee)|RightTee)Vecto|(?:(?:Righ|Lef)tVector|Arrow)Ba)|ubleVerticalBa)|a(?:gge|r)|sc|f)|(?:(?:(?:Righ|Lef)tDown|(?:Righ|Lef)tUp)Tee|(?:Righ|Lef)tUpDown)Vecto|VerticalSeparato|(?:Left(?:Right|Tee)|RightTee)Vecto|less(?:eqq?)?gt|e(?:qslantgt|sc)|(?:RightF|LeftF|[lr]f)loo|u(?:[lr]corne|ar)|timesba|(?:plusa|cirs|apa)ci|U(?:arroci|f)|(?:dzigr|s(?:u(?:pl|br)|imr|[lr])|zigr|angz|nvH|l(?:tl|B)|r[Br])ar|UnderBa|(?:plus|harr|top|mid|of)ci|O(?:verBa|sc|f)|dd?agge|s(?:olba|sc)|g(?:t(?:rar|ci)|sc|f)|c(?:opys|u(?:po|ep)|sc|f)|(?:n(?:(?:v[lr]|w|r)A|l[Aa]|h[Aa]|eA)|x[hlr][Aa]|u(?:ua|da|A)|s[ew]A|rla|o[lr]a|rba|rAa|l[Ablr]a|h(?:oa|A)|era|d(?:ua|A)|cra|vA)r|o(?:lci|sc|ro|pa)|ropa|roar|l(?:o(?:pa|ar)|sc|Ar)|i(?:ma|s)c|ltci|dd?ar|a(?:ma|s)c|R(?:Bar|sc|f)|I(?:mac|f)|(?:u(?:ma|s)|oma|ema|Oma|Ema|[wyz]s|qs|ks|fs|Zs|Ys|Xs|Ws|Vs|Us|Ss|Qs|Ns|Ms|Ks|Is|Gs|Fs|Cs|Bs)c|Umac|x(?:sc|f)|v(?:sc|f)|rsc|n(?:ld|f)|m(?:sc|ld|ac|f)|rAr|h(?:sc|f)|b(?:sc|f)|psc|P(?:sc|f)|L(?:sc|ar|f)|jsc|J(?:sc|f)|E(?:sc|f)|[HT]sc|[yz]f|wf|tf|qf|pf|kf|jf|Zf|Yf|Xf|Wf|Vf|Tf|Sf|Qf|Nf|Mf|Kf|Hf|Gf|Ff|Cf|Bf)r|(?:Diacritical(?:Double)?A|[EINOSYZaisz]a)cute|(?:(?:N(?:egative(?:VeryThin|Thi(?:ck|n))|onBreaking)|NegativeMedium|ZeroWidth|VeryThin|Medium|Thi(?:ck|n))Spac|Filled(?:Very)?SmallSquar|Empty(?:Very)?SmallSquar|(?:N(?:ot(?:Succeeds|Greater|Tilde|Less)T|t)|DiacriticalT|VerticalT|PrecedesT|SucceedsT|NotEqualT|GreaterT|TildeT|EqualT|LessT|at|Ut|It)ild|(?:(?:DiacriticalG|[EIOUaiu]g)ra|(?:u|U)?bre|(?:o|e)?gra)v|(?:doublebar|curly|big|x)wedg|H(?:orizontalLin|ilbertSpac)|Double(?:Righ|Lef)tTe|(?:(?:measured|uw)ang|exponentia|dwang|ssmi|fema)l|(?:Poincarepla|reali|pho|oli)n|(?:black)?lozeng|(?:VerticalL|(?:prof|imag)l)in|SmallCircl|(?:black|dot)squar|rmoustach|l(?:moustach|angl)|(?:b(?:ack)?pr|(?:tri|xo)t|[qt]pr)im|[Tt]herefor|(?:DownB|[Gag]b)rev|(?:infint|nv[lr]tr)i|b(?:arwedg|owti)|an(?:dslop|gl)|(?:cu(?:rly)?v|rthr|lthr|b(?:ig|ar)v|xv)e|n(?:s(?:qsu[bp]|ccu)|prcu)|orslop|NewLin|maltes|Becaus|rangl|incar|(?:otil|Otil|t(?:ra|il))d|[inu]tild|s(?:mil|imn)|(?:sc|pr)cu|Wedg|Prim|Brev)e|(?:CloseCurly(?:Double)?Quo|OpenCurly(?:Double)?Quo|[ry]?acu)te|(?:Reverse(?:Up)?|Up)Equilibrium|C(?:apitalDifferentialD|(?:oproduc|(?:ircleD|enterD|d)o)t|on(?:grue|i)nt|conint|upCap|o(?:lone|pf)|OPY|hi)|(?:(?:(?:left)?rightsquig|(?:longleftr|twoheadr|nleftr|nLeftr|longr|hookr|nR|Rr)ight|(?:twohead|hook)left|longleft|updown|Updown|nright|Right|nleft|nLeft|down|up|Up)a|L(?:(?:ong(?:left)?righ|(?:ong)?lef)ta|eft(?:(?:right)?a|RightA|TeeA))|RightTeeA|LongLeftA|UpTeeA)rrow|(?:(?:RightArrow|Short|Upper|Lower)Left|(?:L(?:eftArrow|o(?:wer|ng))|LongLeft|Short|Upper)Right|ShortUp)Arrow|(?:b(?:lacktriangle(?:righ|lef)|ulle|no)|RightDoubleBracke|RightAngleBracke|Left(?:Doub|Ang)leBracke|(?:vartriangle|downharpoon|c(?:ircl|urv)earrow|upharpoon|looparrow)righ|(?:vartriangle|downharpoon|c(?:ircl|urv)earrow|upharpoon|looparrow|mapsto)lef|(?:UnderBrack|OverBrack|emptys|targ|Sups)e|diamondsui|c(?:ircledas|lubsui|are)|(?:spade|heart)sui|(?:(?:c(?:enter|t)|lmi|ino)d|(?:Triple|mD)D|n(?:otin|e)d|(?:ncong|doteq|su[bp]e|e[gl]s)d|l(?:ess|t)d|isind|c(?:ong|up|ap)?d|b(?:igod|N)|t(?:(?:ri)?d|opb)|s(?:ub|im)d|midd|g(?:tr?)?d|Lmid|DotD|(?:xo|ut|z)d|e(?:s?d|rD|fD|DD)|dtd|Zd|Id|Gd|Ed)o|realpar|i(?:magpar|iin)|S(?:uchTha|qr)|su[bp]mul|(?:(?:lt|i)que|gtque|(?:mid|low)a|e(?:que|xi))s|Produc|s(?:updo|e[cx])|r(?:parg|ec)|lparl|vangr|hamil|(?:homt|[lr]fis|ufis|dfis)h|phmma|t(?:wix|in)|quo|o(?:do|as)|fla|eDo)t|(?:(?:Square)?Intersecti|(?:straight|back|var)epsil|SquareUni|expectati|upsil|epsil|Upsil|eq?col|Epsil|(?:omic|Omic|rca|lca|eca|Sca|[NRTt]ca|Lca|Eca|[Zdz]ca|Dca)r|scar|ncar|herc|ccar|Ccar|iog|Iog)on|Not(?:S(?:quareSu(?:per|b)set|u(?:cceeds|(?:per|b)set))|Precedes|Greater|Tilde|Less)?|(?:(?:(?:Not(?:Reverse)?|Reverse)E|comp|E)leme|NotCongrue|(?:n[gl]|l)eqsla|geqsla|q(?:uat)?i|perc|iiii|coni|cwi|awi|oi)nt|(?:(?:rightleftharpo|leftrightharpo|quaterni)on|(?:(?:N(?:ot(?:NestedLess|Greater|Less)|estedLess)L|(?:eqslant|gtr(?:eqq?)?)l|LessL)e|Greater(?:Equal)?Le|cro)s|(?:rightright|leftleft|upup)arrow|rightleftarrow|(?:(?:(?:righ|lef)tthree|divideon|b(?:igo|ox)|[lr]o)t|InvisibleT)ime|downdownarrow|(?:(?:smallset|tri|dot|box)m|PlusM)inu|(?:RoundImpli|complex|Impli|Otim)e|C(?:ircle(?:Time|Minu|Plu)|ayley|ros)|(?:rationa|mode)l|NotExist|(?:(?:UnionP|MinusP|(?:b(?:ig[ou]|ox)|tri|s(?:u[bp]|im)|dot|xu|mn)p)l|(?:xo|u)pl|o(?:min|pl)|ropl|lopl|epl)u|otimesa|integer|e(?:linter|qual)|setminu|rarrbf|larrb?f|olcros|rarrf|mstpo|lesge|gesle|Exist|[lr]time|strn|napo|fltn|ccap|apo)s|(?:b(?:(?:lack|ig)triangledow|etwee)|(?:righ|lef)tharpoondow|(?:triangle|mapsto)dow|(?:nv|i)infi|ssetm|plusm|lagra|d(?:[lr]cor|isi)|c(?:ompf|aro)|s?frow|(?:hyph|curr)e|kgree|thor|ogo|ye)n|Not(?:Righ|Lef)tTriangle|(?:Up(?:Arrow)?|Short)DownArrow|(?:(?:n(?:triangle(?:righ|lef)t|succ|prec)|(?:trianglerigh|trianglelef|sqsu[bp]se|ques)t|backsim)e|lvertneq|gvertneq|(?:suc|pre)cneq|a(?:pprox|symp)e|(?:succ|prec|vee)e|circe)q|(?:UnderParenthes|OverParenthes|xn)is|(?:(?:Righ|Lef)tDown|Right(?:Up)?|Left(?:Up)?)Vector|D(?:o(?:wn(?:RightVector|LeftVector|Arrow|Tee)|t)|el|D)|l(?:eftrightarrows|br(?:k(?:sl[du]|e)|ac[ek])|tri[ef]|s(?:im[eg]|qb|h)|hard|a(?:tes|ngd|p)|o[pz]f|rm|gE|fr|eg|cy)|(?:NotHumpDownHum|(?:righ|lef)tharpoonu|big(?:(?:triangle|sqc)u|c[au])|HumpDownHum|m(?:apstou|lc)|(?:capbr|xsq)cu|smash|rarr[al]|(?:weie|sha)r|larrl|velli|(?:thin|punc)s|h(?:elli|airs)|(?:u[lr]c|vp)ro|d[lr]cro|c(?:upc[au]|apc[au])|thka|scna|prn?a|oper|n(?:ums|va|cu|bs)|ens|xc[au]|Ma)p|l(?:eftrightarrow|e(?:ftarrow|s(?:dot)?)?|moust|a(?:rrb?|te?|ng)|t(?:ri)?|sim|par|oz|l|g)|n(?:triangle(?:righ|lef)t|succ|prec)|SquareSu(?:per|b)set|(?:I(?:nvisibleComm|ot)|(?:varthe|iio)t|varkapp|(?:vars|S)igm|(?:diga|mco)mm|Cedill|lambd|Lambd|delt|Thet|omeg|Omeg|Kapp|Delt|nabl|zet|to[es]|rdc|ldc|iot|Zet|Bet|Et)a|b(?:lacktriangle|arwed|u(?:mpe?|ll)|sol|o(?:x[HVhv]|t)|brk|ne)|(?:trianglerigh|trianglelef|sqsu[bp]se|ques)t|RightT(?:riangl|e)e|(?:(?:varsu[bp]setn|su(?:psetn?|bsetn?))eq|nsu[bp]seteq|colone|(?:wedg|sim)e|nsime|lneq|gneq)q|DifferentialD|(?:(?:fall|ris)ingdots|(?:suc|pre)ccurly|ddots)eq|A(?:pplyFunction|ssign|(?:tild|grav|brev)e|acute|o(?:gon|pf)|lpha|(?:mac|sc|f)r|c(?:irc|y)|ring|Elig|uml|nd|MP)|(?:varsu[bp]setn|su(?:psetn?|bsetn?))eq|L(?:eft(?:T(?:riangl|e)e|Arrow)|l)|G(?:reaterEqual|amma)|E(?:xponentialE|quilibrium|sim|cy|TH|NG)|(?:(?:RightCeil|LeftCeil|varnoth|ar|Ur)in|(?:b(?:ack)?co|uri)n|vzigza|roan|loan|ffli|amal|sun|rin|n(?:tl|an)|Ran|Lan)g|(?:thick|succn?|precn?|less|g(?:tr|n)|ln|n)approx|(?:s(?:traightph|em)|(?:rtril|xu|u[lr]|xd|v[lr])tr|varph|l[lr]tr|b(?:sem|eps)|Ph)i|(?:circledd|osl|n(?:v[Dd]|V[Dd]|d)|hsl|V(?:vd|D)|Osl|v[Dd]|md)ash|(?:(?:RuleDelay|imp|cuw)e|(?:n(?:s(?:hort)?)?|short|rn)mi|D(?:Dotrah|iamon)|(?:i(?:nt)?pr|peri)o|odsol|llhar|c(?:opro|irmi)|(?:capa|anda|pou)n|Barwe|napi|api)d|(?:cu(?:rlyeq(?:suc|pre)|es)|telre|[ou]dbla|Udbla|Odbla|radi|lesc|gesc|dbla)c|(?:circled|big|eq|[is]|c|x|a|S|[hw]|W|H|G|E|C)circ|rightarrow|R(?:ightArrow|arr|e)|Pr(?:oportion)?|(?:longmapst|varpropt|p(?:lustw|ropt)|varrh|numer|(?:rsa|lsa|sb)qu|m(?:icr|h)|[lr]aqu|bdqu|eur)o|UnderBrace|ImaginaryI|B(?:ernoullis|a(?:ckslash|rv)|umpeq|cy)|(?:(?:Laplace|Mellin|zee)tr|Fo(?:uriertr|p)|(?:profsu|ssta)r|ordero|origo|[ps]op|nop|mop|i(?:op|mo)|h(?:op|al)|f(?:op|no)|dop|bop|Rop|Pop|Nop|Lop|Iop|Hop|Dop|[GJKMOQSTV-Zgjkoqvwyz]op|Bop)f|nsu[bp]seteq|t(?:ri(?:angleq|e)|imesd|he(?:tav|re4)|au)|O(?:verBrace|r)|(?:(?:pitchfo|checkma|t(?:opfo|b)|rob|rbb|l[bo]b)r|intlarh|b(?:brktbr|l(?:oc|an))|perten|NoBrea|rarrh|s[ew]arh|n[ew]arh|l(?:arrh|hbl)|uhbl|Hace)k|(?:NotCupC|(?:mu(?:lti)?|x)m|cupbrc)ap|t(?:riangle|imes|heta|opf?)|Precedes|Succeeds|Superset|NotEqual|(?:n(?:atural|exist|les)|s(?:qc[au]p|mte)|prime)s|c(?:ir(?:cled[RS]|[Ee])|u(?:rarrm|larrp|darr[lr]|ps)|o(?:mmat|pf)|aps|hi)|b(?:sol(?:hsu)?b|ump(?:eq|E)|ox(?:box|[Vv][HLRhlr]|[Hh][DUdu]|[DUdu][LRlr])|e(?:rnou|t[ah])|lk(?:34|1[24])|cy)|(?:l(?:esdot|squ|dqu)o|rsquo|rdquo|ngt)r|a(?:n(?:g(?:msda[a-h]|st|e)|d[dv])|st|p[Ee]|mp|fr|c[Edy])|(?:g(?:esdoto|E)|[lr]haru)l|(?:angrtvb|lrhar|nis)d|(?:(?:th(?:ic)?k|succn?|p(?:r(?:ecn?|n)?|lus)|rarr|l(?:ess|arr)|su[bp]|par|scn|g(?:tr|n)|ne|sc|n[glv]|ln|eq?)si|thetasy|ccupss|alefsy|botto)m|trpezium|(?:hks[ew]|dr?bk|bk)arow|(?:(?:[lr]a|d|c)empty|b(?:nequi|empty)|plank|nequi|odi)v|(?:(?:sc|rp|n)pol|point|fpart)int|(?:c(?:irf|wco)|awco)nint|PartialD|n(?:s(?:u[bp](?:set)?|c)|rarr|ot(?:ni|in)?|warr|e(?:arr)?|a(?:tur|p)|vlt|p(?:re?|ar)|um?|l[et]|ge|i)|n(?:atural|exist|les)|d(?:i(?:am(?:ond)?|v(?:ide)?)|tri|ash|ot|d)|backsim|l(?:esdot|squ|dqu)o|g(?:esdoto|E)|U(?:p(?:Arrow|si)|nion|arr)|angrtvb|p(?:l(?:anckh|us(?:d[ou]|[be]))|ar(?:sl|t)|r(?:od|nE|E)|erp|iv|m)|n(?:ot(?:niv[a-c]|in(?:v[a-c]|E))|rarr[cw]|s(?:u[bp][Ee]|c[er])|part|v(?:le|g[et])|g(?:es|E)|c(?:ap|y)|apE|lE|iv|Ll|Gg)|m(?:inus(?:du|b)|ale|cy|p)|rbr(?:k(?:sl[du]|e)|ac[ek])|(?:suphsu|tris|rcu|lcu)b|supdsub|(?:s[ew]a|n[ew]a)rrow|(?:b(?:ecaus|sim)|n(?:[lr]tri|bump)|csu[bp])e|equivDD|u(?:rcorn|lcorn|psi)|timesb|s(?:u(?:p(?:set)?|b(?:set)?)|q(?:su[bp]|u)|i(?:gma|m)|olb?|dot|mt|fr|ce?)|p(?:l(?:anck|us)|r(?:op|ec?)?|ara?|i)|o(?:times|r(?:d(?:er)?)?)|m(?:i(?:nusd?|d)|a(?:p(?:sto)?|lt)|u)|rmoust|g(?:e(?:s(?:dot|l)?|q)?|sim|n(?:ap|e)|t|l|g)|(?:spade|heart)s|c(?:u(?:rarr|larr|p)|o(?:m(?:ma|p)|lon|py|ng)|lubs|heck|cups|irc?|ent|ap)|colone|a(?:p(?:prox)?|n(?:g(?:msd|rt)?|d)|symp|f|c)|S(?:quare|u[bp]|c)|Subset|b(?:ecaus|sim)|vsu[bp]n[Ee]|s(?:u(?:psu[bp]|b(?:su[bp]|n[Ee]|E)|pn[Ee]|p[1-3E]|m)|q(?:u(?:ar[ef]|f)|su[bp]e)|igma[fv]|etmn|dot[be]|par|mid|hc?y|c[Ey])|f(?:rac(?:78|5[68]|45|3[458]|2[35]|1[2-68])|fr)|e(?:m(?:sp1[34]|ptyv)|psiv|c(?:irc|y)|t[ah]|ng|ll|fr|e)|(?:kappa|isins|vBar|fork|rho|phi|n[GL]t)v|divonx|V(?:dashl|ee)|gammad|G(?:ammad|cy|[Tgt])|[Ldhlt]strok|[HT]strok|(?:c(?:ylct|hc)|(?:s(?:oft|hch)|hard|S(?:OFT|HCH)|jser|J(?:ser|uk)|HARD|tsh|TSH|juk|iuk|I(?:uk|[EO])|zh|yi|nj|lj|k[hj]|gj|dj|ZH|Y[AIU]|NJ|LJ|K[HJ]|GJ|D[JSZ])c|ubrc|Ubrc|(?:yu|i[eo]|dz|v|p|f)c|TSc|SHc|CHc|Vc|Pc|Mc|Fc)y|(?:(?:wre|jm)at|dalet|a(?:ngs|le)p|imat|[lr]ds)h|[CLRUceglnou]acute|ff?llig|(?:f(?:fi|[ij])|sz|oe|ij|ae|OE|IJ)lig|r(?:a(?:tio|rr|ng)|tri|par|eal)|s[ew]arr|s(?:qc[au]p|mte)|prime|rarrb|i(?:n(?:fin|t)?|sin|t|i|c)|e(?:quiv|m(?:pty|sp)|p(?:si|ar)|cir|l|g)|kappa|isins|ncong|doteq|(?:wedg|sim)e|nsime|rsquo|rdquo|[lr]haru|V(?:dash|ert)|Tilde|lrhar|gamma|Equal|UpTee|n(?:[lr]tri|bump)|C(?:olon|up|ap)|v(?:arpi|ert)|u(?:psih|ml)|vnsu[bp]|r(?:tri[ef]|e(?:als|g)|a(?:rr[cw]|ng[de]|ce)|sh|lm|x)|rhard|sim[gl]E|i(?:sin[Ev]|mage|f[fr]|cy)|harrw|(?:n[gl]|l)eqq|g(?:sim[el]|tcc|e(?:qq|l)|nE|l[Eaj]|gg|ap)|ocirc|starf|utrif|d(?:trif|i(?:ams|e)|ashv|sc[ry]|fr|eg)|[du]har[lr]|T(?:HORN|a[bu])|(?:TRAD|[gl]vn)E|odash|[EUaeu]o(?:gon|pf)|alpha|[IJOUYgjuy]c(?:irc|y)|v(?:arr|ee)|succ|sim[gl]|harr|ln(?:ap|e)|lesg|(?:n[gl]|l)eq|ocir|star|utri|vBar|fork|su[bp]e|nsim|lneq|gneq|csu[bp]|zwn?j|yacy|x(?:opf|i)|scnE|o(?:r(?:d[fm]|v)|mid|lt|hm|gt|fr|cy|S)|scap|rsqb|ropf|ltcc|tsc[ry]|QUOT|[EOUYao]uml|rho|phi|n[GL]t|e[gl]s|ngt|I(?:nt|m)|nis|rfr|rcy|lnE|lEg|ufr|S(?:um|cy)|R(?:sh|ho)|psi|Ps?i|[NRTt]cy|L(?:sh|cy|[Tt])|kcy|Kcy|Hat|REG|[Zdz]cy|wr|lE|wp|Xi|Nu|Mu)(;)",
+ "name": "constant.language.character-reference.named.html",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.character-reference.begin.html"
+ },
+ "2": {
+ "name": "keyword.control.character-reference.html"
+ },
+ "3": {
+ "name": "punctuation.definition.character-reference.end.html"
+ }
+ }
+ },
+ "commonmark-code-fenced-apib": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:api\\x2dblueprint|(?:.*\\.)?apib))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.apib",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.apib.mdx",
+ "patterns": [
+ {
+ "include": "text.html.markdown.source.gfm.apib"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:api\\x2dblueprint|(?:.*\\.)?apib))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.apib",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.apib.mdx",
+ "patterns": [
+ {
+ "include": "text.html.markdown.source.gfm.apib"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-asciidoc": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?(?:adoc|asciidoc)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.asciidoc",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.asciidoc.mdx",
+ "patterns": [
+ {
+ "include": "text.html.asciidoc"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?(?:adoc|asciidoc)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.asciidoc",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.asciidoc.mdx",
+ "patterns": [
+ {
+ "include": "text.html.asciidoc"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-c": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:dtrace|dtrace\\x2dscript|oncrpc|rpc|rpcgen|unified\\x2dparallel\\x2dc|x\\x2dbitmap|x\\x2dpixmap|xdr|(?:.*\\.)?(?:c|cats|h|idc|opencl|upc|xbm|xpm|xs)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.c",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.c.mdx",
+ "patterns": [
+ {
+ "include": "source.c"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:dtrace|dtrace\\x2dscript|oncrpc|rpc|rpcgen|unified\\x2dparallel\\x2dc|x\\x2dbitmap|x\\x2dpixmap|xdr|(?:.*\\.)?(?:c|cats|h|idc|opencl|upc|xbm|xpm|xs)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.c",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.c.mdx",
+ "patterns": [
+ {
+ "include": "source.c"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-clojure": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:clojure|rouge|(?:.*\\.)?(?:boot|cl2|clj|cljc|cljs|cljs\\.hl|cljscm|cljx|edn|hic|rg|wisp)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.clojure",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.clojure.mdx",
+ "patterns": [
+ {
+ "include": "source.clojure"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:clojure|rouge|(?:.*\\.)?(?:boot|cl2|clj|cljc|cljs|cljs\\.hl|cljscm|cljx|edn|hic|rg|wisp)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.clojure",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.clojure.mdx",
+ "patterns": [
+ {
+ "include": "source.clojure"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-coffee": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:coffee\\x2dscript|coffeescript|(?:.*\\.)?(?:_coffee|cjsx|coffee|cson|em|emberscript|iced)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.coffee",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.coffee.mdx",
+ "patterns": [
+ {
+ "include": "source.coffee"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:coffee\\x2dscript|coffeescript|(?:.*\\.)?(?:_coffee|cjsx|coffee|cson|em|emberscript|iced)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.coffee",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.coffee.mdx",
+ "patterns": [
+ {
+ "include": "source.coffee"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-console": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:pycon|python\\x2dconsole))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.console",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.console.mdx",
+ "patterns": [
+ {
+ "include": "text.python.console"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:pycon|python\\x2dconsole))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.console",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.console.mdx",
+ "patterns": [
+ {
+ "include": "text.python.console"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-cpp": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:ags|ags\\x2dscript|asymptote|c\\+\\+|edje\\x2ddata\\x2dcollection|game\\x2dmaker\\x2dlanguage|swig|(?:.*\\.)?(?:asc|ash|asy|c\\+\\+|cc|cp|cpp|cppm|cxx|edc|gml|h\\+\\+|hh|hpp|hxx|inl|ino|ipp|ixx|metal|re|tcc|tpp|txx)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.cpp",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.cpp.mdx",
+ "patterns": [
+ {
+ "include": "source.c++"
+ },
+ {
+ "include": "source.cpp"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:ags|ags\\x2dscript|asymptote|c\\+\\+|edje\\x2ddata\\x2dcollection|game\\x2dmaker\\x2dlanguage|swig|(?:.*\\.)?(?:asc|ash|asy|c\\+\\+|cc|cp|cpp|cppm|cxx|edc|gml|h\\+\\+|hh|hpp|hxx|inl|ino|ipp|ixx|metal|re|tcc|tpp|txx)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.cpp",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.cpp.mdx",
+ "patterns": [
+ {
+ "include": "source.c++"
+ },
+ {
+ "include": "source.cpp"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-cs": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:beef|c#|cakescript|csharp|(?:.*\\.)?(?:bf|cake|cs|csx|eq|linq|uno)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.cs",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.cs.mdx",
+ "patterns": [
+ {
+ "include": "source.cs"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:beef|c#|cakescript|csharp|(?:.*\\.)?(?:bf|cake|cs|csx|eq|linq|uno)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.cs",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.cs.mdx",
+ "patterns": [
+ {
+ "include": "source.cs"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-css": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?css))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.css",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.css.mdx",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?css))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.css",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.css.mdx",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-diff": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:udiff|(?:.*\\.)?(?:diff|patch)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.diff",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.diff.mdx",
+ "patterns": [
+ {
+ "include": "source.diff"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:udiff|(?:.*\\.)?(?:diff|patch)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.diff",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.diff.mdx",
+ "patterns": [
+ {
+ "include": "source.diff"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-dockerfile": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:containerfile|(?:.*\\.)?dockerfile))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.dockerfile",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.dockerfile.mdx",
+ "patterns": [
+ {
+ "include": "source.dockerfile"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:containerfile|(?:.*\\.)?dockerfile))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.dockerfile",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.dockerfile.mdx",
+ "patterns": [
+ {
+ "include": "source.dockerfile"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-elixir": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:elixir|(?:.*\\.)?(?:ex|exs)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.elixir",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.elixir.mdx",
+ "patterns": [
+ {
+ "include": "source.elixir"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:elixir|(?:.*\\.)?(?:ex|exs)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.elixir",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.elixir.mdx",
+ "patterns": [
+ {
+ "include": "source.elixir"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-elm": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?elm))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.elm",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.elm.mdx",
+ "patterns": [
+ {
+ "include": "source.elm"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?elm))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.elm",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.elm.mdx",
+ "patterns": [
+ {
+ "include": "source.elm"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-erlang": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:erlang|(?:.*\\.)?(?:app|app\\.src|erl|es|escript|hrl|xrl|yrl)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.erlang",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.erlang.mdx",
+ "patterns": [
+ {
+ "include": "source.erlang"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:erlang|(?:.*\\.)?(?:app|app\\.src|erl|es|escript|hrl|xrl|yrl)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.erlang",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.erlang.mdx",
+ "patterns": [
+ {
+ "include": "source.erlang"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-gitconfig": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:git\\x2dconfig|gitmodules|(?:.*\\.)?gitconfig))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.gitconfig",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.gitconfig.mdx",
+ "patterns": [
+ {
+ "include": "source.gitconfig"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:git\\x2dconfig|gitmodules|(?:.*\\.)?gitconfig))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.gitconfig",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.gitconfig.mdx",
+ "patterns": [
+ {
+ "include": "source.gitconfig"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-go": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:golang|(?:.*\\.)?go))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.go",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.go.mdx",
+ "patterns": [
+ {
+ "include": "source.go"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:golang|(?:.*\\.)?go))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.go",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.go.mdx",
+ "patterns": [
+ {
+ "include": "source.go"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-graphql": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?(?:gql|graphql|graphqls)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.graphql",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.graphql.mdx",
+ "patterns": [
+ {
+ "include": "source.graphql"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?(?:gql|graphql|graphqls)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.graphql",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.graphql.mdx",
+ "patterns": [
+ {
+ "include": "source.graphql"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-haskell": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:c2hs|c2hs\\x2dhaskell|frege|haskell|(?:.*\\.)?(?:chs|dhall|hs|hs\\x2dboot|hsc)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.haskell",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.haskell.mdx",
+ "patterns": [
+ {
+ "include": "source.haskell"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:c2hs|c2hs\\x2dhaskell|frege|haskell|(?:.*\\.)?(?:chs|dhall|hs|hs\\x2dboot|hsc)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.haskell",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.haskell.mdx",
+ "patterns": [
+ {
+ "include": "source.haskell"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-html": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:html|(?:.*\\.)?(?:hta|htm|html\\.hl|kit|mtml|xht|xhtml)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.html",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.html.mdx",
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:html|(?:.*\\.)?(?:hta|htm|html\\.hl|kit|mtml|xht|xhtml)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.html",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.html.mdx",
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-ini": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:altium|altium\\x2ddesigner|dosini|(?:.*\\.)?(?:cnf|dof|ini|lektorproject|outjob|pcbdoc|prefs|prjpcb|properties|schdoc|url)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.ini",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.ini.mdx",
+ "patterns": [
+ {
+ "include": "source.ini"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:altium|altium\\x2ddesigner|dosini|(?:.*\\.)?(?:cnf|dof|ini|lektorproject|outjob|pcbdoc|prefs|prjpcb|properties|schdoc|url)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.ini",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.ini.mdx",
+ "patterns": [
+ {
+ "include": "source.ini"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-java": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:chuck|unrealscript|(?:.*\\.)?(?:ck|jav|java|jsh|uc)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.java",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.java.mdx",
+ "patterns": [
+ {
+ "include": "source.java"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:chuck|unrealscript|(?:.*\\.)?(?:ck|jav|java|jsh|uc)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.java",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.java.mdx",
+ "patterns": [
+ {
+ "include": "source.java"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-js": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:cycript|javascript\\+erb|json\\x2dwith\\x2dcomments|node|qt\\x2dscript|(?:.*\\.)?(?:_js|bones|cjs|code\\x2dsnippets|cy|es6|jake|javascript|js|js\\.erb|jsb|jscad|jsfl|jslib|jsm|json5|jsonc|jsonld|jspre|jss|jsx|mjs|njs|pac|sjs|ssjs|sublime\\x2dbuild|sublime\\x2dcommands|sublime\\x2dcompletions|sublime\\x2dkeymap|sublime\\x2dmacro|sublime\\x2dmenu|sublime\\x2dmousemap|sublime\\x2dproject|sublime\\x2dsettings|sublime\\x2dtheme|sublime\\x2dworkspace|sublime_metrics|sublime_session|xsjs|xsjslib)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.js",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.js.mdx",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:cycript|javascript\\+erb|json\\x2dwith\\x2dcomments|node|qt\\x2dscript|(?:.*\\.)?(?:_js|bones|cjs|code\\x2dsnippets|cy|es6|jake|javascript|js|js\\.erb|jsb|jscad|jsfl|jslib|jsm|json5|jsonc|jsonld|jspre|jss|jsx|mjs|njs|pac|sjs|ssjs|sublime\\x2dbuild|sublime\\x2dcommands|sublime\\x2dcompletions|sublime\\x2dkeymap|sublime\\x2dmacro|sublime\\x2dmenu|sublime\\x2dmousemap|sublime\\x2dproject|sublime\\x2dsettings|sublime\\x2dtheme|sublime\\x2dworkspace|sublime_metrics|sublime_session|xsjs|xsjslib)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.js",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.js.mdx",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-json": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:ecere\\x2dprojects|ipython\\x2dnotebook|jupyter\\x2dnotebook|max|max/msp|maxmsp|oasv2\\x2djson|oasv3\\x2djson|(?:.*\\.)?(?:4dform|4dproject|avsc|epj|geojson|gltf|har|ice|ipynb|json|json|json|json\\x2dtmlanguage|jsonl|maxhelp|maxpat|maxproj|mcmeta|mxt|pat|tfstate|tfstate\\.backup|topojson|webapp|webmanifest|yy|yyp)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.json",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.json.mdx",
+ "patterns": [
+ {
+ "include": "source.json"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:ecere\\x2dprojects|ipython\\x2dnotebook|jupyter\\x2dnotebook|max|max/msp|maxmsp|oasv2\\x2djson|oasv3\\x2djson|(?:.*\\.)?(?:4dform|4dproject|avsc|epj|geojson|gltf|har|ice|ipynb|json|json|json|json\\x2dtmlanguage|jsonl|maxhelp|maxpat|maxproj|mcmeta|mxt|pat|tfstate|tfstate\\.backup|topojson|webapp|webmanifest|yy|yyp)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.json",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.json.mdx",
+ "patterns": [
+ {
+ "include": "source.json"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-julia": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:julia|(?:.*\\.)?jl))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.julia",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.julia.mdx",
+ "patterns": [
+ {
+ "include": "source.julia"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:julia|(?:.*\\.)?jl))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.julia",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.julia.mdx",
+ "patterns": [
+ {
+ "include": "source.julia"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-kotlin": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:kotlin|(?:.*\\.)?(?:kt|ktm|kts)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.kotlin",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.kotlin.mdx",
+ "patterns": [
+ {
+ "include": "source.kotlin"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:kotlin|(?:.*\\.)?(?:kt|ktm|kts)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.kotlin",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.kotlin.mdx",
+ "patterns": [
+ {
+ "include": "source.kotlin"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-less": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:less\\x2dcss|(?:.*\\.)?less))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.less",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.less.mdx",
+ "patterns": [
+ {
+ "include": "source.css.less"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:less\\x2dcss|(?:.*\\.)?less))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.less",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.less.mdx",
+ "patterns": [
+ {
+ "include": "source.css.less"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-lua": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?(?:fcgi|lua|nse|p8|pd_lua|rbxs|rockspec|wlua)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.lua",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.lua.mdx",
+ "patterns": [
+ {
+ "include": "source.lua"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?(?:fcgi|lua|nse|p8|pd_lua|rbxs|rockspec|wlua)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.lua",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.lua.mdx",
+ "patterns": [
+ {
+ "include": "source.lua"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-makefile": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:bsdmake|mf|(?:.*\\.)?(?:mak|make|makefile|mk|mkfile)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.makefile",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.makefile.mdx",
+ "patterns": [
+ {
+ "include": "source.makefile"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:bsdmake|mf|(?:.*\\.)?(?:mak|make|makefile|mk|mkfile)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.makefile",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.makefile.mdx",
+ "patterns": [
+ {
+ "include": "source.makefile"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-md": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:md|pandoc|rmarkdown|(?:.*\\.)?(?:livemd|markdown|mdown|mdwn|mkd|mkdn|mkdown|qmd|rmd|ronn|scd|workbook)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.md",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.md.mdx",
+ "patterns": [
+ {
+ "include": "text.md"
+ },
+ {
+ "include": "source.gfm"
+ },
+ {
+ "include": "text.html.markdown"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:md|pandoc|rmarkdown|(?:.*\\.)?(?:livemd|markdown|mdown|mdwn|mkd|mkdn|mkdown|qmd|rmd|ronn|scd|workbook)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.md",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.md.mdx",
+ "patterns": [
+ {
+ "include": "text.md"
+ },
+ {
+ "include": "source.gfm"
+ },
+ {
+ "include": "text.html.markdown"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-mdx": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?mdx))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.mdx",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.mdx.mdx",
+ "patterns": [
+ {
+ "include": "source.mdx"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?mdx))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.mdx",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.mdx.mdx",
+ "patterns": [
+ {
+ "include": "source.mdx"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-objc": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:obj\\x2dc|objc|objective\\x2dc|objectivec))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.objc",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.objc.mdx",
+ "patterns": [
+ {
+ "include": "source.objc"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:obj\\x2dc|objc|objective\\x2dc|objectivec))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.objc",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.objc.mdx",
+ "patterns": [
+ {
+ "include": "source.objc"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-perl": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:cperl|(?:.*\\.)?(?:cgi|perl|ph|pl|plx|pm|psgi|t)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.perl",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.perl.mdx",
+ "patterns": [
+ {
+ "include": "source.perl"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:cperl|(?:.*\\.)?(?:cgi|perl|ph|pl|plx|pm|psgi|t)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.perl",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.perl.mdx",
+ "patterns": [
+ {
+ "include": "source.perl"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-php": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:html\\+php|inc|php|(?:.*\\.)?(?:aw|ctp|php3|php4|php5|phps|phpt|phtml)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.php",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.php.mdx",
+ "patterns": [
+ {
+ "include": "text.html.php"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:html\\+php|inc|php|(?:.*\\.)?(?:aw|ctp|php3|php4|php5|phps|phpt|phtml)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.php",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.php.mdx",
+ "patterns": [
+ {
+ "include": "text.html.php"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-python": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:bazel|easybuild|python|python3|rusthon|snakemake|starlark|xonsh|(?:.*\\.)?(?:bzl|eb|gyp|gypi|lmi|py|py3|pyde|pyi|pyp|pyt|pyw|rpy|sage|sagews|smk|snakefile|spec|tac|wsgi|xpy|xsh)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.python",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.python.mdx",
+ "patterns": [
+ {
+ "include": "source.python"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:bazel|easybuild|python|python3|rusthon|snakemake|starlark|xonsh|(?:.*\\.)?(?:bzl|eb|gyp|gypi|lmi|py|py3|pyde|pyi|pyp|pyt|pyw|rpy|sage|sagews|smk|snakefile|spec|tac|wsgi|xpy|xsh)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.python",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.python.mdx",
+ "patterns": [
+ {
+ "include": "source.python"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-r": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:rscript|splus|(?:.*\\.)?(?:r|rd|rsx)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.r",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.r.mdx",
+ "patterns": [
+ {
+ "include": "source.r"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:rscript|splus|(?:.*\\.)?(?:r|rd|rsx)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.r",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.r.mdx",
+ "patterns": [
+ {
+ "include": "source.r"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-raku": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:perl\\x2d6|perl6|pod\\x2d6|(?:.*\\.)?(?:6pl|6pm|nqp|p6|p6l|p6m|pl6|pm6|pod|pod6|raku|rakumod)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.raku",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.raku.mdx",
+ "patterns": [
+ {
+ "include": "source.raku"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:perl\\x2d6|perl6|pod\\x2d6|(?:.*\\.)?(?:6pl|6pm|nqp|p6|p6l|p6m|pl6|pm6|pod|pod6|raku|rakumod)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.raku",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.raku.mdx",
+ "patterns": [
+ {
+ "include": "source.raku"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-ruby": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:jruby|macruby|(?:.*\\.)?(?:builder|druby|duby|eye|gemspec|god|jbuilder|mirah|mspec|pluginspec|podspec|prawn|rabl|rake|rb|rbi|rbuild|rbw|rbx|ru|ruby|thor|watchr)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.ruby",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.ruby.mdx",
+ "patterns": [
+ {
+ "include": "source.ruby"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:jruby|macruby|(?:.*\\.)?(?:builder|druby|duby|eye|gemspec|god|jbuilder|mirah|mspec|pluginspec|podspec|prawn|rabl|rake|rb|rbi|rbuild|rbw|rbx|ru|ruby|thor|watchr)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.ruby",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.ruby.mdx",
+ "patterns": [
+ {
+ "include": "source.ruby"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-rust": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:rust|(?:.*\\.)?(?:rs|rs\\.in)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.rust",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.rust.mdx",
+ "patterns": [
+ {
+ "include": "source.rust"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:rust|(?:.*\\.)?(?:rs|rs\\.in)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.rust",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.rust.mdx",
+ "patterns": [
+ {
+ "include": "source.rust"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-scala": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?(?:kojo|sbt|sc|scala)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.scala",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.scala.mdx",
+ "patterns": [
+ {
+ "include": "source.scala"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?(?:kojo|sbt|sc|scala)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.scala",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.scala.mdx",
+ "patterns": [
+ {
+ "include": "source.scala"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-scss": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?scss))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.scss",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.scss.mdx",
+ "patterns": [
+ {
+ "include": "source.css.scss"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?scss))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.scss",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.scss.mdx",
+ "patterns": [
+ {
+ "include": "source.css.scss"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-shell": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:abuild|alpine\\x2dabuild|apkbuild|gentoo\\x2debuild|gentoo\\x2declass|openrc|openrc\\x2drunscript|shell|shell\\x2dscript|(?:.*\\.)?(?:bash|bats|command|csh|ebuild|eclass|ksh|sh|sh\\.in|tcsh|tmux|tool|zsh|zsh\\x2dtheme)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.shell",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.shell.mdx",
+ "patterns": [
+ {
+ "include": "source.shell"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:abuild|alpine\\x2dabuild|apkbuild|gentoo\\x2debuild|gentoo\\x2declass|openrc|openrc\\x2drunscript|shell|shell\\x2dscript|(?:.*\\.)?(?:bash|bats|command|csh|ebuild|eclass|ksh|sh|sh\\.in|tcsh|tmux|tool|zsh|zsh\\x2dtheme)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.shell",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.shell.mdx",
+ "patterns": [
+ {
+ "include": "source.shell"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-shell-session": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:bash\\x2dsession|console|shellsession|(?:.*\\.)?sh\\x2dsession))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.shell-session",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.shell-session.mdx",
+ "patterns": [
+ {
+ "include": "text.shell-session"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:bash\\x2dsession|console|shellsession|(?:.*\\.)?sh\\x2dsession))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.shell-session",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.shell-session.mdx",
+ "patterns": [
+ {
+ "include": "text.shell-session"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-sql": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:plpgsql|sqlpl|(?:.*\\.)?(?:cql|db2|ddl|mysql|pgsql|prc|sql|sql|sql|tab|udf|viw)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.sql",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.sql.mdx",
+ "patterns": [
+ {
+ "include": "source.sql"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:plpgsql|sqlpl|(?:.*\\.)?(?:cql|db2|ddl|mysql|pgsql|prc|sql|sql|sql|tab|udf|viw)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.sql",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.sql.mdx",
+ "patterns": [
+ {
+ "include": "source.sql"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-svg": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?svg))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.svg",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.svg.mdx",
+ "patterns": [
+ {
+ "include": "text.xml.svg"
+ },
+ {
+ "include": "text.xml"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?svg))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.svg",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.svg.mdx",
+ "patterns": [
+ {
+ "include": "text.xml.svg"
+ },
+ {
+ "include": "text.xml"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-swift": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?swift))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.swift",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.swift.mdx",
+ "patterns": [
+ {
+ "include": "source.swift"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?swift))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.swift",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.swift.mdx",
+ "patterns": [
+ {
+ "include": "source.swift"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-toml": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?toml))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.toml",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.toml.mdx",
+ "patterns": [
+ {
+ "include": "source.toml"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?toml))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.toml",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.toml.mdx",
+ "patterns": [
+ {
+ "include": "source.toml"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-ts": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:typescript|(?:.*\\.)?(?:cts|mts|ts)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.ts",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.ts.mdx",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:typescript|(?:.*\\.)?(?:cts|mts|ts)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.ts",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.ts.mdx",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-tsx": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:(?:.*\\.)?tsx))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.tsx",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.tsx.mdx",
+ "patterns": [
+ {
+ "include": "source.tsx"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:(?:.*\\.)?tsx))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.tsx",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.tsx.mdx",
+ "patterns": [
+ {
+ "include": "source.tsx"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-vbnet": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:classic\\x2dvisual\\x2dbasic|fb|freebasic|realbasic|vb\\x2d\\.net|vb\\x2d6|vb\\.net|vb6|vbnet|vbscript|visual\\x2dbasic|visual\\x2dbasic\\x2d\\.net|visual\\x2dbasic\\x2d6|visual\\x2dbasic\\x2d6\\.0|visual\\x2dbasic\\x2dclassic|(?:.*\\.)?(?:bi|ctl|dsr|rbbas|rbfrm|rbmnu|rbres|rbtbar|rbuistate|vb|vbhtml|vbs)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.vbnet",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.vbnet.mdx",
+ "patterns": [
+ {
+ "include": "source.vbnet"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:classic\\x2dvisual\\x2dbasic|fb|freebasic|realbasic|vb\\x2d\\.net|vb\\x2d6|vb\\.net|vb6|vbnet|vbscript|visual\\x2dbasic|visual\\x2dbasic\\x2d\\.net|visual\\x2dbasic\\x2d6|visual\\x2dbasic\\x2d6\\.0|visual\\x2dbasic\\x2dclassic|(?:.*\\.)?(?:bi|ctl|dsr|rbbas|rbfrm|rbmnu|rbres|rbtbar|rbuistate|vb|vbhtml|vbs)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.vbnet",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.vbnet.mdx",
+ "patterns": [
+ {
+ "include": "source.vbnet"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-xml": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:collada|eagle|labview|web\\x2dontology\\x2dlanguage|xpages|(?:.*\\.)?(?:adml|admx|ant|axaml|axml|brd|builds|ccproj|ccxml|clixml|cproject|cscfg|csdef|csproj|ct|dae|depproj|dita|ditamap|ditaval|dll\\.config|dotsettings|filters|fsproj|fxml|glade|gmx|grxml|hzp|iml|ivy|jelly|jsproj|kml|launch|lvclass|lvlib|lvproj|mdpolicy|mjml|mxml|natvis|ndproj|nproj|nuspec|odd|osm|owl|pkgproj|proj|props|ps1xml|psc1|pt|qhelp|rdf|resx|rss|sch|sch|scxml|sfproj|shproj|srdf|storyboard|sublime\\x2dsnippet|targets|tml|ui|urdf|ux|vbproj|vcxproj|vsixmanifest|vssettings|vstemplate|vxml|wixproj|wsdl|wsf|wxi|wxl|wxs|x3d|xacro|xaml|xib|xlf|xliff|xmi|xml|xml\\.dist|xmp|xpl|xproc|xproj|xsd|xsp\\x2dconfig|xsp\\.metadata|xspec|xul|zcml)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.xml",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.xml.mdx",
+ "patterns": [
+ {
+ "include": "text.xml"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:collada|eagle|labview|web\\x2dontology\\x2dlanguage|xpages|(?:.*\\.)?(?:adml|admx|ant|axaml|axml|brd|builds|ccproj|ccxml|clixml|cproject|cscfg|csdef|csproj|ct|dae|depproj|dita|ditamap|ditaval|dll\\.config|dotsettings|filters|fsproj|fxml|glade|gmx|grxml|hzp|iml|ivy|jelly|jsproj|kml|launch|lvclass|lvlib|lvproj|mdpolicy|mjml|mxml|natvis|ndproj|nproj|nuspec|odd|osm|owl|pkgproj|proj|props|ps1xml|psc1|pt|qhelp|rdf|resx|rss|sch|sch|scxml|sfproj|shproj|srdf|storyboard|sublime\\x2dsnippet|targets|tml|ui|urdf|ux|vbproj|vcxproj|vsixmanifest|vssettings|vstemplate|vxml|wixproj|wsdl|wsf|wxi|wxl|wxs|x3d|xacro|xaml|xib|xlf|xliff|xmi|xml|xml\\.dist|xmp|xpl|xproc|xproj|xsd|xsp\\x2dconfig|xsp\\.metadata|xspec|xul|zcml)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.xml",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.xml.mdx",
+ "patterns": [
+ {
+ "include": "text.xml"
+ }
+ ]
+ }
+ ]
+ },
+ "commonmark-code-fenced-yaml": {
+ "patterns": [
+ {
+ "begin": "(?:^|\\G)[\\t ]*(`{3,})(?:[\\t ]*((?i:jar\\x2dmanifest|kaitai\\x2dstruct|oasv2\\x2dyaml|oasv3\\x2dyaml|unity3d\\x2dasset|yaml|yml|(?:.*\\.)?(?:anim|asset|ksy|lkml|lookml|mat|meta|mir|prefab|raml|reek|rviz|sublime\\x2dsyntax|syntax|unity|yaml\\x2dtmlanguage|yaml\\.sed|yml\\.mysql)))(?:[\\t ]+((?:[^\\n\\r`])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.yaml",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.yaml.mdx",
+ "patterns": [
+ {
+ "include": "source.yaml"
+ }
+ ]
+ },
+ {
+ "begin": "(?:^|\\G)[\\t ]*(~{3,})(?:[\\t ]*((?i:jar\\x2dmanifest|kaitai\\x2dstruct|oasv2\\x2dyaml|oasv3\\x2dyaml|unity3d\\x2dasset|yaml|yml|(?:.*\\.)?(?:anim|asset|ksy|lkml|lookml|mat|meta|mir|prefab|raml|reek|rviz|sublime\\x2dsyntax|syntax|unity|yaml\\x2dtmlanguage|yaml\\.sed|yml\\.mysql)))(?:[\\t ]+((?:[^\\n\\r])+))?)(?:[\\t ]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.other.begin.code.fenced.mdx"
+ },
+ "2": {
+ "name": "entity.name.function.mdx",
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#markdown-string"
+ }
+ ]
+ }
+ },
+ "contentName": "meta.embedded.yaml",
+ "end": "(?:^|\\G)[\\t ]*(\\1)(?:[\\t ]*$)",
+ "endCaptures": {
+ "1": {
+ "name": "string.other.end.code.fenced.mdx"
+ }
+ },
+ "name": "markup.code.yaml.mdx",
+ "patterns": [
+ {
+ "include": "source.yaml"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "scopeName": "source.mdx"
+}
diff --git a/node_modules/shiki/languages/mermaid.tmLanguage.json b/node_modules/shiki/languages/mermaid.tmLanguage.json
new file mode 100644
index 0000000..c05db71
--- /dev/null
+++ b/node_modules/shiki/languages/mermaid.tmLanguage.json
@@ -0,0 +1,1343 @@
+{
+ "fileTypes": ["mermaid"],
+ "patterns": [
+ {
+ "include": "#mermaid"
+ }
+ ],
+ "repository": {
+ "mermaid": {
+ "patterns": [
+ {
+ "comment": "Class Diagram",
+ "begin": "^\\s*(classDiagram)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\%%.*",
+ "name": "comment"
+ },
+ {
+ "comment": "(class name) (\"multiplicity relationship\")? (relationship) (\"multiplicity relationship\")? (class name) :? (labelText)?",
+ "match": "([\\w-]+)\\s(\"(?:\\d+|\\*|0..\\d+|1..\\d+|1..\\*)\")?\\s?(--o|--\\*|\\<--|--\\>|<\\.\\.|\\.\\.\\>|\\<\\|\\.\\.|\\.\\.\\|\\>|\\<\\|--|--\\|>|--\\*|--|\\.\\.|\\*--|o--)\\s(\"(?:\\d+|\\*|0..\\d+|1..\\d+|1..\\*)\")?\\s?([\\w-]+)\\s?(:)?\\s(.*)$",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.class.mermaid"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "keyword.control.mermaid"
+ },
+ "4": {
+ "name": "keyword.control.mermaid"
+ },
+ "5": {
+ "name": "entity.name.type.class.mermaid"
+ },
+ "6": {
+ "name": "keyword.control.mermaid"
+ },
+ "7": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "comment": "(class name) : (visibility)?(function)( (function param/generic param)? )(classifier)? (return/generic return)?$",
+ "match": "([\\w-]+)\\s?(:)\\s([\\+~#-])?([\\w-]+)(\\()([\\w-]+)?(~)?([\\w-]+)?(~)?\\s?([\\w-]+)?(\\))([*\\$])?\\s?([\\w-]+)?(~)?([\\w-]+)?(~)?$",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.class.mermaid"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "keyword.control.mermaid"
+ },
+ "4": {
+ "name": "entity.name.function.mermaid"
+ },
+ "5": {
+ "name": "punctuation.parenthesis.open.mermaid"
+ },
+ "6": {
+ "name": "storage.type.mermaid"
+ },
+ "7": {
+ "name": "punctuation.definition.typeparameters.begin.mermaid"
+ },
+ "8": {
+ "name": "storage.type.mermaid"
+ },
+ "9": {
+ "name": "punctuation.definition.typeparameters.end.mermaid"
+ },
+ "10": {
+ "name": "entity.name.variable.parameter.mermaid"
+ },
+ "11": {
+ "name": "punctuation.parenthesis.closed.mermaid"
+ },
+ "12": {
+ "name": "keyword.control.mermaid"
+ },
+ "13": {
+ "name": "storage.type.mermaid"
+ },
+ "14": {
+ "name": "punctuation.definition.typeparameters.begin.mermaid"
+ },
+ "15": {
+ "name": "storage.type.mermaid"
+ },
+ "16": {
+ "name": "punctuation.definition.typeparameters.end.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "(class name) : (visibility)?(datatype/generic data type) (attribute name)$",
+ "match": "([\\w-]+)\\s?(:)\\s([\\+~#-])?([\\w-]+)(~)?([\\w-]+)?(~)?\\s([\\w-]+)?$",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.class.mermaid"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "keyword.control.mermaid"
+ },
+ "4": {
+ "name": "storage.type.mermaid"
+ },
+ "5": {
+ "name": "punctuation.definition.typeparameters.begin.mermaid"
+ },
+ "6": {
+ "name": "storage.type.mermaid"
+ },
+ "7": {
+ "name": "punctuation.definition.typeparameters.end.mermaid"
+ },
+ "8": {
+ "name": "entity.name.variable.field.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "<<(Annotation)>> (class name)",
+ "match": "(<<)([\\w-]+)(>>)\\s?([\\w-]+)?",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.typeparameters.begin.mermaid"
+ },
+ "2": {
+ "name": "storage.type.mermaid"
+ },
+ "3": {
+ "name": "punctuation.definition.typeparameters.end.mermaid"
+ },
+ "4": {
+ "name": "entity.name.type.class.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "class (class name) ~?(generic type)?~? ({)",
+ "begin": "(class)\\s+([\\w-]+)(~)?([\\w-]+)?(~)?\\s?({)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "entity.name.type.class.mermaid"
+ },
+ "3": {
+ "name": "punctuation.definition.typeparameters.begin.mermaid"
+ },
+ "4": {
+ "name": "storage.type.mermaid"
+ },
+ "5": {
+ "name": "punctuation.definition.typeparameters.end.mermaid"
+ },
+ "6": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\%%.*",
+ "name": "comment"
+ },
+ {
+ "comment": "(visibility)?(function)( (function param/generic param)? )(classifier)? (return/generic return)?$",
+ "begin": "\\s([\\+~#-])?([\\w-]+)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "entity.name.function.mermaid"
+ },
+ "3": {
+ "name": "punctuation.parenthesis.open.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "comment": "(TBD)",
+ "match": "\\s*,?\\s*([\\w-]+)?(~)?([\\w-]+)?(~)?\\s?([\\w-]+)?",
+ "captures": {
+ "1": {
+ "name": "storage.type.mermaid"
+ },
+ "2": {
+ "name": "punctuation.definition.typeparameters.begin.mermaid"
+ },
+ "3": {
+ "name": "storage.type.mermaid"
+ },
+ "4": {
+ "name": "punctuation.definition.typeparameters.end.mermaid"
+ },
+ "5": {
+ "name": "entity.name.variable.parameter.mermaid"
+ }
+ }
+ }
+ ],
+ "end": "(\\))([*\\$])?\\s?([\\w-]+)?(~)?([\\w-]+)?(~)?$",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.parenthesis.closed.mermaid"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "storage.type.mermaid"
+ },
+ "4": {
+ "name": "punctuation.definition.typeparameters.begin.mermaid"
+ },
+ "5": {
+ "name": "storage.type.mermaid"
+ },
+ "6": {
+ "name": "punctuation.definition.typeparameters.end.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "(visibility)?(datatype/generic data type) (attribute name)$",
+ "match": "\\s([\\+~#-])?([\\w-]+)(~)?([\\w-]+)?(~)?\\s([\\w-]+)?$",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "storage.type.mermaid"
+ },
+ "3": {
+ "name": "punctuation.definition.typeparameters.begin.mermaid"
+ },
+ "4": {
+ "name": "storage.type.mermaid"
+ },
+ "5": {
+ "name": "punctuation.definition.typeparameters.end.mermaid"
+ },
+ "6": {
+ "name": "entity.name.variable.field.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "<<(Annotation)>> (class name)",
+ "match": "(<<)([\\w-]+)(>>)\\s?([\\w-]+)?",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.typeparameters.begin.mermaid"
+ },
+ "2": {
+ "name": "storage.type.mermaid"
+ },
+ "3": {
+ "name": "punctuation.definition.typeparameters.end.mermaid"
+ },
+ "4": {
+ "name": "entity.name.type.class.mermaid"
+ }
+ }
+ }
+ ],
+ "end": "(})",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "class (class name) ~?(generic type)?~?",
+ "match": "(class)\\s+([\\w-]+)(~)?([\\w-]+)?(~)?",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "entity.name.type.class.mermaid"
+ },
+ "3": {
+ "name": "punctuation.definition.typeparameters.begin.mermaid"
+ },
+ "4": {
+ "name": "storage.type.mermaid"
+ },
+ "5": {
+ "name": "punctuation.definition.typeparameters.end.mermaid"
+ }
+ }
+ }
+ ],
+ "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
+ },
+ {
+ "comment": "Entity Relationship Diagram",
+ "begin": "^\\s*(erDiagram)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\%%.*",
+ "name": "comment"
+ },
+ {
+ "comment": "(entity)",
+ "match": "^\\s*([\\w-]+)$",
+ "name": "variable"
+ },
+ {
+ "comment": "(entity) {",
+ "begin": "\\s+([\\w-]+)\\s+({)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "comment": "(type) (name) (PK|FK)? (\"comment\")?",
+ "match": "\\s*([\\w-]+)\\s+([\\w-]+)\\s+(PK|FK)?\\s*(\"[\"\\($&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*\")?\\s*",
+ "captures": {
+ "1": {
+ "name": "storage.type.mermaid"
+ },
+ "2": {
+ "name": "variable"
+ },
+ "3": {
+ "name": "keyword.control.mermaid"
+ },
+ "4": {
+ "name": "string"
+ }
+ }
+ }
+ ],
+ "end": "(})",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "(entity) (relationship) (entity) : (label)",
+ "match": "\\s*([\\w-]+)\\s+((?:\\|o|\\|\\||}o|}\\|)(?:..|--)(?:o\\||\\|\\||o{|\\|{))\\s+([\\w-]+)\\s+(:)\\s+((?:\"[\\w\\s]*\")|(?:[\\w-]+))",
+ "captures": {
+ "1": {
+ "name": "variable"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "variable"
+ },
+ "4": {
+ "name": "keyword.control.mermaid"
+ },
+ "5": {
+ "name": "string"
+ }
+ }
+ }
+ ],
+ "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
+ },
+ {
+ "comment": "Gantt Diagram",
+ "begin": "^\\s*(gantt)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\%%.*",
+ "name": "comment"
+ },
+ {
+ "match": "(dateFormat)\\s+([\\w\\-\\.]+)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "entity.name.function.mermaid"
+ }
+ }
+ },
+ {
+ "match": "(axisFormat)\\s+([\\w\\%\\/\\\\\\-\\.]+)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "entity.name.function.mermaid"
+ }
+ }
+ },
+ {
+ "match": "(title)\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "match": "(excludes)\\s+((?:[\\d\\-,\\s]+|monday|tuesday|wednesday|thursday|friday|saturday|sunday|weekends)+)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "match": "^\\s+(todayMarker)\\s+(.*)$",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "match": "(section)\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "begin": "^\\s(.*)(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "string"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(crit|done|active|after)",
+ "name": "entity.name.function.mermaid"
+ },
+ {
+ "match": "\\%%.*",
+ "name": "comment"
+ }
+ ],
+ "end": "$"
+ }
+ ],
+ "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
+ },
+ {
+ "comment": "Git Graph",
+ "begin": "^\\s*(gitGraph)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\%%.*",
+ "name": "comment"
+ },
+ {
+ "comment": "commit",
+ "begin": "\\s*(commit)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "comment": "(id)(:) (\"id\")",
+ "match": "\\s*(id)(:)\\s?(\"[^\"\\n]*\")",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "comment": "(type)(:) (COMMIT_TYPE)",
+ "match": "\\s*(type)(:)\\s?(NORMAL|REVERSE|HIGHLIGHT)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "entity.name.function.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "(tag)(:) (\"tag\")",
+ "match": "\\s*(tag)(:)\\s?(\"[\\($&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*\")",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "string"
+ }
+ }
+ }
+ ],
+ "end": "$"
+ },
+ {
+ "comment": "(checkout) (branch-name)",
+ "match": "\\s*(checkout)\\s*([^\\s\"]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "variable"
+ }
+ }
+ },
+ {
+ "comment": "(branch) (branch-name) (order)?(:) (number)",
+ "match": "\\s*(branch)\\s*([^\\s\"]*)\\s*(?:(order)(:)\\s?(\\d+))?",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "variable"
+ },
+ "3": {
+ "name": "keyword.control.mermaid"
+ },
+ "4": {
+ "name": "keyword.control.mermaid"
+ },
+ "5": {
+ "name": "constant.numeric.decimal.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "(merge) (branch-name) (tag: \"tag-name\")?",
+ "match": "\\s*(merge)\\s*([^\\s\"]*)\\s*(?:(tag)(:)\\s?(\"[^\"\\n]*\"))?",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "variable"
+ },
+ "3": {
+ "name": "keyword.control.mermaid"
+ },
+ "4": {
+ "name": "keyword.control.mermaid"
+ },
+ "5": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "comment": "(cherry-pick) (id)(:)(\"commit-id\")",
+ "match": "\\s*(cherry-pick)\\s+(id)(:)\\s*(\"[^\"\\n]*\")",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "keyword.control.mermaid"
+ },
+ "4": {
+ "name": "string"
+ }
+ }
+ }
+ ],
+ "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
+ },
+ {
+ "comment": "Graph",
+ "begin": "^\\s*(graph|flowchart)\\s+([\\p{Letter}\\ 0-9]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "entity.name.function.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\%%.*",
+ "name": "comment"
+ },
+ {
+ "match": "\\b(subgraph)\\s+([\\p{Letter}\\ 0-9]+)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "entity.name.function.mermaid"
+ }
+ },
+ "name": "meta.function.mermaid"
+ },
+ {
+ "match": "\\b(end|RB|BT|RL|TD|LR)\\b",
+ "name": "keyword.control.mermaid"
+ },
+ {
+ "comment": "(Entity)(Edge/Shape)(Text)(Edge/Shape)",
+ "begin": "(\\b(?:(?!--|==)[-\\w])+\\b\\s*)(\\(\\[|\\[\\[|\\[\\(|\\[|\\(+|\\>|\\{|\\(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "variable"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "string"
+ }
+ },
+ "patterns": [
+ {
+ "comment": "(\"multi-line text\")",
+ "begin": "\\s*(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "string"
+ }
+ },
+ "patterns": [
+ {
+ "comment": "capture inner text between quotes",
+ "begin": "([^\"]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "string"
+ }
+ },
+ "patterns": [
+ {
+ "match": "([^\"]*)",
+ "captures": {
+ "1": {
+ "name": "comment"
+ }
+ }
+ }
+ ],
+ "end": "(?=\")"
+ }
+ ],
+ "end": "(\")",
+ "endCaptures": {
+ "1": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "comment": "(single line text)",
+ "match": "\\s*([$&%\\^/#.,?!;:*+<>_\\'\\\\\\w\\s]+)",
+ "captures": {
+ "1": {
+ "name": "string"
+ }
+ }
+ }
+ ],
+ "end": "(\\]\\)|\\]\\]|\\)\\]|\\]|\\)+|\\}|\\)\\))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "(Graph Link)(\"Multiline text\")(Graph Link)",
+ "begin": "\\s*((?:-{2,5}|={2,5})[xo>]?\\|)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "comment": "(\"multi-line text\")",
+ "begin": "\\s*(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "string"
+ }
+ },
+ "patterns": [
+ {
+ "comment": "capture inner text between quotes",
+ "begin": "([^\"]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "string"
+ }
+ },
+ "patterns": [
+ {
+ "match": "([^\"]*)",
+ "captures": {
+ "1": {
+ "name": "comment"
+ }
+ }
+ }
+ ],
+ "end": "(?=\")"
+ }
+ ],
+ "end": "(\")",
+ "endCaptures": {
+ "1": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "comment": "(single line text)",
+ "match": "\\s*([$&%\\^/#.,?!;:*+<>_\\'\\\\\\w\\s]+)",
+ "captures": {
+ "1": {
+ "name": "string"
+ }
+ }
+ }
+ ],
+ "end": "(\\|)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "(Graph Link Start Arrow)(Text)(Graph Link End Arrow)",
+ "match": "\\s*([xo<]?(?:-{2,5}|={2,5}|-\\.{1,3}|-\\.))((?:(?!--|==)[\\w\\s*+%=\\\\/:\\.\\-'`,\"&^#$!?])*)((?:-{2,5}|={2,5}|\\.{1,3}-|\\.-)[xo>]?)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "string"
+ },
+ "3": {
+ "name": "keyword.control.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "(Graph Link)",
+ "match": "\\s*([ox<]?(?:-.{1,3}-|-{1,3}|={1,3})[ox>]?)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "Entity",
+ "match": "(\\b(?:(?!--|==)[-\\w])+\\b\\s*)",
+ "name": "variable"
+ },
+ {
+ "comment": "(Class)(Node(s))(ClassName)",
+ "match": "\\s*(class)\\s+(\\b[-,\\w]+)\\s+(\\b\\w+\\b)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "variable"
+ },
+ "3": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "comment": "(ClassDef)(ClassName)(Styles)",
+ "match": "\\s*(classDef)\\s+(\\b\\w+\\b)\\s+(\\b[-,:;#\\w]+)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "variable"
+ },
+ "3": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "comment": "(Click)(Entity)(Link)?(Tooltip)",
+ "match": "\\s*(click)\\s+(\\b[-\\w]+\\b\\s*)(\\b\\w+\\b)?\\s(\"*.*\")",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "variable"
+ },
+ "3": {
+ "name": "variable"
+ },
+ "4": {
+ "name": "string"
+ }
+ }
+ }
+ ],
+ "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
+ },
+ {
+ "comment": "Pie Chart",
+ "begin": "^\\s*(pie)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\%%.*",
+ "name": "comment"
+ },
+ {
+ "match": "(title)\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "begin": "\\s(.*)(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "string"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\%%.*",
+ "name": "comment"
+ }
+ ],
+ "end": "$"
+ }
+ ],
+ "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
+ },
+ {
+ "comment": "Sequence Diagram",
+ "begin": "^\\s*(sequenceDiagram)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(\\%%|#).*",
+ "name": "comment"
+ },
+ {
+ "comment": "(title)(title text)",
+ "match": "(title)\\s*(:)?\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!:*+=<>\\'\\\\\\-\\w\\s]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "comment": "(participant)(Actor)(as)?(Label)?",
+ "match": "\\s*(participant|actor)\\s+((?:(?! as )[\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s])+)\\s*(as)?\\s([\"\\(\\)$&%\\^/#.,?!*=<>\\'\\\\\\w\\s]+)?",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "variable"
+ },
+ "3": {
+ "name": "keyword.control.mermaid"
+ },
+ "4": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "comment": "(activate/deactivate)(Actor)",
+ "match": "\\s*((?:de)?activate)\\s+(\\b[\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s]+\\b\\s*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "variable"
+ }
+ }
+ },
+ {
+ "comment": "(Note)(direction)(Actor)(,)?(Actor)?(:)(Message)",
+ "match": "\\s*(Note)\\s+((?:left|right)\\sof|over)\\s+(\\b[\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s]+\\b\\s*)(,)?(\\b[\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s]+\\b\\s*)?(:)(?:\\s+([^;#]*))?",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "entity.name.function.mermaid"
+ },
+ "3": {
+ "name": "variable"
+ },
+ "4": {
+ "name": "keyword.control.mermaid"
+ },
+ "5": {
+ "name": "variable"
+ },
+ "6": {
+ "name": "keyword.control.mermaid"
+ },
+ "7": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "comment": "(loop)(loop text)",
+ "match": "\\s*(loop)(?:\\s+([^;#]*))?",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "comment": "(end)",
+ "match": "\\s*(end)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "(alt/else/opt/par/and/autonumber)(text)",
+ "match": "\\s*(alt|else|opt|par|and|rect|autonumber)(?:\\s+([^#;]*))?",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "comment": "(Actor)(Arrow)(Actor)(:)(Message)",
+ "match": "\\s*(\\b[\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s]+\\b)\\s*(-?-(?:\\>|x|\\))\\>?[+-]?)\\s*([\"\\(\\)$&%\\^/#.?!*=<>\\'\\\\\\w\\s]+\\b)\\s*(:)\\s*([^;#]*)",
+ "captures": {
+ "1": {
+ "name": "variable"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "variable"
+ },
+ "4": {
+ "name": "keyword.control.mermaid"
+ },
+ "5": {
+ "name": "string"
+ }
+ }
+ }
+ ],
+ "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
+ },
+ {
+ "comment": "State Diagram",
+ "begin": "^\\s*(stateDiagram(?:-v2)?)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\%%.*",
+ "name": "comment"
+ },
+ {
+ "comment": "}",
+ "match": "\\s+(})\\s+",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "--",
+ "match": "\\s+(--)\\s+",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "(state)",
+ "match": "^\\s*([\\w-]+)$",
+ "name": "variable"
+ },
+ {
+ "comment": "(state) : (description)",
+ "match": "([\\w-]+)\\s+(:)\\s+(\\s*[-\\w\\s]+\\b)",
+ "captures": {
+ "1": {
+ "name": "variable"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "comment": "state",
+ "begin": "(state)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "comment": "\"(description)\" as (state)",
+ "match": "\\s+(\"[-\\w\\s]+\\b\")\\s+(as)\\s+([\\w-]+)",
+ "captures": {
+ "1": {
+ "name": "string"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "variable"
+ }
+ }
+ },
+ {
+ "comment": "(state name) {",
+ "match": "\\s+([\\w-]+)\\s+({)",
+ "captures": {
+ "1": {
+ "name": "variable"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ }
+ }
+ },
+ {
+ "comment": "(state name) <<fork|join>>",
+ "match": "\\s+([\\w-]+)\\s+(<<(?:fork|join)>>)",
+ "captures": {
+ "1": {
+ "name": "variable"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ }
+ }
+ }
+ ],
+ "end": "$"
+ },
+ {
+ "comment": "(state) -->",
+ "begin": "([\\w-]+)\\s+(-->)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "comment": "(state) (:)? (transition text)?",
+ "match": "\\s+([\\w-]+)\\s*(:)?\\s*([^\\n:]+)?",
+ "captures": {
+ "1": {
+ "name": "variable"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "comment": "[*] (:)? (transition text)?",
+ "match": "(\\[\\*\\])\\s*(:)?\\s*([^\\n:]+)?",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "string"
+ }
+ }
+ }
+ ],
+ "end": "$"
+ },
+ {
+ "comment": "[*] --> (state) (:)? (transition text)?",
+ "match": "(\\[\\*\\])\\s+(-->)\\s+([\\w-]+)\\s*(:)?\\s*([^\\n:]+)?",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "variable"
+ },
+ "4": {
+ "name": "keyword.control.mermaid"
+ },
+ "5": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "comment": "note left|right of (state name)",
+ "match": "(note (?:left|right) of)\\s+([\\w-]+)\\s+(:)\\s*([^\\n:]+)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "variable"
+ },
+ "3": {
+ "name": "keyword.control.mermaid"
+ },
+ "4": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "comment": "note left|right of (state name) (note text) end note",
+ "begin": "(note (?:left|right) of)\\s+([\\w-]+)(.|\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "variable"
+ }
+ },
+ "contentName": "string",
+ "end": "(end note)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ }
+ }
+ ],
+ "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
+ },
+ {
+ "comment": "User Journey",
+ "begin": "^\\s*(journey)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\%%.*",
+ "name": "comment"
+ },
+ {
+ "match": "(title|section)\\s+(\\s*[\"\\(\\)$&%\\^/#.,?!;:*+=<>\\'\\\\\\-\\w\\s]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.mermaid"
+ },
+ "2": {
+ "name": "string"
+ }
+ }
+ },
+ {
+ "begin": "\\s*([\"\\(\\)$&%\\^/.,?!*+=<>\\'\\\\\\-\\w\\s]*)\\s*(:)\\s*(\\d+)\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "string"
+ },
+ "2": {
+ "name": "keyword.control.mermaid"
+ },
+ "3": {
+ "name": "constant.numeric.decimal.mermaid"
+ },
+ "4": {
+ "name": "keyword.control.mermaid"
+ }
+ },
+ "patterns": [
+ {
+ "comment": "(taskName)",
+ "match": "\\s*,?\\s*([^,#\\n]+)",
+ "captures": {
+ "1": {
+ "name": "variable"
+ }
+ }
+ }
+ ],
+ "end": "$"
+ }
+ ],
+ "end": "(^|\\G)(?=\\s*[`:~]{3,}\\s*$)"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.mermaid",
+ "name": "mermaid"
+}
diff --git a/node_modules/shiki/languages/narrat.tmLanguage.json b/node_modules/shiki/languages/narrat.tmLanguage.json
new file mode 100644
index 0000000..1b88942
--- /dev/null
+++ b/node_modules/shiki/languages/narrat.tmLanguage.json
@@ -0,0 +1,227 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "name": "narrat",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#expression"
+ }
+ ],
+ "repository": {
+ "expression": {
+ "patterns": [
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#commands"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#primitives"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#paren-expression"
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "name": "keyword.control.narrat",
+ "match": "\\b(if|else|choice)\\b"
+ },
+ {
+ "name": "variable.value.narrat",
+ "match": "\\$[\\w|\\.]+\\b"
+ },
+ {
+ "name": "entity.name.function.narrat",
+ "match": "(?x) # Ignore comments\n ^\\w+ # Find label name\n (?=(\\s|\\w)*:) # Positive lookahead for ':'\n"
+ },
+ {
+ "name": "invalid.label.narrat",
+ "match": "(?x) # Ignore comments\n ^\\w+ # Find label name\n (?!(\\s|\\w)*:) # Negative lookahead for ':'\n"
+ },
+ {
+ "name": "entity.other.attribute-name",
+ "match": "(?<=\\w)[^^](\\b\\w+\\b)(?=(\\s|\\w)*:)"
+ }
+ ]
+ },
+ "commands": {
+ "patterns": [
+ {
+ "name": "keyword.commands.variables.narrat",
+ "match": "\\b(set|var)\\b"
+ },
+ {
+ "name": "keyword.commands.text.narrat",
+ "match": "\\b(talk|think)\\b"
+ },
+ {
+ "name": "keyword.commands.flow.narrat",
+ "match": "\\b(jump|run|wait|return|save|save_prompt)"
+ },
+ {
+ "name": "keyword.commands.helpers.narrat",
+ "match": "\\b(log|clear_dialog)\\b"
+ },
+ {
+ "name": "keyword.commands.screens.narrat",
+ "match": "\\b(set_screen|empty_layer|set_button)"
+ },
+ {
+ "name": "keyword.commands.audio.narrat",
+ "match": "\\b(play|pause|stop)\\b"
+ },
+ {
+ "name": "keyword.commands.notifications.narrat",
+ "match": "\\b(notify|enable_notifications|disable_notifications)\\b"
+ },
+ {
+ "name": "keyword.commands.stats.narrat",
+ "match": "\\b(set_stat|get_stat_value|add_stat)"
+ },
+ {
+ "name": "keyword.commands.math.narrat",
+ "match": "\\b(neg|abs|random|random_float|random_from_args|min|max|clamp|floor|round|ceil|sqrt|^)\\b"
+ },
+ {
+ "name": "keyword.commands.string.narrat",
+ "match": "\\b(concat|join)\\b"
+ },
+ {
+ "name": "keyword.commands.text_field.narrat",
+ "match": "\\b(text_field)\\b"
+ },
+ {
+ "name": "keyword.commands.skills.narrat",
+ "match": "\\b(add_level|set_level|add_xp|roll|get_level|get_xp)\\b"
+ },
+ {
+ "name": "keyword.commands.inventory.narrat",
+ "match": "\\b(add_item|remove_item|enable_interaction|disable_interaction|has_item?|item_amount?)"
+ },
+ {
+ "name": "keyword.commands.quests.narrat",
+ "match": "\\b(start_quest|start_objective|complete_objective|complete_quest|quest_started?|objective_started?|quest_completed?|objective_completed?)"
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "name": "keyword.operator.logic.narrat",
+ "match": "(&&|\\|\\||!=|==|>=|<=|<|>|!|\\?)\\s"
+ },
+ {
+ "name": "keyword.operator.arithmetic.narrat",
+ "match": "(\\+|-|\\*|\\/)\\s"
+ }
+ ]
+ },
+ "interpolation": {
+ "patterns": [
+ {
+ "name": "variable.interpolation.narrat",
+ "match": "(\\w|\\.)+"
+ }
+ ]
+ },
+ "strings": {
+ "name": "string.quoted.double.narrat",
+ "begin": "\"",
+ "end": "\"",
+ "patterns": [
+ {
+ "name": "constant.character.escape.narrat",
+ "match": "\\\\."
+ },
+ {
+ "name": "expression.template",
+ "begin": "%{",
+ "end": "}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.template.open"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.template.close.narrat"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ }
+ ]
+ },
+ "paren-expression": {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.paren.open"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.paren.close"
+ }
+ },
+ "name": "expression.group",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "primitives": {
+ "patterns": [
+ {
+ "name": "constant.numeric.narrat",
+ "match": "\\b\\d+\\b"
+ },
+ {
+ "name": "constant.language.true.narrat",
+ "match": "\\btrue\\b"
+ },
+ {
+ "name": "constant.language.false.narrat",
+ "match": "\\bfalse\\b"
+ },
+ {
+ "name": "constant.language.null.narrat",
+ "match": "\\bnull\\b"
+ },
+ {
+ "name": "constant.language.undefined.narrat",
+ "match": "\\bundefined\\b"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "name": "comment.line.narrat",
+ "match": "\\/\\/.*$"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.narrat"
+}
diff --git a/node_modules/shiki/languages/nextflow.tmLanguage.json b/node_modules/shiki/languages/nextflow.tmLanguage.json
new file mode 100644
index 0000000..dee964a
--- /dev/null
+++ b/node_modules/shiki/languages/nextflow.tmLanguage.json
@@ -0,0 +1,299 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "name": "nextflow",
+ "scopeName": "source.nextflow",
+ "keyEquivalent": "^~N",
+ "patterns": [
+ {
+ "include": "#nfl-rules"
+ }
+ ],
+ "repository": {
+ "nfl-rules": {
+ "patterns": [
+ {
+ "include": "#process-def"
+ },
+ {
+ "include": "#workflow-def"
+ },
+ {
+ "include": "#code-block"
+ },
+ {
+ "include": "#include-statement"
+ },
+ {
+ "include": "#implicit-variables"
+ },
+ {
+ "comment": "method call and parens",
+ "begin": "(\\w*\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.nextflow-groovy"
+ }
+ ]
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#nfl-rules"
+ }
+ ]
+ },
+ {
+ "comment": "braces",
+ "begin": "{",
+ "end": "}",
+ "patterns": [
+ {
+ "include": "#nfl-rules"
+ }
+ ]
+ },
+ {
+ "include": "source.nextflow-groovy"
+ }
+ ]
+ },
+ "process-def": {
+ "name": "process.nextflow",
+ "begin": "^\\s*(process)\\s+(\\w+|\"[^\"]+\"|'[^']+')\\s*{",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.nextflow"
+ },
+ "2": {
+ "name": "function.nextflow"
+ }
+ },
+ "end": "}",
+ "patterns": [
+ {
+ "include": "#process-body"
+ }
+ ]
+ },
+ "process-body": {
+ "patterns": [
+ {
+ "name": "entity.name.function.nextflow",
+ "match": "(?:accelerator|afterScript|beforeScript|cache|cpus|conda|container|containerOptions|clusterOptions|debug|disk|echo|errorStrategy|executor|ext|label|machineType|maxErrors|maxForks|maxRetries|memory|module|penv|pod|publishDir|queue|resourceLabels|scratch|stageInMode|stageOutMode|storeDir|tag|time)\\b"
+ },
+ {
+ "name": "constant.block.nextflow",
+ "match": "(?:input|output|when|script|shell|exec):"
+ },
+ {
+ "name": "entity.name.function.nextflow",
+ "match": "\\b(tuple|set|path|file|val|stdout)(\\(|\\s)"
+ },
+ {
+ "include": "#implicit-variables"
+ },
+ {
+ "comment": "method call and parens",
+ "begin": "(\\w*\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.nextflow-groovy"
+ }
+ ]
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#process-body"
+ }
+ ]
+ },
+ {
+ "comment": "braces",
+ "begin": "{",
+ "end": "}",
+ "patterns": [
+ {
+ "include": "#process-body"
+ }
+ ]
+ },
+ {
+ "include": "source.nextflow-groovy#comments"
+ },
+ {
+ "include": "source.nextflow-groovy#support-functions"
+ },
+ {
+ "include": "source.nextflow-groovy#keyword"
+ },
+ {
+ "include": "source.nextflow-groovy#values"
+ },
+ {
+ "include": "source.nextflow-groovy#anonymous-classes-and-new"
+ },
+ {
+ "include": "source.nextflow-groovy#types"
+ },
+ {
+ "include": "source.nextflow-groovy#parens"
+ },
+ {
+ "include": "source.nextflow-groovy#closures"
+ },
+ {
+ "include": "source.nextflow-groovy#braces"
+ }
+ ]
+ },
+ "workflow-def": {
+ "name": "workflow.nextflow",
+ "begin": "^\\s*(workflow)(?:\\s+(\\w+|\"[^\"]+\"|'[^']+'))?\\s*{",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.nextflow"
+ },
+ "2": {
+ "name": "constant.nextflow"
+ }
+ },
+ "end": "}",
+ "patterns": [
+ {
+ "include": "#workflow-body"
+ }
+ ]
+ },
+ "workflow-body": {
+ "patterns": [
+ {
+ "include": "#implicit-variables"
+ },
+ {
+ "name": "constant.block.nextflow",
+ "match": "(?:take|main|emit):"
+ },
+ {
+ "name": "entity.name.function.nextflow",
+ "match": "(?<=[\\s\\.])(branch|buffer|close|collate|collect|collectFile|combine|concat|count|countBy|cross|distinct|dump|filter|first|flatMap|flatten|groupTuple|ifEmpty|join|last|map|max|merge|min|mix|multiMap|randomSample|reduce|set|splitCsv|splitFasta|splitFastq|splitText|sum|take|tap|toInteger|toList|toSortedList|transpose|unique|until|view)(?=[{\\(\\s])"
+ },
+ {
+ "comment": "Channel factory single line",
+ "match": "\\b((?:C|c)hannel\\.)((fromList|fromPath|fromFilePairs|fromSRA|from|of|empty|value|watchPath)\\W)?",
+ "captures": {
+ "1": {
+ "name": "keyword.nextflow"
+ },
+ "2": {
+ "name": "entity.name.function.nextflow"
+ }
+ }
+ },
+ {
+ "comment": "Channel factory multi-line",
+ "begin": "\\b((?:C|c)hannel)\\s*$",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.nextflow"
+ }
+ },
+ "end": "(^\\s*)(?:(\\.)(fromList|fromPath|fromFilePairs|fromSRA|from|of|empty|value|watchPath)\\W)?",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.nextflow"
+ },
+ "2": {
+ "name": "keyword.nextflow"
+ },
+ "3": {
+ "name": "entity.name.function.nextflow"
+ }
+ }
+ },
+ {
+ "comment": "method call and parens",
+ "begin": "(\\w*\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.nextflow-groovy"
+ }
+ ]
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#workflow-body"
+ }
+ ]
+ },
+ {
+ "comment": "braces",
+ "begin": "{",
+ "end": "}",
+ "patterns": [
+ {
+ "include": "#workflow-body"
+ }
+ ]
+ },
+ {
+ "include": "source.nextflow-groovy#comments"
+ },
+ {
+ "include": "source.nextflow-groovy#support-functions"
+ },
+ {
+ "include": "source.nextflow-groovy#keyword"
+ },
+ {
+ "include": "source.nextflow-groovy#values"
+ },
+ {
+ "include": "source.nextflow-groovy#anonymous-classes-and-new"
+ },
+ {
+ "include": "source.nextflow-groovy#types"
+ },
+ {
+ "include": "source.nextflow-groovy#parens"
+ },
+ {
+ "include": "source.nextflow-groovy#closures"
+ },
+ {
+ "include": "source.nextflow-groovy#braces"
+ }
+ ]
+ },
+ "include-statement": {
+ "patterns": [
+ {
+ "match": "^\\b(include)\\b",
+ "name": "keyword.nextflow"
+ },
+ {
+ "match": "\\b(from)\\b",
+ "name": "keyword.nextflow"
+ }
+ ]
+ },
+ "implicit-variables": {
+ "patterns": [
+ {
+ "match": "(?<=[^\\.\\w]|^)(params|nextflow|workflow|launchDir|moduleDir|projectDir|workDir)\\b",
+ "name": "variable.language.nextflow"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/nginx.tmLanguage.json b/node_modules/shiki/languages/nginx.tmLanguage.json
new file mode 100644
index 0000000..8ad689e
--- /dev/null
+++ b/node_modules/shiki/languages/nginx.tmLanguage.json
@@ -0,0 +1,2122 @@
+{
+ "fileTypes": [
+ "conf.erb",
+ "conf",
+ "ngx",
+ "nginx.conf",
+ "mime.types",
+ "fastcgi_params",
+ "scgi_params",
+ "uwsgi_params"
+ ],
+ "foldingStartMarker": "\\{\\s*$",
+ "foldingStopMarker": "^\\s*\\}",
+ "keyEquivalent": "^~N",
+ "name": "nginx",
+ "patterns": [
+ {
+ "name": "comment.line.number-sign",
+ "match": "\\#.*"
+ },
+ {
+ "name": "meta.context.lua.nginx",
+ "begin": "\\b((?:content|rewrite|access|init_worker|init|set|log|balancer|ssl_(?:client_hello|session_fetch|certificate))_by_lua(?:_block)?)\\s*\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.directive.context.nginx"
+ }
+ },
+ "contentName": "meta.embedded.block.lua",
+ "patterns": [
+ {
+ "include": "source.lua"
+ }
+ ]
+ },
+ {
+ "name": "meta.context.lua.nginx",
+ "begin": "\\b((?:content|rewrite|access|init_worker|init|set|log|balancer|ssl_(?:client_hello|session_fetch|certificate))_by_lua)\\s*'",
+ "end": "'",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.directive.context.nginx"
+ }
+ },
+ "contentName": "meta.embedded.block.lua",
+ "patterns": [
+ {
+ "include": "source.lua"
+ }
+ ]
+ },
+ {
+ "name": "meta.context.events.nginx",
+ "begin": "\\b(events) +\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.directive.context.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.context.http.nginx",
+ "begin": "\\b(http) +\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.directive.context.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.context.mail.nginx",
+ "begin": "\\b(mail) +\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.directive.context.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.context.stream.nginx",
+ "begin": "\\b(stream) +\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.directive.context.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.context.server.nginx",
+ "begin": "\\b(server) +\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.directive.context.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.context.location.nginx",
+ "begin": "\\b(location) +([\\^]?~[\\*]?|=) +(.*?)\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.directive.context.nginx"
+ },
+ "2": {
+ "name": "keyword.operator.nginx"
+ },
+ "3": {
+ "name": "string.regexp.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.context.location.nginx",
+ "begin": "\\b(location) +(.*?)\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.directive.context.nginx"
+ },
+ "2": {
+ "name": "entity.name.context.location.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.context.limit_except.nginx",
+ "begin": "\\b(limit_except) +\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.directive.context.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.context.if.nginx",
+ "begin": "\\b(if) +\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#if_condition"
+ }
+ ]
+ },
+ {
+ "name": "meta.context.upstream.nginx",
+ "begin": "\\b(upstream) +(.*?)\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.directive.context.nginx"
+ },
+ "2": {
+ "name": "entity.name.context.location.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.context.types.nginx",
+ "begin": "\\b(types) +\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.directive.context.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.context.map.nginx",
+ "begin": "\\b(map) +(\\$)([A-Za-z0-9\\_]+) +(\\$)([A-Za-z0-9\\_]+) *\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.directive.context.nginx"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.nginx"
+ },
+ "3": {
+ "name": "variable.parameter.nginx"
+ },
+ "4": {
+ "name": "punctuation.definition.variable.nginx"
+ },
+ "5": {
+ "name": "variable.other.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ },
+ {
+ "name": "punctuation.terminator.nginx",
+ "match": ";"
+ },
+ {
+ "name": "comment.line.number-sign",
+ "match": "\\#.*"
+ }
+ ]
+ },
+ {
+ "name": "meta.block.nginx",
+ "begin": "\\{",
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(return)\\b",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(rewrite)\\s+",
+ "end": "(last|break|redirect|permanent)?(;)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.other.nginx"
+ },
+ "2": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(server)\\s+",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#server_parameters"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(internal|empty_gif|f4f|flv|hls|mp4|break|status|stub_status|ip_hash|ntlm|least_conn|upstream_conf|least_conn|zone_sync)\\b",
+ "end": "(;|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.nginx"
+ }
+ }
+ },
+ {
+ "begin": "([\"'\\s]|^)(accept_)(mutex|mutex_delay)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(debug_)(connection|points)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(error_)(log|page)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(ssl_)(engine|buffer_size|certificate|certificate_key|ciphers|client_certificate|conf_command|crl|dhparam|early_data|ecdh_curve|ocsp|ocsp_cache|ocsp_responder|password_file|prefer_server_ciphers|protocols|reject_handshake|session_cache|session_ticket_key|session_tickets|session_timeout|stapling|stapling_file|stapling_responder|stapling_verify|trusted_certificate|verify_client|verify_depth|alpn|handshake_timeout|preread)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(worker_)(aio_requests|connections|cpu_affinity|priority|processes|rlimit_core|rlimit_nofile|shutdown_timeout)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(auth_)(delay|basic|basic_user_file|jwt|jwt_claim_set|jwt_header_set|jwt_key_file|jwt_key_request|jwt_leeway|jwt_type|jwt_require|request|request_set|http|http_header|http_pass_client_cert|http_timeout)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(client_)(body_buffer_size|body_in_file_only|body_in_single_buffer|body_temp_path|body_timeout|header_buffer_size|header_timeout|max_body_size)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(keepalive_)(disable|requests|time|timeout)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(limit_)(rate|rate_after|conn|conn_dry_run|conn_log_level|conn_status|conn_zone|zone|req|req_dry_run|req_log_level|req_status|req_zone)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(lingering_)(close|time|timeout)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(log_)(not_found|subrequest|format)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(max_)(ranges|errors)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(msie_)(padding|refresh)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(open_)(file_cache|file_cache_errors|file_cache_min_uses|file_cache_valid|log_file_cache)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(send_)(lowat|timeout)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(server_)(name|name_in_redirect|names_hash_bucket_size|names_hash_max_size|tokens)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(tcp_)(nodelay|nopush)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(types_)(hash_bucket_size|hash_max_size)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(variables_)(hash_bucket_size|hash_max_size)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(add_)(before_body|after_body|header|trailer)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(status_)(zone|format)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(autoindex_)(exact_size|format|localtime)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(ancient_)(browser|browser_value)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(modern_)(browser|browser_value)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(charset_)(map|types)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(dav_)(access|methods)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(fastcgi_)(bind|buffer_size|buffering|buffers|busy_buffers_size|cache|cache_background_update|cache_bypass|cache_key|cache_lock|cache_lock_age|cache_lock_timeout|cache_max_range_offset|cache_methods|cache_min_uses|cache_path|cache_purge|cache_revalidate|cache_use_stale|cache_valid|catch_stderr|connect_timeout|force_ranges|hide_header|ignore_client_abort|ignore_headers|index|intercept_errors|keep_conn|limit_rate|max_temp_file_size|next_upstream|next_upstream_timeout|next_upstream_tries|no_cache|param|pass|pass_header|pass_request_body|pass_request_headers|read_timeout|request_buffering|send_lowat|send_timeout|socket_keepalive|split_path_info|store|store_access|temp_file_write_size|temp_path)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(geoip_)(country|city|org|proxy|proxy_recursive)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(grpc_)(bind|buffer_size|connect_timeout|hide_header|ignore_headers|intercept_errors|next_upstream|next_upstream_timeout|next_upstream_tries|pass|pass_header|read_timeout|send_timeout|set_header|socket_keepalive|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_conf_command|ssl_crl|ssl_name|ssl_password_file|ssl_protocols|ssl_server_name|ssl_session_reuse|ssl_trusted_certificate|ssl_verify|ssl_verify_depth)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(gzip_)(buffers|comp_level|disable|http_version|min_length|proxied|types|vary|static)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(hls_)(buffers|forward_args|fragment|mp4_buffer_size|mp4_max_buffer_size)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(image_)(filter|filter_buffer|filter_interlace|filter_jpeg_quality|filter_sharpen|filter_transparency|filter_webp_quality)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(map_)(hash_bucket_size|hash_max_size)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(memcached_)(bind|buffer_size|connect_timeout|force_ranges|gzip_flag|next_upstream|next_upstream_timeout|next_upstream_tries|pass|read_timeout|send_timeout|socket_keepalive)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(mp4_)(buffer_size|max_buffer_size|limit_rate|limit_rate_after)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(perl_)(modules|require|set)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(proxy_)(bind|buffer_size|buffering|buffers|busy_buffers_size|cache|cache_background_update|cache_bypass|cache_convert_head|cache_key|cache_lock|cache_lock_age|cache_lock_timeout|cache_max_range_offset|cache_methods|cache_min_uses|cache_path|cache_purge|cache_revalidate|cache_use_stale|cache_valid|connect_timeout|cookie_domain|cookie_flags|cookie_path|force_ranges|headers_hash_bucket_size|headers_hash_max_size|hide_header|http_version|ignore_client_abort|ignore_headers|intercept_errors|limit_rate|max_temp_file_size|method|next_upstream|next_upstream_timeout|next_upstream_tries|no_cache|pass|pass_header|pass_request_body|pass_request_headers|read_timeout|redirect|request_buffering|send_lowat|send_timeout|set_body|set_header|socket_keepalive|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_conf_command|ssl_crl|ssl_name|ssl_password_file|ssl_protocols|ssl_server_name|ssl_session_reuse|ssl_trusted_certificate|ssl_verify|ssl_verify_depth|store|store_access|temp_file_write_size|temp_path|buffer|pass_error_message|protocol|smtp_auth|timeout|protocol_timeout|download_rate|half_close|requests|responses|session_drop|ssl|upload_rate)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(real_)(ip_header|ip_recursive)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(referer_)(hash_bucket_size|hash_max_size)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(scgi_)(bind|buffer_size|buffering|buffers|busy_buffers_size|cache|cache_background_update|cache_bypass|cache_key|cache_lock|cache_lock_age|cache_lock_timeout|cache_max_range_offset|cache_methods|cache_min_uses|cache_path|cache_purge|cache_revalidate|cache_use_stale|cache_valid|connect_timeout|force_ranges|hide_header|ignore_client_abort|ignore_headers|intercept_errors|limit_rate|max_temp_file_size|next_upstream|next_upstream_timeout|next_upstream_tries|no_cache|param|pass|pass_header|pass_request_body|pass_request_headers|read_timeout|request_buffering|send_timeout|socket_keepalive|store|store_access|temp_file_write_size|temp_path)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(secure_)(link|link_md5|link_secret)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(session_)(log|log_format|log_zone)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(spdy_)(chunk_size|headers_comp)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(ssi_)(last_modified|min_file_chunk|silent_errors|types|value_length)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(sub_)(filter|filter_last_modified|filter_once|filter_types)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(health_)(check|check_timeout)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(userid_)(domain|expires|flags|mark|name|p3p|path|service)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(uwsgi_)(bind|buffer_size|buffering|buffers|busy_buffers_size|cache|cache_background_update|cache_bypass|cache_key|cache_lock|cache_lock_age|cache_lock_timeout|cache_max_range_offset|cache_methods|cache_min_uses|cache_path|cache_purge|cache_revalidate|cache_use_stale|cache_valid|connect_timeout|force_ranges|hide_header|ignore_client_abort|ignore_headers|intercept_errors|limit_rate|max_temp_file_size|modifier1|modifier2|next_upstream|next_upstream_timeout|next_upstream_tries|no_cache|param|pass|pass_header|pass_request_body|pass_request_headers|read_timeout|request_buffering|send_timeout|socket_keepalive|ssl_certificate|ssl_certificate_key|ssl_ciphers|ssl_conf_command|ssl_crl|ssl_name|ssl_password_file|ssl_protocols|ssl_server_name|ssl_session_reuse|ssl_trusted_certificate|ssl_verify|ssl_verify_depth|store|store_access|temp_file_write_size|temp_path)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(http2_)(body_preread_size|chunk_size|idle_timeout|max_concurrent_pushes|max_concurrent_streams|max_field_size|max_header_size|max_requests|push|push_preload|recv_buffer_size|recv_timeout)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(xslt_)(last_modified|param|string_param|stylesheet|types)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(imap_)(auth|capabilities|client_buffer)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(pop3_)(auth|capabilities)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(smtp_)(auth|capabilities|client_buffer|greeting_delay)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(preread_)(buffer_size|timeout)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(zone_)(sync_buffers|sync_connect_retry_interval|sync_connect_timeout|sync_interval|sync_recv_buffer_size|sync_server|sync_ssl|sync_ssl_certificate|sync_ssl_certificate_key|sync_ssl_ciphers|sync_ssl_conf_command|sync_ssl_crl|sync_ssl_name|sync_ssl_password_file|sync_ssl_protocols|sync_ssl_server_name|sync_ssl_trusted_certificate|sync_ssl_verify|sync_ssl_verify_depth|sync_timeout)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(js_)(body_filter|content|fetch_ciphers|fetch_protocols|fetch_trusted_certificate|fetch_verify_depth|header_filter|import|include|path|set|var|access|filter|preread)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ },
+ "4": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "([\"'\\s]|^)(daemon|env|include|pid|use|user|aio|alias|directio|etag|listen|resolver|root|satisfy|sendfile|allow|deny|api|autoindex|charset|geo|gunzip|gzip|expires|index|keyval|mirror|perl|set|slice|ssi|ssl|zone|state|hash|keepalive|queue|random|sticky|match|userid|protocol|timeout|xclient|starttls|load_module|lock_file|master_process|multi_accept|pcre_jit|thread_pool|timer_resolution|working_directory|absolute_redirect|aio_write|chunked_transfer_encoding|connection_pool_size|default_type|directio_alignment|disable_symlinks|if_modified_since|ignore_invalid_headers|large_client_header_buffers|merge_slashes|output_buffers|port_in_redirect|postpone_output|read_ahead|recursive_error_pages|request_pool_size|reset_timedout_connection|resolver_timeout|sendfile_max_chunk|subrequest_output_buffer_size|try_files|underscores_in_headers|addition_types|override_charset|source_charset|create_full_put_path|min_delete_depth|f4f_buffer_size|gunzip_buffers|keyval_zone|access_log|mirror_request_body|random_index|set_real_ip_from|valid_referers|rewrite_log|uninitialized_variable_warn|split_clients|least_time|sticky_cookie_insert|xml_entities|google_perftools_profiles)([\"'\\s]|$)",
+ "end": ";",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.nginx"
+ },
+ "2": {
+ "name": "keyword.directive.nginx"
+ },
+ "3": {
+ "name": "keyword.directive.nginx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "\\b([a-zA-Z0-9\\_]+)\\s+",
+ "end": "(;|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.directive.unknown.nginx"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ {
+ "begin": "\\b([a-z]+\\/[A-Za-z0-9\\-\\.\\+]+)\\b",
+ "end": "(;)",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.other.mediatype.nginx"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.nginx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#values"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "if_condition": {
+ "patterns": [
+ {
+ "include": "#variables"
+ },
+ {
+ "name": "keyword.operator.nginx",
+ "match": "\\!?\\~\\*?\\s"
+ },
+ {
+ "name": "keyword.operator.nginx",
+ "match": "\\!?\\-[fdex]\\s"
+ },
+ {
+ "name": "keyword.operator.nginx",
+ "match": "\\!?=[^=]"
+ },
+ {
+ "include": "#regexp_and_string"
+ }
+ ]
+ },
+ "server_parameters": {
+ "patterns": [
+ {
+ "match": "(?:^|\\s)(weight|max_conn|max_fails|fail_timeout|slow_start)(=)([0-9][0-9\\.]*[bBkKmMgGtTsShHdD]?)(?:\\s|;|$)",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.nginx"
+ },
+ "2": {
+ "name": "keyword.operator.nginx"
+ },
+ "3": {
+ "name": "constant.numeric.nginx"
+ }
+ }
+ },
+ {
+ "include": "#values"
+ }
+ ]
+ },
+ "variables": {
+ "patterns": [
+ {
+ "match": "(\\$)([A-Za-z0-9\\_]+)\\b",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.nginx"
+ },
+ "2": {
+ "name": "variable.other.nginx"
+ }
+ }
+ },
+ {
+ "match": "(\\$\\{)([A-Za-z0-9\\_]+)(\\})",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.nginx"
+ },
+ "2": {
+ "name": "variable.other.nginx"
+ },
+ "3": {
+ "name": "punctuation.definition.variable.nginx"
+ }
+ }
+ }
+ ]
+ },
+ "regexp_and_string": {
+ "patterns": [
+ {
+ "name": "string.regexp.nginx",
+ "match": "\\^.*?\\$"
+ },
+ {
+ "name": "string.quoted.double.nginx",
+ "begin": "\"",
+ "end": "\"",
+ "patterns": [
+ {
+ "name": "constant.character.escape.nginx",
+ "match": "\\\\[\"'nt\\\\]"
+ },
+ {
+ "include": "#variables"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.single.nginx",
+ "begin": "'",
+ "end": "'",
+ "patterns": [
+ {
+ "name": "constant.character.escape.nginx",
+ "match": "\\\\[\"'nt\\\\]"
+ },
+ {
+ "include": "#variables"
+ }
+ ]
+ }
+ ]
+ },
+ "values": {
+ "patterns": [
+ {
+ "include": "#variables"
+ },
+ {
+ "name": "comment.line.number-sign",
+ "match": "\\#.*"
+ },
+ {
+ "match": "[\\t ](=?[0-9][0-9\\.]*[bBkKmMgGtTsShHdD]?)(?=[\\t ;])",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.nginx"
+ }
+ }
+ },
+ {
+ "name": "constant.language.nginx",
+ "match": "[\\t ](on|off|true|false)(?=[\\t ;])"
+ },
+ {
+ "name": "constant.language.nginx",
+ "match": "[\\t ](kqueue|rtsig|epoll|\\/dev\\/poll|select|poll|eventport|max|all|default_server|default|main|crit|error|debug|warn|notice|last)(?=[\\t ;])"
+ },
+ {
+ "name": "keyword.operator.nginx",
+ "match": "\\\\.*\\ |\\~\\*|\\~|\\!\\~\\*|\\!\\~"
+ },
+ {
+ "include": "#regexp_and_string"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.nginx",
+ "uuid": "0C04066A-12D2-43CA-8238-00A12CE4C12D"
+}
diff --git a/node_modules/shiki/languages/nim.tmLanguage.json b/node_modules/shiki/languages/nim.tmLanguage.json
new file mode 100644
index 0000000..02d291d
--- /dev/null
+++ b/node_modules/shiki/languages/nim.tmLanguage.json
@@ -0,0 +1,1521 @@
+{
+ "fileTypes": ["nim"],
+ "keyEquivalent": "^~N",
+ "name": "nim",
+ "patterns": [
+ {
+ "begin": "[ \\t]*##\\[",
+ "contentName": "comment.block.doc-comment.content.nim",
+ "end": "\\]##",
+ "name": "comment.block.doc-comment.nim",
+ "patterns": [
+ {
+ "include": "#multilinedoccomment",
+ "name": "comment.block.doc-comment.nested.nim"
+ }
+ ]
+ },
+ {
+ "begin": "[ \\t]*#\\[",
+ "contentName": "comment.block.content.nim",
+ "end": "\\]#",
+ "name": "comment.block.nim",
+ "patterns": [
+ {
+ "include": "#multilinecomment",
+ "name": "comment.block.nested.nim"
+ }
+ ]
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=##)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.nim"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "##",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.nim"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.number-sign.doc-comment.nim"
+ }
+ ]
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=#[^\\[])",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.nim"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.nim"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.number-sign.nim"
+ }
+ ]
+ },
+ {
+ "comment": "A nim procedure or method",
+ "name": "meta.proc.nim",
+ "patterns": [
+ {
+ "begin": "\\b(proc|method|template|macro|iterator|converter|func)\\s+\\`?([^\\:\\{\\s\\`\\*\\(]*)\\`?(\\s*\\*)?\\s*(?=\\(|\\=|:|\\[|\\n|\\{)",
+ "captures": {
+ "1": {
+ "name": "keyword.other"
+ },
+ "2": {
+ "name": "entity.name.function.nim"
+ },
+ "3": {
+ "name": "keyword.control.export"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "discard \"\"\"",
+ "comment": "A discarded triple string literal comment",
+ "end": "\"\"\"(?!\")",
+ "name": "comment.line.discarded.nim"
+ },
+ {
+ "include": "#float_literal"
+ },
+ {
+ "include": "#integer_literal"
+ },
+ {
+ "comment": "Operator as function name",
+ "match": "(?<=\\`)[^\\` ]+(?=\\`)",
+ "name": "entity.name.function.nim"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.export"
+ }
+ },
+ "comment": "Export qualifier.",
+ "match": "\\b\\s*(\\*)(?:\\s*(?=[,:])|\\s+(?=[=]))"
+ },
+ {
+ "comment": "Export qualifier following a type def.",
+ "match": "\\b([A-Z]\\w+)(\\*)",
+ "captures": {
+ "1": {
+ "name": "support.type.nim"
+ },
+ "2": {
+ "name": "keyword.control.export"
+ }
+ }
+ },
+ {
+ "include": "#string_literal"
+ },
+ {
+ "comment": "Language Constants.",
+ "match": "\\b(true|false|Inf|NegInf|NaN|nil)\\b",
+ "name": "constant.language.nim"
+ },
+ {
+ "comment": "Keywords that affect program control flow or scope.",
+ "match": "\\b(block|break|case|continue|do|elif|else|end|except|finally|for|if|raise|return|try|when|while|yield)\\b",
+ "name": "keyword.control.nim"
+ },
+ {
+ "comment": "Keyword boolean operators for expressions.",
+ "match": "(\\b(and|in|is|isnot|not|notin|or|xor)\\b)",
+ "name": "keyword.boolean.nim"
+ },
+ {
+ "comment": "Generic operators for expressions.",
+ "match": "(=|\\+|-|\\*|/|<|>|@|\\$|~|&|%|!|\\?|\\^|\\.|:|\\\\)+",
+ "name": "keyword.operator.nim"
+ },
+ {
+ "comment": "Other keywords.",
+ "match": "(\\b(addr|as|asm|atomic|bind|cast|const|converter|concept|defer|discard|distinct|div|enum|export|from|import|include|let|mod|mixin|object|of|ptr|ref|shl|shr|static|type|using|var|tuple|iterator|macro|func|method|proc|template)\\b)",
+ "name": "keyword.other.nim"
+ },
+ {
+ "comment": "Invalid and unused keywords.",
+ "match": "(\\b(generic|interface|lambda|out|shared)\\b)",
+ "name": "invalid.illegal.invalid-keyword.nim"
+ },
+ {
+ "comment": "Common functions",
+ "match": "\\b(new|await|assert|echo|defined|declared|newException|countup|countdown|high|low)\\b",
+ "name": "keyword.other.common.function.nim"
+ },
+ {
+ "comment": "Built-in, concrete types.",
+ "match": "\\b(((uint|int)(8|16|32|64)?)|float(32|64)?|bool|string|auto|cstring|char|byte|tobject|typedesc|stmt|expr|any|untyped|typed)\\b",
+ "name": "storage.type.concrete.nim"
+ },
+ {
+ "comment": "Built-in, generic types.",
+ "match": "\\b(range|array|seq|set|pointer)\\b",
+ "name": "storage.type.generic.nim"
+ },
+ {
+ "comment": "Special types.",
+ "match": "\\b(openarray|varargs|void)\\b",
+ "name": "storage.type.generic.nim"
+ },
+ {
+ "comment": "Other constants.",
+ "match": "\\b[A-Z][A-Z0-9_]+\\b",
+ "name": "support.constant.nim"
+ },
+ {
+ "comment": "Other types.",
+ "match": "\\b[A-Z]\\w+\\b",
+ "name": "support.type.nim"
+ },
+ {
+ "comment": "Function call.",
+ "match": "\\b\\w+\\b(?=(\\[([a-zA-Z0-9_,]|\\s)+\\])?\\()",
+ "name": "support.function.any-method.nim"
+ },
+ {
+ "comment": "Function call (no parenthesis).",
+ "match": "(?!(openarray|varargs|void|range|array|seq|set|pointer|new|await|assert|echo|defined|declared|newException|countup|countdown|high|low|((uint|int)(8|16|32|64)?)|float(32|64)?|bool|string|auto|cstring|char|byte|tobject|typedesc|stmt|expr|any|untyped|typed|addr|as|asm|atomic|bind|cast|const|converter|concept|defer|discard|distinct|div|enum|export|from|import|include|let|mod|mixin|object|of|ptr|ref|shl|shr|static|type|using|var|tuple|iterator|macro|func|method|proc|template|and|in|is|isnot|not|notin|or|xor|proc|method|template|macro|iterator|converter|func|true|false|Inf|NegInf|NaN|nil|block|break|case|continue|do|elif|else|end|except|finally|for|if|raise|return|try|when|while|yield)\\b)\\w+\\s+(?!(and|in|is|isnot|not|notin|or|xor|[^a-zA-Z0-9_\"'`(-+]+)\\b)(?=[a-zA-Z0-9_\"'`(-+])",
+ "name": "support.function.any-method.nim"
+ },
+ {
+ "begin": "(^\\s*)?(?=\\{\\.emit: ?\"\"\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.leading.nim"
+ }
+ },
+ "end": "(?!\\G)(\\s*$\\n?)?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.trailing.nim"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\{\\.(emit:) ?(\"\"\")",
+ "captures": {
+ "1": {
+ "name": "keyword.other.nim"
+ },
+ "2": {
+ "name": "punctuation.section.embedded.begin.nim"
+ }
+ },
+ "contentName": "source.c",
+ "end": "(\")\"\"(?!\")(\\.{0,1}\\})?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.nim"
+ },
+ "1": {
+ "name": "source.c"
+ }
+ },
+ "name": "meta.embedded.block.c",
+ "patterns": [
+ {
+ "begin": "\\`",
+ "end": "\\`",
+ "name": "keyword.operator.nim"
+ },
+ {
+ "include": "source.c"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\{\\.",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.pragma.start.nim"
+ }
+ },
+ "end": "\\.?\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.pragma.end.nim"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\b([[:alpha:]]\\w*)(?:\\s|\\s*:)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.preprocessor.pragma.nim"
+ }
+ },
+ "end": "(?=\\.?\\}|,)",
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "begin": "\\b([[:alpha:]]\\w*)\\(",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.preprocessor.pragma.nim"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "match": "\\b([[:alpha:]]\\w*)(?=\\.?\\}|,)",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.pragma.nim"
+ }
+ }
+ },
+ {
+ "begin": "\\b([[:alpha:]]\\w*)(\"\"\")",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.preprocessor.pragma.nim"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.nim"
+ }
+ },
+ "end": "\"\"\"(?!\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.nim"
+ }
+ },
+ "name": "string.quoted.triple.raw.nim"
+ },
+ {
+ "begin": "\\b([[:alpha:]]\\w*)(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.preprocessor.pragma.nim"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.nim"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.nim"
+ }
+ },
+ "name": "string.quoted.double.raw.nim"
+ },
+ {
+ "begin": "\\b(hint\\[\\w+\\]):",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.preprocessor.pragma.nim"
+ }
+ },
+ "end": "(?=\\.?\\}|,)",
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.comma.nim"
+ }
+ ]
+ },
+ {
+ "begin": "(^\\s*)?(?=asm \"\"\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.leading.nim"
+ }
+ },
+ "end": "(?!\\G)(\\s*$\\n?)?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.trailing.nim"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(asm) (\"\"\")",
+ "captures": {
+ "1": {
+ "name": "keyword.other.nim"
+ },
+ "2": {
+ "name": "punctuation.section.embedded.begin.nim"
+ }
+ },
+ "contentName": "source.asm",
+ "end": "(\")\"\"(?!\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.nim"
+ },
+ "1": {
+ "name": "source.asm"
+ }
+ },
+ "name": "meta.embedded.block.asm",
+ "patterns": [
+ {
+ "begin": "\\`",
+ "end": "\\`",
+ "name": "keyword.operator.nim"
+ },
+ {
+ "include": "source.asm"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.function.nim"
+ },
+ "2": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "comment": "tmpl specifier",
+ "match": "(tmpl(i)?)(?=( (html|xml|js|css|glsl|md))?\"\"\")"
+ },
+ {
+ "begin": "(^\\s*)?(?=html\"\"\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.leading.nim"
+ }
+ },
+ "end": "(?!\\G)(\\s*$\\n?)?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.trailing.nim"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(html)(\"\"\")",
+ "captures": {
+ "1": {
+ "name": "keyword.other.nim"
+ },
+ "2": {
+ "name": "punctuation.section.embedded.begin.nim"
+ }
+ },
+ "contentName": "text.html",
+ "end": "(\")\"\"(?!\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.nim"
+ },
+ "1": {
+ "name": "text.html"
+ }
+ },
+ "name": "meta.embedded.block.html",
+ "patterns": [
+ {
+ "begin": "(?<!\\$)(\\$)\\(",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\\$)(\\$)\\{",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ },
+ "2": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\\$)(\\$)(for|while|case|of|when|if|else|elif)( )",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ },
+ "2": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "(\\{|\\n)",
+ "endCaptures": {
+ "1": {
+ "name": "plain"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "match": "(?<!\\$)(\\$\\w+)",
+ "name": "keyword.operator.nim"
+ },
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(^\\s*)?(?=xml\"\"\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.leading.nim"
+ }
+ },
+ "end": "(?!\\G)(\\s*$\\n?)?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.trailing.nim"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(xml)(\"\"\")",
+ "captures": {
+ "1": {
+ "name": "keyword.other.nim"
+ },
+ "2": {
+ "name": "punctuation.section.embedded.begin.nim"
+ }
+ },
+ "contentName": "text.xml",
+ "end": "(\")\"\"(?!\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.nim"
+ },
+ "1": {
+ "name": "text.xml"
+ }
+ },
+ "name": "meta.embedded.block.xml",
+ "patterns": [
+ {
+ "begin": "(?<!\\$)(\\$)\\(",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\\$)(\\$)\\{",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ },
+ "2": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\\$)(\\$)(for|while|case|of|when|if|else|elif)( )",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ },
+ "2": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "(\\{|\\n)",
+ "endCaptures": {
+ "1": {
+ "name": "plain"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "match": "(?<!\\$)(\\$\\w+)",
+ "name": "keyword.operator.nim"
+ },
+ {
+ "include": "text.xml"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(^\\s*)?(?=js\"\"\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.leading.nim"
+ }
+ },
+ "end": "(?!\\G)(\\s*$\\n?)?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.trailing.nim"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(js)(\"\"\")",
+ "captures": {
+ "1": {
+ "name": "keyword.other.nim"
+ },
+ "2": {
+ "name": "punctuation.section.embedded.begin.nim"
+ }
+ },
+ "contentName": "source.js",
+ "end": "(\")\"\"(?!\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.nim"
+ },
+ "1": {
+ "name": "source.js"
+ }
+ },
+ "name": "meta.embedded.block.js",
+ "patterns": [
+ {
+ "begin": "(?<!\\$)(\\$)\\(",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\\$)(\\$)\\{",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ },
+ "2": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\\$)(\\$)(for|while|case|of|when|if|else|elif)( )",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ },
+ "2": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "(\\{|\\n)",
+ "endCaptures": {
+ "1": {
+ "name": "plain"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "match": "(?<!\\$)(\\$\\w+)",
+ "name": "keyword.operator.nim"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(^\\s*)?(?=css\"\"\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.leading.nim"
+ }
+ },
+ "end": "(?!\\G)(\\s*$\\n?)?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.trailing.nim"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(css)(\"\"\")",
+ "captures": {
+ "1": {
+ "name": "keyword.other.nim"
+ },
+ "2": {
+ "name": "punctuation.section.embedded.begin.nim"
+ }
+ },
+ "contentName": "source.css",
+ "end": "(\")\"\"(?!\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.nim"
+ },
+ "1": {
+ "name": "source.css"
+ }
+ },
+ "name": "meta.embedded.block.css",
+ "patterns": [
+ {
+ "begin": "(?<!\\$)(\\$)\\(",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\\$)(\\$)\\{",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ },
+ "2": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\\$)(\\$)(for|while|case|of|when|if|else|elif)( )",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ },
+ "2": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "(\\{|\\n)",
+ "endCaptures": {
+ "1": {
+ "name": "plain"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "match": "(?<!\\$)(\\$\\w+)",
+ "name": "keyword.operator.nim"
+ },
+ {
+ "include": "source.css"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(^\\s*)?(?=glsl\"\"\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.leading.nim"
+ }
+ },
+ "end": "(?!\\G)(\\s*$\\n?)?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.trailing.nim"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(glsl)(\"\"\")",
+ "captures": {
+ "1": {
+ "name": "keyword.other.nim"
+ },
+ "2": {
+ "name": "punctuation.section.embedded.begin.nim"
+ }
+ },
+ "contentName": "source.glsl",
+ "end": "(\")\"\"(?!\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.nim"
+ },
+ "1": {
+ "name": "source.glsl"
+ }
+ },
+ "name": "meta.embedded.block.glsl",
+ "patterns": [
+ {
+ "begin": "(?<!\\$)(\\$)\\(",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\\$)(\\$)\\{",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ },
+ "2": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\\$)(\\$)(for|while|case|of|when|if|else|elif)( )",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ },
+ "2": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "(\\{|\\n)",
+ "endCaptures": {
+ "1": {
+ "name": "plain"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "match": "(?<!\\$)(\\$\\w+)",
+ "name": "keyword.operator.nim"
+ },
+ {
+ "include": "source.glsl"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(^\\s*)?(?=md\"\"\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.leading.nim"
+ }
+ },
+ "end": "(?!\\G)(\\s*$\\n?)?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.whitespace.embedded.trailing.nim"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(md)(\"\"\")",
+ "captures": {
+ "1": {
+ "name": "keyword.other.nim"
+ },
+ "2": {
+ "name": "punctuation.section.embedded.begin.nim"
+ }
+ },
+ "contentName": "text.html.markdown",
+ "end": "(\")\"\"(?!\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.nim"
+ },
+ "1": {
+ "name": "text.html.markdown"
+ }
+ },
+ "name": "meta.embedded.block.html.markdown",
+ "patterns": [
+ {
+ "begin": "(?<!\\$)(\\$)\\(",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\\$)(\\$)\\{",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ },
+ "2": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\\$)(\\$)(for|while|case|of|when|if|else|elif)( )",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ },
+ "2": {
+ "name": "keyword.operator.nim"
+ }
+ },
+ "end": "(\\{|\\n)",
+ "endCaptures": {
+ "1": {
+ "name": "plain"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.nim"
+ }
+ ]
+ },
+ {
+ "match": "(?<!\\$)(\\$\\w+)",
+ "name": "keyword.operator.nim"
+ },
+ {
+ "include": "text.html.markdown"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "multilinecomment": {
+ "begin": "#\\[",
+ "end": "\\]#",
+ "patterns": [
+ {
+ "include": "#multilinecomment"
+ }
+ ]
+ },
+ "multilinedoccomment": {
+ "begin": "##\\[",
+ "end": "\\]##",
+ "patterns": [
+ {
+ "include": "#multilinedoccomment"
+ }
+ ]
+ },
+ "char_escapes": {
+ "patterns": [
+ {
+ "match": "\\\\[cC]|\\\\[rR]",
+ "name": "constant.character.escape.carriagereturn.nim"
+ },
+ {
+ "match": "\\\\[lL]|\\\\[nN]",
+ "name": "constant.character.escape.linefeed.nim"
+ },
+ {
+ "match": "\\\\[fF]",
+ "name": "constant.character.escape.formfeed.nim"
+ },
+ {
+ "match": "\\\\[tT]",
+ "name": "constant.character.escape.tabulator.nim"
+ },
+ {
+ "match": "\\\\[vV]",
+ "name": "constant.character.escape.verticaltabulator.nim"
+ },
+ {
+ "match": "\\\\\\\"",
+ "name": "constant.character.escape.double-quote.nim"
+ },
+ {
+ "match": "\\\\'",
+ "name": "constant.character.escape.single-quote.nim"
+ },
+ {
+ "match": "\\\\[0-9]+",
+ "name": "constant.character.escape.chardecimalvalue.nim"
+ },
+ {
+ "match": "\\\\[aA]",
+ "name": "constant.character.escape.alert.nim"
+ },
+ {
+ "match": "\\\\[bB]",
+ "name": "constant.character.escape.backspace.nim"
+ },
+ {
+ "match": "\\\\[eE]",
+ "name": "constant.character.escape.escape.nim"
+ },
+ {
+ "match": "\\\\[xX]\\h\\h",
+ "name": "constant.character.escape.hex.nim"
+ },
+ {
+ "match": "\\\\\\\\",
+ "name": "constant.character.escape.backslash.nim"
+ }
+ ]
+ },
+ "string_escapes": {
+ "patterns": [
+ {
+ "match": "\\\\[pP]",
+ "name": "constant.character.escape.newline.nim"
+ },
+ {
+ "match": "\\\\[uU]\\h\\h\\h\\h",
+ "name": "constant.character.escape.hex.nim"
+ },
+ {
+ "match": "\\\\[uU]\\{\\h+\\}",
+ "name": "constant.character.escape.hex.nim"
+ },
+ {
+ "include": "#char_escapes"
+ }
+ ]
+ },
+ "raw_string_escapes": {
+ "match": "[^\"](\"\")",
+ "captures": {
+ "1": {
+ "name": "constant.character.escape.double-quote.nim"
+ }
+ }
+ },
+ "fmt_interpolation": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.begin.nim"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.end.nim"
+ }
+ },
+ "patterns": [
+ {
+ "begin": ":",
+ "end": "(?=\\})",
+ "name": "meta.template.format-specifier.nim"
+ },
+ {
+ "include": "source.nim"
+ }
+ ],
+ "name": "meta.template.expression.nim"
+ },
+ "string_literal": {
+ "patterns": [
+ {
+ "include": "#fmt_string_triple"
+ },
+ {
+ "include": "#fmt_string_triple_operator"
+ },
+ {
+ "include": "#extended_string_quoted_triple_raw"
+ },
+ {
+ "include": "#string_quoted_triple_raw"
+ },
+ {
+ "include": "#fmt_string_operator"
+ },
+ {
+ "include": "#fmt_string"
+ },
+ {
+ "include": "#fmt_string_call"
+ },
+ {
+ "include": "#string_quoted_double_raw"
+ },
+ {
+ "include": "#extended_string_quoted_double_raw"
+ },
+ {
+ "include": "#string_quoted_single"
+ },
+ {
+ "include": "#string_quoted_triple"
+ },
+ {
+ "include": "#string_quoted_double"
+ }
+ ]
+ },
+ "fmt_string": {
+ "begin": "\\b(fmt)(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.any-method.nim"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.nim"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.nim"
+ }
+ },
+ "name": "string.quoted.double.raw.nim",
+ "patterns": [
+ {
+ "match": "(?<!\")\"(?!\")",
+ "name": "invalid.illegal.nim"
+ },
+ {
+ "include": "#raw_string_escapes"
+ },
+ {
+ "include": "#fmt_interpolation"
+ }
+ ]
+ },
+ "fmt_string_triple": {
+ "begin": "\\b(fmt)(\"\"\")",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.any-method.nim"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.nim"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.nim"
+ }
+ },
+ "name": "string.quoted.triple.raw.nim",
+ "patterns": [
+ {
+ "include": "#fmt_interpolation"
+ }
+ ]
+ },
+ "fmt_string_operator": {
+ "begin": "(&)(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.nim"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.nim"
+ }
+ },
+ "name": "string.quoted.double.nim",
+ "patterns": [
+ {
+ "match": "\"",
+ "name": "invalid.illegal.nim"
+ },
+ {
+ "include": "#string_escapes"
+ },
+ {
+ "include": "#fmt_interpolation"
+ }
+ ]
+ },
+ "fmt_string_triple_operator": {
+ "begin": "(&)(\"\"\")",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.nim"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.nim"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.nim"
+ }
+ },
+ "name": "string.quoted.triple.raw.nim",
+ "patterns": [
+ {
+ "include": "#fmt_interpolation"
+ }
+ ]
+ },
+ "fmt_string_call": {
+ "begin": "(fmt)\\((?=\")",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.any-method.nim"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.nim"
+ }
+ },
+ "end": "\"(?=\\))",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.nim"
+ }
+ },
+ "name": "string.quoted.double.nim",
+ "patterns": [
+ {
+ "match": "\"",
+ "name": "invalid.illegal.nim"
+ },
+ {
+ "include": "#string_escapes"
+ },
+ {
+ "include": "#fmt_interpolation"
+ }
+ ]
+ }
+ ]
+ },
+ "string_quoted_double": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.nim"
+ }
+ },
+ "comment": "Double Quoted String",
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.nim"
+ }
+ },
+ "name": "string.quoted.double.nim",
+ "patterns": [
+ {
+ "include": "#string_escapes"
+ }
+ ]
+ },
+ "string_quoted_double_raw": {
+ "begin": "\\br\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.nim"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.nim"
+ }
+ },
+ "name": "string.quoted.double.raw.nim",
+ "patterns": [
+ {
+ "include": "#raw_string_escapes"
+ }
+ ]
+ },
+ "extended_string_quoted_double_raw": {
+ "begin": "\\b(\\w+)(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.any-method.nim"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.nim"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.nim"
+ }
+ },
+ "name": "string.quoted.double.raw.nim",
+ "patterns": [
+ {
+ "include": "#raw_string_escapes"
+ }
+ ]
+ },
+ "string_quoted_single": {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.nim"
+ }
+ },
+ "comment": "Single quoted character literal",
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.nim"
+ }
+ },
+ "name": "string.quoted.single.nim",
+ "patterns": [
+ {
+ "include": "#char_escapes"
+ },
+ {
+ "match": "([^']{2,}?)",
+ "name": "invalid.illegal.character.nim"
+ }
+ ]
+ },
+ "string_quoted_triple": {
+ "begin": "\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.nim"
+ }
+ },
+ "comment": "Triple Quoted String",
+ "end": "\"\"\"(?!\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.nim"
+ }
+ },
+ "name": "string.quoted.triple.nim"
+ },
+ "string_quoted_triple_raw": {
+ "begin": "r\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.nim"
+ }
+ },
+ "comment": "Raw Triple Quoted String",
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.nim"
+ }
+ },
+ "name": "string.quoted.triple.raw.nim"
+ },
+ "extended_string_quoted_triple_raw": {
+ "begin": "\\b(\\w+)(\"\"\")",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.any-method.nim"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.nim"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.nim"
+ }
+ },
+ "name": "string.quoted.triple.raw.nim"
+ },
+ "float_literal": {
+ "patterns": [
+ {
+ "match": "\\b\\d[_\\d]*((\\.\\d[_\\d]*([eE][\\+\\-]?\\d[_\\d]*)?)|([eE][\\+\\-]?\\d[_\\d]*))('([fF](32|64|128)|[fFdD]))?",
+ "name": "constant.numeric.float.decimal.nim"
+ },
+ {
+ "match": "\\b0[xX]\\h[_\\h]*'([fF](32|64|128)|[fFdD])",
+ "name": "constant.numeric.float.hexadecimal.nim"
+ },
+ {
+ "match": "\\b0o[0-7][_0-7]*'([fF](32|64|128)|[fFdD])",
+ "name": "constant.numeric.float.octal.nim"
+ },
+ {
+ "match": "\\b0(b|B)[01][_01]*'([fF](32|64|128)|[fFdD])",
+ "name": "constant.numeric.float.binary.nim"
+ },
+ {
+ "match": "\\b(\\d[_\\d]*)'([fF](32|64|128)|[fFdD])",
+ "name": "constant.numeric.float.decimal.nim"
+ }
+ ]
+ },
+ "integer_literal": {
+ "patterns": [
+ {
+ "match": "\\b(0[xX]\\h[_\\h]*)('(([iIuU](8|16|32|64))|[uU]))?",
+ "name": "constant.numeric.integer.hexadecimal.nim"
+ },
+ {
+ "match": "\\b(0o[0-7][_0-7]*)('(([iIuU](8|16|32|64))|[uU]))?",
+ "name": "constant.numeric.integer.octal.nim"
+ },
+ {
+ "match": "\\b(0(b|B)[01][_01]*)('(([iIuU](8|16|32|64))|[uU]))?",
+ "name": "constant.numeric.integer.binary.nim"
+ },
+ {
+ "match": "\\b(\\d[_\\d]*)('(([iIuU](8|16|32|64))|[uU]))?",
+ "name": "constant.numeric.integer.decimal.nim"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.nim",
+ "uuid": "6DD62CE8-B129-4554-BD8E-CE5DB490E5A4"
+}
diff --git a/node_modules/shiki/languages/nix.tmLanguage.json b/node_modules/shiki/languages/nix.tmLanguage.json
new file mode 100644
index 0000000..103e996
--- /dev/null
+++ b/node_modules/shiki/languages/nix.tmLanguage.json
@@ -0,0 +1,1198 @@
+{
+ "fileTypes": ["nix"],
+ "name": "nix",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ],
+ "repository": {
+ "attribute-bind": {
+ "patterns": [
+ {
+ "include": "#attribute-name"
+ },
+ {
+ "include": "#attribute-bind-from-equals"
+ }
+ ]
+ },
+ "attribute-bind-from-equals": {
+ "begin": "\\=",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.bind.nix"
+ }
+ },
+ "end": "\\;",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.bind.nix"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "attribute-inherit": {
+ "begin": "\\binherit\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.inherit.nix"
+ }
+ },
+ "end": "\\;",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.inherit.nix"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.function.arguments.nix"
+ }
+ },
+ "end": "(?=\\;)",
+ "patterns": [
+ {
+ "begin": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.function.arguments.nix"
+ }
+ },
+ "end": "(?=\\;)",
+ "patterns": [
+ {
+ "include": "#bad-reserved"
+ },
+ {
+ "include": "#attribute-name-single"
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?=[a-zA-Z\\_])",
+ "end": "(?=\\;)",
+ "patterns": [
+ {
+ "include": "#bad-reserved"
+ },
+ {
+ "include": "#attribute-name-single"
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ "attribute-name": {
+ "patterns": [
+ {
+ "match": "\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",
+ "name": "entity.other.attribute-name.multipart.nix"
+ },
+ {
+ "match": "\\."
+ },
+ {
+ "include": "#string-quoted"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ "attribute-name-single": {
+ "match": "\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",
+ "name": "entity.other.attribute-name.single.nix"
+ },
+ "attrset-contents": {
+ "patterns": [
+ {
+ "include": "#attribute-inherit"
+ },
+ {
+ "include": "#bad-reserved"
+ },
+ {
+ "include": "#attribute-bind"
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ "attrset-definition": {
+ "begin": "(?=\\{)",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "begin": "(\\{)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.attrset.nix"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.attrset.nix"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attrset-contents"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\})",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#expression-cont"
+ }
+ ]
+ }
+ ]
+ },
+ "attrset-definition-brace-opened": {
+ "patterns": [
+ {
+ "begin": "(?<=\\})",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#expression-cont"
+ }
+ ]
+ },
+ {
+ "begin": "(?=.?)",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.attrset.nix"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attrset-contents"
+ }
+ ]
+ }
+ ]
+ },
+ "attrset-for-sure": {
+ "patterns": [
+ {
+ "begin": "(?=\\brec\\b)",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "begin": "\\brec\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.nix"
+ }
+ },
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ {
+ "include": "#attrset-definition"
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ {
+ "begin": "(?=\\{\\s*(\\}|[^,?]*(=|;)))",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#attrset-definition"
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ }
+ ]
+ },
+ "attrset-or-function": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.attrset-or-function.nix"
+ }
+ },
+ "end": "(?=([\\])};]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "begin": "(?=(\\s*\\}|\\\"|\\binherit\\b|\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*(\\s*\\.|\\s*=[^=])))",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#attrset-definition-brace-opened"
+ }
+ ]
+ },
+ {
+ "begin": "(?=(\\.\\.\\.|\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*\\s*[,?]))",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#function-definition-brace-opened"
+ }
+ ]
+ },
+ {
+ "include": "#bad-reserved"
+ },
+ {
+ "begin": "\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.parameter.function.maybe.nix"
+ }
+ },
+ "end": "(?=([\\])};]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "begin": "(?=\\.)",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#attrset-definition-brace-opened"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*(\\,)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.nix"
+ }
+ },
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#function-definition-brace-opened"
+ }
+ ]
+ },
+ {
+ "begin": "(?=\\=)",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#attribute-bind-from-equals"
+ },
+ {
+ "include": "#attrset-definition-brace-opened"
+ }
+ ]
+ },
+ {
+ "begin": "(?=\\?)",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#function-parameter-default"
+ },
+ {
+ "begin": "\\,",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.nix"
+ }
+ },
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#function-definition-brace-opened"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ "bad-reserved": {
+ "match": "\\b(if|then|else|assert|with|let|in|rec|inherit)\\b",
+ "name": "invalid.illegal.reserved.nix"
+ },
+ "comment": {
+ "patterns": [
+ {
+ "begin": "/\\*([^*]|\\*[^\\/])*",
+ "end": "\\*\\/",
+ "name": "comment.block.nix",
+ "patterns": [
+ {
+ "include": "#comment-remark"
+ }
+ ]
+ },
+ {
+ "begin": "\\#",
+ "end": "$",
+ "name": "comment.line.number-sign.nix",
+ "patterns": [
+ {
+ "include": "#comment-remark"
+ }
+ ]
+ }
+ ]
+ },
+ "comment-remark": {
+ "captures": {
+ "1": {
+ "name": "markup.bold.comment.nix"
+ }
+ },
+ "match": "(TODO|FIXME|BUG|\\!\\!\\!):?"
+ },
+ "constants": {
+ "patterns": [
+ {
+ "begin": "\\b(builtins|true|false|null)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "constant.language.nix"
+ }
+ },
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#expression-cont"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(scopedImport|import|isNull|abort|throw|baseNameOf|dirOf|removeAttrs|map|toString|derivationStrict|derivation)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "support.function.nix"
+ }
+ },
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#expression-cont"
+ }
+ ]
+ },
+ {
+ "begin": "\\b[0-9]+\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "constant.numeric.nix"
+ }
+ },
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#expression-cont"
+ }
+ ]
+ }
+ ]
+ },
+ "expression": {
+ "patterns": [
+ {
+ "include": "#parens-and-cont"
+ },
+ {
+ "include": "#list-and-cont"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#with-assert"
+ },
+ {
+ "include": "#function-for-sure"
+ },
+ {
+ "include": "#attrset-for-sure"
+ },
+ {
+ "include": "#attrset-or-function"
+ },
+ {
+ "include": "#let"
+ },
+ {
+ "include": "#if"
+ },
+ {
+ "include": "#operator-unary"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#bad-reserved"
+ },
+ {
+ "include": "#parameter-name-and-cont"
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ "expression-cont": {
+ "begin": "(?=.?)",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#list"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#function-for-sure"
+ },
+ {
+ "include": "#attrset-for-sure"
+ },
+ {
+ "include": "#attrset-or-function"
+ },
+ {
+ "match": "(\\bor\\b|\\.|==|!=|!|\\<\\=|\\<|\\>\\=|\\>|&&|\\|\\||-\\>|//|\\?|\\+\\+|-|\\*|/(?=([^*]|$))|\\+)",
+ "name": "keyword.operator.nix"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#bad-reserved"
+ },
+ {
+ "include": "#parameter-name"
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ "function-body": {
+ "begin": "(@\\s*([a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*)\\s*)?(\\:)",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "function-body-from-colon": {
+ "begin": "(\\:)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.function.nix"
+ }
+ },
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "function-contents": {
+ "patterns": [
+ {
+ "include": "#bad-reserved"
+ },
+ {
+ "include": "#function-parameter"
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ "function-definition": {
+ "begin": "(?=.?)",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#function-body-from-colon"
+ },
+ {
+ "begin": "(?=.?)",
+ "end": "(?=\\:)",
+ "patterns": [
+ {
+ "begin": "(\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*)",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.parameter.function.4.nix"
+ }
+ },
+ "end": "(?=\\:)",
+ "patterns": [
+ {
+ "begin": "\\@",
+ "end": "(?=\\:)",
+ "patterns": [
+ {
+ "include": "#function-header-until-colon-no-arg"
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ {
+ "begin": "(?=\\{)",
+ "end": "(?=\\:)",
+ "patterns": [
+ {
+ "include": "#function-header-until-colon-with-arg"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ "function-definition-brace-opened": {
+ "begin": "(?=.?)",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#function-body-from-colon"
+ },
+ {
+ "begin": "(?=.?)",
+ "end": "(?=\\:)",
+ "patterns": [
+ {
+ "include": "#function-header-close-brace-with-arg"
+ },
+ {
+ "begin": "(?=.?)",
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "include": "#function-contents"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ "function-for-sure": {
+ "patterns": [
+ {
+ "begin": "(?=(\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*\\s*[:@]|\\{[^}]*\\}\\s*:|\\{[^#}\"'/=]*[,\\?]))",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#function-definition"
+ }
+ ]
+ }
+ ]
+ },
+ "function-header-close-brace-no-arg": {
+ "begin": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.entity.function.nix"
+ }
+ },
+ "end": "(?=\\:)",
+ "patterns": [
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ "function-header-close-brace-with-arg": {
+ "begin": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.entity.function.nix"
+ }
+ },
+ "end": "(?=\\:)",
+ "patterns": [
+ {
+ "include": "#function-header-terminal-arg"
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ "function-header-open-brace": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.entity.function.2.nix"
+ }
+ },
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "include": "#function-contents"
+ }
+ ]
+ },
+ "function-header-terminal-arg": {
+ "begin": "(?=@)",
+ "end": "(?=\\:)",
+ "patterns": [
+ {
+ "begin": "\\@",
+ "end": "(?=\\:)",
+ "patterns": [
+ {
+ "begin": "(\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*)",
+ "end": "(?=\\:)",
+ "name": "variable.parameter.function.3.nix"
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ "function-header-until-colon-no-arg": {
+ "begin": "(?=\\{)",
+ "end": "(?=\\:)",
+ "patterns": [
+ {
+ "include": "#function-header-open-brace"
+ },
+ {
+ "include": "#function-header-close-brace-no-arg"
+ }
+ ]
+ },
+ "function-header-until-colon-with-arg": {
+ "begin": "(?=\\{)",
+ "end": "(?=\\:)",
+ "patterns": [
+ {
+ "include": "#function-header-open-brace"
+ },
+ {
+ "include": "#function-header-close-brace-with-arg"
+ }
+ ]
+ },
+ "function-parameter": {
+ "patterns": [
+ {
+ "begin": "(\\.\\.\\.)",
+ "end": "(,|(?=\\}))",
+ "name": "keyword.operator.nix",
+ "patterns": [
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ {
+ "begin": "\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.parameter.function.1.nix"
+ }
+ },
+ "end": "(,|(?=\\}))",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.nix"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#function-parameter-default"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ "function-parameter-default": {
+ "begin": "\\?",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.nix"
+ }
+ },
+ "end": "(?=[,}])",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "if": {
+ "begin": "(?=\\bif\\b)",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "begin": "\\bif\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.nix"
+ }
+ },
+ "end": "\\bth(?=en\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.nix"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=th)en\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.nix"
+ }
+ },
+ "end": "\\bel(?=se\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.nix"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=el)se\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.nix"
+ }
+ },
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.other.nix"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "illegal": {
+ "match": ".",
+ "name": "invalid.illegal"
+ },
+ "interpolation": {
+ "begin": "\\$\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.nix"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.nix"
+ }
+ },
+ "name": "markup.italic",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "let": {
+ "begin": "(?=\\blet\\b)",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "begin": "\\blet\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.nix"
+ }
+ },
+ "end": "(?=([\\])};,]|\\b(in|else|then)\\b))",
+ "patterns": [
+ {
+ "begin": "(?=\\{)",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "begin": "\\{",
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#attrset-contents"
+ }
+ ]
+ },
+ {
+ "begin": "(^|(?<=\\}))",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#expression-cont"
+ }
+ ]
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ {
+ "include": "#attrset-contents"
+ },
+ {
+ "include": "#others"
+ }
+ ]
+ },
+ {
+ "begin": "\\bin\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.nix"
+ }
+ },
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "list": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.list.nix"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.list.nix"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "list-and-cont": {
+ "begin": "(?=\\[)",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#list"
+ },
+ {
+ "include": "#expression-cont"
+ }
+ ]
+ },
+ "operator-unary": {
+ "match": "(!|-)",
+ "name": "keyword.operator.unary.nix"
+ },
+ "others": {
+ "patterns": [
+ {
+ "include": "#whitespace"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ "parameter-name": {
+ "captures": {
+ "0": {
+ "name": "variable.parameter.name.nix"
+ }
+ },
+ "match": "\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*"
+ },
+ "parameter-name-and-cont": {
+ "begin": "\\b[a-zA-Z\\_][a-zA-Z0-9\\_\\'\\-]*",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.parameter.name.nix"
+ }
+ },
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#expression-cont"
+ }
+ ]
+ },
+ "parens": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.expression.nix"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.expression.nix"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "parens-and-cont": {
+ "begin": "(?=\\()",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#expression-cont"
+ }
+ ]
+ },
+ "string": {
+ "patterns": [
+ {
+ "begin": "(?=\\'\\')",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "begin": "\\'\\'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.other.start.nix"
+ }
+ },
+ "end": "\\'\\'(?!\\$|\\'|\\\\.)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.other.end.nix"
+ }
+ },
+ "name": "string.quoted.other.nix",
+ "patterns": [
+ {
+ "match": "\\'\\'(\\$|\\'|\\\\.)",
+ "name": "constant.character.escape.nix"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "include": "#expression-cont"
+ }
+ ]
+ },
+ {
+ "begin": "(?=\\\")",
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#string-quoted"
+ },
+ {
+ "include": "#expression-cont"
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9\\.\\_\\-\\+]*(\\/[a-zA-Z0-9\\.\\_\\-\\+]+)+)",
+ "beginCaptures": {
+ "0": {
+ "name": "string.unquoted.path.nix"
+ }
+ },
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#expression-cont"
+ }
+ ]
+ },
+ {
+ "begin": "(\\<[a-zA-Z0-9\\.\\_\\-\\+]+(\\/[a-zA-Z0-9\\.\\_\\-\\+]+)*\\>)",
+ "beginCaptures": {
+ "0": {
+ "name": "string.unquoted.spath.nix"
+ }
+ },
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#expression-cont"
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z][a-zA-Z0-9\\+\\-\\.]*\\:[a-zA-Z0-9\\%\\/\\?\\:\\@\\&\\=\\+\\$\\,\\-\\_\\.\\!\\~\\*\\']+)",
+ "beginCaptures": {
+ "0": {
+ "name": "string.unquoted.url.nix"
+ }
+ },
+ "end": "(?=([\\])};,]|\\b(else|then)\\b))",
+ "patterns": [
+ {
+ "include": "#expression-cont"
+ }
+ ]
+ }
+ ]
+ },
+ "string-quoted": {
+ "begin": "\\\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.double.start.nix"
+ }
+ },
+ "end": "\\\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.double.end.nix"
+ }
+ },
+ "name": "string.quoted.double.nix",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.nix"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ "whitespace": {
+ "match": "\\s+"
+ },
+ "with-assert": {
+ "begin": "\\b(with|assert)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.nix"
+ }
+ },
+ "end": "\\;",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.nix",
+ "uuid": "0514fd5f-acb6-436d-b42c-7643e6d36c8f"
+}
diff --git a/node_modules/shiki/languages/objective-c.tmLanguage.json b/node_modules/shiki/languages/objective-c.tmLanguage.json
new file mode 100644
index 0000000..aa53580
--- /dev/null
+++ b/node_modules/shiki/languages/objective-c.tmLanguage.json
@@ -0,0 +1,3755 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/jeff-hykin/better-objc-syntax/blob/master/autogenerated/objc.tmLanguage.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/jeff-hykin/better-objc-syntax/commit/119b75fb1f4d3e8726fa62588e3b935e0b719294",
+ "name": "objective-c",
+ "scopeName": "source.objc",
+ "patterns": [
+ {
+ "include": "#anonymous_pattern_1"
+ },
+ {
+ "include": "#anonymous_pattern_2"
+ },
+ {
+ "include": "#anonymous_pattern_3"
+ },
+ {
+ "include": "#anonymous_pattern_4"
+ },
+ {
+ "include": "#anonymous_pattern_5"
+ },
+ {
+ "include": "#apple_foundation_functional_macros"
+ },
+ {
+ "include": "#anonymous_pattern_7"
+ },
+ {
+ "include": "#anonymous_pattern_8"
+ },
+ {
+ "include": "#anonymous_pattern_9"
+ },
+ {
+ "include": "#anonymous_pattern_10"
+ },
+ {
+ "include": "#anonymous_pattern_11"
+ },
+ {
+ "include": "#anonymous_pattern_12"
+ },
+ {
+ "include": "#anonymous_pattern_13"
+ },
+ {
+ "include": "#anonymous_pattern_14"
+ },
+ {
+ "include": "#anonymous_pattern_15"
+ },
+ {
+ "include": "#anonymous_pattern_16"
+ },
+ {
+ "include": "#anonymous_pattern_17"
+ },
+ {
+ "include": "#anonymous_pattern_18"
+ },
+ {
+ "include": "#anonymous_pattern_19"
+ },
+ {
+ "include": "#anonymous_pattern_20"
+ },
+ {
+ "include": "#anonymous_pattern_21"
+ },
+ {
+ "include": "#anonymous_pattern_22"
+ },
+ {
+ "include": "#anonymous_pattern_23"
+ },
+ {
+ "include": "#anonymous_pattern_24"
+ },
+ {
+ "include": "#anonymous_pattern_25"
+ },
+ {
+ "include": "#anonymous_pattern_26"
+ },
+ {
+ "include": "#anonymous_pattern_27"
+ },
+ {
+ "include": "#anonymous_pattern_28"
+ },
+ {
+ "include": "#anonymous_pattern_29"
+ },
+ {
+ "include": "#anonymous_pattern_30"
+ },
+ {
+ "include": "#bracketed_content"
+ },
+ {
+ "include": "#c_lang"
+ }
+ ],
+ "repository": {
+ "anonymous_pattern_1": {
+ "begin": "((@)(interface|protocol))(?!.+;)\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*((:)(?:\\s*)([A-Za-z][A-Za-z0-9]*))?(\\s|\\n)?",
+ "captures": {
+ "1": {
+ "name": "storage.type.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.storage.type.objc"
+ },
+ "4": {
+ "name": "entity.name.type.objc"
+ },
+ "6": {
+ "name": "punctuation.definition.entity.other.inherited-class.objc"
+ },
+ "7": {
+ "name": "entity.other.inherited-class.objc"
+ },
+ "8": {
+ "name": "meta.divider.objc"
+ },
+ "9": {
+ "name": "meta.inherited-class.objc"
+ }
+ },
+ "contentName": "meta.scope.interface.objc",
+ "end": "((@)end)\\b",
+ "name": "meta.interface-or-protocol.objc",
+ "patterns": [
+ {
+ "include": "#interface_innards"
+ }
+ ]
+ },
+ "anonymous_pattern_10": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.keyword.objc"
+ }
+ },
+ "match": "(@)(defs|encode)\\b",
+ "name": "keyword.other.objc"
+ },
+ "anonymous_pattern_11": {
+ "match": "\\bid\\b",
+ "name": "storage.type.id.objc"
+ },
+ "anonymous_pattern_12": {
+ "match": "\\b(IBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class|instancetype)\\b",
+ "name": "storage.type.objc"
+ },
+ "anonymous_pattern_13": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.storage.type.objc"
+ }
+ },
+ "match": "(@)(class|protocol)\\b",
+ "name": "storage.type.objc"
+ },
+ "anonymous_pattern_14": {
+ "begin": "((@)selector)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.storage.type.objc"
+ },
+ "3": {
+ "name": "punctuation.definition.storage.type.objc"
+ }
+ },
+ "contentName": "meta.selector.method-name.objc",
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.storage.type.objc"
+ }
+ },
+ "name": "meta.selector.objc",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.arguments.objc"
+ }
+ },
+ "match": "\\b(?:[a-zA-Z_:][\\w]*)+",
+ "name": "support.function.any-method.name-of-parameter.objc"
+ }
+ ]
+ },
+ "anonymous_pattern_15": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.storage.modifier.objc"
+ }
+ },
+ "match": "(@)(synchronized|public|package|private|protected)\\b",
+ "name": "storage.modifier.objc"
+ },
+ "anonymous_pattern_16": {
+ "match": "\\b(YES|NO|Nil|nil)\\b",
+ "name": "constant.language.objc"
+ },
+ "anonymous_pattern_17": {
+ "match": "\\bNSApp\\b",
+ "name": "support.variable.foundation.objc"
+ },
+ "anonymous_pattern_18": {
+ "captures": {
+ "1": {
+ "name": "punctuation.whitespace.support.function.cocoa.leopard.objc"
+ },
+ "2": {
+ "name": "support.function.cocoa.leopard.objc"
+ }
+ },
+ "match": "(\\s*)\\b(NS(Rect(ToCGRect|FromCGRect)|MakeCollectable|S(tringFromProtocol|ize(ToCGSize|FromCGSize))|Draw(NinePartImage|ThreePartImage)|P(oint(ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))\\b"
+ },
+ "anonymous_pattern_19": {
+ "captures": {
+ "1": {
+ "name": "punctuation.whitespace.support.function.leading.cocoa.objc"
+ },
+ "2": {
+ "name": "support.function.cocoa.objc"
+ }
+ },
+ "match": "(\\s*)\\b(NS(R(ound(DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(CriticalAlertPanel(RelativeToWindow)?|InformationalAlertPanel(RelativeToWindow)?|AlertPanel(RelativeToWindow)?)|e(set(MapTable|HashTable)|c(ycleZone|t(Clip(List)?|F(ill(UsingOperation|List(UsingOperation|With(Grays|Colors(UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(dPixel|l(MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(s)?|WindowServerMemory|AlertPanel)|M(i(n(X|Y)|d(X|Y))|ouseInRect|a(p(Remove|Get|Member|Insert(IfAbsent|KnownAbsent)?)|ke(R(ect|ange)|Size|Point)|x(Range|X|Y)))|B(itsPer(SampleFromDepth|PixelFromDepth)|e(stDepth|ep|gin(CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(ho(uldRetainWithZone|w(sServicesMenuItem|AnimationEffect))|tringFrom(R(ect|ange)|MapTable|S(ize|elector)|HashTable|Class|Point)|izeFromString|e(t(ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(Big(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|Short|Host(ShortTo(Big|Little)|IntTo(Big|Little)|DoubleTo(Big|Little)|FloatTo(Big|Little)|Long(To(Big|Little)|LongTo(Big|Little)))|Int|Double|Float|L(ittle(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|ong(Long)?)))|H(ighlightRect|o(stByteOrder|meDirectory(ForUser)?)|eight|ash(Remove|Get|Insert(IfAbsent|KnownAbsent)?)|FSType(CodeFromFileType|OfFile))|N(umberOfColorComponents|ext(MapEnumeratorPair|HashEnumeratorItem))|C(o(n(tainsRect|vert(GlyphsToPackedGlyphs|Swapped(DoubleToHost|FloatToHost)|Host(DoubleToSwapped|FloatToSwapped)))|unt(MapTable|HashTable|Frames|Windows(ForContext)?)|py(M(emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(MapTables|HashTables))|lassFromString|reate(MapTable(WithZone)?|HashTable(WithZone)?|Zone|File(namePboardType|ContentsPboardType)))|TemporaryDirectory|I(s(ControllerMarker|EmptyRect|FreedObject)|n(setRect|crementExtraRefCount|te(r(sect(sRect|ionR(ect|ange))|faceStyleForKey)|gralRect)))|Zone(Realloc|Malloc|Name|Calloc|Fr(omPointer|ee))|O(penStepRootDirectory|ffsetRect)|D(i(sableScreenUpdates|videRect)|ottedFrameRect|e(c(imal(Round|Multiply|S(tring|ubtract)|Normalize|Co(py|mpa(ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(MemoryPages|Object))|raw(Gr(oove|ayBezel)|B(itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(hiteBezel|indowBackground)|LightBezel))|U(serName|n(ionR(ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(Bundle(Setup|Cleanup)|Setup(VirtualMachine)?|Needs(ToLoadClasses|VirtualMachine)|ClassesF(orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(oint(InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(n(d(MapTableEnumeration|HashTableEnumeration)|umerate(MapTable|HashTable)|ableScreenUpdates)|qual(R(ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(ileTypeForHFSTypeCode|ullUserName|r(ee(MapTable|HashTable)|ame(Rect(WithWidth(UsingOperation)?)?|Address)))|Wi(ndowList(ForContext)?|dth)|Lo(cationInRange|g(v|PageSize)?)|A(ccessibility(R(oleDescription(ForUIElement)?|aiseBadArgumentException)|Unignored(Children(ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(Main|Load)|vailableWindowDepths|ll(MapTable(Values|Keys)|HashTableObjects|ocate(MemoryPages|Collectable|Object)))))\\b"
+ },
+ "anonymous_pattern_2": {
+ "begin": "((@)(implementation))\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*(?::\\s*([A-Za-z][A-Za-z0-9]*))?",
+ "captures": {
+ "1": {
+ "name": "storage.type.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.storage.type.objc"
+ },
+ "4": {
+ "name": "entity.name.type.objc"
+ },
+ "5": {
+ "name": "entity.other.inherited-class.objc"
+ }
+ },
+ "contentName": "meta.scope.implementation.objc",
+ "end": "((@)end)\\b",
+ "name": "meta.implementation.objc",
+ "patterns": [
+ {
+ "include": "#implementation_innards"
+ }
+ ]
+ },
+ "anonymous_pattern_20": {
+ "match": "\\bNS(RuleEditor|G(arbageCollector|radient)|MapTable|HashTable|Co(ndition|llectionView(Item)?)|T(oolbarItemGroup|extInputClient|r(eeNode|ackingArea))|InvocationOperation|Operation(Queue)?|D(ictionaryController|ockTile)|P(ointer(Functions|Array)|athC(o(ntrol(Delegate)?|mponentCell)|ell(Delegate)?)|r(intPanelAccessorizing|edicateEditor(RowTemplate)?))|ViewController|FastEnumeration|Animat(ionContext|ablePropertyContainer))\\b",
+ "name": "support.class.cocoa.leopard.objc"
+ },
+ "anonymous_pattern_21": {
+ "match": "\\bNS(R(u(nLoop|ler(Marker|View))|e(sponder|cursiveLock|lativeSpecifier)|an(domSpecifier|geSpecifier))|G(etCommand|lyph(Generator|Storage|Info)|raphicsContext)|XML(Node|D(ocument|TD(Node)?)|Parser|Element)|M(iddleSpecifier|ov(ie(View)?|eCommand)|utable(S(tring|et)|C(haracterSet|opying)|IndexSet|D(ictionary|ata)|URLRequest|ParagraphStyle|A(ttributedString|rray))|e(ssagePort(NameServer)?|nu(Item(Cell)?|View)?|t(hodSignature|adata(Item|Query(ResultGroup|AttributeValueTuple)?)))|a(ch(BootstrapServer|Port)|trix))|B(itmapImageRep|ox|u(ndle|tton(Cell)?)|ezierPath|rowser(Cell)?)|S(hadow|c(anner|r(ipt(SuiteRegistry|C(o(ercionHandler|mmand(Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(er|View)|een))|t(epper(Cell)?|atus(Bar|Item)|r(ing|eam))|imple(HorizontalTypesetter|CString)|o(cketPort(NameServer)?|und|rtDescriptor)|p(e(cifierTest|ech(Recognizer|Synthesizer)|ll(Server|Checker))|litView)|e(cureTextField(Cell)?|t(Command)?|archField(Cell)?|rializer|gmentedC(ontrol|ell))|lider(Cell)?|avePanel)|H(ost|TTP(Cookie(Storage)?|URLResponse)|elpManager)|N(ib(Con(nector|trolConnector)|OutletConnector)?|otification(Center|Queue)?|u(ll|mber(Formatter)?)|etService(Browser)?|ameSpecifier)|C(ha(ngeSpelling|racterSet)|o(n(stantString|nection|trol(ler)?|ditionLock)|d(ing|er)|unt(Command|edSet)|pying|lor(Space|P(ick(ing(Custom|Default)|er)|anel)|Well|List)?|m(p(oundPredicate|arisonPredicate)|boBox(Cell)?))|u(stomImageRep|rsor)|IImageRep|ell|l(ipView|o(seCommand|neCommand)|assDescription)|a(ched(ImageRep|URLResponse)|lendar(Date)?)|reateCommand)|T(hread|ypesetter|ime(Zone|r)|o(olbar(Item(Validations)?)?|kenField(Cell)?)|ext(Block|Storage|Container|Tab(le(Block)?)?|Input|View|Field(Cell)?|List|Attachment(Cell)?)?|a(sk|b(le(Header(Cell|View)|Column|View)|View(Item)?))|reeController)|I(n(dex(S(pecifier|et)|Path)|put(Manager|S(tream|erv(iceProvider|er(MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(Rep|Cell|View)?)|O(ut(putStream|lineView)|pen(GL(Context|Pixel(Buffer|Format)|View)|Panel)|bj(CTypeSerializationCallBack|ect(Controller)?))|D(i(st(antObject(Request)?|ributed(NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(Controller)?|e(serializer|cimalNumber(Behaviors|Handler)?|leteCommand)|at(e(Components|Picker(Cell)?|Formatter)?|a)|ra(wer|ggingInfo))|U(ser(InterfaceValidations|Defaults(Controller)?)|RL(Re(sponse|quest)|Handle(Client)?|C(onnection|ache|redential(Storage)?)|Download(Delegate)?|Prot(ocol(Client)?|ectionSpace)|AuthenticationChallenge(Sender)?)?|n(iqueIDSpecifier|doManager|archiver))|P(ipe|o(sitionalSpecifier|pUpButton(Cell)?|rt(Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(steboard|nel|ragraphStyle|geLayout)|r(int(Info|er|Operation|Panel)|o(cessInfo|tocolChecker|perty(Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(numerator|vent|PSImageRep|rror|x(ception|istsCommand|pression))|V(iew(Animation)?|al(idated(ToobarItem|UserInterfaceItem)|ue(Transformer)?))|Keyed(Unarchiver|Archiver)|Qui(ckDrawView|tCommand)|F(ile(Manager|Handle|Wrapper)|o(nt(Manager|Descriptor|Panel)?|rm(Cell|atter)))|W(hoseSpecifier|indow(Controller)?|orkspace)|L(o(c(k(ing)?|ale)|gicalTest)|evelIndicator(Cell)?|ayoutManager)|A(ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(ication|e(Script|Event(Manager|Descriptor)))|ffineTransform|lert|r(chiver|ray(Controller)?)))\\b",
+ "name": "support.class.cocoa.objc"
+ },
+ "anonymous_pattern_22": {
+ "match": "\\bNS(R(oundingMode|ule(Editor(RowType|NestingMode)|rOrientation)|e(questUserAttentionType|lativePosition))|G(lyphInscription|radientDrawingOptions)|XML(NodeKind|D(ocumentContentKind|TDNodeKind)|ParserError)|M(ultibyteGlyphPacking|apTableOptions)|B(itmapFormat|oxType|ezierPathElement|ackgroundStyle|rowserDropOperation)|S(tr(ing(CompareOptions|DrawingOptions|EncodingConversionOptions)|eam(Status|Event))|p(eechBoundary|litViewDividerStyle)|e(archPathD(irectory|omainMask)|gmentS(tyle|witchTracking))|liderType|aveOptions)|H(TTPCookieAcceptPolicy|ashTableOptions)|N(otification(SuspensionBehavior|Coalescing)|umberFormatter(RoundingMode|Behavior|Style|PadPosition)|etService(sError|Options))|C(haracterCollection|o(lor(RenderingIntent|SpaceModel|PanelMode)|mp(oundPredicateType|arisonPredicateModifier))|ellStateValue|al(culationError|endarUnit))|T(ypesetterControlCharacterAction|imeZoneNameStyle|e(stComparisonOperation|xt(Block(Dimension|V(erticalAlignment|alueType)|Layer)|TableLayoutAlgorithm|FieldBezelStyle))|ableView(SelectionHighlightStyle|ColumnAutoresizingStyle)|rackingAreaOptions)|I(n(sertionPosition|te(rfaceStyle|ger))|mage(RepLoadStatus|Scaling|CacheMode|FrameStyle|LoadStatus|Alignment))|Ope(nGLPixelFormatAttribute|rationQueuePriority)|Date(Picker(Mode|Style)|Formatter(Behavior|Style))|U(RL(RequestCachePolicy|HandleStatus|C(acheStoragePolicy|redentialPersistence))|Integer)|P(o(stingStyle|int(ingDeviceType|erFunctionsOptions)|pUpArrowPosition)|athStyle|r(int(ing(Orientation|PaginationMode)|erTableStatus|PanelOptions)|opertyList(MutabilityOptions|Format)|edicateOperatorType))|ExpressionType|KeyValue(SetMutationKind|Change)|QTMovieLoopMode|F(indPanel(SubstringMatchType|Action)|o(nt(RenderingMode|FamilyClass)|cusRingPlacement))|W(hoseSubelementIdentifier|ind(ingRule|ow(B(utton|ackingLocation)|SharingType|CollectionBehavior)))|L(ine(MovementDirection|SweepDirection|CapStyle|JoinStyle)|evelIndicatorStyle)|Animation(BlockingMode|Curve))\\b",
+ "name": "support.type.cocoa.leopard.objc"
+ },
+ "anonymous_pattern_23": {
+ "match": "\\bC(I(Sampler|Co(ntext|lor)|Image(Accumulator)?|PlugIn(Registration)?|Vector|Kernel|Filter(Generator|Shape)?)|A(Renderer|MediaTiming(Function)?|BasicAnimation|ScrollLayer|Constraint(LayoutManager)?|T(iledLayer|extLayer|rans(ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(nimation(Group)?|ction)))\\b",
+ "name": "support.class.quartz.objc"
+ },
+ "anonymous_pattern_24": {
+ "match": "\\bC(G(Float|Point|Size|Rect)|IFormat|AConstraintAttribute)\\b",
+ "name": "support.type.quartz.objc"
+ },
+ "anonymous_pattern_25": {
+ "match": "\\bNS(R(ect(Edge)?|ange)|G(lyph(Relation|LayoutMode)?|radientType)|M(odalSession|a(trixMode|p(Table|Enumerator)))|B(itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(cr(oll(er(Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(Granularity|Direction|Affinity)|wapped(Double|Float)|aveOperationType)|Ha(sh(Table|Enumerator)|ndler(2)?)|C(o(ntrol(Size|Tint)|mp(ositingOperation|arisonResult))|ell(State|Type|ImagePosition|Attribute))|T(hreadPrivate|ypesetterGlyphInfo|i(ckMarkPosition|tlePosition|meInterval)|o(ol(TipTag|bar(SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(TabType|Alignment)|ab(State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(ContextAuxiliary|PixelFormatAuxiliary)|D(ocumentChangeType|atePickerElementFlags|ra(werState|gOperation))|UsableScrollerParts|P(oint|r(intingPageOrder|ogressIndicator(Style|Th(ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(nt(SymbolicTraits|TraitMask|Action)|cusRingType)|W(indow(OrderingMode|Depth)|orkspace(IconCreationOptions|LaunchOptions)|ritingDirection)|L(ineBreakMode|ayout(Status|Direction))|A(nimation(Progress|Effect)|ppl(ication(TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle))\\b",
+ "name": "support.type.cocoa.objc"
+ },
+ "anonymous_pattern_26": {
+ "match": "\\bNS(NotFound|Ordered(Ascending|Descending|Same))\\b",
+ "name": "support.constant.cocoa.objc"
+ },
+ "anonymous_pattern_27": {
+ "match": "\\bNS(MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification\\b",
+ "name": "support.constant.notification.cocoa.leopard.objc"
+ },
+ "anonymous_pattern_28": {
+ "match": "\\bNS(Menu(Did(RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(ystemColorsDidChange|plitView(DidResizeSubviews|WillResizeSubviews))|C(o(nt(extHelpModeDid(Deactivate|Activate)|rolT(intDidChange|extDid(BeginEditing|Change|EndEditing)))|lor(PanelColorDidChange|ListDidChange)|mboBox(Selection(IsChanging|DidChange)|Will(Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(oolbar(DidRemoveItem|WillAddItem)|ext(Storage(DidProcessEditing|WillProcessEditing)|Did(BeginEditing|Change|EndEditing)|View(DidChange(Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)))|ImageRepRegistryDidChange|OutlineView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)|Item(Did(Collapse|Expand)|Will(Collapse|Expand)))|Drawer(Did(Close|Open)|Will(Close|Open))|PopUpButton(CellWillPopUp|WillPopUp)|View(GlobalFrameDidChange|BoundsDidChange|F(ocusDidChange|rameDidChange))|FontSetChanged|W(indow(Did(Resi(ze|gn(Main|Key))|M(iniaturize|ove)|Become(Main|Key)|ChangeScreen(|Profile)|Deminiaturize|Update|E(ndSheet|xpose))|Will(M(iniaturize|ove)|BeginSheet|Close))|orkspace(SessionDid(ResignActive|BecomeActive)|Did(Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(Sleep|Unmount|PowerOff|LaunchApplication)))|A(ntialiasThresholdChanged|ppl(ication(Did(ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(nhide|pdate)|FinishLaunching)|Will(ResignActive|BecomeActive|Hide|Terminate|U(nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification\\b",
+ "name": "support.constant.notification.cocoa.objc"
+ },
+ "anonymous_pattern_29": {
+ "match": "\\bNS(RuleEditor(RowType(Simple|Compound)|NestingMode(Si(ngle|mple)|Compound|List))|GradientDraws(BeforeStartingLocation|AfterEndingLocation)|M(inusSetExpressionType|a(chPortDeallocate(ReceiveRight|SendRight|None)|pTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(oxCustom|undleExecutableArchitecture(X86|I386|PPC(64)?)|etweenPredicateOperatorType|ackgroundStyle(Raised|Dark|L(ight|owered)))|S(tring(DrawingTruncatesLastVisibleLine|EncodingConversion(ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(e(ech(SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(GrammarFlag|SpellingFlag))|litViewDividerStyleThi(n|ck))|e(rvice(RequestTimedOutError|M(iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(inimum|aximum)|Application(NotFoundError|LaunchFailedError))|gmentStyle(Round(Rect|ed)|SmallSquare|Capsule|Textured(Rounded|Square)|Automatic)))|H(UDWindowMask|ashTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(oModeColorPanel|etServiceNoAutoRename)|C(hangeRedone|o(ntainsPredicateOperatorType|l(orRenderingIntent(RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(None|ContentArea|TrackableArea|EditableTextArea))|T(imeZoneNameStyle(S(hort(Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(Regular|SourceList)|racking(Mouse(Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(ssumeInside|ctive(In(KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(n(tersectSetExpressionType|dexedColorSpaceModel)|mageScale(None|Proportionally(Down|UpOrDown)|AxesIndependently))|Ope(nGLPFAAllowOfflineRenderers|rationQueue(DefaultMaxConcurrentOperationCount|Priority(High|Normal|Very(High|Low)|Low)))|D(iacriticInsensitiveSearch|ownloadsDirectory)|U(nionSetExpressionType|TF(16(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(ointerFunctions(Ma(chVirtualMemory|llocMemory)|Str(ongMemory|uctPersonality)|C(StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(paque(Memory|Personality)|bjectP(ointerPersonality|ersonality)))|at(hStyle(Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(Scaling|Copies|Orientation|P(a(perSize|ge(Range|SetupAccessory))|review)))|Executable(RuntimeMismatchError|NotLoadableError|ErrorM(inimum|aximum)|L(inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(Initial|Prior)|F(i(ndPanelSubstringMatchType(StartsWith|Contains|EndsWith|FullWord)|leRead(TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(ndow(BackingLocation(MainMemory|Default|VideoMemory)|Sharing(Read(Only|Write)|None)|CollectionBehavior(MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType)\\b",
+ "name": "support.constant.cocoa.leopard.objc"
+ },
+ "anonymous_pattern_3": {
+ "begin": "@\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objc"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objc"
+ }
+ },
+ "name": "string.quoted.double.objc",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "match": "(?x)%\n\t\t\t\t\t\t(\\d+\\$)? # field (argument #)\n\t\t\t\t\t\t[#0\\- +']* # flags\n\t\t\t\t\t\t((-?\\d+)|\\*(-?\\d+\\$)?)? # minimum field width\n\t\t\t\t\t\t(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? # precision\n\t\t\t\t\t\t[@] # conversion type\n\t\t\t\t\t",
+ "name": "constant.other.placeholder.objc"
+ },
+ {
+ "include": "#string_placeholder"
+ }
+ ]
+ },
+ "anonymous_pattern_30": {
+ "match": "\\bNS(R(GB(ModeColorPanel|ColorSpaceModel)|ight(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey)|ound(RectBezelStyle|Bankers|ed(BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(CapStyle|JoinStyle))|un(StoppedResponse|ContinuesResponse|AbortedResponse)|e(s(izableWindowMask|et(CursorRectsRunLoopOrdering|FunctionKey))|ce(ssedBezelStyle|iver(sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(evancyLevelIndicatorStyle|ative(Before|After))|gular(SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(n(domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(ModeMatrix|Button)))|G(IFFileType|lyph(Below|Inscribe(B(elow|ase)|Over(strike|Below)|Above)|Layout(WithPrevious|A(tAPoint|gainstAPoint))|A(ttribute(BidiLevel|Soft|Inscribe|Elastic)|bove))|r(ooveBorder|eaterThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|a(y(ModeColorPanel|ColorSpaceModel)|dient(None|Con(cave(Strong|Weak)|vex(Strong|Weak)))|phiteControlTint)))|XML(N(o(tationDeclarationKind|de(CompactEmptyElement|IsCDATA|OptionsNone|Use(SingleQuotes|DoubleQuotes)|Pre(serve(NamespaceOrder|C(haracterReferences|DATA)|DTD|Prefixes|E(ntities|mptyElements)|Quotes|Whitespace|A(ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(ocument(X(MLKind|HTMLKind|Include)|HTMLKind|T(idy(XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(arser(GTRequiredError|XMLDeclNot(StartedError|FinishedError)|Mi(splaced(XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(StartedError|FinishedError))|S(t(andaloneValueError|ringNot(StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(MTOKENRequiredError|o(t(ationNot(StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(haracterRef(In(DTDError|PrologError|EpilogError)|AtEOFError)|o(nditionalSectionNot(StartedError|FinishedError)|mment(NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(ternalError|valid(HexCharacterRefError|C(haracter(RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(NameError|Error)))|OutOfMemoryError|D(ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(RI(RequiredError|FragmentError)|n(declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(MissingSemiError|NoNameError|In(Internal(SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(ocessingInstructionNot(StartedError|FinishedError)|ematureDocumentEndError))|E(n(codingNotSupportedError|tity(Ref(In(DTDError|PrologError|EpilogError)|erence(MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(StartedError|FinishedError)|Is(ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(StartedError|FinishedError)|xt(ernalS(tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(iteralNot(StartedError|FinishedError)|T(RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(RedefinedError|HasNoValueError|Not(StartedError|FinishedError)|ListNot(StartedError|FinishedError)))|rocessingInstructionKind)|E(ntity(GeneralKind|DeclarationKind|UnparsedKind|P(ar(sedKind|ameterKind)|redefined))|lement(Declaration(MixedKind|UndefinedKind|E(lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(N(MToken(sKind|Kind)|otationKind)|CDATAKind|ID(Ref(sKind|Kind)|Kind)|DeclarationKind|En(tit(yKind|iesKind)|umerationKind)|Kind))|M(i(n(XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(nthCalendarUnit|deSwitchFunctionKey|use(Moved(Mask)?|E(ntered(Mask)?|ventSubtype|xited(Mask)?))|veToBezierPathElement|mentary(ChangeButton|Push(Button|InButton)|Light(Button)?))|enuFunctionKey|a(c(intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(XEdge|YEdge))|ACHOperatingSystem)|B(MPFileType|o(ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(Se(condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(zelBorder|velLineJoinStyle|low(Bottom|Top)|gin(sWith(Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(spaceCharacter|tabTextMovement|ingStore(Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(owser(NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(h(ift(JISStringEncoding|KeyMask)|ow(ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(s(ReqFunctionKey|tem(D(omainMask|efined(Mask)?)|FunctionKey))|mbolStringEncoding)|c(a(nnedOption|le(None|ToFit|Proportionally))|r(oll(er(NoPart|Increment(Page|Line|Arrow)|Decrement(Page|Line|Arrow)|Knob(Slot)?|Arrows(M(inEnd|axEnd)|None|DefaultSetting))|Wheel(Mask)?|LockFunctionKey)|eenChangedEventType))|t(opFunctionKey|r(ingDrawing(OneShot|DisableScreenFontSubstitution|Uses(DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(Status(Reading|NotOpen|Closed|Open(ing)?|Error|Writing|AtEnd)|Event(Has(BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(ndEncountered|rrorOccurred)))))|i(ngle(DateMode|UnderlineStyle)|ze(DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(condCalendarUnit|lect(By(Character|Paragraph|Word)|i(ng(Next|Previous)|onAffinity(Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(Momentary|Select(One|Any)))|quareLineCapStyle|witchButton|ave(ToOperation|Op(tions(Yes|No|Ask)|eration)|AsOperation)|mall(SquareBezelStyle|C(ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(ighlightModeMatrix|SBModeColorPanel|o(ur(Minute(SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(Never|OnlyFromMainDocumentDomain|Always)|e(lp(ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(MonthDa(yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(o(n(StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(ification(SuspensionBehavior(Hold|Coalesce|D(eliverImmediately|rop))|NoCoalescing|CoalescingOn(Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(cr(iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(itle|opLevelContainersSpecifierError|abs(BezelBorder|NoBorder|LineBorder))|I(nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(ll(Glyph|CellType)|m(eric(Search|PadKeyMask)|berFormatter(Round(Half(Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(10|Default)|S(cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(ercentStyle|ad(Before(Suffix|Prefix)|After(Suffix|Prefix))))))|e(t(Services(BadArgumentError|NotFoundError|C(ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(t(iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(hange(ReadOtherContents|GrayCell(Mask)?|BackgroundCell(Mask)?|Cleared|Done|Undone|Autosaved)|MYK(ModeColorPanel|ColorSpaceModel)|ircular(BezelStyle|Slider)|o(n(stantValueExpressionType|t(inuousCapacityLevelIndicatorStyle|entsCellMask|ain(sComparison|erSpecifierError)|rol(Glyph|KeyMask))|densedFontMask)|lor(Panel(RGBModeMask|GrayModeMask|HSBModeMask|C(MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(p(osite(XOR|Source(In|O(ut|ver)|Atop)|Highlight|C(opy|lear)|Destination(In|O(ut|ver)|Atop)|Plus(Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(stom(SelectorPredicateOperatorType|PaletteModeColorPanel)|r(sor(Update(Mask)?|PointingDevice)|veToBezierPathElement))|e(nterT(extAlignment|abStopType)|ll(State|H(ighlighted|as(Image(Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(Bordered|InsetButton)|Disabled|Editable|LightsBy(Gray|Background|Contents)|AllowsMixedState))|l(ipPagination|o(s(ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(ControlTint|DisplayFunctionKey|LineFunctionKey))|a(seInsensitive(Search|PredicateOption)|n(notCreateScriptCommandError|cel(Button|TextMovement))|chesDirectory|lculation(NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(itical(Request|AlertStyle)|ayonModeColorPanel))|T(hick(SquareBezelStyle|erSquareBezelStyle)|ypesetter(Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(ineBreakAction|atestBehavior))|i(ckMark(Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(olbarItemVisibilityPriority(Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(Compression(N(one|EXT)|CCITTFAX(3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(rminate(Now|Cancel|Later)|xt(Read(InapplicableDocumentTypeError|WriteErrorM(inimum|aximum))|Block(M(i(nimum(Height|Width)|ddleAlignment)|a(rgin|ximum(Height|Width)))|B(o(ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(Characters|Attributes)|CellType|ured(RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(Character|TextMovement|le(tP(oint(Mask|EventSubtype)?|roximity(Mask|EventSubtype)?)|Column(NoResizing|UserResizingMask|AutoresizingMask)|View(ReverseSequentialColumnAutoresizingStyle|GridNone|S(olid(HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(n(sert(CharFunctionKey|FunctionKey|LineFunctionKey)|t(Type|ernalS(criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(2022JPStringEncoding|Latin(1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(R(ight|ep(MatchesDevice|LoadStatus(ReadingHeader|Completed|InvalidData|Un(expectedEOF|knownType)|WillNeedAllData)))|Below|C(ellType|ache(BySize|Never|Default|Always))|Interpolation(High|None|Default|Low)|O(nly|verlaps)|Frame(Gr(oove|ayBezel)|Button|None|Photo)|L(oadStatus(ReadError|C(ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(lign(Right|Bottom(Right|Left)?|Center|Top(Right|Left)?|Left)|bove)))|O(n(State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|TextMovement)|SF1OperatingSystem|pe(n(GL(GO(Re(setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(R(obust|endererID)|M(inimumPolicy|ulti(sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(creenMask|te(ncilSize|reo)|ingleRenderer|upersample|ample(s|Buffers|Alpha))|NoRecovery|C(o(lor(Size|Float)|mpliant)|losestPolicy)|OffScreen|D(oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(cc(umSize|elerated)|ux(Buffers|DepthStencil)|l(phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(B(itfield|oolType)|S(hortType|tr(ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(Type|longType)|ArrayType))|D(i(s(c(losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(Selection|PredicateModifier))|o(c(ModalWindowMask|ument(Directory|ationDirectory))|ubleType|wn(TextMovement|ArrowFunctionKey))|e(s(cendingPageOrder|ktopDirectory)|cimalTabStopType|v(ice(NColorSpaceModel|IndependentModifierFlagsMask)|eloper(Directory|ApplicationDirectory))|fault(ControlTint|TokenStyle)|lete(Char(acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(yCalendarUnit|teFormatter(MediumStyle|Behavior(10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(wer(Clos(ingState|edState)|Open(ingState|State))|gOperation(Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(ser(CancelledError|D(irectory|omainMask)|FunctionKey)|RL(Handle(NotLoaded|Load(Succeeded|InProgress|Failed))|CredentialPersistence(None|Permanent|ForSession))|n(scaledWindowMask|cachedRead|i(codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(o(CloseGroupingRunLoopOrdering|FunctionKey)|e(finedDateComponent|rline(Style(Single|None|Thick|Double)|Pattern(Solid|D(ot|ash(Dot(Dot)?)?)))))|known(ColorSpaceModel|P(ointingDevice|ageOrder)|KeyS(criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(ustifiedTextAlignment|PEG(2000FileType|FileType)|apaneseEUC(GlyphPacking|StringEncoding))|P(o(s(t(Now|erFontMask|WhenIdle|ASAP)|iti(on(Replace|Be(fore|ginning)|End|After)|ve(IntType|DoubleType|FloatType)))|pUp(NoArrow|ArrowAt(Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(InCell(Mask)?|OnPushOffButton)|e(n(TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(Mask)?)|P(S(caleField|tatus(Title|Field)|aveButton)|N(ote(Title|Field)|ame(Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(a(perFeedButton|ge(Range(To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(useFunctionKey|ragraphSeparatorCharacter|ge(DownFunctionKey|UpFunctionKey))|r(int(ing(ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(NotFound|OK|Error)|FunctionKey)|o(p(ertyList(XMLFormat|MutableContainers(AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(BarStyle|SpinningStyle|Preferred(SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(ssedTab|vFunctionKey))|L(HeightForm|CancelButton|TitleField|ImageButton|O(KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(n(terCharacter|d(sWith(Comparison|PredicateOperatorType)|FunctionKey))|v(e(nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(Comparison|PredicateOperatorType)|ra(serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(clude(10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(i(ew(M(in(XMargin|YMargin)|ax(XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(lidationErrorM(inimum|aximum)|riableExpressionType))|Key(SpecifierEvaluationScriptError|Down(Mask)?|Up(Mask)?|PathExpressionType|Value(MinusSetMutation|SetSetMutation|Change(Re(placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(New|Old)|UnionSetMutation|ValidationError))|QTMovie(NormalPlayback|Looping(BackAndForthPlayback|Playback))|F(1(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(nd(PanelAction(Replace(A(ndFind|ll(InSelection)?))?|S(howFindPanel|e(tFindString|lectAll(InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(Read(No(SuchFileError|PermissionError)|CorruptFileError|In(validFileNameError|applicableStringEncodingError)|Un(supportedSchemeError|knownError))|HandlingPanel(CancelButton|OKButton)|NoSuchFileError|ErrorM(inimum|aximum)|Write(NoPermissionError|In(validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(nt(Mo(noSpaceTrait|dernSerifsClass)|BoldTrait|S(ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(o(ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(ntegerAdvancementsRenderingMode|talicTrait)|O(ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(nknownClass|IOptimizedTrait)|Panel(S(hadowEffectModeMask|t(andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(amilyClassMask|reeformSerifsClass)|Antialiased(RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(Below|Type(None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(attingError(M(inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(ExpressionType|KeyMask)|3(1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(RevertButton|S(ize(Title|Field)|etButton)|CurrentField|Preview(Button|Field))|l(oat(ingPointSamplesBitmapFormat|Type)|agsChanged(Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(heelModeColorPanel|indow(s(NTOperatingSystem|CP125(1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(InterfaceStyle|OperatingSystem))|M(iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(ctivation|ddingToRecents)|A(sync|nd(Hide(Others)?|Print)|llowingClassicStartup))|eek(day(CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(ntsBidiLevels|rningAlertStyle)|r(itingDirection(RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(i(stModeMatrix|ne(Moves(Right|Down|Up|Left)|B(order|reakBy(C(harWrapping|lipping)|Truncating(Middle|Head|Tail)|WordWrapping))|S(eparatorCharacter|weep(Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(ssThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey))|a(yout(RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(sc(iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(y(Type|PredicateModifier|EventMask)|choredSearch|imation(Blocking|Nonblocking(Threaded)?|E(ffect(DisappearingItemDefault|Poof)|ase(In(Out)?|Out))|Linear)|dPredicateType)|t(Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(obe(GB1CharacterCollection|CNS1CharacterCollection|Japan(1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(saveOperation|Pagination)|pp(lication(SupportDirectory|D(irectory|e(fined(Mask)?|legateReply(Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(Mask)?)|l(ternateKeyMask|pha(ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(sWrongScriptError|EvaluationScriptError)|bove(Bottom|Top)|WTEventType))\\b",
+ "name": "support.constant.cocoa.objc"
+ },
+ "anonymous_pattern_4": {
+ "begin": "\\b(id)\\s*(?=<)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.objc"
+ }
+ },
+ "end": "(?<=>)",
+ "name": "meta.id-with-protocol.objc",
+ "patterns": [
+ {
+ "include": "#protocol_list"
+ }
+ ]
+ },
+ "anonymous_pattern_5": {
+ "match": "\\b(NS_DURING|NS_HANDLER|NS_ENDHANDLER)\\b",
+ "name": "keyword.control.macro.objc"
+ },
+ "anonymous_pattern_7": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.keyword.objc"
+ }
+ },
+ "match": "(@)(try|catch|finally|throw)\\b",
+ "name": "keyword.control.exception.objc"
+ },
+ "anonymous_pattern_8": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.keyword.objc"
+ }
+ },
+ "match": "(@)(synchronized)\\b",
+ "name": "keyword.control.synchronize.objc"
+ },
+ "anonymous_pattern_9": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.keyword.objc"
+ }
+ },
+ "match": "(@)(required|optional)\\b",
+ "name": "keyword.control.protocol-specification.objc"
+ },
+ "apple_foundation_functional_macros": {
+ "begin": "(\\b(?:API_AVAILABLE|API_DEPRECATED|API_UNAVAILABLE|NS_AVAILABLE|NS_AVAILABLE_MAC|NS_AVAILABLE_IOS|NS_DEPRECATED|NS_DEPRECATED_MAC|NS_DEPRECATED_IOS|NS_SWIFT_NAME))(?:(?:\\s)+)?(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.preprocessor.apple-foundation.objc"
+ },
+ "2": {
+ "name": "punctuation.section.macro.arguments.begin.bracket.round.apple-foundation.objc"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.macro.arguments.end.bracket.round.apple-foundation.objc"
+ }
+ },
+ "name": "meta.preprocessor.macro.callable.apple-foundation.objc",
+ "patterns": [
+ {
+ "include": "#c_lang"
+ }
+ ]
+ },
+ "bracketed_content": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.begin.objc"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.end.objc"
+ }
+ },
+ "name": "meta.bracketed.objc",
+ "patterns": [
+ {
+ "begin": "(?=predicateWithFormat:)(?<=NSPredicate )(predicateWithFormat:)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.any-method.objc"
+ },
+ "2": {
+ "name": "punctuation.separator.arguments.objc"
+ }
+ },
+ "end": "(?=\\])",
+ "name": "meta.function-call.predicate.objc",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.arguments.objc"
+ }
+ },
+ "match": "\\bargument(Array|s)(:)",
+ "name": "support.function.any-method.name-of-parameter.objc"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.arguments.objc"
+ }
+ },
+ "match": "\\b\\w+(:)",
+ "name": "invalid.illegal.unknown-method.objc"
+ },
+ {
+ "begin": "@\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objc"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objc"
+ }
+ },
+ "name": "string.quoted.double.objc",
+ "patterns": [
+ {
+ "match": "\\b(AND|OR|NOT|IN)\\b",
+ "name": "keyword.operator.logical.predicate.cocoa.objc"
+ },
+ {
+ "match": "\\b(ALL|ANY|SOME|NONE)\\b",
+ "name": "constant.language.predicate.cocoa.objc"
+ },
+ {
+ "match": "\\b(NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\b",
+ "name": "constant.language.predicate.cocoa.objc"
+ },
+ {
+ "match": "\\b(MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\b",
+ "name": "keyword.operator.comparison.predicate.cocoa.objc"
+ },
+ {
+ "match": "\\bC(ASEINSENSITIVE|I)\\b",
+ "name": "keyword.other.modifier.predicate.cocoa.objc"
+ },
+ {
+ "match": "\\b(ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\b",
+ "name": "keyword.other.predicate.cocoa.objc"
+ },
+ {
+ "match": "\\\\(\\\\|[abefnrtv'\"?]|[0-3]\\d{,2}|[4-7]\\d?|x[a-zA-Z0-9]+)",
+ "name": "constant.character.escape.objc"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unknown-escape.objc"
+ }
+ ]
+ },
+ {
+ "include": "#special_variables"
+ },
+ {
+ "include": "#c_functions"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "(?=\\w)(?<=[\\w\\])\"] )(\\w+(?:(:)|(?=\\])))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.any-method.objc"
+ },
+ "2": {
+ "name": "punctuation.separator.arguments.objc"
+ }
+ },
+ "end": "(?=\\])",
+ "name": "meta.function-call.objc",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.arguments.objc"
+ }
+ },
+ "match": "\\b\\w+(:)",
+ "name": "support.function.any-method.name-of-parameter.objc"
+ },
+ {
+ "include": "#special_variables"
+ },
+ {
+ "include": "#c_functions"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "include": "#special_variables"
+ },
+ {
+ "include": "#c_functions"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "c_functions": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.whitespace.support.function.leading.objc"
+ },
+ "2": {
+ "name": "support.function.C99.objc"
+ }
+ },
+ "match": "(\\s*)\\b(hypot(f|l)?|s(scanf|ystem|nprintf|ca(nf|lb(n(f|l)?|ln(f|l)?))|i(n(h(f|l)?|f|l)?|gn(al|bit))|tr(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(jmp|vbuf|locale|buf)|qrt(f|l)?|w(scanf|printf)|rand)|n(e(arbyint(f|l)?|xt(toward(f|l)?|after(f|l)?))|an(f|l)?)|c(s(in(h(f|l)?|f|l)?|qrt(f|l)?)|cos(h(f)?|f|l)?|imag(f|l)?|t(ime|an(h(f|l)?|f|l)?)|o(s(h(f|l)?|f|l)?|nj(f|l)?|pysign(f|l)?)|p(ow(f|l)?|roj(f|l)?)|e(il(f|l)?|xp(f|l)?)|l(o(ck|g(f|l)?)|earerr)|a(sin(h(f|l)?|f|l)?|cos(h(f|l)?|f|l)?|tan(h(f|l)?|f|l)?|lloc|rg(f|l)?|bs(f|l)?)|real(f|l)?|brt(f|l)?)|t(ime|o(upper|lower)|an(h(f|l)?|f|l)?|runc(f|l)?|gamma(f|l)?|mp(nam|file))|i(s(space|n(ormal|an)|cntrl|inf|digit|u(nordered|pper)|p(unct|rint)|finite|w(space|c(ntrl|type)|digit|upper|p(unct|rint)|lower|al(num|pha)|graph|xdigit|blank)|l(ower|ess(equal|greater)?)|al(num|pha)|gr(eater(equal)?|aph)|xdigit|blank)|logb(f|l)?|max(div|abs))|di(v|fftime)|_Exit|unget(c|wc)|p(ow(f|l)?|ut(s|c(har)?|wc(har)?)|error|rintf)|e(rf(c(f|l)?|f|l)?|x(it|p(2(f|l)?|f|l|m1(f|l)?)?))|v(s(scanf|nprintf|canf|printf|w(scanf|printf))|printf|f(scanf|printf|w(scanf|printf))|w(scanf|printf)|a_(start|copy|end|arg))|qsort|f(s(canf|e(tpos|ek))|close|tell|open|dim(f|l)?|p(classify|ut(s|c|w(s|c))|rintf)|e(holdexcept|set(e(nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(aiseexcept|ror)|get(e(nv|xceptflag)|round))|flush|w(scanf|ide|printf|rite)|loor(f|l)?|abs(f|l)?|get(s|c|pos|w(s|c))|re(open|e|ad|xp(f|l)?)|m(in(f|l)?|od(f|l)?|a(f|l|x(f|l)?)?))|l(d(iv|exp(f|l)?)|o(ngjmp|cal(time|econv)|g(1(p(f|l)?|0(f|l)?)|2(f|l)?|f|l|b(f|l)?)?)|abs|l(div|abs|r(int(f|l)?|ound(f|l)?))|r(int(f|l)?|ound(f|l)?)|gamma(f|l)?)|w(scanf|c(s(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?|mbs)|pbrk|ftime|len|r(chr|tombs)|xfrm)|to(b|mb)|rtomb)|printf|mem(set|c(hr|py|mp)|move))|a(s(sert|ctime|in(h(f|l)?|f|l)?)|cos(h(f|l)?|f|l)?|t(o(i|f|l(l)?)|exit|an(h(f|l)?|2(f|l)?|f|l)?)|b(s|ort))|g(et(s|c(har)?|env|wc(har)?)|mtime)|r(int(f|l)?|ound(f|l)?|e(name|alloc|wind|m(ove|quo(f|l)?|ainder(f|l)?))|a(nd|ise))|b(search|towc)|m(odf(f|l)?|em(set|c(hr|py|mp)|move)|ktime|alloc|b(s(init|towcs|rtowcs)|towc|len|r(towc|len))))\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.whitespace.function-call.leading.objc"
+ },
+ "2": {
+ "name": "support.function.any-method.objc"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.objc"
+ }
+ },
+ "match": "(?x) (?: (?= \\s ) (?:(?<=else|new|return) | (?<!\\w)) (\\s+))?\n \t\t\t(\\b \n \t\t\t\t(?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\\s*\\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\\b | :: )++ # actual name\n \t\t\t)\n \t\t\t \\s*(\\()",
+ "name": "meta.function-call.objc"
+ }
+ ]
+ },
+ "c_lang": {
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-enabled"
+ },
+ {
+ "include": "#preprocessor-rule-disabled"
+ },
+ {
+ "include": "#preprocessor-rule-conditional"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#switch_statement"
+ },
+ {
+ "match": "\\b(break|continue|do|else|for|goto|if|_Pragma|return|while)\\b",
+ "name": "keyword.control.objc"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "match": "typedef",
+ "name": "keyword.other.typedef.objc"
+ },
+ {
+ "match": "\\bin\\b",
+ "name": "keyword.other.in.objc"
+ },
+ {
+ "match": "\\b(const|extern|register|restrict|static|volatile|inline|__block)\\b",
+ "name": "storage.modifier.objc"
+ },
+ {
+ "match": "\\bk[A-Z]\\w*\\b",
+ "name": "constant.other.variable.mac-classic.objc"
+ },
+ {
+ "match": "\\bg[A-Z]\\w*\\b",
+ "name": "variable.other.readwrite.global.mac-classic.objc"
+ },
+ {
+ "match": "\\bs[A-Z]\\w*\\b",
+ "name": "variable.other.readwrite.static.mac-classic.objc"
+ },
+ {
+ "match": "\\b(NULL|true|false|TRUE|FALSE)\\b",
+ "name": "constant.language.objc"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#special_variables"
+ },
+ {
+ "begin": "(?x)\n^\\s* ((\\#)\\s*define) \\s+\t# define\n((?<id>[a-zA-Z_$][\\w$]*))\t # macro name\n(?:\n (\\()\n\t(\n\t \\s* \\g<id> \\s*\t\t # first argument\n\t ((,) \\s* \\g<id> \\s*)* # additional arguments\n\t (?:\\.\\.\\.)?\t\t\t# varargs ellipsis?\n\t)\n (\\))\n)?",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.define.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ },
+ "3": {
+ "name": "entity.name.function.preprocessor.objc"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.begin.objc"
+ },
+ "6": {
+ "name": "variable.parameter.preprocessor.objc"
+ },
+ "8": {
+ "name": "punctuation.separator.parameters.objc"
+ },
+ "9": {
+ "name": "punctuation.definition.parameters.end.objc"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.macro.objc",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-contents"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*((#)\\s*(error|warning))\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.diagnostic.$3.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.diagnostic.objc",
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objc"
+ }
+ },
+ "end": "\"|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objc"
+ }
+ },
+ "name": "string.quoted.double.objc",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objc"
+ }
+ },
+ "end": "'|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objc"
+ }
+ },
+ "name": "string.quoted.single.objc",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "[^'\"]",
+ "end": "(?<!\\\\)(?=\\s*\\n)",
+ "name": "string.unquoted.single.objc",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*((#)\\s*(include(?:_next)?|import))\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.$3.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.include.objc",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objc"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objc"
+ }
+ },
+ "name": "string.quoted.double.include.objc"
+ },
+ {
+ "begin": "<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objc"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objc"
+ }
+ },
+ "name": "string.quoted.other.lt-gt.include.objc"
+ }
+ ]
+ },
+ {
+ "include": "#pragma-mark"
+ },
+ {
+ "begin": "^\\s*((#)\\s*line)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.line.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objc",
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(?:((#)\\s*undef))\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.undef.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objc",
+ "patterns": [
+ {
+ "match": "[a-zA-Z_$][\\w$]*",
+ "name": "entity.name.function.preprocessor.objc"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(?:((#)\\s*pragma))\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.pragma.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.pragma.objc",
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "match": "[a-zA-Z_$][\\w\\-$]*",
+ "name": "entity.other.attribute-name.pragma.preprocessor.objc"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "match": "\\b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\\b",
+ "name": "support.type.sys-types.objc"
+ },
+ {
+ "match": "\\b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\\b",
+ "name": "support.type.pthread.objc"
+ },
+ {
+ "match": "(?x) \\b\n(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t\n|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t\n|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t\n|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t\n|uintmax_t|uintmax_t)\n\\b",
+ "name": "support.type.stdint.objc"
+ },
+ {
+ "match": "\\b(noErr|kNilOptions|kInvalidID|kVariableLengthArray)\\b",
+ "name": "support.constant.mac-classic.objc"
+ },
+ {
+ "match": "(?x) \\b\n(AbsoluteTime|Boolean|Byte|ByteCount|ByteOffset|BytePtr|CompTimeValue|ConstLogicalAddress|ConstStrFileNameParam\n|ConstStringPtr|Duration|Fixed|FixedPtr|Float32|Float32Point|Float64|Float80|Float96|FourCharCode|Fract|FractPtr\n|Handle|ItemCount|LogicalAddress|OptionBits|OSErr|OSStatus|OSType|OSTypePtr|PhysicalAddress|ProcessSerialNumber\n|ProcessSerialNumberPtr|ProcHandle|Ptr|ResType|ResTypePtr|ShortFixed|ShortFixedPtr|SignedByte|SInt16|SInt32|SInt64\n|SInt8|Size|StrFileName|StringHandle|StringPtr|TimeBase|TimeRecord|TimeScale|TimeValue|TimeValue64|UInt16|UInt32\n|UInt64|UInt8|UniChar|UniCharCount|UniCharCountPtr|UniCharPtr|UnicodeScalarValue|UniversalProcHandle|UniversalProcPtr\n|UnsignedFixed|UnsignedFixedPtr|UnsignedWide|UTF16Char|UTF32Char|UTF8Char)\n\\b",
+ "name": "support.type.mac-classic.objc"
+ },
+ {
+ "match": "\\b([A-Za-z0-9_]+_t)\\b",
+ "name": "support.type.posix-reserved.objc"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#parens"
+ },
+ {
+ "name": "meta.function.objc",
+ "begin": "(?<!\\w)(?!\\s*(?:not|compl|sizeof|not_eq|bitand|xor|bitor|and|or|and_eq|xor_eq|or_eq|alignof|alignas|_Alignof|_Alignas|while|for|do|if|else|goto|switch|return|break|case|continue|default|void|char|short|int|signed|unsigned|long|float|double|bool|_Bool|_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|NULL|true|false|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t|struct|union|enum|typedef|auto|register|static|extern|thread_local|inline|_Noreturn|const|volatile|restrict|_Atomic)\\s*\\()(?=[a-zA-Z_]\\w*\\s*\\()",
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#function-innards"
+ }
+ ]
+ },
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "name": "meta.bracket.square.access.objc",
+ "begin": "([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))?(\\[)(?!\\])",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.object.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.begin.bracket.square.objc"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.square.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ {
+ "name": "storage.modifier.array.bracket.square.objc",
+ "match": "\\[\\s*\\]"
+ },
+ {
+ "match": ";",
+ "name": "punctuation.terminator.statement.objc"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.objc"
+ }
+ ],
+ "repository": {
+ "probably_a_parameter": {
+ "match": "(?<=(?:[a-zA-Z_0-9] |[&*>\\]\\)]))\\s*([a-zA-Z_]\\w*)\\s*(?=(?:\\[\\]\\s*)?(?:,|\\)))",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.probably.objc"
+ }
+ }
+ },
+ "access-method": {
+ "name": "meta.function-call.member.objc",
+ "begin": "([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))\\s*(?:(\\.)|(->))((?:(?:[a-zA-Z_][a-zA-Z_0-9]*)\\s*(?:(?:\\.)|(?:->)))*)\\s*([a-zA-Z_][a-zA-Z_0-9]*)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.object.objc"
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.objc"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.objc"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.dot-access.objc"
+ },
+ {
+ "match": "->",
+ "name": "punctuation.separator.pointer-access.objc"
+ },
+ {
+ "match": "[a-zA-Z_][a-zA-Z_0-9]*",
+ "name": "variable.object.objc"
+ },
+ {
+ "name": "everything.else.objc",
+ "match": ".+"
+ }
+ ]
+ },
+ "5": {
+ "name": "entity.name.function.member.objc"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.member.objc"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.member.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ "block": {
+ "patterns": [
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objc"
+ }
+ },
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.objc"
+ }
+ },
+ "name": "meta.block.objc",
+ "patterns": [
+ {
+ "include": "#block_innards"
+ }
+ ]
+ }
+ ]
+ },
+ "block_innards": {
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-enabled-block"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-block"
+ },
+ {
+ "include": "#preprocessor-rule-conditional-block"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#c_function_call"
+ },
+ {
+ "name": "meta.initialization.objc",
+ "begin": "(?x)\n(?:\n (?:\n\t(?=\\s)(?<!else|new|return)\n\t(?<=\\w) \\s+(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas) # or word + space before name\n )\n)\n(\n (?:[A-Za-z_][A-Za-z0-9_]*+ | :: )++ # actual name\n |\n (?:(?<=operator) (?:[-*&<>=+!]+ | \\(\\) | \\[\\]))\n)\n\\s*(\\() # opening bracket",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.objc"
+ },
+ "2": {
+ "name": "punctuation.section.parens.begin.bracket.round.initialization.objc"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.initialization.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objc"
+ }
+ },
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ {
+ "include": "#parens-block"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "c_function_call": {
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(?=\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)",
+ "end": "(?<=\\))(?!\\w)",
+ "name": "meta.function-call.objc",
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "meta.toc-list.banner.block.objc"
+ }
+ },
+ "match": "^/\\* =(\\s*.*?)\\s*= \\*/$\\n?",
+ "name": "comment.block.objc"
+ },
+ {
+ "begin": "/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.objc"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.objc"
+ }
+ },
+ "name": "comment.block.objc"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "meta.toc-list.banner.line.objc"
+ }
+ },
+ "match": "^// =(\\s*.*?)\\s*=\\s*$\\n?",
+ "name": "comment.line.banner.objc"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.objc"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.objc"
+ }
+ },
+ "end": "(?=\\n)",
+ "name": "comment.line.double-slash.objc",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "disabled": {
+ "begin": "^\\s*#\\s*if(n?def)?\\b.*$",
+ "end": "^\\s*#\\s*endif\\b",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ "line_continuation_character": {
+ "patterns": [
+ {
+ "match": "(\\\\)\\n",
+ "captures": {
+ "1": {
+ "name": "constant.character.escape.line-continuation.objc"
+ }
+ }
+ }
+ ]
+ },
+ "parens": {
+ "name": "meta.parens.objc",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objc"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "parens-block": {
+ "name": "meta.parens.block.objc",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objc"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block_innards"
+ },
+ {
+ "match": "(?-mix:(?<!:):(?!:))",
+ "name": "punctuation.range-based.objc"
+ }
+ ]
+ },
+ "pragma-mark": {
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.pragma.objc"
+ },
+ "2": {
+ "name": "keyword.control.directive.pragma.pragma-mark.objc"
+ },
+ "3": {
+ "name": "punctuation.definition.directive.objc"
+ },
+ "4": {
+ "name": "entity.name.tag.pragma-mark.objc"
+ }
+ },
+ "match": "^\\s*(((#)\\s*pragma\\s+mark)\\s+(.*))",
+ "name": "meta.section.objc"
+ },
+ "operators": {
+ "patterns": [
+ {
+ "match": "(?<![\\w$])(sizeof)(?![\\w$])",
+ "name": "keyword.operator.sizeof.objc"
+ },
+ {
+ "match": "--",
+ "name": "keyword.operator.decrement.objc"
+ },
+ {
+ "match": "\\+\\+",
+ "name": "keyword.operator.increment.objc"
+ },
+ {
+ "match": "%=|\\+=|-=|\\*=|(?<!\\()/=",
+ "name": "keyword.operator.assignment.compound.objc"
+ },
+ {
+ "match": "&=|\\^=|<<=|>>=|\\|=",
+ "name": "keyword.operator.assignment.compound.bitwise.objc"
+ },
+ {
+ "match": "<<|>>",
+ "name": "keyword.operator.bitwise.shift.objc"
+ },
+ {
+ "match": "!=|<=|>=|==|<|>",
+ "name": "keyword.operator.comparison.objc"
+ },
+ {
+ "match": "&&|!|\\|\\|",
+ "name": "keyword.operator.logical.objc"
+ },
+ {
+ "match": "&|\\||\\^|~",
+ "name": "keyword.operator.objc"
+ },
+ {
+ "match": "=",
+ "name": "keyword.operator.assignment.objc"
+ },
+ {
+ "match": "%|\\*|/|-|\\+",
+ "name": "keyword.operator.objc"
+ },
+ {
+ "begin": "(\\?)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.objc"
+ }
+ },
+ "end": "(:)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objc"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objc"
+ }
+ },
+ "name": "string.quoted.double.objc",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#string_placeholder"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objc"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objc"
+ }
+ },
+ "name": "string.quoted.single.objc",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ }
+ ]
+ },
+ "string_escaped_char": {
+ "patterns": [
+ {
+ "match": "(?x)\\\\ (\n\\\\\t\t\t |\n[abefnprtv'\"?] |\n[0-3]\\d{,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} )",
+ "name": "constant.character.escape.objc"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unknown-escape.objc"
+ }
+ ]
+ },
+ "string_placeholder": {
+ "patterns": [
+ {
+ "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",
+ "name": "constant.other.placeholder.objc"
+ },
+ {
+ "match": "(%)(?!\"\\s*(PRI|SCN))",
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.placeholder.objc"
+ }
+ }
+ }
+ ]
+ },
+ "storage_types": {
+ "patterns": [
+ {
+ "match": "(?-mix:(?<!\\w)(?:void|char|short|int|signed|unsigned|long|float|double|bool|_Bool)(?!\\w))",
+ "name": "storage.type.built-in.primitive.objc"
+ },
+ {
+ "match": "(?-mix:(?<!\\w)(?:_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t)(?!\\w))",
+ "name": "storage.type.built-in.objc"
+ },
+ {
+ "match": "(?-mix:\\b(asm|__asm__|enum|struct|union)\\b)",
+ "name": "storage.type.$1.objc"
+ }
+ ]
+ },
+ "vararg_ellipses": {
+ "match": "(?<!\\.)\\.\\.\\.(?!\\.)",
+ "name": "punctuation.vararg-ellipses.objc"
+ },
+ "preprocessor-rule-conditional": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if(?:n?def)?\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objc",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-enabled-elif"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-else"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-elif"
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objc",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "match": "^\\s*#\\s*(else|elif|endif)\\b",
+ "captures": {
+ "0": {
+ "name": "invalid.illegal.stray-$1.objc"
+ }
+ }
+ }
+ ]
+ },
+ "preprocessor-rule-conditional-block": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if(?:n?def)?\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objc",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-enabled-elif-block"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-else-block"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-elif"
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objc",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ {
+ "match": "^\\s*#\\s*(else|elif|endif)\\b",
+ "captures": {
+ "0": {
+ "name": "invalid.illegal.stray-$1.objc"
+ }
+ }
+ }
+ ]
+ },
+ "preprocessor-rule-conditional-line": {
+ "patterns": [
+ {
+ "match": "(?:\\bdefined\\b\\s*$)|(?:\\bdefined\\b(?=\\s*\\(*\\s*(?:(?!defined\\b)[a-zA-Z_$][\\w$]*\\b)\\s*\\)*\\s*(?:\\n|//|/\\*|\\?|\\:|&&|\\|\\||\\\\\\s*\\n)))",
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ {
+ "match": "\\bdefined\\b",
+ "name": "invalid.illegal.macro-name.objc"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "begin": "\\?",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.objc"
+ }
+ },
+ "end": ":",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "match": "\\b(NULL|true|false|TRUE|FALSE)\\b",
+ "name": "constant.language.objc"
+ },
+ {
+ "match": "[a-zA-Z_$][\\w$]*",
+ "name": "entity.name.function.preprocessor.objc"
+ },
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objc"
+ }
+ },
+ "end": "\\)|(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-disabled": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",
+ "name": "meta.preprocessor.objc",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-elif"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-else"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-elif"
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objc",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "contentName": "comment.block.preprocessor.if-branch.objc",
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-disabled-block": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",
+ "name": "meta.preprocessor.objc",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-elif-block"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-else-block"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-elif"
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objc",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ {
+ "contentName": "comment.block.preprocessor.if-branch.in-block.objc",
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-disabled-elif": {
+ "begin": "^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objc",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "contentName": "comment.block.preprocessor.elif-branch.objc",
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ },
+ "3": {
+ "name": "constant.numeric.preprocessor.objc"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",
+ "name": "meta.preprocessor.objc",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "contentName": "comment.block.preprocessor.else-branch.objc",
+ "begin": "^\\s*((#)\\s*else\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "contentName": "comment.block.preprocessor.if-branch.objc",
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-block": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",
+ "name": "meta.preprocessor.objc",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "contentName": "comment.block.preprocessor.else-branch.in-block.objc",
+ "begin": "^\\s*((#)\\s*else\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "contentName": "comment.block.preprocessor.if-branch.in-block.objc",
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#block_innards"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-elif": {
+ "begin": "^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objc",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:endif)\\b))",
+ "patterns": [
+ {
+ "contentName": "comment.block.preprocessor.elif-branch.objc",
+ "begin": "^\\s*((#)\\s*(else)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "contentName": "comment.block.preprocessor.elif-branch.objc",
+ "begin": "^\\s*((#)\\s*(elif)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-elif-block": {
+ "begin": "^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objc",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:endif)\\b))",
+ "patterns": [
+ {
+ "contentName": "comment.block.preprocessor.elif-branch.in-block.objc",
+ "begin": "^\\s*((#)\\s*(else)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "contentName": "comment.block.preprocessor.elif-branch.objc",
+ "begin": "^\\s*((#)\\s*(elif)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-else": {
+ "begin": "^\\s*((#)\\s*else\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-else-block": {
+ "begin": "^\\s*((#)\\s*else\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objc"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objc"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ "preprocessor-rule-define-line-contents": {
+ "patterns": [
+ {
+ "include": "#vararg_ellipses"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objc"
+ }
+ },
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.objc"
+ }
+ },
+ "name": "meta.block.objc",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-blocks"
+ }
+ ]
+ },
+ {
+ "match": "\\(",
+ "name": "punctuation.section.parens.begin.bracket.round.objc"
+ },
+ {
+ "match": "\\)",
+ "name": "punctuation.section.parens.end.bracket.round.objc"
+ },
+ {
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\s*\\()\n(?=\n (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n |\n (?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)",
+ "end": "(?<=\\))(?!\\w)|(?<!\\\\)(?=\\s*\\n)",
+ "name": "meta.function.objc",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-functions"
+ }
+ ]
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objc"
+ }
+ },
+ "end": "\"|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objc"
+ }
+ },
+ "name": "string.quoted.double.objc",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#string_placeholder"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objc"
+ }
+ },
+ "end": "'|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objc"
+ }
+ },
+ "name": "string.quoted.single.objc",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "preprocessor-rule-define-line-blocks": {
+ "patterns": [
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objc"
+ }
+ },
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-blocks"
+ },
+ {
+ "include": "#preprocessor-rule-define-line-contents"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-define-line-contents"
+ }
+ ]
+ },
+ "preprocessor-rule-define-line-functions": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#vararg_ellipses"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.objc"
+ },
+ "2": {
+ "name": "punctuation.section.arguments.begin.bracket.round.objc"
+ }
+ },
+ "end": "(\\))|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-functions"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objc"
+ }
+ },
+ "end": "(\\))|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.end.bracket.round.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-functions"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-define-line-contents"
+ }
+ ]
+ },
+ "function-innards": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#vararg_ellipses"
+ },
+ {
+ "name": "meta.function.definition.parameters.objc",
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.objc"
+ },
+ "2": {
+ "name": "punctuation.section.parameters.begin.bracket.round.objc"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#probably_a_parameter"
+ },
+ {
+ "include": "#function-innards"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objc"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-innards"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "function-call-innards": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.objc"
+ },
+ "2": {
+ "name": "punctuation.section.arguments.begin.bracket.round.objc"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objc"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ "default_statement": {
+ "name": "meta.conditional.case.objc",
+ "begin": "((?<!\\w)default(?!\\w))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.default.objc"
+ }
+ },
+ "end": "(:)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.case.default.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#conditional_context"
+ }
+ ]
+ },
+ "case_statement": {
+ "name": "meta.conditional.case.objc",
+ "begin": "((?<!\\w)case(?!\\w))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.case.objc"
+ }
+ },
+ "end": "(:)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.case.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#conditional_context"
+ }
+ ]
+ },
+ "switch_statement": {
+ "name": "meta.block.switch.objc",
+ "begin": "(((?<!\\w)switch(?!\\w)))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.switch.objc"
+ },
+ "2": {
+ "name": "keyword.control.switch.objc"
+ }
+ },
+ "end": "(?:(?<=\\})|(?=[;>\\[\\]=]))",
+ "patterns": [
+ {
+ "name": "meta.head.switch.objc",
+ "begin": "\\G ?",
+ "end": "((?:\\{|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.switch.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#switch_conditional_parentheses"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.switch.objc",
+ "begin": "(?<=\\{)",
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.switch.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#default_statement"
+ },
+ {
+ "include": "#case_statement"
+ },
+ {
+ "include": "$base"
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.switch.objc",
+ "begin": "(?<=})[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ }
+ ]
+ },
+ "switch_conditional_parentheses": {
+ "name": "meta.conditional.switch.objc",
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.begin.bracket.round.conditional.switch.objc"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.end.bracket.round.conditional.switch.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#conditional_context"
+ }
+ ]
+ },
+ "static_assert": {
+ "begin": "(static_assert|_Static_assert)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.static_assert.objc"
+ },
+ "2": {
+ "name": "punctuation.section.arguments.begin.bracket.round.objc"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.objc"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.static_assert.message.objc",
+ "begin": "(,)\\s*(?=(?:L|u8|u|U\\s*\\\")?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.objc"
+ }
+ },
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#string_context_c"
+ }
+ ]
+ },
+ {
+ "include": "#function_call_context"
+ }
+ ]
+ },
+ "conditional_context": {
+ "patterns": [
+ {
+ "include": "$base"
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ "member_access": {
+ "match": "((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))((?:[a-zA-Z_]\\w*\\s*(?-mix:(?:(?:\\.\\*|\\.))|(?:(?:->\\*|->)))\\s*)*)\\s*(\\b(?!(?:void|char|short|int|signed|unsigned|long|float|double|bool|_Bool|_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t))[a-zA-Z_]\\w*\\b(?!\\())",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#special_variables"
+ },
+ {
+ "name": "variable.other.object.access.objc",
+ "match": "(.+)"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.objc"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.objc"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "match": "((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#special_variables"
+ },
+ {
+ "name": "variable.other.object.access.objc",
+ "match": "(.+)"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.objc"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.objc"
+ }
+ }
+ }
+ ]
+ },
+ "5": {
+ "name": "variable.other.member.objc"
+ }
+ }
+ },
+ "method_access": {
+ "contentName": "meta.function-call.member.objc",
+ "begin": "((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))((?:[a-zA-Z_]\\w*\\s*(?-mix:(?:(?:\\.\\*|\\.))|(?:(?:->\\*|->)))\\s*)*)\\s*([a-zA-Z_]\\w*)(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#special_variables"
+ },
+ {
+ "name": "variable.other.object.access.objc",
+ "match": "(.+)"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.objc"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.objc"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "match": "((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#special_variables"
+ },
+ {
+ "name": "variable.other.object.access.objc",
+ "match": "(.+)"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.objc"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.objc"
+ }
+ }
+ }
+ ]
+ },
+ "5": {
+ "name": "entity.name.function.member.objc"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.member.objc"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.member.objc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ "numbers": {
+ "begin": "(?<!\\w)(?=\\d|\\.\\d)",
+ "end": "(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))",
+ "patterns": [
+ {
+ "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])(\\+)?(\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:([lLfF](?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.hexadecimal.objc"
+ },
+ "2": {
+ "name": "constant.numeric.hexadecimal.objc",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objc"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.objc"
+ },
+ "4": {
+ "name": "constant.numeric.hexadecimal.objc"
+ },
+ "5": {
+ "name": "constant.numeric.hexadecimal.objc",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objc"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.separator.constant.numeric.objc"
+ },
+ "8": {
+ "name": "keyword.other.unit.exponent.hexadecimal.objc"
+ },
+ "9": {
+ "name": "keyword.operator.plus.exponent.hexadecimal.objc"
+ },
+ "10": {
+ "name": "keyword.operator.minus.exponent.hexadecimal.objc"
+ },
+ "11": {
+ "name": "constant.numeric.exponent.hexadecimal.objc",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objc"
+ }
+ ]
+ },
+ "12": {
+ "name": "keyword.other.unit.suffix.floating-point.objc"
+ }
+ }
+ },
+ {
+ "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])(\\+)?(\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:([lLfF](?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))",
+ "captures": {
+ "2": {
+ "name": "constant.numeric.decimal.objc",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objc"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.objc"
+ },
+ "4": {
+ "name": "constant.numeric.decimal.point.objc"
+ },
+ "5": {
+ "name": "constant.numeric.decimal.objc",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objc"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.separator.constant.numeric.objc"
+ },
+ "8": {
+ "name": "keyword.other.unit.exponent.decimal.objc"
+ },
+ "9": {
+ "name": "keyword.operator.plus.exponent.decimal.objc"
+ },
+ "10": {
+ "name": "keyword.operator.minus.exponent.decimal.objc"
+ },
+ "11": {
+ "name": "constant.numeric.exponent.decimal.objc",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objc"
+ }
+ ]
+ },
+ "12": {
+ "name": "keyword.other.unit.suffix.floating-point.objc"
+ }
+ }
+ },
+ {
+ "match": "(\\G0[bB])([01](?:(?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.binary.objc"
+ },
+ "2": {
+ "name": "constant.numeric.binary.objc",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objc"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.objc"
+ },
+ "4": {
+ "name": "keyword.other.unit.suffix.integer.objc"
+ }
+ }
+ },
+ {
+ "match": "(\\G0)((?:(?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))+)(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.octal.objc"
+ },
+ "2": {
+ "name": "constant.numeric.octal.objc",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objc"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.objc"
+ },
+ "4": {
+ "name": "keyword.other.unit.suffix.integer.objc"
+ }
+ }
+ },
+ {
+ "match": "(\\G0[xX])([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?<!')([pP])(\\+)?(\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.hexadecimal.objc"
+ },
+ "2": {
+ "name": "constant.numeric.hexadecimal.objc",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objc"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.objc"
+ },
+ "5": {
+ "name": "keyword.other.unit.exponent.hexadecimal.objc"
+ },
+ "6": {
+ "name": "keyword.operator.plus.exponent.hexadecimal.objc"
+ },
+ "7": {
+ "name": "keyword.operator.minus.exponent.hexadecimal.objc"
+ },
+ "8": {
+ "name": "constant.numeric.exponent.hexadecimal.objc",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objc"
+ }
+ ]
+ },
+ "9": {
+ "name": "keyword.other.unit.suffix.integer.objc"
+ }
+ }
+ },
+ {
+ "match": "(\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?<!')([eE])(\\+)?(\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))",
+ "captures": {
+ "2": {
+ "name": "constant.numeric.decimal.objc",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objc"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.objc"
+ },
+ "5": {
+ "name": "keyword.other.unit.exponent.decimal.objc"
+ },
+ "6": {
+ "name": "keyword.operator.plus.exponent.decimal.objc"
+ },
+ "7": {
+ "name": "keyword.operator.minus.exponent.decimal.objc"
+ },
+ "8": {
+ "name": "constant.numeric.exponent.decimal.objc",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objc"
+ }
+ ]
+ },
+ "9": {
+ "name": "keyword.other.unit.suffix.integer.objc"
+ }
+ }
+ },
+ {
+ "match": "(?:(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))+",
+ "name": "invalid.illegal.constant.numeric.objc"
+ }
+ ]
+ }
+ }
+ },
+ "comment": {
+ "patterns": [
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.objc"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.objc"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.objc"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.objc"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.double-slash.objc",
+ "patterns": [
+ {
+ "match": "(?>\\\\\\s*\\n)",
+ "name": "punctuation.separator.continuation.objc"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "disabled": {
+ "begin": "^\\s*#\\s*if(n?def)?\\b.*$",
+ "comment": "eat nested preprocessor if(def)s",
+ "end": "^\\s*#\\s*endif\\b.*$",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ "implementation_innards": {
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-enabled-implementation"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-implementation"
+ },
+ {
+ "include": "#preprocessor-rule-other-implementation"
+ },
+ {
+ "include": "#property_directive"
+ },
+ {
+ "include": "#method_super"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "interface_innards": {
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-enabled-interface"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-interface"
+ },
+ {
+ "include": "#preprocessor-rule-other-interface"
+ },
+ {
+ "include": "#properties"
+ },
+ {
+ "include": "#protocol_list"
+ },
+ {
+ "include": "#method"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "method": {
+ "begin": "^(-|\\+)\\s*",
+ "end": "(?=\\{|#)|;",
+ "name": "meta.function.objc",
+ "patterns": [
+ {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.type.begin.objc"
+ }
+ },
+ "end": "(\\))\\s*(\\w+\\b)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.type.end.objc"
+ },
+ "2": {
+ "name": "entity.name.function.objc"
+ }
+ },
+ "name": "meta.return-type.objc",
+ "patterns": [
+ {
+ "include": "#protocol_list"
+ },
+ {
+ "include": "#protocol_type_qualifier"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "match": "\\b\\w+(?=:)",
+ "name": "entity.name.function.name-of-parameter.objc"
+ },
+ {
+ "begin": "((:))\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.name-of-parameter.objc"
+ },
+ "2": {
+ "name": "punctuation.separator.arguments.objc"
+ },
+ "3": {
+ "name": "punctuation.definition.type.begin.objc"
+ }
+ },
+ "end": "(\\))\\s*(\\w+\\b)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.type.end.objc"
+ },
+ "2": {
+ "name": "variable.parameter.function.objc"
+ }
+ },
+ "name": "meta.argument-type.objc",
+ "patterns": [
+ {
+ "include": "#protocol_list"
+ },
+ {
+ "include": "#protocol_type_qualifier"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "method_super": {
+ "begin": "^(?=-|\\+)",
+ "end": "(?<=\\})|(?=#)",
+ "name": "meta.function-with-body.objc",
+ "patterns": [
+ {
+ "include": "#method"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "pragma-mark": {
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objc"
+ },
+ "2": {
+ "name": "keyword.control.import.pragma.objc"
+ },
+ "3": {
+ "name": "meta.toc-list.pragma-mark.objc"
+ }
+ },
+ "match": "^\\s*(#\\s*(pragma\\s+mark)\\s+(.*))",
+ "name": "meta.section.objc"
+ },
+ "preprocessor-rule-disabled-implementation": {
+ "begin": "^\\s*(#(if)\\s+(0)\\b).*",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objc"
+ },
+ "2": {
+ "name": "keyword.control.import.if.objc"
+ },
+ "3": {
+ "name": "constant.numeric.preprocessor.objc"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "begin": "^\\s*(#\\s*(else)\\b)",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objc"
+ },
+ "2": {
+ "name": "keyword.control.import.else.objc"
+ }
+ },
+ "end": "(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "include": "#interface_innards"
+ }
+ ]
+ },
+ {
+ "begin": "",
+ "end": "(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "name": "comment.block.preprocessor.if-branch.objc",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-disabled-interface": {
+ "begin": "^\\s*(#(if)\\s+(0)\\b).*",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objc"
+ },
+ "2": {
+ "name": "keyword.control.import.if.objc"
+ },
+ "3": {
+ "name": "constant.numeric.preprocessor.objc"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "begin": "^\\s*(#\\s*(else)\\b)",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objc"
+ },
+ "2": {
+ "name": "keyword.control.import.else.objc"
+ }
+ },
+ "end": "(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "include": "#interface_innards"
+ }
+ ]
+ },
+ {
+ "begin": "",
+ "end": "(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "name": "comment.block.preprocessor.if-branch.objc",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-implementation": {
+ "begin": "^\\s*(#(if)\\s+(0*1)\\b)",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objc"
+ },
+ "2": {
+ "name": "keyword.control.import.if.objc"
+ },
+ "3": {
+ "name": "constant.numeric.preprocessor.objc"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "begin": "^\\s*(#\\s*(else)\\b).*",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objc"
+ },
+ "2": {
+ "name": "keyword.control.import.else.objc"
+ }
+ },
+ "contentName": "comment.block.preprocessor.else-branch.objc",
+ "end": "(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "",
+ "end": "(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "include": "#implementation_innards"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-interface": {
+ "begin": "^\\s*(#(if)\\s+(0*1)\\b)",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objc"
+ },
+ "2": {
+ "name": "keyword.control.import.if.objc"
+ },
+ "3": {
+ "name": "constant.numeric.preprocessor.objc"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "begin": "^\\s*(#\\s*(else)\\b).*",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objc"
+ },
+ "2": {
+ "name": "keyword.control.import.else.objc"
+ }
+ },
+ "contentName": "comment.block.preprocessor.else-branch.objc",
+ "end": "(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "",
+ "end": "(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "include": "#interface_innards"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-other-implementation": {
+ "begin": "^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objc"
+ },
+ "2": {
+ "name": "keyword.control.import.objc"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b).*?(?:(?=(?://|/\\*))|$)",
+ "patterns": [
+ {
+ "include": "#implementation_innards"
+ }
+ ]
+ },
+ "preprocessor-rule-other-interface": {
+ "begin": "^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objc"
+ },
+ "2": {
+ "name": "keyword.control.import.objc"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b).*?(?:(?=(?://|/\\*))|$)",
+ "patterns": [
+ {
+ "include": "#interface_innards"
+ }
+ ]
+ },
+ "properties": {
+ "patterns": [
+ {
+ "begin": "((@)property)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.property.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.objc"
+ },
+ "3": {
+ "name": "punctuation.section.scope.begin.objc"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.scope.end.objc"
+ }
+ },
+ "name": "meta.property-with-attributes.objc",
+ "patterns": [
+ {
+ "match": "\\b(getter|setter|readonly|readwrite|assign|retain|copy|nonatomic|atomic|strong|weak|nonnull|nullable|null_resettable|null_unspecified|class|direct)\\b",
+ "name": "keyword.other.property.attribute.objc"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.property.objc"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.objc"
+ }
+ },
+ "match": "((@)property)\\b",
+ "name": "meta.property.objc"
+ }
+ ]
+ },
+ "property_directive": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.keyword.objc"
+ }
+ },
+ "match": "(@)(dynamic|synthesize)\\b",
+ "name": "keyword.other.property.directive.objc"
+ },
+ "protocol_list": {
+ "begin": "(<)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.scope.begin.objc"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.scope.end.objc"
+ }
+ },
+ "name": "meta.protocol-list.objc",
+ "patterns": [
+ {
+ "match": "\\bNS(GlyphStorage|M(utableCopying|enuItem)|C(hangeSpelling|o(ding|pying|lorPicking(Custom|Default)))|T(oolbarItemValidations|ext(Input|AttachmentCell))|I(nputServ(iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(CTypeSerializationCallBack|ect)|D(ecimalNumberBehaviors|raggingInfo)|U(serInterfaceValidations|RL(HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(ToobarItem|UserInterfaceItem)|Locking)\\b",
+ "name": "support.other.protocol.objc"
+ }
+ ]
+ },
+ "protocol_type_qualifier": {
+ "match": "\\b(in|out|inout|oneway|bycopy|byref|nonnull|nullable|_Nonnull|_Nullable|_Null_unspecified)\\b",
+ "name": "storage.modifier.protocol.objc"
+ },
+ "special_variables": {
+ "patterns": [
+ {
+ "match": "\\b_cmd\\b",
+ "name": "variable.other.selector.objc"
+ },
+ {
+ "match": "\\b(self|super)\\b",
+ "name": "variable.language.objc"
+ }
+ ]
+ },
+ "string_escaped_char": {
+ "patterns": [
+ {
+ "match": "(?x)\\\\ (\n\\\\\t\t\t |\n[abefnprtv'\"?] |\n[0-3]\\d{,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} )",
+ "name": "constant.character.escape.objc"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unknown-escape.objc"
+ }
+ ]
+ },
+ "string_placeholder": {
+ "patterns": [
+ {
+ "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",
+ "name": "constant.other.placeholder.objc"
+ },
+ {
+ "match": "(%)(?!\"\\s*(PRI|SCN))",
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.placeholder.objc"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/objective-cpp.tmLanguage.json b/node_modules/shiki/languages/objective-cpp.tmLanguage.json
new file mode 100644
index 0000000..4471b8d
--- /dev/null
+++ b/node_modules/shiki/languages/objective-cpp.tmLanguage.json
@@ -0,0 +1,7247 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/jeff-hykin/better-objcpp-syntax/blob/master/autogenerated/objcpp.tmLanguage.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/jeff-hykin/better-objcpp-syntax/commit/5a7eb15eee382dd5aa388bc04fdb60a0d2128e14",
+ "name": "objective-cpp",
+ "scopeName": "source.objcpp",
+ "patterns": [
+ {
+ "include": "#cpp_lang"
+ },
+ {
+ "include": "#anonymous_pattern_1"
+ },
+ {
+ "include": "#anonymous_pattern_2"
+ },
+ {
+ "include": "#anonymous_pattern_3"
+ },
+ {
+ "include": "#anonymous_pattern_4"
+ },
+ {
+ "include": "#anonymous_pattern_5"
+ },
+ {
+ "include": "#apple_foundation_functional_macros"
+ },
+ {
+ "include": "#anonymous_pattern_7"
+ },
+ {
+ "include": "#anonymous_pattern_8"
+ },
+ {
+ "include": "#anonymous_pattern_9"
+ },
+ {
+ "include": "#anonymous_pattern_10"
+ },
+ {
+ "include": "#anonymous_pattern_11"
+ },
+ {
+ "include": "#anonymous_pattern_12"
+ },
+ {
+ "include": "#anonymous_pattern_13"
+ },
+ {
+ "include": "#anonymous_pattern_14"
+ },
+ {
+ "include": "#anonymous_pattern_15"
+ },
+ {
+ "include": "#anonymous_pattern_16"
+ },
+ {
+ "include": "#anonymous_pattern_17"
+ },
+ {
+ "include": "#anonymous_pattern_18"
+ },
+ {
+ "include": "#anonymous_pattern_19"
+ },
+ {
+ "include": "#anonymous_pattern_20"
+ },
+ {
+ "include": "#anonymous_pattern_21"
+ },
+ {
+ "include": "#anonymous_pattern_22"
+ },
+ {
+ "include": "#anonymous_pattern_23"
+ },
+ {
+ "include": "#anonymous_pattern_24"
+ },
+ {
+ "include": "#anonymous_pattern_25"
+ },
+ {
+ "include": "#anonymous_pattern_26"
+ },
+ {
+ "include": "#anonymous_pattern_27"
+ },
+ {
+ "include": "#anonymous_pattern_28"
+ },
+ {
+ "include": "#anonymous_pattern_29"
+ },
+ {
+ "include": "#anonymous_pattern_30"
+ },
+ {
+ "include": "#bracketed_content"
+ },
+ {
+ "include": "#c_lang"
+ }
+ ],
+ "repository": {
+ "anonymous_pattern_1": {
+ "begin": "((@)(interface|protocol))(?!.+;)\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*((:)(?:\\s*)([A-Za-z][A-Za-z0-9]*))?(\\s|\\n)?",
+ "captures": {
+ "1": {
+ "name": "storage.type.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.storage.type.objcpp"
+ },
+ "4": {
+ "name": "entity.name.type.objcpp"
+ },
+ "6": {
+ "name": "punctuation.definition.entity.other.inherited-class.objcpp"
+ },
+ "7": {
+ "name": "entity.other.inherited-class.objcpp"
+ },
+ "8": {
+ "name": "meta.divider.objcpp"
+ },
+ "9": {
+ "name": "meta.inherited-class.objcpp"
+ }
+ },
+ "contentName": "meta.scope.interface.objcpp",
+ "end": "((@)end)\\b",
+ "name": "meta.interface-or-protocol.objcpp",
+ "patterns": [
+ {
+ "include": "#interface_innards"
+ }
+ ]
+ },
+ "anonymous_pattern_10": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.keyword.objcpp"
+ }
+ },
+ "match": "(@)(defs|encode)\\b",
+ "name": "keyword.other.objcpp"
+ },
+ "anonymous_pattern_11": {
+ "match": "\\bid\\b",
+ "name": "storage.type.id.objcpp"
+ },
+ "anonymous_pattern_12": {
+ "match": "\\b(IBOutlet|IBAction|BOOL|SEL|id|unichar|IMP|Class|instancetype)\\b",
+ "name": "storage.type.objcpp"
+ },
+ "anonymous_pattern_13": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.storage.type.objcpp"
+ }
+ },
+ "match": "(@)(class|protocol)\\b",
+ "name": "storage.type.objcpp"
+ },
+ "anonymous_pattern_14": {
+ "begin": "((@)selector)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.storage.type.objcpp"
+ },
+ "3": {
+ "name": "punctuation.definition.storage.type.objcpp"
+ }
+ },
+ "contentName": "meta.selector.method-name.objcpp",
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.storage.type.objcpp"
+ }
+ },
+ "name": "meta.selector.objcpp",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.arguments.objcpp"
+ }
+ },
+ "match": "\\b(?:[a-zA-Z_:][\\w]*)+",
+ "name": "support.function.any-method.name-of-parameter.objcpp"
+ }
+ ]
+ },
+ "anonymous_pattern_15": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.storage.modifier.objcpp"
+ }
+ },
+ "match": "(@)(synchronized|public|package|private|protected)\\b",
+ "name": "storage.modifier.objcpp"
+ },
+ "anonymous_pattern_16": {
+ "match": "\\b(YES|NO|Nil|nil)\\b",
+ "name": "constant.language.objcpp"
+ },
+ "anonymous_pattern_17": {
+ "match": "\\bNSApp\\b",
+ "name": "support.variable.foundation.objcpp"
+ },
+ "anonymous_pattern_18": {
+ "captures": {
+ "1": {
+ "name": "punctuation.whitespace.support.function.cocoa.leopard.objcpp"
+ },
+ "2": {
+ "name": "support.function.cocoa.leopard.objcpp"
+ }
+ },
+ "match": "(\\s*)\\b(NS(Rect(ToCGRect|FromCGRect)|MakeCollectable|S(tringFromProtocol|ize(ToCGSize|FromCGSize))|Draw(NinePartImage|ThreePartImage)|P(oint(ToCGPoint|FromCGPoint)|rotocolFromString)|EventMaskFromType|Value))\\b"
+ },
+ "anonymous_pattern_19": {
+ "captures": {
+ "1": {
+ "name": "punctuation.whitespace.support.function.leading.cocoa.objcpp"
+ },
+ "2": {
+ "name": "support.function.cocoa.objcpp"
+ }
+ },
+ "match": "(\\s*)\\b(NS(R(ound(DownToMultipleOfPageSize|UpToMultipleOfPageSize)|un(CriticalAlertPanel(RelativeToWindow)?|InformationalAlertPanel(RelativeToWindow)?|AlertPanel(RelativeToWindow)?)|e(set(MapTable|HashTable)|c(ycleZone|t(Clip(List)?|F(ill(UsingOperation|List(UsingOperation|With(Grays|Colors(UsingOperation)?))?)?|romString))|ordAllocationEvent)|turnAddress|leaseAlertPanel|a(dPixel|l(MemoryAvailable|locateCollectable))|gisterServicesProvider)|angeFromString)|Get(SizeAndAlignment|CriticalAlertPanel|InformationalAlertPanel|UncaughtExceptionHandler|FileType(s)?|WindowServerMemory|AlertPanel)|M(i(n(X|Y)|d(X|Y))|ouseInRect|a(p(Remove|Get|Member|Insert(IfAbsent|KnownAbsent)?)|ke(R(ect|ange)|Size|Point)|x(Range|X|Y)))|B(itsPer(SampleFromDepth|PixelFromDepth)|e(stDepth|ep|gin(CriticalAlertSheet|InformationalAlertSheet|AlertSheet)))|S(ho(uldRetainWithZone|w(sServicesMenuItem|AnimationEffect))|tringFrom(R(ect|ange)|MapTable|S(ize|elector)|HashTable|Class|Point)|izeFromString|e(t(ShowsServicesMenuItem|ZoneName|UncaughtExceptionHandler|FocusRingStyle)|lectorFromString|archPathForDirectoriesInDomains)|wap(Big(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|Short|Host(ShortTo(Big|Little)|IntTo(Big|Little)|DoubleTo(Big|Little)|FloatTo(Big|Little)|Long(To(Big|Little)|LongTo(Big|Little)))|Int|Double|Float|L(ittle(ShortToHost|IntToHost|DoubleToHost|FloatToHost|Long(ToHost|LongToHost))|ong(Long)?)))|H(ighlightRect|o(stByteOrder|meDirectory(ForUser)?)|eight|ash(Remove|Get|Insert(IfAbsent|KnownAbsent)?)|FSType(CodeFromFileType|OfFile))|N(umberOfColorComponents|ext(MapEnumeratorPair|HashEnumeratorItem))|C(o(n(tainsRect|vert(GlyphsToPackedGlyphs|Swapped(DoubleToHost|FloatToHost)|Host(DoubleToSwapped|FloatToSwapped)))|unt(MapTable|HashTable|Frames|Windows(ForContext)?)|py(M(emoryPages|apTableWithZone)|Bits|HashTableWithZone|Object)|lorSpaceFromDepth|mpare(MapTables|HashTables))|lassFromString|reate(MapTable(WithZone)?|HashTable(WithZone)?|Zone|File(namePboardType|ContentsPboardType)))|TemporaryDirectory|I(s(ControllerMarker|EmptyRect|FreedObject)|n(setRect|crementExtraRefCount|te(r(sect(sRect|ionR(ect|ange))|faceStyleForKey)|gralRect)))|Zone(Realloc|Malloc|Name|Calloc|Fr(omPointer|ee))|O(penStepRootDirectory|ffsetRect)|D(i(sableScreenUpdates|videRect)|ottedFrameRect|e(c(imal(Round|Multiply|S(tring|ubtract)|Normalize|Co(py|mpa(ct|re))|IsNotANumber|Divide|Power|Add)|rementExtraRefCountWasZero)|faultMallocZone|allocate(MemoryPages|Object))|raw(Gr(oove|ayBezel)|B(itmap|utton)|ColorTiledRects|TiledRects|DarkBezel|W(hiteBezel|indowBackground)|LightBezel))|U(serName|n(ionR(ect|ange)|registerServicesProvider)|pdateDynamicServices)|Java(Bundle(Setup|Cleanup)|Setup(VirtualMachine)?|Needs(ToLoadClasses|VirtualMachine)|ClassesF(orBundle|romPath)|ObjectNamedInPath|ProvidesClasses)|P(oint(InRect|FromString)|erformService|lanarFromDepth|ageSize)|E(n(d(MapTableEnumeration|HashTableEnumeration)|umerate(MapTable|HashTable)|ableScreenUpdates)|qual(R(ects|anges)|Sizes|Points)|raseRect|xtraRefCount)|F(ileTypeForHFSTypeCode|ullUserName|r(ee(MapTable|HashTable)|ame(Rect(WithWidth(UsingOperation)?)?|Address)))|Wi(ndowList(ForContext)?|dth)|Lo(cationInRange|g(v|PageSize)?)|A(ccessibility(R(oleDescription(ForUIElement)?|aiseBadArgumentException)|Unignored(Children(ForOnlyChild)?|Descendant|Ancestor)|PostNotification|ActionDescription)|pplication(Main|Load)|vailableWindowDepths|ll(MapTable(Values|Keys)|HashTableObjects|ocate(MemoryPages|Collectable|Object)))))\\b"
+ },
+ "anonymous_pattern_2": {
+ "begin": "((@)(implementation))\\s+([A-Za-z_][A-Za-z0-9_]*)\\s*(?::\\s*([A-Za-z][A-Za-z0-9]*))?",
+ "captures": {
+ "1": {
+ "name": "storage.type.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.storage.type.objcpp"
+ },
+ "4": {
+ "name": "entity.name.type.objcpp"
+ },
+ "5": {
+ "name": "entity.other.inherited-class.objcpp"
+ }
+ },
+ "contentName": "meta.scope.implementation.objcpp",
+ "end": "((@)end)\\b",
+ "name": "meta.implementation.objcpp",
+ "patterns": [
+ {
+ "include": "#implementation_innards"
+ }
+ ]
+ },
+ "anonymous_pattern_20": {
+ "match": "\\bNS(RuleEditor|G(arbageCollector|radient)|MapTable|HashTable|Co(ndition|llectionView(Item)?)|T(oolbarItemGroup|extInputClient|r(eeNode|ackingArea))|InvocationOperation|Operation(Queue)?|D(ictionaryController|ockTile)|P(ointer(Functions|Array)|athC(o(ntrol(Delegate)?|mponentCell)|ell(Delegate)?)|r(intPanelAccessorizing|edicateEditor(RowTemplate)?))|ViewController|FastEnumeration|Animat(ionContext|ablePropertyContainer))\\b",
+ "name": "support.class.cocoa.leopard.objcpp"
+ },
+ "anonymous_pattern_21": {
+ "match": "\\bNS(R(u(nLoop|ler(Marker|View))|e(sponder|cursiveLock|lativeSpecifier)|an(domSpecifier|geSpecifier))|G(etCommand|lyph(Generator|Storage|Info)|raphicsContext)|XML(Node|D(ocument|TD(Node)?)|Parser|Element)|M(iddleSpecifier|ov(ie(View)?|eCommand)|utable(S(tring|et)|C(haracterSet|opying)|IndexSet|D(ictionary|ata)|URLRequest|ParagraphStyle|A(ttributedString|rray))|e(ssagePort(NameServer)?|nu(Item(Cell)?|View)?|t(hodSignature|adata(Item|Query(ResultGroup|AttributeValueTuple)?)))|a(ch(BootstrapServer|Port)|trix))|B(itmapImageRep|ox|u(ndle|tton(Cell)?)|ezierPath|rowser(Cell)?)|S(hadow|c(anner|r(ipt(SuiteRegistry|C(o(ercionHandler|mmand(Description)?)|lassDescription)|ObjectSpecifier|ExecutionContext|WhoseTest)|oll(er|View)|een))|t(epper(Cell)?|atus(Bar|Item)|r(ing|eam))|imple(HorizontalTypesetter|CString)|o(cketPort(NameServer)?|und|rtDescriptor)|p(e(cifierTest|ech(Recognizer|Synthesizer)|ll(Server|Checker))|litView)|e(cureTextField(Cell)?|t(Command)?|archField(Cell)?|rializer|gmentedC(ontrol|ell))|lider(Cell)?|avePanel)|H(ost|TTP(Cookie(Storage)?|URLResponse)|elpManager)|N(ib(Con(nector|trolConnector)|OutletConnector)?|otification(Center|Queue)?|u(ll|mber(Formatter)?)|etService(Browser)?|ameSpecifier)|C(ha(ngeSpelling|racterSet)|o(n(stantString|nection|trol(ler)?|ditionLock)|d(ing|er)|unt(Command|edSet)|pying|lor(Space|P(ick(ing(Custom|Default)|er)|anel)|Well|List)?|m(p(oundPredicate|arisonPredicate)|boBox(Cell)?))|u(stomImageRep|rsor)|IImageRep|ell|l(ipView|o(seCommand|neCommand)|assDescription)|a(ched(ImageRep|URLResponse)|lendar(Date)?)|reateCommand)|T(hread|ypesetter|ime(Zone|r)|o(olbar(Item(Validations)?)?|kenField(Cell)?)|ext(Block|Storage|Container|Tab(le(Block)?)?|Input|View|Field(Cell)?|List|Attachment(Cell)?)?|a(sk|b(le(Header(Cell|View)|Column|View)|View(Item)?))|reeController)|I(n(dex(S(pecifier|et)|Path)|put(Manager|S(tream|erv(iceProvider|er(MouseTracker)?)))|vocation)|gnoreMisspelledWords|mage(Rep|Cell|View)?)|O(ut(putStream|lineView)|pen(GL(Context|Pixel(Buffer|Format)|View)|Panel)|bj(CTypeSerializationCallBack|ect(Controller)?))|D(i(st(antObject(Request)?|ributed(NotificationCenter|Lock))|ctionary|rectoryEnumerator)|ocument(Controller)?|e(serializer|cimalNumber(Behaviors|Handler)?|leteCommand)|at(e(Components|Picker(Cell)?|Formatter)?|a)|ra(wer|ggingInfo))|U(ser(InterfaceValidations|Defaults(Controller)?)|RL(Re(sponse|quest)|Handle(Client)?|C(onnection|ache|redential(Storage)?)|Download(Delegate)?|Prot(ocol(Client)?|ectionSpace)|AuthenticationChallenge(Sender)?)?|n(iqueIDSpecifier|doManager|archiver))|P(ipe|o(sitionalSpecifier|pUpButton(Cell)?|rt(Message|NameServer|Coder)?)|ICTImageRep|ersistentDocument|DFImageRep|a(steboard|nel|ragraphStyle|geLayout)|r(int(Info|er|Operation|Panel)|o(cessInfo|tocolChecker|perty(Specifier|ListSerialization)|gressIndicator|xy)|edicate))|E(numerator|vent|PSImageRep|rror|x(ception|istsCommand|pression))|V(iew(Animation)?|al(idated(ToobarItem|UserInterfaceItem)|ue(Transformer)?))|Keyed(Unarchiver|Archiver)|Qui(ckDrawView|tCommand)|F(ile(Manager|Handle|Wrapper)|o(nt(Manager|Descriptor|Panel)?|rm(Cell|atter)))|W(hoseSpecifier|indow(Controller)?|orkspace)|L(o(c(k(ing)?|ale)|gicalTest)|evelIndicator(Cell)?|ayoutManager)|A(ssertionHandler|nimation|ctionCell|ttributedString|utoreleasePool|TSTypesetter|ppl(ication|e(Script|Event(Manager|Descriptor)))|ffineTransform|lert|r(chiver|ray(Controller)?)))\\b",
+ "name": "support.class.cocoa.objcpp"
+ },
+ "anonymous_pattern_22": {
+ "match": "\\bNS(R(oundingMode|ule(Editor(RowType|NestingMode)|rOrientation)|e(questUserAttentionType|lativePosition))|G(lyphInscription|radientDrawingOptions)|XML(NodeKind|D(ocumentContentKind|TDNodeKind)|ParserError)|M(ultibyteGlyphPacking|apTableOptions)|B(itmapFormat|oxType|ezierPathElement|ackgroundStyle|rowserDropOperation)|S(tr(ing(CompareOptions|DrawingOptions|EncodingConversionOptions)|eam(Status|Event))|p(eechBoundary|litViewDividerStyle)|e(archPathD(irectory|omainMask)|gmentS(tyle|witchTracking))|liderType|aveOptions)|H(TTPCookieAcceptPolicy|ashTableOptions)|N(otification(SuspensionBehavior|Coalescing)|umberFormatter(RoundingMode|Behavior|Style|PadPosition)|etService(sError|Options))|C(haracterCollection|o(lor(RenderingIntent|SpaceModel|PanelMode)|mp(oundPredicateType|arisonPredicateModifier))|ellStateValue|al(culationError|endarUnit))|T(ypesetterControlCharacterAction|imeZoneNameStyle|e(stComparisonOperation|xt(Block(Dimension|V(erticalAlignment|alueType)|Layer)|TableLayoutAlgorithm|FieldBezelStyle))|ableView(SelectionHighlightStyle|ColumnAutoresizingStyle)|rackingAreaOptions)|I(n(sertionPosition|te(rfaceStyle|ger))|mage(RepLoadStatus|Scaling|CacheMode|FrameStyle|LoadStatus|Alignment))|Ope(nGLPixelFormatAttribute|rationQueuePriority)|Date(Picker(Mode|Style)|Formatter(Behavior|Style))|U(RL(RequestCachePolicy|HandleStatus|C(acheStoragePolicy|redentialPersistence))|Integer)|P(o(stingStyle|int(ingDeviceType|erFunctionsOptions)|pUpArrowPosition)|athStyle|r(int(ing(Orientation|PaginationMode)|erTableStatus|PanelOptions)|opertyList(MutabilityOptions|Format)|edicateOperatorType))|ExpressionType|KeyValue(SetMutationKind|Change)|QTMovieLoopMode|F(indPanel(SubstringMatchType|Action)|o(nt(RenderingMode|FamilyClass)|cusRingPlacement))|W(hoseSubelementIdentifier|ind(ingRule|ow(B(utton|ackingLocation)|SharingType|CollectionBehavior)))|L(ine(MovementDirection|SweepDirection|CapStyle|JoinStyle)|evelIndicatorStyle)|Animation(BlockingMode|Curve))\\b",
+ "name": "support.type.cocoa.leopard.objcpp"
+ },
+ "anonymous_pattern_23": {
+ "match": "\\bC(I(Sampler|Co(ntext|lor)|Image(Accumulator)?|PlugIn(Registration)?|Vector|Kernel|Filter(Generator|Shape)?)|A(Renderer|MediaTiming(Function)?|BasicAnimation|ScrollLayer|Constraint(LayoutManager)?|T(iledLayer|extLayer|rans(ition|action))|OpenGLLayer|PropertyAnimation|KeyframeAnimation|Layer|A(nimation(Group)?|ction)))\\b",
+ "name": "support.class.quartz.objcpp"
+ },
+ "anonymous_pattern_24": {
+ "match": "\\bC(G(Float|Point|Size|Rect)|IFormat|AConstraintAttribute)\\b",
+ "name": "support.type.quartz.objcpp"
+ },
+ "anonymous_pattern_25": {
+ "match": "\\bNS(R(ect(Edge)?|ange)|G(lyph(Relation|LayoutMode)?|radientType)|M(odalSession|a(trixMode|p(Table|Enumerator)))|B(itmapImageFileType|orderType|uttonType|ezelStyle|ackingStoreType|rowserColumnResizingType)|S(cr(oll(er(Part|Arrow)|ArrowPosition)|eenAuxiliaryOpaque)|tringEncoding|ize|ocketNativeHandle|election(Granularity|Direction|Affinity)|wapped(Double|Float)|aveOperationType)|Ha(sh(Table|Enumerator)|ndler(2)?)|C(o(ntrol(Size|Tint)|mp(ositingOperation|arisonResult))|ell(State|Type|ImagePosition|Attribute))|T(hreadPrivate|ypesetterGlyphInfo|i(ckMarkPosition|tlePosition|meInterval)|o(ol(TipTag|bar(SizeMode|DisplayMode))|kenStyle)|IFFCompression|ext(TabType|Alignment)|ab(State|leViewDropOperation|ViewType)|rackingRectTag)|ImageInterpolation|Zone|OpenGL(ContextAuxiliary|PixelFormatAuxiliary)|D(ocumentChangeType|atePickerElementFlags|ra(werState|gOperation))|UsableScrollerParts|P(oint|r(intingPageOrder|ogressIndicator(Style|Th(ickness|readInfo))))|EventType|KeyValueObservingOptions|Fo(nt(SymbolicTraits|TraitMask|Action)|cusRingType)|W(indow(OrderingMode|Depth)|orkspace(IconCreationOptions|LaunchOptions)|ritingDirection)|L(ineBreakMode|ayout(Status|Direction))|A(nimation(Progress|Effect)|ppl(ication(TerminateReply|DelegateReply|PrintReply)|eEventManagerSuspensionID)|ffineTransformStruct|lertStyle))\\b",
+ "name": "support.type.cocoa.objcpp"
+ },
+ "anonymous_pattern_26": {
+ "match": "\\bNS(NotFound|Ordered(Ascending|Descending|Same))\\b",
+ "name": "support.constant.cocoa.objcpp"
+ },
+ "anonymous_pattern_27": {
+ "match": "\\bNS(MenuDidBeginTracking|ViewDidUpdateTrackingAreas)?Notification\\b",
+ "name": "support.constant.notification.cocoa.leopard.objcpp"
+ },
+ "anonymous_pattern_28": {
+ "match": "\\bNS(Menu(Did(RemoveItem|SendAction|ChangeItem|EndTracking|AddItem)|WillSendAction)|S(ystemColorsDidChange|plitView(DidResizeSubviews|WillResizeSubviews))|C(o(nt(extHelpModeDid(Deactivate|Activate)|rolT(intDidChange|extDid(BeginEditing|Change|EndEditing)))|lor(PanelColorDidChange|ListDidChange)|mboBox(Selection(IsChanging|DidChange)|Will(Dismiss|PopUp)))|lassDescriptionNeededForClass)|T(oolbar(DidRemoveItem|WillAddItem)|ext(Storage(DidProcessEditing|WillProcessEditing)|Did(BeginEditing|Change|EndEditing)|View(DidChange(Selection|TypingAttributes)|WillChangeNotifyingTextView))|ableView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)))|ImageRepRegistryDidChange|OutlineView(Selection(IsChanging|DidChange)|ColumnDid(Resize|Move)|Item(Did(Collapse|Expand)|Will(Collapse|Expand)))|Drawer(Did(Close|Open)|Will(Close|Open))|PopUpButton(CellWillPopUp|WillPopUp)|View(GlobalFrameDidChange|BoundsDidChange|F(ocusDidChange|rameDidChange))|FontSetChanged|W(indow(Did(Resi(ze|gn(Main|Key))|M(iniaturize|ove)|Become(Main|Key)|ChangeScreen(|Profile)|Deminiaturize|Update|E(ndSheet|xpose))|Will(M(iniaturize|ove)|BeginSheet|Close))|orkspace(SessionDid(ResignActive|BecomeActive)|Did(Mount|TerminateApplication|Unmount|PerformFileOperation|Wake|LaunchApplication)|Will(Sleep|Unmount|PowerOff|LaunchApplication)))|A(ntialiasThresholdChanged|ppl(ication(Did(ResignActive|BecomeActive|Hide|ChangeScreenParameters|U(nhide|pdate)|FinishLaunching)|Will(ResignActive|BecomeActive|Hide|Terminate|U(nhide|pdate)|FinishLaunching))|eEventManagerWillProcessFirstEvent)))Notification\\b",
+ "name": "support.constant.notification.cocoa.objcpp"
+ },
+ "anonymous_pattern_29": {
+ "match": "\\bNS(RuleEditor(RowType(Simple|Compound)|NestingMode(Si(ngle|mple)|Compound|List))|GradientDraws(BeforeStartingLocation|AfterEndingLocation)|M(inusSetExpressionType|a(chPortDeallocate(ReceiveRight|SendRight|None)|pTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality)))|B(oxCustom|undleExecutableArchitecture(X86|I386|PPC(64)?)|etweenPredicateOperatorType|ackgroundStyle(Raised|Dark|L(ight|owered)))|S(tring(DrawingTruncatesLastVisibleLine|EncodingConversion(ExternalRepresentation|AllowLossy))|ubqueryExpressionType|p(e(ech(SentenceBoundary|ImmediateBoundary|WordBoundary)|llingState(GrammarFlag|SpellingFlag))|litViewDividerStyleThi(n|ck))|e(rvice(RequestTimedOutError|M(iscellaneousError|alformedServiceDictionaryError)|InvalidPasteboardDataError|ErrorM(inimum|aximum)|Application(NotFoundError|LaunchFailedError))|gmentStyle(Round(Rect|ed)|SmallSquare|Capsule|Textured(Rounded|Square)|Automatic)))|H(UDWindowMask|ashTable(StrongMemory|CopyIn|ZeroingWeakMemory|ObjectPointerPersonality))|N(oModeColorPanel|etServiceNoAutoRename)|C(hangeRedone|o(ntainsPredicateOperatorType|l(orRenderingIntent(RelativeColorimetric|Saturation|Default|Perceptual|AbsoluteColorimetric)|lectorDisabledOption))|ellHit(None|ContentArea|TrackableArea|EditableTextArea))|T(imeZoneNameStyle(S(hort(Standard|DaylightSaving)|tandard)|DaylightSaving)|extFieldDatePickerStyle|ableViewSelectionHighlightStyle(Regular|SourceList)|racking(Mouse(Moved|EnteredAndExited)|CursorUpdate|InVisibleRect|EnabledDuringMouseDrag|A(ssumeInside|ctive(In(KeyWindow|ActiveApp)|WhenFirstResponder|Always))))|I(n(tersectSetExpressionType|dexedColorSpaceModel)|mageScale(None|Proportionally(Down|UpOrDown)|AxesIndependently))|Ope(nGLPFAAllowOfflineRenderers|rationQueue(DefaultMaxConcurrentOperationCount|Priority(High|Normal|Very(High|Low)|Low)))|D(iacriticInsensitiveSearch|ownloadsDirectory)|U(nionSetExpressionType|TF(16(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)|32(BigEndianStringEncoding|StringEncoding|LittleEndianStringEncoding)))|P(ointerFunctions(Ma(chVirtualMemory|llocMemory)|Str(ongMemory|uctPersonality)|C(StringPersonality|opyIn)|IntegerPersonality|ZeroingWeakMemory|O(paque(Memory|Personality)|bjectP(ointerPersonality|ersonality)))|at(hStyle(Standard|NavigationBar|PopUp)|ternColorSpaceModel)|rintPanelShows(Scaling|Copies|Orientation|P(a(perSize|ge(Range|SetupAccessory))|review)))|Executable(RuntimeMismatchError|NotLoadableError|ErrorM(inimum|aximum)|L(inkError|oadError)|ArchitectureMismatchError)|KeyValueObservingOption(Initial|Prior)|F(i(ndPanelSubstringMatchType(StartsWith|Contains|EndsWith|FullWord)|leRead(TooLargeError|UnknownStringEncodingError))|orcedOrderingSearch)|Wi(ndow(BackingLocation(MainMemory|Default|VideoMemory)|Sharing(Read(Only|Write)|None)|CollectionBehavior(MoveToActiveSpace|CanJoinAllSpaces|Default))|dthInsensitiveSearch)|AggregateExpressionType)\\b",
+ "name": "support.constant.cocoa.leopard.objcpp"
+ },
+ "anonymous_pattern_3": {
+ "begin": "@\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.double.objcpp",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "match": "(?x)%\n\t\t\t\t\t\t(\\d+\\$)? # field (argument #)\n\t\t\t\t\t\t[#0\\- +']* # flags\n\t\t\t\t\t\t((-?\\d+)|\\*(-?\\d+\\$)?)? # minimum field width\n\t\t\t\t\t\t(\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? # precision\n\t\t\t\t\t\t[@] # conversion type\n\t\t\t\t\t",
+ "name": "constant.other.placeholder.objcpp"
+ },
+ {
+ "include": "#string_placeholder"
+ }
+ ]
+ },
+ "anonymous_pattern_30": {
+ "match": "\\bNS(R(GB(ModeColorPanel|ColorSpaceModel)|ight(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey)|ound(RectBezelStyle|Bankers|ed(BezelStyle|TokenStyle|DisclosureBezelStyle)|Down|Up|Plain|Line(CapStyle|JoinStyle))|un(StoppedResponse|ContinuesResponse|AbortedResponse)|e(s(izableWindowMask|et(CursorRectsRunLoopOrdering|FunctionKey))|ce(ssedBezelStyle|iver(sCantHandleCommandScriptError|EvaluationScriptError))|turnTextMovement|doFunctionKey|quiredArgumentsMissingScriptError|l(evancyLevelIndicatorStyle|ative(Before|After))|gular(SquareBezelStyle|ControlSize)|moveTraitFontAction)|a(n(domSubelement|geDateMode)|tingLevelIndicatorStyle|dio(ModeMatrix|Button)))|G(IFFileType|lyph(Below|Inscribe(B(elow|ase)|Over(strike|Below)|Above)|Layout(WithPrevious|A(tAPoint|gainstAPoint))|A(ttribute(BidiLevel|Soft|Inscribe|Elastic)|bove))|r(ooveBorder|eaterThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|a(y(ModeColorPanel|ColorSpaceModel)|dient(None|Con(cave(Strong|Weak)|vex(Strong|Weak)))|phiteControlTint)))|XML(N(o(tationDeclarationKind|de(CompactEmptyElement|IsCDATA|OptionsNone|Use(SingleQuotes|DoubleQuotes)|Pre(serve(NamespaceOrder|C(haracterReferences|DATA)|DTD|Prefixes|E(ntities|mptyElements)|Quotes|Whitespace|A(ttributeOrder|ll))|ttyPrint)|ExpandEmptyElement))|amespaceKind)|CommentKind|TextKind|InvalidKind|D(ocument(X(MLKind|HTMLKind|Include)|HTMLKind|T(idy(XML|HTML)|extKind)|IncludeContentTypeDeclaration|Validate|Kind)|TDKind)|P(arser(GTRequiredError|XMLDeclNot(StartedError|FinishedError)|Mi(splaced(XMLDeclarationError|CDATAEndStringError)|xedContentDeclNot(StartedError|FinishedError))|S(t(andaloneValueError|ringNot(StartedError|ClosedError))|paceRequiredError|eparatorRequiredError)|N(MTOKENRequiredError|o(t(ationNot(StartedError|FinishedError)|WellBalancedError)|DTDError)|amespaceDeclarationError|AMERequiredError)|C(haracterRef(In(DTDError|PrologError|EpilogError)|AtEOFError)|o(nditionalSectionNot(StartedError|FinishedError)|mment(NotFinishedError|ContainsDoubleHyphenError))|DATANotFinishedError)|TagNameMismatchError|In(ternalError|valid(HexCharacterRefError|C(haracter(RefError|InEntityError|Error)|onditionalSectionError)|DecimalCharacterRefError|URIError|Encoding(NameError|Error)))|OutOfMemoryError|D(ocumentStartError|elegateAbortedParseError|OCTYPEDeclNotFinishedError)|U(RI(RequiredError|FragmentError)|n(declaredEntityError|parsedEntityError|knownEncodingError|finishedTagError))|P(CDATARequiredError|ublicIdentifierRequiredError|arsedEntityRef(MissingSemiError|NoNameError|In(Internal(SubsetError|Error)|PrologError|EpilogError)|AtEOFError)|r(ocessingInstructionNot(StartedError|FinishedError)|ematureDocumentEndError))|E(n(codingNotSupportedError|tity(Ref(In(DTDError|PrologError|EpilogError)|erence(MissingSemiError|WithoutNameError)|LoopError|AtEOFError)|BoundaryError|Not(StartedError|FinishedError)|Is(ParameterError|ExternalError)|ValueRequiredError))|qualExpectedError|lementContentDeclNot(StartedError|FinishedError)|xt(ernalS(tandaloneEntityError|ubsetNotFinishedError)|raContentError)|mptyDocumentError)|L(iteralNot(StartedError|FinishedError)|T(RequiredError|SlashRequiredError)|essThanSymbolInAttributeError)|Attribute(RedefinedError|HasNoValueError|Not(StartedError|FinishedError)|ListNot(StartedError|FinishedError)))|rocessingInstructionKind)|E(ntity(GeneralKind|DeclarationKind|UnparsedKind|P(ar(sedKind|ameterKind)|redefined))|lement(Declaration(MixedKind|UndefinedKind|E(lementKind|mptyKind)|Kind|AnyKind)|Kind))|Attribute(N(MToken(sKind|Kind)|otationKind)|CDATAKind|ID(Ref(sKind|Kind)|Kind)|DeclarationKind|En(tit(yKind|iesKind)|umerationKind)|Kind))|M(i(n(XEdge|iaturizableWindowMask|YEdge|uteCalendarUnit)|terLineJoinStyle|ddleSubelement|xedState)|o(nthCalendarUnit|deSwitchFunctionKey|use(Moved(Mask)?|E(ntered(Mask)?|ventSubtype|xited(Mask)?))|veToBezierPathElement|mentary(ChangeButton|Push(Button|InButton)|Light(Button)?))|enuFunctionKey|a(c(intoshInterfaceStyle|OSRomanStringEncoding)|tchesPredicateOperatorType|ppedRead|x(XEdge|YEdge))|ACHOperatingSystem)|B(MPFileType|o(ttomTabsBezelBorder|ldFontMask|rderlessWindowMask|x(Se(condary|parator)|OldStyle|Primary))|uttLineCapStyle|e(zelBorder|velLineJoinStyle|low(Bottom|Top)|gin(sWith(Comparison|PredicateOperatorType)|FunctionKey))|lueControlTint|ack(spaceCharacter|tabTextMovement|ingStore(Retained|Buffered|Nonretained)|TabCharacter|wardsSearch|groundTab)|r(owser(NoColumnResizing|UserColumnResizing|AutoColumnResizing)|eakFunctionKey))|S(h(ift(JISStringEncoding|KeyMask)|ow(ControlGlyphs|InvisibleGlyphs)|adowlessSquareBezelStyle)|y(s(ReqFunctionKey|tem(D(omainMask|efined(Mask)?)|FunctionKey))|mbolStringEncoding)|c(a(nnedOption|le(None|ToFit|Proportionally))|r(oll(er(NoPart|Increment(Page|Line|Arrow)|Decrement(Page|Line|Arrow)|Knob(Slot)?|Arrows(M(inEnd|axEnd)|None|DefaultSetting))|Wheel(Mask)?|LockFunctionKey)|eenChangedEventType))|t(opFunctionKey|r(ingDrawing(OneShot|DisableScreenFontSubstitution|Uses(DeviceMetrics|FontLeading|LineFragmentOrigin))|eam(Status(Reading|NotOpen|Closed|Open(ing)?|Error|Writing|AtEnd)|Event(Has(BytesAvailable|SpaceAvailable)|None|OpenCompleted|E(ndEncountered|rrorOccurred)))))|i(ngle(DateMode|UnderlineStyle)|ze(DownFontAction|UpFontAction))|olarisOperatingSystem|unOSOperatingSystem|pecialPageOrder|e(condCalendarUnit|lect(By(Character|Paragraph|Word)|i(ng(Next|Previous)|onAffinity(Downstream|Upstream))|edTab|FunctionKey)|gmentSwitchTracking(Momentary|Select(One|Any)))|quareLineCapStyle|witchButton|ave(ToOperation|Op(tions(Yes|No|Ask)|eration)|AsOperation)|mall(SquareBezelStyle|C(ontrolSize|apsFontMask)|IconButtonBezelStyle))|H(ighlightModeMatrix|SBModeColorPanel|o(ur(Minute(SecondDatePickerElementFlag|DatePickerElementFlag)|CalendarUnit)|rizontalRuler|meFunctionKey)|TTPCookieAcceptPolicy(Never|OnlyFromMainDocumentDomain|Always)|e(lp(ButtonBezelStyle|KeyMask|FunctionKey)|avierFontAction)|PUXOperatingSystem)|Year(MonthDa(yDatePickerElementFlag|tePickerElementFlag)|CalendarUnit)|N(o(n(StandardCharacterSetFontMask|ZeroWindingRule|activatingPanelMask|LossyASCIIStringEncoding)|Border|t(ification(SuspensionBehavior(Hold|Coalesce|D(eliverImmediately|rop))|NoCoalescing|CoalescingOn(Sender|Name)|DeliverImmediately|PostToAllSessions)|PredicateType|EqualToPredicateOperatorType)|S(cr(iptError|ollerParts)|ubelement|pecifierError)|CellMask|T(itle|opLevelContainersSpecifierError|abs(BezelBorder|NoBorder|LineBorder))|I(nterfaceStyle|mage)|UnderlineStyle|FontChangeAction)|u(ll(Glyph|CellType)|m(eric(Search|PadKeyMask)|berFormatter(Round(Half(Down|Up|Even)|Ceiling|Down|Up|Floor)|Behavior(10|Default)|S(cientificStyle|pellOutStyle)|NoStyle|CurrencyStyle|DecimalStyle|P(ercentStyle|ad(Before(Suffix|Prefix)|After(Suffix|Prefix))))))|e(t(Services(BadArgumentError|NotFoundError|C(ollisionError|ancelledError)|TimeoutError|InvalidError|UnknownError|ActivityInProgress)|workDomainMask)|wlineCharacter|xt(StepInterfaceStyle|FunctionKey))|EXTSTEPStringEncoding|a(t(iveShortGlyphPacking|uralTextAlignment)|rrowFontMask))|C(hange(ReadOtherContents|GrayCell(Mask)?|BackgroundCell(Mask)?|Cleared|Done|Undone|Autosaved)|MYK(ModeColorPanel|ColorSpaceModel)|ircular(BezelStyle|Slider)|o(n(stantValueExpressionType|t(inuousCapacityLevelIndicatorStyle|entsCellMask|ain(sComparison|erSpecifierError)|rol(Glyph|KeyMask))|densedFontMask)|lor(Panel(RGBModeMask|GrayModeMask|HSBModeMask|C(MYKModeMask|olorListModeMask|ustomPaletteModeMask|rayonModeMask)|WheelModeMask|AllModesMask)|ListModeColorPanel)|reServiceDirectory|m(p(osite(XOR|Source(In|O(ut|ver)|Atop)|Highlight|C(opy|lear)|Destination(In|O(ut|ver)|Atop)|Plus(Darker|Lighter))|ressedFontMask)|mandKeyMask))|u(stom(SelectorPredicateOperatorType|PaletteModeColorPanel)|r(sor(Update(Mask)?|PointingDevice)|veToBezierPathElement))|e(nterT(extAlignment|abStopType)|ll(State|H(ighlighted|as(Image(Horizontal|OnLeftOrBottom)|OverlappingImage))|ChangesContents|Is(Bordered|InsetButton)|Disabled|Editable|LightsBy(Gray|Background|Contents)|AllowsMixedState))|l(ipPagination|o(s(ePathBezierPathElement|ableWindowMask)|ckAndCalendarDatePickerStyle)|ear(ControlTint|DisplayFunctionKey|LineFunctionKey))|a(seInsensitive(Search|PredicateOption)|n(notCreateScriptCommandError|cel(Button|TextMovement))|chesDirectory|lculation(NoError|Overflow|DivideByZero|Underflow|LossOfPrecision)|rriageReturnCharacter)|r(itical(Request|AlertStyle)|ayonModeColorPanel))|T(hick(SquareBezelStyle|erSquareBezelStyle)|ypesetter(Behavior|HorizontalTabAction|ContainerBreakAction|ZeroAdvancementAction|OriginalBehavior|ParagraphBreakAction|WhitespaceAction|L(ineBreakAction|atestBehavior))|i(ckMark(Right|Below|Left|Above)|tledWindowMask|meZoneDatePickerElementFlag)|o(olbarItemVisibilityPriority(Standard|High|User|Low)|pTabsBezelBorder|ggleButton)|IFF(Compression(N(one|EXT)|CCITTFAX(3|4)|OldJPEG|JPEG|PackBits|LZW)|FileType)|e(rminate(Now|Cancel|Later)|xt(Read(InapplicableDocumentTypeError|WriteErrorM(inimum|aximum))|Block(M(i(nimum(Height|Width)|ddleAlignment)|a(rgin|ximum(Height|Width)))|B(o(ttomAlignment|rder)|aselineAlignment)|Height|TopAlignment|P(ercentageValueType|adding)|Width|AbsoluteValueType)|StorageEdited(Characters|Attributes)|CellType|ured(RoundedBezelStyle|BackgroundWindowMask|SquareBezelStyle)|Table(FixedLayoutAlgorithm|AutomaticLayoutAlgorithm)|Field(RoundedBezel|SquareBezel|AndStepperDatePickerStyle)|WriteInapplicableDocumentTypeError|ListPrependEnclosingMarker))|woByteGlyphPacking|ab(Character|TextMovement|le(tP(oint(Mask|EventSubtype)?|roximity(Mask|EventSubtype)?)|Column(NoResizing|UserResizingMask|AutoresizingMask)|View(ReverseSequentialColumnAutoresizingStyle|GridNone|S(olid(HorizontalGridLineMask|VerticalGridLineMask)|equentialColumnAutoresizingStyle)|NoColumnAutoresizing|UniformColumnAutoresizingStyle|FirstColumnOnlyAutoresizingStyle|LastColumnOnlyAutoresizingStyle)))|rackModeMatrix)|I(n(sert(CharFunctionKey|FunctionKey|LineFunctionKey)|t(Type|ernalS(criptError|pecifierError))|dexSubelement|validIndexSpecifierError|formational(Request|AlertStyle)|PredicateOperatorType)|talicFontMask|SO(2022JPStringEncoding|Latin(1StringEncoding|2StringEncoding))|dentityMappingCharacterCollection|llegalTextMovement|mage(R(ight|ep(MatchesDevice|LoadStatus(ReadingHeader|Completed|InvalidData|Un(expectedEOF|knownType)|WillNeedAllData)))|Below|C(ellType|ache(BySize|Never|Default|Always))|Interpolation(High|None|Default|Low)|O(nly|verlaps)|Frame(Gr(oove|ayBezel)|Button|None|Photo)|L(oadStatus(ReadError|C(ompleted|ancelled)|InvalidData|UnexpectedEOF)|eft)|A(lign(Right|Bottom(Right|Left)?|Center|Top(Right|Left)?|Left)|bove)))|O(n(State|eByteGlyphPacking|OffButton|lyScrollerArrows)|ther(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|TextMovement)|SF1OperatingSystem|pe(n(GL(GO(Re(setLibrary|tainRenderers)|ClearFormatCache|FormatCacheSize)|PFA(R(obust|endererID)|M(inimumPolicy|ulti(sample|Screen)|PSafe|aximumPolicy)|BackingStore|S(creenMask|te(ncilSize|reo)|ingleRenderer|upersample|ample(s|Buffers|Alpha))|NoRecovery|C(o(lor(Size|Float)|mpliant)|losestPolicy)|OffScreen|D(oubleBuffer|epthSize)|PixelBuffer|VirtualScreenCount|FullScreen|Window|A(cc(umSize|elerated)|ux(Buffers|DepthStencil)|l(phaSize|lRenderers))))|StepUnicodeReservedBase)|rationNotSupportedForKeyS(criptError|pecifierError))|ffState|KButton|rPredicateType|bjC(B(itfield|oolType)|S(hortType|tr(ingType|uctType)|electorType)|NoType|CharType|ObjectType|DoubleType|UnionType|PointerType|VoidType|FloatType|Long(Type|longType)|ArrayType))|D(i(s(c(losureBezelStyle|reteCapacityLevelIndicatorStyle)|playWindowRunLoopOrdering)|acriticInsensitivePredicateOption|rect(Selection|PredicateModifier))|o(c(ModalWindowMask|ument(Directory|ationDirectory))|ubleType|wn(TextMovement|ArrowFunctionKey))|e(s(cendingPageOrder|ktopDirectory)|cimalTabStopType|v(ice(NColorSpaceModel|IndependentModifierFlagsMask)|eloper(Directory|ApplicationDirectory))|fault(ControlTint|TokenStyle)|lete(Char(acter|FunctionKey)|FunctionKey|LineFunctionKey)|moApplicationDirectory)|a(yCalendarUnit|teFormatter(MediumStyle|Behavior(10|Default)|ShortStyle|NoStyle|FullStyle|LongStyle))|ra(wer(Clos(ingState|edState)|Open(ingState|State))|gOperation(Generic|Move|None|Copy|Delete|Private|Every|Link|All)))|U(ser(CancelledError|D(irectory|omainMask)|FunctionKey)|RL(Handle(NotLoaded|Load(Succeeded|InProgress|Failed))|CredentialPersistence(None|Permanent|ForSession))|n(scaledWindowMask|cachedRead|i(codeStringEncoding|talicFontMask|fiedTitleAndToolbarWindowMask)|d(o(CloseGroupingRunLoopOrdering|FunctionKey)|e(finedDateComponent|rline(Style(Single|None|Thick|Double)|Pattern(Solid|D(ot|ash(Dot(Dot)?)?)))))|known(ColorSpaceModel|P(ointingDevice|ageOrder)|KeyS(criptError|pecifierError))|boldFontMask)|tilityWindowMask|TF8StringEncoding|p(dateWindowsRunLoopOrdering|TextMovement|ArrowFunctionKey))|J(ustifiedTextAlignment|PEG(2000FileType|FileType)|apaneseEUC(GlyphPacking|StringEncoding))|P(o(s(t(Now|erFontMask|WhenIdle|ASAP)|iti(on(Replace|Be(fore|ginning)|End|After)|ve(IntType|DoubleType|FloatType)))|pUp(NoArrow|ArrowAt(Bottom|Center))|werOffEventType|rtraitOrientation)|NGFileType|ush(InCell(Mask)?|OnPushOffButton)|e(n(TipMask|UpperSideMask|PointingDevice|LowerSideMask)|riodic(Mask)?)|P(S(caleField|tatus(Title|Field)|aveButton)|N(ote(Title|Field)|ame(Title|Field))|CopiesField|TitleField|ImageButton|OptionsButton|P(a(perFeedButton|ge(Range(To|From)|ChoiceMatrix))|reviewButton)|LayoutButton)|lainTextTokenStyle|a(useFunctionKey|ragraphSeparatorCharacter|ge(DownFunctionKey|UpFunctionKey))|r(int(ing(ReplyLater|Success|Cancelled|Failure)|ScreenFunctionKey|erTable(NotFound|OK|Error)|FunctionKey)|o(p(ertyList(XMLFormat|MutableContainers(AndLeaves)?|BinaryFormat|Immutable|OpenStepFormat)|rietaryStringEncoding)|gressIndicator(BarStyle|SpinningStyle|Preferred(SmallThickness|Thickness|LargeThickness|AquaThickness)))|e(ssedTab|vFunctionKey))|L(HeightForm|CancelButton|TitleField|ImageButton|O(KButton|rientationMatrix)|UnitsButton|PaperNameButton|WidthForm))|E(n(terCharacter|d(sWith(Comparison|PredicateOperatorType)|FunctionKey))|v(e(nOddWindingRule|rySubelement)|aluatedObjectExpressionType)|qualTo(Comparison|PredicateOperatorType)|ra(serPointingDevice|CalendarUnit|DatePickerElementFlag)|x(clude(10|QuickDrawElementsIconCreationOption)|pandedFontMask|ecuteFunctionKey))|V(i(ew(M(in(XMargin|YMargin)|ax(XMargin|YMargin))|HeightSizable|NotSizable|WidthSizable)|aPanelFontAction)|erticalRuler|a(lidationErrorM(inimum|aximum)|riableExpressionType))|Key(SpecifierEvaluationScriptError|Down(Mask)?|Up(Mask)?|PathExpressionType|Value(MinusSetMutation|SetSetMutation|Change(Re(placement|moval)|Setting|Insertion)|IntersectSetMutation|ObservingOption(New|Old)|UnionSetMutation|ValidationError))|QTMovie(NormalPlayback|Looping(BackAndForthPlayback|Playback))|F(1(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|7FunctionKey|i(nd(PanelAction(Replace(A(ndFind|ll(InSelection)?))?|S(howFindPanel|e(tFindString|lectAll(InSelection)?))|Next|Previous)|FunctionKey)|tPagination|le(Read(No(SuchFileError|PermissionError)|CorruptFileError|In(validFileNameError|applicableStringEncodingError)|Un(supportedSchemeError|knownError))|HandlingPanel(CancelButton|OKButton)|NoSuchFileError|ErrorM(inimum|aximum)|Write(NoPermissionError|In(validFileNameError|applicableStringEncodingError)|OutOfSpaceError|Un(supportedSchemeError|knownError))|LockingError)|xedPitchFontMask)|2(1FunctionKey|7FunctionKey|2FunctionKey|8FunctionKey|3FunctionKey|9FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey|6FunctionKey)|o(nt(Mo(noSpaceTrait|dernSerifsClass)|BoldTrait|S(ymbolicClass|criptsClass|labSerifsClass|ansSerifClass)|C(o(ndensedTrait|llectionApplicationOnlyMask)|larendonSerifsClass)|TransitionalSerifsClass|I(ntegerAdvancementsRenderingMode|talicTrait)|O(ldStyleSerifsClass|rnamentalsClass)|DefaultRenderingMode|U(nknownClass|IOptimizedTrait)|Panel(S(hadowEffectModeMask|t(andardModesMask|rikethroughEffectModeMask)|izeModeMask)|CollectionModeMask|TextColorEffectModeMask|DocumentColorEffectModeMask|UnderlineEffectModeMask|FaceModeMask|All(ModesMask|EffectsModeMask))|ExpandedTrait|VerticalTrait|F(amilyClassMask|reeformSerifsClass)|Antialiased(RenderingMode|IntegerAdvancementsRenderingMode))|cusRing(Below|Type(None|Default|Exterior)|Only|Above)|urByteGlyphPacking|rm(attingError(M(inimum|aximum))?|FeedCharacter))|8FunctionKey|unction(ExpressionType|KeyMask)|3(1FunctionKey|2FunctionKey|3FunctionKey|4FunctionKey|5FunctionKey|FunctionKey|0FunctionKey)|9FunctionKey|4FunctionKey|P(RevertButton|S(ize(Title|Field)|etButton)|CurrentField|Preview(Button|Field))|l(oat(ingPointSamplesBitmapFormat|Type)|agsChanged(Mask)?)|axButton|5FunctionKey|6FunctionKey)|W(heelModeColorPanel|indow(s(NTOperatingSystem|CP125(1StringEncoding|2StringEncoding|3StringEncoding|4StringEncoding|0StringEncoding)|95(InterfaceStyle|OperatingSystem))|M(iniaturizeButton|ovedEventType)|Below|CloseButton|ToolbarButton|ZoomButton|Out|DocumentIconButton|ExposedEventType|Above)|orkspaceLaunch(NewInstance|InhibitingBackgroundOnly|Default|PreferringClassic|WithoutA(ctivation|ddingToRecents)|A(sync|nd(Hide(Others)?|Print)|llowingClassicStartup))|eek(day(CalendarUnit|OrdinalCalendarUnit)|CalendarUnit)|a(ntsBidiLevels|rningAlertStyle)|r(itingDirection(RightToLeft|Natural|LeftToRight)|apCalendarComponents))|L(i(stModeMatrix|ne(Moves(Right|Down|Up|Left)|B(order|reakBy(C(harWrapping|lipping)|Truncating(Middle|Head|Tail)|WordWrapping))|S(eparatorCharacter|weep(Right|Down|Up|Left))|ToBezierPathElement|DoesntMove|arSlider)|teralSearch|kePredicateOperatorType|ghterFontAction|braryDirectory)|ocalDomainMask|e(ssThan(Comparison|OrEqualTo(Comparison|PredicateOperatorType)|PredicateOperatorType)|ft(Mouse(D(own(Mask)?|ragged(Mask)?)|Up(Mask)?)|T(ext(Movement|Alignment)|ab(sBezelBorder|StopType))|ArrowFunctionKey))|a(yout(RightToLeft|NotDone|CantFit|OutOfGlyphs|Done|LeftToRight)|ndscapeOrientation)|ABColorSpaceModel)|A(sc(iiWithDoubleByteEUCGlyphPacking|endingPageOrder)|n(y(Type|PredicateModifier|EventMask)|choredSearch|imation(Blocking|Nonblocking(Threaded)?|E(ffect(DisappearingItemDefault|Poof)|ase(In(Out)?|Out))|Linear)|dPredicateType)|t(Bottom|tachmentCharacter|omicWrite|Top)|SCIIStringEncoding|d(obe(GB1CharacterCollection|CNS1CharacterCollection|Japan(1CharacterCollection|2CharacterCollection)|Korea1CharacterCollection)|dTraitFontAction|minApplicationDirectory)|uto(saveOperation|Pagination)|pp(lication(SupportDirectory|D(irectory|e(fined(Mask)?|legateReply(Success|Cancel|Failure)|activatedEventType))|ActivatedEventType)|KitDefined(Mask)?)|l(ternateKeyMask|pha(ShiftKeyMask|NonpremultipliedBitmapFormat|FirstBitmapFormat)|ert(SecondButtonReturn|ThirdButtonReturn|OtherReturn|DefaultReturn|ErrorReturn|FirstButtonReturn|AlternateReturn)|l(ScrollerParts|DomainsMask|PredicateModifier|LibrariesDirectory|ApplicationsDirectory))|rgument(sWrongScriptError|EvaluationScriptError)|bove(Bottom|Top)|WTEventType))\\b",
+ "name": "support.constant.cocoa.objcpp"
+ },
+ "anonymous_pattern_4": {
+ "begin": "\\b(id)\\s*(?=<)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.objcpp"
+ }
+ },
+ "end": "(?<=>)",
+ "name": "meta.id-with-protocol.objcpp",
+ "patterns": [
+ {
+ "include": "#protocol_list"
+ }
+ ]
+ },
+ "anonymous_pattern_5": {
+ "match": "\\b(NS_DURING|NS_HANDLER|NS_ENDHANDLER)\\b",
+ "name": "keyword.control.macro.objcpp"
+ },
+ "anonymous_pattern_7": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.keyword.objcpp"
+ }
+ },
+ "match": "(@)(try|catch|finally|throw)\\b",
+ "name": "keyword.control.exception.objcpp"
+ },
+ "anonymous_pattern_8": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.keyword.objcpp"
+ }
+ },
+ "match": "(@)(synchronized)\\b",
+ "name": "keyword.control.synchronize.objcpp"
+ },
+ "anonymous_pattern_9": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.keyword.objcpp"
+ }
+ },
+ "match": "(@)(required|optional)\\b",
+ "name": "keyword.control.protocol-specification.objcpp"
+ },
+ "apple_foundation_functional_macros": {
+ "begin": "(\\b(?:API_AVAILABLE|API_DEPRECATED|API_UNAVAILABLE|NS_AVAILABLE|NS_AVAILABLE_MAC|NS_AVAILABLE_IOS|NS_DEPRECATED|NS_DEPRECATED_MAC|NS_DEPRECATED_IOS|NS_SWIFT_NAME))(?:(?:\\s)+)?(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.preprocessor.apple-foundation.objcpp"
+ },
+ "2": {
+ "name": "punctuation.section.macro.arguments.begin.bracket.round.apple-foundation.objcpp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.macro.arguments.end.bracket.round.apple-foundation.objcpp"
+ }
+ },
+ "name": "meta.preprocessor.macro.callable.apple-foundation.objcpp",
+ "patterns": [
+ {
+ "include": "#c_lang"
+ }
+ ]
+ },
+ "bracketed_content": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.begin.objcpp"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.end.objcpp"
+ }
+ },
+ "name": "meta.bracketed.objcpp",
+ "patterns": [
+ {
+ "begin": "(?=predicateWithFormat:)(?<=NSPredicate )(predicateWithFormat:)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.any-method.objcpp"
+ },
+ "2": {
+ "name": "punctuation.separator.arguments.objcpp"
+ }
+ },
+ "end": "(?=\\])",
+ "name": "meta.function-call.predicate.objcpp",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.arguments.objcpp"
+ }
+ },
+ "match": "\\bargument(Array|s)(:)",
+ "name": "support.function.any-method.name-of-parameter.objcpp"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.arguments.objcpp"
+ }
+ },
+ "match": "\\b\\w+(:)",
+ "name": "invalid.illegal.unknown-method.objcpp"
+ },
+ {
+ "begin": "@\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.double.objcpp",
+ "patterns": [
+ {
+ "match": "\\b(AND|OR|NOT|IN)\\b",
+ "name": "keyword.operator.logical.predicate.cocoa.objcpp"
+ },
+ {
+ "match": "\\b(ALL|ANY|SOME|NONE)\\b",
+ "name": "constant.language.predicate.cocoa.objcpp"
+ },
+ {
+ "match": "\\b(NULL|NIL|SELF|TRUE|YES|FALSE|NO|FIRST|LAST|SIZE)\\b",
+ "name": "constant.language.predicate.cocoa.objcpp"
+ },
+ {
+ "match": "\\b(MATCHES|CONTAINS|BEGINSWITH|ENDSWITH|BETWEEN)\\b",
+ "name": "keyword.operator.comparison.predicate.cocoa.objcpp"
+ },
+ {
+ "match": "\\bC(ASEINSENSITIVE|I)\\b",
+ "name": "keyword.other.modifier.predicate.cocoa.objcpp"
+ },
+ {
+ "match": "\\b(ANYKEY|SUBQUERY|CAST|TRUEPREDICATE|FALSEPREDICATE)\\b",
+ "name": "keyword.other.predicate.cocoa.objcpp"
+ },
+ {
+ "match": "\\\\(\\\\|[abefnrtv'\"?]|[0-3]\\d{,2}|[4-7]\\d?|x[a-zA-Z0-9]+)",
+ "name": "constant.character.escape.objcpp"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unknown-escape.objcpp"
+ }
+ ]
+ },
+ {
+ "include": "#special_variables"
+ },
+ {
+ "include": "#c_functions"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "(?=\\w)(?<=[\\w\\])\"] )(\\w+(?:(:)|(?=\\])))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.any-method.objcpp"
+ },
+ "2": {
+ "name": "punctuation.separator.arguments.objcpp"
+ }
+ },
+ "end": "(?=\\])",
+ "name": "meta.function-call.objcpp",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.arguments.objcpp"
+ }
+ },
+ "match": "\\b\\w+(:)",
+ "name": "support.function.any-method.name-of-parameter.objcpp"
+ },
+ {
+ "include": "#special_variables"
+ },
+ {
+ "include": "#c_functions"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "include": "#special_variables"
+ },
+ {
+ "include": "#c_functions"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "c_functions": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.whitespace.support.function.leading.objcpp"
+ },
+ "2": {
+ "name": "support.function.C99.objcpp"
+ }
+ },
+ "match": "(\\s*)\\b(hypot(f|l)?|s(scanf|ystem|nprintf|ca(nf|lb(n(f|l)?|ln(f|l)?))|i(n(h(f|l)?|f|l)?|gn(al|bit))|tr(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?)|error|pbrk|ftime|len|rchr|xfrm)|printf|et(jmp|vbuf|locale|buf)|qrt(f|l)?|w(scanf|printf)|rand)|n(e(arbyint(f|l)?|xt(toward(f|l)?|after(f|l)?))|an(f|l)?)|c(s(in(h(f|l)?|f|l)?|qrt(f|l)?)|cos(h(f)?|f|l)?|imag(f|l)?|t(ime|an(h(f|l)?|f|l)?)|o(s(h(f|l)?|f|l)?|nj(f|l)?|pysign(f|l)?)|p(ow(f|l)?|roj(f|l)?)|e(il(f|l)?|xp(f|l)?)|l(o(ck|g(f|l)?)|earerr)|a(sin(h(f|l)?|f|l)?|cos(h(f|l)?|f|l)?|tan(h(f|l)?|f|l)?|lloc|rg(f|l)?|bs(f|l)?)|real(f|l)?|brt(f|l)?)|t(ime|o(upper|lower)|an(h(f|l)?|f|l)?|runc(f|l)?|gamma(f|l)?|mp(nam|file))|i(s(space|n(ormal|an)|cntrl|inf|digit|u(nordered|pper)|p(unct|rint)|finite|w(space|c(ntrl|type)|digit|upper|p(unct|rint)|lower|al(num|pha)|graph|xdigit|blank)|l(ower|ess(equal|greater)?)|al(num|pha)|gr(eater(equal)?|aph)|xdigit|blank)|logb(f|l)?|max(div|abs))|di(v|fftime)|_Exit|unget(c|wc)|p(ow(f|l)?|ut(s|c(har)?|wc(har)?)|error|rintf)|e(rf(c(f|l)?|f|l)?|x(it|p(2(f|l)?|f|l|m1(f|l)?)?))|v(s(scanf|nprintf|canf|printf|w(scanf|printf))|printf|f(scanf|printf|w(scanf|printf))|w(scanf|printf)|a_(start|copy|end|arg))|qsort|f(s(canf|e(tpos|ek))|close|tell|open|dim(f|l)?|p(classify|ut(s|c|w(s|c))|rintf)|e(holdexcept|set(e(nv|xceptflag)|round)|clearexcept|testexcept|of|updateenv|r(aiseexcept|ror)|get(e(nv|xceptflag)|round))|flush|w(scanf|ide|printf|rite)|loor(f|l)?|abs(f|l)?|get(s|c|pos|w(s|c))|re(open|e|ad|xp(f|l)?)|m(in(f|l)?|od(f|l)?|a(f|l|x(f|l)?)?))|l(d(iv|exp(f|l)?)|o(ngjmp|cal(time|econv)|g(1(p(f|l)?|0(f|l)?)|2(f|l)?|f|l|b(f|l)?)?)|abs|l(div|abs|r(int(f|l)?|ound(f|l)?))|r(int(f|l)?|ound(f|l)?)|gamma(f|l)?)|w(scanf|c(s(s(tr|pn)|nc(py|at|mp)|c(spn|hr|oll|py|at|mp)|to(imax|d|u(l(l)?|max)|k|f|l(d|l)?|mbs)|pbrk|ftime|len|r(chr|tombs)|xfrm)|to(b|mb)|rtomb)|printf|mem(set|c(hr|py|mp)|move))|a(s(sert|ctime|in(h(f|l)?|f|l)?)|cos(h(f|l)?|f|l)?|t(o(i|f|l(l)?)|exit|an(h(f|l)?|2(f|l)?|f|l)?)|b(s|ort))|g(et(s|c(har)?|env|wc(har)?)|mtime)|r(int(f|l)?|ound(f|l)?|e(name|alloc|wind|m(ove|quo(f|l)?|ainder(f|l)?))|a(nd|ise))|b(search|towc)|m(odf(f|l)?|em(set|c(hr|py|mp)|move)|ktime|alloc|b(s(init|towcs|rtowcs)|towc|len|r(towc|len))))\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.whitespace.function-call.leading.objcpp"
+ },
+ "2": {
+ "name": "support.function.any-method.objcpp"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.objcpp"
+ }
+ },
+ "match": "(?x) (?: (?= \\s ) (?:(?<=else|new|return) | (?<!\\w)) (\\s+))?\n \t\t\t(\\b \n \t\t\t\t(?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\\s*\\()(?:(?!NS)[A-Za-z_][A-Za-z0-9_]*+\\b | :: )++ # actual name\n \t\t\t)\n \t\t\t \\s*(\\()",
+ "name": "meta.function-call.objcpp"
+ }
+ ]
+ },
+ "c_lang": {
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-enabled"
+ },
+ {
+ "include": "#preprocessor-rule-disabled"
+ },
+ {
+ "include": "#preprocessor-rule-conditional"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#switch_statement"
+ },
+ {
+ "match": "\\b(break|continue|do|else|for|goto|if|_Pragma|return|while)\\b",
+ "name": "keyword.control.objcpp"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "match": "typedef",
+ "name": "keyword.other.typedef.objcpp"
+ },
+ {
+ "match": "\\bin\\b",
+ "name": "keyword.other.in.objcpp"
+ },
+ {
+ "match": "\\b(const|extern|register|restrict|static|volatile|inline|__block)\\b",
+ "name": "storage.modifier.objcpp"
+ },
+ {
+ "match": "\\bk[A-Z]\\w*\\b",
+ "name": "constant.other.variable.mac-classic.objcpp"
+ },
+ {
+ "match": "\\bg[A-Z]\\w*\\b",
+ "name": "variable.other.readwrite.global.mac-classic.objcpp"
+ },
+ {
+ "match": "\\bs[A-Z]\\w*\\b",
+ "name": "variable.other.readwrite.static.mac-classic.objcpp"
+ },
+ {
+ "match": "\\b(NULL|true|false|TRUE|FALSE)\\b",
+ "name": "constant.language.objcpp"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#special_variables"
+ },
+ {
+ "begin": "(?x)\n^\\s* ((\\#)\\s*define) \\s+\t# define\n((?<id>[a-zA-Z_$][\\w$]*))\t # macro name\n(?:\n (\\()\n\t(\n\t \\s* \\g<id> \\s*\t\t # first argument\n\t ((,) \\s* \\g<id> \\s*)* # additional arguments\n\t (?:\\.\\.\\.)?\t\t\t# varargs ellipsis?\n\t)\n (\\))\n)?",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.define.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ },
+ "3": {
+ "name": "entity.name.function.preprocessor.objcpp"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.begin.objcpp"
+ },
+ "6": {
+ "name": "variable.parameter.preprocessor.objcpp"
+ },
+ "8": {
+ "name": "punctuation.separator.parameters.objcpp"
+ },
+ "9": {
+ "name": "punctuation.definition.parameters.end.objcpp"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.macro.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-contents"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*((#)\\s*(error|warning))\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.diagnostic.$3.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.diagnostic.objcpp",
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": "\"|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.double.objcpp",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": "'|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.single.objcpp",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "[^'\"]",
+ "end": "(?<!\\\\)(?=\\s*\\n)",
+ "name": "string.unquoted.single.objcpp",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*((#)\\s*(include(?:_next)?|import))\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.$3.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.include.objcpp",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.double.include.objcpp"
+ },
+ {
+ "begin": "<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.other.lt-gt.include.objcpp"
+ }
+ ]
+ },
+ {
+ "include": "#pragma-mark"
+ },
+ {
+ "begin": "^\\s*((#)\\s*line)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.line.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(?:((#)\\s*undef))\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.undef.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "match": "[a-zA-Z_$][\\w$]*",
+ "name": "entity.name.function.preprocessor.objcpp"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(?:((#)\\s*pragma))\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.pragma.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.pragma.objcpp",
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "match": "[a-zA-Z_$][\\w\\-$]*",
+ "name": "entity.other.attribute-name.pragma.preprocessor.objcpp"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "match": "\\b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\\b",
+ "name": "support.type.sys-types.objcpp"
+ },
+ {
+ "match": "\\b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\\b",
+ "name": "support.type.pthread.objcpp"
+ },
+ {
+ "match": "(?x) \\b\n(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t\n|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t\n|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t\n|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t\n|uintmax_t|uintmax_t)\n\\b",
+ "name": "support.type.stdint.objcpp"
+ },
+ {
+ "match": "\\b(noErr|kNilOptions|kInvalidID|kVariableLengthArray)\\b",
+ "name": "support.constant.mac-classic.objcpp"
+ },
+ {
+ "match": "(?x) \\b\n(AbsoluteTime|Boolean|Byte|ByteCount|ByteOffset|BytePtr|CompTimeValue|ConstLogicalAddress|ConstStrFileNameParam\n|ConstStringPtr|Duration|Fixed|FixedPtr|Float32|Float32Point|Float64|Float80|Float96|FourCharCode|Fract|FractPtr\n|Handle|ItemCount|LogicalAddress|OptionBits|OSErr|OSStatus|OSType|OSTypePtr|PhysicalAddress|ProcessSerialNumber\n|ProcessSerialNumberPtr|ProcHandle|Ptr|ResType|ResTypePtr|ShortFixed|ShortFixedPtr|SignedByte|SInt16|SInt32|SInt64\n|SInt8|Size|StrFileName|StringHandle|StringPtr|TimeBase|TimeRecord|TimeScale|TimeValue|TimeValue64|UInt16|UInt32\n|UInt64|UInt8|UniChar|UniCharCount|UniCharCountPtr|UniCharPtr|UnicodeScalarValue|UniversalProcHandle|UniversalProcPtr\n|UnsignedFixed|UnsignedFixedPtr|UnsignedWide|UTF16Char|UTF32Char|UTF8Char)\n\\b",
+ "name": "support.type.mac-classic.objcpp"
+ },
+ {
+ "match": "\\b([A-Za-z0-9_]+_t)\\b",
+ "name": "support.type.posix-reserved.objcpp"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#parens"
+ },
+ {
+ "name": "meta.function.objcpp",
+ "begin": "(?<!\\w)(?!\\s*(?:not|compl|sizeof|not_eq|bitand|xor|bitor|and|or|and_eq|xor_eq|or_eq|alignof|alignas|_Alignof|_Alignas|while|for|do|if|else|goto|switch|return|break|case|continue|default|void|char|short|int|signed|unsigned|long|float|double|bool|_Bool|_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|NULL|true|false|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t|struct|union|enum|typedef|auto|register|static|extern|thread_local|inline|_Noreturn|const|volatile|restrict|_Atomic)\\s*\\()(?=[a-zA-Z_]\\w*\\s*\\()",
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#function-innards"
+ }
+ ]
+ },
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "name": "meta.bracket.square.access.objcpp",
+ "begin": "([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))?(\\[)(?!\\])",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.object.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.begin.bracket.square.objcpp"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.square.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ {
+ "name": "storage.modifier.array.bracket.square.objcpp",
+ "match": "\\[\\s*\\]"
+ },
+ {
+ "match": ";",
+ "name": "punctuation.terminator.statement.objcpp"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.objcpp"
+ }
+ ],
+ "repository": {
+ "probably_a_parameter": {
+ "match": "(?<=(?:[a-zA-Z_0-9] |[&*>\\]\\)]))\\s*([a-zA-Z_]\\w*)\\s*(?=(?:\\[\\]\\s*)?(?:,|\\)))",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.probably.objcpp"
+ }
+ }
+ },
+ "access-method": {
+ "name": "meta.function-call.member.objcpp",
+ "begin": "([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))\\s*(?:(\\.)|(->))((?:(?:[a-zA-Z_][a-zA-Z_0-9]*)\\s*(?:(?:\\.)|(?:->)))*)\\s*([a-zA-Z_][a-zA-Z_0-9]*)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.object.objcpp"
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.objcpp"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.objcpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.dot-access.objcpp"
+ },
+ {
+ "match": "->",
+ "name": "punctuation.separator.pointer-access.objcpp"
+ },
+ {
+ "match": "[a-zA-Z_][a-zA-Z_0-9]*",
+ "name": "variable.object.objcpp"
+ },
+ {
+ "name": "everything.else.objcpp",
+ "match": ".+"
+ }
+ ]
+ },
+ "5": {
+ "name": "entity.name.function.member.objcpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.member.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.member.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ "block": {
+ "patterns": [
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objcpp"
+ }
+ },
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.objcpp"
+ }
+ },
+ "name": "meta.block.objcpp",
+ "patterns": [
+ {
+ "include": "#block_innards"
+ }
+ ]
+ }
+ ]
+ },
+ "block_innards": {
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-enabled-block"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-block"
+ },
+ {
+ "include": "#preprocessor-rule-conditional-block"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#c_function_call"
+ },
+ {
+ "name": "meta.initialization.objcpp",
+ "begin": "(?x)\n(?:\n (?:\n\t(?=\\s)(?<!else|new|return)\n\t(?<=\\w) \\s+(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas) # or word + space before name\n )\n)\n(\n (?:[A-Za-z_][A-Za-z0-9_]*+ | :: )++ # actual name\n |\n (?:(?<=operator) (?:[-*&<>=+!]+ | \\(\\) | \\[\\]))\n)\n\\s*(\\() # opening bracket",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.objcpp"
+ },
+ "2": {
+ "name": "punctuation.section.parens.begin.bracket.round.initialization.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.initialization.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objcpp"
+ }
+ },
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ {
+ "include": "#parens-block"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "c_function_call": {
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(?=\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)",
+ "end": "(?<=\\))(?!\\w)",
+ "name": "meta.function-call.objcpp",
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "meta.toc-list.banner.block.objcpp"
+ }
+ },
+ "match": "^/\\* =(\\s*.*?)\\s*= \\*/$\\n?",
+ "name": "comment.block.objcpp"
+ },
+ {
+ "begin": "/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.objcpp"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.objcpp"
+ }
+ },
+ "name": "comment.block.objcpp"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "meta.toc-list.banner.line.objcpp"
+ }
+ },
+ "match": "^// =(\\s*.*?)\\s*=\\s*$\\n?",
+ "name": "comment.line.banner.objcpp"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.objcpp"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.objcpp"
+ }
+ },
+ "end": "(?=\\n)",
+ "name": "comment.line.double-slash.objcpp",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "disabled": {
+ "begin": "^\\s*#\\s*if(n?def)?\\b.*$",
+ "end": "^\\s*#\\s*endif\\b",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ "line_continuation_character": {
+ "patterns": [
+ {
+ "match": "(\\\\)\\n",
+ "captures": {
+ "1": {
+ "name": "constant.character.escape.line-continuation.objcpp"
+ }
+ }
+ }
+ ]
+ },
+ "parens": {
+ "name": "meta.parens.objcpp",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "parens-block": {
+ "name": "meta.parens.block.objcpp",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block_innards"
+ },
+ {
+ "match": "(?-mix:(?<!:):(?!:))",
+ "name": "punctuation.range-based.objcpp"
+ }
+ ]
+ },
+ "pragma-mark": {
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.pragma.objcpp"
+ },
+ "2": {
+ "name": "keyword.control.directive.pragma.pragma-mark.objcpp"
+ },
+ "3": {
+ "name": "punctuation.definition.directive.objcpp"
+ },
+ "4": {
+ "name": "entity.name.tag.pragma-mark.objcpp"
+ }
+ },
+ "match": "^\\s*(((#)\\s*pragma\\s+mark)\\s+(.*))",
+ "name": "meta.section.objcpp"
+ },
+ "operators": {
+ "patterns": [
+ {
+ "match": "(?<![\\w$])(sizeof)(?![\\w$])",
+ "name": "keyword.operator.sizeof.objcpp"
+ },
+ {
+ "match": "--",
+ "name": "keyword.operator.decrement.objcpp"
+ },
+ {
+ "match": "\\+\\+",
+ "name": "keyword.operator.increment.objcpp"
+ },
+ {
+ "match": "%=|\\+=|-=|\\*=|(?<!\\()/=",
+ "name": "keyword.operator.assignment.compound.objcpp"
+ },
+ {
+ "match": "&=|\\^=|<<=|>>=|\\|=",
+ "name": "keyword.operator.assignment.compound.bitwise.objcpp"
+ },
+ {
+ "match": "<<|>>",
+ "name": "keyword.operator.bitwise.shift.objcpp"
+ },
+ {
+ "match": "!=|<=|>=|==|<|>",
+ "name": "keyword.operator.comparison.objcpp"
+ },
+ {
+ "match": "&&|!|\\|\\|",
+ "name": "keyword.operator.logical.objcpp"
+ },
+ {
+ "match": "&|\\||\\^|~",
+ "name": "keyword.operator.objcpp"
+ },
+ {
+ "match": "=",
+ "name": "keyword.operator.assignment.objcpp"
+ },
+ {
+ "match": "%|\\*|/|-|\\+",
+ "name": "keyword.operator.objcpp"
+ },
+ {
+ "begin": "(\\?)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.objcpp"
+ }
+ },
+ "end": "(:)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.double.objcpp",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#string_placeholder"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.single.objcpp",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ }
+ ]
+ },
+ "string_escaped_char": {
+ "patterns": [
+ {
+ "match": "(?x)\\\\ (\n\\\\\t\t\t |\n[abefnprtv'\"?] |\n[0-3]\\d{,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} )",
+ "name": "constant.character.escape.objcpp"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unknown-escape.objcpp"
+ }
+ ]
+ },
+ "string_placeholder": {
+ "patterns": [
+ {
+ "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",
+ "name": "constant.other.placeholder.objcpp"
+ },
+ {
+ "match": "(%)(?!\"\\s*(PRI|SCN))",
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.placeholder.objcpp"
+ }
+ }
+ }
+ ]
+ },
+ "storage_types": {
+ "patterns": [
+ {
+ "match": "(?-mix:(?<!\\w)(?:void|char|short|int|signed|unsigned|long|float|double|bool|_Bool)(?!\\w))",
+ "name": "storage.type.built-in.primitive.objcpp"
+ },
+ {
+ "match": "(?-mix:(?<!\\w)(?:_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t)(?!\\w))",
+ "name": "storage.type.built-in.objcpp"
+ },
+ {
+ "match": "(?-mix:\\b(asm|__asm__|enum|struct|union)\\b)",
+ "name": "storage.type.$1.objcpp"
+ }
+ ]
+ },
+ "vararg_ellipses": {
+ "match": "(?<!\\.)\\.\\.\\.(?!\\.)",
+ "name": "punctuation.vararg-ellipses.objcpp"
+ },
+ "preprocessor-rule-conditional": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if(?:n?def)?\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-enabled-elif"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-else"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-elif"
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "match": "^\\s*#\\s*(else|elif|endif)\\b",
+ "captures": {
+ "0": {
+ "name": "invalid.illegal.stray-$1.objcpp"
+ }
+ }
+ }
+ ]
+ },
+ "preprocessor-rule-conditional-block": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if(?:n?def)?\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-enabled-elif-block"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-else-block"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-elif"
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ {
+ "match": "^\\s*#\\s*(else|elif|endif)\\b",
+ "captures": {
+ "0": {
+ "name": "invalid.illegal.stray-$1.objcpp"
+ }
+ }
+ }
+ ]
+ },
+ "preprocessor-rule-conditional-line": {
+ "patterns": [
+ {
+ "match": "(?:\\bdefined\\b\\s*$)|(?:\\bdefined\\b(?=\\s*\\(*\\s*(?:(?!defined\\b)[a-zA-Z_$][\\w$]*\\b)\\s*\\)*\\s*(?:\\n|//|/\\*|\\?|\\:|&&|\\|\\||\\\\\\s*\\n)))",
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ {
+ "match": "\\bdefined\\b",
+ "name": "invalid.illegal.macro-name.objcpp"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "begin": "\\?",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.objcpp"
+ }
+ },
+ "end": ":",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "match": "\\b(NULL|true|false|TRUE|FALSE)\\b",
+ "name": "constant.language.objcpp"
+ },
+ {
+ "match": "[a-zA-Z_$][\\w$]*",
+ "name": "entity.name.function.preprocessor.objcpp"
+ },
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "\\)|(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-disabled": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-elif"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-else"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-elif"
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "contentName": "comment.block.preprocessor.if-branch.objcpp",
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-disabled-block": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-elif-block"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-else-block"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-elif"
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ {
+ "contentName": "comment.block.preprocessor.if-branch.in-block.objcpp",
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-disabled-elif": {
+ "begin": "^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "contentName": "comment.block.preprocessor.elif-branch.objcpp",
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ },
+ "3": {
+ "name": "constant.numeric.preprocessor.objcpp"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "contentName": "comment.block.preprocessor.else-branch.objcpp",
+ "begin": "^\\s*((#)\\s*else\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "contentName": "comment.block.preprocessor.if-branch.objcpp",
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-block": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "contentName": "comment.block.preprocessor.else-branch.in-block.objcpp",
+ "begin": "^\\s*((#)\\s*else\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "contentName": "comment.block.preprocessor.if-branch.in-block.objcpp",
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#block_innards"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-elif": {
+ "begin": "^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:endif)\\b))",
+ "patterns": [
+ {
+ "contentName": "comment.block.preprocessor.elif-branch.objcpp",
+ "begin": "^\\s*((#)\\s*(else)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "contentName": "comment.block.preprocessor.elif-branch.objcpp",
+ "begin": "^\\s*((#)\\s*(elif)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-elif-block": {
+ "begin": "^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:endif)\\b))",
+ "patterns": [
+ {
+ "contentName": "comment.block.preprocessor.elif-branch.in-block.objcpp",
+ "begin": "^\\s*((#)\\s*(else)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "contentName": "comment.block.preprocessor.elif-branch.objcpp",
+ "begin": "^\\s*((#)\\s*(elif)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-else": {
+ "begin": "^\\s*((#)\\s*else\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-else-block": {
+ "begin": "^\\s*((#)\\s*else\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ "preprocessor-rule-define-line-contents": {
+ "patterns": [
+ {
+ "include": "#vararg_ellipses"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objcpp"
+ }
+ },
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.objcpp"
+ }
+ },
+ "name": "meta.block.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-blocks"
+ }
+ ]
+ },
+ {
+ "match": "\\(",
+ "name": "punctuation.section.parens.begin.bracket.round.objcpp"
+ },
+ {
+ "match": "\\)",
+ "name": "punctuation.section.parens.end.bracket.round.objcpp"
+ },
+ {
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\s*\\()\n(?=\n (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n |\n (?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)",
+ "end": "(?<=\\))(?!\\w)|(?<!\\\\)(?=\\s*\\n)",
+ "name": "meta.function.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-functions"
+ }
+ ]
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": "\"|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.double.objcpp",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#string_placeholder"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": "'|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.single.objcpp",
+ "patterns": [
+ {
+ "include": "#string_escaped_char"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "preprocessor-rule-define-line-blocks": {
+ "patterns": [
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objcpp"
+ }
+ },
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-blocks"
+ },
+ {
+ "include": "#preprocessor-rule-define-line-contents"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-define-line-contents"
+ }
+ ]
+ },
+ "preprocessor-rule-define-line-functions": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#vararg_ellipses"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.objcpp"
+ },
+ "2": {
+ "name": "punctuation.section.arguments.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "(\\))|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-functions"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "(\\))|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-functions"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-define-line-contents"
+ }
+ ]
+ },
+ "function-innards": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#vararg_ellipses"
+ },
+ {
+ "name": "meta.function.definition.parameters.objcpp",
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.objcpp"
+ },
+ "2": {
+ "name": "punctuation.section.parameters.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#probably_a_parameter"
+ },
+ {
+ "include": "#function-innards"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-innards"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "function-call-innards": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#storage_types"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|enumerate|return|typeid|alignof|alignas|sizeof|[cr]?iterate|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.objcpp"
+ },
+ "2": {
+ "name": "punctuation.section.arguments.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ "default_statement": {
+ "name": "meta.conditional.case.objcpp",
+ "begin": "((?<!\\w)default(?!\\w))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.default.objcpp"
+ }
+ },
+ "end": "(:)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.case.default.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#conditional_context"
+ }
+ ]
+ },
+ "case_statement": {
+ "name": "meta.conditional.case.objcpp",
+ "begin": "((?<!\\w)case(?!\\w))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.case.objcpp"
+ }
+ },
+ "end": "(:)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.case.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#conditional_context"
+ }
+ ]
+ },
+ "switch_statement": {
+ "name": "meta.block.switch.objcpp",
+ "begin": "(((?<!\\w)switch(?!\\w)))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.head.switch.objcpp"
+ },
+ "2": {
+ "name": "keyword.control.switch.objcpp"
+ }
+ },
+ "end": "(?:(?<=\\})|(?=[;>\\[\\]=]))",
+ "patterns": [
+ {
+ "name": "meta.head.switch.objcpp",
+ "begin": "\\G ?",
+ "end": "((?:\\{|(?=;)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.begin.bracket.curly.switch.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#switch_conditional_parentheses"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "name": "meta.body.switch.objcpp",
+ "begin": "(?<=\\{)",
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.switch.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#default_statement"
+ },
+ {
+ "include": "#case_statement"
+ },
+ {
+ "include": "$base"
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ {
+ "name": "meta.tail.switch.objcpp",
+ "begin": "(?<=})[\\s\\n]*",
+ "end": "[\\s\\n]*(?=;)",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ }
+ ]
+ },
+ "switch_conditional_parentheses": {
+ "name": "meta.conditional.switch.objcpp",
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.begin.bracket.round.conditional.switch.objcpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.end.bracket.round.conditional.switch.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#conditional_context"
+ }
+ ]
+ },
+ "static_assert": {
+ "begin": "(static_assert|_Static_assert)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.static_assert.objcpp"
+ },
+ "2": {
+ "name": "punctuation.section.arguments.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.static_assert.message.objcpp",
+ "begin": "(,)\\s*(?=(?:L|u8|u|U\\s*\\\")?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.delimiter.objcpp"
+ }
+ },
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#string_context"
+ },
+ {
+ "include": "#string_context_c"
+ }
+ ]
+ },
+ {
+ "include": "#function_call_context"
+ }
+ ]
+ },
+ "conditional_context": {
+ "patterns": [
+ {
+ "include": "$base"
+ },
+ {
+ "include": "#block_innards"
+ }
+ ]
+ },
+ "member_access": {
+ "match": "((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))((?:[a-zA-Z_]\\w*\\s*(?-mix:(?:(?:\\.\\*|\\.))|(?:(?:->\\*|->)))\\s*)*)\\s*(\\b(?!(?:void|char|short|int|signed|unsigned|long|float|double|bool|_Bool|_Complex|_Imaginary|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|memory_order|atomic_bool|atomic_char|atomic_schar|atomic_uchar|atomic_short|atomic_ushort|atomic_int|atomic_uint|atomic_long|atomic_ulong|atomic_llong|atomic_ullong|atomic_char16_t|atomic_char32_t|atomic_wchar_t|atomic_int_least8_t|atomic_uint_least8_t|atomic_int_least16_t|atomic_uint_least16_t|atomic_int_least32_t|atomic_uint_least32_t|atomic_int_least64_t|atomic_uint_least64_t|atomic_int_fast8_t|atomic_uint_fast8_t|atomic_int_fast16_t|atomic_uint_fast16_t|atomic_int_fast32_t|atomic_uint_fast32_t|atomic_int_fast64_t|atomic_uint_fast64_t|atomic_intptr_t|atomic_uintptr_t|atomic_size_t|atomic_ptrdiff_t|atomic_intmax_t|atomic_uintmax_t))[a-zA-Z_]\\w*\\b(?!\\())",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#special_variables"
+ },
+ {
+ "name": "variable.other.object.access.objcpp",
+ "match": "(.+)"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.objcpp"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.objcpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "match": "((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#special_variables"
+ },
+ {
+ "name": "variable.other.object.access.objcpp",
+ "match": "(.+)"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.objcpp"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.objcpp"
+ }
+ }
+ }
+ ]
+ },
+ "5": {
+ "name": "variable.other.member.objcpp"
+ }
+ }
+ },
+ "method_access": {
+ "contentName": "meta.function-call.member.objcpp",
+ "begin": "((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))((?:[a-zA-Z_]\\w*\\s*(?-mix:(?:(?:\\.\\*|\\.))|(?:(?:->\\*|->)))\\s*)*)\\s*([a-zA-Z_]\\w*)(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#special_variables"
+ },
+ {
+ "name": "variable.other.object.access.objcpp",
+ "match": "(.+)"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.objcpp"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.objcpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#member_access"
+ },
+ {
+ "include": "#method_access"
+ },
+ {
+ "match": "((?:[a-zA-Z_]\\w*|(?<=\\]|\\)))\\s*)(?:((?:\\.\\*|\\.))|((?:->\\*|->)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#special_variables"
+ },
+ {
+ "name": "variable.other.object.access.objcpp",
+ "match": "(.+)"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.objcpp"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.objcpp"
+ }
+ }
+ }
+ ]
+ },
+ "5": {
+ "name": "entity.name.function.member.objcpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.member.objcpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.member.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards"
+ }
+ ]
+ },
+ "numbers": {
+ "begin": "(?<!\\w)(?=\\d|\\.\\d)",
+ "end": "(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))",
+ "patterns": [
+ {
+ "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])(\\+)?(\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:([lLfF](?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.hexadecimal.objcpp"
+ },
+ "2": {
+ "name": "constant.numeric.hexadecimal.objcpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "4": {
+ "name": "constant.numeric.hexadecimal.objcpp"
+ },
+ "5": {
+ "name": "constant.numeric.hexadecimal.objcpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "8": {
+ "name": "keyword.other.unit.exponent.hexadecimal.objcpp"
+ },
+ "9": {
+ "name": "keyword.operator.plus.exponent.hexadecimal.objcpp"
+ },
+ "10": {
+ "name": "keyword.operator.minus.exponent.hexadecimal.objcpp"
+ },
+ "11": {
+ "name": "constant.numeric.exponent.hexadecimal.objcpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ }
+ ]
+ },
+ "12": {
+ "name": "keyword.other.unit.suffix.floating-point.objcpp"
+ }
+ }
+ },
+ {
+ "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])(\\+)?(\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:([lLfF](?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))",
+ "captures": {
+ "2": {
+ "name": "constant.numeric.decimal.objcpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "4": {
+ "name": "constant.numeric.decimal.point.objcpp"
+ },
+ "5": {
+ "name": "constant.numeric.decimal.objcpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "8": {
+ "name": "keyword.other.unit.exponent.decimal.objcpp"
+ },
+ "9": {
+ "name": "keyword.operator.plus.exponent.decimal.objcpp"
+ },
+ "10": {
+ "name": "keyword.operator.minus.exponent.decimal.objcpp"
+ },
+ "11": {
+ "name": "constant.numeric.exponent.decimal.objcpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ }
+ ]
+ },
+ "12": {
+ "name": "keyword.other.unit.suffix.floating-point.objcpp"
+ }
+ }
+ },
+ {
+ "match": "(\\G0[bB])([01](?:(?:[01]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.binary.objcpp"
+ },
+ "2": {
+ "name": "constant.numeric.binary.objcpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "4": {
+ "name": "keyword.other.unit.suffix.integer.objcpp"
+ }
+ }
+ },
+ {
+ "match": "(\\G0)((?:(?:[0-7]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))+)(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.octal.objcpp"
+ },
+ "2": {
+ "name": "constant.numeric.octal.objcpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "4": {
+ "name": "keyword.other.unit.suffix.integer.objcpp"
+ }
+ }
+ },
+ {
+ "match": "(\\G0[xX])([0-9a-fA-F](?:(?:[0-9a-fA-F]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?<!')([pP])(\\+)?(\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.hexadecimal.objcpp"
+ },
+ "2": {
+ "name": "constant.numeric.hexadecimal.objcpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "5": {
+ "name": "keyword.other.unit.exponent.hexadecimal.objcpp"
+ },
+ "6": {
+ "name": "keyword.operator.plus.exponent.hexadecimal.objcpp"
+ },
+ "7": {
+ "name": "keyword.operator.minus.exponent.hexadecimal.objcpp"
+ },
+ "8": {
+ "name": "constant.numeric.exponent.hexadecimal.objcpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ }
+ ]
+ },
+ "9": {
+ "name": "keyword.other.unit.suffix.integer.objcpp"
+ }
+ }
+ },
+ {
+ "match": "(\\G(?=[0-9.])(?!0[xXbB]))([0-9](?:(?:[0-9]|((?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)(?:((?<!')([eE])(\\+)?(\\-)?((?-mix:(?:[0-9](?:(?:[0-9]|(?:(?<=[0-9a-fA-F])'(?=[0-9a-fA-F]))))*)))))?(?:((?:(?:(?:(?:(?:[uU]|[uU]ll?)|[uU]LL?)|ll?[uU]?)|LL?[uU]?)|[fF])(?!\\w)))?(?!(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))",
+ "captures": {
+ "2": {
+ "name": "constant.numeric.decimal.objcpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "5": {
+ "name": "keyword.other.unit.exponent.decimal.objcpp"
+ },
+ "6": {
+ "name": "keyword.operator.plus.exponent.decimal.objcpp"
+ },
+ "7": {
+ "name": "keyword.operator.minus.exponent.decimal.objcpp"
+ },
+ "8": {
+ "name": "constant.numeric.exponent.decimal.objcpp",
+ "patterns": [
+ {
+ "match": "(?<=[0-9a-fA-F])'(?=[0-9a-fA-F])",
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ }
+ ]
+ },
+ "9": {
+ "name": "keyword.other.unit.suffix.integer.objcpp"
+ }
+ }
+ },
+ {
+ "match": "(?:(?:['0-9a-zA-Z_\\.']|(?<=[eEpP])[+-]))+",
+ "name": "invalid.illegal.constant.numeric.objcpp"
+ }
+ ]
+ }
+ }
+ },
+ "comment": {
+ "patterns": [
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.objcpp"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.objcpp"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.objcpp"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.objcpp"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.double-slash.objcpp",
+ "patterns": [
+ {
+ "match": "(?>\\\\\\s*\\n)",
+ "name": "punctuation.separator.continuation.objcpp"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "cpp_lang": {
+ "patterns": [
+ {
+ "include": "#special_block"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "match": "\\b(friend|explicit|virtual|override|final|noexcept)\\b",
+ "name": "storage.modifier.objcpp"
+ },
+ {
+ "match": "\\b(private:|protected:|public:)",
+ "name": "storage.type.modifier.access.objcpp"
+ },
+ {
+ "match": "\\b(catch|try|throw|using)\\b",
+ "name": "keyword.control.objcpp"
+ },
+ {
+ "match": "\\bdelete\\b(\\s*\\[\\])?|\\bnew\\b(?!])",
+ "name": "keyword.control.objcpp"
+ },
+ {
+ "match": "\\b(f|m)[A-Z]\\w*\\b",
+ "name": "variable.other.readwrite.member.objcpp"
+ },
+ {
+ "match": "\\bthis\\b",
+ "name": "variable.language.this.objcpp"
+ },
+ {
+ "match": "\\bnullptr\\b",
+ "name": "constant.language.objcpp"
+ },
+ {
+ "include": "#template_definition"
+ },
+ {
+ "match": "\\btemplate\\b\\s*",
+ "name": "storage.type.template.objcpp"
+ },
+ {
+ "match": "\\b(const_cast|dynamic_cast|reinterpret_cast|static_cast)\\b\\s*",
+ "name": "keyword.operator.cast.objcpp"
+ },
+ {
+ "name": "punctuation.separator.namespace.access.objcpp",
+ "match": "((?:[a-zA-Z_][a-zA-Z_0-9]*::)*)([a-zA-Z_][a-zA-Z_0-9]*)(::)",
+ "captures": {
+ "1": {
+ "name": "entity.scope.objcpp"
+ },
+ "2": {
+ "name": "entity.scope.name.objcpp"
+ },
+ "3": {
+ "name": "punctuation.separator.namespace.access.objcpp"
+ }
+ }
+ },
+ {
+ "match": "\\b(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\b",
+ "name": "keyword.operator.objcpp"
+ },
+ {
+ "match": "\\b(decltype|wchar_t|char16_t|char32_t)\\b",
+ "name": "storage.type.objcpp"
+ },
+ {
+ "match": "\\b(constexpr|export|mutable|typename|thread_local)\\b",
+ "name": "storage.modifier.objcpp"
+ },
+ {
+ "begin": "(?x)\n(?:\n ^ | # beginning of line\n (?:(?<!else|new|=)) # or word + space before name\n)\n((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) # actual name\n\\s*(\\() # opening bracket",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.objcpp"
+ }
+ },
+ "name": "meta.function.destructor.objcpp",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n(?:\n ^ | # beginning of line\n (?:(?<!else|new|=)) # or word + space before name\n)\n((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) # actual name\n\\s*(\\() # opening bracket",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.objcpp"
+ }
+ },
+ "name": "meta.function.destructor.prototype.objcpp",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "include": "#c_lang"
+ }
+ ],
+ "repository": {
+ "template_definition": {
+ "begin": "\\b(template)\\s*(<)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.template.objcpp"
+ },
+ "2": {
+ "name": "meta.template.angle-brackets.start.objcpp"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "meta.template.angle-brackets.end.objcpp"
+ }
+ },
+ "name": "template.definition.objcpp",
+ "patterns": [
+ {
+ "include": "#template_definition_argument"
+ }
+ ]
+ },
+ "template_definition_argument": {
+ "match": "\\s*(?:([a-zA-Z_][a-zA-Z_0-9]*\\s*)|((?:[a-zA-Z_][a-zA-Z_0-9]*\\s+)*)([a-zA-Z_][a-zA-Z_0-9]*)|([a-zA-Z_][a-zA-Z_0-9]*)\\s*(\\.\\.\\.)\\s*([a-zA-Z_][a-zA-Z_0-9]*)|((?:[a-zA-Z_][a-zA-Z_0-9]*\\s+)*)([a-zA-Z_][a-zA-Z_0-9]*)\\s*(=)\\s*(\\w+))(,|(?=>))",
+ "captures": {
+ "1": {
+ "name": "storage.type.template.objcpp"
+ },
+ "2": {
+ "name": "storage.type.template.objcpp"
+ },
+ "3": {
+ "name": "entity.name.type.template.objcpp"
+ },
+ "4": {
+ "name": "storage.type.template.objcpp"
+ },
+ "5": {
+ "name": "meta.template.operator.ellipsis.objcpp"
+ },
+ "6": {
+ "name": "entity.name.type.template.objcpp"
+ },
+ "7": {
+ "name": "storage.type.template.objcpp"
+ },
+ "8": {
+ "name": "entity.name.type.template.objcpp"
+ },
+ "9": {
+ "name": "keyword.operator.assignment.objcpp"
+ },
+ "10": {
+ "name": "constant.language.objcpp"
+ },
+ "11": {
+ "name": "meta.template.operator.comma.objcpp"
+ }
+ }
+ },
+ "angle_brackets": {
+ "begin": "<",
+ "end": ">",
+ "name": "meta.angle-brackets.objcpp",
+ "patterns": [
+ {
+ "include": "#angle_brackets"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "block": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objcpp"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.objcpp"
+ }
+ },
+ "name": "meta.block.objcpp",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.any-method.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.objcpp"
+ }
+ },
+ "match": "(?x)\n(\n (?!while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\n (?:\\b[A-Za-z_][A-Za-z0-9_]*+\\b|::)*+ # actual name\n)\n\\s*(\\() # opening bracket",
+ "name": "meta.function-call.objcpp"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "constructor": {
+ "patterns": [
+ {
+ "begin": "(?x)\n(?:^\\s*) # beginning of line\n((?!while|for|do|if|else|switch|catch|enumerate|r?iterate)[A-Za-z_][A-Za-z0-9_:]*) # actual name\n\\s*(\\() # opening bracket",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.constructor.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.objcpp"
+ }
+ },
+ "name": "meta.function.constructor.objcpp",
+ "patterns": [
+ {
+ "include": "#probably_a_parameter"
+ },
+ {
+ "include": "#function-innards"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n(:)\n(\n (?=\n \\s*[A-Za-z_][A-Za-z0-9_:]* # actual name\n \\s* (\\() # opening bracket\n )\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.objcpp"
+ }
+ },
+ "end": "(?=\\{)",
+ "name": "meta.function.constructor.initializer-list.objcpp",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ }
+ ]
+ },
+ "special_block": {
+ "patterns": [
+ {
+ "begin": "\\b(using)\\b\\s*(namespace)\\b\\s*((?:[_A-Za-z][_A-Za-z0-9]*\\b(::)?)*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.objcpp"
+ },
+ "2": {
+ "name": "storage.type.namespace.objcpp"
+ },
+ "3": {
+ "name": "entity.name.type.objcpp"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.statement.objcpp"
+ }
+ },
+ "name": "meta.using-namespace-declaration.objcpp"
+ },
+ {
+ "begin": "\\b(namespace)\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.namespace.objcpp"
+ },
+ "2": {
+ "name": "entity.name.type.objcpp"
+ }
+ },
+ "captures": {
+ "1": {
+ "name": "keyword.control.namespace.$2.objcpp"
+ }
+ },
+ "end": "(?<=\\})|(?=(;|,|\\(|\\)|>|\\[|\\]|=))",
+ "name": "meta.namespace-block.objcpp",
+ "patterns": [
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.scope.objcpp"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.scope.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#special_block"
+ },
+ {
+ "include": "#constructor"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(?:(class)|(struct))\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+(\\s*:\\s*(public|protected|private)\\s*([_A-Za-z][_A-Za-z0-9]*\\b)((\\s*,\\s*(public|protected|private)\\s*[_A-Za-z][_A-Za-z0-9]*\\b)*))?",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.objcpp"
+ },
+ "2": {
+ "name": "storage.type.struct.objcpp"
+ },
+ "3": {
+ "name": "entity.name.type.objcpp"
+ },
+ "5": {
+ "name": "storage.type.modifier.access.objcpp"
+ },
+ "6": {
+ "name": "entity.name.type.inherited.objcpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "(public|protected|private)",
+ "name": "storage.type.modifier.access.objcpp"
+ },
+ {
+ "match": "[_A-Za-z][_A-Za-z0-9]*",
+ "name": "entity.name.type.inherited.objcpp"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\})|(?=(;|\\(|\\)|>|\\[|\\]|=))",
+ "name": "meta.class-struct-block.objcpp",
+ "patterns": [
+ {
+ "include": "#angle_brackets"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objcpp"
+ }
+ },
+ "end": "(\\})(\\s*\\n)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.objcpp"
+ },
+ "2": {
+ "name": "invalid.illegal.you-forgot-semicolon.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#special_block"
+ },
+ {
+ "include": "#constructor"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(extern)(?=\\s*\")",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.objcpp"
+ }
+ },
+ "end": "(?<=\\})|(?=\\w)|(?=\\s*#\\s*endif\\b)",
+ "name": "meta.extern-block.objcpp",
+ "patterns": [
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objcpp"
+ }
+ },
+ "end": "\\}|(?=\\s*#\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#special_block"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "(u|u8|U|L)?\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ },
+ "1": {
+ "name": "meta.encoding.objcpp"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.double.objcpp",
+ "patterns": [
+ {
+ "match": "\\\\u\\h{4}|\\\\U\\h{8}",
+ "name": "constant.character.escape.objcpp"
+ },
+ {
+ "match": "\\\\['\"?\\\\abfnrtv]",
+ "name": "constant.character.escape.objcpp"
+ },
+ {
+ "match": "\\\\[0-7]{1,3}",
+ "name": "constant.character.escape.objcpp"
+ },
+ {
+ "match": "\\\\x\\h+",
+ "name": "constant.character.escape.objcpp"
+ },
+ {
+ "include": "#string_placeholder"
+ }
+ ]
+ },
+ {
+ "begin": "(u|u8|U|L)?R\"(?:([^ ()\\\\\\t]{0,16})|([^ ()\\\\\\t]*))\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ },
+ "1": {
+ "name": "meta.encoding.objcpp"
+ },
+ "3": {
+ "name": "invalid.illegal.delimiter-too-long.objcpp"
+ }
+ },
+ "end": "\\)\\2(\\3)\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ },
+ "1": {
+ "name": "invalid.illegal.delimiter-too-long.objcpp"
+ }
+ },
+ "name": "string.quoted.double.raw.objcpp"
+ }
+ ]
+ }
+ }
+ },
+ "cpp_lang_newish": {
+ "patterns": [
+ {
+ "include": "#special_block"
+ },
+ {
+ "match": "(?-mix:##[a-zA-Z_]\\w*(?!\\w))",
+ "name": "variable.other.macro.argument.objcpp"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "match": "(?<!\\w)((?:inline|constexpr|mutable|friend|explicit|virtual))(?!\\w)",
+ "name": "storage.modifier.specificer.functional.pre-parameters.$1.objcpp"
+ },
+ {
+ "match": "(?<!\\w)((?:final|override|volatile|const|noexcept))(?!\\w)(?=\\s*(?:(?:(?:(?:\\{|;))|[\\n\\r])))",
+ "name": "storage.modifier.specifier.functional.post-parameters.$1.objcpp"
+ },
+ {
+ "match": "(?<!\\w)((?:const|static|volatile|register|restrict|extern))(?!\\w)",
+ "name": "storage.modifier.specifier.$1.objcpp"
+ },
+ {
+ "match": "(?<!\\w)((?:private|protected|public)) *:",
+ "name": "storage.type.modifier.access.control.$1.objcpp"
+ },
+ {
+ "match": "(?<!\\w)(?:throw|try|catch)(?!\\w)",
+ "name": "keyword.control.exception.$1.objcpp"
+ },
+ {
+ "match": "(?<!\\w)(using|typedef)(?!\\w)",
+ "name": "keyword.other.$1.objcpp"
+ },
+ {
+ "include": "#memory_operators"
+ },
+ {
+ "match": "\\bthis\\b",
+ "name": "variable.language.this.objcpp"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#template_definition"
+ },
+ {
+ "match": "\\btemplate\\b\\s*",
+ "name": "storage.type.template.objcpp"
+ },
+ {
+ "match": "\\b(const_cast|dynamic_cast|reinterpret_cast|static_cast)\\b\\s*",
+ "name": "keyword.operator.cast.$1.objcpp"
+ },
+ {
+ "include": "#scope_resolution"
+ },
+ {
+ "match": "\\b(decltype|wchar_t|char16_t|char32_t)\\b",
+ "name": "storage.type.objcpp"
+ },
+ {
+ "match": "\\b(constexpr|export|mutable|typename|thread_local)\\b",
+ "name": "storage.modifier.objcpp"
+ },
+ {
+ "begin": "(?x)\n(?:\n ^ | # beginning of line\n (?:(?<!else|new|=)) # or word + space before name\n)\n((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) # actual name\n\\s*(\\() # opening bracket",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.destructor.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.destructor.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.destructor.objcpp"
+ }
+ },
+ "name": "meta.function.destructor.objcpp",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n(?:\n ^ | # beginning of line\n (?:(?<!else|new|=)) # or word + space before name\n)\n((?:[A-Za-z_][A-Za-z0-9_]*::)*+~[A-Za-z_][A-Za-z0-9_]*) # actual name\n\\s*(\\() # opening bracket",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.objcpp"
+ }
+ },
+ "name": "meta.function.destructor.prototype.objcpp",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-enabled"
+ },
+ {
+ "include": "#preprocessor-rule-disabled"
+ },
+ {
+ "include": "#preprocessor-rule-conditional"
+ },
+ {
+ "include": "#comments-c"
+ },
+ {
+ "match": "\\b(break|case|continue|default|do|else|for|goto|if|_Pragma|return|switch|while)\\b",
+ "name": "keyword.control.$1.objcpp"
+ },
+ {
+ "include": "#storage_types_c"
+ },
+ {
+ "match": "\\b(const|extern|register|restrict|static|volatile|inline)\\b",
+ "name": "storage.modifier.objcpp"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#operator_overload"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#strings-c"
+ },
+ {
+ "begin": "(?x)\n^\\s* ((\\#)\\s*define) \\s+\t# define\n((?<id>[a-zA-Z_$][\\w$]*))\t # macro name\n(?:\n (\\()\n\t(\n\t \\s* \\g<id> \\s*\t\t # first argument\n\t ((,) \\s* \\g<id> \\s*)* # additional arguments\n\t (?:\\.\\.\\.)?\t\t\t# varargs ellipsis?\n\t)\n (\\))\n)?",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.define.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ },
+ "3": {
+ "name": "entity.name.function.preprocessor.objcpp"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.begin.objcpp"
+ },
+ "6": {
+ "name": "variable.parameter.preprocessor.objcpp"
+ },
+ "8": {
+ "name": "punctuation.separator.parameters.objcpp"
+ },
+ "9": {
+ "name": "punctuation.definition.parameters.end.objcpp"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.macro.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-contents"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*((#)\\s*(error|warning))\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.diagnostic.$3.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.diagnostic.objcpp",
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": "\"|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.double.objcpp",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": "'|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.single.objcpp",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "[^'\"]",
+ "end": "(?<!\\\\)(?=\\s*\\n)",
+ "name": "string.unquoted.single.objcpp",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "include": "#comments-c"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*((#)\\s*(include(?:_next)?|import))\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.$3.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.include.objcpp",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.double.include.objcpp"
+ },
+ {
+ "begin": "<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.other.lt-gt.include.objcpp"
+ }
+ ]
+ },
+ {
+ "include": "#pragma-mark"
+ },
+ {
+ "begin": "^\\s*((#)\\s*line)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.line.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#strings-c"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(?:((#)\\s*undef))\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.undef.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "match": "[a-zA-Z_$][\\w$]*",
+ "name": "entity.name.function.preprocessor.objcpp"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(?:((#)\\s*pragma))\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.pragma.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=(?://|/\\*))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.pragma.objcpp",
+ "patterns": [
+ {
+ "include": "#strings-c"
+ },
+ {
+ "match": "[a-zA-Z_$][\\w\\-$]*",
+ "name": "entity.other.attribute-name.pragma.preprocessor.objcpp"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "match": "\\b(u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t)\\b",
+ "name": "support.type.sys-types.objcpp"
+ },
+ {
+ "match": "\\b(pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t)\\b",
+ "name": "support.type.pthread.objcpp"
+ },
+ {
+ "match": "(?x) \\b\n(int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t\n|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t\n|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t\n|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t\n|uintmax_t|uintmax_t)\n\\b",
+ "name": "support.type.stdint.objcpp"
+ },
+ {
+ "match": "(?<!\\w)[a-zA-Z_](?:\\w)*_t(?!\\w)",
+ "name": "support.type.posix-reserved.objcpp"
+ },
+ {
+ "include": "#block-c"
+ },
+ {
+ "include": "#parens-c"
+ },
+ {
+ "begin": "(?<!\\w)(?!\\s*(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|auto|void|char|short|int|signed|unsigned|long|float|double|bool|wchar_t|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|NULL|true|false|nullptr|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\s*\\()(?=[a-zA-Z_]\\w*\\s*\\()",
+ "end": "(?<=\\))",
+ "name": "meta.function.definition.objcpp",
+ "patterns": [
+ {
+ "include": "#function-innards-c"
+ }
+ ]
+ },
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "name": "meta.bracket.square.access.objcpp",
+ "begin": "([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))?(\\[)(?!\\])",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.object.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.begin.bracket.square.objcpp"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.square.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards-c"
+ }
+ ]
+ },
+ {
+ "name": "storage.modifier.array.bracket.square.objcpp",
+ "match": "(?-mix:(?<!delete))\\\\[\\\\s*\\\\]"
+ },
+ {
+ "match": ";",
+ "name": "punctuation.terminator.statement.objcpp"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.objcpp"
+ }
+ ],
+ "repository": {
+ "literal_numeric_seperator": {
+ "match": "(?<!')'(?!')",
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "number_literal": {
+ "match": "((?<!\\w)(?:(?:(?:(0[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]|((?<!')'(?!')))))*))?(?:([pP])(\\+)?(\\-)?((?:[0-9](?:(?:(?:[0-9]|(?:(?<!')'(?!')))))*)))?|(?:([0-9](?:(?:(?:[0-9]|((?<!')'(?!')))))*))?((?:(?:(?<=[0-9])\\.|\\.(?=[0-9]))))(?:([0-9](?:(?:(?:[0-9]|((?<!')'(?!')))))*))?(?:([eE])(\\+)?(\\-)?((?:[0-9](?:(?:(?:[0-9]|(?:(?<!')'(?!')))))*)))?)(?:([lLfF](?!\\w)))?|(?:(?:(?:(?:(?:(0[bB])((?:(?:(?:[01]|((?<!')'(?!')))))+)|(0)((?:(?:(?:[0-7]|((?<!')'(?!')))))+)))|(0[xX])([0-9a-fA-F](?:(?:(?:[0-9a-fA-F]|((?<!')'(?!')))))*)(?:([pP])(\\+)?(\\-)?((?:[0-9](?:(?:(?:[0-9]|(?:(?<!')'(?!')))))*)))?))|([0-9](?:(?:(?:[0-9]|((?<!')'(?!')))))*)(?:([eE])(\\+)?(\\-)?((?:[0-9](?:(?:(?:[0-9]|(?:(?<!')'(?!')))))*)))?)(?:((?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:(?:LL[uU]|ll[uU]))|[uU]LL))|[uU]ll))|ll))|LL))|[uUlL]))(?!\\w)))?))(\\w*))",
+ "captures": {
+ "2": {
+ "name": "keyword.other.unit.hexadecimal.objcpp"
+ },
+ "3": {
+ "name": "constant.numeric.hexadecimal.objcpp",
+ "patterns": [
+ {
+ "include": "#literal_numeric_seperator"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "5": {
+ "name": "constant.numeric.hexadecimal.objcpp"
+ },
+ "6": {
+ "name": "constant.numeric.hexadecimal.objcpp",
+ "patterns": [
+ {
+ "include": "#literal_numeric_seperator"
+ }
+ ]
+ },
+ "7": {
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "8": {
+ "name": "keyword.other.unit.exponent.hexadecimal.objcpp"
+ },
+ "9": {
+ "name": "keyword.operator.plus.exponent.hexadecimal.objcpp"
+ },
+ "10": {
+ "name": "keyword.operator.minus.exponent.hexadecimal.objcpp"
+ },
+ "11": {
+ "name": "constant.numeric.exponent.hexadecimal.objcpp",
+ "patterns": [
+ {
+ "include": "#literal_numeric_seperator"
+ }
+ ]
+ },
+ "12": {
+ "name": "constant.numeric.decimal.objcpp",
+ "patterns": [
+ {
+ "include": "#literal_numeric_seperator"
+ }
+ ]
+ },
+ "13": {
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "14": {
+ "name": "constant.numeric.decimal.point.objcpp"
+ },
+ "15": {
+ "name": "constant.numeric.decimal.objcpp",
+ "patterns": [
+ {
+ "include": "#literal_numeric_seperator"
+ }
+ ]
+ },
+ "16": {
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "17": {
+ "name": "keyword.other.unit.exponent.decimal.objcpp"
+ },
+ "18": {
+ "name": "keyword.operator.plus.exponent.decimal.objcpp"
+ },
+ "19": {
+ "name": "keyword.operator.minus.exponent.decimal.objcpp"
+ },
+ "20": {
+ "name": "constant.numeric.exponent.decimal.objcpp",
+ "patterns": [
+ {
+ "include": "#literal_numeric_seperator"
+ }
+ ]
+ },
+ "21": {
+ "name": "keyword.other.unit.suffix.floating-point.objcpp"
+ },
+ "22": {
+ "name": "keyword.other.unit.binary.objcpp"
+ },
+ "23": {
+ "name": "constant.numeric.binary.objcpp",
+ "patterns": [
+ {
+ "include": "#literal_numeric_seperator"
+ }
+ ]
+ },
+ "24": {
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "25": {
+ "name": "keyword.other.unit.octal.objcpp"
+ },
+ "26": {
+ "name": "constant.numeric.octal.objcpp",
+ "patterns": [
+ {
+ "include": "#literal_numeric_seperator"
+ }
+ ]
+ },
+ "27": {
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "28": {
+ "name": "keyword.other.unit.hexadecimal.objcpp"
+ },
+ "29": {
+ "name": "constant.numeric.hexadecimal.objcpp",
+ "patterns": [
+ {
+ "include": "#literal_numeric_seperator"
+ }
+ ]
+ },
+ "30": {
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "31": {
+ "name": "keyword.other.unit.exponent.hexadecimal.objcpp"
+ },
+ "32": {
+ "name": "keyword.operator.plus.exponent.hexadecimal.objcpp"
+ },
+ "33": {
+ "name": "keyword.operator.minus.exponent.hexadecimal.objcpp"
+ },
+ "34": {
+ "name": "constant.numeric.exponent.hexadecimal.objcpp",
+ "patterns": [
+ {
+ "include": "#literal_numeric_seperator"
+ }
+ ]
+ },
+ "35": {
+ "name": "constant.numeric.decimal.objcpp",
+ "patterns": [
+ {
+ "include": "#literal_numeric_seperator"
+ }
+ ]
+ },
+ "36": {
+ "name": "punctuation.separator.constant.numeric.objcpp"
+ },
+ "37": {
+ "name": "keyword.other.unit.exponent.decimal.objcpp"
+ },
+ "38": {
+ "name": "keyword.operator.plus.exponent.decimal.objcpp"
+ },
+ "39": {
+ "name": "keyword.operator.minus.exponent.decimal.objcpp"
+ },
+ "40": {
+ "name": "constant.numeric.exponent.decimal.objcpp",
+ "patterns": [
+ {
+ "include": "#literal_numeric_seperator"
+ }
+ ]
+ },
+ "41": {
+ "name": "keyword.other.unit.suffix.integer.objcpp"
+ },
+ "42": {
+ "name": "keyword.other.unit.user-defined.objcpp"
+ }
+ }
+ },
+ "constants": {
+ "match": "(?<!\\w)(?:NULL|true|false|nullptr)(?!\\w)",
+ "name": "constant.language.objcpp"
+ },
+ "storage_types_c": {
+ "patterns": [
+ {
+ "match": "(?<!\\w)(?:auto|void|char|short|int|signed|unsigned|long|float|double|bool|wchar_t)(?!\\w)",
+ "name": "storage.type.primitive.objcpp"
+ },
+ {
+ "match": "(?<!\\w)(?:u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t)(?!\\w)",
+ "name": "storage.type.objcpp"
+ },
+ {
+ "match": "(?<!\\w)(asm|__asm__|enum|union|struct)(?!\\w)",
+ "name": "storage.type.$1.objcpp"
+ }
+ ]
+ },
+ "memory_operators": {
+ "match": "(?<!\\w)(?:(?:(delete)\\s*(\\[\\])|(delete))|(new))(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.memory.delete.array.objcpp"
+ },
+ "2": {
+ "name": "keyword.operator.memory.delete.array.bracket.objcpp"
+ },
+ "3": {
+ "name": "keyword.operator.memory.delete.objcpp"
+ },
+ "4": {
+ "name": "keyword.operator.memory.new.objcpp"
+ }
+ },
+ "name": "keyword.operator.memory.objcpp"
+ },
+ "template_call_innards": {
+ "match": "<(?:[\\s<>,\\w])*>\\s*",
+ "captures": {
+ "0": {
+ "name": "meta.template.call.objcpp",
+ "patterns": [
+ {
+ "include": "#storage_types_c"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#scope_resolution"
+ },
+ {
+ "match": "(?<!\\w)[a-zA-Z_]\\w*(?!\\w)",
+ "name": "storage.type.user-defined.objcpp"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.comma.template.argument.objcpp"
+ }
+ ]
+ }
+ }
+ },
+ "template_definition": {
+ "name": "meta.template.definition.objcpp",
+ "begin": "(?-mix:(?<!\\w)(template)\\s*(<))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.template.objcpp"
+ },
+ "2": {
+ "name": "punctuation.section.angle-brackets.start.template.definition.objcpp"
+ }
+ },
+ "end": "(?-mix:(>))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.angle-brackets.end.template.definition.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#scope_resolution"
+ },
+ {
+ "include": "#template_definition_argument"
+ },
+ {
+ "include": "#template_call_innards"
+ }
+ ]
+ },
+ "template_definition_argument": {
+ "match": "((?:(?:(?:(?:(?:(?:\\s*([a-zA-Z_]\\w*)|((?:[a-zA-Z_]\\w*\\s+)+)([a-zA-Z_]\\w*)))|([a-zA-Z_]\\w*)\\s*(\\.\\.\\.)\\s*([a-zA-Z_]\\w*)))|((?:[a-zA-Z_]\\w*\\s+)*)([a-zA-Z_]\\w*)\\s*([=])\\s*(\\w+)))\\s*(?:(?:(,)|(?=>))))",
+ "captures": {
+ "2": {
+ "name": "storage.type.template.argument.$1.objcpp"
+ },
+ "3": {
+ "name": "storage.type.template.argument.$2.objcpp"
+ },
+ "4": {
+ "name": "entity.name.type.template.objcpp"
+ },
+ "5": {
+ "name": "storage.type.template.objcpp"
+ },
+ "6": {
+ "name": "keyword.operator.ellipsis.template.definition.objcpp"
+ },
+ "7": {
+ "name": "entity.name.type.template.objcpp"
+ },
+ "8": {
+ "name": "storage.type.template.objcpp"
+ },
+ "9": {
+ "name": "entity.name.type.template.objcpp"
+ },
+ "10": {
+ "name": "keyword.operator.assignment.objcpp"
+ },
+ "11": {
+ "name": "constant.other.objcpp"
+ },
+ "12": {
+ "name": "punctuation.separator.comma.template.argument.objcpp"
+ }
+ }
+ },
+ "scope_resolution": {
+ "match": "((?:[a-zA-Z_]\\w*\\s*(?:(?:<(?:[\\s<>,\\w])*>\\s*))?::)*\\s*)([a-zA-Z_]\\w*)\\s*((?:<(?:[\\s<>,\\w])*>\\s*))?(::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution"
+ }
+ ]
+ },
+ "2": {
+ "name": "entity.name.namespace.scope-resolution.objcpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#template_call_innards"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.separator.namespace.access.objcpp"
+ }
+ },
+ "name": "meta.scope-resolution.objcpp"
+ },
+ "angle_brackets": {
+ "begin": "<",
+ "end": ">",
+ "name": "meta.angle-brackets.objcpp",
+ "patterns": [
+ {
+ "include": "#angle_brackets"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "block": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objcpp"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.objcpp"
+ }
+ },
+ "name": "meta.block.objcpp",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.any-method.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.objcpp"
+ }
+ },
+ "match": "(?x)\n(\n (?!while|for|do|if|else|switch|catch|return)\n (?:\\b[A-Za-z_][A-Za-z0-9_]*+\\b|::)*+ # actual name\n)\n\\s*(\\() # opening bracket",
+ "name": "meta.function-call.objcpp"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "constructor": {
+ "patterns": [
+ {
+ "begin": "(?x)\n(?:^\\s*) # beginning of line\n((?!while|for|do|if|else|switch|catch)[A-Za-z_][A-Za-z0-9_:]*) # actual name\n\\s*(\\() # opening bracket",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.constructor.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.constructor.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.constructor.objcpp"
+ }
+ },
+ "name": "meta.function.constructor.objcpp",
+ "patterns": [
+ {
+ "include": "#probably_a_parameter"
+ },
+ {
+ "include": "#function-innards-c"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n(:)\n(\n (?=\n \\s*[A-Za-z_][A-Za-z0-9_:]* # actual name\n \\s* (\\() # opening bracket\n )\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.initializer-list.parameters.objcpp"
+ }
+ },
+ "end": "(?=\\{)",
+ "name": "meta.function.constructor.initializer-list.objcpp",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ }
+ ]
+ },
+ "special_block": {
+ "patterns": [
+ {
+ "comment": "https://en.cppreference.com/w/cpp/language/namespace",
+ "begin": "\\b(using)\\s+(namespace)\\s+(?:((?:[a-zA-Z_]\\w*\\s*(?:(?:<(?:[\\s<>,\\w])*>\\s*))?::)*)\\s*)?((?<!\\w)[a-zA-Z_]\\w*(?!\\w))(?=;|\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.using.directive.objcpp"
+ },
+ "2": {
+ "name": "keyword.other.namespace.directive.objcpp storage.type.namespace.directive.objcpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#scope_resolution"
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.namespace.objcpp"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.statement.objcpp"
+ }
+ },
+ "name": "meta.using-namespace-declaration.objcpp"
+ },
+ {
+ "begin": "(?<!\\w)(namespace)\\s+(?:(?:((?:[a-zA-Z_]\\w*\\s*(?:(?:<(?:[\\s<>,\\w])*>\\s*))?::)*[a-zA-Z_]\\w*)|(?={)))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.namespace.definition.objcpp storage.type.namespace.definition.objcpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "(?-mix:(?<!\\w)[a-zA-Z_]\\w*(?!\\w))",
+ "name": "entity.name.type.objcpp"
+ },
+ {
+ "match": "::",
+ "name": "punctuation.separator.namespace.access.objcpp"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\})|(?=(;|,|\\(|\\)|>|\\[|\\]|=))",
+ "name": "meta.namespace-block.objcpp",
+ "patterns": [
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.scope.objcpp"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.scope.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#special_block"
+ },
+ {
+ "include": "#constructor"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(?:(class)|(struct))\\b\\s*([_A-Za-z][_A-Za-z0-9]*\\b)?+(\\s*:\\s*(public|protected|private)\\s*([_A-Za-z][_A-Za-z0-9]*\\b)((\\s*,\\s*(public|protected|private)\\s*[_A-Za-z][_A-Za-z0-9]*\\b)*))?",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.objcpp"
+ },
+ "2": {
+ "name": "storage.type.struct.objcpp"
+ },
+ "3": {
+ "name": "entity.name.type.objcpp"
+ },
+ "5": {
+ "name": "storage.type.modifier.access.objcpp"
+ },
+ "6": {
+ "name": "entity.name.type.inherited.objcpp"
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "(public|protected|private)",
+ "name": "storage.type.modifier.access.objcpp"
+ },
+ {
+ "match": "[_A-Za-z][_A-Za-z0-9]*",
+ "name": "entity.name.type.inherited.objcpp"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\})|(;)|(?=(\\(|\\)|>|\\[|\\]|=))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.objcpp"
+ }
+ },
+ "name": "meta.class-struct-block.objcpp",
+ "patterns": [
+ {
+ "include": "#angle_brackets"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objcpp"
+ }
+ },
+ "end": "(\\})(\\s*\\n)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.block.end.bracket.curly.objcpp"
+ },
+ "2": {
+ "name": "invalid.illegal.you-forgot-semicolon.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#special_block"
+ },
+ {
+ "include": "#constructor"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(extern)(?=\\s*\")",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.objcpp"
+ }
+ },
+ "end": "(?<=\\})|(?=\\w)|(?=\\s*#\\s*endif\\b)",
+ "name": "meta.extern-block.objcpp",
+ "patterns": [
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objcpp"
+ }
+ },
+ "end": "\\}|(?=\\s*#\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#special_block"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "(u|u8|U|L)?\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ },
+ "1": {
+ "name": "meta.encoding.objcpp"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.double.objcpp",
+ "patterns": [
+ {
+ "match": "\\\\u\\h{4}|\\\\U\\h{8}",
+ "name": "constant.character.escape.objcpp"
+ },
+ {
+ "match": "\\\\['\"?\\\\abfnrtv]",
+ "name": "constant.character.escape.objcpp"
+ },
+ {
+ "match": "\\\\[0-7]{1,3}",
+ "name": "constant.character.escape.objcpp"
+ },
+ {
+ "match": "\\\\x\\h+",
+ "name": "constant.character.escape.objcpp"
+ },
+ {
+ "include": "#string_placeholder-c"
+ }
+ ]
+ },
+ {
+ "begin": "(u|u8|U|L)?R\"(?:([^ ()\\\\\\t]{0,16})|([^ ()\\\\\\t]*))\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ },
+ "1": {
+ "name": "meta.encoding.objcpp"
+ },
+ "3": {
+ "name": "invalid.illegal.delimiter-too-long.objcpp"
+ }
+ },
+ "end": "\\)\\2(\\3)\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ },
+ "1": {
+ "name": "invalid.illegal.delimiter-too-long.objcpp"
+ }
+ },
+ "name": "string.quoted.double.raw.objcpp"
+ }
+ ]
+ },
+ "probably_a_parameter": {
+ "match": "(?:(?:([a-zA-Z_]\\w*)\\s*(?==)|(?<=\\w\\s|\\*\\/|[&*>\\]\\)])\\s*([a-zA-Z_]\\w*)\\s*(?=(?:\\[\\]\\s*)?(?:(?:,|\\))))))",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.probably.defaulted.objcpp"
+ },
+ "2": {
+ "name": "variable.parameter.probably.objcpp"
+ }
+ }
+ },
+ "operator_overload": {
+ "begin": "((?:[a-zA-Z_]\\w*\\s*(?:(?:<(?:[\\s<>,\\w])*>\\s*))?::)*)\\s*(operator)((?:(?:\\s*(?:\\+\\+|\\-\\-|\\(\\)|\\[\\]|\\->|\\+\\+|\\-\\-|\\+|\\-|!|~|\\*|&|\\->\\*|\\*|\\/|%|\\+|\\-|<<|>>|<=>|<|<=|>|>=|==|!=|&|\\^|\\||&&|\\|\\||=|\\+=|\\-=|\\*=|\\/=|%=|<<=|>>=|&=|\\^=|\\|=|,)|\\s+(?:(?:(?:new|new\\[\\]|delete|delete\\[\\])|(?:[a-zA-Z_]\\w*\\s*(?:(?:<(?:[\\s<>,\\w])*>\\s*))?::)*[a-zA-Z_]\\w*\\s*(?:&)?)))))\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.scope.objcpp"
+ },
+ "2": {
+ "name": "keyword.other.operator.overload.objcpp"
+ },
+ "3": {
+ "name": "entity.name.operator.overloadee.objcpp"
+ },
+ "4": {
+ "name": "punctuation.section.parameters.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.objcpp"
+ }
+ },
+ "name": "meta.function.definition.parameters.operator-overload.objcpp",
+ "patterns": [
+ {
+ "include": "#probably_a_parameter"
+ },
+ {
+ "include": "#function-innards-c"
+ }
+ ]
+ },
+ "access-method": {
+ "name": "meta.function-call.member.objcpp",
+ "begin": "([a-zA-Z_][a-zA-Z_0-9]*|(?<=[\\]\\)]))\\s*(?:(\\.)|(->))((?:(?:[a-zA-Z_][a-zA-Z_0-9]*)\\s*(?:(?:\\.)|(?:->)))*)\\s*([a-zA-Z_][a-zA-Z_0-9]*)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.object.objcpp"
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.objcpp"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.objcpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.dot-access.objcpp"
+ },
+ {
+ "match": "->",
+ "name": "punctuation.separator.pointer-access.objcpp"
+ },
+ {
+ "match": "[a-zA-Z_][a-zA-Z_0-9]*",
+ "name": "variable.other.object.objcpp"
+ },
+ {
+ "name": "everything.else.objcpp",
+ "match": ".+"
+ }
+ ]
+ },
+ "5": {
+ "name": "entity.name.function.member.objcpp"
+ },
+ "6": {
+ "name": "punctuation.section.arguments.begin.bracket.round.function.member.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.function.member.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards-c"
+ }
+ ]
+ },
+ "access-member": {
+ "name": "variable.other.object.access.objcpp",
+ "match": "(?:(?:([a-zA-Z_]\\w*)|(?<=\\]|\\))))\\s*(?:(?:((?:(?:\\.|\\.\\*)))|((?:(?:->|->\\*)))))\\s*((?:[a-zA-Z_]\\w*\\s*(?:(?:\\.|->))\\s*)*)\\b(?!(?:auto|void|char|short|int|signed|unsigned|long|float|double|bool|wchar_t|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t))([a-zA-Z_]\\w*)\\b(?!\\()",
+ "captures": {
+ "1": {
+ "name": "variable.other.object.objcpp"
+ },
+ "2": {
+ "name": "punctuation.separator.dot-access.objcpp"
+ },
+ "3": {
+ "name": "punctuation.separator.pointer-access.objcpp"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.dot-access.objcpp"
+ },
+ {
+ "match": "->",
+ "name": "punctuation.separator.pointer-access.objcpp"
+ },
+ {
+ "match": "[a-zA-Z_]\\w*",
+ "name": "variable.other.object.objcpp"
+ },
+ {
+ "match": ".+",
+ "name": "everything.else.objcpp"
+ }
+ ]
+ },
+ "5": {
+ "name": "variable.other.member.objcpp"
+ }
+ }
+ },
+ "block-c": {
+ "patterns": [
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objcpp"
+ }
+ },
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.objcpp"
+ }
+ },
+ "name": "meta.block.objcpp",
+ "patterns": [
+ {
+ "include": "#block_innards-c"
+ }
+ ]
+ }
+ ]
+ },
+ "block_innards-c": {
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-enabled-block"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-block"
+ },
+ {
+ "include": "#preprocessor-rule-conditional-block"
+ },
+ {
+ "include": "#access-method"
+ },
+ {
+ "include": "#access-member"
+ },
+ {
+ "include": "#c_function_call"
+ },
+ {
+ "name": "meta.initialization.objcpp",
+ "begin": "(?x)\n(?:\n (?:\n\t(?=\\s)(?<!else|new|return)\n\t(?<=\\w) \\s+(and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas) # or word + space before name\n )\n)\n(\n (?:[A-Za-z_][A-Za-z0-9_]*+ | :: )++ # actual name\n |\n (?:(?<=operator) (?:[-*&<>=+!]+ | \\(\\) | \\[\\]))\n)\n\\s*(\\() # opening bracket",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.objcpp"
+ },
+ "2": {
+ "name": "punctuation.section.parens.begin.bracket.round.initialization.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.initialization.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards-c"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objcpp"
+ }
+ },
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block_innards-c"
+ }
+ ]
+ },
+ {
+ "include": "#parens-block-c"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "c_function_call": {
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|return|typeid|alignof|alignas|sizeof|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(?=\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*(?:(?:<(?:[\\s<>,\\w])*>\\s*))?\\( # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)",
+ "end": "(?<=\\))(?!\\w)",
+ "name": "meta.function-call.objcpp",
+ "patterns": [
+ {
+ "include": "#function-call-innards-c"
+ }
+ ]
+ },
+ "comments-c": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "meta.toc-list.banner.block.objcpp"
+ }
+ },
+ "match": "^/\\* =(\\s*.*?)\\s*= \\*/$\\n?",
+ "name": "comment.block.objcpp"
+ },
+ {
+ "begin": "/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.objcpp"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.objcpp"
+ }
+ },
+ "name": "comment.block.objcpp"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "meta.toc-list.banner.line.objcpp"
+ }
+ },
+ "match": "^// =(\\s*.*?)\\s*=\\s*$\\n?",
+ "name": "comment.line.banner.objcpp"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.objcpp"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.objcpp"
+ }
+ },
+ "end": "(?=\\n)",
+ "name": "comment.line.double-slash.objcpp",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "disabled": {
+ "begin": "^\\s*#\\s*if(n?def)?\\b.*$",
+ "end": "^\\s*#\\s*endif\\b",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ "line_continuation_character": {
+ "patterns": [
+ {
+ "match": "(\\\\)\\n",
+ "captures": {
+ "1": {
+ "name": "constant.character.escape.line-continuation.objcpp"
+ }
+ }
+ }
+ ]
+ },
+ "parens-c": {
+ "name": "punctuation.section.parens-c\b.objcpp",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "parens-block-c": {
+ "name": "meta.block.parens.objcpp",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block_innards-c"
+ },
+ {
+ "match": "(?<!:):(?!:)",
+ "name": "punctuation.range-based.objcpp"
+ }
+ ]
+ },
+ "pragma-mark": {
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.pragma.objcpp"
+ },
+ "2": {
+ "name": "keyword.control.directive.pragma.pragma-mark.objcpp"
+ },
+ "3": {
+ "name": "punctuation.definition.directive.objcpp"
+ },
+ "4": {
+ "name": "entity.name.tag.pragma-mark.objcpp"
+ }
+ },
+ "match": "^\\s*(((#)\\s*pragma\\s+mark)\\s+(.*))",
+ "name": "meta.section.objcpp"
+ },
+ "operators": {
+ "patterns": [
+ {
+ "match": "(?-mix:(?<!\\w)((?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept))(?!\\w))",
+ "name": "keyword.operator.$1.objcpp"
+ },
+ {
+ "match": "--",
+ "name": "keyword.operator.decrement.objcpp"
+ },
+ {
+ "match": "\\+\\+",
+ "name": "keyword.operator.increment.objcpp"
+ },
+ {
+ "match": "%=|\\+=|-=|\\*=|(?<!\\()/=",
+ "name": "keyword.operator.assignment.compound.objcpp"
+ },
+ {
+ "match": "&=|\\^=|<<=|>>=|\\|=",
+ "name": "keyword.operator.assignment.compound.bitwise.objcpp"
+ },
+ {
+ "match": "<<|>>",
+ "name": "keyword.operator.bitwise.shift.objcpp"
+ },
+ {
+ "match": "!=|<=|>=|==|<|>",
+ "name": "keyword.operator.comparison.objcpp"
+ },
+ {
+ "match": "&&|!|\\|\\|",
+ "name": "keyword.operator.logical.objcpp"
+ },
+ {
+ "match": "&|\\||\\^|~",
+ "name": "keyword.operator.objcpp"
+ },
+ {
+ "match": "=",
+ "name": "keyword.operator.assignment.objcpp"
+ },
+ {
+ "match": "%|\\*|/|-|\\+",
+ "name": "keyword.operator.objcpp"
+ },
+ {
+ "begin": "\\?",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.objcpp"
+ }
+ },
+ "end": ":",
+ "applyEndPatternLast": true,
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#access-method"
+ },
+ {
+ "include": "#access-member"
+ },
+ {
+ "include": "#c_function_call"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ }
+ ]
+ },
+ "strings-c": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.double.objcpp",
+ "patterns": [
+ {
+ "include": "#string_escaped_char-c"
+ },
+ {
+ "include": "#string_placeholder-c"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "(?-mix:(?<![\\da-fA-F])')",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.single.objcpp",
+ "patterns": [
+ {
+ "include": "#string_escaped_char-c"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ }
+ ]
+ },
+ "string_escaped_char-c": {
+ "patterns": [
+ {
+ "match": "(?x)\\\\ (\n\\\\\t\t\t |\n[abefnprtv'\"?] |\n[0-3]\\d{,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} )",
+ "name": "constant.character.escape.objcpp"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unknown-escape.objcpp"
+ }
+ ]
+ },
+ "string_placeholder-c": {
+ "patterns": [
+ {
+ "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",
+ "name": "constant.other.placeholder.objcpp"
+ }
+ ]
+ },
+ "vararg_ellipses-c": {
+ "match": "(?<!\\.)\\.\\.\\.(?!\\.)",
+ "name": "punctuation.vararg-ellipses.objcpp"
+ },
+ "preprocessor-rule-conditional": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if(?:n?def)?\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-enabled-elif"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-else"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-elif"
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "match": "^\\s*#\\s*(else|elif|endif)\\b",
+ "captures": {
+ "0": {
+ "name": "invalid.illegal.stray-$1.objcpp"
+ }
+ }
+ }
+ ]
+ },
+ "preprocessor-rule-conditional-block": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if(?:n?def)?\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-enabled-elif-block"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-else-block"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-elif"
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#block_innards-c"
+ }
+ ]
+ },
+ {
+ "match": "^\\s*#\\s*(else|elif|endif)\\b",
+ "captures": {
+ "0": {
+ "name": "invalid.illegal.stray-$1.objcpp"
+ }
+ }
+ }
+ ]
+ },
+ "preprocessor-rule-conditional-line": {
+ "patterns": [
+ {
+ "match": "(?:\\bdefined\\b\\s*$)|(?:\\bdefined\\b(?=\\s*\\(*\\s*(?:(?!defined\\b)[a-zA-Z_$][\\w$]*\\b)\\s*\\)*\\s*(?:\\n|//|/\\*|\\?|\\:|&&|\\|\\||\\\\\\s*\\n)))",
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ {
+ "match": "\\bdefined\\b",
+ "name": "invalid.illegal.macro-name.objcpp"
+ },
+ {
+ "include": "#comments-c"
+ },
+ {
+ "include": "#strings-c"
+ },
+ {
+ "include": "#number_literal"
+ },
+ {
+ "begin": "\\?",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.objcpp"
+ }
+ },
+ "end": ":",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "match": "[a-zA-Z_$][\\w$]*",
+ "name": "entity.name.function.preprocessor.objcpp"
+ },
+ {
+ "include": "#line_continuation_character"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "\\)|(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-disabled": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments-c"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-elif"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-else"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-elif"
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "contentName": "comment.block.preprocessor.if-branch.objcpp",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-disabled-block": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments-c"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-elif-block"
+ },
+ {
+ "include": "#preprocessor-rule-enabled-else-block"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-elif"
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#block_innards-c"
+ }
+ ]
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "contentName": "comment.block.preprocessor.if-branch.in-block.objcpp",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-disabled-elif": {
+ "begin": "^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0+\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:elif|else|endif)\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments-c"
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "contentName": "comment.block.preprocessor.elif-branch.objcpp",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ },
+ "3": {
+ "name": "constant.numeric.preprocessor.objcpp"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments-c"
+ },
+ {
+ "begin": "^\\s*((#)\\s*else\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "contentName": "comment.block.preprocessor.else-branch.objcpp",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "contentName": "comment.block.preprocessor.if-branch.objcpp",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-block": {
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*if\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "^\\s*((#)\\s*endif\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments-c"
+ },
+ {
+ "begin": "^\\s*((#)\\s*else\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "contentName": "comment.block.preprocessor.else-branch.in-block.objcpp",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*((#)\\s*elif\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "contentName": "comment.block.preprocessor.if-branch.in-block.objcpp",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "patterns": [
+ {
+ "include": "#block_innards-c"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-elif": {
+ "begin": "^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments-c"
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:endif)\\b))",
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*(else)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "contentName": "comment.block.preprocessor.elif-branch.objcpp",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*((#)\\s*(elif)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "contentName": "comment.block.preprocessor.elif-branch.objcpp",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-elif-block": {
+ "begin": "^\\s*((#)\\s*elif\\b)(?=\\s*\\(*\\b0*1\\b\\)*\\s*(?:$|//|/\\*))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "begin": "\\G(?=.)(?!//|/\\*(?!.*\\\\\\s*\\n))",
+ "end": "(?=//)|(?=/\\*(?!.*\\\\\\s*\\n))|(?<!\\\\)(?=\\n)",
+ "name": "meta.preprocessor.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-conditional-line"
+ }
+ ]
+ },
+ {
+ "include": "#comments-c"
+ },
+ {
+ "begin": "\\n",
+ "end": "(?=^\\s*((#)\\s*(?:endif)\\b))",
+ "patterns": [
+ {
+ "begin": "^\\s*((#)\\s*(else)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "contentName": "comment.block.preprocessor.elif-branch.in-block.objcpp",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*((#)\\s*(elif)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*(?:else|elif|endif)\\b))",
+ "contentName": "comment.block.preprocessor.elif-branch.objcpp",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "include": "#block_innards-c"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-else": {
+ "begin": "^\\s*((#)\\s*else\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-else-block": {
+ "begin": "^\\s*((#)\\s*else\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "1": {
+ "name": "keyword.control.directive.conditional.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.directive.objcpp"
+ }
+ },
+ "end": "(?=^\\s*((#)\\s*endif\\b))",
+ "patterns": [
+ {
+ "include": "#block_innards-c"
+ }
+ ]
+ },
+ "preprocessor-rule-define-line-contents": {
+ "patterns": [
+ {
+ "include": "#vararg_ellipses-c"
+ },
+ {
+ "match": "(?-mix:##?[a-zA-Z_]\\w*(?!\\w))",
+ "name": "variable.other.macro.argument.objcpp"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objcpp"
+ }
+ },
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.objcpp"
+ }
+ },
+ "name": "meta.block.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-blocks"
+ }
+ ]
+ },
+ {
+ "match": "\\(",
+ "name": "punctuation.section.parens.begin.bracket.round.objcpp"
+ },
+ {
+ "match": "\\)",
+ "name": "punctuation.section.parens.end.bracket.round.objcpp"
+ },
+ {
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|return|typeid|alignof|alignas|sizeof|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas|asm|__asm__|auto|bool|_Bool|char|_Complex|double|enum|float|_Imaginary|int|long|short|signed|struct|typedef|union|unsigned|void)\\s*\\()\n(?=\n (?:[A-Za-z_][A-Za-z0-9_]*+|::)++\\s*\\( # actual name\n |\n (?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\\s*\\(\n)",
+ "end": "(?<=\\))(?!\\w)|(?<!\\\\)(?=\\s*\\n)",
+ "name": "meta.function.objcpp",
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-functions"
+ }
+ ]
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": "\"|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.double.objcpp",
+ "patterns": [
+ {
+ "include": "#string_escaped_char-c"
+ },
+ {
+ "include": "#string_placeholder-c"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.objcpp"
+ }
+ },
+ "end": "'|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.objcpp"
+ }
+ },
+ "name": "string.quoted.single.objcpp",
+ "patterns": [
+ {
+ "include": "#string_escaped_char-c"
+ },
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ {
+ "include": "#access-method"
+ },
+ {
+ "include": "#access-member"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "preprocessor-rule-define-line-blocks": {
+ "patterns": [
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.bracket.curly.objcpp"
+ }
+ },
+ "end": "}|(?=\\s*#\\s*(?:elif|else|endif)\\b)|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.bracket.curly.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-blocks"
+ },
+ {
+ "include": "#preprocessor-rule-define-line-contents"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-define-line-contents"
+ }
+ ]
+ },
+ "preprocessor-rule-define-line-functions": {
+ "patterns": [
+ {
+ "include": "#comments-c"
+ },
+ {
+ "include": "#storage_types_c"
+ },
+ {
+ "include": "#vararg_ellipses-c"
+ },
+ {
+ "include": "#access-method"
+ },
+ {
+ "include": "#access-member"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|return|typeid|alignof|alignas|sizeof|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.objcpp"
+ },
+ "2": {
+ "name": "punctuation.section.arguments.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "(\\))|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.arguments.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-functions"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "(\\))|(?<!\\\\)(?=\\s*\\n)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-define-line-functions"
+ }
+ ]
+ },
+ {
+ "include": "#preprocessor-rule-define-line-contents"
+ }
+ ]
+ },
+ "function-innards-c": {
+ "patterns": [
+ {
+ "include": "#comments-c"
+ },
+ {
+ "include": "#storage_types_c"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#vararg_ellipses-c"
+ },
+ {
+ "name": "meta.function.definition.parameters.objcpp",
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|return|typeid|alignof|alignas|sizeof|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(\n(?:[A-Za-z_][A-Za-z0-9_]*+|::)++ # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.objcpp"
+ },
+ "2": {
+ "name": "punctuation.section.parameters.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "\\)|:",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parameters.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#probably_a_parameter"
+ },
+ {
+ "include": "#function-innards-c"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-innards-c"
+ }
+ ]
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "function-call-innards-c": {
+ "patterns": [
+ {
+ "include": "#comments-c"
+ },
+ {
+ "include": "#storage_types_c"
+ },
+ {
+ "include": "#access-method"
+ },
+ {
+ "include": "#access-member"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "begin": "(?x)\n(?!(?:while|for|do|if|else|switch|catch|return|typeid|alignof|alignas|sizeof|and|and_eq|bitand|bitor|compl|not|not_eq|or|or_eq|typeid|xor|xor_eq|alignof|alignas)\\s*\\()\n(\n(?:new)\\s*((?:(?:<(?:[\\s<>,\\w])*>\\s*))?) # actual name\n|\n(?:(?<=operator)(?:[-*&<>=+!]+|\\(\\)|\\[\\]))\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.memory.new.objcpp"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#template_call_innards"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.section.arguments.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards-c"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!\\w)(?!\\s*(?:not|compl|sizeof|new|delete|not_eq|bitand|xor|bitor|and|or|throw|and_eq|xor_eq|or_eq|alignof|alignas|typeid|noexcept|static_cast|dynamic_cast|const_cast|reinterpret_cast|while|for|do|if|else|goto|switch|try|catch|return|break|case|continue|default|auto|void|char|short|int|signed|unsigned|long|float|double|bool|wchar_t|u_char|u_short|u_int|u_long|ushort|uint|u_quad_t|quad_t|qaddr_t|caddr_t|daddr_t|div_t|dev_t|fixpt_t|blkcnt_t|blksize_t|gid_t|in_addr_t|in_port_t|ino_t|key_t|mode_t|nlink_t|id_t|pid_t|off_t|segsz_t|swblk_t|uid_t|id_t|clock_t|size_t|ssize_t|time_t|useconds_t|suseconds_t|pthread_attr_t|pthread_cond_t|pthread_condattr_t|pthread_mutex_t|pthread_mutexattr_t|pthread_once_t|pthread_rwlock_t|pthread_rwlockattr_t|pthread_t|pthread_key_t|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|int_least8_t|int_least16_t|int_least32_t|int_least64_t|uint_least8_t|uint_least16_t|uint_least32_t|uint_least64_t|int_fast8_t|int_fast16_t|int_fast32_t|int_fast64_t|uint_fast8_t|uint_fast16_t|uint_fast32_t|uint_fast64_t|intptr_t|uintptr_t|intmax_t|intmax_t|uintmax_t|uintmax_t|NULL|true|false|nullptr|class|struct|union|enum|const|static|volatile|register|restrict|extern|inline|constexpr|mutable|friend|explicit|virtual|volatile|const|noexcept|constexpr|mutable|constexpr|consteval|private|protected|public|this|template|namespace|using|operator|typedef|decltype|typename|asm|__asm__|concept|requires|export|thread_local|atomic_cancel|atomic_commit|atomic_noexcept|co_await|co_return|co_yield|import|module|reflexpr|synchronized)\\s*\\()((?:[a-zA-Z_]\\w*\\s*(?:(?:<(?:[\\s<>,\\w])*>\\s*))?::)*)\\s*([a-zA-Z_]\\w*)\\s*(?:((?:<(?:[\\s<>,\\w])*>\\s*)))?(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#scope_resolution"
+ }
+ ]
+ },
+ "2": {
+ "name": "entity.name.function.call.objcpp"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#template_call_innards"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.section.arguments.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arguments.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards-c"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.bracket.round.objcpp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.bracket.round.objcpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call-innards-c"
+ }
+ ]
+ },
+ {
+ "include": "#block_innards-c"
+ }
+ ]
+ }
+ }
+ },
+ "disabled": {
+ "begin": "^\\s*#\\s*if(n?def)?\\b.*$",
+ "comment": "eat nested preprocessor if(def)s",
+ "end": "^\\s*#\\s*endif\\b.*$",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ "implementation_innards": {
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-enabled-implementation"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-implementation"
+ },
+ {
+ "include": "#preprocessor-rule-other-implementation"
+ },
+ {
+ "include": "#property_directive"
+ },
+ {
+ "include": "#method_super"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "interface_innards": {
+ "patterns": [
+ {
+ "include": "#preprocessor-rule-enabled-interface"
+ },
+ {
+ "include": "#preprocessor-rule-disabled-interface"
+ },
+ {
+ "include": "#preprocessor-rule-other-interface"
+ },
+ {
+ "include": "#properties"
+ },
+ {
+ "include": "#protocol_list"
+ },
+ {
+ "include": "#method"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "method": {
+ "begin": "^(-|\\+)\\s*",
+ "end": "(?=\\{|#)|;",
+ "name": "meta.function.objcpp",
+ "patterns": [
+ {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.type.begin.objcpp"
+ }
+ },
+ "end": "(\\))\\s*(\\w+\\b)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.type.end.objcpp"
+ },
+ "2": {
+ "name": "entity.name.function.objcpp"
+ }
+ },
+ "name": "meta.return-type.objcpp",
+ "patterns": [
+ {
+ "include": "#protocol_list"
+ },
+ {
+ "include": "#protocol_type_qualifier"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "match": "\\b\\w+(?=:)",
+ "name": "entity.name.function.name-of-parameter.objcpp"
+ },
+ {
+ "begin": "((:))\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.name-of-parameter.objcpp"
+ },
+ "2": {
+ "name": "punctuation.separator.arguments.objcpp"
+ },
+ "3": {
+ "name": "punctuation.definition.type.begin.objcpp"
+ }
+ },
+ "end": "(\\))\\s*(\\w+\\b)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.type.end.objcpp"
+ },
+ "2": {
+ "name": "variable.parameter.function.objcpp"
+ }
+ },
+ "name": "meta.argument-type.objcpp",
+ "patterns": [
+ {
+ "include": "#protocol_list"
+ },
+ {
+ "include": "#protocol_type_qualifier"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "method_super": {
+ "begin": "^(?=-|\\+)",
+ "end": "(?<=\\})|(?=#)",
+ "name": "meta.function-with-body.objcpp",
+ "patterns": [
+ {
+ "include": "#method"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ "pragma-mark": {
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "2": {
+ "name": "keyword.control.import.pragma.objcpp"
+ },
+ "3": {
+ "name": "meta.toc-list.pragma-mark.objcpp"
+ }
+ },
+ "match": "^\\s*(#\\s*(pragma\\s+mark)\\s+(.*))",
+ "name": "meta.section.objcpp"
+ },
+ "preprocessor-rule-disabled-implementation": {
+ "begin": "^\\s*(#(if)\\s+(0)\\b).*",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "2": {
+ "name": "keyword.control.import.if.objcpp"
+ },
+ "3": {
+ "name": "constant.numeric.preprocessor.objcpp"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "begin": "^\\s*(#\\s*(else)\\b)",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "2": {
+ "name": "keyword.control.import.else.objcpp"
+ }
+ },
+ "end": "(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "include": "#interface_innards"
+ }
+ ]
+ },
+ {
+ "begin": "",
+ "end": "(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "name": "comment.block.preprocessor.if-branch.objcpp",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-disabled-interface": {
+ "begin": "^\\s*(#(if)\\s+(0)\\b).*",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "2": {
+ "name": "keyword.control.import.if.objcpp"
+ },
+ "3": {
+ "name": "constant.numeric.preprocessor.objcpp"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "begin": "^\\s*(#\\s*(else)\\b)",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "2": {
+ "name": "keyword.control.import.else.objcpp"
+ }
+ },
+ "end": "(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "include": "#interface_innards"
+ }
+ ]
+ },
+ {
+ "begin": "",
+ "end": "(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "name": "comment.block.preprocessor.if-branch.objcpp",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-implementation": {
+ "begin": "^\\s*(#(if)\\s+(0*1)\\b)",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "2": {
+ "name": "keyword.control.import.if.objcpp"
+ },
+ "3": {
+ "name": "constant.numeric.preprocessor.objcpp"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "begin": "^\\s*(#\\s*(else)\\b).*",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "2": {
+ "name": "keyword.control.import.else.objcpp"
+ }
+ },
+ "contentName": "comment.block.preprocessor.else-branch.objcpp",
+ "end": "(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "",
+ "end": "(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "include": "#implementation_innards"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-enabled-interface": {
+ "begin": "^\\s*(#(if)\\s+(0*1)\\b)",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "2": {
+ "name": "keyword.control.import.if.objcpp"
+ },
+ "3": {
+ "name": "constant.numeric.preprocessor.objcpp"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "begin": "^\\s*(#\\s*(else)\\b).*",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "2": {
+ "name": "keyword.control.import.else.objcpp"
+ }
+ },
+ "contentName": "comment.block.preprocessor.else-branch.objcpp",
+ "end": "(?=^\\s*#\\s*endif\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "include": "#disabled"
+ },
+ {
+ "include": "#pragma-mark"
+ }
+ ]
+ },
+ {
+ "begin": "",
+ "end": "(?=^\\s*#\\s*(else|endif)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "patterns": [
+ {
+ "include": "#interface_innards"
+ }
+ ]
+ }
+ ]
+ },
+ "preprocessor-rule-other-implementation": {
+ "begin": "^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "2": {
+ "name": "keyword.control.import.objcpp"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b).*?(?:(?=(?://|/\\*))|$)",
+ "patterns": [
+ {
+ "include": "#implementation_innards"
+ }
+ ]
+ },
+ "preprocessor-rule-other-interface": {
+ "begin": "^\\s*(#\\s*(if(n?def)?)\\b.*?(?:(?=(?://|/\\*))|$))",
+ "captures": {
+ "1": {
+ "name": "meta.preprocessor.objcpp"
+ },
+ "2": {
+ "name": "keyword.control.import.objcpp"
+ }
+ },
+ "end": "^\\s*(#\\s*(endif)\\b).*?(?:(?=(?://|/\\*))|$)",
+ "patterns": [
+ {
+ "include": "#interface_innards"
+ }
+ ]
+ },
+ "properties": {
+ "patterns": [
+ {
+ "begin": "((@)property)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.property.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.objcpp"
+ },
+ "3": {
+ "name": "punctuation.section.scope.begin.objcpp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.scope.end.objcpp"
+ }
+ },
+ "name": "meta.property-with-attributes.objcpp",
+ "patterns": [
+ {
+ "match": "\\b(getter|setter|readonly|readwrite|assign|retain|copy|nonatomic|atomic|strong|weak|nonnull|nullable|null_resettable|null_unspecified|class|direct)\\b",
+ "name": "keyword.other.property.attribute.objcpp"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.property.objcpp"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.objcpp"
+ }
+ },
+ "match": "((@)property)\\b",
+ "name": "meta.property.objcpp"
+ }
+ ]
+ },
+ "property_directive": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.keyword.objcpp"
+ }
+ },
+ "match": "(@)(dynamic|synthesize)\\b",
+ "name": "keyword.other.property.directive.objcpp"
+ },
+ "protocol_list": {
+ "begin": "(<)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.scope.begin.objcpp"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.scope.end.objcpp"
+ }
+ },
+ "name": "meta.protocol-list.objcpp",
+ "patterns": [
+ {
+ "match": "\\bNS(GlyphStorage|M(utableCopying|enuItem)|C(hangeSpelling|o(ding|pying|lorPicking(Custom|Default)))|T(oolbarItemValidations|ext(Input|AttachmentCell))|I(nputServ(iceProvider|erMouseTracker)|gnoreMisspelledWords)|Obj(CTypeSerializationCallBack|ect)|D(ecimalNumberBehaviors|raggingInfo)|U(serInterfaceValidations|RL(HandleClient|DownloadDelegate|ProtocolClient|AuthenticationChallengeSender))|Validated(ToobarItem|UserInterfaceItem)|Locking)\\b",
+ "name": "support.other.protocol.objcpp"
+ }
+ ]
+ },
+ "protocol_type_qualifier": {
+ "match": "\\b(in|out|inout|oneway|bycopy|byref|nonnull|nullable|_Nonnull|_Nullable|_Null_unspecified)\\b",
+ "name": "storage.modifier.protocol.objcpp"
+ },
+ "special_variables": {
+ "patterns": [
+ {
+ "match": "\\b_cmd\\b",
+ "name": "variable.other.selector.objcpp"
+ },
+ {
+ "match": "\\b(self|super)\\b",
+ "name": "variable.language.objcpp"
+ }
+ ]
+ },
+ "string_escaped_char": {
+ "patterns": [
+ {
+ "match": "(?x)\\\\ (\n\\\\\t\t\t |\n[abefnprtv'\"?] |\n[0-3]\\d{,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} )",
+ "name": "constant.character.escape.objcpp"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unknown-escape.objcpp"
+ }
+ ]
+ },
+ "string_placeholder": {
+ "patterns": [
+ {
+ "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",
+ "name": "constant.other.placeholder.objcpp"
+ },
+ {
+ "match": "(%)(?!\"\\s*(PRI|SCN))",
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.placeholder.objcpp"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/ocaml.tmLanguage.json b/node_modules/shiki/languages/ocaml.tmLanguage.json
new file mode 100644
index 0000000..f32d70e
--- /dev/null
+++ b/node_modules/shiki/languages/ocaml.tmLanguage.json
@@ -0,0 +1,2961 @@
+{
+ "name": "ocaml",
+ "scopeName": "source.ocaml",
+ "fileTypes": [".ml", ".mli"],
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "#decl"
+ }
+ ],
+ "repository": {
+ "attribute": {
+ "begin": "(\\[)[[:space:]]*((?<![#\\-:!?.@*/&%^+<=>|~$])@{1,3}(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "\\]",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
+ },
+ "2": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attributePayload"
+ }
+ ]
+ },
+ "attributeIdentifier": {
+ "match": "((?<![#\\-:!?.@*/&%^+<=>|~$])%(?![#\\-:!?.@*/&%^+<=>|~$]))((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))",
+ "captures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ },
+ "2": {
+ "name": "punctuation.definition.tag"
+ }
+ }
+ },
+ "attributePayload": {
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]%|^%))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "((?<![#\\-:!?.@*/&%^+<=>|~$])[:\\?](?![#\\-:!?.@*/&%^+<=>|~$]))|(?<=[[:space:]])|(?=\\])",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#pathModuleExtended"
+ },
+ {
+ "include": "#pathRecord"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(?=\\])",
+ "patterns": [
+ {
+ "include": "#signature"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\?|^\\?))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(?=\\])",
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\?|^\\?))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(?=\\])|\\bwhen\\b",
+ "endCaptures": {
+ "1": {}
+ },
+ "patterns": [
+ {
+ "include": "#pattern"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]when|^when))(?![[:word:]]))",
+ "end": "(?=\\])",
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#term"
+ }
+ ]
+ },
+ "bindClassTerm": {
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))",
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])(:)|(=)(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ },
+ "2": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))",
+ "end": "(?=(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)[[:space:]]*,|[^[:space:][:lower:]%])|(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)|(?=\\btype\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "entity.name.function strong emphasis"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attributeIdentifier"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "include": "#bindTermArgs"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$])|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#literalClassType"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "\\band\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ }
+ ]
+ },
+ "bindClassType": {
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))",
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])(:)|(=)(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ },
+ "2": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]class|^class|[^[:word:]]type|^type))(?![[:word:]]))",
+ "end": "(?=(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)[[:space:]]*,|[^[:space:][:lower:]%])|(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)|(?=\\btype\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "entity.name.function strong emphasis"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attributeIdentifier"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "include": "#bindTermArgs"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$])|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#literalClassType"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "\\band\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#literalClassType"
+ }
+ ]
+ }
+ ]
+ },
+ "bindConstructor": {
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]exception|^exception))(?![[:word:]]))|(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\+=|^\\+=|[^#\\-:!?.@*/&%^+<=>|~$]=|^=|[^#\\-:!?.@*/&%^+<=>|~$]\\||^\\|))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(:)|(\\bof\\b)|((?<![#\\-:!?.@*/&%^+<=>|~$])\\|(?![#\\-:!?.@*/&%^+<=>|~$]))|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ },
+ "2": {
+ "name": "punctuation.definition.tag"
+ },
+ "3": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attributeIdentifier"
+ },
+ {
+ "match": "\\.\\.",
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ },
+ {
+ "match": "\\b(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)\\b(?![[:space:]]*(?:\\.|\\([^\\*]))",
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]of|^of))(?![[:word:]]))",
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])\\|(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "bindSignature": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))",
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "endCaptures": {
+ "0": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pathModuleExtended"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "\\band\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#signature"
+ }
+ ]
+ }
+ ]
+ },
+ "bindStructure": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]and|^and))(?![[:word:]]))|(?=[[:upper:]])",
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])(:(?!=))|(:?=)(?![#\\-:!?.@*/&%^+<=>|~$])|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|open|type|val)\\b)",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ },
+ "2": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "\\bmodule\\b",
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
+ },
+ {
+ "match": "(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)",
+ "name": "entity.name.function strong emphasis"
+ },
+ {
+ "begin": "\\((?!\\))",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$]):(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "end": "(?=\\))",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#signature"
+ }
+ ]
+ },
+ {
+ "include": "#variableModule"
+ }
+ ]
+ },
+ {
+ "include": "#literalUnit"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "\\b(and)\\b|((?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$]))|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
+ },
+ "2": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#signature"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:=|^:=|[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "\\b(?:(and)|(with))\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
+ },
+ "2": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#structure"
+ }
+ ]
+ }
+ ]
+ },
+ "bindTerm": {
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]!|^!))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]val|^val))(?![[:word:]]))",
+ "end": "(\\bmodule\\b)|(\\bopen\\b)|(?<![#\\-:!?.@*/&%^+<=>|~$])(:)|((?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$]))(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "endCaptures": {
+ "1": {
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
+ },
+ "2": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ },
+ "3": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ },
+ "4": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]!|^!))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]external|^external|[^[:word:]]let|^let|[^[:word:]]method|^method|[^[:word:]]val|^val))(?![[:word:]]))",
+ "end": "(?=\\b(?:module|open)\\b)|(?=(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)[[:space:]]*,|[^[:space:][:lower:]%])|(\\brec\\b)|((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ },
+ "2": {
+ "name": "entity.name.function strong emphasis"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attributeIdentifier"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]rec|^rec))(?![[:word:]]))",
+ "end": "((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(?=[^[:space:][:alpha:]])",
+ "endCaptures": {
+ "0": {
+ "name": "entity.name.function strong emphasis"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#bindTermArgs"
+ }
+ ]
+ },
+ {
+ "include": "#bindTermArgs"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))",
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "patterns": [
+ {
+ "include": "#declModule"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]open|^open))(?![[:word:]]))",
+ "end": "(?=\\bin\\b)|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "patterns": [
+ {
+ "include": "#pathModuleSimple"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "\\btype\\b|(?=[^[:space:]])",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control"
+ }
+ }
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))",
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])\\.(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "endCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#pattern"
+ }
+ ]
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "\\band\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ }
+ ]
+ },
+ "bindTermArgs": {
+ "patterns": [
+ {
+ "begin": "~|\\?",
+ "end": ":|(?=[^[:space:]])",
+ "applyEndPatternLast": true,
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]~|^~|[^#\\-:!?.@*/&%^+<=>|~$]\\?|^\\?))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)|(?<=\\))",
+ "endCaptures": {
+ "0": {
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "\\((?!\\*)",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?<=\\()",
+ "end": ":|=",
+ "endCaptures": {
+ "0": {
+ "name": "keyword"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=:)",
+ "end": "=|(?=\\))",
+ "endCaptures": {
+ "0": {
+ "name": "keyword"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#pattern"
+ }
+ ]
+ },
+ "bindType": {
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]type|^type))(?![[:word:]]))",
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])\\+=|=(?![#\\-:!?.@*/&%^+<=>|~$])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attributeIdentifier"
+ },
+ {
+ "include": "#pathType"
+ },
+ {
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
+ "name": "entity.name.function strong"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\+=|^\\+=|[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "\\band\\b|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#bindConstructor"
+ }
+ ]
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ },
+ {
+ "include": "#extension"
+ },
+ {
+ "include": "#commentBlock"
+ },
+ {
+ "include": "#commentDoc"
+ }
+ ]
+ },
+ "commentBlock": {
+ "begin": "\\(\\*(?!\\*[^\\)])",
+ "end": "\\*\\)",
+ "name": "comment constant.regexp meta.separator.markdown",
+ "contentName": "emphasis",
+ "patterns": [
+ {
+ "include": "#commentBlock"
+ },
+ {
+ "include": "#commentDoc"
+ }
+ ]
+ },
+ "commentDoc": {
+ "begin": "\\(\\*\\*",
+ "end": "\\*\\)",
+ "name": "comment constant.regexp meta.separator.markdown",
+ "patterns": [
+ {
+ "match": "\\*"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "decl": {
+ "patterns": [
+ {
+ "include": "#declClass"
+ },
+ {
+ "include": "#declException"
+ },
+ {
+ "include": "#declInclude"
+ },
+ {
+ "include": "#declModule"
+ },
+ {
+ "include": "#declOpen"
+ },
+ {
+ "include": "#declTerm"
+ },
+ {
+ "include": "#declType"
+ }
+ ]
+ },
+ "declClass": {
+ "begin": "\\bclass\\b",
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.class constant.numeric markup.underline"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]class|^class))(?![[:word:]]))",
+ "end": "\\btype\\b|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|val)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.class constant.numeric markup.underline"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#bindClassTerm"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))",
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "patterns": [
+ {
+ "include": "#bindClassType"
+ }
+ ]
+ }
+ ]
+ },
+ "declException": {
+ "begin": "\\bexception\\b",
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword markup.underline"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attributeIdentifier"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "#bindConstructor"
+ }
+ ]
+ },
+ "declInclude": {
+ "begin": "\\binclude\\b",
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attributeIdentifier"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "#signature"
+ }
+ ]
+ },
+ "declModule": {
+ "begin": "(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))|\\bmodule\\b",
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename markup.underline"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))",
+ "end": "(\\btype\\b)|(?=[[:upper:]])",
+ "endCaptures": {
+ "0": {
+ "name": "keyword"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attributeIdentifier"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "\\brec\\b",
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))",
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "patterns": [
+ {
+ "include": "#bindSignature"
+ }
+ ]
+ },
+ {
+ "begin": "(?=[[:upper:]])",
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "patterns": [
+ {
+ "include": "#bindStructure"
+ }
+ ]
+ }
+ ]
+ },
+ "declOpen": {
+ "begin": "\\bopen\\b",
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attributeIdentifier"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "#pathModuleExtended"
+ }
+ ]
+ },
+ "declTerm": {
+ "begin": "\\b(?:(external|val)|(method)|(let))\\b(!?)",
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.type markup.underline"
+ },
+ "2": {
+ "name": "storage.type markup.underline"
+ },
+ "3": {
+ "name": "keyword.control markup.underline"
+ },
+ "4": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "#bindTerm"
+ }
+ ]
+ },
+ "declType": {
+ "begin": "(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))|\\btype\\b",
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword markup.underline"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "#bindType"
+ }
+ ]
+ },
+ "extension": {
+ "begin": "(\\[)((?<![#\\-:!?.@*/&%^+<=>|~$])%{1,3}(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "\\]",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
+ },
+ "2": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attributePayload"
+ }
+ ]
+ },
+ "literal": {
+ "patterns": [
+ {
+ "include": "#termConstructor"
+ },
+ {
+ "include": "#literalArray"
+ },
+ {
+ "include": "#literalBoolean"
+ },
+ {
+ "include": "#literalCharacter"
+ },
+ {
+ "include": "#literalList"
+ },
+ {
+ "include": "#literalNumber"
+ },
+ {
+ "include": "#literalObjectTerm"
+ },
+ {
+ "include": "#literalString"
+ },
+ {
+ "include": "#literalRecord"
+ },
+ {
+ "include": "#literalUnit"
+ }
+ ]
+ },
+ "literalArray": {
+ "begin": "\\[\\|",
+ "end": "\\|\\]",
+ "captures": {
+ "0": {
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ },
+ "literalBoolean": {
+ "match": "\\bfalse|true\\b",
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
+ },
+ "literalCharacter": {
+ "begin": "(?<![[:word:]])'",
+ "end": "'",
+ "name": "markup.punctuation.quote.beginning",
+ "patterns": [
+ {
+ "include": "#literalCharacterEscape"
+ }
+ ]
+ },
+ "literalCharacterEscape": {
+ "match": "\\\\(?:[\\\\\"'ntbr]|[[:digit:]][[:digit:]][[:digit:]]|x[[:xdigit:]][[:xdigit:]]|o[0-3][0-7][0-7])"
+ },
+ "literalClassType": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "\\bobject\\b",
+ "end": "\\bend\\b",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag emphasis"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\binherit\\b",
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\bas\\b",
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#variablePattern"
+ }
+ ]
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "include": "#pattern"
+ },
+ {
+ "include": "#declTerm"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]"
+ }
+ ]
+ },
+ "literalList": {
+ "patterns": [
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "captures": {
+ "0": {
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ }
+ ]
+ },
+ "literalNumber": {
+ "match": "(?<![[:alpha:]])[[:digit:]][[:digit:]]*(\\.[[:digit:]][[:digit:]]*)?",
+ "name": "constant.numeric"
+ },
+ "literalObjectTerm": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "\\bobject\\b",
+ "end": "\\bend\\b",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag emphasis"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\binherit\\b",
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\bas\\b",
+ "end": ";;|(?=\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#variablePattern"
+ }
+ ]
+ },
+ {
+ "include": "#term"
+ }
+ ]
+ },
+ {
+ "include": "#pattern"
+ },
+ {
+ "include": "#declTerm"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]"
+ }
+ ]
+ },
+ "literalRecord": {
+ "begin": "\\{",
+ "end": "\\}",
+ "captures": {
+ "0": {
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong strong"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?<=\\{|;)",
+ "end": "(:)|(=)|(;)|(with)|(?=\\})",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ },
+ "2": {
+ "name": "support.type strong"
+ },
+ "3": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ },
+ "4": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pathModulePrefixSimple"
+ },
+ {
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))",
+ "end": "(:)|(=)|(;)|(?=\\})",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ },
+ "2": {
+ "name": "support.type strong"
+ },
+ "3": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(;)|(=)|(?=\\})",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ },
+ "2": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": ";|(?=\\})",
+ "endCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ }
+ ]
+ },
+ "literalString": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "end": "\"",
+ "name": "string beginning.punctuation.definition.quote.markdown",
+ "patterns": [
+ {
+ "include": "#literalStringEscape"
+ }
+ ]
+ },
+ {
+ "begin": "(\\{)([_[:lower:]]*?)(\\|)",
+ "end": "(\\|)(\\2)(\\})",
+ "name": "string beginning.punctuation.definition.quote.markdown",
+ "patterns": [
+ {
+ "include": "#literalStringEscape"
+ }
+ ]
+ }
+ ]
+ },
+ "literalStringEscape": {
+ "match": "\\\\(?:[\\\\\"ntbr]|[[:digit:]][[:digit:]][[:digit:]]|x[[:xdigit:]][[:xdigit:]]|o[0-3][0-7][0-7])"
+ },
+ "literalUnit": {
+ "match": "\\(\\)",
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
+ },
+ "pathModuleExtended": {
+ "patterns": [
+ {
+ "include": "#pathModulePrefixExtended"
+ },
+ {
+ "match": "(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)",
+ "name": "entity.name.class constant.numeric"
+ }
+ ]
+ },
+ "pathModulePrefixExtended": {
+ "begin": "(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\.|$|\\()",
+ "end": "(?![[:space:]\\.]|$|\\()",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.class constant.numeric"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "keyword.control"
+ }
+ },
+ "patterns": [
+ {
+ "match": "((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\)))",
+ "name": "string.other.link variable.language variable.parameter emphasis"
+ },
+ {
+ "include": "#structure"
+ }
+ ]
+ },
+ {
+ "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$])\\.(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "end": "((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\.|$))|((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*(?:$|\\()))|((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\)))|(?![[:space:]\\.[:upper:]]|$|\\()",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword strong"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.class constant.numeric"
+ },
+ "2": {
+ "name": "entity.name.function strong"
+ },
+ "3": {
+ "name": "string.other.link variable.language variable.parameter emphasis"
+ }
+ }
+ }
+ ]
+ },
+ "pathModulePrefixExtendedParens": {
+ "begin": "\\(",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "keyword.control"
+ }
+ },
+ "patterns": [
+ {
+ "match": "((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\)))",
+ "name": "string.other.link variable.language variable.parameter emphasis"
+ },
+ {
+ "include": "#structure"
+ }
+ ]
+ },
+ "pathModulePrefixSimple": {
+ "begin": "(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\.)",
+ "end": "(?![[:space:]\\.])",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.class constant.numeric"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$])\\.(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "end": "((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*\\.))|((?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)(?=[[:space:]]*))|(?![[:space:]\\.[:upper:]])",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword strong"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.class constant.numeric"
+ },
+ "2": {
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
+ }
+ }
+ }
+ ]
+ },
+ "pathModuleSimple": {
+ "patterns": [
+ {
+ "include": "#pathModulePrefixSimple"
+ },
+ {
+ "match": "(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)",
+ "name": "entity.name.class constant.numeric"
+ }
+ ]
+ },
+ "pathRecord": {
+ "patterns": [
+ {
+ "begin": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
+ "end": "(?=[^[:space:]\\.])(?!\\(\\*)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\.|^\\.))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?<![#\\-:!?.@*/&%^+<=>|~$])\\.(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "end": "((?<![#\\-:!?.@*/&%^+<=>|~$])\\.(?![#\\-:!?.@*/&%^+<=>|~$]))|((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|mutable|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(?<=\\))|(?<=\\])",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword strong"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword strong"
+ },
+ "2": {
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pathModulePrefixSimple"
+ },
+ {
+ "begin": "\\((?!\\*)",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "captures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#pattern"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "pattern": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#patternArray"
+ },
+ {
+ "include": "#patternLazy"
+ },
+ {
+ "include": "#patternList"
+ },
+ {
+ "include": "#patternMisc"
+ },
+ {
+ "include": "#patternModule"
+ },
+ {
+ "include": "#patternRecord"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#patternParens"
+ },
+ {
+ "include": "#patternType"
+ },
+ {
+ "include": "#variablePattern"
+ },
+ {
+ "include": "#termOperator"
+ }
+ ]
+ },
+ "patternArray": {
+ "begin": "\\[\\|",
+ "end": "\\|\\]",
+ "captures": {
+ "0": {
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#pattern"
+ }
+ ]
+ },
+ "patternLazy": {
+ "match": "lazy",
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ },
+ "patternList": {
+ "begin": "\\[",
+ "end": "\\]",
+ "captures": {
+ "0": {
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#pattern"
+ }
+ ]
+ },
+ "patternMisc": {
+ "match": "((?<![#\\-:!?.@*/&%^+<=>|~$]),(?![#\\-:!?.@*/&%^+<=>|~$]))|([#\\-:!?.@*/&%^+<=>|~$]+)|\\b(as)\\b",
+ "captures": {
+ "1": {
+ "name": "string.regexp strong"
+ },
+ "2": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ },
+ "3": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ }
+ },
+ "patternModule": {
+ "begin": "\\bmodule\\b",
+ "end": "(?=\\))",
+ "beginCaptures": {
+ "0": {
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#declModule"
+ }
+ ]
+ },
+ "patternParens": {
+ "begin": "\\((?!\\))",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$]):(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "end": "(?=\\))",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "include": "#pattern"
+ }
+ ]
+ },
+ "patternRecord": {
+ "begin": "\\{",
+ "end": "\\}",
+ "captures": {
+ "0": {
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong strong"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?<=\\{|;)",
+ "end": "(:)|(=)|(;)|(with)|(?=\\})",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ },
+ "2": {
+ "name": "support.type strong"
+ },
+ "3": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ },
+ "4": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pathModulePrefixSimple"
+ },
+ {
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))",
+ "end": "(:)|(=)|(;)|(?=\\})",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ },
+ "2": {
+ "name": "support.type strong"
+ },
+ "3": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(;)|(=)|(?=\\})",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ },
+ "2": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": ";|(?=\\})",
+ "endCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#pattern"
+ }
+ ]
+ }
+ ]
+ },
+ "patternType": {
+ "begin": "\\btype\\b",
+ "end": "(?=\\))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#declType"
+ }
+ ]
+ },
+ "pragma": {
+ "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$])#(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#literalNumber"
+ },
+ {
+ "include": "#literalString"
+ }
+ ]
+ },
+ "signature": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#signatureLiteral"
+ },
+ {
+ "include": "#signatureFunctor"
+ },
+ {
+ "include": "#pathModuleExtended"
+ },
+ {
+ "include": "#signatureParens"
+ },
+ {
+ "include": "#signatureRecovered"
+ },
+ {
+ "include": "#signatureConstraints"
+ }
+ ]
+ },
+ "signatureConstraints": {
+ "begin": "\\bwith\\b",
+ "end": "(?=\\))|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))",
+ "end": "\\b(?:(module)|(type))\\b",
+ "endCaptures": {
+ "1": {
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
+ },
+ "2": {
+ "name": "keyword"
+ }
+ }
+ },
+ {
+ "include": "#declModule"
+ },
+ {
+ "include": "#declType"
+ }
+ ]
+ },
+ "signatureFunctor": {
+ "patterns": [
+ {
+ "begin": "\\bfunctor\\b",
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]functor|^functor))(?![[:word:]]))",
+ "end": "(\\(\\))|(\\((?!\\)))",
+ "endCaptures": {
+ "1": {
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
+ },
+ "2": {
+ "name": "punctuation.definition.tag"
+ }
+ }
+ },
+ {
+ "begin": "(?<=\\()",
+ "end": "(:)|(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ },
+ "2": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#variableModule"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#signature"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\))",
+ "end": "(\\()|((?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag"
+ },
+ "2": {
+ "name": "support.type strong"
+ }
+ }
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "patterns": [
+ {
+ "include": "#signature"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "match": "(?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "name": "support.type strong"
+ }
+ ]
+ },
+ "signatureLiteral": {
+ "begin": "\\bsig\\b",
+ "end": "\\bend\\b",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag emphasis"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "#decl"
+ }
+ ]
+ },
+ "signatureParens": {
+ "begin": "\\((?!\\))",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$]):(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "end": "(?=\\))",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#signature"
+ }
+ ]
+ },
+ {
+ "include": "#signature"
+ }
+ ]
+ },
+ "signatureRecovered": {
+ "patterns": [
+ {
+ "begin": "\\(|(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:|[^#\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?:(?<=(?:[^[:word:]]include|^include|[^[:word:]]open|^open))(?![[:word:]]))",
+ "end": "\\bmodule\\b|(?!$|[[:space:]]|\\bmodule\\b)",
+ "endCaptures": {
+ "0": {
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
+ }
+ }
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))",
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]module|^module))(?![[:word:]]))",
+ "end": "\\btype\\b",
+ "endCaptures": {
+ "0": {
+ "name": "keyword"
+ }
+ }
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]type|^type))(?![[:word:]]))",
+ "end": "\\bof\\b",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ }
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]of|^of))(?![[:word:]]))",
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "patterns": [
+ {
+ "include": "#signature"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "structure": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#structureLiteral"
+ },
+ {
+ "include": "#structureFunctor"
+ },
+ {
+ "include": "#pathModuleExtended"
+ },
+ {
+ "include": "#structureParens"
+ }
+ ]
+ },
+ "structureFunctor": {
+ "patterns": [
+ {
+ "begin": "\\bfunctor\\b",
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]functor|^functor))(?![[:word:]]))",
+ "end": "(\\(\\))|(\\((?!\\)))",
+ "endCaptures": {
+ "1": {
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
+ },
+ "2": {
+ "name": "punctuation.definition.tag"
+ }
+ }
+ },
+ {
+ "begin": "(?<=\\()",
+ "end": "(:)|(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ },
+ "2": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#variableModule"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#signature"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\))",
+ "end": "(\\()|((?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag"
+ },
+ "2": {
+ "name": "support.type strong"
+ }
+ }
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "patterns": [
+ {
+ "include": "#structure"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "match": "(?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "name": "support.type strong"
+ }
+ ]
+ },
+ "structureLiteral": {
+ "begin": "\\bstruct\\b",
+ "end": "\\bend\\b",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag emphasis"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pragma"
+ },
+ {
+ "include": "#decl"
+ }
+ ]
+ },
+ "structureParens": {
+ "begin": "\\(",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#structureUnpack"
+ },
+ {
+ "include": "#structure"
+ }
+ ]
+ },
+ "structureUnpack": {
+ "begin": "\\bval\\b",
+ "end": "(?=\\))",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ }
+ },
+ "term": {
+ "patterns": [
+ {
+ "include": "#termLet"
+ },
+ {
+ "include": "#termAtomic"
+ }
+ ]
+ },
+ "termAtomic": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#termConditional"
+ },
+ {
+ "include": "#termConstructor"
+ },
+ {
+ "include": "#termDelim"
+ },
+ {
+ "include": "#termFor"
+ },
+ {
+ "include": "#termFunction"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#termMatch"
+ },
+ {
+ "include": "#termMatchRule"
+ },
+ {
+ "include": "#termPun"
+ },
+ {
+ "include": "#termOperator"
+ },
+ {
+ "include": "#termTry"
+ },
+ {
+ "include": "#termWhile"
+ },
+ {
+ "include": "#pathRecord"
+ }
+ ]
+ },
+ "termConditional": {
+ "match": "\\b(?:if|then|else)\\b",
+ "name": "keyword.control"
+ },
+ "termConstructor": {
+ "patterns": [
+ {
+ "include": "#pathModulePrefixSimple"
+ },
+ {
+ "match": "(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)",
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong"
+ }
+ ]
+ },
+ "termDelim": {
+ "patterns": [
+ {
+ "begin": "\\((?!\\))",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ },
+ {
+ "begin": "\\bbegin\\b",
+ "end": "\\bend\\b",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#attributeIdentifier"
+ },
+ {
+ "include": "#term"
+ }
+ ]
+ }
+ ]
+ },
+ "termFor": {
+ "patterns": [
+ {
+ "begin": "\\bfor\\b",
+ "end": "\\bdone\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]for|^for))(?![[:word:]]))",
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])=(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "endCaptures": {
+ "0": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#pattern"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "\\b(?:downto|to)\\b",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]to|^to))(?![[:word:]]))",
+ "end": "\\bdo\\b",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]do|^do))(?![[:word:]]))",
+ "end": "(?=\\bdone\\b)",
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "termFunction": {
+ "match": "\\b(?:(fun)|(function))\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type"
+ },
+ "2": {
+ "name": "storage.type"
+ }
+ }
+ },
+ "termLet": {
+ "patterns": [
+ {
+ "begin": "(?:(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=|[^#\\-:!?.@*/&%^+<=>|~$]->|^->))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?<=;|\\())(?=[[:space:]]|\\blet\\b)|(?:(?<=(?:[^[:word:]]begin|^begin|[^[:word:]]do|^do|[^[:word:]]else|^else|[^[:word:]]in|^in|[^[:word:]]struct|^struct|[^[:word:]]then|^then|[^[:word:]]try|^try))(?![[:word:]]))|(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]@@|^@@))(?![#\\-:!?.@*/&%^+<=>|~$]))[[:space:]]+",
+ "end": "\\b(?:(and)|(let))\\b|(?=[^[:space:]])(?!\\(\\*)",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
+ },
+ "2": {
+ "name": "storage.type markup.underline"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]and|^and|[^[:word:]]let|^let))(?![[:word:]]))|(let)",
+ "end": "\\b(?:(and)|(in))\\b|(?=\\}|\\)|\\]|\\b(?:end|class|exception|external|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type markup.underline"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp markup.underline"
+ },
+ "2": {
+ "name": "storage.type markup.underline"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#bindTerm"
+ }
+ ]
+ }
+ ]
+ },
+ "termMatch": {
+ "begin": "\\bmatch\\b",
+ "end": "\\bwith\\b",
+ "captures": {
+ "0": {
+ "name": "keyword.control"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ },
+ "termMatchRule": {
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]fun|^fun|[^[:word:]]function|^function|[^[:word:]]with|^with))(?![[:word:]]))",
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])(\\|)|(->)(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "endCaptures": {
+ "1": {
+ "name": "support.type strong"
+ },
+ "2": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#attributeIdentifier"
+ },
+ {
+ "include": "#pattern"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^\\[#\\-:!?.@*/&%^+<=>|~$]\\||^\\|))(?![#\\-:!?.@*/&%^+<=>|~$]))|(?<![#\\-:!?.@*/&%^+<=>|~$])\\|(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "end": "(?<![#\\-:!?.@*/&%^+<=>|~$])(\\|)|(->)(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "beginCaptures": {
+ "0": {
+ "name": "support.type strong"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.type strong"
+ },
+ "2": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#pattern"
+ },
+ {
+ "begin": "\\bwhen\\b",
+ "end": "(?=(?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "termOperator": {
+ "patterns": [
+ {
+ "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$])#(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "end": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "entity.name.function"
+ }
+ }
+ },
+ {
+ "match": "<-",
+ "captures": {
+ "0": {
+ "name": "keyword.control strong"
+ }
+ }
+ },
+ {
+ "match": "(,|[#\\-:!?.@*/&%^+<=>|~$]+)|(;)",
+ "captures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ },
+ "2": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ }
+ },
+ {
+ "match": "\\b(?:and|assert|asr|land|lazy|lsr|lxor|mod|new|or)\\b",
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ ]
+ },
+ "termPun": {
+ "begin": "(?<![#\\-:!?.@*/&%^+<=>|~$])\\?|~(?![#\\-:!?.@*/&%^+<=>|~$])",
+ "end": ":|(?=[^[:space:]:])",
+ "applyEndPatternLast": true,
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]\\?|^\\?|[^#\\-:!?.@*/&%^+<=>|~$]~|^~))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
+ "endCaptures": {
+ "0": {
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
+ }
+ }
+ }
+ ]
+ },
+ "termTry": {
+ "begin": "\\btry\\b",
+ "end": "\\bwith\\b",
+ "captures": {
+ "0": {
+ "name": "keyword.control"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ },
+ "termWhile": {
+ "patterns": [
+ {
+ "begin": "\\bwhile\\b",
+ "end": "\\bdone\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]while|^while))(?![[:word:]]))",
+ "end": "\\bdo\\b",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]do|^do))(?![[:word:]]))",
+ "end": "(?=\\bdone\\b)",
+ "patterns": [
+ {
+ "include": "#term"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "type": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "\\bnonrec\\b",
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ },
+ {
+ "include": "#pathModulePrefixExtended"
+ },
+ {
+ "include": "#typeLabel"
+ },
+ {
+ "include": "#typeObject"
+ },
+ {
+ "include": "#typeOperator"
+ },
+ {
+ "include": "#typeParens"
+ },
+ {
+ "include": "#typePolymorphicVariant"
+ },
+ {
+ "include": "#typeRecord"
+ },
+ {
+ "include": "#typeConstructor"
+ }
+ ]
+ },
+ "typeConstructor": {
+ "patterns": [
+ {
+ "begin": "(_)|((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(')((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))|(?<=[^\\*]\\)|\\])",
+ "end": "(?=\\((?!\\*)|\\*|:|,|=|\\.|>|-|\\{|\\[|\\+|\\}|\\)|\\]|;|\\|)|((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))[:space:]*(?!\\(\\*|[[:word:]])|(?=;;|\\}|\\)|\\]|\\b(?:end|and|class|exception|external|in|include|inherit|initializer|let|method|module|open|type|val)\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "comment constant.regexp meta.separator.markdown"
+ },
+ "3": {
+ "name": "string.other.link variable.language variable.parameter emphasis strong emphasis"
+ },
+ "4": {
+ "name": "keyword.control emphasis"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.function strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pathModulePrefixExtended"
+ }
+ ]
+ }
+ ]
+ },
+ "typeLabel": {
+ "patterns": [
+ {
+ "begin": "(\\??)((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))[[:space:]]*((?<![#\\-:!?.@*/&%^+<=>|~$]):(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(?=(?<![#\\-:!?.@*/&%^+<=>|~$])->(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "captures": {
+ "1": {
+ "name": "keyword strong emphasis"
+ },
+ "2": {
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"
+ },
+ "3": {
+ "name": "keyword"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "typeModule": {
+ "begin": "\\bmodule\\b",
+ "end": "(?=\\))",
+ "beginCaptures": {
+ "0": {
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#pathModuleExtended"
+ },
+ {
+ "include": "#signatureConstraints"
+ }
+ ]
+ },
+ "typeObject": {
+ "begin": "<",
+ "end": ">",
+ "captures": {
+ "0": {
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong strong"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?<=<|;)",
+ "end": "(:)|(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ },
+ "3": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ },
+ "4": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pathModulePrefixSimple"
+ },
+ {
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(;)|(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ },
+ "2": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "typeOperator": {
+ "patterns": [
+ {
+ "match": ",|;|[#\\-:!?.@*/&%^+<=>|~$]+",
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ }
+ ]
+ },
+ "typeParens": {
+ "begin": "\\(",
+ "end": "\\)",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag"
+ }
+ },
+ "patterns": [
+ {
+ "match": ",",
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ },
+ {
+ "include": "#typeModule"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "typePolymorphicVariant": {
+ "begin": "\\[",
+ "end": "\\]",
+ "patterns": []
+ },
+ "typeRecord": {
+ "begin": "\\{",
+ "end": "\\}",
+ "captures": {
+ "0": {
+ "name": "constant.language constant.numeric entity.other.attribute-name.id.css strong strong"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?<=\\{|;)",
+ "end": "(:)|(=)|(;)|(with)|(?=\\})",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ },
+ "2": {
+ "name": "support.type strong"
+ },
+ "3": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ },
+ "4": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pathModulePrefixSimple"
+ },
+ {
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^[:word:]]with|^with))(?![[:word:]]))",
+ "end": "(:)|(=)|(;)|(?=\\})",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp strong"
+ },
+ "2": {
+ "name": "support.type strong"
+ },
+ "3": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*)",
+ "name": "markup.inserted constant.language support.constant.property-value entity.name.filename emphasis"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]:|^:))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": "(;)|(=)|(?=\\})",
+ "endCaptures": {
+ "1": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ },
+ "2": {
+ "name": "support.type strong"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "begin": "(?:(?<=(?:[^#\\-:!?.@*/&%^+<=>|~$]=|^=))(?![#\\-:!?.@*/&%^+<=>|~$]))",
+ "end": ";|(?=\\})",
+ "endCaptures": {
+ "0": {
+ "name": "variable.other.class.js message.error variable.interpolation string.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "variableModule": {
+ "match": "(?:\\b(?=[[:upper:]])[[:alpha:]_][[:word:]']*)",
+ "captures": {
+ "0": {
+ "name": "string.other.link variable.language variable.parameter emphasis"
+ }
+ }
+ },
+ "variablePattern": {
+ "match": "(\\b_\\b)|((?:(?!\\b(?:and|'|as|asr|assert|\\*|begin|class|:|,|@|constraint|do|done|downto|else|end|=|exception|external|false|for|\\.|fun|function|functor|>|-|if|in|include|inherit|initializer|land|lazy|\\{|\\(|\\[|<|let|lor|lsl|lsr|lxor|match|method|mod|module|mutable|new|nonrec|#|object|of|open|or|%|\\+|private|\\?|\"|rec|\\\\|\\}|\\)|\\]|;|sig|/|struct|then|~|to|true|try|type|val|\\||virtual|when|while|with)\\b(?:[^']|$))\\b(?=[[:lower:]_])[[:alpha:]_][[:word:]']*))",
+ "captures": {
+ "1": {
+ "name": "comment constant.regexp meta.separator.markdown"
+ },
+ "2": {
+ "name": "string.other.link variable.language variable.parameter emphasis"
+ }
+ }
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/pascal.tmLanguage.json b/node_modules/shiki/languages/pascal.tmLanguage.json
new file mode 100644
index 0000000..c3915cf
--- /dev/null
+++ b/node_modules/shiki/languages/pascal.tmLanguage.json
@@ -0,0 +1,145 @@
+{
+ "fileTypes": ["pas", "p", "pp", "dfm", "fmx", "dpr", "dpk", "lfm", "lpr"],
+ "keyEquivalent": "^~P",
+ "name": "pascal",
+ "patterns": [
+ {
+ "match": "\\b(?i:(absolute|abstract|all|and_then|array|as|asm|attribute|begin|bindable|case|class|const|contains|default|div|else|end|except|export|exports|external|far|file|finalization|finally|forward|generic|goto|if|implements|import|in|index|inherited|initialization|interrupt|is|label|library|mod|module|name|near|not|object|of|on|only|operator|or_else|otherwise|out|override|package|packed|pow|private|program|protected|public|published|interface|implementation|qualified|read|record|resident|requires|resourcestring|restricted|segment|set|shl|shr|specialize|stored|strict|then|threadvar|to|try|type|unit|uses|var|view|virtual|dynamic|overload|reintroduce|with|write|xor))\\b",
+ "name": "keyword.pascal"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.prototype.pascal"
+ },
+ "2": {
+ "name": "entity.name.function.prototype.pascal"
+ }
+ },
+ "match": "\\b(?i:(function|procedure|constructor|destructor))\\b\\s+(\\w+(\\.\\w+)?)(\\(.*?\\))?;\\s*(?=(?i:attribute|forward|external))",
+ "name": "meta.function.prototype.pascal"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.function.pascal"
+ },
+ "2": {
+ "name": "entity.name.function.pascal"
+ }
+ },
+ "match": "\\b(?i:(function|procedure|constructor|destructor|property|read|write))\\b\\s+(\\w+(\\.\\w+)?)",
+ "name": "meta.function.pascal"
+ },
+ {
+ "match": "\\b(?i:(self|result))\\b",
+ "name": "token.variable"
+ },
+ {
+ "match": "\\b(?i:(and|or))\\b",
+ "name": "keyword.operator.pascal"
+ },
+ {
+ "match": "\\b(?i:(break|continue|exit|abort|while|do|downto|for|raise|repeat|until))\\b",
+ "name": "keyword.control.pascal"
+ },
+ {
+ "begin": "\\{\\$",
+ "captures": {
+ "0": {
+ "name": "string.regexp"
+ }
+ },
+ "end": "\\}",
+ "name": "string.regexp"
+ },
+ {
+ "match": "\\b(?i:(ansichar|ansistring|boolean|byte|cardinal|char|comp|currency|double|dword|extended|file|integer|int64|longint|longword|nativeint|nativeuint|olevariant|pansichar|pchar|pwidechar|pointer|real|shortint|shortstring|single|smallint|string|uint64|variant|widechar|widestring|word|wordbool))\\b",
+ "name": "storage.support.type.pascal"
+ },
+ {
+ "match": "\\b(\\d+)|(\\d*\\.\\d+([eE][\\-+]?\\d+)?)\\b",
+ "name": "constant.numeric.pascal"
+ },
+ {
+ "match": "\\$[0-9a-fA-F]{1,16}\\b",
+ "name": "constant.numeric.hex.pascal"
+ },
+ {
+ "match": "\\b(?i:(true|false|nil))\\b",
+ "name": "constant.language.pascal"
+ },
+ {
+ "match": "\\b(?i:(Assert))\\b",
+ "name": "keyword.control"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.pascal"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.pascal"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.double-slash.pascal.two"
+ }
+ ]
+ },
+ {
+ "begin": "\\(\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.pascal"
+ }
+ },
+ "end": "\\*\\)",
+ "name": "comment.block.pascal.one"
+ },
+ {
+ "begin": "\\{(?!\\$)",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.pascal"
+ }
+ },
+ "end": "\\}",
+ "name": "comment.block.pascal.two"
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.pascal"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.pascal"
+ }
+ },
+ "name": "string.quoted.single.pascal",
+ "patterns": [
+ {
+ "match": "''",
+ "name": "constant.character.escape.apostrophe.pascal"
+ }
+ ]
+ },
+ {
+ "match": "\\#\\d+",
+ "name": "string.other.pascal"
+ }
+ ],
+ "scopeName": "source.pascal",
+ "uuid": "F42FA544-6B1C-11D9-9517-000D93589AF6"
+}
diff --git a/node_modules/shiki/languages/perl.tmLanguage.json b/node_modules/shiki/languages/perl.tmLanguage.json
new file mode 100644
index 0000000..8639b4e
--- /dev/null
+++ b/node_modules/shiki/languages/perl.tmLanguage.json
@@ -0,0 +1,2977 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/textmate/perl.tmbundle/blob/master/Syntaxes/Perl.plist",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/textmate/perl.tmbundle/commit/a85927a902d6e5d7805f56a653f324d34dfad53a",
+ "name": "perl",
+ "scopeName": "source.perl",
+ "comment": "\n\tTODO:\tInclude RegExp syntax\n",
+ "patterns": [
+ {
+ "include": "#line_comment"
+ },
+ {
+ "begin": "^(?==[a-zA-Z]+)",
+ "end": "^(=cut\\b.*$)",
+ "endCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#pod"
+ }
+ ]
+ }
+ },
+ "name": "comment.block.documentation.perl",
+ "patterns": [
+ {
+ "include": "#pod"
+ }
+ ]
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "applyEndPatternLast": 1,
+ "begin": "\\b(?=qr\\s*[^\\s\\w])",
+ "comment": "string.regexp.compile.perl",
+ "end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",
+ "endCaptures": {
+ "1": {
+ "name": "string.regexp.compile.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "3": {
+ "name": "keyword.control.regexp-option.perl"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(qr)\\s*\\{",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": "\\}",
+ "name": "string.regexp.compile.nested_braces.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_braces_interpolated"
+ }
+ ]
+ },
+ {
+ "begin": "(qr)\\s*\\[",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": "\\]",
+ "name": "string.regexp.compile.nested_brackets.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_brackets_interpolated"
+ }
+ ]
+ },
+ {
+ "begin": "(qr)\\s*<",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": ">",
+ "name": "string.regexp.compile.nested_ltgt.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_ltgt_interpolated"
+ }
+ ]
+ },
+ {
+ "begin": "(qr)\\s*\\(",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": "\\)",
+ "name": "string.regexp.compile.nested_parens.perl",
+ "patterns": [
+ {
+ "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
+ "match": "\\$(?=[^\\s\\w\\\\'\\{\\[\\(\\<])"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_parens_interpolated"
+ }
+ ]
+ },
+ {
+ "begin": "(qr)\\s*'",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": "'",
+ "name": "string.regexp.compile.single-quote.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(qr)\\s*([^\\s\\w'\\{\\[\\(\\<])",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": "\\2",
+ "name": "string.regexp.compile.simple-delimiter.perl",
+ "patterns": [
+ {
+ "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
+ "match": "\\$(?=[^\\s\\w'\\{\\[\\(\\<])",
+ "name": "keyword.control.anchor.perl"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_parens_interpolated"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "applyEndPatternLast": 1,
+ "begin": "(?<!\\{|\\+|\\-)\\b(?=m\\s*[^\\sa-zA-Z0-9])",
+ "comment": "string.regexp.find-m.perl",
+ "end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",
+ "endCaptures": {
+ "1": {
+ "name": "string.regexp.find-m.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "3": {
+ "name": "keyword.control.regexp-option.perl"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(m)\\s*\\{",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": "\\}",
+ "name": "string.regexp.find-m.nested_braces.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_braces_interpolated"
+ }
+ ]
+ },
+ {
+ "begin": "(m)\\s*\\[",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": "\\]",
+ "name": "string.regexp.find-m.nested_brackets.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_brackets_interpolated"
+ }
+ ]
+ },
+ {
+ "begin": "(m)\\s*<",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": ">",
+ "name": "string.regexp.find-m.nested_ltgt.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_ltgt_interpolated"
+ }
+ ]
+ },
+ {
+ "begin": "(m)\\s*\\(",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": "\\)",
+ "name": "string.regexp.find-m.nested_parens.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_parens_interpolated"
+ }
+ ]
+ },
+ {
+ "begin": "(m)\\s*'",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": "'",
+ "name": "string.regexp.find-m.single-quote.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<!\\{|\\+|\\-)(m)(?!_)\\s*([^\\sa-zA-Z0-9'\\{\\[\\(\\<])",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": "\\2",
+ "name": "string.regexp.find-m.simple-delimiter.perl",
+ "patterns": [
+ {
+ "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
+ "match": "\\$(?=[^\\sa-zA-Z0-9'\\{\\[\\(\\<])",
+ "name": "keyword.control.anchor.perl"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "begin": "\\[",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.begin.perl"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.end.perl"
+ }
+ },
+ "name": "constant.other.character-class.set.perl",
+ "patterns": [
+ {
+ "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
+ "match": "\\$(?=[^\\s\\w'\\{\\[\\(\\<])",
+ "name": "keyword.control.anchor.perl"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "include": "#nested_parens_interpolated"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "applyEndPatternLast": 1,
+ "begin": "\\b(?=(?<!\\&)(s)(\\s+\\S|\\s*[;\\,\\{\\}\\(\\)\\[<]|$))",
+ "comment": "string.regexp.replace.perl",
+ "end": "((([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\{\\}\\)\\]>]|\\s*$))",
+ "endCaptures": {
+ "1": {
+ "name": "string.regexp.replace.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "3": {
+ "name": "keyword.control.regexp-option.perl"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(s)\\s*\\{",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": "\\}",
+ "name": "string.regexp.nested_braces.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_braces"
+ }
+ ]
+ },
+ {
+ "begin": "(s)\\s*\\[",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": "\\]",
+ "name": "string.regexp.nested_brackets.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_brackets"
+ }
+ ]
+ },
+ {
+ "begin": "(s)\\s*<",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": ">",
+ "name": "string.regexp.nested_ltgt.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_ltgt"
+ }
+ ]
+ },
+ {
+ "begin": "(s)\\s*\\(",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": "\\)",
+ "name": "string.regexp.nested_parens.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_parens"
+ }
+ ]
+ },
+ {
+ "begin": "\\{",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ }
+ },
+ "end": "\\}",
+ "name": "string.regexp.format.nested_braces.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_braces_interpolated"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ }
+ },
+ "end": "\\]",
+ "name": "string.regexp.format.nested_brackets.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_brackets_interpolated"
+ }
+ ]
+ },
+ {
+ "begin": "<",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ }
+ },
+ "end": ">",
+ "name": "string.regexp.format.nested_ltgt.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_ltgt_interpolated"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ }
+ },
+ "end": "\\)",
+ "name": "string.regexp.format.nested_parens.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_parens_interpolated"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ }
+ },
+ "end": "'",
+ "name": "string.regexp.format.single_quote.perl",
+ "patterns": [
+ {
+ "match": "\\\\['\\\\]",
+ "name": "constant.character.escape.perl"
+ }
+ ]
+ },
+ {
+ "begin": "([^\\s\\w\\[({<;])",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ }
+ },
+ "end": "\\1",
+ "name": "string.regexp.format.simple_delimiter.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "match": "\\s+"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(?=s([^\\sa-zA-Z0-9\\[({<]).*\\1([egimosxradlupcn]*)([\\}\\)\\;\\,]|\\s+))",
+ "comment": "string.regexp.replaceXXX",
+ "end": "((([egimosxradlupcn]*)))(?=([\\}\\)\\;\\,]|\\s+|\\s*$))",
+ "endCaptures": {
+ "1": {
+ "name": "string.regexp.replace.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "3": {
+ "name": "keyword.control.regexp-option.perl"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(s\\s*)([^\\sa-zA-Z0-9\\[({<])",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": "(?=\\2)",
+ "name": "string.regexp.replaceXXX.simple_delimiter.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ }
+ },
+ "end": "'",
+ "name": "string.regexp.replaceXXX.format.single_quote.perl",
+ "patterns": [
+ {
+ "match": "\\\\['\\\\]",
+ "name": "constant.character.escape.perl.perl"
+ }
+ ]
+ },
+ {
+ "begin": "([^\\sa-zA-Z0-9\\[({<])",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ }
+ },
+ "end": "\\1",
+ "name": "string.regexp.replaceXXX.format.simple_delimiter.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\b(?=(?<!\\\\)s\\s*([^\\s\\w\\[({<>]))",
+ "comment": "string.regexp.replace.extended",
+ "end": "((([egimosradlupc]*x[egimosradlupc]*)))\\b",
+ "endCaptures": {
+ "1": {
+ "name": "string.regexp.replace.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "3": {
+ "name": "keyword.control.regexp-option.perl"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(s)\\s*(.)",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "1": {
+ "name": "support.function.perl"
+ }
+ },
+ "end": "(?=\\2)",
+ "name": "string.regexp.replace.extended.simple_delimiter.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ }
+ },
+ "end": "'(?=[egimosradlupc]*x[egimosradlupc]*)\\b",
+ "name": "string.regexp.replace.extended.simple_delimiter.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(.)",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.string.perl"
+ }
+ },
+ "end": "\\1(?=[egimosradlupc]*x[egimosradlupc]*)\\b",
+ "name": "string.regexp.replace.extended.simple_delimiter.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\(|\\{|~|&|\\||if|unless|^)\\s*((\\/))",
+ "beginCaptures": {
+ "1": {
+ "name": "string.regexp.find.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.perl"
+ }
+ },
+ "contentName": "string.regexp.find.perl",
+ "end": "((\\1([egimosxradlupcn]*)))(?=(\\s+\\S|\\s*[;\\,\\#\\{\\}\\)]|\\s*$))",
+ "endCaptures": {
+ "1": {
+ "name": "string.regexp.find.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "3": {
+ "name": "keyword.control.regexp-option.perl"
+ }
+ },
+ "patterns": [
+ {
+ "comment": "This is to prevent thinks like /foo$/ to treat $/ as a variable",
+ "match": "\\$(?=\\/)",
+ "name": "keyword.control.anchor.perl"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "constant.other.key.perl"
+ }
+ },
+ "match": "\\b(\\w+)\\s*(?==>)"
+ },
+ {
+ "match": "(?<={)\\s*\\w+\\s*(?=})",
+ "name": "constant.other.bareword.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.perl"
+ },
+ "2": {
+ "name": "entity.name.type.class.perl"
+ }
+ },
+ "match": "^\\s*(package)\\s+([^\\s;]+)",
+ "name": "meta.class.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.sub.perl"
+ },
+ "2": {
+ "name": "entity.name.function.perl"
+ },
+ "3": {
+ "name": "storage.type.method.perl"
+ }
+ },
+ "match": "\\b(sub)(?:\\s+([-a-zA-Z0-9_]+))?\\s*(?:\\([\\$\\@\\*;]*\\))?[^\\w\\{]",
+ "name": "meta.function.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.name.function.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.perl"
+ },
+ "3": {
+ "name": "variable.parameter.function.perl"
+ }
+ },
+ "match": "^\\s*(BEGIN|UNITCHECK|CHECK|INIT|END|DESTROY)\\b",
+ "name": "meta.function.perl"
+ },
+ {
+ "begin": "^(?=(\\t| {4}))",
+ "end": "(?=[^\\t\\s])",
+ "name": "meta.leading-tabs",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "meta.odd-tab"
+ },
+ "2": {
+ "name": "meta.even-tab"
+ }
+ },
+ "match": "(\\t| {4})(\\t| {4})?"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "5": {
+ "name": "punctuation.definition.string.perl"
+ },
+ "8": {
+ "name": "punctuation.definition.string.perl"
+ }
+ },
+ "match": "\\b(tr|y)\\s*([^A-Za-z0-9\\s])(.*?)(?<!\\\\)(\\\\{2})*(\\2)(.*?)(?<!\\\\)(\\\\{2})*(\\2)",
+ "name": "string.regexp.replace.perl"
+ },
+ {
+ "match": "\\b(__FILE__|__LINE__|__PACKAGE__|__SUB__)\\b",
+ "name": "constant.language.perl"
+ },
+ {
+ "begin": "\\b(__DATA__|__END__)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.language.perl"
+ }
+ },
+ "contentName": "comment.block.documentation.perl",
+ "end": "\\z",
+ "patterns": [
+ {
+ "include": "#pod"
+ }
+ ]
+ },
+ {
+ "match": "(?<!->)\\b(continue|default|die|do|else|elsif|exit|for|foreach|given|goto|if|last|next|redo|return|select|unless|until|wait|when|while|switch|case|require|use|eval)\\b",
+ "name": "keyword.control.perl"
+ },
+ {
+ "match": "\\b(my|our|local)\\b",
+ "name": "storage.modifier.perl"
+ },
+ {
+ "match": "(?<!\\w)\\-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b",
+ "name": "keyword.operator.filetest.perl"
+ },
+ {
+ "match": "\\b(and|or|xor|as|not)\\b",
+ "name": "keyword.operator.logical.perl"
+ },
+ {
+ "match": "(<=>|=>|->)",
+ "name": "keyword.operator.comparison.perl"
+ },
+ {
+ "include": "#heredoc"
+ },
+ {
+ "begin": "\\bqq\\s*([^\\(\\{\\[\\<\\w\\s])",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\\1",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.quoted.other.qq.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "begin": "\\bqx\\s*([^'\\(\\{\\[\\<\\w\\s])",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\\1",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.interpolated.qx.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "begin": "\\bqx\\s*'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.interpolated.qx.single-quote.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.quoted.double.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!->)\\bqw?\\s*([^\\(\\{\\[\\<\\w\\s])",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\\1",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.quoted.other.q.perl"
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.quoted.single.perl",
+ "patterns": [
+ {
+ "match": "\\\\['\\\\]",
+ "name": "constant.character.escape.perl"
+ }
+ ]
+ },
+ {
+ "begin": "`",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.interpolated.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!->)\\bqq\\s*\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.quoted.other.qq-paren.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_parens_interpolated"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "begin": "\\bqq\\s*\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.quoted.other.qq-brace.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_braces_interpolated"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "begin": "\\bqq\\s*\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.quoted.other.qq-bracket.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_brackets_interpolated"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "begin": "\\bqq\\s*\\<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\\>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.quoted.other.qq-ltgt.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_ltgt_interpolated"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!->)\\bqx\\s*\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.interpolated.qx-paren.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_parens_interpolated"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "begin": "\\bqx\\s*\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.interpolated.qx-brace.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_braces_interpolated"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "begin": "\\bqx\\s*\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.interpolated.qx-bracket.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_brackets_interpolated"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "begin": "\\bqx\\s*\\<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\\>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.interpolated.qx-ltgt.perl",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_ltgt_interpolated"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!->)\\bqw?\\s*\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.quoted.other.q-paren.perl",
+ "patterns": [
+ {
+ "include": "#nested_parens"
+ }
+ ]
+ },
+ {
+ "begin": "\\bqw?\\s*\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.quoted.other.q-brace.perl",
+ "patterns": [
+ {
+ "include": "#nested_braces"
+ }
+ ]
+ },
+ {
+ "begin": "\\bqw?\\s*\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.quoted.other.q-bracket.perl",
+ "patterns": [
+ {
+ "include": "#nested_brackets"
+ }
+ ]
+ },
+ {
+ "begin": "\\bqw?\\s*\\<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\\>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.quoted.other.q-ltgt.perl",
+ "patterns": [
+ {
+ "include": "#nested_ltgt"
+ }
+ ]
+ },
+ {
+ "begin": "^__\\w+__",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "$",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.unquoted.program-block.perl"
+ },
+ {
+ "begin": "\\b(format)\\s+(\\w+)\\s*=",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.perl"
+ },
+ "2": {
+ "name": "entity.name.function.format.perl"
+ }
+ },
+ "end": "^\\.\\s*$",
+ "name": "meta.format.perl",
+ "patterns": [
+ {
+ "include": "#line_comment"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.perl"
+ },
+ "2": {
+ "name": "entity.name.function.perl"
+ }
+ },
+ "match": "\\b(x)\\s*(\\d+)\\b"
+ },
+ {
+ "match": "\\b(ARGV|DATA|ENV|SIG|STDERR|STDIN|STDOUT|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|cmp|connect|cos|crypt|dbmclose|dbmopen|defined|delete|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eq|eval|exec|exists|exp|fcntl|fileno|flock|fork|formline|ge|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|grep|gt|hex|import|index|int|ioctl|join|keys|kill|lc|lcfirst|le|length|link|listen|local|localtime|log|lstat|lt|m|map|mkdir|msgctl|msgget|msgrcv|msgsnd|ne|no|oct|open|opendir|ord|pack|pipe|pop|pos|print|printf|push|quotemeta|rand|read|readdir|readlink|recv|ref|rename|reset|reverse|rewinddir|rindex|rmdir|s|say|scalar|seek|seekdir|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|substr|symlink|syscall|sysopen|sysread|system|syswrite|tell|telldir|tie|tied|time|times|tr|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|utime|values|vec|waitpid|wantarray|warn|write|y)\\b",
+ "name": "support.function.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.begin.perl"
+ },
+ "2": {
+ "name": "punctuation.section.scope.end.perl"
+ }
+ },
+ "comment": "Match empty brackets for ↩ snippet",
+ "match": "(\\{)(\\})"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.begin.perl"
+ },
+ "2": {
+ "name": "punctuation.section.scope.end.perl"
+ }
+ },
+ "comment": "Match empty parenthesis for ↩ snippet",
+ "match": "(\\()(\\))"
+ }
+ ],
+ "repository": {
+ "escaped_char": {
+ "patterns": [
+ {
+ "match": "\\\\\\d+",
+ "name": "constant.character.escape.perl"
+ },
+ {
+ "match": "\\\\c[^\\s\\\\]",
+ "name": "constant.character.escape.perl"
+ },
+ {
+ "match": "\\\\g(?:\\{(?:\\w*|-\\d+)\\}|\\d+)",
+ "name": "constant.character.escape.perl"
+ },
+ {
+ "match": "\\\\k(?:\\{\\w*\\}|<\\w*>|'\\w*')",
+ "name": "constant.character.escape.perl"
+ },
+ {
+ "match": "\\\\N\\{[^\\}]*\\}",
+ "name": "constant.character.escape.perl"
+ },
+ {
+ "match": "\\\\o\\{\\d*\\}",
+ "name": "constant.character.escape.perl"
+ },
+ {
+ "match": "\\\\(?:p|P)(?:\\{\\w*\\}|P)",
+ "name": "constant.character.escape.perl"
+ },
+ {
+ "match": "\\\\x(?:[0-9a-zA-Z]{2}|\\{\\w*\\})?",
+ "name": "constant.character.escape.perl"
+ },
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.perl"
+ }
+ ]
+ },
+ "heredoc": {
+ "patterns": [
+ {
+ "begin": "((((<<(~)?) *')(HTML)(')))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.raw.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.raw.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.raw.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.html",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "text.html.basic",
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *')(XML)(')))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.raw.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.raw.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.raw.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.xml",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "text.xml",
+ "patterns": [
+ {
+ "include": "text.xml"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *')(CSS)(')))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.raw.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.raw.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.raw.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.css",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "source.css",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *')(JAVASCRIPT)(')))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.raw.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.raw.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.raw.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.js",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "source.js",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *')(SQL)(')))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.raw.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.raw.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.raw.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.sql",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "source.sql",
+ "patterns": [
+ {
+ "include": "source.sql"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *')(POSTSCRIPT)(')))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.raw.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.raw.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.raw.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.postscript",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "source.postscript",
+ "patterns": [
+ {
+ "include": "source.postscript"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *')([^']*)(')))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.raw.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.raw.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.raw.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ }
+ },
+ {
+ "begin": "((((<<(~)?) *\\\\)((?![=\\d\\$\\( ])[^;,'\"`\\s\\)]*)()))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.raw.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.raw.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.raw.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ }
+ },
+ {
+ "begin": "((((<<(~)?) *\")(HTML)(\")))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.html",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "text.html.basic",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *\")(XML)(\")))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.xml",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "text.xml",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "text.xml"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *\")(CSS)(\")))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.css",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "source.css",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "source.css"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *\")(JAVASCRIPT)(\")))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.js",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "source.js",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *\")(SQL)(\")))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.sql",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "source.sql",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "source.sql"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *\")(POSTSCRIPT)(\")))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.postscript",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "source.postscript",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "source.postscript"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *\")([^\"]*)(\")))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *)(HTML)()))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.html",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "text.html.basic",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *)(XML)()))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.xml",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "text.xml",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "text.xml"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *)(CSS)()))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.css",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "source.css",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "source.css"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *)(JAVASCRIPT)()))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.js",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "source.js",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *)(SQL)()))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.sql",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "source.sql",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "source.sql"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *)(POSTSCRIPT)()))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "meta.embedded.block.postscript",
+ "patterns": [
+ {
+ "begin": "^",
+ "end": "\\n",
+ "name": "source.postscript",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "source.postscript"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *)((?![=\\d\\$\\( ])[^;,'\"`\\s\\)]*)()))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.interpolated.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "begin": "((((<<(~)?) *`)([^`]*)(`)))(.*)\\n?",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.delimiter.begin.perl"
+ },
+ "7": {
+ "name": "punctuation.definition.delimiter.end.perl"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ },
+ "contentName": "string.unquoted.heredoc.shell.perl",
+ "end": "^((?!\\5)\\s+)?((\\6))$",
+ "endCaptures": {
+ "2": {
+ "name": "string.unquoted.heredoc.interpolated.perl"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ }
+ ]
+ },
+ "line_comment": {
+ "patterns": [
+ {
+ "begin": "(^[ \\t]+)?(?=#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.perl"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.perl"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.number-sign.perl"
+ }
+ ]
+ }
+ ]
+ },
+ "nested_braces": {
+ "begin": "\\{",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.perl"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_braces"
+ }
+ ]
+ },
+ "nested_braces_interpolated": {
+ "begin": "\\{",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.perl"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_braces_interpolated"
+ }
+ ]
+ },
+ "nested_brackets": {
+ "begin": "\\[",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.perl"
+ }
+ },
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_brackets"
+ }
+ ]
+ },
+ "nested_brackets_interpolated": {
+ "begin": "\\[",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.perl"
+ }
+ },
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_brackets_interpolated"
+ }
+ ]
+ },
+ "nested_ltgt": {
+ "begin": "<",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.perl"
+ }
+ },
+ "end": ">",
+ "patterns": [
+ {
+ "include": "#nested_ltgt"
+ }
+ ]
+ },
+ "nested_ltgt_interpolated": {
+ "begin": "<",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.perl"
+ }
+ },
+ "end": ">",
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_ltgt_interpolated"
+ }
+ ]
+ },
+ "nested_parens": {
+ "begin": "\\(",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.perl"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_parens"
+ }
+ ]
+ },
+ "nested_parens_interpolated": {
+ "begin": "\\(",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.perl"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "comment": "This is to prevent thinks like qr/foo$/ to treat $/ as a variable",
+ "match": "\\$(?=[^\\s\\w'\\{\\[\\(\\<])",
+ "name": "keyword.control.anchor.perl"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_parens_interpolated"
+ }
+ ]
+ },
+ "pod": {
+ "patterns": [
+ {
+ "match": "^=(pod|back|cut)\\b",
+ "name": "storage.type.class.pod.perl"
+ },
+ {
+ "begin": "^(=begin)\\s+(html)\\s*$",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.pod.perl"
+ },
+ "2": {
+ "name": "variable.other.pod.perl"
+ }
+ },
+ "contentName": "text.embedded.html.basic",
+ "end": "^(=end)\\s+(html)|^(?==cut)",
+ "endCaptures": {
+ "1": {
+ "name": "storage.type.class.pod.perl"
+ },
+ "2": {
+ "name": "variable.other.pod.perl"
+ }
+ },
+ "name": "meta.embedded.pod.perl",
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.class.pod.perl"
+ },
+ "2": {
+ "name": "variable.other.pod.perl",
+ "patterns": [
+ {
+ "include": "#pod-formatting"
+ }
+ ]
+ }
+ },
+ "match": "^(=(?:head[1-4]|item|over|encoding|begin|end|for))\\b\\s*(.*)"
+ },
+ {
+ "include": "#pod-formatting"
+ }
+ ]
+ },
+ "pod-formatting": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "markup.italic.pod.perl"
+ },
+ "2": {
+ "name": "markup.italic.pod.perl"
+ }
+ },
+ "match": "I(?:<([^<>]+)>|<+(\\s+(?:(?<!\\s)>|[^>])+\\s+)>+)",
+ "name": "entity.name.type.instance.pod.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "markup.bold.pod.perl"
+ },
+ "2": {
+ "name": "markup.bold.pod.perl"
+ }
+ },
+ "match": "B(?:<([^<>]+)>|<+(\\s+(?:(?<!\\s)>|[^>])+\\s+)>+)",
+ "name": "entity.name.type.instance.pod.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "markup.raw.pod.perl"
+ },
+ "2": {
+ "name": "markup.raw.pod.perl"
+ }
+ },
+ "match": "C(?:<([^<>]+)>|<+(\\\\s+(?:(?<!\\\\s)>|[^>])+\\\\s+)>+)",
+ "name": "entity.name.type.instance.pod.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "markup.underline.link.hyperlink.pod.perl"
+ }
+ },
+ "match": "L<([^>]+)>",
+ "name": "entity.name.type.instance.pod.perl"
+ },
+ {
+ "match": "[EFSXZ]<[^>]*>",
+ "name": "entity.name.type.instance.pod.perl"
+ }
+ ]
+ },
+ "variable": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.perl"
+ }
+ },
+ "match": "(\\$)&(?![A-Za-z0-9_])",
+ "name": "variable.other.regexp.match.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.perl"
+ }
+ },
+ "match": "(\\$)`(?![A-Za-z0-9_])",
+ "name": "variable.other.regexp.pre-match.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.perl"
+ }
+ },
+ "match": "(\\$)'(?![A-Za-z0-9_])",
+ "name": "variable.other.regexp.post-match.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.perl"
+ }
+ },
+ "match": "(\\$)\\+(?![A-Za-z0-9_])",
+ "name": "variable.other.regexp.last-paren-match.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.perl"
+ }
+ },
+ "match": "(\\$)\"(?![A-Za-z0-9_])",
+ "name": "variable.other.readwrite.list-separator.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.perl"
+ }
+ },
+ "match": "(\\$)0(?![A-Za-z0-9_])",
+ "name": "variable.other.predefined.program-name.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.perl"
+ }
+ },
+ "match": "(\\$)[_ab\\*\\.\\/\\|,\\\\;#%=\\-~^:?!\\$<>\\(\\)\\[\\]@](?![A-Za-z0-9_])",
+ "name": "variable.other.predefined.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.perl"
+ }
+ },
+ "match": "(\\$)[0-9]+(?![A-Za-z0-9_])",
+ "name": "variable.other.subpattern.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.perl"
+ }
+ },
+ "match": "([\\$\\@\\%](#)?)([a-zA-Zx7f-xff\\$]|::)([a-zA-Z0-9_x7f-xff\\$]|::)*\\b",
+ "name": "variable.other.readwrite.global.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.perl"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.perl"
+ }
+ },
+ "match": "(\\$\\{)(?:[a-zA-Zx7f-xff\\$]|::)(?:[a-zA-Z0-9_x7f-xff\\$]|::)*(\\})",
+ "name": "variable.other.readwrite.global.perl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.perl"
+ }
+ },
+ "match": "([\\$\\@\\%](#)?)[0-9_]\\b",
+ "name": "variable.other.readwrite.global.special.perl"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/php-html.tmLanguage.json b/node_modules/shiki/languages/php-html.tmLanguage.json
new file mode 100644
index 0000000..0cea77f
--- /dev/null
+++ b/node_modules/shiki/languages/php-html.tmLanguage.json
@@ -0,0 +1,98 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/KapitanOczywisty/language-php/blob/master/grammars/html.cson",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/KapitanOczywisty/language-php/commit/ff64523c94c014d68f5dec189b05557649c5872a",
+ "name": "php-html",
+ "scopeName": "text.html.php",
+ "injections": {
+ "L:meta.embedded.php.blade": {
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ },
+ {
+ "include": "text.html.php.blade#blade"
+ }
+ ]
+ },
+ "text.html.php - (meta.embedded | meta.tag), L:((text.html.php meta.tag) - (meta.embedded.block.php | meta.embedded.line.php)), L:(source.js - (meta.embedded.block.php | meta.embedded.line.php)), L:(source.css - (meta.embedded.block.php | meta.embedded.line.php))": {
+ "patterns": [
+ {
+ "include": "#php-tag"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "begin": "\\A#!",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "end": "$",
+ "name": "comment.line.shebang.php"
+ },
+ {
+ "include": "text.html.derivative"
+ }
+ ],
+ "repository": {
+ "php-tag": {
+ "patterns": [
+ {
+ "begin": "<\\?(?i:php|=)?(?![^?]*\\?>)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ }
+ },
+ "end": "(\\?)>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "source.php"
+ }
+ },
+ "name": "meta.embedded.block.php",
+ "contentName": "source.php",
+ "patterns": [
+ {
+ "include": "source.php"
+ }
+ ]
+ },
+ {
+ "begin": "<\\?(?i:php|=)?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ }
+ },
+ "end": "(\\?)>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "source.php"
+ }
+ },
+ "name": "meta.embedded.line.php",
+ "contentName": "source.php",
+ "patterns": [
+ {
+ "include": "source.php"
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/php.tmLanguage.json b/node_modules/shiki/languages/php.tmLanguage.json
new file mode 100644
index 0000000..7dc24a3
--- /dev/null
+++ b/node_modules/shiki/languages/php.tmLanguage.json
@@ -0,0 +1,4030 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/KapitanOczywisty/language-php/blob/master/grammars/php.cson",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/KapitanOczywisty/language-php/commit/5e8f000cb5a20f44f7a7a89d07ad0774031c53f3",
+ "scopeName": "source.php",
+ "patterns": [
+ {
+ "include": "#attribute"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "(?i)(?:^|(?<=<\\?php))\\s*(namespace)\\s+([a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)(?=\\s*;)",
+ "name": "meta.namespace.php",
+ "captures": {
+ "1": {
+ "name": "keyword.other.namespace.php"
+ },
+ "2": {
+ "name": "entity.name.type.namespace.php",
+ "patterns": [
+ {
+ "match": "\\\\",
+ "name": "punctuation.separator.inheritance.php"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "(?i)(?:^|(?<=<\\?php))\\s*(namespace)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.namespace.php"
+ }
+ },
+ "end": "(?<=})|(?=\\?>)",
+ "name": "meta.namespace.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "(?i)[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+",
+ "name": "entity.name.type.namespace.php",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "\\\\",
+ "name": "punctuation.separator.inheritance.php"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.namespace.begin.bracket.curly.php"
+ }
+ },
+ "end": "}|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.namespace.end.bracket.curly.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "match": "[^\\s]+",
+ "name": "invalid.illegal.identifier.php"
+ }
+ ]
+ },
+ {
+ "match": "\\s+(?=use\\b)"
+ },
+ {
+ "begin": "(?i)\\buse\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.other.use.php"
+ }
+ },
+ "end": "(?<=})|(?=;)|(?=\\?>)",
+ "name": "meta.use.php",
+ "patterns": [
+ {
+ "match": "\\b(const|function)\\b",
+ "name": "storage.type.${1:/downcase}.php"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.use.begin.bracket.curly.php"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.use.end.bracket.curly.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#scope-resolution"
+ },
+ {
+ "match": "(?xi)\n\\b(as)\n\\s+(final|abstract|public|private|protected|static)\n\\s+([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.use-as.php"
+ },
+ "2": {
+ "name": "storage.modifier.php"
+ },
+ "3": {
+ "name": "entity.other.alias.php"
+ }
+ }
+ },
+ {
+ "match": "(?xi)\n\\b(as)\n\\s+([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.use-as.php"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "^(?:final|abstract|public|private|protected|static)$",
+ "name": "storage.modifier.php"
+ },
+ {
+ "match": ".+",
+ "name": "entity.other.alias.php"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(insteadof)\\s+([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.use-insteadof.php"
+ },
+ "2": {
+ "name": "support.class.php"
+ }
+ }
+ },
+ {
+ "match": ";",
+ "name": "punctuation.terminator.expression.php"
+ },
+ {
+ "include": "#use-inner"
+ }
+ ]
+ },
+ {
+ "include": "#use-inner"
+ }
+ ]
+ },
+ {
+ "begin": "(?ix)\n\\b(trait)\\s+([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.trait.php"
+ },
+ "2": {
+ "name": "entity.name.type.trait.php"
+ }
+ },
+ "end": "}|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.trait.end.bracket.curly.php"
+ }
+ },
+ "name": "meta.trait.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.trait.begin.bracket.curly.php"
+ }
+ },
+ "end": "(?=}|\\?>)",
+ "contentName": "meta.trait.body.php",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?ix)\n\\b(interface)\\s+([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.interface.php"
+ },
+ "2": {
+ "name": "entity.name.type.interface.php"
+ }
+ },
+ "end": "}|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.interface.end.bracket.curly.php"
+ }
+ },
+ "name": "meta.interface.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#interface-extends"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.interface.begin.bracket.curly.php"
+ }
+ },
+ "end": "(?=}|\\?>)",
+ "contentName": "meta.interface.body.php",
+ "patterns": [
+ {
+ "include": "#class-constant"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?ix)\n\\b(enum)\\s+([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)\n(?: \\s* (:) \\s* (int | string) \\b )?",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.enum.php"
+ },
+ "2": {
+ "name": "entity.name.type.enum.php"
+ },
+ "3": {
+ "name": "keyword.operator.return-value.php"
+ },
+ "4": {
+ "name": "keyword.other.type.php"
+ }
+ },
+ "end": "}|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.enum.end.bracket.curly.php"
+ }
+ },
+ "name": "meta.enum.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#class-implements"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.enum.begin.bracket.curly.php"
+ }
+ },
+ "end": "(?=}|\\?>)",
+ "contentName": "meta.enum.body.php",
+ "patterns": [
+ {
+ "match": "(?i)\\b(case)\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.php"
+ },
+ "2": {
+ "name": "constant.enum.php"
+ }
+ }
+ },
+ {
+ "include": "#class-constant"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?ix)\n(?:\n \\b((?:(?:final|abstract|readonly)\\s+)*)(class)\\s+([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)\n |\\b(new)\\b\\s*(\\#\\[.*\\])?\\s*(?:(readonly)\\s+)?\\b(class)\\b # anonymous class\n)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "final|abstract",
+ "name": "storage.modifier.${0:/downcase}.php"
+ },
+ {
+ "match": "readonly",
+ "name": "storage.modifier.php"
+ }
+ ]
+ },
+ "2": {
+ "name": "storage.type.class.php"
+ },
+ "3": {
+ "name": "entity.name.type.class.php"
+ },
+ "4": {
+ "name": "keyword.other.new.php"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "6": {
+ "name": "storage.modifier.php"
+ },
+ "7": {
+ "name": "storage.type.class.php"
+ }
+ },
+ "end": "}|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.class.end.bracket.curly.php"
+ }
+ },
+ "name": "meta.class.php",
+ "patterns": [
+ {
+ "begin": "(?<=class)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
+ }
+ },
+ "name": "meta.function-call.php",
+ "patterns": [
+ {
+ "include": "#named-arguments"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#class-extends"
+ },
+ {
+ "include": "#class-implements"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.class.begin.bracket.curly.php"
+ }
+ },
+ "end": "(?=}|\\?>)",
+ "contentName": "meta.class.body.php",
+ "patterns": [
+ {
+ "include": "#class-constant"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#match_statement"
+ },
+ {
+ "include": "#switch_statement"
+ },
+ {
+ "match": "\\s*\\b(yield\\s+from)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.yield-from.php"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n\\b(\n break|case|continue|declare|default|die|do|\n else(if)?|end(declare|for(each)?|if|switch|while)|exit|\n for(each)?|if|return|switch|use|while|yield\n)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.${1:/downcase}.php"
+ }
+ }
+ },
+ {
+ "begin": "(?i)\\b((?:require|include)(?:_once)?)(\\s+|(?=\\())",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.import.include.php"
+ }
+ },
+ "end": "(?=\\s|;|$|\\?>)",
+ "name": "meta.include.php",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(catch)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.exception.catch.php"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
+ }
+ },
+ "name": "meta.catch.php",
+ "patterns": [
+ {
+ "match": "(?xi)\n([a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ (?: \\s*\\|\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)*) # union or single exception class\n\\s*\n((\\$+)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)? # Variable",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "\\|",
+ "name": "punctuation.separator.delimiter.php"
+ },
+ {
+ "begin": "(?i)(?=[\\\\a-z_\\x{7f}-\\x{10ffff}])",
+ "end": "(?xi)\n( [a-z_\\x{7f}-\\x{10ffff}] [a-z0-9_\\x{7f}-\\x{10ffff}]* )\n(?![a-z0-9_\\x{7f}-\\x{10ffff}\\\\])",
+ "endCaptures": {
+ "1": {
+ "name": "support.class.exception.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ }
+ ]
+ },
+ "2": {
+ "name": "variable.other.php"
+ },
+ "3": {
+ "name": "punctuation.definition.variable.php"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "match": "\\b(catch|try|throw|exception|finally)\\b",
+ "name": "keyword.control.exception.php"
+ },
+ {
+ "begin": "(?i)\\b(function)\\s*(?=&?\\s*\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.php"
+ }
+ },
+ "end": "(?=\\s*{)",
+ "name": "meta.function.closure.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "(&)?\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.reference.php"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
+ }
+ },
+ "contentName": "meta.function.parameters.php",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-parameters"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(use)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.function.use.php"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
+ }
+ },
+ "name": "meta.function.closure.use.php",
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "variable.other.php"
+ },
+ "2": {
+ "name": "storage.modifier.reference.php"
+ },
+ "3": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(?i)((?:(&)\\s*)?(\\$+)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)\\s*(?=,|\\))"
+ }
+ ]
+ },
+ {
+ "match": "(?xi)\n(:)\\s*\n(\n # nullable type\n (?:\\?\\s*)? [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ |\n # union, intersection or DNF type\n (?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) )\n (?: \\s*[|&]\\s*\n (?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) )\n )+\n)\n(?=\\s*(?:{|/[/*]|\\#|$))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.return-value.php"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#php-types"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "begin": "(?i)\\b(fn)\\s*(?=&?\\s*\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.php"
+ }
+ },
+ "end": "=>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arrow.php"
+ }
+ },
+ "name": "meta.function.closure.php",
+ "patterns": [
+ {
+ "begin": "(?:(&)\\s*)?(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.reference.php"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
+ }
+ },
+ "contentName": "meta.function.parameters.php",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-parameters"
+ }
+ ]
+ },
+ {
+ "match": "(?xi)\n(:)\\s*\n(\n # nullable type\n (?:\\?\\s*)? [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ |\n # union, intersection or DNF type\n (?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) )\n (?: \\s*[|&]\\s*\n (?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) )\n )+\n)\n(?=\\s*(?:=>|/[/*]|\\#|$))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.return-value.php"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#php-types"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n((?:(?:final|abstract|public|private|protected)\\s+)*)\n(function)\\s+(__construct)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "final|abstract|public|private|protected",
+ "name": "storage.modifier.php"
+ }
+ ]
+ },
+ "2": {
+ "name": "storage.type.function.php"
+ },
+ "3": {
+ "name": "support.function.constructor.php"
+ },
+ "4": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
+ }
+ },
+ "contentName": "meta.function.parameters.php",
+ "end": "(?xi)\n(\\)) \\s* ( : \\s*\n (?:\\?\\s*)? (?!\\s) [a-z0-9_\\x{7f}-\\x{10ffff}\\\\\\s\\|&()]+ (?<!\\s)\n)?\n(?=\\s*(?:{|/[/*]|\\#|$|;))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
+ },
+ "2": {
+ "name": "invalid.illegal.return-type.php"
+ }
+ },
+ "name": "meta.function.php",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.php"
+ },
+ {
+ "begin": "(?xi)\n((?:(?:public|private|protected|readonly)(?:\\s+|(?=\\?)))++)\n(?: (\n # nullable type\n (?:\\?\\s*)? [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ |\n # union, intersection or DNF type\n (?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) )\n (?: \\s*[|&]\\s*\n (?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) )\n )+\n) \\s+ )?\n((?:(&)\\s*)?(\\$)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) # Variable name with possible reference",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "public|private|protected|readonly",
+ "name": "storage.modifier.php"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#php-types"
+ }
+ ]
+ },
+ "3": {
+ "name": "variable.other.php"
+ },
+ "4": {
+ "name": "storage.modifier.reference.php"
+ },
+ "5": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "end": "(?=\\s*(?:,|\\)|/[/*]|\\#))",
+ "name": "meta.function.parameter.promoted-property.php",
+ "patterns": [
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.assignment.php"
+ }
+ },
+ "end": "(?=\\s*(?:,|\\)|/[/*]|\\#))",
+ "patterns": [
+ {
+ "include": "#parameter-default-types"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#function-parameters"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n((?:(?:final|abstract|public|private|protected|static)\\s+)*)\n(function)\\s+\n(?i:\n (__(?:call|construct|debugInfo|destruct|get|set|isset|unset|toString|\n clone|set_state|sleep|wakeup|autoload|invoke|callStatic|serialize|unserialize))\n |(?:(&)?\\s*([a-zA-Z_\\x{7f}-\\x{10ffff}][a-zA-Z0-9_\\x{7f}-\\x{10ffff}]*))\n)\n\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "final|abstract|public|private|protected|static",
+ "name": "storage.modifier.php"
+ }
+ ]
+ },
+ "2": {
+ "name": "storage.type.function.php"
+ },
+ "3": {
+ "name": "support.function.magic.php"
+ },
+ "4": {
+ "name": "storage.modifier.reference.php"
+ },
+ "5": {
+ "name": "entity.name.function.php"
+ },
+ "6": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.php"
+ }
+ },
+ "contentName": "meta.function.parameters.php",
+ "end": "(?xi)\n(\\)) (?: \\s* (:) \\s* (\n # nullable type\n (?:\\?\\s*)? [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ |\n # union, intersection or DNF type\n (?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) )\n (?: \\s*[|&]\\s*\n (?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) )\n )+\n) )?\n(?=\\s*(?:{|/[/*]|\\#|$|;))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.bracket.round.php"
+ },
+ "2": {
+ "name": "keyword.operator.return-value.php"
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\b(static)\\b",
+ "name": "storage.type.php"
+ },
+ {
+ "match": "\\b(never)\\b",
+ "name": "keyword.other.type.never.php"
+ },
+ {
+ "include": "#php-types"
+ }
+ ]
+ }
+ },
+ "name": "meta.function.php",
+ "patterns": [
+ {
+ "include": "#function-parameters"
+ }
+ ]
+ },
+ {
+ "match": "(?xi)\n((?:(?:public|private|protected|static|readonly)(?:\\s+|(?=\\?)))++) # At least one modifier\n(\n # nullable type\n (?:\\?\\s*)? [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ |\n # union, intersection or DNF type\n (?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) )\n (?: \\s*[|&]\\s*\n (?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) )\n )+\n)?\n\\s+ ((\\$)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) # Variable name",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "public|private|protected|static|readonly",
+ "name": "storage.modifier.php"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#php-types"
+ }
+ ]
+ },
+ "3": {
+ "name": "variable.other.php"
+ },
+ "4": {
+ "name": "punctuation.definition.variable.php"
+ }
+ }
+ },
+ {
+ "include": "#invoke-call"
+ },
+ {
+ "include": "#scope-resolution"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.construct.php"
+ },
+ "2": {
+ "name": "punctuation.definition.array.begin.bracket.round.php"
+ },
+ "3": {
+ "name": "punctuation.definition.array.end.bracket.round.php"
+ }
+ },
+ "match": "(array)(\\()(\\))",
+ "name": "meta.array.empty.php"
+ },
+ {
+ "begin": "(array)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.construct.php"
+ },
+ "2": {
+ "name": "punctuation.definition.array.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.end.bracket.round.php"
+ }
+ },
+ "name": "meta.array.php",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "match": "(?i)(\\()\\s*(array|real|double|float|int(?:eger)?|bool(?:ean)?|string|object|binary|unset)\\s*(\\))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.storage-type.begin.bracket.round.php"
+ },
+ "2": {
+ "name": "storage.type.php"
+ },
+ "3": {
+ "name": "punctuation.definition.storage-type.end.bracket.round.php"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(array|real|double|float|int(eger)?|bool(ean)?|string|class|var|function|interface|trait|parent|self|object|mixed)\\b",
+ "name": "storage.type.php"
+ },
+ {
+ "match": "(?i)\\b(global|abstract|const|final|private|protected|public|static)\\b",
+ "name": "storage.modifier.php"
+ },
+ {
+ "include": "#object"
+ },
+ {
+ "match": ";",
+ "name": "punctuation.terminator.expression.php"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.terminator.statement.php"
+ },
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "match": "(?i)\\bclone\\b",
+ "name": "keyword.other.clone.php"
+ },
+ {
+ "match": "\\.\\.\\.",
+ "name": "keyword.operator.spread.php"
+ },
+ {
+ "match": "\\.=?",
+ "name": "keyword.operator.string.php"
+ },
+ {
+ "match": "=>",
+ "name": "keyword.operator.key.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.php"
+ },
+ "2": {
+ "name": "storage.modifier.reference.php"
+ },
+ "3": {
+ "name": "storage.modifier.reference.php"
+ }
+ },
+ "match": "(?i)(\\=)(&)|(&)(?=[$a-z_])"
+ },
+ {
+ "match": "@",
+ "name": "keyword.operator.error-control.php"
+ },
+ {
+ "match": "===|==|!==|!=|<>",
+ "name": "keyword.operator.comparison.php"
+ },
+ {
+ "match": "=|\\+=|\\-=|\\*\\*?=|/=|%=|&=|\\|=|\\^=|<<=|>>=|\\?\\?=",
+ "name": "keyword.operator.assignment.php"
+ },
+ {
+ "match": "<=>|<=|>=|<|>",
+ "name": "keyword.operator.comparison.php"
+ },
+ {
+ "match": "\\-\\-|\\+\\+",
+ "name": "keyword.operator.increment-decrement.php"
+ },
+ {
+ "match": "\\-|\\+|\\*\\*?|/|%",
+ "name": "keyword.operator.arithmetic.php"
+ },
+ {
+ "match": "(?i)(!|&&|\\|\\|)|\\b(and|or|xor|as)\\b",
+ "name": "keyword.operator.logical.php"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "match": "<<|>>|~|\\^|&|\\|",
+ "name": "keyword.operator.bitwise.php"
+ },
+ {
+ "begin": "(?i)\\b(instanceof)\\s+(?=[\\\\$a-z_])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.php"
+ }
+ },
+ "end": "(?i)(?=[^\\\\$a-z0-9_\\x{7f}-\\x{10ffff}])",
+ "patterns": [
+ {
+ "include": "#class-name"
+ },
+ {
+ "include": "#variable-name"
+ }
+ ]
+ },
+ {
+ "include": "#instantiation"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.goto.php"
+ },
+ "2": {
+ "name": "support.other.php"
+ }
+ },
+ "match": "(?i)(goto)\\s+([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.name.goto-label.php"
+ }
+ },
+ "match": "(?i)^\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*(?<!default))\\s*:(?!:)"
+ },
+ {
+ "include": "#string-backtick"
+ },
+ {
+ "include": "#ternary_shorthand"
+ },
+ {
+ "include": "#null_coalescing"
+ },
+ {
+ "include": "#ternary_expression"
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.begin.bracket.curly.php"
+ }
+ },
+ "end": "}|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.curly.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.php"
+ }
+ },
+ "end": "\\]|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.round.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.php"
+ }
+ ],
+ "repository": {
+ "attribute-name": {
+ "patterns": [
+ {
+ "begin": "(?i)(?=\\\\?[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*\\\\)",
+ "end": "(?xi)\n( [a-z_\\x{7f}-\\x{10ffff}] [a-z0-9_\\x{7f}-\\x{10ffff}]* )?\n(?![a-z0-9_\\x{7f}-\\x{10ffff}\\\\])",
+ "endCaptures": {
+ "1": {
+ "name": "support.attribute.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ },
+ {
+ "match": "(?xi)\n(\\\\)?\\b(Attribute|SensitiveParameter|AllowDynamicProperties|ReturnTypeWillChange)\\b",
+ "name": "support.attribute.builtin.php",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ }
+ },
+ {
+ "begin": "(?i)(?=[\\\\a-z_\\x{7f}-\\x{10ffff}])",
+ "end": "(?xi)\n( [a-z_\\x{7f}-\\x{10ffff}] [a-z0-9_\\x{7f}-\\x{10ffff}]* )?\n(?![a-z0-9_\\x{7f}-\\x{10ffff}\\\\])",
+ "endCaptures": {
+ "1": {
+ "name": "support.attribute.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ }
+ ]
+ },
+ "attribute": {
+ "begin": "\\#\\[",
+ "end": "\\]",
+ "name": "meta.attribute.php",
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.php"
+ },
+ {
+ "begin": "([a-zA-Z0-9_\\x{7f}-\\x{10ffff}\\\\]+)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#attribute-name"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#named-arguments"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "#attribute-name"
+ }
+ ]
+ },
+ "class-builtin": {
+ "patterns": [
+ {
+ "match": "(?xi)\n(\\\\)?\\b\n(Attribute|(APC|Append)Iterator|Array(Access|Iterator|Object)\n|Bad(Function|Method)CallException\n|(Caching|CallbackFilter)Iterator|Collator|Collectable|Cond|Countable|CURLFile\n|Date(Interval|Period|Time(Interface|Immutable|Zone)?)?|Directory(Iterator)?|DomainException\n|DOM(Attr|CdataSection|CharacterData|Comment|Document(Fragment)?|Element|EntityReference\n |Implementation|NamedNodeMap|Node(list)?|ProcessingInstruction|Text|XPath)\n|(Error)?Exception|EmptyIterator\n|finfo\n|Ev(Check|Child|Embed|Fork|Idle|Io|Loop|Periodic|Prepare|Signal|Stat|Timer|Watcher)?\n|Event(Base|Buffer(Event)?|SslContext|Http(Request|Connection)?|Config|DnsBase|Util|Listener)?\n|FANNConnection|(Filter|Filesystem)Iterator\n|Gender\\\\Gender|GlobIterator|Gmagick(Draw|Pixel)?\n|Haru(Annotation|Destination|Doc|Encoder|Font|Image|Outline|Page)\n|Http((Inflate|Deflate)?Stream|Message|Request(Pool)?|Response|QueryString)\n|HRTime\\\\(PerformanceCounter|StopWatch)\n|Intl(Calendar|((CodePoint|RuleBased)?Break|Parts)?Iterator|DateFormatter|TimeZone)\n|Imagick(Draw|Pixel(Iterator)?)?\n|InfiniteIterator|InvalidArgumentException|Iterator(Aggregate|Iterator)?\n|JsonSerializable\n|KTaglib_(MPEG_(File|AudioProperties)|Tag|ID3v2_(Tag|(AttachedPicture)?Frame))\n|Lapack|(Length|Locale|Logic)Exception|LimitIterator|Lua(Closure)?\n|Mongo(BinData|Client|Code|Collection|CommandCursor|Cursor(Exception)?|Date|DB(Ref)?|DeleteBatch\n |Grid(FS(Cursor|File)?)|Id|InsertBatch|Int(32|64)|Log|Pool|Regex|ResultException|Timestamp\n |UpdateBatch|Write(Batch|ConcernException))?\n|Memcache(d)?|MessageFormatter|MultipleIterator|Mutex\n|mysqli(_(driver|stmt|warning|result))?\n|MysqlndUh(Connection|PreparedStatement)\n|NoRewindIterator|Normalizer|NumberFormatter\n|OCI-(Collection|Lob)|OuterIterator|(OutOf(Bounds|Range)|Overflow)Exception\n|ParentIterator|PDO(Statement)?|Phar(Data|FileInfo)?|php_user_filter|Pool\n|QuickHash(Int(Set|StringHash)|StringIntHash)\n|Recursive(Array|Caching|Directory|Fallback|Filter|Iterator|Regex|Tree)?Iterator\n|Reflection(Class|Function(Abstract)?|Method|Object|Parameter|Property|(Zend)?Extension)?\n|RangeException|Reflector|RegexIterator|ResourceBundle|RuntimeException|RRD(Creator|Graph|Updater)\n|SAM(Connection|Message)|SCA(_(SoapProxy|LocalProxy))?\n|SDO_(DAS_(ChangeSummary|Data(Factory|Object)|Relational|Setting|XML(_Document)?)\n |Data(Factory|Object)|Exception|List|Model_(Property|ReflectionDataObject|Type)|Sequence)\n|SeekableIterator|Serializable|SessionHandler(Interface)?|SimpleXML(Iterator|Element)|SNMP\n|Soap(Client|Fault|Header|Param|Server|Var)\n|SphinxClient|Spoofchecker\n|Spl(DoublyLinkedList|Enum|File(Info|Object)|FixedArray|(Max|Min)?Heap|Observer|ObjectStorage\n |(Priority)?Queue|Stack|Subject|Type|TempFileObject)\n|SQLite(3(Result|Stmt)?|Database|Result|Unbuffered)\n|stdClass|streamWrapper|SVM(Model)?|Swish(Result(s)?|Search)?|Sync(Event|Mutex|ReaderWriter|Semaphore)\n|Thread(ed)?|tidy(Node)?|TokyoTyrant(Table|Iterator|Query)?|Transliterator|Traversable\n|UConverter|(Underflow|UnexpectedValue)Exception\n|V8Js(Exception)?|Varnish(Admin|Log|Stat)\n|Worker|Weak(Map|Ref)\n|XML(Diff\\\\(Base|DOM|File|Memory)|Reader|Writer)|XsltProcessor\n|Yaf_(Route_(Interface|Map|Regex|Rewrite|Simple|Supervar)\n |Action_Abstract|Application|Config_(Simple|Ini|Abstract)|Controller_Abstract\n |Dispatcher|Exception|Loader|Plugin_Abstract|Registry|Request_(Abstract|Simple|Http)\n |Response_Abstract|Router|Session|View_(Simple|Interface))\n|Yar_(Client(_Exception)?|Concurrent_Client|Server(_Exception)?)\n|ZipArchive|ZMQ(Context|Device|Poll|Socket)?)\n\\b",
+ "name": "support.class.builtin.php",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ }
+ }
+ ]
+ },
+ "class-name": {
+ "patterns": [
+ {
+ "begin": "(?i)(?=\\\\?[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*\\\\)",
+ "end": "(?xi)\n( [a-z_\\x{7f}-\\x{10ffff}] [a-z0-9_\\x{7f}-\\x{10ffff}]* )?\n(?![a-z0-9_\\x{7f}-\\x{10ffff}\\\\])",
+ "endCaptures": {
+ "1": {
+ "name": "support.class.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ },
+ {
+ "include": "#class-builtin"
+ },
+ {
+ "begin": "(?i)(?=[\\\\a-z_\\x{7f}-\\x{10ffff}])",
+ "end": "(?xi)\n( [a-z_\\x{7f}-\\x{10ffff}] [a-z0-9_\\x{7f}-\\x{10ffff}]* )?\n(?![a-z0-9_\\x{7f}-\\x{10ffff}\\\\])",
+ "endCaptures": {
+ "1": {
+ "name": "support.class.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ }
+ ]
+ },
+ "inheritance-single": {
+ "patterns": [
+ {
+ "begin": "(?i)(?=\\\\?[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*\\\\)",
+ "end": "(?i)([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)?(?=[^a-z0-9_\\x{7f}-\\x{10ffff}\\\\])",
+ "endCaptures": {
+ "1": {
+ "name": "entity.other.inherited-class.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ },
+ {
+ "include": "#class-builtin"
+ },
+ {
+ "include": "#namespace"
+ },
+ {
+ "match": "(?i)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*",
+ "name": "entity.other.inherited-class.php"
+ }
+ ]
+ },
+ "class-extends": {
+ "patterns": [
+ {
+ "begin": "(?i)(extends)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.extends.php"
+ }
+ },
+ "end": "(?i)(?=[^A-Za-z0-9_\\x{7f}-\\x{10ffff}\\\\])",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#inheritance-single"
+ }
+ ]
+ }
+ ]
+ },
+ "interface-extends": {
+ "patterns": [
+ {
+ "begin": "(?i)(extends)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.extends.php"
+ }
+ },
+ "end": "(?i)(?={)",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.classes.php"
+ },
+ {
+ "include": "#inheritance-single"
+ }
+ ]
+ }
+ ]
+ },
+ "class-implements": {
+ "patterns": [
+ {
+ "begin": "(?i)(implements)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.implements.php"
+ }
+ },
+ "end": "(?i)(?={)",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.classes.php"
+ },
+ {
+ "include": "#inheritance-single"
+ }
+ ]
+ }
+ ]
+ },
+ "class-constant": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(const)\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.php"
+ },
+ "2": {
+ "name": "constant.other.php"
+ }
+ }
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "/\\*\\*(?=\\s)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "name": "comment.block.documentation.phpdoc.php",
+ "patterns": [
+ {
+ "include": "#php_doc"
+ }
+ ]
+ },
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.php"
+ },
+ {
+ "begin": "(^\\s+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.php"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "end": "\\n|(?=\\?>)",
+ "name": "comment.line.double-slash.php"
+ }
+ ]
+ },
+ {
+ "begin": "(^\\s+)?(?=#)(?!#\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.php"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "end": "\\n|(?=\\?>)",
+ "name": "comment.line.number-sign.php"
+ }
+ ]
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "match": "(?i)\\b(TRUE|FALSE|NULL|__(FILE|DIR|FUNCTION|CLASS|METHOD|LINE|NAMESPACE)__|ON|OFF|YES|NO|NL|BR|TAB)\\b",
+ "name": "constant.language.php"
+ },
+ {
+ "match": "(?x)\n(\\\\)?\\b\n(DEFAULT_INCLUDE_PATH\n|EAR_(INSTALL|EXTENSION)_DIR\n|E_(ALL|COMPILE_(ERROR|WARNING)|CORE_(ERROR|WARNING)|DEPRECATED|ERROR|NOTICE\n |PARSE|RECOVERABLE_ERROR|STRICT|USER_(DEPRECATED|ERROR|NOTICE|WARNING)|WARNING)\n|PHP_(ROUND_HALF_(DOWN|EVEN|ODD|UP)|(MAJOR|MINOR|RELEASE)_VERSION|MAXPATHLEN\n |BINDIR|SHLIB_SUFFIX|SYSCONFDIR|SAPI|CONFIG_FILE_(PATH|SCAN_DIR)\n |INT_(MAX|SIZE)|ZTS|OS|OUTPUT_HANDLER_(START|CONT|END)|DEBUG|DATADIR\n |URL_(SCHEME|HOST|USER|PORT|PASS|PATH|QUERY|FRAGMENT)|PREFIX\n |EXTRA_VERSION|EXTENSION_DIR|EOL|VERSION(_ID)?\n |WINDOWS_(NT_(SERVER|DOMAIN_CONTROLLER|WORKSTATION)\n |VERSION_(MAJOR|MINOR)|BUILD|SUITEMASK|SP_(MAJOR|MINOR)\n |PRODUCTTYPE|PLATFORM)\n |LIBDIR|LOCALSTATEDIR)\n|STD(ERR|IN|OUT)|ZEND_(DEBUG_BUILD|THREAD_SAFE))\n\\b",
+ "name": "support.constant.core.php",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(\\\\)?\\b\n(__COMPILER_HALT_OFFSET__|AB(MON_(1|2|3|4|5|6|7|8|9|10|11|12)|DAY[1-7])\n|AM_STR|ASSERT_(ACTIVE|BAIL|CALLBACK_QUIET_EVAL|WARNING)|ALT_DIGITS\n|CASE_(UPPER|LOWER)|CHAR_MAX|CONNECTION_(ABORTED|NORMAL|TIMEOUT)|CODESET|COUNT_(NORMAL|RECURSIVE)\n|CREDITS_(ALL|DOCS|FULLPAGE|GENERAL|GROUP|MODULES|QA|SAPI)\n|CRYPT_(BLOWFISH|EXT_DES|MD5|SHA(256|512)|SALT_LENGTH|STD_DES)|CURRENCY_SYMBOL\n|D_(T_)?FMT|DATE_(ATOM|COOKIE|ISO8601|RFC(822|850|1036|1123|2822|3339)|RSS|W3C)\n|DAY_[1-7]|DECIMAL_POINT|DIRECTORY_SEPARATOR\n|ENT_(COMPAT|IGNORE|(NO)?QUOTES)|EXTR_(IF_EXISTS|OVERWRITE|PREFIX_(ALL|IF_EXISTS|INVALID|SAME)|REFS|SKIP)\n|ERA(_(D_(T_)?FMT)|T_FMT|YEAR)?|FRAC_DIGITS|GROUPING|HASH_HMAC|HTML_(ENTITIES|SPECIALCHARS)\n|INF|INFO_(ALL|CREDITS|CONFIGURATION|ENVIRONMENT|GENERAL|LICENSEMODULES|VARIABLES)\n|INI_(ALL|CANNER_(NORMAL|RAW)|PERDIR|SYSTEM|USER)|INT_(CURR_SYMBOL|FRAC_DIGITS)\n|LC_(ALL|COLLATE|CTYPE|MESSAGES|MONETARY|NUMERIC|TIME)|LOCK_(EX|NB|SH|UN)\n|LOG_(ALERT|AUTH(PRIV)?|CRIT|CRON|CONS|DAEMON|DEBUG|EMERG|ERR|INFO|LOCAL[1-7]|LPR|KERN|MAIL\n |NEWS|NODELAY|NOTICE|NOWAIT|ODELAY|PID|PERROR|WARNING|SYSLOG|UCP|USER)\n|M_(1_PI|SQRT(1_2|2|3|PI)|2_(SQRT)?PI|PI(_(2|4))?|E(ULER)?|LN(10|2|PI)|LOG(10|2)E)\n|MON_(1|2|3|4|5|6|7|8|9|10|11|12|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)\n|N_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|NAN|NEGATIVE_SIGN|NO(EXPR|STR)\n|P_(CS_PRECEDES|SEP_BY_SPACE|SIGN_POSN)|PM_STR|POSITIVE_SIGN\n|PATH(_SEPARATOR|INFO_(EXTENSION|(BASE|DIR|FILE)NAME))|RADIXCHAR\n|SEEK_(CUR|END|SET)|SORT_(ASC|DESC|LOCALE_STRING|REGULAR|STRING)|STR_PAD_(BOTH|LEFT|RIGHT)\n|T_FMT(_AMPM)?|THOUSEP|THOUSANDS_SEP\n|UPLOAD_ERR_(CANT_WRITE|EXTENSION|(FORM|INI)_SIZE|NO_(FILE|TMP_DIR)|OK|PARTIAL)\n|YES(EXPR|STR))\n\\b",
+ "name": "support.constant.std.php",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(\\\\)?\\b\n(GLOB_(MARK|BRACE|NO(SORT|CHECK|ESCAPE)|ONLYDIR|ERR|AVAILABLE_FLAGS)\n|XML_(SAX_IMPL|(DTD|DOCUMENT(_(FRAG|TYPE))?|HTML_DOCUMENT|NOTATION|NAMESPACE_DECL|PI|COMMENT|DATA_SECTION|TEXT)_NODE\n |OPTION_(SKIP_(TAGSTART|WHITE)|CASE_FOLDING|TARGET_ENCODING)\n |ERROR_((BAD_CHAR|(ATTRIBUTE_EXTERNAL|BINARY|PARAM|RECURSIVE)_ENTITY)_REF|MISPLACED_XML_PI|SYNTAX|NONE\n |NO_(MEMORY|ELEMENTS)|TAG_MISMATCH|INCORRECT_ENCODING|INVALID_TOKEN|DUPLICATE_ATTRIBUTE\n |UNCLOSED_(CDATA_SECTION|TOKEN)|UNDEFINED_ENTITY|UNKNOWN_ENCODING|JUNK_AFTER_DOC_ELEMENT\n |PARTIAL_CHAR|EXTERNAL_ENTITY_HANDLING|ASYNC_ENTITY)\n |ENTITY_(((REF|DECL)_)?NODE)|ELEMENT(_DECL)?_NODE|LOCAL_NAMESPACE|ATTRIBUTE_(NMTOKEN(S)?|NOTATION|NODE)\n |CDATA|ID(REF(S)?)?|DECL_NODE|ENTITY|ENUMERATION)\n|MHASH_(RIPEMD(128|160|256|320)|GOST|MD(2|4|5)|SHA(1|224|256|384|512)|SNEFRU256|HAVAL(128|160|192|224|256)\n |CRC23(B)?|TIGER(128|160)?|WHIRLPOOL|ADLER32)\n|MYSQL_(BOTH|NUM|CLIENT_(SSL|COMPRESS|IGNORE_SPACE|INTERACTIVE|ASSOC))\n|MYSQLI_(REPORT_(STRICT|INDEX|OFF|ERROR|ALL)|REFRESH_(GRANT|MASTER|BACKUP_LOG|STATUS|SLAVE|HOSTS|THREADS|TABLES|LOG)\n |READ_DEFAULT_(FILE|GROUP)|(GROUP|MULTIPLE_KEY|BINARY|BLOB)_FLAG|BOTH\n |STMT_ATTR_(CURSOR_TYPE|UPDATE_MAX_LENGTH|PREFETCH_ROWS)|STORE_RESULT\n |SERVER_QUERY_(NO_((GOOD_)?INDEX_USED)|WAS_SLOW)|SET_(CHARSET_NAME|FLAG)\n |NO_(DEFAULT_VALUE_FLAG|DATA)|NOT_NULL_FLAG|NUM(_FLAG)?\n |CURSOR_TYPE_(READ_ONLY|SCROLLABLE|NO_CURSOR|FOR_UPDATE)\n |CLIENT_(SSL|NO_SCHEMA|COMPRESS|IGNORE_SPACE|INTERACTIVE|FOUND_ROWS)\n |TYPE_(GEOMETRY|((MEDIUM|LONG|TINY)_)?BLOB|BIT|SHORT|STRING|SET|YEAR|NULL|NEWDECIMAL|NEWDATE|CHAR\n |TIME(STAMP)?|TINY|INT24|INTERVAL|DOUBLE|DECIMAL|DATE(TIME)?|ENUM|VAR_STRING|FLOAT|LONG(LONG)?)\n |TIME_STAMP_FLAG|INIT_COMMAND|ZEROFILL_FLAG|ON_UPDATE_NOW_FLAG\n |OPT_(NET_((CMD|READ)_BUFFER_SIZE)|CONNECT_TIMEOUT|INT_AND_FLOAT_NATIVE|LOCAL_INFILE)\n |DEBUG_TRACE_ENABLED|DATA_TRUNCATED|USE_RESULT|(ENUM|(PART|PRI|UNIQUE)_KEY|UNSIGNED)_FLAG\n |ASSOC|ASYNC|AUTO_INCREMENT_FLAG)\n|MCRYPT_(RC(2|6)|RIJNDAEL_(128|192|256)|RAND|GOST|XTEA|MODE_(STREAM|NOFB|CBC|CFB|OFB|ECB)|MARS\n |BLOWFISH(_COMPAT)?|SERPENT|SKIPJACK|SAFER(64|128|PLUS)|CRYPT|CAST_(128|256)|TRIPLEDES|THREEWAY\n |TWOFISH|IDEA|(3)?DES|DECRYPT|DEV_(U)?RANDOM|PANAMA|ENCRYPT|ENIGNA|WAKE|LOKI97|ARCFOUR(_IV)?)\n|STREAM_(REPORT_ERRORS|MUST_SEEK|MKDIR_RECURSIVE|BUFFER_(NONE|FULL|LINE)|SHUT_(RD)?WR\n |SOCK_(RDM|RAW|STREAM|SEQPACKET|DGRAM)|SERVER_(BIND|LISTEN)\n |NOTIFY_(REDIRECTED|RESOLVE|MIME_TYPE_IS|SEVERITY_(INFO|ERR|WARN)|COMPLETED|CONNECT|PROGRESS\n |FILE_SIZE_IS|FAILURE|AUTH_(REQUIRED|RESULT))\n |CRYPTO_METHOD_((SSLv2(3)?|SSLv3|TLS)_(CLIENT|SERVER))|CLIENT_((ASYNC_)?CONNECT|PERSISTENT)\n |CAST_(AS_STREAM|FOR_SELECT)|(IGNORE|IS)_URL|IPPROTO_(RAW|TCP|ICMP|IP|UDP)|OOB\n |OPTION_(READ_(BUFFER|TIMEOUT)|BLOCKING|WRITE_BUFFER)|URL_STAT_(LINK|QUIET)|USE_PATH\n |PEEK|PF_(INET(6)?|UNIX)|ENFORCE_SAFE_MODE|FILTER_(ALL|READ|WRITE))\n|SUNFUNCS_RET_(DOUBLE|STRING|TIMESTAMP)\n|SQLITE_(READONLY|ROW|MISMATCH|MISUSE|BOTH|BUSY|SCHEMA|NOMEM|NOTFOUND|NOTADB|NOLFS|NUM|CORRUPT\n |CONSTRAINT|CANTOPEN|TOOBIG|INTERRUPT|INTERNAL|IOERR|OK|DONE|PROTOCOL|PERM|ERROR|EMPTY\n |FORMAT|FULL|LOCKED|ABORT|ASSOC|AUTH)\n|SQLITE3_(BOTH|BLOB|NUM|NULL|TEXT|INTEGER|OPEN_(READ(ONLY|WRITE)|CREATE)|FLOAT_ASSOC)\n|CURL(M_(BAD_((EASY)?HANDLE)|CALL_MULTI_PERFORM|INTERNAL_ERROR|OUT_OF_MEMORY|OK)\n |MSG_DONE|SSH_AUTH_(HOST|NONE|DEFAULT|PUBLICKEY|PASSWORD|KEYBOARD)\n |CLOSEPOLICY_(SLOWEST|CALLBACK|OLDEST|LEAST_(RECENTLY_USED|TRAFFIC)\n |INFO_(REDIRECT_(COUNT|TIME)|REQUEST_SIZE|SSL_VERIFYRESULT|STARTTRANSFER_TIME\n |(SIZE|SPEED)_(DOWNLOAD|UPLOAD)|HTTP_CODE|HEADER_(OUT|SIZE)|NAMELOOKUP_TIME\n |CONNECT_TIME|CONTENT_(TYPE|LENGTH_(DOWNLOAD|UPLOAD))|CERTINFO|TOTAL_TIME\n |PRIVATE|PRETRANSFER_TIME|EFFECTIVE_URL|FILETIME)\n |OPT_(RESUME_FROM|RETURNTRANSFER|REDIR_PROTOCOLS|REFERER|READ(DATA|FUNCTION)|RANGE|RANDOM_FILE\n |MAX(CONNECTS|REDIRS)|BINARYTRANSFER|BUFFERSIZE\n |SSH_(HOST_PUBLIC_KEY_MD5|(PRIVATE|PUBLIC)_KEYFILE)|AUTH_TYPES)\n |SSL(CERT(TYPE|PASSWD)?|ENGINE(_DEFAULT)?|VERSION|KEY(TYPE|PASSWD)?)\n |SSL_(CIPHER_LIST|VERIFY(HOST|PEER))\n |STDERR|HTTP(GET|HEADER|200ALIASES|_VERSION|PROXYTUNNEL|AUTH)\n |HEADER(FUNCTION)?|NO(BODY|SIGNAL|PROGRESS)|NETRC|CRLF|CONNECTTIMEOUT(_MS)?\n |COOKIE(SESSION|JAR|FILE)?|CUSTOMREQUEST|CERTINFO|CLOSEPOLICY|CA(INFO|PATH)|TRANSFERTEXT\n |TCP_NODELAY|TIME(CONDITION|OUT(_MS)?|VALUE)|INTERFACE|INFILE(SIZE)?|IPRESOLVE\n |DNS_(CACHE_TIMEOUT|USE_GLOBAL_CACHE)|URL|USER(AGENT|PWD)|UNRESTRICTED_AUTH|UPLOAD\n |PRIVATE|PROGRESSFUNCTION|PROXY(TYPE|USERPWD|PORT|AUTH)?|PROTOCOLS|PORT\n |POST(REDIR|QUOTE|FIELDS)?|PUT|EGDSOCKET|ENCODING|VERBOSE|KRB4LEVEL|KEYPASSWD|QUOTE|FRESH_CONNECT\n |FTP(APPEND|LISTONLY|PORT|SSLAUTH)\n |FTP_(SSL|SKIP_PASV_IP|CREATE_MISSING_DIRS|USE_EP(RT|SV)|FILEMETHOD)\n |FILE(TIME)?|FORBID_REUSE|FOLLOWLOCATION|FAILONERROR|WRITE(FUNCTION|HEADER)|LOW_SPEED_(LIMIT|TIME)\n |AUTOREFERER)\n |PROXY_(HTTP|SOCKS(4|5))|PROTO_(SCP|SFTP|HTTP(S)?|TELNET|TFTP|DICT|FTP(S)?|FILE|LDAP(S)?|ALL)\n |E_((RECV|READ)_ERROR|GOT_NOTHING|MALFORMAT_USER\n |BAD_(CONTENT_ENCODING|CALLING_ORDER|PASSWORD_ENTERED|FUNCTION_ARGUMENT)\n |SSH|SSL_(CIPHER|CONNECT_ERROR|CERTPROBLEM|CACERT|PEER_CERTIFICATE|ENGINE_(NOTFOUND|SETFAILED))\n |SHARE_IN_USE|SEND_ERROR|HTTP_(RANGE_ERROR|NOT_FOUND|PORT_FAILED|POST_ERROR)\n |COULDNT_(RESOLVE_(HOST|PROXY)|CONNECT)|TOO_MANY_REDIRECTS|TELNET_OPTION_SYNTAX|OBSOLETE\n |OUT_OF_MEMORY|OPERATION|TIMEOUTED|OK|URL_MALFORMAT(_USER)?|UNSUPPORTED_PROTOCOL\n |UNKNOWN_TELNET_OPTION|PARTIAL_FILE\n |FTP_(BAD_DOWNLOAD_RESUME|SSL_FAILED|COULDNT_(RETR_FILE|GET_SIZE|STOR_FILE|SET_(BINARY|ASCII)|USE_REST)\n |CANT_(GET_HOST|RECONNECT)|USER_PASSWORD_INCORRECT|PORT_FAILED|QUOTE_ERROR|WRITE_ERROR\n |WEIRD_((PASS|PASV|SERVER|USER)_REPLY|227_FORMAT)|ACCESS_DENIED)\n |FILESIZE_EXCEEDED|FILE_COULDNT_READ_FILE|FUNCTION_NOT_FOUND|FAILED_INIT|WRITE_ERROR|LIBRARY_NOT_FOUND\n |LDAP_(SEARCH_FAILED|CANNOT_BIND|INVALID_URL)|ABORTED_BY_CALLBACK)\n |VERSION_NOW\n |FTP(METHOD_(MULTI|SINGLE|NO)CWD|SSL_(ALL|NONE|CONTROL|TRY)|AUTH_(DEFAULT|SSL|TLS))\n |AUTH_(ANY(SAFE)?|BASIC|DIGEST|GSSNEGOTIATE|NTLM))\n|CURL_(HTTP_VERSION_(1_(0|1)|NONE)|NETRC_(REQUIRED|IGNORED|OPTIONAL)|TIMECOND_(IF(UN)?MODSINCE|LASTMOD)\n |IPRESOLVE_(V(4|6)|WHATEVER)|VERSION_(SSL|IPV6|KERBEROS4|LIBZ))\n|IMAGETYPE_(GIF|XBM|BMP|SWF|COUNT|TIFF_(MM|II)|ICO|IFF|UNKNOWN|JB2|JPX|JP2|JPC|JPEG(2000)?|PSD|PNG|WBMP)\n|INPUT_(REQUEST|GET|SERVER|SESSION|COOKIE|POST|ENV)|ICONV_(MIME_DECODE_(STRICT|CONTINUE_ON_ERROR)|IMPL|VERSION)\n|DNS_(MX|SRV|SOA|HINFO|NS|NAPTR|CNAME|TXT|PTR|ANY|ALL|AAAA|A(6)?)\n|DOM(STRING_SIZE_ERR)\n|DOM_((SYNTAX|HIERARCHY_REQUEST|NO_(MODIFICATION_ALLOWED|DATA_ALLOWED)|NOT_(FOUND|SUPPORTED)|NAMESPACE\n |INDEX_SIZE|USE_ATTRIBUTE|VALID_(MODIFICATION|STATE|CHARACTER|ACCESS)|PHP|VALIDATION|WRONG_DOCUMENT)_ERR)\n|JSON_(HEX_(TAG|QUOT|AMP|APOS)|NUMERIC_CHECK|ERROR_(SYNTAX|STATE_MISMATCH|NONE|CTRL_CHAR|DEPTH|UTF8)|FORCE_OBJECT)\n|PREG_((D_UTF8(_OFFSET)?|NO|INTERNAL|(BACKTRACK|RECURSION)_LIMIT)_ERROR|GREP_INVERT\n |SPLIT_(NO_EMPTY|(DELIM|OFFSET)_CAPTURE)|SET_ORDER|OFFSET_CAPTURE|PATTERN_ORDER)\n|PSFS_(PASS_ON|ERR_FATAL|FEED_ME|FLAG_(NORMAL|FLUSH_(CLOSE|INC)))\n|PCRE_VERSION|POSIX_((F|R|W|X)_OK|S_IF(REG|BLK|SOCK|CHR|IFO))\n|FNM_(NOESCAPE|CASEFOLD|PERIOD|PATHNAME)\n|FILTER_(REQUIRE_(SCALAR|ARRAY)|NULL_ON_FAILURE|CALLBACK|DEFAULT|UNSAFE_RAW\n |SANITIZE_(MAGIC_QUOTES|STRING|STRIPPED|SPECIAL_CHARS|NUMBER_(INT|FLOAT)|URL\n |EMAIL|ENCODED|FULL_SPCIAL_CHARS)\n |VALIDATE_(REGEXP|BOOLEAN|INT|IP|URL|EMAIL|FLOAT)\n |FORCE_ARRAY\n |FLAG_(SCHEME_REQUIRED|STRIP_(BACKTICK|HIGH|LOW)|HOST_REQUIRED|NONE|NO_(RES|PRIV)_RANGE|ENCODE_QUOTES\n |IPV(4|6)|PATH_REQUIRED|EMPTY_STRING_NULL|ENCODE_(HIGH|LOW|AMP)|QUERY_REQUIRED\n |ALLOW_(SCIENTIFIC|HEX|THOUSAND|OCTAL|FRACTION)))\n|FILE_(BINARY|SKIP_EMPTY_LINES|NO_DEFAULT_CONTEXT|TEXT|IGNORE_NEW_LINES|USE_INCLUDE_PATH|APPEND)\n|FILEINFO_(RAW|MIME(_(ENCODING|TYPE))?|SYMLINK|NONE|CONTINUE|DEVICES|PRESERVE_ATIME)\n|FORCE_(DEFLATE|GZIP)\n|LIBXML_(XINCLUDE|NSCLEAN|NO(XMLDECL|BLANKS|NET|CDATA|ERROR|EMPTYTAG|ENT|WARNING)\n |COMPACT|DTD(VALID|LOAD|ATTR)|((DOTTED|LOADED)_)?VERSION|PARSEHUGE|ERR_(NONE|ERROR|FATAL|WARNING)))\n\\b",
+ "name": "support.constant.ext.php",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(\\\\)?\\b\n(T_(RETURN|REQUIRE(_ONCE)?|GOTO|GLOBAL|(MINUS|MOD|MUL|XOR)_EQUAL|METHOD_C|ML_COMMENT|BREAK\n |BOOL_CAST|BOOLEAN_(AND|OR)|BAD_CHARACTER|SR(_EQUAL)?|STRING(_CAST|VARNAME)?|START_HEREDOC|STATIC\n |SWITCH|SL(_EQUAL)?|HALT_COMPILER|NS_(C|SEPARATOR)|NUM_STRING|NEW|NAMESPACE|CHARACTER|COMMENT\n |CONSTANT(_ENCAPSED_STRING)?|CONCAT_EQUAL|CONTINUE|CURLY_OPEN|CLOSE_TAG|CLONE|CLASS(_C)?\n |CASE|CATCH|TRY|THROW|IMPLEMENTS|ISSET|IS_((GREATER|SMALLER)_OR_EQUAL|(NOT_)?(IDENTICAL|EQUAL))\n |INSTANCEOF|INCLUDE(_ONCE)?|INC|INT_CAST|INTERFACE|INLINE_HTML|IF|OR_EQUAL|OBJECT_(CAST|OPERATOR)\n |OPEN_TAG(_WITH_ECHO)?|OLD_FUNCTION|DNUMBER|DIR|DIV_EQUAL|DOC_COMMENT|DOUBLE_(ARROW|CAST|COLON)\n |DOLLAR_OPEN_CURLY_BRACES|DO|DEC|DECLARE|DEFAULT|USE|UNSET(_CAST)?|PRINT|PRIVATE|PROTECTED|PUBLIC\n |PLUS_EQUAL|PAAMAYIM_NEKUDOTAYIM|EXTENDS|EXIT|EMPTY|ENCAPSED_AND_WHITESPACE\n |END(SWITCH|IF|DECLARE|FOR(EACH)?|WHILE)|END_HEREDOC|ECHO|EVAL|ELSE(IF)?|VAR(IABLE)?|FINAL|FILE\n |FOR(EACH)?|FUNC_C|FUNCTION|WHITESPACE|WHILE|LNUMBER|LIST|LINE|LOGICAL_(AND|OR|XOR)\n |ARRAY_(CAST)?|ABSTRACT|AS|AND_EQUAL))\n\\b",
+ "name": "support.constant.parser-token.php",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ }
+ },
+ {
+ "match": "(?i)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*",
+ "name": "constant.other.php"
+ }
+ ]
+ },
+ "function-parameters": {
+ "patterns": [
+ {
+ "include": "#attribute"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.php"
+ },
+ {
+ "match": "(?xi)\n(?: (\n # nullable type\n (?:\\?\\s*)? [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ |\n # union, intersection or DNF type\n (?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) )\n (?: \\s*[|&]\\s*\n (?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) )\n )+\n) \\s+ )?\n((?:(&)\\s*)?(\\.\\.\\.)(\\$)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) # Variable name with possible reference\n(?=\\s*(?:,|\\)|/[/*]|\\#|$)) # A closing parentheses (end of argument list) or a comma or a comment",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#php-types"
+ }
+ ]
+ },
+ "2": {
+ "name": "variable.other.php"
+ },
+ "3": {
+ "name": "storage.modifier.reference.php"
+ },
+ "4": {
+ "name": "keyword.operator.variadic.php"
+ },
+ "5": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "name": "meta.function.parameter.variadic.php"
+ },
+ {
+ "begin": "(?xi)\n(\n # nullable type\n (?:\\?\\s*)? [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ |\n # union, intersection or DNF type\n (?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) )\n (?: \\s*[|&]\\s*\n (?: [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+ | \\(\\s* [a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+(?:\\s*&\\s*[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+)+ \\s*\\) )\n )+\n)\n\\s+ ((?:(&)\\s*)?(\\$)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) # Variable name with possible reference",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#php-types"
+ }
+ ]
+ },
+ "2": {
+ "name": "variable.other.php"
+ },
+ "3": {
+ "name": "storage.modifier.reference.php"
+ },
+ "4": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "end": "(?=\\s*(?:,|\\)|/[/*]|\\#))",
+ "name": "meta.function.parameter.typehinted.php",
+ "patterns": [
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.assignment.php"
+ }
+ },
+ "end": "(?=\\s*(?:,|\\)|/[/*]|\\#))",
+ "patterns": [
+ {
+ "include": "#parameter-default-types"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "match": "(?xi)\n((?:(&)\\s*)?(\\$)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) # Variable name with possible reference\n(?=\\s*(?:,|\\)|/[/*]|\\#|$)) # A closing parentheses (end of argument list) or a comma or a comment",
+ "captures": {
+ "1": {
+ "name": "variable.other.php"
+ },
+ "2": {
+ "name": "storage.modifier.reference.php"
+ },
+ "3": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "name": "meta.function.parameter.no-default.php"
+ },
+ {
+ "begin": "(?xi)\n((?:(&)\\s*)?(\\$)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) # Variable name with possible reference\n\\s*(=)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.php"
+ },
+ "2": {
+ "name": "storage.modifier.reference.php"
+ },
+ "3": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "4": {
+ "name": "keyword.operator.assignment.php"
+ }
+ },
+ "end": "(?=\\s*(?:,|\\)|/[/*]|\\#))",
+ "name": "meta.function.parameter.default.php",
+ "patterns": [
+ {
+ "include": "#parameter-default-types"
+ }
+ ]
+ }
+ ]
+ },
+ "named-arguments": {
+ "match": "(?i)(?<=^|\\(|,)\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)\\s*(:)(?!:)",
+ "captures": {
+ "1": {
+ "name": "entity.name.variable.parameter.php"
+ },
+ "2": {
+ "name": "punctuation.separator.colon.php"
+ }
+ }
+ },
+ "function-call": {
+ "patterns": [
+ {
+ "begin": "(?x)\n(\n \\\\?(?<![a-zA-Z0-9_\\x{7f}-\\x{10ffff}]) # Optional root namespace\n [a-zA-Z_\\x{7f}-\\x{10ffff}][a-zA-Z0-9_\\x{7f}-\\x{10ffff}]* # First namespace\n (?:\\\\[a-zA-Z_\\x{7f}-\\x{10ffff}][a-zA-Z0-9_\\x{7f}-\\x{10ffff}]*)+ # Additional namespaces\n)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#namespace"
+ },
+ {
+ "match": "(?i)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*",
+ "name": "entity.name.function.php"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
+ }
+ },
+ "name": "meta.function-call.php",
+ "patterns": [
+ {
+ "include": "#named-arguments"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(\\\\)?(?<![a-zA-Z0-9_\\x{7f}-\\x{10ffff}])([a-zA-Z_\\x{7f}-\\x{10ffff}][a-zA-Z0-9_\\x{7f}-\\x{10ffff}]*)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#namespace"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#support"
+ },
+ {
+ "match": "(?i)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*",
+ "name": "entity.name.function.php"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
+ }
+ },
+ "name": "meta.function-call.php",
+ "patterns": [
+ {
+ "include": "#named-arguments"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "match": "(?i)\\b(print|echo)\\b",
+ "name": "support.function.construct.output.php"
+ }
+ ]
+ },
+ "heredoc": {
+ "patterns": [
+ {
+ "begin": "(?i)(?=<<<\\s*(\"?)([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)(\\1)\\s*$)",
+ "end": "(?!\\G)",
+ "name": "string.unquoted.heredoc.php",
+ "patterns": [
+ {
+ "include": "#heredoc_interior"
+ }
+ ]
+ },
+ {
+ "begin": "(?=<<<\\s*'([a-zA-Z_]+[a-zA-Z0-9_]*)'\\s*$)",
+ "end": "(?!\\G)",
+ "name": "string.unquoted.nowdoc.php",
+ "patterns": [
+ {
+ "include": "#nowdoc_interior"
+ }
+ ]
+ }
+ ]
+ },
+ "heredoc_interior": {
+ "patterns": [
+ {
+ "begin": "(<<<)\\s*(\"?)(HTML)(\\2)(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "text.html",
+ "end": "^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "name": "meta.embedded.html",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*(\"?)(XML)(\\2)(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "text.xml",
+ "end": "^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "name": "meta.embedded.xml",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "text.xml"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*(\"?)([DS]QL)(\\2)(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "source.sql",
+ "end": "^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "name": "meta.embedded.sql",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "source.sql"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*(\"?)(JAVASCRIPT|JS)(\\2)(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "source.js",
+ "end": "^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "name": "meta.embedded.js",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*(\"?)(JSON)(\\2)(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "source.json",
+ "end": "^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "name": "meta.embedded.json",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "source.json"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*(\"?)(CSS)(\\2)(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "source.css",
+ "end": "^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "name": "meta.embedded.css",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "source.css"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*(\"?)(REGEXP?)(\\2)(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "string.regexp.heredoc.php",
+ "end": "^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "match": "(\\\\){1,2}[.$^\\[\\]{}]",
+ "name": "constant.character.escape.regex.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arbitrary-repitition.php"
+ },
+ "3": {
+ "name": "punctuation.definition.arbitrary-repitition.php"
+ }
+ },
+ "match": "({)\\d+(,\\d+)?(})",
+ "name": "string.regexp.arbitrary-repitition.php"
+ },
+ {
+ "begin": "\\[(?:\\^?\\])?",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.character-class.php"
+ }
+ },
+ "end": "\\]",
+ "name": "string.regexp.character-class.php",
+ "patterns": [
+ {
+ "match": "\\\\[\\\\'\\[\\]]",
+ "name": "constant.character.escape.php"
+ }
+ ]
+ },
+ {
+ "match": "[$^+*]",
+ "name": "keyword.operator.regexp.php"
+ },
+ {
+ "begin": "(?i)(?<=^|\\s)(#)\\s(?=[[a-z0-9_\\x{7f}-\\x{10ffff},. \\t?!-][^\\x{00}-\\x{7f}]]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "end": "$",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "name": "comment.line.number-sign.php"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*(\"?)(BLADE)(\\2)(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "text.html.php.blade",
+ "end": "^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "name": "meta.embedded.php.blade",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(<<<)\\s*(\"?)([a-z_\\x{7f}-\\x{10ffff}]+[a-z0-9_\\x{7f}-\\x{10ffff}]*)(\\2)(\\s*)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "3": {
+ "name": "keyword.operator.heredoc.php"
+ },
+ "5": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "end": "^\\s*(\\3)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.heredoc.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#interpolation"
+ }
+ ]
+ }
+ ]
+ },
+ "nowdoc_interior": {
+ "patterns": [
+ {
+ "begin": "(<<<)\\s*'(HTML)'(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "text.html",
+ "end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ },
+ "name": "meta.embedded.html",
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*'(XML)'(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "text.xml",
+ "end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ },
+ "name": "meta.embedded.xml",
+ "patterns": [
+ {
+ "include": "text.xml"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*'([DS]QL)'(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "source.sql",
+ "end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ },
+ "name": "meta.embedded.sql",
+ "patterns": [
+ {
+ "include": "source.sql"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*'(JAVASCRIPT|JS)'(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "source.js",
+ "end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ },
+ "name": "meta.embedded.js",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*'(JSON)'(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "source.json",
+ "end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ },
+ "name": "meta.embedded.json",
+ "patterns": [
+ {
+ "include": "source.json"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*'(CSS)'(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "source.css",
+ "end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ },
+ "name": "meta.embedded.css",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*'(REGEXP?)'(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "string.regexp.nowdoc.php",
+ "end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(\\\\){1,2}[.$^\\[\\]{}]",
+ "name": "constant.character.escape.regex.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arbitrary-repitition.php"
+ },
+ "3": {
+ "name": "punctuation.definition.arbitrary-repitition.php"
+ }
+ },
+ "match": "({)\\d+(,\\d+)?(})",
+ "name": "string.regexp.arbitrary-repitition.php"
+ },
+ {
+ "begin": "\\[(?:\\^?\\])?",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.character-class.php"
+ }
+ },
+ "end": "\\]",
+ "name": "string.regexp.character-class.php",
+ "patterns": [
+ {
+ "match": "\\\\[\\\\'\\[\\]]",
+ "name": "constant.character.escape.php"
+ }
+ ]
+ },
+ {
+ "match": "[$^+*]",
+ "name": "keyword.operator.regexp.php"
+ },
+ {
+ "begin": "(?i)(?<=^|\\s)(#)\\s(?=[[a-z0-9_\\x{7f}-\\x{10ffff},. \\t?!-][^\\x{00}-\\x{7f}]]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "end": "$",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.php"
+ }
+ },
+ "name": "comment.line.number-sign.php"
+ }
+ ]
+ },
+ {
+ "begin": "(<<<)\\s*'(BLADE)'(\\s*)$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.php"
+ },
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "contentName": "text.html.php.blade",
+ "end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.php"
+ },
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ },
+ "name": "meta.embedded.php.blade"
+ },
+ {
+ "begin": "(?i)(<<<)\\s*'([a-z_\\x{7f}-\\x{10ffff}]+[a-z0-9_\\x{7f}-\\x{10ffff}]*)'(\\s*)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.php"
+ },
+ "2": {
+ "name": "keyword.operator.nowdoc.php"
+ },
+ "3": {
+ "name": "invalid.illegal.trailing-whitespace.php"
+ }
+ },
+ "end": "^\\s*(\\2)(?![A-Za-z0-9_\\x{7f}-\\x{10ffff}])",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.nowdoc.php"
+ }
+ }
+ }
+ ]
+ },
+ "instantiation": {
+ "begin": "(?i)(new)\\s+(?!class\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.new.php"
+ }
+ },
+ "end": "(?i)(?=[^a-z0-9_\\x{7f}-\\x{10ffff}\\\\])",
+ "patterns": [
+ {
+ "match": "(?i)(parent|static|self)(?![a-z0-9_\\x{7f}-\\x{10ffff}])",
+ "name": "storage.type.php"
+ },
+ {
+ "include": "#class-name"
+ },
+ {
+ "include": "#variable-name"
+ }
+ ]
+ },
+ "interpolation": {
+ "patterns": [
+ {
+ "match": "\\\\[0-7]{1,3}",
+ "name": "constant.character.escape.octal.php"
+ },
+ {
+ "match": "\\\\x[0-9A-Fa-f]{1,2}",
+ "name": "constant.character.escape.hex.php"
+ },
+ {
+ "match": "\\\\u{[0-9A-Fa-f]+}",
+ "name": "constant.character.escape.unicode.php"
+ },
+ {
+ "match": "\\\\[nrtvef$\\\\]",
+ "name": "constant.character.escape.php"
+ },
+ {
+ "begin": "{(?=\\$.*?})",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "#variable-name"
+ }
+ ]
+ },
+ "interpolation_double_quoted": {
+ "patterns": [
+ {
+ "match": "\\\\\"",
+ "name": "constant.character.escape.php"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ "invoke-call": {
+ "captures": {
+ "1": {
+ "name": "variable.other.php"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(?i)((\\$+)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)(?=\\s*\\()",
+ "name": "meta.function-call.invoke.php"
+ },
+ "namespace": {
+ "begin": "(?i)(?:(namespace)|[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)?(\\\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.language.namespace.php"
+ },
+ "2": {
+ "name": "punctuation.separator.inheritance.php"
+ }
+ },
+ "end": "(?i)(?![a-z0-9_\\x{7f}-\\x{10ffff}]*\\\\)",
+ "name": "support.other.namespace.php",
+ "patterns": [
+ {
+ "match": "\\\\",
+ "name": "punctuation.separator.inheritance.php"
+ }
+ ]
+ },
+ "numbers": {
+ "patterns": [
+ {
+ "match": "0[xX][0-9a-fA-F]+(?:_[0-9a-fA-F]+)*",
+ "name": "constant.numeric.hex.php"
+ },
+ {
+ "match": "0[bB][01]+(?:_[01]+)*",
+ "name": "constant.numeric.binary.php"
+ },
+ {
+ "match": "0[oO][0-7]+(?:_[0-7]+)*",
+ "name": "constant.numeric.octal.php"
+ },
+ {
+ "match": "0(?:_?[0-7]+)+",
+ "name": "constant.numeric.octal.php"
+ },
+ {
+ "match": "(?x)\n(?:\n (?:[0-9]+(?:_[0-9]+)*)?(\\.)[0-9]+(?:_[0-9]+)*(?:[eE][+-]?[0-9]+(?:_[0-9]+)*)?| # .3\n [0-9]+(?:_[0-9]+)*(\\.)(?:[0-9]+(?:_[0-9]+)*)?(?:[eE][+-]?[0-9]+(?:_[0-9]+)*)?| # 3.\n [0-9]+(?:_[0-9]+)*[eE][+-]?[0-9]+(?:_[0-9]+)* # 2e-3\n)",
+ "name": "constant.numeric.decimal.php",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.decimal.period.php"
+ },
+ "2": {
+ "name": "punctuation.separator.decimal.period.php"
+ }
+ }
+ },
+ {
+ "match": "0|[1-9](?:_?[0-9]+)*",
+ "name": "constant.numeric.decimal.php"
+ }
+ ]
+ },
+ "object": {
+ "patterns": [
+ {
+ "begin": "(\\??->)\\s*(\\$?{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(?i)(\\??->)\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "entity.name.function.php"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
+ }
+ },
+ "name": "meta.method-call.php",
+ "patterns": [
+ {
+ "include": "#named-arguments"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "variable.other.property.php"
+ },
+ "3": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(?i)(\\??->)\\s*((\\$+)?[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)?"
+ }
+ ]
+ },
+ "php-types": {
+ "patterns": [
+ {
+ "match": "\\?",
+ "name": "keyword.operator.nullable-type.php"
+ },
+ {
+ "match": "[|&]",
+ "name": "punctuation.separator.delimiter.php"
+ },
+ {
+ "match": "(?i)\\b(null|int|float|bool|string|array|object|callable|iterable|true|false|mixed|void)\\b",
+ "name": "keyword.other.type.php"
+ },
+ {
+ "match": "(?i)\\b(parent|self)\\b",
+ "name": "storage.type.php"
+ },
+ {
+ "match": "\\(",
+ "name": "punctuation.definition.type.begin.bracket.round.php"
+ },
+ {
+ "match": "\\)",
+ "name": "punctuation.definition.type.end.bracket.round.php"
+ },
+ {
+ "include": "#class-name"
+ }
+ ]
+ },
+ "parameter-default-types": {
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#string-backtick"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "match": "=>",
+ "name": "keyword.operator.key.php"
+ },
+ {
+ "match": "=",
+ "name": "keyword.operator.assignment.php"
+ },
+ {
+ "match": "&(?=\\s*\\$)",
+ "name": "storage.modifier.reference.php"
+ },
+ {
+ "begin": "(array)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.construct.php"
+ },
+ "2": {
+ "name": "punctuation.definition.array.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.end.bracket.round.php"
+ }
+ },
+ "name": "meta.array.php",
+ "patterns": [
+ {
+ "include": "#parameter-default-types"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.php"
+ }
+ },
+ "end": "\\]|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "#instantiation"
+ },
+ {
+ "begin": "(?xi)\n(?=[a-z0-9_\\x{7f}-\\x{10ffff}\\\\]+\n (::)\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)?\n)",
+ "end": "(?i)(::)\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)?",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "constant.other.class.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#class-name"
+ }
+ ]
+ },
+ {
+ "include": "#constants"
+ }
+ ]
+ },
+ "php_doc": {
+ "patterns": [
+ {
+ "match": "^(?!\\s*\\*).*?(?:(?=\\*\\/)|$\\n?)",
+ "name": "invalid.illegal.missing-asterisk.phpdoc.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.phpdoc.php"
+ },
+ "3": {
+ "name": "storage.modifier.php"
+ },
+ "4": {
+ "name": "invalid.illegal.wrong-access-type.phpdoc.php"
+ }
+ },
+ "match": "^\\s*\\*\\s*(@access)\\s+((public|private|protected)|(.+))\\s*$"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.phpdoc.php"
+ },
+ "2": {
+ "name": "markup.underline.link.php"
+ }
+ },
+ "match": "(@xlink)\\s+(.+)\\s*$"
+ },
+ {
+ "begin": "(@(?:global|param|property(-(read|write))?|return|throws|var))\\s+(?=[?A-Za-z_\\x{7f}-\\x{10ffff}\\\\]|\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.phpdoc.php"
+ }
+ },
+ "end": "(?=\\s|\\*/)",
+ "contentName": "meta.other.type.phpdoc.php",
+ "patterns": [
+ {
+ "include": "#php_doc_types_array_multiple"
+ },
+ {
+ "include": "#php_doc_types_array_single"
+ },
+ {
+ "include": "#php_doc_types"
+ }
+ ]
+ },
+ {
+ "match": "(?x)\n@\n(\n api|abstract|author|category|copyright|example|global|inherit[Dd]oc|internal|\n license|link|method|property(-(read|write))?|package|param|return|see|since|source|\n static|subpackage|throws|todo|var|version|uses|deprecated|final|ignore\n)\\b",
+ "name": "keyword.other.phpdoc.php"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.phpdoc.php"
+ }
+ },
+ "match": "{(@(link|inherit[Dd]oc)).+?}",
+ "name": "meta.tag.inline.phpdoc.php"
+ }
+ ]
+ },
+ "php_doc_types": {
+ "match": "(?i)\\??[a-z_\\x{7f}-\\x{10ffff}\\\\][a-z0-9_\\x{7f}-\\x{10ffff}\\\\]*([|&]\\??[a-z_\\x{7f}-\\x{10ffff}\\\\][a-z0-9_\\x{7f}-\\x{10ffff}\\\\]*)*",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "\\?",
+ "name": "keyword.operator.nullable-type.php"
+ },
+ {
+ "match": "(?x)\\b\n(string|integer|int|boolean|bool|float|double|object|mixed\n|array|resource|void|null|callback|false|true|self|static)\\b",
+ "name": "keyword.other.type.php"
+ },
+ {
+ "include": "#class-name"
+ },
+ {
+ "match": "[|&]",
+ "name": "punctuation.separator.delimiter.php"
+ },
+ {
+ "match": "\\(",
+ "name": "punctuation.definition.type.begin.bracket.round.php"
+ },
+ {
+ "match": "\\)",
+ "name": "punctuation.definition.type.end.bracket.round.php"
+ }
+ ]
+ }
+ }
+ },
+ "php_doc_types_array_multiple": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.type.begin.bracket.round.phpdoc.php"
+ }
+ },
+ "end": "(\\))(\\[\\])|(?=\\*/)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.type.end.bracket.round.phpdoc.php"
+ },
+ "2": {
+ "name": "keyword.other.array.phpdoc.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#php_doc_types_array_multiple"
+ },
+ {
+ "include": "#php_doc_types_array_single"
+ },
+ {
+ "include": "#php_doc_types"
+ },
+ {
+ "match": "[|&]",
+ "name": "punctuation.separator.delimiter.php"
+ }
+ ]
+ },
+ "php_doc_types_array_single": {
+ "match": "(?i)([a-z_\\x{7f}-\\x{10ffff}\\\\][a-z0-9_\\x{7f}-\\x{10ffff}\\\\]*)(\\[\\])",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#php_doc_types"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.other.array.phpdoc.php"
+ }
+ }
+ },
+ "regex-double-quoted": {
+ "begin": "\"/(?=(\\\\.|[^\"/])++/[imsxeADSUXu]*\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "end": "(/)([imsxeADSUXu]*)(\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.regexp.double-quoted.php",
+ "patterns": [
+ {
+ "match": "(\\\\){1,2}[.$^\\[\\]{}]",
+ "name": "constant.character.escape.regex.php"
+ },
+ {
+ "include": "#interpolation_double_quoted"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arbitrary-repetition.php"
+ },
+ "3": {
+ "name": "punctuation.definition.arbitrary-repetition.php"
+ }
+ },
+ "match": "({)\\d+(,\\d+)?(})",
+ "name": "string.regexp.arbitrary-repetition.php"
+ },
+ {
+ "begin": "\\[(?:\\^?\\])?",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.character-class.php"
+ }
+ },
+ "end": "\\]",
+ "name": "string.regexp.character-class.php",
+ "patterns": [
+ {
+ "include": "#interpolation_double_quoted"
+ }
+ ]
+ },
+ {
+ "match": "[$^+*]",
+ "name": "keyword.operator.regexp.php"
+ }
+ ]
+ },
+ "regex-single-quoted": {
+ "begin": "'/(?=(\\\\(?:\\\\(?:\\\\[\\\\']?|[^'])|.)|[^'/])++/[imsxeADSUXu]*')",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "end": "(/)([imsxeADSUXu]*)(')",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.regexp.single-quoted.php",
+ "patterns": [
+ {
+ "include": "#single_quote_regex_escape"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arbitrary-repetition.php"
+ },
+ "3": {
+ "name": "punctuation.definition.arbitrary-repetition.php"
+ }
+ },
+ "match": "({)\\d+(,\\d+)?(})",
+ "name": "string.regexp.arbitrary-repetition.php"
+ },
+ {
+ "begin": "\\[(?:\\^?\\])?",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.character-class.php"
+ }
+ },
+ "end": "\\]",
+ "name": "string.regexp.character-class.php"
+ },
+ {
+ "match": "[$^+*]",
+ "name": "keyword.operator.regexp.php"
+ }
+ ]
+ },
+ "scope-resolution": {
+ "patterns": [
+ {
+ "match": "([A-Za-z_\\x{7f}-\\x{10ffff}\\\\][A-Za-z0-9_\\x{7f}-\\x{10ffff}\\\\]*)(?=\\s*::)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "\\b(self|static|parent)\\b",
+ "name": "storage.type.php"
+ },
+ {
+ "include": "#class-name"
+ },
+ {
+ "include": "#variable-name"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "(?i)(::)\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "entity.name.function.php"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.bracket.round.php"
+ }
+ },
+ "name": "meta.method-call.static.php",
+ "patterns": [
+ {
+ "include": "#named-arguments"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "match": "(?i)(::)\\s*(class)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "keyword.other.class.php"
+ }
+ }
+ },
+ {
+ "match": "(?xi)\n(::)\\s*\n(?:\n ((\\$+)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) # Variable\n |\n ([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*) # Constant\n)?",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.class.php"
+ },
+ "2": {
+ "name": "variable.other.class.php"
+ },
+ "3": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "4": {
+ "name": "constant.other.class.php"
+ }
+ }
+ }
+ ]
+ },
+ "single_quote_regex_escape": {
+ "match": "\\\\(?:\\\\(?:\\\\[\\\\']?|[^'])|.)",
+ "name": "constant.character.escape.php"
+ },
+ "sql-string-double-quoted": {
+ "begin": "\"\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND|WITH)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "contentName": "source.sql.embedded.php",
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.quoted.double.sql.php",
+ "patterns": [
+ {
+ "match": "(#)(\\\\\"|[^\"])*(?=\"|$)",
+ "name": "comment.line.number-sign.sql",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.sql"
+ }
+ }
+ },
+ {
+ "match": "(--)(\\\\\"|[^\"])*(?=\"|$)",
+ "name": "comment.line.double-dash.sql",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.sql"
+ }
+ }
+ },
+ {
+ "match": "\\\\[\\\\\"`']",
+ "name": "constant.character.escape.php"
+ },
+ {
+ "match": "'(?=((\\\\')|[^'\"])*(\"|$))",
+ "name": "string.quoted.single.unclosed.sql"
+ },
+ {
+ "match": "`(?=((\\\\`)|[^`\"])*(\"|$))",
+ "name": "string.quoted.other.backtick.unclosed.sql"
+ },
+ {
+ "begin": "'",
+ "end": "'",
+ "name": "string.quoted.single.sql",
+ "patterns": [
+ {
+ "include": "#interpolation_double_quoted"
+ }
+ ]
+ },
+ {
+ "begin": "`",
+ "end": "`",
+ "name": "string.quoted.other.backtick.sql",
+ "patterns": [
+ {
+ "include": "#interpolation_double_quoted"
+ }
+ ]
+ },
+ {
+ "include": "#interpolation_double_quoted"
+ },
+ {
+ "include": "source.sql"
+ }
+ ]
+ },
+ "sql-string-single-quoted": {
+ "begin": "'\\s*(?=(SELECT|INSERT|UPDATE|DELETE|CREATE|REPLACE|ALTER|AND|WITH)\\b)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "contentName": "source.sql.embedded.php",
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.quoted.single.sql.php",
+ "patterns": [
+ {
+ "match": "(#)(\\\\'|[^'])*(?='|$)",
+ "name": "comment.line.number-sign.sql",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.sql"
+ }
+ }
+ },
+ {
+ "match": "(--)(\\\\'|[^'])*(?='|$)",
+ "name": "comment.line.double-dash.sql",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.sql"
+ }
+ }
+ },
+ {
+ "match": "\\\\[\\\\'`\"]",
+ "name": "constant.character.escape.php"
+ },
+ {
+ "match": "`(?=((\\\\`)|[^`'])*('|$))",
+ "name": "string.quoted.other.backtick.unclosed.sql"
+ },
+ {
+ "match": "\"(?=((\\\\\")|[^\"'])*('|$))",
+ "name": "string.quoted.double.unclosed.sql"
+ },
+ {
+ "include": "source.sql"
+ }
+ ]
+ },
+ "string-backtick": {
+ "begin": "`",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.interpolated.php",
+ "patterns": [
+ {
+ "match": "\\\\`",
+ "name": "constant.character.escape.php"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ "string-double-quoted": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.quoted.double.php",
+ "patterns": [
+ {
+ "include": "#interpolation_double_quoted"
+ }
+ ]
+ },
+ "string-single-quoted": {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.php"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.php"
+ }
+ },
+ "name": "string.quoted.single.php",
+ "patterns": [
+ {
+ "match": "\\\\[\\\\']",
+ "name": "constant.character.escape.php"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "include": "#regex-double-quoted"
+ },
+ {
+ "include": "#sql-string-double-quoted"
+ },
+ {
+ "include": "#string-double-quoted"
+ },
+ {
+ "include": "#regex-single-quoted"
+ },
+ {
+ "include": "#sql-string-single-quoted"
+ },
+ {
+ "include": "#string-single-quoted"
+ }
+ ]
+ },
+ "support": {
+ "patterns": [
+ {
+ "match": "(?xi)\n\\b\napc_(\n store|sma_info|compile_file|clear_cache|cas|cache_info|inc|dec|define_constants|delete(_file)?|\n exists|fetch|load_constants|add|bin_(dump|load)(file)?\n)\\b",
+ "name": "support.function.apc.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n shuffle|sizeof|sort|next|nat(case)?sort|count|compact|current|in_array|usort|uksort|uasort|\n pos|prev|end|each|extract|ksort|key(_exists)?|krsort|list|asort|arsort|rsort|reset|range|\n array(_(shift|sum|splice|search|slice|chunk|change_key_case|count_values|column|combine|\n (diff|intersect)(_(u)?(key|assoc))?|u(diff|intersect)(_(u)?assoc)?|unshift|unique|\n pop|push|pad|product|values|keys|key_exists|filter|fill(_keys)?|flip|walk(_recursive)?|\n reduce|replace(_recursive)?|reverse|rand|multisort|merge(_recursive)?|map)?)\n)\\b",
+ "name": "support.function.array.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n show_source|sys_getloadavg|sleep|highlight_(file|string)|constant|connection_(aborted|status)|\n time_(nanosleep|sleep_until)|ignore_user_abort|die|define(d)?|usleep|uniqid|unpack|__halt_compiler|\n php_(check_syntax|strip_whitespace)|pack|eval|exit|get_browser\n)\\b",
+ "name": "support.function.basic_functions.php"
+ },
+ {
+ "match": "(?i)\\bbc(scale|sub|sqrt|comp|div|pow(mod)?|add|mod|mul)\\b",
+ "name": "support.function.bcmath.php"
+ },
+ {
+ "match": "(?i)\\bblenc_encrypt\\b",
+ "name": "support.function.blenc.php"
+ },
+ {
+ "match": "(?i)\\bbz(compress|close|open|decompress|errstr|errno|error|flush|write|read)\\b",
+ "name": "support.function.bz2.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n (French|Gregorian|Jewish|Julian)ToJD|cal_(to_jd|info|days_in_month|from_jd)|unixtojd|\n jdto(unix|jewish)|easter_(date|days)|JD(MonthName|To(Gregorian|Julian|French)|DayOfWeek)\n)\\b",
+ "name": "support.function.calendar.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n class_alias|all_user_method(_array)?|is_(a|subclass_of)|__autoload|(class|interface|method|property|trait)_exists|\n get_(class(_(vars|methods))?|(called|parent)_class|object_vars|declared_(classes|interfaces|traits))\n)\\b",
+ "name": "support.function.classobj.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n com_(create_guid|print_typeinfo|event_sink|load_typelib|get_active_object|message_pump)|\n variant_(sub|set(_type)?|not|neg|cast|cat|cmp|int|idiv|imp|or|div|date_(from|to)_timestamp|\n pow|eqv|fix|and|add|abs|round|get_type|xor|mod|mul)\n)\\b",
+ "name": "support.function.com.php"
+ },
+ {
+ "match": "(?i)\\b(isset|unset|eval|empty|list)\\b",
+ "name": "support.function.construct.php"
+ },
+ {
+ "match": "(?i)\\b(print|echo)\\b",
+ "name": "support.function.construct.output.php"
+ },
+ {
+ "match": "(?i)\\bctype_(space|cntrl|digit|upper|punct|print|lower|alnum|alpha|graph|xdigit)\\b",
+ "name": "support.function.ctype.php"
+ },
+ {
+ "match": "(?xi)\\b\ncurl_(\n share_(close|init|setopt)|strerror|setopt(_array)?|copy_handle|close|init|unescape|pause|escape|\n errno|error|exec|version|file_create|reset|getinfo|\n multi_(strerror|setopt|select|close|init|info_read|(add|remove)_handle|getcontent|exec)\n)\\b",
+ "name": "support.function.curl.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n strtotime|str[fp]time|checkdate|time|timezone_name_(from_abbr|get)|idate|\n timezone_((location|offset|transitions|version)_get|(abbreviations|identifiers)_list|open)|\n date(_(sun(rise|set)|sun_info|sub|create(_(immutable_)?from_format)?|timestamp_(get|set)|timezone_(get|set)|time_set|\n isodate_set|interval_(create_from_date_string|format)|offset_get|diff|default_timezone_(get|set)|date_set|\n parse(_from_format)?|format|add|get_last_errors|modify))?|\n localtime|get(date|timeofday)|gm(strftime|date|mktime)|microtime|mktime\n)\\b",
+ "name": "support.function.datetime.php"
+ },
+ {
+ "match": "(?i)\\bdba_(sync|handlers|nextkey|close|insert|optimize|open|delete|popen|exists|key_split|firstkey|fetch|list|replace)\\b",
+ "name": "support.function.dba.php"
+ },
+ {
+ "match": "(?i)\\bdbx_(sort|connect|compare|close|escape_string|error|query|fetch_row)\\b",
+ "name": "support.function.dbx.php"
+ },
+ {
+ "match": "(?i)\\b(scandir|chdir|chroot|closedir|opendir|dir|rewinddir|readdir|getcwd)\\b",
+ "name": "support.function.dir.php"
+ },
+ {
+ "match": "(?xi)\\b\neio_(\n sync(fs)?|sync_file_range|symlink|stat(vfs)?|sendfile|set_min_parallel|set_max_(idle|poll_(reqs|time)|parallel)|\n seek|n(threads|op|pending|reqs|ready)|chown|chmod|custom|close|cancel|truncate|init|open|dup2|unlink|utime|poll|\n event_loop|f(sync|stat(vfs)?|chown|chmod|truncate|datasync|utime|allocate)|write|lstat|link|rename|realpath|\n read(ahead|dir|link)?|rmdir|get_(event_stream|last_error)|grp(_(add|cancel|limit))?|mknod|mkdir|busy\n)\\b",
+ "name": "support.function.eio.php"
+ },
+ {
+ "match": "(?xi)\\b\nenchant_(\n dict_(store_replacement|suggest|check|is_in_session|describe|quick_check|add_to_(personal|session)|get_error)|\n broker_(set_ordering|init|dict_exists|describe|free(_dict)?|list_dicts|request_(pwl_)?dict|get_error)\n)\\b",
+ "name": "support.function.enchant.php"
+ },
+ {
+ "match": "(?i)\\b(split(i)?|sql_regcase|ereg(i)?(_replace)?)\\b",
+ "name": "support.function.ereg.php"
+ },
+ {
+ "match": "(?i)\\b((restore|set)_(error_handler|exception_handler)|trigger_error|debug_(print_)?backtrace|user_error|error_(log|reporting|get_last))\\b",
+ "name": "support.function.errorfunc.php"
+ },
+ {
+ "match": "(?i)\\b(shell_exec|system|passthru|proc_(nice|close|terminate|open|get_status)|escapeshell(arg|cmd)|exec)\\b",
+ "name": "support.function.exec.php"
+ },
+ {
+ "match": "(?i)\\b(exif_(thumbnail|tagname|imagetype|read_data)|read_exif_data)\\b",
+ "name": "support.function.exif.php"
+ },
+ {
+ "match": "(?xi)\\b\nfann_(\n (duplicate|length|merge|shuffle|subset)_train_data|scale_(train(_data)?|(input|output)(_train_data)?)|\n set_(scaling_params|sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|\n cascade_(num_candidate_groups|candidate_(change_fraction|limit|stagnation_epochs)|\n output_(change_fraction|stagnation_epochs)|weight_multiplier|activation_(functions|steepnesses)|\n (max|min)_(cand|out)_epochs)|\n callback|training_algorithm|train_(error|stop)_function|(input|output)_scaling_params|error_log|\n quickprop_(decay|mu)|weight(_array)?|learning_(momentum|rate)|bit_fail_limit|\n activation_(function|steepness)(_(hidden|layer|output))?|\n rprop_((decrease|increase)_factor|delta_(max|min|zero)))|\n save(_train)?|num_(input|output)_train_data|copy|clear_scaling_params|cascadetrain_on_(file|data)|\n create_((sparse|shortcut|standard)(_array)?|train(_from_callback)?|from_file)|\n test(_data)?|train(_(on_(file|data)|epoch))?|init_weights|descale_(input|output|train)|destroy(_train)?|\n print_error|run|reset_(MSE|err(no|str))|read_train_from_file|randomize_weights|\n get_(sarprop_(step_error_(shift|threshold_factor)|temperature|weight_decay_shift)|num_(input|output|layers)|\n network_type|MSE|connection_(array|rate)|bias_array|bit_fail(_limit)?|\n cascade_(num_(candidates|candidate_groups)|(candidate|output)_(change_fraction|limit|stagnation_epochs)|\n weight_multiplier|activation_(functions|steepnesses)(_count)?|(max|min)_(cand|out)_epochs)|\n total_(connections|neurons)|training_algorithm|train_(error|stop)_function|err(no|str)|\n quickprop_(decay|mu)|learning_(momentum|rate)|layer_array|activation_(function|steepness)|\n rprop_((decrease|increase)_factor|delta_(max|min|zero)))\n)\\b",
+ "name": "support.function.fann.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n symlink|stat|set_file_buffer|chown|chgrp|chmod|copy|clearstatcache|touch|tempnam|tmpfile|\n is_(dir|(uploaded_)?file|executable|link|readable|writ(e)?able)|disk_(free|total)_space|diskfreespace|\n dirname|delete|unlink|umask|pclose|popen|pathinfo|parse_ini_(file|string)|fscanf|fstat|fseek|fnmatch|\n fclose|ftell|ftruncate|file(size|[acm]time|type|inode|owner|perms|group)?|file_(exists|(get|put)_contents)|\n f(open|puts|putcsv|passthru|eof|flush|write|lock|read|gets(s)?|getc(sv)?)|lstat|lchown|lchgrp|link(info)?|\n rename|rewind|read(file|link)|realpath(_cache_(get|size))?|rmdir|glob|move_uploaded_file|mkdir|basename\n)\\b",
+ "name": "support.function.file.php"
+ },
+ {
+ "match": "(?i)\\b(finfo_(set_flags|close|open|file|buffer)|mime_content_type)\\b",
+ "name": "support.function.fileinfo.php"
+ },
+ {
+ "match": "(?i)\\bfilter_(has_var|input(_array)?|id|var(_array)?|list)\\b",
+ "name": "support.function.filter.php"
+ },
+ {
+ "match": "(?i)\\bfastcgi_finish_request\\b",
+ "name": "support.function.fpm.php"
+ },
+ {
+ "match": "(?i)\\b(call_user_(func|method)(_array)?|create_function|unregister_tick_function|forward_static_call(_array)?|function_exists|func_(num_args|get_arg(s)?)|register_(shutdown|tick)_function|get_defined_functions)\\b",
+ "name": "support.function.funchand.php"
+ },
+ {
+ "match": "(?i)\\b((n)?gettext|textdomain|d((n)?gettext|c(n)?gettext)|bind(textdomain|_textdomain_codeset))\\b",
+ "name": "support.function.gettext.php"
+ },
+ {
+ "match": "(?xi)\\b\ngmp_(\n scan[01]|strval|sign|sub|setbit|sqrt(rem)?|hamdist|neg|nextprime|com|clrbit|cmp|testbit|\n intval|init|invert|import|or|div(exact)?|div_(q|qr|r)|jacobi|popcount|pow(m)?|perfect_square|\n prob_prime|export|fact|legendre|and|add|abs|root(rem)?|random(_(bits|range))?|gcd(ext)?|xor|mod|mul\n)\\b",
+ "name": "support.function.gmp.php"
+ },
+ {
+ "match": "(?i)\\bhash(_(hmac(_file)?|copy|init|update(_(file|stream))?|pbkdf2|equals|file|final|algos))?\\b",
+ "name": "support.function.hash.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n http_(support|send_(status|stream|content_(disposition|type)|data|file|last_modified)|head|\n negotiate_(charset|content_type|language)|chunked_decode|cache_(etag|last_modified)|throttle|\n inflate|deflate|date|post_(data|fields)|put_(data|file|stream)|persistent_handles_(count|clean|ident)|\n parse_(cookie|headers|message|params)|redirect|request(_(method_(exists|name|(un)?register)|body_encode))?|\n get(_request_(headers|body(_stream)?))?|match_(etag|modified|request_header)|build_(cookie|str|url))|\n ob_(etag|deflate|inflate)handler\n)\\b",
+ "name": "support.function.http.php"
+ },
+ {
+ "match": "(?i)\\b(iconv(_(str(pos|len|rpos)|substr|(get|set)_encoding|mime_(decode(_headers)?|encode)))?|ob_iconv_handler)\\b",
+ "name": "support.function.iconv.php"
+ },
+ {
+ "match": "(?i)\\biis_((start|stop)_(service|server)|set_(script_map|server_rights|dir_security|app_settings)|(add|remove)_server|get_(script_map|service_state|server_(rights|by_(comment|path))|dir_security))\\b",
+ "name": "support.function.iisfunc.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n iptc(embed|parse)|(jpeg|png)2wbmp|gd_info|getimagesize(fromstring)?|\n image(s[xy]|scale|(char|string)(up)?|set(style|thickness|tile|interpolation|pixel|brush)|savealpha|\n convolution|copy(resampled|resized|merge(gray)?)?|colors(forindex|total)|\n color(set|closest(alpha|hwb)?|transparent|deallocate|(allocate|exact|resolve)(alpha)?|at|match)|\n crop(auto)?|create(truecolor|from(string|jpeg|png|wbmp|webp|gif|gd(2(part)?)?|xpm|xbm))?|\n types|ttf(bbox|text)|truecolortopalette|istruecolor|interlace|2wbmp|destroy|dashedline|jpeg|\n _type_to_(extension|mime_type)|ps(slantfont|text|(encode|extend|free|load)font|bbox)|png|polygon|\n palette(copy|totruecolor)|ellipse|ft(text|bbox)|filter|fill|filltoborder|\n filled(arc|ellipse|polygon|rectangle)|font(height|width)|flip|webp|wbmp|line|loadfont|layereffect|\n antialias|affine(matrix(concat|get))?|alphablending|arc|rotate|rectangle|gif|gd(2)?|gammacorrect|\n grab(screen|window)|xbm)\n)\\b",
+ "name": "support.function.image.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n sys_get_temp_dir|set_(time_limit|include_path|magic_quotes_runtime)|cli_(get|set)_process_title|\n ini_(alter|get(_all)?|restore|set)|zend_(thread_id|version|logo_guid)|dl|php(credits|info|version)|\n php_(sapi_name|ini_(scanned_files|loaded_file)|uname|logo_guid)|putenv|extension_loaded|version_compare|\n assert(_options)?|restore_include_path|gc_(collect_cycles|disable|enable(d)?)|getopt|\n get_(cfg_var|current_user|defined_constants|extension_funcs|include_path|included_files|loaded_extensions|\n magic_quotes_(gpc|runtime)|required_files|resources)|\n get(env|lastmod|rusage|my(inode|[gup]id))|\n memory_get_(peak_)?usage|main|magic_quotes_runtime\n)\\b",
+ "name": "support.function.info.php"
+ },
+ {
+ "match": "(?xi)\\b\nibase_(\n set_event_handler|service_(attach|detach)|server_info|num_(fields|params)|name_result|connect|\n commit(_ret)?|close|trans|delete_user|drop_db|db_info|pconnect|param_info|prepare|err(code|msg)|\n execute|query|field_info|fetch_(assoc|object|row)|free_(event_handler|query|result)|wait_event|\n add_user|affected_rows|rollback(_ret)?|restore|gen_id|modify_user|maintain_db|backup|\n blob_(cancel|close|create|import|info|open|echo|add|get)\n)\\b",
+ "name": "support.function.interbase.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n normalizer_(normalize|is_normalized)|idn_to_(unicode|utf8|ascii)|\n numfmt_(set_(symbol|(text_)?attribute|pattern)|create|(parse|format)(_currency)?|\n get_(symbol|(text_)?attribute|pattern|error_(code|message)|locale))|\n collator_(sort(_with_sort_keys)?|set_(attribute|strength)|compare|create|asort|\n get_(strength|sort_key|error_(code|message)|locale|attribute))|\n transliterator_(create(_(inverse|from_rules))?|transliterate|list_ids|get_error_(code|message))|\n intl(cal|tz)_get_error_(code|message)|intl_(is_failure|error_name|get_error_(code|message))|\n datefmt_(set_(calendar|lenient|pattern|timezone(_id)?)|create|is_lenient|parse|format(_object)?|localtime|\n get_(calendar(_object)?|time(type|zone(_id)?)|datetype|pattern|error_(code|message)|locale))|\n locale_(set_default|compose|canonicalize|parse|filter_matches|lookup|accept_from_http|\n get_(script|display_(script|name|variant|language|region)|default|primary_language|keywords|all_variants|region))|\n resourcebundle_(create|count|locales|get(_(error_(code|message)))?)|\n grapheme_(str(i?str|r?i?pos|len)|substr|extract)|\n msgfmt_(set_pattern|create|(format|parse)(_message)?|get_(pattern|error_(code|message)|locale))\n)\\b",
+ "name": "support.function.intl.php"
+ },
+ {
+ "match": "(?i)\\bjson_(decode|encode|last_error(_msg)?)\\b",
+ "name": "support.function.json.php"
+ },
+ {
+ "match": "(?xi)\\b\nldap_(\n start|tls|sort|search|sasl_bind|set_(option|rebind_proc)|(first|next)_(attribute|entry|reference)|\n connect|control_paged_result(_response)?|count_entries|compare|close|t61_to_8859|8859_to_t61|\n dn2ufn|delete|unbind|parse_(reference|result)|escape|errno|err2str|error|explode_dn|bind|\n free_result|list|add|rename|read|get_(option|dn|entries|values(_len)?|attributes)|modify(_batch)?|\n mod_(add|del|replace)\n)\\b",
+ "name": "support.function.ldap.php"
+ },
+ {
+ "match": "(?i)\\blibxml_(set_(streams_context|external_entity_loader)|clear_errors|disable_entity_loader|use_internal_errors|get_(errors|last_error))\\b",
+ "name": "support.function.libxml.php"
+ },
+ {
+ "match": "(?i)\\b(ezmlm_hash|mail)\\b",
+ "name": "support.function.mail.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n (a)?(cos|sin|tan)(h)?|sqrt|srand|hypot|hexdec|ceil|is_(nan|(in)?finite)|octdec|dec(hex|oct|bin)|deg2rad|\n pi|pow|exp(m1)?|floor|fmod|lcg_value|log(1(p|0))?|atan2|abs|round|rand|rad2deg|getrandmax|\n mt_(srand|rand|getrandmax)|max|min|bindec|base_convert\n)\\b",
+ "name": "support.function.math.php"
+ },
+ {
+ "match": "(?xi)\\b\nmb_(\n str(cut|str|to(lower|upper)|istr|ipos|imwidth|pos|width|len|rchr|richr|ripos|rpos)|\n substitute_character|substr(_count)?|split|send_mail|http_(input|output)|check_encoding|\n convert_(case|encoding|kana|variables)|internal_encoding|output_handler|decode_(numericentity|mimeheader)|\n detect_(encoding|order)|parse_str|preferred_mime_name|encoding_aliases|encode_(numericentity|mimeheader)|\n ereg(i(_replace)?)?|ereg_(search(_(get(pos|regs)|init|regs|(set)?pos))?|replace(_callback)?|match)|\n list_encodings|language|regex_(set_options|encoding)|get_info\n)\\b",
+ "name": "support.function.mbstring.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n mcrypt_(\n cfb|create_iv|cbc|ofb|decrypt|encrypt|ecb|list_(algorithms|modes)|generic(_((de)?init|end))?|\n enc_(self_test|is_block_(algorithm|algorithm_mode|mode)|\n get_(supported_key_sizes|(block|iv|key)_size|(algorithms|modes)_name))|\n get_(cipher_name|(block|iv|key)_size)|\n module_(close|self_test|is_block_(algorithm|algorithm_mode|mode)|open|\n get_(supported_key_sizes|algo_(block|key)_size)))|\n mdecrypt_generic\n)\\b",
+ "name": "support.function.mcrypt.php"
+ },
+ {
+ "match": "(?i)\\bmemcache_debug\\b",
+ "name": "support.function.memcache.php"
+ },
+ {
+ "match": "(?i)\\bmhash(_(count|keygen_s2k|get_(hash_name|block_size)))?\\b",
+ "name": "support.function.mhash.php"
+ },
+ {
+ "match": "(?i)\\b(log_(cmd_(insert|delete|update)|killcursor|write_batch|reply|getmore)|bson_(decode|encode))\\b",
+ "name": "support.function.mongo.php"
+ },
+ {
+ "match": "(?xi)\\b\nmysql_(\n stat|set_charset|select_db|num_(fields|rows)|connect|client_encoding|close|create_db|escape_string|\n thread_id|tablename|insert_id|info|data_seek|drop_db|db_(name|query)|unbuffered_query|pconnect|ping|\n errno|error|query|field_(seek|name|type|table|flags|len)|fetch_(object|field|lengths|assoc|array|row)|\n free_result|list_(tables|dbs|processes|fields)|affected_rows|result|real_escape_string|\n get_(client|host|proto|server)_info\n)\\b",
+ "name": "support.function.mysql.php"
+ },
+ {
+ "match": "(?xi)\\b\nmysqli_(\n ssl_set|store_result|stat|send_(query|long_data)|set_(charset|opt|local_infile_(default|handler))|\n stmt_(store_result|send_long_data|next_result|close|init|data_seek|prepare|execute|fetch|free_result|\n attr_(get|set)|result_metadata|reset|get_(result|warnings)|more_results|bind_(param|result))|\n select_db|slave_query|savepoint|next_result|change_user|character_set_name|connect|commit|\n client_encoding|close|thread_safe|init|options|(enable|disable)_(reads_from_master|rpl_parse)|\n dump_debug_info|debug|data_seek|use_result|ping|poll|param_count|prepare|escape_string|execute|\n embedded_server_(start|end)|kill|query|field_seek|free_result|autocommit|rollback|report|refresh|\n fetch(_(object|fields|field(_direct)?|assoc|all|array|row))?|rpl_(parse_enabled|probe|query_type)|\n release_savepoint|reap_async_query|real_(connect|escape_string|query)|more_results|multi_query|\n get_(charset|connection_stats|client_(stats|info|version)|cache_stats|warnings|links_stats|metadata)|\n master_query|bind_(param|result)|begin_transaction\n)\\b",
+ "name": "support.function.mysqli.php"
+ },
+ {
+ "match": "(?i)\\bmysqlnd_memcache_(set|get_config)\\b",
+ "name": "support.function.mysqlnd-memcache.php"
+ },
+ {
+ "match": "(?i)\\bmysqlnd_ms_(set_(user_pick_server|qos)|dump_servers|query_is_select|fabric_select_(shard|global)|get_(stats|last_(used_connection|gtid))|xa_(commit|rollback|gc|begin)|match_wild)\\b",
+ "name": "support.function.mysqlnd-ms.php"
+ },
+ {
+ "match": "(?i)\\bmysqlnd_qc_(set_(storage_handler|cache_condition|is_select|user_handlers)|clear_cache|get_(normalized_query_trace_log|core_stats|cache_info|query_trace_log|available_handlers))\\b",
+ "name": "support.function.mysqlnd-qc.php"
+ },
+ {
+ "match": "(?i)\\bmysqlnd_uh_(set_(statement|connection)_proxy|convert_to_mysqlnd)\\b",
+ "name": "support.function.mysqlnd-uh.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n syslog|socket_(set_(blocking|timeout)|get_status)|set(raw)?cookie|http_response_code|openlog|\n headers_(list|sent)|header(_(register_callback|remove))?|checkdnsrr|closelog|inet_(ntop|pton)|ip2long|\n openlog|dns_(check_record|get_(record|mx))|define_syslog_variables|(p)?fsockopen|long2ip|\n get(servby(name|port)|host(name|by(name(l)?|addr))|protoby(name|number)|mxrr)\n)\\b",
+ "name": "support.function.network.php"
+ },
+ {
+ "match": "(?i)\\bnsapi_(virtual|response_headers|request_headers)\\b",
+ "name": "support.function.nsapi.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n oci(statementtype|setprefetch|serverversion|savelob(file)?|numcols|new(collection|cursor|descriptor)|nlogon|\n column(scale|size|name|type(raw)?|isnull|precision)|coll(size|trim|assign(elem)?|append|getelem|max)|commit|\n closelob|cancel|internaldebug|definebyname|plogon|parse|error|execute|fetch(statement|into)?|\n free(statement|collection|cursor|desc)|write(temporarylob|lobtofile)|loadlob|log(on|off)|rowcount|rollback|\n result|bindbyname)|\n oci_(statement_type|set_(client_(info|identifier)|prefetch|edition|action|module_name)|server_version|\n num_(fields|rows)|new_(connect|collection|cursor|descriptor)|connect|commit|client_version|close|cancel|\n internal_debug|define_by_name|pconnect|password_change|parse|error|execute|bind_(array_)?by_name|\n field_(scale|size|name|type(_raw)?|is_null|precision)|fetch(_(object|assoc|all|array|row))?|\n free_(statement|descriptor)|lob_(copy|is_equal)|rollback|result|get_implicit_resultset)\n)\\b",
+ "name": "support.function.oci8.php"
+ },
+ {
+ "match": "(?i)\\bopcache_(compile_file|invalidate|reset|get_(status|configuration))\\b",
+ "name": "support.function.opcache.php"
+ },
+ {
+ "match": "(?xi)\\b\nopenssl_(\n sign|spki_(new|export(_challenge)?|verify)|seal|csr_(sign|new|export(_to_file)?|get_(subject|public_key))|\n cipher_iv_length|open|dh_compute_key|digest|decrypt|public_(decrypt|encrypt)|encrypt|error_string|\n pkcs12_(export(_to_file)?|read)|pkcs7_(sign|decrypt|encrypt|verify)|verify|free_key|random_pseudo_bytes|\n pkey_(new|export(_to_file)?|free|get_(details|public|private))|private_(decrypt|encrypt)|pbkdf2|\n get_((cipher|md)_methods|cert_locations|(public|private)key)|\n x509_(check_private_key|checkpurpose|parse|export(_to_file)?|fingerprint|free|read)\n)\\b",
+ "name": "support.function.openssl.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n output_(add_rewrite_var|reset_rewrite_vars)|flush|\n ob_(start|clean|implicit_flush|end_(clean|flush)|flush|list_handlers|gzhandler|\n get_(status|contents|clean|flush|length|level))\n)\\b",
+ "name": "support.function.output.php"
+ },
+ {
+ "match": "(?i)\\bpassword_(hash|needs_rehash|verify|get_info)\\b",
+ "name": "support.function.password.php"
+ },
+ {
+ "match": "(?xi)\\b\npcntl_(\n strerror|signal(_dispatch)?|sig(timedwait|procmask|waitinfo)|setpriority|errno|exec|fork|\n w(stopsig|termsig|if(stopped|signaled|exited))|wait(pid)?|alarm|getpriority|get_last_error\n)\\b",
+ "name": "support.function.pcntl.php"
+ },
+ {
+ "match": "(?xi)\\b\npg_(\n socket|send_(prepare|execute|query(_params)?)|set_(client_encoding|error_verbosity)|select|host|\n num_(fields|rows)|consume_input|connection_(status|reset|busy)|connect(_poll)?|convert|copy_(from|to)|\n client_encoding|close|cancel_query|tty|transaction_status|trace|insert|options|delete|dbname|untrace|\n unescape_bytea|update|pconnect|ping|port|put_line|parameter_status|prepare|version|query(_params)?|\n escape_(string|identifier|literal|bytea)|end_copy|execute|flush|free_result|last_(notice|error|oid)|\n field_(size|num|name|type(_oid)?|table|is_null|prtlen)|affected_rows|result_(status|seek|error(_field)?)|\n fetch_(object|assoc|all(_columns)?|array|row|result)|get_(notify|pid|result)|meta_data|\n lo_(seek|close|create|tell|truncate|import|open|unlink|export|write|read(_all)?)|\n)\\b",
+ "name": "support.function.pgsql.php"
+ },
+ {
+ "match": "(?i)\\b(virtual|getallheaders|apache_((get|set)env|note|child_terminate|lookup_uri|response_headers|reset_timeout|request_headers|get_(version|modules)))\\b",
+ "name": "support.function.php_apache.php"
+ },
+ {
+ "match": "(?i)\\bdom_import_simplexml\\b",
+ "name": "support.function.php_dom.php"
+ },
+ {
+ "match": "(?xi)\\b\nftp_(\n ssl_connect|systype|site|size|set_option|nlist|nb_(continue|f?(put|get))|ch(dir|mod)|connect|cdup|close|\n delete|put|pwd|pasv|exec|quit|f(put|get)|login|alloc|rename|raw(list)?|rmdir|get(_option)?|mdtm|mkdir\n)\\b",
+ "name": "support.function.php_ftp.php"
+ },
+ {
+ "match": "(?xi)\\b\nimap_(\n (create|delete|list|rename|scan)(mailbox)?|status|sort|subscribe|set_quota|set(flag_full|acl)|search|savebody|\n num_(recent|msg)|check|close|clearflag_full|thread|timeout|open|header(info)?|headers|append|alerts|reopen|\n 8bit|unsubscribe|undelete|utf7_(decode|encode)|utf8|uid|ping|errors|expunge|qprint|gc|\n fetch(structure|header|text|mime|body)|fetch_overview|lsub|list(scan|subscribed)|last_error|\n rfc822_(parse_(headers|adrlist)|write_address)|get(subscribed|acl|mailboxes)|get_quota(root)?|\n msgno|mime_header_decode|mail_(copy|compose|move)|mail|mailboxmsginfo|binary|body(struct)?|base64\n)\\b",
+ "name": "support.function.php_imap.php"
+ },
+ {
+ "match": "(?xi)\\b\nmssql_(\n select_db|num_(fields|rows)|next_result|connect|close|init|data_seek|pconnect|execute|query|\n field_(seek|name|type|length)|fetch_(object|field|assoc|array|row|batch)|free_(statement|result)|\n rows_affected|result|guid_string|get_last_message|min_(error|message)_severity|bind\n)\\b",
+ "name": "support.function.php_mssql.php"
+ },
+ {
+ "match": "(?xi)\\b\nodbc_(\n statistics|specialcolumns|setoption|num_(fields|rows)|next_result|connect|columns|columnprivileges|commit|\n cursor|close(_all)?|tables|tableprivileges|do|data_source|pconnect|primarykeys|procedures|procedurecolumns|\n prepare|error(msg)?|exec(ute)?|field_(scale|num|name|type|precision|len)|foreignkeys|free_result|\n fetch_(into|object|array|row)|longreadlen|autocommit|rollback|result(_all)?|gettypeinfo|binmode\n)\\b",
+ "name": "support.function.php_odbc.php"
+ },
+ {
+ "match": "(?i)\\bpreg_(split|quote|filter|last_error|replace(_callback)?|grep|match(_all)?)\\b",
+ "name": "support.function.php_pcre.php"
+ },
+ {
+ "match": "(?i)\\b(spl_(classes|object_hash|autoload(_(call|unregister|extensions|functions|register))?)|class_(implements|uses|parents)|iterator_(count|to_array|apply))\\b",
+ "name": "support.function.php_spl.php"
+ },
+ {
+ "match": "(?i)\\bzip_(close|open|entry_(name|compressionmethod|compressedsize|close|open|filesize|read)|read)\\b",
+ "name": "support.function.php_zip.php"
+ },
+ {
+ "match": "(?xi)\\b\nposix_(\n strerror|set(s|e?u|[ep]?g)id|ctermid|ttyname|times|isatty|initgroups|uname|errno|kill|access|\n get(sid|cwd|uid|pid|ppid|pwnam|pwuid|pgid|pgrp|euid|egid|login|rlimit|gid|grnam|groups|grgid)|\n get_last_error|mknod|mkfifo\n)\\b",
+ "name": "support.function.posix.php"
+ },
+ {
+ "match": "(?i)\\bset(thread|proc)title\\b",
+ "name": "support.function.proctitle.php"
+ },
+ {
+ "match": "(?xi)\\b\npspell_(\n store_replacement|suggest|save_wordlist|new(_(config|personal))?|check|clear_session|\n config_(save_repl|create|ignore|(data|dict)_dir|personal|runtogether|repl|mode)|add_to_(session|personal)\n)\\b",
+ "name": "support.function.pspell.php"
+ },
+ {
+ "match": "(?i)\\breadline(_(completion_function|clear_history|callback_(handler_(install|remove)|read_char)|info|on_new_line|write_history|list_history|add_history|redisplay|read_history))?\\b",
+ "name": "support.function.readline.php"
+ },
+ {
+ "match": "(?i)\\brecode(_(string|file))?\\b",
+ "name": "support.function.recode.php"
+ },
+ {
+ "match": "(?i)\\brrd(c_disconnect|_(create|tune|info|update|error|version|first|fetch|last(update)?|restore|graph|xport))\\b",
+ "name": "support.function.rrd.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n shm_((get|has|remove|put)_var|detach|attach|remove)|sem_(acquire|release|remove|get)|ftok|\n msg_((get|remove|set|stat)_queue|send|queue_exists|receive)\n)\\b",
+ "name": "support.function.sem.php"
+ },
+ {
+ "match": "(?xi)\\b\nsession_(\n status|start|set_(save_handler|cookie_params)|save_path|name|commit|cache_(expire|limiter)|\n is_registered|id|destroy|decode|unset|unregister|encode|write_close|abort|reset|register(_shutdown)?|\n regenerate_id|get_cookie_params|module_name\n)\\b",
+ "name": "support.function.session.php"
+ },
+ {
+ "match": "(?i)\\bshmop_(size|close|open|delete|write|read)\\b",
+ "name": "support.function.shmop.php"
+ },
+ {
+ "match": "(?i)\\bsimplexml_(import_dom|load_(string|file))\\b",
+ "name": "support.function.simplexml.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n snmp(walk(oid)?|realwalk|get(next)?|set)|\n snmp_(set_(valueretrieval|quick_print|enum_print|oid_(numeric_print|output_format))|read_mib|\n get_(valueretrieval|quick_print))|\n snmp[23]_(set|walk|real_walk|get(next)?)\n)\\b",
+ "name": "support.function.snmp.php"
+ },
+ {
+ "match": "(?i)\\b(is_soap_fault|use_soap_error_handler)\\b",
+ "name": "support.function.soap.php"
+ },
+ {
+ "match": "(?xi)\\b\nsocket_(\n shutdown|strerror|send(to|msg)?|set_((non)?block|option)|select|connect|close|clear_error|bind|\n create(_(pair|listen))?|cmsg_space|import_stream|write|listen|last_error|accept|recv(from|msg)?|\n read|get(peer|sock)name|get_option\n)\\b",
+ "name": "support.function.sockets.php"
+ },
+ {
+ "match": "(?xi)\\b\nsqlite_(\n single_query|seek|has_(more|prev)|num_(fields|rows)|next|changes|column|current|close|\n create_(aggregate|function)|open|unbuffered_query|udf_(decode|encode)_binary|popen|prev|\n escape_string|error_string|exec|valid|key|query|field_name|factory|\n fetch_(string|single|column_types|object|all|array)|lib(encoding|version)|\n last_(insert_rowid|error)|array_query|rewind|busy_timeout\n)\\b",
+ "name": "support.function.sqlite.php"
+ },
+ {
+ "match": "(?xi)\\b\nsqlsrv_(\n send_stream_data|server_info|has_rows|num_(fields|rows)|next_result|connect|configure|commit|\n client_info|close|cancel|prepare|errors|execute|query|field_metadata|fetch(_(array|object))?|\n free_stmt|rows_affected|rollback|get_(config|field)|begin_transaction\n)\\b",
+ "name": "support.function.sqlsrv.php"
+ },
+ {
+ "match": "(?xi)\\b\nstats_(\n harmonic_mean|covariance|standard_deviation|skew|\n cdf_(noncentral_(chisquare|f)|negative_binomial|chisquare|cauchy|t|uniform|poisson|exponential|f|weibull|\n logistic|laplace|gamma|binomial|beta)|\n stat_(noncentral_t|correlation|innerproduct|independent_t|powersum|percentile|paired_t|gennch|binomial_coef)|\n dens_(normal|negative_binomial|chisquare|cauchy|t|pmf_(hypergeometric|poisson|binomial)|exponential|f|\n weibull|logistic|laplace|gamma|beta)|\n den_uniform|variance|kurtosis|absolute_deviation|\n rand_(setall|phrase_to_seeds|ranf|get_seeds|\n gen_(noncentral_[ft]|noncenral_chisquare|normal|chisquare|t|int|\n i(uniform|poisson|binomial(_negative)?)|exponential|f(uniform)?|gamma|beta))\n)\\b",
+ "name": "support.function.stats.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n set_socket_blocking|\n stream_(socket_(shutdown|sendto|server|client|pair|enable_crypto|accept|recvfrom|get_name)|\n set_(chunk_size|timeout|(read|write)_buffer|blocking)|select|notification_callback|supports_lock|\n context_(set_(option|default|params)|create|get_(options|default|params))|copy_to_stream|is_local|\n encoding|filter_(append|prepend|register|remove)|wrapper_((un)?register|restore)|\n resolve_include_path|register_wrapper|get_(contents|transports|filters|wrappers|line|meta_data)|\n bucket_(new|prepend|append|make_writeable)\n )\n)\\b",
+ "name": "support.function.streamsfuncs.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n money_format|md5(_file)?|metaphone|bin2hex|sscanf|sha1(_file)?|\n str(str|c?spn|n(at)?(case)?cmp|chr|coll|(case)?cmp|to(upper|lower)|tok|tr|istr|pos|pbrk|len|rchr|ri?pos|rev)|\n str_(getcsv|ireplace|pad|repeat|replace|rot13|shuffle|split|word_count)|\n strip(c?slashes|os)|strip_tags|similar_text|soundex|substr(_(count|compare|replace))?|setlocale|\n html(specialchars(_decode)?|entities)|html_entity_decode|hex2bin|hebrev(c)?|number_format|nl2br|nl_langinfo|\n chop|chunk_split|chr|convert_(cyr_string|uu(decode|encode))|count_chars|crypt|crc32|trim|implode|ord|\n uc(first|words)|join|parse_str|print(f)?|echo|explode|v?[fs]?printf|quoted_printable_(decode|encode)|\n quotemeta|wordwrap|lcfirst|[lr]trim|localeconv|levenshtein|addc?slashes|get_html_translation_table\n)\\b",
+ "name": "support.function.string.php"
+ },
+ {
+ "match": "(?xi)\\b\nsybase_(\n set_message_handler|select_db|num_(fields|rows)|connect|close|deadlock_retry_count|data_seek|\n unbuffered_query|pconnect|query|field_seek|fetch_(object|field|assoc|array|row)|free_result|\n affected_rows|result|get_last_message|min_(client|error|message|server)_severity\n)\\b",
+ "name": "support.function.sybase.php"
+ },
+ {
+ "match": "(?i)\\b(taint|is_tainted|untaint)\\b",
+ "name": "support.function.taint.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n tidy_((get|set)opt|set_encoding|save_config|config_count|clean_repair|is_(xhtml|xml)|diagnose|\n (access|error|warning)_count|load_config|reset_config|(parse|repair)_(string|file)|\n get_(status|html(_ver)?|head|config|output|opt_doc|root|release|body))|\n ob_tidyhandler\n)\\b",
+ "name": "support.function.tidy.php"
+ },
+ {
+ "match": "(?i)\\btoken_(name|get_all)\\b",
+ "name": "support.function.tokenizer.php"
+ },
+ {
+ "match": "(?xi)\\b\ntrader_(\n stoch(f|r|rsi)?|stddev|sin(h)?|sum|sub|set_(compat|unstable_period)|sqrt|sar(ext)?|sma|\n ht_(sine|trend(line|mode)|dc(period|phase)|phasor)|natr|cci|cos(h)?|correl|\n cdl(shootingstar|shortline|sticksandwich|stalledpattern|spinningtop|separatinglines|\n hikkake(mod)?|highwave|homingpigeon|hangingman|harami(cross)?|hammer|concealbabyswall|\n counterattack|closingmarubozu|thrusting|tasukigap|takuri|tristar|inneck|invertedhammer|\n identical3crows|2crows|onneck|doji(star)?|darkcloudcover|dragonflydoji|unique3river|\n upsidegap2crows|3(starsinsouth|inside|outside|whitesoldiers|linestrike|blackcrows)|\n piercing|engulfing|evening(doji)?star|kicking(bylength)?|longline|longleggeddoji|\n ladderbottom|advanceblock|abandonedbaby|risefall3methods|rickshawman|gapsidesidewhite|\n gravestonedoji|xsidegap3methods|morning(doji)?star|mathold|matchinglow|marubozu|\n belthold|breakaway)|\n ceil|cmo|tsf|typprice|t3|tema|tan(h)?|trix|trima|trange|obv|div|dema|dx|ultosc|ppo|\n plus_d[im]|errno|exp|ema|var|kama|floor|wclprice|willr|wma|ln|log10|bop|beta|bbands|\n linearreg(_(slope|intercept|angle))?|asin|acos|atan|atr|adosc|ad|add|adx(r)?|apo|avgprice|\n aroon(osc)?|rsi|roc|rocp|rocr(100)?|get_(compat|unstable_period)|min(index)?|minus_d[im]|\n minmax(index)?|mid(point|price)|mom|mult|medprice|mfi|macd(ext|fix)?|mavp|max(index)?|ma(ma)?\n)\\b",
+ "name": "support.function.trader.php"
+ },
+ {
+ "match": "(?i)\\buopz_(copy|compose|implement|overload|delete|undefine|extend|function|flags|restore|rename|redefine|backup)\\b",
+ "name": "support.function.uopz.php"
+ },
+ {
+ "match": "(?i)\\b(http_build_query|(raw)?url(decode|encode)|parse_url|get_(headers|meta_tags)|base64_(decode|encode))\\b",
+ "name": "support.function.url.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n strval|settype|serialize|(bool|double|float)val|debug_zval_dump|intval|import_request_variables|isset|\n is_(scalar|string|null|numeric|callable|int(eger)?|object|double|float|long|array|resource|real|bool)|\n unset|unserialize|print_r|empty|var_(dump|export)|gettype|get_(defined_vars|resource_type)\n)\\b",
+ "name": "support.function.var.php"
+ },
+ {
+ "match": "(?i)\\bwddx_(serialize_(value|vars)|deserialize|packet_(start|end)|add_vars)\\b",
+ "name": "support.function.wddx.php"
+ },
+ {
+ "match": "(?i)\\bxhprof_(sample_)?(disable|enable)\\b",
+ "name": "support.function.xhprof.php"
+ },
+ {
+ "match": "(?xi)\n\\b\n(\n utf8_(decode|encode)|\n xml_(set_((notation|(end|start)_namespace|unparsed_entity)_decl_handler|\n (character_data|default|element|external_entity_ref|processing_instruction)_handler|object)|\n parse(_into_struct)?|parser_((get|set)_option|create(_ns)?|free)|error_string|\n get_(current_((column|line)_number|byte_index)|error_code))\n)\\b",
+ "name": "support.function.xml.php"
+ },
+ {
+ "match": "(?xi)\\b\nxmlrpc_(\n server_(call_method|create|destroy|add_introspection_data|register_(introspection_callback|method))|\n is_fault|decode(_request)?|parse_method_descriptions|encode(_request)?|(get|set)_type\n)\\b",
+ "name": "support.function.xmlrpc.php"
+ },
+ {
+ "match": "(?xi)\\b\nxmlwriter_(\n (end|start|write)_(comment|cdata|dtd(_(attlist|entity|element))?|document|pi|attribute|element)|\n (start|write)_(attribute|element)_ns|write_raw|set_indent(_string)?|text|output_memory|open_(memory|uri)|\n full_end_element|flush|\n)\\b",
+ "name": "support.function.xmlwriter.php"
+ },
+ {
+ "match": "(?xi)\\b\n(\n zlib_(decode|encode|get_coding_type)|readgzfile|\n gz(seek|compress|close|tell|inflate|open|decode|deflate|uncompress|puts|passthru|encode|eof|file|\n write|rewind|read|getc|getss?)\n)\\b",
+ "name": "support.function.zlib.php"
+ },
+ {
+ "match": "(?i)\\bis_int(eger)?\\b",
+ "name": "support.function.alias.php"
+ }
+ ]
+ },
+ "switch_statement": {
+ "patterns": [
+ {
+ "match": "\\s+(?=switch\\b)"
+ },
+ {
+ "begin": "\\bswitch\\b(?!\\s*\\(.*\\)\\s*:)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.switch.php"
+ }
+ },
+ "end": "}|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.section.switch-block.end.bracket.curly.php"
+ }
+ },
+ "name": "meta.switch-statement.php",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.switch-expression.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.switch-expression.end.bracket.round.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.section.switch-block.begin.bracket.curly.php"
+ }
+ },
+ "end": "(?=}|\\?>)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "match_statement": {
+ "patterns": [
+ {
+ "match": "\\s+(?=match\\b)"
+ },
+ {
+ "begin": "\\bmatch\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.match.php"
+ }
+ },
+ "end": "}|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.section.match-block.end.bracket.curly.php"
+ }
+ },
+ "name": "meta.match-statement.php",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.match-expression.begin.bracket.round.php"
+ }
+ },
+ "end": "\\)|(?=\\?>)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.match-expression.end.bracket.round.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.section.match-block.begin.bracket.curly.php"
+ }
+ },
+ "end": "(?=}|\\?>)",
+ "patterns": [
+ {
+ "match": "=>",
+ "name": "keyword.definition.arrow.php"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "use-inner": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "(?i)\\b(as)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.use-as.php"
+ }
+ },
+ "end": "(?i)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*",
+ "endCaptures": {
+ "0": {
+ "name": "entity.other.alias.php"
+ }
+ }
+ },
+ {
+ "include": "#class-name"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.php"
+ }
+ ]
+ },
+ "var_basic": {
+ "patterns": [
+ {
+ "match": "(?i)(\\$+)[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*",
+ "name": "variable.other.php",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.php"
+ }
+ }
+ }
+ ]
+ },
+ "var_global": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(\\$)((_(COOKIE|FILES|GET|POST|REQUEST))|arg(v|c))\\b",
+ "name": "variable.other.global.php"
+ },
+ "var_global_safer": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(\\$)((GLOBALS|_(ENV|SERVER|SESSION)))",
+ "name": "variable.other.global.safer.php"
+ },
+ "var_language": {
+ "match": "(\\$)this\\b",
+ "name": "variable.language.this.php",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.php"
+ }
+ }
+ },
+ "variable-name": {
+ "patterns": [
+ {
+ "include": "#var_global"
+ },
+ {
+ "include": "#var_global_safer"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "variable.other.php"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "4": {
+ "name": "keyword.operator.class.php"
+ },
+ "5": {
+ "name": "variable.other.property.php"
+ },
+ "6": {
+ "name": "punctuation.section.array.begin.php"
+ },
+ "7": {
+ "name": "constant.numeric.index.php"
+ },
+ "8": {
+ "name": "variable.other.index.php"
+ },
+ "9": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "10": {
+ "name": "string.unquoted.index.php"
+ },
+ "11": {
+ "name": "punctuation.section.array.end.php"
+ }
+ },
+ "match": "(?xi)\n((\\$)(?<name>[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*))\\s*\n(?:\n (\\??->)\\s*(\\g<name>)\n |\n (\\[)(?:(\\d+)|((\\$)\\g<name>)|([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*))(\\])\n)?"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "variable.other.php"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.php"
+ },
+ "4": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "match": "(?i)((\\${)(?<name>[a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)(}))"
+ }
+ ]
+ },
+ "variables": {
+ "patterns": [
+ {
+ "include": "#var_language"
+ },
+ {
+ "include": "#var_global"
+ },
+ {
+ "include": "#var_global_safer"
+ },
+ {
+ "include": "#var_basic"
+ },
+ {
+ "begin": "\\${(?=.*?})",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.variable.php"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "ternary_shorthand": {
+ "match": "\\?:",
+ "name": "keyword.operator.ternary.php"
+ },
+ "ternary_expression": {
+ "begin": "\\?",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.php"
+ }
+ },
+ "end": "(?<!:):(?!:)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.php"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?i)^\\s*([a-z_\\x{7f}-\\x{10ffff}][a-z0-9_\\x{7f}-\\x{10ffff}]*)\\s*(?=:(?!:))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "null_coalescing": {
+ "match": "\\?\\?",
+ "name": "keyword.operator.null-coalescing.php"
+ }
+ },
+ "name": "php"
+}
diff --git a/node_modules/shiki/languages/plsql.tmLanguage.json b/node_modules/shiki/languages/plsql.tmLanguage.json
new file mode 100644
index 0000000..1a1f38b
--- /dev/null
+++ b/node_modules/shiki/languages/plsql.tmLanguage.json
@@ -0,0 +1,232 @@
+{
+ "fileTypes": ["sql", "ddl", "dml", "pkh", "pks", "pkb", "pck", "pls", "plb"],
+ "foldingStartMarker": "(?i)^\\s*(begin|if|loop)\\b",
+ "foldingStopMarker": "(?i)^\\s*(end)\\b",
+ "keyEquivalent": "^~S",
+ "name": "plsql",
+ "patterns": [
+ {
+ "begin": "/\\*",
+ "end": "\\*/",
+ "name": "comment.block.oracle"
+ },
+ {
+ "match": "--.*$",
+ "name": "comment.line.double-dash.oracle"
+ },
+ {
+ "match": "(?i)(?:^\\s*)rem(?:\\s+.*$)",
+ "name": "comment.line.sqlplus.oracle"
+ },
+ {
+ "match": "(?i)(?:^\\s*)prompt(?:\\s+.*$)",
+ "name": "comment.line.sqlplus-prompt.oracle"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.oracle"
+ },
+ "2": {
+ "name": "keyword.other.oracle"
+ }
+ },
+ "match": "(?i)^\\s*(create)(\\s+or\\s+replace)?\\s+",
+ "name": "meta.create.oracle"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.oracle"
+ },
+ "2": {
+ "name": "keyword.other.oracle"
+ },
+ "3": {
+ "name": "entity.name.type.oracle"
+ }
+ },
+ "match": "(?i)\\b(package)(\\s+body)?\\s+(\\S+)",
+ "name": "meta.package.oracle"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.oracle"
+ },
+ "2": {
+ "name": "entity.name.type.oracle"
+ }
+ },
+ "match": "(?i)\\b(type)\\s+\"([^\"]+)\"",
+ "name": "meta.type.oracle"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.oracle"
+ },
+ "2": {
+ "name": "entity.name.function.oracle"
+ }
+ },
+ "match": "(?i)^\\s*(function|procedure)\\s+\"?([-a-z0-9_]+)\"?",
+ "name": "meta.procedure.oracle"
+ },
+ {
+ "match": "[!<>:]?=|<>|<|>|\\+|(?<!\\.)\\*|-|(?<!^)/|\\|\\|",
+ "name": "keyword.operator.oracle"
+ },
+ {
+ "match": "(?i)\\b(true|false|null|is\\s+(not\\s+)?null)\\b",
+ "name": "constant.language.oracle"
+ },
+ {
+ "match": "\\b\\d+(\\.\\d+)?\\b",
+ "name": "constant.numeric.oracle"
+ },
+ {
+ "match": "(?i)\\b(if|elsif|else|end\\s+if|loop|end\\s+loop|for|while|case|end\\s+case|continue|return|goto)\\b",
+ "name": "keyword.control.oracle"
+ },
+ {
+ "match": "(?i)\\b(or|and|not|like)\\b",
+ "name": "keyword.other.oracle"
+ },
+ {
+ "match": "(?i)\\b(%(isopen|found|notfound|rowcount)|commit|rollback|sqlerrm)\\b",
+ "name": "support.function.oracle"
+ },
+ {
+ "match": "(?i)\\b(sql|sqlcode)\\b",
+ "name": "variable.language.oracle"
+ },
+ {
+ "match": "(?i)\\b(ascii|asciistr|chr|compose|concat|convert|decompose|dump|initcap|instr|instrb|instrc|instr2|instr4|unistr|length|lengthb|lengthc|length2|length4|lower|lpad|ltrim|nchr|replace|rpad|rtrim|soundex|substr|translate|trim|upper|vsize)\\b",
+ "name": "support.function.builtin.char.oracle"
+ },
+ {
+ "match": "(?i)\\b(add_months|current_date|current_timestamp|dbtimezone|last_day|localtimestamp|months_between|new_time|next_day|round|sessiontimezone|sysdate|tz_offset|systimestamp)\\b",
+ "name": "support.function.builtin.date.oracle"
+ },
+ {
+ "match": "(?i)\\b(avg|count|sum|max|min|median|corr|corr_\\w+|covar_(pop|samp)|cume_dist|dense_rank|first|group_id|grouping|grouping_id|last|percentile_cont|percentile_disc|percent_rank|rank|regr_\\w+|row_number|stats_binomial_test|stats_crosstab|stats_f_test|stats_ks_test|stats_mode|stats_mw_test|stats_one_way_anova|stats_t_test_\\w+|stats_wsr_test|stddev|stddev_pop|stddev_samp|var_pop|var_samp|variance)\\b",
+ "name": "support.function.builtin.aggregate.oracle"
+ },
+ {
+ "match": "(?i)\\b(bfilename|cardinality|coalesce|decode|empty_(blob|clob)|lag|lead|listagg|lnnvl|nanvl|nullif|nvl|nvl2|sys_(context|guid|typeid|connect_by_path|extract_utc)|uid|(current\\s+)?user|userenv|cardinality|(bulk\\s+)?collect|powermultiset(_by_cardinality)?|ora_hash|standard_hash|execute\\s+immediate|alter\\s+session)\\b",
+ "name": "support.function.builtin.advanced.oracle"
+ },
+ {
+ "match": "(?i)\\b(bin_to_num|cast|chartorowid|from_tz|hextoraw|numtodsinterval|numtoyminterval|rawtohex|rawtonhex|to_char|to_clob|to_date|to_dsinterval|to_lob|to_multi_byte|to_nclob|to_number|to_single_byte|to_timestamp|to_timestamp_tz|to_yminterval|scn_to_timestamp|timestamp_to_scn|rowidtochar|rowidtonchar|to_binary_double|to_binary_float|to_blob|to_nchar|con_dbid_to_id|con_guid_to_id|con_name_to_id|con_uid_to_id)\\b",
+ "name": "support.function.builtin.convert.oracle"
+ },
+ {
+ "match": "(?i)\\b(abs|acos|asin|atan|atan2|bit_(and|or|xor)|ceil|cos|cosh|exp|extract|floor|greatest|least|ln|log|mod|power|remainder|round|sign|sin|sinh|sqrt|tan|tanh|trunc)\\b",
+ "name": "support.function.builtin.math.oracle"
+ },
+ {
+ "match": "(?i)\\b(\\.(count|delete|exists|extend|first|last|limit|next|prior|trim|reverse))\\b",
+ "name": "support.function.builtin.collection.oracle"
+ },
+ {
+ "match": "(?i)\\b(cluster_details|cluster_distance|cluster_id|cluster_probability|cluster_set|feature_details|feature_id|feature_set|feature_value|prediction|prediction_bounds|prediction_cost|prediction_details|prediction_probability|prediction_set)\\b",
+ "name": "support.function.builtin.data_mining.oracle"
+ },
+ {
+ "match": "(?i)\\b(appendchildxml|deletexml|depth|extract|existsnode|extractvalue|insertchildxml|insertxmlbefore|xmlcast|xmldiff|xmlelement|xmlexists|xmlisvalid|insertchildxmlafter|insertchildxmlbefore|path|sys_dburigen|sys_xmlagg|sys_xmlgen|updatexml|xmlagg|xmlcdata|xmlcolattval|xmlcomment|xmlconcat|xmlforest|xmlparse|xmlpi|xmlquery|xmlroot|xmlsequence|xmlserialize|xmltable|xmltransform)\\b",
+ "name": "support.function.builtin.xml.oracle"
+ },
+ {
+ "match": "(?i)\\b(pragma\\s+(autonomous_transaction|serially_reusable|restrict_references|exception_init|inline))\\b",
+ "name": "keyword.other.pragma.oracle"
+ },
+ {
+ "match": "(?i)\\b(p(i|o|io)_[-a-z0-9_]+)\\b",
+ "name": "variable.parameter.oracle"
+ },
+ {
+ "match": "(?i)\\b(l_[-a-z0-9_]+)\\b",
+ "name": "variable.other.oracle"
+ },
+ {
+ "match": "(?i):\\b(new|old)\\b",
+ "name": "variable.trigger.oracle"
+ },
+ {
+ "match": "(?i)\\b(connect\\s+by\\s+(nocycle\\s+)?(prior|level)|connect_by_(root|icycle)|level|start\\s+with)\\b",
+ "name": "keyword.hierarchical.sql.oracle"
+ },
+ {
+ "match": "(?i)\\b(language|name|java|c)\\b",
+ "name": "keyword.wrapper.oracle"
+ },
+ {
+ "match": "(?i)\\b(end|then|deterministic|exception|when|declare|begin|in|out|nocopy|is|as|exit|open|fetch|into|close|subtype|type|rowtype|default|exclusive|mode|lock|record|index\\s+by|result_cache|constant|comment|\\.(nextval|currval))\\b",
+ "name": "keyword.other.oracle"
+ },
+ {
+ "match": "(?i)\\b(grant|revoke|alter|drop|force|add|check|constraint|primary\\s+key|foreign\\s+key|references|unique(\\s+index)?|column|sequence|increment\\s+by|cache|(materialized\\s+)?view|trigger|storage|tablespace|pct(free|used)|(init|max)trans|logging)\\b",
+ "name": "keyword.other.ddl.oracle"
+ },
+ {
+ "match": "(?i)\\b(with|select|from|where|order\\s+(siblings\\s+)?by|group\\s+by|rollup|cube|((left|right|cross|natural)\\s+(outer\\s+)?)?join|on|asc|desc|update|set|insert|into|values|delete|distinct|union|minus|intersect|having|limit|table|between|like|of|row|(range|rows)\\s+between|nulls\\s+first|nulls\\s+last|before|after|all|any|exists|rownum|cursor|returning|over|partition\\s+by|merge|using|matched|pivot|unpivot)\\b",
+ "name": "keyword.other.sql.oracle"
+ },
+ {
+ "match": "(?i)\\b(define|whenever\\s+sqlerror|exec|timing\\s+start|timing\\s+stop)\\b",
+ "name": "keyword.other.sqlplus.oracle"
+ },
+ {
+ "match": "(?i)\\b(access_into_null|case_not_found|collection_is_null|cursor_already_open|dup_val_on_index|invalid_cursor|invalid_number|login_denied|no_data_found|not_logged_on|program_error|rowtype_mismatch|self_is_null|storage_error|subscript_beyond_count|subscript_outside_limit|sys_invalid_rowid|timeout_on_resource|too_many_rows|value_error|zero_divide|others)\\b",
+ "name": "support.type.exception.oracle"
+ },
+ {
+ "captures": {
+ "3": {
+ "name": "support.class.oracle"
+ }
+ },
+ "match": "(?i)\\b((dbms|utl|owa|apex)_\\w+\\.(\\w+))\\b",
+ "name": "support.function.oracle"
+ },
+ {
+ "captures": {
+ "3": {
+ "name": "support.class.oracle"
+ }
+ },
+ "match": "(?i)\\b((htf|htp)\\.(\\w+))\\b",
+ "name": "support.function.oracle"
+ },
+ {
+ "captures": {
+ "3": {
+ "name": "support.class.user-defined.oracle"
+ }
+ },
+ "match": "(?i)\\b((\\w+_pkg|pkg_\\w+)\\.(\\w+))\\b",
+ "name": "support.function.user-defined.oracle"
+ },
+ {
+ "match": "(?i)\\b(raise|raise_application_error)\\b",
+ "name": "support.function.oracle"
+ },
+ {
+ "begin": "'",
+ "end": "'",
+ "name": "string.quoted.single.oracle"
+ },
+ {
+ "begin": "\"",
+ "end": "\"",
+ "name": "string.quoted.double.oracle"
+ },
+ {
+ "match": "(?i)\\b(char|varchar|varchar2|nchar|nvarchar2|boolean|date|timestamp(\\s+with(\\s+local)?\\s+time\\s+zone)?|interval\\s*day(\\(\\d*\\))?\\s*to\\s*month|interval\\s*year(\\(\\d*\\))?\\s*to\\s*second(\\(\\d*\\))?|xmltype|blob|clob|nclob|bfile|long|long\\s+raw|raw|number|integer|decimal|smallint|float|binary_(float|double|integer)|pls_(float|double|integer)|rowid|urowid|vararray|natural|naturaln|positive|positiven|signtype|simple_(float|double|integer))\\b",
+ "name": "storage.type.oracle"
+ }
+ ],
+ "scopeName": "source.plsql.oracle",
+ "uuid": "28DCE4DD-F5E1-4ED3-8847-64DA6B1F9163"
+}
diff --git a/node_modules/shiki/languages/postcss.tmLanguage.json b/node_modules/shiki/languages/postcss.tmLanguage.json
new file mode 100644
index 0000000..8569316
--- /dev/null
+++ b/node_modules/shiki/languages/postcss.tmLanguage.json
@@ -0,0 +1,374 @@
+{
+ "patterns": [
+ {
+ "patterns": [
+ {
+ "include": "#comment-tag"
+ }
+ ],
+ "begin": "/\\*",
+ "name": "comment.block.postcss",
+ "end": "\\*/"
+ },
+ {
+ "include": "#double-slash"
+ },
+ {
+ "include": "#double-quoted"
+ },
+ {
+ "include": "#single-quoted"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#placeholder-selector"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#variable-root-css"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#unit"
+ },
+ {
+ "include": "#flag"
+ },
+ {
+ "include": "#dotdotdot"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "keyword.control.at-rule.css.postcss"
+ }
+ },
+ "begin": "@include",
+ "name": "support.function.name.postcss.library",
+ "end": "(?=\\n|\\(|{|;)"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "keyword.control.at-rule.css.postcss"
+ }
+ },
+ "patterns": [
+ {
+ "name": "entity.name.function",
+ "match": "[\\w-]+"
+ }
+ ],
+ "begin": "@mixin|@function",
+ "name": "support.function.name.postcss.no-completions",
+ "end": "$\\n?|(?=\\(|{)"
+ },
+ {
+ "name": "string.quoted.double.css.postcss",
+ "match": "(?<=@import)\\s[\\w/.*-]+"
+ },
+ {
+ "begin": "@",
+ "name": "keyword.control.at-rule.css.postcss",
+ "end": "$\\n?|\\s(?!(all|braille|embossed|handheld|print|projection|screen|speech|tty|tv|if|only|not)(\\s|,))|(?=;)"
+ },
+ {
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#pseudo-class"
+ }
+ ],
+ "begin": "#",
+ "name": "entity.other.attribute-name.id.css.postcss",
+ "end": "$\\n?|(?=\\s|,|;|\\(|\\)|\\.|\\[|{|>)"
+ },
+ {
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#pseudo-class"
+ }
+ ],
+ "begin": "\\.|(?<=&)(-|_)",
+ "name": "entity.other.attribute-name.class.css.postcss",
+ "end": "$\\n?|(?=\\s|,|;|\\(|\\)|\\[|{|>)"
+ },
+ {
+ "patterns": [
+ {
+ "include": "#double-quoted"
+ },
+ {
+ "include": "#single-quoted"
+ },
+ {
+ "name": "keyword.other.regex.postcss",
+ "match": "\\^|\\$|\\*|~"
+ }
+ ],
+ "begin": "\\[",
+ "name": "entity.other.attribute-selector.postcss",
+ "end": "\\]"
+ },
+ {
+ "name": "entity.other.attribute-name.pseudo-class.css.postcss",
+ "match": "(?<=\\]|\\)|not\\(|\\*|>|>\\s):[a-z:-]+|(::|:-)[a-z:-]+"
+ },
+ {
+ "patterns": [
+ {
+ "include": "#double-slash"
+ },
+ {
+ "include": "#double-quoted"
+ },
+ {
+ "include": "#single-quoted"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#rgb-value"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#unit"
+ },
+ {
+ "include": "#flag"
+ },
+ {
+ "include": "#function"
+ },
+ {
+ "include": "#function-content"
+ },
+ {
+ "include": "#function-content-var"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#parent-selector"
+ },
+ {
+ "include": "#property-value"
+ }
+ ],
+ "begin": ":",
+ "name": "meta.property-list.css.postcss",
+ "end": "$\\n?|(?=;|\\s\\(|and\\(|{|}|\\),)"
+ },
+ {
+ "include": "#rgb-value"
+ },
+ {
+ "include": "#function"
+ },
+ {
+ "include": "#function-content"
+ },
+ {
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#pseudo-class"
+ }
+ ],
+ "begin": "(?<!\\-|\\()\\b(a|abbr|acronym|address|applet|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video|main|svg|rect|ruby|center|circle|ellipse|line|polyline|polygon|path|text|u|x)\\b(?!-|\\)|:\\s)|&",
+ "name": "entity.name.tag.css.postcss.symbol",
+ "end": "(?=\\s|,|;|\\(|\\)|\\.|\\[|{|>|-|_)"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "name": "support.type.property-name.css.postcss",
+ "match": "[a-z-]+((?=:|#{))"
+ },
+ {
+ "include": "#reserved-words"
+ },
+ {
+ "include": "#property-value"
+ }
+ ],
+ "name": "postcss",
+ "repository": {
+ "reserved-words": {
+ "name": "support.type.property-name.css.postcss",
+ "match": "\\b(false|from|in|not|null|through|to|true)\\b"
+ },
+ "double-quoted": {
+ "patterns": [
+ {
+ "include": "#quoted-interpolation"
+ }
+ ],
+ "begin": "\"",
+ "name": "string.quoted.double.css.postcss",
+ "end": "\""
+ },
+ "operator": {
+ "name": "keyword.operator.postcss",
+ "match": "\\+|\\s-\\s|\\s-(?=\\$)|(?<=\\()-(?=\\$)|\\s-(?=\\()|\\*|/|%|=|!|<|>|~"
+ },
+ "function-content": {
+ "name": "string.quoted.double.css.postcss",
+ "match": "(?<=url\\(|format\\(|attr\\().+?(?=\\))"
+ },
+ "double-slash": {
+ "patterns": [
+ {
+ "include": "#comment-tag"
+ }
+ ],
+ "begin": "//",
+ "name": "comment.line.postcss",
+ "end": "$"
+ },
+ "numeric": {
+ "name": "constant.numeric.css.postcss",
+ "match": "(-|\\.)?[0-9]+(\\.[0-9]+)?"
+ },
+ "variable-root-css": {
+ "name": "variable.parameter.postcss",
+ "match": "(?<!&)--[\\w-]+"
+ },
+ "function": {
+ "name": "support.function.name.postcss",
+ "match": "(?<=[\\s|\\(|,|:])(?!url|format|attr)[\\w-][\\w-]*(?=\\()"
+ },
+ "rgb-value": {
+ "name": "constant.other.color.rgb-value.css.postcss",
+ "match": "(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\b"
+ },
+ "comment-tag": {
+ "patterns": [
+ {
+ "name": "comment.tag.postcss",
+ "match": "[\\w-]+"
+ }
+ ],
+ "begin": "{{",
+ "name": "comment.tags.postcss",
+ "end": "}}"
+ },
+ "interpolation": {
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#unit"
+ },
+ {
+ "include": "#double-quoted"
+ },
+ {
+ "include": "#single-quoted"
+ }
+ ],
+ "begin": "#{",
+ "name": "support.function.interpolation.postcss",
+ "end": "}"
+ },
+ "unit": {
+ "name": "keyword.other.unit.css.postcss",
+ "match": "(?<=[\\d]|})(ch|cm|deg|dpcm|dpi|dppx|em|ex|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vw|%)"
+ },
+ "function-content-var": {
+ "name": "variable.parameter.postcss",
+ "match": "(?<=var\\()[\\w-]+(?=\\))"
+ },
+ "dotdotdot": {
+ "name": "variable.other",
+ "match": "\\.{3}"
+ },
+ "variable": {
+ "name": "variable.parameter.postcss",
+ "match": "\\$[\\w-]+"
+ },
+ "single-quoted": {
+ "patterns": [
+ {
+ "include": "#quoted-interpolation"
+ }
+ ],
+ "begin": "'",
+ "name": "string.quoted.single.css.postcss",
+ "end": "'"
+ },
+ "quoted-interpolation": {
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#unit"
+ }
+ ],
+ "begin": "#{",
+ "name": "support.function.interpolation.postcss",
+ "end": "}"
+ },
+ "pseudo-class": {
+ "name": "entity.other.attribute-name.pseudo-class.css.postcss",
+ "match": ":[a-z:-]+"
+ },
+ "property-value": {
+ "name": "meta.property-value.css.postcss, support.constant.property-value.css.postcss",
+ "match": "[\\w-]+"
+ },
+ "placeholder-selector": {
+ "begin": "(?<!\\d)%(?!\\d)",
+ "name": "entity.other.attribute-name.placeholder-selector.postcss",
+ "end": "$\\n?|\\s|(?=;|{)"
+ },
+ "flag": {
+ "name": "keyword.other.important.css.postcss",
+ "match": "!(important|default|optional|global)"
+ },
+ "parent-selector": {
+ "name": "entity.name.tag.css.postcss",
+ "match": "&"
+ }
+ },
+ "foldingStartMarker": "/\\*|^#|^\\*|^\\b|^\\.",
+ "foldingStopMarker": "\\*/|^\\s*$",
+ "fileTypes": ["pcss", "postcss"],
+ "uuid": "90DAEA60-88AA-11E2-9E96-0800200C9A66",
+ "scopeName": "source.css.postcss"
+}
diff --git a/node_modules/shiki/languages/powerquery.tmLanguage.json b/node_modules/shiki/languages/powerquery.tmLanguage.json
new file mode 100644
index 0000000..5ffcfab
--- /dev/null
+++ b/node_modules/shiki/languages/powerquery.tmLanguage.json
@@ -0,0 +1,346 @@
+{
+ "name": "powerquery",
+ "scopeName": "source.powerquery",
+ "fileTypes": ["pq", "pqm"],
+ "uuid": "41968B57-12E6-4AC5-92A4-A837010E8B0A",
+ "patterns": [
+ {
+ "include": "#Noise"
+ },
+ {
+ "include": "#LiteralExpression"
+ },
+ {
+ "include": "#Keywords"
+ },
+ {
+ "include": "#ImplicitVariable"
+ },
+ {
+ "include": "#IntrinsicVariable"
+ },
+ {
+ "include": "#Operators"
+ },
+ {
+ "include": "#DotOperators"
+ },
+ {
+ "include": "#TypeName"
+ },
+ {
+ "include": "#RecordExpression"
+ },
+ {
+ "include": "#Punctuation"
+ },
+ {
+ "include": "#QuotedIdentifier"
+ },
+ {
+ "include": "#Identifier"
+ }
+ ],
+ "repository": {
+ "Keywords": {
+ "match": "\\b(?:(and|or|not)|(if|then|else)|(try|otherwise)|(as|each|in|is|let|meta|type|error)|(section|shared))\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.word.logical.powerquery"
+ },
+ "2": {
+ "name": "keyword.control.conditional.powerquery"
+ },
+ "3": {
+ "name": "keyword.control.exception.powerquery"
+ },
+ "4": {
+ "name": "keyword.other.powerquery"
+ },
+ "5": {
+ "name": "keyword.powerquery"
+ }
+ }
+ },
+ "TypeName": {
+ "match": "\\b(?:(optional|nullable)|(action|any|anynonnull|binary|date|datetime|datetimezone|duration|function|list|logical|none|null|number|record|table|text|type))\\b",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.powerquery"
+ },
+ "2": {
+ "name": "storage.type.powerquery"
+ }
+ }
+ },
+ "LiteralExpression": {
+ "patterns": [
+ {
+ "include": "#String"
+ },
+ {
+ "include": "#NumericConstant"
+ },
+ {
+ "include": "#LogicalConstant"
+ },
+ {
+ "include": "#NullConstant"
+ },
+ {
+ "include": "#FloatNumber"
+ },
+ {
+ "include": "#DecimalNumber"
+ },
+ {
+ "include": "#HexNumber"
+ },
+ {
+ "include": "#IntNumber"
+ }
+ ]
+ },
+ "Noise": {
+ "patterns": [
+ {
+ "include": "#BlockComment"
+ },
+ {
+ "include": "#LineComment"
+ },
+ {
+ "include": "#Whitespace"
+ }
+ ]
+ },
+ "Whitespace": {
+ "match": "\\s+"
+ },
+ "BlockComment": {
+ "begin": "/\\*",
+ "end": "\\*/",
+ "name": "comment.block.powerquery"
+ },
+ "LineComment": {
+ "match": "//.*",
+ "name": "comment.line.double-slash.powerquery"
+ },
+ "String": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.powerquery"
+ }
+ },
+ "end": "\"(?!\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.powerquery"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\"\"",
+ "name": "constant.character.escape.quote.powerquery"
+ },
+ {
+ "include": "#EscapeSequence"
+ }
+ ],
+ "name": "string.quoted.double.powerquery"
+ },
+ "QuotedIdentifier": {
+ "begin": "#\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.quotedidentifier.begin.powerquery"
+ }
+ },
+ "end": "\"(?!\")",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.quotedidentifier.end.powerquery"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\"\"",
+ "name": "constant.character.escape.quote.powerquery"
+ },
+ {
+ "include": "#EscapeSequence"
+ }
+ ],
+ "name": "entity.name.powerquery"
+ },
+ "EscapeSequence": {
+ "begin": "#\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.escapesequence.begin.powerquery"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.escapesequence.end.powerquery"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(#|\\h{4}|\\h{8}|cr|lf|tab)(?:,(#|\\h{4}|\\h{8}|cr|lf|tab))*"
+ },
+ {
+ "match": "[^\\)]",
+ "name": "invalid.illegal.escapesequence.powerquery"
+ }
+ ],
+ "name": "constant.character.escapesequence.powerquery"
+ },
+ "LogicalConstant": {
+ "match": "\\b(true|false)\\b",
+ "name": "constant.language.logical.powerquery"
+ },
+ "NullConstant": {
+ "match": "\\b(null)\\b",
+ "name": "constant.language.null.powerquery"
+ },
+ "NumericConstant": {
+ "match": "(?<![\\d\\w])(#infinity|#nan)\\b",
+ "captures": {
+ "1": {
+ "name": "constant.language.numeric.float.powerquery"
+ }
+ }
+ },
+ "HexNumber": {
+ "match": "0(x|X)\\h+",
+ "name": "constant.numeric.integer.hexadecimal.powerquery"
+ },
+ "IntNumber": {
+ "match": "\\b(\\d+)\\b",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.integer.powerquery"
+ }
+ }
+ },
+ "DecimalNumber": {
+ "match": "(?<![\\d\\w])(\\d*\\.\\d+)\\b",
+ "name": "constant.numeric.decimal.powerquery"
+ },
+ "FloatNumber": {
+ "match": "(\\d*\\.)?\\d+(e|E)(\\+|-)?\\d+",
+ "name": "constant.numeric.float.powerquery"
+ },
+ "InclusiveIdentifier": {
+ "match": "@",
+ "captures": {
+ "0": {
+ "name": "inclusiveidentifier.powerquery"
+ }
+ }
+ },
+ "Identifier": {
+ "match": "(?x:(?<![\\._\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Nd}\\p{Pc}\\p{Mn}\\p{Mc}\\p{Cf}])(@?)([_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}][_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Nd}\\p{Pc}\\p{Mn}\\p{Mc}\\p{Cf}]*(?:\\.[_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}][_\\p{Lu}\\p{Ll}\\p{Lt}\\p{Lm}\\p{Lo}\\p{Nl}\\p{Nd}\\p{Pc}\\p{Mn}\\p{Mc}\\p{Cf}])*)\\b)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.inclusiveidentifier.powerquery"
+ },
+ "2": {
+ "name": "entity.name.powerquery"
+ }
+ }
+ },
+ "Operators": {
+ "match": "(=>)|(=)|(<>|<|>|<=|>=)|(&)|(\\+|-|\\*|\\/)|(!)|(\\?)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.function.powerquery"
+ },
+ "2": {
+ "name": "keyword.operator.assignment-or-comparison.powerquery"
+ },
+ "3": {
+ "name": "keyword.operator.comparison.powerquery"
+ },
+ "4": {
+ "name": "keyword.operator.combination.powerquery"
+ },
+ "5": {
+ "name": "keyword.operator.arithmetic.powerquery"
+ },
+ "6": {
+ "name": "keyword.operator.sectionaccess.powerquery"
+ },
+ "7": {
+ "name": "keyword.operator.optional.powerquery"
+ }
+ }
+ },
+ "DotOperators": {
+ "match": "(?<!\\.)(?:(\\.\\.\\.)|(\\.\\.))(?!\\.)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.ellipsis.powerquery"
+ },
+ "2": {
+ "name": "keyword.operator.list.powerquery"
+ }
+ }
+ },
+ "RecordExpression": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.brackets.begin.powerquery"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.brackets.end.powerquery"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ],
+ "contentName": "meta.recordexpression.powerquery"
+ },
+ "Punctuation": {
+ "match": "(,)|(\\()|(\\))|({)|(})",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.powerquery"
+ },
+ "2": {
+ "name": "punctuation.section.parens.begin.powerquery"
+ },
+ "3": {
+ "name": "punctuation.section.parens.end.powerquery"
+ },
+ "4": {
+ "name": "punctuation.section.braces.begin.powerquery"
+ },
+ "5": {
+ "name": "punctuation.section.braces.end.powerquery"
+ }
+ }
+ },
+ "ImplicitVariable": {
+ "match": "\\b_\\b",
+ "name": "keyword.operator.implicitvariable.powerquery"
+ },
+ "IntrinsicVariable": {
+ "match": "(?<![\\d\\w])(#sections|#shared)\\b",
+ "captures": {
+ "1": {
+ "name": "constant.language.intrinsicvariable.powerquery"
+ }
+ }
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/powershell.tmLanguage.json b/node_modules/shiki/languages/powershell.tmLanguage.json
new file mode 100644
index 0000000..61d40c6
--- /dev/null
+++ b/node_modules/shiki/languages/powershell.tmLanguage.json
@@ -0,0 +1,1029 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/PowerShell/EditorSyntax/blob/master/PowerShellSyntax.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/PowerShell/EditorSyntax/commit/742f0b5d4b60f5930c0b47fcc1f646860521296e",
+ "name": "powershell",
+ "scopeName": "source.powershell",
+ "patterns": [
+ {
+ "begin": "<#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.block.begin.powershell"
+ }
+ },
+ "end": "#>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.block.end.powershell"
+ }
+ },
+ "name": "comment.block.powershell",
+ "patterns": [
+ {
+ "include": "#commentEmbeddedDocs"
+ }
+ ]
+ },
+ {
+ "match": "[2-6]>&1|>>|>|<<|<|>|>\\||[1-6]>|[1-6]>>",
+ "name": "keyword.operator.redirection.powershell"
+ },
+ {
+ "include": "#commands"
+ },
+ {
+ "include": "#commentLine"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#subexpression"
+ },
+ {
+ "include": "#function"
+ },
+ {
+ "include": "#attribute"
+ },
+ {
+ "include": "#UsingDirective"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#hashtable"
+ },
+ {
+ "include": "#doubleQuotedString"
+ },
+ {
+ "include": "#scriptblock"
+ },
+ {
+ "comment": "Needed to parse stuff correctly in 'argument mode'. (See about_parsing.)",
+ "include": "#doubleQuotedStringEscapes"
+ },
+ {
+ "begin": "['\\x{2018}-\\x{201B}]",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.powershell"
+ }
+ },
+ "end": "['\\x{2018}-\\x{201B}]",
+ "applyEndPatternLast": true,
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.powershell"
+ }
+ },
+ "name": "string.quoted.single.powershell",
+ "patterns": [
+ {
+ "match": "['\\x{2018}-\\x{201B}]{2}",
+ "name": "constant.character.escape.powershell"
+ }
+ ]
+ },
+ {
+ "begin": "(@[\"\\x{201C}-\\x{201E}])\\s*$",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.powershell"
+ }
+ },
+ "end": "^[\"\\x{201C}-\\x{201E}]@",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.powershell"
+ }
+ },
+ "name": "string.quoted.double.heredoc.powershell",
+ "patterns": [
+ {
+ "include": "#variableNoProperty"
+ },
+ {
+ "include": "#doubleQuotedStringEscapes"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "(@['\\x{2018}-\\x{201B}])\\s*$",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.powershell"
+ }
+ },
+ "end": "^['\\x{2018}-\\x{201B}]@",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.powershell"
+ }
+ },
+ "name": "string.quoted.single.heredoc.powershell"
+ },
+ {
+ "include": "#numericConstant"
+ },
+ {
+ "begin": "(@)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.array.begin.powershell"
+ },
+ "2": {
+ "name": "punctuation.section.group.begin.powershell"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.group.end.powershell"
+ }
+ },
+ "name": "meta.group.array-expression.powershell",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "((\\$))(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.substatement.powershell"
+ },
+ "2": {
+ "name": "punctuation.definition.subexpression.powershell"
+ },
+ "3": {
+ "name": "punctuation.section.group.begin.powershell"
+ }
+ },
+ "comment": "TODO: move to repo; make recursive.",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.group.end.powershell"
+ }
+ },
+ "name": "meta.group.complex.subexpression.powershell",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "match": "(\\b(([A-Za-z0-9\\-_\\.]+)\\.(?i:exe|com|cmd|bat))\\b)",
+ "name": "support.function.powershell"
+ },
+ {
+ "match": "(?<!\\w|-|\\.)((?i:begin|break|catch|clean|continue|data|default|define|do|dynamicparam|else|elseif|end|exit|finally|for|from|if|in|inlinescript|parallel|param|process|return|sequence|switch|throw|trap|try|until|var|while)|%|\\?)(?!\\w)",
+ "name": "keyword.control.powershell"
+ },
+ {
+ "match": "(?<!\\w|-|[^\\)]\\.)((?i:(foreach|where)(?!-object))|%|\\?)(?!\\w)",
+ "name": "keyword.control.powershell"
+ },
+ {
+ "begin": "(?<!\\w)(--%)(?!\\w)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.powershell"
+ }
+ },
+ "end": "$",
+ "patterns": [
+ {
+ "match": ".+",
+ "name": "string.unquoted.powershell"
+ }
+ ],
+ "comment": "This should be moved to the repository at some point."
+ },
+ {
+ "comment": "This should only be relevant inside a class but will require a rework of how classes are matched. This is a temp fix.",
+ "match": "(?<!\\w)((?i:hidden|static))(?!\\w)",
+ "name": "storage.modifier.powershell"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.powershell"
+ },
+ "2": {
+ "name": "entity.name.function"
+ }
+ },
+ "comment": "capture should be entity.name.type, but it doesn't provide a good color in the default schema.",
+ "match": "(?<!\\w|-)((?i:class)|%|\\?)(?:\\s)+((?:\\p{L}|\\d|_|-|)+)\\b"
+ },
+ {
+ "match": "(?<!\\w)-(?i:is(?:not)?|as)\\b",
+ "name": "keyword.operator.comparison.powershell"
+ },
+ {
+ "match": "(?<!\\w)-(?i:[ic]?(?:eq|ne|[gl][te]|(?:not)?(?:like|match|contains|in)|replace))(?!\\p{L})",
+ "name": "keyword.operator.comparison.powershell"
+ },
+ {
+ "match": "(?<!\\w)-(?i:join|split)(?!\\p{L})|!",
+ "name": "keyword.operator.unary.powershell"
+ },
+ {
+ "match": "(?<!\\w)-(?i:and|or|not|xor)(?!\\p{L})|!",
+ "name": "keyword.operator.logical.powershell"
+ },
+ {
+ "match": "(?<!\\w)-(?i:band|bor|bnot|bxor|shl|shr)(?!\\p{L})",
+ "name": "keyword.operator.bitwise.powershell"
+ },
+ {
+ "match": "(?<!\\w)-(?i:f)(?!\\p{L})",
+ "name": "keyword.operator.string-format.powershell"
+ },
+ {
+ "match": "[+%*/-]?=|[+/*%-]",
+ "name": "keyword.operator.assignment.powershell"
+ },
+ {
+ "match": "\\|{2}|&{2}|;",
+ "name": "punctuation.terminator.statement.powershell"
+ },
+ {
+ "match": "&|(?<!\\w)\\.(?= )|`|,|\\|",
+ "name": "keyword.operator.other.powershell"
+ },
+ {
+ "comment": "This is very imprecise, is there a syntax for 'must come after...' ",
+ "match": "(?<!\\s|^)\\.\\.(?=\\-?\\d|\\(|\\$)",
+ "name": "keyword.operator.range.powershell"
+ }
+ ],
+ "repository": {
+ "commentLine": {
+ "begin": "(?<![`\\\\-])(#)#*",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.powershell"
+ }
+ },
+ "end": "$\\n?",
+ "name": "comment.line.powershell",
+ "patterns": [
+ {
+ "include": "#commentEmbeddedDocs"
+ },
+ {
+ "include": "#RequiresDirective"
+ }
+ ]
+ },
+ "attribute": {
+ "begin": "(\\[)\\s*\\b(?i)(cmdletbinding|alias|outputtype|parameter|validatenotnull|validatenotnullorempty|validatecount|validateset|allownull|allowemptycollection|allowemptystring|validatescript|validaterange|validatepattern|validatelength|supportswildcards)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.bracket.begin.powershell"
+ },
+ "2": {
+ "name": "support.function.attribute.powershell"
+ }
+ },
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.bracket.end.powershell"
+ }
+ },
+ "name": "meta.attribute.powershell",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.group.begin.powershell"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.group.end.powershell"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ },
+ {
+ "match": "(?i)\\b(mandatory|valuefrompipeline|valuefrompipelinebypropertyname|valuefromremainingarguments|position|parametersetname|defaultparametersetname|supportsshouldprocess|supportspaging|positionalbinding|helpuri|confirmimpact|helpmessage)\\b(?:\\s+)?(=)?",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.attribute.powershell"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.powershell"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "commands": {
+ "patterns": [
+ {
+ "comment": "Verb-Noun pattern:",
+ "match": "(?:(\\p{L}|\\d|_|-|\\\\|\\:)*\\\\)?\\b(?i:Add|Approve|Assert|Backup|Block|Build|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Deploy|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Mount|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Write)\\-.+?(?:\\.(?i:exe|cmd|bat|ps1))?\\b",
+ "name": "support.function.powershell"
+ },
+ {
+ "comment": "Builtin cmdlets with reserved verbs",
+ "match": "(?<!\\w)(?i:foreach-object)(?!\\w)",
+ "name": "support.function.powershell"
+ },
+ {
+ "comment": "Builtin cmdlets with reserved verbs",
+ "match": "(?<!\\w)(?i:where-object)(?!\\w)",
+ "name": "support.function.powershell"
+ },
+ {
+ "comment": "Builtin cmdlets with reserved verbs",
+ "match": "(?<!\\w)(?i:sort-object)(?!\\w)",
+ "name": "support.function.powershell"
+ },
+ {
+ "comment": "Builtin cmdlets with reserved verbs",
+ "match": "(?<!\\w)(?i:tee-object)(?!\\w)",
+ "name": "support.function.powershell"
+ }
+ ]
+ },
+ "commentEmbeddedDocs": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "constant.string.documentation.powershell"
+ },
+ "2": {
+ "name": "keyword.operator.documentation.powershell"
+ }
+ },
+ "comment": "these embedded doc keywords do not support arguments, must be the only thing on the line",
+ "match": "(?:^|\\G)(?i:\\s*(\\.)(COMPONENT|DESCRIPTION|EXAMPLE|FUNCTIONALITY|INPUTS|LINK|NOTES|OUTPUTS|ROLE|SYNOPSIS))\\s*$",
+ "name": "comment.documentation.embedded.powershell"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "constant.string.documentation.powershell"
+ },
+ "2": {
+ "name": "keyword.operator.documentation.powershell"
+ },
+ "3": {
+ "name": "keyword.operator.documentation.powershell"
+ }
+ },
+ "comment": "these embedded doc keywords require arguments though the type required may be inconsistent, they may not all be able to use the same argument match",
+ "match": "(?:^|\\G)(?i:\\s*(\\.)(EXTERNALHELP|FORWARDHELP(?:CATEGORY|TARGETNAME)|PARAMETER|REMOTEHELPRUNSPACE))\\s+(.+?)\\s*$",
+ "name": "comment.documentation.embedded.powershell"
+ }
+ ]
+ },
+ "doubleQuotedStringEscapes": {
+ "patterns": [
+ {
+ "match": "`[`0abefnrtv'\"\\x{2018}-\\x{201E}$]",
+ "name": "constant.character.escape.powershell"
+ },
+ {
+ "include": "#unicodeEscape"
+ }
+ ]
+ },
+ "unicodeEscape": {
+ "comment": "`u{xxxx} added in PowerShell 6.0",
+ "patterns": [
+ {
+ "match": "`u\\{(?:(?:10)?([0-9a-fA-F]){1,4}|0?\\g<1>{1,5})}",
+ "name": "constant.character.escape.powershell"
+ },
+ {
+ "match": "`u(?:\\{[0-9a-fA-F]{,6}.)?",
+ "name": "invalid.character.escape.powershell"
+ }
+ ]
+ },
+ "function": {
+ "begin": "^(?:\\s*+)(?i)(function|filter|configuration|workflow)\\s+(?:(global|local|script|private):)?((?:\\p{L}|\\d|_|-|\\.)+)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.function.powershell"
+ },
+ "1": {
+ "name": "storage.type.powershell"
+ },
+ "2": {
+ "name": "storage.modifier.scope.powershell"
+ },
+ "3": {
+ "name": "entity.name.function.powershell"
+ }
+ },
+ "end": "(?=\\{|\\()",
+ "patterns": [
+ {
+ "include": "#commentLine"
+ }
+ ]
+ },
+ "subexpression": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.group.begin.powershell"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.group.end.powershell"
+ }
+ },
+ "name": "meta.group.simple.subexpression.powershell",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "interpolation": {
+ "begin": "(((\\$)))((\\())",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.substatement.powershell"
+ },
+ "2": {
+ "name": "punctuation.definition.substatement.powershell"
+ },
+ "3": {
+ "name": "punctuation.section.embedded.substatement.begin.powershell"
+ },
+ "4": {
+ "name": "punctuation.section.group.begin.powershell"
+ },
+ "5": {
+ "name": "punctuation.section.embedded.substatement.begin.powershell"
+ }
+ },
+ "contentName": "interpolated.complex.source.powershell",
+ "end": "(\\))",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.group.end.powershell"
+ },
+ "1": {
+ "name": "punctuation.section.embedded.substatement.end.powershell"
+ }
+ },
+ "name": "meta.embedded.substatement.powershell",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "numericConstant": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "constant.numeric.hex.powershell"
+ },
+ "2": {
+ "name": "keyword.other.powershell"
+ }
+ },
+ "match": "(?<!\\w)([-+]?0(?:x|X)[0-9a-fA-F_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "constant.numeric.integer.powershell"
+ },
+ "2": {
+ "name": "keyword.other.powershell"
+ }
+ },
+ "match": "(?<!\\w)([-+]?(?:[0-9_]+)?\\.[0-9_]+(?:(?:e|E)[0-9]+)?(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "constant.numeric.octal.powershell"
+ },
+ "2": {
+ "name": "keyword.other.powershell"
+ }
+ },
+ "match": "(?<!\\w)([-+]?0(?:b|B)[01_]+(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "constant.numeric.integer.powershell"
+ },
+ "2": {
+ "name": "keyword.other.powershell"
+ }
+ },
+ "match": "(?<!\\w)([-+]?[0-9_]+(?:e|E)(?:[0-9_])?+(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "constant.numeric.integer.powershell"
+ },
+ "2": {
+ "name": "keyword.other.powershell"
+ }
+ },
+ "match": "(?<!\\w)([-+]?[0-9_]+\\.(?:e|E)(?:[0-9_])?+(?:F|f|D|d|M|m)?)((?i:[kmgtp]b)?)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "constant.numeric.integer.powershell"
+ },
+ "2": {
+ "name": "keyword.other.powershell"
+ }
+ },
+ "match": "(?<!\\w)([-+]?[0-9_]+[\\.]?(?:F|f|D|d|M|m))((?i:[kmgtp]b)?)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "constant.numeric.integer.powershell"
+ },
+ "2": {
+ "name": "keyword.other.powershell"
+ }
+ },
+ "match": "(?<!\\w)([-+]?[0-9_]+[\\.]?(?:U|u|L|l|UL|Ul|uL|ul|LU|Lu|lU|lu)?)((?i:[kmgtp]b)?)\\b"
+ }
+ ]
+ },
+ "scriptblock": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.braces.begin.powershell"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.braces.end.powershell"
+ }
+ },
+ "name": "meta.scriptblock.powershell",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "type": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.bracket.begin.powershell"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.bracket.end.powershell"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?!\\d+|\\.)(?:\\p{L}|\\p{N}|\\.)+",
+ "name": "storage.type.powershell"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "variable": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "constant.language.powershell"
+ },
+ "1": {
+ "name": "punctuation.definition.variable.powershell"
+ }
+ },
+ "comment": "These are special constants.",
+ "match": "(\\$)(?i:(False|Null|True))\\b"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "support.constant.variable.powershell"
+ },
+ "1": {
+ "name": "punctuation.definition.variable.powershell"
+ },
+ "3": {
+ "name": "variable.other.member.powershell"
+ }
+ },
+ "comment": "These are the other built-in constants.",
+ "match": "(\\$)(?i:(Error|ExecutionContext|Host|Home|PID|PsHome|PsVersionTable|ShellID))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?\\b"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "support.variable.automatic.powershell"
+ },
+ "1": {
+ "name": "punctuation.definition.variable.powershell"
+ },
+ "3": {
+ "name": "variable.other.member.powershell"
+ }
+ },
+ "comment": "Automatic variables are not constants, but they are read-only. In monokai (default) color schema support.variable doesn't have color, so we use constant.",
+ "match": "(\\$)((?:[$^?])|(?i:_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This)\\b)((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "variable.language.powershell"
+ },
+ "1": {
+ "name": "punctuation.definition.variable.powershell"
+ },
+ "3": {
+ "name": "variable.other.member.powershell"
+ }
+ },
+ "comment": "Style preference variables as language variables so that they stand out.",
+ "match": "(\\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|InformationPreference|LogCommandHealthEvent|LogCommandLifecycleEvent|LogEngineHealthEvent|LogEngineLifecycleEvent|LogProviderHealthEvent|LogProviderLifecycleEvent|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|PSCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoLoadingPreference|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|ProgressPreference|VerbosePreference|WarningPreference|WhatIfPreference))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?\\b"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "variable.other.readwrite.powershell"
+ },
+ "1": {
+ "name": "punctuation.definition.variable.powershell"
+ },
+ "2": {
+ "name": "storage.modifier.scope.powershell"
+ },
+ "4": {
+ "name": "variable.other.member.powershell"
+ }
+ },
+ "match": "(?i:(\\$|@)(global|local|private|script|using|workflow):((?:\\p{L}|\\d|_)+))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "variable.other.readwrite.powershell"
+ },
+ "1": {
+ "name": "punctuation.definition.variable.powershell"
+ },
+ "2": {
+ "name": "punctuation.section.braces.begin.powershell"
+ },
+ "3": {
+ "name": "storage.modifier.scope.powershell"
+ },
+ "5": {
+ "name": "punctuation.section.braces.end.powershell"
+ },
+ "6": {
+ "name": "variable.other.member.powershell"
+ }
+ },
+ "match": "(?i:(\\$)(\\{)(global|local|private|script|using|workflow):([^}]*[^}`])(\\}))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "variable.other.readwrite.powershell"
+ },
+ "1": {
+ "name": "punctuation.definition.variable.powershell"
+ },
+ "2": {
+ "name": "support.variable.drive.powershell"
+ },
+ "4": {
+ "name": "variable.other.member.powershell"
+ }
+ },
+ "match": "(?i:(\\$|@)((?:\\p{L}|\\d|_)+:)?((?:\\p{L}|\\d|_)+))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "variable.other.readwrite.powershell"
+ },
+ "1": {
+ "name": "punctuation.definition.variable.powershell"
+ },
+ "2": {
+ "name": "punctuation.section.braces.begin.powershell"
+ },
+ "3": {
+ "name": "support.variable.drive.powershell"
+ },
+ "5": {
+ "name": "punctuation.section.braces.end.powershell"
+ },
+ "6": {
+ "name": "variable.other.member.powershell"
+ }
+ },
+ "match": "(?i:(\\$)(\\{)((?:\\p{L}|\\d|_)+:)?([^}]*[^}`])(\\}))((?:\\.(?:\\p{L}|\\d|_)+)*\\b)?"
+ }
+ ]
+ },
+ "UsingDirective": {
+ "match": "(?<!\\w)(?i:(using))\\s+(?i:(namespace|module))\\s+(?i:((?:\\w+(?:\\.)?)+))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.using.powershell"
+ },
+ "2": {
+ "name": "keyword.other.powershell"
+ },
+ "3": {
+ "name": "variable.parameter.powershell"
+ }
+ }
+ },
+ "RequiresDirective": {
+ "begin": "(?<=#)(?i:(requires))\\s",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.requires.powershell"
+ }
+ },
+ "end": "$",
+ "name": "meta.requires.powershell",
+ "patterns": [
+ {
+ "match": "\\-(?i:Modules|PSSnapin|RunAsAdministrator|ShellId|Version|Assembly|PSEdition)",
+ "name": "keyword.other.powershell"
+ },
+ {
+ "match": "(?<!-)\\b\\p{L}+|\\d+(?:\\.\\d+)*",
+ "name": "variable.parameter.powershell"
+ },
+ {
+ "include": "#hashtable"
+ }
+ ]
+ },
+ "variableNoProperty": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "constant.language.powershell"
+ },
+ "1": {
+ "name": "punctuation.definition.variable.powershell"
+ }
+ },
+ "comment": "These are special constants.",
+ "match": "(\\$)(?i:(False|Null|True))\\b"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "support.constant.variable.powershell"
+ },
+ "1": {
+ "name": "punctuation.definition.variable.powershell"
+ },
+ "3": {
+ "name": "variable.other.member.powershell"
+ }
+ },
+ "comment": "These are the other built-in constants.",
+ "match": "(\\$)(?i:(Error|ExecutionContext|Host|Home|PID|PsHome|PsVersionTable|ShellID))\\b"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "support.variable.automatic.powershell"
+ },
+ "1": {
+ "name": "punctuation.definition.variable.powershell"
+ },
+ "3": {
+ "name": "variable.other.member.powershell"
+ }
+ },
+ "comment": "Automatic variables are not constants, but they are read-only...",
+ "match": "(\\$)((?:[$^?])|(?i:_|Args|ConsoleFileName|Event|EventArgs|EventSubscriber|ForEach|Input|LastExitCode|Matches|MyInvocation|NestedPromptLevel|Profile|PSBoundParameters|PsCmdlet|PsCulture|PSDebugContext|PSItem|PSCommandPath|PSScriptRoot|PsUICulture|Pwd|Sender|SourceArgs|SourceEventArgs|StackTrace|Switch|This)\\b)"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "variable.language.powershell"
+ },
+ "1": {
+ "name": "punctuation.definition.variable.powershell"
+ },
+ "3": {
+ "name": "variable.other.member.powershell"
+ }
+ },
+ "comment": "Style preference variables as language variables so that they stand out.",
+ "match": "(\\$)(?i:(ConfirmPreference|DebugPreference|ErrorActionPreference|ErrorView|FormatEnumerationLimit|InformationPreference|LogCommandHealthEvent|LogCommandLifecycleEvent|LogEngineHealthEvent|LogEngineLifecycleEvent|LogProviderHealthEvent|LogProviderLifecycleEvent|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount|MaximumHistoryCount|MaximumVariableCount|OFS|OutputEncoding|PSCulture|PSDebugContext|PSDefaultParameterValues|PSEmailServer|PSItem|PSModuleAutoLoadingPreference|PSModuleAutoloadingPreference|PSSenderInfo|PSSessionApplicationName|PSSessionConfigurationName|PSSessionOption|ProgressPreference|VerbosePreference|WarningPreference|WhatIfPreference))\\b"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "variable.other.readwrite.powershell"
+ },
+ "1": {
+ "name": "punctuation.definition.variable.powershell"
+ },
+ "2": {
+ "name": "storage.modifier.scope.powershell"
+ },
+ "4": {
+ "name": "variable.other.member.powershell"
+ }
+ },
+ "match": "(?i:(\\$)(global|local|private|script|using|workflow):((?:\\p{L}|\\d|_)+))"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "variable.other.readwrite.powershell"
+ },
+ "1": {
+ "name": "punctuation.definition.variable.powershell"
+ },
+ "2": {
+ "name": "storage.modifier.scope.powershell"
+ },
+ "4": {
+ "name": "keyword.other.powershell"
+ },
+ "5": {
+ "name": "variable.other.member.powershell"
+ }
+ },
+ "match": "(?i:(\\$)(\\{)(global|local|private|script|using|workflow):([^}]*[^}`])(\\}))"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "variable.other.readwrite.powershell"
+ },
+ "1": {
+ "name": "punctuation.definition.variable.powershell"
+ },
+ "2": {
+ "name": "support.variable.drive.powershell"
+ },
+ "4": {
+ "name": "variable.other.member.powershell"
+ }
+ },
+ "match": "(?i:(\\$)((?:\\p{L}|\\d|_)+:)?((?:\\p{L}|\\d|_)+))"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "variable.other.readwrite.powershell"
+ },
+ "1": {
+ "name": "punctuation.definition.variable.powershell"
+ },
+ "2": {
+ "name": "punctuation.section.braces.begin"
+ },
+ "3": {
+ "name": "support.variable.drive.powershell"
+ },
+ "5": {
+ "name": "punctuation.section.braces.end"
+ }
+ },
+ "match": "(?i:(\\$)(\\{)((?:\\p{L}|\\d|_)+:)?([^}]*[^}`])(\\}))"
+ }
+ ]
+ },
+ "hashtable": {
+ "begin": "(@)(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.hashtable.begin.powershell"
+ },
+ "2": {
+ "name": "punctuation.section.braces.begin.powershell"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.braces.end.powershell"
+ }
+ },
+ "name": "meta.hashtable.powershell",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.powershell"
+ },
+ "2": {
+ "name": "variable.other.readwrite.powershell"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.powershell"
+ },
+ "4": {
+ "name": "keyword.operator.assignment.powershell"
+ }
+ },
+ "match": "\\b((?:\\'|\\\")?)(\\w+)((?:\\'|\\\")?)(?:\\s+)?(=)(?:\\s+)?",
+ "name": "meta.hashtable.assignment.powershell"
+ },
+ {
+ "include": "#scriptblock"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "doubleQuotedString": {
+ "begin": "[\"\\x{201C}-\\x{201E}]",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.powershell"
+ }
+ },
+ "end": "[\"\\x{201C}-\\x{201E}]",
+ "applyEndPatternLast": true,
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.powershell"
+ }
+ },
+ "name": "string.quoted.double.powershell",
+ "patterns": [
+ {
+ "match": "(?i)\\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,64}\\b"
+ },
+ {
+ "include": "#variableNoProperty"
+ },
+ {
+ "include": "#doubleQuotedStringEscapes"
+ },
+ {
+ "match": "[\"\\x{201C}-\\x{201E}]{2}",
+ "name": "constant.character.escape.powershell"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "match": "`\\s*$",
+ "name": "keyword.other.powershell"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/prisma.tmLanguage.json b/node_modules/shiki/languages/prisma.tmLanguage.json
new file mode 100644
index 0000000..b60095a
--- /dev/null
+++ b/node_modules/shiki/languages/prisma.tmLanguage.json
@@ -0,0 +1,441 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "name": "prisma",
+ "scopeName": "source.prisma",
+ "fileTypes": ["prisma"],
+ "patterns": [
+ {
+ "include": "#triple_comment"
+ },
+ {
+ "include": "#double_comment"
+ },
+ {
+ "include": "#model_block_definition"
+ },
+ {
+ "include": "#config_block_definition"
+ },
+ {
+ "include": "#enum_block_definition"
+ },
+ {
+ "include": "#type_definition"
+ }
+ ],
+ "repository": {
+ "model_block_definition": {
+ "begin": "^\\s*(model|type|view)\\s+([A-Za-z][\\w]*)\\s*({)",
+ "name": "source.prisma.embedded.source",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.model.prisma"
+ },
+ "2": {
+ "name": "entity.name.type.model.prisma"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.prisma"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#triple_comment"
+ },
+ {
+ "include": "#double_comment"
+ },
+ {
+ "include": "#field_definition"
+ }
+ ],
+ "end": "\\s*\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.prisma"
+ }
+ }
+ },
+ "enum_block_definition": {
+ "begin": "^\\s*(enum)\\s+([A-Za-z][\\w]*)\\s+({)",
+ "name": "source.prisma.embedded.source",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.enum.prisma"
+ },
+ "2": {
+ "name": "entity.name.type.enum.prisma"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.prisma"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#triple_comment"
+ },
+ {
+ "include": "#double_comment"
+ },
+ {
+ "include": "#enum_value_definition"
+ }
+ ],
+ "end": "\\s*\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.prisma"
+ }
+ }
+ },
+ "config_block_definition": {
+ "begin": "^\\s*(generator|datasource)\\s+([A-Za-z][\\w]*)\\s+({)",
+ "name": "source.prisma.embedded.source",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.config.prisma"
+ },
+ "2": {
+ "name": "entity.name.type.config.prisma"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.prisma"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#triple_comment"
+ },
+ {
+ "include": "#double_comment"
+ },
+ {
+ "include": "#assignment"
+ }
+ ],
+ "end": "\\s*\\}",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.prisma"
+ }
+ }
+ },
+ "assignment": {
+ "patterns": [
+ {
+ "begin": "^\\s*(\\w+)\\s*(=)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.assignment.prisma"
+ },
+ "2": {
+ "name": "keyword.operator.terraform"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#value"
+ },
+ {
+ "include": "#double_comment_inline"
+ }
+ ],
+ "end": "\\n"
+ }
+ ]
+ },
+ "field_definition": {
+ "name": "scalar.field",
+ "patterns": [
+ {
+ "match": "^\\s*(\\w+)(\\s*:)?\\s+((?!(?:Int|String|DateTime|Bytes|Decimal|Float|Json|Boolean)\\b)\\b\\w+)?(Int|String|DateTime|Bytes|Decimal|Float|Json|Boolean)?(\\[\\])?(\\?)?(\\!)?",
+ "captures": {
+ "1": {
+ "name": "variable.other.assignment.prisma"
+ },
+ "2": {
+ "name": "invalid.illegal.colon.prisma"
+ },
+ "3": {
+ "name": "variable.language.relations.prisma"
+ },
+ "4": {
+ "name": "support.type.primitive.prisma"
+ },
+ "5": {
+ "name": "keyword.operator.list_type.prisma"
+ },
+ "6": {
+ "name": "keyword.operator.optional_type.prisma"
+ },
+ "7": {
+ "name": "invalid.illegal.required_type.prisma"
+ }
+ }
+ },
+ {
+ "include": "#attribute_with_arguments"
+ },
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "type_definition": {
+ "patterns": [
+ {
+ "match": "^\\s*(type)\\s+(\\w+)\\s*=\\s*(\\w+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.type.prisma"
+ },
+ "2": {
+ "name": "entity.name.type.type.prisma"
+ },
+ "3": {
+ "name": "support.type.primitive.prisma"
+ }
+ }
+ },
+ {
+ "include": "#attribute_with_arguments"
+ },
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "enum_value_definition": {
+ "patterns": [
+ {
+ "match": "^\\s*(\\w+)\\s*",
+ "captures": {
+ "1": {
+ "name": "variable.other.assignment.prisma"
+ }
+ }
+ },
+ {
+ "include": "#attribute_with_arguments"
+ },
+ {
+ "include": "#attribute"
+ }
+ ]
+ },
+ "attribute_with_arguments": {
+ "name": "source.prisma.attribute.with_arguments",
+ "begin": "(@@?[\\w\\.]+)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.attribute.prisma"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.prisma"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#named_argument"
+ },
+ {
+ "include": "#value"
+ }
+ ],
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.prisma"
+ }
+ }
+ },
+ "attribute": {
+ "name": "source.prisma.attribute",
+ "match": "(@@?[\\w\\.]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.attribute.prisma"
+ }
+ }
+ },
+ "array": {
+ "name": "source.prisma.array",
+ "begin": "\\[",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.prisma"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#value"
+ }
+ ],
+ "end": "\\]",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.prisma"
+ }
+ }
+ },
+ "value": {
+ "name": "source.prisma.value",
+ "patterns": [
+ {
+ "include": "#array"
+ },
+ {
+ "include": "#functional"
+ },
+ {
+ "include": "#literal"
+ }
+ ]
+ },
+ "functional": {
+ "name": "source.prisma.functional",
+ "begin": "(\\w+)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.functional.prisma"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.prisma"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#value"
+ }
+ ],
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.prisma"
+ }
+ }
+ },
+ "literal": {
+ "name": "source.prisma.literal",
+ "patterns": [
+ {
+ "include": "#boolean"
+ },
+ {
+ "include": "#number"
+ },
+ {
+ "include": "#double_quoted_string"
+ },
+ {
+ "include": "#identifier"
+ }
+ ]
+ },
+ "identifier": {
+ "patterns": [
+ {
+ "match": "\\b(\\w)+\\b",
+ "name": "support.constant.constant.prisma"
+ }
+ ]
+ },
+ "map_key": {
+ "name": "source.prisma.key",
+ "patterns": [
+ {
+ "match": "(\\w+)\\s*(:)\\s*",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.key.prisma"
+ },
+ "2": {
+ "name": "punctuation.definition.separator.key-value.prisma"
+ }
+ }
+ }
+ ]
+ },
+ "named_argument": {
+ "name": "source.prisma.named_argument",
+ "patterns": [
+ {
+ "include": "#map_key"
+ },
+ {
+ "include": "#value"
+ }
+ ]
+ },
+ "triple_comment": {
+ "begin": "///",
+ "end": "$\\n?",
+ "name": "comment.prisma"
+ },
+ "double_comment": {
+ "begin": "//",
+ "end": "$\\n?",
+ "name": "comment.prisma"
+ },
+ "double_comment_inline": {
+ "match": "//[^\\n]*",
+ "name": "comment.prisma"
+ },
+ "boolean": {
+ "match": "\\b(true|false)\\b",
+ "name": "constant.language.boolean.prisma"
+ },
+ "number": {
+ "match": "((0(x|X)[0-9a-fA-F]*)|(\\+|-)?\\b(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)([LlFfUuDdg]|UL|ul)?\\b",
+ "name": "constant.numeric.prisma"
+ },
+ "double_quoted_string": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "string.quoted.double.start.prisma"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "string.quoted.double.end.prisma"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string_interpolation"
+ },
+ {
+ "match": "([\\w\\-\\/\\._\\\\%@:\\?=]+)",
+ "name": "string.quoted.double.prisma"
+ }
+ ],
+ "name": "unnamed"
+ },
+ "string_interpolation": {
+ "patterns": [
+ {
+ "begin": "\\$\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.interpolation.start.prisma"
+ }
+ },
+ "end": "\\s*\\}",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.interpolation.end.prisma"
+ }
+ },
+ "name": "source.tag.embedded.source.prisma",
+ "patterns": [
+ {
+ "include": "#value"
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/prolog.tmLanguage.json b/node_modules/shiki/languages/prolog.tmLanguage.json
new file mode 100644
index 0000000..b871d35
--- /dev/null
+++ b/node_modules/shiki/languages/prolog.tmLanguage.json
@@ -0,0 +1,296 @@
+{
+ "comment": "This Source Code Form is subject to the terms of the Mozilla Public License,\nv. 2.0. If a copy of the MPL was not distributed with this file, You can obtain\none at http://mozilla.org/MPL/2.0/.",
+ "name": "prolog",
+ "scopeName": "source.prolog",
+ "fileTypes": ["pl", "pro"],
+ "uuid": "df89928b-6612-475a-b414-f319d9b98664",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "name": "meta.clause.body.prolog",
+ "begin": "(?<=:-)\\s*",
+ "end": "(\\.)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.clause.bodyend.prolog"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#builtin"
+ },
+ {
+ "include": "#controlandkeywords"
+ },
+ {
+ "include": "#atom"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "name": "meta.clause.body.prolog",
+ "match": "."
+ }
+ ]
+ },
+ {
+ "name": "meta.clause.head.prolog",
+ "begin": "^\\s*([a-z][a-zA-Z0-9_]*)(\\(?)(?=.*:-.*)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.clause.prolog"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin"
+ }
+ },
+ "end": "((\\)?))\\s*(:-)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end"
+ },
+ "3": {
+ "name": "keyword.control.clause.bodybegin.prolog"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#atom"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#constants"
+ }
+ ]
+ },
+ {
+ "name": "meta.dcg.head.prolog",
+ "begin": "^\\s*([a-z][a-zA-Z0-9_]*)(\\(?)(?=.*-->.*)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.dcg.prolog"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin"
+ }
+ },
+ "end": "((\\)?))\\s*(-->)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end"
+ },
+ "3": {
+ "name": "keyword.control.dcg.bodybegin.prolog"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#atom"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#constants"
+ }
+ ]
+ },
+ {
+ "name": "meta.dcg.body.prolog",
+ "begin": "(?<=-->)\\s*",
+ "end": "(\\.)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.dcg.bodyend.prolog"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#controlandkeywords"
+ },
+ {
+ "include": "#atom"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "name": "meta.dcg.body.prolog",
+ "match": "."
+ }
+ ]
+ },
+ {
+ "name": "meta.fact.prolog",
+ "begin": "^\\s*([a-zA-Z][a-zA-Z0-9_]*)(\\(?)(?!.*(:-|-->).*)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.fact.prolog"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin"
+ }
+ },
+ "end": "((\\)?))\\s*(\\.)(?!\\d+)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end"
+ },
+ "3": {
+ "name": "keyword.control.fact.end.prolog"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#atom"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#constants"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "atom": {
+ "patterns": [
+ {
+ "name": "constant.other.atom.simple.prolog",
+ "match": "(?<![a-zA-Z0-9_])[a-z][a-zA-Z0-9_]*(?!\\s*\\(|[a-zA-Z0-9_])"
+ },
+ {
+ "name": "constant.other.atom.quoted.prolog",
+ "match": "'.*?'"
+ },
+ {
+ "name": "constant.other.atom.emptylist.prolog",
+ "match": "\\[\\]"
+ }
+ ]
+ },
+ "builtin": {
+ "patterns": [
+ {
+ "name": "keyword.other",
+ "match": "\\b(op|nl|fail|dynamic|discontiguous|initialization|meta_predicate|module_transparent|multifile|public|thread_local|thread_initialization|volatile)\\b"
+ },
+ {
+ "name": "support.function.builtin.prolog",
+ "match": "\\b(abolish|abort|abs|absolute_file_name|access_file|acos|acosh|acyclic_term|add_import_module|append|apropos|arg|asin|asinh|assert|asserta|assertz|at_end_of_stream|at_halt|atan|atanh|atom|atom_chars|atom_codes|atom_concat|atom_length|atom_number|atom_prefix|atom_string|atom_to_stem_list|atom_to_term|atomic|atomic_concat|atomic_list_concat|atomics_to_string|attach_packs|attr_portray_hook|attr_unify_hook|attribute_goals|attvar|autoload|autoload_path|b_getval|b_set_dict|b_setval|bagof|begin_tests|between|blob|break|byte_count|call_dcg|call_residue_vars|callable|cancel_halt|catch|ceil|ceiling|char_code|char_conversion|char_type|character_count|chdir|chr_leash|chr_notrace|chr_show_store|chr_trace|clause|clause_property|close|close_dde_conversation|close_table|code_type|collation_key|compare|compare_strings|compile_aux_clauses|compile_predicates|compiling|compound|compound_name_arguments|compound_name_arity|consult|context_module|copy_predicate_clauses|copy_stream_data|copy_term|copy_term_nat|copysign|cos|cosh|cputime|create_prolog_flag|current_arithmetic_function|current_atom|current_blob|current_char_conversion|current_engine|current_flag|current_format_predicate|current_functor|current_input|current_key|current_locale|current_module|current_op|current_output|current_predicate|current_prolog_flag|current_signal|current_stream|current_trie|cyclic_term|date_time_stamp|date_time_value|day_of_the_week|dcg_translate_rule|dde_current_connection|dde_current_service|dde_execute|dde_poke|dde_register_service|dde_request|dde_unregister_service|debug|debugging|default_module|del_attr|del_attrs|del_dict|delete_directory|delete_file|delete_import_module|deterministic|dict_create|dict_pairs|dif|directory_files|divmod|doc_browser|doc_collect|doc_load_library|doc_server|double_metaphone|downcase_atom|dtd|dtd_property|duplicate_term|dwim_match|dwim_predicate|e|edit|encoding|engine_create|engine_fetch|engine_next|engine_next_reified|engine_post|engine_self|engine_yield|ensure_loaded|epsilon|erase|erf|erfc|eval|exception|exists_directory|exists_file|exists_source|exp|expand_answer|expand_file_name|expand_file_search_path|expand_goal|expand_query|expand_term|explain|fast_read|fast_term_serialized|fast_write|file_base_name|file_directory_name|file_name_extension|file_search_path|fill_buffer|find_chr_constraint|findall|findnsols|flag|float|float_fractional_part|float_integer_part|floor|flush_output|forall|format|format_predicate|format_time|free_dtd|free_sgml_parser|free_table|freeze|frozen|functor|garbage_collect|garbage_collect_atoms|garbage_collect_clauses|gdebug|get|get_attr|get_attrs|get_byte|get_char|get_code|get_dict|get_flag|get_sgml_parser|get_single_char|get_string_code|get_table_attribute|get_time|getbit|getenv|goal_expansion|ground|gspy|gtrace|guitracer|gxref|gzopen|halt|help|import_module|in_pce_thread|in_pce_thread_sync|in_table|include|inf|instance|integer|iri_xml_namespace|is_absolute_file_name|is_dict|is_engine|is_list|is_stream|is_thread|keysort|known_licenses|leash|length|lgamma|library_directory|license|line_count|line_position|list_strings|listing|load_dtd|load_files|load_html|load_rdf|load_sgml|load_structure|load_test_files|load_xml|locale_create|locale_destroy|locale_property|locale_sort|log|lsb|make|make_directory|make_library_index|max|memberchk|message_hook|message_property|message_queue_create|message_queue_destroy|message_queue_property|message_to_string|min|module|module_property|msb|msort|mutex_create|mutex_destroy|mutex_lock|mutex_property|mutex_statistics|mutex_trylock|mutex_unlock|name|nan|nb_current|nb_delete|nb_getval|nb_link_dict|nb_linkarg|nb_linkval|nb_set_dict|nb_setarg|nb_setval|new_dtd|new_order_table|new_sgml_parser|new_table|nl|nodebug|noguitracer|nonvar|noprotocol|normalize_space|nospy|nospyall|notrace|nth_clause|nth_integer_root_and_remainder|number|number_chars|number_codes|number_string|numbervars|odbc_close_statement|odbc_connect|odbc_current_connection|odbc_current_table|odbc_data_source|odbc_debug|odbc_disconnect|odbc_driver_connect|odbc_end_transaction|odbc_execute|odbc_fetch|odbc_free_statement|odbc_get_connection|odbc_prepare|odbc_query|odbc_set_connection|odbc_statistics|odbc_table_column|odbc_table_foreign_key|odbc_table_primary_key|odbc_type|on_signal|op|open|open_dde_conversation|open_dtd|open_null_stream|open_resource|open_string|open_table|order_table_mapping|parse_time|passed|pce_dispatch|pdt_install_console|peek_byte|peek_char|peek_code|peek_string|phrase|plus|popcount|porter_stem|portray|portray_clause|powm|predicate_property|predsort|prefix_string|print|print_message|print_message_lines|process_rdf|profile|profiler|project_attributes|prolog|prolog_choice_attribute|prolog_current_choice|prolog_current_frame|prolog_cut_to|prolog_debug|prolog_exception_hook|prolog_file_type|prolog_frame_attribute|prolog_ide|prolog_list_goal|prolog_load_context|prolog_load_file|prolog_nodebug|prolog_skip_frame|prolog_skip_level|prolog_stack_property|prolog_to_os_filename|prolog_trace_interception|prompt|protocol|protocola|protocolling|put|put_attr|put_attrs|put_byte|put_char|put_code|put_dict|qcompile|qsave_program|random|random_float|random_property|rational|rationalize|rdf_write_xml|read|read_clause|read_history|read_link|read_pending_chars|read_pending_codes|read_string|read_table_fields|read_table_record|read_table_record_data|read_term|read_term_from_atom|recorda|recorded|recordz|redefine_system_predicate|reexport|reload_library_index|rename_file|require|reset|reset_profiler|resource|retract|retractall|round|run_tests|running_tests|same_file|same_term|see|seeing|seek|seen|select_dict|set_end_of_stream|set_flag|set_input|set_locale|set_module|set_output|set_prolog_IO|set_prolog_flag|set_prolog_stack|set_random|set_sgml_parser|set_stream|set_stream_position|set_test_options|setarg|setenv|setlocale|setof|sgml_parse|shell|shift|show_coverage|show_profile|sign|sin|sinh|size_file|skip|sleep|sort|source_exports|source_file|source_file_property|source_location|split_string|spy|sqrt|stamp_date_time|statistics|stream_pair|stream_position_data|stream_property|string|string_chars|string_code|string_codes|string_concat|string_length|string_lower|string_upper|strip_module|style_check|sub_atom|sub_atom_icasechk|sub_string|subsumes_term|succ|suite|swritef|tab|table_previous_record|table_start_of_record|table_version|table_window|tan|tanh|tell|telling|term_attvars|term_expansion|term_hash|term_string|term_subsumer|term_to_atom|term_variables|test|test_report|text_to_string|thread_at_exit|thread_create|thread_detach|thread_exit|thread_get_message|thread_join|thread_message_hook|thread_peek_message|thread_property|thread_self|thread_send_message|thread_setconcurrency|thread_signal|thread_statistics|throw|time|time_file|tmp_file|tmp_file_stream|tokenize_atom|told|trace|tracing|trie_destroy|trie_gen|trie_insert|trie_insert_new|trie_lookup|trie_new|trie_property|trie_term|trim_stacks|truncate|tty_get_capability|tty_goto|tty_put|tty_size|ttyflush|unaccent_atom|unifiable|unify_with_occurs_check|unix|unknown|unload_file|unsetenv|upcase_atom|use_module|var|var_number|var_property|variant_hash|version|visible|wait_for_input|when|wildcard_match|win_add_dll_directory|win_exec|win_folder|win_has_menu|win_insert_menu|win_insert_menu_item|win_registry_get_value|win_remove_dll_directory|win_shell|win_window_pos|window_title|with_mutex|with_output_to|working_directory|write|write_canonical|write_length|write_term|writef|writeln|writeq|xml_is_dom|xml_to_rdf|zopen)\\b"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "name": "comment.line.percent-sign.prolog",
+ "match": "%.*"
+ },
+ {
+ "name": "comment.block.prolog",
+ "begin": "/\\*",
+ "end": "\\*/",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.prolog"
+ }
+ }
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "name": "constant.numeric.integer.prolog",
+ "match": "(?<![a-zA-Z]|/)(\\d+|(\\d+\\.\\d+))"
+ },
+ {
+ "name": "string.quoted.double.prolog",
+ "match": "\".*?\""
+ }
+ ]
+ },
+ "controlandkeywords": {
+ "patterns": [
+ {
+ "name": "meta.if.prolog",
+ "begin": "(->)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.if.prolog"
+ }
+ },
+ "end": "(;)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.else.prolog"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ },
+ {
+ "include": "#builtin"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#atom"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "name": "meta.if.body.prolog",
+ "match": "."
+ }
+ ]
+ },
+ {
+ "name": "keyword.control.cut.prolog",
+ "match": "!"
+ },
+ {
+ "name": "keyword.operator.prolog",
+ "match": "(\\s(is)\\s)|=:=|=\\.\\.|=?\\\\?=|\\\\\\+|@?>|@?=?<|\\+|\\*|\\-"
+ }
+ ]
+ },
+ "variable": {
+ "patterns": [
+ {
+ "name": "variable.parameter.uppercase.prolog",
+ "match": "(?<![a-zA-Z0-9_])[A-Z][a-zA-Z0-9_]*"
+ },
+ {
+ "name": "variable.language.anonymous.prolog",
+ "match": "(?<!\\w)_"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/proto.tmLanguage.json b/node_modules/shiki/languages/proto.tmLanguage.json
new file mode 100644
index 0000000..3d55f7a
--- /dev/null
+++ b/node_modules/shiki/languages/proto.tmLanguage.json
@@ -0,0 +1,504 @@
+{
+ "name": "proto",
+ "scopeName": "source.proto",
+ "fileTypes": ["proto"],
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#syntax"
+ },
+ {
+ "include": "#package"
+ },
+ {
+ "include": "#import"
+ },
+ {
+ "include": "#optionStmt"
+ },
+ {
+ "include": "#message"
+ },
+ {
+ "include": "#enum"
+ },
+ {
+ "include": "#service"
+ }
+ ],
+ "repository": {
+ "comments": {
+ "patterns": [
+ {
+ "name": "comment.block.proto",
+ "begin": "/\\*",
+ "end": "\\*/"
+ },
+ {
+ "name": "comment.line.double-slash.proto",
+ "begin": "//",
+ "end": "$\\n?"
+ }
+ ]
+ },
+ "syntax": {
+ "match": "\\s*(syntax)\\s*(=)\\s*(\"proto[23]\")\\s*(;)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.proto"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.proto"
+ },
+ "3": {
+ "name": "string.quoted.double.proto.syntax"
+ },
+ "4": {
+ "name": "punctuation.terminator.proto"
+ }
+ }
+ },
+ "package": {
+ "match": "\\s*(package)\\s+([\\w.]+)\\s*(;)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.proto"
+ },
+ "2": {
+ "name": "string.unquoted.proto.package"
+ },
+ "3": {
+ "name": "punctuation.terminator.proto"
+ }
+ }
+ },
+ "import": {
+ "match": "\\s*(import)\\s+(weak|public)?\\s*(\"[^\"]+\")\\s*(;)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.proto"
+ },
+ "2": {
+ "name": "keyword.other.proto"
+ },
+ "3": {
+ "name": "string.quoted.double.proto.import"
+ },
+ "4": {
+ "name": "punctuation.terminator.proto"
+ }
+ }
+ },
+ "optionStmt": {
+ "begin": "(option)\\s+(\\w+|\\(\\w+(\\.\\w+)*\\))(\\.\\w+)*\\s*(=)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.proto"
+ },
+ "2": {
+ "name": "support.other.proto"
+ },
+ "3": {
+ "name": "support.other.proto"
+ },
+ "4": {
+ "name": "support.other.proto"
+ },
+ "5": {
+ "name": "keyword.operator.assignment.proto"
+ }
+ },
+ "end": "(;)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.proto"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#number"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#subMsgOption"
+ }
+ ]
+ },
+ "subMsgOption": {
+ "begin": "\\{",
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#kv"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "kv": {
+ "begin": "(\\w+)\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.proto"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.proto"
+ }
+ },
+ "end": "(;)|,|(?=[}/_a-zA-Z])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.proto"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#number"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#subMsgOption"
+ }
+ ]
+ },
+ "fieldOptions": {
+ "begin": "\\[",
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#number"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#subMsgOption"
+ },
+ {
+ "include": "#optionName"
+ }
+ ]
+ },
+ "optionName": {
+ "match": "(\\w+|\\(\\w+(\\.\\w+)*\\))(\\.\\w+)*",
+ "captures": {
+ "1": {
+ "name": "support.other.proto"
+ },
+ "2": {
+ "name": "support.other.proto"
+ },
+ "3": {
+ "name": "support.other.proto"
+ }
+ }
+ },
+ "message": {
+ "begin": "(message|extend)(\\s+)([A-Za-z_][A-Za-z0-9_.]*)(\\s*)(\\{)?",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.proto"
+ },
+ "3": {
+ "name": "entity.name.class.message.proto"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#reserved"
+ },
+ {
+ "include": "$self"
+ },
+ {
+ "include": "#enum"
+ },
+ {
+ "include": "#optionStmt"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#oneof"
+ },
+ {
+ "include": "#field"
+ },
+ {
+ "include": "#mapfield"
+ }
+ ]
+ },
+ "reserved": {
+ "begin": "(reserved)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.proto"
+ }
+ },
+ "end": "(;)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.proto"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(\\d+)(\\s+(to)\\s+(\\d+))?",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.proto"
+ },
+ "3": {
+ "name": "keyword.other.proto"
+ },
+ "4": {
+ "name": "constant.numeric.proto"
+ }
+ }
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ "field": {
+ "begin": "\\s*(optional|repeated|required)?\\s*\\b([\\w.]+)\\s+(\\w+)\\s*(=)\\s*(0[xX][0-9a-fA-F]+|[0-9]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.proto"
+ },
+ "2": {
+ "name": "storage.type.proto"
+ },
+ "3": {
+ "name": "variable.other.proto"
+ },
+ "4": {
+ "name": "keyword.operator.assignment.proto"
+ },
+ "5": {
+ "name": "constant.numeric.proto"
+ }
+ },
+ "end": "(;)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.proto"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fieldOptions"
+ }
+ ]
+ },
+ "mapfield": {
+ "begin": "\\s*(map)\\s*(<)\\s*([\\w.]+)\\s*,\\s*([\\w.]+)\\s*(>)\\s+(\\w+)\\s*(=)\\s*(\\d+)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.proto"
+ },
+ "2": {
+ "name": "punctuation.definition.typeparameters.begin.proto"
+ },
+ "3": {
+ "name": "storage.type.proto"
+ },
+ "4": {
+ "name": "storage.type.proto"
+ },
+ "5": {
+ "name": "punctuation.definition.typeparameters.end.proto"
+ },
+ "6": {
+ "name": "variable.other.proto"
+ },
+ "7": {
+ "name": "keyword.operator.assignment.proto"
+ },
+ "8": {
+ "name": "constant.numeric.proto"
+ }
+ },
+ "end": "(;)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.proto"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fieldOptions"
+ }
+ ]
+ },
+ "oneof": {
+ "begin": "(oneof)\\s+([A-Za-z][A-Za-z0-9_]*)\\s*\\{?",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.proto"
+ },
+ "2": {
+ "name": "variable.other.proto"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#optionStmt"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#field"
+ }
+ ]
+ },
+ "enum": {
+ "begin": "(enum)(\\s+)([A-Za-z][A-Za-z0-9_]*)(\\s*)(\\{)?",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.proto"
+ },
+ "3": {
+ "name": "entity.name.class.proto"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#reserved"
+ },
+ {
+ "include": "#optionStmt"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "([A-Za-z][A-Za-z0-9_]*)\\s*(=)\\s*(0[xX][0-9a-fA-F]+|[0-9]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.proto"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.proto"
+ },
+ "3": {
+ "name": "constant.numeric.proto"
+ }
+ },
+ "end": "(;)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.proto"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fieldOptions"
+ }
+ ]
+ }
+ ]
+ },
+ "service": {
+ "begin": "(service)\\s+([A-Za-z][A-Za-z0-9_.]*)\\s*\\{?",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.proto"
+ },
+ "2": {
+ "name": "entity.name.class.message.proto"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#optionStmt"
+ },
+ {
+ "include": "#method"
+ }
+ ]
+ },
+ "method": {
+ "begin": "(rpc)\\s+([A-Za-z][A-Za-z0-9_]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.proto"
+ },
+ "2": {
+ "name": "entity.name.function"
+ }
+ },
+ "end": "\\}|(;)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.proto"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#optionStmt"
+ },
+ {
+ "include": "#rpcKeywords"
+ },
+ {
+ "include": "#ident"
+ }
+ ]
+ },
+ "rpcKeywords": {
+ "match": "\\b(stream|returns)\\b",
+ "name": "keyword.other.proto"
+ },
+ "ident": {
+ "match": "[A-Za-z][A-Za-z0-9_]*",
+ "name": "entity.name.class.proto"
+ },
+ "constants": {
+ "match": "\\b(true|false|max|[A-Z_]+)\\b",
+ "name": "constant.language.proto"
+ },
+ "storagetypes": {
+ "match": "\\b(double|float|int32|int64|uint32|uint64|sint32|sint64|fixed32|fixed64|sfixed32|sfixed64|bool|string|bytes)\\b",
+ "name": "storage.type.proto"
+ },
+ "string": {
+ "match": "('([^']|\\')*')|(\"([^\"]|\\\")*\")",
+ "name": "string.quoted.double.proto"
+ },
+ "number": {
+ "name": "constant.numeric.proto",
+ "match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)\\b"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/pug.tmLanguage.json b/node_modules/shiki/languages/pug.tmLanguage.json
new file mode 100644
index 0000000..44700bc
--- /dev/null
+++ b/node_modules/shiki/languages/pug.tmLanguage.json
@@ -0,0 +1,1038 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/davidrios/pug-tmbundle/blob/master/Syntaxes/Pug.JSON-tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/davidrios/pug-tmbundle/commit/ae1dd60ca4aa4b45617f236d584216cd8d19eecf",
+ "name": "pug",
+ "scopeName": "text.pug",
+ "patterns": [
+ {
+ "match": "^(!!!|doctype)(\\s*[a-zA-Z0-9-_]+)?",
+ "name": "meta.tag.sgml.doctype.html",
+ "comment": "Doctype declaration."
+ },
+ {
+ "begin": "^(\\s*)//-",
+ "end": "^(?!(\\1\\s)|\\s*$)",
+ "name": "comment.unbuffered.block.pug",
+ "comment": "Unbuffered (pug-only) comments."
+ },
+ {
+ "begin": "^(\\s*)//",
+ "end": "^(?!(\\1\\s)|\\s*$)",
+ "name": "string.comment.buffered.block.pug",
+ "comment": "Buffered (html) comments.",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.comment.comment.block.pug"
+ }
+ },
+ "match": "^\\s*(//)(?!-)",
+ "name": "string.comment.buffered.block.pug",
+ "comment": "Buffered comments inside buffered comments will generate invalid html."
+ }
+ ]
+ },
+ {
+ "begin": "<!--",
+ "end": "--\\s*>",
+ "name": "comment.unbuffered.block.pug",
+ "patterns": [
+ {
+ "match": "--",
+ "name": "invalid.illegal.comment.comment.block.pug"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*)-$",
+ "end": "^(?!(\\1\\s)|\\s*$)",
+ "name": "source.js",
+ "comment": "Unbuffered code block.",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*)(script)((\\.$)|(?=[^\\n]*((text|application)/javascript|module).*\\.$))",
+ "beginCaptures": {
+ "2": {
+ "name": "entity.name.tag.pug"
+ }
+ },
+ "end": "^(?!(\\1\\s)|\\s*$)",
+ "name": "meta.tag.other",
+ "comment": "Script tag with JavaScript code.",
+ "patterns": [
+ {
+ "begin": "\\G(?=\\()",
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#tag_attributes"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?=[.#])",
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#complete_tag"
+ }
+ ]
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*)(style)((\\.$)|(?=[.#(].*\\.$))",
+ "beginCaptures": {
+ "2": {
+ "name": "entity.name.tag.pug"
+ }
+ },
+ "end": "^(?!(\\1\\s)|\\s*$)",
+ "name": "meta.tag.other",
+ "comment": "Style tag with CSS code.",
+ "patterns": [
+ {
+ "begin": "\\G(?=\\()",
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#tag_attributes"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?=[.#])",
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#complete_tag"
+ }
+ ]
+ },
+ {
+ "include": "source.css"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*):(sass)(?=\\(|$)",
+ "beginCaptures": {
+ "2": {
+ "name": "constant.language.name.sass.filter.pug"
+ }
+ },
+ "end": "^(?!(\\1\\s)|\\s*$)",
+ "name": "source.sass.filter.pug",
+ "patterns": [
+ {
+ "include": "#tag_attributes"
+ },
+ {
+ "include": "source.sass"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*):(scss)(?=\\(|$)",
+ "beginCaptures": {
+ "2": {
+ "name": "constant.language.name.scss.filter.pug"
+ }
+ },
+ "end": "^(?!(\\1\\s)|\\s*$)",
+ "name": "source.css.scss.filter.pug",
+ "patterns": [
+ {
+ "include": "#tag_attributes"
+ },
+ {
+ "include": "source.css.scss"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*):(less)(?=\\(|$)",
+ "beginCaptures": {
+ "2": {
+ "name": "constant.language.name.less.filter.pug"
+ }
+ },
+ "end": "^(?!(\\1\\s)|\\s*$)",
+ "name": "source.less.filter.pug",
+ "patterns": [
+ {
+ "include": "#tag_attributes"
+ },
+ {
+ "include": "source.less"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*):(stylus)(?=\\(|$)",
+ "beginCaptures": {
+ "2": {
+ "name": "constant.language.name.stylus.filter.pug"
+ }
+ },
+ "end": "^(?!(\\1\\s)|\\s*$)",
+ "patterns": [
+ {
+ "include": "#tag_attributes"
+ },
+ {
+ "include": "source.stylus"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*):(coffee(-?script)?)(?=\\(|$)",
+ "beginCaptures": {
+ "2": {
+ "name": "constant.language.name.coffeescript.filter.pug"
+ }
+ },
+ "end": "^(?!(\\1\\s)|\\s*$)",
+ "name": "source.coffeescript.filter.pug",
+ "patterns": [
+ {
+ "include": "#tag_attributes"
+ },
+ {
+ "include": "source.coffee"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*):(uglify-js)(?=\\(|$)",
+ "beginCaptures": {
+ "2": {
+ "name": "constant.language.name.js.filter.pug"
+ }
+ },
+ "end": "^(?!(\\1\\s)|\\s*$)",
+ "name": "source.js.filter.pug",
+ "patterns": [
+ {
+ "include": "#tag_attributes"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*)((:(?=.))|(:$))",
+ "beginCaptures": {
+ "4": {
+ "name": "invalid.illegal.empty.generic.filter.pug"
+ }
+ },
+ "end": "^(?!(\\1\\s)|\\s*$)",
+ "comment": "Generic Pug filter.",
+ "patterns": [
+ {
+ "begin": "\\G(?<=:)(?=.)",
+ "end": "$",
+ "name": "name.generic.filter.pug",
+ "patterns": [
+ {
+ "match": "\\G\\(",
+ "name": "invalid.illegal.name.generic.filter.pug"
+ },
+ {
+ "match": "[\\w-]",
+ "name": "constant.language.name.generic.filter.pug"
+ },
+ {
+ "include": "#tag_attributes"
+ },
+ {
+ "match": "\\W",
+ "name": "invalid.illegal.name.generic.filter.pug"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "^(\\s*)(?:(?=\\.$)|(?:(?=[\\w.#].*?\\.$)(?=(?:(?:(?:(?:(?:#[\\w-]+)|(?:\\.[\\w-]+))|(?:(?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))(?:(?:#[\\w-]+)|(?:\\.[\\w-]+)|(?:\\((?:[^()\\'\\\"]*(?:(?:\\'(?:[^\\']|(?:(?<!\\\\)\\\\\\'))*\\')|(?:\\\"(?:[^\\\"]|(?:(?<!\\\\)\\\\\\\"))*\\\")))*[^()]*\\))*)*)(?:(?:(?::\\s+)|(?<=\\)))(?:(?:(?:(?:#[\\w-]+)|(?:\\.[\\w-]+))|(?:(?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))(?:(?:#[\\w-]+)|(?:\\.[\\w-]+)|(?:\\((?:[^()\\'\\\"]*(?:(?:\\'(?:[^\\']|(?:(?<!\\\\)\\\\\\'))*\\')|(?:\\\"(?:[^\\\"]|(?:(?<!\\\\)\\\\\\\"))*\\\")))*[^()]*\\))*)*))*)\\.$)(?:(?:(#[\\w-]+)|(\\.[\\w-]+))|((?:[#!]\\{[^}]*\\})|(?:\\w(?:(?:[\\w:-]+[\\w-])|(?:[\\w-]*)))))))",
+ "beginCaptures": {
+ "2": {
+ "name": "meta.selector.css entity.other.attribute-name.id.css.pug"
+ },
+ "3": {
+ "name": "meta.selector.css entity.other.attribute-name.class.css.pug"
+ },
+ "4": {
+ "name": "meta.tag.other entity.name.tag.pug"
+ }
+ },
+ "end": "^(?!(\\1\\s)|\\s*$)",
+ "comment": "Generated from dot_block_tag.py",
+ "patterns": [
+ {
+ "match": "\\.$",
+ "name": "storage.type.function.pug.dot-block-dot"
+ },
+ {
+ "include": "#tag_attributes"
+ },
+ {
+ "include": "#complete_tag"
+ },
+ {
+ "begin": "^(?=.)",
+ "end": "$",
+ "name": "text.block.pug",
+ "patterns": [
+ {
+ "include": "#inline_pug"
+ },
+ {
+ "include": "#embedded_html"
+ },
+ {
+ "include": "#html_entity"
+ },
+ {
+ "include": "#interpolated_value"
+ },
+ {
+ "include": "#interpolated_error"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*",
+ "end": "$",
+ "comment": "All constructs that generally span a single line starting with any number of white-spaces.",
+ "patterns": [
+ {
+ "include": "#inline_pug"
+ },
+ {
+ "include": "#blocks_and_includes"
+ },
+ {
+ "include": "#unbuffered_code"
+ },
+ {
+ "include": "#mixin_definition"
+ },
+ {
+ "include": "#mixin_call"
+ },
+ {
+ "include": "#flow_control"
+ },
+ {
+ "include": "#flow_control_each"
+ },
+ {
+ "include": "#case_conds"
+ },
+ {
+ "begin": "\\|",
+ "end": "$",
+ "name": "text.block.pipe.pug",
+ "comment": "Tag pipe text line.",
+ "patterns": [
+ {
+ "include": "#inline_pug"
+ },
+ {
+ "include": "#embedded_html"
+ },
+ {
+ "include": "#html_entity"
+ },
+ {
+ "include": "#interpolated_value"
+ },
+ {
+ "include": "#interpolated_error"
+ }
+ ]
+ },
+ {
+ "include": "#printed_expression"
+ },
+ {
+ "begin": "\\G(?=(#[^\\{\\w-])|[^\\w.#])",
+ "end": "$",
+ "comment": "Line starting with characters incompatible with tag name/id/class is standalone text.",
+ "patterns": [
+ {
+ "begin": "</?(?=[!#])",
+ "end": ">|$",
+ "patterns": [
+ {
+ "include": "#inline_pug"
+ },
+ {
+ "include": "#interpolated_value"
+ },
+ {
+ "include": "#interpolated_error"
+ }
+ ]
+ },
+ {
+ "include": "#inline_pug"
+ },
+ {
+ "include": "#embedded_html"
+ },
+ {
+ "include": "#html_entity"
+ },
+ {
+ "include": "#interpolated_value"
+ },
+ {
+ "include": "#interpolated_error"
+ }
+ ]
+ },
+ {
+ "include": "#complete_tag"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "blocks_and_includes": {
+ "captures": {
+ "1": {
+ "name": "storage.type.import.include.pug"
+ },
+ "4": {
+ "name": "variable.control.import.include.pug"
+ }
+ },
+ "match": "(extends|include|yield|append|prepend|block( (append|prepend))?)\\s+(.*)$",
+ "name": "meta.first-class.pug",
+ "comment": "Template blocks and includes."
+ },
+ "unbuffered_code": {
+ "begin": "(-|(([a-zA-Z0-9_]+)\\s+=))",
+ "beginCaptures": {
+ "3": {
+ "name": "variable.parameter.javascript.embedded.pug"
+ }
+ },
+ "end": "(?=\\])|(({\\s*)?$)",
+ "name": "source.js",
+ "comment": "name = function() {}",
+ "patterns": [
+ {
+ "include": "#js_brackets"
+ },
+ {
+ "include": "#babel_parens"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "mixin_definition": {
+ "match": "(mixin\\s+)([\\w-]+)(?:(\\()\\s*((?:[a-zA-Z_]\\w*\\s*)(?:,\\s*[a-zA-Z_]\\w*\\s*)*)(\\)))?$",
+ "captures": {
+ "1": {
+ "name": "storage.type.function.pug"
+ },
+ "2": {
+ "name": "meta.tag.other entity.name.function.pug"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.js"
+ },
+ "4": {
+ "name": "variable.parameter.function.js"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.begin.js"
+ }
+ }
+ },
+ "mixin_call": {
+ "begin": "((?:mixin\\s+)|\\+)([\\w-]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.pug"
+ },
+ "2": {
+ "name": "meta.tag.other entity.name.function.pug"
+ }
+ },
+ "end": "(?!\\()|$",
+ "patterns": [
+ {
+ "begin": "(?<!\\))\\(",
+ "end": "\\)",
+ "name": "args.mixin.pug",
+ "patterns": [
+ {
+ "include": "#js_parens"
+ },
+ {
+ "match": "([^\\s(),=/]+)\\s*=\\s*",
+ "captures": {
+ "1": {
+ "name": "meta.tag.other entity.other.attribute-name.tag.pug"
+ }
+ }
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "include": "#tag_attributes"
+ }
+ ]
+ },
+ "flow_control": {
+ "begin": "(for|if|else if|else|until|while|unless|case)(\\s+|$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.function.pug"
+ }
+ },
+ "end": "$",
+ "name": "meta.control.flow.pug",
+ "comment": "Pug control flow.",
+ "patterns": [
+ {
+ "begin": "",
+ "end": "$",
+ "name": "js.embedded.control.flow.pug",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ "flow_control_each": {
+ "begin": "(each)(\\s+|$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.function.pug"
+ }
+ },
+ "end": "$",
+ "name": "meta.control.flow.pug.each",
+ "patterns": [
+ {
+ "match": "([\\w$_]+)(?:\\s*,\\s*([\\w$_]+))?",
+ "name": "variable.other.pug.each-var"
+ },
+ {
+ "begin": "",
+ "end": "$",
+ "name": "js.embedded.control.flow.pug",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ "case_when_paren": {
+ "begin": "\\(",
+ "end": "\\)",
+ "name": "js.when.control.flow.pug",
+ "patterns": [
+ {
+ "include": "#case_when_paren"
+ },
+ {
+ "match": ":",
+ "name": "invalid.illegal.name.tag.pug"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "case_conds": {
+ "begin": "(default|when)((\\s+|(?=:))|$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.function.pug"
+ }
+ },
+ "end": "$",
+ "name": "meta.control.flow.pug",
+ "comment": "Pug case conditionals.",
+ "patterns": [
+ {
+ "begin": "\\G(?!:)",
+ "end": "(?=:\\s+)|$",
+ "name": "js.embedded.control.flow.pug",
+ "patterns": [
+ {
+ "include": "#case_when_paren"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": ":\\s+",
+ "end": "$",
+ "name": "tag.case.control.flow.pug",
+ "patterns": [
+ {
+ "include": "#complete_tag"
+ }
+ ]
+ }
+ ]
+ },
+ "complete_tag": {
+ "begin": "(?=[\\w.#])|(:\\s*)",
+ "end": "(\\.?$)|(?=:.)",
+ "endCaptures": {
+ "1": {
+ "name": "storage.type.function.pug.dot-block-dot"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#blocks_and_includes"
+ },
+ {
+ "include": "#unbuffered_code"
+ },
+ {
+ "include": "#mixin_call"
+ },
+ {
+ "include": "#flow_control"
+ },
+ {
+ "include": "#flow_control_each"
+ },
+ {
+ "match": "(?<=:)\\w.*$",
+ "name": "invalid.illegal.name.tag.pug"
+ },
+ {
+ "include": "#tag_name"
+ },
+ {
+ "include": "#tag_id"
+ },
+ {
+ "include": "#tag_classes"
+ },
+ {
+ "include": "#tag_attributes"
+ },
+ {
+ "include": "#tag_mixin_attributes"
+ },
+ {
+ "match": "((\\.)\\s+$)|((:)\\s*$)",
+ "captures": {
+ "2": {
+ "name": "invalid.illegal.end.tag.pug"
+ },
+ "4": {
+ "name": "invalid.illegal.end.tag.pug"
+ }
+ }
+ },
+ {
+ "include": "#printed_expression"
+ },
+ {
+ "include": "#tag_text"
+ }
+ ]
+ },
+ "tag_name": {
+ "begin": "([#!]\\{(?=.*?\\}))|(\\w(([\\w:-]+[\\w-])|([\\w-]*)))",
+ "end": "(\\G(?<!\\5[^\\w-]))|\\}|$",
+ "name": "meta.tag.other entity.name.tag.pug",
+ "patterns": [
+ {
+ "begin": "\\G(?<=\\{)",
+ "end": "(?=\\})",
+ "name": "meta.tag.other entity.name.tag.pug",
+ "patterns": [
+ {
+ "match": "{",
+ "name": "invalid.illegal.tag.pug"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ "tag_id": {
+ "match": "#[\\w-]+",
+ "name": "meta.selector.css entity.other.attribute-name.id.css.pug"
+ },
+ "tag_classes": {
+ "match": "\\.([^\\w-])?[\\w-]*",
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.tag.pug"
+ }
+ },
+ "name": "meta.selector.css entity.other.attribute-name.class.css.pug"
+ },
+ "tag_attributes": {
+ "begin": "(\\(\\s*)",
+ "captures": {
+ "1": {
+ "name": "constant.name.attribute.tag.pug"
+ }
+ },
+ "end": "(\\))",
+ "name": "meta.tag.other",
+ "patterns": [
+ {
+ "include": "#tag_attribute_name_paren"
+ },
+ {
+ "include": "#tag_attribute_name"
+ },
+ {
+ "match": "!(?!=)",
+ "name": "invalid.illegal.tag.pug"
+ },
+ {
+ "begin": "=\\s*",
+ "end": "$|(?=,|(?:\\s+[^!%&*\\-+~|<>?/])|\\))",
+ "name": "attribute_value",
+ "patterns": [
+ {
+ "include": "#js_parens"
+ },
+ {
+ "include": "#js_brackets"
+ },
+ {
+ "include": "#js_braces"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=[%&*\\-+~|<>:?/])\\s+",
+ "end": "$|(?=,|(?:\\s+[^!%&*\\-+~|<>?/])|\\))",
+ "name": "attribute_value2",
+ "patterns": [
+ {
+ "include": "#js_parens"
+ },
+ {
+ "include": "#js_brackets"
+ },
+ {
+ "include": "#js_braces"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ "tag_attribute_name": {
+ "match": "([^\\s(),=/!]+)\\s*",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.tag.pug"
+ }
+ }
+ },
+ "tag_attribute_name_paren": {
+ "begin": "\\(\\s*",
+ "end": "\\)",
+ "name": "entity.other.attribute-name.tag.pug",
+ "patterns": [
+ {
+ "include": "#tag_attribute_name_paren"
+ },
+ {
+ "include": "#tag_attribute_name"
+ }
+ ]
+ },
+ "tag_mixin_attributes": {
+ "begin": "(&attributes\\()",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.pug"
+ }
+ },
+ "end": "(\\))",
+ "name": "meta.tag.other",
+ "patterns": [
+ {
+ "match": "attributes(?=\\))",
+ "name": "storage.type.keyword.pug"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "tag_text": {
+ "begin": "(?=.)",
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#inline_pug"
+ },
+ {
+ "include": "#embedded_html"
+ },
+ {
+ "include": "#html_entity"
+ },
+ {
+ "include": "#interpolated_value"
+ },
+ {
+ "include": "#interpolated_error"
+ }
+ ]
+ },
+ "inline_pug_text": {
+ "begin": "",
+ "end": "(?=\\])",
+ "patterns": [
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#inline_pug_text"
+ }
+ ]
+ },
+ {
+ "include": "#inline_pug"
+ },
+ {
+ "include": "#embedded_html"
+ },
+ {
+ "include": "#html_entity"
+ },
+ {
+ "include": "#interpolated_value"
+ },
+ {
+ "include": "#interpolated_error"
+ }
+ ]
+ },
+ "inline_pug": {
+ "begin": "(?<!\\\\)(#\\[)",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.pug"
+ },
+ "2": {
+ "name": "entity.name.function.pug"
+ }
+ },
+ "end": "(\\])",
+ "name": "inline.pug",
+ "patterns": [
+ {
+ "include": "#inline_pug"
+ },
+ {
+ "include": "#mixin_call"
+ },
+ {
+ "begin": "(?<!\\])(?=[\\w.#])|(:\\s*)",
+ "end": "(?=\\]|(:.)|=|\\s)",
+ "name": "tag.inline.pug",
+ "patterns": [
+ {
+ "include": "#tag_name"
+ },
+ {
+ "include": "#tag_id"
+ },
+ {
+ "include": "#tag_classes"
+ },
+ {
+ "include": "#tag_attributes"
+ },
+ {
+ "include": "#tag_mixin_attributes"
+ },
+ {
+ "include": "#inline_pug"
+ },
+ {
+ "match": "\\[",
+ "name": "invalid.illegal.tag.pug"
+ }
+ ]
+ },
+ {
+ "include": "#unbuffered_code"
+ },
+ {
+ "include": "#printed_expression"
+ },
+ {
+ "match": "\\[",
+ "name": "invalid.illegal.tag.pug"
+ },
+ {
+ "include": "#inline_pug_text"
+ }
+ ]
+ },
+ "html_entity": {
+ "patterns": [
+ {
+ "match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
+ "name": "constant.character.entity.html.text.pug"
+ },
+ {
+ "match": "[<>&]",
+ "name": "invalid.illegal.html_entity.text.pug"
+ }
+ ]
+ },
+ "interpolated_value": {
+ "begin": "(?<!\\\\)[#!]\\{(?=.*?\\})",
+ "end": "\\}",
+ "name": "string.interpolated.pug",
+ "patterns": [
+ {
+ "match": "{",
+ "name": "invalid.illegal.tag.pug"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "interpolated_error": {
+ "match": "(?<!\\\\)[#!]\\{(?=[^}]*$)",
+ "name": "invalid.illegal.tag.pug"
+ },
+ "printed_expression": {
+ "begin": "(!?\\=)\\s*",
+ "captures": {
+ "1": {
+ "name": "constant"
+ }
+ },
+ "end": "(?=\\])|$",
+ "name": "source.js",
+ "patterns": [
+ {
+ "include": "#js_brackets"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "embedded_html": {
+ "begin": "(?=<[^>]*>)",
+ "end": "$|(?=>)",
+ "name": "html",
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ },
+ {
+ "include": "#interpolated_value"
+ },
+ {
+ "include": "#interpolated_error"
+ }
+ ]
+ },
+ "js_parens": {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#js_parens"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "js_brackets": {
+ "begin": "\\[",
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#js_brackets"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "js_braces": {
+ "begin": "\\{",
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#js_braces"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "babel_parens": {
+ "begin": "\\(",
+ "end": "\\)|(({\\s*)?$)",
+ "patterns": [
+ {
+ "include": "#babel_parens"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/puppet.tmLanguage.json b/node_modules/shiki/languages/puppet.tmLanguage.json
new file mode 100644
index 0000000..ad50dd4
--- /dev/null
+++ b/node_modules/shiki/languages/puppet.tmLanguage.json
@@ -0,0 +1,774 @@
+{
+ "scopeName": "source.puppet",
+ "fileTypes": ["pp"],
+ "foldingStartMarker": "(^\\s*/\\*|(\\{|\\[|\\()\\s*$)",
+ "foldingStopMarker": "(\\*/|^\\s*(\\}|\\]|\\)))",
+ "name": "puppet",
+ "patterns": [
+ {
+ "include": "#line_comment"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "begin": "^\\s*/\\*",
+ "end": "\\*/",
+ "name": "comment.block.puppet"
+ },
+ {
+ "begin": "\\b(node)\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.puppet"
+ },
+ "2": {
+ "name": "entity.name.type.class.puppet"
+ }
+ },
+ "end": "(?={)",
+ "name": "meta.definition.class.puppet",
+ "patterns": [
+ {
+ "match": "\\bdefault\\b",
+ "name": "keyword.puppet"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#regex-literal"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(class)\\s+((?#Qualified Resource Name)(?:[a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)+|(?#Bareword Resource Name)[a-z][a-z0-9_]*)\\s*",
+ "captures": {
+ "1": {
+ "name": "storage.type.puppet"
+ },
+ "2": {
+ "name": "entity.name.type.class.puppet"
+ }
+ },
+ "end": "(?={)",
+ "name": "meta.definition.class.puppet",
+ "patterns": [
+ {
+ "begin": "\\b(inherits)\\b\\s+",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.puppet"
+ }
+ },
+ "end": "(?=\\(|{)",
+ "name": "meta.definition.class.inherits.puppet",
+ "patterns": [
+ {
+ "match": "\\b((?:[-_A-Za-z0-9\".]+::)*[-_A-Za-z0-9\".]+)\\b",
+ "name": "support.type.puppet"
+ }
+ ]
+ },
+ {
+ "include": "#line_comment"
+ },
+ {
+ "include": "#resource-parameters"
+ },
+ {
+ "include": "#parameter-default-types"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(plan)\\s+((?#Qualified Resource Name)(?:[a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)+|(?#Bareword Resource Name)[a-z][a-z0-9_]*)\\s*",
+ "captures": {
+ "1": {
+ "name": "storage.type.puppet"
+ },
+ "2": {
+ "name": "entity.name.type.plan.puppet"
+ }
+ },
+ "end": "(?={)",
+ "name": "meta.definition.plan.puppet",
+ "patterns": [
+ {
+ "include": "#line_comment"
+ },
+ {
+ "include": "#resource-parameters"
+ },
+ {
+ "include": "#parameter-default-types"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*(define|function)\\s+((?#Bareword Resource Name)[a-z][a-z0-9_]*|(?#Qualified Resource Name)(?:[a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)+)\\s*(\\()",
+ "captures": {
+ "1": {
+ "name": "storage.type.function.puppet"
+ },
+ "2": {
+ "name": "entity.name.function.puppet"
+ }
+ },
+ "end": "(?={)",
+ "name": "meta.function.puppet",
+ "patterns": [
+ {
+ "include": "#line_comment"
+ },
+ {
+ "include": "#resource-parameters"
+ },
+ {
+ "include": "#parameter-default-types"
+ }
+ ]
+ },
+ {
+ "match": "\\b(case|else|elsif|if|unless)(?!::)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.puppet"
+ }
+ }
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#resource-definition"
+ },
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#puppet-datatypes"
+ },
+ {
+ "include": "#array"
+ },
+ {
+ "match": "((\\$?)\"?[a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*\"?):(?=\\s+|$)",
+ "name": "entity.name.section.puppet"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "begin": "\\b(import|include|contain|require)\\s+(?!.*=>)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.import.include.puppet"
+ }
+ },
+ "end": "(?=\\s|$)",
+ "contentName": "variable.parameter.include.puppet",
+ "name": "meta.include.puppet"
+ },
+ {
+ "match": "\\b\\w+\\s*(?==>)\\s*",
+ "name": "constant.other.key.puppet"
+ },
+ {
+ "match": "(?<={)\\s*\\w+\\s*(?=})",
+ "name": "constant.other.bareword.puppet"
+ },
+ {
+ "match": "\\b(alert|crit|debug|defined|emerg|err|escape|fail|failed|file|generate|gsub|info|notice|package|realize|search|tag|tagged|template|warning)\\b(?!.*{)",
+ "name": "support.function.puppet"
+ },
+ {
+ "match": "=>",
+ "name": "punctuation.separator.key-value.puppet"
+ },
+ {
+ "match": "->",
+ "name": "keyword.control.orderarrow.puppet"
+ },
+ {
+ "match": "~>",
+ "name": "keyword.control.notifyarrow.puppet"
+ },
+ {
+ "include": "#regex-literal"
+ }
+ ],
+ "repository": {
+ "constants": {
+ "patterns": [
+ {
+ "match": "\\b(absent|directory|false|file|present|running|stopped|true)\\b(?!.*{)",
+ "name": "constant.language.puppet"
+ }
+ ]
+ },
+ "double-quoted-string": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.puppet"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.puppet"
+ }
+ },
+ "name": "string.quoted.double.interpolated.puppet",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#interpolated_puppet"
+ }
+ ]
+ },
+ "interpolated_puppet": {
+ "patterns": [
+ {
+ "begin": "(\\${)(\\d+)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.embedded.begin.puppet"
+ },
+ "2": {
+ "name": "source.puppet variable.other.readwrite.global.pre-defined.puppet"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.puppet"
+ }
+ },
+ "contentName": "source.puppet",
+ "name": "meta.embedded.line.puppet",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(\\${)(_[a-zA-Z0-9_]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.embedded.begin.puppet"
+ },
+ "2": {
+ "name": "source.puppet variable.other.readwrite.global.puppet"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.puppet"
+ }
+ },
+ "contentName": "source.puppet",
+ "name": "meta.embedded.line.puppet",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(\\${)(([a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)*)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.embedded.begin.puppet"
+ },
+ "2": {
+ "name": "source.puppet variable.other.readwrite.global.puppet"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.puppet"
+ }
+ },
+ "contentName": "source.puppet",
+ "name": "meta.embedded.line.puppet",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\${",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.puppet"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.puppet"
+ }
+ },
+ "contentName": "source.puppet",
+ "name": "meta.embedded.line.puppet",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "escaped_char": {
+ "match": "\\\\.",
+ "name": "constant.character.escape.puppet"
+ },
+ "line_comment": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "comment.line.number-sign.puppet"
+ },
+ "2": {
+ "name": "punctuation.definition.comment.puppet"
+ }
+ },
+ "match": "^((#).*$\\n?)",
+ "name": "meta.comment.full-line.puppet"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.puppet"
+ }
+ },
+ "match": "(#).*$\\n?",
+ "name": "comment.line.number-sign.puppet"
+ }
+ ]
+ },
+ "nested_braces": {
+ "begin": "\\{",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.puppet"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_braces"
+ }
+ ]
+ },
+ "nested_braces_interpolated": {
+ "begin": "\\{",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.puppet"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_braces_interpolated"
+ }
+ ]
+ },
+ "nested_brackets": {
+ "begin": "\\[",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.puppet"
+ }
+ },
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_brackets"
+ }
+ ]
+ },
+ "nested_brackets_interpolated": {
+ "begin": "\\[",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.puppet"
+ }
+ },
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_brackets_interpolated"
+ }
+ ]
+ },
+ "nested_parens": {
+ "begin": "\\(",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.puppet"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#nested_parens"
+ }
+ ]
+ },
+ "nested_parens_interpolated": {
+ "begin": "\\(",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.puppet"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#nested_parens_interpolated"
+ }
+ ]
+ },
+ "parameter-default-types": {
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#hash"
+ },
+ {
+ "include": "#array"
+ },
+ {
+ "include": "#function_call"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#puppet-datatypes"
+ }
+ ]
+ },
+ "resource-parameters": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "variable.other.puppet"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.puppet"
+ }
+ },
+ "match": "((\\$+)[a-zA-Z_][a-zA-Z0-9_]*)\\s*(?=,|\\))",
+ "name": "meta.function.argument.puppet"
+ },
+ {
+ "begin": "((\\$+)[a-zA-Z_][a-zA-Z0-9_]*)(?:\\s*(=)\\s*)\\s*",
+ "captures": {
+ "1": {
+ "name": "variable.other.puppet"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.puppet"
+ },
+ "3": {
+ "name": "keyword.operator.assignment.puppet"
+ }
+ },
+ "end": "(?=,|\\))",
+ "name": "meta.function.argument.puppet",
+ "patterns": [
+ {
+ "include": "#parameter-default-types"
+ }
+ ]
+ }
+ ]
+ },
+ "array": {
+ "begin": "(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.array.begin.puppet"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.end.puppet"
+ }
+ },
+ "name": "meta.array.puppet",
+ "patterns": [
+ {
+ "match": "\\s*,\\s*"
+ },
+ {
+ "include": "#parameter-default-types"
+ },
+ {
+ "include": "#line_comment"
+ }
+ ]
+ },
+ "hash": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.hash.begin.puppet"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.hash.end.puppet"
+ }
+ },
+ "name": "meta.hash.puppet",
+ "patterns": [
+ {
+ "match": "\\b\\w+\\s*(?==>)\\s*",
+ "name": "constant.other.key.puppet"
+ },
+ {
+ "include": "#parameter-default-types"
+ },
+ {
+ "include": "#line_comment"
+ }
+ ]
+ },
+ "single-quoted-string": {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.puppet"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.puppet"
+ }
+ },
+ "name": "string.quoted.single.puppet",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "include": "#double-quoted-string"
+ },
+ {
+ "include": "#single-quoted-string"
+ }
+ ]
+ },
+ "keywords": {
+ "match": "\\b(undef)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.puppet"
+ }
+ }
+ },
+ "numbers": {
+ "patterns": [
+ {
+ "comment": "HEX 0x 0-f",
+ "match": "(?<!\\w|\\d)([-+]?)(?i:0x)(?i:[0-9a-f])+(?!\\w|\\d)",
+ "name": "constant.numeric.hexadecimal.puppet"
+ },
+ {
+ "comment": "INTEGERS [(+|-)] digits [e [(+|-)] digits]",
+ "match": "(?<!\\w|\\.)([-+]?)(?<!\\d)\\d+(?i:e(\\+|-){0,1}\\d+){0,1}(?!\\w|\\d|\\.)",
+ "name": "constant.numeric.integer.puppet"
+ },
+ {
+ "comment": "FLOAT [(+|-)] digits . digits [e [(+|-)] digits]",
+ "match": "(?<!\\w)([-+]?)\\d+\\.\\d+(?i:e(\\+|-){0,1}\\d+){0,1}(?!\\w|\\d)",
+ "name": "constant.numeric.integer.puppet"
+ }
+ ]
+ },
+ "resource-definition": {
+ "begin": "(?:^|\\b)((?#Toplevel Bareword)::[a-z][a-z0-9_]*|(?#Bareword Resource Name)[a-z][a-z0-9_]*|(?#Qualified Resource Name)(?:[a-z][a-z0-9_]*)?(?:::[a-z][a-z0-9_]*)+)\\s*({)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.resource.puppet storage.type.puppet"
+ }
+ },
+ "end": ":",
+ "contentName": "entity.name.section.puppet",
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#array"
+ }
+ ]
+ },
+ "variable": {
+ "patterns": [
+ {
+ "match": "(\\$)(\\d+)",
+ "name": "variable.other.readwrite.global.pre-defined.puppet",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.puppet"
+ }
+ }
+ },
+ {
+ "match": "(\\$)_[a-zA-Z0-9_]*",
+ "name": "variable.other.readwrite.global.puppet",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.puppet"
+ }
+ }
+ },
+ {
+ "match": "(\\$)(([a-z][a-zA-Z0-9_]*)?(?:::[a-z][a-zA-Z0-9_]*)*)",
+ "name": "variable.other.readwrite.global.puppet",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.puppet"
+ }
+ }
+ }
+ ]
+ },
+ "function_call": {
+ "begin": "([a-zA-Z_][a-zA-Z0-9_]*)(\\()",
+ "end": "\\)",
+ "name": "meta.function-call.puppet",
+ "patterns": [
+ {
+ "include": "#parameter-default-types"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.parameters.puppet"
+ }
+ ]
+ },
+ "puppet-datatypes": {
+ "patterns": [
+ {
+ "comment": "Puppet Data type",
+ "match": "(?<![a-zA-Z\\$])([A-Z][a-zA-Z0-9_]*)(?![a-zA-Z0-9_])",
+ "name": "storage.type.puppet"
+ }
+ ]
+ },
+ "regex-literal": {
+ "match": "(\\/)(.+?)(?:[^\\\\]\\/)",
+ "name": "string.regexp.literal.puppet",
+ "comment": "Puppet Regular expression literal without interpolation"
+ },
+ "heredoc": {
+ "patterns": [
+ {
+ "begin": "@\\([[:blank:]]*\"([^:\\/) \\t]+)\"[[:blank:]]*(:[[:blank:]]*[a-z][a-zA-Z0-9_+]*[[:blank:]]*)?(\\/[[:blank:]]*[tsrnL$]*)?[[:blank:]]*\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.puppet"
+ }
+ },
+ "end": "^[[:blank:]]*(\\|[[:blank:]]*-|\\||-)?[[:blank:]]*\\1",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.puppet"
+ }
+ },
+ "name": "string.interpolated.heredoc.puppet",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#interpolated_puppet"
+ }
+ ]
+ },
+ {
+ "begin": "@\\([[:blank:]]*([^:\\/) \\t]+)[[:blank:]]*(:[[:blank:]]*[a-z][a-zA-Z0-9_+]*[[:blank:]]*)?(\\/[[:blank:]]*[tsrnL$]*)?[[:blank:]]*\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.puppet"
+ }
+ },
+ "end": "^[[:blank:]]*(\\|[[:blank:]]*-|\\||-)?[[:blank:]]*\\1",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.puppet"
+ }
+ },
+ "name": "string.unquoted.heredoc.puppet"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/purescript.tmLanguage.json b/node_modules/shiki/languages/purescript.tmLanguage.json
new file mode 100644
index 0000000..333c6a0
--- /dev/null
+++ b/node_modules/shiki/languages/purescript.tmLanguage.json
@@ -0,0 +1,886 @@
+{
+ "fileTypes": ["purs"],
+ "name": "purescript",
+ "scopeName": "source.purescript",
+ "macros": {
+ "functionNameOne": "[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
+ "classNameOne": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
+ "functionName": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*",
+ "className": "[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*",
+ "operatorChar": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]",
+ "operator": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+",
+ "operatorFun": "(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))",
+ "character": "(?:[ -\\[\\]-~]|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))",
+ "classConstraint": "(?:(?:([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<classConstraint>(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(?:\\s*(?:\\s+)\\s*\\g<classConstraint>)?)))",
+ "functionTypeDeclaration": "([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\s*(::|∷)",
+ "ctorArgs": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+)",
+ "ctor": "(?:(?:\\b([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<ctorArgs>(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+))(?:\\s*(?:\\s+)\\s*\\g<ctorArgs>)?)?))",
+ "typeDecl": ".+?",
+ "indentChar": "[ \\t]",
+ "indentBlockEnd": "^(?!\\1[ \\t]|[ \\t]*$)",
+ "maybeBirdTrack": "^"
+ },
+ "patterns": [
+ {
+ "name": "keyword.operator.function.infix.purescript",
+ "match": "(`)(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(`)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.purescript"
+ },
+ "2": {
+ "name": "punctuation.definition.entity.purescript"
+ }
+ }
+ },
+ {
+ "name": "meta.declaration.module.purescript",
+ "begin": "^\\s*\\b(module)(?!')\\b",
+ "end": "(where)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.purescript"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.other.purescript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#module_name"
+ },
+ {
+ "include": "#module_exports"
+ },
+ {
+ "name": "invalid.purescript",
+ "match": "[a-z]+"
+ }
+ ]
+ },
+ {
+ "name": "meta.declaration.typeclass.purescript",
+ "begin": "^\\s*\\b(class)(?!')\\b",
+ "end": "\\b(where)\\b|$",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.purescript"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.other.purescript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "name": "meta.declaration.instance.purescript",
+ "begin": "^\\s*\\b(else\\s+)?(derive\\s+)?(newtype\\s+)?(instance)(?!')\\b",
+ "end": "\\b(where)\\b|$",
+ "contentName": "meta.type-signature.purescript",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.purescript"
+ },
+ "2": {
+ "name": "keyword.other.purescript"
+ },
+ "3": {
+ "name": "keyword.other.purescript"
+ },
+ "4": {
+ "name": "keyword.other.purescript"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.other.purescript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "name": "meta.foreign.data.purescript",
+ "begin": "^(\\s*)(foreign)\\s+(import)\\s+(data)\\s+([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)",
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
+ "contentName": "meta.kind-signature.purescript",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.purescript"
+ },
+ "3": {
+ "name": "keyword.other.purescript"
+ },
+ "4": {
+ "name": "keyword.other.purescript"
+ },
+ "5": {
+ "name": "entity.name.type.purescript"
+ },
+ "6": {
+ "name": "keyword.other.double-colon.purescript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double_colon"
+ },
+ {
+ "include": "#kind_signature"
+ }
+ ]
+ },
+ {
+ "name": "meta.foreign.purescript",
+ "begin": "^(\\s*)(foreign)\\s+(import)\\s+([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)",
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
+ "contentName": "meta.type-signature.purescript",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.purescript"
+ },
+ "3": {
+ "name": "keyword.other.purescript"
+ },
+ "4": {
+ "name": "entity.name.function.purescript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double_colon"
+ },
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "name": "meta.import.purescript",
+ "begin": "^\\s*\\b(import)(?!')\\b",
+ "end": "($|(?=--))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.purescript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#module_name"
+ },
+ {
+ "include": "#module_exports"
+ },
+ {
+ "match": "\\b(as|hiding)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.purescript"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "name": "meta.declaration.type.data.purescript",
+ "begin": "^(\\s)*(data|newtype)\\s+(.+?)\\s*(?=\\=|$)",
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
+ "beginCaptures": {
+ "2": {
+ "name": "storage.type.data.purescript"
+ },
+ "3": {
+ "name": "meta.type-signature.purescript",
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "=",
+ "captures": {
+ "0": {
+ "name": "keyword.operator.assignment.purescript"
+ }
+ }
+ },
+ {
+ "match": "(?:(?:\\b([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<ctorArgs>(?:(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|(?:(?:[\\w()'→⇒\\[\\],]|->|=>)+\\s*)+))(?:\\s*(?:\\s+)\\s*\\g<ctorArgs>)?)?))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#data_ctor"
+ }
+ ]
+ },
+ "2": {
+ "name": "meta.type-signature.purescript",
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "\\|",
+ "captures": {
+ "0": {
+ "name": "punctuation.separator.pipe.purescript"
+ }
+ }
+ },
+ {
+ "include": "#record_types"
+ }
+ ]
+ },
+ {
+ "name": "meta.declaration.type.type.purescript",
+ "begin": "^(\\s)*(type)\\s+(.+?)\\s*(?=\\=|$)",
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
+ "contentName": "meta.type-signature.purescript",
+ "beginCaptures": {
+ "2": {
+ "name": "storage.type.data.purescript"
+ },
+ "3": {
+ "name": "meta.type-signature.purescript",
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "match": "=",
+ "captures": {
+ "0": {
+ "name": "keyword.operator.assignment.purescript"
+ }
+ }
+ },
+ {
+ "include": "#type_signature"
+ },
+ {
+ "include": "#record_types"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "name": "keyword.other.purescript",
+ "match": "^\\s*\\b(derive|where|data|type|newtype|infix[lr]?|foreign(\\s+import)?(\\s+data)?)(?!')\\b"
+ },
+ {
+ "name": "entity.name.function.typed-hole.purescript",
+ "match": "\\?(?:[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*|[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)"
+ },
+ {
+ "name": "storage.type.purescript",
+ "match": "^\\s*\\b(data|type|newtype)(?!')\\b"
+ },
+ {
+ "name": "keyword.control.purescript",
+ "match": "\\b(do|ado|if|then|else|case|of|let|in)(?!('|\\s*(:|=)))\\b"
+ },
+ {
+ "name": "constant.numeric.hex.purescript",
+ "match": "\\b(?<!\\$)0(x|X)[0-9a-fA-F]+\\b(?!\\$)"
+ },
+ {
+ "name": "constant.numeric.decimal.purescript",
+ "match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9]+(\\.)[0-9]+[eE][+-]?[0-9]+\\b)| # 1.1E+3\n (?:\\b[0-9]+[eE][+-]?[0-9]+\\b)| # 1E+3\n (?:\\b[0-9]+(\\.)[0-9]+\\b)| # 1.1\n (?:\\b[0-9]+\\b(?!\\.)) # 1\n)(?!\\$)",
+ "captures": {
+ "0": {
+ "name": "constant.numeric.decimal.purescript"
+ },
+ "1": {
+ "name": "meta.delimiter.decimal.period.purescript"
+ },
+ "2": {
+ "name": "meta.delimiter.decimal.period.purescript"
+ },
+ "3": {
+ "name": "meta.delimiter.decimal.period.purescript"
+ },
+ "4": {
+ "name": "meta.delimiter.decimal.period.purescript"
+ },
+ "5": {
+ "name": "meta.delimiter.decimal.period.purescript"
+ },
+ "6": {
+ "name": "meta.delimiter.decimal.period.purescript"
+ }
+ }
+ },
+ {
+ "name": "constant.language.boolean.purescript",
+ "match": "\\b(true|false)\\b"
+ },
+ {
+ "name": "constant.numeric.purescript",
+ "match": "\\b(([0-9]+_?)*[0-9]+|0([xX][0-9a-fA-F]+|[oO][0-7]+))\\b"
+ },
+ {
+ "name": "string.quoted.triple.purescript",
+ "begin": "\"\"\"",
+ "end": "\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.purescript"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.purescript"
+ }
+ }
+ },
+ {
+ "name": "string.quoted.double.purescript",
+ "begin": "\"",
+ "end": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.purescript"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.purescript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#characters"
+ },
+ {
+ "begin": "\\\\\\s",
+ "end": "\\\\",
+ "beginCaptures": {
+ "0": {
+ "name": "markup.other.escape.newline.begin.purescript"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "markup.other.escape.newline.end.purescript"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\S+",
+ "name": "invalid.illegal.character-not-allowed-here.purescript"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "name": "markup.other.escape.newline.purescript",
+ "match": "\\\\$"
+ },
+ {
+ "name": "string.quoted.single.purescript",
+ "match": "(')((?:[ -\\[\\]-~]|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_])))(')",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.purescript"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#characters"
+ }
+ ]
+ },
+ "7": {
+ "name": "punctuation.definition.string.end.purescript"
+ }
+ }
+ },
+ {
+ "include": "#function_type_declaration"
+ },
+ {
+ "match": "\\((?<paren>(?:[^()]|\\(\\g<paren>\\))*)(::|∷)(?<paren2>(?:[^()]|\\(\\g<paren2>\\))*)\\)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.other.double-colon.purescript"
+ },
+ "3": {
+ "name": "meta.type-signature.purescript",
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "^(\\s*)(?:(::|∷))",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.other.double-colon.purescript"
+ }
+ },
+ "end": "^(?!\\1[ \\t]*|[ \\t]*$)",
+ "patterns": [
+ {
+ "include": "#type_signature"
+ }
+ ]
+ },
+ {
+ "include": "#data_ctor"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#infix_op"
+ },
+ {
+ "name": "keyword.other.arrow.purescript",
+ "match": "\\<-|-\\>"
+ },
+ {
+ "name": "keyword.operator.purescript",
+ "match": "[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+"
+ },
+ {
+ "name": "punctuation.separator.comma.purescript",
+ "match": ","
+ }
+ ],
+ "repository": {
+ "block_comment": {
+ "patterns": [
+ {
+ "name": "comment.block.documentation.purescript",
+ "begin": "\\{-\\s*\\|",
+ "end": "-\\}",
+ "applyEndPatternLast": 1,
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.documentation.purescript"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.documentation.purescript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block_comment"
+ }
+ ]
+ },
+ {
+ "name": "comment.block.purescript",
+ "begin": "\\{-",
+ "end": "-\\}",
+ "applyEndPatternLast": 1,
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.purescript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block_comment"
+ }
+ ]
+ }
+ ]
+ },
+ "record_types": {
+ "patterns": [
+ {
+ "name": "meta.type.record.purescript",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.type.record.begin.purescript"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.type.record.end.purescript"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.separator.comma.purescript",
+ "match": ","
+ },
+ {
+ "include": "#record_field_declaration"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "(^[ \\t]+)?(?=--+\\s+\\|)",
+ "end": "(?!\\G)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.purescript"
+ }
+ },
+ "patterns": [
+ {
+ "name": "comment.line.double-dash.documentation.purescript",
+ "begin": "(--+)\\s+(\\|)",
+ "end": "\\n",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.purescript"
+ },
+ "2": {
+ "name": "punctuation.definition.comment.documentation.purescript"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=--+(?![\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]))",
+ "end": "(?!\\G)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.purescript"
+ }
+ },
+ "patterns": [
+ {
+ "name": "comment.line.double-dash.purescript",
+ "begin": "--",
+ "end": "\\n",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.purescript"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "include": "#block_comment"
+ }
+ ]
+ },
+ "characters": {
+ "patterns": [
+ {
+ "match": "(?:[ -\\[\\]-~]|(\\\\(?:NUL|SOH|STX|ETX|EOT|ENQ|ACK|BEL|BS|HT|LF|VT|FF|CR|SO|SI|DLE|DC1|DC2|DC3|DC4|NAK|SYN|ETB|CAN|EM|SUB|ESC|FS|GS|RS|US|SP|DEL|[abfnrtv\\\\\\\"'\\&]))|(\\\\o[0-7]+)|(\\\\x[0-9A-Fa-f]+)|(\\^[A-Z@\\[\\]\\\\\\^_]))",
+ "captures": {
+ "1": {
+ "name": "constant.character.escape.purescript"
+ },
+ "2": {
+ "name": "constant.character.escape.octal.purescript"
+ },
+ "3": {
+ "name": "constant.character.escape.hexadecimal.purescript"
+ },
+ "4": {
+ "name": "constant.character.escape.control.purescript"
+ }
+ }
+ }
+ ]
+ },
+ "infix_op": {
+ "patterns": [
+ {
+ "name": "entity.name.function.infix.purescript",
+ "match": "(?:\\((?!--+\\))[\\p{S}\\p{P}&&[^(),;\\[\\]`{}_\"']]+\\))"
+ }
+ ]
+ },
+ "module_exports": {
+ "patterns": [
+ {
+ "name": "meta.declaration.exports.purescript",
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "name": "entity.name.function.purescript",
+ "match": "\\b(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*"
+ },
+ {
+ "include": "#type_name"
+ },
+ {
+ "name": "punctuation.separator.comma.purescript",
+ "match": ","
+ },
+ {
+ "include": "#infix_op"
+ },
+ {
+ "name": "meta.other.constructor-list.purescript",
+ "match": "\\(.*?\\)"
+ }
+ ]
+ }
+ ]
+ },
+ "module_name": {
+ "patterns": [
+ {
+ "name": "support.other.module.purescript",
+ "match": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)*[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.?"
+ }
+ ]
+ },
+ "function_type_declaration": {
+ "patterns": [
+ {
+ "name": "meta.function.type-declaration.purescript",
+ "begin": "^(\\s*)([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\s*(?:(::|∷)(?!.*<-))",
+ "end": "^(?!\\1[ \\t]|[ \\t]*$)",
+ "contentName": "meta.type-signature.purescript",
+ "beginCaptures": {
+ "2": {
+ "name": "entity.name.function.purescript"
+ },
+ "3": {
+ "name": "keyword.other.double-colon.purescript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double_colon"
+ },
+ {
+ "include": "#type_signature"
+ }
+ ]
+ }
+ ]
+ },
+ "record_field_declaration": {
+ "patterns": [
+ {
+ "name": "meta.record-field.type-declaration.purescript",
+ "begin": "([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\s*(::|∷)",
+ "end": "(?=([\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)\\s*(::|∷)|})",
+ "contentName": "meta.type-signature.purescript",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "name": "entity.other.attribute-name.purescript",
+ "match": "(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.other.double-colon.purescript"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type_signature"
+ },
+ {
+ "include": "#record_types"
+ }
+ ]
+ }
+ ]
+ },
+ "kind_signature": {
+ "patterns": [
+ {
+ "name": "keyword.other.star.purescript",
+ "match": "\\*"
+ },
+ {
+ "name": "keyword.other.exclaimation-point.purescript",
+ "match": "!"
+ },
+ {
+ "name": "keyword.other.pound-sign.purescript",
+ "match": "#"
+ },
+ {
+ "name": "keyword.other.arrow.purescript",
+ "match": "->|→"
+ }
+ ]
+ },
+ "type_signature": {
+ "patterns": [
+ {
+ "name": "meta.class-constraints.purescript",
+ "match": "(?:(?:\\()(?:(?<classConstraints>(?:(?:(?:([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<classConstraint>(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(?:\\s*(?:\\s+)\\s*\\g<classConstraint>)?))))(?:\\s*(?:,)\\s*\\g<classConstraints>)?))(?:\\))(?:\\s*(=>|<=|⇐|⇒)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#class_constraint"
+ }
+ ]
+ },
+ "4": {
+ "name": "keyword.other.big-arrow.purescript"
+ }
+ }
+ },
+ {
+ "name": "meta.class-constraints.purescript",
+ "match": "((?:(?:([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<classConstraint>(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(?:\\s*(?:\\s+)\\s*\\g<classConstraint>)?))))\\s*(=>|<=|⇐|⇒)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#class_constraint"
+ }
+ ]
+ },
+ "4": {
+ "name": "keyword.other.big-arrow.purescript"
+ }
+ }
+ },
+ {
+ "name": "keyword.other.arrow.purescript",
+ "match": "->|→"
+ },
+ {
+ "name": "keyword.other.big-arrow.purescript",
+ "match": "=>|⇒"
+ },
+ {
+ "name": "keyword.other.big-arrow-left.purescript",
+ "match": "<=|⇐"
+ },
+ {
+ "name": "keyword.other.forall.purescript",
+ "match": "forall|∀"
+ },
+ {
+ "include": "#generic_type"
+ },
+ {
+ "include": "#type_name"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "type_name": {
+ "patterns": [
+ {
+ "name": "entity.name.type.purescript",
+ "match": "\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*"
+ }
+ ]
+ },
+ "data_ctor": {
+ "patterns": [
+ {
+ "name": "entity.name.tag.purescript",
+ "match": "\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*"
+ }
+ ]
+ },
+ "generic_type": {
+ "patterns": [
+ {
+ "name": "variable.other.generic-type.purescript",
+ "match": "\\b(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*"
+ }
+ ]
+ },
+ "double_colon": {
+ "patterns": [
+ {
+ "name": "keyword.other.double-colon.purescript",
+ "match": "(?:::|∷)"
+ }
+ ]
+ },
+ "class_constraint": {
+ "patterns": [
+ {
+ "name": "meta.class-constraint.purescript",
+ "match": "(?:(?:([\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*)\\s+)(?:(?<classConstraint>(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*|(?:[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*\\.)?[\\p{Ll}_][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)(?:\\s*(?:\\s+)\\s*\\g<classConstraint>)?)))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "name": "entity.name.type.purescript",
+ "match": "\\b[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*(?:\\.[\\p{Lu}\\p{Lt}][\\p{Ll}_\\p{Lu}\\p{Lt}\\p{Nd}']*)*"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#type_name"
+ },
+ {
+ "include": "#generic_type"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/python.tmLanguage.json b/node_modules/shiki/languages/python.tmLanguage.json
new file mode 100644
index 0000000..22715db
--- /dev/null
+++ b/node_modules/shiki/languages/python.tmLanguage.json
@@ -0,0 +1,4213 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/MagicStack/MagicPython/blob/master/grammars/MagicPython.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/MagicStack/MagicPython/commit/7d0f2b22a5ad8fccbd7341bc7b7a715169283044",
+ "name": "python",
+ "scopeName": "source.python",
+ "patterns": [
+ {
+ "include": "#statement"
+ },
+ {
+ "include": "#expression"
+ }
+ ],
+ "repository": {
+ "impossible": {
+ "comment": "This is a special rule that should be used where no match is desired. It is not a good idea to match something like '1{0}' because in some cases that can result in infinite loops in token generation. So the rule instead matches and impossible expression to allow a match to fail and move to the next token.",
+ "match": "$.^"
+ },
+ "statement": {
+ "patterns": [
+ {
+ "include": "#import"
+ },
+ {
+ "include": "#class-declaration"
+ },
+ {
+ "include": "#function-declaration"
+ },
+ {
+ "include": "#generator"
+ },
+ {
+ "include": "#statement-keyword"
+ },
+ {
+ "include": "#assignment-operator"
+ },
+ {
+ "include": "#decorator"
+ },
+ {
+ "include": "#docstring-statement"
+ },
+ {
+ "include": "#semicolon"
+ }
+ ]
+ },
+ "semicolon": {
+ "patterns": [
+ {
+ "name": "invalid.deprecated.semicolon.python",
+ "match": "\\;$"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "name": "comment.line.number-sign.python",
+ "contentName": "meta.typehint.comment.python",
+ "begin": "(?x)\n (?:\n \\# \\s* (type:)\n \\s*+ (?# we want `\\s*+` which is possessive quantifier since\n we do not actually want to backtrack when matching\n whitespace here)\n (?! $ | \\#)\n )\n",
+ "end": "(?:$|(?=\\#))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.typehint.comment.python"
+ },
+ "1": {
+ "name": "comment.typehint.directive.notation.python"
+ }
+ },
+ "patterns": [
+ {
+ "name": "comment.typehint.ignore.notation.python",
+ "match": "(?x)\n \\G ignore\n (?= \\s* (?: $ | \\#))\n"
+ },
+ {
+ "name": "comment.typehint.type.notation.python",
+ "match": "(?x)\n (?<!\\.)\\b(\n bool | bytes | float | int | object | str\n | List | Dict | Iterable | Sequence | Set\n | FrozenSet | Callable | Union | Tuple\n | Any | None\n )\\b\n"
+ },
+ {
+ "name": "comment.typehint.punctuation.notation.python",
+ "match": "([\\[\\]\\(\\),\\.\\=\\*]|(->))"
+ },
+ {
+ "name": "comment.typehint.variable.notation.python",
+ "match": "([[:alpha:]_]\\w*)"
+ }
+ ]
+ },
+ {
+ "include": "#comments-base"
+ }
+ ]
+ },
+ "docstring-statement": {
+ "begin": "^(?=\\s*[rR]?(\\'\\'\\'|\\\"\\\"\\\"|\\'|\\\"))",
+ "comment": "the string either terminates correctly or by the beginning of a new line (this is for single line docstrings that aren't terminated) AND it's not followed by another docstring",
+ "end": "((?<=\\1)|^)(?!\\s*[rR]?(\\'\\'\\'|\\\"\\\"\\\"|\\'|\\\"))",
+ "patterns": [
+ {
+ "include": "#docstring"
+ }
+ ]
+ },
+ "docstring": {
+ "patterns": [
+ {
+ "name": "string.quoted.docstring.multi.python",
+ "begin": "(\\'\\'\\'|\\\"\\\"\\\")",
+ "end": "(\\1)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#docstring-prompt"
+ },
+ {
+ "include": "#codetags"
+ },
+ {
+ "include": "#docstring-guts-unicode"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.docstring.raw.multi.python",
+ "begin": "([rR])(\\'\\'\\'|\\\"\\\"\\\")",
+ "end": "(\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.string.python"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ },
+ {
+ "include": "#docstring-prompt"
+ },
+ {
+ "include": "#codetags"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.docstring.single.python",
+ "begin": "(\\'|\\\")",
+ "end": "(\\1)|(\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#codetags"
+ },
+ {
+ "include": "#docstring-guts-unicode"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.docstring.raw.single.python",
+ "begin": "([rR])(\\'|\\\")",
+ "end": "(\\2)|(\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.string.python"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ },
+ {
+ "include": "#codetags"
+ }
+ ]
+ }
+ ]
+ },
+ "docstring-guts-unicode": {
+ "patterns": [
+ {
+ "include": "#escape-sequence-unicode"
+ },
+ {
+ "include": "#escape-sequence"
+ },
+ {
+ "include": "#string-line-continuation"
+ }
+ ]
+ },
+ "docstring-prompt": {
+ "match": "(?x)\n (?:\n (?:^|\\G) \\s* (?# '\\G' is necessary for ST)\n ((?:>>>|\\.\\.\\.) \\s) (?=\\s*\\S)\n )\n",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.python"
+ }
+ }
+ },
+ "statement-keyword": {
+ "patterns": [
+ {
+ "name": "storage.type.function.python",
+ "match": "\\b((async\\s+)?\\s*def)\\b"
+ },
+ {
+ "name": "keyword.control.flow.python",
+ "comment": "if `as` is eventually followed by `:` or line continuation\nit's probably control flow like:\n with foo as bar, \\\n Foo as Bar:\n try:\n do_stuff()\n except Exception as e:\n pass\n",
+ "match": "\\b(?<!\\.)as\\b(?=.*[:\\\\])"
+ },
+ {
+ "name": "keyword.control.import.python",
+ "comment": "other legal use of `as` is in an import",
+ "match": "\\b(?<!\\.)as\\b"
+ },
+ {
+ "name": "keyword.control.flow.python",
+ "match": "(?x)\n \\b(?<!\\.)(\n async | continue | del | assert | break | finally | for\n | from | elif | else | if | except | pass | raise\n | return | try | while | with\n )\\b\n"
+ },
+ {
+ "name": "storage.modifier.declaration.python",
+ "match": "(?x)\n \\b(?<!\\.)(\n global | nonlocal\n )\\b\n"
+ },
+ {
+ "name": "storage.type.class.python",
+ "match": "\\b(?<!\\.)(class)\\b"
+ },
+ {
+ "match": "(?x)\n ^\\s*(\n case | match\n )(?=\\s*([-+\\w\\d(\\[{'\":#]|$))\\b\n",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.python"
+ }
+ }
+ }
+ ]
+ },
+ "expression-bare": {
+ "comment": "valid Python expressions w/o comments and line continuation",
+ "patterns": [
+ {
+ "include": "#backticks"
+ },
+ {
+ "include": "#illegal-anno"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#regexp"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#lambda"
+ },
+ {
+ "include": "#generator"
+ },
+ {
+ "include": "#illegal-operator"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#curly-braces"
+ },
+ {
+ "include": "#item-access"
+ },
+ {
+ "include": "#list"
+ },
+ {
+ "include": "#odd-function-call"
+ },
+ {
+ "include": "#round-braces"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "include": "#builtin-functions"
+ },
+ {
+ "include": "#builtin-types"
+ },
+ {
+ "include": "#builtin-exceptions"
+ },
+ {
+ "include": "#magic-names"
+ },
+ {
+ "include": "#special-names"
+ },
+ {
+ "include": "#illegal-names"
+ },
+ {
+ "include": "#special-variables"
+ },
+ {
+ "include": "#ellipsis"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#line-continuation"
+ }
+ ]
+ },
+ "expression-base": {
+ "comment": "valid Python expressions with comments and line continuation",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#expression-bare"
+ },
+ {
+ "include": "#line-continuation"
+ }
+ ]
+ },
+ "expression": {
+ "comment": "All valid Python expressions",
+ "patterns": [
+ {
+ "include": "#expression-base"
+ },
+ {
+ "include": "#member-access"
+ },
+ {
+ "comment": "Tokenize identifiers to help linters",
+ "match": "(?x) \\b ([[:alpha:]_]\\w*) \\b"
+ }
+ ]
+ },
+ "member-access": {
+ "name": "meta.member.access.python",
+ "begin": "(\\.)\\s*(?!\\.)",
+ "end": "(?x)\n # stop when you've just read non-whitespace followed by non-word\n # i.e. when finished reading an identifier or function call\n (?<=\\S)(?=\\W) |\n # stop when seeing the start of something that's not a word,\n # i.e. when seeing a non-identifier\n (^|(?<=\\s))(?=[^\\\\\\w\\s]) |\n $\n",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.period.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call"
+ },
+ {
+ "include": "#member-access-base"
+ },
+ {
+ "include": "#member-access-attribute"
+ }
+ ]
+ },
+ "member-access-base": {
+ "patterns": [
+ {
+ "include": "#magic-names"
+ },
+ {
+ "include": "#illegal-names"
+ },
+ {
+ "include": "#illegal-object-name"
+ },
+ {
+ "include": "#special-names"
+ },
+ {
+ "include": "#line-continuation"
+ },
+ {
+ "include": "#item-access"
+ }
+ ]
+ },
+ "member-access-attribute": {
+ "comment": "Highlight attribute access in otherwise non-specialized cases.",
+ "name": "meta.attribute.python",
+ "match": "(?x)\n \\b ([[:alpha:]_]\\w*) \\b\n"
+ },
+ "special-names": {
+ "name": "constant.other.caps.python",
+ "match": "(?x)\n \\b\n # we want to see \"enough\", meaning 2 or more upper-case\n # letters in the beginning of the constant\n #\n # for more details refer to:\n # https://github.com/MagicStack/MagicPython/issues/42\n (\n _* [[:upper:]] [_\\d]* [[:upper:]]\n )\n [[:upper:]\\d]* (_\\w*)?\n \\b\n"
+ },
+ "curly-braces": {
+ "begin": "\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.dict.begin.python"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.dict.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.separator.dict.python",
+ "match": ":"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "list": {
+ "begin": "\\[",
+ "end": "\\]",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.list.begin.python"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.list.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "odd-function-call": {
+ "comment": "A bit obscured function call where there may have been an\narbitrary number of other operations to get the function.\nE.g. \"arr[idx](args)\"\n",
+ "begin": "(?x)\n (?<= \\] | \\) ) \\s*\n (?=\\()\n",
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-arguments"
+ }
+ ]
+ },
+ "round-braces": {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.begin.python"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "line-continuation": {
+ "patterns": [
+ {
+ "match": "(\\\\)\\s*(\\S.*$\\n?)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.continuation.line.python"
+ },
+ "2": {
+ "name": "invalid.illegal.line.continuation.python"
+ }
+ }
+ },
+ {
+ "begin": "(\\\\)\\s*$\\n?",
+ "end": "(?x)\n (?=^\\s*$)\n |\n (?! (\\s* [rR]? (\\'\\'\\'|\\\"\\\"\\\"|\\'|\\\"))\n |\n (\\G $) (?# '\\G' is necessary for ST)\n )\n",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.continuation.line.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "assignment-operator": {
+ "name": "keyword.operator.assignment.python",
+ "match": "(?x)\n <<= | >>= | //= | \\*\\*=\n | \\+= | -= | /= | @=\n | \\*= | %= | ~= | \\^= | &= | \\|=\n | =(?!=)\n"
+ },
+ "operator": {
+ "match": "(?x)\n \\b(?<!\\.)\n (?:\n (and | or | not | in | is) (?# 1)\n |\n (for | if | else | await | (?:yield(?:\\s+from)?)) (?# 2)\n )\n (?!\\s*:)\\b\n\n | (<< | >> | & | \\| | \\^ | ~) (?# 3)\n\n | (\\*\\* | \\* | \\+ | - | % | // | / | @) (?# 4)\n\n | (!= | == | >= | <= | < | >) (?# 5)\n\n | (:=) (?# 6)\n",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.logical.python"
+ },
+ "2": {
+ "name": "keyword.control.flow.python"
+ },
+ "3": {
+ "name": "keyword.operator.bitwise.python"
+ },
+ "4": {
+ "name": "keyword.operator.arithmetic.python"
+ },
+ "5": {
+ "name": "keyword.operator.comparison.python"
+ },
+ "6": {
+ "name": "keyword.operator.assignment.python"
+ }
+ }
+ },
+ "punctuation": {
+ "patterns": [
+ {
+ "name": "punctuation.separator.colon.python",
+ "match": ":"
+ },
+ {
+ "name": "punctuation.separator.element.python",
+ "match": ","
+ }
+ ]
+ },
+ "literal": {
+ "patterns": [
+ {
+ "name": "constant.language.python",
+ "match": "\\b(True|False|None|NotImplemented|Ellipsis)\\b"
+ },
+ {
+ "include": "#number"
+ }
+ ]
+ },
+ "number": {
+ "name": "constant.numeric.python",
+ "patterns": [
+ {
+ "include": "#number-float"
+ },
+ {
+ "include": "#number-dec"
+ },
+ {
+ "include": "#number-hex"
+ },
+ {
+ "include": "#number-oct"
+ },
+ {
+ "include": "#number-bin"
+ },
+ {
+ "include": "#number-long"
+ },
+ {
+ "name": "invalid.illegal.name.python",
+ "match": "\\b[0-9]+\\w+"
+ }
+ ]
+ },
+ "number-float": {
+ "name": "constant.numeric.float.python",
+ "match": "(?x)\n (?<! \\w)(?:\n (?:\n \\.[0-9](?: _?[0-9] )*\n |\n [0-9](?: _?[0-9] )* \\. [0-9](?: _?[0-9] )*\n |\n [0-9](?: _?[0-9] )* \\.\n ) (?: [eE][+-]?[0-9](?: _?[0-9] )* )?\n |\n [0-9](?: _?[0-9] )* (?: [eE][+-]?[0-9](?: _?[0-9] )* )\n )([jJ])?\\b\n",
+ "captures": {
+ "1": {
+ "name": "storage.type.imaginary.number.python"
+ }
+ }
+ },
+ "number-dec": {
+ "name": "constant.numeric.dec.python",
+ "match": "(?x)\n (?<![\\w\\.])(?:\n [1-9](?: _?[0-9] )*\n |\n 0+\n |\n [0-9](?: _?[0-9] )* ([jJ])\n |\n 0 ([0-9]+)(?![eE\\.])\n )\\b\n",
+ "captures": {
+ "1": {
+ "name": "storage.type.imaginary.number.python"
+ },
+ "2": {
+ "name": "invalid.illegal.dec.python"
+ }
+ }
+ },
+ "number-hex": {
+ "name": "constant.numeric.hex.python",
+ "match": "(?x)\n (?<![\\w\\.])\n (0[xX]) (_?[0-9a-fA-F])+\n \\b\n",
+ "captures": {
+ "1": {
+ "name": "storage.type.number.python"
+ }
+ }
+ },
+ "number-oct": {
+ "name": "constant.numeric.oct.python",
+ "match": "(?x)\n (?<![\\w\\.])\n (0[oO]) (_?[0-7])+\n \\b\n",
+ "captures": {
+ "1": {
+ "name": "storage.type.number.python"
+ }
+ }
+ },
+ "number-bin": {
+ "name": "constant.numeric.bin.python",
+ "match": "(?x)\n (?<![\\w\\.])\n (0[bB]) (_?[01])+\n \\b\n",
+ "captures": {
+ "1": {
+ "name": "storage.type.number.python"
+ }
+ }
+ },
+ "number-long": {
+ "name": "constant.numeric.bin.python",
+ "comment": "this is to support python2 syntax for long ints",
+ "match": "(?x)\n (?<![\\w\\.])\n ([1-9][0-9]* | 0) ([lL])\n \\b\n",
+ "captures": {
+ "2": {
+ "name": "storage.type.number.python"
+ }
+ }
+ },
+ "regexp": {
+ "patterns": [
+ {
+ "include": "#regexp-single-three-line"
+ },
+ {
+ "include": "#regexp-double-three-line"
+ },
+ {
+ "include": "#regexp-single-one-line"
+ },
+ {
+ "include": "#regexp-double-one-line"
+ }
+ ]
+ },
+ "string": {
+ "patterns": [
+ {
+ "include": "#string-quoted-multi-line"
+ },
+ {
+ "include": "#string-quoted-single-line"
+ },
+ {
+ "include": "#string-bin-quoted-multi-line"
+ },
+ {
+ "include": "#string-bin-quoted-single-line"
+ },
+ {
+ "include": "#string-raw-quoted-multi-line"
+ },
+ {
+ "include": "#string-raw-quoted-single-line"
+ },
+ {
+ "include": "#string-raw-bin-quoted-multi-line"
+ },
+ {
+ "include": "#string-raw-bin-quoted-single-line"
+ },
+ {
+ "include": "#fstring-fnorm-quoted-multi-line"
+ },
+ {
+ "include": "#fstring-fnorm-quoted-single-line"
+ },
+ {
+ "include": "#fstring-normf-quoted-multi-line"
+ },
+ {
+ "include": "#fstring-normf-quoted-single-line"
+ },
+ {
+ "include": "#fstring-raw-quoted-multi-line"
+ },
+ {
+ "include": "#fstring-raw-quoted-single-line"
+ }
+ ]
+ },
+ "string-unicode-guts": {
+ "patterns": [
+ {
+ "include": "#escape-sequence-unicode"
+ },
+ {
+ "include": "#string-entity"
+ },
+ {
+ "include": "#string-brace-formatting"
+ }
+ ]
+ },
+ "string-consume-escape": {
+ "match": "\\\\['\"\\n\\\\]"
+ },
+ "string-raw-guts": {
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ },
+ {
+ "include": "#string-formatting"
+ },
+ {
+ "include": "#string-brace-formatting"
+ }
+ ]
+ },
+ "string-raw-bin-guts": {
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ },
+ {
+ "include": "#string-formatting"
+ }
+ ]
+ },
+ "string-entity": {
+ "patterns": [
+ {
+ "include": "#escape-sequence"
+ },
+ {
+ "include": "#string-line-continuation"
+ },
+ {
+ "include": "#string-formatting"
+ }
+ ]
+ },
+ "fstring-guts": {
+ "patterns": [
+ {
+ "include": "#escape-sequence-unicode"
+ },
+ {
+ "include": "#escape-sequence"
+ },
+ {
+ "include": "#string-line-continuation"
+ },
+ {
+ "include": "#fstring-formatting"
+ }
+ ]
+ },
+ "fstring-raw-guts": {
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ },
+ {
+ "include": "#fstring-formatting"
+ }
+ ]
+ },
+ "fstring-illegal-single-brace": {
+ "comment": "it is illegal to have a multiline brace inside a single-line string",
+ "begin": "(\\{)(?=[^\\n}]*$\\n?)",
+ "end": "(\\})|(?=\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-terminator-single"
+ },
+ {
+ "include": "#f-expression"
+ }
+ ]
+ },
+ "fstring-illegal-multi-brace": {
+ "patterns": [
+ {
+ "include": "#impossible"
+ }
+ ]
+ },
+ "f-expression": {
+ "comment": "All valid Python expressions, except comments and line continuation",
+ "patterns": [
+ {
+ "include": "#expression-bare"
+ },
+ {
+ "include": "#member-access"
+ },
+ {
+ "comment": "Tokenize identifiers to help linters",
+ "match": "(?x) \\b ([[:alpha:]_]\\w*) \\b"
+ }
+ ]
+ },
+ "escape-sequence-unicode": {
+ "patterns": [
+ {
+ "name": "constant.character.escape.python",
+ "match": "(?x)\n \\\\ (\n u[0-9A-Fa-f]{4}\n | U[0-9A-Fa-f]{8}\n | N\\{[\\w\\s]+?\\}\n )\n"
+ }
+ ]
+ },
+ "escape-sequence": {
+ "name": "constant.character.escape.python",
+ "match": "(?x)\n \\\\ (\n x[0-9A-Fa-f]{2}\n | [0-7]{1,3}\n | [\\\\\"'abfnrtv]\n )\n"
+ },
+ "string-line-continuation": {
+ "name": "constant.language.python",
+ "match": "\\\\$"
+ },
+ "string-formatting": {
+ "name": "meta.format.percent.python",
+ "match": "(?x)\n (\n % (\\([\\w\\s]*\\))?\n [-+#0 ]*\n (\\d+|\\*)? (\\.(\\d+|\\*))?\n ([hlL])?\n [diouxXeEfFgGcrsab%]\n )\n",
+ "captures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ }
+ }
+ },
+ "string-brace-formatting": {
+ "patterns": [
+ {
+ "name": "meta.format.brace.python",
+ "match": "(?x)\n (\n {{ | }}\n | (?:\n {\n \\w* (\\.[[:alpha:]_]\\w* | \\[[^\\]'\"]+\\])*\n (![rsa])?\n ( : \\w? [<>=^]? [-+ ]? \\#?\n \\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )?\n })\n )\n",
+ "captures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ },
+ "3": {
+ "name": "storage.type.format.python"
+ },
+ "4": {
+ "name": "storage.type.format.python"
+ }
+ }
+ },
+ {
+ "name": "meta.format.brace.python",
+ "match": "(?x)\n (\n {\n \\w* (\\.[[:alpha:]_]\\w* | \\[[^\\]'\"]+\\])*\n (![rsa])?\n (:)\n [^'\"{}\\n]* (?:\n \\{ [^'\"}\\n]*? \\} [^'\"{}\\n]*\n )*\n }\n )\n",
+ "captures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ },
+ "3": {
+ "name": "storage.type.format.python"
+ },
+ "4": {
+ "name": "storage.type.format.python"
+ }
+ }
+ }
+ ]
+ },
+ "fstring-formatting": {
+ "patterns": [
+ {
+ "include": "#fstring-formatting-braces"
+ },
+ {
+ "include": "#fstring-formatting-singe-brace"
+ }
+ ]
+ },
+ "fstring-formatting-singe-brace": {
+ "name": "invalid.illegal.brace.python",
+ "match": "(}(?!}))"
+ },
+ "import": {
+ "comment": "Import statements used to correctly mark `from`, `import`, and `as`\n",
+ "patterns": [
+ {
+ "begin": "\\b(?<!\\.)(from)\\b(?=.+import)",
+ "end": "$|(?=import)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.import.python"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.separator.period.python",
+ "match": "\\.+"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(?<!\\.)(import)\\b",
+ "end": "$",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.import.python"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.control.import.python",
+ "match": "\\b(?<!\\.)as\\b"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "class-declaration": {
+ "patterns": [
+ {
+ "name": "meta.class.python",
+ "begin": "(?x)\n \\s*(class)\\s+\n (?=\n [[:alpha:]_]\\w* \\s* (:|\\()\n )\n",
+ "end": "(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.class.begin.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#class-name"
+ },
+ {
+ "include": "#class-inheritance"
+ }
+ ]
+ }
+ ]
+ },
+ "class-name": {
+ "patterns": [
+ {
+ "include": "#illegal-object-name"
+ },
+ {
+ "include": "#builtin-possible-callables"
+ },
+ {
+ "name": "entity.name.type.class.python",
+ "match": "(?x)\n \\b ([[:alpha:]_]\\w*) \\b\n"
+ }
+ ]
+ },
+ "class-inheritance": {
+ "name": "meta.class.inheritance.python",
+ "begin": "(\\()",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.inheritance.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.inheritance.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.operator.unpacking.arguments.python",
+ "match": "(\\*\\*|\\*)"
+ },
+ {
+ "name": "punctuation.separator.inheritance.python",
+ "match": ","
+ },
+ {
+ "name": "keyword.operator.assignment.python",
+ "match": "=(?!=)"
+ },
+ {
+ "name": "support.type.metaclass.python",
+ "match": "\\bmetaclass\\b"
+ },
+ {
+ "include": "#illegal-names"
+ },
+ {
+ "include": "#class-kwarg"
+ },
+ {
+ "include": "#call-wrapper-inheritance"
+ },
+ {
+ "include": "#expression-base"
+ },
+ {
+ "include": "#member-access-class"
+ },
+ {
+ "include": "#inheritance-identifier"
+ }
+ ]
+ },
+ "class-kwarg": {
+ "match": "(?x)\n \\b ([[:alpha:]_]\\w*) \\s*(=)(?!=)\n",
+ "captures": {
+ "1": {
+ "name": "entity.other.inherited-class.python variable.parameter.class.python"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.python"
+ }
+ }
+ },
+ "inheritance-identifier": {
+ "match": "(?x)\n \\b ([[:alpha:]_]\\w*) \\b\n",
+ "captures": {
+ "1": {
+ "name": "entity.other.inherited-class.python"
+ }
+ }
+ },
+ "member-access-class": {
+ "name": "meta.member.access.python",
+ "begin": "(\\.)\\s*(?!\\.)",
+ "end": "(?<=\\S)(?=\\W)|$",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.period.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#call-wrapper-inheritance"
+ },
+ {
+ "include": "#member-access-base"
+ },
+ {
+ "include": "#inheritance-identifier"
+ }
+ ]
+ },
+ "lambda": {
+ "patterns": [
+ {
+ "match": "((?<=\\.)lambda|lambda(?=\\s*[\\.=]))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.python"
+ }
+ }
+ },
+ {
+ "match": "\\b(lambda)\\s*?(?=[,\\n]|$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.function.lambda.python"
+ }
+ }
+ },
+ {
+ "name": "meta.lambda-function.python",
+ "begin": "(?x)\n \\b (lambda) \\b\n",
+ "end": "(:)|(\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.lambda.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.function.lambda.begin.python"
+ }
+ },
+ "contentName": "meta.function.lambda.parameters.python",
+ "patterns": [
+ {
+ "name": "keyword.operator.positional.parameter.python",
+ "match": "/"
+ },
+ {
+ "name": "keyword.operator.unpacking.parameter.python",
+ "match": "(\\*\\*|\\*)"
+ },
+ {
+ "include": "#lambda-nested-incomplete"
+ },
+ {
+ "include": "#illegal-names"
+ },
+ {
+ "match": "([[:alpha:]_]\\w*)\\s*(?:(,)|(?=:|$))",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.function.language.python"
+ },
+ "2": {
+ "name": "punctuation.separator.parameters.python"
+ }
+ }
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#backticks"
+ },
+ {
+ "include": "#illegal-anno"
+ },
+ {
+ "include": "#lambda-parameter-with-default"
+ },
+ {
+ "include": "#line-continuation"
+ },
+ {
+ "include": "#illegal-operator"
+ }
+ ]
+ }
+ ]
+ },
+ "lambda-incomplete": {
+ "name": "storage.type.function.lambda.python",
+ "match": "\\blambda(?=\\s*[,)])"
+ },
+ "lambda-nested-incomplete": {
+ "name": "storage.type.function.lambda.python",
+ "match": "\\blambda(?=\\s*[:,)])"
+ },
+ "lambda-parameter-with-default": {
+ "begin": "(?x)\n \\b\n ([[:alpha:]_]\\w*) \\s* (=)\n",
+ "end": "(,)|(?=:|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.parameter.function.language.python"
+ },
+ "2": {
+ "name": "keyword.operator.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.parameters.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "generator": {
+ "comment": "Match \"for ... in\" construct used in generators and for loops to\ncorrectly identify the \"in\" as a control flow keyword.\n",
+ "begin": "\\bfor\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.flow.python"
+ }
+ },
+ "end": "\\bin\\b",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.flow.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "function-declaration": {
+ "name": "meta.function.python",
+ "begin": "(?x)\n \\s*\n (?:\\b(async) \\s+)? \\b(def)\\s+\n (?=\n [[:alpha:]_][[:word:]]* \\s* \\(\n )\n",
+ "end": "(:|(?=[#'\"\\n]))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.async.python"
+ },
+ "2": {
+ "name": "storage.type.function.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.function.begin.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-def-name"
+ },
+ {
+ "include": "#parameters"
+ },
+ {
+ "include": "#line-continuation"
+ },
+ {
+ "include": "#return-annotation"
+ }
+ ]
+ },
+ "function-def-name": {
+ "patterns": [
+ {
+ "include": "#illegal-object-name"
+ },
+ {
+ "include": "#builtin-possible-callables"
+ },
+ {
+ "name": "entity.name.function.python",
+ "match": "(?x)\n \\b ([[:alpha:]_]\\w*) \\b\n"
+ }
+ ]
+ },
+ "parameters": {
+ "name": "meta.function.parameters.python",
+ "begin": "(\\()",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.operator.positional.parameter.python",
+ "match": "/"
+ },
+ {
+ "name": "keyword.operator.unpacking.parameter.python",
+ "match": "(\\*\\*|\\*)"
+ },
+ {
+ "include": "#lambda-incomplete"
+ },
+ {
+ "include": "#illegal-names"
+ },
+ {
+ "include": "#illegal-object-name"
+ },
+ {
+ "include": "#parameter-special"
+ },
+ {
+ "match": "(?x)\n ([[:alpha:]_]\\w*)\n \\s* (?: (,) | (?=[)#\\n=]))\n",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.function.language.python"
+ },
+ "2": {
+ "name": "punctuation.separator.parameters.python"
+ }
+ }
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#loose-default"
+ },
+ {
+ "include": "#annotated-parameter"
+ }
+ ]
+ },
+ "parameter-special": {
+ "match": "(?x)\n \\b ((self)|(cls)) \\b \\s*(?:(,)|(?=\\)))\n",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.function.language.python"
+ },
+ "2": {
+ "name": "variable.parameter.function.language.special.self.python"
+ },
+ "3": {
+ "name": "variable.parameter.function.language.special.cls.python"
+ },
+ "4": {
+ "name": "punctuation.separator.parameters.python"
+ }
+ }
+ },
+ "loose-default": {
+ "begin": "(=)",
+ "end": "(,)|(?=\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.parameters.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "annotated-parameter": {
+ "begin": "(?x)\n \\b\n ([[:alpha:]_]\\w*) \\s* (:)\n",
+ "end": "(,)|(?=\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.parameter.function.language.python"
+ },
+ "2": {
+ "name": "punctuation.separator.annotation.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.parameters.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "name": "keyword.operator.assignment.python",
+ "match": "=(?!=)"
+ }
+ ]
+ },
+ "return-annotation": {
+ "begin": "(->)",
+ "end": "(?=:)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.annotation.result.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "item-access": {
+ "patterns": [
+ {
+ "name": "meta.item-access.python",
+ "begin": "(?x)\n \\b(?=\n [[:alpha:]_]\\w* \\s* \\[\n )\n",
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#item-name"
+ },
+ {
+ "include": "#item-index"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "item-name": {
+ "patterns": [
+ {
+ "include": "#special-variables"
+ },
+ {
+ "include": "#builtin-functions"
+ },
+ {
+ "include": "#special-names"
+ },
+ {
+ "name": "meta.indexed-name.python",
+ "match": "(?x)\n \\b ([[:alpha:]_]\\w*) \\b\n"
+ }
+ ]
+ },
+ "item-index": {
+ "begin": "(\\[)",
+ "end": "(?=\\])",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.python"
+ }
+ },
+ "contentName": "meta.item-access.arguments.python",
+ "patterns": [
+ {
+ "name": "punctuation.separator.slice.python",
+ "match": ":"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "decorator": {
+ "name": "meta.function.decorator.python",
+ "begin": "(?x)\n ^\\s*\n ((@)) \\s* (?=[[:alpha:]_]\\w*)\n",
+ "end": "(?x)\n ( \\) )\n # trailing whitespace and comments are legal\n (?: (.*?) (?=\\s*(?:\\#|$)) )\n | (?=\\n|\\#)\n",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.decorator.python"
+ },
+ "2": {
+ "name": "punctuation.definition.decorator.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.decorator.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#decorator-name"
+ },
+ {
+ "include": "#function-arguments"
+ }
+ ]
+ },
+ "decorator-name": {
+ "patterns": [
+ {
+ "include": "#builtin-callables"
+ },
+ {
+ "include": "#illegal-object-name"
+ },
+ {
+ "name": "entity.name.function.decorator.python",
+ "match": "(?x)\n ([[:alpha:]_]\\w*) | (\\.)\n",
+ "captures": {
+ "2": {
+ "name": "punctuation.separator.period.python"
+ }
+ }
+ },
+ {
+ "include": "#line-continuation"
+ },
+ {
+ "name": "invalid.illegal.decorator.python",
+ "match": "(?x)\n \\s* ([^([:alpha:]\\s_\\.#\\\\] .*?) (?=\\#|$)\n",
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.decorator.python"
+ }
+ }
+ }
+ ]
+ },
+ "call-wrapper-inheritance": {
+ "comment": "same as a function call, but in inheritance context",
+ "name": "meta.function-call.python",
+ "begin": "(?x)\n \\b(?=\n ([[:alpha:]_]\\w*) \\s* (\\()\n )\n",
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#inheritance-name"
+ },
+ {
+ "include": "#function-arguments"
+ }
+ ]
+ },
+ "inheritance-name": {
+ "patterns": [
+ {
+ "include": "#lambda-incomplete"
+ },
+ {
+ "include": "#builtin-possible-callables"
+ },
+ {
+ "include": "#inheritance-identifier"
+ }
+ ]
+ },
+ "function-call": {
+ "name": "meta.function-call.python",
+ "comment": "Regular function call of the type \"name(args)\"",
+ "begin": "(?x)\n \\b(?=\n ([[:alpha:]_]\\w*) \\s* (\\()\n )\n",
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#special-variables"
+ },
+ {
+ "include": "#function-name"
+ },
+ {
+ "include": "#function-arguments"
+ }
+ ]
+ },
+ "function-name": {
+ "patterns": [
+ {
+ "include": "#builtin-possible-callables"
+ },
+ {
+ "comment": "Some color schemas support meta.function-call.generic scope",
+ "name": "meta.function-call.generic.python",
+ "match": "(?x)\n \\b ([[:alpha:]_]\\w*) \\b\n"
+ }
+ ]
+ },
+ "function-arguments": {
+ "begin": "(\\()",
+ "end": "(?=\\))(?!\\)\\s*\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.python"
+ }
+ },
+ "contentName": "meta.function-call.arguments.python",
+ "patterns": [
+ {
+ "name": "punctuation.separator.arguments.python",
+ "match": "(,)"
+ },
+ {
+ "match": "(?x)\n (?:(?<=[,(])|^) \\s* (\\*{1,2})\n",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.unpacking.arguments.python"
+ }
+ }
+ },
+ {
+ "include": "#lambda-incomplete"
+ },
+ {
+ "include": "#illegal-names"
+ },
+ {
+ "match": "\\b([[:alpha:]_]\\w*)\\s*(=)(?!=)",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.function-call.python"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.python"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.assignment.python",
+ "match": "=(?!=)"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "match": "\\s*(\\))\\s*(\\()",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.python"
+ },
+ "2": {
+ "name": "punctuation.definition.arguments.begin.python"
+ }
+ }
+ }
+ ]
+ },
+ "builtin-callables": {
+ "patterns": [
+ {
+ "include": "#illegal-names"
+ },
+ {
+ "include": "#illegal-object-name"
+ },
+ {
+ "include": "#builtin-exceptions"
+ },
+ {
+ "include": "#builtin-functions"
+ },
+ {
+ "include": "#builtin-types"
+ }
+ ]
+ },
+ "builtin-possible-callables": {
+ "patterns": [
+ {
+ "include": "#builtin-callables"
+ },
+ {
+ "include": "#magic-names"
+ }
+ ]
+ },
+ "builtin-exceptions": {
+ "name": "support.type.exception.python",
+ "match": "(?x) (?<!\\.) \\b(\n (\n Arithmetic | Assertion | Attribute | Buffer | BlockingIO\n | BrokenPipe | ChildProcess\n | (Connection (Aborted | Refused | Reset)?)\n | EOF | Environment | FileExists | FileNotFound\n | FloatingPoint | IO | Import | Indentation | Index | Interrupted\n | IsADirectory | NotADirectory | Permission | ProcessLookup\n | Timeout\n | Key | Lookup | Memory | Name | NotImplemented | OS | Overflow\n | Reference | Runtime | Recursion | Syntax | System\n | Tab | Type | UnboundLocal | Unicode(Encode|Decode|Translate)?\n | Value | Windows | ZeroDivision | ModuleNotFound\n ) Error\n|\n ((Pending)?Deprecation | Runtime | Syntax | User | Future | Import\n | Unicode | Bytes | Resource\n )? Warning\n|\n SystemExit | Stop(Async)?Iteration\n | KeyboardInterrupt\n | GeneratorExit | (Base)?Exception\n)\\b\n"
+ },
+ "builtin-functions": {
+ "patterns": [
+ {
+ "name": "support.function.builtin.python",
+ "match": "(?x)\n (?<!\\.) \\b(\n __import__ | abs | aiter | all | any | anext | ascii | bin\n | breakpoint | callable | chr | compile | copyright | credits\n | delattr | dir | divmod | enumerate | eval | exec | exit\n | filter | format | getattr | globals | hasattr | hash | help\n | hex | id | input | isinstance | issubclass | iter | len\n | license | locals | map | max | memoryview | min | next\n | oct | open | ord | pow | print | quit | range | reload | repr\n | reversed | round | setattr | sorted | sum | vars | zip\n )\\b\n"
+ },
+ {
+ "name": "variable.legacy.builtin.python",
+ "match": "(?x)\n (?<!\\.) \\b(\n file | reduce | intern | raw_input | unicode | cmp | basestring\n | execfile | long | xrange\n )\\b\n"
+ }
+ ]
+ },
+ "builtin-types": {
+ "name": "support.type.python",
+ "match": "(?x)\n (?<!\\.) \\b(\n bool | bytearray | bytes | classmethod | complex | dict\n | float | frozenset | int | list | object | property\n | set | slice | staticmethod | str | tuple | type\n\n (?# Although 'super' is not a type, it's related to types,\n and is special enough to be highlighted differently from\n other built-ins)\n | super\n )\\b\n"
+ },
+ "magic-function-names": {
+ "comment": "these methods have magic interpretation by python and are generally called\nindirectly through syntactic constructs\n",
+ "match": "(?x)\n \\b(\n __(?:\n abs | add | aenter | aexit | aiter | and | anext\n | await | bool | call | ceil | class_getitem\n | cmp | coerce | complex | contains | copy\n | deepcopy | del | delattr | delete | delitem\n | delslice | dir | div | divmod | enter | eq\n | exit | float | floor | floordiv | format | ge\n | get | getattr | getattribute | getinitargs\n | getitem | getnewargs | getslice | getstate | gt\n | hash | hex | iadd | iand | idiv | ifloordiv |\n | ilshift | imod | imul | index | init\n | instancecheck | int | invert | ior | ipow\n | irshift | isub | iter | itruediv | ixor | le\n | len | long | lshift | lt | missing | mod | mul\n | ne | neg | new | next | nonzero | oct | or | pos\n | pow | radd | rand | rdiv | rdivmod | reduce\n | reduce_ex | repr | reversed | rfloordiv |\n | rlshift | rmod | rmul | ror | round | rpow\n | rrshift | rshift | rsub | rtruediv | rxor | set\n | setattr | setitem | set_name | setslice\n | setstate | sizeof | str | sub | subclasscheck\n | truediv | trunc | unicode | xor | matmul\n | rmatmul | imatmul | init_subclass | set_name\n | fspath | bytes | prepare | length_hint\n )__\n )\\b\n",
+ "captures": {
+ "1": {
+ "name": "support.function.magic.python"
+ }
+ }
+ },
+ "magic-variable-names": {
+ "comment": "magic variables which a class/module may have.",
+ "match": "(?x)\n \\b(\n __(?:\n all | annotations | bases | builtins | class\n | closure | code | debug | defaults | dict | doc | file | func\n | globals | kwdefaults | match_args | members | metaclass | methods\n | module | mro | mro_entries | name | qualname | post_init | self\n | signature | slots | subclasses | version | weakref | wrapped\n | classcell | spec | path | package | future | traceback\n )__\n )\\b\n",
+ "captures": {
+ "1": {
+ "name": "support.variable.magic.python"
+ }
+ }
+ },
+ "magic-names": {
+ "patterns": [
+ {
+ "include": "#magic-function-names"
+ },
+ {
+ "include": "#magic-variable-names"
+ }
+ ]
+ },
+ "illegal-names": {
+ "match": "(?x)\n \\b(?:\n (\n and | assert | async | await | break | class | continue | def\n | del | elif | else | except | finally | for | from | global\n | if | in | is | (?<=\\.)lambda | lambda(?=\\s*[\\.=])\n | nonlocal | not | or | pass | raise | return | try | while | with\n | yield\n ) | (\n as | import\n )\n )\\b\n",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.python"
+ },
+ "2": {
+ "name": "keyword.control.import.python"
+ }
+ }
+ },
+ "special-variables": {
+ "match": "(?x)\n \\b (?<!\\.) (?:\n (self) | (cls)\n )\\b\n",
+ "captures": {
+ "1": {
+ "name": "variable.language.special.self.python"
+ },
+ "2": {
+ "name": "variable.language.special.cls.python"
+ }
+ }
+ },
+ "ellipsis": {
+ "name": "constant.other.ellipsis.python",
+ "match": "\\.\\.\\."
+ },
+ "backticks": {
+ "name": "invalid.deprecated.backtick.python",
+ "begin": "\\`",
+ "end": "(?:\\`|(?<!\\\\)(\\n))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "illegal-operator": {
+ "patterns": [
+ {
+ "name": "invalid.illegal.operator.python",
+ "match": "&&|\\|\\||--|\\+\\+"
+ },
+ {
+ "name": "invalid.illegal.operator.python",
+ "match": "[?$]"
+ },
+ {
+ "name": "invalid.illegal.operator.python",
+ "comment": "We don't want `!` to flash when we're typing `!=`",
+ "match": "!\\b"
+ }
+ ]
+ },
+ "illegal-object-name": {
+ "comment": "It's illegal to name class or function \"True\"",
+ "name": "keyword.illegal.name.python",
+ "match": "\\b(True|False|None)\\b"
+ },
+ "illegal-anno": {
+ "name": "invalid.illegal.annotation.python",
+ "match": "->"
+ },
+ "regexp-base-expression": {
+ "patterns": [
+ {
+ "include": "#regexp-quantifier"
+ },
+ {
+ "include": "#regexp-base-common"
+ }
+ ]
+ },
+ "fregexp-base-expression": {
+ "patterns": [
+ {
+ "include": "#fregexp-quantifier"
+ },
+ {
+ "include": "#fstring-formatting-braces"
+ },
+ {
+ "match": "\\{.*?\\}"
+ },
+ {
+ "include": "#regexp-base-common"
+ }
+ ]
+ },
+ "fstring-formatting-braces": {
+ "patterns": [
+ {
+ "comment": "empty braces are illegal",
+ "match": "({)(\\s*?)(})",
+ "captures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ },
+ "2": {
+ "name": "invalid.illegal.brace.python"
+ },
+ "3": {
+ "name": "constant.character.format.placeholder.other.python"
+ }
+ }
+ },
+ {
+ "name": "constant.character.escape.python",
+ "match": "({{|}})"
+ }
+ ]
+ },
+ "regexp-base-common": {
+ "patterns": [
+ {
+ "name": "support.other.match.any.regexp",
+ "match": "\\."
+ },
+ {
+ "name": "support.other.match.begin.regexp",
+ "match": "\\^"
+ },
+ {
+ "name": "support.other.match.end.regexp",
+ "match": "\\$"
+ },
+ {
+ "name": "keyword.operator.quantifier.regexp",
+ "match": "[+*?]\\??"
+ },
+ {
+ "name": "keyword.operator.disjunction.regexp",
+ "match": "\\|"
+ },
+ {
+ "include": "#regexp-escape-sequence"
+ }
+ ]
+ },
+ "regexp-quantifier": {
+ "name": "keyword.operator.quantifier.regexp",
+ "match": "(?x)\n \\{(\n \\d+ | \\d+,(\\d+)? | ,\\d+\n )\\}\n"
+ },
+ "fregexp-quantifier": {
+ "name": "keyword.operator.quantifier.regexp",
+ "match": "(?x)\n \\{\\{(\n \\d+ | \\d+,(\\d+)? | ,\\d+\n )\\}\\}\n"
+ },
+ "regexp-backreference-number": {
+ "name": "meta.backreference.regexp",
+ "match": "(\\\\[1-9]\\d?)",
+ "captures": {
+ "1": {
+ "name": "entity.name.tag.backreference.regexp"
+ }
+ }
+ },
+ "regexp-backreference": {
+ "name": "meta.backreference.named.regexp",
+ "match": "(?x)\n (\\() (\\?P= \\w+(?:\\s+[[:alnum:]]+)?) (\\))\n",
+ "captures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.begin.regexp"
+ },
+ "2": {
+ "name": "entity.name.tag.named.backreference.regexp"
+ },
+ "3": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.end.regexp"
+ }
+ }
+ },
+ "regexp-flags": {
+ "name": "storage.modifier.flag.regexp",
+ "match": "\\(\\?[aiLmsux]+\\)"
+ },
+ "regexp-escape-special": {
+ "name": "support.other.escape.special.regexp",
+ "match": "\\\\([AbBdDsSwWZ])"
+ },
+ "regexp-escape-character": {
+ "name": "constant.character.escape.regexp",
+ "match": "(?x)\n \\\\ (\n x[0-9A-Fa-f]{2}\n | 0[0-7]{1,2}\n | [0-7]{3}\n )\n"
+ },
+ "regexp-escape-unicode": {
+ "name": "constant.character.unicode.regexp",
+ "match": "(?x)\n \\\\ (\n u[0-9A-Fa-f]{4}\n | U[0-9A-Fa-f]{8}\n )\n"
+ },
+ "regexp-escape-catchall": {
+ "name": "constant.character.escape.regexp",
+ "match": "\\\\(.|\\n)"
+ },
+ "regexp-escape-sequence": {
+ "patterns": [
+ {
+ "include": "#regexp-escape-special"
+ },
+ {
+ "include": "#regexp-escape-character"
+ },
+ {
+ "include": "#regexp-escape-unicode"
+ },
+ {
+ "include": "#regexp-backreference-number"
+ },
+ {
+ "include": "#regexp-escape-catchall"
+ }
+ ]
+ },
+ "regexp-charecter-set-escapes": {
+ "patterns": [
+ {
+ "name": "constant.character.escape.regexp",
+ "match": "\\\\[abfnrtv\\\\]"
+ },
+ {
+ "include": "#regexp-escape-special"
+ },
+ {
+ "name": "constant.character.escape.regexp",
+ "match": "\\\\([0-7]{1,3})"
+ },
+ {
+ "include": "#regexp-escape-character"
+ },
+ {
+ "include": "#regexp-escape-unicode"
+ },
+ {
+ "include": "#regexp-escape-catchall"
+ }
+ ]
+ },
+ "codetags": {
+ "match": "(?:\\b(NOTE|XXX|HACK|FIXME|BUG|TODO)\\b)",
+ "captures": {
+ "1": {
+ "name": "keyword.codetag.notation.python"
+ }
+ }
+ },
+ "comments-base": {
+ "name": "comment.line.number-sign.python",
+ "begin": "(\\#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.python"
+ }
+ },
+ "end": "($)",
+ "patterns": [
+ {
+ "include": "#codetags"
+ }
+ ]
+ },
+ "comments-string-single-three": {
+ "name": "comment.line.number-sign.python",
+ "begin": "(\\#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.python"
+ }
+ },
+ "end": "($|(?='''))",
+ "patterns": [
+ {
+ "include": "#codetags"
+ }
+ ]
+ },
+ "comments-string-double-three": {
+ "name": "comment.line.number-sign.python",
+ "begin": "(\\#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.python"
+ }
+ },
+ "end": "($|(?=\"\"\"))",
+ "patterns": [
+ {
+ "include": "#codetags"
+ }
+ ]
+ },
+ "single-one-regexp-expression": {
+ "patterns": [
+ {
+ "include": "#regexp-base-expression"
+ },
+ {
+ "include": "#single-one-regexp-character-set"
+ },
+ {
+ "include": "#single-one-regexp-comments"
+ },
+ {
+ "include": "#regexp-flags"
+ },
+ {
+ "include": "#single-one-regexp-named-group"
+ },
+ {
+ "include": "#regexp-backreference"
+ },
+ {
+ "include": "#single-one-regexp-lookahead"
+ },
+ {
+ "include": "#single-one-regexp-lookahead-negative"
+ },
+ {
+ "include": "#single-one-regexp-lookbehind"
+ },
+ {
+ "include": "#single-one-regexp-lookbehind-negative"
+ },
+ {
+ "include": "#single-one-regexp-conditional"
+ },
+ {
+ "include": "#single-one-regexp-parentheses-non-capturing"
+ },
+ {
+ "include": "#single-one-regexp-parentheses"
+ }
+ ]
+ },
+ "single-one-regexp-character-set": {
+ "patterns": [
+ {
+ "match": "(?x)\n \\[ \\^? \\] (?! .*?\\])\n"
+ },
+ {
+ "name": "meta.character.set.regexp",
+ "begin": "(\\[)(\\^)?(\\])?",
+ "end": "(\\]|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.character.set.begin.regexp constant.other.set.regexp"
+ },
+ "2": {
+ "name": "keyword.operator.negation.regexp"
+ },
+ "3": {
+ "name": "constant.character.set.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.character.set.end.regexp constant.other.set.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp-charecter-set-escapes"
+ },
+ {
+ "name": "constant.character.set.regexp",
+ "match": "[^\\n]"
+ }
+ ]
+ }
+ ]
+ },
+ "single-one-regexp-named-group": {
+ "name": "meta.named.regexp",
+ "begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
+ },
+ "2": {
+ "name": "entity.name.tag.named.group.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "single-one-regexp-comments": {
+ "name": "comment.regexp",
+ "begin": "\\(\\?#",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.comment.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.comment.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#codetags"
+ }
+ ]
+ },
+ "single-one-regexp-lookahead": {
+ "begin": "(\\()\\?=",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "single-one-regexp-lookahead-negative": {
+ "begin": "(\\()\\?!",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "single-one-regexp-lookbehind": {
+ "begin": "(\\()\\?<=",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "single-one-regexp-lookbehind-negative": {
+ "begin": "(\\()\\?<!",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "single-one-regexp-conditional": {
+ "begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.conditional.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "single-one-regexp-parentheses-non-capturing": {
+ "begin": "\\(\\?:",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "single-one-regexp-parentheses": {
+ "begin": "\\(",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "single-three-regexp-expression": {
+ "patterns": [
+ {
+ "include": "#regexp-base-expression"
+ },
+ {
+ "include": "#single-three-regexp-character-set"
+ },
+ {
+ "include": "#single-three-regexp-comments"
+ },
+ {
+ "include": "#regexp-flags"
+ },
+ {
+ "include": "#single-three-regexp-named-group"
+ },
+ {
+ "include": "#regexp-backreference"
+ },
+ {
+ "include": "#single-three-regexp-lookahead"
+ },
+ {
+ "include": "#single-three-regexp-lookahead-negative"
+ },
+ {
+ "include": "#single-three-regexp-lookbehind"
+ },
+ {
+ "include": "#single-three-regexp-lookbehind-negative"
+ },
+ {
+ "include": "#single-three-regexp-conditional"
+ },
+ {
+ "include": "#single-three-regexp-parentheses-non-capturing"
+ },
+ {
+ "include": "#single-three-regexp-parentheses"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-regexp-character-set": {
+ "patterns": [
+ {
+ "match": "(?x)\n \\[ \\^? \\] (?! .*?\\])\n"
+ },
+ {
+ "name": "meta.character.set.regexp",
+ "begin": "(\\[)(\\^)?(\\])?",
+ "end": "(\\]|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.character.set.begin.regexp constant.other.set.regexp"
+ },
+ "2": {
+ "name": "keyword.operator.negation.regexp"
+ },
+ "3": {
+ "name": "constant.character.set.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.character.set.end.regexp constant.other.set.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp-charecter-set-escapes"
+ },
+ {
+ "name": "constant.character.set.regexp",
+ "match": "[^\\n]"
+ }
+ ]
+ }
+ ]
+ },
+ "single-three-regexp-named-group": {
+ "name": "meta.named.regexp",
+ "begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
+ },
+ "2": {
+ "name": "entity.name.tag.named.group.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-regexp-comments": {
+ "name": "comment.regexp",
+ "begin": "\\(\\?#",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.comment.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.comment.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#codetags"
+ }
+ ]
+ },
+ "single-three-regexp-lookahead": {
+ "begin": "(\\()\\?=",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-regexp-lookahead-negative": {
+ "begin": "(\\()\\?!",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-regexp-lookbehind": {
+ "begin": "(\\()\\?<=",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-regexp-lookbehind-negative": {
+ "begin": "(\\()\\?<!",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-regexp-conditional": {
+ "begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.conditional.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-regexp-parentheses-non-capturing": {
+ "begin": "\\(\\?:",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-regexp-parentheses": {
+ "begin": "\\(",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "double-one-regexp-expression": {
+ "patterns": [
+ {
+ "include": "#regexp-base-expression"
+ },
+ {
+ "include": "#double-one-regexp-character-set"
+ },
+ {
+ "include": "#double-one-regexp-comments"
+ },
+ {
+ "include": "#regexp-flags"
+ },
+ {
+ "include": "#double-one-regexp-named-group"
+ },
+ {
+ "include": "#regexp-backreference"
+ },
+ {
+ "include": "#double-one-regexp-lookahead"
+ },
+ {
+ "include": "#double-one-regexp-lookahead-negative"
+ },
+ {
+ "include": "#double-one-regexp-lookbehind"
+ },
+ {
+ "include": "#double-one-regexp-lookbehind-negative"
+ },
+ {
+ "include": "#double-one-regexp-conditional"
+ },
+ {
+ "include": "#double-one-regexp-parentheses-non-capturing"
+ },
+ {
+ "include": "#double-one-regexp-parentheses"
+ }
+ ]
+ },
+ "double-one-regexp-character-set": {
+ "patterns": [
+ {
+ "match": "(?x)\n \\[ \\^? \\] (?! .*?\\])\n"
+ },
+ {
+ "name": "meta.character.set.regexp",
+ "begin": "(\\[)(\\^)?(\\])?",
+ "end": "(\\]|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.character.set.begin.regexp constant.other.set.regexp"
+ },
+ "2": {
+ "name": "keyword.operator.negation.regexp"
+ },
+ "3": {
+ "name": "constant.character.set.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.character.set.end.regexp constant.other.set.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp-charecter-set-escapes"
+ },
+ {
+ "name": "constant.character.set.regexp",
+ "match": "[^\\n]"
+ }
+ ]
+ }
+ ]
+ },
+ "double-one-regexp-named-group": {
+ "name": "meta.named.regexp",
+ "begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
+ },
+ "2": {
+ "name": "entity.name.tag.named.group.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "double-one-regexp-comments": {
+ "name": "comment.regexp",
+ "begin": "\\(\\?#",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.comment.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.comment.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#codetags"
+ }
+ ]
+ },
+ "double-one-regexp-lookahead": {
+ "begin": "(\\()\\?=",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "double-one-regexp-lookahead-negative": {
+ "begin": "(\\()\\?!",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "double-one-regexp-lookbehind": {
+ "begin": "(\\()\\?<=",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "double-one-regexp-lookbehind-negative": {
+ "begin": "(\\()\\?<!",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "double-one-regexp-conditional": {
+ "begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.conditional.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "double-one-regexp-parentheses-non-capturing": {
+ "begin": "\\(\\?:",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "double-one-regexp-parentheses": {
+ "begin": "\\(",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "double-three-regexp-expression": {
+ "patterns": [
+ {
+ "include": "#regexp-base-expression"
+ },
+ {
+ "include": "#double-three-regexp-character-set"
+ },
+ {
+ "include": "#double-three-regexp-comments"
+ },
+ {
+ "include": "#regexp-flags"
+ },
+ {
+ "include": "#double-three-regexp-named-group"
+ },
+ {
+ "include": "#regexp-backreference"
+ },
+ {
+ "include": "#double-three-regexp-lookahead"
+ },
+ {
+ "include": "#double-three-regexp-lookahead-negative"
+ },
+ {
+ "include": "#double-three-regexp-lookbehind"
+ },
+ {
+ "include": "#double-three-regexp-lookbehind-negative"
+ },
+ {
+ "include": "#double-three-regexp-conditional"
+ },
+ {
+ "include": "#double-three-regexp-parentheses-non-capturing"
+ },
+ {
+ "include": "#double-three-regexp-parentheses"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-regexp-character-set": {
+ "patterns": [
+ {
+ "match": "(?x)\n \\[ \\^? \\] (?! .*?\\])\n"
+ },
+ {
+ "name": "meta.character.set.regexp",
+ "begin": "(\\[)(\\^)?(\\])?",
+ "end": "(\\]|(?=\"\"\"))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.character.set.begin.regexp constant.other.set.regexp"
+ },
+ "2": {
+ "name": "keyword.operator.negation.regexp"
+ },
+ "3": {
+ "name": "constant.character.set.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.character.set.end.regexp constant.other.set.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp-charecter-set-escapes"
+ },
+ {
+ "name": "constant.character.set.regexp",
+ "match": "[^\\n]"
+ }
+ ]
+ }
+ ]
+ },
+ "double-three-regexp-named-group": {
+ "name": "meta.named.regexp",
+ "begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
+ },
+ "2": {
+ "name": "entity.name.tag.named.group.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-regexp-comments": {
+ "name": "comment.regexp",
+ "begin": "\\(\\?#",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.comment.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.comment.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#codetags"
+ }
+ ]
+ },
+ "double-three-regexp-lookahead": {
+ "begin": "(\\()\\?=",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-regexp-lookahead-negative": {
+ "begin": "(\\()\\?!",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-regexp-lookbehind": {
+ "begin": "(\\()\\?<=",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-regexp-lookbehind-negative": {
+ "begin": "(\\()\\?<!",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-regexp-conditional": {
+ "begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.conditional.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-regexp-parentheses-non-capturing": {
+ "begin": "\\(\\?:",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-regexp-parentheses": {
+ "begin": "\\(",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "regexp-single-one-line": {
+ "name": "string.regexp.quoted.single.python",
+ "begin": "\\b(([uU]r)|([bB]r)|(r[bB]?))(\\')",
+ "end": "(\\')|(?<!\\\\)(\\n)",
+ "beginCaptures": {
+ "2": {
+ "name": "invalid.deprecated.prefix.python"
+ },
+ "3": {
+ "name": "storage.type.string.python"
+ },
+ "4": {
+ "name": "storage.type.string.python"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "regexp-single-three-line": {
+ "name": "string.regexp.quoted.multi.python",
+ "begin": "\\b(([uU]r)|([bB]r)|(r[bB]?))(\\'\\'\\')",
+ "end": "(\\'\\'\\')",
+ "beginCaptures": {
+ "2": {
+ "name": "invalid.deprecated.prefix.python"
+ },
+ "3": {
+ "name": "storage.type.string.python"
+ },
+ "4": {
+ "name": "storage.type.string.python"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ }
+ ]
+ },
+ "regexp-double-one-line": {
+ "name": "string.regexp.quoted.single.python",
+ "begin": "\\b(([uU]r)|([bB]r)|(r[bB]?))(\")",
+ "end": "(\")|(?<!\\\\)(\\n)",
+ "beginCaptures": {
+ "2": {
+ "name": "invalid.deprecated.prefix.python"
+ },
+ "3": {
+ "name": "storage.type.string.python"
+ },
+ "4": {
+ "name": "storage.type.string.python"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "regexp-double-three-line": {
+ "name": "string.regexp.quoted.multi.python",
+ "begin": "\\b(([uU]r)|([bB]r)|(r[bB]?))(\"\"\")",
+ "end": "(\"\"\")",
+ "beginCaptures": {
+ "2": {
+ "name": "invalid.deprecated.prefix.python"
+ },
+ "3": {
+ "name": "storage.type.string.python"
+ },
+ "4": {
+ "name": "storage.type.string.python"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ }
+ ]
+ },
+ "string-raw-quoted-single-line": {
+ "name": "string.quoted.raw.single.python",
+ "begin": "\\b(([uU]R)|(R))((['\"]))",
+ "end": "(\\4)|((?<!\\\\)\\n)",
+ "beginCaptures": {
+ "2": {
+ "name": "invalid.deprecated.prefix.python"
+ },
+ "3": {
+ "name": "storage.type.string.python"
+ },
+ "4": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-single-bad-brace1-formatting-raw"
+ },
+ {
+ "include": "#string-single-bad-brace2-formatting-raw"
+ },
+ {
+ "include": "#string-raw-guts"
+ }
+ ]
+ },
+ "string-bin-quoted-single-line": {
+ "name": "string.quoted.binary.single.python",
+ "begin": "(\\b[bB])((['\"]))",
+ "end": "(\\2)|((?<!\\\\)\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.string.python"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-entity"
+ }
+ ]
+ },
+ "string-raw-bin-quoted-single-line": {
+ "name": "string.quoted.raw.binary.single.python",
+ "begin": "(\\b(?:R[bB]|[bB]R))((['\"]))",
+ "end": "(\\2)|((?<!\\\\)\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.string.python"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-raw-bin-guts"
+ }
+ ]
+ },
+ "string-quoted-single-line": {
+ "name": "string.quoted.single.python",
+ "begin": "(?:\\b([rR])(?=[uU]))?([uU])?((['\"]))",
+ "end": "(\\3)|((?<!\\\\)\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "invalid.illegal.prefix.python"
+ },
+ "2": {
+ "name": "storage.type.string.python"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-single-bad-brace1-formatting-unicode"
+ },
+ {
+ "include": "#string-single-bad-brace2-formatting-unicode"
+ },
+ {
+ "include": "#string-unicode-guts"
+ }
+ ]
+ },
+ "string-single-bad-brace1-formatting-unicode": {
+ "comment": "template using {% ... %}",
+ "begin": "(?x)\n (?= \\{%\n ( .*? (?!(['\"])|((?<!\\\\)\\n)) )\n %\\}\n )\n",
+ "end": "(?=(['\"])|((?<!\\\\)\\n))",
+ "patterns": [
+ {
+ "include": "#escape-sequence-unicode"
+ },
+ {
+ "include": "#escape-sequence"
+ },
+ {
+ "include": "#string-line-continuation"
+ }
+ ]
+ },
+ "string-single-bad-brace1-formatting-raw": {
+ "comment": "template using {% ... %}",
+ "begin": "(?x)\n (?= \\{%\n ( .*? (?!(['\"])|((?<!\\\\)\\n)) )\n %\\}\n )\n",
+ "end": "(?=(['\"])|((?<!\\\\)\\n))",
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ }
+ ]
+ },
+ "string-single-bad-brace2-formatting-unicode": {
+ "comment": "odd format or format-like syntax",
+ "begin": "(?x)\n (?!\\{\\{)\n (?= \\{ (\n \\w*? (?!(['\"])|((?<!\\\\)\\n)) [^!:\\.\\[}\\w]\n )\n .*?(?!(['\"])|((?<!\\\\)\\n))\n \\}\n )\n",
+ "end": "(?=(['\"])|((?<!\\\\)\\n))",
+ "patterns": [
+ {
+ "include": "#escape-sequence-unicode"
+ },
+ {
+ "include": "#string-entity"
+ }
+ ]
+ },
+ "string-single-bad-brace2-formatting-raw": {
+ "comment": "odd format or format-like syntax",
+ "begin": "(?x)\n (?!\\{\\{)\n (?= \\{ (\n \\w*? (?!(['\"])|((?<!\\\\)\\n)) [^!:\\.\\[}\\w]\n )\n .*?(?!(['\"])|((?<!\\\\)\\n))\n \\}\n )\n",
+ "end": "(?=(['\"])|((?<!\\\\)\\n))",
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ },
+ {
+ "include": "#string-formatting"
+ }
+ ]
+ },
+ "string-raw-quoted-multi-line": {
+ "name": "string.quoted.raw.multi.python",
+ "begin": "\\b(([uU]R)|(R))('''|\"\"\")",
+ "end": "(\\4)",
+ "beginCaptures": {
+ "2": {
+ "name": "invalid.deprecated.prefix.python"
+ },
+ "3": {
+ "name": "storage.type.string.python"
+ },
+ "4": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-multi-bad-brace1-formatting-raw"
+ },
+ {
+ "include": "#string-multi-bad-brace2-formatting-raw"
+ },
+ {
+ "include": "#string-raw-guts"
+ }
+ ]
+ },
+ "string-bin-quoted-multi-line": {
+ "name": "string.quoted.binary.multi.python",
+ "begin": "(\\b[bB])('''|\"\"\")",
+ "end": "(\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.string.python"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-entity"
+ }
+ ]
+ },
+ "string-raw-bin-quoted-multi-line": {
+ "name": "string.quoted.raw.binary.multi.python",
+ "begin": "(\\b(?:R[bB]|[bB]R))('''|\"\"\")",
+ "end": "(\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.string.python"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-raw-bin-guts"
+ }
+ ]
+ },
+ "string-quoted-multi-line": {
+ "name": "string.quoted.multi.python",
+ "begin": "(?:\\b([rR])(?=[uU]))?([uU])?('''|\"\"\")",
+ "end": "(\\3)",
+ "beginCaptures": {
+ "1": {
+ "name": "invalid.illegal.prefix.python"
+ },
+ "2": {
+ "name": "storage.type.string.python"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-multi-bad-brace1-formatting-unicode"
+ },
+ {
+ "include": "#string-multi-bad-brace2-formatting-unicode"
+ },
+ {
+ "include": "#string-unicode-guts"
+ }
+ ]
+ },
+ "string-multi-bad-brace1-formatting-unicode": {
+ "comment": "template using {% ... %}",
+ "begin": "(?x)\n (?= \\{%\n ( .*? (?!'''|\"\"\") )\n %\\}\n )\n",
+ "end": "(?='''|\"\"\")",
+ "patterns": [
+ {
+ "include": "#escape-sequence-unicode"
+ },
+ {
+ "include": "#escape-sequence"
+ },
+ {
+ "include": "#string-line-continuation"
+ }
+ ]
+ },
+ "string-multi-bad-brace1-formatting-raw": {
+ "comment": "template using {% ... %}",
+ "begin": "(?x)\n (?= \\{%\n ( .*? (?!'''|\"\"\") )\n %\\}\n )\n",
+ "end": "(?='''|\"\"\")",
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ }
+ ]
+ },
+ "string-multi-bad-brace2-formatting-unicode": {
+ "comment": "odd format or format-like syntax",
+ "begin": "(?x)\n (?!\\{\\{)\n (?= \\{ (\n \\w*? (?!'''|\"\"\") [^!:\\.\\[}\\w]\n )\n .*?(?!'''|\"\"\")\n \\}\n )\n",
+ "end": "(?='''|\"\"\")",
+ "patterns": [
+ {
+ "include": "#escape-sequence-unicode"
+ },
+ {
+ "include": "#string-entity"
+ }
+ ]
+ },
+ "string-multi-bad-brace2-formatting-raw": {
+ "comment": "odd format or format-like syntax",
+ "begin": "(?x)\n (?!\\{\\{)\n (?= \\{ (\n \\w*? (?!'''|\"\"\") [^!:\\.\\[}\\w]\n )\n .*?(?!'''|\"\"\")\n \\}\n )\n",
+ "end": "(?='''|\"\"\")",
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ },
+ {
+ "include": "#string-formatting"
+ }
+ ]
+ },
+ "fstring-fnorm-quoted-single-line": {
+ "name": "meta.fstring.python",
+ "begin": "(\\b[fF])([bBuU])?((['\"]))",
+ "end": "(\\3)|((?<!\\\\)\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.interpolated.python string.quoted.single.python storage.type.string.python"
+ },
+ "2": {
+ "name": "invalid.illegal.prefix.python"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.python string.interpolated.python string.quoted.single.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-guts"
+ },
+ {
+ "include": "#fstring-illegal-single-brace"
+ },
+ {
+ "include": "#fstring-single-brace"
+ },
+ {
+ "include": "#fstring-single-core"
+ }
+ ]
+ },
+ "fstring-normf-quoted-single-line": {
+ "name": "meta.fstring.python",
+ "begin": "(\\b[bBuU])([fF])((['\"]))",
+ "end": "(\\3)|((?<!\\\\)\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "invalid.illegal.prefix.python"
+ },
+ "2": {
+ "name": "string.interpolated.python string.quoted.single.python storage.type.string.python"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.python string.quoted.single.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-guts"
+ },
+ {
+ "include": "#fstring-illegal-single-brace"
+ },
+ {
+ "include": "#fstring-single-brace"
+ },
+ {
+ "include": "#fstring-single-core"
+ }
+ ]
+ },
+ "fstring-raw-quoted-single-line": {
+ "name": "meta.fstring.python",
+ "begin": "(\\b(?:[rR][fF]|[fF][rR]))((['\"]))",
+ "end": "(\\2)|((?<!\\\\)\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.interpolated.python string.quoted.raw.single.python storage.type.string.python"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.python string.quoted.raw.single.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.single.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-raw-guts"
+ },
+ {
+ "include": "#fstring-illegal-single-brace"
+ },
+ {
+ "include": "#fstring-single-brace"
+ },
+ {
+ "include": "#fstring-raw-single-core"
+ }
+ ]
+ },
+ "fstring-single-core": {
+ "name": "string.interpolated.python string.quoted.single.python",
+ "match": "(?x)\n (.+?)\n (\n (?# .* and .*? in multi-line match need special handling of\n newlines otherwise SublimeText and Atom will match slightly\n differently.\n\n The guard for newlines has to be separate from the\n lookahead because of special $ matching rule.)\n ($\\n?)\n |\n (?=[\\\\\\}\\{]|(['\"])|((?<!\\\\)\\n))\n )\n (?# due to how multiline regexps are matched we need a special case\n for matching a newline character)\n | \\n\n"
+ },
+ "fstring-raw-single-core": {
+ "name": "string.interpolated.python string.quoted.raw.single.python",
+ "match": "(?x)\n (.+?)\n (\n (?# .* and .*? in multi-line match need special handling of\n newlines otherwise SublimeText and Atom will match slightly\n differently.\n\n The guard for newlines has to be separate from the\n lookahead because of special $ matching rule.)\n ($\\n?)\n |\n (?=[\\\\\\}\\{]|(['\"])|((?<!\\\\)\\n))\n )\n (?# due to how multiline regexps are matched we need a special case\n for matching a newline character)\n | \\n\n"
+ },
+ "fstring-single-brace": {
+ "comment": "value interpolation using { ... }",
+ "begin": "(\\{)",
+ "end": "(?x)\n (\\})|(?=\\n)\n",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-terminator-single"
+ },
+ {
+ "include": "#f-expression"
+ }
+ ]
+ },
+ "fstring-terminator-single": {
+ "patterns": [
+ {
+ "name": "storage.type.format.python",
+ "match": "(=(![rsa])?)(?=})"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(=?![rsa])(?=})"
+ },
+ {
+ "match": "(?x)\n ( (?: =?) (?: ![rsa])? )\n ( : \\w? [<>=^]? [-+ ]? \\#?\n \\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )(?=})\n",
+ "captures": {
+ "1": {
+ "name": "storage.type.format.python"
+ },
+ "2": {
+ "name": "storage.type.format.python"
+ }
+ }
+ },
+ {
+ "include": "#fstring-terminator-single-tail"
+ }
+ ]
+ },
+ "fstring-terminator-single-tail": {
+ "begin": "((?:=?)(?:![rsa])?)(:)(?=.*?{)",
+ "end": "(?=})|(?=\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.format.python"
+ },
+ "2": {
+ "name": "storage.type.format.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-illegal-single-brace"
+ },
+ {
+ "include": "#fstring-single-brace"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "([bcdeEfFgGnosxX%])(?=})"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(\\.\\d+)"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(,)"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(\\d+)"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(\\#)"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "([-+ ])"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "([<>=^])"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(\\w)"
+ }
+ ]
+ },
+ "fstring-fnorm-quoted-multi-line": {
+ "name": "meta.fstring.python",
+ "begin": "(\\b[fF])([bBuU])?('''|\"\"\")",
+ "end": "(\\3)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.interpolated.python string.quoted.multi.python storage.type.string.python"
+ },
+ "2": {
+ "name": "invalid.illegal.prefix.python"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.python string.interpolated.python string.quoted.multi.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-guts"
+ },
+ {
+ "include": "#fstring-illegal-multi-brace"
+ },
+ {
+ "include": "#fstring-multi-brace"
+ },
+ {
+ "include": "#fstring-multi-core"
+ }
+ ]
+ },
+ "fstring-normf-quoted-multi-line": {
+ "name": "meta.fstring.python",
+ "begin": "(\\b[bBuU])([fF])('''|\"\"\")",
+ "end": "(\\3)",
+ "beginCaptures": {
+ "1": {
+ "name": "invalid.illegal.prefix.python"
+ },
+ "2": {
+ "name": "string.interpolated.python string.quoted.multi.python storage.type.string.python"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.python string.quoted.multi.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-guts"
+ },
+ {
+ "include": "#fstring-illegal-multi-brace"
+ },
+ {
+ "include": "#fstring-multi-brace"
+ },
+ {
+ "include": "#fstring-multi-core"
+ }
+ ]
+ },
+ "fstring-raw-quoted-multi-line": {
+ "name": "meta.fstring.python",
+ "begin": "(\\b(?:[rR][fF]|[fF][rR]))('''|\"\"\")",
+ "end": "(\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.interpolated.python string.quoted.raw.multi.python storage.type.string.python"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.python string.quoted.raw.multi.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.multi.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-raw-guts"
+ },
+ {
+ "include": "#fstring-illegal-multi-brace"
+ },
+ {
+ "include": "#fstring-multi-brace"
+ },
+ {
+ "include": "#fstring-raw-multi-core"
+ }
+ ]
+ },
+ "fstring-multi-core": {
+ "name": "string.interpolated.python string.quoted.multi.python",
+ "match": "(?x)\n (.+?)\n (\n (?# .* and .*? in multi-line match need special handling of\n newlines otherwise SublimeText and Atom will match slightly\n differently.\n\n The guard for newlines has to be separate from the\n lookahead because of special $ matching rule.)\n ($\\n?)\n |\n (?=[\\\\\\}\\{]|'''|\"\"\")\n )\n (?# due to how multiline regexps are matched we need a special case\n for matching a newline character)\n | \\n\n"
+ },
+ "fstring-raw-multi-core": {
+ "name": "string.interpolated.python string.quoted.raw.multi.python",
+ "match": "(?x)\n (.+?)\n (\n (?# .* and .*? in multi-line match need special handling of\n newlines otherwise SublimeText and Atom will match slightly\n differently.\n\n The guard for newlines has to be separate from the\n lookahead because of special $ matching rule.)\n ($\\n?)\n |\n (?=[\\\\\\}\\{]|'''|\"\"\")\n )\n (?# due to how multiline regexps are matched we need a special case\n for matching a newline character)\n | \\n\n"
+ },
+ "fstring-multi-brace": {
+ "comment": "value interpolation using { ... }",
+ "begin": "(\\{)",
+ "end": "(?x)\n (\\})\n",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-terminator-multi"
+ },
+ {
+ "include": "#f-expression"
+ }
+ ]
+ },
+ "fstring-terminator-multi": {
+ "patterns": [
+ {
+ "name": "storage.type.format.python",
+ "match": "(=(![rsa])?)(?=})"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(=?![rsa])(?=})"
+ },
+ {
+ "match": "(?x)\n ( (?: =?) (?: ![rsa])? )\n ( : \\w? [<>=^]? [-+ ]? \\#?\n \\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )(?=})\n",
+ "captures": {
+ "1": {
+ "name": "storage.type.format.python"
+ },
+ "2": {
+ "name": "storage.type.format.python"
+ }
+ }
+ },
+ {
+ "include": "#fstring-terminator-multi-tail"
+ }
+ ]
+ },
+ "fstring-terminator-multi-tail": {
+ "begin": "((?:=?)(?:![rsa])?)(:)(?=.*?{)",
+ "end": "(?=})",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.format.python"
+ },
+ "2": {
+ "name": "storage.type.format.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-illegal-multi-brace"
+ },
+ {
+ "include": "#fstring-multi-brace"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "([bcdeEfFgGnosxX%])(?=})"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(\\.\\d+)"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(,)"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(\\d+)"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(\\#)"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "([-+ ])"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "([<>=^])"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(\\w)"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/r.tmLanguage.json b/node_modules/shiki/languages/r.tmLanguage.json
new file mode 100644
index 0000000..19b3d47
--- /dev/null
+++ b/node_modules/shiki/languages/r.tmLanguage.json
@@ -0,0 +1,642 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/Ikuyadeu/vscode-R/blob/master/syntax/r.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/Ikuyadeu/vscode-R/commit/ff60e426f66503f3c9533c7a62a8fd3f9f6c53df",
+ "name": "r",
+ "scopeName": "source.r",
+ "patterns": [
+ {
+ "include": "#roxygen"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#storage-type"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#function-declarations"
+ },
+ {
+ "include": "#lambda-functions"
+ },
+ {
+ "include": "#builtin-functions"
+ },
+ {
+ "include": "#function-calls"
+ },
+ {
+ "include": "#general-variables"
+ }
+ ],
+ "repository": {
+ "comments": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "comment.line.pragma.r"
+ },
+ "2": {
+ "name": "entity.name.pragma.name.r"
+ }
+ },
+ "match": "^(#pragma[ \\t]+mark)[ \\t](.*)",
+ "name": "comment.line.pragma-mark.r"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.r"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.r"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.number-sign.r"
+ }
+ ]
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "match": "\\b(pi|letters|LETTERS|month\\.abb|month\\.name)\\b",
+ "name": "support.constant.misc.r"
+ },
+ {
+ "match": "\\b(TRUE|FALSE|NULL|NA|NA_integer_|NA_real_|NA_complex_|NA_character_|Inf|NaN)\\b",
+ "name": "constant.language.r"
+ },
+ {
+ "match": "\\b0(x|X)[0-9a-fA-F]+i\\b",
+ "name": "constant.numeric.imaginary.hexadecimal.r"
+ },
+ {
+ "match": "\\b[0-9]+\\.?[0-9]*(?:(e|E)(\\+|-)?[0-9]+)?i\\b",
+ "name": "constant.numeric.imaginary.decimal.r"
+ },
+ {
+ "match": "\\.[0-9]+(?:(e|E)(\\+|-)?[0-9]+)?i\\b",
+ "name": "constant.numeric.imaginary.decimal.r"
+ },
+ {
+ "match": "\\b0(x|X)[0-9a-fA-F]+L\\b",
+ "name": "constant.numeric.integer.hexadecimal.r"
+ },
+ {
+ "match": "\\b(?:[0-9]+\\.?[0-9]*)(?:(e|E)(\\+|-)?[0-9]+)?L\\b",
+ "name": "constant.numeric.integer.decimal.r"
+ },
+ {
+ "match": "\\b0(x|X)[0-9a-fA-F]+\\b",
+ "name": "constant.numeric.float.hexadecimal.r"
+ },
+ {
+ "match": "\\b[0-9]+\\.?[0-9]*(?:(e|E)(\\+|-)?[0-9]+)?\\b",
+ "name": "constant.numeric.float.decimal.r"
+ },
+ {
+ "match": "\\.[0-9]+(?:(e|E)(\\+|-)?[0-9]+)?\\b",
+ "name": "constant.numeric.float.decimal.r"
+ }
+ ]
+ },
+ "general-variables": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "variable.parameter.r"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.r"
+ }
+ },
+ "match": "([[:alpha:].][[:alnum:]._]*)\\s*(=)(?=[^=])"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "variable.parameter.r"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.r"
+ }
+ },
+ "match": "(`[^`]+`)\\s*(=)(?=[^=])"
+ },
+ {
+ "match": "\\b([\\d_][[:alnum:]._]+)\\b",
+ "name": "invalid.illegal.variable.other.r"
+ },
+ {
+ "match": "\\b([[:alnum:]_]+)(?=::)",
+ "name": "entity.namespace.r"
+ },
+ {
+ "match": "\\b([[:alnum:]._]+)\\b",
+ "name": "variable.other.r"
+ },
+ {
+ "match": "(`[^`]+`)",
+ "name": "variable.other.r"
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "match": "\\b(break|next|repeat|else|in)\\b",
+ "name": "keyword.control.r"
+ },
+ {
+ "match": "\\b(ifelse|if|for|return|switch|while|invisible)\\b(?=\\s*\\()",
+ "name": "keyword.control.r"
+ },
+ {
+ "match": "(\\-|\\+|\\*|\\/|%\\/%|%%|%\\*%|%o%|%x%|\\^)",
+ "name": "keyword.operator.arithmetic.r"
+ },
+ {
+ "match": "(:=|<-|<<-|->|->>)",
+ "name": "keyword.operator.assignment.r"
+ },
+ {
+ "match": "(==|<=|>=|!=|<>|<|>|%in%)",
+ "name": "keyword.operator.comparison.r"
+ },
+ {
+ "match": "(!|&{1,2}|[|]{1,2})",
+ "name": "keyword.operator.logical.r"
+ },
+ {
+ "match": "(\\|>)",
+ "name": "keyword.operator.pipe.r"
+ },
+ {
+ "match": "(%between%|%chin%|%like%|%\\+%|%\\+replace%|%:%|%do%|%dopar%|%>%|%<>%|%T>%|%\\$%)",
+ "name": "keyword.operator.other.r"
+ },
+ {
+ "match": "(\\.\\.\\.|\\$|:|\\~|@)",
+ "name": "keyword.other.r"
+ }
+ ]
+ },
+ "storage-type": {
+ "patterns": [
+ {
+ "match": "\\b(character|complex|double|expression|integer|list|logical|numeric|single|raw)\\b(?=\\s*\\()",
+ "name": "storage.type.r"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "[rR]\"(-*)\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.raw.begin.r"
+ }
+ },
+ "end": "\\]\\1\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.raw.end.r"
+ }
+ },
+ "name": "string.quoted.double.raw.r"
+ },
+ {
+ "begin": "[rR]'(-*)\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.raw.begin.r"
+ }
+ },
+ "end": "\\]\\1'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.raw.end.r"
+ }
+ },
+ "name": "string.quoted.single.raw.r"
+ },
+ {
+ "begin": "[rR]\"(-*)\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.raw.begin.r"
+ }
+ },
+ "end": "\\}\\1\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.raw.end.r"
+ }
+ },
+ "name": "string.quoted.double.raw.r"
+ },
+ {
+ "begin": "[rR]'(-*)\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.raw.begin.r"
+ }
+ },
+ "end": "\\}\\1'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.raw.end.r"
+ }
+ },
+ "name": "string.quoted.single.raw.r"
+ },
+ {
+ "begin": "[rR]\"(-*)\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.raw.begin.r"
+ }
+ },
+ "end": "\\)\\1\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.raw.end.r"
+ }
+ },
+ "name": "string.quoted.double.raw.r"
+ },
+ {
+ "begin": "[rR]'(-*)\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.raw.begin.r"
+ }
+ },
+ "end": "\\)\\1'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.raw.end.r"
+ }
+ },
+ "name": "string.quoted.single.raw.r"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.r"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.r"
+ }
+ },
+ "name": "string.quoted.double.r",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.r"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.r"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.r"
+ }
+ },
+ "name": "string.quoted.single.r",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.r"
+ }
+ ]
+ }
+ ]
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.r"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.r"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.r"
+ }
+ ]
+ },
+ {
+ "begin": "\\[(?!\\[)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.brackets.single.begin.r"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.brackets.single.end.r"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.r"
+ }
+ ]
+ },
+ {
+ "begin": "\\[\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.brackets.double.begin.r"
+ }
+ },
+ "end": "\\]\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.brackets.double.end.r"
+ }
+ },
+ "contentName": "meta.item-access.arguments.r",
+ "patterns": [
+ {
+ "include": "source.r"
+ }
+ ]
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.braces.begin.r"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.braces.end.r"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.r"
+ }
+ ]
+ }
+ ]
+ },
+ "function-declarations": {
+ "patterns": [
+ {
+ "match": "((?:`[^`\\\\]*(?:\\\\.[^`\\\\]*)*`)|(?:[[:alpha:].][[:alnum:]._]*))\\s*(<?<-|=(?!=))\\s*(function|\\\\)(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.r"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.r"
+ },
+ "3": {
+ "name": "keyword.control.r"
+ }
+ },
+ "name": "meta.function.r",
+ "patterns": [
+ {
+ "include": "#lambda-functions"
+ }
+ ]
+ }
+ ]
+ },
+ "lambda-functions": {
+ "patterns": [
+ {
+ "begin": "\\b(function)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.r"
+ },
+ "2": {
+ "name": "punctuation.section.parens.begin.r"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.r"
+ }
+ },
+ "name": "meta.function.r",
+ "contentName": "meta.function.parameters.r",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "(?:[a-zA-Z._][\\w.]*|`[^`]+`)",
+ "name": "variable.other.r"
+ },
+ {
+ "begin": "(?==)",
+ "end": "(?=[,)])",
+ "patterns": [
+ {
+ "include": "source.r"
+ }
+ ]
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.parameters.r"
+ }
+ ]
+ }
+ ]
+ },
+ "function-calls": {
+ "begin": "(?:\\b|(?=\\.))((?:[a-zA-Z._][\\w.]*|`[^`]+`))\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.function.r"
+ },
+ "2": {
+ "name": "punctuation.section.parens.begin.r"
+ }
+ },
+ "contentName": "meta.function-call.arguments.r",
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.parens.end.r"
+ }
+ },
+ "name": "meta.function-call.r",
+ "patterns": [
+ {
+ "include": "#function-parameters"
+ }
+ ]
+ },
+ "function-parameters": {
+ "patterns": [
+ {
+ "name": "meta.function-call.r",
+ "contentName": "meta.function-call.parameters.r"
+ },
+ {
+ "match": "(?:[a-zA-Z._][\\w.]*|`[^`]+`)(?=\\s[^=])",
+ "name": "variable.other.r"
+ },
+ {
+ "begin": "(?==)",
+ "end": "(?=[,)])",
+ "patterns": [
+ {
+ "include": "source.r"
+ }
+ ]
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.parameters.r"
+ },
+ {
+ "include": "source.r"
+ }
+ ]
+ },
+ "roxygen": {
+ "patterns": [
+ {
+ "begin": "^\\s*(#')\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.r"
+ }
+ },
+ "end": "$\\n?",
+ "name": "comment.line.roxygen.r",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.r"
+ },
+ "2": {
+ "name": "variable.parameter.r"
+ }
+ },
+ "match": "(@param)\\s*((?:[a-zA-Z._][\\w.]*|`[^`]+`))"
+ },
+ {
+ "match": "@[a-zA-Z0-9]+",
+ "name": "keyword.other.r"
+ }
+ ]
+ }
+ ]
+ },
+ "builtin-functions": {
+ "patterns": [
+ {
+ "match": "\\b(abbreviate|abs|acos|acosh|addNA|addTaskCallback|agrep|agrepl|alist|all|all\\.equal|all\\.equal.character|all\\.equal.default|all\\.equal.environment|all\\.equal.envRefClass|all\\.equal.factor|all\\.equal.formula|all\\.equal.language|all\\.equal.list|all\\.equal.numeric|all\\.equal.POSIXt|all\\.equal.raw|all\\.names|all\\.vars|any|anyDuplicated|anyDuplicated\\.array|anyDuplicated\\.data.frame|anyDuplicated\\.default|anyDuplicated\\.matrix|anyNA|anyNA\\.numeric_version|anyNA\\.POSIXlt|aperm|aperm\\.default|aperm\\.table|append|apply|Arg|args|array|arrayInd|as\\.array|as\\.array.default|as\\.call|as\\.character|as\\.character.condition|as\\.character.Date|as\\.character.default|as\\.character.error|as\\.character.factor|as\\.character.hexmode|as\\.character.numeric_version|as\\.character.octmode|as\\.character.POSIXt|as\\.character.srcref|as\\.complex|as\\.data.frame|as\\.data.frame.array|as\\.data.frame.AsIs|as\\.data.frame.character|as\\.data.frame.complex|as\\.data.frame.data.frame|as\\.data.frame.Date|as\\.data.frame.default|as\\.data.frame.difftime|as\\.data.frame.factor|as\\.data.frame.integer|as\\.data.frame.list|as\\.data.frame.logical|as\\.data.frame.matrix|as\\.data.frame.model.matrix|as\\.data.frame.noquote|as\\.data.frame.numeric|as\\.data.frame.numeric_version|as\\.data.frame.ordered|as\\.data.frame.POSIXct|as\\.data.frame.POSIXlt|as\\.data.frame.raw|as\\.data.frame.table|as\\.data.frame.ts|as\\.data.frame.vector|as\\.Date|as\\.Date.character|as\\.Date.date|as\\.Date.dates|as\\.Date.default|as\\.Date.factor|as\\.Date.numeric|as\\.Date.POSIXct|as\\.Date.POSIXlt|as\\.difftime|as\\.double|as\\.double.difftime|as\\.double.POSIXlt|as\\.environment|as\\.expression|as\\.expression.default|as\\.factor|as\\.function|as\\.function.default|as\\.hexmode|as\\.integer|as\\.list|as\\.list.data.frame|as\\.list.Date|as\\.list.default|as\\.list.environment|as\\.list.factor|as\\.list.function|as\\.list.numeric_version|as\\.list.POSIXct|as\\.logical|as\\.logical.factor|as\\.matrix|as\\.matrix.data.frame|as\\.matrix.default|as\\.matrix.noquote|as\\.matrix.POSIXlt|as\\.name|as\\.null|as\\.null.default|as\\.numeric|as\\.numeric_version|as\\.octmode|as\\.ordered|as\\.package_version|as\\.pairlist|as\\.POSIXct|as\\.POSIXct.date|as\\.POSIXct.Date|as\\.POSIXct.dates|as\\.POSIXct.default|as\\.POSIXct.numeric|as\\.POSIXct.POSIXlt|as\\.POSIXlt|as\\.POSIXlt.character|as\\.POSIXlt.date|as\\.POSIXlt.Date|as\\.POSIXlt.dates|as\\.POSIXlt.default|as\\.POSIXlt.factor|as\\.POSIXlt.numeric|as\\.POSIXlt.POSIXct|as\\.qr|as\\.raw|as\\.single|as\\.single.default|as\\.symbol|as\\.table|as\\.table.default|as\\.vector|as\\.vector.factor|asin|asinh|asNamespace|asS3|asS4|assign|atan|atan2|atanh|attach|attachNamespace|attr|attr\\.all.equal|attributes|autoload|autoloader|backsolve|baseenv|basename|besselI|besselJ|besselK|besselY|beta|bindingIsActive|bindingIsLocked|bindtextdomain|bitwAnd|bitwNot|bitwOr|bitwShiftL|bitwShiftR|bitwXor|body|bquote|break|browser|browserCondition|browserSetDebug|browserText|builtins|by|by\\.data.frame|by\\.default|bzfile|c|c\\.Date|c\\.difftime|c\\.noquote|c\\.numeric_version|c\\.POSIXct|c\\.POSIXlt|c\\.warnings|call|callCC|capabilities|casefold|cat|cbind|cbind\\.data.frame|ceiling|char\\.expand|character|charmatch|charToRaw|chartr|check_tzones|chkDots|chol|chol\\.default|chol2inv|choose|class|clearPushBack|close|close\\.connection|close\\.srcfile|close\\.srcfilealias|closeAllConnections|col|colMeans|colnames|colSums|commandArgs|comment|complex|computeRestarts|conditionCall|conditionCall\\.condition|conditionMessage|conditionMessage\\.condition|conflicts|Conj|contributors|cos|cosh|cospi|crossprod|Cstack_info|cummax|cummin|cumprod|cumsum|curlGetHeaders|cut|cut\\.Date|cut\\.default|cut\\.POSIXt|data\\.class|data\\.frame|data\\.matrix|date|debug|debuggingState|debugonce|default\\.stringsAsFactors|delayedAssign|deparse|det|detach|determinant|determinant\\.matrix|dget|diag|diff|diff\\.Date|diff\\.default|diff\\.difftime|diff\\.POSIXt|difftime|digamma|dim|dim\\.data.frame|dimnames|dimnames\\.data.frame|dir|dir\\.create|dir\\.exists|dirname|do\\.call|dontCheck|double|dput|dQuote|drop|droplevels|droplevels\\.data.frame|droplevels\\.factor|dump|duplicated|duplicated\\.array|duplicated\\.data.frame|duplicated\\.default|duplicated\\.matrix|duplicated\\.numeric_version|duplicated\\.POSIXlt|duplicated\\.warnings|dyn\\.load|dyn\\.unload|dynGet|eapply|eigen|emptyenv|enc2native|enc2utf8|encodeString|Encoding|endsWith|enquote|env\\.profile|environment|environmentIsLocked|environmentName|eval|eval\\.parent|evalq|exists|exp|expand\\.grid|expm1|expression|extSoftVersion|factor|factorial|fifo|file|file\\.access|file\\.append|file\\.choose|file\\.copy|file\\.create|file\\.exists|file\\.info|file\\.link|file\\.mode|file\\.mtime|file\\.path|file\\.remove|file\\.rename|file\\.show|file\\.size|file\\.symlink|Filter|Find|find\\.package|findInterval|findPackageEnv|findRestart|floor|flush|flush\\.connection|for|force|forceAndCall|formals|format|format\\.AsIs|format\\.data.frame|format\\.Date|format\\.default|format\\.difftime|format\\.factor|format\\.hexmode|format\\.info|format\\.libraryIQR|format\\.numeric_version|format\\.octmode|format\\.packageInfo|format\\.POSIXct|format\\.POSIXlt|format\\.pval|format\\.summaryDefault|formatC|formatDL|forwardsolve|function|gamma|gc|gc\\.time|gcinfo|gctorture|gctorture2|get|get0|getAllConnections|getCallingDLL|getCallingDLLe|getConnection|getDLLRegisteredRoutines|getDLLRegisteredRoutines\\.character|getDLLRegisteredRoutines\\.DLLInfo|getElement|geterrmessage|getExportedValue|getHook|getLoadedDLLs|getNamespace|getNamespaceExports|getNamespaceImports|getNamespaceInfo|getNamespaceName|getNamespaceUsers|getNamespaceVersion|getNativeSymbolInfo|getOption|getRversion|getSrcLines|getTaskCallbackNames|gettext|gettextf|getwd|gl|globalenv|gregexpr|grep|grepl|grepRaw|grouping|gsub|gzcon|gzfile|I|iconv|iconvlist|icuGetCollate|icuSetCollate|identical|identity|if|ifelse|Im|importIntoEnv|inherits|integer|interaction|interactive|intersect|intToBits|intToUtf8|inverse\\.rle|invisible|invokeRestart|invokeRestartInteractively|is\\.array|is\\.atomic|is\\.call|is\\.character|is\\.complex|is\\.data.frame|is\\.double|is\\.element|is\\.environment|is\\.expression|is\\.factor|is\\.finite|is\\.function|is\\.infinite|is\\.integer|is\\.language|is\\.list|is\\.loaded|is\\.logical|is\\.matrix|is\\.na|is\\.na.data.frame|is\\.na.numeric_version|is\\.na.POSIXlt|is\\.name|is\\.nan|is\\.null|is\\.numeric|is\\.numeric_version|is\\.numeric.Date|is\\.numeric.difftime|is\\.numeric.POSIXt|is\\.object|is\\.ordered|is\\.package_version|is\\.pairlist|is\\.primitive|is\\.qr|is\\.R|is\\.raw|is\\.recursive|is\\.single|is\\.symbol|is\\.table|is\\.unsorted|is\\.vector|isatty|isBaseNamespace|isdebugged|isIncomplete|isNamespace|isNamespaceLoaded|ISOdate|ISOdatetime|isOpen|isRestart|isS4|isSeekable|isSymmetric|isSymmetric\\.matrix|isTRUE|jitter|julian|julian\\.Date|julian\\.POSIXt|kappa|kappa\\.default|kappa\\.lm|kappa\\.qr|kronecker|l10n_info|La_library|La_version|La\\.svd|labels|labels\\.default|lapply|lazyLoad|lazyLoadDBexec|lazyLoadDBfetch|lbeta|lchoose|length|length\\.POSIXlt|lengths|levels|levels\\.default|lfactorial|lgamma|libcurlVersion|library|library\\.dynam|library\\.dynam.unload|licence|license|list|list\\.dirs|list\\.files|list2env|load|loadedNamespaces|loadingNamespaceInfo|loadNamespace|local|lockBinding|lockEnvironment|log|log10|log1p|log2|logb|logical|lower\\.tri|ls|make\\.names|make\\.unique|makeActiveBinding|Map|mapply|margin\\.table|mat\\.or.vec|match|match\\.arg|match\\.call|match\\.fun|Math\\.data.frame|Math\\.Date|Math\\.difftime|Math\\.factor|Math\\.POSIXt|matrix|max|max\\.col|mean|mean\\.Date|mean\\.default|mean\\.difftime|mean\\.POSIXct|mean\\.POSIXlt|mem\\.limits|memCompress|memDecompress|memory\\.profile|merge|merge\\.data.frame|merge\\.default|message|mget|min|missing|Mod|mode|months|months\\.Date|months\\.POSIXt|names|names\\.POSIXlt|namespaceExport|namespaceImport|namespaceImportClasses|namespaceImportFrom|namespaceImportMethods|nargs|nchar|ncol|NCOL|Negate|new\\.env|next|NextMethod|ngettext|nlevels|noquote|norm|normalizePath|nrow|NROW|numeric|numeric_version|nzchar|objects|oldClass|OlsonNames|on\\.exit|open|open\\.connection|open\\.srcfile|open\\.srcfilealias|open\\.srcfilecopy|Ops\\.data.frame|Ops\\.Date|Ops\\.difftime|Ops\\.factor|Ops\\.numeric_version|Ops\\.ordered|Ops\\.POSIXt|options|order|ordered|outer|package_version|packageEvent|packageHasNamespace|packageStartupMessage|packBits|pairlist|parent\\.env|parent\\.frame|parse|parseNamespaceFile|paste|paste0|path\\.expand|path\\.package|pcre_config|pipe|pmatch|pmax|pmax\\.int|pmin|pmin\\.int|polyroot|pos\\.to.env|Position|pretty|pretty\\.default|prettyNum|print|print\\.AsIs|print\\.by|print\\.condition|print\\.connection|print\\.data.frame|print\\.Date|print\\.default|print\\.difftime|print\\.Dlist|print\\.DLLInfo|print\\.DLLInfoList|print\\.DLLRegisteredRoutines|print\\.eigen|print\\.factor|print\\.function|print\\.hexmode|print\\.libraryIQR|print\\.listof|print\\.NativeRoutineList|print\\.noquote|print\\.numeric_version|print\\.octmode|print\\.packageInfo|print\\.POSIXct|print\\.POSIXlt|print\\.proc_time|print\\.restart|print\\.rle|print\\.simple.list|print\\.srcfile|print\\.srcref|print\\.summary.table|print\\.summaryDefault|print\\.table|print\\.warnings|prmatrix|proc\\.time|prod|prop\\.table|provideDimnames|psigamma|pushBack|pushBackLength|q|qr|qr\\.coef|qr\\.default|qr\\.fitted|qr\\.Q|qr\\.qty|qr\\.qy|qr\\.R|qr\\.resid|qr\\.solve|qr\\.X|quarters|quarters\\.Date|quarters\\.POSIXt|quit|quote|R_system_version|R\\.home|R\\.Version|range|range\\.default|rank|rapply|raw|rawConnection|rawConnectionValue|rawShift|rawToBits|rawToChar|rbind|rbind\\.data.frame|rcond|Re|read\\.dcf|readBin|readChar|readline|readLines|readRDS|readRenviron|Recall|Reduce|reg\\.finalizer|regexec|regexpr|registerS3method|registerS3methods|regmatches|remove|removeTaskCallback|rep|rep_len|rep\\.Date|rep\\.factor|rep\\.int|rep\\.numeric_version|rep\\.POSIXct|rep\\.POSIXlt|repeat|replace|replicate|require|requireNamespace|restartDescription|restartFormals|retracemem|return|returnValue|rev|rev\\.default|rle|rm|RNGkind|RNGversion|round|round\\.Date|round\\.POSIXt|row|row\\.names|row\\.names.data.frame|row\\.names.default|rowMeans|rownames|rowsum|rowsum\\.data.frame|rowsum\\.default|rowSums|sample|sample\\.int|sapply|save|save\\.image|saveRDS|scale|scale\\.default|scan|search|searchpaths|seek|seek\\.connection|seq|seq_along|seq_len|seq\\.Date|seq\\.default|seq\\.int|seq\\.POSIXt|sequence|serialize|set\\.seed|setdiff|setequal|setHook|setNamespaceInfo|setSessionTimeLimit|setTimeLimit|setwd|showConnections|shQuote|sign|signalCondition|signif|simpleCondition|simpleError|simpleMessage|simpleWarning|simplify2array|sin|single|sinh|sink|sink\\.number|sinpi|slice\\.index|socketConnection|socketSelect|solve|solve\\.default|solve\\.qr|sort|sort\\.default|sort\\.int|sort\\.list|sort\\.POSIXlt|source|split|split\\.data.frame|split\\.Date|split\\.default|split\\.POSIXct|sprintf|sqrt|sQuote|srcfile|srcfilealias|srcfilecopy|srcref|standardGeneric|startsWith|stderr|stdin|stdout|stop|stopifnot|storage\\.mode|strftime|strptime|strrep|strsplit|strtoi|strtrim|structure|strwrap|sub|subset|subset\\.data.frame|subset\\.default|subset\\.matrix|substitute|substr|substring|sum|summary|summary\\.connection|summary\\.data.frame|Summary\\.data.frame|summary\\.Date|Summary\\.Date|summary\\.default|Summary\\.difftime|summary\\.factor|Summary\\.factor|summary\\.matrix|Summary\\.numeric_version|Summary\\.ordered|summary\\.POSIXct|Summary\\.POSIXct|summary\\.POSIXlt|Summary\\.POSIXlt|summary\\.proc_time|summary\\.srcfile|summary\\.srcref|summary\\.table|suppressMessages|suppressPackageStartupMessages|suppressWarnings|svd|sweep|switch|sys\\.call|sys\\.calls|Sys\\.chmod|Sys\\.Date|sys\\.frame|sys\\.frames|sys\\.function|Sys\\.getenv|Sys\\.getlocale|Sys\\.getpid|Sys\\.glob|Sys\\.info|sys\\.load.image|Sys\\.localeconv|sys\\.nframe|sys\\.on.exit|sys\\.parent|sys\\.parents|Sys\\.readlink|sys\\.save.image|Sys\\.setenv|Sys\\.setFileTime|Sys\\.setlocale|Sys\\.sleep|sys\\.source|sys\\.status|Sys\\.time|Sys\\.timezone|Sys\\.umask|Sys\\.unsetenv|Sys\\.which|system|system\\.file|system\\.time|system2|t|t\\.data.frame|t\\.default|table|tabulate|tan|tanh|tanpi|tapply|taskCallbackManager|tcrossprod|tempdir|tempfile|testPlatformEquivalence|textConnection|textConnectionValue|tolower|topenv|toString|toString\\.default|toupper|trace|traceback|tracemem|tracingState|transform|transform\\.data.frame|transform\\.default|trigamma|trimws|trunc|trunc\\.Date|trunc\\.POSIXt|truncate|truncate\\.connection|try|tryCatch|typeof|unclass|undebug|union|unique|unique\\.array|unique\\.data.frame|unique\\.default|unique\\.matrix|unique\\.numeric_version|unique\\.POSIXlt|unique\\.warnings|units|units\\.difftime|unix\\.time|unlink|unlist|unloadNamespace|unlockBinding|unname|unserialize|unsplit|untrace|untracemem|unz|upper\\.tri|url|UseMethod|utf8ToInt|validEnc|validUTF8|vapply|vector|Vectorize|warning|warnings|weekdays|weekdays\\.Date|weekdays\\.POSIXt|which|which\\.max|which\\.min|while|with|with\\.default|withAutoprint|withCallingHandlers|within|within\\.data.frame|within\\.list|withRestarts|withVisible|write|write\\.dcf|writeBin|writeChar|writeLines|xor|xor\\.hexmode|xor\\.octmode|xpdrows\\.data.frame|xtfrm|xtfrm\\.AsIs|xtfrm\\.Date|xtfrm\\.default|xtfrm\\.difftime|xtfrm\\.factor|xtfrm\\.numeric_version|xtfrm\\.POSIXct|xtfrm\\.POSIXlt|xtfrm\\.Surv|xzfile|zapsmall)\\s*(\\()",
+ "captures": {
+ "1": {
+ "name": "support.function.r"
+ }
+ }
+ },
+ {
+ "match": "\\b(abline|arrows|assocplot|axis|Axis|axis\\.Date|Axis\\.Date|Axis\\.default|axis\\.POSIXct|Axis\\.POSIXt|Axis\\.table|axTicks|barplot|barplot\\.default|box|boxplot|boxplot\\.default|boxplot\\.formula|boxplot\\.matrix|bxp|cdplot|cdplot\\.default|cdplot\\.formula|clip|close\\.screen|co\\.intervals|contour|contour\\.default|coplot|curve|dotchart|erase\\.screen|filled\\.contour|fourfoldplot|frame|grconvertX|grconvertY|grid|hist|hist\\.Date|hist\\.default|hist\\.POSIXt|identify|identify\\.default|image|image\\.default|layout|layout\\.show|lcm|legend|lines|lines\\.default|lines\\.formula|lines\\.histogram|lines\\.table|locator|matlines|matplot|matpoints|mosaicplot|mosaicplot\\.default|mosaicplot\\.formula|mtext|pairs|pairs\\.default|pairs\\.formula|panel\\.smooth|par|persp|persp\\.default|pie|piechart|plot|plot\\.data.frame|plot\\.default|plot\\.design|plot\\.factor|plot\\.formula|plot\\.function|plot\\.histogram|plot\\.new|plot\\.raster|plot\\.table|plot\\.window|plot\\.xy|plotHclust|points|points\\.default|points\\.formula|points\\.table|polygon|polypath|rasterImage|rect|rug|screen|segments|smoothScatter|spineplot|spineplot\\.default|spineplot\\.formula|split\\.screen|stars|stem|strheight|stripchart|stripchart\\.default|stripchart\\.formula|strwidth|sunflowerplot|sunflowerplot\\.default|sunflowerplot\\.formula|symbols|text|text\\.default|text\\.formula|title|xinch|xspline|xyinch|yinch)\\s*(\\()",
+ "captures": {
+ "1": {
+ "name": "support.function.r"
+ }
+ }
+ },
+ {
+ "match": "\\b(adjustcolor|anyNA\\.raster|as\\.graphicsAnnot|as\\.matrix.raster|as\\.raster|as\\.raster.array|as\\.raster.character|as\\.raster.logical|as\\.raster.matrix|as\\.raster.numeric|as\\.raster.raster|as\\.raster.raw|axisTicks|bitmap|bmp|boxplot\\.stats|c2to3|cairo_pdf|cairo_ps|cairoVersion|check_for_XQuartz|check_gs_type|check\\.options|checkFont|checkFont\\.CIDFont|checkFont\\.default|checkFont\\.Type1Font|checkFontInUse|checkIntFormat|checkQuartzFont|checkX11Font|chromaticAdaptation|chull|CIDFont|cm|cm\\.colors|col2rgb|colorConverter|colorRamp|colorRampPalette|colors|colours|contourLines|convertColor|densCols|dev\\.capabilities|dev\\.capture|dev\\.control|dev\\.copy|dev\\.copy2eps|dev\\.copy2pdf|dev\\.cur|dev\\.displaylist|dev\\.flush|dev\\.hold|dev\\.interactive|dev\\.list|dev\\.new|dev\\.next|dev\\.off|dev\\.prev|dev\\.print|dev\\.set|dev\\.size|dev2bitmap|devAskNewPage|deviceIsInteractive|embedFonts|extendrange|getGraphicsEvent|getGraphicsEventEnv|graphics\\.off|gray|gray\\.colors|grey|grey\\.colors|grSoftVersion|guessEncoding|hcl|heat\\.colors|hsv|initPSandPDFfonts|is\\.na.raster|is\\.raster|isPDF|jpeg|make\\.rgb|matchEncoding|matchEncoding\\.CIDFont|matchEncoding\\.Type1Font|matchFont|n2mfrow|nclass\\.FD|nclass\\.scott|nclass\\.Sturges|Ops\\.raster|palette|pdf|pdf\\.options|pdfFonts|pictex|png|postscript|postscriptFonts|prettyDate|print\\.colorConverter|print\\.raster|print\\.recordedplot|print\\.RGBcolorConverter|printFont|printFont\\.CIDFont|printFont\\.Type1Font|printFonts|ps\\.options|quartz|quartz\\.options|quartz\\.save|quartzFont|quartzFonts|rainbow|recordGraphics|recordPalette|recordPlot|replayPlot|restoreRecordedPlot|rgb|rgb2hsv|savePlot|seqDtime|setEPS|setFonts|setGraphicsEventEnv|setGraphicsEventHandlers|setPS|setQuartzFonts|setX11Fonts|svg|terrain\\.colors|tiff|topo\\.colors|trans3d|trunc_POSIXt|Type1Font|x11|X11|X11\\.options|X11Font|X11FontError|X11Fonts|xfig|xy\\.coords|xyTable|xyz\\.coords)\\s*(\\()",
+ "captures": {
+ "1": {
+ "name": "support.function.r"
+ }
+ }
+ },
+ {
+ "match": "\\b(addNextMethod|allGenerics|allNames|Arith|as|asMethodDefinition|assignClassDef|assignMethodsMetaData|balanceMethodsList|bind_activation|cacheGenericsMetaData|cacheMetaData|cacheMethod|cacheOnAssign|callGeneric|callNextMethod|canCoerce|cbind|cbind2|checkAtAssignment|checkSlotAssignment|classesToAM|classGeneratorFunction|classLabel|classMetaName|className|coerce|Compare|completeClassDefinition|completeExtends|completeSubclasses|Complex|conformMethod|defaultDumpName|defaultPrototype|dispatchIsInternal|doPrimitiveMethod|dumpMethod|dumpMethods|el|elNamed|empty\\.dump|emptyMethodsList|envRefInferField|envRefSetField|evalOnLoad|evalqOnLoad|evalSource|existsFunction|existsMethod|extends|externalRefMethod|finalDefaultMethod|findClass|findFunction|findMethod|findMethods|findMethodSignatures|findUnique|fixPre1\\.8|formalArgs|fromNextMethod|functionBody|generic\\.skeleton|genericForBasic|getAccess|getAllMethods|getAllSuperClasses|getClass|getClassDef|getClasses|getClassName|getClassPackage|getDataPart|getExtends|getFunction|getGeneric|getGenericFromCall|getGenerics|getGroup|getGroupMembers|getLoadActions|getMethod|getMethods|getMethodsAndAccessors|getMethodsForDispatch|getMethodsMetaData|getPackageName|getProperties|getPrototype|getRefClass|getRefSuperClasses|getSlots|getSubclasses|getValidity|getVirtual|hasArg|hasLoadAction|hasMethod|hasMethods|implicitGeneric|inBasicFuns|inferProperties|inheritedSlotNames|inheritedSubMethodLists|initFieldArgs|initialize|initMethodDispatch|initRefFields|insertClassMethods|insertMethod|insertMethodInEmptyList|insertSource|installClassMethod|is|isBaseFun|isClass|isClassDef|isClassUnion|isGeneric|isGrammarSymbol|isGroup|isMixin|isRematched|isS3Generic|isSealedClass|isSealedMethod|isVirtualClass|isXS3Class|kronecker|languageEl|linearizeMlist|listFromMethods|listFromMlist|loadMethod|Logic|makeClassMethod|makeClassRepresentation|makeEnvRefMethods|makeExtends|makeGeneric|makeMethodsList|makePrototypeFromClassDef|makeStandardGeneric|matchDefaults|matchSignature|Math|Math2|mergeMethods|metaNameUndo|method\\.skeleton|MethodAddCoerce|methodSignatureMatrix|MethodsList|MethodsListSelect|methodsPackageMetaName|missingArg|mlistMetaName|multipleClasses|new|newBasic|newClassRepresentation|newEmptyObject|Ops|outerLabels|packageSlot|possibleExtends|print\\.MethodsList|printClassRepresentation|printPropertiesList|prohibitGeneric|promptClass|promptMethods|prototype|Quote|rbind|rbind2|reconcilePropertiesAndPrototype|refClassFields|refClassInformation|refClassMethods|refClassPrompt|refObjectClass|registerImplicitGenerics|rematchDefinition|removeClass|removeGeneric|removeMethod|removeMethods|removeMethodsObject|representation|requireMethods|resetClass|resetGeneric|S3Class|S3forS4Methods|S3Part|sealClass|seemsS4Object|selectMethod|selectSuperClasses|setAs|setCacheOnAssign|setClass|setClassUnion|setDataPart|setGeneric|setGenericImplicit|setGroupGeneric|setIs|setLoadAction|setLoadActions|setMethod|setNames|setOldClass|setPackageName|setPrimitiveMethods|setRefClass|setReplaceMethod|setValidity|show|showClass|showClassMethod|showDefault|showExtends|showExtraSlots|showMethods|showMlist|showRefClassDef|signature|SignatureMethod|sigToEnv|slot|slotNames|slotsFromS3|substituteDirect|substituteFunctionArgs|Summary|superClassDepth|superClassMethodName|tableNames|testInheritedMethods|testVirtual|traceOff|traceOn|tryNew|unRematchDefinition|useMTable|validObject|validSlotNames)\\s*(\\()",
+ "captures": {
+ "1": {
+ "name": "support.function.r"
+ }
+ }
+ },
+ {
+ "match": "\\b(acf|acf2AR|add\\.name|add1|add1\\.default|add1\\.glm|add1\\.lm|add1\\.mlm|addmargins|aggregate|aggregate\\.data.frame|aggregate\\.default|aggregate\\.formula|aggregate\\.ts|AIC|AIC\\.default|AIC\\.logLik|alias|alias\\.formula|alias\\.lm|anova|anova\\.glm|anova\\.glmlist|anova\\.lm|anova\\.lmlist|anova\\.loess|anova\\.mlm|anova\\.mlmlist|anova\\.nls|anovalist\\.nls|ansari\\.test|ansari\\.test.default|ansari\\.test.formula|aov|approx|approxfun|ar|ar\\.burg|ar\\.burg.default|ar\\.burg.mts|ar\\.mle|ar\\.ols|ar\\.yw|ar\\.yw.default|ar\\.yw.mts|arima|arima\\.sim|arima0|arima0\\.diag|ARMAacf|ARMAtoMA|as\\.data.frame.aovproj|as\\.data.frame.ftable|as\\.data.frame.logLik|as\\.dendrogram|as\\.dendrogram.dendrogram|as\\.dendrogram.hclust|as\\.dist|as\\.dist.default|as\\.formula|as\\.hclust|as\\.hclust.default|as\\.hclust.dendrogram|as\\.hclust.twins|as\\.matrix.dist|as\\.matrix.ftable|as\\.stepfun|as\\.stepfun.default|as\\.stepfun.isoreg|as\\.table.ftable|as\\.ts|as\\.ts.default|asOneSidedFormula|ave|bandwidth\\.kernel|bartlett\\.test|bartlett\\.test.default|bartlett\\.test.formula|BIC|BIC\\.default|BIC\\.logLik|binom\\.test|binomial|biplot|biplot\\.default|biplot\\.prcomp|biplot\\.princomp|Box\\.test|bw_pair_cnts|bw\\.bcv|bw\\.nrd|bw\\.nrd0|bw\\.SJ|bw\\.ucv|C|cancor|case\\.names|case\\.names.default|case\\.names.lm|cbind\\.ts|ccf|check_exact|chisq\\.test|cmdscale|coef|coef\\.aov|coef\\.Arima|coef\\.default|coef\\.listof|coef\\.maov|coef\\.nls|coefficients|complete\\.cases|confint|confint\\.default|confint\\.glm|confint\\.lm|confint\\.nls|constrOptim|contr\\.helmert|contr\\.poly|contr\\.SAS|contr\\.sum|contr\\.treatment|contrasts|convolve|cooks\\.distance|cooks\\.distance.glm|cooks\\.distance.lm|cophenetic|cophenetic\\.default|cophenetic\\.dendrogram|cor|cor\\.test|cor\\.test.default|cor\\.test.formula|cov|cov\\.wt|cov2cor|covratio|cpgram|cut\\.dendrogram|cutree|cycle|cycle\\.default|cycle\\.ts|D|dbeta|dbinom|dcauchy|dchisq|decompose|delete\\.response|deltat|deltat\\.default|dendrapply|density|density\\.default|deriv|deriv\\.default|deriv\\.formula|deriv3|deriv3\\.default|deriv3\\.formula|deviance|deviance\\.default|deviance\\.glm|deviance\\.lm|deviance\\.mlm|deviance\\.nls|dexp|df|df\\.kernel|df\\.residual|df\\.residual.default|df\\.residual.nls|dfbeta|dfbeta\\.lm|dfbetas|dfbetas\\.lm|dffits|dgamma|dgeom|dhyper|diff\\.ts|diffinv|diffinv\\.default|diffinv\\.ts|diffinv\\.vector|dist|dlnorm|dlogis|dmultinom|dnbinom|dnorm|dpois|drop\\.name|drop\\.terms|drop1|drop1\\.default|drop1\\.glm|drop1\\.lm|drop1\\.mlm|dsignrank|dt|dummy\\.coef|dummy\\.coef.aovlist|dummy\\.coef.lm|dunif|dweibull|dwilcox|ecdf|eff\\.aovlist|effects|effects\\.glm|effects\\.lm|embed|end|end\\.default|estVar|estVar\\.mlm|estVar\\.SSD|expand\\.model.frame|extractAIC|extractAIC\\.aov|extractAIC\\.coxph|extractAIC\\.glm|extractAIC\\.lm|extractAIC\\.negbin|extractAIC\\.survreg|factanal|factanal\\.fit.mle|factor\\.name|family|family\\.glm|family\\.lm|fft|filter|fisher\\.test|fitted|fitted\\.default|fitted\\.isoreg|fitted\\.kmeans|fitted\\.nls|fitted\\.smooth.spline|fitted\\.values|fivenum|fligner\\.test|fligner\\.test.default|fligner\\.test.formula|format_perc|format\\.dist|format\\.ftable|format\\.perc|formula|formula\\.character|formula\\.data.frame|formula\\.default|formula\\.formula|formula\\.glm|formula\\.lm|formula\\.nls|formula\\.terms|frequency|frequency\\.default|friedman\\.test|friedman\\.test.default|friedman\\.test.formula|ftable|ftable\\.default|ftable\\.formula|Gamma|gaussian|get_all_vars|getCall|getCall\\.default|getInitial|getInitial\\.default|getInitial\\.formula|getInitial\\.selfStart|glm|glm\\.control|glm\\.fit|hasTsp|hat|hatvalues|hatvalues\\.lm|hatvalues\\.smooth.spline|hclust|heatmap|HL|HoltWinters|hyman_filter|identify\\.hclust|influence|influence\\.glm|influence\\.lm|influence\\.measures|integrate|interaction\\.plot|inverse\\.gaussian|IQR|is\\.empty.model|is\\.leaf|is\\.mts|is\\.stepfun|is\\.ts|is\\.tskernel|isoreg|KalmanForecast|KalmanLike|KalmanRun|KalmanSmooth|kernapply|kernapply\\.default|kernapply\\.ts|kernapply\\.tskernel|kernapply\\.vector|kernel|kmeans|knots|knots\\.stepfun|kruskal\\.test|kruskal\\.test.default|kruskal\\.test.formula|ks\\.test|ksmooth|labels\\.dendrogram|labels\\.dist|labels\\.lm|labels\\.terms|lag|lag\\.default|lag\\.plot|line|lines\\.isoreg|lines\\.stepfun|lines\\.ts|lm|lm\\.fit|lm\\.influence|lm\\.wfit|loadings|loess|loess\\.control|loess\\.smooth|logLik|logLik\\.Arima|logLik\\.glm|logLik\\.lm|logLik\\.logLik|logLik\\.nls|loglin|lowess|ls\\.diag|ls\\.print|lsfit|mad|mahalanobis|make\\.link|make\\.tables.aovproj|make\\.tables.aovprojlist|makeARIMA|makepredictcall|makepredictcall\\.default|makepredictcall\\.poly|manova|mantelhaen\\.test|mauchly\\.test|mauchly\\.test.mlm|mauchly\\.test.SSD|mcnemar\\.test|median|median\\.default|medpolish|merge\\.dendrogram|midcache\\.dendrogram|model\\.extract|model\\.frame|model\\.frame.aovlist|model\\.frame.default|model\\.frame.glm|model\\.frame.lm|model\\.matrix|model\\.matrix.default|model\\.matrix.lm|model\\.offset|model\\.response|model\\.tables|model\\.tables.aov|model\\.tables.aovlist|model\\.weights|monthplot|monthplot\\.default|monthplot\\.stl|monthplot\\.StructTS|monthplot\\.ts|mood\\.test|mood\\.test.default|mood\\.test.formula|mvfft|n\\.knots|na\\.action|na\\.action.default|na\\.contiguous|na\\.contiguous.default|na\\.exclude|na\\.exclude.data.frame|na\\.exclude.default|na\\.fail|na\\.fail.default|na\\.omit|na\\.omit.data.frame|na\\.omit.default|na\\.omit.ts|na\\.pass|napredict|napredict\\.default|napredict\\.exclude|naprint|naprint\\.default|naprint\\.exclude|naprint\\.omit|naresid|naresid\\.default|naresid\\.exclude|nextn|nleaves|nlm|nlminb|nls|nls_port_fit|nls\\.control|nlsModel|nlsModel\\.plinear|NLSstAsymptotic|NLSstAsymptotic\\.sortedXyData|NLSstClosestX|NLSstClosestX\\.sortedXyData|NLSstLfAsymptote|NLSstLfAsymptote\\.sortedXyData|NLSstRtAsymptote|NLSstRtAsymptote\\.sortedXyData|nobs|nobs\\.default|nobs\\.dendrogram|nobs\\.glm|nobs\\.lm|nobs\\.logLik|nobs\\.nls|numericDeriv|offset|oneway\\.test|Ops\\.ts|optim|optimHess|optimise|optimize|order\\.dendrogram|p\\.adjust|pacf|pacf\\.default|pairwise\\.prop.test|pairwise\\.t.test|pairwise\\.table|pairwise\\.wilcox.test|pbeta|pbinom|pbirthday|pcauchy|pchisq|pexp|pf|pgamma|pgeom|phyper|Pillai|plclust|plnorm|plogis|plot\\.acf|plot\\.decomposed.ts|plot\\.dendrogram|plot\\.density|plot\\.ecdf|plot\\.hclust|plot\\.HoltWinters|plot\\.isoreg|plot\\.lm|plot\\.medpolish|plot\\.mlm|plot\\.ppr|plot\\.prcomp|plot\\.princomp|plot\\.profile.nls|plot\\.spec|plot\\.spec.coherency|plot\\.spec.phase|plot\\.stepfun|plot\\.stl|plot\\.ts|plot\\.tskernel|plot\\.TukeyHSD|plotNode|plotNodeLimit|pnbinom|pnorm|pointwise|poisson|poisson\\.test|poly|polym|port_get_named_v|port_msg|power|power\\.anova.test|power\\.prop.test|power\\.t.test|PP\\.test|ppoints|ppois|ppr|ppr\\.default|ppr\\.formula|prcomp|prcomp\\.default|prcomp\\.formula|predict|predict\\.ar|predict\\.Arima|predict\\.arima0|predict\\.glm|predict\\.HoltWinters|predict\\.lm|predict\\.loess|predict\\.mlm|predict\\.nls|predict\\.poly|predict\\.ppr|predict\\.prcomp|predict\\.princomp|predict\\.smooth.spline|predict\\.smooth.spline.fit|predict\\.StructTS|predLoess|preplot|princomp|princomp\\.default|princomp\\.formula|print\\.acf|print\\.anova|print\\.aov|print\\.aovlist|print\\.ar|print\\.Arima|print\\.arima0|print\\.dendrogram|print\\.density|print\\.dist|print\\.dummy_coef|print\\.dummy_coef_list|print\\.ecdf|print\\.factanal|print\\.family|print\\.formula|print\\.ftable|print\\.glm|print\\.hclust|print\\.HoltWinters|print\\.htest|print\\.infl|print\\.integrate|print\\.isoreg|print\\.kmeans|print\\.lm|print\\.loadings|print\\.loess|print\\.logLik|print\\.medpolish|print\\.mtable|print\\.nls|print\\.pairwise.htest|print\\.power.htest|print\\.ppr|print\\.prcomp|print\\.princomp|print\\.smooth.spline|print\\.stepfun|print\\.stl|print\\.StructTS|print\\.summary.aov|print\\.summary.aovlist|print\\.summary.ecdf|print\\.summary.glm|print\\.summary.lm|print\\.summary.loess|print\\.summary.manova|print\\.summary.nls|print\\.summary.ppr|print\\.summary.prcomp|print\\.summary.princomp|print\\.tables_aov|print\\.terms|print\\.ts|print\\.tskernel|print\\.TukeyHSD|print\\.tukeyline|print\\.tukeysmooth|print\\.xtabs|printCoefmat|profile|profile\\.nls|profiler|profiler\\.nls|proj|proj\\.aov|proj\\.aovlist|proj\\.default|proj\\.lm|proj\\.matrix|promax|prop\\.test|prop\\.trend.test|psignrank|pt|ptukey|punif|pweibull|pwilcox|qbeta|qbinom|qbirthday|qcauchy|qchisq|qexp|qf|qgamma|qgeom|qhyper|qlnorm|qlogis|qnbinom|qnorm|qpois|qqline|qqnorm|qqnorm\\.default|qqplot|qr\\.lm|qsignrank|qt|qtukey|quade\\.test|quade\\.test.default|quade\\.test.formula|quantile|quantile\\.default|quantile\\.ecdf|quantile\\.POSIXt|quasi|quasibinomial|quasipoisson|qunif|qweibull|qwilcox|r2dtable|Rank|rbeta|rbinom|rcauchy|rchisq|read\\.ftable|rect\\.hclust|reformulate|regularize\\.values|relevel|relevel\\.default|relevel\\.factor|relevel\\.ordered|reorder|reorder\\.default|reorder\\.dendrogram|replications|reshape|resid|residuals|residuals\\.default|residuals\\.glm|residuals\\.HoltWinters|residuals\\.isoreg|residuals\\.lm|residuals\\.nls|residuals\\.smooth.spline|residuals\\.tukeyline|rev\\.dendrogram|rexp|rf|rgamma|rgeom|rhyper|rlnorm|rlogis|rmultinom|rnbinom|rnorm|Roy|rpois|rsignrank|rstandard|rstandard\\.glm|rstandard\\.lm|rstudent|rstudent\\.glm|rstudent\\.lm|rt|runif|runmed|rweibull|rwilcox|rWishart|safe_pchisq|safe_pf|scatter\\.smooth|screeplot|screeplot\\.default|sd|se\\.aov|se\\.aovlist|se\\.contrast|se\\.contrast.aov|se\\.contrast.aovlist|selfStart|selfStart\\.default|selfStart\\.formula|setNames|shapiro\\.test|sigma|sigma\\.default|sigma\\.mlm|simpleLoess|simulate|simulate\\.lm|smooth|smooth\\.spline|smoothEnds|sortedXyData|sortedXyData\\.default|spec\\.ar|spec\\.pgram|spec\\.taper|spectrum|sphericity|spl_coef_conv|spline|splinefun|splinefunH|splinefunH0|SSasymp|SSasympOff|SSasympOrig|SSbiexp|SSD|SSD\\.mlm|SSfol|SSfpl|SSgompertz|SSlogis|SSmicmen|SSweibull|start|start\\.default|stat\\.anova|step|stepfun|stl|str\\.dendrogram|str\\.logLik|StructTS|summary\\.aov|summary\\.aovlist|summary\\.ecdf|summary\\.glm|summary\\.infl|summary\\.lm|summary\\.loess|summary\\.manova|summary\\.mlm|summary\\.nls|summary\\.ppr|summary\\.prcomp|summary\\.princomp|summary\\.stepfun|summary\\.stl|summary\\.tukeysmooth|supsmu|symnum|t\\.test|t\\.test.default|t\\.test.formula|t\\.ts|termplot|terms|terms\\.aovlist|terms\\.default|terms\\.formula|terms\\.terms|Thin\\.col|Thin\\.row|time|time\\.default|time\\.ts|toeplitz|Tr|ts|ts\\.intersect|ts\\.plot|ts\\.union|tsdiag|tsdiag\\.Arima|tsdiag\\.arima0|tsdiag\\.StructTS|tsp|tsSmooth|tsSmooth\\.StructTS|TukeyHSD|TukeyHSD\\.aov|uniroot|update|update\\.default|update\\.formula|var|var\\.test|var\\.test.default|var\\.test.formula|variable\\.names|variable\\.names.default|variable\\.names.lm|varimax|vcov|vcov\\.Arima|vcov\\.glm|vcov\\.lm|vcov\\.mlm|vcov\\.nls|vcov\\.summary.glm|vcov\\.summary.lm|weighted\\.mean|weighted\\.mean.Date|weighted\\.mean.default|weighted\\.mean.difftime|weighted\\.mean.POSIXct|weighted\\.mean.POSIXlt|weighted\\.residuals|weights|weights\\.default|weights\\.glm|weights\\.nls|wilcox\\.test|wilcox\\.test.default|wilcox\\.test.formula|Wilks|window|window\\.default|window\\.ts|write\\.ftable|xtabs)\\s*(\\()",
+ "captures": {
+ "1": {
+ "name": "support.function.r"
+ }
+ }
+ },
+ {
+ "match": "\\b(adist|alarm|apropos|aregexec|argNames|argsAnywhere|as\\.bibentry|as\\.bibentry.bibentry|as\\.bibentry.citation|as\\.character.person|as\\.character.roman|as\\.person|as\\.person.default|as\\.personList|as\\.personList.default|as\\.personList.person|as\\.relistable|as\\.roman|aspell|aspell_find_dictionaries|aspell_find_program|aspell_inspect_context|aspell_package|aspell_package_C_files|aspell_package_description|aspell_package_pot_files|aspell_package_R_files|aspell_package_Rd_files|aspell_package_vignettes|aspell_R_C_files|aspell_R_manuals|aspell_R_R_files|aspell_R_Rd_files|aspell_R_vignettes|aspell_write_personal_dictionary_file|assignInMyNamespace|assignInNamespace|attachedPackageCompletions|available\\.packages|bibentry|blank_out_ignores_in_lines|blank_out_regexp_matches|browseEnv|browseURL|browseVignettes|bug\\.report|bug\\.report.info|c\\.bibentry|c\\.person|capture\\.output|changedFiles|check_for_XQuartz|checkCRAN|chooseBioCmirror|chooseCRANmirror|citation|cite|citeNatbib|citEntry|citFooter|citHeader|close\\.socket|close\\.txtProgressBar|combn|compareVersion|contrib\\.url|correctFilenameToken|count\\.fields|CRAN\\.packages|create\\.post|data|data\\.entry|dataentry|de|de\\.ncols|de\\.restore|de\\.setup|debugcall|debugger|defaultUserAgent|demo|download\\.file|download\\.packages|dump\\.frames|edit|edit\\.data.frame|edit\\.default|edit\\.matrix|edit\\.vignette|emacs|example|expr2token|file_test|file\\.edit|fileCompletionPreferred|fileCompletions|fileSnapshot|filter_packages_by_depends_predicates|find|find_files_in_directories|findExactMatches|findFuzzyMatches|findGeneric|findLineNum|findMatches|fix|fixInNamespace|flush\\.console|fnLineNum|format\\.aspell|format\\.bibentry|format\\.citation|format\\.news_db|format\\.object_size|format\\.person|format\\.roman|formatOL|formatUL|functionArgs|fuzzyApropos|get_parse_data_for_message_strings|getAnywhere|getCRANmirrors|getDependencies|getFromNamespace|getIsFirstArg|getKnownS3generics|getParseData|getParseText|getRcode|getRcode\\.vignette|getS3method|getSrcDirectory|getSrcfile|getSrcFilename|getSrcLocation|getSrcref|getTxtProgressBar|glob2rx|globalVariables|hasName|head|head\\.data.frame|head\\.default|head\\.ftable|head\\.function|head\\.matrix|head\\.table|help|help\\.request|help\\.search|help\\.start|helpCompletions|history|hsearch_db|hsearch_db_concepts|hsearch_db_keywords|index\\.search|inFunction|install\\.packages|installed\\.packages|is\\.relistable|isBasePkg|isInsideQuotes|isS3method|isS3stdGeneric|keywordCompletions|limitedLabels|loadedPackageCompletions|loadhistory|localeToCharset|ls\\.str|lsf\\.str|maintainer|make_sysdata_rda|make\\.packages.html|make\\.socket|makeRegexpSafe|makeRweaveLatexCodeRunner|makeUserAgent|matchAvailableTopics|memory\\.limit|memory\\.size|menu|merge_demo_index|merge_vignette_index|methods|mirror2html|modifyList|new\\.packages|news|normalCompletions|nsl|object\\.size|offline_help_helper|old\\.packages|Ops\\.roman|package\\.skeleton|packageDescription|packageName|packageStatus|packageVersion|page|person|personList|pico|print\\.aspell|print\\.aspell_inspect_context|print\\.bibentry|print\\.Bibtex|print\\.browseVignettes|print\\.changedFiles|print\\.citation|print\\.fileSnapshot|print\\.findLineNumResult|print\\.getAnywhere|print\\.help_files_with_topic|print\\.hsearch|print\\.hsearch_db|print\\.Latex|print\\.ls_str|print\\.MethodsFunction|print\\.news_db|print\\.object_size|print\\.packageDescription|print\\.packageIQR|print\\.packageStatus|print\\.person|print\\.roman|print\\.sessionInfo|print\\.socket|print\\.summary.packageStatus|print\\.vignette|printhsearchInternal|process\\.events|prompt|prompt\\.data.frame|prompt\\.default|promptData|promptImport|promptPackage|rc\\.getOption|rc\\.options|rc\\.settings|rc\\.status|read\\.csv|read\\.csv2|read\\.delim|read\\.delim2|read\\.DIF|read\\.fortran|read\\.fwf|read\\.socket|read\\.table|readCitationFile|recover|registerNames|regquote|relist|relist\\.default|relist\\.factor|relist\\.list|relist\\.matrix|remove\\.packages|removeSource|rep\\.bibentry|rep\\.roman|resolvePkgType|Rprof|Rprof_memory_summary|Rprofmem|RShowDoc|RSiteSearch|rtags|rtags\\.file|Rtangle|RtangleFinish|RtangleRuncode|RtangleSetup|RtangleWritedoc|RweaveChunkPrefix|RweaveEvalWithOpt|RweaveLatex|RweaveLatexFinish|RweaveLatexOptions|RweaveLatexRuncode|RweaveLatexSetup|RweaveLatexWritedoc|RweaveTryStop|savehistory|select\\.list|sessionInfo|setBreakpoint|setIsFirstArg|setRepositories|setTxtProgressBar|shorten\\.to.string|simplifyRepos|sort\\.bibentry|specialCompletions|specialFunctionArgs|specialOpCompletionsHelper|specialOpLocs|stack|stack\\.data.frame|stack\\.default|Stangle|str|str\\.data.frame|str\\.Date|str\\.default|str\\.POSIXt|strcapture|strextract|strOptions|substr_with_tabs|summary\\.aspell|summary\\.packageStatus|summaryRprof|suppressForeignCheck|Sweave|SweaveGetSyntax|SweaveHooks|SweaveParseOptions|SweaveReadFile|SweaveSyntConv|tail|tail\\.data.frame|tail\\.default|tail\\.ftable|tail\\.function|tail\\.matrix|tail\\.table|tar|timestamp|toBibtex|toBibtex\\.bibentry|toBibtex\\.person|toLatex|toLatex\\.sessionInfo|topicName|txtProgressBar|type\\.convert|undebugcall|unique\\.bibentry|unlist\\.relistable|unstack|unstack\\.data.frame|unstack\\.default|untar|untar2|unzip|update\\.packages|update\\.packageStatus|upgrade|upgrade\\.packageStatus|url\\.show|URLdecode|URLencode|vi|View|vignette|write\\.csv|write\\.csv2|write\\.etags|write\\.socket|write\\.table|wsbrowser|xedit|xemacs|zip)\\s*(\\()",
+ "captures": {
+ "1": {
+ "name": "support.function.r"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/raku.tmLanguage.json b/node_modules/shiki/languages/raku.tmLanguage.json
new file mode 100644
index 0000000..4bf7a15
--- /dev/null
+++ b/node_modules/shiki/languages/raku.tmLanguage.json
@@ -0,0 +1,315 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/textmate/perl.tmbundle/blob/master/Syntaxes/Perl%206.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/textmate/perl.tmbundle/commit/d9841a0878239fa43f88c640f8d458590f97e8f5",
+ "name": "raku",
+ "scopeName": "source.perl.6",
+ "patterns": [
+ {
+ "begin": "^=begin",
+ "end": "^=end",
+ "name": "comment.block.perl"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.perl"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.perl"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.number-sign.perl"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.class.perl.6"
+ },
+ "3": {
+ "name": "entity.name.type.class.perl.6"
+ }
+ },
+ "match": "(class|enum|grammar|knowhow|module|package|role|slang|subset)(\\s+)(((?:::|')?(?:([a-zA-Z_\\x{C0}-\\x{FF}\\$])([a-zA-Z0-9_\\x{C0}-\\x{FF}\\\\$]|[\\-'][a-zA-Z0-9_\\x{C0}-\\x{FF}\\$])*))+)",
+ "name": "meta.class.perl.6"
+ },
+ {
+ "begin": "(?<=\\s)'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.quoted.single.perl",
+ "patterns": [
+ {
+ "match": "\\\\['\\\\]",
+ "name": "constant.character.escape.perl"
+ }
+ ]
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.perl"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.perl"
+ }
+ },
+ "name": "string.quoted.double.perl",
+ "patterns": [
+ {
+ "match": "\\\\[abtnfre\"\\\\]",
+ "name": "constant.character.escape.perl"
+ }
+ ]
+ },
+ {
+ "begin": "q(q|to|heredoc)*\\s*:?(q|to|heredoc)*\\s*/(.+)/",
+ "end": "\\3",
+ "name": "string.quoted.single.heredoc.perl"
+ },
+ {
+ "begin": "(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*{{",
+ "end": "}}",
+ "name": "string.quoted.double.heredoc.brace.perl",
+ "patterns": [
+ {
+ "include": "#qq_brace_string_content"
+ }
+ ]
+ },
+ {
+ "begin": "(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*\\(\\(",
+ "end": "\\)\\)",
+ "name": "string.quoted.double.heredoc.paren.perl",
+ "patterns": [
+ {
+ "include": "#qq_paren_string_content"
+ }
+ ]
+ },
+ {
+ "begin": "(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*\\[\\[",
+ "end": "\\]\\]",
+ "name": "string.quoted.double.heredoc.bracket.perl",
+ "patterns": [
+ {
+ "include": "#qq_bracket_string_content"
+ }
+ ]
+ },
+ {
+ "begin": "(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*{",
+ "end": "}",
+ "name": "string.quoted.single.heredoc.brace.perl",
+ "patterns": [
+ {
+ "include": "#qq_brace_string_content"
+ }
+ ]
+ },
+ {
+ "begin": "(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*/",
+ "end": "/",
+ "name": "string.quoted.single.heredoc.slash.perl",
+ "patterns": [
+ {
+ "include": "#qq_slash_string_content"
+ }
+ ]
+ },
+ {
+ "begin": "(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*\\(",
+ "end": "\\)",
+ "name": "string.quoted.single.heredoc.paren.perl",
+ "patterns": [
+ {
+ "include": "#qq_paren_string_content"
+ }
+ ]
+ },
+ {
+ "begin": "(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*\\[",
+ "end": "\\]",
+ "name": "string.quoted.single.heredoc.bracket.perl",
+ "patterns": [
+ {
+ "include": "#qq_bracket_string_content"
+ }
+ ]
+ },
+ {
+ "begin": "(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*'",
+ "end": "'",
+ "name": "string.quoted.single.heredoc.single.perl",
+ "patterns": [
+ {
+ "include": "#qq_single_string_content"
+ }
+ ]
+ },
+ {
+ "begin": "(q|Q)(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*:?(x|exec|w|words|ww|quotewords|v|val|q|single|qq|double|s|scalar|a|array|h|hash|f|function|c|closure|b|blackslash|regexp|substr|trans|codes|p|path)*\\s*\"",
+ "end": "\"",
+ "name": "string.quoted.single.heredoc.double.perl",
+ "patterns": [
+ {
+ "include": "#qq_double_string_content"
+ }
+ ]
+ },
+ {
+ "match": "\\b\\$\\w+\\b",
+ "name": "variable.other.perl"
+ },
+ {
+ "match": "\\b(macro|sub|submethod|method|multi|proto|only|rule|token|regex|category)\\b",
+ "name": "storage.type.declare.routine.perl"
+ },
+ {
+ "match": "\\b(self)\\b",
+ "name": "variable.language.perl"
+ },
+ {
+ "match": "\\b(use|require)\\b",
+ "name": "keyword.other.include.perl"
+ },
+ {
+ "match": "\\b(if|else|elsif|unless)\\b",
+ "name": "keyword.control.conditional.perl"
+ },
+ {
+ "match": "\\b(let|my|our|state|temp|has|constant)\\b",
+ "name": "storage.type.variable.perl"
+ },
+ {
+ "match": "\\b(for|loop|repeat|while|until|gather|given)\\b",
+ "name": "keyword.control.repeat.perl"
+ },
+ {
+ "match": "\\b(take|do|when|next|last|redo|return|contend|maybe|defer|default|exit|make|continue|break|goto|leave|async|lift)\\b",
+ "name": "keyword.control.flowcontrol.perl"
+ },
+ {
+ "match": "\\b(is|as|but|trusts|of|returns|handles|where|augment|supersede)\\b",
+ "name": "storage.modifier.type.constraints.perl"
+ },
+ {
+ "match": "\\b(BEGIN|CHECK|INIT|START|FIRST|ENTER|LEAVE|KEEP|UNDO|NEXT|LAST|PRE|POST|END|CATCH|CONTROL|TEMP)\\b",
+ "name": "meta.function.perl"
+ },
+ {
+ "match": "\\b(die|fail|try|warn)\\b",
+ "name": "keyword.control.control-handlers.perl"
+ },
+ {
+ "match": "\\b(prec|irs|ofs|ors|export|deep|binary|unary|reparsed|rw|parsed|cached|readonly|defequiv|will|ref|copy|inline|tighter|looser|equiv|assoc|required)\\b",
+ "name": "storage.modifier.perl"
+ },
+ {
+ "match": "\\b(NaN|Inf)\\b",
+ "name": "constant.numeric.perl"
+ },
+ {
+ "match": "\\b(oo|fatal)\\b",
+ "name": "keyword.other.pragma.perl"
+ },
+ {
+ "match": "\\b(Object|Any|Junction|Whatever|Capture|MatchSignature|Proxy|Matcher|Package|Module|ClassGrammar|Scalar|Array|Hash|KeyHash|KeySet|KeyBagPair|List|Seq|Range|Set|Bag|Mapping|Void|UndefFailure|Exception|Code|Block|Routine|Sub|MacroMethod|Submethod|Regex|Str|str|Blob|Char|ByteCodepoint|Grapheme|StrPos|StrLen|Version|NumComplex|num|complex|Bit|bit|bool|True|FalseIncreasing|Decreasing|Ordered|Callable|AnyCharPositional|Associative|Ordering|KeyExtractorComparator|OrderingPair|IO|KitchenSink|RoleInt|int|int1|int2|int4|int8|int16|int32|int64Rat|rat|rat1|rat2|rat4|rat8|rat16|rat32|rat64Buf|buf|buf1|buf2|buf4|buf8|buf16|buf32|buf64UInt|uint|uint1|uint2|uint4|uint8|uint16|uint32uint64|Abstraction|utf8|utf16|utf32)\\b",
+ "name": "support.type.perl6"
+ },
+ {
+ "match": "\\b(div|xx|x|mod|also|leg|cmp|before|after|eq|ne|le|lt|not|gt|ge|eqv|ff|fff|and|andthen|or|xor|orelse|extra|lcm|gcd)\\b",
+ "name": "keyword.operator.perl"
+ },
+ {
+ "match": "(\\$|@|%|&)(\\*|:|!|\\^|~|=|\\?|(<(?=.+>)))?([a-zA-Z_\\x{C0}-\\x{FF}\\$])([a-zA-Z0-9_\\x{C0}-\\x{FF}\\$]|[\\-'][a-zA-Z0-9_\\x{C0}-\\x{FF}\\$])*",
+ "name": "variable.other.identifier.perl.6"
+ },
+ {
+ "match": "\\b(eager|hyper|substr|index|rindex|grep|map|sort|join|lines|hints|chmod|split|reduce|min|max|reverse|truncate|zip|cat|roundrobin|classify|first|sum|keys|values|pairs|defined|delete|exists|elems|end|kv|any|all|one|wrap|shape|key|value|name|pop|push|shift|splice|unshift|floor|ceiling|abs|exp|log|log10|rand|sign|sqrt|sin|cos|tan|round|strand|roots|cis|unpolar|polar|atan2|pick|chop|p5chop|chomp|p5chomp|lc|lcfirst|uc|ucfirst|capitalize|normalize|pack|unpack|quotemeta|comb|samecase|sameaccent|chars|nfd|nfc|nfkd|nfkc|printf|sprintf|caller|evalfile|run|runinstead|nothing|want|bless|chr|ord|gmtime|time|eof|localtime|gethost|getpw|chroot|getlogin|getpeername|kill|fork|wait|perl|graphs|codes|bytes|clone|print|open|read|write|readline|say|seek|close|opendir|readdir|slurp|spurt|shell|run|pos|fmt|vec|link|unlink|symlink|uniq|pair|asin|atan|sec|cosec|cotan|asec|acosec|acotan|sinh|cosh|tanh|asinh|done|acos|acosh|atanh|sech|cosech|cotanh|sech|acosech|acotanh|asech|ok|nok|plan_ok|dies_ok|lives_ok|skip|todo|pass|flunk|force_todo|use_ok|isa_ok|diag|is_deeply|isnt|like|skip_rest|unlike|cmp_ok|eval_dies_ok|nok_error|eval_lives_ok|approx|is_approx|throws_ok|version_lt|plan|EVAL|succ|pred|times|nonce|once|signature|new|connect|operator|undef|undefine|sleep|from|to|infix|postfix|prefix|circumfix|postcircumfix|minmax|lazy|count|unwrap|getc|pi|e|context|void|quasi|body|each|contains|rewinddir|subst|can|isa|flush|arity|assuming|rewind|callwith|callsame|nextwith|nextsame|attr|eval_elsewhere|none|srand|trim|trim_start|trim_end|lastcall|WHAT|WHERE|HOW|WHICH|VAR|WHO|WHENCE|ACCEPTS|REJECTS|not|true|iterator|by|re|im|invert|flip|gist|flat|tree|is-prime|throws_like|trans)\\b",
+ "name": "support.function.perl"
+ }
+ ],
+ "repository": {
+ "qq_brace_string_content": {
+ "begin": "{",
+ "end": "}",
+ "patterns": [
+ {
+ "include": "#qq_brace_string_content"
+ }
+ ]
+ },
+ "qq_bracket_string_content": {
+ "begin": "\\[",
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#qq_bracket_string_content"
+ }
+ ]
+ },
+ "qq_double_string_content": {
+ "begin": "\"",
+ "end": "\"",
+ "patterns": [
+ {
+ "include": "#qq_double_string_content"
+ }
+ ]
+ },
+ "qq_paren_string_content": {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#qq_paren_string_content"
+ }
+ ]
+ },
+ "qq_single_string_content": {
+ "begin": "'",
+ "end": "'",
+ "patterns": [
+ {
+ "include": "#qq_single_string_content"
+ }
+ ]
+ },
+ "qq_slash_string_content": {
+ "begin": "\\\\/",
+ "end": "\\\\/",
+ "patterns": [
+ {
+ "include": "#qq_slash_string_content"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/razor.tmLanguage.json b/node_modules/shiki/languages/razor.tmLanguage.json
new file mode 100644
index 0000000..01f0350
--- /dev/null
+++ b/node_modules/shiki/languages/razor.tmLanguage.json
@@ -0,0 +1,1809 @@
+{
+ "name": "razor",
+ "scopeName": "text.aspnetcorerazor",
+ "fileTypes": ["razor", "cshtml"],
+ "patterns": [
+ {
+ "include": "#razor-control-structures"
+ },
+ {
+ "include": "text.html.basic"
+ }
+ ],
+ "repository": {
+ "razor-control-structures": {
+ "patterns": [
+ {
+ "include": "#razor-comment"
+ },
+ {
+ "include": "#razor-codeblock"
+ },
+ {
+ "include": "#explicit-razor-expression"
+ },
+ {
+ "include": "#escaped-transition"
+ },
+ {
+ "include": "#directives"
+ },
+ {
+ "include": "#transitioned-csharp-control-structures"
+ },
+ {
+ "include": "#implicit-expression"
+ }
+ ]
+ },
+ "optionally-transitioned-razor-control-structures": {
+ "patterns": [
+ {
+ "include": "#razor-comment"
+ },
+ {
+ "include": "#razor-codeblock"
+ },
+ {
+ "include": "#explicit-razor-expression"
+ },
+ {
+ "include": "#escaped-transition"
+ },
+ {
+ "include": "#directives"
+ },
+ {
+ "include": "#optionally-transitioned-csharp-control-structures"
+ },
+ {
+ "include": "#implicit-expression"
+ }
+ ]
+ },
+ "escaped-transition": {
+ "name": "constant.character.escape.razor.transition",
+ "match": "@@"
+ },
+ "transition": {
+ "match": "@",
+ "name": "keyword.control.cshtml.transition"
+ },
+ "razor-codeblock": {
+ "name": "meta.structure.razor.codeblock",
+ "begin": "(@)(\\{)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.razor.directive.codeblock.open"
+ }
+ },
+ "contentName": "source.cs",
+ "patterns": [
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.razor.directive.codeblock.close"
+ }
+ }
+ },
+ "razor-codeblock-body": {
+ "patterns": [
+ {
+ "include": "#text-tag"
+ },
+ {
+ "include": "#wellformed-html"
+ },
+ {
+ "include": "#razor-single-line-markup"
+ },
+ {
+ "include": "#optionally-transitioned-razor-control-structures"
+ },
+ {
+ "include": "source.cs"
+ }
+ ]
+ },
+ "razor-single-line-markup": {
+ "match": "(\\@\\:)([^$]*)$",
+ "captures": {
+ "1": {
+ "name": "keyword.control.razor.singleLineMarkup"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#razor-control-structures"
+ },
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ }
+ }
+ },
+ "text-tag": {
+ "begin": "(<text\\s*>)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.cshtml.transition.textTag.open"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#wellformed-html"
+ },
+ {
+ "include": "$self"
+ }
+ ],
+ "end": "(</text>)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.cshtml.transition.textTag.close"
+ }
+ }
+ },
+ "razor-comment": {
+ "name": "meta.comment.razor",
+ "begin": "(@)(\\*)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.razor.comment.star"
+ }
+ },
+ "contentName": "comment.block.razor",
+ "end": "(\\*)(@)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.razor.comment.star"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ }
+ }
+ },
+ "wellformed-html": {
+ "patterns": [
+ {
+ "include": "#void-tag"
+ },
+ {
+ "include": "#non-void-tag"
+ }
+ ]
+ },
+ "void-tag": {
+ "name": "meta.tag.structure.$3.void.html",
+ "begin": "(?i)(<)(!)?(area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "constant.character.escape.razor.tagHelperOptOut"
+ },
+ "3": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "text.html.basic#attribute"
+ }
+ ],
+ "end": "/?>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ }
+ },
+ "non-void-tag": {
+ "begin": "(?=<(!)?([^/\\s>]+)(\\s|/?>))",
+ "end": "(</)(\\2)\\s*(>)|(/>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.html"
+ },
+ "4": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(<)(!)?([^/\\s>]+)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "constant.character.escape.razor.tagHelperOptOut"
+ },
+ "3": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": "(?=/?>)",
+ "patterns": [
+ {
+ "include": "#razor-control-structures"
+ },
+ {
+ "include": "text.html.basic#attribute"
+ }
+ ]
+ },
+ {
+ "begin": ">",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "end": "(?=</)",
+ "patterns": [
+ {
+ "include": "#wellformed-html"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "explicit-razor-expression": {
+ "name": "meta.expression.explicit.cshtml",
+ "begin": "(@)\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.cshtml"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.cs#expression"
+ }
+ ],
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.cshtml"
+ }
+ }
+ },
+ "implicit-expression": {
+ "name": "meta.expression.implicit.cshtml",
+ "contentName": "source.cs",
+ "begin": "(?<![[:alpha:][:alnum:]])(@)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#await-prefix"
+ },
+ {
+ "include": "#implicit-expression-body"
+ }
+ ],
+ "end": "(?=[\\s<>\\{\\}\\)\\]'\"])"
+ },
+ "implicit-expression-body": {
+ "patterns": [
+ {
+ "include": "#implicit-expression-invocation-start"
+ },
+ {
+ "include": "#implicit-expression-accessor-start"
+ }
+ ],
+ "end": "(?=[\\s<>\\{\\}\\)\\]'\"])"
+ },
+ "implicit-expression-invocation-start": {
+ "begin": "([_[:alpha:]][_[:alnum:]]*)(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#implicit-expression-continuation"
+ }
+ ],
+ "end": "(?=[\\s<>\\{\\}\\)\\]'\"])"
+ },
+ "implicit-expression-accessor-start": {
+ "begin": "([_[:alpha:]][_[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.object.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#implicit-expression-continuation"
+ }
+ ],
+ "end": "(?=[\\s<>\\{\\}\\)\\]'\"])"
+ },
+ "implicit-expression-continuation": {
+ "patterns": [
+ {
+ "include": "#balanced-parenthesis-csharp"
+ },
+ {
+ "include": "#balanced-brackets-csharp"
+ },
+ {
+ "include": "#implicit-expression-invocation"
+ },
+ {
+ "include": "#implicit-expression-accessor"
+ },
+ {
+ "include": "#implicit-expression-extension"
+ }
+ ],
+ "end": "(?=[\\s<>\\{\\}\\)\\]'\"])"
+ },
+ "implicit-expression-accessor": {
+ "match": "(?<=\\.)[_[:alpha:]][_[:alnum:]]*",
+ "name": "variable.other.object.property.cs"
+ },
+ "implicit-expression-invocation": {
+ "match": "(?<=\\.)[_[:alpha:]][_[:alnum:]]*(?=\\()",
+ "name": "entity.name.function.cs"
+ },
+ "implicit-expression-operator": {
+ "patterns": [
+ {
+ "include": "#implicit-expression-dot-operator"
+ },
+ {
+ "include": "#implicit-expression-null-conditional-operator"
+ },
+ {
+ "include": "#implicit-expression-null-forgiveness-operator"
+ }
+ ]
+ },
+ "implicit-expression-dot-operator": {
+ "match": "(\\.)(?=[_[:alpha:]][_[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.cs"
+ }
+ }
+ },
+ "implicit-expression-null-conditional-operator": {
+ "match": "(\\?)(?=[.\\[])",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.null-conditional.cs"
+ }
+ }
+ },
+ "implicit-expression-null-forgiveness-operator": {
+ "match": "(\\!)(?=(?:\\.[_[:alpha:]][_[:alnum:]]*)|\\?|[\\[\\(])",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.logical.cs"
+ }
+ }
+ },
+ "balanced-parenthesis-csharp": {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "name": "razor.test.balanced.parenthesis",
+ "patterns": [
+ {
+ "include": "source.cs"
+ }
+ ],
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ }
+ },
+ "balanced-brackets-csharp": {
+ "begin": "(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.squarebracket.open.cs"
+ }
+ },
+ "name": "razor.test.balanced.brackets",
+ "patterns": [
+ {
+ "include": "source.cs"
+ }
+ ],
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.squarebracket.close.cs"
+ }
+ }
+ },
+ "directives": {
+ "patterns": [
+ {
+ "include": "#code-directive"
+ },
+ {
+ "include": "#functions-directive"
+ },
+ {
+ "include": "#page-directive"
+ },
+ {
+ "include": "#addTagHelper-directive"
+ },
+ {
+ "include": "#removeTagHelper-directive"
+ },
+ {
+ "include": "#tagHelperPrefix-directive"
+ },
+ {
+ "include": "#model-directive"
+ },
+ {
+ "include": "#inherits-directive"
+ },
+ {
+ "include": "#implements-directive"
+ },
+ {
+ "include": "#namespace-directive"
+ },
+ {
+ "include": "#inject-directive"
+ },
+ {
+ "include": "#attribute-directive"
+ },
+ {
+ "include": "#section-directive"
+ },
+ {
+ "include": "#layout-directive"
+ },
+ {
+ "include": "#using-directive"
+ }
+ ]
+ },
+ "code-directive": {
+ "begin": "(@)(code)((?=\\{)|\\s+)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.razor.directive.code"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#directive-codeblock"
+ }
+ ],
+ "end": "(?<=})|\\s"
+ },
+ "functions-directive": {
+ "begin": "(@)(functions)((?=\\{)|\\s+)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.razor.directive.functions"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#directive-codeblock"
+ }
+ ],
+ "end": "(?<=})|\\s"
+ },
+ "directive-codeblock": {
+ "begin": "(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.razor.directive.codeblock.open"
+ }
+ },
+ "name": "meta.structure.razor.directive.codeblock",
+ "contentName": "source.cs",
+ "patterns": [
+ {
+ "include": "source.cs#class-or-struct-members"
+ }
+ ],
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.razor.directive.codeblock.close"
+ }
+ }
+ },
+ "page-directive": {
+ "name": "meta.directive",
+ "match": "(@)(page)\\s+([^$]+)?",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.razor.directive.page"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.cs#string-literal"
+ }
+ ]
+ }
+ }
+ },
+ "addTagHelper-directive": {
+ "name": "meta.directive",
+ "match": "(@)(addTagHelper)\\s+([^$]+)?",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.razor.directive.addTagHelper"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#tagHelper-directive-argument"
+ }
+ ]
+ }
+ }
+ },
+ "removeTagHelper-directive": {
+ "name": "meta.directive",
+ "match": "(@)(removeTagHelper)\\s+([^$]+)?",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.razor.directive.removeTagHelper"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#tagHelper-directive-argument"
+ }
+ ]
+ }
+ }
+ },
+ "tagHelperPrefix-directive": {
+ "name": "meta.directive",
+ "match": "(@)(tagHelperPrefix)\\s+([^$]+)?",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.razor.directive.tagHelperPrefix"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#tagHelper-directive-argument"
+ }
+ ]
+ }
+ }
+ },
+ "tagHelper-directive-argument": {
+ "patterns": [
+ {
+ "include": "source.cs#string-literal"
+ },
+ {
+ "include": "#unquoted-string-argument"
+ }
+ ]
+ },
+ "unquoted-string-argument": {
+ "name": "string.quoted.double.cs",
+ "match": "[^$]+"
+ },
+ "model-directive": {
+ "name": "meta.directive",
+ "match": "(@)(model)\\s+([^$]+)?",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.razor.directive.model"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.cs#type"
+ }
+ ]
+ }
+ }
+ },
+ "inherits-directive": {
+ "name": "meta.directive",
+ "match": "(@)(inherits)\\s+([^$]+)?",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.razor.directive.inherits"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.cs#type"
+ }
+ ]
+ }
+ }
+ },
+ "implements-directive": {
+ "name": "meta.directive",
+ "match": "(@)(implements)\\s+([^$]+)?",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.razor.directive.implements"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.cs#type"
+ }
+ ]
+ }
+ }
+ },
+ "layout-directive": {
+ "name": "meta.directive",
+ "match": "(@)(layout)\\s+([^$]+)?",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.razor.directive.layout"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.cs#type"
+ }
+ ]
+ }
+ }
+ },
+ "namespace-directive": {
+ "name": "meta.directive",
+ "match": "(@)(namespace)\\s+([^\\s]+)?",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.razor.directive.namespace"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#namespace-directive-argument"
+ }
+ ]
+ }
+ }
+ },
+ "namespace-directive-argument": {
+ "match": "([_[:alpha:]][_[:alnum:]]*)(\\.)?",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.namespace.cs"
+ },
+ "2": {
+ "name": "punctuation.accessor.cs"
+ }
+ }
+ },
+ "inject-directive": {
+ "name": "meta.directive",
+ "match": "(@)(inject)\\s*([\\S\\s]+?)?\\s*([_[:alpha:]][_[:alnum:]]*)?\\s*(?=$)",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.razor.directive.inject"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.cs#type"
+ }
+ ]
+ },
+ "4": {
+ "name": "entity.name.variable.property.cs"
+ }
+ }
+ },
+ "attribute-directive": {
+ "name": "meta.directive",
+ "begin": "(@)(attribute)\\b\\s+",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.razor.directive.attribute"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.cs#attribute-section"
+ }
+ ],
+ "end": "(?<=\\])|$"
+ },
+ "section-directive": {
+ "name": "meta.directive.block",
+ "begin": "(@)(section)\\b\\s+([_[:alpha:]][_[:alnum:]]*)?",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.razor.directive.section"
+ },
+ "3": {
+ "name": "variable.other.razor.directive.sectionName"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#directive-markupblock"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "directive-markupblock": {
+ "name": "meta.structure.razor.directive.markblock",
+ "begin": "(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.razor.directive.codeblock.open"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ],
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.razor.directive.codeblock.close"
+ }
+ }
+ },
+ "using-directive": {
+ "name": "meta.directive",
+ "match": "(@)(using)\\b\\s+(?!\\(|\\s)(.+?)?(;)?$",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.other.using.cs"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#using-static-directive"
+ },
+ {
+ "include": "#using-alias-directive"
+ },
+ {
+ "include": "#using-standard-directive"
+ }
+ ]
+ },
+ "4": {
+ "name": "keyword.control.razor.optionalSemicolon"
+ }
+ }
+ },
+ "using-static-directive": {
+ "match": "(static)\\b\\s+(.+)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.static.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cs#type"
+ }
+ ]
+ }
+ }
+ },
+ "using-alias-directive": {
+ "match": "([_[:alpha:]][_[:alnum:]]*)\\b\\s*(=)\\s*(.+)\\s*",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.alias.cs"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.cs"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.cs#type"
+ }
+ ]
+ }
+ }
+ },
+ "using-standard-directive": {
+ "match": "([_[:alpha:]][_[:alnum:]]*)\\s*",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.namespace.cs"
+ }
+ }
+ },
+ "optionally-transitioned-csharp-control-structures": {
+ "patterns": [
+ {
+ "include": "#using-statement-with-optional-transition"
+ },
+ {
+ "include": "#if-statement-with-optional-transition"
+ },
+ {
+ "include": "#else-part"
+ },
+ {
+ "include": "#foreach-statement-with-optional-transition"
+ },
+ {
+ "include": "#for-statement-with-optional-transition"
+ },
+ {
+ "include": "#while-statement"
+ },
+ {
+ "include": "#switch-statement-with-optional-transition"
+ },
+ {
+ "include": "#lock-statement-with-optional-transition"
+ },
+ {
+ "include": "#do-statement-with-optional-transition"
+ },
+ {
+ "include": "#try-statement-with-optional-transition"
+ }
+ ]
+ },
+ "transitioned-csharp-control-structures": {
+ "patterns": [
+ {
+ "include": "#using-statement"
+ },
+ {
+ "include": "#if-statement"
+ },
+ {
+ "include": "#else-part"
+ },
+ {
+ "include": "#foreach-statement"
+ },
+ {
+ "include": "#for-statement"
+ },
+ {
+ "include": "#while-statement"
+ },
+ {
+ "include": "#switch-statement"
+ },
+ {
+ "include": "#lock-statement"
+ },
+ {
+ "include": "#do-statement"
+ },
+ {
+ "include": "#try-statement"
+ }
+ ]
+ },
+ "using-statement": {
+ "name": "meta.statement.using.razor",
+ "begin": "(?:(@))(using)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.other.using.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-condition"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "using-statement-with-optional-transition": {
+ "name": "meta.statement.using.razor",
+ "begin": "(?:^\\s*|(@))(using)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.other.using.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-condition"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "if-statement": {
+ "name": "meta.statement.if.razor",
+ "begin": "(?:(@))(if)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.conditional.if.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-condition"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "if-statement-with-optional-transition": {
+ "name": "meta.statement.if.razor",
+ "begin": "(?:^\\s*|(@))(if)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.conditional.if.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-condition"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "else-part": {
+ "name": "meta.statement.else.razor",
+ "begin": "(?:^|(?<=}))\\s*(else)\\b\\s*?(?: (if))?\\s*?(?=[\\n\\(\\{])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.conditional.else.cs"
+ },
+ "2": {
+ "name": "keyword.control.conditional.if.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-condition"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "for-statement": {
+ "name": "meta.statement.for.razor",
+ "begin": "(?:(@))(for)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.loop.for.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-condition"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "for-statement-with-optional-transition": {
+ "name": "meta.statement.for.razor",
+ "begin": "(?:^\\s*|(@))(for)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.loop.for.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-condition"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "foreach-statement": {
+ "name": "meta.statement.foreach.razor",
+ "begin": "(?:(@)(await\\s+)?)(foreach)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#await-prefix"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.control.loop.foreach.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#foreach-condition"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "foreach-statement-with-optional-transition": {
+ "name": "meta.statement.foreach.razor",
+ "begin": "(?:^\\s*|(@)(await\\s+)?)(foreach)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#await-prefix"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.control.loop.foreach.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#foreach-condition"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "foreach-condition": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?x)\n(?:\n (\\bvar\\b)|\n (?<type-name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name-and-type-args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type-args>\\s*<(?:[^<>]|\\g<type-args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name-and-type-args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n )\n)\\s+\n(\\g<identifier>)\\s+\n\\b(in)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.var.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cs#type"
+ }
+ ]
+ },
+ "7": {
+ "name": "entity.name.variable.local.cs"
+ },
+ "8": {
+ "name": "keyword.control.loop.in.cs"
+ }
+ }
+ },
+ {
+ "match": "(?x) # match foreach (var (x, y) in ...)\n(?:\\b(var)\\b\\s*)?\n(?<tuple>\\((?:[^\\(\\)]|\\g<tuple>)+\\))\\s+\n\\b(in)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.var.cs"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.cs#tuple-declaration-deconstruction-element-list"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.control.loop.in.cs"
+ }
+ }
+ },
+ {
+ "include": "source.cs#expression"
+ }
+ ]
+ },
+ "do-statement": {
+ "name": "meta.statement.do.razor",
+ "begin": "(?:(@))(do)\\b\\s",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.loop.do.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-condition"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "do-statement-with-optional-transition": {
+ "name": "meta.statement.do.razor",
+ "begin": "(?:^\\s*|(@))(do)\\b\\s",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.loop.do.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-condition"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "while-statement": {
+ "name": "meta.statement.while.razor",
+ "begin": "(?:(@)|^\\s*|(?<=})\\s*)(while)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.loop.while.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-condition"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})|(;)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.cs"
+ }
+ }
+ },
+ "switch-statement": {
+ "name": "meta.statement.switch.razor",
+ "begin": "(?:(@))(switch)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.switch.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-condition"
+ },
+ {
+ "include": "#switch-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "switch-statement-with-optional-transition": {
+ "name": "meta.statement.switch.razor",
+ "begin": "(?:^\\s*|(@))(switch)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.switch.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-condition"
+ },
+ {
+ "include": "#switch-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "switch-code-block": {
+ "name": "meta.structure.razor.csharp.codeblock.switch",
+ "begin": "(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.curlybrace.open.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.cs#switch-label"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.curlybrace.close.cs"
+ }
+ }
+ },
+ "lock-statement": {
+ "name": "meta.statement.lock.razor",
+ "begin": "(?:(@))(lock)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.other.lock.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-condition"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "lock-statement-with-optional-transition": {
+ "name": "meta.statement.lock.razor",
+ "begin": "(?:^\\s*|(@))(lock)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.other.lock.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-condition"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "try-statement": {
+ "patterns": [
+ {
+ "include": "#try-block"
+ },
+ {
+ "include": "#catch-clause"
+ },
+ {
+ "include": "#finally-clause"
+ }
+ ]
+ },
+ "try-statement-with-optional-transition": {
+ "patterns": [
+ {
+ "include": "#try-block-with-optional-transition"
+ },
+ {
+ "include": "#catch-clause"
+ },
+ {
+ "include": "#finally-clause"
+ }
+ ]
+ },
+ "try-block": {
+ "name": "meta.statement.try.razor",
+ "begin": "(?:(@))(try)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.try.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-condition"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "try-block-with-optional-transition": {
+ "name": "meta.statement.try.razor",
+ "begin": "(?:^\\s*|(@))(try)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#transition"
+ }
+ ]
+ },
+ "2": {
+ "name": "keyword.control.try.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-condition"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "catch-clause": {
+ "name": "meta.statement.catch.razor",
+ "begin": "(?:^|(?<=}))\\s*(catch)\\b\\s*?(?=[\\n\\(\\{])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.try.catch.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#catch-condition"
+ },
+ {
+ "include": "source.cs#when-clause"
+ },
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "catch-condition": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?x)\n(?<type-name>\n (?:\n (?:\n (?:(?<identifier>@?[_[:alpha:]][_[:alnum:]]*)\\s*\\:\\:\\s*)? # alias-qualification\n (?<name-and-type-args> # identifier + type arguments (if any)\n \\g<identifier>\\s*\n (?<type-args>\\s*<(?:[^<>]|\\g<type-args>)+>\\s*)?\n )\n (?:\\s*\\.\\s*\\g<name-and-type-args>)* | # Are there any more names being dotted into?\n (?<tuple>\\s*\\((?:[^\\(\\)]|\\g<tuple>)+\\))\n )\n (?:\\s*\\?\\s*)? # nullable suffix?\n (?:\\s*\\[(?:\\s*,\\s*)*\\]\\s*)* # array suffix?\n )\n)\\s*\n(?:(\\g<identifier>)\\b)?",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "source.cs#type"
+ }
+ ]
+ },
+ "6": {
+ "name": "entity.name.variable.local.cs"
+ }
+ }
+ }
+ ]
+ },
+ "finally-clause": {
+ "name": "meta.statement.finally.razor",
+ "begin": "(?:^|(?<=}))\\s*(finally)\\b\\s*?(?=[\\n\\{])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.try.finally.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#csharp-code-block"
+ },
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(?<=})"
+ },
+ "await-prefix": {
+ "name": "keyword.other.await.cs",
+ "match": "(await)\\s+"
+ },
+ "csharp-code-block": {
+ "name": "meta.structure.razor.csharp.codeblock",
+ "begin": "(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.curlybrace.open.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#razor-codeblock-body"
+ }
+ ],
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.curlybrace.close.cs"
+ }
+ }
+ },
+ "csharp-condition": {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.parenthesis.open.cs"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.cs#local-variable-declaration"
+ },
+ {
+ "include": "source.cs#expression"
+ },
+ {
+ "include": "source.cs#punctuation-comma"
+ },
+ {
+ "include": "source.cs#punctuation-semicolon"
+ }
+ ],
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.parenthesis.close.cs"
+ }
+ }
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/reg.tmLanguage.json b/node_modules/shiki/languages/reg.tmLanguage.json
new file mode 100644
index 0000000..a04132f
--- /dev/null
+++ b/node_modules/shiki/languages/reg.tmLanguage.json
@@ -0,0 +1,133 @@
+{
+ "fileTypes": ["reg", "REG"],
+ "name": "reg",
+ "patterns": [
+ {
+ "match": "Windows Registry Editor Version 5\\.00|REGEDIT4",
+ "name": "keyword.control.import.reg"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.reg"
+ }
+ },
+ "match": "(;).*$",
+ "name": "comment.line.semicolon.reg"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.section.reg"
+ },
+ "2": {
+ "name": "entity.section.reg"
+ },
+ "3": {
+ "name": "punctuation.definition.section.reg"
+ }
+ },
+ "match": "^\\s*(\\[(?!-))(.*?)(\\])",
+ "name": "entity.name.function.section.add.reg"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.section.reg"
+ },
+ "2": {
+ "name": "entity.section.reg"
+ },
+ "3": {
+ "name": "punctuation.definition.section.reg"
+ }
+ },
+ "match": "^\\s*(\\[-)(.*?)(\\])",
+ "name": "entity.name.function.section.delete.reg"
+ },
+ {
+ "captures": {
+ "2": {
+ "name": "punctuation.definition.quote.reg"
+ },
+ "3": {
+ "name": "support.function.regname.ini"
+ },
+ "4": {
+ "name": "punctuation.definition.quote.reg"
+ },
+ "5": {
+ "name": "punctuation.definition.equals.reg"
+ },
+ "7": {
+ "name": "keyword.operator.arithmetic.minus.reg"
+ },
+ "9": {
+ "name": "punctuation.definition.quote.reg"
+ },
+ "10": {
+ "name": "string.name.regdata.reg"
+ },
+ "11": {
+ "name": "punctuation.definition.quote.reg"
+ },
+ "13": {
+ "name": "support.type.dword.reg"
+ },
+ "14": {
+ "name": "keyword.operator.arithmetic.colon.reg"
+ },
+ "15": {
+ "name": "constant.numeric.dword.reg"
+ },
+ "17": {
+ "name": "support.type.dword.reg"
+ },
+ "18": {
+ "name": "keyword.operator.arithmetic.parenthesis.reg"
+ },
+ "19": {
+ "name": "keyword.operator.arithmetic.parenthesis.reg"
+ },
+ "20": {
+ "name": "constant.numeric.hex.size.reg"
+ },
+ "21": {
+ "name": "keyword.operator.arithmetic.parenthesis.reg"
+ },
+ "22": {
+ "name": "keyword.operator.arithmetic.colon.reg"
+ },
+ "23": {
+ "name": "constant.numeric.hex.reg"
+ },
+ "24": {
+ "name": "keyword.operator.arithmetic.linecontinuation.reg"
+ },
+ "25": {
+ "name": "comment.declarationline.semicolon.reg"
+ }
+ },
+ "match": "^(\\s*([\"']?)(.+?)([\"']?)\\s*(=))?\\s*((-)|(([\"'])(.*?)([\"']))|(((?i:dword))(\\:)\\s*([\\dabcdefABCDEF]{1,8}))|(((?i:hex))((\\()([\\d]*)(\\)))?(\\:)(.*?)(\\\\?)))\\s*(;.*)?$",
+ "name": "meta.declaration.reg"
+ },
+ {
+ "match": "[0-9]+",
+ "name": "constant.numeric.reg"
+ },
+ {
+ "match": "[a-fA-F]+",
+ "name": "constant.numeric.hex.reg"
+ },
+ {
+ "match": ",+",
+ "name": "constant.numeric.hex.comma.reg"
+ },
+ {
+ "match": "\\\\",
+ "name": "keyword.operator.arithmetic.linecontinuation.reg"
+ }
+ ],
+ "scopeName": "source.reg",
+ "uuid": "B7773F5B-C43A-4BB9-843A-4AC119250EBD"
+}
diff --git a/node_modules/shiki/languages/rel.tmLanguage.json b/node_modules/shiki/languages/rel.tmLanguage.json
new file mode 100644
index 0000000..c8e72f5
--- /dev/null
+++ b/node_modules/shiki/languages/rel.tmLanguage.json
@@ -0,0 +1,200 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "name": "rel",
+ "patterns": [
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#deprecated-temporary"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#symbols"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#otherkeywords"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#constants"
+ }
+ ],
+ "repository": {
+ "strings": {
+ "name": "string.quoted.double.rel",
+ "begin": "\"",
+ "end": "\"",
+ "patterns": [
+ {
+ "name": "constant.character.escape.rel",
+ "match": "\\\\."
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "name": "comment.block.documentation.rel",
+ "begin": "/\\*\\*(?!/)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.rel"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.rel"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#docblock"
+ }
+ ]
+ },
+ {
+ "name": "comment.block.rel",
+ "begin": "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.rel"
+ },
+ "2": {
+ "name": "storage.type.internaldeclaration.rel"
+ },
+ "3": {
+ "name": "punctuation.decorator.internaldeclaration.rel"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.rel"
+ }
+ }
+ },
+ {
+ "name": "comment.block.documentation.rel",
+ "begin": "doc\"\"\"",
+ "end": "\"\"\""
+ },
+ {
+ "begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.rel"
+ },
+ "2": {
+ "name": "comment.line.double-slash.rel"
+ },
+ "3": {
+ "name": "punctuation.definition.comment.rel"
+ },
+ "4": {
+ "name": "storage.type.internaldeclaration.rel"
+ },
+ "5": {
+ "name": "punctuation.decorator.internaldeclaration.rel"
+ }
+ },
+ "end": "(?=$)",
+ "contentName": "comment.line.double-slash.rel"
+ }
+ ]
+ },
+ "single-line-comment-consuming-line-ending": {
+ "begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.rel"
+ },
+ "2": {
+ "name": "comment.line.double-slash.rel"
+ },
+ "3": {
+ "name": "punctuation.definition.comment.rel"
+ },
+ "4": {
+ "name": "storage.type.internaldeclaration.rel"
+ },
+ "5": {
+ "name": "punctuation.decorator.internaldeclaration.rel"
+ }
+ },
+ "end": "(?=^)",
+ "contentName": "comment.line.double-slash.rel"
+ },
+ "deprecated-temporary": {
+ "patterns": [
+ {
+ "name": "keyword.other.rel",
+ "match": "@inspect"
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "name": "keyword.other.rel",
+ "match": "(\\b(if|then|else|and|or|not|eq|neq|lt|lt_eq|gt|gt_eq)\\b)|(\\+|\\-|\\*|\\/|÷|\\^|\\%|\\=|\\!\\=|≠|\\<|\\<\\=|≤|\\>|\\>\\=|≥|\\&)|\\s+(end)"
+ }
+ ]
+ },
+ "symbols": {
+ "patterns": [
+ {
+ "name": "variable.parameter.rel",
+ "match": "(:[\\[_$[:alpha:]](\\]|[_$[:alnum:]]*))"
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "name": "keyword.control.rel",
+ "match": "(\\b(def|entity|bound|include|ic|forall|exists|∀|∃|return|module|^end)\\b)|(((\\<)?\\|(\\>)?)|∀|∃)"
+ }
+ ]
+ },
+ "otherkeywords": {
+ "patterns": [
+ {
+ "name": "keyword.other.rel",
+ "match": "\\s*(@inline)\\s*|\\s*(@auto_number)\\s*|\\s*(function)\\s|(\\b(implies|select|from|∈|where|for|in)\\b)|(((\\<)?\\|(\\>)?)|∈)"
+ }
+ ]
+ },
+ "types": {
+ "patterns": [
+ {
+ "name": "entity.name.type.rel",
+ "match": "(\\b(Symbol|Char|Bool|Rational|FixedDecimal|Float16|Float32|Float64|Int8|Int16|Int32|Int64|Int128|UInt8|UInt16|UInt32|UInt64|UInt128|Date|DateTime|Day|Week|Month|Year|Nanosecond|Microsecond|Millisecond|Second|Minute|Hour|FilePos|HashValue|AutoNumberValue)\\b)"
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "name": "constant.language.rel",
+ "match": "(\\b(true|false)\\b)"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.rel"
+}
diff --git a/node_modules/shiki/languages/riscv.tmLanguage.json b/node_modules/shiki/languages/riscv.tmLanguage.json
new file mode 100644
index 0000000..ba928b5
--- /dev/null
+++ b/node_modules/shiki/languages/riscv.tmLanguage.json
@@ -0,0 +1,294 @@
+{
+ "fileTypes": ["S", "s", "riscv", "asm"],
+ "keyEquivalent": "^~M",
+ "name": "riscv",
+ "patterns": [
+ {
+ "comment": "ok actually this are instructions, but one also could call them funtions…",
+ "match": "\\b(la|lb|lh|lw|ld|nop|li|mv|not|neg|negw|sext\\.w|seqz|snez|sltz|sgtz|beqz|bnez|blez|bgez|bltz|bgtz|bgt|ble|bgtu|bleu|j|jal|jr|ret|call|tail|fence|csr[r|w|s|c]|csr[w|s|c]i)\\b",
+ "name": "support.function.pseudo.riscv"
+ },
+ {
+ "match": "\\b(add|addw|auipc|lui|jalr|beq|bne|blt|bge|bltu|bgeu|lb|lh|lw|ld|lbu|lhu|sb|sh|sw|sd|addi|addiw|slti|sltiu|xori|ori|andi|slli|slliw|srli|srliw|srai|sraiw|sub|subw|sll|sllw|slt|sltu|xor|srl|srlw|sra|sraw|or|and|fence|fence\\.i|csrrw|csrrs|csrrc|csrrwi|csrrsi|csrrci)\\b",
+ "name": "support.function.riscv"
+ },
+ {
+ "comment": "priviledged instructions",
+ "match": "\\b(ecall|ebreak|sfence\\.vma|mret|sret|uret|wfi)\\b",
+ "name": "support.function.riscv.privileged"
+ },
+ {
+ "comment": "M extension (multiplication and division)",
+ "match": "\\b(mul|mulh|mulhsu|mulhu|div|divu|rem|remu|mulw|divw|divuw|remw|remuw)\\b",
+ "name": "support.function.riscv.m"
+ },
+ {
+ "comment": "C extension (compressed instructions)",
+ "match": "\\b(c\\.addi4spn|c\\.fld|c\\.lq|c\\.lw|c\\.flw|c\\.ld|c\\.fsd|c\\.sq|c\\.sw|c\\.fsw|c\\.sd|c\\.nop|c\\.addi|c\\.jal|c\\.addiw|c\\.li|c\\.addi16sp|c\\.lui|c\\.srli|c\\.srli64|c\\.srai|c\\.srai64|c\\.andi|c\\.sub|c\\.xor|c\\.or|c\\.and|c\\.subw|c\\.addw|c\\.j|c\\.beqz|c\\.bnez)\\b",
+ "name": "support.function.riscv.c"
+ },
+ {
+ "comment": "A extension (atomic instructions)",
+ "match": "\\b(lr\\.[w|d]|sc\\.[w|d]|amoswap\\.[w|d]|amoadd\\.[w|d]|amoxor\\.[w|d]|amoand\\.[w|d]|amoor\\.[w|d]|amomin\\.[w|d]|amomax\\.[w|d]|amominu\\.[w|d]|amomaxu\\.[w|d])\\b",
+ "name": "support.function.riscv.a"
+ },
+ {
+ "comment": "F extension (single precision floating point)",
+ "match": "\\b(flw|fsw|fmadd\\.s|fmsub\\.s|fnmsub\\.s|fnmadd\\.s|fadd\\.s|fsub\\.s|fmul\\.s|fdiv\\.s|fsqrt\\.s|fsgnj\\.s|fsgnjn\\.s|fsgnjx\\.s|fmin\\.s|fmax\\.s|fcvt\\.w\\.s|fcvt\\.wu\\.s|fmv\\.x\\.w|feq\\.s|flt\\.s|fle\\.s|fclass\\.s|fcvt\\.s\\.w|fcvt\\.s\\.wu|fmv\\.w\\.x|fcvt\\.l\\.s|fcvt\\.lu\\.s|fcvt\\.s\\.l|fcvt\\.s\\.lu)\\b",
+ "name": "support.function.riscv.f"
+ },
+ {
+ "comment": "D extension (double precision floating point)",
+ "match": "\\b(fld|fsd|fmadd\\.d|fmsub\\.d|fnmsub\\.d|fnmadd\\.d|fadd\\.d|fsub\\.d|fmul\\.d|fdiv\\.d|fsqrt\\.d|fsgnj\\.d|fsgnjn\\.d|fsgnjx\\.d|fmin\\.d|fmax\\.d|fcvt\\.s\\.d|fcvt\\.d\\.s|feq\\.d|flt\\.d|fle\\.d|fclass\\.d|fcvt\\.w\\.d|fcvt\\.wu\\.d|fcvt\\.d\\.w|fcvt\\.d\\.wu|fcvt\\.l\\.d|fcvt\\.lu\\.d|fmv\\.x\\.d|fcvt\\.d\\.l|fcvt\\.d\\.lu|fmv\\.d\\.x)\\b",
+ "name": "support.function.riscv.d"
+ },
+ {
+ "match": "\\.(skip|ascii|asciiz|byte|[2|4|8]byte|data|double|float|half|kdata|ktext|space|text|word|dword|dtprelword|dtpreldword|set\\s*(noat|at)|[s|u]leb128|string|incbin|zero|rodata|comm|common)\\b",
+ "name": "storage.type.riscv"
+ },
+ {
+ "match": "\\.(balign|align|p2align|extern|globl|global|local|pushsection|section|bss|insn|option|type|equ|macro|endm|file|ident)\\b",
+ "name": "storage.modifier.riscv"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.name.function.label.riscv"
+ }
+ },
+ "match": "\\b([A-Za-z0-9_]+):",
+ "name": "meta.function.label.riscv"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.riscv"
+ }
+ },
+ "match": "\\b(x([0-9]|1[0-9]|2[0-9]|3[0-1]))\\b",
+ "name": "variable.other.register.usable.by-number.riscv"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.riscv"
+ }
+ },
+ "match": "\\b(zero|ra|sp|gp|tp|t[0-6]|a[0-7]|s[0-9]|fp|s1[0-1])\\b",
+ "name": "variable.other.register.usable.by-name.riscv"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.riscv"
+ }
+ },
+ "match": "\\b(([umsh]|vs)status|([umsh]|vs)ie|([ums]|vs)tvec|([ums]|vs)scratch|([ums]|vs)epc|([ums]|vs)cause|([umsh]|vs)tval|([umsh]|vs)ip|fflags|frm|fcsr|m?cycleh?|timeh?|m?instreth?|m?hpmcounter([3-9]|[12][0-9]|3[01])h?|[msh][ei]deleg|[msh]counteren|v?satp|hgeie|hgeip|[hm]tinst|hvip|hgatp|htimedeltah?|mvendorid|marchid|mimpid|mhartid|misa|mstatush|mtval2|pmpcfg[0-3]|pmpaddr([0-9]|1[0-5])|mcountinhibit|mhpmevent([3-9]|[12][0-9]|3[01])|tselect|tdata[1-3]|dcsr|dpc|dscratch[0-1])\\b",
+ "name": "variable.other.csr.names.riscv"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.riscv"
+ }
+ },
+ "match": "\\bf([0-9]|1[0-9]|2[0-9]|3[0-1])\\b",
+ "name": "variable.other.register.usable.floating-point.riscv"
+ },
+ {
+ "match": "\\b\\d+\\.\\d+\\b",
+ "name": "constant.numeric.float.riscv"
+ },
+ {
+ "match": "\\b(\\d+|0(x|X)[a-fA-F0-9]+)\\b",
+ "name": "constant.numeric.integer.riscv"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.riscv"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.riscv"
+ }
+ },
+ "name": "string.quoted.double.riscv",
+ "patterns": [
+ {
+ "match": "\\\\[rnt\\\\\"]",
+ "name": "constant.character.escape.riscv"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.riscv"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.riscv"
+ }
+ },
+ "name": "string.quoted.single.riscv",
+ "patterns": [
+ {
+ "match": "\\\\[rnt\\\\\"]",
+ "name": "constant.character.escape.riscv"
+ }
+ ]
+ },
+ {
+ "begin": "\\/\\*",
+ "end": "\\*\\/",
+ "name": "comment.block"
+ },
+ {
+ "begin": "\\/\\/",
+ "end": "\\n",
+ "name": "comment.line.double-slash"
+ },
+ {
+ "begin": "(?x)\n ^\\s*\\#\\s*(define)\\s+ # define\n ((?<id>[a-zA-Z_][a-zA-Z0-9_]*)) # macro name\n (?: # and optionally:\n (\\() # an open parenthesis\n (\n \\s* \\g<id> \\s* # first argument\n ((,) \\s* \\g<id> \\s*)* # additional arguments\n (?:\\.\\.\\.)? # varargs ellipsis?\n )\n (\\)) # a close parenthesis\n )?\n ",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.import.define.c"
+ },
+ "2": {
+ "name": "entity.name.function.preprocessor.c"
+ },
+ "4": {
+ "name": "punctuation.definition.parameters.c"
+ },
+ "5": {
+ "name": "variable.parameter.preprocessor.c"
+ },
+ "7": {
+ "name": "punctuation.separator.parameters.c"
+ },
+ "8": {
+ "name": "punctuation.definition.parameters.c"
+ }
+ },
+ "end": "(?=(?://|/\\*))|$",
+ "name": "meta.preprocessor.macro.c",
+ "patterns": [
+ {
+ "match": "(?>\\\\\\s*\\n)",
+ "name": "punctuation.separator.continuation.c"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*#\\s*(error|warning)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.import.error.c"
+ }
+ },
+ "end": "$",
+ "name": "meta.preprocessor.diagnostic.c",
+ "patterns": [
+ {
+ "match": "(?>\\\\\\s*\\n)",
+ "name": "punctuation.separator.continuation.c"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*#\\s*(include|import)\\b\\s+",
+ "captures": {
+ "1": {
+ "name": "keyword.control.import.include.c"
+ }
+ },
+ "end": "(?=(?://|/\\*))|$",
+ "name": "meta.preprocessor.c.include",
+ "patterns": [
+ {
+ "match": "(?>\\\\\\s*\\n)",
+ "name": "punctuation.separator.continuation.c"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.c"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.c"
+ }
+ },
+ "name": "string.quoted.double.include.c"
+ },
+ {
+ "begin": "<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.c"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.c"
+ }
+ },
+ "name": "string.quoted.other.lt-gt.include.c"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*#\\s*(define|defined|elif|else|if|ifdef|ifndef|line|pragma|undef|endif)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.import.c"
+ }
+ },
+ "end": "(?=(?://|/\\*))|$",
+ "name": "meta.preprocessor.c",
+ "patterns": [
+ {
+ "match": "(?>\\\\\\s*\\n)",
+ "name": "punctuation.separator.continuation.c"
+ }
+ ]
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.riscv"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "#|(\\/\\/)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.riscv"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.number-sign.riscv"
+ }
+ ]
+ }
+ ],
+ "scopeName": "source.riscv",
+ "uuid": "003223C7-B8D1-4B7F-BF91-5E0062B19B53"
+}
diff --git a/node_modules/shiki/languages/rst.tmLanguage.json b/node_modules/shiki/languages/rst.tmLanguage.json
new file mode 100644
index 0000000..8b2e9cb
--- /dev/null
+++ b/node_modules/shiki/languages/rst.tmLanguage.json
@@ -0,0 +1,740 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/trond-snekvik/vscode-rst/blob/master/syntaxes/rst.tmLanguage.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/trond-snekvik/vscode-rst/commit/4f6f1a8f94e0d16e30dddc9c4e359d062b715408",
+ "scopeName": "source.rst",
+ "patterns": [
+ {
+ "include": "#body"
+ }
+ ],
+ "repository": {
+ "body": {
+ "patterns": [
+ {
+ "include": "#title"
+ },
+ {
+ "include": "#inline-markup"
+ },
+ {
+ "include": "#anchor"
+ },
+ {
+ "include": "#line-block"
+ },
+ {
+ "include": "#replace-include"
+ },
+ {
+ "include": "#footnote"
+ },
+ {
+ "include": "#substitution"
+ },
+ {
+ "include": "#blocks"
+ },
+ {
+ "include": "#table"
+ },
+ {
+ "include": "#simple-table"
+ },
+ {
+ "include": "#options-list"
+ }
+ ]
+ },
+ "title": {
+ "match": "^(\\*{3,}|#{3,}|\\={3,}|~{3,}|\\+{3,}|-{3,}|`{3,}|\\^{3,}|:{3,}|\"{3,}|_{3,}|'{3,})$",
+ "name": "markup.heading"
+ },
+ "inline-markup": {
+ "patterns": [
+ {
+ "include": "#escaped"
+ },
+ {
+ "include": "#ignore"
+ },
+ {
+ "include": "#ref"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#monospaced"
+ },
+ {
+ "include": "#citation"
+ },
+ {
+ "include": "#bold"
+ },
+ {
+ "include": "#italic"
+ },
+ {
+ "include": "#list"
+ },
+ {
+ "include": "#macro"
+ },
+ {
+ "include": "#reference"
+ },
+ {
+ "include": "#footnote-ref"
+ }
+ ]
+ },
+ "ignore": {
+ "patterns": [
+ {
+ "match": "'[`*]+'"
+ },
+ {
+ "match": "<[`*]+>"
+ },
+ {
+ "match": "{[`*]+}"
+ },
+ {
+ "match": "\\([`*]+\\)"
+ },
+ {
+ "match": "\\[[`*]+\\]"
+ },
+ {
+ "match": "\"[`*]+\""
+ }
+ ]
+ },
+ "table": {
+ "begin": "^\\s*\\+[=+-]+\\+\\s*$",
+ "end": "^(?![+|])",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.table"
+ }
+ },
+ "patterns": [
+ {
+ "match": "[=+|-]",
+ "name": "keyword.control.table"
+ }
+ ]
+ },
+ "simple-table": {
+ "match": "^[=\\s]+$",
+ "name": "keyword.control.table"
+ },
+ "ref": {
+ "begin": "(:ref:)`",
+ "end": "`|^\\s*$",
+ "name": "entity.name.tag",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control"
+ }
+ },
+ "patterns": [
+ {
+ "match": "<.*?>",
+ "name": "markup.underline.link"
+ }
+ ]
+ },
+ "reference": {
+ "match": "[\\w-]*[a-zA-Z\\d-]__?\\b",
+ "name": "entity.name.tag"
+ },
+ "macro": {
+ "match": "\\|[^\\|]+\\|",
+ "name": "entity.name.tag"
+ },
+ "literal": {
+ "match": "(:\\S+:)(`.*?`\\\\?)",
+ "captures": {
+ "1": {
+ "name": "keyword.control"
+ },
+ "2": {
+ "name": "entity.name.tag"
+ }
+ }
+ },
+ "monospaced": {
+ "begin": "(?<=[\\s\"'(\\[{<]|^)``[^\\s`]",
+ "end": "``|^\\s*$",
+ "name": "string.interpolated"
+ },
+ "citation": {
+ "begin": "(?<=[\\s\"'(\\[{<]|^)`[^\\s`]",
+ "end": "`_{,2}|^\\s*$",
+ "name": "entity.name.tag",
+ "applyEndPatternLast": 0
+ },
+ "bold": {
+ "begin": "(?<=[\\s\"'(\\[{<]|^)\\*{2}[^\\s*]",
+ "end": "\\*{2}|^\\s*$",
+ "name": "markup.bold"
+ },
+ "italic": {
+ "begin": "(?<=[\\s\"'(\\[{<]|^)\\*[^\\s*]",
+ "end": "\\*|^\\s*$",
+ "name": "markup.italic"
+ },
+ "escaped": {
+ "match": "\\\\.",
+ "name": "constant.character.escape"
+ },
+ "list": {
+ "match": "^\\s*(\\d+\\.|\\* -|[a-zA-Z#]\\.|[iIvVxXmMcC]+\\.|\\(\\d+\\)|\\d+\\)|[*+-])\\s+",
+ "name": "keyword.control"
+ },
+ "line-block": {
+ "match": "^\\|\\s+",
+ "name": "keyword.control"
+ },
+ "raw-html": {
+ "begin": "^(\\s*)(\\.{2}\\s+raw\\s*::)\\s+(html)\\s*$",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control"
+ },
+ "3": {
+ "name": "variable.parameter.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ },
+ {
+ "include": "text.html.derivative"
+ }
+ ]
+ },
+ "anchor": {
+ "match": "^\\.{2}\\s+(_[^:]+:)\\s*",
+ "name": "entity.name.tag.anchor"
+ },
+ "replace-include": {
+ "match": "^\\s*(\\.{2})\\s+(\\|[^\\|]+\\|)\\s+(replace::)",
+ "captures": {
+ "1": {
+ "name": "keyword.control"
+ },
+ "2": {
+ "name": "entity.name.tag"
+ },
+ "3": {
+ "name": "keyword.control"
+ }
+ }
+ },
+ "footnote": {
+ "match": "^\\s*\\.{2}\\s+\\[(?:[\\w\\.-]+|[#*]|#\\w+)\\]\\s+",
+ "name": "entity.name.tag"
+ },
+ "footnote-ref": {
+ "match": "\\[(?:[\\w\\.-]+|[#*])\\]_",
+ "name": "entity.name.tag"
+ },
+ "substitution": {
+ "match": "^\\.{2}\\s*\\|([^|]+)\\|",
+ "name": "entity.name.tag"
+ },
+ "options-list": {
+ "match": "^((?:-\\w|--[\\w-]+|/\\w+)(?:,? ?[\\w-]+)*)(?: |\\t|$)",
+ "name": "variable.parameter"
+ },
+ "blocks": {
+ "patterns": [
+ {
+ "include": "#domains"
+ },
+ {
+ "include": "#doctest"
+ },
+ {
+ "include": "#code-block-cpp"
+ },
+ {
+ "include": "#code-block-py"
+ },
+ {
+ "include": "#code-block-console"
+ },
+ {
+ "include": "#code-block-javascript"
+ },
+ {
+ "include": "#code-block-yaml"
+ },
+ {
+ "include": "#code-block-cmake"
+ },
+ {
+ "include": "#code-block-kconfig"
+ },
+ {
+ "include": "#code-block-ruby"
+ },
+ {
+ "include": "#code-block-dts"
+ },
+ {
+ "include": "#code-block"
+ },
+ {
+ "include": "#doctest-block"
+ },
+ {
+ "include": "#raw-html"
+ },
+ {
+ "include": "#block"
+ },
+ {
+ "include": "#literal-block"
+ },
+ {
+ "include": "#block-comment"
+ }
+ ]
+ },
+ "block-comment": {
+ "begin": "^(\\s*)\\.{2}(\\s+|$)",
+ "end": "^(?=\\S)|^\\s*$",
+ "name": "comment.block",
+ "patterns": [
+ {
+ "begin": "^\\s{3,}(?=\\S)",
+ "while": "^\\s{3}.*|^\\s*$",
+ "name": "comment.block"
+ }
+ ]
+ },
+ "literal-block": {
+ "begin": "^(\\s*)(.*)(::)\\s*$",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "patterns": [
+ {
+ "include": "#inline-markup"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.control"
+ }
+ }
+ },
+ "block": {
+ "begin": "^(\\s*)(\\.{2}\\s+\\S+::)(.*)",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control"
+ },
+ "3": {
+ "name": "variable"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ },
+ {
+ "include": "#body"
+ }
+ ]
+ },
+ "block-param": {
+ "patterns": [
+ {
+ "match": "(:param\\s+(.+?):)(?:\\s|$)",
+ "captures": {
+ "1": {
+ "name": "keyword.control"
+ },
+ "2": {
+ "name": "variable.parameter"
+ }
+ }
+ },
+ {
+ "match": "(:.+?:)(?:$|\\s+(.*))",
+ "captures": {
+ "1": {
+ "name": "keyword.control"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\b(0x[a-fA-F\\d]+|\\d+)\\b",
+ "name": "constant.numeric"
+ },
+ {
+ "include": "#inline-markup"
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "domains": {
+ "patterns": [
+ {
+ "include": "#domain-cpp"
+ },
+ {
+ "include": "#domain-py"
+ },
+ {
+ "include": "#domain-auto"
+ },
+ {
+ "include": "#domain-js"
+ }
+ ]
+ },
+ "domain-cpp": {
+ "begin": "^(\\s*)(\\.{2}\\s+(?:cpp|c):(?:class|struct|function|member|var|type|enum|enum-struct|enum-class|enumerator|union|concept)::)\\s*(?:(@\\w+)|(.*))",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control"
+ },
+ "3": {
+ "name": "entity.name.tag"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "source.cpp"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ },
+ {
+ "include": "#body"
+ }
+ ]
+ },
+ "domain-py": {
+ "begin": "^(\\s*)(\\.{2}\\s+py:(?:module|function|data|exception|class|attribute|property|method|staticmethod|classmethod|decorator|decoratormethod)::)\\s*(.*)",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.python"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ },
+ {
+ "include": "#body"
+ }
+ ]
+ },
+ "domain-auto": {
+ "begin": "^(\\s*)(\\.{2}\\s+auto(?:class|module|exception|function|decorator|data|method|attribute|property)::)\\s*(.*)",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control.py"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.python"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ },
+ {
+ "include": "#body"
+ }
+ ]
+ },
+ "domain-js": {
+ "begin": "^(\\s*)(\\.{2}\\s+js:\\w+::)\\s*(.*)",
+ "end": "^(?!\\1[ \\t]|$)",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ },
+ {
+ "include": "#body"
+ }
+ ]
+ },
+ "doctest": {
+ "begin": "^(>>>)\\s*(.*)",
+ "end": "^\\s*$",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "source.python"
+ }
+ ]
+ }
+ }
+ },
+ "code-block-cpp": {
+ "begin": "^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*(c|c\\+\\+|cpp|C|C\\+\\+|CPP|Cpp)\\s*$",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control"
+ },
+ "4": {
+ "name": "variable.parameter.codeblock.cpp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ },
+ {
+ "include": "source.cpp"
+ }
+ ]
+ },
+ "code-block-console": {
+ "begin": "^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*(console|shell|bash)\\s*$",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control"
+ },
+ "4": {
+ "name": "variable.parameter.codeblock.console"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ },
+ {
+ "include": "source.shell"
+ }
+ ]
+ },
+ "code-block-py": {
+ "begin": "^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*(python)\\s*$",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control"
+ },
+ "4": {
+ "name": "variable.parameter.codeblock.py"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ },
+ {
+ "include": "source.python"
+ }
+ ]
+ },
+ "code-block-javascript": {
+ "begin": "^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*(javascript)\\s*$",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control"
+ },
+ "4": {
+ "name": "variable.parameter.codeblock.js"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ "code-block-yaml": {
+ "begin": "^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*(ya?ml)\\s*$",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control"
+ },
+ "4": {
+ "name": "variable.parameter.codeblock.yaml"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ },
+ {
+ "include": "source.yaml"
+ }
+ ]
+ },
+ "code-block-cmake": {
+ "begin": "^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*(cmake)\\s*$",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control"
+ },
+ "4": {
+ "name": "variable.parameter.codeblock.cmake"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ },
+ {
+ "include": "source.cmake"
+ }
+ ]
+ },
+ "code-block-kconfig": {
+ "begin": "^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*([kK]config)\\s*$",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control"
+ },
+ "4": {
+ "name": "variable.parameter.codeblock.kconfig"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ },
+ {
+ "include": "source.kconfig"
+ }
+ ]
+ },
+ "code-block-ruby": {
+ "begin": "^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*(ruby)\\s*$",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control"
+ },
+ "4": {
+ "name": "variable.parameter.codeblock.ruby"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ },
+ {
+ "include": "source.ruby"
+ }
+ ]
+ },
+ "code-block-dts": {
+ "begin": "^(\\s*)(\\.{2}\\s+(code|code-block)::)\\s*(dts|DTS|devicetree)\\s*$",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control"
+ },
+ "4": {
+ "name": "variable.parameter.codeblock.dts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ },
+ {
+ "include": "source.dts"
+ }
+ ]
+ },
+ "code-block": {
+ "begin": "^(\\s*)(\\.{2}\\s+(code|code-block)::)",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ }
+ ]
+ },
+ "doctest-block": {
+ "begin": "^(\\s*)(\\.{2}\\s+doctest::)\\s*$",
+ "while": "^\\1(?=\\s)|^\\s*$",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-param"
+ },
+ {
+ "include": "source.python"
+ }
+ ]
+ }
+ },
+ "name": "rst"
+}
diff --git a/node_modules/shiki/languages/ruby.tmLanguage.json b/node_modules/shiki/languages/ruby.tmLanguage.json
new file mode 100644
index 0000000..0b04405
--- /dev/null
+++ b/node_modules/shiki/languages/ruby.tmLanguage.json
@@ -0,0 +1,2775 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/textmate/ruby.tmbundle/blob/master/Syntaxes/Ruby.plist",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/textmate/ruby.tmbundle/commit/efcb8941c701343f1b2e9fb105c678152fea6892",
+ "name": "ruby",
+ "scopeName": "source.ruby",
+ "comment": "\n\tTODO: unresolved issues\n\n\ttext:\n\t\"p <<end\n\tprint me!\n\tend\"\n\tsymptoms:\n\tnot recognized as a heredoc\n\tsolution:\n\tthere is no way to distinguish perfectly between the << operator and the start\n\tof a heredoc. Currently, we require assignment to recognize a heredoc. More\n\trefinement is possible.\n\t• Heredocs with indented terminators (<<-) are always distinguishable, however.\n\t• Nested heredocs are not really supportable at present\n\n\ttext:\n\tprint <<-'THERE' \n\tThis is single quoted. \n\tThe above used #{Time.now} \n\tTHERE \n\tsymtoms:\n\tFrom Programming Ruby p306; should be a non-interpolated heredoc.\n\t\n text:\n val?(a):p(b)\n val?'a':'b'\n symptoms:\n ':p' is recognized as a symbol.. its 2 things ':' and 'p'.\n :'b' has same problem.\n solution:\n ternary operator rule, precedence stuff, symbol rule.\n but also consider 'a.b?(:c)' ??\n",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.class.ruby"
+ },
+ "2": {
+ "name": "entity.name.type.class.ruby"
+ },
+ "3": {
+ "name": "keyword.operator.other.ruby"
+ },
+ "4": {
+ "name": "entity.other.inherited-class.ruby"
+ },
+ "5": {
+ "name": "keyword.operator.other.ruby"
+ },
+ "6": {
+ "name": "variable.other.object.ruby"
+ }
+ },
+ "match": "^\\s*(class)\\s+(?:([.a-zA-Z0-9_:]+)(?:\\s*(<)\\s*([.a-zA-Z0-9_:]+))?|(<<)\\s*([.a-zA-Z0-9_:]+))",
+ "name": "meta.class.ruby"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.module.ruby"
+ },
+ "2": {
+ "name": "entity.name.type.module.ruby"
+ },
+ "3": {
+ "name": "entity.other.inherited-class.module.first.ruby"
+ },
+ "4": {
+ "name": "punctuation.separator.inheritance.ruby"
+ },
+ "5": {
+ "name": "entity.other.inherited-class.module.second.ruby"
+ },
+ "6": {
+ "name": "punctuation.separator.inheritance.ruby"
+ },
+ "7": {
+ "name": "entity.other.inherited-class.module.third.ruby"
+ },
+ "8": {
+ "name": "punctuation.separator.inheritance.ruby"
+ }
+ },
+ "match": "^\\s*(module)\\s+(([A-Z]\\w*(::))?([A-Z]\\w*(::))?([A-Z]\\w*(::))*[A-Z]\\w*)",
+ "name": "meta.module.ruby"
+ },
+ {
+ "comment": "else if is a common mistake carried over from other languages. it works if you put in a second end, but it’s never what you want.",
+ "match": "(?<!\\.)\\belse(\\s)+if\\b",
+ "name": "invalid.deprecated.ruby"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.ruby"
+ }
+ },
+ "comment": "symbols as hash key (1.9 syntax)",
+ "match": "(?>[a-zA-Z_]\\w*(?>[?!])?)(:)(?!:)",
+ "name": "constant.other.symbol.hashkey.ruby"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.ruby"
+ }
+ },
+ "comment": "symbols as hash key (1.8 syntax)",
+ "match": "(?<!:)(:)(?>[a-zA-Z_]\\w*(?>[?!])?)(?=\\s*=>)",
+ "name": "constant.other.symbol.hashkey.ruby"
+ },
+ {
+ "comment": "everything being a reserved word, not a value and needing a 'end' is a..",
+ "match": "(?<!\\.)\\b(BEGIN|begin|case|class|else|elsif|END|end|ensure|for|if|in|module|rescue|then|unless|until|when|while)\\b(?![?!])",
+ "name": "keyword.control.ruby"
+ },
+ {
+ "comment": "contextual smart pair support for block parameters",
+ "match": "(?<!\\.)\\bdo\\b",
+ "name": "keyword.control.start-block.ruby"
+ },
+ {
+ "comment": "contextual smart pair support",
+ "match": "(?<=\\{)(\\s+)",
+ "name": "meta.syntax.ruby.start-block"
+ },
+ {
+ "match": "(?<!\\.)\\b(alias|alias_method|block_given[?]|break|defined[?]|iterator[?]|next|redo|retry|return|super|undef|yield)(\\b|(?<=[?]))(?![?!])",
+ "name": "keyword.control.pseudo-method.ruby"
+ },
+ {
+ "match": "\\b(nil|true|false)\\b(?![?!])",
+ "name": "constant.language.ruby"
+ },
+ {
+ "match": "\\b(__(dir|FILE|LINE)__)\\b(?![?!])",
+ "name": "variable.language.ruby"
+ },
+ {
+ "begin": "^__END__\\n",
+ "captures": {
+ "0": {
+ "name": "string.unquoted.program-block.ruby"
+ }
+ },
+ "comment": "__END__ marker",
+ "contentName": "text.plain",
+ "end": "(?=not)impossible",
+ "patterns": [
+ {
+ "begin": "(?=<?xml|<(?i:html\\b)|!DOCTYPE (?i:html\\b))",
+ "end": "(?=not)impossible",
+ "name": "text.html.embedded.ruby",
+ "patterns": [
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "match": "\\b(self)\\b(?![?!])",
+ "name": "variable.language.self.ruby"
+ },
+ {
+ "comment": " everything being a method but having a special function is a..",
+ "match": "\\b(initialize|new|loop|include|extend|prepend|fail|raise|attr_reader|attr_writer|attr_accessor|attr|catch|throw|private|private_class_method|module_function|public|public_class_method|protected|refine|using)\\b(?![?!])",
+ "name": "keyword.other.special-method.ruby"
+ },
+ {
+ "begin": "\\b(?<!\\.|::)(require|require_relative)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.special-method.ruby"
+ }
+ },
+ "end": "$|(?=#|\\})",
+ "name": "meta.require.ruby",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.ruby"
+ }
+ },
+ "match": "(@)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.instance.ruby"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.ruby"
+ }
+ },
+ "match": "(@@)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.class.ruby"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.ruby"
+ }
+ },
+ "match": "(\\$)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.global.ruby"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.ruby"
+ }
+ },
+ "match": "(\\$)(!|@|&|`|'|\\+|\\d+|~|=|/|\\\\|,|;|\\.|<|>|_|\\*|\\$|\\?|:|\"|-[0adFiIlpvw])",
+ "name": "variable.other.readwrite.global.pre-defined.ruby"
+ },
+ {
+ "begin": "\\b(ENV)\\[",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.constant.ruby"
+ }
+ },
+ "end": "\\]",
+ "name": "meta.environment-variable.ruby",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "match": "\\b[A-Z]\\w*(?=((\\.|::)[A-Za-z]|\\[))",
+ "name": "support.class.ruby"
+ },
+ {
+ "match": "\\b(abort|at_exit|autoload[?]?|binding|callcc|caller|caller_locations|chomp|chop|eval|exec|exit|exit!|fork|format|gets|global_variables|gsub|lambda|load|local_variables|open|p|print|printf|proc|putc|puts|rand|readline|readlines|select|set_trace_func|sleep|spawn|sprintf|srand|sub|syscall|system|test|trace_var|trap|untrace_var|warn)(\\b|(?<=[?!]))(?![?!])",
+ "name": "support.function.kernel.ruby"
+ },
+ {
+ "match": "\\b[A-Z]\\w*\\b",
+ "name": "variable.other.constant.ruby"
+ },
+ {
+ "begin": "(?x)\n\t\t\t (?=def\\b) # an optimization to help Oniguruma fail fast\n\t\t\t (?<=^|\\s)(def)\\s+ # the def keyword\n\t\t\t ( (?>[a-zA-Z_]\\w*(?>\\.|::))? # a method name prefix\n\t\t\t (?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))? # the method name\n\t\t\t |===?|!=|!~|>[>=]?|<=>|<[<=]?|[%&`/\\|^]|\\*\\*?|=?~|[-+]@?|\\[\\]=?) ) # …or an operator method\n\t\t\t \\s*(\\() # the openning parenthesis for arguments\n\t\t\t ",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.def.ruby"
+ },
+ "2": {
+ "name": "entity.name.function.ruby"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.ruby"
+ }
+ },
+ "comment": "the method pattern comes from the symbol pattern, see there for a explaination",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.ruby"
+ }
+ },
+ "name": "meta.function.method.with-arguments.ruby",
+ "patterns": [
+ {
+ "begin": "(?=[&*_a-zA-Z])",
+ "end": "(?=[,)])",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.variable.ruby"
+ },
+ "2": {
+ "name": "constant.other.symbol.hashkey.parameter.function.ruby"
+ },
+ "3": {
+ "name": "punctuation.definition.constant.ruby"
+ },
+ "4": {
+ "name": "variable.parameter.function.ruby"
+ }
+ },
+ "match": "\\G([&*]?)(?:([_a-zA-Z]\\w*(:))|([_a-zA-Z]\\w*))"
+ },
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#braces"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "braces": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.function.begin.ruby"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.ruby"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#braces"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "parens": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.function.begin.ruby"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.ruby"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#braces"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "(?x)\n\t\t\t (?=def\\b) # an optimization to help Oniguruma fail fast\n\t\t\t (?<=^|\\s)(def)\\s+ # the def keyword\n\t\t\t ( (?>[a-zA-Z_]\\w*(?>\\.|::))? # a method name prefix\n\t\t\t (?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))? # the method name\n\t\t\t |===?|!=|!~|>[>=]?|<=>|<[<=]?|[%&`/\\|^]|\\*\\*?|=?~|[-+]@?|\\[\\]=?) ) # …or an operator method\n\t\t\t [ \\t] # the space separating the arguments\n\t\t\t (?=[ \\t]*[^\\s#;]) # make sure arguments and not a comment follow\n\t\t\t ",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.def.ruby"
+ },
+ "2": {
+ "name": "entity.name.function.ruby"
+ }
+ },
+ "comment": "same as the previous rule, but without parentheses around the arguments",
+ "end": "$",
+ "name": "meta.function.method.with-arguments.ruby",
+ "patterns": [
+ {
+ "begin": "(?![\\s,])",
+ "end": "(?=,|$)",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.variable.ruby"
+ },
+ "2": {
+ "name": "constant.other.symbol.hashkey.parameter.function.ruby"
+ },
+ "3": {
+ "name": "punctuation.definition.constant.ruby"
+ },
+ "4": {
+ "name": "variable.parameter.function.ruby"
+ }
+ },
+ "match": "\\G([&*]?)(?:([_a-zA-Z]\\w*(:))|([_a-zA-Z]\\w*))",
+ "name": "variable.parameter.function.ruby"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.def.ruby"
+ },
+ "3": {
+ "name": "entity.name.function.ruby"
+ }
+ },
+ "comment": " the optional name is just to catch the def also without a method-name",
+ "match": "(?x)\n\t\t\t (?=def\\b) # an optimization to help Oniguruma fail fast\n\t\t\t (?<=^|\\s)(def)\\b # the def keyword\n\t\t\t ( \\s+ # an optional group of whitespace followed by…\n\t\t\t ( (?>[a-zA-Z_]\\w*(?>\\.|::))? # a method name prefix\n\t\t\t (?>[a-zA-Z_]\\w*(?>[?!]|=(?!>))? # the method name\n\t\t\t |===?|!=|!~|>[>=]?|<=>|<[<=]?|[%&`/\\|^]|\\*\\*?|=?~|[-+]@?|\\[\\]=?) ) )? # …or an operator method\n\t\t\t ",
+ "name": "meta.function.method.without-arguments.ruby"
+ },
+ {
+ "match": "\\b\\d(?>_?\\d)*(?=\\.\\d|[eE])(\\.\\d(?>_?\\d)*)?([eE][-+]?\\d(?>_?\\d)*)?r?i?\\b",
+ "name": "constant.numeric.float.ruby"
+ },
+ {
+ "match": "\\b(0|(0[dD]\\d|[1-9])(?>_?\\d)*)r?i?\\b",
+ "name": "constant.numeric.integer.ruby"
+ },
+ {
+ "match": "\\b0[xX]\\h(?>_?\\h)*r?i?\\b",
+ "name": "constant.numeric.hex.ruby"
+ },
+ {
+ "match": "\\b0[bB][01](?>_?[01])*r?i?\\b",
+ "name": "constant.numeric.binary.ruby"
+ },
+ {
+ "match": "\\b0([oO]?[0-7](?>_?[0-7])*)?r?i?\\b",
+ "name": "constant.numeric.octal.ruby"
+ },
+ {
+ "begin": ":'",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.constant.ruby"
+ }
+ },
+ "end": "'",
+ "name": "constant.other.symbol.single-quoted.ruby",
+ "patterns": [
+ {
+ "match": "\\\\['\\\\]",
+ "name": "constant.character.escape.ruby"
+ }
+ ]
+ },
+ {
+ "begin": ":\"",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.constant.ruby"
+ }
+ },
+ "end": "\"",
+ "name": "constant.other.symbol.double-quoted.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "comment": "Needs higher precedence than regular expressions.",
+ "match": "(?<!\\()/=",
+ "name": "keyword.operator.assignment.augmented.ruby"
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "comment": "single quoted string (does not allow interpolation)",
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.quoted.single.ruby",
+ "patterns": [
+ {
+ "match": "\\\\'|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ }
+ ]
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "comment": "double quoted string (allows for interpolation)",
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.quoted.double.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "`",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "comment": "execute string (allows for interpolation)",
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.interpolated.ruby",
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "include": "#percent_literals"
+ },
+ {
+ "begin": "(?x)\n\t\t\t (?:\n\t\t\t ^ # beginning of line\n\t\t\t | (?<= # or look-behind on:\n\t\t\t [=>~(?:\\[,|&;]\n\t\t\t | [\\s;]if\\s\t\t\t# keywords\n\t\t\t | [\\s;]elsif\\s\n\t\t\t | [\\s;]while\\s\n\t\t\t | [\\s;]unless\\s\n\t\t\t | [\\s;]when\\s\n\t\t\t | [\\s;]assert_match\\s\n\t\t\t | [\\s;]or\\s\t\t\t# boolean opperators\n\t\t\t | [\\s;]and\\s\n\t\t\t | [\\s;]not\\s\n\t\t\t | [\\s.]index\\s\t\t\t# methods\n\t\t\t | [\\s.]scan\\s\n\t\t\t | [\\s.]sub\\s\n\t\t\t | [\\s.]sub!\\s\n\t\t\t | [\\s.]gsub\\s\n\t\t\t | [\\s.]gsub!\\s\n\t\t\t | [\\s.]match\\s\n\t\t\t )\n\t\t\t | (?<= # or a look-behind with line anchor:\n\t\t\t ^when\\s # duplication necessary due to limits of regex\n\t\t\t | ^if\\s\n\t\t\t | ^elsif\\s\n\t\t\t | ^while\\s\n\t\t\t | ^unless\\s\n\t\t\t )\n\t\t\t )\n\t\t\t \\s*((/))(?![*+{}?])\n\t\t\t",
+ "captures": {
+ "1": {
+ "name": "string.regexp.classic.ruby"
+ },
+ "2": {
+ "name": "punctuation.definition.string.ruby"
+ }
+ },
+ "comment": "regular expressions (normal)\n\t\t\twe only start a regexp if the character before it (excluding whitespace)\n\t\t\tis what we think is before a regexp\n\t\t\t",
+ "contentName": "string.regexp.classic.ruby",
+ "end": "((/[eimnosux]*))",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.ruby"
+ }
+ },
+ "comment": "symbols",
+ "match": "(?<!:)(:)(?>[a-zA-Z_]\\w*(?>[?!]|=(?![>=]))?|===?|>[>=]?|<=>|<[<=]?|[%&`/\\|]|\\*\\*?|=?~|[-+]@?|\\[\\]=?|(@@?|\\$)[a-zA-Z_]\\w*)",
+ "name": "constant.other.symbol.ruby"
+ },
+ {
+ "begin": "^=begin",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.ruby"
+ }
+ },
+ "comment": "multiline comments",
+ "end": "^=end",
+ "name": "comment.block.documentation.ruby"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.ruby"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.ruby"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.number-sign.ruby"
+ }
+ ]
+ },
+ {
+ "comment": "\n\t\t\tmatches questionmark-letters.\n\n\t\t\texamples (1st alternation = hex):\n\t\t\t?\\x1 ?\\x61\n\n\t\t\texamples (2nd alternation = octal):\n\t\t\t?\\0 ?\\07 ?\\017\n\n\t\t\texamples (3rd alternation = escaped):\n\t\t\t?\\n ?\\b\n\n\t\t\texamples (4th alternation = meta-ctrl):\n\t\t\t?\\C-a ?\\M-a ?\\C-\\M-\\C-\\M-a\n\n\t\t\texamples (4th alternation = normal):\n\t\t\t?a ?A ?0 \n\t\t\t?* ?\" ?( \n\t\t\t?. ?#\n\t\t\t\n\t\t\t\n\t\t\tthe negative lookbehind prevents against matching\n\t\t\tp(42.tainted?)\n\t\t\t",
+ "match": "(?<!\\w)\\?(\\\\(x\\h{1,2}(?!\\h)\\b|0[0-7]{0,2}(?![0-7])\\b|[^x0MC])|(\\\\[MC]-)+\\w|[^\\s\\\\])",
+ "name": "constant.numeric.ruby"
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)HTML)\\b\\1))",
+ "comment": "Heredoc with embedded html",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.html",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)HTML)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "text.html",
+ "end": "\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "text.html.basic"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)XML)\\b\\1))",
+ "comment": "Heredoc with embedded xml",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.xml",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)XML)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "text.xml",
+ "end": "\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "text.xml"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)SQL)\\b\\1))",
+ "comment": "Heredoc with embedded sql",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.sql",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)SQL)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.sql",
+ "end": "\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.sql"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)CSS)\\b\\1))",
+ "comment": "Heredoc with embedded css",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.css",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)CSS)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.css",
+ "end": "\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.css"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)CPP)\\b\\1))",
+ "comment": "Heredoc with embedded c++",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.c++",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)CPP)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.c++",
+ "end": "\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.c++"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)C)\\b\\1))",
+ "comment": "Heredoc with embedded c",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.c",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)C)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.c",
+ "end": "\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.c"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)(?:JS|JAVASCRIPT))\\b\\1))",
+ "comment": "Heredoc with embedded javascript",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.js",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)(?:JS|JAVASCRIPT))\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.js",
+ "end": "\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.js"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)JQUERY)\\b\\1))",
+ "comment": "Heredoc with embedded jQuery javascript",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.js.jquery",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)JQUERY)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.js.jquery",
+ "end": "\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.js.jquery"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)(?:SH|SHELL))\\b\\1))",
+ "comment": "Heredoc with embedded shell",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.shell",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)(?:SH|SHELL))\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.shell",
+ "end": "\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.shell"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)LUA)\\b\\1))",
+ "comment": "Heredoc with embedded lua",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.lua",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)LUA)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.lua",
+ "end": "\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.lua"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?=(?><<[-~](\"?)((?:[_\\w]+_|)RUBY)\\b\\1))",
+ "comment": "Heredoc with embedded ruby",
+ "end": "(?!\\G)",
+ "name": "meta.embedded.block.ruby",
+ "patterns": [
+ {
+ "begin": "(?><<[-~](\"?)((?:[_\\w]+_|)RUBY)\\b\\1)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "contentName": "source.ruby",
+ "end": "\\s*\\2$\\n?",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "source.ruby"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?>=\\s*<<(\\w+))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": "^\\1$",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?><<[-~](\\w+))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "comment": "heredoc with indented terminator",
+ "end": "\\s*\\1$",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.unquoted.heredoc.ruby",
+ "patterns": [
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\{|do|\\{\\s|do\\s)(\\|)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.arguments.ruby"
+ }
+ },
+ "end": "(?<!\\|)(\\|)(?!\\|)",
+ "patterns": [
+ {
+ "include": "$self"
+ },
+ {
+ "match": "[_a-zA-Z][_a-zA-Z0-9]*",
+ "name": "variable.other.block.ruby"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.variable.ruby"
+ }
+ ]
+ },
+ {
+ "match": "=>",
+ "name": "punctuation.separator.key-value"
+ },
+ {
+ "match": "->",
+ "name": "support.function.kernel.lambda.ruby"
+ },
+ {
+ "match": "<<=|%=|&{1,2}=|\\*=|\\*\\*=|\\+=|-=|\\^=|\\|{1,2}=|<<",
+ "name": "keyword.operator.assignment.augmented.ruby"
+ },
+ {
+ "match": "<=>|<(?!<|=)|>(?!<|=|>)|<=|>=|===|==|=~|!=|!~|(?<=[ \\t])\\?",
+ "name": "keyword.operator.comparison.ruby"
+ },
+ {
+ "match": "(?<!\\.)\\b(and|not|or)\\b(?![?!])",
+ "name": "keyword.operator.logical.ruby"
+ },
+ {
+ "comment": "Make sure this goes after assignment and comparison",
+ "match": "(?<=^|[ \\t])!|&&|\\|\\||\\^",
+ "name": "keyword.operator.logical.ruby"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.method.ruby"
+ }
+ },
+ "comment": "Safe navigation operator - Added in 2.3",
+ "match": "(&\\.)\\s*(?![A-Z])"
+ },
+ {
+ "match": "(%|&|\\*\\*|\\*|\\+|-|/)",
+ "name": "keyword.operator.arithmetic.ruby"
+ },
+ {
+ "match": "=",
+ "name": "keyword.operator.assignment.ruby"
+ },
+ {
+ "match": "\\||~|>>",
+ "name": "keyword.operator.other.ruby"
+ },
+ {
+ "match": ";",
+ "name": "punctuation.separator.statement.ruby"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.object.ruby"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.namespace.ruby"
+ }
+ },
+ "comment": "Mark as namespace separator if double colons followed by capital letter",
+ "match": "(::)\\s*(?=[A-Z])"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.method.ruby"
+ }
+ },
+ "comment": "Mark as method separator if double colons not followed by capital letter",
+ "match": "(\\.|::)\\s*(?![A-Z])"
+ },
+ {
+ "comment": "Must come after method and constant separators to prefer double colons",
+ "match": ":",
+ "name": "punctuation.separator.other.ruby"
+ },
+ {
+ "match": "\\{",
+ "name": "punctuation.section.scope.begin.ruby"
+ },
+ {
+ "match": "\\}",
+ "name": "punctuation.section.scope.end.ruby"
+ },
+ {
+ "match": "\\[",
+ "name": "punctuation.section.array.begin.ruby"
+ },
+ {
+ "match": "\\]",
+ "name": "punctuation.section.array.end.ruby"
+ },
+ {
+ "match": "\\(|\\)",
+ "name": "punctuation.section.function.ruby"
+ }
+ ],
+ "repository": {
+ "escaped_char": {
+ "match": "\\\\(?:[0-7]{1,3}|x[\\da-fA-F]{1,2}|.)",
+ "name": "constant.character.escape.ruby"
+ },
+ "heredoc": {
+ "begin": "^<<[-~]?\\w+",
+ "end": "$",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "interpolated_ruby": {
+ "patterns": [
+ {
+ "begin": "#\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.ruby"
+ }
+ },
+ "contentName": "source.ruby",
+ "end": "(\\})",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.ruby"
+ },
+ "1": {
+ "name": "source.ruby"
+ }
+ },
+ "name": "meta.embedded.line.ruby",
+ "patterns": [
+ {
+ "include": "#nest_curly_and_self"
+ },
+ {
+ "include": "$self"
+ }
+ ],
+ "repository": {
+ "nest_curly_and_self": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.scope.ruby"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#nest_curly_and_self"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.ruby"
+ }
+ },
+ "match": "(#@)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.instance.ruby"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.ruby"
+ }
+ },
+ "match": "(#@@)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.class.ruby"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.ruby"
+ }
+ },
+ "match": "(#\\$)[a-zA-Z_]\\w*",
+ "name": "variable.other.readwrite.global.ruby"
+ }
+ ]
+ },
+ "percent_literals": {
+ "patterns": [
+ {
+ "begin": "%i(?:([(\\[{<])|([^\\w\\s]|_))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "[)\\]}>]\\2|\\1\\2",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "meta.array.symbol.ruby",
+ "patterns": [
+ {
+ "begin": "\\G(?<=\\()(?!\\))",
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#symbol"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\[)(?!\\])",
+ "end": "(?=\\])",
+ "patterns": [
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#symbol"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\{)(?!\\})",
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "include": "#braces"
+ },
+ {
+ "include": "#symbol"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=<)(?!>)",
+ "end": "(?=>)",
+ "patterns": [
+ {
+ "include": "#angles"
+ },
+ {
+ "include": "#symbol"
+ }
+ ]
+ },
+ {
+ "include": "#symbol"
+ }
+ ],
+ "repository": {
+ "angles": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "constant.character.escape.ruby"
+ }
+ },
+ "match": "\\\\<|\\\\>",
+ "name": "constant.other.symbol.ruby"
+ },
+ {
+ "begin": "<",
+ "captures": {
+ "0": {
+ "name": "constant.other.symbol.ruby"
+ }
+ },
+ "end": ">",
+ "patterns": [
+ {
+ "include": "#angles"
+ },
+ {
+ "include": "#symbol"
+ }
+ ]
+ }
+ ]
+ },
+ "braces": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "constant.character.escape.ruby"
+ }
+ },
+ "match": "\\\\\\{|\\\\\\}",
+ "name": "constant.other.symbol.ruby"
+ },
+ {
+ "begin": "\\{",
+ "captures": {
+ "0": {
+ "name": "constant.other.symbol.ruby"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#braces"
+ },
+ {
+ "include": "#symbol"
+ }
+ ]
+ }
+ ]
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "constant.character.escape.ruby"
+ }
+ },
+ "match": "\\\\\\[|\\\\\\]",
+ "name": "constant.other.symbol.ruby"
+ },
+ {
+ "begin": "\\[",
+ "captures": {
+ "0": {
+ "name": "constant.other.symbol.ruby"
+ }
+ },
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#symbol"
+ }
+ ]
+ }
+ ]
+ },
+ "parens": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "constant.character.escape.ruby"
+ }
+ },
+ "match": "\\\\\\(|\\\\\\)",
+ "name": "constant.other.symbol.ruby"
+ },
+ {
+ "begin": "\\(",
+ "captures": {
+ "0": {
+ "name": "constant.other.symbol.ruby"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#symbol"
+ }
+ ]
+ }
+ ]
+ },
+ "symbol": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "constant.character.escape.ruby"
+ }
+ },
+ "match": "\\\\\\\\|\\\\[ ]",
+ "name": "constant.other.symbol.ruby"
+ },
+ {
+ "match": "\\S\\w*",
+ "name": "constant.other.symbol.ruby"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "%I(?:([(\\[{<])|([^\\w\\s]|_))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "[)\\]}>]\\2|\\1\\2",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "meta.array.symbol.interpolated.ruby",
+ "patterns": [
+ {
+ "begin": "\\G(?<=\\()(?!\\))",
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#symbol"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\[)(?!\\])",
+ "end": "(?=\\])",
+ "patterns": [
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#symbol"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\{)(?!\\})",
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "include": "#braces"
+ },
+ {
+ "include": "#symbol"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=<)(?!>)",
+ "end": "(?=>)",
+ "patterns": [
+ {
+ "include": "#angles"
+ },
+ {
+ "include": "#symbol"
+ }
+ ]
+ },
+ {
+ "include": "#symbol"
+ }
+ ],
+ "repository": {
+ "angles": {
+ "patterns": [
+ {
+ "begin": "<",
+ "captures": {
+ "0": {
+ "name": "constant.other.symbol.ruby"
+ }
+ },
+ "end": ">",
+ "patterns": [
+ {
+ "include": "#angles"
+ },
+ {
+ "include": "#symbol"
+ }
+ ]
+ }
+ ]
+ },
+ "braces": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "captures": {
+ "0": {
+ "name": "constant.other.symbol.ruby"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#braces"
+ },
+ {
+ "include": "#symbol"
+ }
+ ]
+ }
+ ]
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "begin": "\\[",
+ "captures": {
+ "0": {
+ "name": "constant.other.symbol.ruby"
+ }
+ },
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#symbol"
+ }
+ ]
+ }
+ ]
+ },
+ "parens": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "captures": {
+ "0": {
+ "name": "constant.other.symbol.ruby"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#symbol"
+ }
+ ]
+ }
+ ]
+ },
+ "symbol": {
+ "patterns": [
+ {
+ "begin": "(?=\\\\|#\\{)",
+ "end": "(?!\\G)",
+ "name": "constant.other.symbol.ruby",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#interpolated_ruby"
+ }
+ ]
+ },
+ {
+ "match": "\\S\\w*",
+ "name": "constant.other.symbol.ruby"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "%q(?:([(\\[{<])|([^\\w\\s]|_))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": "[)\\]}>]\\2|\\1\\2",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.ruby",
+ "patterns": [
+ {
+ "begin": "\\G(?<=\\()(?!\\))",
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#parens"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\[)(?!\\])",
+ "end": "(?=\\])",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\{)(?!\\})",
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "include": "#braces"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=<)(?!>)",
+ "end": "(?=>)",
+ "patterns": [
+ {
+ "include": "#angles"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "angles": {
+ "patterns": [
+ {
+ "match": "\\\\<|\\\\>|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "patterns": [
+ {
+ "include": "#angles"
+ }
+ ]
+ }
+ ]
+ },
+ "braces": {
+ "patterns": [
+ {
+ "match": "\\\\\\{|\\\\\\}|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "begin": "\\{",
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#braces"
+ }
+ ]
+ }
+ ]
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "match": "\\\\\\[|\\\\\\]|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ }
+ ]
+ },
+ "parens": {
+ "patterns": [
+ {
+ "match": "\\\\\\(|\\\\\\)|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#parens"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "%Q?(?:([(\\[{<])|([^\\w\\s=]|_))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": "[)\\]}>]\\2|\\1\\2",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.quoted.other.interpolated.ruby",
+ "patterns": [
+ {
+ "begin": "\\G(?<=\\()(?!\\))",
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#parens"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\[)(?!\\])",
+ "end": "(?=\\])",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\{)(?!\\})",
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "include": "#braces"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=<)(?!>)",
+ "end": "(?=>)",
+ "patterns": [
+ {
+ "include": "#angles"
+ }
+ ]
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#interpolated_ruby"
+ }
+ ],
+ "repository": {
+ "angles": {
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "patterns": [
+ {
+ "include": "#angles"
+ }
+ ]
+ }
+ ]
+ },
+ "braces": {
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "begin": "\\{",
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#braces"
+ }
+ ]
+ }
+ ]
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ }
+ ]
+ },
+ "parens": {
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#parens"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "%r(?:([(\\[{<])|([^\\w\\s]|_))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": "([)\\]}>]\\2|\\1\\2)[eimnosux]*",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.regexp.percent.ruby",
+ "patterns": [
+ {
+ "begin": "\\G(?<=\\()(?!\\))",
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#parens"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\[)(?!\\])",
+ "end": "(?=\\])",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\{)(?!\\})",
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "include": "#braces"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=<)(?!>)",
+ "end": "(?=>)",
+ "patterns": [
+ {
+ "include": "#angles"
+ }
+ ]
+ },
+ {
+ "include": "#regex_sub"
+ }
+ ],
+ "repository": {
+ "angles": {
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "patterns": [
+ {
+ "include": "#angles"
+ }
+ ]
+ }
+ ]
+ },
+ "braces": {
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "begin": "\\{",
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#braces"
+ }
+ ]
+ }
+ ]
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ }
+ ]
+ },
+ "parens": {
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#parens"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "%s(?:([(\\[{<])|([^\\w\\s]|_))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.constant.begin.ruby"
+ }
+ },
+ "end": "[)\\]}>]\\2|\\1\\2",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.constant.end.ruby"
+ }
+ },
+ "name": "constant.other.symbol.percent.ruby",
+ "patterns": [
+ {
+ "begin": "\\G(?<=\\()(?!\\))",
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#parens"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\[)(?!\\])",
+ "end": "(?=\\])",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\{)(?!\\})",
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "include": "#braces"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=<)(?!>)",
+ "end": "(?=>)",
+ "patterns": [
+ {
+ "include": "#angles"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "angles": {
+ "patterns": [
+ {
+ "match": "\\\\<|\\\\>|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "patterns": [
+ {
+ "include": "#angles"
+ }
+ ]
+ }
+ ]
+ },
+ "braces": {
+ "patterns": [
+ {
+ "match": "\\\\\\{|\\\\\\}|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "begin": "\\{",
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#braces"
+ }
+ ]
+ }
+ ]
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "match": "\\\\\\[|\\\\\\]|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ }
+ ]
+ },
+ "parens": {
+ "patterns": [
+ {
+ "match": "\\\\\\(|\\\\\\)|\\\\\\\\",
+ "name": "constant.character.escape.ruby"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#parens"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "%w(?:([(\\[{<])|([^\\w\\s]|_))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "[)\\]}>]\\2|\\1\\2",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "meta.array.string.ruby",
+ "patterns": [
+ {
+ "begin": "\\G(?<=\\()(?!\\))",
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\[)(?!\\])",
+ "end": "(?=\\])",
+ "patterns": [
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\{)(?!\\})",
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "include": "#braces"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=<)(?!>)",
+ "end": "(?=>)",
+ "patterns": [
+ {
+ "include": "#angles"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "include": "#string"
+ }
+ ],
+ "repository": {
+ "angles": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "constant.character.escape.ruby"
+ }
+ },
+ "match": "\\\\<|\\\\>",
+ "name": "string.other.ruby"
+ },
+ {
+ "begin": "<",
+ "captures": {
+ "0": {
+ "name": "string.other.ruby"
+ }
+ },
+ "end": ">",
+ "patterns": [
+ {
+ "include": "#angles"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "braces": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "constant.character.escape.ruby"
+ }
+ },
+ "match": "\\\\\\{|\\\\\\}",
+ "name": "string.other.ruby"
+ },
+ {
+ "begin": "\\{",
+ "captures": {
+ "0": {
+ "name": "string.other.ruby"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#braces"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "constant.character.escape.ruby"
+ }
+ },
+ "match": "\\\\\\[|\\\\\\]",
+ "name": "string.other.ruby"
+ },
+ {
+ "begin": "\\[",
+ "captures": {
+ "0": {
+ "name": "string.other.ruby"
+ }
+ },
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "parens": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "constant.character.escape.ruby"
+ }
+ },
+ "match": "\\\\\\(|\\\\\\)",
+ "name": "string.other.ruby"
+ },
+ {
+ "begin": "\\(",
+ "captures": {
+ "0": {
+ "name": "string.other.ruby"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "string": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "constant.character.escape.ruby"
+ }
+ },
+ "match": "\\\\\\\\|\\\\[ ]",
+ "name": "string.other.ruby"
+ },
+ {
+ "match": "\\S\\w*",
+ "name": "string.other.ruby"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "%W(?:([(\\[{<])|([^\\w\\s]|_))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.ruby"
+ }
+ },
+ "end": "[)\\]}>]\\2|\\1\\2",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.ruby"
+ }
+ },
+ "name": "meta.array.string.interpolated.ruby",
+ "patterns": [
+ {
+ "begin": "\\G(?<=\\()(?!\\))",
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\[)(?!\\])",
+ "end": "(?=\\])",
+ "patterns": [
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\{)(?!\\})",
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "include": "#braces"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=<)(?!>)",
+ "end": "(?=>)",
+ "patterns": [
+ {
+ "include": "#angles"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "include": "#string"
+ }
+ ],
+ "repository": {
+ "angles": {
+ "patterns": [
+ {
+ "begin": "<",
+ "captures": {
+ "0": {
+ "name": "string.other.ruby"
+ }
+ },
+ "end": ">",
+ "patterns": [
+ {
+ "include": "#angles"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "braces": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "captures": {
+ "0": {
+ "name": "string.other.ruby"
+ }
+ },
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#braces"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "begin": "\\[",
+ "captures": {
+ "0": {
+ "name": "string.other.ruby"
+ }
+ },
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "parens": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "captures": {
+ "0": {
+ "name": "string.other.ruby"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#parens"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "string": {
+ "patterns": [
+ {
+ "begin": "(?=\\\\|#\\{)",
+ "end": "(?!\\G)",
+ "name": "string.other.ruby",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#interpolated_ruby"
+ }
+ ]
+ },
+ {
+ "match": "\\S\\w*",
+ "name": "string.other.ruby"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "begin": "%x(?:([(\\[{<])|([^\\w\\s]|_))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ruby"
+ }
+ },
+ "end": "[)\\]}>]\\2|\\1\\2",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.ruby"
+ }
+ },
+ "name": "string.interpolated.percent.ruby",
+ "patterns": [
+ {
+ "begin": "\\G(?<=\\()(?!\\))",
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#parens"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\[)(?!\\])",
+ "end": "(?=\\])",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=\\{)(?!\\})",
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "include": "#braces"
+ }
+ ]
+ },
+ {
+ "begin": "\\G(?<=<)(?!>)",
+ "end": "(?=>)",
+ "patterns": [
+ {
+ "include": "#angles"
+ }
+ ]
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#interpolated_ruby"
+ }
+ ],
+ "repository": {
+ "angles": {
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "begin": "<",
+ "end": ">",
+ "patterns": [
+ {
+ "include": "#angles"
+ }
+ ]
+ }
+ ]
+ },
+ "braces": {
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "begin": "\\{",
+ "end": "\\}",
+ "patterns": [
+ {
+ "include": "#braces"
+ }
+ ]
+ }
+ ]
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ }
+ ]
+ },
+ "parens": {
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#parens"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "regex_sub": {
+ "patterns": [
+ {
+ "include": "#interpolated_ruby"
+ },
+ {
+ "include": "#escaped_char"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.quantifier.begin.ruby"
+ },
+ "3": {
+ "name": "punctuation.definition.quantifier.end.ruby"
+ }
+ },
+ "match": "(\\{)\\d+(,\\d+)?(\\})",
+ "name": "keyword.operator.quantifier.ruby"
+ },
+ {
+ "begin": "\\[\\^?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.character-class.begin.ruby"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.character-class.end.ruby"
+ }
+ },
+ "name": "constant.other.character-class.set.ruby",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "\\(\\?#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.ruby"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.ruby"
+ }
+ },
+ "name": "comment.line.number-sign.ruby",
+ "patterns": [
+ {
+ "include": "#escaped_char"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.group.ruby"
+ }
+ },
+ "end": "\\)",
+ "name": "meta.group.regexp.ruby",
+ "patterns": [
+ {
+ "include": "#regex_sub"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=^|\\s)(#)\\s(?=[[a-zA-Z0-9,. \\t?!-][^\\x{00}-\\x{7F}]]*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.ruby"
+ }
+ },
+ "comment": "We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.",
+ "end": "$\\n?",
+ "name": "comment.line.number-sign.ruby"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/rust.tmLanguage.json b/node_modules/shiki/languages/rust.tmLanguage.json
new file mode 100644
index 0000000..0731f01
--- /dev/null
+++ b/node_modules/shiki/languages/rust.tmLanguage.json
@@ -0,0 +1,1170 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/dustypomerleau/rust-syntax/blob/master/syntaxes/rust.tmLanguage.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/dustypomerleau/rust-syntax/commit/20462d50ff97338f42c6b64c3f421c634fd60734",
+ "name": "rust",
+ "scopeName": "source.rust",
+ "patterns": [
+ {
+ "comment": "boxed slice literal",
+ "begin": "(<)(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.brackets.angle.rust"
+ },
+ "2": {
+ "name": "punctuation.brackets.square.rust"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.brackets.angle.rust"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-comments"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#gtypes"
+ },
+ {
+ "include": "#lvariables"
+ },
+ {
+ "include": "#lifetimes"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#types"
+ }
+ ]
+ },
+ {
+ "comment": "macro type metavariables",
+ "name": "meta.macro.metavariable.type.rust",
+ "match": "(\\$)((crate)|([A-Z][A-Za-z0-9_]*))((:)(block|expr|ident|item|lifetime|literal|meta|path?|stmt|tt|ty|vis))?",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.macro.dollar.rust"
+ },
+ "3": {
+ "name": "keyword.other.crate.rust"
+ },
+ "4": {
+ "name": "entity.name.type.metavariable.rust"
+ },
+ "6": {
+ "name": "keyword.operator.key-value.rust"
+ },
+ "7": {
+ "name": "variable.other.metavariable.specifier.rust"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ {
+ "comment": "macro metavariables",
+ "name": "meta.macro.metavariable.rust",
+ "match": "(\\$)([a-z][A-Za-z0-9_]*)((:)(block|expr|ident|item|lifetime|literal|meta|path?|stmt|tt|ty|vis))?",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.macro.dollar.rust"
+ },
+ "2": {
+ "name": "variable.other.metavariable.name.rust"
+ },
+ "4": {
+ "name": "keyword.operator.key-value.rust"
+ },
+ "5": {
+ "name": "variable.other.metavariable.specifier.rust"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#keywords"
+ }
+ ]
+ },
+ {
+ "comment": "macro rules",
+ "name": "meta.macro.rules.rust",
+ "match": "\\b(macro_rules!)\\s+(([a-z0-9_]+)|([A-Z][a-z0-9_]*))\\s+(\\{)",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.macro.rules.rust"
+ },
+ "3": {
+ "name": "entity.name.function.macro.rust"
+ },
+ "4": {
+ "name": "entity.name.type.macro.rust"
+ },
+ "5": {
+ "name": "punctuation.brackets.curly.rust"
+ }
+ }
+ },
+ {
+ "comment": "attributes",
+ "name": "meta.attribute.rust",
+ "begin": "(#)(\\!?)(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.attribute.rust"
+ },
+ "2": {
+ "name": "keyword.operator.attribute.inner.rust"
+ },
+ "3": {
+ "name": "punctuation.brackets.attribute.rust"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.brackets.attribute.rust"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-comments"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#lifetimes"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#gtypes"
+ },
+ {
+ "include": "#types"
+ }
+ ]
+ },
+ {
+ "comment": "modules",
+ "match": "(mod)\\s+((?:r#(?!crate|[Ss]elf|super))?[a-z][A-Za-z0-9_]*)",
+ "captures": {
+ "1": {
+ "name": "storage.type.rust"
+ },
+ "2": {
+ "name": "entity.name.module.rust"
+ }
+ }
+ },
+ {
+ "comment": "external crate imports",
+ "name": "meta.import.rust",
+ "begin": "\\b(extern)\\s+(crate)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.rust"
+ },
+ "2": {
+ "name": "keyword.other.crate.rust"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.semi.rust"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-comments"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#punctuation"
+ }
+ ]
+ },
+ {
+ "comment": "use statements",
+ "name": "meta.use.rust",
+ "begin": "\\b(use)\\s",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.rust"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.semi.rust"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-comments"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#namespaces"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#lvariables"
+ }
+ ]
+ },
+ {
+ "include": "#block-comments"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#lvariables"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#gtypes"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#lifetimes"
+ },
+ {
+ "include": "#macros"
+ },
+ {
+ "include": "#namespaces"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#variables"
+ }
+ ],
+ "repository": {
+ "comments": {
+ "patterns": [
+ {
+ "comment": "documentation comments",
+ "name": "comment.line.documentation.rust",
+ "match": "^\\s*///.*"
+ },
+ {
+ "comment": "line comments",
+ "name": "comment.line.double-slash.rust",
+ "match": "\\s*//.*"
+ }
+ ]
+ },
+ "block-comments": {
+ "patterns": [
+ {
+ "comment": "empty block comments",
+ "name": "comment.block.rust",
+ "match": "/\\*\\*/"
+ },
+ {
+ "comment": "block documentation comments",
+ "name": "comment.block.documentation.rust",
+ "begin": "/\\*\\*",
+ "end": "\\*/",
+ "patterns": [
+ {
+ "include": "#block-comments"
+ }
+ ]
+ },
+ {
+ "comment": "block comments",
+ "name": "comment.block.rust",
+ "begin": "/\\*(?!\\*)",
+ "end": "\\*/",
+ "patterns": [
+ {
+ "include": "#block-comments"
+ }
+ ]
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "comment": "ALL CAPS constants",
+ "name": "constant.other.caps.rust",
+ "match": "\\b[A-Z]{2}[A-Z0-9_]*\\b"
+ },
+ {
+ "comment": "constant declarations",
+ "match": "\\b(const)\\s+([A-Z][A-Za-z0-9_]*)\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.rust"
+ },
+ "2": {
+ "name": "constant.other.caps.rust"
+ }
+ }
+ },
+ {
+ "comment": "decimal integers and floats",
+ "name": "constant.numeric.decimal.rust",
+ "match": "\\b\\d[\\d_]*(\\.?)[\\d_]*(?:(E)([+-])([\\d_]+))?(f32|f64|i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.dot.decimal.rust"
+ },
+ "2": {
+ "name": "keyword.operator.exponent.rust"
+ },
+ "3": {
+ "name": "keyword.operator.exponent.sign.rust"
+ },
+ "4": {
+ "name": "constant.numeric.decimal.exponent.mantissa.rust"
+ },
+ "5": {
+ "name": "entity.name.type.numeric.rust"
+ }
+ }
+ },
+ {
+ "comment": "hexadecimal integers",
+ "name": "constant.numeric.hex.rust",
+ "match": "\\b0x[\\da-fA-F_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.numeric.rust"
+ }
+ }
+ },
+ {
+ "comment": "octal integers",
+ "name": "constant.numeric.oct.rust",
+ "match": "\\b0o[0-7_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.numeric.rust"
+ }
+ }
+ },
+ {
+ "comment": "binary integers",
+ "name": "constant.numeric.bin.rust",
+ "match": "\\b0b[01_]+(i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)?\\b",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.numeric.rust"
+ }
+ }
+ },
+ {
+ "comment": "booleans",
+ "name": "constant.language.bool.rust",
+ "match": "\\b(true|false)\\b"
+ }
+ ]
+ },
+ "escapes": {
+ "comment": "escapes: ASCII, byte, Unicode, quote, regex",
+ "name": "constant.character.escape.rust",
+ "match": "(\\\\)(?:(?:(x[0-7][0-7a-fA-F])|(u(\\{)[\\da-fA-F]{4,6}(\\}))|.))",
+ "captures": {
+ "1": {
+ "name": "constant.character.escape.backslash.rust"
+ },
+ "2": {
+ "name": "constant.character.escape.bit.rust"
+ },
+ "3": {
+ "name": "constant.character.escape.unicode.rust"
+ },
+ "4": {
+ "name": "constant.character.escape.unicode.punctuation.rust"
+ },
+ "5": {
+ "name": "constant.character.escape.unicode.punctuation.rust"
+ }
+ }
+ },
+ "functions": {
+ "patterns": [
+ {
+ "comment": "pub as a function",
+ "match": "\\b(pub)(\\()",
+ "captures": {
+ "1": {
+ "name": "keyword.other.rust"
+ },
+ "2": {
+ "name": "punctuation.brackets.round.rust"
+ }
+ }
+ },
+ {
+ "comment": "function definition",
+ "name": "meta.function.definition.rust",
+ "begin": "\\b(fn)\\s+((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)((\\()|(<))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.fn.rust"
+ },
+ "2": {
+ "name": "entity.name.function.rust"
+ },
+ "4": {
+ "name": "punctuation.brackets.round.rust"
+ },
+ "5": {
+ "name": "punctuation.brackets.angle.rust"
+ }
+ },
+ "end": "\\{|;",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.brackets.curly.rust"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-comments"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#lvariables"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#gtypes"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#lifetimes"
+ },
+ {
+ "include": "#macros"
+ },
+ {
+ "include": "#namespaces"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#variables"
+ }
+ ]
+ },
+ {
+ "comment": "function/method calls, chaining",
+ "name": "meta.function.call.rust",
+ "begin": "((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.rust"
+ },
+ "2": {
+ "name": "punctuation.brackets.round.rust"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.brackets.round.rust"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-comments"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#lvariables"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#gtypes"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#lifetimes"
+ },
+ {
+ "include": "#macros"
+ },
+ {
+ "include": "#namespaces"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#variables"
+ }
+ ]
+ },
+ {
+ "comment": "function/method calls with turbofish",
+ "name": "meta.function.call.rust",
+ "begin": "((?:r#(?!crate|[Ss]elf|super))?[A-Za-z0-9_]+)(?=::<.*>\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.rust"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.brackets.round.rust"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-comments"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#lvariables"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#gtypes"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#lifetimes"
+ },
+ {
+ "include": "#macros"
+ },
+ {
+ "include": "#namespaces"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#variables"
+ }
+ ]
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "comment": "control flow keywords",
+ "name": "keyword.control.rust",
+ "match": "\\b(await|break|continue|do|else|for|if|loop|match|return|try|while|yield)\\b"
+ },
+ {
+ "comment": "storage keywords",
+ "name": "keyword.other.rust storage.type.rust",
+ "match": "\\b(extern|let|macro|mod)\\b"
+ },
+ {
+ "comment": "const keyword",
+ "name": "storage.modifier.rust",
+ "match": "\\b(const)\\b"
+ },
+ {
+ "comment": "type keyword",
+ "name": "keyword.declaration.type.rust storage.type.rust",
+ "match": "\\b(type)\\b"
+ },
+ {
+ "comment": "enum keyword",
+ "name": "keyword.declaration.enum.rust storage.type.rust",
+ "match": "\\b(enum)\\b"
+ },
+ {
+ "comment": "trait keyword",
+ "name": "keyword.declaration.trait.rust storage.type.rust",
+ "match": "\\b(trait)\\b"
+ },
+ {
+ "comment": "struct keyword",
+ "name": "keyword.declaration.struct.rust storage.type.rust",
+ "match": "\\b(struct)\\b"
+ },
+ {
+ "comment": "storage modifiers",
+ "name": "storage.modifier.rust",
+ "match": "\\b(abstract|static)\\b"
+ },
+ {
+ "comment": "other keywords",
+ "name": "keyword.other.rust",
+ "match": "\\b(as|async|become|box|dyn|move|final|impl|in|override|priv|pub|ref|typeof|union|unsafe|unsized|use|virtual|where)\\b"
+ },
+ {
+ "comment": "fn",
+ "name": "keyword.other.fn.rust",
+ "match": "\\bfn\\b"
+ },
+ {
+ "comment": "crate",
+ "name": "keyword.other.crate.rust",
+ "match": "\\bcrate\\b"
+ },
+ {
+ "comment": "mut",
+ "name": "storage.modifier.mut.rust",
+ "match": "\\bmut\\b"
+ },
+ {
+ "comment": "logical operators",
+ "name": "keyword.operator.logical.rust",
+ "match": "(\\^|\\||\\|\\||&&|<<|>>|!)(?!=)"
+ },
+ {
+ "comment": "logical AND, borrow references",
+ "name": "keyword.operator.borrow.and.rust",
+ "match": "&(?![&=])"
+ },
+ {
+ "comment": "assignment operators",
+ "name": "keyword.operator.assignment.rust",
+ "match": "(\\+=|-=|\\*=|/=|%=|\\^=|&=|\\|=|<<=|>>=)"
+ },
+ {
+ "comment": "single equal",
+ "name": "keyword.operator.assignment.equal.rust",
+ "match": "(?<![<>])=(?!=|>)"
+ },
+ {
+ "comment": "comparison operators",
+ "name": "keyword.operator.comparison.rust",
+ "match": "(=(=)?(?!>)|!=|<=|(?<!=)>=)"
+ },
+ {
+ "comment": "math operators",
+ "name": "keyword.operator.math.rust",
+ "match": "(([+%]|(\\*(?!\\w)))(?!=))|(-(?!>))|(/(?!/))"
+ },
+ {
+ "comment": "less than, greater than (special case)",
+ "match": "(?:\\b|(?:(\\))|(\\])|(\\})))[ \\t]+([<>])[ \\t]+(?:\\b|(?:(\\()|(\\[)|(\\{)))",
+ "captures": {
+ "1": {
+ "name": "punctuation.brackets.round.rust"
+ },
+ "2": {
+ "name": "punctuation.brackets.square.rust"
+ },
+ "3": {
+ "name": "punctuation.brackets.curly.rust"
+ },
+ "4": {
+ "name": "keyword.operator.comparison.rust"
+ },
+ "5": {
+ "name": "punctuation.brackets.round.rust"
+ },
+ "6": {
+ "name": "punctuation.brackets.square.rust"
+ },
+ "7": {
+ "name": "punctuation.brackets.curly.rust"
+ }
+ }
+ },
+ {
+ "comment": "namespace operator",
+ "name": "keyword.operator.namespace.rust",
+ "match": "::"
+ },
+ {
+ "comment": "dereference asterisk",
+ "match": "(\\*)(?=\\w+)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.dereference.rust"
+ }
+ }
+ },
+ {
+ "comment": "subpattern binding",
+ "name": "keyword.operator.subpattern.rust",
+ "match": "@"
+ },
+ {
+ "comment": "dot access",
+ "name": "keyword.operator.access.dot.rust",
+ "match": "\\.(?!\\.)"
+ },
+ {
+ "comment": "ranges, range patterns",
+ "name": "keyword.operator.range.rust",
+ "match": "\\.{2}(=|\\.)?"
+ },
+ {
+ "comment": "colon",
+ "name": "keyword.operator.key-value.rust",
+ "match": ":(?!:)"
+ },
+ {
+ "comment": "dashrocket, skinny arrow",
+ "name": "keyword.operator.arrow.skinny.rust",
+ "match": "->"
+ },
+ {
+ "comment": "hashrocket, fat arrow",
+ "name": "keyword.operator.arrow.fat.rust",
+ "match": "=>"
+ },
+ {
+ "comment": "dollar macros",
+ "name": "keyword.operator.macro.dollar.rust",
+ "match": "\\$"
+ },
+ {
+ "comment": "question mark operator, questionably sized, macro kleene matcher",
+ "name": "keyword.operator.question.rust",
+ "match": "\\?"
+ }
+ ]
+ },
+ "interpolations": {
+ "comment": "curly brace interpolations",
+ "name": "meta.interpolation.rust",
+ "match": "({)[^\"{}]*(})",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.interpolation.rust"
+ },
+ "2": {
+ "name": "punctuation.definition.interpolation.rust"
+ }
+ }
+ },
+ "lifetimes": {
+ "patterns": [
+ {
+ "comment": "named lifetime parameters",
+ "match": "(['])([a-zA-Z_][0-9a-zA-Z_]*)(?!['])\\b",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.lifetime.rust"
+ },
+ "2": {
+ "name": "entity.name.type.lifetime.rust"
+ }
+ }
+ },
+ {
+ "comment": "borrowing references to named lifetimes",
+ "match": "(\\&)(['])([a-zA-Z_][0-9a-zA-Z_]*)(?!['])\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.borrow.rust"
+ },
+ "2": {
+ "name": "punctuation.definition.lifetime.rust"
+ },
+ "3": {
+ "name": "entity.name.type.lifetime.rust"
+ }
+ }
+ }
+ ]
+ },
+ "macros": {
+ "patterns": [
+ {
+ "comment": "macros",
+ "name": "meta.macro.rust",
+ "match": "(([a-z_][A-Za-z0-9_]*!)|([A-Z_][A-Za-z0-9_]*!))",
+ "captures": {
+ "2": {
+ "name": "entity.name.function.macro.rust"
+ },
+ "3": {
+ "name": "entity.name.type.macro.rust"
+ }
+ }
+ }
+ ]
+ },
+ "namespaces": {
+ "patterns": [
+ {
+ "comment": "namespace (non-type, non-function path segment)",
+ "match": "(?<![A-Za-z0-9_])([a-z0-9_]+)((?<!super|self)::)",
+ "captures": {
+ "1": {
+ "name": "entity.name.namespace.rust"
+ },
+ "2": {
+ "name": "keyword.operator.namespace.rust"
+ }
+ }
+ }
+ ]
+ },
+ "types": {
+ "patterns": [
+ {
+ "comment": "numeric types",
+ "match": "(?<![A-Za-z])(f32|f64|i128|i16|i32|i64|i8|isize|u128|u16|u32|u64|u8|usize)\\b",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.numeric.rust"
+ }
+ }
+ },
+ {
+ "comment": "parameterized types",
+ "begin": "\\b([A-Z][A-Za-z0-9]*)(<)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.type.rust"
+ },
+ "2": {
+ "name": "punctuation.brackets.angle.rust"
+ }
+ },
+ "end": ">",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.brackets.angle.rust"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-comments"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#lvariables"
+ },
+ {
+ "include": "#lifetimes"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#variables"
+ }
+ ]
+ },
+ {
+ "comment": "primitive types",
+ "name": "entity.name.type.primitive.rust",
+ "match": "\\b(bool|char|str)\\b"
+ },
+ {
+ "comment": "trait declarations",
+ "match": "\\b(trait)\\s+([A-Z][A-Za-z0-9]*)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.trait.rust storage.type.rust"
+ },
+ "2": {
+ "name": "entity.name.type.trait.rust"
+ }
+ }
+ },
+ {
+ "comment": "struct declarations",
+ "match": "\\b(struct)\\s+([A-Z][A-Za-z0-9]*)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.struct.rust storage.type.rust"
+ },
+ "2": {
+ "name": "entity.name.type.struct.rust"
+ }
+ }
+ },
+ {
+ "comment": "enum declarations",
+ "match": "\\b(enum)\\s+([A-Z][A-Za-z0-9_]*)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.enum.rust storage.type.rust"
+ },
+ "2": {
+ "name": "entity.name.type.enum.rust"
+ }
+ }
+ },
+ {
+ "comment": "type declarations",
+ "match": "\\b(type)\\s+([A-Z][A-Za-z0-9_]*)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.type.rust storage.type.rust"
+ },
+ "2": {
+ "name": "entity.name.type.declaration.rust"
+ }
+ }
+ },
+ {
+ "comment": "types",
+ "name": "entity.name.type.rust",
+ "match": "\\b[A-Z][A-Za-z0-9]*\\b(?!!)"
+ }
+ ]
+ },
+ "gtypes": {
+ "patterns": [
+ {
+ "comment": "option types",
+ "name": "entity.name.type.option.rust",
+ "match": "\\b(Some|None)\\b"
+ },
+ {
+ "comment": "result types",
+ "name": "entity.name.type.result.rust",
+ "match": "\\b(Ok|Err)\\b"
+ }
+ ]
+ },
+ "punctuation": {
+ "patterns": [
+ {
+ "comment": "comma",
+ "name": "punctuation.comma.rust",
+ "match": ","
+ },
+ {
+ "comment": "curly braces",
+ "name": "punctuation.brackets.curly.rust",
+ "match": "[{}]"
+ },
+ {
+ "comment": "parentheses, round brackets",
+ "name": "punctuation.brackets.round.rust",
+ "match": "[()]"
+ },
+ {
+ "comment": "semicolon",
+ "name": "punctuation.semi.rust",
+ "match": ";"
+ },
+ {
+ "comment": "square brackets",
+ "name": "punctuation.brackets.square.rust",
+ "match": "[\\[\\]]"
+ },
+ {
+ "comment": "angle brackets",
+ "name": "punctuation.brackets.angle.rust",
+ "match": "(?<!=)[<>]"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "comment": "double-quoted strings and byte strings",
+ "name": "string.quoted.double.rust",
+ "begin": "(b?)(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "string.quoted.byte.raw.rust"
+ },
+ "2": {
+ "name": "punctuation.definition.string.rust"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.rust"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#escapes"
+ },
+ {
+ "include": "#interpolations"
+ }
+ ]
+ },
+ {
+ "comment": "double-quoted raw strings and raw byte strings",
+ "name": "string.quoted.double.rust",
+ "begin": "(b?r)(#*)(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "string.quoted.byte.raw.rust"
+ },
+ "2": {
+ "name": "punctuation.definition.string.raw.rust"
+ },
+ "3": {
+ "name": "punctuation.definition.string.rust"
+ }
+ },
+ "end": "(\")(\\2)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.rust"
+ },
+ "2": {
+ "name": "punctuation.definition.string.raw.rust"
+ }
+ }
+ },
+ {
+ "comment": "characters and bytes",
+ "name": "string.quoted.single.char.rust",
+ "begin": "(b)?(')",
+ "beginCaptures": {
+ "1": {
+ "name": "string.quoted.byte.raw.rust"
+ },
+ "2": {
+ "name": "punctuation.definition.char.rust"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.char.rust"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#escapes"
+ }
+ ]
+ }
+ ]
+ },
+ "lvariables": {
+ "patterns": [
+ {
+ "comment": "self",
+ "name": "variable.language.self.rust",
+ "match": "\\b[Ss]elf\\b"
+ },
+ {
+ "comment": "super",
+ "name": "variable.language.super.rust",
+ "match": "\\bsuper\\b"
+ }
+ ]
+ },
+ "variables": {
+ "patterns": [
+ {
+ "comment": "variables",
+ "name": "variable.other.rust",
+ "match": "\\b(?<!(?<!\\.)\\.)(?:r#(?!(crate|[Ss]elf|super)))?[a-z0-9_]+\\b"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/sas.tmLanguage.json b/node_modules/shiki/languages/sas.tmLanguage.json
new file mode 100644
index 0000000..b8a9b32
--- /dev/null
+++ b/node_modules/shiki/languages/sas.tmLanguage.json
@@ -0,0 +1,301 @@
+{
+ "comment": "A work in progress--improves over the existing in that it populates symbols, and handles comments more gracefully.",
+ "fileTypes": ["sas"],
+ "foldingStartMarker": "(?i:(proc|data|%macro).*;$)",
+ "foldingStopMarker": "(?i:(run|quit|%mend)\\s?);",
+ "name": "sas",
+ "patterns": [
+ {
+ "include": "#starComment"
+ },
+ {
+ "include": "#blockComment"
+ },
+ {
+ "include": "#macro"
+ },
+ {
+ "include": "#constant"
+ },
+ {
+ "include": "#quote"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "begin": "\\b(?i:(data))\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.sas"
+ }
+ },
+ "comment": "Begins a DATA step and provides names for any output SAS data sets, views, or programs.",
+ "end": "(;)",
+ "patterns": [
+ {
+ "include": "#blockComment"
+ },
+ {
+ "include": "#dataSet"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.sas"
+ },
+ "2": {
+ "name": "keyword.other.sas"
+ }
+ },
+ "match": "(?i:(?:(stack|pgm|view|source)\\s?=\\s?)|(debug|nesting|nolist))"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(?i:(set|update|modify|merge))\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.sas"
+ },
+ "2": {
+ "name": "entity.name.class.sas"
+ },
+ "3": {
+ "name": "entity.name.class.sas"
+ }
+ },
+ "comment": "DATA set File-Handling Statements for DATA step",
+ "end": "(;)",
+ "patterns": [
+ {
+ "include": "#blockComment"
+ },
+ {
+ "include": "#dataSet"
+ }
+ ]
+ },
+ {
+ "match": "(?i:\\b(if|while|until|for|do|end|then|else|run|quit|cancel|options)\\b)",
+ "name": "keyword.control.sas"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.class.sas"
+ },
+ "3": {
+ "name": "entity.name.function.sas"
+ }
+ },
+ "match": "(?i:(%(bquote|do|else|end|eval|global|goto|if|inc|include|index|input|length|let|list|local|lowcase|macro|mend|nrbquote|nrquote|nrstr|put|qscan|qsysfunc|quote|run|scan|str|substr|syscall|sysevalf|sysexec|sysfunc|sysrc|then|to|unquote|upcase|until|while|window)\\b))\\s*(\\w*)",
+ "name": "keyword.other.sas"
+ },
+ {
+ "begin": "(?i:\\b(proc\\s*(sql))\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.sas"
+ },
+ "2": {
+ "name": "support.class.sas"
+ }
+ },
+ "comment": "Looks like for this to work there must be a *name* as well as the patterns/include bit.",
+ "end": "(?i:\\b(quit)\\s*;)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.sas"
+ }
+ },
+ "name": "meta.sql.sas",
+ "patterns": [
+ {
+ "include": "#starComment"
+ },
+ {
+ "include": "#blockComment"
+ },
+ {
+ "include": "source.sql"
+ }
+ ]
+ },
+ {
+ "match": "(?i:\\b(by|label|format)\\b)",
+ "name": "keyword.datastep.sas"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.function.sas"
+ },
+ "2": {
+ "name": "support.class.sas"
+ }
+ },
+ "match": "(?i:\\b(proc (\\w+))\\b)",
+ "name": "meta.function-call.sas"
+ },
+ {
+ "match": "(?i:\\b(_n_|_error_)\\b)",
+ "name": "variable.language.sas"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.class.sas"
+ }
+ },
+ "match": "\\b(?i:(_all_|_character_|_cmd_|_freq_|_i_|_infile_|_last_|_msg_|_null_|_numeric_|_temporary_|_type_|abort|abs|addr|adjrsq|airy|alpha|alter|altlog|altprint|and|arcos|array|arsin|as|atan|attrc|attrib|attrn|authserver|autoexec|awscontrol|awsdef|awsmenu|awsmenumerge|awstitle|backward|band|base|betainv|between|blocksize|blshift|bnot|bor|brshift|bufno|bufsize|bxor|by|byerr|byline|byte|calculated|call|cards|cards4|case|catcache|cbufno|cdf|ceil|center|cexist|change|chisq|cinv|class|cleanup|close|cnonct|cntllev|coalesce|codegen|col|collate|collin|column|comamid|comaux1|comaux2|comdef|compbl|compound|compress|config|continue|convert|cos|cosh|cpuid|create|cross|crosstab|css|curobs|cv|daccdb|daccdbsl|daccsl|daccsyd|dacctab|dairy|datalines|datalines4|date|datejul|datepart|datetime|day|dbcslang|dbcstype|dclose|ddm|delete|delimiter|depdb|depdbsl|depsl|depsyd|deptab|dequote|descending|descript|design=|device|dflang|dhms|dif|digamma|dim|dinfo|display|distinct|dkricond|dkrocond|dlm|dnum|do|dopen|doptname|doptnum|dread|drop|dropnote|dsname|dsnferr|echo|else|emaildlg|emailid|emailpw|emailserver|emailsys|encrypt|end|endsas|engine|eof|eov|erf|erfc|error|errorcheck|errors|exist|exp|fappend|fclose|fcol|fdelete|feedback|fetch|fetchobs|fexist|fget|file|fileclose|fileexist|filefmt|filename|fileref|filevar|finfo|finv|fipname|fipnamel|fipstate|first|firstobs|floor|fmterr|fmtsearch|fnonct|fnote|font|fontalias|footnote[1-9]?|fopen|foptname|foptnum|force|formatted|formchar|formdelim|formdlim|forward|fpoint|fpos|fput|fread|frewind|frlen|from|fsep|full|fullstimer|fuzz|fwrite|gaminv|gamma|getoption|getvarc|getvarn|go|goto|group|gwindow|hbar|hbound|helpenv|helploc|hms|honorappearance|hosthelp|hostprint|hour|hpct|html|hvar|ibessel|ibr|id|if|index|indexc|indexw|infile|informat|initcmd|initstmt|inner|input|inputc|inputn|inr|insert|int|intck|intnx|into|intrr|invaliddata|irr|is|jbessel|join|juldate|keep|kentb|kurtosis|label|lag|last|lbound|leave|left|length|levels|lgamma|lib|libname|library|libref|line|linesize|link|list|log|log10|log2|logpdf|logpmf|logsdf|lostcard|lowcase|lrecl|ls|macro|macrogen|maps|mautosource|max|maxdec|maxr|mdy|mean|measures|median|memtype|merge|merror|min|minute|missing|missover|mlogic|mod|mode|model|modify|month|mopen|mort|mprint|mrecall|msglevel|msymtabmax|mvarsize|myy|n|nest|netpv|new|news|nmiss|no|nobatch|nobs|nocaps|nocardimage|nocenter|nocharcode|nocmdmac|nocol|nocum|nodate|nodbcs|nodetails|nodmr|nodms|nodmsbatch|nodup|nodupkey|noduplicates|noechoauto|noequals|noerrorabend|noexitwindows|nofullstimer|noicon|noimplmac|noint|nolist|noloadlist|nomiss|nomlogic|nomprint|nomrecall|nomsgcase|nomstored|nomultenvappl|nonotes|nonumber|noobs|noovp|nopad|nopercent|noprint|noprintinit|normal|norow|norsasuser|nosetinit|nosource|nosource2|nosplash|nosymbolgen|note|notes|notitle|notitles|notsorted|noverbose|noxsync|noxwait|npv|null|number|numkeys|nummousekeys|nway|obs|ods|on|open|option|order|ordinal|otherwise|out|outer|outp=|output|over|ovp|p(1|5|10|25|50|75|90|95|99)|pad|pad2|page|pageno|pagesize|paired|parm|parmcards|path|pathdll|pathname|pdf|peek|peekc|pfkey|pmf|point|poisson|poke|position|printer|probbeta|probbnml|probchi|probf|probgam|probhypr|probit|probnegb|probnorm|probsig|probt|procleave|project|prt|propcase|prxmatch|prxparse|prxchange|prxposn|ps|put|putc|putn|pw|pwreq|qtr|quote|r|ranbin|rancau|ranexp|rangam|range|ranks|rannor|ranpoi|rantbl|rantri|ranuni|read|recfm|register|regr|remote|remove|rename|repeat|replace|resolve|retain|return|reuse|reverse|rewind|right|round|rsquare|rtf|rtrace|rtraceloc|s|s2|samploc|sasautos|sascontrol|sasfrscr|sashelp|sasmsg|sasmstore|sasscript|sasuser|saving|scan|sdf|second|select|selection|separated|seq|serror|set|setcomm|setot|sign|simple|sin|sinh|siteinfo|skewness|skip|sle|sls|sortedby|sortpgm|sortseq|sortsize|soundex|source2|spedis|splashlocation|split|spool|sqrt|start|std|stderr|stdin|stfips|stimer|stname|stnamel|stop|stopover|strip|subgroup|subpopn|substr|sum|sumwgt|symbol|symbolgen|symget|symput|sysget|sysin|sysleave|sysmsg|sysparm|sysprint|sysprintfont|sysprod|sysrc|system|t|table|tables|tan|tanh|tapeclose|tbufsize|terminal|test|then|time|timepart|tinv|title[1-9]?|tnonct|to|today|tol|tooldef|totper|transformout|translate|trantab|tranwrd|trigamma|trim|trimn|trunc|truncover|type|unformatted|uniform|union|until|upcase|update|user|usericon|uss|validate|value|var|varfmt|varinfmt|varlabel|varlen|varname|varnum|varray|varrayx|vartype|verify|vformat|vformatd|vformatdx|vformatn|vformatnx|vformatw|vformatwx|vformatx|vinarray|vinarrayx|vinformat|vinformatd|vinformatdx|vinformatn|vinformatnx|vinformatw|vinformatwx|vinformatx|vlabel|vlabelx|vlength|vlengthx|vname|vnamex|vnferr|vtype|vtypex|weekday|weight|when|where|while|wincharset|window|work|workinit|workterm|write|wsum|wsumx|x|xsync|xwait|year|yearcutoff|yes|yyq|zipfips|zipname|zipnamel|zipstate))\\b",
+ "name": "support.function.sas"
+ }
+ ],
+ "repository": {
+ "blockComment": {
+ "patterns": [
+ {
+ "begin": "\\/\\*",
+ "end": "\\*\\/",
+ "name": "comment.block.slashstar.sas"
+ }
+ ]
+ },
+ "constant": {
+ "patterns": [
+ {
+ "comment": "numeric constant",
+ "match": "(?<![&\\}])\\b[0-9]*\\.?[0-9]+([eEdD][-+]?[0-9]+)?\\b",
+ "name": "constant.numeric.sas"
+ },
+ {
+ "comment": "single quote numeric-type constant",
+ "match": "(')([^']+)(')(dt|[dt])",
+ "name": "constant.numeric.quote.single.sas"
+ },
+ {
+ "comment": "double quote numeric-type constant",
+ "match": "(\")([^\"]+)(\")(dt|[dt])",
+ "name": "constant.numeric.quote.double.sas"
+ }
+ ]
+ },
+ "dataSet": {
+ "patterns": [
+ {
+ "begin": "((\\w+)\\.)?(\\w+)\\s?\\(",
+ "beginCaptures": {
+ "2": {
+ "name": "entity.name.class.libref.sas"
+ },
+ "3": {
+ "name": "entity.name.class.dsname.sas"
+ }
+ },
+ "comment": "data set with options",
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#dataSetOptions"
+ },
+ {
+ "include": "#blockComment"
+ },
+ {
+ "include": "#macro"
+ },
+ {
+ "include": "#constant"
+ },
+ {
+ "include": "#quote"
+ },
+ {
+ "include": "#operator"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "2": {
+ "name": "entity.name.class.libref.sas"
+ },
+ "3": {
+ "name": "entity.name.class.dsname.sas"
+ }
+ },
+ "comment": "data set without options",
+ "match": "\\b((\\w+)\\.)?(\\w+)\\b"
+ }
+ ]
+ },
+ "dataSetOptions": {
+ "patterns": [
+ {
+ "match": "(?<=\\s|\\(|\\))(?i:ALTER|BUFNO|BUFSIZE|CNTLLEV|COMPRESS|DLDMGACTION|ENCRYPT|ENCRYPTKEY|EXTENDOBSCOUNTER|GENMAX|GENNUM|INDEX|LABEL|OBSBUF|OUTREP|PW|PWREQ|READ|REPEMPTY|REPLACE|REUSE|ROLE|SORTEDBY|SPILL|TOBSNO|TYPE|WRITE|FILECLOSE|FIRSTOBS|IN|OBS|POINTOBS|WHERE|WHEREUP|IDXNAME|IDXWHERE|DROP|KEEP|RENAME)\\s?=",
+ "name": "keyword.other.sas"
+ }
+ ]
+ },
+ "macro": {
+ "patterns": [
+ {
+ "match": "(&+(?i:[a-z_]([a-z0-9_]+)?)(\\.+)?)\\b",
+ "name": "variable.other.macro.sas"
+ }
+ ]
+ },
+ "operator": {
+ "patterns": [
+ {
+ "match": "([\\+\\-\\*\\^\\/])",
+ "name": "keyword.operator.arithmetic.sas"
+ },
+ {
+ "match": "\\b(?i:(eq|ne|gt|lt|ge|le|in|not|&|and|or|min|max))\\b",
+ "name": "keyword.operator.comparison.sas"
+ },
+ {
+ "match": "([¬<>^~]?=(:)?|>|<|\\||!|¦|¬|^|~|<>|><|\\|\\|)",
+ "name": "keyword.operator.sas"
+ }
+ ]
+ },
+ "quote": {
+ "patterns": [
+ {
+ "begin": "(?<!%)(')",
+ "comment": "single quoted string block",
+ "end": "(')([bx])?",
+ "name": "string.quoted.single.sas"
+ },
+ {
+ "begin": "(\")",
+ "comment": "double quoted string block",
+ "end": "(\")([bx])?",
+ "name": "string.quoted.double.sas"
+ }
+ ]
+ },
+ "starComment": {
+ "patterns": [
+ {
+ "include": "#blockcomment"
+ },
+ {
+ "begin": "(?<=;)[\\s%]*\\*",
+ "end": ";",
+ "name": "comment.line.inline.star.sas"
+ },
+ {
+ "begin": "^[\\s%]*\\*",
+ "end": ";",
+ "name": "comment.line.start.sas"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.sas",
+ "uuid": "7e721b1e-6265-4865-bc4b-308d49affba1"
+}
diff --git a/node_modules/shiki/languages/sass.tmLanguage.json b/node_modules/shiki/languages/sass.tmLanguage.json
new file mode 100644
index 0000000..25eb7b8
--- /dev/null
+++ b/node_modules/shiki/languages/sass.tmLanguage.json
@@ -0,0 +1,615 @@
+{
+ "fileTypes": ["sass"],
+ "foldingStartMarker": "/\\*|^#|^\\*|^\\b|*#?region|^\\.",
+ "foldingStopMarker": "\\*/|*#?endregion|^\\s*$",
+ "name": "sass",
+ "patterns": [
+ {
+ "begin": "^(\\s*)(/\\*)",
+ "end": "(\\*/)|^(?!\\s\\1)",
+ "name": "comment.block.sass",
+ "patterns": [
+ {
+ "include": "#comment-tag"
+ },
+ {
+ "include": "#comment-param"
+ }
+ ]
+ },
+ {
+ "match": "^[\\t ]*/?//[\\t ]*[SRI][\\t ]*$",
+ "name": "keyword.other.sass.formatter.action"
+ },
+ {
+ "begin": "^[\\t ]*//[\\t ]*(import)[\\t ]*(css-variables)[\\t ]*(from)",
+ "end": "$\\n?",
+ "name": "comment.import.css.variables",
+ "captures": {
+ "1": {
+ "name": "keyword.control"
+ },
+ "2": {
+ "name": "variable"
+ },
+ "3": {
+ "name": "keyword.control"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#import-quotes"
+ }
+ ]
+ },
+ {
+ "include": "#double-slash"
+ },
+ {
+ "include": "#double-quoted"
+ },
+ {
+ "include": "#single-quoted"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#curly-brackets"
+ },
+ {
+ "include": "#placeholder-selector"
+ },
+ {
+ "begin": "\\$[a-zA-Z0-9_-]+(?=:)",
+ "end": "$\\n?|(?=\\)\\s\\)|\\)\\n)",
+ "name": "sass.script.maps",
+ "captures": {
+ "0": {
+ "name": "variable.other.name"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-slash"
+ },
+ {
+ "include": "#double-quoted"
+ },
+ {
+ "include": "#single-quoted"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#rgb-value"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#unit"
+ },
+ {
+ "include": "#flag"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#function"
+ },
+ {
+ "include": "#function-content"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#reserved-words"
+ },
+ {
+ "include": "#parent-selector"
+ },
+ {
+ "include": "#property-value"
+ },
+ {
+ "include": "#semicolon"
+ },
+ {
+ "include": "#dotdotdot"
+ }
+ ]
+ },
+ {
+ "include": "#variable-root"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#unit"
+ },
+ {
+ "include": "#flag"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#semicolon"
+ },
+ {
+ "include": "#dotdotdot"
+ },
+ {
+ "begin": "@include|\\+(?!\\W|\\d)",
+ "end": "(?=\\n|\\()",
+ "name": "support.function.name.sass.library",
+ "captures": {
+ "0": {
+ "name": "keyword.control.at-rule.css.sass"
+ }
+ }
+ },
+ {
+ "begin": "^(@use)",
+ "end": "(?=\\n)",
+ "name": "sass.use",
+ "captures": {
+ "0": {
+ "name": "keyword.control.at-rule.css.sass.use"
+ }
+ },
+ "patterns": [
+ {
+ "match": "as|with",
+ "name": "support.type.css.sass"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#unit"
+ },
+ {
+ "include": "#variable-root"
+ },
+ {
+ "include": "#rgb-value"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#parenthesis-open"
+ },
+ {
+ "include": "#parenthesis-close"
+ },
+ {
+ "include": "#colon"
+ },
+ {
+ "include": "#import-quotes"
+ }
+ ]
+ },
+ {
+ "begin": "^@import(.*?)( as.*)?$",
+ "end": "(?=\\n)",
+ "name": "keyword.control.at-rule.use",
+ "captures": {
+ "1": {
+ "name": "constant.character.css.sass"
+ },
+ "2": {
+ "name": "invalid"
+ }
+ }
+ },
+ {
+ "begin": "@mixin|^[\\t ]*=|@function",
+ "end": "$\\n?|(?=\\()",
+ "name": "support.function.name.sass",
+ "captures": {
+ "0": {
+ "name": "keyword.control.at-rule.css.sass"
+ }
+ },
+ "patterns": [
+ {
+ "match": "[\\w-]+",
+ "name": "entity.name.function"
+ }
+ ]
+ },
+ {
+ "begin": "@",
+ "end": "$\\n?|\\s(?!(all|braille|embossed|handheld|print|projection|screen|speech|tty|tv|if|only|not)(\\s|,))",
+ "name": "keyword.control.at-rule.css.sass"
+ },
+ {
+ "begin": "(?<!\\-|\\()\\b(a|abbr|acronym|address|applet|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|label|legend|li|link|map|mark|menu|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video|main|svg|rect|ruby|center|circle|ellipse|line|polyline|polygon|path|text|u|slot)\\b(?!-|\\)|:\\s)|&",
+ "end": "$\\n?|(?=\\s|,|\\(|\\)|\\.|\\#|\\[|>|-|_)",
+ "name": "entity.name.tag.css.sass.symbol",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#pseudo-class"
+ }
+ ]
+ },
+ {
+ "begin": "#",
+ "end": "$\\n?|(?=\\s|,|\\(|\\)|\\.|\\[|>)",
+ "name": "entity.other.attribute-name.id.css.sass",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#pseudo-class"
+ }
+ ]
+ },
+ {
+ "begin": "\\.|(?<=&)(-|_)",
+ "end": "$\\n?|(?=\\s|,|\\(|\\)|\\[|>)",
+ "name": "entity.other.attribute-name.class.css.sass",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#pseudo-class"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]",
+ "name": "entity.other.attribute-selector.sass",
+ "patterns": [
+ {
+ "include": "#double-quoted"
+ },
+ {
+ "include": "#single-quoted"
+ },
+ {
+ "match": "\\^|\\$|\\*|~",
+ "name": "keyword.other.regex.sass"
+ }
+ ]
+ },
+ {
+ "match": "^((?<=\\]|\\)|not\\(|\\*|>|>\\s)|\n*):[a-z:-]+|(::|:-)[a-z:-]+",
+ "name": "entity.other.attribute-name.pseudo-class.css.sass"
+ },
+ {
+ "include": "#module"
+ },
+ {
+ "match": "[\\w-]*\\(",
+ "name": "entity.name.function"
+ },
+ {
+ "match": "\\)",
+ "name": "entity.name.function.close"
+ },
+ {
+ "begin": ":",
+ "end": "$\\n?|(?=\\s\\(|and\\(|\\),)",
+ "name": "meta.property-list.css.sass.prop",
+ "patterns": [
+ {
+ "match": "(?<=:)[a-z-]+\\s",
+ "name": "support.type.property-name.css.sass.prop.name"
+ },
+ {
+ "include": "#double-slash"
+ },
+ {
+ "include": "#double-quoted"
+ },
+ {
+ "include": "#single-quoted"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#curly-brackets"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#rgb-value"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#unit"
+ },
+ {
+ "include": "#module"
+ },
+ {
+ "match": "--.+?(?=\\))",
+ "name": "variable.css"
+ },
+ {
+ "match": "[\\w-]*\\(",
+ "name": "entity.name.function"
+ },
+ {
+ "match": "\\)",
+ "name": "entity.name.function.close"
+ },
+ {
+ "include": "#flag"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#semicolon"
+ },
+ {
+ "include": "#function"
+ },
+ {
+ "include": "#function-content"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#parent-selector"
+ },
+ {
+ "include": "#property-value"
+ }
+ ]
+ },
+ {
+ "include": "#rgb-value"
+ },
+ {
+ "include": "#function"
+ },
+ {
+ "include": "#function-content"
+ },
+ {
+ "begin": "(?<=})(?!\\n|\\(|\\)|[a-zA-Z0-9_-]+:)",
+ "end": "\\s|(?=,|\\.|\\[|\\)|\\n)",
+ "name": "entity.name.tag.css.sass",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#pseudo-class"
+ }
+ ]
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "match": "[a-z-]+((?=:|#{))",
+ "name": "support.type.property-name.css.sass.prop.name"
+ },
+ {
+ "include": "#reserved-words"
+ },
+ {
+ "include": "#property-value"
+ }
+ ],
+ "repository": {
+ "module": {
+ "match": "([\\w-]+?)(\\.)",
+ "name": "constant.character.module",
+ "captures": {
+ "1": {
+ "name": "constant.character.module.name"
+ },
+ "2": {
+ "name": "constant.numeric.module.dot"
+ }
+ }
+ },
+ "comma": {
+ "match": "\\band\\b|\\bor\\b|,",
+ "name": "comment.punctuation.comma.sass"
+ },
+ "comment-tag": {
+ "begin": "(?<={{)",
+ "end": "(?=}})",
+ "name": "comment.tag.sass"
+ },
+ "comment-param": {
+ "match": "\\@(\\w+)",
+ "name": "storage.type.class.jsdoc"
+ },
+ "curly-brackets": {
+ "match": "{|}",
+ "name": "invalid"
+ },
+ "dotdotdot": {
+ "match": "\\.\\.\\.",
+ "name": "variable.other"
+ },
+ "double-slash": {
+ "begin": "//",
+ "end": "$\\n?",
+ "name": "comment.line.sass",
+ "patterns": [
+ {
+ "include": "#comment-tag"
+ }
+ ]
+ },
+ "double-quoted": {
+ "begin": "\"",
+ "end": "\"",
+ "name": "string.quoted.double.css.sass",
+ "patterns": [
+ {
+ "include": "#quoted-interpolation"
+ }
+ ]
+ },
+ "flag": {
+ "match": "!(important|default|optional|global)",
+ "name": "keyword.other.important.css.sass"
+ },
+ "function": {
+ "match": "(?<=[\\s|\\(|,|:])(?!url|format|attr)[a-zA-Z0-9_-][\\w-]*(?=\\()",
+ "name": "support.function.name.sass"
+ },
+ "function-content": {
+ "begin": "(?<=url\\(|format\\(|attr\\()",
+ "end": ".(?=\\))",
+ "name": "string.quoted.double.css.sass"
+ },
+ "parenthesis-open": {
+ "match": "\\(",
+ "name": "entity.name.function.parenthesis.open"
+ },
+ "parenthesis-close": {
+ "match": "\\)",
+ "name": "entity.name.function.parenthesis.close"
+ },
+ "colon": {
+ "match": ":",
+ "name": "meta.property-list.css.sass.colon"
+ },
+ "interpolation": {
+ "begin": "#{",
+ "end": "}",
+ "name": "support.function.interpolation.sass",
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#unit"
+ },
+ {
+ "include": "#comma"
+ },
+ {
+ "include": "#double-quoted"
+ },
+ {
+ "include": "#single-quoted"
+ }
+ ]
+ },
+ "numeric": {
+ "match": "(-|\\.)?[0-9]+(\\.[0-9]+)?",
+ "name": "constant.numeric.css.sass"
+ },
+ "operator": {
+ "match": "\\+|\\s-\\s|\\s-(?=\\$)|(?<=\\()-(?=\\$)|\\s-(?=\\()|\\*|/|%|=|!|<|>|~",
+ "name": "keyword.operator.sass"
+ },
+ "parent-selector": {
+ "match": "&",
+ "name": "entity.name.tag.css.sass"
+ },
+ "placeholder-selector": {
+ "begin": "(?<!\\d)%(?!\\d)",
+ "end": "$\\n?|\\s",
+ "name": "entity.other.inherited-class.placeholder-selector.css.sass"
+ },
+ "property-value": {
+ "match": "[a-zA-Z0-9_-]+",
+ "name": "meta.property-value.css.sass support.constant.property-value.css.sass"
+ },
+ "pseudo-class": {
+ "match": ":[a-z:-]+",
+ "name": "entity.other.attribute-name.pseudo-class.css.sass"
+ },
+ "quoted-interpolation": {
+ "begin": "#{",
+ "end": "}",
+ "name": "support.function.interpolation.sass",
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#unit"
+ },
+ {
+ "include": "#comma"
+ }
+ ]
+ },
+ "reserved-words": {
+ "match": "\\b(false|from|in|not|null|through|to|true)\\b",
+ "name": "support.type.property-name.css.sass"
+ },
+ "rgb-value": {
+ "match": "(#)([0-9a-fA-F]{3,4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})\\b",
+ "name": "constant.language.color.rgb-value.css.sass"
+ },
+ "semicolon": {
+ "match": ";",
+ "name": "invalid"
+ },
+ "single-quoted": {
+ "begin": "'",
+ "end": "'",
+ "name": "string.quoted.single.css.sass",
+ "patterns": [
+ {
+ "include": "#quoted-interpolation"
+ }
+ ]
+ },
+ "unit": {
+ "match": "(?<=[\\d]|})(ch|cm|deg|dpcm|dpi|dppx|em|ex|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vw|fr|%)",
+ "name": "keyword.control.unit.css.sass"
+ },
+ "variable-root": {
+ "match": "\\$[a-zA-Z0-9_-]+",
+ "name": "variable.other.root"
+ },
+ "variable": {
+ "match": "\\$[a-zA-Z0-9_-]+",
+ "name": "variable.other.value"
+ },
+ "import-quotes": {
+ "match": "[\"']?\\.{0,2}[\\w/]+[\"']?",
+ "name": "constant.character.css.sass"
+ }
+ },
+ "scopeName": "source.sass"
+}
diff --git a/node_modules/shiki/languages/scala.tmLanguage.json b/node_modules/shiki/languages/scala.tmLanguage.json
new file mode 100644
index 0000000..930ba2d
--- /dev/null
+++ b/node_modules/shiki/languages/scala.tmLanguage.json
@@ -0,0 +1,1304 @@
+{
+ "fileTypes": ["scala"],
+ "firstLineMatch": "^#!/.*\\b\\w*scala\\b",
+ "foldingStartMarker": "/\\*\\*|\\{\\s*$",
+ "foldingStopMarker": "\\*\\*/|^\\s*\\}",
+ "keyEquivalent": "^~S",
+ "repository": {
+ "empty-parentheses": {
+ "match": "(\\(\\))",
+ "captures": {
+ "1": {
+ "name": "meta.bracket.scala"
+ }
+ },
+ "name": "meta.parentheses.scala"
+ },
+ "imports": {
+ "end": "(?<=[\\n;])",
+ "begin": "\\b(import)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.import.scala"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "\\b(given)\\b",
+ "name": "keyword.other.import.given.scala"
+ },
+ {
+ "match": "[A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?",
+ "name": "entity.name.class.import.scala"
+ },
+ {
+ "match": "(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))",
+ "name": "entity.name.import.scala"
+ },
+ {
+ "match": "\\.",
+ "name": "punctuation.definition.import"
+ },
+ {
+ "end": "}",
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.bracket.scala"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?x)(given\\s)?\\s*(?:([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)))\\s*(=>)\\s*(?:([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)))\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.other.import.given.scala"
+ },
+ "2": {
+ "name": "entity.name.class.import.renamed-from.scala"
+ },
+ "3": {
+ "name": "entity.name.import.renamed-from.scala"
+ },
+ "4": {
+ "name": "keyword.other.arrow.scala"
+ },
+ "5": {
+ "name": "entity.name.class.import.renamed-to.scala"
+ },
+ "6": {
+ "name": "entity.name.import.renamed-to.scala"
+ }
+ }
+ },
+ {
+ "match": "\\b(given)\\b",
+ "name": "keyword.other.import.given.scala"
+ },
+ {
+ "match": "(given\\s+)?(?:([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.import.given.scala"
+ },
+ "2": {
+ "name": "entity.name.class.import.scala"
+ },
+ "3": {
+ "name": "entity.name.import.scala"
+ }
+ }
+ }
+ ],
+ "endCaptures": {
+ "0": {
+ "name": "meta.bracket.scala"
+ }
+ },
+ "name": "meta.import.selector.scala"
+ }
+ ],
+ "name": "meta.import.scala"
+ },
+ "exports": {
+ "end": "(?<=[\\n;])",
+ "begin": "\\b(export)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.export.scala"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "\\b(given)\\b",
+ "name": "keyword.other.export.given.scala"
+ },
+ {
+ "match": "[A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?",
+ "name": "entity.name.class.export.scala"
+ },
+ {
+ "match": "(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))",
+ "name": "entity.name.export.scala"
+ },
+ {
+ "match": "\\.",
+ "name": "punctuation.definition.export"
+ },
+ {
+ "end": "}",
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.bracket.scala"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?x)(given\\s)?\\s*(?:([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)))\\s*(=>)\\s*(?:([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)))\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.other.export.given.scala"
+ },
+ "2": {
+ "name": "entity.name.class.export.renamed-from.scala"
+ },
+ "3": {
+ "name": "entity.name.export.renamed-from.scala"
+ },
+ "4": {
+ "name": "keyword.other.arrow.scala"
+ },
+ "5": {
+ "name": "entity.name.class.export.renamed-to.scala"
+ },
+ "6": {
+ "name": "entity.name.export.renamed-to.scala"
+ }
+ }
+ },
+ {
+ "match": "\\b(given)\\b",
+ "name": "keyword.other.export.given.scala"
+ },
+ {
+ "match": "(given\\s+)?(?:([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)|(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)))",
+ "captures": {
+ "1": {
+ "name": "keyword.other.export.given.scala"
+ },
+ "2": {
+ "name": "entity.name.class.export.scala"
+ },
+ "3": {
+ "name": "entity.name.export.scala"
+ }
+ }
+ }
+ ],
+ "endCaptures": {
+ "0": {
+ "name": "meta.bracket.scala"
+ }
+ },
+ "name": "meta.export.selector.scala"
+ }
+ ],
+ "name": "meta.export.scala"
+ },
+ "constants": {
+ "patterns": [
+ {
+ "match": "\\b(false|null|true)\\b",
+ "name": "constant.language.scala"
+ },
+ {
+ "match": "\\b(0[xX][0-9a-fA-F_]*)\\b",
+ "name": "constant.numeric.scala"
+ },
+ {
+ "match": "\\b(([0-9][0-9_]*(\\.[0-9][0-9_]*)?)([eE](\\+|-)?[0-9][0-9_]*)?|[0-9][0-9_]*)[LlFfDd]?\\b",
+ "name": "constant.numeric.scala"
+ },
+ {
+ "match": "(\\.[0-9][0-9_]*)([eE](\\+|-)?[0-9][0-9_]*)?[LlFfDd]?\\b",
+ "name": "constant.numeric.scala"
+ },
+ {
+ "match": "\\b(this|super)\\b",
+ "name": "variable.language.scala"
+ }
+ ]
+ },
+ "script-header": {
+ "match": "^#!(.*)$",
+ "captures": {
+ "1": {
+ "name": "string.unquoted.shebang.scala"
+ }
+ },
+ "name": "comment.block.shebang.scala"
+ },
+ "code": {
+ "patterns": [
+ {
+ "include": "#using-directive"
+ },
+ {
+ "include": "#script-header"
+ },
+ {
+ "include": "#storage-modifiers"
+ },
+ {
+ "include": "#declarations"
+ },
+ {
+ "include": "#inheritance"
+ },
+ {
+ "include": "#extension"
+ },
+ {
+ "include": "#imports"
+ },
+ {
+ "include": "#exports"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#initialization"
+ },
+ {
+ "include": "#xml-literal"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#using"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#singleton-type"
+ },
+ {
+ "include": "#inline"
+ },
+ {
+ "include": "#scala-quoted-or-symbol"
+ },
+ {
+ "include": "#char-literal"
+ },
+ {
+ "include": "#empty-parentheses"
+ },
+ {
+ "include": "#parameter-list"
+ },
+ {
+ "include": "#qualifiedClassName"
+ },
+ {
+ "include": "#backQuotedVariable"
+ },
+ {
+ "include": "#curly-braces"
+ },
+ {
+ "include": "#meta-brackets"
+ },
+ {
+ "include": "#meta-bounds"
+ },
+ {
+ "include": "#meta-colons"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "end": "\"\"\"(?!\")",
+ "begin": "\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.scala"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\\\\\\\|\\\\u[0-9A-Fa-f]{4}",
+ "name": "constant.character.escape.scala"
+ }
+ ],
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.scala"
+ }
+ },
+ "name": "string.quoted.triple.scala"
+ },
+ {
+ "begin": "\\b(raw)(\"\"\")",
+ "end": "(\"\"\")(?!\")|\\$\n|(\\$[^\\$\"_{A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.interpolation.scala"
+ },
+ "2": {
+ "name": "string.quoted.triple.interpolated.scala punctuation.definition.string.begin.scala"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\$[\\$\"]",
+ "name": "constant.character.escape.scala"
+ },
+ {
+ "include": "#string-interpolation"
+ },
+ {
+ "match": ".",
+ "name": "string.quoted.triple.interpolated.scala"
+ }
+ ],
+ "endCaptures": {
+ "1": {
+ "name": "string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala"
+ },
+ "2": {
+ "name": "invalid.illegal.unrecognized-string-escape.scala"
+ }
+ }
+ },
+ {
+ "begin": "\\b((?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?))(\"\"\")",
+ "end": "(\"\"\")(?!\")|\\$\n|(\\$[^\\$\"_{A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.interpolation.scala"
+ },
+ "2": {
+ "name": "string.quoted.triple.interpolated.scala punctuation.definition.string.begin.scala"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-interpolation"
+ },
+ {
+ "match": "\\\\\\\\|\\\\u[0-9A-Fa-f]{4}",
+ "name": "constant.character.escape.scala"
+ },
+ {
+ "match": ".",
+ "name": "string.quoted.triple.interpolated.scala"
+ }
+ ],
+ "endCaptures": {
+ "1": {
+ "name": "string.quoted.triple.interpolated.scala punctuation.definition.string.end.scala"
+ },
+ "2": {
+ "name": "invalid.illegal.unrecognized-string-escape.scala"
+ }
+ }
+ },
+ {
+ "end": "\"",
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.scala"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\\\(?:[btnfr\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})",
+ "name": "constant.character.escape.scala"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unrecognized-string-escape.scala"
+ }
+ ],
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.scala"
+ }
+ },
+ "name": "string.quoted.double.scala"
+ },
+ {
+ "begin": "\\b(raw)(\")",
+ "end": "(\")|\\$\n|(\\$[^\\$\"_{A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.interpolation.scala"
+ },
+ "2": {
+ "name": "string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\$[\\$\"]",
+ "name": "constant.character.escape.scala"
+ },
+ {
+ "include": "#string-interpolation"
+ },
+ {
+ "match": ".",
+ "name": "string.quoted.double.interpolated.scala"
+ }
+ ],
+ "endCaptures": {
+ "1": {
+ "name": "string.quoted.double.interpolated.scala punctuation.definition.string.end.scala"
+ },
+ "2": {
+ "name": "invalid.illegal.unrecognized-string-escape.scala"
+ }
+ }
+ },
+ {
+ "begin": "\\b((?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?))(\")",
+ "end": "(\")|\\$\n|(\\$[^\\$\"_{A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.interpolation.scala"
+ },
+ "2": {
+ "name": "string.quoted.double.interpolated.scala punctuation.definition.string.begin.scala"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\$[\\$\"]",
+ "name": "constant.character.escape.scala"
+ },
+ {
+ "include": "#string-interpolation"
+ },
+ {
+ "match": "\\\\(?:[btnfr\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})",
+ "name": "constant.character.escape.scala"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unrecognized-string-escape.scala"
+ },
+ {
+ "match": ".",
+ "name": "string.quoted.double.interpolated.scala"
+ }
+ ],
+ "endCaptures": {
+ "1": {
+ "name": "string.quoted.double.interpolated.scala punctuation.definition.string.end.scala"
+ },
+ "2": {
+ "name": "invalid.illegal.unrecognized-string-escape.scala"
+ }
+ }
+ }
+ ]
+ },
+ "using": {
+ "patterns": [
+ {
+ "match": "(?<=\\()\\s*(using)\\s",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.scala"
+ }
+ }
+ }
+ ]
+ },
+ "string-interpolation": {
+ "patterns": [
+ {
+ "name": "constant.character.escape.interpolation.scala",
+ "match": "\\$\\$"
+ },
+ {
+ "name": "meta.template.expression.scala",
+ "match": "(\\$)([A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\p{Lo}\\p{Nl}\\p{Ll}0-9]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.template-expression.begin.scala"
+ }
+ }
+ },
+ {
+ "name": "meta.template.expression.scala",
+ "begin": "\\$\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.begin.scala"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.end.scala"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ],
+ "contentName": "meta.embedded.line.scala"
+ }
+ ]
+ },
+ "xml-entity": {
+ "match": "(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.xml"
+ },
+ "3": {
+ "name": "punctuation.definition.constant.xml"
+ }
+ },
+ "name": "constant.character.entity.xml"
+ },
+ "xml-singlequotedString": {
+ "end": "'",
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.xml"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#xml-entity"
+ }
+ ],
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.xml"
+ }
+ },
+ "name": "string.quoted.single.xml"
+ },
+ "meta-colons": {
+ "patterns": [
+ {
+ "match": "(?<!:):(?!:)",
+ "name": "meta.colon.scala"
+ }
+ ],
+ "comment": "For themes: Matching type colons"
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "match": "\\b(return|throw)\\b",
+ "name": "keyword.control.flow.jump.scala"
+ },
+ {
+ "match": "\\b(classOf|isInstanceOf|asInstanceOf)\\b",
+ "name": "support.function.type-of.scala"
+ },
+ {
+ "match": "\\b(else|if|then|do|while|for|yield|match|case)\\b",
+ "name": "keyword.control.flow.scala"
+ },
+ {
+ "match": "^\\s*(end)\\s+(if|while|for|match)(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)",
+ "name": "keyword.control.flow.end.scala"
+ },
+ {
+ "match": "^\\s*(end)\\s+(val)(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)",
+ "name": "keyword.declaration.stable.end.scala"
+ },
+ {
+ "match": "^\\s*(end)\\s+(var)(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)",
+ "name": "keyword.declaration.volatile.end.scala"
+ },
+ {
+ "match": "^\\s*(end)\\s+(?:(new|extension)|([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?))(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.end.scala"
+ },
+ "2": {
+ "name": "keyword.declaration.end.scala"
+ },
+ "3": {
+ "name": "entity.name.type.declaration"
+ }
+ }
+ },
+ {
+ "match": "\\b(catch|finally|try)\\b",
+ "name": "keyword.control.exception.scala"
+ },
+ {
+ "match": "^\\s*(end)\\s+(try)(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)",
+ "name": "keyword.control.exception.end.scala"
+ },
+ {
+ "match": "^\\s*(end)\\s+(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))?(?=\\s*(//.*|/\\*(?!.*\\*/\\s*\\S.*).*)?$)",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.end.scala"
+ },
+ "2": {
+ "name": "entity.name.declaration"
+ }
+ }
+ },
+ {
+ "match": "(==?|!=|<=|>=|<>|<|>)",
+ "name": "keyword.operator.comparison.scala"
+ },
+ {
+ "match": "(\\-|\\+|\\*|/(?![/*])|%|~)",
+ "name": "keyword.operator.arithmetic.scala"
+ },
+ {
+ "match": "(?<![!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]|_)(!|&&|\\|\\|)(?![!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}])",
+ "name": "keyword.operator.logical.scala"
+ },
+ {
+ "match": "(<-|←|->|→|=>|⇒|\\?|\\:+|@|\\|)+",
+ "name": "keyword.operator.scala"
+ }
+ ]
+ },
+ "singleton-type": {
+ "match": "\\.(type)(?![A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[0-9])",
+ "captures": {
+ "1": {
+ "name": "keyword.type.scala"
+ }
+ }
+ },
+ "inline": {
+ "patterns": [
+ {
+ "match": "\\b(inline)(?=\\s+((?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`)\\s*:)",
+ "name": "storage.modifier.other"
+ },
+ {
+ "match": "\\b(inline)\\b(?=(?:.(?!\\b(?:val|def|given)\\b))*\\b(if|match)\\b)",
+ "name": "keyword.control.flow.scala"
+ }
+ ]
+ },
+ "scala-quoted-or-symbol": {
+ "patterns": [
+ {
+ "match": "(')((?>(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)))(?!')",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.staging.scala constant.other.symbol.scala"
+ },
+ "2": {
+ "name": "constant.other.symbol.scala"
+ }
+ }
+ },
+ {
+ "match": "'(?=\\s*\\{(?!'))",
+ "name": "keyword.control.flow.staging.scala"
+ },
+ {
+ "match": "'(?=\\s*\\[(?!'))",
+ "name": "keyword.control.flow.staging.scala"
+ },
+ {
+ "match": "\\$(?=\\s*\\{)",
+ "name": "keyword.control.flow.staging.scala"
+ }
+ ]
+ },
+ "xml-doublequotedString": {
+ "end": "\"",
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.xml"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#xml-entity"
+ }
+ ],
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.xml"
+ }
+ },
+ "name": "string.quoted.double.xml"
+ },
+ "declarations": {
+ "patterns": [
+ {
+ "match": "\\b(def)\\b\\s*(?!//|/\\*)((?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))?",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.scala"
+ },
+ "2": {
+ "name": "entity.name.function.declaration"
+ }
+ }
+ },
+ {
+ "match": "\\b(trait)\\b\\s*(?!//|/\\*)((?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))?",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.scala"
+ },
+ "2": {
+ "name": "entity.name.class.declaration"
+ }
+ }
+ },
+ {
+ "match": "\\b(?:(case)\\s+)?(class|object|enum)\\b\\s*(?!//|/\\*)((?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))?",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.scala"
+ },
+ "2": {
+ "name": "keyword.declaration.scala"
+ },
+ "3": {
+ "name": "entity.name.class.declaration"
+ }
+ }
+ },
+ {
+ "match": "(?<!\\.)\\b(type)\\b\\s*(?!//|/\\*)((?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))?",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.scala"
+ },
+ "2": {
+ "name": "entity.name.type.declaration"
+ }
+ }
+ },
+ {
+ "match": "\\b(?:(val)|(var))\\b\\s*(?!//|/\\*)(?=(?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`)?\\()",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.stable.scala"
+ },
+ "2": {
+ "name": "keyword.declaration.volatile.scala"
+ }
+ }
+ },
+ {
+ "match": "\\b(val)\\b\\s*(?!//|/\\*)((?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`)(?:\\s*,\\s*(?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))*)?",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.stable.scala"
+ },
+ "2": {
+ "name": "variable.stable.declaration.scala"
+ }
+ }
+ },
+ {
+ "match": "\\b(var)\\b\\s*(?!//|/\\*)((?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`)(?:\\s*,\\s*(?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))*)?",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.volatile.scala"
+ },
+ "2": {
+ "name": "variable.volatile.declaration.scala"
+ }
+ }
+ },
+ {
+ "match": "\\b(package)\\s+(object)\\b\\s*(?!//|/\\*)((?:(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)|`[^`]+`))?",
+ "captures": {
+ "1": {
+ "name": "keyword.other.scoping.scala"
+ },
+ "2": {
+ "name": "keyword.declaration.scala"
+ },
+ "3": {
+ "name": "entity.name.class.declaration"
+ }
+ }
+ },
+ {
+ "end": "(?<=[\\n;])",
+ "begin": "\\b(package)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.import.scala"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "(`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))",
+ "name": "entity.name.package.scala"
+ },
+ {
+ "match": "\\.",
+ "name": "punctuation.definition.package"
+ }
+ ],
+ "name": "meta.package.scala"
+ },
+ {
+ "match": "\\b(given)\\b\\s*([_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|`[^`]+`)?",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.scala"
+ },
+ "2": {
+ "name": "entity.name.given.declaration"
+ }
+ }
+ }
+ ]
+ },
+ "char-literal": {
+ "end": "'|$",
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.character.begin.scala"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\\\(?:[btnfr\\\\\"']|[0-7]{1,3}|u[0-9A-Fa-f]{4})",
+ "name": "constant.character.escape.scala"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.unrecognized-character-escape.scala"
+ },
+ {
+ "match": "[^']{2,}",
+ "name": "invalid.illegal.character-literal-too-long"
+ },
+ {
+ "match": "(?<!')[^']",
+ "name": "invalid.illegal.character-literal-too-long"
+ }
+ ],
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.character.end.scala"
+ }
+ },
+ "name": "string.quoted.other constant.character.literal.scala"
+ },
+ "initialization": {
+ "match": "\\b(new)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.scala"
+ }
+ }
+ },
+ "curly-braces": {
+ "begin": "\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.block.begin.scala"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.block.end.scala"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ]
+ },
+ "meta-brackets": {
+ "patterns": [
+ {
+ "match": "\\{",
+ "comment": "The punctuation.section.*.begin is needed for return snippet in source bundle",
+ "name": "punctuation.section.block.begin.scala"
+ },
+ {
+ "match": "\\}",
+ "comment": "The punctuation.section.*.end is needed for return snippet in source bundle",
+ "name": "punctuation.section.block.end.scala"
+ },
+ {
+ "match": "{|}|\\(|\\)|\\[|\\]",
+ "name": "meta.bracket.scala"
+ }
+ ],
+ "comment": "For themes: Brackets look nice when colored."
+ },
+ "qualifiedClassName": {
+ "match": "(\\b([A-Z][\\w]*)(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)",
+ "captures": {
+ "1": {
+ "name": "entity.name.class"
+ }
+ }
+ },
+ "backQuotedVariable": {
+ "match": "`[^`]+`"
+ },
+ "storage-modifiers": {
+ "patterns": [
+ {
+ "match": "\\b(private\\[\\S+\\]|protected\\[\\S+\\]|private|protected)\\b",
+ "name": "storage.modifier.access"
+ },
+ {
+ "match": "\\b(synchronized|@volatile|abstract|final|lazy|sealed|implicit|override|@transient|@native)\\b",
+ "name": "storage.modifier.other"
+ },
+ {
+ "match": "(?<=^|\\s)\\b(transparent|opaque|infix|open|inline)\\b(?=[a-z\\s]*\\b(def|val|var|given|type|class|trait|object|enum)\\b)",
+ "name": "storage.modifier.other"
+ }
+ ]
+ },
+ "meta-bounds": {
+ "match": "<%|=:=|<:<|<%<|>:|<:",
+ "comment": "For themes: Matching view bounds",
+ "name": "meta.bounds.scala"
+ },
+ "using-directive": {
+ "end": "\\n",
+ "begin": "^\\s*(//>)\\s*(using)[^\\S\\n]+",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.scala"
+ },
+ "2": {
+ "name": "keyword.other.import.scala"
+ }
+ },
+ "patterns": [
+ {
+ "match": "[A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|`[^`]+`|(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)",
+ "name": "entity.name.import.scala"
+ },
+ {
+ "match": "\\.",
+ "name": "punctuation.definition.import"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#constants"
+ }
+ ],
+ "name": "comment.line.shebang.scala"
+ },
+ "comments": {
+ "patterns": [
+ {
+ "include": "#block-comments"
+ },
+ {
+ "end": "(?!\\G)",
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.scala"
+ }
+ },
+ "patterns": [
+ {
+ "end": "\\n",
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.scala"
+ }
+ },
+ "name": "comment.line.double-slash.scala"
+ }
+ ]
+ }
+ ]
+ },
+ "block-comments": {
+ "patterns": [
+ {
+ "match": "/\\*\\*/",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.scala"
+ }
+ },
+ "name": "comment.block.empty.scala"
+ },
+ {
+ "end": "\\*/",
+ "begin": "^\\s*(/\\*\\*)(?!/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.scala"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(@param)\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.documentation.scaladoc.scala"
+ },
+ "2": {
+ "name": "variable.parameter.scala"
+ }
+ }
+ },
+ {
+ "match": "(@(?:tparam|throws))\\s+(\\S+)",
+ "captures": {
+ "1": {
+ "name": "keyword.other.documentation.scaladoc.scala"
+ },
+ "2": {
+ "name": "entity.name.class"
+ }
+ }
+ },
+ {
+ "match": "@(return|see|note|example|constructor|usecase|author|version|since|todo|deprecated|migration|define|inheritdoc)\\b",
+ "name": "keyword.other.documentation.scaladoc.scala"
+ },
+ {
+ "match": "(\\[\\[)([^\\]]+)(\\]\\])",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.documentation.link.scala"
+ },
+ "2": {
+ "name": "string.other.link.title.markdown"
+ },
+ "3": {
+ "name": "punctuation.definition.documentation.link.scala"
+ }
+ }
+ },
+ {
+ "include": "#block-comments"
+ }
+ ],
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.scala"
+ }
+ },
+ "name": "comment.block.documentation.scala"
+ },
+ {
+ "end": "\\*/",
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.scala"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#block-comments"
+ }
+ ],
+ "name": "comment.block.scala"
+ }
+ ]
+ },
+ "xml-embedded-content": {
+ "patterns": [
+ {
+ "end": "}",
+ "begin": "{",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ],
+ "captures": {
+ "0": {
+ "name": "meta.bracket.scala"
+ }
+ },
+ "name": "meta.source.embedded.scala"
+ },
+ {
+ "match": " (?:([-_a-zA-Z0-9]+)((:)))?([_a-zA-Z-]+)=",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.namespace.xml"
+ },
+ "2": {
+ "name": "entity.other.attribute-name.xml"
+ },
+ "3": {
+ "name": "punctuation.separator.namespace.xml"
+ },
+ "4": {
+ "name": "entity.other.attribute-name.localname.xml"
+ }
+ }
+ },
+ {
+ "include": "#xml-doublequotedString"
+ },
+ {
+ "include": "#xml-singlequotedString"
+ }
+ ]
+ },
+ "inheritance": {
+ "patterns": [
+ {
+ "match": "\\b(extends|with|derives)\\b\\s*([A-Z\\p{Lt}\\p{Lu}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|`[^`]+`|(?=\\([^\\)]+=>)|(?=(?:[A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?|[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+))|(?=\"))?",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.scala"
+ },
+ "2": {
+ "name": "entity.name.class"
+ }
+ }
+ }
+ ]
+ },
+ "extension": {
+ "patterns": [
+ {
+ "match": "^\\s*(extension)\\s+(?=[\\[\\(])",
+ "captures": {
+ "1": {
+ "name": "keyword.declaration.scala"
+ }
+ }
+ }
+ ]
+ },
+ "parameter-list": {
+ "patterns": [
+ {
+ "match": "(?<=[^\\._$a-zA-Z0-9])(`[^`]+`|[_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}][A-Z\\p{Lt}\\p{Lu}_a-z\\$\\p{Lo}\\p{Nl}\\p{Ll}0-9]*(?:(?<=_)[!#%&*+\\-\\/:<>=?@^|~\\p{Sm}\\p{So}]+)?)\\s*(:)\\s+",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.scala"
+ },
+ "2": {
+ "name": "meta.colon.scala"
+ }
+ }
+ }
+ ]
+ },
+ "xml-literal": {
+ "patterns": [
+ {
+ "end": "(>(<))/(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]*[_a-zA-Z0-9])(>)",
+ "begin": "(<)((?:([_a-zA-Z0-9][_a-zA-Z0-9]*)((:)))?([_a-zA-Z0-9][-_a-zA-Z0-9:]*))(?=(\\s[^>]*)?></\\2>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "3": {
+ "name": "entity.name.tag.namespace.xml"
+ },
+ "4": {
+ "name": "entity.name.tag.xml"
+ },
+ "5": {
+ "name": "punctuation.separator.namespace.xml"
+ },
+ "6": {
+ "name": "entity.name.tag.localname.xml"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#xml-embedded-content"
+ }
+ ],
+ "comment": "We do not allow a tag name to start with a - since this would likely conflict with the <- operator. This is not very common for tag names anyway. Also code such as -- if (val <val2 || val> val3) will falsly be recognized as an xml tag. The solution is to put a space on either side of the comparison operator",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "meta.scope.between-tag-pair.xml"
+ },
+ "3": {
+ "name": "entity.name.tag.namespace.xml"
+ },
+ "4": {
+ "name": "entity.name.tag.xml"
+ },
+ "5": {
+ "name": "punctuation.separator.namespace.xml"
+ },
+ "6": {
+ "name": "entity.name.tag.localname.xml"
+ },
+ "7": {
+ "name": "punctuation.definition.tag.xml"
+ }
+ },
+ "name": "meta.tag.no-content.xml"
+ },
+ {
+ "end": "(/?>)",
+ "begin": "(</?)(?:([_a-zA-Z0-9][-_a-zA-Z0-9]*)((:)))?([_a-zA-Z0-9][-_a-zA-Z0-9:]*)(?=[^>]*?>)",
+ "patterns": [
+ {
+ "include": "#xml-embedded-content"
+ }
+ ],
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "entity.name.tag.namespace.xml"
+ },
+ "3": {
+ "name": "entity.name.tag.xml"
+ },
+ "4": {
+ "name": "punctuation.separator.namespace.xml"
+ },
+ "5": {
+ "name": "entity.name.tag.localname.xml"
+ }
+ },
+ "name": "meta.tag.xml"
+ },
+ {
+ "include": "#xml-entity"
+ }
+ ]
+ }
+ },
+ "uuid": "158C0929-299A-40C8-8D89-316BE0C446E8",
+ "patterns": [
+ {
+ "include": "#code"
+ }
+ ],
+ "name": "scala",
+ "scopeName": "source.scala"
+}
diff --git a/node_modules/shiki/languages/scheme.tmLanguage.json b/node_modules/shiki/languages/scheme.tmLanguage.json
new file mode 100644
index 0000000..a56273e
--- /dev/null
+++ b/node_modules/shiki/languages/scheme.tmLanguage.json
@@ -0,0 +1,381 @@
+{
+ "comment": "\n\t\tThe foldings do not currently work the way I want them to. This\n\t\tmay be a limitation of the way they are applied rather than the\n\t\tregexps in use. Nonetheless, the foldings will end on the last\n\t\tidentically indented blank line following an s-expression. Not\n\t\tideal perhaps, but it works. Also, the #illegal pattern never\n\t\tmatches an unpaired ( as being illegal. Why?! -- Rob Rix\n\t\t\n\t\tOk, hopefully this grammar works better on quoted stuff now. It\n\t\tmay break for fancy macros, but should generally work pretty\n\t\tsmoothly. -- Jacob Rus\n\t\t\n\t\tI have attempted to get this under control but because of the way folding\n\t\tand indentation interact in Textmate, I am not sure if it is possible. In the\n\t\tmeantime, I have implemented Python-style folding anchored at newlines.\n\t\tAdditionally, I have made some minor improvements to the numeric constant\n\t\thighlighting. Next up is square bracket expressions, I guess, but that\n\t\tshould be trivial. -- ozy`\n\t",
+ "fileTypes": ["scm", "ss", "sch", "rkt"],
+ "keyEquivalent": "^~S",
+ "name": "scheme",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#block-comment"
+ },
+ {
+ "include": "#sexp"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#language-functions"
+ },
+ {
+ "include": "#quote"
+ },
+ {
+ "include": "#illegal"
+ }
+ ],
+ "repository": {
+ "comment": {
+ "begin": "(^[ \\t]+)?(?=;)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.scheme"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": ";",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.scheme"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.semicolon.scheme"
+ }
+ ]
+ },
+ "block-comment": {
+ "begin": "\\#\\|",
+ "contentName": "comment",
+ "end": "\\|\\#",
+ "name": "comment",
+ "patterns": [
+ {
+ "include": "#block-comment",
+ "name": "comment"
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "match": "#[t|f]",
+ "name": "constant.language.boolean.scheme"
+ },
+ {
+ "match": "(?<=[\\(\\s])((#e|#i)?[0-9]+(\\.[0-9]+)?|(#x)[0-9a-fA-F]+|(#o)[0-7]+|(#b)[01]+)(?=[\\s;()'\",\\[\\]])",
+ "name": "constant.numeric.scheme"
+ }
+ ]
+ },
+ "illegal": {
+ "match": "[()\\[\\]]",
+ "name": "invalid.illegal.parenthesis.scheme"
+ },
+ "language-functions": {
+ "patterns": [
+ {
+ "match": "(?x)\n\t\t\t\t\t\t(?<=(\\s|\\(|\\[)) # preceded by space or ( \n\t\t\t\t\t\t( do|or|and|else|quasiquote|begin|if|case|set!|\n\t\t\t\t\t\t cond|let|unquote|define|let\\*|unquote-splicing|delay|\n\t\t\t\t\t\t letrec)\n\t\t\t\t\t\t(?=(\\s|\\())",
+ "name": "keyword.control.scheme"
+ },
+ {
+ "comment": "\n\t\t\t\t\t\tThese functions run a test, and return a boolean\n\t\t\t\t\t\tanswer.\n\t\t\t\t\t",
+ "match": "(?x)\n\t\t\t\t\t\t(?<=(\\s|\\()) # preceded by space or (\n\t\t\t\t\t\t( char-alphabetic|char-lower-case|char-numeric|\n\t\t\t\t\t\t char-ready|char-upper-case|char-whitespace|\n\t\t\t\t\t\t (?:char|string)(?:-ci)?(?:=|<=?|>=?)|\n\t\t\t\t\t\t atom|boolean|bound-identifier=|char|complex|\n\t\t\t\t\t\t identifier|integer|symbol|free-identifier=|inexact|\n\t\t\t\t\t\t eof-object|exact|list|(?:input|output)-port|pair|\n\t\t\t\t\t\t real|rational|zero|vector|negative|odd|null|string|\n\t\t\t\t\t\t eq|equal|eqv|even|number|positive|procedure\n\t\t\t\t\t\t)\n\t\t\t\t\t\t(\\?)\t\t# name ends with ? sign\n\t\t\t\t\t\t(?=(\\s|\\()) # followed by space or (\n\t\t\t\t\t",
+ "name": "support.function.boolean-test.scheme"
+ },
+ {
+ "comment": "\n\t\t\t\t\t\tThese functions change one type into another.\n\t\t\t\t\t",
+ "match": "(?x)\n\t\t\t\t\t\t(?<=(\\s|\\()) # preceded by space or (\n\t\t\t\t\t\t( char->integer|exact->inexact|inexact->exact|\n\t\t\t\t\t\t integer->char|symbol->string|list->vector|\n\t\t\t\t\t\t list->string|identifier->symbol|vector->list|\n\t\t\t\t\t\t string->list|string->number|string->symbol|\n\t\t\t\t\t\t number->string\n\t\t\t\t\t\t)\n\t\t\t\t\t\t(?=(\\s|\\()) # followed by space or (\t\t\t\t\t\n\t\t\t\t\t",
+ "name": "support.function.convert-type.scheme"
+ },
+ {
+ "comment": "\n\t\t\t\t\t\tThese functions are potentially dangerous because\n\t\t\t\t\t\tthey have side-effects which could affect other\n\t\t\t\t\t\tparts of the program.\n\t\t\t\t\t",
+ "match": "(?x)\n\t\t\t\t\t\t(?<=(\\s|\\()) # preceded by space or (\n\t\t\t\t\t\t( set-(?:car|cdr)|\t\t\t\t # set car/cdr\n\t\t\t\t\t\t (?:vector|string)-(?:fill|set) # fill/set string/vector\n\t\t\t\t\t\t)\n\t\t\t\t\t\t(!)\t\t\t# name ends with ! sign\n\t\t\t\t\t\t(?=(\\s|\\()) # followed by space or (\n\t\t\t\t\t",
+ "name": "support.function.with-side-effects.scheme"
+ },
+ {
+ "comment": "\n\t\t\t\t\t\t+, -, *, /, =, >, etc. \n\t\t\t\t\t",
+ "match": "(?x)\n\t\t\t\t\t\t(?<=(\\s|\\()) # preceded by space or (\n\t\t\t\t\t\t( >=?|<=?|=|[*/+-])\n\t\t\t\t\t\t(?=(\\s|\\()) # followed by space or (\n\t\t\t\t\t\t",
+ "name": "keyword.operator.arithmetic.scheme"
+ },
+ {
+ "match": "(?x)\n\t\t\t\t\t\t(?<=(\\s|\\()) # preceded by space or (\n\t\t\t\t\t\t( append|apply|approximate|\n\t\t\t\t\t\t call-with-current-continuation|call/cc|catch|\n\t\t\t\t\t\t construct-identifier|define-syntax|display|foo|\n\t\t\t\t\t\t for-each|force|format|cd|gen-counter|gen-loser|\n\t\t\t\t\t\t generate-identifier|last-pair|length|let-syntax|\n\t\t\t\t\t\t letrec-syntax|list|list-ref|list-tail|load|log|\n\t\t\t\t\t\t macro|magnitude|map|map-streams|max|member|memq|\n\t\t\t\t\t\t memv|min|newline|nil|not|peek-char|rationalize|\n\t\t\t\t\t\t read|read-char|return|reverse|sequence|substring|\n\t\t\t\t\t\t syntax|syntax-rules|transcript-off|transcript-on|\n\t\t\t\t\t\t truncate|unwrap-syntax|values-list|write|write-char|\n\t\t\t\t\t\t \n\t\t\t\t\t\t # cons, car, cdr, etc\n\t\t\t\t\t\t cons|c(a|d){1,4}r| \n \n\t\t\t\t\t\t # unary math operators\n\t\t\t\t\t\t abs|acos|angle|asin|assoc|assq|assv|atan|ceiling|\n\t\t\t\t\t\t cos|floor|round|sin|sqrt|tan|\n\t\t\t\t\t\t (?:real|imag)-part|numerator|denominator\n \n\t\t\t\t\t\t # other math operators\n\t\t\t\t\t\t modulo|exp|expt|remainder|quotient|lcm|\n \n\t\t\t\t\t\t # ports / files\n\t\t\t\t\t\t call-with-(?:input|output)-file|\n\t\t\t\t\t\t (?:close|current)-(?:input|output)-port|\n\t\t\t\t\t\t with-(?:input|output)-from-file|\n\t\t\t\t\t\t open-(?:input|output)-file|\n\t\t\t\t\t\t \n\t\t\t\t\t\t # char-«foo»\n\t\t\t\t\t\t char-(?:downcase|upcase|ready)|\n\t\t\t\t\t\t \n\t\t\t\t\t\t # make-«foo»\n\t\t\t\t\t\t make-(?:polar|promise|rectangular|string|vector)\n\t\t\t\t\t\t \n\t\t\t\t\t\t # string-«foo», vector-«foo»\n\t\t\t\t\t\t string(?:-(?:append|copy|length|ref))?|\n\t\t\t\t\t\t vector(?:-length|-ref)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t(?=(\\s|\\()) # followed by space or (\n\t\t\t\t\t",
+ "name": "support.function.general.scheme"
+ }
+ ]
+ },
+ "quote": {
+ "comment": "\n\t\t\t\tWe need to be able to quote any kind of item, which creates\n\t\t\t\ta tiny bit of complexity in our grammar. It is hopefully\n\t\t\t\tnot overwhelming complexity.\n\t\t\t\t\n\t\t\t\tNote: the first two matches are special cases. quoted\n\t\t\t\tsymbols, and quoted empty lists are considered constant.other\n\t\t\t\t\n\t\t\t",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.quoted.symbol.scheme"
+ }
+ },
+ "match": "(?x)\n\t\t\t\t\t\t(')\\s*\n\t\t\t\t\t\t([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*)\n\t\t\t\t\t",
+ "name": "constant.other.symbol.scheme"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.quoted.empty-list.scheme"
+ },
+ "2": {
+ "name": "meta.expression.scheme"
+ },
+ "3": {
+ "name": "punctuation.section.expression.begin.scheme"
+ },
+ "4": {
+ "name": "punctuation.section.expression.end.scheme"
+ }
+ },
+ "match": "(?x)\n\t\t\t\t\t\t(')\\s*\n\t\t\t\t\t\t((\\()\\s*(\\)))\n\t\t\t\t\t",
+ "name": "constant.other.empty-list.schem"
+ },
+ {
+ "begin": "(')\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.quoted.scheme"
+ }
+ },
+ "comment": "quoted double-quoted string or s-expression",
+ "end": "(?=[\\s()])|(?<=\\n)",
+ "name": "string.other.quoted-object.scheme",
+ "patterns": [
+ {
+ "include": "#quoted"
+ }
+ ]
+ }
+ ]
+ },
+ "quote-sexp": {
+ "begin": "(?<=\\()\\s*(quote)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.quote.scheme"
+ }
+ },
+ "comment": "\n\t\t\t\tSomething quoted with (quote «thing»). In this case «thing»\n\t\t\t\twill not be evaluated, so we are considering it a string.\n\t\t\t",
+ "contentName": "string.other.quote.scheme",
+ "end": "(?=[\\s)])|(?<=\\n)",
+ "patterns": [
+ {
+ "include": "#quoted"
+ }
+ ]
+ },
+ "quoted": {
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.expression.begin.scheme"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.expression.end.scheme"
+ }
+ },
+ "name": "meta.expression.scheme",
+ "patterns": [
+ {
+ "include": "#quoted"
+ }
+ ]
+ },
+ {
+ "include": "#quote"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ "sexp": {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.expression.begin.scheme"
+ }
+ },
+ "end": "(\\))(\\n)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.expression.end.scheme"
+ },
+ "2": {
+ "name": "meta.after-expression.scheme"
+ }
+ },
+ "name": "meta.expression.scheme",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t(?<=\\() # preceded by (\n\t\t\t\t\t\t(define)\\s+ # define\n\t\t\t\t\t\t(\\() # list of parameters\n\t\t\t\t\t\t ([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*)\n\t\t\t\t\t\t ((\\s+\n\t\t\t\t\t\t ([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*|[._])\n\t\t\t\t\t\t )*\n\t\t\t\t\t\t )\\s*\n\t\t\t\t\t\t(\\))\n\t\t\t\t\t",
+ "captures": {
+ "1": {
+ "name": "keyword.control.scheme"
+ },
+ "2": {
+ "name": "punctuation.definition.function.scheme"
+ },
+ "3": {
+ "name": "entity.name.function.scheme"
+ },
+ "4": {
+ "name": "variable.parameter.function.scheme"
+ },
+ "7": {
+ "name": "punctuation.definition.function.scheme"
+ }
+ },
+ "end": "(?=\\))",
+ "name": "meta.declaration.procedure.scheme",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#sexp"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t(?<=\\() # preceded by (\n\t\t\t\t\t\t(lambda)\\s+\n\t\t\t\t\t\t(\\() # opening paren\n\t\t\t\t\t\t((?:\n\t\t\t\t\t\t ([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*|[._])\n\t\t\t\t\t\t \\s+\n\t\t\t\t\t\t)*(?:\n\t\t\t\t\t\t ([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*|[._])\n\t\t\t\t\t\t)?)\n\t\t\t\t\t\t(\\)) # closing paren\n\t\t\t\t\t",
+ "captures": {
+ "1": {
+ "name": "keyword.control.scheme"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.scheme"
+ },
+ "3": {
+ "name": "variable.parameter.scheme"
+ },
+ "6": {
+ "name": "punctuation.definition.variable.scheme"
+ }
+ },
+ "comment": "\n\t\t\t\t\t\tNot sure this one is quite correct. That \\s* is\n\t\t\t\t\t\tparticularly troubling\n\t\t\t\t\t",
+ "end": "(?=\\))",
+ "name": "meta.declaration.procedure.scheme",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#sexp"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\()(define)\\s([[:alnum:]][[:alnum:]!$%&*+-./:<=>?@^_~]*)\\s*.*?",
+ "captures": {
+ "1": {
+ "name": "keyword.control.scheme"
+ },
+ "2": {
+ "name": "variable.other.scheme"
+ }
+ },
+ "end": "(?=\\))",
+ "name": "meta.declaration.variable.scheme",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#sexp"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ {
+ "include": "#quote-sexp"
+ },
+ {
+ "include": "#quote"
+ },
+ {
+ "include": "#language-functions"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "match": "(?<=[\\(\\s])(#\\\\)(space|newline|tab)(?=[\\s\\)])",
+ "name": "constant.character.named.scheme"
+ },
+ {
+ "match": "(?<=[\\(\\s])(#\\\\)x[0-9A-F]{2,4}(?=[\\s\\)])",
+ "name": "constant.character.hex-literal.scheme"
+ },
+ {
+ "match": "(?<=[\\(\\s])(#\\\\).(?=[\\s\\)])",
+ "name": "constant.character.escape.scheme"
+ },
+ {
+ "comment": "\n\t\t\t\t\t\tthe . in (a . b) which conses together two elements\n\t\t\t\t\t\ta and b. (a b c) == (a . (b . (c . nil)))\n\t\t\t\t\t",
+ "match": "(?<=[ ()])\\.(?=[ ()])",
+ "name": "punctuation.separator.cons.scheme"
+ },
+ {
+ "include": "#sexp"
+ },
+ {
+ "include": "#illegal"
+ }
+ ]
+ },
+ "string": {
+ "begin": "(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.scheme"
+ }
+ },
+ "end": "(\")",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.scheme"
+ }
+ },
+ "name": "string.quoted.double.scheme",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.scheme"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.scheme",
+ "uuid": "3EC2CFD0-909C-4692-AC29-1A60ADBC161E"
+}
diff --git a/node_modules/shiki/languages/scss.tmLanguage.json b/node_modules/shiki/languages/scss.tmLanguage.json
new file mode 100644
index 0000000..23e26ce
--- /dev/null
+++ b/node_modules/shiki/languages/scss.tmLanguage.json
@@ -0,0 +1,1879 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/atom/language-sass/blob/master/grammars/scss.cson",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/atom/language-sass/commit/f52ab12f7f9346cc2568129d8c4419bd3d506b47",
+ "name": "scss",
+ "scopeName": "source.css.scss",
+ "patterns": [
+ {
+ "include": "#variable_setting"
+ },
+ {
+ "include": "#at_rule_forward"
+ },
+ {
+ "include": "#at_rule_use"
+ },
+ {
+ "include": "#at_rule_include"
+ },
+ {
+ "include": "#at_rule_import"
+ },
+ {
+ "include": "#general"
+ },
+ {
+ "include": "#flow_control"
+ },
+ {
+ "include": "#rules"
+ },
+ {
+ "include": "#property_list"
+ },
+ {
+ "include": "#at_rule_mixin"
+ },
+ {
+ "include": "#at_rule_media"
+ },
+ {
+ "include": "#at_rule_function"
+ },
+ {
+ "include": "#at_rule_charset"
+ },
+ {
+ "include": "#at_rule_option"
+ },
+ {
+ "include": "#at_rule_namespace"
+ },
+ {
+ "include": "#at_rule_fontface"
+ },
+ {
+ "include": "#at_rule_page"
+ },
+ {
+ "include": "#at_rule_keyframes"
+ },
+ {
+ "include": "#at_rule_at_root"
+ },
+ {
+ "include": "#at_rule_supports"
+ },
+ {
+ "match": ";",
+ "name": "punctuation.terminator.rule.css"
+ }
+ ],
+ "repository": {
+ "at_rule_charset": {
+ "begin": "\\s*((@)charset\\b)\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.charset.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "end": "\\s*((?=;|$))",
+ "name": "meta.at-rule.charset.scss",
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#string_single"
+ },
+ {
+ "include": "#string_double"
+ }
+ ]
+ },
+ "at_rule_content": {
+ "begin": "\\s*((@)content\\b)\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.content.scss"
+ }
+ },
+ "end": "\\s*((?=;))",
+ "name": "meta.content.scss",
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#selectors"
+ },
+ {
+ "include": "#property_values"
+ }
+ ]
+ },
+ "at_rule_each": {
+ "begin": "\\s*((@)each\\b)\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.each.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "end": "\\s*((?=}))",
+ "name": "meta.at-rule.each.scss",
+ "patterns": [
+ {
+ "match": "\\b(in|,)\\b",
+ "name": "keyword.control.operator"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#property_values"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "at_rule_else": {
+ "begin": "\\s*((@)else(\\s*(if)?))\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.else.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "end": "\\s*(?={)",
+ "name": "meta.at-rule.else.scss",
+ "patterns": [
+ {
+ "include": "#conditional_operators"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#property_values"
+ }
+ ]
+ },
+ "at_rule_extend": {
+ "begin": "\\s*((@)extend\\b)\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.extend.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "end": "\\s*(?=;)",
+ "name": "meta.at-rule.extend.scss",
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#selectors"
+ },
+ {
+ "include": "#property_values"
+ }
+ ]
+ },
+ "at_rule_fontface": {
+ "patterns": [
+ {
+ "begin": "^\\s*((@)font-face\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.at-rule.fontface.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "end": "\\s*(?={)",
+ "name": "meta.at-rule.fontface.scss",
+ "patterns": [
+ {
+ "include": "#function_attributes"
+ }
+ ]
+ }
+ ]
+ },
+ "at_rule_for": {
+ "begin": "\\s*((@)for\\b)\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.for.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "end": "\\s*(?={)",
+ "name": "meta.at-rule.for.scss",
+ "patterns": [
+ {
+ "match": "(==|!=|<=|>=|<|>|from|to|through)",
+ "name": "keyword.control.operator"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#property_values"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "at_rule_forward": {
+ "begin": "\\s*((@)forward\\b)\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.forward.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "end": "\\s*(?=;)",
+ "name": "meta.at-rule.forward.scss",
+ "patterns": [
+ {
+ "match": "\\b(as|hide|show)\\b",
+ "name": "keyword.control.operator"
+ },
+ {
+ "match": "\\b([\\w-]+)(\\*)",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.module.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.wildcard.scss"
+ }
+ }
+ },
+ {
+ "match": "\\b[\\w-]+\\b",
+ "name": "entity.name.function.scss"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#string_single"
+ },
+ {
+ "include": "#string_double"
+ },
+ {
+ "include": "#comment_line"
+ },
+ {
+ "include": "#comment_block"
+ }
+ ]
+ },
+ "at_rule_function": {
+ "patterns": [
+ {
+ "begin": "\\s*((@)function\\b)\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.function.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ },
+ "3": {
+ "name": "entity.name.function.scss"
+ }
+ },
+ "end": "\\s*(?={)",
+ "name": "meta.at-rule.function.scss",
+ "patterns": [
+ {
+ "include": "#function_attributes"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.function.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ },
+ "3": {
+ "name": "entity.name.function.scss"
+ }
+ },
+ "match": "\\s*((@)function\\b)\\s*",
+ "name": "meta.at-rule.function.scss"
+ }
+ ]
+ },
+ "at_rule_if": {
+ "begin": "\\s*((@)if\\b)\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.if.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "end": "\\s*(?={)",
+ "name": "meta.at-rule.if.scss",
+ "patterns": [
+ {
+ "include": "#conditional_operators"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#property_values"
+ }
+ ]
+ },
+ "at_rule_import": {
+ "begin": "\\s*((@)import\\b)\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.import.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "end": "\\s*((?=;)|(?=}))",
+ "name": "meta.at-rule.import.scss",
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#string_single"
+ },
+ {
+ "include": "#string_double"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#comment_line"
+ }
+ ]
+ },
+ "at_rule_include": {
+ "patterns": [
+ {
+ "begin": "(?<=@include)\\s+(?:([\\w-]+)\\s*(\\.))?([\\w-]+)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.scss"
+ },
+ "2": {
+ "name": "punctuation.access.module.scss"
+ },
+ "3": {
+ "name": "entity.name.function.scss"
+ },
+ "4": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.scss"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.scss"
+ }
+ },
+ "name": "meta.at-rule.include.scss",
+ "patterns": [
+ {
+ "include": "#function_attributes"
+ }
+ ]
+ },
+ {
+ "match": "(?<=@include)\\s+(?:([\\w-]+)\\s*(\\.))?([\\w-]+)",
+ "captures": {
+ "0": {
+ "name": "meta.at-rule.include.scss"
+ },
+ "1": {
+ "name": "variable.scss"
+ },
+ "2": {
+ "name": "punctuation.access.module.scss"
+ },
+ "3": {
+ "name": "entity.name.function.scss"
+ }
+ }
+ },
+ {
+ "match": "((@)include)\\b",
+ "captures": {
+ "0": {
+ "name": "meta.at-rule.include.scss"
+ },
+ "1": {
+ "name": "keyword.control.at-rule.include.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ }
+ }
+ ]
+ },
+ "at_rule_keyframes": {
+ "begin": "(?<=^|\\s)(@)(?:-(?:webkit|moz)-)?keyframes\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.at-rule.keyframes.scss"
+ },
+ "1": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "end": "(?<=})",
+ "name": "meta.at-rule.keyframes.scss",
+ "patterns": [
+ {
+ "match": "(?<=@keyframes)\\s+((?:[_A-Za-z][-\\w]|-[_A-Za-z])[-\\w]*)",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.scss"
+ }
+ }
+ },
+ {
+ "begin": "(?<=@keyframes)\\s+(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.scss"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.scss"
+ }
+ },
+ "name": "string.quoted.double.scss",
+ "contentName": "entity.name.function.scss",
+ "patterns": [
+ {
+ "match": "\\\\(\\h{1,6}|.)",
+ "name": "constant.character.escape.scss"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=@keyframes)\\s+(')",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.scss"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.scss"
+ }
+ },
+ "name": "string.quoted.single.scss",
+ "contentName": "entity.name.function.scss",
+ "patterns": [
+ {
+ "match": "\\\\(\\h{1,6}|.)",
+ "name": "constant.character.escape.scss"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.keyframes.begin.scss"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.keyframes.end.scss"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\b(?:(?:100|[1-9]\\d|\\d)%|from|to)(?=\\s*{)",
+ "name": "entity.other.attribute-name.scss"
+ },
+ {
+ "include": "#flow_control"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#property_list"
+ },
+ {
+ "include": "#rules"
+ }
+ ]
+ }
+ ]
+ },
+ "at_rule_media": {
+ "patterns": [
+ {
+ "begin": "^\\s*((@)media)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.at-rule.media.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "end": "\\s*(?={)",
+ "name": "meta.at-rule.media.scss",
+ "patterns": [
+ {
+ "include": "#comment_docblock"
+ },
+ {
+ "include": "#comment_block"
+ },
+ {
+ "include": "#comment_line"
+ },
+ {
+ "match": "\\b(only)\\b",
+ "name": "keyword.control.operator.css.scss"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.media-query.begin.bracket.round.scss"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.media-query.end.bracket.round.scss"
+ }
+ },
+ "name": "meta.property-list.media-query.scss",
+ "patterns": [
+ {
+ "begin": "(?<![-a-z])(?=[-a-z])",
+ "end": "$|(?![-a-z])",
+ "name": "meta.property-name.media-query.scss",
+ "patterns": [
+ {
+ "include": "source.css#media-features"
+ },
+ {
+ "include": "source.css#property-names"
+ }
+ ]
+ },
+ {
+ "begin": "(:)\\s*(?!(\\s*{))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.key-value.scss"
+ }
+ },
+ "end": "\\s*(;|(?=}|\\)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.rule.scss"
+ }
+ },
+ "contentName": "meta.property-value.media-query.scss",
+ "patterns": [
+ {
+ "include": "#general"
+ },
+ {
+ "include": "#property_values"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#conditional_operators"
+ },
+ {
+ "include": "source.css#media-types"
+ }
+ ]
+ }
+ ]
+ },
+ "at_rule_mixin": {
+ "patterns": [
+ {
+ "begin": "(?<=@mixin)\\s+([\\w-]+)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.scss"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.scss"
+ }
+ },
+ "name": "meta.at-rule.mixin.scss",
+ "patterns": [
+ {
+ "include": "#function_attributes"
+ }
+ ]
+ },
+ {
+ "match": "(?<=@mixin)\\s+([\\w-]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.scss"
+ }
+ },
+ "name": "meta.at-rule.mixin.scss"
+ },
+ {
+ "match": "((@)mixin)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.mixin.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "name": "meta.at-rule.mixin.scss"
+ }
+ ]
+ },
+ "at_rule_namespace": {
+ "patterns": [
+ {
+ "begin": "(?<=@namespace)\\s+(?=url)",
+ "end": "(?=;|$)",
+ "name": "meta.at-rule.namespace.scss",
+ "patterns": [
+ {
+ "include": "#property_values"
+ },
+ {
+ "include": "#string_single"
+ },
+ {
+ "include": "#string_double"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=@namespace)\\s+([\\w-]*)",
+ "captures": {
+ "1": {
+ "name": "entity.name.namespace-prefix.scss"
+ }
+ },
+ "end": "(?=;|$)",
+ "name": "meta.at-rule.namespace.scss",
+ "patterns": [
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#property_values"
+ },
+ {
+ "include": "#string_single"
+ },
+ {
+ "include": "#string_double"
+ }
+ ]
+ },
+ {
+ "match": "((@)namespace)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.namespace.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "name": "meta.at-rule.namespace.scss"
+ }
+ ]
+ },
+ "at_rule_option": {
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.charset.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "match": "^\\s*((@)option\\b)\\s*",
+ "name": "meta.at-rule.option.scss"
+ },
+ "at_rule_page": {
+ "patterns": [
+ {
+ "begin": "^\\s*((@)page)(?=:|\\s)\\s*([-:\\w]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.page.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ },
+ "3": {
+ "name": "entity.name.function.scss"
+ }
+ },
+ "end": "\\s*(?={)",
+ "name": "meta.at-rule.page.scss"
+ }
+ ]
+ },
+ "at_rule_return": {
+ "begin": "\\s*((@)(return)\\b)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.return.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "end": "\\s*((?=;))",
+ "name": "meta.at-rule.return.scss",
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#property_values"
+ }
+ ]
+ },
+ "at_rule_at_root": {
+ "begin": "\\s*((@)(at-root))(\\s+|$)",
+ "end": "\\s*(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.at-rule.at-root.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "name": "meta.at-rule.at-root.scss",
+ "patterns": [
+ {
+ "include": "#function_attributes"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#selectors"
+ }
+ ]
+ },
+ "at_rule_supports": {
+ "begin": "(?<=^|\\s)(@)supports\\b",
+ "captures": {
+ "0": {
+ "name": "keyword.control.at-rule.supports.scss"
+ },
+ "1": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "end": "(?={)|$",
+ "name": "meta.at-rule.supports.scss",
+ "patterns": [
+ {
+ "include": "#logical_operators"
+ },
+ {
+ "include": "#properties"
+ },
+ {
+ "match": "\\(",
+ "name": "punctuation.definition.condition.begin.bracket.round.scss"
+ },
+ {
+ "match": "\\)",
+ "name": "punctuation.definition.condition.end.bracket.round.scss"
+ }
+ ]
+ },
+ "at_rule_use": {
+ "begin": "\\s*((@)use\\b)\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.use.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "end": "\\s*(?=;)",
+ "name": "meta.at-rule.use.scss",
+ "patterns": [
+ {
+ "match": "\\b(as|with)\\b",
+ "name": "keyword.control.operator"
+ },
+ {
+ "match": "\\b[\\w-]+\\b",
+ "name": "variable.scss"
+ },
+ {
+ "match": "\\*",
+ "name": "variable.language.expanded-namespace.scss"
+ },
+ {
+ "include": "#string_single"
+ },
+ {
+ "include": "#string_double"
+ },
+ {
+ "include": "#comment_line"
+ },
+ {
+ "include": "#comment_block"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.begin.bracket.round.scss"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.bracket.round.scss"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_attributes"
+ }
+ ]
+ }
+ ]
+ },
+ "at_rule_warn": {
+ "begin": "\\s*((@)(warn|debug|error)\\b)\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.warn.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "end": "\\s*(?=;)",
+ "name": "meta.at-rule.warn.scss",
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#string_double"
+ },
+ {
+ "include": "#string_single"
+ }
+ ]
+ },
+ "at_rule_while": {
+ "begin": "\\s*((@)while\\b)\\s*",
+ "captures": {
+ "1": {
+ "name": "keyword.control.while.scss"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.scss"
+ }
+ },
+ "end": "\\s*(?=})",
+ "name": "meta.at-rule.while.scss",
+ "patterns": [
+ {
+ "include": "#conditional_operators"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#property_values"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "comment_docblock": {
+ "name": "comment.block.documentation.scss",
+ "begin": "///",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.scss"
+ }
+ },
+ "end": "(?=$)",
+ "patterns": [
+ {
+ "include": "source.sassdoc"
+ }
+ ]
+ },
+ "comment_block": {
+ "begin": "/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.scss"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.scss"
+ }
+ },
+ "name": "comment.block.scss"
+ },
+ "comment_line": {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.scss"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.scss"
+ },
+ "constant_default": {
+ "match": "!default",
+ "name": "keyword.other.default.scss"
+ },
+ "constant_functions": {
+ "begin": "(?:([\\w-]+)(\\.))?([\\w-]+)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.scss"
+ },
+ "2": {
+ "name": "punctuation.access.module.scss"
+ },
+ "3": {
+ "name": "support.function.misc.scss"
+ },
+ "4": {
+ "name": "punctuation.section.function.scss"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.function.scss"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameters"
+ }
+ ]
+ },
+ "constant_important": {
+ "match": "!important",
+ "name": "keyword.other.important.scss"
+ },
+ "constant_mathematical_symbols": {
+ "match": "\\b(\\+|-|\\*|/)\\b",
+ "name": "support.constant.mathematical-symbols.scss"
+ },
+ "constant_optional": {
+ "match": "!optional",
+ "name": "keyword.other.optional.scss"
+ },
+ "constant_sass_functions": {
+ "begin": "(headings|stylesheet-url|rgba?|hsla?|ie-hex-str|red|green|blue|alpha|opacity|hue|saturation|lightness|prefixed|prefix|-moz|-svg|-css2|-pie|-webkit|-ms|font-(?:files|url)|grid-image|image-(?:width|height|url|color)|sprites?|sprite-(?:map|map-name|file|url|position)|inline-(?:font-files|image)|opposite-position|grad-point|grad-end-position|color-stops|color-stops-in-percentages|grad-color-stops|(?:radial|linear)-(?:gradient|svg-gradient)|opacify|fade-?in|transparentize|fade-?out|lighten|darken|saturate|desaturate|grayscale|adjust-(?:hue|lightness|saturation|color)|scale-(?:lightness|saturation|color)|change-color|spin|complement|invert|mix|-compass-(?:list|space-list|slice|nth|list-size)|blank|compact|nth|first-value-of|join|length|append|nest|append-selector|headers|enumerate|range|percentage|unitless|unit|if|type-of|comparable|elements-of-type|quote|unquote|escape|e|sin|cos|tan|abs|round|ceil|floor|pi|translate(?:X|Y))(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.misc.scss"
+ },
+ "2": {
+ "name": "punctuation.section.function.scss"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.function.scss"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameters"
+ }
+ ]
+ },
+ "flow_control": {
+ "patterns": [
+ {
+ "include": "#at_rule_if"
+ },
+ {
+ "include": "#at_rule_else"
+ },
+ {
+ "include": "#at_rule_warn"
+ },
+ {
+ "include": "#at_rule_for"
+ },
+ {
+ "include": "#at_rule_while"
+ },
+ {
+ "include": "#at_rule_each"
+ },
+ {
+ "include": "#at_rule_return"
+ }
+ ]
+ },
+ "function_attributes": {
+ "patterns": [
+ {
+ "match": ":",
+ "name": "punctuation.separator.key-value.scss"
+ },
+ {
+ "include": "#general"
+ },
+ {
+ "include": "#property_values"
+ },
+ {
+ "match": "[={}\\?;@]",
+ "name": "invalid.illegal.scss"
+ }
+ ]
+ },
+ "functions": {
+ "patterns": [
+ {
+ "begin": "([\\w-]{1,})(\\()\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.misc.scss"
+ },
+ "2": {
+ "name": "punctuation.section.function.scss"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.function.scss"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameters"
+ }
+ ]
+ },
+ {
+ "match": "([\\w-]{1,})",
+ "name": "support.function.misc.scss"
+ }
+ ]
+ },
+ "general": {
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#comment_docblock"
+ },
+ {
+ "include": "#comment_block"
+ },
+ {
+ "include": "#comment_line"
+ }
+ ]
+ },
+ "interpolation": {
+ "begin": "#{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.interpolation.begin.bracket.curly.scss"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.interpolation.end.bracket.curly.scss"
+ }
+ },
+ "name": "variable.interpolation.scss",
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#property_values"
+ }
+ ]
+ },
+ "conditional_operators": {
+ "patterns": [
+ {
+ "include": "#comparison_operators"
+ },
+ {
+ "include": "#logical_operators"
+ }
+ ]
+ },
+ "comparison_operators": {
+ "match": "==|!=|<=|>=|<|>",
+ "name": "keyword.operator.comparison.scss"
+ },
+ "logical_operators": {
+ "match": "\\b(not|or|and)\\b",
+ "name": "keyword.operator.logical.scss"
+ },
+ "map": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.map.begin.bracket.round.scss"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.map.end.bracket.round.scss"
+ }
+ },
+ "name": "meta.definition.variable.map.scss",
+ "patterns": [
+ {
+ "include": "#comment_docblock"
+ },
+ {
+ "include": "#comment_block"
+ },
+ {
+ "include": "#comment_line"
+ },
+ {
+ "match": "\\b([\\w-]+)\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "support.type.map.key.scss"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.scss"
+ }
+ }
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.scss"
+ },
+ {
+ "include": "#map"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#property_values"
+ }
+ ]
+ },
+ "operators": {
+ "match": "[-+*/](?!\\s*[-+*/])",
+ "name": "keyword.operator.css"
+ },
+ "parameters": {
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.begin.bracket.round.scss"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.round.scss"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_attributes"
+ }
+ ]
+ },
+ {
+ "include": "#property_values"
+ },
+ {
+ "include": "#comment_block"
+ },
+ {
+ "match": "[^'\",) \\t]+",
+ "name": "variable.parameter.url.scss"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.scss"
+ }
+ ]
+ },
+ "properties": {
+ "patterns": [
+ {
+ "begin": "(?<![-a-z])(?=[-a-z])",
+ "end": "$|(?![-a-z])",
+ "name": "meta.property-name.scss",
+ "patterns": [
+ {
+ "include": "source.css#property-names"
+ },
+ {
+ "include": "#at_rule_include"
+ }
+ ]
+ },
+ {
+ "begin": "(:)\\s*(?!(\\s*{))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.key-value.scss"
+ }
+ },
+ "end": "\\s*(;|(?=}|\\)))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.rule.scss"
+ }
+ },
+ "contentName": "meta.property-value.scss",
+ "patterns": [
+ {
+ "include": "#general"
+ },
+ {
+ "include": "#property_values"
+ }
+ ]
+ }
+ ]
+ },
+ "property_list": {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.property-list.begin.bracket.curly.scss"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.property-list.end.bracket.curly.scss"
+ }
+ },
+ "name": "meta.property-list.scss",
+ "patterns": [
+ {
+ "include": "#flow_control"
+ },
+ {
+ "include": "#rules"
+ },
+ {
+ "include": "#properties"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "property_values": {
+ "patterns": [
+ {
+ "include": "#string_single"
+ },
+ {
+ "include": "#string_double"
+ },
+ {
+ "include": "#constant_functions"
+ },
+ {
+ "include": "#constant_sass_functions"
+ },
+ {
+ "include": "#constant_important"
+ },
+ {
+ "include": "#constant_default"
+ },
+ {
+ "include": "#constant_optional"
+ },
+ {
+ "include": "source.css#numeric-values"
+ },
+ {
+ "include": "source.css#property-keywords"
+ },
+ {
+ "include": "source.css#color-keywords"
+ },
+ {
+ "include": "source.css#property-names"
+ },
+ {
+ "include": "#constant_mathematical_symbols"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.begin.bracket.round.scss"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.end.bracket.round.scss"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#general"
+ },
+ {
+ "include": "#property_values"
+ }
+ ]
+ }
+ ]
+ },
+ "rules": {
+ "patterns": [
+ {
+ "include": "#general"
+ },
+ {
+ "include": "#at_rule_extend"
+ },
+ {
+ "include": "#at_rule_content"
+ },
+ {
+ "include": "#at_rule_include"
+ },
+ {
+ "include": "#at_rule_media"
+ },
+ {
+ "include": "#selectors"
+ }
+ ]
+ },
+ "selector_attribute": {
+ "match": "(?xi)\n(\\[)\n\\s*\n(\n (?:\n [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors)\n | \\.?\\$ # Possible start of interpolation variable\n | } # Possible end of interpolation\n )+?\n)\n(?:\n \\s*([~|^$*]?=)\\s*\n (?:\n (\n (?:\n [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors)\n | \\.?\\$ # Possible start of interpolation variable\n | } # Possible end of interpolation\n )+\n )\n |\n ((\")(.*?)(\"))\n |\n ((')(.*?)('))\n )\n)?\n\\s*\n(\\])",
+ "name": "meta.attribute-selector.scss",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.attribute-selector.begin.bracket.square.scss"
+ },
+ "2": {
+ "name": "entity.other.attribute-name.attribute.scss",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "match": "\\\\([0-9a-fA-F]{1,6}|.)",
+ "name": "constant.character.escape.scss"
+ },
+ {
+ "match": "\\$|}",
+ "name": "invalid.illegal.scss"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.operator.scss"
+ },
+ "4": {
+ "name": "string.unquoted.attribute-value.scss",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "match": "\\\\([0-9a-fA-F]{1,6}|.)",
+ "name": "constant.character.escape.scss"
+ },
+ {
+ "match": "\\$|}",
+ "name": "invalid.illegal.scss"
+ }
+ ]
+ },
+ "5": {
+ "name": "string.quoted.double.attribute-value.scss"
+ },
+ "6": {
+ "name": "punctuation.definition.string.begin.scss"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "match": "\\\\([0-9a-fA-F]{1,6}|.)",
+ "name": "constant.character.escape.scss"
+ },
+ {
+ "match": "\\$|}",
+ "name": "invalid.illegal.scss"
+ }
+ ]
+ },
+ "8": {
+ "name": "punctuation.definition.string.end.scss"
+ },
+ "9": {
+ "name": "string.quoted.single.attribute-value.scss"
+ },
+ "10": {
+ "name": "punctuation.definition.string.begin.scss"
+ },
+ "11": {
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "match": "\\\\([0-9a-fA-F]{1,6}|.)",
+ "name": "constant.character.escape.scss"
+ },
+ {
+ "match": "\\$|}",
+ "name": "invalid.illegal.scss"
+ }
+ ]
+ },
+ "12": {
+ "name": "punctuation.definition.string.end.scss"
+ },
+ "13": {
+ "name": "punctuation.definition.attribute-selector.end.bracket.square.scss"
+ }
+ }
+ },
+ "selector_class": {
+ "match": "(?x)\n(\\.) # Valid class-name\n(\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors)\n | \\.?\\$ # Possible start of interpolation variable\n | } # Possible end of interpolation\n )+\n) # Followed by either:\n(?= $ # - End of the line\n | [\\s,\\#)\\[:{>+~|] # - Another selector\n | \\.[^$] # - Class selector, negating module variable\n | /\\* # - A block comment\n | ; # - A semicolon\n)",
+ "name": "entity.other.attribute-name.class.css",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "match": "\\\\([0-9a-fA-F]{1,6}|.)",
+ "name": "constant.character.escape.scss"
+ },
+ {
+ "match": "\\$|}",
+ "name": "invalid.illegal.scss"
+ }
+ ]
+ }
+ }
+ },
+ "selector_custom": {
+ "match": "\\b([a-zA-Z0-9]+(-[a-zA-Z0-9]+)+)(?=\\.|\\s++[^:]|\\s*[,\\[{]|:(link|visited|hover|active|focus|target|lang|disabled|enabled|checked|indeterminate|root|nth-(child|last-child|of-type|last-of-type)|first-child|last-child|first-of-type|last-of-type|only-child|only-of-type|empty|not|valid|invalid)(\\([0-9A-Za-z]*\\))?)",
+ "name": "entity.name.tag.custom.scss"
+ },
+ "selector_id": {
+ "match": "(?x)\n(\\#) # Valid id-name\n(\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors)\n | \\.?\\$ # Possible start of interpolation variable\n | } # Possible end of interpolation\n )+\n) # Followed by either:\n(?= $ # - End of the line\n | [\\s,\\#)\\[:{>+~|] # - Another selector\n | \\.[^$] # - Class selector, negating module variable\n | /\\* # - A block comment\n)",
+ "name": "entity.other.attribute-name.id.css",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "match": "\\\\([0-9a-fA-F]{1,6}|.)",
+ "name": "constant.character.escape.scss"
+ },
+ {
+ "match": "\\$|}",
+ "name": "invalid.illegal.identifier.scss"
+ }
+ ]
+ }
+ }
+ },
+ "selector_placeholder": {
+ "match": "(?x)\n(%) # Valid placeholder-name\n(\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors)\n | \\.\\$ # Possible start of interpolation module scope variable\n | \\$ # Possible start of interpolation variable\n | } # Possible end of interpolation\n )+\n) # Followed by either:\n(?= ; # - End of statement\n | $ # - End of the line\n | [\\s,\\#)\\[:{>+~|] # - Another selector\n | \\.[^$] # - Class selector, negating module variable\n | /\\* # - A block comment\n)",
+ "name": "entity.other.attribute-name.placeholder.css",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "match": "\\\\([0-9a-fA-F]{1,6}|.)",
+ "name": "constant.character.escape.scss"
+ },
+ {
+ "match": "\\$|}",
+ "name": "invalid.illegal.identifier.scss"
+ }
+ ]
+ }
+ }
+ },
+ "parent_selector_suffix": {
+ "match": "(?x)\n(?<=&)\n(\n (?: [-a-zA-Z_0-9]|[^\\x00-\\x7F] # Valid identifier characters\n | \\\\(?:[0-9a-fA-F]{1,6}|.) # Escape sequence\n | \\#\\{ # Interpolation (escaped to avoid Coffeelint errors)\n | \\$ # Possible start of interpolation variable\n | } # Possible end of interpolation\n )+\n) # Followed by either:\n(?= $ # - End of the line\n | [\\s,.\\#)\\[:{>+~|] # - Another selector\n | /\\* # - A block comment\n)",
+ "name": "entity.other.attribute-name.parent-selector-suffix.css",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "match": "\\\\([0-9a-fA-F]{1,6}|.)",
+ "name": "constant.character.escape.scss"
+ },
+ {
+ "match": "\\$|}",
+ "name": "invalid.illegal.identifier.scss"
+ }
+ ]
+ }
+ }
+ },
+ "selector_pseudo_class": {
+ "patterns": [
+ {
+ "begin": "((:)\\bnth-(?:child|last-child|of-type|last-of-type))(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.other.attribute-name.pseudo-class.css"
+ },
+ "2": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "3": {
+ "name": "punctuation.definition.pseudo-class.begin.bracket.round.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.pseudo-class.end.bracket.round.css"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "match": "\\d+",
+ "name": "constant.numeric.css"
+ },
+ {
+ "match": "(?<=\\d)n\\b|\\b(n|even|odd)\\b",
+ "name": "constant.other.scss"
+ },
+ {
+ "match": "\\w+",
+ "name": "invalid.illegal.scss"
+ }
+ ]
+ },
+ {
+ "include": "source.css#pseudo-classes"
+ },
+ {
+ "include": "source.css#pseudo-elements"
+ },
+ {
+ "include": "source.css#functional-pseudo-classes"
+ }
+ ]
+ },
+ "selectors": {
+ "patterns": [
+ {
+ "include": "source.css#tag-names"
+ },
+ {
+ "include": "#selector_custom"
+ },
+ {
+ "include": "#selector_class"
+ },
+ {
+ "include": "#selector_id"
+ },
+ {
+ "include": "#selector_pseudo_class"
+ },
+ {
+ "include": "#tag_wildcard"
+ },
+ {
+ "include": "#tag_parent_reference"
+ },
+ {
+ "include": "source.css#pseudo-elements"
+ },
+ {
+ "include": "#selector_attribute"
+ },
+ {
+ "include": "#selector_placeholder"
+ },
+ {
+ "include": "#parent_selector_suffix"
+ }
+ ]
+ },
+ "string_double": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.scss"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.scss"
+ }
+ },
+ "name": "string.quoted.double.scss",
+ "patterns": [
+ {
+ "match": "\\\\(\\h{1,6}|.)",
+ "name": "constant.character.escape.scss"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ "string_single": {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.scss"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.scss"
+ }
+ },
+ "name": "string.quoted.single.scss",
+ "patterns": [
+ {
+ "match": "\\\\(\\h{1,6}|.)",
+ "name": "constant.character.escape.scss"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ "tag_parent_reference": {
+ "match": "&",
+ "name": "entity.name.tag.reference.scss"
+ },
+ "tag_wildcard": {
+ "match": "\\*",
+ "name": "entity.name.tag.wildcard.scss"
+ },
+ "variable": {
+ "patterns": [
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ "variable_setting": {
+ "begin": "(?=\\$[\\w-]+\\s*:)",
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.rule.scss"
+ }
+ },
+ "contentName": "meta.definition.variable.scss",
+ "patterns": [
+ {
+ "match": "\\$[\\w-]+(?=\\s*:)",
+ "name": "variable.scss"
+ },
+ {
+ "begin": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.key-value.scss"
+ }
+ },
+ "end": "(?=;)",
+ "patterns": [
+ {
+ "include": "#comment_docblock"
+ },
+ {
+ "include": "#comment_block"
+ },
+ {
+ "include": "#comment_line"
+ },
+ {
+ "include": "#map"
+ },
+ {
+ "include": "#property_values"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.delimiter.scss"
+ }
+ ]
+ }
+ ]
+ },
+ "variables": {
+ "patterns": [
+ {
+ "match": "\\b([\\w-]+)(\\.)(\\$[\\w-]+)\\b",
+ "captures": {
+ "1": {
+ "name": "variable.scss"
+ },
+ "2": {
+ "name": "punctuation.access.module.scss"
+ },
+ "3": {
+ "name": "variable.scss"
+ }
+ }
+ },
+ {
+ "match": "(\\$|\\-\\-)[A-Za-z0-9_-]+\\b",
+ "name": "variable.scss"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/shaderlab.tmLanguage.json b/node_modules/shiki/languages/shaderlab.tmLanguage.json
new file mode 100644
index 0000000..5913b10
--- /dev/null
+++ b/node_modules/shiki/languages/shaderlab.tmLanguage.json
@@ -0,0 +1,204 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/tgjones/shaders-tmLanguage/blob/master/grammars/shaderlab.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/tgjones/shaders-tmLanguage/commit/c72c8b39380ba5a86c58ceed053b5d965ebf38b3",
+ "name": "shaderlab",
+ "scopeName": "source.shaderlab",
+ "patterns": [
+ {
+ "name": "comment.line.double-slash.shaderlab",
+ "begin": "//",
+ "end": "$"
+ },
+ {
+ "name": "support.type.basic.shaderlab",
+ "match": "\\b(?i:Range|Float|Int|Color|Vector|2D|3D|Cube|Any)\\b"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "name": "storage.type.structure.shaderlab",
+ "match": "\\b(?i:Shader|Properties|SubShader|Pass|Category)\\b"
+ },
+ {
+ "name": "support.type.propertyname.shaderlab",
+ "match": "\\b(?i:Name|Tags|Fallback|CustomEditor|Cull|ZWrite|ZTest|Offset|Blend|BlendOp|ColorMask|AlphaToMask|LOD|Lighting|Stencil|Ref|ReadMask|WriteMask|Comp|CompBack|CompFront|Fail|ZFail|UsePass|GrabPass|Dependency|Material|Diffuse|Ambient|Shininess|Specular|Emission|Fog|Mode|Density|SeparateSpecular|SetTexture|Combine|ConstantColor|Matrix|AlphaTest|ColorMaterial|BindChannels|Bind)\\b"
+ },
+ {
+ "name": "support.constant.property-value.shaderlab",
+ "match": "\\b(?i:Back|Front|On|Off|[RGBA]{1,3}|AmbientAndDiffuse|Emission)\\b"
+ },
+ {
+ "name": "support.constant.property-value.comparisonfunction.shaderlab",
+ "match": "\\b(?i:Less|Greater|LEqual|GEqual|Equal|NotEqual|Always|Never)\\b"
+ },
+ {
+ "name": "support.constant.property-value.stenciloperation.shaderlab",
+ "match": "\\b(?i:Keep|Zero|Replace|IncrSat|DecrSat|Invert|IncrWrap|DecrWrap)\\b"
+ },
+ {
+ "name": "support.constant.property-value.texturecombiners.shaderlab",
+ "match": "\\b(?i:Previous|Primary|Texture|Constant|Lerp|Double|Quad|Alpha)\\b"
+ },
+ {
+ "name": "support.constant.property-value.fog.shaderlab",
+ "match": "\\b(?i:Global|Linear|Exp2|Exp)\\b"
+ },
+ {
+ "name": "support.constant.property-value.bindchannels.shaderlab",
+ "match": "\\b(?i:Vertex|Normal|Tangent|TexCoord0|TexCoord1)\\b"
+ },
+ {
+ "name": "support.constant.property-value.blendoperations.shaderlab",
+ "match": "\\b(?i:Add|Sub|RevSub|Min|Max|LogicalClear|LogicalSet|LogicalCopyInverted|LogicalCopy|LogicalNoop|LogicalInvert|LogicalAnd|LogicalNand|LogicalOr|LogicalNor|LogicalXor|LogicalEquiv|LogicalAndReverse|LogicalAndInverted|LogicalOrReverse|LogicalOrInverted)\\b"
+ },
+ {
+ "name": "support.constant.property-value.blendfactors.shaderlab",
+ "match": "\\b(?i:One|Zero|SrcColor|SrcAlpha|DstColor|DstAlpha|OneMinusSrcColor|OneMinusSrcAlpha|OneMinusDstColor|OneMinusDstAlpha)\\b"
+ },
+ {
+ "name": "support.variable.reference.shaderlab",
+ "match": "\\[([a-zA-Z_][a-zA-Z0-9_]*)\\](?!\\s*[a-zA-Z_][a-zA-Z0-9_]*\\s*\\(\")"
+ },
+ {
+ "name": "meta.attribute.shaderlab",
+ "begin": "(\\[)",
+ "end": "(\\])",
+ "patterns": [
+ {
+ "name": "support.type.attributename.shaderlab",
+ "match": "\\G([a-zA-Z]+)\\b"
+ },
+ {
+ "include": "#numbers"
+ }
+ ]
+ },
+ {
+ "name": "support.variable.declaration.shaderlab",
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\("
+ },
+ {
+ "name": "meta.cgblock",
+ "begin": "\\b(CGPROGRAM|CGINCLUDE)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other"
+ }
+ },
+ "end": "\\b(ENDCG)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.other"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#hlsl-embedded"
+ }
+ ]
+ },
+ {
+ "name": "meta.hlslblock",
+ "begin": "\\b(HLSLPROGRAM|HLSLINCLUDE)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other"
+ }
+ },
+ "end": "\\b(ENDHLSL)\\b",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.other"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#hlsl-embedded"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.double.shaderlab",
+ "begin": "\"",
+ "end": "\""
+ }
+ ],
+ "repository": {
+ "numbers": {
+ "patterns": [
+ {
+ "name": "constant.numeric.shaderlab",
+ "match": "\\b([0-9]+\\.?[0-9]*)\\b"
+ }
+ ]
+ },
+ "hlsl-embedded": {
+ "patterns": [
+ {
+ "include": "source.hlsl"
+ },
+ {
+ "name": "storage.type.basic.shaderlab",
+ "match": "\\b(fixed([1-4](x[1-4])?)?)\\b"
+ },
+ {
+ "name": "support.variable.transformations.shaderlab",
+ "match": "\\b(UNITY_MATRIX_MVP|UNITY_MATRIX_MV|UNITY_MATRIX_M|UNITY_MATRIX_V|UNITY_MATRIX_P|UNITY_MATRIX_VP|UNITY_MATRIX_T_MV|UNITY_MATRIX_I_V|UNITY_MATRIX_IT_MV|_Object2World|_World2Object|unity_ObjectToWorld|unity_WorldToObject)\\b"
+ },
+ {
+ "name": "support.variable.camera.shaderlab",
+ "match": "\\b(_WorldSpaceCameraPos|_ProjectionParams|_ScreenParams|_ZBufferParams|unity_OrthoParams|unity_CameraProjection|unity_CameraInvProjection|unity_CameraWorldClipPlanes)\\b"
+ },
+ {
+ "name": "support.variable.time.shaderlab",
+ "match": "\\b(_Time|_SinTime|_CosTime|unity_DeltaTime)\\b"
+ },
+ {
+ "name": "support.variable.lighting.shaderlab",
+ "match": "\\b(_LightColor0|_WorldSpaceLightPos0|_LightMatrix0|unity_4LightPosX0|unity_4LightPosY0|unity_4LightPosZ0|unity_4LightAtten0|unity_LightColor|_LightColor|unity_LightPosition|unity_LightAtten|unity_SpotDirection)\\b"
+ },
+ {
+ "name": "support.variable.fog.shaderlab",
+ "match": "\\b(unity_AmbientSky|unity_AmbientEquator|unity_AmbientGround|UNITY_LIGHTMODEL_AMBIENT|unity_FogColor|unity_FogParams)\\b"
+ },
+ {
+ "name": "support.variable.various.shaderlab",
+ "match": "\\b(unity_LODFade)\\b"
+ },
+ {
+ "name": "support.variable.preprocessor.targetplatform.shaderlab",
+ "match": "\\b(SHADER_API_D3D9|SHADER_API_D3D11|SHADER_API_GLCORE|SHADER_API_OPENGL|SHADER_API_GLES|SHADER_API_GLES3|SHADER_API_METAL|SHADER_API_D3D11_9X|SHADER_API_PSSL|SHADER_API_XBOXONE|SHADER_API_PSP2|SHADER_API_WIIU|SHADER_API_MOBILE|SHADER_API_GLSL)\\b"
+ },
+ {
+ "name": "support.variable.preprocessor.targetmodel.shaderlab",
+ "match": "\\b(SHADER_TARGET)\\b"
+ },
+ {
+ "name": "support.variable.preprocessor.unityversion.shaderlab",
+ "match": "\\b(UNITY_VERSION)\\b"
+ },
+ {
+ "name": "support.variable.preprocessor.platformdifference.shaderlab",
+ "match": "\\b(UNITY_BRANCH|UNITY_FLATTEN|UNITY_NO_SCREENSPACE_SHADOWS|UNITY_NO_LINEAR_COLORSPACE|UNITY_NO_RGBM|UNITY_NO_DXT5nm|UNITY_FRAMEBUFFER_FETCH_AVAILABLE|UNITY_USE_RGBA_FOR_POINT_SHADOWS|UNITY_ATTEN_CHANNEL|UNITY_HALF_TEXEL_OFFSET|UNITY_UV_STARTS_AT_TOP|UNITY_MIGHT_NOT_HAVE_DEPTH_Texture|UNITY_NEAR_CLIP_VALUE|UNITY_VPOS_TYPE|UNITY_CAN_COMPILE_TESSELLATION|UNITY_COMPILER_HLSL|UNITY_COMPILER_HLSL2GLSL|UNITY_COMPILER_CG|UNITY_REVERSED_Z)\\b"
+ },
+ {
+ "name": "support.variable.preprocessor.texture2D.shaderlab",
+ "match": "\\b(UNITY_PASS_FORWARDBASE|UNITY_PASS_FORWARDADD|UNITY_PASS_DEFERRED|UNITY_PASS_SHADOWCASTER|UNITY_PASS_PREPASSBASE|UNITY_PASS_PREPASSFINAL)\\b"
+ },
+ {
+ "name": "support.class.structures.shaderlab",
+ "match": "\\b(appdata_base|appdata_tan|appdata_full|appdata_img)\\b"
+ },
+ {
+ "name": "support.class.surface.shaderlab",
+ "match": "\\b(SurfaceOutputStandardSpecular|SurfaceOutputStandard|SurfaceOutput|Input)\\b"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/shellscript.tmLanguage.json b/node_modules/shiki/languages/shellscript.tmLanguage.json
new file mode 100644
index 0000000..86eec28
--- /dev/null
+++ b/node_modules/shiki/languages/shellscript.tmLanguage.json
@@ -0,0 +1,2009 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/jeff-hykin/better-shell-syntax/blob/master/autogenerated/shell.tmLanguage.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/jeff-hykin/better-shell-syntax/commit/1bad17d8badf6283125aaa7c31be06ba64146a0f",
+ "name": "shellscript",
+ "scopeName": "source.shell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ],
+ "repository": {
+ "alias_statement": {
+ "begin": "(alias)[ \\t]*+[ \\t]*+(?:((?<=^|;|&|[ \\t])(?:export|declare|typeset|local|readonly)(?=[ \\t]|;|&|$))[ \\t]*+)?((?<!\\w)[a-zA-Z_0-9-]+(?!\\w))(?:(\\[)((?:(?:(?:\\$)?(?<!\\w)[a-zA-Z_0-9-]+(?!\\w)|@)|\\*))(\\]))?(?:(?:(\\=)|(\\+\\=))|(\\-\\=))",
+ "end": "(?:(?= |\\t|$)|(?:(?:(?:(?:(;)|(&&))|(\\|\\|))|(&))|\\n))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.alias.shell"
+ },
+ "2": {
+ "name": "storage.modifier.$2.shell"
+ },
+ "3": {
+ "name": "variable.other.assignment.shell"
+ },
+ "4": {
+ "name": "punctuation.definition.array.access.shell"
+ },
+ "5": {
+ "name": "variable.other.assignment.shell"
+ },
+ "6": {
+ "name": "punctuation.definition.array.access.shell"
+ },
+ "7": {
+ "name": "keyword.operator.assignment.shell"
+ },
+ "8": {
+ "name": "keyword.operator.assignment.compound.shell"
+ },
+ "9": {
+ "name": "keyword.operator.assignment.compound.shell"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.semicolon.shell"
+ },
+ "2": {
+ "name": "punctuation.separator.statement.and.shell"
+ },
+ "3": {
+ "name": "punctuation.separator.statement.or.shell"
+ },
+ "4": {
+ "name": "punctuation.separator.statement.background.shell"
+ }
+ },
+ "name": "meta.expression.assignment.shell",
+ "patterns": [
+ {
+ "include": "#normal_statement_context"
+ }
+ ]
+ },
+ "argument": {
+ "begin": "[ \\t]++(?!(?:&|\\||\\(|\\[|#|\\n|$|;))",
+ "end": "(?= |\\t|;|\\||&|$|\\n|\\)|\\`)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.argument.shell",
+ "patterns": [
+ {
+ "include": "#argument_context"
+ },
+ {
+ "include": "#line_continuation"
+ }
+ ]
+ },
+ "argument_context": {
+ "patterns": [
+ {
+ "match": "[ \\t]*+([^ \t\n'&;<>\\(\\)\\$`\\\\\"\\|]+(?!>))",
+ "captures": {
+ "1": {
+ "name": "string.unquoted.argument.shell",
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "variable.language.special.wildcard.shell"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#numeric_literal"
+ },
+ {
+ "match": "(?<!\\w)(\\b(?:true|false)\\b)(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "constant.language.$1.shell"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "#normal_statement_context"
+ }
+ ]
+ },
+ "assignment": {
+ "patterns": [
+ {
+ "begin": "[ \\t]*+(?:((?<=^|;|&|[ \\t])(?:export|declare|typeset|local|readonly)(?=[ \\t]|;|&|$))[ \\t]*+)?((?<!\\w)[a-zA-Z_0-9-]+(?!\\w))(?:(\\[)((?:(?:(?:\\$)?(?<!\\w)[a-zA-Z_0-9-]+(?!\\w)|@)|\\*))(\\]))?(?:(?:(\\=)|(\\+\\=))|(\\-\\=))[ \\t]*+(\\()",
+ "end": "\\)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.$1.shell"
+ },
+ "2": {
+ "name": "variable.other.assignment.shell"
+ },
+ "3": {
+ "name": "punctuation.definition.array.access.shell"
+ },
+ "4": {
+ "name": "variable.other.assignment.shell"
+ },
+ "5": {
+ "name": "punctuation.definition.array.access.shell"
+ },
+ "6": {
+ "name": "keyword.operator.assignment.shell"
+ },
+ "7": {
+ "name": "keyword.operator.assignment.compound.shell"
+ },
+ "8": {
+ "name": "keyword.operator.assignment.compound.shell"
+ },
+ "9": {
+ "name": "punctuation.shell"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.shell"
+ }
+ },
+ "name": "meta.expression.assignment.shell",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#argument_context"
+ }
+ ]
+ },
+ {
+ "begin": "[ \\t]*+(?:((?<=^|;|&|[ \\t])(?:export|declare|typeset|local|readonly)(?=[ \\t]|;|&|$))[ \\t]*+)?((?<!\\w)[a-zA-Z_0-9-]+(?!\\w))(?:(\\[)((?:(?:(?:\\$)?(?<!\\w)[a-zA-Z_0-9-]+(?!\\w)|@)|\\*))(\\]))?(?:(?:(\\=)|(\\+\\=))|(\\-\\=))",
+ "end": "(?:(?= |\\t|$)|(?:(?:(?:(?:(;)|(&&))|(\\|\\|))|(&))|\\n))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.$1.shell"
+ },
+ "2": {
+ "name": "variable.other.assignment.shell"
+ },
+ "3": {
+ "name": "punctuation.definition.array.access.shell"
+ },
+ "4": {
+ "name": "variable.other.assignment.shell"
+ },
+ "5": {
+ "name": "punctuation.definition.array.access.shell"
+ },
+ "6": {
+ "name": "keyword.operator.assignment.shell"
+ },
+ "7": {
+ "name": "keyword.operator.assignment.compound.shell"
+ },
+ "8": {
+ "name": "keyword.operator.assignment.compound.shell"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.semicolon.shell"
+ },
+ "2": {
+ "name": "punctuation.separator.statement.and.shell"
+ },
+ "3": {
+ "name": "punctuation.separator.statement.or.shell"
+ },
+ "4": {
+ "name": "punctuation.separator.statement.background.shell"
+ }
+ },
+ "name": "meta.expression.assignment.shell",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#argument_context"
+ }
+ ]
+ }
+ ]
+ },
+ "basic_command_name": {
+ "match": "(?!(?:!|&|\\||\\(|\\)|\\{|\\[|<|>|#|\\n|$|;|[ \\t]))(?!foreach\\b(?!\\/)|select\\b(?!\\/)|repeat\\b(?!\\/)|until\\b(?!\\/)|while\\b(?!\\/)|case\\b(?!\\/)|done\\b(?!\\/)|elif\\b(?!\\/)|else\\b(?!\\/)|esac\\b(?!\\/)|then\\b(?!\\/)|for\\b(?!\\/)|end\\b(?!\\/)|in\\b(?!\\/)|fi\\b(?!\\/)|do\\b(?!\\/)|if\\b(?!\\/))(?:((?<=^|;|&|[ \\t])(?:export|declare|typeset|local|readonly)(?=[ \\t]|;|&|$))|((?!\"|'|\\\\\\n?$)[^!'\" \\t\\n\\r]+?))(?:(?= |\\t)|(?=;|\\||&|\\n|\\)|\\`|\\{|\\}|[ \\t]*#|\\])(?<!\\\\))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.$1.shell"
+ },
+ "2": {
+ "name": "entity.name.function.call.shell entity.name.command.shell",
+ "patterns": [
+ {
+ "match": "(?<!\\w)(?:return|break)(?!\\w)",
+ "name": "keyword.control.$0.shell"
+ },
+ {
+ "match": "(?<!\\w)(?:unfunction|unsetopt|autoload|suspend|bindkey|builtin|getopts|command|declare|unalias|history|unlimit|typeset|source|printf|unhash|disown|ulimit|return|which|alias|break|false|print|shift|times|umask|umask|unset|read|type|exec|eval|wait|echo|dirs|jobs|kill|hash|stat|exit|test|trap|true|let|set|pwd|cd|fg|bg|fc|:|\\.)(?!\\/)(?!\\w)",
+ "name": "support.function.builtin.shell"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ }
+ },
+ "name": "meta.statement.command.name.basic.shell"
+ },
+ "block_comment": {
+ "begin": "\\s*+(\\/\\*)",
+ "end": "\\*\\/",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.begin.shell"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.shell"
+ }
+ },
+ "name": "comment.block.shell"
+ },
+ "boolean": {
+ "match": "\\b(?:true|false)\\b",
+ "name": "constant.language.$0.shell"
+ },
+ "case-clause": {
+ "patterns": [
+ {
+ "begin": "(?=\\S)",
+ "end": ";;",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.case-clause.shell"
+ }
+ },
+ "name": "meta.scope.case-clause.shell",
+ "patterns": [
+ {
+ "begin": "\\(|(?=\\S)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.case-pattern.shell"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.case-pattern.shell"
+ }
+ },
+ "name": "meta.scope.case-pattern.shell",
+ "patterns": [
+ {
+ "match": "\\|",
+ "name": "punctuation.separator.pipe-sign.shell"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#pathname"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\))",
+ "end": "(?=;;)",
+ "name": "meta.scope.case-clause-body.shell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "comment": {
+ "match": "(?:^|[ \\t]++)(?:((#!).*)|((#).*))",
+ "captures": {
+ "1": {
+ "name": "comment.line.number-sign.shell meta.shebang.shell"
+ },
+ "2": {
+ "name": "punctuation.definition.comment.shebang.shell"
+ },
+ "3": {
+ "name": "comment.line.number-sign.shell"
+ },
+ "4": {
+ "name": "punctuation.definition.comment.shell"
+ }
+ }
+ },
+ "comments": {
+ "patterns": [
+ {
+ "include": "#block_comment"
+ },
+ {
+ "include": "#line_comment"
+ }
+ ]
+ },
+ "compound-command": {
+ "patterns": [
+ {
+ "begin": "\\[{1,2}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.logical-expression.shell"
+ }
+ },
+ "end": "\\]{1,2}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.logical-expression.shell"
+ }
+ },
+ "name": "meta.scope.logical-expression.shell",
+ "patterns": [
+ {
+ "include": "#logical-expression"
+ },
+ {
+ "include": "#initial_context"
+ }
+ ]
+ },
+ {
+ "begin": "\\({2}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.shell"
+ }
+ },
+ "end": "\\){2}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.shell"
+ }
+ },
+ "name": "string.other.math.shell",
+ "patterns": [
+ {
+ "include": "#math"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.subshell.shell"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.subshell.shell"
+ }
+ },
+ "name": "meta.scope.subshell.shell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\s|^){(?=\\s|$)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.shell"
+ }
+ },
+ "end": "(?<=^|;)\\s*(})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.shell"
+ }
+ },
+ "name": "meta.scope.group.shell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ]
+ }
+ ]
+ },
+ "continuation_of_double_quoted_command_name": {
+ "begin": "\\G(?<=\")",
+ "end": "\"",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "string.quoted.double.shell punctuation.definition.string.end.shell entity.name.function.call.shell entity.name.command.shell"
+ }
+ },
+ "contentName": "meta.statement.command.name.continuation string.quoted.double entity.name.function.call entity.name.command",
+ "patterns": [
+ {
+ "match": "\\\\[\\$\\n`\"\\\\]",
+ "name": "constant.character.escape.shell"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ "continuation_of_single_quoted_command_name": {
+ "begin": "\\G(?<=')",
+ "end": "'",
+ "beginCaptures": {},
+ "endCaptures": {
+ "0": {
+ "name": "string.quoted.single.shell punctuation.definition.string.end.shell entity.name.function.call.shell entity.name.command.shell"
+ }
+ },
+ "contentName": "meta.statement.command.name.continuation string.quoted.single entity.name.function.call entity.name.command"
+ },
+ "custom_command_names": {
+ "patterns": []
+ },
+ "custom_commands": {
+ "patterns": []
+ },
+ "double_quote_context": {
+ "patterns": [
+ {
+ "match": "\\\\[\\$`\"\\\\\\n]",
+ "name": "constant.character.escape.shell"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ "double_quote_escape_char": {
+ "match": "\\\\[\\$`\"\\\\\\n]",
+ "name": "constant.character.escape.shell"
+ },
+ "function_definition": {
+ "begin": "[ \\t]*+(?:(\\bfunction\\b)[ \\t]*+([^ \\t\\n\\r\\(\\)=]+)(?:(\\()[ \\t]*+(\\)))?|([^ \\t\\n\\r\\(\\)=]+)[ \\t]*+(\\()[ \\t]*+(\\)))",
+ "end": "(?<=\\}|\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.shell"
+ },
+ "2": {
+ "name": "entity.name.function.shell"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.shell"
+ },
+ "4": {
+ "name": "punctuation.definition.arguments.shell"
+ },
+ "5": {
+ "name": "entity.name.function.shell"
+ },
+ "6": {
+ "name": "punctuation.definition.arguments.shell"
+ },
+ "7": {
+ "name": "punctuation.definition.arguments.shell"
+ }
+ },
+ "endCaptures": {},
+ "name": "meta.function.shell",
+ "patterns": [
+ {
+ "match": "\\G(?:\\t| |\\n)"
+ },
+ {
+ "begin": "\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.shell punctuation.section.function.definition.shell"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.shell punctuation.section.function.definition.shell"
+ }
+ },
+ "name": "meta.function.body.shell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.shell punctuation.section.function.definition.shell"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.shell punctuation.section.function.definition.shell"
+ }
+ },
+ "name": "meta.function.body.shell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ]
+ }
+ ],
+ "applyEndPatternLast": 1
+ },
+ "heredoc": {
+ "patterns": [
+ {
+ "begin": "((?<!<)<<-)[ \\t]*+(\"|')[ \\t]*+((?<!\\w)[a-zA-Z_0-9-]+(?!\\w))(?=\\s|;|&|<|\"|')(?:\\2)(.*)",
+ "end": "^\\t*(?:\\3)(?=\\s|;|&|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.heredoc.shell"
+ },
+ "2": {},
+ "3": {
+ "name": "punctuation.definition.string.heredoc.shell"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#normal_statement_context"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.heredoc.shell"
+ }
+ },
+ "contentName": "string.quoted.heredoc.indent",
+ "patterns": []
+ },
+ {
+ "begin": "((?<!<)<<(?!<))[ \\t]*+(\"|')[ \\t]*+((?<!\\w)[a-zA-Z_0-9-]+(?!\\w))(?=\\s|;|&|<|\"|')(?:\\2)(.*)",
+ "end": "^(?:\\3)(?=\\s|;|&|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.heredoc.shell"
+ },
+ "2": {},
+ "3": {
+ "name": "punctuation.definition.string.heredoc.shell"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#normal_statement_context"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.heredoc.shell"
+ }
+ },
+ "contentName": "string.quoted.heredoc.no-indent",
+ "patterns": []
+ },
+ {
+ "begin": "((?<!<)<<-)[ \\t]*+((?<!\\w)[a-zA-Z_0-9-]+(?!\\w))(?=\\s|;|&|<|\"|')(.*)",
+ "end": "^\\t*(?:\\2)(?=\\s|;|&|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.heredoc.shell"
+ },
+ "2": {
+ "name": "punctuation.definition.string.heredoc.shell"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#normal_statement_context"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.heredoc.shell"
+ }
+ },
+ "contentName": "string.unquoted.heredoc.indent",
+ "patterns": [
+ {
+ "include": "#double_quote_escape_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "((?<!<)<<(?!<))[ \\t]*+((?<!\\w)[a-zA-Z_0-9-]+(?!\\w))(?=\\s|;|&|<|\"|')(.*)",
+ "end": "^(?:\\2)(?=\\s|;|&|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.heredoc.shell"
+ },
+ "2": {
+ "name": "punctuation.definition.string.heredoc.shell"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#normal_statement_context"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.heredoc.shell"
+ }
+ },
+ "contentName": "string.unquoted.heredoc.no-indent",
+ "patterns": [
+ {
+ "include": "#double_quote_escape_char"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ }
+ ]
+ },
+ "herestring": {
+ "patterns": [
+ {
+ "begin": "(<<<)\\s*(('))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.herestring.shell"
+ },
+ "2": {
+ "name": "string.quoted.single.shell"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.shell"
+ }
+ },
+ "end": "(')",
+ "endCaptures": {
+ "0": {
+ "name": "string.quoted.single.shell"
+ },
+ "1": {
+ "name": "punctuation.definition.string.end.shell"
+ }
+ },
+ "name": "meta.herestring.shell",
+ "contentName": "string.quoted.single.shell"
+ },
+ {
+ "begin": "(<<<)\\s*((\"))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.herestring.shell"
+ },
+ "2": {
+ "name": "string.quoted.double.shell"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.shell"
+ }
+ },
+ "end": "(\")",
+ "endCaptures": {
+ "0": {
+ "name": "string.quoted.double.shell"
+ },
+ "1": {
+ "name": "punctuation.definition.string.end.shell"
+ }
+ },
+ "name": "meta.herestring.shell",
+ "contentName": "string.quoted.double.shell",
+ "patterns": [
+ {
+ "include": "#double_quote_context"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.herestring.shell"
+ },
+ "2": {
+ "name": "string.unquoted.herestring.shell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ]
+ }
+ },
+ "match": "(<<<)\\s*(([^\\s)\\\\]|\\\\.)+)",
+ "name": "meta.herestring.shell"
+ }
+ ]
+ },
+ "initial_context": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pipeline"
+ },
+ {
+ "include": "#normal_statement_seperator"
+ },
+ {
+ "include": "#logical_expression_double"
+ },
+ {
+ "include": "#logical_expression_single"
+ },
+ {
+ "include": "#misc_ranges"
+ },
+ {
+ "include": "#loop"
+ },
+ {
+ "include": "#function_definition"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#herestring"
+ },
+ {
+ "include": "#redirection"
+ },
+ {
+ "include": "#pathname"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#alias_statement"
+ },
+ {
+ "include": "#normal_statement"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#support"
+ }
+ ]
+ },
+ "inline_comment": {
+ "match": "(\\/\\*)((?:[^\\*]|(?:\\*)++[^\\/])*+((?:\\*)++\\/))",
+ "captures": {
+ "1": {
+ "name": "comment.block.shell punctuation.definition.comment.begin.shell"
+ },
+ "2": {
+ "name": "comment.block.shell"
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\*\\/",
+ "name": "comment.block.shell punctuation.definition.comment.end.shell"
+ },
+ {
+ "match": "\\*",
+ "name": "comment.block.shell"
+ }
+ ]
+ }
+ }
+ },
+ "interpolation": {
+ "patterns": [
+ {
+ "begin": "\\$\\({2}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.evaluation.arithmetic.begin.shell"
+ }
+ },
+ "end": "\\)\\s*\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.evaluation.arithmetic.end.shell"
+ }
+ },
+ "name": "string.other.math.shell",
+ "patterns": [
+ {
+ "include": "#math"
+ }
+ ]
+ },
+ {
+ "begin": "`",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.evaluation.backticks.shell"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.evaluation.backticks.shell"
+ }
+ },
+ "name": "string.interpolated.backtick.shell",
+ "patterns": [
+ {
+ "match": "\\\\[`\\\\$]",
+ "name": "constant.character.escape.shell"
+ },
+ {
+ "begin": "(?<=\\W)(?=#)(?!#{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.shell"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.shell"
+ }
+ },
+ "end": "(?=`)",
+ "name": "comment.line.number-sign.shell"
+ }
+ ]
+ },
+ {
+ "include": "#initial_context"
+ }
+ ]
+ },
+ {
+ "begin": "\\$\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.evaluation.parens.begin.shell"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.evaluation.parens.end.shell"
+ }
+ },
+ "name": "string.interpolated.dollar.shell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ]
+ }
+ ]
+ },
+ "keyword": {
+ "patterns": [
+ {
+ "match": "(?<=^|;|&| |\\t)(?:then|else|elif|fi|for|in|do|done|select|case|continue|esac|while|until|return)(?= |\\t|;|&|$)",
+ "name": "keyword.control.$0.shell"
+ }
+ ]
+ },
+ "line_comment": {
+ "begin": "\\s*+(\\/\\/)",
+ "end": "(?<=\\n)(?<!\\\\\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.shell"
+ }
+ },
+ "endCaptures": {},
+ "name": "comment.line.double-slash.shell",
+ "patterns": [
+ {
+ "include": "#line_continuation_character"
+ }
+ ]
+ },
+ "line_continuation": {
+ "match": "\\\\(?=\\n)",
+ "name": "constant.character.escape.line-continuation.shell"
+ },
+ "logical-expression": {
+ "patterns": [
+ {
+ "comment": "do we want a special rule for ( expr )?",
+ "match": "=[=~]?|!=?|<|>|&&|\\|\\|",
+ "name": "keyword.operator.logical.shell"
+ },
+ {
+ "match": "(?<!\\S)-(nt|ot|ef|eq|ne|l[te]|g[te]|[a-hknoprstuwxzOGLSN])\\b",
+ "name": "keyword.operator.logical.shell"
+ }
+ ]
+ },
+ "logical_expression_context": {
+ "patterns": [
+ {
+ "include": "#regex_comparison"
+ },
+ {
+ "include": "#logical-expression"
+ },
+ {
+ "include": "#logical_expression_single"
+ },
+ {
+ "include": "#logical_expression_double"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#boolean"
+ },
+ {
+ "include": "#redirect_number"
+ },
+ {
+ "include": "#numeric_literal"
+ },
+ {
+ "include": "#pipeline"
+ },
+ {
+ "include": "#normal_statement_seperator"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#herestring"
+ },
+ {
+ "include": "#pathname"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#support"
+ }
+ ]
+ },
+ "logical_expression_double": {
+ "begin": "\\[\\[",
+ "end": "\\]\\]",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.logical-expression.shell"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.logical-expression.shell"
+ }
+ },
+ "name": "meta.scope.logical-expression.shell",
+ "patterns": [
+ {
+ "include": "#logical_expression_context"
+ }
+ ]
+ },
+ "logical_expression_single": {
+ "begin": "\\[",
+ "end": "\\]",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.logical-expression.shell"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.logical-expression.shell"
+ }
+ },
+ "name": "meta.scope.logical-expression.shell",
+ "patterns": [
+ {
+ "include": "#logical_expression_context"
+ }
+ ]
+ },
+ "loop": {
+ "patterns": [
+ {
+ "begin": "(?<=^|;|&|\\s)(for)\\s+(?=\\({2})",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.shell"
+ }
+ },
+ "end": "(?<=^|;|&|\\s)done(?=\\s|;|&|$|\\))",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.shell"
+ }
+ },
+ "name": "meta.scope.for-loop.shell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=^|;|&|\\s)(for)\\s+(.+?)\\s+(in)(?=\\s|;|&|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.shell"
+ },
+ "2": {
+ "name": "variable.other.loop.shell",
+ "patterns": [
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.control.shell"
+ }
+ },
+ "end": "(?<=^|;|&|\\s)done(?=\\s|;|&|$|\\))",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.shell"
+ }
+ },
+ "name": "meta.scope.for-in-loop.shell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=^|;|&|\\s)(while|until)(?=\\s|;|&|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.shell"
+ }
+ },
+ "end": "(?<=^|;|&|\\s)done(?=\\s|;|&|$|\\))",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.shell"
+ }
+ },
+ "name": "meta.scope.while-loop.shell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=^|;|&|\\s)(select)\\s+((?:[^\\s\\\\]|\\\\.)+)(?=\\s|;|&|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.shell"
+ },
+ "2": {
+ "name": "variable.other.loop.shell"
+ }
+ },
+ "end": "(?<=^|;|&|\\s)(done)(?=\\s|;|&|$|\\))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.shell"
+ }
+ },
+ "name": "meta.scope.select-block.shell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=^|;|&|\\s)case(?=\\s|;|&|$)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.shell"
+ }
+ },
+ "end": "(?<=^|;|&|\\s)esac(?=\\s|;|&|$)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.shell"
+ }
+ },
+ "name": "meta.scope.case-block.shell",
+ "patterns": [
+ {
+ "begin": "(?<=^|;|&|\\s)in(?=\\s|;|&|$)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.shell"
+ }
+ },
+ "end": "(?<=^|;|&|\\s)(?=esac(\\s|;|&|$))",
+ "name": "meta.scope.case-body.shell",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#case-clause"
+ }
+ ]
+ },
+ {
+ "include": "#initial_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=^|;|&|\\s)if(?=\\s|;|&|$)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.shell"
+ }
+ },
+ "end": "(?<=^|;|&|\\s)fi(?=\\s|;|&|$)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.shell"
+ }
+ },
+ "name": "meta.scope.if-block.shell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ]
+ }
+ ]
+ },
+ "math": {
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "match": "\\+{1,2}|-{1,2}|!|~|\\*{1,2}|/|%|<[<=]?|>[>=]?|==|!=|^|\\|{1,2}|&{1,2}|\\?|\\:|,|=|[*/%+\\-&^|]=|<<=|>>=",
+ "name": "keyword.operator.arithmetic.shell"
+ },
+ {
+ "match": "0[xX][0-9A-Fa-f]+",
+ "name": "constant.numeric.hex.shell"
+ },
+ {
+ "match": "0\\d+",
+ "name": "constant.numeric.octal.shell"
+ },
+ {
+ "match": "\\d{1,2}#[0-9a-zA-Z@_]+",
+ "name": "constant.numeric.other.shell"
+ },
+ {
+ "match": "\\d+",
+ "name": "constant.numeric.integer.shell"
+ }
+ ]
+ },
+ "misc_ranges": {
+ "patterns": [
+ {
+ "include": "#logical_expression_single"
+ },
+ {
+ "include": "#logical_expression_double"
+ },
+ {
+ "begin": "\\(\\(",
+ "end": "\\)\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.arithmetic.shell"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.arithmetic.shell"
+ }
+ },
+ "name": "meta.arithmetic.shell",
+ "patterns": [
+ {
+ "include": "#math"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!=)\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.subshell"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.subshell"
+ }
+ },
+ "name": "meta.scope.subshell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ]
+ },
+ {
+ "begin": "(?<![^ \\t])({)",
+ "end": "}",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.shell"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.shell"
+ }
+ },
+ "name": "meta.scope.group.shell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ]
+ }
+ ]
+ },
+ "modifiers": {
+ "match": "(?<=^|;|&|[ \\t])(?:export|declare|typeset|local|readonly)(?=[ \\t]|;|&|$)",
+ "name": "storage.modifier.$0.shell"
+ },
+ "normal_statement": {
+ "begin": "(?!^[ \\t]*+$)(?:(?<=^if | if |\\tif |^elif | elif |\\telif |^then | then |\\tthen |^else | else |\\telse |^while | while |\\twhile |^do | do |\\tdo )|(?<=(?:^|;|\\||&|!|\\(|\\{|\\`)))[ \\t]*+(?!nocorrect\\W|nocorrect\\$|function\\W|function\\$|foreach\\W|foreach\\$|repeat\\W|repeat\\$|logout\\W|logout\\$|coproc\\W|coproc\\$|select\\W|select\\$|while\\W|while\\$|pushd\\W|pushd\\$|until\\W|until\\$|case\\W|case\\$|done\\W|done\\$|elif\\W|elif\\$|else\\W|else\\$|esac\\W|esac\\$|popd\\W|popd\\$|then\\W|then\\$|time\\W|time\\$|for\\W|for\\$|end\\W|end\\$|fi\\W|fi\\$|do\\W|do\\$|in\\W|in\\$|if\\W|if\\$)",
+ "end": "(?=;|\\||&|\\n|\\)|\\`|\\{|\\}|[ \\t]*#|\\])(?<!\\\\)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.statement.shell",
+ "patterns": [
+ {
+ "include": "#function_definition"
+ },
+ {
+ "include": "#assignment"
+ },
+ {
+ "begin": "[ \\t]*+(?!(?:!|&|\\||\\(|\\)|\\{|\\[|<|>|#|\\n|$|;|[ \\t]))(?!foreach\\b(?!\\/)|select\\b(?!\\/)|repeat\\b(?!\\/)|until\\b(?!\\/)|while\\b(?!\\/)|case\\b(?!\\/)|done\\b(?!\\/)|elif\\b(?!\\/)|else\\b(?!\\/)|esac\\b(?!\\/)|then\\b(?!\\/)|for\\b(?!\\/)|end\\b(?!\\/)|in\\b(?!\\/)|fi\\b(?!\\/)|do\\b(?!\\/)|if\\b(?!\\/))(?!\\\\\\n?$)",
+ "end": "(?=;|\\||&|\\n|\\)|\\`|\\{|\\}|[ \\t]*#|\\])(?<!\\\\)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.statement.command.shell",
+ "patterns": [
+ {
+ "begin": "\\G",
+ "end": "(?= |\\t|;|\\||&|$|\\n|\\)|\\`)",
+ "beginCaptures": {},
+ "endCaptures": {},
+ "name": "meta.statement.command.name.shell",
+ "patterns": [
+ {
+ "include": "#modifiers"
+ },
+ {
+ "match": "(?<!\\w)(?:return|break)(?!\\w)",
+ "name": "entity.name.function.call.shell entity.name.command.shell keyword.control.$0.shell"
+ },
+ {
+ "match": "(?<!\\w)(?:unfunction|unsetopt|autoload|suspend|bindkey|builtin|getopts|command|declare|unalias|history|unlimit|typeset|source|printf|unhash|disown|ulimit|return|which|alias|break|false|print|shift|times|umask|umask|unset|read|type|exec|eval|wait|echo|dirs|jobs|kill|hash|stat|exit|test|trap|true|let|set|pwd|cd|fg|bg|fc|:|\\.)(?!\\/)(?!\\w)",
+ "name": "entity.name.function.call.shell entity.name.command.shell support.function.builtin.shell"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "match": "(?<=\\G|'|\"|\\}|\\))([^ \\n\\t\\r\"'=;&\\|`\\)\\{]+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.call.shell entity.name.command.shell"
+ }
+ }
+ },
+ {
+ "begin": "(?:\\G|(?<! |\\t|;|\\||&|\\n|\\{|#))((?:\\$)?)((?:(\")|(')))",
+ "end": "(?<!\\G)(?<=(?:\\2))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.statement.command.name.quoted.shell punctuation.definition.string.shell entity.name.function.call.shell entity.name.command.shell"
+ },
+ "2": {},
+ "3": {
+ "name": "meta.statement.command.name.quoted.shell string.quoted.double.shell punctuation.definition.string.begin.shell entity.name.function.call.shell entity.name.command.shell"
+ },
+ "4": {
+ "name": "meta.statement.command.name.quoted.shell string.quoted.single.shell punctuation.definition.string.begin.shell entity.name.function.call.shell entity.name.command.shell"
+ }
+ },
+ "endCaptures": {},
+ "patterns": [
+ {
+ "include": "#continuation_of_single_quoted_command_name"
+ },
+ {
+ "include": "#continuation_of_double_quoted_command_name"
+ }
+ ]
+ },
+ {
+ "include": "#line_continuation"
+ }
+ ]
+ },
+ {
+ "include": "#line_continuation"
+ },
+ {
+ "include": "#option"
+ },
+ {
+ "include": "#argument"
+ },
+ {
+ "include": "#statement_context"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "include": "#line_continuation"
+ },
+ {
+ "include": "#normal_statement_context"
+ }
+ ]
+ },
+ "normal_statement_context": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#pipeline"
+ },
+ {
+ "include": "#normal_statement_seperator"
+ },
+ {
+ "include": "#misc_ranges"
+ },
+ {
+ "include": "#boolean"
+ },
+ {
+ "include": "#redirect_number"
+ },
+ {
+ "include": "#numeric_literal"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#herestring"
+ },
+ {
+ "include": "#redirection"
+ },
+ {
+ "include": "#pathname"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#support"
+ }
+ ]
+ },
+ "normal_statement_seperator": {
+ "match": "(?:(?:(?:(?:(;)|(&&))|(\\|\\|))|(&))|\\n)",
+ "captures": {
+ "1": {
+ "name": "punctuation.terminator.statement.semicolon.shell"
+ },
+ "2": {
+ "name": "punctuation.separator.statement.and.shell"
+ },
+ "3": {
+ "name": "punctuation.separator.statement.or.shell"
+ },
+ "4": {
+ "name": "punctuation.separator.statement.background.shell"
+ }
+ }
+ },
+ "numeric_literal": {
+ "match": "[ \\t]*+(?<==| |\\t|^|\\{|\\(|\\[)(?:(?:(?:(?:(0[xX][0-9A-Fa-f]+)|(0\\d+))|(\\d{1,2}#[0-9a-zA-Z@_]+))|(-?\\d+\\.\\d+))|(-?\\d+))(?!>)",
+ "captures": {
+ "1": {
+ "name": "constant.numeric.shell constant.numeric.hex.shell"
+ },
+ "2": {
+ "name": "constant.numeric.shell constant.numeric.octal.shell"
+ },
+ "3": {
+ "name": "constant.numeric.shell constant.numeric.other.shell"
+ },
+ "4": {
+ "name": "constant.numeric.shell constant.numeric.integer.shell"
+ },
+ "5": {
+ "name": "constant.numeric.shell constant.numeric.integer.shell"
+ }
+ }
+ },
+ "option": {
+ "begin": "[ \\t]++(-)((?!(?:!|&|\\||\\(|\\)|\\{|\\[|<|>|#|\\n|$|;|[ \\t])))",
+ "end": "(?:(?=[ \\t])|(?=;|\\||&|\\n|\\)|\\`|\\{|\\}|[ \\t]*#|\\])(?<!\\\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "string.unquoted.argument.shell constant.other.option.dash.shell"
+ },
+ "2": {
+ "name": "string.unquoted.argument.shell constant.other.option.shell"
+ }
+ },
+ "endCaptures": {},
+ "contentName": "string.unquoted.argument constant.other.option",
+ "patterns": [
+ {
+ "include": "#option_context"
+ }
+ ]
+ },
+ "option_context": {
+ "patterns": [
+ {
+ "include": "#misc_ranges"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#heredoc"
+ },
+ {
+ "include": "#herestring"
+ },
+ {
+ "include": "#redirection"
+ },
+ {
+ "include": "#pathname"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#support"
+ }
+ ]
+ },
+ "pathname": {
+ "patterns": [
+ {
+ "match": "(?<=\\s|:|=|^)~",
+ "name": "keyword.operator.tilde.shell"
+ },
+ {
+ "match": "\\*|\\?",
+ "name": "keyword.operator.glob.shell"
+ },
+ {
+ "begin": "([?*+@!])(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.extglob.shell"
+ },
+ "2": {
+ "name": "punctuation.definition.extglob.shell"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.extglob.shell"
+ }
+ },
+ "name": "meta.structure.extglob.shell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ]
+ }
+ ]
+ },
+ "pipeline": {
+ "patterns": [
+ {
+ "match": "(?<=^|;|&|\\s)(time)(?=\\s|;|&|$)",
+ "name": "keyword.other.shell"
+ },
+ {
+ "match": "[|!]",
+ "name": "keyword.operator.pipe.shell"
+ }
+ ]
+ },
+ "redirect_number": {
+ "match": "(?<=[ \\t])(?:(1)|(2)|(\\d+))(?=>)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.redirect.stdout.shell"
+ },
+ "2": {
+ "name": "keyword.operator.redirect.stderr.shell"
+ },
+ "3": {
+ "name": "keyword.operator.redirect.$3.shell"
+ }
+ }
+ },
+ "redirection": {
+ "patterns": [
+ {
+ "begin": "[><]\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.shell"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.shell"
+ }
+ },
+ "name": "string.interpolated.process-substitution.shell",
+ "patterns": [
+ {
+ "include": "#initial_context"
+ }
+ ]
+ },
+ {
+ "match": "(?<![<>])(&>|\\d*>&\\d*|\\d*(>>|>|<)|\\d*<&|\\d*<>)(?![<>])",
+ "name": "keyword.operator.redirect.shell"
+ }
+ ]
+ },
+ "regex_comparison": {
+ "match": "\\=~",
+ "name": "keyword.operator.logical.regex.shell"
+ },
+ "regexp": {
+ "patterns": [
+ {
+ "match": ".+"
+ }
+ ]
+ },
+ "simple_options": {
+ "match": "(?:[ \\t]++\\-\\w+)*",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "[ \\t]++(\\-)(\\w+)",
+ "captures": {
+ "1": {
+ "name": "string.unquoted.argument.shell constant.other.option.dash.shell"
+ },
+ "2": {
+ "name": "string.unquoted.argument.shell constant.other.option.shell"
+ }
+ }
+ }
+ ]
+ }
+ }
+ },
+ "start_of_command": {
+ "match": "[ \\t]*+(?!(?:!|&|\\||\\(|\\)|\\{|\\[|<|>|#|\\n|$|;|[ \\t]))(?!foreach\\b(?!\\/)|select\\b(?!\\/)|repeat\\b(?!\\/)|until\\b(?!\\/)|while\\b(?!\\/)|case\\b(?!\\/)|done\\b(?!\\/)|elif\\b(?!\\/)|else\\b(?!\\/)|esac\\b(?!\\/)|then\\b(?!\\/)|for\\b(?!\\/)|end\\b(?!\\/)|in\\b(?!\\/)|fi\\b(?!\\/)|do\\b(?!\\/)|if\\b(?!\\/))(?!\\\\\\n?$)"
+ },
+ "start_of_double_quoted_command_name": {
+ "match": "(?!(?:!|&|\\||\\(|\\)|\\{|\\[|<|>|#|\\n|$|;|[ \\t]))(?:[ \\t]*+([^ \t\n'&;<>\\(\\)\\$`\\\\\"\\|]+(?!>)))?(?:(?:\\$\")|\")",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.call.shell entity.name.command.shell",
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "variable.language.special.wildcard.shell"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#numeric_literal"
+ },
+ {
+ "match": "(?<!\\w)(\\b(?:true|false)\\b)(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "constant.language.$1.shell"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "name": "meta.statement.command.name.quoted.shell string.quoted.double.shell punctuation.definition.string.begin.shell entity.name.function.call.shell entity.name.command.shell"
+ },
+ "start_of_single_quoted_command_name": {
+ "match": "(?!(?:!|&|\\||\\(|\\)|\\{|\\[|<|>|#|\\n|$|;|[ \\t]))(?:[ \\t]*+([^ \t\n'&;<>\\(\\)\\$`\\\\\"\\|]+(?!>)))?(?:(?:\\$')|')",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.call.shell entity.name.command.shell",
+ "patterns": [
+ {
+ "match": "\\*",
+ "name": "variable.language.special.wildcard.shell"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#numeric_literal"
+ },
+ {
+ "match": "(?<!\\w)(\\b(?:true|false)\\b)(?!\\w)",
+ "captures": {
+ "1": {
+ "name": "constant.language.$1.shell"
+ }
+ }
+ }
+ ]
+ }
+ },
+ "name": "meta.statement.command.name.quoted.shell string.quoted.single.shell punctuation.definition.string.begin.shell entity.name.function.call.shell entity.name.command.shell"
+ },
+ "string": {
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.shell"
+ },
+ {
+ "begin": "'",
+ "end": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.shell"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.shell"
+ }
+ },
+ "name": "string.quoted.single.shell"
+ },
+ {
+ "begin": "\\$?\"",
+ "end": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.shell"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.shell"
+ }
+ },
+ "name": "string.quoted.double.shell",
+ "patterns": [
+ {
+ "match": "\\\\[\\$\\n`\"\\\\]",
+ "name": "constant.character.escape.shell"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "\\$'",
+ "end": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.shell"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.shell"
+ }
+ },
+ "name": "string.quoted.single.dollar.shell",
+ "patterns": [
+ {
+ "match": "\\\\(?:a|b|e|f|n|r|t|v|\\\\|')",
+ "name": "constant.character.escape.ansi-c.shell"
+ },
+ {
+ "match": "\\\\[0-9]{3}\"",
+ "name": "constant.character.escape.octal.shell"
+ },
+ {
+ "match": "\\\\x[0-9a-fA-F]{2}\"",
+ "name": "constant.character.escape.hex.shell"
+ },
+ {
+ "match": "\\\\c.\"",
+ "name": "constant.character.escape.control-char.shell"
+ }
+ ]
+ }
+ ]
+ },
+ "support": {
+ "patterns": [
+ {
+ "match": "(?<=^|;|&|\\s)(?::|\\.)(?=\\s|;|&|$)",
+ "name": "support.function.builtin.shell"
+ }
+ ]
+ },
+ "variable": {
+ "patterns": [
+ {
+ "match": "(\\$)(\\@(?!\\w))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.shell variable.parameter.positional.all.shell"
+ },
+ "2": {
+ "name": "variable.parameter.positional.all.shell"
+ }
+ }
+ },
+ {
+ "match": "(\\$)([0-9](?!\\w))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.shell variable.parameter.positional.shell"
+ },
+ "2": {
+ "name": "variable.parameter.positional.shell"
+ }
+ }
+ },
+ {
+ "match": "(\\$)([-*#?$!0_](?!\\w))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.shell variable.language.special.shell"
+ },
+ "2": {
+ "name": "variable.language.special.shell"
+ }
+ }
+ },
+ {
+ "begin": "(\\$)(\\{)[ \\t]*+(?=\\d)",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.variable.shell variable.parameter.positional.shell"
+ },
+ "2": {
+ "name": "punctuation.section.bracket.curly.variable.begin.shell punctuation.definition.variable.shell variable.parameter.positional.shell"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.bracket.curly.variable.end.shell punctuation.definition.variable.shell variable.parameter.positional.shell"
+ }
+ },
+ "contentName": "meta.parameter-expansion",
+ "patterns": [
+ {
+ "match": "!|:[-=?]?|\\*|@|##|#|%%|%|\\/",
+ "name": "keyword.operator.expansion.shell"
+ },
+ {
+ "match": "(\\[)[^\\]]+(\\])",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.array.shell"
+ },
+ "2": {
+ "name": "punctuation.section.array.shell"
+ }
+ }
+ },
+ {
+ "match": "[0-9]+",
+ "name": "variable.parameter.positional.shell"
+ },
+ {
+ "match": "(?<!\\w)[a-zA-Z_0-9-]+(?!\\w)",
+ "name": "variable.other.normal.shell"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "begin": "(\\$)(\\{)",
+ "end": "\\}",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.variable.shell"
+ },
+ "2": {
+ "name": "punctuation.section.bracket.curly.variable.begin.shell punctuation.definition.variable.shell"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.bracket.curly.variable.end.shell punctuation.definition.variable.shell"
+ }
+ },
+ "contentName": "meta.parameter-expansion",
+ "patterns": [
+ {
+ "match": "!|:[-=?]?|\\*|@|##|#|%%|%|\\/",
+ "name": "keyword.operator.expansion.shell"
+ },
+ {
+ "match": "(\\[)[^\\]]+(\\])",
+ "captures": {
+ "1": {
+ "name": "punctuation.section.array.shell"
+ },
+ "2": {
+ "name": "punctuation.section.array.shell"
+ }
+ }
+ },
+ {
+ "match": "(?<!\\w)[a-zA-Z_0-9-]+(?!\\w)",
+ "name": "variable.other.normal.shell"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "match": "(\\$)(\\w+(?!\\w))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.shell variable.other.normal.shell"
+ },
+ "2": {
+ "name": "variable.other.normal.shell"
+ }
+ }
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/smalltalk.tmLanguage.json b/node_modules/shiki/languages/smalltalk.tmLanguage.json
new file mode 100644
index 0000000..6b6410a
--- /dev/null
+++ b/node_modules/shiki/languages/smalltalk.tmLanguage.json
@@ -0,0 +1,239 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/textmate/smalltalk.tmbundle/blob/master/Syntaxes/SmallTalk.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "name": "smalltalk",
+ "foldingStartMarker": "\\[",
+ "foldingStopMarker": "^\\s*\\]|^\\s\\]",
+ "keyEquivalent": "^~S",
+ "fileTypes": ["st"],
+ "patterns": [
+ {
+ "match": "\\$.",
+ "name": "constant.character.smalltalk"
+ },
+ {
+ "match": "\\b(class)\\b",
+ "name": "storage.type.$1.smalltalk"
+ },
+ {
+ "match": "\\b(extend|super|self)\\b",
+ "name": "storage.modifier.$1.smalltalk"
+ },
+ {
+ "match": "\\b(yourself|new|Smalltalk)\\b",
+ "name": "keyword.control.$1.smalltalk"
+ },
+ {
+ "match": ":=",
+ "name": "keyword.operator.assignment.smalltalk"
+ },
+ {
+ "comment": "Parse the variable declaration like: |a b c|",
+ "match": "/^:\\w*\\s*\\|/",
+ "name": "constant.other.block.smalltalk"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.instance-variables.begin.smalltalk"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\w+",
+ "name": "support.type.variable.declaration.smalltalk"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.instance-variables.end.smalltalk"
+ }
+ },
+ "match": "(\\|)(\\s*\\w[\\w ]*)(\\|)"
+ },
+ {
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": ":\\w+",
+ "name": "entity.name.function.block.smalltalk"
+ }
+ ]
+ }
+ },
+ "comment": "Parse the blocks like: [ :a :b | ...... ]",
+ "match": "\\[((\\s+|:\\w+)*)\\|"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "match": "<(?!<|=)|>(?!<|=|>)|<=|>=|=|==|~=|~~|>>|\\^",
+ "name": "keyword.operator.comparison.smalltalk"
+ },
+ {
+ "match": "(\\*|\\+|\\-|/|\\\\)",
+ "name": "keyword.operator.arithmetic.smalltalk"
+ },
+ {
+ "match": "(?<=[ \\t])!+|\\bnot\\b|&|\\band\\b|\\||\\bor\\b",
+ "name": "keyword.operator.logical.smalltalk"
+ },
+ {
+ "comment": "Fake reserved word -> main Smalltalk messages",
+ "match": "(?<!\\.)\\b(ensure|resume|retry|signal)\\b(?![?!])",
+ "name": "keyword.control.smalltalk"
+ },
+ {
+ "comment": "Fake conditionals. Smalltalk Methods.",
+ "match": "ifCurtailed:|ifTrue:|ifFalse:|whileFalse:|whileTrue:",
+ "name": "keyword.control.conditionals.smalltalk"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.other.inherited-class.smalltalk"
+ },
+ "3": {
+ "name": "keyword.control.smalltalk"
+ },
+ "4": {
+ "name": "entity.name.type.class.smalltalk"
+ }
+ },
+ "match": "(\\w+)(\\s+(subclass:))\\s*(\\w*)",
+ "name": "meta.class.smalltalk"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": [
+ {
+ "name": "punctuation.definition.comment.begin.smalltalk"
+ }
+ ],
+ "end": "\"",
+ "endCaptures": [
+ {
+ "name": "punctuation.definition.comment.end.smalltalk"
+ }
+ ],
+ "name": "comment.block.smalltalk"
+ },
+ {
+ "match": "\\b(true|false)\\b",
+ "name": "constant.language.boolean.smalltalk"
+ },
+ {
+ "match": "\\b(nil)\\b",
+ "name": "constant.language.nil.smalltalk"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.smalltalk"
+ }
+ },
+ "comment": "messages/methods",
+ "match": "(?>[a-zA-Z_]\\w*(?>[?!])?)(:)(?!:)",
+ "name": "constant.other.messages.smalltalk"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.smalltalk"
+ }
+ },
+ "comment": "symbols",
+ "match": "(#)[a-zA-Z_][a-zA-Z0-9_:]*",
+ "name": "constant.other.symbol.smalltalk"
+ },
+ {
+ "begin": "#\\[",
+ "beginCaptures": [
+ {
+ "name": "punctuation.definition.constant.begin.smalltalk"
+ }
+ ],
+ "end": "\\]",
+ "endCaptures": [
+ {
+ "name": "punctuation.definition.constant.end.smalltalk"
+ }
+ ],
+ "name": "meta.array.byte.smalltalk",
+ "patterns": [
+ {
+ "match": "[0-9]+(r[a-zA-Z0-9]+)?",
+ "name": "constant.numeric.integer.smalltalk"
+ },
+ {
+ "match": "[^\\s\\]]+",
+ "name": "invalid.illegal.character-not-allowed-here.smalltalk"
+ }
+ ]
+ },
+ {
+ "begin": "#\\(",
+ "beginCaptures": [
+ {
+ "name": "punctuation.definition.constant.begin.smalltalk"
+ }
+ ],
+ "comment": "Array Constructor",
+ "end": "\\)",
+ "endCaptures": [
+ {
+ "name": "punctuation.definition.constant.end.smalltalk"
+ }
+ ],
+ "name": "constant.other.array.smalltalk"
+ },
+ {
+ "begin": "'",
+ "beginCaptures": [
+ {
+ "name": "punctuation.definition.string.begin.smalltalk"
+ }
+ ],
+ "end": "'",
+ "endCaptures": [
+ {
+ "name": "punctuation.definition.string.end.smalltalk"
+ }
+ ],
+ "name": "string.quoted.single.smalltalk"
+ },
+ {
+ "match": "\\b[A-Z]\\w*\\b",
+ "name": "variable.other.constant.smalltalk"
+ }
+ ],
+ "repository": {
+ "numeric": {
+ "patterns": [
+ {
+ "match": "(?<!\\w)[0-9]+\\.[0-9]+s[0-9]*",
+ "name": "constant.numeric.float.scaled.smalltalk"
+ },
+ {
+ "match": "(?<!\\w)[0-9]+\\.[0-9]+([edq]-?[0-9]+)?",
+ "name": "constant.numeric.float.smalltalk"
+ },
+ {
+ "match": "(?<!\\w)-?[0-9]+r[a-zA-Z0-9]+",
+ "name": "constant.numeric.integer.radix.smalltalk"
+ },
+ {
+ "match": "(?<!\\w)-?[0-9]+([edq]-?[0-9]+)?",
+ "name": "constant.numeric.integer.smalltalk"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.smalltalk",
+ "uuid": "1ED64A34-BCB1-44E1-A0FE-84053003E232"
+}
diff --git a/node_modules/shiki/languages/solidity.tmLanguage.json b/node_modules/shiki/languages/solidity.tmLanguage.json
new file mode 100644
index 0000000..30a4731
--- /dev/null
+++ b/node_modules/shiki/languages/solidity.tmLanguage.json
@@ -0,0 +1,1208 @@
+{
+ "fileTypes": ["sol"],
+ "name": "solidity",
+ "patterns": [
+ {
+ "include": "#natspec"
+ },
+ {
+ "include": "#declaration-userType"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#global"
+ },
+ {
+ "include": "#control"
+ },
+ {
+ "include": "#constant"
+ },
+ {
+ "include": "#primitive"
+ },
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "include": "#type-modifier-extended-scope"
+ },
+ {
+ "include": "#declaration"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "include": "#assembly"
+ },
+ {
+ "include": "#punctuation"
+ }
+ ],
+ "repository": {
+ "natspec": {
+ "patterns": [
+ {
+ "begin": "/\\*\\*",
+ "end": "\\*/",
+ "name": "comment.block.documentation",
+ "patterns": [
+ {
+ "include": "#natspec-tags"
+ }
+ ]
+ },
+ {
+ "begin": "///",
+ "end": "$",
+ "name": "comment.block.documentation",
+ "patterns": [
+ {
+ "include": "#natspec-tags"
+ }
+ ]
+ }
+ ]
+ },
+ "natspec-tags": {
+ "patterns": [
+ {
+ "include": "#comment-todo"
+ },
+ {
+ "include": "#natspec-tag-title"
+ },
+ {
+ "include": "#natspec-tag-author"
+ },
+ {
+ "include": "#natspec-tag-notice"
+ },
+ {
+ "include": "#natspec-tag-dev"
+ },
+ {
+ "include": "#natspec-tag-param"
+ },
+ {
+ "include": "#natspec-tag-return"
+ },
+ {
+ "include": "#natspec-tag-custom"
+ },
+ {
+ "include": "#natspec-tag-inheritdoc"
+ }
+ ]
+ },
+ "natspec-tag-title": {
+ "match": "(@title)\\b",
+ "name": "storage.type.title.natspec"
+ },
+ "natspec-tag-author": {
+ "match": "(@author)\\b",
+ "name": "storage.type.author.natspec"
+ },
+ "natspec-tag-notice": {
+ "match": "(@notice)\\b",
+ "name": "storage.type.dev.natspec"
+ },
+ "natspec-tag-custom": {
+ "match": "(@custom:\\w*)\\b",
+ "name": "storage.type.dev.natspec"
+ },
+ "natspec-tag-inheritdoc": {
+ "match": "(@inheritdoc)\\b",
+ "name": "storage.type.author.natspec"
+ },
+ "natspec-tag-dev": {
+ "match": "(@dev)\\b",
+ "name": "storage.type.dev.natspec"
+ },
+ "natspec-tag-param": {
+ "match": "(@param)(\\s+([A-Za-z_]\\w*))?\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.param.natspec"
+ },
+ "3": {
+ "name": "variable.other.natspec"
+ }
+ }
+ },
+ "natspec-tag-return": {
+ "match": "(@return)(\\s+([A-Za-z_]\\w*))?\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.return.natspec"
+ },
+ "3": {
+ "name": "variable.other.natspec"
+ }
+ }
+ },
+ "comment": {
+ "patterns": [
+ {
+ "include": "#comment-line"
+ },
+ {
+ "include": "#comment-block"
+ }
+ ]
+ },
+ "comment-todo": {
+ "match": "(?i)\\b(FIXME|TODO|CHANGED|XXX|IDEA|HACK|NOTE|REVIEW|NB|BUG|QUESTION|COMBAK|TEMP|SUPPRESS|LINT|\\w+-disable|\\w+-suppress)\\b(?-i)",
+ "name": "keyword.comment.todo"
+ },
+ "comment-line": {
+ "begin": "(?<!tp:)//",
+ "end": "$",
+ "name": "comment.line",
+ "patterns": [
+ {
+ "include": "#comment-todo"
+ }
+ ]
+ },
+ "comment-block": {
+ "begin": "/\\*",
+ "end": "\\*/",
+ "name": "comment.block",
+ "patterns": [
+ {
+ "include": "#comment-todo"
+ }
+ ]
+ },
+ "operator": {
+ "patterns": [
+ {
+ "include": "#operator-logic"
+ },
+ {
+ "include": "#operator-mapping"
+ },
+ {
+ "include": "#operator-arithmetic"
+ },
+ {
+ "include": "#operator-binary"
+ },
+ {
+ "include": "#operator-assignment"
+ }
+ ]
+ },
+ "operator-logic": {
+ "match": "(==|\\!=|<(?!<)|<=|>(?!>)|>=|\\&\\&|\\|\\||\\:(?!=)|\\?|\\!)",
+ "name": "keyword.operator.logic"
+ },
+ "operator-mapping": {
+ "match": "(=>)",
+ "name": "keyword.operator.mapping"
+ },
+ "operator-arithmetic": {
+ "match": "(\\+|\\-|\\/|\\*)",
+ "name": "keyword.operator.arithmetic"
+ },
+ "operator-binary": {
+ "match": "(\\^|\\&|\\||<<|>>)",
+ "name": "keyword.operator.binary"
+ },
+ "operator-assignment": {
+ "match": "(\\:?=)",
+ "name": "keyword.operator.assignment"
+ },
+ "control": {
+ "patterns": [
+ {
+ "include": "#control-flow"
+ },
+ {
+ "include": "#control-using"
+ },
+ {
+ "include": "#control-import"
+ },
+ {
+ "include": "#control-pragma"
+ },
+ {
+ "include": "#control-underscore"
+ },
+ {
+ "include": "#control-unchecked"
+ },
+ {
+ "include": "#control-other"
+ }
+ ]
+ },
+ "control-flow": {
+ "patterns": [
+ {
+ "match": "\\b(if|else|for|while|do|break|continue|try|catch|finally|throw|return|global)\\b",
+ "name": "keyword.control.flow"
+ },
+ {
+ "begin": "\\b(returns)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow.return"
+ }
+ },
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#declaration-function-parameters"
+ }
+ ]
+ }
+ ]
+ },
+ "control-using": {
+ "patterns": [
+ {
+ "match": "\\b(using)\\b\\s+\\b([A-Za-z\\d_]+)\\b\\s+\\b(for)\\b\\s+\\b([A-Za-z\\d_]+)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.using"
+ },
+ "2": {
+ "name": "entity.name.type.library"
+ },
+ "3": {
+ "name": "keyword.control.for"
+ },
+ "4": {
+ "name": "entity.name.type"
+ }
+ }
+ },
+ {
+ "match": "\\b(using)\\b",
+ "name": "keyword.control.using"
+ }
+ ]
+ },
+ "control-import": {
+ "patterns": [
+ {
+ "begin": "\\b(import)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.import"
+ }
+ },
+ "end": "(?=\\;)",
+ "patterns": [
+ {
+ "begin": "((?=\\{))",
+ "end": "((?=\\}))",
+ "patterns": [
+ {
+ "match": "\\b(\\w+)\\b",
+ "name": "entity.name.type.interface"
+ }
+ ]
+ },
+ {
+ "match": "\\b(from)\\b",
+ "name": "keyword.control.import.from"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#punctuation"
+ }
+ ]
+ },
+ {
+ "match": "\\b(import)\\b",
+ "name": "keyword.control.import"
+ }
+ ]
+ },
+ "control-unchecked": {
+ "match": "\\b(unchecked)\\b",
+ "name": "keyword.control.unchecked"
+ },
+ "control-pragma": {
+ "match": "\\b(pragma)(?:\\s+([A-Za-z_]\\w+)\\s+([^\\s]+))?\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.pragma"
+ },
+ "2": {
+ "name": "entity.name.tag.pragma"
+ },
+ "3": {
+ "name": "constant.other.pragma"
+ }
+ }
+ },
+ "control-underscore": {
+ "match": "\\b(_)\\b",
+ "name": "constant.other.underscore"
+ },
+ "control-other": {
+ "match": "\\b(new|delete|emit)\\b",
+ "name": "keyword.control"
+ },
+ "constant": {
+ "patterns": [
+ {
+ "include": "#constant-boolean"
+ },
+ {
+ "include": "#constant-time"
+ },
+ {
+ "include": "#constant-currency"
+ }
+ ]
+ },
+ "constant-boolean": {
+ "match": "\\b(true|false)\\b",
+ "name": "constant.language.boolean"
+ },
+ "constant-time": {
+ "match": "\\b(seconds|minutes|hours|days|weeks|years)\\b",
+ "name": "constant.language.time"
+ },
+ "constant-currency": {
+ "match": "\\b(ether|wei|gwei|finney|szabo)\\b",
+ "name": "constant.language.currency"
+ },
+ "number": {
+ "patterns": [
+ {
+ "include": "#number-decimal"
+ },
+ {
+ "include": "#number-hex"
+ },
+ {
+ "include": "#number-scientific"
+ }
+ ]
+ },
+ "number-decimal": {
+ "match": "\\b([0-9_]+(\\.[0-9_]+)?)\\b",
+ "name": "constant.numeric.decimal"
+ },
+ "number-hex": {
+ "match": "\\b(0[xX][a-fA-F0-9]+)\\b",
+ "name": "constant.numeric.hexadecimal"
+ },
+ "number-scientific": {
+ "match": "\\b(?:0\\.(?:0[0-9]|[0-9][0-9_]?)|[0-9][0-9_]*(?:\\.\\d{1,2})?)(?:e[+-]?[0-9_]+)?",
+ "name": "constant.numeric.scientific"
+ },
+ "string": {
+ "patterns": [
+ {
+ "match": "\\\"(?:\\\\\"|[^\\\"])*\\\"",
+ "name": "string.quoted.double"
+ },
+ {
+ "match": "\\'(?:\\\\'|[^\\'])*\\'",
+ "name": "string.quoted.single"
+ }
+ ]
+ },
+ "primitive": {
+ "patterns": [
+ {
+ "include": "#number-decimal"
+ },
+ {
+ "include": "#number-hex"
+ },
+ {
+ "include": "#number-scientific"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ "type-primitive": {
+ "patterns": [
+ {
+ "begin": "\\b(address|string\\d*|bytes\\d*|int\\d*|uint\\d*|bool|hash\\d*)\\b(?:\\[\\])(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.type.primitive"
+ }
+ },
+ "end": "(\\))",
+ "patterns": [
+ {
+ "include": "#primitive"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#global"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "match": "\\b(address|string\\d*|bytes\\d*|int\\d*|uint\\d*|bool|hash\\d*)\\b",
+ "name": "support.type.primitive"
+ }
+ ]
+ },
+ "global": {
+ "patterns": [
+ {
+ "include": "#global-variables"
+ },
+ {
+ "include": "#global-functions"
+ }
+ ]
+ },
+ "global-variables": {
+ "patterns": [
+ {
+ "match": "\\b(this)\\b",
+ "name": "variable.language.this"
+ },
+ {
+ "match": "\\b(super)\\b",
+ "name": "variable.language.super"
+ },
+ {
+ "match": "\\b(abi)\\b",
+ "name": "variable.language.builtin.abi"
+ },
+ {
+ "match": "\\b(msg\\.sender|msg|block|tx|now)\\b",
+ "name": "variable.language.transaction"
+ },
+ {
+ "match": "\\b(tx\\.origin|tx\\.gasprice|msg\\.data|msg\\.sig|msg\\.value)\\b",
+ "name": "variable.language.transaction"
+ }
+ ]
+ },
+ "global-functions": {
+ "patterns": [
+ {
+ "match": "\\b(require|assert|revert)\\b",
+ "name": "keyword.control.exceptions"
+ },
+ {
+ "match": "\\b(selfdestruct|suicide)\\b",
+ "name": "keyword.control.contract"
+ },
+ {
+ "match": "\\b(addmod|mulmod|keccak256|sha256|sha3|ripemd160|ecrecover)\\b",
+ "name": "support.function.math"
+ },
+ {
+ "match": "\\b(unicode)\\b",
+ "name": "support.function.string"
+ },
+ {
+ "match": "\\b(blockhash|gasleft)\\b",
+ "name": "variable.language.transaction"
+ },
+ {
+ "match": "\\b(type)\\b",
+ "name": "variable.language.type"
+ }
+ ]
+ },
+ "type-modifier-access": {
+ "match": "\\b(internal|external|private|public)\\b",
+ "name": "storage.type.modifier.access"
+ },
+ "type-modifier-payable": {
+ "match": "\\b(nonpayable|payable)\\b",
+ "name": "storage.type.modifier.payable"
+ },
+ "type-modifier-constant": {
+ "match": "\\b(constant)\\b",
+ "name": "storage.type.modifier.readonly"
+ },
+ "type-modifier-immutable": {
+ "match": "\\b(immutable)\\b",
+ "name": "storage.type.modifier.readonly"
+ },
+ "type-modifier-extended-scope": {
+ "match": "\\b(pure|view|inherited|indexed|storage|memory|virtual|calldata|override|abstract)\\b",
+ "name": "storage.type.modifier.extendedscope"
+ },
+ "variable": {
+ "patterns": [
+ {
+ "match": "\\b(\\_\\w+)\\b",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.function"
+ }
+ }
+ },
+ {
+ "match": "(?:\\.)(\\w+)\\b",
+ "captures": {
+ "1": {
+ "name": "support.variable.property"
+ }
+ }
+ },
+ {
+ "match": "\\b(\\w+)\\b",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.other"
+ }
+ }
+ }
+ ]
+ },
+ "modifier-call": {
+ "patterns": [
+ {
+ "include": "#function-call"
+ },
+ {
+ "match": "\\b(\\w+)\\b",
+ "name": "entity.name.function.modifier"
+ }
+ ]
+ },
+ "declaration": {
+ "patterns": [
+ {
+ "include": "#declaration-contract"
+ },
+ {
+ "include": "#declaration-userType"
+ },
+ {
+ "include": "#declaration-interface"
+ },
+ {
+ "include": "#declaration-library"
+ },
+ {
+ "include": "#declaration-function"
+ },
+ {
+ "include": "#declaration-modifier"
+ },
+ {
+ "include": "#declaration-constructor"
+ },
+ {
+ "include": "#declaration-event"
+ },
+ {
+ "include": "#declaration-storage"
+ },
+ {
+ "include": "#declaration-error"
+ }
+ ]
+ },
+ "declaration-storage-field": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#control"
+ },
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "include": "#type-modifier-access"
+ },
+ {
+ "include": "#type-modifier-immutable"
+ },
+ {
+ "include": "#type-modifier-extend-scope"
+ },
+ {
+ "include": "#type-modifier-payable"
+ },
+ {
+ "include": "#type-modifier-constant"
+ },
+ {
+ "include": "#primitive"
+ },
+ {
+ "include": "#constant"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#punctuation"
+ }
+ ]
+ },
+ "declaration-storage": {
+ "patterns": [
+ {
+ "include": "#declaration-storage-mapping"
+ },
+ {
+ "include": "#declaration-struct"
+ },
+ {
+ "include": "#declaration-enum"
+ },
+ {
+ "include": "#declaration-storage-field"
+ }
+ ]
+ },
+ "declaration-userType": {
+ "match": "\\b(type)\\b\\s+(\\w+)\\b\\s+\\b(is)\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.userType"
+ },
+ "2": {
+ "name": "entity.name.type.userType"
+ },
+ "3": {
+ "name": "storage.modifier.is"
+ }
+ }
+ },
+ "declaration-contract": {
+ "patterns": [
+ {
+ "begin": "\\b(contract)\\b\\s+(\\w+)\\b\\s+\\b(is)\\b\\s+",
+ "end": "(?=\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.contract"
+ },
+ "2": {
+ "name": "entity.name.type.contract"
+ },
+ "3": {
+ "name": "storage.modifier.is"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\b(\\w+)\\b",
+ "name": "entity.name.type.contract.extend"
+ }
+ ]
+ },
+ {
+ "match": "\\b(contract)(\\s+([A-Za-z_]\\w*))?\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.contract"
+ },
+ "2": {
+ "name": "entity.name.type.contract"
+ }
+ }
+ }
+ ]
+ },
+ "declaration-interface": {
+ "patterns": [
+ {
+ "begin": "\\b(interface)\\b\\s+(\\w+)\\b\\s+\\b(is)\\b\\s+",
+ "end": "(?=\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.interface"
+ },
+ "2": {
+ "name": "entity.name.type.interface"
+ },
+ "3": {
+ "name": "storage.modifier.is"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\b(\\w+)\\b",
+ "name": "entity.name.type.interface.extend"
+ }
+ ]
+ },
+ {
+ "match": "\\b(interface)(\\s+([A-Za-z_]\\w*))?\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.interface"
+ },
+ "2": {
+ "name": "entity.name.type.interface"
+ }
+ }
+ }
+ ]
+ },
+ "declaration-library": {
+ "match": "\\b(library)(\\s+([A-Za-z_]\\w*))?\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.library"
+ },
+ "3": {
+ "name": "entity.name.type.library"
+ }
+ }
+ },
+ "declaration-struct": {
+ "patterns": [
+ {
+ "match": "\\b(struct)(\\s+([A-Za-z_]\\w*))?\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.struct"
+ },
+ "3": {
+ "name": "entity.name.type.struct"
+ }
+ }
+ },
+ {
+ "begin": "\\b(struct)\\b\\s*(\\w+)?\\b\\s*(?=\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.struct"
+ },
+ "2": {
+ "name": "entity.name.type.struct"
+ }
+ },
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "declaration-event": {
+ "patterns": [
+ {
+ "begin": "\\b(event)\\b(?:\\s+(\\w+)\\b)?",
+ "end": "(?=\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.event"
+ },
+ "2": {
+ "name": "entity.name.type.event"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "match": "\\b(?:(indexed)\\s)?(\\w+)(?:,\\s*|)",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier.indexed"
+ },
+ "2": {
+ "name": "variable.parameter.event"
+ }
+ }
+ },
+ {
+ "include": "#punctuation"
+ }
+ ]
+ },
+ {
+ "match": "\\b(event)(\\s+([A-Za-z_]\\w*))?\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.event"
+ },
+ "3": {
+ "name": "entity.name.type.event"
+ }
+ }
+ }
+ ]
+ },
+ "declaration-constructor": {
+ "patterns": [
+ {
+ "begin": "\\b(constructor)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.constructor"
+ }
+ },
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "begin": "\\G\\s*(?=\\()",
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#declaration-function-parameters"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\))",
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#type-modifier-access"
+ },
+ {
+ "include": "#function-call"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "match": "\\b(constructor)\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.constructor"
+ }
+ }
+ }
+ ]
+ },
+ "declaration-enum": {
+ "patterns": [
+ {
+ "begin": "\\b(enum)\\s+(\\w+)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.enum"
+ },
+ "2": {
+ "name": "entity.name.type.enum"
+ }
+ },
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "match": "\\b(\\w+)\\b",
+ "name": "variable.other.enummember"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "match": "\\b(enum)(\\s+([A-Za-z_]\\w*))?\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.enum"
+ },
+ "3": {
+ "name": "entity.name.type.enum"
+ }
+ }
+ }
+ ]
+ },
+ "declaration-function-parameters": {
+ "begin": "\\G\\s*(?=\\()",
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "include": "#type-modifier-extended-scope"
+ },
+ {
+ "match": "\\b([A-Z]\\w*)\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.struct"
+ }
+ }
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "declaration-function": {
+ "patterns": [
+ {
+ "begin": "\\b(function)\\s+(\\w+)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function"
+ },
+ "2": {
+ "name": "entity.name.function"
+ }
+ },
+ "end": "(?=\\{|;)",
+ "patterns": [
+ {
+ "include": "#natspec"
+ },
+ {
+ "include": "#global"
+ },
+ {
+ "include": "#declaration-function-parameters"
+ },
+ {
+ "include": "#type-modifier-access"
+ },
+ {
+ "include": "#type-modifier-payable"
+ },
+ {
+ "include": "#type-modifier-immutable"
+ },
+ {
+ "include": "#type-modifier-extended-scope"
+ },
+ {
+ "include": "#control-flow"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "include": "#modifier-call"
+ },
+ {
+ "include": "#punctuation"
+ }
+ ]
+ },
+ {
+ "match": "\\b(function)\\s+([A-Za-z_]\\w*)\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.function"
+ },
+ "2": {
+ "name": "entity.name.function"
+ }
+ }
+ }
+ ]
+ },
+ "declaration-modifier": {
+ "patterns": [
+ {
+ "begin": "\\b(modifier)\\b\\s*(\\w+)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.modifier"
+ },
+ "2": {
+ "name": "entity.name.function.modifier"
+ }
+ },
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#declaration-function-parameters"
+ },
+ {
+ "begin": "(?<=\\))",
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#declaration-function-parameters"
+ },
+ {
+ "include": "#type-modifier-access"
+ },
+ {
+ "include": "#type-modifier-payable"
+ },
+ {
+ "include": "#type-modifier-immutable"
+ },
+ {
+ "include": "#type-modifier-extended-scope"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "include": "#modifier-call"
+ },
+ {
+ "include": "#control-flow"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "match": "\\b(modifier)(\\s+([A-Za-z_]\\w*))?\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.modifier"
+ },
+ "3": {
+ "name": "entity.name.function"
+ }
+ }
+ }
+ ]
+ },
+ "declaration-storage-mapping": {
+ "patterns": [
+ {
+ "begin": "\\b(mapping)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.mapping"
+ }
+ },
+ "end": "(?=\\))",
+ "patterns": [
+ {
+ "include": "#declaration-storage-mapping"
+ },
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#operator"
+ }
+ ]
+ },
+ {
+ "match": "\\b(mapping)\\b",
+ "name": "storage.type.mapping"
+ }
+ ]
+ },
+ "declaration-error": {
+ "match": "\\b(error)(\\s+([A-Za-z_]\\w*))?\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.error"
+ },
+ "3": {
+ "name": "entity.name.type.error"
+ }
+ }
+ },
+ "function-call": {
+ "match": "\\b([A-Za-z_]\\w*)\\s*(\\()",
+ "captures": {
+ "1": {
+ "name": "entity.name.function"
+ },
+ "2": {
+ "name": "punctuation.parameters.begin"
+ }
+ }
+ },
+ "assembly": {
+ "patterns": [
+ {
+ "match": "\\b(assembly)\\b",
+ "name": "keyword.control.assembly"
+ },
+ {
+ "match": "\\b(let)\\b",
+ "name": "storage.type.assembly"
+ }
+ ]
+ },
+ "punctuation": {
+ "patterns": [
+ {
+ "match": ";",
+ "name": "punctuation.terminator.statement"
+ },
+ {
+ "match": "\\.",
+ "name": "punctuation.accessor"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator"
+ },
+ {
+ "match": "\\{",
+ "name": "punctuation.brace.curly.begin"
+ },
+ {
+ "match": "\\}",
+ "name": "punctuation.brace.curly.end"
+ },
+ {
+ "match": "\\[",
+ "name": "punctuation.brace.square.begin"
+ },
+ {
+ "match": "\\]",
+ "name": "punctuation.brace.square.end"
+ },
+ {
+ "match": "\\(",
+ "name": "punctuation.parameters.begin"
+ },
+ {
+ "match": "\\)",
+ "name": "punctuation.parameters.end"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.solidity",
+ "uuid": "ad87d2cd-8575-4afe-984e-9421a3788933"
+}
diff --git a/node_modules/shiki/languages/sparql.tmLanguage.json b/node_modules/shiki/languages/sparql.tmLanguage.json
new file mode 100644
index 0000000..b40e554
--- /dev/null
+++ b/node_modules/shiki/languages/sparql.tmLanguage.json
@@ -0,0 +1,40 @@
+{
+ "name": "sparql",
+ "scopeName": "source.sparql",
+ "fileTypes": ["rq", "sparql", "sq"],
+ "patterns": [
+ {
+ "include": "source.turtle"
+ },
+ {
+ "include": "#query-keyword-operators"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#expression-operators"
+ }
+ ],
+ "repository": {
+ "query-keyword-operators": {
+ "name": "keyword.control.sparql",
+ "match": "\\b(?i:define|select|distinct|reduced|from|named|construct|ask|describe|where|graph|having|bind|as|filter|optional|union|order|by|group|limit|offset|values|insert data|delete data|with|delete|insert|clear|silent|default|all|create|drop|copy|move|add|to|using|service|not exists|exists|not in|in|minus|load)\\b"
+ },
+ "functions": {
+ "name": "support.function.sparql",
+ "match": "\\b(?i:concat|regex|asc|desc|bound|isiri|isuri|isblank|isliteral|isnumeric|str|lang|datatype|sameterm|langmatches|avg|count|group_concat|separator|max|min|sample|sum|iri|uri|bnode|strdt|uuid|struuid|strlang|strlen|substr|ucase|lcase|strstarts|strends|contains|strbefore|strafter|encode_for_uri|replace|abs|round|ceil|floor|rand|now|year|month|day|hours|minutes|seconds|timezone|tz|md5|sha1|sha256|sha384|sha512|coalesce|if)\\b"
+ },
+ "variables": {
+ "name": "constant.variable.sparql.turtle",
+ "match": "(?<!\\w)[?$]\\w+"
+ },
+ "expression-operators": {
+ "name": "support.class.sparql",
+ "match": "(?:\\|\\||&&|=|!=|<|>|<=|>=|\\*|/|\\+|-|\\||\\^|\\?|\\!)"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/sql.tmLanguage.json b/node_modules/shiki/languages/sql.tmLanguage.json
new file mode 100644
index 0000000..bfdddb1
--- /dev/null
+++ b/node_modules/shiki/languages/sql.tmLanguage.json
@@ -0,0 +1,635 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/microsoft/vscode-mssql/blob/master/syntaxes/SQL.plist",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/microsoft/vscode-mssql/commit/cb5940297a8cef76daaf4a6b63c4968c9a12d17a",
+ "name": "sql",
+ "scopeName": "source.sql",
+ "patterns": [
+ {
+ "match": "((?<!@)@)\\b(\\w+)\\b",
+ "name": "text.variable"
+ },
+ {
+ "match": "(\\[)[^\\]]*(\\])",
+ "name": "text.bracketed"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.create.sql"
+ },
+ "2": {
+ "name": "keyword.other.sql"
+ },
+ "5": {
+ "name": "entity.name.function.sql"
+ }
+ },
+ "match": "(?i:^\\s*(create(?:\\s+or\\s+replace)?)\\s+(aggregate|conversion|database|domain|function|group|(unique\\s+)?index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\s+)(['\"`]?)(\\w+)\\4",
+ "name": "meta.create.sql"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.create.sql"
+ },
+ "2": {
+ "name": "keyword.other.sql"
+ }
+ },
+ "match": "(?i:^\\s*(drop)\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|rule|schema|sequence|table|tablespace|trigger|type|user|view))",
+ "name": "meta.drop.sql"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.create.sql"
+ },
+ "2": {
+ "name": "keyword.other.table.sql"
+ },
+ "3": {
+ "name": "entity.name.function.sql"
+ },
+ "4": {
+ "name": "keyword.other.cascade.sql"
+ }
+ },
+ "match": "(?i:\\s*(drop)\\s+(table)\\s+(\\w+)(\\s+cascade)?\\b)",
+ "name": "meta.drop.sql"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.create.sql"
+ },
+ "2": {
+ "name": "keyword.other.table.sql"
+ }
+ },
+ "match": "(?i:^\\s*(alter)\\s+(aggregate|conversion|database|domain|function|group|index|language|operator class|operator|proc(edure)?|rule|schema|sequence|table|tablespace|trigger|type|user|view)\\s+)",
+ "name": "meta.alter.sql"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.sql"
+ },
+ "2": {
+ "name": "storage.type.sql"
+ },
+ "3": {
+ "name": "constant.numeric.sql"
+ },
+ "4": {
+ "name": "storage.type.sql"
+ },
+ "5": {
+ "name": "constant.numeric.sql"
+ },
+ "6": {
+ "name": "storage.type.sql"
+ },
+ "7": {
+ "name": "constant.numeric.sql"
+ },
+ "8": {
+ "name": "constant.numeric.sql"
+ },
+ "9": {
+ "name": "storage.type.sql"
+ },
+ "10": {
+ "name": "constant.numeric.sql"
+ },
+ "11": {
+ "name": "storage.type.sql"
+ },
+ "12": {
+ "name": "storage.type.sql"
+ },
+ "13": {
+ "name": "storage.type.sql"
+ },
+ "14": {
+ "name": "constant.numeric.sql"
+ },
+ "15": {
+ "name": "storage.type.sql"
+ }
+ },
+ "match": "(?xi)\n\n\t\t\t\t# normal stuff, capture 1\n\t\t\t\t \\b(bigint|bigserial|bit|boolean|box|bytea|cidr|circle|date|double\\sprecision|inet|int|integer|line|lseg|macaddr|money|oid|path|point|polygon|real|serial|smallint|sysdate|text)\\b\n\n\t\t\t\t# numeric suffix, capture 2 + 3i\n\t\t\t\t|\\b(bit\\svarying|character\\s(?:varying)?|tinyint|var\\schar|float|interval)\\((\\d+)\\)\n\n\t\t\t\t# optional numeric suffix, capture 4 + 5i\n\t\t\t\t|\\b(char|number|varchar\\d?)\\b(?:\\((\\d+)\\))?\n\n\t\t\t\t# special case, capture 6 + 7i + 8i\n\t\t\t\t|\\b(numeric|decimal)\\b(?:\\((\\d+),(\\d+)\\))?\n\n\t\t\t\t# special case, captures 9, 10i, 11\n\t\t\t\t|\\b(times?)\\b(?:\\((\\d+)\\))?(\\swith(?:out)?\\stime\\szone\\b)?\n\n\t\t\t\t# special case, captures 12, 13, 14i, 15\n\t\t\t\t|\\b(timestamp)(?:(s|tz))?\\b(?:\\((\\d+)\\))?(\\s(with|without)\\stime\\szone\\b)?\n\n\t\t\t"
+ },
+ {
+ "match": "(?i:\\b((?:primary|foreign)\\s+key|references|on\\sdelete(\\s+cascade)?|nocheck|check|constraint|collate|default)\\b)",
+ "name": "storage.modifier.sql"
+ },
+ {
+ "match": "\\b\\d+\\b",
+ "name": "constant.numeric.sql"
+ },
+ {
+ "match": "(?i:\\b(select(\\s+(all|distinct))?|insert\\s+(ignore\\s+)?into|update|delete|from|set|where|group\\s+by|or|like|and|union(\\s+all)?|having|order\\s+by|limit|cross\\s+join|join|straight_join|(inner|(left|right|full)(\\s+outer)?)\\s+join|natural(\\s+(inner|(left|right|full)(\\s+outer)?))?\\s+join)\\b)",
+ "name": "keyword.other.DML.sql"
+ },
+ {
+ "match": "(?i:\\b(on|off|((is\\s+)?not\\s+)?null)\\b)",
+ "name": "keyword.other.DDL.create.II.sql"
+ },
+ {
+ "match": "(?i:\\bvalues\\b)",
+ "name": "keyword.other.DML.II.sql"
+ },
+ {
+ "match": "(?i:\\b(begin(\\s+work)?|start\\s+transaction|commit(\\s+work)?|rollback(\\s+work)?)\\b)",
+ "name": "keyword.other.LUW.sql"
+ },
+ {
+ "match": "(?i:\\b(grant(\\swith\\sgrant\\soption)?|revoke)\\b)",
+ "name": "keyword.other.authorization.sql"
+ },
+ {
+ "match": "(?i:\\bin\\b)",
+ "name": "keyword.other.data-integrity.sql"
+ },
+ {
+ "match": "(?i:^\\s*(comment\\s+on\\s+(table|column|aggregate|constraint|database|domain|function|index|operator|rule|schema|sequence|trigger|type|view))\\s+.*?\\s+(is)\\s+)",
+ "name": "keyword.other.object-comments.sql"
+ },
+ {
+ "match": "(?i)\\bAS\\b",
+ "name": "keyword.other.alias.sql"
+ },
+ {
+ "match": "(?i)\\b(DESC|ASC)\\b",
+ "name": "keyword.other.order.sql"
+ },
+ {
+ "match": "\\*",
+ "name": "keyword.operator.star.sql"
+ },
+ {
+ "match": "[!<>]?=|<>|<|>",
+ "name": "keyword.operator.comparison.sql"
+ },
+ {
+ "match": "-|\\+|/",
+ "name": "keyword.operator.math.sql"
+ },
+ {
+ "match": "\\|\\|",
+ "name": "keyword.operator.concatenator.sql"
+ },
+ {
+ "match": "(?i)\\b(approx_count_distinct|approx_percentile_cont|approx_percentile_disc|avg|checksum_agg|count|count_big|group|grouping|grouping_id|max|min|sum|stdev|stdevp|var|varp)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.aggregate.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(cume_dist|first_value|lag|last_value|lead|percent_rank|percentile_cont|percentile_disc)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.analytic.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(bit_count|get_bit|left_shift|right_shift|set_bit)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.bitmanipulation.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(cast|convert|parse|try_cast|try_convert|try_parse)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.conversion.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(collationproperty|tertiary_weights)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.collation.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(asymkey_id|asymkeyproperty|certproperty|cert_id|crypt_gen_random|decryptbyasymkey|decryptbycert|decryptbykey|decryptbykeyautoasymkey|decryptbykeyautocert|decryptbypassphrase|encryptbyasymkey|encryptbycert|encryptbykey|encryptbypassphrase|hashbytes|is_objectsigned|key_guid|key_id|key_name|signbyasymkey|signbycert|symkeyproperty|verifysignedbycert|verifysignedbyasymkey)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.cryptographic.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(cursor_status)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.cursor.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(sysdatetime|sysdatetimeoffset|sysutcdatetime|current_time(stamp)?|getdate|getutcdate|datename|datepart|day|month|year|datefromparts|datetime2fromparts|datetimefromparts|datetimeoffsetfromparts|smalldatetimefromparts|timefromparts|datediff|dateadd|datetrunc|eomonth|switchoffset|todatetimeoffset|isdate|date_bucket)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.datetime.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(datalength|ident_current|ident_incr|ident_seed|identity|sql_variant_property)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.datatype.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(coalesce|nullif)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.expression.sql"
+ }
+ }
+ },
+ {
+ "match": "(?<!@)@@(?i)\\b(cursor_rows|connections|cpu_busy|datefirst|dbts|error|fetch_status|identity|idle|io_busy|langid|language|lock_timeout|max_connections|max_precision|nestlevel|options|packet_errors|pack_received|pack_sent|procid|remserver|rowcount|servername|servicename|spid|textsize|timeticks|total_errors|total_read|total_write|trancount|version)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.globalvar.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(json|isjson|json_object|json_array|json_value|json_query|json_modify|json_path_exists)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.json.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(choose|iif|greatest|least)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.logical.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(abs|acos|asin|atan|atn2|ceiling|cos|cot|degrees|exp|floor|log|log10|pi|power|radians|rand|round|sign|sin|sqrt|square|tan)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.mathematical.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(app_name|applock_mode|applock_test|assemblyproperty|col_length|col_name|columnproperty|database_principal_id|databasepropertyex|db_id|db_name|file_id|file_idex|file_name|filegroup_id|filegroup_name|filegroupproperty|fileproperty|fulltextcatalogproperty|fulltextserviceproperty|index_col|indexkey_property|indexproperty|object_definition|object_id|object_name|object_schema_name|objectproperty|objectpropertyex|original_db_name|parsename|schema_id|schema_name|scope_identity|serverproperty|stats_date|type_id|type_name|typeproperty)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.metadata.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(rank|dense_rank|ntile|row_number)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.ranking.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(generate_series|opendatasource|openjson|openrowset|openquery|openxml|predict|string_split)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.rowset.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(certencoded|certprivatekey|current_user|database_principal_id|has_perms_by_name|is_member|is_rolemember|is_srvrolemember|original_login|permissions|pwdcompare|pwdencrypt|schema_id|schema_name|session_user|suser_id|suser_sid|suser_sname|system_user|suser_name|user_id|user_name)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.security.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(ascii|char|charindex|concat|difference|format|left|len|lower|ltrim|nchar|nodes|patindex|quotename|replace|replicate|reverse|right|rtrim|soundex|space|str|string_agg|string_escape|string_split|stuff|substring|translate|trim|unicode|upper)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.string.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(binary_checksum|checksum|compress|connectionproperty|context_info|current_request_id|current_transaction_id|decompress|error_line|error_message|error_number|error_procedure|error_severity|error_state|formatmessage|get_filestream_transaction_context|getansinull|host_id|host_name|isnull|isnumeric|min_active_rowversion|newid|newsequentialid|rowcount_big|session_context|session_id|xact_state)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.system.sql"
+ }
+ }
+ },
+ {
+ "match": "(?i)\\b(patindex|textptr|textvalid)\\b\\s*\\(",
+ "captures": {
+ "1": {
+ "name": "support.function.textimage.sql"
+ }
+ }
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "constant.other.database-name.sql"
+ },
+ "2": {
+ "name": "constant.other.table-name.sql"
+ }
+ },
+ "match": "(\\w+?)\\.(\\w+)"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#regexps"
+ },
+ {
+ "match": "\\b(?i)(abort|abort_after_wait|absent|absolute|accent_sensitivity|acceptable_cursopt|acp|action|activation|add|address|admin|aes_128|aes_192|aes_256|affinity|after|aggregate|algorithm|all_constraints|all_errormsgs|all_indexes|all_levels|all_results|allow_connections|allow_dup_row|allow_encrypted_value_modifications|allow_page_locks|allow_row_locks|allow_snapshot_isolation|alter|altercolumn|always|anonymous|ansi_defaults|ansi_null_default|ansi_null_dflt_off|ansi_null_dflt_on|ansi_nulls|ansi_padding|ansi_warnings|appdomain|append|application|apply|arithabort|arithignore|array|assembly|asymmetric|asynchronous_commit|at|atan2|atomic|attach|attach_force_rebuild_log|attach_rebuild_log|audit|auth_realm|authentication|auto|auto_cleanup|auto_close|auto_create_statistics|auto_drop|auto_shrink|auto_update_statistics|auto_update_statistics_async|automated_backup_preference|automatic|autopilot|availability|availability_mode|backup|backup_priority|base64|basic|batches|batchsize|before|between|bigint|binary|binding|bit|block|blockers|blocksize|bmk|both|break|broker|broker_instance|bucket_count|buffer|buffercount|bulk_logged|by|call|caller|card|case|catalog|catch|cert|certificate|change_retention|change_tracking|change_tracking_context|changes|char|character|character_set|check_expiration|check_policy|checkconstraints|checkindex|checkpoint|checksum|cleanup_policy|clear|clear_port|close|clustered|codepage|collection|column_encryption_key|column_master_key|columnstore|columnstore_archive|colv_80_to_100|colv_100_to_80|commit_differential_base|committed|compatibility_level|compress_all_row_groups|compression|compression_delay|concat_null_yields_null|concatenate|configuration|connect|continue|continue_after_error|contract|contract_name|control|conversation|conversation_group_id|conversation_handle|copy|copy_only|count_rows|counter|create(\\\\s+or\\\\s+alter)?|credential|cross|cryptographic|cryptographic_provider|cube|cursor|cursor_close_on_commit|cursor_default|data|data_compression|data_flush_interval_seconds|data_mirroring|data_purity|data_source|database|database_name|database_snapshot|datafiletype|date_correlation_optimization|date|datefirst|dateformat|date_format|datetime|datetime2|datetimeoffset|day(s)?|db_chaining|dbid|dbidexec|dbo_only|deadlock_priority|deallocate|dec|decimal|declare|decrypt|decrypt_a|decryption|default_database|default_language|default_logon_domain|default_schema|definition|delay|delayed_durability|delimitedtext|density_vector|dependent|des|description|desired_state|desx|differential|digest|disable|disable_broker|disable_def_cnst_chk|disabled|disk|distinct|distributed|distribution|drop|drop_existing|dts_buffers|dump|durability|dynamic|edition|elements|else|emergency|empty|enable|enable_broker|enabled|encoding|encrypted|encrypted_value|encryption|encryption_type|end|endpoint|endpoint_url|enhancedintegrity|entry|error_broker_conversations|errorfile|estimateonly|event|except|exec|executable|execute|exists|expand|expiredate|expiry_date|explicit|external|external_access|failover|failover_mode|failure_condition_level|fast|fast_forward|fastfirstrow|federated_service_account|fetch|field_terminator|fieldterminator|file|filelistonly|filegroup|filename|filestream|filestream_log|filestream_on|filetable|file_format|filter|first_row|fips_flagger|fire_triggers|first|firstrow|float|flush_interval_seconds|fmtonly|following|force|force_failover_allow_data_loss|force_service_allow_data_loss|forced|forceplan|formatfile|format_options|format_type|formsof|forward_only|free_cursors|free_exec_context|fullscan|fulltext|fulltextall|fulltextkey|function|generated|get|geography|geometry|global|go|goto|governor|guid|hadoop|hardening|hash|hashed|header_limit|headeronly|health_check_timeout|hidden|hierarchyid|histogram|histogram_steps|hits_cursors|hits_exec_context|hour(s)?|http|identity|identity_value|if|ifnull|ignore|ignore_constraints|ignore_dup_key|ignore_dup_row|ignore_triggers|image|immediate|implicit_transactions|include|include_null_values|index|inflectional|init|initiator|insensitive|insert|instead|int|integer|integrated|intersect|intermediate|interval_length_minutes|into|inuse_cursors|inuse_exec_context|io|is|isabout|iso_week|isolation|job_tracker_location|json|keep|keep_nulls|keep_replication|keepdefaults|keepfixed|keepidentity|keepnulls|kerberos|key|key_path|key_source|key_store_provider_name|keyset|kill|kilobytes_per_batch|labelonly|langid|language|last|lastrow|leading|legacy_cardinality_estimation|length|level|lifetime|lineage_80_to_100|lineage_100_to_80|listener_ip|listener_port|load|loadhistory|lob_compaction|local|local_service_name|locate|location|lock_escalation|lock_timeout|lockres|log|login|login_type|loop|manual|mark_in_use_for_removal|masked|master|matched|max_queue_readers|max_duration|max_outstanding_io_per_volume|maxdop|maxerrors|maxlength|maxtransfersize|max_plans_per_query|max_storage_size_mb|mediadescription|medianame|mediapassword|memogroup|memory_optimized|merge|message|message_forward_size|message_forwarding|microsecond|millisecond|minute(s)?|mirror_address|misses_cursors|misses_exec_context|mixed|modify|money|month|move|multi_user|must_change|name|namespace|nanosecond|native|native_compilation|nchar|ncharacter|never|new_account|new_broker|newname|next|no|no_browsetable|no_checksum|no_compression|no_infomsgs|no_triggers|no_truncate|nocount|noexec|noexpand|noformat|noinit|nolock|nonatomic|nonclustered|nondurable|none|norecompute|norecovery|noreset|norewind|noskip|not|notification|nounload|now|nowait|ntext|ntlm|nulls|numeric|numeric_roundabort|nvarchar|object|objid|oem|offline|old_account|online|operation_mode|open|openjson|optimistic|option|orc|out|outer|output|over|override|owner|ownership|pad_index|page|page_checksum|page_verify|pagecount|paglock|param|parameter_sniffing|parameter_type_expansion|parameterization|parquet|parseonly|partial|partition|partner|password|path|pause|percentage|permission_set|persisted|period|physical_only|plan_forcing_mode|policy|pool|population|ports|preceding|precision|predicate|presume_abort|primary|primary_role|print|prior|priority |priority_level|private|proc(edure)?|procedure_name|profile|provider|quarter|query_capture_mode|query_governor_cost_limit|query_optimizer_hotfixes|query_store|queue|quoted_identifier|raiserror|range|raw|rcfile|rc2|rc4|rc4_128|rdbms|read_committed_snapshot|read|read_only|read_write|readcommitted|readcommittedlock|readonly|readpast|readuncommitted|readwrite|real|rebuild|receive|recmodel_70backcomp|recompile|reconfigure|recovery|recursive|recursive_triggers|redo_queue|reject_sample_value|reject_type|reject_value|relative|remote|remote_data_archive|remote_proc_transactions|remote_service_name|remove|removed_cursors|removed_exec_context|reorganize|repeat|repeatable|repeatableread|replace|replica|replicated|replnick_100_to_80|replnickarray_80_to_100|replnickarray_100_to_80|required|required_cursopt|resample|reset|resource|resource_manager_location|respect|restart|restore|restricted_user|resume|retaindays|retention|return|revert|rewind|rewindonly|returns|robust|role|rollup|root|round_robin|route|row|rowdump|rowguidcol|rowlock|row_terminator|rows|rows_per_batch|rowsets_only|rowterminator|rowversion|rsa_1024|rsa_2048|rsa_3072|rsa_4096|rsa_512|safe|safety|sample|save|scalar|schema|schemabinding|scoped|scroll|scroll_locks|sddl|second|secexpr|secondary|secondary_only|secondary_role|secret|security|securityaudit|selective|self|send|sent|sequence|serde_method|serializable|server|service|service_broker|service_name|service_objective|session_timeout|session|sessions|seterror|setopts|sets|shard_map_manager|shard_map_name|sharded|shared_memory|show_statistics|showplan_all|showplan_text|showplan_xml|showplan_xml_with_recompile|shrinkdb|shutdown|sid|signature|simple|single_blob|single_clob|single_nclob|single_user|singleton|site|size_based_cleanup_mode|skip|smalldatetime|smallint|smallmoney|snapshot|snapshot_import|snapshotrestorephase|soap|softnuma|sort_in_tempdb|sorted_data|sorted_data_reorg|spatial|sql|sql_bigint|sql_binary|sql_bit|sql_char|sql_date|sql_decimal|sql_double|sql_float|sql_guid|sql_handle|sql_longvarbinary|sql_longvarchar|sql_numeric|sql_real|sql_smallint|sql_time|sql_timestamp|sql_tinyint|sql_tsi_day|sql_tsi_frac_second|sql_tsi_hour|sql_tsi_minute|sql_tsi_month|sql_tsi_quarter|sql_tsi_second|sql_tsi_week|sql_tsi_year|sql_type_date|sql_type_time|sql_type_timestamp|sql_varbinary|sql_varchar|sql_variant|sql_wchar|sql_wlongvarchar|ssl|ssl_port|standard|standby|start|start_date|started|stat_header|state|statement|static|statistics|statistics_incremental|statistics_norecompute|statistics_only|statman|stats|stats_stream|status|stop|stop_on_error|stopat|stopatmark|stopbeforemark|stoplist|stopped|string_delimiter|subject|supplemental_logging|supported|suspend|symmetric|synchronous_commit|synonym|sysname|system|system_time|system_versioning|table|tableresults|tablock|tablockx|take|tape|target|target_index|target_partition|tcp|temporal_history_retention|text|textimage_on|then|thesaurus|throw|time|timeout|timestamp|tinyint|to|top|torn_page_detection|track_columns_updated|trailing|tran|transaction|transfer|triple_des|triple_des_3key|truncate|trustworthy|try|tsql|type|type_desc|type_warning|tzoffset|uid|unbounded|uncommitted|unique|uniqueidentifier|unlimited|unload|unlock|unsafe|updlock|url|use|useplan|useroptions|use_type_default|using|utcdatetime|valid_xml|validation|value|values|varbinary|varchar|verbose|verifyonly|version|view_metadata|virtual_device|visiblity|wait_at_low_priority|waitfor|webmethod|week|weekday|weight|well_formed_xml|when|while|widechar|widechar_ansi|widenative|window|windows|with|within|within group|witness|without|without_array_wrapper|workload|wsdl|xact_abort|xlock|xml|xmlschema|xquery|xsinil|year|zone)\\b",
+ "name": "keyword.other.sql"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.scope.begin.sql"
+ },
+ "2": {
+ "name": "punctuation.section.scope.end.sql"
+ }
+ },
+ "comment": "Allow for special ↩ behavior",
+ "match": "(\\()(\\))",
+ "name": "meta.block.sql"
+ }
+ ],
+ "repository": {
+ "comments": {
+ "patterns": [
+ {
+ "begin": "(^[ \\t]+)?(?=--)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.sql"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "--",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.sql"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.double-dash.sql"
+ }
+ ]
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.sql"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": []
+ },
+ {
+ "include": "#comment-block"
+ }
+ ]
+ },
+ "comment-block": {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.sql"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block",
+ "patterns": [
+ {
+ "include": "#comment-block"
+ }
+ ]
+ },
+ "regexps": {
+ "patterns": [
+ {
+ "begin": "/(?=\\S.*/)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.sql"
+ }
+ },
+ "end": "/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.sql"
+ }
+ },
+ "name": "string.regexp.sql",
+ "patterns": [
+ {
+ "include": "#string_interpolation"
+ },
+ {
+ "match": "\\\\/",
+ "name": "constant.character.escape.slash.sql"
+ }
+ ]
+ },
+ {
+ "begin": "%r\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.sql"
+ }
+ },
+ "comment": "We should probably handle nested bracket pairs!?! -- Allan",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.sql"
+ }
+ },
+ "name": "string.regexp.modr.sql",
+ "patterns": [
+ {
+ "include": "#string_interpolation"
+ }
+ ]
+ }
+ ]
+ },
+ "string_escape": {
+ "match": "\\\\.",
+ "name": "constant.character.escape.sql"
+ },
+ "string_interpolation": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.sql"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.sql"
+ }
+ },
+ "match": "(#\\{)([^\\}]*)(\\})",
+ "name": "string.interpolated.sql"
+ },
+ "strings": {
+ "patterns": [
+ {
+ "captures": {
+ "2": {
+ "name": "punctuation.definition.string.begin.sql"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.sql"
+ }
+ },
+ "comment": "this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.",
+ "match": "(N)?(')[^']*(')",
+ "name": "string.quoted.single.sql"
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.sql"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.sql"
+ }
+ },
+ "name": "string.quoted.single.sql",
+ "patterns": [
+ {
+ "include": "#string_escape"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.sql"
+ },
+ "2": {
+ "name": "punctuation.definition.string.end.sql"
+ }
+ },
+ "comment": "this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.",
+ "match": "(`)[^`\\\\]*(`)",
+ "name": "string.quoted.other.backtick.sql"
+ },
+ {
+ "begin": "`",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.sql"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.sql"
+ }
+ },
+ "name": "string.quoted.other.backtick.sql",
+ "patterns": [
+ {
+ "include": "#string_escape"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.sql"
+ },
+ "2": {
+ "name": "punctuation.definition.string.end.sql"
+ }
+ },
+ "comment": "this is faster than the next begin/end rule since sub-pattern will match till end-of-line and SQL files tend to have very long lines.",
+ "match": "(\")[^\"#]*(\")",
+ "name": "string.quoted.double.sql"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.sql"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.sql"
+ }
+ },
+ "name": "string.quoted.double.sql",
+ "patterns": [
+ {
+ "include": "#string_interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "%\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.sql"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.sql"
+ }
+ },
+ "name": "string.other.quoted.brackets.sql",
+ "patterns": [
+ {
+ "include": "#string_interpolation"
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/ssh-config.tmLanguage.json b/node_modules/shiki/languages/ssh-config.tmLanguage.json
new file mode 100644
index 0000000..0d097e3
--- /dev/null
+++ b/node_modules/shiki/languages/ssh-config.tmLanguage.json
@@ -0,0 +1,84 @@
+{
+ "fileTypes": ["ssh_config", ".ssh/config", "sshd_config"],
+ "name": "ssh-config",
+ "patterns": [
+ {
+ "match": "\\b(A(cceptEnv|dd(ressFamily|KeysToAgent)|llow(AgentForwarding|Groups|StreamLocalForwarding|TcpForwarding|Users)|uth(enticationMethods|orized((Keys(Command(User)?|File)|Principals(Command(User)?|File)))))|B(anner|atchMode|ind(Address|Interface))|C(anonical(Domains|ize(FallbackLocal|Hostname|MaxDots|PermittedCNAMEs))|ertificateFile|hallengeResponseAuthentication|heckHostIP|hrootDirectory|iphers?|learAllForwardings|ientAlive(CountMax|Interval)|ompression(Level)?|onnect(Timeout|ionAttempts)|ontrolMaster|ontrolPath|ontrolPersist)|D(eny(Groups|Users)|isableForwarding|ynamicForward)|E(nableSSHKeysign|scapeChar|xitOnForwardFailure|xposeAuthInfo)|F(ingerprintHash|orceCommand|orward(Agent|X11(Timeout|Trusted)?))|G(atewayPorts|SSAPI(Authentication|CleanupCredentials|ClientIdentity|DelegateCredentials|KeyExchange|RenewalForcesRekey|ServerIdentity|StrictAcceptorCheck|TrustDns)|atewayPorts|lobalKnownHostsFile)|H(ashKnownHosts|ost(based(AcceptedKeyTypes|Authentication|KeyTypes|UsesNameFromPacketOnly)|Certificate|Key(Agent|Algorithms|Alias)?|Name))|I(dentit(iesOnly|y(Agent|File))|gnore(Rhosts|Unknown|UserKnownHosts)|nclude|PQoS)|K(bdInteractive(Authentication|Devices)|erberos(Authentication|GetAFSToken|OrLocalPasswd|TicketCleanup)|exAlgorithms)|L(istenAddress|ocal(Command|Forward)|oginGraceTime|ogLevel)|M(ACs|atch|ax(AuthTries|Sessions|Startups))|N(oHostAuthenticationForLocalhost|umberOfPasswordPrompts)|P(KCS11Provider|asswordAuthentication|ermit(EmptyPasswords|LocalCommand|Open|RootLogin|TTY|Tunnel|User(Environment|RC))|idFile|ort|referredAuthentications|rint(LastLog|Motd)|rotocol|roxy(Command|Jump|UseFdpass)|ubkey(AcceptedKeyTypes|Authentication))|R(Domain|SAAuthentication|ekeyLimit|emote(Command|Forward)|equestTTY|evoked(HostKeys|Keys)|hostsRSAAuthentication)|S(endEnv|erverAlive(CountMax|Interval)|treamLocalBind(Mask|Unlink)|trict(HostKeyChecking|Modes)|ubsystem|yslogFacility)|T(CPKeepAlive|rustedUserCAKeys|unnel(Device)?)|U(pdateHostKeys|se(BlacklistedKeys|DNS|Keychain|PAM|PrivilegedPort|r(KnownHostsFile)?))|V(erifyHostKeyDNS|ersionAddendum|isualHostKey)|X(11(DisplayOffset|Forwarding|UseLocalhost)|AuthLocation))\\b",
+ "name": "keyword.other.ssh-config"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.ssh-config"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.ssh-config"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.number-sign.ssh-config"
+ }
+ ]
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.ssh-config"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.ssh-config"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.double-slash.ssh-config"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.ssh-config"
+ },
+ "2": {
+ "name": "entity.name.section.ssh-config"
+ },
+ "3": {
+ "name": "meta.toc-list.ssh-config"
+ }
+ },
+ "match": "(?:^| |\\t)(Host)\\s+((.*))$"
+ },
+ {
+ "match": "\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b",
+ "name": "constant.numeric.ssh-config"
+ },
+ {
+ "match": "\\b[0-9]+\\b",
+ "name": "constant.numeric.ssh-config"
+ },
+ {
+ "match": "\\b(yes|no)\\b",
+ "name": "constant.language.ssh-config"
+ },
+ {
+ "match": "\\b[A-Z_]+\\b",
+ "name": "constant.language.ssh-config"
+ }
+ ],
+ "scopeName": "source.ssh-config",
+ "uuid": "B273855C-59D3-4DF3-9B7C-E68E0057D315"
+}
diff --git a/node_modules/shiki/languages/stata.tmLanguage.json b/node_modules/shiki/languages/stata.tmLanguage.json
new file mode 100644
index 0000000..f0786ec
--- /dev/null
+++ b/node_modules/shiki/languages/stata.tmLanguage.json
@@ -0,0 +1,3045 @@
+{
+ "scopeName": "source.stata",
+ "name": "stata",
+ "fileTypes": ["do", "ado", "mata"],
+ "foldingStartMarker": "\\{\\s*$",
+ "foldingStopMarker": "^\\s*\\}",
+ "patterns": [
+ {
+ "include": "#ascii-regex-functions"
+ },
+ {
+ "include": "#unicode-regex-functions"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#subscripts"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#builtin_variables"
+ },
+ {
+ "include": "#macro-commands"
+ },
+ {
+ "comment": "keywords that delimit flow conditionals",
+ "name": "keyword.control.conditional.stata",
+ "match": "\\b(if|else if|else)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.scalar.stata"
+ }
+ },
+ "match": "^\\s*(sca(lar|la|l)?(\\s+de(fine|fin|fi|f)?)?)\\s+(?!(drop|dir?|l(ist|is|i)?)\\s+)"
+ },
+ {
+ "begin": "\\b(mer(ge|g)?)\\s+(1|m|n)(:)(1|m|n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow.stata"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#constants"
+ },
+ {
+ "match": "m|n",
+ "name": ""
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.separator.key-value"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#constants"
+ },
+ {
+ "match": "m|n",
+ "name": ""
+ }
+ ]
+ }
+ },
+ "end": "using",
+ "patterns": [
+ {
+ "include": "#builtin_variables"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "match": "\\b(foreach)\\s+((?!in|of).+)\\s+(in|of var(list|lis|li|l)?|of new(list|lis|li|l)?|of num(list|lis|li|l)?)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.stata"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#macro-local-identifiers"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.control.flow.stata"
+ }
+ }
+ },
+ {
+ "begin": "\\b(foreach)\\s+((?!in|of).+)\\s+(of loc(al|a)?|of glo(bal|ba|b)?)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow.stata"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#macro-local-identifiers"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.control.flow.stata"
+ }
+ },
+ "end": "(?=\\s*\\{)",
+ "patterns": [
+ {
+ "include": "#macro-local-identifiers"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(forvalues|forvalue|forvalu|forval|forva|forv)\\s*",
+ "end": "\\s*(=)\\s*([^\\{]+)\\s*|(?=\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow.stata"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.stata"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#macro-local-identifiers"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ }
+ ]
+ },
+ {
+ "comment": "keywords that delimit loops",
+ "name": "keyword.control.flow.stata",
+ "match": "\\b(while|continue)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.stata"
+ }
+ },
+ "comment": "keywords that haven't fit into other groups (yet).",
+ "match": "\\b(as|ass|asse|asser|assert)\\b"
+ },
+ {
+ "match": "\\b(by(sort|sor|so|s)?|statsby|rolling|bootstrap|jackknife|permute|simulate|svy|mi est(imate|imat|ima|im|i)?|nestreg|stepwise|xi|fp|mfp|vers(ion|io|i)?)\\b",
+ "name": "storage.type.function.stata",
+ "comment": "prefixes that require a colon"
+ },
+ {
+ "comment": "prefixes that don't need a colon",
+ "name": "keyword.control.flow.stata",
+ "match": "\\b(qui(etly|etl|et|e)?|n(oisily|oisil|oisi|ois|oi|o)?|cap(ture|tur|tu|t)?)\\b:?"
+ },
+ {
+ "match": "\\s*(pr(ogram|ogra|ogr|og|o)?)\\s+((di(r)?|drop|l(ist|is|i)?)\\s+)([\\w&&[^0-9]]\\w{0,31})",
+ "captures": {
+ "1": {
+ "name": "storage.type.function.stata"
+ },
+ "3": {
+ "name": "storage.type.function.stata"
+ },
+ "7": {
+ "name": "entity.name.function.stata"
+ }
+ }
+ },
+ {
+ "begin": "^\\s*(pr(ogram|ogra|ogr|og|o)?)\\s+(de(fine|fin|fi|f)?\\s+)?",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.stata"
+ },
+ "3": {
+ "name": "storage.type.function.stata"
+ }
+ },
+ "end": "(?=,|\\n|/)",
+ "patterns": [
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "match": "[\\w&&[^0-9]]\\w{0,31}",
+ "name": "entity.name.function.stata"
+ },
+ {
+ "match": "[^A-za-z_0-9,\\n/ ]+",
+ "name": "invalid.illegal.name.stata"
+ }
+ ]
+ },
+ {
+ "match": "\\b(form(at|a)?)\\s*([\\w&&[^0-9]]\\w{0,31})*\\s*(%)(-)?(0)?([0-9]+)(.)([0-9]+)(e|f|g)(c)?",
+ "captures": {
+ "1": "keyword.functions.data.stata.test"
+ }
+ },
+ {
+ "include": "#braces-with-error"
+ },
+ {
+ "begin": "(?=syntax)",
+ "end": "\\n",
+ "patterns": [
+ {
+ "comment": "color before the comma",
+ "begin": "syntax",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.functions.program.stata"
+ }
+ },
+ "end": "(?=,|\\n)",
+ "patterns": [
+ {
+ "begin": "///",
+ "end": "\\n",
+ "name": "comment.block.stata"
+ },
+ {
+ "match": "\\[",
+ "name": "punctuation.definition.parameters.begin.stata"
+ },
+ {
+ "match": "\\]",
+ "name": "punctuation.definition.parameters.end.stata"
+ },
+ {
+ "match": "\\b(varlist|varname|newvarlist|newvarname|namelist|name|anything)\\b",
+ "name": "entity.name.type.class.stata"
+ },
+ {
+ "match": "\\b((if|in|using|fweight|aweight|pweight|iweight))\\b(/)?",
+ "captures": {
+ "2": {
+ "name": "entity.name.type.class.stata"
+ },
+ "3": {
+ "name": "keyword.operator.arithmetic.stata"
+ }
+ }
+ },
+ {
+ "match": "(/)?(exp)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.arithmetic.stata"
+ },
+ "2": {
+ "name": "entity.name.type.class.stata"
+ }
+ }
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#builtin_variables"
+ }
+ ]
+ },
+ {
+ "comment": "things to color after the comma",
+ "begin": ",",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.variable.begin.stata"
+ }
+ },
+ "end": "(?=\\n)",
+ "patterns": [
+ {
+ "begin": "///",
+ "end": "\\n",
+ "name": "comment.block.stata"
+ },
+ {
+ "comment": "color options with parentheses",
+ "begin": "([^\\s\\[\\]]+)(\\()",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#macro-local-identifiers"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ }
+ ],
+ "comment": "these are the names that become macros"
+ },
+ "2": {
+ "name": "keyword.operator.parentheses.stata"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.parentheses.stata"
+ }
+ },
+ "patterns": [
+ {
+ "comment": "the first word is often a type",
+ "match": "\\b(integer|intege|integ|inte|int|real|string|strin|stri|str)\\b",
+ "captures": {
+ "0": {
+ "name": "support.type.stata"
+ }
+ }
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#builtin_variables"
+ }
+ ]
+ },
+ {
+ "include": "#macro-local-identifiers"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#builtin_variables"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.functions.data.stata"
+ }
+ },
+ "comment": "one-word commands",
+ "match": "\\b(sa(v|ve)|saveold|destring|tostring|u(se|s)?|note(s)?|form(at|a)?)\\b"
+ },
+ {
+ "match": "\\b(exit|end)\\b",
+ "name": "keyword.functions.data.stata",
+ "comment": "programming commands"
+ },
+ {
+ "match": "\\b(replace)\\s+([^=]+)\\s*((==)|(=))",
+ "captures": {
+ "1": {
+ "name": "keyword.functions.data.stata"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#macro-local"
+ }
+ ]
+ },
+ "4": {
+ "name": "invalid.illegal.name.stata"
+ },
+ "5": {
+ "name": "keyword.operator.assignment.stata"
+ }
+ }
+ },
+ {
+ "match": "\\b(g(enerate|enerat|enera|ener|ene|en|e)?|egen)\\s+((byte|int|long|float|double|str[1-9]?[0-9]?[0-9]?[0-9]?|strL)\\s+)?([^=\\s]+)\\s*((==)|(=))",
+ "captures": {
+ "1": {
+ "name": "keyword.functions.data.stata"
+ },
+ "3": {
+ "name": "support.type.stata"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#reserved-names"
+ },
+ {
+ "include": "#macro-local"
+ }
+ ]
+ },
+ "7": {
+ "name": "invalid.illegal.name.stata"
+ },
+ "8": {
+ "name": "keyword.operator.assignment.stata"
+ }
+ }
+ },
+ {
+ "match": "\\b(set ty(pe|p)?)\\s+((byte|int|long|float|double|str[1-9]?[0-9]?[0-9]?[0-9]?|strL)?\\s+)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.functions.data.stata"
+ },
+ "3": {
+ "name": "support.type.stata"
+ }
+ }
+ },
+ {
+ "match": "\\b(la(bel|be|b)?)\\s+(var(iable|iabl|iab|ia|i)?)\\s+([\\w&&[^0-9]]\\w{0,31})\\s+(`\")(.+)(\"')",
+ "captures": {
+ "1": {
+ "name": "keyword.functions.data.stata"
+ },
+ "3": {
+ "name": "keyword.functions.data.stata"
+ },
+ "6": {
+ "name": "punctuation.definition.string.begin.stata"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#macro-local-escaped"
+ },
+ {
+ "include": "#macro-global-escaped"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "match": "[^`\\$]{81,}",
+ "name": "invalid.illegal.name.stata"
+ },
+ {
+ "match": ".",
+ "name": "string.quoted.double.compound.stata"
+ }
+ ]
+ },
+ "8": {
+ "name": "punctuation.definition.string.begin.stata"
+ }
+ }
+ },
+ {
+ "match": "\\b(la(bel|be|b)?)\\s+(var(iable|iabl|iab|ia|i)?)\\s+([\\w&&[^0-9]]\\w{0,31})\\s+(\")(.+)(\")",
+ "captures": {
+ "1": {
+ "name": "keyword.functions.data.stata"
+ },
+ "3": {
+ "name": "keyword.functions.data.stata"
+ },
+ "6": {
+ "name": "punctuation.definition.string.begin.stata"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#macro-local-escaped"
+ },
+ {
+ "include": "#macro-global-escaped"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "match": "[^`\\$]{81,}",
+ "name": "invalid.illegal.name.stata"
+ },
+ {
+ "match": ".",
+ "name": "string.quoted.double.stata"
+ }
+ ]
+ },
+ "8": {
+ "name": "punctuation.definition.string.begin.stata"
+ }
+ }
+ },
+ {
+ "match": "\\b(la(bel|be|b)?)\\s+(da(ta|t)?|var(iable|iabl|iab|ia|i)?|de(f|fi|fin|fine)?|val(ues|ue|u)?|di(r)?|l(ist|is|i)?|copy|drop|save|lang(uage|uag|ua|u)?)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.functions.data.stata"
+ },
+ "3": {
+ "name": "keyword.functions.data.stata"
+ }
+ }
+ },
+ {
+ "begin": "\\b(drop|keep)\\b(?!\\s+(if|in)\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.functions.data.stata"
+ }
+ },
+ "end": "\\n",
+ "patterns": [
+ {
+ "match": "\\b(if|in)\\b",
+ "name": "invalid.illegal.name.stata"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#operators"
+ }
+ ]
+ },
+ {
+ "match": "\\b(drop|keep)\\s+(if|in)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.functions.data.stata"
+ },
+ "2": {
+ "name": "keyword.functions.data.stata"
+ }
+ }
+ },
+ {
+ "begin": "^\\s*mata:?\\s*$",
+ "comment": "won't match single-line Mata statements",
+ "end": "^\\s*end\\s*$\\n?",
+ "name": "meta.embedded.block.mata",
+ "patterns": [
+ {
+ "match": "(?<![^$\\s])(version|pragma|if|else|for|while|do|break|continue|goto|return)(?=\\s)",
+ "name": "keyword.control.mata"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.eltype.mata"
+ },
+ "4": {
+ "name": "storage.type.orgtype.mata"
+ }
+ },
+ "match": "\\b(transmorphic|string|numeric|real|complex|(pointer(\\([^)]+\\))?))\\s+(matrix|vector|rowvector|colvector|scalar)\\b",
+ "name": "storage.type.mata"
+ },
+ {
+ "comment": "need to end with whitespace character here or last group doesn't match",
+ "match": "\\b(transmorphic|string|numeric|real|complex|(pointer(\\([^)]+\\))?))\\s",
+ "name": "storage.type.eltype.mata"
+ },
+ {
+ "match": "\\b(matrix|vector|rowvector|colvector|scalar)\\b",
+ "name": "storage.type.orgtype.mata"
+ },
+ {
+ "match": "\\!|\\+\\+|\\-\\-|\\&|\\'|\\?|\\\\|\\:\\:|\\,|\\.\\.|\\||\\=|\\=\\=|\\>\\=|\\<\\=|\\<|\\>|\\!\\=|\\#|\\+|\\-|\\*|\\^|\\/",
+ "name": "keyword.operator.mata"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(odbc)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.flow.stata"
+ }
+ },
+ "end": "\\n",
+ "patterns": [
+ {
+ "begin": "///",
+ "end": "\\n",
+ "name": "comment.block.stata"
+ },
+ {
+ "begin": "(exec?)(\\(\")",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.builtin.stata"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.stata"
+ }
+ },
+ "end": "\"\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.stata"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.sql"
+ }
+ ]
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "include": "#commands-other"
+ }
+ ],
+ "repository": {
+ "functions": {
+ "patterns": [
+ {
+ "begin": "\\b((abbrev|abs|acos|acosh|asin|asinh|atan|atan2|atanh|autocode|betaden|binomial|binomialp|binomialtail|binormalbofd|byteorder|c|cauchy|cauchyden|cauchytail|Cdhms|ceil|char|chi2|chi2den|chi2tail|Chms|cholesky|chop|clip|clock|Clock|cloglog|Cmdyhms|cofC|Cofc|cofd|Cofd|coleqnumb|collatorlocale|collatorversion|colnfreeparms|colnumb|colsof|comb|cond|corr|cos|cosh|daily|date|day|det|dgammapda|dgammapdada|dgammapdadx|dgammapdx|dgammapdxdx|dhms|diag|diag0cnt|digamma|dofb|dofc|dofC|dofh|dofm|dofq|dofw|dofy|dow|doy|dunnettprob|e|el|epsdouble|epsfloat|exp|exponential|exponentialden|exponentialtail|F|Fden|fileexists|fileread|filereaderror|filewrite|float|floor|fmtwidth|Ftail|gammaden|gammap|gammaptail|get|hadamard|halfyear|halfyearly|hh|hhC|hms|hofd|hours|hypergeometric|hypergeometricp|I|ibeta|ibetatail|igaussian|igaussianden|igaussiantail|indexnot|inlist|inrange|int|inv|invbinomial|invbinomialtail|invcauchy|invcauchytail|invchi2|invchi2tail|invcloglog|invdunnettprob|invexponential|invexponentialtail|invF|invFtail|invgammap|invgammaptail|invibeta|invibetatail|invigaussian|invigaussiantail|invlaplace|invlaplacetail|invlogistic|invlogistictail|invlogit|invnbinomial|invnbinomialtail|invnchi2|invnchi2tail|invnF|invnFtail|invnibeta|invnormal|invnt|invnttail|invpoisson|invpoissontail|invsym|invt|invttail|invtukeyprob|invweibull|invweibullph|invweibullphtail|invweibulltail|irecode|issymmetric|itrim|J|laplace|laplaceden|laplacetail|length|ln|lncauchyden|lnfactorial|lngamma|lnigammaden|lnigaussianden|lniwishartden|lnlaplaceden|lnmvnormalden|lnnormal|lnnormalden|lnwishartden|log|log10|logistic|logisticden|logistictail|logit|lower|ltrim|matmissing|matrix|matuniform|max|maxbyte|maxdouble|maxfloat|maxint|maxlong|mdy|mdyhms|mi|min|minbyte|mindouble|minfloat|minint|minlong|minutes|missing|mm|mmC|mod|mofd|month|monthly|mreldif|msofhours|msofminutes|msofseconds|nbetaden|nbinomial|nbinomialp|nbinomialtail|nchi2|nchi2den|nchi2tail|nF|nFden|nFtail|nibeta|normal|normalden|npnchi2|npnF|npnt|nt|ntden|nttail|nullmat|plural|poisson|poissonp|poissontail|proper|qofd|quarter|quarterly|r|rbeta|rbinomial|rcauchy|rchi2|real|recode|regexs|reldif|replay|return|reverse|rexponential|rgamma|rhypergeometric|rigaussian|rlaplace|rlogistic|rnbinomial|rnormal|round|roweqnumb|rownfreeparms|rownumb|rowsof|rpoisson|rt|rtrim|runiform|runiformint|rweibull|rweibullph|s|scalar|seconds|sign|sin|sinh|smallestdouble|soundex|sqrt|ss|ssC|string|stritrim|strlen|strlower|strltrim|strmatch|strofreal|strpos|strproper|strreverse|strrpos|strrtrim|strtoname|strtrim|strupper|subinstr|subinword|substr|sum|sweep|t|tan|tanh|tc|tC|td|tden|th|tin|tm|tobytes|tq|trace|trigamma|trim|trunc|ttail|tukeyprob|tw|twithin|uchar|udstrlen|udsubstr|uisdigit|uisletter|upper|ustrcompare|ustrcompareex|ustrfix|ustrfrom|ustrinvalidcnt|ustrleft|ustrlen|ustrlower|ustrltrim|ustrnormalize|ustrpos|ustrregexs|ustrreverse|ustrright|ustrrpos|ustrrtrim|ustrsortkey|ustrsortkeyex|ustrtitle|ustrto|ustrtohex|ustrtoname|ustrtrim|ustrunescape|ustrupper|ustrword|ustrwordcount|usubinstr|usubstr|vec|vecdiag|week|weekly|weibull|weibullden|weibullph|weibullphden|weibullphtail|weibulltail|wofd|word|wordbreaklocale|wordcount|year|yearly|yh|ym|yofd|yq|yw)|([\\w&&[^0-9]]\\w{0,31}))(\\()",
+ "beginCaptures": {
+ "2": {
+ "name": "support.function.builtin.stata"
+ },
+ "3": {
+ "name": "support.function.custom.stata"
+ },
+ "4": {
+ "name": "punctuation.definition.parameters.begin.stata"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.stata"
+ }
+ },
+ "patterns": [
+ {
+ "match": "[\\w&&[^0-9]]\\w{0,31}",
+ "name": "variable.parameter.function.stata"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.parentheses.stata"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.parentheses.stata"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ascii-regex-functions"
+ },
+ {
+ "include": "#unicode-regex-functions"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#subscripts"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#builtin_variables"
+ },
+ {
+ "include": "#macro-commands"
+ },
+ {
+ "include": "#braces-without-error"
+ },
+ {
+ "match": "[\\w&&[^0-9]]\\w{0,31}",
+ "name": "variable.parameter.function.stata"
+ }
+ ]
+ },
+ {
+ "include": "#ascii-regex-functions"
+ },
+ {
+ "include": "#unicode-regex-functions"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#subscripts"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#builtin_variables"
+ },
+ {
+ "include": "#macro-commands"
+ },
+ {
+ "include": "#braces-without-error"
+ }
+ ]
+ }
+ ]
+ },
+ "builtin_types": {
+ "patterns": [
+ {
+ "match": "\\b(byte|int|long|float|double|str[1-9]?[0-9]?[0-9]?[0-9]?|strL)\\b",
+ "name": "support.type.stata"
+ }
+ ]
+ },
+ "builtin_variables": {
+ "patterns": [
+ {
+ "match": "\\b(_b|_coef|_cons|_n|_N|_rc|_se)\\b",
+ "name": "variable.object.stata"
+ }
+ ]
+ },
+ "braces-without-error": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.block.begin.stata"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.block.end.stata"
+ }
+ }
+ }
+ ]
+ },
+ "braces-with-error": {
+ "patterns": [
+ {
+ "comment": "correct with nothing else on the line but whitespace; before and after; before; after; correct",
+ "begin": "(\\{)\\s*([^\\n]*)(?=\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.block.begin.stata"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "[^\\n]+",
+ "name": "illegal.invalid.name.stata"
+ }
+ ]
+ }
+ },
+ "end": "^\\s*(\\})\\s*$|^\\s*([^\\*\"\\}]+)\\s+(\\})\\s*([^\\*\"\\}/\\n]+)|^\\s*([^\"\\*\\}]+)\\s+(\\})|\\s*(\\})\\s*([^\"\\*\\}/\\n]+)|(\\})$",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.block.end.stata"
+ },
+ "2": {
+ "name": "invalid.illegal.name.stata"
+ },
+ "3": {
+ "name": "keyword.control.block.end.stata"
+ },
+ "4": {
+ "name": "invalid.illegal.name.stata"
+ },
+ "5": {
+ "name": "invalid.illegal.name.stata"
+ },
+ "6": {
+ "name": "keyword.control.block.end.stata"
+ },
+ "7": {
+ "name": "keyword.control.block.end.stata"
+ },
+ "8": {
+ "name": "invalid.illegal.name.stata"
+ },
+ "9": {
+ "name": "keyword.control.block.end.stata"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "commands-other": {
+ "patterns": [
+ {
+ "comment": "Add on commands",
+ "match": "\\b(reghdfe|ivreghdfe|ivreg2|outreg|gcollapse|gcontract|gegen|gisid|glevelsof|gquantiles)\\b",
+ "name": "keyword.control.flow.stata"
+ },
+ {
+ "comment": "Built in commands",
+ "match": "\\b(about|ac|acprplot|ado|adopath|adoupdate|alpha|ameans|an|ano|anov|anova|anova_terms|anovadef|aorder|ap|app|appe|appen|append|arch|arch_dr|arch_estat|arch_p|archlm|areg|areg_p|args|arima|arima_dr|arima_estat|arima_p|asmprobit|asmprobit_estat|asmprobit_lf|asmprobit_mfx__dlg|asmprobit_p|avplot|avplots|bcskew0|bgodfrey|binreg|bip0_lf|biplot|bipp_lf|bipr_lf|bipr_p|biprobit|bitest|bitesti|bitowt|blogit|bmemsize|boot|bootsamp|boxco_l|boxco_p|boxcox|boxcox_p|bprobit|br|break|brier|bro|brow|brows|browse|brr|brrstat|bs|bsampl_w|bsample|bsqreg|bstat|bstrap|ca|ca_estat|ca_p|cabiplot|camat|canon|canon_estat|canon_p|caprojection|cat|cc|cchart|cci|cd|censobs_table|centile|cf|char|chdir|checkdlgfiles|checkestimationsample|checkhlpfiles|checksum|chelp|ci|cii|cl|class|classutil|clear|cli|clis|clist|clog|clog_lf|clog_p|clogi|clogi_sw|clogit|clogit_lf|clogit_p|clogitp|clogl_sw|cloglog|clonevar|clslistarray|cluster|cluster_measures|cluster_stop|cluster_tree|cluster_tree_8|clustermat|cmdlog|cnr|cnre|cnreg|cnreg_p|cnreg_sw|cnsreg|codebook|collaps4|collapse|colormult_nb|colormult_nw|compare|compress|conf|confi|confir|confirm|conren|cons|const|constr|constra|constrai|constrain|constraint|contract|copy|copyright|copysource|cor|corc|corr|corr2data|corr_anti|corr_kmo|corr_smc|corre|correl|correla|correlat|correlate|corrgram|cou|coun|count|cprplot|crc|cret|cretu|cretur|creturn|cross|cs|cscript|cscript_log|csi|ct|ct_is|ctset|ctst_st|cttost|cumsp|cumul|cusum|cutil|d|datasig|datasign|datasigna|datasignat|datasignatu|datasignatur|datasignature|datetof|db|dbeta|de|dec|deco|decod|decode|deff|des|desc|descr|descri|describ|describe|dfbeta|dfgls|dfuller|di|di_g|dir|dirstats|dis|discard|disp|disp_res|disp_s|displ|displa|display|do|doe|doed|doedi|doedit|dotplot|dprobit|drawnorm|ds|ds_util|dstdize|duplicates|durbina|dwstat|dydx|ed|edi|edit|eivreg|emdef|en|enc|enco|encod|encode|eq|erase|ereg|ereg_lf|ereg_p|ereg_sw|ereghet|ereghet_glf|ereghet_glf_sh|ereghet_gp|ereghet_ilf|ereghet_ilf_sh|ereghet_ip|eret|eretu|eretur|ereturn|err|erro|error|est|est_cfexist|est_cfname|est_clickable|est_expand|est_hold|est_table|est_unhold|est_unholdok|estat|estat_default|estat_summ|estat_vce_only|esti|estimates|etodow|etof|etomdy|expand|expandcl|fac|fact|facto|factor|factor_estat|factor_p|factor_pca_rotated|factor_rotate|factormat|fcast|fcast_compute|fcast_graph|fdades|fdadesc|fdadescr|fdadescri|fdadescrib|fdadescribe|fdasav|fdasave|fdause|fh_st|file|filefilter|fillin|find_hlp_file|findfile|findit|fit|fl|fli|flis|flist|fpredict|frac_adj|frac_chk|frac_cox|frac_ddp|frac_dis|frac_dv|frac_in|frac_mun|frac_pp|frac_pq|frac_pv|frac_wgt|frac_xo|fracgen|fracplot|fracpoly|fracpred|fron_ex|fron_hn|fron_p|fron_tn|fron_tn2|frontier|ftodate|ftoe|ftomdy|ftowdate|gamhet_glf|gamhet_gp|gamhet_ilf|gamhet_ip|gamma|gamma_d2|gamma_p|gamma_sw|gammahet|gdi_hexagon|gdi_spokes|genrank|genstd|genvmean|gettoken|gladder|glim_l01|glim_l02|glim_l03|glim_l04|glim_l05|glim_l06|glim_l07|glim_l08|glim_l09|glim_l10|glim_l11|glim_l12|glim_lf|glim_mu|glim_nw1|glim_nw2|glim_nw3|glim_p|glim_v1|glim_v2|glim_v3|glim_v4|glim_v5|glim_v6|glim_v7|glm|glm_p|glm_sw|glmpred|glogit|glogit_p|gmeans|gnbre_lf|gnbreg|gnbreg_p|gomp_lf|gompe_sw|gomper_p|gompertz|gompertzhet|gomphet_glf|gomphet_glf_sh|gomphet_gp|gomphet_ilf|gomphet_ilf_sh|gomphet_ip|gphdot|gphpen|gphprint|gprefs|gprobi_p|gprobit|gr|gr7|gr_copy|gr_current|gr_db|gr_describe|gr_dir|gr_draw|gr_draw_replay|gr_drop|gr_edit|gr_editviewopts|gr_example|gr_example2|gr_export|gr_print|gr_qscheme|gr_query|gr_read|gr_rename|gr_replay|gr_save|gr_set|gr_setscheme|gr_table|gr_undo|gr_use|graph|grebar|greigen|grmeanby|gs_fileinfo|gs_filetype|gs_graphinfo|gs_stat|gsort|gwood|h|hareg|hausman|haver|he|heck_d2|heckma_p|heckman|heckp_lf|heckpr_p|heckprob|hel|help|hereg|hetpr_lf|hetpr_p|hetprob|hettest|hexdump|hilite|hist|histogram|hlogit|hlu|hmeans|hotel|hotelling|hprobit|hreg|hsearch|icd9|icd9_ff|icd9p|iis|impute|imtest|inbase|include|inf|infi|infil|infile|infix|inp|inpu|input|ins|insheet|insp|inspe|inspec|inspect|integ|inten|intreg|intreg_p|intrg2_ll|intrg_ll|intrg_ll2|ipolate|iqreg|ir|irf|irf_create|irfm|iri|is_svy|is_svysum|isid|istdize|ivprobit|ivprobit_p|ivreg|ivreg_footnote|ivtob_lf|ivtobit|ivtobit_p|jacknife|jknife|jkstat|joinby|kalarma1|kap|kapmeier|kappa|kapwgt|kdensity|ksm|ksmirnov|ktau|kwallis|labelbook|ladder|levelsof|leverage|lfit|lfit_p|li|lincom|line|linktest|lis|list|lloghet_glf|lloghet_glf_sh|lloghet_gp|lloghet_ilf|lloghet_ilf_sh|lloghet_ip|llogi_sw|llogis_p|llogist|llogistic|llogistichet|lnorm_lf|lnorm_sw|lnorma_p|lnormal|lnormalhet|lnormhet_glf|lnormhet_glf_sh|lnormhet_gp|lnormhet_ilf|lnormhet_ilf_sh|lnormhet_ip|lnskew0|loadingplot|(?<!\\.)log|logi|logis_lf|logistic|logistic_p|logit|logit_estat|logit_p|loglogs|logrank|loneway|lookfor|lookup|lowess|lpredict|lrecomp|lroc|lrtest|ls|lsens|lsens_x|lstat|ltable|ltriang|lv|lvr2plot|m|ma|mac|macr|macro|makecns|man|manova|manovatest|mantel|mark|markin|markout|marksample|mat|mat_capp|mat_order|mat_put_rr|mat_rapp|mata|mata_clear|mata_describe|mata_drop|mata_matdescribe|mata_matsave|mata_matuse|mata_memory|mata_mlib|mata_mosave|mata_rename|mata_which|matalabel|matcproc|matlist|matname|matr|matri|matrix|matrix_input__dlg|matstrik|mcc|mcci|md0_|md1_|md1debug_|md2_|md2debug_|mds|mds_estat|mds_p|mdsconfig|mdslong|mdsmat|mdsshepard|mdytoe|mdytof|me_derd|mean|means|median|memory|memsize|mfp|mfx|mhelp|mhodds|minbound|mixed_ll|mixed_ll_reparm|mkassert|mkdir|mkmat|mkspline|ml|ml_adjs|ml_bhhhs|ml_c_d|ml_check|ml_clear|ml_cnt|ml_debug|ml_defd|ml_e0|ml_e0_bfgs|ml_e0_cycle|ml_e0_dfp|ml_e0i|ml_e1|ml_e1_bfgs|ml_e1_bhhh|ml_e1_cycle|ml_e1_dfp|ml_e2|ml_e2_cycle|ml_ebfg0|ml_ebfr0|ml_ebfr1|ml_ebh0q|ml_ebhh0|ml_ebhr0|ml_ebr0i|ml_ecr0i|ml_edfp0|ml_edfr0|ml_edfr1|ml_edr0i|ml_eds|ml_eer0i|ml_egr0i|ml_elf|ml_elf_bfgs|ml_elf_bhhh|ml_elf_cycle|ml_elf_dfp|ml_elfi|ml_elfs|ml_enr0i|ml_enrr0|ml_erdu0|ml_erdu0_bfgs|ml_erdu0_bhhh|ml_erdu0_bhhhq|ml_erdu0_cycle|ml_erdu0_dfp|ml_erdu0_nrbfgs|ml_exde|ml_footnote|ml_geqnr|ml_grad0|ml_graph|ml_hbhhh|ml_hd0|ml_hold|ml_init|ml_inv|ml_log|ml_max|ml_mlout|ml_mlout_8|ml_model|ml_nb0|ml_opt|ml_p|ml_plot|ml_query|ml_rdgrd|ml_repor|ml_s_e|ml_score|ml_searc|ml_technique|ml_unhold|mleval|mlf_|mlmatbysum|mlmatsum|mlog|mlogi|mlogit|mlogit_footnote|mlogit_p|mlopts|mlsum|mlvecsum|mnl0_|mor|more|mov|move|mprobit|mprobit_lf|mprobit_p|mrdu0_|mrdu1_|mvdecode|mvencode|mvreg|mvreg_estat|nbreg|nbreg_al|nbreg_lf|nbreg_p|nbreg_sw|nestreg|net|newey|newey_p|news|nl|nlcom|nlcom_p|nlexp2|nlexp2a|nlexp3|nlgom3|nlgom4|nlinit|nllog3|nllog4|nlog_rd|nlogit|nlogit_p|nlogitgen|nlogittree|nlpred|nobreak|notes_dlg|nptrend|numlabel|numlist|old_ver|olo|olog|ologi|ologi_sw|ologit|ologit_p|ologitp|on|one|onew|onewa|oneway|op_colnm|op_comp|op_diff|op_inv|op_str|opr|opro|oprob|oprob_sw|oprobi|oprobi_p|oprobit|oprobitp|opts_exclusive|order|orthog|orthpoly|ou|out|outf|outfi|outfil|outfile|outs|outsh|outshe|outshee|outsheet|ovtest|pac|palette|parse_dissim|pause|pca|pca_display|pca_estat|pca_p|pca_rotate|pcamat|pchart|pchi|pcorr|pctile|pentium|pergram|personal|peto_st|pkcollapse|pkcross|pkequiv|pkexamine|pkshape|pksumm|plugin|pnorm|poisgof|poiss_lf|poiss_sw|poisso_p|poisson|poisson_estat|post|postclose|postfile|postutil|pperron|prais|prais_e|prais_e2|prais_p|predict|predictnl|preserve|print|prob|probi|probit|probit_estat|probit_p|proc_time|procoverlay|procrustes|procrustes_estat|procrustes_p|profiler|prop|proportion|prtest|prtesti|pwcorr|pwd|qs|qby|qbys|qchi|qladder|qnorm|qqplot|qreg|qreg_c|qreg_p|qreg_sw|qu|quadchk|quantile|que|quer|query|range|ranksum|ratio|rchart|rcof|recast|recode|reg|reg3|reg3_p|regdw|regr|regre|regre_p2|regres|regres_p|regress|regress_estat|regriv_p|remap|ren|rena|renam|rename|renpfix|repeat|reshape|restore|ret|retu|retur|return|rmdir|robvar|roccomp|rocf_lf|rocfit|rocgold|rocplot|roctab|rologit|rologit_p|rot|rota|rotat|rotate|rotatemat|rreg|rreg_p|ru|run|runtest|rvfplot|rvpplot|safesum|sample|sampsi|savedresults|sc|scatter|scm_mine|sco|scob_lf|scob_p|scobi_sw|scobit|scor|score|scoreplot|scoreplot_help|scree|screeplot|screeplot_help|sdtest|sdtesti|se|search|separate|seperate|serrbar|serset|set|set_defaults|sfrancia|sh|she|shel|shell|shewhart|signestimationsample|signrank|signtest|simul|sktest|sleep|slogit|slogit_d2|slogit_p|smooth|snapspan|so|sor|sort|spearman|spikeplot|spikeplt|spline_x|split|sqreg|sqreg_p|sret|sretu|sretur|sreturn|ssc|st|st_ct|st_hc|st_hcd|st_hcd_sh|st_is|st_issys|st_note|st_promo|st_set|st_show|st_smpl|st_subid|stack|stbase|stci|stcox|stcox_estat|stcox_fr|stcox_fr_ll|stcox_p|stcox_sw|stcoxkm|stcstat|stcurv|stcurve|stdes|stem|stepwise|stfill|stgen|stir|stjoin|stmc|stmh|stphplot|stphtest|stptime|strate|streg|streg_sw|streset|sts|stset|stsplit|stsum|sttocc|sttoct|stvary|su|suest|sum|summ|summa|summar|summari|summariz|summarize|sunflower|sureg|survcurv|survsum|svar|svar_p|svmat|svy_disp|svy_dreg|svy_est|svy_est_7|svy_estat|svy_get|svy_gnbreg_p|svy_head|svy_header|svy_heckman_p|svy_heckprob_p|svy_intreg_p|svy_ivreg_p|svy_logistic_p|svy_logit_p|svy_mlogit_p|svy_nbreg_p|svy_ologit_p|svy_oprobit_p|svy_poisson_p|svy_probit_p|svy_regress_p|svy_sub|svy_sub_7|svy_x|svy_x_7|svy_x_p|svydes|svygen|svygnbreg|svyheckman|svyheckprob|svyintreg|svyintrg|svyivreg|svylc|svylog_p|svylogit|svymarkout|svymean|svymlog|svymlogit|svynbreg|svyolog|svyologit|svyoprob|svyoprobit|svyopts|svypois|svypoisson|svyprobit|svyprobt|svyprop|svyratio|svyreg|svyreg_p|svyregress|svyset|svytab|svytest|svytotal|sw|swilk|symmetry|symmi|symplot|sysdescribe|sysdir|sysuse|szroeter|ta|tab|tab1|tab2|tab_or|tabd|tabdi|tabdis|tabdisp|tabi|table|tabodds|tabstat|tabu|tabul|tabula|tabulat|tabulate|te|tes|test|testnl|testparm|teststd|tetrachoric|time_it|timer|tis|tob|tobi|tobit|tobit_p|tobit_sw|token|tokeni|tokeniz|tokenize|total|translate|translator|transmap|treat_ll|treatr_p|treatreg|trim|trnb_cons|trnb_mean|trpoiss_d2|trunc_ll|truncr_p|truncreg|tsappend|tset|tsfill|tsline|tsline_ex|tsreport|tsrevar|tsrline|tsset|tssmooth|tsunab|ttest|ttesti|tut_chk|tut_wait|tutorial|tw|tware_st|two|twoway|twoway__fpfit_serset|twoway__function_gen|twoway__histogram_gen|twoway__ipoint_serset|twoway__ipoints_serset|twoway__kdensity_gen|twoway__lfit_serset|twoway__normgen_gen|twoway__pci_serset|twoway__qfit_serset|twoway__scatteri_serset|twoway__sunflower_gen|twoway_ksm_serset|ty|typ|type|typeof|unab|unabbrev|unabcmd|update|uselabel|var|var_mkcompanion|var_p|varbasic|varfcast|vargranger|varirf|varirf_add|varirf_cgraph|varirf_create|varirf_ctable|varirf_describe|varirf_dir|varirf_drop|varirf_erase|varirf_graph|varirf_ograph|varirf_rename|varirf_set|varirf_table|varlmar|varnorm|varsoc|varstable|varstable_w|varstable_w2|varwle|vec|vec_fevd|vec_mkphi|vec_p|vec_p_w|vecirf_create|veclmar|veclmar_w|vecnorm|vecnorm_w|vecrank|vecstable|verinst|vers|versi|versio|version|view|viewsource|vif|vwls|wdatetof|webdescribe|webseek|webuse|wh|whelp|whi|which|wilc_st|wilcoxon|win|wind|windo|window|winexec|wntestb|wntestq|xchart|xcorr|xi|xmlsav|xmlsave|xmluse|xpose|xsh|xshe|xshel|xshell|xt_iis|xt_tis|xtab_p|xtabond|xtbin_p|xtclog|xtcloglog|xtcloglog_d2|xtcloglog_pa_p|xtcloglog_re_p|xtcnt_p|xtcorr|xtdata|xtdes|xtfront_p|xtfrontier|xtgee|xtgee_elink|xtgee_estat|xtgee_makeivar|xtgee_p|xtgee_plink|xtgls|xtgls_p|xthaus|xthausman|xtht_p|xthtaylor|xtile|xtint_p|xtintreg|xtintreg_d2|xtintreg_p|xtivreg|xtline|xtline_ex|xtlogit|xtlogit_d2|xtlogit_fe_p|xtlogit_pa_p|xtlogit_re_p|xtmixed|xtmixed_estat|xtmixed_p|xtnb_fe|xtnb_lf|xtnbreg|xtnbreg_pa_p|xtnbreg_refe_p|xtpcse|xtpcse_p|xtpois|xtpoisson|xtpoisson_d2|xtpoisson_pa_p|xtpoisson_refe_p|xtpred|xtprobit|xtprobit_d2|xtprobit_re_p|xtps_fe|xtps_lf|xtps_ren|xtps_ren_8|xtrar_p|xtrc|xtrc_p|xtrchh|xtrefe_p|yx|yxview__barlike_draw|yxview_area_draw|yxview_bar_draw|yxview_dot_draw|yxview_dropline_draw|yxview_function_draw|yxview_iarrow_draw|yxview_ilabels_draw|yxview_normal_draw|yxview_pcarrow_draw|yxview_pcbarrow_draw|yxview_pccapsym_draw|yxview_pcscatter_draw|yxview_pcspike_draw|yxview_rarea_draw|yxview_rbar_draw|yxview_rbarm_draw|yxview_rcap_draw|yxview_rcapsym_draw|yxview_rconnected_draw|yxview_rline_draw|yxview_rscatter_draw|yxview_rspike_draw|yxview_spike_draw|yxview_sunflower_draw|zap_s|zinb|zinb_llf|zinb_plf|zip|zip_llf|zip_p|zip_plf|zt_ct_5|zt_hc_5|zt_hcd_5|zt_is_5|zt_iss_5|zt_sho_5|zt_smp_5|ztnb|ztnb_p|ztp|ztp_p|prtab|prchange|eststo|estout|esttab|estadd|estpost|ivregress|xtreg|xtreg_be|xtreg_fe|xtreg_ml|xtreg_pa_p|xtreg_re|xtregar|xtrere_p|xtset|xtsf_ll|xtsf_llti|xtsum|xttab|xttest0|xttobit|xttobit_p|xttrans)\\b",
+ "name": "keyword.control.flow.stata"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "include": "#comments-double-slash"
+ },
+ {
+ "include": "#comments-star"
+ },
+ {
+ "include": "#comments-block"
+ },
+ {
+ "include": "#comments-triple-slash"
+ }
+ ]
+ },
+ "comments-block": {
+ "patterns": [
+ {
+ "begin": "/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.stata"
+ }
+ },
+ "end": "(\\*/\\s+\\*[^\\n]*)|(\\*/(?!\\*))",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.stata"
+ }
+ },
+ "name": "comment.block.stata",
+ "patterns": [
+ {
+ "match": "\\*/\\*",
+ "comment": "this ends and restarts a comment block. but need to catch this so that it doesn't start _another_ level of comment blocks"
+ },
+ {
+ "include": "#docblockr-comment"
+ },
+ {
+ "include": "#comments-block"
+ },
+ {
+ "include": "#docstring"
+ }
+ ]
+ }
+ ]
+ },
+ "comments-star": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.stata"
+ }
+ },
+ "begin": "^\\s*(\\*)",
+ "name": "comment.line.star.stata",
+ "end": "(?=\\n)",
+ "comment": "TODO! need to except out the occasion that a * comes after a /// on the previous line. May be easiest to join with the comment.line.triple-slash.stata below",
+ "patterns": [
+ {
+ "include": "#docblockr-comment"
+ },
+ {
+ "begin": "///",
+ "end": "\\n",
+ "name": "comment.line-continuation.stata"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ }
+ ]
+ },
+ "comments-triple-slash": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.stata"
+ }
+ },
+ "begin": "(^///|(?<=\\s)///)",
+ "end": "(?=\\n)",
+ "name": "comment.line.triple-slash.stata",
+ "patterns": [
+ {
+ "include": "#docblockr-comment"
+ }
+ ]
+ }
+ ]
+ },
+ "comments-double-slash": {
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.stata"
+ }
+ },
+ "begin": "(^//|(?<=\\s)//)(?!/)",
+ "end": "(?=\\n)",
+ "name": "comment.line.double-slash.stata",
+ "patterns": [
+ {
+ "include": "#docblockr-comment"
+ }
+ ]
+ }
+ ]
+ },
+ "docblockr-comment": {
+ "patterns": [
+ {
+ "match": "(?<!\\w)(@(error|ERROR|Error))\\b",
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.name.stata"
+ }
+ }
+ },
+ {
+ "match": "(?<!\\w)(@\\w+)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.docblockr.stata"
+ }
+ }
+ }
+ ]
+ },
+ "docstring": {
+ "patterns": [
+ {
+ "begin": "'''",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.stata"
+ }
+ },
+ "end": "'''",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.stata"
+ }
+ },
+ "name": "string.quoted.docstring.stata"
+ },
+ {
+ "begin": "\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.stata"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.stata"
+ }
+ },
+ "name": "string.quoted.docstring.stata"
+ }
+ ]
+ },
+ "macro-commands": {
+ "patterns": [
+ {
+ "begin": "\\b(loc(al|a)?)\\s+([\\w'`\\$\\(\\)\\{\\}]+)\\s*(?=:|=)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.macro.stata"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#macro-local-identifiers"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ }
+ ]
+ }
+ },
+ "end": "\\n",
+ "patterns": [
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.arithmetic.stata"
+ }
+ },
+ "end": "(?=\\n)",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.arithmetic.stata"
+ }
+ },
+ "end": "(?=\\n)",
+ "patterns": [
+ {
+ "include": "#macro-extended-functions"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "\\b(gl(obal|oba|ob|o)?)\\s+(?=[\\w`\\$])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.macro.stata"
+ }
+ },
+ "end": "(\\})|(?=\\\"|\\s|\\n|/|,|=)",
+ "patterns": [
+ {
+ "include": "#reserved-names"
+ },
+ {
+ "match": "[\\w&&[^0-9_]]\\w{0,31}",
+ "name": "entity.name.type.class.stata"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(loc(al|a)?)\\s+(\\+\\+|\\-\\-)?(?=[\\w`\\$])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.macro.stata"
+ },
+ "3": {
+ "name": "keyword.operator.arithmetic.stata"
+ }
+ },
+ "end": "(?=\\\"|\\s|\\n|/|,|=)",
+ "patterns": [
+ {
+ "include": "#macro-local-identifiers"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(tempvar|tempname|tempfile)\\s*(?=\\s)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.macro.stata"
+ }
+ },
+ "end": "\\n",
+ "patterns": [
+ {
+ "begin": "///",
+ "end": "\\n",
+ "name": "comment.block.stata"
+ },
+ {
+ "include": "#macro-local-identifiers"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(ma(cro|cr|c)?)\\s+(drop|l(ist|is|i)?)\\s*(?=\\s)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.macro.stata"
+ }
+ },
+ "end": "\\n",
+ "patterns": [
+ {
+ "begin": "///",
+ "end": "\\n",
+ "name": "comment.block.stata"
+ },
+ {
+ "match": "\\*",
+ "name": "keyword.operator.arithmetic.stata"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "match": "\\w{1,31}",
+ "name": "entity.name.type.class.stata"
+ }
+ ]
+ }
+ ]
+ },
+ "macro-extended-functions": {
+ "patterns": [
+ {
+ "match": "\\b(properties)\\b",
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ {
+ "match": "\\b(t(ype|yp|y)?|f(ormat|orma|orm|or|o)?|val(ue|u)?\\s+l(able|abl|ab|a)?|var(iable|iabl|iab|ia|i)?\\s+l(abel|abe|ab|a)?|data\\s+l(able|abl|ab|a)?|sort(edby|edb|ed|e)?|lab(el|e)?|maxlength|constraint|char)\\b",
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ {
+ "match": "\\b(permname)\\b",
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ {
+ "match": "\\b(adosubdir|dir|files?|dirs?|other|sysdir)\\b",
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ {
+ "match": "\\b(env(ironment|ironmen|ironme|ironm|iron|iro|ir|i)?)\\b",
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ {
+ "match": "\\b(all\\s+(globals|scalars|matrices)|((numeric|string)\\s+scalars))\\b",
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ {
+ "match": "\\b(list)\\s+(uniq|dups|sort|clean|retok(enize|eniz|eni|en|e)?|sizeof)\\s+(\\w{1,32})",
+ "captures": {
+ "1": {
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ "2": {
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ "3": {
+ "name": "entity.name.type.class.stata"
+ }
+ }
+ },
+ {
+ "match": "\\b(list)\\s+(\\w{1,32})\\s+(\\||&|\\-|===|==|in)\\s+(\\w{1,32})",
+ "captures": {
+ "1": {
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ "2": {
+ "name": "entity.name.type.class.stata"
+ },
+ "3": {
+ "name": "keyword.operator.list.stata"
+ },
+ "4": {
+ "name": "entity.name.type.class.stata"
+ }
+ }
+ },
+ {
+ "match": "\\b(list\\s+posof)\\s+(\")(\\w+)(\")\\s+(in)\\s+(\\w{1,32})",
+ "captures": {
+ "1": {
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.stata"
+ },
+ "3": {
+ "name": "string.quoted.double.stata"
+ },
+ "4": {
+ "name": "punctuation.definition.string.end.stata"
+ },
+ "5": {
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ "6": {
+ "name": "entity.name.type.class.stata"
+ }
+ }
+ },
+ {
+ "match": "\\b(rown(ames|ame|am|a)?|coln(ames|ame|am|a)?|rowf(ullnames|ullname|ullnam|ullna|ulln|ull|ul|u)?|colf(ullnames|ullname|ullnam|ullna|ulln|ull|ul|u)?|roweq?|coleq?|rownumb|colnumb|roweqnumb|coleqnumb|rownfreeparms|colnfreeparms|rownlfs|colnlfs|rowsof|colsof|rowvarlist|colvarlist|rowlfnames|collfnames)\\b",
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ {
+ "match": "\\b(tsnorm)\\b",
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ {
+ "match": "\\b((copy|(ud|u)?strlen)\\s+(loc(al|a)?|gl(obal|oba|ob|o)?))\\s+([^']+)",
+ "captures": {
+ "1": {
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "\\b(word\\s+count)",
+ "captures": {
+ "1": {
+ "name": "keyword.macro.extendedfcn.stata"
+ }
+ }
+ },
+ {
+ "match": "(word|piece)\\s+([\\s`'\\w]+)\\s+(of)",
+ "captures": {
+ "1": {
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#constants"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.macro.extendedfcn.stata"
+ }
+ }
+ },
+ {
+ "begin": "\\b(subinstr\\s+(loc(al|a)?|gl(obal|oba|ob|o)?))\\s+(\\w{1,32})",
+ "end": "(?=//|\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ "5": {
+ "name": "entity.name.type.class.stata"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "match": "(count|coun|cou|co|c)(\\()(local|loca|loc|global|globa|glob|glo|gl)\\s+(\\w{1,32})(\\))",
+ "captures": {
+ "1": {
+ "name": "support.function.builtin.stata"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.stata"
+ },
+ "3": {
+ "name": "keyword.macro.extendedfcn.stata"
+ },
+ "4": {
+ "name": "entity.name.type.class.stata"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.end.stata"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "macro-local-escaped": {
+ "patterns": [
+ {
+ "comment": "appropriately color macros that have embedded escaped `,', and $ characters for lazy evaluation",
+ "begin": "\\\\`(?!\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.stata"
+ }
+ },
+ "end": "\\\\'|'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.stata"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "match": "\\w{1,31}",
+ "name": "entity.name.type.class.stata"
+ }
+ ]
+ }
+ ]
+ },
+ "macro-local": {
+ "patterns": [
+ {
+ "begin": "(`)(=)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.stata"
+ },
+ "2": {
+ "name": "keyword.operator.comparison.stata"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.stata"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "(`)(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.stata"
+ },
+ "2": {
+ "name": "keyword.operator.comparison.stata"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.stata"
+ }
+ },
+ "contentName": "meta.macro-extended-function.stata",
+ "patterns": [
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-extended-functions"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ }
+ ]
+ },
+ {
+ "begin": "(`)(macval)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.stata"
+ },
+ "2": {
+ "name": "support.function.builtin.stata"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.stata"
+ }
+ },
+ "end": "(\\))(')",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.begin.stata"
+ },
+ "2": {
+ "name": "punctuation.definition.string.end.stata"
+ }
+ },
+ "contentName": "meta.macro-extended-function.stata",
+ "patterns": [
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "match": "\\w{1,31}",
+ "name": "entity.name.type.class.stata"
+ }
+ ]
+ },
+ {
+ "begin": "`(?!\")",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.stata"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.stata"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\+\\+|\\-\\-",
+ "name": "keyword.operator.arithmetic.stata"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#comments-block"
+ },
+ {
+ "begin": "[^\\w]",
+ "end": "\\n|(?=')",
+ "name": "comment.line.stata"
+ },
+ {
+ "match": "\\w{1,31}",
+ "name": "entity.name.type.class.stata"
+ }
+ ]
+ }
+ ]
+ },
+ "macro-global-escaped": {
+ "patterns": [
+ {
+ "begin": "(\\\\\\$)(\\\\\\{)?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.stata"
+ }
+ },
+ "end": "(\\\\\\})|(?=\\\"|\\s|\\n|/|,)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.stata"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "match": "[\\w&&[^0-9_]]\\w{0,31}|_\\w{1,31}",
+ "name": "entity.name.type.class.stata"
+ }
+ ]
+ }
+ ]
+ },
+ "macro-global": {
+ "patterns": [
+ {
+ "begin": "(\\$)(\\{)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.stata"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.stata"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#comments-block"
+ },
+ {
+ "begin": "[^\\w]",
+ "end": "\\n|(?=})",
+ "name": "comment.line.stata"
+ },
+ {
+ "match": "\\w{1,32}",
+ "name": "entity.name.type.class.stata"
+ }
+ ]
+ },
+ {
+ "begin": "\\$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.stata"
+ }
+ },
+ "end": "(?!\\w)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.stata"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "match": "[\\w&&[^0-9_]]\\w{0,31}|_\\w{1,31}",
+ "name": "entity.name.type.class.stata"
+ }
+ ]
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "include": "#factorvariables"
+ },
+ {
+ "match": "\\b(?i:(\\d+\\.\\d*(e[\\-\\+]?\\d+)?))(?=[^a-zA-Z_])",
+ "name": "constant.numeric.float.stata"
+ },
+ {
+ "match": "(?<=[^0-9a-zA-Z_])(?i:(\\.\\d+(e[\\-\\+]?\\d+)?))",
+ "name": "constant.numeric.float.stata"
+ },
+ {
+ "match": "\\b(?i:(\\d+e[\\-\\+]?\\d+))",
+ "name": "constant.numeric.float.stata"
+ },
+ {
+ "match": "\\b(\\d+)\\b",
+ "name": "constant.numeric.integer.decimal.stata"
+ },
+ {
+ "match": "(?<![\\w])(\\.(?![\\./]))(?![\\w])",
+ "name": "constant.language.missing.stata"
+ },
+ {
+ "match": "\\b_all\\b",
+ "name": "constant.language.allvars.stata"
+ }
+ ]
+ },
+ "factorvariables": {
+ "patterns": [
+ {
+ "match": "\\b(i|c|o)\\.(?=[\\w&&[^0-9]]|\\([\\w&&[^0-9]])",
+ "name": "constant.language.factorvars.stata"
+ },
+ {
+ "match": "\\b(i?b)((\\d+)|n)\\.(?=[\\w&&[^0-9]]|\\([\\w&&[^0-9]])",
+ "captures": {
+ "0": {
+ "name": "constant.language.factorvars.stata"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#constants"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "\\b(i?b)(\\()(#\\d+|first|last|freq)(\\))\\.(?=[\\w&&[^0-9]]|\\([\\w&&[^0-9]])",
+ "captures": {
+ "0": {
+ "name": "constant.language.factorvars.stata"
+ },
+ "2": {
+ "name": "keyword.operator.parentheses.stata"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#operators"
+ }
+ ]
+ },
+ "4": {
+ "name": "keyword.operator.parentheses.stata"
+ }
+ }
+ },
+ {
+ "match": "\\b(i?o?)(\\d+)\\.(?=[\\w&&[^0-9]]|\\([\\w&&[^0-9]])",
+ "captures": {
+ "0": {
+ "name": "constant.language.factorvars.stata"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#constants"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": "\\b(i?o?)(\\()(.*?)(\\))(\\.)(?=[\\w&&[^0-9]]|\\([\\w&&[^0-9]])",
+ "captures": {
+ "1": {
+ "name": "constant.language.factorvars.stata"
+ },
+ "2": {
+ "name": "keyword.operator.parentheses.stata"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "4": {
+ "name": "keyword.operator.parentheses.stata"
+ },
+ "5": {
+ "name": "constant.language.factorvars.stata"
+ }
+ }
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "match": "\\+\\+|\\-\\-|\\+|\\-|\\*|\\^",
+ "name": "keyword.operator.arithmetic.stata",
+ "comment": "++ and -- must come first to support ligatures"
+ },
+ {
+ "comment": "match division operator but not path separator",
+ "match": "(?<![\\w.&&[^0-9]])/(?![\\w.&&[^0-9]]|$)",
+ "name": "keyword.operator.arithmetic.stata"
+ },
+ {
+ "comment": "match division operator but not path separator",
+ "match": "(?<![\\w.&&[^0-9]])\\\\(?![\\w.&&[^0-9]]|$)",
+ "name": "keyword.operator.matrix.addrow.stata"
+ },
+ {
+ "match": "\\|\\|",
+ "name": "keyword.operator.graphcombine.stata"
+ },
+ {
+ "match": "\\&|\\|",
+ "name": "keyword.operator.logical.stata"
+ },
+ {
+ "match": "(?:<=|>=|:=|==|!=|~=|<|>|=|!!|!)",
+ "name": "keyword.operator.comparison.stata"
+ },
+ {
+ "match": "\\(|\\)",
+ "name": "keyword.operator.parentheses.stata"
+ },
+ {
+ "match": "(##|#)",
+ "name": "keyword.operator.factor-variables.stata"
+ },
+ {
+ "match": "%",
+ "name": "keyword.operator.format.stata"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.separator.key-value"
+ },
+ {
+ "match": "\\[",
+ "name": "punctuation.definition.parameters.begin.stata"
+ },
+ {
+ "match": "\\]",
+ "name": "punctuation.definition.parameters.end.stata"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.definition.variable.begin.stata"
+ },
+ {
+ "match": ";",
+ "name": "keyword.operator.delimiter.stata"
+ }
+ ]
+ },
+ "string-compound": {
+ "patterns": [
+ {
+ "begin": "`\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.stata"
+ }
+ },
+ "end": "\"'|(?=\n)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.stata"
+ }
+ },
+ "name": "string.quoted.double.compound.stata",
+ "patterns": [
+ {
+ "match": "\"",
+ "name": "string.quoted.double.compound.stata",
+ "comment": "This must come before #string-regular and #string-compound to accurately color `\"\"\"' in strings"
+ },
+ {
+ "match": "```(?=[^']*\")",
+ "name": "meta.markdown.code.block.stata",
+ "comment": "see https://github.com/kylebarron/language-stata/issues/53"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#macro-local-escaped"
+ },
+ {
+ "include": "#macro-global-escaped"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ }
+ ]
+ }
+ ]
+ },
+ "string-regular": {
+ "patterns": [
+ {
+ "begin": "(?<!`)\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.stata"
+ }
+ },
+ "end": "(\")(')?|(?=\n)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.stata"
+ },
+ "2": {
+ "name": "invalid.illegal.punctuation.stata"
+ }
+ },
+ "name": "string.quoted.double.stata",
+ "patterns": [
+ {
+ "match": "```(?=[^']*\")",
+ "name": "meta.markdown.code.block.stata",
+ "comment": "see https://github.com/kylebarron/language-stata/issues/53"
+ },
+ {
+ "include": "#macro-local-escaped"
+ },
+ {
+ "include": "#macro-global-escaped"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ }
+ ]
+ }
+ ]
+ },
+ "subscripts": {
+ "patterns": [
+ {
+ "comment": "highlight expressions, like [_n], when using subscripts on a variable",
+ "begin": "(?<=[\\w'])(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.begin.stata"
+ }
+ },
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.stata"
+ }
+ },
+ "name": "meta.subscripts.stata",
+ "patterns": [
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#builtin_variables"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#functions"
+ }
+ ]
+ }
+ ]
+ },
+ "reserved-names": {
+ "patterns": [
+ {
+ "match": "\\b(_all|_b|byte|_coef|_cons|double|float|if|in|int|long|_n|_N|_pi|_pred|_rc|_skip|str[0-9]+|strL|using|with)\\b",
+ "name": "invalid.illegal.name.stata"
+ },
+ {
+ "match": "[^\\w'`\\$\\(\\)\\s]",
+ "name": "invalid.illegal.name.stata"
+ },
+ {
+ "match": "[0-9][\\w]{31,}",
+ "name": "invalid.illegal.name.stata"
+ },
+ {
+ "match": "\\w{33,}",
+ "name": "invalid.illegal.name.stata"
+ }
+ ]
+ },
+ "macro-local-identifiers": {
+ "patterns": [
+ {
+ "match": "[^\\w'`\\$\\(\\)\\s]",
+ "name": "invalid.illegal.name.stata"
+ },
+ {
+ "match": "\\w{32,}",
+ "name": "invalid.illegal.name.stata"
+ },
+ {
+ "match": "\\w{1,31}",
+ "name": "entity.name.type.class.stata"
+ }
+ ]
+ },
+ "ascii-regex-functions": {
+ "patterns": [
+ {
+ "comment": "color regexm with regular quotes i.e. \" ",
+ "match": "\\b(regexm)(\\()([^,]+)(,)\\s*(\")([^\"]+)(\"(')?)\\s*(\\))",
+ "captures": {
+ "1": {
+ "name": "support.function.builtin.stata"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.stata"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "match": "[\\w&&[^0-9]]\\w{0,31}",
+ "name": "variable.parameter.function.stata"
+ },
+ {
+ "include": "#comments-triple-slash"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.variable.begin.stata"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.stata"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#ascii-regex-internals"
+ }
+ ]
+ },
+ "7": {
+ "name": "punctuation.definition.string.end.stata"
+ },
+ "8": {
+ "name": "invalid.illegal.punctuation.stata"
+ },
+ "9": {
+ "name": "punctuation.definition.parameters.end.stata"
+ }
+ }
+ },
+ {
+ "comment": "color regexm with compound quotes",
+ "match": "\\b(regexm)(\\()([^,]+)(,)\\s*(`\")([^\"]+)(\"')\\s*(\\))",
+ "captures": {
+ "1": {
+ "name": "support.function.builtin.stata"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.stata"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "match": "[\\w&&[^0-9]]\\w{0,31}",
+ "name": "variable.parameter.function.stata"
+ },
+ {
+ "include": "#comments-triple-slash"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.variable.begin.stata"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.stata"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#ascii-regex-internals"
+ }
+ ]
+ },
+ "7": {
+ "name": "punctuation.definition.string.end.stata"
+ },
+ "8": {
+ "name": "punctuation.definition.parameters.end.stata"
+ }
+ }
+ },
+ {
+ "comment": "color regexr with regular quotes i.e. \" ",
+ "match": "\\b(regexr)(\\()([^,]+)(,)\\s*(\")([^\"]+)(\"(')?)\\s*([^\\)]*)(\\))",
+ "captures": {
+ "1": {
+ "name": "support.function.builtin.stata"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.stata"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "match": "[\\w&&[^0-9]]\\w{0,31}",
+ "name": "variable.parameter.function.stata"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.variable.begin.stata"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.stata"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#ascii-regex-internals"
+ }
+ ]
+ },
+ "7": {
+ "name": "punctuation.definition.string.end.stata"
+ },
+ "8": {
+ "name": "invalid.illegal.punctuation.stata"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.definition.variable.begin.stata"
+ },
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "match": "[\\w&&[^0-9]]\\w{0,31}",
+ "name": "variable.parameter.function.stata"
+ },
+ {
+ "include": "#comments-triple-slash"
+ }
+ ]
+ },
+ "10": {
+ "name": "punctuation.definition.parameters.end.stata"
+ }
+ }
+ },
+ {
+ "comment": "color regexr with compound quotes i.e. `\"text\"' ",
+ "match": "\\b(regexr)(\\()([^,]+)(,)\\s*(`\")([^\"]+)(\"')\\s*([^\\)]*)(\\))",
+ "captures": {
+ "1": {
+ "name": "support.function.builtin.stata"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.stata"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "match": "[\\w&&[^0-9]]\\w{0,31}",
+ "name": "variable.parameter.function.stata"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.variable.begin.stata"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.stata"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#ascii-regex-internals"
+ }
+ ]
+ },
+ "7": {
+ "name": "punctuation.definition.string.end.stata"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.definition.variable.begin.stata"
+ },
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "match": "[\\w&&[^0-9]]\\w{0,31}",
+ "name": "variable.parameter.function.stata"
+ },
+ {
+ "include": "#comments-triple-slash"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.definition.parameters.end.stata"
+ }
+ }
+ }
+ ]
+ },
+ "ascii-regex-internals": {
+ "patterns": [
+ {
+ "match": "\\^",
+ "name": "keyword.control.anchor.stata"
+ },
+ {
+ "match": "\\$(?![a-zA-Z_\\{])",
+ "name": "keyword.control.anchor.stata",
+ "comment": "matched when not a global, but must be ascii"
+ },
+ {
+ "match": "[\\?\\+\\*]",
+ "name": "keyword.control.quantifier.stata"
+ },
+ {
+ "match": "\\|",
+ "name": "keyword.control.or.stata"
+ },
+ {
+ "begin": "(\\()(?=\\?|\\*|\\+)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.group.stata"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.group.stata"
+ }
+ },
+ "contentName": "invalid.illegal.regexm.stata"
+ },
+ {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.group.stata"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.group.stata"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#ascii-regex-internals"
+ }
+ ]
+ },
+ {
+ "include": "#ascii-regex-character-class"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "comment": "NOTE: Error if I have .+ No idea why but it works fine it seems with just .",
+ "match": ".",
+ "name": "string.quoted.stata"
+ }
+ ]
+ },
+ "ascii-regex-character-class": {
+ "patterns": [
+ {
+ "match": "\\\\[\\*\\+\\?\\-\\.\\^\\$\\|\\[\\]\\(\\)\\\\]",
+ "name": "constant.character.escape.backslash.stata"
+ },
+ {
+ "match": "\\.",
+ "name": "constant.character.character-class.stata"
+ },
+ {
+ "match": "\\\\.",
+ "name": "illegal.invalid.character-class.stata"
+ },
+ {
+ "begin": "(\\[)(\\^)?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.stata"
+ },
+ "2": {
+ "name": "keyword.operator.negation.stata"
+ }
+ },
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.stata"
+ }
+ },
+ "name": "constant.other.character-class.set.stata",
+ "patterns": [
+ {
+ "include": "#ascii-regex-character-class"
+ },
+ {
+ "captures": {
+ "2": {
+ "name": "constant.character.escape.backslash.stata"
+ },
+ "4": {
+ "name": "constant.character.escape.backslash.stata"
+ }
+ },
+ "match": "((\\\\.)|.)\\-((\\\\.)|[^\\]])",
+ "name": "constant.other.character-class.range.stata"
+ }
+ ]
+ }
+ ]
+ },
+ "unicode-regex-functions": {
+ "patterns": [
+ {
+ "comment": "color regexm with regular quotes i.e. \" ",
+ "match": "\\b(ustrregexm)(\\()([^,]+)(,)\\s*(\")([^\"]+)(\"(')?)([,0-9\\s]*)?\\s*(\\))",
+ "captures": {
+ "1": {
+ "name": "support.function.builtin.stata"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.stata"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "match": "[\\w&&[^0-9]]\\w{0,31}",
+ "name": "variable.parameter.function.stata"
+ },
+ {
+ "include": "#comments-triple-slash"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.variable.begin.stata"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.stata"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#unicode-regex-internals"
+ }
+ ]
+ },
+ "7": {
+ "name": "punctuation.definition.string.end.stata"
+ },
+ "8": {
+ "name": "invalid.illegal.punctuation.stata"
+ },
+ "9": {
+ "patterns": [
+ {
+ "include": "#constants"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.definition.variable.begin.stata"
+ }
+ ]
+ },
+ "10": {
+ "name": "punctuation.definition.parameters.end.stata"
+ }
+ }
+ },
+ {
+ "comment": "color regexm with compound quotes",
+ "match": "\\b(ustrregexm)(\\()([^,]+)(,)\\s*(`\")([^\"]+)(\"')([,0-9\\s]*)?\\s*(\\))",
+ "captures": {
+ "1": {
+ "name": "support.function.builtin.stata"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.stata"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "match": "[\\w&&[^0-9]]\\w{0,31}",
+ "name": "variable.parameter.function.stata"
+ },
+ {
+ "include": "#comments-triple-slash"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.variable.begin.stata"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.stata"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#unicode-regex-internals"
+ }
+ ]
+ },
+ "7": {
+ "name": "punctuation.definition.string.end.stata"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#constants"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.definition.variable.begin.stata"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.definition.parameters.end.stata"
+ }
+ }
+ },
+ {
+ "comment": "color regexr with regular quotes i.e. \" ",
+ "match": "\\b(ustrregexrf|ustrregexra)(\\()([^,]+)(,)\\s*(\")([^\"]+)(\"(')?)\\s*([^\\)]*)(\\))",
+ "captures": {
+ "1": {
+ "name": "support.function.builtin.stata"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.stata"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "match": "[\\w&&[^0-9]]\\w{0,31}",
+ "name": "variable.parameter.function.stata"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.variable.begin.stata"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.stata"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#unicode-regex-internals"
+ }
+ ]
+ },
+ "7": {
+ "name": "punctuation.definition.string.end.stata"
+ },
+ "8": {
+ "name": "invalid.illegal.punctuation.stata"
+ },
+ "9": {
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.definition.variable.begin.stata"
+ },
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "match": "[\\w&&[^0-9]]\\w{0,31}",
+ "name": "variable.parameter.function.stata"
+ },
+ {
+ "include": "#comments-triple-slash"
+ },
+ {
+ "include": "#constants"
+ }
+ ]
+ },
+ "10": {
+ "name": "punctuation.definition.parameters.end.stata"
+ }
+ }
+ },
+ {
+ "comment": "color regexr with compound quotes i.e. `\"text\"' ",
+ "match": "\\b(ustrregexrf|ustrregexra)(\\()([^,]+)(,)\\s*(`\")([^\"]+)(\"')\\s*([^\\)]*)(\\))",
+ "captures": {
+ "1": {
+ "name": "support.function.builtin.stata"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.stata"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "match": "[\\w&&[^0-9]]\\w{0,31}",
+ "name": "variable.parameter.function.stata"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.variable.begin.stata"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.stata"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#unicode-regex-internals"
+ }
+ ]
+ },
+ "7": {
+ "name": "punctuation.definition.string.end.stata"
+ },
+ "8": {
+ "patterns": [
+ {
+ "match": ",",
+ "name": "punctuation.definition.variable.begin.stata"
+ },
+ {
+ "include": "#string-compound"
+ },
+ {
+ "include": "#string-regular"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "match": "[\\w&&[^0-9]]\\w{0,31}",
+ "name": "variable.parameter.function.stata"
+ },
+ {
+ "include": "#comments-triple-slash"
+ },
+ {
+ "include": "#constants"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.definition.parameters.end.stata"
+ }
+ }
+ }
+ ]
+ },
+ "unicode-regex-internals": {
+ "patterns": [
+ {
+ "match": "\\\\[bBAZzG]|\\^",
+ "name": "keyword.control.anchor.stata"
+ },
+ {
+ "match": "\\$(?![[\\w&&[^0-9_]][\\w]{0,31}|_[\\w]{1,31}\\{])",
+ "name": "keyword.control.anchor.stata",
+ "comment": "matched when not a global"
+ },
+ {
+ "match": "\\\\[1-9][0-9]?",
+ "name": "keyword.other.back-reference.stata"
+ },
+ {
+ "match": "[?+*][?+]?|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??",
+ "name": "keyword.operator.quantifier.stata"
+ },
+ {
+ "match": "\\|",
+ "name": "keyword.operator.or.stata"
+ },
+ {
+ "begin": "\\((?!\\?\\#|\\?=|\\?!|\\?<=|\\?<!)",
+ "end": "\\)",
+ "name": "keyword.operator.group.stata",
+ "patterns": [
+ {
+ "include": "#unicode-regex-internals"
+ }
+ ]
+ },
+ {
+ "begin": "\\(\\?\\#",
+ "end": "\\)",
+ "name": "comment.block.stata"
+ },
+ {
+ "comment": "We are restrictive in what we allow to go after the comment character to avoid false positives, since the availability of comments depend on regexp flags.",
+ "match": "(?<=^|\\s)#\\s[[a-zA-Z0-9,. \\t?!-:][^\\x{00}-\\x{7F}]]*$",
+ "name": "comment.line.number-sign.stata"
+ },
+ {
+ "match": "\\(\\?[iLmsux]+\\)",
+ "name": "keyword.other.option-toggle.stata"
+ },
+ {
+ "begin": "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.group.stata"
+ },
+ "2": {
+ "name": "punctuation.definition.group.assertion.stata"
+ },
+ "3": {
+ "name": "keyword.assertion.look-ahead.stata"
+ },
+ "4": {
+ "name": "keyword.assertion.negative-look-ahead.stata"
+ },
+ "5": {
+ "name": "keyword.assertion.look-behind.stata"
+ },
+ "6": {
+ "name": "keyword.assertion.negative-look-behind.stata"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.group.stata"
+ }
+ },
+ "name": "meta.group.assertion.stata",
+ "patterns": [
+ {
+ "include": "#unicode-regex-internals"
+ }
+ ]
+ },
+ {
+ "begin": "(\\()(\\?\\(([1-9][0-9]?|[a-zA-Z_][a-zA-Z_0-9]*)\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.stata"
+ },
+ "2": {
+ "name": "punctuation.definition.group.assertion.conditional.stata"
+ },
+ "3": {
+ "name": "entity.name.section.back-reference.stata"
+ }
+ },
+ "comment": "we can make this more sophisticated to match the | character that separates yes-pattern from no-pattern, but it's not really necessary.",
+ "end": "(\\))",
+ "name": "meta.group.assertion.conditional.stata",
+ "patterns": [
+ {
+ "include": "#unicode-regex-internals"
+ }
+ ]
+ },
+ {
+ "include": "#unicode-regex-character-class"
+ },
+ {
+ "include": "#macro-local"
+ },
+ {
+ "include": "#macro-global"
+ },
+ {
+ "comment": "NOTE: Error if I have .+ No idea why but it works fine it seems with just .",
+ "match": ".",
+ "name": "string.quoted.stata"
+ }
+ ]
+ },
+ "unicode-regex-character-class": {
+ "patterns": [
+ {
+ "match": "\\\\[wWsSdD]|\\.",
+ "name": "constant.character.character-class.stata"
+ },
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.backslash.stata"
+ },
+ {
+ "begin": "(\\[)(\\^)?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.stata"
+ },
+ "2": {
+ "name": "keyword.operator.negation.stata"
+ }
+ },
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.stata"
+ }
+ },
+ "name": "constant.other.character-class.set.stata",
+ "patterns": [
+ {
+ "include": "#unicode-regex-character-class"
+ },
+ {
+ "captures": {
+ "2": {
+ "name": "constant.character.escape.backslash.stata"
+ },
+ "4": {
+ "name": "constant.character.escape.backslash.stata"
+ }
+ },
+ "match": "((\\\\.)|.)\\-((\\\\.)|[^\\]])",
+ "name": "constant.other.character-class.range.stata"
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/stylus.tmLanguage.json b/node_modules/shiki/languages/stylus.tmLanguage.json
new file mode 100644
index 0000000..13a7d7b
--- /dev/null
+++ b/node_modules/shiki/languages/stylus.tmLanguage.json
@@ -0,0 +1,1202 @@
+{
+ "name": "stylus",
+ "scopeName": "source.stylus",
+ "fileTypes": ["styl", "stylus", "css.styl", "css.stylus"],
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#at_rule"
+ },
+ {
+ "include": "#language_keywords"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "include": "#variable_declaration"
+ },
+ {
+ "include": "#function"
+ },
+ {
+ "include": "#selector"
+ },
+ {
+ "include": "#declaration"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.property-list.begin.css"
+ },
+ "2": {
+ "name": "punctuation.section.property-list.end.css"
+ }
+ },
+ "match": "(\\{)(\\})",
+ "name": "meta.brace.curly.css"
+ },
+ {
+ "match": "\\{|\\}",
+ "name": "meta.brace.curly.css"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#operator"
+ }
+ ],
+ "repository": {
+ "comment": {
+ "patterns": [
+ {
+ "include": "#comment_block"
+ },
+ {
+ "include": "#comment_line"
+ }
+ ]
+ },
+ "comment_block": {
+ "begin": "/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.css"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.css"
+ }
+ },
+ "name": "comment.block.css"
+ },
+ "comment_line": {
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.stylus"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.stylus"
+ }
+ },
+ "end": "(?=\\n)",
+ "name": "comment.line.double-slash.stylus"
+ }
+ ]
+ },
+ "selector": {
+ "patterns": [
+ {
+ "match": "(?:(?=\\w)(?<![\\w-]))(a|abbr|acronym|address|area|article|aside|audio|b|base|bdi|bdo|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|data|datalist|dd|del|details|dfn|dialog|div|dl|dt|em|embed|eventsource|fieldset|figure|figcaption|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|main|map|mark|math|menu|menuitem|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|picture|pre|progress|q|rb|rp|rt|rtc|ruby|s|samp|script|section|select|small|source|span|strike|strong|style|sub|summary|sup|svg|table|tbody|td|template|textarea|tfoot|th|thead|time|title|tr|track|tt|u|ul|var|video|wbr)(?:(?<=\\w)(?![\\w-]))",
+ "name": "entity.name.tag.css"
+ },
+ {
+ "match": "(?:(?=\\w)(?<![\\w-]))(vkern|view|use|tspan|tref|title|textPath|text|symbol|switch|svg|style|stop|set|script|rect|radialGradient|polyline|polygon|pattern|path|mpath|missing-glyph|metadata|mask|marker|linearGradient|line|image|hkern|glyphRef|glyph|g|foreignObject|font-face-uri|font-face-src|font-face-name|font-face-format|font-face|font|filter|feTurbulence|feTile|feSpotLight|feSpecularLighting|fePointLight|feOffset|feMorphology|feMergeNode|feMerge|feImage|feGaussianBlur|feFuncR|feFuncG|feFuncB|feFuncA|feFlood|feDistantLight|feDisplacementMap|feDiffuseLighting|feConvolveMatrix|feComposite|feComponentTransfer|feColorMatrix|feBlend|ellipse|desc|defs|cursor|color-profile|clipPath|circle|animateTransform|animateMotion|animateColor|animate|altGlyphItem|altGlyphDef|altGlyph|a)(?:(?<=\\w)(?![\\w-]))",
+ "name": "entity.name.tag.svg.css"
+ },
+ {
+ "match": "\\s*(\\,)\\s*",
+ "name": "meta.selector.stylus"
+ },
+ {
+ "match": "\\*",
+ "name": "meta.selector.stylus"
+ },
+ {
+ "match": "\\s*(\\&)([a-zA-Z0-9_-]+)\\s*",
+ "captures": {
+ "2": {
+ "name": "entity.other.attribute-name.parent-selector-suffix.stylus"
+ }
+ },
+ "name": "meta.selector.stylus"
+ },
+ {
+ "match": "\\s*(\\&)\\s*",
+ "name": "meta.selector.stylus"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ }
+ },
+ "match": "(\\.)[a-zA-Z0-9_-]+",
+ "name": "entity.other.attribute-name.class.css"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ }
+ },
+ "match": "(#)[a-zA-Z][a-zA-Z0-9_-]*",
+ "name": "entity.other.attribute-name.id.css"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ }
+ },
+ "match": "(:+)(after|before|content|first-letter|first-line|host|(-(moz|webkit|ms)-)?selection)\\b",
+ "name": "entity.other.attribute-name.pseudo-element.css"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ }
+ },
+ "match": "(:)((first|last)-child|(first|last|only)-of-type|empty|root|target|first|left|right)\\b",
+ "name": "entity.other.attribute-name.pseudo-class.css"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ }
+ },
+ "match": "(:)(checked|enabled|default|disabled|indeterminate|invalid|optional|required|valid)\\b",
+ "name": "entity.other.attribute-name.pseudo-class.ui-state.css"
+ },
+ {
+ "begin": "((:)not)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.other.attribute-name.pseudo-class.css"
+ },
+ "2": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "3": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#selector"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.pseudo-class.css"
+ },
+ "2": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "3": {
+ "name": "punctuation.section.function.css"
+ },
+ "4": {
+ "name": "constant.numeric.css"
+ },
+ "5": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "match": "((:)nth-(?:(?:last-)?child|(?:last-)?of-type))(\\()(\\-?(?:\\d+n?|n)(?:\\+\\d+)?|even|odd)(\\))"
+ },
+ {
+ "match": "((:)dir)\\s*(?:(\\()(ltr|rtl)?(\\)))?",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.pseudo-class.css"
+ },
+ "2": {
+ "name": "puncutation.definition.entity.css"
+ },
+ "3": {
+ "name": "punctuation.section.function.css"
+ },
+ "4": {
+ "name": "constant.language.css"
+ },
+ "5": {
+ "name": "punctuation.section.function.css"
+ }
+ }
+ },
+ {
+ "match": "((:)lang)\\s*(?:(\\()(\\w+(-\\w+)?)?(\\)))?",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.pseudo-class.css"
+ },
+ "2": {
+ "name": "puncutation.definition.entity.css"
+ },
+ "3": {
+ "name": "punctuation.section.function.css"
+ },
+ "4": {
+ "name": "constant.language.css"
+ },
+ "6": {
+ "name": "punctuation.section.function.css"
+ }
+ }
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ }
+ },
+ "match": "(:)(active|hover|link|visited|focus)\\b",
+ "name": "entity.other.attribute-name.pseudo-class.css"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ }
+ },
+ "match": "(::)(shadow)\\b",
+ "name": "entity.other.attribute-name.pseudo-class.css"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.css"
+ },
+ "2": {
+ "name": "entity.other.attribute-name.attribute.css"
+ },
+ "3": {
+ "name": "punctuation.separator.operator.css"
+ },
+ "4": {
+ "name": "string.unquoted.attribute-value.css"
+ },
+ "5": {
+ "name": "string.quoted.double.attribute-value.css"
+ },
+ "6": {
+ "name": "punctuation.definition.string.begin.css"
+ },
+ "7": {
+ "name": "punctuation.definition.string.end.css"
+ },
+ "8": {
+ "name": "punctuation.definition.entity.css"
+ }
+ },
+ "match": "(?i)(\\[)\\s*(-?[_a-z\\\\[[:^ascii:]]][_a-z0-9\\-\\\\[[:^ascii:]]]*)(?:\\s*([~|^$*]?=)\\s*(?:(-?[_a-z\\\\[[:^ascii:]]][_a-z0-9\\-\\\\[[:^ascii:]]]*)|((?>(['\"])(?:[^\\\\]|\\\\.)*?(\\6)))))?\\s*(\\])",
+ "name": "meta.attribute-selector.css"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ "variable_declaration": {
+ "begin": "^[^\\S\\n]*(\\$?[a-zA-Z_-][a-zA-Z0-9_-]*)[^\\S\\n]*(\\=|\\?\\=|\\:\\=)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.stylus"
+ },
+ "2": {
+ "name": "keyword.operator.stylus"
+ }
+ },
+ "end": "(\\n)|(;)|(?=\\})",
+ "endCaptures": {
+ "2": {
+ "name": "punctuation.terminator.rule.css"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#property_values"
+ }
+ ]
+ },
+ "declaration": {
+ "begin": "((?<=^)[^\\S\\n]+)|((?<=;)[^\\S\\n]*)|((?<=\\{)[^\\S\\n]*)",
+ "end": "(?=\\n)|(;)|(?=\\})|(\\n)",
+ "endCaptures": {
+ "2": {
+ "name": "punctuation.terminator.rule.css"
+ }
+ },
+ "name": "meta.property-list.css",
+ "patterns": [
+ {
+ "match": "(?x) (?<![\\w-])\n--\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
+ "name": "variable.css"
+ },
+ {
+ "include": "#language_keywords"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "match": "(?:(?<=^)[^\\S\\n]+(\\n))"
+ },
+ {
+ "match": "\\G\\s*(counter-reset|counter-increment)(?:(:)|[^\\S\\n])[^\\S\\n]*([a-zA-Z_-][a-zA-Z0-9_-]*)",
+ "captures": {
+ "1": {
+ "name": "support.type.property-name.css"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.css"
+ },
+ "3": {
+ "name": "variable.section.css"
+ }
+ },
+ "name": "meta.property.counter.css"
+ },
+ {
+ "begin": "\\G\\s*(filter)(?:(:)|[^\\S\\n])[^\\S\\n]*",
+ "beginCaptures": {
+ "1": {
+ "name": "support.type.property-name.css"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.css"
+ }
+ },
+ "end": "(?=\\n|;|\\}|$)",
+ "name": "meta.property.filter.css",
+ "patterns": [
+ {
+ "include": "#function"
+ },
+ {
+ "include": "#property_values"
+ }
+ ]
+ },
+ {
+ "include": "#property"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "property": {
+ "begin": "(?x:\\G\\s*(?:\n (-webkit-[-A-Za-z]+|-moz-[-A-Za-z]+|-o-[-A-Za-z]+|-ms-[-A-Za-z]+|-khtml-[-A-Za-z]+|zoom|z-index|y|x|wrap|word-wrap|word-spacing|word-break|word|width|widows|white-space-collapse|white-space|white|weight|volume|voice-volume|voice-stress|voice-rate|voice-pitch-range|voice-pitch|voice-family|voice-duration|voice-balance|voice|visibility|vertical-align|variant|user-select|up|unicode-bidi|unicode-range|unicode|trim|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform|touch-action|top-width|top-style|top-right-radius|top-left-radius|top-color|top|timing-function|text-wrap|text-transform|text-shadow|text-replace|text-rendering|text-overflow|text-outline|text-justify|text-indent|text-height|text-emphasis|text-decoration|text-align-last|text-align|text|target-position|target-new|target-name|target|table-layout|tab-size|style-type|style-position|style-image|style|string-set|stretch|stress|stacking-strategy|stacking-shift|stacking-ruby|stacking|src|speed|speech-rate|speech|speak-punctuation|speak-numeral|speak-header|speak|span|spacing|space-collapse|space|sizing|size-adjust|size|shadow|respond-to|rule-width|rule-style|rule-color|rule|ruby-span|ruby-position|ruby-overhang|ruby-align|ruby|rows|rotation-point|rotation|role|right-width|right-style|right-color|right|richness|rest-before|rest-after|rest|resource|resize|reset|replace|repeat|rendering-intent|rate|radius|quotes|punctuation-trim|punctuation|property|profile|presentation-level|presentation|position|pointer-events|point|play-state|play-during|play-count|pitch-range|pitch|phonemes|pause-before|pause-after|pause|page-policy|page-break-inside|page-break-before|page-break-after|page|padding-top|padding-right|padding-left|padding-bottom|padding|pack|overhang|overflow-y|overflow-x|overflow-style|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|origin|orientation|orient|ordinal-group|order|opacity|offset|numeral|new|nav-up|nav-right|nav-left|nav-index|nav-down|nav|name|move-to|model|mix-blend-mode|min-width|min-height|min|max-width|max-height|max|marquee-style|marquee-speed|marquee-play-count|marquee-direction|marquee|marks|mark-before|mark-after|mark|margin-top|margin-right|margin-left|margin-bottom|margin|mask-image|list-style-type|list-style-position|list-style-image|list-style|list|lines|line-stacking-strategy|line-stacking-shift|line-stacking-ruby|line-stacking|line-height|line-break|level|letter-spacing|length|left-width|left-style|left-color|left|label|justify-content|justify|iteration-count|inline-box-align|initial-value|initial-size|initial-before-align|initial-before-adjust|initial-after-align|initial-after-adjust|index|indent|increment|image-resolution|image-orientation|image|icon|hyphens|hyphenate-resource|hyphenate-lines|hyphenate-character|hyphenate-before|hyphenate-after|hyphenate|height|header|hanging-punctuation|gap|grid|grid-area|grid-auto-columns|grid-auto-flow|grid-auto-rows|grid-column|grid-column-end|grid-column-start|grid-row|grid-row-end|grid-row-start|grid-template|grid-template-areas|grid-template-columns|grid-template-rows|row-gap|gap|font-kerning|font-language-override|font-weight|font-variant-caps|font-variant|font-style|font-synthesis|font-stretch|font-size-adjust|font-size|font-family|font|float-offset|float|flex-wrap|flex-shrink|flex-grow|flex-group|flex-flow|flex-direction|flex-basis|flex|fit-position|fit|fill|filter|family|empty-cells|emphasis|elevation|duration|drop-initial-value|drop-initial-size|drop-initial-before-align|drop-initial-before-adjust|drop-initial-after-align|drop-initial-after-adjust|drop|down|dominant-baseline|display-role|display-model|display|direction|delay|decoration-break|decoration|cursor|cue-before|cue-after|cue|crop|counter-reset|counter-increment|counter|count|content|columns|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|column-break-before|column-break-after|column|color-profile|color|collapse|clip|clear|character|caption-side|break-inside|break-before|break-after|break|box-sizing|box-shadow|box-pack|box-orient|box-ordinal-group|box-lines|box-flex-group|box-flex|box-direction|box-decoration-break|box-align|box|bottom-width|bottom-style|bottom-right-radius|bottom-left-radius|bottom-color|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-length|border-left-width|border-left-style|border-left-color|border-left|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|bookmark-target|bookmark-level|bookmark-label|bookmark|binding|bidi|before|baseline-shift|baseline|balance|background-blend-mode|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-break|background-attachment|background|azimuth|attachment|appearance|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-duration|animation-direction|animation-delay|animation-fill-mode|animation|alignment-baseline|alignment-adjust|alignment|align-self|align-last|align-items|align-content|align|after|adjust|will-change)|\n (writing-mode|text-anchor|stroke-width|stroke-opacity|stroke-miterlimit|stroke-linejoin|stroke-linecap|stroke-dashoffset|stroke-dasharray|stroke|stop-opacity|stop-color|shape-rendering|marker-start|marker-mid|marker-end|lighting-color|kerning|image-rendering|glyph-orientation-vertical|glyph-orientation-horizontal|flood-opacity|flood-color|fill-rule|fill-opacity|fill|enable-background|color-rendering|color-interpolation-filters|color-interpolation|clip-rule|clip-path)|\n ([a-zA-Z_-][a-zA-Z0-9_-]*)\n)(?!([^\\S\\n]*&)|([^\\S\\n]*\\{))(?=:|([^\\S\\n]+[^\\s])))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.type.property-name.css"
+ },
+ "2": {
+ "name": "support.type.property-name.svg.css"
+ },
+ "3": {
+ "name": "support.function.mixin.stylus"
+ }
+ },
+ "end": "(;)|(?=\\n|\\}|$)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.rule.css"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#property_value"
+ }
+ ]
+ },
+ "property_value": {
+ "begin": "\\G(?:(:)|(\\s))(\\s*)(?!&)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.key-value.css"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.css"
+ }
+ },
+ "end": "(?=\\n|;|\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.rule.css"
+ }
+ },
+ "name": "meta.property-value.css",
+ "patterns": [
+ {
+ "include": "#property_values"
+ },
+ {
+ "match": "[^\\n]+?"
+ }
+ ]
+ },
+ "property_values": {
+ "patterns": [
+ {
+ "include": "#function"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#language_keywords"
+ },
+ {
+ "include": "#language_constants"
+ },
+ {
+ "match": "(?:(?=\\w)(?<![\\w-]))(wrap-reverse|wrap|whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|unicase|underline|ultra-expanded|ultra-condensed|transparent|transform|top|titling-caps|thin|thick|text-top|text-bottom|text|tb-rl|table-row-group|table-row|table-header-group|table-footer-group|table-column-group|table-column|table-cell|table|sw-resize|super|strict|stretch|step-start|step-end|static|square|space-between|space-around|space|solid|soft-light|small-caps|separate|semi-expanded|semi-condensed|se-resize|scroll|screen|saturation|s-resize|running|rtl|row-reverse|row-resize|row|round|right|ridge|reverse|repeat-y|repeat-x|repeat|relative|progressive|progress|pre-wrap|pre-line|pre|pointer|petite-caps|paused|pan-x|pan-left|pan-right|pan-y|pan-up|pan-down|padding-box|overline|overlay|outside|outset|optimizeSpeed|optimizeLegibility|opacity|oblique|nw-resize|nowrap|not-allowed|normal|none|no-repeat|no-drop|newspaper|ne-resize|n-resize|multiply|move|middle|medium|max-height|manipulation|main-size|luminosity|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|local|list-item|linear(?!-)|line-through|line-edge|line|lighter|lighten|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline-block|inline|inherit|infinite|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|hue|horizontal|hidden|help|hard-light|hand|groove|geometricPrecision|forwards|flex-start|flex-end|flex|fixed|extra-expanded|extra-condensed|expanded|exclusion|ellipsis|ease-out|ease-in-out|ease-in|ease|e-resize|double|dotted|distribute-space|distribute-letter|distribute-all-lines|distribute|disc|disabled|difference|default|decimal|dashed|darken|currentColor|crosshair|cover|content-box|contain|condensed|column-reverse|column|color-dodge|color-burn|color|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|border-box|bolder|bold|block|bidi-override|below|baseline|balance|backwards|auto|antialiased|always|alternate-reverse|alternate|all-small-caps|all-scroll|all-petite-caps|all|absolute)(?:(?<=\\w)(?![\\w-]))",
+ "name": "support.constant.property-value.css"
+ },
+ {
+ "match": "(?:(?=\\w)(?<![\\w-]))(start|sRGB|square|round|optimizeSpeed|optimizeQuality|nonzero|miter|middle|linearRGB|geometricPrecision |evenodd |end |crispEdges|butt|bevel)(?:(?<=\\w)(?![\\w-]))",
+ "name": "support.constant.property-value.svg.css"
+ },
+ {
+ "include": "#font_name"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#color"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "match": "\\!\\s*important",
+ "name": "keyword.other.important.css"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#stylus_keywords"
+ },
+ {
+ "include": "#property_variable"
+ }
+ ]
+ },
+ "numeric": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.unit.css"
+ }
+ },
+ "match": "(?x) (?<!\\w|-)(?:(?:-|\\+)?(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+)) ((?:px|pt|ch|cm|mm|in|r?em|ex|pc|deg|g?rad|dpi|dpcm|dppx|fr|ms|s|turn|vh|vmax|vmin|vw)\\b|%)?",
+ "name": "constant.numeric.css"
+ }
+ ]
+ },
+ "color": {
+ "patterns": [
+ {
+ "begin": "\\b(rgb|rgba|hsl|hsla)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.color.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "name": "meta.function.color.css",
+ "patterns": [
+ {
+ "match": "\\s*(,)\\s*",
+ "name": "punctuation.separator.parameter.css"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#property_variable"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.css"
+ }
+ },
+ "match": "(#)([0-9a-fA-F]{3}|[0-9a-fA-F]{6})\\b",
+ "name": "constant.other.color.rgb-value.css"
+ },
+ {
+ "comment": "http://www.w3.org/TR/CSS21/syndata.html#value-def-color",
+ "match": "\\b(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)\\b",
+ "name": "support.constant.color.w3c-standard-color-name.css"
+ },
+ {
+ "comment": "http://www.w3.org/TR/css3-color/#svg-color",
+ "match": "\\b(aliceblue|antiquewhite|aquamarine|azure|beige|bisque|blanchedalmond|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|gainsboro|ghostwhite|gold|goldenrod|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|limegreen|linen|magenta|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|oldlace|olivedrab|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|thistle|tomato|turquoise|violet|wheat|whitesmoke|yellowgreen)\\b",
+ "name": "support.constant.color.w3c-extended-color-name.css"
+ }
+ ]
+ },
+ "string": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.css"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.css"
+ }
+ },
+ "name": "string.quoted.double.css",
+ "patterns": [
+ {
+ "match": "\\\\([a-fA-F0-9]{1,6}|.)",
+ "name": "constant.character.escape.css"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.css"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.css"
+ }
+ },
+ "name": "string.quoted.single.css",
+ "patterns": [
+ {
+ "match": "\\\\([a-fA-F0-9]{1,6}|.)",
+ "name": "constant.character.escape.css"
+ }
+ ]
+ }
+ ]
+ },
+ "at_rule": {
+ "patterns": [
+ {
+ "begin": "\\s*((@)(import|require))\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.at-rule.import.stylus"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.stylus"
+ }
+ },
+ "end": "\\s*((?=;|$|\\n))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.rule.css"
+ }
+ },
+ "name": "meta.at-rule.import.css",
+ "patterns": [
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*((@)(extend[s]?)\\b)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.at-rule.extend.stylus"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.stylus"
+ }
+ },
+ "end": "\\s*((?=;|$|\\n))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.rule.css"
+ }
+ },
+ "name": "meta.at-rule.extend.css",
+ "patterns": [
+ {
+ "include": "#selector"
+ }
+ ]
+ },
+ {
+ "match": "^\\s*((@)font-face)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.fontface.stylus"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.stylus"
+ }
+ },
+ "name": "meta.at-rule.fontface.stylus"
+ },
+ {
+ "match": "^\\s*((@)css)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.css.stylus"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.stylus"
+ }
+ },
+ "name": "meta.at-rule.css.stylus"
+ },
+ {
+ "begin": "\\s*((@)charset)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.at-rule.charset.stylus"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.stylus"
+ }
+ },
+ "end": "\\s*((?=;|$|\\n))",
+ "name": "meta.at-rule.charset.stylus",
+ "patterns": [
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "begin": "\\s*((@)keyframes)\\b\\s+([a-zA-Z_-][a-zA-Z0-9_-]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.at-rule.keyframes.stylus"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.stylus"
+ },
+ "3": {
+ "name": "entity.name.function.keyframe.stylus"
+ }
+ },
+ "end": "\\s*((?=\\{|$|\\n))",
+ "name": "meta.at-rule.keyframes.stylus"
+ },
+ {
+ "begin": "(?=(\\b(\\d+%|from\\b|to\\b)))",
+ "end": "(?=(\\{|\\n))",
+ "name": "meta.at-rule.keyframes.stylus",
+ "patterns": [
+ {
+ "match": "(\\b(\\d+%|from\\b|to\\b))",
+ "name": "entity.other.attribute-name.stylus"
+ }
+ ]
+ },
+ {
+ "match": "^\\s*((@)media)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.at-rule.media.stylus"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.stylus"
+ }
+ },
+ "name": "meta.at-rule.media.stylus"
+ },
+ {
+ "match": "(?:(?=\\w)(?<![\\w-]))(width|scan|resolution|orientation|monochrome|min-width|min-resolution|min-monochrome|min-height|min-device-width|min-device-height|min-device-aspect-ratio|min-color-index|min-color|min-aspect-ratio|max-width|max-resolution|max-monochrome|max-height|max-device-width|max-device-height|max-device-aspect-ratio|max-color-index|max-color|max-aspect-ratio|height|grid|device-width|device-height|device-aspect-ratio|color-index|color|aspect-ratio)(?:(?<=\\w)(?![\\w-]))",
+ "name": "support.type.property-name.media-feature.media.css"
+ },
+ {
+ "match": "(?:(?=\\w)(?<![\\w-]))(tv|tty|screen|projection|print|handheld|embossed|braille|aural|all)(?:(?<=\\w)(?![\\w-]))",
+ "name": "support.constant.media-type.media.css"
+ },
+ {
+ "match": "(?:(?=\\w)(?<![\\w-]))(portrait|landscape)(?:(?<=\\w)(?![\\w-]))",
+ "name": "support.constant.property-value.media-property.media.css"
+ }
+ ]
+ },
+ "operator": {
+ "patterns": [
+ {
+ "match": "((?:\\?|:|!|~|\\+|(\\s-\\s)|(?:\\*)?\\*|\\/|%|(\\.)?\\.\\.|<|>|(?:=|:|\\?|\\+|-|\\*|\\/|%|<|>)?=|!=)|\\b(?:in|is(?:nt)?|(?<!:)not|or|and)\\b)",
+ "name": "keyword.operator.stylus"
+ },
+ {
+ "include": "#char_escape"
+ }
+ ]
+ },
+ "font_name": {
+ "match": "(\\b(?i:arial|century|comic|courier|cursive|fantasy|futura|garamond|georgia|helvetica|impact|lucida|monospace|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif)\\b)",
+ "name": "support.constant.font-name.css"
+ },
+ "variable": {
+ "match": "(\\$[a-zA-Z_-][a-zA-Z0-9_-]*)",
+ "name": "variable.stylus"
+ },
+ "property_variable": {
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "match": "(?<!^)(\\@[a-zA-Z_-][a-zA-Z0-9_-]*)",
+ "name": "variable.property.stylus"
+ }
+ ]
+ },
+ "function": {
+ "begin": "(?=[a-zA-Z_-][a-zA-Z0-9_-]*\\()",
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(format|url|local)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.misc.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "end": "(?=\\))",
+ "name": "meta.function.misc.css",
+ "patterns": [
+ {
+ "match": "(?<=\\()[^\\)\\s]*(?=\\))",
+ "name": "string.css"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "match": "\\s*"
+ }
+ ]
+ },
+ {
+ "match": "(counter)(\\()([a-zA-Z_-][a-zA-Z0-9_-]*)(?=\\))",
+ "captures": {
+ "1": {
+ "name": "support.function.misc.counter.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.css"
+ },
+ "3": {
+ "name": "variable.section.css"
+ }
+ },
+ "name": "meta.function.misc.counter.css"
+ },
+ {
+ "begin": "(counters)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.misc.counters.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "end": "(?=\\))",
+ "name": "meta.function.misc.counters.css",
+ "patterns": [
+ {
+ "match": "\\G[a-zA-Z_-][a-zA-Z0-9_-]*",
+ "name": "variable.section.css"
+ },
+ {
+ "match": "\\s*(,)\\s*",
+ "name": "punctuation.separator.parameter.css"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "(attr)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.misc.attr.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "end": "(?=\\))",
+ "name": "meta.function.misc.attr.css",
+ "patterns": [
+ {
+ "match": "\\G[a-zA-Z_-][a-zA-Z0-9_-]*",
+ "name": "entity.other.attribute-name.attribute.css"
+ },
+ {
+ "match": "(?<=[a-zA-Z0-9_-])\\s*\\b(string|color|url|integer|number|length|em|ex|px|rem|vw|vh|vmin|vmax|mm|cm|in|pt|pc|angle|deg|grad|rad|time|s|ms|frequency|Hz|kHz|%)\\b",
+ "name": "support.type.attr.css"
+ },
+ {
+ "match": "\\s*(,)\\s*",
+ "name": "punctuation.separator.parameter.css"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "(calc)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.misc.calc.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "end": "(?=\\))",
+ "name": "meta.function.misc.calc.css",
+ "patterns": [
+ {
+ "include": "#property_values"
+ }
+ ]
+ },
+ {
+ "begin": "(cubic-bezier)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.timing.cubic-bezier.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "end": "(?=\\))",
+ "name": "meta.function.timing.cubic-bezier.css",
+ "patterns": [
+ {
+ "match": "\\s*(,)\\s*",
+ "name": "punctuation.separator.parameter.css"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "(steps)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.timing.steps.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "end": "(?=\\))",
+ "name": "meta.function.timing.steps.css",
+ "patterns": [
+ {
+ "match": "\\s*(,)\\s*",
+ "name": "punctuation.separator.parameter.css"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "match": "\\b(start|end)\\b",
+ "name": "support.constant.timing.steps.direction.css"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "(linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.gradient.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "end": "(?=\\))",
+ "name": "meta.function.gradient.css",
+ "patterns": [
+ {
+ "match": "\\s*(,)\\s*",
+ "name": "punctuation.separator.parameter.css"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#color"
+ },
+ {
+ "match": "\\b(to|bottom|right|left|top|circle|ellipse|center|closest-side|closest-corner|farthest-side|farthest-corner|at)\\b",
+ "name": "support.constant.gradient.css"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "(blur|brightness|contrast|grayscale|hue-rotate|invert|opacity|saturate|sepia)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.filter.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "end": "(?=\\))",
+ "name": "meta.function.filter.css",
+ "patterns": [
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#property_variable"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "(drop-shadow)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.filter.drop-shadow.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "end": "(?=\\))",
+ "name": "meta.function.filter.drop-shadow.css",
+ "patterns": [
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#color"
+ },
+ {
+ "include": "#property_variable"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "(matrix|matrix3d|perspective|rotate|rotate3d|rotate[Xx]|rotate[yY]|rotate[zZ]|scale|scale3d|scale[xX]|scale[yY]|scale[zZ]|skew|skew[xX]|skew[yY]|translate|translate3d|translate[xX]|translate[yY]|translate[zZ])(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.transform.css"
+ },
+ "2": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "end": "(?=\\))",
+ "name": "meta.function.transform.css",
+ "patterns": [
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#property_variable"
+ },
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "match": "(url|local|format|counter|counters|attr|calc)(?=\\()",
+ "name": "support.function.misc.css"
+ },
+ {
+ "match": "(cubic-bezier|steps)(?=\\()",
+ "name": "support.function.timing.css"
+ },
+ {
+ "match": "(linear-gradient|radial-gradient|repeating-linear-gradient|repeating-radial-gradient)(?=\\()",
+ "name": "support.function.gradient.css"
+ },
+ {
+ "match": "(blur|brightness|contrast|drop-shadow|grayscale|hue-rotate|invert|opacity|saturate|sepia)(?=\\()",
+ "name": "support.function.filter.css"
+ },
+ {
+ "match": "(matrix|matrix3d|perspective|rotate|rotate3d|rotate[Xx]|rotate[yY]|rotate[zZ]|scale|scale3d|scale[xX]|scale[yY]|scale[zZ]|skew|skew[xX]|skew[yY]|translate|translate3d|translate[xX]|translate[yY]|translate[zZ])(?=\\()",
+ "name": "support.function.transform.css"
+ },
+ {
+ "begin": "([a-zA-Z_-][a-zA-Z0-9_-]*)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.stylus"
+ },
+ "2": {
+ "name": "punctuation.section.function.css"
+ }
+ },
+ "end": "(?=\\))",
+ "name": "meta.function.stylus",
+ "patterns": [
+ {
+ "name": "variable.argument.stylus",
+ "match": "(?x)\n--\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*"
+ },
+ {
+ "match": "\\s*(,)\\s*",
+ "name": "punctuation.separator.parameter.css"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "include": "#property_values"
+ }
+ ]
+ },
+ {
+ "match": "\\(",
+ "name": "punctuation.section.function.css"
+ }
+ ]
+ },
+ "interpolation": {
+ "name": "meta.interpolation.stylus",
+ "begin": "(?:(\\{)[^\\S\\n]*)(?=[^;=]*[^\\S\\n]*\\})",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.curly"
+ }
+ },
+ "end": "(?:[^\\S\\n]*(\\}))|\\n|$",
+ "endCaptures": {
+ "1": {
+ "name": "meta.brace.curly"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#operator"
+ }
+ ]
+ },
+ "char_escape": {
+ "name": "constant.character.escape.stylus",
+ "match": "\\\\(.)"
+ },
+ "language_constants": {
+ "match": "\\b(true|false|null)\\b",
+ "name": "constant.language.stylus"
+ },
+ "language_keywords": {
+ "patterns": [
+ {
+ "match": "(\\b|\\s)(return|else|for|unless|if|else)\\b",
+ "name": "keyword.control.stylus"
+ },
+ {
+ "match": "(\\b|\\s)(!important|in|is defined|is a)\\b",
+ "name": "keyword.other.stylus"
+ },
+ {
+ "match": "\\barguments\\b",
+ "name": "variable.language.stylus"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/svelte.tmLanguage.json b/node_modules/shiki/languages/svelte.tmLanguage.json
new file mode 100644
index 0000000..1b27523
--- /dev/null
+++ b/node_modules/shiki/languages/svelte.tmLanguage.json
@@ -0,0 +1,1161 @@
+{
+ "name": "svelte",
+ "scopeName": "source.svelte",
+ "fileTypes": ["svelte"],
+ "uuid": "7582b62f-51d9-4a84-8c8d-fc189530faf6",
+ "injections": {
+ "L:(meta.script.svelte | meta.style.svelte) (meta.lang.js | meta.lang.javascript) - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.svelte",
+ "contentName": "source.js",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ "L:(meta.script.svelte | meta.style.svelte) (meta.lang.ts | meta.lang.typescript) - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.svelte",
+ "contentName": "source.ts",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ }
+ ]
+ },
+ "L:(meta.script.svelte | meta.style.svelte) meta.lang.coffee - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.svelte",
+ "contentName": "source.coffee",
+ "patterns": [
+ {
+ "include": "source.coffee"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.script.svelte - meta.lang - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.svelte",
+ "contentName": "source.js",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.style.svelte meta.lang.stylus - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.svelte",
+ "contentName": "source.stylus",
+ "patterns": [
+ {
+ "include": "source.stylus"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.style.svelte meta.lang.sass - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.svelte",
+ "contentName": "source.sass",
+ "patterns": [
+ {
+ "include": "source.sass"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.style.svelte meta.lang.css - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.svelte",
+ "contentName": "source.css",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.style.svelte meta.lang.scss - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.svelte",
+ "contentName": "source.css.scss",
+ "patterns": [
+ {
+ "include": "source.css.scss"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.style.svelte meta.lang.less - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.svelte",
+ "contentName": "source.css.less",
+ "patterns": [
+ {
+ "include": "source.css.less"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.style.svelte meta.lang.postcss - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.svelte",
+ "contentName": "source.css.postcss",
+ "patterns": [
+ {
+ "include": "source.css.postcss"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.style.svelte - meta.lang - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.svelte",
+ "contentName": "source.css",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.template.svelte meta.lang.pug - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)(?!</)",
+ "end": "(?=</)",
+ "name": "meta.embedded.block.svelte",
+ "contentName": "text.pug",
+ "patterns": [
+ {
+ "include": "text.pug"
+ }
+ ]
+ }
+ ]
+ },
+ "L:meta.template.svelte - meta.lang - (meta source)": {
+ "patterns": [
+ {
+ "begin": "(?<=>)\\s",
+ "end": "(?=</template)",
+ "patterns": [
+ {
+ "include": "#scope"
+ }
+ ]
+ }
+ ]
+ },
+ "L:(source.ts, source.js, source.coffee)": {
+ "patterns": [
+ {
+ "match": "(?<![_$./'\"[:alnum:]])\\$(?=[_[:alpha:]][_$[:alnum:]]*)",
+ "name": "punctuation.definition.variable.svelte"
+ },
+ {
+ "match": "(?<![_$./'\"[:alnum:]])(\\$\\$)(?=props|restProps|slots)",
+ "name": "punctuation.definition.variable.svelte"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#scope"
+ }
+ ],
+ "repository": {
+ "scope": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#special-tags"
+ },
+ {
+ "include": "#tags"
+ },
+ {
+ "include": "#interpolation"
+ },
+ {
+ "begin": "(?<=>|})",
+ "end": "(?=<|{)",
+ "name": "text.svelte"
+ }
+ ]
+ },
+ "comments": {
+ "begin": "<!--",
+ "end": "-->",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.svelte"
+ }
+ },
+ "name": "comment.block.svelte",
+ "patterns": [
+ {
+ "begin": "(@)(component)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.keyword.svelte"
+ },
+ "2": {
+ "name": "storage.type.class.component.svelte keyword.declaration.class.component.svelte"
+ }
+ },
+ "end": "(?=-->)",
+ "contentName": "comment.block.documentation.svelte",
+ "patterns": [
+ {
+ "match": ".*?(?=-->)",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "text.html.markdown"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "text.html.markdown"
+ }
+ ]
+ },
+ {
+ "match": "\\G-?>|<!--(?!>)|<!-(?=-->)|--!>",
+ "name": "invalid.illegal.characters-not-allowed-here.svelte"
+ }
+ ]
+ },
+ "destructuring": {
+ "patterns": [
+ {
+ "begin": "(?={)",
+ "end": "(?<=})",
+ "name": "meta.embedded.expression.svelte source.ts",
+ "patterns": [
+ {
+ "include": "source.ts#object-binding-pattern"
+ }
+ ]
+ },
+ {
+ "begin": "(?=\\[)",
+ "end": "(?<=\\])",
+ "name": "meta.embedded.expression.svelte source.ts",
+ "patterns": [
+ {
+ "include": "source.ts#array-binding-pattern"
+ }
+ ]
+ }
+ ]
+ },
+ "destructuring-const": {
+ "patterns": [
+ {
+ "begin": "(?={)",
+ "end": "(?<=})",
+ "name": "meta.embedded.expression.svelte source.ts",
+ "patterns": [
+ {
+ "include": "source.ts#object-binding-pattern-const"
+ }
+ ]
+ },
+ {
+ "begin": "(?=\\[)",
+ "end": "(?<=\\])",
+ "name": "meta.embedded.expression.svelte source.ts",
+ "patterns": [
+ {
+ "include": "source.ts#array-binding-pattern-const"
+ }
+ ]
+ }
+ ]
+ },
+ "interpolation": {
+ "patterns": [
+ {
+ "begin": "\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.svelte"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.svelte"
+ }
+ },
+ "contentName": "meta.embedded.expression.svelte source.ts",
+ "patterns": [
+ {
+ "begin": "\\G\\s*(?={)",
+ "end": "(?<=})",
+ "patterns": [
+ {
+ "include": "source.ts#object-literal"
+ }
+ ]
+ },
+ {
+ "include": "source.ts"
+ }
+ ]
+ }
+ ]
+ },
+ "special-tags": {
+ "patterns": [
+ {
+ "include": "#special-tags-void"
+ },
+ {
+ "include": "#special-tags-block-begin"
+ },
+ {
+ "include": "#special-tags-block-end"
+ }
+ ]
+ },
+ "special-tags-keywords": {
+ "match": "([#@/:])(else\\s+if|[a-z]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.keyword.svelte"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "if|else\\s+if|else",
+ "name": "keyword.control.conditional.svelte"
+ },
+ {
+ "match": "each|key",
+ "name": "keyword.control.svelte"
+ },
+ {
+ "match": "await|then|catch",
+ "name": "keyword.control.flow.svelte"
+ },
+ {
+ "match": "html",
+ "name": "keyword.other.svelte"
+ },
+ {
+ "match": "debug",
+ "name": "keyword.other.debugger.svelte"
+ },
+ {
+ "match": "const",
+ "name": "storage.type.svelte"
+ }
+ ]
+ }
+ }
+ },
+ "special-tags-modes": {
+ "patterns": [
+ {
+ "begin": "(?<=(if|key|then|catch|html).*?)\\G",
+ "end": "(?=})",
+ "name": "meta.embedded.expression.svelte source.ts",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=const.*?)\\G",
+ "end": "(?=})",
+ "patterns": [
+ {
+ "include": "#destructuring-const"
+ },
+ {
+ "begin": "\\G\\s*([_$[:alpha:]][_$[:alnum:]]+)\\s*",
+ "end": "(?=\\=)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.other.constant.svelte"
+ }
+ }
+ },
+ {
+ "begin": "(?=\\=)",
+ "name": "meta.embedded.expression.svelte source.ts",
+ "end": "(?=})",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?<=each.*?)\\G",
+ "end": "(?=})",
+ "patterns": [
+ {
+ "begin": "\\G\\s*?(?=\\S)",
+ "end": "(?=(?:^\\s*|\\s+)(as))",
+ "contentName": "meta.embedded.expression.svelte source.ts",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ },
+ {
+ "begin": "(as)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.as.svelte"
+ }
+ },
+ "end": "(?=})",
+ "patterns": [
+ {
+ "include": "#destructuring"
+ },
+ {
+ "begin": "\\(",
+ "end": "\\)|(?=})",
+ "captures": {
+ "0": {
+ "name": "meta.brace.round.svelte"
+ }
+ },
+ "contentName": "meta.embedded.expression.svelte source.ts",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ },
+ {
+ "match": "(\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*)",
+ "captures": {
+ "1": {
+ "name": "meta.embedded.expression.svelte source.ts",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.svelte"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?<=await.*?)\\G",
+ "end": "(?=})",
+ "patterns": [
+ {
+ "begin": "\\G\\s*?(?=\\S)",
+ "end": "\\s+(then)|(?=})",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.control.flow.svelte"
+ }
+ },
+ "contentName": "meta.embedded.expression.svelte source.ts",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=then\\b)",
+ "end": "(?=})",
+ "contentName": "meta.embedded.expression.svelte source.ts",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?<=debug.*?)\\G",
+ "end": "(?=})",
+ "patterns": [
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "captures": {
+ "0": {
+ "name": "meta.embedded.expression.svelte source.ts",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.svelte"
+ }
+ ]
+ }
+ ]
+ },
+ "special-tags-void": {
+ "begin": "({)\\s*((?:[@:])(else\\s+if|[a-z]*))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.block.begin.svelte"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#special-tags-keywords"
+ }
+ ]
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.end.svelte"
+ }
+ },
+ "name": "meta.special.$3.svelte",
+ "patterns": [
+ {
+ "include": "#special-tags-modes"
+ }
+ ]
+ },
+ "special-tags-block-begin": {
+ "begin": "({)\\s*(#([a-z]*))",
+ "end": "(})",
+ "name": "meta.special.$3.svelte meta.special.start.svelte",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.block.begin.svelte"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#special-tags-keywords"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.end.svelte"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#special-tags-modes"
+ }
+ ]
+ },
+ "special-tags-block-end": {
+ "begin": "({)\\s*(/([a-z]*))",
+ "end": "(})",
+ "name": "meta.special.$3.svelte meta.special.end.svelte",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.block.begin.svelte"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#special-tags-keywords"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.block.end.svelte"
+ }
+ }
+ },
+ "attributes": {
+ "patterns": [
+ {
+ "include": "#attributes-directives"
+ },
+ {
+ "include": "#attributes-keyvalue"
+ },
+ {
+ "include": "#attributes-interpolated"
+ }
+ ]
+ },
+ "attributes-interpolated": {
+ "begin": "(?<!:|=)\\s*({)",
+ "end": "(\\})",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.svelte"
+ }
+ },
+ "contentName": "meta.embedded.expression.svelte source.ts",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ },
+ "attributes-keyvalue": {
+ "begin": "((?:--)?[_$[:alpha:]][_\\-$[:alnum:]]*)",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "--.*",
+ "name": "support.type.property-name.svelte"
+ },
+ {
+ "match": ".*",
+ "name": "entity.other.attribute-name.svelte"
+ }
+ ]
+ }
+ },
+ "end": "(?=\\s*+[^=\\s])",
+ "name": "meta.attribute.$1.svelte",
+ "patterns": [
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.key-value.svelte"
+ }
+ },
+ "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)",
+ "patterns": [
+ {
+ "include": "#attributes-value"
+ }
+ ]
+ }
+ ]
+ },
+ "attributes-value": {
+ "patterns": [
+ {
+ "include": "#interpolation"
+ },
+ {
+ "match": "(?:(['\"])([0-9._]+[\\w%]{,4})(\\1))|(?:([0-9._]+[\\w%]{,4})(?=\\s|/?>))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.svelte"
+ },
+ "2": {
+ "name": "constant.numeric.decimal.svelte"
+ },
+ "3": {
+ "name": "punctuation.definition.string.end.svelte"
+ },
+ "4": {
+ "name": "constant.numeric.decimal.svelte"
+ }
+ }
+ },
+ {
+ "match": "([^\\s\"'=<>`/]|/(?!>))+",
+ "name": "string.unquoted.svelte",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ }
+ ]
+ },
+ {
+ "begin": "(['\"])",
+ "end": "\\1",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.svelte"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.svelte"
+ }
+ },
+ "name": "string.quoted.svelte",
+ "patterns": [
+ {
+ "include": "#interpolation"
+ }
+ ]
+ }
+ ]
+ },
+ "attributes-directives-keywords": {
+ "patterns": [
+ {
+ "match": "on|use|bind",
+ "name": "keyword.control.svelte"
+ },
+ {
+ "match": "transition|in|out|animate",
+ "name": "keyword.other.animation.svelte"
+ },
+ {
+ "match": "let",
+ "name": "storage.type.svelte"
+ },
+ {
+ "match": "class|style",
+ "name": "entity.other.attribute-name.svelte"
+ }
+ ]
+ },
+ "attributes-directives-types": {
+ "patterns": [
+ {
+ "match": "(?<=(on):).*$",
+ "name": "entity.name.type.svelte"
+ },
+ {
+ "match": "(?<=(bind):).*$",
+ "name": "variable.parameter.svelte"
+ },
+ {
+ "match": "(?<=(use|transition|in|out|animate):).*$",
+ "name": "variable.function.svelte"
+ },
+ {
+ "match": "(?<=(let|class|style):).*$",
+ "name": "variable.parameter.svelte"
+ }
+ ]
+ },
+ "attributes-directives-types-assigned": {
+ "patterns": [
+ {
+ "match": "(?<=(bind):)this$",
+ "name": "variable.language.svelte"
+ },
+ {
+ "match": "(?<=(bind):).*$",
+ "name": "entity.name.type.svelte"
+ },
+ {
+ "match": "(?<=(class):).*$",
+ "name": "entity.other.attribute-name.class.svelte"
+ },
+ {
+ "match": "(?<=(style):).*$",
+ "name": "support.type.property-name.svelte"
+ },
+ {
+ "include": "#attributes-directives-types"
+ }
+ ]
+ },
+ "attributes-directives": {
+ "begin": "(?<!<)(on|use|bind|transition|in|out|animate|let|class|style)(:)(?:((?:--)?[_$[:alpha:]][_\\-$[:alnum:]]*(?=\\s*=))|((?:--)?[_$[:alpha:]][_\\-$[:alnum:]]*))((\\|\\w+)*)",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#attributes-directives-keywords"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.svelte"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#attributes-directives-types-assigned"
+ }
+ ]
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#attributes-directives-types"
+ }
+ ]
+ },
+ "5": {
+ "patterns": [
+ {
+ "match": "\\w+",
+ "name": "support.function.svelte"
+ },
+ {
+ "match": "\\|",
+ "name": "punctuation.separator.svelte"
+ }
+ ]
+ }
+ },
+ "end": "(?=\\s*+[^=\\s])",
+ "name": "meta.directive.$1.svelte",
+ "patterns": [
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.key-value.svelte"
+ }
+ },
+ "end": "(?<=[^\\s=])(?!\\s*=)|(?=/?>)",
+ "patterns": [
+ {
+ "include": "#attributes-value"
+ }
+ ]
+ }
+ ]
+ },
+ "attributes-generics": {
+ "begin": "(generics)(=)([\"'])",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.other.attribute-name.svelte"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.svelte"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.svelte"
+ }
+ },
+ "end": "(\\3)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.svelte"
+ }
+ },
+ "contentName": "meta.embedded.expression.svelte source.ts",
+ "patterns": [
+ {
+ "include": "#type-parameters"
+ }
+ ]
+ },
+ "type-parameters": {
+ "name": "meta.type.parameters.ts",
+ "patterns": [
+ {
+ "include": "source.ts#comment"
+ },
+ {
+ "name": "storage.modifier.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "include": "source.ts#type"
+ },
+ {
+ "include": "source.ts#punctuation-comma"
+ },
+ {
+ "name": "keyword.operator.assignment.ts",
+ "match": "(=)(?!>)"
+ }
+ ]
+ },
+ "tags": {
+ "patterns": [
+ {
+ "include": "#tags-lang"
+ },
+ {
+ "include": "#tags-void"
+ },
+ {
+ "include": "#tags-general-end"
+ },
+ {
+ "include": "#tags-general-start"
+ }
+ ]
+ },
+ "tags-name": {
+ "patterns": [
+ {
+ "match": "(svelte)(:)([a-z][\\w0-9:-]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.svelte"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.svelte"
+ },
+ "3": {
+ "name": "entity.name.tag.svelte"
+ }
+ }
+ },
+ {
+ "match": "slot",
+ "name": "keyword.control.svelte"
+ },
+ {
+ "match": "[A-Z][a-zA-Z0-9_]*",
+ "name": "support.class.component.svelte"
+ },
+ {
+ "match": "[a-z][\\w0-9:]*-[\\w0-9:-]*",
+ "name": "meta.tag.custom.svelte entity.name.tag.svelte"
+ },
+ {
+ "match": "[a-z][\\w0-9:-]*",
+ "name": "entity.name.tag.svelte"
+ }
+ ]
+ },
+ "tags-start-attributes": {
+ "begin": "\\G",
+ "end": "(?=/?>)",
+ "name": "meta.tag.start.svelte",
+ "patterns": [
+ {
+ "include": "#attributes"
+ }
+ ]
+ },
+ "tags-lang-start-attributes": {
+ "begin": "\\G",
+ "end": "(?=/>)|>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.end.svelte"
+ }
+ },
+ "name": "meta.tag.start.svelte",
+ "patterns": [
+ {
+ "include": "#attributes-generics"
+ },
+ {
+ "include": "#attributes"
+ }
+ ]
+ },
+ "tags-start-node": {
+ "match": "(<)([^/\\s>/]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.svelte"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#tags-name"
+ }
+ ]
+ }
+ },
+ "name": "meta.tag.start.svelte"
+ },
+ "tags-end-node": {
+ "match": "(</)(.*?)\\s*(>)|(/>)",
+ "captures": {
+ "1": {
+ "name": "meta.tag.end.svelte punctuation.definition.tag.begin.svelte"
+ },
+ "2": {
+ "name": "meta.tag.end.svelte",
+ "patterns": [
+ {
+ "include": "#tags-name"
+ }
+ ]
+ },
+ "3": {
+ "name": "meta.tag.end.svelte punctuation.definition.tag.end.svelte"
+ },
+ "4": {
+ "name": "meta.tag.start.svelte punctuation.definition.tag.end.svelte"
+ }
+ }
+ },
+ "tags-lang": {
+ "begin": "<(script|style|template)",
+ "end": "</\\1\\s*>|/>",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#tags-start-node"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#tags-end-node"
+ }
+ ]
+ }
+ },
+ "name": "meta.$1.svelte",
+ "patterns": [
+ {
+ "begin": "\\G(?=\\s*[^>]*?(type|lang)\\s*=\\s*(['\"]|)(?:text/)?(\\w+)\\2)",
+ "end": "(?=</|/>)",
+ "name": "meta.lang.$3.svelte",
+ "patterns": [
+ {
+ "include": "#tags-lang-start-attributes"
+ }
+ ]
+ },
+ {
+ "include": "#tags-lang-start-attributes"
+ }
+ ]
+ },
+ "tags-void": {
+ "begin": "(<)(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)(?=\\s|/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.svelte"
+ },
+ "2": {
+ "name": "entity.name.tag.svelte"
+ }
+ },
+ "end": "/?>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.begin.svelte"
+ }
+ },
+ "name": "meta.tag.void.svelte",
+ "patterns": [
+ {
+ "include": "#attributes"
+ }
+ ]
+ },
+ "tags-general-start": {
+ "begin": "(<)([^/\\s>/]*)",
+ "end": "(/?>)",
+ "beginCaptures": {
+ "0": {
+ "patterns": [
+ {
+ "include": "#tags-start-node"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "meta.tag.start.svelte punctuation.definition.tag.end.svelte"
+ }
+ },
+ "name": "meta.scope.tag.$2.svelte",
+ "patterns": [
+ {
+ "include": "#tags-start-attributes"
+ }
+ ]
+ },
+ "tags-general-end": {
+ "begin": "(</)([^/\\s>]*)",
+ "end": "(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.tag.end.svelte punctuation.definition.tag.begin.svelte"
+ },
+ "2": {
+ "name": "meta.tag.end.svelte",
+ "patterns": [
+ {
+ "include": "#tags-name"
+ }
+ ]
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "meta.tag.end.svelte punctuation.definition.tag.end.svelte"
+ }
+ },
+ "name": "meta.scope.tag.$2.svelte"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/swift.tmLanguage.json b/node_modules/shiki/languages/swift.tmLanguage.json
new file mode 100644
index 0000000..0081b14
--- /dev/null
+++ b/node_modules/shiki/languages/swift.tmLanguage.json
@@ -0,0 +1,3303 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/textmate/swift.tmbundle/blob/master/Syntaxes/Swift.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/textmate/swift.tmbundle/commit/7a35637eb70aef3114b091c4ff6fbf6a2faa881b",
+ "name": "swift",
+ "scopeName": "source.swift",
+ "comment": "See swift.tmbundle/grammar-test.swift for test cases.",
+ "patterns": [
+ {
+ "include": "#root"
+ }
+ ],
+ "repository": {
+ "async-throws": {
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.await-must-precede-throws.swift"
+ },
+ "2": {
+ "name": "keyword.control.exception.swift"
+ },
+ "3": {
+ "name": "keyword.control.async.swift"
+ }
+ },
+ "match": "\\b(?:(throws\\s+async|rethrows\\s+async)|(throws|rethrows)|(async))\\b"
+ },
+ "attributes": {
+ "patterns": [
+ {
+ "begin": "((@)available)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.attribute.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.attribute.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.begin.swift"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.swift"
+ }
+ },
+ "name": "meta.attribute.available.swift",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.platform.os.swift"
+ },
+ "2": {
+ "name": "constant.numeric.swift"
+ }
+ },
+ "match": "\\b(swift|(?:iOS|macOS|OSX|watchOS|tvOS|UIKitForMac)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*\\b))?"
+ },
+ {
+ "begin": "\\b(introduced|deprecated|obsoleted)\\s*(:)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.swift"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.swift"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "match": "\\b[0-9]+(?:\\.[0-9]+)*\\b",
+ "name": "constant.numeric.swift"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(message|renamed)\\s*(:)\\s*(?=\")",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.swift"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.swift"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "include": "#literals"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.platform.all.swift"
+ },
+ "2": {
+ "name": "keyword.other.swift"
+ },
+ "3": {
+ "name": "invalid.illegal.character-not-allowed-here.swift"
+ }
+ },
+ "match": "(?:(\\*)|\\b(deprecated|unavailable|noasync)\\b)\\s*(.*?)(?=[,)])"
+ }
+ ]
+ },
+ {
+ "begin": "((@)objc)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.attribute.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.attribute.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.begin.swift"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.swift"
+ }
+ },
+ "name": "meta.attribute.objc.swift",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.missing-colon-after-selector-piece.swift"
+ }
+ },
+ "match": "\\w*(?::(?:\\w*:)*(\\w*))?",
+ "name": "entity.name.function.swift"
+ }
+ ]
+ },
+ {
+ "begin": "(@)(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.modifier.attribute.swift"
+ },
+ "1": {
+ "name": "punctuation.definition.attribute.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "comment": "any other attribute",
+ "end": "(?!\\G\\()",
+ "name": "meta.attribute.swift",
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.begin.swift"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.swift"
+ }
+ },
+ "name": "meta.arguments.attribute.swift",
+ "patterns": [
+ {
+ "include": "#expressions"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "builtin-functions": {
+ "patterns": [
+ {
+ "comment": "Member functions in the standard library in Swift 3 which may be used with trailing closures and no parentheses",
+ "match": "(?<=\\.)(?:s(?:ort(?:ed)?|plit)|contains|index|partition|f(?:i(?:lter|rst)|orEach|latMap)|with(?:MutableCharacters|CString|U(?:nsafe(?:Mutable(?:BufferPointer|Pointer(?:s|To(?:Header|Elements)))|BufferPointer)|TF8Buffer))|m(?:in|a(?:p|x)))(?=\\s*[({])\\b",
+ "name": "support.function.swift"
+ },
+ {
+ "comment": "Member functions in the standard library in Swift 3",
+ "match": "(?<=\\.)(?:s(?:ymmetricDifference|t(?:oreBytes|arts|ride)|ortInPlace|u(?:ccessor|ffix|btract(?:ing|InPlace|WithOverflow)?)|quareRoot|amePosition)|h(?:oldsUnique(?:Reference|OrPinnedReference)|as(?:Suffix|Prefix))|ne(?:gate(?:d)?|xt)|c(?:o(?:untByEnumerating|py(?:Bytes)?)|lamp(?:ed)?|reate)|t(?:o(?:IntMax|Opaque|UIntMax)|ake(?:RetainedValue|UnretainedValue)|r(?:uncatingRemainder|a(?:nscodedLength|ilSurrogate)))|i(?:s(?:MutableAndUniquelyReferenced(?:OrPinned)?|S(?:trictSu(?:perset(?:Of)?|bset(?:Of)?)|u(?:perset(?:Of)?|bset(?:Of)?))|Continuation|T(?:otallyOrdered|railSurrogate)|Disjoint(?:With)?|Unique(?:Reference|lyReferenced(?:OrPinned)?)|Equal|Le(?:ss(?:ThanOrEqualTo)?|adSurrogate))|n(?:sert(?:ContentsOf)?|tersect(?:ion|InPlace)?|itialize(?:Memory|From)?|dex(?:Of|ForKey)))|o(?:verlaps|bjectAt)|d(?:i(?:stance(?:To)?|vide(?:d|WithOverflow)?)|e(?:s(?:cendant|troy)|code(?:CString)?|initialize|alloc(?:ate(?:Capacity)?)?)|rop(?:First|Last))|u(?:n(?:ion(?:InPlace)?|derestimateCount|wrappedOrError)|p(?:date(?:Value)?|percased))|join(?:ed|WithSeparator)|p(?:op(?:First|Last)|ass(?:Retained|Unretained)|re(?:decessor|fix))|e(?:scape(?:d)?|n(?:code|umerate(?:d)?)|lementsEqual|xclusiveOr(?:InPlace)?)|f(?:orm(?:Remainder|S(?:ymmetricDifference|quareRoot)|TruncatingRemainder|In(?:tersection|dex)|Union)|latten|rom(?:CString(?:RepairingIllFormedUTF8)?|Opaque))|w(?:i(?:thMemoryRebound|dth)|rite(?:To)?)|l(?:o(?:wercased|ad)|e(?:adSurrogate|xicographical(?:Compare|lyPrecedes)))|a(?:ss(?:ign(?:BackwardFrom|From)?|umingMemoryBound)|d(?:d(?:ing(?:Product)?|Product|WithOverflow)?|vanced(?:By)?)|utorelease|ppend(?:ContentsOf)?|lloc(?:ate)?|bs)|r(?:ound(?:ed)?|e(?:serveCapacity|tain|duce|place(?:Range|Subrange)?|verse(?:d)?|quest(?:NativeBuffer|UniqueMutableBackingBuffer)|lease|m(?:ove(?:Range|Subrange|Value(?:ForKey)?|First|Last|A(?:tIndex|ll))?|ainder(?:WithOverflow)?)))|ge(?:nerate|t(?:Objects|Element))|m(?:in(?:imum(?:Magnitude)?|Element)|ove(?:Initialize(?:Memory|BackwardFrom|From)?|Assign(?:From)?)?|ultipl(?:y(?:WithOverflow)?|ied)|easure|a(?:ke(?:Iterator|Description)|x(?:imum(?:Magnitude)?|Element)))|bindMemory)(?=\\s*\\()",
+ "name": "support.function.swift"
+ },
+ {
+ "comment": "Member functions in the standard library in Swift 2 only",
+ "match": "(?<=\\.)(?:s(?:uperclassMirror|amePositionIn|tartsWith)|nextObject|c(?:haracterAtIndex|o(?:untByEnumeratingWithState|pyWithZone)|ustom(?:Mirror|PlaygroundQuickLook))|is(?:EmptyInput|ASCII)|object(?:Enumerator|ForKey|AtIndex)|join|put|keyEnumerator|withUnsafeMutablePointerToValue|length|getMirror|m(?:oveInitializeAssignFrom|ember))(?=\\s*\\()",
+ "name": "support.function.swift"
+ }
+ ]
+ },
+ "builtin-global-functions": {
+ "patterns": [
+ {
+ "begin": "\\b(type)(\\()\\s*(of)(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.dynamic-type.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.arguments.begin.swift"
+ },
+ "3": {
+ "name": "support.variable.parameter.swift"
+ },
+ "4": {
+ "name": "punctuation.separator.argument-label.begin.swift"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.swift"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expressions"
+ }
+ ]
+ },
+ {
+ "comment": "Global functions available in Swift 3 which may be used with trailing closures and no parentheses",
+ "match": "\\b(?:anyGenerator|autoreleasepool)(?=\\s*[({])\\b",
+ "name": "support.function.swift"
+ },
+ {
+ "comment": "Global functions available in Swift 3",
+ "match": "\\b(?:s(?:tride(?:of(?:Value)?)?|izeof(?:Value)?|equence|wap)|numericCast|transcode|is(?:UniquelyReferenced(?:NonObjC)?|KnownUniquelyReferenced)|zip|d(?:ump|ebugPrint)|unsafe(?:BitCast|Downcast|Unwrap|Address(?:Of)?)|pr(?:int|econdition(?:Failure)?)|fatalError|with(?:Unsafe(?:MutablePointer|Pointer)|ExtendedLifetime|VaList)|a(?:ssert(?:ionFailure)?|lignof(?:Value)?|bs)|re(?:peatElement|adLine)|getVaList|m(?:in|ax))(?=\\s*\\()",
+ "name": "support.function.swift"
+ },
+ {
+ "comment": "Global functions available in Swift 2 only",
+ "match": "\\b(?:s(?:ort|uffix|pli(?:ce|t))|insert|overlaps|d(?:istance|rop(?:First|Last))|join|prefix|extend|withUnsafe(?:MutablePointers|Pointers)|lazy|advance|re(?:flect|move(?:Range|Last|A(?:tIndex|ll))))(?=\\s*\\()",
+ "name": "support.function.swift"
+ }
+ ]
+ },
+ "builtin-properties": {
+ "patterns": [
+ {
+ "comment": "The simpler (?<=\\bProcess\\.|\\bCommandLine\\.) breaks VS Code / Atom, see https://github.com/textmate/swift.tmbundle/issues/29",
+ "match": "(?<=^Process\\.|\\WProcess\\.|^CommandLine\\.|\\WCommandLine\\.)(arguments|argc|unsafeArgv)",
+ "name": "support.variable.swift"
+ },
+ {
+ "comment": "Properties in the standard library in Swift 3",
+ "match": "(?<=\\.)(?:s(?:t(?:artIndex|ri(?:ngValue|de))|i(?:ze|gn(?:BitIndex|ificand(?:Bit(?:Count|Pattern)|Width)?|alingNaN)?)|u(?:perclassMirror|mmary|bscriptBaseAddress))|h(?:eader|as(?:hValue|PointerRepresentation))|n(?:ulTerminatedUTF8|ext(?:Down|Up)|a(?:n|tiveOwner))|c(?:haracters|ount(?:TrailingZeros)?|ustom(?:Mirror|PlaygroundQuickLook)|apacity)|i(?:s(?:S(?:ign(?:Minus|aling(?:NaN)?)|ubnormal)|N(?:ormal|aN)|Canonical|Infinite|Zero|Empty|Finite|ASCII)|n(?:dices|finity)|dentity)|owner|de(?:scription|bugDescription)|u(?:n(?:safelyUnwrapped|icodeScalar(?:s)?|derestimatedCount)|tf(?:16|8(?:Start|C(?:String|odeUnitCount))?)|intValue|ppercaseString|lp(?:OfOne)?)|p(?:i|ointee)|e(?:ndIndex|lements|xponent(?:Bit(?:Count|Pattern))?)|value(?:s)?|keys|quietNaN|f(?:irst(?:ElementAddress(?:IfContiguous)?)?|loatingPointClass)|l(?:ittleEndian|owercaseString|eastNo(?:nzeroMagnitude|rmalMagnitude)|a(?:st|zy))|a(?:l(?:ignment|l(?:ocatedElementCount|Zeros))|rray(?:PropertyIsNativeTypeChecked)?)|ra(?:dix|wValue)|greatestFiniteMagnitude|m(?:in|emory|ax)|b(?:yteS(?:ize|wapped)|i(?:nade|tPattern|gEndian)|uffer|ase(?:Address)?))\\b",
+ "name": "support.variable.swift"
+ },
+ {
+ "comment": "Properties in the standard library in Swift 2 only",
+ "match": "(?<=\\.)(?:boolValue|disposition|end|objectIdentifier|quickLookObject|start|valueType)\\b",
+ "name": "support.variable.swift"
+ },
+ {
+ "comment": "Enum cases in the standard library - note that there is some overlap between these and the properties",
+ "match": "(?<=\\.)(?:s(?:calarValue|i(?:ze|gnalingNaN)|o(?:und|me)|uppressed|prite|et)|n(?:one|egative(?:Subnormal|Normal|Infinity|Zero))|c(?:ol(?:or|lection)|ustomized)|t(?:o(?:NearestOr(?:Even|AwayFromZero)|wardZero)|uple|ext)|i(?:nt|mage)|optional|d(?:ictionary|o(?:uble|wn))|u(?:Int|p|rl)|p(?:o(?:sitive(?:Subnormal|Normal|Infinity|Zero)|int)|lus)|e(?:rror|mptyInput)|view|quietNaN|float|a(?:ttributedString|wayFromZero)|r(?:ectangle|ange)|generated|minus|b(?:ool|ezierPath))\\b",
+ "name": "support.variable.swift"
+ }
+ ]
+ },
+ "builtin-types": {
+ "comment": "Types provided in the standard library",
+ "patterns": [
+ {
+ "include": "#builtin-class-type"
+ },
+ {
+ "include": "#builtin-enum-type"
+ },
+ {
+ "include": "#builtin-protocol-type"
+ },
+ {
+ "include": "#builtin-struct-type"
+ },
+ {
+ "include": "#builtin-typealias"
+ },
+ {
+ "match": "\\bAny\\b",
+ "name": "support.type.any.swift"
+ }
+ ],
+ "repository": {
+ "builtin-class-type": {
+ "comment": "Builtin class types",
+ "match": "\\b(Managed(Buffer|ProtoBuffer)|NonObjectiveCBase|AnyGenerator)\\b",
+ "name": "support.class.swift"
+ },
+ "builtin-enum-type": {
+ "patterns": [
+ {
+ "comment": "CommandLine is an enum, but it acts like a constant",
+ "match": "\\b(?:CommandLine|Process(?=\\.))\\b",
+ "name": "support.constant.swift"
+ },
+ {
+ "comment": "The return type of a function that never returns",
+ "match": "\\bNever\\b",
+ "name": "support.constant.never.swift"
+ },
+ {
+ "comment": "Enum types in the standard library in Swift 3",
+ "match": "\\b(?:ImplicitlyUnwrappedOptional|Representation|MemoryLayout|FloatingPointClassification|SetIndexRepresentation|SetIteratorRepresentation|FloatingPointRoundingRule|UnicodeDecodingResult|Optional|DictionaryIndexRepresentation|AncestorRepresentation|DisplayStyle|PlaygroundQuickLook|Never|FloatingPointSign|Bit|DictionaryIteratorRepresentation)\\b",
+ "name": "support.type.swift"
+ },
+ {
+ "comment": "Enum types in the standard library in Swift 2 only",
+ "match": "\\b(?:MirrorDisposition|QuickLookObject)\\b",
+ "name": "support.type.swift"
+ }
+ ]
+ },
+ "builtin-protocol-type": {
+ "patterns": [
+ {
+ "comment": "Protocols in the standard library in Swift 3",
+ "match": "\\b(?:Ra(?:n(?:domAccess(?:Collection|Indexable)|geReplaceable(?:Collection|Indexable))|wRepresentable)|M(?:irrorPath|utable(?:Collection|Indexable))|Bi(?:naryFloatingPoint|twiseOperations|directional(?:Collection|Indexable))|S(?:tr(?:ideable|eamable)|igned(?:Number|Integer)|e(?:tAlgebra|quence))|Hashable|C(?:o(?:llection|mparable)|ustom(?:Reflectable|StringConvertible|DebugStringConvertible|PlaygroundQuickLookable|LeafReflectable)|VarArg)|TextOutputStream|I(?:n(?:teger(?:Arithmetic)?|dexable(?:Base)?)|teratorProtocol)|OptionSet|Un(?:signedInteger|icodeCodec)|E(?:quatable|rror|xpressibleBy(?:BooleanLiteral|String(?:Interpolation|Literal)|NilLiteral|IntegerLiteral|DictionaryLiteral|UnicodeScalarLiteral|ExtendedGraphemeClusterLiteral|FloatLiteral|ArrayLiteral))|FloatingPoint|L(?:osslessStringConvertible|azy(?:SequenceProtocol|CollectionProtocol))|A(?:nyObject|bsoluteValuable))\\b",
+ "name": "support.type.swift"
+ },
+ {
+ "comment": "Protocols in the standard library in Swift 2 only",
+ "match": "\\b(?:Ran(?:domAccessIndexType|geReplaceableCollectionType)|GeneratorType|M(?:irror(?:Type|PathType)|utable(?:Sliceable|CollectionType))|B(?:i(?:twiseOperationsType|directionalIndexType)|oolean(?:Type|LiteralConvertible))|S(?:tring(?:InterpolationConvertible|LiteralConvertible)|i(?:nkType|gned(?:NumberType|IntegerType))|e(?:tAlgebraType|quenceType)|liceable)|NilLiteralConvertible|C(?:ollectionType|VarArgType)|Inte(?:rvalType|ger(?:Type|LiteralConvertible|ArithmeticType))|O(?:utputStreamType|ptionSetType)|DictionaryLiteralConvertible|Un(?:signedIntegerType|icode(?:ScalarLiteralConvertible|CodecType))|E(?:rrorType|xten(?:sibleCollectionType|dedGraphemeClusterLiteralConvertible))|F(?:orwardIndexType|loat(?:ingPointType|LiteralConvertible))|A(?:nyCollectionType|rrayLiteralConvertible))\\b",
+ "name": "support.type.swift"
+ }
+ ]
+ },
+ "builtin-struct-type": {
+ "patterns": [
+ {
+ "comment": "Structs in the standard library in Swift 3",
+ "match": "\\b(?:R(?:e(?:peat(?:ed)?|versed(?:RandomAccess(?:Collection|Index)|Collection|Index))|an(?:domAccessSlice|ge(?:Replaceable(?:RandomAccessSlice|BidirectionalSlice|Slice)|Generator)?))|Generator(?:Sequence|OfOne)|M(?:irror|utable(?:Ran(?:domAccessSlice|geReplaceable(?:RandomAccessSlice|BidirectionalSlice|Slice))|BidirectionalSlice|Slice)|anagedBufferPointer)|B(?:idirectionalSlice|ool)|S(?:t(?:aticString|ri(?:ng|deT(?:hrough(?:Generator|Iterator)?|o(?:Generator|Iterator)?)))|et(?:I(?:ndex|terator))?|lice)|HalfOpenInterval|C(?:haracter(?:View)?|o(?:ntiguousArray|untable(?:Range|ClosedRange)|llectionOfOne)|OpaquePointer|losed(?:Range(?:I(?:ndex|terator))?|Interval)|VaListPointer)|I(?:n(?:t(?:16|8|32|64)?|d(?:ices|ex(?:ing(?:Generator|Iterator))?))|terator(?:Sequence|OverOne)?)|Zip2(?:Sequence|Iterator)|O(?:paquePointer|bjectIdentifier)|D(?:ictionary(?:I(?:ndex|terator)|Literal)?|ouble|efault(?:RandomAccessIndices|BidirectionalIndices|Indices))|U(?:n(?:safe(?:RawPointer|Mutable(?:RawPointer|BufferPointer|Pointer)|BufferPointer(?:Generator|Iterator)?|Pointer)|icodeScalar(?:View)?|foldSequence|managed)|TF(?:16(?:View)?|8(?:View)?|32)|Int(?:16|8|32|64)?)|Join(?:Generator|ed(?:Sequence|Iterator))|PermutationGenerator|E(?:numerate(?:Generator|Sequence|d(?:Sequence|Iterator))|mpty(?:Generator|Collection|Iterator))|Fl(?:oat(?:80)?|atten(?:Generator|BidirectionalCollection(?:Index)?|Sequence|Collection(?:Index)?|Iterator))|L(?:egacyChildren|azy(?:RandomAccessCollection|Map(?:RandomAccessCollection|Generator|BidirectionalCollection|Sequence|Collection|Iterator)|BidirectionalCollection|Sequence|Collection|Filter(?:Generator|BidirectionalCollection|Sequence|Collection|I(?:ndex|terator))))|A(?:ny(?:RandomAccessCollection|Generator|BidirectionalCollection|Sequence|Hashable|Collection|I(?:ndex|terator))|utoreleasingUnsafeMutablePointer|rray(?:Slice)?))\\b",
+ "name": "support.type.swift"
+ },
+ {
+ "comment": "Structs in the standard library in Swift 2 only",
+ "match": "\\b(?:R(?:everse(?:RandomAccess(?:Collection|Index)|Collection|Index)|awByte)|Map(?:Generator|Sequence|Collection)|S(?:inkOf|etGenerator)|Zip2Generator|DictionaryGenerator|Filter(?:Generator|Sequence|Collection(?:Index)?)|LazyForwardCollection|Any(?:RandomAccessIndex|BidirectionalIndex|Forward(?:Collection|Index)))\\b",
+ "name": "support.type.swift"
+ }
+ ]
+ },
+ "builtin-typealias": {
+ "patterns": [
+ {
+ "comment": "Typealiases in the standard library in Swift 3",
+ "match": "\\b(?:Raw(?:Significand|Exponent|Value)|B(?:ooleanLiteralType|uffer|ase)|S(?:t(?:orage|r(?:i(?:ngLiteralType|de)|eam(?:1|2)))|ubSequence)|NativeBuffer|C(?:hild(?:ren)?|Bool|S(?:hort|ignedChar)|odeUnit|Char(?:16|32)?|Int|Double|Unsigned(?:Short|Char|Int|Long(?:Long)?)|Float|WideChar|Long(?:Long)?)|I(?:n(?:t(?:Max|egerLiteralType)|d(?:ices|ex(?:Distance)?))|terator)|Distance|U(?:n(?:icodeScalar(?:Type|Index|View|LiteralType)|foldFirstSequence)|TF(?:16(?:Index|View)|8Index)|IntMax)|E(?:lement(?:s)?|x(?:tendedGraphemeCluster(?:Type|LiteralType)|ponent))|V(?:oid|alue)|Key|Float(?:32|LiteralType|64)|AnyClass)\\b",
+ "name": "support.type.swift"
+ },
+ {
+ "comment": "Typealiases in the standard library in Swift 2 only",
+ "match": "\\b(?:Generator|PlaygroundQuickLook|UWord|Word)\\b",
+ "name": "support.type.swift"
+ }
+ ]
+ }
+ }
+ },
+ "code-block": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.begin.swift"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.scope.end.swift"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.swift"
+ }
+ },
+ "match": "\\A^(#!).*$\\n?",
+ "name": "comment.line.number-sign.swift"
+ },
+ {
+ "begin": "/\\*\\*(?!/)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.swift"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.swift"
+ }
+ },
+ "name": "comment.block.documentation.swift",
+ "patterns": [
+ {
+ "include": "#nested"
+ }
+ ]
+ },
+ {
+ "begin": "/\\*:",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.swift"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.swift"
+ }
+ },
+ "name": "comment.block.documentation.playground.swift",
+ "patterns": [
+ {
+ "include": "#nested"
+ }
+ ]
+ },
+ {
+ "begin": "/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.swift"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.swift"
+ }
+ },
+ "name": "comment.block.swift",
+ "patterns": [
+ {
+ "include": "#nested"
+ }
+ ]
+ },
+ {
+ "match": "\\*/",
+ "name": "invalid.illegal.unexpected-end-of-block-comment.swift"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.swift"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "///",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.swift"
+ }
+ },
+ "end": "^",
+ "name": "comment.line.triple-slash.documentation.swift"
+ },
+ {
+ "begin": "//:",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.swift"
+ }
+ },
+ "end": "^",
+ "name": "comment.line.double-slash.documentation.swift"
+ },
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.swift"
+ }
+ },
+ "end": "^",
+ "name": "comment.line.double-slash.swift"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "nested": {
+ "begin": "/\\*",
+ "end": "\\*/",
+ "patterns": [
+ {
+ "include": "#nested"
+ }
+ ]
+ }
+ }
+ },
+ "compiler-control": {
+ "patterns": [
+ {
+ "begin": "^\\s*(#)(if|elseif)\\s+(false)\\b.*?(?=$|//|/\\*)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.preprocessor.conditional.swift"
+ },
+ "1": {
+ "name": "punctuation.definition.preprocessor.swift"
+ },
+ "2": {
+ "name": "keyword.control.preprocessor.conditional.swift"
+ },
+ "3": {
+ "name": "constant.language.boolean.swift"
+ }
+ },
+ "contentName": "comment.block.preprocessor.swift",
+ "end": "(?=^\\s*(#(elseif|else|endif)\\b))"
+ },
+ {
+ "begin": "^\\s*(#)(if|elseif)\\s+",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.preprocessor.swift"
+ },
+ "2": {
+ "name": "keyword.control.preprocessor.conditional.swift"
+ }
+ },
+ "end": "(?=\\s*(?://|/\\*))|$",
+ "name": "meta.preprocessor.conditional.swift",
+ "patterns": [
+ {
+ "match": "(&&|\\|\\|)",
+ "name": "keyword.operator.logical.swift"
+ },
+ {
+ "match": "\\b(true|false)\\b",
+ "name": "constant.language.boolean.swift"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.condition.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.swift"
+ },
+ "3": {
+ "name": "support.constant.platform.architecture.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.parameters.end.swift"
+ }
+ },
+ "match": "\\b(arch)\\s*(\\()\\s*(?:(arm|arm64|powerpc64|powerpc64le|i386|x86_64|s390x)|\\w+)\\s*(\\))"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.condition.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.swift"
+ },
+ "3": {
+ "name": "support.constant.platform.os.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.parameters.end.swift"
+ }
+ },
+ "match": "\\b(os)\\s*(\\()\\s*(?:(macOS|OSX|iOS|tvOS|watchOS|Android|Linux|FreeBSD|Windows|PS4)|\\w+)\\s*(\\))"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.condition.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.swift"
+ },
+ "3": {
+ "name": "entity.name.type.module.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.parameters.end.swift"
+ }
+ },
+ "match": "\\b(canImport)\\s*(\\()([\\p{L}_][\\p{L}_\\p{N}\\p{M}]*)(\\))"
+ },
+ {
+ "begin": "\\b(targetEnvironment)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.condition.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.swift"
+ }
+ },
+ "end": "(\\))|$",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.swift"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\b(simulator|UIKitForMac)\\b",
+ "name": "support.constant.platform.environment.swift"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(swift|compiler)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.condition.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.swift"
+ }
+ },
+ "end": "(\\))|$",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.swift"
+ }
+ },
+ "patterns": [
+ {
+ "match": ">=|<",
+ "name": "keyword.operator.comparison.swift"
+ },
+ {
+ "match": "\\b[0-9]+(?:\\.[0-9]+)*\\b",
+ "name": "constant.numeric.swift"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.preprocessor.swift"
+ },
+ "2": {
+ "name": "keyword.control.preprocessor.conditional.swift"
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\S+",
+ "name": "invalid.illegal.character-not-allowed-here.swift"
+ }
+ ]
+ }
+ },
+ "match": "^\\s*(#)(else|endif)(.*?)(?=$|//|/\\*)",
+ "name": "meta.preprocessor.conditional.swift"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.preprocessor.swift"
+ },
+ "2": {
+ "name": "keyword.control.preprocessor.sourcelocation.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.parameters.begin.swift"
+ },
+ "5": {
+ "patterns": [
+ {
+ "begin": "(file)\\s*(:)\\s*(?=\")",
+ "beginCaptures": {
+ "1": {
+ "name": "support.variable.parameter.swift"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.swift"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "include": "#literals"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.variable.parameter.swift"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.swift"
+ },
+ "3": {
+ "name": "constant.numeric.integer.swift"
+ }
+ },
+ "match": "(line)\\s*(:)\\s*([0-9]+)"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.parameters.swift"
+ },
+ {
+ "match": "\\S+",
+ "name": "invalid.illegal.character-not-allowed-here.swift"
+ }
+ ]
+ },
+ "6": {
+ "name": "punctuation.definition.parameters.begin.swift"
+ },
+ "7": {
+ "patterns": [
+ {
+ "match": "\\S+",
+ "name": "invalid.illegal.character-not-allowed-here.swift"
+ }
+ ]
+ }
+ },
+ "match": "^\\s*(#)(sourceLocation)((\\()([^)]*)(\\)))(.*?)(?=$|//|/\\*)",
+ "name": "meta.preprocessor.sourcelocation.swift"
+ }
+ ]
+ },
+ "declarations": {
+ "patterns": [
+ {
+ "include": "#function"
+ },
+ {
+ "include": "#function-initializer"
+ },
+ {
+ "include": "#typed-variable-declaration"
+ },
+ {
+ "include": "#import"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#precedencegroup"
+ },
+ {
+ "include": "#protocol"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#extension"
+ },
+ {
+ "include": "#typealias"
+ }
+ ],
+ "repository": {
+ "available-types": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#builtin-types"
+ },
+ {
+ "include": "#attributes"
+ },
+ {
+ "match": "\\basync\\b",
+ "name": "keyword.control.async.swift"
+ },
+ {
+ "match": "\\b(?:throws|rethrows)\\b",
+ "name": "keyword.control.exception.swift"
+ },
+ {
+ "match": "\\bsome\\b",
+ "name": "keyword.operator.type.opaque.swift"
+ },
+ {
+ "match": "\\bany\\b",
+ "name": "keyword.operator.type.existential.swift"
+ },
+ {
+ "match": "\\b(?:inout|isolated)\\b",
+ "name": "storage.modifier.swift"
+ },
+ {
+ "match": "\\bSelf\\b",
+ "name": "variable.language.swift"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.type.function.swift"
+ }
+ },
+ "match": "(?<![/=\\-+!*%<>&|\\^~.])(->)(?![/=\\-+!*%<>&|\\^~.])"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.type.composition.swift"
+ }
+ },
+ "comment": "Swift 3: A & B",
+ "match": "(?<![/=\\-+!*%<>&|\\^~.])(&)(?![/=\\-+!*%<>&|\\^~.])"
+ },
+ {
+ "match": "[?!]",
+ "name": "keyword.operator.type.optional.swift"
+ },
+ {
+ "match": "\\.\\.\\.",
+ "name": "keyword.operator.function.variadic-parameter.swift"
+ },
+ {
+ "comment": "Swift 2: protocol<A, B>",
+ "match": "\\bprotocol\\b",
+ "name": "keyword.operator.type.composition.swift"
+ },
+ {
+ "match": "(?<=\\.)(?:Protocol|Type)\\b",
+ "name": "keyword.operator.type.metatype.swift"
+ },
+ {
+ "include": "#tuple-type"
+ },
+ {
+ "include": "#collection-type"
+ },
+ {
+ "include": "#generic-argument-clause"
+ }
+ ],
+ "repository": {
+ "collection-type": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.collection-type.begin.swift"
+ }
+ },
+ "comment": "array and dictionary types [Value] and [Key: Value]",
+ "end": "\\]|(?=[>){}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.collection-type.end.swift"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#available-types"
+ },
+ {
+ "begin": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.key-value.swift"
+ }
+ },
+ "end": "(?=\\]|[>){}])",
+ "patterns": [
+ {
+ "match": ":",
+ "name": "invalid.illegal.extra-colon-in-dictionary-type.swift"
+ },
+ {
+ "include": "#available-types"
+ }
+ ]
+ }
+ ]
+ },
+ "tuple-type": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.tuple-type.begin.swift"
+ }
+ },
+ "end": "\\)|(?=[>\\]{}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.tuple-type.end.swift"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#available-types"
+ }
+ ]
+ }
+ }
+ },
+ "extension": {
+ "begin": "\\b(extension)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.$1.swift"
+ },
+ "2": {
+ "name": "entity.name.type.swift",
+ "patterns": [
+ {
+ "include": "#available-types"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "end": "(?<=\\})",
+ "name": "meta.definition.type.$1.swift",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "comment": "SE-0143: Conditional Conformances",
+ "include": "#generic-where-clause"
+ },
+ {
+ "include": "#inheritance-clause"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.type.begin.swift"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.type.end.swift"
+ }
+ },
+ "name": "meta.definition.type.body.swift",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "function": {
+ "begin": "(?x)\n\t\t\t\t\t\t\\b\n\t\t\t\t\t\t(?:(nonisolated)\\s+)?\n\t\t\t\t\t\t(func)\n\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)\n\t\t\t\t\t\t | (?:\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?<oph>\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\g<oph>\n\t\t\t\t\t\t\t\t\t | (?<opc>\t\t\t\t\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t)*\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t | ( \\. ( \\g<oph> | \\g<opc> | \\. )+ )\t\t\t# Dot operators\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t(?=\\(|<)\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.swift"
+ },
+ "2": {
+ "name": "storage.type.function.swift"
+ },
+ "3": {
+ "name": "entity.name.function.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "5": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "end": "(?<=\\})|$(?# functions in protocol declarations or generated interfaces have no body)",
+ "name": "meta.definition.function.swift",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#generic-parameter-clause"
+ },
+ {
+ "include": "#parameter-clause"
+ },
+ {
+ "include": "#function-result"
+ },
+ {
+ "include": "#async-throws"
+ },
+ {
+ "comment": "Swift 3: generic constraints after the parameters and return type",
+ "include": "#generic-where-clause"
+ },
+ {
+ "begin": "(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.function.begin.swift"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.function.end.swift"
+ }
+ },
+ "name": "meta.definition.function.body.swift",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "function-initializer": {
+ "begin": "(?<!\\.)\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\s*(?=\\(|<)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.swift",
+ "patterns": [
+ {
+ "match": "(?<=[?!])[?!]+",
+ "name": "invalid.illegal.character-not-allowed-here.swift"
+ }
+ ]
+ }
+ },
+ "end": "(?<=\\})|$",
+ "name": "meta.definition.function.initializer.swift",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#generic-parameter-clause"
+ },
+ {
+ "include": "#parameter-clause"
+ },
+ {
+ "include": "#async-throws"
+ },
+ {
+ "comment": "Swift 3: generic constraints after the parameters and return type",
+ "include": "#generic-where-clause"
+ },
+ {
+ "begin": "(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.section.function.begin.swift"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.function.end.swift"
+ }
+ },
+ "name": "meta.definition.function.body.swift",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "function-result": {
+ "begin": "(?<![/=\\-+!*%<>&|\\^~.])(->)(?![/=\\-+!*%<>&|\\^~.])\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.function-result.swift"
+ }
+ },
+ "end": "(?!\\G)(?=\\{|\\bwhere\\b|;)|$",
+ "name": "meta.function-result.swift",
+ "patterns": [
+ {
+ "include": "#available-types"
+ }
+ ]
+ },
+ "generic-argument-clause": {
+ "begin": "<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.generic-argument-clause.begin.swift"
+ }
+ },
+ "end": ">|(?=[)\\]{}])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.separator.generic-argument-clause.end.swift"
+ }
+ },
+ "name": "meta.generic-argument-clause.swift",
+ "patterns": [
+ {
+ "include": "#available-types"
+ }
+ ]
+ },
+ "generic-parameter-clause": {
+ "begin": "<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.generic-parameter-clause.begin.swift"
+ }
+ },
+ "end": ">|(?=[^\\w\\d:<>\\s,=&`])(?# characters besides these are never valid in a generic param list -- even if it's not really a valid clause, we should stop trying to parse it if we see one of them.)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.separator.generic-parameter-clause.end.swift"
+ }
+ },
+ "name": "meta.generic-parameter-clause.swift",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "comment": "Swift 2: constraints inside the generic param list",
+ "include": "#generic-where-clause"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "variable.language.generic-parameter.swift"
+ }
+ },
+ "match": "\\b((?!\\d)\\w[\\w\\d]*)\\b"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.generic-parameters.swift"
+ },
+ {
+ "begin": "(:)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.generic-parameter-constraint.swift"
+ }
+ },
+ "end": "(?=[,>]|(?!\\G)\\bwhere\\b)",
+ "name": "meta.generic-parameter-constraint.swift",
+ "patterns": [
+ {
+ "begin": "\\G",
+ "end": "(?=[,>]|(?!\\G)\\bwhere\\b)",
+ "name": "entity.other.inherited-class.swift",
+ "patterns": [
+ {
+ "include": "#type-identifier"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "generic-where-clause": {
+ "begin": "\\b(where)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.generic-constraint-introducer.swift"
+ }
+ },
+ "end": "(?!\\G)$|(?=[>{};\\n]|//|/\\*)",
+ "name": "meta.generic-where-clause.swift",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#requirement-list"
+ }
+ ],
+ "repository": {
+ "requirement-list": {
+ "begin": "\\G|,\\s*",
+ "end": "(?=[,>{};\\n]|//|/\\*)",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#constraint"
+ },
+ {
+ "include": "#available-types"
+ },
+ {
+ "begin": "(?<![/=\\-+!*%<>&|\\^~.])(==)(?![/=\\-+!*%<>&|\\^~.])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.generic-constraint.same-type.swift"
+ }
+ },
+ "end": "(?=\\s*[,>{};\\n]|//|/\\*)",
+ "name": "meta.generic-where-clause.same-type-requirement.swift",
+ "patterns": [
+ {
+ "include": "#available-types"
+ }
+ ]
+ },
+ {
+ "begin": "(?<![/=\\-+!*%<>&|\\^~.])(:)(?![/=\\-+!*%<>&|\\^~.])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.generic-constraint.conforms-to.swift"
+ }
+ },
+ "end": "(?=\\s*[,>{};\\n]|//|/\\*)",
+ "name": "meta.generic-where-clause.conformance-requirement.swift",
+ "patterns": [
+ {
+ "begin": "\\G\\s*",
+ "contentName": "entity.other.inherited-class.swift",
+ "end": "(?=\\s*[,>{};\\n]|//|/\\*)",
+ "patterns": [
+ {
+ "include": "#available-types"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "import": {
+ "begin": "(?<!\\.)\\b(import)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.import.swift"
+ }
+ },
+ "end": "(;)|$\\n?|(?=//|/\\*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.swift"
+ }
+ },
+ "name": "meta.import.swift",
+ "patterns": [
+ {
+ "begin": "\\G(?!;|$|//|/\\*)(?:(typealias|struct|class|actor|enum|protocol|var|func)\\s+)?",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.swift"
+ }
+ },
+ "end": "(?=;|$|//|/\\*)",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?<=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)\n\t\t\t\t\t\t\t\t\t",
+ "name": "entity.name.type.swift"
+ },
+ {
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?<=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t\\$[0-9]+\n\t\t\t\t\t\t\t\t\t",
+ "name": "entity.name.type.swift"
+ },
+ {
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "match": "\\.",
+ "name": "invalid.illegal.dot-not-allowed-here.swift"
+ }
+ ]
+ }
+ },
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?<=\\G|\\.)\n\t\t\t\t\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t(?<oph>\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\t\t\t\\g<oph>\n\t\t\t\t\t\t\t\t\t\t\t\t | (?<opc>\t\t\t\t\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t\t\t)*\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t | ( \\. ( \\g<oph> | \\g<opc> | \\. )+ )\t\t\t# Dot operators\n\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t(?=\\.|;|$|//|/\\*|\\s)\n\t\t\t\t\t\t\t\t\t",
+ "name": "entity.name.type.swift"
+ },
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.import.swift"
+ },
+ {
+ "begin": "(?!\\s*(;|$|//|/\\*))",
+ "end": "(?=\\s*(;|$|//|/\\*))",
+ "name": "invalid.illegal.character-not-allowed-here.swift"
+ }
+ ]
+ }
+ ]
+ },
+ "inheritance-clause": {
+ "begin": "(:)(?=\\s*\\{)|(:)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "invalid.illegal.empty-inheritance-clause.swift"
+ },
+ "2": {
+ "name": "punctuation.separator.inheritance-clause.swift"
+ }
+ },
+ "end": "(?!\\G)$|(?=[={}]|(?!\\G)\\bwhere\\b)",
+ "name": "meta.inheritance-clause.swift",
+ "patterns": [
+ {
+ "begin": "\\bclass\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.class.swift"
+ }
+ },
+ "end": "(?=[={}]|(?!\\G)\\bwhere\\b)",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#more-types"
+ }
+ ]
+ },
+ {
+ "begin": "\\G",
+ "end": "(?!\\G)$|(?=[={}]|(?!\\G)\\bwhere\\b)",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#inherited-type"
+ },
+ {
+ "include": "#more-types"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "inherited-type": {
+ "begin": "(?=[`\\p{L}_])",
+ "end": "(?!\\G)",
+ "name": "entity.other.inherited-class.swift",
+ "patterns": [
+ {
+ "include": "#type-identifier"
+ }
+ ]
+ },
+ "more-types": {
+ "begin": ",\\s*",
+ "end": "(?!\\G)(?!//|/\\*)|(?=[,={}]|(?!\\G)\\bwhere\\b)",
+ "name": "meta.inheritance-list.more-types",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#inherited-type"
+ },
+ {
+ "include": "#more-types"
+ }
+ ]
+ }
+ }
+ },
+ "operator": {
+ "begin": "(?x)\n\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\\b(prefix|infix|postfix)\n\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t)?\n\t\t\t\t\t\t\\b\n\t\t\t\t\t\t(operator)\n\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t(?<oph>\t\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\n\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\\g<oph>\n\t\t\t\t\t\t\t\t | \\.\t\t\t\t\t\t\t\t\t# Invalid dot\n\t\t\t\t\t\t\t\t | (?<opc>\t\t\t\t\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)*+\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t | ( \\. ( \\g<oph> | \\g<opc> | \\. )++ )\t\t\t# Dot operators\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\\s*\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.swift"
+ },
+ "2": {
+ "name": "storage.type.function.operator.swift"
+ },
+ "3": {
+ "name": "entity.name.function.operator.swift"
+ },
+ "4": {
+ "patterns": [
+ {
+ "match": "\\.",
+ "name": "invalid.illegal.dot-not-allowed-here.swift"
+ }
+ ]
+ }
+ },
+ "end": "(;)|$\\n?|(?=//|/\\*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.statement.swift"
+ }
+ },
+ "name": "meta.definition.operator.swift",
+ "patterns": [
+ {
+ "include": "#swift2"
+ },
+ {
+ "include": "#swift3"
+ },
+ {
+ "match": "((?!$|;|//|/\\*)\\S)+",
+ "name": "invalid.illegal.character-not-allowed-here.swift"
+ }
+ ],
+ "repository": {
+ "swift2": {
+ "begin": "\\G(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.operator.begin.swift"
+ }
+ },
+ "end": "(\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.operator.end.swift"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.modifier.swift"
+ },
+ "2": {
+ "name": "keyword.other.operator.associativity.swift"
+ }
+ },
+ "match": "\\b(associativity)\\s+(left|right)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.modifier.swift"
+ },
+ "2": {
+ "name": "constant.numeric.integer.swift"
+ }
+ },
+ "match": "\\b(precedence)\\s+([0-9]+)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.modifier.swift"
+ }
+ },
+ "match": "\\b(assignment)\\b"
+ }
+ ]
+ },
+ "swift3": {
+ "captures": {
+ "2": {
+ "name": "entity.other.inherited-class.swift",
+ "patterns": [
+ {
+ "include": "#types-precedencegroup"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "match": "\\G(:)\\s*((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))"
+ }
+ }
+ },
+ "parameter-clause": {
+ "begin": "(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.begin.swift"
+ }
+ },
+ "end": "(\\))(?:\\s*(async)\\b)?",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.swift"
+ },
+ "2": {
+ "name": "keyword.control.async.swift"
+ }
+ },
+ "name": "meta.parameter-clause.swift",
+ "patterns": [
+ {
+ "include": "#parameter-list"
+ }
+ ]
+ },
+ "parameter-list": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "entity.name.function.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "4": {
+ "name": "variable.parameter.function.swift"
+ },
+ "5": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "6": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "comment": "External parameter labels are considered part of the function name",
+ "match": "((?<q1>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q1>))\\s+((?<q2>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q2>))(?=\\s*:)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "variable.parameter.function.swift"
+ },
+ "2": {
+ "name": "entity.name.function.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "comment": "If no external label is given, the name is both the external label and the internal variable name",
+ "match": "(((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)))(?=\\s*:)"
+ },
+ {
+ "begin": ":\\s*(?!\\s)",
+ "end": "(?=[,)])",
+ "patterns": [
+ {
+ "include": "#available-types"
+ },
+ {
+ "match": ":",
+ "name": "invalid.illegal.extra-colon-in-parameter-list.swift"
+ },
+ {
+ "begin": "=",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.assignment.swift"
+ }
+ },
+ "comment": "a parameter's default value",
+ "end": "(?=[,)])",
+ "patterns": [
+ {
+ "include": "#expressions"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "precedencegroup": {
+ "begin": "\\b(precedencegroup)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*(?=\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.precedencegroup.swift"
+ },
+ "2": {
+ "name": "entity.name.type.precedencegroup.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "end": "(?!\\G)",
+ "name": "meta.definition.precedencegroup.swift",
+ "patterns": [
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.precedencegroup.begin.swift"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.precedencegroup.end.swift"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.modifier.swift"
+ },
+ "2": {
+ "name": "entity.other.inherited-class.swift",
+ "patterns": [
+ {
+ "include": "#types-precedencegroup"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "match": "\\b(higherThan|lowerThan)\\s*:\\s*((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.modifier.swift"
+ },
+ "2": {
+ "name": "keyword.other.operator.associativity.swift"
+ }
+ },
+ "match": "\\b(associativity)\\b(?:\\s*:\\s*(right|left|none)\\b)?"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.modifier.swift"
+ },
+ "2": {
+ "name": "constant.language.boolean.swift"
+ }
+ },
+ "match": "\\b(assignment)\\b(?:\\s*:\\s*(true|false)\\b)?"
+ }
+ ]
+ }
+ ]
+ },
+ "protocol": {
+ "begin": "\\b(protocol)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.$1.swift"
+ },
+ "2": {
+ "name": "entity.name.type.$1.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "end": "(?<=\\})",
+ "name": "meta.definition.type.protocol.swift",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#inheritance-clause"
+ },
+ {
+ "comment": "SE-0142: Permit where clauses to constrain associated types",
+ "include": "#generic-where-clause"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.type.begin.swift"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.type.end.swift"
+ }
+ },
+ "name": "meta.definition.type.body.swift",
+ "patterns": [
+ {
+ "include": "#protocol-method"
+ },
+ {
+ "include": "#protocol-initializer"
+ },
+ {
+ "include": "#associated-type"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "associated-type": {
+ "begin": "\\b(associatedtype)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.declaration-specifier.swift"
+ },
+ "2": {
+ "name": "variable.language.associatedtype.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "end": "(?!\\G)$|(?=[;}]|$)",
+ "name": "meta.definition.associatedtype.swift",
+ "patterns": [
+ {
+ "include": "#inheritance-clause"
+ },
+ {
+ "comment": "SE-0142: Permit where clauses to constrain associated types",
+ "include": "#generic-where-clause"
+ },
+ {
+ "include": "#typealias-assignment"
+ }
+ ]
+ },
+ "protocol-initializer": {
+ "begin": "(?<!\\.)\\b(init[?!]*(?# only one is valid, but we want the in⇥ snippet to produce something that looks good))\\s*(?=\\(|<)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.swift",
+ "patterns": [
+ {
+ "match": "(?<=[?!])[?!]+",
+ "name": "invalid.illegal.character-not-allowed-here.swift"
+ }
+ ]
+ }
+ },
+ "end": "$|(?=;|//|/\\*|\\})",
+ "name": "meta.definition.function.initializer.swift",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#generic-parameter-clause"
+ },
+ {
+ "include": "#parameter-clause"
+ },
+ {
+ "include": "#async-throws"
+ },
+ {
+ "comment": "Swift 3: generic constraints after the parameters and return type",
+ "include": "#generic-where-clause"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.function.begin.swift"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.swift"
+ }
+ },
+ "name": "invalid.illegal.function-body-not-allowed-in-protocol.swift",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "protocol-method": {
+ "begin": "(?x)\n\t\t\t\t\t\t\t\t\\b\n\t\t\t\t\t\t\t\t(func)\n\t\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)\n\t\t \t\t\t\t\t\t | (?:\n\t\t \t\t\t\t\t\t\t\t(\n\t\t \t\t\t\t\t\t\t\t\t(?<oph>\t\t\t\t\t\t\t\t# operator-head\n\t\t \t\t\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t \t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t \t\t\t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t\t\t\t(\n\t\t \t\t\t\t\t\t\t\t\t\t\\g<oph>\n\t\t \t\t\t\t\t\t\t\t\t | (?<opc>\t\t\t\t\t\t\t\t# operator-character\n\t\t \t\t\t\t\t\t\t\t\t\t\t[\\x{0300}-\\x{036F}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t \t\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t \t\t\t\t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t\t\t\t)*\n\t\t \t\t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t\t | ( \\. ( \\g<oph> | \\g<opc> | \\. )+ )\t\t\t# Dot operators\n\t\t \t\t\t\t\t\t\t)\n\t\t \t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\\s*\n\t\t\t\t\t\t\t\t(?=\\(|<)\n\t\t\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.swift"
+ },
+ "2": {
+ "name": "entity.name.function.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "end": "$|(?=;|//|/\\*|\\})",
+ "name": "meta.definition.function.swift",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#generic-parameter-clause"
+ },
+ {
+ "include": "#parameter-clause"
+ },
+ {
+ "include": "#function-result"
+ },
+ {
+ "include": "#async-throws"
+ },
+ {
+ "comment": "Swift 3: generic constraints after the parameters and return type",
+ "include": "#generic-where-clause"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.function.begin.swift"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.function.end.swift"
+ }
+ },
+ "name": "invalid.illegal.function-body-not-allowed-in-protocol.swift",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ "type": {
+ "patterns": [
+ {
+ "begin": "\\b(class(?!\\s+(?:func|var|let)\\b)|struct|actor)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.$1.swift"
+ },
+ "2": {
+ "name": "entity.name.type.$1.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "end": "(?<=\\})",
+ "name": "meta.definition.type.$1.swift",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#generic-parameter-clause"
+ },
+ {
+ "comment": "Swift 3: generic constraints after the generic param list",
+ "include": "#generic-where-clause"
+ },
+ {
+ "include": "#inheritance-clause"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.type.begin.swift"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.type.end.swift"
+ }
+ },
+ "name": "meta.definition.type.body.swift",
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "include": "#type-enum"
+ }
+ ]
+ },
+ "type-enum": {
+ "begin": "\\b(enum)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.$1.swift"
+ },
+ "2": {
+ "name": "entity.name.type.$1.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "end": "(?<=\\})",
+ "name": "meta.definition.type.$1.swift",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#generic-parameter-clause"
+ },
+ {
+ "comment": "Swift 3: generic constraints after the generic param list",
+ "include": "#generic-where-clause"
+ },
+ {
+ "include": "#inheritance-clause"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.type.begin.swift"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.type.end.swift"
+ }
+ },
+ "name": "meta.definition.type.body.swift",
+ "patterns": [
+ {
+ "include": "#enum-case-clause"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "associated-values": {
+ "begin": "\\G\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.begin.swift"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.swift"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t\t\t\t\t(?:(_)|((?<q1>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k<q1>))\n\t\t\t\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t\t\t\t\t(((?<q2>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k<q2>))\n\t\t\t\t\t\t\t\t\t\t\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.swift"
+ },
+ "2": {
+ "name": "invalid.illegal.distinct-labels-not-allowed.swift"
+ },
+ "5": {
+ "name": "variable.parameter.function.swift"
+ },
+ "7": {
+ "name": "punctuation.separator.argument-label.swift"
+ }
+ },
+ "end": "(?=[,)\\]])",
+ "patterns": [
+ {
+ "include": "#available-types"
+ }
+ ]
+ },
+ {
+ "begin": "(((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*\\k<q>))\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.swift"
+ },
+ "2": {
+ "name": "variable.parameter.function.swift"
+ },
+ "4": {
+ "name": "punctuation.separator.argument-label.swift"
+ }
+ },
+ "end": "(?=[,)\\]])",
+ "patterns": [
+ {
+ "include": "#available-types"
+ }
+ ]
+ },
+ {
+ "begin": "(?![,)\\]])(?=\\S)",
+ "comment": "an element without a label (i.e. anything else)",
+ "end": "(?=[,)\\]])",
+ "patterns": [
+ {
+ "include": "#available-types"
+ },
+ {
+ "match": ":",
+ "name": "invalid.illegal.extra-colon-in-parameter-list.swift"
+ }
+ ]
+ }
+ ]
+ },
+ "enum-case": {
+ "begin": "(?x)((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.other.swift"
+ }
+ },
+ "end": "(?<=\\))|(?![=(])",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#associated-values"
+ },
+ {
+ "include": "#raw-value-assignment"
+ }
+ ]
+ },
+ "enum-case-clause": {
+ "begin": "\\b(case)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.enum.case.swift"
+ }
+ },
+ "end": "(?=[;}])|(?!\\G)(?!//|/\\*)(?=[^\\s,])",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#enum-case"
+ },
+ {
+ "include": "#more-cases"
+ }
+ ]
+ },
+ "more-cases": {
+ "begin": ",\\s*",
+ "end": "(?!\\G)(?!//|/\\*)(?=[;}]|[^\\s,])",
+ "name": "meta.enum-case.more-cases",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#enum-case"
+ },
+ {
+ "include": "#more-cases"
+ }
+ ]
+ },
+ "raw-value-assignment": {
+ "begin": "(=)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.swift"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#literals"
+ }
+ ]
+ }
+ }
+ },
+ "type-identifier": {
+ "begin": "((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.type-name.swift",
+ "patterns": [
+ {
+ "include": "#builtin-types"
+ }
+ ]
+ },
+ "2": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "end": "(?!<)",
+ "patterns": [
+ {
+ "begin": "(?=<)",
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "include": "#generic-argument-clause"
+ }
+ ]
+ }
+ ]
+ },
+ "typealias": {
+ "begin": "\\b(typealias)\\s+((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.declaration-specifier.swift"
+ },
+ "2": {
+ "name": "entity.name.type.typealias.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "end": "(?!\\G)$|(?=;|//|/\\*|$)",
+ "name": "meta.definition.typealias.swift",
+ "patterns": [
+ {
+ "begin": "\\G(?=<)",
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "include": "#generic-parameter-clause"
+ }
+ ]
+ },
+ {
+ "include": "#typealias-assignment"
+ }
+ ]
+ },
+ "typealias-assignment": {
+ "begin": "(=)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.swift"
+ }
+ },
+ "end": "(?!\\G)$|(?=;|//|/\\*|$)",
+ "patterns": [
+ {
+ "include": "#available-types"
+ }
+ ]
+ },
+ "typed-variable-declaration": {
+ "begin": "(?x)\n\t\t\t\t\t\t\\b(?:(async)\\s+)?(let|var)\\b\\s+\n\t\t\t\t\t\t(?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>)\\s*\n\t\t\t\t\t\t:\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.async.swift"
+ },
+ "2": {
+ "name": "keyword.other.declaration-specifier.swift"
+ }
+ },
+ "end": "(?=$|[={])",
+ "patterns": [
+ {
+ "include": "#available-types"
+ }
+ ]
+ },
+ "types-precedencegroup": {
+ "patterns": [
+ {
+ "comment": "Precedence groups in the standard library",
+ "match": "\\b(?:BitwiseShift|Assignment|RangeFormation|Casting|Addition|NilCoalescing|Comparison|LogicalConjunction|LogicalDisjunction|Default|Ternary|Multiplication|FunctionArrow)Precedence\\b",
+ "name": "support.type.swift"
+ }
+ ]
+ }
+ }
+ },
+ "expressions": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#code-block"
+ },
+ {
+ "include": "#attributes"
+ },
+ {
+ "include": "#closure-parameter"
+ },
+ {
+ "include": "#literals"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#builtin-types"
+ },
+ {
+ "include": "#builtin-functions"
+ },
+ {
+ "include": "#builtin-global-functions"
+ },
+ {
+ "include": "#builtin-properties"
+ },
+ {
+ "include": "#compound-name"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#function-call-expression"
+ },
+ {
+ "include": "#subscript-expression"
+ },
+ {
+ "include": "#parenthesized-expression"
+ },
+ {
+ "include": "#member-reference"
+ },
+ {
+ "include": "#availability-condition"
+ },
+ {
+ "match": "\\b_\\b",
+ "name": "support.variable.discard-value.swift"
+ }
+ ],
+ "repository": {
+ "availability-condition": {
+ "begin": "\\B(#(?:un)?available)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.availability-condition.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.arguments.begin.swift"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.swift"
+ }
+ },
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.platform.os.swift"
+ },
+ "2": {
+ "name": "constant.numeric.swift"
+ }
+ },
+ "match": "\\s*\\b((?:iOS|macOS|OSX|watchOS|tvOS|UIKitForMac)(?:ApplicationExtension)?)\\b(?:\\s+([0-9]+(?:\\.[0-9]+)*\\b))"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.platform.all.swift"
+ },
+ "2": {
+ "name": "invalid.illegal.character-not-allowed-here.swift"
+ }
+ },
+ "match": "(\\*)\\s*(.*?)(?=[,)])"
+ },
+ {
+ "match": "[^\\s,)]+",
+ "name": "invalid.illegal.character-not-allowed-here.swift"
+ }
+ ]
+ },
+ "closure-parameter": {
+ "match": "\\$[0-9]+",
+ "name": "variable.language.closure-parameter.swift"
+ },
+ "compound-name": {
+ "captures": {
+ "1": {
+ "name": "entity.name.function.compound-name.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.entity.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.entity.swift"
+ },
+ "4": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.entity.swift"
+ }
+ },
+ "match": "(?<q>`?)(?!_:)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>):",
+ "name": "entity.name.function.compound-name.swift"
+ }
+ ]
+ }
+ },
+ "comment": "a reference to a function with disambiguating argument labels, such as foo(_:), foo(bar:), etc.",
+ "match": "(?x)\n\t\t\t\t\t\t((?<q1>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q1>)) \t\t# function name\n\t\t\t\t\t\t\\(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t((?<q2>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q2>)) \t# argument label\n\t\t\t\t\t\t\t\t\t:\t\t\t\t\t\t\t\t\t\t\t\t# colon\n\t\t\t\t\t\t\t\t)+\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\\)\n\t\t\t\t\t"
+ },
+ "expression-element-list": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.any-method.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "4": {
+ "name": "punctuation.separator.argument-label.swift"
+ }
+ },
+ "comment": "an element with a label",
+ "end": "(?=[,)\\]])",
+ "patterns": [
+ {
+ "include": "#expressions"
+ }
+ ]
+ },
+ {
+ "begin": "(?![,)\\]])(?=\\S)",
+ "comment": "an element without a label (i.e. anything else)",
+ "end": "(?=[,)\\]])",
+ "patterns": [
+ {
+ "include": "#expressions"
+ }
+ ]
+ }
+ ]
+ },
+ "function-call-expression": {
+ "patterns": [
+ {
+ "begin": "((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.any-method.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "4": {
+ "name": "punctuation.definition.arguments.begin.swift"
+ }
+ },
+ "comment": "foo(args) -- a call whose callee is a highlightable name",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.swift"
+ }
+ },
+ "name": "meta.function-call.swift",
+ "patterns": [
+ {
+ "include": "#expression-element-list"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=[`\\])}>\\p{L}_\\p{N}\\p{M}])\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.swift"
+ }
+ },
+ "comment": "[Int](args) -- a call whose callee is a more complicated expression",
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.swift"
+ }
+ },
+ "name": "meta.function-call.swift",
+ "patterns": [
+ {
+ "include": "#expression-element-list"
+ }
+ ]
+ }
+ ]
+ },
+ "member-reference": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "variable.other.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.identifier.swift"
+ },
+ "3": {
+ "name": "punctuation.definition.identifier.swift"
+ }
+ },
+ "match": "(?<=\\.)((?<q>`?)[\\p{L}_][\\p{L}_\\p{N}\\p{M}]*(\\k<q>))"
+ }
+ ]
+ },
+ "parenthesized-expression": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.tuple.begin.swift"
+ }
+ },
+ "comment": "correctly matching closure expressions is too hard (depends on trailing \"in\") so we just tack on some basics to the end of parenthesized-expression",
+ "end": "(\\))\\s*((?:\\b(?:async|throws|rethrows)\\s)*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.tuple.end.swift"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\brethrows\\b",
+ "name": "invalid.illegal.rethrows-only-allowed-on-function-declarations.swift"
+ },
+ {
+ "include": "#async-throws"
+ }
+ ]
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-element-list"
+ }
+ ]
+ },
+ "subscript-expression": {
+ "begin": "(?<=[`\\p{L}_\\p{N}\\p{M}])\\s*(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.swift"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.swift"
+ }
+ },
+ "name": "meta.subscript-expression.swift",
+ "patterns": [
+ {
+ "include": "#expression-element-list"
+ }
+ ]
+ }
+ }
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "match": "(?<!\\.)\\b(?:if|else|guard|where|switch|case|default|fallthrough)\\b",
+ "name": "keyword.control.branch.swift"
+ },
+ {
+ "match": "(?<!\\.)\\b(?:continue|break|fallthrough|return)\\b",
+ "name": "keyword.control.transfer.swift"
+ },
+ {
+ "match": "(?<!\\.)\\b(?:while|for|in)\\b",
+ "name": "keyword.control.loop.swift"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.loop.swift"
+ },
+ "2": {
+ "name": "punctuation.whitespace.trailing.repeat.swift"
+ }
+ },
+ "comment": "extra scopes for repeat-while snippet",
+ "match": "(?<!\\.)\\b(repeat)\\b(\\s*)"
+ },
+ {
+ "match": "(?<!\\.)\\bdefer\\b",
+ "name": "keyword.control.defer.swift"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.try-must-precede-await.swift"
+ },
+ "2": {
+ "name": "keyword.control.await.swift"
+ }
+ },
+ "match": "(?<!\\.)\\b(?:(await\\s+try)|(await)\\b)"
+ },
+ {
+ "match": "(?<!\\.)\\b(?:catch|throws?|rethrows|try)\\b|\\btry[?!]\\B",
+ "name": "keyword.control.exception.swift"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.exception.swift"
+ },
+ "2": {
+ "name": "punctuation.whitespace.trailing.do.swift"
+ }
+ },
+ "comment": "extra scopes for do-catch snippet",
+ "match": "(?<!\\.)\\b(do)\\b(\\s*)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.async.swift"
+ },
+ "2": {
+ "name": "storage.modifier.swift"
+ },
+ "3": {
+ "name": "keyword.other.declaration-specifier.swift"
+ }
+ },
+ "match": "(?<!\\.)\\b(?:(?:(async)|(nonisolated))\\s+)?(let|var)\\b"
+ },
+ {
+ "match": "(?<!\\.)\\b(?:associatedtype|operator|typealias)\\b",
+ "name": "keyword.other.declaration-specifier.swift"
+ },
+ {
+ "match": "(?<!\\.)\\b(class|enum|extension|precedencegroup|protocol|struct|actor)\\b",
+ "name": "storage.type.$1.swift"
+ },
+ {
+ "match": "(?<!\\.)\\b(?:inout|static|final|lazy|mutating|nonmutating|optional|indirect|required|override|dynamic|convenience|infix|prefix|postfix)\\b",
+ "name": "storage.modifier.swift"
+ },
+ {
+ "match": "\\binit[?!]|\\binit\\b|(?<!\\.)\\b(?:func|deinit|subscript|didSet|get|set|willSet)\\b",
+ "name": "storage.type.function.swift"
+ },
+ {
+ "match": "(?<!\\.)\\b(?:fileprivate|private|internal|public|open)\\b",
+ "name": "keyword.other.declaration-specifier.accessibility.swift"
+ },
+ {
+ "comment": "matches weak, unowned, unowned(safe), unowned(unsafe)",
+ "match": "(?<!\\.)\\bunowned\\((?:safe|unsafe)\\)|(?<!\\.)\\b(?:weak|unowned)\\b",
+ "name": "keyword.other.capture-specifier.swift"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.type.swift"
+ },
+ "2": {
+ "name": "keyword.operator.type.metatype.swift"
+ }
+ },
+ "match": "(?<=\\.)(?:(dynamicType|self)|(Protocol|Type))\\b"
+ },
+ {
+ "match": "(?<!\\.)\\b(?:super|self|Self)\\b",
+ "name": "variable.language.swift"
+ },
+ {
+ "match": "\\B(?:#file|#filePath|#fileID|#line|#column|#function|#dsohandle)\\b|\\b(?:__FILE__|__LINE__|__COLUMN__|__FUNCTION__|__DSO_HANDLE__)\\b",
+ "name": "support.variable.swift"
+ },
+ {
+ "match": "(?<!\\.)\\bimport\\b",
+ "name": "keyword.control.import.swift"
+ }
+ ]
+ },
+ "literals": {
+ "patterns": [
+ {
+ "include": "#boolean"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "match": "\\bnil\\b",
+ "name": "constant.language.nil.swift"
+ },
+ {
+ "comment": "object \"literals\" used in playgrounds",
+ "match": "\\B#(colorLiteral|imageLiteral|fileLiteral)\\b",
+ "name": "support.function.object-literal.swift"
+ },
+ {
+ "match": "\\B#keyPath\\b",
+ "name": "support.function.key-path.swift"
+ },
+ {
+ "begin": "\\B(#selector)(\\()(?:\\s*(getter|setter)\\s*(:))?",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.selector-reference.swift"
+ },
+ "2": {
+ "name": "punctuation.definition.arguments.begin.swift"
+ },
+ "3": {
+ "name": "support.variable.parameter.swift"
+ },
+ "4": {
+ "name": "punctuation.separator.argument-label.swift"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.swift"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expressions"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "boolean": {
+ "match": "\\b(true|false)\\b",
+ "name": "constant.language.boolean.swift"
+ },
+ "numeric": {
+ "patterns": [
+ {
+ "comment": "0.1, -4_2.5, 6.022e23, 10E-5",
+ "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9][0-9_]*(?=\\.[0-9]|[eE])(?:\\.[0-9][0-9_]*)?(?:[eE][-+]?[0-9][0-9_]*)?\\b(?!\\.[0-9])",
+ "name": "constant.numeric.float.decimal.swift"
+ },
+ {
+ "comment": "-0x1.ap2_3, 0x31p-4",
+ "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)(?:\\.[0-9a-fA-F][0-9a-fA-F_]*)?[pP][-+]?[0-9][0-9_]*\\b(?!\\.[0-9])",
+ "name": "constant.numeric.float.hexadecimal.swift"
+ },
+ {
+ "comment": "0x1p, 0x1p_2, 0x1.5pa, 0x1.1p+1f, 0x1pz",
+ "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)(?:\\.[0-9a-fA-F][0-9a-fA-F_]*)?(?:[pP][-+]?\\w*)\\b(?!\\.[0-9])",
+ "name": "invalid.illegal.numeric.float.invalid-exponent.swift"
+ },
+ {
+ "comment": "0x1.5w (note that 0x1.f may be a valid expression)",
+ "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)(0x[0-9a-fA-F][0-9a-fA-F_]*)\\.[0-9][\\w.]*",
+ "name": "invalid.illegal.numeric.float.missing-exponent.swift"
+ },
+ {
+ "comment": "-.5, .2f (note that 1.-.5 may be a valid expression)",
+ "match": "(?<=\\s|^)\\-?\\.[0-9][\\w.]*",
+ "name": "invalid.illegal.numeric.float.missing-leading-zero.swift"
+ },
+ {
+ "comment": "0b_0_1, 0x_1p+3q",
+ "match": "(\\B\\-|\\b)0[box]_[0-9a-fA-F_]*(?:[pPeE][+-]?\\w+)?[\\w.]+",
+ "name": "invalid.illegal.numeric.leading-underscore.swift"
+ },
+ {
+ "comment": "tuple positional member: not really a numeric literal, but not invalid",
+ "match": "(?<=[\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9]+\\b"
+ },
+ {
+ "comment": "0b010, 0b1_0",
+ "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0b[01][01_]*\\b(?!\\.[0-9])",
+ "name": "constant.numeric.integer.binary.swift"
+ },
+ {
+ "comment": "0o1, 0o7_3",
+ "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0o[0-7][0-7_]*\\b(?!\\.[0-9])",
+ "name": "constant.numeric.integer.octal.swift"
+ },
+ {
+ "comment": "02, 3_456",
+ "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)[0-9][0-9_]*\\b(?!\\.[0-9])",
+ "name": "constant.numeric.integer.decimal.swift"
+ },
+ {
+ "comment": "0x4, 0xF_7",
+ "match": "(\\B\\-|\\b)(?<![\\[\\](){}\\p{L}_\\p{N}\\p{M}]\\.)0x[0-9a-fA-F][0-9a-fA-F_]*\\b(?!\\.[0-9])",
+ "name": "constant.numeric.integer.hexadecimal.swift"
+ },
+ {
+ "match": "(\\B\\-|\\b)[0-9][\\w.]*",
+ "name": "invalid.illegal.numeric.other.swift"
+ }
+ ]
+ },
+ "string": {
+ "patterns": [
+ {
+ "begin": "\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.swift"
+ }
+ },
+ "comment": "SE-0168: Multi-Line String Literals",
+ "end": "\"\"\"(#*)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.swift"
+ },
+ "1": {
+ "name": "invalid.illegal.extra-closing-delimiter.swift"
+ }
+ },
+ "name": "string.quoted.double.block.swift",
+ "patterns": [
+ {
+ "match": "\\G.+(?=\"\"\")|\\G.+",
+ "name": "invalid.illegal.content-after-opening-delimiter.swift"
+ },
+ {
+ "match": "\\\\\\s*\\n",
+ "name": "constant.character.escape.newline.swift"
+ },
+ {
+ "include": "#string-guts"
+ },
+ {
+ "comment": "Allow \\(\"\"\"...\"\"\") to appear inside a block string",
+ "match": "\\S((?!\\\\\\().)*(?=\"\"\")",
+ "name": "invalid.illegal.content-before-closing-delimiter.swift"
+ }
+ ]
+ },
+ {
+ "begin": "#\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.swift"
+ }
+ },
+ "end": "\"\"\"#(#*)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.swift"
+ },
+ "1": {
+ "name": "invalid.illegal.extra-closing-delimiter.swift"
+ }
+ },
+ "name": "string.quoted.double.block.raw.swift",
+ "patterns": [
+ {
+ "match": "\\G.+(?=\"\"\")|\\G.+",
+ "name": "invalid.illegal.content-after-opening-delimiter.swift"
+ },
+ {
+ "match": "\\\\#\\s*\\n",
+ "name": "constant.character.escape.newline.swift"
+ },
+ {
+ "include": "#raw-string-guts"
+ },
+ {
+ "comment": "Allow \\(\"\"\"...\"\"\") to appear inside a block string",
+ "match": "\\S((?!\\\\#\\().)*(?=\"\"\")",
+ "name": "invalid.illegal.content-before-closing-delimiter.swift"
+ }
+ ]
+ },
+ {
+ "begin": "(##+)\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.swift"
+ }
+ },
+ "end": "\"\"\"\\1(#*)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.swift"
+ },
+ "1": {
+ "name": "invalid.illegal.extra-closing-delimiter.swift"
+ }
+ },
+ "name": "string.quoted.double.block.raw.swift",
+ "patterns": [
+ {
+ "match": "\\G.+(?=\"\"\")|\\G.+",
+ "name": "invalid.illegal.content-after-opening-delimiter.swift"
+ }
+ ]
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.swift"
+ }
+ },
+ "end": "\"(#*)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.swift"
+ },
+ "1": {
+ "name": "invalid.illegal.extra-closing-delimiter.swift"
+ }
+ },
+ "name": "string.quoted.double.single-line.swift",
+ "patterns": [
+ {
+ "match": "\\r|\\n",
+ "name": "invalid.illegal.returns-not-allowed.swift"
+ },
+ {
+ "include": "#string-guts"
+ }
+ ]
+ },
+ {
+ "begin": "(##+)\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.raw.swift"
+ }
+ },
+ "comment": "SE-0168: raw string literals (more than one #, grammar limitations prevent us from supporting escapes)",
+ "end": "\"\\1(#*)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.raw.swift"
+ },
+ "1": {
+ "name": "invalid.illegal.extra-closing-delimiter.swift"
+ }
+ },
+ "name": "string.quoted.double.single-line.raw.swift",
+ "patterns": [
+ {
+ "match": "\\r|\\n",
+ "name": "invalid.illegal.returns-not-allowed.swift"
+ }
+ ]
+ },
+ {
+ "begin": "#\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.raw.swift"
+ }
+ },
+ "comment": "SE-0168: raw string literals (one #, escapes supported)",
+ "end": "\"#(#*)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.raw.swift"
+ },
+ "1": {
+ "name": "invalid.illegal.extra-closing-delimiter.swift"
+ }
+ },
+ "name": "string.quoted.double.single-line.raw.swift",
+ "patterns": [
+ {
+ "match": "\\r|\\n",
+ "name": "invalid.illegal.returns-not-allowed.swift"
+ },
+ {
+ "include": "#raw-string-guts"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "raw-string-guts": {
+ "comment": "the same as #string-guts but with # in escapes",
+ "patterns": [
+ {
+ "match": "\\\\#[0\\\\tnr\"']",
+ "name": "constant.character.escape.swift"
+ },
+ {
+ "match": "\\\\#u\\{[0-9a-fA-F]{1,8}\\}",
+ "name": "constant.character.escape.unicode.swift"
+ },
+ {
+ "begin": "\\\\#\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.swift"
+ }
+ },
+ "contentName": "source.swift",
+ "end": "(\\))",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.swift"
+ },
+ "1": {
+ "name": "source.swift"
+ }
+ },
+ "name": "meta.embedded.line.swift",
+ "patterns": [
+ {
+ "include": "$self"
+ },
+ {
+ "begin": "\\(",
+ "comment": "Nested parens",
+ "end": "\\)"
+ }
+ ]
+ },
+ {
+ "match": "\\\\#.",
+ "name": "invalid.illegal.escape-not-recognized"
+ }
+ ]
+ },
+ "string-guts": {
+ "patterns": [
+ {
+ "match": "\\\\[0\\\\tnr\"']",
+ "name": "constant.character.escape.swift"
+ },
+ {
+ "match": "\\\\u\\{[0-9a-fA-F]{1,8}\\}",
+ "name": "constant.character.escape.unicode.swift"
+ },
+ {
+ "begin": "\\\\\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.swift"
+ }
+ },
+ "contentName": "source.swift",
+ "end": "(\\))",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.swift"
+ },
+ "1": {
+ "name": "source.swift"
+ }
+ },
+ "name": "meta.embedded.line.swift",
+ "patterns": [
+ {
+ "include": "$self"
+ },
+ {
+ "begin": "\\(",
+ "comment": "Nested parens",
+ "end": "\\)"
+ }
+ ]
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal.escape-not-recognized"
+ }
+ ]
+ }
+ }
+ }
+ }
+ },
+ "operators": {
+ "patterns": [
+ {
+ "comment": "Type casting",
+ "match": "\\b(is\\b|as([!?]\\B|\\b))",
+ "name": "keyword.operator.type-casting.swift"
+ },
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t(?=\n\t\t\t\t\t\t\t(?<oph>\t\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\n\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t | \\.\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\\g<oph>\t\t\t\t\t\t\t# operator-head\n\t\t\t\t\t\t\t | \\.\n\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t",
+ "comment": "This rule helps us speed up the matching.",
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "\\G(\\+\\+|\\-\\-)$",
+ "name": "keyword.operator.increment-or-decrement.swift"
+ },
+ {
+ "match": "\\G(\\+|\\-)$",
+ "name": "keyword.operator.arithmetic.unary.swift"
+ },
+ {
+ "match": "\\G!$",
+ "name": "keyword.operator.logical.not.swift"
+ },
+ {
+ "match": "\\G~$",
+ "name": "keyword.operator.bitwise.not.swift"
+ },
+ {
+ "match": ".+",
+ "name": "keyword.operator.custom.prefix.swift"
+ }
+ ]
+ }
+ },
+ "comment": "Prefix unary operator",
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?<=^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?![\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t"
+ },
+ {
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "\\G(\\+\\+|\\-\\-)$",
+ "name": "keyword.operator.increment-or-decrement.swift"
+ },
+ {
+ "match": "\\G!$",
+ "name": "keyword.operator.increment-or-decrement.swift"
+ },
+ {
+ "match": ".+",
+ "name": "keyword.operator.custom.postfix.swift"
+ }
+ ]
+ }
+ },
+ "comment": "Postfix unary operator",
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?<!^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?=[\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t"
+ },
+ {
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "\\G=$",
+ "name": "keyword.operator.assignment.swift"
+ },
+ {
+ "match": "\\G(\\+|\\-|\\*|/|%|<<|>>|&|\\^|\\||&&|\\|\\|)=$",
+ "name": "keyword.operator.assignment.compound.swift"
+ },
+ {
+ "match": "\\G(\\+|\\-|\\*|/)$",
+ "name": "keyword.operator.arithmetic.swift"
+ },
+ {
+ "match": "\\G&(\\+|\\-|\\*)$",
+ "name": "keyword.operator.arithmetic.overflow.swift"
+ },
+ {
+ "match": "\\G%$",
+ "name": "keyword.operator.arithmetic.remainder.swift"
+ },
+ {
+ "match": "\\G(==|!=|>|<|>=|<=|~=)$",
+ "name": "keyword.operator.comparison.swift"
+ },
+ {
+ "match": "\\G\\?\\?$",
+ "name": "keyword.operator.coalescing.swift"
+ },
+ {
+ "match": "\\G(&&|\\|\\|)$",
+ "name": "keyword.operator.logical.swift"
+ },
+ {
+ "match": "\\G(&|\\||\\^|<<|>>)$",
+ "name": "keyword.operator.bitwise.swift"
+ },
+ {
+ "match": "\\G(===|!==)$",
+ "name": "keyword.operator.bitwise.swift"
+ },
+ {
+ "match": "\\G\\?$",
+ "name": "keyword.operator.ternary.swift"
+ },
+ {
+ "match": ".+",
+ "name": "keyword.operator.custom.infix.swift"
+ }
+ ]
+ }
+ },
+ "comment": "Infix operator",
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t[/=\\-+!*%<>&|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t"
+ },
+ {
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": ".+",
+ "name": "keyword.operator.custom.prefix.dot.swift"
+ }
+ ]
+ }
+ },
+ "comment": "Dot prefix unary operator",
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?<=^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t\t | [/=\\-+!*%<>&|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?![\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t"
+ },
+ {
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": ".+",
+ "name": "keyword.operator.custom.postfix.dot.swift"
+ }
+ ]
+ }
+ },
+ "comment": "Dot postfix unary operator",
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t(?<!^|[\\s(\\[{,;:])\n\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t\t | [/=\\-+!*%<>&|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t\t(?=[\\s)\\]},;:]|\\z)\n\t\t\t\t\t\t\t"
+ },
+ {
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "\\G\\.\\.[.<]$",
+ "name": "keyword.operator.range.swift"
+ },
+ {
+ "match": ".+",
+ "name": "keyword.operator.custom.infix.dot.swift"
+ }
+ ]
+ }
+ },
+ "comment": "Dot infix operator",
+ "match": "(?x)\n\t\t\t\t\t\t\t\t\\G\t\t\t\t\t\t\t\t\t\t# Matching from the beginning ensures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t# that we start with operator-head\n\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t(?!(//|/\\*|\\*/))\n\t\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t\t\\.\t\t\t\t\t\t\t\t# dot\n\t\t\t\t\t\t\t\t\t | [/=\\-+!*%<>&|^~?]\t\t\t\t# operator-head\n\t\t\t\t\t\t\t\t\t | [\\x{00A1}-\\x{00A7}]\n\t\t\t\t\t\t\t\t\t | [\\x{00A9}\\x{00AB}]\n\t\t\t\t\t\t\t\t\t | [\\x{00AC}\\x{00AE}]\n\t\t\t\t\t\t\t\t\t | [\\x{00B0}-\\x{00B1}\\x{00B6}\\x{00BB}\\x{00BF}\\x{00D7}\\x{00F7}]\n\t\t\t\t\t\t\t\t\t | [\\x{2016}-\\x{2017}\\x{2020}-\\x{2027}]\n\t\t\t\t\t\t\t\t\t | [\\x{2030}-\\x{203E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2041}-\\x{2053}]\n\t\t\t\t\t\t\t\t\t | [\\x{2055}-\\x{205E}]\n\t\t\t\t\t\t\t\t\t | [\\x{2190}-\\x{23FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2500}-\\x{2775}]\n\t\t\t\t\t\t\t\t\t | [\\x{2794}-\\x{2BFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{2E00}-\\x{2E7F}]\n\t\t\t\t\t\t\t\t\t | [\\x{3001}-\\x{3003}]\n\t\t\t\t\t\t\t\t\t | [\\x{3008}-\\x{3030}]\n\t\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t\t\t | [\\x{0300}-\\x{036F}]\t\t\t\t# operator-character\n\t\t\t\t\t\t\t\t\t | [\\x{1DC0}-\\x{1DFF}]\n\t\t\t\t\t\t\t\t\t | [\\x{20D0}-\\x{20FF}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE00}-\\x{FE0F}]\n\t\t\t\t\t\t\t\t\t | [\\x{FE20}-\\x{FE2F}]\n\t\t\t\t\t\t\t\t\t | [\\x{E0100}-\\x{E01EF}]\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t)++\n\t\t\t\t\t\t\t"
+ }
+ ]
+ },
+ {
+ "match": ":",
+ "name": "keyword.operator.ternary.swift"
+ }
+ ]
+ },
+ "root": {
+ "patterns": [
+ {
+ "include": "#compiler-control"
+ },
+ {
+ "include": "#declarations"
+ },
+ {
+ "include": "#expressions"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/system-verilog.tmLanguage.json b/node_modules/shiki/languages/system-verilog.tmLanguage.json
new file mode 100644
index 0000000..7727808
--- /dev/null
+++ b/node_modules/shiki/languages/system-verilog.tmLanguage.json
@@ -0,0 +1,1055 @@
+{
+ "fileTypes": ["sv", "SV", "v", "V", "svh", "SVH", "vh", "VH"],
+ "hidden": true,
+ "name": "system-verilog",
+ "patterns": [
+ {
+ "begin": "\\s*\\b(function|task)\\b(\\s+automatic)?",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.systemverilog"
+ },
+ "2": {
+ "name": "keyword.control.systemverilog"
+ }
+ },
+ "end": ";",
+ "patterns": [
+ {
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*\\s+)?([a-zA-Z_][a-zA-Z0-9_:]*)\\s*(?=\\(|;)",
+ "captures": {
+ "1": {
+ "name": "storage.type.systemverilog"
+ },
+ "2": {
+ "name": "entity.name.function.systemverilog"
+ }
+ }
+ },
+ {
+ "include": "#port-dir"
+ },
+ {
+ "include": "#base-grammar"
+ }
+ ],
+ "name": "meta.function.systemverilog"
+ },
+ {
+ "match": "\\s*\\b(task)\\s+(automatic)?\\s*(\\w+)\\s*;",
+ "captures": {
+ "1": {
+ "name": "keyword.control.systemverilog"
+ },
+ "2": {
+ "name": "keyword.control.systemverilog"
+ },
+ "3": {
+ "name": "entity.name.function.systemverilog"
+ }
+ },
+ "name": "meta.task.simple.systemverilog"
+ },
+ {
+ "begin": "\\s*\\b(typedef\\s+(struct|enum|union)\\b)\\s*(packed)?\\s*([a-zA-Z_][a-zA-Z0-9_]*)?",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.systemverilog"
+ },
+ "2": {
+ "name": "keyword.control.systemverilog"
+ },
+ "3": {
+ "name": "keyword.control.systemverilog"
+ },
+ "4": {
+ "name": "storage.type.systemverilog"
+ }
+ },
+ "end": "(})\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*;",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.other.systemverilog"
+ },
+ "2": {
+ "name": "entity.name.function.systemverilog"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#struct-anonymous"
+ },
+ {
+ "include": "#base-grammar"
+ }
+ ],
+ "name": "meta.typedef.struct.systemverilog"
+ },
+ {
+ "match": "\\s*\\b(typedef\\s+class)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\s*;",
+ "captures": {
+ "1": {
+ "name": "keyword.control.systemverilog"
+ },
+ "2": {
+ "name": "entity.name.declaration.systemverilog"
+ }
+ },
+ "name": "meta.typedef.class.systemverilog"
+ },
+ {
+ "begin": "\\s*\\b(typedef)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.systemverilog"
+ }
+ },
+ "end": "([a-zA-Z_][a-zA-Z0-9_]*)\\s*(?=(\\[[a-zA-Z0-9_:\\$\\-\\+]*\\])?;)",
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.function.systemverilog"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\b([a-zA-Z_]\\w*)\\s*(#)\\(",
+ "captures": {
+ "1": {
+ "name": "storage.type.userdefined.systemverilog"
+ },
+ "2": {
+ "name": "keyword.operator.param.systemverilog"
+ }
+ },
+ "name": "meta.typedef.class.systemverilog"
+ },
+ {
+ "include": "#base-grammar"
+ },
+ {
+ "include": "#module-binding"
+ }
+ ],
+ "name": "meta.typedef.simple.systemverilog"
+ },
+ {
+ "begin": "\\s*(module)\\s+\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.systemverilog"
+ },
+ "2": {
+ "name": "entity.name.type.module.systemverilog"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.function.systemverilog"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#port-dir"
+ },
+ {
+ "match": "\\s*(parameter)",
+ "name": "keyword.other.systemverilog"
+ },
+ {
+ "include": "#base-grammar"
+ },
+ {
+ "include": "#ifmodport"
+ },
+ {
+ "match": "\\$\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
+ "name": "support.function.systemverilog"
+ }
+ ],
+ "name": "meta.module.systemverilog"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.systemverilog"
+ },
+ "2": {
+ "name": "entity.name.function.systemverilog"
+ }
+ },
+ "match": "\\b(sequence)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
+ "name": "meta.sequence.systemverilog"
+ },
+ {
+ "match": "\\b(bind)\\s+([a-zA-Z_][a-zA-Z0-9_\\.]*)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.systemverilog"
+ }
+ }
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "meta.section.begin.systemverilog"
+ },
+ "1": {
+ "name": "keyword.other.block.systemverilog"
+ },
+ "3": {
+ "name": "keyword.operator.systemverilog"
+ },
+ "4": {
+ "name": "entity.name.section.systemverilog"
+ }
+ },
+ "match": "\\s*(begin|fork)\\s*((:)\\s*([a-zA-Z_][a-zA-Z0-9_]*))\\b",
+ "name": "meta.definition.systemverilog"
+ },
+ {
+ "match": "\\b(asset|cover)\\s(property)\\s+(\\w+)",
+ "captures": {
+ "1": {
+ "name": "keyword.sva.systemverilog"
+ },
+ "2": {
+ "name": "entity.name.sva.systemverilog"
+ }
+ }
+ },
+ {
+ "match": "\\b(\\w+)\\s*(:)\\s*(assert)\\b",
+ "captures": {
+ "1": {
+ "name": "entity.name.sva.systemverilog"
+ },
+ "2": {
+ "name": "keyword.operator.systemverilog"
+ },
+ "3": {
+ "name": "keyword.sva.systemverilog"
+ }
+ }
+ },
+ {
+ "begin": "\\s*(//)\\s*(psl)\\s+((\\w+)\\s*(:))?\\s*(default|assert|assume)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.psl.systemverilog"
+ },
+ "1": {
+ "name": "comment.line.double-slash.systemverilog"
+ },
+ "2": {
+ "name": "keyword.psl.systemverilog"
+ },
+ "4": {
+ "name": "entity.psl.name.systemverilog"
+ },
+ "5": {
+ "name": "keyword.operator.systemverilog"
+ },
+ "6": {
+ "name": "keyword.psl.systemverilog"
+ }
+ },
+ "end": ";",
+ "patterns": [
+ {
+ "match": "\\b(never|always|default|clock|within|rose|fell|stable|until|before|next|eventually|abort|posedge)\\b",
+ "name": "keyword.psl.systemverilog"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#constants"
+ }
+ ],
+ "name": "meta.psl.systemverilog"
+ },
+ {
+ "begin": "\\s*(/\\*)\\s*(psl)",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.psl.systemverilog"
+ },
+ "1": {
+ "name": "comment.block.systemverilog"
+ },
+ "2": {
+ "name": "keyword.psl.systemverilog"
+ }
+ },
+ "end": "(\\*/)",
+ "endCaptures": {
+ "1": {
+ "name": "comment.block.systemverilog"
+ }
+ },
+ "patterns": [
+ {
+ "match": "^\\s*((\\w+)\\s*(:))?\\s*(default|assert|assume)",
+ "captures": {
+ "0": {
+ "name": "meta.psl.systemverilog"
+ },
+ "2": {
+ "name": "entity.psl.name.systemverilog"
+ },
+ "3": {
+ "name": "keyword.operator.systemverilog"
+ },
+ "4": {
+ "name": "keyword.psl.systemverilog"
+ }
+ }
+ },
+ {
+ "match": "\\b(asset|cover)\\s+(property)\\s+(\\w+)",
+ "captures": {
+ "1": {
+ "name": "keyword.psl.systemverilog"
+ },
+ "2": {
+ "name": "entity.psl.name.systemverilog"
+ }
+ }
+ },
+ {
+ "match": "\\b(never|always|default|clock|within|rose|fell|stable|until|before|next|eventually|abort|posedge|negedge)\\b",
+ "name": "keyword.psl.systemverilog"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#constants"
+ }
+ ],
+ "name": "meta.psl.systemverilog"
+ },
+ {
+ "match": "\\s*\\b(automatic|cell|config|deassign|defparam|design|disable|edge|endconfig|endgenerate|endspecify|endtable|event|generate|genvar|ifnone|incdir|instance|liblist|library|macromodule|negedge|noshowcancelled|posedge|pulsestyle_onevent|pulsestyle_ondetect|scalared|showcancelled|specify|specparam|table|use|vectored)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.systemverilog"
+ }
+ }
+ },
+ {
+ "match": "\\s*\\b(initial|always|wait|force|release|assign|always_comb|always_ff|always_latch|forever|repeat|while|for|if|iff|else|case|casex|casez|default|endcase|return|break|continue|do|foreach|with|inside|dist|clocking|cover|coverpoint|property|bins|binsof|illegal_bins|ignore_bins|randcase|modport|matches|solve|static|assert|assume|before|expect|cross|ref|first_match|srandom|struct|packed|final|chandle|alias|tagged|extern|throughout|timeprecision|timeunit|priority|type|union|uwire|wait_order|triggered|randsequence|import|export|context|pure|intersect|wildcard|within|new|typedef|enum|this|super|begin|fork|forkjoin|unique|unique0|priority)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.control.systemverilog"
+ }
+ }
+ },
+ {
+ "match": "\\s*\\b(end|endtask|endmodule|endfunction|endprimitive|endclass|endpackage|endsequence|endprogram|endclocking|endproperty|endgroup|endinterface|join|join_any|join_none)\\b(\\s*(:)\\s*(\\w+))?",
+ "captures": {
+ "1": {
+ "name": "keyword.control.systemverilog"
+ },
+ "3": {
+ "name": "keyword.operator.systemverilog"
+ },
+ "4": {
+ "name": "entity.label.systemverilog"
+ }
+ },
+ "name": "meta.object.end.systemverilog"
+ },
+ {
+ "match": "\\b(std)\\b::",
+ "name": "support.class.systemverilog"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "constant.other.define.systemverilog"
+ },
+ "2": {
+ "name": "entity.name.type.define.systemverilog"
+ }
+ },
+ "match": "^\\s*(`define)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
+ "name": "meta.define.systemverilog"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "constant.other.undef.systemverilog"
+ },
+ "2": {
+ "name": "entity.name.type.undef.systemverilog"
+ }
+ },
+ "match": "^\\s*(`undef)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
+ "name": "meta.undef.systemverilog"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.systemverilog"
+ },
+ "2": {
+ "name": "entity.name.type.class.systemverilog"
+ }
+ },
+ "match": "\\s*(primitive|package|constraint|interface|covergroup|program)\\s+\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
+ "name": "meta.definition.systemverilog"
+ },
+ {
+ "captures": {
+ "2": {
+ "name": "entity.name.type.class.systemverilog"
+ },
+ "3": {
+ "name": "keyword.operator.other.systemverilog"
+ },
+ "4": {
+ "name": "keyword.control.systemverilog"
+ }
+ },
+ "match": "(([a-zA-Z_][a-zA-Z0-9_]*)\\s*(:))?\\s*(coverpoint|cross)\\s+([a-zA-Z_][a-zA-Z0-9_]*)",
+ "name": "meta.definition.systemverilog"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.systemverilog"
+ },
+ "2": {
+ "name": "keyword.control.systemverilog"
+ },
+ "3": {
+ "name": "entity.name.type.class.systemverilog"
+ }
+ },
+ "match": "\\b(virtual\\s+)?(class)\\s+\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
+ "name": "meta.definition.class.systemverilog"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.systemverilog"
+ },
+ "2": {
+ "name": "entity.other.inherited-class.systemverilog"
+ }
+ },
+ "match": "\\b(extends)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b",
+ "name": "meta.definition.systemverilog"
+ },
+ {
+ "include": "#all-types"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#port-dir"
+ },
+ {
+ "match": "\\b(and|nand|nor|or|xor|xnor|buf|not|bufif[01]|notif[01]|r?[npc]mos|tran|r?tranif[01]|pullup|pulldown)\\b",
+ "name": "support.type.systemverilog"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "match": "\\$\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
+ "name": "support.function.systemverilog"
+ },
+ {
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)(')(?=\\()",
+ "name": "meta.cast.systemverilog",
+ "captures": {
+ "1": {
+ "name": "storage.type.systemverilog"
+ },
+ "2": {
+ "name": "keyword.operator.cast.systemverilog"
+ }
+ }
+ },
+ {
+ "match": "^\\s*(localparam|parameter)\\s+([A-Z_][A-Z0-9_]*)\\b\\s*(?=(=))",
+ "name": "meta.param.systemverilog",
+ "captures": {
+ "1": {
+ "name": "keyword.other.systemverilog"
+ },
+ "2": {
+ "name": "constant.other.systemverilog"
+ }
+ }
+ },
+ {
+ "match": "^\\s*(localparam|parameter)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b\\s*(?=(=))",
+ "name": "meta.param.systemverilog",
+ "captures": {
+ "1": {
+ "name": "keyword.other.systemverilog"
+ }
+ }
+ },
+ {
+ "match": "^\\s*(local\\s+|protected\\s+|localparam\\s+|parameter\\s+)?(const\\s+|virtual\\s+)?(rand\\s+|randc\\s+)?(([a-zA-Z_][a-zA-Z0-9_]*)(::))?([a-zA-Z_][a-zA-Z0-9_]*)\\b\\s*(?=(#\\s*\\([\\w,]+\\)\\s*)?([a-zA-Z][a-zA-Z0-9_\\s\\[\\]']*)(;|,|=|'\\{))",
+ "name": "meta.userdefined.systemverilog",
+ "captures": {
+ "1": {
+ "name": "keyword.other.systemverilog"
+ },
+ "2": {
+ "name": "keyword.other.systemverilog"
+ },
+ "3": {
+ "name": "storage.type.rand.systemverilog"
+ },
+ "5": {
+ "name": "support.type.scope.systemverilog"
+ },
+ "6": {
+ "name": "keyword.operator.scope.systemverilog"
+ },
+ "7": {
+ "name": "storage.type.userdefined.systemverilog"
+ }
+ }
+ },
+ {
+ "match": "\\s*\\b(option)\\.",
+ "captures": {
+ "1": {
+ "name": "keyword.cover.systemverilog"
+ }
+ }
+ },
+ {
+ "match": "\\s*\\b(local|const|protected|virtual|localparam|parameter)\\b",
+ "captures": {
+ "1": {
+ "name": "keyword.other.systemverilog"
+ }
+ }
+ },
+ {
+ "match": "\\s*\\b(rand|randc)\\b",
+ "name": "storage.type.rand.systemverilog"
+ },
+ {
+ "begin": "^(\\s*(bind)\\s+([a-zA-Z_][\\w\\.]*))?\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s*(?=#[^#])",
+ "beginCaptures": {
+ "2": {
+ "name": "keyword.control.systemverilog"
+ },
+ "4": {
+ "name": "storage.module.systemverilog"
+ }
+ },
+ "end": "(?=;|=|:)",
+ "patterns": [
+ {
+ "include": "#module-binding"
+ },
+ {
+ "include": "#module-param"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b(?=\\s*(\\(|$))",
+ "name": "entity.name.type.module.systemverilog"
+ }
+ ],
+ "name": "meta.module.inst.param.systemverilog"
+ },
+ {
+ "begin": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\s+(?!intersect|and|or|throughout|within)([a-zA-Z_][a-zA-Z0-9_]*)\\s*(\\[(\\d+)(\\:(\\d+))?\\])?\\s*(\\(|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.module.systemverilog"
+ },
+ "2": {
+ "name": "entity.name.type.module.systemverilog"
+ },
+ "4": {
+ "name": "constant.numeric.systemverilog"
+ },
+ "6": {
+ "name": "constant.numeric.systemverilog"
+ }
+ },
+ "end": ";",
+ "patterns": [
+ {
+ "include": "#module-binding"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#constants"
+ }
+ ],
+ "name": "meta.module.inst.systemverilog"
+ },
+ {
+ "name": "meta.struct.assign.systemverilog",
+ "begin": "\\b\\s+(<?=)\\s*(\\'{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.other.systemverilog"
+ },
+ "2": {
+ "name": "keyword.operator.other.systemverilog"
+ },
+ "3": {
+ "name": "keyword.operator.other.systemverilog"
+ }
+ },
+ "end": ";",
+ "patterns": [
+ {
+ "match": "\\b(\\w+)\\s*(:)(?!:)",
+ "captures": {
+ "1": {
+ "name": "support.function.field.systemverilog"
+ },
+ "2": {
+ "name": "keyword.operator.other.systemverilog"
+ }
+ }
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#storage-scope-systemverilog"
+ }
+ ]
+ },
+ {
+ "include": "#storage-scope-systemverilog"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#constants"
+ }
+ ],
+ "repository": {
+ "functions": {
+ "match": "\\b(\\w+)(?=\\s*\\()",
+ "name": "support.function.generic.systemverilog"
+ },
+ "all-types": {
+ "patterns": [
+ {
+ "include": "#storage-type-systemverilog"
+ },
+ {
+ "include": "#storage-modifier-systemverilog"
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "match": "(\\b\\d+)?'(s?[bB]\\s*[0-1xXzZ?][0-1_xXzZ?]*|s?[oO]\\s*[0-7xXzZ?][0-7_xXzZ?]*|s?[dD]\\s*[0-9xXzZ?][0-9_xXzZ?]*|s?[hH]\\s*[0-9a-fA-FxXzZ?][0-9a-fA-F_xXzZ?]*)((e|E)(\\+|-)?[0-9]+)?(?!'|\\w)",
+ "name": "constant.numeric.systemverilog"
+ },
+ {
+ "match": "'[01xXzZ]",
+ "name": "constant.numeric.bit.systemverilog"
+ },
+ {
+ "match": "\\b((\\d[\\d_]*)(e|E)(\\+|-)?[0-9]+)\\b",
+ "name": "constant.numeric.exp.systemverilog"
+ },
+ {
+ "match": "\\b(\\d[\\d_]*)\\b",
+ "name": "constant.numeric.decimal.systemverilog"
+ },
+ {
+ "match": "\\b(\\d+(fs|ps|ns|us|ms|s)?)\\b",
+ "name": "constant.numeric.time.systemverilog"
+ },
+ {
+ "match": "\\b([A-Z][A-Z0-9_]*)\\b",
+ "name": "constant.other.net.systemverilog"
+ },
+ {
+ "match": "(`ifdef|`ifndef|`default_nettype)\\s+(\\w+)",
+ "captures": {
+ "1": {
+ "name": "constant.other.preprocessor.systemverilog"
+ },
+ "2": {
+ "name": "support.variable.systemverilog"
+ }
+ }
+ },
+ {
+ "match": "`(celldefine|else|elsif|endcelldefine|endif|include|line|nounconnected_drive|resetall|timescale|unconnected_drive|undef|begin_\\w+|end_\\w+|remove_\\w+|restore_\\w+)\\b",
+ "name": "constant.other.preprocessor.systemverilog"
+ },
+ {
+ "match": "`\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
+ "name": "constant.other.define.systemverilog"
+ },
+ {
+ "match": "\\b(null)\\b",
+ "name": "support.constant.systemverilog"
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "match": "(=|==|===|!=|!==|<=|>=|<|>)",
+ "name": "keyword.operator.comparison.systemverilog"
+ },
+ {
+ "match": "(\\-|\\+|\\*|\\/|%)",
+ "name": "keyword.operator.arithmetic.systemverilog"
+ },
+ {
+ "match": "(!|&&|\\|\\||\\bor\\b)",
+ "name": "keyword.operator.logical.systemverilog"
+ },
+ {
+ "match": "(&|\\||\\^|~|{|'{|}|<<|>>|\\?|:)",
+ "name": "keyword.operator.bitwise.systemverilog"
+ },
+ {
+ "match": "(#|@)",
+ "name": "keyword.operator.other.systemverilog"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.systemverilog"
+ }
+ },
+ "end": "\\*/",
+ "name": "comment.block.systemverilog"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.systemverilog"
+ }
+ },
+ "match": "(//).*$\\n?",
+ "name": "comment.line.double-slash.systemverilog"
+ }
+ ]
+ },
+ "port-dir": {
+ "patterns": [
+ {
+ "match": "\\s*\\b(output|input|inout|ref)\\s+(([a-zA-Z_][a-zA-Z0-9_]*)(::))?([a-zA-Z_][a-zA-Z0-9_]*)?\\s+(?=\\[[a-zA-Z0-9_\\-\\+]*:[a-zA-Z0-9_\\-\\+]*\\]\\s+[a-zA-Z_][a-zA-Z0-9_\\s]*)",
+ "captures": {
+ "1": {
+ "name": "support.type.systemverilog"
+ },
+ "3": {
+ "name": "support.type.scope.systemverilog"
+ },
+ "4": {
+ "name": "keyword.operator.scope.systemverilog"
+ },
+ "5": {
+ "name": "storage.type.interface.systemverilog"
+ }
+ }
+ },
+ {
+ "match": "\\s*\\b(output|input|inout|ref)\\s+(([a-zA-Z_][a-zA-Z0-9_]*)(::))?([a-zA-Z_][a-zA-Z0-9_]*)?\\s+(?=[a-zA-Z_][a-zA-Z0-9_\\s]*)",
+ "captures": {
+ "1": {
+ "name": "support.type.systemverilog"
+ },
+ "3": {
+ "name": "support.type.scope.systemverilog"
+ },
+ "4": {
+ "name": "keyword.operator.scope.systemverilog"
+ },
+ "5": {
+ "name": "storage.type.interface.systemverilog"
+ }
+ }
+ },
+ {
+ "match": "\\s*\\b(output|input|inout|ref)\\b",
+ "name": "support.type.systemverilog"
+ }
+ ]
+ },
+ "base-grammar": {
+ "patterns": [
+ {
+ "include": "#all-types"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "match": "^\\s*([a-zA-Z_][a-zA-Z0-9_]*)\\s+[a-zA-Z_][a-zA-Z0-9_,=\\s]*",
+ "captures": {
+ "1": {
+ "name": "storage.type.interface.systemverilog"
+ }
+ }
+ },
+ {
+ "include": "#storage-scope-systemverilog"
+ }
+ ]
+ },
+ "storage-type-systemverilog": {
+ "patterns": [
+ {
+ "match": "\\s*\\b(var|wire|tri|tri[01]|supply[01]|wand|triand|wor|trior|trireg|reg|integer|int|longint|shortint|logic|bit|byte|shortreal|string|time|realtime|real|process|void)\\b",
+ "name": "storage.type.systemverilog"
+ },
+ {
+ "match": "\\s*\\b(uvm_transaction|uvm_component|uvm_monitor|uvm_driver|uvm_test|uvm_env|uvm_object|uvm_agent|uvm_sequence_base|uvm_sequence|uvm_sequence_item|uvm_sequence_state|uvm_sequencer|uvm_sequencer_base|uvm_component_registry|uvm_analysis_imp|uvm_analysis_port|uvm_analysis_export|uvm_config_db|uvm_active_passive_enum|uvm_phase|uvm_verbosity|uvm_tlm_analysis_fifo|uvm_tlm_fifo|uvm_report_server|uvm_objection|uvm_recorder|uvm_domain|uvm_reg_field|uvm_reg|uvm_reg_block|uvm_bitstream_t|uvm_radix_enum|uvm_printer|uvm_packer|uvm_comparer|uvm_scope_stack)\\b",
+ "name": "storage.type.uvm.systemverilog"
+ }
+ ]
+ },
+ "storage-scope-systemverilog": {
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)(::)",
+ "captures": {
+ "1": {
+ "name": "support.type.systemverilog"
+ },
+ "2": {
+ "name": "keyword.operator.scope.systemverilog"
+ }
+ },
+ "name": "meta.scope.systemverilog"
+ },
+ "storage-modifier-systemverilog": {
+ "match": "\\b(signed|unsigned|small|medium|large|supply[01]|strong[01]|pull[01]|weak[01]|highz[01])\\b",
+ "name": "storage.modifier.systemverilog"
+ },
+ "ifmodport": {
+ "match": "\\b([a-zA-Z_][a-zA-Z0-9_]*)\\.([a-zA-Z_][a-zA-Z0-9_]*)\\s+([a-zA-Z_][a-zA-Z0-9_]*)\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.interface.systemverilog"
+ },
+ "2": {
+ "name": "support.modport.systemverilog"
+ }
+ }
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.systemverilog"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.systemverilog"
+ }
+ },
+ "name": "string.quoted.double.systemverilog",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.systemverilog"
+ },
+ {
+ "match": "(?x)%\n (\\d+\\$)? # field (argument #)\n [#0\\- +']* # flags\n [,;:_]? # separator character (AltiVec)\n ((-?\\d+)|\\*(-?\\d+\\$)?)? # minimum field width\n (\\.((-?\\d+)|\\*(-?\\d+\\$)?)?)? # precision\n (hh|h|ll|l|j|t|z|q|L|vh|vl|v|hv|hl)? # length modifier\n [bdiouxXhHDOUeEfFgGaACcSspnmt%] # conversion type\n ",
+ "name": "constant.other.placeholder.systemverilog"
+ },
+ {
+ "match": "%",
+ "name": "invalid.illegal.placeholder.systemverilog"
+ }
+ ]
+ }
+ ]
+ },
+ "module-binding": {
+ "begin": "\\.([a-zA-Z_][a-zA-Z0-9_]*)\\s*\\(",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.port.systemverilog"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "match": "\\b([a-zA-Z_]\\w*)(::)",
+ "captures": {
+ "1": {
+ "name": "support.type.scope.systemverilog"
+ },
+ "2": {
+ "name": "keyword.operator.scope.systemverilog"
+ }
+ }
+ },
+ {
+ "match": "\\b([a-zA-Z_]\\w*)(')",
+ "captures": {
+ "1": {
+ "name": "storage.type.interface.systemverilog"
+ },
+ "2": {
+ "name": "keyword.operator.cast.systemverilog"
+ }
+ }
+ },
+ {
+ "match": "\\$\\b([a-zA-Z_][a-zA-Z0-9_]*)\\b",
+ "name": "support.function.systemverilog"
+ },
+ {
+ "match": "\\b(virtual)\\b",
+ "name": "keyword.control.systemverilog"
+ }
+ ],
+ "match": "\\.([a-zA-Z_][a-zA-Z0-9_]*)\\s*",
+ "captures": {
+ "1": {
+ "name": "support.function.port.implicit.systemverilog"
+ }
+ }
+ },
+ "module-param": {
+ "name": "meta.module-param.systemverilog",
+ "begin": "(#)\\s*\\(",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.param.systemverilog"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#module-binding"
+ },
+ {
+ "match": "\\b(virtual)\\b",
+ "name": "keyword.control.systemverilog"
+ }
+ ]
+ },
+ "struct-anonymous": {
+ "begin": "\\s*\\b(struct|union)\\s*(packed)?\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.systemverilog"
+ },
+ "2": {
+ "name": "keyword.control.systemverilog"
+ }
+ },
+ "end": "(})\\s*([a-zA-Z_]\\w*)\\s*;",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.other.systemverilog"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#base-grammar"
+ }
+ ],
+ "name": "meta.struct.anonymous.systemverilog"
+ }
+ },
+ "scopeName": "source.systemverilog",
+ "uuid": "789be04c-8b74-352e-8f37-63d336001277"
+}
diff --git a/node_modules/shiki/languages/tasl.tmLanguage.json b/node_modules/shiki/languages/tasl.tmLanguage.json
new file mode 100644
index 0000000..6ca4a89
--- /dev/null
+++ b/node_modules/shiki/languages/tasl.tmLanguage.json
@@ -0,0 +1,290 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "scopeName": "source.tasl",
+ "name": "tasl",
+ "fileTypes": ["tasl"],
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#namespace"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#class"
+ },
+ {
+ "include": "#edge"
+ }
+ ],
+ "repository": {
+ "comment": {
+ "match": "(#).*$",
+ "name": "comment.line.number-sign.tasl",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.tasl"
+ }
+ }
+ },
+ "namespace": {
+ "match": "(?:^\\s*)(namespace)\\b(.*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.tasl.namespace"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#namespaceURI"
+ },
+ {
+ "match": "[a-zA-Z][a-zA-Z0-9]*\\b",
+ "name": "entity.name"
+ }
+ ]
+ }
+ }
+ },
+ "type": {
+ "begin": "(?:^\\s*)(type)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.tasl.type"
+ }
+ },
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "class": {
+ "begin": "(?:^\\s*)(class)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.tasl.class"
+ }
+ },
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#key"
+ },
+ {
+ "include": "#export"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "edge": {
+ "begin": "(?:^\\s*)(edge)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.tasl.edge"
+ }
+ },
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#key"
+ },
+ {
+ "include": "#export"
+ },
+ {
+ "match": "=/",
+ "name": "punctuation.separator.tasl.edge.source"
+ },
+ {
+ "match": "/=>",
+ "name": "punctuation.separator.tasl.edge.target"
+ },
+ {
+ "match": "=>",
+ "name": "punctuation.separator.tasl.edge"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "export": {
+ "match": "::",
+ "name": "keyword.operator.tasl.export"
+ },
+ "expression": {
+ "patterns": [
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#uri"
+ },
+ {
+ "include": "#product"
+ },
+ {
+ "include": "#coproduct"
+ },
+ {
+ "include": "#reference"
+ },
+ {
+ "include": "#optional"
+ },
+ {
+ "include": "#identifier"
+ }
+ ]
+ },
+ "literal": {
+ "patterns": [
+ {
+ "include": "#datatype"
+ }
+ ]
+ },
+ "uri": {
+ "match": "<>",
+ "name": "variable.other.constant"
+ },
+ "product": {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tasl.product"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tasl.product"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#term"
+ },
+ {
+ "include": "#component"
+ }
+ ]
+ },
+ "component": {
+ "begin": "->",
+ "end": "$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.tasl.component"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "coproduct": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tasl.coproduct"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tasl.coproduct"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#term"
+ },
+ {
+ "include": "#option"
+ }
+ ]
+ },
+ "option": {
+ "begin": "<-",
+ "end": "$",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.tasl.option"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "reference": {
+ "match": "(\\*)\\s*(.*)",
+ "captures": {
+ "1": {
+ "name": "markup.bold keyword.operator"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#key"
+ }
+ ]
+ }
+ }
+ },
+ "identifier": {
+ "match": "([a-zA-Z][a-zA-Z0-9]*)\\b",
+ "captures": {
+ "1": {
+ "name": "variable"
+ }
+ }
+ },
+ "optional": {
+ "begin": "\\?",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator"
+ }
+ },
+ "end": "$",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "namespaceURI": {
+ "match": "[a-z]+:[a-zA-Z0-9-._~:\\/?#\\[\\]@!$&'()*+,;%=]+",
+ "name": "markup.underline.link"
+ },
+ "key": {
+ "match": "[a-zA-Z][a-zA-Z0-9]*:(?:[A-Za-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})+",
+ "name": "markup.bold entity.name.class"
+ },
+ "datatype": {
+ "match": "[a-zA-Z][a-zA-Z0-9]*:(?:[A-Za-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})+",
+ "name": "string.regexp"
+ },
+ "term": {
+ "match": "[a-zA-Z][a-zA-Z0-9]*:(?:[A-Za-z0-9\\-._~!$&'()*+,;=:@/?]|%[0-9A-Fa-f]{2})+",
+ "name": "entity.other.tasl.key"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/tcl.tmLanguage.json b/node_modules/shiki/languages/tcl.tmLanguage.json
new file mode 100644
index 0000000..6203b36
--- /dev/null
+++ b/node_modules/shiki/languages/tcl.tmLanguage.json
@@ -0,0 +1,290 @@
+{
+ "fileTypes": ["tcl"],
+ "foldingStartMarker": "\\{\\s*$",
+ "foldingStopMarker": "^\\s*\\}",
+ "keyEquivalent": "^~T",
+ "name": "tcl",
+ "patterns": [
+ {
+ "begin": "(?<=^|;)\\s*((#))",
+ "beginCaptures": {
+ "1": {
+ "name": "comment.line.number-sign.tcl"
+ },
+ "2": {
+ "name": "punctuation.definition.comment.tcl"
+ }
+ },
+ "contentName": "comment.line.number-sign.tcl",
+ "end": "\\n",
+ "patterns": [
+ {
+ "match": "(\\\\\\\\|\\\\\\n)"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.tcl"
+ }
+ },
+ "match": "(?<=^|[\\[{;])\\s*(if|while|for|catch|default|return|break|continue|switch|exit|foreach|try|throw)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.tcl"
+ }
+ },
+ "match": "(?<=^|})\\s*(then|elseif|else)\\b"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.tcl"
+ },
+ "2": {
+ "name": "entity.name.function.tcl"
+ }
+ },
+ "match": "(?<=^|{)\\s*(proc)\\s+([^\\s]+)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.tcl"
+ }
+ },
+ "match": "(?<=^|[\\[{;])\\s*(after|append|array|auto_execok|auto_import|auto_load|auto_mkindex|auto_mkindex_old|auto_qualify|auto_reset|bgerror|binary|cd|clock|close|concat|dde|encoding|eof|error|eval|exec|expr|fblocked|fconfigure|fcopy|file|fileevent|filename|flush|format|gets|glob|global|history|http|incr|info|interp|join|lappend|library|lindex|linsert|list|llength|load|lrange|lreplace|lsearch|lset|lsort|memory|msgcat|namespace|open|package|parray|pid|pkg::create|pkg_mkIndex|proc|puts|pwd|re_syntax|read|registry|rename|resource|scan|seek|set|socket|SafeBase|source|split|string|subst|Tcl|tcl_endOfWord|tcl_findLibrary|tcl_startOfNextWord|tcl_startOfPreviousWord|tcl_wordBreakAfter|tcl_wordBreakBefore|tcltest|tclvars|tell|time|trace|unknown|unset|update|uplevel|upvar|variable|vwait)\\b"
+ },
+ {
+ "begin": "(?<=^|[\\[{;])\\s*(regexp|regsub)\\b\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.tcl"
+ }
+ },
+ "comment": "special-case regexp/regsub keyword in order to handle the expression",
+ "end": "[\\n;\\]]",
+ "patterns": [
+ {
+ "match": "\\\\(?:.|\\n)",
+ "name": "constant.character.escape.tcl"
+ },
+ {
+ "comment": "switch for regexp",
+ "match": "-\\w+\\s*"
+ },
+ {
+ "applyEndPatternLast": 1,
+ "begin": "--\\s*",
+ "comment": "end of switches",
+ "end": "",
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "include": "#escape"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.tcl"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.tcl"
+ }
+ },
+ "name": "string.quoted.double.tcl",
+ "patterns": [
+ {
+ "include": "#escape"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#embedded"
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "bare-string": {
+ "begin": "(?:^|(?<=\\s))\"",
+ "comment": "matches a single quote-enclosed word without scoping",
+ "end": "\"([^\\s\\]]*)",
+ "endCaptures": {
+ "1": {
+ "name": "invalid.illegal.tcl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#escape"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ "braces": {
+ "begin": "(?:^|(?<=\\s))\\{",
+ "comment": "matches a single brace-enclosed word",
+ "end": "\\}([^\\s\\]]*)",
+ "endCaptures": {
+ "1": {
+ "name": "invalid.illegal.tcl"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\\\[{}\\n]",
+ "name": "constant.character.escape.tcl"
+ },
+ {
+ "include": "#inner-braces"
+ }
+ ]
+ },
+ "embedded": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.tcl"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.tcl"
+ }
+ },
+ "name": "source.tcl.embedded",
+ "patterns": [
+ {
+ "include": "source.tcl"
+ }
+ ]
+ },
+ "escape": {
+ "match": "\\\\(\\d{1,3}|x[a-fA-F0-9]+|u[a-fA-F0-9]{1,4}|.|\\n)",
+ "name": "constant.character.escape.tcl"
+ },
+ "inner-braces": {
+ "begin": "\\{",
+ "comment": "matches a nested brace in a brace-enclosed word",
+ "end": "\\}",
+ "patterns": [
+ {
+ "match": "\\\\[{}\\n]",
+ "name": "constant.character.escape.tcl"
+ },
+ {
+ "include": "#inner-braces"
+ }
+ ]
+ },
+ "regexp": {
+ "begin": "(?=\\S)(?![\\n;\\]])",
+ "comment": "matches a single word, named as a regexp, then swallows the rest of the command",
+ "end": "(?=[\\n;\\]])",
+ "patterns": [
+ {
+ "begin": "(?=[^ \\t\\n;])",
+ "end": "(?=[ \\t\\n;])",
+ "name": "string.regexp.tcl",
+ "patterns": [
+ {
+ "include": "#braces"
+ },
+ {
+ "include": "#bare-string"
+ },
+ {
+ "include": "#escape"
+ },
+ {
+ "include": "#variable"
+ }
+ ]
+ },
+ {
+ "begin": "[ \\t]",
+ "comment": "swallow the rest of the command",
+ "end": "(?=[\\n;\\]])",
+ "patterns": [
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#embedded"
+ },
+ {
+ "include": "#escape"
+ },
+ {
+ "include": "#braces"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "string": {
+ "applyEndPatternLast": 1,
+ "begin": "(?:^|(?<=\\s))(?=\")",
+ "comment": "matches a single quote-enclosed word with scoping",
+ "end": "",
+ "name": "string.quoted.double.tcl",
+ "patterns": [
+ {
+ "include": "#bare-string"
+ }
+ ]
+ },
+ "variable": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.tcl"
+ }
+ },
+ "match": "(\\$)((?:[a-zA-Z0-9_]|::)+(\\([^\\)]+\\))?|\\{[^\\}]*\\})",
+ "name": "support.function.tcl"
+ },
+ "numeric": {
+ "match": "(?<![a-zA-Z])([+-]?([0-9]*[.])?[0-9]+f?)(?![\\.a-zA-Z])",
+ "name": "constant.numeric.tcl"
+ },
+ "operator": {
+ "match": "(?<= |\\d)(-|\\+|~|&{1,2}|\\|{1,2}|<{1,2}|>{1,2}|\\*{1,2}|!|%|\\/|<=|>=|={1,2}|!=|\\^)(?= |\\d)",
+ "name": "keyword.operator.tcl"
+ }
+ },
+ "scopeName": "source.tcl",
+ "uuid": "62E11136-D9E5-461C-BE98-54E3A2A9E5E3"
+}
diff --git a/node_modules/shiki/languages/tex.tmLanguage.json b/node_modules/shiki/languages/tex.tmLanguage.json
new file mode 100644
index 0000000..bf2362a
--- /dev/null
+++ b/node_modules/shiki/languages/tex.tmLanguage.json
@@ -0,0 +1,296 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/jlelong/vscode-latex-basics/blob/master/syntaxes/TeX.tmLanguage.json",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/jlelong/vscode-latex-basics/commit/2be145a0bde15dfaf367676a1227c8a701792f90",
+ "name": "tex",
+ "scopeName": "text.tex",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.keyword.tex"
+ }
+ },
+ "match": "(\\\\)(backmatter|csname|else|endcsname|fi|frontmatter|mainmatter|unless|if(case|cat|csname|defined|dim|eof|false|fontchar|hbox|hmode|inner|mmode|num|odd|true|vbox|vmode|void|x)?)(?![a-zA-Z@])",
+ "name": "keyword.control.tex"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.catcode.tex"
+ },
+ "2": {
+ "name": "punctuation.definition.keyword.tex"
+ },
+ "3": {
+ "name": "punctuation.separator.key-value.tex"
+ },
+ "4": {
+ "name": "constant.numeric.category.tex"
+ }
+ },
+ "match": "((\\\\)catcode)`(?:\\\\)?.(=)(\\d+)",
+ "name": "meta.catcode.tex"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=%)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.tex"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "%:",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.tex"
+ }
+ },
+ "end": "$\\n?",
+ "name": "comment.line.percentage.tex"
+ },
+ {
+ "begin": "^(%!TEX) (\\S*) =",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.tex"
+ }
+ },
+ "end": "$\\n?",
+ "name": "comment.line.percentage.directive.tex"
+ },
+ {
+ "begin": "%",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.tex"
+ }
+ },
+ "end": "$\\n?",
+ "name": "comment.line.percentage.tex"
+ }
+ ]
+ },
+ {
+ "match": "[\\[\\]]",
+ "name": "punctuation.definition.brackets.tex"
+ },
+ {
+ "begin": "(\\$\\$|\\$)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.tex"
+ }
+ },
+ "end": "(\\1)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.tex"
+ }
+ },
+ "name": "meta.math.block.tex support.class.math.block.tex",
+ "patterns": [
+ {
+ "match": "\\\\\\$",
+ "name": "constant.character.escape.tex"
+ },
+ {
+ "include": "#math"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "match": "\\\\\\\\",
+ "name": "keyword.control.newline.tex"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.function.tex"
+ }
+ },
+ "match": "(\\\\)(?:[\\p{Alphabetic}@]+|[,;])",
+ "name": "support.function.general.tex"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.keyword.tex"
+ }
+ },
+ "match": "(\\\\)[^a-zA-Z@]",
+ "name": "constant.character.escape.tex"
+ }
+ ],
+ "repository": {
+ "math": {
+ "patterns": [
+ {
+ "begin": "((\\\\)(?:text|mbox))(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.other.math.tex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.tex"
+ },
+ "3": {
+ "name": "punctuation.definition.arguments.begin.tex meta.text.normal.tex"
+ }
+ },
+ "contentName": "meta.text.normal.tex",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.arguments.end.tex meta.text.normal.tex"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#math"
+ },
+ {
+ "include": "$base"
+ }
+ ]
+ },
+ {
+ "match": "\\\\{|\\\\}",
+ "name": "punctuation.math.bracket.pair.tex"
+ },
+ {
+ "match": "\\\\(left|right|((big|bigg|Big|Bigg)[lr]?))([\\(\\[\\<\\>\\]\\)\\.\\|]|\\\\[{}|]|\\\\[lr]?[Vv]ert|\\\\[lr]angle)",
+ "name": "punctuation.math.bracket.pair.big.tex"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.math.tex"
+ }
+ },
+ "match": "(\\\\)(s(s(earrow|warrow|lash)|h(ort(downarrow|uparrow|parallel|leftarrow|rightarrow|mid)|arp)|tar|i(gma|m(eq)?)|u(cc(sim|n(sim|approx)|curlyeq|eq|approx)?|pset(neq(q)?|plus(eq)?|eq(q)?)?|rd|m|bset(neq(q)?|plus(eq)?|eq(q)?)?)|p(hericalangle|adesuit)|e(tminus|arrow)|q(su(pset(eq)?|bset(eq)?)|c(up|ap)|uare)|warrow|m(ile|all(s(etminus|mile)|frown)))|h(slash|ook(leftarrow|rightarrow)|eartsuit|bar)|R(sh|ightarrow|e|bag)|Gam(e|ma)|n(s(hort(parallel|mid)|im|u(cc(eq)?|pseteq(q)?|bseteq))|Rightarrow|n(earrow|warrow)|cong|triangle(left(eq(slant)?)?|right(eq(slant)?)?)|i(plus)?|u|p(lus|arallel|rec(eq)?)|e(q|arrow|g|xists)|v(dash|Dash)|warrow|le(ss|q(slant|q)?|ft(arrow|rightarrow))|a(tural|bla)|VDash|rightarrow|g(tr|eq(slant|q)?)|mid|Left(arrow|rightarrow))|c(hi|irc(eq|le(d(circ|S|dash|ast)|arrow(left|right)))?|o(ng|prod|lon|mplement)|dot(s|p)?|u(p|r(vearrow(left|right)|ly(eq(succ|prec)|vee(downarrow|uparrow)?|wedge(downarrow|uparrow)?)))|enterdot|lubsuit|ap)|Xi|Maps(to(char)?|from(char)?)|B(ox|umpeq|bbk)|t(h(ick(sim|approx)|e(ta|refore))|imes|op|wohead(leftarrow|rightarrow)|a(u|lloblong)|riangle(down|q|left(eq(slant)?)?|right(eq(slant)?)?)?)|i(n(t(er(cal|leave))?|plus|fty)?|ota|math)|S(igma|u(pset|bset))|zeta|o(slash|times|int|dot|plus|vee|wedge|lessthan|greaterthan|m(inus|ega)|b(slash|long|ar))|d(i(v(ideontimes)?|a(g(down|up)|mond(suit)?)|gamma)|o(t(plus|eq(dot)?)|ublebarwedge|wn(harpoon(left|right)|downarrows|arrow))|d(ots|agger)|elta|a(sh(v|leftarrow|rightarrow)|leth|gger))|Y(down|up|left|right)|C(up|ap)|u(n(lhd|rhd)|p(silon|harpoon(left|right)|downarrow|uparrows|lus|arrow)|lcorner|rcorner)|jmath|Theta|Im|p(si|hi|i(tchfork)?|erp|ar(tial|allel)|r(ime|o(d|pto)|ec(sim|n(sim|approx)|curlyeq|eq|approx)?)|m)|e(t(h|a)|psilon|q(slant(less|gtr)|circ|uiv)|ll|xists|mptyset)|Omega|D(iamond|ownarrow|elta)|v(d(ots|ash)|ee(bar)?|Dash|ar(s(igma|u(psetneq(q)?|bsetneq(q)?))|nothing|curly(vee|wedge)|t(heta|imes|riangle(left|right)?)|o(slash|circle|times|dot|plus|vee|wedge|lessthan|ast|greaterthan|minus|b(slash|ar))|p(hi|i|ropto)|epsilon|kappa|rho|bigcirc))|kappa|Up(silon|downarrow|arrow)|Join|f(orall|lat|a(t(s(emi|lash)|bslash)|llingdotseq)|rown)|P(si|hi|i)|w(p|edge|r)|l(hd|n(sim|eq(q)?|approx)|ceil|times|ightning|o(ng(left(arrow|rightarrow)|rightarrow|maps(to|from))|zenge|oparrow(left|right))|dot(s|p)|e(ss(sim|dot|eq(qgtr|gtr)|approx|gtr)|q(slant|q)?|ft(slice|harpoon(down|up)|threetimes|leftarrows|arrow(t(ail|riangle))?|right(squigarrow|harpoons|arrow(s|triangle|eq)?))|adsto)|vertneqq|floor|l(c(orner|eil)|floor|l|bracket)?|a(ngle|mbda)|rcorner|bag)|a(s(ymp|t)|ngle|pprox(eq)?|l(pha|eph)|rrownot|malg)|V(dash|vdash)|r(h(o|d)|ceil|times|i(singdotseq|ght(s(quigarrow|lice)|harpoon(down|up)|threetimes|left(harpoons|arrows)|arrow(t(ail|riangle))?|rightarrows))|floor|angle|r(ceil|parenthesis|floor|bracket)|bag)|g(n(sim|eq(q)?|approx)|tr(sim|dot|eq(qless|less)|less|approx)|imel|eq(slant|q)?|vertneqq|amma|g(g)?)|Finv|xi|m(ho|i(nuso|d)|o(o|dels)|u(ltimap)?|p|e(asuredangle|rge)|aps(to|from(char)?))|b(i(n(dnasrepma|ampersand)|g(s(tar|qc(up|ap))|nplus|c(irc|u(p|rly(vee|wedge))|ap)|triangle(down|up)|interleave|o(times|dot|plus)|uplus|parallel|vee|wedge|box))|o(t|wtie|x(slash|circle|times|dot|plus|empty|ast|minus|b(slash|ox|ar)))|u(llet|mpeq)|e(cause|t(h|ween|a))|lack(square|triangle(down|left|right)?|lozenge)|a(ck(s(im(eq)?|lash)|prime|epsilon)|r(o|wedge))|bslash)|L(sh|ong(left(arrow|rightarrow)|rightarrow|maps(to|from))|eft(arrow|rightarrow)|leftarrow|ambda|bag)|Arrownot)(?![a-zA-Z])",
+ "name": "constant.character.math.tex"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.math.tex"
+ }
+ },
+ "match": "(\\\\)(sum|prod|coprod|int|oint|bigcap|bigcup|bigsqcup|bigvee|bigwedge|bigodot|bigotimes|bogoplus|biguplus)\\b",
+ "name": "constant.character.math.tex"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.math.tex"
+ }
+ },
+ "match": "(\\\\)(arccos|arcsin|arctan|arg|cos|cosh|cot|coth|csc|deg|det|dim|exp|gcd|hom|inf|ker|lg|lim|liminf|limsup|ln|log|max|min|pr|sec|sin|sinh|sup|tan|tanh)\\b",
+ "name": "constant.other.math.tex"
+ },
+ {
+ "begin": "((\\\\)Sexpr(\\{))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.sexpr.math.tex"
+ },
+ "2": {
+ "name": "punctuation.definition.function.math.tex"
+ },
+ "3": {
+ "name": "punctuation.section.embedded.begin.math.tex"
+ }
+ },
+ "contentName": "support.function.sexpr.math.tex",
+ "end": "(((\\})))",
+ "endCaptures": {
+ "1": {
+ "name": "support.function.sexpr.math.tex"
+ },
+ "2": {
+ "name": "punctuation.section.embedded.end.math.tex"
+ },
+ "3": {
+ "name": "source.r"
+ }
+ },
+ "name": "meta.embedded.line.r",
+ "patterns": [
+ {
+ "begin": "\\G(?!\\})",
+ "end": "(?=\\})",
+ "name": "source.r",
+ "patterns": [
+ {
+ "include": "source.r"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.math.tex"
+ }
+ },
+ "match": "(\\\\)(?!begin\\{|verb)([A-Za-z]+)",
+ "name": "constant.other.general.math.tex"
+ },
+ {
+ "match": "(?<!\\\\)\\{",
+ "name": "punctuation.math.begin.bracket.curly.tex"
+ },
+ {
+ "match": "(?<!\\\\)\\}",
+ "name": "punctuation.math.end.bracket.curly.tex"
+ },
+ {
+ "match": "(?<!\\\\)\\(",
+ "name": "punctuation.math.begin.bracket.round.tex"
+ },
+ {
+ "match": "(?<!\\\\)\\)",
+ "name": "punctuation.math.end.bracket.round.tex"
+ },
+ {
+ "match": "(([0-9]*[\\.][0-9]+)|[0-9]+)",
+ "name": "constant.numeric.math.tex"
+ },
+ {
+ "match": "[\\+\\*/_\\^-]",
+ "name": "punctuation.math.operator.tex"
+ }
+ ]
+ },
+ "braces": {
+ "begin": "(?<!\\\\)\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.group.begin.tex"
+ }
+ },
+ "end": "(?<!\\\\)\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.group.end.tex"
+ }
+ },
+ "name": "meta.group.braces.tex",
+ "patterns": [
+ {
+ "include": "#braces"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/toml.tmLanguage.json b/node_modules/shiki/languages/toml.tmLanguage.json
new file mode 100644
index 0000000..6386b52
--- /dev/null
+++ b/node_modules/shiki/languages/toml.tmLanguage.json
@@ -0,0 +1,430 @@
+{
+ "fileTypes": ["toml"],
+ "keyEquivalent": "^~T",
+ "name": "toml",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#groups"
+ },
+ {
+ "include": "#key_pair"
+ },
+ {
+ "include": "#invalid"
+ }
+ ],
+ "repository": {
+ "comments": {
+ "begin": "(^[ \\t]+)?(?=#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.toml"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.toml"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.number-sign.toml"
+ }
+ ]
+ },
+ "groups": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.section.begin.toml"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "[^\\s.]+",
+ "name": "entity.name.section.toml"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.section.begin.toml"
+ }
+ },
+ "match": "^\\s*(\\[)([^\\[\\]]*)(\\])",
+ "name": "meta.group.toml"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.section.begin.toml"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "[^\\s.]+",
+ "name": "entity.name.section.toml"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.section.begin.toml"
+ }
+ },
+ "match": "^\\s*(\\[\\[)([^\\[\\]]*)(\\]\\])",
+ "name": "meta.group.double.toml"
+ }
+ ]
+ },
+ "invalid": {
+ "match": "\\S+(\\s*(?=\\S))?",
+ "name": "invalid.illegal.not-allowed-here.toml"
+ },
+ "key_pair": {
+ "patterns": [
+ {
+ "begin": "([A-Za-z0-9_-]+)\\s*(=)\\s*",
+ "captures": {
+ "1": {
+ "name": "variable.other.key.toml"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.toml"
+ }
+ },
+ "end": "(?<=\\S)(?<!=)|$",
+ "patterns": [
+ {
+ "include": "#primatives"
+ }
+ ]
+ },
+ {
+ "begin": "((\")(.*?)(\"))\\s*(=)\\s*",
+ "captures": {
+ "1": {
+ "name": "variable.other.key.toml"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.begin.toml"
+ },
+ "3": {
+ "patterns": [
+ {
+ "match": "\\\\([btnfr\"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})",
+ "name": "constant.character.escape.toml"
+ },
+ {
+ "match": "\\\\[^btnfr\"\\\\]",
+ "name": "invalid.illegal.escape.toml"
+ },
+ {
+ "match": "\"",
+ "name": "invalid.illegal.not-allowed-here.toml"
+ }
+ ]
+ },
+ "4": {
+ "name": "punctuation.definition.variable.end.toml"
+ },
+ "5": {
+ "name": "punctuation.separator.key-value.toml"
+ }
+ },
+ "end": "(?<=\\S)(?<!=)|$",
+ "patterns": [
+ {
+ "include": "#primatives"
+ }
+ ]
+ },
+ {
+ "begin": "((')([^']*)('))\\s*(=)\\s*",
+ "captures": {
+ "1": {
+ "name": "variable.other.key.toml"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.begin.toml"
+ },
+ "4": {
+ "name": "punctuation.definition.variable.end.toml"
+ },
+ "5": {
+ "name": "punctuation.separator.key-value.toml"
+ }
+ },
+ "end": "(?<=\\S)(?<!=)|$",
+ "patterns": [
+ {
+ "include": "#primatives"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\t\t[A-Za-z0-9_-]+\t\t\t\t# Bare key\n\t\t\t\t\t\t\t\t | \" (?:[^\"\\\\]|\\\\.)* \"\t\t# Double quoted key\n\t\t\t\t\t\t\t\t | ' [^']* '\t\t# Sindle quoted key\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t(?:\n\t\t\t\t\t\t\t\t\t\\s* \\. \\s*\t\t\t\t\t# Dot\n\t\t\t\t\t\t\t\t | (?= \\s* =)\t\t\t\t\t# or look-ahead for equals\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t){2,}\t\t\t\t\t\t\t\t# Ensure at least one dot\n\t\t\t\t\t\t)\n\t\t\t\t\t\t\\s*(=)\\s*\n\t\t\t\t\t",
+ "captures": {
+ "1": {
+ "name": "variable.other.key.toml",
+ "patterns": [
+ {
+ "match": "\\.",
+ "name": "punctuation.separator.variable.toml"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.begin.toml"
+ },
+ "2": {
+ "patterns": [
+ {
+ "match": "\\\\([btnfr\"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})",
+ "name": "constant.character.escape.toml"
+ },
+ {
+ "match": "\\\\[^btnfr\"\\\\]",
+ "name": "invalid.illegal.escape.toml"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.variable.end.toml"
+ }
+ },
+ "match": "(\")((?:[^\"\\\\]|\\\\.)*)(\")"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.begin.toml"
+ },
+ "2": {
+ "name": "punctuation.definition.variable.end.toml"
+ }
+ },
+ "match": "(')[^']*(')"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.separator.key-value.toml"
+ }
+ },
+ "comment": "Dotted key",
+ "end": "(?<=\\S)(?<!=)|$",
+ "patterns": [
+ {
+ "include": "#primatives"
+ }
+ ]
+ }
+ ]
+ },
+ "primatives": {
+ "patterns": [
+ {
+ "begin": "\\G\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.toml"
+ }
+ },
+ "end": "\"{3,5}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.toml"
+ }
+ },
+ "name": "string.quoted.triple.double.toml",
+ "patterns": [
+ {
+ "match": "\\\\([btnfr\"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})",
+ "name": "constant.character.escape.toml"
+ },
+ {
+ "match": "\\\\[^btnfr\"\\\\\\n]",
+ "name": "invalid.illegal.escape.toml"
+ }
+ ]
+ },
+ {
+ "begin": "\\G\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.toml"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.toml"
+ }
+ },
+ "name": "string.quoted.double.toml",
+ "patterns": [
+ {
+ "match": "\\\\([btnfr\"\\\\]|u[0-9A-Fa-f]{4}|U[0-9A-Fa-f]{8})",
+ "name": "constant.character.escape.toml"
+ },
+ {
+ "match": "\\\\[^btnfr\"\\\\]",
+ "name": "invalid.illegal.escape.toml"
+ }
+ ]
+ },
+ {
+ "begin": "\\G'''",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.toml"
+ }
+ },
+ "end": "'{3,5}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.toml"
+ }
+ },
+ "name": "string.quoted.triple.single.toml"
+ },
+ {
+ "begin": "\\G'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.toml"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.toml"
+ }
+ },
+ "name": "string.quoted.single.toml"
+ },
+ {
+ "match": "\\G(?x)\n\t\t\t\t\t\t[0-9]{4}\n\t\t\t\t\t\t-\n\t\t\t\t\t\t(0[1-9]|1[012])\n\t\t\t\t\t\t-\n\t\t\t\t\t\t(?!00|3[2-9])[0-3][0-9]\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t[Tt ]\n\t\t\t\t\t\t\t(?!2[5-9])[0-2][0-9]\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t[0-5][0-9]\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t(?!6[1-9])[0-6][0-9]\n\t\t\t\t\t\t\t(\\.[0-9]+)?\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\tZ\n\t\t\t\t\t\t\t | [+-](?!2[5-9])[0-2][0-9]:[0-5][0-9]\n\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t)?\n\t\t\t\t\t",
+ "name": "constant.other.date.toml"
+ },
+ {
+ "match": "\\G(?x)\n\t\t\t\t\t\t(?!2[5-9])[0-2][0-9]\n\t\t\t\t\t\t:\n\t\t\t\t\t\t[0-5][0-9]\n\t\t\t\t\t\t:\n\t\t\t\t\t\t(?!6[1-9])[0-6][0-9]\n\t\t\t\t\t\t(\\.[0-9]+)?\n\t\t\t\t\t",
+ "name": "constant.other.time.toml"
+ },
+ {
+ "match": "\\G(true|false)",
+ "name": "constant.language.boolean.toml"
+ },
+ {
+ "match": "\\G0x\\h(\\h|_\\h)*",
+ "name": "constant.numeric.hex.toml"
+ },
+ {
+ "match": "\\G0o[0-7]([0-7]|_[0-7])*",
+ "name": "constant.numeric.octal.toml"
+ },
+ {
+ "match": "\\G0b[01]([01]|_[01])*",
+ "name": "constant.numeric.binary.toml"
+ },
+ {
+ "match": "\\G[+-]?(inf|nan)",
+ "name": "constant.numeric.toml"
+ },
+ {
+ "match": "(?x)\n\t\t\t\t\t\t\\G\n\t\t\t\t\t\t(\n\t\t\t\t\t\t [+-]?\n\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t | ([1-9](([0-9]|_[0-9])+)?)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t(?=[.eE])\n\t\t\t\t\t\t(\n\t\t\t\t\t\t \\.\n\t\t\t\t\t\t ([0-9](([0-9]|_[0-9])+)?)\n\t\t\t\t\t\t)?\n\t\t\t\t\t\t(\n\t\t\t\t\t\t [eE]\n\t\t\t\t\t\t ([+-]?[0-9](([0-9]|_[0-9])+)?)\n\t\t\t\t\t\t)?\n\t\t\t\t\t",
+ "name": "constant.numeric.float.toml"
+ },
+ {
+ "match": "(?x)\n\t\t\t\t\t\t\\G\n\t\t\t\t\t\t(\n\t\t\t\t\t\t [+-]?\n\t\t\t\t\t\t (\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t | ([1-9](([0-9]|_[0-9])+)?)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t",
+ "name": "constant.numeric.integer.toml"
+ },
+ {
+ "begin": "\\G\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.begin.toml"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.array.end.toml"
+ }
+ },
+ "name": "meta.array.toml",
+ "patterns": [
+ {
+ "begin": "(?=[\"'']|[+-]?[0-9]|[+-]?(inf|nan)|true|false|\\[|\\{)",
+ "end": ",|(?=])",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.separator.array.toml"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#primatives"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#invalid"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#invalid"
+ }
+ ]
+ },
+ {
+ "begin": "\\G\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.inline-table.begin.toml"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.inline-table.end.toml"
+ }
+ },
+ "name": "meta.inline-table.toml",
+ "patterns": [
+ {
+ "begin": "(?=\\S)",
+ "end": ",|(?=})",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.separator.inline-table.toml"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#key_pair"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "scopeName": "source.toml",
+ "uuid": "7DEF2EDB-5BB7-4DD2-9E78-3541A26B7923"
+}
diff --git a/node_modules/shiki/languages/tsx.tmLanguage.json b/node_modules/shiki/languages/tsx.tmLanguage.json
new file mode 100644
index 0000000..da29046
--- /dev/null
+++ b/node_modules/shiki/languages/tsx.tmLanguage.json
@@ -0,0 +1,5921 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScriptReact.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/microsoft/TypeScript-TmLanguage/commit/e0aefd8205cc9d1bc7859cc5babbee0d833dca0f",
+ "name": "tsx",
+ "scopeName": "source.tsx",
+ "patterns": [
+ {
+ "include": "#directives"
+ },
+ {
+ "include": "#statements"
+ },
+ {
+ "include": "#shebang"
+ }
+ ],
+ "repository": {
+ "shebang": {
+ "name": "comment.line.shebang.tsx",
+ "match": "\\A(#!).*(?=$)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.tsx"
+ }
+ }
+ },
+ "statements": {
+ "patterns": [
+ {
+ "include": "#declaration"
+ },
+ {
+ "include": "#control-statement"
+ },
+ {
+ "include": "#after-operator-block-as-object-literal"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#label"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "declaration": {
+ "patterns": [
+ {
+ "include": "#decorator"
+ },
+ {
+ "include": "#var-expr"
+ },
+ {
+ "include": "#function-declaration"
+ },
+ {
+ "include": "#class-declaration"
+ },
+ {
+ "include": "#interface-declaration"
+ },
+ {
+ "include": "#enum-declaration"
+ },
+ {
+ "include": "#namespace-declaration"
+ },
+ {
+ "include": "#type-alias-declaration"
+ },
+ {
+ "include": "#import-equals-declaration"
+ },
+ {
+ "include": "#import-declaration"
+ },
+ {
+ "include": "#export-declaration"
+ },
+ {
+ "name": "storage.modifier.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "control-statement": {
+ "patterns": [
+ {
+ "include": "#switch-statement"
+ },
+ {
+ "include": "#for-loop"
+ },
+ {
+ "name": "keyword.control.trycatch.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.loop.tsx"
+ },
+ "2": {
+ "name": "entity.name.label.tsx"
+ }
+ }
+ },
+ {
+ "name": "keyword.control.loop.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.flow.tsx"
+ }
+ },
+ "end": "(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "keyword.control.switch.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "include": "#if-statement"
+ },
+ {
+ "name": "keyword.control.conditional.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.control.with.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.control.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.other.debugger.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "label": {
+ "patterns": [
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.label.tsx"
+ },
+ "2": {
+ "name": "punctuation.separator.label.tsx"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#decl-block"
+ }
+ ]
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "entity.name.label.tsx"
+ },
+ "2": {
+ "name": "punctuation.separator.label.tsx"
+ }
+ }
+ }
+ ]
+ },
+ "expression": {
+ "patterns": [
+ {
+ "include": "#expressionWithoutIdentifiers"
+ },
+ {
+ "include": "#identifiers"
+ },
+ {
+ "include": "#expressionPunctuations"
+ }
+ ]
+ },
+ "expressionWithoutIdentifiers": {
+ "patterns": [
+ {
+ "include": "#jsx"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#function-expression"
+ },
+ {
+ "include": "#class-expression"
+ },
+ {
+ "include": "#arrow-function"
+ },
+ {
+ "include": "#paren-expression-possibly-arrow"
+ },
+ {
+ "include": "#cast"
+ },
+ {
+ "include": "#ternary-expression"
+ },
+ {
+ "include": "#new-expr"
+ },
+ {
+ "include": "#instanceof-expr"
+ },
+ {
+ "include": "#object-literal"
+ },
+ {
+ "include": "#expression-operators"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#support-objects"
+ },
+ {
+ "include": "#paren-expression"
+ }
+ ]
+ },
+ "expressionPunctuations": {
+ "patterns": [
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-accessor"
+ }
+ ]
+ },
+ "decorator": {
+ "name": "meta.decorator.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.decorator.tsx"
+ }
+ },
+ "end": "(?=\\s)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "var-expr": {
+ "patterns": [
+ {
+ "name": "meta.var.expr.tsx",
+ "begin": "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
+ "end": "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ },
+ "3": {
+ "name": "storage.type.tsx"
+ }
+ },
+ "end": "(?=\\S)"
+ },
+ {
+ "include": "#destructuring-variable"
+ },
+ {
+ "include": "#var-single-variable"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(,)\\s*(?=$|\\/\\/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.comma.tsx"
+ }
+ },
+ "end": "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#destructuring-variable"
+ },
+ {
+ "include": "#var-single-variable"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ {
+ "name": "meta.var.expr.tsx",
+ "begin": "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ },
+ "3": {
+ "name": "storage.type.tsx"
+ }
+ },
+ "end": "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ },
+ "3": {
+ "name": "storage.type.tsx"
+ }
+ },
+ "end": "(?=\\S)"
+ },
+ {
+ "include": "#destructuring-const"
+ },
+ {
+ "include": "#var-single-const"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(,)\\s*(?=$|\\/\\/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.comma.tsx"
+ }
+ },
+ "end": "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#destructuring-const"
+ },
+ {
+ "include": "#var-single-const"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ ]
+ },
+ "var-single-variable": {
+ "patterns": [
+ {
+ "name": "meta.var-single-variable.expr.tsx",
+ "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.tsx entity.name.function.tsx"
+ },
+ "2": {
+ "name": "keyword.operator.definiteassignment.tsx"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ },
+ {
+ "name": "meta.var-single-variable.expr.tsx",
+ "begin": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.tsx variable.other.constant.tsx"
+ },
+ "2": {
+ "name": "keyword.operator.definiteassignment.tsx"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ },
+ {
+ "name": "meta.var-single-variable.expr.tsx",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)(\\!)?",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.tsx variable.other.readwrite.tsx"
+ },
+ "2": {
+ "name": "keyword.operator.definiteassignment.tsx"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ }
+ ]
+ },
+ "var-single-const": {
+ "patterns": [
+ {
+ "name": "meta.var-single-variable.expr.tsx",
+ "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.tsx variable.other.constant.tsx entity.name.function.tsx"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ },
+ {
+ "name": "meta.var-single-variable.expr.tsx",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.tsx variable.other.constant.tsx"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ }
+ ]
+ },
+ "var-single-variable-type-annotation": {
+ "patterns": [
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "destructuring-variable": {
+ "patterns": [
+ {
+ "name": "meta.object-binding-pattern-variable.tsx",
+ "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#object-binding-pattern"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "name": "meta.array-binding-pattern-variable.tsx",
+ "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#array-binding-pattern"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "destructuring-const": {
+ "patterns": [
+ {
+ "name": "meta.object-binding-pattern-variable.tsx",
+ "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#object-binding-pattern-const"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "name": "meta.array-binding-pattern-variable.tsx",
+ "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#array-binding-pattern-const"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "object-binding-element": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#object-binding-element-propertyName"
+ },
+ {
+ "include": "#binding-element"
+ }
+ ]
+ },
+ {
+ "include": "#object-binding-pattern"
+ },
+ {
+ "include": "#destructuring-variable-rest"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "object-binding-element-const": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#object-binding-element-propertyName"
+ },
+ {
+ "include": "#binding-element-const"
+ }
+ ]
+ },
+ {
+ "include": "#object-binding-pattern-const"
+ },
+ {
+ "include": "#destructuring-variable-rest-const"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "object-binding-element-propertyName": {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
+ "end": "(:)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.destructuring.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "name": "variable.object.property.tsx",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ },
+ "binding-element": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#object-binding-pattern"
+ },
+ {
+ "include": "#array-binding-pattern"
+ },
+ {
+ "include": "#destructuring-variable-rest"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "binding-element-const": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#object-binding-pattern-const"
+ },
+ {
+ "include": "#array-binding-pattern-const"
+ },
+ {
+ "include": "#destructuring-variable-rest-const"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "destructuring-variable-rest": {
+ "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "2": {
+ "name": "meta.definition.variable.tsx variable.other.readwrite.tsx"
+ }
+ }
+ },
+ "destructuring-variable-rest-const": {
+ "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "2": {
+ "name": "meta.definition.variable.tsx variable.other.constant.tsx"
+ }
+ }
+ },
+ "object-binding-pattern": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.object.tsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.object.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-binding-element"
+ }
+ ]
+ },
+ "object-binding-pattern-const": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.object.tsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.object.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-binding-element-const"
+ }
+ ]
+ },
+ "array-binding-pattern": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.array.tsx"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.array.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#binding-element"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "array-binding-pattern-const": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.array.tsx"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.array.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#binding-element-const"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "parameter-name": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ },
+ "2": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "3": {
+ "name": "entity.name.function.tsx variable.language.this.tsx"
+ },
+ "4": {
+ "name": "entity.name.function.tsx"
+ },
+ "5": {
+ "name": "keyword.operator.optional.tsx"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ },
+ "2": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "3": {
+ "name": "variable.parameter.tsx variable.language.this.tsx"
+ },
+ "4": {
+ "name": "variable.parameter.tsx"
+ },
+ "5": {
+ "name": "keyword.operator.optional.tsx"
+ }
+ }
+ }
+ ]
+ },
+ "destructuring-parameter": {
+ "patterns": [
+ {
+ "name": "meta.parameter.object-binding-pattern.tsx",
+ "begin": "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.object.tsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.object.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter-object-binding-element"
+ }
+ ]
+ },
+ {
+ "name": "meta.paramter.array-binding-pattern.tsx",
+ "begin": "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.array.tsx"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.array.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter-binding-element"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ ]
+ },
+ "parameter-object-binding-element": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#object-binding-element-propertyName"
+ },
+ {
+ "include": "#parameter-binding-element"
+ },
+ {
+ "include": "#paren-expression"
+ }
+ ]
+ },
+ {
+ "include": "#parameter-object-binding-pattern"
+ },
+ {
+ "include": "#destructuring-parameter-rest"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "parameter-binding-element": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#parameter-object-binding-pattern"
+ },
+ {
+ "include": "#parameter-array-binding-pattern"
+ },
+ {
+ "include": "#destructuring-parameter-rest"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "destructuring-parameter-rest": {
+ "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "2": {
+ "name": "variable.parameter.tsx"
+ }
+ }
+ },
+ "parameter-object-binding-pattern": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.object.tsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.object.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter-object-binding-element"
+ }
+ ]
+ },
+ "parameter-array-binding-pattern": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.array.tsx"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.array.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter-binding-element"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "field-declaration": {
+ "name": "meta.field.declaration.tsx",
+ "begin": "(?x)(?<!\\()(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s+)?(?=\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|\\}|$))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ }
+ },
+ "end": "(?x)(?=\\}|;|,|$|(^(?!\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "1": {
+ "name": "meta.definition.property.tsx entity.name.function.tsx"
+ },
+ "2": {
+ "name": "keyword.operator.optional.tsx"
+ },
+ "3": {
+ "name": "keyword.operator.definiteassignment.tsx"
+ }
+ }
+ },
+ {
+ "name": "meta.definition.property.tsx variable.object.property.tsx",
+ "match": "\\#?[_$[:alpha:]][_$[:alnum:]]*"
+ },
+ {
+ "name": "keyword.operator.optional.tsx",
+ "match": "\\?"
+ },
+ {
+ "name": "keyword.operator.definiteassignment.tsx",
+ "match": "\\!"
+ }
+ ]
+ },
+ "variable-initializer": {
+ "patterns": [
+ {
+ "begin": "(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.tsx"
+ }
+ },
+ "end": "(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!=|!)(=)(?!=)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.tsx"
+ }
+ },
+ "end": "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<![\\|\\&\\+\\-\\*\\/])(?<=\\S)(?<!=)(?=\\s*$)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "function-declaration": {
+ "name": "meta.function.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ },
+ "3": {
+ "name": "storage.modifier.async.tsx"
+ },
+ "4": {
+ "name": "storage.type.function.tsx"
+ },
+ "5": {
+ "name": "keyword.generator.asterisk.tsx"
+ },
+ "6": {
+ "name": "meta.definition.function.tsx entity.name.function.tsx"
+ }
+ },
+ "end": "(?=;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#function-name"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ "function-expression": {
+ "name": "meta.function.expression.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.tsx"
+ },
+ "2": {
+ "name": "storage.type.function.tsx"
+ },
+ "3": {
+ "name": "keyword.generator.asterisk.tsx"
+ },
+ "4": {
+ "name": "meta.definition.function.tsx entity.name.function.tsx"
+ }
+ },
+ "end": "(?=;)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#function-name"
+ },
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ "function-name": {
+ "name": "meta.definition.function.tsx entity.name.function.tsx",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ },
+ "function-body": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#function-parameters"
+ },
+ {
+ "include": "#return-type"
+ },
+ {
+ "include": "#type-function-return-type"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "name": "keyword.generator.asterisk.tsx",
+ "match": "\\*"
+ }
+ ]
+ },
+ "method-declaration": {
+ "patterns": [
+ {
+ "name": "meta.method.declaration.tsx",
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ },
+ "3": {
+ "name": "storage.modifier.tsx"
+ },
+ "4": {
+ "name": "storage.modifier.async.tsx"
+ },
+ "5": {
+ "name": "storage.type.tsx"
+ }
+ },
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ {
+ "name": "meta.method.declaration.tsx",
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\s*\\b(new)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?)(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ },
+ "3": {
+ "name": "storage.modifier.tsx"
+ },
+ "4": {
+ "name": "storage.modifier.async.tsx"
+ },
+ "5": {
+ "name": "keyword.operator.new.tsx"
+ },
+ "6": {
+ "name": "keyword.generator.asterisk.tsx"
+ }
+ },
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ {
+ "name": "meta.method.declaration.tsx",
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ },
+ "3": {
+ "name": "storage.modifier.tsx"
+ },
+ "4": {
+ "name": "storage.modifier.async.tsx"
+ },
+ "5": {
+ "name": "storage.type.property.tsx"
+ },
+ "6": {
+ "name": "keyword.generator.asterisk.tsx"
+ }
+ },
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ }
+ ]
+ },
+ "object-literal-method-declaration": {
+ "name": "meta.method.declaration.tsx",
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.tsx"
+ },
+ "2": {
+ "name": "storage.type.property.tsx"
+ },
+ "3": {
+ "name": "keyword.generator.asterisk.tsx"
+ }
+ },
+ "end": "(?=\\}|;|,)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ },
+ {
+ "include": "#function-body"
+ },
+ {
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.tsx"
+ },
+ "2": {
+ "name": "storage.type.property.tsx"
+ },
+ "3": {
+ "name": "keyword.generator.asterisk.tsx"
+ }
+ },
+ "end": "(?=\\(|\\<)",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ }
+ ]
+ }
+ ]
+ },
+ "method-declaration-name": {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])",
+ "end": "(?=\\(|\\<)",
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "name": "meta.definition.method.tsx entity.name.function.tsx",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ },
+ {
+ "name": "keyword.operator.optional.tsx",
+ "match": "\\?"
+ }
+ ]
+ },
+ "arrow-function": {
+ "patterns": [
+ {
+ "name": "meta.arrow.tsx",
+ "match": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.async.tsx"
+ },
+ "2": {
+ "name": "variable.parameter.tsx"
+ }
+ }
+ },
+ {
+ "name": "meta.arrow.tsx",
+ "begin": "(?x) (?:\n (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\n)? ((?<![})!\\]])\\s*\n (?=\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n )\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.tsx"
+ }
+ },
+ "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#function-parameters"
+ },
+ {
+ "include": "#arrow-return-type"
+ },
+ {
+ "include": "#possibly-arrow-return-type"
+ }
+ ]
+ },
+ {
+ "name": "meta.arrow.tsx",
+ "begin": "=>",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.function.arrow.tsx"
+ }
+ },
+ "end": "((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "indexer-declaration": {
+ "name": "meta.indexer.declaration.tsx",
+ "begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ },
+ "2": {
+ "name": "meta.brace.square.tsx"
+ },
+ "3": {
+ "name": "variable.parameter.tsx"
+ }
+ },
+ "end": "(\\])\\s*(\\?\\s*)?|$",
+ "endCaptures": {
+ "1": {
+ "name": "meta.brace.square.tsx"
+ },
+ "2": {
+ "name": "keyword.operator.optional.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type-annotation"
+ }
+ ]
+ },
+ "indexer-mapped-type-declaration": {
+ "name": "meta.indexer.mappedtype.declaration.tsx",
+ "begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.modifier.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ },
+ "3": {
+ "name": "meta.brace.square.tsx"
+ },
+ "4": {
+ "name": "entity.name.type.tsx"
+ },
+ "5": {
+ "name": "keyword.operator.expression.in.tsx"
+ }
+ },
+ "end": "(\\])([+-])?\\s*(\\?\\s*)?|$",
+ "endCaptures": {
+ "1": {
+ "name": "meta.brace.square.tsx"
+ },
+ "2": {
+ "name": "keyword.operator.type.modifier.tsx"
+ },
+ "3": {
+ "name": "keyword.operator.optional.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
+ "captures": {
+ "1": {
+ "name": "keyword.control.as.tsx"
+ }
+ }
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "function-parameters": {
+ "name": "meta.parameters.tsx",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.begin.tsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-parameters-body"
+ }
+ ]
+ },
+ "function-parameters-body": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#decorator"
+ },
+ {
+ "include": "#destructuring-parameter"
+ },
+ {
+ "include": "#parameter-name"
+ },
+ {
+ "include": "#parameter-type-annotation"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "name": "punctuation.separator.parameter.tsx",
+ "match": ","
+ }
+ ]
+ },
+ "class-declaration": {
+ "name": "meta.class.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ },
+ "3": {
+ "name": "storage.modifier.tsx"
+ },
+ "4": {
+ "name": "storage.type.class.tsx"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#class-declaration-or-expression-patterns"
+ }
+ ]
+ },
+ "class-expression": {
+ "name": "meta.class.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ },
+ "2": {
+ "name": "storage.type.class.tsx"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#class-declaration-or-expression-patterns"
+ }
+ ]
+ },
+ "class-declaration-or-expression-patterns": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#class-or-interface-heritage"
+ },
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "captures": {
+ "0": {
+ "name": "entity.name.type.class.tsx"
+ }
+ }
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#class-or-interface-body"
+ }
+ ]
+ },
+ "interface-declaration": {
+ "name": "meta.interface.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ },
+ "3": {
+ "name": "storage.modifier.tsx"
+ },
+ "4": {
+ "name": "storage.type.interface.tsx"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#class-or-interface-heritage"
+ },
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "captures": {
+ "0": {
+ "name": "entity.name.type.interface.tsx"
+ }
+ }
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#class-or-interface-body"
+ }
+ ]
+ },
+ "class-or-interface-heritage": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ }
+ },
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#class-or-interface-heritage"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#expressionWithoutIdentifiers"
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.module.tsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.tsx"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.tsx"
+ }
+ }
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "entity.other.inherited-class.tsx"
+ }
+ }
+ },
+ {
+ "include": "#expressionPunctuations"
+ }
+ ]
+ },
+ "class-or-interface-body": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#decorator"
+ },
+ {
+ "begin": "(?<=:)\\s*",
+ "end": "(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#method-declaration"
+ },
+ {
+ "include": "#indexer-declaration"
+ },
+ {
+ "include": "#field-declaration"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#access-modifier"
+ },
+ {
+ "include": "#property-accessor"
+ },
+ {
+ "include": "#async-modifier"
+ },
+ {
+ "include": "#after-operator-block-as-object-literal"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "access-modifier": {
+ "name": "storage.modifier.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "property-accessor": {
+ "name": "storage.type.property.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "async-modifier": {
+ "name": "storage.modifier.async.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "enum-declaration": {
+ "name": "meta.enum.declaration.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ },
+ "3": {
+ "name": "storage.modifier.tsx"
+ },
+ "4": {
+ "name": "storage.type.enum.tsx"
+ },
+ "5": {
+ "name": "entity.name.type.enum.tsx"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.enummember.tsx"
+ }
+ },
+ "end": "(?=,|\\}|$)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ {
+ "begin": "(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",
+ "end": "(?=,|\\}|$)",
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ ]
+ },
+ "namespace-declaration": {
+ "name": "meta.namespace.declaration.tsx",
+ "begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ },
+ "3": {
+ "name": "storage.type.namespace.tsx"
+ }
+ },
+ "end": "(?<=\\})|(?=;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "name": "entity.name.type.module.tsx",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ },
+ {
+ "include": "#punctuation-accessor"
+ },
+ {
+ "include": "#decl-block"
+ }
+ ]
+ },
+ "type-alias-declaration": {
+ "name": "meta.type.declaration.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ },
+ "3": {
+ "name": "storage.type.type.tsx"
+ },
+ "4": {
+ "name": "entity.name.type.alias.tsx"
+ }
+ },
+ "end": "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "begin": "(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.tsx"
+ },
+ "2": {
+ "name": "keyword.control.intrinsic.tsx"
+ }
+ },
+ "end": "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "begin": "(=)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.tsx"
+ }
+ },
+ "end": "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "import-equals-declaration": {
+ "patterns": [
+ {
+ "name": "meta.import-equals.external.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ },
+ "3": {
+ "name": "keyword.control.import.tsx"
+ },
+ "4": {
+ "name": "keyword.control.type.tsx"
+ },
+ "5": {
+ "name": "variable.other.readwrite.alias.tsx"
+ },
+ "6": {
+ "name": "keyword.operator.assignment.tsx"
+ },
+ "7": {
+ "name": "keyword.control.require.tsx"
+ },
+ "8": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "name": "meta.import-equals.internal.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ },
+ "3": {
+ "name": "keyword.control.import.tsx"
+ },
+ "4": {
+ "name": "keyword.control.type.tsx"
+ },
+ "5": {
+ "name": "variable.other.readwrite.alias.tsx"
+ },
+ "6": {
+ "name": "keyword.operator.assignment.tsx"
+ }
+ },
+ "end": "(?=;|$|^)",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.module.tsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.tsx"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.tsx"
+ }
+ }
+ },
+ {
+ "name": "variable.other.readwrite.tsx",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ }
+ ]
+ },
+ "import-declaration": {
+ "name": "meta.import.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ },
+ "3": {
+ "name": "keyword.control.import.tsx"
+ },
+ "4": {
+ "name": "keyword.control.type.tsx"
+ }
+ },
+ "end": "(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "begin": "(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*[\"'])",
+ "end": "\\bfrom\\b",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.from.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#import-export-declaration"
+ }
+ ]
+ },
+ {
+ "include": "#import-export-declaration"
+ }
+ ]
+ },
+ "export-declaration": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.export.tsx"
+ },
+ "2": {
+ "name": "keyword.control.as.tsx"
+ },
+ "3": {
+ "name": "storage.type.namespace.tsx"
+ },
+ "4": {
+ "name": "entity.name.type.module.tsx"
+ }
+ }
+ },
+ {
+ "name": "meta.export.default.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.tsx"
+ },
+ "2": {
+ "name": "keyword.control.type.tsx"
+ },
+ "3": {
+ "name": "keyword.operator.assignment.tsx"
+ },
+ "4": {
+ "name": "keyword.control.default.tsx"
+ }
+ },
+ "end": "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#interface-declaration"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "meta.export.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.tsx"
+ },
+ "2": {
+ "name": "keyword.control.type.tsx"
+ }
+ },
+ "end": "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#import-export-declaration"
+ }
+ ]
+ }
+ ]
+ },
+ "import-export-declaration": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#import-export-block"
+ },
+ {
+ "name": "keyword.control.from.tsx",
+ "match": "\\bfrom\\b"
+ },
+ {
+ "include": "#import-export-assert-clause"
+ },
+ {
+ "include": "#import-export-clause"
+ }
+ ]
+ },
+ "import-export-assert-clause": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(assert)\\s*(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.assert.tsx"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "name": "meta.object-literal.key.tsx",
+ "match": "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)"
+ },
+ {
+ "name": "punctuation.separator.key-value.tsx",
+ "match": ":"
+ }
+ ]
+ },
+ "import-export-block": {
+ "name": "meta.block.tsx",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#import-export-clause"
+ }
+ ]
+ },
+ "import-export-clause": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(?:(\\btype)\\s+)?(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*)))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.type.tsx"
+ },
+ "2": {
+ "name": "keyword.control.default.tsx"
+ },
+ "3": {
+ "name": "constant.language.import-export-all.tsx"
+ },
+ "4": {
+ "name": "variable.other.readwrite.tsx"
+ },
+ "5": {
+ "name": "keyword.control.as.tsx"
+ },
+ "6": {
+ "name": "keyword.control.default.tsx"
+ },
+ "7": {
+ "name": "variable.other.readwrite.alias.tsx"
+ }
+ }
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "name": "constant.language.import-export-all.tsx",
+ "match": "\\*"
+ },
+ {
+ "name": "keyword.control.default.tsx",
+ "match": "\\b(default)\\b"
+ },
+ {
+ "match": "(?:(\\btype)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.type.tsx"
+ },
+ "2": {
+ "name": "variable.other.readwrite.alias.tsx"
+ }
+ }
+ }
+ ]
+ },
+ "switch-statement": {
+ "name": "switch-statement.expr.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "name": "switch-expression.expr.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.tsx"
+ },
+ "2": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "switch-block.expr.tsx",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "name": "case-clause.expr.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.tsx"
+ }
+ },
+ "end": "(?=:)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(:)\\s*(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "case-clause.expr.tsx punctuation.definition.section.case-statement.tsx"
+ },
+ "2": {
+ "name": "meta.block.tsx punctuation.definition.block.tsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "meta.block.tsx punctuation.definition.block.tsx"
+ }
+ },
+ "contentName": "meta.block.tsx",
+ "patterns": [
+ {
+ "include": "#statements"
+ }
+ ]
+ },
+ {
+ "match": "(:)",
+ "captures": {
+ "0": {
+ "name": "case-clause.expr.tsx punctuation.definition.section.case-statement.tsx"
+ }
+ }
+ },
+ {
+ "include": "#statements"
+ }
+ ]
+ }
+ ]
+ },
+ "for-loop": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.loop.tsx"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "name": "keyword.control.loop.tsx",
+ "match": "await"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#var-expr"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ }
+ ]
+ },
+ "if-statement": {
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))",
+ "end": "(?=;|$|\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.conditional.tsx"
+ },
+ "2": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "string.regexp.tsx",
+ "begin": "(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.tsx"
+ }
+ },
+ "end": "(/)([dgimsuy]*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.tsx"
+ },
+ "2": {
+ "name": "keyword.other.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "include": "#statements"
+ }
+ ]
+ }
+ ]
+ },
+ "decl-block": {
+ "name": "meta.block.tsx",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#statements"
+ }
+ ]
+ },
+ "after-operator-block-as-object-literal": {
+ "name": "meta.objectliteral.tsx",
+ "begin": "(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-member"
+ }
+ ]
+ },
+ "object-literal": {
+ "name": "meta.objectliteral.tsx",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-member"
+ }
+ ]
+ },
+ "object-member": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#object-literal-method-declaration"
+ },
+ {
+ "name": "meta.object.member.tsx meta.object-literal.key.tsx",
+ "begin": "(?=\\[)",
+ "end": "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#array-literal"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.tsx meta.object-literal.key.tsx",
+ "begin": "(?=[\\'\\\"\\`])",
+ "end": "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.tsx meta.object-literal.key.tsx",
+ "begin": "(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)))",
+ "end": "(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as|satisifies\\s+))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#numeric-literal"
+ }
+ ]
+ },
+ {
+ "name": "meta.method.declaration.tsx",
+ "begin": "(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",
+ "end": "(?=\\}|;|,)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.tsx",
+ "match": "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
+ "captures": {
+ "0": {
+ "name": "meta.object-literal.key.tsx"
+ },
+ "1": {
+ "name": "constant.numeric.decimal.tsx"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.tsx",
+ "match": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "0": {
+ "name": "meta.object-literal.key.tsx"
+ },
+ "1": {
+ "name": "entity.name.function.tsx"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.tsx",
+ "match": "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
+ "captures": {
+ "0": {
+ "name": "meta.object-literal.key.tsx"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.tsx",
+ "begin": "\\.\\.\\.",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.spread.tsx"
+ }
+ },
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.tsx",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",
+ "captures": {
+ "1": {
+ "name": "variable.other.readwrite.tsx"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.as.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.as.tsx"
+ },
+ "2": {
+ "name": "keyword.control.satisfies.tsx"
+ }
+ },
+ "end": "(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisifies)\\s+))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.tsx",
+ "begin": "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",
+ "end": "(?=,|\\}|$|\\/\\/|\\/\\*)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.tsx",
+ "begin": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.object-literal.key.tsx punctuation.separator.key-value.tsx"
+ }
+ },
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "begin": "(?<=:)\\s*(async)?(?=\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.tsx"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-inside-possibly-arrow-parens"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.tsx"
+ },
+ "2": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-inside-possibly-arrow-parens"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.tsx"
+ }
+ },
+ "end": "(?<=\\>)",
+ "patterns": [
+ {
+ "include": "#type-parameters"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-inside-possibly-arrow-parens"
+ }
+ ]
+ },
+ {
+ "include": "#possibly-arrow-return-type"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#decl-block"
+ }
+ ]
+ },
+ "ternary-expression": {
+ "begin": "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.tsx"
+ }
+ },
+ "end": "\\s*(:)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "function-call": {
+ "patterns": [
+ {
+ "begin": "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
+ "end": "(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
+ "patterns": [
+ {
+ "name": "meta.function-call.tsx",
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
+ "end": "(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
+ "patterns": [
+ {
+ "include": "#function-call-target"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#function-call-optionals"
+ },
+ {
+ "include": "#type-arguments"
+ },
+ {
+ "include": "#paren-expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
+ "end": "(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
+ "patterns": [
+ {
+ "name": "meta.function-call.tsx",
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
+ "end": "(?=(<\\s*[\\{\\[\\(]\\s*$))",
+ "patterns": [
+ {
+ "include": "#function-call-target"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#function-call-optionals"
+ },
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ }
+ ]
+ },
+ "function-call-target": {
+ "patterns": [
+ {
+ "include": "#support-function-call-identifiers"
+ },
+ {
+ "name": "entity.name.function.tsx",
+ "match": "(\\#?[_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ },
+ "function-call-optionals": {
+ "patterns": [
+ {
+ "name": "meta.function-call.tsx punctuation.accessor.optional.tsx",
+ "match": "\\?\\."
+ },
+ {
+ "name": "meta.function-call.tsx keyword.operator.definiteassignment.tsx",
+ "match": "\\!"
+ }
+ ]
+ },
+ "support-function-call-identifiers": {
+ "patterns": [
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#support-objects"
+ },
+ {
+ "include": "#object-identifiers"
+ },
+ {
+ "include": "#punctuation-accessor"
+ },
+ {
+ "name": "keyword.operator.expression.import.tsx",
+ "match": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"
+ }
+ ]
+ },
+ "new-expr": {
+ "name": "new.expr.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.new.tsx"
+ }
+ },
+ "end": "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "instanceof-expr": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.expression.instanceof.tsx"
+ }
+ },
+ "end": "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(===|!==|==|!=)|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "paren-expression-possibly-arrow": {
+ "patterns": [
+ {
+ "begin": "(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.tsx"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#paren-expression-possibly-arrow-with-typeparameters"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)))\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.tsx"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#paren-expression-possibly-arrow-with-typeparameters"
+ }
+ ]
+ },
+ {
+ "include": "#possibly-arrow-return-type"
+ }
+ ]
+ },
+ "paren-expression-possibly-arrow-with-typeparameters": {
+ "patterns": [
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-inside-possibly-arrow-parens"
+ }
+ ]
+ }
+ ]
+ },
+ "expression-inside-possibly-arrow-parens": {
+ "patterns": [
+ {
+ "include": "#expressionWithoutIdentifiers"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#decorator"
+ },
+ {
+ "include": "#destructuring-parameter"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ },
+ "2": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "3": {
+ "name": "entity.name.function.tsx variable.language.this.tsx"
+ },
+ "4": {
+ "name": "entity.name.function.tsx"
+ },
+ "5": {
+ "name": "keyword.operator.optional.tsx"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ },
+ "2": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "3": {
+ "name": "variable.parameter.tsx variable.language.this.tsx"
+ },
+ "4": {
+ "name": "variable.parameter.tsx"
+ },
+ "5": {
+ "name": "keyword.operator.optional.tsx"
+ }
+ }
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "name": "punctuation.separator.parameter.tsx",
+ "match": ","
+ },
+ {
+ "include": "#identifiers"
+ },
+ {
+ "include": "#expressionPunctuations"
+ }
+ ]
+ },
+ "paren-expression": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "cast": {
+ "patterns": [
+ {
+ "include": "#jsx"
+ }
+ ]
+ },
+ "expression-operators": {
+ "patterns": [
+ {
+ "name": "keyword.control.flow.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow.tsx"
+ }
+ },
+ "end": "\\*",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.generator.asterisk.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.tsx"
+ },
+ "2": {
+ "name": "keyword.generator.asterisk.tsx"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.expression.delete.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.operator.expression.in.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
+ },
+ {
+ "name": "keyword.operator.expression.of.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
+ },
+ {
+ "name": "keyword.operator.expression.instanceof.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.operator.new.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "include": "#typeof-operator"
+ },
+ {
+ "name": "keyword.operator.expression.void.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.as.tsx"
+ },
+ "2": {
+ "name": "storage.modifier.tsx"
+ }
+ }
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.as.tsx"
+ },
+ "2": {
+ "name": "keyword.control.satisfies.tsx"
+ }
+ },
+ "end": "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisfies)\\s+)|(\\s+\\<))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "name": "keyword.operator.spread.tsx",
+ "match": "\\.\\.\\."
+ },
+ {
+ "name": "keyword.operator.assignment.compound.tsx",
+ "match": "\\*=|(?<!\\()/=|%=|\\+=|\\-="
+ },
+ {
+ "name": "keyword.operator.assignment.compound.bitwise.tsx",
+ "match": "\\&=|\\^=|<<=|>>=|>>>=|\\|="
+ },
+ {
+ "name": "keyword.operator.bitwise.shift.tsx",
+ "match": "<<|>>>|>>"
+ },
+ {
+ "name": "keyword.operator.comparison.tsx",
+ "match": "===|!==|==|!="
+ },
+ {
+ "name": "keyword.operator.relational.tsx",
+ "match": "<=|>=|<>|<|>"
+ },
+ {
+ "match": "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.logical.tsx"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.compound.tsx"
+ },
+ "3": {
+ "name": "keyword.operator.arithmetic.tsx"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.logical.tsx",
+ "match": "\\!|&&|\\|\\||\\?\\?"
+ },
+ {
+ "name": "keyword.operator.bitwise.tsx",
+ "match": "\\&|~|\\^|\\|"
+ },
+ {
+ "name": "keyword.operator.assignment.tsx",
+ "match": "\\="
+ },
+ {
+ "name": "keyword.operator.decrement.tsx",
+ "match": "--"
+ },
+ {
+ "name": "keyword.operator.increment.tsx",
+ "match": "\\+\\+"
+ },
+ {
+ "name": "keyword.operator.arithmetic.tsx",
+ "match": "%|\\*|/|-|\\+"
+ },
+ {
+ "begin": "(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",
+ "end": "(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.compound.tsx"
+ },
+ "2": {
+ "name": "keyword.operator.arithmetic.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "match": "(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.compound.tsx"
+ },
+ "2": {
+ "name": "keyword.operator.arithmetic.tsx"
+ }
+ }
+ }
+ ]
+ },
+ "typeof-operator": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.expression.typeof.tsx"
+ }
+ },
+ "end": "(?=[,);}\\]=>:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#type-arguments"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "literal": {
+ "patterns": [
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#boolean-literal"
+ },
+ {
+ "include": "#null-literal"
+ },
+ {
+ "include": "#undefined-literal"
+ },
+ {
+ "include": "#numericConstant-literal"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#this-literal"
+ },
+ {
+ "include": "#super-literal"
+ }
+ ]
+ },
+ "array-literal": {
+ "name": "meta.array.literal.tsx",
+ "begin": "\\s*(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.square.tsx"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.square.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "numeric-literal": {
+ "patterns": [
+ {
+ "name": "constant.numeric.hex.tsx",
+ "match": "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.numeric.bigint.tsx"
+ }
+ }
+ },
+ {
+ "name": "constant.numeric.binary.tsx",
+ "match": "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.numeric.bigint.tsx"
+ }
+ }
+ },
+ {
+ "name": "constant.numeric.octal.tsx",
+ "match": "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.numeric.bigint.tsx"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
+ "captures": {
+ "0": {
+ "name": "constant.numeric.decimal.tsx"
+ },
+ "1": {
+ "name": "meta.delimiter.decimal.period.tsx"
+ },
+ "2": {
+ "name": "storage.type.numeric.bigint.tsx"
+ },
+ "3": {
+ "name": "meta.delimiter.decimal.period.tsx"
+ },
+ "4": {
+ "name": "storage.type.numeric.bigint.tsx"
+ },
+ "5": {
+ "name": "meta.delimiter.decimal.period.tsx"
+ },
+ "6": {
+ "name": "storage.type.numeric.bigint.tsx"
+ },
+ "7": {
+ "name": "storage.type.numeric.bigint.tsx"
+ },
+ "8": {
+ "name": "meta.delimiter.decimal.period.tsx"
+ },
+ "9": {
+ "name": "storage.type.numeric.bigint.tsx"
+ },
+ "10": {
+ "name": "meta.delimiter.decimal.period.tsx"
+ },
+ "11": {
+ "name": "storage.type.numeric.bigint.tsx"
+ },
+ "12": {
+ "name": "meta.delimiter.decimal.period.tsx"
+ },
+ "13": {
+ "name": "storage.type.numeric.bigint.tsx"
+ },
+ "14": {
+ "name": "storage.type.numeric.bigint.tsx"
+ }
+ }
+ }
+ ]
+ },
+ "boolean-literal": {
+ "patterns": [
+ {
+ "name": "constant.language.boolean.true.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "constant.language.boolean.false.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "null-literal": {
+ "name": "constant.language.null.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "this-literal": {
+ "name": "variable.language.this.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)"
+ },
+ "super-literal": {
+ "name": "variable.language.super.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)"
+ },
+ "undefined-literal": {
+ "name": "constant.language.undefined.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "numericConstant-literal": {
+ "patterns": [
+ {
+ "name": "constant.language.nan.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "constant.language.infinity.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "support-objects": {
+ "patterns": [
+ {
+ "name": "variable.language.arguments.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)"
+ },
+ {
+ "name": "support.class.promise.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.import.tsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.tsx"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.tsx"
+ },
+ "4": {
+ "name": "support.variable.property.importmeta.tsx"
+ }
+ }
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.new.tsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.tsx"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.tsx"
+ },
+ "4": {
+ "name": "support.variable.property.target.tsx"
+ }
+ }
+ },
+ {
+ "match": "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n (?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\())\n |\n (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.tsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.tsx"
+ },
+ "3": {
+ "name": "support.variable.property.tsx"
+ },
+ "4": {
+ "name": "support.constant.tsx"
+ }
+ }
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "support.type.object.module.tsx"
+ },
+ "2": {
+ "name": "support.type.object.module.tsx"
+ },
+ "3": {
+ "name": "punctuation.accessor.tsx"
+ },
+ "4": {
+ "name": "punctuation.accessor.optional.tsx"
+ },
+ "5": {
+ "name": "support.type.object.module.tsx"
+ }
+ }
+ }
+ ]
+ },
+ "identifiers": {
+ "patterns": [
+ {
+ "include": "#object-identifiers"
+ },
+ {
+ "match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n(\n [<]\\s*[_$[:alpha:]][_$[:alnum:]]*\\s+extends\\s*[^=>] # < typeparam extends\n) |\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n))",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.tsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.tsx"
+ },
+ "3": {
+ "name": "entity.name.function.tsx"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.tsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.tsx"
+ },
+ "3": {
+ "name": "variable.other.constant.property.tsx"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.tsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.tsx"
+ },
+ "3": {
+ "name": "variable.other.property.tsx"
+ }
+ }
+ },
+ {
+ "name": "variable.other.constant.tsx",
+ "match": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
+ },
+ {
+ "name": "variable.other.readwrite.tsx",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ }
+ ]
+ },
+ "object-identifiers": {
+ "patterns": [
+ {
+ "name": "support.class.tsx",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))"
+ },
+ {
+ "match": "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n (\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\n (\\#?[_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.tsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.tsx"
+ },
+ "3": {
+ "name": "variable.other.constant.object.property.tsx"
+ },
+ "4": {
+ "name": "variable.other.object.property.tsx"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:\n ([[:upper:]][_$[:digit:][:upper:]]*) |\n ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "variable.other.constant.object.tsx"
+ },
+ "2": {
+ "name": "variable.other.object.tsx"
+ }
+ }
+ }
+ ]
+ },
+ "type-annotation": {
+ "patterns": [
+ {
+ "name": "meta.type.annotation.tsx",
+ "begin": "(:)(?=\\s*\\S)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.tsx"
+ }
+ },
+ "end": "(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "name": "meta.type.annotation.tsx",
+ "begin": "(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.tsx"
+ }
+ },
+ "end": "(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "parameter-type-annotation": {
+ "patterns": [
+ {
+ "name": "meta.type.annotation.tsx",
+ "begin": "(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.tsx"
+ }
+ },
+ "end": "(?=[,)])|(?==[^>])",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "return-type": {
+ "patterns": [
+ {
+ "name": "meta.return.type.tsx",
+ "begin": "(?<=\\))\\s*(:)(?=\\s*\\S)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.tsx"
+ }
+ },
+ "end": "(?<![:|&])(?=$|^|[{};,]|//)",
+ "patterns": [
+ {
+ "include": "#return-type-core"
+ }
+ ]
+ },
+ {
+ "name": "meta.return.type.tsx",
+ "begin": "(?<=\\))\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.tsx"
+ }
+ },
+ "end": "(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#return-type-core"
+ }
+ ]
+ }
+ ]
+ },
+ "return-type-core": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<=[:|&])(?=\\s*\\{)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type-object"
+ }
+ ]
+ },
+ {
+ "include": "#type-predicate-operator"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "arrow-return-type": {
+ "name": "meta.return.type.arrow.tsx",
+ "begin": "(?<=\\))\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.tsx"
+ }
+ },
+ "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
+ "patterns": [
+ {
+ "include": "#arrow-return-type-body"
+ }
+ ]
+ },
+ "possibly-arrow-return-type": {
+ "begin": "(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.arrow.tsx meta.return.type.arrow.tsx keyword.operator.type.annotation.tsx"
+ }
+ },
+ "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
+ "contentName": "meta.arrow.tsx meta.return.type.arrow.tsx",
+ "patterns": [
+ {
+ "include": "#arrow-return-type-body"
+ }
+ ]
+ },
+ "arrow-return-type-body": {
+ "patterns": [
+ {
+ "begin": "(?<=[:])(?=\\s*\\{)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type-object"
+ }
+ ]
+ },
+ {
+ "include": "#type-predicate-operator"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type-parameters": {
+ "name": "meta.type.parameters.tsx",
+ "begin": "(<)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.typeparameters.begin.tsx"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.typeparameters.end.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "name": "storage.modifier.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "name": "keyword.operator.assignment.tsx",
+ "match": "(=)(?!>)"
+ }
+ ]
+ },
+ "type-arguments": {
+ "name": "meta.type.parameters.tsx",
+ "begin": "\\<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.begin.tsx"
+ }
+ },
+ "end": "\\>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.end.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type-arguments-body"
+ }
+ ]
+ },
+ "type-arguments-body": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "captures": {
+ "0": {
+ "name": "keyword.operator.type.tsx"
+ }
+ }
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "type": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-string"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "include": "#type-builtin-literals"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#type-tuple"
+ },
+ {
+ "include": "#type-object"
+ },
+ {
+ "include": "#type-operators"
+ },
+ {
+ "include": "#type-conditional"
+ },
+ {
+ "include": "#type-fn-type-parameters"
+ },
+ {
+ "include": "#type-paren-or-function-parameters"
+ },
+ {
+ "include": "#type-function-return-type"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ }
+ }
+ },
+ {
+ "include": "#type-name"
+ }
+ ]
+ },
+ "type-primitive": {
+ "name": "support.type.primitive.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "type-builtin-literals": {
+ "name": "support.type.builtin.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "type-tuple": {
+ "name": "meta.type.tuple.tsx",
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.square.tsx"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.square.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.operator.rest.tsx",
+ "match": "\\.\\.\\."
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "entity.name.label.tsx"
+ },
+ "2": {
+ "name": "keyword.operator.optional.tsx"
+ },
+ "3": {
+ "name": "punctuation.separator.label.tsx"
+ }
+ }
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "type-object": {
+ "name": "meta.object.type.tsx",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#method-declaration"
+ },
+ {
+ "include": "#indexer-declaration"
+ },
+ {
+ "include": "#indexer-mapped-type-declaration"
+ },
+ {
+ "include": "#field-declaration"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "begin": "\\.\\.\\.",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.spread.tsx"
+ }
+ },
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type-conditional": {
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ }
+ },
+ "end": "(?<=:)",
+ "patterns": [
+ {
+ "begin": "\\?",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.tsx"
+ }
+ },
+ "end": ":",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "type-paren-or-function-parameters": {
+ "name": "meta.type.paren.cover.tsx",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|([\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ },
+ "2": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "3": {
+ "name": "entity.name.function.tsx variable.language.this.tsx"
+ },
+ "4": {
+ "name": "entity.name.function.tsx"
+ },
+ "5": {
+ "name": "keyword.operator.optional.tsx"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ },
+ "2": {
+ "name": "keyword.operator.rest.tsx"
+ },
+ "3": {
+ "name": "variable.parameter.tsx variable.language.this.tsx"
+ },
+ "4": {
+ "name": "variable.parameter.tsx"
+ },
+ "5": {
+ "name": "keyword.operator.optional.tsx"
+ }
+ }
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "name": "punctuation.separator.parameter.tsx",
+ "match": ","
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type-fn-type-parameters": {
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.type.constructor.tsx storage.modifier.tsx"
+ },
+ "2": {
+ "name": "meta.type.constructor.tsx keyword.control.new.tsx"
+ }
+ },
+ "end": "(?<=>)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameters"
+ }
+ ]
+ },
+ {
+ "name": "meta.type.constructor.tsx",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.tsx"
+ },
+ "2": {
+ "name": "keyword.control.new.tsx"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#function-parameters"
+ }
+ ]
+ },
+ {
+ "name": "meta.type.function.tsx",
+ "begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#function-parameters"
+ }
+ ]
+ }
+ ]
+ },
+ "type-function-return-type": {
+ "patterns": [
+ {
+ "name": "meta.type.function.return.tsx",
+ "begin": "(=>)(?=\\s*\\S)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.arrow.tsx"
+ }
+ },
+ "end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
+ "patterns": [
+ {
+ "include": "#type-function-return-type-core"
+ }
+ ]
+ },
+ {
+ "name": "meta.type.function.return.tsx",
+ "begin": "=>",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.function.arrow.tsx"
+ }
+ },
+ "end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#type-function-return-type-core"
+ }
+ ]
+ }
+ ]
+ },
+ "type-function-return-type-core": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<==>)(?=\\s*\\{)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type-object"
+ }
+ ]
+ },
+ {
+ "include": "#type-predicate-operator"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type-operators": {
+ "patterns": [
+ {
+ "include": "#typeof-operator"
+ },
+ {
+ "include": "#type-infer"
+ },
+ {
+ "begin": "([&|])(?=\\s*\\{)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.type.tsx"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type-object"
+ }
+ ]
+ },
+ {
+ "begin": "[&|]",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.type.tsx"
+ }
+ },
+ "end": "(?=\\S)"
+ },
+ {
+ "name": "keyword.operator.expression.keyof.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.operator.ternary.tsx",
+ "match": "(\\?|\\:)"
+ },
+ {
+ "name": "keyword.operator.expression.import.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
+ }
+ ]
+ },
+ "type-infer": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",
+ "name": "meta.type.infer.tsx",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.expression.infer.tsx"
+ },
+ "2": {
+ "name": "entity.name.type.tsx"
+ },
+ "3": {
+ "name": "keyword.operator.expression.extends.tsx"
+ }
+ }
+ }
+ ]
+ },
+ "type-predicate-operator": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.type.asserts.tsx"
+ },
+ "2": {
+ "name": "variable.parameter.tsx variable.language.this.tsx"
+ },
+ "3": {
+ "name": "variable.parameter.tsx"
+ },
+ "4": {
+ "name": "keyword.operator.expression.is.tsx"
+ }
+ }
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.type.asserts.tsx"
+ },
+ "2": {
+ "name": "variable.parameter.tsx variable.language.this.tsx"
+ },
+ "3": {
+ "name": "variable.parameter.tsx"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.type.asserts.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.operator.expression.is.tsx",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "type-name": {
+ "patterns": [
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.module.tsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.tsx"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.tsx"
+ },
+ "4": {
+ "name": "meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx"
+ }
+ },
+ "contentName": "meta.type.parameters.tsx",
+ "patterns": [
+ {
+ "include": "#type-arguments-body"
+ }
+ ]
+ },
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.type.tsx"
+ },
+ "2": {
+ "name": "meta.type.parameters.tsx punctuation.definition.typeparameters.begin.tsx"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "meta.type.parameters.tsx punctuation.definition.typeparameters.end.tsx"
+ }
+ },
+ "contentName": "meta.type.parameters.tsx",
+ "patterns": [
+ {
+ "include": "#type-arguments-body"
+ }
+ ]
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.module.tsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.tsx"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.tsx"
+ }
+ }
+ },
+ {
+ "name": "entity.name.type.tsx",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ }
+ ]
+ },
+ "punctuation-comma": {
+ "name": "punctuation.separator.comma.tsx",
+ "match": ","
+ },
+ "punctuation-semicolon": {
+ "name": "punctuation.terminator.statement.tsx",
+ "match": ";"
+ },
+ "punctuation-accessor": {
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.tsx"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.tsx"
+ }
+ }
+ },
+ "string": {
+ "patterns": [
+ {
+ "include": "#qstring-single"
+ },
+ {
+ "include": "#qstring-double"
+ },
+ {
+ "include": "#template"
+ }
+ ]
+ },
+ "qstring-double": {
+ "name": "string.quoted.double.tsx",
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.tsx"
+ }
+ },
+ "end": "(\")|((?:[^\\\\\\n])$)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.tsx"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "qstring-single": {
+ "name": "string.quoted.single.tsx",
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.tsx"
+ }
+ },
+ "end": "(\\')|((?:[^\\\\\\n])$)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.tsx"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "string-character-escape": {
+ "name": "constant.character.escape.tsx",
+ "match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
+ },
+ "template": {
+ "patterns": [
+ {
+ "include": "#template-call"
+ },
+ {
+ "contentName": "string.template.tsx",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.tagged-template.tsx"
+ },
+ "2": {
+ "name": "string.template.tsx punctuation.definition.string.template.begin.tsx"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "string.template.tsx punctuation.definition.string.template.end.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template-substitution-element"
+ },
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ }
+ ]
+ },
+ "template-call": {
+ "patterns": [
+ {
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
+ "end": "(?=`)",
+ "patterns": [
+ {
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
+ "end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
+ "patterns": [
+ {
+ "include": "#support-function-call-identifiers"
+ },
+ {
+ "name": "entity.name.function.tagged-template.tsx",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ },
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ },
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.tagged-template.tsx"
+ }
+ },
+ "end": "(?=`)",
+ "patterns": [
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ }
+ ]
+ },
+ "template-substitution-element": {
+ "name": "meta.template.expression.tsx",
+ "begin": "\\$\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.begin.tsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.end.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ],
+ "contentName": "meta.embedded.line.tsx"
+ },
+ "type-string": {
+ "patterns": [
+ {
+ "include": "#qstring-single"
+ },
+ {
+ "include": "#qstring-double"
+ },
+ {
+ "include": "#template-type"
+ }
+ ]
+ },
+ "template-type": {
+ "patterns": [
+ {
+ "include": "#template-call"
+ },
+ {
+ "contentName": "string.template.tsx",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.tagged-template.tsx"
+ },
+ "2": {
+ "name": "string.template.tsx punctuation.definition.string.template.begin.tsx"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "string.template.tsx punctuation.definition.string.template.end.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template-type-substitution-element"
+ },
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ }
+ ]
+ },
+ "template-type-substitution-element": {
+ "name": "meta.template.expression.tsx",
+ "begin": "\\$\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.begin.tsx"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.end.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ],
+ "contentName": "meta.embedded.line.tsx"
+ },
+ "regex": {
+ "patterns": [
+ {
+ "name": "string.regexp.tsx",
+ "begin": "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.tsx"
+ }
+ },
+ "end": "(/)([dgimsuy]*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.tsx"
+ },
+ "2": {
+ "name": "keyword.other.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "name": "string.regexp.tsx",
+ "begin": "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.tsx"
+ }
+ },
+ "end": "(/)([dgimsuy]*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.tsx"
+ },
+ "2": {
+ "name": "keyword.other.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ }
+ ]
+ },
+ "regexp": {
+ "patterns": [
+ {
+ "name": "keyword.control.anchor.regexp",
+ "match": "\\\\[bB]|\\^|\\$"
+ },
+ {
+ "match": "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>",
+ "captures": {
+ "0": {
+ "name": "keyword.other.back-reference.regexp"
+ },
+ "1": {
+ "name": "variable.other.regexp"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.quantifier.regexp",
+ "match": "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
+ },
+ {
+ "name": "keyword.operator.or.regexp",
+ "match": "\\|"
+ },
+ {
+ "name": "meta.group.assertion.regexp",
+ "begin": "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.regexp"
+ },
+ "2": {
+ "name": "punctuation.definition.group.assertion.regexp"
+ },
+ "3": {
+ "name": "meta.assertion.look-ahead.regexp"
+ },
+ "4": {
+ "name": "meta.assertion.negative-look-ahead.regexp"
+ },
+ "5": {
+ "name": "meta.assertion.look-behind.regexp"
+ },
+ "6": {
+ "name": "meta.assertion.negative-look-behind.regexp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "name": "meta.group.regexp",
+ "begin": "\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.regexp"
+ },
+ "1": {
+ "name": "punctuation.definition.group.no-capture.regexp"
+ },
+ "2": {
+ "name": "variable.other.regexp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "name": "constant.other.character-class.set.regexp",
+ "begin": "(\\[)(\\^)?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.regexp"
+ },
+ "2": {
+ "name": "keyword.operator.negation.regexp"
+ }
+ },
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "constant.other.character-class.range.regexp",
+ "match": "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",
+ "captures": {
+ "1": {
+ "name": "constant.character.numeric.regexp"
+ },
+ "2": {
+ "name": "constant.character.control.regexp"
+ },
+ "3": {
+ "name": "constant.character.escape.backslash.regexp"
+ },
+ "4": {
+ "name": "constant.character.numeric.regexp"
+ },
+ "5": {
+ "name": "constant.character.control.regexp"
+ },
+ "6": {
+ "name": "constant.character.escape.backslash.regexp"
+ }
+ }
+ },
+ {
+ "include": "#regex-character-class"
+ }
+ ]
+ },
+ {
+ "include": "#regex-character-class"
+ }
+ ]
+ },
+ "regex-character-class": {
+ "patterns": [
+ {
+ "name": "constant.other.character-class.regexp",
+ "match": "\\\\[wWsSdDtrnvf]|\\."
+ },
+ {
+ "name": "constant.character.numeric.regexp",
+ "match": "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"
+ },
+ {
+ "name": "constant.character.control.regexp",
+ "match": "\\\\c[A-Z]"
+ },
+ {
+ "name": "constant.character.escape.backslash.regexp",
+ "match": "\\\\."
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "name": "comment.block.documentation.tsx",
+ "begin": "/\\*\\*(?!/)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.tsx"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#docblock"
+ }
+ ]
+ },
+ {
+ "name": "comment.block.tsx",
+ "begin": "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.tsx"
+ },
+ "2": {
+ "name": "storage.type.internaldeclaration.tsx"
+ },
+ "3": {
+ "name": "punctuation.decorator.internaldeclaration.tsx"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.tsx"
+ }
+ }
+ },
+ {
+ "begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.tsx"
+ },
+ "2": {
+ "name": "comment.line.double-slash.tsx"
+ },
+ "3": {
+ "name": "punctuation.definition.comment.tsx"
+ },
+ "4": {
+ "name": "storage.type.internaldeclaration.tsx"
+ },
+ "5": {
+ "name": "punctuation.decorator.internaldeclaration.tsx"
+ }
+ },
+ "end": "(?=$)",
+ "contentName": "comment.line.double-slash.tsx"
+ }
+ ]
+ },
+ "single-line-comment-consuming-line-ending": {
+ "begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.tsx"
+ },
+ "2": {
+ "name": "comment.line.double-slash.tsx"
+ },
+ "3": {
+ "name": "punctuation.definition.comment.tsx"
+ },
+ "4": {
+ "name": "storage.type.internaldeclaration.tsx"
+ },
+ "5": {
+ "name": "punctuation.decorator.internaldeclaration.tsx"
+ }
+ },
+ "end": "(?=^)",
+ "contentName": "comment.line.double-slash.tsx"
+ },
+ "directives": {
+ "name": "comment.line.triple-slash.directive.tsx",
+ "begin": "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.tsx"
+ }
+ },
+ "end": "(?=$)",
+ "patterns": [
+ {
+ "name": "meta.tag.tsx",
+ "begin": "(<)(reference|amd-dependency|amd-module)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.directive.tsx"
+ },
+ "2": {
+ "name": "entity.name.tag.directive.tsx"
+ }
+ },
+ "end": "/>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.directive.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "name": "entity.other.attribute-name.directive.tsx",
+ "match": "path|types|no-default-lib|lib|name|resolution-mode"
+ },
+ {
+ "name": "keyword.operator.assignment.tsx",
+ "match": "="
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "docblock": {
+ "patterns": [
+ {
+ "match": "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "constant.language.access-type.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)author)\n\\s+\n(\n [^@\\s<>*/]\n (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n \\s*\n (<)\n ([^>\\s]+)\n (>)\n)?",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "4": {
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
+ },
+ "5": {
+ "name": "constant.other.email.link.underline.jsdoc"
+ },
+ "6": {
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+) # <that namepath>\n\\s+ (as) \\s+ # as\n((?:[^@\\s*/]|\\*[^/])+) # <this namepath>",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "4": {
+ "name": "keyword.operator.control.jsdoc"
+ },
+ "5": {
+ "name": "entity.name.type.instance.jsdoc"
+ }
+ }
+ },
+ {
+ "name": "meta.example.jsdoc",
+ "begin": "((@)example)\\s+",
+ "end": "(?=@|\\*/)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "patterns": [
+ {
+ "match": "^\\s\\*\\s+"
+ },
+ {
+ "contentName": "constant.other.description.jsdoc",
+ "begin": "\\G(<)caption(>)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.tag.inline.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
+ }
+ },
+ "end": "(</)caption(>)|(?=\\*/)",
+ "endCaptures": {
+ "0": {
+ "name": "entity.name.tag.inline.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "[^\\s@*](?:[^*]|\\*[^/])*",
+ "captures": {
+ "0": {
+ "name": "source.embedded.tsx"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "match": "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "constant.language.symbol-type.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)see)\n\\s+\n(?:\n # URL\n (\n (?=https?://)\n (?:[^\\s*]|\\*[^/])+\n )\n |\n # JSDoc namepath\n (\n (?!\n # Avoid matching bare URIs (also acceptable as links)\n https?://\n |\n # Avoid matching {@inline tags}; we match those below\n (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n {@(?:link|linkcode|linkplain|tutorial)\\b\n )\n # Matched namepath\n (?:[^@\\s*/]|\\*[^/])+\n )\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.link.underline.jsdoc"
+ },
+ "4": {
+ "name": "entity.name.type.instance.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n [A-Za-z_$] # First character: non-numeric word character\n [\\w$.\\[\\]]* # Rest of identifier\n (?: # Possible list of additional identifiers\n \\s* , \\s*\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n )*\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ }
+ }
+ },
+ {
+ "begin": "(?x)((@)template)\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ },
+ {
+ "name": "variable.other.jsdoc",
+ "match": "([A-Za-z_$][\\w$.\\[\\]]*)"
+ }
+ ]
+ },
+ {
+ "match": "(?x)\n(\n (@)\n (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ }
+ }
+ },
+ {
+ "begin": "((@)typedef)\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ },
+ {
+ "name": "entity.name.type.instance.jsdoc",
+ "match": "(?:[^@\\s*/]|\\*[^/])+"
+ }
+ ]
+ },
+ {
+ "begin": "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ },
+ {
+ "name": "variable.other.jsdoc",
+ "match": "([A-Za-z_$][\\w$.\\[\\]]*)"
+ },
+ {
+ "name": "variable.other.jsdoc",
+ "match": "(?x)\n(\\[)\\s*\n[\\w$]+\n(?:\n (?:\\[\\])? # Foo[ ].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [\\w$]+\n)*\n(?:\n \\s*\n (=) # [foo=bar] Default parameter value\n \\s*\n (\n # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\n (?>\n \"(?:(?:\\*(?!/))|(?:\\\\(?!\"))|[^*\\\\])*?\" | # [foo=\"bar\"] Double-quoted\n '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | # [foo='bar'] Single-quoted\n \\[ (?:(?:\\*(?!/))|[^*])*? \\] | # [foo=[1,2]] Array literal\n (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* # Everything else\n )*\n )\n)?\n\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.optional-value.begin.bracket.square.jsdoc"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.jsdoc"
+ },
+ "3": {
+ "name": "source.embedded.tsx"
+ },
+ "4": {
+ "name": "punctuation.definition.optional-value.end.bracket.square.jsdoc"
+ },
+ "5": {
+ "name": "invalid.illegal.syntax.jsdoc"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n(\n (@)\n (?:define|enum|exception|export|extends|lends|implements|modifies\n |namespace|private|protected|returns?|satisfies|suppress|this|throws|type\n |yields?)\n)\n\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ }
+ ]
+ },
+ {
+ "match": "(?x)\n(\n (@)\n (?:alias|augments|callback|constructs|emits|event|fires|exports?\n |extends|external|function|func|host|lends|listens|interface|memberof!?\n |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n (?:\n [^{}@\\s*] | \\*[^/]\n )+\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "entity.name.type.instance.jsdoc"
+ }
+ }
+ },
+ {
+ "contentName": "variable.other.jsdoc",
+ "begin": "((@)(?:default(?:value)?|license|version))\\s+(([''\"]))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ },
+ "4": {
+ "name": "punctuation.definition.string.begin.jsdoc"
+ }
+ },
+ "end": "(\\3)|(?=$|\\*/)",
+ "endCaptures": {
+ "0": {
+ "name": "variable.other.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.string.end.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ }
+ }
+ },
+ {
+ "name": "storage.type.class.jsdoc",
+ "match": "(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ }
+ },
+ {
+ "include": "#inline-tags"
+ },
+ {
+ "match": "((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ }
+ }
+ ]
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "begin": "{",
+ "end": "}|(?=\\*/)",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]|(?=\\*/)",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ }
+ ]
+ },
+ "inline-tags": {
+ "patterns": [
+ {
+ "name": "constant.other.description.jsdoc",
+ "match": "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.bracket.square.begin.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.square.end.jsdoc"
+ }
+ }
+ },
+ {
+ "name": "entity.name.type.instance.jsdoc",
+ "begin": "({)((@)(?:link(?:code|plain)?|tutorial))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.bracket.curly.begin.jsdoc"
+ },
+ "2": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "3": {
+ "name": "punctuation.definition.inline.tag.jsdoc"
+ }
+ },
+ "end": "}|(?=\\*/)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.bracket.curly.end.jsdoc"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?",
+ "captures": {
+ "1": {
+ "name": "variable.other.link.underline.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.separator.pipe.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?",
+ "captures": {
+ "1": {
+ "name": "variable.other.description.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.separator.pipe.jsdoc"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "jsdoctype": {
+ "patterns": [
+ {
+ "contentName": "entity.name.type.instance.jsdoc",
+ "begin": "\\G({)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.bracket.curly.begin.jsdoc"
+ }
+ },
+ "end": "((}))\\s*|(?=\\*/)",
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.curly.end.jsdoc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ }
+ ]
+ },
+ "jsx": {
+ "patterns": [
+ {
+ "include": "#jsx-tag-without-attributes-in-expression"
+ },
+ {
+ "include": "#jsx-tag-in-expression"
+ }
+ ]
+ },
+ "jsx-tag-without-attributes-in-expression": {
+ "begin": "(?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
+ "end": "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
+ "patterns": [
+ {
+ "include": "#jsx-tag-without-attributes"
+ }
+ ]
+ },
+ "jsx-tag-without-attributes": {
+ "name": "meta.tag.without-attributes.tsx",
+ "begin": "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
+ "end": "(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.tsx"
+ },
+ "2": {
+ "name": "entity.name.tag.namespace.tsx"
+ },
+ "3": {
+ "name": "punctuation.separator.namespace.tsx"
+ },
+ "4": {
+ "name": "entity.name.tag.tsx"
+ },
+ "5": {
+ "name": "support.class.component.tsx"
+ },
+ "6": {
+ "name": "punctuation.definition.tag.end.tsx"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.tsx"
+ },
+ "2": {
+ "name": "entity.name.tag.namespace.tsx"
+ },
+ "3": {
+ "name": "punctuation.separator.namespace.tsx"
+ },
+ "4": {
+ "name": "entity.name.tag.tsx"
+ },
+ "5": {
+ "name": "support.class.component.tsx"
+ },
+ "6": {
+ "name": "punctuation.definition.tag.end.tsx"
+ }
+ },
+ "contentName": "meta.jsx.children.tsx",
+ "patterns": [
+ {
+ "include": "#jsx-children"
+ }
+ ]
+ },
+ "jsx-tag-in-expression": {
+ "begin": "(?x)\n (?<!\\+\\+|--)(?<=[({\\[,?=>:*]|&&|\\|\\||\\?|\\*\\/|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^default|[^\\._$[:alnum:]]default|^yield|[^\\._$[:alnum:]]yield|^)\\s*\n (?!<\\s*[_$[:alpha:]][_$[:alnum:]]*((\\s+extends\\s+[^=>])|,)) # look ahead is not type parameter of arrow\n (?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
+ "end": "(?!(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
+ "patterns": [
+ {
+ "include": "#jsx-tag"
+ }
+ ]
+ },
+ "jsx-tag": {
+ "name": "meta.tag.tsx",
+ "begin": "(?=(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>))",
+ "end": "(/>)|(?:(</)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))?\\s*(>))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.tsx"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.begin.tsx"
+ },
+ "3": {
+ "name": "entity.name.tag.namespace.tsx"
+ },
+ "4": {
+ "name": "punctuation.separator.namespace.tsx"
+ },
+ "5": {
+ "name": "entity.name.tag.tsx"
+ },
+ "6": {
+ "name": "support.class.component.tsx"
+ },
+ "7": {
+ "name": "punctuation.definition.tag.end.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(<)\\s*(?:([_$[:alpha:]][-_$[:alnum:].]*)(?<!\\.|-)(:))?((?:[a-z][a-z0-9]*|([_$[:alpha:]][-_$[:alnum:].]*))(?<!\\.|-))(?=((<\\s*)|(\\s+))(?!\\?)|\\/?>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.tsx"
+ },
+ "2": {
+ "name": "entity.name.tag.namespace.tsx"
+ },
+ "3": {
+ "name": "punctuation.separator.namespace.tsx"
+ },
+ "4": {
+ "name": "entity.name.tag.tsx"
+ },
+ "5": {
+ "name": "support.class.component.tsx"
+ }
+ },
+ "end": "(?=[/]?>)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-arguments"
+ },
+ {
+ "include": "#jsx-tag-attributes"
+ }
+ ]
+ },
+ {
+ "begin": "(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.tsx"
+ }
+ },
+ "end": "(?=</)",
+ "contentName": "meta.jsx.children.tsx",
+ "patterns": [
+ {
+ "include": "#jsx-children"
+ }
+ ]
+ }
+ ]
+ },
+ "jsx-children": {
+ "patterns": [
+ {
+ "include": "#jsx-tag-without-attributes"
+ },
+ {
+ "include": "#jsx-tag"
+ },
+ {
+ "include": "#jsx-evaluated-code"
+ },
+ {
+ "include": "#jsx-entities"
+ }
+ ]
+ },
+ "jsx-evaluated-code": {
+ "contentName": "meta.embedded.expression.tsx",
+ "begin": "\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.tsx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "jsx-entities": {
+ "patterns": [
+ {
+ "name": "constant.character.entity.tsx",
+ "match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.tsx"
+ },
+ "3": {
+ "name": "punctuation.definition.entity.tsx"
+ }
+ }
+ }
+ ]
+ },
+ "jsx-tag-attributes": {
+ "name": "meta.tag.attributes.tsx",
+ "begin": "\\s+",
+ "end": "(?=[/]?>)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#jsx-tag-attribute-name"
+ },
+ {
+ "include": "#jsx-tag-attribute-assignment"
+ },
+ {
+ "include": "#jsx-string-double-quoted"
+ },
+ {
+ "include": "#jsx-string-single-quoted"
+ },
+ {
+ "include": "#jsx-evaluated-code"
+ },
+ {
+ "include": "#jsx-tag-attributes-illegal"
+ }
+ ]
+ },
+ "jsx-tag-attribute-name": {
+ "match": "(?x)\n \\s*\n (?:([_$[:alpha:]][-_$[:alnum:].]*)(:))?\n ([_$[:alpha:]][-_$[:alnum:]]*)\n (?=\\s|=|/?>|/\\*|//)",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.namespace.tsx"
+ },
+ "2": {
+ "name": "punctuation.separator.namespace.tsx"
+ },
+ "3": {
+ "name": "entity.other.attribute-name.tsx"
+ }
+ }
+ },
+ "jsx-tag-attribute-assignment": {
+ "name": "keyword.operator.assignment.tsx",
+ "match": "=(?=\\s*(?:'|\"|{|/\\*|//|\\n))"
+ },
+ "jsx-string-double-quoted": {
+ "name": "string.quoted.double.tsx",
+ "begin": "\"",
+ "end": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.tsx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#jsx-entities"
+ }
+ ]
+ },
+ "jsx-string-single-quoted": {
+ "name": "string.quoted.single.tsx",
+ "begin": "'",
+ "end": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.tsx"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.tsx"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#jsx-entities"
+ }
+ ]
+ },
+ "jsx-tag-attributes-illegal": {
+ "name": "invalid.illegal.attribute.tsx",
+ "match": "\\S+"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/turtle.tmLanguage.json b/node_modules/shiki/languages/turtle.tmLanguage.json
new file mode 100644
index 0000000..9abdbf3
--- /dev/null
+++ b/node_modules/shiki/languages/turtle.tmLanguage.json
@@ -0,0 +1,257 @@
+{
+ "name": "turtle",
+ "scopeName": "source.turtle",
+ "fileTypes": ["turtle", "ttl", "acl"],
+ "patterns": [
+ {
+ "include": "#rule-constraint"
+ },
+ {
+ "include": "#iriref"
+ },
+ {
+ "include": "#prefix"
+ },
+ {
+ "include": "#prefixed-name"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#special-predicate"
+ },
+ {
+ "include": "#literals"
+ },
+ {
+ "include": "#language-tag"
+ }
+ ],
+ "uuid": "230498230498sdfkj8909-34df-23dfs",
+ "repository": {
+ "prefix": {
+ "name": "keyword.operator.turtle",
+ "match": "(?i:@?base|@?prefix)\\s"
+ },
+ "iriref": {
+ "name": "entity.name.type.iriref.turtle",
+ "match": "<[^\\x20-\\x20<>\"{}|^`\\\\]*>"
+ },
+ "prefixed-name": {
+ "name": "constant.complex.turtle",
+ "match": "(\\w*:)(\\w*)",
+ "captures": {
+ "1": {
+ "name": "storage.type.PNAME_NS.turtle"
+ },
+ "2": {
+ "name": "support.variable.PN_LOCAL.turtle"
+ }
+ }
+ },
+ "comment": {
+ "name": "comment.line.number-sign.turtle",
+ "match": "#.*$"
+ },
+ "special-predicate": {
+ "name": "meta.specialPredicate.turtle",
+ "match": "\\s(a)\\s",
+ "captures": {
+ "1": {
+ "name": "keyword.control.turtle"
+ }
+ }
+ },
+ "literals": {
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#numeric"
+ },
+ {
+ "include": "#boolean"
+ }
+ ]
+ },
+ "string": {
+ "patterns": [
+ {
+ "include": "#triple-squote-string-literal"
+ },
+ {
+ "include": "#triple-dquote-string-literal"
+ },
+ {
+ "include": "#single-squote-string-literal"
+ },
+ {
+ "include": "#single-dquote-string-literal"
+ },
+ {
+ "include": "#triple-tick-string-literal"
+ }
+ ]
+ },
+ "single-squote-string-literal": {
+ "name": "string.quoted.single.turtle",
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.turtle"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.turtle"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.turtle"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "single-dquote-string-literal": {
+ "name": "string.quoted.double.turtle",
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.turtle"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.turtle"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "triple-squote-string-literal": {
+ "name": "string.quoted.triple.turtle",
+ "begin": "'''",
+ "end": "'''",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.turtle"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.turtle"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "triple-dquote-string-literal": {
+ "name": "string.quoted.triple.turtle",
+ "begin": "\"\"\"",
+ "end": "\"\"\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.turtle"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.turtle"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "triple-tick-string-literal": {
+ "name": "string.quoted.triple.turtle",
+ "begin": "```",
+ "end": "```",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.turtle"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.turtle"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "string-character-escape": {
+ "name": "constant.character.escape.turtle",
+ "match": "\\\\(x\\h{2}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
+ },
+ "numeric": {
+ "patterns": [
+ {
+ "include": "#integer"
+ }
+ ]
+ },
+ "integer": {
+ "name": "constant.numeric.turtle",
+ "match": "[+-]?(?:\\d+|[0-9]+\\.[0-9]*|\\.[0-9]+(?:[eE][+-]?\\d+)?)"
+ },
+ "boolean": {
+ "name": "constant.language.sparql",
+ "match": "\\b(?i:true|false)\\b"
+ },
+ "language-tag": {
+ "name": "meta.string-literal-language-tag.turtle",
+ "match": "@(\\w+)",
+ "captures": {
+ "1": {
+ "name": "entity.name.class.turtle"
+ }
+ }
+ },
+ "rule-constraint": {
+ "name": "meta.rule-constraint.turtle",
+ "begin": "(rule:content) (\"\"\")",
+ "beginCaptures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#prefixed-name"
+ }
+ ]
+ },
+ "2": {
+ "name": "string.quoted.triple.turtle"
+ }
+ },
+ "end": "\"\"\"",
+ "endCaptures": {
+ "0": {
+ "name": "string.quoted.triple.turtle"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.srs"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/twig.tmLanguage.json b/node_modules/shiki/languages/twig.tmLanguage.json
new file mode 100644
index 0000000..501020e
--- /dev/null
+++ b/node_modules/shiki/languages/twig.tmLanguage.json
@@ -0,0 +1,1372 @@
+{
+ "fileTypes": ["twig", "html.twig"],
+ "firstLineMatch": "<!(?i:DOCTYPE)|<(?i:html)|<\\?(?i:php)|\\{\\{|\\{%|\\{#",
+ "foldingStartMarker": "(?x)\n (<(?i:body|div|dl|fieldset|form|head|li|ol|script|select|style|table|tbody|tfoot|thead|tr|ul)\\b.*?>\n |<!--(?!.*--\\s*>)\n |^<!--\\ \\#tminclude\\ (?>.*?-->)$\n |\\{%\\s+(autoescape|block|embed|filter|for|if|macro|raw|sandbox|set|spaceless|trans|verbatim)\n )",
+ "foldingStopMarker": "(?x)\n (</(?i:body|div|dl|fieldset|form|head|li|ol|script|select|style|table|tbody|tfoot|thead|tr|ul)>\n |^(?!.*?<!--).*?--\\s*>\n |^<!--\\ end\\ tminclude\\ -->$\n |\\{%\\s+end(autoescape|block|embed|filter|for|if|macro|raw|sandbox|set|spaceless|trans|verbatim)\n )",
+ "keyEquivalent": "^~T",
+ "name": "twig",
+ "patterns": [
+ {
+ "begin": "(<)([a-zA-Z0-9:]++)(?=[^>]*></\\2>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": "(>(<)/)(\\2)(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "meta.scope.between-tag-pair.html"
+ },
+ "3": {
+ "name": "entity.name.tag.html"
+ },
+ "4": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "name": "meta.tag.any.html",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "begin": "(<\\?)(xml)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.xml.html"
+ }
+ },
+ "end": "(\\?>)",
+ "name": "meta.tag.preprocessor.xml.html",
+ "patterns": [
+ {
+ "include": "#tag-generic-attribute"
+ },
+ {
+ "include": "#string-double-quoted"
+ },
+ {
+ "include": "#string-single-quoted"
+ }
+ ]
+ },
+ {
+ "begin": "<!--",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.html"
+ }
+ },
+ "end": "--\\s*>",
+ "name": "comment.block.html",
+ "patterns": [
+ {
+ "match": "--",
+ "name": "invalid.illegal.bad-comments-or-CDATA.html"
+ },
+ {
+ "include": "#embedded-code"
+ }
+ ]
+ },
+ {
+ "begin": "<!",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "end": ">",
+ "name": "meta.tag.sgml.html",
+ "patterns": [
+ {
+ "begin": "(?i:DOCTYPE)",
+ "captures": {
+ "1": {
+ "name": "entity.name.tag.doctype.html"
+ }
+ },
+ "end": "(?=>)",
+ "name": "meta.tag.sgml.doctype.html",
+ "patterns": [
+ {
+ "match": "\"[^\">]*\"",
+ "name": "string.quoted.double.doctype.identifiers-and-DTDs.html"
+ }
+ ]
+ },
+ {
+ "begin": "\\[CDATA\\[",
+ "end": "]](?=>)",
+ "name": "constant.other.inline-data.html"
+ },
+ {
+ "match": "(\\s*)(?!--|>)\\S(\\s*)",
+ "name": "invalid.illegal.bad-comments-or-CDATA.html"
+ }
+ ]
+ },
+ {
+ "include": "#embedded-code"
+ },
+ {
+ "begin": "(?:^\\s+)?(<)((?i:style))\\b(?![^>]*/>)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.style.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "end": "(</)((?i:style))(>)(?:\\s*\\n)?",
+ "name": "source.css.embedded.html",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "end": "(?=</(?i:style))",
+ "patterns": [
+ {
+ "include": "#embedded-code"
+ },
+ {
+ "include": "source.css"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?:^\\s+)?(<)((?i:script))\\b(?![^>]*/>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.script.html"
+ }
+ },
+ "end": "(?<=</(script|SCRIPT))(>)(?:\\s*\\n)?",
+ "endCaptures": {
+ "2": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "name": "source.js.embedded.html",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<!</(?:script|SCRIPT))(>)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.script.html"
+ }
+ },
+ "end": "(</)((?i:script))",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.js"
+ }
+ },
+ "match": "(//).*?((?=</script)|$\\n?)",
+ "name": "comment.line.double-slash.js"
+ },
+ {
+ "begin": "/\\*",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.js"
+ }
+ },
+ "end": "\\*/|(?=</script)",
+ "name": "comment.block.js"
+ },
+ {
+ "include": "#php"
+ },
+ {
+ "include": "#twig-print-tag"
+ },
+ {
+ "include": "#twig-statement-tag"
+ },
+ {
+ "include": "#twig-comment-tag"
+ },
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?ix) # Enable free spacing mode, case insensitive\n # Make sure our opening js tag has word boundaries\n (?<=\\{\\%\\sjs\\s\\%\\}|\\{\\%\\sincludejs\\s\\%\\})\n ",
+ "comment": "Add JS support to set tags that use the pattern \"css\" in their name",
+ "end": "(?ix)(?=\\{\\%\\sendjs\\s\\%\\}|\\{\\%\\sendincludejs\\s\\%\\})",
+ "name": "source.js.embedded.twig",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ },
+ {
+ "begin": "(?ix) # Enable free spacing mode, case insensitive\n (?<=\\{\\%\\scss\\s\\%\\}|\\{\\%\\sincludecss\\s\\%\\}|\\{\\%\\sincludehirescss\\s\\%\\})\n ",
+ "comment": "Add CSS support to set tags that use the pattern \"css\" in their name",
+ "end": "(?ix)(?=\\{\\%\\sendcss\\s\\%\\}|\\{\\%\\sendincludecss\\s\\%\\}|\\{\\%\\sendincludehirescss\\s\\%\\})",
+ "name": "source.css.embedded.twig",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ },
+ {
+ "begin": "(</?)((?i:body|head|html)\\b)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.structure.any.html"
+ }
+ },
+ "end": "(>)",
+ "name": "meta.tag.structure.any.html",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "begin": "(</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.block.any.html"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.block.any.html",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "begin": "(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.inline.any.html"
+ }
+ },
+ "end": "((?: ?/)?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.inline.any.html",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "begin": "(</?)([a-zA-Z0-9:]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.other.html"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "name": "meta.tag.other.html",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "include": "#entities"
+ },
+ {
+ "match": "<>",
+ "name": "invalid.illegal.incomplete.html"
+ },
+ {
+ "match": "<",
+ "name": "invalid.illegal.bad-angle-bracket.html"
+ },
+ {
+ "include": "#twig-print-tag"
+ },
+ {
+ "include": "#twig-statement-tag"
+ },
+ {
+ "include": "#twig-comment-tag"
+ }
+ ],
+ "repository": {
+ "embedded-code": {
+ "patterns": [
+ {
+ "include": "#ruby"
+ },
+ {
+ "include": "#php"
+ },
+ {
+ "include": "#twig-print-tag"
+ },
+ {
+ "include": "#twig-statement-tag"
+ },
+ {
+ "include": "#twig-comment-tag"
+ },
+ {
+ "include": "#python"
+ }
+ ]
+ },
+ "entities": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.html"
+ },
+ "3": {
+ "name": "punctuation.definition.entity.html"
+ }
+ },
+ "match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
+ "name": "constant.character.entity.html"
+ },
+ {
+ "match": "&",
+ "name": "invalid.illegal.bad-ampersand.html"
+ }
+ ]
+ },
+ "twig-print-tag": {
+ "begin": "\\{\\{-?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.tag.twig"
+ }
+ },
+ "end": "-?\\}\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.tag.twig"
+ }
+ },
+ "name": "meta.tag.template.value.twig",
+ "patterns": [
+ {
+ "include": "#twig-constants"
+ },
+ {
+ "include": "#twig-operators"
+ },
+ {
+ "include": "#twig-functions-warg"
+ },
+ {
+ "include": "#twig-functions"
+ },
+ {
+ "include": "#twig-macros"
+ },
+ {
+ "include": "#twig-objects"
+ },
+ {
+ "include": "#twig-properties"
+ },
+ {
+ "include": "#twig-filters-warg"
+ },
+ {
+ "include": "#twig-filters"
+ },
+ {
+ "include": "#twig-filters-warg-ud"
+ },
+ {
+ "include": "#twig-filters-ud"
+ },
+ {
+ "include": "#twig-strings"
+ },
+ {
+ "include": "#twig-arrays"
+ },
+ {
+ "include": "#twig-hashes"
+ }
+ ]
+ },
+ "twig-statement-tag": {
+ "begin": "\\{%-?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.tag.twig"
+ }
+ },
+ "end": "-?%\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.tag.twig"
+ }
+ },
+ "name": "meta.tag.template.block.twig",
+ "patterns": [
+ {
+ "include": "#twig-constants"
+ },
+ {
+ "include": "#twig-keywords"
+ },
+ {
+ "include": "#twig-operators"
+ },
+ {
+ "include": "#twig-functions-warg"
+ },
+ {
+ "include": "#twig-functions"
+ },
+ {
+ "include": "#twig-macros"
+ },
+ {
+ "include": "#twig-filters-warg"
+ },
+ {
+ "include": "#twig-filters"
+ },
+ {
+ "include": "#twig-filters-warg-ud"
+ },
+ {
+ "include": "#twig-filters-ud"
+ },
+ {
+ "include": "#twig-objects"
+ },
+ {
+ "include": "#twig-properties"
+ },
+ {
+ "include": "#twig-strings"
+ },
+ {
+ "include": "#twig-arrays"
+ },
+ {
+ "include": "#twig-hashes"
+ }
+ ]
+ },
+ "twig-comment-tag": {
+ "begin": "\\{#-?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.twig"
+ }
+ },
+ "end": "-?#\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.twig"
+ }
+ },
+ "name": "comment.block.twig"
+ },
+ "twig-constants": {
+ "patterns": [
+ {
+ "match": "(?i)(?<=[\\s\\[\\(\\{:,])(?:true|false|null|none)(?=[\\s\\)\\]\\}\\,])",
+ "name": "constant.language.twig"
+ },
+ {
+ "match": "(?<=[\\s\\[\\(\\{:,]|\\.\\.|\\*\\*)[0-9]+(?:\\.[0-9]+)?(?=[\\s\\)\\]\\}\\,]|\\.\\.|\\*\\*)",
+ "name": "constant.numeric.twig"
+ }
+ ]
+ },
+ "twig-operators": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.arithmetic.twig"
+ }
+ },
+ "match": "(?<=\\s)(\\+|-|//?|%|\\*\\*?)(?=\\s)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.twig"
+ }
+ },
+ "match": "(?<=\\s)(=|~)(?=\\s)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.bitwise.twig"
+ }
+ },
+ "match": "(?<=\\s)(b-(?:and|or|xor))(?=\\s)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.comparison.twig"
+ }
+ },
+ "match": "(?<=\\s)((?:!|=)=|<=?|>=?|(?:not )?in|is(?: not)?|(?:ends|starts) with|matches)(?=\\s)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.operator.logical.twig"
+ }
+ },
+ "match": "(?<=\\s)(\\?|:|and|not|or)(?=\\s)"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "keyword.operator.other.twig"
+ }
+ },
+ "match": "(?<=[a-zA-Z0-9_\\x{7f}-\\x{ff}\\]\\)'\"])\\.\\.(?=[a-zA-Z0-9_\\x{7f}-\\x{ff}'\"])"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "keyword.operator.other.twig"
+ }
+ },
+ "match": "(?<=[a-zA-Z0-9_\\x{7f}-\\x{ff}\\]\\}\\)'\"])\\|(?=[a-zA-Z_\\x{7f}-\\x{ff}])"
+ }
+ ]
+ },
+ "twig-objects": {
+ "captures": {
+ "1": {
+ "name": "variable.other.twig"
+ }
+ },
+ "match": "(?<=[\\s\\{\\[\\(:,])([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)(?=[\\s\\}\\[\\]\\(\\)\\.\\|,:])"
+ },
+ "twig-properties": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.property.twig"
+ },
+ "2": {
+ "name": "variable.other.property.twig"
+ }
+ },
+ "match": "(?x)\n (?<=[a-zA-Z0-9_\\x{7f}-\\x{ff}])\n (\\.)([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)\n (?=[\\.\\s\\|\\[\\)\\]\\}:,])\n "
+ },
+ {
+ "begin": "(?x)\n (?<=[a-zA-Z0-9_\\x{7f}-\\x{ff}])\n (\\.)([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)\n (\\()\n ",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.property.twig"
+ },
+ "2": {
+ "name": "variable.other.property.twig"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.begin.twig"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.twig"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#twig-constants"
+ },
+ {
+ "include": "#twig-functions-warg"
+ },
+ {
+ "include": "#twig-functions"
+ },
+ {
+ "include": "#twig-macros"
+ },
+ {
+ "include": "#twig-objects"
+ },
+ {
+ "include": "#twig-properties"
+ },
+ {
+ "include": "#twig-filters-warg"
+ },
+ {
+ "include": "#twig-filters"
+ },
+ {
+ "include": "#twig-filters-warg-ud"
+ },
+ {
+ "include": "#twig-filters-ud"
+ },
+ {
+ "include": "#twig-strings"
+ },
+ {
+ "include": "#twig-arrays"
+ }
+ ],
+ "contentName": "meta.function.arguments.twig"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.section.array.begin.twig"
+ },
+ "2": {
+ "name": "variable.other.property.twig"
+ },
+ "3": {
+ "name": "punctuation.section.array.end.twig"
+ },
+ "4": {
+ "name": "punctuation.section.array.begin.twig"
+ },
+ "5": {
+ "name": "variable.other.property.twig"
+ },
+ "6": {
+ "name": "punctuation.section.array.end.twig"
+ },
+ "7": {
+ "name": "punctuation.section.array.begin.twig"
+ },
+ "8": {
+ "name": "variable.other.property.twig"
+ },
+ "9": {
+ "name": "punctuation.section.array.end.twig"
+ }
+ },
+ "match": "(?x)\n (?<=[a-zA-Z0-9_\\x{7f}-\\x{ff}\\]])\n (?:\n (\\[)('[a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*')(\\])\n |(\\[)(\"[a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*\")(\\])\n |(\\[)([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)(\\])\n )\n "
+ }
+ ]
+ },
+ "twig-strings": {
+ "patterns": [
+ {
+ "begin": "(?:(?<!\\\\)|(?<=\\\\\\\\))'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.twig"
+ }
+ },
+ "end": "(?:(?<!\\\\)|(?<=\\\\\\\\))'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.twig"
+ }
+ },
+ "name": "string.quoted.single.twig"
+ },
+ {
+ "begin": "(?:(?<!\\\\)|(?<=\\\\\\\\))\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.twig"
+ }
+ },
+ "end": "(?:(?<!\\\\)|(?<=\\\\\\\\))\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.twig"
+ }
+ },
+ "name": "string.quoted.double.twig"
+ }
+ ]
+ },
+ "twig-arrays": {
+ "begin": "(?<=[\\s\\(\\{\\[:,])\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.array.begin.twig"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.array.end.twig"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#twig-arrays"
+ },
+ {
+ "include": "#twig-hashes"
+ },
+ {
+ "include": "#twig-constants"
+ },
+ {
+ "include": "#twig-strings"
+ },
+ {
+ "include": "#twig-functions-warg"
+ },
+ {
+ "include": "#twig-functions"
+ },
+ {
+ "include": "#twig-macros"
+ },
+ {
+ "include": "#twig-objects"
+ },
+ {
+ "include": "#twig-properties"
+ },
+ {
+ "include": "#twig-filters-warg"
+ },
+ {
+ "include": "#twig-filters"
+ },
+ {
+ "include": "#twig-filters-warg-ud"
+ },
+ {
+ "include": "#twig-filters-ud"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.object.twig"
+ }
+ ],
+ "name": "meta.array.twig"
+ },
+ "twig-hashes": {
+ "begin": "(?<=[\\s\\(\\{\\[:,])\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.hash.begin.twig"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.hash.end.twig"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#twig-hashes"
+ },
+ {
+ "include": "#twig-arrays"
+ },
+ {
+ "include": "#twig-constants"
+ },
+ {
+ "include": "#twig-strings"
+ },
+ {
+ "include": "#twig-functions-warg"
+ },
+ {
+ "include": "#twig-functions"
+ },
+ {
+ "include": "#twig-macros"
+ },
+ {
+ "include": "#twig-objects"
+ },
+ {
+ "include": "#twig-properties"
+ },
+ {
+ "include": "#twig-filters-warg"
+ },
+ {
+ "include": "#twig-filters"
+ },
+ {
+ "include": "#twig-filters-warg-ud"
+ },
+ {
+ "include": "#twig-filters-ud"
+ },
+ {
+ "match": ":",
+ "name": "punctuation.separator.key-value.twig"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.object.twig"
+ }
+ ],
+ "name": "meta.hash.twig"
+ },
+ "twig-keywords": {
+ "match": "(?<=\\s)((?:end)?(?:autoescape|block|embed|filter|for|if|macro|raw|sandbox|set|spaceless|trans|verbatim)|as|do|else|elseif|extends|flush|from|ignore missing|import|include|only|use|with)(?=\\s)",
+ "name": "keyword.control.twig"
+ },
+ "twig-functions-warg": {
+ "begin": "(?<=[\\s\\(\\[\\{:,])(attribute|block|constant|cycle|date|divisible by|dump|include|max|min|parent|random|range|same as|source|template_from_string)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.twig"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.twig"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.twig"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#twig-constants"
+ },
+ {
+ "include": "#twig-functions-warg"
+ },
+ {
+ "include": "#twig-functions"
+ },
+ {
+ "include": "#twig-macros"
+ },
+ {
+ "include": "#twig-objects"
+ },
+ {
+ "include": "#twig-properties"
+ },
+ {
+ "include": "#twig-filters-warg"
+ },
+ {
+ "include": "#twig-filters"
+ },
+ {
+ "include": "#twig-filters-warg-ud"
+ },
+ {
+ "include": "#twig-filters-ud"
+ },
+ {
+ "include": "#twig-strings"
+ },
+ {
+ "include": "#twig-arrays"
+ }
+ ],
+ "contentName": "meta.function.arguments.twig"
+ },
+ "twig-functions": {
+ "captures": {
+ "1": {
+ "name": "support.function.twig"
+ }
+ },
+ "match": "(?<=is\\s)(defined|empty|even|iterable|odd)"
+ },
+ "twig-macros": {
+ "begin": "(?x)\n (?<=[\\s\\(\\[\\{:,])\n ([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)\n (?:\n (\\.)([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)\n )?\n (\\()\n ",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.function-call.twig"
+ },
+ "2": {
+ "name": "punctuation.separator.property.twig"
+ },
+ "3": {
+ "name": "variable.other.property.twig"
+ },
+ "4": {
+ "name": "punctuation.definition.parameters.begin.twig"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.twig"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#twig-constants"
+ },
+ {
+ "include": "#twig-operators"
+ },
+ {
+ "include": "#twig-functions-warg"
+ },
+ {
+ "include": "#twig-functions"
+ },
+ {
+ "include": "#twig-macros"
+ },
+ {
+ "include": "#twig-objects"
+ },
+ {
+ "include": "#twig-properties"
+ },
+ {
+ "include": "#twig-filters-warg"
+ },
+ {
+ "include": "#twig-filters"
+ },
+ {
+ "include": "#twig-filters-warg-ud"
+ },
+ {
+ "include": "#twig-filters-ud"
+ },
+ {
+ "include": "#twig-strings"
+ },
+ {
+ "include": "#twig-arrays"
+ },
+ {
+ "include": "#twig-hashes"
+ }
+ ],
+ "contentName": "meta.function.arguments.twig"
+ },
+ "twig-filters-warg": {
+ "begin": "(?<=(?:[a-zA-Z0-9_\\x{7f}-\\x{ff}\\]\\)\\'\\\"]\\|)|\\{%\\sfilter\\s)(batch|convert_encoding|date|date_modify|default|e(?:scape)?|format|join|merge|number_format|replace|round|slice|split|trim)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "support.function.twig"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.twig"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.twig"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#twig-constants"
+ },
+ {
+ "include": "#twig-functions-warg"
+ },
+ {
+ "include": "#twig-functions"
+ },
+ {
+ "include": "#twig-macros"
+ },
+ {
+ "include": "#twig-objects"
+ },
+ {
+ "include": "#twig-properties"
+ },
+ {
+ "include": "#twig-filters-warg"
+ },
+ {
+ "include": "#twig-filters"
+ },
+ {
+ "include": "#twig-filters-warg-ud"
+ },
+ {
+ "include": "#twig-filters-ud"
+ },
+ {
+ "include": "#twig-strings"
+ },
+ {
+ "include": "#twig-arrays"
+ },
+ {
+ "include": "#twig-hashes"
+ }
+ ],
+ "contentName": "meta.function.arguments.twig"
+ },
+ "twig-filters": {
+ "captures": {
+ "1": {
+ "name": "support.function.twig"
+ }
+ },
+ "match": "(?<=(?:[a-zA-Z0-9_\\x{7f}-\\x{ff}\\]\\)\\'\\\"]\\|)|\\{%\\sfilter\\s)(abs|capitalize|e(?:scape)?|first|join|(?:json|url)_encode|keys|last|length|lower|nl2br|number_format|raw|reverse|round|sort|striptags|title|trim|upper)(?=[\\s\\|\\]\\}\\):,]|\\.\\.|\\*\\*)"
+ },
+ "twig-filters-warg-ud": {
+ "begin": "(?<=(?:[a-zA-Z0-9_\\x{7f}-\\x{ff}\\]\\)\\'\\\"]\\|)|\\{%\\sfilter\\s)([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.function-call.other.twig"
+ },
+ "2": {
+ "name": "punctuation.definition.parameters.begin.twig"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.twig"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#twig-constants"
+ },
+ {
+ "include": "#twig-functions-warg"
+ },
+ {
+ "include": "#twig-functions"
+ },
+ {
+ "include": "#twig-macros"
+ },
+ {
+ "include": "#twig-objects"
+ },
+ {
+ "include": "#twig-properties"
+ },
+ {
+ "include": "#twig-filters-warg"
+ },
+ {
+ "include": "#twig-filters"
+ },
+ {
+ "include": "#twig-filters-warg-ud"
+ },
+ {
+ "include": "#twig-filters-ud"
+ },
+ {
+ "include": "#twig-strings"
+ },
+ {
+ "include": "#twig-arrays"
+ },
+ {
+ "include": "#twig-hashes"
+ }
+ ],
+ "contentName": "meta.function.arguments.twig"
+ },
+ "twig-filters-ud": {
+ "captures": {
+ "1": {
+ "name": "meta.function-call.other.twig"
+ }
+ },
+ "match": "(?<=(?:[a-zA-Z0-9_\\x{7f}-\\x{ff}\\]\\)\\'\\\"]\\|)|\\{%\\sfilter\\s)([a-zA-Z_\\x{7f}-\\x{ff}][a-zA-Z0-9_\\x{7f}-\\x{ff}]*)"
+ },
+ "php": {
+ "begin": "(?=(^\\s*)?<\\?)",
+ "end": "(?!(^\\s*)?<\\?)",
+ "patterns": [
+ {
+ "include": "source.php"
+ }
+ ]
+ },
+ "python": {
+ "begin": "(?:^\\s*)<\\?python(?!.*\\?>)",
+ "end": "\\?>(?:\\s*$\\n)?",
+ "name": "source.python.embedded.html",
+ "patterns": [
+ {
+ "include": "source.python"
+ }
+ ]
+ },
+ "ruby": {
+ "patterns": [
+ {
+ "begin": "<%+#",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.erb"
+ }
+ },
+ "end": "%>",
+ "name": "comment.block.erb"
+ },
+ {
+ "begin": "<%+(?!>)=?",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.embedded.ruby"
+ }
+ },
+ "end": "-?%>",
+ "name": "source.ruby.embedded.html",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.ruby"
+ }
+ },
+ "match": "(#).*?(?=-?%>)",
+ "name": "comment.line.number-sign.ruby"
+ },
+ {
+ "include": "source.ruby"
+ }
+ ]
+ },
+ {
+ "begin": "<\\?r(?!>)=?",
+ "captures": {
+ "0": {
+ "name": "punctuation.section.embedded.ruby.nitro"
+ }
+ },
+ "end": "-?\\?>",
+ "name": "source.ruby.nitro.embedded.html",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.ruby.nitro"
+ }
+ },
+ "match": "(#).*?(?=-?\\?>)",
+ "name": "comment.line.number-sign.ruby.nitro"
+ },
+ {
+ "include": "source.ruby"
+ }
+ ]
+ }
+ ]
+ },
+ "string-double-quoted": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ }
+ },
+ "name": "string.quoted.double.html",
+ "patterns": [
+ {
+ "include": "#embedded-code"
+ },
+ {
+ "include": "#entities"
+ }
+ ]
+ },
+ "string-single-quoted": {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ }
+ },
+ "name": "string.quoted.single.html",
+ "patterns": [
+ {
+ "include": "#embedded-code"
+ },
+ {
+ "include": "#entities"
+ }
+ ]
+ },
+ "tag-generic-attribute": {
+ "match": "\\b([a-zA-Z\\-:]+)",
+ "name": "entity.other.attribute-name.html"
+ },
+ "tag-id-attribute": {
+ "begin": "\\b(id)\\b\\s*(=)",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.id.html"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.html"
+ }
+ },
+ "end": "(?<='|\")",
+ "name": "meta.attribute-with-value.id.html",
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "contentName": "meta.toc-list.id.html",
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ }
+ },
+ "name": "string.quoted.double.html",
+ "patterns": [
+ {
+ "include": "#embedded-code"
+ },
+ {
+ "include": "#entities"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "contentName": "meta.toc-list.id.html",
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ }
+ },
+ "name": "string.quoted.single.html",
+ "patterns": [
+ {
+ "include": "#embedded-code"
+ },
+ {
+ "include": "#entities"
+ }
+ ]
+ }
+ ]
+ },
+ "tag-stuff": {
+ "patterns": [
+ {
+ "include": "#tag-id-attribute"
+ },
+ {
+ "include": "#tag-generic-attribute"
+ },
+ {
+ "include": "#string-double-quoted"
+ },
+ {
+ "include": "#string-single-quoted"
+ },
+ {
+ "include": "#embedded-code"
+ }
+ ]
+ }
+ },
+ "scopeName": "text.html.twig",
+ "uuid": "C220B028-86FF-44CB-8A59-27937FC83730"
+}
diff --git a/node_modules/shiki/languages/typescript.tmLanguage.json b/node_modules/shiki/languages/typescript.tmLanguage.json
new file mode 100644
index 0000000..2c6a352
--- /dev/null
+++ b/node_modules/shiki/languages/typescript.tmLanguage.json
@@ -0,0 +1,5672 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/microsoft/TypeScript-TmLanguage/blob/master/TypeScript.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/microsoft/TypeScript-TmLanguage/commit/e0aefd8205cc9d1bc7859cc5babbee0d833dca0f",
+ "name": "typescript",
+ "scopeName": "source.ts",
+ "patterns": [
+ {
+ "include": "#directives"
+ },
+ {
+ "include": "#statements"
+ },
+ {
+ "include": "#shebang"
+ }
+ ],
+ "repository": {
+ "shebang": {
+ "name": "comment.line.shebang.ts",
+ "match": "\\A(#!).*(?=$)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.ts"
+ }
+ }
+ },
+ "statements": {
+ "patterns": [
+ {
+ "include": "#declaration"
+ },
+ {
+ "include": "#control-statement"
+ },
+ {
+ "include": "#after-operator-block-as-object-literal"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#label"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "declaration": {
+ "patterns": [
+ {
+ "include": "#decorator"
+ },
+ {
+ "include": "#var-expr"
+ },
+ {
+ "include": "#function-declaration"
+ },
+ {
+ "include": "#class-declaration"
+ },
+ {
+ "include": "#interface-declaration"
+ },
+ {
+ "include": "#enum-declaration"
+ },
+ {
+ "include": "#namespace-declaration"
+ },
+ {
+ "include": "#type-alias-declaration"
+ },
+ {
+ "include": "#import-equals-declaration"
+ },
+ {
+ "include": "#import-declaration"
+ },
+ {
+ "include": "#export-declaration"
+ },
+ {
+ "name": "storage.modifier.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(declare|export)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "control-statement": {
+ "patterns": [
+ {
+ "include": "#switch-statement"
+ },
+ {
+ "include": "#for-loop"
+ },
+ {
+ "name": "keyword.control.trycatch.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(catch|finally|throw|try)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|goto)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.loop.ts"
+ },
+ "2": {
+ "name": "entity.name.label.ts"
+ }
+ }
+ },
+ {
+ "name": "keyword.control.loop.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(break|continue|do|goto|while)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(return)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.flow.ts"
+ }
+ },
+ "end": "(?=[;}]|$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "keyword.control.switch.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default|switch)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "include": "#if-statement"
+ },
+ {
+ "name": "keyword.control.conditional.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(else|if)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.control.with.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(with)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.control.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(package)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.other.debugger.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(debugger)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "label": {
+ "patterns": [
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)(?=\\s*\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.label.ts"
+ },
+ "2": {
+ "name": "punctuation.separator.label.ts"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#decl-block"
+ }
+ ]
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "entity.name.label.ts"
+ },
+ "2": {
+ "name": "punctuation.separator.label.ts"
+ }
+ }
+ }
+ ]
+ },
+ "expression": {
+ "patterns": [
+ {
+ "include": "#expressionWithoutIdentifiers"
+ },
+ {
+ "include": "#identifiers"
+ },
+ {
+ "include": "#expressionPunctuations"
+ }
+ ]
+ },
+ "expressionWithoutIdentifiers": {
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#function-expression"
+ },
+ {
+ "include": "#class-expression"
+ },
+ {
+ "include": "#arrow-function"
+ },
+ {
+ "include": "#paren-expression-possibly-arrow"
+ },
+ {
+ "include": "#cast"
+ },
+ {
+ "include": "#ternary-expression"
+ },
+ {
+ "include": "#new-expr"
+ },
+ {
+ "include": "#instanceof-expr"
+ },
+ {
+ "include": "#object-literal"
+ },
+ {
+ "include": "#expression-operators"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#support-objects"
+ },
+ {
+ "include": "#paren-expression"
+ }
+ ]
+ },
+ "expressionPunctuations": {
+ "patterns": [
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-accessor"
+ }
+ ]
+ },
+ "decorator": {
+ "name": "meta.decorator.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))\\@",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.decorator.ts"
+ }
+ },
+ "end": "(?=\\s)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "var-expr": {
+ "patterns": [
+ {
+ "name": "meta.var.expr.ts",
+ "begin": "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
+ "end": "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))|((?<!^let|[^\\._$[:alnum:]]let|^var|[^\\._$[:alnum:]]var)(?=\\s*$)))",
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(var|let)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "storage.type.ts"
+ }
+ },
+ "end": "(?=\\S)"
+ },
+ {
+ "include": "#destructuring-variable"
+ },
+ {
+ "include": "#var-single-variable"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(,)\\s*(?=$|\\/\\/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.comma.ts"
+ }
+ },
+ "end": "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#destructuring-variable"
+ },
+ {
+ "include": "#var-single-variable"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ {
+ "name": "meta.var.expr.ts",
+ "begin": "(?=(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "storage.type.ts"
+ }
+ },
+ "end": "(?!(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))((?=^|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))|((?<!^const|[^\\._$[:alnum:]]const)(?=\\s*$)))",
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(const(?!\\s+enum\\b))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "storage.type.ts"
+ }
+ },
+ "end": "(?=\\S)"
+ },
+ {
+ "include": "#destructuring-const"
+ },
+ {
+ "include": "#var-single-const"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(,)\\s*(?=$|\\/\\/)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.comma.ts"
+ }
+ },
+ "end": "(?<!,)(((?==|;|}|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|^\\s*$))|((?<=\\S)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#destructuring-const"
+ },
+ {
+ "include": "#var-single-const"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ ]
+ },
+ "var-single-variable": {
+ "patterns": [
+ {
+ "name": "meta.var-single-variable.expr.ts",
+ "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(\\!)?(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.ts entity.name.function.ts"
+ },
+ "2": {
+ "name": "keyword.operator.definiteassignment.ts"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ },
+ {
+ "name": "meta.var-single-variable.expr.ts",
+ "begin": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])(\\!)?",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.ts variable.other.constant.ts"
+ },
+ "2": {
+ "name": "keyword.operator.definiteassignment.ts"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ },
+ {
+ "name": "meta.var-single-variable.expr.ts",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)(\\!)?",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.ts variable.other.readwrite.ts"
+ },
+ "2": {
+ "name": "keyword.operator.definiteassignment.ts"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ }
+ ]
+ },
+ "var-single-const": {
+ "patterns": [
+ {
+ "name": "meta.var-single-variable.expr.ts",
+ "begin": "(?x)([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.ts variable.other.constant.ts entity.name.function.ts"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ },
+ {
+ "name": "meta.var-single-variable.expr.ts",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.definition.variable.ts variable.other.constant.ts"
+ }
+ },
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+)|(;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "patterns": [
+ {
+ "include": "#var-single-variable-type-annotation"
+ }
+ ]
+ }
+ ]
+ },
+ "var-single-variable-type-annotation": {
+ "patterns": [
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ "destructuring-variable": {
+ "patterns": [
+ {
+ "name": "meta.object-binding-pattern-variable.ts",
+ "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#object-binding-pattern"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "name": "meta.array-binding-pattern-variable.ts",
+ "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#array-binding-pattern"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "destructuring-const": {
+ "patterns": [
+ {
+ "name": "meta.object-binding-pattern-variable.ts",
+ "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\{)",
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#object-binding-pattern-const"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "name": "meta.array-binding-pattern-variable.ts",
+ "begin": "(?<!=|:|^of|[^\\._$[:alnum:]]of|^in|[^\\._$[:alnum:]]in)\\s*(?=\\[)",
+ "end": "(?=$|^|[;,=}]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#array-binding-pattern-const"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#comment"
+ }
+ ]
+ }
+ ]
+ },
+ "object-binding-element": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#object-binding-element-propertyName"
+ },
+ {
+ "include": "#binding-element"
+ }
+ ]
+ },
+ {
+ "include": "#object-binding-pattern"
+ },
+ {
+ "include": "#destructuring-variable-rest"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "object-binding-element-const": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#object-binding-element-propertyName"
+ },
+ {
+ "include": "#binding-element-const"
+ }
+ ]
+ },
+ {
+ "include": "#object-binding-pattern-const"
+ },
+ {
+ "include": "#destructuring-variable-rest-const"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "object-binding-element-propertyName": {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
+ "end": "(:)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.destructuring.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "name": "variable.object.property.ts",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ },
+ "binding-element": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#object-binding-pattern"
+ },
+ {
+ "include": "#array-binding-pattern"
+ },
+ {
+ "include": "#destructuring-variable-rest"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "binding-element-const": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#object-binding-pattern-const"
+ },
+ {
+ "include": "#array-binding-pattern-const"
+ },
+ {
+ "include": "#destructuring-variable-rest-const"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "destructuring-variable-rest": {
+ "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "2": {
+ "name": "meta.definition.variable.ts variable.other.readwrite.ts"
+ }
+ }
+ },
+ "destructuring-variable-rest-const": {
+ "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "2": {
+ "name": "meta.definition.variable.ts variable.other.constant.ts"
+ }
+ }
+ },
+ "object-binding-pattern": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.object.ts"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.object.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-binding-element"
+ }
+ ]
+ },
+ "object-binding-pattern-const": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.object.ts"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.object.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-binding-element-const"
+ }
+ ]
+ },
+ "array-binding-pattern": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.array.ts"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.array.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#binding-element"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "array-binding-pattern-const": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.array.ts"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.array.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#binding-element-const"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "parameter-name": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ },
+ "2": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "3": {
+ "name": "entity.name.function.ts variable.language.this.ts"
+ },
+ "4": {
+ "name": "entity.name.function.ts"
+ },
+ "5": {
+ "name": "keyword.operator.optional.ts"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ },
+ "2": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "3": {
+ "name": "variable.parameter.ts variable.language.this.ts"
+ },
+ "4": {
+ "name": "variable.parameter.ts"
+ },
+ "5": {
+ "name": "keyword.operator.optional.ts"
+ }
+ }
+ }
+ ]
+ },
+ "destructuring-parameter": {
+ "patterns": [
+ {
+ "name": "meta.parameter.object-binding-pattern.ts",
+ "begin": "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.object.ts"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.object.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter-object-binding-element"
+ }
+ ]
+ },
+ {
+ "name": "meta.paramter.array-binding-pattern.ts",
+ "begin": "(?<!=|:)\\s*(?:(\\.\\.\\.)\\s*)?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.array.ts"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.array.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter-binding-element"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ ]
+ },
+ "parameter-object-binding-element": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(:))",
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#object-binding-element-propertyName"
+ },
+ {
+ "include": "#parameter-binding-element"
+ },
+ {
+ "include": "#paren-expression"
+ }
+ ]
+ },
+ {
+ "include": "#parameter-object-binding-pattern"
+ },
+ {
+ "include": "#destructuring-parameter-rest"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "parameter-binding-element": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#regex"
+ },
+ {
+ "include": "#parameter-object-binding-pattern"
+ },
+ {
+ "include": "#parameter-array-binding-pattern"
+ },
+ {
+ "include": "#destructuring-parameter-rest"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ "destructuring-parameter-rest": {
+ "match": "(?:(\\.\\.\\.)\\s*)?([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "2": {
+ "name": "variable.parameter.ts"
+ }
+ }
+ },
+ "parameter-object-binding-pattern": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.object.ts"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.object.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter-object-binding-element"
+ }
+ ]
+ },
+ "parameter-array-binding-pattern": {
+ "begin": "(?:(\\.\\.\\.)\\s*)?(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "2": {
+ "name": "punctuation.definition.binding-pattern.array.ts"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.binding-pattern.array.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parameter-binding-element"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "field-declaration": {
+ "name": "meta.field.declaration.ts",
+ "begin": "(?x)(?<!\\()(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s+)?(?=\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|\\}|$))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ }
+ },
+ "end": "(?x)(?=\\}|;|,|$|(^(?!\\s*((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|(\\#?[_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(?:(?:(\\?)|(\\!))\\s*)?(=|:|;|,|$))))|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "(?x)(\\#?[_$[:alpha:]][_$[:alnum:]]*)(?:(\\?)|(\\!))?(?=\\s*\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "1": {
+ "name": "meta.definition.property.ts entity.name.function.ts"
+ },
+ "2": {
+ "name": "keyword.operator.optional.ts"
+ },
+ "3": {
+ "name": "keyword.operator.definiteassignment.ts"
+ }
+ }
+ },
+ {
+ "name": "meta.definition.property.ts variable.object.property.ts",
+ "match": "\\#?[_$[:alpha:]][_$[:alnum:]]*"
+ },
+ {
+ "name": "keyword.operator.optional.ts",
+ "match": "\\?"
+ },
+ {
+ "name": "keyword.operator.definiteassignment.ts",
+ "match": "\\!"
+ }
+ ]
+ },
+ "variable-initializer": {
+ "patterns": [
+ {
+ "begin": "(?<!=|!)(=)(?!=)(?=\\s*\\S)(?!\\s*.*=>\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.ts"
+ }
+ },
+ "end": "(?=$|^|[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?<!=|!)(=)(?!=)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.ts"
+ }
+ },
+ "end": "(?=[,);}\\]]|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(of|in)\\s+))|(?=^\\s*$)|(?<![\\|\\&\\+\\-\\*\\/])(?<=\\S)(?<!=)(?=\\s*$)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "function-declaration": {
+ "name": "meta.function.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "storage.modifier.async.ts"
+ },
+ "4": {
+ "name": "storage.type.function.ts"
+ },
+ "5": {
+ "name": "keyword.generator.asterisk.ts"
+ },
+ "6": {
+ "name": "meta.definition.function.ts entity.name.function.ts"
+ }
+ },
+ "end": "(?=;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#function-name"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ "function-expression": {
+ "name": "meta.function.expression.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(async)\\s+)?(function\\b)(?:\\s*(\\*))?(?:(?:\\s+|(?<=\\*))([_$[:alpha:]][_$[:alnum:]]*))?\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.ts"
+ },
+ "2": {
+ "name": "storage.type.function.ts"
+ },
+ "3": {
+ "name": "keyword.generator.asterisk.ts"
+ },
+ "4": {
+ "name": "meta.definition.function.ts entity.name.function.ts"
+ }
+ },
+ "end": "(?=;)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#function-name"
+ },
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ "function-name": {
+ "name": "meta.definition.function.ts entity.name.function.ts",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ },
+ "function-body": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#function-parameters"
+ },
+ {
+ "include": "#return-type"
+ },
+ {
+ "include": "#type-function-return-type"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "name": "keyword.generator.asterisk.ts",
+ "match": "\\*"
+ }
+ ]
+ },
+ "method-declaration": {
+ "patterns": [
+ {
+ "name": "meta.method.declaration.ts",
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?\\s*\\b(constructor)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "storage.modifier.ts"
+ },
+ "4": {
+ "name": "storage.modifier.async.ts"
+ },
+ "5": {
+ "name": "storage.type.ts"
+ }
+ },
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ {
+ "name": "meta.method.declaration.ts",
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:(?:\\s*\\b(new)\\b(?!:)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|(?:(\\*)\\s*)?)(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "storage.modifier.ts"
+ },
+ "4": {
+ "name": "storage.modifier.async.ts"
+ },
+ "5": {
+ "name": "keyword.operator.new.ts"
+ },
+ "6": {
+ "name": "keyword.generator.asterisk.ts"
+ }
+ },
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ {
+ "name": "meta.method.declaration.ts",
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(override)\\s+)?(?:\\b(public|private|protected)\\s+)?(?:\\b(abstract)\\s+)?(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "storage.modifier.ts"
+ },
+ "4": {
+ "name": "storage.modifier.async.ts"
+ },
+ "5": {
+ "name": "storage.type.property.ts"
+ },
+ "6": {
+ "name": "keyword.generator.asterisk.ts"
+ }
+ },
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ },
+ {
+ "include": "#function-body"
+ }
+ ]
+ }
+ ]
+ },
+ "object-literal-method-declaration": {
+ "name": "meta.method.declaration.ts",
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.ts"
+ },
+ "2": {
+ "name": "storage.type.property.ts"
+ },
+ "3": {
+ "name": "keyword.generator.asterisk.ts"
+ }
+ },
+ "end": "(?=\\}|;|,)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ },
+ {
+ "include": "#function-body"
+ },
+ {
+ "begin": "(?x)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(async)\\s+)?(?:\\b(get|set)\\s+)?(?:(\\*)\\s*)?(?=\\s*(((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??))\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?[\\(])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.ts"
+ },
+ "2": {
+ "name": "storage.type.property.ts"
+ },
+ "3": {
+ "name": "keyword.generator.asterisk.ts"
+ }
+ },
+ "end": "(?=\\(|\\<)",
+ "patterns": [
+ {
+ "include": "#method-declaration-name"
+ }
+ ]
+ }
+ ]
+ },
+ "method-declaration-name": {
+ "begin": "(?x)(?=((\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$))|([_$[:alpha:]][_$[:alnum:]]*)|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\]))\\s*(\\??)\\s*[\\(\\<])",
+ "end": "(?=\\(|\\<)",
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "name": "meta.definition.method.ts entity.name.function.ts",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ },
+ {
+ "name": "keyword.operator.optional.ts",
+ "match": "\\?"
+ }
+ ]
+ },
+ "arrow-function": {
+ "patterns": [
+ {
+ "name": "meta.arrow.ts",
+ "match": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)\\s*(?==>)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.async.ts"
+ },
+ "2": {
+ "name": "variable.parameter.ts"
+ }
+ }
+ },
+ {
+ "name": "meta.arrow.ts",
+ "begin": "(?x) (?:\n (?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(\\basync)\n)? ((?<![})!\\]])\\s*\n (?=\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n )\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.ts"
+ }
+ },
+ "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#function-parameters"
+ },
+ {
+ "include": "#arrow-return-type"
+ },
+ {
+ "include": "#possibly-arrow-return-type"
+ }
+ ]
+ },
+ {
+ "name": "meta.arrow.ts",
+ "begin": "=>",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.function.arrow.ts"
+ }
+ },
+ "end": "((?<=\\}|\\S)(?<!=>)|((?!\\{)(?=\\S)))(?!\\/[\\/\\*])",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "indexer-declaration": {
+ "name": "meta.indexer.declaration.ts",
+ "begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=:)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ },
+ "2": {
+ "name": "meta.brace.square.ts"
+ },
+ "3": {
+ "name": "variable.parameter.ts"
+ }
+ },
+ "end": "(\\])\\s*(\\?\\s*)?|$",
+ "endCaptures": {
+ "1": {
+ "name": "meta.brace.square.ts"
+ },
+ "2": {
+ "name": "keyword.operator.optional.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type-annotation"
+ }
+ ]
+ },
+ "indexer-mapped-type-declaration": {
+ "name": "meta.indexer.mappedtype.declaration.ts",
+ "begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([+-])?(readonly)\\s*)?\\s*(\\[)\\s*([_$[:alpha:]][_$[:alnum:]]*)\\s+(in)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.modifier.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "meta.brace.square.ts"
+ },
+ "4": {
+ "name": "entity.name.type.ts"
+ },
+ "5": {
+ "name": "keyword.operator.expression.in.ts"
+ }
+ },
+ "end": "(\\])([+-])?\\s*(\\?\\s*)?|$",
+ "endCaptures": {
+ "1": {
+ "name": "meta.brace.square.ts"
+ },
+ "2": {
+ "name": "keyword.operator.type.modifier.ts"
+ },
+ "3": {
+ "name": "keyword.operator.optional.ts"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+",
+ "captures": {
+ "1": {
+ "name": "keyword.control.as.ts"
+ }
+ }
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "function-parameters": {
+ "name": "meta.parameters.ts",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.begin.ts"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.parameters.end.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-parameters-body"
+ }
+ ]
+ },
+ "function-parameters-body": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#decorator"
+ },
+ {
+ "include": "#destructuring-parameter"
+ },
+ {
+ "include": "#parameter-name"
+ },
+ {
+ "include": "#parameter-type-annotation"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "name": "punctuation.separator.parameter.ts",
+ "match": ","
+ }
+ ]
+ },
+ "class-declaration": {
+ "name": "meta.class.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(class)\\b(?=\\s+|/[/*])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "storage.modifier.ts"
+ },
+ "4": {
+ "name": "storage.type.class.ts"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#class-declaration-or-expression-patterns"
+ }
+ ]
+ },
+ "class-expression": {
+ "name": "meta.class.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(class)\\b(?=\\s+|[<{]|\\/[\\/*])",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ },
+ "2": {
+ "name": "storage.type.class.ts"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#class-declaration-or-expression-patterns"
+ }
+ ]
+ },
+ "class-declaration-or-expression-patterns": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#class-or-interface-heritage"
+ },
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "captures": {
+ "0": {
+ "name": "entity.name.type.class.ts"
+ }
+ }
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#class-or-interface-body"
+ }
+ ]
+ },
+ "interface-declaration": {
+ "name": "meta.interface.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(?:(abstract)\\s+)?\\b(interface)\\b(?=\\s+|/[/*])",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "storage.modifier.ts"
+ },
+ "4": {
+ "name": "storage.type.interface.ts"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#class-or-interface-heritage"
+ },
+ {
+ "match": "[_$[:alpha:]][_$[:alnum:]]*",
+ "captures": {
+ "0": {
+ "name": "entity.name.type.interface.ts"
+ }
+ }
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#class-or-interface-body"
+ }
+ ]
+ },
+ "class-or-interface-heritage": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:\\b(extends|implements)\\b)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ }
+ },
+ "end": "(?=\\{)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#class-or-interface-heritage"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#expressionWithoutIdentifiers"
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s*\\??\\.\\s*[_$[:alpha:]][_$[:alnum:]]*)*\\s*)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.module.ts"
+ },
+ "2": {
+ "name": "punctuation.accessor.ts"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.ts"
+ }
+ }
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "entity.other.inherited-class.ts"
+ }
+ }
+ },
+ {
+ "include": "#expressionPunctuations"
+ }
+ ]
+ },
+ "class-or-interface-body": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#decorator"
+ },
+ {
+ "begin": "(?<=:)\\s*",
+ "end": "(?=\\s|[;),}\\]:\\-\\+]|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#method-declaration"
+ },
+ {
+ "include": "#indexer-declaration"
+ },
+ {
+ "include": "#field-declaration"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "include": "#access-modifier"
+ },
+ {
+ "include": "#property-accessor"
+ },
+ {
+ "include": "#async-modifier"
+ },
+ {
+ "include": "#after-operator-block-as-object-literal"
+ },
+ {
+ "include": "#decl-block"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ },
+ "access-modifier": {
+ "name": "storage.modifier.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(abstract|declare|override|public|protected|private|readonly|static)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "property-accessor": {
+ "name": "storage.type.property.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(accessor|get|set)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "async-modifier": {
+ "name": "storage.modifier.async.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(async)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "enum-declaration": {
+ "name": "meta.enum.declaration.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?(?:\\b(const)\\s+)?\\b(enum)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "storage.modifier.ts"
+ },
+ "4": {
+ "name": "storage.type.enum.ts"
+ },
+ "5": {
+ "name": "entity.name.type.enum.ts"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)",
+ "beginCaptures": {
+ "0": {
+ "name": "variable.other.enummember.ts"
+ }
+ },
+ "end": "(?=,|\\}|$)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ {
+ "begin": "(?=((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])+\\])))",
+ "end": "(?=,|\\}|$)",
+ "patterns": [
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#variable-initializer"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ }
+ ]
+ },
+ "namespace-declaration": {
+ "name": "meta.namespace.declaration.ts",
+ "begin": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(namespace|module)\\s+(?=[_$[:alpha:]\"'`]))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "storage.type.namespace.ts"
+ }
+ },
+ "end": "(?<=\\})|(?=;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "name": "entity.name.type.module.ts",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ },
+ {
+ "include": "#punctuation-accessor"
+ },
+ {
+ "include": "#decl-block"
+ }
+ ]
+ },
+ "type-alias-declaration": {
+ "name": "meta.type.declaration.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(type)\\b\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "storage.type.type.ts"
+ },
+ "4": {
+ "name": "entity.name.type.alias.ts"
+ }
+ },
+ "end": "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "begin": "(=)\\s*(intrinsic)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.ts"
+ },
+ "2": {
+ "name": "keyword.control.intrinsic.ts"
+ }
+ },
+ "end": "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "begin": "(=)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.ts"
+ }
+ },
+ "end": "(?=\\}|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "import-equals-declaration": {
+ "patterns": [
+ {
+ "name": "meta.import-equals.external.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(require)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "keyword.control.import.ts"
+ },
+ "4": {
+ "name": "keyword.control.type.ts"
+ },
+ "5": {
+ "name": "variable.other.readwrite.alias.ts"
+ },
+ "6": {
+ "name": "keyword.operator.assignment.ts"
+ },
+ "7": {
+ "name": "keyword.control.require.ts"
+ },
+ "8": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "name": "meta.import-equals.internal.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type))?\\s+([_$[:alpha:]][_$[:alnum:]]*)\\s*(=)\\s*(?!require\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "keyword.control.import.ts"
+ },
+ "4": {
+ "name": "keyword.control.type.ts"
+ },
+ "5": {
+ "name": "variable.other.readwrite.alias.ts"
+ },
+ "6": {
+ "name": "keyword.operator.assignment.ts"
+ }
+ },
+ "end": "(?=;|$|^)",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.module.ts"
+ },
+ "2": {
+ "name": "punctuation.accessor.ts"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.ts"
+ }
+ }
+ },
+ {
+ "name": "variable.other.readwrite.ts",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ }
+ ]
+ },
+ "import-declaration": {
+ "name": "meta.import.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(\\bexport)\\s+)?(?:(\\bdeclare)\\s+)?\\b(import)(?:\\s+(type)(?!\\s+from))?(?!\\s*[:\\(])(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "keyword.control.import.ts"
+ },
+ "4": {
+ "name": "keyword.control.type.ts"
+ }
+ },
+ "end": "(?<!^import|[^\\._$[:alnum:]]import)(?=;|$|^)",
+ "patterns": [
+ {
+ "include": "#single-line-comment-consuming-line-ending"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "begin": "(?<=^import|[^\\._$[:alnum:]]import)(?!\\s*[\"'])",
+ "end": "\\bfrom\\b",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.from.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#import-export-declaration"
+ }
+ ]
+ },
+ {
+ "include": "#import-export-declaration"
+ }
+ ]
+ },
+ "export-declaration": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)\\s+(as)\\s+(namespace)\\s+([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.export.ts"
+ },
+ "2": {
+ "name": "keyword.control.as.ts"
+ },
+ "3": {
+ "name": "storage.type.namespace.ts"
+ },
+ "4": {
+ "name": "entity.name.type.module.ts"
+ }
+ }
+ },
+ {
+ "name": "meta.export.default.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?(?:(?:\\s*(=))|(?:\\s+(default)(?=\\s+)))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.ts"
+ },
+ "2": {
+ "name": "keyword.control.type.ts"
+ },
+ "3": {
+ "name": "keyword.operator.assignment.ts"
+ },
+ "4": {
+ "name": "keyword.control.default.ts"
+ }
+ },
+ "end": "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#interface-declaration"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "meta.export.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(export)(?:\\s+(type))?\\b(?!(\\$)|(\\s*:))((?=\\s*[\\{*])|((?=\\s*[_$[:alpha:]][_$[:alnum:]]*(\\s|,))(?!\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b)))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.export.ts"
+ },
+ "2": {
+ "name": "keyword.control.type.ts"
+ }
+ },
+ "end": "(?=$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#import-export-declaration"
+ }
+ ]
+ }
+ ]
+ },
+ "import-export-declaration": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#import-export-block"
+ },
+ {
+ "name": "keyword.control.from.ts",
+ "match": "\\bfrom\\b"
+ },
+ {
+ "include": "#import-export-assert-clause"
+ },
+ {
+ "include": "#import-export-clause"
+ }
+ ]
+ },
+ "import-export-assert-clause": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(assert)\\s*(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.assert.ts"
+ },
+ "2": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "name": "meta.object-literal.key.ts",
+ "match": "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)"
+ },
+ {
+ "name": "punctuation.separator.key-value.ts",
+ "match": ":"
+ }
+ ]
+ },
+ "import-export-block": {
+ "name": "meta.block.ts",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#import-export-clause"
+ }
+ ]
+ },
+ "import-export-clause": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(?:(\\btype)\\s+)?(?:(\\bdefault)|(\\*)|(\\b[_$[:alpha:]][_$[:alnum:]]*)))\\s+(as)\\s+(?:(default(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|([_$[:alpha:]][_$[:alnum:]]*))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.type.ts"
+ },
+ "2": {
+ "name": "keyword.control.default.ts"
+ },
+ "3": {
+ "name": "constant.language.import-export-all.ts"
+ },
+ "4": {
+ "name": "variable.other.readwrite.ts"
+ },
+ "5": {
+ "name": "keyword.control.as.ts"
+ },
+ "6": {
+ "name": "keyword.control.default.ts"
+ },
+ "7": {
+ "name": "variable.other.readwrite.alias.ts"
+ }
+ }
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "name": "constant.language.import-export-all.ts",
+ "match": "\\*"
+ },
+ {
+ "name": "keyword.control.default.ts",
+ "match": "\\b(default)\\b"
+ },
+ {
+ "match": "(?:(\\btype)\\s+)?([_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.type.ts"
+ },
+ "2": {
+ "name": "variable.other.readwrite.alias.ts"
+ }
+ }
+ }
+ ]
+ },
+ "switch-statement": {
+ "name": "switch-statement.expr.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bswitch\\s*\\()",
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "name": "switch-expression.expr.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(switch)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.ts"
+ },
+ "2": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "switch-block.expr.ts",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "end": "(?=\\})",
+ "patterns": [
+ {
+ "name": "case-clause.expr.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(case|default(?=:))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.switch.ts"
+ }
+ },
+ "end": "(?=:)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "(:)\\s*(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "case-clause.expr.ts punctuation.definition.section.case-statement.ts"
+ },
+ "2": {
+ "name": "meta.block.ts punctuation.definition.block.ts"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "meta.block.ts punctuation.definition.block.ts"
+ }
+ },
+ "contentName": "meta.block.ts",
+ "patterns": [
+ {
+ "include": "#statements"
+ }
+ ]
+ },
+ {
+ "match": "(:)",
+ "captures": {
+ "0": {
+ "name": "case-clause.expr.ts punctuation.definition.section.case-statement.ts"
+ }
+ }
+ },
+ {
+ "include": "#statements"
+ }
+ ]
+ }
+ ]
+ },
+ "for-loop": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))for(?=((\\s+|(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*))await)?\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)?(\\())",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.loop.ts"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "name": "keyword.control.loop.ts",
+ "match": "await"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#var-expr"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ }
+ ]
+ }
+ ]
+ },
+ "if-statement": {
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?=\\bif\\s*(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))\\s*(?!\\{))",
+ "end": "(?=;|$|\\})",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(if)\\s*(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.conditional.ts"
+ },
+ "2": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "string.regexp.ts",
+ "begin": "(?<=\\))\\s*\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ts"
+ }
+ },
+ "end": "(/)([dgimsuy]*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.ts"
+ },
+ "2": {
+ "name": "keyword.other.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "include": "#statements"
+ }
+ ]
+ }
+ ]
+ },
+ "decl-block": {
+ "name": "meta.block.ts",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#statements"
+ }
+ ]
+ },
+ "after-operator-block-as-object-literal": {
+ "name": "meta.objectliteral.ts",
+ "begin": "(?<!\\+\\+|--)(?<=[:=(,\\[?+!>]|^await|[^\\._$[:alnum:]]await|^return|[^\\._$[:alnum:]]return|^yield|[^\\._$[:alnum:]]yield|^throw|[^\\._$[:alnum:]]throw|^in|[^\\._$[:alnum:]]in|^of|[^\\._$[:alnum:]]of|^typeof|[^\\._$[:alnum:]]typeof|&&|\\|\\||\\*)\\s*(\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-member"
+ }
+ ]
+ },
+ "object-literal": {
+ "name": "meta.objectliteral.ts",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#object-member"
+ }
+ ]
+ },
+ "object-member": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#object-literal-method-declaration"
+ },
+ {
+ "name": "meta.object.member.ts meta.object-literal.key.ts",
+ "begin": "(?=\\[)",
+ "end": "(?=:)|((?<=[\\]])(?=\\s*[\\(\\<]))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#array-literal"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.ts meta.object-literal.key.ts",
+ "begin": "(?=[\\'\\\"\\`])",
+ "end": "(?=:)|((?<=[\\'\\\"\\`])(?=((\\s*[\\(\\<,}])|(\\s+(as|satisifies)\\s+))))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.ts meta.object-literal.key.ts",
+ "begin": "(?x)(?=(\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$))|(\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$))|((?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)))",
+ "end": "(?=:)|(?=\\s*([\\(\\<,}])|(\\s+as|satisifies\\s+))",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#numeric-literal"
+ }
+ ]
+ },
+ {
+ "name": "meta.method.declaration.ts",
+ "begin": "(?<=[\\]\\'\\\"\\`])(?=\\s*[\\(\\<])",
+ "end": "(?=\\}|;|,)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#function-body"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.ts",
+ "match": "(?![_$[:alpha:]])([[:digit:]]+)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
+ "captures": {
+ "0": {
+ "name": "meta.object-literal.key.ts"
+ },
+ "1": {
+ "name": "constant.numeric.decimal.ts"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.ts",
+ "match": "(?x)(?:([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:(\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/)*\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "0": {
+ "name": "meta.object-literal.key.ts"
+ },
+ "1": {
+ "name": "entity.name.function.ts"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.ts",
+ "match": "(?:[_$[:alpha:]][_$[:alnum:]]*)\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*:)",
+ "captures": {
+ "0": {
+ "name": "meta.object-literal.key.ts"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.ts",
+ "begin": "\\.\\.\\.",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.spread.ts"
+ }
+ },
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.ts",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?=,|\\}|$|\\/\\/|\\/\\*)",
+ "captures": {
+ "1": {
+ "name": "variable.other.readwrite.ts"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*([,}]|$))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.as.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ }
+ }
+ },
+ {
+ "name": "meta.object.member.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.as.ts"
+ },
+ "2": {
+ "name": "keyword.control.satisfies.ts"
+ }
+ },
+ "end": "(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|^|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisifies)\\s+))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.ts",
+ "begin": "(?=[_$[:alpha:]][_$[:alnum:]]*\\s*=)",
+ "end": "(?=,|\\}|$|\\/\\/|\\/\\*)",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "name": "meta.object.member.ts",
+ "begin": ":",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.object-literal.key.ts punctuation.separator.key-value.ts"
+ }
+ },
+ "end": "(?=,|\\})",
+ "patterns": [
+ {
+ "begin": "(?<=:)\\s*(async)?(?=\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.ts"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-inside-possibly-arrow-parens"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?<=:)\\s*(async)?\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.ts"
+ },
+ "2": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-inside-possibly-arrow-parens"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=:)\\s*(async)?\\s*(?=\\<\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.ts"
+ }
+ },
+ "end": "(?<=\\>)",
+ "patterns": [
+ {
+ "include": "#type-parameters"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=\\>)\\s*(\\()(?=\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-inside-possibly-arrow-parens"
+ }
+ ]
+ },
+ {
+ "include": "#possibly-arrow-return-type"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#decl-block"
+ }
+ ]
+ },
+ "ternary-expression": {
+ "begin": "(?!\\?\\.\\s*[^[:digit:]])(\\?)(?!\\?)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.ts"
+ }
+ },
+ "end": "\\s*(:)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.ternary.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "function-call": {
+ "patterns": [
+ {
+ "begin": "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
+ "end": "(?<=\\))(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
+ "patterns": [
+ {
+ "name": "meta.function-call.ts",
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
+ "end": "(?=\\s*(?:(\\?\\.\\s*)|(\\!))?((<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?\\())",
+ "patterns": [
+ {
+ "include": "#function-call-target"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#function-call-optionals"
+ },
+ {
+ "include": "#type-arguments"
+ },
+ {
+ "include": "#paren-expression"
+ }
+ ]
+ },
+ {
+ "begin": "(?=(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
+ "end": "(?<=\\>)(?!(((([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))|(?<=[\\)]))(<\\s*[\\{\\[\\(]\\s*$))",
+ "patterns": [
+ {
+ "name": "meta.function-call.ts",
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*)(\\s*\\??\\.\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*))*)|(\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*))",
+ "end": "(?=(<\\s*[\\{\\[\\(]\\s*$))",
+ "patterns": [
+ {
+ "include": "#function-call-target"
+ }
+ ]
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#function-call-optionals"
+ },
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ }
+ ]
+ },
+ "function-call-target": {
+ "patterns": [
+ {
+ "include": "#support-function-call-identifiers"
+ },
+ {
+ "name": "entity.name.function.ts",
+ "match": "(\\#?[_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ },
+ "function-call-optionals": {
+ "patterns": [
+ {
+ "name": "meta.function-call.ts punctuation.accessor.optional.ts",
+ "match": "\\?\\."
+ },
+ {
+ "name": "meta.function-call.ts keyword.operator.definiteassignment.ts",
+ "match": "\\!"
+ }
+ ]
+ },
+ "support-function-call-identifiers": {
+ "patterns": [
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#support-objects"
+ },
+ {
+ "include": "#object-identifiers"
+ },
+ {
+ "include": "#punctuation-accessor"
+ },
+ {
+ "name": "keyword.operator.expression.import.ts",
+ "match": "(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*[\\(]\\s*[\\\"\\'\\`]))"
+ }
+ ]
+ },
+ "new-expr": {
+ "name": "new.expr.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.new.ts"
+ }
+ },
+ "end": "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "instanceof-expr": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(instanceof)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.expression.instanceof.ts"
+ }
+ },
+ "end": "(?<=\\))|(?=[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|(===|!==|==|!=)|(([\\&\\~\\^\\|]\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s+instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))function((\\s+[_$[:alpha:]][_$[:alnum:]]*)|(\\s*[\\(]))))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "paren-expression-possibly-arrow": {
+ "patterns": [
+ {
+ "begin": "(?<=[(=,])\\s*(async)?(?=\\s*((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\(\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.ts"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#paren-expression-possibly-arrow-with-typeparameters"
+ }
+ ]
+ },
+ {
+ "begin": "(?<=[(=,]|=>|^return|[^\\._$[:alnum:]]return)\\s*(async)?(?=\\s*((((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*))?\\()|(<)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)))\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.async.ts"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#paren-expression-possibly-arrow-with-typeparameters"
+ }
+ ]
+ },
+ {
+ "include": "#possibly-arrow-return-type"
+ }
+ ]
+ },
+ "paren-expression-possibly-arrow-with-typeparameters": {
+ "patterns": [
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression-inside-possibly-arrow-parens"
+ }
+ ]
+ }
+ ]
+ },
+ "expression-inside-possibly-arrow-parens": {
+ "patterns": [
+ {
+ "include": "#expressionWithoutIdentifiers"
+ },
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#decorator"
+ },
+ {
+ "include": "#destructuring-parameter"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|protected|private|readonly)\\s+(?=(override|public|protected|private|readonly)\\s+)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*\n# function assignment |\n(=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)) |\n# typeannotation is fn type: < | () | (... | (param: | (param, | (param? | (param= | (param) =>\n(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))) |\n(:\\s*(=>|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(<[^<>]*>)|[^<>(),=])+=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n)))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ },
+ "2": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "3": {
+ "name": "entity.name.function.ts variable.language.this.ts"
+ },
+ "4": {
+ "name": "entity.name.function.ts"
+ },
+ "5": {
+ "name": "keyword.operator.optional.ts"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(override|public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*(\\??)(?=\\s*[:,]|$)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ },
+ "2": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "3": {
+ "name": "variable.parameter.ts variable.language.this.ts"
+ },
+ "4": {
+ "name": "variable.parameter.ts"
+ },
+ "5": {
+ "name": "keyword.operator.optional.ts"
+ }
+ }
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "include": "#variable-initializer"
+ },
+ {
+ "name": "punctuation.separator.parameter.ts",
+ "match": ","
+ },
+ {
+ "include": "#identifiers"
+ },
+ {
+ "include": "#expressionPunctuations"
+ }
+ ]
+ },
+ "paren-expression": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "cast": {
+ "patterns": [
+ {
+ "name": "cast.expr.ts",
+ "match": "\\s*(<)\\s*(const)\\s*(>)",
+ "captures": {
+ "1": {
+ "name": "meta.brace.angle.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ },
+ "3": {
+ "name": "meta.brace.angle.ts"
+ }
+ }
+ },
+ {
+ "name": "cast.expr.ts",
+ "begin": "(?:(?<!\\+\\+|--)(?<=^return|[^\\._$[:alnum:]]return|^throw|[^\\._$[:alnum:]]throw|^yield|[^\\._$[:alnum:]]yield|^await|[^\\._$[:alnum:]]await|^default|[^\\._$[:alnum:]]default|[=(,:>*?\\&\\|\\^]|[^_$[:alnum:]](?:\\+\\+|\\-\\-)|[^\\+]\\+|[^\\-]\\-))\\s*(<)(?!<?\\=)(?!\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.angle.ts"
+ }
+ },
+ "end": "(\\>)",
+ "endCaptures": {
+ "1": {
+ "name": "meta.brace.angle.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "name": "cast.expr.ts",
+ "begin": "(?:(?<=^))\\s*(<)(?=[_$[:alpha:]][_$[:alnum:]]*\\s*>)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.angle.ts"
+ }
+ },
+ "end": "(\\>)",
+ "endCaptures": {
+ "1": {
+ "name": "meta.brace.angle.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "expression-operators": {
+ "patterns": [
+ {
+ "name": "keyword.control.flow.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(await)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?=\\s*\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*\\*)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow.ts"
+ }
+ },
+ "end": "\\*",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.generator.asterisk.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(yield)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s*(\\*))?",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.ts"
+ },
+ "2": {
+ "name": "keyword.generator.asterisk.ts"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.expression.delete.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))delete(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.operator.expression.in.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))in(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
+ },
+ {
+ "name": "keyword.operator.expression.of.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))of(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?!\\()"
+ },
+ {
+ "name": "keyword.operator.expression.instanceof.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))instanceof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.operator.new.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))new(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "include": "#typeof-operator"
+ },
+ {
+ "name": "keyword.operator.expression.void.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))void(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as)\\s+(const)(?=\\s*($|[;,:})\\]]))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.as.ts"
+ },
+ "2": {
+ "name": "storage.modifier.ts"
+ }
+ }
+ },
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(as)|(satisfies))\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.as.ts"
+ },
+ "2": {
+ "name": "keyword.control.satisfies.ts"
+ }
+ },
+ "end": "(?=^|[;),}\\]:?\\-\\+\\>]|\\|\\||\\&\\&|\\!\\=\\=|$|((?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(as|satisfies)\\s+)|(\\s+\\<))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "name": "keyword.operator.spread.ts",
+ "match": "\\.\\.\\."
+ },
+ {
+ "name": "keyword.operator.assignment.compound.ts",
+ "match": "\\*=|(?<!\\()/=|%=|\\+=|\\-="
+ },
+ {
+ "name": "keyword.operator.assignment.compound.bitwise.ts",
+ "match": "\\&=|\\^=|<<=|>>=|>>>=|\\|="
+ },
+ {
+ "name": "keyword.operator.bitwise.shift.ts",
+ "match": "<<|>>>|>>"
+ },
+ {
+ "name": "keyword.operator.comparison.ts",
+ "match": "===|!==|==|!="
+ },
+ {
+ "name": "keyword.operator.relational.ts",
+ "match": "<=|>=|<>|<|>"
+ },
+ {
+ "match": "(?<=[_$[:alnum:]])(\\!)\\s*(?:(/=)|(?:(/)(?![/*])))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.logical.ts"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.compound.ts"
+ },
+ "3": {
+ "name": "keyword.operator.arithmetic.ts"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.logical.ts",
+ "match": "\\!|&&|\\|\\||\\?\\?"
+ },
+ {
+ "name": "keyword.operator.bitwise.ts",
+ "match": "\\&|~|\\^|\\|"
+ },
+ {
+ "name": "keyword.operator.assignment.ts",
+ "match": "\\="
+ },
+ {
+ "name": "keyword.operator.decrement.ts",
+ "match": "--"
+ },
+ {
+ "name": "keyword.operator.increment.ts",
+ "match": "\\+\\+"
+ },
+ {
+ "name": "keyword.operator.arithmetic.ts",
+ "match": "%|\\*|/|-|\\+"
+ },
+ {
+ "begin": "(?<=[_$[:alnum:])\\]])\\s*(?=(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)+(?:(/=)|(?:(/)(?![/*]))))",
+ "end": "(?:(/=)|(?:(/)(?!\\*([^\\*]|(\\*[^\\/]))*\\*\\/)))",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.assignment.compound.ts"
+ },
+ "2": {
+ "name": "keyword.operator.arithmetic.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ }
+ ]
+ },
+ {
+ "match": "(?<=[_$[:alnum:])\\]])\\s*(?:(/=)|(?:(/)(?![/*])))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.assignment.compound.ts"
+ },
+ "2": {
+ "name": "keyword.operator.arithmetic.ts"
+ }
+ }
+ }
+ ]
+ },
+ "typeof-operator": {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))typeof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.expression.typeof.ts"
+ }
+ },
+ "end": "(?=[,);}\\]=>:&|{\\?]|(extends\\s+)|$|;|^\\s*$|(?:^\\s*(?:abstract|async|break|case|catch|class|const|continue|declare|do|else|enum|export|finally|function|for|goto|if|import|interface|let|module|namespace|switch|return|throw|try|type|var|while)\\b))",
+ "patterns": [
+ {
+ "include": "#type-arguments"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "literal": {
+ "patterns": [
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#boolean-literal"
+ },
+ {
+ "include": "#null-literal"
+ },
+ {
+ "include": "#undefined-literal"
+ },
+ {
+ "include": "#numericConstant-literal"
+ },
+ {
+ "include": "#array-literal"
+ },
+ {
+ "include": "#this-literal"
+ },
+ {
+ "include": "#super-literal"
+ }
+ ]
+ },
+ "array-literal": {
+ "name": "meta.array.literal.ts",
+ "begin": "\\s*(\\[)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.brace.square.ts"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.square.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "numeric-literal": {
+ "patterns": [
+ {
+ "name": "constant.numeric.hex.ts",
+ "match": "\\b(?<!\\$)0(?:x|X)[0-9a-fA-F][0-9a-fA-F_]*(n)?\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.numeric.bigint.ts"
+ }
+ }
+ },
+ {
+ "name": "constant.numeric.binary.ts",
+ "match": "\\b(?<!\\$)0(?:b|B)[01][01_]*(n)?\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.numeric.bigint.ts"
+ }
+ }
+ },
+ {
+ "name": "constant.numeric.octal.ts",
+ "match": "\\b(?<!\\$)0(?:o|O)?[0-7][0-7_]*(n)?\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.numeric.bigint.ts"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n(?<!\\$)(?:\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.1E+3\n (?:\\b[0-9][0-9_]*(\\.)[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1.E+3\n (?:\\B(\\.)[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # .1E+3\n (?:\\b[0-9][0-9_]*[eE][+-]?[0-9][0-9_]*(n)?\\b)| # 1E+3\n (?:\\b[0-9][0-9_]*(\\.)[0-9][0-9_]*(n)?\\b)| # 1.1\n (?:\\b[0-9][0-9_]*(\\.)(n)?\\B)| # 1.\n (?:\\B(\\.)[0-9][0-9_]*(n)?\\b)| # .1\n (?:\\b[0-9][0-9_]*(n)?\\b(?!\\.)) # 1\n)(?!\\$)",
+ "captures": {
+ "0": {
+ "name": "constant.numeric.decimal.ts"
+ },
+ "1": {
+ "name": "meta.delimiter.decimal.period.ts"
+ },
+ "2": {
+ "name": "storage.type.numeric.bigint.ts"
+ },
+ "3": {
+ "name": "meta.delimiter.decimal.period.ts"
+ },
+ "4": {
+ "name": "storage.type.numeric.bigint.ts"
+ },
+ "5": {
+ "name": "meta.delimiter.decimal.period.ts"
+ },
+ "6": {
+ "name": "storage.type.numeric.bigint.ts"
+ },
+ "7": {
+ "name": "storage.type.numeric.bigint.ts"
+ },
+ "8": {
+ "name": "meta.delimiter.decimal.period.ts"
+ },
+ "9": {
+ "name": "storage.type.numeric.bigint.ts"
+ },
+ "10": {
+ "name": "meta.delimiter.decimal.period.ts"
+ },
+ "11": {
+ "name": "storage.type.numeric.bigint.ts"
+ },
+ "12": {
+ "name": "meta.delimiter.decimal.period.ts"
+ },
+ "13": {
+ "name": "storage.type.numeric.bigint.ts"
+ },
+ "14": {
+ "name": "storage.type.numeric.bigint.ts"
+ }
+ }
+ }
+ ]
+ },
+ "boolean-literal": {
+ "patterns": [
+ {
+ "name": "constant.language.boolean.true.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))true(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "constant.language.boolean.false.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))false(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "null-literal": {
+ "name": "constant.language.null.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))null(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "this-literal": {
+ "name": "variable.language.this.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))this\\b(?!\\$)"
+ },
+ "super-literal": {
+ "name": "variable.language.super.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))super\\b(?!\\$)"
+ },
+ "undefined-literal": {
+ "name": "constant.language.undefined.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))undefined(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "numericConstant-literal": {
+ "patterns": [
+ {
+ "name": "constant.language.nan.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))NaN(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "constant.language.infinity.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Infinity(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "support-objects": {
+ "patterns": [
+ {
+ "name": "variable.language.arguments.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(arguments)\\b(?!\\$)"
+ },
+ {
+ "name": "support.class.promise.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(Promise)\\b(?!\\$)"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(import)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(meta)\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.import.ts"
+ },
+ "2": {
+ "name": "punctuation.accessor.ts"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.ts"
+ },
+ "4": {
+ "name": "support.variable.property.importmeta.ts"
+ }
+ }
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(new)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(target)\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.new.ts"
+ },
+ "2": {
+ "name": "punctuation.accessor.ts"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.ts"
+ },
+ "4": {
+ "name": "support.variable.property.target.ts"
+ }
+ }
+ },
+ {
+ "match": "(?x) (?:(\\.)|(\\?\\.(?!\\s*[[:digit:]]))) \\s* (?:\n (?:(constructor|length|prototype|__proto__)\\b(?!\\$|\\s*(<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\\())\n |\n (?:(EPSILON|MAX_SAFE_INTEGER|MAX_VALUE|MIN_SAFE_INTEGER|MIN_VALUE|NEGATIVE_INFINITY|POSITIVE_INFINITY)\\b(?!\\$)))",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.ts"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.ts"
+ },
+ "3": {
+ "name": "support.variable.property.ts"
+ },
+ "4": {
+ "name": "support.constant.ts"
+ }
+ }
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(exports)|(module)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))(exports|id|filename|loaded|parent|children))?)\\b(?!\\$)",
+ "captures": {
+ "1": {
+ "name": "support.type.object.module.ts"
+ },
+ "2": {
+ "name": "support.type.object.module.ts"
+ },
+ "3": {
+ "name": "punctuation.accessor.ts"
+ },
+ "4": {
+ "name": "punctuation.accessor.optional.ts"
+ },
+ "5": {
+ "name": "support.type.object.module.ts"
+ }
+ }
+ }
+ ]
+ },
+ "identifiers": {
+ "patterns": [
+ {
+ "include": "#object-identifiers"
+ },
+ {
+ "match": "(?x)(?:(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*)?([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*=\\s*(\n ((async\\s+)?(\n (function\\s*[(<*]) |\n (function\\s+) |\n ([_$[:alpha:]][_$[:alnum:]]*\\s*=>)\n )) |\n ((async\\s*)?(\n ((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))))) |\n # sure shot arrow functions even if => is on new line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?\n [(]\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*\n (\n ([)]\\s*:) | # ():\n ((\\.\\.\\.\\s*)?[_$[:alpha:]][_$[:alnum:]]*\\s*:) # [(]param: | [(]...param:\n )\n) |\n\n# arrow function possible to detect only with => on same line\n(\n (<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)? # typeparameters\n \\(\\s*(\\/\\*([^\\*]|(\\*[^\\/]))*\\*\\/\\s*)*(([_$[:alpha:]]|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\.\\.\\.\\s*[_$[:alpha:]]))([^()\\'\\\"\\`]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))*)?\\) # parameters\n (\\s*:\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+)? # return type\n \\s*=> # arrow operator\n)\n ))\n))",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.ts"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.ts"
+ },
+ "3": {
+ "name": "entity.name.function.ts"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.ts"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.ts"
+ },
+ "3": {
+ "name": "variable.other.constant.property.ts"
+ }
+ }
+ },
+ {
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(\\#?[_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.ts"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.ts"
+ },
+ "3": {
+ "name": "variable.other.property.ts"
+ }
+ }
+ },
+ {
+ "name": "variable.other.constant.ts",
+ "match": "([[:upper:]][_$[:digit:][:upper:]]*)(?![_$[:alnum:]])"
+ },
+ {
+ "name": "variable.other.readwrite.ts",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ }
+ ]
+ },
+ "object-identifiers": {
+ "patterns": [
+ {
+ "name": "support.class.ts",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)(?=\\s*\\??\\.\\s*prototype\\b(?!\\$))"
+ },
+ {
+ "match": "(?x)(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(?:\n (\\#?[[:upper:]][_$[:digit:][:upper:]]*) |\n (\\#?[_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.ts"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.ts"
+ },
+ "3": {
+ "name": "variable.other.constant.object.property.ts"
+ },
+ "4": {
+ "name": "variable.other.object.property.ts"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:\n ([[:upper:]][_$[:digit:][:upper:]]*) |\n ([_$[:alpha:]][_$[:alnum:]]*)\n)(?=\\s*\\??\\.\\s*\\#?[_$[:alpha:]][_$[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "variable.other.constant.object.ts"
+ },
+ "2": {
+ "name": "variable.other.object.ts"
+ }
+ }
+ }
+ ]
+ },
+ "type-annotation": {
+ "patterns": [
+ {
+ "name": "meta.type.annotation.ts",
+ "begin": "(:)(?=\\s*\\S)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.ts"
+ }
+ },
+ "end": "(?<![:|&])(?!\\s*[|&]\\s+)((?=^|[,);\\}\\]]|//)|(?==[^>])|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "name": "meta.type.annotation.ts",
+ "begin": "(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.ts"
+ }
+ },
+ "end": "(?<![:|&])((?=[,);\\}\\]]|\\/\\/)|(?==[^>])|(?=^\\s*$)|((?<=[\\}>\\]\\)]|[_$[:alpha:]])\\s*(?=\\{)))",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "parameter-type-annotation": {
+ "patterns": [
+ {
+ "name": "meta.type.annotation.ts",
+ "begin": "(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.ts"
+ }
+ },
+ "end": "(?=[,)])|(?==[^>])",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "return-type": {
+ "patterns": [
+ {
+ "name": "meta.return.type.ts",
+ "begin": "(?<=\\))\\s*(:)(?=\\s*\\S)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.ts"
+ }
+ },
+ "end": "(?<![:|&])(?=$|^|[{};,]|//)",
+ "patterns": [
+ {
+ "include": "#return-type-core"
+ }
+ ]
+ },
+ {
+ "name": "meta.return.type.ts",
+ "begin": "(?<=\\))\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.ts"
+ }
+ },
+ "end": "(?<![:|&])((?=[{};,]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#return-type-core"
+ }
+ ]
+ }
+ ]
+ },
+ "return-type-core": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<=[:|&])(?=\\s*\\{)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type-object"
+ }
+ ]
+ },
+ {
+ "include": "#type-predicate-operator"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "arrow-return-type": {
+ "name": "meta.return.type.arrow.ts",
+ "begin": "(?<=\\))\\s*(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.type.annotation.ts"
+ }
+ },
+ "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
+ "patterns": [
+ {
+ "include": "#arrow-return-type-body"
+ }
+ ]
+ },
+ "possibly-arrow-return-type": {
+ "begin": "(?<=\\)|^)\\s*(:)(?=\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*=>)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.arrow.ts meta.return.type.arrow.ts keyword.operator.type.annotation.ts"
+ }
+ },
+ "end": "(?==>|\\{|(^\\s*(export|function|class|interface|let|var|const|import|enum|namespace|module|type|abstract|declare)\\s+))",
+ "contentName": "meta.arrow.ts meta.return.type.arrow.ts",
+ "patterns": [
+ {
+ "include": "#arrow-return-type-body"
+ }
+ ]
+ },
+ "arrow-return-type-body": {
+ "patterns": [
+ {
+ "begin": "(?<=[:])(?=\\s*\\{)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type-object"
+ }
+ ]
+ },
+ {
+ "include": "#type-predicate-operator"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type-parameters": {
+ "name": "meta.type.parameters.ts",
+ "begin": "(<)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.typeparameters.begin.ts"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.typeparameters.end.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "name": "storage.modifier.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out|const)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "name": "keyword.operator.assignment.ts",
+ "match": "(=)(?!>)"
+ }
+ ]
+ },
+ "type-arguments": {
+ "name": "meta.type.parameters.ts",
+ "begin": "\\<",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.begin.ts"
+ }
+ },
+ "end": "\\>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.typeparameters.end.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type-arguments-body"
+ }
+ ]
+ },
+ "type-arguments-body": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(_)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "captures": {
+ "0": {
+ "name": "keyword.operator.type.ts"
+ }
+ }
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "type": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-string"
+ },
+ {
+ "include": "#numeric-literal"
+ },
+ {
+ "include": "#type-primitive"
+ },
+ {
+ "include": "#type-builtin-literals"
+ },
+ {
+ "include": "#type-parameters"
+ },
+ {
+ "include": "#type-tuple"
+ },
+ {
+ "include": "#type-object"
+ },
+ {
+ "include": "#type-operators"
+ },
+ {
+ "include": "#type-conditional"
+ },
+ {
+ "include": "#type-fn-type-parameters"
+ },
+ {
+ "include": "#type-paren-or-function-parameters"
+ },
+ {
+ "include": "#type-function-return-type"
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(readonly)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))\\s*",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ }
+ }
+ },
+ {
+ "include": "#type-name"
+ }
+ ]
+ },
+ "type-primitive": {
+ "name": "support.type.primitive.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(string|number|bigint|boolean|symbol|any|void|never|unknown)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "type-builtin-literals": {
+ "name": "support.type.builtin.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(this|true|false|undefined|null|object)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ "type-tuple": {
+ "name": "meta.type.tuple.ts",
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.square.ts"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.square.ts"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.operator.rest.ts",
+ "match": "\\.\\.\\."
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))([_$[:alpha:]][_$[:alnum:]]*)\\s*(\\?)?\\s*(:)",
+ "captures": {
+ "1": {
+ "name": "entity.name.label.ts"
+ },
+ "2": {
+ "name": "keyword.operator.optional.ts"
+ },
+ "3": {
+ "name": "punctuation.separator.label.ts"
+ }
+ }
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#punctuation-comma"
+ }
+ ]
+ },
+ "type-object": {
+ "name": "meta.object.type.ts",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.block.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#method-declaration"
+ },
+ {
+ "include": "#indexer-declaration"
+ },
+ {
+ "include": "#indexer-mapped-type-declaration"
+ },
+ {
+ "include": "#field-declaration"
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "begin": "\\.\\.\\.",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.spread.ts"
+ }
+ },
+ "end": "(?=\\}|;|,|$)|(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "include": "#punctuation-comma"
+ },
+ {
+ "include": "#punctuation-semicolon"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type-conditional": {
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ }
+ },
+ "end": "(?<=:)",
+ "patterns": [
+ {
+ "begin": "\\?",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.ts"
+ }
+ },
+ "end": ":",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.operator.ternary.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ }
+ ]
+ },
+ "type-paren-or-function-parameters": {
+ "name": "meta.type.paren.cover.ts",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "meta.brace.round.ts"
+ }
+ },
+ "patterns": [
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=\\s*(:\\s*(\n (<) |\n ([(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n ))\n)) |\n(:\\s*(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))Function(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))) |\n(:\\s*((<\\s*$)|((<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<]|\\<\\s*(((const\\s+)?[_$[:alpha:]])|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\]))([^=<>]|=[^<])*\\>)*\\>)*>\\s*)?[\\(]\\s*((([\\{\\[]\\s*)?$)|((\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})\\s*((:\\s*\\{?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*)))|((\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])\\s*((:\\s*\\[?$)|((\\s*([^<>\\(\\)\\{\\}]|\\<([^<>]|\\<([^<>]|\\<[^<>]+\\>)+\\>)+\\>|\\([^\\(\\)]+\\)|\\{[^\\{\\}]+\\})+\\s*)?=\\s*))))))))",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ },
+ "2": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "3": {
+ "name": "entity.name.function.ts variable.language.this.ts"
+ },
+ "4": {
+ "name": "entity.name.function.ts"
+ },
+ "5": {
+ "name": "keyword.operator.optional.ts"
+ }
+ }
+ },
+ {
+ "match": "(?x)(?:(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(public|private|protected|readonly)\\s+)?(?:(\\.\\.\\.)\\s*)?(?<!=|:)(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s*(\\??)(?=:)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ },
+ "2": {
+ "name": "keyword.operator.rest.ts"
+ },
+ "3": {
+ "name": "variable.parameter.ts variable.language.this.ts"
+ },
+ "4": {
+ "name": "variable.parameter.ts"
+ },
+ "5": {
+ "name": "keyword.operator.optional.ts"
+ }
+ }
+ },
+ {
+ "include": "#type-annotation"
+ },
+ {
+ "name": "punctuation.separator.parameter.ts",
+ "match": ","
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type-fn-type-parameters": {
+ "patterns": [
+ {
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b(?=\\s*\\<)",
+ "beginCaptures": {
+ "1": {
+ "name": "meta.type.constructor.ts storage.modifier.ts"
+ },
+ "2": {
+ "name": "meta.type.constructor.ts keyword.control.new.ts"
+ }
+ },
+ "end": "(?<=>)",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#type-parameters"
+ }
+ ]
+ },
+ {
+ "name": "meta.type.constructor.ts",
+ "begin": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(abstract)\\s+)?(new)\\b\\s*(?=\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.ts"
+ },
+ "2": {
+ "name": "keyword.control.new.ts"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#function-parameters"
+ }
+ ]
+ },
+ {
+ "name": "meta.type.function.ts",
+ "begin": "(?x)(\n (?=\n [(]\\s*(\n ([)]) |\n (\\.\\.\\.) |\n ([_$[:alnum:]]+\\s*(\n ([:,?=])|\n ([)]\\s*=>)\n ))\n )\n )\n)",
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "include": "#function-parameters"
+ }
+ ]
+ }
+ ]
+ },
+ "type-function-return-type": {
+ "patterns": [
+ {
+ "name": "meta.type.function.return.ts",
+ "begin": "(=>)(?=\\s*\\S)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.arrow.ts"
+ }
+ },
+ "end": "(?<!=>)(?<![|&])(?=[,\\]\\)\\{\\}=;>:\\?]|//|$)",
+ "patterns": [
+ {
+ "include": "#type-function-return-type-core"
+ }
+ ]
+ },
+ {
+ "name": "meta.type.function.return.ts",
+ "begin": "=>",
+ "beginCaptures": {
+ "0": {
+ "name": "storage.type.function.arrow.ts"
+ }
+ },
+ "end": "(?<!=>)(?<![|&])((?=[,\\]\\)\\{\\}=;:\\?>]|//|^\\s*$)|((?<=\\S)(?=\\s*$)))",
+ "patterns": [
+ {
+ "include": "#type-function-return-type-core"
+ }
+ ]
+ }
+ ]
+ },
+ "type-function-return-type-core": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "begin": "(?<==>)(?=\\s*\\{)",
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type-object"
+ }
+ ]
+ },
+ {
+ "include": "#type-predicate-operator"
+ },
+ {
+ "include": "#type"
+ }
+ ]
+ },
+ "type-operators": {
+ "patterns": [
+ {
+ "include": "#typeof-operator"
+ },
+ {
+ "include": "#type-infer"
+ },
+ {
+ "begin": "([&|])(?=\\s*\\{)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.type.ts"
+ }
+ },
+ "end": "(?<=\\})",
+ "patterns": [
+ {
+ "include": "#type-object"
+ }
+ ]
+ },
+ {
+ "begin": "[&|]",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.type.ts"
+ }
+ },
+ "end": "(?=\\S)"
+ },
+ {
+ "name": "keyword.operator.expression.keyof.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))keyof(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.operator.ternary.ts",
+ "match": "(\\?|\\:)"
+ },
+ {
+ "name": "keyword.operator.expression.import.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))import(?=\\s*\\()"
+ }
+ ]
+ },
+ "type-infer": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(infer)\\s+([_$[:alpha:]][_$[:alnum:]]*)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))(?:\\s+(extends)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.)))?",
+ "name": "meta.type.infer.ts",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.expression.infer.ts"
+ },
+ "2": {
+ "name": "entity.name.type.ts"
+ },
+ "3": {
+ "name": "keyword.operator.expression.extends.ts"
+ }
+ }
+ }
+ ]
+ },
+ "type-predicate-operator": {
+ "patterns": [
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(?:(asserts)\\s+)?(?!asserts)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))\\s(is)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.type.asserts.ts"
+ },
+ "2": {
+ "name": "variable.parameter.ts variable.language.this.ts"
+ },
+ "3": {
+ "name": "variable.parameter.ts"
+ },
+ "4": {
+ "name": "keyword.operator.expression.is.ts"
+ }
+ }
+ },
+ {
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(asserts)\\s+(?!is)(?:(this)|([_$[:alpha:]][_$[:alnum:]]*))(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.type.asserts.ts"
+ },
+ "2": {
+ "name": "variable.parameter.ts variable.language.this.ts"
+ },
+ "3": {
+ "name": "variable.parameter.ts"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.type.asserts.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))asserts(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "name": "keyword.operator.expression.is.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))is(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ }
+ ]
+ },
+ "type-name": {
+ "patterns": [
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))\\s*(<)",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.module.ts"
+ },
+ "2": {
+ "name": "punctuation.accessor.ts"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.ts"
+ },
+ "4": {
+ "name": "meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "meta.type.parameters.ts punctuation.definition.typeparameters.end.ts"
+ }
+ },
+ "contentName": "meta.type.parameters.ts",
+ "patterns": [
+ {
+ "include": "#type-arguments-body"
+ }
+ ]
+ },
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(<)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.type.ts"
+ },
+ "2": {
+ "name": "meta.type.parameters.ts punctuation.definition.typeparameters.begin.ts"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "meta.type.parameters.ts punctuation.definition.typeparameters.end.ts"
+ }
+ },
+ "contentName": "meta.type.parameters.ts",
+ "patterns": [
+ {
+ "include": "#type-arguments-body"
+ }
+ ]
+ },
+ {
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)\\s*(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
+ "captures": {
+ "1": {
+ "name": "entity.name.type.module.ts"
+ },
+ "2": {
+ "name": "punctuation.accessor.ts"
+ },
+ "3": {
+ "name": "punctuation.accessor.optional.ts"
+ }
+ }
+ },
+ {
+ "name": "entity.name.type.ts",
+ "match": "[_$[:alpha:]][_$[:alnum:]]*"
+ }
+ ]
+ },
+ "punctuation-comma": {
+ "name": "punctuation.separator.comma.ts",
+ "match": ","
+ },
+ "punctuation-semicolon": {
+ "name": "punctuation.terminator.statement.ts",
+ "match": ";"
+ },
+ "punctuation-accessor": {
+ "match": "(?:(\\.)|(\\?\\.(?!\\s*[[:digit:]])))",
+ "captures": {
+ "1": {
+ "name": "punctuation.accessor.ts"
+ },
+ "2": {
+ "name": "punctuation.accessor.optional.ts"
+ }
+ }
+ },
+ "string": {
+ "patterns": [
+ {
+ "include": "#qstring-single"
+ },
+ {
+ "include": "#qstring-double"
+ },
+ {
+ "include": "#template"
+ }
+ ]
+ },
+ "qstring-double": {
+ "name": "string.quoted.double.ts",
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ts"
+ }
+ },
+ "end": "(\")|((?:[^\\\\\\n])$)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.ts"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "qstring-single": {
+ "name": "string.quoted.single.ts",
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ts"
+ }
+ },
+ "end": "(\\')|((?:[^\\\\\\n])$)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.ts"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ },
+ "string-character-escape": {
+ "name": "constant.character.escape.ts",
+ "match": "\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}|u\\{[0-9A-Fa-f]+\\}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.|$)"
+ },
+ "template": {
+ "patterns": [
+ {
+ "include": "#template-call"
+ },
+ {
+ "contentName": "string.template.ts",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.tagged-template.ts"
+ },
+ "2": {
+ "name": "string.template.ts punctuation.definition.string.template.begin.ts"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "string.template.ts punctuation.definition.string.template.end.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template-substitution-element"
+ },
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ }
+ ]
+ },
+ "template-call": {
+ "patterns": [
+ {
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*)(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
+ "end": "(?=`)",
+ "patterns": [
+ {
+ "begin": "(?=(([_$[:alpha:]][_$[:alnum:]]*\\s*\\??\\.\\s*)*|(\\??\\.\\s*)?)([_$[:alpha:]][_$[:alnum:]]*))",
+ "end": "(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)?`)",
+ "patterns": [
+ {
+ "include": "#support-function-call-identifiers"
+ },
+ {
+ "name": "entity.name.function.tagged-template.ts",
+ "match": "([_$[:alpha:]][_$[:alnum:]]*)"
+ }
+ ]
+ },
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ },
+ {
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)?\\s*(?=(<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))(([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>|\\<\\s*(((keyof|infer|typeof|readonly)\\s+)|(([_$[:alpha:]][_$[:alnum:]]*|(\\{([^\\{\\}]|(\\{([^\\{\\}]|\\{[^\\{\\}]*\\})*\\}))*\\})|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(\\[([^\\[\\]]|(\\[([^\\[\\]]|\\[[^\\[\\]]*\\])*\\]))*\\])|(\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`))(?=\\s*([\\<\\>\\,\\.\\[]|=>|&(?!&)|\\|(?!\\|)))))([^<>\\(]|(\\(([^\\(\\)]|(\\(([^\\(\\)]|\\([^\\(\\)]*\\))*\\)))*\\))|(?<==)\\>)*(?<!=)\\>))*(?<!=)\\>)*(?<!=)>\\s*)`)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.tagged-template.ts"
+ }
+ },
+ "end": "(?=`)",
+ "patterns": [
+ {
+ "include": "#type-arguments"
+ }
+ ]
+ }
+ ]
+ },
+ "template-substitution-element": {
+ "name": "meta.template.expression.ts",
+ "begin": "\\$\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.begin.ts"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.end.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ],
+ "contentName": "meta.embedded.line.ts"
+ },
+ "type-string": {
+ "patterns": [
+ {
+ "include": "#qstring-single"
+ },
+ {
+ "include": "#qstring-double"
+ },
+ {
+ "include": "#template-type"
+ }
+ ]
+ },
+ "template-type": {
+ "patterns": [
+ {
+ "include": "#template-call"
+ },
+ {
+ "contentName": "string.template.ts",
+ "begin": "([_$[:alpha:]][_$[:alnum:]]*)?(`)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.tagged-template.ts"
+ },
+ "2": {
+ "name": "string.template.ts punctuation.definition.string.template.begin.ts"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "string.template.ts punctuation.definition.string.template.end.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#template-type-substitution-element"
+ },
+ {
+ "include": "#string-character-escape"
+ }
+ ]
+ }
+ ]
+ },
+ "template-type-substitution-element": {
+ "name": "meta.template.expression.ts",
+ "begin": "\\$\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.begin.ts"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.template-expression.end.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#type"
+ }
+ ],
+ "contentName": "meta.embedded.line.ts"
+ },
+ "regex": {
+ "patterns": [
+ {
+ "name": "string.regexp.ts",
+ "begin": "(?<!\\+\\+|--|})(?<=[=(:,\\[?+!]|^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case|=>|&&|\\|\\||\\*\\/)\\s*(\\/)(?![\\/*])(?=(?:[^\\/\\\\\\[\\()]|\\\\.|\\[([^\\]\\\\]|\\\\.)+\\]|\\(([^\\)\\\\]|\\\\.)+\\))+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.ts"
+ }
+ },
+ "end": "(/)([dgimsuy]*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.ts"
+ },
+ "2": {
+ "name": "keyword.other.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "name": "string.regexp.ts",
+ "begin": "((?<![_$[:alnum:])\\]]|\\+\\+|--|}|\\*\\/)|((?<=^return|[^\\._$[:alnum:]]return|^case|[^\\._$[:alnum:]]case))\\s*)\\/(?![\\/*])(?=(?:[^\\/\\\\\\[]|\\\\.|\\[([^\\]\\\\]|\\\\.)*\\])+\\/([dgimsuy]+|(?![\\/\\*])|(?=\\/\\*))(?!\\s*[a-zA-Z0-9_$]))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.ts"
+ }
+ },
+ "end": "(/)([dgimsuy]*)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.ts"
+ },
+ "2": {
+ "name": "keyword.other.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ }
+ ]
+ },
+ "regexp": {
+ "patterns": [
+ {
+ "name": "keyword.control.anchor.regexp",
+ "match": "\\\\[bB]|\\^|\\$"
+ },
+ {
+ "match": "\\\\[1-9]\\d*|\\\\k<([a-zA-Z_$][\\w$]*)>",
+ "captures": {
+ "0": {
+ "name": "keyword.other.back-reference.regexp"
+ },
+ "1": {
+ "name": "variable.other.regexp"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.quantifier.regexp",
+ "match": "[?+*]|\\{(\\d+,\\d+|\\d+,|,\\d+|\\d+)\\}\\??"
+ },
+ {
+ "name": "keyword.operator.or.regexp",
+ "match": "\\|"
+ },
+ {
+ "name": "meta.group.assertion.regexp",
+ "begin": "(\\()((\\?=)|(\\?!)|(\\?<=)|(\\?<!))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.regexp"
+ },
+ "2": {
+ "name": "punctuation.definition.group.assertion.regexp"
+ },
+ "3": {
+ "name": "meta.assertion.look-ahead.regexp"
+ },
+ "4": {
+ "name": "meta.assertion.negative-look-ahead.regexp"
+ },
+ "5": {
+ "name": "meta.assertion.look-behind.regexp"
+ },
+ "6": {
+ "name": "meta.assertion.negative-look-behind.regexp"
+ }
+ },
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.group.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "name": "meta.group.regexp",
+ "begin": "\\((?:(\\?:)|(?:\\?<([a-zA-Z_$][\\w$]*)>))?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.regexp"
+ },
+ "1": {
+ "name": "punctuation.definition.group.no-capture.regexp"
+ },
+ "2": {
+ "name": "variable.other.regexp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.group.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ }
+ ]
+ },
+ {
+ "name": "constant.other.character-class.set.regexp",
+ "begin": "(\\[)(\\^)?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.regexp"
+ },
+ "2": {
+ "name": "keyword.operator.negation.regexp"
+ }
+ },
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.character-class.regexp"
+ }
+ },
+ "patterns": [
+ {
+ "name": "constant.other.character-class.range.regexp",
+ "match": "(?:.|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))\\-(?:[^\\]\\\\]|(\\\\(?:[0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4}))|(\\\\c[A-Z])|(\\\\.))",
+ "captures": {
+ "1": {
+ "name": "constant.character.numeric.regexp"
+ },
+ "2": {
+ "name": "constant.character.control.regexp"
+ },
+ "3": {
+ "name": "constant.character.escape.backslash.regexp"
+ },
+ "4": {
+ "name": "constant.character.numeric.regexp"
+ },
+ "5": {
+ "name": "constant.character.control.regexp"
+ },
+ "6": {
+ "name": "constant.character.escape.backslash.regexp"
+ }
+ }
+ },
+ {
+ "include": "#regex-character-class"
+ }
+ ]
+ },
+ {
+ "include": "#regex-character-class"
+ }
+ ]
+ },
+ "regex-character-class": {
+ "patterns": [
+ {
+ "name": "constant.other.character-class.regexp",
+ "match": "\\\\[wWsSdDtrnvf]|\\."
+ },
+ {
+ "name": "constant.character.numeric.regexp",
+ "match": "\\\\([0-7]{3}|x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4})"
+ },
+ {
+ "name": "constant.character.control.regexp",
+ "match": "\\\\c[A-Z]"
+ },
+ {
+ "name": "constant.character.escape.backslash.regexp",
+ "match": "\\\\."
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "name": "comment.block.documentation.ts",
+ "begin": "/\\*\\*(?!/)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.ts"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.ts"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#docblock"
+ }
+ ]
+ },
+ {
+ "name": "comment.block.ts",
+ "begin": "(/\\*)(?:\\s*((@)internal)(?=\\s|(\\*/)))?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.ts"
+ },
+ "2": {
+ "name": "storage.type.internaldeclaration.ts"
+ },
+ "3": {
+ "name": "punctuation.decorator.internaldeclaration.ts"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.ts"
+ }
+ }
+ },
+ {
+ "begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.ts"
+ },
+ "2": {
+ "name": "comment.line.double-slash.ts"
+ },
+ "3": {
+ "name": "punctuation.definition.comment.ts"
+ },
+ "4": {
+ "name": "storage.type.internaldeclaration.ts"
+ },
+ "5": {
+ "name": "punctuation.decorator.internaldeclaration.ts"
+ }
+ },
+ "end": "(?=$)",
+ "contentName": "comment.line.double-slash.ts"
+ }
+ ]
+ },
+ "single-line-comment-consuming-line-ending": {
+ "begin": "(^[ \\t]+)?((//)(?:\\s*((@)internal)(?=\\s|$))?)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.ts"
+ },
+ "2": {
+ "name": "comment.line.double-slash.ts"
+ },
+ "3": {
+ "name": "punctuation.definition.comment.ts"
+ },
+ "4": {
+ "name": "storage.type.internaldeclaration.ts"
+ },
+ "5": {
+ "name": "punctuation.decorator.internaldeclaration.ts"
+ }
+ },
+ "end": "(?=^)",
+ "contentName": "comment.line.double-slash.ts"
+ },
+ "directives": {
+ "name": "comment.line.triple-slash.directive.ts",
+ "begin": "^(///)\\s*(?=<(reference|amd-dependency|amd-module)(\\s+(path|types|no-default-lib|lib|name|resolution-mode)\\s*=\\s*((\\'([^\\'\\\\]|\\\\.)*\\')|(\\\"([^\\\"\\\\]|\\\\.)*\\\")|(\\`([^\\`\\\\]|\\\\.)*\\`)))+\\s*/>\\s*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.ts"
+ }
+ },
+ "end": "(?=$)",
+ "patterns": [
+ {
+ "name": "meta.tag.ts",
+ "begin": "(<)(reference|amd-dependency|amd-module)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.directive.ts"
+ },
+ "2": {
+ "name": "entity.name.tag.directive.ts"
+ }
+ },
+ "end": "/>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.tag.directive.ts"
+ }
+ },
+ "patterns": [
+ {
+ "name": "entity.other.attribute-name.directive.ts",
+ "match": "path|types|no-default-lib|lib|name|resolution-mode"
+ },
+ {
+ "name": "keyword.operator.assignment.ts",
+ "match": "="
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "docblock": {
+ "patterns": [
+ {
+ "match": "(?x)\n((@)(?:access|api))\n\\s+\n(private|protected|public)\n\\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "constant.language.access-type.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)author)\n\\s+\n(\n [^@\\s<>*/]\n (?:[^@<>*/]|\\*[^/])*\n)\n(?:\n \\s*\n (<)\n ([^>\\s]+)\n (>)\n)?",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "4": {
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
+ },
+ "5": {
+ "name": "constant.other.email.link.underline.jsdoc"
+ },
+ "6": {
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)borrows) \\s+\n((?:[^@\\s*/]|\\*[^/])+) # <that namepath>\n\\s+ (as) \\s+ # as\n((?:[^@\\s*/]|\\*[^/])+) # <this namepath>",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "4": {
+ "name": "keyword.operator.control.jsdoc"
+ },
+ "5": {
+ "name": "entity.name.type.instance.jsdoc"
+ }
+ }
+ },
+ {
+ "name": "meta.example.jsdoc",
+ "begin": "((@)example)\\s+",
+ "end": "(?=@|\\*/)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "patterns": [
+ {
+ "match": "^\\s\\*\\s+"
+ },
+ {
+ "contentName": "constant.other.description.jsdoc",
+ "begin": "\\G(<)caption(>)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.tag.inline.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
+ }
+ },
+ "end": "(</)caption(>)|(?=\\*/)",
+ "endCaptures": {
+ "0": {
+ "name": "entity.name.tag.inline.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.bracket.angle.begin.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.angle.end.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "[^\\s@*](?:[^*]|\\*[^/])*",
+ "captures": {
+ "0": {
+ "name": "source.embedded.ts"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "match": "(?x) ((@)kind) \\s+ (class|constant|event|external|file|function|member|mixin|module|namespace|typedef) \\b",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "constant.language.symbol-type.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)see)\n\\s+\n(?:\n # URL\n (\n (?=https?://)\n (?:[^\\s*]|\\*[^/])+\n )\n |\n # JSDoc namepath\n (\n (?!\n # Avoid matching bare URIs (also acceptable as links)\n https?://\n |\n # Avoid matching {@inline tags}; we match those below\n (?:\\[[^\\[\\]]*\\])? # Possible description [preceding]{@tag}\n {@(?:link|linkcode|linkplain|tutorial)\\b\n )\n # Matched namepath\n (?:[^@\\s*/]|\\*[^/])+\n )\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.link.underline.jsdoc"
+ },
+ "4": {
+ "name": "entity.name.type.instance.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "(?x)\n((@)template)\n\\s+\n# One or more valid identifiers\n(\n [A-Za-z_$] # First character: non-numeric word character\n [\\w$.\\[\\]]* # Rest of identifier\n (?: # Possible list of additional identifiers\n \\s* , \\s*\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n )*\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ }
+ }
+ },
+ {
+ "begin": "(?x)((@)template)\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ },
+ {
+ "name": "variable.other.jsdoc",
+ "match": "([A-Za-z_$][\\w$.\\[\\]]*)"
+ }
+ ]
+ },
+ {
+ "match": "(?x)\n(\n (@)\n (?:arg|argument|const|constant|member|namespace|param|var)\n)\n\\s+\n(\n [A-Za-z_$]\n [\\w$.\\[\\]]*\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ }
+ }
+ },
+ {
+ "begin": "((@)typedef)\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ },
+ {
+ "name": "entity.name.type.instance.jsdoc",
+ "match": "(?:[^@\\s*/]|\\*[^/])+"
+ }
+ ]
+ },
+ {
+ "begin": "((@)(?:arg|argument|const|constant|member|namespace|param|prop|property|var))\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ },
+ {
+ "name": "variable.other.jsdoc",
+ "match": "([A-Za-z_$][\\w$.\\[\\]]*)"
+ },
+ {
+ "name": "variable.other.jsdoc",
+ "match": "(?x)\n(\\[)\\s*\n[\\w$]+\n(?:\n (?:\\[\\])? # Foo[ ].bar properties within an array\n \\. # Foo.Bar namespaced parameter\n [\\w$]+\n)*\n(?:\n \\s*\n (=) # [foo=bar] Default parameter value\n \\s*\n (\n # The inner regexes are to stop the match early at */ and to not stop at escaped quotes\n (?>\n \"(?:(?:\\*(?!/))|(?:\\\\(?!\"))|[^*\\\\])*?\" | # [foo=\"bar\"] Double-quoted\n '(?:(?:\\*(?!/))|(?:\\\\(?!'))|[^*\\\\])*?' | # [foo='bar'] Single-quoted\n \\[ (?:(?:\\*(?!/))|[^*])*? \\] | # [foo=[1,2]] Array literal\n (?:(?:\\*(?!/))|\\s(?!\\s*\\])|\\[.*?(?:\\]|(?=\\*/))|[^*\\s\\[\\]])* # Everything else\n )*\n )\n)?\n\\s*(?:(\\])((?:[^*\\s]|\\*[^\\s/])+)?|(?=\\*/))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.optional-value.begin.bracket.square.jsdoc"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.jsdoc"
+ },
+ "3": {
+ "name": "source.embedded.ts"
+ },
+ "4": {
+ "name": "punctuation.definition.optional-value.end.bracket.square.jsdoc"
+ },
+ "5": {
+ "name": "invalid.illegal.syntax.jsdoc"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n(\n (@)\n (?:define|enum|exception|export|extends|lends|implements|modifies\n |namespace|private|protected|returns?|satisfies|suppress|this|throws|type\n |yields?)\n)\n\\s+(?={)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ },
+ "end": "(?=\\s|\\*/|[^{}\\[\\]A-Za-z_$])",
+ "patterns": [
+ {
+ "include": "#jsdoctype"
+ }
+ ]
+ },
+ {
+ "match": "(?x)\n(\n (@)\n (?:alias|augments|callback|constructs|emits|event|fires|exports?\n |extends|external|function|func|host|lends|listens|interface|memberof!?\n |method|module|mixes|mixin|name|requires|see|this|typedef|uses)\n)\n\\s+\n(\n (?:\n [^{}@\\s*] | \\*[^/]\n )+\n)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "entity.name.type.instance.jsdoc"
+ }
+ }
+ },
+ {
+ "contentName": "variable.other.jsdoc",
+ "begin": "((@)(?:default(?:value)?|license|version))\\s+(([''\"]))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ },
+ "4": {
+ "name": "punctuation.definition.string.begin.jsdoc"
+ }
+ },
+ "end": "(\\3)|(?=$|\\*/)",
+ "endCaptures": {
+ "0": {
+ "name": "variable.other.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.string.end.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "((@)(?:default(?:value)?|license|tutorial|variation|version))\\s+([^\\s*]+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ },
+ "3": {
+ "name": "variable.other.jsdoc"
+ }
+ }
+ },
+ {
+ "name": "storage.type.class.jsdoc",
+ "match": "(?x) (@) (?:abstract|access|alias|api|arg|argument|async|attribute|augments|author|beta|borrows|bubbles |callback|chainable|class|classdesc|code|config|const|constant|constructor|constructs|copyright |default|defaultvalue|define|deprecated|desc|description|dict|emits|enum|event|example|exception |exports?|extends|extension(?:_?for)?|external|externs|file|fileoverview|final|fires|for|func |function|generator|global|hideconstructor|host|ignore|implements|implicitCast|inherit[Dd]oc |inner|instance|interface|internal|kind|lends|license|listens|main|member|memberof!?|method |mixes|mixins?|modifies|module|name|namespace|noalias|nocollapse|nocompile|nosideeffects |override|overview|package|param|polymer(?:Behavior)?|preserve|private|prop|property|protected |public|read[Oo]nly|record|require[ds]|returns?|see|since|static|struct|submodule|summary |suppress|template|this|throws|todo|tutorial|type|typedef|unrestricted|uses|var|variation |version|virtual|writeOnce|yields?) \\b",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ }
+ },
+ {
+ "include": "#inline-tags"
+ },
+ {
+ "match": "((@)(?:[_$[:alpha:]][_$[:alnum:]]*))(?=\\s+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.block.tag.jsdoc"
+ }
+ }
+ }
+ ]
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "begin": "{",
+ "end": "}|(?=\\*/)",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "end": "\\]|(?=\\*/)",
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ }
+ ]
+ },
+ "inline-tags": {
+ "patterns": [
+ {
+ "name": "constant.other.description.jsdoc",
+ "match": "(\\[)[^\\]]+(\\])(?={@(?:link|linkcode|linkplain|tutorial))",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.bracket.square.begin.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.square.end.jsdoc"
+ }
+ }
+ },
+ {
+ "name": "entity.name.type.instance.jsdoc",
+ "begin": "({)((@)(?:link(?:code|plain)?|tutorial))\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.bracket.curly.begin.jsdoc"
+ },
+ "2": {
+ "name": "storage.type.class.jsdoc"
+ },
+ "3": {
+ "name": "punctuation.definition.inline.tag.jsdoc"
+ }
+ },
+ "end": "}|(?=\\*/)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.bracket.curly.end.jsdoc"
+ }
+ },
+ "patterns": [
+ {
+ "match": "\\G((?=https?://)(?:[^|}\\s*]|\\*[/])+)(\\|)?",
+ "captures": {
+ "1": {
+ "name": "variable.other.link.underline.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.separator.pipe.jsdoc"
+ }
+ }
+ },
+ {
+ "match": "\\G((?:[^{}@\\s|*]|\\*[^/])+)(\\|)?",
+ "captures": {
+ "1": {
+ "name": "variable.other.description.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.separator.pipe.jsdoc"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "jsdoctype": {
+ "patterns": [
+ {
+ "contentName": "entity.name.type.instance.jsdoc",
+ "begin": "\\G({)",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "1": {
+ "name": "punctuation.definition.bracket.curly.begin.jsdoc"
+ }
+ },
+ "end": "((}))\\s*|(?=\\*/)",
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.type.instance.jsdoc"
+ },
+ "2": {
+ "name": "punctuation.definition.bracket.curly.end.jsdoc"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#brackets"
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/v.tmLanguage.json b/node_modules/shiki/languages/v.tmLanguage.json
new file mode 100644
index 0000000..5b99506
--- /dev/null
+++ b/node_modules/shiki/languages/v.tmLanguage.json
@@ -0,0 +1,994 @@
+{
+ "name": "v",
+ "scopeName": "source.v",
+ "fileTypes": [".v", ".vh", ".vsh", ".vv", "v.mod"],
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#function-decl"
+ },
+ {
+ "include": "#as-is"
+ },
+ {
+ "include": "#attributes"
+ },
+ {
+ "include": "#assignment"
+ },
+ {
+ "include": "#module-decl"
+ },
+ {
+ "include": "#import-decl"
+ },
+ {
+ "include": "#hash-decl"
+ },
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#builtin-fix"
+ },
+ {
+ "include": "#escaped-fix"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#function-limited-overload-decl"
+ },
+ {
+ "include": "#function-extend-decl"
+ },
+ {
+ "include": "#function-exist"
+ },
+ {
+ "include": "#generic"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#type"
+ },
+ {
+ "include": "#enum"
+ },
+ {
+ "include": "#interface"
+ },
+ {
+ "include": "#struct"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#storage"
+ },
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#punctuations"
+ },
+ {
+ "include": "#variable-assign"
+ },
+ {
+ "include": "#function-decl"
+ }
+ ],
+ "repository": {
+ "as-is": {
+ "begin": "\\s+(as|is)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.$1.v"
+ }
+ },
+ "end": "([\\w.]*)",
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.alias.v"
+ }
+ }
+ },
+ "assignment": {
+ "name": "meta.definition.variable.v",
+ "match": "\\s+((?:\\:|\\+|\\-|\\*|/|\\%|\\&|\\||\\^)?=)\\s+",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "include": "#operators"
+ }
+ ]
+ }
+ }
+ },
+ "attributes": {
+ "name": "meta.definition.attribute.v",
+ "match": "^\\s*((\\[)(deprecated|unsafe|console|heap|manualfree|typedef|live|inline|flag|ref_only|direct_array_access|callconv)(\\]))",
+ "captures": {
+ "1": {
+ "name": "meta.function.attribute.v"
+ },
+ "2": {
+ "name": "punctuation.definition.begin.bracket.square.v"
+ },
+ "3": {
+ "name": "storage.modifier.attribute.v"
+ },
+ "4": {
+ "name": "punctuation.definition.end.bracket.square.v"
+ }
+ }
+ },
+ "variable-assign": {
+ "match": "[a-zA-Z_]\\w*(?:,\\s*[a-zA-Z_]\\w*)*(?=\\s*(?:=|:=))",
+ "captures": {
+ "0": {
+ "patterns": [
+ {
+ "match": "[a-zA-Z_]\\w*",
+ "name": "variable.other.assignment.v"
+ },
+ {
+ "include": "#punctuation"
+ }
+ ]
+ }
+ }
+ },
+ "module-decl": {
+ "name": "meta.module.v",
+ "begin": "^\\s*(module)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.module.v"
+ }
+ },
+ "end": "([\\w.]+)",
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.module.v"
+ }
+ }
+ },
+ "import-decl": {
+ "name": "meta.import.v",
+ "begin": "^\\s*(import)\\s+",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.import.v"
+ }
+ },
+ "end": "([\\w.]+)",
+ "endCaptures": {
+ "1": {
+ "name": "entity.name.import.v"
+ }
+ }
+ },
+ "hash-decl": {
+ "name": "markup.bold.v",
+ "begin": "^\\s*(#)",
+ "end": "$"
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "begin": "{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.bracket.curly.begin.v"
+ }
+ },
+ "end": "}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.bracket.curly.end.v"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.bracket.round.begin.v"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.bracket.round.end.v"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.bracket.square.begin.v"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.bracket.square.end.v"
+ }
+ },
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ ]
+ },
+ "builtin-fix": {
+ "patterns": [
+ {
+ "patterns": [
+ {
+ "name": "storage.modifier.v",
+ "match": "(const)(?=\\s*\\()"
+ },
+ {
+ "name": "keyword.$1.v",
+ "match": "\\b(fn|type|enum|struct|union|interface|map|assert|sizeof|typeof|__offsetof)\\b(?=\\s*\\()"
+ }
+ ]
+ },
+ {
+ "patterns": [
+ {
+ "name": "keyword.control.v",
+ "match": "(\\$if|\\$else)(?=\\s*\\()"
+ },
+ {
+ "name": "keyword.control.v",
+ "match": "\\b(as|in|is|or|break|continue|default|unsafe|match|if|else|for|go|spawn|goto|defer|return|shared|select|rlock|lock|atomic|asm)\\b(?=\\s*\\()"
+ }
+ ]
+ },
+ {
+ "patterns": [
+ {
+ "match": "(?<!.)(i?(?:8|16|nt|64|128)|u?(?:16|32|64|128)|f?(?:32|64))(?=\\s*\\()",
+ "captures": {
+ "1": {
+ "name": "storage.type.numeric.v"
+ }
+ },
+ "name": "meta.expr.numeric.cast.v"
+ },
+ {
+ "match": "(bool|byte|byteptr|charptr|voidptr|string|rune|size_t|[ui]size)(?=\\s*\\()",
+ "captures": {
+ "1": {
+ "name": "storage.type.$1.v"
+ }
+ },
+ "name": "meta.expr.bool.cast.v"
+ }
+ ]
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "name": "comment.block.documentation.v",
+ "begin": "/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.v"
+ }
+ },
+ "end": "\\*/",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.end.v"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "name": "comment.line.double-slash.v",
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.begin.v"
+ }
+ },
+ "end": "$"
+ }
+ ]
+ },
+ "constants": {
+ "name": "constant.language.v",
+ "match": "\\b(true|false|none)\\b"
+ },
+ "generic": {
+ "patterns": [
+ {
+ "name": "meta.definition.generic.v",
+ "match": "(?<=[\\w\\s+])(\\<)(\\w+)(\\>)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.bracket.angle.begin.v"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#illegal-name"
+ },
+ {
+ "match": "\\w+",
+ "name": "entity.name.generic.v"
+ }
+ ]
+ },
+ "3": {
+ "name": "punctuation.definition.bracket.angle.end.v"
+ }
+ }
+ }
+ ]
+ },
+ "function-decl": {
+ "name": "meta.definition.function.v",
+ "match": "^(\\bpub\\b\\s+)?(\\bfn\\b)\\s+(?:\\([^\\)]+\\)\\s+)?(?:(?:C\\.)?)(\\w+)\\s*((?<=[\\w\\s+])(\\<)(\\w+)(\\>))?",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.v"
+ },
+ "2": {
+ "name": "keyword.fn.v"
+ },
+ "3": {
+ "name": "entity.name.function.v"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#generic"
+ }
+ ]
+ }
+ }
+ },
+ "function-extend-decl": {
+ "name": "meta.definition.function.v",
+ "match": "^\\s*(pub)?\\s*(fn)\\s*(\\()([^\\)]*)(\\))\\s*(?:(?:C\\.)?)(\\w+)\\s*((?<=[\\w\\s+])(\\<)(\\w+)(\\>))?",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.v"
+ },
+ "2": {
+ "name": "keyword.fn.v"
+ },
+ "3": {
+ "name": "punctuation.definition.bracket.round.begin.v"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#storage"
+ },
+ {
+ "include": "#generic"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#punctuation"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.bracket.round.end.v"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#illegal-name"
+ },
+ {
+ "match": "\\w+",
+ "name": "entity.name.function.v"
+ }
+ ]
+ },
+ "7": {
+ "patterns": [
+ {
+ "include": "#generic"
+ }
+ ]
+ }
+ }
+ },
+ "function-limited-overload-decl": {
+ "name": "meta.definition.function.v",
+ "match": "^\\s*(pub)?\\s*(fn)\\s*(\\()([^\\)]*)(\\))\\s*([\\+\\-\\*\\/])?\\s*(\\()([^\\)]*)(\\))\\s*(?:(?:C\\.)?)(\\w+)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.v"
+ },
+ "2": {
+ "name": "keyword.fn.v"
+ },
+ "3": {
+ "name": "punctuation.definition.bracket.round.begin.v"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#storage"
+ },
+ {
+ "include": "#generic"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#punctuation"
+ }
+ ]
+ },
+ "5": {
+ "name": "punctuation.definition.bracket.round.end.v"
+ },
+ "6": {
+ "patterns": [
+ {
+ "include": "#operators"
+ }
+ ]
+ },
+ "7": {
+ "name": "punctuation.definition.bracket.round.begin.v"
+ },
+ "8": {
+ "patterns": [
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#storage"
+ },
+ {
+ "include": "#generic"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#punctuation"
+ }
+ ]
+ },
+ "9": {
+ "name": "punctuation.definition.bracket.round.end.v"
+ },
+ "10": {
+ "patterns": [
+ {
+ "include": "#illegal-name"
+ },
+ {
+ "match": "\\w+",
+ "name": "entity.name.function.v"
+ }
+ ]
+ }
+ }
+ },
+ "function-exist": {
+ "name": "meta.support.function.v",
+ "match": "(\\w+)((?<=[\\w\\s+])(\\<)(\\w+)(\\>))?(?=\\s*\\()",
+ "captures": {
+ "0": {
+ "name": "meta.function.call.v"
+ },
+ "1": {
+ "patterns": [
+ {
+ "include": "#illegal-name"
+ },
+ {
+ "match": "\\w+",
+ "name": "entity.name.function.v"
+ }
+ ]
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#generic"
+ }
+ ]
+ }
+ }
+ },
+ "type": {
+ "name": "meta.definition.type.v",
+ "match": "^\\s*(?:(pub)?\\s+)?(type)\\s+(\\w*)\\s+(?:\\w+\\.+)?(\\w*)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.$1.v"
+ },
+ "2": {
+ "name": "storage.type.type.v"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#illegal-name"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "name": "entity.name.type.v",
+ "match": "\\w+"
+ }
+ ]
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "#illegal-name"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "name": "entity.name.type.v",
+ "match": "\\w+"
+ }
+ ]
+ }
+ }
+ },
+ "enum": {
+ "name": "meta.definition.enum.v",
+ "match": "^\\s*(?:(pub)?\\s+)?(enum)\\s+(?:\\w+\\.)?(\\w*)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.$1.v"
+ },
+ "2": {
+ "name": "storage.type.enum.v"
+ },
+ "3": {
+ "name": "entity.name.enum.v"
+ }
+ }
+ },
+ "interface": {
+ "name": "meta.definition.interface.v",
+ "match": "^\\s*(?:(pub)?\\s+)?(interface)\\s+(\\w*)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.$1.v"
+ },
+ "2": {
+ "name": "keyword.interface.v"
+ },
+ "3": {
+ "patterns": [
+ {
+ "include": "#illegal-name"
+ },
+ {
+ "name": "entity.name.interface.v",
+ "match": "\\w+"
+ }
+ ]
+ }
+ }
+ },
+ "struct": {
+ "patterns": [
+ {
+ "name": "meta.definition.struct.v",
+ "begin": "^\\s*(?:(mut|pub(?:\\s+mut)?|__global)\\s+)?(struct|union)\\s+([\\w.]+)\\s*|({)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.modifier.$1.v"
+ },
+ "2": {
+ "name": "storage.type.struct.v"
+ },
+ "3": {
+ "name": "entity.name.type.v"
+ },
+ "4": {
+ "name": "punctuation.definition.bracket.curly.begin.v"
+ }
+ },
+ "end": "\\s*|(})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.bracket.curly.end.v"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#struct-access-modifier"
+ },
+ {
+ "match": "\\b(\\w+)\\s+([\\w\\[\\]\\*&.]+)(?:\\s*(=)\\s*((?:.(?=$|//|/\\*))*+))?",
+ "captures": {
+ "1": {
+ "name": "variable.other.property.v"
+ },
+ "2": {
+ "patterns": [
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "match": "\\w+",
+ "name": "storage.type.other.v"
+ }
+ ]
+ },
+ "3": {
+ "name": "keyword.operator.assignment.v"
+ },
+ "4": {
+ "patterns": [
+ {
+ "include": "$self"
+ }
+ ]
+ }
+ }
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "$self"
+ }
+ ]
+ },
+ {
+ "name": "meta.definition.struct.v",
+ "match": "^\\s*(?:(mut|pub(?:\\s+mut)?|__global))\\s+?(struct)\\s+(?:\\s+([\\w.]+))?",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.$1.v"
+ },
+ "2": {
+ "name": "storage.type.struct.v"
+ },
+ "3": {
+ "name": "entity.name.struct.v"
+ }
+ }
+ }
+ ]
+ },
+ "struct-access-modifier": {
+ "match": "(?<=\\s|^)(mut|pub(?:\\s+mut)?|__global)(:|\\b)",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.$1.v"
+ },
+ "2": {
+ "name": "punctuation.separator.struct.key-value.v"
+ }
+ }
+ },
+ "punctuation": {
+ "patterns": [
+ {
+ "name": "punctuation.delimiter.period.dot.v",
+ "match": "\\."
+ },
+ {
+ "name": "punctuation.delimiter.comma.v",
+ "match": ","
+ },
+ {
+ "name": "punctuation.separator.key-value.colon.v",
+ "match": ":"
+ },
+ {
+ "name": "punctuation.definition.other.semicolon.v",
+ "match": ";"
+ },
+ {
+ "name": "punctuation.definition.other.questionmark.v",
+ "match": "\\?"
+ },
+ {
+ "name": "punctuation.hash.v",
+ "match": "#"
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "name": "keyword.control.v",
+ "match": "(\\$if|\\$else)"
+ },
+ {
+ "name": "keyword.control.v",
+ "match": "(?<!@)\\b(as|it|is|in|or|break|continue|default|unsafe|match|if|else|for|go|spawn|goto|defer|return|shared|select|rlock|lock|atomic|asm)\\b"
+ },
+ {
+ "name": "keyword.$1.v",
+ "match": "(?<!@)\\b(fn|type|typeof|enum|struct|interface|map|assert|sizeof|__offsetof)\\b"
+ }
+ ]
+ },
+ "storage": {
+ "name": "storage.modifier.v",
+ "match": "\\b(const|mut|pub)\\b"
+ },
+ "types": {
+ "patterns": [
+ {
+ "name": "storage.type.numeric.v",
+ "match": "(?<!\\.)\\b(i(8|16|nt|64|128)|u(8|16|32|64|128)|f(32|64))\\b"
+ },
+ {
+ "name": "storage.type.$1.v",
+ "match": "(?<!\\.)\\b(bool|byte|byteptr|charptr|voidptr|string|ustring|rune)\\b"
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "name": "keyword.operator.arithmetic.v",
+ "match": "(\\+|\\-|\\*|\\/|\\%|\\+\\+|\\-\\-|\\>\\>|\\<\\<)"
+ },
+ {
+ "name": "keyword.operator.relation.v",
+ "match": "(\\=\\=|\\!\\=|\\>|\\<|\\>\\=|\\<\\=)"
+ },
+ {
+ "name": "keyword.operator.assignment.v",
+ "match": "(\\:\\=|\\=|\\+\\=|\\-\\=|\\*\\=|\\/\\=|\\%\\=|\\&\\=|\\|\\=|\\^\\=|\\~\\=|\\&\\&\\=|\\|\\|\\=|\\>\\>\\=|\\<\\<\\=)"
+ },
+ {
+ "name": "keyword.operator.bitwise.v",
+ "match": "(\\&|\\||\\^|\\~|<(?!<)|>(?!>))"
+ },
+ {
+ "name": "keyword.operator.logical.v",
+ "match": "(\\&\\&|\\|\\||\\!)"
+ },
+ {
+ "name": "keyword.operator.optional.v",
+ "match": "\\?"
+ }
+ ]
+ },
+ "numbers": {
+ "patterns": [
+ {
+ "name": "constant.numeric.exponential.v",
+ "match": "([0-9]+(_?))+(\\.)([0-9]+[eE][-+]?[0-9]+)"
+ },
+ {
+ "name": "constant.numeric.float.v",
+ "match": "([0-9]+(_?))+(\\.)([0-9]+)"
+ },
+ {
+ "name": "constant.numeric.binary.v",
+ "match": "(?:0b)(?:(?:[0-1]+)(?:_?))+"
+ },
+ {
+ "name": "constant.numeric.octal.v",
+ "match": "(?:0o)(?:(?:[0-7]+)(?:_?))+"
+ },
+ {
+ "name": "constant.numeric.hex.v",
+ "match": "(?:0x)(?:(?:[0-9a-fA-F]+)(?:_?))+"
+ },
+ {
+ "name": "constant.numeric.integer.v",
+ "match": "(?:(?:[0-9]+)(?:[_]?))+"
+ }
+ ]
+ },
+ "punctuations": {
+ "patterns": [
+ {
+ "name": "punctuation.accessor.v",
+ "match": "(?:\\.)"
+ },
+ {
+ "name": "punctuation.separator.comma.v",
+ "match": "(?:,)"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "`",
+ "end": "`",
+ "name": "string.quoted.rune.v",
+ "patterns": [
+ {
+ "include": "#string-escaped-char"
+ },
+ {
+ "include": "#string-interpolation"
+ },
+ {
+ "include": "#string-placeholder"
+ }
+ ]
+ },
+ {
+ "begin": "(r)'",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.string.v"
+ }
+ },
+ "end": "'",
+ "name": "string.quoted.raw.v",
+ "patterns": [
+ {
+ "include": "#string-interpolation"
+ },
+ {
+ "include": "#string-placeholder"
+ }
+ ]
+ },
+ {
+ "begin": "(r)\"",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.string.v"
+ }
+ },
+ "end": "\"",
+ "name": "string.quoted.raw.v",
+ "patterns": [
+ {
+ "include": "#string-interpolation"
+ },
+ {
+ "include": "#string-placeholder"
+ }
+ ]
+ },
+ {
+ "begin": "(c?)'",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.string.v"
+ }
+ },
+ "end": "'",
+ "name": "string.quoted.v",
+ "patterns": [
+ {
+ "include": "#string-escaped-char"
+ },
+ {
+ "include": "#string-interpolation"
+ },
+ {
+ "include": "#string-placeholder"
+ }
+ ]
+ },
+ {
+ "begin": "(c?)\"",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.string.v"
+ }
+ },
+ "end": "\"",
+ "name": "string.quoted.v",
+ "patterns": [
+ {
+ "include": "#string-escaped-char"
+ },
+ {
+ "include": "#string-interpolation"
+ },
+ {
+ "include": "#string-placeholder"
+ }
+ ]
+ }
+ ]
+ },
+ "string-escaped-char": {
+ "patterns": [
+ {
+ "name": "constant.character.escape.v",
+ "match": "\\\\([0-7]{3}|[\\$abfnrtv\\\\'\"]|x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})"
+ },
+ {
+ "name": "invalid.illegal.unknown-escape.v",
+ "match": "\\\\[^0-7\\$xuUabfnrtv\\'\"]"
+ }
+ ]
+ },
+ "string-interpolation": {
+ "name": "meta.string.interpolation.v",
+ "match": "(\\$([\\w.]+|\\{.*?\\}))",
+ "captures": {
+ "1": {
+ "patterns": [
+ {
+ "name": "invalid.illegal.v",
+ "match": "\\$\\d[\\.\\w]+"
+ },
+ {
+ "name": "variable.other.interpolated.v",
+ "match": "\\$([\\.\\w]+|\\{.*?\\})"
+ }
+ ]
+ }
+ }
+ },
+ "string-placeholder": {
+ "match": "%(\\[\\d+\\])?([\\+#\\-0\\x20]{,2}((\\d+|\\*)?(\\.?(\\d+|\\*|(\\[\\d+\\])\\*?)?(\\[\\d+\\])?)?))?[vT%tbcdoqxXUbeEfFgGsp]",
+ "name": "constant.other.placeholder.v"
+ },
+ "illegal-name": {
+ "match": "\\d\\w+",
+ "name": "invalid.illegal.v"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/vb.tmLanguage.json b/node_modules/shiki/languages/vb.tmLanguage.json
new file mode 100644
index 0000000..096d7da
--- /dev/null
+++ b/node_modules/shiki/languages/vb.tmLanguage.json
@@ -0,0 +1,238 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/textmate/asp.vb.net.tmbundle/blob/master/Syntaxes/ASP%20VB.net.plist",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/textmate/asp.vb.net.tmbundle/commit/72d44550b3286d0382d7be0624140cf97857ff69",
+ "name": "vb",
+ "scopeName": "source.asp.vb.net",
+ "comment": "Modified from the original ASP bundle. Originally modified by Thomas Aylott subtleGradient.com",
+ "patterns": [
+ {
+ "match": "\\n",
+ "name": "meta.ending-space"
+ },
+ {
+ "include": "#round-brackets"
+ },
+ {
+ "begin": "^(?=\\t)",
+ "end": "(?=[^\\t])",
+ "name": "meta.leading-space",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "meta.odd-tab.tabs"
+ },
+ "2": {
+ "name": "meta.even-tab.tabs"
+ }
+ },
+ "match": "(\\t)(\\t)?"
+ }
+ ]
+ },
+ {
+ "begin": "^(?= )",
+ "end": "(?=[^ ])",
+ "name": "meta.leading-space",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "meta.odd-tab.spaces"
+ },
+ "2": {
+ "name": "meta.even-tab.spaces"
+ }
+ },
+ "match": "( )( )?"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.function.asp"
+ },
+ "2": {
+ "name": "entity.name.function.asp"
+ },
+ "3": {
+ "name": "punctuation.definition.parameters.asp"
+ },
+ "4": {
+ "name": "variable.parameter.function.asp"
+ },
+ "5": {
+ "name": "punctuation.definition.parameters.asp"
+ }
+ },
+ "match": "^\\s*((?i:function|sub))\\s*([a-zA-Z_]\\w*)\\s*(\\()([^)]*)(\\)).*\\n?",
+ "name": "meta.function.asp"
+ },
+ {
+ "begin": "(^[ \\t]+)?(?=')",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.asp"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.asp"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.apostrophe.asp"
+ }
+ ]
+ },
+ {
+ "match": "(?i:\\b(If|Then|Else|ElseIf|Else If|End If|While|Wend|For|To|Each|Case|Select|End Select|Return|Continue|Do|Until|Loop|Next|With|Exit Do|Exit For|Exit Function|Exit Property|Exit Sub|IIf)\\b)",
+ "name": "keyword.control.asp"
+ },
+ {
+ "match": "(?i:\\b(Mod|And|Not|Or|Xor|as)\\b)",
+ "name": "keyword.operator.asp"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.type.asp"
+ },
+ "2": {
+ "name": "variable.other.bfeac.asp"
+ },
+ "3": {
+ "name": "meta.separator.comma.asp"
+ }
+ },
+ "match": "(?i:(dim)\\s*(?:(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b)\\s*(,?)))",
+ "name": "variable.other.dim.asp"
+ },
+ {
+ "match": "(?i:\\s*\\b(Call|Class|Const|Dim|Redim|Function|Sub|Private Sub|Public Sub|End Sub|End Function|End Class|End Property|Public Property|Private Property|Set|Let|Get|New|Randomize|Option Explicit|On Error Resume Next|On Error GoTo)\\b\\s*)",
+ "name": "storage.type.asp"
+ },
+ {
+ "match": "(?i:\\b(Private|Public|Default)\\b)",
+ "name": "storage.modifier.asp"
+ },
+ {
+ "match": "(?i:\\s*\\b(Empty|False|Nothing|Null|True)\\b)",
+ "name": "constant.language.asp"
+ },
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.asp"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.asp"
+ }
+ },
+ "name": "string.quoted.double.asp",
+ "patterns": [
+ {
+ "match": "\"\"",
+ "name": "constant.character.escape.apostrophe.asp"
+ }
+ ]
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.variable.asp"
+ }
+ },
+ "match": "(\\$)[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b\\s*",
+ "name": "variable.other.asp"
+ },
+ {
+ "match": "(?i:\\b(Application|ObjectContext|Request|Response|Server|Session)\\b)",
+ "name": "support.class.asp"
+ },
+ {
+ "match": "(?i:\\b(Contents|StaticObjects|ClientCertificate|Cookies|Form|QueryString|ServerVariables)\\b)",
+ "name": "support.class.collection.asp"
+ },
+ {
+ "match": "(?i:\\b(TotalBytes|Buffer|CacheControl|Charset|ContentType|Expires|ExpiresAbsolute|IsClientConnected|PICS|Status|ScriptTimeout|CodePage|LCID|SessionID|Timeout)\\b)",
+ "name": "support.constant.asp"
+ },
+ {
+ "match": "(?i:\\b(Lock|Unlock|SetAbort|SetComplete|BinaryRead|AddHeader|AppendToLog|BinaryWrite|Clear|End|Flush|Redirect|Write|CreateObject|HTMLEncode|MapPath|URLEncode|Abandon|Convert|Regex)\\b)",
+ "name": "support.function.asp"
+ },
+ {
+ "match": "(?i:\\b(Application_OnEnd|Application_OnStart|OnTransactionAbort|OnTransactionCommit|Session_OnEnd|Session_OnStart)\\b)",
+ "name": "support.function.event.asp"
+ },
+ {
+ "match": "(?i:(?<=as )(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b))",
+ "name": "support.type.vb.asp"
+ },
+ {
+ "match": "(?i:\\b(Array|Add|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Conversions|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Derived|Math|Escape|Eval|Exists|Exp|Filter|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetLocale|GetObject|GetRef|Hex|Hour|InputBox|InStr|InStrRev|Int|Fix|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Item|Items|Join|Keys|LBound|LCase|Left|Len|LoadPicture|Log|LTrim|RTrim|Trim|Maths|Mid|Minute|Month|MonthName|MsgBox|Now|Oct|Remove|RemoveAll|Replace|RGB|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|SetLocale|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|Timer|TimeSerial|TimeValue|TypeName|UBound|UCase|Unescape|VarType|Weekday|WeekdayName|Year)\\b)",
+ "name": "support.function.vb.asp"
+ },
+ {
+ "match": "-?\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)(L|l|UL|ul|u|U|F|f)?\\b",
+ "name": "constant.numeric.asp"
+ },
+ {
+ "match": "(?i:\\b(vbtrue|vbfalse|vbcr|vbcrlf|vbformfeed|vblf|vbnewline|vbnullchar|vbnullstring|int32|vbtab|vbverticaltab|vbbinarycompare|vbtextcomparevbsunday|vbmonday|vbtuesday|vbwednesday|vbthursday|vbfriday|vbsaturday|vbusesystemdayofweek|vbfirstjan1|vbfirstfourdays|vbfirstfullweek|vbgeneraldate|vblongdate|vbshortdate|vblongtime|vbshorttime|vbobjecterror|vbEmpty|vbNull|vbInteger|vbLong|vbSingle|vbDouble|vbCurrency|vbDate|vbString|vbObject|vbError|vbBoolean|vbVariant|vbDataObject|vbDecimal|vbByte|vbArray)\\b)",
+ "name": "support.type.vb.asp"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "entity.name.function.asp"
+ }
+ },
+ "match": "(?i:(\\b[a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?\\b)(?=\\(\\)?))",
+ "name": "support.function.asp"
+ },
+ {
+ "match": "(?i:((?<=(\\+|=|-|\\&|\\\\|/|<|>|\\(|,))\\s*\\b([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?)\\b(?!(\\(|\\.))|\\b([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*?)\\b(?=\\s*(\\+|=|-|\\&|\\\\|/|<|>|\\(|\\)))))",
+ "name": "variable.other.asp"
+ },
+ {
+ "match": "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|/=|%=|\\+=|\\-=|&=|\\^=|\\b(in|instanceof|new|delete|typeof|void)\\b",
+ "name": "keyword.operator.js"
+ }
+ ],
+ "repository": {
+ "round-brackets": {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.round-brackets.begin.asp"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.round-brackets.end.asp"
+ }
+ },
+ "name": "meta.round-brackets",
+ "patterns": [
+ {
+ "include": "source.asp.vb.net"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/verilog.tmLanguage.json b/node_modules/shiki/languages/verilog.tmLanguage.json
new file mode 100644
index 0000000..2d895d7
--- /dev/null
+++ b/node_modules/shiki/languages/verilog.tmLanguage.json
@@ -0,0 +1,303 @@
+{
+ "fileTypes": ["v", "vh"],
+ "keyEquivalent": "^~V",
+ "name": "verilog",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#module_pattern"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#operators"
+ }
+ ],
+ "repository": {
+ "comments": {
+ "patterns": [
+ {
+ "begin": "(^[ \\t]+)?(?=//)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.verilog"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "//",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.verilog"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.double-slash.verilog"
+ }
+ ]
+ },
+ {
+ "begin": "/\\*",
+ "end": "\\*/",
+ "name": "comment.block.c-style.verilog"
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "match": "`(?!(celldefine|endcelldefine|default_nettype|define|undef|ifdef|ifndef|else|endif|include|resetall|timescale|unconnected_drive|nounconnected_drive))[a-z_A-Z][a-zA-Z0-9_$]*",
+ "name": "variable.other.constant.verilog"
+ },
+ {
+ "match": "[0-9]*'[bBoOdDhH][a-fA-F0-9_xXzZ]+\\b",
+ "name": "constant.numeric.sized_integer.verilog"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "constant.numeric.integer.verilog"
+ },
+ "2": {
+ "name": "punctuation.separator.range.verilog"
+ },
+ "3": {
+ "name": "constant.numeric.integer.verilog"
+ }
+ },
+ "match": "\\b(\\d+)(:)(\\d+)\\b",
+ "name": "meta.block.numeric.range.verilog"
+ },
+ {
+ "match": "\\b\\d[\\d_]*(?i:e\\d+)?\\b",
+ "name": "constant.numeric.integer.verilog"
+ },
+ {
+ "match": "\\b\\d+\\.\\d+(?i:e\\d+)?\\b",
+ "name": "constant.numeric.real.verilog"
+ },
+ {
+ "match": "#\\d+",
+ "name": "constant.numeric.delay.verilog"
+ },
+ {
+ "match": "\\b[01xXzZ]+\\b",
+ "name": "constant.numeric.logic.verilog"
+ }
+ ]
+ },
+ "instantiation_patterns": {
+ "patterns": [
+ {
+ "include": "#keywords"
+ },
+ {
+ "begin": "^\\s*([a-zA-Z][a-zA-Z0-9_]*)\\s+([a-zA-Z][a-zA-Z0-9_]*)(?<!begin|if)\\s*(?=\\(|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.module.reference.verilog"
+ },
+ "2": {
+ "name": "entity.name.tag.module.identifier.verilog"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.expression.verilog"
+ }
+ },
+ "name": "meta.block.instantiation.parameterless.verilog",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#strings"
+ }
+ ]
+ },
+ {
+ "begin": "^\\s*([a-zA-Z][a-zA-Z0-9_]*)\\s*(#)(?=\\s*\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.module.reference.verilog"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.expression.verilog"
+ }
+ },
+ "name": "meta.block.instantiation.with.parameters.verilog",
+ "patterns": [
+ {
+ "include": "#parenthetical_list"
+ },
+ {
+ "match": "[a-zA-Z][a-zA-Z0-9_]*",
+ "name": "entity.name.tag.module.identifier.verilog"
+ }
+ ]
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "match": "\\b(always|and|assign|attribute|begin|buf|bufif0|bufif1|case[xz]?|cmos|deassign|default|defparam|disable|edge|else|end(attribute|case|function|generate|module|primitive|specify|table|task)?|event|for|force|forever|fork|function|generate|genvar|highz(01)|if(none)?|initial|inout|input|integer|join|localparam|medium|module|large|macromodule|nand|negedge|nmos|nor|not|notif(01)|or|output|parameter|pmos|posedge|primitive|pull0|pull1|pulldown|pullup|rcmos|real|realtime|reg|release|repeat|rnmos|rpmos|rtran|rtranif(01)|scalared|signed|small|specify|specparam|strength|strong0|strong1|supply0|supply1|table|task|time|tran|tranif(01)|tri(01)?|tri(and|or|reg)|unsigned|vectored|wait|wand|weak(01)|while|wire|wor|xnor|xor)\\b",
+ "name": "keyword.other.verilog"
+ },
+ {
+ "match": "^\\s*`((cell)?define|default_(decay_time|nettype|trireg_strength)|delay_mode_(path|unit|zero)|ifdef|ifndef|include|end(if|celldefine)|else|(no)?unconnected_drive|resetall|timescale|undef)\\b",
+ "name": "keyword.other.compiler.directive.verilog"
+ },
+ {
+ "match": "\\$(f(open|close)|readmem(b|h)|timeformat|printtimescale|stop|finish|(s|real)?time|realtobits|bitstoreal|rtoi|itor|(f)?(display|write(h|b)))\\b",
+ "name": "support.function.system.console.tasks.verilog"
+ },
+ {
+ "match": "\\$(random|dist_(chi_square|erlang|exponential|normal|poisson|t|uniform))\\b",
+ "name": "support.function.system.random_number.tasks.verilog"
+ },
+ {
+ "match": "\\$((a)?sync\\$((n)?and|(n)or)\\$(array|plane))\\b",
+ "name": "support.function.system.pld_modeling.tasks.verilog"
+ },
+ {
+ "match": "\\$(q_(initialize|add|remove|full|exam))\\b",
+ "name": "support.function.system.stochastic.tasks.verilog"
+ },
+ {
+ "match": "\\$(hold|nochange|period|recovery|setup(hold)?|skew|width)\\b",
+ "name": "support.function.system.timing.tasks.verilog"
+ },
+ {
+ "match": "\\$(dump(file|vars|off|on|all|limit|flush))\\b",
+ "name": "support.function.system.vcd.tasks.verilog"
+ },
+ {
+ "match": "\\$(countdrivers|list|input|scope|showscopes|(no)?(key|log)|reset(_count|_value)?|(inc)?save|restart|showvars|getpattern|sreadmem(b|h)|scale)",
+ "name": "support.function.non-standard.tasks.verilog"
+ }
+ ]
+ },
+ "module_pattern": {
+ "patterns": [
+ {
+ "begin": "\\b(module)\\s+([a-zA-Z][a-zA-Z0-9_]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.module.verilog"
+ },
+ "2": {
+ "name": "entity.name.type.module.verilog"
+ }
+ },
+ "end": "\\bendmodule\\b",
+ "endCaptures": {
+ "0": {
+ "name": "storage.type.module.verilog"
+ }
+ },
+ "name": "meta.block.module.verilog",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#instantiation_patterns"
+ },
+ {
+ "include": "#operators"
+ }
+ ]
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "match": "\\+|-|\\*|/|%|(<|>)=?|(!|=)?==?|!|&&?|\\|\\|?|\\^?~|~\\^?",
+ "name": "keyword.operator.verilog"
+ }
+ ]
+ },
+ "parenthetical_list": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.list.verilog"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.list.verilog"
+ }
+ },
+ "name": "meta.block.parenthetical_list.verilog",
+ "patterns": [
+ {
+ "include": "#parenthetical_list"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#strings"
+ }
+ ]
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "end": "\"",
+ "name": "string.quoted.double.verilog",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.verilog"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "scopeName": "source.verilog",
+ "uuid": "7F4396B3-A33E-44F0-8502-98CA6C25971F"
+}
diff --git a/node_modules/shiki/languages/vhdl.tmLanguage.json b/node_modules/shiki/languages/vhdl.tmLanguage.json
new file mode 100644
index 0000000..4323a49
--- /dev/null
+++ b/node_modules/shiki/languages/vhdl.tmLanguage.json
@@ -0,0 +1,1436 @@
+{
+ "fileTypes": ["vhd", "vhdl", "vho", "vht"],
+ "name": "vhdl",
+ "patterns": [
+ {
+ "include": "#block_processing"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ],
+ "repository": {
+ "architecture_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\n\t\t\t\t\t\t# The word architecture $1\n\t\t\t\t\t\t\\b((?i:architecture))\\s+\n\t\t\t\t\t\t\n\t\t\t\t\t\t# Followed up by a valid $3 or invalid identifier $4\n\t\t\t\t\t\t(([a-zA-z][a-zA-z0-9_]*)|(.+))(?=\\s)\\s+\n\n\t\t\t\t\t\t# The word of $5\n\t\t\t\t\t\t((?i:of))\\s+\n\n\t\t\t\t\t\t# Followed by a valid $7 or invalid identifier $8\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))(?=\\s*(?i:is))\\b\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "entity.name.type.architecture.begin.vhdl"
+ },
+ "4": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ },
+ "5": {
+ "name": "keyword.language.vhdl"
+ },
+ "7": {
+ "name": "entity.name.type.entity.reference.vhdl"
+ },
+ "8": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ }
+ },
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end))\n\n\t\t\t\t\t\t# Optional word architecture $3\n\t\t\t\t\t\t(\\s+((?i:architecture)))?\n\n\t\t\t\t\t\t# Optional same identifier $6 or illegal identifier $7\n\t\t\t\t\t\t(\\s+((\\3)|(.+?)))?\n\n\t\t\t\t\t\t# This will cause the previous to capture until just before the ; or $\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "keyword.language.vhdl"
+ },
+ "6": {
+ "name": "entity.name.type.architecture.end.vhdl"
+ },
+ "7": {
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
+ }
+ },
+ "name": "support.block.architecture",
+ "patterns": [
+ {
+ "include": "#function_definition_pattern"
+ },
+ {
+ "include": "#procedure_definition_pattern"
+ },
+ {
+ "include": "#component_pattern"
+ },
+ {
+ "include": "#if_pattern"
+ },
+ {
+ "include": "#process_pattern"
+ },
+ {
+ "include": "#type_pattern"
+ },
+ {
+ "include": "#record_pattern"
+ },
+ {
+ "include": "#for_pattern"
+ },
+ {
+ "include": "#entity_instantiation_pattern"
+ },
+ {
+ "include": "#component_instantiation_pattern"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "attribute_list": {
+ "patterns": [
+ {
+ "begin": "\\'\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.vhdl"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parenthetical_list"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "block_processing": {
+ "patterns": [
+ {
+ "include": "#package_pattern"
+ },
+ {
+ "include": "#package_body_pattern"
+ },
+ {
+ "include": "#entity_pattern"
+ },
+ {
+ "include": "#architecture_pattern"
+ }
+ ]
+ },
+ "case_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t# Beginning of line ...\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# Optional identifier ... $3 or invalid identifier $4\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t ([a-zA-Z][a-zA-Z0-9_]*)\n\t\t\t\t\t\t\t\t|(.+?)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\\s*:\\s*\n\t\t\t\t\t\t)?\n\n\t\t\t\t\t\t# The word case $5\n\t\t\t\t\t\t\\b((?i:case))\\b\n\t\t\t\t\t",
+ "beginCaptures": {
+ "3": {
+ "name": "entity.name.tag.case.begin.vhdl"
+ },
+ "4": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ },
+ "5": {
+ "name": "keyword.language.vhdl"
+ }
+ },
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end))\\s*\n\n\t\t\t\t\t\t# The word case $4 or invalid word $5\n\t\t\t\t\t\t(\\s+(((?i:case))|(.*?)))\n\n\t\t\t\t\t\t# Optional identifier from before $8 or illegal $9\n\t\t\t\t\t\t(\\s+((\\2)|(.*?)))?\n\n\t\t\t\t\t\t# Ending with a semicolon\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "4": {
+ "name": "keyword.language.vhdl"
+ },
+ "5": {
+ "name": "invalid.illegal.case.required.vhdl"
+ },
+ "8": {
+ "name": "entity.name.tag.case.end.vhdl"
+ },
+ "9": {
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#control_patterns"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "cleanup": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#constants_numeric"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#attribute_list"
+ },
+ {
+ "include": "#syntax_highlighting"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "match": "--.*$\\n?",
+ "name": "comment.line.double-dash.vhdl"
+ }
+ ]
+ },
+ "component_instantiation_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line ...\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# Match a valid identifier $1\n\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\n\n\t\t\t\t\t\t# Colon! $2\n\t\t\t\t\t\t\\s*(:)\\s*\n\n\t\t\t\t\t\t# Another valid identifier $3\n\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\\b\n\n\t\t\t\t\t\t# Make sure we are just the other word, or the beginning of\n\t\t\t\t\t\t# a generic or port mapping\n\t\t\t\t\t\t(?=\\s*($|generic|port))\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.section.component_instantiation.vhdl"
+ },
+ "2": {
+ "name": "punctuation.vhdl"
+ },
+ "3": {
+ "name": "entity.name.tag.component.reference.vhdl"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parenthetical_list"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "component_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line ...\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# The word component $1\n\t\t\t\t\t\t\\b((?i:component))\\s+\n\n\t\t\t\t\t\t# A valid identifier $3 or invalid identifier $4\n\t\t\t\t\t\t(([a-zA-Z_][a-zA-Z0-9_]*)\\s*|(.+?))(?=\\b(?i:is|port)\\b|$|--)\n\n\t\t\t\t\t\t# Optional word is $6\n\t\t\t\t\t\t(\\b((?i:is\\b)))?\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "entity.name.type.component.begin.vhdl"
+ },
+ "4": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ },
+ "6": {
+ "name": "keyword.language.vhdl"
+ }
+ },
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end))\\s+\n\n\t\t\t\t\t\t# The word component $3 or illegal word $4\n\t\t\t\t\t\t(((?i:component\\b))|(.+?))(?=\\s*|;)\n\t\t\t\t\t\t\n\t\t\t\t\t\t# Optional identifier $7 or illegal mismatched $8\n\t\t\t\t\t\t(\\s+((\\3)|(.+?)))?(?=\\s*;)\n\t\t\t\t\t",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "keyword.language.vhdl"
+ },
+ "4": {
+ "name": "invalid.illegal.component.keyword.required.vhdl"
+ },
+ "7": {
+ "name": "entity.name.type.component.end.vhdl"
+ },
+ "8": {
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#generic_list_pattern"
+ },
+ {
+ "include": "#port_list_pattern"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ }
+ ]
+ },
+ "constants_numeric": {
+ "patterns": [
+ {
+ "match": "\\b([+\\-]?[\\d_]+\\.[\\d_]+([eE][+\\-]?[\\d_]+)?)\\b",
+ "name": "constant.numeric.floating_point.vhdl"
+ },
+ {
+ "match": "\\b\\d+#[\\h_]+#\\b",
+ "name": "constant.numeric.base_pound_number_pound.vhdl"
+ },
+ {
+ "match": "\\b[\\d_]+([eE][\\d_]+)?\\b",
+ "name": "constant.numeric.integer.vhdl"
+ },
+ {
+ "match": "[xX]\"[0-9a-fA-F_uUxXzZwWlLhH\\-]+\"",
+ "name": "constant.numeric.quoted.double.string.hex.vhdl"
+ },
+ {
+ "match": "[oO]\"[0-7_uUxXzZwWlLhH\\-]+\"",
+ "name": "constant.numeric.quoted.double.string.octal.vhdl"
+ },
+ {
+ "match": "[bB]?\"[01_uUxXzZwWlLhH\\-]+\"",
+ "name": "constant.numeric.quoted.double.string.binary.vhdl"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.quoted.double.string.vhdl"
+ }
+ },
+ "match": "([bBoOxX]\".+?\")",
+ "name": "constant.numeric.quoted.double.string.illegal.vhdl"
+ },
+ {
+ "match": "'[01uUxXzZwWlLhH\\-]'",
+ "name": "constant.numeric.quoted.single.std_logic"
+ }
+ ]
+ },
+ "control_patterns": {
+ "patterns": [
+ {
+ "include": "#case_pattern"
+ },
+ {
+ "include": "#if_pattern"
+ },
+ {
+ "include": "#for_pattern"
+ },
+ {
+ "include": "#while_pattern"
+ }
+ ]
+ },
+ "entity_instantiation_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# Component identifier or illegal identifier $1\n\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\n\n\t\t\t\t\t\t# Colon! $2\n\t\t\t\t\t\t\\s*(:)\\s*\n\n\t\t\t\t\t\t# Optional word use $4\n\t\t\t\t\t\t(((?i:use))\\s+)?\n\n\t\t\t\t\t\t# Required word entity $5\n\t\t\t\t\t\t((?i:entity))\\s+\n\n\t\t\t\t\t\t# Optional library unit identifier $8 for invalid identifier $9 followed by a dot $10\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\n\t\t\t\t\t\t\t(\\.)\n\t\t\t\t\t\t)?\n\n\t\t\t\t\t\t# Entity name reference $12 or illegal identifier $13\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\n\n\t\t\t\t\t\t# Check to see if we are being followed by either open paren, end of line, or port or generic words\n\t\t\t\t\t\t(?=\\s*(\\(|$|(?i:port|generic)))\n\n\t\t\t\t\t\t# Optional architecture elaboration\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# Open paren $16\n\t\t\t\t\t\t\t\\s*(\\()\\s*\n\n\t\t\t\t\t\t\t# Arch identifier $18 or invalid identifier $19\n\t\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))(?=\\s*\\))\n\n\t\t\t\t\t\t\t# Close paren $21\n\t\t\t\t\t\t\t\\s*(\\))\n\t\t\t\t\t\t)?\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.section.entity_instantiation.vhdl"
+ },
+ "2": {
+ "name": "punctuation.vhdl"
+ },
+ "4": {
+ "name": "keyword.language.vhdl"
+ },
+ "5": {
+ "name": "keyword.language.vhdl"
+ },
+ "8": {
+ "name": "entity.name.tag.library.reference.vhdl"
+ },
+ "9": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ },
+ "10": {
+ "name": "punctuation.vhdl"
+ },
+ "12": {
+ "name": "entity.name.tag.entity.reference.vhdl"
+ },
+ "13": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ },
+ "16": {
+ "name": "punctuation.vhdl"
+ },
+ "18": {
+ "name": "entity.name.tag.architecture.reference.vhdl"
+ },
+ "19": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ },
+ "21": {
+ "name": "punctuation.vhdl"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parenthetical_list"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "entity_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line ...\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# The word entity $1\n\t\t\t\t\t\t((?i:entity\\b))\\s+\n\n\t\t\t\t\t\t# The identifier $3 or an invalid identifier $4\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))(?=\\s)\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "entity.name.type.entity.begin.vhdl"
+ },
+ "4": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ }
+ },
+ "end": "(?x)\n\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end\\b))\n\n\t\t\t\t\t\t# Optional word entity $3\n\t\t\t\t\t\t(\\s+((?i:entity)))?\n\n\t\t\t\t\t\t# Optional identifier match $6 or indentifier mismatch $7\n\t\t\t\t\t\t(\\s+((\\3)|(.+?)))?\n\t\t\t\t\t\t\n\t\t\t\t\t\t# Make sure there is a semicolon following\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "keyword.language.vhdl"
+ },
+ "6": {
+ "name": "entity.name.type.entity.end.vhdl"
+ },
+ "7": {
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#generic_list_pattern"
+ },
+ {
+ "include": "#port_list_pattern"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "for_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# Check for an identifier $2\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\n\n\t\t\t\t\t\t\t# Followed by a colon $3\n\t\t\t\t\t\t\t\\s*(:)\\s*\n\t\t\t\t\t\t)?\n\n\t\t\t\t\t\t# Make sure the next word is not wait\n\t\t\t\t\t\t(?!(?i:wait\\s*))\n\n\t\t\t\t\t\t# The for keyword $4\n\t\t\t\t\t\t\\b((?i:for))\\b\n\n\t\t\t\t\t\t# Make sure the next word is not all\n\t\t\t\t\t\t(?!\\s*(?i:all))\n\n\t\t\t\t\t",
+ "beginCaptures": {
+ "2": {
+ "name": "entity.name.tag.for.generate.begin.vhdl"
+ },
+ "3": {
+ "name": "punctuation.vhdl"
+ },
+ "4": {
+ "name": "keyword.language.vhdl"
+ }
+ },
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end))\\s+\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# Followed by generate or loop $3\n\t\t\t\t\t\t\t ((?i:generate|loop))\n\n\t\t\t\t\t\t\t# But it really is required $4\n\t\t\t\t\t\t\t|(\\S+)\n\t\t\t\t\t\t)\\b\n\n\t\t\t\t\t\t# The matching identifier $7 or an invalid identifier $8\n\t\t\t\t\t\t(\\s+((\\2)|(.+?)))?\n\n\t\t\t\t\t\t# Only space and a semicolon left\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "keyword.language.vhdl"
+ },
+ "4": {
+ "name": "invalid.illegal.loop.or.generate.required.vhdl"
+ },
+ "7": {
+ "name": "entity.name.tag.for.generate.end.vhdl"
+ },
+ "8": {
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#control_patterns"
+ },
+ {
+ "include": "#entity_instantiation_pattern"
+ },
+ {
+ "include": "#component_pattern"
+ },
+ {
+ "include": "#component_instantiation_pattern"
+ },
+ {
+ "include": "#process_pattern"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "function_definition_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# The word function $1\n\t\t\t\t\t\t((?i:impure)?\\s*(?i:function))\\s+\n\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# A valid normal identifier $3\n\t\t\t\t\t\t\t ([a-zA-Z][a-zA-Z\\d_]*)\n\t\t\t\t\t\t\t# A valid string quoted identifier $4\n\t\t\t\t\t\t\t|(\"\\S+\")\n\t\t\t\t\t\t\t# A valid backslash escaped identifier $5\n\t\t\t\t\t\t\t|(\\\\.+\\\\)\n\t\t\t\t\t\t\t# An invalid identifier $5\n\t\t\t\t\t\t\t|(.+?)\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\t# Check to make sure we have a list or we return\n\t\t\t\t\t\t(?=\\s*\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t \\(\n\t\t\t\t\t\t\t\t|(?i:\\breturn\\b)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "entity.name.function.function.begin.vhdl"
+ },
+ "4": {
+ "name": "entity.name.function.function.begin.vhdl"
+ },
+ "5": {
+ "name": "entity.name.function.function.begin.vhdl"
+ },
+ "6": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ }
+ },
+ "end": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t((?i:end))\n\n\t\t\t\t\t\t# Optional word function $3\n\t\t\t\t\t\t(\\s+((?i:function)))?\n\n\t\t\t\t\t\t# Optional matched identifier $6 or mismatched identifier $7\n\t\t\t\t\t\t(\\s+((\\3|\\4|\\5)|(.+?)))?\n\n\t\t\t\t\t\t# Ending with whitespace and semicolon\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "keyword.language.vhdl"
+ },
+ "6": {
+ "name": "entity.name.function.function.end.vhdl"
+ },
+ "7": {
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#control_patterns"
+ },
+ {
+ "include": "#parenthetical_list"
+ },
+ {
+ "include": "#type_pattern"
+ },
+ {
+ "include": "#record_pattern"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "function_prototype_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# The word function $1\n\t\t\t\t\t\t((?i:impure)?\\s*(?i:function))\\s+\n\t\t\t\t\t\t\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# A valid normal identifier $3\n\t\t\t\t\t\t\t ([a-zA-Z][a-zA-Z\\d_]*)\n\t\t\t\t\t\t\t# A valid quoted identifier $4\n\t\t\t\t\t\t\t|(\"\\S+\")\n\t\t\t\t\t\t\t# A valid backslash escaped identifier $5\n\t\t\t\t\t\t\t|(\\\\.+\\\\)\n\t\t\t\t\t\t\t# An invalid identifier $6\n\t\t\t\t\t\t\t|(.+?)\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\t# Check to make sure we have a list or we return\n\t\t\t\t\t\t(?=\\s*\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t \\(\n\t\t\t\t\t\t\t\t|(?i:\\breturn\\b)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "entity.name.function.function.prototype.vhdl"
+ },
+ "4": {
+ "name": "entity.name.function.function.prototype.vhdl"
+ },
+ "5": {
+ "name": "entity.name.function.function.prototype.vhdl"
+ },
+ "6": {
+ "name": "invalid.illegal.function.name.vhdl"
+ }
+ },
+ "end": "(?<=;)",
+ "patterns": [
+ {
+ "begin": "\\b(?i:return)(?=\\s+[^;]+\\s*;)",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.language.vhdl"
+ }
+ },
+ "end": "\\;",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.terminator.function_prototype.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parenthetical_list"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ },
+ {
+ "include": "#parenthetical_list"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "generic_list_pattern": {
+ "patterns": [
+ {
+ "begin": "\\b(?i:generic)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.language.vhdl"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parenthetical_list"
+ }
+ ]
+ }
+ ]
+ },
+ "if_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# Optional identifier $2\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\n\n\t\t\t\t\t\t\t# Followed by a colon $3\n\t\t\t\t\t\t\t\\s*(:)\\s*\n\t\t\t\t\t\t)?\n\n\t\t\t\t\t\t# Keyword if $4\n\t\t\t\t\t\t\\b((?i:if))\\b\n\t\t\t\t\t",
+ "beginCaptures": {
+ "2": {
+ "name": "entity.name.tag.if.generate.begin.vhdl"
+ },
+ "3": {
+ "name": "punctuation.vhdl"
+ },
+ "4": {
+ "name": "keyword.language.vhdl"
+ }
+ },
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end))\\s+\n\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t# Optional generate or if keyword $4\n\t\t\t\t\t\t\t\t ((?i:generate|if))\n\n\t\t\t\t\t\t\t\t# Keyword if or generate required $5\n\t\t\t\t\t\t\t\t|(\\S+)\n\t\t\t\t\t\t\t)\\b\n\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\\s+\n\t\t\t\t\t\t\t\t(\n\t\t\t\t\t\t\t\t\t# Optional matching identifier $8\n\t\t\t\t\t\t\t\t\t (\\2)\n\n\t\t\t\t\t\t\t\t\t# Mismatched identifier $9\n\t\t\t\t\t\t\t\t\t|(.+?)\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)?\n\t\t\t\t\t\t)?\n\n\t\t\t\t\t\t# Followed by a semicolon\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "4": {
+ "name": "keyword.language.vhdl"
+ },
+ "5": {
+ "name": "invalid.illegal.if.or.generate.required.vhdl"
+ },
+ "8": {
+ "name": "entity.name.tag.if.generate.end.vhdl"
+ },
+ "9": {
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#control_patterns"
+ },
+ {
+ "include": "#process_pattern"
+ },
+ {
+ "include": "#entity_instantiation_pattern"
+ },
+ {
+ "include": "#component_pattern"
+ },
+ {
+ "include": "#component_instantiation_pattern"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "match": "'(?i:active|ascending|base|delayed|driving|event|high|image|instance|instance_name|last|last_value|left|leftof|length|low|path|path_name|pos|pred|quiet|range|reverse|reverse_range|right|rightof|simple|simple_name|stable|succ|transaction|val|value)\\b",
+ "name": "keyword.attributes.vhdl"
+ },
+ {
+ "match": "\\b(?i:abs|access|after|alias|all|and|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|context|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|mod|nand|new|next|nor|not|null|of|on|open|or|others|out|package|port|postponed|procedure|process|protected|pure|range|record|register|reject|rem|report|return|rol|ror|select|severity|shared|signal|sla|sll|sra|srl|subtype|then|to|transport|type|unaffected|units|until|use|variable|wait|when|while|with|xnor|xor)\\b",
+ "name": "keyword.language.vhdl"
+ },
+ {
+ "match": "\\b(?i:std|ieee|work|standard|textio|std_logic_1164|std_logic_arith|std_logic_misc|std_logic_signed|std_logic_textio|std_logic_unsigned|numeric_bit|numeric_std|math_complex|math_real|vital_primitives|vital_timing)\\b",
+ "name": "standard.library.language.vhdl"
+ },
+ {
+ "match": "(\\+|\\-|<=|=|=>|:=|>=|>|<|/|\\||&|(\\*{1,2}))",
+ "name": "keyword.operator.vhdl"
+ }
+ ]
+ },
+ "package_body_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t# The word package $1\n\t\t\t\t\t\t\\b((?i:package))\\s+\n\n\t\t\t\t\t\t# ... but we want to be a package body $2\n\t\t\t\t\t\t((?i:body))\\s+\n\n\t\t\t\t\t\t# The valid identifier $4 or the invalid one $5\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))\\s+\n\n\t\t\t\t\t\t# ... and we end it with an is $6\n\t\t\t\t\t\t((?i:is))\\b\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "2": {
+ "name": "keyword.language.vhdl"
+ },
+ "4": {
+ "name": "entity.name.section.package_body.begin.vhdl"
+ },
+ "5": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ },
+ "6": {
+ "name": "keyword.language.vhdl"
+ }
+ },
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end\\b))\n\n\t\t\t\t\t\t# Optional word package $3 body $4\n\t\t\t\t\t\t(\\s+((?i:package))\\s+((?i:body)))?\n\n\t\t\t\t\t\t# Optional identifier $7 or mismatched identifier $8\n\t\t\t\t\t\t(\\s+((\\4)|(.+?)))?(?=\\s*;)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "keyword.language.vhdl"
+ },
+ "4": {
+ "name": "keyword.language.vhdl"
+ },
+ "7": {
+ "name": "entity.name.section.package_body.end.vhdl"
+ },
+ "8": {
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#protected_body_pattern"
+ },
+ {
+ "include": "#function_definition_pattern"
+ },
+ {
+ "include": "#procedure_definition_pattern"
+ },
+ {
+ "include": "#type_pattern"
+ },
+ {
+ "include": "#subtype_pattern"
+ },
+ {
+ "include": "#record_pattern"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "package_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t# The word package $1\n\t\t\t\t\t\t\\b((?i:package))\\s+\n\n\t\t\t\t\t\t# ... but we do not want to be a package body\n\t\t\t\t\t\t(?!(?i:body))\n\n\t\t\t\t\t\t# The valid identifier $3 or the invalid one $4\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))\\s+\n\n\t\t\t\t\t\t# ... and we end it with an is $5\n\t\t\t\t\t\t((?i:is))\\b\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "entity.name.section.package.begin.vhdl"
+ },
+ "4": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ },
+ "5": {
+ "name": "keyword.language.vhdl"
+ }
+ },
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end\\b))\n\n\t\t\t\t\t\t# Optional word package $3\n\t\t\t\t\t\t(\\s+((?i:package)))?\n\n\t\t\t\t\t\t# Optional identifier $6 or mismatched identifier $7\n\t\t\t\t\t\t(\\s+((\\2)|(.+?)))?(?=\\s*;)",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "keyword.language.vhdl"
+ },
+ "6": {
+ "name": "entity.name.section.package.end.vhdl"
+ },
+ "7": {
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#protected_pattern"
+ },
+ {
+ "include": "#function_prototype_pattern"
+ },
+ {
+ "include": "#procedure_prototype_pattern"
+ },
+ {
+ "include": "#type_pattern"
+ },
+ {
+ "include": "#subtype_pattern"
+ },
+ {
+ "include": "#record_pattern"
+ },
+ {
+ "include": "#component_pattern"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "protected_body_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t\\b((?i:type))\\s+\n\n\t\t\t\t\t\t# The valid identifier $2 or the invalid one $3\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))\\s+\n\n\t\t\t\t\t\t\\b((?i:is\\s+protected\\s+body))\\s+\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "entity.name.section.protected_body.begin.vhdl"
+ },
+ "4": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ },
+ "5": {
+ "name": "keyword.language.vhdl"
+ }
+ },
+ "end": "(?x)\n\t\t\t\t\t\t\\b((?i:end\\s+protected\\s+body))\n\n\t\t\t\t\t\t# Optional identifier\n\t\t\t\t\t\t(\\s+((\\3)|(.+?)))?\n\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t\t",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "4": {
+ "name": "entity.name.section.protected_body.end.vhdl"
+ },
+ "5": {
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_definition_pattern"
+ },
+ {
+ "include": "#procedure_definition_pattern"
+ },
+ {
+ "include": "#type_pattern"
+ },
+ {
+ "include": "#subtype_pattern"
+ },
+ {
+ "include": "#record_pattern"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "protected_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t\\b((?i:type))\\s+\n\n\t\t\t\t\t\t# The valid identifier $2 or the invalid one $3\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z\\d_]*)|(.+?))\\s+\n\n\t\t\t\t\t\t\\b((?i:is\\s+protected))\\s+\n\n\t\t\t\t\t\t# Not body\n\t\t\t\t\t\t(?!(?i:body))\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.language.vhdls"
+ },
+ "3": {
+ "name": "entity.name.section.protected.begin.vhdl"
+ },
+ "4": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ },
+ "5": {
+ "name": "keyword.language.vhdl"
+ }
+ },
+ "end": "(?x)\n\t\t\t\t\t\t\\b((?i:end\\s+protected))\n\n\t\t\t\t\t\t# Optional identifier\n\t\t\t\t\t\t(\\s+((\\3)|(.+?)))?\n\n\t\t\t\t\t\t# Not body\n\t\t\t\t\t\t(?!(?i:body))\n\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "4": {
+ "name": "entity.name.section.protected.end.vhdl"
+ },
+ "5": {
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function_prototype_pattern"
+ },
+ {
+ "include": "#procedure_prototype_pattern"
+ },
+ {
+ "include": "#type_pattern"
+ },
+ {
+ "include": "#subtype_pattern"
+ },
+ {
+ "include": "#record_pattern"
+ },
+ {
+ "include": "#component_pattern"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "parenthetical_list": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.vhdl"
+ }
+ },
+ "end": "(?<=\\))",
+ "patterns": [
+ {
+ "begin": "(?=['\"a-zA-Z0-9])",
+ "end": "(;|\\)|,)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.vhdl"
+ }
+ },
+ "name": "source.vhdl",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#parenthetical_pair"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ },
+ {
+ "match": "\\)",
+ "name": "invalid.illegal.unexpected.parenthesis.vhdl"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "parenthetical_pair": {
+ "patterns": [
+ {
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.vhdl"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parenthetical_pair"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "port_list_pattern": {
+ "patterns": [
+ {
+ "begin": "\\b(?i:port)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.language.vhdl"
+ }
+ },
+ "end": "(?<=\\))\\s*;",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parenthetical_list"
+ }
+ ]
+ }
+ ]
+ },
+ "procedure_definition_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# The word function $1\n\t\t\t\t\t\t((?i:procedure))\\s+\n\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# A valid normal identifier $3\n\t\t\t\t\t\t\t ([a-zA-Z][a-zA-Z\\d_]*)\n\t\t\t\t\t\t\t# A valid quoted identifier $4\n\t\t\t\t\t\t\t|(\"\\S+\")\n\t\t\t\t\t\t\t# An invalid identifier $5\n\t\t\t\t\t\t\t|(.+?)\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\t# Check to make sure we have a list is\n\t\t\t\t\t\t(?=\\s*(\\(|(?i:is)))\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "entity.name.function.procedure.begin.vhdl"
+ },
+ "4": {
+ "name": "entity.name.function.procedure.begin.vhdl"
+ },
+ "5": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ }
+ },
+ "end": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t((?i:end))\n\n\t\t\t\t\t\t# Optional word function $3\n\t\t\t\t\t\t(\\s+((?i:procedure)))?\n\n\t\t\t\t\t\t# Optional matched identifier $6 or mismatched identifier $7\n\t\t\t\t\t\t(\\s+((\\3|\\4)|(.+?)))?\n\n\t\t\t\t\t\t# Ending with whitespace and semicolon\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "keyword.language.vhdl"
+ },
+ "6": {
+ "name": "entity.name.function.procedure.end.vhdl"
+ },
+ "7": {
+ "name": "invalid.illegal.mismatched.identifier.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parenthetical_list"
+ },
+ {
+ "include": "#control_patterns"
+ },
+ {
+ "include": "#type_pattern"
+ },
+ {
+ "include": "#record_pattern"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "procedure_prototype_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t\\b((?i:procedure))\\s+\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\n\t\t\t\t\t\t(?=\\s*(\\(|;))\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "entity.name.function.procedure.begin.vhdl"
+ },
+ "4": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctual.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#parenthetical_list"
+ }
+ ]
+ }
+ ]
+ },
+ "process_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# Optional identifier $2\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\n\n\t\t\t\t\t\t\t# Colon $3\n\t\t\t\t\t\t\t\\s*(:)\\s*\n\t\t\t\t\t\t)?\n\n\t\t\t\t\t\t# The word process #4\n\t\t\t\t\t\t((?i:process\\b))\n\t\t\t\t\t",
+ "beginCaptures": {
+ "2": {
+ "name": "entity.name.section.process.begin.vhdl"
+ },
+ "3": {
+ "name": "punctuation.vhdl"
+ },
+ "4": {
+ "name": "keyword.language.vhdl"
+ }
+ },
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t((?i:end))\n\n\t\t\t\t\t\t# Optional word process $3\n\t\t\t\t\t\t(\\s+((?i:process)))\n\n\t\t\t\t\t\t# Optional identifier $6 or invalid identifier $7\n\t\t\t\t\t\t(\\s+((\\2)|(.+?)))?\n\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "keyword.language.vhdl"
+ },
+ "6": {
+ "name": "entity.name.section.process.end.vhdl"
+ },
+ "7": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#control_patterns"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "punctuation": {
+ "patterns": [
+ {
+ "match": "(\\.|,|:|;|\\(|\\))",
+ "name": "punctuation.vhdl"
+ }
+ ]
+ },
+ "record_pattern": {
+ "patterns": [
+ {
+ "begin": "\\b(?i:record)\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.language.vhdl"
+ }
+ },
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end))\n\n\t\t\t\t\t\t# The word record $2\n\t\t\t\t\t\t\\s+((?i:record))\n\n\t\t\t\t\t\t# Optional identifier $5 or invalid identifier $6\n\t\t\t\t\t\t(\\s+(([a-zA-Z][a-zA-Z\\d_]*)|(.*?)))?\n\n\t\t\t\t\t\t# Only whitespace and semicolons can be left\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "2": {
+ "name": "keyword.language.vhdl"
+ },
+ "5": {
+ "name": "entity.name.type.record.vhdl"
+ },
+ "6": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#cleanup"
+ }
+ ]
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "match": "'.'",
+ "name": "string.quoted.single.vhdl"
+ },
+ {
+ "begin": "\"",
+ "end": "\"",
+ "name": "string.quoted.double.vhdl",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.vhdl"
+ }
+ ]
+ },
+ {
+ "begin": "\\\\",
+ "end": "\\\\",
+ "name": "string.other.backslash.vhdl"
+ }
+ ]
+ },
+ "subtype_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t# The word subtype $1\n\t\t\t\t\t\t\\b((?i:subtype))\\s+\n\n\t\t\t\t\t\t# Valid identifier $3 or invalid identifier $4\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\\s+\n\n\t\t\t\t\t\t# The word is $5\n\t\t\t\t\t\t((?i:is))\\b\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "entity.name.type.subtype.vhdl"
+ },
+ "4": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ },
+ "5": {
+ "name": "keyword.language.vhdl"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "support_constants": {
+ "patterns": [
+ {
+ "match": "\\b(?i:math_1_over_e|math_1_over_pi|math_1_over_sqrt_2|math_2_pi|math_3_pi_over_2|math_deg_to_rad|math_e|math_log10_of_e|math_log2_of_e|math_log_of_10|math_log_of_2|math_pi|math_pi_over_2|math_pi_over_3|math_pi_over_4|math_rad_to_deg|math_sqrt_2|math_sqrt_pi)\\b",
+ "name": "support.constant.ieee.math_real.vhdl"
+ },
+ {
+ "match": "\\b(?i:math_cbase_1|math_cbase_j|math_czero|positive_real|principal_value)\\b",
+ "name": "support.constant.ieee.math_complex.vhdl"
+ },
+ {
+ "match": "\\b(?i:true|false)\\b",
+ "name": "support.constant.std.standard.vhdl"
+ }
+ ]
+ },
+ "support_functions": {
+ "patterns": [
+ {
+ "match": "\\b(?i:finish|stop|resolution_limit)\\b",
+ "name": "support.function.std.env.vhdl"
+ },
+ {
+ "match": "\\b(?i:readline|read|writeline|write|endfile|endline)\\b",
+ "name": "support.function.std.textio.vhdl"
+ },
+ {
+ "match": "\\b(?i:rising_edge|falling_edge|to_bit|to_bitvector|to_stdulogic|to_stdlogicvector|to_stdulogicvector|is_x)\\b",
+ "name": "support.function.ieee.std_logic_1164.vhdl"
+ },
+ {
+ "match": "\\b(?i:shift_left|shift_right|rotate_left|rotate_right|resize|to_integer|to_unsigned|to_signed)\\b",
+ "name": "support.function.ieee.numeric_std.vhdl"
+ },
+ {
+ "match": "\\b(?i:arccos(h?)|arcsin(h?)|arctan|arctanh|cbrt|ceil|cos|cosh|exp|floor|log10|log2|log|realmax|realmin|round|sign|sin|sinh|sqrt|tan|tanh|trunc)\\b",
+ "name": "support.function.ieee.math_real.vhdl"
+ },
+ {
+ "match": "\\b(?i:arg|cmplx|complex_to_polar|conj|get_principal_value|polar_to_complex)\\b",
+ "name": "support.function.ieee.math_complex.vhdl"
+ }
+ ]
+ },
+ "support_types": {
+ "patterns": [
+ {
+ "match": "\\b(?i:boolean|bit|character|severity_level|integer|real|time|delay_length|now|natural|positive|string|bit_vector|file_open_kind|file_open_status|fs|ps|ns|us|ms|sec|min|hr|severity_level|note|warning|error|failure)\\b",
+ "name": "support.type.std.standard.vhdl"
+ },
+ {
+ "match": "\\b(?i:line|text|side|width|input|output)\\b",
+ "name": "support.type.std.textio.vhdl"
+ },
+ {
+ "match": "\\b(?i:std_logic|std_ulogic|std_logic_vector|std_ulogic_vector)\\b",
+ "name": "support.type.ieee.std_logic_1164.vhdl"
+ },
+ {
+ "match": "\\b(?i:signed|unsigned)\\b",
+ "name": "support.type.ieee.numeric_std.vhdl"
+ },
+ {
+ "match": "\\b(?i:complex|complex_polar)\\b",
+ "name": "support.type.ieee.math_complex.vhdl"
+ }
+ ]
+ },
+ "syntax_highlighting": {
+ "patterns": [
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#support_constants"
+ },
+ {
+ "include": "#support_types"
+ },
+ {
+ "include": "#support_functions"
+ }
+ ]
+ },
+ "type_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t# The word type $1\n\t\t\t\t\t\t\\b((?i:type))\\s+\n\n\t\t\t\t\t\t# Valid identifier $3 or invalid identifier $4\n\t\t\t\t\t\t(([a-zA-Z][a-zA-Z0-9_]*)|(.+?))\n\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# A semicolon is coming up if we are incomplete\n\t\t\t\t\t\t\t (?=\\s*;)\n\n\t\t\t\t\t\t\t# Or the word is comes up $7\n\t\t\t\t\t\t\t|(\\s+((?i:is)))\n\t\t\t\t\t\t)\\b\n\t\t\t\t\t",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "entity.name.type.type.vhdl"
+ },
+ "4": {
+ "name": "invalid.illegal.invalid.identifier.vhdl"
+ },
+ "7": {
+ "name": "keyword.language.vhdl"
+ }
+ },
+ "end": ";",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.vhdl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#record_pattern"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ },
+ "while_pattern": {
+ "patterns": [
+ {
+ "begin": "(?x)\n\t\t\t\t\t\t# From the beginning of the line\n\t\t\t\t\t\t^\\s*\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# Check for an identifier $2\n\t\t\t\t\t\t\t([a-zA-Z][a-zA-Z0-9_]*)\n\n\t\t\t\t\t\t\t# Followed by a colon $3\n\t\t\t\t\t\t\t\\s*(:)\\s*\n\t\t\t\t\t\t)?\n\n\t\t\t\t\t\t# The for keyword $4\n\t\t\t\t\t\t\\b((?i:while))\\b\n\t\t\t\t\t",
+ "beginCaptures": {
+ "2": {
+ "name": ""
+ },
+ "3": {
+ "name": "punctuation.vhdl"
+ },
+ "4": {
+ "name": "keyword.language.vhdl"
+ }
+ },
+ "end": "(?x)\n\t\t\t\t\t\t# The word end $1\n\t\t\t\t\t\t\\b((?i:end))\\s+\n\t\t\t\t\t\t(\n\t\t\t\t\t\t\t# Followed by keyword loop $3\n\t\t\t\t\t\t\t ((?i:loop))\n\n\t\t\t\t\t\t\t# But it really is required $4\n\t\t\t\t\t\t\t|(\\S+)\n\t\t\t\t\t\t)\\b\n\n\t\t\t\t\t\t# The matching identifier $7 or an invalid identifier $8\n\t\t\t\t\t\t(\\s+((\\2)|(.+?)))?\n\n\t\t\t\t\t\t# Only space and a semicolon left\n\t\t\t\t\t\t(?=\\s*;)\n\t\t\t\t\t",
+ "endCaptures": {
+ "1": {
+ "name": "keyword.language.vhdl"
+ },
+ "3": {
+ "name": "keyword.language.vhdl"
+ },
+ "4": {
+ "name": "invalid.illegal.loop.keyword.required.vhdl"
+ },
+ "7": {
+ "name": "entity.name.tag.while.loop.vhdl"
+ },
+ "8": {
+ "name": "invalid.illegal.mismatched.identifier"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#control_patterns"
+ },
+ {
+ "include": "#cleanup"
+ }
+ ]
+ }
+ ]
+ }
+ },
+ "scopeName": "source.vhdl"
+}
diff --git a/node_modules/shiki/languages/viml.tmLanguage.json b/node_modules/shiki/languages/viml.tmLanguage.json
new file mode 100644
index 0000000..99b7fcc
--- /dev/null
+++ b/node_modules/shiki/languages/viml.tmLanguage.json
@@ -0,0 +1,441 @@
+{
+ "repository": {
+ "commands": {
+ "patterns": [
+ {
+ "name": "storage.other.command.viml",
+ "match": "\\bcom(\\s|\\!)"
+ },
+ {
+ "name": "storage.other.command.viml",
+ "match": "\\bau(\\s|\\!)"
+ },
+ {
+ "name": "storage.other.command.bang.viml",
+ "match": "-bang"
+ },
+ {
+ "name": "storage.other.command.args.viml",
+ "match": "-nargs=[*+0-9]+"
+ },
+ {
+ "name": "storage.other.command.completion.viml",
+ "match": "-complete=\\S+"
+ },
+ {
+ "begin": "(aug(roup)?)",
+ "end": "(augroup\\sEND|$)",
+ "name": "support.function.augroup.viml"
+ }
+ ]
+ },
+ "comment": {
+ "patterns": [
+ {
+ "begin": "((\\s+)?\"\"\")",
+ "end": "^(?!\")",
+ "name": "comment.block.documentation.viml"
+ },
+ {
+ "match": "^\"\\svim:.*",
+ "name": "comment.block.modeline.viml"
+ },
+ {
+ "name": "comment.line.viml",
+ "begin": "(\\s+\"\\s+)(?!\")",
+ "end": "$",
+ "patterns": [
+ {
+ "match": "\\{\\{\\{\\d?$",
+ "name": "comment.line.foldmarker.viml"
+ },
+ {
+ "match": "\\}\\}\\}\\d?",
+ "name": "comment.line.foldmarker.viml"
+ }
+ ]
+ },
+ {
+ "name": "comment.line.viml",
+ "begin": "^(\\s+)?\"",
+ "end": "$",
+ "patterns": [
+ {
+ "match": "\\{\\{\\{\\d?$",
+ "name": "comment.line.foldmarker.viml"
+ },
+ {
+ "match": "\\}\\}\\}\\d?",
+ "name": "comment.line.foldmarker.viml"
+ }
+ ]
+ }
+ ]
+ },
+ "entity": {
+ "patterns": [
+ {
+ "name": "entity.name.function.viml",
+ "match": "(([absg]\\:)?[a-zA-Z0-9_#.]{2,})\\b(?=\\()"
+ }
+ ]
+ },
+ "map": {
+ "patterns": [
+ {
+ "begin": "(\\<)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.map.viml"
+ }
+ },
+ "end": "(\\>|\\s)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.map.viml"
+ }
+ },
+ "patterns": [
+ {
+ "name": "constant.character.map.rhs.viml",
+ "match": "(?<=:\\s)(.+)"
+ },
+ {
+ "name": "constant.character.map.special.viml",
+ "match": "(?i:(bang|buffer|expr|nop|plug|sid|silent))"
+ },
+ {
+ "name": "constant.character.map.key.viml",
+ "match": "(?i:([adcms]-\\w))"
+ },
+ {
+ "name": "constant.character.map.key.fn.viml",
+ "match": "(?i:(F[0-9]+))"
+ },
+ {
+ "name": "constant.character.map.viml",
+ "match": "(?i:(bs|bar|cr|del|down|esc|left|right|space|tab|up|leader))"
+ }
+ ]
+ },
+ {
+ "name": "storage.type.map.viml",
+ "match": "(\\b([cinostvx]?(nore)?map)\\b)"
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "name": "keyword.operator.viml",
+ "match": "([#+?!=~\\\\])"
+ },
+ {
+ "name": "keyword.operator.viml",
+ "match": " ([:\\-.]|[&|]{2})( |$)"
+ },
+ {
+ "name": "keyword.operator.viml",
+ "match": "([.]{3})"
+ },
+ {
+ "name": "keyword.operator.viml",
+ "match": "( [<>] )"
+ },
+ {
+ "name": "keyword.operator.viml",
+ "match": "(>=)"
+ }
+ ]
+ },
+ "option": {
+ "patterns": [
+ {
+ "name": "support.type.option.viml",
+ "match": "&?\\b(al|aleph|anti|antialias|arab|arabic|arshape|arabicshape|ari|allowrevins|akm|altkeymap|ambw|ambiwidth|acd|autochdir|ai|autoindent|ar|autoread|aw|autowrite|awa|autowriteall|bg|background|bs|backspace|bk|backup|bkc|backupcopy|bdir|backupdir|bex|backupext|bsk|backupskip|bdlay|balloondelay|beval|ballooneval|bevalterm|balloonevalterm|bexpr|balloonexpr|bo|belloff|bin|binary|bomb|brk|breakat|bri|breakindent|briopt|breakindentopt|bsdir|browsedir|bh|bufhidden|bl|buflisted|bt|buftype|cmp|casemap|cd|cdpath|cedit|ccv|charconvert|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|cb|clipboard|ch|cmdheight|cwh|cmdwinheight|cc|colorcolumn|co|columns|com|comments|cms|commentstring|cp|compatible|cpt|complete|cocu|concealcursor|cole|conceallevel|cfu|completefunc|cot|completeopt|cf|confirm|ci|copyindent|cpo|cpoptions|cm|cryptmethod|cspc|cscopepathcomp|csprg|cscopeprg|csqf|cscopequickfix|csre|cscoperelative|cst|cscopetag|csto|cscopetagorder|csverb|cscopeverbose|crb|cursorbind|cuc|cursorcolumn|cul|cursorline|debug|def|define|deco|delcombine|dict|dictionary|diff|dex|diffexpr|dip|diffopt|dg|digraph|dir|directory|dy|display|ead|eadirection|ed|edcompatible|emo|emoji|enc|encoding|eol|endofline|ea|equalalways|ep|equalprg|eb|errorbells|ef|errorfile|efm|errorformat|ek|esckeys|ei|eventignore|et|expandtab|ex|exrc|fenc|fileencoding|fencs|fileencodings|ff|fileformat|ffs|fileformats|fic|fileignorecase|ft|filetype|fcs|fillchars|fixeol|fixendofline|fk|fkmap|fcl|foldclose|fdc|foldcolumn|fen|foldenable|fde|foldexpr|fdi|foldignore|fdl|foldlevel|fdls|foldlevelstart|fmr|foldmarker|fdm|foldmethod|fml|foldminlines|fdn|foldnestmax|fdo|foldopen|fdt|foldtext|fex|formatexpr|fo|formatoptions|flp|formatlistpat|fp|formatprg|fs|fsync|gd|gdefault|gfm|grepformat|gp|grepprg|gcr|guicursor|gfn|guifont|gfs|guifontset|gfw|guifontwide|ghr|guiheadroom|go|guioptions|guipty|gtl|guitablabel|gtt|guitabtooltip|hf|helpfile|hh|helpheight|hlg|helplang|hid|hidden|hl|highlight|hi|history|hk|hkmap|hkp|hkmapp|hls|hlsearch|icon|iconstring|ic|ignorecase|imaf|imactivatefunc|imak|imactivatekey|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|imsf|imstatusfunc|imst|imstyle|inc|include|inex|includeexpr|is|incsearch|inde|indentexpr|indk|indentkeys|inf|infercase|im|insertmode|isf|isfname|isi|isident|isk|iskeyword|isp|isprint|js|joinspaces|key|kmp|keymap|km|keymodel|kp|keywordprg|lmap|langmap|lm|langmenu|lnr|langnoremap|lrm|langremap|ls|laststatus|lz|lazyredraw|lbr|linebreak|lines|lsp|linespace|lisp|lw|lispwords|list|lcs|listchars|lpl|loadplugins|luadll|macatsui|magic|mef|makeef|menc|makeencoding|mp|makeprg|mps|matchpairs|mat|matchtime|mco|maxcombine|mfd|maxfuncdepth|mmd|maxmapdepth|mm|maxmem|mmp|maxmempattern|mmt|maxmemtot|mis|menuitems|msm|mkspellmem|ml|modeline|mls|modelines|ma|modifiable|mod|modified|more|mouse|mousef|mousefocus|mh|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mzschemedll|mzschemegcdll|mzq|mzquantum|nf|nrformats|nu|number|nuw|numberwidth|ofu|omnifunc|odev|opendevice|opfunc|operatorfunc|pp|packpath|para|paragraphs|paste|pt|pastetoggle|pex|patchexpr|pm|patchmode|pa|path|perldll|pi|preserveindent|pvh|previewheight|pvw|previewwindow|pdev|printdevice|penc|printencoding|pexpr|printexpr|pfn|printfont|pheader|printheader|pmbcs|printmbcharset|pmbfn|printmbfont|popt|printoptions|prompt|ph|pumheight|pythonthreedll|pythondll|pyx|pyxversion|qe|quoteescape|ro|readonly|rdt|redrawtime|re|regexpengine|rnu|relativenumber|remap|rop|renderoptions|report|rs|restorescreen|ri|revins|rl|rightleft|rlc|rightleftcmd|rubydll|ru|ruler|ruf|rulerformat|rtp|runtimepath|scr|scroll|scb|scrollbind|sj|scrolljump|so|scrolloff|sbo|scrollopt|sect|sections|secure|sel|selection|slm|selectmode|ssop|sessionoptions|sh|shell|shcf|shellcmdflag|sp|shellpipe|shq|shellquote|srr|shellredir|ssl|shellslash|stmp|shelltemp|st|shelltype|sxq|shellxquote|sxe|shellxescape|sr|shiftround|sw|shiftwidth|shm|shortmess|sn|shortname|sbr|showbreak|sc|showcmd|sft|showfulltag|sm|showmatch|smd|showmode|stal|showtabline|ss|sidescroll|siso|sidescrolloff|scl|signcolumn|scs|smartcase|si|smartindent|sta|smarttab|sts|softtabstop|spell|spc|spellcapcheck|spf|spellfile|spl|spelllang|sps|spellsuggest|sb|splitbelow|spr|splitright|sol|startofline|stl|statusline|su|suffixes|sua|suffixesadd|swf|swapfile|sws|swapsync|swb|switchbuf|smc|synmaxcol|syn|syntax|tal|tabline|tpm|tabpagemax|ts|tabstop|tbs|tagbsearch|tc|tagcase|tl|taglength|tr|tagrelative|tag|tags|tgst|tagstack|tcldll|term|tbidi|termbidi|tenc|termencoding|tgc|termguicolors|tk|termkey|tms|termsize|terse|ta|textauto|tx|textmode|tw|textwidth|tsr|thesaurus|top|tildeop|to|timeout|tm|timeoutlen|title|titlelen|titleold|titlestring|tb|toolbar|tbis|toolbariconsize|ttimeout|ttm|ttimeoutlen|tbi|ttybuiltin|tf|ttyfast|ttym|ttymouse|tsl|ttyscroll|tty|ttytype|udir|undodir|udf|undofile|ul|undolevels|ur|undoreload|uc|updatecount|ut|updatetime|vbs|verbose|vfile|verbosefile|vdir|viewdir|vop|viewoptions|vi|viminfo|vif|viminfofile|ve|virtualedit|vb|visualbell|warn|wiv|weirdinvert|ww|whichwrap|wc|wildchar|wcm|wildcharm|wig|wildignore|wic|wildignorecase|wmnu|wildmenu|wim|wildmode|wop|wildoptions|wak|winaltkeys|wi|window|wh|winheight|wfh|winfixheight|wfw|winfixwidth|wmh|winminheight|wmw|winminwidth|winptydll|wiw|winwidth|wrap|wm|wrapmargin|ws|wrapscan|write|wa|writeany|wb|writebackup|wd|writedelay)\\b"
+ },
+ {
+ "name": "support.type.option.viml",
+ "match": "&?\\b(aleph|allowrevins|altkeymap|ambiwidth|autochdir|arabic|arabicshape|autoindent|autoread|autowrite|autowriteall|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|belloff|binary|bomb|breakat|breakindent|breakindentopt|browsedir|bufhidden|buflisted|buftype|casemap|cdpath|cedit|charconvert|cindent|cinkeys|cinoptions|cinwords|clipboard|cmdheight|cmdwinheight|colorcolumn|columns|comments|commentstring|complete|completefunc|completeopt|concealcursor|conceallevel|confirm|copyindent|cpoptions|cscopepathcomp|cscopeprg|cscopequickfix|cscoperelative|cscopetag|cscopetagorder|cscopeverbose|cursorbind|cursorcolumn|cursorline|debug|define|delcombine|dictionary|diff|diffexpr|diffopt|digraph|directory|display|eadirection|encoding|endofline|equalalways|equalprg|errorbells|errorfile|errorformat|eventignore|expandtab|exrc|fileencoding|fileencodings|fileformat|fileformats|fileignorecase|filetype|fillchars|fixendofline|fkmap|foldclose|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldopen|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fsync|gdefault|grepformat|grepprg|guicursor|guifont|guifontset|guifontwide|guioptions|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hidden|hlsearch|history|hkmap|hkmapp|icon|iconstring|ignorecase|imcmdline|imdisable|iminsert|imsearch|include|includeexpr|incsearch|indentexpr|indentkeys|infercase|insertmode|isfname|isident|iskeyword|isprint|joinspaces|keymap|keymodel|keywordprg|langmap|langmenu|langremap|laststatus|lazyredraw|linebreak|lines|linespace|lisp|lispwords|list|listchars|loadplugins|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|menuitems|mkspellmem|modeline|modelines|modifiable|modified|more|mouse|mousefocus|mousehide|mousemodel|mouseshape|mousetime|nrformats|number|numberwidth|omnifunc|opendevice|operatorfunc|packpath|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|perldll|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pumheight|pythondll|pythonthreedll|quoteescape|readonly|redrawtime|regexpengine|relativenumber|remap|report|revins|rightleft|rightleftcmd|rubydll|ruler|rulerformat|runtimepath|scroll|scrollbind|scrolljump|scrolloff|scrollopt|sections|secure|selection|selectmode|sessionoptions|shada|shell|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shellxescape|shellxquote|shiftround|shiftwidth|shortmess|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|sidescroll|sidescrolloff|signcolumn|smartcase|smartindent|smarttab|softtabstop|spell|spellcapcheck|spellfile|spelllang|spellsuggest|splitbelow|splitright|startofline|statusline|suffixes|suffixesadd|swapfile|switchbuf|synmaxcol|syntax|tabline|tabpagemax|tabstop|tagbsearch|tagcase|taglength|tagrelative|tags|tagstack|term|termbidi|terse|textwidth|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|ttimeout|ttimeoutlen|ttytype|undodir|undofile|undolevels|undoreload|updatecount|updatetime|verbose|verbosefile|viewdir|viewoptions|virtualedit|visualbell|warn|whichwrap|wildchar|wildcharm|wildignore|wildignorecase|wildmenu|wildmode|wildoptions|winaltkeys|window|winheight|winfixheight|winfixwidth|winminheight|winminwidth|winwidth|wrap|wrapmargin|wrapscan|write|writeany|writebackup|writedelay)\\b"
+ },
+ {
+ "name": "support.type.option.shortname.viml",
+ "match": "&?\\b(al|ari|akm|ambw|acd|arab|arshape|ai|ar|aw|awa|bg|bs|bk|bkc|bdir|bex|bsk|bdlay|beval|bexpr|bo|bin|bomb|brk|bri|briopt|bsdir|bh|bl|bt|cmp|cd|cedit|ccv|cin|cink|cino|cinw|cb|ch|cwh|cc|co|com|cms|cpt|cfu|cot|cocu|cole|cf|ci|cpo|cspc|csprg|csqf|csre|cst|csto|cpo|crb|cuc|cul|debug|def|deco|dict|diff|dex|dip|dg|dir|dy|ead|enc|eol|ea|ep|eb|ef|efm|ei|et|ex|fenc|fencs|ff|ffs|fic|ft|fcs|fixeol|fk|fcl|fdc|fen|fde|fdi|fdl|fdls|fmr|fdm|fml|fdn|fdo|fdt|fex|flp|fo|fp|fs|gd|gfm|gp|gcr|gfn|gfs|gfw|go|gtl|gtt|hf|hh|hlg|hid|hls|hi|hk|hkp|icon|iconstring|ic|imc|imd|imi|ims|inc|inex|is|inde|indk|inf|im|isf|isi|isk|isp|js|kmp|km|kp|lmap|lm|lrm|ls|lz|lbr|lines|lsp|lisp|lw|list|lcs|lpl|magic|mef|mp|mps|mat|mco|mfd|mmd|mm|mmp|mmt|mis|msm|ml|mls|ma|mod|more|mouse|mousef|mh|mousem|mouses|mouset|nf|nu|nuw|ofu|odev|opfunc|pp|para|paste|pt|pex|pm|pa|perldll|pi|pvh|pvw|pdev|penc|pexpr|pfn|pheader|pmbcs|pmbfn|popt|prompt|ph|pythondll|pythonthreedlll|qe|ro|rdt|re|rnu|remap|report|ri|rl|rlc|rubydll|ru|ruf|rtp|scr|scb|sj|so|sbo|sect|secure|sel|slm|ssop|sd|sh|shcf|sp|shq|srr|ssl|stmp|sxe|sxq|sr|sw|shm|sbr|sc|sft|sm|smd|stal|ss|siso|scl|scs|si|sta|sts|spell|spc|spf|spl|sps|sb|spr|sol|stl|su|sua|swf|swb|smc|syn|tal|tpm|ts|tbs|tc|tl|tr|tag|tgst|term|tbidi|terse|tw|tsr|top|to|tm|title|titlelen|titleold|titlestring|ttimeout|ttm|tty|udir|udf|ul|ur|uc|ut|vbs|vfile|vdir|vop|ve|vb|warn|ww|wc|wcm|wig|wic|wmnu|wim|wop|wak|wi|wh|wfh|wfw|wmh|wmw|wiw|wrap|wm|ws|write|wa|wb|wd)\\b"
+ },
+ {
+ "name": "support.type.option.off.viml",
+ "match": "\\b(noanti|noantialias|noarab|noarabic|noarshape|noarabicshape|noari|noallowrevins|noakm|noaltkeymap|noacd|noautochdir|noai|noautoindent|noar|noautoread|noaw|noautowrite|noawa|noautowriteall|nobk|nobackup|nobeval|noballooneval|nobevalterm|noballoonevalterm|nobin|nobinary|nobomb|nobri|nobreakindent|nobl|nobuflisted|nocin|nocindent|nocp|nocompatible|nocf|noconfirm|noci|nocopyindent|nocsre|nocscoperelative|nocst|nocscopetag|nocsverb|nocscopeverbose|nocrb|nocursorbind|nocuc|nocursorcolumn|nocul|nocursorline|nodeco|nodelcombine|nodiff|nodg|nodigraph|noed|noedcompatible|noemo|noemoji|noeol|noendofline|noea|noequalalways|noeb|noerrorbells|noek|noesckeys|noet|noexpandtab|noex|noexrc|nofic|nofileignorecase|nofixeol|nofixendofline|nofk|nofkmap|nofen|nofoldenable|nofs|nofsync|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkp|nohkmapp|nohls|nohlsearch|noicon|noic|noignorecase|noimc|noimcmdline|noimd|noimdisable|nois|noincsearch|noinf|noinfercase|noim|noinsertmode|nojs|nojoinspaces|nolnr|nolangnoremap|nolrm|nolangremap|nolz|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|nolpl|noloadplugins|nomacatsui|nomagic|noml|nomodeline|noma|nomodifiable|nomod|nomodified|nomore|nomousef|nomousefocus|nomh|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopvw|nopreviewwindow|noprompt|noro|noreadonly|nornu|norelativenumber|nors|norestorescreen|nori|norevins|norl|norightleft|noru|noruler|noscb|noscrollbind|nosecure|nossl|noshellslash|nostmp|noshelltemp|nosr|noshiftround|nosn|noshortname|nosc|noshowcmd|nosft|noshowfulltag|nosm|noshowmatch|nosmd|noshowmode|noscs|nosmartcase|nosi|nosmartindent|nosta|nosmarttab|nospell|nosb|nosplitbelow|nospr|nosplitright|nosol|nostartofline|noswf|noswapfile|notbs|notagbsearch|notr|notagrelative|notgst|notagstack|notbidi|notermbidi|notgc|notermguicolors|noterse|nota|notextauto|notx|notextmode|notop|notildeop|noto|notimeout|notitle|nottimeout|notbi|nottybuiltin|notf|nottyfast|noudf|noundofile|novb|novisualbell|nowarn|nowiv|noweirdinvert|nowic|nowildignorecase|nowmnu|nowildmenu|nowfh|nowinfixheight|nowfw|nowinfixwidth|nowrapscan|nowrap|nows|nowrite|nowa|nowriteany|nowb|nowritebackup)\\b"
+ }
+ ]
+ },
+ "punctuation": {
+ "patterns": [
+ {
+ "name": "punctuation.parens.viml",
+ "match": "([()])"
+ },
+ {
+ "name": "punctuation.comma.viml",
+ "match": "([,])"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "name": "string.quoted.double.viml",
+ "begin": "\"",
+ "end": "(\"|$)",
+ "patterns": []
+ },
+ {
+ "name": "string.quoted.single.viml",
+ "begin": "'",
+ "end": "('|$)",
+ "patterns": []
+ },
+ {
+ "match": "/(\\\\\\\\|\\\\/|[^\\n/])*/",
+ "name": "string.regexp.viml"
+ }
+ ]
+ },
+ "support": {
+ "patterns": [
+ {
+ "name": "support.function.viml",
+ "match": "(add|call|delete|empty|extend|get|has|isdirectory|join|printf)(?=\\()"
+ },
+ {
+ "name": "support.function.viml",
+ "match": "\\b(echo(m|hl)?|exe(cute)?|redir|redraw|sleep|so(urce)?|wincmd|setf)\\b"
+ },
+ {
+ "name": "support.type.builtin.vim-variable.viml",
+ "match": "(v\\:(beval_col|beval_bufnr|beval_lnum|beval_text|beval_winnr|char|charconvert_from|charconvert_to|cmdarg|cmdbang|count|count1|ctype|dying|errmsg|exception|fcs_reason|fcs_choice|fname_in|fname_out|fname_new|fname_diff|folddashes|foldlevel|foldend|foldstart|insertmode|key|lang|lc_time|lnum|mouse_win|mouse_lnum|mouse_col|oldfiles|operator|prevcount|profiling|progname|register|scrollstart|servername|searchforward|shell_error|statusmsg|swapname|swapchoice|swapcommand|termresponse|this_session|throwpoint|val|version|warningmsg|windowid))"
+ },
+ {
+ "name": "support.type.builtin.viml",
+ "match": "(&(cpo|isk|omnifunc|paste|previewwindow|rtp|tags|term|wrap))"
+ },
+ {
+ "name": "support.type.builtin.viml",
+ "match": "(&(shell(cmdflag|redir)?))"
+ },
+ {
+ "name": "support.variable.args.viml",
+ "match": "\\<args\\>"
+ },
+ {
+ "name": "support.type.syntax.viml",
+ "match": "\\b(None|ErrorMsg|WarningMsg)\\b"
+ },
+ {
+ "name": "support.type.event.viml",
+ "match": "\\b(BufNewFile|BufReadPre|BufRead|BufReadPost|BufReadCmd|FileReadPre|FileReadPost|FileReadCmd|FilterReadPre|FilterReadPost|StdinReadPre|StdinReadPost|BufWrite|BufWritePre|BufWritePost|BufWriteCmd|FileWritePre|FileWritePost|FileWriteCmd|FileAppendPre|FileAppendPost|FileAppendCmd|FilterWritePre|FilterWritePost|BufAdd|BufCreate|BufDelete|BufWipeout|BufFilePre|BufFilePost|BufEnter|BufLeave|BufWinEnter|BufWinLeave|BufUnload|BufHidden|BufNew|SwapExists|TermOpen|TermClose|FileType|Syntax|OptionSet|VimEnter|GUIEnter|GUIFailed|TermResponse|QuitPre|VimLeavePre|VimLeave|DirChanged|FileChangedShell|FileChangedShellPost|FileChangedRO|ShellCmdPost|ShellFilterPost|CmdUndefined|FuncUndefined|SpellFileMissing|SourcePre|SourceCmd|VimResized|FocusGained|FocusLost|CursorHold|CursorHoldI|CursorMoved|CursorMovedI|WinNew|WinEnter|WinLeave|TabEnter|TabLeave|TabNew|TabNewEntered|TabClosed|CmdlineEnter|CmdlineLeave|CmdwinEnter|CmdwinLeave|InsertEnter|InsertChange|InsertLeave|InsertCharPre|TextYankPost|TextChanged|TextChangedI|ColorScheme|RemoteReply|QuickFixCmdPre|QuickFixCmdPost|SessionLoadPost|MenuPopup|CompleteDone|User)\\b"
+ },
+ {
+ "name": "support.type.syntax-group.viml",
+ "match": "\\b(Comment|Constant|String|Character|Number|Boolean|Float|Identifier|Function|Statement|Conditional|Repeat|Label|Operator|Keyword|Exception|PreProc|Include|Define|Macro|PreCondit|Type|StorageClass|Structure|Typedef|Special|SpecialChar|Tag|Delimiter|SpecialComment|Debug|Underlined|Ignore|Error|Todo)\\b"
+ }
+ ]
+ },
+ "syntax": {
+ "patterns": [
+ {
+ "name": "keyword.control.syntax.viml",
+ "match": "syn(tax)? case (ignore|match)"
+ },
+ {
+ "name": "keyword.control.syntax.viml",
+ "match": "syn(tax)? (clear|enable|include|off|on|manual|sync)"
+ },
+ {
+ "name": "keyword.other.syntax.viml",
+ "match": "\\b(contained|display|excludenl|fold|keepend|oneline|skipnl|skipwhite|transparent)\\b"
+ },
+ {
+ "name": "keyword.other.syntax.viml",
+ "match": "\\b(add|containedin|contains|matchgroup|nextgroup)\\="
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.syntax-range.viml"
+ },
+ "3": {
+ "name": "string.regexp.viml"
+ }
+ },
+ "match": "((start|skip|end)\\=)(\\+\\S+\\+\\s)?"
+ },
+ {
+ "captures": {
+ "0": {
+ "name": "support.type.syntax.viml"
+ },
+ "1": {
+ "name": "storage.syntax.viml"
+ },
+ "3": {
+ "name": "variable.other.syntax-scope.viml"
+ },
+ "4": {
+ "name": "storage.modifier.syntax.viml"
+ }
+ },
+ "match": "(syn|syntax)\\s+(cluster|keyword|match|region)(\\s+\\w+\\s+)(contained)?",
+ "patterns": []
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "storage.highlight.viml"
+ },
+ "2": {
+ "name": "storage.modifier.syntax.viml"
+ },
+ "3": {
+ "name": "support.function.highlight.viml"
+ },
+ "4": {
+ "name": "variable.other.viml"
+ },
+ "5": {
+ "name": "variable.other.viml"
+ }
+ },
+ "match": "(hi|highlight)(?:\\s+)(def|default)(?:\\s+)(link)(?:\\s+)(\\w+)(?:\\s+)(\\w+)",
+ "patterns": []
+ }
+ ]
+ },
+ "keyword": {
+ "patterns": [
+ {
+ "name": "keyword.control.viml",
+ "match": "\\b(if|while|for|return|au(g|group)|else(if|)?|do|in)\\b"
+ },
+ {
+ "name": "keyword.control.viml",
+ "match": "\\b(end|endif|endfor|endwhile)\\s|$"
+ },
+ {
+ "name": "keyword.control.viml",
+ "match": "\\b(break|continue|try|catch|endtry|finally|finish|throw|range)\\b"
+ },
+ {
+ "name": "keyword.function.viml",
+ "match": "\\b(fun|func|function|endfunction|endfunc)\\b"
+ },
+ {
+ "name": "keyword.other.viml",
+ "match": "\\b(normal|silent)\\b"
+ },
+ {
+ "include": "#operators"
+ }
+ ]
+ },
+ "storage": {
+ "patterns": [
+ {
+ "match": "\\b(call|let|unlet)\\b",
+ "name": "storage.viml"
+ },
+ {
+ "match": "\\b(abort|autocmd)\\b",
+ "name": "storage.viml"
+ },
+ {
+ "match": "\\b(set(l|local)?)\\b",
+ "name": "storage.viml"
+ },
+ {
+ "match": "\\b(com(mand)?)\\b",
+ "name": "storage.viml"
+ },
+ {
+ "match": "\\b(color(scheme)?)\\b",
+ "name": "storage.viml"
+ },
+ {
+ "match": "\\b(Plug|Plugin)\\b",
+ "name": "storage.plugin.viml"
+ }
+ ]
+ },
+ "variable": {
+ "patterns": [
+ {
+ "name": "variable.other.link.viml",
+ "match": "https?://\\S+"
+ },
+ {
+ "name": "variable.parameter.viml",
+ "match": "(?<=\\()([a-zA-Z]+)(?=\\))"
+ },
+ {
+ "name": "variable.other.viml",
+ "match": "\\b([absgl]:[a-zA-Z0-9_.#]+)\\b(?!\\()"
+ }
+ ]
+ },
+ "constant": {
+ "patterns": [
+ {
+ "name": "constant.language.boolean.viml",
+ "match": "\\b(true|false)\\b"
+ },
+ {
+ "name": "constant.numeric.viml",
+ "match": "\\b([0-9]+)\\b"
+ }
+ ]
+ }
+ },
+ "$schema": "https://raw.githubusercontent.com/dunstontc/textmate/master/schema/tmLanguage.schema.json",
+ "name": "viml",
+ "scopeName": "source.viml",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#constant"
+ },
+ {
+ "include": "#entity"
+ },
+ {
+ "include": "#keyword"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#storage"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#support"
+ },
+ {
+ "include": "#variable"
+ },
+ {
+ "include": "#syntax"
+ },
+ {
+ "include": "#commands"
+ },
+ {
+ "include": "#option"
+ },
+ {
+ "include": "#map"
+ }
+ ]
+}
diff --git a/node_modules/shiki/languages/vue-html.tmLanguage.json b/node_modules/shiki/languages/vue-html.tmLanguage.json
new file mode 100644
index 0000000..c1d8e11
--- /dev/null
+++ b/node_modules/shiki/languages/vue-html.tmLanguage.json
@@ -0,0 +1,558 @@
+{
+ "name": "vue-html",
+ "scopeName": "text.html.vue-html",
+ "fileTypes": [],
+ "uuid": "ca2e4260-5d62-45bf-8cf1-d8b5cc19c8f8",
+ "patterns": [
+ {
+ "include": "source.vue#vue-interpolations"
+ },
+ {
+ "name": "meta.tag.any.html",
+ "begin": "(<)([A-Z][a-zA-Z0-9:-]*)(?=[^>]*></\\2>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "support.class.component.html"
+ }
+ },
+ "end": "(>)(<)(/)(\\2)(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "4": {
+ "name": "support.class.component.html"
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "name": "meta.tag.any.html",
+ "begin": "(<)([a-z][a-zA-Z0-9:-]*)(?=[^>]*></\\2>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.html"
+ }
+ },
+ "end": "(>)(<)(/)(\\2)(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.begin.html meta.scope.between-tag-pair.html"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "4": {
+ "name": "entity.name.tag.html"
+ },
+ "5": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "name": "meta.tag.preprocessor.xml.html",
+ "begin": "(<\\?)(xml)",
+ "end": "(\\?>)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.html"
+ },
+ "2": {
+ "name": "entity.name.tag.xml.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-generic-attribute"
+ },
+ {
+ "include": "#string-double-quoted"
+ },
+ {
+ "include": "#string-single-quoted"
+ }
+ ]
+ },
+ {
+ "name": "comment.block.html",
+ "begin": "<!--",
+ "end": "-->",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.html"
+ }
+ }
+ },
+ {
+ "name": "meta.tag.sgml.html",
+ "begin": "<!",
+ "end": ">",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.tag.html"
+ }
+ },
+ "patterns": [
+ {
+ "name": "meta.tag.sgml.doctype.html",
+ "begin": "(?i:DOCTYPE)",
+ "end": "(?=>)",
+ "captures": {
+ "1": {
+ "name": "entity.name.tag.doctype.html"
+ }
+ },
+ "patterns": [
+ {
+ "name": "string.quoted.double.doctype.identifiers-and-DTDs.html",
+ "match": "\"[^\">]*\""
+ }
+ ]
+ },
+ {
+ "name": "constant.other.inline-data.html",
+ "begin": "\\[CDATA\\[",
+ "end": "]](?=>)"
+ },
+ {
+ "name": "invalid.illegal.bad-comments-or-CDATA.html",
+ "match": "(\\s*)(?!--|>)\\S(\\s*)"
+ }
+ ]
+ },
+ {
+ "name": "meta.tag.block.any.html",
+ "begin": "(</?)([A-Z][a-zA-Z0-9:-]*\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "support.class.component.html"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "name": "meta.tag.block.any.html",
+ "begin": "(</?)([a-z][a-zA-Z0-9:-]*\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.block.any.html"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "name": "meta.tag.structure.any.html",
+ "begin": "(</?)((?i:body|head|html)\\b)",
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.structure.any.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "name": "meta.tag.block.any.html",
+ "begin": "(</?)((?i:address|blockquote|dd|div|dl|dt|fieldset|form|frame|frameset|h1|h2|h3|h4|h5|h6|iframe|noframes|object|ol|p|ul|applet|center|dir|hr|menu|pre)(?!-)\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.block.any.html"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "name": "meta.tag.inline.any.html",
+ "begin": "(</?)((?i:a|abbr|acronym|area|b|base|basefont|bdo|big|br|button|caption|cite|code|col|colgroup|del|dfn|em|font|head|html|i|img|input|ins|isindex|kbd|label|legend|li|link|map|meta|noscript|optgroup|option|param|q|s|samp|script|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|u|var)(?!-)\\b)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.inline.any.html"
+ }
+ },
+ "end": "(/?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "name": "meta.tag.other.html",
+ "begin": "(</?)([a-zA-Z0-9:-]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html"
+ },
+ "2": {
+ "name": "entity.name.tag.other.html"
+ }
+ },
+ "end": "(/?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ {
+ "include": "#entities"
+ },
+ {
+ "name": "invalid.illegal.incomplete.html",
+ "match": "<>"
+ },
+ {
+ "name": "invalid.illegal.bad-angle-bracket.html",
+ "match": "<"
+ }
+ ],
+ "repository": {
+ "entities": {
+ "patterns": [
+ {
+ "name": "constant.character.entity.html",
+ "match": "(&)([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-F]+)(;)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.entity.html"
+ },
+ "3": {
+ "name": "punctuation.definition.entity.html"
+ }
+ }
+ },
+ {
+ "name": "invalid.illegal.bad-ampersand.html",
+ "match": "&"
+ }
+ ]
+ },
+ "string-double-quoted": {
+ "name": "string.quoted.double.html",
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.vue#vue-interpolations"
+ },
+ {
+ "include": "#entities"
+ }
+ ]
+ },
+ "string-single-quoted": {
+ "name": "string.quoted.single.html",
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.vue#vue-interpolations"
+ },
+ {
+ "include": "#entities"
+ }
+ ]
+ },
+ "tag-generic-attribute": {
+ "name": "entity.other.attribute-name.html",
+ "match": "(?<=[^=])\\b([a-zA-Z0-9:\\-_]+)"
+ },
+ "tag-id-attribute": {
+ "name": "meta.attribute-with-value.id.html",
+ "begin": "\\b(id)\\b\\s*(=)",
+ "end": "(?!\\G)(?<='|\"|[^\\s<>/])",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.id.html"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.html"
+ }
+ },
+ "patterns": [
+ {
+ "name": "string.quoted.double.html",
+ "contentName": "meta.toc-list.id.html",
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.vue#vue-interpolations"
+ },
+ {
+ "include": "#entities"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.single.html",
+ "contentName": "meta.toc-list.id.html",
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.vue#vue-interpolations"
+ },
+ {
+ "include": "#entities"
+ }
+ ]
+ },
+ {
+ "name": "string.unquoted.html",
+ "match": "(?<==)(?:[^\\s<>/'\"]|/(?!>))+",
+ "captures": {
+ "0": {
+ "name": "meta.toc-list.id.html"
+ }
+ }
+ }
+ ]
+ },
+ "tag-stuff": {
+ "patterns": [
+ {
+ "include": "#vue-directives"
+ },
+ {
+ "include": "#tag-id-attribute"
+ },
+ {
+ "include": "#tag-generic-attribute"
+ },
+ {
+ "include": "#string-double-quoted"
+ },
+ {
+ "include": "#string-single-quoted"
+ },
+ {
+ "include": "#unquoted-attribute"
+ }
+ ]
+ },
+ "unquoted-attribute": {
+ "name": "string.unquoted.html",
+ "match": "(?<==)(?:[^\\s<>/'\"]|/(?!>))+"
+ },
+ "vue-directives": {
+ "name": "meta.directive.vue",
+ "begin": "(?:\\b(v-)|(:|@|#))([a-zA-Z0-9\\-_]+)(?:\\:([a-zA-Z\\-_]+))?(?:\\.([a-zA-Z\\-_]+))*\\s*(=)",
+ "end": "(?<='|\")|(?=[\\s<>`])",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.html"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.html"
+ },
+ "3": {
+ "name": "entity.other.attribute-name.html"
+ },
+ "4": {
+ "name": "entity.other.attribute-name.html"
+ },
+ "5": {
+ "name": "entity.other.attribute-name.html"
+ },
+ "6": {
+ "name": "punctuation.separator.key-value.html"
+ }
+ },
+ "patterns": [
+ {
+ "name": "source.directive.vue",
+ "begin": "`",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "end": "`",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.js#expression"
+ }
+ ]
+ },
+ {
+ "name": "source.directive.vue",
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.js#expression"
+ }
+ ]
+ },
+ {
+ "name": "source.directive.vue",
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.html"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.html"
+ }
+ },
+ "patterns": [
+ {
+ "include": "source.js#expression"
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/vue.tmLanguage.json b/node_modules/shiki/languages/vue.tmLanguage.json
new file mode 100644
index 0000000..16d976f
--- /dev/null
+++ b/node_modules/shiki/languages/vue.tmLanguage.json
@@ -0,0 +1,1237 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "name": "vue",
+ "scopeName": "source.vue",
+ "patterns": [
+ {
+ "include": "text.html.basic#comment"
+ },
+ {
+ "include": "#self-closing-tag"
+ },
+ {
+ "begin": "(<)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ }
+ },
+ "end": "(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)md\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "text.html.markdown",
+ "patterns": [
+ {
+ "include": "text.html.markdown"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)html\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "text.html.derivative",
+ "patterns": [
+ {
+ "include": "#html-stuff"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)pug\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "text.pug",
+ "patterns": [
+ {
+ "include": "text.pug"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)stylus\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.stylus",
+ "patterns": [
+ {
+ "include": "source.stylus"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)postcss\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.postcss",
+ "patterns": [
+ {
+ "include": "source.postcss"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)sass\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.sass",
+ "patterns": [
+ {
+ "include": "source.sass"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)css\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.css",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)scss\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.css.scss",
+ "patterns": [
+ {
+ "include": "source.css.scss"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)less\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.css.less",
+ "patterns": [
+ {
+ "include": "source.css.less"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)js\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.js",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)ts\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.ts",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)jsx\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.js.jsx",
+ "patterns": [
+ {
+ "include": "source.js.jsx"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)tsx\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.tsx",
+ "patterns": [
+ {
+ "include": "source.tsx"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)json\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.json",
+ "patterns": [
+ {
+ "include": "source.json"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)jsonc\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.json.comments",
+ "patterns": [
+ {
+ "include": "source.json.comments"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)json5\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.json5",
+ "patterns": [
+ {
+ "include": "source.json5"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)yaml\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.yaml",
+ "patterns": [
+ {
+ "include": "source.yaml"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)toml\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.toml",
+ "patterns": [
+ {
+ "include": "source.toml"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)(gql|graphql)\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.graphql",
+ "patterns": [
+ {
+ "include": "source.graphql"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)\\b(?=[^>]*\\blang\\s*=\\s*(['\"]?)vue\\b\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "source.vue",
+ "patterns": [
+ {
+ "include": "source.vue"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(template)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/template\\b)",
+ "name": "text.html.derivative",
+ "patterns": [
+ {
+ "include": "#html-stuff"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(script)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/script\\b)",
+ "name": "source.js",
+ "patterns": [
+ {
+ "include": "source.js"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(style)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/style\\b)",
+ "name": "source.css",
+ "patterns": [
+ {
+ "include": "source.css"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "([a-zA-Z0-9:-]+)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.tag.$1.html.vue"
+ }
+ },
+ "end": "(</)(\\1)\\s*(?=>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "begin": "(?<=>)",
+ "end": "(?=<\\/)",
+ "name": "text"
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "repository": {
+ "self-closing-tag": {
+ "begin": "(<)([a-zA-Z0-9:-]+)(?=([^>]+/>))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "end": "(/>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html.vue"
+ }
+ },
+ "name": "self-closing-tag",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ }
+ ]
+ },
+ "template-tag": {
+ "patterns": [
+ {
+ "include": "#template-tag-1"
+ },
+ {
+ "include": "#template-tag-2"
+ }
+ ]
+ },
+ "template-tag-1": {
+ "begin": "(<)(template)\\b(>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ },
+ "3": {
+ "name": "punctuation.definition.tag.end.html.vue"
+ }
+ },
+ "end": "(/?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html.vue"
+ }
+ },
+ "name": "meta.template-tag.start",
+ "patterns": [
+ {
+ "begin": "\\G",
+ "end": "(?=/>)|((</)(template)\\b)",
+ "endCaptures": {
+ "2": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "3": {
+ "name": "entity.name.tag.$3.html.vue"
+ }
+ },
+ "name": "meta.template-tag.end",
+ "patterns": [
+ {
+ "include": "#html-stuff"
+ }
+ ]
+ }
+ ]
+ },
+ "template-tag-2": {
+ "begin": "(<)(template)\\b",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "2": {
+ "name": "entity.name.tag.$2.html.vue"
+ }
+ },
+ "end": "(/?>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html.vue"
+ }
+ },
+ "name": "meta.template-tag.start",
+ "patterns": [
+ {
+ "begin": "\\G",
+ "end": "(?=/>)|((</)(template)\\b)",
+ "endCaptures": {
+ "2": {
+ "name": "punctuation.definition.tag.begin.html.vue"
+ },
+ "3": {
+ "name": "entity.name.tag.$3.html.vue"
+ }
+ },
+ "name": "meta.template-tag.end",
+ "patterns": [
+ {
+ "include": "#tag-stuff"
+ },
+ {
+ "include": "#html-stuff"
+ }
+ ]
+ }
+ ]
+ },
+ "html-stuff": {
+ "patterns": [
+ {
+ "include": "#template-tag"
+ },
+ {
+ "include": "text.html.derivative"
+ },
+ {
+ "include": "text.html.basic"
+ }
+ ]
+ },
+ "tag-stuff": {
+ "begin": "\\G",
+ "end": "(?=/>)|(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.end.html.vue"
+ }
+ },
+ "name": "meta.tag-stuff",
+ "patterns": [
+ {
+ "include": "#vue-directives"
+ },
+ {
+ "include": "text.html.basic#attribute"
+ }
+ ]
+ },
+ "vue-directives": {
+ "patterns": [
+ {
+ "include": "#vue-directives-control"
+ },
+ {
+ "include": "#vue-directives-style-attr"
+ },
+ {
+ "include": "#vue-directives-original"
+ },
+ {
+ "include": "#vue-directives-generic-attr"
+ }
+ ]
+ },
+ "vue-directives-original": {
+ "begin": "(?:\\b(v-)|(:)|(@)|(#))(\\[?)([\\w\\-]*)(\\]?)(?:\\.([\\w\\-]*))*",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.other.attribute-name.html.vue"
+ },
+ "2": {
+ "name": "punctuation.attribute-shorthand.bind.html.vue"
+ },
+ "3": {
+ "name": "punctuation.attribute-shorthand.event.html.vue"
+ },
+ "4": {
+ "name": "punctuation.attribute-shorthand.slot.html.vue"
+ },
+ "5": {
+ "name": "punctuation.separator.key-value.html.vue"
+ },
+ "6": {
+ "name": "entity.other.attribute-name.html.vue"
+ },
+ "7": {
+ "name": "punctuation.separator.key-value.html.vue"
+ },
+ "8": {
+ "name": "entity.other.attribute-name.html.vue"
+ },
+ "9": {
+ "name": "punctuation.separator.key-value.html.vue"
+ }
+ },
+ "end": "(?=\\s*+[^=\\s])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.html.vue"
+ }
+ },
+ "name": "meta.attribute.directive.vue",
+ "patterns": [
+ {
+ "include": "#vue-directives-expression"
+ }
+ ]
+ },
+ "vue-directives-control": {
+ "begin": "(v-for)|(v-if|v-else-if|v-else)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.loop.vue"
+ },
+ "2": {
+ "name": "keyword.control.conditional.vue"
+ }
+ },
+ "end": "(?=\\s*+[^=\\s])",
+ "name": "meta.attribute.directive.control.vue",
+ "patterns": [
+ {
+ "include": "#vue-directives-expression"
+ }
+ ]
+ },
+ "vue-directives-expression": {
+ "patterns": [
+ {
+ "begin": "(=)\\s*('|\"|`)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.key-value.html.vue"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.html.vue"
+ }
+ },
+ "end": "(\\2)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.html.vue"
+ }
+ },
+ "patterns": [
+ {
+ "begin": "(?<=('|\"|`))",
+ "end": "(?=\\1)",
+ "name": "source.ts.embedded.html.vue",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(=)\\s*(?=[^'\"`])",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.key-value.html.vue"
+ }
+ },
+ "end": "(?=(\\s|>|\\/>))",
+ "patterns": [
+ {
+ "begin": "(?=[^'\"`])",
+ "end": "(?=(\\s|>|\\/>))",
+ "name": "source.ts.embedded.html.vue",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ "vue-directives-style-attr": {
+ "begin": "\\b(style)\\s*(=)",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.html.vue"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.html.vue"
+ }
+ },
+ "end": "(?<='|\")",
+ "name": "meta.attribute.style.vue",
+ "patterns": [
+ {
+ "comment": "Copy from source.css#rule-list-innards",
+ "begin": "('|\")",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.html.vue"
+ }
+ },
+ "end": "(\\1)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.html.vue"
+ }
+ },
+ "name": "source.css.embedded.html.vue",
+ "patterns": [
+ {
+ "include": "source.css#comment-block"
+ },
+ {
+ "include": "source.css#escapes"
+ },
+ {
+ "include": "source.css#font-features"
+ },
+ {
+ "match": "(?x) (?<![\\w-])\n--\n(?:[-a-zA-Z_] | [^\\x00-\\x7F]) # First letter\n(?:[-a-zA-Z0-9_] | [^\\x00-\\x7F] # Remainder of identifier\n |\\\\(?:[0-9a-fA-F]{1,6}|.)\n)*",
+ "name": "variable.css"
+ },
+ {
+ "begin": "(?<![-a-zA-Z])(?=[-a-zA-Z])",
+ "end": "$|(?![-a-zA-Z])",
+ "name": "meta.property-name.css",
+ "patterns": [
+ {
+ "include": "source.css#property-names"
+ }
+ ]
+ },
+ {
+ "comment": "Modify end to fix #199. TODO: handle ' character.",
+ "begin": "(:)\\s*",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.key-value.css"
+ }
+ },
+ "end": "\\s*(;)|\\s*(?='|\")",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.terminator.rule.css"
+ }
+ },
+ "contentName": "meta.property-value.css",
+ "patterns": [
+ {
+ "include": "source.css#comment-block"
+ },
+ {
+ "include": "source.css#property-values"
+ }
+ ]
+ },
+ {
+ "match": ";",
+ "name": "punctuation.terminator.rule.css"
+ }
+ ]
+ }
+ ]
+ },
+ "vue-directives-generic-attr": {
+ "begin": "\\b(generic)\\s*(=)",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.html.vue"
+ },
+ "2": {
+ "name": "punctuation.separator.key-value.html.vue"
+ }
+ },
+ "end": "(?<='|\")",
+ "name": "meta.attribute.generic.vue",
+ "patterns": [
+ {
+ "begin": "('|\")",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.html.vue"
+ }
+ },
+ "end": "(\\1)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.html.vue"
+ }
+ },
+ "name": "meta.type.parameters.vue",
+ "comment": "https://github.com/microsoft/vscode/blob/fd4346210f59135fad81a8b8c4cea7bf5a9ca6b4/extensions/typescript-basics/syntaxes/TypeScript.tmLanguage.json#L4002-L4020",
+ "patterns": [
+ {
+ "include": "source.ts#comment"
+ },
+ {
+ "name": "storage.modifier.ts",
+ "match": "(?<![_$[:alnum:]])(?:(?<=\\.\\.\\.)|(?<!\\.))(extends|in|out)(?![_$[:alnum:]])(?:(?=\\.\\.\\.)|(?!\\.))"
+ },
+ {
+ "include": "source.ts#type"
+ },
+ {
+ "include": "source.ts#punctuation-comma"
+ },
+ {
+ "name": "keyword.operator.assignment.ts",
+ "match": "(=)(?!>)"
+ }
+ ]
+ }
+ ]
+ },
+ "vue-interpolations": {
+ "patterns": [
+ {
+ "begin": "(\\{\\{)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.interpolation.begin.html.vue"
+ }
+ },
+ "end": "(\\}\\})",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.interpolation.end.html.vue"
+ }
+ },
+ "name": "expression.embedded.vue",
+ "patterns": [
+ {
+ "begin": "\\G",
+ "end": "(?=\\}\\})",
+ "name": "source.ts.embedded.html.vue",
+ "patterns": [
+ {
+ "include": "source.ts"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/vyper.tmLanguage.json b/node_modules/shiki/languages/vyper.tmLanguage.json
new file mode 100644
index 0000000..995927a
--- /dev/null
+++ b/node_modules/shiki/languages/vyper.tmLanguage.json
@@ -0,0 +1,5420 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/MagicStack/MagicPython/blob/master/grammars/MagicPython.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/MagicStack/MagicPython/commit/b2b4f4ae7b4e6284e80bda8080106b93bd588f9e",
+ "name": "vyper",
+ "scopeName": "source.vyper",
+ "patterns": [
+ {
+ "include": "#statement"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#reserved-names-vyper"
+ }
+ ],
+ "repository": {
+ "impossible": {
+ "comment": "This is a special rule that should be used where no match is desired. It is not a good idea to match something like '1{0}' because in some cases that can result in infinite loops in token generation. So the rule instead matches and impossible expression to allow a match to fail and move to the next token.",
+ "match": "$.^"
+ },
+ "statement": {
+ "patterns": [
+ {
+ "include": "#import"
+ },
+ {
+ "include": "#class-declaration"
+ },
+ {
+ "include": "#function-declaration"
+ },
+ {
+ "include": "#generator"
+ },
+ {
+ "include": "#statement-keyword"
+ },
+ {
+ "include": "#assignment-operator"
+ },
+ {
+ "include": "#decorator"
+ },
+ {
+ "include": "#docstring-statement"
+ },
+ {
+ "include": "#semicolon"
+ }
+ ]
+ },
+ "semicolon": {
+ "patterns": [
+ {
+ "name": "invalid.deprecated.semicolon.python",
+ "match": "\\;$"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "name": "comment.line.number-sign.python",
+ "contentName": "meta.typehint.comment.python",
+ "begin": "(?x)\n (?:\n \\# \\s* (type:)\n \\s*+ (?# we want `\\s*+` which is possessive quantifier since\n we do not actually want to backtrack when matching\n whitespace here)\n (?! $ | \\#)\n )\n",
+ "end": "(?:$|(?=\\#))",
+ "beginCaptures": {
+ "0": {
+ "name": "meta.typehint.comment.python"
+ },
+ "1": {
+ "name": "comment.typehint.directive.notation.python"
+ }
+ },
+ "patterns": [
+ {
+ "name": "comment.typehint.ignore.notation.python",
+ "match": "(?x)\n \\G ignore\n (?= \\s* (?: $ | \\#))\n"
+ },
+ {
+ "name": "comment.typehint.type.notation.python",
+ "match": "(?x)\n (?<!\\.)\\b(\n bool | bytes | float | int | object | str\n | List | Dict | Iterable | Sequence | Set\n | FrozenSet | Callable | Union | Tuple\n | Any | None\n )\\b\n"
+ },
+ {
+ "name": "comment.typehint.punctuation.notation.python",
+ "match": "([\\[\\]\\(\\),\\.\\=\\*]|(->))"
+ },
+ {
+ "name": "comment.typehint.variable.notation.python",
+ "match": "([[:alpha:]_]\\w*)"
+ }
+ ]
+ },
+ {
+ "include": "#comments-base"
+ }
+ ]
+ },
+ "docstring-statement": {
+ "begin": "^(?=\\s*[rR]?(\\'\\'\\'|\\\"\\\"\\\"|\\'|\\\"))",
+ "comment": "the string either terminates correctly or by the beginning of a new line (this is for single line docstrings that aren't terminated) AND it's not followed by another docstring",
+ "end": "((?<=\\1)|^)(?!\\s*[rR]?(\\'\\'\\'|\\\"\\\"\\\"|\\'|\\\"))",
+ "patterns": [
+ {
+ "include": "#docstring"
+ }
+ ]
+ },
+ "docstring": {
+ "patterns": [
+ {
+ "name": "string.quoted.docstring.multi.python",
+ "begin": "(\\'\\'\\'|\\\"\\\"\\\")",
+ "end": "(\\1)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#docstring-prompt"
+ },
+ {
+ "include": "#codetags"
+ },
+ {
+ "include": "#docstring-guts-unicode"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.docstring.raw.multi.python",
+ "begin": "([rR])(\\'\\'\\'|\\\"\\\"\\\")",
+ "end": "(\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.string.python"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ },
+ {
+ "include": "#docstring-prompt"
+ },
+ {
+ "include": "#codetags"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.docstring.single.python",
+ "begin": "(\\'|\\\")",
+ "end": "(\\1)|(\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#codetags"
+ },
+ {
+ "include": "#docstring-guts-unicode"
+ }
+ ]
+ },
+ {
+ "name": "string.quoted.docstring.raw.single.python",
+ "begin": "([rR])(\\'|\\\")",
+ "end": "(\\2)|(\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.string.python"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ },
+ {
+ "include": "#codetags"
+ }
+ ]
+ }
+ ]
+ },
+ "docstring-guts-unicode": {
+ "patterns": [
+ {
+ "include": "#escape-sequence-unicode"
+ },
+ {
+ "include": "#escape-sequence"
+ },
+ {
+ "include": "#string-line-continuation"
+ }
+ ]
+ },
+ "docstring-prompt": {
+ "match": "(?x)\n (?:\n (?:^|\\G) \\s* (?# '\\G' is necessary for ST)\n ((?:>>>|\\.\\.\\.) \\s) (?=\\s*\\S)\n )\n",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.python"
+ }
+ }
+ },
+ "statement-keyword": {
+ "patterns": [
+ {
+ "name": "storage.type.function.python",
+ "match": "\\b((async\\s+)?\\s*def)\\b"
+ },
+ {
+ "name": "keyword.control.flow.python",
+ "comment": "if `as` is eventually followed by `:` or line continuation\nit's probably control flow like:\n with foo as bar, \\\n Foo as Bar:\n try:\n do_stuff()\n except Exception as e:\n pass\n",
+ "match": "\\b(?<!\\.)as\\b(?=.*[:\\\\])"
+ },
+ {
+ "name": "keyword.control.import.python",
+ "comment": "other legal use of `as` is in an import",
+ "match": "\\b(?<!\\.)as\\b"
+ },
+ {
+ "name": "keyword.control.flow.python",
+ "match": "(?x)\n \\b(?<!\\.)(\n async | continue | del | assert | break | finally | for\n | from | elif | else | if | except | pass | raise\n | return | try | while | with\n )\\b\n"
+ },
+ {
+ "name": "storage.modifier.declaration.python",
+ "match": "(?x)\n \\b(?<!\\.)(\n global | nonlocal\n )\\b\n"
+ },
+ {
+ "name": "storage.type.class.python",
+ "match": "\\b(?<!\\.)(class)\\b"
+ }
+ ]
+ },
+ "expression-bare": {
+ "comment": "valid Python expressions w/o comments and line continuation",
+ "patterns": [
+ {
+ "include": "#backticks"
+ },
+ {
+ "include": "#illegal-anno"
+ },
+ {
+ "include": "#literal"
+ },
+ {
+ "include": "#regexp"
+ },
+ {
+ "include": "#string"
+ },
+ {
+ "include": "#lambda"
+ },
+ {
+ "include": "#generator"
+ },
+ {
+ "include": "#illegal-operator"
+ },
+ {
+ "include": "#operator"
+ },
+ {
+ "include": "#curly-braces"
+ },
+ {
+ "include": "#item-access"
+ },
+ {
+ "include": "#list"
+ },
+ {
+ "include": "#odd-function-call"
+ },
+ {
+ "include": "#round-braces"
+ },
+ {
+ "include": "#function-call"
+ },
+ {
+ "include": "#builtin-functions"
+ },
+ {
+ "include": "#builtin-types"
+ },
+ {
+ "include": "#builtin-exceptions"
+ },
+ {
+ "include": "#magic-names"
+ },
+ {
+ "include": "#special-names"
+ },
+ {
+ "include": "#illegal-names"
+ },
+ {
+ "include": "#special-variables"
+ },
+ {
+ "include": "#ellipsis"
+ },
+ {
+ "include": "#punctuation"
+ },
+ {
+ "include": "#line-continuation"
+ },
+ {
+ "include": "#special-variables-types"
+ }
+ ]
+ },
+ "expression-base": {
+ "comment": "valid Python expressions with comments and line continuation",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#expression-bare"
+ },
+ {
+ "include": "#line-continuation"
+ }
+ ]
+ },
+ "expression": {
+ "comment": "All valid Python expressions",
+ "patterns": [
+ {
+ "include": "#expression-base"
+ },
+ {
+ "include": "#member-access"
+ },
+ {
+ "comment": "Tokenize identifiers to help linters",
+ "match": "(?x) \\b ([[:alpha:]_]\\w*) \\b"
+ }
+ ]
+ },
+ "member-access": {
+ "name": "meta.member.access.python",
+ "begin": "(\\.)\\s*(?!\\.)",
+ "end": "(?x)\n # stop when you've just read non-whitespace followed by non-word\n # i.e. when finished reading an identifier or function call\n (?<=\\S)(?=\\W) |\n # stop when seeing the start of something that's not a word,\n # i.e. when seeing a non-identifier\n (^|(?<=\\s))(?=[^\\\\\\w\\s]) |\n $\n",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.period.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-call"
+ },
+ {
+ "include": "#member-access-base"
+ },
+ {
+ "include": "#member-access-attribute"
+ }
+ ]
+ },
+ "member-access-base": {
+ "patterns": [
+ {
+ "include": "#magic-names"
+ },
+ {
+ "include": "#illegal-names"
+ },
+ {
+ "include": "#illegal-object-name"
+ },
+ {
+ "include": "#special-names"
+ },
+ {
+ "include": "#line-continuation"
+ },
+ {
+ "include": "#item-access"
+ },
+ {
+ "include": "#special-variables-types"
+ }
+ ]
+ },
+ "member-access-attribute": {
+ "comment": "Highlight attribute access in otherwise non-specialized cases.",
+ "name": "meta.attribute.python",
+ "match": "(?x)\n \\b ([[:alpha:]_]\\w*) \\b\n"
+ },
+ "special-names": {
+ "name": "constant.other.caps.python",
+ "match": "(?x)\n \\b\n # we want to see \"enough\", meaning 2 or more upper-case\n # letters in the beginning of the constant\n #\n # for more details refer to:\n # https://github.com/MagicStack/MagicPython/issues/42\n (\n _* [[:upper:]] [_\\d]* [[:upper:]]\n )\n [[:upper:]\\d]* (_\\w*)?\n \\b\n"
+ },
+ "curly-braces": {
+ "begin": "\\{",
+ "end": "\\}",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.dict.begin.python"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.dict.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.separator.dict.python",
+ "match": ":"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "list": {
+ "begin": "\\[",
+ "end": "\\]",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.list.begin.python"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.list.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "odd-function-call": {
+ "comment": "A bit obscured function call where there may have been an\narbitrary number of other operations to get the function.\nE.g. \"arr[idx](args)\"\n",
+ "begin": "(?x)\n (?<= \\] | \\) ) \\s*\n (?=\\()\n",
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-arguments"
+ }
+ ]
+ },
+ "round-braces": {
+ "begin": "\\(",
+ "end": "\\)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.begin.python"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.parenthesis.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "line-continuation": {
+ "patterns": [
+ {
+ "match": "(\\\\)\\s*(\\S.*$\\n?)",
+ "captures": {
+ "1": {
+ "name": "punctuation.separator.continuation.line.python"
+ },
+ "2": {
+ "name": "invalid.illegal.line.continuation.python"
+ }
+ }
+ },
+ {
+ "begin": "(\\\\)\\s*$\\n?",
+ "end": "(?x)\n (?=^\\s*$)\n |\n (?! (\\s* [rR]? (\\'\\'\\'|\\\"\\\"\\\"|\\'|\\\"))\n |\n (\\G $) (?# '\\G' is necessary for ST)\n )\n",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.continuation.line.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp"
+ },
+ {
+ "include": "#string"
+ }
+ ]
+ }
+ ]
+ },
+ "assignment-operator": {
+ "name": "keyword.operator.assignment.python",
+ "match": "(?x)\n <<= | >>= | //= | \\*\\*=\n | \\+= | -= | /= | @=\n | \\*= | %= | ~= | \\^= | &= | \\|=\n | =(?!=)\n"
+ },
+ "operator": {
+ "match": "(?x)\n \\b(?<!\\.)\n (?:\n (and | or | not | in | is) (?# 1)\n |\n (for | if | else | await | (?:yield(?:\\s+from)?)) (?# 2)\n )\n (?!\\s*:)\\b\n\n | (<< | >> | & | \\| | \\^ | ~) (?# 3)\n\n | (\\*\\* | \\* | \\+ | - | % | // | / | @) (?# 4)\n\n | (!= | == | >= | <= | < | >) (?# 5)\n",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.logical.python"
+ },
+ "2": {
+ "name": "keyword.control.flow.python"
+ },
+ "3": {
+ "name": "keyword.operator.bitwise.python"
+ },
+ "4": {
+ "name": "keyword.operator.arithmetic.python"
+ },
+ "5": {
+ "name": "keyword.operator.comparison.python"
+ }
+ }
+ },
+ "punctuation": {
+ "patterns": [
+ {
+ "name": "punctuation.separator.colon.python",
+ "match": ":"
+ },
+ {
+ "name": "punctuation.separator.element.python",
+ "match": ","
+ }
+ ]
+ },
+ "literal": {
+ "patterns": [
+ {
+ "name": "constant.language.python",
+ "match": "\\b(True|False|None|NotImplemented|Ellipsis)\\b"
+ },
+ {
+ "include": "#number"
+ }
+ ]
+ },
+ "number": {
+ "name": "constant.numeric.python",
+ "patterns": [
+ {
+ "include": "#number-float"
+ },
+ {
+ "include": "#number-dec"
+ },
+ {
+ "include": "#number-hex"
+ },
+ {
+ "include": "#number-oct"
+ },
+ {
+ "include": "#number-bin"
+ },
+ {
+ "include": "#number-long"
+ },
+ {
+ "name": "invalid.illegal.name.python",
+ "match": "\\b[0-9]+\\w+"
+ }
+ ]
+ },
+ "number-float": {
+ "name": "constant.numeric.float.python",
+ "match": "(?x)\n (?<! \\w)(?:\n (?:\n \\.[0-9](?: _?[0-9] )*\n |\n [0-9](?: _?[0-9] )* \\. [0-9](?: _?[0-9] )*\n |\n [0-9](?: _?[0-9] )* \\.\n ) (?: [eE][+-]?[0-9](?: _?[0-9] )* )?\n |\n [0-9](?: _?[0-9] )* (?: [eE][+-]?[0-9](?: _?[0-9] )* )\n )([jJ])?\\b\n",
+ "captures": {
+ "1": {
+ "name": "storage.type.imaginary.number.python"
+ }
+ }
+ },
+ "number-dec": {
+ "name": "constant.numeric.dec.python",
+ "match": "(?x)\n (?<![\\w\\.])(?:\n [1-9](?: _?[0-9] )*\n |\n 0+\n |\n [0-9](?: _?[0-9] )* ([jJ])\n |\n 0 ([0-9]+)(?![eE\\.])\n )\\b\n",
+ "captures": {
+ "1": {
+ "name": "storage.type.imaginary.number.python"
+ },
+ "2": {
+ "name": "invalid.illegal.dec.python"
+ }
+ }
+ },
+ "number-hex": {
+ "name": "constant.numeric.hex.python",
+ "match": "(?x)\n (?<![\\w\\.])\n (0[xX]) (_?[0-9a-fA-F])+\n \\b\n",
+ "captures": {
+ "1": {
+ "name": "storage.type.number.python"
+ }
+ }
+ },
+ "number-oct": {
+ "name": "constant.numeric.oct.python",
+ "match": "(?x)\n (?<![\\w\\.])\n (0[oO]) (_?[0-7])+\n \\b\n",
+ "captures": {
+ "1": {
+ "name": "storage.type.number.python"
+ }
+ }
+ },
+ "number-bin": {
+ "name": "constant.numeric.bin.python",
+ "match": "(?x)\n (?<![\\w\\.])\n (0[bB]) (_?[01])+\n \\b\n",
+ "captures": {
+ "1": {
+ "name": "storage.type.number.python"
+ }
+ }
+ },
+ "number-long": {
+ "name": "constant.numeric.bin.python",
+ "comment": "this is to support python2 syntax for long ints",
+ "match": "(?x)\n (?<![\\w\\.])\n ([1-9][0-9]* | 0) ([lL])\n \\b\n",
+ "captures": {
+ "2": {
+ "name": "storage.type.number.python"
+ }
+ }
+ },
+ "regexp": {
+ "patterns": [
+ {
+ "include": "#regexp-single-three-line"
+ },
+ {
+ "include": "#regexp-double-three-line"
+ },
+ {
+ "include": "#regexp-single-one-line"
+ },
+ {
+ "include": "#regexp-double-one-line"
+ },
+ {
+ "include": "#fregexp-single-three-line"
+ },
+ {
+ "include": "#fregexp-double-three-line"
+ },
+ {
+ "include": "#fregexp-single-one-line"
+ },
+ {
+ "include": "#fregexp-double-one-line"
+ }
+ ]
+ },
+ "string": {
+ "patterns": [
+ {
+ "include": "#string-quoted-multi-line"
+ },
+ {
+ "include": "#string-quoted-single-line"
+ },
+ {
+ "include": "#string-bin-quoted-multi-line"
+ },
+ {
+ "include": "#string-bin-quoted-single-line"
+ },
+ {
+ "include": "#string-raw-quoted-multi-line"
+ },
+ {
+ "include": "#string-raw-quoted-single-line"
+ },
+ {
+ "include": "#string-raw-bin-quoted-multi-line"
+ },
+ {
+ "include": "#string-raw-bin-quoted-single-line"
+ },
+ {
+ "include": "#fstring-fnorm-quoted-multi-line"
+ },
+ {
+ "include": "#fstring-fnorm-quoted-single-line"
+ },
+ {
+ "include": "#fstring-normf-quoted-multi-line"
+ },
+ {
+ "include": "#fstring-normf-quoted-single-line"
+ },
+ {
+ "include": "#fstring-raw-quoted-multi-line"
+ },
+ {
+ "include": "#fstring-raw-quoted-single-line"
+ }
+ ]
+ },
+ "string-unicode-guts": {
+ "patterns": [
+ {
+ "include": "#escape-sequence-unicode"
+ },
+ {
+ "include": "#string-entity"
+ },
+ {
+ "include": "#string-brace-formatting"
+ }
+ ]
+ },
+ "string-consume-escape": {
+ "match": "\\\\['\"\\n\\\\]"
+ },
+ "string-raw-guts": {
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ },
+ {
+ "include": "#string-formatting"
+ },
+ {
+ "include": "#string-brace-formatting"
+ }
+ ]
+ },
+ "string-raw-bin-guts": {
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ },
+ {
+ "include": "#string-formatting"
+ }
+ ]
+ },
+ "string-entity": {
+ "patterns": [
+ {
+ "include": "#escape-sequence"
+ },
+ {
+ "include": "#string-line-continuation"
+ },
+ {
+ "include": "#string-formatting"
+ }
+ ]
+ },
+ "fstring-guts": {
+ "patterns": [
+ {
+ "include": "#escape-sequence-unicode"
+ },
+ {
+ "include": "#escape-sequence"
+ },
+ {
+ "include": "#string-line-continuation"
+ },
+ {
+ "include": "#fstring-formatting"
+ }
+ ]
+ },
+ "fstring-raw-guts": {
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ },
+ {
+ "include": "#fstring-formatting"
+ }
+ ]
+ },
+ "fstring-illegal-single-brace": {
+ "comment": "it is illegal to have a multiline brace inside a single-line string",
+ "begin": "(\\{)(?=[^\\n}]*$\\n?)",
+ "end": "(\\})|(?=\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-terminator-single"
+ },
+ {
+ "include": "#f-expression"
+ }
+ ]
+ },
+ "fstring-illegal-multi-brace": {
+ "patterns": [
+ {
+ "include": "#impossible"
+ }
+ ]
+ },
+ "f-expression": {
+ "comment": "All valid Python expressions, except comments and line continuation",
+ "patterns": [
+ {
+ "include": "#expression-bare"
+ },
+ {
+ "include": "#member-access"
+ },
+ {
+ "comment": "Tokenize identifiers to help linters",
+ "match": "(?x) \\b ([[:alpha:]_]\\w*) \\b"
+ }
+ ]
+ },
+ "escape-sequence-unicode": {
+ "patterns": [
+ {
+ "name": "constant.character.escape.python",
+ "match": "(?x)\n \\\\ (\n u[0-9A-Fa-f]{4}\n | U[0-9A-Fa-f]{8}\n | N\\{[\\w\\s]+?\\}\n )\n"
+ }
+ ]
+ },
+ "escape-sequence": {
+ "name": "constant.character.escape.python",
+ "match": "(?x)\n \\\\ (\n x[0-9A-Fa-f]{2}\n | [0-7]{1,3}\n | [\\\\\"'abfnrtv]\n )\n"
+ },
+ "string-line-continuation": {
+ "name": "constant.language.python",
+ "match": "\\\\$"
+ },
+ "string-formatting": {
+ "name": "meta.format.percent.python",
+ "match": "(?x)\n (\n % (\\([\\w\\s]*\\))?\n [-+#0 ]*\n (\\d+|\\*)? (\\.(\\d+|\\*))?\n ([hlL])?\n [diouxXeEfFgGcrsab%]\n )\n",
+ "captures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ }
+ }
+ },
+ "string-brace-formatting": {
+ "patterns": [
+ {
+ "name": "meta.format.brace.python",
+ "match": "(?x)\n (\n {{ | }}\n | (?:\n {\n \\w* (\\.[[:alpha:]_]\\w* | \\[[^\\]'\"]+\\])*\n (![rsa])?\n ( : \\w? [<>=^]? [-+ ]? \\#?\n \\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )?\n })\n )\n",
+ "captures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ },
+ "3": {
+ "name": "storage.type.format.python"
+ },
+ "4": {
+ "name": "storage.type.format.python"
+ }
+ }
+ },
+ {
+ "name": "meta.format.brace.python",
+ "match": "(?x)\n (\n {\n \\w* (\\.[[:alpha:]_]\\w* | \\[[^\\]'\"]+\\])*\n (![rsa])?\n (:)\n [^'\"{}\\n]* (?:\n \\{ [^'\"}\\n]*? \\} [^'\"{}\\n]*\n )*\n }\n )\n",
+ "captures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ },
+ "3": {
+ "name": "storage.type.format.python"
+ },
+ "4": {
+ "name": "storage.type.format.python"
+ }
+ }
+ }
+ ]
+ },
+ "fstring-formatting": {
+ "patterns": [
+ {
+ "include": "#fstring-formatting-braces"
+ },
+ {
+ "include": "#fstring-formatting-singe-brace"
+ }
+ ]
+ },
+ "fstring-formatting-singe-brace": {
+ "name": "invalid.illegal.brace.python",
+ "match": "(}(?!}))"
+ },
+ "import": {
+ "comment": "Import statements used to correctly mark `from`, `import`, and `as`\n",
+ "patterns": [
+ {
+ "begin": "\\b(?<!\\.)(from)\\b(?=.+import)",
+ "end": "$|(?=import)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.import.python"
+ }
+ },
+ "patterns": [
+ {
+ "name": "punctuation.separator.period.python",
+ "match": "\\.+"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ {
+ "begin": "\\b(?<!\\.)(import)\\b",
+ "end": "$",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.import.python"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.control.import.python",
+ "match": "\\b(?<!\\.)as\\b"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "class-declaration": {
+ "patterns": [
+ {
+ "name": "meta.class.python",
+ "begin": "(?x)\n \\s*(class)\\s+\n (?=\n [[:alpha:]_]\\w* \\s* (:|\\()\n )\n",
+ "end": "(:)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.class.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.class.begin.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#class-name"
+ },
+ {
+ "include": "#class-inheritance"
+ }
+ ]
+ }
+ ]
+ },
+ "class-name": {
+ "patterns": [
+ {
+ "include": "#illegal-object-name"
+ },
+ {
+ "include": "#builtin-possible-callables"
+ },
+ {
+ "name": "entity.name.type.class.python",
+ "match": "(?x)\n \\b ([[:alpha:]_]\\w*) \\b\n"
+ }
+ ]
+ },
+ "class-inheritance": {
+ "name": "meta.class.inheritance.python",
+ "begin": "(\\()",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.inheritance.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.inheritance.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.operator.unpacking.arguments.python",
+ "match": "(\\*\\*|\\*)"
+ },
+ {
+ "name": "punctuation.separator.inheritance.python",
+ "match": ","
+ },
+ {
+ "name": "keyword.operator.assignment.python",
+ "match": "=(?!=)"
+ },
+ {
+ "name": "support.type.metaclass.python",
+ "match": "\\bmetaclass\\b"
+ },
+ {
+ "include": "#illegal-names"
+ },
+ {
+ "include": "#class-kwarg"
+ },
+ {
+ "include": "#call-wrapper-inheritance"
+ },
+ {
+ "include": "#expression-base"
+ },
+ {
+ "include": "#member-access-class"
+ },
+ {
+ "include": "#inheritance-identifier"
+ }
+ ]
+ },
+ "class-kwarg": {
+ "match": "(?x)\n \\b ([[:alpha:]_]\\w*) \\s*(=)(?!=)\n",
+ "captures": {
+ "1": {
+ "name": "entity.other.inherited-class.python variable.parameter.class.python"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.python"
+ }
+ }
+ },
+ "inheritance-identifier": {
+ "match": "(?x)\n \\b ([[:alpha:]_]\\w*) \\b\n",
+ "captures": {
+ "1": {
+ "name": "entity.other.inherited-class.python"
+ }
+ }
+ },
+ "member-access-class": {
+ "name": "meta.member.access.python",
+ "begin": "(\\.)\\s*(?!\\.)",
+ "end": "(?<=\\S)(?=\\W)|$",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.period.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#call-wrapper-inheritance"
+ },
+ {
+ "include": "#member-access-base"
+ },
+ {
+ "include": "#inheritance-identifier"
+ }
+ ]
+ },
+ "lambda": {
+ "patterns": [
+ {
+ "match": "((?<=\\.)lambda|lambda(?=\\s*[\\.=]))",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.python"
+ }
+ }
+ },
+ {
+ "match": "\\b(lambda)\\s*?(?=[,\\n]|$)",
+ "captures": {
+ "1": {
+ "name": "storage.type.function.lambda.python"
+ }
+ }
+ },
+ {
+ "name": "meta.lambda-function.python",
+ "begin": "(?x)\n \\b (lambda) \\b\n",
+ "end": "(:)|(\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.lambda.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.function.lambda.begin.python"
+ }
+ },
+ "contentName": "meta.function.lambda.parameters.python",
+ "patterns": [
+ {
+ "name": "keyword.operator.unpacking.parameter.python",
+ "match": "(\\*\\*|\\*)"
+ },
+ {
+ "include": "#lambda-nested-incomplete"
+ },
+ {
+ "include": "#illegal-names"
+ },
+ {
+ "match": "([[:alpha:]_]\\w*)\\s*(?:(,)|(?=:|$))",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.function.language.python"
+ },
+ "2": {
+ "name": "punctuation.separator.parameters.python"
+ }
+ }
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#backticks"
+ },
+ {
+ "include": "#illegal-anno"
+ },
+ {
+ "include": "#lambda-parameter-with-default"
+ },
+ {
+ "include": "#line-continuation"
+ },
+ {
+ "include": "#illegal-operator"
+ }
+ ]
+ }
+ ]
+ },
+ "lambda-incomplete": {
+ "name": "storage.type.function.lambda.python",
+ "match": "\\blambda(?=\\s*[,)])"
+ },
+ "lambda-nested-incomplete": {
+ "name": "storage.type.function.lambda.python",
+ "match": "\\blambda(?=\\s*[:,)])"
+ },
+ "lambda-parameter-with-default": {
+ "begin": "(?x)\n \\b\n ([[:alpha:]_]\\w*) \\s* (=)\n",
+ "end": "(,)|(?=:|$)",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.parameter.function.language.python"
+ },
+ "2": {
+ "name": "keyword.operator.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.parameters.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "generator": {
+ "comment": "Match \"for ... in\" construct used in generators and for loops to\ncorrectly identify the \"in\" as a control flow keyword.\n",
+ "begin": "\\bfor\\b",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.control.flow.python"
+ }
+ },
+ "end": "\\bin\\b",
+ "endCaptures": {
+ "0": {
+ "name": "keyword.control.flow.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "function-declaration": {
+ "name": "meta.function.python",
+ "begin": "(?x)\n \\s*\n (?:\\b(async) \\s+)? \\b(def)\\s+\n (?=\n [[:alpha:]_][[:word:]]* \\s* \\(\n )\n",
+ "end": "(:|(?=[#'\"\\n]))",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.function.async.python"
+ },
+ "2": {
+ "name": "storage.type.function.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.section.function.begin.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#function-def-name"
+ },
+ {
+ "include": "#parameters"
+ },
+ {
+ "include": "#line-continuation"
+ },
+ {
+ "include": "#return-annotation"
+ }
+ ]
+ },
+ "function-def-name": {
+ "patterns": [
+ {
+ "name": "entity.name.function.fallback.vyper",
+ "match": "(?x)\n \\b (__default__) \\b\n"
+ },
+ {
+ "name": "entity.name.function.constructor.vyper",
+ "match": "(?x)\n \\b (__init__) \\b\n"
+ },
+ {
+ "include": "#illegal-object-name"
+ },
+ {
+ "include": "#builtin-possible-callables"
+ },
+ {
+ "name": "entity.name.function.python",
+ "match": "(?x)\n \\b ([[:alpha:]_]\\w*) \\b\n"
+ }
+ ]
+ },
+ "parameters": {
+ "name": "meta.function.parameters.python",
+ "begin": "(\\()",
+ "end": "(\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.parameters.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "name": "keyword.operator.unpacking.parameter.python",
+ "match": "(\\*\\*|\\*)"
+ },
+ {
+ "include": "#lambda-incomplete"
+ },
+ {
+ "include": "#illegal-names"
+ },
+ {
+ "include": "#illegal-object-name"
+ },
+ {
+ "include": "#parameter-special"
+ },
+ {
+ "match": "(?x)\n ([[:alpha:]_]\\w*)\n \\s* (?: (,) | (?=[)#\\n=]))\n",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.function.language.python"
+ },
+ "2": {
+ "name": "punctuation.separator.parameters.python"
+ }
+ }
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#loose-default"
+ },
+ {
+ "include": "#annotated-parameter"
+ }
+ ]
+ },
+ "parameter-special": {
+ "match": "(?x)\n \\b ((self)|(cls)) \\b \\s*(?:(,)|(?=\\)))\n",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.function.language.python"
+ },
+ "2": {
+ "name": "variable.parameter.function.language.special.self.python"
+ },
+ "3": {
+ "name": "variable.parameter.function.language.special.cls.python"
+ },
+ "4": {
+ "name": "punctuation.separator.parameters.python"
+ }
+ }
+ },
+ "loose-default": {
+ "begin": "(=)",
+ "end": "(,)|(?=\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.operator.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.parameters.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "annotated-parameter": {
+ "begin": "(?x)\n \\b\n ([[:alpha:]_]\\w*) \\s* (:)\n",
+ "end": "(,)|(?=\\))",
+ "beginCaptures": {
+ "1": {
+ "name": "variable.parameter.function.language.python"
+ },
+ "2": {
+ "name": "punctuation.separator.annotation.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.parameters.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ },
+ {
+ "name": "keyword.operator.assignment.python",
+ "match": "=(?!=)"
+ }
+ ]
+ },
+ "return-annotation": {
+ "begin": "(->)",
+ "end": "(?=:)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.separator.annotation.result.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "item-access": {
+ "patterns": [
+ {
+ "name": "meta.item-access.python",
+ "begin": "(?x)\n \\b(?=\n [[:alpha:]_]\\w* \\s* \\[\n )\n",
+ "end": "(\\])",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#item-name"
+ },
+ {
+ "include": "#item-index"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ }
+ ]
+ },
+ "item-name": {
+ "patterns": [
+ {
+ "include": "#special-variables"
+ },
+ {
+ "include": "#builtin-functions"
+ },
+ {
+ "include": "#special-names"
+ },
+ {
+ "name": "meta.indexed-name.python",
+ "match": "(?x)\n \\b ([[:alpha:]_]\\w*) \\b\n"
+ },
+ {
+ "include": "#special-variables-types"
+ }
+ ]
+ },
+ "item-index": {
+ "begin": "(\\[)",
+ "end": "(?=\\])",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.python"
+ }
+ },
+ "contentName": "meta.item-access.arguments.python",
+ "patterns": [
+ {
+ "name": "punctuation.separator.slice.python",
+ "match": ":"
+ },
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "decorator": {
+ "name": "meta.function.decorator.python",
+ "begin": "(?x)\n ^\\s*\n ((@)) \\s* (?=[[:alpha:]_]\\w*)\n",
+ "end": "(?x)\n ( \\) )\n # trailing whitespace and comments are legal\n (?: (.*?) (?=\\s*(?:\\#|$)) )\n | (?=\\n|\\#)\n",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.decorator.python"
+ },
+ "2": {
+ "name": "punctuation.definition.decorator.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.decorator.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#decorator-name"
+ },
+ {
+ "include": "#function-arguments"
+ }
+ ]
+ },
+ "decorator-name": {
+ "patterns": [
+ {
+ "include": "#builtin-callables"
+ },
+ {
+ "include": "#illegal-object-name"
+ },
+ {
+ "name": "entity.name.function.decorator.python",
+ "match": "(?x)\n ([[:alpha:]_]\\w*) | (\\.)\n",
+ "captures": {
+ "2": {
+ "name": "punctuation.separator.period.python"
+ }
+ }
+ },
+ {
+ "include": "#line-continuation"
+ },
+ {
+ "name": "invalid.illegal.decorator.python",
+ "match": "(?x)\n \\s* ([^([:alpha:]\\s_\\.#\\\\] .*?) (?=\\#|$)\n",
+ "captures": {
+ "1": {
+ "name": "invalid.illegal.decorator.python"
+ }
+ }
+ }
+ ]
+ },
+ "call-wrapper-inheritance": {
+ "comment": "same as a function call, but in inheritance context",
+ "name": "meta.function-call.python",
+ "begin": "(?x)\n \\b(?=\n ([[:alpha:]_]\\w*) \\s* (\\()\n )\n",
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#inheritance-name"
+ },
+ {
+ "include": "#function-arguments"
+ }
+ ]
+ },
+ "inheritance-name": {
+ "patterns": [
+ {
+ "include": "#lambda-incomplete"
+ },
+ {
+ "include": "#builtin-possible-callables"
+ },
+ {
+ "include": "#inheritance-identifier"
+ }
+ ]
+ },
+ "function-call": {
+ "name": "meta.function-call.python",
+ "comment": "Regular function call of the type \"name(args)\"",
+ "begin": "(?x)\n \\b(?=\n ([[:alpha:]_]\\w*) \\s* (\\()\n )\n",
+ "end": "(\\))",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#special-variables"
+ },
+ {
+ "include": "#function-name"
+ },
+ {
+ "include": "#function-arguments"
+ }
+ ]
+ },
+ "function-name": {
+ "patterns": [
+ {
+ "include": "#builtin-possible-callables"
+ },
+ {
+ "comment": "Some color schemas support meta.function-call.generic scope",
+ "name": "meta.function-call.generic.python",
+ "match": "(?x)\n \\b ([[:alpha:]_]\\w*) \\b\n"
+ }
+ ]
+ },
+ "function-arguments": {
+ "begin": "(\\()",
+ "end": "(?=\\))(?!\\)\\s*\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.arguments.begin.python"
+ }
+ },
+ "contentName": "meta.function-call.arguments.python",
+ "patterns": [
+ {
+ "name": "punctuation.separator.arguments.python",
+ "match": "(,)"
+ },
+ {
+ "match": "(?x)\n (?:(?<=[,(])|^) \\s* (\\*{1,2})\n",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.unpacking.arguments.python"
+ }
+ }
+ },
+ {
+ "include": "#lambda-incomplete"
+ },
+ {
+ "include": "#illegal-names"
+ },
+ {
+ "match": "\\b([[:alpha:]_]\\w*)\\s*(=)(?!=)",
+ "captures": {
+ "1": {
+ "name": "variable.parameter.function-call.python"
+ },
+ "2": {
+ "name": "keyword.operator.assignment.python"
+ }
+ }
+ },
+ {
+ "name": "keyword.operator.assignment.python",
+ "match": "=(?!=)"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "match": "\\s*(\\))\\s*(\\()",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.arguments.end.python"
+ },
+ "2": {
+ "name": "punctuation.definition.arguments.begin.python"
+ }
+ }
+ }
+ ]
+ },
+ "builtin-callables": {
+ "patterns": [
+ {
+ "include": "#illegal-names"
+ },
+ {
+ "include": "#illegal-object-name"
+ },
+ {
+ "include": "#builtin-exceptions"
+ },
+ {
+ "include": "#builtin-functions"
+ },
+ {
+ "include": "#builtin-types"
+ }
+ ]
+ },
+ "builtin-possible-callables": {
+ "patterns": [
+ {
+ "include": "#builtin-callables"
+ },
+ {
+ "include": "#magic-names"
+ }
+ ]
+ },
+ "builtin-exceptions": {
+ "name": "support.type.exception.python",
+ "match": "(?x) (?<!\\.) \\b(\n (\n Arithmetic | Assertion | Attribute | Buffer | BlockingIO\n | BrokenPipe | ChildProcess\n | (Connection (Aborted | Refused | Reset)?)\n | EOF | Environment | FileExists | FileNotFound\n | FloatingPoint | IO | Import | Indentation | Index | Interrupted\n | IsADirectory | NotADirectory | Permission | ProcessLookup\n | Timeout\n | Key | Lookup | Memory | Name | NotImplemented | OS | Overflow\n | Reference | Runtime | Recursion | Syntax | System\n | Tab | Type | UnboundLocal | Unicode(Encode|Decode|Translate)?\n | Value | Windows | ZeroDivision | ModuleNotFound\n ) Error\n|\n ((Pending)?Deprecation | Runtime | Syntax | User | Future | Import\n | Unicode | Bytes | Resource\n )? Warning\n|\n SystemExit | Stop(Async)?Iteration\n | KeyboardInterrupt\n | GeneratorExit | (Base)?Exception\n)\\b\n"
+ },
+ "builtin-functions": {
+ "patterns": [
+ {
+ "name": "support.function.builtin.python",
+ "match": "(?x)\n (?<!\\.) \\b(\n __import__ | abs | all | any | ascii | bin | breakpoint | callable\n | chr | compile | copyright | credits | delattr | dir | divmod\n | enumerate | eval | exec | exit | filter | format | getattr\n | globals | hasattr | hash | help | hex | id | input\n | isinstance | issubclass | iter | len | license | locals | map\n | max | memoryview | min | next | oct | open | ord | pow | print\n | quit | range | reload | repr | reversed | round\n | setattr | sorted | sum | vars | zip\n )\\b\n"
+ },
+ {
+ "name": "variable.legacy.builtin.python",
+ "match": "(?x)\n (?<!\\.) \\b(\n file | reduce | intern | raw_input | unicode | cmp | basestring\n | execfile | long | xrange\n )\\b\n"
+ },
+ {
+ "name": "support.function.builtin.vyper",
+ "match": "(?x)\n (?<!\\.) \\b(\n _abi_encode | floor | ceil | convert | slice | len | concat | sha256 | method_id | keccak256 | ecrecover | ecadd | ecmul | extract32 | as_wei_value | raw_call | blockhash | bitwise_and | bitwise_or | bitwise_xor | bitwise_not | uint256_addmod | uint256_mulmod | pow_mod256 | sqrt | shift | create_forwarder_to | min | max | empty | abs )\\b\n"
+ },
+ {
+ "name": "support.function.builtin.lowlevel.vyper",
+ "match": "(?x)\n (?<!\\.) \\b(\n send | selfdestruct | raw_call | raw_log | create_forwarder_to )\\b\n"
+ },
+ {
+ "name": "support.type.event.vyper",
+ "match": "(?x)\n (?<!\\.) \\b(\n event )\\b\n"
+ },
+ {
+ "name": "support.type.reference.vyper",
+ "match": "(?x)\n (?<!\\.) \\b(\n map | struct | HashMap )\\b\n"
+ },
+ {
+ "name": "support.function.builtin.modifiers.safe.vyper",
+ "match": "(?x)\n (?<!\\.) \\b(\n private | nonreentrant | constant | event | internal | view | pure )\\b\n"
+ },
+ {
+ "name": "support.function.builtin.modifiers.unsafe.vyper",
+ "match": "(?x)\n (?<!\\.) \\b(\n public | payable | modifying | external )\\b\n"
+ }
+ ]
+ },
+ "builtin-types": {
+ "patterns": [
+ {
+ "name": "support.type.python",
+ "match": "(?x)\n (?<!\\.) \\b(\n bool | bytearray | bytes | classmethod | complex | dict\n | float | frozenset | int | list | object | property\n | set | slice | staticmethod | str | tuple | type\n\n (?# Although 'super' is not a type, it's related to types,\n and is special enough to be highlighted differently from\n other built-ins)\n | super\n )\\b\n"
+ },
+ {
+ "name": "support.type.basetype.vyper",
+ "match": "(?x)\n (?<!\\.) \\b(\n bytes32 | bytearray | wei_value | timestamp | int256 | uint8 | uint256 | decimal | timedelta | string | int128 | address | bool | bytes )\\b\n"
+ },
+ {
+ "name": "support.type.keywords.vyper",
+ "match": "(?x)\n (?<!\\.) \\b(\n finney | gwei | range | def | ____init____ | timedelta | babbage | zero_address | raise | external | empty_bytes32 | assert | continue | wei | ada | min_int256 | min_int128 | chainid | max_decimal | default | indexed | selfdestruct | lovelace | immutable | throw | kwei | max_int128 | while | constant | ___default___ | balance | twei | codesize | false | max_int256 | _default_ | init | mwei | if | ____default____ | true | payable | internal | until | this | nonpayable | pass | public | nonreentrant | blockhash | max_uint256 | shannon | none | units | _init_ | ___init___ | is_contract | for | zero_wei | min_decimal | szabo | timestamp | ether | pwei | send )\\b\n"
+ },
+ {
+ "name": "support.type.unit.vyper",
+ "match": "(?x)\n (?<!\\.) \\b(\n shannon | finney | gwei | twei | kwei | wei | lovelace | ether | szabo | pwei | babbage | mwei | ada \n\n (?# Although 'super' is not a type, it's related to types,\n and is special enough to be highlighted differently from\n other built-ins)\n | super\n )\\b\n"
+ },
+ {
+ "name": "support.type.constant.vyper",
+ "match": "(?x)\n (?<!\\.) \\b(\n ZERO_ADDRESS | EMPTY_BYTES32 | MAX_INT128 | MIN_INT128 | MAX_DECIMAL | MIN_DECIMAL | MAX_UINT256 \n\n (?# Although 'super' is not a type, it's related to types,\n and is special enough to be highlighted differently from\n other built-ins)\n | super\n )\\b\n"
+ },
+ {
+ "name": "entity.other.inherited-class.interface.vyper",
+ "match": "(?x)\n (?<!\\.) \\b(\n implements )\\b\n"
+ }
+ ]
+ },
+ "magic-function-names": {
+ "comment": "these methods have magic interpretation by python and are generally called\nindirectly through syntactic constructs\n",
+ "match": "(?x)\n \\b(\n __(?:\n abs | add | aenter | aexit | aiter | and | anext | await\n | bool | call | ceil | cmp | coerce | complex | contains\n | copy | deepcopy | del | delattr | delete | delitem\n | delslice | dir | div | divmod | enter | eq | exit | float\n | floor | floordiv | format | ge | get | getattr\n | getattribute | getinitargs | getitem | getnewargs\n | getslice | getstate | gt | hash | hex | iadd | iand | idiv\n | ifloordiv | ilshift | imod | imul | index | init\n | instancecheck | int | invert | ior | ipow | irshift | isub\n | iter | itruediv | ixor | le | len | long | lshift | lt\n | missing | mod | mul | ne | neg | new | next | nonzero | oct | or\n | pos | pow | radd | rand | rdiv | rdivmod | reduce\n | reduce_ex | repr | reversed | rfloordiv | rlshift | rmod\n | rmul | ror | round | rpow | rrshift | rshift | rsub\n | rtruediv | rxor | set | setattr | setitem | setslice\n | setstate | sizeof | str | sub | subclasscheck | truediv\n | trunc | unicode | xor | matmul | rmatmul | imatmul\n | init_subclass | set_name | fspath | bytes | prepare\n )__\n )\\b\n",
+ "captures": {
+ "1": {
+ "name": "support.function.magic.python"
+ }
+ }
+ },
+ "magic-variable-names": {
+ "comment": "magic variables which a class/module may have.",
+ "match": "(?x)\n \\b(\n __(?:\n all | bases | builtins | class | class_getitem | code | debug\n | defaults | dict | doc | file | func | kwdefaults | members\n | metaclass | methods | module | mro | mro_entries | name\n | qualname | post_init | self | signature | slots | subclasses\n | version | weakref | wrapped | annotations | classcell\n | spec | path | package | future | traceback\n )__\n )\\b\n",
+ "captures": {
+ "1": {
+ "name": "support.variable.magic.python"
+ }
+ }
+ },
+ "magic-names": {
+ "patterns": [
+ {
+ "include": "#magic-function-names"
+ },
+ {
+ "include": "#magic-variable-names"
+ }
+ ]
+ },
+ "illegal-names": {
+ "match": "(?x)\n \\b(?:\n (\n and | assert | async | await | break | class | continue | def\n | del | elif | else | except | finally | for | from | global\n | if | in | is | (?<=\\.)lambda | lambda(?=\\s*[\\.=])\n | nonlocal | not | or | pass | raise | return | try | while | with\n | yield\n ) | (\n as | import\n )\n )\\b\n",
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.python"
+ },
+ "2": {
+ "name": "keyword.control.import.python"
+ }
+ }
+ },
+ "special-variables": {
+ "match": "(?x)\n \\b (?<!\\.) (?:\n (self) | (cls)\n )\\b\n",
+ "captures": {
+ "1": {
+ "name": "variable.language.special.self.python"
+ },
+ "2": {
+ "name": "variable.language.special.cls.python"
+ }
+ }
+ },
+ "ellipsis": {
+ "name": "constant.other.ellipsis.python",
+ "match": "\\.\\.\\."
+ },
+ "backticks": {
+ "name": "invalid.deprecated.backtick.python",
+ "begin": "\\`",
+ "end": "(?:\\`|(?<!\\\\)(\\n))",
+ "patterns": [
+ {
+ "include": "#expression"
+ }
+ ]
+ },
+ "illegal-operator": {
+ "patterns": [
+ {
+ "name": "invalid.illegal.operator.python",
+ "match": "&&|\\|\\||--|\\+\\+"
+ },
+ {
+ "name": "invalid.illegal.operator.python",
+ "match": "[?$]"
+ },
+ {
+ "name": "invalid.illegal.operator.python",
+ "comment": "We don't want `!` to flash when we're typing `!=`",
+ "match": "!\\b"
+ }
+ ]
+ },
+ "illegal-object-name": {
+ "comment": "It's illegal to name class or function \"True\"",
+ "name": "keyword.illegal.name.python",
+ "match": "\\b(True|False|None)\\b"
+ },
+ "illegal-anno": {
+ "name": "invalid.illegal.annotation.python",
+ "match": "->"
+ },
+ "regexp-base-expression": {
+ "patterns": [
+ {
+ "include": "#regexp-quantifier"
+ },
+ {
+ "include": "#regexp-base-common"
+ }
+ ]
+ },
+ "fregexp-base-expression": {
+ "patterns": [
+ {
+ "include": "#fregexp-quantifier"
+ },
+ {
+ "include": "#fstring-formatting-braces"
+ },
+ {
+ "match": "\\{.*?\\}"
+ },
+ {
+ "include": "#regexp-base-common"
+ }
+ ]
+ },
+ "fstring-formatting-braces": {
+ "patterns": [
+ {
+ "comment": "empty braces are illegal",
+ "match": "({)(\\s*?)(})",
+ "captures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ },
+ "2": {
+ "name": "invalid.illegal.brace.python"
+ },
+ "3": {
+ "name": "constant.character.format.placeholder.other.python"
+ }
+ }
+ },
+ {
+ "name": "constant.character.escape.python",
+ "match": "({{|}})"
+ }
+ ]
+ },
+ "regexp-base-common": {
+ "patterns": [
+ {
+ "name": "support.other.match.any.regexp",
+ "match": "\\."
+ },
+ {
+ "name": "support.other.match.begin.regexp",
+ "match": "\\^"
+ },
+ {
+ "name": "support.other.match.end.regexp",
+ "match": "\\$"
+ },
+ {
+ "name": "keyword.operator.quantifier.regexp",
+ "match": "[+*?]\\??"
+ },
+ {
+ "name": "keyword.operator.disjunction.regexp",
+ "match": "\\|"
+ },
+ {
+ "include": "#regexp-escape-sequence"
+ }
+ ]
+ },
+ "regexp-quantifier": {
+ "name": "keyword.operator.quantifier.regexp",
+ "match": "(?x)\n \\{(\n \\d+ | \\d+,(\\d+)? | ,\\d+\n )\\}\n"
+ },
+ "fregexp-quantifier": {
+ "name": "keyword.operator.quantifier.regexp",
+ "match": "(?x)\n \\{\\{(\n \\d+ | \\d+,(\\d+)? | ,\\d+\n )\\}\\}\n"
+ },
+ "regexp-backreference-number": {
+ "name": "meta.backreference.regexp",
+ "match": "(\\\\[1-9]\\d?)",
+ "captures": {
+ "1": {
+ "name": "entity.name.tag.backreference.regexp"
+ }
+ }
+ },
+ "regexp-backreference": {
+ "name": "meta.backreference.named.regexp",
+ "match": "(?x)\n (\\() (\\?P= \\w+(?:\\s+[[:alnum:]]+)?) (\\))\n",
+ "captures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.begin.regexp"
+ },
+ "2": {
+ "name": "entity.name.tag.named.backreference.regexp"
+ },
+ "3": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.backreference.named.end.regexp"
+ }
+ }
+ },
+ "regexp-flags": {
+ "name": "storage.modifier.flag.regexp",
+ "match": "\\(\\?[aiLmsux]+\\)"
+ },
+ "regexp-escape-special": {
+ "name": "support.other.escape.special.regexp",
+ "match": "\\\\([AbBdDsSwWZ])"
+ },
+ "regexp-escape-character": {
+ "name": "constant.character.escape.regexp",
+ "match": "(?x)\n \\\\ (\n x[0-9A-Fa-f]{2}\n | 0[0-7]{1,2}\n | [0-7]{3}\n )\n"
+ },
+ "regexp-escape-unicode": {
+ "name": "constant.character.unicode.regexp",
+ "match": "(?x)\n \\\\ (\n u[0-9A-Fa-f]{4}\n | U[0-9A-Fa-f]{8}\n )\n"
+ },
+ "regexp-escape-catchall": {
+ "name": "constant.character.escape.regexp",
+ "match": "\\\\(.|\\n)"
+ },
+ "regexp-escape-sequence": {
+ "patterns": [
+ {
+ "include": "#regexp-escape-special"
+ },
+ {
+ "include": "#regexp-escape-character"
+ },
+ {
+ "include": "#regexp-escape-unicode"
+ },
+ {
+ "include": "#regexp-backreference-number"
+ },
+ {
+ "include": "#regexp-escape-catchall"
+ }
+ ]
+ },
+ "regexp-charecter-set-escapes": {
+ "patterns": [
+ {
+ "name": "constant.character.escape.regexp",
+ "match": "\\\\[abfnrtv\\\\]"
+ },
+ {
+ "include": "#regexp-escape-special"
+ },
+ {
+ "name": "constant.character.escape.regexp",
+ "match": "\\\\([0-7]{1,3})"
+ },
+ {
+ "include": "#regexp-escape-character"
+ },
+ {
+ "include": "#regexp-escape-unicode"
+ },
+ {
+ "include": "#regexp-escape-catchall"
+ }
+ ]
+ },
+ "codetags": {
+ "match": "(?:\\b(NOTE|XXX|HACK|FIXME|BUG|TODO)\\b)",
+ "captures": {
+ "1": {
+ "name": "keyword.codetag.notation.python"
+ }
+ }
+ },
+ "comments-base": {
+ "name": "comment.line.number-sign.python",
+ "begin": "(\\#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.python"
+ }
+ },
+ "end": "($)",
+ "patterns": [
+ {
+ "include": "#codetags"
+ }
+ ]
+ },
+ "comments-string-single-three": {
+ "name": "comment.line.number-sign.python",
+ "begin": "(\\#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.python"
+ }
+ },
+ "end": "($|(?='''))",
+ "patterns": [
+ {
+ "include": "#codetags"
+ }
+ ]
+ },
+ "comments-string-double-three": {
+ "name": "comment.line.number-sign.python",
+ "begin": "(\\#)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.comment.python"
+ }
+ },
+ "end": "($|(?=\"\"\"))",
+ "patterns": [
+ {
+ "include": "#codetags"
+ }
+ ]
+ },
+ "single-one-regexp-expression": {
+ "patterns": [
+ {
+ "include": "#regexp-base-expression"
+ },
+ {
+ "include": "#single-one-regexp-character-set"
+ },
+ {
+ "include": "#single-one-regexp-comments"
+ },
+ {
+ "include": "#regexp-flags"
+ },
+ {
+ "include": "#single-one-regexp-named-group"
+ },
+ {
+ "include": "#regexp-backreference"
+ },
+ {
+ "include": "#single-one-regexp-lookahead"
+ },
+ {
+ "include": "#single-one-regexp-lookahead-negative"
+ },
+ {
+ "include": "#single-one-regexp-lookbehind"
+ },
+ {
+ "include": "#single-one-regexp-lookbehind-negative"
+ },
+ {
+ "include": "#single-one-regexp-conditional"
+ },
+ {
+ "include": "#single-one-regexp-parentheses-non-capturing"
+ },
+ {
+ "include": "#single-one-regexp-parentheses"
+ }
+ ]
+ },
+ "single-one-regexp-character-set": {
+ "patterns": [
+ {
+ "match": "(?x)\n \\[ \\^? \\] (?! .*?\\])\n"
+ },
+ {
+ "name": "meta.character.set.regexp",
+ "begin": "(\\[)(\\^)?(\\])?",
+ "end": "(\\]|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.character.set.begin.regexp constant.other.set.regexp"
+ },
+ "2": {
+ "name": "keyword.operator.negation.regexp"
+ },
+ "3": {
+ "name": "constant.character.set.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.character.set.end.regexp constant.other.set.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp-charecter-set-escapes"
+ },
+ {
+ "name": "constant.character.set.regexp",
+ "match": "[^\\n]"
+ }
+ ]
+ }
+ ]
+ },
+ "single-one-regexp-named-group": {
+ "name": "meta.named.regexp",
+ "begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
+ },
+ "2": {
+ "name": "entity.name.tag.named.group.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "single-one-regexp-comments": {
+ "name": "comment.regexp",
+ "begin": "\\(\\?#",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.comment.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.comment.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#codetags"
+ }
+ ]
+ },
+ "single-one-regexp-lookahead": {
+ "begin": "(\\()\\?=",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "single-one-regexp-lookahead-negative": {
+ "begin": "(\\()\\?!",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "single-one-regexp-lookbehind": {
+ "begin": "(\\()\\?<=",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "single-one-regexp-lookbehind-negative": {
+ "begin": "(\\()\\?<!",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "single-one-regexp-conditional": {
+ "begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.conditional.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "single-one-regexp-parentheses-non-capturing": {
+ "begin": "\\(\\?:",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "single-one-regexp-parentheses": {
+ "begin": "\\(",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "single-three-regexp-expression": {
+ "patterns": [
+ {
+ "include": "#regexp-base-expression"
+ },
+ {
+ "include": "#single-three-regexp-character-set"
+ },
+ {
+ "include": "#single-three-regexp-comments"
+ },
+ {
+ "include": "#regexp-flags"
+ },
+ {
+ "include": "#single-three-regexp-named-group"
+ },
+ {
+ "include": "#regexp-backreference"
+ },
+ {
+ "include": "#single-three-regexp-lookahead"
+ },
+ {
+ "include": "#single-three-regexp-lookahead-negative"
+ },
+ {
+ "include": "#single-three-regexp-lookbehind"
+ },
+ {
+ "include": "#single-three-regexp-lookbehind-negative"
+ },
+ {
+ "include": "#single-three-regexp-conditional"
+ },
+ {
+ "include": "#single-three-regexp-parentheses-non-capturing"
+ },
+ {
+ "include": "#single-three-regexp-parentheses"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-regexp-character-set": {
+ "patterns": [
+ {
+ "match": "(?x)\n \\[ \\^? \\] (?! .*?\\])\n"
+ },
+ {
+ "name": "meta.character.set.regexp",
+ "begin": "(\\[)(\\^)?(\\])?",
+ "end": "(\\]|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.character.set.begin.regexp constant.other.set.regexp"
+ },
+ "2": {
+ "name": "keyword.operator.negation.regexp"
+ },
+ "3": {
+ "name": "constant.character.set.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.character.set.end.regexp constant.other.set.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp-charecter-set-escapes"
+ },
+ {
+ "name": "constant.character.set.regexp",
+ "match": "[^\\n]"
+ }
+ ]
+ }
+ ]
+ },
+ "single-three-regexp-named-group": {
+ "name": "meta.named.regexp",
+ "begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
+ },
+ "2": {
+ "name": "entity.name.tag.named.group.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-regexp-comments": {
+ "name": "comment.regexp",
+ "begin": "\\(\\?#",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.comment.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.comment.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#codetags"
+ }
+ ]
+ },
+ "single-three-regexp-lookahead": {
+ "begin": "(\\()\\?=",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-regexp-lookahead-negative": {
+ "begin": "(\\()\\?!",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-regexp-lookbehind": {
+ "begin": "(\\()\\?<=",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-regexp-lookbehind-negative": {
+ "begin": "(\\()\\?<!",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-regexp-conditional": {
+ "begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.conditional.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-regexp-parentheses-non-capturing": {
+ "begin": "\\(\\?:",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-regexp-parentheses": {
+ "begin": "\\(",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "double-one-regexp-expression": {
+ "patterns": [
+ {
+ "include": "#regexp-base-expression"
+ },
+ {
+ "include": "#double-one-regexp-character-set"
+ },
+ {
+ "include": "#double-one-regexp-comments"
+ },
+ {
+ "include": "#regexp-flags"
+ },
+ {
+ "include": "#double-one-regexp-named-group"
+ },
+ {
+ "include": "#regexp-backreference"
+ },
+ {
+ "include": "#double-one-regexp-lookahead"
+ },
+ {
+ "include": "#double-one-regexp-lookahead-negative"
+ },
+ {
+ "include": "#double-one-regexp-lookbehind"
+ },
+ {
+ "include": "#double-one-regexp-lookbehind-negative"
+ },
+ {
+ "include": "#double-one-regexp-conditional"
+ },
+ {
+ "include": "#double-one-regexp-parentheses-non-capturing"
+ },
+ {
+ "include": "#double-one-regexp-parentheses"
+ }
+ ]
+ },
+ "double-one-regexp-character-set": {
+ "patterns": [
+ {
+ "match": "(?x)\n \\[ \\^? \\] (?! .*?\\])\n"
+ },
+ {
+ "name": "meta.character.set.regexp",
+ "begin": "(\\[)(\\^)?(\\])?",
+ "end": "(\\]|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.character.set.begin.regexp constant.other.set.regexp"
+ },
+ "2": {
+ "name": "keyword.operator.negation.regexp"
+ },
+ "3": {
+ "name": "constant.character.set.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.character.set.end.regexp constant.other.set.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp-charecter-set-escapes"
+ },
+ {
+ "name": "constant.character.set.regexp",
+ "match": "[^\\n]"
+ }
+ ]
+ }
+ ]
+ },
+ "double-one-regexp-named-group": {
+ "name": "meta.named.regexp",
+ "begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
+ },
+ "2": {
+ "name": "entity.name.tag.named.group.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "double-one-regexp-comments": {
+ "name": "comment.regexp",
+ "begin": "\\(\\?#",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.comment.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.comment.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#codetags"
+ }
+ ]
+ },
+ "double-one-regexp-lookahead": {
+ "begin": "(\\()\\?=",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "double-one-regexp-lookahead-negative": {
+ "begin": "(\\()\\?!",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "double-one-regexp-lookbehind": {
+ "begin": "(\\()\\?<=",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "double-one-regexp-lookbehind-negative": {
+ "begin": "(\\()\\?<!",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "double-one-regexp-conditional": {
+ "begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.conditional.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "double-one-regexp-parentheses-non-capturing": {
+ "begin": "\\(\\?:",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "double-one-regexp-parentheses": {
+ "begin": "\\(",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "double-three-regexp-expression": {
+ "patterns": [
+ {
+ "include": "#regexp-base-expression"
+ },
+ {
+ "include": "#double-three-regexp-character-set"
+ },
+ {
+ "include": "#double-three-regexp-comments"
+ },
+ {
+ "include": "#regexp-flags"
+ },
+ {
+ "include": "#double-three-regexp-named-group"
+ },
+ {
+ "include": "#regexp-backreference"
+ },
+ {
+ "include": "#double-three-regexp-lookahead"
+ },
+ {
+ "include": "#double-three-regexp-lookahead-negative"
+ },
+ {
+ "include": "#double-three-regexp-lookbehind"
+ },
+ {
+ "include": "#double-three-regexp-lookbehind-negative"
+ },
+ {
+ "include": "#double-three-regexp-conditional"
+ },
+ {
+ "include": "#double-three-regexp-parentheses-non-capturing"
+ },
+ {
+ "include": "#double-three-regexp-parentheses"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-regexp-character-set": {
+ "patterns": [
+ {
+ "match": "(?x)\n \\[ \\^? \\] (?! .*?\\])\n"
+ },
+ {
+ "name": "meta.character.set.regexp",
+ "begin": "(\\[)(\\^)?(\\])?",
+ "end": "(\\]|(?=\"\"\"))",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.character.set.begin.regexp constant.other.set.regexp"
+ },
+ "2": {
+ "name": "keyword.operator.negation.regexp"
+ },
+ "3": {
+ "name": "constant.character.set.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.character.set.end.regexp constant.other.set.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#regexp-charecter-set-escapes"
+ },
+ {
+ "name": "constant.character.set.regexp",
+ "match": "[^\\n]"
+ }
+ ]
+ }
+ ]
+ },
+ "double-three-regexp-named-group": {
+ "name": "meta.named.regexp",
+ "begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
+ },
+ "2": {
+ "name": "entity.name.tag.named.group.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-regexp-comments": {
+ "name": "comment.regexp",
+ "begin": "\\(\\?#",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.comment.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.comment.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#codetags"
+ }
+ ]
+ },
+ "double-three-regexp-lookahead": {
+ "begin": "(\\()\\?=",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-regexp-lookahead-negative": {
+ "begin": "(\\()\\?!",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-regexp-lookbehind": {
+ "begin": "(\\()\\?<=",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-regexp-lookbehind-negative": {
+ "begin": "(\\()\\?<!",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-regexp-conditional": {
+ "begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.conditional.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-regexp-parentheses-non-capturing": {
+ "begin": "\\(\\?:",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-regexp-parentheses": {
+ "begin": "\\(",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "regexp-single-one-line": {
+ "name": "string.regexp.quoted.single.python",
+ "begin": "\\b(([uU]r)|([bB]r)|(r[bB]?))(\\')",
+ "end": "(\\')|(?<!\\\\)(\\n)",
+ "beginCaptures": {
+ "2": {
+ "name": "invalid.deprecated.prefix.python"
+ },
+ "3": {
+ "name": "storage.type.string.python"
+ },
+ "4": {
+ "name": "storage.type.string.python"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-regexp-expression"
+ }
+ ]
+ },
+ "regexp-single-three-line": {
+ "name": "string.regexp.quoted.multi.python",
+ "begin": "\\b(([uU]r)|([bB]r)|(r[bB]?))(\\'\\'\\')",
+ "end": "(\\'\\'\\')",
+ "beginCaptures": {
+ "2": {
+ "name": "invalid.deprecated.prefix.python"
+ },
+ "3": {
+ "name": "storage.type.string.python"
+ },
+ "4": {
+ "name": "storage.type.string.python"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-regexp-expression"
+ }
+ ]
+ },
+ "regexp-double-one-line": {
+ "name": "string.regexp.quoted.single.python",
+ "begin": "\\b(([uU]r)|([bB]r)|(r[bB]?))(\")",
+ "end": "(\")|(?<!\\\\)(\\n)",
+ "beginCaptures": {
+ "2": {
+ "name": "invalid.deprecated.prefix.python"
+ },
+ "3": {
+ "name": "storage.type.string.python"
+ },
+ "4": {
+ "name": "storage.type.string.python"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-regexp-expression"
+ }
+ ]
+ },
+ "regexp-double-three-line": {
+ "name": "string.regexp.quoted.multi.python",
+ "begin": "\\b(([uU]r)|([bB]r)|(r[bB]?))(\"\"\")",
+ "end": "(\"\"\")",
+ "beginCaptures": {
+ "2": {
+ "name": "invalid.deprecated.prefix.python"
+ },
+ "3": {
+ "name": "storage.type.string.python"
+ },
+ "4": {
+ "name": "storage.type.string.python"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-regexp-expression"
+ }
+ ]
+ },
+ "single-one-fregexp-expression": {
+ "patterns": [
+ {
+ "include": "#fregexp-base-expression"
+ },
+ {
+ "include": "#single-one-regexp-character-set"
+ },
+ {
+ "include": "#single-one-regexp-comments"
+ },
+ {
+ "include": "#regexp-flags"
+ },
+ {
+ "include": "#single-one-regexp-named-group"
+ },
+ {
+ "include": "#regexp-backreference"
+ },
+ {
+ "include": "#single-one-fregexp-lookahead"
+ },
+ {
+ "include": "#single-one-fregexp-lookahead-negative"
+ },
+ {
+ "include": "#single-one-fregexp-lookbehind"
+ },
+ {
+ "include": "#single-one-fregexp-lookbehind-negative"
+ },
+ {
+ "include": "#single-one-fregexp-conditional"
+ },
+ {
+ "include": "#single-one-fregexp-parentheses-non-capturing"
+ },
+ {
+ "include": "#single-one-fregexp-parentheses"
+ }
+ ]
+ },
+ "single-one-fregexp-named-group": {
+ "name": "meta.named.regexp",
+ "begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
+ },
+ "2": {
+ "name": "entity.name.tag.named.group.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-fregexp-expression"
+ }
+ ]
+ },
+ "single-one-fregexp-lookahead": {
+ "begin": "(\\()\\?=",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-fregexp-expression"
+ }
+ ]
+ },
+ "single-one-fregexp-lookahead-negative": {
+ "begin": "(\\()\\?!",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-fregexp-expression"
+ }
+ ]
+ },
+ "single-one-fregexp-lookbehind": {
+ "begin": "(\\()\\?<=",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-fregexp-expression"
+ }
+ ]
+ },
+ "single-one-fregexp-lookbehind-negative": {
+ "begin": "(\\()\\?<!",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-fregexp-expression"
+ }
+ ]
+ },
+ "single-one-fregexp-conditional": {
+ "begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.conditional.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-fregexp-expression"
+ }
+ ]
+ },
+ "single-one-fregexp-parentheses-non-capturing": {
+ "begin": "\\(\\?:",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-fregexp-expression"
+ }
+ ]
+ },
+ "single-one-fregexp-parentheses": {
+ "begin": "\\(",
+ "end": "(\\)|(?=\\'))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-fregexp-expression"
+ }
+ ]
+ },
+ "single-three-fregexp-expression": {
+ "patterns": [
+ {
+ "include": "#fregexp-base-expression"
+ },
+ {
+ "include": "#single-three-regexp-character-set"
+ },
+ {
+ "include": "#single-three-regexp-comments"
+ },
+ {
+ "include": "#regexp-flags"
+ },
+ {
+ "include": "#single-three-regexp-named-group"
+ },
+ {
+ "include": "#regexp-backreference"
+ },
+ {
+ "include": "#single-three-fregexp-lookahead"
+ },
+ {
+ "include": "#single-three-fregexp-lookahead-negative"
+ },
+ {
+ "include": "#single-three-fregexp-lookbehind"
+ },
+ {
+ "include": "#single-three-fregexp-lookbehind-negative"
+ },
+ {
+ "include": "#single-three-fregexp-conditional"
+ },
+ {
+ "include": "#single-three-fregexp-parentheses-non-capturing"
+ },
+ {
+ "include": "#single-three-fregexp-parentheses"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-fregexp-named-group": {
+ "name": "meta.named.regexp",
+ "begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
+ },
+ "2": {
+ "name": "entity.name.tag.named.group.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-fregexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-fregexp-lookahead": {
+ "begin": "(\\()\\?=",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-fregexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-fregexp-lookahead-negative": {
+ "begin": "(\\()\\?!",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-fregexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-fregexp-lookbehind": {
+ "begin": "(\\()\\?<=",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-fregexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-fregexp-lookbehind-negative": {
+ "begin": "(\\()\\?<!",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-fregexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-fregexp-conditional": {
+ "begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.conditional.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-fregexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-fregexp-parentheses-non-capturing": {
+ "begin": "\\(\\?:",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-fregexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "single-three-fregexp-parentheses": {
+ "begin": "\\(",
+ "end": "(\\)|(?=\\'\\'\\'))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-fregexp-expression"
+ },
+ {
+ "include": "#comments-string-single-three"
+ }
+ ]
+ },
+ "double-one-fregexp-expression": {
+ "patterns": [
+ {
+ "include": "#fregexp-base-expression"
+ },
+ {
+ "include": "#double-one-regexp-character-set"
+ },
+ {
+ "include": "#double-one-regexp-comments"
+ },
+ {
+ "include": "#regexp-flags"
+ },
+ {
+ "include": "#double-one-regexp-named-group"
+ },
+ {
+ "include": "#regexp-backreference"
+ },
+ {
+ "include": "#double-one-fregexp-lookahead"
+ },
+ {
+ "include": "#double-one-fregexp-lookahead-negative"
+ },
+ {
+ "include": "#double-one-fregexp-lookbehind"
+ },
+ {
+ "include": "#double-one-fregexp-lookbehind-negative"
+ },
+ {
+ "include": "#double-one-fregexp-conditional"
+ },
+ {
+ "include": "#double-one-fregexp-parentheses-non-capturing"
+ },
+ {
+ "include": "#double-one-fregexp-parentheses"
+ }
+ ]
+ },
+ "double-one-fregexp-named-group": {
+ "name": "meta.named.regexp",
+ "begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
+ },
+ "2": {
+ "name": "entity.name.tag.named.group.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-fregexp-expression"
+ }
+ ]
+ },
+ "double-one-fregexp-lookahead": {
+ "begin": "(\\()\\?=",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-fregexp-expression"
+ }
+ ]
+ },
+ "double-one-fregexp-lookahead-negative": {
+ "begin": "(\\()\\?!",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-fregexp-expression"
+ }
+ ]
+ },
+ "double-one-fregexp-lookbehind": {
+ "begin": "(\\()\\?<=",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-fregexp-expression"
+ }
+ ]
+ },
+ "double-one-fregexp-lookbehind-negative": {
+ "begin": "(\\()\\?<!",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-fregexp-expression"
+ }
+ ]
+ },
+ "double-one-fregexp-conditional": {
+ "begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.conditional.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-fregexp-expression"
+ }
+ ]
+ },
+ "double-one-fregexp-parentheses-non-capturing": {
+ "begin": "\\(\\?:",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-fregexp-expression"
+ }
+ ]
+ },
+ "double-one-fregexp-parentheses": {
+ "begin": "\\(",
+ "end": "(\\)|(?=\"))|((?=(?<!\\\\)\\n))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-fregexp-expression"
+ }
+ ]
+ },
+ "double-three-fregexp-expression": {
+ "patterns": [
+ {
+ "include": "#fregexp-base-expression"
+ },
+ {
+ "include": "#double-three-regexp-character-set"
+ },
+ {
+ "include": "#double-three-regexp-comments"
+ },
+ {
+ "include": "#regexp-flags"
+ },
+ {
+ "include": "#double-three-regexp-named-group"
+ },
+ {
+ "include": "#regexp-backreference"
+ },
+ {
+ "include": "#double-three-fregexp-lookahead"
+ },
+ {
+ "include": "#double-three-fregexp-lookahead-negative"
+ },
+ {
+ "include": "#double-three-fregexp-lookbehind"
+ },
+ {
+ "include": "#double-three-fregexp-lookbehind-negative"
+ },
+ {
+ "include": "#double-three-fregexp-conditional"
+ },
+ {
+ "include": "#double-three-fregexp-parentheses-non-capturing"
+ },
+ {
+ "include": "#double-three-fregexp-parentheses"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-fregexp-named-group": {
+ "name": "meta.named.regexp",
+ "begin": "(?x)\n (\\() (\\?P <\\w+(?:\\s+[[:alnum:]]+)?>)\n",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.begin.regexp"
+ },
+ "2": {
+ "name": "entity.name.tag.named.group.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.named.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-fregexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-fregexp-lookahead": {
+ "begin": "(\\()\\?=",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-fregexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-fregexp-lookahead-negative": {
+ "begin": "(\\()\\?!",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookahead.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookahead.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookahead.negative.regexp punctuation.parenthesis.lookahead.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-fregexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-fregexp-lookbehind": {
+ "begin": "(\\()\\?<=",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-fregexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-fregexp-lookbehind-negative": {
+ "begin": "(\\()\\?<!",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.lookbehind.negative.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.lookbehind.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.lookbehind.negative.regexp punctuation.parenthesis.lookbehind.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-fregexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-fregexp-conditional": {
+ "begin": "(\\()\\?\\((\\w+(?:\\s+[[:alnum:]]+)?|\\d+)\\)",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "keyword.operator.conditional.regexp"
+ },
+ "1": {
+ "name": "punctuation.parenthesis.conditional.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "keyword.operator.conditional.negative.regexp punctuation.parenthesis.conditional.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-fregexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-fregexp-parentheses-non-capturing": {
+ "begin": "\\(\\?:",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.non-capturing.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-fregexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "double-three-fregexp-parentheses": {
+ "begin": "\\(",
+ "end": "(\\)|(?=\"\"\"))",
+ "beginCaptures": {
+ "0": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.begin.regexp"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "support.other.parenthesis.regexp punctuation.parenthesis.end.regexp"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-fregexp-expression"
+ },
+ {
+ "include": "#comments-string-double-three"
+ }
+ ]
+ },
+ "fregexp-single-one-line": {
+ "name": "string.interpolated.python string.regexp.quoted.single.python",
+ "begin": "\\b(([uU]r)|([fF]r)|(r[fF]?))(\\')",
+ "end": "(\\')|(?<!\\\\)(\\n)",
+ "beginCaptures": {
+ "2": {
+ "name": "invalid.deprecated.prefix.python"
+ },
+ "3": {
+ "name": "storage.type.string.python"
+ },
+ "4": {
+ "name": "storage.type.string.python"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-one-fregexp-expression"
+ }
+ ]
+ },
+ "fregexp-single-three-line": {
+ "name": "string.interpolated.python string.regexp.quoted.multi.python",
+ "begin": "\\b(([uU]r)|([fF]r)|(r[fF]?))(\\'\\'\\')",
+ "end": "(\\'\\'\\')",
+ "beginCaptures": {
+ "2": {
+ "name": "invalid.deprecated.prefix.python"
+ },
+ "3": {
+ "name": "storage.type.string.python"
+ },
+ "4": {
+ "name": "storage.type.string.python"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#single-three-fregexp-expression"
+ }
+ ]
+ },
+ "fregexp-double-one-line": {
+ "name": "string.interpolated.python string.regexp.quoted.single.python",
+ "begin": "\\b(([uU]r)|([fF]r)|(r[fF]?))(\")",
+ "end": "(\")|(?<!\\\\)(\\n)",
+ "beginCaptures": {
+ "2": {
+ "name": "invalid.deprecated.prefix.python"
+ },
+ "3": {
+ "name": "storage.type.string.python"
+ },
+ "4": {
+ "name": "storage.type.string.python"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-one-fregexp-expression"
+ }
+ ]
+ },
+ "fregexp-double-three-line": {
+ "name": "string.interpolated.python string.regexp.quoted.multi.python",
+ "begin": "\\b(([uU]r)|([fF]r)|(r[fF]?))(\"\"\")",
+ "end": "(\"\"\")",
+ "beginCaptures": {
+ "2": {
+ "name": "invalid.deprecated.prefix.python"
+ },
+ "3": {
+ "name": "storage.type.string.python"
+ },
+ "4": {
+ "name": "storage.type.string.python"
+ },
+ "5": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#double-three-fregexp-expression"
+ }
+ ]
+ },
+ "string-raw-quoted-single-line": {
+ "name": "string.quoted.raw.single.python",
+ "begin": "\\b(([uU]R)|(R))((['\"]))",
+ "end": "(\\4)|((?<!\\\\)\\n)",
+ "beginCaptures": {
+ "2": {
+ "name": "invalid.deprecated.prefix.python"
+ },
+ "3": {
+ "name": "storage.type.string.python"
+ },
+ "4": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-single-bad-brace1-formatting-raw"
+ },
+ {
+ "include": "#string-single-bad-brace2-formatting-raw"
+ },
+ {
+ "include": "#string-raw-guts"
+ }
+ ]
+ },
+ "string-bin-quoted-single-line": {
+ "name": "string.quoted.binary.single.python",
+ "begin": "(\\b[bB])((['\"]))",
+ "end": "(\\2)|((?<!\\\\)\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.string.python"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-entity"
+ }
+ ]
+ },
+ "string-raw-bin-quoted-single-line": {
+ "name": "string.quoted.raw.binary.single.python",
+ "begin": "(\\b(?:R[bB]|[bB]R))((['\"]))",
+ "end": "(\\2)|((?<!\\\\)\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.string.python"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-raw-bin-guts"
+ }
+ ]
+ },
+ "string-quoted-single-line": {
+ "name": "string.quoted.single.python",
+ "begin": "(?:\\b([rR])(?=[uU]))?([uU])?((['\"]))",
+ "end": "(\\3)|((?<!\\\\)\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "invalid.illegal.prefix.python"
+ },
+ "2": {
+ "name": "storage.type.string.python"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-single-bad-brace1-formatting-unicode"
+ },
+ {
+ "include": "#string-single-bad-brace2-formatting-unicode"
+ },
+ {
+ "include": "#string-unicode-guts"
+ }
+ ]
+ },
+ "string-single-bad-brace1-formatting-unicode": {
+ "comment": "template using {% ... %}",
+ "begin": "(?x)\n (?= \\{%\n ( .*? (?!(['\"])|((?<!\\\\)\\n)) )\n %\\}\n )\n",
+ "end": "(?=(['\"])|((?<!\\\\)\\n))",
+ "patterns": [
+ {
+ "include": "#escape-sequence-unicode"
+ },
+ {
+ "include": "#escape-sequence"
+ },
+ {
+ "include": "#string-line-continuation"
+ }
+ ]
+ },
+ "string-single-bad-brace1-formatting-raw": {
+ "comment": "template using {% ... %}",
+ "begin": "(?x)\n (?= \\{%\n ( .*? (?!(['\"])|((?<!\\\\)\\n)) )\n %\\}\n )\n",
+ "end": "(?=(['\"])|((?<!\\\\)\\n))",
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ }
+ ]
+ },
+ "string-single-bad-brace2-formatting-unicode": {
+ "comment": "odd format or format-like syntax",
+ "begin": "(?x)\n (?!\\{\\{)\n (?= \\{ (\n \\w*? (?!(['\"])|((?<!\\\\)\\n)) [^!:\\.\\[}\\w]\n )\n .*?(?!(['\"])|((?<!\\\\)\\n))\n \\}\n )\n",
+ "end": "(?=(['\"])|((?<!\\\\)\\n))",
+ "patterns": [
+ {
+ "include": "#escape-sequence-unicode"
+ },
+ {
+ "include": "#string-entity"
+ }
+ ]
+ },
+ "string-single-bad-brace2-formatting-raw": {
+ "comment": "odd format or format-like syntax",
+ "begin": "(?x)\n (?!\\{\\{)\n (?= \\{ (\n \\w*? (?!(['\"])|((?<!\\\\)\\n)) [^!:\\.\\[}\\w]\n )\n .*?(?!(['\"])|((?<!\\\\)\\n))\n \\}\n )\n",
+ "end": "(?=(['\"])|((?<!\\\\)\\n))",
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ },
+ {
+ "include": "#string-formatting"
+ }
+ ]
+ },
+ "string-raw-quoted-multi-line": {
+ "name": "string.quoted.raw.multi.python",
+ "begin": "\\b(([uU]R)|(R))('''|\"\"\")",
+ "end": "(\\4)",
+ "beginCaptures": {
+ "2": {
+ "name": "invalid.deprecated.prefix.python"
+ },
+ "3": {
+ "name": "storage.type.string.python"
+ },
+ "4": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-multi-bad-brace1-formatting-raw"
+ },
+ {
+ "include": "#string-multi-bad-brace2-formatting-raw"
+ },
+ {
+ "include": "#string-raw-guts"
+ }
+ ]
+ },
+ "string-bin-quoted-multi-line": {
+ "name": "string.quoted.binary.multi.python",
+ "begin": "(\\b[bB])('''|\"\"\")",
+ "end": "(\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.string.python"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-entity"
+ }
+ ]
+ },
+ "string-raw-bin-quoted-multi-line": {
+ "name": "string.quoted.raw.binary.multi.python",
+ "begin": "(\\b(?:R[bB]|[bB]R))('''|\"\"\")",
+ "end": "(\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.string.python"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-raw-bin-guts"
+ }
+ ]
+ },
+ "string-quoted-multi-line": {
+ "name": "string.quoted.multi.python",
+ "begin": "(?:\\b([rR])(?=[uU]))?([uU])?('''|\"\"\")",
+ "end": "(\\3)",
+ "beginCaptures": {
+ "1": {
+ "name": "invalid.illegal.prefix.python"
+ },
+ "2": {
+ "name": "storage.type.string.python"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string-multi-bad-brace1-formatting-unicode"
+ },
+ {
+ "include": "#string-multi-bad-brace2-formatting-unicode"
+ },
+ {
+ "include": "#string-unicode-guts"
+ }
+ ]
+ },
+ "string-multi-bad-brace1-formatting-unicode": {
+ "comment": "template using {% ... %}",
+ "begin": "(?x)\n (?= \\{%\n ( .*? (?!'''|\"\"\") )\n %\\}\n )\n",
+ "end": "(?='''|\"\"\")",
+ "patterns": [
+ {
+ "include": "#escape-sequence-unicode"
+ },
+ {
+ "include": "#escape-sequence"
+ },
+ {
+ "include": "#string-line-continuation"
+ }
+ ]
+ },
+ "string-multi-bad-brace1-formatting-raw": {
+ "comment": "template using {% ... %}",
+ "begin": "(?x)\n (?= \\{%\n ( .*? (?!'''|\"\"\") )\n %\\}\n )\n",
+ "end": "(?='''|\"\"\")",
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ }
+ ]
+ },
+ "string-multi-bad-brace2-formatting-unicode": {
+ "comment": "odd format or format-like syntax",
+ "begin": "(?x)\n (?!\\{\\{)\n (?= \\{ (\n \\w*? (?!'''|\"\"\") [^!:\\.\\[}\\w]\n )\n .*?(?!'''|\"\"\")\n \\}\n )\n",
+ "end": "(?='''|\"\"\")",
+ "patterns": [
+ {
+ "include": "#escape-sequence-unicode"
+ },
+ {
+ "include": "#string-entity"
+ }
+ ]
+ },
+ "string-multi-bad-brace2-formatting-raw": {
+ "comment": "odd format or format-like syntax",
+ "begin": "(?x)\n (?!\\{\\{)\n (?= \\{ (\n \\w*? (?!'''|\"\"\") [^!:\\.\\[}\\w]\n )\n .*?(?!'''|\"\"\")\n \\}\n )\n",
+ "end": "(?='''|\"\"\")",
+ "patterns": [
+ {
+ "include": "#string-consume-escape"
+ },
+ {
+ "include": "#string-formatting"
+ }
+ ]
+ },
+ "fstring-fnorm-quoted-single-line": {
+ "name": "meta.fstring.python",
+ "begin": "(\\b[fF])([bBuU])?((['\"]))",
+ "end": "(\\3)|((?<!\\\\)\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.interpolated.python string.quoted.single.python storage.type.string.python"
+ },
+ "2": {
+ "name": "invalid.illegal.prefix.python"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.python string.interpolated.python string.quoted.single.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-guts"
+ },
+ {
+ "include": "#fstring-illegal-single-brace"
+ },
+ {
+ "include": "#fstring-single-brace"
+ },
+ {
+ "include": "#fstring-single-core"
+ }
+ ]
+ },
+ "fstring-normf-quoted-single-line": {
+ "name": "meta.fstring.python",
+ "begin": "(\\b[bBuU])([fF])((['\"]))",
+ "end": "(\\3)|((?<!\\\\)\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "invalid.illegal.prefix.python"
+ },
+ "2": {
+ "name": "string.interpolated.python string.quoted.single.python storage.type.string.python"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.python string.quoted.single.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.single.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-guts"
+ },
+ {
+ "include": "#fstring-illegal-single-brace"
+ },
+ {
+ "include": "#fstring-single-brace"
+ },
+ {
+ "include": "#fstring-single-core"
+ }
+ ]
+ },
+ "fstring-raw-quoted-single-line": {
+ "name": "meta.fstring.python",
+ "begin": "(\\b(?:[R][fF]|[fF][R]))((['\"]))",
+ "end": "(\\2)|((?<!\\\\)\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.interpolated.python string.quoted.raw.single.python storage.type.string.python"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.python string.quoted.raw.single.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.single.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-raw-guts"
+ },
+ {
+ "include": "#fstring-illegal-single-brace"
+ },
+ {
+ "include": "#fstring-single-brace"
+ },
+ {
+ "include": "#fstring-raw-single-core"
+ }
+ ]
+ },
+ "fstring-single-core": {
+ "name": "string.interpolated.python string.quoted.single.python",
+ "match": "(?x)\n (.+?)\n (\n (?# .* and .*? in multi-line match need special handling of\n newlines otherwise SublimeText and Atom will match slightly\n differently.\n\n The guard for newlines has to be separate from the\n lookahead because of special $ matching rule.)\n ($\\n?)\n |\n (?=[\\\\\\}\\{]|(['\"])|((?<!\\\\)\\n))\n )\n (?# due to how multiline regexps are matched we need a special case\n for matching a newline character)\n | \\n\n"
+ },
+ "fstring-raw-single-core": {
+ "name": "string.interpolated.python string.quoted.raw.single.python",
+ "match": "(?x)\n (.+?)\n (\n (?# .* and .*? in multi-line match need special handling of\n newlines otherwise SublimeText and Atom will match slightly\n differently.\n\n The guard for newlines has to be separate from the\n lookahead because of special $ matching rule.)\n ($\\n?)\n |\n (?=[\\\\\\}\\{]|(['\"])|((?<!\\\\)\\n))\n )\n (?# due to how multiline regexps are matched we need a special case\n for matching a newline character)\n | \\n\n"
+ },
+ "fstring-single-brace": {
+ "comment": "value interpolation using { ... }",
+ "begin": "(\\{)",
+ "end": "(?x)\n (\\})|(?=\\n)\n",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-terminator-single"
+ },
+ {
+ "include": "#f-expression"
+ }
+ ]
+ },
+ "fstring-terminator-single": {
+ "patterns": [
+ {
+ "name": "storage.type.format.python",
+ "match": "(![rsa])(?=})"
+ },
+ {
+ "match": "(?x)\n (![rsa])?\n ( : \\w? [<>=^]? [-+ ]? \\#?\n \\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )(?=})\n",
+ "captures": {
+ "1": {
+ "name": "storage.type.format.python"
+ },
+ "2": {
+ "name": "storage.type.format.python"
+ }
+ }
+ },
+ {
+ "include": "#fstring-terminator-single-tail"
+ }
+ ]
+ },
+ "fstring-terminator-single-tail": {
+ "begin": "(![rsa])?(:)(?=.*?{)",
+ "end": "(?=})|(?=\\n)",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.format.python"
+ },
+ "2": {
+ "name": "storage.type.format.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-illegal-single-brace"
+ },
+ {
+ "include": "#fstring-single-brace"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "([bcdeEfFgGnosxX%])(?=})"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(\\.\\d+)"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(,)"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(\\d+)"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(\\#)"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "([-+ ])"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "([<>=^])"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(\\w)"
+ }
+ ]
+ },
+ "fstring-fnorm-quoted-multi-line": {
+ "name": "meta.fstring.python",
+ "begin": "(\\b[fF])([bBuU])?('''|\"\"\")",
+ "end": "(\\3)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.interpolated.python string.quoted.multi.python storage.type.string.python"
+ },
+ "2": {
+ "name": "invalid.illegal.prefix.python"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.python string.interpolated.python string.quoted.multi.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-guts"
+ },
+ {
+ "include": "#fstring-illegal-multi-brace"
+ },
+ {
+ "include": "#fstring-multi-brace"
+ },
+ {
+ "include": "#fstring-multi-core"
+ }
+ ]
+ },
+ "fstring-normf-quoted-multi-line": {
+ "name": "meta.fstring.python",
+ "begin": "(\\b[bBuU])([fF])('''|\"\"\")",
+ "end": "(\\3)",
+ "beginCaptures": {
+ "1": {
+ "name": "invalid.illegal.prefix.python"
+ },
+ "2": {
+ "name": "string.interpolated.python string.quoted.multi.python storage.type.string.python"
+ },
+ "3": {
+ "name": "punctuation.definition.string.begin.python string.quoted.multi.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.multi.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-guts"
+ },
+ {
+ "include": "#fstring-illegal-multi-brace"
+ },
+ {
+ "include": "#fstring-multi-brace"
+ },
+ {
+ "include": "#fstring-multi-core"
+ }
+ ]
+ },
+ "fstring-raw-quoted-multi-line": {
+ "name": "meta.fstring.python",
+ "begin": "(\\b(?:[R][fF]|[fF][R]))('''|\"\"\")",
+ "end": "(\\2)",
+ "beginCaptures": {
+ "1": {
+ "name": "string.interpolated.python string.quoted.raw.multi.python storage.type.string.python"
+ },
+ "2": {
+ "name": "punctuation.definition.string.begin.python string.quoted.raw.multi.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.string.end.python string.interpolated.python string.quoted.raw.multi.python"
+ },
+ "2": {
+ "name": "invalid.illegal.newline.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-raw-guts"
+ },
+ {
+ "include": "#fstring-illegal-multi-brace"
+ },
+ {
+ "include": "#fstring-multi-brace"
+ },
+ {
+ "include": "#fstring-raw-multi-core"
+ }
+ ]
+ },
+ "fstring-multi-core": {
+ "name": "string.interpolated.python string.quoted.multi.python",
+ "match": "(?x)\n (.+?)\n (\n (?# .* and .*? in multi-line match need special handling of\n newlines otherwise SublimeText and Atom will match slightly\n differently.\n\n The guard for newlines has to be separate from the\n lookahead because of special $ matching rule.)\n ($\\n?)\n |\n (?=[\\\\\\}\\{]|'''|\"\"\")\n )\n (?# due to how multiline regexps are matched we need a special case\n for matching a newline character)\n | \\n\n"
+ },
+ "fstring-raw-multi-core": {
+ "name": "string.interpolated.python string.quoted.raw.multi.python",
+ "match": "(?x)\n (.+?)\n (\n (?# .* and .*? in multi-line match need special handling of\n newlines otherwise SublimeText and Atom will match slightly\n differently.\n\n The guard for newlines has to be separate from the\n lookahead because of special $ matching rule.)\n ($\\n?)\n |\n (?=[\\\\\\}\\{]|'''|\"\"\")\n )\n (?# due to how multiline regexps are matched we need a special case\n for matching a newline character)\n | \\n\n"
+ },
+ "fstring-multi-brace": {
+ "comment": "value interpolation using { ... }",
+ "begin": "(\\{)",
+ "end": "(?x)\n (\\})\n",
+ "beginCaptures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ }
+ },
+ "endCaptures": {
+ "1": {
+ "name": "constant.character.format.placeholder.other.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-terminator-multi"
+ },
+ {
+ "include": "#f-expression"
+ }
+ ]
+ },
+ "fstring-terminator-multi": {
+ "patterns": [
+ {
+ "name": "storage.type.format.python",
+ "match": "(![rsa])(?=})"
+ },
+ {
+ "match": "(?x)\n (![rsa])?\n ( : \\w? [<>=^]? [-+ ]? \\#?\n \\d* ,? (\\.\\d+)? [bcdeEfFgGnosxX%]? )(?=})\n",
+ "captures": {
+ "1": {
+ "name": "storage.type.format.python"
+ },
+ "2": {
+ "name": "storage.type.format.python"
+ }
+ }
+ },
+ {
+ "include": "#fstring-terminator-multi-tail"
+ }
+ ]
+ },
+ "fstring-terminator-multi-tail": {
+ "begin": "(![rsa])?(:)(?=.*?{)",
+ "end": "(?=})",
+ "beginCaptures": {
+ "1": {
+ "name": "storage.type.format.python"
+ },
+ "2": {
+ "name": "storage.type.format.python"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#fstring-illegal-multi-brace"
+ },
+ {
+ "include": "#fstring-multi-brace"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "([bcdeEfFgGnosxX%])(?=})"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(\\.\\d+)"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(,)"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(\\d+)"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(\\#)"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "([-+ ])"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "([<>=^])"
+ },
+ {
+ "name": "storage.type.format.python",
+ "match": "(\\w)"
+ }
+ ]
+ },
+ "special-variables-types": {
+ "patterns": [
+ {
+ "name": "variable.language.special.log.vyper",
+ "match": "(?x)\n (?<!\\.) \\b(\n log )\\b\n"
+ },
+ {
+ "name": "variable.language.special.msg.vyper",
+ "match": "(?x)\n (?<!\\.) \\b(\n msg )\\b\n"
+ },
+ {
+ "name": "variable.language.special.block.vyper",
+ "match": "(?x)\n (?<!\\.) \\b(\n block )\\b\n"
+ }
+ ]
+ },
+ "reserved-names-vyper": {
+ "name": "name.reserved.vyper",
+ "match": "(?x)\n \\b (finney | gwei | range | def | ____init____ | timedelta | babbage | zero_address | raise | external | empty_bytes32 | assert | continue | wei | ada | min_int256 | min_int128 | chainid | max_decimal | default | indexed | selfdestruct | lovelace | immutable | throw | kwei | max_int128 | while | constant | ___default___ | balance | twei | codesize | false | max_int256 | _default_ | init | mwei | if | ____default____ | true | payable | internal | until | this | nonpayable | pass | public | nonreentrant | blockhash | max_uint256 | shannon | none | units | _init_ | ___init___ | is_contract | for | zero_wei | min_decimal | szabo | timestamp | ether | pwei | send) \\b\n"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/wasm.tmLanguage.json b/node_modules/shiki/languages/wasm.tmLanguage.json
new file mode 100644
index 0000000..882bdb7
--- /dev/null
+++ b/node_modules/shiki/languages/wasm.tmLanguage.json
@@ -0,0 +1,830 @@
+{
+ "name": "wasm",
+ "scopeName": "source.wat",
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#strings"
+ },
+ {
+ "include": "#instructions"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#modules"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#invalid"
+ }
+ ],
+ "repository": {
+ "comments": {
+ "patterns": [
+ {
+ "comment": "Line comment",
+ "name": "comment.line.wat",
+ "match": "(;;).*$",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.wat"
+ }
+ }
+ },
+ {
+ "comment": "Block comment",
+ "name": "comment.block.wat",
+ "begin": "\\(;",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.wat"
+ }
+ },
+ "end": ";\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.wat"
+ }
+ }
+ }
+ ]
+ },
+ "strings": {
+ "comment": "String literal",
+ "name": "string.quoted.double.wat",
+ "begin": "\"",
+ "end": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin"
+ }
+ },
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end"
+ }
+ },
+ "patterns": [
+ {
+ "name": "constant.character.escape.wat",
+ "match": "\\\\(n|t|\\\\|'|\"|[0-9a-fA-F]{2})"
+ }
+ ]
+ },
+ "instructions": {
+ "patterns": [
+ {
+ "comment": "Non-trapping float-to-int conversions",
+ "patterns": [
+ {
+ "comment": "Conversion instruction [nontrapping-float-to-int-conversions]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(i32|i64)\\.trunc_sat_f(?:32|64)_[su]\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "comment": "Sign-extension operators",
+ "patterns": [
+ {
+ "comment": "Numeric instruction (i32) [sign-extension-ops]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(i32)\\.(?:extend(?:8|16)_s)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Numeric instruction (i64) [sign-extension-ops]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(i64)\\.(?:extend(?:8|16|32)_s)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "comment": "Bulk memory operations",
+ "patterns": [
+ {
+ "comment": "Memory instruction [bulk-memory-operations]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(memory)\\.(?:copy|fill|init|drop)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "comment": "Fixed-width SIMD",
+ "patterns": [
+ {
+ "comment": "Vector instruction (v128) [simd]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(v128)\\.(?:const|and|or|xor|not|andnot|bitselect|load|store)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Vector instruction (i8x16) [simd]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(i8x16)\\.(?:splat|replace_lane|add|sub|mul|neg|shl|shr_[su]|eq|ne|lt_[su]|le_[su]|gt_[su]|ge_[su]|min_[su]|max_[su]|any_true|all_true|extract_lane_[su]|add_saturate_[su]|sub_saturate_[su]|avgr_u|narrow_i16x8_[su])\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Vector instruction (i16x8) [simd]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(i16x8)\\.(?:splat|replace_lane|add|sub|mul|neg|shl|shr_[su]|eq|ne|lt_[su]|le_[su]|gt_[su]|ge_[su]|min_[su]|max_[su]|any_true|all_true|extract_lane_[su]|add_saturate_[su]|sub_saturate_[su]|avgr_u|load8x8_[su]|narrow_i32x4_[su]|widen_(low|high)_i8x16_[su])\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Vector instruction (i32x4) [simd]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(i32x4)\\.(?:splat|replace_lane|add|sub|mul|neg|shl|shr_[su]|eq|ne|lt_[su]|le_[su]|gt_[su]|ge_[su]|min_[su]|max_[su]|any_true|all_true|extract_lane|load16x4_[su]|trunc_sat_f32x4_[su]|widen_(low|high)_i16x8_[su])\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Vector instruction (i64x2) [simd]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(i64x2)\\.(?:splat|replace_lane|add|sub|mul|neg|shl|shr_[su]|extract_lane|load32x2_[su])\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Vector instruction (f32x4) [simd]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(f32x4)\\.(?:splat|replace_lane|add|sub|mul|neg|extract_lane|eq|ne|lt|le|gt|ge|abs|min|max|div|sqrt|convert_i32x4_[su])\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Vector instruction (f64x2) [simd]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(f64x2)\\.(?:splat|replace_lane|add|sub|mul|neg|extract_lane|eq|ne|lt|le|gt|ge|abs|min|max|div|sqrt)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Vector instruction (v8x16) [simd]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(v8x16)\\.(?:load_splat|shuffle|swizzle)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Vector instruction (v16x8) [simd]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(v16x8)\\.load_splat\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Vector instruction (v32x4) [simd]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(v32x4)\\.load_splat\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Vector instruction (v64x2) [simd]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(v64x2)\\.load_splat\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "comment": "Threads",
+ "patterns": [
+ {
+ "comment": "Atomic instruction (i32) [threads]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(i32)\\.(atomic)\\.(?:load(?:8_u|16_u)?|store(?:8|16)?|wait|(rmw)\\.(?:add|sub|and|or|xor|xchg|cmpxchg)|(rmw8|rmw16)\\.(?:add_u|sub_u|and_u|or_u|xor_u|xchg_u|cmpxchg_u))\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ },
+ "2": {
+ "name": "support.class.wat"
+ },
+ "3": {
+ "name": "support.class.wat"
+ },
+ "4": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Atomic instruction (i64) [threads]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(i64)\\.(atomic)\\.(?:load(?:8_u|16_u|32_u)?|store(?:8|16|32)?|wait|(rmw)\\.(?:add|sub|and|or|xor|xchg|cmpxchg)|(rmw8|rmw16|rmw32)\\.(?:add_u|sub_u|and_u|or_u|xor_u|xchg_u|cmpxchg_u))\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ },
+ "2": {
+ "name": "support.class.wat"
+ },
+ "3": {
+ "name": "support.class.wat"
+ },
+ "4": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Atomic instruction [threads]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(atomic)\\.(?:notify|fence)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Shared modifier [threads]",
+ "name": "storage.modifier.wat",
+ "match": "\\bshared\\b"
+ }
+ ]
+ },
+ {
+ "comment": "Reference types",
+ "patterns": [
+ {
+ "comment": "Reference instruction [reference-types]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(ref)\\.(?:null|is_null|func|extern)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Table instruction [reference-types]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(table)\\.(?:get|size|grow|fill|init|copy)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Type name [reference-types]",
+ "name": "entity.name.type.wat",
+ "match": "\\b(?:externref|funcref|nullref)\\b"
+ }
+ ]
+ },
+ {
+ "comment": "Tail Call",
+ "patterns": [
+ {
+ "comment": "Control instruction [tail-call]",
+ "name": "keyword.control.wat",
+ "match": "\\breturn_call(?:_indirect)?\\b"
+ }
+ ]
+ },
+ {
+ "comment": "Exception handling",
+ "patterns": [
+ {
+ "comment": "Control instruction [exception-handling]",
+ "name": "keyword.control.wat",
+ "match": "\\b(?:try|catch|throw|rethrow|br_on_exn)\\b"
+ },
+ {
+ "comment": "Module element [exception-handling]",
+ "name": "storage.type.wat",
+ "match": "(?<=\\()event\\b"
+ }
+ ]
+ },
+ {
+ "comment": "Binaryen extensions",
+ "patterns": [
+ {
+ "comment": "Pseudo stack instruction [binaryen]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(i32|i64|f32|f64|externref|funcref|nullref|exnref)\\.(?:push|pop)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "comment": "MVP",
+ "patterns": [
+ {
+ "comment": "Memory instruction (i32) [mvp]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(i32)\\.(?:load|load(?:8|16)(?:_[su])?|store(?:8|16)?)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.type.wat"
+ }
+ }
+ },
+ {
+ "comment": "Memory instruction (i64) [mvp]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(i64)\\.(?:load|load(?:8|16|32)(?:_[su])?|store(?:8|16|32)?)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.type.wat"
+ }
+ }
+ },
+ {
+ "comment": "Memory instruction (f32/f64) [mvp]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(f32|f64)\\.(?:load|store)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.type.wat"
+ }
+ }
+ },
+ {
+ "comment": "Memory instruction [mvp]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(memory)\\.(?:size|grow)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.memory.wat"
+ }
+ }
+ },
+ {
+ "comment": "Memory instruction attribute [mvp]",
+ "match": "\\b(offset|align)=\\b",
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.wat"
+ }
+ }
+ },
+ {
+ "comment": "Variable instruction (local) [mvp]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(local)\\.(?:get|set|tee)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.local.wat"
+ }
+ }
+ },
+ {
+ "comment": "Variable instruction (global) [mvp]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(global)\\.(?:get|set)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.global.wat"
+ }
+ }
+ },
+ {
+ "comment": "Numeric instruction (i32/i64) [mvp]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(i32|i64)\\.(const|eqz|eq|ne|lt_[su]|gt_[su]|le_[su]|ge_[su]|clz|ctz|popcnt|add|sub|mul|div_[su]|rem_[su]|and|or|xor|shl|shr_[su]|rotl|rotr)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.type.wat"
+ }
+ }
+ },
+ {
+ "comment": "Numeric instruction (f32/f64) [mvp]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(f32|f64)\\.(const|eq|ne|lt|gt|le|ge|abs|neg|ceil|floor|trunc|nearest|sqrt|add|sub|mul|div|min|max|copysign)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.type.wat"
+ }
+ }
+ },
+ {
+ "comment": "Conversion instruction (i32) [mvp]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(i32)\\.(wrap_i64|trunc_(f32|f64)_[su]|reinterpret_f32)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.type.wat"
+ }
+ }
+ },
+ {
+ "comment": "Conversion instruction (i64) [mvp]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(i64)\\.(extend_i32_[su]|trunc_f(32|64)_[su]|reinterpret_f64)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.type.wat"
+ }
+ }
+ },
+ {
+ "comment": "Conversion instruction (f32) [mvp]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(f32)\\.(convert_i(32|64)_[su]|demote_f64|reinterpret_i32)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.type.wat"
+ }
+ }
+ },
+ {
+ "comment": "Conversion instruction (f64) [mvp]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(f64)\\.(convert_i(32|64)_[su]|promote_f32|reinterpret_i64)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.type.wat"
+ }
+ }
+ },
+ {
+ "comment": "Control instruction [mvp]",
+ "name": "keyword.control.wat",
+ "match": "\\b(?:unreachable|nop|block|loop|if|then|else|end|br|br_if|br_table|return|call|call_indirect)\\b"
+ },
+ {
+ "comment": "Parametric instruction [mvp]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(?:drop|select)\\b"
+ }
+ ]
+ },
+ {
+ "comment": "GC Instructions",
+ "patterns": [
+ {
+ "comment": "Reference Instructions [GC]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(ref)\\.(?:eq|test|cast)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Struct Instructions [GC]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(struct)\\.(?:new_canon|new_canon_default|get|get_s|get_u|set)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Array Instructions [GC]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(array)\\.(?:new_canon|new_canon_default|get|get_s|get_u|set|len|new_canon_fixed|new_canon_data|new_canon_elem)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "i31 Instructions [GC]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(i31)\\.(?:new|get_s|get_u)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Branch Instructions [GC]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(?:br_on_non_null|br_on_cast|br_on_cast_fail)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ },
+ {
+ "comment": "Reference Instructions [GC]",
+ "name": "keyword.operator.word.wat",
+ "match": "\\b(extern)\\.(?:internalize|externalize)\\b",
+ "captures": {
+ "1": {
+ "name": "support.class.wat"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ },
+ "types": {
+ "patterns": [
+ {
+ "comment": "Fixed-width SIMD",
+ "patterns": [
+ {
+ "comment": "Type name [simd]",
+ "name": "entity.name.type.wat",
+ "match": "\\bv128\\b(?!\\.)"
+ }
+ ]
+ },
+ {
+ "comment": "Reference types",
+ "patterns": [
+ {
+ "comment": "Type name [reference-types]",
+ "name": "entity.name.type.wat",
+ "match": "\\b(?:externref|funcref|nullref)\\b(?!\\.)"
+ }
+ ]
+ },
+ {
+ "comment": "Exception handling",
+ "patterns": [
+ {
+ "comment": "Type name [exception-handling]",
+ "name": "entity.name.type.wat",
+ "match": "\\bexnref\\b(?!\\.)"
+ }
+ ]
+ },
+ {
+ "comment": "MVP",
+ "patterns": [
+ {
+ "comment": "Type name [mvp]",
+ "name": "entity.name.type.wat",
+ "match": "\\b(?:i32|i64|f32|f64)\\b(?!\\.)"
+ }
+ ]
+ },
+ {
+ "comment": "GC Types",
+ "patterns": [
+ {
+ "comment": "Type name [GC]",
+ "name": "entity.name.type.wat",
+ "match": "\\b(?:i8|i16|ref|funcref|externref|anyref|eqref|i31ref|nullfuncref|nullexternref|structref|arrayref|nullref)\\b(?!\\.)"
+ }
+ ]
+ },
+ {
+ "comment": "GC Heap Types",
+ "patterns": [
+ {
+ "comment": "Type name [GC]",
+ "name": "entity.name.type.wat",
+ "match": "\\b(?:type|func|extern|any|eq|nofunc|noextern|struct|array|none)\\b(?!\\.)"
+ }
+ ]
+ },
+ {
+ "comment": "GC Structured and sub Types",
+ "patterns": [
+ {
+ "comment": "Type name [GC]",
+ "name": "entity.name.type.wat",
+ "match": "\\b(?:struct|array|sub|final|rec|field|mut)\\b(?!\\.)"
+ }
+ ]
+ }
+ ]
+ },
+ "modules": {
+ "patterns": [
+ {
+ "comment": "Bulk memory operations",
+ "patterns": [
+ {
+ "comment": "Passive modifier [bulk-memory-operations]",
+ "match": "(?<=\\(data)\\s+(passive)\\b",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.wat"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "comment": "MVP",
+ "patterns": [
+ {
+ "comment": "Module element [mvp]",
+ "name": "storage.type.wat",
+ "match": "(?<=\\()(?:module|import|export|memory|data|table|elem|start|func|type|param|result|global|local)\\b"
+ },
+ {
+ "comment": "Mutable global modifier [mvp]",
+ "name": "storage.modifier.wat",
+ "match": "(?<=\\()\\s*(mut)\\b",
+ "captures": {
+ "1": {
+ "name": "storage.modifier.wat"
+ }
+ }
+ },
+ {
+ "comment": "Function name [mvp]",
+ "match": "(?<=\\(func|\\(start|call|return_call|ref\\.func)\\s+(\\$[0-9A-Za-z!#$%&'*+\\-./:<=>?@\\\\^_`|~]*)",
+ "captures": {
+ "1": {
+ "name": "entity.name.function.wat"
+ }
+ }
+ },
+ {
+ "comment": "Function name(s) (elem) [mvp]",
+ "begin": "\\)\\s+(\\$[0-9A-Za-z!#$%&'*+\\-./:<=>?@\\\\^_`|~]*)",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.wat"
+ }
+ },
+ "end": "\\)",
+ "patterns": [
+ {
+ "name": "entity.name.function.wat",
+ "match": "(?<=\\s)\\$[0-9A-Za-z!#$%&'*+\\-./:<=>?@\\\\^_`|~]*"
+ }
+ ]
+ },
+ {
+ "comment": "Function type [mvp]",
+ "match": "(?<=\\(type)\\s+(\\$[0-9A-Za-z!#$%&'*+\\-./:<=>?@\\\\^_`|~]*)",
+ "captures": {
+ "1": {
+ "name": "support.type.function.wat"
+ }
+ }
+ },
+ {
+ "comment": "Variable name or branch label [mvp]",
+ "name": "variable.other.wat",
+ "match": "\\$[0-9A-Za-z!#$%&'*+\\-./:<=>?@\\\\^_`|~]*\\b"
+ }
+ ]
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "comment": "Fixed-width SIMD",
+ "patterns": [
+ {
+ "comment": "Vector literal (i8x16) [simd]",
+ "name": "constant.numeric.vector.wat",
+ "match": "\\b(i8x16)(?:\\s+0x[0-9a-fA-F]{1,2}){16}\\b",
+ "captures": {
+ "1": {
+ "name": "support.type.wat"
+ }
+ }
+ },
+ {
+ "comment": "Vector literal (i16x8) [simd]",
+ "name": "constant.numeric.vector.wat",
+ "match": "\\b(i16x8)(?:\\s+0x[0-9a-fA-F]{1,4}){8}\\b",
+ "captures": {
+ "1": {
+ "name": "support.type.wat"
+ }
+ }
+ },
+ {
+ "comment": "Vector literal (i32x4) [simd]",
+ "name": "constant.numeric.vector.wat",
+ "match": "\\b(i32x4)(?:\\s+0x[0-9a-fA-F]{1,8}){4}\\b",
+ "captures": {
+ "1": {
+ "name": "support.type.wat"
+ }
+ }
+ },
+ {
+ "comment": "Vector literal (i64x2) [simd]",
+ "name": "constant.numeric.vector.wat",
+ "match": "\\b(i64x2)(?:\\s+0x[0-9a-fA-F]{1,16}){2}\\b",
+ "captures": {
+ "1": {
+ "name": "support.type.wat"
+ }
+ }
+ }
+ ]
+ },
+ {
+ "comment": "MVP",
+ "patterns": [
+ {
+ "comment": "Floating point literal",
+ "name": "constant.numeric.float.wat",
+ "match": "[+-]?\\b[0-9][0-9]*(?:\\.[0-9][0-9]*)?(?:[eE][+-]?[0-9]+)?\\b"
+ },
+ {
+ "comment": "Floating point hexadecimal literal",
+ "name": "constant.numeric.float.wat",
+ "match": "[+-]?\\b0x([0-9a-fA-F]*\\.[0-9a-fA-F]+|[0-9a-fA-F]+\\.?)[Pp][+-]?[0-9]+\\b"
+ },
+ {
+ "comment": "Floating point infinity",
+ "name": "constant.numeric.float.wat",
+ "match": "[+-]?\\binf\\b"
+ },
+ {
+ "comment": "Floating point literal (NaN)",
+ "name": "constant.numeric.float.wat",
+ "match": "[+-]?\\bnan:0x[0-9a-fA-F][0-9a-fA-F]*\\b"
+ },
+ {
+ "comment": "Integer literal",
+ "name": "constant.numeric.integer.wat",
+ "match": "[+-]?\\b(?:0x[0-9a-fA-F][0-9a-fA-F]*|\\d[\\d]*)\\b"
+ }
+ ]
+ }
+ ]
+ },
+ "invalid": {
+ "patterns": [
+ {
+ "name": "invalid.wat",
+ "match": "[^\\s()]+"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/wenyan.tmLanguage.json b/node_modules/shiki/languages/wenyan.tmLanguage.json
new file mode 100644
index 0000000..d2142ae
--- /dev/null
+++ b/node_modules/shiki/languages/wenyan.tmLanguage.json
@@ -0,0 +1,129 @@
+{
+ "$schema": "https://raw.githubusercontent.com/martinring/tmlanguage/master/tmlanguage.json",
+ "scopeName": "source.wenyan",
+ "name": "wenyan",
+ "patterns": [
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#symbols"
+ },
+ {
+ "include": "#expression"
+ },
+ {
+ "include": "#comment-blocks"
+ },
+ {
+ "include": "#comment-lines"
+ }
+ ],
+ "repository": {
+ "expression": {
+ "patterns": [
+ {
+ "include": "#variables"
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "name": "storage.type",
+ "match": "數|列|言|術|爻|物|元"
+ },
+ {
+ "name": "keyword.control",
+ "match": "乃行是術曰|若其不然者|乃歸空無|欲行是術|乃止是遍|若其然者|其物如是|乃得矣|之術也|必先得|是術曰|恆為是|之物也|乃得|是謂|云云|中之|為是|乃止|若非|或若|之長|其餘"
+ },
+ {
+ "name": "keyword.control",
+ "match": "或云|蓋謂"
+ },
+ {
+ "name": "keyword.operator",
+ "match": "中有陽乎|中無陰乎|所餘幾何|不等於|不大於|不小於|等於|大於|小於|加|減|乘|除|變|以|於"
+ },
+ {
+ "name": "keyword.other",
+ "match": "不知何禍歟|不復存矣|姑妄行此|如事不諧|名之曰|吾嘗觀|之禍歟|乃作罷|吾有|今有|物之|書之|以施|昔之|是矣|之書|方悟|之義|嗚呼|之禍|有|施|曰|噫|取|今|夫|中|豈"
+ },
+ {
+ "name": "keyword.control",
+ "match": "也|凡|遍|若|者|之|充|銜"
+ }
+ ]
+ },
+ "comment-lines": {
+ "name": "comment.line",
+ "begin": "注曰|疏曰|批曰",
+ "end": "$",
+ "patterns": [
+ {
+ "name": "constant.character",
+ "match": "\\\\."
+ }
+ ]
+ },
+ "comment-blocks": {
+ "name": "comment.block",
+ "begin": "(注曰|疏曰|批曰)。?(「「|『)",
+ "end": "(」」|』)",
+ "patterns": [
+ {
+ "name": "constant.character",
+ "match": "\\\\."
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "name": "constant.numeric",
+ "match": "負|·|又|零|〇|一|二|三|四|五|六|七|八|九|十|百|千|萬|億|兆|京|垓|秭|穰|溝|澗|正|載|極|分|釐|毫|絲|忽|微|纖|沙|塵|埃|渺|漠"
+ },
+ {
+ "name": "constant.language",
+ "match": "其|陰|陽"
+ },
+ {
+ "name": "string.quoted",
+ "begin": "「「|『",
+ "end": "」」|』",
+ "patterns": [
+ {
+ "name": "constant.character",
+ "match": "\\\\."
+ }
+ ]
+ }
+ ]
+ },
+ "symbols": {
+ "patterns": [
+ {
+ "name": "punctuation.separator",
+ "match": "。|、"
+ }
+ ]
+ },
+ "variables": {
+ "name": "variable.other",
+ "begin": "「",
+ "end": "」",
+ "patterns": [
+ {
+ "name": "constant.character",
+ "match": "\\\\."
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/wgsl.tmLanguage.json b/node_modules/shiki/languages/wgsl.tmLanguage.json
new file mode 100644
index 0000000..595e661
--- /dev/null
+++ b/node_modules/shiki/languages/wgsl.tmLanguage.json
@@ -0,0 +1,380 @@
+{
+ "name": "wgsl",
+ "scopeName": "source.wgsl",
+ "patterns": [
+ {
+ "include": "#line_comments"
+ },
+ {
+ "include": "#block_comments"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#attributes"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#function_calls"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#punctuation"
+ }
+ ],
+ "repository": {
+ "line_comments": {
+ "comment": "single line comment",
+ "name": "comment.line.double-slash.wgsl",
+ "match": "\\s*//.*"
+ },
+ "block_comments": {
+ "patterns": [
+ {
+ "comment": "empty block comments",
+ "name": "comment.block.wgsl",
+ "match": "/\\*\\*/"
+ },
+ {
+ "comment": "block documentation comments",
+ "name": "comment.block.documentation.wgsl",
+ "begin": "/\\*\\*",
+ "end": "\\*/",
+ "patterns": [
+ {
+ "include": "#block_comments"
+ }
+ ]
+ },
+ {
+ "comment": "block comments",
+ "name": "comment.block.wgsl",
+ "begin": "/\\*(?!\\*)",
+ "end": "\\*/",
+ "patterns": [
+ {
+ "include": "#block_comments"
+ }
+ ]
+ }
+ ]
+ },
+ "attributes": {
+ "patterns": [
+ {
+ "comment": "attribute declaration",
+ "name": "meta.attribute.wgsl",
+ "match": "(@)([A-Za-z_]+)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.attribute.at"
+ },
+ "2": {
+ "name": "entity.name.attribute.wgsl"
+ }
+ }
+ }
+ ]
+ },
+ "functions": {
+ "patterns": [
+ {
+ "comment": "function definition",
+ "name": "meta.function.definition.wgsl",
+ "begin": "\\b(fn)\\s+([A-Za-z0-9_]+)((\\()|(<))",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.other.fn.wgsl"
+ },
+ "2": {
+ "name": "entity.name.function.wgsl"
+ },
+ "4": {
+ "name": "punctuation.brackets.round.wgsl"
+ }
+ },
+ "end": "\\{",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.brackets.curly.wgsl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#line_comments"
+ },
+ {
+ "include": "#block_comments"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#attributes"
+ },
+ {
+ "include": "#function_calls"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#punctuation"
+ }
+ ]
+ }
+ ]
+ },
+ "function_calls": {
+ "patterns": [
+ {
+ "comment": "function/method calls",
+ "name": "meta.function.call.wgsl",
+ "begin": "([A-Za-z0-9_]+)(\\()",
+ "beginCaptures": {
+ "1": {
+ "name": "entity.name.function.wgsl"
+ },
+ "2": {
+ "name": "punctuation.brackets.round.wgsl"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.brackets.round.wgsl"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#line_comments"
+ },
+ {
+ "include": "#block_comments"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#attributes"
+ },
+ {
+ "include": "#function_calls"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#types"
+ },
+ {
+ "include": "#variables"
+ },
+ {
+ "include": "#punctuation"
+ }
+ ]
+ }
+ ]
+ },
+ "constants": {
+ "patterns": [
+ {
+ "comment": "decimal float literal",
+ "name": "constant.numeric.float.wgsl",
+ "match": "(-?\\b[0-9][0-9]*\\.[0-9][0-9]*)([eE][+-]?[0-9]+)?\\b"
+ },
+ {
+ "comment": "int literal",
+ "name": "constant.numeric.decimal.wgsl",
+ "match": "-?\\b0x[0-9a-fA-F]+\\b|\\b0\\b|-?\\b[1-9][0-9]*\\b"
+ },
+ {
+ "comment": "uint literal",
+ "name": "constant.numeric.decimal.wgsl",
+ "match": "\\b0x[0-9a-fA-F]+u\\b|\\b0u\\b|\\b[1-9][0-9]*u\\b"
+ },
+ {
+ "comment": "boolean constant",
+ "name": "constant.language.boolean.wgsl",
+ "match": "\\b(true|false)\\b"
+ }
+ ]
+ },
+ "types": {
+ "comment": "types",
+ "name": "storage.type.wgsl",
+ "patterns": [
+ {
+ "comment": "scalar Types",
+ "name": "storage.type.wgsl",
+ "match": "\\b(bool|i32|u32|f32)\\b"
+ },
+ {
+ "comment": "reserved scalar Types",
+ "name": "storage.type.wgsl",
+ "match": "\\b(i64|u64|f64)\\b"
+ },
+ {
+ "comment": "vector/matrix types",
+ "name": "storage.type.wgsl",
+ "match": "\\b(vec[2-4]|mat[2-4]x[2-4])\\b"
+ },
+ {
+ "comment": "atomic types",
+ "name": "storage.type.wgsl",
+ "match": "\\b(atomic)\\b"
+ },
+ {
+ "comment": "array types",
+ "name": "storage.type.wgsl",
+ "match": "\\b(array)\\b"
+ },
+ {
+ "comment": "Custom type",
+ "name": "entity.name.type.wgsl",
+ "match": "\\b([A-Z][A-Za-z0-9]*)\\b"
+ }
+ ]
+ },
+ "variables": {
+ "patterns": [
+ {
+ "comment": "variables",
+ "name": "variable.other.wgsl",
+ "match": "\\b(?<!(?<!\\.)\\.)(?:r#(?!(crate|[Ss]elf|super)))?[a-z0-9_]+\\b"
+ }
+ ]
+ },
+ "punctuation": {
+ "patterns": [
+ {
+ "comment": "comma",
+ "name": "punctuation.comma.wgsl",
+ "match": ","
+ },
+ {
+ "comment": "curly braces",
+ "name": "punctuation.brackets.curly.wgsl",
+ "match": "[{}]"
+ },
+ {
+ "comment": "parentheses, round brackets",
+ "name": "punctuation.brackets.round.wgsl",
+ "match": "[()]"
+ },
+ {
+ "comment": "semicolon",
+ "name": "punctuation.semi.wgsl",
+ "match": ";"
+ },
+ {
+ "comment": "square brackets",
+ "name": "punctuation.brackets.square.wgsl",
+ "match": "[\\[\\]]"
+ },
+ {
+ "comment": "angle brackets",
+ "name": "punctuation.brackets.angle.wgsl",
+ "match": "(?<!=)[<>]"
+ }
+ ]
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "comment": "other keywords",
+ "name": "keyword.control.wgsl",
+ "match": "\\b(bitcast|block|break|case|continue|continuing|default|discard|else|elseif|enable|fallthrough|for|function|if|loop|private|read|read_write|return|storage|switch|uniform|while|workgroup|write)\\b"
+ },
+ {
+ "comment": "reserved keywords",
+ "name": "keyword.control.wgsl",
+ "match": "\\b(asm|const|do|enum|handle|mat|premerge|regardless|typedef|unless|using|vec|void)\\b"
+ },
+ {
+ "comment": "storage keywords",
+ "name": "keyword.other.wgsl storage.type.wgsl",
+ "match": "\\b(let|var)\\b"
+ },
+ {
+ "comment": "type keyword",
+ "name": "keyword.declaration.type.wgsl storage.type.wgsl",
+ "match": "\\b(type)\\b"
+ },
+ {
+ "comment": "enum keyword",
+ "name": "keyword.declaration.enum.wgsl storage.type.wgsl",
+ "match": "\\b(enum)\\b"
+ },
+ {
+ "comment": "struct keyword",
+ "name": "keyword.declaration.struct.wgsl storage.type.wgsl",
+ "match": "\\b(struct)\\b"
+ },
+ {
+ "comment": "fn",
+ "name": "keyword.other.fn.wgsl",
+ "match": "\\bfn\\b"
+ },
+ {
+ "comment": "logical operators",
+ "name": "keyword.operator.logical.wgsl",
+ "match": "(\\^|\\||\\|\\||&&|<<|>>|!)(?!=)"
+ },
+ {
+ "comment": "logical AND, borrow references",
+ "name": "keyword.operator.borrow.and.wgsl",
+ "match": "&(?![&=])"
+ },
+ {
+ "comment": "assignment operators",
+ "name": "keyword.operator.assignment.wgsl",
+ "match": "(\\+=|-=|\\*=|/=|%=|\\^=|&=|\\|=|<<=|>>=)"
+ },
+ {
+ "comment": "single equal",
+ "name": "keyword.operator.assignment.equal.wgsl",
+ "match": "(?<![<>])=(?!=|>)"
+ },
+ {
+ "comment": "comparison operators",
+ "name": "keyword.operator.comparison.wgsl",
+ "match": "(=(=)?(?!>)|!=|<=|(?<!=)>=)"
+ },
+ {
+ "comment": "math operators",
+ "name": "keyword.operator.math.wgsl",
+ "match": "(([+%]|(\\*(?!\\w)))(?!=))|(-(?!>))|(/(?!/))"
+ },
+ {
+ "comment": "dot access",
+ "name": "keyword.operator.access.dot.wgsl",
+ "match": "\\.(?!\\.)"
+ },
+ {
+ "comment": "dashrocket, skinny arrow",
+ "name": "keyword.operator.arrow.skinny.wgsl",
+ "match": "->"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/wolfram.tmLanguage.json b/node_modules/shiki/languages/wolfram.tmLanguage.json
new file mode 100644
index 0000000..e5d05c9
--- /dev/null
+++ b/node_modules/shiki/languages/wolfram.tmLanguage.json
@@ -0,0 +1,2363 @@
+{
+ "name": "wolfram",
+ "scopeName": "source.wolfram",
+ "fileTypes": ["wl", "m", "wls", "wlt", "mt"],
+ "patterns": [
+ {
+ "include": "#main"
+ }
+ ],
+ "repository": {
+ "main": {
+ "patterns": [
+ {
+ "include": "#shebang"
+ },
+ {
+ "include": "#simple-toplevel-definitions"
+ },
+ {
+ "include": "#expressions"
+ }
+ ]
+ },
+ "shebang": {
+ "name": "comment.line.shebang.wolfram",
+ "match": "\\A(#!).*(?=$)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.comment.wolfram"
+ }
+ }
+ },
+ "simple-toplevel-definitions": {
+ "patterns": [
+ {
+ "match": "^\\s*(Attributes|Format|Options)\\s*(\\[)(`?(?:(?:[$[:alpha:]][$[:alnum:]]*)`)*)((?:[$[:alpha:]][$[:alnum:]]*))(\\])\\s*(:=|=(?!!|=|\\.))",
+ "captures": {
+ "1": {
+ "name": "support.function.builtin.wolfram"
+ },
+ "2": {
+ "name": "punctuation.section.brackets.begin.wolfram"
+ },
+ "3": {
+ "name": "meta.function.wolfram entity.name.Context.wolfram"
+ },
+ "4": {
+ "name": "meta.function.wolfram entity.name.function.wolfram"
+ },
+ "5": {
+ "name": "punctuation.section.brackets.end.wolfram"
+ },
+ "6": {
+ "name": "keyword.operator.assignment.wolfram"
+ }
+ }
+ },
+ {
+ "match": "^\\s*(`?(?:(?:[$[:alpha:]][$[:alnum:]]*)`)*)((?:[$[:alpha:]][$[:alnum:]]*))(?=\\s*(\\[(?>[^\\[\\]]+|\\g<-1>)*\\])\\s*(?:/;.*)?(?::=|=(?!!|=|\\.)))",
+ "captures": {
+ "1": {
+ "name": "meta.function.wolfram entity.name.Context.wolfram"
+ },
+ "2": {
+ "name": "meta.function.wolfram entity.name.function.wolfram"
+ }
+ }
+ },
+ {
+ "match": "^\\s*(`?(?:(?:[$[:alpha:]][$[:alnum:]]*)`)*)((?:[$[:alpha:]][$[:alnum:]]*))(?=\\s*(?:/;.*)?(?::=|=(?!!|=|\\.)))",
+ "captures": {
+ "1": {
+ "name": "meta.function.wolfram entity.name.Context.wolfram"
+ },
+ "2": {
+ "name": "meta.function.wolfram entity.name.constant.wolfram"
+ }
+ }
+ }
+ ]
+ },
+ "expressions": {
+ "patterns": [
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#escaped_character_symbols"
+ },
+ {
+ "include": "#escaped_characters"
+ },
+ {
+ "include": "#out"
+ },
+ {
+ "include": "#slot"
+ },
+ {
+ "include": "#literals"
+ },
+ {
+ "include": "#groups"
+ },
+ {
+ "include": "#stringifying-operators"
+ },
+ {
+ "include": "#operators"
+ },
+ {
+ "include": "#pattern-operators"
+ },
+ {
+ "include": "#symbols"
+ },
+ {
+ "match": "(?:!|&|'|\\*|\\+|,|-|\\.|/|:|;|<|=|>|\\?|@|\\\\|\\^|\\||~)",
+ "name": "invalid.illegal"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "name": "comment.block",
+ "begin": "\\(\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.wolfram"
+ }
+ },
+ "end": "\\*\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.wolfram"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ {
+ "match": "\\*\\)",
+ "name": "invalid.illegal.stray-comment-end.wolfram"
+ }
+ ]
+ },
+ "escaped_character_symbols": {
+ "patterns": [
+ {
+ "match": "System`\\\\\\[(?:F(?:ormalA|ormalAlpha|ormalB|ormalBeta|ormalC|ormalCapitalA|ormalCapitalAlpha|ormalCapitalB|ormalCapitalBeta|ormalCapitalC|ormalCapitalChi|ormalCapitalD|ormalCapitalDelta|ormalCapitalDigamma|ormalCapitalE|ormalCapitalEpsilon|ormalCapitalEta|ormalCapitalF|ormalCapitalG|ormalCapitalGamma|ormalCapitalH|ormalCapitalI|ormalCapitalIota|ormalCapitalJ|ormalCapitalK|ormalCapitalKappa|ormalCapitalKoppa|ormalCapitalL|ormalCapitalLambda|ormalCapitalM|ormalCapitalMu|ormalCapitalN|ormalCapitalNu|ormalCapitalO|ormalCapitalOmega|ormalCapitalOmicron|ormalCapitalP|ormalCapitalPhi|ormalCapitalPi|ormalCapitalPsi|ormalCapitalQ|ormalCapitalR|ormalCapitalRho|ormalCapitalS|ormalCapitalSampi|ormalCapitalSigma|ormalCapitalStigma|ormalCapitalT|ormalCapitalTau|ormalCapitalTheta|ormalCapitalU|ormalCapitalUpsilon|ormalCapitalV|ormalCapitalW|ormalCapitalX|ormalCapitalXi|ormalCapitalY|ormalCapitalZ|ormalCapitalZeta|ormalChi|ormalCurlyCapitalUpsilon|ormalCurlyEpsilon|ormalCurlyKappa|ormalCurlyPhi|ormalCurlyPi|ormalCurlyRho|ormalCurlyTheta|ormalD|ormalDelta|ormalDigamma|ormalE|ormalEpsilon|ormalEta|ormalF|ormalFinalSigma|ormalG|ormalGamma|ormalH|ormalI|ormalIota|ormalJ|ormalK|ormalKappa|ormalKoppa|ormalL|ormalLambda|ormalM|ormalMu|ormalN|ormalNu|ormalO|ormalOmega|ormalOmicron|ormalP|ormalPhi|ormalPi|ormalPsi|ormalQ|ormalR|ormalRho|ormalS|ormalSampi|ormalScriptA|ormalScriptB|ormalScriptC|ormalScriptCapitalA|ormalScriptCapitalB|ormalScriptCapitalC|ormalScriptCapitalD|ormalScriptCapitalE|ormalScriptCapitalF|ormalScriptCapitalG|ormalScriptCapitalH|ormalScriptCapitalI|ormalScriptCapitalJ|ormalScriptCapitalK|ormalScriptCapitalL|ormalScriptCapitalM|ormalScriptCapitalN|ormalScriptCapitalO|ormalScriptCapitalP|ormalScriptCapitalQ|ormalScriptCapitalR|ormalScriptCapitalS|ormalScriptCapitalT|ormalScriptCapitalU|ormalScriptCapitalV|ormalScriptCapitalW|ormalScriptCapitalX|ormalScriptCapitalY|ormalScriptCapitalZ|ormalScriptD|ormalScriptE|ormalScriptF|ormalScriptG|ormalScriptH|ormalScriptI|ormalScriptJ|ormalScriptK|ormalScriptL|ormalScriptM|ormalScriptN|ormalScriptO|ormalScriptP|ormalScriptQ|ormalScriptR|ormalScriptS|ormalScriptT|ormalScriptU|ormalScriptV|ormalScriptW|ormalScriptX|ormalScriptY|ormalScriptZ|ormalSigma|ormalStigma|ormalT|ormalTau|ormalTheta|ormalU|ormalUpsilon|ormalV|ormalW|ormalX|ormalXi|ormalY|ormalZ|ormalZeta))\\](?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`\\\\\\[(?:S(?:ystemsModelDelay))\\](?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "\\\\\\[(?:F(?:ormalA|ormalAlpha|ormalB|ormalBeta|ormalC|ormalCapitalA|ormalCapitalAlpha|ormalCapitalB|ormalCapitalBeta|ormalCapitalC|ormalCapitalChi|ormalCapitalD|ormalCapitalDelta|ormalCapitalDigamma|ormalCapitalE|ormalCapitalEpsilon|ormalCapitalEta|ormalCapitalF|ormalCapitalG|ormalCapitalGamma|ormalCapitalH|ormalCapitalI|ormalCapitalIota|ormalCapitalJ|ormalCapitalK|ormalCapitalKappa|ormalCapitalKoppa|ormalCapitalL|ormalCapitalLambda|ormalCapitalM|ormalCapitalMu|ormalCapitalN|ormalCapitalNu|ormalCapitalO|ormalCapitalOmega|ormalCapitalOmicron|ormalCapitalP|ormalCapitalPhi|ormalCapitalPi|ormalCapitalPsi|ormalCapitalQ|ormalCapitalR|ormalCapitalRho|ormalCapitalS|ormalCapitalSampi|ormalCapitalSigma|ormalCapitalStigma|ormalCapitalT|ormalCapitalTau|ormalCapitalTheta|ormalCapitalU|ormalCapitalUpsilon|ormalCapitalV|ormalCapitalW|ormalCapitalX|ormalCapitalXi|ormalCapitalY|ormalCapitalZ|ormalCapitalZeta|ormalChi|ormalCurlyCapitalUpsilon|ormalCurlyEpsilon|ormalCurlyKappa|ormalCurlyPhi|ormalCurlyPi|ormalCurlyRho|ormalCurlyTheta|ormalD|ormalDelta|ormalDigamma|ormalE|ormalEpsilon|ormalEta|ormalF|ormalFinalSigma|ormalG|ormalGamma|ormalH|ormalI|ormalIota|ormalJ|ormalK|ormalKappa|ormalKoppa|ormalL|ormalLambda|ormalM|ormalMu|ormalN|ormalNu|ormalO|ormalOmega|ormalOmicron|ormalP|ormalPhi|ormalPi|ormalPsi|ormalQ|ormalR|ormalRho|ormalS|ormalSampi|ormalScriptA|ormalScriptB|ormalScriptC|ormalScriptCapitalA|ormalScriptCapitalB|ormalScriptCapitalC|ormalScriptCapitalD|ormalScriptCapitalE|ormalScriptCapitalF|ormalScriptCapitalG|ormalScriptCapitalH|ormalScriptCapitalI|ormalScriptCapitalJ|ormalScriptCapitalK|ormalScriptCapitalL|ormalScriptCapitalM|ormalScriptCapitalN|ormalScriptCapitalO|ormalScriptCapitalP|ormalScriptCapitalQ|ormalScriptCapitalR|ormalScriptCapitalS|ormalScriptCapitalT|ormalScriptCapitalU|ormalScriptCapitalV|ormalScriptCapitalW|ormalScriptCapitalX|ormalScriptCapitalY|ormalScriptCapitalZ|ormalScriptD|ormalScriptE|ormalScriptF|ormalScriptG|ormalScriptH|ormalScriptI|ormalScriptJ|ormalScriptK|ormalScriptL|ormalScriptM|ormalScriptN|ormalScriptO|ormalScriptP|ormalScriptQ|ormalScriptR|ormalScriptS|ormalScriptT|ormalScriptU|ormalScriptV|ormalScriptW|ormalScriptX|ormalScriptY|ormalScriptZ|ormalSigma|ormalStigma|ormalT|ormalTau|ormalTheta|ormalU|ormalUpsilon|ormalV|ormalW|ormalX|ormalXi|ormalY|ormalZ|ormalZeta))\\](?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "\\\\\\[(?:S(?:ystemsModelDelay))\\](?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "\\\\\\[(?:D(?:egree))\\](?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "\\\\\\[(?:E(?:xponentialE))\\](?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "\\\\\\[(?:I(?:maginaryI|maginaryJ|nfinity))\\](?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "\\\\\\[(?:P(?:i))\\](?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ }
+ ]
+ },
+ "escaped_characters": {
+ "patterns": [
+ {
+ "match": "\\\\[!%&()*+/@^_` ]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:A(?:kuz|ndy))\\]",
+ "name": "donothighlight.constant.character.escape.undocumented"
+ },
+ {
+ "match": "\\\\\\[(?:C(?:ontinuedFractionK|url))\\]",
+ "name": "donothighlight.constant.character.escape.undocumented"
+ },
+ {
+ "match": "\\\\\\[(?:D(?:ivergence|ivisionSlash))\\]",
+ "name": "donothighlight.constant.character.escape.undocumented"
+ },
+ {
+ "match": "\\\\\\[(?:E(?:xpectationE))\\]",
+ "name": "donothighlight.constant.character.escape.undocumented"
+ },
+ {
+ "match": "\\\\\\[(?:F(?:reeformPrompt))\\]",
+ "name": "donothighlight.constant.character.escape.undocumented"
+ },
+ {
+ "match": "\\\\\\[(?:G(?:radient))\\]",
+ "name": "donothighlight.constant.character.escape.undocumented"
+ },
+ {
+ "match": "\\\\\\[(?:L(?:aplacian))\\]",
+ "name": "donothighlight.constant.character.escape.undocumented"
+ },
+ {
+ "match": "\\\\\\[(?:M(?:inus|oon))\\]",
+ "name": "donothighlight.constant.character.escape.undocumented"
+ },
+ {
+ "match": "\\\\\\[(?:N(?:umberComma))\\]",
+ "name": "donothighlight.constant.character.escape.undocumented"
+ },
+ {
+ "match": "\\\\\\[(?:P(?:ageBreakAbove|ageBreakBelow|robabilityPr))\\]",
+ "name": "donothighlight.constant.character.escape.undocumented"
+ },
+ {
+ "match": "\\\\\\[(?:S(?:pooky|tepperDown|tepperLeft|tepperRight|tepperUp|un))\\]",
+ "name": "donothighlight.constant.character.escape.undocumented"
+ },
+ {
+ "match": "\\\\\\[(?:U(?:nknownGlyph))\\]",
+ "name": "donothighlight.constant.character.escape.undocumented"
+ },
+ {
+ "match": "\\\\\\[(?:V(?:illa))\\]",
+ "name": "donothighlight.constant.character.escape.undocumented"
+ },
+ {
+ "match": "\\\\\\[(?:W(?:olframAlphaPrompt))\\]",
+ "name": "donothighlight.constant.character.escape.undocumented"
+ },
+ {
+ "match": "\\\\\\[(?:C(?:OMPATIBILITYKanjiSpace|OMPATIBILITYNoBreak))\\]",
+ "name": "invalid.illegal.unsupported"
+ },
+ {
+ "match": "\\\\\\[(?:I(?:nlinePart))\\]",
+ "name": "invalid.illegal.unsupported"
+ },
+ {
+ "match": "\\\\\\[(?:A(?:Acute|Bar|Cup|DoubleDot|E|Grave|Hat|Ring|Tilde|leph|liasDelimiter|liasIndicator|lignmentMarker|lpha|ltKey|nd|ngle|ngstrom|pplication|quariusSign|riesSign|scendingEllipsis|utoLeftMatch|utoOperand|utoPlaceholder|utoRightMatch|utoSpace))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:B(?:ackslash|eamedEighthNote|eamedSixteenthNote|ecause|et|eta|lackBishop|lackKing|lackKnight|lackPawn|lackQueen|lackRook|reve|ullet))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:C(?:Acute|Cedilla|Hacek|ancerSign|ap|apitalAAcute|apitalABar|apitalACup|apitalADoubleDot|apitalAE|apitalAGrave|apitalAHat|apitalARing|apitalATilde|apitalAlpha|apitalBeta|apitalCAcute|apitalCCedilla|apitalCHacek|apitalChi|apitalDHacek|apitalDelta|apitalDifferentialD|apitalDigamma|apitalEAcute|apitalEBar|apitalECup|apitalEDoubleDot|apitalEGrave|apitalEHacek|apitalEHat|apitalEpsilon|apitalEta|apitalEth|apitalGamma|apitalIAcute|apitalICup|apitalIDoubleDot|apitalIGrave|apitalIHat|apitalIota|apitalKappa|apitalKoppa|apitalLSlash|apitalLambda|apitalMu|apitalNHacek|apitalNTilde|apitalNu|apitalOAcute|apitalODoubleAcute|apitalODoubleDot|apitalOE|apitalOGrave|apitalOHat|apitalOSlash|apitalOTilde|apitalOmega|apitalOmicron|apitalPhi|apitalPi|apitalPsi|apitalRHacek|apitalRho|apitalSHacek|apitalSampi|apitalSigma|apitalStigma|apitalTHacek|apitalTau|apitalTheta|apitalThorn|apitalUAcute|apitalUDoubleAcute|apitalUDoubleDot|apitalUGrave|apitalUHat|apitalURing|apitalUpsilon|apitalXi|apitalYAcute|apitalZHacek|apitalZeta|apricornSign|edilla|ent|enterDot|enterEllipsis|heckedBox|heckmark|heckmarkedBox|hi|ircleDot|ircleMinus|irclePlus|ircleTimes|lockwiseContourIntegral|loseCurlyDoubleQuote|loseCurlyQuote|loverLeaf|lubSuit|olon|ommandKey|onditioned|ongruent|onjugate|onjugateTranspose|onstantC|ontinuation|ontourIntegral|ontrolKey|oproduct|opyright|ounterClockwiseContourIntegral|ross|ubeRoot|up|upCap|urlyCapitalUpsilon|urlyEpsilon|urlyKappa|urlyPhi|urlyPi|urlyRho|urlyTheta|urrency))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:D(?:Hacek|agger|alet|ash|egree|el|eleteKey|elta|escendingEllipsis|iameter|iamond|iamondSuit|ifferenceDelta|ifferentialD|igamma|irectedEdge|iscreteRatio|iscreteShift|iscretionaryHyphen|iscretionaryLineSeparator|iscretionaryPageBreakAbove|iscretionaryPageBreakBelow|iscretionaryParagraphSeparator|istributed|ivide|ivides|otEqual|otlessI|otlessJ|ottedSquare|oubleContourIntegral|oubleDagger|oubleDot|oubleDownArrow|oubleLeftArrow|oubleLeftRightArrow|oubleLeftTee|oubleLongLeftArrow|oubleLongLeftRightArrow|oubleLongRightArrow|oublePrime|oubleRightArrow|oubleRightTee|oubleStruckA|oubleStruckB|oubleStruckC|oubleStruckCapitalA|oubleStruckCapitalB|oubleStruckCapitalC|oubleStruckCapitalD|oubleStruckCapitalE|oubleStruckCapitalF|oubleStruckCapitalG|oubleStruckCapitalH|oubleStruckCapitalI|oubleStruckCapitalJ|oubleStruckCapitalK|oubleStruckCapitalL|oubleStruckCapitalM|oubleStruckCapitalN|oubleStruckCapitalO|oubleStruckCapitalP|oubleStruckCapitalQ|oubleStruckCapitalR|oubleStruckCapitalS|oubleStruckCapitalT|oubleStruckCapitalU|oubleStruckCapitalV|oubleStruckCapitalW|oubleStruckCapitalX|oubleStruckCapitalY|oubleStruckCapitalZ|oubleStruckD|oubleStruckE|oubleStruckEight|oubleStruckF|oubleStruckFive|oubleStruckFour|oubleStruckG|oubleStruckH|oubleStruckI|oubleStruckJ|oubleStruckK|oubleStruckL|oubleStruckM|oubleStruckN|oubleStruckNine|oubleStruckO|oubleStruckOne|oubleStruckP|oubleStruckQ|oubleStruckR|oubleStruckS|oubleStruckSeven|oubleStruckSix|oubleStruckT|oubleStruckThree|oubleStruckTwo|oubleStruckU|oubleStruckV|oubleStruckW|oubleStruckX|oubleStruckY|oubleStruckZ|oubleStruckZero|oubleUpArrow|oubleUpDownArrow|oubleVerticalBar|oubledGamma|oubledPi|ownArrow|ownArrowBar|ownArrowUpArrow|ownBreve|ownExclamation|ownLeftRightVector|ownLeftTeeVector|ownLeftVector|ownLeftVectorBar|ownPointer|ownQuestion|ownRightTeeVector|ownRightVector|ownRightVectorBar|ownTee|ownTeeArrow))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:E(?:Acute|Bar|Cup|DoubleDot|Grave|Hacek|Hat|arth|ighthNote|lement|llipsis|mptyCircle|mptyDiamond|mptyDownTriangle|mptyRectangle|mptySet|mptySmallCircle|mptySmallSquare|mptySquare|mptyUpTriangle|mptyVerySmallSquare|nterKey|ntityEnd|ntityStart|psilon|qual|qualTilde|quilibrium|quivalent|rrorIndicator|scapeKey|ta|th|uro|xists|xponentialE))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:F(?:iLigature|illedCircle|illedDiamond|illedDownTriangle|illedLeftTriangle|illedRectangle|illedRightTriangle|illedSmallCircle|illedSmallSquare|illedSquare|illedUpTriangle|illedVerySmallSquare|inalSigma|irstPage|ivePointedStar|lLigature|lat|lorin|orAll|ormalA|ormalAlpha|ormalB|ormalBeta|ormalC|ormalCapitalA|ormalCapitalAlpha|ormalCapitalB|ormalCapitalBeta|ormalCapitalC|ormalCapitalChi|ormalCapitalD|ormalCapitalDelta|ormalCapitalDigamma|ormalCapitalE|ormalCapitalEpsilon|ormalCapitalEta|ormalCapitalF|ormalCapitalG|ormalCapitalGamma|ormalCapitalH|ormalCapitalI|ormalCapitalIota|ormalCapitalJ|ormalCapitalK|ormalCapitalKappa|ormalCapitalKoppa|ormalCapitalL|ormalCapitalLambda|ormalCapitalM|ormalCapitalMu|ormalCapitalN|ormalCapitalNu|ormalCapitalO|ormalCapitalOmega|ormalCapitalOmicron|ormalCapitalP|ormalCapitalPhi|ormalCapitalPi|ormalCapitalPsi|ormalCapitalQ|ormalCapitalR|ormalCapitalRho|ormalCapitalS|ormalCapitalSampi|ormalCapitalSigma|ormalCapitalStigma|ormalCapitalT|ormalCapitalTau|ormalCapitalTheta|ormalCapitalU|ormalCapitalUpsilon|ormalCapitalV|ormalCapitalW|ormalCapitalX|ormalCapitalXi|ormalCapitalY|ormalCapitalZ|ormalCapitalZeta|ormalChi|ormalCurlyCapitalUpsilon|ormalCurlyEpsilon|ormalCurlyKappa|ormalCurlyPhi|ormalCurlyPi|ormalCurlyRho|ormalCurlyTheta|ormalD|ormalDelta|ormalDigamma|ormalE|ormalEpsilon|ormalEta|ormalF|ormalFinalSigma|ormalG|ormalGamma|ormalH|ormalI|ormalIota|ormalJ|ormalK|ormalKappa|ormalKoppa|ormalL|ormalLambda|ormalM|ormalMu|ormalN|ormalNu|ormalO|ormalOmega|ormalOmicron|ormalP|ormalPhi|ormalPi|ormalPsi|ormalQ|ormalR|ormalRho|ormalS|ormalSampi|ormalScriptA|ormalScriptB|ormalScriptC|ormalScriptCapitalA|ormalScriptCapitalB|ormalScriptCapitalC|ormalScriptCapitalD|ormalScriptCapitalE|ormalScriptCapitalF|ormalScriptCapitalG|ormalScriptCapitalH|ormalScriptCapitalI|ormalScriptCapitalJ|ormalScriptCapitalK|ormalScriptCapitalL|ormalScriptCapitalM|ormalScriptCapitalN|ormalScriptCapitalO|ormalScriptCapitalP|ormalScriptCapitalQ|ormalScriptCapitalR|ormalScriptCapitalS|ormalScriptCapitalT|ormalScriptCapitalU|ormalScriptCapitalV|ormalScriptCapitalW|ormalScriptCapitalX|ormalScriptCapitalY|ormalScriptCapitalZ|ormalScriptD|ormalScriptE|ormalScriptF|ormalScriptG|ormalScriptH|ormalScriptI|ormalScriptJ|ormalScriptK|ormalScriptL|ormalScriptM|ormalScriptN|ormalScriptO|ormalScriptP|ormalScriptQ|ormalScriptR|ormalScriptS|ormalScriptT|ormalScriptU|ormalScriptV|ormalScriptW|ormalScriptX|ormalScriptY|ormalScriptZ|ormalSigma|ormalStigma|ormalT|ormalTau|ormalTheta|ormalU|ormalUpsilon|ormalV|ormalW|ormalX|ormalXi|ormalY|ormalZ|ormalZeta|reakedSmiley|unction))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:G(?:amma|eminiSign|imel|othicA|othicB|othicC|othicCapitalA|othicCapitalB|othicCapitalC|othicCapitalD|othicCapitalE|othicCapitalF|othicCapitalG|othicCapitalH|othicCapitalI|othicCapitalJ|othicCapitalK|othicCapitalL|othicCapitalM|othicCapitalN|othicCapitalO|othicCapitalP|othicCapitalQ|othicCapitalR|othicCapitalS|othicCapitalT|othicCapitalU|othicCapitalV|othicCapitalW|othicCapitalX|othicCapitalY|othicCapitalZ|othicD|othicE|othicEight|othicF|othicFive|othicFour|othicG|othicH|othicI|othicJ|othicK|othicL|othicM|othicN|othicNine|othicO|othicOne|othicP|othicQ|othicR|othicS|othicSeven|othicSix|othicT|othicThree|othicTwo|othicU|othicV|othicW|othicX|othicY|othicZ|othicZero|rayCircle|raySquare|reaterEqual|reaterEqualLess|reaterFullEqual|reaterGreater|reaterLess|reaterSlantEqual|reaterTilde))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:H(?:Bar|acek|appySmiley|eartSuit|ermitianConjugate|orizontalLine|umpDownHump|umpEqual|yphen))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:I(?:Acute|Cup|DoubleDot|Grave|Hat|maginaryI|maginaryJ|mplicitPlus|mplies|ndentingNewLine|nfinity|ntegral|ntersection|nvisibleApplication|nvisibleComma|nvisiblePostfixScriptBase|nvisiblePrefixScriptBase|nvisibleSpace|nvisibleTimes|ota))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:J(?:upiter))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:K(?:appa|ernelIcon|eyBar|oppa))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:L(?:Slash|ambda|astPage|eftAngleBracket|eftArrow|eftArrowBar|eftArrowRightArrow|eftAssociation|eftBracketingBar|eftCeiling|eftDoubleBracket|eftDoubleBracketingBar|eftDownTeeVector|eftDownVector|eftDownVectorBar|eftFloor|eftGuillemet|eftModified|eftPointer|eftRightArrow|eftRightVector|eftSkeleton|eftTee|eftTeeArrow|eftTeeVector|eftTriangle|eftTriangleBar|eftTriangleEqual|eftUpDownVector|eftUpTeeVector|eftUpVector|eftUpVectorBar|eftVector|eftVectorBar|eoSign|essEqual|essEqualGreater|essFullEqual|essGreater|essLess|essSlantEqual|essTilde|etterSpace|ibraSign|ightBulb|imit|ineSeparator|ongDash|ongEqual|ongLeftArrow|ongLeftRightArrow|ongRightArrow|owerLeftArrow|owerRightArrow))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:M(?:ars|athematicaIcon|axLimit|easuredAngle|ediumSpace|ercury|ho|icro|inLimit|inusPlus|od1Key|od2Key|u))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:N(?:Hacek|Tilde|and|atural|egativeMediumSpace|egativeThickSpace|egativeThinSpace|egativeVeryThinSpace|eptune|estedGreaterGreater|estedLessLess|eutralSmiley|ewLine|oBreak|onBreakingSpace|or|ot|otCongruent|otCupCap|otDoubleVerticalBar|otElement|otEqual|otEqualTilde|otExists|otGreater|otGreaterEqual|otGreaterFullEqual|otGreaterGreater|otGreaterLess|otGreaterSlantEqual|otGreaterTilde|otHumpDownHump|otHumpEqual|otLeftTriangle|otLeftTriangleBar|otLeftTriangleEqual|otLess|otLessEqual|otLessFullEqual|otLessGreater|otLessLess|otLessSlantEqual|otLessTilde|otNestedGreaterGreater|otNestedLessLess|otPrecedes|otPrecedesEqual|otPrecedesSlantEqual|otPrecedesTilde|otReverseElement|otRightTriangle|otRightTriangleBar|otRightTriangleEqual|otSquareSubset|otSquareSubsetEqual|otSquareSuperset|otSquareSupersetEqual|otSubset|otSubsetEqual|otSucceeds|otSucceedsEqual|otSucceedsSlantEqual|otSucceedsTilde|otSuperset|otSupersetEqual|otTilde|otTildeEqual|otTildeFullEqual|otTildeTilde|otVerticalBar|u|ull|umberSign))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:O(?:Acute|DoubleAcute|DoubleDot|E|Grave|Hat|Slash|Tilde|mega|micron|penCurlyDoubleQuote|penCurlyQuote|ptionKey|r|verBrace|verBracket|verParenthesis))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:P(?:aragraph|aragraphSeparator|artialD|ermutationProduct|erpendicular|hi|i|iecewise|iscesSign|laceholder|lusMinus|luto|recedes|recedesEqual|recedesSlantEqual|recedesTilde|rime|roduct|roportion|roportional|si))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:Q(?:uarterNote))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:R(?:Hacek|awAmpersand|awAt|awBackquote|awBackslash|awColon|awComma|awDash|awDollar|awDot|awDoubleQuote|awEqual|awEscape|awExclamation|awGreater|awLeftBrace|awLeftBracket|awLeftParenthesis|awLess|awNumberSign|awPercent|awPlus|awQuestion|awQuote|awReturn|awRightBrace|awRightBracket|awRightParenthesis|awSemicolon|awSlash|awSpace|awStar|awTab|awTilde|awUnderscore|awVerticalBar|awWedge|egisteredTrademark|eturnIndicator|eturnKey|everseDoublePrime|everseElement|everseEquilibrium|eversePrime|everseUpEquilibrium|ho|ightAngle|ightAngleBracket|ightArrow|ightArrowBar|ightArrowLeftArrow|ightAssociation|ightBracketingBar|ightCeiling|ightDoubleBracket|ightDoubleBracketingBar|ightDownTeeVector|ightDownVector|ightDownVectorBar|ightFloor|ightGuillemet|ightModified|ightPointer|ightSkeleton|ightTee|ightTeeArrow|ightTeeVector|ightTriangle|ightTriangleBar|ightTriangleEqual|ightUpDownVector|ightUpTeeVector|ightUpVector|ightUpVectorBar|ightVector|ightVectorBar|oundImplies|oundSpaceIndicator|ule|uleDelayed|upee))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:S(?:Hacek|Z|adSmiley|agittariusSign|ampi|aturn|corpioSign|criptA|criptB|criptC|criptCapitalA|criptCapitalB|criptCapitalC|criptCapitalD|criptCapitalE|criptCapitalF|criptCapitalG|criptCapitalH|criptCapitalI|criptCapitalJ|criptCapitalK|criptCapitalL|criptCapitalM|criptCapitalN|criptCapitalO|criptCapitalP|criptCapitalQ|criptCapitalR|criptCapitalS|criptCapitalT|criptCapitalU|criptCapitalV|criptCapitalW|criptCapitalX|criptCapitalY|criptCapitalZ|criptD|criptDotlessI|criptDotlessJ|criptE|criptEight|criptF|criptFive|criptFour|criptG|criptH|criptI|criptJ|criptK|criptL|criptM|criptN|criptNine|criptO|criptOne|criptP|criptQ|criptR|criptS|criptSeven|criptSix|criptT|criptThree|criptTwo|criptU|criptV|criptW|criptX|criptY|criptZ|criptZero|ection|electionPlaceholder|hah|harp|hiftKey|hortDownArrow|hortLeftArrow|hortRightArrow|hortUpArrow|igma|ixPointedStar|keletonIndicator|mallCircle|paceIndicator|paceKey|padeSuit|panFromAbove|panFromBoth|panFromLeft|phericalAngle|qrt|quare|quareIntersection|quareSubset|quareSubsetEqual|quareSuperset|quareSupersetEqual|quareUnion|tar|terling|tigma|ubset|ubsetEqual|ucceeds|ucceedsEqual|ucceedsSlantEqual|ucceedsTilde|uchThat|um|uperset|upersetEqual|ystemEnterKey|ystemsModelDelay))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:T(?:Hacek|abKey|au|aurusSign|ensorProduct|ensorWedge|herefore|heta|hickSpace|hinSpace|horn|ilde|ildeEqual|ildeFullEqual|ildeTilde|imes|rademark|ranspose|ripleDot|woWayRule))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:U(?:Acute|DoubleAcute|DoubleDot|Grave|Hat|Ring|nderBrace|nderBracket|nderParenthesis|ndirectedEdge|nion|nionPlus|pArrow|pArrowBar|pArrowDownArrow|pDownArrow|pEquilibrium|pPointer|pTee|pTeeArrow|pperLeftArrow|pperRightArrow|psilon|ranus))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:V(?:ectorGreater|ectorGreaterEqual|ectorLess|ectorLessEqual|ee|enus|erticalBar|erticalEllipsis|erticalLine|erticalSeparator|erticalTilde|eryThinSpace|irgoSign))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:W(?:arningSign|atchIcon|edge|eierstrassP|hiteBishop|hiteKing|hiteKnight|hitePawn|hiteQueen|hiteRook|olf|olframLanguageLogo|olframLanguageLogoCircle))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:X(?:i|nor|or))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:Y(?:Acute|DoubleDot|en))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:Z(?:Hacek|eta))\\]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\[(?:[$[:alpha:]][$[:alnum:]]*)?\\]?",
+ "name": "invalid.illegal.BadLongName"
+ },
+ {
+ "match": "\\\\(?:[$[:alpha:]][$[:alnum:]]*)\\]",
+ "name": "invalid.illegal.BadLongName"
+ },
+ {
+ "match": "\\\\:\\h{4}",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\:\\h{1,3}",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "\\\\\\.\\h{2}",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\.\\h{1}",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "\\\\\\|0\\h{5}",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\|10\\h{4}",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\\\|\\h{1,6}",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "\\\\[0-7]{3}",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "match": "\\\\[0-7]{1,2}",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "\\\\$",
+ "name": "donothighlight.constant.character.escape punctuation.separator.continuation"
+ },
+ {
+ "match": "\\\\.",
+ "name": "invalid.illegal"
+ }
+ ]
+ },
+ "string_escaped_characters": {
+ "patterns": [
+ {
+ "match": "\\\\[bfnrt\\\"\\\\<>]",
+ "name": "donothighlight.constant.character.escape"
+ },
+ {
+ "include": "#escaped_characters"
+ }
+ ]
+ },
+ "literals": {
+ "patterns": [
+ {
+ "include": "#numbers"
+ },
+ {
+ "include": "#strings"
+ }
+ ]
+ },
+ "numbers": {
+ "patterns": [
+ {
+ "match": "2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))(?:\\*\\^(?:-|\\+)?+\\d+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))\\*\\^",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)``",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)(?:\\*\\^(?:-|\\+)?+\\d+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)\\*\\^",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)(?:\\*\\^(?:-|\\+)?+\\d+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)\\*\\^",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "2\\^\\^(?:(?:0|1)+(?:\\.(?!\\.)(?:0|1)*)?+|\\.(?!\\.)(?:0|1)+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "2\\^\\^",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))(?:\\*\\^(?:-|\\+)?+\\d+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))\\*\\^",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)``",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)(?:\\*\\^(?:-|\\+)?+\\d+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)\\*\\^",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)(?:\\*\\^(?:-|\\+)?+\\d+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)\\*\\^",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "8\\^\\^(?:(?:0|1|2|3|4|5|6|7)+(?:\\.(?!\\.)(?:0|1|2|3|4|5|6|7)*)?+|\\.(?!\\.)(?:0|1|2|3|4|5|6|7)+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "8\\^\\^",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))(?:\\*\\^(?:-|\\+)?+\\d+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))\\*\\^",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)``",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)(?:\\*\\^(?:-|\\+)?+\\d+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)\\*\\^",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)(?:\\*\\^(?:-|\\+)?+\\d+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)\\*\\^",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "16\\^\\^(?:\\h+(?:\\.(?!\\.)\\h*)?+|\\.(?!\\.)\\h+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "16\\^\\^",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))(?:\\*\\^(?:-|\\+)?+\\d+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))\\*\\^",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)(?:``(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)))",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)``",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)(?:\\*\\^(?:-|\\+)?+\\d+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)\\*\\^",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)(?:`(?:(?:-|\\+)?+(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+))?+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)(?:\\*\\^(?:-|\\+)?+\\d+)",
+ "name": "constant.numeric.wolfram"
+ },
+ {
+ "match": "(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)\\*\\^",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "(?:\\d+(?:\\.(?!\\.)\\d*)?+|\\.(?!\\.)\\d+)",
+ "name": "constant.numeric.wolfram"
+ }
+ ]
+ },
+ "strings": {
+ "patterns": [
+ {
+ "name": "string.quoted.double",
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#string_escaped_characters"
+ }
+ ]
+ }
+ ]
+ },
+ "stringifying-operators": {
+ "patterns": [
+ {
+ "match": "(>>>)(?=\\s*\")",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.PutAppend.wolfram"
+ }
+ }
+ },
+ {
+ "match": "(>>>)\\s*(\\w+)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.PutAppend.wolfram"
+ },
+ "2": {
+ "name": "string.unquoted.wolfram"
+ }
+ }
+ },
+ {
+ "match": ">>>",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "(::)(?=\\s*\")",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.MessageName.wolfram"
+ }
+ }
+ },
+ {
+ "match": "(::)([[:alpha:]][[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.MessageName.wolfram"
+ },
+ "2": {
+ "name": "string.unquoted.wolfram"
+ }
+ }
+ },
+ {
+ "match": "::",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "(<<)(?=\\s*\")",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.Get.wolfram"
+ }
+ }
+ },
+ {
+ "match": "(<<)\\s*([`[:alpha:]][`[:alnum:]]*)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.Get.wolfram"
+ },
+ "2": {
+ "name": "string.unquoted.wolfram"
+ }
+ }
+ },
+ {
+ "match": "<<",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "(>>)(?=\\s*\")",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.Put.wolfram"
+ }
+ }
+ },
+ {
+ "match": "(>>)\\s*(\\w*)",
+ "captures": {
+ "1": {
+ "name": "keyword.operator.Put.wolfram"
+ },
+ "2": {
+ "name": "string.unquoted.wolfram"
+ }
+ }
+ },
+ {
+ "match": ">>",
+ "name": "invalid.illegal"
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "match": "(?:\\^:=)",
+ "name": "keyword.operator.assignment.UpSetDelayed.wolfram"
+ },
+ {
+ "match": "(?:\\^:)",
+ "name": "invalid.illegal"
+ },
+ {
+ "match": "(?:===)",
+ "name": "keyword.operator.SameQ.wolfram"
+ },
+ {
+ "match": "(?:=!=|\\.\\.\\.|//\\.|@@@|<->|//@)",
+ "name": "keyword.operator.wolfram"
+ },
+ {
+ "match": "(?:\\|->)",
+ "name": "keyword.operator.Function.wolfram"
+ },
+ {
+ "match": "(?://=)",
+ "name": "keyword.operator.assignment.ApplyTo.wolfram"
+ },
+ {
+ "match": "(?:--|\\+\\+)",
+ "name": "keyword.operator.arithmetic.wolfram"
+ },
+ {
+ "match": "(?:\\|\\||&&)",
+ "name": "keyword.operator.logical.wolfram"
+ },
+ {
+ "match": "(?::=)",
+ "name": "keyword.operator.assignment.SetDelayed.wolfram"
+ },
+ {
+ "match": "(?:\\^=)",
+ "name": "keyword.operator.assignment.UpSet.wolfram"
+ },
+ {
+ "match": "(?:/=)",
+ "name": "keyword.operator.assignment.DivideBy.wolfram"
+ },
+ {
+ "match": "(?:\\+=)",
+ "name": "keyword.operator.assignment.AddTo.wolfram"
+ },
+ {
+ "match": "(?:=\\s+\\.(?![0-9]))",
+ "name": "invalid.whitespace.Unset.wolfram"
+ },
+ {
+ "match": "(?:=\\.(?![0-9]))",
+ "name": "keyword.operator.assignment.Unset.wolfram"
+ },
+ {
+ "match": "(?:\\*=)",
+ "name": "keyword.operator.assignment.TimesBy.wolfram"
+ },
+ {
+ "match": "(?:-=)",
+ "name": "keyword.operator.assignment.SubtractFrom.wolfram"
+ },
+ {
+ "match": "(?:/:)",
+ "name": "keyword.operator.assignment.Tag.wolfram"
+ },
+ {
+ "match": "(?:;;)$",
+ "name": "invalid.endofline.Span.wolfram"
+ },
+ {
+ "match": "(?:;;)",
+ "name": "keyword.operator.Span.wolfram"
+ },
+ {
+ "match": "(?:!=)",
+ "name": "keyword.operator.Unequal.wolfram"
+ },
+ {
+ "match": "(?:==)",
+ "name": "keyword.operator.Equal.wolfram"
+ },
+ {
+ "match": "(?:!!)",
+ "name": "keyword.operator.BangBang.wolfram"
+ },
+ {
+ "match": "(?:\\?\\?)",
+ "name": "invalid.illegal.Information.wolfram"
+ },
+ {
+ "match": "(?:<=|>=|\\.\\.|:>|<>|->|/@|/;|/\\.|//|/\\*|@@|@\\*|~~|\\*\\*)",
+ "name": "keyword.operator.wolfram"
+ },
+ {
+ "match": "(?:-|\\+|/|\\*)",
+ "name": "keyword.operator.arithmetic.wolfram"
+ },
+ {
+ "match": "(?:=)",
+ "name": "keyword.operator.assignment.Set.wolfram"
+ },
+ {
+ "match": "(?:<)",
+ "name": "keyword.operator.Less.wolfram"
+ },
+ {
+ "match": "(?:\\|)",
+ "name": "keyword.operator.Alternatives.wolfram"
+ },
+ {
+ "match": "(?:!)",
+ "name": "keyword.operator.Bang.wolfram"
+ },
+ {
+ "match": "(?:;)",
+ "name": "keyword.operator.CompoundExpression.wolfram punctuation.terminator"
+ },
+ {
+ "match": "(?:,)",
+ "name": "keyword.operator.Comma.wolfram punctuation.separator"
+ },
+ {
+ "match": "^(?:\\?)",
+ "name": "invalid.startofline.Information.wolfram"
+ },
+ {
+ "match": "(?:\\?)",
+ "name": "keyword.operator.PatternTest.wolfram"
+ },
+ {
+ "match": "(?:')",
+ "name": "keyword.operator.Derivative.wolfram"
+ },
+ {
+ "match": "(?:&)",
+ "name": "keyword.operator.Function.wolfram"
+ },
+ {
+ "match": "(?:>|\\^|\\.|:|@|~)",
+ "name": "keyword.operator.wolfram"
+ }
+ ]
+ },
+ "symbols": {
+ "patterns": [
+ {
+ "match": "System`(?:A(?:ASTriangle|PIFunction|RCHProcess|RIMAProcess|RMAProcess|RProcess|SATriangle|belianGroup|bort|bortKernels|bortProtect|bs|bsArg|bsArgPlot|bsoluteCorrelation|bsoluteCorrelationFunction|bsoluteCurrentValue|bsoluteDashing|bsoluteFileName|bsoluteOptions|bsolutePointSize|bsoluteThickness|bsoluteTime|bsoluteTiming|ccountingForm|ccumulate|ccuracy|cousticAbsorbingValue|cousticImpedanceValue|cousticNormalVelocityValue|cousticPDEComponent|cousticPressureCondition|cousticRadiationValue|cousticSoundHardValue|cousticSoundSoftCondition|ctionMenu|ctivate|cyclicGraphQ|ddSides|ddTo|ddUsers|djacencyGraph|djacencyList|djacencyMatrix|djacentMeshCells|djugate|djustTimeSeriesForecast|djustmentBox|dministrativeDivisionData|ffineHalfSpace|ffineSpace|ffineStateSpaceModel|ffineTransform|irPressureData|irSoundAttenuation|irTemperatureData|ircraftData|irportData|iryAi|iryAiPrime|iryAiZero|iryBi|iryBiPrime|iryBiZero|lgebraicIntegerQ|lgebraicNumber|lgebraicNumberDenominator|lgebraicNumberNorm|lgebraicNumberPolynomial|lgebraicNumberTrace|lgebraicUnitQ|llTrue|lphaChannel|lphabet|lphabeticOrder|lphabeticSort|lternatingFactorial|lternatingGroup|lternatives|mbientLight|mbiguityList|natomyData|natomyPlot3D|natomyStyling|nd|ndersonDarlingTest|ngerJ|ngleBracket|nglePath|nglePath3D|ngleVector|ngularGauge|nimate|nimator|nnotate|nnotation|nnotationDelete|nnotationKeys|nnotationValue|nnuity|nnuityDue|nnulus|nomalyDetection|nomalyDetectorFunction|ntihermitian|ntihermitianMatrixQ|ntisymmetric|ntisymmetricMatrixQ|ntonyms|nyOrder|nySubset|nyTrue|part|partSquareFree|ppellF1|ppend|ppendTo|pply|pplySides|pplyTo|rcCos|rcCosh|rcCot|rcCoth|rcCsc|rcCsch|rcCurvature|rcLength|rcSec|rcSech|rcSin|rcSinDistribution|rcSinh|rcTan|rcTanh|rea|rg|rgMax|rgMin|rgumentsOptions|rithmeticGeometricMean|rray|rrayComponents|rrayDepth|rrayFilter|rrayFlatten|rrayMesh|rrayPad|rrayPlot|rrayPlot3D|rrayQ|rrayResample|rrayReshape|rrayRules|rrays|rrow|rrowheads|ssert|ssociateTo|ssociation|ssociationMap|ssociationQ|ssociationThread|ssuming|symptotic|symptoticDSolveValue|symptoticEqual|symptoticEquivalent|symptoticExpectation|symptoticGreater|symptoticGreaterEqual|symptoticIntegrate|symptoticLess|symptoticLessEqual|symptoticOutputTracker|symptoticProbability|symptoticProduct|symptoticRSolveValue|symptoticSolve|symptoticSum|tomQ|ttributes|udio|udioAmplify|udioBlockMap|udioCapture|udioChannelCombine|udioChannelMix|udioChannelSeparate|udioChannels|udioData|udioDelay|udioDelete|udioDistance|udioFade|udioFrequencyShift|udioGenerator|udioInsert|udioIntervals|udioJoin|udioLength|udioLocalMeasurements|udioLoudness|udioMeasurements|udioNormalize|udioOverlay|udioPad|udioPan|udioPartition|udioPitchShift|udioPlot|udioQ|udioReplace|udioResample|udioReverb|udioReverse|udioSampleRate|udioSpectralMap|udioSpectralTransformation|udioSplit|udioTimeStretch|udioTrim|udioType|ugmentedPolyhedron|ugmentedSymmetricPolynomial|uthenticationDialog|utoRefreshed|utoSubmitting|utocorrelationTest))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:B(?:SplineBasis|SplineCurve|SplineFunction|SplineSurface|abyMonsterGroupB|ackslash|all|and|andpassFilter|andstopFilter|arChart|arChart3D|arLegend|arabasiAlbertGraphDistribution|arcodeImage|arcodeRecognize|aringhausHenzeTest|arlowProschanImportance|arnesG|artlettHannWindow|artlettWindow|aseDecode|aseEncode|aseForm|atesDistribution|attleLemarieWavelet|ecause|eckmannDistribution|eep|egin|eginDialogPacket|eginPackage|ellB|ellY|enfordDistribution|eniniDistribution|enktanderGibratDistribution|enktanderWeibullDistribution|ernoulliB|ernoulliDistribution|ernoulliGraphDistribution|ernoulliProcess|ernsteinBasis|esselFilterModel|esselI|esselJ|esselJZero|esselK|esselY|esselYZero|eta|etaBinomialDistribution|etaDistribution|etaNegativeBinomialDistribution|etaPrimeDistribution|etaRegularized|etween|etweennessCentrality|eveledPolyhedron|ezierCurve|ezierFunction|ilateralFilter|ilateralLaplaceTransform|ilateralZTransform|inCounts|inLists|inarize|inaryDeserialize|inaryDistance|inaryImageQ|inaryRead|inaryReadList|inarySerialize|inaryWrite|inomial|inomialDistribution|inomialProcess|inormalDistribution|iorthogonalSplineWavelet|ipartiteGraphQ|iquadraticFilterModel|irnbaumImportance|irnbaumSaundersDistribution|itAnd|itClear|itGet|itLength|itNot|itOr|itSet|itShiftLeft|itShiftRight|itXor|iweightLocation|iweightMidvariance|lackmanHarrisWindow|lackmanNuttallWindow|lackmanWindow|lank|lankNullSequence|lankSequence|lend|lock|lockMap|lockRandom|lomqvistBeta|lomqvistBetaTest|lur|lurring|odePlot|ohmanWindow|oole|ooleanConsecutiveFunction|ooleanConvert|ooleanCountingFunction|ooleanFunction|ooleanGraph|ooleanMaxterms|ooleanMinimize|ooleanMinterms|ooleanQ|ooleanRegion|ooleanTable|ooleanVariables|orderDimensions|orelTannerDistribution|ottomHatTransform|oundaryDiscretizeGraphics|oundaryDiscretizeRegion|oundaryMesh|oundaryMeshRegion|oundaryMeshRegionQ|oundedRegionQ|oundingRegion|oxData|oxMatrix|oxObject|oxWhiskerChart|racketingBar|rayCurtisDistance|readthFirstScan|reak|ridgeData|rightnessEqualize|roadcastStationData|rownForsytheTest|rownianBridgeProcess|ubbleChart|ubbleChart3D|uckyballGraph|uildingData|ulletGauge|usinessDayQ|utterflyGraph|utterworthFilterModel|utton|uttonBar|uttonBox|uttonNotebook|yteArray|yteArrayFormat|yteArrayFormatQ|yteArrayQ|yteArrayToString|yteCount))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:C(?:|DF|DFDeploy|DFWavelet|Form|MYKColor|SGRegion|SGRegionQ|SGRegionTree|alendarConvert|alendarData|allPacket|allout|anberraDistance|ancel|ancelButton|andlestickChart|anonicalGraph|anonicalName|anonicalWarpingCorrespondence|anonicalWarpingDistance|anonicalizePolygon|anonicalizePolyhedron|anonicalizeRegion|antorMesh|antorStaircase|ap|apForm|apitalDifferentialD|apitalize|apsuleShape|aputoD|arlemanLinearize|arlsonRC|arlsonRD|arlsonRE|arlsonRF|arlsonRG|arlsonRJ|arlsonRK|arlsonRM|armichaelLambda|aseSensitive|ases|ashflow|asoratian|atalanNumber|atch|atenate|auchyDistribution|auchyMatrix|auchyWindow|ayleyGraph|eiling|ell|ellGroup|ellGroupData|ellObject|ellPrint|ells|ellularAutomaton|ensoredDistribution|ensoring|enterArray|enterDot|enteredInterval|entralFeature|entralMoment|entralMomentGeneratingFunction|epstrogram|epstrogramArray|epstrumArray|hampernowneNumber|hanVeseBinarize|haracterCounts|haracterName|haracterRange|haracteristicFunction|haracteristicPolynomial|haracters|hebyshev1FilterModel|hebyshev2FilterModel|hebyshevT|hebyshevU|heck|heckAbort|heckArguments|heckbox|heckboxBar|hemicalData|hessboardDistance|hiDistribution|hiSquareDistribution|hineseRemainder|hoiceButtons|hoiceDialog|holeskyDecomposition|hop|hromaticPolynomial|hromaticityPlot|hromaticityPlot3D|ircle|ircleDot|ircleMinus|irclePlus|irclePoints|ircleThrough|ircleTimes|irculantGraph|ircularArcThrough|ircularOrthogonalMatrixDistribution|ircularQuaternionMatrixDistribution|ircularRealMatrixDistribution|ircularSymplecticMatrixDistribution|ircularUnitaryMatrixDistribution|ircumsphere|ityData|lassifierFunction|lassifierMeasurements|lassifierMeasurementsObject|lassify|lear|learAll|learAttributes|learCookies|learPermissions|learSystemCache|lebschGordan|lickPane|lickToCopy|lip|lock|lockGauge|lose|loseKernels|losenessCentrality|losing|loudAccountData|loudConnect|loudDeploy|loudDirectory|loudDisconnect|loudEvaluate|loudExport|loudFunction|loudGet|loudImport|loudLoggingData|loudObject|loudObjects|loudPublish|loudPut|loudSave|loudShare|loudSubmit|loudSymbol|loudUnshare|lusterClassify|lusteringComponents|lusteringMeasurements|lusteringTree|oefficient|oefficientArrays|oefficientList|oefficientRules|oifletWavelet|ollect|ollinearPoints|olon|olorBalance|olorCombine|olorConvert|olorData|olorDataFunction|olorDetect|olorDistance|olorNegate|olorProfileData|olorQ|olorQuantize|olorReplace|olorSeparate|olorSetter|olorSlider|olorToneMapping|olorize|olorsNear|olumn|ometData|ommonName|ommonUnits|ommonest|ommonestFilter|ommunityGraphPlot|ompanyData|ompatibleUnitQ|ompile|ompiledFunction|omplement|ompleteGraph|ompleteGraphQ|ompleteIntegral|ompleteKaryTree|omplex|omplexArrayPlot|omplexContourPlot|omplexExpand|omplexListPlot|omplexPlot|omplexPlot3D|omplexRegionPlot|omplexStreamPlot|omplexVectorPlot|omponentMeasurements|omposeList|omposeSeries|ompositeQ|omposition|ompoundElement|ompoundExpression|ompoundPoissonDistribution|ompoundPoissonProcess|ompoundRenewalProcess|ompress|oncaveHullMesh|ondition|onditionalExpression|onditioned|one|onfirm|onfirmAssert|onfirmBy|onfirmMatch|onformAudio|onformImages|ongruent|onicGradientFilling|onicHullRegion|onicOptimization|onjugate|onjugateTranspose|onjunction|onnectLibraryCallbackFunction|onnectedComponents|onnectedGraphComponents|onnectedGraphQ|onnectedMeshComponents|onnesWindow|onoverTest|onservativeConvectionPDETerm|onstantArray|onstantImage|onstantRegionQ|onstellationData|onstruct|ontainsAll|ontainsAny|ontainsExactly|ontainsNone|ontainsOnly|ontext|ontextToFileName|ontexts|ontinue|ontinuedFraction|ontinuedFractionK|ontinuousMarkovProcess|ontinuousTask|ontinuousTimeModelQ|ontinuousWaveletData|ontinuousWaveletTransform|ontourDetect|ontourPlot|ontourPlot3D|ontraharmonicMean|ontrol|ontrolActive|ontrollabilityGramian|ontrollabilityMatrix|ontrollableDecomposition|ontrollableModelQ|ontrollerInformation|ontrollerManipulate|ontrollerState|onvectionPDETerm|onvergents|onvexHullMesh|onvexHullRegion|onvexOptimization|onvexPolygonQ|onvexPolyhedronQ|onvexRegionQ|onvolve|onwayGroupCo1|onwayGroupCo2|onwayGroupCo3|oordinateBoundingBox|oordinateBoundingBoxArray|oordinateBounds|oordinateBoundsArray|oordinateChartData|oordinateTransform|oordinateTransformData|oplanarPoints|oprimeQ|oproduct|opulaDistribution|opyDatabin|opyDirectory|opyFile|opyToClipboard|oreNilpotentDecomposition|ornerFilter|orrelation|orrelationDistance|orrelationFunction|orrelationTest|os|osIntegral|osh|oshIntegral|osineDistance|osineWindow|ot|oth|oulombF|oulombG|oulombH1|oulombH2|ount|ountDistinct|ountDistinctBy|ountRoots|ountryData|ounts|ountsBy|ovariance|ovarianceFunction|oxIngersollRossProcess|oxModel|oxModelFit|oxianDistribution|ramerVonMisesTest|reateArchive|reateDatabin|reateDialog|reateDirectory|reateDocument|reateFile|reateManagedLibraryExpression|reateNotebook|reatePacletArchive|reatePalette|reatePermissionsGroup|reateUUID|reateWindow|riticalSection|riticalityFailureImportance|riticalitySuccessImportance|ross|rossMatrix|rossingCount|rossingDetect|rossingPolygon|sc|sch|ube|ubeRoot|uboid|umulant|umulantGeneratingFunction|umulativeFeatureImpactPlot|up|upCap|url|urrencyConvert|urrentDate|urrentImage|urrentValue|urvatureFlowFilter|ycleGraph|ycleIndexPolynomial|ycles|yclicGroup|yclotomic|ylinder|ylindricalDecomposition|ylindricalDecompositionFunction))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:D(?:|Eigensystem|Eigenvalues|GaussianWavelet|MSList|MSString|Solve|SolveValue|agumDistribution|amData|amerauLevenshteinDistance|arker|ashing|ataDistribution|atabin|atabinAdd|atabinUpload|atabins|ataset|ateBounds|ateDifference|ateHistogram|ateList|ateListLogPlot|ateListPlot|ateListStepPlot|ateObject|ateObjectQ|ateOverlapsQ|atePattern|atePlus|ateRange|ateScale|ateSelect|ateString|ateValue|ateWithinQ|ated|atedUnit|aubechiesWavelet|avisDistribution|awsonF|ayCount|ayHemisphere|ayMatchQ|ayName|ayNightTerminator|ayPlus|ayRange|ayRound|aylightQ|eBruijnGraph|eBruijnSequence|ecapitalize|ecimalForm|eclarePackage|ecompose|ecrement|ecrypt|edekindEta|eepSpaceProbeData|efault|efaultButton|efaultValues|efer|efineInputStreamMethod|efineOutputStreamMethod|efineResourceFunction|efinition|egreeCentrality|egreeGraphDistribution|el|elaunayMesh|elayed|elete|eleteAdjacentDuplicates|eleteAnomalies|eleteBorderComponents|eleteCases|eleteDirectory|eleteDuplicates|eleteDuplicatesBy|eleteFile|eleteMissing|eleteObject|eletePermissionsKey|eleteSmallComponents|eleteStopwords|elimitedSequence|endrogram|enominator|ensityHistogram|ensityPlot|ensityPlot3D|eploy|epth|epthFirstScan|erivative|erivativeFilter|erivativePDETerm|esignMatrix|et|eviceClose|eviceConfigure|eviceExecute|eviceExecuteAsynchronous|eviceObject|eviceOpen|eviceRead|eviceReadBuffer|eviceReadLatest|eviceReadList|eviceReadTimeSeries|eviceStreams|eviceWrite|eviceWriteBuffer|evices|iagonal|iagonalMatrix|iagonalMatrixQ|iagonalizableMatrixQ|ialog|ialogInput|ialogNotebook|ialogReturn|iamond|iamondMatrix|iceDissimilarity|ictionaryLookup|ictionaryWordQ|ifferenceDelta|ifferenceQuotient|ifferenceRoot|ifferenceRootReduce|ifferences|ifferentialD|ifferentialRoot|ifferentialRootReduce|ifferentiatorFilter|iffusionPDETerm|igitCount|igitQ|ihedralAngle|ihedralGroup|ilation|imensionReduce|imensionReducerFunction|imensionReduction|imensionalCombinations|imensionalMeshComponents|imensions|iracComb|iracDelta|irectedEdge|irectedGraph|irectedGraphQ|irectedInfinity|irectionalLight|irective|irectory|irectoryName|irectoryQ|irectoryStack|irichletBeta|irichletCharacter|irichletCondition|irichletConvolve|irichletDistribution|irichletEta|irichletL|irichletLambda|irichletTransform|irichletWindow|iscreteAsymptotic|iscreteChirpZTransform|iscreteConvolve|iscreteDelta|iscreteHadamardTransform|iscreteIndicator|iscreteInputOutputModel|iscreteLQEstimatorGains|iscreteLQRegulatorGains|iscreteLimit|iscreteLyapunovSolve|iscreteMarkovProcess|iscreteMaxLimit|iscreteMinLimit|iscretePlot|iscretePlot3D|iscreteRatio|iscreteRiccatiSolve|iscreteShift|iscreteTimeModelQ|iscreteUniformDistribution|iscreteWaveletData|iscreteWaveletPacketTransform|iscreteWaveletTransform|iscretizeGraphics|iscretizeRegion|iscriminant|isjointQ|isjunction|isk|iskMatrix|iskSegment|ispatch|isplayEndPacket|isplayForm|isplayPacket|istanceMatrix|istanceTransform|istribute|istributeDefinitions|istributed|istributionChart|istributionFitTest|istributionParameterAssumptions|istributionParameterQ|iv|ivide|ivideBy|ivideSides|ivisible|ivisorSigma|ivisorSum|ivisors|o|ocumentGenerator|ocumentGeneratorInformation|ocumentGenerators|ocumentNotebook|odecahedron|ominantColors|ominatorTreeGraph|ominatorVertexList|ot|otEqual|oubleBracketingBar|oubleDownArrow|oubleLeftArrow|oubleLeftRightArrow|oubleLeftTee|oubleLongLeftArrow|oubleLongLeftRightArrow|oubleLongRightArrow|oubleRightArrow|oubleRightTee|oubleUpArrow|oubleUpDownArrow|oubleVerticalBar|ownArrow|ownArrowBar|ownArrowUpArrow|ownLeftRightVector|ownLeftTeeVector|ownLeftVector|ownLeftVectorBar|ownRightTeeVector|ownRightVector|ownRightVectorBar|ownTee|ownTeeArrow|ownValues|ownsample|razinInverse|rop|ropShadowing|t|ualPlanarGraph|ualPolyhedron|ualSystemsModel|umpSave|uplicateFreeQ|uration|ynamic|ynamicGeoGraphics|ynamicModule|ynamicSetting|ynamicWrapper))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:E(?:arthImpactData|arthquakeData|ccentricityCentrality|choEvaluation|choFunction|choLabel|dgeAdd|dgeBetweennessCentrality|dgeChromaticNumber|dgeConnectivity|dgeContract|dgeCount|dgeCoverQ|dgeCycleMatrix|dgeDelete|dgeDetect|dgeForm|dgeIndex|dgeList|dgeQ|dgeRules|dgeTaggedGraph|dgeTaggedGraphQ|dgeTags|dgeTransitiveGraphQ|dgeWeightedGraphQ|ditDistance|ffectiveInterest|igensystem|igenvalues|igenvectorCentrality|igenvectors|lement|lementData|liminate|llipsoid|llipticE|llipticExp|llipticExpPrime|llipticF|llipticFilterModel|llipticK|llipticLog|llipticNomeQ|llipticPi|llipticTheta|llipticThetaPrime|mbedCode|mbeddedHTML|mbeddedService|mitSound|mpiricalDistribution|mptyGraphQ|mptyRegion|nclose|ncode|ncrypt|ncryptedObject|nd|ndDialogPacket|ndPackage|ngineeringForm|nterExpressionPacket|nterTextPacket|ntity|ntityClass|ntityClassList|ntityCopies|ntityGroup|ntityInstance|ntityList|ntityPrefetch|ntityProperties|ntityProperty|ntityPropertyClass|ntityRegister|ntityStores|ntityTypeName|ntityUnregister|ntityValue|ntropy|ntropyFilter|nvironment|qual|qualTilde|qualTo|quilibrium|quirippleFilterKernel|quivalent|rf|rfc|rfi|rlangB|rlangC|rlangDistribution|rosion|rrorBox|stimatedBackground|stimatedDistribution|stimatedPointNormals|stimatedProcess|stimatorGains|stimatorRegulator|uclideanDistance|ulerAngles|ulerCharacteristic|ulerE|ulerMatrix|ulerPhi|ulerianGraphQ|valuate|valuatePacket|valuationBox|valuationCell|valuationData|valuationNotebook|valuationObject|venQ|ventData|ventHandler|ventSeries|xactBlackmanWindow|xactNumberQ|xampleData|xcept|xists|xoplanetData|xp|xpGammaDistribution|xpIntegralE|xpIntegralEi|xpToTrig|xpand|xpandAll|xpandDenominator|xpandFileName|xpandNumerator|xpectation|xponent|xponentialDistribution|xponentialGeneratingFunction|xponentialMovingAverage|xponentialPowerDistribution|xport|xportByteArray|xportForm|xportString|xpressionCell|xpressionGraph|xtendedGCD|xternalBundle|xtract|xtractArchive|xtractPacletArchive|xtremeValueDistribution))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:F(?:ARIMAProcess|RatioDistribution|aceAlign|aceForm|acialFeatures|actor|actorInteger|actorList|actorSquareFree|actorSquareFreeList|actorTerms|actorTermsList|actorial|actorial2|actorialMoment|actorialMomentGeneratingFunction|actorialPower|ailure|ailureDistribution|ailureQ|areySequence|eatureImpactPlot|eatureNearest|eatureSpacePlot|eatureSpacePlot3D|eatureValueDependencyPlot|eatureValueImpactPlot|eedbackLinearize|etalGrowthData|ibonacci|ibonorial|ile|ileBaseName|ileByteCount|ileDate|ileExistsQ|ileExtension|ileFormat|ileFormatQ|ileHash|ileNameDepth|ileNameDrop|ileNameJoin|ileNameSetter|ileNameSplit|ileNameTake|ileNames|ilePrint|ileSize|ileSystemMap|ileSystemScan|ileTemplate|ileTemplateApply|ileType|illedCurve|illedTorus|illingTransform|ilterRules|inancialBond|inancialData|inancialDerivative|inancialIndicator|ind|indAnomalies|indArgMax|indArgMin|indClique|indClusters|indCookies|indCurvePath|indCycle|indDevices|indDistribution|indDistributionParameters|indDivisions|indEdgeColoring|indEdgeCover|indEdgeCut|indEdgeIndependentPaths|indEulerianCycle|indFaces|indFile|indFit|indFormula|indFundamentalCycles|indGeneratingFunction|indGeoLocation|indGeometricTransform|indGraphCommunities|indGraphIsomorphism|indGraphPartition|indHamiltonianCycle|indHamiltonianPath|indHiddenMarkovStates|indIndependentEdgeSet|indIndependentVertexSet|indInstance|indIntegerNullVector|indIsomorphicSubgraph|indKClan|indKClique|indKClub|indKPlex|indLibrary|indLinearRecurrence|indList|indMatchingColor|indMaxValue|indMaximum|indMaximumCut|indMaximumFlow|indMeshDefects|indMinValue|indMinimum|indMinimumCostFlow|indMinimumCut|indPath|indPeaks|indPermutation|indPlanarColoring|indPostmanTour|indProcessParameters|indRegionTransform|indRepeat|indRoot|indSequenceFunction|indShortestPath|indShortestTour|indSpanningTree|indSubgraphIsomorphism|indThreshold|indTransientRepeat|indVertexColoring|indVertexCover|indVertexCut|indVertexIndependentPaths|inishDynamic|initeAbelianGroupCount|initeGroupCount|initeGroupData|irst|irstCase|irstPassageTimeDistribution|irstPosition|ischerGroupFi22|ischerGroupFi23|ischerGroupFi24Prime|isherHypergeometricDistribution|isherRatioTest|isherZDistribution|it|ittedModel|ixedOrder|ixedPoint|ixedPointList|latShading|latTopWindow|latten|lattenAt|lightData|lipView|loor|lowPolynomial|old|oldList|oldPair|oldPairList|oldWhile|oldWhileList|or|orAll|ormBox|ormFunction|ormObject|ormPage|ormat|ormulaData|ormulaLookup|ortranForm|ourier|ourierCoefficient|ourierCosCoefficient|ourierCosSeries|ourierCosTransform|ourierDCT|ourierDCTFilter|ourierDCTMatrix|ourierDST|ourierDSTMatrix|ourierMatrix|ourierSequenceTransform|ourierSeries|ourierSinCoefficient|ourierSinSeries|ourierSinTransform|ourierTransform|ourierTrigSeries|oxH|ractionBox|ractionalBrownianMotionProcess|ractionalD|ractionalGaussianNoiseProcess|ractionalPart|rameBox|ramed|rechetDistribution|reeQ|renetSerretSystem|requencySamplingFilterKernel|resnelC|resnelF|resnelG|resnelS|robeniusNumber|robeniusSolve|romAbsoluteTime|romCharacterCode|romCoefficientRules|romContinuedFraction|romDMS|romDateString|romDigits|romEntity|romJulianDate|romLetterNumber|romPolarCoordinates|romRomanNumeral|romSphericalCoordinates|romUnixTime|rontEndExecute|rontEndToken|rontEndTokenExecute|ullDefinition|ullForm|ullGraphics|ullInformationOutputRegulator|ullRegion|ullSimplify|unction|unctionAnalytic|unctionBijective|unctionContinuous|unctionConvexity|unctionDiscontinuities|unctionDomain|unctionExpand|unctionInjective|unctionInterpolation|unctionMeromorphic|unctionMonotonicity|unctionPeriod|unctionRange|unctionSign|unctionSingularities|unctionSurjective|ussellVeselyImportance))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:G(?:ARCHProcess|CD|aborFilter|aborMatrix|aborWavelet|ainMargins|ainPhaseMargins|alaxyData|amma|ammaDistribution|ammaRegularized|ather|atherBy|aussianFilter|aussianMatrix|aussianOrthogonalMatrixDistribution|aussianSymplecticMatrixDistribution|aussianUnitaryMatrixDistribution|aussianWindow|egenbauerC|eneralizedLinearModelFit|enerateAsymmetricKeyPair|enerateDocument|enerateHTTPResponse|enerateSymmetricKey|eneratingFunction|enericCylindricalDecomposition|enomeData|enomeLookup|eoAntipode|eoArea|eoBoundary|eoBoundingBox|eoBounds|eoBoundsRegion|eoBoundsRegionBoundary|eoBubbleChart|eoCircle|eoContourPlot|eoDensityPlot|eoDestination|eoDirection|eoDisk|eoDisplacement|eoDistance|eoDistanceList|eoElevationData|eoEntities|eoGraphPlot|eoGraphics|eoGridDirectionDifference|eoGridPosition|eoGridUnitArea|eoGridUnitDistance|eoGridVector|eoGroup|eoHemisphere|eoHemisphereBoundary|eoHistogram|eoIdentify|eoImage|eoLength|eoListPlot|eoMarker|eoNearest|eoPath|eoPolygon|eoPosition|eoPositionENU|eoPositionXYZ|eoProjectionData|eoRegionValuePlot|eoSmoothHistogram|eoStreamPlot|eoStyling|eoVariant|eoVector|eoVectorENU|eoVectorPlot|eoVectorXYZ|eoVisibleRegion|eoVisibleRegionBoundary|eoWithinQ|eodesicClosing|eodesicDilation|eodesicErosion|eodesicOpening|eodesicPolyhedron|eodesyData|eogravityModelData|eologicalPeriodData|eomagneticModelData|eometricBrownianMotionProcess|eometricDistribution|eometricMean|eometricMeanFilter|eometricOptimization|eometricTransformation|estureHandler|et|etEnvironment|lobalClusteringCoefficient|low|ompertzMakehamDistribution|oochShading|oodmanKruskalGamma|oodmanKruskalGammaTest|oto|ouraudShading|rad|radientFilter|radientFittedMesh|radientOrientationFilter|rammarApply|rammarRules|rammarToken|raph|raph3D|raphAssortativity|raphAutomorphismGroup|raphCenter|raphComplement|raphData|raphDensity|raphDiameter|raphDifference|raphDisjointUnion|raphDistance|raphDistanceMatrix|raphEmbedding|raphHub|raphIntersection|raphJoin|raphLinkEfficiency|raphPeriphery|raphPlot|raphPlot3D|raphPower|raphProduct|raphPropertyDistribution|raphQ|raphRadius|raphReciprocity|raphSum|raphUnion|raphics|raphics3D|raphicsColumn|raphicsComplex|raphicsGrid|raphicsGroup|raphicsRow|rayLevel|reater|reaterEqual|reaterEqualLess|reaterEqualThan|reaterFullEqual|reaterGreater|reaterLess|reaterSlantEqual|reaterThan|reaterTilde|reenFunction|rid|ridBox|ridGraph|roebnerBasis|roupBy|roupCentralizer|roupElementFromWord|roupElementPosition|roupElementQ|roupElementToWord|roupElements|roupGenerators|roupMultiplicationTable|roupOrbits|roupOrder|roupSetwiseStabilizer|roupStabilizer|roupStabilizerChain|roupings|rowCutComponents|udermannian|uidedFilter|umbelDistribution))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:H(?:ITSCentrality|TTPErrorResponse|TTPRedirect|TTPRequest|TTPRequestData|TTPResponse|aarWavelet|adamardMatrix|alfLine|alfNormalDistribution|alfPlane|alfSpace|alftoneShading|amiltonianGraphQ|ammingDistance|ammingWindow|ankelH1|ankelH2|ankelMatrix|ankelTransform|annPoissonWindow|annWindow|aradaNortonGroupHN|araryGraph|armonicMean|armonicMeanFilter|armonicNumber|ash|atchFilling|atchShading|aversine|azardFunction|ead|eatFluxValue|eatInsulationValue|eatOutflowValue|eatRadiationValue|eatSymmetryValue|eatTemperatureCondition|eatTransferPDEComponent|eatTransferValue|eavisideLambda|eavisidePi|eavisideTheta|eldGroupHe|elmholtzPDEComponent|ermiteDecomposition|ermiteH|ermitian|ermitianMatrixQ|essenbergDecomposition|eunB|eunBPrime|eunC|eunCPrime|eunD|eunDPrime|eunG|eunGPrime|eunT|eunTPrime|exahedron|iddenMarkovProcess|ighlightGraph|ighlightImage|ighlightMesh|ighlighted|ighpassFilter|igmanSimsGroupHS|ilbertCurve|ilbertFilter|ilbertMatrix|istogram|istogram3D|istogramDistribution|istogramList|istogramTransform|istogramTransformInterpolation|istoricalPeriodData|itMissTransform|jorthDistribution|odgeDual|oeffdingD|oeffdingDTest|old|oldComplete|oldForm|oldPattern|orizontalGauge|ornerForm|ostLookup|otellingTSquareDistribution|oytDistribution|ue|umanGrowthData|umpDownHump|umpEqual|urwitzLerchPhi|urwitzZeta|yperbolicDistribution|ypercubeGraph|yperexponentialDistribution|yperfactorial|ypergeometric0F1|ypergeometric0F1Regularized|ypergeometric1F1|ypergeometric1F1Regularized|ypergeometric2F1|ypergeometric2F1Regularized|ypergeometricDistribution|ypergeometricPFQ|ypergeometricPFQRegularized|ypergeometricU|yperlink|yperplane|ypoexponentialDistribution|ypothesisTestData))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:I(?:PAddress|conData|conize|cosahedron|dentity|dentityMatrix|f|fCompiled|gnoringInactive|m|mage|mage3D|mage3DProjection|mage3DSlices|mageAccumulate|mageAdd|mageAdjust|mageAlign|mageApply|mageApplyIndexed|mageAspectRatio|mageAssemble|mageCapture|mageChannels|mageClip|mageCollage|mageColorSpace|mageCompose|mageConvolve|mageCooccurrence|mageCorners|mageCorrelate|mageCorrespondingPoints|mageCrop|mageData|mageDeconvolve|mageDemosaic|mageDifference|mageDimensions|mageDisplacements|mageDistance|mageEffect|mageExposureCombine|mageFeatureTrack|mageFileApply|mageFileFilter|mageFileScan|mageFilter|mageFocusCombine|mageForestingComponents|mageForwardTransformation|mageHistogram|mageIdentify|mageInstanceQ|mageKeypoints|mageLevels|mageLines|mageMarker|mageMeasurements|mageMesh|mageMultiply|magePad|magePartition|magePeriodogram|magePerspectiveTransformation|mageQ|mageRecolor|mageReflect|mageResize|mageRestyle|mageRotate|mageSaliencyFilter|mageScaled|mageScan|mageSubtract|mageTake|mageTransformation|mageTrim|mageType|mageValue|mageValuePositions|mageVectorscopePlot|mageWaveformPlot|mplicitD|mplicitRegion|mplies|mport|mportByteArray|mportString|mprovementImportance|nactivate|nactive|ncidenceGraph|ncidenceList|ncidenceMatrix|ncrement|ndefiniteMatrixQ|ndependenceTest|ndependentEdgeSetQ|ndependentPhysicalQuantity|ndependentUnit|ndependentUnitDimension|ndependentVertexSetQ|ndexEdgeTaggedGraph|ndexGraph|ndexed|nexactNumberQ|nfiniteLine|nfiniteLineThrough|nfinitePlane|nfix|nflationAdjust|nformation|nhomogeneousPoissonProcess|nner|nnerPolygon|nnerPolyhedron|npaint|nput|nputField|nputForm|nputNamePacket|nputNotebook|nputPacket|nputStream|nputString|nputStringPacket|nsert|nsertLinebreaks|nset|nsphere|nstall|nstallService|ntegerDigits|ntegerExponent|ntegerLength|ntegerName|ntegerPart|ntegerPartitions|ntegerQ|ntegerReverse|ntegerString|ntegrate|nteractiveTradingChart|nternallyBalancedDecomposition|nterpolatingFunction|nterpolatingPolynomial|nterpolation|nterpretation|nterpretationBox|nterpreter|nterquartileRange|nterrupt|ntersectingQ|ntersection|nterval|ntervalIntersection|ntervalMemberQ|ntervalSlider|ntervalUnion|nverse|nverseBetaRegularized|nverseBilateralLaplaceTransform|nverseBilateralZTransform|nverseCDF|nverseChiSquareDistribution|nverseContinuousWaveletTransform|nverseDistanceTransform|nverseEllipticNomeQ|nverseErf|nverseErfc|nverseFourier|nverseFourierCosTransform|nverseFourierSequenceTransform|nverseFourierSinTransform|nverseFourierTransform|nverseFunction|nverseGammaDistribution|nverseGammaRegularized|nverseGaussianDistribution|nverseGudermannian|nverseHankelTransform|nverseHaversine|nverseJacobiCD|nverseJacobiCN|nverseJacobiCS|nverseJacobiDC|nverseJacobiDN|nverseJacobiDS|nverseJacobiNC|nverseJacobiND|nverseJacobiNS|nverseJacobiSC|nverseJacobiSD|nverseJacobiSN|nverseLaplaceTransform|nverseMellinTransform|nversePermutation|nverseRadon|nverseRadonTransform|nverseSeries|nverseShortTimeFourier|nverseSpectrogram|nverseSurvivalFunction|nverseTransformedRegion|nverseWaveletTransform|nverseWeierstrassP|nverseWishartMatrixDistribution|nverseZTransform|nvisible|rreduciblePolynomialQ|slandData|solatingInterval|somorphicGraphQ|somorphicSubgraphQ|sotopeData|tem|toProcess))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:J(?:accardDissimilarity|acobiAmplitude|acobiCD|acobiCN|acobiCS|acobiDC|acobiDN|acobiDS|acobiEpsilon|acobiNC|acobiND|acobiNS|acobiP|acobiSC|acobiSD|acobiSN|acobiSymbol|acobiZN|acobiZeta|ankoGroupJ1|ankoGroupJ2|ankoGroupJ3|ankoGroupJ4|arqueBeraALMTest|ohnsonDistribution|oin|oinAcross|oinForm|oinedCurve|ordanDecomposition|ordanModelDecomposition|uliaSetBoettcher|uliaSetIterationCount|uliaSetPlot|uliaSetPoints|ulianDate))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:K(?:CoreComponents|Distribution|EdgeConnectedComponents|EdgeConnectedGraphQ|VertexConnectedComponents|VertexConnectedGraphQ|agiChart|aiserBesselWindow|aiserWindow|almanEstimator|almanFilter|arhunenLoeveDecomposition|aryTree|atzCentrality|elvinBei|elvinBer|elvinKei|elvinKer|endallTau|endallTauTest|ernelMixtureDistribution|ernelObject|ernels|ey|eyComplement|eyDrop|eyDropFrom|eyExistsQ|eyFreeQ|eyIntersection|eyMap|eyMemberQ|eySelect|eySort|eySortBy|eyTake|eyUnion|eyValueMap|eyValuePattern|eys|illProcess|irchhoffGraph|irchhoffMatrix|leinInvariantJ|napsackSolve|nightTourGraph|notData|nownUnitQ|ochCurve|olmogorovSmirnovTest|roneckerDelta|roneckerModelDecomposition|roneckerProduct|roneckerSymbol|uiperTest|umaraswamyDistribution|urtosis|uwaharaFilter))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:L(?:ABColor|CHColor|CM|QEstimatorGains|QGRegulator|QOutputRegulatorGains|QRegulatorGains|UDecomposition|UVColor|abel|abeled|aguerreL|akeData|ambdaComponents|ameC|ameCPrime|ameEigenvalueA|ameEigenvalueB|ameS|ameSPrime|aminaData|anczosWindow|andauDistribution|anguageData|anguageIdentify|aplaceDistribution|aplaceTransform|aplacian|aplacianFilter|aplacianGaussianFilter|aplacianPDETerm|ast|atitude|atitudeLongitude|atticeData|atticeReduce|aunchKernels|ayeredGraphPlot|ayeredGraphPlot3D|eafCount|eapVariant|eapYearQ|earnDistribution|earnedDistribution|eastSquares|eastSquaresFilterKernel|eftArrow|eftArrowBar|eftArrowRightArrow|eftDownTeeVector|eftDownVector|eftDownVectorBar|eftRightArrow|eftRightVector|eftTee|eftTeeArrow|eftTeeVector|eftTriangle|eftTriangleBar|eftTriangleEqual|eftUpDownVector|eftUpTeeVector|eftUpVector|eftUpVectorBar|eftVector|eftVectorBar|egended|egendreP|egendreQ|ength|engthWhile|erchPhi|ess|essEqual|essEqualGreater|essEqualThan|essFullEqual|essGreater|essLess|essSlantEqual|essThan|essTilde|etterCounts|etterNumber|etterQ|evel|eveneTest|eviCivitaTensor|evyDistribution|exicographicOrder|exicographicSort|ibraryDataType|ibraryFunction|ibraryFunctionError|ibraryFunctionInformation|ibraryFunctionLoad|ibraryFunctionUnload|ibraryLoad|ibraryUnload|iftingFilterData|iftingWaveletTransform|ighter|ikelihood|imit|indleyDistribution|ine|ineBreakChart|ineGraph|ineIntegralConvolutionPlot|ineLegend|inearFractionalOptimization|inearFractionalTransform|inearGradientFilling|inearGradientImage|inearModelFit|inearOptimization|inearRecurrence|inearSolve|inearSolveFunction|inearizingTransformationData|inkActivate|inkClose|inkConnect|inkCreate|inkInterrupt|inkLaunch|inkObject|inkPatterns|inkRankCentrality|inkRead|inkReadyQ|inkWrite|inks|iouvilleLambda|ist|istAnimate|istContourPlot|istContourPlot3D|istConvolve|istCorrelate|istCurvePathPlot|istDeconvolve|istDensityPlot|istDensityPlot3D|istFourierSequenceTransform|istInterpolation|istLineIntegralConvolutionPlot|istLinePlot|istLinePlot3D|istLogLinearPlot|istLogLogPlot|istLogPlot|istPicker|istPickerBox|istPlay|istPlot|istPlot3D|istPointPlot3D|istPolarPlot|istQ|istSliceContourPlot3D|istSliceDensityPlot3D|istSliceVectorPlot3D|istStepPlot|istStreamDensityPlot|istStreamPlot|istStreamPlot3D|istSurfacePlot3D|istVectorDensityPlot|istVectorDisplacementPlot|istVectorDisplacementPlot3D|istVectorPlot|istVectorPlot3D|istZTransform|ocalAdaptiveBinarize|ocalCache|ocalClusteringCoefficient|ocalEvaluate|ocalObject|ocalObjects|ocalSubmit|ocalSymbol|ocalTime|ocalTimeZone|ocationEquivalenceTest|ocationTest|ocator|ocatorPane|og|og10|og2|ogBarnesG|ogGamma|ogGammaDistribution|ogIntegral|ogLikelihood|ogLinearPlot|ogLogPlot|ogLogisticDistribution|ogMultinormalDistribution|ogNormalDistribution|ogPlot|ogRankTest|ogSeriesDistribution|ogicalExpand|ogisticDistribution|ogisticSigmoid|ogitModelFit|ongLeftArrow|ongLeftRightArrow|ongRightArrow|ongest|ongestCommonSequence|ongestCommonSequencePositions|ongestCommonSubsequence|ongestCommonSubsequencePositions|ongestOrderedSequence|ongitude|ookup|oopFreeGraphQ|owerCaseQ|owerLeftArrow|owerRightArrow|owerTriangularMatrix|owerTriangularMatrixQ|owerTriangularize|owpassFilter|ucasL|uccioSamiComponents|unarEclipse|yapunovSolve|yonsGroupLy))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:M(?:AProcess|achineNumberQ|agnify|ailReceiverFunction|ajority|akeBoxes|akeExpression|anagedLibraryExpressionID|anagedLibraryExpressionQ|andelbrotSetBoettcher|andelbrotSetDistance|andelbrotSetIterationCount|andelbrotSetMemberQ|andelbrotSetPlot|angoldtLambda|anhattanDistance|anipulate|anipulator|annWhitneyTest|annedSpaceMissionData|antissaExponent|ap|apAll|apApply|apAt|apIndexed|apThread|archenkoPasturDistribution|arcumQ|ardiaCombinedTest|ardiaKurtosisTest|ardiaSkewnessTest|arginalDistribution|arkovProcessProperties|assConcentrationCondition|assFluxValue|assImpermeableBoundaryValue|assOutflowValue|assSymmetryValue|assTransferValue|assTransportPDEComponent|atchQ|atchingDissimilarity|aterialShading|athMLForm|athematicalFunctionData|athieuC|athieuCPrime|athieuCharacteristicA|athieuCharacteristicB|athieuCharacteristicExponent|athieuGroupM11|athieuGroupM12|athieuGroupM22|athieuGroupM23|athieuGroupM24|athieuS|athieuSPrime|atrices|atrixExp|atrixForm|atrixFunction|atrixLog|atrixNormalDistribution|atrixPlot|atrixPower|atrixPropertyDistribution|atrixQ|atrixRank|atrixTDistribution|ax|axDate|axDetect|axFilter|axLimit|axMemoryUsed|axStableDistribution|axValue|aximalBy|aximize|axwellDistribution|cLaughlinGroupMcL|ean|eanClusteringCoefficient|eanDegreeConnectivity|eanDeviation|eanFilter|eanGraphDistance|eanNeighborDegree|eanShift|eanShiftFilter|edian|edianDeviation|edianFilter|edicalTestData|eijerG|eijerGReduce|eixnerDistribution|ellinConvolve|ellinTransform|emberQ|emoryAvailable|emoryConstrained|emoryInUse|engerMesh|enuPacket|enuView|erge|ersennePrimeExponent|ersennePrimeExponentQ|eshCellCount|eshCellIndex|eshCells|eshConnectivityGraph|eshCoordinates|eshPrimitives|eshRegion|eshRegionQ|essage|essageDialog|essageList|essageName|essagePacket|essages|eteorShowerData|exicanHatWavelet|eyerWavelet|in|inDate|inDetect|inFilter|inLimit|inMax|inStableDistribution|inValue|ineralData|inimalBy|inimalPolynomial|inimalStateSpaceModel|inimize|inimumTimeIncrement|inkowskiQuestionMark|inorPlanetData|inors|inus|inusPlus|issing|issingQ|ittagLefflerE|ixedFractionParts|ixedGraphQ|ixedMagnitude|ixedRadix|ixedRadixQuantity|ixedUnit|ixtureDistribution|od|odelPredictiveController|odularInverse|odularLambda|odule|oebiusMu|oment|omentConvert|omentEvaluate|omentGeneratingFunction|omentOfInertia|onitor|onomialList|onsterGroupM|oonPhase|oonPosition|orletWavelet|orphologicalBinarize|orphologicalBranchPoints|orphologicalComponents|orphologicalEulerNumber|orphologicalGraph|orphologicalPerimeter|orphologicalTransform|ortalityData|ost|ountainData|ouseAnnotation|ouseAppearance|ousePosition|ouseover|ovieData|ovingAverage|ovingMap|ovingMedian|oyalDistribution|ulticolumn|ultigraphQ|ultinomial|ultinomialDistribution|ultinormalDistribution|ultiplicativeOrder|ultiplySides|ultivariateHypergeometricDistribution|ultivariatePoissonDistribution|ultivariateTDistribution))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:N(?:|ArgMax|ArgMin|Cache|CaputoD|DEigensystem|DEigenvalues|DSolve|DSolveValue|Expectation|FractionalD|Integrate|MaxValue|Maximize|MinValue|Minimize|Probability|Product|Roots|Solve|SolveValues|Sum|akagamiDistribution|ameQ|ames|and|earest|earestFunction|earestMeshCells|earestNeighborGraph|earestTo|ebulaData|eedlemanWunschSimilarity|eeds|egative|egativeBinomialDistribution|egativeDefiniteMatrixQ|egativeMultinomialDistribution|egativeSemidefiniteMatrixQ|egativelyOrientedPoints|eighborhoodData|eighborhoodGraph|est|estGraph|estList|estWhile|estWhileList|estedGreaterGreater|estedLessLess|eumannValue|evilleThetaC|evilleThetaD|evilleThetaN|evilleThetaS|extCell|extDate|extPrime|icholsPlot|ightHemisphere|onCommutativeMultiply|onNegative|onPositive|oncentralBetaDistribution|oncentralChiSquareDistribution|oncentralFRatioDistribution|oncentralStudentTDistribution|ondimensionalizationTransform|oneTrue|onlinearModelFit|onlinearStateSpaceModel|onlocalMeansFilter|or|orlundB|orm|ormal|ormalDistribution|ormalMatrixQ|ormalize|ormalizedSquaredEuclideanDistance|ot|otCongruent|otCupCap|otDoubleVerticalBar|otElement|otEqualTilde|otExists|otGreater|otGreaterEqual|otGreaterFullEqual|otGreaterGreater|otGreaterLess|otGreaterSlantEqual|otGreaterTilde|otHumpDownHump|otHumpEqual|otLeftTriangle|otLeftTriangleBar|otLeftTriangleEqual|otLess|otLessEqual|otLessFullEqual|otLessGreater|otLessLess|otLessSlantEqual|otLessTilde|otNestedGreaterGreater|otNestedLessLess|otPrecedes|otPrecedesEqual|otPrecedesSlantEqual|otPrecedesTilde|otReverseElement|otRightTriangle|otRightTriangleBar|otRightTriangleEqual|otSquareSubset|otSquareSubsetEqual|otSquareSuperset|otSquareSupersetEqual|otSubset|otSubsetEqual|otSucceeds|otSucceedsEqual|otSucceedsSlantEqual|otSucceedsTilde|otSuperset|otSupersetEqual|otTilde|otTildeEqual|otTildeFullEqual|otTildeTilde|otVerticalBar|otebook|otebookApply|otebookClose|otebookDelete|otebookDirectory|otebookEvaluate|otebookFileName|otebookFind|otebookGet|otebookImport|otebookInformation|otebookLocate|otebookObject|otebookOpen|otebookPrint|otebookPut|otebookRead|otebookSave|otebookSelection|otebookTemplate|otebookWrite|otebooks|othing|uclearExplosionData|uclearReactorData|ullSpace|umberCompose|umberDecompose|umberDigit|umberExpand|umberFieldClassNumber|umberFieldDiscriminant|umberFieldFundamentalUnits|umberFieldIntegralBasis|umberFieldNormRepresentatives|umberFieldRegulator|umberFieldRootsOfUnity|umberFieldSignature|umberForm|umberLinePlot|umberQ|umerator|umeratorDenominator|umericQ|umericalOrder|umericalSort|uttallWindow|yquistPlot))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:O(?:|NanGroupON|bservabilityGramian|bservabilityMatrix|bservableDecomposition|bservableModelQ|ceanData|ctahedron|ddQ|ff|ffset|n|nce|pacity|penAppend|penRead|penWrite|pener|penerView|pening|perate|ptimumFlowData|ptionValue|ptional|ptionalElement|ptions|ptionsPattern|r|rder|rderDistribution|rderedQ|rdering|rderingBy|rderlessPatternSequence|rnsteinUhlenbeckProcess|rthogonalMatrixQ|rthogonalize|uter|uterPolygon|uterPolyhedron|utputControllabilityMatrix|utputControllableModelQ|utputForm|utputNamePacket|utputResponse|utputStream|verBar|verDot|verHat|verTilde|verVector|verflow|verlay|verscript|verscriptBox|wenT|wnValues))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:P(?:DF|ERTDistribution|IDTune|acletDataRebuild|acletDirectoryLoad|acletDirectoryUnload|acletDisable|acletEnable|acletFind|acletFindRemote|acletInstall|acletInstallSubmit|acletNewerQ|acletObject|acletSiteObject|acletSiteRegister|acletSiteUnregister|acletSiteUpdate|acletSites|acletUninstall|adLeft|adRight|addedForm|adeApproximant|ageRankCentrality|airedBarChart|airedHistogram|airedSmoothHistogram|airedTTest|airedZTest|aletteNotebook|alindromeQ|ane|aneSelector|anel|arabolicCylinderD|arallelArray|arallelAxisPlot|arallelCombine|arallelDo|arallelEvaluate|arallelKernels|arallelMap|arallelNeeds|arallelProduct|arallelSubmit|arallelSum|arallelTable|arallelTry|arallelepiped|arallelize|arallelogram|arameterMixtureDistribution|arametricConvexOptimization|arametricFunction|arametricNDSolve|arametricNDSolveValue|arametricPlot|arametricPlot3D|arametricRegion|arentBox|arentCell|arentDirectory|arentNotebook|aretoDistribution|aretoPickandsDistribution|arkData|art|artOfSpeech|artialCorrelationFunction|articleAcceleratorData|articleData|artition|artitionsP|artitionsQ|arzenWindow|ascalDistribution|aste|asteButton|athGraph|athGraphQ|attern|atternSequence|atternTest|aulWavelet|auliMatrix|ause|eakDetect|eanoCurve|earsonChiSquareTest|earsonCorrelationTest|earsonDistribution|ercentForm|erfectNumber|erfectNumberQ|erimeter|eriodicBoundaryCondition|eriodogram|eriodogramArray|ermanent|ermissionsGroup|ermissionsGroupMemberQ|ermissionsGroups|ermissionsKey|ermissionsKeys|ermutationCycles|ermutationCyclesQ|ermutationGroup|ermutationLength|ermutationList|ermutationListQ|ermutationMatrix|ermutationMax|ermutationMin|ermutationOrder|ermutationPower|ermutationProduct|ermutationReplace|ermutationSupport|ermutations|ermute|eronaMalikFilter|ersonData|etersenGraph|haseMargins|hongShading|hysicalSystemData|ick|ieChart|ieChart3D|iecewise|iecewiseExpand|illaiTrace|illaiTraceTest|ingTime|ixelValue|ixelValuePositions|laced|laceholder|lanarAngle|lanarFaceList|lanarGraph|lanarGraphQ|lanckRadiationLaw|laneCurveData|lanetData|lanetaryMoonData|lantData|lay|lot|lot3D|luralize|lus|lusMinus|ochhammer|oint|ointFigureChart|ointLegend|ointLight|ointSize|oissonConsulDistribution|oissonDistribution|oissonPDEComponent|oissonProcess|oissonWindow|olarPlot|olyGamma|olyLog|olyaAeppliDistribution|olygon|olygonAngle|olygonCoordinates|olygonDecomposition|olygonalNumber|olyhedron|olyhedronAngle|olyhedronCoordinates|olyhedronData|olyhedronDecomposition|olyhedronGenus|olynomialExpressionQ|olynomialExtendedGCD|olynomialGCD|olynomialLCM|olynomialMod|olynomialQ|olynomialQuotient|olynomialQuotientRemainder|olynomialReduce|olynomialRemainder|olynomialSumOfSquaresList|opupMenu|opupView|opupWindow|osition|ositionIndex|ositionLargest|ositionSmallest|ositive|ositiveDefiniteMatrixQ|ositiveSemidefiniteMatrixQ|ositivelyOrientedPoints|ossibleZeroQ|ostfix|ower|owerDistribution|owerExpand|owerMod|owerModList|owerRange|owerSpectralDensity|owerSymmetricPolynomial|owersRepresentations|reDecrement|reIncrement|recedenceForm|recedes|recedesEqual|recedesSlantEqual|recedesTilde|recision|redict|redictorFunction|redictorMeasurements|redictorMeasurementsObject|reemptProtect|refix|repend|rependTo|reviousCell|reviousDate|riceGraphDistribution|rime|rimeNu|rimeOmega|rimePi|rimePowerQ|rimeQ|rimeZetaP|rimitivePolynomialQ|rimitiveRoot|rimitiveRootList|rincipalComponents|rintTemporary|rintableASCIIQ|rintout3D|rism|rivateKey|robability|robabilityDistribution|robabilityPlot|robabilityScalePlot|robitModelFit|rocessConnection|rocessInformation|rocessObject|rocessParameterAssumptions|rocessParameterQ|rocessStatus|rocesses|roduct|roductDistribution|roductLog|rogressIndicator|rojection|roportion|roportional|rotect|roteinData|runing|seudoInverse|sychrometricPropertyData|ublicKey|ulsarData|ut|utAppend|yramid))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:Q(?:Binomial|Factorial|Gamma|HypergeometricPFQ|Pochhammer|PolyGamma|RDecomposition|nDispersion|uadraticIrrationalQ|uadraticOptimization|uantile|uantilePlot|uantity|uantityArray|uantityDistribution|uantityForm|uantityMagnitude|uantityQ|uantityUnit|uantityVariable|uantityVariableCanonicalUnit|uantityVariableDimensions|uantityVariableIdentifier|uantityVariablePhysicalQuantity|uartileDeviation|uartileSkewness|uartiles|uery|ueueProperties|ueueingNetworkProcess|ueueingProcess|uiet|uietEcho|uotient|uotientRemainder))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:R(?:GBColor|Solve|SolveValue|adialAxisPlot|adialGradientFilling|adialGradientImage|adialityCentrality|adicalBox|adioButton|adioButtonBar|adon|adonTransform|amanujanTau|amanujanTauL|amanujanTauTheta|amanujanTauZ|amp|andomChoice|andomColor|andomComplex|andomDate|andomEntity|andomFunction|andomGeneratorState|andomGeoPosition|andomGraph|andomImage|andomInteger|andomPermutation|andomPoint|andomPolygon|andomPolyhedron|andomPrime|andomReal|andomSample|andomTime|andomVariate|andomWalkProcess|andomWord|ange|angeFilter|ankedMax|ankedMin|arerProbability|aster|aster3D|asterize|ational|ationalExpressionQ|ationalize|atios|awBoxes|awData|ayleighDistribution|e|eIm|eImPlot|eactionPDETerm|ead|eadByteArray|eadLine|eadList|eadString|ealAbs|ealDigits|ealExponent|ealSign|eap|econstructionMesh|ectangle|ectangleChart|ectangleChart3D|ectangularRepeatingElement|ecurrenceFilter|ecurrenceTable|educe|efine|eflectionMatrix|eflectionTransform|efresh|egion|egionBinarize|egionBoundary|egionBounds|egionCentroid|egionCongruent|egionConvert|egionDifference|egionDilation|egionDimension|egionDisjoint|egionDistance|egionDistanceFunction|egionEmbeddingDimension|egionEqual|egionErosion|egionFit|egionImage|egionIntersection|egionMeasure|egionMember|egionMemberFunction|egionMoment|egionNearest|egionNearestFunction|egionPlot|egionPlot3D|egionProduct|egionQ|egionResize|egionSimilar|egionSymmetricDifference|egionUnion|egionWithin|egularExpression|egularPolygon|egularlySampledQ|elationGraph|eleaseHold|eliabilityDistribution|eliefImage|eliefPlot|emove|emoveAlphaChannel|emoveBackground|emoveDiacritics|emoveInputStreamMethod|emoveOutputStreamMethod|emoveUsers|enameDirectory|enameFile|enewalProcess|enkoChart|epairMesh|epeated|epeatedNull|epeatedTiming|epeatingElement|eplace|eplaceAll|eplaceAt|eplaceImageValue|eplaceList|eplacePart|eplacePixelValue|eplaceRepeated|esamplingAlgorithmData|escale|escalingTransform|esetDirectory|esidue|esidueSum|esolve|esourceData|esourceObject|esourceSearch|esponseForm|est|estricted|esultant|eturn|eturnExpressionPacket|eturnPacket|eturnTextPacket|everse|everseBiorthogonalSplineWavelet|everseElement|everseEquilibrium|everseGraph|everseSort|everseSortBy|everseUpEquilibrium|evolutionPlot3D|iccatiSolve|iceDistribution|idgeFilter|iemannR|iemannSiegelTheta|iemannSiegelZ|iemannXi|iffle|ightArrow|ightArrowBar|ightArrowLeftArrow|ightComposition|ightCosetRepresentative|ightDownTeeVector|ightDownVector|ightDownVectorBar|ightTee|ightTeeArrow|ightTeeVector|ightTriangle|ightTriangleBar|ightTriangleEqual|ightUpDownVector|ightUpTeeVector|ightUpVector|ightUpVectorBar|ightVector|ightVectorBar|iskAchievementImportance|iskReductionImportance|obustConvexOptimization|ogersTanimotoDissimilarity|ollPitchYawAngles|ollPitchYawMatrix|omanNumeral|oot|ootApproximant|ootIntervals|ootLocusPlot|ootMeanSquare|ootOfUnityQ|ootReduce|ootSum|oots|otate|otateLeft|otateRight|otationMatrix|otationTransform|ound|ow|owBox|owReduce|udinShapiro|udvalisGroupRu|ule|uleDelayed|ulePlot|un|unProcess|unThrough|ussellRaoDissimilarity))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:S(?:ARIMAProcess|ARMAProcess|ASTriangle|SSTriangle|ameAs|ameQ|ampledSoundFunction|ampledSoundList|atelliteData|atisfiabilityCount|atisfiabilityInstances|atisfiableQ|ave|avitzkyGolayMatrix|awtoothWave|cale|caled|calingMatrix|calingTransform|can|cheduledTask|churDecomposition|cientificForm|corerGi|corerGiPrime|corerHi|corerHiPrime|ec|ech|echDistribution|econdOrderConeOptimization|ectorChart|ectorChart3D|eedRandom|elect|electComponents|electFirst|electedCells|electedNotebook|electionCreateCell|electionEvaluate|electionEvaluateCreateCell|electionMove|emanticImport|emanticImportString|emanticInterpretation|emialgebraicComponentInstances|emidefiniteOptimization|endMail|endMessage|equence|equenceAlignment|equenceCases|equenceCount|equenceFold|equenceFoldList|equencePosition|equenceReplace|equenceSplit|eries|eriesCoefficient|eriesData|erviceConnect|erviceDisconnect|erviceExecute|erviceObject|essionSubmit|essionTime|et|etAccuracy|etAlphaChannel|etAttributes|etCloudDirectory|etCookies|etDelayed|etDirectory|etEnvironment|etFileDate|etOptions|etPermissions|etPrecision|etSelectedNotebook|etSharedFunction|etSharedVariable|etStreamPosition|etSystemOptions|etUsers|etter|etterBar|etting|hallow|hannonWavelet|hapiroWilkTest|hare|harpen|hearingMatrix|hearingTransform|hellRegion|henCastanMatrix|hiftRegisterSequence|hiftedGompertzDistribution|hort|hortDownArrow|hortLeftArrow|hortRightArrow|hortTimeFourier|hortTimeFourierData|hortUpArrow|hortest|hortestPathFunction|how|iderealTime|iegelTheta|iegelTukeyTest|ierpinskiCurve|ierpinskiMesh|ign|ignTest|ignature|ignedRankTest|ignedRegionDistance|impleGraph|impleGraphQ|implePolygonQ|implePolyhedronQ|implex|implify|in|inIntegral|inc|inghMaddalaDistribution|ingularValueDecomposition|ingularValueList|ingularValuePlot|inh|inhIntegral|ixJSymbol|keleton|keletonTransform|kellamDistribution|kewNormalDistribution|kewness|kip|liceContourPlot3D|liceDensityPlot3D|liceDistribution|liceVectorPlot3D|lideView|lider|lider2D|liderBox|lot|lotSequence|mallCircle|mithDecomposition|mithDelayCompensator|mithWatermanSimilarity|moothDensityHistogram|moothHistogram|moothHistogram3D|moothKernelDistribution|nDispersion|ocketConnect|ocketListen|ocketListener|ocketObject|ocketOpen|ocketReadMessage|ocketReadyQ|ocketWaitAll|ocketWaitNext|ockets|okalSneathDissimilarity|olarEclipse|olarSystemFeatureData|olarTime|olidAngle|olidData|olidRegionQ|olve|olveAlways|olveValues|ort|ortBy|ound|oundNote|ourcePDETerm|ow|paceCurveData|pacer|pan|parseArray|parseArrayQ|patialGraphDistribution|patialMedian|peak|pearmanRankTest|pearmanRho|peciesData|pectralLineData|pectrogram|pectrogramArray|pecularity|peechSynthesize|pellingCorrectionList|phere|pherePoints|phericalBesselJ|phericalBesselY|phericalHankelH1|phericalHankelH2|phericalHarmonicY|phericalPlot3D|phericalShell|pheroidalEigenvalue|pheroidalJoiningFactor|pheroidalPS|pheroidalPSPrime|pheroidalQS|pheroidalQSPrime|pheroidalRadialFactor|pheroidalS1|pheroidalS1Prime|pheroidalS2|pheroidalS2Prime|plicedDistribution|plit|plitBy|pokenString|potLight|qrt|qrtBox|quare|quareFreeQ|quareIntersection|quareMatrixQ|quareRepeatingElement|quareSubset|quareSubsetEqual|quareSuperset|quareSupersetEqual|quareUnion|quareWave|quaredEuclideanDistance|quaresR|tableDistribution|tack|tackBegin|tackComplete|tackInhibit|tackedDateListPlot|tackedListPlot|tadiumShape|tandardAtmosphereData|tandardDeviation|tandardDeviationFilter|tandardForm|tandardOceanData|tandardize|tandbyDistribution|tar|tarClusterData|tarData|tarGraph|tartProcess|tateFeedbackGains|tateOutputEstimator|tateResponse|tateSpaceModel|tateSpaceTransform|tateTransformationLinearize|tationaryDistribution|tationaryWaveletPacketTransform|tationaryWaveletTransform|tatusArea|tatusCentrality|tieltjesGamma|tippleShading|tirlingS1|tirlingS2|toppingPowerData|tratonovichProcess|treamDensityPlot|treamPlot|treamPlot3D|treamPosition|treams|tringCases|tringContainsQ|tringCount|tringDelete|tringDrop|tringEndsQ|tringExpression|tringExtract|tringForm|tringFormat|tringFormatQ|tringFreeQ|tringInsert|tringJoin|tringLength|tringMatchQ|tringPadLeft|tringPadRight|tringPart|tringPartition|tringPosition|tringQ|tringRepeat|tringReplace|tringReplaceList|tringReplacePart|tringReverse|tringRiffle|tringRotateLeft|tringRotateRight|tringSkeleton|tringSplit|tringStartsQ|tringTake|tringTakeDrop|tringTemplate|tringToByteArray|tringToStream|tringTrim|tripBoxes|tructuralImportance|truveH|truveL|tudentTDistribution|tyle|tyleBox|tyleData|ubMinus|ubPlus|ubStar|ubValues|ubdivide|ubfactorial|ubgraph|ubresultantPolynomialRemainders|ubresultantPolynomials|ubresultants|ubscript|ubscriptBox|ubsequences|ubset|ubsetEqual|ubsetMap|ubsetQ|ubsets|ubstitutionSystem|ubsuperscript|ubsuperscriptBox|ubtract|ubtractFrom|ubtractSides|ucceeds|ucceedsEqual|ucceedsSlantEqual|ucceedsTilde|uccess|uchThat|um|umConvergence|unPosition|unrise|unset|uperDagger|uperMinus|uperPlus|uperStar|upernovaData|uperscript|uperscriptBox|uperset|upersetEqual|urd|urfaceArea|urfaceData|urvivalDistribution|urvivalFunction|urvivalModel|urvivalModelFit|uzukiDistribution|uzukiGroupSuz|watchLegend|witch|ymbol|ymbolName|ymletWavelet|ymmetric|ymmetricGroup|ymmetricKey|ymmetricMatrixQ|ymmetricPolynomial|ymmetricReduction|ymmetrize|ymmetrizedArray|ymmetrizedArrayRules|ymmetrizedDependentComponents|ymmetrizedIndependentComponents|ymmetrizedReplacePart|ynonyms|yntaxInformation|yntaxLength|yntaxPacket|yntaxQ|ystemDialogInput|ystemInformation|ystemOpen|ystemOptions|ystemProcessData|ystemProcesses|ystemsConnectionsModel|ystemsModelControllerData|ystemsModelDelay|ystemsModelDelayApproximate|ystemsModelDelete|ystemsModelDimensions|ystemsModelExtract|ystemsModelFeedbackConnect|ystemsModelLinearity|ystemsModelMerge|ystemsModelOrder|ystemsModelParallelConnect|ystemsModelSeriesConnect|ystemsModelStateFeedbackConnect|ystemsModelVectorRelativeOrders))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:T(?:Test|abView|able|ableForm|agBox|agSet|agSetDelayed|agUnset|ake|akeDrop|akeLargest|akeLargestBy|akeList|akeSmallest|akeSmallestBy|akeWhile|ally|an|anh|askAbort|askExecute|askObject|askRemove|askResume|askSuspend|askWait|asks|autologyQ|eXForm|elegraphProcess|emplateApply|emplateBox|emplateExpression|emplateIf|emplateObject|emplateSequence|emplateSlot|emplateWith|emporalData|ensorContract|ensorDimensions|ensorExpand|ensorProduct|ensorRank|ensorReduce|ensorSymmetry|ensorTranspose|ensorWedge|erminatedEvaluation|estReport|estReportObject|estResultObject|etrahedron|ext|extCell|extData|extGrid|extPacket|extRecognize|extSentences|extString|extTranslation|extWords|exture|herefore|hermodynamicData|hermometerGauge|hickness|hinning|hompsonGroupTh|hread|hreeJSymbol|hreshold|hrough|hrow|hueMorse|humbnail|ideData|ilde|ildeEqual|ildeFullEqual|ildeTilde|imeConstrained|imeObject|imeObjectQ|imeRemaining|imeSeries|imeSeriesAggregate|imeSeriesForecast|imeSeriesInsert|imeSeriesInvertibility|imeSeriesMap|imeSeriesMapThread|imeSeriesModel|imeSeriesModelFit|imeSeriesResample|imeSeriesRescale|imeSeriesShift|imeSeriesThread|imeSeriesWindow|imeSystemConvert|imeUsed|imeValue|imeZoneConvert|imeZoneOffset|imelinePlot|imes|imesBy|iming|itsGroupT|oBoxes|oCharacterCode|oContinuousTimeModel|oDiscreteTimeModel|oEntity|oExpression|oInvertibleTimeSeries|oLowerCase|oNumberField|oPolarCoordinates|oRadicals|oRules|oSphericalCoordinates|oString|oUpperCase|oeplitzMatrix|ogether|oggler|ogglerBar|ooltip|oonShading|opHatTransform|opologicalSort|orus|orusGraph|otal|otalVariationFilter|ouchPosition|r|race|raceDialog|racePrint|raceScan|racyWidomDistribution|radingChart|raditionalForm|ransferFunctionCancel|ransferFunctionExpand|ransferFunctionFactor|ransferFunctionModel|ransferFunctionPoles|ransferFunctionTransform|ransferFunctionZeros|ransformationFunction|ransformationMatrix|ransformedDistribution|ransformedField|ransformedProcess|ransformedRegion|ransitiveClosureGraph|ransitiveReductionGraph|ranslate|ranslationTransform|ransliterate|ranspose|ravelDirections|ravelDirectionsData|ravelDistance|ravelDistanceList|ravelTime|reeForm|reeGraph|reeGraphQ|reePlot|riangle|riangleWave|riangularDistribution|riangulateMesh|rigExpand|rigFactor|rigFactorList|rigReduce|rigToExp|rigger|rimmedMean|rimmedVariance|ropicalStormData|rueQ|runcatedDistribution|runcatedPolyhedron|sallisQExponentialDistribution|sallisQGaussianDistribution|ube|ukeyLambdaDistribution|ukeyWindow|unnelData|uples|uranGraph|uringMachine|uttePolynomial|woWayRule|ypeHint))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:U(?:RL|RLBuild|RLDecode|RLDispatcher|RLDownload|RLEncode|RLExecute|RLExpand|RLParse|RLQueryDecode|RLQueryEncode|RLRead|RLResponseTime|RLShorten|RLSubmit|nateQ|ncompress|nderBar|nderflow|nderoverscript|nderoverscriptBox|nderscript|nderscriptBox|nderseaFeatureData|ndirectedEdge|ndirectedGraph|ndirectedGraphQ|nequal|nequalTo|nevaluated|niformDistribution|niformGraphDistribution|niformPolyhedron|niformSumDistribution|ninstall|nion|nionPlus|nique|nitBox|nitConvert|nitDimensions|nitRootTest|nitSimplify|nitStep|nitTriangle|nitVector|nitaryMatrixQ|nitize|niverseModelData|niversityData|nixTime|nprotect|nsameQ|nset|nsetShared|ntil|pArrow|pArrowBar|pArrowDownArrow|pDownArrow|pEquilibrium|pSet|pSetDelayed|pTee|pTeeArrow|pTo|pValues|pdate|pperCaseQ|pperLeftArrow|pperRightArrow|pperTriangularMatrix|pperTriangularMatrixQ|pperTriangularize|psample|singFrontEnd))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:V(?:alueQ|alues|ariables|ariance|arianceEquivalenceTest|arianceGammaDistribution|arianceTest|ectorAngle|ectorDensityPlot|ectorDisplacementPlot|ectorDisplacementPlot3D|ectorGreater|ectorGreaterEqual|ectorLess|ectorLessEqual|ectorPlot|ectorPlot3D|ectorQ|ectors|ee|erbatim|erificationTest|ertexAdd|ertexChromaticNumber|ertexComponent|ertexConnectivity|ertexContract|ertexCorrelationSimilarity|ertexCosineSimilarity|ertexCount|ertexCoverQ|ertexDegree|ertexDelete|ertexDiceSimilarity|ertexEccentricity|ertexInComponent|ertexInComponentGraph|ertexInDegree|ertexIndex|ertexJaccardSimilarity|ertexList|ertexOutComponent|ertexOutComponentGraph|ertexOutDegree|ertexQ|ertexReplace|ertexTransitiveGraphQ|ertexWeightedGraphQ|erticalBar|erticalGauge|erticalSeparator|erticalSlider|erticalTilde|oiceStyleData|oigtDistribution|olcanoData|olume|onMisesDistribution|oronoiMesh))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:W(?:aitAll|aitNext|akebyDistribution|alleniusHypergeometricDistribution|aringYuleDistribution|arpingCorrespondence|arpingDistance|atershedComponents|atsonUSquareTest|attsStrogatzGraphDistribution|avePDEComponent|aveletBestBasis|aveletFilterCoefficients|aveletImagePlot|aveletListPlot|aveletMapIndexed|aveletMatrixPlot|aveletPhi|aveletPsi|aveletScalogram|aveletThreshold|eakStationarity|eaklyConnectedComponents|eaklyConnectedGraphComponents|eaklyConnectedGraphQ|eatherData|eatherForecastData|eberE|edge|eibullDistribution|eierstrassE1|eierstrassE2|eierstrassE3|eierstrassEta1|eierstrassEta2|eierstrassEta3|eierstrassHalfPeriodW1|eierstrassHalfPeriodW2|eierstrassHalfPeriodW3|eierstrassHalfPeriods|eierstrassInvariantG2|eierstrassInvariantG3|eierstrassInvariants|eierstrassP|eierstrassPPrime|eierstrassSigma|eierstrassZeta|eightedAdjacencyGraph|eightedAdjacencyMatrix|eightedData|eightedGraphQ|elchWindow|heelGraph|henEvent|hich|hile|hiteNoiseProcess|hittakerM|hittakerW|ienerFilter|ienerProcess|ignerD|ignerSemicircleDistribution|ikipediaData|ilksW|ilksWTest|indDirectionData|indSpeedData|indVectorData|indingCount|indingPolygon|insorizedMean|insorizedVariance|ishartMatrixDistribution|ith|olframAlpha|olframLanguageData|ordCloud|ordCount|ordCounts|ordData|ordDefinition|ordFrequency|ordFrequencyData|ordList|ordStem|ordTranslation|rite|riteLine|riteString|ronskian))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:X(?:MLElement|MLObject|MLTemplate|YZColor|nor|or))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:Y(?:uleDissimilarity))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:Z(?:IPCodeData|Test|Transform|ernikeR|eroSymmetric|eta|etaZero|ipfDistribution))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "System`(?:A(?:cceptanceThreshold|ccuracyGoal|ctiveStyle|ddOnHelpPath|djustmentBoxOptions|lignment|lignmentPoint|llowGroupClose|llowInlineCells|llowLooseGrammar|llowReverseGroupClose|llowScriptLevelChange|llowVersionUpdate|llowedCloudExtraParameters|llowedCloudParameterExtensions|llowedDimensions|llowedFrequencyRange|llowedHeads|lternativeHypothesis|ltitudeMethod|mbiguityFunction|natomySkinStyle|nchoredSearch|nimationDirection|nimationRate|nimationRepetitions|nimationRunTime|nimationRunning|nimationTimeIndex|nnotationRules|ntialiasing|ppearance|ppearanceElements|ppearanceRules|spectRatio|ssociationFormat|ssumptions|synchronous|ttachedCell|udioChannelAssignment|udioEncoding|udioInputDevice|udioLabel|udioOutputDevice|uthentication|utoAction|utoCopy|utoDelete|utoGeneratedPackage|utoIndent|utoItalicWords|utoMultiplicationSymbol|utoOpenNotebooks|utoOpenPalettes|utoOperatorRenderings|utoRemove|utoScroll|utoSpacing|utoloadPath|utorunSequencing|xes|xesEdge|xesLabel|xesOrigin|xesStyle))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:B(?:ackground|arOrigin|arSpacing|aseStyle|aselinePosition|inaryFormat|ookmarks|ooleanStrings|oundaryStyle|oxBaselineShift|oxFormFormatTypes|oxFrame|oxMargins|oxRatios|oxStyle|oxed|ubbleScale|ubbleSizes|uttonBoxOptions|uttonData|uttonFunction|uttonMinHeight|uttonSource|yteOrdering))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:C(?:alendarType|alloutMarker|alloutStyle|aptureRunning|aseOrdering|elestialSystem|ellAutoOverwrite|ellBaseline|ellBracketOptions|ellChangeTimes|ellContext|ellDingbat|ellDingbatMargin|ellDynamicExpression|ellEditDuplicate|ellEpilog|ellEvaluationDuplicate|ellEvaluationFunction|ellEventActions|ellFrame|ellFrameColor|ellFrameLabelMargins|ellFrameLabels|ellFrameMargins|ellGrouping|ellGroupingRules|ellHorizontalScrolling|ellID|ellLabel|ellLabelAutoDelete|ellLabelMargins|ellLabelPositioning|ellLabelStyle|ellLabelTemplate|ellMargins|ellOpen|ellProlog|ellSize|ellTags|haracterEncoding|haracterEncodingsPath|hartBaseStyle|hartElementFunction|hartElements|hartLabels|hartLayout|hartLegends|hartStyle|lassPriors|lickToCopyEnabled|lipPlanes|lipPlanesStyle|lipRange|lippingStyle|losingAutoSave|loudBase|loudObjectNameFormat|loudObjectURLType|lusterDissimilarityFunction|odeAssistOptions|olorCoverage|olorFunction|olorFunctionBinning|olorFunctionScaling|olorRules|olorSelectorSettings|olorSpace|olumnAlignments|olumnLines|olumnSpacings|olumnWidths|olumnsEqual|ombinerFunction|ommonDefaultFormatTypes|ommunityBoundaryStyle|ommunityLabels|ommunityRegionStyle|ompilationOptions|ompilationTarget|ompiled|omplexityFunction|ompressionLevel|onfidenceLevel|onfidenceRange|onfidenceTransform|onfigurationPath|onstants|ontentPadding|ontentSelectable|ontentSize|ontinuousAction|ontourLabels|ontourShading|ontourStyle|ontours|ontrolPlacement|ontrolType|ontrollerLinking|ontrollerMethod|ontrollerPath|ontrolsRendering|onversionRules|ookieFunction|oordinatesToolOptions|opyFunction|opyable|ornerNeighbors|ounterAssignments|ounterFunction|ounterIncrements|ounterStyleMenuListing|ovarianceEstimatorFunction|reateCellID|reateIntermediateDirectories|riterionFunction|ubics|urveClosed))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:D(?:ataRange|ataReversed|atasetTheme|ateFormat|ateFunction|ateGranularity|ateReduction|ateTicksFormat|ayCountConvention|efaultDuplicateCellStyle|efaultDuration|efaultElement|efaultFontProperties|efaultFormatType|efaultInlineFormatType|efaultNaturalLanguage|efaultNewCellStyle|efaultNewInlineCellStyle|efaultNotebook|efaultOptions|efaultPrintPrecision|efaultStyleDefinitions|einitialization|eletable|eleteContents|eletionWarning|elimiterAutoMatching|elimiterFlashTime|elimiterMatching|elimiters|eliveryFunction|ependentVariables|eployed|escriptorStateSpace|iacriticalPositioning|ialogProlog|ialogSymbols|igitBlock|irectedEdges|irection|iscreteVariables|ispersionEstimatorFunction|isplayAllSteps|isplayFunction|istanceFunction|istributedContexts|ithering|ividers|ockedCell|ockedCells|ynamicEvaluationTimeout|ynamicModuleValues|ynamicUpdating))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:E(?:clipseType|dgeCapacity|dgeCost|dgeLabelStyle|dgeLabels|dgeShapeFunction|dgeStyle|dgeValueRange|dgeValueSizes|dgeWeight|ditCellTagsSettings|ditable|lidedForms|nabled|pilog|pilogFunction|scapeRadius|valuatable|valuationCompletionAction|valuationElements|valuationMonitor|valuator|valuatorNames|ventLabels|xcludePods|xcludedContexts|xcludedForms|xcludedLines|xcludedPhysicalQuantities|xclusions|xclusionsStyle|xponentFunction|xponentPosition|xponentStep|xponentialFamily|xportAutoReplacements|xpressionUUID|xtension|xtentElementFunction|xtentMarkers|xtentSize|xternalDataCharacterEncoding|xternalOptions|xternalTypeSignature))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:F(?:aceGrids|aceGridsStyle|ailureAction|eatureNames|eatureTypes|eedbackSector|eedbackSectorStyle|eedbackType|ieldCompletionFunction|ieldHint|ieldHintStyle|ieldMasked|ieldSize|ileNameDialogSettings|ileNameForms|illing|illingStyle|indSettings|itRegularization|ollowRedirects|ontColor|ontFamily|ontSize|ontSlant|ontSubstitutions|ontTracking|ontVariations|ontWeight|orceVersionInstall|ormBoxOptions|ormLayoutFunction|ormProtectionMethod|ormatType|ormatTypeAutoConvert|ourierParameters|ractionBoxOptions|ractionLine|rame|rameBoxOptions|rameLabel|rameMargins|rameRate|rameStyle|rameTicks|rameTicksStyle|rontEndEventActions|unctionSpace))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:G(?:apPenalty|augeFaceElementFunction|augeFaceStyle|augeFrameElementFunction|augeFrameSize|augeFrameStyle|augeLabels|augeMarkers|augeStyle|aussianIntegers|enerateConditions|eneratedCell|eneratedDocumentBinding|eneratedParameters|eneratedQuantityMagnitudes|eneratorDescription|eneratorHistoryLength|eneratorOutputType|eoArraySize|eoBackground|eoCenter|eoGridLines|eoGridLinesStyle|eoGridRange|eoGridRangePadding|eoLabels|eoLocation|eoModel|eoProjection|eoRange|eoRangePadding|eoResolution|eoScaleBar|eoServer|eoStylingImageFunction|eoZoomLevel|radient|raphHighlight|raphHighlightStyle|raphLayerStyle|raphLayers|raphLayout|ridCreationSettings|ridDefaultElement|ridFrame|ridFrameMargins|ridLines|ridLinesStyle|roupActionBase|roupPageBreakWithin))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:H(?:eaderAlignment|eaderBackground|eaderDisplayFunction|eaderLines|eaderSize|eaderStyle|eads|elpBrowserSettings|iddenItems|olidayCalendar|yperlinkAction|yphenation))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:I(?:conRules|gnoreCase|gnoreDiacritics|gnorePunctuation|mageCaptureFunction|mageFormattingWidth|mageLabels|mageLegends|mageMargins|magePadding|magePreviewFunction|mageRegion|mageResolution|mageSize|mageSizeAction|mageSizeMultipliers|magingDevice|mportAutoReplacements|mportOptions|ncludeConstantBasis|ncludeDefinitions|ncludeDirectories|ncludeFileExtension|ncludeGeneratorTasks|ncludeInflections|ncludeMetaInformation|ncludePods|ncludeQuantities|ncludeSingularSolutions|ncludeWindowTimes|ncludedContexts|ndeterminateThreshold|nflationMethod|nheritScope|nitialSeeding|nitialization|nitializationCell|nitializationCellEvaluation|nitializationCellWarning|nputAliases|nputAssumptions|nputAutoReplacements|nsertResults|nsertionFunction|nteractive|nterleaving|nterpolationOrder|nterpolationPoints|nterpretationBoxOptions|nterpretationFunction|ntervalMarkers|ntervalMarkersStyle|nverseFunctions|temAspectRatio|temDisplayFunction|temSize|temStyle))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:J(?:oined))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:K(?:eepExistingVersion|eyCollisionFunction|eypointStrength))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:L(?:abelStyle|abelVisibility|abelingFunction|abelingSize|anguage|anguageCategory|ayerSizeFunction|eaderSize|earningRate|egendAppearance|egendFunction|egendLabel|egendLayout|egendMargins|egendMarkerSize|egendMarkers|ighting|ightingAngle|imitsPositioning|imitsPositioningTokens|ineBreakWithin|ineIndent|ineIndentMaxFraction|ineIntegralConvolutionScale|ineSpacing|inearOffsetFunction|inebreakAdjustments|inkFunction|inkProtocol|istFormat|istPickerBoxOptions|ocalizeVariables|ocatorAutoCreate|ocatorRegion|ooping))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:M(?:agnification|ailAddressValidation|ailResponseFunction|ailSettings|asking|atchLocalNames|axCellMeasure|axColorDistance|axDuration|axExtraBandwidths|axExtraConditions|axFeatureDisplacement|axFeatures|axItems|axIterations|axMixtureKernels|axOverlapFraction|axPlotPoints|axRecursion|axStepFraction|axStepSize|axSteps|emoryConstraint|enuCommandKey|enuSortingValue|enuStyle|esh|eshCellHighlight|eshCellLabel|eshCellMarker|eshCellShapeFunction|eshCellStyle|eshFunctions|eshQualityGoal|eshRefinementFunction|eshShading|eshStyle|etaInformation|ethod|inColorDistance|inIntervalSize|inPointSeparation|issingBehavior|issingDataMethod|issingDataRules|issingString|issingStyle|odal|odulus|ultiaxisArrangement|ultiedgeStyle|ultilaunchWarning|ultilineFunction|ultiselection))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:N(?:icholsGridLines|ominalVariables|onConstants|ormFunction|ormalized|ormalsFunction|otebookAutoSave|otebookBrowseDirectory|otebookConvertSettings|otebookDynamicExpression|otebookEventActions|otebookPath|otebooksMenu|otificationFunction|ullRecords|ullWords|umberFormat|umberMarks|umberMultiplier|umberPadding|umberPoint|umberSeparator|umberSigns|yquistGridLines))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:O(?:pacityFunction|pacityFunctionScaling|peratingSystem|ptionInspectorSettings|utputAutoOverwrite|utputSizeLimit|verlaps|verscriptBoxOptions|verwriteTarget))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:P(?:IDDerivativeFilter|IDFeedforward|acletSite|adding|addingSize|ageBreakAbove|ageBreakBelow|ageBreakWithin|ageFooterLines|ageFooters|ageHeaderLines|ageHeaders|ageTheme|ageWidth|alettePath|aneled|aragraphIndent|aragraphSpacing|arallelization|arameterEstimator|artBehavior|artitionGranularity|assEventsDown|assEventsUp|asteBoxFormInlineCells|ath|erformanceGoal|ermissions|haseRange|laceholderReplace|layRange|lotLabel|lotLabels|lotLayout|lotLegends|lotMarkers|lotPoints|lotRange|lotRangeClipping|lotRangePadding|lotRegion|lotStyle|lotTheme|odStates|odWidth|olarAxes|olarAxesOrigin|olarGridLines|olarTicks|oleZeroMarkers|recisionGoal|referencesPath|reprocessingRules|reserveColor|reserveImageOptions|rincipalValue|rintAction|rintPrecision|rintingCopies|rintingOptions|rintingPageRange|rintingStartingPageNumber|rintingStyleEnvironment|rintout3DPreviewer|rivateCellOptions|rivateEvaluationOptions|rivateFontOptions|rivateNotebookOptions|rivatePaths|rocessDirectory|rocessEnvironment|rocessEstimator|rogressReporting|rolog|ropagateAborts))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:Q(?:uartics))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:R(?:adicalBoxOptions|andomSeeding|asterSize|eImLabels|eImStyle|ealBlockDiagonalForm|ecognitionPrior|ecordLists|ecordSeparators|eferenceLineStyle|efreshRate|egionBoundaryStyle|egionFillingStyle|egionFunction|egionSize|egularization|enderingOptions|equiredPhysicalQuantities|esampling|esamplingMethod|esolveContextAliases|estartInterval|eturnReceiptFunction|evolutionAxis|otateLabel|otationAction|oundingRadius|owAlignments|owLines|owMinHeight|owSpacings|owsEqual|ulerUnits|untimeAttributes|untimeOptions))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:S(?:ameTest|ampleDepth|ampleRate|amplingPeriod|aveConnection|aveDefinitions|aveable|caleDivisions|caleOrigin|calePadding|caleRangeStyle|caleRanges|calingFunctions|cientificNotationThreshold|creenStyleEnvironment|criptBaselineShifts|criptLevel|criptMinSize|criptSizeMultipliers|crollPosition|crollbars|crollingOptions|ectorOrigin|ectorSpacing|electable|elfLoopStyle|eriesTermGoal|haringList|howAutoSpellCheck|howAutoStyles|howCellBracket|howCellLabel|howCellTags|howClosedCellArea|howContents|howCursorTracker|howGroupOpener|howPageBreaks|howSelection|howShortBoxForm|howSpecialCharacters|howStringCharacters|hrinkingDelay|ignPadding|ignificanceLevel|imilarityRules|ingleLetterItalics|liderBoxOptions|ortedBy|oundVolume|pacings|panAdjustments|panCharacterRounding|panLineThickness|panMaxSize|panMinSize|panSymmetric|pecificityGoal|pellingCorrection|pellingDictionaries|pellingDictionariesPath|pellingOptions|phericalRegion|plineClosed|plineDegree|plineKnots|plineWeights|qrtBoxOptions|tabilityMargins|tabilityMarginsStyle|tandardized|tartingStepSize|tateSpaceRealization|tepMonitor|trataVariables|treamColorFunction|treamColorFunctionScaling|treamMarkers|treamPoints|treamScale|treamStyle|trictInequalities|tripOnInput|tripWrapperBoxes|tructuredSelection|tyleBoxAutoDelete|tyleDefinitions|tyleHints|tyleMenuListing|tyleNameDialogSettings|tyleSheetPath|ubscriptBoxOptions|ubsuperscriptBoxOptions|ubtitleEncoding|uperscriptBoxOptions|urdForm|ynchronousInitialization|ynchronousUpdating|yntaxForm|ystemHelpPath|ystemsModelLabels))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:T(?:abFilling|abSpacings|ableAlignments|ableDepth|ableDirections|ableHeadings|ableSpacing|agBoxOptions|aggingRules|argetFunctions|argetUnits|emplateBoxOptions|emporalRegularity|estID|extAlignment|extClipboardType|extJustification|extureCoordinateFunction|extureCoordinateScaling|icks|icksStyle|imeConstraint|imeDirection|imeFormat|imeGoal|imeSystem|imeZone|okenWords|olerance|ooltipDelay|ooltipStyle|otalWidth|ouchscreenAutoZoom|ouchscreenControlPlacement|raceAbove|raceBackward|raceDepth|raceForward|raceOff|raceOn|raceOriginal|rackedSymbols|rackingFunction|raditionalFunctionNotation|ransformationClass|ransformationFunctions|ransitionDirection|ransitionDuration|ransitionEffect|ranslationOptions|ravelMethod|rendStyle|rig))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:U(?:nderoverscriptBoxOptions|nderscriptBoxOptions|ndoOptions|ndoTrackedVariables|nitSystem|nityDimensions|nsavedVariables|pdateInterval|pdatePacletSites|tilityFunction))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:V(?:alidationLength|alidationSet|alueDimensions|arianceEstimatorFunction|ectorAspectRatio|ectorColorFunction|ectorColorFunctionScaling|ectorMarkers|ectorPoints|ectorRange|ectorScaling|ectorSizes|ectorStyle|erifyConvergence|erifySecurityCertificates|erifySolutions|erifyTestAssumptions|ersionedPreferences|ertexCapacity|ertexColors|ertexCoordinates|ertexDataCoordinates|ertexLabelStyle|ertexLabels|ertexNormals|ertexShape|ertexShapeFunction|ertexSize|ertexStyle|ertexTextureCoordinates|ertexWeight|ideoEncoding|iewAngle|iewCenter|iewMatrix|iewPoint|iewProjection|iewRange|iewVector|iewVertical|isible))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:W(?:aveletScale|eights|hitePoint|indowClickSelect|indowElements|indowFloating|indowFrame|indowFrameElements|indowMargins|indowOpacity|indowSize|indowStatusArea|indowTitle|indowToolbars|ordOrientation|ordSearch|ordSelectionFunction|ordSeparators|ordSpacings|orkingPrecision|rapAround))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:Z(?:eroTest|eroWidthTimes))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:A(?:bove|fter|lgebraics|ll|nonymous|utomatic|xis))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:B(?:ack|ackward|aseline|efore|elow|lack|lue|old|ooleans|ottom|oxes|rown|yte))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:C(?:atalan|ellStyle|enter|haracter|omplexInfinity|omplexes|onstant|yan))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:D(?:ashed|efaultAxesStyle|efaultBaseStyle|efaultBoxStyle|efaultFaceGridsStyle|efaultFieldHintStyle|efaultFrameStyle|efaultFrameTicksStyle|efaultGridLinesStyle|efaultLabelStyle|efaultMenuStyle|efaultTicksStyle|efaultTooltipStyle|egree|elimiter|igitCharacter|otDashed|otted))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:E(?:|ndOfBuffer|ndOfFile|ndOfLine|ndOfString|ulerGamma|xpression))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:F(?:alse|lat|ontProperties|orward|orwardBackward|riday|ront|rontEndDynamicExpression|ull))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:G(?:eneral|laisher|oldenAngle|oldenRatio|ray|reen))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:H(?:ere|exadecimalCharacter|oldAll|oldAllComplete|oldFirst|oldRest))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:I(?:|ndeterminate|nfinity|nherited|nteger|ntegers|talic))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:K(?:hinchin))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:L(?:arge|arger|eft|etterCharacter|ightBlue|ightBrown|ightCyan|ightGray|ightGreen|ightMagenta|ightOrange|ightPink|ightPurple|ightRed|ightYellow|istable|ocked))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:M(?:achinePrecision|agenta|anual|edium|eshCellCentroid|eshCellMeasure|eshCellQuality|onday))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:N(?:HoldAll|HoldFirst|HoldRest|egativeIntegers|egativeRationals|egativeReals|oWhitespace|onNegativeIntegers|onNegativeRationals|onNegativeReals|onPositiveIntegers|onPositiveRationals|onPositiveReals|one|ow|ull|umber|umberString|umericFunction))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:O(?:neIdentity|range|rderless))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:P(?:i|ink|lain|ositiveIntegers|ositiveRationals|ositiveReals|rimes|rotected|unctuationCharacter|urple))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:R(?:ationals|eadProtected|eal|eals|ecord|ed|ight))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:S(?:aturday|equenceHold|mall|maller|panFromAbove|panFromBoth|panFromLeft|tartOfLine|tartOfString|tring|truckthrough|tub|unday))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:T(?:emporary|hick|hin|hursday|iny|oday|omorrow|op|ransparent|rue|uesday))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:U(?:ndefined|nderlined))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:W(?:ednesday|hite|hitespace|hitespaceCharacter|ord|ordBoundary|ordCharacter))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:Y(?:ellow|esterday))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:\\$(?:Aborted|ActivationKey|AllowDataUpdates|AllowInternet|AssertFunction|Assumptions|AudioInputDevices|AudioOutputDevices|BaseDirectory|BasePacletsDirectory|BatchInput|BatchOutput|ByteOrdering|CacheBaseDirectory|Canceled|CharacterEncoding|CharacterEncodings|CloudAccountName|CloudBase|CloudConnected|CloudCreditsAvailable|CloudEvaluation|CloudExpressionBase|CloudObjectNameFormat|CloudObjectURLType|CloudRootDirectory|CloudSymbolBase|CloudUserID|CloudUserUUID|CloudVersion|CommandLine|CompilationTarget|Context|ContextAliases|ContextPath|ControlActiveSetting|Cookies|CreationDate|CurrentLink|CurrentTask|DateStringFormat|DefaultAudioInputDevice|DefaultAudioOutputDevice|DefaultFrontEnd|DefaultImagingDevice|DefaultKernels|DefaultLocalBase|DefaultLocalKernel|Display|DisplayFunction|DistributedContexts|DynamicEvaluation|Echo|EmbedCodeEnvironments|EmbeddableServices|Epilog|EvaluationCloudBase|EvaluationCloudObject|EvaluationEnvironment|ExportFormats|Failed|FontFamilies|FrontEnd|FrontEndSession|GeoLocation|GeoLocationCity|GeoLocationCountry|GeoLocationSource|HomeDirectory|IgnoreEOF|ImageFormattingWidth|ImageResolution|ImagingDevice|ImagingDevices|ImportFormats|InitialDirectory|Input|InputFileName|InputStreamMethods|Inspector|InstallationDirectory|InterpreterTypes|IterationLimit|KernelCount|KernelID|Language|LibraryPath|LicenseExpirationDate|LicenseID|LicenseServer|Linked|LocalBase|LocalSymbolBase|MachineAddresses|MachineDomains|MachineEpsilon|MachineID|MachineName|MachinePrecision|MachineType|MaxExtraPrecision|MaxMachineNumber|MaxNumber|MaxPiecewiseCases|MaxPrecision|MaxRootDegree|MessageGroups|MessageList|MessagePrePrint|Messages|MinMachineNumber|MinNumber|MinPrecision|MobilePhone|ModuleNumber|NetworkConnected|NewMessage|NewSymbol|NotebookInlineStorageLimit|Notebooks|NumberMarks|OperatingSystem|Output|OutputSizeLimit|OutputStreamMethods|Packages|ParentLink|ParentProcessID|PasswordFile|Path|PathnameSeparator|PerformanceGoal|Permissions|PlotTheme|Printout3DPreviewer|ProcessID|ProcessorCount|ProcessorType|ProgressReporting|RandomGeneratorState|RecursionLimit|ReleaseNumber|RequesterAddress|RequesterCloudUserID|RequesterCloudUserUUID|RequesterWolframID|RequesterWolframUUID|RootDirectory|ScriptCommandLine|ScriptInputString|Services|SessionID|SharedFunctions|SharedVariables|SoundDisplayFunction|SynchronousEvaluation|System|SystemCharacterEncoding|SystemID|SystemShell|SystemTimeZone|SystemWordLength|TemplatePath|TemporaryDirectory|TimeUnit|TimeZone|TimeZoneEntity|TimedOut|UnitSystem|Urgent|UserAgentString|UserBaseDirectory|UserBasePacletsDirectory|UserDocumentsDirectory|UserURLBase|Username|Version|VersionNumber|WolframDocumentsDirectory|WolframID|WolframUUID))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "System`(?:A(?:bortScheduledTask|ctive|lgebraicRules|lternateImage|natomyForm|nimationCycleOffset|nimationCycleRepetitions|nimationDisplayTime|spectRatioFixed|stronomicalData|synchronousTaskObject|synchronousTasks|udioDevice|udioLooping))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:B(?:uttonEvaluator|uttonExpandable|uttonFrame|uttonMargins|uttonNote|uttonStyle))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:C(?:DFInformation|hebyshevDistance|lassifierInformation|lipFill|olorOutput|olumnForm|ompose|onstantArrayLayer|onstantPlusLayer|onstantTimesLayer|onstrainedMax|onstrainedMin|ontourGraphics|ontourLines|onversionOptions|reateScheduledTask|reateTemporary|urry))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:D(?:atabinRemove|ate|ebug|efaultColor|efaultFont|ensityGraphics|isplay|isplayString|otPlusLayer|ragAndDrop))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:E(?:dgeLabeling|dgeRenderingFunction|valuateScheduledTask|xpectedValue))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:F(?:actorComplete|ontForm|ormTheme|romDate|ullOptions))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:G(?:raphStyle|raphicsArray|raphicsSpacing|ridBaseline))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:H(?:TMLSave|eldPart|iddenSurface|omeDirectory))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:I(?:mageRotated|nstanceNormalizationLayer))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:L(?:UBackSubstitution|egendreType|ightSources|inearProgramming|inkOpen|iteral|ongestMatch))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:M(?:eshRange|oleculeEquivalentQ))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:N(?:etInformation|etSharedArray|extScheduledTaskTime|otebookCreate))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:O(?:penTemporary))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:P(?:IDData|ackingMethod|ersistentValue|ixelConstrained|lot3Matrix|lotDivision|lotJoined|olygonIntersections|redictorInformation|roperties|roperty|ropertyList|ropertyValue))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:R(?:andom|asterArray|ecognitionThreshold|elease|emoteKernelObject|emoveAsynchronousTask|emoveProperty|emoveScheduledTask|enderAll|eplaceHeldPart|esetScheduledTask|esumePacket|unScheduledTask))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:S(?:cheduledTaskActiveQ|cheduledTaskInformation|cheduledTaskObject|cheduledTasks|creenRectangle|electionAnimate|equenceAttentionLayer|equenceForm|etProperty|hading|hortestMatch|ingularValues|kinStyle|ocialMediaData|tartAsynchronousTask|tartScheduledTask|tateDimensions|topAsynchronousTask|topScheduledTask|tructuredArray|tyleForm|tylePrint|ubscripted|urfaceColor|urfaceGraphics|uspendPacket|ystemModelProgressReporting))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:T(?:eXSave|extStyle|imeWarpingCorrespondence|imeWarpingDistance|oDate|oFileName|oHeldExpression))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:U(?:RLFetch|RLFetchAsynchronous|RLSave|RLSaveAsynchronous))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:V(?:ectorScale|ertexCoordinateRules|ertexLabeling|ertexRenderingFunction))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:W(?:aitAsynchronousTask|indowMovable))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:\\$(?:AsynchronousTask|ConfiguredKernels|DefaultFont|EntityStores|FormatType|HTTPCookies|InstallationDate|MachineDomain|ProductInformation|ProgramName|RandomState|ScheduledTask|SummaryBoxDataSizeLimit|TemporaryPrefix|TextStyle|TopDirectory|UserAddOnsDirectory))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "System`(?:A(?:ctionDelay|ctionMenuBox|ctionMenuBoxOptions|ctiveItem|lgebraicRulesData|lignmentMarker|llowAdultContent|llowChatServices|llowIncomplete|nalytic|nimatorBox|nimatorBoxOptions|nimatorElements|ppendCheck|rgumentCountQ|rrow3DBox|rrowBox|uthenticate|utoEvaluateEvents|utoIndentSpacings|utoMatch|utoNumberFormatting|utoQuoteCharacters|utoScaling|utoStyleOptions|utoStyleWords|utomaticImageSize|xis3DBox|xis3DBoxOptions|xisBox|xisBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:B(?:SplineCurve3DBox|SplineCurve3DBoxOptions|SplineCurveBox|SplineCurveBoxOptions|SplineSurface3DBox|SplineSurface3DBoxOptions|ackFaceColor|ackFaceGlowColor|ackFaceOpacity|ackFaceSpecularColor|ackFaceSpecularExponent|ackFaceSurfaceAppearance|ackFaceTexture|ackgroundAppearance|ackgroundTasksSettings|acksubstitution|eveled|ezierCurve3DBox|ezierCurve3DBoxOptions|ezierCurveBox|ezierCurveBoxOptions|lankForm|ounds|ox|oxDimensions|oxForm|oxID|oxRotation|oxRotationPoint|ra|raKet|rowserCategory|uttonCell|uttonContents|uttonStyleMenuListing))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:C(?:acheGraphics|achedValue|ardinalBSplineBasis|ellBoundingBox|ellContents|ellElementSpacings|ellElementsBoundingBox|ellFrameStyle|ellInsertionPointCell|ellTrayPosition|ellTrayWidgets|hangeOptions|hannelDatabin|hannelListenerWait|hannelPreSendFunction|hartElementData|hartElementDataFunction|heckAll|heckboxBox|heckboxBoxOptions|ircleBox|lipboardNotebook|lockwiseContourIntegral|losed|losingEvent|loudConnections|loudObjectInformation|loudObjectInformationData|loudUserID|oarse|oefficientDomain|olonForm|olorSetterBox|olorSetterBoxOptions|olumnBackgrounds|ompilerEnvironmentAppend|ompletionsListPacket|omponentwiseContextMenu|ompressedData|oneBox|onicHullRegion3DBox|onicHullRegion3DBoxOptions|onicHullRegionBox|onicHullRegionBoxOptions|onnect|ontentsBoundingBox|ontextMenu|ontinuation|ontourIntegral|ontourSmoothing|ontrolAlignment|ontrollerDuration|ontrollerInformationData|onvertToPostScript|onvertToPostScriptPacket|ookies|opyTag|ounterBox|ounterBoxOptions|ounterClockwiseContourIntegral|ounterEvaluator|ounterStyle|uboidBox|uboidBoxOptions|urlyDoubleQuote|urlyQuote|ylinderBox|ylinderBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:D(?:OSTextFormat|ampingFactor|ataCompression|atasetDisplayPanel|ateDelimiters|ebugTag|ecimal|efault2DTool|efault3DTool|efaultAttachedCellStyle|efaultControlPlacement|efaultDockedCellStyle|efaultInputFormatType|efaultOutputFormatType|efaultStyle|efaultTextFormatType|efaultTextInlineFormatType|efaultValue|efineExternal|egreeLexicographic|egreeReverseLexicographic|eleteWithContents|elimitedArray|estroyAfterEvaluation|eviceOpenQ|ialogIndent|ialogLevel|ifferenceOrder|igitBlockMinimum|isableConsolePrintPacket|iskBox|iskBoxOptions|ispatchQ|isplayRules|isplayTemporary|istributionDomain|ivergence|ocumentGeneratorInformationData|omainRegistrationInformation|oubleContourIntegral|oublyInfinite|own|rawBackFaces|rawFrontFaces|rawHighlighted|ualLinearProgramming|umpGet|ynamicBox|ynamicBoxOptions|ynamicLocation|ynamicModuleBox|ynamicModuleBoxOptions|ynamicModuleParent|ynamicName|ynamicNamespace|ynamicReference|ynamicWrapperBox|ynamicWrapperBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:E(?:ditButtonSettings|liminationOrder|llipticReducedHalfPeriods|mbeddingObject|mphasizeSyntaxErrors|mpty|nableConsolePrintPacket|ndAdd|ngineEnvironment|nter|qualColumns|qualRows|quatedTo|rrorBoxOptions|rrorNorm|rrorPacket|rrorsDialogSettings|valuated|valuationMode|valuationOrder|valuationRateLimit|ventEvaluator|ventHandlerTag|xactRootIsolation|xitDialog|xpectationE|xportPacket|xpressionPacket|xternalCall|xternalFunctionName))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:F(?:EDisableConsolePrintPacket|EEnableConsolePrintPacket|ail|ileInformation|ileName|illForm|illedCurveBox|illedCurveBoxOptions|ine|itAll|lashSelection|ont|ontName|ontOpacity|ontPostScriptName|ontReencoding|ormatRules|ormatValues|rameInset|rameless|rontEndObject|rontEndResource|rontEndResourceString|rontEndStackSize|rontEndValueCache|rontEndVersion|rontFaceColor|rontFaceGlowColor|rontFaceOpacity|rontFaceSpecularColor|rontFaceSpecularExponent|rontFaceSurfaceAppearance|rontFaceTexture|ullAxes))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:G(?:eneratedCellStyles|eneric|eometricTransformation3DBox|eometricTransformation3DBoxOptions|eometricTransformationBox|eometricTransformationBoxOptions|estureHandlerTag|etContext|etFileName|etLinebreakInformationPacket|lobalPreferences|lobalSession|raphLayerLabels|raphRoot|raphics3DBox|raphics3DBoxOptions|raphicsBaseline|raphicsBox|raphicsBoxOptions|raphicsComplex3DBox|raphicsComplex3DBoxOptions|raphicsComplexBox|raphicsComplexBoxOptions|raphicsContents|raphicsData|raphicsGridBox|raphicsGroup3DBox|raphicsGroup3DBoxOptions|raphicsGroupBox|raphicsGroupBoxOptions|raphicsGrouping|raphicsStyle|reekStyle|ridBoxAlignment|ridBoxBackground|ridBoxDividers|ridBoxFrame|ridBoxItemSize|ridBoxItemStyle|ridBoxOptions|ridBoxSpacings|ridElementStyleOptions|roupOpenerColor|roupOpenerInsideFrame|roupTogetherGrouping|roupTogetherNestedGrouping))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:H(?:eadCompose|eaders|elpBrowserLookup|elpBrowserNotebook|elpViewerSettings|essian|exahedronBox|exahedronBoxOptions|ighlightString|omePage|orizontal|orizontalForm|orizontalScrollPosition|yperlinkCreationSettings|yphenationOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:I(?:conizedObject|gnoreSpellCheck|mageCache|mageCacheValid|mageEditMode|mageMarkers|mageOffset|mageRangeCache|mageSizeCache|mageSizeRaw|nactiveStyle|ncludeSingularTerm|ndent|ndentMaxFraction|ndentingNewlineSpacings|ndexCreationOptions|ndexTag|nequality|nexactNumbers|nformationData|nformationDataGrid|nlineCounterAssignments|nlineCounterIncrements|nlineRules|nputFieldBox|nputFieldBoxOptions|nputGrouping|nputSettings|nputToBoxFormPacket|nsertionPointObject|nset3DBox|nset3DBoxOptions|nsetBox|nsetBoxOptions|ntegral|nterlaced|nterpolationPrecision|nterpretTemplate|nterruptSettings|nto|nvisibleApplication|nvisibleTimes|temBox|temBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:J(?:acobian|oinedCurveBox|oinedCurveBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:K(?:|ernelExecute|et))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:L(?:abeledSlider|ambertW|anguageOptions|aunch|ayoutInformation|exicographic|icenseID|ine3DBox|ine3DBoxOptions|ineBox|ineBoxOptions|ineBreak|ineWrapParts|inearFilter|inebreakSemicolonWeighting|inkConnectedQ|inkError|inkFlush|inkHost|inkMode|inkOptions|inkReadHeld|inkService|inkWriteHeld|istPickerBoxBackground|isten|iteralSearch|ocalizeDefinitions|ocatorBox|ocatorBoxOptions|ocatorCentering|ocatorPaneBox|ocatorPaneBoxOptions|ongEqual|ongForm|oopback))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:M(?:achineID|achineName|acintoshSystemPageSetup|ainSolve|aintainDynamicCaches|akeRules|atchLocalNameQ|aterial|athMLText|athematicaNotation|axBend|axPoints|enu|enuAppearance|enuEvaluator|enuItem|enuList|ergeDifferences|essageObject|essageOptions|essagesNotebook|etaCharacters|ethodOptions|inRecursion|inSize|ode|odular|onomialOrder|ouseAppearanceTag|ouseButtons|ousePointerNote|ultiLetterItalics|ultiLetterStyle|ultiplicity|ultiscriptBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:N(?:BernoulliB|ProductFactors|SumTerms|Values|amespaceBox|amespaceBoxOptions|estedScriptRules|etworkPacketRecordingDuring|ext|onAssociative|ormalGrouping|otebookDefault|otebookInterfaceObject))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:O(?:LEData|bjectExistsQ|pen|penFunctionInspectorPacket|penSpecialOptions|penerBox|penerBoxOptions|ptionQ|ptionValueBox|ptionValueBoxOptions|ptionsPacket|utputFormData|utputGrouping|utputMathEditExpression|ver|verlayBox|verlayBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:P(?:ackPaclet|ackage|acletDirectoryAdd|acletDirectoryRemove|acletInformation|acletObjectQ|acletUpdate|ageHeight|alettesMenuSettings|aneBox|aneBoxOptions|aneSelectorBox|aneSelectorBoxOptions|anelBox|anelBoxOptions|aperWidth|arameter|arameterVariables|arentConnect|arentForm|arentList|arenthesize|artialD|asteAutoQuoteCharacters|ausedTime|eriodicInterpolation|erpendicular|ickMode|ickedElements|ivoting|lotRangeClipPlanesStyle|oint3DBox|oint3DBoxOptions|ointBox|ointBoxOptions|olygon3DBox|olygon3DBoxOptions|olygonBox|olygonBoxOptions|olygonHoleScale|olygonScale|olyhedronBox|olyhedronBoxOptions|olynomialForm|olynomials|opupMenuBox|opupMenuBoxOptions|ostScript|recedence|redictionRoot|referencesSettings|revious|rimaryPlaceholder|rintForm|rismBox|rismBoxOptions|rivateFrontEndOptions|robabilityPr|rocessStateDomain|rocessTimeDomain|rogressIndicatorBox|rogressIndicatorBoxOptions|romptForm|yramidBox|yramidBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:R(?:adioButtonBox|adioButtonBoxOptions|andomSeed|angeSpecification|aster3DBox|aster3DBoxOptions|asterBox|asterBoxOptions|ationalFunctions|awArray|awMedium|ebuildPacletData|ectangleBox|ecurringDigitsForm|eferenceMarkerStyle|eferenceMarkers|einstall|emoved|epeatedString|esourceAcquire|esourceSubmissionObject|eturnCreatesNewCell|eturnEntersInput|eturnInputFormPacket|otationBox|otationBoxOptions|oundImplies|owBackgrounds|owHeights|uleCondition|uleForm))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:S(?:aveAutoDelete|caledMousePosition|cheduledTaskInformationData|criptForm|criptRules|ectionGrouping|electWithContents|election|electionCell|electionCellCreateCell|electionCellDefaultStyle|electionCellParentStyle|electionPlaceholder|elfLoops|erviceResponse|etOptionsPacket|etSecuredAuthenticationKey|etbacks|etterBox|etterBoxOptions|howAutoConvert|howCodeAssist|howControls|howGroupOpenCloseIcon|howInvisibleCharacters|howPredictiveInterface|howSyntaxStyles|hrinkWrapBoundingBox|ingleEvaluation|ingleLetterStyle|lider2DBox|lider2DBoxOptions|ocket|olveDelayed|oundAndGraphics|pace|paceForm|panningCharacters|phereBox|phereBoxOptions|tartupSound|tringBreak|tringByteCount|tripStyleOnPaste|trokeForm|tructuredArrayHeadQ|tyleKeyMapping|tyleNames|urfaceAppearance|yntax|ystemException|ystemGet|ystemInformationData|ystemStub|ystemTest))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:T(?:ab|abViewBox|abViewBoxOptions|ableViewBox|ableViewBoxAlignment|ableViewBoxBackground|ableViewBoxHeaders|ableViewBoxItemSize|ableViewBoxItemStyle|ableViewBoxOptions|agBoxNote|agStyle|emplateEvaluate|emplateSlotSequence|emplateUnevaluated|emplateVerbatim|emporaryVariable|ensorQ|etrahedronBox|etrahedronBoxOptions|ext3DBox|ext3DBoxOptions|extBand|extBoundingBox|extBox|extForm|extLine|extParagraph|hisLink|itleGrouping|oColor|oggle|oggleFalse|ogglerBox|ogglerBoxOptions|ooBig|ooltipBox|ooltipBoxOptions|otalHeight|raceAction|raceInternal|raceLevel|rackCellChangeTimes|raditionalNotation|raditionalOrder|ransparentColor|rapEnterKey|rapSelection|ubeBSplineCurveBox|ubeBSplineCurveBoxOptions|ubeBezierCurveBox|ubeBezierCurveBoxOptions|ubeBox|ubeBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:U(?:ntrackedVariables|p|seGraphicsRange|serDefinedWavelet|sing))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:V(?:2Get|alueBox|alueBoxOptions|alueForm|aluesData|ectorGlyphData|erbose|ertical|erticalForm|iewPointSelectorSettings|iewPort|irtualGroupData|isibleCell))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:W(?:aitUntil|ebPageMetaInformation|holeCellGroupOpener|indowPersistentStyles|indowSelected|indowWidth|olframAlphaDate|olframAlphaQuantity|olframAlphaResult|olframCloudSettings))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:\\$(?:ActivationGroupID|ActivationUserRegistered|AddOnsDirectory|BoxForms|CloudConnection|CloudVersionNumber|CloudWolframEngineVersionNumber|ConditionHold|DefaultMailbox|DefaultPath|FinancialDataSource|GeoEntityTypes|GeoLocationPrecision|HTMLExportRules|HTTPRequest|LaunchDirectory|LicenseProcesses|LicenseSubprocesses|LicenseType|LinkSupported|LoadedFiles|MaxLicenseProcesses|MaxLicenseSubprocesses|MinorReleaseNumber|NetworkLicense|Off|OutputForms|PatchLevelID|PermissionsGroupBase|PipeSupported|PreferencesDirectory|PrintForms|PrintLiteral|RegisteredDeviceClasses|RegisteredUserName|SecuredAuthenticationKeyTokens|SetParentLink|SoundDisplay|SuppressInputFormHeads|SystemMemory|TraceOff|TraceOn|TracePattern|TracePostAction|TracePreAction|UserAgentLanguages|UserAgentMachine|UserAgentName|UserAgentOperatingSystem|UserAgentVersion|UserName))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "System`(?:A(?:ctiveClassification|ctiveClassificationObject|ctivePrediction|ctivePredictionObject|ddToSearchIndex|ggregatedEntityClass|ggregationLayer|ngleBisector|nimatedImage|nimationVideo|nomalyDetector|ppendLayer|pplication|pplyReaction|round|roundReplace|rrayReduce|sk|skAppend|skConfirm|skDisplay|skFunction|skState|skTemplateDisplay|skedQ|skedValue|ssessmentFunction|ssessmentResultObject|ssumeDeterministic|stroAngularSeparation|stroBackground|stroCenter|stroDistance|stroGraphics|stroGridLines|stroGridLinesStyle|stroPosition|stroProjection|stroRange|stroRangePadding|stroReferenceFrame|stroStyling|stroZoomLevel|tom|tomCoordinates|tomCount|tomDiagramCoordinates|tomLabelStyle|tomLabels|tomList|ttachCell|ttentionLayer|udioAnnotate|udioAnnotationLookup|udioIdentify|udioInstanceQ|udioPause|udioPlay|udioRecord|udioStop|udioStream|udioStreams|udioTrackApply|udioTrackSelection|utocomplete|utocompletionFunction|xiomaticTheory|xisLabel|xisObject|xisStyle))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:B(?:asicRecurrentLayer|atchNormalizationLayer|atchSize|ayesianMaximization|ayesianMaximizationObject|ayesianMinimization|ayesianMinimizationObject|esagL|innedVariogramList|inomialPointProcess|ioSequence|ioSequenceBackTranslateList|ioSequenceComplement|ioSequenceInstances|ioSequenceModify|ioSequencePlot|ioSequenceQ|ioSequenceReverseComplement|ioSequenceTranscribe|ioSequenceTranslate|itRate|lockDiagonalMatrix|lockLowerTriangularMatrix|lockUpperTriangularMatrix|lockchainAddressData|lockchainBase|lockchainBlockData|lockchainContractValue|lockchainData|lockchainGet|lockchainKeyEncode|lockchainPut|lockchainTokenData|lockchainTransaction|lockchainTransactionData|lockchainTransactionSign|lockchainTransactionSubmit|ond|ondCount|ondLabelStyle|ondLabels|ondList|ondQ|uildCompiledComponent))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:C(?:TCLossLayer|achePersistence|anvas|ast|ategoricalDistribution|atenateLayer|auchyPointProcess|hannelBase|hannelBrokerAction|hannelHistoryLength|hannelListen|hannelListener|hannelListeners|hannelObject|hannelReceiverFunction|hannelSend|hannelSubscribers|haracterNormalize|hemicalConvert|hemicalFormula|hemicalInstance|hemicalReaction|loudExpression|loudExpressions|loudRenderingMethod|ombinatorB|ombinatorC|ombinatorI|ombinatorK|ombinatorS|ombinatorW|ombinatorY|ombinedEntityClass|ompiledCodeFunction|ompiledComponent|ompiledExpressionDeclaration|ompiledLayer|ompilerCallback|ompilerEnvironment|ompilerEnvironmentAppendTo|ompilerEnvironmentObject|ompilerOptions|omplementedEntityClass|omputeUncertainty|onfirmQuiet|onformationMethod|onnectSystemModelComponents|onnectSystemModelController|onnectedMoleculeComponents|onnectedMoleculeQ|onnectionSettings|ontaining|ontentDetectorFunction|ontentFieldOptions|ontentLocationFunction|ontentObject|ontrastiveLossLayer|onvolutionLayer|reateChannel|reateCloudExpression|reateCompilerEnvironment|reateDataStructure|reateDataSystemModel|reateLicenseEntitlement|reateSearchIndex|reateSystemModel|reateTypeInstance|rossEntropyLossLayer|urrentNotebookImage|urrentScreenImage|urryApplied))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:D(?:SolveChangeVariables|ataStructure|ataStructureQ|atabaseConnect|atabaseDisconnect|atabaseReference|atabinSubmit|ateInterval|eclareCompiledComponent|econvolutionLayer|ecryptFile|eleteChannel|eleteCloudExpression|eleteElements|eleteSearchIndex|erivedKey|iggleGatesPointProcess|iggleGrattonPointProcess|igitalSignature|isableFormatting|ocumentWeightingRules|otLayer|ownValuesFunction|ropoutLayer|ynamicImage))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:E(?:choTiming|lementwiseLayer|mbeddedSQLEntityClass|mbeddedSQLExpression|mbeddingLayer|mptySpaceF|ncryptFile|ntityFunction|ntityStore|stimatedPointProcess|stimatedVariogramModel|valuationEnvironment|valuationPrivileges|xpirationDate|xpressionTree|xtendedEntityClass|xternalEvaluate|xternalFunction|xternalIdentifier|xternalObject|xternalSessionObject|xternalSessions|xternalStorageBase|xternalStorageDownload|xternalStorageGet|xternalStorageObject|xternalStoragePut|xternalStorageUpload|xternalValue|xtractLayer))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:F(?:aceRecognize|eatureDistance|eatureExtract|eatureExtraction|eatureExtractor|eatureExtractorFunction|ileConvert|ileFormatProperties|ileNameToFormatList|ileSystemTree|ilteredEntityClass|indChannels|indEquationalProof|indExternalEvaluators|indGeometricConjectures|indImageText|indIsomers|indMoleculeSubstructure|indPointProcessParameters|indSystemModelEquilibrium|indTextualAnswer|lattenLayer|orAllType|ormControl|orwardCloudCredentials|oxHReduce|rameListVideo|romRawPointer|unctionCompile|unctionCompileExport|unctionCompileExportByteArray|unctionCompileExportLibrary|unctionCompileExportString|unctionDeclaration|unctionLayer|unctionPoles))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:G(?:alleryView|atedRecurrentLayer|enerateDerivedKey|enerateDigitalSignature|enerateFileSignature|enerateSecuredAuthenticationKey|eneratedAssetFormat|eneratedAssetLocation|eoGraphValuePlot|eoOrientationData|eometricAssertion|eometricScene|eometricStep|eometricStylingRules|eometricTest|ibbsPointProcess|raphTree|ridVideo))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:H(?:andlerFunctions|andlerFunctionsKeys|ardcorePointProcess|istogramPointDensity))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:I(?:gnoreIsotopes|gnoreStereochemistry|mageAugmentationLayer|mageBoundingBoxes|mageCases|mageContainsQ|mageContents|mageGraphics|magePosition|magePyramid|magePyramidApply|mageStitch|mportedObject|ncludeAromaticBonds|ncludeHydrogens|ncludeRelatedTables|nertEvaluate|nertExpression|nfiniteFuture|nfinitePast|nhomogeneousPoissonPointProcess|nitialEvaluationHistory|nitializationObject|nitializationObjects|nitializationValue|nitialize|nputPorts|ntegrateChangeVariables|nterfaceSwitched|ntersectedEntityClass|nverseImagePyramid))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:K(?:ernelConfiguration|ernelFunction))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:L(?:earningRateMultipliers|ibraryFunctionDeclaration|icenseEntitlementObject|icenseEntitlements|icensingSettings|inearLayer|iteralType|oadCompiledComponent|ocalResponseNormalizationLayer|ongShortTermMemoryLayer|ossFunction))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:M(?:IMETypeToFormatList|ailExecute|ailFolder|ailItem|ailSearch|ailServerConnect|ailServerConnection|aternPointProcess|axDisplayedChildren|axTrainingRounds|axWordGap|eanAbsoluteLossLayer|eanAround|eanPointDensity|eanSquaredLossLayer|ergingFunction|idpoint|issingValuePattern|issingValueSynthesis|olecule|oleculeAlign|oleculeContainsQ|oleculeDraw|oleculeFreeQ|oleculeGraph|oleculeMatchQ|oleculeMaximumCommonSubstructure|oleculeModify|oleculeName|oleculePattern|oleculePlot|oleculePlot3D|oleculeProperty|oleculeQ|oleculeRecognize|oleculeSubstructureCount|oleculeValue))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:N(?:BodySimulation|BodySimulationData|earestNeighborG|estTree|etAppend|etArray|etArrayLayer|etBidirectionalOperator|etChain|etDecoder|etDelete|etDrop|etEncoder|etEvaluationMode|etExternalObject|etExtract|etFlatten|etFoldOperator|etGANOperator|etGraph|etInitialize|etInsert|etInsertSharedArrays|etJoin|etMapOperator|etMapThreadOperator|etMeasurements|etModel|etNestOperator|etPairEmbeddingOperator|etPort|etPortGradient|etPrepend|etRename|etReplace|etReplacePart|etStateObject|etTake|etTrain|etTrainResultsObject|etUnfold|etworkPacketCapture|etworkPacketRecording|etworkPacketTrace|eymanScottPointProcess|ominalScale|ormalizationLayer|umericArray|umericArrayQ|umericArrayType))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:O(?:peratorApplied|rderingLayer|rdinalScale|utputPorts|verlayVideo))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:P(?:acletSymbol|addingLayer|agination|airCorrelationG|arametricRampLayer|arentEdgeLabel|arentEdgeLabelFunction|arentEdgeLabelStyle|arentEdgeShapeFunction|arentEdgeStyle|arentEdgeStyleFunction|artLayer|artProtection|atternFilling|atternReaction|enttinenPointProcess|erpendicularBisector|ersistenceLocation|ersistenceTime|ersistentObject|ersistentObjects|ersistentSymbol|itchRecognize|laceholderLayer|laybackSettings|ointCountDistribution|ointDensity|ointDensityFunction|ointProcessEstimator|ointProcessFitTest|ointProcessParameterAssumptions|ointProcessParameterQ|ointStatisticFunction|ointValuePlot|oissonPointProcess|oolingLayer|rependLayer|roofObject|ublisherID))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:Q(?:uestionGenerator|uestionInterface|uestionObject|uestionSelector))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:R(?:andomArrayLayer|andomInstance|andomPointConfiguration|andomTree|eactionBalance|eactionBalancedQ|ecalibrationFunction|egisterExternalEvaluator|elationalDatabase|emoteAuthorizationCaching|emoteBatchJobAbort|emoteBatchJobObject|emoteBatchJobs|emoteBatchMapSubmit|emoteBatchSubmissionEnvironment|emoteBatchSubmit|emoteConnect|emoteConnectionObject|emoteEvaluate|emoteFile|emoteInputFiles|emoteProviderSettings|emoteRun|emoteRunProcess|emovalConditions|emoveAudioStream|emoveChannelListener|emoveChannelSubscribers|emoveVideoStream|eplicateLayer|eshapeLayer|esizeLayer|esourceFunction|esourceRegister|esourceRemove|esourceSubmit|esourceSystemBase|esourceSystemPath|esourceUpdate|esourceVersion|everseApplied|ipleyK|ipleyRassonRegion|ootTree|ulesTree))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:S(?:ameTestProperties|ampledEntityClass|earchAdjustment|earchIndexObject|earchIndices|earchQueryString|earchResultObject|ecuredAuthenticationKey|ecuredAuthenticationKeys|ecurityCertificate|equenceIndicesLayer|equenceLastLayer|equenceMostLayer|equencePredict|equencePredictorFunction|equenceRestLayer|equenceReverseLayer|erviceRequest|erviceSubmit|etFileFormatProperties|etSystemModel|lideShowVideo|moothPointDensity|nippet|nippetsVideo|nubPolyhedron|oftmaxLayer|olidBoundaryLoadValue|olidDisplacementCondition|olidFixedCondition|olidMechanicsPDEComponent|olidMechanicsStrain|olidMechanicsStress|ortedEntityClass|ourceLink|patialBinnedPointData|patialBoundaryCorrection|patialEstimate|patialEstimatorFunction|patialJ|patialNoiseLevel|patialObservationRegionQ|patialPointData|patialPointSelect|patialRandomnessTest|patialTransformationLayer|patialTrendFunction|peakerMatchQ|peechCases|peechInterpreter|peechRecognize|plice|tartExternalSession|tartWebSession|tereochemistryElements|traussHardcorePointProcess|traussPointProcess|ubsetCases|ubsetCount|ubsetPosition|ubsetReplace|ubtitleTrackSelection|ummationLayer|ymmetricDifference|ynthesizeMissingValues|ystemCredential|ystemCredentialData|ystemCredentialKey|ystemCredentialKeys|ystemCredentialStoreObject|ystemInstall|ystemModel|ystemModelExamples|ystemModelLinearize|ystemModelMeasurements|ystemModelParametricSimulate|ystemModelPlot|ystemModelReliability|ystemModelSimulate|ystemModelSimulateSensitivity|ystemModelSimulationData|ystemModeler|ystemModels))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:T(?:ableView|argetDevice|argetSystem|ernaryListPlot|ernaryPlotCorners|extCases|extContents|extElement|extPosition|extSearch|extSearchReport|extStructure|homasPointProcess|hreaded|hreadingLayer|ickDirection|ickLabelOrientation|ickLabelPositioning|ickLabels|ickLengths|ickPositions|oRawPointer|otalLayer|ourVideo|rainImageContentDetector|rainTextContentDetector|rainingProgressCheckpointing|rainingProgressFunction|rainingProgressMeasurements|rainingProgressReporting|rainingStoppingCriterion|rainingUpdateSchedule|ransposeLayer|ree|reeCases|reeChildren|reeCount|reeData|reeDelete|reeDepth|reeElementCoordinates|reeElementLabel|reeElementLabelFunction|reeElementLabelStyle|reeElementShape|reeElementShapeFunction|reeElementSize|reeElementSizeFunction|reeElementStyle|reeElementStyleFunction|reeExpression|reeExtract|reeFold|reeInsert|reeLayout|reeLeafCount|reeLeafQ|reeLeaves|reeLevel|reeMap|reeMapAt|reeOutline|reePosition|reeQ|reeReplacePart|reeRules|reeScan|reeSelect|reeSize|reeTraversalOrder|riangleCenter|riangleConstruct|riangleMeasurement|ypeDeclaration|ypeEvaluate|ypeOf|ypeSpecifier|yped))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:U(?:RLDownloadSubmit|nconstrainedParameters|nionedEntityClass|niqueElements|nitVectorLayer|nlabeledTree|nmanageObject|nregisterExternalEvaluator|pdateSearchIndex|seEmbeddedLibrary))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:V(?:alenceErrorHandling|alenceFilling|aluePreprocessingFunction|andermondeMatrix|arianceGammaPointProcess|ariogramFunction|ariogramModel|ectorAround|erifyDerivedKey|erifyDigitalSignature|erifyFileSignature|erifyInterpretation|ideo|ideoCapture|ideoCombine|ideoDelete|ideoExtractFrames|ideoFrameList|ideoFrameMap|ideoGenerator|ideoInsert|ideoIntervals|ideoJoin|ideoMap|ideoMapList|ideoMapTimeSeries|ideoPadding|ideoPause|ideoPlay|ideoQ|ideoRecord|ideoReplace|ideoScreenCapture|ideoSplit|ideoStop|ideoStream|ideoStreams|ideoTimeStretch|ideoTrackSelection|ideoTranscode|ideoTransparency|ideoTrim))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:W(?:ebAudioSearch|ebColumn|ebElementObject|ebExecute|ebImage|ebImageSearch|ebItem|ebRow|ebSearch|ebSessionObject|ebSessions|ebWindowObject|ikidataData|ikidataSearch|ikipediaSearch|ithCleanup|ithLock))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:Z(?:oomCenter|oomFactor))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:\\$(?:AllowExternalChannelFunctions|AudioDecoders|AudioEncoders|BlockchainBase|ChannelBase|CompilerEnvironment|CookieStore|CryptographicEllipticCurveNames|CurrentWebSession|DataStructures|DefaultNetworkInterface|DefaultProxyRules|DefaultRemoteBatchSubmissionEnvironment|DefaultRemoteKernel|DefaultSystemCredentialStore|ExternalIdentifierTypes|ExternalStorageBase|GeneratedAssetLocation|IncomingMailSettings|Initialization|InitializationContexts|MaxDisplayedChildren|NetworkInterfaces|NoValue|PersistenceBase|PersistencePath|PreInitialization|PublisherID|ResourceSystemBase|ResourceSystemPath|SSHAuthentication|ServiceCreditsAvailable|SourceLink|SubtitleDecoders|SubtitleEncoders|SystemCredentialStore|TargetSystems|TestFileName|VideoDecoders|VideoEncoders|VoiceStyles))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "System`(?:E(?:cho|xit))(?![`$[:alnum:]])",
+ "name": "invalid.session.wolfram"
+ },
+ {
+ "match": "System`(?:I(?:n|nString))(?![`$[:alnum:]])",
+ "name": "invalid.session.wolfram"
+ },
+ {
+ "match": "System`(?:O(?:ut))(?![`$[:alnum:]])",
+ "name": "invalid.session.wolfram"
+ },
+ {
+ "match": "System`(?:P(?:rint))(?![`$[:alnum:]])",
+ "name": "invalid.session.wolfram"
+ },
+ {
+ "match": "System`(?:Q(?:uit))(?![`$[:alnum:]])",
+ "name": "invalid.session.wolfram"
+ },
+ {
+ "match": "System`(?:\\$(?:HistoryLength|Line|Post|Pre|PrePrint|PreRead|SyntaxHandler))(?![`$[:alnum:]])",
+ "name": "invalid.session.wolfram"
+ },
+ {
+ "match": "System`(?:[$[:alpha:]][$[:alnum:]]*)(?![`$[:alnum:]])",
+ "name": "invalid.illegal.system.wolfram"
+ },
+ {
+ "match": "(?:[$[:alpha:]][$[:alnum:]]*)(?:`(?:[$[:alpha:]][$[:alnum:]]*))+(?=\\s*(\\[(?!\\s*\\[)|@(?!@)))",
+ "name": "variable.function.wolfram"
+ },
+ {
+ "match": "(?:[$[:alpha:]][$[:alnum:]]*)(?:`(?:[$[:alpha:]][$[:alnum:]]*))+",
+ "name": "symbol.unrecognized.wolfram"
+ },
+ {
+ "match": "(?:[$[:alpha:]][$[:alnum:]]*)`",
+ "name": "invalid.illegal.wolfram"
+ },
+ {
+ "match": "(?:`(?:[$[:alpha:]][$[:alnum:]]*))+(?=\\s*(\\[(?!\\s*\\[)|@(?!@)))",
+ "name": "variable.function.wolfram"
+ },
+ {
+ "match": "(?:`(?:[$[:alpha:]][$[:alnum:]]*))+",
+ "name": "symbol.unrecognized.wolfram"
+ },
+ {
+ "match": "`",
+ "name": "invalid.illegal.wolfram"
+ },
+ {
+ "match": "(?:A(?:ASTriangle|PIFunction|RCHProcess|RIMAProcess|RMAProcess|RProcess|SATriangle|belianGroup|bort|bortKernels|bortProtect|bs|bsArg|bsArgPlot|bsoluteCorrelation|bsoluteCorrelationFunction|bsoluteCurrentValue|bsoluteDashing|bsoluteFileName|bsoluteOptions|bsolutePointSize|bsoluteThickness|bsoluteTime|bsoluteTiming|ccountingForm|ccumulate|ccuracy|cousticAbsorbingValue|cousticImpedanceValue|cousticNormalVelocityValue|cousticPDEComponent|cousticPressureCondition|cousticRadiationValue|cousticSoundHardValue|cousticSoundSoftCondition|ctionMenu|ctivate|cyclicGraphQ|ddSides|ddTo|ddUsers|djacencyGraph|djacencyList|djacencyMatrix|djacentMeshCells|djugate|djustTimeSeriesForecast|djustmentBox|dministrativeDivisionData|ffineHalfSpace|ffineSpace|ffineStateSpaceModel|ffineTransform|irPressureData|irSoundAttenuation|irTemperatureData|ircraftData|irportData|iryAi|iryAiPrime|iryAiZero|iryBi|iryBiPrime|iryBiZero|lgebraicIntegerQ|lgebraicNumber|lgebraicNumberDenominator|lgebraicNumberNorm|lgebraicNumberPolynomial|lgebraicNumberTrace|lgebraicUnitQ|llTrue|lphaChannel|lphabet|lphabeticOrder|lphabeticSort|lternatingFactorial|lternatingGroup|lternatives|mbientLight|mbiguityList|natomyData|natomyPlot3D|natomyStyling|nd|ndersonDarlingTest|ngerJ|ngleBracket|nglePath|nglePath3D|ngleVector|ngularGauge|nimate|nimator|nnotate|nnotation|nnotationDelete|nnotationKeys|nnotationValue|nnuity|nnuityDue|nnulus|nomalyDetection|nomalyDetectorFunction|ntihermitian|ntihermitianMatrixQ|ntisymmetric|ntisymmetricMatrixQ|ntonyms|nyOrder|nySubset|nyTrue|part|partSquareFree|ppellF1|ppend|ppendTo|pply|pplySides|pplyTo|rcCos|rcCosh|rcCot|rcCoth|rcCsc|rcCsch|rcCurvature|rcLength|rcSec|rcSech|rcSin|rcSinDistribution|rcSinh|rcTan|rcTanh|rea|rg|rgMax|rgMin|rgumentsOptions|rithmeticGeometricMean|rray|rrayComponents|rrayDepth|rrayFilter|rrayFlatten|rrayMesh|rrayPad|rrayPlot|rrayPlot3D|rrayQ|rrayResample|rrayReshape|rrayRules|rrays|rrow|rrowheads|ssert|ssociateTo|ssociation|ssociationMap|ssociationQ|ssociationThread|ssuming|symptotic|symptoticDSolveValue|symptoticEqual|symptoticEquivalent|symptoticExpectation|symptoticGreater|symptoticGreaterEqual|symptoticIntegrate|symptoticLess|symptoticLessEqual|symptoticOutputTracker|symptoticProbability|symptoticProduct|symptoticRSolveValue|symptoticSolve|symptoticSum|tomQ|ttributes|udio|udioAmplify|udioBlockMap|udioCapture|udioChannelCombine|udioChannelMix|udioChannelSeparate|udioChannels|udioData|udioDelay|udioDelete|udioDistance|udioFade|udioFrequencyShift|udioGenerator|udioInsert|udioIntervals|udioJoin|udioLength|udioLocalMeasurements|udioLoudness|udioMeasurements|udioNormalize|udioOverlay|udioPad|udioPan|udioPartition|udioPitchShift|udioPlot|udioQ|udioReplace|udioResample|udioReverb|udioReverse|udioSampleRate|udioSpectralMap|udioSpectralTransformation|udioSplit|udioTimeStretch|udioTrim|udioType|ugmentedPolyhedron|ugmentedSymmetricPolynomial|uthenticationDialog|utoRefreshed|utoSubmitting|utocorrelationTest))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:B(?:SplineBasis|SplineCurve|SplineFunction|SplineSurface|abyMonsterGroupB|ackslash|all|and|andpassFilter|andstopFilter|arChart|arChart3D|arLegend|arabasiAlbertGraphDistribution|arcodeImage|arcodeRecognize|aringhausHenzeTest|arlowProschanImportance|arnesG|artlettHannWindow|artlettWindow|aseDecode|aseEncode|aseForm|atesDistribution|attleLemarieWavelet|ecause|eckmannDistribution|eep|egin|eginDialogPacket|eginPackage|ellB|ellY|enfordDistribution|eniniDistribution|enktanderGibratDistribution|enktanderWeibullDistribution|ernoulliB|ernoulliDistribution|ernoulliGraphDistribution|ernoulliProcess|ernsteinBasis|esselFilterModel|esselI|esselJ|esselJZero|esselK|esselY|esselYZero|eta|etaBinomialDistribution|etaDistribution|etaNegativeBinomialDistribution|etaPrimeDistribution|etaRegularized|etween|etweennessCentrality|eveledPolyhedron|ezierCurve|ezierFunction|ilateralFilter|ilateralLaplaceTransform|ilateralZTransform|inCounts|inLists|inarize|inaryDeserialize|inaryDistance|inaryImageQ|inaryRead|inaryReadList|inarySerialize|inaryWrite|inomial|inomialDistribution|inomialProcess|inormalDistribution|iorthogonalSplineWavelet|ipartiteGraphQ|iquadraticFilterModel|irnbaumImportance|irnbaumSaundersDistribution|itAnd|itClear|itGet|itLength|itNot|itOr|itSet|itShiftLeft|itShiftRight|itXor|iweightLocation|iweightMidvariance|lackmanHarrisWindow|lackmanNuttallWindow|lackmanWindow|lank|lankNullSequence|lankSequence|lend|lock|lockMap|lockRandom|lomqvistBeta|lomqvistBetaTest|lur|lurring|odePlot|ohmanWindow|oole|ooleanConsecutiveFunction|ooleanConvert|ooleanCountingFunction|ooleanFunction|ooleanGraph|ooleanMaxterms|ooleanMinimize|ooleanMinterms|ooleanQ|ooleanRegion|ooleanTable|ooleanVariables|orderDimensions|orelTannerDistribution|ottomHatTransform|oundaryDiscretizeGraphics|oundaryDiscretizeRegion|oundaryMesh|oundaryMeshRegion|oundaryMeshRegionQ|oundedRegionQ|oundingRegion|oxData|oxMatrix|oxObject|oxWhiskerChart|racketingBar|rayCurtisDistance|readthFirstScan|reak|ridgeData|rightnessEqualize|roadcastStationData|rownForsytheTest|rownianBridgeProcess|ubbleChart|ubbleChart3D|uckyballGraph|uildingData|ulletGauge|usinessDayQ|utterflyGraph|utterworthFilterModel|utton|uttonBar|uttonBox|uttonNotebook|yteArray|yteArrayFormat|yteArrayFormatQ|yteArrayQ|yteArrayToString|yteCount))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:C(?:|DF|DFDeploy|DFWavelet|Form|MYKColor|SGRegion|SGRegionQ|SGRegionTree|alendarConvert|alendarData|allPacket|allout|anberraDistance|ancel|ancelButton|andlestickChart|anonicalGraph|anonicalName|anonicalWarpingCorrespondence|anonicalWarpingDistance|anonicalizePolygon|anonicalizePolyhedron|anonicalizeRegion|antorMesh|antorStaircase|ap|apForm|apitalDifferentialD|apitalize|apsuleShape|aputoD|arlemanLinearize|arlsonRC|arlsonRD|arlsonRE|arlsonRF|arlsonRG|arlsonRJ|arlsonRK|arlsonRM|armichaelLambda|aseSensitive|ases|ashflow|asoratian|atalanNumber|atch|atenate|auchyDistribution|auchyMatrix|auchyWindow|ayleyGraph|eiling|ell|ellGroup|ellGroupData|ellObject|ellPrint|ells|ellularAutomaton|ensoredDistribution|ensoring|enterArray|enterDot|enteredInterval|entralFeature|entralMoment|entralMomentGeneratingFunction|epstrogram|epstrogramArray|epstrumArray|hampernowneNumber|hanVeseBinarize|haracterCounts|haracterName|haracterRange|haracteristicFunction|haracteristicPolynomial|haracters|hebyshev1FilterModel|hebyshev2FilterModel|hebyshevT|hebyshevU|heck|heckAbort|heckArguments|heckbox|heckboxBar|hemicalData|hessboardDistance|hiDistribution|hiSquareDistribution|hineseRemainder|hoiceButtons|hoiceDialog|holeskyDecomposition|hop|hromaticPolynomial|hromaticityPlot|hromaticityPlot3D|ircle|ircleDot|ircleMinus|irclePlus|irclePoints|ircleThrough|ircleTimes|irculantGraph|ircularArcThrough|ircularOrthogonalMatrixDistribution|ircularQuaternionMatrixDistribution|ircularRealMatrixDistribution|ircularSymplecticMatrixDistribution|ircularUnitaryMatrixDistribution|ircumsphere|ityData|lassifierFunction|lassifierMeasurements|lassifierMeasurementsObject|lassify|lear|learAll|learAttributes|learCookies|learPermissions|learSystemCache|lebschGordan|lickPane|lickToCopy|lip|lock|lockGauge|lose|loseKernels|losenessCentrality|losing|loudAccountData|loudConnect|loudDeploy|loudDirectory|loudDisconnect|loudEvaluate|loudExport|loudFunction|loudGet|loudImport|loudLoggingData|loudObject|loudObjects|loudPublish|loudPut|loudSave|loudShare|loudSubmit|loudSymbol|loudUnshare|lusterClassify|lusteringComponents|lusteringMeasurements|lusteringTree|oefficient|oefficientArrays|oefficientList|oefficientRules|oifletWavelet|ollect|ollinearPoints|olon|olorBalance|olorCombine|olorConvert|olorData|olorDataFunction|olorDetect|olorDistance|olorNegate|olorProfileData|olorQ|olorQuantize|olorReplace|olorSeparate|olorSetter|olorSlider|olorToneMapping|olorize|olorsNear|olumn|ometData|ommonName|ommonUnits|ommonest|ommonestFilter|ommunityGraphPlot|ompanyData|ompatibleUnitQ|ompile|ompiledFunction|omplement|ompleteGraph|ompleteGraphQ|ompleteIntegral|ompleteKaryTree|omplex|omplexArrayPlot|omplexContourPlot|omplexExpand|omplexListPlot|omplexPlot|omplexPlot3D|omplexRegionPlot|omplexStreamPlot|omplexVectorPlot|omponentMeasurements|omposeList|omposeSeries|ompositeQ|omposition|ompoundElement|ompoundExpression|ompoundPoissonDistribution|ompoundPoissonProcess|ompoundRenewalProcess|ompress|oncaveHullMesh|ondition|onditionalExpression|onditioned|one|onfirm|onfirmAssert|onfirmBy|onfirmMatch|onformAudio|onformImages|ongruent|onicGradientFilling|onicHullRegion|onicOptimization|onjugate|onjugateTranspose|onjunction|onnectLibraryCallbackFunction|onnectedComponents|onnectedGraphComponents|onnectedGraphQ|onnectedMeshComponents|onnesWindow|onoverTest|onservativeConvectionPDETerm|onstantArray|onstantImage|onstantRegionQ|onstellationData|onstruct|ontainsAll|ontainsAny|ontainsExactly|ontainsNone|ontainsOnly|ontext|ontextToFileName|ontexts|ontinue|ontinuedFraction|ontinuedFractionK|ontinuousMarkovProcess|ontinuousTask|ontinuousTimeModelQ|ontinuousWaveletData|ontinuousWaveletTransform|ontourDetect|ontourPlot|ontourPlot3D|ontraharmonicMean|ontrol|ontrolActive|ontrollabilityGramian|ontrollabilityMatrix|ontrollableDecomposition|ontrollableModelQ|ontrollerInformation|ontrollerManipulate|ontrollerState|onvectionPDETerm|onvergents|onvexHullMesh|onvexHullRegion|onvexOptimization|onvexPolygonQ|onvexPolyhedronQ|onvexRegionQ|onvolve|onwayGroupCo1|onwayGroupCo2|onwayGroupCo3|oordinateBoundingBox|oordinateBoundingBoxArray|oordinateBounds|oordinateBoundsArray|oordinateChartData|oordinateTransform|oordinateTransformData|oplanarPoints|oprimeQ|oproduct|opulaDistribution|opyDatabin|opyDirectory|opyFile|opyToClipboard|oreNilpotentDecomposition|ornerFilter|orrelation|orrelationDistance|orrelationFunction|orrelationTest|os|osIntegral|osh|oshIntegral|osineDistance|osineWindow|ot|oth|oulombF|oulombG|oulombH1|oulombH2|ount|ountDistinct|ountDistinctBy|ountRoots|ountryData|ounts|ountsBy|ovariance|ovarianceFunction|oxIngersollRossProcess|oxModel|oxModelFit|oxianDistribution|ramerVonMisesTest|reateArchive|reateDatabin|reateDialog|reateDirectory|reateDocument|reateFile|reateManagedLibraryExpression|reateNotebook|reatePacletArchive|reatePalette|reatePermissionsGroup|reateUUID|reateWindow|riticalSection|riticalityFailureImportance|riticalitySuccessImportance|ross|rossMatrix|rossingCount|rossingDetect|rossingPolygon|sc|sch|ube|ubeRoot|uboid|umulant|umulantGeneratingFunction|umulativeFeatureImpactPlot|up|upCap|url|urrencyConvert|urrentDate|urrentImage|urrentValue|urvatureFlowFilter|ycleGraph|ycleIndexPolynomial|ycles|yclicGroup|yclotomic|ylinder|ylindricalDecomposition|ylindricalDecompositionFunction))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:D(?:|Eigensystem|Eigenvalues|GaussianWavelet|MSList|MSString|Solve|SolveValue|agumDistribution|amData|amerauLevenshteinDistance|arker|ashing|ataDistribution|atabin|atabinAdd|atabinUpload|atabins|ataset|ateBounds|ateDifference|ateHistogram|ateList|ateListLogPlot|ateListPlot|ateListStepPlot|ateObject|ateObjectQ|ateOverlapsQ|atePattern|atePlus|ateRange|ateScale|ateSelect|ateString|ateValue|ateWithinQ|ated|atedUnit|aubechiesWavelet|avisDistribution|awsonF|ayCount|ayHemisphere|ayMatchQ|ayName|ayNightTerminator|ayPlus|ayRange|ayRound|aylightQ|eBruijnGraph|eBruijnSequence|ecapitalize|ecimalForm|eclarePackage|ecompose|ecrement|ecrypt|edekindEta|eepSpaceProbeData|efault|efaultButton|efaultValues|efer|efineInputStreamMethod|efineOutputStreamMethod|efineResourceFunction|efinition|egreeCentrality|egreeGraphDistribution|el|elaunayMesh|elayed|elete|eleteAdjacentDuplicates|eleteAnomalies|eleteBorderComponents|eleteCases|eleteDirectory|eleteDuplicates|eleteDuplicatesBy|eleteFile|eleteMissing|eleteObject|eletePermissionsKey|eleteSmallComponents|eleteStopwords|elimitedSequence|endrogram|enominator|ensityHistogram|ensityPlot|ensityPlot3D|eploy|epth|epthFirstScan|erivative|erivativeFilter|erivativePDETerm|esignMatrix|et|eviceClose|eviceConfigure|eviceExecute|eviceExecuteAsynchronous|eviceObject|eviceOpen|eviceRead|eviceReadBuffer|eviceReadLatest|eviceReadList|eviceReadTimeSeries|eviceStreams|eviceWrite|eviceWriteBuffer|evices|iagonal|iagonalMatrix|iagonalMatrixQ|iagonalizableMatrixQ|ialog|ialogInput|ialogNotebook|ialogReturn|iamond|iamondMatrix|iceDissimilarity|ictionaryLookup|ictionaryWordQ|ifferenceDelta|ifferenceQuotient|ifferenceRoot|ifferenceRootReduce|ifferences|ifferentialD|ifferentialRoot|ifferentialRootReduce|ifferentiatorFilter|iffusionPDETerm|igitCount|igitQ|ihedralAngle|ihedralGroup|ilation|imensionReduce|imensionReducerFunction|imensionReduction|imensionalCombinations|imensionalMeshComponents|imensions|iracComb|iracDelta|irectedEdge|irectedGraph|irectedGraphQ|irectedInfinity|irectionalLight|irective|irectory|irectoryName|irectoryQ|irectoryStack|irichletBeta|irichletCharacter|irichletCondition|irichletConvolve|irichletDistribution|irichletEta|irichletL|irichletLambda|irichletTransform|irichletWindow|iscreteAsymptotic|iscreteChirpZTransform|iscreteConvolve|iscreteDelta|iscreteHadamardTransform|iscreteIndicator|iscreteInputOutputModel|iscreteLQEstimatorGains|iscreteLQRegulatorGains|iscreteLimit|iscreteLyapunovSolve|iscreteMarkovProcess|iscreteMaxLimit|iscreteMinLimit|iscretePlot|iscretePlot3D|iscreteRatio|iscreteRiccatiSolve|iscreteShift|iscreteTimeModelQ|iscreteUniformDistribution|iscreteWaveletData|iscreteWaveletPacketTransform|iscreteWaveletTransform|iscretizeGraphics|iscretizeRegion|iscriminant|isjointQ|isjunction|isk|iskMatrix|iskSegment|ispatch|isplayEndPacket|isplayForm|isplayPacket|istanceMatrix|istanceTransform|istribute|istributeDefinitions|istributed|istributionChart|istributionFitTest|istributionParameterAssumptions|istributionParameterQ|iv|ivide|ivideBy|ivideSides|ivisible|ivisorSigma|ivisorSum|ivisors|o|ocumentGenerator|ocumentGeneratorInformation|ocumentGenerators|ocumentNotebook|odecahedron|ominantColors|ominatorTreeGraph|ominatorVertexList|ot|otEqual|oubleBracketingBar|oubleDownArrow|oubleLeftArrow|oubleLeftRightArrow|oubleLeftTee|oubleLongLeftArrow|oubleLongLeftRightArrow|oubleLongRightArrow|oubleRightArrow|oubleRightTee|oubleUpArrow|oubleUpDownArrow|oubleVerticalBar|ownArrow|ownArrowBar|ownArrowUpArrow|ownLeftRightVector|ownLeftTeeVector|ownLeftVector|ownLeftVectorBar|ownRightTeeVector|ownRightVector|ownRightVectorBar|ownTee|ownTeeArrow|ownValues|ownsample|razinInverse|rop|ropShadowing|t|ualPlanarGraph|ualPolyhedron|ualSystemsModel|umpSave|uplicateFreeQ|uration|ynamic|ynamicGeoGraphics|ynamicModule|ynamicSetting|ynamicWrapper))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:E(?:arthImpactData|arthquakeData|ccentricityCentrality|choEvaluation|choFunction|choLabel|dgeAdd|dgeBetweennessCentrality|dgeChromaticNumber|dgeConnectivity|dgeContract|dgeCount|dgeCoverQ|dgeCycleMatrix|dgeDelete|dgeDetect|dgeForm|dgeIndex|dgeList|dgeQ|dgeRules|dgeTaggedGraph|dgeTaggedGraphQ|dgeTags|dgeTransitiveGraphQ|dgeWeightedGraphQ|ditDistance|ffectiveInterest|igensystem|igenvalues|igenvectorCentrality|igenvectors|lement|lementData|liminate|llipsoid|llipticE|llipticExp|llipticExpPrime|llipticF|llipticFilterModel|llipticK|llipticLog|llipticNomeQ|llipticPi|llipticTheta|llipticThetaPrime|mbedCode|mbeddedHTML|mbeddedService|mitSound|mpiricalDistribution|mptyGraphQ|mptyRegion|nclose|ncode|ncrypt|ncryptedObject|nd|ndDialogPacket|ndPackage|ngineeringForm|nterExpressionPacket|nterTextPacket|ntity|ntityClass|ntityClassList|ntityCopies|ntityGroup|ntityInstance|ntityList|ntityPrefetch|ntityProperties|ntityProperty|ntityPropertyClass|ntityRegister|ntityStores|ntityTypeName|ntityUnregister|ntityValue|ntropy|ntropyFilter|nvironment|qual|qualTilde|qualTo|quilibrium|quirippleFilterKernel|quivalent|rf|rfc|rfi|rlangB|rlangC|rlangDistribution|rosion|rrorBox|stimatedBackground|stimatedDistribution|stimatedPointNormals|stimatedProcess|stimatorGains|stimatorRegulator|uclideanDistance|ulerAngles|ulerCharacteristic|ulerE|ulerMatrix|ulerPhi|ulerianGraphQ|valuate|valuatePacket|valuationBox|valuationCell|valuationData|valuationNotebook|valuationObject|venQ|ventData|ventHandler|ventSeries|xactBlackmanWindow|xactNumberQ|xampleData|xcept|xists|xoplanetData|xp|xpGammaDistribution|xpIntegralE|xpIntegralEi|xpToTrig|xpand|xpandAll|xpandDenominator|xpandFileName|xpandNumerator|xpectation|xponent|xponentialDistribution|xponentialGeneratingFunction|xponentialMovingAverage|xponentialPowerDistribution|xport|xportByteArray|xportForm|xportString|xpressionCell|xpressionGraph|xtendedGCD|xternalBundle|xtract|xtractArchive|xtractPacletArchive|xtremeValueDistribution))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:F(?:ARIMAProcess|RatioDistribution|aceAlign|aceForm|acialFeatures|actor|actorInteger|actorList|actorSquareFree|actorSquareFreeList|actorTerms|actorTermsList|actorial|actorial2|actorialMoment|actorialMomentGeneratingFunction|actorialPower|ailure|ailureDistribution|ailureQ|areySequence|eatureImpactPlot|eatureNearest|eatureSpacePlot|eatureSpacePlot3D|eatureValueDependencyPlot|eatureValueImpactPlot|eedbackLinearize|etalGrowthData|ibonacci|ibonorial|ile|ileBaseName|ileByteCount|ileDate|ileExistsQ|ileExtension|ileFormat|ileFormatQ|ileHash|ileNameDepth|ileNameDrop|ileNameJoin|ileNameSetter|ileNameSplit|ileNameTake|ileNames|ilePrint|ileSize|ileSystemMap|ileSystemScan|ileTemplate|ileTemplateApply|ileType|illedCurve|illedTorus|illingTransform|ilterRules|inancialBond|inancialData|inancialDerivative|inancialIndicator|ind|indAnomalies|indArgMax|indArgMin|indClique|indClusters|indCookies|indCurvePath|indCycle|indDevices|indDistribution|indDistributionParameters|indDivisions|indEdgeColoring|indEdgeCover|indEdgeCut|indEdgeIndependentPaths|indEulerianCycle|indFaces|indFile|indFit|indFormula|indFundamentalCycles|indGeneratingFunction|indGeoLocation|indGeometricTransform|indGraphCommunities|indGraphIsomorphism|indGraphPartition|indHamiltonianCycle|indHamiltonianPath|indHiddenMarkovStates|indIndependentEdgeSet|indIndependentVertexSet|indInstance|indIntegerNullVector|indIsomorphicSubgraph|indKClan|indKClique|indKClub|indKPlex|indLibrary|indLinearRecurrence|indList|indMatchingColor|indMaxValue|indMaximum|indMaximumCut|indMaximumFlow|indMeshDefects|indMinValue|indMinimum|indMinimumCostFlow|indMinimumCut|indPath|indPeaks|indPermutation|indPlanarColoring|indPostmanTour|indProcessParameters|indRegionTransform|indRepeat|indRoot|indSequenceFunction|indShortestPath|indShortestTour|indSpanningTree|indSubgraphIsomorphism|indThreshold|indTransientRepeat|indVertexColoring|indVertexCover|indVertexCut|indVertexIndependentPaths|inishDynamic|initeAbelianGroupCount|initeGroupCount|initeGroupData|irst|irstCase|irstPassageTimeDistribution|irstPosition|ischerGroupFi22|ischerGroupFi23|ischerGroupFi24Prime|isherHypergeometricDistribution|isherRatioTest|isherZDistribution|it|ittedModel|ixedOrder|ixedPoint|ixedPointList|latShading|latTopWindow|latten|lattenAt|lightData|lipView|loor|lowPolynomial|old|oldList|oldPair|oldPairList|oldWhile|oldWhileList|or|orAll|ormBox|ormFunction|ormObject|ormPage|ormat|ormulaData|ormulaLookup|ortranForm|ourier|ourierCoefficient|ourierCosCoefficient|ourierCosSeries|ourierCosTransform|ourierDCT|ourierDCTFilter|ourierDCTMatrix|ourierDST|ourierDSTMatrix|ourierMatrix|ourierSequenceTransform|ourierSeries|ourierSinCoefficient|ourierSinSeries|ourierSinTransform|ourierTransform|ourierTrigSeries|oxH|ractionBox|ractionalBrownianMotionProcess|ractionalD|ractionalGaussianNoiseProcess|ractionalPart|rameBox|ramed|rechetDistribution|reeQ|renetSerretSystem|requencySamplingFilterKernel|resnelC|resnelF|resnelG|resnelS|robeniusNumber|robeniusSolve|romAbsoluteTime|romCharacterCode|romCoefficientRules|romContinuedFraction|romDMS|romDateString|romDigits|romEntity|romJulianDate|romLetterNumber|romPolarCoordinates|romRomanNumeral|romSphericalCoordinates|romUnixTime|rontEndExecute|rontEndToken|rontEndTokenExecute|ullDefinition|ullForm|ullGraphics|ullInformationOutputRegulator|ullRegion|ullSimplify|unction|unctionAnalytic|unctionBijective|unctionContinuous|unctionConvexity|unctionDiscontinuities|unctionDomain|unctionExpand|unctionInjective|unctionInterpolation|unctionMeromorphic|unctionMonotonicity|unctionPeriod|unctionRange|unctionSign|unctionSingularities|unctionSurjective|ussellVeselyImportance))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:G(?:ARCHProcess|CD|aborFilter|aborMatrix|aborWavelet|ainMargins|ainPhaseMargins|alaxyData|amma|ammaDistribution|ammaRegularized|ather|atherBy|aussianFilter|aussianMatrix|aussianOrthogonalMatrixDistribution|aussianSymplecticMatrixDistribution|aussianUnitaryMatrixDistribution|aussianWindow|egenbauerC|eneralizedLinearModelFit|enerateAsymmetricKeyPair|enerateDocument|enerateHTTPResponse|enerateSymmetricKey|eneratingFunction|enericCylindricalDecomposition|enomeData|enomeLookup|eoAntipode|eoArea|eoBoundary|eoBoundingBox|eoBounds|eoBoundsRegion|eoBoundsRegionBoundary|eoBubbleChart|eoCircle|eoContourPlot|eoDensityPlot|eoDestination|eoDirection|eoDisk|eoDisplacement|eoDistance|eoDistanceList|eoElevationData|eoEntities|eoGraphPlot|eoGraphics|eoGridDirectionDifference|eoGridPosition|eoGridUnitArea|eoGridUnitDistance|eoGridVector|eoGroup|eoHemisphere|eoHemisphereBoundary|eoHistogram|eoIdentify|eoImage|eoLength|eoListPlot|eoMarker|eoNearest|eoPath|eoPolygon|eoPosition|eoPositionENU|eoPositionXYZ|eoProjectionData|eoRegionValuePlot|eoSmoothHistogram|eoStreamPlot|eoStyling|eoVariant|eoVector|eoVectorENU|eoVectorPlot|eoVectorXYZ|eoVisibleRegion|eoVisibleRegionBoundary|eoWithinQ|eodesicClosing|eodesicDilation|eodesicErosion|eodesicOpening|eodesicPolyhedron|eodesyData|eogravityModelData|eologicalPeriodData|eomagneticModelData|eometricBrownianMotionProcess|eometricDistribution|eometricMean|eometricMeanFilter|eometricOptimization|eometricTransformation|estureHandler|et|etEnvironment|lobalClusteringCoefficient|low|ompertzMakehamDistribution|oochShading|oodmanKruskalGamma|oodmanKruskalGammaTest|oto|ouraudShading|rad|radientFilter|radientFittedMesh|radientOrientationFilter|rammarApply|rammarRules|rammarToken|raph|raph3D|raphAssortativity|raphAutomorphismGroup|raphCenter|raphComplement|raphData|raphDensity|raphDiameter|raphDifference|raphDisjointUnion|raphDistance|raphDistanceMatrix|raphEmbedding|raphHub|raphIntersection|raphJoin|raphLinkEfficiency|raphPeriphery|raphPlot|raphPlot3D|raphPower|raphProduct|raphPropertyDistribution|raphQ|raphRadius|raphReciprocity|raphSum|raphUnion|raphics|raphics3D|raphicsColumn|raphicsComplex|raphicsGrid|raphicsGroup|raphicsRow|rayLevel|reater|reaterEqual|reaterEqualLess|reaterEqualThan|reaterFullEqual|reaterGreater|reaterLess|reaterSlantEqual|reaterThan|reaterTilde|reenFunction|rid|ridBox|ridGraph|roebnerBasis|roupBy|roupCentralizer|roupElementFromWord|roupElementPosition|roupElementQ|roupElementToWord|roupElements|roupGenerators|roupMultiplicationTable|roupOrbits|roupOrder|roupSetwiseStabilizer|roupStabilizer|roupStabilizerChain|roupings|rowCutComponents|udermannian|uidedFilter|umbelDistribution))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:H(?:ITSCentrality|TTPErrorResponse|TTPRedirect|TTPRequest|TTPRequestData|TTPResponse|aarWavelet|adamardMatrix|alfLine|alfNormalDistribution|alfPlane|alfSpace|alftoneShading|amiltonianGraphQ|ammingDistance|ammingWindow|ankelH1|ankelH2|ankelMatrix|ankelTransform|annPoissonWindow|annWindow|aradaNortonGroupHN|araryGraph|armonicMean|armonicMeanFilter|armonicNumber|ash|atchFilling|atchShading|aversine|azardFunction|ead|eatFluxValue|eatInsulationValue|eatOutflowValue|eatRadiationValue|eatSymmetryValue|eatTemperatureCondition|eatTransferPDEComponent|eatTransferValue|eavisideLambda|eavisidePi|eavisideTheta|eldGroupHe|elmholtzPDEComponent|ermiteDecomposition|ermiteH|ermitian|ermitianMatrixQ|essenbergDecomposition|eunB|eunBPrime|eunC|eunCPrime|eunD|eunDPrime|eunG|eunGPrime|eunT|eunTPrime|exahedron|iddenMarkovProcess|ighlightGraph|ighlightImage|ighlightMesh|ighlighted|ighpassFilter|igmanSimsGroupHS|ilbertCurve|ilbertFilter|ilbertMatrix|istogram|istogram3D|istogramDistribution|istogramList|istogramTransform|istogramTransformInterpolation|istoricalPeriodData|itMissTransform|jorthDistribution|odgeDual|oeffdingD|oeffdingDTest|old|oldComplete|oldForm|oldPattern|orizontalGauge|ornerForm|ostLookup|otellingTSquareDistribution|oytDistribution|ue|umanGrowthData|umpDownHump|umpEqual|urwitzLerchPhi|urwitzZeta|yperbolicDistribution|ypercubeGraph|yperexponentialDistribution|yperfactorial|ypergeometric0F1|ypergeometric0F1Regularized|ypergeometric1F1|ypergeometric1F1Regularized|ypergeometric2F1|ypergeometric2F1Regularized|ypergeometricDistribution|ypergeometricPFQ|ypergeometricPFQRegularized|ypergeometricU|yperlink|yperplane|ypoexponentialDistribution|ypothesisTestData))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:I(?:PAddress|conData|conize|cosahedron|dentity|dentityMatrix|f|fCompiled|gnoringInactive|m|mage|mage3D|mage3DProjection|mage3DSlices|mageAccumulate|mageAdd|mageAdjust|mageAlign|mageApply|mageApplyIndexed|mageAspectRatio|mageAssemble|mageCapture|mageChannels|mageClip|mageCollage|mageColorSpace|mageCompose|mageConvolve|mageCooccurrence|mageCorners|mageCorrelate|mageCorrespondingPoints|mageCrop|mageData|mageDeconvolve|mageDemosaic|mageDifference|mageDimensions|mageDisplacements|mageDistance|mageEffect|mageExposureCombine|mageFeatureTrack|mageFileApply|mageFileFilter|mageFileScan|mageFilter|mageFocusCombine|mageForestingComponents|mageForwardTransformation|mageHistogram|mageIdentify|mageInstanceQ|mageKeypoints|mageLevels|mageLines|mageMarker|mageMeasurements|mageMesh|mageMultiply|magePad|magePartition|magePeriodogram|magePerspectiveTransformation|mageQ|mageRecolor|mageReflect|mageResize|mageRestyle|mageRotate|mageSaliencyFilter|mageScaled|mageScan|mageSubtract|mageTake|mageTransformation|mageTrim|mageType|mageValue|mageValuePositions|mageVectorscopePlot|mageWaveformPlot|mplicitD|mplicitRegion|mplies|mport|mportByteArray|mportString|mprovementImportance|nactivate|nactive|ncidenceGraph|ncidenceList|ncidenceMatrix|ncrement|ndefiniteMatrixQ|ndependenceTest|ndependentEdgeSetQ|ndependentPhysicalQuantity|ndependentUnit|ndependentUnitDimension|ndependentVertexSetQ|ndexEdgeTaggedGraph|ndexGraph|ndexed|nexactNumberQ|nfiniteLine|nfiniteLineThrough|nfinitePlane|nfix|nflationAdjust|nformation|nhomogeneousPoissonProcess|nner|nnerPolygon|nnerPolyhedron|npaint|nput|nputField|nputForm|nputNamePacket|nputNotebook|nputPacket|nputStream|nputString|nputStringPacket|nsert|nsertLinebreaks|nset|nsphere|nstall|nstallService|ntegerDigits|ntegerExponent|ntegerLength|ntegerName|ntegerPart|ntegerPartitions|ntegerQ|ntegerReverse|ntegerString|ntegrate|nteractiveTradingChart|nternallyBalancedDecomposition|nterpolatingFunction|nterpolatingPolynomial|nterpolation|nterpretation|nterpretationBox|nterpreter|nterquartileRange|nterrupt|ntersectingQ|ntersection|nterval|ntervalIntersection|ntervalMemberQ|ntervalSlider|ntervalUnion|nverse|nverseBetaRegularized|nverseBilateralLaplaceTransform|nverseBilateralZTransform|nverseCDF|nverseChiSquareDistribution|nverseContinuousWaveletTransform|nverseDistanceTransform|nverseEllipticNomeQ|nverseErf|nverseErfc|nverseFourier|nverseFourierCosTransform|nverseFourierSequenceTransform|nverseFourierSinTransform|nverseFourierTransform|nverseFunction|nverseGammaDistribution|nverseGammaRegularized|nverseGaussianDistribution|nverseGudermannian|nverseHankelTransform|nverseHaversine|nverseJacobiCD|nverseJacobiCN|nverseJacobiCS|nverseJacobiDC|nverseJacobiDN|nverseJacobiDS|nverseJacobiNC|nverseJacobiND|nverseJacobiNS|nverseJacobiSC|nverseJacobiSD|nverseJacobiSN|nverseLaplaceTransform|nverseMellinTransform|nversePermutation|nverseRadon|nverseRadonTransform|nverseSeries|nverseShortTimeFourier|nverseSpectrogram|nverseSurvivalFunction|nverseTransformedRegion|nverseWaveletTransform|nverseWeierstrassP|nverseWishartMatrixDistribution|nverseZTransform|nvisible|rreduciblePolynomialQ|slandData|solatingInterval|somorphicGraphQ|somorphicSubgraphQ|sotopeData|tem|toProcess))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:J(?:accardDissimilarity|acobiAmplitude|acobiCD|acobiCN|acobiCS|acobiDC|acobiDN|acobiDS|acobiEpsilon|acobiNC|acobiND|acobiNS|acobiP|acobiSC|acobiSD|acobiSN|acobiSymbol|acobiZN|acobiZeta|ankoGroupJ1|ankoGroupJ2|ankoGroupJ3|ankoGroupJ4|arqueBeraALMTest|ohnsonDistribution|oin|oinAcross|oinForm|oinedCurve|ordanDecomposition|ordanModelDecomposition|uliaSetBoettcher|uliaSetIterationCount|uliaSetPlot|uliaSetPoints|ulianDate))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:K(?:CoreComponents|Distribution|EdgeConnectedComponents|EdgeConnectedGraphQ|VertexConnectedComponents|VertexConnectedGraphQ|agiChart|aiserBesselWindow|aiserWindow|almanEstimator|almanFilter|arhunenLoeveDecomposition|aryTree|atzCentrality|elvinBei|elvinBer|elvinKei|elvinKer|endallTau|endallTauTest|ernelMixtureDistribution|ernelObject|ernels|ey|eyComplement|eyDrop|eyDropFrom|eyExistsQ|eyFreeQ|eyIntersection|eyMap|eyMemberQ|eySelect|eySort|eySortBy|eyTake|eyUnion|eyValueMap|eyValuePattern|eys|illProcess|irchhoffGraph|irchhoffMatrix|leinInvariantJ|napsackSolve|nightTourGraph|notData|nownUnitQ|ochCurve|olmogorovSmirnovTest|roneckerDelta|roneckerModelDecomposition|roneckerProduct|roneckerSymbol|uiperTest|umaraswamyDistribution|urtosis|uwaharaFilter))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:L(?:ABColor|CHColor|CM|QEstimatorGains|QGRegulator|QOutputRegulatorGains|QRegulatorGains|UDecomposition|UVColor|abel|abeled|aguerreL|akeData|ambdaComponents|ameC|ameCPrime|ameEigenvalueA|ameEigenvalueB|ameS|ameSPrime|aminaData|anczosWindow|andauDistribution|anguageData|anguageIdentify|aplaceDistribution|aplaceTransform|aplacian|aplacianFilter|aplacianGaussianFilter|aplacianPDETerm|ast|atitude|atitudeLongitude|atticeData|atticeReduce|aunchKernels|ayeredGraphPlot|ayeredGraphPlot3D|eafCount|eapVariant|eapYearQ|earnDistribution|earnedDistribution|eastSquares|eastSquaresFilterKernel|eftArrow|eftArrowBar|eftArrowRightArrow|eftDownTeeVector|eftDownVector|eftDownVectorBar|eftRightArrow|eftRightVector|eftTee|eftTeeArrow|eftTeeVector|eftTriangle|eftTriangleBar|eftTriangleEqual|eftUpDownVector|eftUpTeeVector|eftUpVector|eftUpVectorBar|eftVector|eftVectorBar|egended|egendreP|egendreQ|ength|engthWhile|erchPhi|ess|essEqual|essEqualGreater|essEqualThan|essFullEqual|essGreater|essLess|essSlantEqual|essThan|essTilde|etterCounts|etterNumber|etterQ|evel|eveneTest|eviCivitaTensor|evyDistribution|exicographicOrder|exicographicSort|ibraryDataType|ibraryFunction|ibraryFunctionError|ibraryFunctionInformation|ibraryFunctionLoad|ibraryFunctionUnload|ibraryLoad|ibraryUnload|iftingFilterData|iftingWaveletTransform|ighter|ikelihood|imit|indleyDistribution|ine|ineBreakChart|ineGraph|ineIntegralConvolutionPlot|ineLegend|inearFractionalOptimization|inearFractionalTransform|inearGradientFilling|inearGradientImage|inearModelFit|inearOptimization|inearRecurrence|inearSolve|inearSolveFunction|inearizingTransformationData|inkActivate|inkClose|inkConnect|inkCreate|inkInterrupt|inkLaunch|inkObject|inkPatterns|inkRankCentrality|inkRead|inkReadyQ|inkWrite|inks|iouvilleLambda|ist|istAnimate|istContourPlot|istContourPlot3D|istConvolve|istCorrelate|istCurvePathPlot|istDeconvolve|istDensityPlot|istDensityPlot3D|istFourierSequenceTransform|istInterpolation|istLineIntegralConvolutionPlot|istLinePlot|istLinePlot3D|istLogLinearPlot|istLogLogPlot|istLogPlot|istPicker|istPickerBox|istPlay|istPlot|istPlot3D|istPointPlot3D|istPolarPlot|istQ|istSliceContourPlot3D|istSliceDensityPlot3D|istSliceVectorPlot3D|istStepPlot|istStreamDensityPlot|istStreamPlot|istStreamPlot3D|istSurfacePlot3D|istVectorDensityPlot|istVectorDisplacementPlot|istVectorDisplacementPlot3D|istVectorPlot|istVectorPlot3D|istZTransform|ocalAdaptiveBinarize|ocalCache|ocalClusteringCoefficient|ocalEvaluate|ocalObject|ocalObjects|ocalSubmit|ocalSymbol|ocalTime|ocalTimeZone|ocationEquivalenceTest|ocationTest|ocator|ocatorPane|og|og10|og2|ogBarnesG|ogGamma|ogGammaDistribution|ogIntegral|ogLikelihood|ogLinearPlot|ogLogPlot|ogLogisticDistribution|ogMultinormalDistribution|ogNormalDistribution|ogPlot|ogRankTest|ogSeriesDistribution|ogicalExpand|ogisticDistribution|ogisticSigmoid|ogitModelFit|ongLeftArrow|ongLeftRightArrow|ongRightArrow|ongest|ongestCommonSequence|ongestCommonSequencePositions|ongestCommonSubsequence|ongestCommonSubsequencePositions|ongestOrderedSequence|ongitude|ookup|oopFreeGraphQ|owerCaseQ|owerLeftArrow|owerRightArrow|owerTriangularMatrix|owerTriangularMatrixQ|owerTriangularize|owpassFilter|ucasL|uccioSamiComponents|unarEclipse|yapunovSolve|yonsGroupLy))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:M(?:AProcess|achineNumberQ|agnify|ailReceiverFunction|ajority|akeBoxes|akeExpression|anagedLibraryExpressionID|anagedLibraryExpressionQ|andelbrotSetBoettcher|andelbrotSetDistance|andelbrotSetIterationCount|andelbrotSetMemberQ|andelbrotSetPlot|angoldtLambda|anhattanDistance|anipulate|anipulator|annWhitneyTest|annedSpaceMissionData|antissaExponent|ap|apAll|apApply|apAt|apIndexed|apThread|archenkoPasturDistribution|arcumQ|ardiaCombinedTest|ardiaKurtosisTest|ardiaSkewnessTest|arginalDistribution|arkovProcessProperties|assConcentrationCondition|assFluxValue|assImpermeableBoundaryValue|assOutflowValue|assSymmetryValue|assTransferValue|assTransportPDEComponent|atchQ|atchingDissimilarity|aterialShading|athMLForm|athematicalFunctionData|athieuC|athieuCPrime|athieuCharacteristicA|athieuCharacteristicB|athieuCharacteristicExponent|athieuGroupM11|athieuGroupM12|athieuGroupM22|athieuGroupM23|athieuGroupM24|athieuS|athieuSPrime|atrices|atrixExp|atrixForm|atrixFunction|atrixLog|atrixNormalDistribution|atrixPlot|atrixPower|atrixPropertyDistribution|atrixQ|atrixRank|atrixTDistribution|ax|axDate|axDetect|axFilter|axLimit|axMemoryUsed|axStableDistribution|axValue|aximalBy|aximize|axwellDistribution|cLaughlinGroupMcL|ean|eanClusteringCoefficient|eanDegreeConnectivity|eanDeviation|eanFilter|eanGraphDistance|eanNeighborDegree|eanShift|eanShiftFilter|edian|edianDeviation|edianFilter|edicalTestData|eijerG|eijerGReduce|eixnerDistribution|ellinConvolve|ellinTransform|emberQ|emoryAvailable|emoryConstrained|emoryInUse|engerMesh|enuPacket|enuView|erge|ersennePrimeExponent|ersennePrimeExponentQ|eshCellCount|eshCellIndex|eshCells|eshConnectivityGraph|eshCoordinates|eshPrimitives|eshRegion|eshRegionQ|essage|essageDialog|essageList|essageName|essagePacket|essages|eteorShowerData|exicanHatWavelet|eyerWavelet|in|inDate|inDetect|inFilter|inLimit|inMax|inStableDistribution|inValue|ineralData|inimalBy|inimalPolynomial|inimalStateSpaceModel|inimize|inimumTimeIncrement|inkowskiQuestionMark|inorPlanetData|inors|inus|inusPlus|issing|issingQ|ittagLefflerE|ixedFractionParts|ixedGraphQ|ixedMagnitude|ixedRadix|ixedRadixQuantity|ixedUnit|ixtureDistribution|od|odelPredictiveController|odularInverse|odularLambda|odule|oebiusMu|oment|omentConvert|omentEvaluate|omentGeneratingFunction|omentOfInertia|onitor|onomialList|onsterGroupM|oonPhase|oonPosition|orletWavelet|orphologicalBinarize|orphologicalBranchPoints|orphologicalComponents|orphologicalEulerNumber|orphologicalGraph|orphologicalPerimeter|orphologicalTransform|ortalityData|ost|ountainData|ouseAnnotation|ouseAppearance|ousePosition|ouseover|ovieData|ovingAverage|ovingMap|ovingMedian|oyalDistribution|ulticolumn|ultigraphQ|ultinomial|ultinomialDistribution|ultinormalDistribution|ultiplicativeOrder|ultiplySides|ultivariateHypergeometricDistribution|ultivariatePoissonDistribution|ultivariateTDistribution))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:N(?:|ArgMax|ArgMin|Cache|CaputoD|DEigensystem|DEigenvalues|DSolve|DSolveValue|Expectation|FractionalD|Integrate|MaxValue|Maximize|MinValue|Minimize|Probability|Product|Roots|Solve|SolveValues|Sum|akagamiDistribution|ameQ|ames|and|earest|earestFunction|earestMeshCells|earestNeighborGraph|earestTo|ebulaData|eedlemanWunschSimilarity|eeds|egative|egativeBinomialDistribution|egativeDefiniteMatrixQ|egativeMultinomialDistribution|egativeSemidefiniteMatrixQ|egativelyOrientedPoints|eighborhoodData|eighborhoodGraph|est|estGraph|estList|estWhile|estWhileList|estedGreaterGreater|estedLessLess|eumannValue|evilleThetaC|evilleThetaD|evilleThetaN|evilleThetaS|extCell|extDate|extPrime|icholsPlot|ightHemisphere|onCommutativeMultiply|onNegative|onPositive|oncentralBetaDistribution|oncentralChiSquareDistribution|oncentralFRatioDistribution|oncentralStudentTDistribution|ondimensionalizationTransform|oneTrue|onlinearModelFit|onlinearStateSpaceModel|onlocalMeansFilter|or|orlundB|orm|ormal|ormalDistribution|ormalMatrixQ|ormalize|ormalizedSquaredEuclideanDistance|ot|otCongruent|otCupCap|otDoubleVerticalBar|otElement|otEqualTilde|otExists|otGreater|otGreaterEqual|otGreaterFullEqual|otGreaterGreater|otGreaterLess|otGreaterSlantEqual|otGreaterTilde|otHumpDownHump|otHumpEqual|otLeftTriangle|otLeftTriangleBar|otLeftTriangleEqual|otLess|otLessEqual|otLessFullEqual|otLessGreater|otLessLess|otLessSlantEqual|otLessTilde|otNestedGreaterGreater|otNestedLessLess|otPrecedes|otPrecedesEqual|otPrecedesSlantEqual|otPrecedesTilde|otReverseElement|otRightTriangle|otRightTriangleBar|otRightTriangleEqual|otSquareSubset|otSquareSubsetEqual|otSquareSuperset|otSquareSupersetEqual|otSubset|otSubsetEqual|otSucceeds|otSucceedsEqual|otSucceedsSlantEqual|otSucceedsTilde|otSuperset|otSupersetEqual|otTilde|otTildeEqual|otTildeFullEqual|otTildeTilde|otVerticalBar|otebook|otebookApply|otebookClose|otebookDelete|otebookDirectory|otebookEvaluate|otebookFileName|otebookFind|otebookGet|otebookImport|otebookInformation|otebookLocate|otebookObject|otebookOpen|otebookPrint|otebookPut|otebookRead|otebookSave|otebookSelection|otebookTemplate|otebookWrite|otebooks|othing|uclearExplosionData|uclearReactorData|ullSpace|umberCompose|umberDecompose|umberDigit|umberExpand|umberFieldClassNumber|umberFieldDiscriminant|umberFieldFundamentalUnits|umberFieldIntegralBasis|umberFieldNormRepresentatives|umberFieldRegulator|umberFieldRootsOfUnity|umberFieldSignature|umberForm|umberLinePlot|umberQ|umerator|umeratorDenominator|umericQ|umericalOrder|umericalSort|uttallWindow|yquistPlot))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:O(?:|NanGroupON|bservabilityGramian|bservabilityMatrix|bservableDecomposition|bservableModelQ|ceanData|ctahedron|ddQ|ff|ffset|n|nce|pacity|penAppend|penRead|penWrite|pener|penerView|pening|perate|ptimumFlowData|ptionValue|ptional|ptionalElement|ptions|ptionsPattern|r|rder|rderDistribution|rderedQ|rdering|rderingBy|rderlessPatternSequence|rnsteinUhlenbeckProcess|rthogonalMatrixQ|rthogonalize|uter|uterPolygon|uterPolyhedron|utputControllabilityMatrix|utputControllableModelQ|utputForm|utputNamePacket|utputResponse|utputStream|verBar|verDot|verHat|verTilde|verVector|verflow|verlay|verscript|verscriptBox|wenT|wnValues))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:P(?:DF|ERTDistribution|IDTune|acletDataRebuild|acletDirectoryLoad|acletDirectoryUnload|acletDisable|acletEnable|acletFind|acletFindRemote|acletInstall|acletInstallSubmit|acletNewerQ|acletObject|acletSiteObject|acletSiteRegister|acletSiteUnregister|acletSiteUpdate|acletSites|acletUninstall|adLeft|adRight|addedForm|adeApproximant|ageRankCentrality|airedBarChart|airedHistogram|airedSmoothHistogram|airedTTest|airedZTest|aletteNotebook|alindromeQ|ane|aneSelector|anel|arabolicCylinderD|arallelArray|arallelAxisPlot|arallelCombine|arallelDo|arallelEvaluate|arallelKernels|arallelMap|arallelNeeds|arallelProduct|arallelSubmit|arallelSum|arallelTable|arallelTry|arallelepiped|arallelize|arallelogram|arameterMixtureDistribution|arametricConvexOptimization|arametricFunction|arametricNDSolve|arametricNDSolveValue|arametricPlot|arametricPlot3D|arametricRegion|arentBox|arentCell|arentDirectory|arentNotebook|aretoDistribution|aretoPickandsDistribution|arkData|art|artOfSpeech|artialCorrelationFunction|articleAcceleratorData|articleData|artition|artitionsP|artitionsQ|arzenWindow|ascalDistribution|aste|asteButton|athGraph|athGraphQ|attern|atternSequence|atternTest|aulWavelet|auliMatrix|ause|eakDetect|eanoCurve|earsonChiSquareTest|earsonCorrelationTest|earsonDistribution|ercentForm|erfectNumber|erfectNumberQ|erimeter|eriodicBoundaryCondition|eriodogram|eriodogramArray|ermanent|ermissionsGroup|ermissionsGroupMemberQ|ermissionsGroups|ermissionsKey|ermissionsKeys|ermutationCycles|ermutationCyclesQ|ermutationGroup|ermutationLength|ermutationList|ermutationListQ|ermutationMatrix|ermutationMax|ermutationMin|ermutationOrder|ermutationPower|ermutationProduct|ermutationReplace|ermutationSupport|ermutations|ermute|eronaMalikFilter|ersonData|etersenGraph|haseMargins|hongShading|hysicalSystemData|ick|ieChart|ieChart3D|iecewise|iecewiseExpand|illaiTrace|illaiTraceTest|ingTime|ixelValue|ixelValuePositions|laced|laceholder|lanarAngle|lanarFaceList|lanarGraph|lanarGraphQ|lanckRadiationLaw|laneCurveData|lanetData|lanetaryMoonData|lantData|lay|lot|lot3D|luralize|lus|lusMinus|ochhammer|oint|ointFigureChart|ointLegend|ointLight|ointSize|oissonConsulDistribution|oissonDistribution|oissonPDEComponent|oissonProcess|oissonWindow|olarPlot|olyGamma|olyLog|olyaAeppliDistribution|olygon|olygonAngle|olygonCoordinates|olygonDecomposition|olygonalNumber|olyhedron|olyhedronAngle|olyhedronCoordinates|olyhedronData|olyhedronDecomposition|olyhedronGenus|olynomialExpressionQ|olynomialExtendedGCD|olynomialGCD|olynomialLCM|olynomialMod|olynomialQ|olynomialQuotient|olynomialQuotientRemainder|olynomialReduce|olynomialRemainder|olynomialSumOfSquaresList|opupMenu|opupView|opupWindow|osition|ositionIndex|ositionLargest|ositionSmallest|ositive|ositiveDefiniteMatrixQ|ositiveSemidefiniteMatrixQ|ositivelyOrientedPoints|ossibleZeroQ|ostfix|ower|owerDistribution|owerExpand|owerMod|owerModList|owerRange|owerSpectralDensity|owerSymmetricPolynomial|owersRepresentations|reDecrement|reIncrement|recedenceForm|recedes|recedesEqual|recedesSlantEqual|recedesTilde|recision|redict|redictorFunction|redictorMeasurements|redictorMeasurementsObject|reemptProtect|refix|repend|rependTo|reviousCell|reviousDate|riceGraphDistribution|rime|rimeNu|rimeOmega|rimePi|rimePowerQ|rimeQ|rimeZetaP|rimitivePolynomialQ|rimitiveRoot|rimitiveRootList|rincipalComponents|rintTemporary|rintableASCIIQ|rintout3D|rism|rivateKey|robability|robabilityDistribution|robabilityPlot|robabilityScalePlot|robitModelFit|rocessConnection|rocessInformation|rocessObject|rocessParameterAssumptions|rocessParameterQ|rocessStatus|rocesses|roduct|roductDistribution|roductLog|rogressIndicator|rojection|roportion|roportional|rotect|roteinData|runing|seudoInverse|sychrometricPropertyData|ublicKey|ulsarData|ut|utAppend|yramid))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:Q(?:Binomial|Factorial|Gamma|HypergeometricPFQ|Pochhammer|PolyGamma|RDecomposition|nDispersion|uadraticIrrationalQ|uadraticOptimization|uantile|uantilePlot|uantity|uantityArray|uantityDistribution|uantityForm|uantityMagnitude|uantityQ|uantityUnit|uantityVariable|uantityVariableCanonicalUnit|uantityVariableDimensions|uantityVariableIdentifier|uantityVariablePhysicalQuantity|uartileDeviation|uartileSkewness|uartiles|uery|ueueProperties|ueueingNetworkProcess|ueueingProcess|uiet|uietEcho|uotient|uotientRemainder))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:R(?:GBColor|Solve|SolveValue|adialAxisPlot|adialGradientFilling|adialGradientImage|adialityCentrality|adicalBox|adioButton|adioButtonBar|adon|adonTransform|amanujanTau|amanujanTauL|amanujanTauTheta|amanujanTauZ|amp|andomChoice|andomColor|andomComplex|andomDate|andomEntity|andomFunction|andomGeneratorState|andomGeoPosition|andomGraph|andomImage|andomInteger|andomPermutation|andomPoint|andomPolygon|andomPolyhedron|andomPrime|andomReal|andomSample|andomTime|andomVariate|andomWalkProcess|andomWord|ange|angeFilter|ankedMax|ankedMin|arerProbability|aster|aster3D|asterize|ational|ationalExpressionQ|ationalize|atios|awBoxes|awData|ayleighDistribution|e|eIm|eImPlot|eactionPDETerm|ead|eadByteArray|eadLine|eadList|eadString|ealAbs|ealDigits|ealExponent|ealSign|eap|econstructionMesh|ectangle|ectangleChart|ectangleChart3D|ectangularRepeatingElement|ecurrenceFilter|ecurrenceTable|educe|efine|eflectionMatrix|eflectionTransform|efresh|egion|egionBinarize|egionBoundary|egionBounds|egionCentroid|egionCongruent|egionConvert|egionDifference|egionDilation|egionDimension|egionDisjoint|egionDistance|egionDistanceFunction|egionEmbeddingDimension|egionEqual|egionErosion|egionFit|egionImage|egionIntersection|egionMeasure|egionMember|egionMemberFunction|egionMoment|egionNearest|egionNearestFunction|egionPlot|egionPlot3D|egionProduct|egionQ|egionResize|egionSimilar|egionSymmetricDifference|egionUnion|egionWithin|egularExpression|egularPolygon|egularlySampledQ|elationGraph|eleaseHold|eliabilityDistribution|eliefImage|eliefPlot|emove|emoveAlphaChannel|emoveBackground|emoveDiacritics|emoveInputStreamMethod|emoveOutputStreamMethod|emoveUsers|enameDirectory|enameFile|enewalProcess|enkoChart|epairMesh|epeated|epeatedNull|epeatedTiming|epeatingElement|eplace|eplaceAll|eplaceAt|eplaceImageValue|eplaceList|eplacePart|eplacePixelValue|eplaceRepeated|esamplingAlgorithmData|escale|escalingTransform|esetDirectory|esidue|esidueSum|esolve|esourceData|esourceObject|esourceSearch|esponseForm|est|estricted|esultant|eturn|eturnExpressionPacket|eturnPacket|eturnTextPacket|everse|everseBiorthogonalSplineWavelet|everseElement|everseEquilibrium|everseGraph|everseSort|everseSortBy|everseUpEquilibrium|evolutionPlot3D|iccatiSolve|iceDistribution|idgeFilter|iemannR|iemannSiegelTheta|iemannSiegelZ|iemannXi|iffle|ightArrow|ightArrowBar|ightArrowLeftArrow|ightComposition|ightCosetRepresentative|ightDownTeeVector|ightDownVector|ightDownVectorBar|ightTee|ightTeeArrow|ightTeeVector|ightTriangle|ightTriangleBar|ightTriangleEqual|ightUpDownVector|ightUpTeeVector|ightUpVector|ightUpVectorBar|ightVector|ightVectorBar|iskAchievementImportance|iskReductionImportance|obustConvexOptimization|ogersTanimotoDissimilarity|ollPitchYawAngles|ollPitchYawMatrix|omanNumeral|oot|ootApproximant|ootIntervals|ootLocusPlot|ootMeanSquare|ootOfUnityQ|ootReduce|ootSum|oots|otate|otateLeft|otateRight|otationMatrix|otationTransform|ound|ow|owBox|owReduce|udinShapiro|udvalisGroupRu|ule|uleDelayed|ulePlot|un|unProcess|unThrough|ussellRaoDissimilarity))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:S(?:ARIMAProcess|ARMAProcess|ASTriangle|SSTriangle|ameAs|ameQ|ampledSoundFunction|ampledSoundList|atelliteData|atisfiabilityCount|atisfiabilityInstances|atisfiableQ|ave|avitzkyGolayMatrix|awtoothWave|cale|caled|calingMatrix|calingTransform|can|cheduledTask|churDecomposition|cientificForm|corerGi|corerGiPrime|corerHi|corerHiPrime|ec|ech|echDistribution|econdOrderConeOptimization|ectorChart|ectorChart3D|eedRandom|elect|electComponents|electFirst|electedCells|electedNotebook|electionCreateCell|electionEvaluate|electionEvaluateCreateCell|electionMove|emanticImport|emanticImportString|emanticInterpretation|emialgebraicComponentInstances|emidefiniteOptimization|endMail|endMessage|equence|equenceAlignment|equenceCases|equenceCount|equenceFold|equenceFoldList|equencePosition|equenceReplace|equenceSplit|eries|eriesCoefficient|eriesData|erviceConnect|erviceDisconnect|erviceExecute|erviceObject|essionSubmit|essionTime|et|etAccuracy|etAlphaChannel|etAttributes|etCloudDirectory|etCookies|etDelayed|etDirectory|etEnvironment|etFileDate|etOptions|etPermissions|etPrecision|etSelectedNotebook|etSharedFunction|etSharedVariable|etStreamPosition|etSystemOptions|etUsers|etter|etterBar|etting|hallow|hannonWavelet|hapiroWilkTest|hare|harpen|hearingMatrix|hearingTransform|hellRegion|henCastanMatrix|hiftRegisterSequence|hiftedGompertzDistribution|hort|hortDownArrow|hortLeftArrow|hortRightArrow|hortTimeFourier|hortTimeFourierData|hortUpArrow|hortest|hortestPathFunction|how|iderealTime|iegelTheta|iegelTukeyTest|ierpinskiCurve|ierpinskiMesh|ign|ignTest|ignature|ignedRankTest|ignedRegionDistance|impleGraph|impleGraphQ|implePolygonQ|implePolyhedronQ|implex|implify|in|inIntegral|inc|inghMaddalaDistribution|ingularValueDecomposition|ingularValueList|ingularValuePlot|inh|inhIntegral|ixJSymbol|keleton|keletonTransform|kellamDistribution|kewNormalDistribution|kewness|kip|liceContourPlot3D|liceDensityPlot3D|liceDistribution|liceVectorPlot3D|lideView|lider|lider2D|liderBox|lot|lotSequence|mallCircle|mithDecomposition|mithDelayCompensator|mithWatermanSimilarity|moothDensityHistogram|moothHistogram|moothHistogram3D|moothKernelDistribution|nDispersion|ocketConnect|ocketListen|ocketListener|ocketObject|ocketOpen|ocketReadMessage|ocketReadyQ|ocketWaitAll|ocketWaitNext|ockets|okalSneathDissimilarity|olarEclipse|olarSystemFeatureData|olarTime|olidAngle|olidData|olidRegionQ|olve|olveAlways|olveValues|ort|ortBy|ound|oundNote|ourcePDETerm|ow|paceCurveData|pacer|pan|parseArray|parseArrayQ|patialGraphDistribution|patialMedian|peak|pearmanRankTest|pearmanRho|peciesData|pectralLineData|pectrogram|pectrogramArray|pecularity|peechSynthesize|pellingCorrectionList|phere|pherePoints|phericalBesselJ|phericalBesselY|phericalHankelH1|phericalHankelH2|phericalHarmonicY|phericalPlot3D|phericalShell|pheroidalEigenvalue|pheroidalJoiningFactor|pheroidalPS|pheroidalPSPrime|pheroidalQS|pheroidalQSPrime|pheroidalRadialFactor|pheroidalS1|pheroidalS1Prime|pheroidalS2|pheroidalS2Prime|plicedDistribution|plit|plitBy|pokenString|potLight|qrt|qrtBox|quare|quareFreeQ|quareIntersection|quareMatrixQ|quareRepeatingElement|quareSubset|quareSubsetEqual|quareSuperset|quareSupersetEqual|quareUnion|quareWave|quaredEuclideanDistance|quaresR|tableDistribution|tack|tackBegin|tackComplete|tackInhibit|tackedDateListPlot|tackedListPlot|tadiumShape|tandardAtmosphereData|tandardDeviation|tandardDeviationFilter|tandardForm|tandardOceanData|tandardize|tandbyDistribution|tar|tarClusterData|tarData|tarGraph|tartProcess|tateFeedbackGains|tateOutputEstimator|tateResponse|tateSpaceModel|tateSpaceTransform|tateTransformationLinearize|tationaryDistribution|tationaryWaveletPacketTransform|tationaryWaveletTransform|tatusArea|tatusCentrality|tieltjesGamma|tippleShading|tirlingS1|tirlingS2|toppingPowerData|tratonovichProcess|treamDensityPlot|treamPlot|treamPlot3D|treamPosition|treams|tringCases|tringContainsQ|tringCount|tringDelete|tringDrop|tringEndsQ|tringExpression|tringExtract|tringForm|tringFormat|tringFormatQ|tringFreeQ|tringInsert|tringJoin|tringLength|tringMatchQ|tringPadLeft|tringPadRight|tringPart|tringPartition|tringPosition|tringQ|tringRepeat|tringReplace|tringReplaceList|tringReplacePart|tringReverse|tringRiffle|tringRotateLeft|tringRotateRight|tringSkeleton|tringSplit|tringStartsQ|tringTake|tringTakeDrop|tringTemplate|tringToByteArray|tringToStream|tringTrim|tripBoxes|tructuralImportance|truveH|truveL|tudentTDistribution|tyle|tyleBox|tyleData|ubMinus|ubPlus|ubStar|ubValues|ubdivide|ubfactorial|ubgraph|ubresultantPolynomialRemainders|ubresultantPolynomials|ubresultants|ubscript|ubscriptBox|ubsequences|ubset|ubsetEqual|ubsetMap|ubsetQ|ubsets|ubstitutionSystem|ubsuperscript|ubsuperscriptBox|ubtract|ubtractFrom|ubtractSides|ucceeds|ucceedsEqual|ucceedsSlantEqual|ucceedsTilde|uccess|uchThat|um|umConvergence|unPosition|unrise|unset|uperDagger|uperMinus|uperPlus|uperStar|upernovaData|uperscript|uperscriptBox|uperset|upersetEqual|urd|urfaceArea|urfaceData|urvivalDistribution|urvivalFunction|urvivalModel|urvivalModelFit|uzukiDistribution|uzukiGroupSuz|watchLegend|witch|ymbol|ymbolName|ymletWavelet|ymmetric|ymmetricGroup|ymmetricKey|ymmetricMatrixQ|ymmetricPolynomial|ymmetricReduction|ymmetrize|ymmetrizedArray|ymmetrizedArrayRules|ymmetrizedDependentComponents|ymmetrizedIndependentComponents|ymmetrizedReplacePart|ynonyms|yntaxInformation|yntaxLength|yntaxPacket|yntaxQ|ystemDialogInput|ystemInformation|ystemOpen|ystemOptions|ystemProcessData|ystemProcesses|ystemsConnectionsModel|ystemsModelControllerData|ystemsModelDelay|ystemsModelDelayApproximate|ystemsModelDelete|ystemsModelDimensions|ystemsModelExtract|ystemsModelFeedbackConnect|ystemsModelLinearity|ystemsModelMerge|ystemsModelOrder|ystemsModelParallelConnect|ystemsModelSeriesConnect|ystemsModelStateFeedbackConnect|ystemsModelVectorRelativeOrders))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:T(?:Test|abView|able|ableForm|agBox|agSet|agSetDelayed|agUnset|ake|akeDrop|akeLargest|akeLargestBy|akeList|akeSmallest|akeSmallestBy|akeWhile|ally|an|anh|askAbort|askExecute|askObject|askRemove|askResume|askSuspend|askWait|asks|autologyQ|eXForm|elegraphProcess|emplateApply|emplateBox|emplateExpression|emplateIf|emplateObject|emplateSequence|emplateSlot|emplateWith|emporalData|ensorContract|ensorDimensions|ensorExpand|ensorProduct|ensorRank|ensorReduce|ensorSymmetry|ensorTranspose|ensorWedge|erminatedEvaluation|estReport|estReportObject|estResultObject|etrahedron|ext|extCell|extData|extGrid|extPacket|extRecognize|extSentences|extString|extTranslation|extWords|exture|herefore|hermodynamicData|hermometerGauge|hickness|hinning|hompsonGroupTh|hread|hreeJSymbol|hreshold|hrough|hrow|hueMorse|humbnail|ideData|ilde|ildeEqual|ildeFullEqual|ildeTilde|imeConstrained|imeObject|imeObjectQ|imeRemaining|imeSeries|imeSeriesAggregate|imeSeriesForecast|imeSeriesInsert|imeSeriesInvertibility|imeSeriesMap|imeSeriesMapThread|imeSeriesModel|imeSeriesModelFit|imeSeriesResample|imeSeriesRescale|imeSeriesShift|imeSeriesThread|imeSeriesWindow|imeSystemConvert|imeUsed|imeValue|imeZoneConvert|imeZoneOffset|imelinePlot|imes|imesBy|iming|itsGroupT|oBoxes|oCharacterCode|oContinuousTimeModel|oDiscreteTimeModel|oEntity|oExpression|oInvertibleTimeSeries|oLowerCase|oNumberField|oPolarCoordinates|oRadicals|oRules|oSphericalCoordinates|oString|oUpperCase|oeplitzMatrix|ogether|oggler|ogglerBar|ooltip|oonShading|opHatTransform|opologicalSort|orus|orusGraph|otal|otalVariationFilter|ouchPosition|r|race|raceDialog|racePrint|raceScan|racyWidomDistribution|radingChart|raditionalForm|ransferFunctionCancel|ransferFunctionExpand|ransferFunctionFactor|ransferFunctionModel|ransferFunctionPoles|ransferFunctionTransform|ransferFunctionZeros|ransformationFunction|ransformationMatrix|ransformedDistribution|ransformedField|ransformedProcess|ransformedRegion|ransitiveClosureGraph|ransitiveReductionGraph|ranslate|ranslationTransform|ransliterate|ranspose|ravelDirections|ravelDirectionsData|ravelDistance|ravelDistanceList|ravelTime|reeForm|reeGraph|reeGraphQ|reePlot|riangle|riangleWave|riangularDistribution|riangulateMesh|rigExpand|rigFactor|rigFactorList|rigReduce|rigToExp|rigger|rimmedMean|rimmedVariance|ropicalStormData|rueQ|runcatedDistribution|runcatedPolyhedron|sallisQExponentialDistribution|sallisQGaussianDistribution|ube|ukeyLambdaDistribution|ukeyWindow|unnelData|uples|uranGraph|uringMachine|uttePolynomial|woWayRule|ypeHint))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:U(?:RL|RLBuild|RLDecode|RLDispatcher|RLDownload|RLEncode|RLExecute|RLExpand|RLParse|RLQueryDecode|RLQueryEncode|RLRead|RLResponseTime|RLShorten|RLSubmit|nateQ|ncompress|nderBar|nderflow|nderoverscript|nderoverscriptBox|nderscript|nderscriptBox|nderseaFeatureData|ndirectedEdge|ndirectedGraph|ndirectedGraphQ|nequal|nequalTo|nevaluated|niformDistribution|niformGraphDistribution|niformPolyhedron|niformSumDistribution|ninstall|nion|nionPlus|nique|nitBox|nitConvert|nitDimensions|nitRootTest|nitSimplify|nitStep|nitTriangle|nitVector|nitaryMatrixQ|nitize|niverseModelData|niversityData|nixTime|nprotect|nsameQ|nset|nsetShared|ntil|pArrow|pArrowBar|pArrowDownArrow|pDownArrow|pEquilibrium|pSet|pSetDelayed|pTee|pTeeArrow|pTo|pValues|pdate|pperCaseQ|pperLeftArrow|pperRightArrow|pperTriangularMatrix|pperTriangularMatrixQ|pperTriangularize|psample|singFrontEnd))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:V(?:alueQ|alues|ariables|ariance|arianceEquivalenceTest|arianceGammaDistribution|arianceTest|ectorAngle|ectorDensityPlot|ectorDisplacementPlot|ectorDisplacementPlot3D|ectorGreater|ectorGreaterEqual|ectorLess|ectorLessEqual|ectorPlot|ectorPlot3D|ectorQ|ectors|ee|erbatim|erificationTest|ertexAdd|ertexChromaticNumber|ertexComponent|ertexConnectivity|ertexContract|ertexCorrelationSimilarity|ertexCosineSimilarity|ertexCount|ertexCoverQ|ertexDegree|ertexDelete|ertexDiceSimilarity|ertexEccentricity|ertexInComponent|ertexInComponentGraph|ertexInDegree|ertexIndex|ertexJaccardSimilarity|ertexList|ertexOutComponent|ertexOutComponentGraph|ertexOutDegree|ertexQ|ertexReplace|ertexTransitiveGraphQ|ertexWeightedGraphQ|erticalBar|erticalGauge|erticalSeparator|erticalSlider|erticalTilde|oiceStyleData|oigtDistribution|olcanoData|olume|onMisesDistribution|oronoiMesh))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:W(?:aitAll|aitNext|akebyDistribution|alleniusHypergeometricDistribution|aringYuleDistribution|arpingCorrespondence|arpingDistance|atershedComponents|atsonUSquareTest|attsStrogatzGraphDistribution|avePDEComponent|aveletBestBasis|aveletFilterCoefficients|aveletImagePlot|aveletListPlot|aveletMapIndexed|aveletMatrixPlot|aveletPhi|aveletPsi|aveletScalogram|aveletThreshold|eakStationarity|eaklyConnectedComponents|eaklyConnectedGraphComponents|eaklyConnectedGraphQ|eatherData|eatherForecastData|eberE|edge|eibullDistribution|eierstrassE1|eierstrassE2|eierstrassE3|eierstrassEta1|eierstrassEta2|eierstrassEta3|eierstrassHalfPeriodW1|eierstrassHalfPeriodW2|eierstrassHalfPeriodW3|eierstrassHalfPeriods|eierstrassInvariantG2|eierstrassInvariantG3|eierstrassInvariants|eierstrassP|eierstrassPPrime|eierstrassSigma|eierstrassZeta|eightedAdjacencyGraph|eightedAdjacencyMatrix|eightedData|eightedGraphQ|elchWindow|heelGraph|henEvent|hich|hile|hiteNoiseProcess|hittakerM|hittakerW|ienerFilter|ienerProcess|ignerD|ignerSemicircleDistribution|ikipediaData|ilksW|ilksWTest|indDirectionData|indSpeedData|indVectorData|indingCount|indingPolygon|insorizedMean|insorizedVariance|ishartMatrixDistribution|ith|olframAlpha|olframLanguageData|ordCloud|ordCount|ordCounts|ordData|ordDefinition|ordFrequency|ordFrequencyData|ordList|ordStem|ordTranslation|rite|riteLine|riteString|ronskian))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:X(?:MLElement|MLObject|MLTemplate|YZColor|nor|or))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:Y(?:uleDissimilarity))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:Z(?:IPCodeData|Test|Transform|ernikeR|eroSymmetric|eta|etaZero|ipfDistribution))(?![`$[:alnum:]])",
+ "name": "support.function.builtin.wolfram"
+ },
+ {
+ "match": "(?:A(?:cceptanceThreshold|ccuracyGoal|ctiveStyle|ddOnHelpPath|djustmentBoxOptions|lignment|lignmentPoint|llowGroupClose|llowInlineCells|llowLooseGrammar|llowReverseGroupClose|llowScriptLevelChange|llowVersionUpdate|llowedCloudExtraParameters|llowedCloudParameterExtensions|llowedDimensions|llowedFrequencyRange|llowedHeads|lternativeHypothesis|ltitudeMethod|mbiguityFunction|natomySkinStyle|nchoredSearch|nimationDirection|nimationRate|nimationRepetitions|nimationRunTime|nimationRunning|nimationTimeIndex|nnotationRules|ntialiasing|ppearance|ppearanceElements|ppearanceRules|spectRatio|ssociationFormat|ssumptions|synchronous|ttachedCell|udioChannelAssignment|udioEncoding|udioInputDevice|udioLabel|udioOutputDevice|uthentication|utoAction|utoCopy|utoDelete|utoGeneratedPackage|utoIndent|utoItalicWords|utoMultiplicationSymbol|utoOpenNotebooks|utoOpenPalettes|utoOperatorRenderings|utoRemove|utoScroll|utoSpacing|utoloadPath|utorunSequencing|xes|xesEdge|xesLabel|xesOrigin|xesStyle))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:B(?:ackground|arOrigin|arSpacing|aseStyle|aselinePosition|inaryFormat|ookmarks|ooleanStrings|oundaryStyle|oxBaselineShift|oxFormFormatTypes|oxFrame|oxMargins|oxRatios|oxStyle|oxed|ubbleScale|ubbleSizes|uttonBoxOptions|uttonData|uttonFunction|uttonMinHeight|uttonSource|yteOrdering))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:C(?:alendarType|alloutMarker|alloutStyle|aptureRunning|aseOrdering|elestialSystem|ellAutoOverwrite|ellBaseline|ellBracketOptions|ellChangeTimes|ellContext|ellDingbat|ellDingbatMargin|ellDynamicExpression|ellEditDuplicate|ellEpilog|ellEvaluationDuplicate|ellEvaluationFunction|ellEventActions|ellFrame|ellFrameColor|ellFrameLabelMargins|ellFrameLabels|ellFrameMargins|ellGrouping|ellGroupingRules|ellHorizontalScrolling|ellID|ellLabel|ellLabelAutoDelete|ellLabelMargins|ellLabelPositioning|ellLabelStyle|ellLabelTemplate|ellMargins|ellOpen|ellProlog|ellSize|ellTags|haracterEncoding|haracterEncodingsPath|hartBaseStyle|hartElementFunction|hartElements|hartLabels|hartLayout|hartLegends|hartStyle|lassPriors|lickToCopyEnabled|lipPlanes|lipPlanesStyle|lipRange|lippingStyle|losingAutoSave|loudBase|loudObjectNameFormat|loudObjectURLType|lusterDissimilarityFunction|odeAssistOptions|olorCoverage|olorFunction|olorFunctionBinning|olorFunctionScaling|olorRules|olorSelectorSettings|olorSpace|olumnAlignments|olumnLines|olumnSpacings|olumnWidths|olumnsEqual|ombinerFunction|ommonDefaultFormatTypes|ommunityBoundaryStyle|ommunityLabels|ommunityRegionStyle|ompilationOptions|ompilationTarget|ompiled|omplexityFunction|ompressionLevel|onfidenceLevel|onfidenceRange|onfidenceTransform|onfigurationPath|onstants|ontentPadding|ontentSelectable|ontentSize|ontinuousAction|ontourLabels|ontourShading|ontourStyle|ontours|ontrolPlacement|ontrolType|ontrollerLinking|ontrollerMethod|ontrollerPath|ontrolsRendering|onversionRules|ookieFunction|oordinatesToolOptions|opyFunction|opyable|ornerNeighbors|ounterAssignments|ounterFunction|ounterIncrements|ounterStyleMenuListing|ovarianceEstimatorFunction|reateCellID|reateIntermediateDirectories|riterionFunction|ubics|urveClosed))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:D(?:ataRange|ataReversed|atasetTheme|ateFormat|ateFunction|ateGranularity|ateReduction|ateTicksFormat|ayCountConvention|efaultDuplicateCellStyle|efaultDuration|efaultElement|efaultFontProperties|efaultFormatType|efaultInlineFormatType|efaultNaturalLanguage|efaultNewCellStyle|efaultNewInlineCellStyle|efaultNotebook|efaultOptions|efaultPrintPrecision|efaultStyleDefinitions|einitialization|eletable|eleteContents|eletionWarning|elimiterAutoMatching|elimiterFlashTime|elimiterMatching|elimiters|eliveryFunction|ependentVariables|eployed|escriptorStateSpace|iacriticalPositioning|ialogProlog|ialogSymbols|igitBlock|irectedEdges|irection|iscreteVariables|ispersionEstimatorFunction|isplayAllSteps|isplayFunction|istanceFunction|istributedContexts|ithering|ividers|ockedCell|ockedCells|ynamicEvaluationTimeout|ynamicModuleValues|ynamicUpdating))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:E(?:clipseType|dgeCapacity|dgeCost|dgeLabelStyle|dgeLabels|dgeShapeFunction|dgeStyle|dgeValueRange|dgeValueSizes|dgeWeight|ditCellTagsSettings|ditable|lidedForms|nabled|pilog|pilogFunction|scapeRadius|valuatable|valuationCompletionAction|valuationElements|valuationMonitor|valuator|valuatorNames|ventLabels|xcludePods|xcludedContexts|xcludedForms|xcludedLines|xcludedPhysicalQuantities|xclusions|xclusionsStyle|xponentFunction|xponentPosition|xponentStep|xponentialFamily|xportAutoReplacements|xpressionUUID|xtension|xtentElementFunction|xtentMarkers|xtentSize|xternalDataCharacterEncoding|xternalOptions|xternalTypeSignature))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:F(?:aceGrids|aceGridsStyle|ailureAction|eatureNames|eatureTypes|eedbackSector|eedbackSectorStyle|eedbackType|ieldCompletionFunction|ieldHint|ieldHintStyle|ieldMasked|ieldSize|ileNameDialogSettings|ileNameForms|illing|illingStyle|indSettings|itRegularization|ollowRedirects|ontColor|ontFamily|ontSize|ontSlant|ontSubstitutions|ontTracking|ontVariations|ontWeight|orceVersionInstall|ormBoxOptions|ormLayoutFunction|ormProtectionMethod|ormatType|ormatTypeAutoConvert|ourierParameters|ractionBoxOptions|ractionLine|rame|rameBoxOptions|rameLabel|rameMargins|rameRate|rameStyle|rameTicks|rameTicksStyle|rontEndEventActions|unctionSpace))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:G(?:apPenalty|augeFaceElementFunction|augeFaceStyle|augeFrameElementFunction|augeFrameSize|augeFrameStyle|augeLabels|augeMarkers|augeStyle|aussianIntegers|enerateConditions|eneratedCell|eneratedDocumentBinding|eneratedParameters|eneratedQuantityMagnitudes|eneratorDescription|eneratorHistoryLength|eneratorOutputType|eoArraySize|eoBackground|eoCenter|eoGridLines|eoGridLinesStyle|eoGridRange|eoGridRangePadding|eoLabels|eoLocation|eoModel|eoProjection|eoRange|eoRangePadding|eoResolution|eoScaleBar|eoServer|eoStylingImageFunction|eoZoomLevel|radient|raphHighlight|raphHighlightStyle|raphLayerStyle|raphLayers|raphLayout|ridCreationSettings|ridDefaultElement|ridFrame|ridFrameMargins|ridLines|ridLinesStyle|roupActionBase|roupPageBreakWithin))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:H(?:eaderAlignment|eaderBackground|eaderDisplayFunction|eaderLines|eaderSize|eaderStyle|eads|elpBrowserSettings|iddenItems|olidayCalendar|yperlinkAction|yphenation))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:I(?:conRules|gnoreCase|gnoreDiacritics|gnorePunctuation|mageCaptureFunction|mageFormattingWidth|mageLabels|mageLegends|mageMargins|magePadding|magePreviewFunction|mageRegion|mageResolution|mageSize|mageSizeAction|mageSizeMultipliers|magingDevice|mportAutoReplacements|mportOptions|ncludeConstantBasis|ncludeDefinitions|ncludeDirectories|ncludeFileExtension|ncludeGeneratorTasks|ncludeInflections|ncludeMetaInformation|ncludePods|ncludeQuantities|ncludeSingularSolutions|ncludeWindowTimes|ncludedContexts|ndeterminateThreshold|nflationMethod|nheritScope|nitialSeeding|nitialization|nitializationCell|nitializationCellEvaluation|nitializationCellWarning|nputAliases|nputAssumptions|nputAutoReplacements|nsertResults|nsertionFunction|nteractive|nterleaving|nterpolationOrder|nterpolationPoints|nterpretationBoxOptions|nterpretationFunction|ntervalMarkers|ntervalMarkersStyle|nverseFunctions|temAspectRatio|temDisplayFunction|temSize|temStyle))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:J(?:oined))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:K(?:eepExistingVersion|eyCollisionFunction|eypointStrength))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:L(?:abelStyle|abelVisibility|abelingFunction|abelingSize|anguage|anguageCategory|ayerSizeFunction|eaderSize|earningRate|egendAppearance|egendFunction|egendLabel|egendLayout|egendMargins|egendMarkerSize|egendMarkers|ighting|ightingAngle|imitsPositioning|imitsPositioningTokens|ineBreakWithin|ineIndent|ineIndentMaxFraction|ineIntegralConvolutionScale|ineSpacing|inearOffsetFunction|inebreakAdjustments|inkFunction|inkProtocol|istFormat|istPickerBoxOptions|ocalizeVariables|ocatorAutoCreate|ocatorRegion|ooping))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:M(?:agnification|ailAddressValidation|ailResponseFunction|ailSettings|asking|atchLocalNames|axCellMeasure|axColorDistance|axDuration|axExtraBandwidths|axExtraConditions|axFeatureDisplacement|axFeatures|axItems|axIterations|axMixtureKernels|axOverlapFraction|axPlotPoints|axRecursion|axStepFraction|axStepSize|axSteps|emoryConstraint|enuCommandKey|enuSortingValue|enuStyle|esh|eshCellHighlight|eshCellLabel|eshCellMarker|eshCellShapeFunction|eshCellStyle|eshFunctions|eshQualityGoal|eshRefinementFunction|eshShading|eshStyle|etaInformation|ethod|inColorDistance|inIntervalSize|inPointSeparation|issingBehavior|issingDataMethod|issingDataRules|issingString|issingStyle|odal|odulus|ultiaxisArrangement|ultiedgeStyle|ultilaunchWarning|ultilineFunction|ultiselection))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:N(?:icholsGridLines|ominalVariables|onConstants|ormFunction|ormalized|ormalsFunction|otebookAutoSave|otebookBrowseDirectory|otebookConvertSettings|otebookDynamicExpression|otebookEventActions|otebookPath|otebooksMenu|otificationFunction|ullRecords|ullWords|umberFormat|umberMarks|umberMultiplier|umberPadding|umberPoint|umberSeparator|umberSigns|yquistGridLines))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:O(?:pacityFunction|pacityFunctionScaling|peratingSystem|ptionInspectorSettings|utputAutoOverwrite|utputSizeLimit|verlaps|verscriptBoxOptions|verwriteTarget))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:P(?:IDDerivativeFilter|IDFeedforward|acletSite|adding|addingSize|ageBreakAbove|ageBreakBelow|ageBreakWithin|ageFooterLines|ageFooters|ageHeaderLines|ageHeaders|ageTheme|ageWidth|alettePath|aneled|aragraphIndent|aragraphSpacing|arallelization|arameterEstimator|artBehavior|artitionGranularity|assEventsDown|assEventsUp|asteBoxFormInlineCells|ath|erformanceGoal|ermissions|haseRange|laceholderReplace|layRange|lotLabel|lotLabels|lotLayout|lotLegends|lotMarkers|lotPoints|lotRange|lotRangeClipping|lotRangePadding|lotRegion|lotStyle|lotTheme|odStates|odWidth|olarAxes|olarAxesOrigin|olarGridLines|olarTicks|oleZeroMarkers|recisionGoal|referencesPath|reprocessingRules|reserveColor|reserveImageOptions|rincipalValue|rintAction|rintPrecision|rintingCopies|rintingOptions|rintingPageRange|rintingStartingPageNumber|rintingStyleEnvironment|rintout3DPreviewer|rivateCellOptions|rivateEvaluationOptions|rivateFontOptions|rivateNotebookOptions|rivatePaths|rocessDirectory|rocessEnvironment|rocessEstimator|rogressReporting|rolog|ropagateAborts))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:Q(?:uartics))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:R(?:adicalBoxOptions|andomSeeding|asterSize|eImLabels|eImStyle|ealBlockDiagonalForm|ecognitionPrior|ecordLists|ecordSeparators|eferenceLineStyle|efreshRate|egionBoundaryStyle|egionFillingStyle|egionFunction|egionSize|egularization|enderingOptions|equiredPhysicalQuantities|esampling|esamplingMethod|esolveContextAliases|estartInterval|eturnReceiptFunction|evolutionAxis|otateLabel|otationAction|oundingRadius|owAlignments|owLines|owMinHeight|owSpacings|owsEqual|ulerUnits|untimeAttributes|untimeOptions))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:S(?:ameTest|ampleDepth|ampleRate|amplingPeriod|aveConnection|aveDefinitions|aveable|caleDivisions|caleOrigin|calePadding|caleRangeStyle|caleRanges|calingFunctions|cientificNotationThreshold|creenStyleEnvironment|criptBaselineShifts|criptLevel|criptMinSize|criptSizeMultipliers|crollPosition|crollbars|crollingOptions|ectorOrigin|ectorSpacing|electable|elfLoopStyle|eriesTermGoal|haringList|howAutoSpellCheck|howAutoStyles|howCellBracket|howCellLabel|howCellTags|howClosedCellArea|howContents|howCursorTracker|howGroupOpener|howPageBreaks|howSelection|howShortBoxForm|howSpecialCharacters|howStringCharacters|hrinkingDelay|ignPadding|ignificanceLevel|imilarityRules|ingleLetterItalics|liderBoxOptions|ortedBy|oundVolume|pacings|panAdjustments|panCharacterRounding|panLineThickness|panMaxSize|panMinSize|panSymmetric|pecificityGoal|pellingCorrection|pellingDictionaries|pellingDictionariesPath|pellingOptions|phericalRegion|plineClosed|plineDegree|plineKnots|plineWeights|qrtBoxOptions|tabilityMargins|tabilityMarginsStyle|tandardized|tartingStepSize|tateSpaceRealization|tepMonitor|trataVariables|treamColorFunction|treamColorFunctionScaling|treamMarkers|treamPoints|treamScale|treamStyle|trictInequalities|tripOnInput|tripWrapperBoxes|tructuredSelection|tyleBoxAutoDelete|tyleDefinitions|tyleHints|tyleMenuListing|tyleNameDialogSettings|tyleSheetPath|ubscriptBoxOptions|ubsuperscriptBoxOptions|ubtitleEncoding|uperscriptBoxOptions|urdForm|ynchronousInitialization|ynchronousUpdating|yntaxForm|ystemHelpPath|ystemsModelLabels))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:T(?:abFilling|abSpacings|ableAlignments|ableDepth|ableDirections|ableHeadings|ableSpacing|agBoxOptions|aggingRules|argetFunctions|argetUnits|emplateBoxOptions|emporalRegularity|estID|extAlignment|extClipboardType|extJustification|extureCoordinateFunction|extureCoordinateScaling|icks|icksStyle|imeConstraint|imeDirection|imeFormat|imeGoal|imeSystem|imeZone|okenWords|olerance|ooltipDelay|ooltipStyle|otalWidth|ouchscreenAutoZoom|ouchscreenControlPlacement|raceAbove|raceBackward|raceDepth|raceForward|raceOff|raceOn|raceOriginal|rackedSymbols|rackingFunction|raditionalFunctionNotation|ransformationClass|ransformationFunctions|ransitionDirection|ransitionDuration|ransitionEffect|ranslationOptions|ravelMethod|rendStyle|rig))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:U(?:nderoverscriptBoxOptions|nderscriptBoxOptions|ndoOptions|ndoTrackedVariables|nitSystem|nityDimensions|nsavedVariables|pdateInterval|pdatePacletSites|tilityFunction))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:V(?:alidationLength|alidationSet|alueDimensions|arianceEstimatorFunction|ectorAspectRatio|ectorColorFunction|ectorColorFunctionScaling|ectorMarkers|ectorPoints|ectorRange|ectorScaling|ectorSizes|ectorStyle|erifyConvergence|erifySecurityCertificates|erifySolutions|erifyTestAssumptions|ersionedPreferences|ertexCapacity|ertexColors|ertexCoordinates|ertexDataCoordinates|ertexLabelStyle|ertexLabels|ertexNormals|ertexShape|ertexShapeFunction|ertexSize|ertexStyle|ertexTextureCoordinates|ertexWeight|ideoEncoding|iewAngle|iewCenter|iewMatrix|iewPoint|iewProjection|iewRange|iewVector|iewVertical|isible))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:W(?:aveletScale|eights|hitePoint|indowClickSelect|indowElements|indowFloating|indowFrame|indowFrameElements|indowMargins|indowOpacity|indowSize|indowStatusArea|indowTitle|indowToolbars|ordOrientation|ordSearch|ordSelectionFunction|ordSeparators|ordSpacings|orkingPrecision|rapAround))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:Z(?:eroTest|eroWidthTimes))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:A(?:bove|fter|lgebraics|ll|nonymous|utomatic|xis))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:B(?:ack|ackward|aseline|efore|elow|lack|lue|old|ooleans|ottom|oxes|rown|yte))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:C(?:atalan|ellStyle|enter|haracter|omplexInfinity|omplexes|onstant|yan))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:D(?:ashed|efaultAxesStyle|efaultBaseStyle|efaultBoxStyle|efaultFaceGridsStyle|efaultFieldHintStyle|efaultFrameStyle|efaultFrameTicksStyle|efaultGridLinesStyle|efaultLabelStyle|efaultMenuStyle|efaultTicksStyle|efaultTooltipStyle|egree|elimiter|igitCharacter|otDashed|otted))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:E(?:|ndOfBuffer|ndOfFile|ndOfLine|ndOfString|ulerGamma|xpression))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:F(?:alse|lat|ontProperties|orward|orwardBackward|riday|ront|rontEndDynamicExpression|ull))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:G(?:eneral|laisher|oldenAngle|oldenRatio|ray|reen))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:H(?:ere|exadecimalCharacter|oldAll|oldAllComplete|oldFirst|oldRest))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:I(?:|ndeterminate|nfinity|nherited|nteger|ntegers|talic))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:K(?:hinchin))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:L(?:arge|arger|eft|etterCharacter|ightBlue|ightBrown|ightCyan|ightGray|ightGreen|ightMagenta|ightOrange|ightPink|ightPurple|ightRed|ightYellow|istable|ocked))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:M(?:achinePrecision|agenta|anual|edium|eshCellCentroid|eshCellMeasure|eshCellQuality|onday))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:N(?:HoldAll|HoldFirst|HoldRest|egativeIntegers|egativeRationals|egativeReals|oWhitespace|onNegativeIntegers|onNegativeRationals|onNegativeReals|onPositiveIntegers|onPositiveRationals|onPositiveReals|one|ow|ull|umber|umberString|umericFunction))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:O(?:neIdentity|range|rderless))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:P(?:i|ink|lain|ositiveIntegers|ositiveRationals|ositiveReals|rimes|rotected|unctuationCharacter|urple))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:R(?:ationals|eadProtected|eal|eals|ecord|ed|ight))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:S(?:aturday|equenceHold|mall|maller|panFromAbove|panFromBoth|panFromLeft|tartOfLine|tartOfString|tring|truckthrough|tub|unday))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:T(?:emporary|hick|hin|hursday|iny|oday|omorrow|op|ransparent|rue|uesday))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:U(?:ndefined|nderlined))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:W(?:ednesday|hite|hitespace|hitespaceCharacter|ord|ordBoundary|ordCharacter))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:Y(?:ellow|esterday))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:\\$(?:Aborted|ActivationKey|AllowDataUpdates|AllowInternet|AssertFunction|Assumptions|AudioInputDevices|AudioOutputDevices|BaseDirectory|BasePacletsDirectory|BatchInput|BatchOutput|ByteOrdering|CacheBaseDirectory|Canceled|CharacterEncoding|CharacterEncodings|CloudAccountName|CloudBase|CloudConnected|CloudCreditsAvailable|CloudEvaluation|CloudExpressionBase|CloudObjectNameFormat|CloudObjectURLType|CloudRootDirectory|CloudSymbolBase|CloudUserID|CloudUserUUID|CloudVersion|CommandLine|CompilationTarget|Context|ContextAliases|ContextPath|ControlActiveSetting|Cookies|CreationDate|CurrentLink|CurrentTask|DateStringFormat|DefaultAudioInputDevice|DefaultAudioOutputDevice|DefaultFrontEnd|DefaultImagingDevice|DefaultKernels|DefaultLocalBase|DefaultLocalKernel|Display|DisplayFunction|DistributedContexts|DynamicEvaluation|Echo|EmbedCodeEnvironments|EmbeddableServices|Epilog|EvaluationCloudBase|EvaluationCloudObject|EvaluationEnvironment|ExportFormats|Failed|FontFamilies|FrontEnd|FrontEndSession|GeoLocation|GeoLocationCity|GeoLocationCountry|GeoLocationSource|HomeDirectory|IgnoreEOF|ImageFormattingWidth|ImageResolution|ImagingDevice|ImagingDevices|ImportFormats|InitialDirectory|Input|InputFileName|InputStreamMethods|Inspector|InstallationDirectory|InterpreterTypes|IterationLimit|KernelCount|KernelID|Language|LibraryPath|LicenseExpirationDate|LicenseID|LicenseServer|Linked|LocalBase|LocalSymbolBase|MachineAddresses|MachineDomains|MachineEpsilon|MachineID|MachineName|MachinePrecision|MachineType|MaxExtraPrecision|MaxMachineNumber|MaxNumber|MaxPiecewiseCases|MaxPrecision|MaxRootDegree|MessageGroups|MessageList|MessagePrePrint|Messages|MinMachineNumber|MinNumber|MinPrecision|MobilePhone|ModuleNumber|NetworkConnected|NewMessage|NewSymbol|NotebookInlineStorageLimit|Notebooks|NumberMarks|OperatingSystem|Output|OutputSizeLimit|OutputStreamMethods|Packages|ParentLink|ParentProcessID|PasswordFile|Path|PathnameSeparator|PerformanceGoal|Permissions|PlotTheme|Printout3DPreviewer|ProcessID|ProcessorCount|ProcessorType|ProgressReporting|RandomGeneratorState|RecursionLimit|ReleaseNumber|RequesterAddress|RequesterCloudUserID|RequesterCloudUserUUID|RequesterWolframID|RequesterWolframUUID|RootDirectory|ScriptCommandLine|ScriptInputString|Services|SessionID|SharedFunctions|SharedVariables|SoundDisplayFunction|SynchronousEvaluation|System|SystemCharacterEncoding|SystemID|SystemShell|SystemTimeZone|SystemWordLength|TemplatePath|TemporaryDirectory|TimeUnit|TimeZone|TimeZoneEntity|TimedOut|UnitSystem|Urgent|UserAgentString|UserBaseDirectory|UserBasePacletsDirectory|UserDocumentsDirectory|UserURLBase|Username|Version|VersionNumber|WolframDocumentsDirectory|WolframID|WolframUUID))(?![`$[:alnum:]])",
+ "name": "constant.language.wolfram"
+ },
+ {
+ "match": "(?:A(?:bortScheduledTask|ctive|lgebraicRules|lternateImage|natomyForm|nimationCycleOffset|nimationCycleRepetitions|nimationDisplayTime|spectRatioFixed|stronomicalData|synchronousTaskObject|synchronousTasks|udioDevice|udioLooping))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:B(?:uttonEvaluator|uttonExpandable|uttonFrame|uttonMargins|uttonNote|uttonStyle))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:C(?:DFInformation|hebyshevDistance|lassifierInformation|lipFill|olorOutput|olumnForm|ompose|onstantArrayLayer|onstantPlusLayer|onstantTimesLayer|onstrainedMax|onstrainedMin|ontourGraphics|ontourLines|onversionOptions|reateScheduledTask|reateTemporary|urry))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:D(?:atabinRemove|ate|ebug|efaultColor|efaultFont|ensityGraphics|isplay|isplayString|otPlusLayer|ragAndDrop))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:E(?:dgeLabeling|dgeRenderingFunction|valuateScheduledTask|xpectedValue))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:F(?:actorComplete|ontForm|ormTheme|romDate|ullOptions))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:G(?:raphStyle|raphicsArray|raphicsSpacing|ridBaseline))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:H(?:TMLSave|eldPart|iddenSurface|omeDirectory))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:I(?:mageRotated|nstanceNormalizationLayer))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:L(?:UBackSubstitution|egendreType|ightSources|inearProgramming|inkOpen|iteral|ongestMatch))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:M(?:eshRange|oleculeEquivalentQ))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:N(?:etInformation|etSharedArray|extScheduledTaskTime|otebookCreate))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:O(?:penTemporary))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:P(?:IDData|ackingMethod|ersistentValue|ixelConstrained|lot3Matrix|lotDivision|lotJoined|olygonIntersections|redictorInformation|roperties|roperty|ropertyList|ropertyValue))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:R(?:andom|asterArray|ecognitionThreshold|elease|emoteKernelObject|emoveAsynchronousTask|emoveProperty|emoveScheduledTask|enderAll|eplaceHeldPart|esetScheduledTask|esumePacket|unScheduledTask))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:S(?:cheduledTaskActiveQ|cheduledTaskInformation|cheduledTaskObject|cheduledTasks|creenRectangle|electionAnimate|equenceAttentionLayer|equenceForm|etProperty|hading|hortestMatch|ingularValues|kinStyle|ocialMediaData|tartAsynchronousTask|tartScheduledTask|tateDimensions|topAsynchronousTask|topScheduledTask|tructuredArray|tyleForm|tylePrint|ubscripted|urfaceColor|urfaceGraphics|uspendPacket|ystemModelProgressReporting))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:T(?:eXSave|extStyle|imeWarpingCorrespondence|imeWarpingDistance|oDate|oFileName|oHeldExpression))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:U(?:RLFetch|RLFetchAsynchronous|RLSave|RLSaveAsynchronous))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:V(?:ectorScale|ertexCoordinateRules|ertexLabeling|ertexRenderingFunction))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:W(?:aitAsynchronousTask|indowMovable))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:\\$(?:AsynchronousTask|ConfiguredKernels|DefaultFont|EntityStores|FormatType|HTTPCookies|InstallationDate|MachineDomain|ProductInformation|ProgramName|RandomState|ScheduledTask|SummaryBoxDataSizeLimit|TemporaryPrefix|TextStyle|TopDirectory|UserAddOnsDirectory))(?![`$[:alnum:]])",
+ "name": "invalid.deprecated.wolfram"
+ },
+ {
+ "match": "(?:A(?:ctionDelay|ctionMenuBox|ctionMenuBoxOptions|ctiveItem|lgebraicRulesData|lignmentMarker|llowAdultContent|llowChatServices|llowIncomplete|nalytic|nimatorBox|nimatorBoxOptions|nimatorElements|ppendCheck|rgumentCountQ|rrow3DBox|rrowBox|uthenticate|utoEvaluateEvents|utoIndentSpacings|utoMatch|utoNumberFormatting|utoQuoteCharacters|utoScaling|utoStyleOptions|utoStyleWords|utomaticImageSize|xis3DBox|xis3DBoxOptions|xisBox|xisBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:B(?:SplineCurve3DBox|SplineCurve3DBoxOptions|SplineCurveBox|SplineCurveBoxOptions|SplineSurface3DBox|SplineSurface3DBoxOptions|ackFaceColor|ackFaceGlowColor|ackFaceOpacity|ackFaceSpecularColor|ackFaceSpecularExponent|ackFaceSurfaceAppearance|ackFaceTexture|ackgroundAppearance|ackgroundTasksSettings|acksubstitution|eveled|ezierCurve3DBox|ezierCurve3DBoxOptions|ezierCurveBox|ezierCurveBoxOptions|lankForm|ounds|ox|oxDimensions|oxForm|oxID|oxRotation|oxRotationPoint|ra|raKet|rowserCategory|uttonCell|uttonContents|uttonStyleMenuListing))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:C(?:acheGraphics|achedValue|ardinalBSplineBasis|ellBoundingBox|ellContents|ellElementSpacings|ellElementsBoundingBox|ellFrameStyle|ellInsertionPointCell|ellTrayPosition|ellTrayWidgets|hangeOptions|hannelDatabin|hannelListenerWait|hannelPreSendFunction|hartElementData|hartElementDataFunction|heckAll|heckboxBox|heckboxBoxOptions|ircleBox|lipboardNotebook|lockwiseContourIntegral|losed|losingEvent|loudConnections|loudObjectInformation|loudObjectInformationData|loudUserID|oarse|oefficientDomain|olonForm|olorSetterBox|olorSetterBoxOptions|olumnBackgrounds|ompilerEnvironmentAppend|ompletionsListPacket|omponentwiseContextMenu|ompressedData|oneBox|onicHullRegion3DBox|onicHullRegion3DBoxOptions|onicHullRegionBox|onicHullRegionBoxOptions|onnect|ontentsBoundingBox|ontextMenu|ontinuation|ontourIntegral|ontourSmoothing|ontrolAlignment|ontrollerDuration|ontrollerInformationData|onvertToPostScript|onvertToPostScriptPacket|ookies|opyTag|ounterBox|ounterBoxOptions|ounterClockwiseContourIntegral|ounterEvaluator|ounterStyle|uboidBox|uboidBoxOptions|urlyDoubleQuote|urlyQuote|ylinderBox|ylinderBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:D(?:OSTextFormat|ampingFactor|ataCompression|atasetDisplayPanel|ateDelimiters|ebugTag|ecimal|efault2DTool|efault3DTool|efaultAttachedCellStyle|efaultControlPlacement|efaultDockedCellStyle|efaultInputFormatType|efaultOutputFormatType|efaultStyle|efaultTextFormatType|efaultTextInlineFormatType|efaultValue|efineExternal|egreeLexicographic|egreeReverseLexicographic|eleteWithContents|elimitedArray|estroyAfterEvaluation|eviceOpenQ|ialogIndent|ialogLevel|ifferenceOrder|igitBlockMinimum|isableConsolePrintPacket|iskBox|iskBoxOptions|ispatchQ|isplayRules|isplayTemporary|istributionDomain|ivergence|ocumentGeneratorInformationData|omainRegistrationInformation|oubleContourIntegral|oublyInfinite|own|rawBackFaces|rawFrontFaces|rawHighlighted|ualLinearProgramming|umpGet|ynamicBox|ynamicBoxOptions|ynamicLocation|ynamicModuleBox|ynamicModuleBoxOptions|ynamicModuleParent|ynamicName|ynamicNamespace|ynamicReference|ynamicWrapperBox|ynamicWrapperBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:E(?:ditButtonSettings|liminationOrder|llipticReducedHalfPeriods|mbeddingObject|mphasizeSyntaxErrors|mpty|nableConsolePrintPacket|ndAdd|ngineEnvironment|nter|qualColumns|qualRows|quatedTo|rrorBoxOptions|rrorNorm|rrorPacket|rrorsDialogSettings|valuated|valuationMode|valuationOrder|valuationRateLimit|ventEvaluator|ventHandlerTag|xactRootIsolation|xitDialog|xpectationE|xportPacket|xpressionPacket|xternalCall|xternalFunctionName))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:F(?:EDisableConsolePrintPacket|EEnableConsolePrintPacket|ail|ileInformation|ileName|illForm|illedCurveBox|illedCurveBoxOptions|ine|itAll|lashSelection|ont|ontName|ontOpacity|ontPostScriptName|ontReencoding|ormatRules|ormatValues|rameInset|rameless|rontEndObject|rontEndResource|rontEndResourceString|rontEndStackSize|rontEndValueCache|rontEndVersion|rontFaceColor|rontFaceGlowColor|rontFaceOpacity|rontFaceSpecularColor|rontFaceSpecularExponent|rontFaceSurfaceAppearance|rontFaceTexture|ullAxes))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:G(?:eneratedCellStyles|eneric|eometricTransformation3DBox|eometricTransformation3DBoxOptions|eometricTransformationBox|eometricTransformationBoxOptions|estureHandlerTag|etContext|etFileName|etLinebreakInformationPacket|lobalPreferences|lobalSession|raphLayerLabels|raphRoot|raphics3DBox|raphics3DBoxOptions|raphicsBaseline|raphicsBox|raphicsBoxOptions|raphicsComplex3DBox|raphicsComplex3DBoxOptions|raphicsComplexBox|raphicsComplexBoxOptions|raphicsContents|raphicsData|raphicsGridBox|raphicsGroup3DBox|raphicsGroup3DBoxOptions|raphicsGroupBox|raphicsGroupBoxOptions|raphicsGrouping|raphicsStyle|reekStyle|ridBoxAlignment|ridBoxBackground|ridBoxDividers|ridBoxFrame|ridBoxItemSize|ridBoxItemStyle|ridBoxOptions|ridBoxSpacings|ridElementStyleOptions|roupOpenerColor|roupOpenerInsideFrame|roupTogetherGrouping|roupTogetherNestedGrouping))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:H(?:eadCompose|eaders|elpBrowserLookup|elpBrowserNotebook|elpViewerSettings|essian|exahedronBox|exahedronBoxOptions|ighlightString|omePage|orizontal|orizontalForm|orizontalScrollPosition|yperlinkCreationSettings|yphenationOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:I(?:conizedObject|gnoreSpellCheck|mageCache|mageCacheValid|mageEditMode|mageMarkers|mageOffset|mageRangeCache|mageSizeCache|mageSizeRaw|nactiveStyle|ncludeSingularTerm|ndent|ndentMaxFraction|ndentingNewlineSpacings|ndexCreationOptions|ndexTag|nequality|nexactNumbers|nformationData|nformationDataGrid|nlineCounterAssignments|nlineCounterIncrements|nlineRules|nputFieldBox|nputFieldBoxOptions|nputGrouping|nputSettings|nputToBoxFormPacket|nsertionPointObject|nset3DBox|nset3DBoxOptions|nsetBox|nsetBoxOptions|ntegral|nterlaced|nterpolationPrecision|nterpretTemplate|nterruptSettings|nto|nvisibleApplication|nvisibleTimes|temBox|temBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:J(?:acobian|oinedCurveBox|oinedCurveBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:K(?:|ernelExecute|et))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:L(?:abeledSlider|ambertW|anguageOptions|aunch|ayoutInformation|exicographic|icenseID|ine3DBox|ine3DBoxOptions|ineBox|ineBoxOptions|ineBreak|ineWrapParts|inearFilter|inebreakSemicolonWeighting|inkConnectedQ|inkError|inkFlush|inkHost|inkMode|inkOptions|inkReadHeld|inkService|inkWriteHeld|istPickerBoxBackground|isten|iteralSearch|ocalizeDefinitions|ocatorBox|ocatorBoxOptions|ocatorCentering|ocatorPaneBox|ocatorPaneBoxOptions|ongEqual|ongForm|oopback))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:M(?:achineID|achineName|acintoshSystemPageSetup|ainSolve|aintainDynamicCaches|akeRules|atchLocalNameQ|aterial|athMLText|athematicaNotation|axBend|axPoints|enu|enuAppearance|enuEvaluator|enuItem|enuList|ergeDifferences|essageObject|essageOptions|essagesNotebook|etaCharacters|ethodOptions|inRecursion|inSize|ode|odular|onomialOrder|ouseAppearanceTag|ouseButtons|ousePointerNote|ultiLetterItalics|ultiLetterStyle|ultiplicity|ultiscriptBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:N(?:BernoulliB|ProductFactors|SumTerms|Values|amespaceBox|amespaceBoxOptions|estedScriptRules|etworkPacketRecordingDuring|ext|onAssociative|ormalGrouping|otebookDefault|otebookInterfaceObject))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:O(?:LEData|bjectExistsQ|pen|penFunctionInspectorPacket|penSpecialOptions|penerBox|penerBoxOptions|ptionQ|ptionValueBox|ptionValueBoxOptions|ptionsPacket|utputFormData|utputGrouping|utputMathEditExpression|ver|verlayBox|verlayBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:P(?:ackPaclet|ackage|acletDirectoryAdd|acletDirectoryRemove|acletInformation|acletObjectQ|acletUpdate|ageHeight|alettesMenuSettings|aneBox|aneBoxOptions|aneSelectorBox|aneSelectorBoxOptions|anelBox|anelBoxOptions|aperWidth|arameter|arameterVariables|arentConnect|arentForm|arentList|arenthesize|artialD|asteAutoQuoteCharacters|ausedTime|eriodicInterpolation|erpendicular|ickMode|ickedElements|ivoting|lotRangeClipPlanesStyle|oint3DBox|oint3DBoxOptions|ointBox|ointBoxOptions|olygon3DBox|olygon3DBoxOptions|olygonBox|olygonBoxOptions|olygonHoleScale|olygonScale|olyhedronBox|olyhedronBoxOptions|olynomialForm|olynomials|opupMenuBox|opupMenuBoxOptions|ostScript|recedence|redictionRoot|referencesSettings|revious|rimaryPlaceholder|rintForm|rismBox|rismBoxOptions|rivateFrontEndOptions|robabilityPr|rocessStateDomain|rocessTimeDomain|rogressIndicatorBox|rogressIndicatorBoxOptions|romptForm|yramidBox|yramidBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:R(?:adioButtonBox|adioButtonBoxOptions|andomSeed|angeSpecification|aster3DBox|aster3DBoxOptions|asterBox|asterBoxOptions|ationalFunctions|awArray|awMedium|ebuildPacletData|ectangleBox|ecurringDigitsForm|eferenceMarkerStyle|eferenceMarkers|einstall|emoved|epeatedString|esourceAcquire|esourceSubmissionObject|eturnCreatesNewCell|eturnEntersInput|eturnInputFormPacket|otationBox|otationBoxOptions|oundImplies|owBackgrounds|owHeights|uleCondition|uleForm))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:S(?:aveAutoDelete|caledMousePosition|cheduledTaskInformationData|criptForm|criptRules|ectionGrouping|electWithContents|election|electionCell|electionCellCreateCell|electionCellDefaultStyle|electionCellParentStyle|electionPlaceholder|elfLoops|erviceResponse|etOptionsPacket|etSecuredAuthenticationKey|etbacks|etterBox|etterBoxOptions|howAutoConvert|howCodeAssist|howControls|howGroupOpenCloseIcon|howInvisibleCharacters|howPredictiveInterface|howSyntaxStyles|hrinkWrapBoundingBox|ingleEvaluation|ingleLetterStyle|lider2DBox|lider2DBoxOptions|ocket|olveDelayed|oundAndGraphics|pace|paceForm|panningCharacters|phereBox|phereBoxOptions|tartupSound|tringBreak|tringByteCount|tripStyleOnPaste|trokeForm|tructuredArrayHeadQ|tyleKeyMapping|tyleNames|urfaceAppearance|yntax|ystemException|ystemGet|ystemInformationData|ystemStub|ystemTest))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:T(?:ab|abViewBox|abViewBoxOptions|ableViewBox|ableViewBoxAlignment|ableViewBoxBackground|ableViewBoxHeaders|ableViewBoxItemSize|ableViewBoxItemStyle|ableViewBoxOptions|agBoxNote|agStyle|emplateEvaluate|emplateSlotSequence|emplateUnevaluated|emplateVerbatim|emporaryVariable|ensorQ|etrahedronBox|etrahedronBoxOptions|ext3DBox|ext3DBoxOptions|extBand|extBoundingBox|extBox|extForm|extLine|extParagraph|hisLink|itleGrouping|oColor|oggle|oggleFalse|ogglerBox|ogglerBoxOptions|ooBig|ooltipBox|ooltipBoxOptions|otalHeight|raceAction|raceInternal|raceLevel|rackCellChangeTimes|raditionalNotation|raditionalOrder|ransparentColor|rapEnterKey|rapSelection|ubeBSplineCurveBox|ubeBSplineCurveBoxOptions|ubeBezierCurveBox|ubeBezierCurveBoxOptions|ubeBox|ubeBoxOptions))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:U(?:ntrackedVariables|p|seGraphicsRange|serDefinedWavelet|sing))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:V(?:2Get|alueBox|alueBoxOptions|alueForm|aluesData|ectorGlyphData|erbose|ertical|erticalForm|iewPointSelectorSettings|iewPort|irtualGroupData|isibleCell))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:W(?:aitUntil|ebPageMetaInformation|holeCellGroupOpener|indowPersistentStyles|indowSelected|indowWidth|olframAlphaDate|olframAlphaQuantity|olframAlphaResult|olframCloudSettings))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:\\$(?:ActivationGroupID|ActivationUserRegistered|AddOnsDirectory|BoxForms|CloudConnection|CloudVersionNumber|CloudWolframEngineVersionNumber|ConditionHold|DefaultMailbox|DefaultPath|FinancialDataSource|GeoEntityTypes|GeoLocationPrecision|HTMLExportRules|HTTPRequest|LaunchDirectory|LicenseProcesses|LicenseSubprocesses|LicenseType|LinkSupported|LoadedFiles|MaxLicenseProcesses|MaxLicenseSubprocesses|MinorReleaseNumber|NetworkLicense|Off|OutputForms|PatchLevelID|PermissionsGroupBase|PipeSupported|PreferencesDirectory|PrintForms|PrintLiteral|RegisteredDeviceClasses|RegisteredUserName|SecuredAuthenticationKeyTokens|SetParentLink|SoundDisplay|SuppressInputFormHeads|SystemMemory|TraceOff|TraceOn|TracePattern|TracePostAction|TracePreAction|UserAgentLanguages|UserAgentMachine|UserAgentName|UserAgentOperatingSystem|UserAgentVersion|UserName))(?![`$[:alnum:]])",
+ "name": "support.function.undocumented.wolfram"
+ },
+ {
+ "match": "(?:A(?:ctiveClassification|ctiveClassificationObject|ctivePrediction|ctivePredictionObject|ddToSearchIndex|ggregatedEntityClass|ggregationLayer|ngleBisector|nimatedImage|nimationVideo|nomalyDetector|ppendLayer|pplication|pplyReaction|round|roundReplace|rrayReduce|sk|skAppend|skConfirm|skDisplay|skFunction|skState|skTemplateDisplay|skedQ|skedValue|ssessmentFunction|ssessmentResultObject|ssumeDeterministic|stroAngularSeparation|stroBackground|stroCenter|stroDistance|stroGraphics|stroGridLines|stroGridLinesStyle|stroPosition|stroProjection|stroRange|stroRangePadding|stroReferenceFrame|stroStyling|stroZoomLevel|tom|tomCoordinates|tomCount|tomDiagramCoordinates|tomLabelStyle|tomLabels|tomList|ttachCell|ttentionLayer|udioAnnotate|udioAnnotationLookup|udioIdentify|udioInstanceQ|udioPause|udioPlay|udioRecord|udioStop|udioStream|udioStreams|udioTrackApply|udioTrackSelection|utocomplete|utocompletionFunction|xiomaticTheory|xisLabel|xisObject|xisStyle))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:B(?:asicRecurrentLayer|atchNormalizationLayer|atchSize|ayesianMaximization|ayesianMaximizationObject|ayesianMinimization|ayesianMinimizationObject|esagL|innedVariogramList|inomialPointProcess|ioSequence|ioSequenceBackTranslateList|ioSequenceComplement|ioSequenceInstances|ioSequenceModify|ioSequencePlot|ioSequenceQ|ioSequenceReverseComplement|ioSequenceTranscribe|ioSequenceTranslate|itRate|lockDiagonalMatrix|lockLowerTriangularMatrix|lockUpperTriangularMatrix|lockchainAddressData|lockchainBase|lockchainBlockData|lockchainContractValue|lockchainData|lockchainGet|lockchainKeyEncode|lockchainPut|lockchainTokenData|lockchainTransaction|lockchainTransactionData|lockchainTransactionSign|lockchainTransactionSubmit|ond|ondCount|ondLabelStyle|ondLabels|ondList|ondQ|uildCompiledComponent))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:C(?:TCLossLayer|achePersistence|anvas|ast|ategoricalDistribution|atenateLayer|auchyPointProcess|hannelBase|hannelBrokerAction|hannelHistoryLength|hannelListen|hannelListener|hannelListeners|hannelObject|hannelReceiverFunction|hannelSend|hannelSubscribers|haracterNormalize|hemicalConvert|hemicalFormula|hemicalInstance|hemicalReaction|loudExpression|loudExpressions|loudRenderingMethod|ombinatorB|ombinatorC|ombinatorI|ombinatorK|ombinatorS|ombinatorW|ombinatorY|ombinedEntityClass|ompiledCodeFunction|ompiledComponent|ompiledExpressionDeclaration|ompiledLayer|ompilerCallback|ompilerEnvironment|ompilerEnvironmentAppendTo|ompilerEnvironmentObject|ompilerOptions|omplementedEntityClass|omputeUncertainty|onfirmQuiet|onformationMethod|onnectSystemModelComponents|onnectSystemModelController|onnectedMoleculeComponents|onnectedMoleculeQ|onnectionSettings|ontaining|ontentDetectorFunction|ontentFieldOptions|ontentLocationFunction|ontentObject|ontrastiveLossLayer|onvolutionLayer|reateChannel|reateCloudExpression|reateCompilerEnvironment|reateDataStructure|reateDataSystemModel|reateLicenseEntitlement|reateSearchIndex|reateSystemModel|reateTypeInstance|rossEntropyLossLayer|urrentNotebookImage|urrentScreenImage|urryApplied))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:D(?:SolveChangeVariables|ataStructure|ataStructureQ|atabaseConnect|atabaseDisconnect|atabaseReference|atabinSubmit|ateInterval|eclareCompiledComponent|econvolutionLayer|ecryptFile|eleteChannel|eleteCloudExpression|eleteElements|eleteSearchIndex|erivedKey|iggleGatesPointProcess|iggleGrattonPointProcess|igitalSignature|isableFormatting|ocumentWeightingRules|otLayer|ownValuesFunction|ropoutLayer|ynamicImage))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:E(?:choTiming|lementwiseLayer|mbeddedSQLEntityClass|mbeddedSQLExpression|mbeddingLayer|mptySpaceF|ncryptFile|ntityFunction|ntityStore|stimatedPointProcess|stimatedVariogramModel|valuationEnvironment|valuationPrivileges|xpirationDate|xpressionTree|xtendedEntityClass|xternalEvaluate|xternalFunction|xternalIdentifier|xternalObject|xternalSessionObject|xternalSessions|xternalStorageBase|xternalStorageDownload|xternalStorageGet|xternalStorageObject|xternalStoragePut|xternalStorageUpload|xternalValue|xtractLayer))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:F(?:aceRecognize|eatureDistance|eatureExtract|eatureExtraction|eatureExtractor|eatureExtractorFunction|ileConvert|ileFormatProperties|ileNameToFormatList|ileSystemTree|ilteredEntityClass|indChannels|indEquationalProof|indExternalEvaluators|indGeometricConjectures|indImageText|indIsomers|indMoleculeSubstructure|indPointProcessParameters|indSystemModelEquilibrium|indTextualAnswer|lattenLayer|orAllType|ormControl|orwardCloudCredentials|oxHReduce|rameListVideo|romRawPointer|unctionCompile|unctionCompileExport|unctionCompileExportByteArray|unctionCompileExportLibrary|unctionCompileExportString|unctionDeclaration|unctionLayer|unctionPoles))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:G(?:alleryView|atedRecurrentLayer|enerateDerivedKey|enerateDigitalSignature|enerateFileSignature|enerateSecuredAuthenticationKey|eneratedAssetFormat|eneratedAssetLocation|eoGraphValuePlot|eoOrientationData|eometricAssertion|eometricScene|eometricStep|eometricStylingRules|eometricTest|ibbsPointProcess|raphTree|ridVideo))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:H(?:andlerFunctions|andlerFunctionsKeys|ardcorePointProcess|istogramPointDensity))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:I(?:gnoreIsotopes|gnoreStereochemistry|mageAugmentationLayer|mageBoundingBoxes|mageCases|mageContainsQ|mageContents|mageGraphics|magePosition|magePyramid|magePyramidApply|mageStitch|mportedObject|ncludeAromaticBonds|ncludeHydrogens|ncludeRelatedTables|nertEvaluate|nertExpression|nfiniteFuture|nfinitePast|nhomogeneousPoissonPointProcess|nitialEvaluationHistory|nitializationObject|nitializationObjects|nitializationValue|nitialize|nputPorts|ntegrateChangeVariables|nterfaceSwitched|ntersectedEntityClass|nverseImagePyramid))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:K(?:ernelConfiguration|ernelFunction))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:L(?:earningRateMultipliers|ibraryFunctionDeclaration|icenseEntitlementObject|icenseEntitlements|icensingSettings|inearLayer|iteralType|oadCompiledComponent|ocalResponseNormalizationLayer|ongShortTermMemoryLayer|ossFunction))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:M(?:IMETypeToFormatList|ailExecute|ailFolder|ailItem|ailSearch|ailServerConnect|ailServerConnection|aternPointProcess|axDisplayedChildren|axTrainingRounds|axWordGap|eanAbsoluteLossLayer|eanAround|eanPointDensity|eanSquaredLossLayer|ergingFunction|idpoint|issingValuePattern|issingValueSynthesis|olecule|oleculeAlign|oleculeContainsQ|oleculeDraw|oleculeFreeQ|oleculeGraph|oleculeMatchQ|oleculeMaximumCommonSubstructure|oleculeModify|oleculeName|oleculePattern|oleculePlot|oleculePlot3D|oleculeProperty|oleculeQ|oleculeRecognize|oleculeSubstructureCount|oleculeValue))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:N(?:BodySimulation|BodySimulationData|earestNeighborG|estTree|etAppend|etArray|etArrayLayer|etBidirectionalOperator|etChain|etDecoder|etDelete|etDrop|etEncoder|etEvaluationMode|etExternalObject|etExtract|etFlatten|etFoldOperator|etGANOperator|etGraph|etInitialize|etInsert|etInsertSharedArrays|etJoin|etMapOperator|etMapThreadOperator|etMeasurements|etModel|etNestOperator|etPairEmbeddingOperator|etPort|etPortGradient|etPrepend|etRename|etReplace|etReplacePart|etStateObject|etTake|etTrain|etTrainResultsObject|etUnfold|etworkPacketCapture|etworkPacketRecording|etworkPacketTrace|eymanScottPointProcess|ominalScale|ormalizationLayer|umericArray|umericArrayQ|umericArrayType))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:O(?:peratorApplied|rderingLayer|rdinalScale|utputPorts|verlayVideo))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:P(?:acletSymbol|addingLayer|agination|airCorrelationG|arametricRampLayer|arentEdgeLabel|arentEdgeLabelFunction|arentEdgeLabelStyle|arentEdgeShapeFunction|arentEdgeStyle|arentEdgeStyleFunction|artLayer|artProtection|atternFilling|atternReaction|enttinenPointProcess|erpendicularBisector|ersistenceLocation|ersistenceTime|ersistentObject|ersistentObjects|ersistentSymbol|itchRecognize|laceholderLayer|laybackSettings|ointCountDistribution|ointDensity|ointDensityFunction|ointProcessEstimator|ointProcessFitTest|ointProcessParameterAssumptions|ointProcessParameterQ|ointStatisticFunction|ointValuePlot|oissonPointProcess|oolingLayer|rependLayer|roofObject|ublisherID))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:Q(?:uestionGenerator|uestionInterface|uestionObject|uestionSelector))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:R(?:andomArrayLayer|andomInstance|andomPointConfiguration|andomTree|eactionBalance|eactionBalancedQ|ecalibrationFunction|egisterExternalEvaluator|elationalDatabase|emoteAuthorizationCaching|emoteBatchJobAbort|emoteBatchJobObject|emoteBatchJobs|emoteBatchMapSubmit|emoteBatchSubmissionEnvironment|emoteBatchSubmit|emoteConnect|emoteConnectionObject|emoteEvaluate|emoteFile|emoteInputFiles|emoteProviderSettings|emoteRun|emoteRunProcess|emovalConditions|emoveAudioStream|emoveChannelListener|emoveChannelSubscribers|emoveVideoStream|eplicateLayer|eshapeLayer|esizeLayer|esourceFunction|esourceRegister|esourceRemove|esourceSubmit|esourceSystemBase|esourceSystemPath|esourceUpdate|esourceVersion|everseApplied|ipleyK|ipleyRassonRegion|ootTree|ulesTree))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:S(?:ameTestProperties|ampledEntityClass|earchAdjustment|earchIndexObject|earchIndices|earchQueryString|earchResultObject|ecuredAuthenticationKey|ecuredAuthenticationKeys|ecurityCertificate|equenceIndicesLayer|equenceLastLayer|equenceMostLayer|equencePredict|equencePredictorFunction|equenceRestLayer|equenceReverseLayer|erviceRequest|erviceSubmit|etFileFormatProperties|etSystemModel|lideShowVideo|moothPointDensity|nippet|nippetsVideo|nubPolyhedron|oftmaxLayer|olidBoundaryLoadValue|olidDisplacementCondition|olidFixedCondition|olidMechanicsPDEComponent|olidMechanicsStrain|olidMechanicsStress|ortedEntityClass|ourceLink|patialBinnedPointData|patialBoundaryCorrection|patialEstimate|patialEstimatorFunction|patialJ|patialNoiseLevel|patialObservationRegionQ|patialPointData|patialPointSelect|patialRandomnessTest|patialTransformationLayer|patialTrendFunction|peakerMatchQ|peechCases|peechInterpreter|peechRecognize|plice|tartExternalSession|tartWebSession|tereochemistryElements|traussHardcorePointProcess|traussPointProcess|ubsetCases|ubsetCount|ubsetPosition|ubsetReplace|ubtitleTrackSelection|ummationLayer|ymmetricDifference|ynthesizeMissingValues|ystemCredential|ystemCredentialData|ystemCredentialKey|ystemCredentialKeys|ystemCredentialStoreObject|ystemInstall|ystemModel|ystemModelExamples|ystemModelLinearize|ystemModelMeasurements|ystemModelParametricSimulate|ystemModelPlot|ystemModelReliability|ystemModelSimulate|ystemModelSimulateSensitivity|ystemModelSimulationData|ystemModeler|ystemModels))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:T(?:ableView|argetDevice|argetSystem|ernaryListPlot|ernaryPlotCorners|extCases|extContents|extElement|extPosition|extSearch|extSearchReport|extStructure|homasPointProcess|hreaded|hreadingLayer|ickDirection|ickLabelOrientation|ickLabelPositioning|ickLabels|ickLengths|ickPositions|oRawPointer|otalLayer|ourVideo|rainImageContentDetector|rainTextContentDetector|rainingProgressCheckpointing|rainingProgressFunction|rainingProgressMeasurements|rainingProgressReporting|rainingStoppingCriterion|rainingUpdateSchedule|ransposeLayer|ree|reeCases|reeChildren|reeCount|reeData|reeDelete|reeDepth|reeElementCoordinates|reeElementLabel|reeElementLabelFunction|reeElementLabelStyle|reeElementShape|reeElementShapeFunction|reeElementSize|reeElementSizeFunction|reeElementStyle|reeElementStyleFunction|reeExpression|reeExtract|reeFold|reeInsert|reeLayout|reeLeafCount|reeLeafQ|reeLeaves|reeLevel|reeMap|reeMapAt|reeOutline|reePosition|reeQ|reeReplacePart|reeRules|reeScan|reeSelect|reeSize|reeTraversalOrder|riangleCenter|riangleConstruct|riangleMeasurement|ypeDeclaration|ypeEvaluate|ypeOf|ypeSpecifier|yped))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:U(?:RLDownloadSubmit|nconstrainedParameters|nionedEntityClass|niqueElements|nitVectorLayer|nlabeledTree|nmanageObject|nregisterExternalEvaluator|pdateSearchIndex|seEmbeddedLibrary))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:V(?:alenceErrorHandling|alenceFilling|aluePreprocessingFunction|andermondeMatrix|arianceGammaPointProcess|ariogramFunction|ariogramModel|ectorAround|erifyDerivedKey|erifyDigitalSignature|erifyFileSignature|erifyInterpretation|ideo|ideoCapture|ideoCombine|ideoDelete|ideoExtractFrames|ideoFrameList|ideoFrameMap|ideoGenerator|ideoInsert|ideoIntervals|ideoJoin|ideoMap|ideoMapList|ideoMapTimeSeries|ideoPadding|ideoPause|ideoPlay|ideoQ|ideoRecord|ideoReplace|ideoScreenCapture|ideoSplit|ideoStop|ideoStream|ideoStreams|ideoTimeStretch|ideoTrackSelection|ideoTranscode|ideoTransparency|ideoTrim))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:W(?:ebAudioSearch|ebColumn|ebElementObject|ebExecute|ebImage|ebImageSearch|ebItem|ebRow|ebSearch|ebSessionObject|ebSessions|ebWindowObject|ikidataData|ikidataSearch|ikipediaSearch|ithCleanup|ithLock))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:Z(?:oomCenter|oomFactor))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:\\$(?:AllowExternalChannelFunctions|AudioDecoders|AudioEncoders|BlockchainBase|ChannelBase|CompilerEnvironment|CookieStore|CryptographicEllipticCurveNames|CurrentWebSession|DataStructures|DefaultNetworkInterface|DefaultProxyRules|DefaultRemoteBatchSubmissionEnvironment|DefaultRemoteKernel|DefaultSystemCredentialStore|ExternalIdentifierTypes|ExternalStorageBase|GeneratedAssetLocation|IncomingMailSettings|Initialization|InitializationContexts|MaxDisplayedChildren|NetworkInterfaces|NoValue|PersistenceBase|PersistencePath|PreInitialization|PublisherID|ResourceSystemBase|ResourceSystemPath|SSHAuthentication|ServiceCreditsAvailable|SourceLink|SubtitleDecoders|SubtitleEncoders|SystemCredentialStore|TargetSystems|TestFileName|VideoDecoders|VideoEncoders|VoiceStyles))(?![`$[:alnum:]])",
+ "name": "support.function.experimental.wolfram"
+ },
+ {
+ "match": "(?:A(?:llFalse|nyFalse))(?![`$[:alnum:]])",
+ "name": "invalid.bad.wolfram"
+ },
+ {
+ "match": "(?:B(?:oolean))(?![`$[:alnum:]])",
+ "name": "invalid.bad.wolfram"
+ },
+ {
+ "match": "(?:C(?:loudbase|omplexQ))(?![`$[:alnum:]])",
+ "name": "invalid.bad.wolfram"
+ },
+ {
+ "match": "(?:D(?:ataSet))(?![`$[:alnum:]])",
+ "name": "invalid.bad.wolfram"
+ },
+ {
+ "match": "(?:E(?:xpandFilename|xportPacket))(?![`$[:alnum:]])",
+ "name": "invalid.bad.wolfram"
+ },
+ {
+ "match": "(?:F(?:ailed|alseQ))(?![`$[:alnum:]])",
+ "name": "invalid.bad.wolfram"
+ },
+ {
+ "match": "(?:I(?:nterpolationFunction|nterpolationPolynomial))(?![`$[:alnum:]])",
+ "name": "invalid.bad.wolfram"
+ },
+ {
+ "match": "(?:M(?:atch))(?![`$[:alnum:]])",
+ "name": "invalid.bad.wolfram"
+ },
+ {
+ "match": "(?:O(?:ptionPattern|ptionsQ))(?![`$[:alnum:]])",
+ "name": "invalid.bad.wolfram"
+ },
+ {
+ "match": "(?:R(?:ationalQ|ealQ))(?![`$[:alnum:]])",
+ "name": "invalid.bad.wolfram"
+ },
+ {
+ "match": "(?:S(?:tringMatch|ymbolQ))(?![`$[:alnum:]])",
+ "name": "invalid.bad.wolfram"
+ },
+ {
+ "match": "(?:U(?:nSameQ|rlExecute))(?![`$[:alnum:]])",
+ "name": "invalid.bad.wolfram"
+ },
+ {
+ "match": "(?:\\$(?:PathNameSeparator|RegisteredUsername))(?![`$[:alnum:]])",
+ "name": "invalid.bad.wolfram"
+ },
+ {
+ "match": "(?:E(?:cho|xit))(?![`$[:alnum:]])",
+ "name": "invalid.session.wolfram"
+ },
+ {
+ "match": "(?:I(?:n|nString))(?![`$[:alnum:]])",
+ "name": "invalid.session.wolfram"
+ },
+ {
+ "match": "(?:O(?:ut))(?![`$[:alnum:]])",
+ "name": "invalid.session.wolfram"
+ },
+ {
+ "match": "(?:P(?:rint))(?![`$[:alnum:]])",
+ "name": "invalid.session.wolfram"
+ },
+ {
+ "match": "(?:Q(?:uit))(?![`$[:alnum:]])",
+ "name": "invalid.session.wolfram"
+ },
+ {
+ "match": "(?:\\$(?:HistoryLength|Line|Post|Pre|PrePrint|PreRead|SyntaxHandler))(?![`$[:alnum:]])",
+ "name": "invalid.session.wolfram"
+ },
+ {
+ "match": "(?:[$[:alpha:]][$[:alnum:]]*)(?=\\s*(\\[(?!\\s*\\[)|@(?!@)))",
+ "name": "variable.function.wolfram"
+ },
+ {
+ "match": "(?:[$[:alpha:]][$[:alnum:]]*)",
+ "name": "symbol.unrecognized.wolfram"
+ }
+ ]
+ },
+ "groups": {
+ "patterns": [
+ {
+ "match": "\\\\\\)",
+ "name": "invalid.illegal.stray-linearsyntaxparens-end.wolfram"
+ },
+ {
+ "match": "\\)",
+ "name": "invalid.illegal.stray-parens-end.wolfram"
+ },
+ {
+ "match": "\\[\\s+\\[",
+ "name": "invalid.whitespace.Part.wolfram"
+ },
+ {
+ "match": "\\]\\s+\\]",
+ "name": "invalid.whitespace.Part.wolfram"
+ },
+ {
+ "match": "\\]\\]",
+ "name": "invalid.illegal.stray-parts-end.wolfram"
+ },
+ {
+ "match": "\\]",
+ "name": "invalid.illegal.stray-brackets-end.wolfram"
+ },
+ {
+ "match": "\\}",
+ "name": "invalid.illegal.stray-braces-end.wolfram"
+ },
+ {
+ "match": "\\|>",
+ "name": "invalid.illegal.stray-associations-end.wolfram"
+ },
+ {
+ "include": "#linearsyntaxparen-group"
+ },
+ {
+ "include": "#paren-group"
+ },
+ {
+ "include": "#part-group"
+ },
+ {
+ "include": "#bracket-group"
+ },
+ {
+ "include": "#brace-group"
+ },
+ {
+ "include": "#association-group"
+ }
+ ]
+ },
+ "linearsyntaxparen-group": {
+ "name": "meta.linearsyntaxparens.wolfram",
+ "begin": "\\\\\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.linearsyntaxparens.begin.wolfram"
+ }
+ },
+ "end": "\\\\\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.linearsyntaxparens.end.wolfram"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expressions"
+ }
+ ]
+ },
+ "paren-group": {
+ "name": "meta.parens.wolfram",
+ "begin": "\\(",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.begin.wolfram"
+ }
+ },
+ "end": "\\)",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parens.end.wolfram"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expressions"
+ }
+ ]
+ },
+ "part-group": {
+ "name": "meta.parts.wolfram",
+ "begin": "\\[\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.parts.begin.wolfram"
+ }
+ },
+ "end": "\\]\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.parts.end.wolfram"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expressions"
+ }
+ ]
+ },
+ "bracket-group": {
+ "name": "meta.brackets.wolfram",
+ "begin": "::\\[|\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.brackets.begin.wolfram"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.brackets.end.wolfram"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expressions"
+ }
+ ]
+ },
+ "brace-group": {
+ "name": "meta.braces.wolfram",
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.braces.begin.wolfram"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.braces.end.wolfram"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expressions"
+ }
+ ]
+ },
+ "association-group": {
+ "name": "meta.associations.wolfram",
+ "begin": "<\\|",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.associations.begin.wolfram"
+ }
+ },
+ "end": "\\|>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.associations.end.wolfram"
+ }
+ },
+ "patterns": [
+ {
+ "include": "#expressions"
+ }
+ ]
+ },
+ "pattern-operators": {
+ "patterns": [
+ {
+ "match": "___",
+ "name": "keyword.operator.BlankNullSequence.wolfram"
+ },
+ {
+ "match": "__",
+ "name": "keyword.operator.BlankSequence.wolfram"
+ },
+ {
+ "match": "_\\.",
+ "name": "keyword.operator.Optional.wolfram"
+ },
+ {
+ "match": "_",
+ "name": "keyword.operator.Blank.wolfram"
+ }
+ ]
+ },
+ "out": {
+ "patterns": [
+ {
+ "match": "%\\d+",
+ "name": "keyword.other.Out.wolfram"
+ },
+ {
+ "match": "%+",
+ "name": "keyword.other.Out.wolfram"
+ }
+ ]
+ },
+ "slot": {
+ "patterns": [
+ {
+ "match": "#[[:alpha:]][[:alnum:]]*",
+ "name": "keyword.other.Slot.wolfram"
+ },
+ {
+ "match": "##\\d*",
+ "name": "keyword.other.SlotSequence.wolfram"
+ },
+ {
+ "match": "#\\d*",
+ "name": "keyword.other.Slot.wolfram"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/xml.tmLanguage.json b/node_modules/shiki/languages/xml.tmLanguage.json
new file mode 100644
index 0000000..4d55a61
--- /dev/null
+++ b/node_modules/shiki/languages/xml.tmLanguage.json
@@ -0,0 +1,387 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/atom/language-xml/blob/master/grammars/xml.cson",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/atom/language-xml/commit/7bc75dfe779ad5b35d9bf4013d9181864358cb49",
+ "name": "xml",
+ "scopeName": "text.xml",
+ "patterns": [
+ {
+ "begin": "(<\\?)\\s*([-_a-zA-Z0-9]+)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "entity.name.tag.xml"
+ }
+ },
+ "end": "(\\?>)",
+ "name": "meta.tag.preprocessor.xml",
+ "patterns": [
+ {
+ "match": " ([a-zA-Z-]+)",
+ "name": "entity.other.attribute-name.xml"
+ },
+ {
+ "include": "#doublequotedString"
+ },
+ {
+ "include": "#singlequotedString"
+ }
+ ]
+ },
+ {
+ "begin": "(<!)(DOCTYPE)\\s+([:a-zA-Z_][:a-zA-Z0-9_.-]*)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "keyword.other.doctype.xml"
+ },
+ "3": {
+ "name": "variable.language.documentroot.xml"
+ }
+ },
+ "end": "\\s*(>)",
+ "name": "meta.tag.sgml.doctype.xml",
+ "patterns": [
+ {
+ "include": "#internalSubset"
+ }
+ ]
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "begin": "(<)((?:([-_a-zA-Z0-9]+)(:))?([-_a-zA-Z0-9:]+))(?=(\\s[^>]*)?></\\2>)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "entity.name.tag.xml"
+ },
+ "3": {
+ "name": "entity.name.tag.namespace.xml"
+ },
+ "4": {
+ "name": "punctuation.separator.namespace.xml"
+ },
+ "5": {
+ "name": "entity.name.tag.localname.xml"
+ }
+ },
+ "end": "(>)(</)((?:([-_a-zA-Z0-9]+)(:))?([-_a-zA-Z0-9:]+))(>)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "3": {
+ "name": "entity.name.tag.xml"
+ },
+ "4": {
+ "name": "entity.name.tag.namespace.xml"
+ },
+ "5": {
+ "name": "punctuation.separator.namespace.xml"
+ },
+ "6": {
+ "name": "entity.name.tag.localname.xml"
+ },
+ "7": {
+ "name": "punctuation.definition.tag.xml"
+ }
+ },
+ "name": "meta.tag.no-content.xml",
+ "patterns": [
+ {
+ "include": "#tagStuff"
+ }
+ ]
+ },
+ {
+ "begin": "(</?)(?:([-\\w\\.]+)((:)))?([-\\w\\.:]+)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "entity.name.tag.namespace.xml"
+ },
+ "3": {
+ "name": "entity.name.tag.xml"
+ },
+ "4": {
+ "name": "punctuation.separator.namespace.xml"
+ },
+ "5": {
+ "name": "entity.name.tag.localname.xml"
+ }
+ },
+ "end": "(/?>)",
+ "name": "meta.tag.xml",
+ "patterns": [
+ {
+ "include": "#tagStuff"
+ }
+ ]
+ },
+ {
+ "include": "#entity"
+ },
+ {
+ "include": "#bare-ampersand"
+ },
+ {
+ "begin": "<%@",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.xml"
+ }
+ },
+ "end": "%>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.xml"
+ }
+ },
+ "name": "source.java-props.embedded.xml",
+ "patterns": [
+ {
+ "match": "page|include|taglib",
+ "name": "keyword.other.page-props.xml"
+ }
+ ]
+ },
+ {
+ "begin": "<%[!=]?(?!--)",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.begin.xml"
+ }
+ },
+ "end": "(?!--)%>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.section.embedded.end.xml"
+ }
+ },
+ "name": "source.java.embedded.xml",
+ "patterns": [
+ {
+ "include": "source.java"
+ }
+ ]
+ },
+ {
+ "begin": "<!\\[CDATA\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.xml"
+ }
+ },
+ "end": "]]>",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.xml"
+ }
+ },
+ "name": "string.unquoted.cdata.xml"
+ }
+ ],
+ "repository": {
+ "EntityDecl": {
+ "begin": "(<!)(ENTITY)\\s+(%\\s+)?([:a-zA-Z_][:a-zA-Z0-9_.-]*)(\\s+(?:SYSTEM|PUBLIC)\\s+)?",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "keyword.other.entity.xml"
+ },
+ "3": {
+ "name": "punctuation.definition.entity.xml"
+ },
+ "4": {
+ "name": "variable.language.entity.xml"
+ },
+ "5": {
+ "name": "keyword.other.entitytype.xml"
+ }
+ },
+ "end": "(>)",
+ "patterns": [
+ {
+ "include": "#doublequotedString"
+ },
+ {
+ "include": "#singlequotedString"
+ }
+ ]
+ },
+ "bare-ampersand": {
+ "match": "&",
+ "name": "invalid.illegal.bad-ampersand.xml"
+ },
+ "doublequotedString": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.xml"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.xml"
+ }
+ },
+ "name": "string.quoted.double.xml",
+ "patterns": [
+ {
+ "include": "#entity"
+ },
+ {
+ "include": "#bare-ampersand"
+ }
+ ]
+ },
+ "entity": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.xml"
+ },
+ "3": {
+ "name": "punctuation.definition.constant.xml"
+ }
+ },
+ "match": "(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)",
+ "name": "constant.character.entity.xml"
+ },
+ "internalSubset": {
+ "begin": "(\\[)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.xml"
+ }
+ },
+ "end": "(\\])",
+ "name": "meta.internalsubset.xml",
+ "patterns": [
+ {
+ "include": "#EntityDecl"
+ },
+ {
+ "include": "#parameterEntity"
+ },
+ {
+ "include": "#comments"
+ }
+ ]
+ },
+ "parameterEntity": {
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.constant.xml"
+ },
+ "3": {
+ "name": "punctuation.definition.constant.xml"
+ }
+ },
+ "match": "(%)([:a-zA-Z_][:a-zA-Z0-9_.-]*)(;)",
+ "name": "constant.character.parameter-entity.xml"
+ },
+ "singlequotedString": {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.xml"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.xml"
+ }
+ },
+ "name": "string.quoted.single.xml",
+ "patterns": [
+ {
+ "include": "#entity"
+ },
+ {
+ "include": "#bare-ampersand"
+ }
+ ]
+ },
+ "tagStuff": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.namespace.xml"
+ },
+ "2": {
+ "name": "entity.other.attribute-name.xml"
+ },
+ "3": {
+ "name": "punctuation.separator.namespace.xml"
+ },
+ "4": {
+ "name": "entity.other.attribute-name.localname.xml"
+ }
+ },
+ "match": "(?:^|\\s+)(?:([-\\w.]+)((:)))?([-\\w.:]+)\\s*="
+ },
+ {
+ "include": "#doublequotedString"
+ },
+ {
+ "include": "#singlequotedString"
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "begin": "<%--",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.xml"
+ },
+ "end": "--%>",
+ "name": "comment.block.xml"
+ }
+ },
+ {
+ "begin": "<!--",
+ "captures": {
+ "0": {
+ "name": "punctuation.definition.comment.xml"
+ }
+ },
+ "end": "-->",
+ "name": "comment.block.xml",
+ "patterns": [
+ {
+ "begin": "--(?!>)",
+ "captures": {
+ "0": {
+ "name": "invalid.illegal.bad-comments-or-CDATA.xml"
+ }
+ }
+ }
+ ]
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/xsl.tmLanguage.json b/node_modules/shiki/languages/xsl.tmLanguage.json
new file mode 100644
index 0000000..9b81a5f
--- /dev/null
+++ b/node_modules/shiki/languages/xsl.tmLanguage.json
@@ -0,0 +1,94 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/atom/language-xml/blob/master/grammars/xsl.cson",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/atom/language-xml/commit/507de2ee7daca60cf02e9e21fbeb92bbae73e280",
+ "name": "xsl",
+ "scopeName": "text.xml.xsl",
+ "patterns": [
+ {
+ "begin": "(<)(xsl)((:))(template)",
+ "captures": {
+ "1": {
+ "name": "punctuation.definition.tag.xml"
+ },
+ "2": {
+ "name": "entity.name.tag.namespace.xml"
+ },
+ "3": {
+ "name": "entity.name.tag.xml"
+ },
+ "4": {
+ "name": "punctuation.separator.namespace.xml"
+ },
+ "5": {
+ "name": "entity.name.tag.localname.xml"
+ }
+ },
+ "end": "(>)",
+ "name": "meta.tag.xml.template",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "entity.other.attribute-name.namespace.xml"
+ },
+ "2": {
+ "name": "entity.other.attribute-name.xml"
+ },
+ "3": {
+ "name": "punctuation.separator.namespace.xml"
+ },
+ "4": {
+ "name": "entity.other.attribute-name.localname.xml"
+ }
+ },
+ "match": " (?:([-_a-zA-Z0-9]+)((:)))?([a-zA-Z-]+)"
+ },
+ {
+ "include": "#doublequotedString"
+ },
+ {
+ "include": "#singlequotedString"
+ }
+ ]
+ },
+ {
+ "include": "text.xml"
+ }
+ ],
+ "repository": {
+ "doublequotedString": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.xml"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.xml"
+ }
+ },
+ "name": "string.quoted.double.xml"
+ },
+ "singlequotedString": {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.xml"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.xml"
+ }
+ },
+ "name": "string.quoted.single.xml"
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/yaml.tmLanguage.json b/node_modules/shiki/languages/yaml.tmLanguage.json
new file mode 100644
index 0000000..add1ba2
--- /dev/null
+++ b/node_modules/shiki/languages/yaml.tmLanguage.json
@@ -0,0 +1,621 @@
+{
+ "information_for_contributors": [
+ "This file has been converted from https://github.com/textmate/yaml.tmbundle/blob/master/Syntaxes/YAML.tmLanguage",
+ "If you want to provide a fix or improvement, please create a pull request against the original repository.",
+ "Once accepted there, we are happy to receive an update request."
+ ],
+ "version": "https://github.com/textmate/yaml.tmbundle/commit/e54ceae3b719506dba7e481a77cea4a8b576ae46",
+ "name": "yaml",
+ "scopeName": "source.yaml",
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#property"
+ },
+ {
+ "include": "#directive"
+ },
+ {
+ "match": "^---",
+ "name": "entity.other.document.begin.yaml"
+ },
+ {
+ "match": "^\\.{3}",
+ "name": "entity.other.document.end.yaml"
+ },
+ {
+ "include": "#node"
+ }
+ ],
+ "repository": {
+ "block-collection": {
+ "patterns": [
+ {
+ "include": "#block-sequence"
+ },
+ {
+ "include": "#block-mapping"
+ }
+ ]
+ },
+ "block-mapping": {
+ "patterns": [
+ {
+ "include": "#block-pair"
+ }
+ ]
+ },
+ "block-node": {
+ "patterns": [
+ {
+ "include": "#prototype"
+ },
+ {
+ "include": "#block-scalar"
+ },
+ {
+ "include": "#block-collection"
+ },
+ {
+ "include": "#flow-scalar-plain-out"
+ },
+ {
+ "include": "#flow-node"
+ }
+ ]
+ },
+ "block-pair": {
+ "patterns": [
+ {
+ "begin": "\\?",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.definition.key-value.begin.yaml"
+ }
+ },
+ "end": "(?=\\?)|^ *(:)|(:)",
+ "endCaptures": {
+ "1": {
+ "name": "punctuation.separator.key-value.mapping.yaml"
+ },
+ "2": {
+ "name": "invalid.illegal.expected-newline.yaml"
+ }
+ },
+ "name": "meta.block-mapping.yaml",
+ "patterns": [
+ {
+ "include": "#block-node"
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n (?=\n (?x:\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] \\S\n )\n (\n [^\\s:]\n | : \\S\n | \\s+ (?![#\\s])\n )*\n \\s*\n :\n\t\t\t\t\t\t\t(\\s|$)\n )\n ",
+ "end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : (\\s|$)\n )\n ",
+ "patterns": [
+ {
+ "include": "#flow-scalar-plain-out-implicit-type"
+ },
+ {
+ "begin": "(?x)\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] \\S\n ",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.tag.yaml"
+ }
+ },
+ "contentName": "entity.name.tag.yaml",
+ "end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : (\\s|$)\n )\n ",
+ "name": "string.unquoted.plain.out.yaml"
+ }
+ ]
+ },
+ {
+ "match": ":(?=\\s|$)",
+ "name": "punctuation.separator.key-value.mapping.yaml"
+ }
+ ]
+ },
+ "block-scalar": {
+ "begin": "(?:(\\|)|(>))([1-9])?([-+])?(.*\\n?)",
+ "beginCaptures": {
+ "1": {
+ "name": "keyword.control.flow.block-scalar.literal.yaml"
+ },
+ "2": {
+ "name": "keyword.control.flow.block-scalar.folded.yaml"
+ },
+ "3": {
+ "name": "constant.numeric.indentation-indicator.yaml"
+ },
+ "4": {
+ "name": "storage.modifier.chomping-indicator.yaml"
+ },
+ "5": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "match": ".+",
+ "name": "invalid.illegal.expected-comment-or-newline.yaml"
+ }
+ ]
+ }
+ },
+ "end": "^(?=\\S)|(?!\\G)",
+ "patterns": [
+ {
+ "begin": "^([ ]+)(?! )",
+ "end": "^(?!\\1|\\s*$)",
+ "name": "string.unquoted.block.yaml"
+ }
+ ]
+ },
+ "block-sequence": {
+ "match": "(-)(?!\\S)",
+ "name": "punctuation.definition.block.sequence.item.yaml"
+ },
+ "comment": {
+ "begin": "(?:(^[ \\t]*)|[ \\t]+)(?=#\\p{Print}*$)",
+ "beginCaptures": {
+ "1": {
+ "name": "punctuation.whitespace.comment.leading.yaml"
+ }
+ },
+ "end": "(?!\\G)",
+ "patterns": [
+ {
+ "begin": "#",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.comment.yaml"
+ }
+ },
+ "end": "\\n",
+ "name": "comment.line.number-sign.yaml"
+ }
+ ]
+ },
+ "directive": {
+ "begin": "^%",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.directive.begin.yaml"
+ }
+ },
+ "end": "(?=$|[ \\t]+($|#))",
+ "name": "meta.directive.yaml",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.directive.yaml.yaml"
+ },
+ "2": {
+ "name": "constant.numeric.yaml-version.yaml"
+ }
+ },
+ "match": "\\G(YAML)[ \\t]+(\\d+\\.\\d+)"
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.other.directive.tag.yaml"
+ },
+ "2": {
+ "name": "storage.type.tag-handle.yaml"
+ },
+ "3": {
+ "name": "support.type.tag-prefix.yaml"
+ }
+ },
+ "match": "(?x)\n \\G\n (TAG)\n (?:[ \\t]+\n ((?:!(?:[0-9A-Za-z\\-]*!)?))\n (?:[ \\t]+ (\n ! (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )*\n | (?![,!\\[\\]{}]) (?x: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )+\n )\n )?\n )?\n "
+ },
+ {
+ "captures": {
+ "1": {
+ "name": "support.other.directive.reserved.yaml"
+ },
+ "2": {
+ "name": "string.unquoted.directive-name.yaml"
+ },
+ "3": {
+ "name": "string.unquoted.directive-parameter.yaml"
+ }
+ },
+ "match": "(?x) \\G (\\w+) (?:[ \\t]+ (\\w+) (?:[ \\t]+ (\\w+))? )?"
+ },
+ {
+ "match": "\\S+",
+ "name": "invalid.illegal.unrecognized.yaml"
+ }
+ ]
+ },
+ "flow-alias": {
+ "captures": {
+ "1": {
+ "name": "keyword.control.flow.alias.yaml"
+ },
+ "2": {
+ "name": "punctuation.definition.alias.yaml"
+ },
+ "3": {
+ "name": "variable.other.alias.yaml"
+ },
+ "4": {
+ "name": "invalid.illegal.character.anchor.yaml"
+ }
+ },
+ "match": "((\\*))([^\\s\\[\\]/{/},]+)([^\\s\\]},]\\S*)?"
+ },
+ "flow-collection": {
+ "patterns": [
+ {
+ "include": "#flow-sequence"
+ },
+ {
+ "include": "#flow-mapping"
+ }
+ ]
+ },
+ "flow-mapping": {
+ "begin": "\\{",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.mapping.begin.yaml"
+ }
+ },
+ "end": "\\}",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.mapping.end.yaml"
+ }
+ },
+ "name": "meta.flow-mapping.yaml",
+ "patterns": [
+ {
+ "include": "#prototype"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.mapping.yaml"
+ },
+ {
+ "include": "#flow-pair"
+ }
+ ]
+ },
+ "flow-node": {
+ "patterns": [
+ {
+ "include": "#prototype"
+ },
+ {
+ "include": "#flow-alias"
+ },
+ {
+ "include": "#flow-collection"
+ },
+ {
+ "include": "#flow-scalar"
+ }
+ ]
+ },
+ "flow-pair": {
+ "patterns": [
+ {
+ "begin": "\\?",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.key-value.begin.yaml"
+ }
+ },
+ "end": "(?=[},\\]])",
+ "name": "meta.flow-pair.explicit.yaml",
+ "patterns": [
+ {
+ "include": "#prototype"
+ },
+ {
+ "include": "#flow-pair"
+ },
+ {
+ "include": "#flow-node"
+ },
+ {
+ "begin": ":(?=\\s|$|[\\[\\]{},])",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.separator.key-value.mapping.yaml"
+ }
+ },
+ "end": "(?=[},\\]])",
+ "patterns": [
+ {
+ "include": "#flow-value"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "begin": "(?x)\n (?=\n (?:\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] [^\\s[\\[\\]{},]]\n )\n (\n [^\\s:[\\[\\]{},]]\n | : [^\\s[\\[\\]{},]]\n | \\s+ (?![#\\s])\n )*\n \\s*\n :\n\t\t\t\t\t\t\t(\\s|$)\n )\n ",
+ "end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : (\\s|$)\n | \\s* : [\\[\\]{},]\n | \\s* [\\[\\]{},]\n )\n ",
+ "name": "meta.flow-pair.key.yaml",
+ "patterns": [
+ {
+ "include": "#flow-scalar-plain-in-implicit-type"
+ },
+ {
+ "begin": "(?x)\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] [^\\s[\\[\\]{},]]\n ",
+ "beginCaptures": {
+ "0": {
+ "name": "entity.name.tag.yaml"
+ }
+ },
+ "contentName": "entity.name.tag.yaml",
+ "end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : (\\s|$)\n | \\s* : [\\[\\]{},]\n | \\s* [\\[\\]{},]\n )\n ",
+ "name": "string.unquoted.plain.in.yaml"
+ }
+ ]
+ },
+ {
+ "include": "#flow-node"
+ },
+ {
+ "begin": ":(?=\\s|$|[\\[\\]{},])",
+ "captures": {
+ "0": {
+ "name": "punctuation.separator.key-value.mapping.yaml"
+ }
+ },
+ "end": "(?=[},\\]])",
+ "name": "meta.flow-pair.yaml",
+ "patterns": [
+ {
+ "include": "#flow-value"
+ }
+ ]
+ }
+ ]
+ },
+ "flow-scalar": {
+ "patterns": [
+ {
+ "include": "#flow-scalar-double-quoted"
+ },
+ {
+ "include": "#flow-scalar-single-quoted"
+ },
+ {
+ "include": "#flow-scalar-plain-in"
+ }
+ ]
+ },
+ "flow-scalar-double-quoted": {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.yaml"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.yaml"
+ }
+ },
+ "name": "string.quoted.double.yaml",
+ "patterns": [
+ {
+ "match": "\\\\([0abtnvfre \"/\\\\N_Lp]|x\\d\\d|u\\d{4}|U\\d{8})",
+ "name": "constant.character.escape.yaml"
+ },
+ {
+ "match": "\\\\\\n",
+ "name": "constant.character.escape.double-quoted.newline.yaml"
+ }
+ ]
+ },
+ "flow-scalar-plain-in": {
+ "patterns": [
+ {
+ "include": "#flow-scalar-plain-in-implicit-type"
+ },
+ {
+ "begin": "(?x)\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] [^\\s[\\[\\]{},]]\n ",
+ "end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : (\\s|$)\n | \\s* : [\\[\\]{},]\n | \\s* [\\[\\]{},]\n )\n ",
+ "name": "string.unquoted.plain.in.yaml"
+ }
+ ]
+ },
+ "flow-scalar-plain-in-implicit-type": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "constant.language.null.yaml"
+ },
+ "2": {
+ "name": "constant.language.boolean.yaml"
+ },
+ "3": {
+ "name": "constant.numeric.integer.yaml"
+ },
+ "4": {
+ "name": "constant.numeric.float.yaml"
+ },
+ "5": {
+ "name": "constant.other.timestamp.yaml"
+ },
+ "6": {
+ "name": "constant.language.value.yaml"
+ },
+ "7": {
+ "name": "constant.language.merge.yaml"
+ }
+ },
+ "match": "(?x)\n (?x:\n (null|Null|NULL|~)\n | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)\n | (\n (?:\n [-+]? 0b [0-1_]+ # (base 2)\n | [-+]? 0 [0-7_]+ # (base 8)\n | [-+]? (?: 0|[1-9][0-9_]*) # (base 10)\n | [-+]? 0x [0-9a-fA-F_]+ # (base 16)\n | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60)\n )\n )\n | (\n (?x:\n [-+]? (?: [0-9] [0-9_]*)? \\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10)\n | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\. [0-9_]* # (base 60)\n | [-+]? \\. (?: inf|Inf|INF) # (infinity)\n | \\. (?: nan|NaN|NAN) # (not a number)\n )\n )\n | (\n (?x:\n \\d{4} - \\d{2} - \\d{2} # (y-m-d)\n | \\d{4} # (year)\n - \\d{1,2} # (month)\n - \\d{1,2} # (day)\n (?: [Tt] | [ \\t]+) \\d{1,2} # (hour)\n : \\d{2} # (minute)\n : \\d{2} # (second)\n (?: \\.\\d*)? # (fraction)\n (?:\n (?:[ \\t]*) Z\n | [-+] \\d{1,2} (?: :\\d{1,2})?\n )? # (time zone)\n )\n )\n | (=)\n | (<<)\n )\n (?:\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : (\\s|$)\n | \\s* : [\\[\\]{},]\n | \\s* [\\[\\]{},]\n )\n )\n "
+ }
+ ]
+ },
+ "flow-scalar-plain-out": {
+ "patterns": [
+ {
+ "include": "#flow-scalar-plain-out-implicit-type"
+ },
+ {
+ "begin": "(?x)\n [^\\s[-?:,\\[\\]{}#&*!|>'\"%@`]]\n | [?:-] \\S\n ",
+ "end": "(?x)\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : (\\s|$)\n )\n ",
+ "name": "string.unquoted.plain.out.yaml"
+ }
+ ]
+ },
+ "flow-scalar-plain-out-implicit-type": {
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "constant.language.null.yaml"
+ },
+ "2": {
+ "name": "constant.language.boolean.yaml"
+ },
+ "3": {
+ "name": "constant.numeric.integer.yaml"
+ },
+ "4": {
+ "name": "constant.numeric.float.yaml"
+ },
+ "5": {
+ "name": "constant.other.timestamp.yaml"
+ },
+ "6": {
+ "name": "constant.language.value.yaml"
+ },
+ "7": {
+ "name": "constant.language.merge.yaml"
+ }
+ },
+ "match": "(?x)\n (?x:\n (null|Null|NULL|~)\n | (y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)\n | (\n (?:\n [-+]? 0b [0-1_]+ # (base 2)\n | [-+]? 0 [0-7_]+ # (base 8)\n | [-+]? (?: 0|[1-9][0-9_]*) # (base 10)\n | [-+]? 0x [0-9a-fA-F_]+ # (base 16)\n | [-+]? [1-9] [0-9_]* (?: :[0-5]?[0-9])+ # (base 60)\n )\n )\n | (\n (?x:\n [-+]? (?: [0-9] [0-9_]*)? \\. [0-9.]* (?: [eE] [-+] [0-9]+)? # (base 10)\n | [-+]? [0-9] [0-9_]* (?: :[0-5]?[0-9])+ \\. [0-9_]* # (base 60)\n | [-+]? \\. (?: inf|Inf|INF) # (infinity)\n | \\. (?: nan|NaN|NAN) # (not a number)\n )\n )\n | (\n (?x:\n \\d{4} - \\d{2} - \\d{2} # (y-m-d)\n | \\d{4} # (year)\n - \\d{1,2} # (month)\n - \\d{1,2} # (day)\n (?: [Tt] | [ \\t]+) \\d{1,2} # (hour)\n : \\d{2} # (minute)\n : \\d{2} # (second)\n (?: \\.\\d*)? # (fraction)\n (?:\n (?:[ \\t]*) Z\n | [-+] \\d{1,2} (?: :\\d{1,2})?\n )? # (time zone)\n )\n )\n | (=)\n | (<<)\n )\n (?x:\n (?=\n \\s* $\n | \\s+ \\#\n | \\s* : (\\s|$)\n )\n )\n "
+ }
+ ]
+ },
+ "flow-scalar-single-quoted": {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.yaml"
+ }
+ },
+ "end": "'(?!')",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.yaml"
+ }
+ },
+ "name": "string.quoted.single.yaml",
+ "patterns": [
+ {
+ "match": "''",
+ "name": "constant.character.escape.single-quoted.yaml"
+ }
+ ]
+ },
+ "flow-sequence": {
+ "begin": "\\[",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.sequence.begin.yaml"
+ }
+ },
+ "end": "\\]",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.sequence.end.yaml"
+ }
+ },
+ "name": "meta.flow-sequence.yaml",
+ "patterns": [
+ {
+ "include": "#prototype"
+ },
+ {
+ "match": ",",
+ "name": "punctuation.separator.sequence.yaml"
+ },
+ {
+ "include": "#flow-pair"
+ },
+ {
+ "include": "#flow-node"
+ }
+ ]
+ },
+ "flow-value": {
+ "patterns": [
+ {
+ "begin": "\\G(?![},\\]])",
+ "end": "(?=[},\\]])",
+ "name": "meta.flow-pair.value.yaml",
+ "patterns": [
+ {
+ "include": "#flow-node"
+ }
+ ]
+ }
+ ]
+ },
+ "node": {
+ "patterns": [
+ {
+ "include": "#block-node"
+ }
+ ]
+ },
+ "property": {
+ "begin": "(?=!|&)",
+ "end": "(?!\\G)",
+ "name": "meta.property.yaml",
+ "patterns": [
+ {
+ "captures": {
+ "1": {
+ "name": "keyword.control.property.anchor.yaml"
+ },
+ "2": {
+ "name": "punctuation.definition.anchor.yaml"
+ },
+ "3": {
+ "name": "entity.name.type.anchor.yaml"
+ },
+ "4": {
+ "name": "invalid.illegal.character.anchor.yaml"
+ }
+ },
+ "match": "\\G((&))([^\\s\\[\\]/{/},]+)(\\S+)?"
+ },
+ {
+ "match": "(?x)\n \\G\n (?:\n ! < (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$,_.!~*'()\\[\\]] )+ >\n | (?:!(?:[0-9A-Za-z\\-]*!)?) (?: %[0-9A-Fa-f]{2} | [0-9A-Za-z\\-#;/?:@&=+$_.~*'()] )+\n | !\n )\n (?=\\ |\\t|$)\n ",
+ "name": "storage.type.tag-handle.yaml"
+ },
+ {
+ "match": "\\S+",
+ "name": "invalid.illegal.tag-handle.yaml"
+ }
+ ]
+ },
+ "prototype": {
+ "patterns": [
+ {
+ "include": "#comment"
+ },
+ {
+ "include": "#property"
+ }
+ ]
+ }
+ }
+}
diff --git a/node_modules/shiki/languages/zenscript.tmLanguage.json b/node_modules/shiki/languages/zenscript.tmLanguage.json
new file mode 100644
index 0000000..e779df7
--- /dev/null
+++ b/node_modules/shiki/languages/zenscript.tmLanguage.json
@@ -0,0 +1,254 @@
+{
+ "fileTypes": ["zs"],
+ "name": "zenscript",
+ "patterns": [
+ {
+ "comment": "numbers",
+ "name": "constant.numeric.zenscript",
+ "match": "\\b((0(x|X)[0-9a-fA-F]*)|(([0-9]+\\.?[0-9]*)|(\\.[0-9]+))((e|E)(\\+|-)?[0-9]+)?)([LlFfUuDd]|UL|ul)?\\b"
+ },
+ {
+ "comment": "prefixedNumbers",
+ "name": "constant.numeric.zenscript",
+ "match": "\\b\\-?(0b|0x|0o|0B|0X|0O)(0|[1-9a-fA-F][0-9a-fA-F_]*)[a-zA-Z_]*\\b"
+ },
+ {
+ "include": "#code"
+ },
+ {
+ "comment": "arrays",
+ "name": "storage.type.object.array.zenscript",
+ "match": "\\b((?:[a-z]\\w*\\.)*[A-Z]+\\w*)(?=\\[)"
+ }
+ ],
+ "repository": {
+ "code": {
+ "patterns": [
+ {
+ "include": "#class"
+ },
+ {
+ "include": "#functions"
+ },
+ {
+ "include": "#dots"
+ },
+ {
+ "include": "#quotes"
+ },
+ {
+ "include": "#brackets"
+ },
+ {
+ "include": "#comments"
+ },
+ {
+ "include": "#var"
+ },
+ {
+ "include": "#keywords"
+ },
+ {
+ "include": "#constants"
+ },
+ {
+ "include": "#operators"
+ }
+ ]
+ },
+ "class": {
+ "comment": "class",
+ "name": "meta.class.zenscript",
+ "match": "(zenClass)\\s+(\\w+)",
+ "captures": {
+ "1": {
+ "name": "storage.type.zenscript"
+ },
+ "2": {
+ "name": "entity.name.type.class.zenscript"
+ }
+ }
+ },
+ "functions": {
+ "comment": "functions",
+ "name": "meta.function.zenscript",
+ "match": "function\\s+([A-Za-z_$][\\w$]*)\\s*(?=\\()",
+ "captures": {
+ "0": {
+ "name": "storage.type.function.zenscript"
+ },
+ "1": {
+ "name": "entity.name.function.zenscript"
+ }
+ }
+ },
+ "dots": {
+ "comment": "dots",
+ "name": "plain.text.zenscript",
+ "match": "\\b(\\w+)(\\.)(\\w+)((\\.)(\\w+))*",
+ "captures": {
+ "1": {
+ "name": "storage.type.zenscript"
+ },
+ "2": {
+ "name": "keyword.control.zenscript"
+ },
+ "5": {
+ "name": "keyword.control.zenscript"
+ }
+ }
+ },
+ "quotes": {
+ "patterns": [
+ {
+ "begin": "\"",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.zenscript"
+ }
+ },
+ "end": "\"",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.zenscript"
+ }
+ },
+ "name": "string.quoted.double.zenscript",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.zenscript"
+ }
+ ]
+ },
+ {
+ "begin": "'",
+ "beginCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.begin.zenscript"
+ }
+ },
+ "end": "'",
+ "endCaptures": {
+ "0": {
+ "name": "punctuation.definition.string.end.zenscript"
+ }
+ },
+ "name": "string.quoted.single.zenscript",
+ "patterns": [
+ {
+ "match": "\\\\.",
+ "name": "constant.character.escape.zenscript"
+ }
+ ]
+ }
+ ]
+ },
+ "brackets": {
+ "patterns": [
+ {
+ "comment": "items and blocks",
+ "name": "keyword.other.zenscript",
+ "match": "(<)\\b(.*?)(:(.*?(:(\\*|\\d+)?)?)?)(>)",
+ "captures": {
+ "1": {
+ "name": "keyword.control.zenscript"
+ },
+ "2": {
+ "name": "keyword.other.zenscript"
+ },
+ "3": {
+ "name": "keyword.control.zenscript"
+ },
+ "4": {
+ "name": "variable.other.zenscript"
+ },
+ "5": {
+ "name": "keyword.control.zenscript"
+ },
+ "6": {
+ "name": "constant.numeric.zenscript"
+ },
+ "7": {
+ "name": "keyword.control.zenscript"
+ }
+ }
+ }
+ ]
+ },
+ "comments": {
+ "patterns": [
+ {
+ "comment": "inline comments",
+ "name": "comment.line.double=slash",
+ "match": "//[^\n]*"
+ },
+ {
+ "comment": "block comments",
+ "name": "comment.block",
+ "begin": "\\/\\*",
+ "beginCaptures": {
+ "0": {
+ "name": "comment.block"
+ }
+ },
+ "end": "\\*\\/",
+ "endCaptures": {
+ "0": {
+ "name": "comment.block"
+ }
+ }
+ }
+ ]
+ },
+ "var": {
+ "comment": "var",
+ "match": "\\b(val|var)\\b",
+ "name": "storage.type"
+ },
+ "keywords": {
+ "patterns": [
+ {
+ "comment": "statement keywords",
+ "name": "keyword.control.zenscript",
+ "match": "\\b(instanceof|get|implements|set|import|function|override|const|if|else|do|while|for|throw|panic|lock|try|catch|finally|return|break|continue|switch|case|default|in|is|as|match|throws|super|new)\\b"
+ },
+ {
+ "comment": "storage keywords",
+ "name": "storage.type.zenscript",
+ "match": "\\b(zenClass|zenConstructor|alias|class|interface|enum|struct|expand|variant|set|void|bool|byte|sbyte|short|ushort|int|uint|long|ulong|usize|float|double|char|string)\\b"
+ },
+ {
+ "comment": "modifier keywords",
+ "name": "storage.modifier.zenscript",
+ "match": "\\b(variant|abstract|final|private|public|export|internal|static|protected|implicit|virtual|extern|immutable)\\b"
+ },
+ {
+ "comment": "annotation keywords",
+ "name": "entity.other.attribute-name",
+ "match": "\\b(Native|Precondition)\\b"
+ },
+ {
+ "comment": "language keywords",
+ "name": "constant.language",
+ "match": "\\b(null|true|false)\\b"
+ }
+ ]
+ },
+ "operators": {
+ "patterns": [
+ {
+ "comment": "math operators",
+ "name": "keyword.control",
+ "match": "\\b(\\.|\\.\\.|\\.\\.\\.|,|\\+|\\+=|\\+\\+|-|-=|--|~|~=|\\*|\\*=|/|/=|%|%=|\\||\\|=|\\|\\||&|&=|&&|\\^|\\^=|\\?|\\?\\.|\\?\\?|<|<=|<<|<<=|>|>=|>>|>>=|>>>|>>>=|=>|=|==|===|!|!=|!==|\\$|`)\\b"
+ },
+ {
+ "comment": "colons",
+ "name": "keyword.control",
+ "match": "\\b(;|:)\\b"
+ }
+ ]
+ }
+ },
+ "scopeName": "source.zenscript"
+}
diff --git a/node_modules/shiki/package.json b/node_modules/shiki/package.json
new file mode 100644
index 0000000..fc44701
--- /dev/null
+++ b/node_modules/shiki/package.json
@@ -0,0 +1,47 @@
+{
+ "name": "shiki",
+ "version": "0.14.3",
+ "description": "shiki",
+ "author": "Pine Wu <octref@gmail.com>",
+ "homepage": "https://github.com/octref/shiki/tree/main/packages/shiki",
+ "license": "MIT",
+ "main": "dist/index.js",
+ "module": "dist/index.esm.js",
+ "types": "dist/index.d.ts",
+ "unpkg": "dist/index.unpkg.iife.js",
+ "jsdelivr": "dist/index.jsdelivr.iife.js",
+ "keywords": [
+ "shiki",
+ "syntax-highlighter",
+ "highlighter"
+ ],
+ "files": [
+ "dist",
+ "languages",
+ "themes",
+ "samples"
+ ],
+ "scripts": {
+ "prepublishOnly": "npm run build",
+ "build": "rollup -c",
+ "watch": "rollup -c -w"
+ },
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/octref/shiki.git"
+ },
+ "dependencies": {
+ "ansi-sequence-parser": "^1.1.0",
+ "jsonc-parser": "^3.2.0",
+ "vscode-oniguruma": "^1.7.0",
+ "vscode-textmate": "^8.0.0"
+ },
+ "devDependencies": {
+ "@types/node": "^18.11.17"
+ },
+ "browser": {
+ "fs": false,
+ "path": false
+ },
+ "gitHead": "3c41852149e8baae532fe9d1ab2ea9a831d6098b"
+}
diff --git a/node_modules/shiki/samples/Marko.sample b/node_modules/shiki/samples/Marko.sample
new file mode 100644
index 0000000..af35e02
--- /dev/null
+++ b/node_modules/shiki/samples/Marko.sample
@@ -0,0 +1,13 @@
+<await(slowPromise) timeout=5000>
+ <@then>Done</@then>
+ <@catch|err|>
+ <if(err.name === "TimeoutError")>
+ Took too long to fetch the data!
+ </if>
+ <else>
+ Promise failed with ${err.message}.
+ </else>
+ </@catch>
+</await>
+
+# from https://markojs.com/docs/core-tags/ \ No newline at end of file
diff --git a/node_modules/shiki/samples/abap.sample b/node_modules/shiki/samples/abap.sample
new file mode 100644
index 0000000..817ef85
--- /dev/null
+++ b/node_modules/shiki/samples/abap.sample
@@ -0,0 +1,21 @@
+report zldbread no standard page heading.
+tables: lfa1.
+data: begin of t occurs 0,
+linfr like lfa1-lifnr,
+name1 like lfa1-name1,
+end of t.
+
+start-of-selection.
+
+get lfa1.
+clear t.
+move-corresponding lfa1 to t.
+append t.
+end-of-selection.
+sort t by name1.
+loop at t.
+
+write: / t-name1, t-lifnr.
+endloop.
+
+*- From https://sapbrainsonline.com/abap-tutorial/codes/reading-logical-database-using-abap-program.html -* \ No newline at end of file
diff --git a/node_modules/shiki/samples/actionscript-3.sample b/node_modules/shiki/samples/actionscript-3.sample
new file mode 100644
index 0000000..e4f20d7
--- /dev/null
+++ b/node_modules/shiki/samples/actionscript-3.sample
@@ -0,0 +1,27 @@
+private function createParticles( count ):void{
+ var anchorPoint = 0;
+ for(var i:uint = 0; i < count; i++){
+
+ var particle:Object;
+ if( inactiveFireParticles.length > 0 ){
+ particle = inactiveFireParticles.shift();
+ }else {
+ particle = new Object();
+ fireParticles.push( particle );
+ }
+
+ particle.x = uint( Math.random() * frame.width * 0.1 ) + anchors[anchorPoint];
+ particle.y = frame.bottom;
+ particle.life = 70 + uint( Math.random() * 30 );
+ particle.size = 5 + uint( Math.random() * 10 );
+
+ if(particle.size > 12){
+ particle.size = 10;
+ }
+ particle.anchor = anchors[anchorPoint] + uint( Math.random() * 5 );
+
+ anchorPoint = (anchorPoint == 9)? 0 : anchorPoint + 1;
+ }
+}
+
+// From https://code.tutsplus.com/tutorials/actionscript-30-optimization-a-practical-example--active-11295 \ No newline at end of file
diff --git a/node_modules/shiki/samples/ada.sample b/node_modules/shiki/samples/ada.sample
new file mode 100644
index 0000000..fe7fff5
--- /dev/null
+++ b/node_modules/shiki/samples/ada.sample
@@ -0,0 +1,13 @@
+with Ada.Text_IO; use Ada.Text_IO;
+
+procedure Learn is
+
+ subtype Alphabet is Character range 'A' .. 'Z';
+
+begin
+
+ Put_Line ("Learning Ada from " & Alphabet'First & " to " & Alphabet'Last);
+
+end Learn;
+
+-- From https://learn.adacore.com/ \ No newline at end of file
diff --git a/node_modules/shiki/samples/apex.sample b/node_modules/shiki/samples/apex.sample
new file mode 100644
index 0000000..9171ed5
--- /dev/null
+++ b/node_modules/shiki/samples/apex.sample
@@ -0,0 +1,5 @@
+String s1 = 'Salesforce and force.com';
+String s2 = s1.remove('force');
+System.debug( 's2'+ s2);// 'Sales and .com'
+
+// From https://www.guru99.com/apex-tutorial.html \ No newline at end of file
diff --git a/node_modules/shiki/samples/applescript.sample b/node_modules/shiki/samples/applescript.sample
new file mode 100644
index 0000000..feb19ff
--- /dev/null
+++ b/node_modules/shiki/samples/applescript.sample
@@ -0,0 +1,19 @@
+tell application "Address Book"
+
+ set bDayList to name of every person whose birth date is not missing value
+
+ choose from list bDayList with prompt "Whose birthday would you like?"
+
+ if the result is not false then
+
+ set aName to item 1 of the result
+
+ set theBirthday to birth date of person named aName
+
+ display dialog aName & "'s birthday is " & date string of theBirthday
+
+ end if
+
+end tell
+
+-- From https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html \ No newline at end of file
diff --git a/node_modules/shiki/samples/ara.sample b/node_modules/shiki/samples/ara.sample
new file mode 100644
index 0000000..17aaade
--- /dev/null
+++ b/node_modules/shiki/samples/ara.sample
@@ -0,0 +1,29 @@
+namespace MyNamespace;
+
+use MyOtherNamespace\MyOtherClass;
+
+use function MyOtherNamespace\my_other_function;
+
+use const MyOtherNamespace\MY_OTHER_CONST;
+
+const MY_CONST = 1;
+
+type MyType = int;
+
+interface MyInterface {
+ // ...
+}
+
+class MyClass {
+ // ...
+}
+
+enum MyEnum {
+ // ...
+}
+
+function my_function(): void {
+ // ...
+}
+
+https://ara-lang.io/fundamentals/structure.html
diff --git a/node_modules/shiki/samples/asm.sample b/node_modules/shiki/samples/asm.sample
new file mode 100644
index 0000000..e75021b
--- /dev/null
+++ b/node_modules/shiki/samples/asm.sample
@@ -0,0 +1,18 @@
+segment .text ;code segment
+ global_start ;must be declared for linker
+
+_start: ;tell linker entry point
+ mov edx,len ;message length
+ mov ecx,msg ;message to write
+ mov ebx,1 ;file descriptor (stdout)
+ mov eax,4 ;system call number (sys_write)
+ int 0x80 ;call kernel
+
+ mov eax,1 ;system call number (sys_exit)
+ int 0x80 ;call kernel
+
+segment .data ;data segment
+msg db 'Hello, world!',0xa ;our dear string
+len equ $ - msg ;length of our dear string
+
+;From https://www.tutorialspoint.com/assembly_programming/assembly_memory_segments.htm \ No newline at end of file
diff --git a/node_modules/shiki/samples/astro.sample b/node_modules/shiki/samples/astro.sample
new file mode 100644
index 0000000..af46f47
--- /dev/null
+++ b/node_modules/shiki/samples/astro.sample
@@ -0,0 +1,16 @@
+---
+const name = "world"
+---
+
+<!DOCTYPE html>
+<html>
+ <head>
+ <!-- This... is an Astro comment. -->
+ <title>Hello, {name}</title>
+ </head>
+ <body>
+ <main>
+ <h1>Hello, {name}</h1>
+ </main>
+ </body>
+</html>
diff --git a/node_modules/shiki/samples/awk.sample b/node_modules/shiki/samples/awk.sample
new file mode 100644
index 0000000..1b8691b
--- /dev/null
+++ b/node_modules/shiki/samples/awk.sample
@@ -0,0 +1,25 @@
+#!/bin/awk -f
+BEGIN {
+# How many lines
+ lines=0;
+ total=0;
+}
+{
+# this code is executed once for each line
+# increase the number of files
+ lines++;
+# increase the total size, which is field #1
+ total+=$1;
+}
+END {
+# end, now output the total
+ print lines " lines read";
+ print "total is ", total;
+ if (lines > 0 ) {
+ print "average is ", total/lines;
+ } else {
+ print "average is 0";
+ }
+}
+
+#From https://www.grymoire.com/Unix/Awk.html \ No newline at end of file
diff --git a/node_modules/shiki/samples/ballerina.sample b/node_modules/shiki/samples/ballerina.sample
new file mode 100644
index 0000000..4d20bfc
--- /dev/null
+++ b/node_modules/shiki/samples/ballerina.sample
@@ -0,0 +1,32 @@
+import ballerina/io;
+
+// This function definition has two parameters of type `int`.
+// `returns` clause specifies type of return value.
+function add(int x, int y) returns int {
+
+ int sum = x + y;
+ // `return` statement returns a value.
+ return sum;
+
+}
+
+public function main() {
+ io:println(add(5, 11));
+}
+import ballerina/io;
+
+// This function definition has two parameters of type `int`.
+// `returns` clause specifies type of return value.
+function add(int x, int y) returns int {
+
+ int sum = x + y;
+ // `return` statement returns a value.
+ return sum;
+
+}
+
+public function main() {
+ io:println(add(5, 11));
+}
+
+// From https://ballerina.io/learn/by-example/functions \ No newline at end of file
diff --git a/node_modules/shiki/samples/bat.sample b/node_modules/shiki/samples/bat.sample
new file mode 100644
index 0000000..136cbf0
--- /dev/null
+++ b/node_modules/shiki/samples/bat.sample
@@ -0,0 +1,15 @@
+@rem My First Batch file!
+
+@echo off
+
+echo Three
+
+echo Two
+
+echo One
+
+echo Hello World!
+
+pause
+
+@rem From https://o7planning.org/11531/batch-scripting-language-tutorial-for-beginners \ No newline at end of file
diff --git a/node_modules/shiki/samples/beancount.sample b/node_modules/shiki/samples/beancount.sample
new file mode 100644
index 0000000..93127d2
--- /dev/null
+++ b/node_modules/shiki/samples/beancount.sample
@@ -0,0 +1,9 @@
+2012-11-03 * "Transfer to pay credit card"
+ Assets:MyBank:Checking -400.00 USD
+ Liabilities:CreditCard 400.00 USD
+
+2012-11-03 * "Transfer to account in Canada"
+ Assets:MyBank:Checking -400.00 USD @ 1.09 CAD
+ Assets:FR:SocGen:Checking 436.01 CAD
+
+; https://beancount.github.io/docs/beancount_language_syntax.html#costs-and-prices
diff --git a/node_modules/shiki/samples/berry.sample b/node_modules/shiki/samples/berry.sample
new file mode 100644
index 0000000..90e1f02
--- /dev/null
+++ b/node_modules/shiki/samples/berry.sample
@@ -0,0 +1,60 @@
+class node
+ var v, l, r
+ def init(v, l, r)
+ self.v = v
+ self.l = l
+ self.r = r
+ end
+ def insert(v)
+ if v < self.v
+ if self.l
+ self.l.insert(v)
+ else
+ self.l = node(v)
+ end
+ else
+ if self.r
+ self.r.insert(v)
+ else
+ self.r = node (v)
+ end
+ end
+ end
+ def sort(l)
+ if (self.l) self.l.sort(l) end
+ l.push(self.v)
+ if (self.r) self.r.sort(l) end
+ end
+end
+
+class btree
+ var root
+ def insert(v)
+ if self.root
+ self.root.insert(v)
+ else
+ self.root = node(v)
+ end
+ end
+ def sort()
+ var l = []
+ if self.root
+ self.root.sort(l)
+ end
+ return l
+ end
+end
+
+var tree = btree()
+tree.insert(-100)
+tree.insert(5);
+tree.insert(3);
+tree.insert(9);
+tree.insert(10);
+tree.insert(10000000);
+tree.insert(1);
+tree.insert(-1);
+tree.insert(-10);
+print(tree.sort());
+
+# From https://github.com/berry-lang/berry/blob/master/examples/bintree.be \ No newline at end of file
diff --git a/node_modules/shiki/samples/bicep.sample b/node_modules/shiki/samples/bicep.sample
new file mode 100644
index 0000000..a95fbed
--- /dev/null
+++ b/node_modules/shiki/samples/bicep.sample
@@ -0,0 +1,47 @@
+@description('Name of the eventhub namespace')
+param eventHubNamespaceName string
+
+@description('Name of the eventhub name')
+param eventHubName string
+
+@description('The service principal')
+param principalId string
+
+// Create an event hub namespace
+resource eventHubNamespace 'Microsoft.EventHub/namespaces@2021-01-01-preview' = {
+ name: eventHubNamespaceName
+ location: resourceGroup().location
+ sku: {
+ name: 'Standard'
+ tier: 'Standard'
+ capacity: 1
+ }
+ properties: {
+ zoneRedundant: true
+ }
+}
+
+// Create an event hub inside the namespace
+resource eventHub 'Microsoft.EventHub/namespaces/eventhubs@2021-01-01-preview' = {
+ parent: eventHubNamespace
+ name: eventHubName
+ properties: {
+ messageRetentionInDays: 7
+ partitionCount: 1
+ }
+}
+
+// give Azure Pipelines Service Principal permissions against the event hub
+
+var roleDefinitionAzureEventHubsDataOwner = subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'f526a384-b230-433a-b45c-95f59c4a2dec')
+
+resource integrationTestEventHubReceiverNamespaceRoleAssignment 'Microsoft.Authorization/roleAssignments@2018-01-01-preview' = {
+ name: guid(principalId, eventHub.id, roleDefinitionAzureEventHubsDataOwner)
+ scope: eventHubNamespace
+ properties: {
+ roleDefinitionId: roleDefinitionAzureEventHubsDataOwner
+ principalId: principalId
+ }
+}
+
+// From https://dev.azure.com/johnnyreilly/blog-demos/_git/permissioning-azure-pipelines-bicep-role-assignments?path=/infra/main.bicep \ No newline at end of file
diff --git a/node_modules/shiki/samples/blade.sample b/node_modules/shiki/samples/blade.sample
new file mode 100644
index 0000000..12a4795
--- /dev/null
+++ b/node_modules/shiki/samples/blade.sample
@@ -0,0 +1,47 @@
+<x-app-layout :title="$post->title">
+ <x-ad/>
+
+ <x-post-header :post="$post" class="mb-8">
+
+ {!! $post->html !!}
+
+ @unless($post->isTweet())
+ @if($post->external_url)
+ <p class="mt-6">
+ <a href="{{ $post->external_url }}">
+ Read more</a>
+ <span class="text-xs text-gray-700">[{{ $post->external_url_host }}]</span>
+ </p>
+ @endif
+ @endunless
+ </x-post-header>
+
+ @include('front.newsletter.partials.block', [
+ 'class' => 'mb-8',
+ ])
+
+ <div class="mb-8">
+ @include('front.posts.partials.comments')
+ </div>
+
+ <x-slot name="seo">
+ <meta property="og:title" content="{{ $post->title }} | freek.dev"/>
+ <meta property="og:description" content="{{ $post->plain_text_excerpt }}"/>
+ <meta name="og:image" content="{{ url($post->getFirstMediaUrl('ogImage')) }}"/>
+
+ @foreach($post->tags as $tag)
+ <meta property="article:tag" content="{{ $tag->name }}"/>
+ @endforeach
+
+ <meta property="article:published_time" content="{{ optional($post->publish_date)->toIso8601String() }}"/>
+ <meta property="og:updated_time" content="{{ $post->updated_at->toIso8601String() }}"/>
+ <meta name="twitter:card" content="summary_large_image"/>
+ <meta name="twitter:description" content="{{ $post->plain_text_excerpt }}"/>
+ <meta name="twitter:title" content="{{ $post->title }} | freek.dev"/>
+ <meta name="twitter:site" content="@freekmurze"/>
+ <meta name="twitter:image" content="{{ url($post->getFirstMediaUrl('ogImage')) }}"/>
+ <meta name="twitter:creator" content="@freekmurze"/>
+ </x-slot>
+</x-app-layout>
+
+#From https://freek.dev/2024-how-to-render-markdown-with-perfectly-highlighted-code-snippets \ No newline at end of file
diff --git a/node_modules/shiki/samples/c.sample b/node_modules/shiki/samples/c.sample
new file mode 100644
index 0000000..ddd0625
--- /dev/null
+++ b/node_modules/shiki/samples/c.sample
@@ -0,0 +1,52 @@
+#include <stdio.h>
+
+#define ARR_LEN 7
+
+void qsort(int v[], int left, int right);
+void printArr(int v[], int len);
+
+int main()
+{
+ int i;
+ int v[ARR_LEN] = { 4, 3, 1, 7, 9, 6, 2 };
+ printArr(v, ARR_LEN);
+ qsort(v, 0, ARR_LEN-1);
+ printArr(v, ARR_LEN);
+ return 0;
+}
+
+void qsort(int v[], int left, int right)
+{
+ int i, last;
+ void swap(int v[], int i, int j);
+
+ if (left >= right)
+ return;
+ swap(v, left, (left + right) / 2);
+ last = left;
+ for (i = left+1; i <= right; i++)
+ if (v[i] < v[left])
+ swap(v, ++last, i);
+ swap(v, left, last);
+ qsort(v, left, last-1);
+ qsort(v, last+1, right);
+}
+
+void swap(int v[], int i, int j)
+{
+ int temp;
+
+ temp = v[i];
+ v[i] = v[j];
+ v[j] = temp;
+}
+
+void printArr(int v[], int len)
+{
+ int i;
+ for (i = 0; i < len; i++)
+ printf("%d ", v[i]);
+ printf("\n");
+}
+
+// From https://github.com/Heatwave/The-C-Programming-Language-2nd-Edition/blob/master/chapter-4-functions-and-program-structure/8.qsort.c \ No newline at end of file
diff --git a/node_modules/shiki/samples/cadence.sample b/node_modules/shiki/samples/cadence.sample
new file mode 100644
index 0000000..465191a
--- /dev/null
+++ b/node_modules/shiki/samples/cadence.sample
@@ -0,0 +1,19 @@
+pub contract HelloWorld {
+
+ // Declare a public field of type String.
+ //
+ // All fields must be initialized in the init() function.
+ pub let greeting: String
+
+ // The init() function is required if the contract contains any fields.
+ init() {
+ self.greeting = "Hello, World!"
+ }
+
+ // Public function that returns our friendly greeting!
+ pub fun hello(): String {
+ return self.greeting
+ }
+}
+
+// From https://docs.onflow.org/cadence/tutorial/02-hello-world/ \ No newline at end of file
diff --git a/node_modules/shiki/samples/clarity.sample b/node_modules/shiki/samples/clarity.sample
new file mode 100644
index 0000000..b73ae4d
--- /dev/null
+++ b/node_modules/shiki/samples/clarity.sample
@@ -0,0 +1,53 @@
+(impl-trait .sip010-ft-trait.sip010-ft-trait)
+
+;; SIP010 trait on mainnet
+;; (impl-trait 'SP3FBR2AGK5H9QBDH3EEN6DF8EK8JY7RX8QJ5SVTE.sip-010-trait-ft-standard.sip-010-trait)
+
+(define-constant contract-owner tx-sender)
+(define-constant err-owner-only (err u100))
+(define-constant err-not-token-owner (err u101))
+
+;; No maximum supply!
+(define-fungible-token clarity-coin)
+
+(define-public (transfer (amount uint) (sender principal) (recipient principal) (memo (optional (buff 34))))
+ (begin
+ (asserts! (is-eq tx-sender sender) err-owner-only)
+ (try! (ft-transfer? clarity-coin amount sender recipient))
+ (match memo to-print (print to-print) 0x)
+ (ok true)
+ )
+)
+
+(define-read-only (get-name)
+ (ok "Clarity Coin")
+)
+
+(define-read-only (get-symbol)
+ (ok "CC")
+)
+
+(define-read-only (get-decimals)
+ (ok u0)
+)
+
+(define-read-only (get-balance (who principal))
+ (ok (ft-get-balance clarity-coin who))
+)
+
+(define-read-only (get-total-supply)
+ (ok (ft-get-supply clarity-coin))
+)
+
+(define-read-only (get-token-uri)
+ (ok none)
+)
+
+(define-public (mint (amount uint) (recipient principal))
+ (begin
+ (asserts! (is-eq tx-sender contract-owner) err-owner-only)
+ (ft-mint? clarity-coin amount recipient)
+ )
+)
+
+;; From https://github.com/clarity-lang/book/blob/main/projects/sip010-ft/contracts/clarity-coin.clar \ No newline at end of file
diff --git a/node_modules/shiki/samples/clojure.sample b/node_modules/shiki/samples/clojure.sample
new file mode 100644
index 0000000..80994b5
--- /dev/null
+++ b/node_modules/shiki/samples/clojure.sample
@@ -0,0 +1,14 @@
+(let [my-vector [1 2 3 4]
+ my-map {:fred "ethel"}
+ my-list (list 4 3 2 1)]
+ (list
+ (conj my-vector 5)
+ (assoc my-map :ricky "lucy")
+ (conj my-list 5)
+ ;the originals are intact
+ my-vector
+ my-map
+ my-list))
+-> ([1 2 3 4 5] {:ricky "lucy", :fred "ethel"} (5 4 3 2 1) [1 2 3 4] {:fred "ethel"} (4 3 2 1))
+
+;From https://clojure.org/about/functional_programming#_immutable_data_structures \ No newline at end of file
diff --git a/node_modules/shiki/samples/cmake.sample b/node_modules/shiki/samples/cmake.sample
new file mode 100644
index 0000000..cf6c551
--- /dev/null
+++ b/node_modules/shiki/samples/cmake.sample
@@ -0,0 +1,36 @@
+# Almost all CMake files should start with this
+# You should always specify a range with the newest
+# and oldest tested versions of CMake. This will ensure
+# you pick up the best policies.
+cmake_minimum_required(VERSION 3.1...3.23)
+
+# This is your project statement. You should always list languages;
+# Listing the version is nice here since it sets lots of useful variables
+project(
+ ModernCMakeExample
+ VERSION 1.0
+ LANGUAGES CXX)
+
+# If you set any CMAKE_ variables, that can go here.
+# (But usually don't do this, except maybe for C++ standard)
+
+# Find packages go here.
+
+# You should usually split this into folders, but this is a simple example
+
+# This is a "default" library, and will match the *** variable setting.
+# Other common choices are STATIC, SHARED, and MODULE
+# Including header files here helps IDEs but is not required.
+# Output libname matches target name, with the usual extensions on your system
+add_library(MyLibExample simple_lib.cpp simple_lib.hpp)
+
+# Link each target with other targets or add options, etc.
+
+# Adding something we can run - Output name matches target name
+add_executable(MyExample simple_example.cpp)
+
+# Make sure you link your targets with this command. It can also link libraries and
+# even flags, so linking a target that does not exist will not give a configure-time error.
+target_link_libraries(MyExample PRIVATE MyLibExample)
+
+# From https://cliutils.gitlab.io/modern-cmake/chapters/basics/example.html \ No newline at end of file
diff --git a/node_modules/shiki/samples/cobol.sample b/node_modules/shiki/samples/cobol.sample
new file mode 100644
index 0000000..f13c1cb
--- /dev/null
+++ b/node_modules/shiki/samples/cobol.sample
@@ -0,0 +1,12 @@
+*> setup the identification division
+IDENTIFICATION DIVISION.
+*> setup the program id
+PROGRAM-ID. HELLO.
+*> setup the procedure division (like 'main' function)
+PROCEDURE DIVISION.
+*> print a string
+DISPLAY 'WILLKOMMEN'.
+*> end our program
+STOP RUN.
+
+*> From https://medium.com/@yvanscher/7-cobol-examples-with-explanations-ae1784b4d576 \ No newline at end of file
diff --git a/node_modules/shiki/samples/codeql.sample b/node_modules/shiki/samples/codeql.sample
new file mode 100644
index 0000000..fd23085
--- /dev/null
+++ b/node_modules/shiki/samples/codeql.sample
@@ -0,0 +1,104 @@
+// a query
+
+/**
+ * @name LDAP query built from user-controlled sources
+ * @description Building an LDAP query from user-controlled sources is vulnerable to insertion of
+ * malicious LDAP code by the user.
+ * @kind path-problem
+ * @problem.severity error
+ * @id py/ldap-injection
+ * @tags experimental
+ * security
+ * external/cwe/cwe-090
+ */
+
+import python
+import experimental.semmle.python.security.injection.LDAP
+import DataFlow::PathGraph
+
+from LDAPInjectionFlowConfig config, DataFlow::PathNode source, DataFlow::PathNode sink
+where config.hasFlowPath(source, sink)
+select sink.getNode(), source, sink, "$@ LDAP query parameter comes from $@.", sink.getNode(),
+ "This", source.getNode(), "a user-provided value"
+
+// a concept
+
+module LDAPEscape {
+ abstract class Range extends DataFlow::Node {
+ abstract DataFlow::Node getAnInput();
+ }
+}
+
+class LDAPEscape extends DataFlow::Node {
+ LDAPEscape::Range range;
+
+ LDAPEscape() { this = range }
+
+ DataFlow::Node getAnInput() { result = range.getAnInput() }
+}
+
+// a library modeling
+
+private module LDAP2 {
+ private class LDAP2QueryMethods extends string {
+ LDAP2QueryMethods() {
+ this in ["search", "search_s", "search_st", "search_ext", "search_ext_s"]
+ }
+ }
+
+ private class LDAP2Query extends DataFlow::CallCfgNode, LDAPQuery::Range {
+ DataFlow::Node ldapQuery;
+
+ LDAP2Query() {
+ exists(DataFlow::AttrRead searchMethod |
+ this.getFunction() = searchMethod and
+ API::moduleImport("ldap").getMember("initialize").getACall() =
+ searchMethod.getObject().getALocalSource() and
+ searchMethod.getAttributeName() instanceof LDAP2QueryMethods and
+ (
+ ldapQuery = this.getArg(0)
+ or
+ (
+ ldapQuery = this.getArg(2) or
+ ldapQuery = this.getArgByName("filterstr")
+ )
+ )
+ )
+ }
+
+ override DataFlow::Node getQuery() { result = ldapQuery }
+ }
+
+ private class LDAP2EscapeDNCall extends DataFlow::CallCfgNode, LDAPEscape::Range {
+ LDAP2EscapeDNCall() {
+ this = API::moduleImport("ldap").getMember("dn").getMember("escape_dn_chars").getACall()
+ }
+
+ override DataFlow::Node getAnInput() { result = this.getArg(0) }
+ }
+
+ private class LDAP2EscapeFilterCall extends DataFlow::CallCfgNode, LDAPEscape::Range {
+ LDAP2EscapeFilterCall() {
+ this =
+ API::moduleImport("ldap").getMember("filter").getMember("escape_filter_chars").getACall()
+ }
+
+ override DataFlow::Node getAnInput() { result = this.getArg(0) }
+ }
+}
+
+// a taint flow config
+
+class LDAPInjectionFlowConfig extends TaintTracking::Configuration {
+ LDAPInjectionFlowConfig() { this = "LDAPInjectionFlowConfig" }
+
+ override predicate isSource(DataFlow::Node source) { source instanceof RemoteFlowSource }
+
+ override predicate isSink(DataFlow::Node sink) { sink = any(LDAPQuery ldapQuery).getQuery() }
+
+ override predicate isSanitizer(DataFlow::Node sanitizer) {
+ sanitizer = any(LDAPEscape ldapEsc).getAnInput()
+ }
+}
+
+// From https://github.com/github/codeql/pull/5443/files \ No newline at end of file
diff --git a/node_modules/shiki/samples/coffee.sample b/node_modules/shiki/samples/coffee.sample
new file mode 100644
index 0000000..433d85a
--- /dev/null
+++ b/node_modules/shiki/samples/coffee.sample
@@ -0,0 +1,30 @@
+# Assignment:
+number = 42
+opposite = true
+
+# Conditions:
+number = -42 if opposite
+
+# Functions:
+square = (x) -> x * x
+
+# Arrays:
+list = [1, 2, 3, 4, 5]
+
+# Objects:
+math =
+ root: Math.sqrt
+ square: square
+ cube: (x) -> x * square x
+
+# Splats:
+race = (winner, runners...) ->
+ print winner, runners
+
+# Existence:
+alert "I knew it!" if elvis?
+
+# Array comprehensions:
+cubes = (math.cube num for num in list)
+
+# From https://coffeescript.org/#overview \ No newline at end of file
diff --git a/node_modules/shiki/samples/cpp.sample b/node_modules/shiki/samples/cpp.sample
new file mode 100644
index 0000000..5a78d84
--- /dev/null
+++ b/node_modules/shiki/samples/cpp.sample
@@ -0,0 +1,21 @@
+// Working of implicit type-conversion
+
+#include <iostream>
+using namespace std;
+
+int main() {
+
+ int num_int;
+ double num_double = 9.99;
+
+ // implicit conversion
+ // assigning a double value to an int variable
+ num_int = num_double;
+
+ cout << "num_int = " << num_int << endl;
+ cout << "num_double = " << num_double << endl;
+
+ return 0;
+}
+
+// From https://www.programiz.com/cpp-programming/type-conversion \ No newline at end of file
diff --git a/node_modules/shiki/samples/crystal.sample b/node_modules/shiki/samples/crystal.sample
new file mode 100644
index 0000000..04aafe9
--- /dev/null
+++ b/node_modules/shiki/samples/crystal.sample
@@ -0,0 +1,43 @@
+struct Foo(T)
+end
+
+Foo(Int32)
+
+# ---
+struct Foo
+end
+
+# struct Bar < Foo
+# end
+# Error in ./struct/struct.cr:10: can't extend non-abstract struct Foo
+
+abstract struct AbstractFoo
+end
+
+struct Bar < AbstractFoo
+end
+
+# ---
+struct Test
+ def initialize(@test : String)
+ end
+end
+
+Test.new("foo")
+
+# ---
+struct User
+ property name, age
+
+ def initialize(@name : String, @age : Int32)
+ end
+
+ def print
+ puts "#{age} - #{name}"
+ end
+end
+
+puts User.new("osman", 3).name
+User.new("ali", 9).print
+
+# From https://github.com/askn/crystal-by-example/blob/master/struct/struct.cr \ No newline at end of file
diff --git a/node_modules/shiki/samples/csharp.sample b/node_modules/shiki/samples/csharp.sample
new file mode 100644
index 0000000..0c73c16
--- /dev/null
+++ b/node_modules/shiki/samples/csharp.sample
@@ -0,0 +1,33 @@
+using KCTest.Infrastructure.Database;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Hosting;
+
+namespace KCTest.API
+{
+ public class Program
+ {
+ public static void Main(string[] args)
+ {
+ var host = CreateHostBuilder(args).Build();
+
+ using (var scope = host.Services.CreateScope())
+ {
+ var db = scope.ServiceProvider.GetRequiredService<KCTestContext>();
+ db.Database.Migrate();
+ }
+
+ host.Run();
+ }
+
+ public static IHostBuilder CreateHostBuilder(string[] args) =>
+ Host.CreateDefaultBuilder(args)
+ .ConfigureWebHostDefaults(webBuilder =>
+ {
+ webBuilder.UseStartup<Startup>();
+ });
+ }
+}
+
+// From https://github.com/Jadhielv/KCTest/blob/master/Backend/src/KCTest.API/Program.cs \ No newline at end of file
diff --git a/node_modules/shiki/samples/css.sample b/node_modules/shiki/samples/css.sample
new file mode 100644
index 0000000..6ad1e5b
--- /dev/null
+++ b/node_modules/shiki/samples/css.sample
@@ -0,0 +1,19 @@
+.Aligner {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.Aligner-item {
+ max-width: 50%;
+}
+
+.Aligner-item--top {
+ align-self: flex-start;
+}
+
+.Aligner-item--bottom {
+ align-self: flex-end;
+}
+
+/* From https://philipwalton.github.io/solved-by-flexbox/demos/vertical-centering/ */ \ No newline at end of file
diff --git a/node_modules/shiki/samples/cue.sample b/node_modules/shiki/samples/cue.sample
new file mode 100644
index 0000000..0ffedc7
--- /dev/null
+++ b/node_modules/shiki/samples/cue.sample
@@ -0,0 +1,108 @@
+package kube
+
+service: [ID=_]: {
+ apiVersion: "v1"
+ kind: "Service"
+ metadata: {
+ name: ID
+ labels: {
+ app: ID // by convention
+ domain: "prod" // always the same in the given files
+ component: #Component // varies per directory
+ }
+ }
+ spec: {
+ // Any port has the following properties.
+ ports: [...{
+ port: int
+ protocol: *"TCP" | "UDP" // from the Kubernetes definition
+ name: string | *"client"
+ }]
+ selector: metadata.labels // we want those to be the same
+ }
+}
+
+deployment: [ID=_]: {
+ apiVersion: "apps/v1"
+ kind: "Deployment"
+ metadata: name: ID
+ spec: {
+ // 1 is the default, but we allow any number
+ replicas: *1 | int
+ template: {
+ metadata: labels: {
+ app: ID
+ domain: "prod"
+ component: #Component
+ }
+ // we always have one namesake container
+ spec: containers: [{name: ID}]
+ }
+ }
+}
+
+#Component: string
+
+daemonSet: [ID=_]: _spec & {
+ apiVersion: "apps/v1"
+ kind: "DaemonSet"
+ _name: ID
+}
+
+statefulSet: [ID=_]: _spec & {
+ apiVersion: "apps/v1"
+ kind: "StatefulSet"
+ _name: ID
+}
+
+deployment: [ID=_]: _spec & {
+ apiVersion: "apps/v1"
+ kind: "Deployment"
+ _name: ID
+ spec: replicas: *1 | int
+}
+
+configMap: [ID=_]: {
+ metadata: name: ID
+ metadata: labels: component: #Component
+}
+
+_spec: {
+ _name: string
+
+ metadata: name: _name
+ metadata: labels: component: #Component
+ spec: selector: {}
+ spec: template: {
+ metadata: labels: {
+ app: _name
+ component: #Component
+ domain: "prod"
+ }
+ spec: containers: [{name: _name}]
+ }
+}
+
+// Define the _export option and set the default to true
+// for all ports defined in all containers.
+_spec: spec: template: spec: containers: [...{
+ ports: [...{
+ _export: *true | false // include the port in the service
+ }]
+}]
+
+for x in [deployment, daemonSet, statefulSet] for k, v in x {
+ service: "\(k)": {
+ spec: selector: v.spec.template.metadata.labels
+
+ spec: ports: [
+ for c in v.spec.template.spec.containers
+ for p in c.ports
+ if p._export {
+ let Port = p.containerPort // Port is an alias
+ port: *Port | int
+ targetPort: *Port | int
+ },
+ ]
+ }
+}
diff --git a/node_modules/shiki/samples/cypher.sample b/node_modules/shiki/samples/cypher.sample
new file mode 100644
index 0000000..961c196
--- /dev/null
+++ b/node_modules/shiki/samples/cypher.sample
@@ -0,0 +1,7 @@
+CREATE (matrix:Movie {title: 'The Matrix', released: 1997})
+CREATE (keanu:Person {name: 'Keanu Reeves', born: 1964})
+CREATE (tom)-[:ACTED_IN {roles: ['Forrest']}]->(forrestGump)
+CREATE (tom)-[:ACTED_IN {roles: ['Zachry']}]->(cloudAtlas)
+CREATE (robert)-[:DIRECTED]->(forrestGump)
+
+// https://neo4j.com/docs/getting-started/cypher-intro/results/
diff --git a/node_modules/shiki/samples/d.sample b/node_modules/shiki/samples/d.sample
new file mode 100644
index 0000000..96f91ee
--- /dev/null
+++ b/node_modules/shiki/samples/d.sample
@@ -0,0 +1,18 @@
+void main()
+{
+ import std.datetime.stopwatch : benchmark;
+ import std.math, std.parallelism, std.stdio;
+
+ auto logs = new double[100_000];
+ auto bm = benchmark!({
+ foreach (i, ref elem; logs)
+ elem = log(1.0 + i);
+ }, {
+ foreach (i, ref elem; logs.parallel)
+ elem = log(1.0 + i);
+ })(100); // number of executions of each tested function
+ writefln("Linear init: %s msecs", bm[0].total!"msecs");
+ writefln("Parallel init: %s msecs", bm[1].total!"msecs");
+}
+
+// From https://dlang.org/ \ No newline at end of file
diff --git a/node_modules/shiki/samples/dart.sample b/node_modules/shiki/samples/dart.sample
new file mode 100644
index 0000000..4a6fbad
--- /dev/null
+++ b/node_modules/shiki/samples/dart.sample
@@ -0,0 +1,32 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_workshop/screens/about_screen.dart';
+import 'package:flutter_workshop/screens/home_demo_screen.dart';
+import 'package:flutter_workshop/screens/home_screen.dart';
+import 'package:flutter_workshop/screens/product_detail_screen.dart';
+import 'package:flutter_workshop/screens/product_screen.dart';
+import 'package:flutter_workshop/screens/random_words_screen.dart';
+import 'package:flutter_workshop/screens/unknown_screen.dart';
+import 'package:device_simulator/device_simulator.dart';
+
+void main() => runApp(MyApp());
+
+class MyApp extends StatelessWidget {
+ @override
+ Widget build(BuildContext context) {
+ return MaterialApp(
+ initialRoute: '/',
+ routes: {
+ HomeScreen.routeName: (_) => DeviceSimulator(
+ brightness: Brightness.dark, enable: true, child: HomeScreen()),
+ ProductScreen.routeName: (_) => ProductScreen(),
+ ProductDetailScreen.routeName: (_) => ProductDetailScreen(),
+ RandomWordsScreen.routeName: (_) => RandomWordsScreen(),
+ HomeDemoScreen.routeName: (_) => HomeDemoScreen(),
+ AboutScreen.routeName: (_) => AboutScreen()
+ },
+ onUnknownRoute: (_) =>
+ MaterialPageRoute(builder: (_) => UnknownScreen()));
+ }
+}
+
+// From https://github.com/Jadhielv/flutter-workshop/blob/master/lib/main.dart \ No newline at end of file
diff --git a/node_modules/shiki/samples/dax.sample b/node_modules/shiki/samples/dax.sample
new file mode 100644
index 0000000..e095c74
--- /dev/null
+++ b/node_modules/shiki/samples/dax.sample
@@ -0,0 +1,19 @@
+-- COALESCE returns the first non-blank of its arguments
+-- It is commonly used to provide default values to expressions
+-- that might result in a blank
+EVALUATE
+SELECTCOLUMNS (
+ TOPN ( 10, Store ),
+ "Store name", Store[Store Name],
+ "Manager",
+ COALESCE ( Store[Area Manager], "** Not Assigned **" ),
+ "Years open",
+ DATEDIFF (
+ Store[Open Date],
+ COALESCE ( Store[Close Date], TODAY () ),
+ YEAR
+ )
+)
+ORDER BY [Manager]
+
+-- From https://dax.guide/coalesce/
diff --git a/node_modules/shiki/samples/diff.sample b/node_modules/shiki/samples/diff.sample
new file mode 100644
index 0000000..aa7f7e5
--- /dev/null
+++ b/node_modules/shiki/samples/diff.sample
@@ -0,0 +1,28 @@
+$ cat file1.txt
+cat
+mv
+comm
+cp
+
+$ cat file2.txt
+cat
+cp
+diff
+comm
+
+$ diff -c file1.txt file2.txt
+*** file1.txt Thu Jan 11 08:52:37 2018
+--- file2.txt Thu Jan 11 08:53:01 2018
+***************
+*** 1,4 ****
+ cat
+- mv
+- comm
+ cp
+--- 1,4 ----
+ cat
+ cp
++ diff
++ comm
+
+# From https://www.geeksforgeeks.org/diff-command-linux-examples/ \ No newline at end of file
diff --git a/node_modules/shiki/samples/dm.sample b/node_modules/shiki/samples/dm.sample
new file mode 100644
index 0000000..e410226
--- /dev/null
+++ b/node_modules/shiki/samples/dm.sample
@@ -0,0 +1,77 @@
+//Allows you to set a theme for a set of areas without tying them to looping sounds explicitly
+/datum/component/area_sound_manager
+ //area -> looping sound type
+ var/list/area_to_looping_type = list()
+ //Current sound loop
+ var/datum/looping_sound/our_loop
+ //A list of "acceptable" z levels to be on. If you leave this, we're gonna delete ourselves
+ var/list/accepted_zs
+ //The timer id of our current start delay, if it exists
+ var/timerid
+
+/datum/component/area_sound_manager/Initialize(area_loop_pairs, change_on, remove_on, acceptable_zs)
+ if(!ismovable(parent))
+ return
+ area_to_looping_type = area_loop_pairs
+ accepted_zs = acceptable_zs
+ change_the_track()
+
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/react_to_move)
+ RegisterSignal(parent, COMSIG_MOVABLE_Z_CHANGED, .proc/react_to_z_move)
+ RegisterSignal(parent, change_on, .proc/handle_change)
+ RegisterSignal(parent, remove_on, .proc/handle_removal)
+
+/datum/component/area_sound_manager/Destroy(force, silent)
+ QDEL_NULL(our_loop)
+ . = ..()
+
+/datum/component/area_sound_manager/proc/react_to_move(datum/source, atom/oldloc, dir, forced)
+ SIGNAL_HANDLER
+ var/list/loop_lookup = area_to_looping_type
+ if(loop_lookup[get_area(oldloc)] == loop_lookup[get_area(parent)])
+ return
+ change_the_track(TRUE)
+
+/datum/component/area_sound_manager/proc/react_to_z_move(datum/source, old_z, new_z)
+ SIGNAL_HANDLER
+ if(!length(accepted_zs) || (new_z in accepted_zs))
+ return
+ qdel(src)
+
+/datum/component/area_sound_manager/proc/handle_removal(datum/source)
+ SIGNAL_HANDLER
+ qdel(src)
+
+/datum/component/area_sound_manager/proc/handle_change(datum/source)
+ SIGNAL_HANDLER
+ change_the_track()
+
+/datum/component/area_sound_manager/proc/change_the_track(skip_start = FALSE)
+ var/time_remaining = 0
+
+ if(our_loop)
+ var/our_id = our_loop.timerid || timerid
+ if(our_id)
+ time_remaining = timeleft(our_id, SSsound_loops) || 0
+ //Time left will sometimes return negative values, just ignore them and start a new sound loop now
+ time_remaining = max(time_remaining, 0)
+ QDEL_NULL(our_loop)
+
+ var/area/our_area = get_area(parent)
+ var/new_loop_type = area_to_looping_type[our_area]
+ if(!new_loop_type)
+ return
+
+ our_loop = new new_loop_type(parent, FALSE, TRUE, skip_start)
+
+ //If we're still playing, wait a bit before changing the sound so we don't double up
+ if(time_remaining)
+ timerid = addtimer(CALLBACK(src, .proc/start_looping_sound), time_remaining, TIMER_UNIQUE | TIMER_CLIENT_TIME | TIMER_STOPPABLE | TIMER_NO_HASH_WAIT | TIMER_DELETE_ME, SSsound_loops)
+ return
+ timerid = null
+ our_loop.start()
+
+/datum/component/area_sound_manager/proc/start_looping_sound()
+ timerid = null
+ if(our_loop)
+ our_loop.start()
diff --git a/node_modules/shiki/samples/docker.sample b/node_modules/shiki/samples/docker.sample
new file mode 100644
index 0000000..6e1ac76
--- /dev/null
+++ b/node_modules/shiki/samples/docker.sample
@@ -0,0 +1,19 @@
+# syntax=docker/dockerfile:1
+FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build-env
+WORKDIR /app
+
+# Copy csproj and restore as distinct layers
+COPY *.csproj ./
+RUN dotnet restore
+
+# Copy everything else and build
+COPY ../engine/examples ./
+RUN dotnet publish -c Release -o out
+
+# Build runtime image
+FROM mcr.microsoft.com/dotnet/aspnet:3.1
+WORKDIR /app
+COPY --from=build-env /app/out .
+ENTRYPOINT ["dotnet", "aspnetapp.dll"]
+
+# From https://docs.docker.com/samples/dotnetcore/ \ No newline at end of file
diff --git a/node_modules/shiki/samples/elixir.sample b/node_modules/shiki/samples/elixir.sample
new file mode 100644
index 0000000..88f5e82
--- /dev/null
+++ b/node_modules/shiki/samples/elixir.sample
@@ -0,0 +1,8 @@
+# module_name.ex
+defmodule ModuleName do
+ def hello do
+ IO.puts "Hello World"
+ end
+end
+
+# From https://elixir-lang.org/crash-course.html#elixir \ No newline at end of file
diff --git a/node_modules/shiki/samples/elm.sample b/node_modules/shiki/samples/elm.sample
new file mode 100644
index 0000000..8b008c8
--- /dev/null
+++ b/node_modules/shiki/samples/elm.sample
@@ -0,0 +1,66 @@
+module Main exposing (..)
+
+-- Press buttons to increment and decrement a counter.
+--
+-- Read how it works:
+-- https://guide.elm-lang.org/architecture/buttons.html
+--
+
+
+import Browser
+import Html exposing (Html, button, div, text)
+import Html.Events exposing (onClick)
+
+
+
+-- MAIN
+
+
+main =
+ Browser.sandbox { init = init, update = update, view = view }
+
+
+
+-- MODEL
+
+
+type alias Model = Int
+
+
+init : Model
+init =
+ 0
+
+
+
+-- UPDATE
+
+
+type Msg
+ = Increment
+ | Decrement
+
+
+update : Msg -> Model -> Model
+update msg model =
+ case msg of
+ Increment ->
+ model + 1
+
+ Decrement ->
+ model - 1
+
+
+
+-- VIEW
+
+
+view : Model -> Html Msg
+view model =
+ div []
+ [ button [ onClick Decrement ] [ text "-" ]
+ , div [] [ text (String.fromInt model) ]
+ , button [ onClick Increment ] [ text "+" ]
+ ]
+
+-- From https://elm-lang.org/examples/buttons \ No newline at end of file
diff --git a/node_modules/shiki/samples/erb.sample b/node_modules/shiki/samples/erb.sample
new file mode 100644
index 0000000..36c8d18
--- /dev/null
+++ b/node_modules/shiki/samples/erb.sample
@@ -0,0 +1,69 @@
+require "erb"
+
+# Build template data class.
+class Product
+ def initialize( code, name, desc, cost )
+ @code = code
+ @name = name
+ @desc = desc
+ @cost = cost
+
+ @features = [ ]
+ end
+
+ def add_feature( feature )
+ @features << feature
+ end
+
+ # Support templating of member data.
+ def get_binding
+ binding
+ end
+
+ # ...
+end
+
+# Create template.
+template = %{
+ <html>
+ <head><title>Ruby Toys -- <%= @name %></title></head>
+ <body>
+
+ <h1><%= @name %> (<%= @code %>)</h1>
+ <p><%= @desc %></p>
+
+ <ul>
+ <% @features.each do |f| %>
+ <li><b><%= f %></b></li>
+ <% end %>
+ </ul>
+
+ <p>
+ <% if @cost < 10 %>
+ <b>Only <%= @cost %>!!!</b>
+ <% else %>
+ Call for a price, today!
+ <% end %>
+ </p>
+
+ </body>
+ </html>
+}.gsub(/^ /, '')
+
+rhtml = ERB.new(template)
+
+# Set up template data.
+toy = Product.new( "TZ-1002",
+ "Rubysapien",
+ "Geek's Best Friend! Responds to Ruby commands...",
+ 999.95 )
+toy.add_feature("Listens for verbal commands in the Ruby language!")
+toy.add_feature("Ignores Perl, Java, and all C variants.")
+toy.add_feature("Karate-Chop Action!!!")
+toy.add_feature("Matz signature on left leg.")
+toy.add_feature("Gem studded eyes... Rubies, of course!")
+
+# Produce result.
+rhtml.run(toy.get_binding)
+
+# From https://docs.ruby-lang.org/en/2.3.0/ERB.html#class-ERB-label-Examples \ No newline at end of file
diff --git a/node_modules/shiki/samples/erlang.sample b/node_modules/shiki/samples/erlang.sample
new file mode 100644
index 0000000..67e57b7
--- /dev/null
+++ b/node_modules/shiki/samples/erlang.sample
@@ -0,0 +1,50 @@
+%% File: person.hrl
+
+%%-----------------------------------------------------------
+%% Data Type: person
+%% where:
+%% name: A string (default is undefined).
+%% age: An integer (default is undefined).
+%% phone: A list of integers (default is []).
+%% dict: A dictionary containing various information
+%% about the person.
+%% A {Key, Value} list (default is the empty list).
+%%------------------------------------------------------------
+-record(person, {name, age, phone = [], dict = []}).
+
+-module(person).
+-include("person.hrl").
+-compile(export_all). % For test purposes only.
+
+%% This creates an instance of a person.
+%% Note: The phone number is not supplied so the
+%% default value [] will be used.
+
+make_hacker_without_phone(Name, Age) ->
+ #person{name = Name, age = Age,
+ dict = [{computer_knowledge, excellent},
+ {drinks, coke}]}.
+
+%% This demonstrates matching in arguments
+
+print(#person{name = Name, age = Age,
+ phone = Phone, dict = Dict}) ->
+ io:format("Name: ~s, Age: ~w, Phone: ~w ~n"
+ "Dictionary: ~w.~n", [Name, Age, Phone, Dict]).
+
+%% Demonstrates type testing, selector, updating.
+
+birthday(P) when is_record(P, person) ->
+ P#person{age = P#person.age + 1}.
+
+register_two_hackers() ->
+ Hacker1 = make_hacker_without_phone("Joe", 29),
+ OldHacker = birthday(Hacker1),
+ % The central_register_server should have
+ % an interface function for this.
+ central_register_server ! {register_person, Hacker1},
+ central_register_server ! {register_person,
+ OldHacker#person{name = "Robert",
+ phone = [0,8,3,2,4,5,3,1]}}.
+
+%% From https://erlang.org/doc/programming_examples/records.html#a-longer-example \ No newline at end of file
diff --git a/node_modules/shiki/samples/fish.sample b/node_modules/shiki/samples/fish.sample
new file mode 100644
index 0000000..f3ec67a
--- /dev/null
+++ b/node_modules/shiki/samples/fish.sample
@@ -0,0 +1,13 @@
+function fish_prompt
+ # A simple prompt. Displays the current directory
+ # (which fish stores in the $PWD variable)
+ # and then a user symbol - a '►' for a normal user and a '#' for root.
+ set -l user_char '►'
+ if fish_is_root_user
+ set user_char '#'
+ end
+
+ echo (set_color yellow)$PWD (set_color purple)$user_char
+end
+
+# From https://fishshell.com/docs/current/language.html#functions
diff --git a/node_modules/shiki/samples/fsharp.sample b/node_modules/shiki/samples/fsharp.sample
new file mode 100644
index 0000000..7666c30
--- /dev/null
+++ b/node_modules/shiki/samples/fsharp.sample
@@ -0,0 +1,13 @@
+type Customer(firstName, middleInitial, lastName) =
+ member this.FirstName = firstName
+ member this.MiddleInitial = middleInitial
+ member this.LastName = lastName
+
+ member this.SayFullName() =
+ $"{this.FirstName} {this.MiddleInitial} {this.LastName}"
+
+let customer = Customer("Emillia", "C", "Miller")
+
+printfn $"Hello, I'm {customer.SayFullName()}!"
+
+// From https://dotnet.microsoft.com/languages/fsharp \ No newline at end of file
diff --git a/node_modules/shiki/samples/fsl.sample b/node_modules/shiki/samples/fsl.sample
new file mode 100644
index 0000000..1b02154
--- /dev/null
+++ b/node_modules/shiki/samples/fsl.sample
@@ -0,0 +1,47 @@
+
+machine_name : "TCP/IP";
+machine_reference : "http://www.texample.net/tikz/examples/tcp-state-machine/";
+machine_version : 1.0.0;
+
+machine_author : "John Haugeland <stonecypher@gmail.com>";
+machine_license : MIT;
+
+jssm_version : >= 5.0.0;
+
+
+
+Closed 'Passive open' -> Listen;
+Closed 'Active Open / SYN' -> SynSent;
+
+Listen 'Close' -> Closed;
+Listen 'Send / SYN' -> SynSent;
+Listen 'SYN / SYN+ACK' -> SynRcvd;
+
+SynSent 'Close' -> Closed;
+SynSent 'SYN / SYN+ACK' -> SynRcvd;
+SynSent 'SYN+ACK / ACK' -> Established;
+
+SynRcvd 'Timeout / RST' -> Closed;
+SynRcvd 'Close / FIN' -> FinWait1;
+SynRcvd 'ACK' -> Established;
+
+Established 'Close / FIN' -> FinWait1;
+Established 'FIN / ACK' -> CloseWait;
+
+FinWait1 'FIN / ACK' -> Closing; // the source diagram has this action wrong
+FinWait1 'FIN+ACK / ACK' -> TimeWait;
+FinWait1 'ACK / Nothing' -> FinWait2; // see http://www.cs.odu.edu/~cs779/spring17/lectures/architecture_files/image009.jpg
+
+FinWait2 'FIN / ACK' -> TimeWait;
+
+Closing 'ACK' -> TimeWait;
+
+TimeWait 'Up to 2*MSL' -> Closed;
+
+CloseWait 'Close / FIN' -> LastAck;
+
+LastAck 'ACK' -> Closed;
+
+
+
+# From https://github.com/StoneCypher/jssm/blob/main/src/machines/linguist/tcp%20ip.fsl \ No newline at end of file
diff --git a/node_modules/shiki/samples/gdresource.sample b/node_modules/shiki/samples/gdresource.sample
new file mode 100644
index 0000000..6f2acf3
--- /dev/null
+++ b/node_modules/shiki/samples/gdresource.sample
@@ -0,0 +1,95 @@
+[gd_scene load_steps=7 format=2]
+
+[ext_resource path="res://Example.gd" type="Script" id=1]
+
+[sub_resource type="Environment" id=1]
+background_mode = 4
+tonemap_mode = 3
+glow_enabled = true
+glow_blend_mode = 0
+
+[sub_resource type="Animation" id=2]
+resource_name = "RESET"
+tracks/0/type = "value"
+tracks/0/path = NodePath("CanvasLayer/Panel:modulate")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/keys = {
+"times": PoolRealArray( 0 ),
+"transitions": PoolRealArray( 1 ),
+"update": 0,
+"values": [ Color( 0, 0, 0, 0 ) ]
+}
+
+[sub_resource type="Animation" id=3]
+resource_name = "dim"
+tracks/0/type = "value"
+tracks/0/path = NodePath("CanvasLayer/Panel:modulate")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/keys = {
+"times": PoolRealArray( 0, 1 ),
+"transitions": PoolRealArray( 1, 1 ),
+"update": 0,
+"values": [ Color( 0, 0, 0, 0 ), Color( 0, 0, 0, 0.501961 ) ]
+}
+
+[sub_resource type="Animation" id=4]
+tracks/0/type = "value"
+tracks/0/path = NodePath("CanvasLayer/Panel:modulate")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/keys = {
+"times": PoolRealArray( 0, 1 ),
+"transitions": PoolRealArray( 1, 1 ),
+"update": 0,
+"values": [ Color( 0, 0, 0, 1 ), Color( 0, 0, 0, 0 ) ]
+}
+
+[sub_resource type="Animation" id=5]
+tracks/0/type = "value"
+tracks/0/path = NodePath("CanvasLayer/Panel:modulate")
+tracks/0/interp = 1
+tracks/0/loop_wrap = true
+tracks/0/imported = false
+tracks/0/enabled = true
+tracks/0/keys = {
+"times": PoolRealArray( 0, 1 ),
+"transitions": PoolRealArray( 1, 1 ),
+"update": 0,
+"values": [ Color( 0, 0, 0, 0 ), Color( 0, 0, 0, 1 ) ]
+}
+
+[node name="Main" type="Node"]
+script = ExtResource( 1 )
+
+[node name="World" type="Node2D" parent="."]
+
+[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
+environment = SubResource( 1 )
+
+[node name="CanvasLayer" type="CanvasLayer" parent="."]
+layer = 128
+
+[node name="Panel" type="Panel" parent="CanvasLayer"]
+modulate = Color( 0, 0, 0, 0 )
+anchor_right = 1.0
+anchor_bottom = 1.0
+mouse_filter = 2
+__meta__ = {
+"_edit_use_anchors_": false
+}
+
+[node name="FadePlayer" type="AnimationPlayer" parent="."]
+anims/RESET = SubResource( 2 )
+anims/dim = SubResource( 3 )
+anims/fade_in = SubResource( 4 )
+anims/fade_out = SubResource( 5 )
+
+; from https://github.com/godotengine/godot-vscode-plugin/blob/cdc550a412dfffd26dfe7351e429b73c819d68d0/syntaxes/examples/Example.tscn \ No newline at end of file
diff --git a/node_modules/shiki/samples/gdscript.sample b/node_modules/shiki/samples/gdscript.sample
new file mode 100644
index 0000000..a79e433
--- /dev/null
+++ b/node_modules/shiki/samples/gdscript.sample
@@ -0,0 +1,57 @@
+extends Node
+class_name TestClass2
+@icon("res://path/to/icon.png")
+
+# ******************************************************************************
+
+@export var x : int
+@export var y : int
+@export var z : String
+@export_node_path(Resource) var resource_name
+
+var array_a: Array[int] = [1, 2, 3]
+var array_b: Array[String] = ['1', '2', '3']
+
+@rpc
+func remote_function_a():
+ pass
+
+@rpc(any_peer, call_local, unreliable)
+func remote_function_b():
+ pass
+
+# ------------------------------------------------------------------------------
+
+func f():
+ await $Button.button_up
+ super()
+ super.some_function()
+
+ for i in range(1): # `in` is a control keyword
+ print(i in range(1)) # `in` is an operator keyword
+
+func lambda_test():
+ var lambda_a = func(param1, param2, param3):
+ pass
+ var lambda_b = func(param1, param2=func_a(10, 1.0, 'test')):
+ pass
+ var lambda_c = func(param1 = false, param2: bool = false, param3 := false):
+ pass
+
+ lambda_a.call()
+ lambda_b.call()
+ lambda_c.call()
+
+# ------------------------------------------------------------------------------
+
+signal changed(new_value)
+var warns_when_changed = "some value":
+ get:
+ return warns_when_changed
+ set(value):
+ changed.emit(value)
+ warns_when_changed = value
+
+# ------------------------------------------------------------------------------
+
+# from https://github.com/godotengine/godot-vscode-plugin/blob/cdc550a412dfffd26dfe7351e429b73c819d68d0/syntaxes/examples/gdscript2.gd \ No newline at end of file
diff --git a/node_modules/shiki/samples/gdshader.sample b/node_modules/shiki/samples/gdshader.sample
new file mode 100644
index 0000000..c209300
--- /dev/null
+++ b/node_modules/shiki/samples/gdshader.sample
@@ -0,0 +1,97 @@
+shader_type spatial;
+render_mode wireframe;
+
+const lowp vec3 v[1] = lowp vec3[1] ( vec3(0, 0, 1) );
+
+void fn() {
+ // The required amount of scalars
+ vec4 a0 = vec4(0.0, 1.0, 2.0, 3.0);
+ // Complementary vectors and/or scalars
+ vec4 a1 = vec4(vec2(0.0, 1.0), vec2(2.0, 3.0));
+ vec4 a2 = vec4(vec3(0.0, 1.0, 2.0), 3.0);
+ // A single scalar for the whole vector
+ vec4 a3 = vec4(0.0);
+
+ mat2 m2 = mat2(vec2(1.0, 0.0), vec2(0.0, 1.0));
+ mat3 m3 = mat3(vec3(1.0, 0.0, 0.0), vec3(0.0, 1.0, 0.0), vec3(0.0, 0.0, 1.0));
+ mat4 identity = mat4(1.0);
+
+ mat3 basis = mat3(identity);
+ mat4 m4 = mat4(basis);
+ mat2 m2a = mat2(m4);
+
+ vec4 a = vec4(0.0, 1.0, 2.0, 3.0);
+ vec3 b = a.rgb; // Creates a vec3 with vec4 components.
+ vec3 b1 = a.ggg; // Also valid; creates a vec3 and fills it with a single vec4 component.
+ vec3 b2 = a.bgr; // "b" will be vec3(2.0, 1.0, 0.0).
+ vec3 b3 = a.xyz; // Also rgba, xyzw are equivalent.
+ vec3 b4 = a.stp; // And stpq (for texture coordinates).
+ b.bgr = a.rgb; // Valid assignment. "b"'s "blue" component will be "a"'s "red" and vice versa.
+
+ lowp vec4 v0 = vec4(0.0, 1.0, 2.0, 3.0); // low precision, usually 8 bits per component mapped to 0-1
+ mediump vec4 v1 = vec4(0.0, 1.0, 2.0, 3.0); // medium precision, usually 16 bits or half float
+ highp vec4 v2 = vec4(0.0, 1.0, 2.0, 3.0); // high precision, uses full float or integer range (default)
+
+ const vec2 aa = vec2(0.0, 1.0);
+ vec2 bb;
+ bb = aa; // valid
+
+ const vec2 V1 = vec2(1, 1), V2 = vec2(2, 2);
+
+ float fa = 1.0;
+ float fb = 1.0f;
+ float fc = 1e-1;
+
+ uint ua = 1u;
+ uint ub = uint(1);
+
+ bool cond = false;
+ // `if` and `else`.
+ if (cond) {
+ } else {
+ }
+ // Ternary operator.
+ // This is an expression that behaves like `if`/`else` and returns the value.
+ // If `cond` evaluates to `true`, `result` will be `9`.
+ // Otherwise, `result` will be `5`.
+ int i, result = cond ? 9 : 5;
+ // `switch`.
+ switch (i) { // `i` should be a signed integer expression.
+ case -1:
+ break;
+ case 0:
+ return; // `break` or `return` to avoid running the next `case`.
+ case 1: // Fallthrough (no `break` or `return`): will run the next `case`.
+ case 2:
+ break;
+ //...
+ default: // Only run if no `case` above matches. Optional.
+ break;
+ }
+ // `for` loop. Best used when the number of elements to iterate on
+ // is known in advance.
+ for (int i = 0; i < 10; i++) {
+ }
+ // `while` loop. Best used when the number of elements to iterate on
+ // is not known in advance.
+ while (cond) {
+ }
+ // `do while`. Like `while`, but always runs at least once even if `cond`
+ // never evaluates to `true`.
+ do {
+ } while (cond);
+}
+
+const float PI_ = 3.14159265358979323846;
+
+struct PointLight {
+ vec3 position;
+ vec3 color;
+ float intensity;
+};
+
+struct Scene {
+ PointLight lights[2];
+};
+
+// from https://github.com/godotengine/godot-vscode-plugin/blob/cdc550a412dfffd26dfe7351e429b73c819d68d0/syntaxes/examples/example2.gdshader \ No newline at end of file
diff --git a/node_modules/shiki/samples/gjs.sample b/node_modules/shiki/samples/gjs.sample
new file mode 100644
index 0000000..ec4e2c2
--- /dev/null
+++ b/node_modules/shiki/samples/gjs.sample
@@ -0,0 +1,18 @@
+import { helper } from '@ember/component/helper';
+import { modifier } from 'ember-modifier';
+
+const plusOne = helper(([num]) => num + 1);
+
+const setScrollPosition = modifier((element, [position]) => {
+ element.scrollTop = position
+});
+
+<template>
+ <div class="scroll-container" {{setScrollPosition @scrollPos}}>
+ {{#each @items as |item index|}}
+ Item #{{plusOne index}}: {{item}}
+ {{/each}}
+ </div>
+</template>
+
+# From https://github.com/ember-template-imports/ember-template-imports
diff --git a/node_modules/shiki/samples/glsl.sample b/node_modules/shiki/samples/glsl.sample
new file mode 100644
index 0000000..e92828c
--- /dev/null
+++ b/node_modules/shiki/samples/glsl.sample
@@ -0,0 +1,86 @@
+#version 330
+
+const float PI = 3.1415926535897932384626433832795;
+
+const float waveLength = 20.0;
+const float waveAmplitude = 1.0;
+const float specularReflectivity = 0.4;
+const float shineDamper = 20.0;
+
+layout(location = 0) in vec2 in_position;
+layout(location = 1) in vec4 in_indicators;
+
+out vec4 pass_clipSpaceGrid;
+out vec4 pass_clipSpaceReal;
+out vec3 pass_normal;
+out vec3 pass_toCameraVector;
+out vec3 pass_specular;
+out vec3 pass_diffuse;
+
+uniform float height;
+uniform vec3 cameraPos;
+uniform float waveTime;
+
+uniform vec3 lightDirection;
+uniform vec3 lightColour;
+uniform vec2 lightBias;
+
+uniform mat4 projectionViewMatrix;
+
+vec3 calcSpecularLighting(vec3 toCamVector, vec3 toLightVector, vec3 normal){
+ vec3 reflectedLightDirection = reflect(-toLightVector, normal);
+ float specularFactor = dot(reflectedLightDirection , toCamVector);
+ specularFactor = max(specularFactor,0.0);
+ specularFactor = pow(specularFactor, shineDamper);
+ return specularFactor * specularReflectivity * lightColour;
+}
+
+vec3 calculateDiffuseLighting(vec3 toLightVector, vec3 normal){
+ float brightness = max(dot(toLightVector, normal), 0.0);
+ return (lightColour * lightBias.x) + (brightness * lightColour * lightBias.y);
+}
+
+vec3 calcNormal(vec3 vertex0, vec3 vertex1, vec3 vertex2){
+ vec3 tangent = vertex1 - vertex0;
+ vec3 bitangent = vertex2 - vertex0;
+ return normalize(cross(tangent, bitangent));
+}
+
+float generateOffset(float x, float z){
+ float radiansX = (x / waveLength + waveTime) * 2.0 * PI;
+ float radiansZ = (z / waveLength + waveTime) * 2.0 * PI;
+ return waveAmplitude * 0.5 * (sin(radiansZ) + cos(radiansX));
+}
+
+vec3 applyDistortion(vec3 vertex){
+ float xDistortion = generateOffset(vertex.x, vertex.z);
+ float yDistortion = generateOffset(vertex.x, vertex.z);
+ float zDistortion = generateOffset(vertex.x, vertex.z);
+ return vertex + vec3(xDistortion, yDistortion, zDistortion);
+}
+
+void main(void){
+
+ vec3 currentVertex = vec3(in_position.x, height, in_position.y);
+ vec3 vertex1 = currentVertex + vec3(in_indicators.x, 0.0, in_indicators.y);
+ vec3 vertex2 = currentVertex + vec3(in_indicators.z, 0.0, in_indicators.w);
+
+ pass_clipSpaceGrid = projectionViewMatrix * vec4(currentVertex, 1.0);
+
+ currentVertex = applyDistortion(currentVertex);
+ vertex1 = applyDistortion(vertex1);
+ vertex2 = applyDistortion(vertex2);
+
+ pass_normal = calcNormal(currentVertex, vertex1, vertex2);
+
+ pass_clipSpaceReal = projectionViewMatrix * vec4(currentVertex, 1.0);
+ gl_Position = pass_clipSpaceReal;
+
+ pass_toCameraVector = normalize(cameraPos - currentVertex);
+
+ vec3 toLightVector = -normalize(lightDirection);
+ pass_specular = calcSpecularLighting(pass_toCameraVector, toLightVector, pass_normal);
+ pass_diffuse = calculateDiffuseLighting(toLightVector, pass_normal);
+}
+
+// From https://github.com/TheThinMatrix/WaterStep10/blob/master/water/waterRendering/waterVertex.glsl \ No newline at end of file
diff --git a/node_modules/shiki/samples/go.sample b/node_modules/shiki/samples/go.sample
new file mode 100644
index 0000000..0af7005
--- /dev/null
+++ b/node_modules/shiki/samples/go.sample
@@ -0,0 +1,18 @@
+package main
+
+import (
+ "fmt"
+ "log"
+ "net/http"
+)
+
+func handler(w http.ResponseWriter, r *http.Request) {
+ fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
+}
+
+func main() {
+ http.HandleFunc("/", handler)
+ log.Fatal(http.ListenAndServe(":8080", nil))
+}
+
+// From https://golang.org/doc/articles/wiki/#tmp_3 \ No newline at end of file
diff --git a/node_modules/shiki/samples/gts.sample b/node_modules/shiki/samples/gts.sample
new file mode 100644
index 0000000..286d4d4
--- /dev/null
+++ b/node_modules/shiki/samples/gts.sample
@@ -0,0 +1,7 @@
+import type { TemplateOnlyComponent } from '@glimmer/component';
+
+const Greet: TemplateOnlyComponent<{ name: string }> = <template>
+ <p>Hello, {{@name}}!</p>
+</template>
+
+# From https://rfcs.emberjs.com/id/0779-first-class-component-templates
diff --git a/node_modules/shiki/samples/hcl.sample b/node_modules/shiki/samples/hcl.sample
new file mode 100644
index 0000000..e573b46
--- /dev/null
+++ b/node_modules/shiki/samples/hcl.sample
@@ -0,0 +1,15 @@
+io_mode = "async"
+
+service "http" "web_proxy" {
+ listen_addr = "127.0.0.1:8080"
+
+ process "main" {
+ command = ["/usr/local/bin/awesome-app", "server"]
+ }
+
+ process "mgmt" {
+ command = ["/usr/local/bin/awesome-app", "mgmt"]
+ }
+}
+
+# From: https://github.com/hashicorp/hcl/blob/main/README.md \ No newline at end of file
diff --git a/node_modules/shiki/samples/hjson.sample b/node_modules/shiki/samples/hjson.sample
new file mode 100644
index 0000000..d3ea3a5
--- /dev/null
+++ b/node_modules/shiki/samples/hjson.sample
@@ -0,0 +1,25 @@
+{
+ // use #, // or /**/ comments,
+ // omit quotes for keys
+ key: 1
+ // omit quotes for strings
+ contains: everything on this line
+ // omit commas at the end of a line
+ cool: {
+ foo: 1
+ bar: 2
+ }
+ // allow trailing commas
+ list: [
+ 1,
+ 2,
+ ]
+ // and use multiline strings
+ realist:
+ '''
+ My half empty glass,
+ I will fill your empty half.
+ Now you are half full.
+ '''
+ // From: https://hjson.github.io/
+}
diff --git a/node_modules/shiki/samples/html.sample b/node_modules/shiki/samples/html.sample
new file mode 100644
index 0000000..65d30dd
--- /dev/null
+++ b/node_modules/shiki/samples/html.sample
@@ -0,0 +1,27 @@
+<style>
+.Aligner {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+
+.Aligner-item {
+ max-width: 50%;
+}
+
+.Aligner-item--top {
+ align-self: flex-start;
+}
+
+.Aligner-item--bottom {
+ align-self: flex-end;
+}
+</style>
+
+<div class="Aligner">
+ <div class="Aligner-item Aligner-item--top">…</div>
+ <div class="Aligner-item">…</div>
+ <div class="Aligner-item Aligner-item--bottom">…</div>
+</div>
+
+<!-- From https://philipwalton.github.io/solved-by-flexbox/demos/vertical-centering/ -->
diff --git a/node_modules/shiki/samples/http.sample b/node_modules/shiki/samples/http.sample
new file mode 100644
index 0000000..bed4543
--- /dev/null
+++ b/node_modules/shiki/samples/http.sample
@@ -0,0 +1,16 @@
+POST /my-endpoint HTTP/1.1
+Host: api.example.com:8767
+Authorization: Bearer my-token-value
+content-type: application/json
+
+{
+ "name": "sample",
+ "time": "Wed, 21 Oct 2015 18:27:50 GMT"
+}
+
+GET /hello.txt HTTP/1.1
+User-Agent: curl/7.64.1
+Host: www.example.com
+Accept-Language: en, mi
+
+# from various places and https://www.rfc-editor.org/rfc/rfc9110.html#name-example-message-exchange \ No newline at end of file
diff --git a/node_modules/shiki/samples/imba.sample b/node_modules/shiki/samples/imba.sample
new file mode 100644
index 0000000..c8c5b39
--- /dev/null
+++ b/node_modules/shiki/samples/imba.sample
@@ -0,0 +1,55 @@
+global css body m:0 p:0 rd:lg bg:yellow1 of:hidden
+tag value-picker
+ css w:100px h:40px pos:rel
+ d:hgrid ji:center ai:center
+ css .item h:100% pos:rel tween:styles 0.1s ease-out
+
+ def update e
+ data = options[e.x]
+
+ <self @touch.stop.fit(0,options.length - 1,1)=update>
+ for item in options
+ <div.item[$value:{item}] .sel=(item==data)>
+
+tag stroke-picker < value-picker
+ css .item bg:black w:calc($value*1px) h:40% rd:sm
+ o:0.3 @hover:0.8 .sel:1
+
+tag color-picker < value-picker
+ css .item js:stretch rdt:lg bg:$value mx:2px scale-y.sel:1.5
+
+tag app-canvas
+ prop dpr = window.devicePixelRatio
+ prop state = {}
+
+ def draw e
+ let path = e.#path ||= new Path2D
+ let ctx = $canvas.getContext('2d')
+ path.lineTo(e.x * dpr,e.y * dpr)
+ ctx.lineWidth = state.stroke * dpr
+ ctx.strokeStyle = state.color
+ ctx.stroke(path)
+
+ def resized e
+ $canvas.width = offsetWidth * dpr
+ $canvas.height = offsetHeight * dpr
+
+ <self @resize=resized @touch.prevent.moved.fit(self)=draw>
+ <canvas$canvas[pos:abs w:100% h:100%]>
+
+const strokes = [1,2,3,5,8,12]
+const colors = ['#F59E0B','#10B981','#3B82F6','#8B5CF6']
+const state = {stroke: 5, color: '#3B82F6'}
+
+tag App
+ <self>
+ <div[ta:center pt:20 o:0.2 fs:xl]> 'draw here'
+ <app-canvas[pos:abs inset:0] state=state>
+ <div.tools[pos:abs b:0 w:100% d:hgrid ja:center]>
+ <stroke-picker options=strokes bind=state.stroke>
+ <color-picker options=colors bind=state.color>
+
+imba.mount <App[pos:abs inset:0]>
+
+# from https://imba.io
+# run online at https://scrimba.com/scrim/cPPdD4Aq \ No newline at end of file
diff --git a/node_modules/shiki/samples/java.sample b/node_modules/shiki/samples/java.sample
new file mode 100644
index 0000000..547cfcc
--- /dev/null
+++ b/node_modules/shiki/samples/java.sample
@@ -0,0 +1,10 @@
+public class HelloWorld {
+
+ public static void main(String[] args) {
+ // Prints "Hello, World" to the terminal window.
+ System.out.println("Hello, World");
+ }
+
+}
+
+// From https://introcs.cs.princeton.edu/java/11hello/HelloWorld.java.html \ No newline at end of file
diff --git a/node_modules/shiki/samples/javascript.sample b/node_modules/shiki/samples/javascript.sample
new file mode 100644
index 0000000..1e0434d
--- /dev/null
+++ b/node_modules/shiki/samples/javascript.sample
@@ -0,0 +1,26 @@
+// posts will be populated at build time by getStaticProps()
+function Blog({ posts }) {
+ return (
+ <ul>
+ {posts.map((post) => (
+ <li>{post.title}</li>
+ ))}
+ </ul>
+ )
+}
+
+// This function gets called at build time on server-side.
+export async function getStaticProps() {
+ const res = await fetch('https://.../posts')
+ const posts = await res.json()
+
+ return {
+ props: {
+ posts
+ }
+ }
+}
+
+export default Blog
+
+// From https://nextjs.org/docs/basic-features/data-fetching
diff --git a/node_modules/shiki/samples/jison.sample b/node_modules/shiki/samples/jison.sample
new file mode 100644
index 0000000..5a9f194
--- /dev/null
+++ b/node_modules/shiki/samples/jison.sample
@@ -0,0 +1,61 @@
+/* description: Parses end executes mathematical expressions. */
+
+/* lexical grammar */
+%lex
+
+%%
+\s+ /* skip whitespace */
+[0-9]+("."[0-9]+)?\b return 'NUMBER';
+"*" return '*';
+"/" return '/';
+"-" return '-';
+"+" return '+';
+"^" return '^';
+"(" return '(';
+")" return ')';
+"PI" return 'PI';
+"E" return 'E';
+<<EOF>> return 'EOF';
+
+/lex
+
+/* operator associations and precedence */
+
+%left '+' '-'
+%left '*' '/'
+%left '^'
+%left UMINUS
+
+%start expressions
+
+%% /* language grammar */
+
+expressions
+ : e EOF
+ {print($1); return $1;}
+ ;
+
+e
+ : e '+' e
+ {$$ = $1+$3;}
+ | e '-' e
+ {$$ = $1-$3;}
+ | e '*' e
+ {$$ = $1*$3;}
+ | e '/' e
+ {$$ = $1/$3;}
+ | e '^' e
+ {$$ = Math.pow($1, $3);}
+ | '-' e %prec UMINUS
+ {$$ = -$2;}
+ | '(' e ')'
+ {$$ = $2;}
+ | NUMBER
+ {$$ = Number(yytext);}
+ | E
+ {$$ = Math.E;}
+ | PI
+ {$$ = Math.PI;}
+ ;
+
+/* From https://gerhobbelt.github.io/jison/docs/#specifying-a-language */ \ No newline at end of file
diff --git a/node_modules/shiki/samples/json5.sample b/node_modules/shiki/samples/json5.sample
new file mode 100644
index 0000000..67f9d41
--- /dev/null
+++ b/node_modules/shiki/samples/json5.sample
@@ -0,0 +1,41 @@
+// This file is written in JSON5 syntax, naturally, but npm needs a regular
+// JSON file, so compile via `npm run build`. Be sure to keep both in sync!
+
+{
+ name: 'json5',
+ version: '0.5.0',
+ description: 'JSON for the ES5 era.',
+ keywords: ['json', 'es5'],
+ author: 'Aseem Kishore <aseem.kishore@gmail.com>',
+ contributors: [
+ // TODO: Should we remove this section in favor of GitHub's list?
+ // https://github.com/aseemk/json5/contributors
+ 'Max Nanasy <max.nanasy@gmail.com>',
+ 'Andrew Eisenberg <andrew@eisenberg.as>',
+ 'Jordan Tucker <jordanbtucker@gmail.com>',
+ ],
+ main: 'lib/json5.js',
+ bin: 'lib/cli.js',
+ files: ["lib/"],
+ dependencies: {},
+ devDependencies: {
+ gulp: "^3.9.1",
+ 'gulp-jshint': "^2.0.0",
+ jshint: "^2.9.1",
+ 'jshint-stylish': "^2.1.0",
+ mocha: "^2.4.5"
+ },
+ scripts: {
+ build: 'node ./lib/cli.js -c package.json5',
+ test: 'mocha --ui exports --reporter spec',
+ // TODO: Would it be better to define these in a mocha.opts file?
+ },
+ homepage: 'http://json5.org/',
+ license: 'MIT',
+ repository: {
+ type: 'git',
+ url: 'https://github.com/aseemk/json5.git',
+ },
+}
+
+https://github.com/mrmlnc/vscode-json5/blob/master/syntaxes/json5.json \ No newline at end of file
diff --git a/node_modules/shiki/samples/jssm.sample b/node_modules/shiki/samples/jssm.sample
new file mode 100644
index 0000000..87e6ca0
--- /dev/null
+++ b/node_modules/shiki/samples/jssm.sample
@@ -0,0 +1,22 @@
+
+machine_name : "BGP";
+machine_reference : "http://www.inetdaemon.com/tutorials/internet/ip/routing/bgp/operation/finite_state_model.shtml";
+machine_version : 1.0.0;
+
+machine_author : "John Haugeland <stonecypher@gmail.com>";
+machine_license : MIT;
+
+jssm_version : >= 5.0.0;
+
+
+
+ Idle -> [Idle Connect];
+ Connect -> [Idle Connect OpenSent Active];
+ Active -> [Idle Connect OpenSent Active];
+ OpenSent -> [Idle Active OpenConfirm];
+OpenConfirm -> [Idle OpenSent OpenConfirm Established];
+Established -> [Idle Established];
+
+
+
+# from https://github.com/StoneCypher/jssm/blob/main/src/machines/linguist/bgp.fsl \ No newline at end of file
diff --git a/node_modules/shiki/samples/kotlin.sample b/node_modules/shiki/samples/kotlin.sample
new file mode 100644
index 0000000..9978294
--- /dev/null
+++ b/node_modules/shiki/samples/kotlin.sample
@@ -0,0 +1,149 @@
+package com.example.kotlin
+
+import java.util.Random as Rand
+import android.support.v7.app.AppCompatActivity
+import org.amshove.kluent.`should equal` as Type
+
+fun main(@NonNull args: Array<String>) {
+ println("Hello Kotlin! ${/*test*/}")
+
+ val map = mutableMapOf("A" to "B")
+
+ thing.apply("random string here \n\t\r")
+ thing.let { test: -> }
+
+ val string = "${getThing()}"
+}
+
+val items = listOf("apple", "banana", "kiwifruit")
+var x = 9
+const val CONSTANT = 99
+
+@get:Rule
+val activityRule = ActivityTestRule(SplashActivity::class.java)
+
+val oneMillion = 1_000_000
+val creditCardNumber = 1234_5678_9012_3456L
+val socialSecurityNumber = 999_99_9999L
+val hexBytes = 0xFF_EC_DE_5E
+val float = 0.043_331F
+val bytes = 0b11010010_01101001_10010100_10010010
+
+if(test == "") {
+ 1 and 2 not 3
+} else {
+
+}
+
+fun <T> foo() {
+ val x = Bar::class
+ val y = hello?.test
+}
+
+suspend fun <T, U> SequenceBuilder<Int>.yieldIfOdd(x: Int) {
+ if (x % 2 != 0) yield(x)
+}
+
+val function = fun(@Inject x: Int, y: Int, lamda: (A, B) -> Unit): Int {
+ test.test()
+ return x + y;
+}
+
+abstract fun onCreate(savedInstanceState: Bundle?)
+
+fun isOdd(x: Int) = x % 2 != 0
+fun isOdd(s: String) = s == "brillig" || s == "slithy" || s == "tove"
+
+val numbers = listOf(1, 2, 3)
+println(numbers.filter(::isOdd))
+
+fun foo(node: Node?): String? {
+ val parent = node.getParent() ?: return null
+}
+
+interface Greetable {
+ fun greet()
+}
+
+open class Greeter: Greetable {
+ companion object {
+ private const val GREETING = "Hello, World!"
+ }
+
+ override fun greet() {
+ println(GREETING)
+ }
+}
+
+expect class Foo(bar: String) {
+ fun frob()
+}
+
+actual class Foo actual constructor(val bar: String) {
+ actual fun frob() {
+ println("Frobbing the $bar")
+ }
+}
+
+expect fun formatString(source: String, vararg args: Any): String
+expect annotation class Test
+
+actual fun formatString(source: String, vararg args: Any) = String.format(source, args)
+actual typealias Test = org.junit.Test
+
+sealed class Expr
+data class Const(val number: Double) : Expr()
+data class Sum(val e1: Expr, val e2: Expr) : Expr()
+object NotANumber : Expr()
+
+@file:JvmName("Foo")
+private sealed class InjectedClass<T, U> @Inject constructor(
+ val test: Int = 50,
+ var anotherVar: String = "hello world"
+) : SomeSuperClass(test, anotherVar) {
+
+ init {
+ //
+ }
+
+ constructor(param1: String, param2: Int): this(param1, param2) {
+ //
+ }
+
+ companion object {
+ //
+ }
+}
+annotation class Suspendable
+val f = @Suspendable { Fiber.sleep(10) }
+
+
+private data class Foo(
+ /**
+ * ```
+ * ($)
+ * ```
+ */
+ val variables: Map<String, String>
+)
+
+data class Response(@SerializedName("param1") val param1: String,
+ @SerializedName("param2") val param2: String,
+ @SerializedName("param3") val param3: String) {
+}
+
+object DefaultListener : MouseAdapter() {
+ override fun mouseClicked(e: MouseEvent) { }
+
+ override fun mouseEntered(e: MouseEvent) { }
+}
+
+class Feature : Node("Title", "Content", "Description") {
+
+}
+
+class Outer {
+ inner class Inner {}
+}
+
+// From: https://github.com/nishtahir/language-kotlin/blob/master/snapshots/corpus.kt \ No newline at end of file
diff --git a/node_modules/shiki/samples/kusto.sample b/node_modules/shiki/samples/kusto.sample
new file mode 100644
index 0000000..d2c0d41
--- /dev/null
+++ b/node_modules/shiki/samples/kusto.sample
@@ -0,0 +1,7 @@
+let dt = datetime(2017-01-29 09:00:05);
+print
+v1=format_datetime(dt,'yy-MM-dd [HH:mm:ss]'),
+v2=format_datetime(dt, 'yyyy-M-dd [H:mm:ss]'),
+v3=format_datetime(dt, 'yy-MM-dd [hh:mm:ss tt]')
+
+// From https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/
diff --git a/node_modules/shiki/samples/liquid.sample b/node_modules/shiki/samples/liquid.sample
new file mode 100644
index 0000000..00d3906
--- /dev/null
+++ b/node_modules/shiki/samples/liquid.sample
@@ -0,0 +1,14 @@
+<h3>Recommended Products</h3>
+<ul class="recommended_products">
+ {% assign recommended_products = product.metafields.my_fields.rec_products.value %}
+ {% for product in recommended_products %}
+ <li>
+ <a href="{{ product.url }}">
+ {{ product.featured_image | image_url: width: 400 | image_tag: loading: 'lazy' }}
+ {{product.title}}
+ </a>
+ </li>
+ {% endfor %}
+</ul>
+
+{%- comment -%} From https://www.codeshopify.com/blog_posts/related-products-with-product_list-sections-metafields {%- endcomment -%}
diff --git a/node_modules/shiki/samples/narrat.sample b/node_modules/shiki/samples/narrat.sample
new file mode 100644
index 0000000..715ed9a
--- /dev/null
+++ b/node_modules/shiki/samples/narrat.sample
@@ -0,0 +1,92 @@
+quest_demo:
+ set_button shopButton true
+ set_button parkButton greyed
+ jump bread_quest
+
+bread_quest:
+ choice:
+ talk helper idle "Can you get 2 pieces of bread for me?"
+ "Yes":
+ talk helper idle "Thanks, that's very nice!"
+ talk helper idle "I'll be waiting for you at the park"
+ jump bread_start
+ "No":
+ talk helper idle "Oh, okay"
+ jump quest_demo
+
+bread_start:
+ start_quest breadShopping
+ talk inner idle "Time to go to the shop to buy some bread then."
+ set_screen map
+ set_button shopButton true
+
+shopButton:
+ // set_screen default
+ "You visit the bread shop"
+ talk shopkeeper idle "Hello, I'm a little baker selling bread and drinks!"
+ set data.breadPrice 5
+ jump shop_menu
+
+parkButton:
+ choice:
+ talk helper idle "Ah, so do you have my bread?"
+ "Yes!" if (>= $items.bread.amount 2):
+ talk helper idle "Thanks a lot!"
+ add_item bread -2
+ complete_objective breadShopping delivery
+ complete_quest breadShopping
+ set_button parkButton false
+ jump demo_end
+ "No :(":
+ talk helper idle "Oh okay"
+
+shop_menu:
+ choice:
+ talk shopkeeper idle "So, do you want some bread?"
+ "Buy bread (costs %{$$data.breadPrice})" if (>= $stats.money.value $data.breadPrice):
+ add_item bread 1
+ if (== $data.breadPrice 5):
+ add_stat money -5
+ else:
+ add_stat money -4
+ jump map_update
+ roll bread_haggle haggling 50 "Try to haggle for bread" hideAfterRoll:
+ success "You explain that helper cat needs bread to feed his poor family":
+ add_xp haggling 10
+ set data.breadPrice 4
+ talk shopkeeper idle "I guess I can sell you bread for 4 coins"
+ jump shop_menu
+ failure "You try to pity trip the shopkeeper but he won't bulge":
+ add_xp haggling 5
+ talk shopkeeper idle "The price is 5 coins, nothing less, nothing more."
+ jump shop_menu
+ "Exit":
+ jump map_update
+
+show_map:
+ set_button parkButton false
+ set_button shopButton true
+ set_screen map
+
+map_update:
+ set_button parkButton false
+ set_button shopButton true
+ log $items.bread
+ if (>= $items.bread.amount 2):
+ complete_objective breadShopping bread
+ talk inner idle "I've got enough bread now, I'm going to go to the park."
+ start_objective breadShopping delivery
+ set_screen map
+ set_button parkButton true
+ set_button shopButton false
+ else:
+ talk inner idle "Hmm, I still need to buy more bread for helper cat."
+ set_screen map
+
+eat_bread:
+ talk player idle "hmm, bread"
+
+read_book:
+ talk inner idle "It's full of ocult rituals. I'm not sure what they are, but I'm sure they are useful."
+
+// From: https://github.com/liana-p/narrat-engine/blob/main/packages/narrat/examples/games/demo/data/quest.narrat \ No newline at end of file
diff --git a/node_modules/shiki/samples/nextflow.sample b/node_modules/shiki/samples/nextflow.sample
new file mode 100644
index 0000000..a14adac
--- /dev/null
+++ b/node_modules/shiki/samples/nextflow.sample
@@ -0,0 +1,63 @@
+/*
+ * The following pipeline parameters specify the reference genomes
+ * and read pairs and can be provided as command line options
+ */
+params.reads = "$baseDir/data/ggal/ggal_gut_{1,2}.fq"
+params.transcriptome = "$baseDir/data/ggal/ggal_1_48850000_49020000.Ggal71.500bpflank.fa"
+params.outdir = "results"
+
+workflow {
+ read_pairs_ch = channel.fromFilePairs( params.reads, checkIfExists: true )
+
+ INDEX(params.transcriptome)
+ FASTQC(read_pairs_ch)
+ QUANT(INDEX.out, read_pairs_ch)
+}
+
+process INDEX {
+ tag "$transcriptome.simpleName"
+
+ input:
+ path transcriptome
+
+ output:
+ path 'index'
+
+ script:
+ """
+ salmon index --threads $task.cpus -t $transcriptome -i index
+ """
+}
+
+process FASTQC {
+ tag "FASTQC on $sample_id"
+ publishDir params.outdir
+
+ input:
+ tuple val(sample_id), path(reads)
+
+ output:
+ path "fastqc_${sample_id}_logs"
+
+ script:
+ """
+ fastqc.sh "$sample_id" "$reads"
+ """
+}
+
+process QUANT {
+ tag "$pair_id"
+ publishDir params.outdir
+
+ input:
+ path index
+ tuple val(pair_id), path(reads)
+
+ output:
+ path pair_id
+
+ script:
+ """
+ salmon quant --threads $task.cpus --libType=U -i $index -1 ${reads[0]} -2 ${reads[1]} -o $pair_id
+ """
+} \ No newline at end of file
diff --git a/node_modules/shiki/samples/powerquery.sample b/node_modules/shiki/samples/powerquery.sample
new file mode 100644
index 0000000..27d9143
--- /dev/null
+++ b/node_modules/shiki/samples/powerquery.sample
@@ -0,0 +1,22 @@
+// Transforms a table into markdown syntax
+(Table as table) =>
+ let
+ Source = Table,
+ TableValues = Table.AddColumn(
+ Source, "Custom", each Text.Combine(Record.FieldValues(_), " | ")
+ ),
+ HyphenLine = Text.Combine(
+ List.Transform(
+ Table.ColumnNames(Source), each Text.Repeat("-", Text.Length(_))
+ ),
+ " | "
+ ),
+ CombineList = List.Combine(
+ {{Text.Combine(Table.ColumnNames(Source), " | ")},
+ {HyphenLine}, TableValues[Custom]}
+ ),
+ TransferToMarkdown = Text.Combine(CombineList, "#(lf)")
+ in
+ TransferToMarkdown
+
+// From https://github.com/mogulargmbh/powerquerysnippets/blob/main/snippets/Table_ToMarkdown.pq
diff --git a/node_modules/shiki/samples/prisma.sample b/node_modules/shiki/samples/prisma.sample
new file mode 100644
index 0000000..e5bf4ea
--- /dev/null
+++ b/node_modules/shiki/samples/prisma.sample
@@ -0,0 +1,41 @@
+datasource db {
+ provider = "postgresql"
+ url = env("DATABASE_URL")
+}
+
+generator client {
+ provider = "prisma-client-js"
+}
+
+/// Post including an author and content.
+model Post {
+ id Int @default(autoincrement()) @id
+ content String?
+ published Boolean @default(false)
+ author User? @relation(fields: [authorId], references: [id])
+ authorId Int?
+}
+
+// Documentation for this model.
+model User {
+ id Int @default(autoincrement()) @id
+ email String @unique
+ name String?
+ posts Post[]
+ specialName UserName
+ test Test
+}
+
+/// This is an enum specifying the UserName.
+enum UserName {
+ Fred
+ Eric
+}
+
+// This is a test enum.
+enum Test {
+ TestUno
+ TestDue
+}
+
+// taken from https://github.com/prisma/language-tools/blob/master/packages/vscode/testFixture/hover.prisma
diff --git a/node_modules/shiki/samples/proto.sample b/node_modules/shiki/samples/proto.sample
new file mode 100644
index 0000000..f92e9e8
--- /dev/null
+++ b/node_modules/shiki/samples/proto.sample
@@ -0,0 +1,45 @@
+syntax = "proto3";
+
+package mypackage.books.v1;
+
+import "google/protobuf/empty.proto";
+import "google/api/field_behavior.proto";
+
+import "google/api/annotations.proto";
+
+option go_package = "mypackage.books.v1/books";
+
+// Book service
+service BooksService {
+ // Get a book.
+ rpc GetBook(GetBookRequest) returns (Book) {
+ option (google.api.http) = {
+ get: "/resources/store/v1/{name=books/*}"
+ };
+ }
+}
+
+// The definition of a book resource.
+message Book {
+ // The name of the book.
+ // Format: books/{book}.
+ string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // The display name of the book.
+ string display_name = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // The authors of the book.
+ repeated string authors = 3 [(google.api.field_behavior) = REQUIRED];
+
+ // The publisher of the book
+ string publisher = 4 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Request message for [play.me.resources.books.v1.BooksService.GetBook].
+message GetBookRequest {
+ // The book name is the unique identifier across organisations.
+ // Format: books/{book}
+ string name = 1 [(google.api.field_behavior) = REQUIRED];
+}
+
+// From https://alis.build/guides/how-to-guides/make-your-first-request.html#book-repository-example \ No newline at end of file
diff --git a/node_modules/shiki/samples/python.sample b/node_modules/shiki/samples/python.sample
new file mode 100644
index 0000000..4448995
--- /dev/null
+++ b/node_modules/shiki/samples/python.sample
@@ -0,0 +1,12 @@
+def fib(n): # write Fibonacci series up to n
+ """Print a Fibonacci series up to n."""
+ a, b = 0, 1
+ while a < n:
+ print(a, end=' ')
+ a, b = b, a+b
+ print()
+
+# Now call the function we just defined:
+fib(2000)
+
+# From https://docs.python.org/3/tutorial/controlflow.html#defining-functions \ No newline at end of file
diff --git a/node_modules/shiki/samples/reg.sample b/node_modules/shiki/samples/reg.sample
new file mode 100644
index 0000000..2fe60bf
--- /dev/null
+++ b/node_modules/shiki/samples/reg.sample
@@ -0,0 +1,26 @@
+Windows Registry Editor Version 5.00
+
+
+; WARNING: before run replace PATH_TO_APP with correct value
+; Example: C:\\Anaconda3
+
+[HKEY_CLASSES_ROOT\Directory\shell\AnacondaJupyterNotebook]
+; This will make it appear when you right click ON a folder
+; The "Icon" line can be removed if you don't want the icon to appear
+@="&Jupyter Notebook There"
+"Icon"="\"PATH_TO_APP\\Menu\\jupyter.ico""
+
+[HKEY_CLASSES_ROOT\Directory\shell\AnacondaJupyterNotebook\command]
+@="cmd /K pushd \"%1\" && \"PATH_TO_APP\\Scripts\\activate.bat\" && jupyter-notebook"
+
+
+[HKEY_CLASSES_ROOT\Directory\Background\shell\AnacondaJupyterNotebook]
+; This will make it appear when you right click INSIDE a folder
+; The "Icon" line can be removed if you don't want the icon to appear
+@="&Jupyter Notebook Here"
+"Icon"="\"PATH_TO_APP\\Menu\\jupyter.ico\""
+
+[HKEY_CLASSES_ROOT\Directory\Background\shell\AnacondaJupyterNotebook\command]
+@="cmd /K \"PATH_TO_APP\\Scripts\\activate.bat\" && jupyter-notebook"
+
+; From https://github.com/NickVeld/win-registry-snippets/blob/main/AnacondaJupyterNotebookHere.reg
diff --git a/node_modules/shiki/samples/rel.sample b/node_modules/shiki/samples/rel.sample
new file mode 100644
index 0000000..43c173f
--- /dev/null
+++ b/node_modules/shiki/samples/rel.sample
@@ -0,0 +1,66 @@
+module person
+ def ssn = 123-45-6789
+ module name
+ def first = "John"
+ def middle = "Q"
+ def last = "Public"
+ end
+ module birth
+ def city = "Pittsburg"
+ def state = "PA"
+ def country = "USA"
+ def date = parse_date["2000-01-01", "Y-m-d"]
+ end
+end
+
+module mymodule
+ def R = {1; 2}
+ ic {count[R] = 2}
+end
+
+@inline
+module my_stats[R]
+ def my_minmax = (min[R], max[R])
+ def my_mean = mean[R]
+ def my_median = median[R]
+end
+
+@inline
+module BipartiteGraph[M, N]
+ def node = M; N
+ def edge = M, N
+end
+
+@inline
+module CycleGraph[N]
+ def node = N
+ def edge(a in N, b in N) =
+ sort[N](x, a)
+ and sort[N](y, b)
+ and y = x%count[N] + 1
+ from x, y
+end
+
+@inline
+module GraphProperties[G]
+ def outdegree[v in G:node] = count[v1 : G:edge(v, v1)] <++ 0
+ def indegree[v in G:node] = count[v1 : G:edge(v1, v)] <++ 0
+ def edge_count = count[G:edge] <++ 0
+end
+
+def cg = CompleteGraph[range[1 ,5, 1]]
+def cg_props = GraphProperties[cg]
+
+def bg = BipartiteGraph[{1; 2}, {3; 4; 5}]
+def bg_props = GraphProperties[bg]
+
+def cycleg = CycleGraph[{"a"; "b"; "c"; "d" ; "e"}]
+def cycleg_props = GraphProperties[cycleg]
+
+module output
+ def complete_edge_count = cg_props:edge_count
+ def bipartite_edge_count = bg_props:edge_count
+ def cycle_edge_count = cycleg_props:edge_count
+end
+
+# From https://docs.relational.ai/rel/concepts/modules/ \ No newline at end of file
diff --git a/node_modules/shiki/samples/ruby.sample b/node_modules/shiki/samples/ruby.sample
new file mode 100644
index 0000000..1571893
--- /dev/null
+++ b/node_modules/shiki/samples/ruby.sample
@@ -0,0 +1,21 @@
+class LotteryTicket
+
+ NUMERIC_RANGE = 1..25
+
+ attr_reader :picks, :purchased
+
+ def initialize( *picks )
+ if picks.length != 3
+ raise ArgumentError, "three numbers must be picked"
+ elsif picks.uniq.length != 3
+ raise ArgumentError, "the three picks must be different numbers"
+ elsif picks.detect { |p| not NUMERIC_RANGE === p }
+ raise ArgumentError, "the three picks must be numbers between 1 and 25"
+ end
+ @picks = picks
+ @purchased = Time.now
+ end
+
+end
+
+# From https://poignant.guide/book/chapter-5.html \ No newline at end of file
diff --git a/node_modules/shiki/samples/sparql.sample b/node_modules/shiki/samples/sparql.sample
new file mode 100644
index 0000000..07b0925
--- /dev/null
+++ b/node_modules/shiki/samples/sparql.sample
@@ -0,0 +1,8 @@
+PREFIX foaf: <http://xmlns.com/foaf/0.1/>
+SELECT ?name (COUNT(?friend) AS ?count)
+WHERE {
+ ?person foaf:name ?name .
+ ?person foaf:knows ?friend .
+} GROUP BY ?person ?name
+
+# From https://www.w3.org/TR/sparql11-overview/#sparql11-query \ No newline at end of file
diff --git a/node_modules/shiki/samples/stata.sample b/node_modules/shiki/samples/stata.sample
new file mode 100644
index 0000000..b6376c4
--- /dev/null
+++ b/node_modules/shiki/samples/stata.sample
@@ -0,0 +1,30 @@
+capture program drop exit_message
+program exit_message
+ syntax, rc(int) progname(str) start_time(str) [CAPture]
+ local end_time "$S_TIME $S_DATE"
+ local time "Start: `start_time'" _n(1) "End: `end_time'"
+ di ""
+ if (`rc' == 0) {
+ di "End: $S_TIME $S_DATE"
+ local paux ran
+ local message "`progname' finished running" _n(2) "`time'"
+ local subject "`progname' `paux'"
+ }
+ else if ("`capture'" == "") {
+ di "WARNING: $S_TIME $S_DATE"
+ local paux ran with non-0 exit status
+ local message "`progname' ran but Stata gave error code r(`rc')" _n(2) "`time'"
+ local subject "`progname' `paux'"
+ }
+ else {
+ di "ERROR: $S_TIME $S_DATE"
+ local paux ran with errors
+ local message "`progname' stopped with error code r(`rc')" _n(2) "`time'"
+ local subject "`progname' `paux'"
+ }
+ di "`subject'"
+ di ""
+ di "`message'"
+end
+
+* From https://github.com/mcaceresb/stata-gtools/blob/fad519ef0454936d450802ac732728ba953957ac/src/test/gtools_tests.do
diff --git a/node_modules/shiki/samples/tasl.sample b/node_modules/shiki/samples/tasl.sample
new file mode 100644
index 0000000..932ed5b
--- /dev/null
+++ b/node_modules/shiki/samples/tasl.sample
@@ -0,0 +1,25 @@
+# This is a tasl schema!
+namespace s http://schema.org/
+
+# classes are like tables, except they
+# can be arbitrary algebraic data types,
+# not just columns of primitives.
+class s:Person :: {
+ s:name -> string
+ s:email -> ? uri
+ s:spouse -> ? * s:Person
+ s:gender -> [
+ s:Male
+ s:Female
+ s:value <- string
+ ]
+}
+
+# references are a primitive type that
+# point to other classes in the schema,
+# just like foreign keys.
+class s:Book :: {
+ s:name -> string
+ s:isbn -> uri
+ s:author -> * s:Person
+}
diff --git a/node_modules/shiki/samples/tsx.sample b/node_modules/shiki/samples/tsx.sample
new file mode 100644
index 0000000..1e0434d
--- /dev/null
+++ b/node_modules/shiki/samples/tsx.sample
@@ -0,0 +1,26 @@
+// posts will be populated at build time by getStaticProps()
+function Blog({ posts }) {
+ return (
+ <ul>
+ {posts.map((post) => (
+ <li>{post.title}</li>
+ ))}
+ </ul>
+ )
+}
+
+// This function gets called at build time on server-side.
+export async function getStaticProps() {
+ const res = await fetch('https://.../posts')
+ const posts = await res.json()
+
+ return {
+ props: {
+ posts
+ }
+ }
+}
+
+export default Blog
+
+// From https://nextjs.org/docs/basic-features/data-fetching
diff --git a/node_modules/shiki/samples/turtle.sample b/node_modules/shiki/samples/turtle.sample
new file mode 100644
index 0000000..9f61f5e
--- /dev/null
+++ b/node_modules/shiki/samples/turtle.sample
@@ -0,0 +1,16 @@
+ @prefix foaf: <http://xmlns.com/foaf/0.1/> .
+ @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
+
+ <http://example.org/alice#me> a foaf:Person .
+ <http://example.org/alice#me> foaf:name "Alice" .
+ <http://example.org/alice#me> foaf:mbox <mailto:alice@example.org> .
+ <http://example.org/alice#me> foaf:knows <http://example.org/bob#me> .
+ <http://example.org/bob#me> foaf:knows <http://example.org/alice#me> .
+ <http://example.org/bob#me> foaf:name "Bob" .
+ <http://example.org/alice#me> foaf:knows <http://example.org/charlie#me> .
+ <http://example.org/charlie#me> foaf:knows <http://example.org/alice#me> .
+ <http://example.org/charlie#me> foaf:name "Charlie" .
+ <http://example.org/alice#me> foaf:knows <http://example.org/snoopy> .
+ <http://example.org/snoopy> foaf:name "Snoopy"@en .
+
+# From https://www.w3.org/TR/sparql11-overview/#Example \ No newline at end of file
diff --git a/node_modules/shiki/samples/v.sample b/node_modules/shiki/samples/v.sample
new file mode 100644
index 0000000..4df1097
--- /dev/null
+++ b/node_modules/shiki/samples/v.sample
@@ -0,0 +1,38 @@
+// This program displays the fibonacci sequence
+import os
+
+fn main() {
+ // Check for user input
+ if os.args.len != 2 {
+ println('usage: fibonacci [rank]')
+
+ return
+ }
+
+ // Parse first argument and cast it to int
+
+ stop := os.args[1].int()
+ // Can only calculate correctly until rank 92
+ if stop > 92 {
+ println('rank must be 92 or less')
+ return
+ }
+
+ // Three consecutive terms of the sequence
+ mut a := i64(0)
+ mut b := i64(0)
+ mut c := i64(1)
+ println(a + b + c)
+ for _ in 0 .. stop {
+ // Set a and b to the next term
+ a = b
+ b = c
+ // Compute the new term
+ c = a + b
+
+ // Print the new term
+ println(c)
+ }
+}
+
+// From https://github.com/vlang/v/blob/master/examples/fibonacci.v \ No newline at end of file
diff --git a/node_modules/shiki/samples/vyper.sample b/node_modules/shiki/samples/vyper.sample
new file mode 100644
index 0000000..839f9fc
--- /dev/null
+++ b/node_modules/shiki/samples/vyper.sample
@@ -0,0 +1,11 @@
+storedData: public(int128)
+
+@external
+def __init__(_x: int128):
+ self.storedData = _x
+
+@external
+def set(_x: int128):
+ self.storedData = _x
+
+# https://github.com/vyperlang/vyper/blob/master/examples/storage/storage.vy
diff --git a/node_modules/shiki/samples/wgsl.sample b/node_modules/shiki/samples/wgsl.sample
new file mode 100644
index 0000000..74f113a
--- /dev/null
+++ b/node_modules/shiki/samples/wgsl.sample
@@ -0,0 +1,19 @@
+struct CoolMaterial {
+ color: vec4<f32>,
+};
+
+@group(1) @binding(0)
+var<uniform> material: CoolMaterial;
+@group(1) @binding(1)
+var color_texture: texture_2d<f32>;
+@group(1) @binding(2)
+var color_sampler: sampler;
+
+@fragment
+fn fragment(
+ #import bevy_pbr::mesh_vertex_output
+) -> @location(0) vec4<f32> {
+ return material.color * textureSample(color_texture, color_sampler, uv);
+}
+
+// From https://bevyengine.org/news/bevy-0-8/ \ No newline at end of file
diff --git a/node_modules/shiki/samples/wolfram.sample b/node_modules/shiki/samples/wolfram.sample
new file mode 100644
index 0000000..bca1dd8
--- /dev/null
+++ b/node_modules/shiki/samples/wolfram.sample
@@ -0,0 +1,9 @@
+iStochasticityAssumptions [sm_List] :=
+ SquareMatrixQ[sm] && Element[DeleteDuplicates[Flatten[sm]], Reals] &&
+ Apply [And, Map[#>=0&, sm, {2}], {0, 1}] && Apply [And, Thread[Total[sm, {2}] == 1]]
+
+iStochasticityAssumptions[sm_SparseArray] := SquareMatrixQ[sm] &&
+ Apply[And, Thread[ DeleteDuplicates [ sm["NonzeroValues"] ~Join~ {sm["Background"]} ] >= 0 ] ] &&
+ Apply[And, Thread [Total [sm, {2}] = 1]]
+
+(* https://github.com/WolframResearch/vscode-wolfram/blob/master/docs/highlighting.png *)
diff --git a/node_modules/shiki/samples/zenscript.sample b/node_modules/shiki/samples/zenscript.sample
new file mode 100644
index 0000000..9f28b9b
--- /dev/null
+++ b/node_modules/shiki/samples/zenscript.sample
@@ -0,0 +1,44 @@
+import crafttweaker.api.BracketHandlers;
+
+val air = <item:minecraft:air>;
+val diamond = <item:minecraft:diamond>;
+var woodTypes = ["oak","spruce","birch","jungle","acacia","dark_oak"];
+
+for name in woodTypes {
+ val thing = BracketHandlers.getItem("minecraft:" + name + "_planks");
+ craftingTable.addShaped(name + "_diamond", diamond, [[air, thing], [thing, air]]);
+}
+
+function checkLeapYear(year as int) as bool {
+ if(year % 4 == 0) {
+ if(year % 100 == 0) {
+ if(year % 400 == 0) {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ return true;
+ }
+ } else {
+ return false;
+ }
+}
+
+print("Is 2000 a leap year: " ~ checkLeapYear(2000));
+print("Is 2004 a leap year: " ~ checkLeapYear(2004));
+print("Is 2100 a leap year: " ~ checkLeapYear(2100));
+print("Is 2012 a leap year: " ~ checkLeapYear(2012));
+
+
+//Note: this is a cleaner way
+function checkLeapYear2(year as int) as bool {
+ return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
+}
+
+print("Is 2000 a leap year (2nd function): " ~ checkLeapYear2(2000));
+print("Is 2004 a leap year (2nd function): " ~ checkLeapYear2(2004));
+print("Is 2100 a leap year (2nd function): " ~ checkLeapYear2(2100));
+print("Is 2012 a leap year (2nd function): " ~ checkLeapYear2(2012));
+
+# From https://github.com/CraftTweaker/CraftTweaker-Examples \ No newline at end of file
diff --git a/node_modules/shiki/themes/css-variables.json b/node_modules/shiki/themes/css-variables.json
new file mode 100644
index 0000000..6d3226d
--- /dev/null
+++ b/node_modules/shiki/themes/css-variables.json
@@ -0,0 +1,186 @@
+{
+ "name": "css-variables",
+ "type": "css",
+ "colors": {
+ "editor.foreground": "#000001",
+ "editor.background": "#000002",
+ "terminal.ansiBlack": "#A00000",
+ "terminal.ansiRed": "#A00001",
+ "terminal.ansiGreen": "#A00002",
+ "terminal.ansiYellow": "#A00003",
+ "terminal.ansiBlue": "#A00004",
+ "terminal.ansiMagenta": "#A00005",
+ "terminal.ansiCyan": "#A00006",
+ "terminal.ansiWhite": "#A00007",
+ "terminal.ansiBrightBlack": "#A00008",
+ "terminal.ansiBrightRed": "#A00009",
+ "terminal.ansiBrightGreen": "#A00010",
+ "terminal.ansiBrightYellow": "#A00011",
+ "terminal.ansiBrightBlue": "#A00012",
+ "terminal.ansiBrightMagenta": "#A00013",
+ "terminal.ansiBrightCyan": "#A00014",
+ "terminal.ansiBrightWhite": "#A00015"
+ },
+ "tokenColors": [
+ {
+ "settings": {
+ "foreground": "#000001"
+ }
+ },
+ {
+ "scope": [
+ "keyword.operator.accessor",
+ "meta.group.braces.round.function.arguments",
+ "meta.template.expression",
+ "markup.fenced_code meta.embedded.block"
+ ],
+ "settings": {
+ "foreground": "#000001"
+ }
+ },
+ {
+ "scope": "emphasis",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["strong", "markup.heading.markdown", "markup.bold.markdown"],
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": ["markup.italic.markdown"],
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "meta.link.inline.markdown",
+ "settings": {
+ "fontStyle": "underline",
+ "foreground": "#000004"
+ }
+ },
+ {
+ "scope": ["string", "markup.fenced_code", "markup.inline"],
+ "settings": {
+ "foreground": "#000005"
+ }
+ },
+ {
+ "scope": ["comment", "string.quoted.docstring.multi"],
+ "settings": {
+ "foreground": "#000006"
+ }
+ },
+ {
+ "scope": [
+ "constant.numeric",
+ "constant.language",
+ "constant.other.placeholder",
+ "constant.character.format.placeholder",
+ "variable.language.this",
+ "variable.other.object",
+ "variable.other.class",
+ "variable.other.constant",
+ "meta.property-name",
+ "meta.property-value",
+ "support"
+ ],
+ "settings": {
+ "foreground": "#000004"
+ }
+ },
+ {
+ "scope": [
+ "keyword",
+ "storage.modifier",
+ "storage.type",
+ "storage.control.clojure",
+ "entity.name.function.clojure",
+ "entity.name.tag.yaml",
+ "support.function.node",
+ "support.type.property-name.json",
+ "punctuation.separator.key-value",
+ "punctuation.definition.template-expression"
+ ],
+ "settings": {
+ "foreground": "#000007"
+ }
+ },
+ {
+ "scope": "variable.parameter.function",
+ "settings": {
+ "foreground": "#000008"
+ }
+ },
+ {
+ "scope": [
+ "support.function",
+ "entity.name.type",
+ "entity.other.inherited-class",
+ "meta.function-call",
+ "meta.instance.constructor",
+ "entity.other.attribute-name",
+ "entity.name.function",
+ "constant.keyword.clojure"
+ ],
+ "settings": {
+ "foreground": "#000009"
+ }
+ },
+ {
+ "scope": [
+ "entity.name.tag",
+ "string.quoted",
+ "string.regexp",
+ "string.interpolated",
+ "string.template",
+ "string.unquoted.plain.out.yaml",
+ "keyword.other.template"
+ ],
+ "settings": {
+ "foreground": "#000010"
+ }
+ },
+ {
+ "scope": [
+ "punctuation.definition.arguments",
+ "punctuation.definition.dict",
+ "punctuation.separator",
+ "meta.function-call.arguments"
+ ],
+ "settings": {
+ "foreground": "#000011"
+ }
+ },
+ {
+ "name": "[Custom] Markdown links",
+ "scope": ["markup.underline.link", "punctuation.definition.metadata.markdown"],
+ "settings": {
+ "foreground": "#000012"
+ }
+ },
+ {
+ "name": "[Custom] Markdown list",
+ "scope": ["beginning.punctuation.definition.list.markdown"],
+ "settings": {
+ "foreground": "#000005"
+ }
+ },
+ {
+ "name": "[Custom] Markdown punctuation definition brackets",
+ "scope": [
+ "punctuation.definition.string.begin.markdown",
+ "punctuation.definition.string.end.markdown",
+ "string.other.link.title.markdown",
+ "string.other.link.description.markdown"
+ ],
+ "settings": {
+ "foreground": "#000007"
+ }
+ }
+ ]
+}
diff --git a/node_modules/shiki/themes/dark-plus.json b/node_modules/shiki/themes/dark-plus.json
new file mode 100644
index 0000000..1503076
--- /dev/null
+++ b/node_modules/shiki/themes/dark-plus.json
@@ -0,0 +1,570 @@
+{
+ "$schema": "vscode://schemas/color-theme",
+ "name": "dark-plus",
+ "tokenColors": [
+ {
+ "settings": {
+ "foreground": "#D4D4D4"
+ }
+ },
+ {
+ "scope": ["meta.embedded", "source.groovy.embedded", "string meta.image.inline.markdown"],
+ "settings": {
+ "foreground": "#D4D4D4"
+ }
+ },
+ {
+ "scope": "emphasis",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "strong",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "header",
+ "settings": {
+ "foreground": "#000080"
+ }
+ },
+ {
+ "name": "Comments",
+ "scope": ["comment", "string.quoted.docstring"],
+ "settings": {
+ "foreground": "#6A9955"
+ }
+ },
+ {
+ "scope": "constant.language",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": [
+ "constant.numeric",
+ "variable.other.enummember",
+ "keyword.operator.plus.exponent",
+ "keyword.operator.minus.exponent"
+ ],
+ "settings": {
+ "foreground": "#b5cea8"
+ }
+ },
+ {
+ "scope": "constant.regexp",
+ "settings": {
+ "foreground": "#646695"
+ }
+ },
+ {
+ "scope": "entity.name.tag",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "entity.name.tag.css",
+ "settings": {
+ "foreground": "#d7ba7d"
+ }
+ },
+ {
+ "scope": "entity.other.attribute-name",
+ "settings": {
+ "foreground": "#9cdcfe"
+ }
+ },
+ {
+ "scope": [
+ "entity.other.attribute-name.class.css",
+ "entity.other.attribute-name.class.mixin.css",
+ "entity.other.attribute-name.id.css",
+ "entity.other.attribute-name.parent-selector.css",
+ "entity.other.attribute-name.pseudo-class.css",
+ "entity.other.attribute-name.pseudo-element.css",
+ "source.css.less entity.other.attribute-name.id",
+ "entity.other.attribute-name.scss"
+ ],
+ "settings": {
+ "foreground": "#d7ba7d"
+ }
+ },
+ {
+ "scope": "invalid",
+ "settings": {
+ "foreground": "#f44747"
+ }
+ },
+ {
+ "scope": "markup.underline",
+ "settings": {
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "scope": "markup.bold",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "markup.heading",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "markup.italic",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "markup.strikethrough",
+ "settings": {
+ "fontStyle": "strikethrough"
+ }
+ },
+ {
+ "scope": "markup.inserted",
+ "settings": {
+ "foreground": "#b5cea8"
+ }
+ },
+ {
+ "scope": "markup.deleted",
+ "settings": {
+ "foreground": "#ce9178"
+ }
+ },
+ {
+ "scope": "markup.changed",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "punctuation.definition.quote.begin.markdown",
+ "settings": {
+ "foreground": "#6A9955"
+ }
+ },
+ {
+ "scope": "punctuation.definition.list.begin.markdown",
+ "settings": {
+ "foreground": "#6796e6"
+ }
+ },
+ {
+ "scope": "markup.inline.raw",
+ "settings": {
+ "foreground": "#ce9178"
+ }
+ },
+ {
+ "name": "brackets of XML/HTML tags",
+ "scope": "punctuation.definition.tag",
+ "settings": {
+ "foreground": "#808080"
+ }
+ },
+ {
+ "scope": ["meta.preprocessor", "entity.name.function.preprocessor"],
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "meta.preprocessor.string",
+ "settings": {
+ "foreground": "#ce9178"
+ }
+ },
+ {
+ "scope": "meta.preprocessor.numeric",
+ "settings": {
+ "foreground": "#b5cea8"
+ }
+ },
+ {
+ "scope": "meta.structure.dictionary.key.python",
+ "settings": {
+ "foreground": "#9cdcfe"
+ }
+ },
+ {
+ "scope": "meta.diff.header",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "storage",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "storage.type",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": ["storage.modifier", "keyword.operator.noexcept"],
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": ["string", "meta.embedded.assembly"],
+ "settings": {
+ "foreground": "#ce9178"
+ }
+ },
+ {
+ "scope": "string.tag",
+ "settings": {
+ "foreground": "#ce9178"
+ }
+ },
+ {
+ "scope": "string.value",
+ "settings": {
+ "foreground": "#ce9178"
+ }
+ },
+ {
+ "scope": "string.regexp",
+ "settings": {
+ "foreground": "#d16969"
+ }
+ },
+ {
+ "name": "String interpolation",
+ "scope": [
+ "punctuation.definition.template-expression.begin",
+ "punctuation.definition.template-expression.end",
+ "punctuation.section.embedded"
+ ],
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "name": "Reset JavaScript string interpolation expression",
+ "scope": ["meta.template.expression"],
+ "settings": {
+ "foreground": "#d4d4d4"
+ }
+ },
+ {
+ "scope": [
+ "support.type.vendored.property-name",
+ "support.type.property-name",
+ "variable.css",
+ "variable.scss",
+ "variable.other.less",
+ "source.coffee.embedded"
+ ],
+ "settings": {
+ "foreground": "#9cdcfe"
+ }
+ },
+ {
+ "scope": "keyword",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "keyword.control",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "keyword.operator",
+ "settings": {
+ "foreground": "#d4d4d4"
+ }
+ },
+ {
+ "scope": [
+ "keyword.operator.new",
+ "keyword.operator.expression",
+ "keyword.operator.cast",
+ "keyword.operator.sizeof",
+ "keyword.operator.alignof",
+ "keyword.operator.typeid",
+ "keyword.operator.alignas",
+ "keyword.operator.instanceof",
+ "keyword.operator.logical.python",
+ "keyword.operator.wordlike"
+ ],
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "keyword.other.unit",
+ "settings": {
+ "foreground": "#b5cea8"
+ }
+ },
+ {
+ "scope": ["punctuation.section.embedded.begin.php", "punctuation.section.embedded.end.php"],
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "support.function.git-rebase",
+ "settings": {
+ "foreground": "#9cdcfe"
+ }
+ },
+ {
+ "scope": "constant.sha.git-rebase",
+ "settings": {
+ "foreground": "#b5cea8"
+ }
+ },
+ {
+ "name": "coloring of the Java import and package identifiers",
+ "scope": [
+ "storage.modifier.import.java",
+ "variable.language.wildcard.java",
+ "storage.modifier.package.java"
+ ],
+ "settings": {
+ "foreground": "#d4d4d4"
+ }
+ },
+ {
+ "name": "this.self",
+ "scope": "variable.language",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "name": "Function declarations",
+ "scope": [
+ "entity.name.function",
+ "support.function",
+ "support.constant.handlebars",
+ "source.powershell variable.other.member",
+ "entity.name.operator.custom-literal"
+ ],
+ "settings": {
+ "foreground": "#DCDCAA"
+ }
+ },
+ {
+ "name": "Types declaration and references",
+ "scope": [
+ "support.class",
+ "support.type",
+ "entity.name.type",
+ "entity.name.namespace",
+ "entity.other.attribute",
+ "entity.name.scope-resolution",
+ "entity.name.class",
+ "storage.type.numeric.go",
+ "storage.type.byte.go",
+ "storage.type.boolean.go",
+ "storage.type.string.go",
+ "storage.type.uintptr.go",
+ "storage.type.error.go",
+ "storage.type.rune.go",
+ "storage.type.cs",
+ "storage.type.generic.cs",
+ "storage.type.modifier.cs",
+ "storage.type.variable.cs",
+ "storage.type.annotation.java",
+ "storage.type.generic.java",
+ "storage.type.java",
+ "storage.type.object.array.java",
+ "storage.type.primitive.array.java",
+ "storage.type.primitive.java",
+ "storage.type.token.java",
+ "storage.type.groovy",
+ "storage.type.annotation.groovy",
+ "storage.type.parameters.groovy",
+ "storage.type.generic.groovy",
+ "storage.type.object.array.groovy",
+ "storage.type.primitive.array.groovy",
+ "storage.type.primitive.groovy"
+ ],
+ "settings": {
+ "foreground": "#4EC9B0"
+ }
+ },
+ {
+ "name": "Types declaration and references, TS grammar specific",
+ "scope": [
+ "meta.type.cast.expr",
+ "meta.type.new.expr",
+ "support.constant.math",
+ "support.constant.dom",
+ "support.constant.json",
+ "entity.other.inherited-class"
+ ],
+ "settings": {
+ "foreground": "#4EC9B0"
+ }
+ },
+ {
+ "name": "Control flow / Special keywords",
+ "scope": [
+ "keyword.control",
+ "source.cpp keyword.operator.new",
+ "keyword.operator.delete",
+ "keyword.other.using",
+ "keyword.other.operator",
+ "entity.name.operator"
+ ],
+ "settings": {
+ "foreground": "#C586C0"
+ }
+ },
+ {
+ "name": "Variable and parameter name",
+ "scope": [
+ "variable",
+ "meta.definition.variable.name",
+ "support.variable",
+ "entity.name.variable",
+ "constant.other.placeholder"
+ ],
+ "settings": {
+ "foreground": "#9CDCFE"
+ }
+ },
+ {
+ "name": "Constants and enums",
+ "scope": ["variable.other.constant", "variable.other.enummember"],
+ "settings": {
+ "foreground": "#4FC1FF"
+ }
+ },
+ {
+ "name": "Object keys, TS grammar specific",
+ "scope": ["meta.object-literal.key"],
+ "settings": {
+ "foreground": "#9CDCFE"
+ }
+ },
+ {
+ "name": "CSS property value",
+ "scope": [
+ "support.constant.property-value",
+ "support.constant.font-name",
+ "support.constant.media-type",
+ "support.constant.media",
+ "constant.other.color.rgb-value",
+ "constant.other.rgb-value",
+ "support.constant.color"
+ ],
+ "settings": {
+ "foreground": "#CE9178"
+ }
+ },
+ {
+ "name": "Regular expression groups",
+ "scope": [
+ "punctuation.definition.group.regexp",
+ "punctuation.definition.group.assertion.regexp",
+ "punctuation.definition.character-class.regexp",
+ "punctuation.character.set.begin.regexp",
+ "punctuation.character.set.end.regexp",
+ "keyword.operator.negation.regexp",
+ "support.other.parenthesis.regexp"
+ ],
+ "settings": {
+ "foreground": "#CE9178"
+ }
+ },
+ {
+ "scope": [
+ "constant.character.character-class.regexp",
+ "constant.other.character-class.set.regexp",
+ "constant.other.character-class.regexp",
+ "constant.character.set.regexp"
+ ],
+ "settings": {
+ "foreground": "#d16969"
+ }
+ },
+ {
+ "scope": ["keyword.operator.or.regexp", "keyword.control.anchor.regexp"],
+ "settings": {
+ "foreground": "#DCDCAA"
+ }
+ },
+ {
+ "scope": "keyword.operator.quantifier.regexp",
+ "settings": {
+ "foreground": "#d7ba7d"
+ }
+ },
+ {
+ "scope": ["constant.character", "constant.other.option"],
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "constant.character.escape",
+ "settings": {
+ "foreground": "#d7ba7d"
+ }
+ },
+ {
+ "scope": "entity.name.label",
+ "settings": {
+ "foreground": "#C8C8C8"
+ }
+ }
+ ],
+ "semanticTokenColors": {
+ "newOperator": "#C586C0",
+ "stringLiteral": "#ce9178",
+ "customLiteral": "#DCDCAA",
+ "numberLiteral": "#b5cea8"
+ },
+ "colors": {
+ "checkbox.border": "#6B6B6B",
+ "editor.background": "#1E1E1E",
+ "editor.foreground": "#D4D4D4",
+ "editor.inactiveSelectionBackground": "#3A3D41",
+ "editorIndentGuide.background": "#404040",
+ "editorIndentGuide.activeBackground": "#707070",
+ "editor.selectionHighlightBackground": "#ADD6FF26",
+ "list.dropBackground": "#383B3D",
+ "activityBarBadge.background": "#007ACC",
+ "sideBarTitle.foreground": "#BBBBBB",
+ "input.placeholderForeground": "#A6A6A6",
+ "menu.background": "#252526",
+ "menu.foreground": "#CCCCCC",
+ "menu.separatorBackground": "#454545",
+ "menu.border": "#454545",
+ "statusBarItem.remoteForeground": "#FFF",
+ "statusBarItem.remoteBackground": "#16825D",
+ "ports.iconRunningProcessForeground": "#369432",
+ "sideBarSectionHeader.background": "#0000",
+ "sideBarSectionHeader.border": "#ccc3",
+ "tab.lastPinnedBorder": "#ccc3",
+ "list.activeSelectionIconForeground": "#FFF",
+ "terminal.inactiveSelectionBackground": "#3A3D41",
+ "widget.border": "#303031"
+ }
+}
diff --git a/node_modules/shiki/themes/dracula-soft.json b/node_modules/shiki/themes/dracula-soft.json
new file mode 100644
index 0000000..cefc87c
--- /dev/null
+++ b/node_modules/shiki/themes/dracula-soft.json
@@ -0,0 +1,1048 @@
+{
+ "$schema": "vscode://schemas/color-theme",
+ "name": "dracula-soft",
+ "author": "Zeno Rocha",
+ "maintainers": ["Derek P Sifford <dereksifford@gmail.com>"],
+ "semanticClass": "theme.dracula",
+ "semanticHighlighting": true,
+ "dracula": {
+ "base": [
+ "#282A36",
+ "#F8F8F2",
+ "#44475A",
+ "#6272A4",
+ "#8BE9FD",
+ "#50FA7B",
+ "#FFB86C",
+ "#FF79C6",
+ "#BD93F9",
+ "#FF5555",
+ "#F1FA8C"
+ ],
+ "ansi": [
+ "#21222C",
+ "#FF5555",
+ "#50FA7B",
+ "#F1FA8C",
+ "#BD93F9",
+ "#FF79C6",
+ "#8BE9FD",
+ "#F8F8F2",
+ "#6272A4",
+ "#FF6E6E",
+ "#69FF94",
+ "#FFFFA5",
+ "#D6ACFF",
+ "#FF92DF",
+ "#A4FFFF",
+ "#FFFFFF"
+ ],
+ "brightOther": ["#E9F284", "#8BE9FE"],
+ "other": [
+ "#44475A75",
+ "#FFFFFF1A",
+ "#FFFFFF",
+ "#44475A70",
+ "#424450",
+ "#343746",
+ "#21222C",
+ "#191A21"
+ ]
+ },
+ "colors": {
+ "terminal.background": "#282A36",
+ "terminal.foreground": "#f6f6f4",
+ "terminal.ansiBrightBlack": "#7b7f8b",
+ "terminal.ansiBrightRed": "#f07c7c",
+ "terminal.ansiBrightGreen": "#78f09a",
+ "terminal.ansiBrightYellow": "#f6f6ae",
+ "terminal.ansiBrightBlue": "#d6b4f7",
+ "terminal.ansiBrightMagenta": "#f49dda",
+ "terminal.ansiBrightCyan": "#adf6f6",
+ "terminal.ansiBrightWhite": "#ffffff",
+ "terminal.ansiBlack": "#262626",
+ "terminal.ansiRed": "#ee6666",
+ "terminal.ansiGreen": "#62e884",
+ "terminal.ansiYellow": "#e7ee98",
+ "terminal.ansiBlue": "#bf9eee",
+ "terminal.ansiMagenta": "#f286c4",
+ "terminal.ansiCyan": "#97e1f1",
+ "terminal.ansiWhite": "#f6f6f4",
+ "focusBorder": "#7b7f8b",
+ "foreground": "#f6f6f4",
+ "selection.background": "#bf9eee",
+ "errorForeground": "#ee6666",
+ "button.background": "#44475A",
+ "button.foreground": "#f6f6f4",
+ "button.secondaryBackground": "#282A36",
+ "button.secondaryForeground": "#f6f6f4",
+ "button.secondaryHoverBackground": "#343746",
+ "dropdown.background": "#343746",
+ "dropdown.border": "#191A21",
+ "dropdown.foreground": "#f6f6f4",
+ "input.background": "#282A36",
+ "input.foreground": "#f6f6f4",
+ "input.border": "#191A21",
+ "input.placeholderForeground": "#7b7f8b",
+ "inputOption.activeBorder": "#bf9eee",
+ "inputValidation.infoBorder": "#f286c4",
+ "inputValidation.warningBorder": "#FFB86C",
+ "inputValidation.errorBorder": "#ee6666",
+ "badge.foreground": "#f6f6f4",
+ "badge.background": "#44475A",
+ "progressBar.background": "#f286c4",
+ "list.activeSelectionBackground": "#44475A",
+ "list.activeSelectionForeground": "#f6f6f4",
+ "list.dropBackground": "#44475A",
+ "list.focusBackground": "#44475A75",
+ "list.highlightForeground": "#97e1f1",
+ "list.hoverBackground": "#44475A75",
+ "list.inactiveSelectionBackground": "#44475A75",
+ "list.warningForeground": "#FFB86C",
+ "list.errorForeground": "#ee6666",
+ "activityBar.background": "#343746",
+ "activityBar.inactiveForeground": "#7b7f8b",
+ "activityBar.foreground": "#f6f6f4",
+ "activityBar.activeBorder": "#FF79C680",
+ "activityBar.activeBackground": "#BD93F910",
+ "activityBarBadge.background": "#f286c4",
+ "activityBarBadge.foreground": "#f6f6f4",
+ "sideBar.background": "#262626",
+ "sideBarTitle.foreground": "#f6f6f4",
+ "sideBarSectionHeader.background": "#282A36",
+ "sideBarSectionHeader.border": "#191A21",
+ "editorGroup.border": "#bf9eee",
+ "editorGroup.dropBackground": "#44475A70",
+ "editorGroupHeader.tabsBackground": "#191A21",
+ "tab.activeBackground": "#282A36",
+ "tab.activeForeground": "#f6f6f4",
+ "tab.border": "#191A21",
+ "tab.activeBorderTop": "#FF79C680",
+ "tab.inactiveBackground": "#262626",
+ "tab.inactiveForeground": "#7b7f8b",
+ "editor.foreground": "#f6f6f4",
+ "editor.background": "#282A36",
+ "editorLineNumber.foreground": "#7b7f8b",
+ "editor.selectionBackground": "#44475A",
+ "editor.selectionHighlightBackground": "#424450",
+ "editor.foldBackground": "#21222C80",
+ "editor.wordHighlightBackground": "#8BE9FD50",
+ "editor.wordHighlightStrongBackground": "#50FA7B50",
+ "editor.findMatchBackground": "#FFB86C80",
+ "editor.findMatchHighlightBackground": "#FFFFFF40",
+ "editor.findRangeHighlightBackground": "#44475A75",
+ "editor.hoverHighlightBackground": "#8BE9FD50",
+ "editor.lineHighlightBorder": "#44475A",
+ "editorLink.activeForeground": "#97e1f1",
+ "editor.rangeHighlightBackground": "#BD93F915",
+ "editor.snippetTabstopHighlightBackground": "#282A36",
+ "editor.snippetTabstopHighlightBorder": "#7b7f8b",
+ "editor.snippetFinalTabstopHighlightBackground": "#282A36",
+ "editor.snippetFinalTabstopHighlightBorder": "#62e884",
+ "editorWhitespace.foreground": "#FFFFFF1A",
+ "editorIndentGuide.background": "#FFFFFF1A",
+ "editorIndentGuide.activeBackground": "#FFFFFF45",
+ "editorRuler.foreground": "#FFFFFF1A",
+ "editorCodeLens.foreground": "#7b7f8b",
+ "editorBracketHighlight.foreground1": "#f6f6f4",
+ "editorBracketHighlight.foreground2": "#f286c4",
+ "editorBracketHighlight.foreground3": "#97e1f1",
+ "editorBracketHighlight.foreground4": "#62e884",
+ "editorBracketHighlight.foreground5": "#bf9eee",
+ "editorBracketHighlight.foreground6": "#FFB86C",
+ "editorBracketHighlight.unexpectedBracket.foreground": "#ee6666",
+ "editorOverviewRuler.border": "#191A21",
+ "editorOverviewRuler.selectionHighlightForeground": "#FFB86C",
+ "editorOverviewRuler.wordHighlightForeground": "#97e1f1",
+ "editorOverviewRuler.wordHighlightStrongForeground": "#62e884",
+ "editorOverviewRuler.modifiedForeground": "#8BE9FD80",
+ "editorOverviewRuler.addedForeground": "#50FA7B80",
+ "editorOverviewRuler.deletedForeground": "#FF555580",
+ "editorOverviewRuler.errorForeground": "#FF555580",
+ "editorOverviewRuler.warningForeground": "#FFB86C80",
+ "editorOverviewRuler.infoForeground": "#8BE9FD80",
+ "editorError.foreground": "#ee6666",
+ "editorWarning.foreground": "#97e1f1",
+ "editorGutter.modifiedBackground": "#8BE9FD80",
+ "editorGutter.addedBackground": "#50FA7B80",
+ "editorGutter.deletedBackground": "#FF555580",
+ "gitDecoration.modifiedResourceForeground": "#97e1f1",
+ "gitDecoration.deletedResourceForeground": "#ee6666",
+ "gitDecoration.untrackedResourceForeground": "#62e884",
+ "gitDecoration.ignoredResourceForeground": "#7b7f8b",
+ "gitDecoration.conflictingResourceForeground": "#FFB86C",
+ "diffEditor.insertedTextBackground": "#50FA7B20",
+ "diffEditor.removedTextBackground": "#FF555550",
+ "editorWidget.background": "#262626",
+ "editorSuggestWidget.background": "#262626",
+ "editorSuggestWidget.foreground": "#f6f6f4",
+ "editorSuggestWidget.selectedBackground": "#44475A",
+ "editorHoverWidget.background": "#282A36",
+ "editorHoverWidget.border": "#7b7f8b",
+ "editorMarkerNavigation.background": "#262626",
+ "peekView.border": "#44475A",
+ "peekViewEditor.background": "#282A36",
+ "peekViewEditor.matchHighlightBackground": "#F1FA8C80",
+ "peekViewResult.background": "#262626",
+ "peekViewResult.fileForeground": "#f6f6f4",
+ "peekViewResult.lineForeground": "#f6f6f4",
+ "peekViewResult.matchHighlightBackground": "#F1FA8C80",
+ "peekViewResult.selectionBackground": "#44475A",
+ "peekViewResult.selectionForeground": "#f6f6f4",
+ "peekViewTitle.background": "#191A21",
+ "peekViewTitleDescription.foreground": "#7b7f8b",
+ "peekViewTitleLabel.foreground": "#f6f6f4",
+ "merge.currentHeaderBackground": "#50FA7B90",
+ "merge.incomingHeaderBackground": "#BD93F990",
+ "editorOverviewRuler.currentContentForeground": "#62e884",
+ "editorOverviewRuler.incomingContentForeground": "#bf9eee",
+ "panel.background": "#282A36",
+ "panel.border": "#bf9eee",
+ "panelTitle.activeBorder": "#f286c4",
+ "panelTitle.activeForeground": "#f6f6f4",
+ "panelTitle.inactiveForeground": "#7b7f8b",
+ "statusBar.background": "#191A21",
+ "statusBar.foreground": "#f6f6f4",
+ "statusBar.debuggingBackground": "#ee6666",
+ "statusBar.debuggingForeground": "#191A21",
+ "statusBar.noFolderBackground": "#191A21",
+ "statusBar.noFolderForeground": "#f6f6f4",
+ "statusBarItem.prominentBackground": "#ee6666",
+ "statusBarItem.prominentHoverBackground": "#FFB86C",
+ "statusBarItem.remoteForeground": "#282A36",
+ "statusBarItem.remoteBackground": "#bf9eee",
+ "titleBar.activeBackground": "#262626",
+ "titleBar.activeForeground": "#f6f6f4",
+ "titleBar.inactiveBackground": "#191A21",
+ "titleBar.inactiveForeground": "#7b7f8b",
+ "extensionButton.prominentForeground": "#f6f6f4",
+ "extensionButton.prominentBackground": "#50FA7B90",
+ "extensionButton.prominentHoverBackground": "#50FA7B60",
+ "pickerGroup.border": "#bf9eee",
+ "pickerGroup.foreground": "#97e1f1",
+ "debugToolBar.background": "#262626",
+ "walkThrough.embeddedEditorBackground": "#262626",
+ "settings.headerForeground": "#f6f6f4",
+ "settings.modifiedItemIndicator": "#FFB86C",
+ "settings.dropdownBackground": "#262626",
+ "settings.dropdownForeground": "#f6f6f4",
+ "settings.dropdownBorder": "#191A21",
+ "settings.checkboxBackground": "#262626",
+ "settings.checkboxForeground": "#f6f6f4",
+ "settings.checkboxBorder": "#191A21",
+ "settings.textInputBackground": "#262626",
+ "settings.textInputForeground": "#f6f6f4",
+ "settings.textInputBorder": "#191A21",
+ "settings.numberInputBackground": "#262626",
+ "settings.numberInputForeground": "#f6f6f4",
+ "settings.numberInputBorder": "#191A21",
+ "breadcrumb.foreground": "#7b7f8b",
+ "breadcrumb.background": "#282A36",
+ "breadcrumb.focusForeground": "#f6f6f4",
+ "breadcrumb.activeSelectionForeground": "#f6f6f4",
+ "breadcrumbPicker.background": "#191A21",
+ "listFilterWidget.background": "#343746",
+ "listFilterWidget.outline": "#424450",
+ "listFilterWidget.noMatchesOutline": "#ee6666"
+ },
+ "tokenColors": [
+ {
+ "scope": ["emphasis"],
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["strong"],
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": ["header"],
+ "settings": {
+ "foreground": "#bf9eee"
+ }
+ },
+ {
+ "scope": ["meta.diff", "meta.diff.header"],
+ "settings": {
+ "foreground": "#7b7f8b"
+ }
+ },
+ {
+ "scope": ["markup.inserted"],
+ "settings": {
+ "foreground": "#62e884"
+ }
+ },
+ {
+ "scope": ["markup.deleted"],
+ "settings": {
+ "foreground": "#ee6666"
+ }
+ },
+ {
+ "scope": ["markup.changed"],
+ "settings": {
+ "foreground": "#FFB86C"
+ }
+ },
+ {
+ "scope": ["invalid"],
+ "settings": {
+ "foreground": "#ee6666",
+ "fontStyle": "underline italic"
+ }
+ },
+ {
+ "scope": ["invalid.deprecated"],
+ "settings": {
+ "foreground": "#f6f6f4",
+ "fontStyle": "underline italic"
+ }
+ },
+ {
+ "scope": ["entity.name.filename"],
+ "settings": {
+ "foreground": "#e7ee98"
+ }
+ },
+ {
+ "scope": ["markup.error"],
+ "settings": {
+ "foreground": "#ee6666"
+ }
+ },
+ {
+ "name": "Underlined markup",
+ "scope": ["markup.underline"],
+ "settings": {
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "name": "Bold markup",
+ "scope": ["markup.bold"],
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#FFB86C"
+ }
+ },
+ {
+ "name": "Markup headings",
+ "scope": ["markup.heading"],
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#bf9eee"
+ }
+ },
+ {
+ "name": "Markup italic",
+ "scope": ["markup.italic"],
+ "settings": {
+ "foreground": "#e7ee98",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Bullets, lists (prose)",
+ "scope": [
+ "beginning.punctuation.definition.list.markdown",
+ "beginning.punctuation.definition.quote.markdown",
+ "punctuation.definition.link.restructuredtext"
+ ],
+ "settings": {
+ "foreground": "#97e1f1"
+ }
+ },
+ {
+ "name": "Inline code (prose)",
+ "scope": ["markup.inline.raw", "markup.raw.restructuredtext"],
+ "settings": {
+ "foreground": "#62e884"
+ }
+ },
+ {
+ "name": "Links (prose)",
+ "scope": ["markup.underline.link", "markup.underline.link.image"],
+ "settings": {
+ "foreground": "#97e1f1"
+ }
+ },
+ {
+ "name": "Link text, image alt text (prose)",
+ "scope": [
+ "meta.link.reference.def.restructuredtext",
+ "punctuation.definition.directive.restructuredtext",
+ "string.other.link.description",
+ "string.other.link.title"
+ ],
+ "settings": {
+ "foreground": "#f286c4"
+ }
+ },
+ {
+ "name": "Blockquotes (prose)",
+ "scope": ["entity.name.directive.restructuredtext", "markup.quote"],
+ "settings": {
+ "foreground": "#e7ee98",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Horizontal rule (prose)",
+ "scope": ["meta.separator.markdown"],
+ "settings": {
+ "foreground": "#7b7f8b"
+ }
+ },
+ {
+ "name": "Code blocks",
+ "scope": [
+ "fenced_code.block.language",
+ "markup.raw.inner.restructuredtext",
+ "markup.fenced_code.block.markdown punctuation.definition.markdown"
+ ],
+ "settings": {
+ "foreground": "#62e884"
+ }
+ },
+ {
+ "name": "Prose constants",
+ "scope": ["punctuation.definition.constant.restructuredtext"],
+ "settings": {
+ "foreground": "#bf9eee"
+ }
+ },
+ {
+ "name": "Braces in markdown headings",
+ "scope": [
+ "markup.heading.markdown punctuation.definition.string.begin",
+ "markup.heading.markdown punctuation.definition.string.end"
+ ],
+ "settings": {
+ "foreground": "#bf9eee"
+ }
+ },
+ {
+ "name": "Braces in markdown paragraphs",
+ "scope": [
+ "meta.paragraph.markdown punctuation.definition.string.begin",
+ "meta.paragraph.markdown punctuation.definition.string.end"
+ ],
+ "settings": {
+ "foreground": "#f6f6f4"
+ }
+ },
+ {
+ "name": "Braces in markdown blockquotes",
+ "scope": [
+ "markup.quote.markdown meta.paragraph.markdown punctuation.definition.string.begin",
+ "markup.quote.markdown meta.paragraph.markdown punctuation.definition.string.end"
+ ],
+ "settings": {
+ "foreground": "#e7ee98"
+ }
+ },
+ {
+ "name": "User-defined class names",
+ "scope": ["entity.name.type.class", "entity.name.class"],
+ "settings": {
+ "foreground": "#97e1f1",
+ "fontStyle": "normal"
+ }
+ },
+ {
+ "name": "this, super, self, etc.",
+ "scope": [
+ "keyword.expressions-and-types.swift",
+ "keyword.other.this",
+ "variable.language",
+ "variable.language punctuation.definition.variable.php",
+ "variable.other.readwrite.instance.ruby",
+ "variable.parameter.function.language.special"
+ ],
+ "settings": {
+ "foreground": "#bf9eee",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Inherited classes",
+ "scope": ["entity.other.inherited-class"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#97e1f1"
+ }
+ },
+ {
+ "name": "Comments",
+ "scope": ["comment", "punctuation.definition.comment", "unused.comment", "wildcard.comment"],
+ "settings": {
+ "foreground": "#7b7f8b"
+ }
+ },
+ {
+ "name": "JSDoc-style keywords",
+ "scope": [
+ "comment keyword.codetag.notation",
+ "comment.block.documentation keyword",
+ "comment.block.documentation storage.type.class"
+ ],
+ "settings": {
+ "foreground": "#f286c4"
+ }
+ },
+ {
+ "name": "JSDoc-style types",
+ "scope": ["comment.block.documentation entity.name.type"],
+ "settings": {
+ "foreground": "#97e1f1",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "JSDoc-style type brackets",
+ "scope": ["comment.block.documentation entity.name.type punctuation.definition.bracket"],
+ "settings": {
+ "foreground": "#97e1f1"
+ }
+ },
+ {
+ "name": "JSDoc-style comment parameters",
+ "scope": ["comment.block.documentation variable"],
+ "settings": {
+ "foreground": "#FFB86C",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Constants",
+ "scope": ["constant", "variable.other.constant"],
+ "settings": {
+ "foreground": "#bf9eee"
+ }
+ },
+ {
+ "name": "Constant escape sequences",
+ "scope": ["constant.character.escape", "constant.character.string.escape", "constant.regexp"],
+ "settings": {
+ "foreground": "#f286c4"
+ }
+ },
+ {
+ "name": "HTML tags",
+ "scope": ["entity.name.tag"],
+ "settings": {
+ "foreground": "#f286c4"
+ }
+ },
+ {
+ "name": "CSS attribute parent selectors ('&')",
+ "scope": ["entity.other.attribute-name.parent-selector"],
+ "settings": {
+ "foreground": "#f286c4"
+ }
+ },
+ {
+ "name": "HTML/CSS attribute names",
+ "scope": ["entity.other.attribute-name"],
+ "settings": {
+ "foreground": "#62e884",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Function names",
+ "scope": [
+ "entity.name.function",
+ "meta.function-call.object",
+ "meta.function-call.php",
+ "meta.function-call.static",
+ "meta.method-call.java meta.method",
+ "meta.method.groovy",
+ "support.function.any-method.lua",
+ "keyword.operator.function.infix"
+ ],
+ "settings": {
+ "foreground": "#62e884"
+ }
+ },
+ {
+ "name": "Function parameters",
+ "scope": [
+ "entity.name.variable.parameter",
+ "meta.at-rule.function variable",
+ "meta.at-rule.mixin variable",
+ "meta.function.arguments variable.other.php",
+ "meta.selectionset.graphql meta.arguments.graphql variable.arguments.graphql",
+ "variable.parameter"
+ ],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#FFB86C"
+ }
+ },
+ {
+ "name": "Decorators",
+ "scope": [
+ "meta.decorator variable.other.readwrite",
+ "meta.decorator variable.other.property"
+ ],
+ "settings": {
+ "foreground": "#62e884",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Decorator Objects",
+ "scope": ["meta.decorator variable.other.object"],
+ "settings": {
+ "foreground": "#62e884"
+ }
+ },
+ {
+ "name": "Keywords",
+ "scope": ["keyword", "punctuation.definition.keyword"],
+ "settings": {
+ "foreground": "#f286c4"
+ }
+ },
+ {
+ "name": "Keyword \"new\"",
+ "scope": ["keyword.control.new", "keyword.operator.new"],
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "Generic selectors (CSS/SCSS/Less/Stylus)",
+ "scope": ["meta.selector"],
+ "settings": {
+ "foreground": "#f286c4"
+ }
+ },
+ {
+ "name": "Language Built-ins",
+ "scope": ["support"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#97e1f1"
+ }
+ },
+ {
+ "name": "Built-in magic functions and constants",
+ "scope": ["support.function.magic", "support.variable", "variable.other.predefined"],
+ "settings": {
+ "fontStyle": "regular",
+ "foreground": "#bf9eee"
+ }
+ },
+ {
+ "name": "Built-in functions / properties",
+ "scope": ["support.function", "support.type.property-name"],
+ "settings": {
+ "fontStyle": "regular"
+ }
+ },
+ {
+ "name": "Separators (key/value, namespace, inheritance, pointer, hash, slice, etc)",
+ "scope": [
+ "constant.other.symbol.hashkey punctuation.definition.constant.ruby",
+ "entity.other.attribute-name.placeholder punctuation",
+ "entity.other.attribute-name.pseudo-class punctuation",
+ "entity.other.attribute-name.pseudo-element punctuation",
+ "meta.group.double.toml",
+ "meta.group.toml",
+ "meta.object-binding-pattern-variable punctuation.destructuring",
+ "punctuation.colon.graphql",
+ "punctuation.definition.block.scalar.folded.yaml",
+ "punctuation.definition.block.scalar.literal.yaml",
+ "punctuation.definition.block.sequence.item.yaml",
+ "punctuation.definition.entity.other.inherited-class",
+ "punctuation.function.swift",
+ "punctuation.separator.dictionary.key-value",
+ "punctuation.separator.hash",
+ "punctuation.separator.inheritance",
+ "punctuation.separator.key-value",
+ "punctuation.separator.key-value.mapping.yaml",
+ "punctuation.separator.namespace",
+ "punctuation.separator.pointer-access",
+ "punctuation.separator.slice",
+ "string.unquoted.heredoc punctuation.definition.string",
+ "support.other.chomping-indicator.yaml",
+ "punctuation.separator.annotation"
+ ],
+ "settings": {
+ "foreground": "#f286c4"
+ }
+ },
+ {
+ "name": "Brackets, braces, parens, etc.",
+ "scope": [
+ "keyword.operator.other.powershell",
+ "keyword.other.statement-separator.powershell",
+ "meta.brace.round",
+ "meta.function-call punctuation",
+ "punctuation.definition.arguments.begin",
+ "punctuation.definition.arguments.end",
+ "punctuation.definition.entity.begin",
+ "punctuation.definition.entity.end",
+ "punctuation.definition.tag.cs",
+ "punctuation.definition.type.begin",
+ "punctuation.definition.type.end",
+ "punctuation.section.scope.begin",
+ "punctuation.section.scope.end",
+ "punctuation.terminator.expression.php",
+ "storage.type.generic.java",
+ "string.template meta.brace",
+ "string.template punctuation.accessor"
+ ],
+ "settings": {
+ "foreground": "#f6f6f4"
+ }
+ },
+ {
+ "name": "Variable interpolation operators",
+ "scope": [
+ "meta.string-contents.quoted.double punctuation.definition.variable",
+ "punctuation.definition.interpolation.begin",
+ "punctuation.definition.interpolation.end",
+ "punctuation.definition.template-expression.begin",
+ "punctuation.definition.template-expression.end",
+ "punctuation.section.embedded.begin",
+ "punctuation.section.embedded.coffee",
+ "punctuation.section.embedded.end",
+ "punctuation.section.embedded.end source.php",
+ "punctuation.section.embedded.end source.ruby",
+ "punctuation.definition.variable.makefile"
+ ],
+ "settings": {
+ "foreground": "#f286c4"
+ }
+ },
+ {
+ "name": "Keys (serializable languages)",
+ "scope": [
+ "entity.name.function.target.makefile",
+ "entity.name.section.toml",
+ "entity.name.tag.yaml",
+ "variable.other.key.toml"
+ ],
+ "settings": {
+ "foreground": "#97e1f1"
+ }
+ },
+ {
+ "name": "Dates / timestamps (serializable languages)",
+ "scope": ["constant.other.date", "constant.other.timestamp"],
+ "settings": {
+ "foreground": "#FFB86C"
+ }
+ },
+ {
+ "name": "YAML aliases",
+ "scope": ["variable.other.alias.yaml"],
+ "settings": {
+ "fontStyle": "italic underline",
+ "foreground": "#62e884"
+ }
+ },
+ {
+ "name": "Storage",
+ "scope": [
+ "storage",
+ "meta.implementation storage.type.objc",
+ "meta.interface-or-protocol storage.type.objc",
+ "source.groovy storage.type.def"
+ ],
+ "settings": {
+ "fontStyle": "regular",
+ "foreground": "#f286c4"
+ }
+ },
+ {
+ "name": "Types",
+ "scope": [
+ "entity.name.type",
+ "keyword.primitive-datatypes.swift",
+ "keyword.type.cs",
+ "meta.protocol-list.objc",
+ "meta.return-type.objc",
+ "source.go storage.type",
+ "source.groovy storage.type",
+ "source.java storage.type",
+ "source.powershell entity.other.attribute-name",
+ "storage.class.std.rust",
+ "storage.type.attribute.swift",
+ "storage.type.c",
+ "storage.type.core.rust",
+ "storage.type.cs",
+ "storage.type.groovy",
+ "storage.type.objc",
+ "storage.type.php",
+ "storage.type.haskell",
+ "storage.type.ocaml"
+ ],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#97e1f1"
+ }
+ },
+ {
+ "name": "Generics, templates, and mapped type declarations",
+ "scope": [
+ "entity.name.type.type-parameter",
+ "meta.indexer.mappedtype.declaration entity.name.type",
+ "meta.type.parameters entity.name.type"
+ ],
+ "settings": {
+ "foreground": "#FFB86C"
+ }
+ },
+ {
+ "name": "Modifiers",
+ "scope": ["storage.modifier"],
+ "settings": {
+ "foreground": "#f286c4"
+ }
+ },
+ {
+ "name": "RegExp string",
+ "scope": [
+ "string.regexp",
+ "constant.other.character-class.set.regexp",
+ "constant.character.escape.backslash.regexp"
+ ],
+ "settings": {
+ "foreground": "#e7ee98"
+ }
+ },
+ {
+ "name": "Non-capture operators",
+ "scope": ["punctuation.definition.group.capture.regexp"],
+ "settings": {
+ "foreground": "#f286c4"
+ }
+ },
+ {
+ "name": "RegExp start and end characters",
+ "scope": [
+ "string.regexp punctuation.definition.string.begin",
+ "string.regexp punctuation.definition.string.end"
+ ],
+ "settings": {
+ "foreground": "#ee6666"
+ }
+ },
+ {
+ "name": "Character group",
+ "scope": ["punctuation.definition.character-class.regexp"],
+ "settings": {
+ "foreground": "#97e1f1"
+ }
+ },
+ {
+ "name": "Capture groups",
+ "scope": ["punctuation.definition.group.regexp"],
+ "settings": {
+ "foreground": "#FFB86C"
+ }
+ },
+ {
+ "name": "Assertion operators",
+ "scope": [
+ "punctuation.definition.group.assertion.regexp",
+ "keyword.operator.negation.regexp"
+ ],
+ "settings": {
+ "foreground": "#ee6666"
+ }
+ },
+ {
+ "name": "Positive lookaheads",
+ "scope": ["meta.assertion.look-ahead.regexp"],
+ "settings": {
+ "foreground": "#62e884"
+ }
+ },
+ {
+ "name": "Strings",
+ "scope": ["string"],
+ "settings": {
+ "foreground": "#e7ee98"
+ }
+ },
+ {
+ "name": "String quotes (temporary vscode fix)",
+ "scope": ["punctuation.definition.string.begin", "punctuation.definition.string.end"],
+ "settings": {
+ "foreground": "#dee492"
+ }
+ },
+ {
+ "name": "Property quotes (temporary vscode fix)",
+ "scope": [
+ "punctuation.support.type.property-name.begin",
+ "punctuation.support.type.property-name.end"
+ ],
+ "settings": {
+ "foreground": "#97e2f2"
+ }
+ },
+ {
+ "name": "Docstrings",
+ "scope": [
+ "string.quoted.docstring.multi",
+ "string.quoted.docstring.multi.python punctuation.definition.string.begin",
+ "string.quoted.docstring.multi.python punctuation.definition.string.end",
+ "string.quoted.docstring.multi.python constant.character.escape"
+ ],
+ "settings": {
+ "foreground": "#7b7f8b"
+ }
+ },
+ {
+ "name": "Variables and object properties",
+ "scope": [
+ "variable",
+ "constant.other.key.perl",
+ "support.variable.property",
+ "variable.other.constant.js",
+ "variable.other.constant.ts",
+ "variable.other.constant.tsx"
+ ],
+ "settings": {
+ "foreground": "#f6f6f4"
+ }
+ },
+ {
+ "name": "Destructuring / aliasing reference name (LHS)",
+ "scope": [
+ "meta.import variable.other.readwrite",
+ "meta.variable.assignment.destructured.object.coffee variable"
+ ],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#FFB86C"
+ }
+ },
+ {
+ "name": "Destructuring / aliasing variable name (RHS)",
+ "scope": [
+ "meta.import variable.other.readwrite.alias",
+ "meta.export variable.other.readwrite.alias",
+ "meta.variable.assignment.destructured.object.coffee variable variable"
+ ],
+ "settings": {
+ "fontStyle": "normal",
+ "foreground": "#f6f6f4"
+ }
+ },
+ {
+ "name": "GraphQL keys",
+ "scope": ["meta.selectionset.graphql variable"],
+ "settings": {
+ "foreground": "#e7ee98"
+ }
+ },
+ {
+ "name": "GraphQL function arguments",
+ "scope": ["meta.selectionset.graphql meta.arguments variable"],
+ "settings": {
+ "foreground": "#f6f6f4"
+ }
+ },
+ {
+ "name": "GraphQL fragment name (definition)",
+ "scope": ["entity.name.fragment.graphql", "variable.fragment.graphql"],
+ "settings": {
+ "foreground": "#97e1f1"
+ }
+ },
+ {
+ "name": "Edge cases (foreground color resets)",
+ "scope": [
+ "constant.other.symbol.hashkey.ruby",
+ "keyword.operator.dereference.java",
+ "keyword.operator.navigation.groovy",
+ "meta.scope.for-loop.shell punctuation.definition.string.begin",
+ "meta.scope.for-loop.shell punctuation.definition.string.end",
+ "meta.scope.for-loop.shell string",
+ "storage.modifier.import",
+ "punctuation.section.embedded.begin.tsx",
+ "punctuation.section.embedded.end.tsx",
+ "punctuation.section.embedded.begin.jsx",
+ "punctuation.section.embedded.end.jsx",
+ "punctuation.separator.list.comma.css",
+ "constant.language.empty-list.haskell"
+ ],
+ "settings": {
+ "foreground": "#f6f6f4"
+ }
+ },
+ {
+ "name": "Shell variables prefixed with \"$\" (edge case)",
+ "scope": ["source.shell variable.other"],
+ "settings": {
+ "foreground": "#bf9eee"
+ }
+ },
+ {
+ "name": "Powershell constants mistakenly scoped to `support`, rather than `constant` (edge)",
+ "scope": ["support.constant"],
+ "settings": {
+ "fontStyle": "normal",
+ "foreground": "#bf9eee"
+ }
+ },
+ {
+ "name": "Makefile prerequisite names",
+ "scope": ["meta.scope.prerequisites.makefile"],
+ "settings": {
+ "foreground": "#e7ee98"
+ }
+ },
+ {
+ "name": "SCSS attibute selector strings",
+ "scope": ["meta.attribute-selector.scss"],
+ "settings": {
+ "foreground": "#e7ee98"
+ }
+ },
+ {
+ "name": "SCSS attribute selector brackets",
+ "scope": [
+ "punctuation.definition.attribute-selector.end.bracket.square.scss",
+ "punctuation.definition.attribute-selector.begin.bracket.square.scss"
+ ],
+ "settings": {
+ "foreground": "#f6f6f4"
+ }
+ },
+ {
+ "name": "Haskell Pragmas",
+ "scope": ["meta.preprocessor.haskell"],
+ "settings": {
+ "foreground": "#7b7f8b"
+ }
+ },
+ {
+ "name": "Log file error",
+ "scope": ["log.error"],
+ "settings": {
+ "foreground": "#ee6666",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "Log file warning",
+ "scope": ["log.warning"],
+ "settings": {
+ "foreground": "#e7ee98",
+ "fontStyle": "bold"
+ }
+ }
+ ]
+}
diff --git a/node_modules/shiki/themes/dracula.json b/node_modules/shiki/themes/dracula.json
new file mode 100644
index 0000000..b9de3bb
--- /dev/null
+++ b/node_modules/shiki/themes/dracula.json
@@ -0,0 +1,1048 @@
+{
+ "$schema": "vscode://schemas/color-theme",
+ "name": "dracula",
+ "author": "Zeno Rocha",
+ "maintainers": ["Derek P Sifford <dereksifford@gmail.com>"],
+ "semanticClass": "theme.dracula",
+ "semanticHighlighting": true,
+ "dracula": {
+ "base": [
+ "#282A36",
+ "#F8F8F2",
+ "#44475A",
+ "#6272A4",
+ "#8BE9FD",
+ "#50FA7B",
+ "#FFB86C",
+ "#FF79C6",
+ "#BD93F9",
+ "#FF5555",
+ "#F1FA8C"
+ ],
+ "ansi": [
+ "#21222C",
+ "#FF5555",
+ "#50FA7B",
+ "#F1FA8C",
+ "#BD93F9",
+ "#FF79C6",
+ "#8BE9FD",
+ "#F8F8F2",
+ "#6272A4",
+ "#FF6E6E",
+ "#69FF94",
+ "#FFFFA5",
+ "#D6ACFF",
+ "#FF92DF",
+ "#A4FFFF",
+ "#FFFFFF"
+ ],
+ "brightOther": ["#E9F284", "#8BE9FE"],
+ "other": [
+ "#44475A75",
+ "#FFFFFF1A",
+ "#FFFFFF",
+ "#44475A70",
+ "#424450",
+ "#343746",
+ "#21222C",
+ "#191A21"
+ ]
+ },
+ "colors": {
+ "terminal.background": "#282A36",
+ "terminal.foreground": "#F8F8F2",
+ "terminal.ansiBrightBlack": "#6272A4",
+ "terminal.ansiBrightRed": "#FF6E6E",
+ "terminal.ansiBrightGreen": "#69FF94",
+ "terminal.ansiBrightYellow": "#FFFFA5",
+ "terminal.ansiBrightBlue": "#D6ACFF",
+ "terminal.ansiBrightMagenta": "#FF92DF",
+ "terminal.ansiBrightCyan": "#A4FFFF",
+ "terminal.ansiBrightWhite": "#FFFFFF",
+ "terminal.ansiBlack": "#21222C",
+ "terminal.ansiRed": "#FF5555",
+ "terminal.ansiGreen": "#50FA7B",
+ "terminal.ansiYellow": "#F1FA8C",
+ "terminal.ansiBlue": "#BD93F9",
+ "terminal.ansiMagenta": "#FF79C6",
+ "terminal.ansiCyan": "#8BE9FD",
+ "terminal.ansiWhite": "#F8F8F2",
+ "focusBorder": "#6272A4",
+ "foreground": "#F8F8F2",
+ "selection.background": "#BD93F9",
+ "errorForeground": "#FF5555",
+ "button.background": "#44475A",
+ "button.foreground": "#F8F8F2",
+ "button.secondaryBackground": "#282A36",
+ "button.secondaryForeground": "#F8F8F2",
+ "button.secondaryHoverBackground": "#343746",
+ "dropdown.background": "#343746",
+ "dropdown.border": "#191A21",
+ "dropdown.foreground": "#F8F8F2",
+ "input.background": "#282A36",
+ "input.foreground": "#F8F8F2",
+ "input.border": "#191A21",
+ "input.placeholderForeground": "#6272A4",
+ "inputOption.activeBorder": "#BD93F9",
+ "inputValidation.infoBorder": "#FF79C6",
+ "inputValidation.warningBorder": "#FFB86C",
+ "inputValidation.errorBorder": "#FF5555",
+ "badge.foreground": "#F8F8F2",
+ "badge.background": "#44475A",
+ "progressBar.background": "#FF79C6",
+ "list.activeSelectionBackground": "#44475A",
+ "list.activeSelectionForeground": "#F8F8F2",
+ "list.dropBackground": "#44475A",
+ "list.focusBackground": "#44475A75",
+ "list.highlightForeground": "#8BE9FD",
+ "list.hoverBackground": "#44475A75",
+ "list.inactiveSelectionBackground": "#44475A75",
+ "list.warningForeground": "#FFB86C",
+ "list.errorForeground": "#FF5555",
+ "activityBar.background": "#343746",
+ "activityBar.inactiveForeground": "#6272A4",
+ "activityBar.foreground": "#F8F8F2",
+ "activityBar.activeBorder": "#FF79C680",
+ "activityBar.activeBackground": "#BD93F910",
+ "activityBarBadge.background": "#FF79C6",
+ "activityBarBadge.foreground": "#F8F8F2",
+ "sideBar.background": "#21222C",
+ "sideBarTitle.foreground": "#F8F8F2",
+ "sideBarSectionHeader.background": "#282A36",
+ "sideBarSectionHeader.border": "#191A21",
+ "editorGroup.border": "#BD93F9",
+ "editorGroup.dropBackground": "#44475A70",
+ "editorGroupHeader.tabsBackground": "#191A21",
+ "tab.activeBackground": "#282A36",
+ "tab.activeForeground": "#F8F8F2",
+ "tab.border": "#191A21",
+ "tab.activeBorderTop": "#FF79C680",
+ "tab.inactiveBackground": "#21222C",
+ "tab.inactiveForeground": "#6272A4",
+ "editor.foreground": "#F8F8F2",
+ "editor.background": "#282A36",
+ "editorLineNumber.foreground": "#6272A4",
+ "editor.selectionBackground": "#44475A",
+ "editor.selectionHighlightBackground": "#424450",
+ "editor.foldBackground": "#21222C80",
+ "editor.wordHighlightBackground": "#8BE9FD50",
+ "editor.wordHighlightStrongBackground": "#50FA7B50",
+ "editor.findMatchBackground": "#FFB86C80",
+ "editor.findMatchHighlightBackground": "#FFFFFF40",
+ "editor.findRangeHighlightBackground": "#44475A75",
+ "editor.hoverHighlightBackground": "#8BE9FD50",
+ "editor.lineHighlightBorder": "#44475A",
+ "editorLink.activeForeground": "#8BE9FD",
+ "editor.rangeHighlightBackground": "#BD93F915",
+ "editor.snippetTabstopHighlightBackground": "#282A36",
+ "editor.snippetTabstopHighlightBorder": "#6272A4",
+ "editor.snippetFinalTabstopHighlightBackground": "#282A36",
+ "editor.snippetFinalTabstopHighlightBorder": "#50FA7B",
+ "editorWhitespace.foreground": "#FFFFFF1A",
+ "editorIndentGuide.background": "#FFFFFF1A",
+ "editorIndentGuide.activeBackground": "#FFFFFF45",
+ "editorRuler.foreground": "#FFFFFF1A",
+ "editorCodeLens.foreground": "#6272A4",
+ "editorBracketHighlight.foreground1": "#F8F8F2",
+ "editorBracketHighlight.foreground2": "#FF79C6",
+ "editorBracketHighlight.foreground3": "#8BE9FD",
+ "editorBracketHighlight.foreground4": "#50FA7B",
+ "editorBracketHighlight.foreground5": "#BD93F9",
+ "editorBracketHighlight.foreground6": "#FFB86C",
+ "editorBracketHighlight.unexpectedBracket.foreground": "#FF5555",
+ "editorOverviewRuler.border": "#191A21",
+ "editorOverviewRuler.selectionHighlightForeground": "#FFB86C",
+ "editorOverviewRuler.wordHighlightForeground": "#8BE9FD",
+ "editorOverviewRuler.wordHighlightStrongForeground": "#50FA7B",
+ "editorOverviewRuler.modifiedForeground": "#8BE9FD80",
+ "editorOverviewRuler.addedForeground": "#50FA7B80",
+ "editorOverviewRuler.deletedForeground": "#FF555580",
+ "editorOverviewRuler.errorForeground": "#FF555580",
+ "editorOverviewRuler.warningForeground": "#FFB86C80",
+ "editorOverviewRuler.infoForeground": "#8BE9FD80",
+ "editorError.foreground": "#FF5555",
+ "editorWarning.foreground": "#8BE9FD",
+ "editorGutter.modifiedBackground": "#8BE9FD80",
+ "editorGutter.addedBackground": "#50FA7B80",
+ "editorGutter.deletedBackground": "#FF555580",
+ "gitDecoration.modifiedResourceForeground": "#8BE9FD",
+ "gitDecoration.deletedResourceForeground": "#FF5555",
+ "gitDecoration.untrackedResourceForeground": "#50FA7B",
+ "gitDecoration.ignoredResourceForeground": "#6272A4",
+ "gitDecoration.conflictingResourceForeground": "#FFB86C",
+ "diffEditor.insertedTextBackground": "#50FA7B20",
+ "diffEditor.removedTextBackground": "#FF555550",
+ "editorWidget.background": "#21222C",
+ "editorSuggestWidget.background": "#21222C",
+ "editorSuggestWidget.foreground": "#F8F8F2",
+ "editorSuggestWidget.selectedBackground": "#44475A",
+ "editorHoverWidget.background": "#282A36",
+ "editorHoverWidget.border": "#6272A4",
+ "editorMarkerNavigation.background": "#21222C",
+ "peekView.border": "#44475A",
+ "peekViewEditor.background": "#282A36",
+ "peekViewEditor.matchHighlightBackground": "#F1FA8C80",
+ "peekViewResult.background": "#21222C",
+ "peekViewResult.fileForeground": "#F8F8F2",
+ "peekViewResult.lineForeground": "#F8F8F2",
+ "peekViewResult.matchHighlightBackground": "#F1FA8C80",
+ "peekViewResult.selectionBackground": "#44475A",
+ "peekViewResult.selectionForeground": "#F8F8F2",
+ "peekViewTitle.background": "#191A21",
+ "peekViewTitleDescription.foreground": "#6272A4",
+ "peekViewTitleLabel.foreground": "#F8F8F2",
+ "merge.currentHeaderBackground": "#50FA7B90",
+ "merge.incomingHeaderBackground": "#BD93F990",
+ "editorOverviewRuler.currentContentForeground": "#50FA7B",
+ "editorOverviewRuler.incomingContentForeground": "#BD93F9",
+ "panel.background": "#282A36",
+ "panel.border": "#BD93F9",
+ "panelTitle.activeBorder": "#FF79C6",
+ "panelTitle.activeForeground": "#F8F8F2",
+ "panelTitle.inactiveForeground": "#6272A4",
+ "statusBar.background": "#191A21",
+ "statusBar.foreground": "#F8F8F2",
+ "statusBar.debuggingBackground": "#FF5555",
+ "statusBar.debuggingForeground": "#191A21",
+ "statusBar.noFolderBackground": "#191A21",
+ "statusBar.noFolderForeground": "#F8F8F2",
+ "statusBarItem.prominentBackground": "#FF5555",
+ "statusBarItem.prominentHoverBackground": "#FFB86C",
+ "statusBarItem.remoteForeground": "#282A36",
+ "statusBarItem.remoteBackground": "#BD93F9",
+ "titleBar.activeBackground": "#21222C",
+ "titleBar.activeForeground": "#F8F8F2",
+ "titleBar.inactiveBackground": "#191A21",
+ "titleBar.inactiveForeground": "#6272A4",
+ "extensionButton.prominentForeground": "#F8F8F2",
+ "extensionButton.prominentBackground": "#50FA7B90",
+ "extensionButton.prominentHoverBackground": "#50FA7B60",
+ "pickerGroup.border": "#BD93F9",
+ "pickerGroup.foreground": "#8BE9FD",
+ "debugToolBar.background": "#21222C",
+ "walkThrough.embeddedEditorBackground": "#21222C",
+ "settings.headerForeground": "#F8F8F2",
+ "settings.modifiedItemIndicator": "#FFB86C",
+ "settings.dropdownBackground": "#21222C",
+ "settings.dropdownForeground": "#F8F8F2",
+ "settings.dropdownBorder": "#191A21",
+ "settings.checkboxBackground": "#21222C",
+ "settings.checkboxForeground": "#F8F8F2",
+ "settings.checkboxBorder": "#191A21",
+ "settings.textInputBackground": "#21222C",
+ "settings.textInputForeground": "#F8F8F2",
+ "settings.textInputBorder": "#191A21",
+ "settings.numberInputBackground": "#21222C",
+ "settings.numberInputForeground": "#F8F8F2",
+ "settings.numberInputBorder": "#191A21",
+ "breadcrumb.foreground": "#6272A4",
+ "breadcrumb.background": "#282A36",
+ "breadcrumb.focusForeground": "#F8F8F2",
+ "breadcrumb.activeSelectionForeground": "#F8F8F2",
+ "breadcrumbPicker.background": "#191A21",
+ "listFilterWidget.background": "#343746",
+ "listFilterWidget.outline": "#424450",
+ "listFilterWidget.noMatchesOutline": "#FF5555"
+ },
+ "tokenColors": [
+ {
+ "scope": ["emphasis"],
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["strong"],
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": ["header"],
+ "settings": {
+ "foreground": "#BD93F9"
+ }
+ },
+ {
+ "scope": ["meta.diff", "meta.diff.header"],
+ "settings": {
+ "foreground": "#6272A4"
+ }
+ },
+ {
+ "scope": ["markup.inserted"],
+ "settings": {
+ "foreground": "#50FA7B"
+ }
+ },
+ {
+ "scope": ["markup.deleted"],
+ "settings": {
+ "foreground": "#FF5555"
+ }
+ },
+ {
+ "scope": ["markup.changed"],
+ "settings": {
+ "foreground": "#FFB86C"
+ }
+ },
+ {
+ "scope": ["invalid"],
+ "settings": {
+ "foreground": "#FF5555",
+ "fontStyle": "underline italic"
+ }
+ },
+ {
+ "scope": ["invalid.deprecated"],
+ "settings": {
+ "foreground": "#F8F8F2",
+ "fontStyle": "underline italic"
+ }
+ },
+ {
+ "scope": ["entity.name.filename"],
+ "settings": {
+ "foreground": "#F1FA8C"
+ }
+ },
+ {
+ "scope": ["markup.error"],
+ "settings": {
+ "foreground": "#FF5555"
+ }
+ },
+ {
+ "name": "Underlined markup",
+ "scope": ["markup.underline"],
+ "settings": {
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "name": "Bold markup",
+ "scope": ["markup.bold"],
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#FFB86C"
+ }
+ },
+ {
+ "name": "Markup headings",
+ "scope": ["markup.heading"],
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#BD93F9"
+ }
+ },
+ {
+ "name": "Markup italic",
+ "scope": ["markup.italic"],
+ "settings": {
+ "foreground": "#F1FA8C",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Bullets, lists (prose)",
+ "scope": [
+ "beginning.punctuation.definition.list.markdown",
+ "beginning.punctuation.definition.quote.markdown",
+ "punctuation.definition.link.restructuredtext"
+ ],
+ "settings": {
+ "foreground": "#8BE9FD"
+ }
+ },
+ {
+ "name": "Inline code (prose)",
+ "scope": ["markup.inline.raw", "markup.raw.restructuredtext"],
+ "settings": {
+ "foreground": "#50FA7B"
+ }
+ },
+ {
+ "name": "Links (prose)",
+ "scope": ["markup.underline.link", "markup.underline.link.image"],
+ "settings": {
+ "foreground": "#8BE9FD"
+ }
+ },
+ {
+ "name": "Link text, image alt text (prose)",
+ "scope": [
+ "meta.link.reference.def.restructuredtext",
+ "punctuation.definition.directive.restructuredtext",
+ "string.other.link.description",
+ "string.other.link.title"
+ ],
+ "settings": {
+ "foreground": "#FF79C6"
+ }
+ },
+ {
+ "name": "Blockquotes (prose)",
+ "scope": ["entity.name.directive.restructuredtext", "markup.quote"],
+ "settings": {
+ "foreground": "#F1FA8C",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Horizontal rule (prose)",
+ "scope": ["meta.separator.markdown"],
+ "settings": {
+ "foreground": "#6272A4"
+ }
+ },
+ {
+ "name": "Code blocks",
+ "scope": [
+ "fenced_code.block.language",
+ "markup.raw.inner.restructuredtext",
+ "markup.fenced_code.block.markdown punctuation.definition.markdown"
+ ],
+ "settings": {
+ "foreground": "#50FA7B"
+ }
+ },
+ {
+ "name": "Prose constants",
+ "scope": ["punctuation.definition.constant.restructuredtext"],
+ "settings": {
+ "foreground": "#BD93F9"
+ }
+ },
+ {
+ "name": "Braces in markdown headings",
+ "scope": [
+ "markup.heading.markdown punctuation.definition.string.begin",
+ "markup.heading.markdown punctuation.definition.string.end"
+ ],
+ "settings": {
+ "foreground": "#BD93F9"
+ }
+ },
+ {
+ "name": "Braces in markdown paragraphs",
+ "scope": [
+ "meta.paragraph.markdown punctuation.definition.string.begin",
+ "meta.paragraph.markdown punctuation.definition.string.end"
+ ],
+ "settings": {
+ "foreground": "#F8F8F2"
+ }
+ },
+ {
+ "name": "Braces in markdown blockquotes",
+ "scope": [
+ "markup.quote.markdown meta.paragraph.markdown punctuation.definition.string.begin",
+ "markup.quote.markdown meta.paragraph.markdown punctuation.definition.string.end"
+ ],
+ "settings": {
+ "foreground": "#F1FA8C"
+ }
+ },
+ {
+ "name": "User-defined class names",
+ "scope": ["entity.name.type.class", "entity.name.class"],
+ "settings": {
+ "foreground": "#8BE9FD",
+ "fontStyle": "normal"
+ }
+ },
+ {
+ "name": "this, super, self, etc.",
+ "scope": [
+ "keyword.expressions-and-types.swift",
+ "keyword.other.this",
+ "variable.language",
+ "variable.language punctuation.definition.variable.php",
+ "variable.other.readwrite.instance.ruby",
+ "variable.parameter.function.language.special"
+ ],
+ "settings": {
+ "foreground": "#BD93F9",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Inherited classes",
+ "scope": ["entity.other.inherited-class"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#8BE9FD"
+ }
+ },
+ {
+ "name": "Comments",
+ "scope": ["comment", "punctuation.definition.comment", "unused.comment", "wildcard.comment"],
+ "settings": {
+ "foreground": "#6272A4"
+ }
+ },
+ {
+ "name": "JSDoc-style keywords",
+ "scope": [
+ "comment keyword.codetag.notation",
+ "comment.block.documentation keyword",
+ "comment.block.documentation storage.type.class"
+ ],
+ "settings": {
+ "foreground": "#FF79C6"
+ }
+ },
+ {
+ "name": "JSDoc-style types",
+ "scope": ["comment.block.documentation entity.name.type"],
+ "settings": {
+ "foreground": "#8BE9FD",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "JSDoc-style type brackets",
+ "scope": ["comment.block.documentation entity.name.type punctuation.definition.bracket"],
+ "settings": {
+ "foreground": "#8BE9FD"
+ }
+ },
+ {
+ "name": "JSDoc-style comment parameters",
+ "scope": ["comment.block.documentation variable"],
+ "settings": {
+ "foreground": "#FFB86C",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Constants",
+ "scope": ["constant", "variable.other.constant"],
+ "settings": {
+ "foreground": "#BD93F9"
+ }
+ },
+ {
+ "name": "Constant escape sequences",
+ "scope": ["constant.character.escape", "constant.character.string.escape", "constant.regexp"],
+ "settings": {
+ "foreground": "#FF79C6"
+ }
+ },
+ {
+ "name": "HTML tags",
+ "scope": ["entity.name.tag"],
+ "settings": {
+ "foreground": "#FF79C6"
+ }
+ },
+ {
+ "name": "CSS attribute parent selectors ('&')",
+ "scope": ["entity.other.attribute-name.parent-selector"],
+ "settings": {
+ "foreground": "#FF79C6"
+ }
+ },
+ {
+ "name": "HTML/CSS attribute names",
+ "scope": ["entity.other.attribute-name"],
+ "settings": {
+ "foreground": "#50FA7B",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Function names",
+ "scope": [
+ "entity.name.function",
+ "meta.function-call.object",
+ "meta.function-call.php",
+ "meta.function-call.static",
+ "meta.method-call.java meta.method",
+ "meta.method.groovy",
+ "support.function.any-method.lua",
+ "keyword.operator.function.infix"
+ ],
+ "settings": {
+ "foreground": "#50FA7B"
+ }
+ },
+ {
+ "name": "Function parameters",
+ "scope": [
+ "entity.name.variable.parameter",
+ "meta.at-rule.function variable",
+ "meta.at-rule.mixin variable",
+ "meta.function.arguments variable.other.php",
+ "meta.selectionset.graphql meta.arguments.graphql variable.arguments.graphql",
+ "variable.parameter"
+ ],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#FFB86C"
+ }
+ },
+ {
+ "name": "Decorators",
+ "scope": [
+ "meta.decorator variable.other.readwrite",
+ "meta.decorator variable.other.property"
+ ],
+ "settings": {
+ "foreground": "#50FA7B",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Decorator Objects",
+ "scope": ["meta.decorator variable.other.object"],
+ "settings": {
+ "foreground": "#50FA7B"
+ }
+ },
+ {
+ "name": "Keywords",
+ "scope": ["keyword", "punctuation.definition.keyword"],
+ "settings": {
+ "foreground": "#FF79C6"
+ }
+ },
+ {
+ "name": "Keyword \"new\"",
+ "scope": ["keyword.control.new", "keyword.operator.new"],
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "Generic selectors (CSS/SCSS/Less/Stylus)",
+ "scope": ["meta.selector"],
+ "settings": {
+ "foreground": "#FF79C6"
+ }
+ },
+ {
+ "name": "Language Built-ins",
+ "scope": ["support"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#8BE9FD"
+ }
+ },
+ {
+ "name": "Built-in magic functions and constants",
+ "scope": ["support.function.magic", "support.variable", "variable.other.predefined"],
+ "settings": {
+ "fontStyle": "regular",
+ "foreground": "#BD93F9"
+ }
+ },
+ {
+ "name": "Built-in functions / properties",
+ "scope": ["support.function", "support.type.property-name"],
+ "settings": {
+ "fontStyle": "regular"
+ }
+ },
+ {
+ "name": "Separators (key/value, namespace, inheritance, pointer, hash, slice, etc)",
+ "scope": [
+ "constant.other.symbol.hashkey punctuation.definition.constant.ruby",
+ "entity.other.attribute-name.placeholder punctuation",
+ "entity.other.attribute-name.pseudo-class punctuation",
+ "entity.other.attribute-name.pseudo-element punctuation",
+ "meta.group.double.toml",
+ "meta.group.toml",
+ "meta.object-binding-pattern-variable punctuation.destructuring",
+ "punctuation.colon.graphql",
+ "punctuation.definition.block.scalar.folded.yaml",
+ "punctuation.definition.block.scalar.literal.yaml",
+ "punctuation.definition.block.sequence.item.yaml",
+ "punctuation.definition.entity.other.inherited-class",
+ "punctuation.function.swift",
+ "punctuation.separator.dictionary.key-value",
+ "punctuation.separator.hash",
+ "punctuation.separator.inheritance",
+ "punctuation.separator.key-value",
+ "punctuation.separator.key-value.mapping.yaml",
+ "punctuation.separator.namespace",
+ "punctuation.separator.pointer-access",
+ "punctuation.separator.slice",
+ "string.unquoted.heredoc punctuation.definition.string",
+ "support.other.chomping-indicator.yaml",
+ "punctuation.separator.annotation"
+ ],
+ "settings": {
+ "foreground": "#FF79C6"
+ }
+ },
+ {
+ "name": "Brackets, braces, parens, etc.",
+ "scope": [
+ "keyword.operator.other.powershell",
+ "keyword.other.statement-separator.powershell",
+ "meta.brace.round",
+ "meta.function-call punctuation",
+ "punctuation.definition.arguments.begin",
+ "punctuation.definition.arguments.end",
+ "punctuation.definition.entity.begin",
+ "punctuation.definition.entity.end",
+ "punctuation.definition.tag.cs",
+ "punctuation.definition.type.begin",
+ "punctuation.definition.type.end",
+ "punctuation.section.scope.begin",
+ "punctuation.section.scope.end",
+ "punctuation.terminator.expression.php",
+ "storage.type.generic.java",
+ "string.template meta.brace",
+ "string.template punctuation.accessor"
+ ],
+ "settings": {
+ "foreground": "#F8F8F2"
+ }
+ },
+ {
+ "name": "Variable interpolation operators",
+ "scope": [
+ "meta.string-contents.quoted.double punctuation.definition.variable",
+ "punctuation.definition.interpolation.begin",
+ "punctuation.definition.interpolation.end",
+ "punctuation.definition.template-expression.begin",
+ "punctuation.definition.template-expression.end",
+ "punctuation.section.embedded.begin",
+ "punctuation.section.embedded.coffee",
+ "punctuation.section.embedded.end",
+ "punctuation.section.embedded.end source.php",
+ "punctuation.section.embedded.end source.ruby",
+ "punctuation.definition.variable.makefile"
+ ],
+ "settings": {
+ "foreground": "#FF79C6"
+ }
+ },
+ {
+ "name": "Keys (serializable languages)",
+ "scope": [
+ "entity.name.function.target.makefile",
+ "entity.name.section.toml",
+ "entity.name.tag.yaml",
+ "variable.other.key.toml"
+ ],
+ "settings": {
+ "foreground": "#8BE9FD"
+ }
+ },
+ {
+ "name": "Dates / timestamps (serializable languages)",
+ "scope": ["constant.other.date", "constant.other.timestamp"],
+ "settings": {
+ "foreground": "#FFB86C"
+ }
+ },
+ {
+ "name": "YAML aliases",
+ "scope": ["variable.other.alias.yaml"],
+ "settings": {
+ "fontStyle": "italic underline",
+ "foreground": "#50FA7B"
+ }
+ },
+ {
+ "name": "Storage",
+ "scope": [
+ "storage",
+ "meta.implementation storage.type.objc",
+ "meta.interface-or-protocol storage.type.objc",
+ "source.groovy storage.type.def"
+ ],
+ "settings": {
+ "fontStyle": "regular",
+ "foreground": "#FF79C6"
+ }
+ },
+ {
+ "name": "Types",
+ "scope": [
+ "entity.name.type",
+ "keyword.primitive-datatypes.swift",
+ "keyword.type.cs",
+ "meta.protocol-list.objc",
+ "meta.return-type.objc",
+ "source.go storage.type",
+ "source.groovy storage.type",
+ "source.java storage.type",
+ "source.powershell entity.other.attribute-name",
+ "storage.class.std.rust",
+ "storage.type.attribute.swift",
+ "storage.type.c",
+ "storage.type.core.rust",
+ "storage.type.cs",
+ "storage.type.groovy",
+ "storage.type.objc",
+ "storage.type.php",
+ "storage.type.haskell",
+ "storage.type.ocaml"
+ ],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#8BE9FD"
+ }
+ },
+ {
+ "name": "Generics, templates, and mapped type declarations",
+ "scope": [
+ "entity.name.type.type-parameter",
+ "meta.indexer.mappedtype.declaration entity.name.type",
+ "meta.type.parameters entity.name.type"
+ ],
+ "settings": {
+ "foreground": "#FFB86C"
+ }
+ },
+ {
+ "name": "Modifiers",
+ "scope": ["storage.modifier"],
+ "settings": {
+ "foreground": "#FF79C6"
+ }
+ },
+ {
+ "name": "RegExp string",
+ "scope": [
+ "string.regexp",
+ "constant.other.character-class.set.regexp",
+ "constant.character.escape.backslash.regexp"
+ ],
+ "settings": {
+ "foreground": "#F1FA8C"
+ }
+ },
+ {
+ "name": "Non-capture operators",
+ "scope": ["punctuation.definition.group.capture.regexp"],
+ "settings": {
+ "foreground": "#FF79C6"
+ }
+ },
+ {
+ "name": "RegExp start and end characters",
+ "scope": [
+ "string.regexp punctuation.definition.string.begin",
+ "string.regexp punctuation.definition.string.end"
+ ],
+ "settings": {
+ "foreground": "#FF5555"
+ }
+ },
+ {
+ "name": "Character group",
+ "scope": ["punctuation.definition.character-class.regexp"],
+ "settings": {
+ "foreground": "#8BE9FD"
+ }
+ },
+ {
+ "name": "Capture groups",
+ "scope": ["punctuation.definition.group.regexp"],
+ "settings": {
+ "foreground": "#FFB86C"
+ }
+ },
+ {
+ "name": "Assertion operators",
+ "scope": [
+ "punctuation.definition.group.assertion.regexp",
+ "keyword.operator.negation.regexp"
+ ],
+ "settings": {
+ "foreground": "#FF5555"
+ }
+ },
+ {
+ "name": "Positive lookaheads",
+ "scope": ["meta.assertion.look-ahead.regexp"],
+ "settings": {
+ "foreground": "#50FA7B"
+ }
+ },
+ {
+ "name": "Strings",
+ "scope": ["string"],
+ "settings": {
+ "foreground": "#F1FA8C"
+ }
+ },
+ {
+ "name": "String quotes (temporary vscode fix)",
+ "scope": ["punctuation.definition.string.begin", "punctuation.definition.string.end"],
+ "settings": {
+ "foreground": "#E9F284"
+ }
+ },
+ {
+ "name": "Property quotes (temporary vscode fix)",
+ "scope": [
+ "punctuation.support.type.property-name.begin",
+ "punctuation.support.type.property-name.end"
+ ],
+ "settings": {
+ "foreground": "#8BE9FE"
+ }
+ },
+ {
+ "name": "Docstrings",
+ "scope": [
+ "string.quoted.docstring.multi",
+ "string.quoted.docstring.multi.python punctuation.definition.string.begin",
+ "string.quoted.docstring.multi.python punctuation.definition.string.end",
+ "string.quoted.docstring.multi.python constant.character.escape"
+ ],
+ "settings": {
+ "foreground": "#6272A4"
+ }
+ },
+ {
+ "name": "Variables and object properties",
+ "scope": [
+ "variable",
+ "constant.other.key.perl",
+ "support.variable.property",
+ "variable.other.constant.js",
+ "variable.other.constant.ts",
+ "variable.other.constant.tsx"
+ ],
+ "settings": {
+ "foreground": "#F8F8F2"
+ }
+ },
+ {
+ "name": "Destructuring / aliasing reference name (LHS)",
+ "scope": [
+ "meta.import variable.other.readwrite",
+ "meta.variable.assignment.destructured.object.coffee variable"
+ ],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#FFB86C"
+ }
+ },
+ {
+ "name": "Destructuring / aliasing variable name (RHS)",
+ "scope": [
+ "meta.import variable.other.readwrite.alias",
+ "meta.export variable.other.readwrite.alias",
+ "meta.variable.assignment.destructured.object.coffee variable variable"
+ ],
+ "settings": {
+ "fontStyle": "normal",
+ "foreground": "#F8F8F2"
+ }
+ },
+ {
+ "name": "GraphQL keys",
+ "scope": ["meta.selectionset.graphql variable"],
+ "settings": {
+ "foreground": "#F1FA8C"
+ }
+ },
+ {
+ "name": "GraphQL function arguments",
+ "scope": ["meta.selectionset.graphql meta.arguments variable"],
+ "settings": {
+ "foreground": "#F8F8F2"
+ }
+ },
+ {
+ "name": "GraphQL fragment name (definition)",
+ "scope": ["entity.name.fragment.graphql", "variable.fragment.graphql"],
+ "settings": {
+ "foreground": "#8BE9FD"
+ }
+ },
+ {
+ "name": "Edge cases (foreground color resets)",
+ "scope": [
+ "constant.other.symbol.hashkey.ruby",
+ "keyword.operator.dereference.java",
+ "keyword.operator.navigation.groovy",
+ "meta.scope.for-loop.shell punctuation.definition.string.begin",
+ "meta.scope.for-loop.shell punctuation.definition.string.end",
+ "meta.scope.for-loop.shell string",
+ "storage.modifier.import",
+ "punctuation.section.embedded.begin.tsx",
+ "punctuation.section.embedded.end.tsx",
+ "punctuation.section.embedded.begin.jsx",
+ "punctuation.section.embedded.end.jsx",
+ "punctuation.separator.list.comma.css",
+ "constant.language.empty-list.haskell"
+ ],
+ "settings": {
+ "foreground": "#F8F8F2"
+ }
+ },
+ {
+ "name": "Shell variables prefixed with \"$\" (edge case)",
+ "scope": ["source.shell variable.other"],
+ "settings": {
+ "foreground": "#BD93F9"
+ }
+ },
+ {
+ "name": "Powershell constants mistakenly scoped to `support`, rather than `constant` (edge)",
+ "scope": ["support.constant"],
+ "settings": {
+ "fontStyle": "normal",
+ "foreground": "#BD93F9"
+ }
+ },
+ {
+ "name": "Makefile prerequisite names",
+ "scope": ["meta.scope.prerequisites.makefile"],
+ "settings": {
+ "foreground": "#F1FA8C"
+ }
+ },
+ {
+ "name": "SCSS attibute selector strings",
+ "scope": ["meta.attribute-selector.scss"],
+ "settings": {
+ "foreground": "#F1FA8C"
+ }
+ },
+ {
+ "name": "SCSS attribute selector brackets",
+ "scope": [
+ "punctuation.definition.attribute-selector.end.bracket.square.scss",
+ "punctuation.definition.attribute-selector.begin.bracket.square.scss"
+ ],
+ "settings": {
+ "foreground": "#F8F8F2"
+ }
+ },
+ {
+ "name": "Haskell Pragmas",
+ "scope": ["meta.preprocessor.haskell"],
+ "settings": {
+ "foreground": "#6272A4"
+ }
+ },
+ {
+ "name": "Log file error",
+ "scope": ["log.error"],
+ "settings": {
+ "foreground": "#FF5555",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "Log file warning",
+ "scope": ["log.warning"],
+ "settings": {
+ "foreground": "#F1FA8C",
+ "fontStyle": "bold"
+ }
+ }
+ ]
+}
diff --git a/node_modules/shiki/themes/github-dark-dimmed.json b/node_modules/shiki/themes/github-dark-dimmed.json
new file mode 100644
index 0000000..9b70271
--- /dev/null
+++ b/node_modules/shiki/themes/github-dark-dimmed.json
@@ -0,0 +1,597 @@
+{
+ "name": "github-dark-dimmed",
+ "colors": {
+ "focusBorder": "#316dca",
+ "foreground": "#adbac7",
+ "descriptionForeground": "#768390",
+ "errorForeground": "#e5534b",
+ "textLink.foreground": "#539bf5",
+ "textLink.activeForeground": "#539bf5",
+ "textBlockQuote.background": "#1c2128",
+ "textBlockQuote.border": "#444c56",
+ "textCodeBlock.background": "#636e7b66",
+ "textPreformat.foreground": "#768390",
+ "textSeparator.foreground": "#373e47",
+ "icon.foreground": "#768390",
+ "keybindingLabel.foreground": "#adbac7",
+ "button.background": "#347d39",
+ "button.foreground": "#ffffff",
+ "button.hoverBackground": "#46954a",
+ "button.secondaryBackground": "#3d444d",
+ "button.secondaryForeground": "#adbac7",
+ "button.secondaryHoverBackground": "#444c56",
+ "checkbox.background": "#2d333b",
+ "checkbox.border": "#444c56",
+ "dropdown.background": "#2d333b",
+ "dropdown.border": "#444c56",
+ "dropdown.foreground": "#adbac7",
+ "dropdown.listBackground": "#2d333b",
+ "input.background": "#22272e",
+ "input.border": "#444c56",
+ "input.foreground": "#adbac7",
+ "input.placeholderForeground": "#636e7b",
+ "badge.foreground": "#cdd9e5",
+ "badge.background": "#316dca",
+ "progressBar.background": "#316dca",
+ "titleBar.activeForeground": "#768390",
+ "titleBar.activeBackground": "#22272e",
+ "titleBar.inactiveForeground": "#768390",
+ "titleBar.inactiveBackground": "#1c2128",
+ "titleBar.border": "#444c56",
+ "activityBar.foreground": "#adbac7",
+ "activityBar.inactiveForeground": "#768390",
+ "activityBar.background": "#22272e",
+ "activityBarBadge.foreground": "#cdd9e5",
+ "activityBarBadge.background": "#316dca",
+ "activityBar.activeBorder": "#ec775c",
+ "activityBar.border": "#444c56",
+ "sideBar.foreground": "#adbac7",
+ "sideBar.background": "#1c2128",
+ "sideBar.border": "#444c56",
+ "sideBarTitle.foreground": "#adbac7",
+ "sideBarSectionHeader.foreground": "#adbac7",
+ "sideBarSectionHeader.background": "#1c2128",
+ "sideBarSectionHeader.border": "#444c56",
+ "list.hoverForeground": "#adbac7",
+ "list.inactiveSelectionForeground": "#adbac7",
+ "list.activeSelectionForeground": "#adbac7",
+ "list.hoverBackground": "#636e7b1a",
+ "list.inactiveSelectionBackground": "#636e7b66",
+ "list.activeSelectionBackground": "#636e7b66",
+ "list.focusForeground": "#adbac7",
+ "list.focusBackground": "#4184e426",
+ "list.inactiveFocusBackground": "#4184e426",
+ "list.highlightForeground": "#539bf5",
+ "tree.indentGuidesStroke": "#373e47",
+ "notificationCenterHeader.foreground": "#768390",
+ "notificationCenterHeader.background": "#2d333b",
+ "notifications.foreground": "#adbac7",
+ "notifications.background": "#2d333b",
+ "notifications.border": "#444c56",
+ "notificationsErrorIcon.foreground": "#e5534b",
+ "notificationsWarningIcon.foreground": "#c69026",
+ "notificationsInfoIcon.foreground": "#539bf5",
+ "pickerGroup.border": "#444c56",
+ "pickerGroup.foreground": "#768390",
+ "quickInput.background": "#2d333b",
+ "quickInput.foreground": "#adbac7",
+ "statusBar.foreground": "#768390",
+ "statusBar.background": "#22272e",
+ "statusBar.border": "#444c56",
+ "statusBar.focusBorder": "#316dca80",
+ "statusBar.noFolderBackground": "#22272e",
+ "statusBar.debuggingForeground": "#cdd9e5",
+ "statusBar.debuggingBackground": "#c93c37",
+ "statusBarItem.prominentBackground": "#636e7b66",
+ "statusBarItem.remoteForeground": "#adbac7",
+ "statusBarItem.remoteBackground": "#444c56",
+ "statusBarItem.hoverBackground": "#adbac714",
+ "statusBarItem.activeBackground": "#adbac71f",
+ "statusBarItem.focusBorder": "#316dca",
+ "editorGroupHeader.tabsBackground": "#1c2128",
+ "editorGroupHeader.tabsBorder": "#444c56",
+ "editorGroup.border": "#444c56",
+ "tab.activeForeground": "#adbac7",
+ "tab.inactiveForeground": "#768390",
+ "tab.inactiveBackground": "#1c2128",
+ "tab.activeBackground": "#22272e",
+ "tab.hoverBackground": "#22272e",
+ "tab.unfocusedHoverBackground": "#636e7b1a",
+ "tab.border": "#444c56",
+ "tab.unfocusedActiveBorderTop": "#444c56",
+ "tab.activeBorder": "#22272e",
+ "tab.unfocusedActiveBorder": "#22272e",
+ "tab.activeBorderTop": "#ec775c",
+ "breadcrumb.foreground": "#768390",
+ "breadcrumb.focusForeground": "#adbac7",
+ "breadcrumb.activeSelectionForeground": "#768390",
+ "breadcrumbPicker.background": "#2d333b",
+ "editor.foreground": "#adbac7",
+ "editor.background": "#22272e",
+ "editorWidget.background": "#2d333b",
+ "editor.foldBackground": "#636e7b1a",
+ "editor.lineHighlightBackground": "#636e7b1a",
+ "editorLineNumber.foreground": "#636e7b",
+ "editorLineNumber.activeForeground": "#adbac7",
+ "editorIndentGuide.background": "#adbac71f",
+ "editorIndentGuide.activeBackground": "#adbac73d",
+ "editorWhitespace.foreground": "#545d68",
+ "editorCursor.foreground": "#539bf5",
+ "editor.findMatchBackground": "#966600",
+ "editor.findMatchHighlightBackground": "#eac55f80",
+ "editor.linkedEditingBackground": "#539bf512",
+ "editor.selectionHighlightBackground": "#57ab5a40",
+ "editor.wordHighlightBackground": "#636e7b80",
+ "editor.wordHighlightBorder": "#636e7b99",
+ "editor.wordHighlightStrongBackground": "#636e7b4d",
+ "editor.wordHighlightStrongBorder": "#636e7b99",
+ "editorBracketMatch.background": "#57ab5a40",
+ "editorBracketMatch.border": "#57ab5a99",
+ "editorInlayHint.background": "#76839033",
+ "editorInlayHint.foreground": "#768390",
+ "editorInlayHint.typeBackground": "#76839033",
+ "editorInlayHint.typeForeground": "#768390",
+ "editorInlayHint.paramBackground": "#76839033",
+ "editorInlayHint.paramForeground": "#768390",
+ "editorGutter.modifiedBackground": "#ae7c1466",
+ "editorGutter.addedBackground": "#46954a66",
+ "editorGutter.deletedBackground": "#e5534b66",
+ "diffEditor.insertedLineBackground": "#347d3926",
+ "diffEditor.insertedTextBackground": "#57ab5a4d",
+ "diffEditor.removedLineBackground": "#c93c3726",
+ "diffEditor.removedTextBackground": "#f470674d",
+ "scrollbar.shadow": "#545d6833",
+ "scrollbarSlider.background": "#76839033",
+ "scrollbarSlider.hoverBackground": "#7683903d",
+ "scrollbarSlider.activeBackground": "#76839047",
+ "editorOverviewRuler.border": "#1c2128",
+ "minimapSlider.background": "#76839033",
+ "minimapSlider.hoverBackground": "#7683903d",
+ "minimapSlider.activeBackground": "#76839047",
+ "panel.background": "#1c2128",
+ "panel.border": "#444c56",
+ "panelTitle.activeBorder": "#ec775c",
+ "panelTitle.activeForeground": "#adbac7",
+ "panelTitle.inactiveForeground": "#768390",
+ "panelInput.border": "#444c56",
+ "debugIcon.breakpointForeground": "#e5534b",
+ "debugConsole.infoForeground": "#768390",
+ "debugConsole.warningForeground": "#c69026",
+ "debugConsole.errorForeground": "#ff938a",
+ "debugConsole.sourceForeground": "#daaa3f",
+ "debugConsoleInputIcon.foreground": "#b083f0",
+ "debugTokenExpression.name": "#6cb6ff",
+ "debugTokenExpression.value": "#96d0ff",
+ "debugTokenExpression.string": "#96d0ff",
+ "debugTokenExpression.boolean": "#6bc46d",
+ "debugTokenExpression.number": "#6bc46d",
+ "debugTokenExpression.error": "#ff938a",
+ "symbolIcon.arrayForeground": "#e0823d",
+ "symbolIcon.booleanForeground": "#539bf5",
+ "symbolIcon.classForeground": "#e0823d",
+ "symbolIcon.colorForeground": "#6cb6ff",
+ "symbolIcon.constructorForeground": "#dcbdfb",
+ "symbolIcon.enumeratorForeground": "#e0823d",
+ "symbolIcon.enumeratorMemberForeground": "#539bf5",
+ "symbolIcon.eventForeground": "#636e7b",
+ "symbolIcon.fieldForeground": "#e0823d",
+ "symbolIcon.fileForeground": "#c69026",
+ "symbolIcon.folderForeground": "#c69026",
+ "symbolIcon.functionForeground": "#b083f0",
+ "symbolIcon.interfaceForeground": "#e0823d",
+ "symbolIcon.keyForeground": "#539bf5",
+ "symbolIcon.keywordForeground": "#f47067",
+ "symbolIcon.methodForeground": "#b083f0",
+ "symbolIcon.moduleForeground": "#f47067",
+ "symbolIcon.namespaceForeground": "#f47067",
+ "symbolIcon.nullForeground": "#539bf5",
+ "symbolIcon.numberForeground": "#57ab5a",
+ "symbolIcon.objectForeground": "#e0823d",
+ "symbolIcon.operatorForeground": "#6cb6ff",
+ "symbolIcon.packageForeground": "#e0823d",
+ "symbolIcon.propertyForeground": "#e0823d",
+ "symbolIcon.referenceForeground": "#539bf5",
+ "symbolIcon.snippetForeground": "#539bf5",
+ "symbolIcon.stringForeground": "#6cb6ff",
+ "symbolIcon.structForeground": "#e0823d",
+ "symbolIcon.textForeground": "#6cb6ff",
+ "symbolIcon.typeParameterForeground": "#6cb6ff",
+ "symbolIcon.unitForeground": "#539bf5",
+ "symbolIcon.variableForeground": "#e0823d",
+ "symbolIcon.constantForeground": [
+ "#b4f1b4",
+ "#8ddb8c",
+ "#6bc46d",
+ "#57ab5a",
+ "#46954a",
+ "#347d39",
+ "#2b6a30",
+ "#245829",
+ "#1b4721",
+ "#113417"
+ ],
+ "terminal.foreground": "#adbac7",
+ "terminal.ansiBlack": "#545d68",
+ "terminal.ansiRed": "#f47067",
+ "terminal.ansiGreen": "#57ab5a",
+ "terminal.ansiYellow": "#c69026",
+ "terminal.ansiBlue": "#539bf5",
+ "terminal.ansiMagenta": "#b083f0",
+ "terminal.ansiCyan": "#39c5cf",
+ "terminal.ansiWhite": "#909dab",
+ "terminal.ansiBrightBlack": "#636e7b",
+ "terminal.ansiBrightRed": "#ff938a",
+ "terminal.ansiBrightGreen": "#6bc46d",
+ "terminal.ansiBrightYellow": "#daaa3f",
+ "terminal.ansiBrightBlue": "#6cb6ff",
+ "terminal.ansiBrightMagenta": "#dcbdfb",
+ "terminal.ansiBrightCyan": "#56d4dd",
+ "terminal.ansiBrightWhite": "#cdd9e5",
+ "editorBracketHighlight.foreground1": "#6cb6ff",
+ "editorBracketHighlight.foreground2": "#6bc46d",
+ "editorBracketHighlight.foreground3": "#daaa3f",
+ "editorBracketHighlight.foreground4": "#ff938a",
+ "editorBracketHighlight.foreground5": "#fc8dc7",
+ "editorBracketHighlight.foreground6": "#dcbdfb",
+ "editorBracketHighlight.unexpectedBracket.foreground": "#768390",
+ "gitDecoration.addedResourceForeground": "#57ab5a",
+ "gitDecoration.modifiedResourceForeground": "#c69026",
+ "gitDecoration.deletedResourceForeground": "#e5534b",
+ "gitDecoration.untrackedResourceForeground": "#57ab5a",
+ "gitDecoration.ignoredResourceForeground": "#636e7b",
+ "gitDecoration.conflictingResourceForeground": "#cc6b2c",
+ "gitDecoration.submoduleResourceForeground": "#768390",
+ "debugToolBar.background": "#2d333b",
+ "editor.stackFrameHighlightBackground": "#ae7c1466",
+ "editor.focusedStackFrameHighlightBackground": "#46954a66",
+ "peekViewEditor.matchHighlightBackground": "#ae7c1466",
+ "peekViewResult.matchHighlightBackground": "#ae7c1466",
+ "peekViewEditor.background": "#636e7b1a",
+ "peekViewResult.background": "#22272e",
+ "settings.headerForeground": "#adbac7",
+ "settings.modifiedItemIndicator": "#ae7c1466",
+ "welcomePage.buttonBackground": "#373e47",
+ "welcomePage.buttonHoverBackground": "#444c56"
+ },
+ "semanticHighlighting": true,
+ "tokenColors": [
+ {
+ "scope": ["comment", "punctuation.definition.comment", "string.comment"],
+ "settings": {
+ "foreground": "#768390"
+ }
+ },
+ {
+ "scope": ["constant.other.placeholder", "constant.character"],
+ "settings": {
+ "foreground": "#f47067"
+ }
+ },
+ {
+ "scope": [
+ "constant",
+ "entity.name.constant",
+ "variable.other.constant",
+ "variable.other.enummember",
+ "variable.language",
+ "entity"
+ ],
+ "settings": {
+ "foreground": "#6cb6ff"
+ }
+ },
+ {
+ "scope": ["entity.name", "meta.export.default", "meta.definition.variable"],
+ "settings": {
+ "foreground": "#f69d50"
+ }
+ },
+ {
+ "scope": [
+ "variable.parameter.function",
+ "meta.jsx.children",
+ "meta.block",
+ "meta.tag.attributes",
+ "entity.name.constant",
+ "meta.object.member",
+ "meta.embedded.expression"
+ ],
+ "settings": {
+ "foreground": "#adbac7"
+ }
+ },
+ {
+ "scope": "entity.name.function",
+ "settings": {
+ "foreground": "#dcbdfb"
+ }
+ },
+ {
+ "scope": ["entity.name.tag", "support.class.component"],
+ "settings": {
+ "foreground": "#8ddb8c"
+ }
+ },
+ {
+ "scope": "keyword",
+ "settings": {
+ "foreground": "#f47067"
+ }
+ },
+ {
+ "scope": ["storage", "storage.type"],
+ "settings": {
+ "foreground": "#f47067"
+ }
+ },
+ {
+ "scope": ["storage.modifier.package", "storage.modifier.import", "storage.type.java"],
+ "settings": {
+ "foreground": "#adbac7"
+ }
+ },
+ {
+ "scope": ["string", "string punctuation.section.embedded source"],
+ "settings": {
+ "foreground": "#96d0ff"
+ }
+ },
+ {
+ "scope": "support",
+ "settings": {
+ "foreground": "#6cb6ff"
+ }
+ },
+ {
+ "scope": "meta.property-name",
+ "settings": {
+ "foreground": "#6cb6ff"
+ }
+ },
+ {
+ "scope": "variable",
+ "settings": {
+ "foreground": "#f69d50"
+ }
+ },
+ {
+ "scope": "variable.other",
+ "settings": {
+ "foreground": "#adbac7"
+ }
+ },
+ {
+ "scope": "invalid.broken",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#ff938a"
+ }
+ },
+ {
+ "scope": "invalid.deprecated",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#ff938a"
+ }
+ },
+ {
+ "scope": "invalid.illegal",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#ff938a"
+ }
+ },
+ {
+ "scope": "invalid.unimplemented",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#ff938a"
+ }
+ },
+ {
+ "scope": "carriage-return",
+ "settings": {
+ "fontStyle": "italic underline",
+ "background": "#f47067",
+ "foreground": "#cdd9e5",
+ "content": "^M"
+ }
+ },
+ {
+ "scope": "message.error",
+ "settings": {
+ "foreground": "#ff938a"
+ }
+ },
+ {
+ "scope": "string variable",
+ "settings": {
+ "foreground": "#6cb6ff"
+ }
+ },
+ {
+ "scope": ["source.regexp", "string.regexp"],
+ "settings": {
+ "foreground": "#96d0ff"
+ }
+ },
+ {
+ "scope": [
+ "string.regexp.character-class",
+ "string.regexp constant.character.escape",
+ "string.regexp source.ruby.embedded",
+ "string.regexp string.regexp.arbitrary-repitition"
+ ],
+ "settings": {
+ "foreground": "#96d0ff"
+ }
+ },
+ {
+ "scope": "string.regexp constant.character.escape",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#8ddb8c"
+ }
+ },
+ {
+ "scope": "support.constant",
+ "settings": {
+ "foreground": "#6cb6ff"
+ }
+ },
+ {
+ "scope": "support.variable",
+ "settings": {
+ "foreground": "#6cb6ff"
+ }
+ },
+ {
+ "scope": "support.type.property-name.json",
+ "settings": {
+ "foreground": "#8ddb8c"
+ }
+ },
+ {
+ "scope": "meta.module-reference",
+ "settings": {
+ "foreground": "#6cb6ff"
+ }
+ },
+ {
+ "scope": "punctuation.definition.list.begin.markdown",
+ "settings": {
+ "foreground": "#f69d50"
+ }
+ },
+ {
+ "scope": ["markup.heading", "markup.heading entity.name"],
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#6cb6ff"
+ }
+ },
+ {
+ "scope": "markup.quote",
+ "settings": {
+ "foreground": "#8ddb8c"
+ }
+ },
+ {
+ "scope": "markup.italic",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#adbac7"
+ }
+ },
+ {
+ "scope": "markup.bold",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#adbac7"
+ }
+ },
+ {
+ "scope": ["markup.underline"],
+ "settings": {
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "scope": ["markup.strikethrough"],
+ "settings": {
+ "fontStyle": "strikethrough"
+ }
+ },
+ {
+ "scope": "markup.inline.raw",
+ "settings": {
+ "foreground": "#6cb6ff"
+ }
+ },
+ {
+ "scope": ["markup.deleted", "meta.diff.header.from-file", "punctuation.definition.deleted"],
+ "settings": {
+ "background": "#5d0f12",
+ "foreground": "#ff938a"
+ }
+ },
+ {
+ "scope": ["punctuation.section.embedded"],
+ "settings": {
+ "foreground": "#f47067"
+ }
+ },
+ {
+ "scope": ["markup.inserted", "meta.diff.header.to-file", "punctuation.definition.inserted"],
+ "settings": {
+ "background": "#113417",
+ "foreground": "#8ddb8c"
+ }
+ },
+ {
+ "scope": ["markup.changed", "punctuation.definition.changed"],
+ "settings": {
+ "background": "#682d0f",
+ "foreground": "#f69d50"
+ }
+ },
+ {
+ "scope": ["markup.ignored", "markup.untracked"],
+ "settings": {
+ "foreground": "#2d333b",
+ "background": "#6cb6ff"
+ }
+ },
+ {
+ "scope": "meta.diff.range",
+ "settings": {
+ "foreground": "#dcbdfb",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "meta.diff.header",
+ "settings": {
+ "foreground": "#6cb6ff"
+ }
+ },
+ {
+ "scope": "meta.separator",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#6cb6ff"
+ }
+ },
+ {
+ "scope": "meta.output",
+ "settings": {
+ "foreground": "#6cb6ff"
+ }
+ },
+ {
+ "scope": [
+ "brackethighlighter.tag",
+ "brackethighlighter.curly",
+ "brackethighlighter.round",
+ "brackethighlighter.square",
+ "brackethighlighter.angle",
+ "brackethighlighter.quote"
+ ],
+ "settings": {
+ "foreground": "#768390"
+ }
+ },
+ {
+ "scope": "brackethighlighter.unmatched",
+ "settings": {
+ "foreground": "#ff938a"
+ }
+ },
+ {
+ "scope": ["constant.other.reference.link", "string.other.link"],
+ "settings": {
+ "foreground": "#96d0ff"
+ }
+ }
+ ]
+}
diff --git a/node_modules/shiki/themes/github-dark.json b/node_modules/shiki/themes/github-dark.json
new file mode 100644
index 0000000..cccc0e6
--- /dev/null
+++ b/node_modules/shiki/themes/github-dark.json
@@ -0,0 +1,501 @@
+{
+ "name": "github-dark",
+ "colors": {
+ "focusBorder": "#005cc5",
+ "foreground": "#d1d5da",
+ "descriptionForeground": "#959da5",
+ "errorForeground": "#f97583",
+ "textLink.foreground": "#79b8ff",
+ "textLink.activeForeground": "#c8e1ff",
+ "textBlockQuote.background": "#24292e",
+ "textBlockQuote.border": "#444d56",
+ "textCodeBlock.background": "#2f363d",
+ "textPreformat.foreground": "#d1d5da",
+ "textSeparator.foreground": "#586069",
+ "button.background": "#176f2c",
+ "button.foreground": "#dcffe4",
+ "button.hoverBackground": "#22863a",
+ "button.secondaryBackground": "#444d56",
+ "button.secondaryForeground": "#fff",
+ "button.secondaryHoverBackground": "#586069",
+ "checkbox.background": "#444d56",
+ "checkbox.border": "#1b1f23",
+ "dropdown.background": "#2f363d",
+ "dropdown.border": "#1b1f23",
+ "dropdown.foreground": "#e1e4e8",
+ "dropdown.listBackground": "#24292e",
+ "input.background": "#2f363d",
+ "input.border": "#1b1f23",
+ "input.foreground": "#e1e4e8",
+ "input.placeholderForeground": "#959da5",
+ "badge.foreground": "#c8e1ff",
+ "badge.background": "#044289",
+ "progressBar.background": "#0366d6",
+ "titleBar.activeForeground": "#e1e4e8",
+ "titleBar.activeBackground": "#24292e",
+ "titleBar.inactiveForeground": "#959da5",
+ "titleBar.inactiveBackground": "#1f2428",
+ "titleBar.border": "#1b1f23",
+ "activityBar.foreground": "#e1e4e8",
+ "activityBar.inactiveForeground": "#6a737d",
+ "activityBar.background": "#24292e",
+ "activityBarBadge.foreground": "#fff",
+ "activityBarBadge.background": "#0366d6",
+ "activityBar.activeBorder": "#f9826c",
+ "activityBar.border": "#1b1f23",
+ "sideBar.foreground": "#d1d5da",
+ "sideBar.background": "#1f2428",
+ "sideBar.border": "#1b1f23",
+ "sideBarTitle.foreground": "#e1e4e8",
+ "sideBarSectionHeader.foreground": "#e1e4e8",
+ "sideBarSectionHeader.background": "#1f2428",
+ "sideBarSectionHeader.border": "#1b1f23",
+ "list.hoverForeground": "#e1e4e8",
+ "list.inactiveSelectionForeground": "#e1e4e8",
+ "list.activeSelectionForeground": "#e1e4e8",
+ "list.hoverBackground": "#282e34",
+ "list.inactiveSelectionBackground": "#282e34",
+ "list.activeSelectionBackground": "#39414a",
+ "list.inactiveFocusBackground": "#1d2d3e",
+ "list.focusBackground": "#044289",
+ "tree.indentGuidesStroke": "#2f363d",
+ "notificationCenterHeader.foreground": "#959da5",
+ "notificationCenterHeader.background": "#24292e",
+ "notifications.foreground": "#e1e4e8",
+ "notifications.background": "#2f363d",
+ "notifications.border": "#1b1f23",
+ "notificationsErrorIcon.foreground": "#ea4a5a",
+ "notificationsWarningIcon.foreground": "#ffab70",
+ "notificationsInfoIcon.foreground": "#79b8ff",
+ "pickerGroup.border": "#444d56",
+ "pickerGroup.foreground": "#e1e4e8",
+ "quickInput.background": "#24292e",
+ "quickInput.foreground": "#e1e4e8",
+ "statusBar.foreground": "#d1d5da",
+ "statusBar.background": "#24292e",
+ "statusBar.border": "#1b1f23",
+ "statusBar.noFolderBackground": "#24292e",
+ "statusBar.debuggingBackground": "#931c06",
+ "statusBar.debuggingForeground": "#fff",
+ "statusBarItem.prominentBackground": "#282e34",
+ "statusBarItem.remoteForeground": "#d1d5da",
+ "statusBarItem.remoteBackground": "#24292e",
+ "editorGroupHeader.tabsBackground": "#1f2428",
+ "editorGroupHeader.tabsBorder": "#1b1f23",
+ "editorGroup.border": "#1b1f23",
+ "tab.activeForeground": "#e1e4e8",
+ "tab.inactiveForeground": "#959da5",
+ "tab.inactiveBackground": "#1f2428",
+ "tab.activeBackground": "#24292e",
+ "tab.hoverBackground": "#24292e",
+ "tab.unfocusedHoverBackground": "#24292e",
+ "tab.border": "#1b1f23",
+ "tab.unfocusedActiveBorderTop": "#1b1f23",
+ "tab.activeBorder": "#24292e",
+ "tab.unfocusedActiveBorder": "#24292e",
+ "tab.activeBorderTop": "#f9826c",
+ "breadcrumb.foreground": "#959da5",
+ "breadcrumb.focusForeground": "#e1e4e8",
+ "breadcrumb.activeSelectionForeground": "#d1d5da",
+ "breadcrumbPicker.background": "#2b3036",
+ "editor.foreground": "#e1e4e8",
+ "editor.background": "#24292e",
+ "editorWidget.background": "#1f2428",
+ "editor.foldBackground": "#58606915",
+ "editor.lineHighlightBackground": "#2b3036",
+ "editorLineNumber.foreground": "#444d56",
+ "editorLineNumber.activeForeground": "#e1e4e8",
+ "editorIndentGuide.background": "#2f363d",
+ "editorIndentGuide.activeBackground": "#444d56",
+ "editorWhitespace.foreground": "#444d56",
+ "editorCursor.foreground": "#c8e1ff",
+ "editorError.foreground": "#f97583",
+ "editorWarning.foreground": "#ffea7f",
+ "editor.findMatchBackground": "#ffd33d44",
+ "editor.findMatchHighlightBackground": "#ffd33d22",
+ "editor.linkedEditingBackground": "#3392FF22",
+ "editor.inactiveSelectionBackground": "#3392FF22",
+ "editor.selectionBackground": "#3392FF44",
+ "editor.selectionHighlightBackground": "#17E5E633",
+ "editor.selectionHighlightBorder": "#17E5E600",
+ "editor.wordHighlightBackground": "#17E5E600",
+ "editor.wordHighlightStrongBackground": "#17E5E600",
+ "editor.wordHighlightBorder": "#17E5E699",
+ "editor.wordHighlightStrongBorder": "#17E5E666",
+ "editorBracketMatch.background": "#17E5E650",
+ "editorBracketMatch.border": "#17E5E600",
+ "editorGutter.modifiedBackground": "#2188ff",
+ "editorGutter.addedBackground": "#28a745",
+ "editorGutter.deletedBackground": "#ea4a5a",
+ "diffEditor.insertedTextBackground": "#28a74530",
+ "diffEditor.removedTextBackground": "#d73a4930",
+ "scrollbar.shadow": "#0008",
+ "scrollbarSlider.background": "#6a737d33",
+ "scrollbarSlider.hoverBackground": "#6a737d44",
+ "scrollbarSlider.activeBackground": "#6a737d88",
+ "editorOverviewRuler.border": "#1b1f23",
+ "panel.background": "#1f2428",
+ "panel.border": "#1b1f23",
+ "panelTitle.activeBorder": "#f9826c",
+ "panelTitle.activeForeground": "#e1e4e8",
+ "panelTitle.inactiveForeground": "#959da5",
+ "panelInput.border": "#2f363d",
+ "terminal.foreground": "#d1d5da",
+ "terminal.tab.activeBorder": "#f9826c",
+ "terminalCursor.background": "#586069",
+ "terminalCursor.foreground": "#79b8ff",
+ "terminal.ansiBrightWhite": "#fafbfc",
+ "terminal.ansiWhite": "#d1d5da",
+ "terminal.ansiBrightBlack": "#959da5",
+ "terminal.ansiBlack": "#586069",
+ "terminal.ansiBlue": "#2188ff",
+ "terminal.ansiBrightBlue": "#79b8ff",
+ "terminal.ansiGreen": "#34d058",
+ "terminal.ansiBrightGreen": "#85e89d",
+ "terminal.ansiCyan": "#39c5cf",
+ "terminal.ansiBrightCyan": "#56d4dd",
+ "terminal.ansiRed": "#ea4a5a",
+ "terminal.ansiBrightRed": "#f97583",
+ "terminal.ansiMagenta": "#b392f0",
+ "terminal.ansiBrightMagenta": "#b392f0",
+ "terminal.ansiYellow": "#ffea7f",
+ "terminal.ansiBrightYellow": "#ffea7f",
+ "editorBracketHighlight.foreground1": "#79b8ff",
+ "editorBracketHighlight.foreground2": "#ffab70",
+ "editorBracketHighlight.foreground3": "#b392f0",
+ "editorBracketHighlight.foreground4": "#79b8ff",
+ "editorBracketHighlight.foreground5": "#ffab70",
+ "editorBracketHighlight.foreground6": "#b392f0",
+ "gitDecoration.addedResourceForeground": "#34d058",
+ "gitDecoration.modifiedResourceForeground": "#79b8ff",
+ "gitDecoration.deletedResourceForeground": "#ea4a5a",
+ "gitDecoration.untrackedResourceForeground": "#34d058",
+ "gitDecoration.ignoredResourceForeground": "#6a737d",
+ "gitDecoration.conflictingResourceForeground": "#ffab70",
+ "gitDecoration.submoduleResourceForeground": "#6a737d",
+ "debugToolBar.background": "#2b3036",
+ "editor.stackFrameHighlightBackground": "#C6902625",
+ "editor.focusedStackFrameHighlightBackground": "#2b6a3033",
+ "peekViewEditor.matchHighlightBackground": "#ffd33d33",
+ "peekViewResult.matchHighlightBackground": "#ffd33d33",
+ "peekViewEditor.background": "#1f242888",
+ "peekViewResult.background": "#1f2428",
+ "settings.headerForeground": "#e1e4e8",
+ "settings.modifiedItemIndicator": "#0366d6",
+ "welcomePage.buttonBackground": "#2f363d",
+ "welcomePage.buttonHoverBackground": "#444d56"
+ },
+ "semanticHighlighting": true,
+ "tokenColors": [
+ {
+ "scope": ["comment", "punctuation.definition.comment", "string.comment"],
+ "settings": {
+ "foreground": "#6a737d"
+ }
+ },
+ {
+ "scope": [
+ "constant",
+ "entity.name.constant",
+ "variable.other.constant",
+ "variable.other.enummember",
+ "variable.language"
+ ],
+ "settings": {
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": ["entity", "entity.name"],
+ "settings": {
+ "foreground": "#b392f0"
+ }
+ },
+ {
+ "scope": "variable.parameter.function",
+ "settings": {
+ "foreground": "#e1e4e8"
+ }
+ },
+ {
+ "scope": "entity.name.tag",
+ "settings": {
+ "foreground": "#85e89d"
+ }
+ },
+ {
+ "scope": "keyword",
+ "settings": {
+ "foreground": "#f97583"
+ }
+ },
+ {
+ "scope": ["storage", "storage.type"],
+ "settings": {
+ "foreground": "#f97583"
+ }
+ },
+ {
+ "scope": ["storage.modifier.package", "storage.modifier.import", "storage.type.java"],
+ "settings": {
+ "foreground": "#e1e4e8"
+ }
+ },
+ {
+ "scope": [
+ "string",
+ "punctuation.definition.string",
+ "string punctuation.section.embedded source"
+ ],
+ "settings": {
+ "foreground": "#9ecbff"
+ }
+ },
+ {
+ "scope": "support",
+ "settings": {
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": "meta.property-name",
+ "settings": {
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": "variable",
+ "settings": {
+ "foreground": "#ffab70"
+ }
+ },
+ {
+ "scope": "variable.other",
+ "settings": {
+ "foreground": "#e1e4e8"
+ }
+ },
+ {
+ "scope": "invalid.broken",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": "invalid.deprecated",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": "invalid.illegal",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": "invalid.unimplemented",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": "carriage-return",
+ "settings": {
+ "fontStyle": "italic underline",
+ "background": "#f97583",
+ "foreground": "#24292e",
+ "content": "^M"
+ }
+ },
+ {
+ "scope": "message.error",
+ "settings": {
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": "string variable",
+ "settings": {
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": ["source.regexp", "string.regexp"],
+ "settings": {
+ "foreground": "#dbedff"
+ }
+ },
+ {
+ "scope": [
+ "string.regexp.character-class",
+ "string.regexp constant.character.escape",
+ "string.regexp source.ruby.embedded",
+ "string.regexp string.regexp.arbitrary-repitition"
+ ],
+ "settings": {
+ "foreground": "#dbedff"
+ }
+ },
+ {
+ "scope": "string.regexp constant.character.escape",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#85e89d"
+ }
+ },
+ {
+ "scope": "support.constant",
+ "settings": {
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": "support.variable",
+ "settings": {
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": "meta.module-reference",
+ "settings": {
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": "punctuation.definition.list.begin.markdown",
+ "settings": {
+ "foreground": "#ffab70"
+ }
+ },
+ {
+ "scope": ["markup.heading", "markup.heading entity.name"],
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": "markup.quote",
+ "settings": {
+ "foreground": "#85e89d"
+ }
+ },
+ {
+ "scope": "markup.italic",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#e1e4e8"
+ }
+ },
+ {
+ "scope": "markup.bold",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#e1e4e8"
+ }
+ },
+ {
+ "scope": ["markup.underline"],
+ "settings": {
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "scope": ["markup.strikethrough"],
+ "settings": {
+ "fontStyle": "strikethrough"
+ }
+ },
+ {
+ "scope": "markup.inline.raw",
+ "settings": {
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": ["markup.deleted", "meta.diff.header.from-file", "punctuation.definition.deleted"],
+ "settings": {
+ "background": "#86181d",
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": ["markup.inserted", "meta.diff.header.to-file", "punctuation.definition.inserted"],
+ "settings": {
+ "background": "#144620",
+ "foreground": "#85e89d"
+ }
+ },
+ {
+ "scope": ["markup.changed", "punctuation.definition.changed"],
+ "settings": {
+ "background": "#c24e00",
+ "foreground": "#ffab70"
+ }
+ },
+ {
+ "scope": ["markup.ignored", "markup.untracked"],
+ "settings": {
+ "foreground": "#2f363d",
+ "background": "#79b8ff"
+ }
+ },
+ {
+ "scope": "meta.diff.range",
+ "settings": {
+ "foreground": "#b392f0",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "meta.diff.header",
+ "settings": {
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": "meta.separator",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": "meta.output",
+ "settings": {
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": [
+ "brackethighlighter.tag",
+ "brackethighlighter.curly",
+ "brackethighlighter.round",
+ "brackethighlighter.square",
+ "brackethighlighter.angle",
+ "brackethighlighter.quote"
+ ],
+ "settings": {
+ "foreground": "#d1d5da"
+ }
+ },
+ {
+ "scope": "brackethighlighter.unmatched",
+ "settings": {
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": ["constant.other.reference.link", "string.other.link"],
+ "settings": {
+ "foreground": "#dbedff",
+ "fontStyle": "underline"
+ }
+ }
+ ]
+}
diff --git a/node_modules/shiki/themes/github-light.json b/node_modules/shiki/themes/github-light.json
new file mode 100644
index 0000000..55a548e
--- /dev/null
+++ b/node_modules/shiki/themes/github-light.json
@@ -0,0 +1,497 @@
+{
+ "name": "github-light",
+ "colors": {
+ "focusBorder": "#2188ff",
+ "foreground": "#444d56",
+ "descriptionForeground": "#6a737d",
+ "errorForeground": "#cb2431",
+ "textLink.foreground": "#0366d6",
+ "textLink.activeForeground": "#005cc5",
+ "textBlockQuote.background": "#fafbfc",
+ "textBlockQuote.border": "#e1e4e8",
+ "textCodeBlock.background": "#f6f8fa",
+ "textPreformat.foreground": "#586069",
+ "textSeparator.foreground": "#d1d5da",
+ "button.background": "#159739",
+ "button.foreground": "#fff",
+ "button.hoverBackground": "#138934",
+ "button.secondaryBackground": "#e1e4e8",
+ "button.secondaryForeground": "#1b1f23",
+ "button.secondaryHoverBackground": "#d1d5da",
+ "checkbox.background": "#fafbfc",
+ "checkbox.border": "#d1d5da",
+ "dropdown.background": "#fafbfc",
+ "dropdown.border": "#e1e4e8",
+ "dropdown.foreground": "#2f363d",
+ "dropdown.listBackground": "#fff",
+ "input.background": "#fafbfc",
+ "input.border": "#e1e4e8",
+ "input.foreground": "#2f363d",
+ "input.placeholderForeground": "#959da5",
+ "badge.foreground": "#005cc5",
+ "badge.background": "#dbedff",
+ "progressBar.background": "#2188ff",
+ "titleBar.activeForeground": "#2f363d",
+ "titleBar.activeBackground": "#fff",
+ "titleBar.inactiveForeground": "#6a737d",
+ "titleBar.inactiveBackground": "#f6f8fa",
+ "titleBar.border": "#e1e4e8",
+ "activityBar.foreground": "#2f363d",
+ "activityBar.inactiveForeground": "#959da5",
+ "activityBar.background": "#fff",
+ "activityBarBadge.foreground": "#fff",
+ "activityBarBadge.background": "#2188ff",
+ "activityBar.activeBorder": "#f9826c",
+ "activityBar.border": "#e1e4e8",
+ "sideBar.foreground": "#586069",
+ "sideBar.background": "#f6f8fa",
+ "sideBar.border": "#e1e4e8",
+ "sideBarTitle.foreground": "#2f363d",
+ "sideBarSectionHeader.foreground": "#2f363d",
+ "sideBarSectionHeader.background": "#f6f8fa",
+ "sideBarSectionHeader.border": "#e1e4e8",
+ "list.hoverForeground": "#2f363d",
+ "list.inactiveSelectionForeground": "#2f363d",
+ "list.activeSelectionForeground": "#2f363d",
+ "list.hoverBackground": "#ebf0f4",
+ "list.inactiveSelectionBackground": "#e8eaed",
+ "list.activeSelectionBackground": "#e2e5e9",
+ "list.inactiveFocusBackground": "#dbedff",
+ "list.focusBackground": "#cce5ff",
+ "tree.indentGuidesStroke": "#e1e4e8",
+ "notificationCenterHeader.foreground": "#6a737d",
+ "notificationCenterHeader.background": "#e1e4e8",
+ "notifications.foreground": "#2f363d",
+ "notifications.background": "#fafbfc",
+ "notifications.border": "#e1e4e8",
+ "notificationsErrorIcon.foreground": "#d73a49",
+ "notificationsWarningIcon.foreground": "#e36209",
+ "notificationsInfoIcon.foreground": "#005cc5",
+ "pickerGroup.border": "#e1e4e8",
+ "pickerGroup.foreground": "#2f363d",
+ "quickInput.background": "#fafbfc",
+ "quickInput.foreground": "#2f363d",
+ "statusBar.foreground": "#586069",
+ "statusBar.background": "#fff",
+ "statusBar.border": "#e1e4e8",
+ "statusBar.noFolderBackground": "#fff",
+ "statusBar.debuggingBackground": "#f9826c",
+ "statusBar.debuggingForeground": "#fff",
+ "statusBarItem.prominentBackground": "#e8eaed",
+ "statusBarItem.remoteForeground": "#586069",
+ "statusBarItem.remoteBackground": "#fff",
+ "editorGroupHeader.tabsBackground": "#f6f8fa",
+ "editorGroupHeader.tabsBorder": "#e1e4e8",
+ "editorGroup.border": "#e1e4e8",
+ "tab.activeForeground": "#2f363d",
+ "tab.inactiveForeground": "#6a737d",
+ "tab.inactiveBackground": "#f6f8fa",
+ "tab.activeBackground": "#fff",
+ "tab.hoverBackground": "#fff",
+ "tab.unfocusedHoverBackground": "#fff",
+ "tab.border": "#e1e4e8",
+ "tab.unfocusedActiveBorderTop": "#e1e4e8",
+ "tab.activeBorder": "#fff",
+ "tab.unfocusedActiveBorder": "#fff",
+ "tab.activeBorderTop": "#f9826c",
+ "breadcrumb.foreground": "#6a737d",
+ "breadcrumb.focusForeground": "#2f363d",
+ "breadcrumb.activeSelectionForeground": "#586069",
+ "breadcrumbPicker.background": "#fafbfc",
+ "editor.foreground": "#24292e",
+ "editor.background": "#fff",
+ "editorWidget.background": "#f6f8fa",
+ "editor.foldBackground": "#d1d5da11",
+ "editor.lineHighlightBackground": "#f6f8fa",
+ "editorLineNumber.foreground": "#1b1f234d",
+ "editorLineNumber.activeForeground": "#24292e",
+ "editorIndentGuide.background": "#eff2f6",
+ "editorIndentGuide.activeBackground": "#d7dbe0",
+ "editorWhitespace.foreground": "#d1d5da",
+ "editorCursor.foreground": "#044289",
+ "editorError.foreground": "#cb2431",
+ "editorWarning.foreground": "#f9c513",
+ "editor.findMatchBackground": "#ffdf5d",
+ "editor.findMatchHighlightBackground": "#ffdf5d66",
+ "editor.linkedEditingBackground": "#0366d611",
+ "editor.inactiveSelectionBackground": "#0366d611",
+ "editor.selectionBackground": "#0366d625",
+ "editor.selectionHighlightBackground": "#34d05840",
+ "editor.selectionHighlightBorder": "#34d05800",
+ "editor.wordHighlightBackground": "#34d05800",
+ "editor.wordHighlightStrongBackground": "#34d05800",
+ "editor.wordHighlightBorder": "#24943e99",
+ "editor.wordHighlightStrongBorder": "#24943e50",
+ "editorBracketMatch.background": "#34d05840",
+ "editorBracketMatch.border": "#34d05800",
+ "editorGutter.modifiedBackground": "#2188ff",
+ "editorGutter.addedBackground": "#28a745",
+ "editorGutter.deletedBackground": "#d73a49",
+ "diffEditor.insertedTextBackground": "#34d05822",
+ "diffEditor.removedTextBackground": "#d73a4922",
+ "scrollbar.shadow": "#6a737d33",
+ "scrollbarSlider.background": "#959da533",
+ "scrollbarSlider.hoverBackground": "#959da544",
+ "scrollbarSlider.activeBackground": "#959da588",
+ "editorOverviewRuler.border": "#fff",
+ "panel.background": "#f6f8fa",
+ "panel.border": "#e1e4e8",
+ "panelTitle.activeBorder": "#f9826c",
+ "panelTitle.activeForeground": "#2f363d",
+ "panelTitle.inactiveForeground": "#6a737d",
+ "panelInput.border": "#e1e4e8",
+ "terminal.foreground": "#586069",
+ "terminal.tab.activeBorder": "#f9826c",
+ "terminalCursor.background": "#d1d5da",
+ "terminalCursor.foreground": "#005cc5",
+ "terminal.ansiBrightWhite": "#d1d5da",
+ "terminal.ansiWhite": "#6a737d",
+ "terminal.ansiBrightBlack": "#959da5",
+ "terminal.ansiBlack": "#24292e",
+ "terminal.ansiBlue": "#0366d6",
+ "terminal.ansiBrightBlue": "#005cc5",
+ "terminal.ansiGreen": "#28a745",
+ "terminal.ansiBrightGreen": "#22863a",
+ "terminal.ansiCyan": "#1b7c83",
+ "terminal.ansiBrightCyan": "#3192aa",
+ "terminal.ansiRed": "#d73a49",
+ "terminal.ansiBrightRed": "#cb2431",
+ "terminal.ansiMagenta": "#5a32a3",
+ "terminal.ansiBrightMagenta": "#5a32a3",
+ "terminal.ansiYellow": "#dbab09",
+ "terminal.ansiBrightYellow": "#b08800",
+ "editorBracketHighlight.foreground1": "#005cc5",
+ "editorBracketHighlight.foreground2": "#e36209",
+ "editorBracketHighlight.foreground3": "#5a32a3",
+ "editorBracketHighlight.foreground4": "#005cc5",
+ "editorBracketHighlight.foreground5": "#e36209",
+ "editorBracketHighlight.foreground6": "#5a32a3",
+ "gitDecoration.addedResourceForeground": "#28a745",
+ "gitDecoration.modifiedResourceForeground": "#005cc5",
+ "gitDecoration.deletedResourceForeground": "#d73a49",
+ "gitDecoration.untrackedResourceForeground": "#28a745",
+ "gitDecoration.ignoredResourceForeground": "#959da5",
+ "gitDecoration.conflictingResourceForeground": "#e36209",
+ "gitDecoration.submoduleResourceForeground": "#959da5",
+ "debugToolBar.background": "#fff",
+ "editor.stackFrameHighlightBackground": "#ffd33d33",
+ "editor.focusedStackFrameHighlightBackground": "#28a74525",
+ "settings.headerForeground": "#2f363d",
+ "settings.modifiedItemIndicator": "#2188ff",
+ "welcomePage.buttonBackground": "#f6f8fa",
+ "welcomePage.buttonHoverBackground": "#e1e4e8"
+ },
+ "semanticHighlighting": true,
+ "tokenColors": [
+ {
+ "scope": ["comment", "punctuation.definition.comment", "string.comment"],
+ "settings": {
+ "foreground": "#6a737d"
+ }
+ },
+ {
+ "scope": [
+ "constant",
+ "entity.name.constant",
+ "variable.other.constant",
+ "variable.other.enummember",
+ "variable.language"
+ ],
+ "settings": {
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": ["entity", "entity.name"],
+ "settings": {
+ "foreground": "#6f42c1"
+ }
+ },
+ {
+ "scope": "variable.parameter.function",
+ "settings": {
+ "foreground": "#24292e"
+ }
+ },
+ {
+ "scope": "entity.name.tag",
+ "settings": {
+ "foreground": "#22863a"
+ }
+ },
+ {
+ "scope": "keyword",
+ "settings": {
+ "foreground": "#d73a49"
+ }
+ },
+ {
+ "scope": ["storage", "storage.type"],
+ "settings": {
+ "foreground": "#d73a49"
+ }
+ },
+ {
+ "scope": ["storage.modifier.package", "storage.modifier.import", "storage.type.java"],
+ "settings": {
+ "foreground": "#24292e"
+ }
+ },
+ {
+ "scope": [
+ "string",
+ "punctuation.definition.string",
+ "string punctuation.section.embedded source"
+ ],
+ "settings": {
+ "foreground": "#032f62"
+ }
+ },
+ {
+ "scope": "support",
+ "settings": {
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": "meta.property-name",
+ "settings": {
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": "variable",
+ "settings": {
+ "foreground": "#e36209"
+ }
+ },
+ {
+ "scope": "variable.other",
+ "settings": {
+ "foreground": "#24292e"
+ }
+ },
+ {
+ "scope": "invalid.broken",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": "invalid.deprecated",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": "invalid.illegal",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": "invalid.unimplemented",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": "carriage-return",
+ "settings": {
+ "fontStyle": "italic underline",
+ "background": "#d73a49",
+ "foreground": "#fafbfc",
+ "content": "^M"
+ }
+ },
+ {
+ "scope": "message.error",
+ "settings": {
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": "string variable",
+ "settings": {
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": ["source.regexp", "string.regexp"],
+ "settings": {
+ "foreground": "#032f62"
+ }
+ },
+ {
+ "scope": [
+ "string.regexp.character-class",
+ "string.regexp constant.character.escape",
+ "string.regexp source.ruby.embedded",
+ "string.regexp string.regexp.arbitrary-repitition"
+ ],
+ "settings": {
+ "foreground": "#032f62"
+ }
+ },
+ {
+ "scope": "string.regexp constant.character.escape",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#22863a"
+ }
+ },
+ {
+ "scope": "support.constant",
+ "settings": {
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": "support.variable",
+ "settings": {
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": "meta.module-reference",
+ "settings": {
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": "punctuation.definition.list.begin.markdown",
+ "settings": {
+ "foreground": "#e36209"
+ }
+ },
+ {
+ "scope": ["markup.heading", "markup.heading entity.name"],
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": "markup.quote",
+ "settings": {
+ "foreground": "#22863a"
+ }
+ },
+ {
+ "scope": "markup.italic",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#24292e"
+ }
+ },
+ {
+ "scope": "markup.bold",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#24292e"
+ }
+ },
+ {
+ "scope": ["markup.underline"],
+ "settings": {
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "scope": ["markup.strikethrough"],
+ "settings": {
+ "fontStyle": "strikethrough"
+ }
+ },
+ {
+ "scope": "markup.inline.raw",
+ "settings": {
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": ["markup.deleted", "meta.diff.header.from-file", "punctuation.definition.deleted"],
+ "settings": {
+ "background": "#ffeef0",
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": ["markup.inserted", "meta.diff.header.to-file", "punctuation.definition.inserted"],
+ "settings": {
+ "background": "#f0fff4",
+ "foreground": "#22863a"
+ }
+ },
+ {
+ "scope": ["markup.changed", "punctuation.definition.changed"],
+ "settings": {
+ "background": "#ffebda",
+ "foreground": "#e36209"
+ }
+ },
+ {
+ "scope": ["markup.ignored", "markup.untracked"],
+ "settings": {
+ "foreground": "#f6f8fa",
+ "background": "#005cc5"
+ }
+ },
+ {
+ "scope": "meta.diff.range",
+ "settings": {
+ "foreground": "#6f42c1",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "meta.diff.header",
+ "settings": {
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": "meta.separator",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": "meta.output",
+ "settings": {
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": [
+ "brackethighlighter.tag",
+ "brackethighlighter.curly",
+ "brackethighlighter.round",
+ "brackethighlighter.square",
+ "brackethighlighter.angle",
+ "brackethighlighter.quote"
+ ],
+ "settings": {
+ "foreground": "#586069"
+ }
+ },
+ {
+ "scope": "brackethighlighter.unmatched",
+ "settings": {
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": ["constant.other.reference.link", "string.other.link"],
+ "settings": {
+ "foreground": "#032f62",
+ "fontStyle": "underline"
+ }
+ }
+ ]
+}
diff --git a/node_modules/shiki/themes/hc_light.json b/node_modules/shiki/themes/hc_light.json
new file mode 100644
index 0000000..0cd50a8
--- /dev/null
+++ b/node_modules/shiki/themes/hc_light.json
@@ -0,0 +1,564 @@
+{
+ "$schema": "vscode://schemas/color-theme",
+ "name": "hc_light",
+ "tokenColors": [
+ {
+ "scope": ["meta.embedded", "source.groovy.embedded"],
+ "settings": {
+ "foreground": "#292929"
+ }
+ },
+ {
+ "scope": "emphasis",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "strong",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "meta.diff.header",
+ "settings": {
+ "foreground": "#062F4A"
+ }
+ },
+ {
+ "name": "Comments",
+ "scope": ["comment", "string.quoted.docstring"],
+ "settings": {
+ "foreground": "#515151"
+ }
+ },
+ {
+ "scope": "constant.language",
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": [
+ "constant.numeric",
+ "variable.other.enummember",
+ "keyword.operator.plus.exponent",
+ "keyword.operator.minus.exponent"
+ ],
+ "settings": {
+ "foreground": "#096d48"
+ }
+ },
+ {
+ "scope": "constant.regexp",
+ "settings": {
+ "foreground": "#811F3F"
+ }
+ },
+ {
+ "scope": "entity.name.tag",
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": "entity.name.selector",
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": "entity.other.attribute-name",
+ "settings": {
+ "foreground": "#264F78"
+ }
+ },
+ {
+ "scope": [
+ "entity.other.attribute-name.class.css",
+ "entity.other.attribute-name.class.mixin.css",
+ "entity.other.attribute-name.id.css",
+ "entity.other.attribute-name.parent-selector.css",
+ "entity.other.attribute-name.pseudo-class.css",
+ "entity.other.attribute-name.pseudo-element.css",
+ "source.css.less entity.other.attribute-name.id",
+ "entity.other.attribute-name.scss"
+ ],
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": "invalid",
+ "settings": {
+ "foreground": "#B5200D"
+ }
+ },
+ {
+ "scope": "markup.underline",
+ "settings": {
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "scope": "markup.bold",
+ "settings": {
+ "foreground": "#000080",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "markup.heading",
+ "settings": {
+ "foreground": "#0F4A85",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "markup.italic",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "markup.strikethrough",
+ "settings": {
+ "fontStyle": "strikethrough"
+ }
+ },
+ {
+ "scope": "markup.inserted",
+ "settings": {
+ "foreground": "#096d48"
+ }
+ },
+ {
+ "scope": "markup.deleted",
+ "settings": {
+ "foreground": "#5A5A5A"
+ }
+ },
+ {
+ "scope": "markup.changed",
+ "settings": {
+ "foreground": "#0451A5"
+ }
+ },
+ {
+ "scope": [
+ "punctuation.definition.quote.begin.markdown",
+ "punctuation.definition.list.begin.markdown"
+ ],
+ "settings": {
+ "foreground": "#0451A5"
+ }
+ },
+ {
+ "scope": "markup.inline.raw",
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": "punctuation.definition.tag",
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": ["meta.preprocessor", "entity.name.function.preprocessor"],
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": "meta.preprocessor.string",
+ "settings": {
+ "foreground": "#b5200d"
+ }
+ },
+ {
+ "scope": "meta.preprocessor.numeric",
+ "settings": {
+ "foreground": "#096d48"
+ }
+ },
+ {
+ "scope": "meta.structure.dictionary.key.python",
+ "settings": {
+ "foreground": "#0451A5"
+ }
+ },
+ {
+ "scope": "storage",
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": "storage.type",
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": ["storage.modifier", "keyword.operator.noexcept"],
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": ["string", "meta.embedded.assembly"],
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": [
+ "string.comment.buffered.block.pug",
+ "string.quoted.pug",
+ "string.interpolated.pug",
+ "string.unquoted.plain.in.yaml",
+ "string.unquoted.plain.out.yaml",
+ "string.unquoted.block.yaml",
+ "string.quoted.single.yaml",
+ "string.quoted.double.xml",
+ "string.quoted.single.xml",
+ "string.unquoted.cdata.xml",
+ "string.quoted.double.html",
+ "string.quoted.single.html",
+ "string.unquoted.html",
+ "string.quoted.single.handlebars",
+ "string.quoted.double.handlebars"
+ ],
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": "string.regexp",
+ "settings": {
+ "foreground": "#811F3F"
+ }
+ },
+ {
+ "scope": [
+ "punctuation.definition.template-expression.begin",
+ "punctuation.definition.template-expression.end",
+ "punctuation.section.embedded"
+ ],
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": ["meta.template.expression"],
+ "settings": {
+ "foreground": "#000000"
+ }
+ },
+ {
+ "scope": [
+ "support.constant.property-value",
+ "support.constant.font-name",
+ "support.constant.media-type",
+ "support.constant.media",
+ "constant.other.color.rgb-value",
+ "constant.other.rgb-value",
+ "support.constant.color"
+ ],
+ "settings": {
+ "foreground": "#0451A5"
+ }
+ },
+ {
+ "scope": [
+ "support.type.vendored.property-name",
+ "support.type.property-name",
+ "variable.css",
+ "variable.scss",
+ "variable.other.less",
+ "source.coffee.embedded"
+ ],
+ "settings": {
+ "foreground": "#264F78"
+ }
+ },
+ {
+ "scope": ["support.type.property-name.json"],
+ "settings": {
+ "foreground": "#0451A5"
+ }
+ },
+ {
+ "scope": "keyword",
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": "keyword.control",
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": "keyword.operator",
+ "settings": {
+ "foreground": "#000000"
+ }
+ },
+ {
+ "scope": [
+ "keyword.operator.new",
+ "keyword.operator.expression",
+ "keyword.operator.cast",
+ "keyword.operator.sizeof",
+ "keyword.operator.alignof",
+ "keyword.operator.typeid",
+ "keyword.operator.alignas",
+ "keyword.operator.instanceof",
+ "keyword.operator.logical.python",
+ "keyword.operator.wordlike"
+ ],
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": "keyword.other.unit",
+ "settings": {
+ "foreground": "#096d48"
+ }
+ },
+ {
+ "scope": ["punctuation.section.embedded.begin.php", "punctuation.section.embedded.end.php"],
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": "support.function.git-rebase",
+ "settings": {
+ "foreground": "#0451A5"
+ }
+ },
+ {
+ "scope": "constant.sha.git-rebase",
+ "settings": {
+ "foreground": "#096d48"
+ }
+ },
+ {
+ "scope": [
+ "storage.modifier.import.java",
+ "variable.language.wildcard.java",
+ "storage.modifier.package.java"
+ ],
+ "settings": {
+ "foreground": "#000000"
+ }
+ },
+ {
+ "scope": "variable.language",
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": [
+ "entity.name.function",
+ "support.function",
+ "support.constant.handlebars",
+ "source.powershell variable.other.member",
+ "entity.name.operator.custom-literal"
+ ],
+ "settings": {
+ "foreground": "#5e2cbc"
+ }
+ },
+ {
+ "scope": [
+ "support.class",
+ "support.type",
+ "entity.name.type",
+ "entity.name.namespace",
+ "entity.other.attribute",
+ "entity.name.scope-resolution",
+ "entity.name.class",
+ "storage.type.numeric.go",
+ "storage.type.byte.go",
+ "storage.type.boolean.go",
+ "storage.type.string.go",
+ "storage.type.uintptr.go",
+ "storage.type.error.go",
+ "storage.type.rune.go",
+ "storage.type.cs",
+ "storage.type.generic.cs",
+ "storage.type.modifier.cs",
+ "storage.type.variable.cs",
+ "storage.type.annotation.java",
+ "storage.type.generic.java",
+ "storage.type.java",
+ "storage.type.object.array.java",
+ "storage.type.primitive.array.java",
+ "storage.type.primitive.java",
+ "storage.type.token.java",
+ "storage.type.groovy",
+ "storage.type.annotation.groovy",
+ "storage.type.parameters.groovy",
+ "storage.type.generic.groovy",
+ "storage.type.object.array.groovy",
+ "storage.type.primitive.array.groovy",
+ "storage.type.primitive.groovy"
+ ],
+ "settings": {
+ "foreground": "#185E73"
+ }
+ },
+ {
+ "scope": [
+ "meta.type.cast.expr",
+ "meta.type.new.expr",
+ "support.constant.math",
+ "support.constant.dom",
+ "support.constant.json",
+ "entity.other.inherited-class"
+ ],
+ "settings": {
+ "foreground": "#185E73"
+ }
+ },
+ {
+ "scope": [
+ "keyword.control",
+ "source.cpp keyword.operator.new",
+ "source.cpp keyword.operator.delete",
+ "keyword.other.using",
+ "keyword.other.operator",
+ "entity.name.operator"
+ ],
+ "settings": {
+ "foreground": "#b5200d"
+ }
+ },
+ {
+ "scope": [
+ "variable",
+ "meta.definition.variable.name",
+ "support.variable",
+ "entity.name.variable",
+ "constant.other.placeholder"
+ ],
+ "settings": {
+ "foreground": "#001080"
+ }
+ },
+ {
+ "scope": ["variable.other.constant", "variable.other.enummember"],
+ "settings": {
+ "foreground": "#02715D"
+ }
+ },
+ {
+ "scope": ["meta.object-literal.key"],
+ "settings": {
+ "foreground": "#001080"
+ }
+ },
+ {
+ "scope": [
+ "support.constant.property-value",
+ "support.constant.font-name",
+ "support.constant.media-type",
+ "support.constant.media",
+ "constant.other.color.rgb-value",
+ "constant.other.rgb-value",
+ "support.constant.color"
+ ],
+ "settings": {
+ "foreground": "#0451A5"
+ }
+ },
+ {
+ "scope": [
+ "punctuation.definition.group.regexp",
+ "punctuation.definition.group.assertion.regexp",
+ "punctuation.definition.character-class.regexp",
+ "punctuation.character.set.begin.regexp",
+ "punctuation.character.set.end.regexp",
+ "keyword.operator.negation.regexp",
+ "support.other.parenthesis.regexp"
+ ],
+ "settings": {
+ "foreground": "#D16969"
+ }
+ },
+ {
+ "scope": [
+ "constant.character.character-class.regexp",
+ "constant.other.character-class.set.regexp",
+ "constant.other.character-class.regexp",
+ "constant.character.set.regexp"
+ ],
+ "settings": {
+ "foreground": "#811F3F"
+ }
+ },
+ {
+ "scope": "keyword.operator.quantifier.regexp",
+ "settings": {
+ "foreground": "#000000"
+ }
+ },
+ {
+ "scope": ["keyword.operator.or.regexp", "keyword.control.anchor.regexp"],
+ "settings": {
+ "foreground": "#EE0000"
+ }
+ },
+ {
+ "scope": "constant.character",
+ "settings": {
+ "foreground": "#0F4A85"
+ }
+ },
+ {
+ "scope": "constant.character.escape",
+ "settings": {
+ "foreground": "#EE0000"
+ }
+ },
+ {
+ "scope": "entity.name.label",
+ "settings": {
+ "foreground": "#000000"
+ }
+ },
+ {
+ "scope": "token.info-token",
+ "settings": {
+ "foreground": "#316BCD"
+ }
+ },
+ {
+ "scope": "token.warn-token",
+ "settings": {
+ "foreground": "#CD9731"
+ }
+ },
+ {
+ "scope": "token.error-token",
+ "settings": {
+ "foreground": "#CD3131"
+ }
+ },
+ {
+ "scope": "token.debug-token",
+ "settings": {
+ "foreground": "#800080"
+ }
+ }
+ ]
+}
diff --git a/node_modules/shiki/themes/light-plus.json b/node_modules/shiki/themes/light-plus.json
new file mode 100644
index 0000000..760dc26
--- /dev/null
+++ b/node_modules/shiki/themes/light-plus.json
@@ -0,0 +1,598 @@
+{
+ "$schema": "vscode://schemas/color-theme",
+ "name": "light-plus",
+ "tokenColors": [
+ {
+ "settings": {
+ "foreground": "#000000"
+ }
+ },
+ {
+ "scope": ["meta.embedded", "source.groovy.embedded", "string meta.image.inline.markdown"],
+ "settings": {
+ "foreground": "#000000ff"
+ }
+ },
+ {
+ "scope": "emphasis",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "strong",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "meta.diff.header",
+ "settings": {
+ "foreground": "#000080"
+ }
+ },
+ {
+ "name": "Comments",
+ "scope": ["comment", "string.quoted.docstring"],
+ "settings": {
+ "foreground": "#008000"
+ }
+ },
+ {
+ "scope": "constant.language",
+ "settings": {
+ "foreground": "#0000ff"
+ }
+ },
+ {
+ "scope": [
+ "constant.numeric",
+ "variable.other.enummember",
+ "keyword.operator.plus.exponent",
+ "keyword.operator.minus.exponent"
+ ],
+ "settings": {
+ "foreground": "#098658"
+ }
+ },
+ {
+ "scope": "constant.regexp",
+ "settings": {
+ "foreground": "#811f3f"
+ }
+ },
+ {
+ "name": "css tags in selectors, xml tags",
+ "scope": "entity.name.tag",
+ "settings": {
+ "foreground": "#800000"
+ }
+ },
+ {
+ "scope": "entity.name.selector",
+ "settings": {
+ "foreground": "#800000"
+ }
+ },
+ {
+ "scope": "entity.other.attribute-name",
+ "settings": {
+ "foreground": "#e50000"
+ }
+ },
+ {
+ "scope": [
+ "entity.other.attribute-name.class.css",
+ "entity.other.attribute-name.class.mixin.css",
+ "entity.other.attribute-name.id.css",
+ "entity.other.attribute-name.parent-selector.css",
+ "entity.other.attribute-name.pseudo-class.css",
+ "entity.other.attribute-name.pseudo-element.css",
+ "source.css.less entity.other.attribute-name.id",
+ "entity.other.attribute-name.scss"
+ ],
+ "settings": {
+ "foreground": "#800000"
+ }
+ },
+ {
+ "scope": "invalid",
+ "settings": {
+ "foreground": "#cd3131"
+ }
+ },
+ {
+ "scope": "markup.underline",
+ "settings": {
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "scope": "markup.bold",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#000080"
+ }
+ },
+ {
+ "scope": "markup.heading",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#800000"
+ }
+ },
+ {
+ "scope": "markup.italic",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "markup.strikethrough",
+ "settings": {
+ "fontStyle": "strikethrough"
+ }
+ },
+ {
+ "scope": "markup.inserted",
+ "settings": {
+ "foreground": "#098658"
+ }
+ },
+ {
+ "scope": "markup.deleted",
+ "settings": {
+ "foreground": "#a31515"
+ }
+ },
+ {
+ "scope": "markup.changed",
+ "settings": {
+ "foreground": "#0451a5"
+ }
+ },
+ {
+ "scope": [
+ "punctuation.definition.quote.begin.markdown",
+ "punctuation.definition.list.begin.markdown"
+ ],
+ "settings": {
+ "foreground": "#0451a5"
+ }
+ },
+ {
+ "scope": "markup.inline.raw",
+ "settings": {
+ "foreground": "#800000"
+ }
+ },
+ {
+ "name": "brackets of XML/HTML tags",
+ "scope": "punctuation.definition.tag",
+ "settings": {
+ "foreground": "#800000"
+ }
+ },
+ {
+ "scope": ["meta.preprocessor", "entity.name.function.preprocessor"],
+ "settings": {
+ "foreground": "#0000ff"
+ }
+ },
+ {
+ "scope": "meta.preprocessor.string",
+ "settings": {
+ "foreground": "#a31515"
+ }
+ },
+ {
+ "scope": "meta.preprocessor.numeric",
+ "settings": {
+ "foreground": "#098658"
+ }
+ },
+ {
+ "scope": "meta.structure.dictionary.key.python",
+ "settings": {
+ "foreground": "#0451a5"
+ }
+ },
+ {
+ "scope": "storage",
+ "settings": {
+ "foreground": "#0000ff"
+ }
+ },
+ {
+ "scope": "storage.type",
+ "settings": {
+ "foreground": "#0000ff"
+ }
+ },
+ {
+ "scope": ["storage.modifier", "keyword.operator.noexcept"],
+ "settings": {
+ "foreground": "#0000ff"
+ }
+ },
+ {
+ "scope": ["string", "meta.embedded.assembly"],
+ "settings": {
+ "foreground": "#a31515"
+ }
+ },
+ {
+ "scope": [
+ "string.comment.buffered.block.pug",
+ "string.quoted.pug",
+ "string.interpolated.pug",
+ "string.unquoted.plain.in.yaml",
+ "string.unquoted.plain.out.yaml",
+ "string.unquoted.block.yaml",
+ "string.quoted.single.yaml",
+ "string.quoted.double.xml",
+ "string.quoted.single.xml",
+ "string.unquoted.cdata.xml",
+ "string.quoted.double.html",
+ "string.quoted.single.html",
+ "string.unquoted.html",
+ "string.quoted.single.handlebars",
+ "string.quoted.double.handlebars"
+ ],
+ "settings": {
+ "foreground": "#0000ff"
+ }
+ },
+ {
+ "scope": "string.regexp",
+ "settings": {
+ "foreground": "#811f3f"
+ }
+ },
+ {
+ "name": "String interpolation",
+ "scope": [
+ "punctuation.definition.template-expression.begin",
+ "punctuation.definition.template-expression.end",
+ "punctuation.section.embedded"
+ ],
+ "settings": {
+ "foreground": "#0000ff"
+ }
+ },
+ {
+ "name": "Reset JavaScript string interpolation expression",
+ "scope": ["meta.template.expression"],
+ "settings": {
+ "foreground": "#000000"
+ }
+ },
+ {
+ "scope": [
+ "support.constant.property-value",
+ "support.constant.font-name",
+ "support.constant.media-type",
+ "support.constant.media",
+ "constant.other.color.rgb-value",
+ "constant.other.rgb-value",
+ "support.constant.color"
+ ],
+ "settings": {
+ "foreground": "#0451a5"
+ }
+ },
+ {
+ "scope": [
+ "support.type.vendored.property-name",
+ "support.type.property-name",
+ "variable.css",
+ "variable.scss",
+ "variable.other.less",
+ "source.coffee.embedded"
+ ],
+ "settings": {
+ "foreground": "#e50000"
+ }
+ },
+ {
+ "scope": ["support.type.property-name.json"],
+ "settings": {
+ "foreground": "#0451a5"
+ }
+ },
+ {
+ "scope": "keyword",
+ "settings": {
+ "foreground": "#0000ff"
+ }
+ },
+ {
+ "scope": "keyword.control",
+ "settings": {
+ "foreground": "#0000ff"
+ }
+ },
+ {
+ "scope": "keyword.operator",
+ "settings": {
+ "foreground": "#000000"
+ }
+ },
+ {
+ "scope": [
+ "keyword.operator.new",
+ "keyword.operator.expression",
+ "keyword.operator.cast",
+ "keyword.operator.sizeof",
+ "keyword.operator.alignof",
+ "keyword.operator.typeid",
+ "keyword.operator.alignas",
+ "keyword.operator.instanceof",
+ "keyword.operator.logical.python",
+ "keyword.operator.wordlike"
+ ],
+ "settings": {
+ "foreground": "#0000ff"
+ }
+ },
+ {
+ "scope": "keyword.other.unit",
+ "settings": {
+ "foreground": "#098658"
+ }
+ },
+ {
+ "scope": ["punctuation.section.embedded.begin.php", "punctuation.section.embedded.end.php"],
+ "settings": {
+ "foreground": "#800000"
+ }
+ },
+ {
+ "scope": "support.function.git-rebase",
+ "settings": {
+ "foreground": "#0451a5"
+ }
+ },
+ {
+ "scope": "constant.sha.git-rebase",
+ "settings": {
+ "foreground": "#098658"
+ }
+ },
+ {
+ "name": "coloring of the Java import and package identifiers",
+ "scope": [
+ "storage.modifier.import.java",
+ "variable.language.wildcard.java",
+ "storage.modifier.package.java"
+ ],
+ "settings": {
+ "foreground": "#000000"
+ }
+ },
+ {
+ "name": "this.self",
+ "scope": "variable.language",
+ "settings": {
+ "foreground": "#0000ff"
+ }
+ },
+ {
+ "name": "Function declarations",
+ "scope": [
+ "entity.name.function",
+ "support.function",
+ "support.constant.handlebars",
+ "source.powershell variable.other.member",
+ "entity.name.operator.custom-literal"
+ ],
+ "settings": {
+ "foreground": "#795E26"
+ }
+ },
+ {
+ "name": "Types declaration and references",
+ "scope": [
+ "support.class",
+ "support.type",
+ "entity.name.type",
+ "entity.name.namespace",
+ "entity.other.attribute",
+ "entity.name.scope-resolution",
+ "entity.name.class",
+ "storage.type.numeric.go",
+ "storage.type.byte.go",
+ "storage.type.boolean.go",
+ "storage.type.string.go",
+ "storage.type.uintptr.go",
+ "storage.type.error.go",
+ "storage.type.rune.go",
+ "storage.type.cs",
+ "storage.type.generic.cs",
+ "storage.type.modifier.cs",
+ "storage.type.variable.cs",
+ "storage.type.annotation.java",
+ "storage.type.generic.java",
+ "storage.type.java",
+ "storage.type.object.array.java",
+ "storage.type.primitive.array.java",
+ "storage.type.primitive.java",
+ "storage.type.token.java",
+ "storage.type.groovy",
+ "storage.type.annotation.groovy",
+ "storage.type.parameters.groovy",
+ "storage.type.generic.groovy",
+ "storage.type.object.array.groovy",
+ "storage.type.primitive.array.groovy",
+ "storage.type.primitive.groovy"
+ ],
+ "settings": {
+ "foreground": "#267f99"
+ }
+ },
+ {
+ "name": "Types declaration and references, TS grammar specific",
+ "scope": [
+ "meta.type.cast.expr",
+ "meta.type.new.expr",
+ "support.constant.math",
+ "support.constant.dom",
+ "support.constant.json",
+ "entity.other.inherited-class"
+ ],
+ "settings": {
+ "foreground": "#267f99"
+ }
+ },
+ {
+ "name": "Control flow / Special keywords",
+ "scope": [
+ "keyword.control",
+ "source.cpp keyword.operator.new",
+ "source.cpp keyword.operator.delete",
+ "keyword.other.using",
+ "keyword.other.operator",
+ "entity.name.operator"
+ ],
+ "settings": {
+ "foreground": "#AF00DB"
+ }
+ },
+ {
+ "name": "Variable and parameter name",
+ "scope": [
+ "variable",
+ "meta.definition.variable.name",
+ "support.variable",
+ "entity.name.variable",
+ "constant.other.placeholder"
+ ],
+ "settings": {
+ "foreground": "#001080"
+ }
+ },
+ {
+ "name": "Constants and enums",
+ "scope": ["variable.other.constant", "variable.other.enummember"],
+ "settings": {
+ "foreground": "#0070C1"
+ }
+ },
+ {
+ "name": "Object keys, TS grammar specific",
+ "scope": ["meta.object-literal.key"],
+ "settings": {
+ "foreground": "#001080"
+ }
+ },
+ {
+ "name": "CSS property value",
+ "scope": [
+ "support.constant.property-value",
+ "support.constant.font-name",
+ "support.constant.media-type",
+ "support.constant.media",
+ "constant.other.color.rgb-value",
+ "constant.other.rgb-value",
+ "support.constant.color"
+ ],
+ "settings": {
+ "foreground": "#0451a5"
+ }
+ },
+ {
+ "name": "Regular expression groups",
+ "scope": [
+ "punctuation.definition.group.regexp",
+ "punctuation.definition.group.assertion.regexp",
+ "punctuation.definition.character-class.regexp",
+ "punctuation.character.set.begin.regexp",
+ "punctuation.character.set.end.regexp",
+ "keyword.operator.negation.regexp",
+ "support.other.parenthesis.regexp"
+ ],
+ "settings": {
+ "foreground": "#d16969"
+ }
+ },
+ {
+ "scope": [
+ "constant.character.character-class.regexp",
+ "constant.other.character-class.set.regexp",
+ "constant.other.character-class.regexp",
+ "constant.character.set.regexp"
+ ],
+ "settings": {
+ "foreground": "#811f3f"
+ }
+ },
+ {
+ "scope": "keyword.operator.quantifier.regexp",
+ "settings": {
+ "foreground": "#000000"
+ }
+ },
+ {
+ "scope": ["keyword.operator.or.regexp", "keyword.control.anchor.regexp"],
+ "settings": {
+ "foreground": "#EE0000"
+ }
+ },
+ {
+ "scope": ["constant.character", "constant.other.option"],
+ "settings": {
+ "foreground": "#0000ff"
+ }
+ },
+ {
+ "scope": "constant.character.escape",
+ "settings": {
+ "foreground": "#EE0000"
+ }
+ },
+ {
+ "scope": "entity.name.label",
+ "settings": {
+ "foreground": "#000000"
+ }
+ }
+ ],
+ "semanticHighlighting": true,
+ "semanticTokenColors": {
+ "newOperator": "#AF00DB",
+ "stringLiteral": "#a31515",
+ "customLiteral": "#795E26",
+ "numberLiteral": "#098658"
+ },
+ "colors": {
+ "checkbox.border": "#919191",
+ "editor.background": "#FFFFFF",
+ "editor.foreground": "#000000",
+ "editor.inactiveSelectionBackground": "#E5EBF1",
+ "editorIndentGuide.background": "#D3D3D3",
+ "editorIndentGuide.activeBackground": "#939393",
+ "editor.selectionHighlightBackground": "#ADD6FF80",
+ "editorSuggestWidget.background": "#F3F3F3",
+ "activityBarBadge.background": "#007ACC",
+ "sideBarTitle.foreground": "#6F6F6F",
+ "list.hoverBackground": "#E8E8E8",
+ "menu.border": "#D4D4D4",
+ "input.placeholderForeground": "#767676",
+ "searchEditor.textInputBorder": "#CECECE",
+ "settings.textInputBorder": "#CECECE",
+ "settings.numberInputBorder": "#CECECE",
+ "statusBarItem.remoteForeground": "#FFF",
+ "statusBarItem.remoteBackground": "#16825D",
+ "ports.iconRunningProcessForeground": "#369432",
+ "sideBarSectionHeader.background": "#0000",
+ "sideBarSectionHeader.border": "#61616130",
+ "tab.lastPinnedBorder": "#61616130",
+ "notebook.cellBorderColor": "#E8E8E8",
+ "notebook.selectedCellBackground": "#c8ddf150",
+ "statusBarItem.errorBackground": "#c72e0f",
+ "list.activeSelectionIconForeground": "#FFF",
+ "list.focusAndSelectionOutline": "#90C2F9",
+ "terminal.inactiveSelectionBackground": "#E5EBF1",
+ "widget.border": "#d4d4d4"
+ }
+}
diff --git a/node_modules/shiki/themes/material-theme-darker.json b/node_modules/shiki/themes/material-theme-darker.json
new file mode 100644
index 0000000..fecc349
--- /dev/null
+++ b/node_modules/shiki/themes/material-theme-darker.json
@@ -0,0 +1,814 @@
+{
+ "name": "material-theme-darker",
+ "semanticHighlighting": true,
+ "tokenColors": [
+ {
+ "name": "Global settings",
+ "settings": {
+ "background": "#212121",
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "String",
+ "scope": "string",
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ },
+ {
+ "name": "Punctuation",
+ "scope": "punctuation, constant.other.symbol",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "String Escape",
+ "scope": "constant.character.escape, text.html constant.character.entity.named",
+ "settings": {
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "Boolean",
+ "scope": "constant.language.boolean",
+ "settings": {
+ "foreground": "#ff9cac"
+ }
+ },
+ {
+ "name": "Number",
+ "scope": "constant.numeric",
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "Variable",
+ "scope": "variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments",
+ "settings": {
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "Other Keyword",
+ "scope": "keyword.other",
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "Keyword",
+ "scope": "keyword, modifier, variable.language.this, support.type.object, constant.language",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Function call",
+ "scope": "entity.name.function, support.function",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Storage",
+ "scope": "storage.type, storage.modifier, storage.control",
+ "settings": {
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "name": "Modules",
+ "scope": "support.module, support.node",
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Type",
+ "scope": "support.type, constant.other.key",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "Type",
+ "scope": "entity.name.type, entity.other.inherited-class, entity.other",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "Comment",
+ "scope": "comment",
+ "settings": {
+ "foreground": "#545454",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Comment",
+ "scope": "comment punctuation.definition.comment, string.quoted.docstring",
+ "settings": {
+ "foreground": "#545454",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Punctuation",
+ "scope": "punctuation",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Class",
+ "scope": "entity.name, entity.name.type.class, support.type, support.class, meta.use",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "Class variable",
+ "scope": "variable.object.property, meta.field.declaration entity.name.function",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Class method",
+ "scope": "meta.definition.method entity.name.function",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Function definition",
+ "scope": "meta.function entity.name.function",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Template expression",
+ "scope": "template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Reset embedded/template expression colors",
+ "scope": "meta.embedded, source.groovy.embedded, meta.template.expression",
+ "settings": {
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "YAML key",
+ "scope": "entity.name.tag.yaml",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "JSON key",
+ "scope": "meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "JSON constant",
+ "scope": "constant.language.json",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "CSS class",
+ "scope": "entity.other.attribute-name.class",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "CSS ID",
+ "scope": "entity.other.attribute-name.id",
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "CSS tag",
+ "scope": "source.css entity.name.tag",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "CSS properties",
+ "scope": "support.type.property-name.css",
+ "settings": {
+ "foreground": "#B2CCD6"
+ }
+ },
+ {
+ "name": "HTML tag outer",
+ "scope": "meta.tag, punctuation.definition.tag",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "HTML tag inner",
+ "scope": "entity.name.tag",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "HTML tag attribute",
+ "scope": "entity.other.attribute-name",
+ "settings": {
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "name": "HTML entities",
+ "scope": "punctuation.definition.entity.html",
+ "settings": {
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "Markdown heading",
+ "scope": "markup.heading",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Markdown link text",
+ "scope": "text.html.markdown meta.link.inline, meta.link.reference",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Markdown list item",
+ "scope": "text.html.markdown beginning.punctuation.definition.list",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Markdown italic",
+ "scope": "markup.italic",
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Markdown bold",
+ "scope": "markup.bold",
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "Markdown bold italic",
+ "scope": "markup.bold markup.italic, markup.italic markup.bold",
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "italic bold"
+ }
+ },
+ {
+ "name": "Markdown code block",
+ "scope": "markup.fenced_code.block.markdown punctuation.definition.markdown",
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ },
+ {
+ "name": "Markdown inline code",
+ "scope": "markup.inline.raw.string.markdown",
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ },
+ {
+ "name": "INI property name",
+ "scope": "keyword.other.definition.ini",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "INI section title",
+ "scope": "entity.name.section.group-title.ini",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "C# class",
+ "scope": "source.cs meta.class.identifier storage.type",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "C# class method",
+ "scope": "source.cs meta.method.identifier entity.name.function",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "C# function call",
+ "scope": "source.cs meta.method-call meta.method, source.cs entity.name.function",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "C# type",
+ "scope": "source.cs storage.type",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "C# return type",
+ "scope": "source.cs meta.method.return-type",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "C# preprocessor",
+ "scope": "source.cs meta.preprocessor",
+ "settings": {
+ "foreground": "#545454"
+ }
+ },
+ {
+ "name": "C# namespace",
+ "scope": "source.cs entity.name.type.namespace",
+ "settings": {
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "JSX Text",
+ "scope": "meta.jsx.children, SXNested",
+ "settings": {
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "JSX Components name",
+ "scope": "support.class.component",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "C-related Block Level Variables",
+ "scope": "source.cpp meta.block variable.other",
+ "settings": {
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "Member Access Meta",
+ "scope": "source.python meta.member.access.python",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Function Call",
+ "scope": "source.python meta.function-call.python, meta.function-call.arguments",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Blocks",
+ "scope": "meta.block",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Function Call",
+ "scope": "entity.name.function.call",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Namespaces",
+ "scope": "source.php support.other.namespace, source.php meta.use support.class",
+ "settings": {
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "Constant keywords",
+ "scope": "constant.keyword",
+ "settings": {
+ "foreground": "#89DDFF",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Entity name",
+ "scope": "entity.name.function",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Global settings",
+ "settings": {
+ "background": "#212121",
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "Markup Deleted",
+ "scope": ["markup.deleted"],
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Markup Inserted",
+ "scope": ["markup.inserted"],
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ },
+ {
+ "name": "Markup Underline",
+ "scope": ["markup.underline"],
+ "settings": {
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "name": "Keyword Control",
+ "scope": ["keyword.control"],
+ "settings": {
+ "foreground": "#89DDFF",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Parameter",
+ "scope": ["variable.parameter"],
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Python - Self Parameter",
+ "scope": ["variable.parameter.function.language.special.self.python"],
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Python - Format Placeholder",
+ "scope": ["constant.character.format.placeholder.other.python"],
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "Markdown - Blockquote",
+ "scope": ["markup.quote"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Markdown - Fenced Language",
+ "scope": ["markup.fenced_code.block"],
+ "settings": {
+ "foreground": "#EEFFFF90"
+ }
+ },
+ {
+ "name": "Markdown - Blockquote Punctuation",
+ "scope": ["punctuation.definition.quote"],
+ "settings": {
+ "foreground": "#ff9cac"
+ }
+ },
+ {
+ "name": "JSON Key - Level 0",
+ "scope": ["meta.structure.dictionary.json support.type.property-name.json"],
+ "settings": {
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "name": "JSON Key - Level 1",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "JSON Key - Level 2",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "JSON Key - Level 3",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "JSON Key - Level 4",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#916b53"
+ }
+ },
+ {
+ "name": "JSON Key - Level 5",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "JSON Key - Level 6",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#ff9cac"
+ }
+ },
+ {
+ "name": "JSON Key - Level 7",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "name": "JSON Key - Level 8",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ }
+ ],
+ "colors": {
+ "focusBorder": "#FFFFFF00",
+ "foreground": "#EEFFFF",
+ "button.background": "#61616150",
+ "button.foreground": "#ffffff",
+ "dropdown.background": "#212121",
+ "input.background": "#2B2B2B",
+ "inputOption.activeBorder": "#EEFFFF30",
+ "list.activeSelectionBackground": "#212121",
+ "list.activeSelectionForeground": "#80CBC4",
+ "list.dropBackground": "#f0717880",
+ "list.focusBackground": "#EEFFFF20",
+ "list.focusForeground": "#EEFFFF",
+ "list.highlightForeground": "#80CBC4",
+ "list.hoverBackground": "#212121",
+ "list.inactiveSelectionBackground": "#00000030",
+ "activityBar.background": "#212121",
+ "activityBar.dropBackground": "#f0717880",
+ "activityBarBadge.background": "#80CBC4",
+ "activityBarBadge.foreground": "#000000",
+ "badge.background": "#00000030",
+ "badge.foreground": "#545454",
+ "sideBar.background": "#212121",
+ "sideBarSectionHeader.background": "#212121",
+ "editorGroup.dropBackground": "#f0717880",
+ "editorGroup.focusedEmptyBorder": "#f07178",
+ "editorGroupHeader.tabsBackground": "#212121",
+ "tab.border": "#212121",
+ "tab.activeBorder": "#80CBC4",
+ "tab.inactiveBackground": "#212121",
+ "tab.activeModifiedBorder": "#616161",
+ "tab.inactiveModifiedBorder": "#904348",
+ "tab.unfocusedActiveModifiedBorder": "#c05a60",
+ "tab.unfocusedInactiveModifiedBorder": "#904348",
+ "editor.background": "#212121",
+ "editor.foreground": "#EEFFFF",
+ "editorLineNumber.foreground": "#424242",
+ "editorLineNumber.activeForeground": "#616161",
+ "editorCursor.foreground": "#FFCC00",
+ "editor.selectionBackground": "#61616150",
+ "editor.selectionHighlightBackground": "#FFCC0020",
+ "editor.wordHighlightBackground": "#ff9cac30",
+ "editor.wordHighlightStrongBackground": "#C3E88D30",
+ "editor.findMatchHighlight": "#EEFFFF",
+ "editor.findRangeHighlightBackground": "#FFCB6B30",
+ "editor.lineHighlightBorder": "#00000000",
+ "editor.rangeHighlightBackground": "#FFFFFF0d",
+ "editorWhitespace.foreground": "#EEFFFF40",
+ "editorWidget.background": "#212121",
+ "editorHoverWidget.background": "#212121",
+ "editorMarkerNavigation.background": "#EEFFFF05",
+ "peekView.border": "#00000030",
+ "peekViewEditor.background": "#EEFFFF05",
+ "peekViewResult.background": "#EEFFFF05",
+ "peekViewTitle.background": "#EEFFFF05",
+ "panel.background": "#212121",
+ "panel.border": "#21212160",
+ "panelTitle.activeBorder": "#80CBC4",
+ "panelTitle.inactiveForeground": "#EEFFFF",
+ "notebook.focusedCellBorder": "#80CBC4",
+ "notebook.inactiveFocusedCellBorder": "#80CBC450",
+ "statusBar.background": "#212121",
+ "statusBar.debuggingBackground": "#C792EA",
+ "statusBar.debuggingForeground": "#ffffff",
+ "statusBar.noFolderBackground": "#212121",
+ "statusBarItem.activeBackground": "#f0717880",
+ "statusBarItem.hoverBackground": "#54545420",
+ "statusBarItem.remoteBackground": "#80CBC4",
+ "statusBarItem.remoteForeground": "#000000",
+ "titleBar.activeBackground": "#212121",
+ "pickerGroup.border": "#FFFFFF1a",
+ "terminal.ansiBlack": "#000000",
+ "terminal.ansiBlue": "#82AAFF",
+ "terminal.ansiBrightBlack": "#545454",
+ "terminal.ansiBrightBlue": "#82AAFF",
+ "terminal.ansiBrightCyan": "#89DDFF",
+ "terminal.ansiBrightGreen": "#C3E88D",
+ "terminal.ansiBrightMagenta": "#C792EA",
+ "terminal.ansiBrightRed": "#f07178",
+ "terminal.ansiBrightWhite": "#ffffff",
+ "terminal.ansiBrightYellow": "#FFCB6B",
+ "terminal.ansiCyan": "#89DDFF",
+ "terminal.ansiGreen": "#C3E88D",
+ "terminal.ansiMagenta": "#C792EA",
+ "terminal.ansiRed": "#f07178",
+ "terminal.ansiWhite": "#ffffff",
+ "terminal.ansiYellow": "#FFCB6B",
+ "debugToolBar.background": "#212121",
+ "debugConsole.errorForeground": "#f07178",
+ "debugConsole.infoForeground": "#89DDFF",
+ "debugConsole.warningForeground": "#FFCB6B",
+ "selection.background": "#00000080",
+ "editorRuler.foreground": "#424242",
+ "widget.shadow": "#00000030",
+ "scrollbar.shadow": "#00000030",
+ "editorLink.activeForeground": "#EEFFFF",
+ "progressBar.background": "#80CBC4",
+ "pickerGroup.foreground": "#80CBC4",
+ "tree.indentGuidesStroke": "#424242",
+ "terminalCursor.foreground": "#FFCB6B",
+ "terminalCursor.background": "#000000",
+ "inputOption.activeBackground": "#EEFFFF30",
+ "textLink.foreground": "#80CBC4",
+ "textLink.activeForeground": "#EEFFFF",
+ "sideBar.foreground": "#616161",
+ "sideBar.border": "#21212160",
+ "sideBarTitle.foreground": "#EEFFFF",
+ "sideBarSectionHeader.border": "#21212160",
+ "panel.dropBackground": "#EEFFFF",
+ "panelTitle.activeForeground": "#FFFFFF",
+ "editor.lineHighlightBackground": "#00000050",
+ "editor.findMatchBackground": "#000000",
+ "editor.findMatchHighlightBackground": "#00000050",
+ "editor.findMatchBorder": "#80CBC4",
+ "editor.findMatchHighlightBorder": "#ffffff30",
+ "editorIndentGuide.background": "#42424270",
+ "editorIndentGuide.activeBackground": "#424242",
+ "editorGroup.border": "#00000030",
+ "editorGutter.modifiedBackground": "#82AAFF60",
+ "editorGutter.addedBackground": "#C3E88D60",
+ "editorGutter.deletedBackground": "#f0717860",
+ "activityBar.border": "#21212160",
+ "activityBar.foreground": "#EEFFFF",
+ "activityBar.activeBorder": "#80CBC4",
+ "extensionBadge.remoteForeground": "#EEFFFF",
+ "scrollbarSlider.background": "#EEFFFF20",
+ "scrollbarSlider.hoverBackground": "#EEFFFF10",
+ "scrollbarSlider.activeBackground": "#80CBC4",
+ "tab.unfocusedActiveBorder": "#545454",
+ "tab.activeForeground": "#FFFFFF",
+ "tab.inactiveForeground": "#616161",
+ "tab.activeBackground": "#212121",
+ "tab.unfocusedActiveForeground": "#EEFFFF",
+ "editorWidget.resizeBorder": "#80CBC4",
+ "editorWidget.border": "#80CBC4",
+ "statusBar.border": "#21212160",
+ "statusBar.foreground": "#616161",
+ "editorBracketMatch.border": "#FFCC0050",
+ "editorBracketMatch.background": "#212121",
+ "editorOverviewRuler.findMatchForeground": "#80CBC4",
+ "editorOverviewRuler.border": "#212121",
+ "editorOverviewRuler.errorForeground": "#f0717840",
+ "editorOverviewRuler.infoForeground": "#82AAFF40",
+ "editorOverviewRuler.warningForeground": "#FFCB6B40",
+ "editorInfo.foreground": "#82AAFF70",
+ "editorWarning.foreground": "#FFCB6B70",
+ "editorError.foreground": "#f0717870",
+ "editorHoverWidget.border": "#FFFFFF10",
+ "titleBar.activeForeground": "#EEFFFF",
+ "titleBar.inactiveBackground": "#212121",
+ "titleBar.inactiveForeground": "#616161",
+ "titleBar.border": "#21212160",
+ "input.foreground": "#EEFFFF",
+ "input.placeholderForeground": "#EEFFFF60",
+ "input.border": "#FFFFFF10",
+ "inputValidation.errorBorder": "#f07178",
+ "inputValidation.infoBorder": "#82AAFF",
+ "inputValidation.warningBorder": "#FFCB6B",
+ "dropdown.border": "#FFFFFF10",
+ "quickInput.background": "#212121",
+ "quickInput.foreground": "#616161",
+ "list.hoverForeground": "#FFFFFF",
+ "list.inactiveSelectionForeground": "#80CBC4",
+ "quickInput.list.focusBackground": "#EEFFFF20",
+ "editorSuggestWidget.background": "#212121",
+ "editorSuggestWidget.foreground": "#EEFFFF",
+ "editorSuggestWidget.highlightForeground": "#80CBC4",
+ "editorSuggestWidget.selectedBackground": "#00000050",
+ "editorSuggestWidget.border": "#FFFFFF10",
+ "diffEditor.insertedTextBackground": "#89DDFF20",
+ "diffEditor.removedTextBackground": "#ff9cac20",
+ "notifications.background": "#212121",
+ "notifications.foreground": "#EEFFFF",
+ "notificationLink.foreground": "#80CBC4",
+ "extensionButton.prominentBackground": "#C3E88D90",
+ "extensionButton.prominentHoverBackground": "#C3E88D",
+ "extensionButton.prominentForeground": "#000000",
+ "peekViewEditorGutter.background": "#EEFFFF05",
+ "peekViewTitleDescription.foreground": "#EEFFFF60",
+ "peekViewResult.matchHighlightBackground": "#61616150",
+ "peekViewEditor.matchHighlightBackground": "#61616150",
+ "peekViewResult.selectionBackground": "#61616170",
+ "gitDecoration.deletedResourceForeground": "#f0717890",
+ "gitDecoration.conflictingResourceForeground": "#FFCB6B90",
+ "gitDecoration.modifiedResourceForeground": "#82AAFF90",
+ "gitDecoration.untrackedResourceForeground": "#C3E88D90",
+ "gitDecoration.ignoredResourceForeground": "#61616190",
+ "breadcrumb.background": "#212121",
+ "breadcrumb.foreground": "#616161",
+ "breadcrumb.focusForeground": "#EEFFFF",
+ "breadcrumb.activeSelectionForeground": "#80CBC4",
+ "breadcrumbPicker.background": "#212121",
+ "menu.background": "#212121",
+ "menu.foreground": "#EEFFFF",
+ "menu.selectionBackground": "#00000050",
+ "menu.selectionForeground": "#80CBC4",
+ "menu.selectionBorder": "#00000030",
+ "menu.separatorBackground": "#EEFFFF",
+ "menubar.selectionBackground": "#00000030",
+ "menubar.selectionForeground": "#80CBC4",
+ "menubar.selectionBorder": "#00000030",
+ "settings.dropdownForeground": "#EEFFFF",
+ "settings.dropdownBackground": "#212121",
+ "settings.numberInputForeground": "#EEFFFF",
+ "settings.numberInputBackground": "#212121",
+ "settings.textInputForeground": "#EEFFFF",
+ "settings.textInputBackground": "#212121",
+ "settings.headerForeground": "#80CBC4",
+ "settings.modifiedItemIndicator": "#80CBC4",
+ "settings.checkboxBackground": "#212121",
+ "settings.checkboxForeground": "#EEFFFF",
+ "listFilterWidget.background": "#00000030",
+ "listFilterWidget.outline": "#00000030",
+ "listFilterWidget.noMatchesOutline": "#00000030"
+ }
+}
diff --git a/node_modules/shiki/themes/material-theme-lighter.json b/node_modules/shiki/themes/material-theme-lighter.json
new file mode 100644
index 0000000..2786df2
--- /dev/null
+++ b/node_modules/shiki/themes/material-theme-lighter.json
@@ -0,0 +1,814 @@
+{
+ "name": "material-theme-lighter",
+ "semanticHighlighting": true,
+ "tokenColors": [
+ {
+ "name": "Global settings",
+ "settings": {
+ "background": "#FAFAFA",
+ "foreground": "#90A4AE"
+ }
+ },
+ {
+ "name": "String",
+ "scope": "string",
+ "settings": {
+ "foreground": "#91B859"
+ }
+ },
+ {
+ "name": "Punctuation",
+ "scope": "punctuation, constant.other.symbol",
+ "settings": {
+ "foreground": "#39ADB5"
+ }
+ },
+ {
+ "name": "String Escape",
+ "scope": "constant.character.escape, text.html constant.character.entity.named",
+ "settings": {
+ "foreground": "#90A4AE"
+ }
+ },
+ {
+ "name": "Boolean",
+ "scope": "constant.language.boolean",
+ "settings": {
+ "foreground": "#FF5370"
+ }
+ },
+ {
+ "name": "Number",
+ "scope": "constant.numeric",
+ "settings": {
+ "foreground": "#F76D47"
+ }
+ },
+ {
+ "name": "Variable",
+ "scope": "variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments",
+ "settings": {
+ "foreground": "#90A4AE"
+ }
+ },
+ {
+ "name": "Other Keyword",
+ "scope": "keyword.other",
+ "settings": {
+ "foreground": "#F76D47"
+ }
+ },
+ {
+ "name": "Keyword",
+ "scope": "keyword, modifier, variable.language.this, support.type.object, constant.language",
+ "settings": {
+ "foreground": "#39ADB5"
+ }
+ },
+ {
+ "name": "Function call",
+ "scope": "entity.name.function, support.function",
+ "settings": {
+ "foreground": "#6182B8"
+ }
+ },
+ {
+ "name": "Storage",
+ "scope": "storage.type, storage.modifier, storage.control",
+ "settings": {
+ "foreground": "#9C3EDA"
+ }
+ },
+ {
+ "name": "Modules",
+ "scope": "support.module, support.node",
+ "settings": {
+ "foreground": "#E53935",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Type",
+ "scope": "support.type, constant.other.key",
+ "settings": {
+ "foreground": "#E2931D"
+ }
+ },
+ {
+ "name": "Type",
+ "scope": "entity.name.type, entity.other.inherited-class, entity.other",
+ "settings": {
+ "foreground": "#E2931D"
+ }
+ },
+ {
+ "name": "Comment",
+ "scope": "comment",
+ "settings": {
+ "foreground": "#90A4AE",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Comment",
+ "scope": "comment punctuation.definition.comment, string.quoted.docstring",
+ "settings": {
+ "foreground": "#90A4AE",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Punctuation",
+ "scope": "punctuation",
+ "settings": {
+ "foreground": "#39ADB5"
+ }
+ },
+ {
+ "name": "Class",
+ "scope": "entity.name, entity.name.type.class, support.type, support.class, meta.use",
+ "settings": {
+ "foreground": "#E2931D"
+ }
+ },
+ {
+ "name": "Class variable",
+ "scope": "variable.object.property, meta.field.declaration entity.name.function",
+ "settings": {
+ "foreground": "#E53935"
+ }
+ },
+ {
+ "name": "Class method",
+ "scope": "meta.definition.method entity.name.function",
+ "settings": {
+ "foreground": "#E53935"
+ }
+ },
+ {
+ "name": "Function definition",
+ "scope": "meta.function entity.name.function",
+ "settings": {
+ "foreground": "#6182B8"
+ }
+ },
+ {
+ "name": "Template expression",
+ "scope": "template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end",
+ "settings": {
+ "foreground": "#39ADB5"
+ }
+ },
+ {
+ "name": "Reset embedded/template expression colors",
+ "scope": "meta.embedded, source.groovy.embedded, meta.template.expression",
+ "settings": {
+ "foreground": "#90A4AE"
+ }
+ },
+ {
+ "name": "YAML key",
+ "scope": "entity.name.tag.yaml",
+ "settings": {
+ "foreground": "#E53935"
+ }
+ },
+ {
+ "name": "JSON key",
+ "scope": "meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json",
+ "settings": {
+ "foreground": "#E53935"
+ }
+ },
+ {
+ "name": "JSON constant",
+ "scope": "constant.language.json",
+ "settings": {
+ "foreground": "#39ADB5"
+ }
+ },
+ {
+ "name": "CSS class",
+ "scope": "entity.other.attribute-name.class",
+ "settings": {
+ "foreground": "#E2931D"
+ }
+ },
+ {
+ "name": "CSS ID",
+ "scope": "entity.other.attribute-name.id",
+ "settings": {
+ "foreground": "#F76D47"
+ }
+ },
+ {
+ "name": "CSS tag",
+ "scope": "source.css entity.name.tag",
+ "settings": {
+ "foreground": "#E2931D"
+ }
+ },
+ {
+ "name": "CSS properties",
+ "scope": "support.type.property-name.css",
+ "settings": {
+ "foreground": "#8796B0"
+ }
+ },
+ {
+ "name": "HTML tag outer",
+ "scope": "meta.tag, punctuation.definition.tag",
+ "settings": {
+ "foreground": "#39ADB5"
+ }
+ },
+ {
+ "name": "HTML tag inner",
+ "scope": "entity.name.tag",
+ "settings": {
+ "foreground": "#E53935"
+ }
+ },
+ {
+ "name": "HTML tag attribute",
+ "scope": "entity.other.attribute-name",
+ "settings": {
+ "foreground": "#9C3EDA"
+ }
+ },
+ {
+ "name": "HTML entities",
+ "scope": "punctuation.definition.entity.html",
+ "settings": {
+ "foreground": "#90A4AE"
+ }
+ },
+ {
+ "name": "Markdown heading",
+ "scope": "markup.heading",
+ "settings": {
+ "foreground": "#39ADB5"
+ }
+ },
+ {
+ "name": "Markdown link text",
+ "scope": "text.html.markdown meta.link.inline, meta.link.reference",
+ "settings": {
+ "foreground": "#E53935"
+ }
+ },
+ {
+ "name": "Markdown list item",
+ "scope": "text.html.markdown beginning.punctuation.definition.list",
+ "settings": {
+ "foreground": "#39ADB5"
+ }
+ },
+ {
+ "name": "Markdown italic",
+ "scope": "markup.italic",
+ "settings": {
+ "foreground": "#E53935",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Markdown bold",
+ "scope": "markup.bold",
+ "settings": {
+ "foreground": "#E53935",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "Markdown bold italic",
+ "scope": "markup.bold markup.italic, markup.italic markup.bold",
+ "settings": {
+ "foreground": "#E53935",
+ "fontStyle": "italic bold"
+ }
+ },
+ {
+ "name": "Markdown code block",
+ "scope": "markup.fenced_code.block.markdown punctuation.definition.markdown",
+ "settings": {
+ "foreground": "#91B859"
+ }
+ },
+ {
+ "name": "Markdown inline code",
+ "scope": "markup.inline.raw.string.markdown",
+ "settings": {
+ "foreground": "#91B859"
+ }
+ },
+ {
+ "name": "INI property name",
+ "scope": "keyword.other.definition.ini",
+ "settings": {
+ "foreground": "#E53935"
+ }
+ },
+ {
+ "name": "INI section title",
+ "scope": "entity.name.section.group-title.ini",
+ "settings": {
+ "foreground": "#39ADB5"
+ }
+ },
+ {
+ "name": "C# class",
+ "scope": "source.cs meta.class.identifier storage.type",
+ "settings": {
+ "foreground": "#E2931D"
+ }
+ },
+ {
+ "name": "C# class method",
+ "scope": "source.cs meta.method.identifier entity.name.function",
+ "settings": {
+ "foreground": "#E53935"
+ }
+ },
+ {
+ "name": "C# function call",
+ "scope": "source.cs meta.method-call meta.method, source.cs entity.name.function",
+ "settings": {
+ "foreground": "#6182B8"
+ }
+ },
+ {
+ "name": "C# type",
+ "scope": "source.cs storage.type",
+ "settings": {
+ "foreground": "#E2931D"
+ }
+ },
+ {
+ "name": "C# return type",
+ "scope": "source.cs meta.method.return-type",
+ "settings": {
+ "foreground": "#E2931D"
+ }
+ },
+ {
+ "name": "C# preprocessor",
+ "scope": "source.cs meta.preprocessor",
+ "settings": {
+ "foreground": "#90A4AE"
+ }
+ },
+ {
+ "name": "C# namespace",
+ "scope": "source.cs entity.name.type.namespace",
+ "settings": {
+ "foreground": "#90A4AE"
+ }
+ },
+ {
+ "name": "JSX Text",
+ "scope": "meta.jsx.children, SXNested",
+ "settings": {
+ "foreground": "#90A4AE"
+ }
+ },
+ {
+ "name": "JSX Components name",
+ "scope": "support.class.component",
+ "settings": {
+ "foreground": "#E2931D"
+ }
+ },
+ {
+ "name": "C-related Block Level Variables",
+ "scope": "source.cpp meta.block variable.other",
+ "settings": {
+ "foreground": "#90A4AE"
+ }
+ },
+ {
+ "name": "Member Access Meta",
+ "scope": "source.python meta.member.access.python",
+ "settings": {
+ "foreground": "#E53935"
+ }
+ },
+ {
+ "name": "Function Call",
+ "scope": "source.python meta.function-call.python, meta.function-call.arguments",
+ "settings": {
+ "foreground": "#6182B8"
+ }
+ },
+ {
+ "name": "Blocks",
+ "scope": "meta.block",
+ "settings": {
+ "foreground": "#E53935"
+ }
+ },
+ {
+ "name": "Function Call",
+ "scope": "entity.name.function.call",
+ "settings": {
+ "foreground": "#6182B8"
+ }
+ },
+ {
+ "name": "Namespaces",
+ "scope": "source.php support.other.namespace, source.php meta.use support.class",
+ "settings": {
+ "foreground": "#90A4AE"
+ }
+ },
+ {
+ "name": "Constant keywords",
+ "scope": "constant.keyword",
+ "settings": {
+ "foreground": "#39ADB5",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Entity name",
+ "scope": "entity.name.function",
+ "settings": {
+ "foreground": "#6182B8"
+ }
+ },
+ {
+ "name": "Global settings",
+ "settings": {
+ "background": "#FAFAFA",
+ "foreground": "#90A4AE"
+ }
+ },
+ {
+ "name": "Markup Deleted",
+ "scope": ["markup.deleted"],
+ "settings": {
+ "foreground": "#E53935"
+ }
+ },
+ {
+ "name": "Markup Inserted",
+ "scope": ["markup.inserted"],
+ "settings": {
+ "foreground": "#91B859"
+ }
+ },
+ {
+ "name": "Markup Underline",
+ "scope": ["markup.underline"],
+ "settings": {
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "name": "Keyword Control",
+ "scope": ["keyword.control"],
+ "settings": {
+ "foreground": "#39ADB5",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Parameter",
+ "scope": ["variable.parameter"],
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Python - Self Parameter",
+ "scope": ["variable.parameter.function.language.special.self.python"],
+ "settings": {
+ "foreground": "#E53935",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Python - Format Placeholder",
+ "scope": ["constant.character.format.placeholder.other.python"],
+ "settings": {
+ "foreground": "#F76D47"
+ }
+ },
+ {
+ "name": "Markdown - Blockquote",
+ "scope": ["markup.quote"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#39ADB5"
+ }
+ },
+ {
+ "name": "Markdown - Fenced Language",
+ "scope": ["markup.fenced_code.block"],
+ "settings": {
+ "foreground": "#90A4AE90"
+ }
+ },
+ {
+ "name": "Markdown - Blockquote Punctuation",
+ "scope": ["punctuation.definition.quote"],
+ "settings": {
+ "foreground": "#FF5370"
+ }
+ },
+ {
+ "name": "JSON Key - Level 0",
+ "scope": ["meta.structure.dictionary.json support.type.property-name.json"],
+ "settings": {
+ "foreground": "#9C3EDA"
+ }
+ },
+ {
+ "name": "JSON Key - Level 1",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#E2931D"
+ }
+ },
+ {
+ "name": "JSON Key - Level 2",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#F76D47"
+ }
+ },
+ {
+ "name": "JSON Key - Level 3",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#E53935"
+ }
+ },
+ {
+ "name": "JSON Key - Level 4",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#916b53"
+ }
+ },
+ {
+ "name": "JSON Key - Level 5",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#6182B8"
+ }
+ },
+ {
+ "name": "JSON Key - Level 6",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#FF5370"
+ }
+ },
+ {
+ "name": "JSON Key - Level 7",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#9C3EDA"
+ }
+ },
+ {
+ "name": "JSON Key - Level 8",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#91B859"
+ }
+ }
+ ],
+ "colors": {
+ "focusBorder": "#FFFFFF00",
+ "foreground": "#90A4AE",
+ "button.background": "#80CBC440",
+ "button.foreground": "#ffffff",
+ "dropdown.background": "#FAFAFA",
+ "input.background": "#EEEEEE",
+ "inputOption.activeBorder": "#90A4AE30",
+ "list.activeSelectionBackground": "#FAFAFA",
+ "list.activeSelectionForeground": "#80CBC4",
+ "list.dropBackground": "#E5393580",
+ "list.focusBackground": "#90A4AE20",
+ "list.focusForeground": "#90A4AE",
+ "list.highlightForeground": "#80CBC4",
+ "list.hoverBackground": "#FAFAFA",
+ "list.inactiveSelectionBackground": "#CCD7DA50",
+ "activityBar.background": "#FAFAFA",
+ "activityBar.dropBackground": "#E5393580",
+ "activityBarBadge.background": "#80CBC4",
+ "activityBarBadge.foreground": "#000000",
+ "badge.background": "#CCD7DA30",
+ "badge.foreground": "#90A4AE",
+ "sideBar.background": "#FAFAFA",
+ "sideBarSectionHeader.background": "#FAFAFA",
+ "editorGroup.dropBackground": "#E5393580",
+ "editorGroup.focusedEmptyBorder": "#E53935",
+ "editorGroupHeader.tabsBackground": "#FAFAFA",
+ "tab.border": "#FAFAFA",
+ "tab.activeBorder": "#80CBC4",
+ "tab.inactiveBackground": "#FAFAFA",
+ "tab.activeModifiedBorder": "#7E939E",
+ "tab.inactiveModifiedBorder": "#89221f",
+ "tab.unfocusedActiveModifiedBorder": "#b72d2a",
+ "tab.unfocusedInactiveModifiedBorder": "#89221f",
+ "editor.background": "#FAFAFA",
+ "editor.foreground": "#90A4AE",
+ "editorLineNumber.foreground": "#CFD8DC",
+ "editorLineNumber.activeForeground": "#7E939E",
+ "editorCursor.foreground": "#272727",
+ "editor.selectionBackground": "#80CBC440",
+ "editor.selectionHighlightBackground": "#27272720",
+ "editor.wordHighlightBackground": "#FF537030",
+ "editor.wordHighlightStrongBackground": "#91B85930",
+ "editor.findMatchHighlight": "#90A4AE",
+ "editor.findRangeHighlightBackground": "#E2931D30",
+ "editor.lineHighlightBorder": "#CCD7DA00",
+ "editor.rangeHighlightBackground": "#FFFFFF0d",
+ "editorWhitespace.foreground": "#90A4AE40",
+ "editorWidget.background": "#FAFAFA",
+ "editorHoverWidget.background": "#FAFAFA",
+ "editorMarkerNavigation.background": "#90A4AE05",
+ "peekView.border": "#00000020",
+ "peekViewEditor.background": "#90A4AE05",
+ "peekViewResult.background": "#90A4AE05",
+ "peekViewTitle.background": "#90A4AE05",
+ "panel.background": "#FAFAFA",
+ "panel.border": "#FAFAFA60",
+ "panelTitle.activeBorder": "#80CBC4",
+ "panelTitle.inactiveForeground": "#90A4AE",
+ "notebook.focusedCellBorder": "#80CBC4",
+ "notebook.inactiveFocusedCellBorder": "#80CBC450",
+ "statusBar.background": "#FAFAFA",
+ "statusBar.debuggingBackground": "#9C3EDA",
+ "statusBar.debuggingForeground": "#FFFFFF",
+ "statusBar.noFolderBackground": "#FAFAFA",
+ "statusBarItem.activeBackground": "#E5393580",
+ "statusBarItem.hoverBackground": "#90A4AE20",
+ "statusBarItem.remoteBackground": "#80CBC4",
+ "statusBarItem.remoteForeground": "#000000",
+ "titleBar.activeBackground": "#FAFAFA",
+ "pickerGroup.border": "#FFFFFF1a",
+ "terminal.ansiBlack": "#000000",
+ "terminal.ansiBlue": "#6182B8",
+ "terminal.ansiBrightBlack": "#90A4AE",
+ "terminal.ansiBrightBlue": "#6182B8",
+ "terminal.ansiBrightCyan": "#39ADB5",
+ "terminal.ansiBrightGreen": "#91B859",
+ "terminal.ansiBrightMagenta": "#9C3EDA",
+ "terminal.ansiBrightRed": "#E53935",
+ "terminal.ansiBrightWhite": "#FFFFFF",
+ "terminal.ansiBrightYellow": "#E2931D",
+ "terminal.ansiCyan": "#39ADB5",
+ "terminal.ansiGreen": "#91B859",
+ "terminal.ansiMagenta": "#9C3EDA",
+ "terminal.ansiRed": "#E53935",
+ "terminal.ansiWhite": "#FFFFFF",
+ "terminal.ansiYellow": "#E2931D",
+ "debugToolBar.background": "#FAFAFA",
+ "debugConsole.errorForeground": "#E53935",
+ "debugConsole.infoForeground": "#39ADB5",
+ "debugConsole.warningForeground": "#E2931D",
+ "selection.background": "#CCD7DA80",
+ "editorRuler.foreground": "#B0BEC5",
+ "widget.shadow": "#00000020",
+ "scrollbar.shadow": "#00000020",
+ "editorLink.activeForeground": "#90A4AE",
+ "progressBar.background": "#80CBC4",
+ "pickerGroup.foreground": "#80CBC4",
+ "tree.indentGuidesStroke": "#B0BEC5",
+ "terminalCursor.foreground": "#E2931D",
+ "terminalCursor.background": "#000000",
+ "inputOption.activeBackground": "#90A4AE30",
+ "textLink.foreground": "#80CBC4",
+ "textLink.activeForeground": "#90A4AE",
+ "sideBar.foreground": "#7E939E",
+ "sideBar.border": "#FAFAFA60",
+ "sideBarTitle.foreground": "#90A4AE",
+ "sideBarSectionHeader.border": "#FAFAFA60",
+ "panel.dropBackground": "#90A4AE",
+ "panelTitle.activeForeground": "#000000",
+ "editor.lineHighlightBackground": "#CCD7DA50",
+ "editor.findMatchBackground": "#00000020",
+ "editor.findMatchHighlightBackground": "#00000010",
+ "editor.findMatchBorder": "#80CBC4",
+ "editor.findMatchHighlightBorder": "#00000030",
+ "editorIndentGuide.background": "#B0BEC570",
+ "editorIndentGuide.activeBackground": "#B0BEC5",
+ "editorGroup.border": "#00000020",
+ "editorGutter.modifiedBackground": "#6182B860",
+ "editorGutter.addedBackground": "#91B85960",
+ "editorGutter.deletedBackground": "#E5393560",
+ "activityBar.border": "#FAFAFA60",
+ "activityBar.foreground": "#90A4AE",
+ "activityBar.activeBorder": "#80CBC4",
+ "extensionBadge.remoteForeground": "#90A4AE",
+ "scrollbarSlider.background": "#90A4AE20",
+ "scrollbarSlider.hoverBackground": "#90A4AE10",
+ "scrollbarSlider.activeBackground": "#80CBC4",
+ "tab.unfocusedActiveBorder": "#90A4AE",
+ "tab.activeForeground": "#000000",
+ "tab.inactiveForeground": "#7E939E",
+ "tab.activeBackground": "#FAFAFA",
+ "tab.unfocusedActiveForeground": "#90A4AE",
+ "editorWidget.resizeBorder": "#80CBC4",
+ "editorWidget.border": "#80CBC4",
+ "statusBar.border": "#FAFAFA60",
+ "statusBar.foreground": "#7E939E",
+ "editorBracketMatch.border": "#27272750",
+ "editorBracketMatch.background": "#FAFAFA",
+ "editorOverviewRuler.findMatchForeground": "#80CBC4",
+ "editorOverviewRuler.border": "#FAFAFA",
+ "editorOverviewRuler.errorForeground": "#E5393540",
+ "editorOverviewRuler.infoForeground": "#6182B840",
+ "editorOverviewRuler.warningForeground": "#E2931D40",
+ "editorInfo.foreground": "#6182B870",
+ "editorWarning.foreground": "#E2931D70",
+ "editorError.foreground": "#E5393570",
+ "editorHoverWidget.border": "#00000010",
+ "titleBar.activeForeground": "#90A4AE",
+ "titleBar.inactiveBackground": "#FAFAFA",
+ "titleBar.inactiveForeground": "#7E939E",
+ "titleBar.border": "#FAFAFA60",
+ "input.foreground": "#90A4AE",
+ "input.placeholderForeground": "#90A4AE60",
+ "input.border": "#00000010",
+ "inputValidation.errorBorder": "#E53935",
+ "inputValidation.infoBorder": "#6182B8",
+ "inputValidation.warningBorder": "#E2931D",
+ "dropdown.border": "#00000010",
+ "quickInput.background": "#FAFAFA",
+ "quickInput.foreground": "#7E939E",
+ "list.hoverForeground": "#B1C7D3",
+ "list.inactiveSelectionForeground": "#80CBC4",
+ "quickInput.list.focusBackground": "#90A4AE20",
+ "editorSuggestWidget.background": "#FAFAFA",
+ "editorSuggestWidget.foreground": "#90A4AE",
+ "editorSuggestWidget.highlightForeground": "#80CBC4",
+ "editorSuggestWidget.selectedBackground": "#CCD7DA50",
+ "editorSuggestWidget.border": "#00000010",
+ "diffEditor.insertedTextBackground": "#39ADB520",
+ "diffEditor.removedTextBackground": "#FF537020",
+ "notifications.background": "#FAFAFA",
+ "notifications.foreground": "#90A4AE",
+ "notificationLink.foreground": "#80CBC4",
+ "extensionButton.prominentBackground": "#91B85990",
+ "extensionButton.prominentHoverBackground": "#91B859",
+ "extensionButton.prominentForeground": "#000000",
+ "peekViewEditorGutter.background": "#90A4AE05",
+ "peekViewTitleDescription.foreground": "#90A4AE60",
+ "peekViewResult.matchHighlightBackground": "#80CBC440",
+ "peekViewEditor.matchHighlightBackground": "#80CBC440",
+ "peekViewResult.selectionBackground": "#7E939E70",
+ "gitDecoration.deletedResourceForeground": "#E5393590",
+ "gitDecoration.conflictingResourceForeground": "#E2931D90",
+ "gitDecoration.modifiedResourceForeground": "#6182B890",
+ "gitDecoration.untrackedResourceForeground": "#91B85990",
+ "gitDecoration.ignoredResourceForeground": "#7E939E90",
+ "breadcrumb.background": "#FAFAFA",
+ "breadcrumb.foreground": "#7E939E",
+ "breadcrumb.focusForeground": "#90A4AE",
+ "breadcrumb.activeSelectionForeground": "#80CBC4",
+ "breadcrumbPicker.background": "#FAFAFA",
+ "menu.background": "#FAFAFA",
+ "menu.foreground": "#90A4AE",
+ "menu.selectionBackground": "#CCD7DA50",
+ "menu.selectionForeground": "#80CBC4",
+ "menu.selectionBorder": "#CCD7DA50",
+ "menu.separatorBackground": "#90A4AE",
+ "menubar.selectionBackground": "#CCD7DA50",
+ "menubar.selectionForeground": "#80CBC4",
+ "menubar.selectionBorder": "#CCD7DA50",
+ "settings.dropdownForeground": "#90A4AE",
+ "settings.dropdownBackground": "#FAFAFA",
+ "settings.numberInputForeground": "#90A4AE",
+ "settings.numberInputBackground": "#FAFAFA",
+ "settings.textInputForeground": "#90A4AE",
+ "settings.textInputBackground": "#FAFAFA",
+ "settings.headerForeground": "#80CBC4",
+ "settings.modifiedItemIndicator": "#80CBC4",
+ "settings.checkboxBackground": "#FAFAFA",
+ "settings.checkboxForeground": "#90A4AE",
+ "listFilterWidget.background": "#CCD7DA50",
+ "listFilterWidget.outline": "#CCD7DA50",
+ "listFilterWidget.noMatchesOutline": "#CCD7DA50"
+ }
+}
diff --git a/node_modules/shiki/themes/material-theme-ocean.json b/node_modules/shiki/themes/material-theme-ocean.json
new file mode 100644
index 0000000..3df90f8
--- /dev/null
+++ b/node_modules/shiki/themes/material-theme-ocean.json
@@ -0,0 +1,814 @@
+{
+ "name": "material-theme-ocean",
+ "semanticHighlighting": true,
+ "tokenColors": [
+ {
+ "name": "Global settings",
+ "settings": {
+ "background": "#0F111A",
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "String",
+ "scope": "string",
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ },
+ {
+ "name": "Punctuation",
+ "scope": "punctuation, constant.other.symbol",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "String Escape",
+ "scope": "constant.character.escape, text.html constant.character.entity.named",
+ "settings": {
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "Boolean",
+ "scope": "constant.language.boolean",
+ "settings": {
+ "foreground": "#ff9cac"
+ }
+ },
+ {
+ "name": "Number",
+ "scope": "constant.numeric",
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "Variable",
+ "scope": "variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments",
+ "settings": {
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "Other Keyword",
+ "scope": "keyword.other",
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "Keyword",
+ "scope": "keyword, modifier, variable.language.this, support.type.object, constant.language",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Function call",
+ "scope": "entity.name.function, support.function",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Storage",
+ "scope": "storage.type, storage.modifier, storage.control",
+ "settings": {
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "name": "Modules",
+ "scope": "support.module, support.node",
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Type",
+ "scope": "support.type, constant.other.key",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "Type",
+ "scope": "entity.name.type, entity.other.inherited-class, entity.other",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "Comment",
+ "scope": "comment",
+ "settings": {
+ "foreground": "#464B5D",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Comment",
+ "scope": "comment punctuation.definition.comment, string.quoted.docstring",
+ "settings": {
+ "foreground": "#464B5D",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Punctuation",
+ "scope": "punctuation",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Class",
+ "scope": "entity.name, entity.name.type.class, support.type, support.class, meta.use",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "Class variable",
+ "scope": "variable.object.property, meta.field.declaration entity.name.function",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Class method",
+ "scope": "meta.definition.method entity.name.function",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Function definition",
+ "scope": "meta.function entity.name.function",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Template expression",
+ "scope": "template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Reset embedded/template expression colors",
+ "scope": "meta.embedded, source.groovy.embedded, meta.template.expression",
+ "settings": {
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "YAML key",
+ "scope": "entity.name.tag.yaml",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "JSON key",
+ "scope": "meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "JSON constant",
+ "scope": "constant.language.json",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "CSS class",
+ "scope": "entity.other.attribute-name.class",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "CSS ID",
+ "scope": "entity.other.attribute-name.id",
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "CSS tag",
+ "scope": "source.css entity.name.tag",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "CSS properties",
+ "scope": "support.type.property-name.css",
+ "settings": {
+ "foreground": "#B2CCD6"
+ }
+ },
+ {
+ "name": "HTML tag outer",
+ "scope": "meta.tag, punctuation.definition.tag",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "HTML tag inner",
+ "scope": "entity.name.tag",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "HTML tag attribute",
+ "scope": "entity.other.attribute-name",
+ "settings": {
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "name": "HTML entities",
+ "scope": "punctuation.definition.entity.html",
+ "settings": {
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "Markdown heading",
+ "scope": "markup.heading",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Markdown link text",
+ "scope": "text.html.markdown meta.link.inline, meta.link.reference",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Markdown list item",
+ "scope": "text.html.markdown beginning.punctuation.definition.list",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Markdown italic",
+ "scope": "markup.italic",
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Markdown bold",
+ "scope": "markup.bold",
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "Markdown bold italic",
+ "scope": "markup.bold markup.italic, markup.italic markup.bold",
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "italic bold"
+ }
+ },
+ {
+ "name": "Markdown code block",
+ "scope": "markup.fenced_code.block.markdown punctuation.definition.markdown",
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ },
+ {
+ "name": "Markdown inline code",
+ "scope": "markup.inline.raw.string.markdown",
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ },
+ {
+ "name": "INI property name",
+ "scope": "keyword.other.definition.ini",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "INI section title",
+ "scope": "entity.name.section.group-title.ini",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "C# class",
+ "scope": "source.cs meta.class.identifier storage.type",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "C# class method",
+ "scope": "source.cs meta.method.identifier entity.name.function",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "C# function call",
+ "scope": "source.cs meta.method-call meta.method, source.cs entity.name.function",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "C# type",
+ "scope": "source.cs storage.type",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "C# return type",
+ "scope": "source.cs meta.method.return-type",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "C# preprocessor",
+ "scope": "source.cs meta.preprocessor",
+ "settings": {
+ "foreground": "#464B5D"
+ }
+ },
+ {
+ "name": "C# namespace",
+ "scope": "source.cs entity.name.type.namespace",
+ "settings": {
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "JSX Text",
+ "scope": "meta.jsx.children, SXNested",
+ "settings": {
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "JSX Components name",
+ "scope": "support.class.component",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "C-related Block Level Variables",
+ "scope": "source.cpp meta.block variable.other",
+ "settings": {
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "Member Access Meta",
+ "scope": "source.python meta.member.access.python",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Function Call",
+ "scope": "source.python meta.function-call.python, meta.function-call.arguments",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Blocks",
+ "scope": "meta.block",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Function Call",
+ "scope": "entity.name.function.call",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Namespaces",
+ "scope": "source.php support.other.namespace, source.php meta.use support.class",
+ "settings": {
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "Constant keywords",
+ "scope": "constant.keyword",
+ "settings": {
+ "foreground": "#89DDFF",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Entity name",
+ "scope": "entity.name.function",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Global settings",
+ "settings": {
+ "background": "#0F111A",
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "Markup Deleted",
+ "scope": ["markup.deleted"],
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Markup Inserted",
+ "scope": ["markup.inserted"],
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ },
+ {
+ "name": "Markup Underline",
+ "scope": ["markup.underline"],
+ "settings": {
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "name": "Keyword Control",
+ "scope": ["keyword.control"],
+ "settings": {
+ "foreground": "#89DDFF",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Parameter",
+ "scope": ["variable.parameter"],
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Python - Self Parameter",
+ "scope": ["variable.parameter.function.language.special.self.python"],
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Python - Format Placeholder",
+ "scope": ["constant.character.format.placeholder.other.python"],
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "Markdown - Blockquote",
+ "scope": ["markup.quote"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Markdown - Fenced Language",
+ "scope": ["markup.fenced_code.block"],
+ "settings": {
+ "foreground": "#A6ACCD90"
+ }
+ },
+ {
+ "name": "Markdown - Blockquote Punctuation",
+ "scope": ["punctuation.definition.quote"],
+ "settings": {
+ "foreground": "#ff9cac"
+ }
+ },
+ {
+ "name": "JSON Key - Level 0",
+ "scope": ["meta.structure.dictionary.json support.type.property-name.json"],
+ "settings": {
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "name": "JSON Key - Level 1",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "JSON Key - Level 2",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "JSON Key - Level 3",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "JSON Key - Level 4",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#916b53"
+ }
+ },
+ {
+ "name": "JSON Key - Level 5",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "JSON Key - Level 6",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#ff9cac"
+ }
+ },
+ {
+ "name": "JSON Key - Level 7",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "name": "JSON Key - Level 8",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ }
+ ],
+ "colors": {
+ "focusBorder": "#FFFFFF00",
+ "foreground": "#A6ACCD",
+ "button.background": "#717CB450",
+ "button.foreground": "#ffffff",
+ "dropdown.background": "#0F111A",
+ "input.background": "#1A1C25",
+ "inputOption.activeBorder": "#A6ACCD30",
+ "list.activeSelectionBackground": "#0F111A",
+ "list.activeSelectionForeground": "#80CBC4",
+ "list.dropBackground": "#f0717880",
+ "list.focusBackground": "#A6ACCD20",
+ "list.focusForeground": "#A6ACCD",
+ "list.highlightForeground": "#80CBC4",
+ "list.hoverBackground": "#0F111A",
+ "list.inactiveSelectionBackground": "#00000030",
+ "activityBar.background": "#0F111A",
+ "activityBar.dropBackground": "#f0717880",
+ "activityBarBadge.background": "#80CBC4",
+ "activityBarBadge.foreground": "#000000",
+ "badge.background": "#00000030",
+ "badge.foreground": "#464B5D",
+ "sideBar.background": "#0F111A",
+ "sideBarSectionHeader.background": "#0F111A",
+ "editorGroup.dropBackground": "#f0717880",
+ "editorGroup.focusedEmptyBorder": "#f07178",
+ "editorGroupHeader.tabsBackground": "#0F111A",
+ "tab.border": "#0F111A",
+ "tab.activeBorder": "#80CBC4",
+ "tab.inactiveBackground": "#0F111A",
+ "tab.activeModifiedBorder": "#525975",
+ "tab.inactiveModifiedBorder": "#904348",
+ "tab.unfocusedActiveModifiedBorder": "#c05a60",
+ "tab.unfocusedInactiveModifiedBorder": "#904348",
+ "editor.background": "#0F111A",
+ "editor.foreground": "#A6ACCD",
+ "editorLineNumber.foreground": "#3B3F5180",
+ "editorLineNumber.activeForeground": "#525975",
+ "editorCursor.foreground": "#FFCC00",
+ "editor.selectionBackground": "#717CB450",
+ "editor.selectionHighlightBackground": "#FFCC0020",
+ "editor.wordHighlightBackground": "#ff9cac30",
+ "editor.wordHighlightStrongBackground": "#C3E88D30",
+ "editor.findMatchHighlight": "#A6ACCD",
+ "editor.findRangeHighlightBackground": "#FFCB6B30",
+ "editor.lineHighlightBorder": "#00000000",
+ "editor.rangeHighlightBackground": "#FFFFFF0d",
+ "editorWhitespace.foreground": "#A6ACCD40",
+ "editorWidget.background": "#0F111A",
+ "editorHoverWidget.background": "#0F111A",
+ "editorMarkerNavigation.background": "#A6ACCD05",
+ "peekView.border": "#00000030",
+ "peekViewEditor.background": "#A6ACCD05",
+ "peekViewResult.background": "#A6ACCD05",
+ "peekViewTitle.background": "#A6ACCD05",
+ "panel.background": "#0F111A",
+ "panel.border": "#0F111A60",
+ "panelTitle.activeBorder": "#80CBC4",
+ "panelTitle.inactiveForeground": "#A6ACCD",
+ "notebook.focusedCellBorder": "#80CBC4",
+ "notebook.inactiveFocusedCellBorder": "#80CBC450",
+ "statusBar.background": "#0F111A",
+ "statusBar.debuggingBackground": "#C792EA",
+ "statusBar.debuggingForeground": "#ffffff",
+ "statusBar.noFolderBackground": "#0F111A",
+ "statusBarItem.activeBackground": "#f0717880",
+ "statusBarItem.hoverBackground": "#464B5D20",
+ "statusBarItem.remoteBackground": "#80CBC4",
+ "statusBarItem.remoteForeground": "#000000",
+ "titleBar.activeBackground": "#0F111A",
+ "pickerGroup.border": "#FFFFFF1a",
+ "terminal.ansiBlack": "#000000",
+ "terminal.ansiBlue": "#82AAFF",
+ "terminal.ansiBrightBlack": "#464B5D",
+ "terminal.ansiBrightBlue": "#82AAFF",
+ "terminal.ansiBrightCyan": "#89DDFF",
+ "terminal.ansiBrightGreen": "#C3E88D",
+ "terminal.ansiBrightMagenta": "#C792EA",
+ "terminal.ansiBrightRed": "#f07178",
+ "terminal.ansiBrightWhite": "#ffffff",
+ "terminal.ansiBrightYellow": "#FFCB6B",
+ "terminal.ansiCyan": "#89DDFF",
+ "terminal.ansiGreen": "#C3E88D",
+ "terminal.ansiMagenta": "#C792EA",
+ "terminal.ansiRed": "#f07178",
+ "terminal.ansiWhite": "#ffffff",
+ "terminal.ansiYellow": "#FFCB6B",
+ "debugToolBar.background": "#0F111A",
+ "debugConsole.errorForeground": "#f07178",
+ "debugConsole.infoForeground": "#89DDFF",
+ "debugConsole.warningForeground": "#FFCB6B",
+ "selection.background": "#00000080",
+ "editorRuler.foreground": "#3B3F51",
+ "widget.shadow": "#00000030",
+ "scrollbar.shadow": "#00000030",
+ "editorLink.activeForeground": "#A6ACCD",
+ "progressBar.background": "#80CBC4",
+ "pickerGroup.foreground": "#80CBC4",
+ "tree.indentGuidesStroke": "#3B3F51",
+ "terminalCursor.foreground": "#FFCB6B",
+ "terminalCursor.background": "#000000",
+ "inputOption.activeBackground": "#A6ACCD30",
+ "textLink.foreground": "#80CBC4",
+ "textLink.activeForeground": "#A6ACCD",
+ "sideBar.foreground": "#525975",
+ "sideBar.border": "#0F111A60",
+ "sideBarTitle.foreground": "#A6ACCD",
+ "sideBarSectionHeader.border": "#0F111A60",
+ "panel.dropBackground": "#A6ACCD",
+ "panelTitle.activeForeground": "#FFFFFF",
+ "editor.lineHighlightBackground": "#00000050",
+ "editor.findMatchBackground": "#000000",
+ "editor.findMatchHighlightBackground": "#00000050",
+ "editor.findMatchBorder": "#80CBC4",
+ "editor.findMatchHighlightBorder": "#ffffff30",
+ "editorIndentGuide.background": "#3B3F5170",
+ "editorIndentGuide.activeBackground": "#3B3F51",
+ "editorGroup.border": "#00000030",
+ "editorGutter.modifiedBackground": "#82AAFF60",
+ "editorGutter.addedBackground": "#C3E88D60",
+ "editorGutter.deletedBackground": "#f0717860",
+ "activityBar.border": "#0F111A60",
+ "activityBar.foreground": "#A6ACCD",
+ "activityBar.activeBorder": "#80CBC4",
+ "extensionBadge.remoteForeground": "#A6ACCD",
+ "scrollbarSlider.background": "#8F93A220",
+ "scrollbarSlider.hoverBackground": "#8F93A210",
+ "scrollbarSlider.activeBackground": "#80CBC4",
+ "tab.unfocusedActiveBorder": "#464B5D",
+ "tab.activeForeground": "#FFFFFF",
+ "tab.inactiveForeground": "#525975",
+ "tab.activeBackground": "#0F111A",
+ "tab.unfocusedActiveForeground": "#A6ACCD",
+ "editorWidget.resizeBorder": "#80CBC4",
+ "editorWidget.border": "#80CBC4",
+ "statusBar.border": "#0F111A60",
+ "statusBar.foreground": "#4B526D",
+ "editorBracketMatch.border": "#FFCC0050",
+ "editorBracketMatch.background": "#0F111A",
+ "editorOverviewRuler.findMatchForeground": "#80CBC4",
+ "editorOverviewRuler.border": "#0F111A",
+ "editorOverviewRuler.errorForeground": "#f0717840",
+ "editorOverviewRuler.infoForeground": "#82AAFF40",
+ "editorOverviewRuler.warningForeground": "#FFCB6B40",
+ "editorInfo.foreground": "#82AAFF70",
+ "editorWarning.foreground": "#FFCB6B70",
+ "editorError.foreground": "#f0717870",
+ "editorHoverWidget.border": "#FFFFFF10",
+ "titleBar.activeForeground": "#A6ACCD",
+ "titleBar.inactiveBackground": "#0F111A",
+ "titleBar.inactiveForeground": "#525975",
+ "titleBar.border": "#0F111A60",
+ "input.foreground": "#A6ACCD",
+ "input.placeholderForeground": "#A6ACCD60",
+ "input.border": "#FFFFFF10",
+ "inputValidation.errorBorder": "#f07178",
+ "inputValidation.infoBorder": "#82AAFF",
+ "inputValidation.warningBorder": "#FFCB6B",
+ "dropdown.border": "#FFFFFF10",
+ "quickInput.background": "#0F111A",
+ "quickInput.foreground": "#525975",
+ "list.hoverForeground": "#FFFFFF",
+ "list.inactiveSelectionForeground": "#80CBC4",
+ "quickInput.list.focusBackground": "#A6ACCD20",
+ "editorSuggestWidget.background": "#0F111A",
+ "editorSuggestWidget.foreground": "#A6ACCD",
+ "editorSuggestWidget.highlightForeground": "#80CBC4",
+ "editorSuggestWidget.selectedBackground": "#00000050",
+ "editorSuggestWidget.border": "#FFFFFF10",
+ "diffEditor.insertedTextBackground": "#89DDFF20",
+ "diffEditor.removedTextBackground": "#ff9cac20",
+ "notifications.background": "#0F111A",
+ "notifications.foreground": "#A6ACCD",
+ "notificationLink.foreground": "#80CBC4",
+ "extensionButton.prominentBackground": "#C3E88D90",
+ "extensionButton.prominentHoverBackground": "#C3E88D",
+ "extensionButton.prominentForeground": "#000000",
+ "peekViewEditorGutter.background": "#A6ACCD05",
+ "peekViewTitleDescription.foreground": "#A6ACCD60",
+ "peekViewResult.matchHighlightBackground": "#717CB450",
+ "peekViewEditor.matchHighlightBackground": "#717CB450",
+ "peekViewResult.selectionBackground": "#52597570",
+ "gitDecoration.deletedResourceForeground": "#f0717890",
+ "gitDecoration.conflictingResourceForeground": "#FFCB6B90",
+ "gitDecoration.modifiedResourceForeground": "#82AAFF90",
+ "gitDecoration.untrackedResourceForeground": "#C3E88D90",
+ "gitDecoration.ignoredResourceForeground": "#52597590",
+ "breadcrumb.background": "#0F111A",
+ "breadcrumb.foreground": "#525975",
+ "breadcrumb.focusForeground": "#A6ACCD",
+ "breadcrumb.activeSelectionForeground": "#80CBC4",
+ "breadcrumbPicker.background": "#0F111A",
+ "menu.background": "#0F111A",
+ "menu.foreground": "#A6ACCD",
+ "menu.selectionBackground": "#00000050",
+ "menu.selectionForeground": "#80CBC4",
+ "menu.selectionBorder": "#00000030",
+ "menu.separatorBackground": "#A6ACCD",
+ "menubar.selectionBackground": "#00000030",
+ "menubar.selectionForeground": "#80CBC4",
+ "menubar.selectionBorder": "#00000030",
+ "settings.dropdownForeground": "#A6ACCD",
+ "settings.dropdownBackground": "#0F111A",
+ "settings.numberInputForeground": "#A6ACCD",
+ "settings.numberInputBackground": "#0F111A",
+ "settings.textInputForeground": "#A6ACCD",
+ "settings.textInputBackground": "#0F111A",
+ "settings.headerForeground": "#80CBC4",
+ "settings.modifiedItemIndicator": "#80CBC4",
+ "settings.checkboxBackground": "#0F111A",
+ "settings.checkboxForeground": "#A6ACCD",
+ "listFilterWidget.background": "#00000030",
+ "listFilterWidget.outline": "#00000030",
+ "listFilterWidget.noMatchesOutline": "#00000030"
+ }
+}
diff --git a/node_modules/shiki/themes/material-theme-palenight.json b/node_modules/shiki/themes/material-theme-palenight.json
new file mode 100644
index 0000000..0763a93
--- /dev/null
+++ b/node_modules/shiki/themes/material-theme-palenight.json
@@ -0,0 +1,814 @@
+{
+ "name": "material-theme-palenight",
+ "semanticHighlighting": true,
+ "tokenColors": [
+ {
+ "name": "Global settings",
+ "settings": {
+ "background": "#292D3E",
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "String",
+ "scope": "string",
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ },
+ {
+ "name": "Punctuation",
+ "scope": "punctuation, constant.other.symbol",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "String Escape",
+ "scope": "constant.character.escape, text.html constant.character.entity.named",
+ "settings": {
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "Boolean",
+ "scope": "constant.language.boolean",
+ "settings": {
+ "foreground": "#ff9cac"
+ }
+ },
+ {
+ "name": "Number",
+ "scope": "constant.numeric",
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "Variable",
+ "scope": "variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments",
+ "settings": {
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "Other Keyword",
+ "scope": "keyword.other",
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "Keyword",
+ "scope": "keyword, modifier, variable.language.this, support.type.object, constant.language",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Function call",
+ "scope": "entity.name.function, support.function",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Storage",
+ "scope": "storage.type, storage.modifier, storage.control",
+ "settings": {
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "name": "Modules",
+ "scope": "support.module, support.node",
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Type",
+ "scope": "support.type, constant.other.key",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "Type",
+ "scope": "entity.name.type, entity.other.inherited-class, entity.other",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "Comment",
+ "scope": "comment",
+ "settings": {
+ "foreground": "#676E95",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Comment",
+ "scope": "comment punctuation.definition.comment, string.quoted.docstring",
+ "settings": {
+ "foreground": "#676E95",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Punctuation",
+ "scope": "punctuation",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Class",
+ "scope": "entity.name, entity.name.type.class, support.type, support.class, meta.use",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "Class variable",
+ "scope": "variable.object.property, meta.field.declaration entity.name.function",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Class method",
+ "scope": "meta.definition.method entity.name.function",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Function definition",
+ "scope": "meta.function entity.name.function",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Template expression",
+ "scope": "template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Reset embedded/template expression colors",
+ "scope": "meta.embedded, source.groovy.embedded, meta.template.expression",
+ "settings": {
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "YAML key",
+ "scope": "entity.name.tag.yaml",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "JSON key",
+ "scope": "meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "JSON constant",
+ "scope": "constant.language.json",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "CSS class",
+ "scope": "entity.other.attribute-name.class",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "CSS ID",
+ "scope": "entity.other.attribute-name.id",
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "CSS tag",
+ "scope": "source.css entity.name.tag",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "CSS properties",
+ "scope": "support.type.property-name.css",
+ "settings": {
+ "foreground": "#B2CCD6"
+ }
+ },
+ {
+ "name": "HTML tag outer",
+ "scope": "meta.tag, punctuation.definition.tag",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "HTML tag inner",
+ "scope": "entity.name.tag",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "HTML tag attribute",
+ "scope": "entity.other.attribute-name",
+ "settings": {
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "name": "HTML entities",
+ "scope": "punctuation.definition.entity.html",
+ "settings": {
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "Markdown heading",
+ "scope": "markup.heading",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Markdown link text",
+ "scope": "text.html.markdown meta.link.inline, meta.link.reference",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Markdown list item",
+ "scope": "text.html.markdown beginning.punctuation.definition.list",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Markdown italic",
+ "scope": "markup.italic",
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Markdown bold",
+ "scope": "markup.bold",
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "Markdown bold italic",
+ "scope": "markup.bold markup.italic, markup.italic markup.bold",
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "italic bold"
+ }
+ },
+ {
+ "name": "Markdown code block",
+ "scope": "markup.fenced_code.block.markdown punctuation.definition.markdown",
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ },
+ {
+ "name": "Markdown inline code",
+ "scope": "markup.inline.raw.string.markdown",
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ },
+ {
+ "name": "INI property name",
+ "scope": "keyword.other.definition.ini",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "INI section title",
+ "scope": "entity.name.section.group-title.ini",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "C# class",
+ "scope": "source.cs meta.class.identifier storage.type",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "C# class method",
+ "scope": "source.cs meta.method.identifier entity.name.function",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "C# function call",
+ "scope": "source.cs meta.method-call meta.method, source.cs entity.name.function",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "C# type",
+ "scope": "source.cs storage.type",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "C# return type",
+ "scope": "source.cs meta.method.return-type",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "C# preprocessor",
+ "scope": "source.cs meta.preprocessor",
+ "settings": {
+ "foreground": "#676E95"
+ }
+ },
+ {
+ "name": "C# namespace",
+ "scope": "source.cs entity.name.type.namespace",
+ "settings": {
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "JSX Text",
+ "scope": "meta.jsx.children, SXNested",
+ "settings": {
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "JSX Components name",
+ "scope": "support.class.component",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "C-related Block Level Variables",
+ "scope": "source.cpp meta.block variable.other",
+ "settings": {
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "Member Access Meta",
+ "scope": "source.python meta.member.access.python",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Function Call",
+ "scope": "source.python meta.function-call.python, meta.function-call.arguments",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Blocks",
+ "scope": "meta.block",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Function Call",
+ "scope": "entity.name.function.call",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Namespaces",
+ "scope": "source.php support.other.namespace, source.php meta.use support.class",
+ "settings": {
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "Constant keywords",
+ "scope": "constant.keyword",
+ "settings": {
+ "foreground": "#89DDFF",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Entity name",
+ "scope": "entity.name.function",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Global settings",
+ "settings": {
+ "background": "#292D3E",
+ "foreground": "#A6ACCD"
+ }
+ },
+ {
+ "name": "Markup Deleted",
+ "scope": ["markup.deleted"],
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Markup Inserted",
+ "scope": ["markup.inserted"],
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ },
+ {
+ "name": "Markup Underline",
+ "scope": ["markup.underline"],
+ "settings": {
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "name": "Keyword Control",
+ "scope": ["keyword.control"],
+ "settings": {
+ "foreground": "#89DDFF",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Parameter",
+ "scope": ["variable.parameter"],
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Python - Self Parameter",
+ "scope": ["variable.parameter.function.language.special.self.python"],
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Python - Format Placeholder",
+ "scope": ["constant.character.format.placeholder.other.python"],
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "Markdown - Blockquote",
+ "scope": ["markup.quote"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Markdown - Fenced Language",
+ "scope": ["markup.fenced_code.block"],
+ "settings": {
+ "foreground": "#A6ACCD90"
+ }
+ },
+ {
+ "name": "Markdown - Blockquote Punctuation",
+ "scope": ["punctuation.definition.quote"],
+ "settings": {
+ "foreground": "#ff9cac"
+ }
+ },
+ {
+ "name": "JSON Key - Level 0",
+ "scope": ["meta.structure.dictionary.json support.type.property-name.json"],
+ "settings": {
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "name": "JSON Key - Level 1",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "JSON Key - Level 2",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "JSON Key - Level 3",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "JSON Key - Level 4",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#916b53"
+ }
+ },
+ {
+ "name": "JSON Key - Level 5",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "JSON Key - Level 6",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#ff9cac"
+ }
+ },
+ {
+ "name": "JSON Key - Level 7",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "name": "JSON Key - Level 8",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ }
+ ],
+ "colors": {
+ "focusBorder": "#FFFFFF00",
+ "foreground": "#A6ACCD",
+ "button.background": "#717CB450",
+ "button.foreground": "#ffffff",
+ "dropdown.background": "#292D3E",
+ "input.background": "#333747",
+ "inputOption.activeBorder": "#A6ACCD30",
+ "list.activeSelectionBackground": "#292D3E",
+ "list.activeSelectionForeground": "#80CBC4",
+ "list.dropBackground": "#f0717880",
+ "list.focusBackground": "#A6ACCD20",
+ "list.focusForeground": "#A6ACCD",
+ "list.highlightForeground": "#80CBC4",
+ "list.hoverBackground": "#292D3E",
+ "list.inactiveSelectionBackground": "#00000030",
+ "activityBar.background": "#292D3E",
+ "activityBar.dropBackground": "#f0717880",
+ "activityBarBadge.background": "#80CBC4",
+ "activityBarBadge.foreground": "#000000",
+ "badge.background": "#00000030",
+ "badge.foreground": "#676E95",
+ "sideBar.background": "#292D3E",
+ "sideBarSectionHeader.background": "#292D3E",
+ "editorGroup.dropBackground": "#f0717880",
+ "editorGroup.focusedEmptyBorder": "#f07178",
+ "editorGroupHeader.tabsBackground": "#292D3E",
+ "tab.border": "#292D3E",
+ "tab.activeBorder": "#80CBC4",
+ "tab.inactiveBackground": "#292D3E",
+ "tab.activeModifiedBorder": "#676E95",
+ "tab.inactiveModifiedBorder": "#904348",
+ "tab.unfocusedActiveModifiedBorder": "#c05a60",
+ "tab.unfocusedInactiveModifiedBorder": "#904348",
+ "editor.background": "#292D3E",
+ "editor.foreground": "#A6ACCD",
+ "editorLineNumber.foreground": "#3A3F58",
+ "editorLineNumber.activeForeground": "#676E95",
+ "editorCursor.foreground": "#FFCC00",
+ "editor.selectionBackground": "#717CB450",
+ "editor.selectionHighlightBackground": "#FFCC0020",
+ "editor.wordHighlightBackground": "#ff9cac30",
+ "editor.wordHighlightStrongBackground": "#C3E88D30",
+ "editor.findMatchHighlight": "#A6ACCD",
+ "editor.findRangeHighlightBackground": "#FFCB6B30",
+ "editor.lineHighlightBorder": "#00000000",
+ "editor.rangeHighlightBackground": "#FFFFFF0d",
+ "editorWhitespace.foreground": "#A6ACCD40",
+ "editorWidget.background": "#292D3E",
+ "editorHoverWidget.background": "#292D3E",
+ "editorMarkerNavigation.background": "#A6ACCD05",
+ "peekView.border": "#00000030",
+ "peekViewEditor.background": "#A6ACCD05",
+ "peekViewResult.background": "#A6ACCD05",
+ "peekViewTitle.background": "#A6ACCD05",
+ "panel.background": "#292D3E",
+ "panel.border": "#292D3E60",
+ "panelTitle.activeBorder": "#80CBC4",
+ "panelTitle.inactiveForeground": "#A6ACCD",
+ "notebook.focusedCellBorder": "#80CBC4",
+ "notebook.inactiveFocusedCellBorder": "#80CBC450",
+ "statusBar.background": "#292D3E",
+ "statusBar.debuggingBackground": "#C792EA",
+ "statusBar.debuggingForeground": "#ffffff",
+ "statusBar.noFolderBackground": "#292D3E",
+ "statusBarItem.activeBackground": "#f0717880",
+ "statusBarItem.hoverBackground": "#676E9520",
+ "statusBarItem.remoteBackground": "#80CBC4",
+ "statusBarItem.remoteForeground": "#000000",
+ "titleBar.activeBackground": "#292D3E",
+ "pickerGroup.border": "#FFFFFF1a",
+ "terminal.ansiBlack": "#000000",
+ "terminal.ansiBlue": "#82AAFF",
+ "terminal.ansiBrightBlack": "#676E95",
+ "terminal.ansiBrightBlue": "#82AAFF",
+ "terminal.ansiBrightCyan": "#89DDFF",
+ "terminal.ansiBrightGreen": "#C3E88D",
+ "terminal.ansiBrightMagenta": "#C792EA",
+ "terminal.ansiBrightRed": "#f07178",
+ "terminal.ansiBrightWhite": "#ffffff",
+ "terminal.ansiBrightYellow": "#FFCB6B",
+ "terminal.ansiCyan": "#89DDFF",
+ "terminal.ansiGreen": "#C3E88D",
+ "terminal.ansiMagenta": "#C792EA",
+ "terminal.ansiRed": "#f07178",
+ "terminal.ansiWhite": "#ffffff",
+ "terminal.ansiYellow": "#FFCB6B",
+ "debugToolBar.background": "#292D3E",
+ "debugConsole.errorForeground": "#f07178",
+ "debugConsole.infoForeground": "#89DDFF",
+ "debugConsole.warningForeground": "#FFCB6B",
+ "selection.background": "#00000080",
+ "editorRuler.foreground": "#4E5579",
+ "widget.shadow": "#00000030",
+ "scrollbar.shadow": "#00000030",
+ "editorLink.activeForeground": "#A6ACCD",
+ "progressBar.background": "#80CBC4",
+ "pickerGroup.foreground": "#80CBC4",
+ "tree.indentGuidesStroke": "#4E5579",
+ "terminalCursor.foreground": "#FFCB6B",
+ "terminalCursor.background": "#000000",
+ "inputOption.activeBackground": "#A6ACCD30",
+ "textLink.foreground": "#80CBC4",
+ "textLink.activeForeground": "#A6ACCD",
+ "sideBar.foreground": "#676E95",
+ "sideBar.border": "#292D3E60",
+ "sideBarTitle.foreground": "#A6ACCD",
+ "sideBarSectionHeader.border": "#292D3E60",
+ "panel.dropBackground": "#A6ACCD",
+ "panelTitle.activeForeground": "#FFFFFF",
+ "editor.lineHighlightBackground": "#00000050",
+ "editor.findMatchBackground": "#000000",
+ "editor.findMatchHighlightBackground": "#00000050",
+ "editor.findMatchBorder": "#80CBC4",
+ "editor.findMatchHighlightBorder": "#ffffff30",
+ "editorIndentGuide.background": "#4E557970",
+ "editorIndentGuide.activeBackground": "#4E5579",
+ "editorGroup.border": "#00000030",
+ "editorGutter.modifiedBackground": "#82AAFF60",
+ "editorGutter.addedBackground": "#C3E88D60",
+ "editorGutter.deletedBackground": "#f0717860",
+ "activityBar.border": "#292D3E60",
+ "activityBar.foreground": "#A6ACCD",
+ "activityBar.activeBorder": "#80CBC4",
+ "extensionBadge.remoteForeground": "#A6ACCD",
+ "scrollbarSlider.background": "#A6ACCD20",
+ "scrollbarSlider.hoverBackground": "#A6ACCD10",
+ "scrollbarSlider.activeBackground": "#80CBC4",
+ "tab.unfocusedActiveBorder": "#676E95",
+ "tab.activeForeground": "#FFFFFF",
+ "tab.inactiveForeground": "#676E95",
+ "tab.activeBackground": "#292D3E",
+ "tab.unfocusedActiveForeground": "#A6ACCD",
+ "editorWidget.resizeBorder": "#80CBC4",
+ "editorWidget.border": "#80CBC4",
+ "statusBar.border": "#292D3E60",
+ "statusBar.foreground": "#676E95",
+ "editorBracketMatch.border": "#FFCC0050",
+ "editorBracketMatch.background": "#292D3E",
+ "editorOverviewRuler.findMatchForeground": "#80CBC4",
+ "editorOverviewRuler.border": "#292D3E",
+ "editorOverviewRuler.errorForeground": "#f0717840",
+ "editorOverviewRuler.infoForeground": "#82AAFF40",
+ "editorOverviewRuler.warningForeground": "#FFCB6B40",
+ "editorInfo.foreground": "#82AAFF70",
+ "editorWarning.foreground": "#FFCB6B70",
+ "editorError.foreground": "#f0717870",
+ "editorHoverWidget.border": "#FFFFFF10",
+ "titleBar.activeForeground": "#A6ACCD",
+ "titleBar.inactiveBackground": "#292D3E",
+ "titleBar.inactiveForeground": "#676E95",
+ "titleBar.border": "#292D3E60",
+ "input.foreground": "#A6ACCD",
+ "input.placeholderForeground": "#A6ACCD60",
+ "input.border": "#FFFFFF10",
+ "inputValidation.errorBorder": "#f07178",
+ "inputValidation.infoBorder": "#82AAFF",
+ "inputValidation.warningBorder": "#FFCB6B",
+ "dropdown.border": "#FFFFFF10",
+ "quickInput.background": "#292D3E",
+ "quickInput.foreground": "#676E95",
+ "list.hoverForeground": "#FFFFFF",
+ "list.inactiveSelectionForeground": "#80CBC4",
+ "quickInput.list.focusBackground": "#A6ACCD20",
+ "editorSuggestWidget.background": "#292D3E",
+ "editorSuggestWidget.foreground": "#A6ACCD",
+ "editorSuggestWidget.highlightForeground": "#80CBC4",
+ "editorSuggestWidget.selectedBackground": "#00000050",
+ "editorSuggestWidget.border": "#FFFFFF10",
+ "diffEditor.insertedTextBackground": "#89DDFF20",
+ "diffEditor.removedTextBackground": "#ff9cac20",
+ "notifications.background": "#292D3E",
+ "notifications.foreground": "#A6ACCD",
+ "notificationLink.foreground": "#80CBC4",
+ "extensionButton.prominentBackground": "#C3E88D90",
+ "extensionButton.prominentHoverBackground": "#C3E88D",
+ "extensionButton.prominentForeground": "#000000",
+ "peekViewEditorGutter.background": "#A6ACCD05",
+ "peekViewTitleDescription.foreground": "#A6ACCD60",
+ "peekViewResult.matchHighlightBackground": "#717CB450",
+ "peekViewEditor.matchHighlightBackground": "#717CB450",
+ "peekViewResult.selectionBackground": "#676E9570",
+ "gitDecoration.deletedResourceForeground": "#f0717890",
+ "gitDecoration.conflictingResourceForeground": "#FFCB6B90",
+ "gitDecoration.modifiedResourceForeground": "#82AAFF90",
+ "gitDecoration.untrackedResourceForeground": "#C3E88D90",
+ "gitDecoration.ignoredResourceForeground": "#676E9590",
+ "breadcrumb.background": "#292D3E",
+ "breadcrumb.foreground": "#676E95",
+ "breadcrumb.focusForeground": "#A6ACCD",
+ "breadcrumb.activeSelectionForeground": "#80CBC4",
+ "breadcrumbPicker.background": "#292D3E",
+ "menu.background": "#292D3E",
+ "menu.foreground": "#A6ACCD",
+ "menu.selectionBackground": "#00000050",
+ "menu.selectionForeground": "#80CBC4",
+ "menu.selectionBorder": "#00000030",
+ "menu.separatorBackground": "#A6ACCD",
+ "menubar.selectionBackground": "#00000030",
+ "menubar.selectionForeground": "#80CBC4",
+ "menubar.selectionBorder": "#00000030",
+ "settings.dropdownForeground": "#A6ACCD",
+ "settings.dropdownBackground": "#292D3E",
+ "settings.numberInputForeground": "#A6ACCD",
+ "settings.numberInputBackground": "#292D3E",
+ "settings.textInputForeground": "#A6ACCD",
+ "settings.textInputBackground": "#292D3E",
+ "settings.headerForeground": "#80CBC4",
+ "settings.modifiedItemIndicator": "#80CBC4",
+ "settings.checkboxBackground": "#292D3E",
+ "settings.checkboxForeground": "#A6ACCD",
+ "listFilterWidget.background": "#00000030",
+ "listFilterWidget.outline": "#00000030",
+ "listFilterWidget.noMatchesOutline": "#00000030"
+ }
+}
diff --git a/node_modules/shiki/themes/material-theme.json b/node_modules/shiki/themes/material-theme.json
new file mode 100644
index 0000000..48c4572
--- /dev/null
+++ b/node_modules/shiki/themes/material-theme.json
@@ -0,0 +1,814 @@
+{
+ "name": "material-theme",
+ "semanticHighlighting": true,
+ "tokenColors": [
+ {
+ "name": "Global settings",
+ "settings": {
+ "background": "#263238",
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "String",
+ "scope": "string",
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ },
+ {
+ "name": "Punctuation",
+ "scope": "punctuation, constant.other.symbol",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "String Escape",
+ "scope": "constant.character.escape, text.html constant.character.entity.named",
+ "settings": {
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "Boolean",
+ "scope": "constant.language.boolean",
+ "settings": {
+ "foreground": "#ff9cac"
+ }
+ },
+ {
+ "name": "Number",
+ "scope": "constant.numeric",
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "Variable",
+ "scope": "variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments",
+ "settings": {
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "Other Keyword",
+ "scope": "keyword.other",
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "Keyword",
+ "scope": "keyword, modifier, variable.language.this, support.type.object, constant.language",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Function call",
+ "scope": "entity.name.function, support.function",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Storage",
+ "scope": "storage.type, storage.modifier, storage.control",
+ "settings": {
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "name": "Modules",
+ "scope": "support.module, support.node",
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Type",
+ "scope": "support.type, constant.other.key",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "Type",
+ "scope": "entity.name.type, entity.other.inherited-class, entity.other",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "Comment",
+ "scope": "comment",
+ "settings": {
+ "foreground": "#546E7A",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Comment",
+ "scope": "comment punctuation.definition.comment, string.quoted.docstring",
+ "settings": {
+ "foreground": "#546E7A",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Punctuation",
+ "scope": "punctuation",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Class",
+ "scope": "entity.name, entity.name.type.class, support.type, support.class, meta.use",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "Class variable",
+ "scope": "variable.object.property, meta.field.declaration entity.name.function",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Class method",
+ "scope": "meta.definition.method entity.name.function",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Function definition",
+ "scope": "meta.function entity.name.function",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Template expression",
+ "scope": "template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Reset embedded/template expression colors",
+ "scope": "meta.embedded, source.groovy.embedded, meta.template.expression",
+ "settings": {
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "YAML key",
+ "scope": "entity.name.tag.yaml",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "JSON key",
+ "scope": "meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "JSON constant",
+ "scope": "constant.language.json",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "CSS class",
+ "scope": "entity.other.attribute-name.class",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "CSS ID",
+ "scope": "entity.other.attribute-name.id",
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "CSS tag",
+ "scope": "source.css entity.name.tag",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "CSS properties",
+ "scope": "support.type.property-name.css",
+ "settings": {
+ "foreground": "#B2CCD6"
+ }
+ },
+ {
+ "name": "HTML tag outer",
+ "scope": "meta.tag, punctuation.definition.tag",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "HTML tag inner",
+ "scope": "entity.name.tag",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "HTML tag attribute",
+ "scope": "entity.other.attribute-name",
+ "settings": {
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "name": "HTML entities",
+ "scope": "punctuation.definition.entity.html",
+ "settings": {
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "Markdown heading",
+ "scope": "markup.heading",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Markdown link text",
+ "scope": "text.html.markdown meta.link.inline, meta.link.reference",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Markdown list item",
+ "scope": "text.html.markdown beginning.punctuation.definition.list",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Markdown italic",
+ "scope": "markup.italic",
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Markdown bold",
+ "scope": "markup.bold",
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "Markdown bold italic",
+ "scope": "markup.bold markup.italic, markup.italic markup.bold",
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "italic bold"
+ }
+ },
+ {
+ "name": "Markdown code block",
+ "scope": "markup.fenced_code.block.markdown punctuation.definition.markdown",
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ },
+ {
+ "name": "Markdown inline code",
+ "scope": "markup.inline.raw.string.markdown",
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ },
+ {
+ "name": "INI property name",
+ "scope": "keyword.other.definition.ini",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "INI section title",
+ "scope": "entity.name.section.group-title.ini",
+ "settings": {
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "C# class",
+ "scope": "source.cs meta.class.identifier storage.type",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "C# class method",
+ "scope": "source.cs meta.method.identifier entity.name.function",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "C# function call",
+ "scope": "source.cs meta.method-call meta.method, source.cs entity.name.function",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "C# type",
+ "scope": "source.cs storage.type",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "C# return type",
+ "scope": "source.cs meta.method.return-type",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "C# preprocessor",
+ "scope": "source.cs meta.preprocessor",
+ "settings": {
+ "foreground": "#546E7A"
+ }
+ },
+ {
+ "name": "C# namespace",
+ "scope": "source.cs entity.name.type.namespace",
+ "settings": {
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "JSX Text",
+ "scope": "meta.jsx.children, SXNested",
+ "settings": {
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "JSX Components name",
+ "scope": "support.class.component",
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "C-related Block Level Variables",
+ "scope": "source.cpp meta.block variable.other",
+ "settings": {
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "Member Access Meta",
+ "scope": "source.python meta.member.access.python",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Function Call",
+ "scope": "source.python meta.function-call.python, meta.function-call.arguments",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Blocks",
+ "scope": "meta.block",
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Function Call",
+ "scope": "entity.name.function.call",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Namespaces",
+ "scope": "source.php support.other.namespace, source.php meta.use support.class",
+ "settings": {
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "Constant keywords",
+ "scope": "constant.keyword",
+ "settings": {
+ "foreground": "#89DDFF",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Entity name",
+ "scope": "entity.name.function",
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "Global settings",
+ "settings": {
+ "background": "#263238",
+ "foreground": "#EEFFFF"
+ }
+ },
+ {
+ "name": "Markup Deleted",
+ "scope": ["markup.deleted"],
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "Markup Inserted",
+ "scope": ["markup.inserted"],
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ },
+ {
+ "name": "Markup Underline",
+ "scope": ["markup.underline"],
+ "settings": {
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "name": "Keyword Control",
+ "scope": ["keyword.control"],
+ "settings": {
+ "foreground": "#89DDFF",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Parameter",
+ "scope": ["variable.parameter"],
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Python - Self Parameter",
+ "scope": ["variable.parameter.function.language.special.self.python"],
+ "settings": {
+ "foreground": "#f07178",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "Python - Format Placeholder",
+ "scope": ["constant.character.format.placeholder.other.python"],
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "Markdown - Blockquote",
+ "scope": ["markup.quote"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#89DDFF"
+ }
+ },
+ {
+ "name": "Markdown - Fenced Language",
+ "scope": ["markup.fenced_code.block"],
+ "settings": {
+ "foreground": "#EEFFFF90"
+ }
+ },
+ {
+ "name": "Markdown - Blockquote Punctuation",
+ "scope": ["punctuation.definition.quote"],
+ "settings": {
+ "foreground": "#ff9cac"
+ }
+ },
+ {
+ "name": "JSON Key - Level 0",
+ "scope": ["meta.structure.dictionary.json support.type.property-name.json"],
+ "settings": {
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "name": "JSON Key - Level 1",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#FFCB6B"
+ }
+ },
+ {
+ "name": "JSON Key - Level 2",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#F78C6C"
+ }
+ },
+ {
+ "name": "JSON Key - Level 3",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#f07178"
+ }
+ },
+ {
+ "name": "JSON Key - Level 4",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#916b53"
+ }
+ },
+ {
+ "name": "JSON Key - Level 5",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#82AAFF"
+ }
+ },
+ {
+ "name": "JSON Key - Level 6",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#ff9cac"
+ }
+ },
+ {
+ "name": "JSON Key - Level 7",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "name": "JSON Key - Level 8",
+ "scope": [
+ "meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#C3E88D"
+ }
+ }
+ ],
+ "colors": {
+ "focusBorder": "#FFFFFF00",
+ "foreground": "#EEFFFF",
+ "button.background": "#80CBC420",
+ "button.foreground": "#ffffff",
+ "dropdown.background": "#263238",
+ "input.background": "#303C41",
+ "inputOption.activeBorder": "#EEFFFF30",
+ "list.activeSelectionBackground": "#263238",
+ "list.activeSelectionForeground": "#80CBC4",
+ "list.dropBackground": "#f0717880",
+ "list.focusBackground": "#EEFFFF20",
+ "list.focusForeground": "#EEFFFF",
+ "list.highlightForeground": "#80CBC4",
+ "list.hoverBackground": "#263238",
+ "list.inactiveSelectionBackground": "#00000030",
+ "activityBar.background": "#263238",
+ "activityBar.dropBackground": "#f0717880",
+ "activityBarBadge.background": "#80CBC4",
+ "activityBarBadge.foreground": "#000000",
+ "badge.background": "#00000030",
+ "badge.foreground": "#546E7A",
+ "sideBar.background": "#263238",
+ "sideBarSectionHeader.background": "#263238",
+ "editorGroup.dropBackground": "#f0717880",
+ "editorGroup.focusedEmptyBorder": "#f07178",
+ "editorGroupHeader.tabsBackground": "#263238",
+ "tab.border": "#263238",
+ "tab.activeBorder": "#80CBC4",
+ "tab.inactiveBackground": "#263238",
+ "tab.activeModifiedBorder": "#607a86",
+ "tab.inactiveModifiedBorder": "#904348",
+ "tab.unfocusedActiveModifiedBorder": "#c05a60",
+ "tab.unfocusedInactiveModifiedBorder": "#904348",
+ "editor.background": "#263238",
+ "editor.foreground": "#EEFFFF",
+ "editorLineNumber.foreground": "#37474F",
+ "editorLineNumber.activeForeground": "#607a86",
+ "editorCursor.foreground": "#FFCC00",
+ "editor.selectionBackground": "#80CBC420",
+ "editor.selectionHighlightBackground": "#FFCC0020",
+ "editor.wordHighlightBackground": "#ff9cac30",
+ "editor.wordHighlightStrongBackground": "#C3E88D30",
+ "editor.findMatchHighlight": "#EEFFFF",
+ "editor.findRangeHighlightBackground": "#FFCB6B30",
+ "editor.lineHighlightBorder": "#00000000",
+ "editor.rangeHighlightBackground": "#FFFFFF0d",
+ "editorWhitespace.foreground": "#EEFFFF40",
+ "editorWidget.background": "#263238",
+ "editorHoverWidget.background": "#263238",
+ "editorMarkerNavigation.background": "#EEFFFF05",
+ "peekView.border": "#00000030",
+ "peekViewEditor.background": "#EEFFFF05",
+ "peekViewResult.background": "#EEFFFF05",
+ "peekViewTitle.background": "#EEFFFF05",
+ "panel.background": "#263238",
+ "panel.border": "#26323860",
+ "panelTitle.activeBorder": "#80CBC4",
+ "panelTitle.inactiveForeground": "#EEFFFF",
+ "notebook.focusedCellBorder": "#80CBC4",
+ "notebook.inactiveFocusedCellBorder": "#80CBC450",
+ "statusBar.background": "#263238",
+ "statusBar.debuggingBackground": "#C792EA",
+ "statusBar.debuggingForeground": "#ffffff",
+ "statusBar.noFolderBackground": "#263238",
+ "statusBarItem.activeBackground": "#f0717880",
+ "statusBarItem.hoverBackground": "#546E7A20",
+ "statusBarItem.remoteBackground": "#80CBC4",
+ "statusBarItem.remoteForeground": "#000000",
+ "titleBar.activeBackground": "#263238",
+ "pickerGroup.border": "#FFFFFF1a",
+ "terminal.ansiBlack": "#000000",
+ "terminal.ansiBlue": "#82AAFF",
+ "terminal.ansiBrightBlack": "#546E7A",
+ "terminal.ansiBrightBlue": "#82AAFF",
+ "terminal.ansiBrightCyan": "#89DDFF",
+ "terminal.ansiBrightGreen": "#C3E88D",
+ "terminal.ansiBrightMagenta": "#C792EA",
+ "terminal.ansiBrightRed": "#f07178",
+ "terminal.ansiBrightWhite": "#ffffff",
+ "terminal.ansiBrightYellow": "#FFCB6B",
+ "terminal.ansiCyan": "#89DDFF",
+ "terminal.ansiGreen": "#C3E88D",
+ "terminal.ansiMagenta": "#C792EA",
+ "terminal.ansiRed": "#f07178",
+ "terminal.ansiWhite": "#ffffff",
+ "terminal.ansiYellow": "#FFCB6B",
+ "debugToolBar.background": "#263238",
+ "debugConsole.errorForeground": "#f07178",
+ "debugConsole.infoForeground": "#89DDFF",
+ "debugConsole.warningForeground": "#FFCB6B",
+ "selection.background": "#00000080",
+ "editorRuler.foreground": "#37474F",
+ "widget.shadow": "#00000030",
+ "scrollbar.shadow": "#00000030",
+ "editorLink.activeForeground": "#EEFFFF",
+ "progressBar.background": "#80CBC4",
+ "pickerGroup.foreground": "#80CBC4",
+ "tree.indentGuidesStroke": "#37474F",
+ "terminalCursor.foreground": "#FFCB6B",
+ "terminalCursor.background": "#000000",
+ "inputOption.activeBackground": "#EEFFFF30",
+ "textLink.foreground": "#80CBC4",
+ "textLink.activeForeground": "#EEFFFF",
+ "sideBar.foreground": "#607a86",
+ "sideBar.border": "#26323860",
+ "sideBarTitle.foreground": "#EEFFFF",
+ "sideBarSectionHeader.border": "#26323860",
+ "panel.dropBackground": "#EEFFFF",
+ "panelTitle.activeForeground": "#FFFFFF",
+ "editor.lineHighlightBackground": "#00000050",
+ "editor.findMatchBackground": "#000000",
+ "editor.findMatchHighlightBackground": "#00000050",
+ "editor.findMatchBorder": "#80CBC4",
+ "editor.findMatchHighlightBorder": "#ffffff30",
+ "editorIndentGuide.background": "#37474F70",
+ "editorIndentGuide.activeBackground": "#37474F",
+ "editorGroup.border": "#00000030",
+ "editorGutter.modifiedBackground": "#82AAFF60",
+ "editorGutter.addedBackground": "#C3E88D60",
+ "editorGutter.deletedBackground": "#f0717860",
+ "activityBar.border": "#26323860",
+ "activityBar.foreground": "#EEFFFF",
+ "activityBar.activeBorder": "#80CBC4",
+ "extensionBadge.remoteForeground": "#EEFFFF",
+ "scrollbarSlider.background": "#EEFFFF20",
+ "scrollbarSlider.hoverBackground": "#EEFFFF10",
+ "scrollbarSlider.activeBackground": "#80CBC4",
+ "tab.unfocusedActiveBorder": "#546E7A",
+ "tab.activeForeground": "#FFFFFF",
+ "tab.inactiveForeground": "#607a86",
+ "tab.activeBackground": "#263238",
+ "tab.unfocusedActiveForeground": "#EEFFFF",
+ "editorWidget.resizeBorder": "#80CBC4",
+ "editorWidget.border": "#80CBC4",
+ "statusBar.border": "#26323860",
+ "statusBar.foreground": "#546E7A",
+ "editorBracketMatch.border": "#FFCC0050",
+ "editorBracketMatch.background": "#263238",
+ "editorOverviewRuler.findMatchForeground": "#80CBC4",
+ "editorOverviewRuler.border": "#263238",
+ "editorOverviewRuler.errorForeground": "#f0717840",
+ "editorOverviewRuler.infoForeground": "#82AAFF40",
+ "editorOverviewRuler.warningForeground": "#FFCB6B40",
+ "editorInfo.foreground": "#82AAFF70",
+ "editorWarning.foreground": "#FFCB6B70",
+ "editorError.foreground": "#f0717870",
+ "editorHoverWidget.border": "#FFFFFF10",
+ "titleBar.activeForeground": "#EEFFFF",
+ "titleBar.inactiveBackground": "#263238",
+ "titleBar.inactiveForeground": "#607a86",
+ "titleBar.border": "#26323860",
+ "input.foreground": "#EEFFFF",
+ "input.placeholderForeground": "#EEFFFF60",
+ "input.border": "#FFFFFF10",
+ "inputValidation.errorBorder": "#f07178",
+ "inputValidation.infoBorder": "#82AAFF",
+ "inputValidation.warningBorder": "#FFCB6B",
+ "dropdown.border": "#FFFFFF10",
+ "quickInput.background": "#263238",
+ "quickInput.foreground": "#607a86",
+ "list.hoverForeground": "#FFFFFF",
+ "list.inactiveSelectionForeground": "#80CBC4",
+ "quickInput.list.focusBackground": "#EEFFFF20",
+ "editorSuggestWidget.background": "#263238",
+ "editorSuggestWidget.foreground": "#EEFFFF",
+ "editorSuggestWidget.highlightForeground": "#80CBC4",
+ "editorSuggestWidget.selectedBackground": "#00000050",
+ "editorSuggestWidget.border": "#FFFFFF10",
+ "diffEditor.insertedTextBackground": "#89DDFF20",
+ "diffEditor.removedTextBackground": "#ff9cac20",
+ "notifications.background": "#263238",
+ "notifications.foreground": "#EEFFFF",
+ "notificationLink.foreground": "#80CBC4",
+ "extensionButton.prominentBackground": "#C3E88D90",
+ "extensionButton.prominentHoverBackground": "#C3E88D",
+ "extensionButton.prominentForeground": "#000000",
+ "peekViewEditorGutter.background": "#EEFFFF05",
+ "peekViewTitleDescription.foreground": "#EEFFFF60",
+ "peekViewResult.matchHighlightBackground": "#80CBC420",
+ "peekViewEditor.matchHighlightBackground": "#80CBC420",
+ "peekViewResult.selectionBackground": "#607a8670",
+ "gitDecoration.deletedResourceForeground": "#f0717890",
+ "gitDecoration.conflictingResourceForeground": "#FFCB6B90",
+ "gitDecoration.modifiedResourceForeground": "#82AAFF90",
+ "gitDecoration.untrackedResourceForeground": "#C3E88D90",
+ "gitDecoration.ignoredResourceForeground": "#607a8690",
+ "breadcrumb.background": "#263238",
+ "breadcrumb.foreground": "#607a86",
+ "breadcrumb.focusForeground": "#EEFFFF",
+ "breadcrumb.activeSelectionForeground": "#80CBC4",
+ "breadcrumbPicker.background": "#263238",
+ "menu.background": "#263238",
+ "menu.foreground": "#EEFFFF",
+ "menu.selectionBackground": "#00000050",
+ "menu.selectionForeground": "#80CBC4",
+ "menu.selectionBorder": "#00000030",
+ "menu.separatorBackground": "#EEFFFF",
+ "menubar.selectionBackground": "#00000030",
+ "menubar.selectionForeground": "#80CBC4",
+ "menubar.selectionBorder": "#00000030",
+ "settings.dropdownForeground": "#EEFFFF",
+ "settings.dropdownBackground": "#263238",
+ "settings.numberInputForeground": "#EEFFFF",
+ "settings.numberInputBackground": "#263238",
+ "settings.textInputForeground": "#EEFFFF",
+ "settings.textInputBackground": "#263238",
+ "settings.headerForeground": "#80CBC4",
+ "settings.modifiedItemIndicator": "#80CBC4",
+ "settings.checkboxBackground": "#263238",
+ "settings.checkboxForeground": "#EEFFFF",
+ "listFilterWidget.background": "#00000030",
+ "listFilterWidget.outline": "#00000030",
+ "listFilterWidget.noMatchesOutline": "#00000030"
+ }
+}
diff --git a/node_modules/shiki/themes/min-dark.json b/node_modules/shiki/themes/min-dark.json
new file mode 100644
index 0000000..830375a
--- /dev/null
+++ b/node_modules/shiki/themes/min-dark.json
@@ -0,0 +1,294 @@
+{
+ "name": "min-dark",
+ "type": "dark",
+ "colors": {
+ "editorIndentGuide.activeBackground": "#383838",
+ "editorIndentGuide.background": "#2A2A2A",
+ "editorRuler.foreground": "#2A2A2A",
+ "editorLineNumber.foreground": "#727272",
+ "activityBar.background": "#1A1A1A",
+ "activityBar.foreground": "#7D7D7D",
+ "activityBarBadge.background": "#383838",
+ "badge.background": "#383838",
+ "badge.foreground": "#C1C1C1",
+ "button.background": "#333",
+ "editor.background": "#1f1f1f",
+ "editor.lineHighlightBorder": "#303030",
+ "editorGroupHeader.tabsBackground": "#1A1A1A",
+ "editorGroupHeader.tabsBorder": "#1A1A1A",
+ "editorSuggestWidget.background": "#1A1A1A",
+ "focusBorder": "#444",
+ "foreground": "#888888",
+ "gitDecoration.ignoredResourceForeground": "#444444",
+ "input.background": "#2A2A2A",
+ "input.foreground": "#E0E0E0",
+ "list.activeSelectionBackground": "#212121",
+ "list.activeSelectionForeground": "#F5F5F5",
+ "list.focusBackground": "#292929",
+ "list.highlightForeground": "#EAEAEA",
+ "list.hoverBackground": "#262626",
+ "list.hoverForeground": "#9E9E9E",
+ "list.inactiveSelectionBackground": "#212121",
+ "list.inactiveSelectionForeground": "#F5F5F5",
+ "panelTitle.activeBorder": "#1f1f1f",
+ "panelTitle.activeForeground": "#FAFAFA",
+ "panelTitle.inactiveForeground": "#484848",
+ "peekView.border": "#444",
+ "peekViewEditor.background": "#242424",
+ "pickerGroup.border": "#363636",
+ "pickerGroup.foreground": "#EAEAEA",
+ "progressBar.background": "#FAFAFA",
+ "scrollbar.shadow": "#1f1f1f",
+ "sideBar.background": "#1A1A1A",
+ "sideBarSectionHeader.background": "#202020",
+ "statusBar.background": "#1A1A1A",
+ "statusBar.debuggingBackground": "#1A1A1A",
+ "statusBar.foreground": "#7E7E7E",
+ "statusBar.noFolderBackground": "#1A1A1A",
+ "statusBarItem.remoteForeground": "#7E7E7E",
+ "statusBarItem.remoteBackground": "#1a1a1a00",
+ "statusBarItem.prominentBackground": "#fafafa1a",
+ "tab.activeBorder": "#1e1e1e",
+ "tab.activeForeground": "#FAFAFA",
+ "tab.border": "#1A1A1A",
+ "tab.inactiveBackground": "#1A1A1A",
+ "tab.inactiveForeground": "#727272",
+ "textLink.foreground": "#CCC",
+ "textLink.activeForeground": "#fafafa",
+ "titleBar.activeBackground": "#1A1A1A",
+ "titleBar.border": "#00000000",
+ "terminal.ansiBrightBlack": "#5c5c5c",
+ "inputOption.activeBackground": "#3a3a3a",
+ "debugIcon.continueForeground": "#FF7A84",
+ "debugIcon.disconnectForeground": "#FF7A84",
+ "debugIcon.pauseForeground": "#FF7A84",
+ "debugIcon.restartForeground": "#79b8ff",
+ "debugIcon.startForeground": "#79b8ff",
+ "debugIcon.stepBackForeground": "#FF7A84",
+ "debugIcon.stepIntoForeground": "#FF7A84",
+ "debugIcon.stepOutForeground": "#FF7A84",
+ "debugIcon.stepOverForeground": "#FF7A84",
+ "debugIcon.stopForeground": "#79b8ff",
+ "debugIcon.breakpointCurrentStackframeForeground": "#79b8ff",
+ "debugIcon.breakpointDisabledForeground": "#848484",
+ "debugIcon.breakpointForeground": "#FF7A84",
+ "debugIcon.breakpointStackframeForeground": "#79b8ff",
+ "debugIcon.breakpointUnverifiedForeground": "#848484",
+ "symbolIcon.classForeground": "#FF9800",
+ "symbolIcon.enumeratorForeground": "#FF9800",
+ "symbolIcon.eventForeground": "#FF9800",
+ "symbolIcon.methodForeground": "#b392f0",
+ "symbolIcon.constructorForeground": "#b392f0",
+ "symbolIcon.functionForeground": "#b392f0",
+ "symbolIcon.fieldForeground": "#79b8ff",
+ "symbolIcon.interfaceForeground": "#79b8ff",
+ "symbolIcon.variableForeground": "#79b8ff",
+ "symbolIcon.enumeratorMemberForeground": "#79b8ff",
+ "diffEditor.insertedTextBackground": "#3a632a4b",
+ "diffEditor.removedTextBackground": "#88063852"
+ },
+ "tokenColors": [
+ {
+ "settings": {
+ "foreground": "#b392f0"
+ }
+ },
+ {
+ "scope": [
+ "support.function",
+ "keyword.operator.accessor",
+ "meta.group.braces.round.function.arguments",
+ "meta.template.expression",
+ "markup.fenced_code meta.embedded.block"
+ ],
+ "settings": {
+ "foreground": "#b392f0"
+ }
+ },
+ {
+ "scope": "emphasis",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["strong", "markup.heading.markdown", "markup.bold.markdown"],
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#FF7A84"
+ }
+ },
+ {
+ "scope": ["markup.italic.markdown"],
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "meta.link.inline.markdown",
+ "settings": {
+ "fontStyle": "underline",
+ "foreground": "#1976D2"
+ }
+ },
+ {
+ "scope": ["string", "markup.fenced_code", "markup.inline"],
+ "settings": {
+ "foreground": "#9db1c5"
+ }
+ },
+ {
+ "scope": ["comment", "string.quoted.docstring.multi"],
+ "settings": {
+ "foreground": "#6b737c"
+ }
+ },
+ {
+ "scope": [
+ "constant.language",
+ "variable.language.this",
+ "variable.other.object",
+ "variable.other.class",
+ "variable.other.constant",
+ "meta.property-name",
+ "support",
+ "string.other.link.title.markdown"
+ ],
+ "settings": {
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": [
+ "constant.numeric",
+ "constant.other.placeholder",
+ "constant.character.format.placeholder",
+ "meta.property-value",
+ "keyword.other.unit",
+ "keyword.other.template",
+ "entity.name.tag.yaml",
+ "entity.other.attribute-name",
+ "support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#f8f8f8"
+ }
+ },
+ {
+ "scope": [
+ "keyword",
+ "storage.modifier",
+ "storage.type",
+ "storage.control.clojure",
+ "entity.name.function.clojure",
+ "support.function.node",
+ "punctuation.separator.key-value",
+ "punctuation.definition.template-expression"
+ ],
+ "settings": {
+ "foreground": "#f97583"
+ }
+ },
+ {
+ "scope": "variable.parameter.function",
+ "settings": {
+ "foreground": "#FF9800"
+ }
+ },
+ {
+ "scope": [
+ "entity.name.type",
+ "entity.other.inherited-class",
+ "meta.function-call",
+ "meta.instance.constructor",
+ "entity.other.attribute-name",
+ "entity.name.function",
+ "constant.keyword.clojure"
+ ],
+ "settings": {
+ "foreground": "#b392f0"
+ }
+ },
+ {
+ "scope": [
+ "entity.name.tag",
+ "string.quoted",
+ "string.regexp",
+ "string.interpolated",
+ "string.template",
+ "string.unquoted.plain.out.yaml",
+ "keyword.other.template"
+ ],
+ "settings": {
+ "foreground": "#ffab70"
+ }
+ },
+ {
+ "scope": "token.info-token",
+ "settings": {
+ "foreground": "#316bcd"
+ }
+ },
+ {
+ "scope": "token.warn-token",
+ "settings": {
+ "foreground": "#cd9731"
+ }
+ },
+ {
+ "scope": "token.error-token",
+ "settings": {
+ "foreground": "#cd3131"
+ }
+ },
+ {
+ "scope": "token.debug-token",
+ "settings": {
+ "foreground": "#800080"
+ }
+ },
+ {
+ "scope": [
+ "punctuation.definition.arguments",
+ "punctuation.definition.dict",
+ "punctuation.separator",
+ "meta.function-call.arguments"
+ ],
+ "settings": {
+ "foreground": "#bbbbbb"
+ }
+ },
+ {
+ "name": "[Custom] Markdown links",
+ "scope": "markup.underline.link",
+ "settings": {
+ "foreground": "#ffab70"
+ }
+ },
+ {
+ "name": "[Custom] Markdown list",
+ "scope": ["beginning.punctuation.definition.list.markdown"],
+ "settings": {
+ "foreground": "#FF7A84"
+ }
+ },
+ {
+ "name": "[Custom] Markdown punctuation definition",
+ "scope": "punctuation.definition.metadata.markdown",
+ "settings": {
+ "foreground": "#ffab70"
+ }
+ },
+ {
+ "name": "[Custom] Markdown punctuation definition brackets",
+ "scope": [
+ "punctuation.definition.string.begin.markdown",
+ "punctuation.definition.string.end.markdown"
+ ],
+ "settings": {
+ "foreground": "#79b8ff"
+ }
+ }
+ ],
+ "semanticHighlighting": true
+}
diff --git a/node_modules/shiki/themes/min-light.json b/node_modules/shiki/themes/min-light.json
new file mode 100644
index 0000000..1604823
--- /dev/null
+++ b/node_modules/shiki/themes/min-light.json
@@ -0,0 +1,305 @@
+{
+ "name": "min-light",
+ "type": "light",
+ "colors": {
+ "activityBar.background": "#f6f6f6",
+ "activityBar.foreground": "#9E9E9E",
+ "activityBarBadge.background": "#616161",
+ "badge.background": "#E0E0E0",
+ "badge.foreground": "#616161",
+ "button.background": "#757575",
+ "button.hoverBackground": "#616161",
+ "editor.background": "#ffffff",
+ "editor.foreground": "#212121",
+ "editor.lineHighlightBorder": "#f2f2f2",
+ "editorBracketMatch.background": "#E7F3FF",
+ "editorBracketMatch.border": "#c8e1ff",
+ "editorGroupHeader.tabsBackground": "#f6f6f6",
+ "editorGroupHeader.tabsBorder": "#fff",
+ "editorIndentGuide.background": "#EEE",
+ "editorLineNumber.activeForeground": "#757575",
+ "editorLineNumber.foreground": "#CCC",
+ "editorSuggestWidget.background": "#F3F3F3",
+ "extensionButton.prominentBackground": "#000000AA",
+ "extensionButton.prominentHoverBackground": "#000000BB",
+ "focusBorder": "#D0D0D0",
+ "foreground": "#757575",
+ "gitDecoration.ignoredResourceForeground": "#AAAAAA",
+ "input.border": "#E9E9E9",
+ "list.activeSelectionBackground": "#EEE",
+ "list.activeSelectionForeground": "#212121",
+ "list.focusBackground": "#ddd",
+ "list.focusForeground": "#212121",
+ "list.highlightForeground": "#212121",
+ "list.inactiveSelectionBackground": "#E0E0E0",
+ "list.inactiveSelectionForeground": "#212121",
+ "panel.background": "#fff",
+ "panel.border": "#f4f4f4",
+ "panelTitle.activeBorder": "#fff",
+ "panelTitle.inactiveForeground": "#BDBDBD",
+ "peekView.border": "#E0E0E0",
+ "peekViewEditor.background": "#f8f8f8",
+ "pickerGroup.foreground": "#000",
+ "progressBar.background": "#000",
+ "scrollbar.shadow": "#FFF",
+ "sideBar.background": "#f6f6f6",
+ "sideBar.border": "#f6f6f6",
+ "sideBarSectionHeader.background": "#EEE",
+ "sideBarTitle.foreground": "#999",
+ "statusBar.background": "#f6f6f6",
+ "statusBar.border": "#f6f6f6",
+ "statusBar.debuggingBackground": "#f6f6f6",
+ "statusBar.foreground": "#7E7E7E",
+ "statusBar.noFolderBackground": "#f6f6f6",
+ "statusBarItem.remoteForeground": "#7E7E7E",
+ "statusBarItem.remoteBackground": "#f6f6f600",
+ "statusBarItem.prominentBackground": "#0000001a",
+ "tab.activeBorder": "#FFF",
+ "tab.activeForeground": "#424242",
+ "tab.border": "#f6f6f6",
+ "tab.inactiveBackground": "#f6f6f6",
+ "tab.inactiveForeground": "#BDBDBD",
+ "tab.unfocusedActiveBorder": "#fff",
+ "terminal.ansiBlack": "#333",
+ "terminal.ansiBlue": "#e0e0e0",
+ "terminal.ansiBrightBlack": "#a1a1a1",
+ "terminal.ansiBrightBlue": "#6871ff",
+ "terminal.ansiBrightCyan": "#57d9ad",
+ "terminal.ansiBrightGreen": "#a3d900",
+ "terminal.ansiBrightMagenta": "#a37acc",
+ "terminal.ansiBrightRed": "#d6656a",
+ "terminal.ansiBrightWhite": "#7E7E7E",
+ "terminal.ansiBrightYellow": "#e7c547",
+ "terminal.ansiCyan": "#4dbf99",
+ "terminal.ansiGreen": "#77cc00",
+ "terminal.ansiMagenta": "#9966cc",
+ "terminal.ansiRed": "#D32F2F",
+ "terminal.ansiWhite": "#c7c7c7",
+ "terminal.ansiYellow": "#f29718",
+ "terminal.background": "#fff",
+ "textLink.activeForeground": "#000",
+ "textLink.foreground": "#000",
+ "titleBar.activeBackground": "#f6f6f6",
+ "titleBar.border": "#FFFFFF00",
+ "titleBar.inactiveBackground": "#f6f6f6",
+ "inputOption.activeBackground": "#EDEDED",
+ "debugIcon.continueForeground": "#6f42c1",
+ "debugIcon.disconnectForeground": "#6f42c1",
+ "debugIcon.pauseForeground": "#6f42c1",
+ "debugIcon.restartForeground": "#1976D2",
+ "debugIcon.startForeground": "#1976D2",
+ "debugIcon.stepBackForeground": "#6f42c1",
+ "debugIcon.stepIntoForeground": "#6f42c1",
+ "debugIcon.stepOutForeground": "#6f42c1",
+ "debugIcon.stepOverForeground": "#6f42c1",
+ "debugIcon.stopForeground": "#1976D2",
+ "debugIcon.breakpointCurrentStackframeForeground": "#1976D2",
+ "debugIcon.breakpointDisabledForeground": "#848484",
+ "debugIcon.breakpointForeground": "#D32F2F",
+ "debugIcon.breakpointStackframeForeground": "#1976D2",
+ "symbolIcon.classForeground": "#dd8500",
+ "symbolIcon.enumeratorForeground": "#dd8500",
+ "symbolIcon.eventForeground": "#dd8500",
+ "symbolIcon.methodForeground": "#6f42c1",
+ "symbolIcon.constructorForeground": "#6f42c1",
+ "symbolIcon.functionForeground": "#6f42c1",
+ "symbolIcon.fieldForeground": "#1976D2",
+ "symbolIcon.interfaceForeground": "#1976D2",
+ "symbolIcon.variableForeground": "#1976D2",
+ "symbolIcon.enumeratorMemberForeground": "#1976D2",
+ "diffEditor.removedTextBackground": "#e597af52",
+ "diffEditor.insertedTextBackground": "#b7e7a44b"
+ },
+ "tokenColors": [
+ {
+ "settings": {
+ "foreground": "#24292eff"
+ }
+ },
+ {
+ "scope": [
+ "keyword.operator.accessor",
+ "meta.group.braces.round.function.arguments",
+ "meta.template.expression",
+ "markup.fenced_code meta.embedded.block"
+ ],
+ "settings": {
+ "foreground": "#24292eff"
+ }
+ },
+ {
+ "scope": "emphasis",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["strong", "markup.heading.markdown", "markup.bold.markdown"],
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": ["markup.italic.markdown"],
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "meta.link.inline.markdown",
+ "settings": {
+ "fontStyle": "underline",
+ "foreground": "#1976D2"
+ }
+ },
+ {
+ "scope": ["string", "markup.fenced_code", "markup.inline"],
+ "settings": {
+ "foreground": "#2b5581"
+ }
+ },
+ {
+ "scope": ["comment", "string.quoted.docstring.multi"],
+ "settings": {
+ "foreground": "#c2c3c5"
+ }
+ },
+ {
+ "scope": [
+ "constant.numeric",
+ "constant.language",
+ "constant.other.placeholder",
+ "constant.character.format.placeholder",
+ "variable.language.this",
+ "variable.other.object",
+ "variable.other.class",
+ "variable.other.constant",
+ "meta.property-name",
+ "meta.property-value",
+ "support"
+ ],
+ "settings": {
+ "foreground": "#1976D2"
+ }
+ },
+ {
+ "scope": [
+ "keyword",
+ "storage.modifier",
+ "storage.type",
+ "storage.control.clojure",
+ "entity.name.function.clojure",
+ "entity.name.tag.yaml",
+ "support.function.node",
+ "support.type.property-name.json",
+ "punctuation.separator.key-value",
+ "punctuation.definition.template-expression"
+ ],
+ "settings": {
+ "foreground": "#D32F2F"
+ }
+ },
+ {
+ "scope": "variable.parameter.function",
+ "settings": {
+ "foreground": "#FF9800"
+ }
+ },
+ {
+ "scope": [
+ "support.function",
+ "entity.name.type",
+ "entity.other.inherited-class",
+ "meta.function-call",
+ "meta.instance.constructor",
+ "entity.other.attribute-name",
+ "entity.name.function",
+ "constant.keyword.clojure"
+ ],
+ "settings": {
+ "foreground": "#6f42c1"
+ }
+ },
+ {
+ "scope": [
+ "entity.name.tag",
+ "string.quoted",
+ "string.regexp",
+ "string.interpolated",
+ "string.template",
+ "string.unquoted.plain.out.yaml",
+ "keyword.other.template"
+ ],
+ "settings": {
+ "foreground": "#22863a"
+ }
+ },
+ {
+ "scope": "token.info-token",
+ "settings": {
+ "foreground": "#316bcd"
+ }
+ },
+ {
+ "scope": "token.warn-token",
+ "settings": {
+ "foreground": "#cd9731"
+ }
+ },
+ {
+ "scope": "token.error-token",
+ "settings": {
+ "foreground": "#cd3131"
+ }
+ },
+ {
+ "scope": "token.debug-token",
+ "settings": {
+ "foreground": "#800080"
+ }
+ },
+ {
+ "scope": ["strong", "markup.heading.markdown", "markup.bold.markdown"],
+ "settings": {
+ "foreground": "#6f42c1"
+ }
+ },
+ {
+ "scope": [
+ "punctuation.definition.arguments",
+ "punctuation.definition.dict",
+ "punctuation.separator",
+ "meta.function-call.arguments"
+ ],
+ "settings": {
+ "foreground": "#212121"
+ }
+ },
+ {
+ "name": "[Custom] Markdown links",
+ "scope": ["markup.underline.link", "punctuation.definition.metadata.markdown"],
+ "settings": {
+ "foreground": "#22863a"
+ }
+ },
+ {
+ "name": "[Custom] Markdown list",
+ "scope": ["beginning.punctuation.definition.list.markdown"],
+ "settings": {
+ "foreground": "#6f42c1"
+ }
+ },
+ {
+ "name": "[Custom] Markdown punctuation definition brackets",
+ "scope": [
+ "punctuation.definition.string.begin.markdown",
+ "punctuation.definition.string.end.markdown",
+ "string.other.link.title.markdown",
+ "string.other.link.description.markdown"
+ ],
+ "settings": {
+ "foreground": "#d32f2f"
+ }
+ }
+ ]
+}
diff --git a/node_modules/shiki/themes/monokai.json b/node_modules/shiki/themes/monokai.json
new file mode 100644
index 0000000..dead619
--- /dev/null
+++ b/node_modules/shiki/themes/monokai.json
@@ -0,0 +1,472 @@
+{
+ "type": "dark",
+ "colors": {
+ "dropdown.background": "#414339",
+ "list.activeSelectionBackground": "#75715E",
+ "quickInputList.focusBackground": "#414339",
+ "dropdown.listBackground": "#1e1f1c",
+ "list.inactiveSelectionBackground": "#414339",
+ "list.hoverBackground": "#3e3d32",
+ "list.dropBackground": "#414339",
+ "list.highlightForeground": "#f8f8f2",
+ "button.background": "#75715E",
+ "editor.background": "#272822",
+ "editor.foreground": "#f8f8f2",
+ "selection.background": "#878b9180",
+ "editor.selectionHighlightBackground": "#575b6180",
+ "editor.selectionBackground": "#878b9180",
+ "minimap.selectionHighlight": "#878b9180",
+ "editor.wordHighlightBackground": "#4a4a7680",
+ "editor.wordHighlightStrongBackground": "#6a6a9680",
+ "editor.lineHighlightBackground": "#3e3d32",
+ "editorLineNumber.activeForeground": "#c2c2bf",
+ "editorCursor.foreground": "#f8f8f0",
+ "editorWhitespace.foreground": "#464741",
+ "editorIndentGuide.background": "#464741",
+ "editorIndentGuide.activeBackground": "#767771",
+ "editorGroupHeader.tabsBackground": "#1e1f1c",
+ "editorGroup.dropBackground": "#41433980",
+ "tab.inactiveBackground": "#34352f",
+ "tab.border": "#1e1f1c",
+ "tab.inactiveForeground": "#ccccc7",
+ "tab.lastPinnedBorder": "#414339",
+ "widget.shadow": "#00000098",
+ "progressBar.background": "#75715E",
+ "badge.background": "#75715E",
+ "badge.foreground": "#f8f8f2",
+ "editorLineNumber.foreground": "#90908a",
+ "panelTitle.activeForeground": "#f8f8f2",
+ "panelTitle.activeBorder": "#75715E",
+ "panelTitle.inactiveForeground": "#75715E",
+ "panel.border": "#414339",
+ "settings.focusedRowBackground": "#4143395A",
+ "titleBar.activeBackground": "#1e1f1c",
+ "statusBar.background": "#414339",
+ "statusBar.noFolderBackground": "#414339",
+ "statusBar.debuggingBackground": "#75715E",
+ "statusBarItem.remoteBackground": "#AC6218",
+ "ports.iconRunningProcessForeground": "#ccccc7",
+ "activityBar.background": "#272822",
+ "activityBar.foreground": "#f8f8f2",
+ "sideBar.background": "#1e1f1c",
+ "sideBarSectionHeader.background": "#272822",
+ "menu.background": "#1e1f1c",
+ "menu.foreground": "#cccccc",
+ "pickerGroup.foreground": "#75715E",
+ "input.background": "#414339",
+ "inputOption.activeBorder": "#75715E",
+ "focusBorder": "#99947c",
+ "editorWidget.background": "#1e1f1c",
+ "debugToolBar.background": "#1e1f1c",
+ "diffEditor.insertedTextBackground": "#4b661680",
+ "diffEditor.removedTextBackground": "#90274A70",
+ "inputValidation.errorBackground": "#90274A",
+ "inputValidation.errorBorder": "#f92672",
+ "inputValidation.warningBackground": "#848528",
+ "inputValidation.warningBorder": "#e2e22e",
+ "inputValidation.infoBackground": "#546190",
+ "inputValidation.infoBorder": "#819aff",
+ "editorHoverWidget.background": "#414339",
+ "editorHoverWidget.border": "#75715E",
+ "editorSuggestWidget.background": "#272822",
+ "editorSuggestWidget.border": "#75715E",
+ "editorGroup.border": "#34352f",
+ "peekView.border": "#75715E",
+ "peekViewEditor.background": "#272822",
+ "peekViewResult.background": "#1e1f1c",
+ "peekViewTitle.background": "#1e1f1c",
+ "peekViewResult.selectionBackground": "#414339",
+ "peekViewResult.matchHighlightBackground": "#75715E",
+ "peekViewEditor.matchHighlightBackground": "#75715E",
+ "terminal.ansiBlack": "#333333",
+ "terminal.ansiRed": "#C4265E",
+ "terminal.ansiGreen": "#86B42B",
+ "terminal.ansiYellow": "#B3B42B",
+ "terminal.ansiBlue": "#6A7EC8",
+ "terminal.ansiMagenta": "#8C6BC8",
+ "terminal.ansiCyan": "#56ADBC",
+ "terminal.ansiWhite": "#e3e3dd",
+ "terminal.ansiBrightBlack": "#666666",
+ "terminal.ansiBrightRed": "#f92672",
+ "terminal.ansiBrightGreen": "#A6E22E",
+ "terminal.ansiBrightYellow": "#e2e22e",
+ "terminal.ansiBrightBlue": "#819aff",
+ "terminal.ansiBrightMagenta": "#AE81FF",
+ "terminal.ansiBrightCyan": "#66D9EF",
+ "terminal.ansiBrightWhite": "#f8f8f2"
+ },
+ "tokenColors": [
+ {
+ "settings": {
+ "foreground": "#F8F8F2"
+ }
+ },
+ {
+ "scope": ["meta.embedded", "source.groovy.embedded", "string meta.image.inline.markdown"],
+ "settings": {
+ "foreground": "#F8F8F2"
+ }
+ },
+ {
+ "name": "Comments",
+ "scope": ["comment", "string.quoted.docstring"],
+ "settings": {
+ "foreground": "#88846f"
+ }
+ },
+ {
+ "name": "String",
+ "scope": "string",
+ "settings": {
+ "foreground": "#E6DB74"
+ }
+ },
+ {
+ "name": "Template Definition",
+ "scope": ["punctuation.definition.template-expression", "punctuation.section.embedded"],
+ "settings": {
+ "foreground": "#F92672"
+ }
+ },
+ {
+ "name": "Reset JavaScript string interpolation expression",
+ "scope": ["meta.template.expression"],
+ "settings": {
+ "foreground": "#F8F8F2"
+ }
+ },
+ {
+ "name": "Number",
+ "scope": "constant.numeric",
+ "settings": {
+ "foreground": "#AE81FF"
+ }
+ },
+ {
+ "name": "Built-in constant",
+ "scope": "constant.language",
+ "settings": {
+ "foreground": "#AE81FF"
+ }
+ },
+ {
+ "name": "User-defined constant",
+ "scope": "constant.character, constant.other",
+ "settings": {
+ "foreground": "#AE81FF"
+ }
+ },
+ {
+ "name": "Variable",
+ "scope": "variable",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#F8F8F2"
+ }
+ },
+ {
+ "name": "Keyword",
+ "scope": "keyword",
+ "settings": {
+ "foreground": "#F92672"
+ }
+ },
+ {
+ "name": "Storage",
+ "scope": "storage",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#F92672"
+ }
+ },
+ {
+ "name": "Storage type",
+ "scope": "storage.type",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#66D9EF"
+ }
+ },
+ {
+ "name": "Class name",
+ "scope": "entity.name.type, entity.name.class, entity.name.namespace, entity.name.scope-resolution",
+ "settings": {
+ "fontStyle": "underline",
+ "foreground": "#A6E22E"
+ }
+ },
+ {
+ "name": "Inherited class",
+ "scope": "entity.other.inherited-class",
+ "settings": {
+ "fontStyle": "italic underline",
+ "foreground": "#A6E22E"
+ }
+ },
+ {
+ "name": "Function name",
+ "scope": "entity.name.function",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#A6E22E"
+ }
+ },
+ {
+ "name": "Function argument",
+ "scope": "variable.parameter",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#FD971F"
+ }
+ },
+ {
+ "name": "Tag name",
+ "scope": "entity.name.tag",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#F92672"
+ }
+ },
+ {
+ "name": "Tag attribute",
+ "scope": "entity.other.attribute-name",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#A6E22E"
+ }
+ },
+ {
+ "name": "Library function",
+ "scope": "support.function",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#66D9EF"
+ }
+ },
+ {
+ "name": "Library constant",
+ "scope": "support.constant",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#66D9EF"
+ }
+ },
+ {
+ "name": "Library class/type",
+ "scope": "support.type, support.class",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#66D9EF"
+ }
+ },
+ {
+ "name": "Library variable",
+ "scope": "support.other.variable",
+ "settings": {
+ "fontStyle": ""
+ }
+ },
+ {
+ "name": "Invalid",
+ "scope": "invalid",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#F44747"
+ }
+ },
+ {
+ "name": "Invalid deprecated",
+ "scope": "invalid.deprecated",
+ "settings": {
+ "foreground": "#F44747"
+ }
+ },
+ {
+ "name": "JSON String",
+ "scope": "meta.structure.dictionary.json string.quoted.double.json",
+ "settings": {
+ "foreground": "#CFCFC2"
+ }
+ },
+ {
+ "name": "diff.header",
+ "scope": "meta.diff, meta.diff.header",
+ "settings": {
+ "foreground": "#75715E"
+ }
+ },
+ {
+ "name": "diff.deleted",
+ "scope": "markup.deleted",
+ "settings": {
+ "foreground": "#F92672"
+ }
+ },
+ {
+ "name": "diff.inserted",
+ "scope": "markup.inserted",
+ "settings": {
+ "foreground": "#A6E22E"
+ }
+ },
+ {
+ "name": "diff.changed",
+ "scope": "markup.changed",
+ "settings": {
+ "foreground": "#E6DB74"
+ }
+ },
+ {
+ "scope": "constant.numeric.line-number.find-in-files - match",
+ "settings": {
+ "foreground": "#AE81FFA0"
+ }
+ },
+ {
+ "scope": "entity.name.filename.find-in-files",
+ "settings": {
+ "foreground": "#E6DB74"
+ }
+ },
+ {
+ "name": "Markup Quote",
+ "scope": "markup.quote",
+ "settings": {
+ "foreground": "#F92672"
+ }
+ },
+ {
+ "name": "Markup Lists",
+ "scope": "markup.list",
+ "settings": {
+ "foreground": "#E6DB74"
+ }
+ },
+ {
+ "name": "Markup Styling",
+ "scope": "markup.bold, markup.italic",
+ "settings": {
+ "foreground": "#66D9EF"
+ }
+ },
+ {
+ "name": "Markup Inline",
+ "scope": "markup.inline.raw",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#FD971F"
+ }
+ },
+ {
+ "name": "Markup Headings",
+ "scope": "markup.heading",
+ "settings": {
+ "foreground": "#A6E22E"
+ }
+ },
+ {
+ "name": "Markup Setext Header",
+ "scope": "markup.heading.setext",
+ "settings": {
+ "foreground": "#A6E22E",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "Markup Headings",
+ "scope": "markup.heading.markdown",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "Markdown Quote",
+ "scope": "markup.quote.markdown",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#75715E"
+ }
+ },
+ {
+ "name": "Markdown Bold",
+ "scope": "markup.bold.markdown",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "Markdown Link Title/Description",
+ "scope": "string.other.link.title.markdown,string.other.link.description.markdown",
+ "settings": {
+ "foreground": "#AE81FF"
+ }
+ },
+ {
+ "name": "Markdown Underline Link/Image",
+ "scope": "markup.underline.link.markdown,markup.underline.link.image.markdown",
+ "settings": {
+ "foreground": "#E6DB74"
+ }
+ },
+ {
+ "name": "Markdown Emphasis",
+ "scope": "markup.italic.markdown",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "markup.strikethrough",
+ "settings": {
+ "fontStyle": "strikethrough"
+ }
+ },
+ {
+ "name": "Markdown Punctuation Definition Link",
+ "scope": "markup.list.unnumbered.markdown, markup.list.numbered.markdown",
+ "settings": {
+ "foreground": "#f8f8f2"
+ }
+ },
+ {
+ "name": "Markdown List Punctuation",
+ "scope": ["punctuation.definition.list.begin.markdown"],
+ "settings": {
+ "foreground": "#A6E22E"
+ }
+ },
+ {
+ "scope": "token.info-token",
+ "settings": {
+ "foreground": "#6796e6"
+ }
+ },
+ {
+ "scope": "token.warn-token",
+ "settings": {
+ "foreground": "#cd9731"
+ }
+ },
+ {
+ "scope": "token.error-token",
+ "settings": {
+ "foreground": "#f44747"
+ }
+ },
+ {
+ "scope": "token.debug-token",
+ "settings": {
+ "foreground": "#b267e6"
+ }
+ },
+ {
+ "name": "this.self",
+ "scope": "variable.language",
+ "settings": {
+ "foreground": "#FD971F"
+ }
+ }
+ ],
+ "semanticHighlighting": true,
+ "name": "monokai"
+}
diff --git a/node_modules/shiki/themes/nord.json b/node_modules/shiki/themes/nord.json
new file mode 100644
index 0000000..8fa8559
--- /dev/null
+++ b/node_modules/shiki/themes/nord.json
@@ -0,0 +1,1402 @@
+{
+ "name": "nord",
+ "type": "dark",
+ "semanticHighlighting": true,
+ "colors": {
+ "focusBorder": "#3b4252",
+ "foreground": "#d8dee9",
+ "activityBar.background": "#2e3440",
+ "activityBar.dropBackground": "#3b4252",
+ "activityBar.foreground": "#d8dee9",
+ "activityBar.activeBorder": "#88c0d0",
+ "activityBar.activeBackground": "#3b4252",
+ "activityBarBadge.background": "#88c0d0",
+ "activityBarBadge.foreground": "#2e3440",
+ "badge.foreground": "#2e3440",
+ "badge.background": "#88c0d0",
+ "button.background": "#88c0d0ee",
+ "button.foreground": "#2e3440",
+ "button.hoverBackground": "#88c0d0",
+ "button.secondaryBackground": "#434c5e",
+ "button.secondaryForeground": "#d8dee9",
+ "button.secondaryHoverBackground": "#4c566a",
+ "charts.red": "#bf616a",
+ "charts.blue": "#81a1c1",
+ "charts.yellow": "#ebcb8b",
+ "charts.orange": "#d08770",
+ "charts.green": "#a3be8c",
+ "charts.purple": "#b48ead",
+ "charts.foreground": "#d8dee9",
+ "charts.lines": "#88c0d0",
+ "debugConsole.infoForeground": "#88c0d0",
+ "debugConsole.warningForeground": "#ebcb8b",
+ "debugConsole.errorForeground": "#bf616a",
+ "debugConsole.sourceForeground": "#616e88",
+ "debugConsoleInputIcon.foreground": "#81a1c1",
+ "debugExceptionWidget.background": "#4c566a",
+ "debugExceptionWidget.border": "#2e3440",
+ "debugToolBar.background": "#3b4252",
+ "descriptionForeground": "#d8dee9e6",
+ "diffEditor.insertedTextBackground": "#81a1c133",
+ "diffEditor.removedTextBackground": "#bf616a4d",
+ "dropdown.background": "#3b4252",
+ "dropdown.border": "#3b4252",
+ "dropdown.foreground": "#d8dee9",
+ "editorActiveLineNumber.foreground": "#d8dee9cc",
+ "editorCursor.foreground": "#d8dee9",
+ "editorHint.border": "#ebcb8b00",
+ "editorHint.foreground": "#ebcb8b",
+ "editorIndentGuide.background": "#434c5eb3",
+ "editorIndentGuide.activeBackground": "#4c566a",
+ "editorInlayHint.background": "#434c5e",
+ "editorInlayHint.foreground": "#d8dee9",
+ "editorLineNumber.foreground": "#4c566a",
+ "editorLineNumber.activeForeground": "#d8dee9",
+ "editorWhitespace.foreground": "#4c566ab3",
+ "editorWidget.background": "#2e3440",
+ "editorWidget.border": "#3b4252",
+ "editor.background": "#2e3440",
+ "editor.foreground": "#d8dee9",
+ "editor.hoverHighlightBackground": "#3b4252",
+ "editor.findMatchBackground": "#88c0d066",
+ "editor.findMatchHighlightBackground": "#88c0d033",
+ "editor.findRangeHighlightBackground": "#88c0d033",
+ "editor.lineHighlightBackground": "#3b4252",
+ "editor.lineHighlightBorder": "#3b4252",
+ "editor.inactiveSelectionBackground": "#434c5ecc",
+ "editor.inlineValuesBackground": "#4c566a",
+ "editor.inlineValuesForeground": "#eceff4",
+ "editor.selectionBackground": "#434c5ecc",
+ "editor.selectionHighlightBackground": "#434c5ecc",
+ "editor.rangeHighlightBackground": "#434c5e52",
+ "editor.wordHighlightBackground": "#81a1c166",
+ "editor.wordHighlightStrongBackground": "#81a1c199",
+ "editor.stackFrameHighlightBackground": "#5e81ac",
+ "editor.focusedStackFrameHighlightBackground": "#5e81ac",
+ "editorError.foreground": "#bf616a",
+ "editorError.border": "#bf616a00",
+ "editorWarning.foreground": "#ebcb8b",
+ "editorWarning.border": "#ebcb8b00",
+ "editorBracketMatch.background": "#2e344000",
+ "editorBracketMatch.border": "#88c0d0",
+ "editorBracketHighlight.foreground1": "#8fbcbb",
+ "editorBracketHighlight.foreground2": "#88c0d0",
+ "editorBracketHighlight.foreground3": "#81a1c1",
+ "editorBracketHighlight.foreground4": "#5e81ac",
+ "editorBracketHighlight.foreground5": "#8fbcbb",
+ "editorBracketHighlight.foreground6": "#88c0d0",
+ "editorBracketHighlight.unexpectedBracket.foreground": "#bf616a",
+ "editorCodeLens.foreground": "#4c566a",
+ "editorGroup.background": "#2e3440",
+ "editorGroup.border": "#3b425201",
+ "editorGroup.dropBackground": "#3b425299",
+ "editorGroupHeader.border": "#3b425200",
+ "editorGroupHeader.noTabsBackground": "#2e3440",
+ "editorGroupHeader.tabsBackground": "#2e3440",
+ "editorGroupHeader.tabsBorder": "#3b425200",
+ "editorGutter.background": "#2e3440",
+ "editorGutter.modifiedBackground": "#ebcb8b",
+ "editorGutter.addedBackground": "#a3be8c",
+ "editorGutter.deletedBackground": "#bf616a",
+ "editorHoverWidget.background": "#3b4252",
+ "editorHoverWidget.border": "#3b4252",
+ "editorLink.activeForeground": "#88c0d0",
+ "editorMarkerNavigation.background": "#5e81acc0",
+ "editorMarkerNavigationError.background": "#bf616ac0",
+ "editorMarkerNavigationWarning.background": "#ebcb8bc0",
+ "editorOverviewRuler.border": "#3b4252",
+ "editorOverviewRuler.currentContentForeground": "#3b4252",
+ "editorOverviewRuler.incomingContentForeground": "#3b4252",
+ "editorOverviewRuler.findMatchForeground": "#88c0d066",
+ "editorOverviewRuler.rangeHighlightForeground": "#88c0d066",
+ "editorOverviewRuler.selectionHighlightForeground": "#88c0d066",
+ "editorOverviewRuler.wordHighlightForeground": "#88c0d066",
+ "editorOverviewRuler.wordHighlightStrongForeground": "#88c0d066",
+ "editorOverviewRuler.modifiedForeground": "#ebcb8b",
+ "editorOverviewRuler.addedForeground": "#a3be8c",
+ "editorOverviewRuler.deletedForeground": "#bf616a",
+ "editorOverviewRuler.errorForeground": "#bf616a",
+ "editorOverviewRuler.warningForeground": "#ebcb8b",
+ "editorOverviewRuler.infoForeground": "#81a1c1",
+ "editorRuler.foreground": "#434c5e",
+ "editorSuggestWidget.background": "#2e3440",
+ "editorSuggestWidget.border": "#3b4252",
+ "editorSuggestWidget.foreground": "#d8dee9",
+ "editorSuggestWidget.focusHighlightForeground": "#88c0d0",
+ "editorSuggestWidget.highlightForeground": "#88c0d0",
+ "editorSuggestWidget.selectedBackground": "#434c5e",
+ "editorSuggestWidget.selectedForeground": "#d8dee9",
+ "extensionButton.prominentForeground": "#d8dee9",
+ "extensionButton.prominentBackground": "#434c5e",
+ "extensionButton.prominentHoverBackground": "#4c566a",
+ "errorForeground": "#bf616a",
+ "gitDecoration.modifiedResourceForeground": "#ebcb8b",
+ "gitDecoration.deletedResourceForeground": "#bf616a",
+ "gitDecoration.untrackedResourceForeground": "#a3be8c",
+ "gitDecoration.ignoredResourceForeground": "#d8dee966",
+ "gitDecoration.conflictingResourceForeground": "#5e81ac",
+ "gitDecoration.submoduleResourceForeground": "#8fbcbb",
+ "gitDecoration.stageDeletedResourceForeground": "#bf616a",
+ "gitDecoration.stageModifiedResourceForeground": "#ebcb8b",
+ "input.background": "#3b4252",
+ "input.foreground": "#d8dee9",
+ "input.placeholderForeground": "#d8dee999",
+ "input.border": "#3b4252",
+ "inputOption.activeBackground": "#5e81ac",
+ "inputOption.activeBorder": "#5e81ac",
+ "inputOption.activeForeground": "#eceff4",
+ "inputValidation.errorBackground": "#bf616a",
+ "inputValidation.errorBorder": "#bf616a",
+ "inputValidation.infoBackground": "#81a1c1",
+ "inputValidation.infoBorder": "#81a1c1",
+ "inputValidation.warningBackground": "#d08770",
+ "inputValidation.warningBorder": "#d08770",
+ "keybindingLabel.background": "#4c566a",
+ "keybindingLabel.border": "#4c566a",
+ "keybindingLabel.bottomBorder": "#4c566a",
+ "keybindingLabel.foreground": "#d8dee9",
+ "list.activeSelectionBackground": "#88c0d0",
+ "list.activeSelectionForeground": "#2e3440",
+ "list.inactiveSelectionBackground": "#434c5e",
+ "list.inactiveSelectionForeground": "#d8dee9",
+ "list.inactiveFocusBackground": "#434c5ecc",
+ "list.hoverForeground": "#eceff4",
+ "list.focusForeground": "#d8dee9",
+ "list.focusBackground": "#88c0d099",
+ "list.focusHighlightForeground": "#eceff4",
+ "list.hoverBackground": "#3b4252",
+ "list.dropBackground": "#88c0d099",
+ "list.highlightForeground": "#88c0d0",
+ "list.errorForeground": "#bf616a",
+ "list.warningForeground": "#ebcb8b",
+ "merge.currentHeaderBackground": "#81a1c166",
+ "merge.currentContentBackground": "#81a1c14d",
+ "merge.incomingHeaderBackground": "#8fbcbb66",
+ "merge.incomingContentBackground": "#8fbcbb4d",
+ "merge.border": "#3b425200",
+ "minimap.background": "#2e3440",
+ "minimap.errorHighlight": "#bf616acc",
+ "minimap.findMatchHighlight": "#88c0d0",
+ "minimap.selectionHighlight": "#88c0d0cc",
+ "minimap.warningHighlight": "#ebcb8bcc",
+ "minimapGutter.addedBackground": "#a3be8c",
+ "minimapGutter.deletedBackground": "#bf616a",
+ "minimapGutter.modifiedBackground": "#ebcb8b",
+ "minimapSlider.activeBackground": "#434c5eaa",
+ "minimapSlider.background": "#434c5e99",
+ "minimapSlider.hoverBackground": "#434c5eaa",
+ "notification.background": "#3b4252",
+ "notification.buttonBackground": "#434c5e",
+ "notification.buttonForeground": "#d8dee9",
+ "notification.buttonHoverBackground": "#4c566a",
+ "notification.errorBackground": "#bf616a",
+ "notification.errorForeground": "#2e3440",
+ "notification.foreground": "#d8dee9",
+ "notification.infoBackground": "#88c0d0",
+ "notification.infoForeground": "#2e3440",
+ "notification.warningBackground": "#ebcb8b",
+ "notification.warningForeground": "#2e3440",
+ "notificationCenter.border": "#3b425200",
+ "notificationCenterHeader.background": "#2e3440",
+ "notificationCenterHeader.foreground": "#88c0d0",
+ "notificationLink.foreground": "#88c0d0",
+ "notifications.background": "#3b4252",
+ "notifications.border": "#2e3440",
+ "notifications.foreground": "#d8dee9",
+ "notificationToast.border": "#3b425200",
+ "panel.background": "#2e3440",
+ "panel.border": "#3b4252",
+ "panelTitle.activeBorder": "#88c0d000",
+ "panelTitle.activeForeground": "#88c0d0",
+ "panelTitle.inactiveForeground": "#d8dee9",
+ "peekView.border": "#4c566a",
+ "peekViewEditor.background": "#2e3440",
+ "peekViewEditorGutter.background": "#2e3440",
+ "peekViewEditor.matchHighlightBackground": "#88c0d04d",
+ "peekViewResult.background": "#2e3440",
+ "peekViewResult.fileForeground": "#88c0d0",
+ "peekViewResult.lineForeground": "#d8dee966",
+ "peekViewResult.matchHighlightBackground": "#88c0d0cc",
+ "peekViewResult.selectionBackground": "#434c5e",
+ "peekViewResult.selectionForeground": "#d8dee9",
+ "peekViewTitle.background": "#3b4252",
+ "peekViewTitleDescription.foreground": "#d8dee9",
+ "peekViewTitleLabel.foreground": "#88c0d0",
+ "pickerGroup.border": "#3b4252",
+ "pickerGroup.foreground": "#88c0d0",
+ "progressBar.background": "#88c0d0",
+ "quickInputList.focusBackground": "#88c0d0",
+ "quickInputList.focusForeground": "#2e3440",
+ "sash.hoverBorder": "#88c0d0",
+ "scrollbar.shadow": "#00000066",
+ "scrollbarSlider.activeBackground": "#434c5eaa",
+ "scrollbarSlider.background": "#434c5e99",
+ "scrollbarSlider.hoverBackground": "#434c5eaa",
+ "selection.background": "#88c0d099",
+ "sideBar.background": "#2e3440",
+ "sideBar.foreground": "#d8dee9",
+ "sideBar.border": "#3b4252",
+ "sideBarSectionHeader.background": "#3b4252",
+ "sideBarSectionHeader.foreground": "#d8dee9",
+ "sideBarTitle.foreground": "#d8dee9",
+ "statusBar.background": "#3b4252",
+ "statusBar.debuggingBackground": "#5e81ac",
+ "statusBar.debuggingForeground": "#d8dee9",
+ "statusBar.noFolderForeground": "#d8dee9",
+ "statusBar.noFolderBackground": "#3b4252",
+ "statusBar.foreground": "#d8dee9",
+ "statusBarItem.activeBackground": "#4c566a",
+ "statusBarItem.hoverBackground": "#434c5e",
+ "statusBarItem.prominentBackground": "#3b4252",
+ "statusBarItem.prominentHoverBackground": "#434c5e",
+ "statusBarItem.errorBackground": "#3b4252",
+ "statusBarItem.errorForeground": "#bf616a",
+ "statusBarItem.warningBackground": "#ebcb8b",
+ "statusBarItem.warningForeground": "#2e3440",
+ "statusBar.border": "#3b425200",
+ "tab.activeBackground": "#3b4252",
+ "tab.activeForeground": "#d8dee9",
+ "tab.border": "#3b425200",
+ "tab.activeBorder": "#88c0d000",
+ "tab.unfocusedActiveBorder": "#88c0d000",
+ "tab.inactiveBackground": "#2e3440",
+ "tab.inactiveForeground": "#d8dee966",
+ "tab.unfocusedActiveForeground": "#d8dee999",
+ "tab.unfocusedInactiveForeground": "#d8dee966",
+ "tab.hoverBackground": "#3b4252cc",
+ "tab.unfocusedHoverBackground": "#3b4252b3",
+ "tab.hoverBorder": "#88c0d000",
+ "tab.unfocusedHoverBorder": "#88c0d000",
+ "tab.activeBorderTop": "#88c0d000",
+ "tab.unfocusedActiveBorderTop": "#88c0d000",
+ "tab.lastPinnedBorder": "#4c566a",
+ "terminal.background": "#2e3440",
+ "terminal.foreground": "#d8dee9",
+ "terminal.ansiBlack": "#3b4252",
+ "terminal.ansiRed": "#bf616a",
+ "terminal.ansiGreen": "#a3be8c",
+ "terminal.ansiYellow": "#ebcb8b",
+ "terminal.ansiBlue": "#81a1c1",
+ "terminal.ansiMagenta": "#b48ead",
+ "terminal.ansiCyan": "#88c0d0",
+ "terminal.ansiWhite": "#e5e9f0",
+ "terminal.ansiBrightBlack": "#4c566a",
+ "terminal.ansiBrightRed": "#bf616a",
+ "terminal.ansiBrightGreen": "#a3be8c",
+ "terminal.ansiBrightYellow": "#ebcb8b",
+ "terminal.ansiBrightBlue": "#81a1c1",
+ "terminal.ansiBrightMagenta": "#b48ead",
+ "terminal.ansiBrightCyan": "#8fbcbb",
+ "terminal.ansiBrightWhite": "#eceff4",
+ "terminal.tab.activeBorder": "#88c0d0",
+ "textBlockQuote.background": "#3b4252",
+ "textBlockQuote.border": "#81a1c1",
+ "textCodeBlock.background": "#4c566a",
+ "textLink.activeForeground": "#88c0d0",
+ "textLink.foreground": "#88c0d0",
+ "textPreformat.foreground": "#8fbcbb",
+ "textSeparator.foreground": "#eceff4",
+ "titleBar.activeBackground": "#2e3440",
+ "titleBar.activeForeground": "#d8dee9",
+ "titleBar.border": "#2e344000",
+ "titleBar.inactiveBackground": "#2e3440",
+ "titleBar.inactiveForeground": "#d8dee966",
+ "tree.indentGuidesStroke": "#616e88",
+ "walkThrough.embeddedEditorBackground": "#2e3440",
+ "welcomePage.buttonBackground": "#434c5e",
+ "welcomePage.buttonHoverBackground": "#4c566a",
+ "widget.shadow": "#00000066"
+ },
+ "tokenColors": [
+ {
+ "settings": {
+ "foreground": "#d8dee9ff",
+ "background": "#2e3440ff"
+ }
+ },
+ {
+ "scope": "emphasis",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "strong",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "Comment",
+ "scope": "comment",
+ "settings": {
+ "foreground": "#616E88"
+ }
+ },
+ {
+ "name": "Constant Character",
+ "scope": "constant.character",
+ "settings": {
+ "foreground": "#EBCB8B"
+ }
+ },
+ {
+ "name": "Constant Character Escape",
+ "scope": "constant.character.escape",
+ "settings": {
+ "foreground": "#EBCB8B"
+ }
+ },
+ {
+ "name": "Constant Language",
+ "scope": "constant.language",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "Constant Numeric",
+ "scope": "constant.numeric",
+ "settings": {
+ "foreground": "#B48EAD"
+ }
+ },
+ {
+ "name": "Constant Regexp",
+ "scope": "constant.regexp",
+ "settings": {
+ "foreground": "#EBCB8B"
+ }
+ },
+ {
+ "name": "Entity Name Class/Type",
+ "scope": ["entity.name.class", "entity.name.type.class"],
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "Entity Name Function",
+ "scope": "entity.name.function",
+ "settings": {
+ "foreground": "#88C0D0"
+ }
+ },
+ {
+ "name": "Entity Name Tag",
+ "scope": "entity.name.tag",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "Entity Other Attribute Name",
+ "scope": "entity.other.attribute-name",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "Entity Other Inherited Class",
+ "scope": "entity.other.inherited-class",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "Invalid Deprecated",
+ "scope": "invalid.deprecated",
+ "settings": {
+ "foreground": "#D8DEE9",
+ "background": "#EBCB8B"
+ }
+ },
+ {
+ "name": "Invalid Illegal",
+ "scope": "invalid.illegal",
+ "settings": {
+ "foreground": "#D8DEE9",
+ "background": "#BF616A"
+ }
+ },
+ {
+ "name": "Keyword",
+ "scope": "keyword",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "Keyword Operator",
+ "scope": "keyword.operator",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "Keyword Other New",
+ "scope": "keyword.other.new",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "Markup Bold",
+ "scope": "markup.bold",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "Markup Changed",
+ "scope": "markup.changed",
+ "settings": {
+ "foreground": "#EBCB8B"
+ }
+ },
+ {
+ "name": "Markup Deleted",
+ "scope": "markup.deleted",
+ "settings": {
+ "foreground": "#BF616A"
+ }
+ },
+ {
+ "name": "Markup Inserted",
+ "scope": "markup.inserted",
+ "settings": {
+ "foreground": "#A3BE8C"
+ }
+ },
+ {
+ "name": "Meta Preprocessor",
+ "scope": "meta.preprocessor",
+ "settings": {
+ "foreground": "#5E81AC"
+ }
+ },
+ {
+ "name": "Punctuation",
+ "scope": "punctuation",
+ "settings": {
+ "foreground": "#ECEFF4"
+ }
+ },
+ {
+ "name": "Punctuation Definition Parameters",
+ "scope": [
+ "punctuation.definition.method-parameters",
+ "punctuation.definition.function-parameters",
+ "punctuation.definition.parameters"
+ ],
+ "settings": {
+ "foreground": "#ECEFF4"
+ }
+ },
+ {
+ "name": "Punctuation Definition Tag",
+ "scope": "punctuation.definition.tag",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "Punctuation Definition Comment",
+ "scope": [
+ "punctuation.definition.comment",
+ "punctuation.end.definition.comment",
+ "punctuation.start.definition.comment"
+ ],
+ "settings": {
+ "foreground": "#616E88"
+ }
+ },
+ {
+ "name": "Punctuation Section",
+ "scope": "punctuation.section",
+ "settings": {
+ "foreground": "#ECEFF4"
+ }
+ },
+ {
+ "name": "Punctuation Section Embedded",
+ "scope": ["punctuation.section.embedded.begin", "punctuation.section.embedded.end"],
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "Punctuation Terminator",
+ "scope": "punctuation.terminator",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "Punctuation Variable",
+ "scope": "punctuation.definition.variable",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "Storage",
+ "scope": "storage",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "String",
+ "scope": "string",
+ "settings": {
+ "foreground": "#A3BE8C"
+ }
+ },
+ {
+ "name": "String Regexp",
+ "scope": "string.regexp",
+ "settings": {
+ "foreground": "#EBCB8B"
+ }
+ },
+ {
+ "name": "Support Class",
+ "scope": "support.class",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "Support Constant",
+ "scope": "support.constant",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "Support Function",
+ "scope": "support.function",
+ "settings": {
+ "foreground": "#88C0D0"
+ }
+ },
+ {
+ "name": "Support Function Construct",
+ "scope": "support.function.construct",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "Support Type",
+ "scope": "support.type",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "Support Type Exception",
+ "scope": "support.type.exception",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "Token Debug",
+ "scope": "token.debug-token",
+ "settings": {
+ "foreground": "#b48ead"
+ }
+ },
+ {
+ "name": "Token Error",
+ "scope": "token.error-token",
+ "settings": {
+ "foreground": "#bf616a"
+ }
+ },
+ {
+ "name": "Token Info",
+ "scope": "token.info-token",
+ "settings": {
+ "foreground": "#88c0d0"
+ }
+ },
+ {
+ "name": "Token Warning",
+ "scope": "token.warn-token",
+ "settings": {
+ "foreground": "#ebcb8b"
+ }
+ },
+ {
+ "name": "Variable",
+ "scope": "variable.other",
+ "settings": {
+ "foreground": "#D8DEE9"
+ }
+ },
+ {
+ "name": "Variable Language",
+ "scope": "variable.language",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "Variable Parameter",
+ "scope": "variable.parameter",
+ "settings": {
+ "foreground": "#D8DEE9"
+ }
+ },
+ {
+ "name": "[C/CPP] Punctuation Separator Pointer-Access",
+ "scope": "punctuation.separator.pointer-access.c",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "[C/CPP] Meta Preprocessor Include",
+ "scope": ["source.c meta.preprocessor.include", "source.c string.quoted.other.lt-gt.include"],
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[C/CPP] Conditional Directive",
+ "scope": [
+ "source.cpp keyword.control.directive.conditional",
+ "source.cpp punctuation.definition.directive",
+ "source.c keyword.control.directive.conditional",
+ "source.c punctuation.definition.directive"
+ ],
+ "settings": {
+ "foreground": "#5E81AC",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "[CSS] Constant Other Color RGB Value",
+ "scope": "source.css constant.other.color.rgb-value",
+ "settings": {
+ "foreground": "#B48EAD"
+ }
+ },
+ {
+ "name": "[CSS](Function) Meta Property-Value",
+ "scope": "source.css meta.property-value",
+ "settings": {
+ "foreground": "#88C0D0"
+ }
+ },
+ {
+ "name": "[CSS] Media Queries",
+ "scope": [
+ "source.css keyword.control.at-rule.media",
+ "source.css keyword.control.at-rule.media punctuation.definition.keyword"
+ ],
+ "settings": {
+ "foreground": "#D08770"
+ }
+ },
+ {
+ "name": "[CSS] Punctuation Definition Keyword",
+ "scope": "source.css punctuation.definition.keyword",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "[CSS] Support Type Property Name",
+ "scope": "source.css support.type.property-name",
+ "settings": {
+ "foreground": "#D8DEE9"
+ }
+ },
+ {
+ "name": "[diff] Meta Range Context",
+ "scope": "source.diff meta.diff.range.context",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[diff] Meta Header From-File",
+ "scope": "source.diff meta.diff.header.from-file",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[diff] Punctuation Definition From-File",
+ "scope": "source.diff punctuation.definition.from-file",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[diff] Punctuation Definition Range",
+ "scope": "source.diff punctuation.definition.range",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[diff] Punctuation Definition Separator",
+ "scope": "source.diff punctuation.definition.separator",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "[Elixir](JakeBecker.elixir-ls) module names",
+ "scope": "entity.name.type.module.elixir",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[Elixir](JakeBecker.elixir-ls) module attributes",
+ "scope": "variable.other.readwrite.module.elixir",
+ "settings": {
+ "foreground": "#D8DEE9",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "[Elixir](JakeBecker.elixir-ls) atoms",
+ "scope": "constant.other.symbol.elixir",
+ "settings": {
+ "foreground": "#D8DEE9",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "[Elixir](JakeBecker.elixir-ls) modules",
+ "scope": "variable.other.constant.elixir",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[Go] String Format Placeholder",
+ "scope": "source.go constant.other.placeholder.go",
+ "settings": {
+ "foreground": "#EBCB8B"
+ }
+ },
+ {
+ "name": "[Java](JavaDoc) Comment Block Documentation HTML Entities",
+ "scope": "source.java comment.block.documentation.javadoc punctuation.definition.entity.html",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "[Java](JavaDoc) Constant Other",
+ "scope": "source.java constant.other",
+ "settings": {
+ "foreground": "#D8DEE9"
+ }
+ },
+ {
+ "name": "[Java](JavaDoc) Keyword Other Documentation",
+ "scope": "source.java keyword.other.documentation",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[Java](JavaDoc) Keyword Other Documentation Author",
+ "scope": "source.java keyword.other.documentation.author.javadoc",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[Java](JavaDoc) Keyword Other Documentation Directive/Custom",
+ "scope": [
+ "source.java keyword.other.documentation.directive",
+ "source.java keyword.other.documentation.custom"
+ ],
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[Java](JavaDoc) Keyword Other Documentation See",
+ "scope": "source.java keyword.other.documentation.see.javadoc",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[Java] Meta Method-Call",
+ "scope": "source.java meta.method-call meta.method",
+ "settings": {
+ "foreground": "#88C0D0"
+ }
+ },
+ {
+ "name": "[Java](JavaDoc) Meta Tag Template Link",
+ "scope": [
+ "source.java meta.tag.template.link.javadoc",
+ "source.java string.other.link.title.javadoc"
+ ],
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[Java](JavaDoc) Meta Tag Template Value",
+ "scope": "source.java meta.tag.template.value.javadoc",
+ "settings": {
+ "foreground": "#88C0D0"
+ }
+ },
+ {
+ "name": "[Java](JavaDoc) Punctuation Definition Keyword",
+ "scope": "source.java punctuation.definition.keyword.javadoc",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[Java](JavaDoc) Punctuation Definition Tag",
+ "scope": [
+ "source.java punctuation.definition.tag.begin.javadoc",
+ "source.java punctuation.definition.tag.end.javadoc"
+ ],
+ "settings": {
+ "foreground": "#616E88"
+ }
+ },
+ {
+ "name": "[Java] Storage Modifier Import",
+ "scope": "source.java storage.modifier.import",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[Java] Storage Modifier Package",
+ "scope": "source.java storage.modifier.package",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[Java] Storage Type",
+ "scope": "source.java storage.type",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[Java] Storage Type Annotation",
+ "scope": "source.java storage.type.annotation",
+ "settings": {
+ "foreground": "#D08770"
+ }
+ },
+ {
+ "name": "[Java] Storage Type Generic",
+ "scope": "source.java storage.type.generic",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[Java] Storage Type Primitive",
+ "scope": "source.java storage.type.primitive",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "[JavaScript] Decorator",
+ "scope": [
+ "source.js punctuation.decorator",
+ "source.js meta.decorator variable.other.readwrite",
+ "source.js meta.decorator entity.name.function"
+ ],
+ "settings": {
+ "foreground": "#D08770"
+ }
+ },
+ {
+ "name": "[JavaScript] Meta Object-Literal Key",
+ "scope": "source.js meta.object-literal.key",
+ "settings": {
+ "foreground": "#88C0D0"
+ }
+ },
+ {
+ "name": "[JavaScript](JSDoc) Storage Type Class",
+ "scope": "source.js storage.type.class.jsdoc",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[JavaScript] String Template Literals Punctuation",
+ "scope": [
+ "source.js string.quoted.template punctuation.quasi.element.begin",
+ "source.js string.quoted.template punctuation.quasi.element.end",
+ "source.js string.template punctuation.definition.template-expression"
+ ],
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "[JavaScript] Interpolated String Template Punctuation Functions",
+ "scope": "source.js string.quoted.template meta.method-call.with-arguments",
+ "settings": {
+ "foreground": "#ECEFF4"
+ }
+ },
+ {
+ "name": "[JavaScript] String Template Literal Variable",
+ "scope": [
+ "source.js string.template meta.template.expression support.variable.property",
+ "source.js string.template meta.template.expression variable.other.object"
+ ],
+ "settings": {
+ "foreground": "#D8DEE9"
+ }
+ },
+ {
+ "name": "[JavaScript] Support Type Primitive",
+ "scope": "source.js support.type.primitive",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "[JavaScript] Variable Other Object",
+ "scope": "source.js variable.other.object",
+ "settings": {
+ "foreground": "#D8DEE9"
+ }
+ },
+ {
+ "name": "[JavaScript] Variable Other Read-Write Alias",
+ "scope": "source.js variable.other.readwrite.alias",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[JavaScript] Parentheses in Template Strings",
+ "scope": [
+ "source.js meta.embedded.line meta.brace.square",
+ "source.js meta.embedded.line meta.brace.round",
+ "source.js string.quoted.template meta.brace.square",
+ "source.js string.quoted.template meta.brace.round"
+ ],
+ "settings": {
+ "foreground": "#ECEFF4"
+ }
+ },
+ {
+ "name": "[HTML] Constant Character Entity",
+ "scope": "text.html.basic constant.character.entity.html",
+ "settings": {
+ "foreground": "#EBCB8B"
+ }
+ },
+ {
+ "name": "[HTML] Constant Other Inline-Data",
+ "scope": "text.html.basic constant.other.inline-data",
+ "settings": {
+ "foreground": "#D08770",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "[HTML] Meta Tag SGML Doctype",
+ "scope": "text.html.basic meta.tag.sgml.doctype",
+ "settings": {
+ "foreground": "#5E81AC"
+ }
+ },
+ {
+ "name": "[HTML] Punctuation Definition Entity",
+ "scope": "text.html.basic punctuation.definition.entity",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "[INI] Entity Name Section Group-Title",
+ "scope": "source.properties entity.name.section.group-title.ini",
+ "settings": {
+ "foreground": "#88C0D0"
+ }
+ },
+ {
+ "name": "[INI] Punctuation Separator Key-Value",
+ "scope": "source.properties punctuation.separator.key-value.ini",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "[Markdown] Markup Fenced Code Block",
+ "scope": [
+ "text.html.markdown markup.fenced_code.block",
+ "text.html.markdown markup.fenced_code.block punctuation.definition"
+ ],
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[Markdown] Markup Heading",
+ "scope": "markup.heading",
+ "settings": {
+ "foreground": "#88C0D0"
+ }
+ },
+ {
+ "name": "[Markdown] Markup Inline",
+ "scope": [
+ "text.html.markdown markup.inline.raw",
+ "text.html.markdown markup.inline.raw punctuation.definition.raw"
+ ],
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[Markdown] Markup Italic",
+ "scope": "text.html.markdown markup.italic",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "[Markdown] Markup Link",
+ "scope": "text.html.markdown markup.underline.link",
+ "settings": {
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "name": "[Markdown] Markup List Numbered/Unnumbered",
+ "scope": "text.html.markdown beginning.punctuation.definition.list",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "[Markdown] Markup Quote Punctuation Definition",
+ "scope": "text.html.markdown beginning.punctuation.definition.quote",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[Markdown] Markup Quote Punctuation Definition",
+ "scope": "text.html.markdown markup.quote",
+ "settings": {
+ "foreground": "#616E88"
+ }
+ },
+ {
+ "name": "[Markdown] Markup Math Constant",
+ "scope": "text.html.markdown constant.character.math.tex",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "[Markdown] Markup Math Definition Marker",
+ "scope": [
+ "text.html.markdown punctuation.definition.math.begin",
+ "text.html.markdown punctuation.definition.math.end"
+ ],
+ "settings": {
+ "foreground": "#5E81AC"
+ }
+ },
+ {
+ "name": "[Markdown] Markup Math Function Definition Marker",
+ "scope": "text.html.markdown punctuation.definition.function.math.tex",
+ "settings": {
+ "foreground": "#88C0D0"
+ }
+ },
+ {
+ "name": "[Markdown] Markup Math Operator",
+ "scope": "text.html.markdown punctuation.math.operator.latex",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "[Markdown] Punctuation Definition Heading",
+ "scope": "text.html.markdown punctuation.definition.heading",
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "[Markdown] Punctuation Definition Constant/String",
+ "scope": [
+ "text.html.markdown punctuation.definition.constant",
+ "text.html.markdown punctuation.definition.string"
+ ],
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "[Markdown] String Other Link Description/Title",
+ "scope": [
+ "text.html.markdown constant.other.reference.link",
+ "text.html.markdown string.other.link.description",
+ "text.html.markdown string.other.link.title"
+ ],
+ "settings": {
+ "foreground": "#88C0D0"
+ }
+ },
+ {
+ "name": "[Perl] Perl Sigils",
+ "scope": "source.perl punctuation.definition.variable",
+ "settings": {
+ "foreground": "#D8DEE9"
+ }
+ },
+ {
+ "name": "[PHP] Meta Function-Call Object",
+ "scope": ["source.php meta.function-call", "source.php meta.function-call.object"],
+ "settings": {
+ "foreground": "#88C0D0"
+ }
+ },
+ {
+ "name": "[Python] Decorator",
+ "scope": [
+ "source.python entity.name.function.decorator",
+ "source.python meta.function.decorator support.type"
+ ],
+ "settings": {
+ "foreground": "#D08770"
+ }
+ },
+ {
+ "name": "[Python] Function Call",
+ "scope": "source.python meta.function-call.generic",
+ "settings": {
+ "foreground": "#88C0D0"
+ }
+ },
+ {
+ "name": "[Python] Support Type",
+ "scope": "source.python support.type",
+ "settings": {
+ "foreground": "#88C0D0"
+ }
+ },
+ {
+ "name": "[Python] Function Parameter",
+ "scope": ["source.python variable.parameter.function.language"],
+ "settings": {
+ "foreground": "#D8DEE9"
+ }
+ },
+ {
+ "name": "[Python] Function Parameter Special",
+ "scope": [
+ "source.python meta.function.parameters variable.parameter.function.language.special.self"
+ ],
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "[Rust] Entity types",
+ "scope": "source.rust entity.name.type",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[Rust] Macro",
+ "scope": "source.rust meta.macro entity.name.function",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#88C0D0"
+ }
+ },
+ {
+ "name": "[Rust] Attributes",
+ "scope": [
+ "source.rust meta.attribute",
+ "source.rust meta.attribute punctuation",
+ "source.rust meta.attribute keyword.operator"
+ ],
+ "settings": {
+ "foreground": "#5E81AC"
+ }
+ },
+ {
+ "name": "[Rust] Traits",
+ "scope": "source.rust entity.name.type.trait",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "[Rust] Interpolation Bracket Curly",
+ "scope": "source.rust punctuation.definition.interpolation",
+ "settings": {
+ "foreground": "#EBCB8B"
+ }
+ },
+ {
+ "name": "[SCSS] Punctuation Definition Interpolation Bracket Curly",
+ "scope": [
+ "source.css.scss punctuation.definition.interpolation.begin.bracket.curly",
+ "source.css.scss punctuation.definition.interpolation.end.bracket.curly"
+ ],
+ "settings": {
+ "foreground": "#81A1C1"
+ }
+ },
+ {
+ "name": "[SCSS] Variable Interpolation",
+ "scope": "source.css.scss variable.interpolation",
+ "settings": {
+ "foreground": "#D8DEE9",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "[TypeScript] Decorators",
+ "scope": [
+ "source.ts punctuation.decorator",
+ "source.ts meta.decorator variable.other.readwrite",
+ "source.ts meta.decorator entity.name.function",
+ "source.tsx punctuation.decorator",
+ "source.tsx meta.decorator variable.other.readwrite",
+ "source.tsx meta.decorator entity.name.function"
+ ],
+ "settings": {
+ "foreground": "#D08770"
+ }
+ },
+ {
+ "name": "[TypeScript] Object-literal keys",
+ "scope": ["source.ts meta.object-literal.key", "source.tsx meta.object-literal.key"],
+ "settings": {
+ "foreground": "#D8DEE9"
+ }
+ },
+ {
+ "name": "[TypeScript] Object-literal functions",
+ "scope": [
+ "source.ts meta.object-literal.key entity.name.function",
+ "source.tsx meta.object-literal.key entity.name.function"
+ ],
+ "settings": {
+ "foreground": "#88C0D0"
+ }
+ },
+ {
+ "name": "[TypeScript] Type/Class",
+ "scope": [
+ "source.ts support.class",
+ "source.ts support.type",
+ "source.ts entity.name.type",
+ "source.ts entity.name.class",
+ "source.tsx support.class",
+ "source.tsx support.type",
+ "source.tsx entity.name.type",
+ "source.tsx entity.name.class"
+ ],
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[TypeScript] Static Class Support",
+ "scope": [
+ "source.ts support.constant.math",
+ "source.ts support.constant.dom",
+ "source.ts support.constant.json",
+ "source.tsx support.constant.math",
+ "source.tsx support.constant.dom",
+ "source.tsx support.constant.json"
+ ],
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[TypeScript] Variables",
+ "scope": ["source.ts support.variable", "source.tsx support.variable"],
+ "settings": {
+ "foreground": "#D8DEE9"
+ }
+ },
+ {
+ "name": "[TypeScript] Parentheses in Template Strings",
+ "scope": [
+ "source.ts meta.embedded.line meta.brace.square",
+ "source.ts meta.embedded.line meta.brace.round",
+ "source.tsx meta.embedded.line meta.brace.square",
+ "source.tsx meta.embedded.line meta.brace.round"
+ ],
+ "settings": {
+ "foreground": "#ECEFF4"
+ }
+ },
+ {
+ "name": "[XML] Entity Name Tag Namespace",
+ "scope": "text.xml entity.name.tag.namespace",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ },
+ {
+ "name": "[XML] Keyword Other Doctype",
+ "scope": "text.xml keyword.other.doctype",
+ "settings": {
+ "foreground": "#5E81AC"
+ }
+ },
+ {
+ "name": "[XML] Meta Tag Preprocessor",
+ "scope": "text.xml meta.tag.preprocessor entity.name.tag",
+ "settings": {
+ "foreground": "#5E81AC"
+ }
+ },
+ {
+ "name": "[XML] Entity Name Tag Namespace",
+ "scope": [
+ "text.xml string.unquoted.cdata",
+ "text.xml string.unquoted.cdata punctuation.definition.string"
+ ],
+ "settings": {
+ "foreground": "#D08770",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "[YAML] Entity Name Tag",
+ "scope": "source.yaml entity.name.tag",
+ "settings": {
+ "foreground": "#8FBCBB"
+ }
+ }
+ ]
+}
diff --git a/node_modules/shiki/themes/one-dark-pro.json b/node_modules/shiki/themes/one-dark-pro.json
new file mode 100644
index 0000000..c6372e3
--- /dev/null
+++ b/node_modules/shiki/themes/one-dark-pro.json
@@ -0,0 +1,2104 @@
+{
+ "name": "one-dark-pro",
+ "type": "dark",
+ "semanticHighlighting": true,
+ "semanticTokenColors": {
+ "enumMember": {
+ "foreground": "#56b6c2"
+ },
+ "variable.constant": {
+ "foreground": "#d19a66"
+ },
+ "variable.defaultLibrary": {
+ "foreground": "#e5c07b"
+ },
+ "variable:dart": {
+ "foreground": "#d19a66"
+ },
+ "property:dart": {
+ "foreground": "#d19a66"
+ },
+ "annotation:dart": {
+ "foreground": "#d19a66"
+ },
+ "parameter.label:dart": {
+ "foreground": "#abb2bf"
+ },
+ "macro": {
+ "foreground": "#d19a66"
+ },
+ "tomlArrayKey": {
+ "foreground": "#e5c07b"
+ }
+ },
+ "tokenColors": [
+ {
+ "scope": "meta.embedded",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "unison punctuation",
+ "scope": "punctuation.definition.delayed.unison,punctuation.definition.list.begin.unison,punctuation.definition.list.end.unison,punctuation.definition.ability.begin.unison,punctuation.definition.ability.end.unison,punctuation.operator.assignment.as.unison,punctuation.separator.pipe.unison,punctuation.separator.delimiter.unison,punctuation.definition.hash.unison",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "haskell variable generic-type",
+ "scope": "variable.other.generic-type.haskell",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "haskell storage type",
+ "scope": "storage.type.haskell",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "support.variable.magic.python",
+ "scope": "support.variable.magic.python",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "punctuation.separator.parameters.python",
+ "scope": "punctuation.separator.period.python,punctuation.separator.element.python,punctuation.parenthesis.begin.python,punctuation.parenthesis.end.python",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "variable.parameter.function.language.special.self.python",
+ "scope": "variable.parameter.function.language.special.self.python",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "variable.parameter.function.language.special.cls.python",
+ "scope": "variable.parameter.function.language.special.cls.python",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "storage.modifier.lifetime.rust",
+ "scope": "storage.modifier.lifetime.rust",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "support.function.std.rust",
+ "scope": "support.function.std.rust",
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "entity.name.lifetime.rust",
+ "scope": "entity.name.lifetime.rust",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "variable.language.rust",
+ "scope": "variable.language.rust",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "support.constant.edge",
+ "scope": "support.constant.edge",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "regexp constant character-class",
+ "scope": "constant.other.character-class.regexp",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "keyword.operator",
+ "scope": ["keyword.operator.word"],
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "regexp operator.quantifier",
+ "scope": "keyword.operator.quantifier.regexp",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "Text",
+ "scope": "variable.parameter.function",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "Comment Markup Link",
+ "scope": "comment markup.link",
+ "settings": {
+ "foreground": "#5c6370"
+ }
+ },
+ {
+ "name": "markup diff",
+ "scope": "markup.changed.diff",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "diff",
+ "scope": "meta.diff.header.from-file,meta.diff.header.to-file,punctuation.definition.from-file.diff,punctuation.definition.to-file.diff",
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "inserted.diff",
+ "scope": "markup.inserted.diff",
+ "settings": {
+ "foreground": "#98c379"
+ }
+ },
+ {
+ "name": "deleted.diff",
+ "scope": "markup.deleted.diff",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "c++ function",
+ "scope": "meta.function.c,meta.function.cpp",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "c++ block",
+ "scope": "punctuation.section.block.begin.bracket.curly.cpp,punctuation.section.block.end.bracket.curly.cpp,punctuation.terminator.statement.c,punctuation.section.block.begin.bracket.curly.c,punctuation.section.block.end.bracket.curly.c,punctuation.section.parens.begin.bracket.round.c,punctuation.section.parens.end.bracket.round.c,punctuation.section.parameters.begin.bracket.round.c,punctuation.section.parameters.end.bracket.round.c",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "js/ts punctuation separator key-value",
+ "scope": "punctuation.separator.key-value",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "js/ts import keyword",
+ "scope": "keyword.operator.expression.import",
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "math js/ts",
+ "scope": "support.constant.math",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "math property js/ts",
+ "scope": "support.constant.property.math",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "js/ts variable.other.constant",
+ "scope": "variable.other.constant",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "java type",
+ "scope": ["storage.type.annotation.java", "storage.type.object.array.java"],
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "java source",
+ "scope": "source.java",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "java modifier.import",
+ "scope": "punctuation.section.block.begin.java,punctuation.section.block.end.java,punctuation.definition.method-parameters.begin.java,punctuation.definition.method-parameters.end.java,meta.method.identifier.java,punctuation.section.method.begin.java,punctuation.section.method.end.java,punctuation.terminator.java,punctuation.section.class.begin.java,punctuation.section.class.end.java,punctuation.section.inner-class.begin.java,punctuation.section.inner-class.end.java,meta.method-call.java,punctuation.section.class.begin.bracket.curly.java,punctuation.section.class.end.bracket.curly.java,punctuation.section.method.begin.bracket.curly.java,punctuation.section.method.end.bracket.curly.java,punctuation.separator.period.java,punctuation.bracket.angle.java,punctuation.definition.annotation.java,meta.method.body.java",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "java modifier.import",
+ "scope": "meta.method.java",
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "java modifier.import",
+ "scope": "storage.modifier.import.java,storage.type.java,storage.type.generic.java",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "java instanceof",
+ "scope": "keyword.operator.instanceof.java",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "java variable.name",
+ "scope": "meta.definition.variable.name.java",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "operator logical",
+ "scope": "keyword.operator.logical",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "operator bitwise",
+ "scope": "keyword.operator.bitwise",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "operator channel",
+ "scope": "keyword.operator.channel",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "support.constant.property-value.scss",
+ "scope": "support.constant.property-value.scss,support.constant.property-value.css",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "CSS/SCSS/LESS Operators",
+ "scope": "keyword.operator.css,keyword.operator.scss,keyword.operator.less",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "css color standard name",
+ "scope": "support.constant.color.w3c-standard-color-name.css,support.constant.color.w3c-standard-color-name.scss",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "css comma",
+ "scope": "punctuation.separator.list.comma.css",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "css attribute-name.id",
+ "scope": "support.constant.color.w3c-standard-color-name.css",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "css property-name",
+ "scope": "support.type.vendored.property-name.css",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "js/ts module",
+ "scope": "support.module.node,support.type.object.module,support.module.node",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "entity.name.type.module",
+ "scope": "entity.name.type.module",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "js variable readwrite",
+ "scope": "variable.other.readwrite,meta.object-literal.key,support.variable.property,support.variable.object.process,support.variable.object.node",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "js/ts json",
+ "scope": "support.constant.json",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "js/ts Keyword",
+ "scope": [
+ "keyword.operator.expression.instanceof",
+ "keyword.operator.new",
+ "keyword.operator.ternary",
+ "keyword.operator.optional",
+ "keyword.operator.expression.keyof"
+ ],
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "js/ts console",
+ "scope": "support.type.object.console",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "js/ts support.variable.property.process",
+ "scope": "support.variable.property.process",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "js console function",
+ "scope": "entity.name.function,support.function.console",
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "keyword.operator.misc.rust",
+ "scope": "keyword.operator.misc.rust",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "keyword.operator.sigil.rust",
+ "scope": "keyword.operator.sigil.rust",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "operator",
+ "scope": "keyword.operator.delete",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "js dom",
+ "scope": "support.type.object.dom",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "js dom variable",
+ "scope": "support.variable.dom,support.variable.property.dom",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "keyword.operator",
+ "scope": "keyword.operator.arithmetic,keyword.operator.comparison,keyword.operator.decrement,keyword.operator.increment,keyword.operator.relational",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "C operator assignment",
+ "scope": "keyword.operator.assignment.c,keyword.operator.comparison.c,keyword.operator.c,keyword.operator.increment.c,keyword.operator.decrement.c,keyword.operator.bitwise.shift.c,keyword.operator.assignment.cpp,keyword.operator.comparison.cpp,keyword.operator.cpp,keyword.operator.increment.cpp,keyword.operator.decrement.cpp,keyword.operator.bitwise.shift.cpp",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "Punctuation",
+ "scope": "punctuation.separator.delimiter",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "Other punctuation .c",
+ "scope": "punctuation.separator.c,punctuation.separator.cpp",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "C type posix-reserved",
+ "scope": "support.type.posix-reserved.c,support.type.posix-reserved.cpp",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "keyword.operator.sizeof.c",
+ "scope": "keyword.operator.sizeof.c,keyword.operator.sizeof.cpp",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "python parameter",
+ "scope": "variable.parameter.function.language.python",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "python type",
+ "scope": "support.type.python",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "python logical",
+ "scope": "keyword.operator.logical.python",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "pyCs",
+ "scope": "variable.parameter.function.python",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "python block",
+ "scope": "punctuation.definition.arguments.begin.python,punctuation.definition.arguments.end.python,punctuation.separator.arguments.python,punctuation.definition.list.begin.python,punctuation.definition.list.end.python",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "python function-call.generic",
+ "scope": "meta.function-call.generic.python",
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "python placeholder reset to normal string",
+ "scope": "constant.character.format.placeholder.other.python",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "Operators",
+ "scope": "keyword.operator",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "Compound Assignment Operators",
+ "scope": "keyword.operator.assignment.compound",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "Compound Assignment Operators js/ts",
+ "scope": "keyword.operator.assignment.compound.js,keyword.operator.assignment.compound.ts",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "Keywords",
+ "scope": "keyword",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "Namespaces",
+ "scope": "entity.name.namespace",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "Variables",
+ "scope": "variable",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "Variables",
+ "scope": "variable.c",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "Language variables",
+ "scope": "variable.language",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "Java Variables",
+ "scope": "token.variable.parameter.java",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "Java Imports",
+ "scope": "import.storage.java",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "Packages",
+ "scope": "token.package.keyword",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "Packages",
+ "scope": "token.package",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "Functions",
+ "scope": [
+ "entity.name.function",
+ "meta.require",
+ "support.function.any-method",
+ "variable.function"
+ ],
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "Classes",
+ "scope": "entity.name.type.namespace",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "Classes",
+ "scope": "support.class, entity.name.type.class",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "Class name",
+ "scope": "entity.name.class.identifier.namespace.type",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "Class name",
+ "scope": ["entity.name.class", "variable.other.class.js", "variable.other.class.ts"],
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "Class name php",
+ "scope": "variable.other.class.php",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "Type Name",
+ "scope": "entity.name.type",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "Keyword Control",
+ "scope": "keyword.control",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "Control Elements",
+ "scope": "control.elements, keyword.operator.less",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "Methods",
+ "scope": "keyword.other.special-method",
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "Storage",
+ "scope": "storage",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "Storage JS TS",
+ "scope": "token.storage",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "Source Js Keyword Operator Delete,source Js Keyword Operator In,source Js Keyword Operator Of,source Js Keyword Operator Instanceof,source Js Keyword Operator New,source Js Keyword Operator Typeof,source Js Keyword Operator Void",
+ "scope": "keyword.operator.expression.delete,keyword.operator.expression.in,keyword.operator.expression.of,keyword.operator.expression.instanceof,keyword.operator.new,keyword.operator.expression.typeof,keyword.operator.expression.void",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "Java Storage",
+ "scope": "token.storage.type.java",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "Support",
+ "scope": "support.function",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "Support type",
+ "scope": "support.type.property-name",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] toml support",
+ "scope": "support.type.property-name.toml, support.type.property-name.table.toml, support.type.property-name.array.toml",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "Support type",
+ "scope": "support.constant.property-value",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "Support type",
+ "scope": "support.constant.font-name",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "Meta tag",
+ "scope": "meta.tag",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "Strings",
+ "scope": "string",
+ "settings": {
+ "foreground": "#98c379"
+ }
+ },
+ {
+ "name": "Constant other symbol",
+ "scope": "constant.other.symbol",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "Integers",
+ "scope": "constant.numeric",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "Constants",
+ "scope": "constant",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "Constants",
+ "scope": "punctuation.definition.constant",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "Tags",
+ "scope": "entity.name.tag",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "Attributes",
+ "scope": "entity.other.attribute-name",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "Attribute IDs",
+ "scope": "entity.other.attribute-name.id",
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "Attribute class",
+ "scope": "entity.other.attribute-name.class.css",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "Selector",
+ "scope": "meta.selector",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "Headings",
+ "scope": "markup.heading",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "Headings",
+ "scope": "markup.heading punctuation.definition.heading, entity.name.section",
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "Units",
+ "scope": "keyword.other.unit",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "Bold",
+ "scope": "markup.bold,todo.bold",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "Bold",
+ "scope": "punctuation.definition.bold",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "markup Italic",
+ "scope": "markup.italic, punctuation.definition.italic,todo.emphasis",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "emphasis md",
+ "scope": "emphasis md",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Markdown headings",
+ "scope": "entity.name.section.markdown",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Markdown heading Punctuation Definition",
+ "scope": "punctuation.definition.heading.markdown",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "punctuation.definition.list.begin.markdown",
+ "scope": "punctuation.definition.list.begin.markdown",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Markdown heading setext",
+ "scope": "markup.heading.setext",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Markdown Punctuation Definition Bold",
+ "scope": "punctuation.definition.bold.markdown",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Markdown Inline Raw",
+ "scope": "markup.inline.raw.markdown",
+ "settings": {
+ "foreground": "#98c379"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Markdown Inline Raw",
+ "scope": "markup.inline.raw.string.markdown",
+ "settings": {
+ "foreground": "#98c379"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Markdown Inline Raw punctuation",
+ "scope": "punctuation.definition.raw.markdown",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Markdown List Punctuation Definition",
+ "scope": "punctuation.definition.list.markdown",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Markdown Punctuation Definition String",
+ "scope": [
+ "punctuation.definition.string.begin.markdown",
+ "punctuation.definition.string.end.markdown",
+ "punctuation.definition.metadata.markdown"
+ ],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "beginning.punctuation.definition.list.markdown",
+ "scope": ["beginning.punctuation.definition.list.markdown"],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Markdown Punctuation Definition Link",
+ "scope": "punctuation.definition.metadata.markdown",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Markdown Underline Link/Image",
+ "scope": "markup.underline.link.markdown,markup.underline.link.image.markdown",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Markdown Link Title/Description",
+ "scope": "string.other.link.title.markdown,string.other.link.description.markdown",
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Asciidoc Inline Raw",
+ "scope": "markup.raw.monospace.asciidoc",
+ "settings": {
+ "foreground": "#98c379"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Asciidoc Inline Raw Punctuation Definition",
+ "scope": "punctuation.definition.asciidoc",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Asciidoc List Punctuation Definition",
+ "scope": "markup.list.asciidoc",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Asciidoc underline link",
+ "scope": "markup.link.asciidoc,markup.other.url.asciidoc",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Asciidoc link name",
+ "scope": "string.unquoted.asciidoc,markup.other.url.asciidoc",
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "Regular Expressions",
+ "scope": "string.regexp",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "Embedded",
+ "scope": "punctuation.section.embedded, variable.interpolation",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "Embedded",
+ "scope": "punctuation.section.embedded.begin,punctuation.section.embedded.end",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "illegal",
+ "scope": "invalid.illegal",
+ "settings": {
+ "foreground": "#ffffff"
+ }
+ },
+ {
+ "name": "illegal",
+ "scope": "invalid.illegal.bad-ampersand.html",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "scope": "invalid.illegal.unrecognized-tag.html",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "Broken",
+ "scope": "invalid.broken",
+ "settings": {
+ "foreground": "#ffffff"
+ }
+ },
+ {
+ "name": "Deprecated",
+ "scope": "invalid.deprecated",
+ "settings": {
+ "foreground": "#ffffff"
+ }
+ },
+ {
+ "name": "html Deprecated",
+ "scope": "invalid.deprecated.entity.other.attribute-name.html",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "Unimplemented",
+ "scope": "invalid.unimplemented",
+ "settings": {
+ "foreground": "#ffffff"
+ }
+ },
+ {
+ "name": "Source Json Meta Structure Dictionary Json > String Quoted Json",
+ "scope": "source.json meta.structure.dictionary.json > string.quoted.json",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "Source Json Meta Structure Dictionary Json > String Quoted Json > Punctuation String",
+ "scope": "source.json meta.structure.dictionary.json > string.quoted.json > punctuation.string",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "Source Json Meta Structure Dictionary Json > Value Json > String Quoted Json,source Json Meta Structure Array Json > Value Json > String Quoted Json,source Json Meta Structure Dictionary Json > Value Json > String Quoted Json > Punctuation,source Json Meta Structure Array Json > Value Json > String Quoted Json > Punctuation",
+ "scope": "source.json meta.structure.dictionary.json > value.json > string.quoted.json,source.json meta.structure.array.json > value.json > string.quoted.json,source.json meta.structure.dictionary.json > value.json > string.quoted.json > punctuation,source.json meta.structure.array.json > value.json > string.quoted.json > punctuation",
+ "settings": {
+ "foreground": "#98c379"
+ }
+ },
+ {
+ "name": "Source Json Meta Structure Dictionary Json > Constant Language Json,source Json Meta Structure Array Json > Constant Language Json",
+ "scope": "source.json meta.structure.dictionary.json > constant.language.json,source.json meta.structure.array.json > constant.language.json",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] JSON Property Name",
+ "scope": "support.type.property-name.json",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] JSON Punctuation for Property Name",
+ "scope": "support.type.property-name.json punctuation",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "laravel blade tag",
+ "scope": "text.html.laravel-blade source.php.embedded.line.html entity.name.tag.laravel-blade",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "laravel blade @",
+ "scope": "text.html.laravel-blade source.php.embedded.line.html support.constant.laravel-blade",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "use statement for other classes",
+ "scope": "support.other.namespace.use.php,support.other.namespace.use-as.php,entity.other.alias.php,meta.interface.php",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "error suppression",
+ "scope": "keyword.operator.error-control.php",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "php instanceof",
+ "scope": "keyword.operator.type.php",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "style double quoted array index normal begin",
+ "scope": "punctuation.section.array.begin.php",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "style double quoted array index normal end",
+ "scope": "punctuation.section.array.end.php",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "php illegal.non-null-typehinted",
+ "scope": "invalid.illegal.non-null-typehinted.php",
+ "settings": {
+ "foreground": "#f44747"
+ }
+ },
+ {
+ "name": "php types",
+ "scope": "storage.type.php,meta.other.type.phpdoc.php,keyword.other.type.php,keyword.other.array.phpdoc.php",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "php call-function",
+ "scope": "meta.function-call.php,meta.function-call.object.php,meta.function-call.static.php",
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "php function-resets",
+ "scope": "punctuation.definition.parameters.begin.bracket.round.php,punctuation.definition.parameters.end.bracket.round.php,punctuation.separator.delimiter.php,punctuation.section.scope.begin.php,punctuation.section.scope.end.php,punctuation.terminator.expression.php,punctuation.definition.arguments.begin.bracket.round.php,punctuation.definition.arguments.end.bracket.round.php,punctuation.definition.storage-type.begin.bracket.round.php,punctuation.definition.storage-type.end.bracket.round.php,punctuation.definition.array.begin.bracket.round.php,punctuation.definition.array.end.bracket.round.php,punctuation.definition.begin.bracket.round.php,punctuation.definition.end.bracket.round.php,punctuation.definition.begin.bracket.curly.php,punctuation.definition.end.bracket.curly.php,punctuation.definition.section.switch-block.end.bracket.curly.php,punctuation.definition.section.switch-block.start.bracket.curly.php,punctuation.definition.section.switch-block.begin.bracket.curly.php,punctuation.definition.section.switch-block.end.bracket.curly.php",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "support php constants",
+ "scope": "support.constant.core.rust",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "support php constants",
+ "scope": "support.constant.ext.php,support.constant.std.php,support.constant.core.php,support.constant.parser-token.php",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "php goto",
+ "scope": "entity.name.goto-label.php,support.other.php",
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "php logical/bitwise operator",
+ "scope": "keyword.operator.logical.php,keyword.operator.bitwise.php,keyword.operator.arithmetic.php",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "php regexp operator",
+ "scope": "keyword.operator.regexp.php",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "php comparison",
+ "scope": "keyword.operator.comparison.php",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "php heredoc/nowdoc",
+ "scope": "keyword.operator.heredoc.php,keyword.operator.nowdoc.php",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "python function decorator @",
+ "scope": "meta.function.decorator.python",
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "python function support",
+ "scope": "support.token.decorator.python,meta.function.decorator.identifier.python",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "parameter function js/ts",
+ "scope": "function.parameter",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "brace function",
+ "scope": "function.brace",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "parameter function ruby cs",
+ "scope": "function.parameter.ruby, function.parameter.cs",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "constant.language.symbol.ruby",
+ "scope": "constant.language.symbol.ruby",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "constant.language.symbol.hashkey.ruby",
+ "scope": "constant.language.symbol.hashkey.ruby",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "rgb-value",
+ "scope": "rgb-value",
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "rgb value",
+ "scope": "inline-color-decoration rgb-value",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "rgb value less",
+ "scope": "less rgb-value",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "sass selector",
+ "scope": "selector.sass",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "ts primitive/builtin types",
+ "scope": "support.type.primitive.ts,support.type.builtin.ts,support.type.primitive.tsx,support.type.builtin.tsx",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "block scope",
+ "scope": "block.scope.end,block.scope.begin",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "cs storage type",
+ "scope": "storage.type.cs",
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "cs local variable",
+ "scope": "entity.name.variable.local.cs",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "scope": "token.info-token",
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "scope": "token.warn-token",
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "scope": "token.error-token",
+ "settings": {
+ "foreground": "#f44747"
+ }
+ },
+ {
+ "scope": "token.debug-token",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "String interpolation",
+ "scope": [
+ "punctuation.definition.template-expression.begin",
+ "punctuation.definition.template-expression.end",
+ "punctuation.section.embedded"
+ ],
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "Reset JavaScript string interpolation expression",
+ "scope": ["meta.template.expression"],
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "Import module JS",
+ "scope": ["keyword.operator.module"],
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "js Flowtype",
+ "scope": ["support.type.type.flowtype"],
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "js Flow",
+ "scope": ["support.type.primitive"],
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "js class prop",
+ "scope": ["meta.property.object"],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "js func parameter",
+ "scope": ["variable.parameter.function.js"],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "js template literals begin",
+ "scope": ["keyword.other.template.begin"],
+ "settings": {
+ "foreground": "#98c379"
+ }
+ },
+ {
+ "name": "js template literals end",
+ "scope": ["keyword.other.template.end"],
+ "settings": {
+ "foreground": "#98c379"
+ }
+ },
+ {
+ "name": "js template literals variable braces begin",
+ "scope": ["keyword.other.substitution.begin"],
+ "settings": {
+ "foreground": "#98c379"
+ }
+ },
+ {
+ "name": "js template literals variable braces end",
+ "scope": ["keyword.other.substitution.end"],
+ "settings": {
+ "foreground": "#98c379"
+ }
+ },
+ {
+ "name": "js operator.assignment",
+ "scope": ["keyword.operator.assignment"],
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "go operator",
+ "scope": ["keyword.operator.assignment.go"],
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "go operator",
+ "scope": ["keyword.operator.arithmetic.go", "keyword.operator.address.go"],
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "Go package name",
+ "scope": ["entity.name.package.go"],
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "elm prelude",
+ "scope": ["support.type.prelude.elm"],
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "elm constant",
+ "scope": ["support.constant.elm"],
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "template literal",
+ "scope": ["punctuation.quasi.element"],
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "html/pug (jade) escaped characters and entities",
+ "scope": ["constant.character.entity"],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "styling css pseudo-elements/classes to be able to differentiate from classes which are the same colour",
+ "scope": [
+ "entity.other.attribute-name.pseudo-element",
+ "entity.other.attribute-name.pseudo-class"
+ ],
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "Clojure globals",
+ "scope": ["entity.global.clojure"],
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "Clojure symbols",
+ "scope": ["meta.symbol.clojure"],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "Clojure constants",
+ "scope": ["constant.keyword.clojure"],
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "CoffeeScript Function Argument",
+ "scope": ["meta.arguments.coffee", "variable.parameter.function.coffee"],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "Ini Default Text",
+ "scope": ["source.ini"],
+ "settings": {
+ "foreground": "#98c379"
+ }
+ },
+ {
+ "name": "Makefile prerequisities",
+ "scope": ["meta.scope.prerequisites.makefile"],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "Makefile text colour",
+ "scope": ["source.makefile"],
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "Groovy import names",
+ "scope": ["storage.modifier.import.groovy"],
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "Groovy Methods",
+ "scope": ["meta.method.groovy"],
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "Groovy Variables",
+ "scope": ["meta.definition.variable.name.groovy"],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "Groovy Inheritance",
+ "scope": ["meta.definition.class.inherited.classes.groovy"],
+ "settings": {
+ "foreground": "#98c379"
+ }
+ },
+ {
+ "name": "HLSL Semantic",
+ "scope": ["support.variable.semantic.hlsl"],
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "HLSL Types",
+ "scope": [
+ "support.type.texture.hlsl",
+ "support.type.sampler.hlsl",
+ "support.type.object.hlsl",
+ "support.type.object.rw.hlsl",
+ "support.type.fx.hlsl",
+ "support.type.object.hlsl"
+ ],
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "SQL Variables",
+ "scope": ["text.variable", "text.bracketed"],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "types",
+ "scope": ["support.type.swift", "support.type.vb.asp"],
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "heading 1, keyword",
+ "scope": ["entity.name.function.xi"],
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "heading 2, callable",
+ "scope": ["entity.name.class.xi"],
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "heading 3, property",
+ "scope": ["constant.character.character-class.regexp.xi"],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "heading 4, type, class, interface",
+ "scope": ["constant.regexp.xi"],
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "name": "heading 5, enums, preprocessor, constant, decorator",
+ "scope": ["keyword.control.xi"],
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "name": "heading 6, number",
+ "scope": ["invalid.xi"],
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "string",
+ "scope": ["beginning.punctuation.definition.quote.markdown.xi"],
+ "settings": {
+ "foreground": "#98c379"
+ }
+ },
+ {
+ "name": "comments",
+ "scope": ["beginning.punctuation.definition.list.markdown.xi"],
+ "settings": {
+ "foreground": "#7f848e"
+ }
+ },
+ {
+ "name": "link",
+ "scope": ["constant.character.xi"],
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "accent",
+ "scope": ["accent.xi"],
+ "settings": {
+ "foreground": "#61afef"
+ }
+ },
+ {
+ "name": "wikiword",
+ "scope": ["wikiword.xi"],
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "name": "language operators like '+', '-' etc",
+ "scope": ["constant.other.color.rgb-value.xi"],
+ "settings": {
+ "foreground": "#ffffff"
+ }
+ },
+ {
+ "name": "elements to dim",
+ "scope": ["punctuation.definition.tag.xi"],
+ "settings": {
+ "foreground": "#5c6370"
+ }
+ },
+ {
+ "name": "C++/C#",
+ "scope": [
+ "entity.name.label.cs",
+ "entity.name.scope-resolution.function.call",
+ "entity.name.scope-resolution.function.definition"
+ ],
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "Markdown underscore-style headers",
+ "scope": [
+ "entity.name.label.cs",
+ "markup.heading.setext.1.markdown",
+ "markup.heading.setext.2.markdown"
+ ],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "meta.brace.square",
+ "scope": [" meta.brace.square"],
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "Comments",
+ "scope": "comment, punctuation.definition.comment",
+ "settings": {
+ "foreground": "#7f848e",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "[VSCODE-CUSTOM] Markdown Quote",
+ "scope": "markup.quote.markdown",
+ "settings": {
+ "foreground": "#5c6370"
+ }
+ },
+ {
+ "name": "punctuation.definition.block.sequence.item.yaml",
+ "scope": "punctuation.definition.block.sequence.item.yaml",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "scope": ["constant.language.symbol.elixir", "constant.language.symbol.double-quoted.elixir"],
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "scope": ["entity.name.variable.parameter.cs"],
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "scope": ["entity.name.variable.field.cs"],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "Deleted",
+ "scope": "markup.deleted",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "Inserted",
+ "scope": "markup.inserted",
+ "settings": {
+ "foreground": "#98c379"
+ }
+ },
+ {
+ "name": "Underline",
+ "scope": "markup.underline",
+ "settings": {
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "name": "punctuation.section.embedded.begin.php",
+ "scope": ["punctuation.section.embedded.begin.php", "punctuation.section.embedded.end.php"],
+ "settings": {
+ "foreground": "#BE5046"
+ }
+ },
+ {
+ "name": "support.other.namespace.php",
+ "scope": ["support.other.namespace.php"],
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "Latex variable parameter",
+ "scope": ["variable.parameter.function.latex"],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "variable.other.object",
+ "scope": ["variable.other.object"],
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "variable.other.constant.property",
+ "scope": ["variable.other.constant.property"],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "entity.other.inherited-class",
+ "scope": ["entity.other.inherited-class"],
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "name": "c variable readwrite",
+ "scope": "variable.other.readwrite.c",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "php scope",
+ "scope": "entity.name.variable.parameter.php,punctuation.separator.colon.php,constant.other.php",
+ "settings": {
+ "foreground": "#abb2bf"
+ }
+ },
+ {
+ "name": "Assembly",
+ "scope": ["constant.numeric.decimal.asm.x86_64"],
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "scope": ["support.other.parenthesis.regexp"],
+ "settings": {
+ "foreground": "#d19a66"
+ }
+ },
+ {
+ "scope": ["constant.character.escape"],
+ "settings": {
+ "foreground": "#56b6c2"
+ }
+ },
+ {
+ "scope": ["string.regexp"],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "scope": ["log.info"],
+ "settings": {
+ "foreground": "#98c379"
+ }
+ },
+ {
+ "scope": ["log.warning"],
+ "settings": {
+ "foreground": "#e5c07b"
+ }
+ },
+ {
+ "scope": ["log.error"],
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "scope": "keyword.operator.expression.is",
+ "settings": {
+ "foreground": "#c678dd"
+ }
+ },
+ {
+ "scope": "entity.name.label",
+ "settings": {
+ "foreground": "#e06c75"
+ }
+ },
+ {
+ "name": "js/ts italic",
+ "scope": "entity.other.attribute-name.js,entity.other.attribute-name.ts,entity.other.attribute-name.jsx,entity.other.attribute-name.tsx,variable.parameter,variable.language.super",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "comment",
+ "scope": "comment.line.double-slash,comment.block.documentation",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "name": "markup.italic.markdown",
+ "scope": "markup.italic.markdown",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ }
+ ],
+ "colors": {
+ "activityBar.background": "#282c34",
+ "activityBar.foreground": "#d7dae0",
+ "activityBarBadge.background": "#4d78cc",
+ "activityBarBadge.foreground": "#f8fafd",
+ "badge.background": "#282c34",
+ "button.background": "#404754",
+ "button.secondaryBackground": "#30333d",
+ "button.secondaryForeground": "#c0bdbd",
+ "checkbox.border": "#404754",
+ "debugToolBar.background": "#21252b",
+ "descriptionForeground": "#abb2bf",
+ "diffEditor.insertedTextBackground": "#00809b33",
+ "dropdown.background": "#21252b",
+ "dropdown.border": "#21252b",
+ "editor.background": "#282c34",
+ "editor.findMatchBackground": "#42557b",
+ "editor.findMatchBorder": "#457dff",
+ "editor.findMatchHighlightBackground": "#6199ff2f",
+ "editor.foreground": "#abb2bf",
+ "editorBracketHighlight.foreground1": "#d19a66",
+ "editorBracketHighlight.foreground2": "#c678dd",
+ "editorBracketHighlight.foreground3": "#56b6c2",
+ "editorHoverWidget.highlightForeground": "#61afef",
+ "editorInlayHint.foreground": "#abb2bf",
+ "editorInlayHint.background": "#2c313c",
+ "editor.lineHighlightBackground": "#2c313c",
+ "editorLineNumber.activeForeground": "#abb2bf",
+ "editorGutter.addedBackground": "#109868",
+ "editorGutter.deletedBackground": "#9A353D",
+ "editorGutter.modifiedBackground": "#948B60",
+ "editorOverviewRuler.addedBackground": "#109868",
+ "editorOverviewRuler.deletedBackground": "#9A353D",
+ "editorOverviewRuler.modifiedBackground": "#948B60",
+ "editor.selectionBackground": "#67769660",
+ "editor.selectionHighlightBackground": "#ffffff10",
+ "editor.selectionHighlightBorder": "#dddddd",
+ "editor.wordHighlightBackground": "#d2e0ff2f",
+ "editor.wordHighlightBorder": "#7f848e",
+ "editor.wordHighlightStrongBackground": "#abb2bf26",
+ "editor.wordHighlightStrongBorder": "#7f848e",
+ "editorBracketMatch.background": "#515a6b",
+ "editorBracketMatch.border": "#515a6b",
+ "editorCursor.background": "#ffffffc9",
+ "editorCursor.foreground": "#528bff",
+ "editorError.foreground": "#c24038",
+ "editorGroup.background": "#181a1f",
+ "editorGroup.border": "#181a1f",
+ "editorGroupHeader.tabsBackground": "#21252b",
+ "editorHoverWidget.background": "#21252b",
+ "editorHoverWidget.border": "#181a1f",
+ "editorIndentGuide.activeBackground": "#c8c8c859",
+ "editorIndentGuide.background": "#3b4048",
+ "editorLineNumber.foreground": "#495162",
+ "editorMarkerNavigation.background": "#21252b",
+ "editorRuler.foreground": "#abb2bf26",
+ "editorSuggestWidget.background": "#21252b",
+ "editorSuggestWidget.border": "#181a1f",
+ "editorSuggestWidget.selectedBackground": "#2c313a",
+ "editorWarning.foreground": "#d19a66",
+ "editorWhitespace.foreground": "#ffffff1d",
+ "editorWidget.background": "#21252b",
+ "focusBorder": "#3e4452",
+ "gitDecoration.ignoredResourceForeground": "#636b78",
+ "input.background": "#1d1f23",
+ "input.foreground": "#abb2bf",
+ "list.activeSelectionBackground": "#2c313a",
+ "list.activeSelectionForeground": "#d7dae0",
+ "list.focusBackground": "#323842",
+ "list.focusForeground": "#f0f0f0",
+ "list.highlightForeground": "#ecebeb",
+ "list.hoverBackground": "#2c313a",
+ "list.hoverForeground": "#abb2bf",
+ "list.inactiveSelectionBackground": "#323842",
+ "list.inactiveSelectionForeground": "#d7dae0",
+ "list.warningForeground": "#d19a66",
+ "menu.foreground": "#abb2bf",
+ "menu.separatorBackground": "#343a45",
+ "minimapGutter.addedBackground": "#109868",
+ "minimapGutter.deletedBackground": "#9A353D",
+ "minimapGutter.modifiedBackground": "#948B60",
+ "panel.border": "#3e4452",
+ "panelSectionHeader.background": "#21252b",
+ "peekViewEditor.background": "#1b1d23",
+ "peekViewEditor.matchHighlightBackground": "#29244b",
+ "peekViewResult.background": "#22262b",
+ "scrollbar.shadow": "#23252c",
+ "scrollbarSlider.activeBackground": "#747d9180",
+ "scrollbarSlider.background": "#4e566660",
+ "scrollbarSlider.hoverBackground": "#5a637580",
+ "settings.focusedRowBackground": "#282c34",
+ "settings.headerForeground": "#fff",
+ "sideBar.background": "#21252b",
+ "sideBar.foreground": "#abb2bf",
+ "sideBarSectionHeader.background": "#282c34",
+ "sideBarSectionHeader.foreground": "#abb2bf",
+ "statusBar.background": "#21252b",
+ "statusBar.debuggingBackground": "#cc6633",
+ "statusBar.debuggingBorder": "#ff000000",
+ "statusBar.debuggingForeground": "#ffffff",
+ "statusBar.foreground": "#9da5b4",
+ "statusBar.noFolderBackground": "#21252b",
+ "statusBarItem.remoteBackground": "#4d78cc",
+ "statusBarItem.remoteForeground": "#f8fafd",
+ "tab.activeBackground": "#282c34",
+ "tab.activeBorder": "#b4b4b4",
+ "tab.activeForeground": "#dcdcdc",
+ "tab.border": "#181a1f",
+ "tab.hoverBackground": "#323842",
+ "tab.inactiveBackground": "#21252b",
+ "tab.unfocusedHoverBackground": "#323842",
+ "terminal.ansiBlack": "#3f4451",
+ "terminal.ansiBlue": "#4aa5f0",
+ "terminal.ansiBrightBlack": "#4f5666",
+ "terminal.ansiBrightBlue": "#4dc4ff",
+ "terminal.ansiBrightCyan": "#4cd1e0",
+ "terminal.ansiBrightGreen": "#a5e075",
+ "terminal.ansiBrightMagenta": "#de73ff",
+ "terminal.ansiBrightRed": "#ff616e",
+ "terminal.ansiBrightWhite": "#e6e6e6",
+ "terminal.ansiBrightYellow": "#f0a45d",
+ "terminal.ansiCyan": "#42b3c2",
+ "terminal.ansiGreen": "#8cc265",
+ "terminal.ansiMagenta": "#c162de",
+ "terminal.ansiRed": "#e05561",
+ "terminal.ansiWhite": "#d7dae0",
+ "terminal.ansiYellow": "#d18f52",
+ "terminal.background": "#282c34",
+ "terminal.border": "#3e4452",
+ "terminal.foreground": "#abb2bf",
+ "terminal.selectionBackground": "#abb2bf30",
+ "textBlockQuote.background": "#2e3440",
+ "textBlockQuote.border": "#4b5362",
+ "textLink.foreground": "#61afef",
+ "textPreformat.foreground": "#d19a66",
+ "titleBar.activeBackground": "#282c34",
+ "titleBar.activeForeground": "#9da5b4",
+ "titleBar.inactiveBackground": "#21252b",
+ "titleBar.inactiveForeground": "#6b717d",
+ "tree.indentGuidesStroke": "#ffffff1d",
+ "walkThrough.embeddedEditorBackground": "#2e3440",
+ "welcomePage.buttonHoverBackground": "#404754"
+ }
+}
diff --git a/node_modules/shiki/themes/poimandres.json b/node_modules/shiki/themes/poimandres.json
new file mode 100644
index 0000000..92fac99
--- /dev/null
+++ b/node_modules/shiki/themes/poimandres.json
@@ -0,0 +1,1218 @@
+{
+ "name": "poimandres",
+ "type": "dark",
+ "colors": {
+ "activityBar.background": "#1b1e28",
+ "activityBar.foreground": "#a6accd",
+ "activityBarBadge.background": "#303340",
+ "activityBarBadge.foreground": "#e4f0fb",
+ "badge.background": "#303340",
+ "badge.foreground": "#e4f0fb",
+ "button.background": "#303340",
+ "diffEditor.insertedTextBackground": "#50647715",
+ "diffEditor.removedTextBackground": "#d0679d20",
+ "dropdown.background": "#1b1e28",
+ "dropdown.border": "#ffffff10",
+ "editor.background": "#1b1e28",
+ "editor.findMatchBackground": "#ADD7FF40",
+ "editor.findMatchBorder": "#ADD7FF",
+ "editor.findMatchHighlightBackground": "#ADD7FF40",
+ "editor.foreground": "#a6accd",
+ "editor.lineHighlightBackground": "#717cb425",
+ "editor.lineHighlightBorder": "#00000000",
+ "editor.selectionBackground": "#717cb425",
+ "editor.selectionHighlightBackground": "#00000000",
+ "editor.selectionHighlightBorder": "#ADD7FF80",
+ "editor.wordHighlightBackground": "#ADD7FF20",
+ "editor.wordHighlightStrongBackground": "#ADD7FF40",
+ "editorBracketMatch.border": "#e4f0fb40",
+ "editorCursor.foreground": "#a6accd",
+ "editorGroup.border": "#00000030",
+ "editorGroupHeader.tabsBackground": "#1b1e28",
+ "editorHoverWidget.background": "#1b1e28",
+ "editorHoverWidget.border": "#ffffff10",
+ "editorIndentGuide.background": "#303340",
+ "editorLineNumber.foreground": "#767c9d50",
+ "editorLink.activeForeground": "#ADD7FF",
+ "editorSuggestWidget.background": "#1b1e28",
+ "editorSuggestWidget.border": "#ffffff10",
+ "editorSuggestWidget.foreground": "#a6accd",
+ "editorSuggestWidget.highlightForeground": "#5DE4c7",
+ "editorSuggestWidget.selectedBackground": "#00000050",
+ "editorWidget.background": "#1b1e28",
+ "editor.findRangeHighlightBackground": "#ADD7FF40",
+ "editor.focusedStackFrameHighlightBackground": "#7abd7a4d",
+ "editor.foldBackground": "#717cb40b",
+ "editor.hoverHighlightBackground": "#264f7840",
+ "editor.inactiveSelectionBackground": "#717cb425",
+ "editor.linkedEditingBackground": "#d0679d4d",
+ "editor.rangeHighlightBackground": "#ffffff0b",
+ "editor.snippetFinalTabstopHighlightBorder": "#525252",
+ "editor.snippetTabstopHighlightBackground": "#7c7c7c4d",
+ "editor.stackFrameHighlightBackground": "#ffff0033",
+ "editor.symbolHighlightBackground": "#89ddff60",
+ "editorBracketMatch.background": "#00000000",
+ "editorCodeLens.foreground": "#a6accd",
+ "editorError.foreground": "#d0679d",
+ "editorGroup.dropBackground": "#7390AA80",
+ "editorGroupHeader.noTabsBackground": "#1b1e28",
+ "editorGutter.background": "#1b1e28",
+ "editorGutter.commentRangeForeground": "#a6accd",
+ "editorGutter.foldingControlForeground": "#a6accd",
+ "editorGutter.addedBackground": "#5fb3a140",
+ "editorGutter.deletedBackground": "#d0679d40",
+ "editorGutter.modifiedBackground": "#ADD7FF20",
+ "editorHint.foreground": "#7390AAb3",
+ "editorHoverWidget.foreground": "#a6accd",
+ "editorHoverWidget.statusBarBackground": "#202430",
+ "editorIndentGuide.activeBackground": "#e3e4e229",
+ "editorInfo.foreground": "#ADD7FF",
+ "editorInlineHint.background": "#a6accd",
+ "editorInlineHint.foreground": "#1b1e28",
+ "editorLightBulb.foreground": "#fffac2",
+ "editorLightBulbAutoFix.foreground": "#ADD7FF",
+ "editorLineNumber.activeForeground": "#a6accd",
+ "editorMarkerNavigation.background": "#2d2d30",
+ "editorMarkerNavigationError.background": "#d0679d",
+ "editorMarkerNavigationInfo.background": "#ADD7FF",
+ "editorMarkerNavigationWarning.background": "#fffac2",
+ "editorOverviewRuler.addedForeground": "#5fb3a199",
+ "editorOverviewRuler.border": "#00000000",
+ "editorOverviewRuler.bracketMatchForeground": "#a0a0a0",
+ "editorOverviewRuler.commonContentForeground": "#a6accd66",
+ "editorOverviewRuler.currentContentForeground": "#5fb3a180",
+ "editorOverviewRuler.deletedForeground": "#d0679d99",
+ "editorOverviewRuler.errorForeground": "#d0679db3",
+ "editorOverviewRuler.findMatchForeground": "#e4f0fb20",
+ "editorOverviewRuler.incomingContentForeground": "#89ddff80",
+ "editorOverviewRuler.infoForeground": "#ADD7FF",
+ "editorOverviewRuler.modifiedForeground": "#89ddff99",
+ "editorOverviewRuler.rangeHighlightForeground": "#89ddff99",
+ "editorOverviewRuler.selectionHighlightForeground": "#a0a0a0cc",
+ "editorOverviewRuler.warningForeground": "#fffac2",
+ "editorOverviewRuler.wordHighlightForeground": "#a0a0a0cc",
+ "editorOverviewRuler.wordHighlightStrongForeground": "#89ddffcc",
+ "editorPane.background": "#1b1e28",
+ "editorRuler.foreground": "#e4f0fb10",
+ "editorUnnecessaryCode.opacity": "#000000aa",
+ "editorWarning.foreground": "#fffac2",
+ "editorWhitespace.foreground": "#303340",
+ "editorWidget.border": "#a6accd",
+ "editorWidget.foreground": "#a6accd",
+ "extensionButton.prominentBackground": "#30334090",
+ "extensionButton.prominentHoverBackground": "#303340",
+ "focusBorder": "#00000000",
+ "input.background": "#ffffff05",
+ "input.border": "#ffffff10",
+ "input.foreground": "#e4f0fb",
+ "input.placeholderForeground": "#a6accd60",
+ "inputValidation.errorBorder": "#d0679d",
+ "inputValidation.errorForeground": "#d0679d",
+ "inputValidation.infoBorder": "#89ddff",
+ "inputValidation.warningBorder": "#fffac2",
+ "notifications.background": "#1b1e28",
+ "notifications.foreground": "#e4f0fb",
+ "panel.border": "#00000030",
+ "panelTitle.activeForeground": "#a6accd",
+ "peekView.border": "#00000030",
+ "peekViewEditor.background": "#a6accd05",
+ "peekViewEditorGutter.background": "#a6accd05",
+ "peekViewResult.background": "#a6accd05",
+ "peekViewTitle.background": "#a6accd05",
+ "peekViewTitleDescription.foreground": "#a6accd60",
+ "scrollbar.shadow": "#00000000",
+ "scrollbarSlider.activeBackground": "#a6accd25",
+ "scrollbarSlider.background": "#00000080",
+ "scrollbarSlider.hoverBackground": "#a6accd25",
+ "selection.background": "#a6accd",
+ "sideBar.background": "#1b1e28",
+ "sideBar.foreground": "#767c9d",
+ "sideBarSectionHeader.background": "#1b1e28",
+ "sideBarTitle.foreground": "#a6accd",
+ "statusBar.background": "#1b1e28",
+ "statusBar.foreground": "#a6accd",
+ "statusBar.noFolderBackground": "#1b1e28",
+ "tab.activeBackground": "#30334080",
+ "tab.activeForeground": "#e4f0fb",
+ "tab.border": "#00000000",
+ "tab.inactiveBackground": "#1b1e28",
+ "tab.inactiveForeground": "#767c9d",
+ "tab.unfocusedActiveForeground": "#a6accd",
+ "tab.activeModifiedBorder": "#ADD7FF",
+ "tab.inactiveModifiedBorder": "#ADD7FF80",
+ "tab.lastPinnedBorder": "#00000000",
+ "tab.unfocusedActiveBackground": "#1b1e28",
+ "tab.unfocusedActiveModifiedBorder": "#ADD7FF40",
+ "tab.unfocusedInactiveBackground": "#1b1e28",
+ "tab.unfocusedInactiveForeground": "#a6accd80",
+ "tab.unfocusedInactiveModifiedBorder": "#ADD7FF40",
+ "terminal.ansiBlack": "#1b1e28",
+ "terminal.ansiBlue": "#89ddff",
+ "terminal.ansiBrightBlack": "#a6accd",
+ "terminal.ansiBrightBlue": "#ADD7FF",
+ "terminal.ansiBrightCyan": "#ADD7FF",
+ "terminal.ansiBrightGreen": "#5DE4c7",
+ "terminal.ansiBrightMagenta": "#f087bd",
+ "terminal.ansiBrightRed": "#d0679d",
+ "terminal.ansiBrightWhite": "#ffffff",
+ "terminal.ansiBrightYellow": "#fffac2",
+ "terminal.ansiCyan": "#89ddff",
+ "terminal.ansiGreen": "#5DE4c7",
+ "terminal.ansiMagenta": "#f087bd",
+ "terminal.ansiRed": "#d0679d",
+ "terminal.ansiWhite": "#ffffff",
+ "terminal.ansiYellow": "#fffac2",
+ "textLink.activeForeground": "#ADD7FF",
+ "textLink.foreground": "#ADD7FF",
+ "titleBar.activeBackground": "#1b1e28",
+ "titleBar.activeForeground": "#a6accd",
+ "titleBar.inactiveBackground": "#1b1e28",
+ "titleBar.inactiveForeground": "#767c9d",
+ "tree.indentGuidesStroke": "#303340",
+ "widget.shadow": "#00000030",
+ "activityBar.activeBorder": "#a6accd",
+ "activityBar.dropBorder": "#a6accd",
+ "activityBar.inactiveForeground": "#a6accd66",
+ "breadcrumb.activeSelectionForeground": "#e4f0fb",
+ "breadcrumb.background": "#00000000",
+ "breadcrumb.focusForeground": "#e4f0fb",
+ "breadcrumb.foreground": "#767c9dcc",
+ "breadcrumbPicker.background": "#1b1e28",
+ "button.foreground": "#ffffff",
+ "button.hoverBackground": "#50647750",
+ "button.secondaryBackground": "#a6accd",
+ "button.secondaryForeground": "#ffffff",
+ "button.secondaryHoverBackground": "#a6accd",
+ "charts.blue": "#ADD7FF",
+ "charts.foreground": "#a6accd",
+ "charts.green": "#5DE4c7",
+ "charts.lines": "#a6accd80",
+ "charts.orange": "#89ddff",
+ "charts.purple": "#f087bd",
+ "charts.red": "#d0679d",
+ "charts.yellow": "#fffac2",
+ "checkbox.background": "#1b1e28",
+ "checkbox.border": "#ffffff10",
+ "checkbox.foreground": "#e4f0fb",
+ "debugConsole.errorForeground": "#d0679d",
+ "debugConsole.infoForeground": "#ADD7FF",
+ "debugConsole.sourceForeground": "#a6accd",
+ "debugConsole.warningForeground": "#fffac2",
+ "debugConsoleInputIcon.foreground": "#a6accd",
+ "debugExceptionWidget.background": "#d0679d",
+ "debugExceptionWidget.border": "#d0679d",
+ "debugIcon.breakpointCurrentStackframeForeground": "#fffac2",
+ "debugIcon.breakpointDisabledForeground": "#7390AA",
+ "debugIcon.breakpointForeground": "#d0679d",
+ "debugIcon.breakpointStackframeForeground": "#5fb3a1",
+ "debugIcon.breakpointUnverifiedForeground": "#7390AA",
+ "debugIcon.continueForeground": "#ADD7FF",
+ "debugIcon.disconnectForeground": "#d0679d",
+ "debugIcon.pauseForeground": "#ADD7FF",
+ "debugIcon.restartForeground": "#5fb3a1",
+ "debugIcon.startForeground": "#5fb3a1",
+ "debugIcon.stepBackForeground": "#ADD7FF",
+ "debugIcon.stepIntoForeground": "#ADD7FF",
+ "debugIcon.stepOutForeground": "#ADD7FF",
+ "debugIcon.stepOverForeground": "#ADD7FF",
+ "debugIcon.stopForeground": "#d0679d",
+ "debugTokenExpression.boolean": "#89ddff",
+ "debugTokenExpression.error": "#d0679d",
+ "debugTokenExpression.name": "#e4f0fb",
+ "debugTokenExpression.number": "#5fb3a1",
+ "debugTokenExpression.string": "#89ddff",
+ "debugTokenExpression.value": "#a6accd99",
+ "debugToolBar.background": "#303340",
+ "debugView.exceptionLabelBackground": "#d0679d",
+ "debugView.exceptionLabelForeground": "#e4f0fb",
+ "debugView.stateLabelBackground": "#303340",
+ "debugView.stateLabelForeground": "#a6accd",
+ "debugView.valueChangedHighlight": "#89ddff",
+ "descriptionForeground": "#a6accdb3",
+ "diffEditor.diagonalFill": "#a6accd33",
+ "dropdown.foreground": "#e4f0fb",
+ "errorForeground": "#d0679d",
+ "extensionBadge.remoteBackground": "#303340",
+ "extensionBadge.remoteForeground": "#e4f0fb",
+ "extensionButton.prominentForeground": "#ffffff",
+ "extensionIcon.starForeground": "#fffac2",
+ "foreground": "#a6accd",
+ "gitDecoration.addedResourceForeground": "#5fb3a1",
+ "gitDecoration.conflictingResourceForeground": "#d0679d",
+ "gitDecoration.deletedResourceForeground": "#d0679d",
+ "gitDecoration.ignoredResourceForeground": "#767c9d70",
+ "gitDecoration.modifiedResourceForeground": "#ADD7FF",
+ "gitDecoration.renamedResourceForeground": "#5DE4c7",
+ "gitDecoration.stageDeletedResourceForeground": "#d0679d",
+ "gitDecoration.stageModifiedResourceForeground": "#ADD7FF",
+ "gitDecoration.submoduleResourceForeground": "#89ddff",
+ "gitDecoration.untrackedResourceForeground": "#5DE4c7",
+ "icon.foreground": "#a6accd",
+ "imagePreview.border": "#303340",
+ "inputOption.activeBackground": "#00000000",
+ "inputOption.activeBorder": "#00000000",
+ "inputOption.activeForeground": "#ffffff",
+ "inputValidation.errorBackground": "#1b1e28",
+ "inputValidation.infoBackground": "#506477",
+ "inputValidation.warningBackground": "#506477",
+ "list.deemphasizedForeground": "#767c9d",
+ "list.dropBackground": "#506477",
+ "list.filterMatchBackground": "#89ddff60",
+ "list.focusOutline": "#00000000",
+ "list.invalidItemForeground": "#fffac2",
+ "list.warningForeground": "#fffac2",
+ "listFilterWidget.background": "#303340",
+ "listFilterWidget.noMatchesOutline": "#d0679d",
+ "listFilterWidget.outline": "#00000000",
+ "list.activeSelectionBackground": "#30334080",
+ "list.activeSelectionForeground": "#e4f0fb",
+ "list.errorForeground": "#d0679d",
+ "list.focusBackground": "#30334080",
+ "list.focusForeground": "#a6accd",
+ "list.highlightForeground": "#5fb3a1",
+ "list.hoverBackground": "#30334080",
+ "list.hoverForeground": "#e4f0fb",
+ "list.inactiveSelectionBackground": "#30334080",
+ "list.inactiveSelectionForeground": "#e4f0fb",
+ "menu.background": "#1b1e28",
+ "menu.foreground": "#e4f0fb",
+ "menu.selectionBackground": "#303340",
+ "menu.selectionForeground": "#7390AA",
+ "menu.separatorBackground": "#767c9d",
+ "menubar.selectionBackground": "#717cb425",
+ "menubar.selectionForeground": "#a6accd",
+ "merge.commonContentBackground": "#a6accd29",
+ "merge.commonHeaderBackground": "#a6accd66",
+ "merge.currentContentBackground": "#5fb3a133",
+ "merge.currentHeaderBackground": "#5fb3a180",
+ "merge.incomingContentBackground": "#89ddff33",
+ "merge.incomingHeaderBackground": "#89ddff80",
+ "minimap.errorHighlight": "#d0679d",
+ "minimap.findMatchHighlight": "#ADD7FF",
+ "minimap.selectionHighlight": "#e4f0fb40",
+ "minimap.warningHighlight": "#fffac2",
+ "minimapGutter.addedBackground": "#5fb3a180",
+ "minimapGutter.deletedBackground": "#d0679d80",
+ "minimapGutter.modifiedBackground": "#ADD7FF80",
+ "minimapSlider.activeBackground": "#a6accd30",
+ "minimapSlider.background": "#a6accd20",
+ "minimapSlider.hoverBackground": "#a6accd30",
+ "notebook.cellBorderColor": "#1b1e28",
+ "notebook.cellInsertionIndicator": "#00000000",
+ "notebook.cellStatusBarItemHoverBackground": "#ffffff26",
+ "notebook.cellToolbarSeparator": "#303340",
+ "notebook.focusedCellBorder": "#00000000",
+ "notebook.focusedEditorBorder": "#00000000",
+ "notebook.focusedRowBorder": "#00000000",
+ "notebook.inactiveFocusedCellBorder": "#00000000",
+ "notebook.outputContainerBackgroundColor": "#1b1e28",
+ "notebook.rowHoverBackground": "#30334000",
+ "notebook.selectedCellBackground": "#303340",
+ "notebook.selectedCellBorder": "#1b1e28",
+ "notebook.symbolHighlightBackground": "#ffffff0b",
+ "notebookScrollbarSlider.activeBackground": "#a6accd25",
+ "notebookScrollbarSlider.background": "#00000050",
+ "notebookScrollbarSlider.hoverBackground": "#a6accd25",
+ "notebookStatusErrorIcon.foreground": "#d0679d",
+ "notebookStatusRunningIcon.foreground": "#a6accd",
+ "notebookStatusSuccessIcon.foreground": "#5fb3a1",
+ "notificationCenterHeader.background": "#303340",
+ "notificationLink.foreground": "#ADD7FF",
+ "notifications.border": "#303340",
+ "notificationsErrorIcon.foreground": "#d0679d",
+ "notificationsInfoIcon.foreground": "#ADD7FF",
+ "notificationsWarningIcon.foreground": "#fffac2",
+ "panel.background": "#1b1e28",
+ "panel.dropBorder": "#a6accd",
+ "panelSection.border": "#1b1e28",
+ "panelSection.dropBackground": "#7390AA80",
+ "panelSectionHeader.background": "#303340",
+ "panelTitle.activeBorder": "#a6accd",
+ "panelTitle.inactiveForeground": "#a6accd99",
+ "peekViewEditor.matchHighlightBackground": "#303340",
+ "peekViewResult.fileForeground": "#ffffff",
+ "peekViewResult.lineForeground": "#a6accd",
+ "peekViewResult.matchHighlightBackground": "#303340",
+ "peekViewResult.selectionBackground": "#717cb425",
+ "peekViewResult.selectionForeground": "#ffffff",
+ "peekViewTitleLabel.foreground": "#ffffff",
+ "pickerGroup.border": "#a6accd",
+ "pickerGroup.foreground": "#89ddff",
+ "problemsErrorIcon.foreground": "#d0679d",
+ "problemsInfoIcon.foreground": "#ADD7FF",
+ "problemsWarningIcon.foreground": "#fffac2",
+ "progressBar.background": "#89ddff",
+ "quickInput.background": "#1b1e28",
+ "quickInput.foreground": "#a6accd",
+ "quickInputList.focusBackground": "#a6accd10",
+ "quickInputTitle.background": "#ffffff1b",
+ "sash.hoverBorder": "#00000000",
+ "scm.providerBorder": "#e4f0fb10",
+ "searchEditor.findMatchBackground": "#ADD7FF50",
+ "searchEditor.textInputBorder": "#ffffff10",
+ "settings.checkboxBackground": "#1b1e28",
+ "settings.checkboxBorder": "#ffffff10",
+ "settings.checkboxForeground": "#e4f0fb",
+ "settings.dropdownBackground": "#1b1e28",
+ "settings.dropdownBorder": "#ffffff10",
+ "settings.dropdownForeground": "#e4f0fb",
+ "settings.dropdownListBorder": "#e4f0fb10",
+ "settings.focusedRowBackground": "#00000000",
+ "settings.headerForeground": "#e4f0fb",
+ "settings.modifiedItemIndicator": "#ADD7FF",
+ "settings.numberInputBackground": "#ffffff05",
+ "settings.numberInputBorder": "#ffffff10",
+ "settings.numberInputForeground": "#e4f0fb",
+ "settings.textInputBackground": "#ffffff05",
+ "settings.textInputBorder": "#ffffff10",
+ "settings.textInputForeground": "#e4f0fb",
+ "sideBar.dropBackground": "#7390AA80",
+ "sideBarSectionHeader.foreground": "#a6accd",
+ "statusBar.debuggingBackground": "#303340",
+ "statusBar.debuggingForeground": "#ffffff",
+ "statusBar.noFolderForeground": "#a6accd",
+ "statusBarItem.activeBackground": "#ffffff2e",
+ "statusBarItem.errorBackground": "#d0679d",
+ "statusBarItem.errorForeground": "#ffffff",
+ "statusBarItem.hoverBackground": "#ffffff1f",
+ "statusBarItem.prominentBackground": "#00000080",
+ "statusBarItem.prominentForeground": "#a6accd",
+ "statusBarItem.prominentHoverBackground": "#0000004d",
+ "statusBarItem.remoteBackground": "#303340",
+ "statusBarItem.remoteForeground": "#e4f0fb",
+ "symbolIcon.arrayForeground": "#a6accd",
+ "symbolIcon.booleanForeground": "#a6accd",
+ "symbolIcon.classForeground": "#fffac2",
+ "symbolIcon.colorForeground": "#a6accd",
+ "symbolIcon.constantForeground": "#a6accd",
+ "symbolIcon.constructorForeground": "#f087bd",
+ "symbolIcon.enumeratorForeground": "#fffac2",
+ "symbolIcon.enumeratorMemberForeground": "#ADD7FF",
+ "symbolIcon.eventForeground": "#fffac2",
+ "symbolIcon.fieldForeground": "#ADD7FF",
+ "symbolIcon.fileForeground": "#a6accd",
+ "symbolIcon.folderForeground": "#a6accd",
+ "symbolIcon.functionForeground": "#f087bd",
+ "symbolIcon.interfaceForeground": "#ADD7FF",
+ "symbolIcon.keyForeground": "#a6accd",
+ "symbolIcon.keywordForeground": "#a6accd",
+ "symbolIcon.methodForeground": "#f087bd",
+ "symbolIcon.moduleForeground": "#a6accd",
+ "symbolIcon.namespaceForeground": "#a6accd",
+ "symbolIcon.nullForeground": "#a6accd",
+ "symbolIcon.numberForeground": "#a6accd",
+ "symbolIcon.objectForeground": "#a6accd",
+ "symbolIcon.operatorForeground": "#a6accd",
+ "symbolIcon.packageForeground": "#a6accd",
+ "symbolIcon.propertyForeground": "#a6accd",
+ "symbolIcon.referenceForeground": "#a6accd",
+ "symbolIcon.snippetForeground": "#a6accd",
+ "symbolIcon.stringForeground": "#a6accd",
+ "symbolIcon.structForeground": "#a6accd",
+ "symbolIcon.textForeground": "#a6accd",
+ "symbolIcon.typeParameterForeground": "#a6accd",
+ "symbolIcon.unitForeground": "#a6accd",
+ "symbolIcon.variableForeground": "#ADD7FF",
+ "terminal.border": "#00000000",
+ "terminal.foreground": "#a6accd",
+ "terminal.selectionBackground": "#717cb425",
+ "terminalCommandDecoration.errorBackground": "#d0679d",
+ "terminalCommandDecoration.successBackground": "#5DE4c7",
+ "terminalCommandDecoration.defaultBackground": "#767c9d",
+ "testing.iconErrored": "#d0679d",
+ "testing.iconFailed": "#d0679d",
+ "testing.iconPassed": "#5DE4c7",
+ "testing.iconQueued": "#fffac2",
+ "testing.iconSkipped": "#7390AA",
+ "testing.iconUnset": "#7390AA",
+ "testing.message.error.decorationForeground": "#d0679d",
+ "testing.message.error.lineBackground": "#d0679d33",
+ "testing.message.hint.decorationForeground": "#7390AAb3",
+ "testing.message.info.decorationForeground": "#ADD7FF",
+ "testing.message.info.lineBackground": "#89ddff33",
+ "testing.message.warning.decorationForeground": "#fffac2",
+ "testing.message.warning.lineBackground": "#fffac233",
+ "testing.peekBorder": "#d0679d",
+ "testing.runAction": "#5DE4c7",
+ "textBlockQuote.background": "#7390AA1a",
+ "textBlockQuote.border": "#89ddff80",
+ "textCodeBlock.background": "#00000050",
+ "textPreformat.foreground": "#e4f0fb",
+ "textSeparator.foreground": "#ffffff2e",
+ "tree.tableColumnsBorder": "#a6accd20",
+ "welcomePage.progress.background": "#ffffff05",
+ "welcomePage.progress.foreground": "#5fb3a1",
+ "welcomePage.tileBackground": "#1b1e28",
+ "welcomePage.tileHoverBackground": "#303340"
+ },
+ "tokenColors": [
+ {
+ "scope": ["comment", "punctuation.definition.comment"],
+ "settings": {
+ "foreground": "#767c9dB0",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "meta.parameters comment.block",
+ "settings": {
+ "foreground": "#a6accd",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": [
+ "variable.other.constant.object",
+ "variable.other.readwrite.alias",
+ "meta.import variable.other.readwrite"
+ ],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": ["variable.other", "support.type.object"],
+ "settings": {
+ "foreground": "#e4f0fb"
+ }
+ },
+ {
+ "scope": [
+ "variable.other.object.property",
+ "variable.other.property",
+ "support.variable.property"
+ ],
+ "settings": {
+ "foreground": "#e4f0fb"
+ }
+ },
+ {
+ "scope": ["entity.name.function.method", "string.unquoted", "meta.object.member"],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": [
+ "variable - meta.import",
+ "constant.other.placeholder",
+ "meta.object-literal.key-meta.object.member"
+ ],
+ "settings": {
+ "foreground": "#e4f0fb"
+ }
+ },
+ {
+ "scope": ["keyword.control.flow"],
+ "settings": {
+ "foreground": "#5DE4c7c0"
+ }
+ },
+ {
+ "scope": ["keyword.operator.new", "keyword.control.new"],
+ "settings": {
+ "foreground": "#5DE4c7"
+ }
+ },
+ {
+ "scope": [
+ "variable.language.this",
+ "storage.modifier.async",
+ "storage.modifier",
+ "variable.language.super"
+ ],
+ "settings": {
+ "foreground": "#5DE4c7"
+ }
+ },
+ {
+ "scope": [
+ "support.class.error",
+ "keyword.control.trycatch",
+ "keyword.operator.expression.delete",
+ "keyword.operator.expression.void",
+ "keyword.operator.void",
+ "keyword.operator.delete",
+ "constant.language.null",
+ "constant.language.boolean.false",
+ "constant.language.undefined"
+ ],
+ "settings": {
+ "foreground": "#d0679d"
+ }
+ },
+ {
+ "scope": [
+ "variable.parameter",
+ "variable.other.readwrite.js",
+ "meta.definition.variable variable.other.constant",
+ "meta.definition.variable variable.other.readwrite"
+ ],
+ "settings": {
+ "foreground": "#e4f0fb"
+ }
+ },
+ {
+ "scope": ["constant.other.color"],
+ "settings": {
+ "foreground": "#ffffff"
+ }
+ },
+ {
+ "scope": ["invalid", "invalid.illegal"],
+ "settings": {
+ "foreground": "#d0679d"
+ }
+ },
+ {
+ "scope": ["invalid.deprecated"],
+ "settings": {
+ "foreground": "#d0679d"
+ }
+ },
+ {
+ "scope": ["keyword.control", "keyword"],
+ "settings": {
+ "foreground": "#a6accd"
+ }
+ },
+ {
+ "scope": ["keyword.operator", "storage.type"],
+ "settings": {
+ "foreground": "#91B4D5"
+ }
+ },
+ {
+ "scope": [
+ "keyword.control.module",
+ "keyword.control.import",
+ "keyword.control.export",
+ "keyword.control.default",
+ "meta.import",
+ "meta.export"
+ ],
+ "settings": {
+ "foreground": "#5DE4c7"
+ }
+ },
+ {
+ "scope": ["Keyword", "Storage"],
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["keyword-meta.export"],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": ["meta.brace", "punctuation", "keyword.operator.existential"],
+ "settings": {
+ "foreground": "#a6accd"
+ }
+ },
+ {
+ "scope": [
+ "constant.other.color",
+ "meta.tag",
+ "punctuation.definition.tag",
+ "punctuation.separator.inheritance.php",
+ "punctuation.definition.tag.html",
+ "punctuation.definition.tag.begin.html",
+ "punctuation.definition.tag.end.html",
+ "punctuation.section.embedded",
+ "keyword.other.template",
+ "keyword.other.substitution",
+ "meta.objectliteral"
+ ],
+ "settings": {
+ "foreground": "#e4f0fb"
+ }
+ },
+ {
+ "scope": ["support.class.component"],
+ "settings": {
+ "foreground": "#5DE4c7"
+ }
+ },
+ {
+ "scope": ["entity.name.tag", "entity.name.tag", "meta.tag.sgml", "markup.deleted.git_gutter"],
+ "settings": {
+ "foreground": "#5DE4c7"
+ }
+ },
+ {
+ "name": "Function Call",
+ "scope": "variable.function, source meta.function-call entity.name.function, source meta.function-call entity.name.function, source meta.method-call entity.name.function, meta.class meta.group.braces.curly meta.function-call variable.function, meta.class meta.field.declaration meta.function-call entity.name.function, variable.function.constructor, meta.block meta.var.expr meta.function-call entity.name.function, support.function.console, meta.function-call support.function, meta.property.class variable.other.class, punctuation.definition.entity.css",
+ "settings": {
+ "foreground": "#e4f0fbd0"
+ }
+ },
+ {
+ "name": "Function/Class Name",
+ "scope": "entity.name.function, meta.class entity.name.class, meta.class entity.name.type.class, meta.class meta.function-call variable.function, keyword.other.important",
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": ["source.cpp meta.block variable.other"],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": ["support.other.variable", "string.other.link"],
+ "settings": {
+ "foreground": "#5DE4c7"
+ }
+ },
+ {
+ "scope": [
+ "constant.numeric",
+ "support.constant",
+ "constant.character",
+ "constant.escape",
+ "keyword.other.unit",
+ "keyword.other",
+ "string",
+ "constant.language",
+ "constant.other.symbol",
+ "constant.other.key",
+ "markup.heading",
+ "markup.inserted.git_gutter",
+ "meta.group.braces.curly constant.other.object.key.js string.unquoted.label.js",
+ "text.html.derivative"
+ ],
+ "settings": {
+ "foreground": "#5DE4c7"
+ }
+ },
+ {
+ "scope": ["entity.other.inherited-class"],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": ["meta.type.declaration"],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": ["entity.name.type.alias"],
+ "settings": {
+ "foreground": "#a6accd"
+ }
+ },
+ {
+ "scope": ["keyword.control.as", "entity.name.type", "support.type"],
+ "settings": {
+ "foreground": "#a6accdC0"
+ }
+ },
+ {
+ "scope": [
+ "entity.name",
+ "support.orther.namespace.use.php",
+ "meta.use.php",
+ "support.other.namespace.php",
+ "markup.changed.git_gutter",
+ "support.type.sys-types"
+ ],
+ "settings": {
+ "foreground": "#91B4D5"
+ }
+ },
+ {
+ "scope": ["support.class", "support.constant", "variable.other.constant.object"],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": [
+ "source.css support.type.property-name",
+ "source.sass support.type.property-name",
+ "source.scss support.type.property-name",
+ "source.less support.type.property-name",
+ "source.stylus support.type.property-name",
+ "source.postcss support.type.property-name"
+ ],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": ["entity.name.module.js", "variable.import.parameter.js", "variable.other.class.js"],
+ "settings": {
+ "foreground": "#e4f0fb"
+ }
+ },
+ {
+ "scope": ["variable.language"],
+ "settings": {
+ "foreground": "#ADD7FF",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["entity.name.method.js"],
+ "settings": {
+ "foreground": "#91B4D5",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["meta.class-method.js entity.name.function.js", "variable.function.constructor"],
+ "settings": {
+ "foreground": "#91B4D5"
+ }
+ },
+ {
+ "scope": ["entity.other.attribute-name"],
+ "settings": {
+ "foreground": "#91B4D5",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": [
+ "text.html.basic entity.other.attribute-name.html",
+ "text.html.basic entity.other.attribute-name"
+ ],
+ "settings": {
+ "foreground": "#5fb3a1",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["entity.other.attribute-name.class"],
+ "settings": {
+ "foreground": "#5fb3a1"
+ }
+ },
+ {
+ "scope": ["source.sass keyword.control"],
+ "settings": {
+ "foreground": "#42675A"
+ }
+ },
+ {
+ "scope": ["markup.inserted"],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": ["markup.deleted"],
+ "settings": {
+ "foreground": "#506477"
+ }
+ },
+ {
+ "scope": ["markup.changed"],
+ "settings": {
+ "foreground": "#91B4D5"
+ }
+ },
+ {
+ "scope": ["string.regexp"],
+ "settings": {
+ "foreground": "#5fb3a1"
+ }
+ },
+ {
+ "scope": ["constant.character.escape"],
+ "settings": {
+ "foreground": "#5fb3a1"
+ }
+ },
+ {
+ "scope": ["*url*", "*link*", "*uri*"],
+ "settings": {
+ "foreground": "#ADD7FF",
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "scope": [
+ "tag.decorator.js entity.name.tag.js",
+ "tag.decorator.js punctuation.definition.tag.js"
+ ],
+ "settings": {
+ "foreground": "#42675A",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["source.js constant.other.object.key.js string.unquoted.label.js"],
+ "settings": {
+ "foreground": "#5fb3a1",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["source.json meta.structure.dictionary.json support.type.property-name.json"],
+ "settings": {
+ "foreground": "#e4f0fb"
+ }
+ },
+ {
+ "scope": [
+ "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": [
+ "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#91B4D5"
+ }
+ },
+ {
+ "scope": [
+ "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#7390AA"
+ }
+ },
+ {
+ "scope": [
+ "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#e4f0fb"
+ }
+ },
+ {
+ "scope": [
+ "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": [
+ "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#91B4D5"
+ }
+ },
+ {
+ "scope": [
+ "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#7390AA"
+ }
+ },
+ {
+ "scope": [
+ "source.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json"
+ ],
+ "settings": {
+ "foreground": "#e4f0fb"
+ }
+ },
+ {
+ "scope": ["text.html.markdown", "punctuation.definition.list_item.markdown"],
+ "settings": {
+ "foreground": "#e4f0fb"
+ }
+ },
+ {
+ "scope": ["text.html.markdown markup.inline.raw.markdown"],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": [
+ "text.html.markdown markup.inline.raw.markdown punctuation.definition.raw.markdown"
+ ],
+ "settings": {
+ "foreground": "#91B4D5"
+ }
+ },
+ {
+ "scope": [
+ "markdown.heading",
+ "markup.heading | markup.heading entity.name",
+ "markup.heading.markdown punctuation.definition.heading.markdown"
+ ],
+ "settings": {
+ "foreground": "#e4f0fb"
+ }
+ },
+ {
+ "scope": ["markup.italic"],
+ "settings": {
+ "foreground": "#7390AA",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["markup.bold", "markup.bold string"],
+ "settings": {
+ "foreground": "#7390AA",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": [
+ "markup.bold markup.italic",
+ "markup.italic markup.bold",
+ "markup.quote markup.bold",
+ "markup.bold markup.italic string",
+ "markup.italic markup.bold string",
+ "markup.quote markup.bold string"
+ ],
+ "settings": {
+ "foreground": "#7390AA",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": ["markup.underline"],
+ "settings": {
+ "foreground": "#7390AA",
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "scope": ["markup.strike"],
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["markup.quote punctuation.definition.blockquote.markdown"],
+ "settings": {
+ "foreground": "#5DE4c7"
+ }
+ },
+ {
+ "scope": ["markup.quote"],
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["string.other.link.title.markdown"],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": ["string.other.link.description.title.markdown"],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": ["constant.other.reference.link.markdown"],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": ["markup.raw.block"],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": ["markup.raw.block.fenced.markdown"],
+ "settings": {
+ "foreground": "#50647750"
+ }
+ },
+ {
+ "scope": ["punctuation.definition.fenced.markdown"],
+ "settings": {
+ "foreground": "#50647750"
+ }
+ },
+ {
+ "scope": [
+ "markup.raw.block.fenced.markdown",
+ "variable.language.fenced.markdown",
+ "punctuation.section.class.end"
+ ],
+ "settings": {
+ "foreground": "#91B4D5"
+ }
+ },
+ {
+ "scope": ["variable.language.fenced.markdown"],
+ "settings": {
+ "foreground": "#91B4D5"
+ }
+ },
+ {
+ "scope": ["meta.separator"],
+ "settings": {
+ "foreground": "#7390AA",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": ["markup.table"],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": "token.info-token",
+ "settings": {
+ "foreground": "#89ddff"
+ }
+ },
+ {
+ "scope": "token.warn-token",
+ "settings": {
+ "foreground": "#fffac2"
+ }
+ },
+ {
+ "scope": "token.error-token",
+ "settings": {
+ "foreground": "#d0679d"
+ }
+ },
+ {
+ "scope": "token.debug-token",
+ "settings": {
+ "foreground": "#e4f0fb"
+ }
+ },
+ {
+ "scope": [
+ "entity.name.section.markdown",
+ "markup.heading.setext.1.markdown",
+ "markup.heading.setext.2.markdown"
+ ],
+ "settings": {
+ "foreground": "#e4f0fb",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "meta.paragraph.markdown",
+ "settings": {
+ "foreground": "#e4f0fbd0"
+ }
+ },
+ {
+ "scope": ["punctuation.definition.from-file.diff", "meta.diff.header.from-file"],
+ "settings": {
+ "foreground": "#506477"
+ }
+ },
+ {
+ "scope": "markup.inline.raw.string.markdown",
+ "settings": {
+ "foreground": "#7390AA"
+ }
+ },
+ {
+ "scope": "meta.separator.markdown",
+ "settings": {
+ "foreground": "#767c9d"
+ }
+ },
+ {
+ "scope": "markup.bold.markdown",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "markup.italic.markdown",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": [
+ "beginning.punctuation.definition.list.markdown",
+ "punctuation.definition.list.begin.markdown",
+ "markup.list.unnumbered.markdown"
+ ],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": [
+ "string.other.link.description.title.markdown punctuation.definition.string.markdown",
+ "meta.link.inline.markdown string.other.link.description.title.markdown",
+ "string.other.link.description.title.markdown punctuation.definition.string.begin.markdown",
+ "string.other.link.description.title.markdown punctuation.definition.string.end.markdown",
+ "meta.image.inline.markdown string.other.link.description.title.markdown"
+ ],
+ "settings": {
+ "foreground": "#ADD7FF",
+ "fontStyle": ""
+ }
+ },
+ {
+ "scope": [
+ "meta.link.inline.markdown string.other.link.title.markdown",
+ "meta.link.reference.markdown string.other.link.title.markdown",
+ "meta.link.reference.def.markdown markup.underline.link.markdown"
+ ],
+ "settings": {
+ "foreground": "#ADD7FF",
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "scope": ["markup.underline.link.markdown", "string.other.link.description.title.markdown"],
+ "settings": {
+ "foreground": "#5DE4c7"
+ }
+ },
+ {
+ "scope": ["fenced_code.block.language", "markup.inline.raw.markdown"],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": [
+ "punctuation.definition.markdown",
+ "punctuation.definition.raw.markdown",
+ "punctuation.definition.heading.markdown",
+ "punctuation.definition.bold.markdown",
+ "punctuation.definition.italic.markdown"
+ ],
+ "settings": {
+ "foreground": "#ADD7FF"
+ }
+ },
+ {
+ "scope": ["source.ignore", "log.error", "log.exception"],
+ "settings": {
+ "foreground": "#d0679d"
+ }
+ },
+ {
+ "scope": ["log.verbose"],
+ "settings": {
+ "foreground": "#a6accd"
+ }
+ }
+ ]
+}
diff --git a/node_modules/shiki/themes/rose-pine-dawn.json b/node_modules/shiki/themes/rose-pine-dawn.json
new file mode 100644
index 0000000..9d10783
--- /dev/null
+++ b/node_modules/shiki/themes/rose-pine-dawn.json
@@ -0,0 +1,675 @@
+{
+ "name": "rose-pine-dawn",
+ "type": "light",
+ "colors": {
+ "activityBar.activeBorder": "#575279",
+ "activityBar.background": "#faf4ed",
+ "activityBar.dropBorder": "#f2e9e1",
+ "activityBar.foreground": "#575279",
+ "activityBar.inactiveForeground": "#797593",
+ "activityBarBadge.background": "#d7827e",
+ "activityBarBadge.foreground": "#faf4ed",
+ "badge.background": "#d7827e",
+ "badge.foreground": "#faf4ed",
+ "banner.background": "#fffaf3",
+ "banner.foreground": "#575279",
+ "banner.iconForeground": "#797593",
+ "breadcrumb.activeSelectionForeground": "#d7827e",
+ "breadcrumb.background": "#faf4ed",
+ "breadcrumb.focusForeground": "#797593",
+ "breadcrumb.foreground": "#9893a5",
+ "breadcrumbPicker.background": "#fffaf3",
+ "button.background": "#d7827e",
+ "button.foreground": "#faf4ed",
+ "button.hoverBackground": "#d7827ee6",
+ "button.secondaryBackground": "#fffaf3",
+ "button.secondaryForeground": "#575279",
+ "button.secondaryHoverBackground": "#f2e9e1",
+ "charts.blue": "#56949f",
+ "charts.foreground": "#575279",
+ "charts.green": "#286983",
+ "charts.lines": "#797593",
+ "charts.orange": "#d7827e",
+ "charts.purple": "#907aa9",
+ "charts.red": "#b4637a",
+ "charts.yellow": "#ea9d34",
+ "checkbox.background": "#fffaf3",
+ "checkbox.border": "#6e6a8614",
+ "checkbox.foreground": "#575279",
+ "debugExceptionWidget.background": "#fffaf3",
+ "debugExceptionWidget.border": "#6e6a8614",
+ "debugIcon.breakpointCurrentStackframeForeground": "#797593",
+ "debugIcon.breakpointDisabledForeground": "#797593",
+ "debugIcon.breakpointForeground": "#797593",
+ "debugIcon.breakpointStackframeForeground": "#797593",
+ "debugIcon.breakpointUnverifiedForeground": "#797593",
+ "debugIcon.continueForeground": "#797593",
+ "debugIcon.disconnectForeground": "#797593",
+ "debugIcon.pauseForeground": "#797593",
+ "debugIcon.restartForeground": "#797593",
+ "debugIcon.startForeground": "#797593",
+ "debugIcon.stepBackForeground": "#797593",
+ "debugIcon.stepIntoForeground": "#797593",
+ "debugIcon.stepOutForeground": "#797593",
+ "debugIcon.stepOverForeground": "#797593",
+ "debugIcon.stopForeground": "#b4637a",
+ "debugToolBar.background": "#fffaf3",
+ "debugToolBar.border": "#f2e9e1",
+ "descriptionForeground": "#797593",
+ "diffEditor.border": "#f2e9e1",
+ "diffEditor.diagonalFill": "#6e6a8626",
+ "diffEditor.insertedLineBackground": "#56949f26",
+ "diffEditor.insertedTextBackground": "#56949f26",
+ "diffEditor.removedLineBackground": "#b4637a26",
+ "diffEditor.removedTextBackground": "#b4637a26",
+ "diffEditorOverview.insertedForeground": "#56949f80",
+ "diffEditorOverview.removedForeground": "#b4637a80",
+ "dropdown.background": "#fffaf3",
+ "dropdown.border": "#6e6a8614",
+ "dropdown.foreground": "#575279",
+ "dropdown.listBackground": "#fffaf3",
+ "editor.background": "#faf4ed",
+ "editor.findMatchBackground": "#6e6a8626",
+ "editor.findMatchHighlightBackground": "#6e6a8626",
+ "editor.findRangeHighlightBackground": "#6e6a8626",
+ "editor.findRangeHighlightBorder": "#0000",
+ "editor.focusedStackFrameHighlightBackground": "#6e6a8614",
+ "editor.foldBackground": "#fffaf3",
+ "editor.foreground": "#575279",
+ "editor.hoverHighlightBackground": "#0000",
+ "editor.inactiveSelectionBackground": "#6e6a860d",
+ "editor.inlineValuesBackground": "#0000",
+ "editor.inlineValuesForeground": "#797593",
+ "editor.lineHighlightBackground": "#6e6a860d",
+ "editor.lineHighlightBorder": "#0000",
+ "editor.linkedEditingBackground": "#fffaf3",
+ "editor.rangeHighlightBackground": "#6e6a860d",
+ "editor.selectionBackground": "#6e6a8614",
+ "editor.selectionForeground": "#575279",
+ "editor.selectionHighlightBackground": "#6e6a8614",
+ "editor.selectionHighlightBorder": "#faf4ed",
+ "editor.snippetFinalTabstopHighlightBackground": "#6e6a8614",
+ "editor.snippetFinalTabstopHighlightBorder": "#fffaf3",
+ "editor.snippetTabstopHighlightBackground": "#6e6a8614",
+ "editor.snippetTabstopHighlightBorder": "#fffaf3",
+ "editor.stackFrameHighlightBackground": "#6e6a8614",
+ "editor.symbolHighlightBackground": "#6e6a8614",
+ "editor.symbolHighlightBorder": "#0000",
+ "editor.wordHighlightBackground": "#6e6a8614",
+ "editor.wordHighlightBorder": "#0000",
+ "editor.wordHighlightStrongBackground": "#6e6a8614",
+ "editor.wordHighlightStrongBorder": "#6e6a8614",
+ "editorBracketHighlight.foreground1": "#b4637a80",
+ "editorBracketHighlight.foreground2": "#28698380",
+ "editorBracketHighlight.foreground3": "#ea9d3480",
+ "editorBracketHighlight.foreground4": "#56949f80",
+ "editorBracketHighlight.foreground5": "#d7827e80",
+ "editorBracketHighlight.foreground6": "#907aa980",
+ "editorBracketMatch.background": "#0000",
+ "editorBracketMatch.border": "#797593",
+ "editorBracketPairGuide.activeBackground1": "#286983",
+ "editorBracketPairGuide.activeBackground2": "#d7827e",
+ "editorBracketPairGuide.activeBackground3": "#907aa9",
+ "editorBracketPairGuide.activeBackground4": "#56949f",
+ "editorBracketPairGuide.activeBackground5": "#ea9d34",
+ "editorBracketPairGuide.activeBackground6": "#b4637a",
+ "editorBracketPairGuide.background1": "#28698380",
+ "editorBracketPairGuide.background2": "#d7827e80",
+ "editorBracketPairGuide.background3": "#907aa980",
+ "editorBracketPairGuide.background4": "#56949f80",
+ "editorBracketPairGuide.background5": "#ea9d3480",
+ "editorBracketPairGuide.background6": "#b4637a80",
+ "editorCodeLens.foreground": "#d7827e",
+ "editorCursor.background": "#575279",
+ "editorCursor.foreground": "#9893a5",
+ "editorError.border": "#0000",
+ "editorError.foreground": "#b4637a",
+ "editorGhostText.foreground": "#797593",
+ "editorGroup.border": "#0000",
+ "editorGroup.dropBackground": "#fffaf3",
+ "editorGroup.emptyBackground": "#0000",
+ "editorGroup.focusedEmptyBorder": "#0000",
+ "editorGroupHeader.noTabsBackground": "#0000",
+ "editorGroupHeader.tabsBackground": "#0000",
+ "editorGroupHeader.tabsBorder": "#0000",
+ "editorGutter.addedBackground": "#56949f",
+ "editorGutter.background": "#faf4ed",
+ "editorGutter.commentRangeForeground": "#797593",
+ "editorGutter.deletedBackground": "#b4637a",
+ "editorGutter.foldingControlForeground": "#907aa9",
+ "editorGutter.modifiedBackground": "#d7827e",
+ "editorHint.border": "#0000",
+ "editorHint.foreground": "#797593",
+ "editorHoverWidget.background": "#fffaf3",
+ "editorHoverWidget.border": "#9893a580",
+ "editorHoverWidget.foreground": "#797593",
+ "editorHoverWidget.highlightForeground": "#575279",
+ "editorHoverWidget.statusBarBackground": "#0000",
+ "editorIndentGuide.activeBackground": "#9893a5",
+ "editorIndentGuide.background": "#6e6a8626",
+ "editorInfo.border": "#f2e9e1",
+ "editorInfo.foreground": "#56949f",
+ "editorInlayHint.background": "#f2e9e1",
+ "editorInlayHint.foreground": "#797593",
+ "editorInlayHint.parameterBackground": "#f2e9e1",
+ "editorInlayHint.parameterForeground": "#907aa9",
+ "editorInlayHint.typeBackground": "#f2e9e1",
+ "editorInlayHint.typeForeground": "#56949f",
+ "editorLightBulb.foreground": "#286983",
+ "editorLightBulbAutoFix.foreground": "#d7827e",
+ "editorLineNumber.activeForeground": "#575279",
+ "editorLineNumber.foreground": "#797593",
+ "editorLink.activeForeground": "#d7827e",
+ "editorMarkerNavigation.background": "#fffaf3",
+ "editorMarkerNavigationError.background": "#fffaf3",
+ "editorMarkerNavigationInfo.background": "#fffaf3",
+ "editorMarkerNavigationWarning.background": "#fffaf3",
+ "editorOverviewRuler.addedForeground": "#56949f80",
+ "editorOverviewRuler.background": "#faf4ed",
+ "editorOverviewRuler.border": "#6e6a8626",
+ "editorOverviewRuler.bracketMatchForeground": "#797593",
+ "editorOverviewRuler.commonContentForeground": "#6e6a860d",
+ "editorOverviewRuler.currentContentForeground": "#6e6a8614",
+ "editorOverviewRuler.deletedForeground": "#b4637a80",
+ "editorOverviewRuler.errorForeground": "#b4637a80",
+ "editorOverviewRuler.findMatchForeground": "#6e6a8626",
+ "editorOverviewRuler.incomingContentForeground": "#907aa980",
+ "editorOverviewRuler.infoForeground": "#56949f80",
+ "editorOverviewRuler.modifiedForeground": "#d7827e80",
+ "editorOverviewRuler.rangeHighlightForeground": "#6e6a8626",
+ "editorOverviewRuler.selectionHighlightForeground": "#6e6a8626",
+ "editorOverviewRuler.warningForeground": "#ea9d3480",
+ "editorOverviewRuler.wordHighlightForeground": "#6e6a8614",
+ "editorOverviewRuler.wordHighlightStrongForeground": "#6e6a8626",
+ "editorPane.background": "#0000",
+ "editorRuler.foreground": "#6e6a8626",
+ "editorSuggestWidget.background": "#fffaf3",
+ "editorSuggestWidget.border": "#0000",
+ "editorSuggestWidget.focusHighlightForeground": "#d7827e",
+ "editorSuggestWidget.foreground": "#797593",
+ "editorSuggestWidget.highlightForeground": "#d7827e",
+ "editorSuggestWidget.selectedBackground": "#6e6a8614",
+ "editorSuggestWidget.selectedForeground": "#575279",
+ "editorSuggestWidget.selectedIconForeground": "#575279",
+ "editorUnnecessaryCode.border": "#0000",
+ "editorUnnecessaryCode.opacity": "#57527980",
+ "editorWarning.border": "#0000",
+ "editorWarning.foreground": "#ea9d34",
+ "editorWhitespace.foreground": "#9893a5",
+ "editorWidget.background": "#fffaf3",
+ "editorWidget.border": "#f2e9e1",
+ "editorWidget.foreground": "#797593",
+ "editorWidget.resizeBorder": "#9893a5",
+ "errorForeground": "#b4637a",
+ "extensionBadge.remoteBackground": "#907aa9",
+ "extensionBadge.remoteForeground": "#faf4ed",
+ "extensionButton.prominentBackground": "#d7827e",
+ "extensionButton.prominentForeground": "#faf4ed",
+ "extensionButton.prominentHoverBackground": "#d7827ee6",
+ "extensionIcon.preReleaseForeground": "#286983",
+ "extensionIcon.starForeground": "#d7827e",
+ "extensionIcon.verifiedForeground": "#907aa9",
+ "focusBorder": "#6e6a8614",
+ "foreground": "#575279",
+ "gitDecoration.addedResourceForeground": "#56949f",
+ "gitDecoration.conflictingResourceForeground": "#b4637a",
+ "gitDecoration.deletedResourceForeground": "#797593",
+ "gitDecoration.ignoredResourceForeground": "#9893a5",
+ "gitDecoration.modifiedResourceForeground": "#d7827e",
+ "gitDecoration.renamedResourceForeground": "#286983",
+ "gitDecoration.stageDeletedResourceForeground": "#b4637a",
+ "gitDecoration.stageModifiedResourceForeground": "#907aa9",
+ "gitDecoration.submoduleResourceForeground": "#ea9d34",
+ "gitDecoration.untrackedResourceForeground": "#ea9d34",
+ "icon.foreground": "#797593",
+ "input.background": "#f2e9e180",
+ "input.border": "#6e6a8614",
+ "input.foreground": "#575279",
+ "input.placeholderForeground": "#797593",
+ "inputOption.activeBackground": "#d7827e26",
+ "inputOption.activeForeground": "#d7827e",
+ "inputValidation.errorBackground": "#fffaf3",
+ "inputValidation.errorBorder": "#6e6a8626",
+ "inputValidation.errorForeground": "#b4637a",
+ "inputValidation.infoBackground": "#fffaf3",
+ "inputValidation.infoBorder": "#6e6a8626",
+ "inputValidation.infoForeground": "#56949f",
+ "inputValidation.warningBackground": "#fffaf3",
+ "inputValidation.warningBorder": "#6e6a8626",
+ "inputValidation.warningForeground": "#56949f80",
+ "keybindingLabel.background": "#f2e9e1",
+ "keybindingLabel.border": "#6e6a8626",
+ "keybindingLabel.bottomBorder": "#6e6a8626",
+ "keybindingLabel.foreground": "#907aa9",
+ "keybindingTable.headerBackground": "#f2e9e1",
+ "keybindingTable.rowsBackground": "#fffaf3",
+ "list.activeSelectionBackground": "#6e6a8614",
+ "list.activeSelectionForeground": "#575279",
+ "list.deemphasizedForeground": "#797593",
+ "list.dropBackground": "#fffaf3",
+ "list.errorForeground": "#b4637a",
+ "list.filterMatchBackground": "#fffaf3",
+ "list.filterMatchBorder": "#d7827e",
+ "list.focusBackground": "#6e6a8626",
+ "list.focusForeground": "#575279",
+ "list.focusOutline": "#6e6a8614",
+ "list.highlightForeground": "#d7827e",
+ "list.hoverBackground": "#6e6a860d",
+ "list.hoverForeground": "#575279",
+ "list.inactiveFocusBackground": "#6e6a860d",
+ "list.inactiveSelectionBackground": "#fffaf3",
+ "list.inactiveSelectionForeground": "#575279",
+ "list.invalidItemForeground": "#b4637a",
+ "list.warningForeground": "#ea9d34",
+ "listFilterWidget.background": "#fffaf3",
+ "listFilterWidget.noMatchesOutline": "#b4637a",
+ "listFilterWidget.outline": "#f2e9e1",
+ "menu.background": "#fffaf3",
+ "menu.border": "#6e6a860d",
+ "menu.foreground": "#575279",
+ "menu.selectionBackground": "#6e6a8614",
+ "menu.selectionBorder": "#f2e9e1",
+ "menu.selectionForeground": "#575279",
+ "menu.separatorBackground": "#6e6a8626",
+ "menubar.selectionBackground": "#6e6a8614",
+ "menubar.selectionBorder": "#6e6a860d",
+ "menubar.selectionForeground": "#575279",
+ "merge.border": "#f2e9e1",
+ "merge.commonContentBackground": "#6e6a8614",
+ "merge.commonHeaderBackground": "#6e6a8614",
+ "merge.currentContentBackground": "#ea9d3480",
+ "merge.currentHeaderBackground": "#ea9d3480",
+ "merge.incomingContentBackground": "#56949f80",
+ "merge.incomingHeaderBackground": "#56949f80",
+ "minimap.background": "#fffaf3",
+ "minimap.errorHighlight": "#b4637a80",
+ "minimap.findMatchHighlight": "#6e6a8614",
+ "minimap.selectionHighlight": "#6e6a8614",
+ "minimap.warningHighlight": "#ea9d3480",
+ "minimapGutter.addedBackground": "#56949f",
+ "minimapGutter.deletedBackground": "#b4637a",
+ "minimapGutter.modifiedBackground": "#d7827e",
+ "minimapSlider.activeBackground": "#6e6a8626",
+ "minimapSlider.background": "#6e6a8614",
+ "minimapSlider.hoverBackground": "#6e6a8614",
+ "notebook.cellBorderColor": "#56949f80",
+ "notebook.cellEditorBackground": "#fffaf3",
+ "notebook.cellHoverBackground": "#f2e9e180",
+ "notebook.focusedCellBackground": "#6e6a860d",
+ "notebook.focusedCellBorder": "#56949f",
+ "notebook.outputContainerBackgroundColor": "#6e6a860d",
+ "notificationCenter.border": "#6e6a8614",
+ "notificationCenterHeader.background": "#fffaf3",
+ "notificationCenterHeader.foreground": "#797593",
+ "notificationLink.foreground": "#907aa9",
+ "notifications.background": "#fffaf3",
+ "notifications.border": "#6e6a8614",
+ "notifications.foreground": "#575279",
+ "notificationsErrorIcon.foreground": "#b4637a",
+ "notificationsInfoIcon.foreground": "#56949f",
+ "notificationsWarningIcon.foreground": "#ea9d34",
+ "notificationToast.border": "#6e6a8614",
+ "panel.background": "#fffaf3",
+ "panel.border": "#0000",
+ "panel.dropBorder": "#f2e9e1",
+ "panelInput.border": "#fffaf3",
+ "panelSection.dropBackground": "#6e6a8614",
+ "panelSectionHeader.background": "#fffaf3",
+ "panelSectionHeader.foreground": "#575279",
+ "panelTitle.activeBorder": "#6e6a8626",
+ "panelTitle.activeForeground": "#575279",
+ "panelTitle.inactiveForeground": "#797593",
+ "peekView.border": "#f2e9e1",
+ "peekViewEditor.background": "#fffaf3",
+ "peekViewEditor.matchHighlightBackground": "#6e6a8626",
+ "peekViewResult.background": "#fffaf3",
+ "peekViewResult.fileForeground": "#797593",
+ "peekViewResult.lineForeground": "#797593",
+ "peekViewResult.matchHighlightBackground": "#6e6a8626",
+ "peekViewResult.selectionBackground": "#6e6a8614",
+ "peekViewResult.selectionForeground": "#575279",
+ "peekViewTitle.background": "#f2e9e1",
+ "peekViewTitleDescription.foreground": "#797593",
+ "pickerGroup.border": "#6e6a8626",
+ "pickerGroup.foreground": "#907aa9",
+ "ports.iconRunningProcessForeground": "#d7827e",
+ "problemsErrorIcon.foreground": "#b4637a",
+ "problemsInfoIcon.foreground": "#56949f",
+ "problemsWarningIcon.foreground": "#ea9d34",
+ "progressBar.background": "#d7827e",
+ "quickInput.background": "#fffaf3",
+ "quickInput.foreground": "#797593",
+ "quickInputList.focusBackground": "#6e6a8614",
+ "quickInputList.focusForeground": "#575279",
+ "quickInputList.focusIconForeground": "#575279",
+ "scrollbar.shadow": "#fffaf34d",
+ "scrollbarSlider.activeBackground": "#28698380",
+ "scrollbarSlider.background": "#6e6a8614",
+ "scrollbarSlider.hoverBackground": "#6e6a8626",
+ "searchEditor.findMatchBackground": "#6e6a8614",
+ "selection.background": "#6e6a8626",
+ "settings.focusedRowBackground": "#fffaf3",
+ "settings.headerForeground": "#575279",
+ "settings.modifiedItemIndicator": "#d7827e",
+ "settings.focusedRowBorder": "#6e6a8614",
+ "settings.rowHoverBackground": "#fffaf3",
+ "sideBar.background": "#faf4ed",
+ "sideBar.dropBackground": "#fffaf3",
+ "sideBar.foreground": "#797593",
+ "sideBarSectionHeader.background": "#0000",
+ "sideBarSectionHeader.border": "#6e6a8614",
+ "statusBar.background": "#faf4ed",
+ "statusBar.debuggingBackground": "#907aa9",
+ "statusBar.debuggingForeground": "#faf4ed",
+ "statusBar.foreground": "#797593",
+ "statusBar.noFolderBackground": "#faf4ed",
+ "statusBar.noFolderForeground": "#797593",
+ "statusBarItem.activeBackground": "#6e6a8626",
+ "statusBarItem.hoverBackground": "#6e6a8614",
+ "statusBarItem.prominentBackground": "#f2e9e1",
+ "statusBarItem.prominentForeground": "#575279",
+ "statusBarItem.prominentHoverBackground": "#6e6a8614",
+ "statusBarItem.remoteBackground": "#faf4ed",
+ "statusBarItem.remoteForeground": "#ea9d34",
+ "statusBarItem.errorBackground": "#faf4ed",
+ "statusBarItem.errorForeground": "#b4637a",
+ "symbolIcon.arrayForeground": "#797593",
+ "symbolIcon.classForeground": "#797593",
+ "symbolIcon.colorForeground": "#797593",
+ "symbolIcon.constantForeground": "#797593",
+ "symbolIcon.constructorForeground": "#797593",
+ "symbolIcon.enumeratorForeground": "#797593",
+ "symbolIcon.enumeratorMemberForeground": "#797593",
+ "symbolIcon.eventForeground": "#797593",
+ "symbolIcon.fieldForeground": "#797593",
+ "symbolIcon.fileForeground": "#797593",
+ "symbolIcon.folderForeground": "#797593",
+ "symbolIcon.functionForeground": "#797593",
+ "symbolIcon.interfaceForeground": "#797593",
+ "symbolIcon.keyForeground": "#797593",
+ "symbolIcon.keywordForeground": "#797593",
+ "symbolIcon.methodForeground": "#797593",
+ "symbolIcon.moduleForeground": "#797593",
+ "symbolIcon.namespaceForeground": "#797593",
+ "symbolIcon.nullForeground": "#797593",
+ "symbolIcon.numberForeground": "#797593",
+ "symbolIcon.objectForeground": "#797593",
+ "symbolIcon.operatorForeground": "#797593",
+ "symbolIcon.packageForeground": "#797593",
+ "symbolIcon.propertyForeground": "#797593",
+ "symbolIcon.referenceForeground": "#797593",
+ "symbolIcon.snippetForeground": "#797593",
+ "symbolIcon.stringForeground": "#797593",
+ "symbolIcon.structForeground": "#797593",
+ "symbolIcon.textForeground": "#797593",
+ "symbolIcon.typeParameterForeground": "#797593",
+ "symbolIcon.unitForeground": "#797593",
+ "symbolIcon.variableForeground": "#797593",
+ "tab.activeBackground": "#6e6a860d",
+ "tab.activeForeground": "#575279",
+ "tab.activeModifiedBorder": "#56949f",
+ "tab.border": "#0000",
+ "tab.hoverBackground": "#6e6a8614",
+ "tab.inactiveBackground": "#0000",
+ "tab.inactiveForeground": "#797593",
+ "tab.inactiveModifiedBorder": "#56949f80",
+ "tab.lastPinnedBorder": "#9893a5",
+ "tab.unfocusedActiveBackground": "#0000",
+ "tab.unfocusedHoverBackground": "#0000",
+ "tab.unfocusedInactiveBackground": "#0000",
+ "tab.unfocusedInactiveModifiedBorder": "#56949f80",
+ "terminal.ansiBlack": "#f2e9e1",
+ "terminal.ansiBlue": "#56949f",
+ "terminal.ansiBrightBlack": "#797593",
+ "terminal.ansiBrightBlue": "#56949f",
+ "terminal.ansiBrightCyan": "#d7827e",
+ "terminal.ansiBrightGreen": "#286983",
+ "terminal.ansiBrightMagenta": "#907aa9",
+ "terminal.ansiBrightRed": "#b4637a",
+ "terminal.ansiBrightWhite": "#575279",
+ "terminal.ansiBrightYellow": "#ea9d34",
+ "terminal.ansiCyan": "#d7827e",
+ "terminal.ansiGreen": "#286983",
+ "terminal.ansiMagenta": "#907aa9",
+ "terminal.ansiRed": "#b4637a",
+ "terminal.ansiWhite": "#575279",
+ "terminal.ansiYellow": "#ea9d34",
+ "terminal.dropBackground": "#6e6a8614",
+ "terminal.foreground": "#575279",
+ "terminal.selectionBackground": "#6e6a8614",
+ "terminal.tab.activeBorder": "#575279",
+ "terminalCursor.background": "#575279",
+ "terminalCursor.foreground": "#9893a5",
+ "textBlockQuote.background": "#fffaf3",
+ "textBlockQuote.border": "#6e6a8614",
+ "textCodeBlock.background": "#fffaf3",
+ "textLink.activeForeground": "#907aa9e6",
+ "textLink.foreground": "#907aa9",
+ "textPreformat.foreground": "#ea9d34",
+ "textSeparator.foreground": "#797593",
+ "titleBar.activeBackground": "#faf4ed",
+ "titleBar.activeForeground": "#797593",
+ "titleBar.inactiveBackground": "#fffaf3",
+ "titleBar.inactiveForeground": "#797593",
+ "toolbar.activeBackground": "#6e6a8626",
+ "toolbar.hoverBackground": "#6e6a8614",
+ "tree.indentGuidesStroke": "#797593",
+ "walkThrough.embeddedEditorBackground": "#faf4ed",
+ "welcomePage.background": "#faf4ed",
+ "welcomePage.buttonBackground": "#fffaf3",
+ "welcomePage.buttonHoverBackground": "#f2e9e1",
+ "widget.shadow": "#fffaf34d",
+ "window.activeBorder": "#fffaf3",
+ "window.inactiveBorder": "#fffaf3"
+ },
+ "tokenColors": [
+ {
+ "scope": ["comment"],
+ "settings": {
+ "foreground": "#9893a5",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["constant"],
+ "settings": {
+ "foreground": "#286983"
+ }
+ },
+ {
+ "scope": ["constant.numeric", "constant.language"],
+ "settings": {
+ "foreground": "#d7827e"
+ }
+ },
+ {
+ "scope": ["entity.name"],
+ "settings": {
+ "foreground": "#d7827e"
+ }
+ },
+ {
+ "scope": [
+ "entity.name.section",
+ "entity.name.tag",
+ "entity.name.namespace",
+ "entity.name.type"
+ ],
+ "settings": {
+ "foreground": "#56949f"
+ }
+ },
+ {
+ "scope": ["entity.other.attribute-name", "entity.other.inherited-class"],
+ "settings": {
+ "foreground": "#907aa9",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["invalid"],
+ "settings": {
+ "foreground": "#b4637a"
+ }
+ },
+ {
+ "scope": ["invalid.deprecated"],
+ "settings": {
+ "foreground": "#797593"
+ }
+ },
+ {
+ "scope": ["keyword"],
+ "settings": {
+ "foreground": "#286983"
+ }
+ },
+ {
+ "scope": ["markup.inserted.diff"],
+ "settings": {
+ "foreground": "#56949f"
+ }
+ },
+ {
+ "scope": ["markup.deleted.diff"],
+ "settings": {
+ "foreground": "#b4637a"
+ }
+ },
+ {
+ "scope": "markup.heading",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "markup.bold.markdown",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "markup.italic.markdown",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["meta.diff.range"],
+ "settings": {
+ "foreground": "#907aa9"
+ }
+ },
+ {
+ "scope": ["meta.tag", "meta.brace"],
+ "settings": {
+ "foreground": "#575279"
+ }
+ },
+ {
+ "scope": ["meta.import", "meta.export"],
+ "settings": {
+ "foreground": "#286983"
+ }
+ },
+ {
+ "scope": "meta.directive.vue",
+ "settings": {
+ "foreground": "#907aa9",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "meta.property-name.css",
+ "settings": {
+ "foreground": "#56949f"
+ }
+ },
+ {
+ "scope": "meta.property-value.css",
+ "settings": {
+ "foreground": "#ea9d34"
+ }
+ },
+ {
+ "scope": "meta.tag.other.html",
+ "settings": {
+ "foreground": "#797593"
+ }
+ },
+ {
+ "scope": ["punctuation"],
+ "settings": {
+ "foreground": "#797593"
+ }
+ },
+ {
+ "scope": ["punctuation.accessor"],
+ "settings": {
+ "foreground": "#286983"
+ }
+ },
+ {
+ "scope": ["punctuation.definition.string"],
+ "settings": {
+ "foreground": "#ea9d34"
+ }
+ },
+ {
+ "scope": ["punctuation.definition.tag"],
+ "settings": {
+ "foreground": "#9893a5"
+ }
+ },
+ {
+ "scope": ["storage.type", "storage.modifier"],
+ "settings": {
+ "foreground": "#286983"
+ }
+ },
+ {
+ "scope": ["string"],
+ "settings": {
+ "foreground": "#ea9d34"
+ }
+ },
+ {
+ "scope": ["support"],
+ "settings": {
+ "foreground": "#56949f"
+ }
+ },
+ {
+ "scope": ["support.constant"],
+ "settings": {
+ "foreground": "#ea9d34"
+ }
+ },
+ {
+ "scope": ["support.function"],
+ "settings": {
+ "foreground": "#b4637a",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["variable"],
+ "settings": {
+ "foreground": "#d7827e",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["variable.other", "variable.language", "variable.function", "variable.argument"],
+ "settings": {
+ "foreground": "#575279"
+ }
+ },
+ {
+ "scope": ["variable.parameter"],
+ "settings": {
+ "foreground": "#907aa9"
+ }
+ }
+ ]
+}
diff --git a/node_modules/shiki/themes/rose-pine-moon.json b/node_modules/shiki/themes/rose-pine-moon.json
new file mode 100644
index 0000000..0a7667a
--- /dev/null
+++ b/node_modules/shiki/themes/rose-pine-moon.json
@@ -0,0 +1,675 @@
+{
+ "name": "rose-pine-moon",
+ "type": "dark",
+ "colors": {
+ "activityBar.activeBorder": "#e0def4",
+ "activityBar.background": "#232136",
+ "activityBar.dropBorder": "#393552",
+ "activityBar.foreground": "#e0def4",
+ "activityBar.inactiveForeground": "#908caa",
+ "activityBarBadge.background": "#ea9a97",
+ "activityBarBadge.foreground": "#232136",
+ "badge.background": "#ea9a97",
+ "badge.foreground": "#232136",
+ "banner.background": "#2a273f",
+ "banner.foreground": "#e0def4",
+ "banner.iconForeground": "#908caa",
+ "breadcrumb.activeSelectionForeground": "#ea9a97",
+ "breadcrumb.background": "#232136",
+ "breadcrumb.focusForeground": "#908caa",
+ "breadcrumb.foreground": "#6e6a86",
+ "breadcrumbPicker.background": "#2a273f",
+ "button.background": "#ea9a97",
+ "button.foreground": "#232136",
+ "button.hoverBackground": "#ea9a97e6",
+ "button.secondaryBackground": "#2a273f",
+ "button.secondaryForeground": "#e0def4",
+ "button.secondaryHoverBackground": "#393552",
+ "charts.blue": "#9ccfd8",
+ "charts.foreground": "#e0def4",
+ "charts.green": "#3e8fb0",
+ "charts.lines": "#908caa",
+ "charts.orange": "#ea9a97",
+ "charts.purple": "#c4a7e7",
+ "charts.red": "#eb6f92",
+ "charts.yellow": "#f6c177",
+ "checkbox.background": "#2a273f",
+ "checkbox.border": "#817c9c26",
+ "checkbox.foreground": "#e0def4",
+ "debugExceptionWidget.background": "#2a273f",
+ "debugExceptionWidget.border": "#817c9c26",
+ "debugIcon.breakpointCurrentStackframeForeground": "#908caa",
+ "debugIcon.breakpointDisabledForeground": "#908caa",
+ "debugIcon.breakpointForeground": "#908caa",
+ "debugIcon.breakpointStackframeForeground": "#908caa",
+ "debugIcon.breakpointUnverifiedForeground": "#908caa",
+ "debugIcon.continueForeground": "#908caa",
+ "debugIcon.disconnectForeground": "#908caa",
+ "debugIcon.pauseForeground": "#908caa",
+ "debugIcon.restartForeground": "#908caa",
+ "debugIcon.startForeground": "#908caa",
+ "debugIcon.stepBackForeground": "#908caa",
+ "debugIcon.stepIntoForeground": "#908caa",
+ "debugIcon.stepOutForeground": "#908caa",
+ "debugIcon.stepOverForeground": "#908caa",
+ "debugIcon.stopForeground": "#eb6f92",
+ "debugToolBar.background": "#2a273f",
+ "debugToolBar.border": "#393552",
+ "descriptionForeground": "#908caa",
+ "diffEditor.border": "#393552",
+ "diffEditor.diagonalFill": "#817c9c4d",
+ "diffEditor.insertedLineBackground": "#9ccfd826",
+ "diffEditor.insertedTextBackground": "#9ccfd826",
+ "diffEditor.removedLineBackground": "#eb6f9226",
+ "diffEditor.removedTextBackground": "#eb6f9226",
+ "diffEditorOverview.insertedForeground": "#9ccfd880",
+ "diffEditorOverview.removedForeground": "#eb6f9280",
+ "dropdown.background": "#2a273f",
+ "dropdown.border": "#817c9c26",
+ "dropdown.foreground": "#e0def4",
+ "dropdown.listBackground": "#2a273f",
+ "editor.background": "#232136",
+ "editor.findMatchBackground": "#817c9c4d",
+ "editor.findMatchHighlightBackground": "#817c9c4d",
+ "editor.findRangeHighlightBackground": "#817c9c4d",
+ "editor.findRangeHighlightBorder": "#0000",
+ "editor.focusedStackFrameHighlightBackground": "#817c9c26",
+ "editor.foldBackground": "#2a273f",
+ "editor.foreground": "#e0def4",
+ "editor.hoverHighlightBackground": "#0000",
+ "editor.inactiveSelectionBackground": "#817c9c14",
+ "editor.inlineValuesBackground": "#0000",
+ "editor.inlineValuesForeground": "#908caa",
+ "editor.lineHighlightBackground": "#817c9c14",
+ "editor.lineHighlightBorder": "#0000",
+ "editor.linkedEditingBackground": "#2a273f",
+ "editor.rangeHighlightBackground": "#817c9c14",
+ "editor.selectionBackground": "#817c9c26",
+ "editor.selectionForeground": "#e0def4",
+ "editor.selectionHighlightBackground": "#817c9c26",
+ "editor.selectionHighlightBorder": "#232136",
+ "editor.snippetFinalTabstopHighlightBackground": "#817c9c26",
+ "editor.snippetFinalTabstopHighlightBorder": "#2a273f",
+ "editor.snippetTabstopHighlightBackground": "#817c9c26",
+ "editor.snippetTabstopHighlightBorder": "#2a273f",
+ "editor.stackFrameHighlightBackground": "#817c9c26",
+ "editor.symbolHighlightBackground": "#817c9c26",
+ "editor.symbolHighlightBorder": "#0000",
+ "editor.wordHighlightBackground": "#817c9c26",
+ "editor.wordHighlightBorder": "#0000",
+ "editor.wordHighlightStrongBackground": "#817c9c26",
+ "editor.wordHighlightStrongBorder": "#817c9c26",
+ "editorBracketHighlight.foreground1": "#eb6f9280",
+ "editorBracketHighlight.foreground2": "#3e8fb080",
+ "editorBracketHighlight.foreground3": "#f6c17780",
+ "editorBracketHighlight.foreground4": "#9ccfd880",
+ "editorBracketHighlight.foreground5": "#ea9a9780",
+ "editorBracketHighlight.foreground6": "#c4a7e780",
+ "editorBracketMatch.background": "#0000",
+ "editorBracketMatch.border": "#908caa",
+ "editorBracketPairGuide.activeBackground1": "#3e8fb0",
+ "editorBracketPairGuide.activeBackground2": "#ea9a97",
+ "editorBracketPairGuide.activeBackground3": "#c4a7e7",
+ "editorBracketPairGuide.activeBackground4": "#9ccfd8",
+ "editorBracketPairGuide.activeBackground5": "#f6c177",
+ "editorBracketPairGuide.activeBackground6": "#eb6f92",
+ "editorBracketPairGuide.background1": "#3e8fb080",
+ "editorBracketPairGuide.background2": "#ea9a9780",
+ "editorBracketPairGuide.background3": "#c4a7e780",
+ "editorBracketPairGuide.background4": "#9ccfd880",
+ "editorBracketPairGuide.background5": "#f6c17780",
+ "editorBracketPairGuide.background6": "#eb6f9280",
+ "editorCodeLens.foreground": "#ea9a97",
+ "editorCursor.background": "#e0def4",
+ "editorCursor.foreground": "#6e6a86",
+ "editorError.border": "#0000",
+ "editorError.foreground": "#eb6f92",
+ "editorGhostText.foreground": "#908caa",
+ "editorGroup.border": "#0000",
+ "editorGroup.dropBackground": "#2a273f",
+ "editorGroup.emptyBackground": "#0000",
+ "editorGroup.focusedEmptyBorder": "#0000",
+ "editorGroupHeader.noTabsBackground": "#0000",
+ "editorGroupHeader.tabsBackground": "#0000",
+ "editorGroupHeader.tabsBorder": "#0000",
+ "editorGutter.addedBackground": "#9ccfd8",
+ "editorGutter.background": "#232136",
+ "editorGutter.commentRangeForeground": "#908caa",
+ "editorGutter.deletedBackground": "#eb6f92",
+ "editorGutter.foldingControlForeground": "#c4a7e7",
+ "editorGutter.modifiedBackground": "#ea9a97",
+ "editorHint.border": "#0000",
+ "editorHint.foreground": "#908caa",
+ "editorHoverWidget.background": "#2a273f",
+ "editorHoverWidget.border": "#6e6a8680",
+ "editorHoverWidget.foreground": "#908caa",
+ "editorHoverWidget.highlightForeground": "#e0def4",
+ "editorHoverWidget.statusBarBackground": "#0000",
+ "editorIndentGuide.activeBackground": "#6e6a86",
+ "editorIndentGuide.background": "#817c9c4d",
+ "editorInfo.border": "#393552",
+ "editorInfo.foreground": "#9ccfd8",
+ "editorInlayHint.background": "#393552",
+ "editorInlayHint.foreground": "#908caa",
+ "editorInlayHint.parameterBackground": "#393552",
+ "editorInlayHint.parameterForeground": "#c4a7e7",
+ "editorInlayHint.typeBackground": "#393552",
+ "editorInlayHint.typeForeground": "#9ccfd8",
+ "editorLightBulb.foreground": "#3e8fb0",
+ "editorLightBulbAutoFix.foreground": "#ea9a97",
+ "editorLineNumber.activeForeground": "#e0def4",
+ "editorLineNumber.foreground": "#908caa",
+ "editorLink.activeForeground": "#ea9a97",
+ "editorMarkerNavigation.background": "#2a273f",
+ "editorMarkerNavigationError.background": "#2a273f",
+ "editorMarkerNavigationInfo.background": "#2a273f",
+ "editorMarkerNavigationWarning.background": "#2a273f",
+ "editorOverviewRuler.addedForeground": "#9ccfd880",
+ "editorOverviewRuler.background": "#232136",
+ "editorOverviewRuler.border": "#817c9c4d",
+ "editorOverviewRuler.bracketMatchForeground": "#908caa",
+ "editorOverviewRuler.commonContentForeground": "#817c9c14",
+ "editorOverviewRuler.currentContentForeground": "#817c9c26",
+ "editorOverviewRuler.deletedForeground": "#eb6f9280",
+ "editorOverviewRuler.errorForeground": "#eb6f9280",
+ "editorOverviewRuler.findMatchForeground": "#817c9c4d",
+ "editorOverviewRuler.incomingContentForeground": "#c4a7e780",
+ "editorOverviewRuler.infoForeground": "#9ccfd880",
+ "editorOverviewRuler.modifiedForeground": "#ea9a9780",
+ "editorOverviewRuler.rangeHighlightForeground": "#817c9c4d",
+ "editorOverviewRuler.selectionHighlightForeground": "#817c9c4d",
+ "editorOverviewRuler.warningForeground": "#f6c17780",
+ "editorOverviewRuler.wordHighlightForeground": "#817c9c26",
+ "editorOverviewRuler.wordHighlightStrongForeground": "#817c9c4d",
+ "editorPane.background": "#0000",
+ "editorRuler.foreground": "#817c9c4d",
+ "editorSuggestWidget.background": "#2a273f",
+ "editorSuggestWidget.border": "#0000",
+ "editorSuggestWidget.focusHighlightForeground": "#ea9a97",
+ "editorSuggestWidget.foreground": "#908caa",
+ "editorSuggestWidget.highlightForeground": "#ea9a97",
+ "editorSuggestWidget.selectedBackground": "#817c9c26",
+ "editorSuggestWidget.selectedForeground": "#e0def4",
+ "editorSuggestWidget.selectedIconForeground": "#e0def4",
+ "editorUnnecessaryCode.border": "#0000",
+ "editorUnnecessaryCode.opacity": "#e0def480",
+ "editorWarning.border": "#0000",
+ "editorWarning.foreground": "#f6c177",
+ "editorWhitespace.foreground": "#6e6a86",
+ "editorWidget.background": "#2a273f",
+ "editorWidget.border": "#393552",
+ "editorWidget.foreground": "#908caa",
+ "editorWidget.resizeBorder": "#6e6a86",
+ "errorForeground": "#eb6f92",
+ "extensionBadge.remoteBackground": "#c4a7e7",
+ "extensionBadge.remoteForeground": "#232136",
+ "extensionButton.prominentBackground": "#ea9a97",
+ "extensionButton.prominentForeground": "#232136",
+ "extensionButton.prominentHoverBackground": "#ea9a97e6",
+ "extensionIcon.preReleaseForeground": "#3e8fb0",
+ "extensionIcon.starForeground": "#ea9a97",
+ "extensionIcon.verifiedForeground": "#c4a7e7",
+ "focusBorder": "#817c9c26",
+ "foreground": "#e0def4",
+ "gitDecoration.addedResourceForeground": "#9ccfd8",
+ "gitDecoration.conflictingResourceForeground": "#eb6f92",
+ "gitDecoration.deletedResourceForeground": "#908caa",
+ "gitDecoration.ignoredResourceForeground": "#6e6a86",
+ "gitDecoration.modifiedResourceForeground": "#ea9a97",
+ "gitDecoration.renamedResourceForeground": "#3e8fb0",
+ "gitDecoration.stageDeletedResourceForeground": "#eb6f92",
+ "gitDecoration.stageModifiedResourceForeground": "#c4a7e7",
+ "gitDecoration.submoduleResourceForeground": "#f6c177",
+ "gitDecoration.untrackedResourceForeground": "#f6c177",
+ "icon.foreground": "#908caa",
+ "input.background": "#39355280",
+ "input.border": "#817c9c26",
+ "input.foreground": "#e0def4",
+ "input.placeholderForeground": "#908caa",
+ "inputOption.activeBackground": "#ea9a9726",
+ "inputOption.activeForeground": "#ea9a97",
+ "inputValidation.errorBackground": "#2a273f",
+ "inputValidation.errorBorder": "#817c9c4d",
+ "inputValidation.errorForeground": "#eb6f92",
+ "inputValidation.infoBackground": "#2a273f",
+ "inputValidation.infoBorder": "#817c9c4d",
+ "inputValidation.infoForeground": "#9ccfd8",
+ "inputValidation.warningBackground": "#2a273f",
+ "inputValidation.warningBorder": "#817c9c4d",
+ "inputValidation.warningForeground": "#9ccfd880",
+ "keybindingLabel.background": "#393552",
+ "keybindingLabel.border": "#817c9c4d",
+ "keybindingLabel.bottomBorder": "#817c9c4d",
+ "keybindingLabel.foreground": "#c4a7e7",
+ "keybindingTable.headerBackground": "#393552",
+ "keybindingTable.rowsBackground": "#2a273f",
+ "list.activeSelectionBackground": "#817c9c26",
+ "list.activeSelectionForeground": "#e0def4",
+ "list.deemphasizedForeground": "#908caa",
+ "list.dropBackground": "#2a273f",
+ "list.errorForeground": "#eb6f92",
+ "list.filterMatchBackground": "#2a273f",
+ "list.filterMatchBorder": "#ea9a97",
+ "list.focusBackground": "#817c9c4d",
+ "list.focusForeground": "#e0def4",
+ "list.focusOutline": "#817c9c26",
+ "list.highlightForeground": "#ea9a97",
+ "list.hoverBackground": "#817c9c14",
+ "list.hoverForeground": "#e0def4",
+ "list.inactiveFocusBackground": "#817c9c14",
+ "list.inactiveSelectionBackground": "#2a273f",
+ "list.inactiveSelectionForeground": "#e0def4",
+ "list.invalidItemForeground": "#eb6f92",
+ "list.warningForeground": "#f6c177",
+ "listFilterWidget.background": "#2a273f",
+ "listFilterWidget.noMatchesOutline": "#eb6f92",
+ "listFilterWidget.outline": "#393552",
+ "menu.background": "#2a273f",
+ "menu.border": "#817c9c14",
+ "menu.foreground": "#e0def4",
+ "menu.selectionBackground": "#817c9c26",
+ "menu.selectionBorder": "#393552",
+ "menu.selectionForeground": "#e0def4",
+ "menu.separatorBackground": "#817c9c4d",
+ "menubar.selectionBackground": "#817c9c26",
+ "menubar.selectionBorder": "#817c9c14",
+ "menubar.selectionForeground": "#e0def4",
+ "merge.border": "#393552",
+ "merge.commonContentBackground": "#817c9c26",
+ "merge.commonHeaderBackground": "#817c9c26",
+ "merge.currentContentBackground": "#f6c17780",
+ "merge.currentHeaderBackground": "#f6c17780",
+ "merge.incomingContentBackground": "#9ccfd880",
+ "merge.incomingHeaderBackground": "#9ccfd880",
+ "minimap.background": "#2a273f",
+ "minimap.errorHighlight": "#eb6f9280",
+ "minimap.findMatchHighlight": "#817c9c26",
+ "minimap.selectionHighlight": "#817c9c26",
+ "minimap.warningHighlight": "#f6c17780",
+ "minimapGutter.addedBackground": "#9ccfd8",
+ "minimapGutter.deletedBackground": "#eb6f92",
+ "minimapGutter.modifiedBackground": "#ea9a97",
+ "minimapSlider.activeBackground": "#817c9c4d",
+ "minimapSlider.background": "#817c9c26",
+ "minimapSlider.hoverBackground": "#817c9c26",
+ "notebook.cellBorderColor": "#9ccfd880",
+ "notebook.cellEditorBackground": "#2a273f",
+ "notebook.cellHoverBackground": "#39355280",
+ "notebook.focusedCellBackground": "#817c9c14",
+ "notebook.focusedCellBorder": "#9ccfd8",
+ "notebook.outputContainerBackgroundColor": "#817c9c14",
+ "notificationCenter.border": "#817c9c26",
+ "notificationCenterHeader.background": "#2a273f",
+ "notificationCenterHeader.foreground": "#908caa",
+ "notificationLink.foreground": "#c4a7e7",
+ "notifications.background": "#2a273f",
+ "notifications.border": "#817c9c26",
+ "notifications.foreground": "#e0def4",
+ "notificationsErrorIcon.foreground": "#eb6f92",
+ "notificationsInfoIcon.foreground": "#9ccfd8",
+ "notificationsWarningIcon.foreground": "#f6c177",
+ "notificationToast.border": "#817c9c26",
+ "panel.background": "#2a273f",
+ "panel.border": "#0000",
+ "panel.dropBorder": "#393552",
+ "panelInput.border": "#2a273f",
+ "panelSection.dropBackground": "#817c9c26",
+ "panelSectionHeader.background": "#2a273f",
+ "panelSectionHeader.foreground": "#e0def4",
+ "panelTitle.activeBorder": "#817c9c4d",
+ "panelTitle.activeForeground": "#e0def4",
+ "panelTitle.inactiveForeground": "#908caa",
+ "peekView.border": "#393552",
+ "peekViewEditor.background": "#2a273f",
+ "peekViewEditor.matchHighlightBackground": "#817c9c4d",
+ "peekViewResult.background": "#2a273f",
+ "peekViewResult.fileForeground": "#908caa",
+ "peekViewResult.lineForeground": "#908caa",
+ "peekViewResult.matchHighlightBackground": "#817c9c4d",
+ "peekViewResult.selectionBackground": "#817c9c26",
+ "peekViewResult.selectionForeground": "#e0def4",
+ "peekViewTitle.background": "#393552",
+ "peekViewTitleDescription.foreground": "#908caa",
+ "pickerGroup.border": "#817c9c4d",
+ "pickerGroup.foreground": "#c4a7e7",
+ "ports.iconRunningProcessForeground": "#ea9a97",
+ "problemsErrorIcon.foreground": "#eb6f92",
+ "problemsInfoIcon.foreground": "#9ccfd8",
+ "problemsWarningIcon.foreground": "#f6c177",
+ "progressBar.background": "#ea9a97",
+ "quickInput.background": "#2a273f",
+ "quickInput.foreground": "#908caa",
+ "quickInputList.focusBackground": "#817c9c26",
+ "quickInputList.focusForeground": "#e0def4",
+ "quickInputList.focusIconForeground": "#e0def4",
+ "scrollbar.shadow": "#2a273f4d",
+ "scrollbarSlider.activeBackground": "#3e8fb080",
+ "scrollbarSlider.background": "#817c9c26",
+ "scrollbarSlider.hoverBackground": "#817c9c4d",
+ "searchEditor.findMatchBackground": "#817c9c26",
+ "selection.background": "#817c9c4d",
+ "settings.focusedRowBackground": "#2a273f",
+ "settings.headerForeground": "#e0def4",
+ "settings.modifiedItemIndicator": "#ea9a97",
+ "settings.focusedRowBorder": "#817c9c26",
+ "settings.rowHoverBackground": "#2a273f",
+ "sideBar.background": "#232136",
+ "sideBar.dropBackground": "#2a273f",
+ "sideBar.foreground": "#908caa",
+ "sideBarSectionHeader.background": "#0000",
+ "sideBarSectionHeader.border": "#817c9c26",
+ "statusBar.background": "#232136",
+ "statusBar.debuggingBackground": "#c4a7e7",
+ "statusBar.debuggingForeground": "#232136",
+ "statusBar.foreground": "#908caa",
+ "statusBar.noFolderBackground": "#232136",
+ "statusBar.noFolderForeground": "#908caa",
+ "statusBarItem.activeBackground": "#817c9c4d",
+ "statusBarItem.hoverBackground": "#817c9c26",
+ "statusBarItem.prominentBackground": "#393552",
+ "statusBarItem.prominentForeground": "#e0def4",
+ "statusBarItem.prominentHoverBackground": "#817c9c26",
+ "statusBarItem.remoteBackground": "#232136",
+ "statusBarItem.remoteForeground": "#f6c177",
+ "statusBarItem.errorBackground": "#232136",
+ "statusBarItem.errorForeground": "#eb6f92",
+ "symbolIcon.arrayForeground": "#908caa",
+ "symbolIcon.classForeground": "#908caa",
+ "symbolIcon.colorForeground": "#908caa",
+ "symbolIcon.constantForeground": "#908caa",
+ "symbolIcon.constructorForeground": "#908caa",
+ "symbolIcon.enumeratorForeground": "#908caa",
+ "symbolIcon.enumeratorMemberForeground": "#908caa",
+ "symbolIcon.eventForeground": "#908caa",
+ "symbolIcon.fieldForeground": "#908caa",
+ "symbolIcon.fileForeground": "#908caa",
+ "symbolIcon.folderForeground": "#908caa",
+ "symbolIcon.functionForeground": "#908caa",
+ "symbolIcon.interfaceForeground": "#908caa",
+ "symbolIcon.keyForeground": "#908caa",
+ "symbolIcon.keywordForeground": "#908caa",
+ "symbolIcon.methodForeground": "#908caa",
+ "symbolIcon.moduleForeground": "#908caa",
+ "symbolIcon.namespaceForeground": "#908caa",
+ "symbolIcon.nullForeground": "#908caa",
+ "symbolIcon.numberForeground": "#908caa",
+ "symbolIcon.objectForeground": "#908caa",
+ "symbolIcon.operatorForeground": "#908caa",
+ "symbolIcon.packageForeground": "#908caa",
+ "symbolIcon.propertyForeground": "#908caa",
+ "symbolIcon.referenceForeground": "#908caa",
+ "symbolIcon.snippetForeground": "#908caa",
+ "symbolIcon.stringForeground": "#908caa",
+ "symbolIcon.structForeground": "#908caa",
+ "symbolIcon.textForeground": "#908caa",
+ "symbolIcon.typeParameterForeground": "#908caa",
+ "symbolIcon.unitForeground": "#908caa",
+ "symbolIcon.variableForeground": "#908caa",
+ "tab.activeBackground": "#817c9c14",
+ "tab.activeForeground": "#e0def4",
+ "tab.activeModifiedBorder": "#9ccfd8",
+ "tab.border": "#0000",
+ "tab.hoverBackground": "#817c9c26",
+ "tab.inactiveBackground": "#0000",
+ "tab.inactiveForeground": "#908caa",
+ "tab.inactiveModifiedBorder": "#9ccfd880",
+ "tab.lastPinnedBorder": "#6e6a86",
+ "tab.unfocusedActiveBackground": "#0000",
+ "tab.unfocusedHoverBackground": "#0000",
+ "tab.unfocusedInactiveBackground": "#0000",
+ "tab.unfocusedInactiveModifiedBorder": "#9ccfd880",
+ "terminal.ansiBlack": "#393552",
+ "terminal.ansiBlue": "#9ccfd8",
+ "terminal.ansiBrightBlack": "#908caa",
+ "terminal.ansiBrightBlue": "#9ccfd8",
+ "terminal.ansiBrightCyan": "#ea9a97",
+ "terminal.ansiBrightGreen": "#3e8fb0",
+ "terminal.ansiBrightMagenta": "#c4a7e7",
+ "terminal.ansiBrightRed": "#eb6f92",
+ "terminal.ansiBrightWhite": "#e0def4",
+ "terminal.ansiBrightYellow": "#f6c177",
+ "terminal.ansiCyan": "#ea9a97",
+ "terminal.ansiGreen": "#3e8fb0",
+ "terminal.ansiMagenta": "#c4a7e7",
+ "terminal.ansiRed": "#eb6f92",
+ "terminal.ansiWhite": "#e0def4",
+ "terminal.ansiYellow": "#f6c177",
+ "terminal.dropBackground": "#817c9c26",
+ "terminal.foreground": "#e0def4",
+ "terminal.selectionBackground": "#817c9c26",
+ "terminal.tab.activeBorder": "#e0def4",
+ "terminalCursor.background": "#e0def4",
+ "terminalCursor.foreground": "#6e6a86",
+ "textBlockQuote.background": "#2a273f",
+ "textBlockQuote.border": "#817c9c26",
+ "textCodeBlock.background": "#2a273f",
+ "textLink.activeForeground": "#c4a7e7e6",
+ "textLink.foreground": "#c4a7e7",
+ "textPreformat.foreground": "#f6c177",
+ "textSeparator.foreground": "#908caa",
+ "titleBar.activeBackground": "#232136",
+ "titleBar.activeForeground": "#908caa",
+ "titleBar.inactiveBackground": "#2a273f",
+ "titleBar.inactiveForeground": "#908caa",
+ "toolbar.activeBackground": "#817c9c4d",
+ "toolbar.hoverBackground": "#817c9c26",
+ "tree.indentGuidesStroke": "#908caa",
+ "walkThrough.embeddedEditorBackground": "#232136",
+ "welcomePage.background": "#232136",
+ "welcomePage.buttonBackground": "#2a273f",
+ "welcomePage.buttonHoverBackground": "#393552",
+ "widget.shadow": "#2a273f4d",
+ "window.activeBorder": "#2a273f",
+ "window.inactiveBorder": "#2a273f"
+ },
+ "tokenColors": [
+ {
+ "scope": ["comment"],
+ "settings": {
+ "foreground": "#6e6a86",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["constant"],
+ "settings": {
+ "foreground": "#3e8fb0"
+ }
+ },
+ {
+ "scope": ["constant.numeric", "constant.language"],
+ "settings": {
+ "foreground": "#ea9a97"
+ }
+ },
+ {
+ "scope": ["entity.name"],
+ "settings": {
+ "foreground": "#ea9a97"
+ }
+ },
+ {
+ "scope": [
+ "entity.name.section",
+ "entity.name.tag",
+ "entity.name.namespace",
+ "entity.name.type"
+ ],
+ "settings": {
+ "foreground": "#9ccfd8"
+ }
+ },
+ {
+ "scope": ["entity.other.attribute-name", "entity.other.inherited-class"],
+ "settings": {
+ "foreground": "#c4a7e7",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["invalid"],
+ "settings": {
+ "foreground": "#eb6f92"
+ }
+ },
+ {
+ "scope": ["invalid.deprecated"],
+ "settings": {
+ "foreground": "#908caa"
+ }
+ },
+ {
+ "scope": ["keyword"],
+ "settings": {
+ "foreground": "#3e8fb0"
+ }
+ },
+ {
+ "scope": ["markup.inserted.diff"],
+ "settings": {
+ "foreground": "#9ccfd8"
+ }
+ },
+ {
+ "scope": ["markup.deleted.diff"],
+ "settings": {
+ "foreground": "#eb6f92"
+ }
+ },
+ {
+ "scope": "markup.heading",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "markup.bold.markdown",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "markup.italic.markdown",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["meta.diff.range"],
+ "settings": {
+ "foreground": "#c4a7e7"
+ }
+ },
+ {
+ "scope": ["meta.tag", "meta.brace"],
+ "settings": {
+ "foreground": "#e0def4"
+ }
+ },
+ {
+ "scope": ["meta.import", "meta.export"],
+ "settings": {
+ "foreground": "#3e8fb0"
+ }
+ },
+ {
+ "scope": "meta.directive.vue",
+ "settings": {
+ "foreground": "#c4a7e7",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "meta.property-name.css",
+ "settings": {
+ "foreground": "#9ccfd8"
+ }
+ },
+ {
+ "scope": "meta.property-value.css",
+ "settings": {
+ "foreground": "#f6c177"
+ }
+ },
+ {
+ "scope": "meta.tag.other.html",
+ "settings": {
+ "foreground": "#908caa"
+ }
+ },
+ {
+ "scope": ["punctuation"],
+ "settings": {
+ "foreground": "#908caa"
+ }
+ },
+ {
+ "scope": ["punctuation.accessor"],
+ "settings": {
+ "foreground": "#3e8fb0"
+ }
+ },
+ {
+ "scope": ["punctuation.definition.string"],
+ "settings": {
+ "foreground": "#f6c177"
+ }
+ },
+ {
+ "scope": ["punctuation.definition.tag"],
+ "settings": {
+ "foreground": "#6e6a86"
+ }
+ },
+ {
+ "scope": ["storage.type", "storage.modifier"],
+ "settings": {
+ "foreground": "#3e8fb0"
+ }
+ },
+ {
+ "scope": ["string"],
+ "settings": {
+ "foreground": "#f6c177"
+ }
+ },
+ {
+ "scope": ["support"],
+ "settings": {
+ "foreground": "#9ccfd8"
+ }
+ },
+ {
+ "scope": ["support.constant"],
+ "settings": {
+ "foreground": "#f6c177"
+ }
+ },
+ {
+ "scope": ["support.function"],
+ "settings": {
+ "foreground": "#eb6f92",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["variable"],
+ "settings": {
+ "foreground": "#ea9a97",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["variable.other", "variable.language", "variable.function", "variable.argument"],
+ "settings": {
+ "foreground": "#e0def4"
+ }
+ },
+ {
+ "scope": ["variable.parameter"],
+ "settings": {
+ "foreground": "#c4a7e7"
+ }
+ }
+ ]
+}
diff --git a/node_modules/shiki/themes/rose-pine.json b/node_modules/shiki/themes/rose-pine.json
new file mode 100644
index 0000000..1124a07
--- /dev/null
+++ b/node_modules/shiki/themes/rose-pine.json
@@ -0,0 +1,675 @@
+{
+ "name": "rose-pine",
+ "type": "dark",
+ "colors": {
+ "activityBar.activeBorder": "#e0def4",
+ "activityBar.background": "#191724",
+ "activityBar.dropBorder": "#26233a",
+ "activityBar.foreground": "#e0def4",
+ "activityBar.inactiveForeground": "#908caa",
+ "activityBarBadge.background": "#ebbcba",
+ "activityBarBadge.foreground": "#191724",
+ "badge.background": "#ebbcba",
+ "badge.foreground": "#191724",
+ "banner.background": "#1f1d2e",
+ "banner.foreground": "#e0def4",
+ "banner.iconForeground": "#908caa",
+ "breadcrumb.activeSelectionForeground": "#ebbcba",
+ "breadcrumb.background": "#191724",
+ "breadcrumb.focusForeground": "#908caa",
+ "breadcrumb.foreground": "#6e6a86",
+ "breadcrumbPicker.background": "#1f1d2e",
+ "button.background": "#ebbcba",
+ "button.foreground": "#191724",
+ "button.hoverBackground": "#ebbcbae6",
+ "button.secondaryBackground": "#1f1d2e",
+ "button.secondaryForeground": "#e0def4",
+ "button.secondaryHoverBackground": "#26233a",
+ "charts.blue": "#9ccfd8",
+ "charts.foreground": "#e0def4",
+ "charts.green": "#31748f",
+ "charts.lines": "#908caa",
+ "charts.orange": "#ebbcba",
+ "charts.purple": "#c4a7e7",
+ "charts.red": "#eb6f92",
+ "charts.yellow": "#f6c177",
+ "checkbox.background": "#1f1d2e",
+ "checkbox.border": "#6e6a8633",
+ "checkbox.foreground": "#e0def4",
+ "debugExceptionWidget.background": "#1f1d2e",
+ "debugExceptionWidget.border": "#6e6a8633",
+ "debugIcon.breakpointCurrentStackframeForeground": "#908caa",
+ "debugIcon.breakpointDisabledForeground": "#908caa",
+ "debugIcon.breakpointForeground": "#908caa",
+ "debugIcon.breakpointStackframeForeground": "#908caa",
+ "debugIcon.breakpointUnverifiedForeground": "#908caa",
+ "debugIcon.continueForeground": "#908caa",
+ "debugIcon.disconnectForeground": "#908caa",
+ "debugIcon.pauseForeground": "#908caa",
+ "debugIcon.restartForeground": "#908caa",
+ "debugIcon.startForeground": "#908caa",
+ "debugIcon.stepBackForeground": "#908caa",
+ "debugIcon.stepIntoForeground": "#908caa",
+ "debugIcon.stepOutForeground": "#908caa",
+ "debugIcon.stepOverForeground": "#908caa",
+ "debugIcon.stopForeground": "#eb6f92",
+ "debugToolBar.background": "#1f1d2e",
+ "debugToolBar.border": "#26233a",
+ "descriptionForeground": "#908caa",
+ "diffEditor.border": "#26233a",
+ "diffEditor.diagonalFill": "#6e6a8666",
+ "diffEditor.insertedLineBackground": "#9ccfd826",
+ "diffEditor.insertedTextBackground": "#9ccfd826",
+ "diffEditor.removedLineBackground": "#eb6f9226",
+ "diffEditor.removedTextBackground": "#eb6f9226",
+ "diffEditorOverview.insertedForeground": "#9ccfd880",
+ "diffEditorOverview.removedForeground": "#eb6f9280",
+ "dropdown.background": "#1f1d2e",
+ "dropdown.border": "#6e6a8633",
+ "dropdown.foreground": "#e0def4",
+ "dropdown.listBackground": "#1f1d2e",
+ "editor.background": "#191724",
+ "editor.findMatchBackground": "#6e6a8666",
+ "editor.findMatchHighlightBackground": "#6e6a8666",
+ "editor.findRangeHighlightBackground": "#6e6a8666",
+ "editor.findRangeHighlightBorder": "#0000",
+ "editor.focusedStackFrameHighlightBackground": "#6e6a8633",
+ "editor.foldBackground": "#1f1d2e",
+ "editor.foreground": "#e0def4",
+ "editor.hoverHighlightBackground": "#0000",
+ "editor.inactiveSelectionBackground": "#6e6a861a",
+ "editor.inlineValuesBackground": "#0000",
+ "editor.inlineValuesForeground": "#908caa",
+ "editor.lineHighlightBackground": "#6e6a861a",
+ "editor.lineHighlightBorder": "#0000",
+ "editor.linkedEditingBackground": "#1f1d2e",
+ "editor.rangeHighlightBackground": "#6e6a861a",
+ "editor.selectionBackground": "#6e6a8633",
+ "editor.selectionForeground": "#e0def4",
+ "editor.selectionHighlightBackground": "#6e6a8633",
+ "editor.selectionHighlightBorder": "#191724",
+ "editor.snippetFinalTabstopHighlightBackground": "#6e6a8633",
+ "editor.snippetFinalTabstopHighlightBorder": "#1f1d2e",
+ "editor.snippetTabstopHighlightBackground": "#6e6a8633",
+ "editor.snippetTabstopHighlightBorder": "#1f1d2e",
+ "editor.stackFrameHighlightBackground": "#6e6a8633",
+ "editor.symbolHighlightBackground": "#6e6a8633",
+ "editor.symbolHighlightBorder": "#0000",
+ "editor.wordHighlightBackground": "#6e6a8633",
+ "editor.wordHighlightBorder": "#0000",
+ "editor.wordHighlightStrongBackground": "#6e6a8633",
+ "editor.wordHighlightStrongBorder": "#6e6a8633",
+ "editorBracketHighlight.foreground1": "#eb6f9280",
+ "editorBracketHighlight.foreground2": "#31748f80",
+ "editorBracketHighlight.foreground3": "#f6c17780",
+ "editorBracketHighlight.foreground4": "#9ccfd880",
+ "editorBracketHighlight.foreground5": "#ebbcba80",
+ "editorBracketHighlight.foreground6": "#c4a7e780",
+ "editorBracketMatch.background": "#0000",
+ "editorBracketMatch.border": "#908caa",
+ "editorBracketPairGuide.activeBackground1": "#31748f",
+ "editorBracketPairGuide.activeBackground2": "#ebbcba",
+ "editorBracketPairGuide.activeBackground3": "#c4a7e7",
+ "editorBracketPairGuide.activeBackground4": "#9ccfd8",
+ "editorBracketPairGuide.activeBackground5": "#f6c177",
+ "editorBracketPairGuide.activeBackground6": "#eb6f92",
+ "editorBracketPairGuide.background1": "#31748f80",
+ "editorBracketPairGuide.background2": "#ebbcba80",
+ "editorBracketPairGuide.background3": "#c4a7e780",
+ "editorBracketPairGuide.background4": "#9ccfd880",
+ "editorBracketPairGuide.background5": "#f6c17780",
+ "editorBracketPairGuide.background6": "#eb6f9280",
+ "editorCodeLens.foreground": "#ebbcba",
+ "editorCursor.background": "#e0def4",
+ "editorCursor.foreground": "#6e6a86",
+ "editorError.border": "#0000",
+ "editorError.foreground": "#eb6f92",
+ "editorGhostText.foreground": "#908caa",
+ "editorGroup.border": "#0000",
+ "editorGroup.dropBackground": "#1f1d2e",
+ "editorGroup.emptyBackground": "#0000",
+ "editorGroup.focusedEmptyBorder": "#0000",
+ "editorGroupHeader.noTabsBackground": "#0000",
+ "editorGroupHeader.tabsBackground": "#0000",
+ "editorGroupHeader.tabsBorder": "#0000",
+ "editorGutter.addedBackground": "#9ccfd8",
+ "editorGutter.background": "#191724",
+ "editorGutter.commentRangeForeground": "#908caa",
+ "editorGutter.deletedBackground": "#eb6f92",
+ "editorGutter.foldingControlForeground": "#c4a7e7",
+ "editorGutter.modifiedBackground": "#ebbcba",
+ "editorHint.border": "#0000",
+ "editorHint.foreground": "#908caa",
+ "editorHoverWidget.background": "#1f1d2e",
+ "editorHoverWidget.border": "#6e6a8680",
+ "editorHoverWidget.foreground": "#908caa",
+ "editorHoverWidget.highlightForeground": "#e0def4",
+ "editorHoverWidget.statusBarBackground": "#0000",
+ "editorIndentGuide.activeBackground": "#6e6a86",
+ "editorIndentGuide.background": "#6e6a8666",
+ "editorInfo.border": "#26233a",
+ "editorInfo.foreground": "#9ccfd8",
+ "editorInlayHint.background": "#26233a",
+ "editorInlayHint.foreground": "#908caa",
+ "editorInlayHint.parameterBackground": "#26233a",
+ "editorInlayHint.parameterForeground": "#c4a7e7",
+ "editorInlayHint.typeBackground": "#26233a",
+ "editorInlayHint.typeForeground": "#9ccfd8",
+ "editorLightBulb.foreground": "#31748f",
+ "editorLightBulbAutoFix.foreground": "#ebbcba",
+ "editorLineNumber.activeForeground": "#e0def4",
+ "editorLineNumber.foreground": "#908caa",
+ "editorLink.activeForeground": "#ebbcba",
+ "editorMarkerNavigation.background": "#1f1d2e",
+ "editorMarkerNavigationError.background": "#1f1d2e",
+ "editorMarkerNavigationInfo.background": "#1f1d2e",
+ "editorMarkerNavigationWarning.background": "#1f1d2e",
+ "editorOverviewRuler.addedForeground": "#9ccfd880",
+ "editorOverviewRuler.background": "#191724",
+ "editorOverviewRuler.border": "#6e6a8666",
+ "editorOverviewRuler.bracketMatchForeground": "#908caa",
+ "editorOverviewRuler.commonContentForeground": "#6e6a861a",
+ "editorOverviewRuler.currentContentForeground": "#6e6a8633",
+ "editorOverviewRuler.deletedForeground": "#eb6f9280",
+ "editorOverviewRuler.errorForeground": "#eb6f9280",
+ "editorOverviewRuler.findMatchForeground": "#6e6a8666",
+ "editorOverviewRuler.incomingContentForeground": "#c4a7e780",
+ "editorOverviewRuler.infoForeground": "#9ccfd880",
+ "editorOverviewRuler.modifiedForeground": "#ebbcba80",
+ "editorOverviewRuler.rangeHighlightForeground": "#6e6a8666",
+ "editorOverviewRuler.selectionHighlightForeground": "#6e6a8666",
+ "editorOverviewRuler.warningForeground": "#f6c17780",
+ "editorOverviewRuler.wordHighlightForeground": "#6e6a8633",
+ "editorOverviewRuler.wordHighlightStrongForeground": "#6e6a8666",
+ "editorPane.background": "#0000",
+ "editorRuler.foreground": "#6e6a8666",
+ "editorSuggestWidget.background": "#1f1d2e",
+ "editorSuggestWidget.border": "#0000",
+ "editorSuggestWidget.focusHighlightForeground": "#ebbcba",
+ "editorSuggestWidget.foreground": "#908caa",
+ "editorSuggestWidget.highlightForeground": "#ebbcba",
+ "editorSuggestWidget.selectedBackground": "#6e6a8633",
+ "editorSuggestWidget.selectedForeground": "#e0def4",
+ "editorSuggestWidget.selectedIconForeground": "#e0def4",
+ "editorUnnecessaryCode.border": "#0000",
+ "editorUnnecessaryCode.opacity": "#e0def480",
+ "editorWarning.border": "#0000",
+ "editorWarning.foreground": "#f6c177",
+ "editorWhitespace.foreground": "#6e6a86",
+ "editorWidget.background": "#1f1d2e",
+ "editorWidget.border": "#26233a",
+ "editorWidget.foreground": "#908caa",
+ "editorWidget.resizeBorder": "#6e6a86",
+ "errorForeground": "#eb6f92",
+ "extensionBadge.remoteBackground": "#c4a7e7",
+ "extensionBadge.remoteForeground": "#191724",
+ "extensionButton.prominentBackground": "#ebbcba",
+ "extensionButton.prominentForeground": "#191724",
+ "extensionButton.prominentHoverBackground": "#ebbcbae6",
+ "extensionIcon.preReleaseForeground": "#31748f",
+ "extensionIcon.starForeground": "#ebbcba",
+ "extensionIcon.verifiedForeground": "#c4a7e7",
+ "focusBorder": "#6e6a8633",
+ "foreground": "#e0def4",
+ "gitDecoration.addedResourceForeground": "#9ccfd8",
+ "gitDecoration.conflictingResourceForeground": "#eb6f92",
+ "gitDecoration.deletedResourceForeground": "#908caa",
+ "gitDecoration.ignoredResourceForeground": "#6e6a86",
+ "gitDecoration.modifiedResourceForeground": "#ebbcba",
+ "gitDecoration.renamedResourceForeground": "#31748f",
+ "gitDecoration.stageDeletedResourceForeground": "#eb6f92",
+ "gitDecoration.stageModifiedResourceForeground": "#c4a7e7",
+ "gitDecoration.submoduleResourceForeground": "#f6c177",
+ "gitDecoration.untrackedResourceForeground": "#f6c177",
+ "icon.foreground": "#908caa",
+ "input.background": "#26233a80",
+ "input.border": "#6e6a8633",
+ "input.foreground": "#e0def4",
+ "input.placeholderForeground": "#908caa",
+ "inputOption.activeBackground": "#ebbcba26",
+ "inputOption.activeForeground": "#ebbcba",
+ "inputValidation.errorBackground": "#1f1d2e",
+ "inputValidation.errorBorder": "#6e6a8666",
+ "inputValidation.errorForeground": "#eb6f92",
+ "inputValidation.infoBackground": "#1f1d2e",
+ "inputValidation.infoBorder": "#6e6a8666",
+ "inputValidation.infoForeground": "#9ccfd8",
+ "inputValidation.warningBackground": "#1f1d2e",
+ "inputValidation.warningBorder": "#6e6a8666",
+ "inputValidation.warningForeground": "#9ccfd880",
+ "keybindingLabel.background": "#26233a",
+ "keybindingLabel.border": "#6e6a8666",
+ "keybindingLabel.bottomBorder": "#6e6a8666",
+ "keybindingLabel.foreground": "#c4a7e7",
+ "keybindingTable.headerBackground": "#26233a",
+ "keybindingTable.rowsBackground": "#1f1d2e",
+ "list.activeSelectionBackground": "#6e6a8633",
+ "list.activeSelectionForeground": "#e0def4",
+ "list.deemphasizedForeground": "#908caa",
+ "list.dropBackground": "#1f1d2e",
+ "list.errorForeground": "#eb6f92",
+ "list.filterMatchBackground": "#1f1d2e",
+ "list.filterMatchBorder": "#ebbcba",
+ "list.focusBackground": "#6e6a8666",
+ "list.focusForeground": "#e0def4",
+ "list.focusOutline": "#6e6a8633",
+ "list.highlightForeground": "#ebbcba",
+ "list.hoverBackground": "#6e6a861a",
+ "list.hoverForeground": "#e0def4",
+ "list.inactiveFocusBackground": "#6e6a861a",
+ "list.inactiveSelectionBackground": "#1f1d2e",
+ "list.inactiveSelectionForeground": "#e0def4",
+ "list.invalidItemForeground": "#eb6f92",
+ "list.warningForeground": "#f6c177",
+ "listFilterWidget.background": "#1f1d2e",
+ "listFilterWidget.noMatchesOutline": "#eb6f92",
+ "listFilterWidget.outline": "#26233a",
+ "menu.background": "#1f1d2e",
+ "menu.border": "#6e6a861a",
+ "menu.foreground": "#e0def4",
+ "menu.selectionBackground": "#6e6a8633",
+ "menu.selectionBorder": "#26233a",
+ "menu.selectionForeground": "#e0def4",
+ "menu.separatorBackground": "#6e6a8666",
+ "menubar.selectionBackground": "#6e6a8633",
+ "menubar.selectionBorder": "#6e6a861a",
+ "menubar.selectionForeground": "#e0def4",
+ "merge.border": "#26233a",
+ "merge.commonContentBackground": "#6e6a8633",
+ "merge.commonHeaderBackground": "#6e6a8633",
+ "merge.currentContentBackground": "#f6c17780",
+ "merge.currentHeaderBackground": "#f6c17780",
+ "merge.incomingContentBackground": "#9ccfd880",
+ "merge.incomingHeaderBackground": "#9ccfd880",
+ "minimap.background": "#1f1d2e",
+ "minimap.errorHighlight": "#eb6f9280",
+ "minimap.findMatchHighlight": "#6e6a8633",
+ "minimap.selectionHighlight": "#6e6a8633",
+ "minimap.warningHighlight": "#f6c17780",
+ "minimapGutter.addedBackground": "#9ccfd8",
+ "minimapGutter.deletedBackground": "#eb6f92",
+ "minimapGutter.modifiedBackground": "#ebbcba",
+ "minimapSlider.activeBackground": "#6e6a8666",
+ "minimapSlider.background": "#6e6a8633",
+ "minimapSlider.hoverBackground": "#6e6a8633",
+ "notebook.cellBorderColor": "#9ccfd880",
+ "notebook.cellEditorBackground": "#1f1d2e",
+ "notebook.cellHoverBackground": "#26233a80",
+ "notebook.focusedCellBackground": "#6e6a861a",
+ "notebook.focusedCellBorder": "#9ccfd8",
+ "notebook.outputContainerBackgroundColor": "#6e6a861a",
+ "notificationCenter.border": "#6e6a8633",
+ "notificationCenterHeader.background": "#1f1d2e",
+ "notificationCenterHeader.foreground": "#908caa",
+ "notificationLink.foreground": "#c4a7e7",
+ "notifications.background": "#1f1d2e",
+ "notifications.border": "#6e6a8633",
+ "notifications.foreground": "#e0def4",
+ "notificationsErrorIcon.foreground": "#eb6f92",
+ "notificationsInfoIcon.foreground": "#9ccfd8",
+ "notificationsWarningIcon.foreground": "#f6c177",
+ "notificationToast.border": "#6e6a8633",
+ "panel.background": "#1f1d2e",
+ "panel.border": "#0000",
+ "panel.dropBorder": "#26233a",
+ "panelInput.border": "#1f1d2e",
+ "panelSection.dropBackground": "#6e6a8633",
+ "panelSectionHeader.background": "#1f1d2e",
+ "panelSectionHeader.foreground": "#e0def4",
+ "panelTitle.activeBorder": "#6e6a8666",
+ "panelTitle.activeForeground": "#e0def4",
+ "panelTitle.inactiveForeground": "#908caa",
+ "peekView.border": "#26233a",
+ "peekViewEditor.background": "#1f1d2e",
+ "peekViewEditor.matchHighlightBackground": "#6e6a8666",
+ "peekViewResult.background": "#1f1d2e",
+ "peekViewResult.fileForeground": "#908caa",
+ "peekViewResult.lineForeground": "#908caa",
+ "peekViewResult.matchHighlightBackground": "#6e6a8666",
+ "peekViewResult.selectionBackground": "#6e6a8633",
+ "peekViewResult.selectionForeground": "#e0def4",
+ "peekViewTitle.background": "#26233a",
+ "peekViewTitleDescription.foreground": "#908caa",
+ "pickerGroup.border": "#6e6a8666",
+ "pickerGroup.foreground": "#c4a7e7",
+ "ports.iconRunningProcessForeground": "#ebbcba",
+ "problemsErrorIcon.foreground": "#eb6f92",
+ "problemsInfoIcon.foreground": "#9ccfd8",
+ "problemsWarningIcon.foreground": "#f6c177",
+ "progressBar.background": "#ebbcba",
+ "quickInput.background": "#1f1d2e",
+ "quickInput.foreground": "#908caa",
+ "quickInputList.focusBackground": "#6e6a8633",
+ "quickInputList.focusForeground": "#e0def4",
+ "quickInputList.focusIconForeground": "#e0def4",
+ "scrollbar.shadow": "#1f1d2e4d",
+ "scrollbarSlider.activeBackground": "#31748f80",
+ "scrollbarSlider.background": "#6e6a8633",
+ "scrollbarSlider.hoverBackground": "#6e6a8666",
+ "searchEditor.findMatchBackground": "#6e6a8633",
+ "selection.background": "#6e6a8666",
+ "settings.focusedRowBackground": "#1f1d2e",
+ "settings.headerForeground": "#e0def4",
+ "settings.modifiedItemIndicator": "#ebbcba",
+ "settings.focusedRowBorder": "#6e6a8633",
+ "settings.rowHoverBackground": "#1f1d2e",
+ "sideBar.background": "#191724",
+ "sideBar.dropBackground": "#1f1d2e",
+ "sideBar.foreground": "#908caa",
+ "sideBarSectionHeader.background": "#0000",
+ "sideBarSectionHeader.border": "#6e6a8633",
+ "statusBar.background": "#191724",
+ "statusBar.debuggingBackground": "#c4a7e7",
+ "statusBar.debuggingForeground": "#191724",
+ "statusBar.foreground": "#908caa",
+ "statusBar.noFolderBackground": "#191724",
+ "statusBar.noFolderForeground": "#908caa",
+ "statusBarItem.activeBackground": "#6e6a8666",
+ "statusBarItem.hoverBackground": "#6e6a8633",
+ "statusBarItem.prominentBackground": "#26233a",
+ "statusBarItem.prominentForeground": "#e0def4",
+ "statusBarItem.prominentHoverBackground": "#6e6a8633",
+ "statusBarItem.remoteBackground": "#191724",
+ "statusBarItem.remoteForeground": "#f6c177",
+ "statusBarItem.errorBackground": "#191724",
+ "statusBarItem.errorForeground": "#eb6f92",
+ "symbolIcon.arrayForeground": "#908caa",
+ "symbolIcon.classForeground": "#908caa",
+ "symbolIcon.colorForeground": "#908caa",
+ "symbolIcon.constantForeground": "#908caa",
+ "symbolIcon.constructorForeground": "#908caa",
+ "symbolIcon.enumeratorForeground": "#908caa",
+ "symbolIcon.enumeratorMemberForeground": "#908caa",
+ "symbolIcon.eventForeground": "#908caa",
+ "symbolIcon.fieldForeground": "#908caa",
+ "symbolIcon.fileForeground": "#908caa",
+ "symbolIcon.folderForeground": "#908caa",
+ "symbolIcon.functionForeground": "#908caa",
+ "symbolIcon.interfaceForeground": "#908caa",
+ "symbolIcon.keyForeground": "#908caa",
+ "symbolIcon.keywordForeground": "#908caa",
+ "symbolIcon.methodForeground": "#908caa",
+ "symbolIcon.moduleForeground": "#908caa",
+ "symbolIcon.namespaceForeground": "#908caa",
+ "symbolIcon.nullForeground": "#908caa",
+ "symbolIcon.numberForeground": "#908caa",
+ "symbolIcon.objectForeground": "#908caa",
+ "symbolIcon.operatorForeground": "#908caa",
+ "symbolIcon.packageForeground": "#908caa",
+ "symbolIcon.propertyForeground": "#908caa",
+ "symbolIcon.referenceForeground": "#908caa",
+ "symbolIcon.snippetForeground": "#908caa",
+ "symbolIcon.stringForeground": "#908caa",
+ "symbolIcon.structForeground": "#908caa",
+ "symbolIcon.textForeground": "#908caa",
+ "symbolIcon.typeParameterForeground": "#908caa",
+ "symbolIcon.unitForeground": "#908caa",
+ "symbolIcon.variableForeground": "#908caa",
+ "tab.activeBackground": "#6e6a861a",
+ "tab.activeForeground": "#e0def4",
+ "tab.activeModifiedBorder": "#9ccfd8",
+ "tab.border": "#0000",
+ "tab.hoverBackground": "#6e6a8633",
+ "tab.inactiveBackground": "#0000",
+ "tab.inactiveForeground": "#908caa",
+ "tab.inactiveModifiedBorder": "#9ccfd880",
+ "tab.lastPinnedBorder": "#6e6a86",
+ "tab.unfocusedActiveBackground": "#0000",
+ "tab.unfocusedHoverBackground": "#0000",
+ "tab.unfocusedInactiveBackground": "#0000",
+ "tab.unfocusedInactiveModifiedBorder": "#9ccfd880",
+ "terminal.ansiBlack": "#26233a",
+ "terminal.ansiBlue": "#9ccfd8",
+ "terminal.ansiBrightBlack": "#908caa",
+ "terminal.ansiBrightBlue": "#9ccfd8",
+ "terminal.ansiBrightCyan": "#ebbcba",
+ "terminal.ansiBrightGreen": "#31748f",
+ "terminal.ansiBrightMagenta": "#c4a7e7",
+ "terminal.ansiBrightRed": "#eb6f92",
+ "terminal.ansiBrightWhite": "#e0def4",
+ "terminal.ansiBrightYellow": "#f6c177",
+ "terminal.ansiCyan": "#ebbcba",
+ "terminal.ansiGreen": "#31748f",
+ "terminal.ansiMagenta": "#c4a7e7",
+ "terminal.ansiRed": "#eb6f92",
+ "terminal.ansiWhite": "#e0def4",
+ "terminal.ansiYellow": "#f6c177",
+ "terminal.dropBackground": "#6e6a8633",
+ "terminal.foreground": "#e0def4",
+ "terminal.selectionBackground": "#6e6a8633",
+ "terminal.tab.activeBorder": "#e0def4",
+ "terminalCursor.background": "#e0def4",
+ "terminalCursor.foreground": "#6e6a86",
+ "textBlockQuote.background": "#1f1d2e",
+ "textBlockQuote.border": "#6e6a8633",
+ "textCodeBlock.background": "#1f1d2e",
+ "textLink.activeForeground": "#c4a7e7e6",
+ "textLink.foreground": "#c4a7e7",
+ "textPreformat.foreground": "#f6c177",
+ "textSeparator.foreground": "#908caa",
+ "titleBar.activeBackground": "#191724",
+ "titleBar.activeForeground": "#908caa",
+ "titleBar.inactiveBackground": "#1f1d2e",
+ "titleBar.inactiveForeground": "#908caa",
+ "toolbar.activeBackground": "#6e6a8666",
+ "toolbar.hoverBackground": "#6e6a8633",
+ "tree.indentGuidesStroke": "#908caa",
+ "walkThrough.embeddedEditorBackground": "#191724",
+ "welcomePage.background": "#191724",
+ "welcomePage.buttonBackground": "#1f1d2e",
+ "welcomePage.buttonHoverBackground": "#26233a",
+ "widget.shadow": "#1f1d2e4d",
+ "window.activeBorder": "#1f1d2e",
+ "window.inactiveBorder": "#1f1d2e"
+ },
+ "tokenColors": [
+ {
+ "scope": ["comment"],
+ "settings": {
+ "foreground": "#6e6a86",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["constant"],
+ "settings": {
+ "foreground": "#31748f"
+ }
+ },
+ {
+ "scope": ["constant.numeric", "constant.language"],
+ "settings": {
+ "foreground": "#ebbcba"
+ }
+ },
+ {
+ "scope": ["entity.name"],
+ "settings": {
+ "foreground": "#ebbcba"
+ }
+ },
+ {
+ "scope": [
+ "entity.name.section",
+ "entity.name.tag",
+ "entity.name.namespace",
+ "entity.name.type"
+ ],
+ "settings": {
+ "foreground": "#9ccfd8"
+ }
+ },
+ {
+ "scope": ["entity.other.attribute-name", "entity.other.inherited-class"],
+ "settings": {
+ "foreground": "#c4a7e7",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["invalid"],
+ "settings": {
+ "foreground": "#eb6f92"
+ }
+ },
+ {
+ "scope": ["invalid.deprecated"],
+ "settings": {
+ "foreground": "#908caa"
+ }
+ },
+ {
+ "scope": ["keyword"],
+ "settings": {
+ "foreground": "#31748f"
+ }
+ },
+ {
+ "scope": ["markup.inserted.diff"],
+ "settings": {
+ "foreground": "#9ccfd8"
+ }
+ },
+ {
+ "scope": ["markup.deleted.diff"],
+ "settings": {
+ "foreground": "#eb6f92"
+ }
+ },
+ {
+ "scope": "markup.heading",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "markup.bold.markdown",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "markup.italic.markdown",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["meta.diff.range"],
+ "settings": {
+ "foreground": "#c4a7e7"
+ }
+ },
+ {
+ "scope": ["meta.tag", "meta.brace"],
+ "settings": {
+ "foreground": "#e0def4"
+ }
+ },
+ {
+ "scope": ["meta.import", "meta.export"],
+ "settings": {
+ "foreground": "#31748f"
+ }
+ },
+ {
+ "scope": "meta.directive.vue",
+ "settings": {
+ "foreground": "#c4a7e7",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "meta.property-name.css",
+ "settings": {
+ "foreground": "#9ccfd8"
+ }
+ },
+ {
+ "scope": "meta.property-value.css",
+ "settings": {
+ "foreground": "#f6c177"
+ }
+ },
+ {
+ "scope": "meta.tag.other.html",
+ "settings": {
+ "foreground": "#908caa"
+ }
+ },
+ {
+ "scope": ["punctuation"],
+ "settings": {
+ "foreground": "#908caa"
+ }
+ },
+ {
+ "scope": ["punctuation.accessor"],
+ "settings": {
+ "foreground": "#31748f"
+ }
+ },
+ {
+ "scope": ["punctuation.definition.string"],
+ "settings": {
+ "foreground": "#f6c177"
+ }
+ },
+ {
+ "scope": ["punctuation.definition.tag"],
+ "settings": {
+ "foreground": "#6e6a86"
+ }
+ },
+ {
+ "scope": ["storage.type", "storage.modifier"],
+ "settings": {
+ "foreground": "#31748f"
+ }
+ },
+ {
+ "scope": ["string"],
+ "settings": {
+ "foreground": "#f6c177"
+ }
+ },
+ {
+ "scope": ["support"],
+ "settings": {
+ "foreground": "#9ccfd8"
+ }
+ },
+ {
+ "scope": ["support.constant"],
+ "settings": {
+ "foreground": "#f6c177"
+ }
+ },
+ {
+ "scope": ["support.function"],
+ "settings": {
+ "foreground": "#eb6f92",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["variable"],
+ "settings": {
+ "foreground": "#ebbcba",
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": ["variable.other", "variable.language", "variable.function", "variable.argument"],
+ "settings": {
+ "foreground": "#e0def4"
+ }
+ },
+ {
+ "scope": ["variable.parameter"],
+ "settings": {
+ "foreground": "#c4a7e7"
+ }
+ }
+ ]
+}
diff --git a/node_modules/shiki/themes/slack-dark.json b/node_modules/shiki/themes/slack-dark.json
new file mode 100644
index 0000000..2679002
--- /dev/null
+++ b/node_modules/shiki/themes/slack-dark.json
@@ -0,0 +1,564 @@
+{
+ "name": "slack-dark",
+ "type": "dark",
+ "colors": {
+ "activityBarBadge.background": "#1D978D",
+ "editor.background": "#222222",
+ "editor.foreground": "#E6E6E6",
+ "editor.inactiveSelectionBackground": "#3a3d41",
+ "editor.selectionHighlightBackground": "#add6ff26",
+ "editorIndentGuide.activeBackground": "#707070",
+ "editorIndentGuide.background": "#404040",
+ "input.placeholderForeground": "#7A7A7A",
+ "list.dropBackground": "#383b3d",
+ "list.activeSelectionBackground": "#222222",
+ "list.focusBackground": "#0077B5",
+ "menu.background": "#252526",
+ "menu.foreground": "#E6E6E6",
+ "settings.numberInputBackground": "#292929",
+ "settings.textInputBackground": "#292929",
+ "sideBarTitle.foreground": "#E6E6E6",
+ "statusBar.background": "#222222",
+ "statusBar.noFolderBackground": "#141414",
+ "statusBar.debuggingBackground": "#1D978D",
+ "list.hoverBackground": "#222222",
+ "gitDecoration.modifiedResourceForeground": "#ECB22E",
+ "gitDecoration.deletedResourceForeground": "#FFF",
+ "gitDecoration.untrackedResourceForeground": "#ECB22E",
+ "gitDecoration.ignoredResourceForeground": "#877583",
+ "gitDecoration.addedResourceForeground": "#ECB22E",
+ "gitDecoration.conflictingResourceForeground": "#FFF",
+ "editor.lineHighlightBorder": "#141414",
+ "editor.lineHighlightBackground": "#141414",
+ "editorSuggestWidget.selectedBackground": "#0077B5",
+ "sideBarSectionHeader.background": "#222222",
+ "activityBar.background": "#222222",
+ "button.background": "#0077B5",
+ "button.foreground": "#FFF",
+ "button.hoverBackground": "#005076",
+ "extensionButton.prominentBackground": "#0077B5",
+ "extensionButton.prominentForeground": "#FFF",
+ "extensionButton.prominentHoverBackground": "#005076",
+ "debugExceptionWidget.background": "#141414",
+ "debugExceptionWidget.border": "#FFF",
+ "debugToolBar.background": "#141414",
+ "titleBar.activeBackground": "#222222",
+ "titleBar.activeForeground": "#E6E6E6",
+ "titleBar.inactiveBackground": "#222222",
+ "titleBar.inactiveForeground": "#7A7A7A",
+ "focusBorder": "#0077B5",
+ "textLink.activeForeground": "#0077B5",
+ "textLink.foreground": "#0077B5",
+ "editorLink.activeForeground": "#0077B5",
+ "notificationLink.foreground": "#0077B5"
+ },
+ "tokenColors": [
+ {
+ "scope": ["meta.embedded", "source.groovy.embedded"],
+ "settings": {
+ "foreground": "#D4D4D4"
+ }
+ },
+ {
+ "scope": "emphasis",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "strong",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "header",
+ "settings": {
+ "foreground": "#000080"
+ }
+ },
+ {
+ "scope": "comment",
+ "settings": {
+ "foreground": "#6A9955"
+ }
+ },
+ {
+ "scope": "constant.language",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": ["constant.numeric"],
+ "settings": {
+ "foreground": "#b5cea8"
+ }
+ },
+ {
+ "scope": "constant.regexp",
+ "settings": {
+ "foreground": "#646695"
+ }
+ },
+ {
+ "scope": "entity.name.tag",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "entity.name.tag.css",
+ "settings": {
+ "foreground": "#d7ba7d"
+ }
+ },
+ {
+ "scope": "entity.other.attribute-name",
+ "settings": {
+ "foreground": "#9cdcfe"
+ }
+ },
+ {
+ "scope": [
+ "entity.other.attribute-name.class.css",
+ "entity.other.attribute-name.class.mixin.css",
+ "entity.other.attribute-name.id.css",
+ "entity.other.attribute-name.parent-selector.css",
+ "entity.other.attribute-name.pseudo-class.css",
+ "entity.other.attribute-name.pseudo-element.css",
+ "source.css.less entity.other.attribute-name.id",
+ "entity.other.attribute-name.attribute.scss",
+ "entity.other.attribute-name.scss"
+ ],
+ "settings": {
+ "foreground": "#d7ba7d"
+ }
+ },
+ {
+ "scope": "invalid",
+ "settings": {
+ "foreground": "#f44747"
+ }
+ },
+ {
+ "scope": "markup.underline",
+ "settings": {
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "scope": "markup.bold",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "markup.heading",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "markup.italic",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "markup.inserted",
+ "settings": {
+ "foreground": "#b5cea8"
+ }
+ },
+ {
+ "scope": "markup.deleted",
+ "settings": {
+ "foreground": "#ce9178"
+ }
+ },
+ {
+ "scope": "markup.changed",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "punctuation.definition.quote.begin.markdown",
+ "settings": {
+ "foreground": "#6A9955"
+ }
+ },
+ {
+ "scope": "punctuation.definition.list.begin.markdown",
+ "settings": {
+ "foreground": "#6796e6"
+ }
+ },
+ {
+ "scope": "markup.inline.raw",
+ "settings": {
+ "foreground": "#ce9178"
+ }
+ },
+ {
+ "name": "brackets of XML/HTML tags",
+ "scope": "punctuation.definition.tag",
+ "settings": {
+ "foreground": "#808080"
+ }
+ },
+ {
+ "scope": "meta.preprocessor",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "meta.preprocessor.string",
+ "settings": {
+ "foreground": "#ce9178"
+ }
+ },
+ {
+ "scope": "meta.preprocessor.numeric",
+ "settings": {
+ "foreground": "#b5cea8"
+ }
+ },
+ {
+ "scope": "meta.structure.dictionary.key.python",
+ "settings": {
+ "foreground": "#9cdcfe"
+ }
+ },
+ {
+ "scope": "meta.diff.header",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "storage",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "storage.type",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "storage.modifier",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "string",
+ "settings": {
+ "foreground": "#ce9178"
+ }
+ },
+ {
+ "scope": "string.tag",
+ "settings": {
+ "foreground": "#ce9178"
+ }
+ },
+ {
+ "scope": "string.value",
+ "settings": {
+ "foreground": "#ce9178"
+ }
+ },
+ {
+ "scope": "string.regexp",
+ "settings": {
+ "foreground": "#d16969"
+ }
+ },
+ {
+ "name": "String interpolation",
+ "scope": [
+ "punctuation.definition.template-expression.begin",
+ "punctuation.definition.template-expression.end",
+ "punctuation.section.embedded"
+ ],
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "name": "Reset JavaScript string interpolation expression",
+ "scope": ["meta.template.expression"],
+ "settings": {
+ "foreground": "#d4d4d4"
+ }
+ },
+ {
+ "scope": [
+ "support.type.vendored.property-name",
+ "support.type.property-name",
+ "variable.css",
+ "variable.scss",
+ "variable.other.less",
+ "source.coffee.embedded"
+ ],
+ "settings": {
+ "foreground": "#9cdcfe"
+ }
+ },
+ {
+ "scope": "keyword",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "keyword.control",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "keyword.operator",
+ "settings": {
+ "foreground": "#d4d4d4"
+ }
+ },
+ {
+ "scope": [
+ "keyword.operator.new",
+ "keyword.operator.expression",
+ "keyword.operator.cast",
+ "keyword.operator.sizeof",
+ "keyword.operator.instanceof",
+ "keyword.operator.logical.python"
+ ],
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "keyword.other.unit",
+ "settings": {
+ "foreground": "#b5cea8"
+ }
+ },
+ {
+ "scope": ["punctuation.section.embedded.begin.php", "punctuation.section.embedded.end.php"],
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "support.function.git-rebase",
+ "settings": {
+ "foreground": "#9cdcfe"
+ }
+ },
+ {
+ "scope": "constant.sha.git-rebase",
+ "settings": {
+ "foreground": "#b5cea8"
+ }
+ },
+ {
+ "name": "coloring of the Java import and package identifiers",
+ "scope": [
+ "storage.modifier.import.java",
+ "variable.language.wildcard.java",
+ "storage.modifier.package.java"
+ ],
+ "settings": {
+ "foreground": "#d4d4d4"
+ }
+ },
+ {
+ "name": "this.self",
+ "scope": "variable.language",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "name": "Function declarations",
+ "scope": ["entity.name.function", "support.function", "support.constant.handlebars"],
+ "settings": {
+ "foreground": "#DCDCAA"
+ }
+ },
+ {
+ "name": "Types declaration and references",
+ "scope": [
+ "meta.return-type",
+ "support.class",
+ "support.type",
+ "entity.name.type",
+ "entity.name.class",
+ "storage.type.numeric.go",
+ "storage.type.byte.go",
+ "storage.type.boolean.go",
+ "storage.type.string.go",
+ "storage.type.uintptr.go",
+ "storage.type.error.go",
+ "storage.type.rune.go",
+ "storage.type.cs",
+ "storage.type.generic.cs",
+ "storage.type.modifier.cs",
+ "storage.type.variable.cs",
+ "storage.type.annotation.java",
+ "storage.type.generic.java",
+ "storage.type.java",
+ "storage.type.object.array.java",
+ "storage.type.primitive.array.java",
+ "storage.type.primitive.java",
+ "storage.type.token.java",
+ "storage.type.groovy",
+ "storage.type.annotation.groovy",
+ "storage.type.parameters.groovy",
+ "storage.type.generic.groovy",
+ "storage.type.object.array.groovy",
+ "storage.type.primitive.array.groovy",
+ "storage.type.primitive.groovy"
+ ],
+ "settings": {
+ "foreground": "#4EC9B0"
+ }
+ },
+ {
+ "name": "Types declaration and references, TS grammar specific",
+ "scope": [
+ "meta.type.cast.expr",
+ "meta.type.new.expr",
+ "support.constant.math",
+ "support.constant.dom",
+ "support.constant.json",
+ "entity.other.inherited-class"
+ ],
+ "settings": {
+ "foreground": "#4EC9B0"
+ }
+ },
+ {
+ "name": "Control flow keywords",
+ "scope": "keyword.control",
+ "settings": {
+ "foreground": "#C586C0"
+ }
+ },
+ {
+ "name": "Variable and parameter name",
+ "scope": [
+ "variable",
+ "meta.definition.variable.name",
+ "support.variable",
+ "entity.name.variable"
+ ],
+ "settings": {
+ "foreground": "#9CDCFE"
+ }
+ },
+ {
+ "name": "Object keys, TS grammar specific",
+ "scope": ["meta.object-literal.key"],
+ "settings": {
+ "foreground": "#9CDCFE"
+ }
+ },
+ {
+ "name": "CSS property value",
+ "scope": [
+ "support.constant.property-value",
+ "support.constant.font-name",
+ "support.constant.media-type",
+ "support.constant.media",
+ "constant.other.color.rgb-value",
+ "constant.other.rgb-value",
+ "support.constant.color"
+ ],
+ "settings": {
+ "foreground": "#CE9178"
+ }
+ },
+ {
+ "name": "Regular expression groups",
+ "scope": [
+ "punctuation.definition.group.regexp",
+ "punctuation.definition.group.assertion.regexp",
+ "punctuation.definition.character-class.regexp",
+ "punctuation.character.set.begin.regexp",
+ "punctuation.character.set.end.regexp",
+ "keyword.operator.negation.regexp",
+ "support.other.parenthesis.regexp"
+ ],
+ "settings": {
+ "foreground": "#CE9178"
+ }
+ },
+ {
+ "scope": [
+ "constant.character.character-class.regexp",
+ "constant.other.character-class.set.regexp",
+ "constant.other.character-class.regexp",
+ "constant.character.set.regexp"
+ ],
+ "settings": {
+ "foreground": "#d16969"
+ }
+ },
+ {
+ "scope": ["keyword.operator.or.regexp", "keyword.control.anchor.regexp"],
+ "settings": {
+ "foreground": "#DCDCAA"
+ }
+ },
+ {
+ "scope": "keyword.operator.quantifier.regexp",
+ "settings": {
+ "foreground": "#d7ba7d"
+ }
+ },
+ {
+ "scope": "constant.character",
+ "settings": {
+ "foreground": "#569cd6"
+ }
+ },
+ {
+ "scope": "constant.character.escape",
+ "settings": {
+ "foreground": "#d7ba7d"
+ }
+ },
+ {
+ "scope": "token.info-token",
+ "settings": {
+ "foreground": "#6796e6"
+ }
+ },
+ {
+ "scope": "token.warn-token",
+ "settings": {
+ "foreground": "#cd9731"
+ }
+ },
+ {
+ "scope": "token.error-token",
+ "settings": {
+ "foreground": "#f44747"
+ }
+ },
+ {
+ "scope": "token.debug-token",
+ "settings": {
+ "foreground": "#b267e6"
+ }
+ }
+ ]
+}
diff --git a/node_modules/shiki/themes/slack-ochin.json b/node_modules/shiki/themes/slack-ochin.json
new file mode 100644
index 0000000..3a84711
--- /dev/null
+++ b/node_modules/shiki/themes/slack-ochin.json
@@ -0,0 +1,475 @@
+{
+ "name": "slack-ochin",
+ "type": "dark",
+ "colors": {
+ "foreground": "#616161",
+ "focusBorder": "#161F26",
+ "widget.shadow": "#161F2694",
+ "input.background": "#FFF",
+ "input.border": "#161F26",
+ "input.foreground": "#000",
+ "input.placeholderForeground": "#a0a0a0",
+ "inputOption.activeBorder": "#3E313C",
+ "inputValidation.errorBackground": "#F44C5E",
+ "inputValidation.errorForeground": "#FFF",
+ "inputValidation.infoBackground": "#6182b8",
+ "inputValidation.infoForeground": "#FFF",
+ "inputValidation.warningBackground": "#F6B555",
+ "inputValidation.warningForeground": "#000",
+ "list.activeSelectionBackground": "#5899C5",
+ "list.activeSelectionForeground": "#fff",
+ "list.hoverBackground": "#d5e1ea",
+ "list.hoverForeground": "#fff",
+ "list.focusBackground": "#d5e1ea",
+ "list.focusForeground": "#fff",
+ "list.inactiveSelectionBackground": "#5899C5",
+ "list.inactiveSelectionForeground": "#fff",
+ "list.highlightForeground": "#2D3E4C",
+ "list.inactiveFocusBackground": "#161F26",
+ "list.invalidItemForeground": "#fff",
+ "button.background": "#475663",
+ "button.foreground": "#FFF",
+ "button.hoverBackground": "#161F26",
+ "scrollbar.shadow": "#ffffff00",
+ "scrollbarSlider.activeBackground": "#161F267e",
+ "scrollbarSlider.background": "#161F267e",
+ "scrollbarSlider.hoverBackground": "#161F267e",
+ "badge.background": "#8AE773",
+ "progressBar.background": "#8AE773",
+ "editor.background": "#FFF",
+ "editor.foreground": "#000",
+ "editor.lineHighlightBackground": "#EEEEEE",
+ "editor.wordHighlightStrongBackground": "#EEEEEE",
+ "editor.selectionBackground": "#AED4FB",
+ "editorLineNumber.foreground": "#b9b9b9",
+ "editorActiveLineNumber.foreground": "#475663",
+ "editor.findMatchBackground": "#AED4FB",
+ "editorHint.foreground": "#F9F9F9",
+ "editorHint.border": "#F9F9F9",
+ "editor.wordHighlightBackground": "#AED4FB",
+ "terminal.border": "#2D3E4C",
+ "terminal.foreground": "#161F26",
+ "terminal.ansiBlack": "#000000",
+ "terminal.ansiBlue": "#6182b8",
+ "terminal.ansiBrightBlack": "#90a4ae",
+ "terminal.ansiBrightBlue": "#6182b8",
+ "terminal.ansiBrightCyan": "#39adb5",
+ "terminal.ansiBrightGreen": "#91b859",
+ "terminal.ansiBrightMagenta": "#7c4dff",
+ "terminal.ansiBrightRed": "#e53935",
+ "terminal.ansiBrightWhite": "#ffffff",
+ "terminal.ansiBrightYellow": "#ffb62c",
+ "terminal.ansiCyan": "#39adb5",
+ "terminal.ansiGreen": "#91b859",
+ "terminal.ansiMagenta": "#7c4dff",
+ "terminal.ansiRed": "#e53935",
+ "terminal.ansiWhite": "#ffffff",
+ "terminal.ansiYellow": "#ffb62c",
+ "terminal.selectionBackground": "#0006",
+ "panelTitle.activeForeground": "#161F26",
+ "activityBar.background": "#161F26",
+ "activityBar.foreground": "#FFF",
+ "activityBar.dropBackground": "#FFF",
+ "activityBarBadge.background": "#8AE773",
+ "activityBarBadge.foreground": "#FFF",
+ "panel.border": "#2D3E4C",
+ "dropdown.background": "#FFF",
+ "dropdown.listBackground": "#FFF",
+ "dropdown.border": "#DCDEDF",
+ "dropdown.foreground": "#DCDEDF",
+ "sideBar.background": "#2D3E4C",
+ "sideBar.foreground": "#DCDEDF",
+ "sideBarTitle.foreground": "#FFF",
+ "sideBarSectionHeader.foreground": "#FFF",
+ "sideBarSectionHeader.background": "#161F26",
+ "debugToolBar.background": "#161F26",
+ "tab.border": "#F3F3F3",
+ "tab.activeBackground": "#FFF",
+ "tab.inactiveForeground": "#686868",
+ "tab.inactiveBackground": "#F3F3F3",
+ "tab.activeForeground": "#000",
+ "editorGroupHeader.tabsBackground": "#2D3E4C",
+ "statusBar.foreground": "#FFF",
+ "statusBar.background": "#5899C5",
+ "statusBar.debuggingBackground": "#8AE773",
+ "statusBar.noFolderBackground": "#161F26",
+ "extensionButton.prominentBackground": "#475663",
+ "extensionButton.prominentForeground": "#F6F6F6",
+ "extensionButton.prominentHoverBackground": "#161F26",
+ "gitDecoration.modifiedResourceForeground": "#ECB22E",
+ "gitDecoration.deletedResourceForeground": "#FFF",
+ "gitDecoration.untrackedResourceForeground": "#ECB22E",
+ "gitDecoration.ignoredResourceForeground": "#877583",
+ "gitDecoration.addedResourceForeground": "#ECB22E",
+ "gitDecoration.conflictingResourceForeground": "#FFF",
+ "notificationCenter.border": "#161F26",
+ "notificationToast.border": "#161F26",
+ "notifications.foreground": "#FFF",
+ "notifications.background": "#161F26",
+ "notifications.border": "#161F26",
+ "notificationCenterHeader.foreground": "#FFF",
+ "notificationLink.foreground": "#FFF",
+ "titleBar.activeBackground": "#2D3E4C",
+ "titleBar.activeForeground": "#FFF",
+ "titleBar.inactiveBackground": "#161F26",
+ "titleBar.inactiveForeground": "#685C66",
+ "titleBar.border": "#2D3E4C",
+ "welcomePage.buttonBackground": "#F3F3F3",
+ "welcomePage.buttonHoverBackground": "#ECECEC",
+ "editorWidget.background": "#F9F9F9",
+ "editorWidget.border": "#dbdbdb",
+ "editorSuggestWidget.foreground": "#2D3E4C",
+ "editorSuggestWidget.highlightForeground": "#2D3E4C",
+ "editorSuggestWidget.selectedBackground": "#b9b9b9",
+ "editorGroup.emptyBackground": "#2D3E4C",
+ "editorGroup.focusedEmptyBorder": "#2D3E4C",
+ "editorPane.background": "#2D3E4C",
+ "breadcrumb.foreground": "#161F26",
+ "breadcrumb.focusForeground": "#475663",
+ "settings.headerForeground": "#161F26",
+ "settings.dropdownForeground": "#161F26",
+ "settings.dropdownBorder": "#161F26",
+ "menu.separatorBackground": "#F9FAFA",
+ "menu.background": "#161F26",
+ "menu.foreground": "#F9FAFA",
+ "textPreformat.foreground": "#161F26",
+ "editorIndentGuide.background": "#F3F3F3",
+ "editorIndentGuide.activeBackground": "#dbdbdb",
+ "debugExceptionWidget.background": "#AED4FB",
+ "debugExceptionWidget.border": "#161F26",
+ "editorMarkerNavigation.background": "#F9F9F9",
+ "editorMarkerNavigationInfo.background": "#6182b8",
+ "editorMarkerNavigationError.background": "#F44C5E",
+ "editorMarkerNavigationWarning.background": "#F6B555"
+ },
+ "tokenColors": [
+ {
+ "settings": {
+ "foreground": "#002339"
+ }
+ },
+ {
+ "scope": ["meta.paragraph.markdown", "string.other.link.description.title.markdown"],
+ "settings": {
+ "foreground": "#110000"
+ }
+ },
+ {
+ "scope": ["entity.name.section.markdown", "punctuation.definition.heading.markdown"],
+ "settings": {
+ "foreground": "#034c7c"
+ }
+ },
+ {
+ "scope": [
+ "punctuation.definition.string.begin.markdown",
+ "punctuation.definition.string.end.markdown",
+ "markup.quote.markdown"
+ ],
+ "settings": {
+ "foreground": "#00AC8F"
+ }
+ },
+ {
+ "scope": ["markup.quote.markdown"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#003494"
+ }
+ },
+ {
+ "scope": ["markup.bold.markdown", "punctuation.definition.bold.markdown"],
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#4e76b5"
+ }
+ },
+ {
+ "scope": ["markup.italic.markdown", "punctuation.definition.italic.markdown"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#C792EA"
+ }
+ },
+ {
+ "scope": ["markup.inline.raw.string.markdown", "markup.fenced_code.block.markdown"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#0460b1"
+ }
+ },
+ {
+ "scope": ["punctuation.definition.metadata.markdown"],
+ "settings": {
+ "foreground": "#00AC8F"
+ }
+ },
+ {
+ "scope": ["markup.underline.link.image.markdown", "markup.underline.link.markdown"],
+ "settings": {
+ "foreground": "#924205"
+ }
+ },
+ {
+ "name": "Comment",
+ "scope": "comment",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#357b42"
+ }
+ },
+ {
+ "name": "String",
+ "scope": "string",
+ "settings": {
+ "foreground": "#a44185"
+ }
+ },
+ {
+ "name": "Number",
+ "scope": "constant.numeric",
+ "settings": {
+ "foreground": "#174781"
+ }
+ },
+ {
+ "name": "Constant",
+ "scope": "constant",
+ "settings": {
+ "foreground": "#174781"
+ }
+ },
+ {
+ "name": "Built-in constant",
+ "scope": "language.method",
+ "settings": {
+ "foreground": "#174781"
+ }
+ },
+ {
+ "name": "User-defined constant",
+ "scope": ["constant.character", "constant.other"],
+ "settings": {
+ "foreground": "#174781"
+ }
+ },
+ {
+ "name": "Variable",
+ "scope": "variable",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#2f86d2"
+ }
+ },
+ {
+ "name": "Variable",
+ "scope": "variable.language.this",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#000000"
+ }
+ },
+ {
+ "name": "Keyword",
+ "scope": "keyword",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#7b30d0"
+ }
+ },
+ {
+ "name": "Storage",
+ "scope": "storage",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#da5221"
+ }
+ },
+ {
+ "name": "Storage type",
+ "scope": "storage.type",
+ "settings": {
+ "foreground": "#0991b6",
+ "fontStyle": ""
+ }
+ },
+ {
+ "name": "Class name",
+ "scope": "entity.name.class",
+ "settings": {
+ "foreground": "#1172c7"
+ }
+ },
+ {
+ "name": "Inherited class",
+ "scope": "entity.other.inherited-class",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#b02767"
+ }
+ },
+ {
+ "name": "Function name",
+ "scope": "entity.name.function",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#7eb233"
+ }
+ },
+ {
+ "name": "Function argument",
+ "scope": "variable.parameter",
+ "settings": {
+ "foreground": "#b1108e",
+ "fontStyle": ""
+ }
+ },
+ {
+ "name": "Tag name",
+ "scope": "entity.name.tag",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#0444ac"
+ }
+ },
+ {
+ "name": "Html Other",
+ "scope": "text.html.basic",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#0071ce"
+ }
+ },
+ {
+ "name": "Entity Name Type",
+ "scope": "entity.name.type",
+ "settings": {
+ "foreground": "#0444ac"
+ }
+ },
+ {
+ "name": "Tag attribute",
+ "scope": "entity.other.attribute-name",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#df8618"
+ }
+ },
+ {
+ "name": "Library function",
+ "scope": "support.function",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#1ab394"
+ }
+ },
+ {
+ "name": "Library constant",
+ "scope": "support.constant",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#174781"
+ }
+ },
+ {
+ "name": "Library class/type",
+ "scope": ["support.type", "support.class"],
+ "settings": {
+ "foreground": "#dc3eb7"
+ }
+ },
+ {
+ "name": "Library variable",
+ "scope": "support.other.variable",
+ "settings": {
+ "foreground": "#224555"
+ }
+ },
+ {
+ "name": "Invalid",
+ "scope": "invalid",
+ "settings": {
+ "fontStyle": " italic bold underline",
+ "foreground": "#207bb8"
+ }
+ },
+ {
+ "name": "Invalid deprecated",
+ "scope": "invalid.deprecated",
+ "settings": {
+ "foreground": "#207bb8",
+ "fontStyle": " bold italic underline"
+ }
+ },
+ {
+ "name": "[JSON] - Support",
+ "scope": "source.json support",
+ "settings": {
+ "foreground": "#6dbdfa"
+ }
+ },
+ {
+ "name": "[JSON] - String",
+ "scope": ["source.json string", "source.json punctuation.definition.string"],
+ "settings": {
+ "foreground": "#00820f"
+ }
+ },
+ {
+ "name": "Lists",
+ "scope": "markup.list",
+ "settings": {
+ "foreground": "#207bb8"
+ }
+ },
+ {
+ "name": "Headings",
+ "scope": ["markup.heading punctuation.definition.heading", "entity.name.section"],
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#4FB4D8"
+ }
+ },
+ {
+ "name": "Support",
+ "scope": [
+ "text.html.markdown meta.paragraph meta.link.inline",
+ "text.html.markdown meta.paragraph meta.link.inline punctuation.definition.string.begin.markdown",
+ "text.html.markdown meta.paragraph meta.link.inline punctuation.definition.string.end.markdown"
+ ],
+ "settings": {
+ "foreground": "#87429A"
+ }
+ },
+ {
+ "name": "Quotes",
+ "scope": "markup.quote",
+ "settings": {
+ "foreground": "#87429A"
+ }
+ },
+ {
+ "name": "Bold",
+ "scope": "markup.bold",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#08134A"
+ }
+ },
+ {
+ "name": "Italic",
+ "scope": ["markup.italic", "punctuation.definition.italic"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#174781"
+ }
+ },
+ {
+ "name": "Link Url",
+ "scope": "meta.link",
+ "settings": {
+ "foreground": "#87429A"
+ }
+ }
+ ]
+}
diff --git a/node_modules/shiki/themes/solarized-dark.json b/node_modules/shiki/themes/solarized-dark.json
new file mode 100644
index 0000000..5b5c2b1
--- /dev/null
+++ b/node_modules/shiki/themes/solarized-dark.json
@@ -0,0 +1,391 @@
+{
+ "name": "solarized-dark",
+ "tokenColors": [
+ {
+ "settings": {
+ "foreground": "#839496"
+ }
+ },
+ {
+ "scope": ["meta.embedded", "source.groovy.embedded", "string meta.image.inline.markdown"],
+ "settings": {
+ "foreground": "#839496"
+ }
+ },
+ {
+ "name": "Comments",
+ "scope": ["comment", "string.quoted.docstring"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#586E75"
+ }
+ },
+ {
+ "name": "String",
+ "scope": "string",
+ "settings": {
+ "foreground": "#2AA198"
+ }
+ },
+ {
+ "name": "Regexp",
+ "scope": "string.regexp",
+ "settings": {
+ "foreground": "#DC322F"
+ }
+ },
+ {
+ "name": "Number",
+ "scope": "constant.numeric",
+ "settings": {
+ "foreground": "#D33682"
+ }
+ },
+ {
+ "name": "Variable",
+ "scope": ["variable.language", "variable.other"],
+ "settings": {
+ "foreground": "#268BD2"
+ }
+ },
+ {
+ "name": "Keyword",
+ "scope": "keyword",
+ "settings": {
+ "foreground": "#859900"
+ }
+ },
+ {
+ "name": "Storage",
+ "scope": "storage",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#93A1A1"
+ }
+ },
+ {
+ "name": "Class name",
+ "scope": [
+ "entity.name.class",
+ "entity.name.type",
+ "entity.name.namespace",
+ "entity.name.scope-resolution"
+ ],
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#CB4B16"
+ }
+ },
+ {
+ "name": "Function name",
+ "scope": "entity.name.function",
+ "settings": {
+ "foreground": "#268BD2"
+ }
+ },
+ {
+ "name": "Variable start",
+ "scope": "punctuation.definition.variable",
+ "settings": {
+ "foreground": "#859900"
+ }
+ },
+ {
+ "name": "Embedded code markers",
+ "scope": ["punctuation.section.embedded.begin", "punctuation.section.embedded.end"],
+ "settings": {
+ "foreground": "#DC322F"
+ }
+ },
+ {
+ "name": "Built-in constant",
+ "scope": ["constant.language", "meta.preprocessor"],
+ "settings": {
+ "foreground": "#B58900"
+ }
+ },
+ {
+ "name": "Support.construct",
+ "scope": ["support.function.construct", "keyword.other.new"],
+ "settings": {
+ "foreground": "#CB4B16"
+ }
+ },
+ {
+ "name": "User-defined constant",
+ "scope": ["constant.character", "constant.other"],
+ "settings": {
+ "foreground": "#CB4B16"
+ }
+ },
+ {
+ "name": "Inherited class",
+ "scope": "entity.other.inherited-class",
+ "settings": {
+ "foreground": "#6C71C4"
+ }
+ },
+ {
+ "name": "Function argument",
+ "scope": "variable.parameter",
+ "settings": {}
+ },
+ {
+ "name": "Tag name",
+ "scope": "entity.name.tag",
+ "settings": {
+ "foreground": "#268BD2"
+ }
+ },
+ {
+ "name": "Tag start/end",
+ "scope": "punctuation.definition.tag",
+ "settings": {
+ "foreground": "#586E75"
+ }
+ },
+ {
+ "name": "Tag attribute",
+ "scope": "entity.other.attribute-name",
+ "settings": {
+ "foreground": "#93A1A1"
+ }
+ },
+ {
+ "name": "Library function",
+ "scope": "support.function",
+ "settings": {
+ "foreground": "#268BD2"
+ }
+ },
+ {
+ "name": "Continuation",
+ "scope": "punctuation.separator.continuation",
+ "settings": {
+ "foreground": "#DC322F"
+ }
+ },
+ {
+ "name": "Library constant",
+ "scope": ["support.constant", "support.variable"],
+ "settings": {}
+ },
+ {
+ "name": "Library class/type",
+ "scope": ["support.type", "support.class"],
+ "settings": {
+ "foreground": "#859900"
+ }
+ },
+ {
+ "name": "Library Exception",
+ "scope": "support.type.exception",
+ "settings": {
+ "foreground": "#CB4B16"
+ }
+ },
+ {
+ "name": "Library variable",
+ "scope": "support.other.variable",
+ "settings": {}
+ },
+ {
+ "name": "Invalid",
+ "scope": "invalid",
+ "settings": {
+ "foreground": "#DC322F"
+ }
+ },
+ {
+ "name": "diff: header",
+ "scope": ["meta.diff", "meta.diff.header"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#268BD2"
+ }
+ },
+ {
+ "name": "diff: deleted",
+ "scope": "markup.deleted",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#DC322F"
+ }
+ },
+ {
+ "name": "diff: changed",
+ "scope": "markup.changed",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#CB4B16"
+ }
+ },
+ {
+ "name": "diff: inserted",
+ "scope": "markup.inserted",
+ "settings": {
+ "foreground": "#859900"
+ }
+ },
+ {
+ "name": "Markup Quote",
+ "scope": "markup.quote",
+ "settings": {
+ "foreground": "#859900"
+ }
+ },
+ {
+ "name": "Markup Lists",
+ "scope": "markup.list",
+ "settings": {
+ "foreground": "#B58900"
+ }
+ },
+ {
+ "name": "Markup Styling",
+ "scope": ["markup.bold", "markup.italic"],
+ "settings": {
+ "foreground": "#D33682"
+ }
+ },
+ {
+ "name": "Markup: Strong",
+ "scope": "markup.bold",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "Markup: Emphasis",
+ "scope": "markup.italic",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "markup.strikethrough",
+ "settings": {
+ "fontStyle": "strikethrough"
+ }
+ },
+ {
+ "name": "Markup Inline",
+ "scope": "markup.inline.raw",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#2AA198"
+ }
+ },
+ {
+ "name": "Markup Headings",
+ "scope": "markup.heading",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#268BD2"
+ }
+ },
+ {
+ "name": "Markup Setext Header",
+ "scope": "markup.heading.setext",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#268BD2"
+ }
+ }
+ ],
+ "colors": {
+ "focusBorder": "#2AA19899",
+ "selection.background": "#2AA19899",
+ "input.background": "#003847",
+ "input.foreground": "#93A1A1",
+ "input.placeholderForeground": "#93A1A1AA",
+ "inputOption.activeBorder": "#2AA19899",
+ "inputValidation.infoBorder": "#363b5f",
+ "inputValidation.infoBackground": "#052730",
+ "inputValidation.warningBackground": "#5d5938",
+ "inputValidation.warningBorder": "#9d8a5e",
+ "inputValidation.errorBackground": "#571b26",
+ "inputValidation.errorBorder": "#a92049",
+ "errorForeground": "#ffeaea",
+ "badge.background": "#047aa6",
+ "progressBar.background": "#047aa6",
+ "dropdown.background": "#00212B",
+ "dropdown.border": "#2AA19899",
+ "button.background": "#2AA19899",
+ "list.activeSelectionBackground": "#005A6F",
+ "quickInputList.focusBackground": "#005A6F",
+ "list.hoverBackground": "#004454AA",
+ "list.inactiveSelectionBackground": "#00445488",
+ "list.dropBackground": "#00445488",
+ "list.highlightForeground": "#1ebcc5",
+ "editor.background": "#002B36",
+ "editor.foreground": "#839496",
+ "editorWidget.background": "#00212B",
+ "editorCursor.foreground": "#D30102",
+ "editorWhitespace.foreground": "#93A1A180",
+ "editor.lineHighlightBackground": "#073642",
+ "editorLineNumber.activeForeground": "#949494",
+ "editor.selectionBackground": "#274642",
+ "minimap.selectionHighlight": "#274642",
+ "editorIndentGuide.background": "#93A1A180",
+ "editorIndentGuide.activeBackground": "#C3E1E180",
+ "editorHoverWidget.background": "#004052",
+ "editorMarkerNavigationError.background": "#AB395B",
+ "editorMarkerNavigationWarning.background": "#5B7E7A",
+ "editor.selectionHighlightBackground": "#005A6FAA",
+ "editor.wordHighlightBackground": "#004454AA",
+ "editor.wordHighlightStrongBackground": "#005A6FAA",
+ "editorBracketHighlight.foreground1": "#cdcdcdff",
+ "editorBracketHighlight.foreground2": "#b58900ff",
+ "editorBracketHighlight.foreground3": "#d33682ff",
+ "peekViewResult.background": "#00212B",
+ "peekViewEditor.background": "#10192c",
+ "peekViewTitle.background": "#00212B",
+ "peekView.border": "#2b2b4a",
+ "peekViewEditor.matchHighlightBackground": "#7744AA40",
+ "titleBar.activeBackground": "#002C39",
+ "editorGroup.border": "#00212B",
+ "editorGroup.dropBackground": "#2AA19844",
+ "editorGroupHeader.tabsBackground": "#004052",
+ "tab.activeForeground": "#d6dbdb",
+ "tab.activeBackground": "#002B37",
+ "tab.inactiveForeground": "#93A1A1",
+ "tab.inactiveBackground": "#004052",
+ "tab.border": "#003847",
+ "tab.lastPinnedBorder": "#2AA19844",
+ "activityBar.background": "#003847",
+ "panel.border": "#2b2b4a",
+ "sideBar.background": "#00212B",
+ "sideBarTitle.foreground": "#93A1A1",
+ "statusBar.foreground": "#93A1A1",
+ "statusBar.background": "#00212B",
+ "statusBar.debuggingBackground": "#00212B",
+ "statusBar.noFolderBackground": "#00212B",
+ "statusBarItem.remoteBackground": "#2AA19899",
+ "ports.iconRunningProcessForeground": "#369432",
+ "statusBarItem.prominentBackground": "#003847",
+ "statusBarItem.prominentHoverBackground": "#003847",
+ "debugToolBar.background": "#00212B",
+ "debugExceptionWidget.background": "#00212B",
+ "debugExceptionWidget.border": "#AB395B",
+ "pickerGroup.foreground": "#2AA19899",
+ "pickerGroup.border": "#2AA19899",
+ "terminal.ansiBlack": "#073642",
+ "terminal.ansiRed": "#dc322f",
+ "terminal.ansiGreen": "#859900",
+ "terminal.ansiYellow": "#b58900",
+ "terminal.ansiBlue": "#268bd2",
+ "terminal.ansiMagenta": "#d33682",
+ "terminal.ansiCyan": "#2aa198",
+ "terminal.ansiWhite": "#eee8d5",
+ "terminal.ansiBrightBlack": "#002b36",
+ "terminal.ansiBrightRed": "#cb4b16",
+ "terminal.ansiBrightGreen": "#586e75",
+ "terminal.ansiBrightYellow": "#657b83",
+ "terminal.ansiBrightBlue": "#839496",
+ "terminal.ansiBrightMagenta": "#6c71c4",
+ "terminal.ansiBrightCyan": "#93a1a1",
+ "terminal.ansiBrightWhite": "#fdf6e3"
+ },
+ "semanticHighlighting": true
+}
diff --git a/node_modules/shiki/themes/solarized-light.json b/node_modules/shiki/themes/solarized-light.json
new file mode 100644
index 0000000..95d83fd
--- /dev/null
+++ b/node_modules/shiki/themes/solarized-light.json
@@ -0,0 +1,383 @@
+{
+ "name": "solarized-light",
+ "tokenColors": [
+ {
+ "settings": {
+ "foreground": "#657B83"
+ }
+ },
+ {
+ "scope": ["meta.embedded", "source.groovy.embedded", "string meta.image.inline.markdown"],
+ "settings": {
+ "foreground": "#657B83"
+ }
+ },
+ {
+ "name": "Comments",
+ "scope": ["comment", "string.quoted.docstring"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#93A1A1"
+ }
+ },
+ {
+ "name": "String",
+ "scope": "string",
+ "settings": {
+ "foreground": "#2AA198"
+ }
+ },
+ {
+ "name": "Regexp",
+ "scope": "string.regexp",
+ "settings": {
+ "foreground": "#DC322F"
+ }
+ },
+ {
+ "name": "Number",
+ "scope": "constant.numeric",
+ "settings": {
+ "foreground": "#D33682"
+ }
+ },
+ {
+ "name": "Variable",
+ "scope": ["variable.language", "variable.other"],
+ "settings": {
+ "foreground": "#268BD2"
+ }
+ },
+ {
+ "name": "Keyword",
+ "scope": "keyword",
+ "settings": {
+ "foreground": "#859900"
+ }
+ },
+ {
+ "name": "Storage",
+ "scope": "storage",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#586E75"
+ }
+ },
+ {
+ "name": "Class name",
+ "scope": [
+ "entity.name.class",
+ "entity.name.type",
+ "entity.name.namespace",
+ "entity.name.scope-resolution"
+ ],
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#CB4B16"
+ }
+ },
+ {
+ "name": "Function name",
+ "scope": "entity.name.function",
+ "settings": {
+ "foreground": "#268BD2"
+ }
+ },
+ {
+ "name": "Variable start",
+ "scope": "punctuation.definition.variable",
+ "settings": {
+ "foreground": "#859900"
+ }
+ },
+ {
+ "name": "Embedded code markers",
+ "scope": ["punctuation.section.embedded.begin", "punctuation.section.embedded.end"],
+ "settings": {
+ "foreground": "#DC322F"
+ }
+ },
+ {
+ "name": "Built-in constant",
+ "scope": ["constant.language", "meta.preprocessor"],
+ "settings": {
+ "foreground": "#B58900"
+ }
+ },
+ {
+ "name": "Support.construct",
+ "scope": ["support.function.construct", "keyword.other.new"],
+ "settings": {
+ "foreground": "#CB4B16"
+ }
+ },
+ {
+ "name": "User-defined constant",
+ "scope": ["constant.character", "constant.other"],
+ "settings": {
+ "foreground": "#CB4B16"
+ }
+ },
+ {
+ "name": "Inherited class",
+ "scope": "entity.other.inherited-class",
+ "settings": {
+ "foreground": "#6C71C4"
+ }
+ },
+ {
+ "name": "Function argument",
+ "scope": "variable.parameter",
+ "settings": {}
+ },
+ {
+ "name": "Tag name",
+ "scope": "entity.name.tag",
+ "settings": {
+ "foreground": "#268BD2"
+ }
+ },
+ {
+ "name": "Tag start/end",
+ "scope": "punctuation.definition.tag",
+ "settings": {
+ "foreground": "#93A1A1"
+ }
+ },
+ {
+ "name": "Tag attribute",
+ "scope": "entity.other.attribute-name",
+ "settings": {
+ "foreground": "#93A1A1"
+ }
+ },
+ {
+ "name": "Library function",
+ "scope": "support.function",
+ "settings": {
+ "foreground": "#268BD2"
+ }
+ },
+ {
+ "name": "Continuation",
+ "scope": "punctuation.separator.continuation",
+ "settings": {
+ "foreground": "#DC322F"
+ }
+ },
+ {
+ "name": "Library constant",
+ "scope": ["support.constant", "support.variable"],
+ "settings": {}
+ },
+ {
+ "name": "Library class/type",
+ "scope": ["support.type", "support.class"],
+ "settings": {
+ "foreground": "#859900"
+ }
+ },
+ {
+ "name": "Library Exception",
+ "scope": "support.type.exception",
+ "settings": {
+ "foreground": "#CB4B16"
+ }
+ },
+ {
+ "name": "Library variable",
+ "scope": "support.other.variable",
+ "settings": {}
+ },
+ {
+ "name": "Invalid",
+ "scope": "invalid",
+ "settings": {
+ "foreground": "#DC322F"
+ }
+ },
+ {
+ "name": "diff: header",
+ "scope": ["meta.diff", "meta.diff.header"],
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#268BD2"
+ }
+ },
+ {
+ "name": "diff: deleted",
+ "scope": "markup.deleted",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#DC322F"
+ }
+ },
+ {
+ "name": "diff: changed",
+ "scope": "markup.changed",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#CB4B16"
+ }
+ },
+ {
+ "name": "diff: inserted",
+ "scope": "markup.inserted",
+ "settings": {
+ "foreground": "#859900"
+ }
+ },
+ {
+ "name": "Markup Quote",
+ "scope": "markup.quote",
+ "settings": {
+ "foreground": "#859900"
+ }
+ },
+ {
+ "name": "Markup Lists",
+ "scope": "markup.list",
+ "settings": {
+ "foreground": "#B58900"
+ }
+ },
+ {
+ "name": "Markup Styling",
+ "scope": ["markup.bold", "markup.italic"],
+ "settings": {
+ "foreground": "#D33682"
+ }
+ },
+ {
+ "name": "Markup: Strong",
+ "scope": "markup.bold",
+ "settings": {
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "name": "Markup: Emphasis",
+ "scope": "markup.italic",
+ "settings": {
+ "fontStyle": "italic"
+ }
+ },
+ {
+ "scope": "markup.strikethrough",
+ "settings": {
+ "fontStyle": "strikethrough"
+ }
+ },
+ {
+ "name": "Markup Inline",
+ "scope": "markup.inline.raw",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#2AA198"
+ }
+ },
+ {
+ "name": "Markup Headings",
+ "scope": "markup.heading",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#268BD2"
+ }
+ },
+ {
+ "name": "Markup Setext Header",
+ "scope": "markup.heading.setext",
+ "settings": {
+ "fontStyle": "",
+ "foreground": "#268BD2"
+ }
+ }
+ ],
+ "colors": {
+ "focusBorder": "#b49471",
+ "input.background": "#DDD6C1",
+ "input.foreground": "#586E75",
+ "input.placeholderForeground": "#586E75AA",
+ "inputOption.activeBorder": "#D3AF86",
+ "badge.background": "#B58900AA",
+ "progressBar.background": "#B58900",
+ "dropdown.background": "#EEE8D5",
+ "dropdown.border": "#D3AF86",
+ "button.background": "#AC9D57",
+ "selection.background": "#878b9180",
+ "list.activeSelectionBackground": "#DFCA88",
+ "list.activeSelectionForeground": "#6C6C6C",
+ "quickInputList.focusBackground": "#DFCA8866",
+ "list.hoverBackground": "#DFCA8844",
+ "list.inactiveSelectionBackground": "#D1CBB8",
+ "list.highlightForeground": "#B58900",
+ "editor.background": "#FDF6E3",
+ "editor.foreground": "#657B83",
+ "notebook.cellEditorBackground": "#F7F0E0",
+ "editorWidget.background": "#EEE8D5",
+ "editorCursor.foreground": "#657B83",
+ "editorWhitespace.foreground": "#586E7580",
+ "editor.lineHighlightBackground": "#EEE8D5",
+ "editor.selectionBackground": "#EEE8D5",
+ "minimap.selectionHighlight": "#EEE8D5",
+ "editorIndentGuide.background": "#586E7580",
+ "editorIndentGuide.activeBackground": "#081E2580",
+ "editorHoverWidget.background": "#CCC4B0",
+ "editorLineNumber.activeForeground": "#567983",
+ "peekViewResult.background": "#EEE8D5",
+ "peekViewEditor.background": "#FFFBF2",
+ "peekViewTitle.background": "#EEE8D5",
+ "peekView.border": "#B58900",
+ "peekViewEditor.matchHighlightBackground": "#7744AA40",
+ "titleBar.activeBackground": "#EEE8D5",
+ "editorGroup.border": "#DDD6C1",
+ "editorGroup.dropBackground": "#DDD6C1AA",
+ "editorGroupHeader.tabsBackground": "#D9D2C2",
+ "tab.border": "#DDD6C1",
+ "tab.activeBackground": "#FDF6E3",
+ "tab.inactiveForeground": "#586E75",
+ "tab.inactiveBackground": "#D3CBB7",
+ "tab.activeModifiedBorder": "#cb4b16",
+ "tab.lastPinnedBorder": "#FDF6E3",
+ "activityBar.background": "#DDD6C1",
+ "activityBar.foreground": "#584c27",
+ "activityBarBadge.background": "#B58900",
+ "panel.border": "#DDD6C1",
+ "sideBar.background": "#EEE8D5",
+ "sideBarTitle.foreground": "#586E75",
+ "statusBar.foreground": "#586E75",
+ "statusBar.background": "#EEE8D5",
+ "statusBar.debuggingBackground": "#EEE8D5",
+ "statusBar.noFolderBackground": "#EEE8D5",
+ "statusBarItem.remoteBackground": "#AC9D57",
+ "ports.iconRunningProcessForeground": "#2AA19899",
+ "statusBarItem.prominentBackground": "#DDD6C1",
+ "statusBarItem.prominentHoverBackground": "#DDD6C199",
+ "debugToolBar.background": "#DDD6C1",
+ "debugExceptionWidget.background": "#DDD6C1",
+ "debugExceptionWidget.border": "#AB395B",
+ "pickerGroup.border": "#2AA19899",
+ "pickerGroup.foreground": "#2AA19899",
+ "extensionButton.prominentBackground": "#b58900",
+ "extensionButton.prominentHoverBackground": "#584c27aa",
+ "terminal.ansiBlack": "#073642",
+ "terminal.ansiRed": "#dc322f",
+ "terminal.ansiGreen": "#859900",
+ "terminal.ansiYellow": "#b58900",
+ "terminal.ansiBlue": "#268bd2",
+ "terminal.ansiMagenta": "#d33682",
+ "terminal.ansiCyan": "#2aa198",
+ "terminal.ansiWhite": "#eee8d5",
+ "terminal.ansiBrightBlack": "#002b36",
+ "terminal.ansiBrightRed": "#cb4b16",
+ "terminal.ansiBrightGreen": "#586e75",
+ "terminal.ansiBrightYellow": "#657b83",
+ "terminal.ansiBrightBlue": "#839496",
+ "terminal.ansiBrightMagenta": "#6c71c4",
+ "terminal.ansiBrightCyan": "#93a1a1",
+ "terminal.ansiBrightWhite": "#fdf6e3",
+ "terminal.background": "#FDF6E3",
+ "walkThrough.embeddedEditorBackground": "#00000014"
+ },
+ "semanticHighlighting": true
+}
diff --git a/node_modules/shiki/themes/vitesse-dark.json b/node_modules/shiki/themes/vitesse-dark.json
new file mode 100644
index 0000000..7689d61
--- /dev/null
+++ b/node_modules/shiki/themes/vitesse-dark.json
@@ -0,0 +1,1091 @@
+{
+ "name": "vitesse-dark",
+ "base": "vs-dark",
+ "colors": {
+ "focusBorder": "#00000000",
+ "foreground": "#dbd7caee",
+ "descriptionForeground": "#dedcd590",
+ "errorForeground": "#cb7676",
+ "textLink.foreground": "#4d9375",
+ "textLink.activeForeground": "#4d9375",
+ "textBlockQuote.background": "#121212",
+ "textBlockQuote.border": "#191919",
+ "textCodeBlock.background": "#121212",
+ "textPreformat.foreground": "#d1d5da",
+ "textSeparator.foreground": "#586069",
+ "button.background": "#4d9375",
+ "button.foreground": "#121212",
+ "button.hoverBackground": "#4d9375",
+ "checkbox.background": "#181818",
+ "checkbox.border": "#2f363d",
+ "dropdown.background": "#121212",
+ "dropdown.border": "#191919",
+ "dropdown.foreground": "#dbd7caee",
+ "dropdown.listBackground": "#181818",
+ "input.background": "#181818",
+ "input.border": "#191919",
+ "input.foreground": "#dbd7caee",
+ "input.placeholderForeground": "#dedcd590",
+ "inputOption.activeBackground": "#dedcd550",
+ "badge.foreground": "#121212",
+ "badge.background": "#dedcd590",
+ "progressBar.background": "#4d9375",
+ "titleBar.activeForeground": "#bfbaaa",
+ "titleBar.activeBackground": "#121212",
+ "titleBar.inactiveForeground": "#959da5",
+ "titleBar.inactiveBackground": "#121212",
+ "titleBar.border": "#181818",
+ "activityBar.foreground": "#dbd7caee",
+ "activityBar.inactiveForeground": "#dedcd550",
+ "activityBar.background": "#121212",
+ "activityBarBadge.foreground": "#121212",
+ "activityBarBadge.background": "#bfbaaa",
+ "activityBar.activeBorder": "#4d9375",
+ "activityBar.border": "#191919",
+ "sideBar.foreground": "#bfbaaa",
+ "sideBar.background": "#121212",
+ "sideBar.border": "#191919",
+ "sideBarTitle.foreground": "#dbd7caee",
+ "sideBarSectionHeader.foreground": "#dbd7caee",
+ "sideBarSectionHeader.background": "#121212",
+ "sideBarSectionHeader.border": "#191919",
+ "list.hoverForeground": "#dbd7caee",
+ "list.inactiveSelectionForeground": "#dbd7caee",
+ "list.activeSelectionForeground": "#dbd7caee",
+ "list.hoverBackground": "#181818",
+ "list.inactiveSelectionBackground": "#181818",
+ "list.activeSelectionBackground": "#181818",
+ "list.inactiveFocusBackground": "#121212",
+ "list.focusBackground": "#181818",
+ "list.highlightForeground": "#4d9375",
+ "tree.indentGuidesStroke": "#2f363d",
+ "notificationCenterHeader.foreground": "#959da5",
+ "notificationCenterHeader.background": "#121212",
+ "notifications.foreground": "#dbd7caee",
+ "notifications.background": "#121212",
+ "notifications.border": "#191919",
+ "notificationsErrorIcon.foreground": "#cb7676",
+ "notificationsWarningIcon.foreground": "#d4976c",
+ "notificationsInfoIcon.foreground": "#6394bf",
+ "pickerGroup.border": "#191919",
+ "pickerGroup.foreground": "#dbd7caee",
+ "quickInput.background": "#121212",
+ "quickInput.foreground": "#dbd7caee",
+ "quickInputList.focusBackground": "#181818",
+ "statusBar.foreground": "#bfbaaa",
+ "statusBar.background": "#121212",
+ "statusBar.border": "#191919",
+ "statusBar.noFolderBackground": "#121212",
+ "statusBar.debuggingBackground": "#181818",
+ "statusBar.debuggingForeground": "#bfbaaa",
+ "statusBarItem.prominentBackground": "#181818",
+ "editorGroupHeader.tabsBackground": "#121212",
+ "editorGroupHeader.tabsBorder": "#191919",
+ "editorGroup.border": "#191919",
+ "tab.activeForeground": "#dbd7caee",
+ "tab.inactiveForeground": "#959da5",
+ "tab.inactiveBackground": "#121212",
+ "tab.activeBackground": "#121212",
+ "tab.hoverBackground": "#181818",
+ "tab.unfocusedHoverBackground": "#121212",
+ "tab.border": "#191919",
+ "tab.unfocusedActiveBorderTop": "#191919",
+ "tab.activeBorder": "#191919",
+ "tab.unfocusedActiveBorder": "#191919",
+ "tab.activeBorderTop": "#dedcd590",
+ "breadcrumb.foreground": "#959da5",
+ "breadcrumb.focusForeground": "#dbd7caee",
+ "breadcrumb.background": "#181818",
+ "breadcrumb.activeSelectionForeground": "#eeeeee15",
+ "breadcrumbPicker.background": "#121212",
+ "editor.foreground": "#dbd7caee",
+ "editor.background": "#121212",
+ "editorWidget.background": "#121212",
+ "editor.foldBackground": "#eeeeee10",
+ "editor.lineHighlightBackground": "#181818",
+ "editorLineNumber.foreground": "#dedcd550",
+ "editorLineNumber.activeForeground": "#bfbaaa",
+ "editorIndentGuide.background": "#ffffff15",
+ "editorIndentGuide.activeBackground": "#ffffff30",
+ "editorWhitespace.foreground": "#ffffff15",
+ "editor.findMatchBackground": "#e6cc7722",
+ "editor.findMatchHighlightBackground": "#e6cc7744",
+ "editor.inactiveSelectionBackground": "#eeeeee08",
+ "editor.selectionBackground": "#eeeeee15",
+ "editor.selectionHighlightBackground": "#eeeeee08",
+ "editor.wordHighlightBackground": "#1c6b4805",
+ "editor.wordHighlightStrongBackground": "#1c6b4810",
+ "editorBracketMatch.background": "#4d937520",
+ "diffEditor.insertedTextBackground": "#4d937522",
+ "diffEditor.removedTextBackground": "#ab595922",
+ "scrollbar.shadow": "#0000",
+ "scrollbarSlider.background": "#dedcd510",
+ "scrollbarSlider.hoverBackground": "#dedcd550",
+ "scrollbarSlider.activeBackground": "#dedcd550",
+ "editorOverviewRuler.border": "#111",
+ "panel.background": "#121212",
+ "panel.border": "#191919",
+ "panelTitle.activeBorder": "#4d9375",
+ "panelTitle.activeForeground": "#dbd7caee",
+ "panelTitle.inactiveForeground": "#959da5",
+ "panelInput.border": "#2f363d",
+ "terminal.foreground": "#dbd7caee",
+ "terminal.selectionBackground": "#eeeeee15",
+ "terminal.ansiBrightBlack": "#777777",
+ "terminal.ansiBrightBlue": "#6394bf",
+ "terminal.ansiBrightCyan": "#5eaab5",
+ "terminal.ansiBrightGreen": "#4d9375",
+ "terminal.ansiBrightMagenta": "#d9739f",
+ "terminal.ansiBrightRed": "#cb7676",
+ "terminal.ansiBrightWhite": "#ffffff",
+ "terminal.ansiBrightYellow": "#e6cc77",
+ "terminal.ansiBlack": "#393a34",
+ "terminal.ansiBlue": "#6394bf",
+ "terminal.ansiCyan": "#5eaab5",
+ "terminal.ansiGreen": "#4d9375",
+ "terminal.ansiMagenta": "#d9739f",
+ "terminal.ansiRed": "#cb7676",
+ "terminal.ansiWhite": "#dbd7caee",
+ "terminal.ansiYellow": "#e6cc77",
+ "gitDecoration.addedResourceForeground": "#4d9375",
+ "gitDecoration.modifiedResourceForeground": "#6394bf",
+ "gitDecoration.deletedResourceForeground": "#cb7676",
+ "gitDecoration.untrackedResourceForeground": "#5eaab5",
+ "gitDecoration.ignoredResourceForeground": "#dedcd550",
+ "gitDecoration.conflictingResourceForeground": "#d4976c",
+ "gitDecoration.submoduleResourceForeground": "#dedcd590",
+ "editorGutter.modifiedBackground": "#6394bf",
+ "editorGutter.addedBackground": "#4d9375",
+ "editorGutter.deletedBackground": "#cb7676",
+ "editorBracketHighlight.foreground1": "#5eaab5",
+ "editorBracketHighlight.foreground2": "#4d9375",
+ "editorBracketHighlight.foreground3": "#d4976c",
+ "editorBracketHighlight.foreground4": "#d9739f",
+ "editorBracketHighlight.foreground5": "#e6cc77",
+ "editorBracketHighlight.foreground6": "#6394bf",
+ "debugToolBar.background": "#121212",
+ "editor.stackFrameHighlightBackground": "#a707",
+ "editor.focusedStackFrameHighlightBackground": "#b808",
+ "peekViewEditor.matchHighlightBackground": "#ffd33d33",
+ "peekViewResult.matchHighlightBackground": "#ffd33d33",
+ "peekViewEditor.background": "#121212",
+ "peekViewResult.background": "#121212",
+ "settings.headerForeground": "#dbd7caee",
+ "settings.modifiedItemIndicator": "#4d9375",
+ "welcomePage.buttonBackground": "#2f363d",
+ "welcomePage.buttonHoverBackground": "#444d56",
+ "problemsErrorIcon.foreground": "#cb7676",
+ "problemsWarningIcon.foreground": "#d4976c",
+ "problemsInfoIcon.foreground": "#6394bf",
+ "editorError.foreground": "#cb7676",
+ "editorWarning.foreground": "#d4976c",
+ "editorInfo.foreground": "#6394bf",
+ "editorHint.foreground": "#4d9375",
+ "editorGutter.commentRangeForeground": "#dedcd550",
+ "editorGutter.foldingControlForeground": "#dedcd590",
+ "editorInlayHint.foreground": "#666666",
+ "editorInlayHint.background": "#00000000",
+ "editorStickyScroll.background": "#181818",
+ "editorStickyScrollHover.background": "#181818",
+ "menu.separatorBackground": "#191919"
+ },
+ "semanticHighlighting": true,
+ "semanticTokenColors": {
+ "namespace": "#db889a",
+ "property": "#b8a965",
+ "interface": "#5d99a9",
+ "type": "#5d99a9",
+ "class": "#7f8ac7"
+ },
+ "tokenColors": [
+ {
+ "scope": ["comment", "punctuation.definition.comment", "string.comment"],
+ "settings": {
+ "foreground": "#758575dd"
+ }
+ },
+ {
+ "scope": [
+ "delimiter.bracket",
+ "delimiter",
+ "invalid.illegal.character-not-allowed-here.html",
+ "keyword.operator.rest",
+ "keyword.operator.spread",
+ "keyword.operator.type.annotation",
+ "keyword.operator.relational",
+ "keyword.operator.assignment",
+ "meta.brace",
+ "meta.tag.block.any.html",
+ "meta.tag.inline.any.html",
+ "meta.tag.structure.input.void.html",
+ "meta.type.annotation",
+ "meta.embedded.block.github-actions-expression",
+ "storage.type.function.arrow",
+ "keyword.operator.type",
+ "meta.objectliteral.ts",
+ "punctuation"
+ ],
+ "settings": {
+ "foreground": "#666666"
+ }
+ },
+ {
+ "scope": [
+ "constant",
+ "entity.name.constant",
+ "variable.language",
+ "meta.definition.variable"
+ ],
+ "settings": {
+ "foreground": "#c99076"
+ }
+ },
+ {
+ "scope": ["entity", "entity.name"],
+ "settings": {
+ "foreground": "#80a665"
+ }
+ },
+ {
+ "scope": "variable.parameter.function",
+ "settings": {
+ "foreground": "#dbd7caee"
+ }
+ },
+ {
+ "scope": ["entity.name.tag", "tag.html"],
+ "settings": {
+ "foreground": "#4d9375"
+ }
+ },
+ {
+ "scope": "entity.name.function",
+ "settings": {
+ "foreground": "#80a665"
+ }
+ },
+ {
+ "scope": ["keyword", "storage.type.class.jsdoc"],
+ "settings": {
+ "foreground": "#4d9375"
+ }
+ },
+ {
+ "scope": [
+ "storage",
+ "storage.type",
+ "support.type.builtin",
+ "constant.language.undefined",
+ "constant.language.null"
+ ],
+ "settings": {
+ "foreground": "#cb7676"
+ }
+ },
+ {
+ "scope": [
+ "text.html.derivative",
+ "storage.modifier.package",
+ "storage.modifier.import",
+ "storage.type.java"
+ ],
+ "settings": {
+ "foreground": "#dbd7caee"
+ }
+ },
+ {
+ "scope": ["string", "string punctuation.section.embedded source", "attribute.value"],
+ "settings": {
+ "foreground": "#c98a7d"
+ }
+ },
+ {
+ "scope": ["punctuation.definition.string", "punctuation.support.type.property-name"],
+ "settings": {
+ "foreground": "#c98a7d99"
+ }
+ },
+ {
+ "scope": "support",
+ "settings": {
+ "foreground": "#b8a965"
+ }
+ },
+ {
+ "scope": [
+ "property",
+ "meta.property-name",
+ "meta.object-literal.key",
+ "entity.name.tag.yaml",
+ "attribute.name"
+ ],
+ "settings": {
+ "foreground": "#b8a965"
+ }
+ },
+ {
+ "scope": [
+ "entity.other.attribute-name",
+ "invalid.deprecated.entity.other.attribute-name.html"
+ ],
+ "settings": {
+ "foreground": "#bd976a"
+ }
+ },
+ {
+ "scope": ["variable", "identifier"],
+ "settings": {
+ "foreground": "#bd976a"
+ }
+ },
+ {
+ "scope": ["support.type.primitive", "entity.name.type"],
+ "settings": {
+ "foreground": "#5DA994"
+ }
+ },
+ {
+ "scope": "namespace",
+ "settings": {
+ "foreground": "#db889a"
+ }
+ },
+ {
+ "scope": ["keyword.operator", "keyword.operator.assignment.compound", "meta.var.expr.ts"],
+ "settings": {
+ "foreground": "#cb7676"
+ }
+ },
+ {
+ "scope": "invalid.broken",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": "invalid.deprecated",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": "invalid.illegal",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": "invalid.unimplemented",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": "carriage-return",
+ "settings": {
+ "fontStyle": "italic underline",
+ "background": "#f97583",
+ "foreground": "#24292e",
+ "content": "^M"
+ }
+ },
+ {
+ "scope": "message.error",
+ "settings": {
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": "string variable",
+ "settings": {
+ "foreground": "#c98a7d"
+ }
+ },
+ {
+ "scope": ["source.regexp", "string.regexp"],
+ "settings": {
+ "foreground": "#c4704f"
+ }
+ },
+ {
+ "scope": [
+ "string.regexp.character-class",
+ "string.regexp constant.character.escape",
+ "string.regexp source.ruby.embedded",
+ "string.regexp string.regexp.arbitrary-repitition"
+ ],
+ "settings": {
+ "foreground": "#c98a7d"
+ }
+ },
+ {
+ "scope": "string.regexp constant.character.escape",
+ "settings": {
+ "foreground": "#e6cc77"
+ }
+ },
+ {
+ "scope": ["support.constant"],
+ "settings": {
+ "foreground": "#c99076"
+ }
+ },
+ {
+ "scope": ["constant.numeric", "number"],
+ "settings": {
+ "foreground": "#4C9A91"
+ }
+ },
+ {
+ "scope": ["keyword.other.unit"],
+ "settings": {
+ "foreground": "#cb7676"
+ }
+ },
+ {
+ "scope": ["constant.language.boolean", "constant.language"],
+ "settings": {
+ "foreground": "#4d9375"
+ }
+ },
+ {
+ "scope": "meta.module-reference",
+ "settings": {
+ "foreground": "#4d9375"
+ }
+ },
+ {
+ "scope": "punctuation.definition.list.begin.markdown",
+ "settings": {
+ "foreground": "#d4976c"
+ }
+ },
+ {
+ "scope": ["markup.heading", "markup.heading entity.name"],
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#4d9375"
+ }
+ },
+ {
+ "scope": "markup.quote",
+ "settings": {
+ "foreground": "#5d99a9"
+ }
+ },
+ {
+ "scope": "markup.italic",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#dbd7caee"
+ }
+ },
+ {
+ "scope": "markup.bold",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#dbd7caee"
+ }
+ },
+ {
+ "scope": "markup.raw",
+ "settings": {
+ "foreground": "#4d9375"
+ }
+ },
+ {
+ "scope": ["markup.deleted", "meta.diff.header.from-file", "punctuation.definition.deleted"],
+ "settings": {
+ "background": "#86181d",
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": ["markup.inserted", "meta.diff.header.to-file", "punctuation.definition.inserted"],
+ "settings": {
+ "background": "#144620",
+ "foreground": "#85e89d"
+ }
+ },
+ {
+ "scope": ["markup.changed", "punctuation.definition.changed"],
+ "settings": {
+ "background": "#c24e00",
+ "foreground": "#ffab70"
+ }
+ },
+ {
+ "scope": ["markup.ignored", "markup.untracked"],
+ "settings": {
+ "foreground": "#2f363d",
+ "background": "#79b8ff"
+ }
+ },
+ {
+ "scope": "meta.diff.range",
+ "settings": {
+ "foreground": "#b392f0",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "meta.diff.header",
+ "settings": {
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": "meta.separator",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": "meta.output",
+ "settings": {
+ "foreground": "#79b8ff"
+ }
+ },
+ {
+ "scope": [
+ "brackethighlighter.tag",
+ "brackethighlighter.curly",
+ "brackethighlighter.round",
+ "brackethighlighter.square",
+ "brackethighlighter.angle",
+ "brackethighlighter.quote"
+ ],
+ "settings": {
+ "foreground": "#d1d5da"
+ }
+ },
+ {
+ "scope": "brackethighlighter.unmatched",
+ "settings": {
+ "foreground": "#fdaeb7"
+ }
+ },
+ {
+ "scope": [
+ "constant.other.reference.link",
+ "string.other.link",
+ "punctuation.definition.string.begin.markdown",
+ "punctuation.definition.string.end.markdown"
+ ],
+ "settings": {
+ "foreground": "#c98a7d"
+ }
+ },
+ {
+ "scope": ["markup.underline.link.markdown"],
+ "settings": {
+ "foreground": "#dedcd590",
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "scope": ["type.identifier"],
+ "settings": {
+ "foreground": "#7f8ac7"
+ }
+ },
+ {
+ "scope": ["entity.other.attribute-name.html.vue"],
+ "settings": {
+ "foreground": "#80a665"
+ }
+ },
+ {
+ "scope": ["invalid.illegal.unrecognized-tag.html"],
+ "settings": {
+ "fontStyle": "normal"
+ }
+ }
+ ],
+ "rules": [
+ {
+ "token": "comment",
+ "foreground": "758575dd"
+ },
+ {
+ "token": "punctuation.definition.comment",
+ "foreground": "758575dd"
+ },
+ {
+ "token": "string.comment",
+ "foreground": "758575dd"
+ },
+ {
+ "token": "delimiter.bracket",
+ "foreground": "666666"
+ },
+ {
+ "token": "delimiter",
+ "foreground": "666666"
+ },
+ {
+ "token": "invalid.illegal.character-not-allowed-here.html",
+ "foreground": "666666"
+ },
+ {
+ "token": "keyword.operator.rest",
+ "foreground": "666666"
+ },
+ {
+ "token": "keyword.operator.spread",
+ "foreground": "666666"
+ },
+ {
+ "token": "keyword.operator.type.annotation",
+ "foreground": "666666"
+ },
+ {
+ "token": "keyword.operator.relational",
+ "foreground": "666666"
+ },
+ {
+ "token": "keyword.operator.assignment",
+ "foreground": "666666"
+ },
+ {
+ "token": "meta.brace",
+ "foreground": "666666"
+ },
+ {
+ "token": "meta.tag.block.any.html",
+ "foreground": "666666"
+ },
+ {
+ "token": "meta.tag.inline.any.html",
+ "foreground": "666666"
+ },
+ {
+ "token": "meta.tag.structure.input.void.html",
+ "foreground": "666666"
+ },
+ {
+ "token": "meta.type.annotation",
+ "foreground": "666666"
+ },
+ {
+ "token": "meta.embedded.block.github-actions-expression",
+ "foreground": "666666"
+ },
+ {
+ "token": "storage.type.function.arrow",
+ "foreground": "666666"
+ },
+ {
+ "token": "keyword.operator.type",
+ "foreground": "666666"
+ },
+ {
+ "token": "meta.objectliteral.ts",
+ "foreground": "666666"
+ },
+ {
+ "token": "punctuation",
+ "foreground": "666666"
+ },
+ {
+ "token": "constant",
+ "foreground": "c99076"
+ },
+ {
+ "token": "entity.name.constant",
+ "foreground": "c99076"
+ },
+ {
+ "token": "variable.language",
+ "foreground": "c99076"
+ },
+ {
+ "token": "meta.definition.variable",
+ "foreground": "c99076"
+ },
+ {
+ "token": "entity",
+ "foreground": "80a665"
+ },
+ {
+ "token": "entity.name",
+ "foreground": "80a665"
+ },
+ {
+ "token": "variable.parameter.function",
+ "foreground": "dbd7caee"
+ },
+ {
+ "token": "entity.name.tag",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "tag.html",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "entity.name.function",
+ "foreground": "80a665"
+ },
+ {
+ "token": "keyword",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "storage.type.class.jsdoc",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "storage",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "storage.type",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "support.type.builtin",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "constant.language.undefined",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "constant.language.null",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "text.html.derivative",
+ "foreground": "dbd7caee"
+ },
+ {
+ "token": "storage.modifier.package",
+ "foreground": "dbd7caee"
+ },
+ {
+ "token": "storage.modifier.import",
+ "foreground": "dbd7caee"
+ },
+ {
+ "token": "storage.type.java",
+ "foreground": "dbd7caee"
+ },
+ {
+ "token": "string",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "string punctuation.section.embedded source",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "attribute.value",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "punctuation.definition.string",
+ "foreground": "c98a7d99"
+ },
+ {
+ "token": "punctuation.support.type.property-name",
+ "foreground": "c98a7d99"
+ },
+ {
+ "token": "support",
+ "foreground": "b8a965"
+ },
+ {
+ "token": "property",
+ "foreground": "b8a965"
+ },
+ {
+ "token": "meta.property-name",
+ "foreground": "b8a965"
+ },
+ {
+ "token": "meta.object-literal.key",
+ "foreground": "b8a965"
+ },
+ {
+ "token": "entity.name.tag.yaml",
+ "foreground": "b8a965"
+ },
+ {
+ "token": "attribute.name",
+ "foreground": "b8a965"
+ },
+ {
+ "token": "entity.other.attribute-name",
+ "foreground": "bd976a"
+ },
+ {
+ "token": "invalid.deprecated.entity.other.attribute-name.html",
+ "foreground": "bd976a"
+ },
+ {
+ "token": "variable",
+ "foreground": "bd976a"
+ },
+ {
+ "token": "identifier",
+ "foreground": "bd976a"
+ },
+ {
+ "token": "support.type.primitive",
+ "foreground": "5DA994"
+ },
+ {
+ "token": "entity.name.type",
+ "foreground": "5DA994"
+ },
+ {
+ "token": "namespace",
+ "foreground": "db889a"
+ },
+ {
+ "token": "keyword.operator",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "keyword.operator.assignment.compound",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "meta.var.expr.ts",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "invalid.broken",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "invalid.deprecated",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "invalid.illegal",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "invalid.unimplemented",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "carriage-return",
+ "foreground": "24292e"
+ },
+ {
+ "token": "message.error",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "string variable",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "source.regexp",
+ "foreground": "c4704f"
+ },
+ {
+ "token": "string.regexp",
+ "foreground": "c4704f"
+ },
+ {
+ "token": "string.regexp.character-class",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "string.regexp constant.character.escape",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "string.regexp source.ruby.embedded",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "string.regexp string.regexp.arbitrary-repitition",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "string.regexp constant.character.escape",
+ "foreground": "e6cc77"
+ },
+ {
+ "token": "support.constant",
+ "foreground": "c99076"
+ },
+ {
+ "token": "constant.numeric",
+ "foreground": "4C9A91"
+ },
+ {
+ "token": "number",
+ "foreground": "4C9A91"
+ },
+ {
+ "token": "keyword.other.unit",
+ "foreground": "cb7676"
+ },
+ {
+ "token": "constant.language.boolean",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "constant.language",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "meta.module-reference",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "punctuation.definition.list.begin.markdown",
+ "foreground": "d4976c"
+ },
+ {
+ "token": "markup.heading",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "markup.heading entity.name",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "markup.quote",
+ "foreground": "5d99a9"
+ },
+ {
+ "token": "markup.italic",
+ "foreground": "dbd7caee"
+ },
+ {
+ "token": "markup.bold",
+ "foreground": "dbd7caee"
+ },
+ {
+ "token": "markup.raw",
+ "foreground": "4d9375"
+ },
+ {
+ "token": "markup.deleted",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "meta.diff.header.from-file",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "punctuation.definition.deleted",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "markup.inserted",
+ "foreground": "85e89d"
+ },
+ {
+ "token": "meta.diff.header.to-file",
+ "foreground": "85e89d"
+ },
+ {
+ "token": "punctuation.definition.inserted",
+ "foreground": "85e89d"
+ },
+ {
+ "token": "markup.changed",
+ "foreground": "ffab70"
+ },
+ {
+ "token": "punctuation.definition.changed",
+ "foreground": "ffab70"
+ },
+ {
+ "token": "markup.ignored",
+ "foreground": "2f363d"
+ },
+ {
+ "token": "markup.untracked",
+ "foreground": "2f363d"
+ },
+ {
+ "token": "meta.diff.range",
+ "foreground": "b392f0"
+ },
+ {
+ "token": "meta.diff.header",
+ "foreground": "79b8ff"
+ },
+ {
+ "token": "meta.separator",
+ "foreground": "79b8ff"
+ },
+ {
+ "token": "meta.output",
+ "foreground": "79b8ff"
+ },
+ {
+ "token": "brackethighlighter.tag",
+ "foreground": "d1d5da"
+ },
+ {
+ "token": "brackethighlighter.curly",
+ "foreground": "d1d5da"
+ },
+ {
+ "token": "brackethighlighter.round",
+ "foreground": "d1d5da"
+ },
+ {
+ "token": "brackethighlighter.square",
+ "foreground": "d1d5da"
+ },
+ {
+ "token": "brackethighlighter.angle",
+ "foreground": "d1d5da"
+ },
+ {
+ "token": "brackethighlighter.quote",
+ "foreground": "d1d5da"
+ },
+ {
+ "token": "brackethighlighter.unmatched",
+ "foreground": "fdaeb7"
+ },
+ {
+ "token": "constant.other.reference.link",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "string.other.link",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "punctuation.definition.string.begin.markdown",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "punctuation.definition.string.end.markdown",
+ "foreground": "c98a7d"
+ },
+ {
+ "token": "markup.underline.link.markdown",
+ "foreground": "dedcd590"
+ },
+ {
+ "token": "type.identifier",
+ "foreground": "7f8ac7"
+ },
+ {
+ "token": "entity.other.attribute-name.html.vue",
+ "foreground": "80a665"
+ },
+ {
+ "token": "invalid.illegal.unrecognized-tag.html"
+ }
+ ]
+}
diff --git a/node_modules/shiki/themes/vitesse-light.json b/node_modules/shiki/themes/vitesse-light.json
new file mode 100644
index 0000000..a7a1df5
--- /dev/null
+++ b/node_modules/shiki/themes/vitesse-light.json
@@ -0,0 +1,1089 @@
+{
+ "name": "vitesse-light",
+ "base": "vs",
+ "colors": {
+ "focusBorder": "#00000000",
+ "foreground": "#393a34",
+ "descriptionForeground": "#393a3490",
+ "errorForeground": "#ab5959",
+ "textLink.foreground": "#1c6b48",
+ "textLink.activeForeground": "#1c6b48",
+ "textBlockQuote.background": "#ffffff",
+ "textBlockQuote.border": "#f0f0f0",
+ "textCodeBlock.background": "#ffffff",
+ "textPreformat.foreground": "#586069",
+ "textSeparator.foreground": "#d1d5da",
+ "button.background": "#1c6b48",
+ "button.foreground": "#ffffff",
+ "button.hoverBackground": "#1c6b48",
+ "checkbox.background": "#f7f7f7",
+ "checkbox.border": "#d1d5da",
+ "dropdown.background": "#ffffff",
+ "dropdown.border": "#f0f0f0",
+ "dropdown.foreground": "#393a34",
+ "dropdown.listBackground": "#f7f7f7",
+ "input.background": "#f7f7f7",
+ "input.border": "#f0f0f0",
+ "input.foreground": "#393a34",
+ "input.placeholderForeground": "#393a3490",
+ "inputOption.activeBackground": "#393a3450",
+ "badge.foreground": "#ffffff",
+ "badge.background": "#393a3490",
+ "progressBar.background": "#1c6b48",
+ "titleBar.activeForeground": "#4e4f47",
+ "titleBar.activeBackground": "#ffffff",
+ "titleBar.inactiveForeground": "#6a737d",
+ "titleBar.inactiveBackground": "#ffffff",
+ "titleBar.border": "#f7f7f7",
+ "activityBar.foreground": "#393a34",
+ "activityBar.inactiveForeground": "#393a3450",
+ "activityBar.background": "#ffffff",
+ "activityBarBadge.foreground": "#ffffff",
+ "activityBarBadge.background": "#4e4f47",
+ "activityBar.activeBorder": "#1c6b48",
+ "activityBar.border": "#f0f0f0",
+ "sideBar.foreground": "#4e4f47",
+ "sideBar.background": "#ffffff",
+ "sideBar.border": "#f0f0f0",
+ "sideBarTitle.foreground": "#393a34",
+ "sideBarSectionHeader.foreground": "#393a34",
+ "sideBarSectionHeader.background": "#ffffff",
+ "sideBarSectionHeader.border": "#f0f0f0",
+ "list.hoverForeground": "#393a34",
+ "list.inactiveSelectionForeground": "#393a34",
+ "list.activeSelectionForeground": "#393a34",
+ "list.hoverBackground": "#f7f7f7",
+ "list.inactiveSelectionBackground": "#f7f7f7",
+ "list.activeSelectionBackground": "#f7f7f7",
+ "list.inactiveFocusBackground": "#ffffff",
+ "list.focusBackground": "#f7f7f7",
+ "list.highlightForeground": "#1c6b48",
+ "tree.indentGuidesStroke": "#e1e4e8",
+ "notificationCenterHeader.foreground": "#6a737d",
+ "notificationCenterHeader.background": "#ffffff",
+ "notifications.foreground": "#393a34",
+ "notifications.background": "#ffffff",
+ "notifications.border": "#f0f0f0",
+ "notificationsErrorIcon.foreground": "#ab5959",
+ "notificationsWarningIcon.foreground": "#a65e2b",
+ "notificationsInfoIcon.foreground": "#296aa3",
+ "pickerGroup.border": "#f0f0f0",
+ "pickerGroup.foreground": "#393a34",
+ "quickInput.background": "#ffffff",
+ "quickInput.foreground": "#393a34",
+ "quickInputList.focusBackground": "#f7f7f7",
+ "statusBar.foreground": "#4e4f47",
+ "statusBar.background": "#ffffff",
+ "statusBar.border": "#f0f0f0",
+ "statusBar.noFolderBackground": "#ffffff",
+ "statusBar.debuggingBackground": "#f7f7f7",
+ "statusBar.debuggingForeground": "#4e4f47",
+ "statusBarItem.prominentBackground": "#f7f7f7",
+ "editorGroupHeader.tabsBackground": "#ffffff",
+ "editorGroupHeader.tabsBorder": "#f0f0f0",
+ "editorGroup.border": "#f0f0f0",
+ "tab.activeForeground": "#393a34",
+ "tab.inactiveForeground": "#6a737d",
+ "tab.inactiveBackground": "#ffffff",
+ "tab.activeBackground": "#ffffff",
+ "tab.hoverBackground": "#f7f7f7",
+ "tab.unfocusedHoverBackground": "#ffffff",
+ "tab.border": "#f0f0f0",
+ "tab.unfocusedActiveBorderTop": "#f0f0f0",
+ "tab.activeBorder": "#f0f0f0",
+ "tab.unfocusedActiveBorder": "#f0f0f0",
+ "tab.activeBorderTop": "#393a3490",
+ "breadcrumb.foreground": "#6a737d",
+ "breadcrumb.focusForeground": "#393a34",
+ "breadcrumb.background": "#f7f7f7",
+ "breadcrumb.activeSelectionForeground": "#22222215",
+ "breadcrumbPicker.background": "#ffffff",
+ "editor.foreground": "#393a34",
+ "editor.background": "#ffffff",
+ "editorWidget.background": "#ffffff",
+ "editor.foldBackground": "#22222210",
+ "editor.lineHighlightBackground": "#f7f7f7",
+ "editorLineNumber.foreground": "#393a3450",
+ "editorLineNumber.activeForeground": "#4e4f47",
+ "editorIndentGuide.background": "#00000015",
+ "editorIndentGuide.activeBackground": "#00000030",
+ "editorWhitespace.foreground": "#00000015",
+ "editor.findMatchBackground": "#e6cc7744",
+ "editor.findMatchHighlightBackground": "#e6cc7766",
+ "editor.inactiveSelectionBackground": "#22222208",
+ "editor.selectionBackground": "#22222215",
+ "editor.selectionHighlightBackground": "#22222208",
+ "editor.wordHighlightBackground": "#1c6b4805",
+ "editor.wordHighlightStrongBackground": "#1c6b4810",
+ "editorBracketMatch.background": "#1c6b4820",
+ "diffEditor.insertedTextBackground": "#1c6b4815",
+ "diffEditor.removedTextBackground": "#ab595910",
+ "scrollbar.shadow": "#6a737d33",
+ "scrollbarSlider.background": "#393a3410",
+ "scrollbarSlider.hoverBackground": "#393a3450",
+ "scrollbarSlider.activeBackground": "#393a3450",
+ "editorOverviewRuler.border": "#fff",
+ "panel.background": "#ffffff",
+ "panel.border": "#f0f0f0",
+ "panelTitle.activeBorder": "#1c6b48",
+ "panelTitle.activeForeground": "#393a34",
+ "panelTitle.inactiveForeground": "#6a737d",
+ "panelInput.border": "#e1e4e8",
+ "terminal.foreground": "#393a34",
+ "terminal.selectionBackground": "#22222215",
+ "terminal.ansiBrightBlack": "#aaaaaa",
+ "terminal.ansiBrightBlue": "#296aa3",
+ "terminal.ansiBrightCyan": "#2993a3",
+ "terminal.ansiBrightGreen": "#1e754f",
+ "terminal.ansiBrightMagenta": "#a13865",
+ "terminal.ansiBrightRed": "#ab5959",
+ "terminal.ansiBrightWhite": "#dddddd",
+ "terminal.ansiBrightYellow": "#bda437",
+ "terminal.ansiBlack": "#121212",
+ "terminal.ansiBlue": "#296aa3",
+ "terminal.ansiCyan": "#2993a3",
+ "terminal.ansiGreen": "#1e754f",
+ "terminal.ansiMagenta": "#a13865",
+ "terminal.ansiRed": "#ab5959",
+ "terminal.ansiWhite": "#dbd7caee",
+ "terminal.ansiYellow": "#bda437",
+ "gitDecoration.addedResourceForeground": "#1e754f",
+ "gitDecoration.modifiedResourceForeground": "#296aa3",
+ "gitDecoration.deletedResourceForeground": "#ab5959",
+ "gitDecoration.untrackedResourceForeground": "#2993a3",
+ "gitDecoration.ignoredResourceForeground": "#393a3450",
+ "gitDecoration.conflictingResourceForeground": "#a65e2b",
+ "gitDecoration.submoduleResourceForeground": "#393a3490",
+ "editorGutter.modifiedBackground": "#296aa3",
+ "editorGutter.addedBackground": "#1e754f",
+ "editorGutter.deletedBackground": "#ab5959",
+ "editorBracketHighlight.foreground1": "#2993a3",
+ "editorBracketHighlight.foreground2": "#1e754f",
+ "editorBracketHighlight.foreground3": "#a65e2b",
+ "editorBracketHighlight.foreground4": "#a13865",
+ "editorBracketHighlight.foreground5": "#bda437",
+ "editorBracketHighlight.foreground6": "#296aa3",
+ "debugToolBar.background": "#ffffff",
+ "editor.stackFrameHighlightBackground": "#fffbdd",
+ "editor.focusedStackFrameHighlightBackground": "#fff5b1",
+ "peekViewEditor.background": "#ffffff",
+ "peekViewResult.background": "#ffffff",
+ "settings.headerForeground": "#393a34",
+ "settings.modifiedItemIndicator": "#1c6b48",
+ "welcomePage.buttonBackground": "#f6f8fa",
+ "welcomePage.buttonHoverBackground": "#e1e4e8",
+ "problemsErrorIcon.foreground": "#ab5959",
+ "problemsWarningIcon.foreground": "#a65e2b",
+ "problemsInfoIcon.foreground": "#296aa3",
+ "editorError.foreground": "#ab5959",
+ "editorWarning.foreground": "#a65e2b",
+ "editorInfo.foreground": "#296aa3",
+ "editorHint.foreground": "#1e754f",
+ "editorGutter.commentRangeForeground": "#393a3450",
+ "editorGutter.foldingControlForeground": "#393a3490",
+ "editorInlayHint.foreground": "#999999",
+ "editorInlayHint.background": "#00000000",
+ "editorStickyScroll.background": "#f7f7f7",
+ "editorStickyScrollHover.background": "#f7f7f7",
+ "menu.separatorBackground": "#f0f0f0"
+ },
+ "semanticHighlighting": true,
+ "semanticTokenColors": {
+ "namespace": "#b05a78",
+ "property": "#998418",
+ "interface": "#2e808f",
+ "type": "#2e808f",
+ "class": "#5a6aa6"
+ },
+ "tokenColors": [
+ {
+ "scope": ["comment", "punctuation.definition.comment", "string.comment"],
+ "settings": {
+ "foreground": "#a0ada0"
+ }
+ },
+ {
+ "scope": [
+ "delimiter.bracket",
+ "delimiter",
+ "invalid.illegal.character-not-allowed-here.html",
+ "keyword.operator.rest",
+ "keyword.operator.spread",
+ "keyword.operator.type.annotation",
+ "keyword.operator.relational",
+ "keyword.operator.assignment",
+ "meta.brace",
+ "meta.tag.block.any.html",
+ "meta.tag.inline.any.html",
+ "meta.tag.structure.input.void.html",
+ "meta.type.annotation",
+ "meta.embedded.block.github-actions-expression",
+ "storage.type.function.arrow",
+ "keyword.operator.type",
+ "meta.objectliteral.ts",
+ "punctuation"
+ ],
+ "settings": {
+ "foreground": "#999999"
+ }
+ },
+ {
+ "scope": [
+ "constant",
+ "entity.name.constant",
+ "variable.language",
+ "meta.definition.variable"
+ ],
+ "settings": {
+ "foreground": "#a65e2b"
+ }
+ },
+ {
+ "scope": ["entity", "entity.name"],
+ "settings": {
+ "foreground": "#59873a"
+ }
+ },
+ {
+ "scope": "variable.parameter.function",
+ "settings": {
+ "foreground": "#393a34"
+ }
+ },
+ {
+ "scope": ["entity.name.tag", "tag.html"],
+ "settings": {
+ "foreground": "#1e754f"
+ }
+ },
+ {
+ "scope": "entity.name.function",
+ "settings": {
+ "foreground": "#59873a"
+ }
+ },
+ {
+ "scope": ["keyword", "storage.type.class.jsdoc"],
+ "settings": {
+ "foreground": "#1e754f"
+ }
+ },
+ {
+ "scope": [
+ "storage",
+ "storage.type",
+ "support.type.builtin",
+ "constant.language.undefined",
+ "constant.language.null"
+ ],
+ "settings": {
+ "foreground": "#ab5959"
+ }
+ },
+ {
+ "scope": [
+ "text.html.derivative",
+ "storage.modifier.package",
+ "storage.modifier.import",
+ "storage.type.java"
+ ],
+ "settings": {
+ "foreground": "#393a34"
+ }
+ },
+ {
+ "scope": ["string", "string punctuation.section.embedded source", "attribute.value"],
+ "settings": {
+ "foreground": "#b56959"
+ }
+ },
+ {
+ "scope": ["punctuation.definition.string", "punctuation.support.type.property-name"],
+ "settings": {
+ "foreground": "#b5695999"
+ }
+ },
+ {
+ "scope": "support",
+ "settings": {
+ "foreground": "#998418"
+ }
+ },
+ {
+ "scope": [
+ "property",
+ "meta.property-name",
+ "meta.object-literal.key",
+ "entity.name.tag.yaml",
+ "attribute.name"
+ ],
+ "settings": {
+ "foreground": "#998418"
+ }
+ },
+ {
+ "scope": [
+ "entity.other.attribute-name",
+ "invalid.deprecated.entity.other.attribute-name.html"
+ ],
+ "settings": {
+ "foreground": "#b07d48"
+ }
+ },
+ {
+ "scope": ["variable", "identifier"],
+ "settings": {
+ "foreground": "#b07d48"
+ }
+ },
+ {
+ "scope": ["support.type.primitive", "entity.name.type"],
+ "settings": {
+ "foreground": "#2e8f82"
+ }
+ },
+ {
+ "scope": "namespace",
+ "settings": {
+ "foreground": "#b05a78"
+ }
+ },
+ {
+ "scope": ["keyword.operator", "keyword.operator.assignment.compound", "meta.var.expr.ts"],
+ "settings": {
+ "foreground": "#ab5959"
+ }
+ },
+ {
+ "scope": "invalid.broken",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": "invalid.deprecated",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": "invalid.illegal",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": "invalid.unimplemented",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": "carriage-return",
+ "settings": {
+ "fontStyle": "italic underline",
+ "background": "#d73a49",
+ "foreground": "#fafbfc",
+ "content": "^M"
+ }
+ },
+ {
+ "scope": "message.error",
+ "settings": {
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": "string variable",
+ "settings": {
+ "foreground": "#b56959"
+ }
+ },
+ {
+ "scope": ["source.regexp", "string.regexp"],
+ "settings": {
+ "foreground": "#ab5e3f"
+ }
+ },
+ {
+ "scope": [
+ "string.regexp.character-class",
+ "string.regexp constant.character.escape",
+ "string.regexp source.ruby.embedded",
+ "string.regexp string.regexp.arbitrary-repitition"
+ ],
+ "settings": {
+ "foreground": "#b56959"
+ }
+ },
+ {
+ "scope": "string.regexp constant.character.escape",
+ "settings": {
+ "foreground": "#bda437"
+ }
+ },
+ {
+ "scope": ["support.constant"],
+ "settings": {
+ "foreground": "#a65e2b"
+ }
+ },
+ {
+ "scope": ["constant.numeric", "number"],
+ "settings": {
+ "foreground": "#2f798a"
+ }
+ },
+ {
+ "scope": ["keyword.other.unit"],
+ "settings": {
+ "foreground": "#ab5959"
+ }
+ },
+ {
+ "scope": ["constant.language.boolean", "constant.language"],
+ "settings": {
+ "foreground": "#1e754f"
+ }
+ },
+ {
+ "scope": "meta.module-reference",
+ "settings": {
+ "foreground": "#1c6b48"
+ }
+ },
+ {
+ "scope": "punctuation.definition.list.begin.markdown",
+ "settings": {
+ "foreground": "#a65e2b"
+ }
+ },
+ {
+ "scope": ["markup.heading", "markup.heading entity.name"],
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#1c6b48"
+ }
+ },
+ {
+ "scope": "markup.quote",
+ "settings": {
+ "foreground": "#2e808f"
+ }
+ },
+ {
+ "scope": "markup.italic",
+ "settings": {
+ "fontStyle": "italic",
+ "foreground": "#393a34"
+ }
+ },
+ {
+ "scope": "markup.bold",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#393a34"
+ }
+ },
+ {
+ "scope": "markup.raw",
+ "settings": {
+ "foreground": "#1c6b48"
+ }
+ },
+ {
+ "scope": ["markup.deleted", "meta.diff.header.from-file", "punctuation.definition.deleted"],
+ "settings": {
+ "background": "#ffeef0",
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": ["markup.inserted", "meta.diff.header.to-file", "punctuation.definition.inserted"],
+ "settings": {
+ "background": "#f0fff4",
+ "foreground": "#22863a"
+ }
+ },
+ {
+ "scope": ["markup.changed", "punctuation.definition.changed"],
+ "settings": {
+ "background": "#ffebda",
+ "foreground": "#e36209"
+ }
+ },
+ {
+ "scope": ["markup.ignored", "markup.untracked"],
+ "settings": {
+ "foreground": "#f6f8fa",
+ "background": "#005cc5"
+ }
+ },
+ {
+ "scope": "meta.diff.range",
+ "settings": {
+ "foreground": "#6f42c1",
+ "fontStyle": "bold"
+ }
+ },
+ {
+ "scope": "meta.diff.header",
+ "settings": {
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": "meta.separator",
+ "settings": {
+ "fontStyle": "bold",
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": "meta.output",
+ "settings": {
+ "foreground": "#005cc5"
+ }
+ },
+ {
+ "scope": [
+ "brackethighlighter.tag",
+ "brackethighlighter.curly",
+ "brackethighlighter.round",
+ "brackethighlighter.square",
+ "brackethighlighter.angle",
+ "brackethighlighter.quote"
+ ],
+ "settings": {
+ "foreground": "#586069"
+ }
+ },
+ {
+ "scope": "brackethighlighter.unmatched",
+ "settings": {
+ "foreground": "#b31d28"
+ }
+ },
+ {
+ "scope": [
+ "constant.other.reference.link",
+ "string.other.link",
+ "punctuation.definition.string.begin.markdown",
+ "punctuation.definition.string.end.markdown"
+ ],
+ "settings": {
+ "foreground": "#b56959"
+ }
+ },
+ {
+ "scope": ["markup.underline.link.markdown"],
+ "settings": {
+ "foreground": "#393a3490",
+ "fontStyle": "underline"
+ }
+ },
+ {
+ "scope": ["type.identifier"],
+ "settings": {
+ "foreground": "#5a6aa6"
+ }
+ },
+ {
+ "scope": ["entity.other.attribute-name.html.vue"],
+ "settings": {
+ "foreground": "#59873a"
+ }
+ },
+ {
+ "scope": ["invalid.illegal.unrecognized-tag.html"],
+ "settings": {
+ "fontStyle": "normal"
+ }
+ }
+ ],
+ "rules": [
+ {
+ "token": "comment",
+ "foreground": "a0ada0"
+ },
+ {
+ "token": "punctuation.definition.comment",
+ "foreground": "a0ada0"
+ },
+ {
+ "token": "string.comment",
+ "foreground": "a0ada0"
+ },
+ {
+ "token": "delimiter.bracket",
+ "foreground": "999999"
+ },
+ {
+ "token": "delimiter",
+ "foreground": "999999"
+ },
+ {
+ "token": "invalid.illegal.character-not-allowed-here.html",
+ "foreground": "999999"
+ },
+ {
+ "token": "keyword.operator.rest",
+ "foreground": "999999"
+ },
+ {
+ "token": "keyword.operator.spread",
+ "foreground": "999999"
+ },
+ {
+ "token": "keyword.operator.type.annotation",
+ "foreground": "999999"
+ },
+ {
+ "token": "keyword.operator.relational",
+ "foreground": "999999"
+ },
+ {
+ "token": "keyword.operator.assignment",
+ "foreground": "999999"
+ },
+ {
+ "token": "meta.brace",
+ "foreground": "999999"
+ },
+ {
+ "token": "meta.tag.block.any.html",
+ "foreground": "999999"
+ },
+ {
+ "token": "meta.tag.inline.any.html",
+ "foreground": "999999"
+ },
+ {
+ "token": "meta.tag.structure.input.void.html",
+ "foreground": "999999"
+ },
+ {
+ "token": "meta.type.annotation",
+ "foreground": "999999"
+ },
+ {
+ "token": "meta.embedded.block.github-actions-expression",
+ "foreground": "999999"
+ },
+ {
+ "token": "storage.type.function.arrow",
+ "foreground": "999999"
+ },
+ {
+ "token": "keyword.operator.type",
+ "foreground": "999999"
+ },
+ {
+ "token": "meta.objectliteral.ts",
+ "foreground": "999999"
+ },
+ {
+ "token": "punctuation",
+ "foreground": "999999"
+ },
+ {
+ "token": "constant",
+ "foreground": "a65e2b"
+ },
+ {
+ "token": "entity.name.constant",
+ "foreground": "a65e2b"
+ },
+ {
+ "token": "variable.language",
+ "foreground": "a65e2b"
+ },
+ {
+ "token": "meta.definition.variable",
+ "foreground": "a65e2b"
+ },
+ {
+ "token": "entity",
+ "foreground": "59873a"
+ },
+ {
+ "token": "entity.name",
+ "foreground": "59873a"
+ },
+ {
+ "token": "variable.parameter.function",
+ "foreground": "393a34"
+ },
+ {
+ "token": "entity.name.tag",
+ "foreground": "1e754f"
+ },
+ {
+ "token": "tag.html",
+ "foreground": "1e754f"
+ },
+ {
+ "token": "entity.name.function",
+ "foreground": "59873a"
+ },
+ {
+ "token": "keyword",
+ "foreground": "1e754f"
+ },
+ {
+ "token": "storage.type.class.jsdoc",
+ "foreground": "1e754f"
+ },
+ {
+ "token": "storage",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "storage.type",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "support.type.builtin",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "constant.language.undefined",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "constant.language.null",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "text.html.derivative",
+ "foreground": "393a34"
+ },
+ {
+ "token": "storage.modifier.package",
+ "foreground": "393a34"
+ },
+ {
+ "token": "storage.modifier.import",
+ "foreground": "393a34"
+ },
+ {
+ "token": "storage.type.java",
+ "foreground": "393a34"
+ },
+ {
+ "token": "string",
+ "foreground": "b56959"
+ },
+ {
+ "token": "string punctuation.section.embedded source",
+ "foreground": "b56959"
+ },
+ {
+ "token": "attribute.value",
+ "foreground": "b56959"
+ },
+ {
+ "token": "punctuation.definition.string",
+ "foreground": "b5695999"
+ },
+ {
+ "token": "punctuation.support.type.property-name",
+ "foreground": "b5695999"
+ },
+ {
+ "token": "support",
+ "foreground": "998418"
+ },
+ {
+ "token": "property",
+ "foreground": "998418"
+ },
+ {
+ "token": "meta.property-name",
+ "foreground": "998418"
+ },
+ {
+ "token": "meta.object-literal.key",
+ "foreground": "998418"
+ },
+ {
+ "token": "entity.name.tag.yaml",
+ "foreground": "998418"
+ },
+ {
+ "token": "attribute.name",
+ "foreground": "998418"
+ },
+ {
+ "token": "entity.other.attribute-name",
+ "foreground": "b07d48"
+ },
+ {
+ "token": "invalid.deprecated.entity.other.attribute-name.html",
+ "foreground": "b07d48"
+ },
+ {
+ "token": "variable",
+ "foreground": "b07d48"
+ },
+ {
+ "token": "identifier",
+ "foreground": "b07d48"
+ },
+ {
+ "token": "support.type.primitive",
+ "foreground": "2e8f82"
+ },
+ {
+ "token": "entity.name.type",
+ "foreground": "2e8f82"
+ },
+ {
+ "token": "namespace",
+ "foreground": "b05a78"
+ },
+ {
+ "token": "keyword.operator",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "keyword.operator.assignment.compound",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "meta.var.expr.ts",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "invalid.broken",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "invalid.deprecated",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "invalid.illegal",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "invalid.unimplemented",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "carriage-return",
+ "foreground": "fafbfc"
+ },
+ {
+ "token": "message.error",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "string variable",
+ "foreground": "b56959"
+ },
+ {
+ "token": "source.regexp",
+ "foreground": "ab5e3f"
+ },
+ {
+ "token": "string.regexp",
+ "foreground": "ab5e3f"
+ },
+ {
+ "token": "string.regexp.character-class",
+ "foreground": "b56959"
+ },
+ {
+ "token": "string.regexp constant.character.escape",
+ "foreground": "b56959"
+ },
+ {
+ "token": "string.regexp source.ruby.embedded",
+ "foreground": "b56959"
+ },
+ {
+ "token": "string.regexp string.regexp.arbitrary-repitition",
+ "foreground": "b56959"
+ },
+ {
+ "token": "string.regexp constant.character.escape",
+ "foreground": "bda437"
+ },
+ {
+ "token": "support.constant",
+ "foreground": "a65e2b"
+ },
+ {
+ "token": "constant.numeric",
+ "foreground": "2f798a"
+ },
+ {
+ "token": "number",
+ "foreground": "2f798a"
+ },
+ {
+ "token": "keyword.other.unit",
+ "foreground": "ab5959"
+ },
+ {
+ "token": "constant.language.boolean",
+ "foreground": "1e754f"
+ },
+ {
+ "token": "constant.language",
+ "foreground": "1e754f"
+ },
+ {
+ "token": "meta.module-reference",
+ "foreground": "1c6b48"
+ },
+ {
+ "token": "punctuation.definition.list.begin.markdown",
+ "foreground": "a65e2b"
+ },
+ {
+ "token": "markup.heading",
+ "foreground": "1c6b48"
+ },
+ {
+ "token": "markup.heading entity.name",
+ "foreground": "1c6b48"
+ },
+ {
+ "token": "markup.quote",
+ "foreground": "2e808f"
+ },
+ {
+ "token": "markup.italic",
+ "foreground": "393a34"
+ },
+ {
+ "token": "markup.bold",
+ "foreground": "393a34"
+ },
+ {
+ "token": "markup.raw",
+ "foreground": "1c6b48"
+ },
+ {
+ "token": "markup.deleted",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "meta.diff.header.from-file",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "punctuation.definition.deleted",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "markup.inserted",
+ "foreground": "22863a"
+ },
+ {
+ "token": "meta.diff.header.to-file",
+ "foreground": "22863a"
+ },
+ {
+ "token": "punctuation.definition.inserted",
+ "foreground": "22863a"
+ },
+ {
+ "token": "markup.changed",
+ "foreground": "e36209"
+ },
+ {
+ "token": "punctuation.definition.changed",
+ "foreground": "e36209"
+ },
+ {
+ "token": "markup.ignored",
+ "foreground": "f6f8fa"
+ },
+ {
+ "token": "markup.untracked",
+ "foreground": "f6f8fa"
+ },
+ {
+ "token": "meta.diff.range",
+ "foreground": "6f42c1"
+ },
+ {
+ "token": "meta.diff.header",
+ "foreground": "005cc5"
+ },
+ {
+ "token": "meta.separator",
+ "foreground": "005cc5"
+ },
+ {
+ "token": "meta.output",
+ "foreground": "005cc5"
+ },
+ {
+ "token": "brackethighlighter.tag",
+ "foreground": "586069"
+ },
+ {
+ "token": "brackethighlighter.curly",
+ "foreground": "586069"
+ },
+ {
+ "token": "brackethighlighter.round",
+ "foreground": "586069"
+ },
+ {
+ "token": "brackethighlighter.square",
+ "foreground": "586069"
+ },
+ {
+ "token": "brackethighlighter.angle",
+ "foreground": "586069"
+ },
+ {
+ "token": "brackethighlighter.quote",
+ "foreground": "586069"
+ },
+ {
+ "token": "brackethighlighter.unmatched",
+ "foreground": "b31d28"
+ },
+ {
+ "token": "constant.other.reference.link",
+ "foreground": "b56959"
+ },
+ {
+ "token": "string.other.link",
+ "foreground": "b56959"
+ },
+ {
+ "token": "punctuation.definition.string.begin.markdown",
+ "foreground": "b56959"
+ },
+ {
+ "token": "punctuation.definition.string.end.markdown",
+ "foreground": "b56959"
+ },
+ {
+ "token": "markup.underline.link.markdown",
+ "foreground": "393a3490"
+ },
+ {
+ "token": "type.identifier",
+ "foreground": "5a6aa6"
+ },
+ {
+ "token": "entity.other.attribute-name.html.vue",
+ "foreground": "59873a"
+ },
+ {
+ "token": "invalid.illegal.unrecognized-tag.html"
+ }
+ ]
+}
diff --git a/node_modules/typedoc/LICENSE b/node_modules/typedoc/LICENSE
new file mode 100644
index 0000000..ad410e1
--- /dev/null
+++ b/node_modules/typedoc/LICENSE
@@ -0,0 +1,201 @@
+Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright {yyyy} {name of copyright owner}
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License. \ No newline at end of file
diff --git a/node_modules/typedoc/README.md b/node_modules/typedoc/README.md
new file mode 100644
index 0000000..531c898
--- /dev/null
+++ b/node_modules/typedoc/README.md
@@ -0,0 +1,90 @@
+# TypeDoc
+
+Documentation generator for TypeScript projects.
+
+[![CI](https://github.com/TypeStrong/typedoc/workflows/CI/badge.svg)](https://github.com/TypeStrong/typedoc/actions)
+[![NPM Version](https://img.shields.io/npm/v/typedoc?color=33cd56&logo=npm)](https://www.npmjs.com/package/typedoc)
+
+## Documentation
+
+For more detailed documentation, the changelog, and TypeDoc documentation rendered with TypeDoc, see https://typedoc.org.
+
+## Installation
+
+TypeDoc runs on Node.js and is available as a NPM package.
+
+```text
+npm install typedoc --save-dev
+```
+
+## Usage
+
+To generate documentation TypeDoc needs to know your project entry point and TypeScript
+compiler options. It will automatically try to find your `tsconfig.json` file, so you can
+just specify the entry point of your library:
+
+```text
+typedoc src/index.ts
+```
+
+If you have multiple entry points, specify each of them.
+
+```text
+typedoc package1/index.ts package2/index.ts
+```
+
+If you specify a directory, TypeDoc will use the `entryPointStrategy` option to determine how to resolve it.
+By default, TypeDoc will search for a file called `index` under the directory.
+
+### Monorepos / Workspaces
+
+If your codebase is comprised of one or more npm packages, you can build documentation for each of them individually
+and merge the results together into a single site by setting `entryPointStrategy` to `packages`. In this mode TypeDoc
+requires configuration to be present in each directory to specify the entry points. For an example setup, see
+https://github.com/Gerrit0/typedoc-packages-example
+
+### Arguments
+
+For a complete list of the command line arguments run `typedoc --help` or visit
+[our website](https://typedoc.org/guides/options/).
+
+- `--out <path/to/documentation/>`<br>
+ Specifies the location the documentation should be written to. Defaults to `./docs`
+- `--json <path/to/output.json>`<br>
+ Specifies the location and file name a json file describing the project is
+ written to. When specified no documentation will be generated unless `--out` is also
+ specified.
+- `--options`<br>
+ Specify a json option file that should be loaded. If not specified TypeDoc
+ will look for 'typedoc.json' in the current directory.
+- `--tsconfig <path/to/tsconfig.json>`<br>
+ Specify a typescript config file that should be loaded. If not
+ specified TypeDoc will look for 'tsconfig.json' in the current directory.
+- `--exclude <pattern>`<br>
+ Exclude files by the given pattern when a path is provided as source.
+ Supports standard minimatch patterns.
+
+#### Theming
+
+- `--theme <default|plugin defined theme>`<br>
+ Specify the theme that should be used.
+- `--name <Documentation title>`<br>
+ Set the name of the project that will be used in the header of the template.
+- `--readme <path/to/readme|none>`<br>
+ Path to the readme file that should be displayed on the index page. Pass `none` to disable the index page
+ and start the documentation on the globals page.
+
+#### Miscellaneous
+
+- `--version`<br>
+ Display the version number of TypeDoc.
+- `--help`<br>
+ Display all TypeDoc options.
+
+## Contributing
+
+This project is maintained by a community of developers. Contributions are welcome and appreciated.
+You can find TypeDoc on GitHub; feel free to open an issue or create a pull request:
+https://github.com/TypeStrong/typedoc
+
+For more information, read the [contribution guide](https://github.com/TypeStrong/typedoc/blob/master/.github/CONTRIBUTING.md).
diff --git a/node_modules/typedoc/bin/typedoc b/node_modules/typedoc/bin/typedoc
new file mode 100755
index 0000000..221181e
--- /dev/null
+++ b/node_modules/typedoc/bin/typedoc
@@ -0,0 +1,5 @@
+#!/usr/bin/env node
+//@ts-check
+
+/* eslint-disable @typescript-eslint/no-var-requires */
+require("../dist/lib/cli");
diff --git a/node_modules/typedoc/dist/index.d.ts b/node_modules/typedoc/dist/index.d.ts
new file mode 100644
index 0000000..f6b06e5
--- /dev/null
+++ b/node_modules/typedoc/dist/index.d.ts
@@ -0,0 +1,17 @@
+export { Application } from "./lib/application";
+export { EventDispatcher, Event } from "./lib/utils/events";
+export { resetReflectionID } from "./lib/models/reflections/abstract";
+/**
+ * All symbols documented under the Models namespace are also available in the root import.
+ */
+export * as Models from "./lib/models";
+export * from "./lib/models";
+export { Converter, Context, type CommentParserConfig, type DeclarationReference, type SymbolReference, type ComponentPath, type Meaning, type MeaningKeyword, type ExternalResolveResult, type ExternalSymbolResolver, } from "./lib/converter";
+export { Renderer, DefaultTheme, DefaultThemeRenderContext, UrlMapping, Theme, PageEvent, RendererEvent, MarkdownEvent, IndexEvent, } from "./lib/output";
+export type { RenderTemplate, RendererHooks } from "./lib/output";
+export { ArgumentsReader, BindOption, CommentStyle, JSX, LogLevel, Logger, Options, PackageJsonReader, ParameterHint, ParameterType, TSConfigReader, TypeDocReader, EntryPointStrategy, EventHooks, MinimalSourceFile, normalizePath, } from "./lib/utils";
+export type { OptionsReader, TypeDocOptions, TypeDocOptionMap, ValidationOptions, TypeDocOptionValues, KeyToDeclaration, DeclarationOption, DeclarationOptionBase, StringDeclarationOption, NumberDeclarationOption, BooleanDeclarationOption, ArrayDeclarationOption, MixedDeclarationOption, ObjectDeclarationOption, MapDeclarationOption, FlagsDeclarationOption, DeclarationOptionToOptionType, SortStrategy, ParameterTypeToOptionTypeMap, DocumentationEntryPoint, ManuallyValidatedOption, EnumKeys, JsDocCompatibility, } from "./lib/utils";
+export type { EventMap, EventCallback } from "./lib/utils/events";
+export { JSONOutput, Serializer, Deserializer, type Deserializable, type DeserializerComponent, type SerializerComponent, SerializeEvent, } from "./lib/serialization";
+import TypeScript from "typescript";
+export { TypeScript };
diff --git a/node_modules/typedoc/dist/index.js b/node_modules/typedoc/dist/index.js
new file mode 100644
index 0000000..fc8c189
--- /dev/null
+++ b/node_modules/typedoc/dist/index.js
@@ -0,0 +1,81 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.TypeScript = exports.SerializeEvent = exports.Deserializer = exports.Serializer = exports.JSONOutput = exports.normalizePath = exports.MinimalSourceFile = exports.EventHooks = exports.EntryPointStrategy = exports.TypeDocReader = exports.TSConfigReader = exports.ParameterType = exports.ParameterHint = exports.PackageJsonReader = exports.Options = exports.Logger = exports.LogLevel = exports.JSX = exports.CommentStyle = exports.BindOption = exports.ArgumentsReader = exports.IndexEvent = exports.MarkdownEvent = exports.RendererEvent = exports.PageEvent = exports.Theme = exports.UrlMapping = exports.DefaultThemeRenderContext = exports.DefaultTheme = exports.Renderer = exports.Context = exports.Converter = exports.Models = exports.resetReflectionID = exports.Event = exports.EventDispatcher = exports.Application = void 0;
+var application_1 = require("./lib/application");
+Object.defineProperty(exports, "Application", { enumerable: true, get: function () { return application_1.Application; } });
+var events_1 = require("./lib/utils/events");
+Object.defineProperty(exports, "EventDispatcher", { enumerable: true, get: function () { return events_1.EventDispatcher; } });
+Object.defineProperty(exports, "Event", { enumerable: true, get: function () { return events_1.Event; } });
+var abstract_1 = require("./lib/models/reflections/abstract");
+Object.defineProperty(exports, "resetReflectionID", { enumerable: true, get: function () { return abstract_1.resetReflectionID; } });
+/**
+ * All symbols documented under the Models namespace are also available in the root import.
+ */
+exports.Models = __importStar(require("./lib/models"));
+__exportStar(require("./lib/models"), exports);
+var converter_1 = require("./lib/converter");
+Object.defineProperty(exports, "Converter", { enumerable: true, get: function () { return converter_1.Converter; } });
+Object.defineProperty(exports, "Context", { enumerable: true, get: function () { return converter_1.Context; } });
+var output_1 = require("./lib/output");
+Object.defineProperty(exports, "Renderer", { enumerable: true, get: function () { return output_1.Renderer; } });
+Object.defineProperty(exports, "DefaultTheme", { enumerable: true, get: function () { return output_1.DefaultTheme; } });
+Object.defineProperty(exports, "DefaultThemeRenderContext", { enumerable: true, get: function () { return output_1.DefaultThemeRenderContext; } });
+Object.defineProperty(exports, "UrlMapping", { enumerable: true, get: function () { return output_1.UrlMapping; } });
+Object.defineProperty(exports, "Theme", { enumerable: true, get: function () { return output_1.Theme; } });
+Object.defineProperty(exports, "PageEvent", { enumerable: true, get: function () { return output_1.PageEvent; } });
+Object.defineProperty(exports, "RendererEvent", { enumerable: true, get: function () { return output_1.RendererEvent; } });
+Object.defineProperty(exports, "MarkdownEvent", { enumerable: true, get: function () { return output_1.MarkdownEvent; } });
+Object.defineProperty(exports, "IndexEvent", { enumerable: true, get: function () { return output_1.IndexEvent; } });
+var utils_1 = require("./lib/utils");
+Object.defineProperty(exports, "ArgumentsReader", { enumerable: true, get: function () { return utils_1.ArgumentsReader; } });
+Object.defineProperty(exports, "BindOption", { enumerable: true, get: function () { return utils_1.BindOption; } });
+Object.defineProperty(exports, "CommentStyle", { enumerable: true, get: function () { return utils_1.CommentStyle; } });
+Object.defineProperty(exports, "JSX", { enumerable: true, get: function () { return utils_1.JSX; } });
+Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return utils_1.LogLevel; } });
+Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return utils_1.Logger; } });
+Object.defineProperty(exports, "Options", { enumerable: true, get: function () { return utils_1.Options; } });
+Object.defineProperty(exports, "PackageJsonReader", { enumerable: true, get: function () { return utils_1.PackageJsonReader; } });
+Object.defineProperty(exports, "ParameterHint", { enumerable: true, get: function () { return utils_1.ParameterHint; } });
+Object.defineProperty(exports, "ParameterType", { enumerable: true, get: function () { return utils_1.ParameterType; } });
+Object.defineProperty(exports, "TSConfigReader", { enumerable: true, get: function () { return utils_1.TSConfigReader; } });
+Object.defineProperty(exports, "TypeDocReader", { enumerable: true, get: function () { return utils_1.TypeDocReader; } });
+Object.defineProperty(exports, "EntryPointStrategy", { enumerable: true, get: function () { return utils_1.EntryPointStrategy; } });
+Object.defineProperty(exports, "EventHooks", { enumerable: true, get: function () { return utils_1.EventHooks; } });
+Object.defineProperty(exports, "MinimalSourceFile", { enumerable: true, get: function () { return utils_1.MinimalSourceFile; } });
+Object.defineProperty(exports, "normalizePath", { enumerable: true, get: function () { return utils_1.normalizePath; } });
+var serialization_1 = require("./lib/serialization");
+Object.defineProperty(exports, "JSONOutput", { enumerable: true, get: function () { return serialization_1.JSONOutput; } });
+Object.defineProperty(exports, "Serializer", { enumerable: true, get: function () { return serialization_1.Serializer; } });
+Object.defineProperty(exports, "Deserializer", { enumerable: true, get: function () { return serialization_1.Deserializer; } });
+Object.defineProperty(exports, "SerializeEvent", { enumerable: true, get: function () { return serialization_1.SerializeEvent; } });
+const typescript_1 = __importDefault(require("typescript"));
+exports.TypeScript = typescript_1.default;
diff --git a/node_modules/typedoc/dist/lib/application-events.d.ts b/node_modules/typedoc/dist/lib/application-events.d.ts
new file mode 100644
index 0000000..bf1fba9
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/application-events.d.ts
@@ -0,0 +1,5 @@
+export declare const ApplicationEvents: {
+ BOOTSTRAP_END: string;
+ REVIVE: string;
+ VALIDATE_PROJECT: string;
+};
diff --git a/node_modules/typedoc/dist/lib/application-events.js b/node_modules/typedoc/dist/lib/application-events.js
new file mode 100644
index 0000000..4451029
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/application-events.js
@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ApplicationEvents = void 0;
+exports.ApplicationEvents = {
+ BOOTSTRAP_END: "bootstrapEnd",
+ REVIVE: "reviveProject",
+ VALIDATE_PROJECT: "validateProject",
+};
diff --git a/node_modules/typedoc/dist/lib/application.d.ts b/node_modules/typedoc/dist/lib/application.d.ts
new file mode 100644
index 0000000..a755e0c
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/application.d.ts
@@ -0,0 +1,127 @@
+import { Converter } from "./converter/index";
+import { Renderer } from "./output/renderer";
+import { Deserializer, Serializer } from "./serialization";
+import type { ProjectReflection } from "./models/index";
+import { Logger } from "./utils/index";
+import { AbstractComponent, ChildableComponent } from "./utils/component";
+import { Options } from "./utils";
+import type { TypeDocOptions } from "./utils/options/declaration";
+import { DocumentationEntryPoint, EntryPointStrategy } from "./utils/entry-point";
+/**
+ * The default TypeDoc main application class.
+ *
+ * This class holds the two main components of TypeDoc, the {@link Converter} and
+ * the {@link Renderer}. When running TypeDoc, first the {@link Converter} is invoked which
+ * generates a {@link ProjectReflection} from the passed in source files. The
+ * {@link ProjectReflection} is a hierarchical model representation of the TypeScript
+ * project. Afterwards the model is passed to the {@link Renderer} which uses an instance
+ * of {@link Theme} to generate the final documentation.
+ *
+ * Both the {@link Converter} and the {@link Renderer} emit a series of events while processing the project.
+ * Subscribe to these Events to control the application flow or alter the output.
+ */
+export declare class Application extends ChildableComponent<Application, AbstractComponent<Application>> {
+ /**
+ * The converter used to create the declaration reflections.
+ */
+ converter: Converter;
+ /**
+ * The renderer used to generate the documentation output.
+ */
+ renderer: Renderer;
+ /**
+ * The serializer used to generate JSON output.
+ */
+ serializer: Serializer;
+ /**
+ * The deserializer used to restore previously serialized JSON output.
+ */
+ deserializer: Deserializer;
+ /**
+ * The logger that should be used to output messages.
+ */
+ logger: Logger;
+ options: Options;
+ /** @internal */
+ readonly skipErrorChecking: boolean;
+ /** @internal */
+ readonly entryPointStrategy: EntryPointStrategy;
+ /** @internal */
+ readonly entryPoints: string[];
+ /**
+ * The version number of TypeDoc.
+ */
+ static VERSION: string;
+ /**
+ * Emitted after plugins have been loaded and options have been read, but before they have been frozen.
+ * The listener will be given an instance of {@link Application}.
+ */
+ static readonly EVENT_BOOTSTRAP_END: string;
+ /**
+ * Emitted after a project has been deserialized from JSON.
+ * The listener will be given an instance of {@link ProjectReflection}.
+ */
+ static readonly EVENT_PROJECT_REVIVE: string;
+ /**
+ * Emitted when validation is being run.
+ * The listener will be given an instance of {@link ProjectReflection}.
+ */
+ static readonly EVENT_VALIDATE_PROJECT: string;
+ /**
+ * Create a new TypeDoc application instance.
+ */
+ constructor();
+ /**
+ * Initialize TypeDoc, loading plugins if applicable.
+ */
+ bootstrapWithPlugins(options?: Partial<TypeDocOptions>): Promise<void>;
+ /**
+ * Initialize TypeDoc without loading plugins.
+ *
+ * @example
+ * Initialize the application with pretty-printing output disabled.
+ * ```ts
+ * const app = new Application();
+ * app.bootstrap({ pretty: false });
+ * ```
+ *
+ * @param options - Options to set during initialization
+ */
+ bootstrap(options?: Partial<TypeDocOptions>): void;
+ private setOptions;
+ /**
+ * Return the path to the TypeScript compiler.
+ */
+ getTypeScriptPath(): string;
+ getTypeScriptVersion(): string;
+ /**
+ * Gets the entry points to be documented according to the current `entryPoints` and `entryPointStrategy` options.
+ * May return undefined if entry points fail to be expanded.
+ */
+ getEntryPoints(): DocumentationEntryPoint[] | undefined;
+ /**
+ * Run the converter for the given set of files and return the generated reflections.
+ *
+ * @returns An instance of ProjectReflection on success, undefined otherwise.
+ */
+ convert(): ProjectReflection | undefined;
+ convertAndWatch(success: (project: ProjectReflection) => Promise<void>): void;
+ validate(project: ProjectReflection): void;
+ /**
+ * Render HTML for the given project
+ */
+ generateDocs(project: ProjectReflection, out: string): Promise<void>;
+ /**
+ * Write the reflections to a json file.
+ *
+ * @param out The path and file name of the target file.
+ * @returns Whether the JSON file could be written successfully.
+ */
+ generateJson(project: ProjectReflection, out: string): Promise<void>;
+ /**
+ * Print the version number.
+ */
+ toString(): string;
+ private _convertPackages;
+ private _merge;
+}
diff --git a/node_modules/typedoc/dist/lib/application.js b/node_modules/typedoc/dist/lib/application.js
new file mode 100644
index 0000000..98f4da0
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/application.js
@@ -0,0 +1,452 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+var Application_1;
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Application = void 0;
+const Path = __importStar(require("path"));
+const typescript_1 = __importDefault(require("typescript"));
+const index_1 = require("./converter/index");
+const renderer_1 = require("./output/renderer");
+const serialization_1 = require("./serialization");
+const index_2 = require("./utils/index");
+const component_1 = require("./utils/component");
+const utils_1 = require("./utils");
+const array_1 = require("./utils/array");
+const assert_1 = require("assert");
+const entry_point_1 = require("./utils/entry-point");
+const paths_1 = require("./utils/paths");
+const general_1 = require("./utils/general");
+const exports_1 = require("./validation/exports");
+const documentation_1 = require("./validation/documentation");
+const links_1 = require("./validation/links");
+const application_events_1 = require("./application-events");
+const tsconfig_1 = require("./utils/tsconfig");
+const fs_1 = require("./utils/fs");
+const abstract_1 = require("./models/reflections/abstract");
+// eslint-disable-next-line @typescript-eslint/no-var-requires
+const packageInfo = require("../../package.json");
+const supportedVersionMajorMinor = packageInfo.peerDependencies.typescript
+ .split("||")
+ .map((version) => version.replace(/^\s*|\.x\s*$/g, ""));
+/**
+ * The default TypeDoc main application class.
+ *
+ * This class holds the two main components of TypeDoc, the {@link Converter} and
+ * the {@link Renderer}. When running TypeDoc, first the {@link Converter} is invoked which
+ * generates a {@link ProjectReflection} from the passed in source files. The
+ * {@link ProjectReflection} is a hierarchical model representation of the TypeScript
+ * project. Afterwards the model is passed to the {@link Renderer} which uses an instance
+ * of {@link Theme} to generate the final documentation.
+ *
+ * Both the {@link Converter} and the {@link Renderer} emit a series of events while processing the project.
+ * Subscribe to these Events to control the application flow or alter the output.
+ */
+let Application = exports.Application = Application_1 = class Application extends component_1.ChildableComponent {
+ /**
+ * Create a new TypeDoc application instance.
+ */
+ constructor() {
+ super(null); // We own ourselves
+ /**
+ * The serializer used to generate JSON output.
+ */
+ this.serializer = new serialization_1.Serializer();
+ /**
+ * The deserializer used to restore previously serialized JSON output.
+ */
+ this.deserializer = new serialization_1.Deserializer(this);
+ this.logger = new index_2.ConsoleLogger();
+ this.options = new utils_1.Options(this.logger);
+ this.converter = this.addComponent("converter", index_1.Converter);
+ this.renderer = this.addComponent("renderer", renderer_1.Renderer);
+ }
+ /**
+ * Initialize TypeDoc, loading plugins if applicable.
+ */
+ async bootstrapWithPlugins(options = {}) {
+ this.options.reset();
+ this.setOptions(options, /* reportErrors */ false);
+ this.options.read(new index_2.Logger());
+ this.logger.level = this.options.getValue("logLevel");
+ await (0, index_2.loadPlugins)(this, this.options.getValue("plugin"));
+ this.bootstrap(options);
+ }
+ /**
+ * Initialize TypeDoc without loading plugins.
+ *
+ * @example
+ * Initialize the application with pretty-printing output disabled.
+ * ```ts
+ * const app = new Application();
+ * app.bootstrap({ pretty: false });
+ * ```
+ *
+ * @param options - Options to set during initialization
+ */
+ bootstrap(options = {}) {
+ this.options.reset();
+ this.setOptions(options, /* reportErrors */ false);
+ this.options.read(this.logger);
+ this.setOptions(options);
+ this.logger.level = this.options.getValue("logLevel");
+ if ((0, general_1.hasBeenLoadedMultipleTimes)()) {
+ this.logger.warn(`TypeDoc has been loaded multiple times. This is commonly caused by plugins which have their own installation of TypeDoc. The loaded paths are:\n\t${(0, general_1.getLoadedPaths)().join("\n\t")}`);
+ }
+ this.trigger(application_events_1.ApplicationEvents.BOOTSTRAP_END, this);
+ }
+ setOptions(options, reportErrors = true) {
+ for (const [key, val] of Object.entries(options)) {
+ try {
+ this.options.setValue(key, val);
+ }
+ catch (error) {
+ (0, assert_1.ok)(error instanceof Error);
+ if (reportErrors) {
+ this.logger.error(error.message);
+ }
+ }
+ }
+ }
+ /**
+ * Return the path to the TypeScript compiler.
+ */
+ getTypeScriptPath() {
+ return (0, paths_1.nicePath)(Path.dirname(require.resolve("typescript")));
+ }
+ getTypeScriptVersion() {
+ return typescript_1.default.version;
+ }
+ /**
+ * Gets the entry points to be documented according to the current `entryPoints` and `entryPointStrategy` options.
+ * May return undefined if entry points fail to be expanded.
+ */
+ getEntryPoints() {
+ return (0, entry_point_1.getEntryPoints)(this.logger, this.options);
+ }
+ /**
+ * Run the converter for the given set of files and return the generated reflections.
+ *
+ * @returns An instance of ProjectReflection on success, undefined otherwise.
+ */
+ convert() {
+ const start = Date.now();
+ // We freeze here rather than in the Converter class since TypeDoc's tests reuse the Application
+ // with a few different settings.
+ this.options.freeze();
+ this.logger.verbose(`Using TypeScript ${this.getTypeScriptVersion()} from ${this.getTypeScriptPath()}`);
+ if (this.entryPointStrategy === entry_point_1.EntryPointStrategy.Merge) {
+ return this._merge();
+ }
+ if (this.entryPointStrategy === entry_point_1.EntryPointStrategy.Packages) {
+ return this._convertPackages();
+ }
+ if (!supportedVersionMajorMinor.some((version) => version == typescript_1.default.versionMajorMinor)) {
+ this.logger.warn(`You are running with an unsupported TypeScript version! If TypeDoc crashes, this is why. TypeDoc supports ${supportedVersionMajorMinor.join(", ")}`);
+ }
+ const entryPoints = this.getEntryPoints();
+ if (!entryPoints) {
+ // Fatal error already reported.
+ return;
+ }
+ const programs = (0, array_1.unique)(entryPoints.map((e) => e.program));
+ this.logger.verbose(`Converting with ${programs.length} programs ${entryPoints.length} entry points`);
+ if (this.skipErrorChecking === false) {
+ const errors = programs.flatMap((program) => typescript_1.default.getPreEmitDiagnostics(program));
+ if (errors.length) {
+ this.logger.diagnostics(errors);
+ return;
+ }
+ }
+ if (this.options.getValue("emit") === "both") {
+ for (const program of programs) {
+ program.emit();
+ }
+ }
+ const startConversion = Date.now();
+ this.logger.verbose(`Finished getting entry points in ${Date.now() - start}ms`);
+ const project = this.converter.convert(entryPoints);
+ this.logger.verbose(`Finished conversion in ${Date.now() - startConversion}ms`);
+ return project;
+ }
+ convertAndWatch(success) {
+ this.options.freeze();
+ if (!this.options.getValue("preserveWatchOutput") &&
+ this.logger instanceof index_2.ConsoleLogger) {
+ typescript_1.default.sys.clearScreen?.();
+ }
+ this.logger.verbose(`Using TypeScript ${this.getTypeScriptVersion()} from ${this.getTypeScriptPath()}`);
+ if (!supportedVersionMajorMinor.some((version) => version == typescript_1.default.versionMajorMinor)) {
+ this.logger.warn(`You are running with an unsupported TypeScript version! TypeDoc supports ${supportedVersionMajorMinor.join(", ")}`);
+ }
+ if (Object.keys(this.options.getCompilerOptions()).length === 0) {
+ this.logger.warn(`No compiler options set. This likely means that TypeDoc did not find your tsconfig.json. Generated documentation will probably be empty.`);
+ }
+ // Doing this is considerably more complicated, we'd need to manage an array of programs, not convert until all programs
+ // have reported in the first time... just error out for now. I'm not convinced anyone will actually notice.
+ if (this.options.getFileNames().length === 0) {
+ this.logger.error("The provided tsconfig file looks like a solution style tsconfig, which is not supported in watch mode.");
+ return;
+ }
+ // Support for packages mode is currently unimplemented
+ if (this.entryPointStrategy !== entry_point_1.EntryPointStrategy.Resolve &&
+ this.entryPointStrategy !== entry_point_1.EntryPointStrategy.Expand) {
+ this.logger.error("entryPointStrategy must be set to either resolve or expand for watch mode.");
+ return;
+ }
+ const tsconfigFile = (0, tsconfig_1.findTsConfigFile)(this.options.getValue("tsconfig")) ??
+ "tsconfig.json";
+ // We don't want to do it the first time to preserve initial debug status messages. They'll be lost
+ // after the user saves a file, but better than nothing...
+ let firstStatusReport = true;
+ const host = typescript_1.default.createWatchCompilerHost(tsconfigFile, {}, typescript_1.default.sys, typescript_1.default.createEmitAndSemanticDiagnosticsBuilderProgram, (diagnostic) => this.logger.diagnostic(diagnostic), (status, newLine, _options, errorCount) => {
+ if (!firstStatusReport &&
+ errorCount === void 0 &&
+ !this.options.getValue("preserveWatchOutput") &&
+ this.logger instanceof index_2.ConsoleLogger) {
+ typescript_1.default.sys.clearScreen?.();
+ }
+ firstStatusReport = false;
+ this.logger.info(typescript_1.default.flattenDiagnosticMessageText(status.messageText, newLine));
+ });
+ let successFinished = true;
+ let currentProgram;
+ const runSuccess = () => {
+ if (!currentProgram) {
+ return;
+ }
+ if (successFinished) {
+ if (this.options.getValue("emit") === "both") {
+ currentProgram.emit();
+ }
+ this.logger.resetErrors();
+ this.logger.resetWarnings();
+ const entryPoints = (0, entry_point_1.getWatchEntryPoints)(this.logger, this.options, currentProgram);
+ if (!entryPoints) {
+ return;
+ }
+ const project = this.converter.convert(entryPoints);
+ currentProgram = undefined;
+ successFinished = false;
+ void success(project).then(() => {
+ successFinished = true;
+ runSuccess();
+ });
+ }
+ };
+ const origCreateProgram = host.createProgram;
+ host.createProgram = (rootNames, options, host, oldProgram, configDiagnostics, references) => {
+ // If we always do this, we'll get a crash the second time a program is created.
+ if (rootNames !== undefined) {
+ options = this.options.fixCompilerOptions(options || {});
+ }
+ return origCreateProgram(rootNames, options, host, oldProgram, configDiagnostics, references);
+ };
+ const origAfterProgramCreate = host.afterProgramCreate;
+ host.afterProgramCreate = (program) => {
+ if (typescript_1.default.getPreEmitDiagnostics(program.getProgram()).length === 0) {
+ currentProgram = program.getProgram();
+ runSuccess();
+ }
+ origAfterProgramCreate?.(program);
+ };
+ typescript_1.default.createWatchProgram(host);
+ }
+ validate(project) {
+ const checks = this.options.getValue("validation");
+ const start = Date.now();
+ // No point in validating exports when merging. Warnings will have already been emitted when
+ // creating the project jsons that this run merges together.
+ if (checks.notExported &&
+ this.entryPointStrategy !== entry_point_1.EntryPointStrategy.Merge) {
+ (0, exports_1.validateExports)(project, this.logger, this.options.getValue("intentionallyNotExported"));
+ }
+ if (checks.notDocumented) {
+ (0, documentation_1.validateDocumentation)(project, this.logger, this.options.getValue("requiredToBeDocumented"));
+ }
+ if (checks.invalidLink) {
+ (0, links_1.validateLinks)(project, this.logger);
+ }
+ this.trigger(Application_1.EVENT_VALIDATE_PROJECT, project);
+ this.logger.verbose(`Validation took ${Date.now() - start}ms`);
+ }
+ /**
+ * Render HTML for the given project
+ */
+ async generateDocs(project, out) {
+ const start = Date.now();
+ out = Path.resolve(out);
+ await this.renderer.render(project, out);
+ if (this.logger.hasErrors()) {
+ this.logger.error("Documentation could not be generated due to the errors above.");
+ }
+ else {
+ this.logger.info(`Documentation generated at ${(0, paths_1.nicePath)(out)}`);
+ this.logger.verbose(`HTML rendering took ${Date.now() - start}ms`);
+ }
+ }
+ /**
+ * Write the reflections to a json file.
+ *
+ * @param out The path and file name of the target file.
+ * @returns Whether the JSON file could be written successfully.
+ */
+ async generateJson(project, out) {
+ const start = Date.now();
+ out = Path.resolve(out);
+ const ser = this.serializer.projectToObject(project, process.cwd());
+ const space = this.options.getValue("pretty") ? "\t" : "";
+ await (0, index_2.writeFile)(out, JSON.stringify(ser, null, space));
+ this.logger.info(`JSON written to ${(0, paths_1.nicePath)(out)}`);
+ this.logger.verbose(`JSON rendering took ${Date.now() - start}ms`);
+ }
+ /**
+ * Print the version number.
+ */
+ toString() {
+ return [
+ "",
+ `TypeDoc ${Application_1.VERSION}`,
+ `Using TypeScript ${this.getTypeScriptVersion()} from ${this.getTypeScriptPath()}`,
+ "",
+ ].join("\n");
+ }
+ _convertPackages() {
+ if (!this.options.isSet("entryPoints")) {
+ this.logger.error("No entry points provided to packages mode, documentation cannot be generated.");
+ return;
+ }
+ const packageDirs = (0, entry_point_1.getPackageDirectories)(this.logger, this.options, this.options.getValue("entryPoints"));
+ if (packageDirs.length === 0) {
+ this.logger.error("Failed to find any packages, ensure you have provided at least one directory as an entry point containing package.json");
+ return;
+ }
+ const origOptions = this.options;
+ const projects = [];
+ // Generate a json file for each package
+ for (const dir of packageDirs) {
+ this.logger.info(`Converting project at ${(0, paths_1.nicePath)(dir)}`);
+ const opts = origOptions.copyForPackage(dir);
+ // Invalid links should only be reported after everything has been merged.
+ opts.setValue("validation", { invalidLink: false });
+ opts.read(this.logger, dir);
+ if (opts.getValue("entryPointStrategy") ===
+ entry_point_1.EntryPointStrategy.Packages) {
+ this.logger.error(`Project at ${(0, paths_1.nicePath)(dir)} has entryPointStrategy set to packages, but nested packages are not supported.`);
+ continue;
+ }
+ this.options = opts;
+ const project = this.convert();
+ if (project) {
+ this.validate(project);
+ projects.push(this.serializer.projectToObject(project, process.cwd()));
+ }
+ (0, abstract_1.resetReflectionID)();
+ }
+ this.options = origOptions;
+ this.logger.info(`Merging converted projects`);
+ if (projects.length !== packageDirs.length) {
+ this.logger.error("Failed to convert one or more packages, result will not be merged together.");
+ return;
+ }
+ const result = this.deserializer.reviveProjects(this.options.getValue("name") || "Documentation", projects);
+ this.trigger(application_events_1.ApplicationEvents.REVIVE, result);
+ return result;
+ }
+ _merge() {
+ const start = Date.now();
+ if (!this.options.isSet("entryPoints")) {
+ this.logger.error("No entry points provided to merge.");
+ return;
+ }
+ const rootDir = (0, fs_1.deriveRootDir)(this.entryPoints);
+ const entryPoints = this.entryPoints.flatMap((entry) => {
+ const result = (0, fs_1.glob)(entry, rootDir);
+ if (result.length === 0) {
+ this.logger.warn(`The entrypoint glob ${(0, paths_1.nicePath)(entry)} did not match any files.`);
+ }
+ else {
+ this.logger.verbose(`Expanded ${(0, paths_1.nicePath)(entry)} to:\n\t${result
+ .map(paths_1.nicePath)
+ .join("\n\t")}`);
+ }
+ return result;
+ });
+ const jsonProjects = entryPoints.map((path) => {
+ try {
+ return JSON.parse((0, fs_1.readFile)(path));
+ }
+ catch {
+ this.logger.error(`Failed to parse file at ${(0, paths_1.nicePath)(path)} as json.`);
+ return null;
+ }
+ });
+ if (this.logger.hasErrors())
+ return;
+ const result = this.deserializer.reviveProjects(this.options.getValue("name"), jsonProjects);
+ this.logger.verbose(`Reviving projects took ${Date.now() - start}ms`);
+ this.trigger(application_events_1.ApplicationEvents.REVIVE, result);
+ return result;
+ }
+};
+/**
+ * The version number of TypeDoc.
+ */
+Application.VERSION = packageInfo.version;
+/**
+ * Emitted after plugins have been loaded and options have been read, but before they have been frozen.
+ * The listener will be given an instance of {@link Application}.
+ */
+Application.EVENT_BOOTSTRAP_END = application_events_1.ApplicationEvents.BOOTSTRAP_END;
+/**
+ * Emitted after a project has been deserialized from JSON.
+ * The listener will be given an instance of {@link ProjectReflection}.
+ */
+Application.EVENT_PROJECT_REVIVE = application_events_1.ApplicationEvents.REVIVE;
+/**
+ * Emitted when validation is being run.
+ * The listener will be given an instance of {@link ProjectReflection}.
+ */
+Application.EVENT_VALIDATE_PROJECT = application_events_1.ApplicationEvents.VALIDATE_PROJECT;
+__decorate([
+ (0, utils_1.BindOption)("skipErrorChecking")
+], Application.prototype, "skipErrorChecking", void 0);
+__decorate([
+ (0, utils_1.BindOption)("entryPointStrategy")
+], Application.prototype, "entryPointStrategy", void 0);
+__decorate([
+ (0, utils_1.BindOption)("entryPoints")
+], Application.prototype, "entryPoints", void 0);
+exports.Application = Application = Application_1 = __decorate([
+ (0, component_1.Component)({ name: "application", internal: true })
+], Application);
diff --git a/node_modules/typedoc/dist/lib/cli.d.ts b/node_modules/typedoc/dist/lib/cli.d.ts
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/cli.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/typedoc/dist/lib/cli.js b/node_modules/typedoc/dist/lib/cli.js
new file mode 100644
index 0000000..34a7d00
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/cli.js
@@ -0,0 +1,125 @@
+"use strict";
+/* eslint-disable no-console */
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+const ExitCodes = {
+ Ok: 0,
+ OptionError: 1,
+ CompileError: 3,
+ ValidationError: 4,
+ OutputError: 5,
+ ExceptionThrown: 6,
+};
+const td = __importStar(require("typedoc"));
+const app = new td.Application();
+app.options.addReader(new td.ArgumentsReader(0));
+app.options.addReader(new td.TypeDocReader());
+app.options.addReader(new td.PackageJsonReader());
+app.options.addReader(new td.TSConfigReader());
+app.options.addReader(new td.ArgumentsReader(300));
+void run(app)
+ .catch((error) => {
+ console.error("TypeDoc exiting with unexpected error:");
+ console.error(error);
+ if (app.options.getValue("skipErrorChecking")) {
+ console.error("Try turning off --skipErrorChecking. If TypeDoc still crashes, please report a bug.");
+ }
+ return ExitCodes.ExceptionThrown;
+})
+ .then((exitCode) => {
+ process.exitCode = exitCode;
+});
+async function run(app) {
+ const start = Date.now();
+ await app.bootstrapWithPlugins();
+ if (app.options.getValue("version")) {
+ console.log(app.toString());
+ return ExitCodes.Ok;
+ }
+ if (app.options.getValue("help")) {
+ console.log(app.options.getHelp());
+ return ExitCodes.Ok;
+ }
+ if (app.options.getValue("showConfig")) {
+ console.log(app.options.getRawValues());
+ return ExitCodes.Ok;
+ }
+ if (app.logger.hasErrors()) {
+ return ExitCodes.OptionError;
+ }
+ if (app.options.getValue("treatWarningsAsErrors") &&
+ app.logger.hasWarnings()) {
+ return ExitCodes.OptionError;
+ }
+ if (app.options.getValue("watch")) {
+ app.convertAndWatch(async (project) => {
+ const json = app.options.getValue("json");
+ if (!json || app.options.isSet("out")) {
+ await app.generateDocs(project, app.options.getValue("out"));
+ }
+ if (json) {
+ await app.generateJson(project, json);
+ }
+ });
+ return ExitCodes.Ok;
+ }
+ const project = app.convert();
+ if (!project) {
+ return ExitCodes.CompileError;
+ }
+ if (app.options.getValue("treatWarningsAsErrors") &&
+ app.logger.hasWarnings()) {
+ return ExitCodes.CompileError;
+ }
+ const preValidationWarnCount = app.logger.warningCount;
+ app.validate(project);
+ const hadValidationWarnings = app.logger.warningCount !== preValidationWarnCount;
+ if (app.logger.hasErrors()) {
+ return ExitCodes.ValidationError;
+ }
+ if (hadValidationWarnings &&
+ (app.options.getValue("treatWarningsAsErrors") ||
+ app.options.getValue("treatValidationWarningsAsErrors"))) {
+ return ExitCodes.ValidationError;
+ }
+ if (app.options.getValue("emit") !== "none") {
+ const json = app.options.getValue("json");
+ if (!json || app.options.isSet("out")) {
+ await app.generateDocs(project, app.options.getValue("out"));
+ }
+ if (json) {
+ await app.generateJson(project, json);
+ }
+ if (app.logger.hasErrors()) {
+ return ExitCodes.OutputError;
+ }
+ if (app.options.getValue("treatWarningsAsErrors") &&
+ app.logger.hasWarnings()) {
+ return ExitCodes.OutputError;
+ }
+ }
+ app.logger.verbose(`Full run took ${Date.now() - start}ms`);
+ return ExitCodes.Ok;
+}
diff --git a/node_modules/typedoc/dist/lib/converter/comments/blockLexer.d.ts b/node_modules/typedoc/dist/lib/converter/comments/blockLexer.d.ts
new file mode 100644
index 0000000..359549d
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/blockLexer.d.ts
@@ -0,0 +1,3 @@
+import ts from "typescript";
+import { Token } from "./lexer";
+export declare function lexBlockComment(file: string, pos?: number, end?: number, jsDoc?: ts.JSDoc | undefined, checker?: ts.TypeChecker | undefined): Generator<Token, undefined, undefined>;
diff --git a/node_modules/typedoc/dist/lib/converter/comments/blockLexer.js b/node_modules/typedoc/dist/lib/converter/comments/blockLexer.js
new file mode 100644
index 0000000..305a978
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/blockLexer.js
@@ -0,0 +1,370 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.lexBlockComment = void 0;
+const typescript_1 = __importDefault(require("typescript"));
+const lexer_1 = require("./lexer");
+const ReflectionSymbolId_1 = require("../../models/reflections/ReflectionSymbolId");
+const symbols_1 = require("../utils/symbols");
+function* lexBlockComment(file, pos = 0, end = file.length, jsDoc = undefined, checker = undefined) {
+ // Wrapper around our real lex function to collapse adjacent text tokens.
+ let textToken;
+ for (const token of lexBlockComment2(file, pos, end, getLinkTags(jsDoc), checker)) {
+ if (token.kind === lexer_1.TokenSyntaxKind.Text) {
+ if (textToken) {
+ textToken.text += token.text;
+ }
+ else {
+ textToken = token;
+ }
+ }
+ else {
+ if (textToken) {
+ yield textToken;
+ textToken = void 0;
+ }
+ yield token;
+ }
+ }
+ if (textToken) {
+ yield textToken;
+ }
+ return;
+}
+exports.lexBlockComment = lexBlockComment;
+function getLinkTags(jsDoc) {
+ const result = [];
+ if (jsDoc?.comment && typeof jsDoc.comment !== "string") {
+ for (const part of jsDoc.comment) {
+ switch (part.kind) {
+ case typescript_1.default.SyntaxKind.JSDocLink:
+ case typescript_1.default.SyntaxKind.JSDocLinkCode:
+ case typescript_1.default.SyntaxKind.JSDocLinkPlain:
+ result.push(part);
+ }
+ }
+ }
+ for (const block of jsDoc?.tags || []) {
+ if (!block.comment || typeof block.comment === "string")
+ continue;
+ for (const part of block.comment) {
+ switch (part.kind) {
+ case typescript_1.default.SyntaxKind.JSDocLink:
+ case typescript_1.default.SyntaxKind.JSDocLinkCode:
+ case typescript_1.default.SyntaxKind.JSDocLinkPlain:
+ result.push(part);
+ }
+ }
+ }
+ return result;
+}
+function* lexBlockComment2(file, pos, end, linkTags, checker) {
+ pos += 2; // Leading '/*'
+ end -= 2; // Trailing '*/'
+ if (pos < end && file[pos] === "*") {
+ // Might start with '/**'
+ pos++;
+ }
+ // Before skipping whitespace, figure out the comment indent size
+ const [commentHasStars, indent] = discoverIndent(file, pos, end);
+ // Skip leading whitespace
+ while (pos < end && /\s/.test(file[pos])) {
+ pos++;
+ }
+ // Trailing whitespace
+ while (pos < end && /\s/.test(file[end - 1])) {
+ end--;
+ }
+ let lineStart = true;
+ let braceStartsType = false;
+ let linkTagIndex = 0;
+ for (;;) {
+ if (pos >= end) {
+ return;
+ }
+ if (lineStart) {
+ pos = skipIndent(pos);
+ if (commentHasStars && file[pos] === "*") {
+ pos++;
+ if (file[pos] === " ") {
+ pos++;
+ }
+ }
+ lineStart = false;
+ }
+ switch (file[pos]) {
+ case "\n":
+ yield makeToken(lexer_1.TokenSyntaxKind.NewLine, 1);
+ lineStart = true;
+ break;
+ case "{":
+ if (braceStartsType && nextNonWs(pos + 1) !== "@") {
+ yield makeToken(lexer_1.TokenSyntaxKind.TypeAnnotation, findEndOfType(pos) - pos);
+ braceStartsType = false;
+ }
+ else {
+ yield makeToken(lexer_1.TokenSyntaxKind.OpenBrace, 1);
+ }
+ break;
+ case "}":
+ yield makeToken(lexer_1.TokenSyntaxKind.CloseBrace, 1);
+ braceStartsType = false;
+ break;
+ case "`": {
+ // Markdown's code rules are a royal pain. This could be one of several things.
+ // 1. Inline code: <1-n ticks><text><same number of ticks>
+ // 2. Code block: <3 ticks><language, no ticks>\n<text>\n<3 ticks>\n
+ // 3. Unmatched tick(s), not code, but part of some text.
+ // We don't quite handle #2 correctly yet. PR welcome!
+ braceStartsType = false;
+ let tickCount = 1;
+ let lookahead = pos;
+ while (lookahead + 1 < end && file[lookahead + 1] === "`") {
+ tickCount++;
+ lookahead++;
+ }
+ let lookaheadStart = pos;
+ const codeText = [];
+ lookahead++;
+ while (lookahead < end) {
+ if (lookaheadExactlyNTicks(lookahead, tickCount)) {
+ lookahead += tickCount;
+ codeText.push(file.substring(lookaheadStart, lookahead));
+ yield {
+ kind: lexer_1.TokenSyntaxKind.Code,
+ text: codeText.join(""),
+ pos,
+ };
+ pos = lookahead;
+ break;
+ }
+ else if (file[lookahead] === "`") {
+ while (lookahead < end && file[lookahead] === "`") {
+ lookahead++;
+ }
+ }
+ else if (file[lookahead] === "\\" &&
+ lookahead + 1 < end &&
+ file[lookahead + 1] === "/") {
+ codeText.push(file.substring(lookaheadStart, lookahead));
+ lookaheadStart = lookahead + 1;
+ lookahead += 2;
+ }
+ else if (file[lookahead] === "\\" &&
+ lookahead + 1 < end &&
+ file[lookahead + 1] !== "\n") {
+ lookahead += 2;
+ }
+ else if (file[lookahead] === "\n") {
+ lookahead++;
+ codeText.push(file.substring(lookaheadStart, lookahead));
+ lookahead = skipIndent(lookahead);
+ if (commentHasStars && file[lookahead] === "*") {
+ lookahead++;
+ if (file[lookahead] === " ") {
+ lookahead++;
+ }
+ }
+ lookaheadStart = lookahead;
+ }
+ else {
+ lookahead++;
+ }
+ }
+ if (lookahead >= end && pos !== lookahead) {
+ if (tickCount === 3 &&
+ file.substring(pos, end).includes("\n")) {
+ codeText.push(file.substring(lookaheadStart, end));
+ yield {
+ kind: lexer_1.TokenSyntaxKind.Code,
+ text: codeText.join(""),
+ pos,
+ };
+ pos = lookahead;
+ }
+ else {
+ yield makeToken(lexer_1.TokenSyntaxKind.Text, tickCount);
+ }
+ }
+ break;
+ }
+ case "@": {
+ let lookahead = pos + 1;
+ while (lookahead < end && /[a-z]/i.test(file[lookahead])) {
+ lookahead++;
+ }
+ if (lookahead !== pos + 1) {
+ while (lookahead < end &&
+ /[a-z0-9]/i.test(file[lookahead])) {
+ lookahead++;
+ }
+ }
+ if (lookahead !== pos + 1 &&
+ (lookahead === end || /[\s}]/.test(file[lookahead]))) {
+ braceStartsType = true;
+ const token = makeToken(lexer_1.TokenSyntaxKind.Tag, lookahead - pos);
+ attachLinkTagResult(token);
+ yield token;
+ break;
+ }
+ }
+ // fall through if we didn't find something that looks like a tag
+ default: {
+ const textParts = [];
+ let lookaheadStart = pos;
+ let lookahead = pos;
+ while (lookahead < end) {
+ if ("{}\n`".includes(file[lookahead]))
+ break;
+ if (lookahead !== pos &&
+ file[lookahead] === "@" &&
+ /\s/.test(file[lookahead - 1])) {
+ // Probably the start of a modifier tag
+ break;
+ }
+ if (file[lookahead] === "\\" &&
+ lookahead + 1 < end &&
+ "{}@/`".includes(file[lookahead + 1])) {
+ textParts.push(file.substring(lookaheadStart, lookahead), file[lookahead + 1]);
+ lookahead++;
+ lookaheadStart = lookahead + 1;
+ }
+ lookahead++;
+ }
+ textParts.push(file.substring(lookaheadStart, lookahead));
+ if (textParts.some((part) => /\S/.test(part))) {
+ braceStartsType = false;
+ }
+ // This piece of text had line continuations or escaped text
+ yield {
+ kind: lexer_1.TokenSyntaxKind.Text,
+ text: textParts.join(""),
+ pos,
+ };
+ pos = lookahead;
+ break;
+ }
+ }
+ }
+ function attachLinkTagResult(token) {
+ // We might need to skip link tags if someone has link tags inside of an example comment
+ // pos-1 for opening brace, TS doesn't allow spaces between opening brace and @ sign as of 5.0.2
+ while (linkTagIndex < linkTags.length &&
+ linkTags[linkTagIndex].pos < token.pos - 1) {
+ linkTagIndex++;
+ }
+ if (linkTagIndex < linkTags.length &&
+ linkTags[linkTagIndex].pos === token.pos - 1) {
+ const link = linkTags[linkTagIndex];
+ if (link.name) {
+ const tsTarget = checker?.getSymbolAtLocation(link.name);
+ if (tsTarget) {
+ token.tsLinkTarget = new ReflectionSymbolId_1.ReflectionSymbolId((0, symbols_1.resolveAliasedSymbol)(tsTarget, checker));
+ token.tsLinkText = link.text.replace(/^\s*\|\s*/, "");
+ }
+ }
+ }
+ }
+ function makeToken(kind, size) {
+ const start = pos;
+ pos += size;
+ return {
+ kind,
+ text: file.substring(start, pos),
+ pos: start,
+ };
+ }
+ function skipIndent(pos) {
+ let taken = indent;
+ let lookahead = pos;
+ while (taken > 0 &&
+ lookahead < end &&
+ file[lookahead] !== "\n" &&
+ /\s/.test(file[lookahead])) {
+ taken--;
+ lookahead++;
+ }
+ return lookahead;
+ }
+ function lookaheadExactlyNTicks(pos, n) {
+ if (pos + n > end) {
+ return false;
+ }
+ return file.startsWith("`".repeat(n), pos) && file[pos + n] !== "`";
+ }
+ function findEndOfType(pos) {
+ let openBraces = 0;
+ while (pos < end) {
+ if (file[pos] === "{") {
+ openBraces++;
+ }
+ else if (file[pos] === "}") {
+ if (--openBraces === 0) {
+ break;
+ }
+ }
+ else if ("`'\"".includes(file[pos])) {
+ pos = findEndOfString(pos);
+ }
+ pos++;
+ }
+ if (pos < end && file[pos] === "}") {
+ pos++;
+ }
+ return pos;
+ }
+ function findEndOfString(pos) {
+ const endOfString = file[pos];
+ pos++;
+ while (pos < end) {
+ if (file[pos] === endOfString) {
+ break;
+ }
+ else if (file[pos] === "\\") {
+ pos++; // Skip escaped character
+ }
+ else if (endOfString === "`" &&
+ file[pos] === "$" &&
+ file[pos + 1] === "{") {
+ // Template literal with data inside a ${}
+ while (pos < end && file[pos] !== "}") {
+ if ("`'\"".includes(file[pos])) {
+ pos = findEndOfString(pos) + 1;
+ }
+ else {
+ pos++;
+ }
+ }
+ }
+ pos++;
+ }
+ return pos;
+ }
+ function nextNonWs(pos) {
+ while (pos < end && /\s/.test(file[pos])) {
+ pos++;
+ }
+ return file[pos];
+ }
+}
+function discoverIndent(file, pos, end) {
+ let indent = 0;
+ while (pos < end && file[pos] !== "\n") {
+ pos++;
+ }
+ outer: while (pos < end) {
+ pos++;
+ const lineStart = pos;
+ while (pos < end && file[pos] !== "\n") {
+ if (/\S/.test(file[pos])) {
+ indent = pos - lineStart;
+ break outer;
+ }
+ pos++;
+ }
+ }
+ const commentHasStars = pos < end && file[pos] === "*";
+ return [commentHasStars, indent];
+}
diff --git a/node_modules/typedoc/dist/lib/converter/comments/declarationReference.d.ts b/node_modules/typedoc/dist/lib/converter/comments/declarationReference.d.ts
new file mode 100644
index 0000000..7d42371
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/declarationReference.d.ts
@@ -0,0 +1,40 @@
+/**
+ * Parser for declaration references, see the [TSDoc grammar](https://github.com/microsoft/tsdoc/blob/main/tsdoc/src/beta/DeclarationReference.grammarkdown)
+ * for reference. TypeDoc **does not** support the full grammar today. This is intentional, since the TSDoc
+ * specified grammar allows the user to construct nonsensical declaration references such as `abc![def!ghi]`
+ *
+ * @module
+ */
+export declare const MeaningKeywords: readonly ["class", "interface", "type", "enum", "namespace", "function", "var", "constructor", "member", "event", "call", "new", "index", "complex", "getter", "setter"];
+export type MeaningKeyword = (typeof MeaningKeywords)[number];
+export interface DeclarationReference {
+ resolutionStart: "global" | "local";
+ moduleSource?: string;
+ symbolReference?: SymbolReference;
+}
+export interface Meaning {
+ keyword?: MeaningKeyword;
+ label?: string;
+ index?: number;
+}
+export interface SymbolReference {
+ path?: ComponentPath[];
+ meaning?: Meaning;
+}
+export interface ComponentPath {
+ /**
+ * How to resolve the `path`
+ * - `.` - Navigate via `exports` of symbol
+ * - `#` - Navigate via `members` of symbol
+ * - `~` - Navigate via `locals` of symbol
+ */
+ navigation: "." | "#" | "~";
+ path: string;
+}
+export declare function parseString(source: string, pos: number, end: number): [string, number] | undefined;
+export declare function parseModuleSource(source: string, pos: number, end: number): [string, number] | undefined;
+export declare function parseSymbolReference(source: string, pos: number, end: number): [SymbolReference, number] | undefined;
+export declare function parseComponent(source: string, pos: number, end: number): [string, number] | undefined;
+export declare function parseComponentPath(source: string, pos: number, end: number): readonly [ComponentPath[], number] | undefined;
+export declare function parseMeaning(source: string, pos: number, end: number): [Meaning, number] | undefined;
+export declare function parseDeclarationReference(source: string, pos: number, end: number): [DeclarationReference, number] | undefined;
diff --git a/node_modules/typedoc/dist/lib/converter/comments/declarationReference.js b/node_modules/typedoc/dist/lib/converter/comments/declarationReference.js
new file mode 100644
index 0000000..cf6151a
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/declarationReference.js
@@ -0,0 +1,327 @@
+"use strict";
+/**
+ * Parser for declaration references, see the [TSDoc grammar](https://github.com/microsoft/tsdoc/blob/main/tsdoc/src/beta/DeclarationReference.grammarkdown)
+ * for reference. TypeDoc **does not** support the full grammar today. This is intentional, since the TSDoc
+ * specified grammar allows the user to construct nonsensical declaration references such as `abc![def!ghi]`
+ *
+ * @module
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.parseDeclarationReference = exports.parseMeaning = exports.parseComponentPath = exports.parseComponent = exports.parseSymbolReference = exports.parseModuleSource = exports.parseString = exports.MeaningKeywords = void 0;
+exports.MeaningKeywords = [
+ "class",
+ "interface",
+ "type",
+ "enum",
+ "namespace",
+ "function",
+ "var",
+ "constructor",
+ "member",
+ "event",
+ "call",
+ "new",
+ "index",
+ "complex",
+ // TypeDoc specific
+ "getter",
+ "setter",
+];
+// <TAB> <VT> <FF> <SP> <NBSP> <ZWNBSP> <USP>
+const WhiteSpace = /[\t\u2B7F\u240C \u00A0\uFEFF\p{White_Space}]/u;
+const LineTerminator = "\r\n\u2028\u2029";
+const Punctuators = "{}()[]!.#~:,";
+const FutureReservedPunctuator = "{}@";
+const NavigationPunctuator = ".#~";
+const DecimalDigit = "0123456789";
+const HexDigit = DecimalDigit + "abcdefABCDEF";
+const SingleEscapeCharacter = `'"\\bfnrtv`;
+const EscapeCharacter = SingleEscapeCharacter + DecimalDigit + "xu";
+const UserLabelStart = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_";
+const UserLabelCharacter = UserLabelStart + DecimalDigit;
+const SingleEscapeChars = {
+ "'": "'",
+ '"': '"',
+ "\\": "\\",
+ b: "\b",
+ f: "\f",
+ n: "\n",
+ r: "\r",
+ t: "\t",
+ v: "\v",
+};
+// EscapeSequence::
+// SingleEscapeCharacter
+// NonEscapeCharacter
+// `0` [lookahead != DecimalDigit]
+// HexEscapeSequence
+// UnicodeEscapeSequence
+function parseEscapeSequence(source, pos, end) {
+ // SingleEscapeCharacter
+ if (SingleEscapeCharacter.includes(source[pos])) {
+ return [SingleEscapeChars[source[pos]], pos + 1];
+ }
+ // NonEscapeCharacter:: SourceCharacter but not one of EscapeCharacter or LineTerminator
+ if (!(EscapeCharacter + LineTerminator).includes(source[pos])) {
+ return [source[pos], pos + 1];
+ }
+ // `0` [lookahead != DecimalDigit]
+ if (source[pos] === "0" &&
+ pos + 1 < end &&
+ !DecimalDigit.includes(source[pos + 1])) {
+ return ["\x00", pos + 1];
+ }
+ // HexEscapeSequence:: x HexDigit HexDigit
+ if (source[pos] === "x" &&
+ pos + 2 < end &&
+ HexDigit.includes(source[pos + 1]) &&
+ HexDigit.includes(source[pos + 2])) {
+ return [
+ String.fromCharCode(parseInt(source.substring(pos + 1, pos + 3), 16)),
+ pos + 3,
+ ];
+ }
+ return parseUnicodeEscapeSequence(source, pos, end);
+}
+// UnicodeEscapeSequence::
+// `u` HexDigit HexDigit HexDigit HexDigit
+// `u` `{` CodePoint `}`
+// CodePoint:: > |HexDigits| but only if MV of |HexDigits| ≤ 0x10FFFF
+function parseUnicodeEscapeSequence(source, pos, end) {
+ if (source[pos] !== "u" || pos + 1 >= end) {
+ return;
+ }
+ if (HexDigit.includes(source[pos + 1])) {
+ if (pos + 4 >= end ||
+ !HexDigit.includes(source[pos + 2]) ||
+ !HexDigit.includes(source[pos + 3]) ||
+ !HexDigit.includes(source[pos + 4])) {
+ return;
+ }
+ return [
+ String.fromCharCode(parseInt(source.substring(pos + 1, pos + 5), 16)),
+ pos + 5,
+ ];
+ }
+ if (source[pos + 1] === "{" &&
+ pos + 2 < end &&
+ HexDigit.includes(source[pos + 2])) {
+ let lookahead = pos + 3;
+ while (lookahead < end && HexDigit.includes(source[lookahead])) {
+ lookahead++;
+ }
+ if (lookahead >= end || source[lookahead] !== "}")
+ return;
+ const codePoint = parseInt(source.substring(pos + 2, lookahead), 16);
+ if (codePoint <= 0x10ffff) {
+ return [String.fromCodePoint(codePoint), lookahead + 1];
+ }
+ }
+}
+// String:: `"` StringCharacters? `"`
+// StringCharacters:: StringCharacter StringCharacters?
+// StringCharacter::
+// SourceCharacter but not one of `"` or `\` or LineTerminator
+// `\` EscapeSequence
+function parseString(source, pos, end) {
+ let result = "";
+ if (source[pos++] !== '"')
+ return;
+ while (pos < end) {
+ if (source[pos] === '"') {
+ return [result, pos + 1];
+ }
+ if (LineTerminator.includes(source[pos]))
+ return;
+ if (source[pos] === "\\") {
+ const esc = parseEscapeSequence(source, pos + 1, end);
+ if (!esc)
+ return;
+ result += esc[0];
+ pos = esc[1];
+ continue;
+ }
+ result += source[pos++];
+ }
+}
+exports.parseString = parseString;
+// ModuleSource:: String | ModuleSourceCharacters
+function parseModuleSource(source, pos, end) {
+ if (pos >= end)
+ return;
+ if (source[pos] === '"') {
+ return parseString(source, pos, end);
+ }
+ let lookahead = pos;
+ while (lookahead < end &&
+ !('"!' + LineTerminator).includes(source[lookahead])) {
+ lookahead++;
+ }
+ if (lookahead === pos)
+ return;
+ return [source.substring(pos, lookahead), lookahead];
+}
+exports.parseModuleSource = parseModuleSource;
+// SymbolReference:
+// ComponentPath Meaning?
+// Meaning
+function parseSymbolReference(source, pos, end) {
+ const path = parseComponentPath(source, pos, end);
+ pos = path?.[1] ?? pos;
+ const meaning = parseMeaning(source, pos, end);
+ pos = meaning?.[1] ?? pos;
+ if (path || meaning) {
+ return [{ path: path?.[0], meaning: meaning?.[0] }, pos];
+ }
+}
+exports.parseSymbolReference = parseSymbolReference;
+// Component::
+// String
+// ComponentCharacters
+// `[` DeclarationReference `]` <--- THIS ONE IS NOT IMPLEMENTED.
+function parseComponent(source, pos, end) {
+ if (pos < end && source[pos] === '"') {
+ return parseString(source, pos, end);
+ }
+ let lookahead = pos;
+ while (lookahead < end &&
+ !('"' +
+ Punctuators +
+ FutureReservedPunctuator +
+ LineTerminator).includes(source[lookahead]) &&
+ !WhiteSpace.test(source[lookahead])) {
+ lookahead++;
+ }
+ if (lookahead === pos)
+ return;
+ return [source.substring(pos, lookahead), lookahead];
+}
+exports.parseComponent = parseComponent;
+// ComponentPath:
+// Component
+// ComponentPath `.` Component // Navigate via 'exports' of |ComponentPath|
+// ComponentPath `#` Component // Navigate via 'members' of |ComponentPath|
+// ComponentPath `~` Component // Navigate via 'locals' of |ComponentPath|
+function parseComponentPath(source, pos, end) {
+ const components = [];
+ let component = parseComponent(source, pos, end);
+ if (!component)
+ return;
+ pos = component[1];
+ components.push({ navigation: ".", path: component[0] });
+ while (pos < end && NavigationPunctuator.includes(source[pos])) {
+ const navigation = source[pos];
+ pos++;
+ component = parseComponent(source, pos, end);
+ if (!component) {
+ return;
+ }
+ pos = component[1];
+ components.push({ navigation, path: component[0] });
+ }
+ return [components, pos];
+}
+exports.parseComponentPath = parseComponentPath;
+// The TSDoc specification permits the first four branches of Meaning. TypeDoc adds the UserLabel
+// branch so that the @label tag can be used with this form of declaration references.
+// Meaning:
+// `:` MeaningKeyword // Indicates the meaning of a symbol (i.e. ':class')
+// `:` MeaningKeyword `(` DecimalDigits `)` // Indicates an overloaded meaning (i.e. ':function(1)')
+// `:` `(` DecimalDigits `)` // Shorthand for an overloaded meaning (i.e. `:(1)`)
+// `:` DecimalDigits // Shorthand for an overloaded meaning (i.e. ':1')
+// `:` UserLabel // Indicates a user defined label via {@label CUSTOM_LABEL}
+//
+// UserLabel:
+// UserLabelStart UserLabelCharacter*
+function parseMeaning(source, pos, end) {
+ if (source[pos++] !== ":")
+ return;
+ const keyword = exports.MeaningKeywords.find((kw) => pos + kw.length <= end && source.startsWith(kw, pos));
+ if (keyword) {
+ pos += keyword.length;
+ }
+ if (!keyword && UserLabelStart.includes(source[pos])) {
+ let lookahead = pos + 1;
+ while (lookahead < end &&
+ UserLabelCharacter.includes(source[lookahead])) {
+ lookahead++;
+ }
+ return [{ label: source.substring(pos, lookahead) }, lookahead];
+ }
+ if (pos + 1 < end &&
+ source[pos] === "(" &&
+ DecimalDigit.includes(source[pos + 1])) {
+ let lookahead = pos + 1;
+ while (lookahead < end && DecimalDigit.includes(source[lookahead])) {
+ lookahead++;
+ }
+ if (lookahead < end && source[lookahead] === ")") {
+ return [
+ {
+ keyword,
+ index: parseInt(source.substring(pos + 1, lookahead)),
+ },
+ lookahead + 1,
+ ];
+ }
+ }
+ if (!keyword && pos < end && DecimalDigit.includes(source[pos])) {
+ let lookahead = pos;
+ while (lookahead < end && DecimalDigit.includes(source[lookahead])) {
+ lookahead++;
+ }
+ return [
+ {
+ index: parseInt(source.substring(pos, lookahead)),
+ },
+ lookahead,
+ ];
+ }
+ if (keyword) {
+ return [{ keyword }, pos];
+ }
+}
+exports.parseMeaning = parseMeaning;
+// // NOTE: The following grammar is incorrect as |SymbolReference| and |ModuleSource| have an
+// // ambiguous parse. The correct solution is to use a cover grammar to parse
+// // |SymbolReference| until we hit a `!` and then reinterpret the grammar.
+// DeclarationReference:
+// [empty]
+// SymbolReference // Shorthand reference to symbol
+// ModuleSource `!` // Reference to a module
+// ModuleSource `!` SymbolReference // Reference to an export of a module
+// ModuleSource `!` `~` SymbolReference // Reference to a local of a module
+// `!` SymbolReference // Reference to global symbol
+function parseDeclarationReference(source, pos, end) {
+ let moduleSource;
+ let symbolReference;
+ let resolutionStart = "local";
+ const moduleSourceOrSymbolRef = parseModuleSource(source, pos, end);
+ if (moduleSourceOrSymbolRef) {
+ if (moduleSourceOrSymbolRef[1] < end &&
+ source[moduleSourceOrSymbolRef[1]] === "!") {
+ // We had a module source!
+ pos = moduleSourceOrSymbolRef[1] + 1;
+ resolutionStart = "global";
+ moduleSource = moduleSourceOrSymbolRef[0];
+ }
+ }
+ else if (source[pos] === "!") {
+ pos++;
+ resolutionStart = "global";
+ }
+ const ref = parseSymbolReference(source, pos, end);
+ if (ref) {
+ symbolReference = ref[0];
+ pos = ref[1];
+ }
+ return [
+ {
+ moduleSource,
+ resolutionStart,
+ symbolReference,
+ },
+ pos,
+ ];
+}
+exports.parseDeclarationReference = parseDeclarationReference;
diff --git a/node_modules/typedoc/dist/lib/converter/comments/declarationReferenceResolver.d.ts b/node_modules/typedoc/dist/lib/converter/comments/declarationReferenceResolver.d.ts
new file mode 100644
index 0000000..3fd385e
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/declarationReferenceResolver.d.ts
@@ -0,0 +1,3 @@
+import { Reflection } from "../../models";
+import type { DeclarationReference } from "./declarationReference";
+export declare function resolveDeclarationReference(reflection: Reflection, ref: DeclarationReference): Reflection | undefined;
diff --git a/node_modules/typedoc/dist/lib/converter/comments/declarationReferenceResolver.js b/node_modules/typedoc/dist/lib/converter/comments/declarationReferenceResolver.js
new file mode 100644
index 0000000..01a2382
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/declarationReferenceResolver.js
@@ -0,0 +1,203 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.resolveDeclarationReference = void 0;
+const assert_1 = require("assert");
+const models_1 = require("../../models");
+const utils_1 = require("../../utils");
+function resolveReferenceReflection(ref) {
+ if (ref instanceof models_1.ReferenceReflection) {
+ return ref.getTargetReflectionDeep();
+ }
+ return ref;
+}
+function resolveDeclarationReference(reflection, ref) {
+ let high = [];
+ let low = [];
+ if (ref.moduleSource) {
+ high =
+ reflection.project.children?.filter((c) => c.kindOf(models_1.ReflectionKind.SomeModule) &&
+ c.name === ref.moduleSource) || [];
+ }
+ else if (ref.resolutionStart === "global") {
+ high.push(reflection.project);
+ }
+ else {
+ (0, assert_1.ok)(ref.resolutionStart === "local");
+ // TypeScript's behavior is to first try to resolve links via variable scope, and then
+ // if the link still hasn't been found, check either siblings (if comment belongs to a member)
+ // or otherwise children.
+ let refl = reflection;
+ if (refl.kindOf(models_1.ReflectionKind.ExportContainer)) {
+ high.push(refl);
+ }
+ while (refl.parent) {
+ refl = refl.parent;
+ if (refl.kindOf(models_1.ReflectionKind.ExportContainer)) {
+ high.push(refl);
+ }
+ else {
+ low.push(refl);
+ }
+ }
+ if (reflection.kindOf(models_1.ReflectionKind.SomeMember)) {
+ high.push(reflection.parent);
+ }
+ else if (reflection.kindOf(models_1.ReflectionKind.SomeSignature) &&
+ reflection.parent.kindOf(models_1.ReflectionKind.SomeMember)) {
+ high.push(reflection.parent.parent);
+ }
+ else if (high[0] !== reflection) {
+ if (reflection.parent instanceof models_1.ContainerReflection) {
+ high.push(...(reflection.parent.children?.filter((c) => c.name === reflection.name) || []));
+ }
+ else {
+ high.push(reflection);
+ }
+ }
+ }
+ if (ref.symbolReference) {
+ for (const part of ref.symbolReference.path || []) {
+ const high2 = high;
+ high = [];
+ const low2 = low;
+ low = [];
+ for (const refl of high2) {
+ const resolved = resolveSymbolReferencePart(refl, part);
+ high.push(...resolved.high.map(resolveReferenceReflection));
+ low.push(...resolved.low.map(resolveReferenceReflection));
+ }
+ for (const refl of low2) {
+ const resolved = resolveSymbolReferencePart(refl, part);
+ low.push(...resolved.high.map(resolveReferenceReflection));
+ low.push(...resolved.low.map(resolveReferenceReflection));
+ }
+ }
+ if (ref.symbolReference.meaning) {
+ high = filterMapByMeaning(high, ref.symbolReference.meaning);
+ low = filterMapByMeaning(low, ref.symbolReference.meaning);
+ }
+ }
+ return high[0] || low[0];
+}
+exports.resolveDeclarationReference = resolveDeclarationReference;
+function filterMapByMeaning(reflections, meaning) {
+ return (0, utils_1.filterMap)(reflections, (refl) => {
+ const kwResolved = resolveKeyword(refl, meaning.keyword) || [];
+ if (meaning.label) {
+ return kwResolved.find((r) => r.comment?.label === meaning.label);
+ }
+ return kwResolved[meaning.index || 0];
+ });
+}
+function resolveKeyword(refl, kw) {
+ switch (kw) {
+ case undefined:
+ return refl instanceof models_1.DeclarationReflection && refl.signatures
+ ? refl.signatures
+ : [refl];
+ case "class":
+ if (refl.kindOf(models_1.ReflectionKind.Class))
+ return [refl];
+ break;
+ case "interface":
+ if (refl.kindOf(models_1.ReflectionKind.Interface))
+ return [refl];
+ break;
+ case "type":
+ if (refl.kindOf(models_1.ReflectionKind.SomeType))
+ return [refl];
+ break;
+ case "enum":
+ if (refl.kindOf(models_1.ReflectionKind.Enum))
+ return [refl];
+ break;
+ case "namespace":
+ if (refl.kindOf(models_1.ReflectionKind.SomeModule))
+ return [refl];
+ break;
+ case "function":
+ if (refl.kindOf(models_1.ReflectionKind.FunctionOrMethod)) {
+ return refl.signatures;
+ }
+ break;
+ case "var":
+ if (refl.kindOf(models_1.ReflectionKind.Variable))
+ return [refl];
+ break;
+ case "new":
+ case "constructor":
+ if (refl.kindOf(models_1.ReflectionKind.ClassOrInterface | models_1.ReflectionKind.TypeLiteral)) {
+ const ctor = refl.children?.find((c) => c.kindOf(models_1.ReflectionKind.Constructor));
+ return ctor?.signatures;
+ }
+ break;
+ case "member":
+ if (refl.kindOf(models_1.ReflectionKind.SomeMember))
+ return [refl];
+ break;
+ case "event":
+ // Never resolve. Nobody should use this.
+ // It's required by the grammar, but is not documented by TypeDoc
+ // nor by the comments in the grammar.
+ break;
+ case "call":
+ return refl.signatures;
+ case "index":
+ if (refl.indexSignature) {
+ return [refl.indexSignature];
+ }
+ break;
+ case "complex":
+ if (refl.kindOf(models_1.ReflectionKind.SomeType))
+ return [refl];
+ break;
+ case "getter":
+ if (refl.getSignature) {
+ return [refl.getSignature];
+ }
+ break;
+ case "setter":
+ if (refl.setSignature) {
+ return [refl.setSignature];
+ }
+ break;
+ default:
+ (0, utils_1.assertNever)(kw);
+ }
+}
+function resolveSymbolReferencePart(refl, path) {
+ let high = [];
+ let low = [];
+ if (!(refl instanceof models_1.ContainerReflection) || !refl.children) {
+ return { high, low };
+ }
+ switch (path.navigation) {
+ // Grammar says resolve via "exports"... as always, reality is more complicated.
+ // Check exports first, but also allow this as a general purpose "some child" operator
+ // so that resolution doesn't behave very poorly with projects using JSDoc style resolution.
+ // Also is more consistent with how TypeScript resolves link tags.
+ case ".":
+ high = refl.children.filter((r) => r.name === path.path &&
+ (r.kindOf(models_1.ReflectionKind.SomeExport) || r.flags.isStatic));
+ low = refl.children.filter((r) => r.name === path.path &&
+ (!r.kindOf(models_1.ReflectionKind.SomeExport) || !r.flags.isStatic));
+ break;
+ // Resolve via "members", interface children, class instance properties/accessors/methods,
+ // enum members, type literal properties
+ case "#":
+ high = refl.children.filter((r) => {
+ return (r.name === path.path &&
+ r.kindOf(models_1.ReflectionKind.SomeMember) &&
+ !r.flags.isStatic);
+ });
+ break;
+ // Resolve via "locals"... treat this as a stricter `.` which only supports traversing
+ // module/namespace exports since TypeDoc doesn't support documenting locals.
+ case "~":
+ if (refl.kindOf(models_1.ReflectionKind.SomeModule | models_1.ReflectionKind.Project)) {
+ high = refl.children.filter((r) => r.name === path.path);
+ }
+ break;
+ }
+ return { high, low };
+}
diff --git a/node_modules/typedoc/dist/lib/converter/comments/discovery.d.ts b/node_modules/typedoc/dist/lib/converter/comments/discovery.d.ts
new file mode 100644
index 0000000..87eeb15
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/discovery.d.ts
@@ -0,0 +1,16 @@
+import ts from "typescript";
+import { ReflectionKind } from "../../models";
+import { Logger } from "../../utils";
+import { CommentStyle } from "../../utils/options/declaration";
+export interface DiscoveredComment {
+ file: ts.SourceFile;
+ ranges: ts.CommentRange[];
+ jsDoc: ts.JSDoc | undefined;
+}
+export declare function discoverFileComment(node: ts.SourceFile, commentStyle: CommentStyle): {
+ file: ts.SourceFile;
+ ranges: ts.CommentRange[];
+ jsDoc: ts.JSDoc | undefined;
+} | undefined;
+export declare function discoverComment(symbol: ts.Symbol, kind: ReflectionKind, logger: Logger, commentStyle: CommentStyle): DiscoveredComment | undefined;
+export declare function discoverSignatureComment(declaration: ts.SignatureDeclaration | ts.JSDocSignature, commentStyle: CommentStyle): DiscoveredComment | undefined;
diff --git a/node_modules/typedoc/dist/lib/converter/comments/discovery.js b/node_modules/typedoc/dist/lib/converter/comments/discovery.js
new file mode 100644
index 0000000..2b58645
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/discovery.js
@@ -0,0 +1,339 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.discoverSignatureComment = exports.discoverComment = exports.discoverFileComment = void 0;
+const typescript_1 = __importDefault(require("typescript"));
+const models_1 = require("../../models");
+const utils_1 = require("../../utils");
+const declaration_1 = require("../../utils/options/declaration");
+const paths_1 = require("../../utils/paths");
+const assert_1 = require("assert");
+const variablePropertyKinds = [
+ typescript_1.default.SyntaxKind.PropertyDeclaration,
+ typescript_1.default.SyntaxKind.PropertySignature,
+ typescript_1.default.SyntaxKind.BinaryExpression,
+ typescript_1.default.SyntaxKind.PropertyAssignment,
+ // class X { constructor(/** Comment */ readonly z: string) }
+ typescript_1.default.SyntaxKind.Parameter,
+ // Variable values
+ typescript_1.default.SyntaxKind.VariableDeclaration,
+ typescript_1.default.SyntaxKind.BindingElement,
+ typescript_1.default.SyntaxKind.ExportAssignment,
+ typescript_1.default.SyntaxKind.PropertyAccessExpression,
+];
+// Note: This does NOT include JSDoc syntax kinds. This is important!
+// Comments from @typedef and @callback tags are handled specially by
+// the JSDoc converter because we only want part of the comment when
+// getting them.
+const wantedKinds = {
+ [models_1.ReflectionKind.Project]: [typescript_1.default.SyntaxKind.SourceFile],
+ [models_1.ReflectionKind.Module]: [typescript_1.default.SyntaxKind.SourceFile],
+ [models_1.ReflectionKind.Namespace]: [
+ typescript_1.default.SyntaxKind.ModuleDeclaration,
+ typescript_1.default.SyntaxKind.SourceFile,
+ typescript_1.default.SyntaxKind.BindingElement,
+ typescript_1.default.SyntaxKind.ExportSpecifier,
+ typescript_1.default.SyntaxKind.NamespaceExport,
+ // @namespace support
+ typescript_1.default.SyntaxKind.VariableDeclaration,
+ typescript_1.default.SyntaxKind.BindingElement,
+ typescript_1.default.SyntaxKind.ExportAssignment,
+ typescript_1.default.SyntaxKind.PropertyAccessExpression,
+ ],
+ [models_1.ReflectionKind.Enum]: [
+ typescript_1.default.SyntaxKind.EnumDeclaration,
+ typescript_1.default.SyntaxKind.VariableDeclaration,
+ ],
+ [models_1.ReflectionKind.EnumMember]: [
+ typescript_1.default.SyntaxKind.EnumMember,
+ // These here so that @enum gets comments
+ typescript_1.default.SyntaxKind.PropertyAssignment,
+ typescript_1.default.SyntaxKind.PropertySignature,
+ ],
+ [models_1.ReflectionKind.Variable]: variablePropertyKinds,
+ [models_1.ReflectionKind.Function]: [
+ typescript_1.default.SyntaxKind.FunctionDeclaration,
+ typescript_1.default.SyntaxKind.BindingElement,
+ typescript_1.default.SyntaxKind.VariableDeclaration,
+ typescript_1.default.SyntaxKind.ExportAssignment,
+ typescript_1.default.SyntaxKind.PropertyAccessExpression,
+ ],
+ [models_1.ReflectionKind.Class]: [
+ typescript_1.default.SyntaxKind.ClassDeclaration,
+ typescript_1.default.SyntaxKind.BindingElement,
+ ],
+ [models_1.ReflectionKind.Interface]: [
+ typescript_1.default.SyntaxKind.InterfaceDeclaration,
+ typescript_1.default.SyntaxKind.TypeAliasDeclaration,
+ ],
+ [models_1.ReflectionKind.Constructor]: [typescript_1.default.SyntaxKind.Constructor],
+ [models_1.ReflectionKind.Property]: variablePropertyKinds,
+ [models_1.ReflectionKind.Method]: [
+ typescript_1.default.SyntaxKind.FunctionDeclaration,
+ typescript_1.default.SyntaxKind.MethodDeclaration,
+ ],
+ [models_1.ReflectionKind.CallSignature]: [
+ typescript_1.default.SyntaxKind.FunctionDeclaration,
+ typescript_1.default.SyntaxKind.VariableDeclaration,
+ typescript_1.default.SyntaxKind.MethodDeclaration,
+ typescript_1.default.SyntaxKind.MethodDeclaration,
+ typescript_1.default.SyntaxKind.PropertyDeclaration,
+ typescript_1.default.SyntaxKind.PropertySignature,
+ typescript_1.default.SyntaxKind.CallSignature,
+ ],
+ [models_1.ReflectionKind.IndexSignature]: [typescript_1.default.SyntaxKind.IndexSignature],
+ [models_1.ReflectionKind.ConstructorSignature]: [typescript_1.default.SyntaxKind.ConstructSignature],
+ [models_1.ReflectionKind.Parameter]: [typescript_1.default.SyntaxKind.Parameter],
+ [models_1.ReflectionKind.TypeLiteral]: [typescript_1.default.SyntaxKind.TypeLiteral],
+ [models_1.ReflectionKind.TypeParameter]: [typescript_1.default.SyntaxKind.TypeParameter],
+ [models_1.ReflectionKind.Accessor]: [typescript_1.default.SyntaxKind.PropertyDeclaration],
+ [models_1.ReflectionKind.GetSignature]: [typescript_1.default.SyntaxKind.GetAccessor],
+ [models_1.ReflectionKind.SetSignature]: [typescript_1.default.SyntaxKind.SetAccessor],
+ [models_1.ReflectionKind.ObjectLiteral]: [typescript_1.default.SyntaxKind.ObjectLiteralExpression],
+ [models_1.ReflectionKind.TypeAlias]: [typescript_1.default.SyntaxKind.TypeAliasDeclaration],
+ [models_1.ReflectionKind.Reference]: [
+ typescript_1.default.SyntaxKind.NamespaceExport,
+ typescript_1.default.SyntaxKind.ExportSpecifier,
+ ],
+};
+function discoverFileComment(node, commentStyle) {
+ const text = node.text;
+ const comments = collectCommentRanges(typescript_1.default.getLeadingCommentRanges(text, node.pos));
+ const selectedDocComment = comments.find((ranges) => permittedRange(text, ranges, commentStyle));
+ if (selectedDocComment) {
+ return {
+ file: node,
+ ranges: selectedDocComment,
+ jsDoc: findJsDocForComment(node, selectedDocComment),
+ };
+ }
+}
+exports.discoverFileComment = discoverFileComment;
+function discoverComment(symbol, kind, logger, commentStyle) {
+ // For a module comment, we want the first one defined in the file,
+ // not the last one, since that will apply to the import or declaration.
+ const reverse = !symbol.declarations?.some(typescript_1.default.isSourceFile);
+ const discovered = [];
+ for (const decl of symbol.declarations || []) {
+ const text = decl.getSourceFile().text;
+ if (wantedKinds[kind].includes(decl.kind)) {
+ const node = declarationToCommentNode(decl);
+ if (!node) {
+ continue;
+ }
+ // Special behavior here! We temporarily put the implementation comment
+ // on the reflection which contains all the signatures. This lets us pull
+ // the comment on the implementation if some signature does not have a comment.
+ // However, we don't want to skip the node if it is a reference to something.
+ // See the gh1770 test for an example.
+ if (kind & models_1.ReflectionKind.ContainsCallSignatures &&
+ [
+ typescript_1.default.SyntaxKind.FunctionDeclaration,
+ typescript_1.default.SyntaxKind.MethodDeclaration,
+ typescript_1.default.SyntaxKind.Constructor,
+ ].includes(node.kind) &&
+ !node.body) {
+ continue;
+ }
+ const comments = collectCommentRanges(typescript_1.default.getLeadingCommentRanges(text, node.pos));
+ if (reverse) {
+ comments.reverse();
+ }
+ const selectedDocComment = comments.find((ranges) => permittedRange(text, ranges, commentStyle));
+ if (selectedDocComment) {
+ discovered.push({
+ file: decl.getSourceFile(),
+ ranges: selectedDocComment,
+ jsDoc: findJsDocForComment(node, selectedDocComment),
+ });
+ }
+ }
+ }
+ switch (discovered.length) {
+ case 0:
+ return undefined;
+ case 1:
+ return discovered[0];
+ default: {
+ logger.warn(`${symbol.name} has multiple declarations with a comment. An arbitrary comment will be used.`);
+ const locations = discovered.map(({ file, ranges: [{ pos }] }) => {
+ const path = (0, paths_1.nicePath)(file.fileName);
+ const line = typescript_1.default.getLineAndCharacterOfPosition(file, pos).line + 1;
+ return `${path}:${line}`;
+ });
+ logger.info(`The comments for ${symbol.name} are declared at:\n\t${locations.join("\n\t")}`);
+ return discovered[0];
+ }
+ }
+}
+exports.discoverComment = discoverComment;
+function discoverSignatureComment(declaration, commentStyle) {
+ const node = declarationToCommentNode(declaration);
+ if (!node) {
+ return;
+ }
+ if (typescript_1.default.isJSDocSignature(node)) {
+ const comment = node.parent.parent;
+ (0, assert_1.ok)(typescript_1.default.isJSDoc(comment));
+ return {
+ file: node.getSourceFile(),
+ ranges: [
+ {
+ kind: typescript_1.default.SyntaxKind.MultiLineCommentTrivia,
+ pos: comment.pos,
+ end: comment.end,
+ },
+ ],
+ jsDoc: comment,
+ };
+ }
+ const text = node.getSourceFile().text;
+ const comments = collectCommentRanges(typescript_1.default.getLeadingCommentRanges(text, node.pos));
+ comments.reverse();
+ const comment = comments.find((ranges) => permittedRange(text, ranges, commentStyle));
+ if (comment) {
+ return {
+ file: node.getSourceFile(),
+ ranges: comment,
+ jsDoc: findJsDocForComment(node, comment),
+ };
+ }
+}
+exports.discoverSignatureComment = discoverSignatureComment;
+function findJsDocForComment(node, ranges) {
+ if (ranges[0].kind === typescript_1.default.SyntaxKind.MultiLineCommentTrivia) {
+ const jsDocs = typescript_1.default
+ .getJSDocCommentsAndTags(node)
+ .map((doc) => typescript_1.default.findAncestor(doc, typescript_1.default.isJSDoc));
+ return jsDocs.find((doc) => doc.pos === ranges[0].pos);
+ }
+}
+/**
+ * Check whether the given module declaration is the topmost.
+ *
+ * This function returns TRUE if there is no trailing module defined, in
+ * the following example this would be the case only for module `C`.
+ *
+ * ```
+ * module A.B.C { }
+ * ```
+ *
+ * @param node The module definition that should be tested.
+ * @return TRUE if the given node is the topmost module declaration, FALSE otherwise.
+ */
+function isTopmostModuleDeclaration(node) {
+ return node.getChildren().some(typescript_1.default.isModuleBlock);
+}
+/**
+ * Return the root module declaration of the given module declaration.
+ *
+ * In the following example this function would always return module
+ * `A` no matter which of the modules was passed in.
+ *
+ * ```
+ * module A.B.C { }
+ * ```
+ */
+function getRootModuleDeclaration(node) {
+ while (node.parent &&
+ node.parent.kind === typescript_1.default.SyntaxKind.ModuleDeclaration) {
+ const parent = node.parent;
+ if (node.name.pos === parent.name.end + 1) {
+ node = parent;
+ }
+ else {
+ break;
+ }
+ }
+ return node;
+}
+function declarationToCommentNode(node) {
+ if (!node.parent)
+ return node;
+ // const abc = 123
+ // ^^^
+ if (node.parent.kind === typescript_1.default.SyntaxKind.VariableDeclarationList) {
+ return node.parent.parent;
+ }
+ // const a = () => {}
+ // ^^^^^^^^
+ if (node.parent.kind === typescript_1.default.SyntaxKind.VariableDeclaration) {
+ return node.parent.parent.parent;
+ }
+ // class X { y = () => {} }
+ // ^^^^^^^^
+ // function Z() {}
+ // Z.method = () => {}
+ // ^^^^^^^^
+ // export default () => {}
+ // ^^^^^^^^
+ if ([
+ typescript_1.default.SyntaxKind.PropertyDeclaration,
+ typescript_1.default.SyntaxKind.BinaryExpression,
+ typescript_1.default.SyntaxKind.ExportAssignment,
+ ].includes(node.parent.kind)) {
+ return node.parent;
+ }
+ if (typescript_1.default.isModuleDeclaration(node)) {
+ if (!isTopmostModuleDeclaration(node)) {
+ return;
+ }
+ else {
+ return getRootModuleDeclaration(node);
+ }
+ }
+ if (node.kind === typescript_1.default.SyntaxKind.ExportSpecifier) {
+ return node.parent.parent;
+ }
+ if ([typescript_1.default.SyntaxKind.NamespaceExport, typescript_1.default.SyntaxKind.FunctionType].includes(node.kind)) {
+ return node.parent;
+ }
+ return node;
+}
+/**
+ * Separate comment ranges into arrays so that multiple line comments are kept together
+ * and each block comment is left on its own.
+ */
+function collectCommentRanges(ranges) {
+ const result = [];
+ let collect = [];
+ for (const range of ranges || []) {
+ collect.push(range);
+ switch (range.kind) {
+ case typescript_1.default.SyntaxKind.MultiLineCommentTrivia:
+ if (collect.length) {
+ result.push(collect);
+ collect = [];
+ }
+ result.push([range]);
+ break;
+ case typescript_1.default.SyntaxKind.SingleLineCommentTrivia:
+ collect.push(range);
+ break;
+ /* istanbul ignore next */
+ default:
+ (0, utils_1.assertNever)(range.kind);
+ }
+ }
+ if (collect.length) {
+ result.push(collect);
+ }
+ return result;
+}
+function permittedRange(text, ranges, commentStyle) {
+ switch (commentStyle) {
+ case declaration_1.CommentStyle.All:
+ return true;
+ case declaration_1.CommentStyle.Block:
+ return ranges[0].kind === typescript_1.default.SyntaxKind.MultiLineCommentTrivia;
+ case declaration_1.CommentStyle.Line:
+ return ranges[0].kind === typescript_1.default.SyntaxKind.SingleLineCommentTrivia;
+ case declaration_1.CommentStyle.JSDoc:
+ return (ranges[0].kind === typescript_1.default.SyntaxKind.MultiLineCommentTrivia &&
+ text[ranges[0].pos] === "/" &&
+ text[ranges[0].pos + 1] === "*" &&
+ text[ranges[0].pos + 2] === "*");
+ }
+}
diff --git a/node_modules/typedoc/dist/lib/converter/comments/index.d.ts b/node_modules/typedoc/dist/lib/converter/comments/index.d.ts
new file mode 100644
index 0000000..5b70a14
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/index.d.ts
@@ -0,0 +1,15 @@
+import ts from "typescript";
+import { Comment, ReflectionKind } from "../../models";
+import { Logger } from "../../utils";
+import type { CommentStyle, JsDocCompatibility } from "../../utils/options/declaration";
+export interface CommentParserConfig {
+ blockTags: Set<string>;
+ inlineTags: Set<string>;
+ modifierTags: Set<string>;
+ jsDocCompatibility: JsDocCompatibility;
+}
+export declare function clearCommentCache(): void;
+export declare function getComment(symbol: ts.Symbol, kind: ReflectionKind, config: CommentParserConfig, logger: Logger, commentStyle: CommentStyle, checker: ts.TypeChecker | undefined): Comment | undefined;
+export declare function getFileComment(file: ts.SourceFile, config: CommentParserConfig, logger: Logger, commentStyle: CommentStyle, checker: ts.TypeChecker | undefined): Comment | undefined;
+export declare function getSignatureComment(declaration: ts.SignatureDeclaration | ts.JSDocSignature, config: CommentParserConfig, logger: Logger, commentStyle: CommentStyle, checker: ts.TypeChecker | undefined): Comment | undefined;
+export declare function getJsDocComment(declaration: ts.JSDocPropertyLikeTag | ts.JSDocCallbackTag | ts.JSDocTypedefTag | ts.JSDocTemplateTag | ts.JSDocEnumTag, config: CommentParserConfig, logger: Logger, checker: ts.TypeChecker | undefined): Comment | undefined;
diff --git a/node_modules/typedoc/dist/lib/converter/comments/index.js b/node_modules/typedoc/dist/lib/converter/comments/index.js
new file mode 100644
index 0000000..655950f
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/index.js
@@ -0,0 +1,155 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getJsDocComment = exports.getSignatureComment = exports.getFileComment = exports.getComment = exports.clearCommentCache = void 0;
+const typescript_1 = __importDefault(require("typescript"));
+const models_1 = require("../../models");
+const utils_1 = require("../../utils");
+const blockLexer_1 = require("./blockLexer");
+const discovery_1 = require("./discovery");
+const lineLexer_1 = require("./lineLexer");
+const parser_1 = require("./parser");
+const jsDocCommentKinds = [
+ typescript_1.default.SyntaxKind.JSDocPropertyTag,
+ typescript_1.default.SyntaxKind.JSDocCallbackTag,
+ typescript_1.default.SyntaxKind.JSDocTypedefTag,
+ typescript_1.default.SyntaxKind.JSDocTemplateTag,
+ typescript_1.default.SyntaxKind.JSDocEnumTag,
+];
+let commentCache = new WeakMap();
+// We need to do this for tests so that changing the tsLinkResolution option
+// actually works. Without it, we'd get the old parsed comment which doesn't
+// have the TS symbols attached.
+function clearCommentCache() {
+ commentCache = new WeakMap();
+}
+exports.clearCommentCache = clearCommentCache;
+function getCommentWithCache(discovered, config, logger, checker) {
+ if (!discovered)
+ return;
+ const { file, ranges, jsDoc } = discovered;
+ const cache = commentCache.get(file) || new Map();
+ if (cache?.has(ranges[0].pos)) {
+ return cache.get(ranges[0].pos).clone();
+ }
+ let comment;
+ switch (ranges[0].kind) {
+ case typescript_1.default.SyntaxKind.MultiLineCommentTrivia:
+ comment = (0, parser_1.parseComment)((0, blockLexer_1.lexBlockComment)(file.text, ranges[0].pos, ranges[0].end, jsDoc, checker), config, file, logger);
+ break;
+ case typescript_1.default.SyntaxKind.SingleLineCommentTrivia:
+ comment = (0, parser_1.parseComment)((0, lineLexer_1.lexLineComments)(file.text, ranges), config, file, logger);
+ break;
+ default:
+ (0, utils_1.assertNever)(ranges[0].kind);
+ }
+ cache.set(ranges[0].pos, comment);
+ commentCache.set(file, cache);
+ return comment.clone();
+}
+function getCommentImpl(commentSource, config, logger, moduleComment, checker) {
+ const comment = getCommentWithCache(commentSource, config, logger, checker);
+ if (moduleComment && comment) {
+ // Module comment, make sure it is tagged with @packageDocumentation or @module.
+ // If it isn't then the comment applies to the first statement in the file, so throw it away.
+ if (!comment.hasModifier("@packageDocumentation") &&
+ !comment.getTag("@module")) {
+ return;
+ }
+ }
+ if (!moduleComment && comment) {
+ // Ensure module comments are not attached to non-module reflections.
+ if (comment.hasModifier("@packageDocumentation") ||
+ comment.getTag("@module")) {
+ return;
+ }
+ }
+ return comment;
+}
+function getComment(symbol, kind, config, logger, commentStyle, checker) {
+ const declarations = symbol.declarations || [];
+ if (declarations.length &&
+ declarations.every((d) => jsDocCommentKinds.includes(d.kind))) {
+ return getJsDocComment(declarations[0], config, logger, checker);
+ }
+ const comment = getCommentImpl((0, discovery_1.discoverComment)(symbol, kind, logger, commentStyle), config, logger, declarations.some(typescript_1.default.isSourceFile), checker);
+ if (!comment && kind === models_1.ReflectionKind.Property) {
+ return getConstructorParamPropertyComment(symbol, config, logger, commentStyle, checker);
+ }
+ return comment;
+}
+exports.getComment = getComment;
+function getFileComment(file, config, logger, commentStyle, checker) {
+ return getCommentImpl((0, discovery_1.discoverFileComment)(file, commentStyle), config, logger,
+ /* moduleComment */ true, checker);
+}
+exports.getFileComment = getFileComment;
+function getConstructorParamPropertyComment(symbol, config, logger, commentStyle, checker) {
+ const decl = symbol.declarations?.find(typescript_1.default.isParameter);
+ if (!decl)
+ return;
+ const ctor = decl.parent;
+ const comment = getSignatureComment(ctor, config, logger, commentStyle, checker);
+ const paramTag = comment?.getIdentifiedTag(symbol.name, "@param");
+ if (paramTag) {
+ return new models_1.Comment(paramTag.content);
+ }
+}
+function getSignatureComment(declaration, config, logger, commentStyle, checker) {
+ return getCommentImpl((0, discovery_1.discoverSignatureComment)(declaration, commentStyle), config, logger, false, checker);
+}
+exports.getSignatureComment = getSignatureComment;
+function getJsDocComment(declaration, config, logger, checker) {
+ const file = declaration.getSourceFile();
+ // First, get the whole comment. We know we'll need all of it.
+ let parent = declaration.parent;
+ while (!typescript_1.default.isJSDoc(parent)) {
+ parent = parent.parent;
+ }
+ // Then parse it.
+ const comment = getCommentWithCache({
+ file,
+ ranges: [
+ {
+ kind: typescript_1.default.SyntaxKind.MultiLineCommentTrivia,
+ pos: parent.pos,
+ end: parent.end,
+ },
+ ],
+ jsDoc: parent,
+ }, config, logger, checker);
+ // And pull out the tag we actually care about.
+ if (typescript_1.default.isJSDocEnumTag(declaration)) {
+ return new models_1.Comment(comment.getTag("@enum")?.content);
+ }
+ if (typescript_1.default.isJSDocTemplateTag(declaration) &&
+ declaration.comment &&
+ declaration.typeParameters.length > 1) {
+ // We could just put the same comment on everything, but due to how comment parsing works,
+ // we'd have to search for any @template with a name starting with the first type parameter's name
+ // which feels horribly hacky.
+ logger.warn(`TypeDoc does not support multiple type parameters defined in a single @template tag with a comment.`, declaration);
+ return;
+ }
+ let name;
+ if (typescript_1.default.isJSDocTemplateTag(declaration)) {
+ // This isn't really ideal.
+ name = declaration.typeParameters[0].name.text;
+ }
+ else {
+ name = declaration.name?.getText();
+ }
+ if (!name) {
+ return;
+ }
+ const tag = comment.getIdentifiedTag(name, `@${declaration.tagName.text}`);
+ if (!tag) {
+ logger.error(`Failed to find JSDoc tag for ${name} after parsing comment, please file a bug report.`, declaration);
+ }
+ else {
+ return new models_1.Comment(models_1.Comment.cloneDisplayParts(tag.content));
+ }
+}
+exports.getJsDocComment = getJsDocComment;
diff --git a/node_modules/typedoc/dist/lib/converter/comments/lexer.d.ts b/node_modules/typedoc/dist/lib/converter/comments/lexer.d.ts
new file mode 100644
index 0000000..18271a0
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/lexer.d.ts
@@ -0,0 +1,17 @@
+import type { ReflectionSymbolId } from "../../models";
+export declare enum TokenSyntaxKind {
+ Text = "text",
+ NewLine = "new_line",
+ OpenBrace = "open_brace",
+ CloseBrace = "close_brace",
+ Tag = "tag",
+ Code = "code",
+ TypeAnnotation = "type"
+}
+export interface Token {
+ kind: TokenSyntaxKind;
+ text: string;
+ pos: number;
+ tsLinkTarget?: ReflectionSymbolId;
+ tsLinkText?: string;
+}
diff --git a/node_modules/typedoc/dist/lib/converter/comments/lexer.js b/node_modules/typedoc/dist/lib/converter/comments/lexer.js
new file mode 100644
index 0000000..59d9bfb
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/lexer.js
@@ -0,0 +1,13 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.TokenSyntaxKind = void 0;
+var TokenSyntaxKind;
+(function (TokenSyntaxKind) {
+ TokenSyntaxKind["Text"] = "text";
+ TokenSyntaxKind["NewLine"] = "new_line";
+ TokenSyntaxKind["OpenBrace"] = "open_brace";
+ TokenSyntaxKind["CloseBrace"] = "close_brace";
+ TokenSyntaxKind["Tag"] = "tag";
+ TokenSyntaxKind["Code"] = "code";
+ TokenSyntaxKind["TypeAnnotation"] = "type";
+})(TokenSyntaxKind || (exports.TokenSyntaxKind = TokenSyntaxKind = {}));
diff --git a/node_modules/typedoc/dist/lib/converter/comments/lineLexer.d.ts b/node_modules/typedoc/dist/lib/converter/comments/lineLexer.d.ts
new file mode 100644
index 0000000..8cb38dd
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/lineLexer.d.ts
@@ -0,0 +1,3 @@
+import type * as ts from "typescript";
+import { Token } from "./lexer";
+export declare function lexLineComments(file: string, ranges: ts.CommentRange[]): Generator<Token, undefined, undefined>;
diff --git a/node_modules/typedoc/dist/lib/converter/comments/lineLexer.js b/node_modules/typedoc/dist/lib/converter/comments/lineLexer.js
new file mode 100644
index 0000000..6652479
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/lineLexer.js
@@ -0,0 +1,267 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.lexLineComments = void 0;
+const lexer_1 = require("./lexer");
+function* lexLineComments(file, ranges) {
+ // Wrapper around our real lex function to collapse adjacent text tokens.
+ let textToken;
+ for (const token of lexLineComments2(file, ranges[0].pos, ranges[ranges.length - 1].end)) {
+ if (token.kind === lexer_1.TokenSyntaxKind.Text) {
+ if (textToken) {
+ textToken.text += token.text;
+ }
+ else {
+ textToken = token;
+ }
+ }
+ else {
+ if (textToken) {
+ yield textToken;
+ textToken = void 0;
+ }
+ yield token;
+ }
+ }
+ if (textToken) {
+ yield textToken;
+ }
+ return;
+}
+exports.lexLineComments = lexLineComments;
+function* lexLineComments2(file, pos, end) {
+ // Trailing whitespace
+ while (pos < end && /\s/.test(file[end - 1])) {
+ end--;
+ }
+ let lineStart = true;
+ let braceStartsType = false;
+ for (;;) {
+ if (lineStart) {
+ pos = skipLeadingLineTrivia(pos);
+ lineStart = false;
+ }
+ if (pos >= end) {
+ return;
+ }
+ switch (file[pos]) {
+ case "\n":
+ yield makeToken(lexer_1.TokenSyntaxKind.NewLine, 1);
+ lineStart = true;
+ break;
+ case "{":
+ if (braceStartsType && nextNonWs(pos + 1) !== "@") {
+ yield makeToken(lexer_1.TokenSyntaxKind.TypeAnnotation, findEndOfType(pos) - pos);
+ braceStartsType = false;
+ }
+ else {
+ yield makeToken(lexer_1.TokenSyntaxKind.OpenBrace, 1);
+ }
+ break;
+ case "}":
+ yield makeToken(lexer_1.TokenSyntaxKind.CloseBrace, 1);
+ braceStartsType = false;
+ break;
+ case "`": {
+ // Markdown's code rules are a royal pain. This could be one of several things.
+ // 1. Inline code: <1-n ticks><text><same number of ticks>
+ // 2. Code block: <3 ticks><language, no ticks>\n<text>\n<3 ticks>\n
+ // 3. Unmatched tick(s), not code, but part of some text.
+ // We don't quite handle #2 correctly yet. PR welcome!
+ braceStartsType = false;
+ let tickCount = 1;
+ let lookahead = pos;
+ while (lookahead + 1 < end && file[lookahead + 1] === "`") {
+ tickCount++;
+ lookahead++;
+ }
+ let lookaheadStart = pos;
+ const codeText = [];
+ lookahead++;
+ while (lookahead < end) {
+ if (lookaheadExactlyNTicks(lookahead, tickCount)) {
+ lookahead += tickCount;
+ codeText.push(file.substring(lookaheadStart, lookahead));
+ yield {
+ kind: lexer_1.TokenSyntaxKind.Code,
+ text: codeText.join(""),
+ pos,
+ };
+ pos = lookahead;
+ break;
+ }
+ else if (file[lookahead] === "`") {
+ while (lookahead < end && file[lookahead] === "`") {
+ lookahead++;
+ }
+ }
+ else if (file[lookahead] === "\\" &&
+ lookahead + 1 < end &&
+ file[lookahead + 1] !== "\n") {
+ lookahead += 2;
+ }
+ else if (file[lookahead] === "\n") {
+ lookahead++;
+ codeText.push(file.substring(lookaheadStart, lookahead));
+ lookahead = skipLeadingLineTrivia(lookahead);
+ lookaheadStart = lookahead;
+ }
+ else {
+ lookahead++;
+ }
+ }
+ if (lookahead >= end && pos !== lookahead) {
+ if (tickCount === 3 &&
+ file.substring(pos, end).includes("\n")) {
+ codeText.push(file.substring(lookaheadStart, end));
+ yield {
+ kind: lexer_1.TokenSyntaxKind.Code,
+ text: codeText.join(""),
+ pos,
+ };
+ pos = lookahead;
+ }
+ else {
+ yield makeToken(lexer_1.TokenSyntaxKind.Text, tickCount);
+ }
+ }
+ break;
+ }
+ case "@": {
+ let lookahead = pos + 1;
+ while (lookahead < end && /[a-z]/i.test(file[lookahead])) {
+ lookahead++;
+ }
+ if (lookahead !== pos + 1) {
+ while (lookahead < end &&
+ /[a-z0-9]/i.test(file[lookahead])) {
+ lookahead++;
+ }
+ }
+ if (lookahead !== pos + 1 &&
+ (lookahead === end || /[\s}]/.test(file[lookahead]))) {
+ braceStartsType = true;
+ yield makeToken(lexer_1.TokenSyntaxKind.Tag, lookahead - pos);
+ break;
+ }
+ }
+ // fall through if we didn't find something that looks like a tag
+ default: {
+ const textParts = [];
+ let lookaheadStart = pos;
+ let lookahead = pos;
+ while (lookahead < end) {
+ if ("{}\n`".includes(file[lookahead]))
+ break;
+ if (lookahead !== pos &&
+ file[lookahead] === "@" &&
+ /\s/.test(file[lookahead - 1])) {
+ // Probably the start of a modifier tag
+ break;
+ }
+ if (file[lookahead] === "\\" &&
+ lookahead + 1 < end &&
+ "{}@`".includes(file[lookahead + 1])) {
+ textParts.push(file.substring(lookaheadStart, lookahead), file[lookahead + 1]);
+ lookahead++;
+ lookaheadStart = lookahead + 1;
+ }
+ lookahead++;
+ }
+ textParts.push(file.substring(lookaheadStart, lookahead));
+ if (textParts.some((part) => /\S/.test(part))) {
+ braceStartsType = false;
+ }
+ // This piece of text had line continuations or escaped text
+ yield {
+ kind: lexer_1.TokenSyntaxKind.Text,
+ text: textParts.join(""),
+ pos,
+ };
+ pos = lookahead;
+ break;
+ }
+ }
+ }
+ function makeToken(kind, size) {
+ const start = pos;
+ pos += size;
+ return {
+ kind,
+ text: file.substring(start, pos),
+ pos: start,
+ };
+ }
+ function skipLeadingLineTrivia(pos) {
+ let lookahead = pos;
+ while (lookahead < end && /\s/.test(file[lookahead])) {
+ lookahead++;
+ }
+ while (lookahead < end && file[lookahead] === "/") {
+ lookahead++;
+ }
+ if (lookahead < end && file[lookahead] === " ") {
+ lookahead++;
+ }
+ return lookahead;
+ }
+ function lookaheadExactlyNTicks(pos, n) {
+ if (pos + n > end) {
+ return false;
+ }
+ return file.startsWith("`".repeat(n), pos) && file[pos + n] !== "`";
+ }
+ function findEndOfType(pos) {
+ let openBraces = 0;
+ while (pos < end) {
+ if (file[pos] === "{") {
+ openBraces++;
+ }
+ else if (file[pos] === "}") {
+ if (--openBraces === 0) {
+ break;
+ }
+ }
+ else if ("`'\"".includes(file[pos])) {
+ pos = findEndOfString(pos);
+ }
+ pos++;
+ }
+ if (pos < end && file[pos] === "}") {
+ pos++;
+ }
+ return pos;
+ }
+ function findEndOfString(pos) {
+ const endOfString = file[pos];
+ pos++;
+ while (pos < end) {
+ if (file[pos] === endOfString) {
+ break;
+ }
+ else if (file[pos] === "\\") {
+ pos++; // Skip escaped character
+ }
+ else if (endOfString === "`" &&
+ file[pos] === "$" &&
+ file[pos + 1] === "{") {
+ // Template literal with data inside a ${}
+ while (pos < end && file[pos] !== "}") {
+ if ("`'\"".includes(file[pos])) {
+ pos = findEndOfString(pos) + 1;
+ }
+ else {
+ pos++;
+ }
+ }
+ }
+ pos++;
+ }
+ return pos;
+ }
+ function nextNonWs(pos) {
+ while (pos < end && /\s/.test(file[pos])) {
+ pos++;
+ }
+ return file[pos];
+ }
+}
diff --git a/node_modules/typedoc/dist/lib/converter/comments/linkResolver.d.ts b/node_modules/typedoc/dist/lib/converter/comments/linkResolver.d.ts
new file mode 100644
index 0000000..3b4948b
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/linkResolver.d.ts
@@ -0,0 +1,17 @@
+import { Comment, CommentDisplayPart, Reflection, ReflectionSymbolId } from "../../models";
+import { DeclarationReference } from "./declarationReference";
+export type ExternalResolveResult = {
+ target: string;
+ caption?: string;
+};
+/**
+ * @param ref - Parsed declaration reference to resolve. This may be created automatically for some symbol, or
+ * parsed from user input.
+ * @param refl - Reflection that contains the resolved link
+ * @param part - If the declaration reference was created from a comment, the originating part.
+ * @param symbolId - If the declaration reference was created from a symbol, or `useTsLinkResolution` is turned
+ * on and TypeScript resolved the link to some symbol, the ID of that symbol.
+ */
+export type ExternalSymbolResolver = (ref: DeclarationReference, refl: Reflection, part: Readonly<CommentDisplayPart> | undefined, symbolId: ReflectionSymbolId | undefined) => ExternalResolveResult | string | undefined;
+export declare function resolveLinks(comment: Comment, reflection: Reflection, externalResolver: ExternalSymbolResolver): void;
+export declare function resolvePartLinks(reflection: Reflection, parts: readonly CommentDisplayPart[], externalResolver: ExternalSymbolResolver): CommentDisplayPart[];
diff --git a/node_modules/typedoc/dist/lib/converter/comments/linkResolver.js b/node_modules/typedoc/dist/lib/converter/comments/linkResolver.js
new file mode 100644
index 0000000..c070b58
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/linkResolver.js
@@ -0,0 +1,118 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.resolvePartLinks = exports.resolveLinks = void 0;
+const typescript_1 = __importDefault(require("typescript"));
+const models_1 = require("../../models");
+const declarationReference_1 = require("./declarationReference");
+const declarationReferenceResolver_1 = require("./declarationReferenceResolver");
+const urlPrefix = /^(http|ftp)s?:\/\//;
+function resolveLinks(comment, reflection, externalResolver) {
+ comment.summary = resolvePartLinks(reflection, comment.summary, externalResolver);
+ for (const tag of comment.blockTags) {
+ tag.content = resolvePartLinks(reflection, tag.content, externalResolver);
+ }
+ if (reflection instanceof models_1.DeclarationReflection && reflection.readme) {
+ reflection.readme = resolvePartLinks(reflection, reflection.readme, externalResolver);
+ }
+}
+exports.resolveLinks = resolveLinks;
+function resolvePartLinks(reflection, parts, externalResolver) {
+ return parts.flatMap((part) => processPart(reflection, part, externalResolver));
+}
+exports.resolvePartLinks = resolvePartLinks;
+function processPart(reflection, part, externalResolver) {
+ if (part.kind === "inline-tag") {
+ if (part.tag === "@link" ||
+ part.tag === "@linkcode" ||
+ part.tag === "@linkplain") {
+ return resolveLinkTag(reflection, part, externalResolver);
+ }
+ }
+ return part;
+}
+function resolveLinkTag(reflection, part, externalResolver) {
+ let defaultDisplayText = "";
+ let pos = 0;
+ const end = part.text.length;
+ while (pos < end && typescript_1.default.isWhiteSpaceLike(part.text.charCodeAt(pos))) {
+ pos++;
+ }
+ let target;
+ // Try to parse a declaration reference if we didn't use the TS symbol for resolution
+ const declRef = (0, declarationReference_1.parseDeclarationReference)(part.text, pos, end);
+ // Might already know where it should go if useTsLinkResolution is turned on
+ if (part.target instanceof models_1.ReflectionSymbolId) {
+ const tsTarget = reflection.project.getReflectionFromSymbolId(part.target);
+ if (tsTarget) {
+ target = tsTarget;
+ pos = end;
+ defaultDisplayText = part.tsLinkText || target.name;
+ }
+ else if (declRef) {
+ // If we didn't find a target, we might be pointing to a symbol in another project that will be merged in
+ // or some external symbol, so ask external resolvers to try resolution. Don't use regular declaration ref
+ // resolution in case it matches something that would have been merged in later.
+ const externalResolveResult = externalResolver(declRef[0], reflection, part, part.target instanceof models_1.ReflectionSymbolId
+ ? part.target
+ : undefined);
+ defaultDisplayText = part.text.substring(0, pos);
+ switch (typeof externalResolveResult) {
+ case "string":
+ target = externalResolveResult;
+ break;
+ case "object":
+ target = externalResolveResult.target;
+ defaultDisplayText =
+ externalResolveResult.caption || defaultDisplayText;
+ }
+ }
+ }
+ if (!target && declRef) {
+ // Got one, great! Try to resolve the link
+ target = (0, declarationReferenceResolver_1.resolveDeclarationReference)(reflection, declRef[0]);
+ pos = declRef[1];
+ if (target) {
+ defaultDisplayText = target.name;
+ }
+ else {
+ // If we didn't find a link, it might be a @link tag to an external symbol, check that next.
+ const externalResolveResult = externalResolver(declRef[0], reflection, part, part.target instanceof models_1.ReflectionSymbolId
+ ? part.target
+ : undefined);
+ defaultDisplayText = part.text.substring(0, pos);
+ switch (typeof externalResolveResult) {
+ case "string":
+ target = externalResolveResult;
+ break;
+ case "object":
+ target = externalResolveResult.target;
+ defaultDisplayText =
+ externalResolveResult.caption || defaultDisplayText;
+ }
+ }
+ }
+ if (!target && urlPrefix.test(part.text)) {
+ const wsIndex = part.text.search(/\s/);
+ target = wsIndex === -1 ? part.text : part.text.substring(0, wsIndex);
+ pos = target.length;
+ defaultDisplayText = target;
+ }
+ // Remaining text after an optional pipe is the link text, so advance
+ // until that's consumed.
+ while (pos < end && typescript_1.default.isWhiteSpaceLike(part.text.charCodeAt(pos))) {
+ pos++;
+ }
+ if (pos < end && part.text[pos] === "|") {
+ pos++;
+ }
+ if (!target) {
+ return part;
+ }
+ part.target = target;
+ part.text =
+ part.text.substring(pos).trim() || defaultDisplayText || part.text;
+ return part;
+}
diff --git a/node_modules/typedoc/dist/lib/converter/comments/parser.d.ts b/node_modules/typedoc/dist/lib/converter/comments/parser.d.ts
new file mode 100644
index 0000000..f152c0c
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/parser.d.ts
@@ -0,0 +1,6 @@
+import type { CommentParserConfig } from ".";
+import { Comment } from "../../models";
+import { Logger } from "../../utils";
+import type { MinimalSourceFile } from "../../utils/minimalSourceFile";
+import { Token } from "./lexer";
+export declare function parseComment(tokens: Generator<Token, undefined, undefined>, config: CommentParserConfig, file: MinimalSourceFile, logger: Logger): Comment;
diff --git a/node_modules/typedoc/dist/lib/converter/comments/parser.js b/node_modules/typedoc/dist/lib/converter/comments/parser.js
new file mode 100644
index 0000000..3729f5e
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/parser.js
@@ -0,0 +1,355 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.parseComment = void 0;
+const assert_1 = require("assert");
+const models_1 = require("../../models");
+const utils_1 = require("../../utils");
+const paths_1 = require("../../utils/paths");
+const lexer_1 = require("./lexer");
+function makeLookaheadGenerator(gen) {
+ let trackHistory = false;
+ const history = [];
+ const next = [gen.next()];
+ return {
+ done() {
+ return !!next[0].done;
+ },
+ peek() {
+ (0, assert_1.ok)(!next[0].done);
+ return next[0].value;
+ },
+ take() {
+ const thisItem = next.shift();
+ if (trackHistory) {
+ history.push(thisItem);
+ }
+ (0, assert_1.ok)(!thisItem.done);
+ next.push(gen.next());
+ return thisItem.value;
+ },
+ mark() {
+ (0, assert_1.ok)(!trackHistory, "Can only mark one location for backtracking at a time");
+ trackHistory = true;
+ },
+ release() {
+ trackHistory = false;
+ next.unshift(...history);
+ history.length = 0;
+ },
+ };
+}
+function parseComment(tokens, config, file, logger) {
+ const lexer = makeLookaheadGenerator(tokens);
+ const tok = lexer.done() || lexer.peek();
+ const comment = new models_1.Comment();
+ comment.summary = blockContent(comment, lexer, config, warningImpl);
+ while (!lexer.done()) {
+ comment.blockTags.push(blockTag(comment, lexer, config, warningImpl));
+ }
+ postProcessComment(comment, (message) => {
+ (0, assert_1.ok)(typeof tok === "object");
+ logger.warn(`${message} in comment at ${(0, paths_1.nicePath)(file.fileName)}:${file.getLineAndCharacterOfPosition(tok.pos).line + 1}`);
+ });
+ return comment;
+ function warningImpl(message, token) {
+ logger.warn(message, token.pos, file);
+ }
+}
+exports.parseComment = parseComment;
+const HAS_USER_IDENTIFIER = [
+ "@callback",
+ "@param",
+ "@prop",
+ "@property",
+ "@template",
+ "@typedef",
+ "@typeParam",
+ "@inheritDoc",
+];
+function makeCodeBlock(text) {
+ return "```ts\n" + text + "\n```";
+}
+/**
+ * Loop over comment, produce lint warnings, and set tag names for tags
+ * which have them.
+ */
+function postProcessComment(comment, warning) {
+ for (const tag of comment.blockTags) {
+ if (HAS_USER_IDENTIFIER.includes(tag.tag) && tag.content.length) {
+ const first = tag.content[0];
+ if (first.kind === "text") {
+ let end = first.text.search(/\s/);
+ if (end === -1)
+ end = first.text.length;
+ tag.name = first.text.substring(0, end);
+ if (tag.name.startsWith("[") && tag.name.endsWith("]")) {
+ tag.name = tag.name.slice(1, tag.name.indexOf("="));
+ }
+ first.text = first.text.substring(end);
+ const endOfTrivia = first.text.search(/[^\-\s]/);
+ if (endOfTrivia !== -1) {
+ first.text = first.text.substring(endOfTrivia);
+ }
+ else {
+ // Remove this token, no real text in it.
+ tag.content.shift();
+ }
+ }
+ }
+ if (tag.content.some((part) => part.kind === "inline-tag" && part.tag === "@inheritDoc")) {
+ warning("An inline @inheritDoc tag should not appear within a block tag as it will not be processed");
+ }
+ }
+ const remarks = comment.blockTags.filter((tag) => tag.tag === "@remarks");
+ if (remarks.length > 1) {
+ warning("At most one @remarks tag is expected in a comment, ignoring all but the first");
+ (0, utils_1.removeIf)(comment.blockTags, (tag) => remarks.indexOf(tag) > 0);
+ }
+ const returns = comment.blockTags.filter((tag) => tag.tag === "@returns");
+ if (remarks.length > 1) {
+ warning("At most one @returns tag is expected in a comment, ignoring all but the first");
+ (0, utils_1.removeIf)(comment.blockTags, (tag) => returns.indexOf(tag) > 0);
+ }
+ const inheritDoc = comment.blockTags.filter((tag) => tag.tag === "@inheritDoc");
+ const inlineInheritDoc = comment.summary.filter((part) => part.kind === "inline-tag" && part.tag === "@inheritDoc");
+ if (inlineInheritDoc.length + inheritDoc.length > 1) {
+ warning("At most one @inheritDoc tag is expected in a comment, ignoring all but the first");
+ const allInheritTags = [...inlineInheritDoc, ...inheritDoc];
+ (0, utils_1.removeIf)(comment.summary, (part) => allInheritTags.indexOf(part) > 0);
+ (0, utils_1.removeIf)(comment.blockTags, (tag) => allInheritTags.indexOf(tag) > 0);
+ }
+ if ((inlineInheritDoc.length || inheritDoc.length) &&
+ comment.summary.some((part) => part.kind !== "inline-tag" && /\S/.test(part.text))) {
+ warning("Content in the summary section will be overwritten by the @inheritDoc tag");
+ }
+ if ((inlineInheritDoc.length || inheritDoc.length) && remarks.length) {
+ warning("Content in the @remarks block will be overwritten by the @inheritDoc tag");
+ }
+}
+const aliasedTags = new Map([["@return", "@returns"]]);
+function blockTag(comment, lexer, config, warning) {
+ const blockTag = lexer.take();
+ (0, assert_1.ok)(blockTag.kind === lexer_1.TokenSyntaxKind.Tag, "blockTag called not at the start of a block tag."); // blockContent is broken if this fails.
+ const tagName = aliasedTags.get(blockTag.text) || blockTag.text;
+ let content;
+ if (tagName === "@example" && config.jsDocCompatibility.exampleTag) {
+ content = exampleBlockContent(comment, lexer, config, warning);
+ }
+ else if (tagName === "@default" && config.jsDocCompatibility.defaultTag) {
+ content = defaultBlockContent(comment, lexer, config, warning);
+ }
+ else {
+ content = blockContent(comment, lexer, config, warning);
+ }
+ return new models_1.CommentTag(tagName, content);
+}
+/**
+ * The `@default` tag gets a special case because otherwise we will produce many warnings
+ * about unescaped/mismatched/missing braces in legacy JSDoc comments
+ */
+function defaultBlockContent(comment, lexer, config, warning) {
+ lexer.mark();
+ const content = blockContent(comment, lexer, config, () => { });
+ const end = lexer.done() || lexer.peek();
+ lexer.release();
+ if (content.some((part) => part.kind === "code")) {
+ return blockContent(comment, lexer, config, warning);
+ }
+ const tokens = [];
+ while ((lexer.done() || lexer.peek()) !== end) {
+ tokens.push(lexer.take());
+ }
+ const blockText = tokens
+ .map((tok) => tok.text)
+ .join("")
+ .trim();
+ return [
+ {
+ kind: "code",
+ text: makeCodeBlock(blockText),
+ },
+ ];
+}
+/**
+ * The `@example` tag gets a special case because otherwise we will produce many warnings
+ * about unescaped/mismatched/missing braces in legacy JSDoc comments.
+ */
+function exampleBlockContent(comment, lexer, config, warning) {
+ lexer.mark();
+ const content = blockContent(comment, lexer, config, () => { });
+ const end = lexer.done() || lexer.peek();
+ lexer.release();
+ if (content.some((part) => part.kind === "code" && part.text.startsWith("```"))) {
+ return blockContent(comment, lexer, config, warning);
+ }
+ const tokens = [];
+ while ((lexer.done() || lexer.peek()) !== end) {
+ tokens.push(lexer.take());
+ }
+ const blockText = tokens
+ .map((tok) => tok.text)
+ .join("")
+ .trim();
+ const caption = blockText.match(/^\s*<caption>(.*?)<\/caption>\s*(\n|$)/);
+ if (caption) {
+ return [
+ {
+ kind: "text",
+ text: caption[1] + "\n",
+ },
+ {
+ kind: "code",
+ text: makeCodeBlock(blockText.slice(caption[0].length)),
+ },
+ ];
+ }
+ else {
+ return [
+ {
+ kind: "code",
+ text: makeCodeBlock(blockText),
+ },
+ ];
+ }
+}
+function blockContent(comment, lexer, config, warning) {
+ const content = [];
+ let atNewLine = true;
+ loop: while (!lexer.done()) {
+ const next = lexer.peek();
+ let consume = true;
+ switch (next.kind) {
+ case lexer_1.TokenSyntaxKind.NewLine:
+ case lexer_1.TokenSyntaxKind.Text:
+ content.push({ kind: "text", text: next.text });
+ break;
+ case lexer_1.TokenSyntaxKind.Code:
+ content.push({ kind: "code", text: next.text });
+ break;
+ case lexer_1.TokenSyntaxKind.Tag:
+ if (next.text === "@inheritdoc") {
+ if (!config.jsDocCompatibility.inheritDocTag) {
+ warning("The @inheritDoc tag should be properly capitalized", next);
+ }
+ next.text = "@inheritDoc";
+ }
+ if (config.modifierTags.has(next.text)) {
+ comment.modifierTags.add(next.text);
+ break;
+ }
+ else if (!atNewLine && !config.blockTags.has(next.text)) {
+ // Treat unknown tag as a modifier, but warn about it.
+ comment.modifierTags.add(next.text);
+ warning(`Treating unrecognized tag "${next.text}" as a modifier tag`, next);
+ break;
+ }
+ else {
+ // Block tag or unknown tag, handled by our caller.
+ break loop;
+ }
+ case lexer_1.TokenSyntaxKind.TypeAnnotation:
+ // We always ignore these. In TS files they are redundant, in JS files
+ // they are required.
+ break;
+ case lexer_1.TokenSyntaxKind.CloseBrace:
+ // Unmatched closing brace, generate a warning, and treat it as text.
+ if (!config.jsDocCompatibility.ignoreUnescapedBraces) {
+ warning(`Unmatched closing brace`, next);
+ }
+ content.push({ kind: "text", text: next.text });
+ break;
+ case lexer_1.TokenSyntaxKind.OpenBrace:
+ inlineTag(lexer, content, config, warning);
+ consume = false;
+ break;
+ default:
+ (0, utils_1.assertNever)(next.kind);
+ }
+ if (consume && lexer.take().kind === lexer_1.TokenSyntaxKind.NewLine) {
+ atNewLine = true;
+ }
+ }
+ // Collapse adjacent text parts
+ for (let i = 0; i < content.length - 1 /* inside loop */;) {
+ if (content[i].kind === "text" && content[i + 1].kind === "text") {
+ content[i].text += content[i + 1].text;
+ content.splice(i + 1, 1);
+ }
+ else {
+ i++;
+ }
+ }
+ // Now get rid of extra whitespace, and any empty parts
+ for (let i = 0; i < content.length /* inside loop */;) {
+ if (i === 0 || content[i].kind === "inline-tag") {
+ content[i].text = content[i].text.trimStart();
+ }
+ if (i === content.length - 1 || content[i].kind === "inline-tag") {
+ content[i].text = content[i].text.trimEnd();
+ }
+ if (!content[i].text && content[i].kind === "text") {
+ content.splice(i, 1);
+ }
+ else {
+ i++;
+ }
+ }
+ return content;
+}
+function inlineTag(lexer, block, config, warning) {
+ const openBrace = lexer.take();
+ // Now skip whitespace to grab the tag name.
+ // If the first non-whitespace text after the brace isn't a tag,
+ // then produce a warning and treat what we've consumed as plain text.
+ if (lexer.done() ||
+ ![lexer_1.TokenSyntaxKind.Text, lexer_1.TokenSyntaxKind.Tag].includes(lexer.peek().kind)) {
+ if (!config.jsDocCompatibility.ignoreUnescapedBraces) {
+ warning("Encountered an unescaped open brace without an inline tag", openBrace);
+ }
+ block.push({ kind: "text", text: openBrace.text });
+ return;
+ }
+ let tagName = lexer.take();
+ if (lexer.done() ||
+ (tagName.kind === lexer_1.TokenSyntaxKind.Text &&
+ (!/^\s+$/.test(tagName.text) ||
+ lexer.peek().kind != lexer_1.TokenSyntaxKind.Tag))) {
+ if (!config.jsDocCompatibility.ignoreUnescapedBraces) {
+ warning("Encountered an unescaped open brace without an inline tag", openBrace);
+ }
+ block.push({ kind: "text", text: openBrace.text + tagName.text });
+ return;
+ }
+ if (tagName.kind !== lexer_1.TokenSyntaxKind.Tag) {
+ tagName = lexer.take();
+ }
+ if (!config.inlineTags.has(tagName.text)) {
+ warning(`Encountered an unknown inline tag "${tagName.text}"`, tagName);
+ }
+ const content = [];
+ // At this point, we know we have an inline tag. Treat everything following as plain text,
+ // until we get to the closing brace.
+ while (!lexer.done() && lexer.peek().kind !== lexer_1.TokenSyntaxKind.CloseBrace) {
+ const token = lexer.take();
+ if (token.kind === lexer_1.TokenSyntaxKind.OpenBrace) {
+ warning("Encountered an open brace within an inline tag, this is likely a mistake", token);
+ }
+ content.push(token.kind === lexer_1.TokenSyntaxKind.NewLine ? " " : token.text);
+ }
+ if (lexer.done()) {
+ warning("Inline tag is not closed", openBrace);
+ }
+ else {
+ lexer.take(); // Close brace
+ }
+ const inlineTag = {
+ kind: "inline-tag",
+ tag: tagName.text,
+ text: content.join(""),
+ };
+ if (tagName.tsLinkTarget) {
+ inlineTag.target = tagName.tsLinkTarget;
+ inlineTag.tsLinkText = tagName.tsLinkText;
+ }
+ block.push(inlineTag);
+}
diff --git a/node_modules/typedoc/dist/lib/converter/comments/rawLexer.d.ts b/node_modules/typedoc/dist/lib/converter/comments/rawLexer.d.ts
new file mode 100644
index 0000000..8529fc3
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/rawLexer.d.ts
@@ -0,0 +1,2 @@
+import { Token } from "./lexer";
+export declare function lexCommentString(file: string): Generator<Token, undefined, undefined>;
diff --git a/node_modules/typedoc/dist/lib/converter/comments/rawLexer.js b/node_modules/typedoc/dist/lib/converter/comments/rawLexer.js
new file mode 100644
index 0000000..10c88b1
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/comments/rawLexer.js
@@ -0,0 +1,258 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.lexCommentString = void 0;
+const lexer_1 = require("./lexer");
+function* lexCommentString(file) {
+ // Wrapper around our real lex function to collapse adjacent text tokens.
+ let textToken;
+ for (const token of lexCommentString2(file)) {
+ if (token.kind === lexer_1.TokenSyntaxKind.Text) {
+ if (textToken) {
+ textToken.text += token.text;
+ }
+ else {
+ textToken = token;
+ }
+ }
+ else {
+ if (textToken) {
+ yield textToken;
+ textToken = void 0;
+ }
+ yield token;
+ }
+ }
+ if (textToken) {
+ yield textToken;
+ }
+ return;
+}
+exports.lexCommentString = lexCommentString;
+function* lexCommentString2(file) {
+ let pos = 0;
+ let end = file.length;
+ // Skip leading whitespace
+ while (pos < end && /\s/.test(file[pos])) {
+ pos++;
+ }
+ // Trailing whitespace
+ while (pos < end && /\s/.test(file[end - 1])) {
+ end--;
+ }
+ let lineStart = true;
+ let braceStartsType = false;
+ for (;;) {
+ if (pos >= end) {
+ return;
+ }
+ if (lineStart) {
+ lineStart = false;
+ }
+ switch (file[pos]) {
+ case "\n":
+ yield makeToken(lexer_1.TokenSyntaxKind.NewLine, 1);
+ lineStart = true;
+ break;
+ case "{":
+ if (braceStartsType && nextNonWs(pos + 1) !== "@") {
+ yield makeToken(lexer_1.TokenSyntaxKind.TypeAnnotation, findEndOfType(pos) - pos);
+ braceStartsType = false;
+ }
+ else {
+ yield makeToken(lexer_1.TokenSyntaxKind.OpenBrace, 1);
+ }
+ break;
+ case "}":
+ yield makeToken(lexer_1.TokenSyntaxKind.CloseBrace, 1);
+ braceStartsType = false;
+ break;
+ case "`": {
+ // Markdown's code rules are a royal pain. This could be one of several things.
+ // 1. Inline code: <1-n ticks><text><same number of ticks>
+ // 2. Code block: <3 ticks><language, no ticks>\n<text>\n<3 ticks>\n
+ // 3. Unmatched tick(s), not code, but part of some text.
+ // We don't quite handle #2 correctly yet. PR welcome!
+ braceStartsType = false;
+ let tickCount = 1;
+ let lookahead = pos;
+ while (lookahead + 1 < end && file[lookahead + 1] === "`") {
+ tickCount++;
+ lookahead++;
+ }
+ let lookaheadStart = pos;
+ const codeText = [];
+ lookahead++;
+ while (lookahead < end) {
+ if (lookaheadExactlyNTicks(lookahead, tickCount)) {
+ lookahead += tickCount;
+ codeText.push(file.substring(lookaheadStart, lookahead));
+ yield {
+ kind: lexer_1.TokenSyntaxKind.Code,
+ text: codeText.join(""),
+ pos,
+ };
+ pos = lookahead;
+ break;
+ }
+ else if (file[lookahead] === "`") {
+ while (lookahead < end && file[lookahead] === "`") {
+ lookahead++;
+ }
+ }
+ else if (file[lookahead] === "\\" &&
+ lookahead + 1 < end &&
+ file[lookahead + 1] !== "\n") {
+ lookahead += 2;
+ }
+ else if (file[lookahead] === "\n") {
+ lookahead++;
+ codeText.push(file.substring(lookaheadStart, lookahead));
+ lookaheadStart = lookahead;
+ }
+ else {
+ lookahead++;
+ }
+ }
+ if (lookahead >= end && pos !== lookahead) {
+ if (tickCount === 3 &&
+ file.substring(pos, end).includes("\n")) {
+ codeText.push(file.substring(lookaheadStart, end));
+ yield {
+ kind: lexer_1.TokenSyntaxKind.Code,
+ text: codeText.join(""),
+ pos,
+ };
+ pos = lookahead;
+ }
+ else {
+ yield makeToken(lexer_1.TokenSyntaxKind.Text, tickCount);
+ }
+ }
+ break;
+ }
+ case "@": {
+ let lookahead = pos + 1;
+ while (lookahead < end && /[a-z]/i.test(file[lookahead])) {
+ lookahead++;
+ }
+ if (lookahead !== pos + 1) {
+ while (lookahead < end &&
+ /[a-z0-9]/i.test(file[lookahead])) {
+ lookahead++;
+ }
+ }
+ if (lookahead !== pos + 1 &&
+ (lookahead === end || /[\s}]/.test(file[lookahead]))) {
+ braceStartsType = true;
+ yield makeToken(lexer_1.TokenSyntaxKind.Tag, lookahead - pos);
+ break;
+ }
+ }
+ // fall through if we didn't find something that looks like a tag
+ default: {
+ const textParts = [];
+ let lookaheadStart = pos;
+ let lookahead = pos;
+ while (lookahead < end) {
+ if ("{}\n`".includes(file[lookahead]))
+ break;
+ if (lookahead !== pos &&
+ file[lookahead] === "@" &&
+ /\s/.test(file[lookahead - 1])) {
+ // Probably the start of a modifier tag
+ break;
+ }
+ if (file[lookahead] === "\\" &&
+ lookahead + 1 < end &&
+ "{}@`".includes(file[lookahead + 1])) {
+ textParts.push(file.substring(lookaheadStart, lookahead), file[lookahead + 1]);
+ lookahead++;
+ lookaheadStart = lookahead + 1;
+ }
+ lookahead++;
+ }
+ textParts.push(file.substring(lookaheadStart, lookahead));
+ if (textParts.some((part) => /\S/.test(part))) {
+ braceStartsType = false;
+ }
+ // This piece of text had line continuations or escaped text
+ yield {
+ kind: lexer_1.TokenSyntaxKind.Text,
+ text: textParts.join(""),
+ pos,
+ };
+ pos = lookahead;
+ break;
+ }
+ }
+ }
+ function makeToken(kind, size) {
+ const start = pos;
+ pos += size;
+ return {
+ kind,
+ text: file.substring(start, pos),
+ pos: start,
+ };
+ }
+ function lookaheadExactlyNTicks(pos, n) {
+ if (pos + n > end) {
+ return false;
+ }
+ return file.startsWith("`".repeat(n), pos) && file[pos + n] !== "`";
+ }
+ function findEndOfType(pos) {
+ let openBraces = 0;
+ while (pos < end) {
+ if (file[pos] === "{") {
+ openBraces++;
+ }
+ else if (file[pos] === "}") {
+ if (--openBraces === 0) {
+ break;
+ }
+ }
+ else if ("`'\"".includes(file[pos])) {
+ pos = findEndOfString(pos);
+ }
+ pos++;
+ }
+ if (pos < end && file[pos] === "}") {
+ pos++;
+ }
+ return pos;
+ }
+ function findEndOfString(pos) {
+ const endOfString = file[pos];
+ pos++;
+ while (pos < end) {
+ if (file[pos] === endOfString) {
+ break;
+ }
+ else if (file[pos] === "\\") {
+ pos++; // Skip escaped character
+ }
+ else if (endOfString === "`" &&
+ file[pos] === "$" &&
+ file[pos + 1] === "{") {
+ // Template literal with data inside a ${}
+ while (pos < end && file[pos] !== "}") {
+ if ("`'\"".includes(file[pos])) {
+ pos = findEndOfString(pos) + 1;
+ }
+ else {
+ pos++;
+ }
+ }
+ }
+ pos++;
+ }
+ return pos;
+ }
+ function nextNonWs(pos) {
+ while (pos < end && /\s/.test(file[pos])) {
+ pos++;
+ }
+ return file[pos];
+ }
+}
diff --git a/node_modules/typedoc/dist/lib/converter/components.d.ts b/node_modules/typedoc/dist/lib/converter/components.d.ts
new file mode 100644
index 0000000..623f179
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/components.d.ts
@@ -0,0 +1,5 @@
+import { Component, AbstractComponent } from "../utils/component";
+import type { Converter } from "./converter";
+export { Component };
+export declare abstract class ConverterComponent extends AbstractComponent<Converter> {
+}
diff --git a/node_modules/typedoc/dist/lib/converter/components.js b/node_modules/typedoc/dist/lib/converter/components.js
new file mode 100644
index 0000000..48726a7
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/components.js
@@ -0,0 +1,8 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ConverterComponent = exports.Component = void 0;
+const component_1 = require("../utils/component");
+Object.defineProperty(exports, "Component", { enumerable: true, get: function () { return component_1.Component; } });
+class ConverterComponent extends component_1.AbstractComponent {
+}
+exports.ConverterComponent = ConverterComponent;
diff --git a/node_modules/typedoc/dist/lib/converter/context.d.ts b/node_modules/typedoc/dist/lib/converter/context.d.ts
new file mode 100644
index 0000000..b029cbc
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/context.d.ts
@@ -0,0 +1,89 @@
+import ts from "typescript";
+import { Reflection, ProjectReflection, DeclarationReflection, ReflectionKind } from "../models/index";
+import type { Converter } from "./converter";
+/**
+ * The context describes the current state the converter is in.
+ */
+export declare class Context {
+ /**
+ * The converter instance that has created the context.
+ */
+ readonly converter: Converter;
+ /**
+ * The TypeChecker instance returned by the TypeScript compiler.
+ */
+ get checker(): ts.TypeChecker;
+ /**
+ * The program currently being converted.
+ * Accessing this property will throw if a source file is not currently being converted.
+ */
+ get program(): ts.Program;
+ private _program?;
+ /**
+ * All programs being converted.
+ */
+ readonly programs: readonly ts.Program[];
+ /**
+ * The project that is currently processed.
+ */
+ readonly project: ProjectReflection;
+ /**
+ * The scope or parent reflection that is currently processed.
+ */
+ readonly scope: Reflection;
+ convertingTypeNode: boolean;
+ convertingClassOrInterface: boolean;
+ shouldBeStatic: boolean;
+ /**
+ * Create a new Context instance.
+ *
+ * @param converter The converter instance that has created the context.
+ * @internal
+ */
+ constructor(converter: Converter, programs: readonly ts.Program[], project: ProjectReflection, scope?: Context["scope"]);
+ /** @internal */
+ get logger(): import("../utils").Logger;
+ /**
+ * Return the type declaration of the given node.
+ *
+ * @param node The TypeScript node whose type should be resolved.
+ * @returns The type declaration of the given node.
+ */
+ getTypeAtLocation(node: ts.Node): ts.Type | undefined;
+ getSymbolAtLocation(node: ts.Node): ts.Symbol | undefined;
+ expectSymbolAtLocation(node: ts.Node): ts.Symbol;
+ resolveAliasedSymbol(symbol: ts.Symbol): ts.Symbol;
+ createDeclarationReflection(kind: ReflectionKind, symbol: ts.Symbol | undefined, exportSymbol: ts.Symbol | undefined, nameOverride?: string): DeclarationReflection;
+ postReflectionCreation(reflection: Reflection, symbol: ts.Symbol | undefined, exportSymbol: ts.Symbol | undefined): void;
+ finalizeDeclarationReflection(reflection: DeclarationReflection): void;
+ addChild(reflection: DeclarationReflection): void;
+ shouldIgnore(symbol: ts.Symbol): boolean;
+ /**
+ * Register a newly generated reflection. All created reflections should be
+ * passed to this method to ensure that the project helper functions work correctly.
+ *
+ * @param reflection The reflection that should be registered.
+ * @param symbol The symbol the given reflection was resolved from.
+ */
+ registerReflection(reflection: Reflection, symbol: ts.Symbol | undefined): void;
+ /**
+ * Trigger a node reflection event.
+ *
+ * All events are dispatched on the current converter instance.
+ *
+ * @param name The name of the event that should be triggered.
+ * @param reflection The triggering reflection.
+ * @param node The triggering TypeScript node if available.
+ */
+ trigger(name: string, reflection: Reflection, node?: ts.Node): void;
+ /** @internal */
+ setActiveProgram(program: ts.Program | undefined): void;
+ getComment(symbol: ts.Symbol, kind: ReflectionKind): import("../models/index").Comment | undefined;
+ getFileComment(node: ts.SourceFile): import("../models/index").Comment | undefined;
+ getJsDocComment(declaration: ts.JSDocPropertyLikeTag | ts.JSDocCallbackTag | ts.JSDocTypedefTag | ts.JSDocTemplateTag | ts.JSDocEnumTag): import("../models/index").Comment | undefined;
+ getSignatureComment(declaration: ts.SignatureDeclaration | ts.JSDocSignature): import("../models/index").Comment | undefined;
+ /**
+ * @param callback The callback function that should be executed with the changed context.
+ */
+ withScope(scope: Reflection): Context;
+}
diff --git a/node_modules/typedoc/dist/lib/converter/context.js b/node_modules/typedoc/dist/lib/converter/context.js
new file mode 100644
index 0000000..c09eeab
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/context.js
@@ -0,0 +1,198 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Context = void 0;
+const assert_1 = require("assert");
+const typescript_1 = __importDefault(require("typescript"));
+const index_1 = require("../models/index");
+const nodes_1 = require("./utils/nodes");
+const converter_events_1 = require("./converter-events");
+const symbols_1 = require("./utils/symbols");
+const comments_1 = require("./comments");
+const tsutils_1 = require("../utils/tsutils");
+/**
+ * The context describes the current state the converter is in.
+ */
+class Context {
+ /**
+ * The TypeChecker instance returned by the TypeScript compiler.
+ */
+ get checker() {
+ return this.program.getTypeChecker();
+ }
+ /**
+ * The program currently being converted.
+ * Accessing this property will throw if a source file is not currently being converted.
+ */
+ get program() {
+ (0, assert_1.ok)(this._program, "Tried to access Context.program when not converting a source file");
+ return this._program;
+ }
+ /**
+ * Create a new Context instance.
+ *
+ * @param converter The converter instance that has created the context.
+ * @internal
+ */
+ constructor(converter, programs, project, scope = project) {
+ this.convertingTypeNode = false; // Inherited by withScope
+ this.convertingClassOrInterface = false; // Not inherited
+ this.shouldBeStatic = false; // Not inherited
+ this.converter = converter;
+ this.programs = programs;
+ this.project = project;
+ this.scope = scope;
+ }
+ /** @internal */
+ get logger() {
+ return this.converter.application.logger;
+ }
+ /**
+ * Return the type declaration of the given node.
+ *
+ * @param node The TypeScript node whose type should be resolved.
+ * @returns The type declaration of the given node.
+ */
+ getTypeAtLocation(node) {
+ let nodeType;
+ try {
+ nodeType = this.checker.getTypeAtLocation(node);
+ }
+ catch {
+ // ignore
+ }
+ if (!nodeType) {
+ if (node.symbol) {
+ nodeType = this.checker.getDeclaredTypeOfSymbol(node.symbol);
+ }
+ else if (node.parent?.symbol) {
+ nodeType = this.checker.getDeclaredTypeOfSymbol(node.parent.symbol);
+ }
+ else if (node.parent?.parent?.symbol) {
+ nodeType = this.checker.getDeclaredTypeOfSymbol(node.parent.parent.symbol);
+ }
+ }
+ return nodeType;
+ }
+ getSymbolAtLocation(node) {
+ let symbol = this.checker.getSymbolAtLocation(node);
+ if (!symbol && (0, nodes_1.isNamedNode)(node)) {
+ symbol = this.checker.getSymbolAtLocation(node.name);
+ }
+ return symbol;
+ }
+ expectSymbolAtLocation(node) {
+ const symbol = this.getSymbolAtLocation(node);
+ if (!symbol) {
+ const { line } = typescript_1.default.getLineAndCharacterOfPosition(node.getSourceFile(), node.pos);
+ throw new Error(`Expected a symbol for node with kind ${typescript_1.default.SyntaxKind[node.kind]} at ${node.getSourceFile().fileName}:${line + 1}`);
+ }
+ return symbol;
+ }
+ resolveAliasedSymbol(symbol) {
+ return (0, symbols_1.resolveAliasedSymbol)(symbol, this.checker);
+ }
+ createDeclarationReflection(kind, symbol, exportSymbol,
+ // We need this because modules don't always have symbols.
+ nameOverride) {
+ const name = (0, tsutils_1.getHumanName)(nameOverride ?? exportSymbol?.name ?? symbol?.name ?? "unknown");
+ if (this.convertingClassOrInterface) {
+ if (kind === index_1.ReflectionKind.Function) {
+ kind = index_1.ReflectionKind.Method;
+ }
+ if (kind === index_1.ReflectionKind.Variable) {
+ kind = index_1.ReflectionKind.Property;
+ }
+ }
+ const reflection = new index_1.DeclarationReflection(name, kind, this.scope);
+ this.postReflectionCreation(reflection, symbol, exportSymbol);
+ return reflection;
+ }
+ postReflectionCreation(reflection, symbol, exportSymbol) {
+ if (exportSymbol &&
+ reflection.kind &
+ (index_1.ReflectionKind.SomeModule | index_1.ReflectionKind.Reference)) {
+ reflection.comment = this.getComment(exportSymbol, reflection.kind);
+ }
+ if (symbol && !reflection.comment) {
+ reflection.comment = this.getComment(symbol, reflection.kind);
+ }
+ if (this.shouldBeStatic) {
+ reflection.setFlag(index_1.ReflectionFlag.Static);
+ }
+ if (reflection instanceof index_1.DeclarationReflection) {
+ reflection.escapedName = symbol?.escapedName;
+ this.addChild(reflection);
+ }
+ if (symbol && this.converter.isExternal(symbol)) {
+ reflection.setFlag(index_1.ReflectionFlag.External);
+ }
+ if (exportSymbol) {
+ this.registerReflection(reflection, exportSymbol);
+ }
+ this.registerReflection(reflection, symbol);
+ }
+ finalizeDeclarationReflection(reflection) {
+ this.converter.trigger(converter_events_1.ConverterEvents.CREATE_DECLARATION, this, reflection);
+ }
+ addChild(reflection) {
+ var _a;
+ if (this.scope instanceof index_1.ContainerReflection) {
+ (_a = this.scope).children ?? (_a.children = []);
+ this.scope.children.push(reflection);
+ }
+ }
+ shouldIgnore(symbol) {
+ return this.converter.shouldIgnore(symbol);
+ }
+ /**
+ * Register a newly generated reflection. All created reflections should be
+ * passed to this method to ensure that the project helper functions work correctly.
+ *
+ * @param reflection The reflection that should be registered.
+ * @param symbol The symbol the given reflection was resolved from.
+ */
+ registerReflection(reflection, symbol) {
+ this.project.registerReflection(reflection, symbol);
+ }
+ /**
+ * Trigger a node reflection event.
+ *
+ * All events are dispatched on the current converter instance.
+ *
+ * @param name The name of the event that should be triggered.
+ * @param reflection The triggering reflection.
+ * @param node The triggering TypeScript node if available.
+ */
+ trigger(name, reflection, node) {
+ this.converter.trigger(name, this, reflection, node);
+ }
+ /** @internal */
+ setActiveProgram(program) {
+ this._program = program;
+ }
+ getComment(symbol, kind) {
+ return (0, comments_1.getComment)(symbol, kind, this.converter.config, this.logger, this.converter.commentStyle, this.converter.useTsLinkResolution ? this.checker : undefined);
+ }
+ getFileComment(node) {
+ return (0, comments_1.getFileComment)(node, this.converter.config, this.logger, this.converter.commentStyle, this.converter.useTsLinkResolution ? this.checker : undefined);
+ }
+ getJsDocComment(declaration) {
+ return (0, comments_1.getJsDocComment)(declaration, this.converter.config, this.logger, this.converter.useTsLinkResolution ? this.checker : undefined);
+ }
+ getSignatureComment(declaration) {
+ return (0, comments_1.getSignatureComment)(declaration, this.converter.config, this.logger, this.converter.commentStyle, this.converter.useTsLinkResolution ? this.checker : undefined);
+ }
+ /**
+ * @param callback The callback function that should be executed with the changed context.
+ */
+ withScope(scope) {
+ const context = new Context(this.converter, this.programs, this.project, scope);
+ context.convertingTypeNode = this.convertingTypeNode;
+ context.setActiveProgram(this._program);
+ return context;
+ }
+}
+exports.Context = Context;
diff --git a/node_modules/typedoc/dist/lib/converter/convert-expression.d.ts b/node_modules/typedoc/dist/lib/converter/convert-expression.d.ts
new file mode 100644
index 0000000..9242850
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/convert-expression.d.ts
@@ -0,0 +1,9 @@
+import ts from "typescript";
+/**
+ * Return the default value of the given node.
+ *
+ * @param node The TypeScript node whose default value should be extracted.
+ * @returns The default value as a string.
+ */
+export declare function convertDefaultValue(node: ts.Declaration | undefined): string | undefined;
+export declare function convertExpression(expression: ts.Expression): string;
diff --git a/node_modules/typedoc/dist/lib/converter/convert-expression.js b/node_modules/typedoc/dist/lib/converter/convert-expression.js
new file mode 100644
index 0000000..f8fec61
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/convert-expression.js
@@ -0,0 +1,60 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.convertExpression = exports.convertDefaultValue = void 0;
+const typescript_1 = __importDefault(require("typescript"));
+/**
+ * Return the default value of the given node.
+ *
+ * @param node The TypeScript node whose default value should be extracted.
+ * @returns The default value as a string.
+ */
+function convertDefaultValue(node) {
+ const anyNode = node;
+ if (anyNode?.initializer) {
+ return convertExpression(anyNode.initializer);
+ }
+ else {
+ return undefined;
+ }
+}
+exports.convertDefaultValue = convertDefaultValue;
+function convertExpression(expression) {
+ switch (expression.kind) {
+ case typescript_1.default.SyntaxKind.StringLiteral:
+ case typescript_1.default.SyntaxKind.TrueKeyword:
+ case typescript_1.default.SyntaxKind.FalseKeyword:
+ case typescript_1.default.SyntaxKind.NullKeyword:
+ case typescript_1.default.SyntaxKind.NumericLiteral:
+ case typescript_1.default.SyntaxKind.PrefixUnaryExpression:
+ case typescript_1.default.SyntaxKind.Identifier:
+ return expression.getText();
+ }
+ if (typescript_1.default.isArrayLiteralExpression(expression) &&
+ expression.elements.length === 0) {
+ return "[]";
+ }
+ if (typescript_1.default.isObjectLiteralExpression(expression) &&
+ expression.properties.length === 0) {
+ return "{}";
+ }
+ // a.b.c.d
+ if (typescript_1.default.isPropertyAccessExpression(expression)) {
+ const parts = [expression.name.getText()];
+ let iter = expression.expression;
+ while (typescript_1.default.isPropertyAccessExpression(iter)) {
+ parts.unshift(iter.name.getText());
+ iter = iter.expression;
+ }
+ if (typescript_1.default.isIdentifier(iter)) {
+ parts.unshift(iter.text);
+ return parts.join(".");
+ }
+ }
+ // More complex expressions are generally not useful in the documentation.
+ // Show that there was a value, but not specifics.
+ return "...";
+}
+exports.convertExpression = convertExpression;
diff --git a/node_modules/typedoc/dist/lib/converter/converter-events.d.ts b/node_modules/typedoc/dist/lib/converter/converter-events.d.ts
new file mode 100644
index 0000000..d915a59
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/converter-events.d.ts
@@ -0,0 +1,11 @@
+export declare const ConverterEvents: {
+ readonly BEGIN: "begin";
+ readonly END: "end";
+ readonly CREATE_DECLARATION: "createDeclaration";
+ readonly CREATE_SIGNATURE: "createSignature";
+ readonly CREATE_PARAMETER: "createParameter";
+ readonly CREATE_TYPE_PARAMETER: "createTypeParameter";
+ readonly RESOLVE_BEGIN: "resolveBegin";
+ readonly RESOLVE: "resolveReflection";
+ readonly RESOLVE_END: "resolveEnd";
+};
diff --git a/node_modules/typedoc/dist/lib/converter/converter-events.js b/node_modules/typedoc/dist/lib/converter/converter-events.js
new file mode 100644
index 0000000..dd09157
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/converter-events.js
@@ -0,0 +1,14 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ConverterEvents = void 0;
+exports.ConverterEvents = {
+ BEGIN: "begin",
+ END: "end",
+ CREATE_DECLARATION: "createDeclaration",
+ CREATE_SIGNATURE: "createSignature",
+ CREATE_PARAMETER: "createParameter",
+ CREATE_TYPE_PARAMETER: "createTypeParameter",
+ RESOLVE_BEGIN: "resolveBegin",
+ RESOLVE: "resolveReflection",
+ RESOLVE_END: "resolveEnd",
+};
diff --git a/node_modules/typedoc/dist/lib/converter/converter.d.ts b/node_modules/typedoc/dist/lib/converter/converter.d.ts
new file mode 100644
index 0000000..92fbc9c
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/converter.d.ts
@@ -0,0 +1,172 @@
+import ts from "typescript";
+import type { Application } from "../application";
+import { Comment, CommentDisplayPart, ProjectReflection, Reflection, ReflectionSymbolId, SomeType } from "../models/index";
+import { Context } from "./context";
+import { ConverterComponent } from "./components";
+import { ChildableComponent } from "../utils/component";
+import { MinimalSourceFile } from "../utils";
+import type { DocumentationEntryPoint } from "../utils/entry-point";
+import type { CommentParserConfig } from "./comments";
+import type { CommentStyle, ValidationOptions } from "../utils/options/declaration";
+import { ExternalSymbolResolver, ExternalResolveResult } from "./comments/linkResolver";
+import type { DeclarationReference } from "./comments/declarationReference";
+/**
+ * Compiles source files using TypeScript and converts compiler symbols to reflections.
+ */
+export declare class Converter extends ChildableComponent<Application, ConverterComponent> {
+ /** @internal */
+ externalPattern: string[];
+ private externalPatternCache?;
+ private excludeCache?;
+ /** @internal */
+ excludeExternals: boolean;
+ /** @internal */
+ excludeNotDocumented: boolean;
+ /** @internal */
+ excludePrivate: boolean;
+ /** @internal */
+ excludeProtected: boolean;
+ /** @internal */
+ excludeReferences: boolean;
+ /** @internal */
+ commentStyle: CommentStyle;
+ /** @internal */
+ validation: ValidationOptions;
+ /** @internal */
+ externalSymbolLinkMappings: Record<string, Record<string, string>>;
+ /** @internal */
+ useTsLinkResolution: boolean;
+ private _config?;
+ private _externalSymbolResolvers;
+ get config(): CommentParserConfig;
+ /**
+ * General events
+ */
+ /**
+ * Triggered when the converter begins converting a project.
+ * The listener will be given a {@link Context} object.
+ * @event
+ */
+ static readonly EVENT_BEGIN: "begin";
+ /**
+ * Triggered when the converter has finished converting a project.
+ * The listener will be given a {@link Context} object.
+ * @event
+ */
+ static readonly EVENT_END: "end";
+ /**
+ * Factory events
+ */
+ /**
+ * Triggered when the converter has created a declaration reflection.
+ * The listener will be given {@link Context} and a {@link Models.DeclarationReflection}.
+ * @event
+ */
+ static readonly EVENT_CREATE_DECLARATION: "createDeclaration";
+ /**
+ * Triggered when the converter has created a signature reflection.
+ * The listener will be given {@link Context}, {@link Models.SignatureReflection} | {@link Models.ProjectReflection} the declaration,
+ * `ts.SignatureDeclaration | ts.IndexSignatureDeclaration | ts.JSDocSignature | undefined`,
+ * and `ts.Signature | undefined`. The signature will be undefined if the created signature is an index signature.
+ * @event
+ */
+ static readonly EVENT_CREATE_SIGNATURE: "createSignature";
+ /**
+ * Triggered when the converter has created a parameter reflection.
+ * The listener will be given {@link Context}, {@link Models.ParameterReflection} and a `ts.Node?`
+ * @event
+ */
+ static readonly EVENT_CREATE_PARAMETER: "createParameter";
+ /**
+ * Triggered when the converter has created a type parameter reflection.
+ * The listener will be given {@link Context} and a {@link Models.TypeParameterReflection}
+ * @event
+ */
+ static readonly EVENT_CREATE_TYPE_PARAMETER: "createTypeParameter";
+ /**
+ * Resolve events
+ */
+ /**
+ * Triggered when the converter begins resolving a project.
+ * The listener will be given {@link Context}.
+ * @event
+ */
+ static readonly EVENT_RESOLVE_BEGIN: "resolveBegin";
+ /**
+ * Triggered when the converter resolves a reflection.
+ * The listener will be given {@link Context} and a {@link Reflection}.
+ * @event
+ */
+ static readonly EVENT_RESOLVE: "resolveReflection";
+ /**
+ * Triggered when the converter has finished resolving a project.
+ * The listener will be given {@link Context}.
+ * @event
+ */
+ static readonly EVENT_RESOLVE_END: "resolveEnd";
+ constructor(owner: Application);
+ /**
+ * Compile the given source files and create a project reflection for them.
+ */
+ convert(entryPoints: readonly DocumentationEntryPoint[]): ProjectReflection;
+ /** @internal */
+ convertSymbol(context: Context, symbol: ts.Symbol, exportSymbol?: ts.Symbol): void;
+ /**
+ * Convert the given TypeScript type into its TypeDoc type reflection.
+ *
+ * @param context The context object describing the current state the converter is in.
+ * @param referenceTarget The target to be used to attempt to resolve reference types
+ * @returns The TypeDoc type reflection representing the given node and type.
+ * @internal
+ */
+ convertType(context: Context, node: ts.TypeNode | ts.Type | undefined): SomeType;
+ /**
+ * Parse the given file into a comment. Intended to be used with markdown files.
+ */
+ parseRawComment(file: MinimalSourceFile): Comment;
+ /**
+ * Adds a new resolver that the theme can use to try to figure out how to link to a symbol declared
+ * by a third-party library which is not included in the documentation.
+ *
+ * The resolver function will be passed a declaration reference which it can attempt to resolve. If
+ * resolution fails, the function should return undefined.
+ *
+ * Note: This will be used for both references to types declared in node_modules (in which case the
+ * reference passed will have the `moduleSource` set and the `symbolReference` will navigate via `.`)
+ * and user defined \{\@link\} tags which cannot be resolved. If the link being resolved is inferred
+ * from a type, then no `part` will be passed to the resolver function.
+ * @since 0.22.14
+ */
+ addUnknownSymbolResolver(resolver: ExternalSymbolResolver): void;
+ /** @internal */
+ resolveExternalLink(ref: DeclarationReference, refl: Reflection, part: CommentDisplayPart | undefined, symbolId: ReflectionSymbolId | undefined): ExternalResolveResult | string | undefined;
+ resolveLinks(comment: Comment, owner: Reflection): void;
+ resolveLinks(parts: readonly CommentDisplayPart[], owner: Reflection): CommentDisplayPart[];
+ /**
+ * Compile the files within the given context and convert the compiler symbols to reflections.
+ *
+ * @param context The context object describing the current state the converter is in.
+ * @returns An array containing all errors generated by the TypeScript compiler.
+ */
+ private compile;
+ private convertExports;
+ private convertReExports;
+ /**
+ * Resolve the project within the given context.
+ *
+ * @param context The context object describing the current state the converter is in.
+ * @returns The final project reflection.
+ */
+ private resolve;
+ /**
+ * Used to determine if we should immediately bail when creating a reflection.
+ * Note: This should not be used for excludeNotDocumented because we don't have enough
+ * information at this point since comment discovery hasn't happened.
+ * @internal
+ */
+ shouldIgnore(symbol: ts.Symbol): boolean;
+ private isExcluded;
+ /** @internal */
+ isExternal(symbol: ts.Symbol): boolean;
+ private _buildCommentParserConfig;
+}
diff --git a/node_modules/typedoc/dist/lib/converter/converter.js b/node_modules/typedoc/dist/lib/converter/converter.js
new file mode 100644
index 0000000..befd6eb
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/converter.js
@@ -0,0 +1,430 @@
+"use strict";
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+var Converter_1;
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Converter = void 0;
+const typescript_1 = __importDefault(require("typescript"));
+const index_1 = require("../models/index");
+const context_1 = require("./context");
+const components_1 = require("./components");
+const component_1 = require("../utils/component");
+const utils_1 = require("../utils");
+const types_1 = require("./types");
+const converter_events_1 = require("./converter-events");
+const symbols_1 = require("./symbols");
+const paths_1 = require("../utils/paths");
+const enum_1 = require("../utils/enum");
+const parser_1 = require("./comments/parser");
+const rawLexer_1 = require("./comments/rawLexer");
+const linkResolver_1 = require("./comments/linkResolver");
+/**
+ * Compiles source files using TypeScript and converts compiler symbols to reflections.
+ */
+let Converter = exports.Converter = Converter_1 = class Converter extends component_1.ChildableComponent {
+ get config() {
+ return this._config || this._buildCommentParserConfig();
+ }
+ constructor(owner) {
+ super(owner);
+ this._externalSymbolResolvers = [];
+ this.addUnknownSymbolResolver((ref) => {
+ // Require global links, matching local ones will likely hide mistakes where the
+ // user meant to link to a local type.
+ if (ref.resolutionStart !== "global" || !ref.symbolReference) {
+ return;
+ }
+ const modLinks = this.externalSymbolLinkMappings[ref.moduleSource ?? "global"];
+ if (typeof modLinks !== "object") {
+ return;
+ }
+ let name = "";
+ if (ref.symbolReference.path) {
+ name += ref.symbolReference.path.map((p) => p.path).join(".");
+ }
+ if (ref.symbolReference.meaning) {
+ name += ":" + ref.symbolReference.meaning;
+ }
+ if (typeof modLinks[name] === "string") {
+ return modLinks[name];
+ }
+ if (typeof modLinks["*"] === "string") {
+ return modLinks["*"];
+ }
+ });
+ }
+ /**
+ * Compile the given source files and create a project reflection for them.
+ */
+ convert(entryPoints) {
+ const programs = entryPoints.map((e) => e.program);
+ this.externalPatternCache = void 0;
+ const project = new index_1.ProjectReflection(this.application.options.getValue("name"));
+ const context = new context_1.Context(this, programs, project);
+ this.trigger(Converter_1.EVENT_BEGIN, context);
+ this.compile(entryPoints, context);
+ this.resolve(context);
+ this.trigger(Converter_1.EVENT_END, context);
+ this._config = undefined;
+ return project;
+ }
+ /** @internal */
+ convertSymbol(context, symbol, exportSymbol) {
+ (0, symbols_1.convertSymbol)(context, symbol, exportSymbol);
+ }
+ /**
+ * Convert the given TypeScript type into its TypeDoc type reflection.
+ *
+ * @param context The context object describing the current state the converter is in.
+ * @param referenceTarget The target to be used to attempt to resolve reference types
+ * @returns The TypeDoc type reflection representing the given node and type.
+ * @internal
+ */
+ convertType(context, node) {
+ return (0, types_1.convertType)(context, node);
+ }
+ /**
+ * Parse the given file into a comment. Intended to be used with markdown files.
+ */
+ parseRawComment(file) {
+ return (0, parser_1.parseComment)((0, rawLexer_1.lexCommentString)(file.text), this.config, file, this.application.logger);
+ }
+ /**
+ * Adds a new resolver that the theme can use to try to figure out how to link to a symbol declared
+ * by a third-party library which is not included in the documentation.
+ *
+ * The resolver function will be passed a declaration reference which it can attempt to resolve. If
+ * resolution fails, the function should return undefined.
+ *
+ * Note: This will be used for both references to types declared in node_modules (in which case the
+ * reference passed will have the `moduleSource` set and the `symbolReference` will navigate via `.`)
+ * and user defined \{\@link\} tags which cannot be resolved. If the link being resolved is inferred
+ * from a type, then no `part` will be passed to the resolver function.
+ * @since 0.22.14
+ */
+ addUnknownSymbolResolver(resolver) {
+ this._externalSymbolResolvers.push(resolver);
+ }
+ /** @internal */
+ resolveExternalLink(ref, refl, part, symbolId) {
+ for (const resolver of this._externalSymbolResolvers) {
+ const resolved = resolver(ref, refl, part, symbolId);
+ if (resolved)
+ return resolved;
+ }
+ }
+ resolveLinks(comment, owner) {
+ if (comment instanceof index_1.Comment) {
+ (0, linkResolver_1.resolveLinks)(comment, owner, (ref, part, refl, id) => this.resolveExternalLink(ref, part, refl, id));
+ }
+ else {
+ return (0, linkResolver_1.resolvePartLinks)(owner, comment, (ref, part, refl, id) => this.resolveExternalLink(ref, part, refl, id));
+ }
+ }
+ /**
+ * Compile the files within the given context and convert the compiler symbols to reflections.
+ *
+ * @param context The context object describing the current state the converter is in.
+ * @returns An array containing all errors generated by the TypeScript compiler.
+ */
+ compile(entryPoints, context) {
+ const entries = entryPoints.map((e) => {
+ return {
+ entryPoint: e,
+ context: undefined,
+ };
+ });
+ entries.forEach((e) => {
+ context.setActiveProgram(e.entryPoint.program);
+ e.context = this.convertExports(context, e.entryPoint, entries.length === 1);
+ });
+ for (const { entryPoint, context } of entries) {
+ // active program is already set on context
+ // if we don't have a context, then this entry point is being ignored
+ if (context) {
+ this.convertReExports(context, entryPoint.sourceFile);
+ }
+ }
+ context.setActiveProgram(undefined);
+ }
+ convertExports(context, entryPoint, singleEntryPoint) {
+ const node = entryPoint.sourceFile;
+ const entryName = entryPoint.displayName;
+ const symbol = getSymbolForModuleLike(context, node);
+ let moduleContext;
+ if (singleEntryPoint) {
+ // Special case for when we're giving a single entry point, we don't need to
+ // create modules for each entry. Register the project as this module.
+ context.project.registerReflection(context.project, symbol);
+ context.project.comment = symbol
+ ? context.getComment(symbol, context.project.kind)
+ : context.getFileComment(node);
+ context.trigger(Converter_1.EVENT_CREATE_DECLARATION, context.project);
+ moduleContext = context;
+ }
+ else {
+ const reflection = context.createDeclarationReflection(index_1.ReflectionKind.Module, symbol, void 0, entryName);
+ if (!reflection.comment && !symbol) {
+ reflection.comment = context.getFileComment(node);
+ }
+ if (entryPoint.readmeFile) {
+ const readme = (0, utils_1.readFile)(entryPoint.readmeFile);
+ const comment = this.parseRawComment(new utils_1.MinimalSourceFile(readme, entryPoint.readmeFile));
+ if (comment.blockTags.length || comment.modifierTags.size) {
+ const ignored = [
+ ...comment.blockTags.map((tag) => tag.tag),
+ ...comment.modifierTags,
+ ];
+ context.logger.warn(`Block and modifier tags will be ignored within the readme:\n\t${ignored.join("\n\t")}`);
+ }
+ reflection.readme = comment.summary;
+ }
+ reflection.packageVersion = entryPoint.version;
+ context.finalizeDeclarationReflection(reflection);
+ moduleContext = context.withScope(reflection);
+ }
+ const allExports = getExports(context, node, symbol);
+ for (const exp of allExports.filter((exp) => isDirectExport(context.resolveAliasedSymbol(exp), node))) {
+ (0, symbols_1.convertSymbol)(moduleContext, exp);
+ }
+ return moduleContext;
+ }
+ convertReExports(moduleContext, node) {
+ for (const exp of getExports(moduleContext, node, moduleContext.project.getSymbolFromReflection(moduleContext.scope)).filter((exp) => !isDirectExport(moduleContext.resolveAliasedSymbol(exp), node))) {
+ (0, symbols_1.convertSymbol)(moduleContext, exp);
+ }
+ }
+ /**
+ * Resolve the project within the given context.
+ *
+ * @param context The context object describing the current state the converter is in.
+ * @returns The final project reflection.
+ */
+ resolve(context) {
+ this.trigger(Converter_1.EVENT_RESOLVE_BEGIN, context);
+ const project = context.project;
+ for (const reflection of Object.values(project.reflections)) {
+ this.trigger(Converter_1.EVENT_RESOLVE, context, reflection);
+ }
+ this.trigger(Converter_1.EVENT_RESOLVE_END, context);
+ }
+ /**
+ * Used to determine if we should immediately bail when creating a reflection.
+ * Note: This should not be used for excludeNotDocumented because we don't have enough
+ * information at this point since comment discovery hasn't happened.
+ * @internal
+ */
+ shouldIgnore(symbol) {
+ if (this.isExcluded(symbol)) {
+ return true;
+ }
+ return this.excludeExternals && this.isExternal(symbol);
+ }
+ isExcluded(symbol) {
+ this.excludeCache ?? (this.excludeCache = (0, paths_1.createMinimatch)(this.application.options.getValue("exclude")));
+ const cache = this.excludeCache;
+ return (symbol.getDeclarations() ?? []).some((node) => (0, paths_1.matchesAny)(cache, node.getSourceFile().fileName));
+ }
+ /** @internal */
+ isExternal(symbol) {
+ this.externalPatternCache ?? (this.externalPatternCache = (0, paths_1.createMinimatch)(this.externalPattern));
+ const cache = this.externalPatternCache;
+ return (symbol.getDeclarations() ?? []).some((node) => (0, paths_1.matchesAny)(cache, node.getSourceFile().fileName));
+ }
+ _buildCommentParserConfig() {
+ this._config = {
+ blockTags: new Set(this.application.options.getValue("blockTags")),
+ inlineTags: new Set(this.application.options.getValue("inlineTags")),
+ modifierTags: new Set(this.application.options.getValue("modifierTags")),
+ jsDocCompatibility: this.application.options.getValue("jsDocCompatibility"),
+ };
+ return this._config;
+ }
+};
+/**
+ * General events
+ */
+/**
+ * Triggered when the converter begins converting a project.
+ * The listener will be given a {@link Context} object.
+ * @event
+ */
+Converter.EVENT_BEGIN = converter_events_1.ConverterEvents.BEGIN;
+/**
+ * Triggered when the converter has finished converting a project.
+ * The listener will be given a {@link Context} object.
+ * @event
+ */
+Converter.EVENT_END = converter_events_1.ConverterEvents.END;
+/**
+ * Factory events
+ */
+/**
+ * Triggered when the converter has created a declaration reflection.
+ * The listener will be given {@link Context} and a {@link Models.DeclarationReflection}.
+ * @event
+ */
+Converter.EVENT_CREATE_DECLARATION = converter_events_1.ConverterEvents.CREATE_DECLARATION;
+/**
+ * Triggered when the converter has created a signature reflection.
+ * The listener will be given {@link Context}, {@link Models.SignatureReflection} | {@link Models.ProjectReflection} the declaration,
+ * `ts.SignatureDeclaration | ts.IndexSignatureDeclaration | ts.JSDocSignature | undefined`,
+ * and `ts.Signature | undefined`. The signature will be undefined if the created signature is an index signature.
+ * @event
+ */
+Converter.EVENT_CREATE_SIGNATURE = converter_events_1.ConverterEvents.CREATE_SIGNATURE;
+/**
+ * Triggered when the converter has created a parameter reflection.
+ * The listener will be given {@link Context}, {@link Models.ParameterReflection} and a `ts.Node?`
+ * @event
+ */
+Converter.EVENT_CREATE_PARAMETER = converter_events_1.ConverterEvents.CREATE_PARAMETER;
+/**
+ * Triggered when the converter has created a type parameter reflection.
+ * The listener will be given {@link Context} and a {@link Models.TypeParameterReflection}
+ * @event
+ */
+Converter.EVENT_CREATE_TYPE_PARAMETER = converter_events_1.ConverterEvents.CREATE_TYPE_PARAMETER;
+/**
+ * Resolve events
+ */
+/**
+ * Triggered when the converter begins resolving a project.
+ * The listener will be given {@link Context}.
+ * @event
+ */
+Converter.EVENT_RESOLVE_BEGIN = converter_events_1.ConverterEvents.RESOLVE_BEGIN;
+/**
+ * Triggered when the converter resolves a reflection.
+ * The listener will be given {@link Context} and a {@link Reflection}.
+ * @event
+ */
+Converter.EVENT_RESOLVE = converter_events_1.ConverterEvents.RESOLVE;
+/**
+ * Triggered when the converter has finished resolving a project.
+ * The listener will be given {@link Context}.
+ * @event
+ */
+Converter.EVENT_RESOLVE_END = converter_events_1.ConverterEvents.RESOLVE_END;
+__decorate([
+ (0, utils_1.BindOption)("externalPattern")
+], Converter.prototype, "externalPattern", void 0);
+__decorate([
+ (0, utils_1.BindOption)("excludeExternals")
+], Converter.prototype, "excludeExternals", void 0);
+__decorate([
+ (0, utils_1.BindOption)("excludeNotDocumented")
+], Converter.prototype, "excludeNotDocumented", void 0);
+__decorate([
+ (0, utils_1.BindOption)("excludePrivate")
+], Converter.prototype, "excludePrivate", void 0);
+__decorate([
+ (0, utils_1.BindOption)("excludeProtected")
+], Converter.prototype, "excludeProtected", void 0);
+__decorate([
+ (0, utils_1.BindOption)("excludeReferences")
+], Converter.prototype, "excludeReferences", void 0);
+__decorate([
+ (0, utils_1.BindOption)("commentStyle")
+], Converter.prototype, "commentStyle", void 0);
+__decorate([
+ (0, utils_1.BindOption)("validation")
+], Converter.prototype, "validation", void 0);
+__decorate([
+ (0, utils_1.BindOption)("externalSymbolLinkMappings")
+], Converter.prototype, "externalSymbolLinkMappings", void 0);
+__decorate([
+ (0, utils_1.BindOption)("useTsLinkResolution")
+], Converter.prototype, "useTsLinkResolution", void 0);
+exports.Converter = Converter = Converter_1 = __decorate([
+ (0, component_1.Component)({
+ name: "converter",
+ internal: true,
+ childClass: components_1.ConverterComponent,
+ })
+], Converter);
+function getSymbolForModuleLike(context, node) {
+ const symbol = context.checker.getSymbolAtLocation(node) ?? node.symbol;
+ if (symbol) {
+ return symbol;
+ }
+ // This is a global file, get all symbols declared in this file...
+ // this isn't the best solution, it would be nice to have all globals given to a special
+ // "globals" file, but this is uncommon enough that I'm skipping it for now.
+ const sourceFile = node.getSourceFile();
+ const globalSymbols = context.checker
+ .getSymbolsInScope(node, typescript_1.default.SymbolFlags.ModuleMember)
+ .filter((s) => s.getDeclarations()?.some((d) => d.getSourceFile() === sourceFile));
+ // Detect declaration files with declare module "foo" as their only export
+ // and lift that up one level as the source file symbol
+ if (globalSymbols.length === 1 &&
+ globalSymbols[0]
+ .getDeclarations()
+ ?.every((declaration) => typescript_1.default.isModuleDeclaration(declaration) &&
+ typescript_1.default.isStringLiteral(declaration.name))) {
+ return globalSymbols[0];
+ }
+}
+function getExports(context, node, symbol) {
+ let result;
+ // The generated docs aren't great, but you really ought not be using
+ // this in the first place... so it's better than nothing.
+ const exportEq = symbol?.exports?.get("export=");
+ if (exportEq) {
+ // JS users might also have exported types here.
+ // We need to filter for types because otherwise static methods can show up as both
+ // members of the export= class and as functions if a class is directly exported.
+ result = [exportEq].concat(context.checker
+ .getExportsOfModule(symbol)
+ .filter((s) => !(0, enum_1.hasAnyFlag)(s.flags, typescript_1.default.SymbolFlags.Prototype | typescript_1.default.SymbolFlags.Value)));
+ }
+ else if (symbol) {
+ result = context.checker
+ .getExportsOfModule(symbol)
+ .filter((s) => !(0, enum_1.hasAllFlags)(s.flags, typescript_1.default.SymbolFlags.Prototype));
+ if (result.length === 0) {
+ const globalDecl = node.statements.find((s) => typescript_1.default.isModuleDeclaration(s) &&
+ s.flags & typescript_1.default.NodeFlags.GlobalAugmentation);
+ if (globalDecl) {
+ const globalSymbol = context.getSymbolAtLocation(globalDecl);
+ if (globalSymbol) {
+ result = context.checker
+ .getExportsOfModule(globalSymbol)
+ .filter((exp) => exp.declarations?.some((d) => d.getSourceFile() === node));
+ }
+ }
+ }
+ }
+ else {
+ // Global file with no inferred top level symbol, get all symbols declared in this file.
+ const sourceFile = node.getSourceFile();
+ result = context.checker
+ .getSymbolsInScope(node, typescript_1.default.SymbolFlags.ModuleMember)
+ .filter((s) => s
+ .getDeclarations()
+ ?.some((d) => d.getSourceFile() === sourceFile));
+ }
+ // Put symbols named "default" last, #1795
+ result.sort((a, b) => {
+ if (a.name === "default") {
+ return 1;
+ }
+ else if (b.name === "default") {
+ return -1;
+ }
+ return 0;
+ });
+ return result;
+}
+function isDirectExport(symbol, file) {
+ return (symbol
+ .getDeclarations()
+ ?.every((decl) => decl.getSourceFile() === file) ?? false);
+}
diff --git a/node_modules/typedoc/dist/lib/converter/factories/index-signature.d.ts b/node_modules/typedoc/dist/lib/converter/factories/index-signature.d.ts
new file mode 100644
index 0000000..ffbc39f
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/factories/index-signature.d.ts
@@ -0,0 +1,3 @@
+import ts from "typescript";
+import type { Context } from "../context";
+export declare function convertIndexSignature(context: Context, symbol: ts.Symbol): void;
diff --git a/node_modules/typedoc/dist/lib/converter/factories/index-signature.js b/node_modules/typedoc/dist/lib/converter/factories/index-signature.js
new file mode 100644
index 0000000..9ec743c
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/factories/index-signature.js
@@ -0,0 +1,33 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.convertIndexSignature = void 0;
+const assert_1 = __importDefault(require("assert"));
+const typescript_1 = __importDefault(require("typescript"));
+const models_1 = require("../../models");
+const converter_events_1 = require("../converter-events");
+function convertIndexSignature(context, symbol) {
+ (0, assert_1.default)(context.scope instanceof models_1.DeclarationReflection);
+ const indexSymbol = symbol.members?.get("__index");
+ if (indexSymbol) {
+ // Right now TypeDoc models don't have a way to distinguish between string
+ // and number index signatures... { [x: string]: 1 | 2; [x: number]: 2 }
+ // will be misrepresented.
+ const indexDeclaration = indexSymbol.getDeclarations()?.[0];
+ (0, assert_1.default)(indexDeclaration && typescript_1.default.isIndexSignatureDeclaration(indexDeclaration));
+ const param = indexDeclaration.parameters[0];
+ (0, assert_1.default)(param && typescript_1.default.isParameter(param));
+ const index = new models_1.SignatureReflection("__index", models_1.ReflectionKind.IndexSignature, context.scope);
+ index.parameters = [
+ new models_1.ParameterReflection(param.name.getText(), models_1.ReflectionKind.Parameter, index),
+ ];
+ index.parameters[0].type = context.converter.convertType(context.withScope(index.parameters[0]), param.type);
+ index.type = context.converter.convertType(context.withScope(index), indexDeclaration.type);
+ context.registerReflection(index, indexSymbol);
+ context.scope.indexSignature = index;
+ context.trigger(converter_events_1.ConverterEvents.CREATE_SIGNATURE, index, indexDeclaration);
+ }
+}
+exports.convertIndexSignature = convertIndexSignature;
diff --git a/node_modules/typedoc/dist/lib/converter/factories/signature.d.ts b/node_modules/typedoc/dist/lib/converter/factories/signature.d.ts
new file mode 100644
index 0000000..10bce0b
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/factories/signature.d.ts
@@ -0,0 +1,7 @@
+import ts from "typescript";
+import { ParameterReflection, ReflectionKind, SignatureReflection, TypeParameterReflection } from "../../models";
+import type { Context } from "../context";
+export declare function createSignature(context: Context, kind: ReflectionKind.CallSignature | ReflectionKind.ConstructorSignature | ReflectionKind.GetSignature | ReflectionKind.SetSignature, signature: ts.Signature, symbol: ts.Symbol | undefined, declaration?: ts.SignatureDeclaration | ts.JSDocSignature): void;
+export declare function convertParameterNodes(context: Context, sigRef: SignatureReflection, parameters: readonly (ts.JSDocParameterTag | ts.ParameterDeclaration)[]): ParameterReflection[];
+export declare function convertTypeParameterNodes(context: Context, parameters: readonly ts.TypeParameterDeclaration[] | undefined): TypeParameterReflection[] | undefined;
+export declare function createTypeParamReflection(param: ts.TypeParameterDeclaration, context: Context): TypeParameterReflection;
diff --git a/node_modules/typedoc/dist/lib/converter/factories/signature.js b/node_modules/typedoc/dist/lib/converter/factories/signature.js
new file mode 100644
index 0000000..0f49e4b
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/factories/signature.js
@@ -0,0 +1,238 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.createTypeParamReflection = exports.convertTypeParameterNodes = exports.convertParameterNodes = exports.createSignature = void 0;
+const typescript_1 = __importDefault(require("typescript"));
+const assert_1 = __importDefault(require("assert"));
+const models_1 = require("../../models");
+const converter_events_1 = require("../converter-events");
+const convert_expression_1 = require("../convert-expression");
+const reflections_1 = require("../utils/reflections");
+const ReflectionSymbolId_1 = require("../../models/reflections/ReflectionSymbolId");
+function createSignature(context, kind, signature, symbol, declaration) {
+ var _a;
+ (0, assert_1.default)(context.scope instanceof models_1.DeclarationReflection);
+ declaration || (declaration = signature.getDeclaration());
+ const sigRef = new models_1.SignatureReflection(kind == models_1.ReflectionKind.ConstructorSignature
+ ? `new ${context.scope.parent.name}`
+ : context.scope.name, kind, context.scope);
+ const sigRefCtx = context.withScope(sigRef);
+ if (symbol && declaration) {
+ context.project.registerSymbolId(sigRef, new ReflectionSymbolId_1.ReflectionSymbolId(symbol, declaration));
+ }
+ // If we are creating signatures for a variable or property and it has a comment associated with it
+ // then we should prefer that comment over any comment on the signature. The comment plugin
+ // will copy the comment down if this signature doesn't have one, so don't set one.
+ let parentReflection = context.scope;
+ if (parentReflection.kindOf(models_1.ReflectionKind.TypeLiteral) &&
+ parentReflection.parent instanceof models_1.DeclarationReflection) {
+ parentReflection = parentReflection.parent;
+ }
+ if (declaration &&
+ (!parentReflection.comment ||
+ !(parentReflection.conversionFlags &
+ models_1.ConversionFlags.VariableOrPropertySource))) {
+ sigRef.comment = context.getSignatureComment(declaration);
+ }
+ sigRef.typeParameters = convertTypeParameters(sigRefCtx, sigRef, signature.typeParameters);
+ const parameterSymbols = signature.thisParameter
+ ? [signature.thisParameter, ...signature.parameters]
+ : signature.parameters;
+ sigRef.parameters = convertParameters(sigRefCtx, sigRef, parameterSymbols, declaration?.parameters);
+ const predicate = context.checker.getTypePredicateOfSignature(signature);
+ if (predicate) {
+ sigRef.type = convertPredicate(predicate, sigRefCtx);
+ }
+ else if (kind == models_1.ReflectionKind.SetSignature) {
+ sigRef.type = new models_1.IntrinsicType("void");
+ }
+ else {
+ sigRef.type = context.converter.convertType(sigRefCtx, (declaration?.kind === typescript_1.default.SyntaxKind.FunctionDeclaration &&
+ declaration.type) ||
+ signature.getReturnType());
+ }
+ context.registerReflection(sigRef, undefined);
+ switch (kind) {
+ case models_1.ReflectionKind.GetSignature:
+ context.scope.getSignature = sigRef;
+ break;
+ case models_1.ReflectionKind.SetSignature:
+ context.scope.setSignature = sigRef;
+ break;
+ case models_1.ReflectionKind.CallSignature:
+ case models_1.ReflectionKind.ConstructorSignature:
+ (_a = context.scope).signatures ?? (_a.signatures = []);
+ context.scope.signatures.push(sigRef);
+ break;
+ }
+ context.converter.trigger(converter_events_1.ConverterEvents.CREATE_SIGNATURE, context, sigRef, declaration, signature);
+}
+exports.createSignature = createSignature;
+function convertParameters(context, sigRef, parameters, parameterNodes) {
+ return parameters.map((param, i) => {
+ const declaration = param.valueDeclaration;
+ (0, assert_1.default)(!declaration ||
+ typescript_1.default.isParameter(declaration) ||
+ typescript_1.default.isJSDocParameterTag(declaration));
+ const paramRefl = new models_1.ParameterReflection(/__\d+/.test(param.name) ? "__namedParameters" : param.name, models_1.ReflectionKind.Parameter, sigRef);
+ if (declaration && typescript_1.default.isJSDocParameterTag(declaration)) {
+ paramRefl.comment = context.getJsDocComment(declaration);
+ }
+ paramRefl.comment || (paramRefl.comment = context.getComment(param, paramRefl.kind));
+ context.registerReflection(paramRefl, param);
+ context.trigger(converter_events_1.ConverterEvents.CREATE_PARAMETER, paramRefl);
+ let type;
+ if (declaration) {
+ type = context.checker.getTypeOfSymbolAtLocation(param, declaration);
+ }
+ else {
+ type = param.type;
+ }
+ paramRefl.type = context.converter.convertType(context.withScope(paramRefl), type);
+ let isOptional = false;
+ if (declaration) {
+ isOptional = typescript_1.default.isParameter(declaration)
+ ? !!declaration.questionToken ||
+ typescript_1.default
+ .getJSDocParameterTags(declaration)
+ .some((tag) => tag.isBracketed)
+ : declaration.isBracketed;
+ }
+ if (isOptional) {
+ paramRefl.type = (0, reflections_1.removeUndefined)(paramRefl.type);
+ }
+ paramRefl.defaultValue = (0, convert_expression_1.convertDefaultValue)(parameterNodes?.[i]);
+ paramRefl.setFlag(models_1.ReflectionFlag.Optional, isOptional);
+ // If we have no declaration, then this is an implicitly defined parameter in JS land
+ // because the method body uses `arguments`... which is always a rest argument
+ let isRest = true;
+ if (declaration) {
+ isRest = typescript_1.default.isParameter(declaration)
+ ? !!declaration.dotDotDotToken
+ : !!declaration.typeExpression &&
+ typescript_1.default.isJSDocVariadicType(declaration.typeExpression.type);
+ }
+ paramRefl.setFlag(models_1.ReflectionFlag.Rest, isRest);
+ return paramRefl;
+ });
+}
+function convertParameterNodes(context, sigRef, parameters) {
+ return parameters.map((param) => {
+ const paramRefl = new models_1.ParameterReflection(/__\d+/.test(param.name.getText())
+ ? "__namedParameters"
+ : param.name.getText(), models_1.ReflectionKind.Parameter, sigRef);
+ if (typescript_1.default.isJSDocParameterTag(param)) {
+ paramRefl.comment = context.getJsDocComment(param);
+ }
+ context.registerReflection(paramRefl, context.getSymbolAtLocation(param));
+ context.trigger(converter_events_1.ConverterEvents.CREATE_PARAMETER, paramRefl);
+ paramRefl.type = context.converter.convertType(context.withScope(paramRefl), typescript_1.default.isParameter(param) ? param.type : param.typeExpression?.type);
+ const isOptional = typescript_1.default.isParameter(param)
+ ? !!param.questionToken
+ : param.isBracketed;
+ if (isOptional) {
+ paramRefl.type = (0, reflections_1.removeUndefined)(paramRefl.type);
+ }
+ paramRefl.defaultValue = (0, convert_expression_1.convertDefaultValue)(param);
+ paramRefl.setFlag(models_1.ReflectionFlag.Optional, isOptional);
+ paramRefl.setFlag(models_1.ReflectionFlag.Rest, typescript_1.default.isParameter(param)
+ ? !!param.dotDotDotToken
+ : !!param.typeExpression &&
+ typescript_1.default.isJSDocVariadicType(param.typeExpression.type));
+ return paramRefl;
+ });
+}
+exports.convertParameterNodes = convertParameterNodes;
+function convertTypeParameters(context, parent, parameters) {
+ return parameters?.map((param) => {
+ const constraintT = param.getConstraint();
+ const defaultT = param.getDefault();
+ // There's no way to determine directly from a ts.TypeParameter what it's variance modifiers are
+ // so unfortunately we have to go back to the node for this...
+ const declaration = param
+ .getSymbol()
+ ?.declarations?.find(typescript_1.default.isTypeParameterDeclaration);
+ const variance = getVariance(declaration?.modifiers);
+ const paramRefl = new models_1.TypeParameterReflection(param.symbol.name, parent, variance);
+ const paramCtx = context.withScope(paramRefl);
+ paramRefl.type = constraintT
+ ? context.converter.convertType(paramCtx, constraintT)
+ : void 0;
+ paramRefl.default = defaultT
+ ? context.converter.convertType(paramCtx, defaultT)
+ : void 0;
+ // No way to determine this from the type parameter itself, need to go back to the declaration
+ if (declaration?.modifiers?.some((m) => m.kind === typescript_1.default.SyntaxKind.ConstKeyword)) {
+ paramRefl.flags.setFlag(models_1.ReflectionFlag.Const, true);
+ }
+ context.registerReflection(paramRefl, param.getSymbol());
+ context.trigger(converter_events_1.ConverterEvents.CREATE_TYPE_PARAMETER, paramRefl);
+ return paramRefl;
+ });
+}
+function convertTypeParameterNodes(context, parameters) {
+ return parameters?.map((param) => createTypeParamReflection(param, context));
+}
+exports.convertTypeParameterNodes = convertTypeParameterNodes;
+function createTypeParamReflection(param, context) {
+ const paramRefl = new models_1.TypeParameterReflection(param.name.text, context.scope, getVariance(param.modifiers));
+ const paramScope = context.withScope(paramRefl);
+ paramRefl.type = param.constraint
+ ? context.converter.convertType(paramScope, param.constraint)
+ : void 0;
+ paramRefl.default = param.default
+ ? context.converter.convertType(paramScope, param.default)
+ : void 0;
+ if (param.modifiers?.some((m) => m.kind === typescript_1.default.SyntaxKind.ConstKeyword)) {
+ paramRefl.flags.setFlag(models_1.ReflectionFlag.Const, true);
+ }
+ context.registerReflection(paramRefl, param.symbol);
+ if (typescript_1.default.isJSDocTemplateTag(param.parent)) {
+ paramRefl.comment = context.getJsDocComment(param.parent);
+ }
+ context.trigger(converter_events_1.ConverterEvents.CREATE_TYPE_PARAMETER, paramRefl, param);
+ return paramRefl;
+}
+exports.createTypeParamReflection = createTypeParamReflection;
+function getVariance(modifiers) {
+ const hasIn = modifiers?.some((mod) => mod.kind === typescript_1.default.SyntaxKind.InKeyword);
+ const hasOut = modifiers?.some((mod) => mod.kind === typescript_1.default.SyntaxKind.OutKeyword);
+ if (hasIn && hasOut) {
+ return models_1.VarianceModifier.inOut;
+ }
+ if (hasIn) {
+ return models_1.VarianceModifier.in;
+ }
+ if (hasOut) {
+ return models_1.VarianceModifier.out;
+ }
+}
+function convertPredicate(predicate, context) {
+ let name;
+ switch (predicate.kind) {
+ case typescript_1.default.TypePredicateKind.This:
+ case typescript_1.default.TypePredicateKind.AssertsThis:
+ name = "this";
+ break;
+ case typescript_1.default.TypePredicateKind.Identifier:
+ case typescript_1.default.TypePredicateKind.AssertsIdentifier:
+ name = predicate.parameterName;
+ break;
+ }
+ let asserts;
+ switch (predicate.kind) {
+ case typescript_1.default.TypePredicateKind.This:
+ case typescript_1.default.TypePredicateKind.Identifier:
+ asserts = false;
+ break;
+ case typescript_1.default.TypePredicateKind.AssertsThis:
+ case typescript_1.default.TypePredicateKind.AssertsIdentifier:
+ asserts = true;
+ break;
+ }
+ return new models_1.PredicateType(name, asserts, predicate.type
+ ? context.converter.convertType(context, predicate.type)
+ : void 0);
+}
diff --git a/node_modules/typedoc/dist/lib/converter/index.d.ts b/node_modules/typedoc/dist/lib/converter/index.d.ts
new file mode 100644
index 0000000..d1a2d9f
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/index.d.ts
@@ -0,0 +1,7 @@
+export { Context } from "./context";
+export { Converter } from "./converter";
+export type { CommentParserConfig } from "./comments/index";
+export { convertDefaultValue, convertExpression } from "./convert-expression";
+export type { DeclarationReference, SymbolReference, ComponentPath, Meaning, MeaningKeyword, } from "./comments/declarationReference";
+export type { ExternalSymbolResolver, ExternalResolveResult, } from "./comments/linkResolver";
+import "./plugins/index";
diff --git a/node_modules/typedoc/dist/lib/converter/index.js b/node_modules/typedoc/dist/lib/converter/index.js
new file mode 100644
index 0000000..4ffd84b
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/index.js
@@ -0,0 +1,11 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.convertExpression = exports.convertDefaultValue = exports.Converter = exports.Context = void 0;
+var context_1 = require("./context");
+Object.defineProperty(exports, "Context", { enumerable: true, get: function () { return context_1.Context; } });
+var converter_1 = require("./converter");
+Object.defineProperty(exports, "Converter", { enumerable: true, get: function () { return converter_1.Converter; } });
+var convert_expression_1 = require("./convert-expression");
+Object.defineProperty(exports, "convertDefaultValue", { enumerable: true, get: function () { return convert_expression_1.convertDefaultValue; } });
+Object.defineProperty(exports, "convertExpression", { enumerable: true, get: function () { return convert_expression_1.convertExpression; } });
+require("./plugins/index");
diff --git a/node_modules/typedoc/dist/lib/converter/jsdoc.d.ts b/node_modules/typedoc/dist/lib/converter/jsdoc.d.ts
new file mode 100644
index 0000000..247e2e4
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/jsdoc.d.ts
@@ -0,0 +1,4 @@
+import ts from "typescript";
+import type { Context } from "./context";
+export declare function convertJsDocAlias(context: Context, symbol: ts.Symbol, declaration: ts.JSDocTypedefTag | ts.JSDocEnumTag, exportSymbol?: ts.Symbol): void;
+export declare function convertJsDocCallback(context: Context, symbol: ts.Symbol, declaration: ts.JSDocCallbackTag, exportSymbol?: ts.Symbol): void;
diff --git a/node_modules/typedoc/dist/lib/converter/jsdoc.js b/node_modules/typedoc/dist/lib/converter/jsdoc.js
new file mode 100644
index 0000000..4aa1669
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/jsdoc.js
@@ -0,0 +1,116 @@
+"use strict";
+// Converter functions for JSDoc defined types
+// @typedef
+// @callback
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.convertJsDocCallback = exports.convertJsDocAlias = void 0;
+const assert_1 = require("assert");
+const typescript_1 = __importDefault(require("typescript"));
+const models_1 = require("../models");
+const ReflectionSymbolId_1 = require("../models/reflections/ReflectionSymbolId");
+const converter_events_1 = require("./converter-events");
+const signature_1 = require("./factories/signature");
+function convertJsDocAlias(context, symbol, declaration, exportSymbol) {
+ if (declaration.typeExpression &&
+ typescript_1.default.isJSDocTypeLiteral(declaration.typeExpression)) {
+ convertJsDocInterface(context, declaration, symbol, exportSymbol);
+ return;
+ }
+ // If the typedef tag is just referring to another type-space symbol, with no type parameters
+ // or appropriate forwarding type parameters, then we treat it as a re-export instead of creating
+ // a type alias with an import type.
+ const aliasedSymbol = getTypedefReExportTarget(context, declaration);
+ if (aliasedSymbol) {
+ context.converter.convertSymbol(context, aliasedSymbol, exportSymbol ?? symbol);
+ return;
+ }
+ const reflection = context.createDeclarationReflection(models_1.ReflectionKind.TypeAlias, symbol, exportSymbol);
+ reflection.comment = context.getJsDocComment(declaration);
+ reflection.type = context.converter.convertType(context.withScope(reflection), declaration.typeExpression?.type);
+ convertTemplateParameters(context.withScope(reflection), declaration.parent);
+ context.finalizeDeclarationReflection(reflection);
+}
+exports.convertJsDocAlias = convertJsDocAlias;
+function convertJsDocCallback(context, symbol, declaration, exportSymbol) {
+ const alias = context.createDeclarationReflection(models_1.ReflectionKind.TypeAlias, symbol, exportSymbol);
+ alias.comment = context.getJsDocComment(declaration);
+ context.finalizeDeclarationReflection(alias);
+ const ac = context.withScope(alias);
+ alias.type = convertJsDocSignature(ac, declaration.typeExpression);
+ convertTemplateParameters(ac, declaration.parent);
+}
+exports.convertJsDocCallback = convertJsDocCallback;
+function convertJsDocInterface(context, declaration, symbol, exportSymbol) {
+ const reflection = context.createDeclarationReflection(models_1.ReflectionKind.Interface, symbol, exportSymbol);
+ reflection.comment = context.getJsDocComment(declaration);
+ context.finalizeDeclarationReflection(reflection);
+ const rc = context.withScope(reflection);
+ const type = context.checker.getDeclaredTypeOfSymbol(symbol);
+ for (const s of type.getProperties()) {
+ context.converter.convertSymbol(rc, s);
+ }
+ convertTemplateParameters(rc, declaration.parent);
+}
+function convertJsDocSignature(context, node) {
+ const symbol = context.getSymbolAtLocation(node) ?? node.symbol;
+ const type = context.getTypeAtLocation(node);
+ if (!symbol || !type) {
+ return new models_1.IntrinsicType("Function");
+ }
+ const reflection = new models_1.DeclarationReflection("__type", models_1.ReflectionKind.TypeLiteral, context.scope);
+ context.registerReflection(reflection, symbol);
+ context.trigger(converter_events_1.ConverterEvents.CREATE_DECLARATION, reflection);
+ const signature = new models_1.SignatureReflection("__type", models_1.ReflectionKind.CallSignature, reflection);
+ context.project.registerSymbolId(signature, new ReflectionSymbolId_1.ReflectionSymbolId(symbol, node));
+ context.registerReflection(signature, void 0);
+ const signatureCtx = context.withScope(signature);
+ reflection.signatures = [signature];
+ signature.type = context.converter.convertType(signatureCtx, node.type?.typeExpression?.type);
+ signature.parameters = (0, signature_1.convertParameterNodes)(signatureCtx, signature, node.parameters);
+ signature.typeParameters = convertTemplateParameterNodes(context.withScope(reflection), node.typeParameters);
+ return new models_1.ReflectionType(reflection);
+}
+function convertTemplateParameters(context, node) {
+ (0, assert_1.ok)(context.scope instanceof models_1.DeclarationReflection);
+ context.scope.typeParameters = convertTemplateParameterNodes(context, node.tags?.filter(typescript_1.default.isJSDocTemplateTag));
+}
+function convertTemplateParameterNodes(context, nodes) {
+ const params = (nodes ?? []).flatMap((tag) => tag.typeParameters);
+ return (0, signature_1.convertTypeParameterNodes)(context, params);
+}
+function getTypedefReExportTarget(context, declaration) {
+ const typeExpression = declaration.typeExpression;
+ if (!typescript_1.default.isJSDocTypedefTag(declaration) ||
+ !typeExpression ||
+ typescript_1.default.isJSDocTypeLiteral(typeExpression) ||
+ !typescript_1.default.isImportTypeNode(typeExpression.type) ||
+ !typeExpression.type.qualifier ||
+ !typescript_1.default.isIdentifier(typeExpression.type.qualifier)) {
+ return;
+ }
+ const targetSymbol = context.expectSymbolAtLocation(typeExpression.type.qualifier);
+ const decl = targetSymbol.declarations?.[0];
+ if (!decl ||
+ !(typescript_1.default.isTypeAliasDeclaration(decl) ||
+ typescript_1.default.isInterfaceDeclaration(decl) ||
+ typescript_1.default.isJSDocTypedefTag(decl) ||
+ typescript_1.default.isJSDocCallbackTag(decl))) {
+ return;
+ }
+ const targetParams = typescript_1.default.getEffectiveTypeParameterDeclarations(decl);
+ const localParams = typescript_1.default.getEffectiveTypeParameterDeclarations(declaration);
+ const localArgs = typeExpression.type.typeArguments || [];
+ // If we have type parameters, ensure they are forwarding parameters with no transformations.
+ // This doesn't check constraints since they aren't checked in JSDoc types.
+ if (targetParams.length !== localParams.length ||
+ localArgs.some((arg, i) => !typescript_1.default.isTypeReferenceNode(arg) ||
+ !typescript_1.default.isIdentifier(arg.typeName) ||
+ arg.typeArguments ||
+ localParams[i]?.name.text !== arg.typeName.text)) {
+ return;
+ }
+ return targetSymbol;
+}
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/CategoryPlugin.d.ts b/node_modules/typedoc/dist/lib/converter/plugins/CategoryPlugin.d.ts
new file mode 100644
index 0000000..4e16e3f
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/CategoryPlugin.d.ts
@@ -0,0 +1,69 @@
+import { DeclarationReflection } from "../../models";
+import { ReflectionCategory } from "../../models";
+import { ConverterComponent } from "../components";
+/**
+ * A handler that sorts and categorizes the found reflections in the resolving phase.
+ *
+ * The handler sets the ´category´ property of all reflections.
+ */
+export declare class CategoryPlugin extends ConverterComponent {
+ sortFunction: (reflections: DeclarationReflection[]) => void;
+ defaultCategory: string;
+ categoryOrder: string[];
+ categorizeByGroup: boolean;
+ boosts: Record<string, number>;
+ usedBoosts: Set<string>;
+ static defaultCategory: string;
+ static WEIGHTS: string[];
+ /**
+ * Create a new CategoryPlugin instance.
+ */
+ initialize(): void;
+ /**
+ * Triggered when the converter begins converting a project.
+ */
+ private onBegin;
+ /**
+ * Triggered when the converter resolves a reflection.
+ *
+ * @param context The context object describing the current state the converter is in.
+ * @param reflection The reflection that is currently resolved.
+ */
+ private onResolve;
+ /**
+ * Triggered when the converter has finished resolving a project.
+ *
+ * @param context The context object describing the current state the converter is in.
+ */
+ private onEndResolve;
+ private categorize;
+ private groupCategorize;
+ private lumpCategorize;
+ /**
+ * Create a categorized representation of the given list of reflections.
+ *
+ * @param reflections The reflections that should be categorized.
+ * @param categorySearchBoosts A user-supplied map of category titles, for computing a
+ * relevance boost to be used when searching
+ * @returns An array containing all children of the given reflection categorized
+ */
+ getReflectionCategories(reflections: DeclarationReflection[]): ReflectionCategory[];
+ /**
+ * Return the category of a given reflection.
+ *
+ * @param reflection The reflection.
+ * @returns The category the reflection belongs to
+ *
+ * @privateRemarks
+ * If you change this, also update getGroups in GroupPlugin accordingly.
+ */
+ getCategories(reflection: DeclarationReflection): Set<string>;
+ /**
+ * Callback used to sort categories by name.
+ *
+ * @param a The left reflection to sort.
+ * @param b The right reflection to sort.
+ * @returns The sorting weight.
+ */
+ static sortCatCallback(a: ReflectionCategory, b: ReflectionCategory): number;
+}
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/CategoryPlugin.js b/node_modules/typedoc/dist/lib/converter/plugins/CategoryPlugin.js
new file mode 100644
index 0000000..a49422d
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/CategoryPlugin.js
@@ -0,0 +1,237 @@
+"use strict";
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var CategoryPlugin_1;
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CategoryPlugin = void 0;
+const models_1 = require("../../models");
+const models_2 = require("../../models");
+const components_1 = require("../components");
+const converter_1 = require("../converter");
+const utils_1 = require("../../utils");
+/**
+ * A handler that sorts and categorizes the found reflections in the resolving phase.
+ *
+ * The handler sets the ´category´ property of all reflections.
+ */
+let CategoryPlugin = exports.CategoryPlugin = CategoryPlugin_1 = class CategoryPlugin extends components_1.ConverterComponent {
+ constructor() {
+ super(...arguments);
+ this.usedBoosts = new Set();
+ }
+ /**
+ * Create a new CategoryPlugin instance.
+ */
+ initialize() {
+ this.listenTo(this.owner, {
+ [converter_1.Converter.EVENT_BEGIN]: this.onBegin,
+ [converter_1.Converter.EVENT_RESOLVE]: this.onResolve,
+ [converter_1.Converter.EVENT_RESOLVE_END]: this.onEndResolve,
+ }, undefined, -200);
+ }
+ /**
+ * Triggered when the converter begins converting a project.
+ */
+ onBegin(_context) {
+ this.sortFunction = (0, utils_1.getSortFunction)(this.application.options);
+ // Set up static properties
+ if (this.defaultCategory) {
+ CategoryPlugin_1.defaultCategory = this.defaultCategory;
+ }
+ if (this.categoryOrder) {
+ CategoryPlugin_1.WEIGHTS = this.categoryOrder;
+ }
+ }
+ /**
+ * Triggered when the converter resolves a reflection.
+ *
+ * @param context The context object describing the current state the converter is in.
+ * @param reflection The reflection that is currently resolved.
+ */
+ onResolve(_context, reflection) {
+ if (reflection instanceof models_1.ContainerReflection) {
+ this.categorize(reflection);
+ }
+ }
+ /**
+ * Triggered when the converter has finished resolving a project.
+ *
+ * @param context The context object describing the current state the converter is in.
+ */
+ onEndResolve(context) {
+ const project = context.project;
+ this.categorize(project);
+ const unusedBoosts = new Set(Object.keys(this.boosts));
+ for (const boost of this.usedBoosts) {
+ unusedBoosts.delete(boost);
+ }
+ this.usedBoosts.clear();
+ if (unusedBoosts.size) {
+ context.logger.warn(`Not all categories specified in searchCategoryBoosts were used in the documentation.` +
+ ` The unused categories were:\n\t${Array.from(unusedBoosts).join("\n\t")}`);
+ }
+ }
+ categorize(obj) {
+ if (this.categorizeByGroup) {
+ this.groupCategorize(obj);
+ }
+ else {
+ this.lumpCategorize(obj);
+ }
+ }
+ groupCategorize(obj) {
+ if (!obj.groups || obj.groups.length === 0) {
+ return;
+ }
+ obj.groups.forEach((group) => {
+ if (group.categories)
+ return;
+ group.categories = this.getReflectionCategories(group.children);
+ if (group.categories && group.categories.length > 1) {
+ group.categories.sort(CategoryPlugin_1.sortCatCallback);
+ }
+ else if (group.categories.length === 1 &&
+ group.categories[0].title === CategoryPlugin_1.defaultCategory) {
+ // no categories if everything is uncategorized
+ group.categories = undefined;
+ }
+ });
+ }
+ lumpCategorize(obj) {
+ if (!obj.children || obj.children.length === 0 || obj.categories) {
+ return;
+ }
+ obj.categories = this.getReflectionCategories(obj.children);
+ if (obj.categories && obj.categories.length > 1) {
+ obj.categories.sort(CategoryPlugin_1.sortCatCallback);
+ }
+ else if (obj.categories.length === 1 &&
+ obj.categories[0].title === CategoryPlugin_1.defaultCategory) {
+ // no categories if everything is uncategorized
+ obj.categories = undefined;
+ }
+ }
+ /**
+ * Create a categorized representation of the given list of reflections.
+ *
+ * @param reflections The reflections that should be categorized.
+ * @param categorySearchBoosts A user-supplied map of category titles, for computing a
+ * relevance boost to be used when searching
+ * @returns An array containing all children of the given reflection categorized
+ */
+ getReflectionCategories(reflections) {
+ const categories = new Map();
+ for (const child of reflections) {
+ const childCategories = this.getCategories(child);
+ if (childCategories.size === 0) {
+ childCategories.add(CategoryPlugin_1.defaultCategory);
+ }
+ for (const childCat of childCategories) {
+ const category = categories.get(childCat);
+ if (category) {
+ category.children.push(child);
+ }
+ else {
+ const cat = new models_2.ReflectionCategory(childCat);
+ cat.children.push(child);
+ categories.set(childCat, cat);
+ }
+ }
+ }
+ for (const cat of categories.values()) {
+ this.sortFunction(cat.children);
+ }
+ return Array.from(categories.values());
+ }
+ /**
+ * Return the category of a given reflection.
+ *
+ * @param reflection The reflection.
+ * @returns The category the reflection belongs to
+ *
+ * @privateRemarks
+ * If you change this, also update getGroups in GroupPlugin accordingly.
+ */
+ getCategories(reflection) {
+ const categories = new Set();
+ function extractCategoryTags(comment) {
+ if (!comment)
+ return;
+ (0, utils_1.removeIf)(comment.blockTags, (tag) => {
+ if (tag.tag === "@category") {
+ categories.add(models_1.Comment.combineDisplayParts(tag.content).trim());
+ return true;
+ }
+ return false;
+ });
+ }
+ extractCategoryTags(reflection.comment);
+ for (const sig of reflection.getNonIndexSignatures()) {
+ extractCategoryTags(sig.comment);
+ }
+ if (reflection.type?.type === "reflection") {
+ extractCategoryTags(reflection.type.declaration.comment);
+ for (const sig of reflection.type.declaration.getNonIndexSignatures()) {
+ extractCategoryTags(sig.comment);
+ }
+ }
+ categories.delete("");
+ for (const cat of categories) {
+ if (cat in this.boosts) {
+ this.usedBoosts.add(cat);
+ reflection.relevanceBoost =
+ (reflection.relevanceBoost ?? 1) * this.boosts[cat];
+ }
+ }
+ return categories;
+ }
+ /**
+ * Callback used to sort categories by name.
+ *
+ * @param a The left reflection to sort.
+ * @param b The right reflection to sort.
+ * @returns The sorting weight.
+ */
+ static sortCatCallback(a, b) {
+ let aWeight = CategoryPlugin_1.WEIGHTS.indexOf(a.title);
+ let bWeight = CategoryPlugin_1.WEIGHTS.indexOf(b.title);
+ if (aWeight === -1 || bWeight === -1) {
+ let asteriskIndex = CategoryPlugin_1.WEIGHTS.indexOf("*");
+ if (asteriskIndex === -1) {
+ asteriskIndex = CategoryPlugin_1.WEIGHTS.length;
+ }
+ if (aWeight === -1) {
+ aWeight = asteriskIndex;
+ }
+ if (bWeight === -1) {
+ bWeight = asteriskIndex;
+ }
+ }
+ if (aWeight === bWeight) {
+ return a.title > b.title ? 1 : -1;
+ }
+ return aWeight - bWeight;
+ }
+};
+// For use in static methods
+CategoryPlugin.defaultCategory = "Other";
+CategoryPlugin.WEIGHTS = [];
+__decorate([
+ (0, utils_1.BindOption)("defaultCategory")
+], CategoryPlugin.prototype, "defaultCategory", void 0);
+__decorate([
+ (0, utils_1.BindOption)("categoryOrder")
+], CategoryPlugin.prototype, "categoryOrder", void 0);
+__decorate([
+ (0, utils_1.BindOption)("categorizeByGroup")
+], CategoryPlugin.prototype, "categorizeByGroup", void 0);
+__decorate([
+ (0, utils_1.BindOption)("searchCategoryBoosts")
+], CategoryPlugin.prototype, "boosts", void 0);
+exports.CategoryPlugin = CategoryPlugin = CategoryPlugin_1 = __decorate([
+ (0, components_1.Component)({ name: "category" })
+], CategoryPlugin);
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/CommentPlugin.d.ts b/node_modules/typedoc/dist/lib/converter/plugins/CommentPlugin.d.ts
new file mode 100644
index 0000000..0944c7c
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/CommentPlugin.d.ts
@@ -0,0 +1,121 @@
+import { ConverterComponent } from "../components";
+/**
+ * Handles most behavior triggered by comments. `@group` and `@category` are handled by their respective plugins, but everything else is here.
+ *
+ * How it works today
+ * ==================
+ * During conversion:
+ * - Handle visibility flags (`@private`, `@protected`. `@public`)
+ * - Handle module renames (`@module`)
+ * - Remove excluded tags & comment discovery tags (`@module`, `@packageDocumentation`)
+ * - Copy comments for type parameters from the parent container (for classes/interfaces)
+ *
+ * Resolve begin:
+ * - Remove hidden reflections
+ *
+ * Resolve:
+ * - Apply `@label` tag
+ * - Copy comments on signature containers to the signature if signatures don't already have a comment
+ * and then remove the comment on the container.
+ * - Copy comments to parameters and type parameters (for signatures)
+ * - Apply `@group` and `@category` tags
+ *
+ * Resolve end:
+ * - Copy auto inherited comments from heritage clauses
+ * - Handle `@inheritDoc`
+ * - Resolve `@link` tags to point to target reflections
+ *
+ * How it should work
+ * ==================
+ * During conversion:
+ * - Handle visibility flags (`@private`, `@protected`. `@public`)
+ * - Handle module renames (`@module`)
+ * - Remove excluded tags & comment discovery tags (`@module`, `@packageDocumentation`)
+ *
+ * Resolve begin (100):
+ * - Copy auto inherited comments from heritage clauses
+ * - Apply `@label` tag
+ *
+ * Resolve begin (75)
+ * - Handle `@inheritDoc`
+ *
+ * Resolve begin (50)
+ * - Copy comments on signature containers to the signature if signatures don't already have a comment
+ * and then remove the comment on the container.
+ * - Copy comments for type parameters from the parent container (for classes/interfaces)
+ *
+ * Resolve begin (25)
+ * - Remove hidden reflections
+ *
+ * Resolve:
+ * - Copy comments to parameters and type parameters (for signatures)
+ * - Apply `@group` and `@category` tags
+ *
+ * Resolve end:
+ * - Resolve `@link` tags to point to target reflections
+ *
+ */
+export declare class CommentPlugin extends ConverterComponent {
+ excludeTags: `@${string}`[];
+ excludeInternal: boolean;
+ excludePrivate: boolean;
+ excludeProtected: boolean;
+ excludeNotDocumented: boolean;
+ private _excludeKinds;
+ private get excludeNotDocumentedKinds();
+ /**
+ * Create a new CommentPlugin instance.
+ */
+ initialize(): void;
+ /**
+ * Apply all comment tag modifiers to the given reflection.
+ *
+ * @param reflection The reflection the modifiers should be applied to.
+ * @param comment The comment that should be searched for modifiers.
+ */
+ private applyModifiers;
+ /**
+ * Triggered when the converter has created a type parameter reflection.
+ *
+ * @param context The context object describing the current state the converter is in.
+ * @param reflection The reflection that is currently processed.
+ */
+ private onCreateTypeParameter;
+ /**
+ * Triggered when the converter has created a declaration or signature reflection.
+ *
+ * Invokes the comment parser.
+ *
+ * @param context The context object describing the current state the converter is in.
+ * @param reflection The reflection that is currently processed.
+ * @param node The node that is currently processed if available.
+ */
+ private onDeclaration;
+ /**
+ * Triggered when the converter begins resolving a project.
+ *
+ * @param context The context object describing the current state the converter is in.
+ */
+ private onBeginResolve;
+ /**
+ * Triggered when the converter resolves a reflection.
+ *
+ * Cleans up comment tags related to signatures like `@param` or `@returns`
+ * and moves their data to the corresponding parameter reflections.
+ *
+ * This hook also copies over the comment of function implementations to their
+ * signatures.
+ *
+ * @param context The context object describing the current state the converter is in.
+ * @param reflection The reflection that is currently resolved.
+ */
+ private onResolve;
+ private moveCommentToSignatures;
+ private removeExcludedTags;
+ /**
+ * Determines whether or not a reflection has been hidden
+ *
+ * @param reflection Reflection to check if hidden
+ */
+ private isHidden;
+}
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/CommentPlugin.js b/node_modules/typedoc/dist/lib/converter/plugins/CommentPlugin.js
new file mode 100644
index 0000000..ac3fb9c
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/CommentPlugin.js
@@ -0,0 +1,483 @@
+"use strict";
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CommentPlugin = void 0;
+const components_1 = require("../components");
+const converter_1 = require("../converter");
+const models_1 = require("../../models");
+const utils_1 = require("../../utils");
+/**
+ * These tags are not useful to display in the generated documentation.
+ * They should be ignored when parsing comments. Any relevant type information
+ * (for JS users) will be consumed by TypeScript and need not be preserved
+ * in the comment.
+ *
+ * Note that param/arg/argument/return/returns are not present.
+ * These tags will have their type information stripped when parsing, but still
+ * provide useful information for documentation.
+ */
+const NEVER_RENDERED = [
+ "@augments",
+ "@callback",
+ "@class",
+ "@constructor",
+ "@enum",
+ "@extends",
+ "@this",
+ "@type",
+ "@typedef",
+];
+/**
+ * Handles most behavior triggered by comments. `@group` and `@category` are handled by their respective plugins, but everything else is here.
+ *
+ * How it works today
+ * ==================
+ * During conversion:
+ * - Handle visibility flags (`@private`, `@protected`. `@public`)
+ * - Handle module renames (`@module`)
+ * - Remove excluded tags & comment discovery tags (`@module`, `@packageDocumentation`)
+ * - Copy comments for type parameters from the parent container (for classes/interfaces)
+ *
+ * Resolve begin:
+ * - Remove hidden reflections
+ *
+ * Resolve:
+ * - Apply `@label` tag
+ * - Copy comments on signature containers to the signature if signatures don't already have a comment
+ * and then remove the comment on the container.
+ * - Copy comments to parameters and type parameters (for signatures)
+ * - Apply `@group` and `@category` tags
+ *
+ * Resolve end:
+ * - Copy auto inherited comments from heritage clauses
+ * - Handle `@inheritDoc`
+ * - Resolve `@link` tags to point to target reflections
+ *
+ * How it should work
+ * ==================
+ * During conversion:
+ * - Handle visibility flags (`@private`, `@protected`. `@public`)
+ * - Handle module renames (`@module`)
+ * - Remove excluded tags & comment discovery tags (`@module`, `@packageDocumentation`)
+ *
+ * Resolve begin (100):
+ * - Copy auto inherited comments from heritage clauses
+ * - Apply `@label` tag
+ *
+ * Resolve begin (75)
+ * - Handle `@inheritDoc`
+ *
+ * Resolve begin (50)
+ * - Copy comments on signature containers to the signature if signatures don't already have a comment
+ * and then remove the comment on the container.
+ * - Copy comments for type parameters from the parent container (for classes/interfaces)
+ *
+ * Resolve begin (25)
+ * - Remove hidden reflections
+ *
+ * Resolve:
+ * - Copy comments to parameters and type parameters (for signatures)
+ * - Apply `@group` and `@category` tags
+ *
+ * Resolve end:
+ * - Resolve `@link` tags to point to target reflections
+ *
+ */
+let CommentPlugin = exports.CommentPlugin = class CommentPlugin extends components_1.ConverterComponent {
+ get excludeNotDocumentedKinds() {
+ this._excludeKinds ?? (this._excludeKinds = this.application.options
+ .getValue("excludeNotDocumentedKinds")
+ .reduce((a, b) => a | models_1.ReflectionKind[b], 0));
+ return this._excludeKinds;
+ }
+ /**
+ * Create a new CommentPlugin instance.
+ */
+ initialize() {
+ this.listenTo(this.owner, {
+ [converter_1.Converter.EVENT_CREATE_DECLARATION]: this.onDeclaration,
+ [converter_1.Converter.EVENT_CREATE_SIGNATURE]: this.onDeclaration,
+ [converter_1.Converter.EVENT_CREATE_TYPE_PARAMETER]: this.onCreateTypeParameter,
+ [converter_1.Converter.EVENT_RESOLVE_BEGIN]: this.onBeginResolve,
+ [converter_1.Converter.EVENT_RESOLVE]: this.onResolve,
+ [converter_1.Converter.EVENT_END]: () => {
+ this._excludeKinds = undefined;
+ },
+ });
+ }
+ /**
+ * Apply all comment tag modifiers to the given reflection.
+ *
+ * @param reflection The reflection the modifiers should be applied to.
+ * @param comment The comment that should be searched for modifiers.
+ */
+ applyModifiers(reflection, comment) {
+ if (reflection.kindOf(models_1.ReflectionKind.SomeModule)) {
+ comment.removeModifier("@namespace");
+ }
+ if (reflection.kindOf(models_1.ReflectionKind.Interface)) {
+ comment.removeModifier("@interface");
+ }
+ if (comment.hasModifier("@private")) {
+ reflection.setFlag(models_1.ReflectionFlag.Private);
+ if (reflection.kindOf(models_1.ReflectionKind.CallSignature)) {
+ reflection.parent?.setFlag(models_1.ReflectionFlag.Private);
+ }
+ comment.removeModifier("@private");
+ }
+ if (comment.hasModifier("@protected")) {
+ reflection.setFlag(models_1.ReflectionFlag.Protected);
+ if (reflection.kindOf(models_1.ReflectionKind.CallSignature)) {
+ reflection.parent?.setFlag(models_1.ReflectionFlag.Protected);
+ }
+ comment.removeModifier("@protected");
+ }
+ if (comment.hasModifier("@public")) {
+ reflection.setFlag(models_1.ReflectionFlag.Public);
+ if (reflection.kindOf(models_1.ReflectionKind.CallSignature)) {
+ reflection.parent?.setFlag(models_1.ReflectionFlag.Public);
+ }
+ comment.removeModifier("@public");
+ }
+ if (comment.hasModifier("@readonly")) {
+ const target = reflection.kindOf(models_1.ReflectionKind.GetSignature)
+ ? reflection.parent
+ : reflection;
+ target.setFlag(models_1.ReflectionFlag.Readonly);
+ comment.removeModifier("@readonly");
+ }
+ if (comment.hasModifier("@event") ||
+ comment.hasModifier("@eventProperty")) {
+ comment.blockTags.push(new models_1.CommentTag("@group", [{ kind: "text", text: "Events" }]));
+ comment.removeModifier("@event");
+ comment.removeModifier("@eventProperty");
+ }
+ if (reflection.kindOf(models_1.ReflectionKind.Module | models_1.ReflectionKind.Namespace) ||
+ reflection.kind === models_1.ReflectionKind.Project) {
+ comment.removeTags("@module");
+ comment.removeModifier("@packageDocumentation");
+ }
+ }
+ /**
+ * Triggered when the converter has created a type parameter reflection.
+ *
+ * @param context The context object describing the current state the converter is in.
+ * @param reflection The reflection that is currently processed.
+ */
+ onCreateTypeParameter(_context, reflection) {
+ const comment = reflection.parent?.comment;
+ if (comment) {
+ let tag = comment.getIdentifiedTag(reflection.name, "@typeParam");
+ if (!tag) {
+ tag = comment.getIdentifiedTag(reflection.name, "@template");
+ }
+ if (!tag) {
+ tag = comment.getIdentifiedTag(`<${reflection.name}>`, "@param");
+ }
+ if (!tag) {
+ tag = comment.getIdentifiedTag(reflection.name, "@param");
+ }
+ if (tag) {
+ reflection.comment = new models_1.Comment(tag.content);
+ (0, utils_1.removeIfPresent)(comment.blockTags, tag);
+ }
+ }
+ }
+ /**
+ * Triggered when the converter has created a declaration or signature reflection.
+ *
+ * Invokes the comment parser.
+ *
+ * @param context The context object describing the current state the converter is in.
+ * @param reflection The reflection that is currently processed.
+ * @param node The node that is currently processed if available.
+ */
+ onDeclaration(_context, reflection) {
+ const comment = reflection.comment;
+ if (!comment)
+ return;
+ if (reflection.kindOf(models_1.ReflectionKind.Module)) {
+ const tag = comment.getTag("@module");
+ if (tag) {
+ // If no name is specified, this is a flag to mark a comment as a module comment
+ // and should not result in a reflection rename.
+ const newName = models_1.Comment.combineDisplayParts(tag.content).trim();
+ if (newName.length && !newName.includes("\n")) {
+ reflection.name = newName;
+ }
+ (0, utils_1.removeIfPresent)(comment.blockTags, tag);
+ }
+ }
+ this.applyModifiers(reflection, comment);
+ this.removeExcludedTags(comment);
+ }
+ /**
+ * Triggered when the converter begins resolving a project.
+ *
+ * @param context The context object describing the current state the converter is in.
+ */
+ onBeginResolve(context) {
+ const project = context.project;
+ const reflections = Object.values(project.reflections);
+ // Remove hidden reflections
+ const hidden = new Set();
+ for (const ref of reflections) {
+ if (ref.kindOf(models_1.ReflectionKind.Accessor) && ref.flags.isReadonly) {
+ const decl = ref;
+ if (decl.setSignature) {
+ hidden.add(decl.setSignature);
+ }
+ // Clear flag set by @readonly since it shouldn't be rendered.
+ ref.setFlag(models_1.ReflectionFlag.Readonly, false);
+ }
+ if (this.isHidden(ref)) {
+ hidden.add(ref);
+ }
+ }
+ hidden.forEach((reflection) => project.removeReflection(reflection));
+ // remove functions with empty signatures after their signatures have been removed
+ const [allRemoved, someRemoved] = (0, utils_1.partition)((0, utils_1.unique)((0, utils_1.filterMap)(hidden, (reflection) => reflection.parent?.kindOf(models_1.ReflectionKind.SignatureContainer)
+ ? reflection.parent
+ : void 0)), (method) => method.getNonIndexSignatures().length === 0);
+ allRemoved.forEach((reflection) => {
+ project.removeReflection(reflection);
+ });
+ someRemoved.forEach((reflection) => {
+ reflection.sources = reflection
+ .getNonIndexSignatures()
+ .flatMap((s) => s.sources ?? []);
+ });
+ }
+ /**
+ * Triggered when the converter resolves a reflection.
+ *
+ * Cleans up comment tags related to signatures like `@param` or `@returns`
+ * and moves their data to the corresponding parameter reflections.
+ *
+ * This hook also copies over the comment of function implementations to their
+ * signatures.
+ *
+ * @param context The context object describing the current state the converter is in.
+ * @param reflection The reflection that is currently resolved.
+ */
+ onResolve(context, reflection) {
+ if (reflection.comment) {
+ if (reflection.comment.label &&
+ !/[A-Z_][A-Z0-9_]/.test(reflection.comment.label)) {
+ context.logger.warn(`The label "${reflection.comment.label}" for ${reflection.getFriendlyFullName()} cannot be referenced with a declaration reference. ` +
+ `Labels may only contain A-Z, 0-9, and _, and may not start with a number.`);
+ }
+ mergeSeeTags(reflection.comment);
+ movePropertyTags(reflection.comment, reflection);
+ }
+ if (!(reflection instanceof models_1.DeclarationReflection)) {
+ return;
+ }
+ if (reflection.type instanceof models_1.ReflectionType) {
+ this.moveCommentToSignatures(reflection, reflection.type.declaration.getNonIndexSignatures());
+ }
+ else {
+ this.moveCommentToSignatures(reflection, reflection.getNonIndexSignatures());
+ }
+ }
+ moveCommentToSignatures(reflection, signatures) {
+ if (!signatures.length) {
+ return;
+ }
+ const comment = reflection.kindOf(models_1.ReflectionKind.ClassOrInterface)
+ ? undefined
+ : reflection.comment;
+ // Since this reflection has signatures, remove the comment from the parent
+ // reflection. This is important so that in type aliases we don't end up with
+ // a comment rendered twice.
+ if (!reflection.kindOf(models_1.ReflectionKind.ClassOrInterface)) {
+ delete reflection.comment;
+ }
+ for (const signature of signatures) {
+ const childComment = (signature.comment || (signature.comment = comment?.clone()));
+ if (!childComment)
+ continue;
+ signature.parameters?.forEach((parameter, index) => {
+ if (parameter.name === "__namedParameters") {
+ const commentParams = childComment.blockTags.filter((tag) => tag.tag === "@param" && !tag.name?.includes("."));
+ if (signature.parameters?.length === commentParams.length &&
+ commentParams[index].name) {
+ parameter.name = commentParams[index].name;
+ }
+ }
+ moveNestedParamTags(childComment, parameter);
+ const tag = childComment.getIdentifiedTag(parameter.name, "@param");
+ if (tag) {
+ parameter.comment = new models_1.Comment(models_1.Comment.cloneDisplayParts(tag.content));
+ }
+ });
+ for (const parameter of signature.typeParameters || []) {
+ const tag = childComment.getIdentifiedTag(parameter.name, "@typeParam") ||
+ childComment.getIdentifiedTag(parameter.name, "@template") ||
+ childComment.getIdentifiedTag(`<${parameter.name}>`, "@param");
+ if (tag) {
+ parameter.comment = new models_1.Comment(models_1.Comment.cloneDisplayParts(tag.content));
+ }
+ }
+ childComment?.removeTags("@param");
+ childComment?.removeTags("@typeParam");
+ childComment?.removeTags("@template");
+ }
+ }
+ removeExcludedTags(comment) {
+ for (const tag of NEVER_RENDERED) {
+ comment.removeTags(tag);
+ comment.removeModifier(tag);
+ }
+ for (const tag of this.excludeTags) {
+ comment.removeTags(tag);
+ comment.removeModifier(tag);
+ }
+ }
+ /**
+ * Determines whether or not a reflection has been hidden
+ *
+ * @param reflection Reflection to check if hidden
+ */
+ isHidden(reflection) {
+ const comment = reflection.comment;
+ if (reflection.flags.hasFlag(models_1.ReflectionFlag.Private) &&
+ this.excludePrivate) {
+ return true;
+ }
+ if (reflection.flags.hasFlag(models_1.ReflectionFlag.Protected) &&
+ this.excludeProtected) {
+ return true;
+ }
+ if (!comment) {
+ // We haven't moved comments from the parent for signatures without a direct
+ // comment, so don't exclude those due to not being documented.
+ if (reflection.kindOf(models_1.ReflectionKind.CallSignature |
+ models_1.ReflectionKind.ConstructorSignature) &&
+ reflection.parent?.comment) {
+ return false;
+ }
+ if (this.excludeNotDocumented) {
+ // Don't let excludeNotDocumented remove parameters.
+ if (!(reflection instanceof models_1.DeclarationReflection) &&
+ !(reflection instanceof models_1.SignatureReflection)) {
+ return false;
+ }
+ if (!reflection.kindOf(this.excludeNotDocumentedKinds)) {
+ return false;
+ }
+ // excludeNotDocumented should hide a module only if it has no visible children
+ if (reflection.kindOf(models_1.ReflectionKind.SomeModule)) {
+ if (!reflection.children) {
+ return true;
+ }
+ return reflection.children.every((child) => this.isHidden(child));
+ }
+ // signature containers should only be hidden if all their signatures are hidden
+ if (reflection.kindOf(models_1.ReflectionKind.SignatureContainer)) {
+ return reflection
+ .getAllSignatures()
+ .every((child) => this.isHidden(child));
+ }
+ // excludeNotDocumented should never hide parts of "type" reflections
+ return inTypeLiteral(reflection) === false;
+ }
+ return false;
+ }
+ const isHidden = comment.hasModifier("@hidden") ||
+ comment.hasModifier("@ignore") ||
+ (comment.hasModifier("@internal") && this.excludeInternal);
+ if (isHidden &&
+ reflection.kindOf(models_1.ReflectionKind.ContainsCallSignatures)) {
+ return reflection
+ .getNonIndexSignatures()
+ .every((sig) => {
+ return !sig.comment || this.isHidden(sig);
+ });
+ }
+ return isHidden;
+ }
+};
+__decorate([
+ (0, utils_1.BindOption)("excludeTags")
+], CommentPlugin.prototype, "excludeTags", void 0);
+__decorate([
+ (0, utils_1.BindOption)("excludeInternal")
+], CommentPlugin.prototype, "excludeInternal", void 0);
+__decorate([
+ (0, utils_1.BindOption)("excludePrivate")
+], CommentPlugin.prototype, "excludePrivate", void 0);
+__decorate([
+ (0, utils_1.BindOption)("excludeProtected")
+], CommentPlugin.prototype, "excludeProtected", void 0);
+__decorate([
+ (0, utils_1.BindOption)("excludeNotDocumented")
+], CommentPlugin.prototype, "excludeNotDocumented", void 0);
+exports.CommentPlugin = CommentPlugin = __decorate([
+ (0, components_1.Component)({ name: "comment" })
+], CommentPlugin);
+function inTypeLiteral(refl) {
+ while (refl) {
+ if (refl.kind === models_1.ReflectionKind.TypeLiteral) {
+ return true;
+ }
+ refl = refl.parent;
+ }
+ return false;
+}
+// Moves tags like `@param foo.bar docs for bar` into the `bar` property of the `foo` parameter.
+function moveNestedParamTags(comment, parameter) {
+ const visitor = {
+ reflection(target) {
+ const tags = comment.blockTags.filter((t) => t.tag === "@param" &&
+ t.name?.startsWith(`${parameter.name}.`));
+ for (const tag of tags) {
+ const path = tag.name.split(".");
+ path.shift();
+ const child = target.declaration.getChildByName(path);
+ if (child && !child.comment) {
+ child.comment = new models_1.Comment(models_1.Comment.cloneDisplayParts(tag.content));
+ }
+ }
+ },
+ // #1876, also do this for unions/intersections.
+ union(u) {
+ u.types.forEach((t) => t.visit(visitor));
+ },
+ intersection(i) {
+ i.types.forEach((t) => t.visit(visitor));
+ },
+ };
+ parameter.type?.visit(visitor);
+}
+function movePropertyTags(comment, container) {
+ const propTags = comment.blockTags.filter((tag) => tag.tag === "@prop" || tag.tag === "@property");
+ comment.removeTags("@prop");
+ comment.removeTags("@property");
+ for (const prop of propTags) {
+ if (!prop.name)
+ continue;
+ const child = container.getChildByName(prop.name);
+ if (child) {
+ child.comment = new models_1.Comment(models_1.Comment.cloneDisplayParts(prop.content));
+ }
+ }
+}
+function mergeSeeTags(comment) {
+ const see = comment.getTags("@see");
+ if (see.length < 2)
+ return;
+ const index = comment.blockTags.indexOf(see[0]);
+ comment.removeTags("@see");
+ see[0].content = see.flatMap((part) => [
+ { kind: "text", text: " - " },
+ ...part.content,
+ { kind: "text", text: "\n" },
+ ]);
+ comment.blockTags.splice(index, 0, see[0]);
+}
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/GroupPlugin.d.ts b/node_modules/typedoc/dist/lib/converter/plugins/GroupPlugin.d.ts
new file mode 100644
index 0000000..646389f
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/GroupPlugin.d.ts
@@ -0,0 +1,53 @@
+import { DeclarationReflection } from "../../models/reflections/index";
+import { ReflectionGroup } from "../../models/ReflectionGroup";
+import { ConverterComponent } from "../components";
+/**
+ * A handler that sorts and groups the found reflections in the resolving phase.
+ *
+ * The handler sets the `groups` property of all container reflections.
+ */
+export declare class GroupPlugin extends ConverterComponent {
+ sortFunction: (reflections: DeclarationReflection[]) => void;
+ boosts: Record<string, number>;
+ groupOrder: string[];
+ usedBoosts: Set<string>;
+ static WEIGHTS: string[];
+ /**
+ * Create a new GroupPlugin instance.
+ */
+ initialize(): void;
+ /**
+ * Triggered when the converter resolves a reflection.
+ *
+ * @param context The context object describing the current state the converter is in.
+ * @param reflection The reflection that is currently resolved.
+ */
+ private onResolve;
+ /**
+ * Triggered when the converter has finished resolving a project.
+ *
+ * @param context The context object describing the current state the converter is in.
+ */
+ private onEndResolve;
+ private group;
+ /**
+ * Extracts the groups for a given reflection.
+ *
+ * @privateRemarks
+ * If you change this, also update getCategories in CategoryPlugin accordingly.
+ */
+ getGroups(reflection: DeclarationReflection): Set<string>;
+ /**
+ * Create a grouped representation of the given list of reflections.
+ *
+ * Reflections are grouped by kind and sorted by weight and name.
+ *
+ * @param reflections The reflections that should be grouped.
+ * @returns An array containing all children of the given reflection grouped by their kind.
+ */
+ getReflectionGroups(reflections: DeclarationReflection[]): ReflectionGroup[];
+ /**
+ * Callback used to sort groups by name.
+ */
+ static sortGroupCallback(a: ReflectionGroup, b: ReflectionGroup): number;
+}
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/GroupPlugin.js b/node_modules/typedoc/dist/lib/converter/plugins/GroupPlugin.js
new file mode 100644
index 0000000..0ab5427
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/GroupPlugin.js
@@ -0,0 +1,175 @@
+"use strict";
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var GroupPlugin_1;
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.GroupPlugin = void 0;
+const index_1 = require("../../models/reflections/index");
+const ReflectionGroup_1 = require("../../models/ReflectionGroup");
+const components_1 = require("../components");
+const converter_1 = require("../converter");
+const sort_1 = require("../../utils/sort");
+const utils_1 = require("../../utils");
+const models_1 = require("../../models");
+/**
+ * A handler that sorts and groups the found reflections in the resolving phase.
+ *
+ * The handler sets the `groups` property of all container reflections.
+ */
+let GroupPlugin = exports.GroupPlugin = GroupPlugin_1 = class GroupPlugin extends components_1.ConverterComponent {
+ constructor() {
+ super(...arguments);
+ this.usedBoosts = new Set();
+ }
+ /**
+ * Create a new GroupPlugin instance.
+ */
+ initialize() {
+ this.listenTo(this.owner, {
+ [converter_1.Converter.EVENT_RESOLVE_BEGIN]: () => {
+ this.sortFunction = (0, sort_1.getSortFunction)(this.application.options);
+ GroupPlugin_1.WEIGHTS = this.groupOrder;
+ },
+ [converter_1.Converter.EVENT_RESOLVE]: this.onResolve,
+ [converter_1.Converter.EVENT_RESOLVE_END]: this.onEndResolve,
+ });
+ }
+ /**
+ * Triggered when the converter resolves a reflection.
+ *
+ * @param context The context object describing the current state the converter is in.
+ * @param reflection The reflection that is currently resolved.
+ */
+ onResolve(_context, reflection) {
+ if (reflection instanceof index_1.ContainerReflection) {
+ this.group(reflection);
+ }
+ }
+ /**
+ * Triggered when the converter has finished resolving a project.
+ *
+ * @param context The context object describing the current state the converter is in.
+ */
+ onEndResolve(context) {
+ this.group(context.project);
+ const unusedBoosts = new Set(Object.keys(this.boosts));
+ for (const boost of this.usedBoosts) {
+ unusedBoosts.delete(boost);
+ }
+ this.usedBoosts.clear();
+ if (unusedBoosts.size &&
+ this.application.options.isSet("searchGroupBoosts")) {
+ context.logger.warn(`Not all groups specified in searchGroupBoosts were used in the documentation.` +
+ ` The unused groups were:\n\t${Array.from(unusedBoosts).join("\n\t")}`);
+ }
+ }
+ group(reflection) {
+ if (reflection.children &&
+ reflection.children.length > 0 &&
+ !reflection.groups) {
+ this.sortFunction(reflection.children);
+ reflection.groups = this.getReflectionGroups(reflection.children);
+ }
+ }
+ /**
+ * Extracts the groups for a given reflection.
+ *
+ * @privateRemarks
+ * If you change this, also update getCategories in CategoryPlugin accordingly.
+ */
+ getGroups(reflection) {
+ const groups = new Set();
+ function extractGroupTags(comment) {
+ if (!comment)
+ return;
+ (0, utils_1.removeIf)(comment.blockTags, (tag) => {
+ if (tag.tag === "@group") {
+ groups.add(models_1.Comment.combineDisplayParts(tag.content).trim());
+ return true;
+ }
+ return false;
+ });
+ }
+ extractGroupTags(reflection.comment);
+ for (const sig of reflection.getNonIndexSignatures()) {
+ extractGroupTags(sig.comment);
+ }
+ if (reflection.type?.type === "reflection") {
+ extractGroupTags(reflection.type.declaration.comment);
+ for (const sig of reflection.type.declaration.getNonIndexSignatures()) {
+ extractGroupTags(sig.comment);
+ }
+ }
+ groups.delete("");
+ if (groups.size === 0) {
+ groups.add(index_1.ReflectionKind.pluralString(reflection.kind));
+ }
+ for (const group of groups) {
+ if (group in this.boosts) {
+ this.usedBoosts.add(group);
+ reflection.relevanceBoost =
+ (reflection.relevanceBoost ?? 1) * this.boosts[group];
+ }
+ }
+ return groups;
+ }
+ /**
+ * Create a grouped representation of the given list of reflections.
+ *
+ * Reflections are grouped by kind and sorted by weight and name.
+ *
+ * @param reflections The reflections that should be grouped.
+ * @returns An array containing all children of the given reflection grouped by their kind.
+ */
+ getReflectionGroups(reflections) {
+ const groups = new Map();
+ reflections.forEach((child) => {
+ for (const name of this.getGroups(child)) {
+ let group = groups.get(name);
+ if (!group) {
+ group = new ReflectionGroup_1.ReflectionGroup(name);
+ groups.set(name, group);
+ }
+ group.children.push(child);
+ }
+ });
+ return Array.from(groups.values()).sort(GroupPlugin_1.sortGroupCallback);
+ }
+ /**
+ * Callback used to sort groups by name.
+ */
+ static sortGroupCallback(a, b) {
+ let aWeight = GroupPlugin_1.WEIGHTS.indexOf(a.title);
+ let bWeight = GroupPlugin_1.WEIGHTS.indexOf(b.title);
+ if (aWeight === -1 || bWeight === -1) {
+ let asteriskIndex = GroupPlugin_1.WEIGHTS.indexOf("*");
+ if (asteriskIndex === -1) {
+ asteriskIndex = GroupPlugin_1.WEIGHTS.length;
+ }
+ if (aWeight === -1) {
+ aWeight = asteriskIndex;
+ }
+ if (bWeight === -1) {
+ bWeight = asteriskIndex;
+ }
+ }
+ if (aWeight === bWeight) {
+ return a.title > b.title ? 1 : -1;
+ }
+ return aWeight - bWeight;
+ }
+};
+GroupPlugin.WEIGHTS = [];
+__decorate([
+ (0, utils_1.BindOption)("searchGroupBoosts")
+], GroupPlugin.prototype, "boosts", void 0);
+__decorate([
+ (0, utils_1.BindOption)("groupOrder")
+], GroupPlugin.prototype, "groupOrder", void 0);
+exports.GroupPlugin = GroupPlugin = GroupPlugin_1 = __decorate([
+ (0, components_1.Component)({ name: "group" })
+], GroupPlugin);
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/ImplementsPlugin.d.ts b/node_modules/typedoc/dist/lib/converter/plugins/ImplementsPlugin.d.ts
new file mode 100644
index 0000000..a3b61d0
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/ImplementsPlugin.d.ts
@@ -0,0 +1,31 @@
+import { ConverterComponent } from "../components";
+/**
+ * A plugin that detects interface implementations of functions and
+ * properties on classes and links them.
+ */
+export declare class ImplementsPlugin extends ConverterComponent {
+ private resolved;
+ private postponed;
+ /**
+ * Create a new ImplementsPlugin instance.
+ */
+ initialize(): void;
+ /**
+ * Mark all members of the given class to be the implementation of the matching interface member.
+ */
+ private analyzeImplements;
+ private analyzeInheritance;
+ private onResolveEnd;
+ private resolve;
+ private tryResolve;
+ private doResolve;
+ private getExtensionInfo;
+ private onSignature;
+ /**
+ * Responsible for setting the {@link DeclarationReflection.inheritedFrom},
+ * {@link DeclarationReflection.overwrites}, and {@link DeclarationReflection.implementationOf}
+ * properties on the provided reflection temporarily, these links will be replaced
+ * during the resolve step with links which actually point to the right place.
+ */
+ private onDeclaration;
+}
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/ImplementsPlugin.js b/node_modules/typedoc/dist/lib/converter/plugins/ImplementsPlugin.js
new file mode 100644
index 0000000..9180d86
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/ImplementsPlugin.js
@@ -0,0 +1,352 @@
+"use strict";
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ImplementsPlugin = void 0;
+const typescript_1 = __importDefault(require("typescript"));
+const application_events_1 = require("../../application-events");
+const index_1 = require("../../models/reflections/index");
+const types_1 = require("../../models/types");
+const array_1 = require("../../utils/array");
+const components_1 = require("../components");
+const converter_1 = require("../converter");
+const utils_1 = require("../../utils");
+/**
+ * A plugin that detects interface implementations of functions and
+ * properties on classes and links them.
+ */
+let ImplementsPlugin = exports.ImplementsPlugin = class ImplementsPlugin extends components_1.ConverterComponent {
+ constructor() {
+ super(...arguments);
+ this.resolved = new WeakSet();
+ this.postponed = new WeakMap();
+ }
+ /**
+ * Create a new ImplementsPlugin instance.
+ */
+ initialize() {
+ this.listenTo(this.owner, converter_1.Converter.EVENT_RESOLVE_END, this.onResolveEnd);
+ this.listenTo(this.owner, converter_1.Converter.EVENT_CREATE_DECLARATION, this.onDeclaration, -1000);
+ this.listenTo(this.owner, converter_1.Converter.EVENT_CREATE_SIGNATURE, this.onSignature, 1000);
+ this.listenTo(this.application, application_events_1.ApplicationEvents.REVIVE, this.resolve);
+ }
+ /**
+ * Mark all members of the given class to be the implementation of the matching interface member.
+ */
+ analyzeImplements(project, classReflection, interfaceReflection) {
+ handleInheritedComments(classReflection, interfaceReflection);
+ if (!interfaceReflection.children) {
+ return;
+ }
+ interfaceReflection.children.forEach((interfaceMember) => {
+ const classMember = findMatchingMember(interfaceMember, classReflection);
+ if (!classMember) {
+ return;
+ }
+ const interfaceMemberName = interfaceReflection.name + "." + interfaceMember.name;
+ classMember.implementationOf =
+ types_1.ReferenceType.createResolvedReference(interfaceMemberName, interfaceMember, project);
+ const intSigs = interfaceMember.signatures ||
+ interfaceMember.type?.visit({
+ reflection: (r) => r.declaration.signatures,
+ });
+ const clsSigs = classMember.signatures ||
+ classMember.type?.visit({
+ reflection: (r) => r.declaration.signatures,
+ });
+ if (intSigs && clsSigs) {
+ for (const [clsSig, intSig] of (0, array_1.zip)(clsSigs, intSigs)) {
+ if (clsSig.implementationOf) {
+ const target = intSig.parent.kindOf(index_1.ReflectionKind.FunctionOrMethod)
+ ? intSig
+ : intSig.parent.parent;
+ clsSig.implementationOf =
+ types_1.ReferenceType.createResolvedReference(clsSig.implementationOf.name, target, project);
+ }
+ }
+ }
+ handleInheritedComments(classMember, interfaceMember);
+ });
+ }
+ analyzeInheritance(project, reflection) {
+ const extendedTypes = (0, array_1.filterMap)(reflection.extendedTypes ?? [], (type) => {
+ return type instanceof types_1.ReferenceType &&
+ type.reflection instanceof index_1.DeclarationReflection
+ ? type
+ : void 0;
+ });
+ for (const parent of extendedTypes) {
+ handleInheritedComments(reflection, parent.reflection);
+ for (const parentMember of parent.reflection.children ?? []) {
+ const child = findMatchingMember(parentMember, reflection);
+ if (child) {
+ const key = child.overwrites
+ ? "overwrites"
+ : "inheritedFrom";
+ for (const [childSig, parentSig] of (0, array_1.zip)(child.signatures ?? [], parentMember.signatures ?? [])) {
+ childSig[key] = types_1.ReferenceType.createResolvedReference(`${parent.name}.${parentMember.name}`, parentSig, project);
+ }
+ child[key] = types_1.ReferenceType.createResolvedReference(`${parent.name}.${parentMember.name}`, parentMember, project);
+ handleInheritedComments(child, parentMember);
+ }
+ }
+ }
+ }
+ onResolveEnd(context) {
+ this.resolve(context.project);
+ }
+ resolve(project) {
+ for (const reflection of Object.values(project.reflections)) {
+ if (reflection instanceof index_1.DeclarationReflection) {
+ this.tryResolve(project, reflection);
+ }
+ }
+ }
+ tryResolve(project, reflection) {
+ const requirements = (0, array_1.filterMap)([
+ ...(reflection.implementedTypes ?? []),
+ ...(reflection.extendedTypes ?? []),
+ ], (type) => {
+ return type instanceof types_1.ReferenceType ? type.reflection : void 0;
+ });
+ if (requirements.every((req) => this.resolved.has(req))) {
+ this.doResolve(project, reflection);
+ this.resolved.add(reflection);
+ for (const refl of this.postponed.get(reflection) ?? []) {
+ this.tryResolve(project, refl);
+ }
+ this.postponed.delete(reflection);
+ }
+ else {
+ for (const req of requirements) {
+ const future = this.postponed.get(req) ?? new Set();
+ future.add(reflection);
+ this.postponed.set(req, future);
+ }
+ }
+ }
+ doResolve(project, reflection) {
+ if (reflection.kindOf(index_1.ReflectionKind.Class) &&
+ reflection.implementedTypes) {
+ reflection.implementedTypes.forEach((type) => {
+ if (!(type instanceof types_1.ReferenceType)) {
+ return;
+ }
+ if (type.reflection &&
+ type.reflection.kindOf(index_1.ReflectionKind.ClassOrInterface)) {
+ this.analyzeImplements(project, reflection, type.reflection);
+ }
+ });
+ }
+ if (reflection.kindOf(index_1.ReflectionKind.ClassOrInterface) &&
+ reflection.extendedTypes) {
+ this.analyzeInheritance(project, reflection);
+ }
+ }
+ getExtensionInfo(context, reflection) {
+ if (!reflection || !reflection.kindOf(index_1.ReflectionKind.Inheritable)) {
+ return;
+ }
+ // Need this because we re-use reflections for type literals.
+ if (!reflection.parent?.kindOf(index_1.ReflectionKind.ClassOrInterface)) {
+ return;
+ }
+ const symbol = context.project.getSymbolFromReflection(reflection.parent);
+ if (!symbol) {
+ return;
+ }
+ const declaration = symbol
+ .getDeclarations()
+ ?.find((n) => typescript_1.default.isClassDeclaration(n) || typescript_1.default.isInterfaceDeclaration(n));
+ if (!declaration) {
+ return;
+ }
+ return { symbol, declaration };
+ }
+ onSignature(context, reflection) {
+ this.onDeclaration(context, reflection.parent);
+ }
+ /**
+ * Responsible for setting the {@link DeclarationReflection.inheritedFrom},
+ * {@link DeclarationReflection.overwrites}, and {@link DeclarationReflection.implementationOf}
+ * properties on the provided reflection temporarily, these links will be replaced
+ * during the resolve step with links which actually point to the right place.
+ */
+ onDeclaration(context, reflection) {
+ const info = this.getExtensionInfo(context, reflection);
+ if (!info) {
+ return;
+ }
+ if (reflection.kind === index_1.ReflectionKind.Constructor) {
+ const ctor = info.declaration.members.find(typescript_1.default.isConstructorDeclaration);
+ constructorInheritance(context, reflection, info.declaration, ctor);
+ return;
+ }
+ const childType = reflection.flags.isStatic
+ ? context.checker.getTypeOfSymbolAtLocation(info.symbol, info.declaration)
+ : context.checker.getDeclaredTypeOfSymbol(info.symbol);
+ const property = findProperty(reflection, childType);
+ if (!property) {
+ // We're probably broken... but I don't think this should be fatal.
+ context.logger.warn(`Failed to retrieve${reflection.flags.isStatic ? " static" : ""} member "${reflection.escapedName ?? reflection.name}" of "${reflection.parent?.name}" for inheritance analysis. Please report a bug.`);
+ return;
+ }
+ // Need to check both extends and implements clauses.
+ out: for (const clause of info.declaration.heritageClauses ?? []) {
+ // No point checking implemented types for static members, they won't exist.
+ if (reflection.flags.isStatic &&
+ clause.token === typescript_1.default.SyntaxKind.ImplementsKeyword) {
+ continue;
+ }
+ for (const expr of clause.types) {
+ const parentType = context.checker.getTypeAtLocation(reflection.flags.isStatic ? expr.expression : expr);
+ const parentProperty = findProperty(reflection, parentType);
+ if (parentProperty) {
+ const isInherit = property
+ .getDeclarations()
+ ?.some((d) => d.parent !== info.declaration) ??
+ true;
+ createLink(context, reflection, clause, expr, parentProperty, isInherit);
+ // Can't always break because we need to also set `implementationOf` if we
+ // inherit from a base class and also implement an interface.
+ if (clause.token === typescript_1.default.SyntaxKind.ImplementsKeyword) {
+ break out;
+ }
+ }
+ }
+ }
+ }
+};
+exports.ImplementsPlugin = ImplementsPlugin = __decorate([
+ (0, components_1.Component)({ name: "implements" })
+], ImplementsPlugin);
+function constructorInheritance(context, reflection, childDecl, constructorDecl) {
+ const extendsClause = childDecl.heritageClauses?.find((cl) => cl.token === typescript_1.default.SyntaxKind.ExtendsKeyword);
+ if (!extendsClause)
+ return;
+ const name = `${extendsClause.types[0].getText()}.constructor`;
+ const key = constructorDecl ? "overwrites" : "inheritedFrom";
+ reflection[key] ?? (reflection[key] = types_1.ReferenceType.createBrokenReference(name, context.project));
+ for (const sig of reflection.signatures ?? []) {
+ sig[key] ?? (sig[key] = types_1.ReferenceType.createBrokenReference(name, context.project));
+ }
+}
+function findProperty(reflection, parent) {
+ return parent.getProperties().find((prop) => {
+ return reflection.escapedName
+ ? prop.escapedName === reflection.escapedName
+ : prop.name === reflection.name;
+ });
+}
+function createLink(context, reflection, clause, expr, symbol, isOverwrite) {
+ const project = context.project;
+ const name = `${expr.expression.getText()}.${(0, utils_1.getHumanName)(symbol.name)}`;
+ link(reflection);
+ link(reflection.getSignature);
+ link(reflection.setSignature);
+ link(reflection.indexSignature);
+ for (const sig of reflection.signatures ?? []) {
+ link(sig);
+ }
+ // Intentionally create broken links here. These will be replaced with real links during
+ // resolution if we can do so.
+ function link(target) {
+ if (!target)
+ return;
+ if (clause.token === typescript_1.default.SyntaxKind.ImplementsKeyword) {
+ target.implementationOf ?? (target.implementationOf = types_1.ReferenceType.createBrokenReference(name, project));
+ return;
+ }
+ if (isOverwrite) {
+ target.inheritedFrom ?? (target.inheritedFrom = types_1.ReferenceType.createBrokenReference(name, project));
+ }
+ else {
+ target.overwrites ?? (target.overwrites = types_1.ReferenceType.createBrokenReference(name, project));
+ }
+ }
+}
+/**
+ * Responsible for copying comments from "parent" reflections defined
+ * in either a base class or implemented interface to the child class.
+ */
+function handleInheritedComments(child, parent) {
+ copyComment(child, parent);
+ if (parent.kindOf(index_1.ReflectionKind.Property) &&
+ child.kindOf(index_1.ReflectionKind.Accessor)) {
+ if (child.getSignature) {
+ copyComment(child.getSignature, parent);
+ child.getSignature.implementationOf = child.implementationOf;
+ }
+ if (child.setSignature) {
+ copyComment(child.setSignature, parent);
+ child.setSignature.implementationOf = child.implementationOf;
+ }
+ }
+ if (parent.kindOf(index_1.ReflectionKind.Accessor) &&
+ child.kindOf(index_1.ReflectionKind.Accessor)) {
+ if (parent.getSignature && child.getSignature) {
+ copyComment(child.getSignature, parent.getSignature);
+ }
+ if (parent.setSignature && child.setSignature) {
+ copyComment(child.setSignature, parent.setSignature);
+ }
+ }
+ if (parent.kindOf(index_1.ReflectionKind.FunctionOrMethod) &&
+ parent.signatures &&
+ child.signatures) {
+ for (const [cs, ps] of (0, array_1.zip)(child.signatures, parent.signatures)) {
+ copyComment(cs, ps);
+ }
+ }
+ else if (parent.kindOf(index_1.ReflectionKind.Property) &&
+ parent.type instanceof types_1.ReflectionType &&
+ parent.type.declaration.signatures &&
+ child.signatures) {
+ for (const [cs, ps] of (0, array_1.zip)(child.signatures, parent.type.declaration.signatures)) {
+ copyComment(cs, ps);
+ }
+ }
+}
+/**
+ * Copy the comment of the source reflection to the target reflection with a JSDoc style copy
+ * function. The TSDoc copy function is in the InheritDocPlugin.
+ */
+function copyComment(target, source) {
+ if (target.comment) {
+ // We might still want to copy, if the child has a JSDoc style inheritDoc tag.
+ const tag = target.comment.getTag("@inheritDoc");
+ if (!tag || tag.name) {
+ return;
+ }
+ }
+ if (!source.comment) {
+ return;
+ }
+ target.comment = source.comment.clone();
+ if (target instanceof index_1.DeclarationReflection &&
+ source instanceof index_1.DeclarationReflection) {
+ for (const [tt, ts] of (0, array_1.zip)(target.typeParameters || [], source.typeParameters || [])) {
+ copyComment(tt, ts);
+ }
+ }
+ if (target instanceof index_1.SignatureReflection &&
+ source instanceof index_1.SignatureReflection) {
+ for (const [tt, ts] of (0, array_1.zip)(target.typeParameters || [], source.typeParameters || [])) {
+ copyComment(tt, ts);
+ }
+ for (const [pt, ps] of (0, array_1.zip)(target.parameters || [], source.parameters || [])) {
+ copyComment(pt, ps);
+ }
+ }
+}
+function findMatchingMember(toMatch, container) {
+ return container.children?.find((child) => child.name == toMatch.name &&
+ child.flags.isStatic === toMatch.flags.isStatic);
+}
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/InheritDocPlugin.d.ts b/node_modules/typedoc/dist/lib/converter/plugins/InheritDocPlugin.d.ts
new file mode 100644
index 0000000..de9b964
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/InheritDocPlugin.d.ts
@@ -0,0 +1,29 @@
+import { ConverterComponent } from "../components";
+/**
+ * A plugin that handles `@inheritDoc` tags by copying documentation from another API item.
+ * It is NOT responsible for handling bare JSDoc style `@inheritDoc` tags which do not specify
+ * a target to inherit from. Those are handled by the ImplementsPlugin class.
+ *
+ * What gets copied:
+ * - short text
+ * - text
+ * - `@remarks` block
+ * - `@params` block
+ * - `@typeParam` block
+ * - `@return` block
+ */
+export declare class InheritDocPlugin extends ConverterComponent {
+ private dependencies;
+ /**
+ * Create a new InheritDocPlugin instance.
+ */
+ initialize(): void;
+ /**
+ * Traverse through reflection descendant to check for `inheritDoc` tag.
+ * If encountered, the parameter of the tag is used to determine a source reflection
+ * that will provide actual comment.
+ */
+ private processInheritDoc;
+ private copyComment;
+ private createCircularDependencyWarnings;
+}
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/InheritDocPlugin.js b/node_modules/typedoc/dist/lib/converter/plugins/InheritDocPlugin.js
new file mode 100644
index 0000000..05616c4
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/InheritDocPlugin.js
@@ -0,0 +1,182 @@
+"use strict";
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.InheritDocPlugin = void 0;
+const models_1 = require("../../models");
+const components_1 = require("../components");
+const converter_1 = require("../converter");
+const utils_1 = require("../../utils");
+const array_1 = require("../../utils/array");
+const declarationReference_1 = require("../comments/declarationReference");
+const declarationReferenceResolver_1 = require("../comments/declarationReferenceResolver");
+const application_events_1 = require("../../application-events");
+/**
+ * A plugin that handles `@inheritDoc` tags by copying documentation from another API item.
+ * It is NOT responsible for handling bare JSDoc style `@inheritDoc` tags which do not specify
+ * a target to inherit from. Those are handled by the ImplementsPlugin class.
+ *
+ * What gets copied:
+ * - short text
+ * - text
+ * - `@remarks` block
+ * - `@params` block
+ * - `@typeParam` block
+ * - `@return` block
+ */
+let InheritDocPlugin = exports.InheritDocPlugin = class InheritDocPlugin extends components_1.ConverterComponent {
+ constructor() {
+ super(...arguments);
+ // Key is depended on by Values
+ this.dependencies = new utils_1.DefaultMap(() => []);
+ }
+ /**
+ * Create a new InheritDocPlugin instance.
+ */
+ initialize() {
+ this.owner.on(converter_1.Converter.EVENT_RESOLVE_END, (context) => this.processInheritDoc(context.project));
+ this.owner.on(application_events_1.ApplicationEvents.REVIVE, this.processInheritDoc, this);
+ }
+ /**
+ * Traverse through reflection descendant to check for `inheritDoc` tag.
+ * If encountered, the parameter of the tag is used to determine a source reflection
+ * that will provide actual comment.
+ */
+ processInheritDoc(project) {
+ for (const reflection of Object.values(project.reflections)) {
+ const source = extractInheritDocTagReference(reflection);
+ if (!source)
+ continue;
+ const declRef = (0, declarationReference_1.parseDeclarationReference)(source, 0, source.length);
+ if (!declRef || /\S/.test(source.substring(declRef[1]))) {
+ this.application.logger.warn(`Declaration reference in @inheritDoc for ${reflection.getFriendlyFullName()} was not fully parsed and may resolve incorrectly.`);
+ }
+ let sourceRefl = declRef && (0, declarationReferenceResolver_1.resolveDeclarationReference)(reflection, declRef[0]);
+ if (reflection instanceof models_1.SignatureReflection) {
+ // Assumes that if there are overloads, they are declared in the same order as the parent.
+ // TS doesn't check this, but if a user messes this up then they are almost
+ // guaranteed to run into bugs where they can't call a method on a child class
+ // but if they assign (without a type assertion) that child to a variable of the parent class
+ // then they can call the method.
+ if (sourceRefl instanceof models_1.DeclarationReflection) {
+ const index = reflection.parent
+ .getAllSignatures()
+ .indexOf(reflection);
+ sourceRefl =
+ sourceRefl.getAllSignatures()[index] || sourceRefl;
+ }
+ }
+ if (sourceRefl instanceof models_1.DeclarationReflection &&
+ sourceRefl.kindOf(models_1.ReflectionKind.Accessor)) {
+ // Accessors, like functions, never have comments on their actual root reflection.
+ // If the user didn't specify whether to inherit from the getter or setter, then implicitly
+ // try to inherit from the getter, #1968.
+ sourceRefl = sourceRefl.getSignature || sourceRefl.setSignature;
+ }
+ if (!sourceRefl) {
+ this.application.logger.warn(`Failed to find "${source}" to inherit the comment from in the comment for ${reflection.getFullName()}`);
+ continue;
+ }
+ this.copyComment(sourceRefl, reflection);
+ }
+ this.createCircularDependencyWarnings();
+ this.dependencies.clear();
+ }
+ copyComment(source, target) {
+ if (!target.comment)
+ return;
+ if (!source.comment &&
+ source instanceof models_1.DeclarationReflection &&
+ source.signatures) {
+ source = source.signatures[0];
+ }
+ if (!source.comment &&
+ source instanceof models_1.DeclarationReflection &&
+ source.type instanceof models_1.ReflectionType &&
+ source.type.declaration.signatures) {
+ source = source.type.declaration.signatures[0];
+ }
+ if (!source.comment) {
+ this.application.logger.warn(`${target.getFullName()} tried to copy a comment from ${source.getFullName()} with @inheritDoc, but the source has no associated comment.`);
+ return;
+ }
+ // If the source also has a @inheritDoc tag, we can't do anything yet.
+ // We'll try again later, once we've resolved the source's @inheritDoc reference.
+ if (extractInheritDocTagReference(source)) {
+ this.dependencies.get(source).push(target);
+ return;
+ }
+ target.comment.removeTags("@inheritDoc");
+ target.comment.summary = models_1.Comment.cloneDisplayParts(source.comment.summary);
+ const remarks = source.comment.getTag("@remarks");
+ if (remarks) {
+ target.comment.blockTags.unshift(remarks.clone());
+ }
+ const returns = source.comment.getTag("@returns");
+ if (returns) {
+ target.comment.blockTags.push(returns.clone());
+ }
+ if (source instanceof models_1.SignatureReflection &&
+ target instanceof models_1.SignatureReflection) {
+ copySummaries(source.parameters, target.parameters);
+ copySummaries(source.typeParameters, target.typeParameters);
+ }
+ else if (source instanceof models_1.DeclarationReflection &&
+ target instanceof models_1.DeclarationReflection) {
+ copySummaries(source.typeParameters, target.typeParameters);
+ }
+ // Now copy the comment for anyone who depends on me.
+ const dependent = this.dependencies.get(target);
+ this.dependencies.delete(target);
+ for (const target2 of dependent) {
+ this.copyComment(target, target2);
+ }
+ }
+ createCircularDependencyWarnings() {
+ const unwarned = new Set(this.dependencies.keys());
+ const generateWarning = (orig) => {
+ const parts = [orig.name];
+ unwarned.delete(orig);
+ let work = orig;
+ do {
+ work = this.dependencies.get(work)[0];
+ unwarned.delete(work);
+ parts.push(work.name);
+ } while (!this.dependencies.get(work).includes(orig));
+ parts.push(orig.name);
+ this.application.logger.warn(`@inheritDoc specifies a circular inheritance chain: ${parts
+ .reverse()
+ .join(" -> ")}`);
+ };
+ for (const orig of this.dependencies.keys()) {
+ if (unwarned.has(orig)) {
+ generateWarning(orig);
+ }
+ }
+ }
+};
+exports.InheritDocPlugin = InheritDocPlugin = __decorate([
+ (0, components_1.Component)({ name: "inheritDoc" })
+], InheritDocPlugin);
+function copySummaries(source, target) {
+ for (const [s, t] of (0, array_1.zip)(source || [], target || [])) {
+ t.comment = new models_1.Comment(s.comment?.summary);
+ }
+}
+function extractInheritDocTagReference(reflection) {
+ const comment = reflection.comment;
+ if (!comment)
+ return;
+ const blockTag = comment.blockTags.find((tag) => tag.tag === "@inheritDoc");
+ if (blockTag) {
+ return blockTag.name;
+ }
+ const inlineTag = comment.summary.find((part) => part.kind === "inline-tag" && part.tag === "@inheritDoc");
+ if (inlineTag) {
+ return inlineTag.text;
+ }
+}
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/LinkResolverPlugin.d.ts b/node_modules/typedoc/dist/lib/converter/plugins/LinkResolverPlugin.d.ts
new file mode 100644
index 0000000..27b7ee6
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/LinkResolverPlugin.d.ts
@@ -0,0 +1,13 @@
+import { ConverterComponent } from "../components";
+import type { Context } from "../../converter";
+import { ValidationOptions } from "../../utils";
+import { ProjectReflection } from "../../models";
+/**
+ * A plugin that resolves `{@link Foo}` tags.
+ */
+export declare class LinkResolverPlugin extends ConverterComponent {
+ validation: ValidationOptions;
+ initialize(): void;
+ onResolve(context: Context): void;
+ resolveLinks(project: ProjectReflection): void;
+}
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/LinkResolverPlugin.js b/node_modules/typedoc/dist/lib/converter/plugins/LinkResolverPlugin.js
new file mode 100644
index 0000000..5a85c73
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/LinkResolverPlugin.js
@@ -0,0 +1,61 @@
+"use strict";
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.LinkResolverPlugin = void 0;
+const components_1 = require("../components");
+const converter_events_1 = require("../converter-events");
+const utils_1 = require("../../utils");
+const models_1 = require("../../models");
+const reflections_1 = require("../../utils/reflections");
+const application_events_1 = require("../../application-events");
+/**
+ * A plugin that resolves `{@link Foo}` tags.
+ */
+let LinkResolverPlugin = exports.LinkResolverPlugin = class LinkResolverPlugin extends components_1.ConverterComponent {
+ initialize() {
+ super.initialize();
+ this.owner.on(converter_events_1.ConverterEvents.RESOLVE_END, this.onResolve, this, -300);
+ this.application.on(application_events_1.ApplicationEvents.REVIVE, this.resolveLinks, this, -300);
+ }
+ onResolve(context) {
+ this.resolveLinks(context.project);
+ }
+ resolveLinks(project) {
+ for (const reflection of Object.values(project.reflections)) {
+ if (reflection.comment) {
+ this.owner.resolveLinks(reflection.comment, reflection);
+ }
+ if (reflection instanceof models_1.DeclarationReflection &&
+ reflection.readme) {
+ reflection.readme = this.owner.resolveLinks(reflection.readme, reflection);
+ }
+ }
+ if (project.readme) {
+ project.readme = this.owner.resolveLinks(project.readme, project);
+ }
+ for (const { type, owner } of (0, reflections_1.discoverAllReferenceTypes)(project, false)) {
+ if (!type.reflection) {
+ const resolveResult = this.owner.resolveExternalLink(type.toDeclarationReference(), owner, undefined, type.symbolId);
+ switch (typeof resolveResult) {
+ case "string":
+ type.externalUrl = resolveResult;
+ break;
+ case "object":
+ type.externalUrl = resolveResult.target;
+ break;
+ }
+ }
+ }
+ }
+};
+__decorate([
+ (0, utils_1.BindOption)("validation")
+], LinkResolverPlugin.prototype, "validation", void 0);
+exports.LinkResolverPlugin = LinkResolverPlugin = __decorate([
+ (0, components_1.Component)({ name: "link-resolver" })
+], LinkResolverPlugin);
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/PackagePlugin.d.ts b/node_modules/typedoc/dist/lib/converter/plugins/PackagePlugin.d.ts
new file mode 100644
index 0000000..8709d55
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/PackagePlugin.d.ts
@@ -0,0 +1,29 @@
+import { ConverterComponent } from "../components";
+import { EntryPointStrategy } from "../../utils";
+/**
+ * A handler that tries to find the package.json and readme.md files of the
+ * current project.
+ */
+export declare class PackagePlugin extends ConverterComponent {
+ readme: string;
+ entryPointStrategy: EntryPointStrategy;
+ entryPoints: string[];
+ includeVersion: boolean;
+ /**
+ * The file name of the found readme.md file.
+ */
+ private readmeFile?;
+ /**
+ * Contents of the readme.md file discovered, if any
+ */
+ private readmeContents?;
+ /**
+ * Contents of package.json for the active project
+ */
+ private packageJson?;
+ initialize(): void;
+ private onRevive;
+ private onBegin;
+ private onBeginResolve;
+ private addEntries;
+}
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/PackagePlugin.js b/node_modules/typedoc/dist/lib/converter/plugins/PackagePlugin.js
new file mode 100644
index 0000000..aa947d2
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/PackagePlugin.js
@@ -0,0 +1,146 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.PackagePlugin = void 0;
+const Path = __importStar(require("path"));
+const components_1 = require("../components");
+const converter_1 = require("../converter");
+const utils_1 = require("../../utils");
+const fs_1 = require("../../utils/fs");
+const paths_1 = require("../../utils/paths");
+const minimalSourceFile_1 = require("../../utils/minimalSourceFile");
+const application_events_1 = require("../../application-events");
+const path_1 = require("path");
+/**
+ * A handler that tries to find the package.json and readme.md files of the
+ * current project.
+ */
+let PackagePlugin = exports.PackagePlugin = class PackagePlugin extends components_1.ConverterComponent {
+ initialize() {
+ this.listenTo(this.owner, {
+ [converter_1.Converter.EVENT_BEGIN]: this.onBegin,
+ [converter_1.Converter.EVENT_RESOLVE_BEGIN]: this.onBeginResolve,
+ [converter_1.Converter.EVENT_END]: () => {
+ delete this.readmeFile;
+ delete this.readmeContents;
+ delete this.packageJson;
+ },
+ });
+ this.listenTo(this.application, {
+ [application_events_1.ApplicationEvents.REVIVE]: this.onRevive,
+ });
+ }
+ onRevive(project) {
+ this.onBegin();
+ this.addEntries(project);
+ delete this.readmeFile;
+ delete this.packageJson;
+ delete this.readmeContents;
+ }
+ onBegin() {
+ this.readmeFile = undefined;
+ this.readmeContents = undefined;
+ this.packageJson = undefined;
+ const entryFiles = this.entryPointStrategy === utils_1.EntryPointStrategy.Packages
+ ? this.entryPoints.map((d) => (0, path_1.join)(d, "package.json"))
+ : this.entryPoints;
+ const dirName = this.application.options.packageDir ??
+ Path.resolve((0, fs_1.deriveRootDir)(entryFiles));
+ this.application.logger.verbose(`Begin readme.md/package.json search at ${(0, paths_1.nicePath)(dirName)}`);
+ this.packageJson = (0, fs_1.discoverPackageJson)(dirName)?.content;
+ // Path will be resolved already. This is kind of ugly, but...
+ if (this.readme.endsWith("none")) {
+ return; // No readme, we're done
+ }
+ if (this.readme) {
+ // Readme path provided, read only that file.
+ try {
+ this.readmeContents = (0, utils_1.readFile)(this.readme);
+ this.readmeFile = this.readme;
+ }
+ catch {
+ this.application.logger.error(`Provided README path, ${(0, paths_1.nicePath)(this.readme)} could not be read.`);
+ }
+ }
+ else {
+ // No readme provided, automatically find the readme
+ const result = (0, fs_1.discoverInParentDir)("readme.md", dirName, (content) => content);
+ if (result) {
+ this.readmeFile = result.file;
+ this.readmeContents = result.content;
+ }
+ }
+ }
+ onBeginResolve(context) {
+ this.addEntries(context.project);
+ }
+ addEntries(project) {
+ if (this.readmeFile && this.readmeContents) {
+ const comment = this.application.converter.parseRawComment(new minimalSourceFile_1.MinimalSourceFile(this.readmeContents, this.readmeFile));
+ if (comment.blockTags.length || comment.modifierTags.size) {
+ const ignored = [
+ ...comment.blockTags.map((tag) => tag.tag),
+ ...comment.modifierTags,
+ ];
+ this.application.logger.warn(`Block and modifier tags will be ignored within the readme:\n\t${ignored.join("\n\t")}`);
+ }
+ project.readme = comment.summary;
+ }
+ if (this.packageJson) {
+ project.packageName = this.packageJson.name;
+ if (!project.name) {
+ project.name = project.packageName || "Documentation";
+ }
+ if (this.includeVersion) {
+ project.packageVersion = this.packageJson.version?.replace(/^v/, "");
+ }
+ }
+ else if (!project.name) {
+ this.application.logger.warn('The --name option was not specified, and no package.json was found. Defaulting project name to "Documentation".');
+ project.name = "Documentation";
+ }
+ }
+};
+__decorate([
+ (0, utils_1.BindOption)("readme")
+], PackagePlugin.prototype, "readme", void 0);
+__decorate([
+ (0, utils_1.BindOption)("entryPointStrategy")
+], PackagePlugin.prototype, "entryPointStrategy", void 0);
+__decorate([
+ (0, utils_1.BindOption)("entryPoints")
+], PackagePlugin.prototype, "entryPoints", void 0);
+__decorate([
+ (0, utils_1.BindOption)("includeVersion")
+], PackagePlugin.prototype, "includeVersion", void 0);
+exports.PackagePlugin = PackagePlugin = __decorate([
+ (0, components_1.Component)({ name: "package" })
+], PackagePlugin);
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/SourcePlugin.d.ts b/node_modules/typedoc/dist/lib/converter/plugins/SourcePlugin.d.ts
new file mode 100644
index 0000000..b7dc61d
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/SourcePlugin.d.ts
@@ -0,0 +1,51 @@
+import { ConverterComponent } from "../components";
+/**
+ * A handler that attaches source file information to reflections.
+ */
+export declare class SourcePlugin extends ConverterComponent {
+ readonly disableSources: boolean;
+ readonly gitRevision: string;
+ readonly gitRemote: string;
+ readonly sourceLinkTemplate: string;
+ readonly basePath: string;
+ /**
+ * All file names to find the base path from.
+ */
+ private fileNames;
+ /**
+ * List of known repositories.
+ */
+ private repositories;
+ /**
+ * List of paths known to be not under git control.
+ */
+ private ignoredPaths;
+ /**
+ * Create a new SourceHandler instance.
+ */
+ initialize(): void;
+ private onEnd;
+ /**
+ * Triggered when the converter has created a declaration reflection.
+ *
+ * Attach the current source file to the {@link DeclarationReflection.sources} array.
+ *
+ * @param _context The context object describing the current state the converter is in.
+ * @param reflection The reflection that is currently processed.
+ */
+ private onDeclaration;
+ private onSignature;
+ /**
+ * Triggered when the converter begins resolving a project.
+ *
+ * @param context The context object describing the current state the converter is in.
+ */
+ private onBeginResolve;
+ /**
+ * Check whether the given file is placed inside a repository.
+ *
+ * @param fileName The name of the file a repository should be looked for.
+ * @returns The found repository info or undefined.
+ */
+ private getRepository;
+}
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/SourcePlugin.js b/node_modules/typedoc/dist/lib/converter/plugins/SourcePlugin.js
new file mode 100644
index 0000000..c21517c
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/SourcePlugin.js
@@ -0,0 +1,168 @@
+"use strict";
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.SourcePlugin = void 0;
+const typescript_1 = __importDefault(require("typescript"));
+const index_1 = require("../../models/reflections/index");
+const components_1 = require("../components");
+const converter_1 = require("../converter");
+const utils_1 = require("../../utils");
+const nodes_1 = require("../utils/nodes");
+const path_1 = require("path");
+const models_1 = require("../../models");
+const repository_1 = require("../utils/repository");
+const base_path_1 = require("../utils/base-path");
+/**
+ * A handler that attaches source file information to reflections.
+ */
+let SourcePlugin = exports.SourcePlugin = class SourcePlugin extends components_1.ConverterComponent {
+ constructor() {
+ super(...arguments);
+ /**
+ * All file names to find the base path from.
+ */
+ this.fileNames = new Set();
+ /**
+ * List of known repositories.
+ */
+ this.repositories = {};
+ /**
+ * List of paths known to be not under git control.
+ */
+ this.ignoredPaths = new Set();
+ }
+ /**
+ * Create a new SourceHandler instance.
+ */
+ initialize() {
+ this.listenTo(this.owner, {
+ [converter_1.Converter.EVENT_END]: this.onEnd,
+ [converter_1.Converter.EVENT_CREATE_DECLARATION]: this.onDeclaration,
+ [converter_1.Converter.EVENT_CREATE_SIGNATURE]: this.onSignature,
+ [converter_1.Converter.EVENT_RESOLVE_BEGIN]: this.onBeginResolve,
+ });
+ }
+ onEnd() {
+ // Should probably clear repositories/ignoredPaths here, but these aren't likely to change between runs...
+ this.fileNames.clear();
+ }
+ /**
+ * Triggered when the converter has created a declaration reflection.
+ *
+ * Attach the current source file to the {@link DeclarationReflection.sources} array.
+ *
+ * @param _context The context object describing the current state the converter is in.
+ * @param reflection The reflection that is currently processed.
+ */
+ onDeclaration(_context, reflection) {
+ if (this.disableSources)
+ return;
+ const symbol = reflection.project.getSymbolFromReflection(reflection);
+ for (const node of symbol?.declarations || []) {
+ const sourceFile = node.getSourceFile();
+ const fileName = base_path_1.BasePath.normalize(sourceFile.fileName);
+ this.fileNames.add(fileName);
+ let position;
+ if ((0, nodes_1.isNamedNode)(node)) {
+ position = typescript_1.default.getLineAndCharacterOfPosition(sourceFile, node.name.getStart());
+ }
+ else if (typescript_1.default.isSourceFile(node)) {
+ position = { character: 0, line: 0 };
+ }
+ else {
+ position = typescript_1.default.getLineAndCharacterOfPosition(sourceFile, node.getStart());
+ }
+ reflection.sources || (reflection.sources = []);
+ reflection.sources.push(new models_1.SourceReference(fileName, position.line + 1, position.character));
+ }
+ }
+ onSignature(_context, reflection, sig) {
+ if (this.disableSources || !sig)
+ return;
+ const sourceFile = sig.getSourceFile();
+ const fileName = base_path_1.BasePath.normalize(sourceFile.fileName);
+ this.fileNames.add(fileName);
+ const position = typescript_1.default.getLineAndCharacterOfPosition(sourceFile, sig.getStart());
+ reflection.sources || (reflection.sources = []);
+ reflection.sources.push(new models_1.SourceReference(fileName, position.line + 1, position.character));
+ }
+ /**
+ * Triggered when the converter begins resolving a project.
+ *
+ * @param context The context object describing the current state the converter is in.
+ */
+ onBeginResolve(context) {
+ if (this.disableSources)
+ return;
+ const basePath = this.basePath || (0, utils_1.getCommonDirectory)([...this.fileNames]);
+ for (const refl of Object.values(context.project.reflections)) {
+ if (!(refl instanceof index_1.DeclarationReflection ||
+ refl instanceof index_1.SignatureReflection)) {
+ continue;
+ }
+ for (const source of refl.sources || []) {
+ if (repository_1.gitIsInstalled) {
+ const repo = this.getRepository(source.fullFileName);
+ source.url = repo?.getURL(source.fullFileName, source.line);
+ }
+ source.fileName = (0, utils_1.normalizePath)((0, path_1.relative)(basePath, source.fullFileName));
+ }
+ }
+ }
+ /**
+ * Check whether the given file is placed inside a repository.
+ *
+ * @param fileName The name of the file a repository should be looked for.
+ * @returns The found repository info or undefined.
+ */
+ getRepository(fileName) {
+ // Check for known non-repositories
+ const dirName = (0, path_1.dirname)(fileName);
+ const segments = dirName.split("/");
+ for (let i = segments.length; i > 0; i--) {
+ if (this.ignoredPaths.has(segments.slice(0, i).join("/"))) {
+ return;
+ }
+ }
+ // Check for known repositories
+ for (const path of Object.keys(this.repositories)) {
+ if (fileName.toLowerCase().startsWith(path)) {
+ return this.repositories[path];
+ }
+ }
+ // Try to create a new repository
+ const repository = repository_1.Repository.tryCreateRepository(dirName, this.sourceLinkTemplate, this.gitRevision, this.gitRemote, this.application.logger);
+ if (repository) {
+ this.repositories[repository.path.toLowerCase()] = repository;
+ return repository;
+ }
+ // No repository found, add path to ignored paths
+ this.ignoredPaths.add(dirName);
+ }
+};
+__decorate([
+ (0, utils_1.BindOption)("disableSources")
+], SourcePlugin.prototype, "disableSources", void 0);
+__decorate([
+ (0, utils_1.BindOption)("gitRevision")
+], SourcePlugin.prototype, "gitRevision", void 0);
+__decorate([
+ (0, utils_1.BindOption)("gitRemote")
+], SourcePlugin.prototype, "gitRemote", void 0);
+__decorate([
+ (0, utils_1.BindOption)("sourceLinkTemplate")
+], SourcePlugin.prototype, "sourceLinkTemplate", void 0);
+__decorate([
+ (0, utils_1.BindOption)("basePath")
+], SourcePlugin.prototype, "basePath", void 0);
+exports.SourcePlugin = SourcePlugin = __decorate([
+ (0, components_1.Component)({ name: "source" })
+], SourcePlugin);
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/TypePlugin.d.ts b/node_modules/typedoc/dist/lib/converter/plugins/TypePlugin.d.ts
new file mode 100644
index 0000000..178774f
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/TypePlugin.d.ts
@@ -0,0 +1,18 @@
+import { DeclarationReflection } from "../../models/reflections/index";
+import { ConverterComponent } from "../components";
+/**
+ * Responsible for adding `implementedBy` / `implementedFrom`
+ */
+export declare class TypePlugin extends ConverterComponent {
+ reflections: Set<DeclarationReflection>;
+ /**
+ * Create a new TypeHandler instance.
+ */
+ initialize(): void;
+ private onRevive;
+ private onResolve;
+ private resolve;
+ private postpone;
+ private onResolveEnd;
+ private finishResolve;
+}
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/TypePlugin.js b/node_modules/typedoc/dist/lib/converter/plugins/TypePlugin.js
new file mode 100644
index 0000000..90cbc13
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/TypePlugin.js
@@ -0,0 +1,126 @@
+"use strict";
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.TypePlugin = void 0;
+const index_1 = require("../../models/reflections/index");
+const types_1 = require("../../models/types");
+const components_1 = require("../components");
+const converter_1 = require("../converter");
+const application_events_1 = require("../../application-events");
+/**
+ * Responsible for adding `implementedBy` / `implementedFrom`
+ */
+let TypePlugin = exports.TypePlugin = class TypePlugin extends components_1.ConverterComponent {
+ constructor() {
+ super(...arguments);
+ this.reflections = new Set();
+ }
+ /**
+ * Create a new TypeHandler instance.
+ */
+ initialize() {
+ this.listenTo(this.owner, {
+ [converter_1.Converter.EVENT_RESOLVE]: this.onResolve,
+ [converter_1.Converter.EVENT_RESOLVE_END]: this.onResolveEnd,
+ [converter_1.Converter.EVENT_END]: () => this.reflections.clear(),
+ });
+ this.listenTo(this.application, {
+ [application_events_1.ApplicationEvents.REVIVE]: this.onRevive,
+ });
+ }
+ onRevive(project) {
+ for (const refl of Object.values(project.reflections)) {
+ this.resolve(project, refl);
+ }
+ this.finishResolve(project);
+ this.reflections.clear();
+ }
+ onResolve(context, reflection) {
+ this.resolve(context.project, reflection);
+ }
+ resolve(project, reflection) {
+ if (!(reflection instanceof index_1.DeclarationReflection))
+ return;
+ if (reflection.kindOf(index_1.ReflectionKind.ClassOrInterface)) {
+ this.postpone(reflection);
+ walk(reflection.implementedTypes, (target) => {
+ this.postpone(target);
+ if (!target.implementedBy) {
+ target.implementedBy = [];
+ }
+ target.implementedBy.push(types_1.ReferenceType.createResolvedReference(reflection.name, reflection, project));
+ });
+ walk(reflection.extendedTypes, (target) => {
+ this.postpone(target);
+ if (!target.extendedBy) {
+ target.extendedBy = [];
+ }
+ target.extendedBy.push(types_1.ReferenceType.createResolvedReference(reflection.name, reflection, project));
+ });
+ }
+ function walk(types, callback) {
+ if (!types) {
+ return;
+ }
+ types.forEach((type) => {
+ if (!(type instanceof types_1.ReferenceType)) {
+ return;
+ }
+ if (!type.reflection ||
+ !(type.reflection instanceof index_1.DeclarationReflection)) {
+ return;
+ }
+ callback(type.reflection);
+ });
+ }
+ }
+ postpone(reflection) {
+ this.reflections.add(reflection);
+ }
+ onResolveEnd(context) {
+ this.finishResolve(context.project);
+ }
+ finishResolve(project) {
+ this.reflections.forEach((reflection) => {
+ if (reflection.implementedBy) {
+ reflection.implementedBy.sort((a, b) => {
+ if (a.name === b.name) {
+ return 0;
+ }
+ return a.name > b.name ? 1 : -1;
+ });
+ }
+ let root;
+ let hierarchy;
+ function push(types) {
+ const level = { types: types };
+ if (hierarchy) {
+ hierarchy.next = level;
+ hierarchy = level;
+ }
+ else {
+ root = hierarchy = level;
+ }
+ }
+ if (reflection.extendedTypes) {
+ push(reflection.extendedTypes);
+ }
+ push([
+ types_1.ReferenceType.createResolvedReference(reflection.name, reflection, project),
+ ]);
+ hierarchy.isTarget = true;
+ if (reflection.extendedBy) {
+ push(reflection.extendedBy);
+ }
+ reflection.typeHierarchy = root;
+ });
+ }
+};
+exports.TypePlugin = TypePlugin = __decorate([
+ (0, components_1.Component)({ name: "type" })
+], TypePlugin);
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/index.d.ts b/node_modules/typedoc/dist/lib/converter/plugins/index.d.ts
new file mode 100644
index 0000000..29564d1
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/index.d.ts
@@ -0,0 +1,9 @@
+export { CategoryPlugin } from "./CategoryPlugin";
+export { CommentPlugin } from "./CommentPlugin";
+export { GroupPlugin } from "./GroupPlugin";
+export { ImplementsPlugin } from "./ImplementsPlugin";
+export { InheritDocPlugin } from "./InheritDocPlugin";
+export { LinkResolverPlugin } from "./LinkResolverPlugin";
+export { PackagePlugin } from "./PackagePlugin";
+export { SourcePlugin } from "./SourcePlugin";
+export { TypePlugin } from "./TypePlugin";
diff --git a/node_modules/typedoc/dist/lib/converter/plugins/index.js b/node_modules/typedoc/dist/lib/converter/plugins/index.js
new file mode 100644
index 0000000..e01c6d5
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/plugins/index.js
@@ -0,0 +1,21 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.TypePlugin = exports.SourcePlugin = exports.PackagePlugin = exports.LinkResolverPlugin = exports.InheritDocPlugin = exports.ImplementsPlugin = exports.GroupPlugin = exports.CommentPlugin = exports.CategoryPlugin = void 0;
+var CategoryPlugin_1 = require("./CategoryPlugin");
+Object.defineProperty(exports, "CategoryPlugin", { enumerable: true, get: function () { return CategoryPlugin_1.CategoryPlugin; } });
+var CommentPlugin_1 = require("./CommentPlugin");
+Object.defineProperty(exports, "CommentPlugin", { enumerable: true, get: function () { return CommentPlugin_1.CommentPlugin; } });
+var GroupPlugin_1 = require("./GroupPlugin");
+Object.defineProperty(exports, "GroupPlugin", { enumerable: true, get: function () { return GroupPlugin_1.GroupPlugin; } });
+var ImplementsPlugin_1 = require("./ImplementsPlugin");
+Object.defineProperty(exports, "ImplementsPlugin", { enumerable: true, get: function () { return ImplementsPlugin_1.ImplementsPlugin; } });
+var InheritDocPlugin_1 = require("./InheritDocPlugin");
+Object.defineProperty(exports, "InheritDocPlugin", { enumerable: true, get: function () { return InheritDocPlugin_1.InheritDocPlugin; } });
+var LinkResolverPlugin_1 = require("./LinkResolverPlugin");
+Object.defineProperty(exports, "LinkResolverPlugin", { enumerable: true, get: function () { return LinkResolverPlugin_1.LinkResolverPlugin; } });
+var PackagePlugin_1 = require("./PackagePlugin");
+Object.defineProperty(exports, "PackagePlugin", { enumerable: true, get: function () { return PackagePlugin_1.PackagePlugin; } });
+var SourcePlugin_1 = require("./SourcePlugin");
+Object.defineProperty(exports, "SourcePlugin", { enumerable: true, get: function () { return SourcePlugin_1.SourcePlugin; } });
+var TypePlugin_1 = require("./TypePlugin");
+Object.defineProperty(exports, "TypePlugin", { enumerable: true, get: function () { return TypePlugin_1.TypePlugin; } });
diff --git a/node_modules/typedoc/dist/lib/converter/symbols.d.ts b/node_modules/typedoc/dist/lib/converter/symbols.d.ts
new file mode 100644
index 0000000..e9100cf
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/symbols.d.ts
@@ -0,0 +1,3 @@
+import ts from "typescript";
+import type { Context } from "./context";
+export declare function convertSymbol(context: Context, symbol: ts.Symbol, exportSymbol?: ts.Symbol): void;
diff --git a/node_modules/typedoc/dist/lib/converter/symbols.js b/node_modules/typedoc/dist/lib/converter/symbols.js
new file mode 100644
index 0000000..02e253e
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/symbols.js
@@ -0,0 +1,602 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.convertSymbol = void 0;
+const assert_1 = __importDefault(require("assert"));
+const typescript_1 = __importDefault(require("typescript"));
+const models_1 = require("../models");
+const enum_1 = require("../utils/enum");
+const convert_expression_1 = require("./convert-expression");
+const index_signature_1 = require("./factories/index-signature");
+const signature_1 = require("./factories/signature");
+const jsdoc_1 = require("./jsdoc");
+const nodes_1 = require("./utils/nodes");
+const reflections_1 = require("./utils/reflections");
+const symbolConverters = {
+ [typescript_1.default.SymbolFlags.RegularEnum]: convertEnum,
+ [typescript_1.default.SymbolFlags.ConstEnum]: convertEnum,
+ [typescript_1.default.SymbolFlags.EnumMember]: convertEnumMember,
+ [typescript_1.default.SymbolFlags.ValueModule]: convertNamespace,
+ [typescript_1.default.SymbolFlags.NamespaceModule]: convertNamespace,
+ [typescript_1.default.SymbolFlags.TypeAlias]: convertTypeAlias,
+ [typescript_1.default.SymbolFlags.Function]: convertFunctionOrMethod,
+ [typescript_1.default.SymbolFlags.Method]: convertFunctionOrMethod,
+ [typescript_1.default.SymbolFlags.Interface]: convertClassOrInterface,
+ [typescript_1.default.SymbolFlags.Property]: convertProperty,
+ [typescript_1.default.SymbolFlags.Class]: convertClassOrInterface,
+ [typescript_1.default.SymbolFlags.Constructor]: convertConstructor,
+ [typescript_1.default.SymbolFlags.Alias]: convertAlias,
+ [typescript_1.default.SymbolFlags.BlockScopedVariable]: convertVariable,
+ [typescript_1.default.SymbolFlags.FunctionScopedVariable]: convertVariable,
+ [typescript_1.default.SymbolFlags.ExportValue]: convertVariable,
+ [typescript_1.default.SymbolFlags.GetAccessor]: convertAccessor,
+ [typescript_1.default.SymbolFlags.SetAccessor]: convertAccessor,
+};
+const allConverterFlags = Object.keys(symbolConverters).reduce((v, k) => v | +k, 0);
+// This is kind of a hack, born of resolving references by symbols instead
+// of by source location.
+const conversionOrder = [
+ // Do enums before namespaces so that @hidden on a namespace
+ // merged with an enum works properly.
+ typescript_1.default.SymbolFlags.RegularEnum,
+ typescript_1.default.SymbolFlags.ConstEnum,
+ typescript_1.default.SymbolFlags.EnumMember,
+ // Before type alias
+ typescript_1.default.SymbolFlags.BlockScopedVariable,
+ typescript_1.default.SymbolFlags.FunctionScopedVariable,
+ typescript_1.default.SymbolFlags.ExportValue,
+ typescript_1.default.SymbolFlags.TypeAlias,
+ typescript_1.default.SymbolFlags.Function,
+ typescript_1.default.SymbolFlags.Method,
+ typescript_1.default.SymbolFlags.Interface,
+ typescript_1.default.SymbolFlags.Property,
+ typescript_1.default.SymbolFlags.Class,
+ typescript_1.default.SymbolFlags.Constructor,
+ typescript_1.default.SymbolFlags.Alias,
+ typescript_1.default.SymbolFlags.GetAccessor,
+ typescript_1.default.SymbolFlags.SetAccessor,
+ typescript_1.default.SymbolFlags.ValueModule,
+ typescript_1.default.SymbolFlags.NamespaceModule,
+];
+// Sanity check, if this fails a dev messed up.
+for (const key of Object.keys(symbolConverters)) {
+ if (!Number.isInteger(Math.log2(+key))) {
+ throw new Error(`Symbol converter for key ${typescript_1.default.SymbolFlags[+key]} does not specify a valid flag value.`);
+ }
+ if (!conversionOrder.includes(+key)) {
+ throw new Error(`Symbol converter for key ${typescript_1.default.SymbolFlags[+key]} is not specified in conversionOrder`);
+ }
+}
+if (conversionOrder.reduce((a, b) => a | b, 0) !== allConverterFlags) {
+ throw new Error("conversionOrder contains a symbol flag that converters do not.");
+}
+function convertSymbol(context, symbol, exportSymbol) {
+ if (context.shouldIgnore(symbol)) {
+ return;
+ }
+ // This check can catch symbols which ought to be documented as references
+ // but aren't aliased symbols because `export *` was used.
+ const previous = context.project.getReflectionFromSymbol(symbol);
+ if (previous &&
+ previous.parent?.kindOf(models_1.ReflectionKind.SomeModule | models_1.ReflectionKind.Project)) {
+ createAlias(previous, context, symbol, exportSymbol);
+ return;
+ }
+ let flags = (0, enum_1.removeFlag)(symbol.flags, typescript_1.default.SymbolFlags.Transient |
+ typescript_1.default.SymbolFlags.Assignment |
+ typescript_1.default.SymbolFlags.Optional |
+ typescript_1.default.SymbolFlags.Prototype);
+ // Declaration merging - the only type (excluding enum/enum, ns/ns, etc)
+ // that TD supports is merging a class and interface. All others are
+ // represented as multiple reflections
+ if ((0, enum_1.hasAllFlags)(symbol.flags, typescript_1.default.SymbolFlags.Class)) {
+ flags = (0, enum_1.removeFlag)(flags, typescript_1.default.SymbolFlags.Interface | typescript_1.default.SymbolFlags.Function);
+ }
+ // Kind of declaration merging... we treat this as a property with get/set signatures.
+ if ((0, enum_1.hasAllFlags)(symbol.flags, typescript_1.default.SymbolFlags.GetAccessor)) {
+ flags = (0, enum_1.removeFlag)(flags, typescript_1.default.SymbolFlags.SetAccessor);
+ }
+ if ((0, enum_1.hasAllFlags)(symbol.flags, typescript_1.default.SymbolFlags.NamespaceModule)) {
+ // This might be here if a namespace is declared several times.
+ flags = (0, enum_1.removeFlag)(flags, typescript_1.default.SymbolFlags.ValueModule);
+ }
+ if ((0, enum_1.hasAnyFlag)(symbol.flags, typescript_1.default.SymbolFlags.Method |
+ typescript_1.default.SymbolFlags.Interface |
+ typescript_1.default.SymbolFlags.Class |
+ typescript_1.default.SymbolFlags.Variable)) {
+ // This happens when someone declares an object with methods:
+ // { methodProperty() {} }
+ flags = (0, enum_1.removeFlag)(flags, typescript_1.default.SymbolFlags.Property);
+ }
+ // A default exported function with no associated variable is a property, but
+ // we should really convert it as a variable for documentation purposes
+ // export default () => {}
+ // export default 123
+ if (flags === typescript_1.default.SymbolFlags.Property &&
+ symbol.name === "default" &&
+ context.scope.kindOf(models_1.ReflectionKind.Module | models_1.ReflectionKind.Project)) {
+ flags = typescript_1.default.SymbolFlags.BlockScopedVariable;
+ }
+ for (const flag of (0, enum_1.getEnumFlags)(flags ^ allConverterFlags)) {
+ if (!(flag & allConverterFlags)) {
+ context.logger.verbose(`Missing converter for symbol: ${symbol.name} with flag ${typescript_1.default.SymbolFlags[flag]}`);
+ }
+ }
+ // Note: This method does not allow skipping earlier converters.
+ // For now, this is fine... might not be flexible enough in the future.
+ let skip = 0;
+ for (const flag of conversionOrder) {
+ if (!(flag & flags))
+ continue;
+ if (skip & flag)
+ continue;
+ skip |= symbolConverters[flag]?.(context, symbol, exportSymbol) || 0;
+ }
+}
+exports.convertSymbol = convertSymbol;
+function convertSymbols(context, symbols) {
+ for (const symbol of symbols) {
+ convertSymbol(context, symbol);
+ }
+}
+function convertEnum(context, symbol, exportSymbol) {
+ const reflection = context.createDeclarationReflection(models_1.ReflectionKind.Enum, symbol, exportSymbol);
+ if (symbol.flags & typescript_1.default.SymbolFlags.ConstEnum) {
+ reflection.setFlag(models_1.ReflectionFlag.Const);
+ }
+ context.finalizeDeclarationReflection(reflection);
+ convertSymbols(context.withScope(reflection), context.checker
+ .getExportsOfModule(symbol)
+ .filter((s) => s.flags & typescript_1.default.SymbolFlags.EnumMember));
+}
+function convertEnumMember(context, symbol, exportSymbol) {
+ const reflection = context.createDeclarationReflection(models_1.ReflectionKind.EnumMember, symbol, exportSymbol);
+ const defaultValue = context.checker.getConstantValue(symbol.getDeclarations()[0]);
+ if (defaultValue !== undefined) {
+ reflection.type = new models_1.LiteralType(defaultValue);
+ }
+ else {
+ // We know this has to be a number, because computed values aren't allowed
+ // in string enums, so otherwise we would have to have the constant value
+ reflection.type = new models_1.IntrinsicType("number");
+ }
+ context.finalizeDeclarationReflection(reflection);
+}
+function convertNamespace(context, symbol, exportSymbol) {
+ let exportFlags = typescript_1.default.SymbolFlags.ModuleMember;
+ // This can happen in JS land where "class" functions get tagged as a namespace too
+ if (symbol
+ .getDeclarations()
+ ?.some((d) => typescript_1.default.isModuleDeclaration(d) || typescript_1.default.isSourceFile(d)) !==
+ true) {
+ exportFlags = typescript_1.default.SymbolFlags.ClassMember;
+ if ((0, enum_1.hasAnyFlag)(symbol.flags, typescript_1.default.SymbolFlags.Class)) {
+ return;
+ }
+ }
+ const reflection = context.createDeclarationReflection(models_1.ReflectionKind.Namespace, symbol, exportSymbol);
+ context.finalizeDeclarationReflection(reflection);
+ convertSymbols(context.withScope(reflection), context.checker
+ .getExportsOfModule(symbol)
+ .filter((s) => s.flags & exportFlags));
+}
+function convertTypeAlias(context, symbol, exportSymbol) {
+ const declaration = symbol
+ ?.getDeclarations()
+ ?.find((d) => typescript_1.default.isTypeAliasDeclaration(d) ||
+ typescript_1.default.isJSDocTypedefTag(d) ||
+ typescript_1.default.isJSDocCallbackTag(d) ||
+ typescript_1.default.isJSDocEnumTag(d));
+ (0, assert_1.default)(declaration);
+ if (typescript_1.default.isTypeAliasDeclaration(declaration)) {
+ if (context
+ .getComment(symbol, models_1.ReflectionKind.TypeAlias)
+ ?.hasModifier("@interface")) {
+ return convertTypeAliasAsInterface(context, symbol, exportSymbol, declaration);
+ }
+ const reflection = context.createDeclarationReflection(models_1.ReflectionKind.TypeAlias, symbol, exportSymbol);
+ reflection.type = context.converter.convertType(context.withScope(reflection), declaration.type);
+ context.finalizeDeclarationReflection(reflection);
+ // Do this after finalization so that the CommentPlugin can get @typeParam tags
+ // from the parent comment. Ugly, but works for now. Should be cleaned up eventually.
+ reflection.typeParameters = declaration.typeParameters?.map((param) => (0, signature_1.createTypeParamReflection)(param, context.withScope(reflection)));
+ }
+ else if (typescript_1.default.isJSDocTypedefTag(declaration) ||
+ typescript_1.default.isJSDocEnumTag(declaration)) {
+ (0, jsdoc_1.convertJsDocAlias)(context, symbol, declaration, exportSymbol);
+ }
+ else {
+ (0, jsdoc_1.convertJsDocCallback)(context, symbol, declaration, exportSymbol);
+ }
+}
+function convertTypeAliasAsInterface(context, symbol, exportSymbol, declaration) {
+ const reflection = context.createDeclarationReflection(models_1.ReflectionKind.Interface, symbol, exportSymbol);
+ context.finalizeDeclarationReflection(reflection);
+ const rc = context.withScope(reflection);
+ const type = context.checker.getTypeAtLocation(declaration);
+ // Interfaces have properties
+ convertSymbols(rc, type.getProperties());
+ // And type arguments
+ if (declaration.typeParameters) {
+ reflection.typeParameters = declaration.typeParameters.map((param) => {
+ const declaration = param.symbol?.declarations?.[0];
+ (0, assert_1.default)(declaration && typescript_1.default.isTypeParameterDeclaration(declaration));
+ return (0, signature_1.createTypeParamReflection)(declaration, rc);
+ });
+ }
+ // And maybe call signatures
+ context.checker
+ .getSignaturesOfType(type, typescript_1.default.SignatureKind.Call)
+ .forEach((sig) => (0, signature_1.createSignature)(rc, models_1.ReflectionKind.CallSignature, sig, symbol));
+ // And maybe constructor signatures
+ convertConstructSignatures(rc, symbol);
+ // And finally, index signatures
+ (0, index_signature_1.convertIndexSignature)(rc, symbol);
+}
+function convertFunctionOrMethod(context, symbol, exportSymbol) {
+ // Can't just check method flag because this might be called for properties as well
+ // This will *NOT* be called for variables that look like functions, they need a special case.
+ const isMethod = !!(symbol.flags &
+ (typescript_1.default.SymbolFlags.Property | typescript_1.default.SymbolFlags.Method));
+ const declarations = symbol.getDeclarations()?.filter(typescript_1.default.isFunctionLike) ?? [];
+ // Don't do anything if we inherited this method and it is private.
+ if (isMethod &&
+ isInherited(context, symbol) &&
+ declarations.length > 0 &&
+ (0, enum_1.hasAllFlags)(typescript_1.default.getCombinedModifierFlags(declarations[0]), typescript_1.default.ModifierFlags.Private)) {
+ return;
+ }
+ const locationDeclaration = symbol.parent
+ ?.getDeclarations()
+ ?.find((d) => typescript_1.default.isClassDeclaration(d) || typescript_1.default.isInterfaceDeclaration(d)) ??
+ symbol.parent?.getDeclarations()?.[0]?.getSourceFile() ??
+ symbol.getDeclarations()?.[0]?.getSourceFile();
+ (0, assert_1.default)(locationDeclaration, "Missing declaration context");
+ const type = context.checker.getTypeOfSymbolAtLocation(symbol, locationDeclaration);
+ // Need to get the non nullable type because interface methods might be declared
+ // with a question token. See GH1490.
+ const signatures = type.getNonNullableType().getCallSignatures();
+ const reflection = context.createDeclarationReflection(context.scope.kindOf(models_1.ReflectionKind.ClassOrInterface |
+ models_1.ReflectionKind.VariableOrProperty |
+ models_1.ReflectionKind.TypeLiteral)
+ ? models_1.ReflectionKind.Method
+ : models_1.ReflectionKind.Function, symbol, exportSymbol, void 0);
+ if (symbol.declarations?.length && isMethod) {
+ // All method signatures must have the same modifier flags.
+ setModifiers(symbol, symbol.declarations[0], reflection);
+ }
+ context.finalizeDeclarationReflection(reflection);
+ const scope = context.withScope(reflection);
+ // Can't use zip here. We might have less declarations than signatures
+ // or less signatures than declarations.
+ for (const sig of signatures) {
+ (0, signature_1.createSignature)(scope, models_1.ReflectionKind.CallSignature, sig, symbol);
+ }
+}
+// getDeclaredTypeOfSymbol gets the INSTANCE type
+// getTypeOfSymbolAtLocation gets the STATIC type
+function convertClassOrInterface(context, symbol, exportSymbol) {
+ const reflection = context.createDeclarationReflection(typescript_1.default.SymbolFlags.Class & symbol.flags
+ ? models_1.ReflectionKind.Class
+ : models_1.ReflectionKind.Interface, symbol, exportSymbol, void 0);
+ const classDeclaration = symbol
+ .getDeclarations()
+ ?.find((d) => typescript_1.default.isClassDeclaration(d) || typescript_1.default.isFunctionDeclaration(d));
+ if (classDeclaration)
+ setModifiers(symbol, classDeclaration, reflection);
+ const reflectionContext = context.withScope(reflection);
+ reflectionContext.convertingClassOrInterface = true;
+ const instanceType = context.checker.getDeclaredTypeOfSymbol(symbol);
+ (0, assert_1.default)(instanceType.isClassOrInterface());
+ // We might do some inheritance - do this first so that it's set when converting properties
+ const declarations = symbol
+ .getDeclarations()
+ ?.filter((d) => typescript_1.default.isInterfaceDeclaration(d) || typescript_1.default.isClassDeclaration(d)) ?? [];
+ const extendedTypes = (0, nodes_1.getHeritageTypes)(declarations, typescript_1.default.SyntaxKind.ExtendsKeyword).map((t) => context.converter.convertType(reflectionContext, t));
+ if (extendedTypes.length) {
+ reflection.extendedTypes = extendedTypes;
+ }
+ const implementedTypes = (0, nodes_1.getHeritageTypes)(declarations, typescript_1.default.SyntaxKind.ImplementsKeyword).map((t) => context.converter.convertType(reflectionContext, t));
+ if (implementedTypes.length) {
+ reflection.implementedTypes = implementedTypes;
+ }
+ context.finalizeDeclarationReflection(reflection);
+ if (classDeclaration) {
+ // Classes can have static props
+ const staticType = context.checker.getTypeOfSymbolAtLocation(symbol, classDeclaration);
+ reflectionContext.shouldBeStatic = true;
+ for (const prop of context.checker.getPropertiesOfType(staticType)) {
+ // Don't convert namespace members, or the prototype here.
+ if (prop.flags &
+ (typescript_1.default.SymbolFlags.ModuleMember | typescript_1.default.SymbolFlags.Prototype))
+ continue;
+ convertSymbol(reflectionContext, prop);
+ }
+ reflectionContext.shouldBeStatic = false;
+ const ctors = staticType.getConstructSignatures();
+ const constructMember = reflectionContext.createDeclarationReflection(models_1.ReflectionKind.Constructor, ctors?.[0]?.declaration?.symbol, void 0, "constructor");
+ // Modifiers are the same for all constructors
+ if (ctors.length && ctors[0].declaration) {
+ setModifiers(symbol, ctors[0].declaration, constructMember);
+ }
+ context.finalizeDeclarationReflection(constructMember);
+ const constructContext = reflectionContext.withScope(constructMember);
+ ctors.forEach((sig) => {
+ (0, signature_1.createSignature)(constructContext, models_1.ReflectionKind.ConstructorSignature, sig, symbol);
+ });
+ }
+ // Classes/interfaces usually just have properties...
+ convertSymbols(reflectionContext, context.checker.getPropertiesOfType(instanceType));
+ // And type arguments
+ if (instanceType.typeParameters) {
+ reflection.typeParameters = instanceType.typeParameters.map((param) => {
+ const declaration = param.symbol?.declarations?.[0];
+ (0, assert_1.default)(declaration && typescript_1.default.isTypeParameterDeclaration(declaration));
+ return (0, signature_1.createTypeParamReflection)(declaration, reflectionContext);
+ });
+ }
+ // Interfaces might also have call signatures
+ // Classes might too, because of declaration merging
+ context.checker
+ .getSignaturesOfType(instanceType, typescript_1.default.SignatureKind.Call)
+ .forEach((sig) => (0, signature_1.createSignature)(reflectionContext, models_1.ReflectionKind.CallSignature, sig, symbol));
+ // We also might have constructor signatures
+ // This is potentially a problem with classes having multiple "constructor" members...
+ // but nobody has complained yet.
+ convertConstructSignatures(reflectionContext, symbol);
+ // And finally, index signatures
+ (0, index_signature_1.convertIndexSignature)(reflectionContext, symbol);
+}
+function convertProperty(context, symbol, exportSymbol) {
+ const declarations = symbol.getDeclarations() ?? [];
+ // Don't do anything if we inherited this property and it is private.
+ if (isInherited(context, symbol) &&
+ declarations.length > 0 &&
+ (0, enum_1.hasAllFlags)(typescript_1.default.getCombinedModifierFlags(declarations[0]), typescript_1.default.ModifierFlags.Private)) {
+ return;
+ }
+ // Special case: We pretend properties are methods if they look like methods.
+ // This happens with mixins / weird inheritance.
+ if (declarations.length &&
+ declarations.every((decl) => typescript_1.default.isMethodSignature(decl) || typescript_1.default.isMethodDeclaration(decl))) {
+ return convertFunctionOrMethod(context, symbol, exportSymbol);
+ }
+ if (declarations.length === 1) {
+ const declaration = declarations[0];
+ // Special case: "arrow methods" should be treated as methods.
+ if (typescript_1.default.isPropertyDeclaration(declaration) &&
+ !declaration.type &&
+ declaration.initializer &&
+ typescript_1.default.isArrowFunction(declaration.initializer)) {
+ return convertArrowAsMethod(context, symbol, declaration.initializer, exportSymbol);
+ }
+ }
+ const reflection = context.createDeclarationReflection(context.scope.kindOf(models_1.ReflectionKind.Namespace)
+ ? models_1.ReflectionKind.Variable
+ : models_1.ReflectionKind.Property, symbol, exportSymbol);
+ reflection.conversionFlags |= models_1.ConversionFlags.VariableOrPropertySource;
+ const declaration = symbol.getDeclarations()?.[0];
+ let parameterType;
+ if (declaration &&
+ (typescript_1.default.isPropertyDeclaration(declaration) ||
+ typescript_1.default.isPropertySignature(declaration) ||
+ typescript_1.default.isParameter(declaration) ||
+ typescript_1.default.isPropertyAccessExpression(declaration) ||
+ typescript_1.default.isPropertyAssignment(declaration))) {
+ if (!typescript_1.default.isPropertyAccessExpression(declaration) &&
+ !typescript_1.default.isPropertyAssignment(declaration)) {
+ parameterType = declaration.type;
+ }
+ setModifiers(symbol, declaration, reflection);
+ }
+ reflection.defaultValue = declaration && (0, convert_expression_1.convertDefaultValue)(declaration);
+ reflection.type = context.converter.convertType(context.withScope(reflection), (context.convertingTypeNode ? parameterType : void 0) ??
+ context.checker.getTypeOfSymbol(symbol));
+ if (reflection.flags.isOptional) {
+ reflection.type = (0, reflections_1.removeUndefined)(reflection.type);
+ }
+ context.finalizeDeclarationReflection(reflection);
+}
+function convertArrowAsMethod(context, symbol, arrow, exportSymbol) {
+ const reflection = context.createDeclarationReflection(models_1.ReflectionKind.Method, symbol, exportSymbol, void 0);
+ setModifiers(symbol, arrow.parent, reflection);
+ context.finalizeDeclarationReflection(reflection);
+ const rc = context.withScope(reflection);
+ const signature = context.checker.getSignatureFromDeclaration(arrow);
+ (0, assert_1.default)(signature);
+ (0, signature_1.createSignature)(rc, models_1.ReflectionKind.CallSignature, signature, symbol, arrow);
+}
+function convertConstructor(context, symbol) {
+ const reflection = context.createDeclarationReflection(models_1.ReflectionKind.Constructor, symbol, void 0, "constructor");
+ context.finalizeDeclarationReflection(reflection);
+ const reflectionContext = context.withScope(reflection);
+ const declarations = symbol.getDeclarations()?.filter(typescript_1.default.isConstructorDeclaration) ?? [];
+ const signatures = declarations.map((decl) => {
+ const sig = context.checker.getSignatureFromDeclaration(decl);
+ (0, assert_1.default)(sig);
+ return sig;
+ });
+ for (const sig of signatures) {
+ (0, signature_1.createSignature)(reflectionContext, models_1.ReflectionKind.ConstructorSignature, sig, symbol);
+ }
+}
+function convertConstructSignatures(context, symbol) {
+ const type = context.checker.getDeclaredTypeOfSymbol(symbol);
+ // These get added as a "constructor" member of this interface. This is a problem... but nobody
+ // has complained yet. We really ought to have a constructSignatures property on the reflection instead.
+ const constructSignatures = context.checker.getSignaturesOfType(type, typescript_1.default.SignatureKind.Construct);
+ if (constructSignatures.length) {
+ const constructMember = new models_1.DeclarationReflection("constructor", models_1.ReflectionKind.Constructor, context.scope);
+ context.postReflectionCreation(constructMember, symbol, void 0);
+ context.finalizeDeclarationReflection(constructMember);
+ const constructContext = context.withScope(constructMember);
+ constructSignatures.forEach((sig) => (0, signature_1.createSignature)(constructContext, models_1.ReflectionKind.ConstructorSignature, sig, symbol));
+ }
+}
+function convertAlias(context, symbol, exportSymbol) {
+ const reflection = context.project.getReflectionFromSymbol(context.resolveAliasedSymbol(symbol));
+ if (!reflection) {
+ // We don't have this, convert it.
+ convertSymbol(context, context.resolveAliasedSymbol(symbol), exportSymbol ?? symbol);
+ }
+ else {
+ createAlias(reflection, context, symbol, exportSymbol);
+ }
+}
+function createAlias(target, context, symbol, exportSymbol) {
+ if (context.converter.excludeReferences)
+ return;
+ // We already have this. Create a reference.
+ const ref = new models_1.ReferenceReflection(exportSymbol?.name ?? symbol.name, target, context.scope);
+ context.postReflectionCreation(ref, symbol, exportSymbol);
+ context.finalizeDeclarationReflection(ref);
+}
+function convertVariable(context, symbol, exportSymbol) {
+ const declaration = symbol.getDeclarations()?.[0];
+ (0, assert_1.default)(declaration);
+ const comment = context.getComment(symbol, models_1.ReflectionKind.Variable);
+ const type = context.checker.getTypeOfSymbolAtLocation(symbol, declaration);
+ if (isEnumLike(context.checker, type, declaration) &&
+ comment?.hasModifier("@enum")) {
+ return convertVariableAsEnum(context, symbol, exportSymbol);
+ }
+ if (comment?.hasModifier("@namespace")) {
+ return convertVariableAsNamespace(context, symbol, exportSymbol);
+ }
+ if (type.getCallSignatures().length) {
+ return convertVariableAsFunction(context, symbol, exportSymbol);
+ }
+ const reflection = context.createDeclarationReflection(models_1.ReflectionKind.Variable, symbol, exportSymbol);
+ let typeNode;
+ if (typescript_1.default.isVariableDeclaration(declaration)) {
+ // Otherwise we might have destructuring
+ typeNode = declaration.type;
+ }
+ reflection.type = context.converter.convertType(context.withScope(reflection), typeNode ?? type);
+ setModifiers(symbol, declaration, reflection);
+ reflection.defaultValue = (0, convert_expression_1.convertDefaultValue)(declaration);
+ context.finalizeDeclarationReflection(reflection);
+ return typescript_1.default.SymbolFlags.Property;
+}
+function isEnumLike(checker, type, location) {
+ if (!(0, enum_1.hasAllFlags)(type.flags, typescript_1.default.TypeFlags.Object)) {
+ return false;
+ }
+ return type.getProperties().every((prop) => {
+ const propType = checker.getTypeOfSymbolAtLocation(prop, location);
+ return isValidEnumProperty(propType);
+ });
+}
+function isValidEnumProperty(type) {
+ return (0, enum_1.hasAnyFlag)(type.flags, typescript_1.default.TypeFlags.NumberLike | typescript_1.default.TypeFlags.StringLike);
+}
+function convertVariableAsEnum(context, symbol, exportSymbol) {
+ const reflection = context.createDeclarationReflection(models_1.ReflectionKind.Enum, symbol, exportSymbol);
+ context.finalizeDeclarationReflection(reflection);
+ const rc = context.withScope(reflection);
+ const declaration = symbol.declarations[0];
+ const type = context.checker.getTypeAtLocation(declaration);
+ for (const prop of type.getProperties()) {
+ const reflection = rc.createDeclarationReflection(models_1.ReflectionKind.EnumMember, prop, void 0);
+ const propType = context.checker.getTypeOfSymbolAtLocation(prop, declaration);
+ reflection.type = context.converter.convertType(context, propType);
+ rc.finalizeDeclarationReflection(reflection);
+ }
+ // Skip converting the type alias, if there is one
+ return typescript_1.default.SymbolFlags.TypeAlias;
+}
+function convertVariableAsNamespace(context, symbol, exportSymbol) {
+ const reflection = context.createDeclarationReflection(models_1.ReflectionKind.Namespace, symbol, exportSymbol);
+ context.finalizeDeclarationReflection(reflection);
+ const rc = context.withScope(reflection);
+ const declaration = symbol.declarations[0];
+ const type = context.checker.getTypeAtLocation(declaration);
+ convertSymbols(rc, type.getProperties());
+ return typescript_1.default.SymbolFlags.Property;
+}
+function convertVariableAsFunction(context, symbol, exportSymbol) {
+ const declaration = symbol
+ .getDeclarations()
+ ?.find(typescript_1.default.isVariableDeclaration);
+ const accessDeclaration = declaration ?? symbol.valueDeclaration;
+ const type = accessDeclaration
+ ? context.checker.getTypeOfSymbolAtLocation(symbol, accessDeclaration)
+ : context.checker.getDeclaredTypeOfSymbol(symbol);
+ const reflection = context.createDeclarationReflection(models_1.ReflectionKind.Function, symbol, exportSymbol);
+ setModifiers(symbol, accessDeclaration, reflection);
+ reflection.conversionFlags |= models_1.ConversionFlags.VariableOrPropertySource;
+ context.finalizeDeclarationReflection(reflection);
+ const reflectionContext = context.withScope(reflection);
+ reflection.signatures ?? (reflection.signatures = []);
+ for (const signature of type.getCallSignatures()) {
+ (0, signature_1.createSignature)(reflectionContext, models_1.ReflectionKind.CallSignature, signature, symbol);
+ }
+ return typescript_1.default.SymbolFlags.Property;
+}
+function convertAccessor(context, symbol, exportSymbol) {
+ const reflection = context.createDeclarationReflection(models_1.ReflectionKind.Accessor, symbol, exportSymbol);
+ const rc = context.withScope(reflection);
+ const declaration = symbol.getDeclarations()?.[0];
+ if (declaration) {
+ setModifiers(symbol, declaration, reflection);
+ }
+ context.finalizeDeclarationReflection(reflection);
+ const getDeclaration = symbol.getDeclarations()?.find(typescript_1.default.isGetAccessor);
+ if (getDeclaration) {
+ const signature = context.checker.getSignatureFromDeclaration(getDeclaration);
+ if (signature) {
+ (0, signature_1.createSignature)(rc, models_1.ReflectionKind.GetSignature, signature, symbol, getDeclaration);
+ }
+ }
+ const setDeclaration = symbol.getDeclarations()?.find(typescript_1.default.isSetAccessor);
+ if (setDeclaration) {
+ const signature = context.checker.getSignatureFromDeclaration(setDeclaration);
+ if (signature) {
+ (0, signature_1.createSignature)(rc, models_1.ReflectionKind.SetSignature, signature, symbol, setDeclaration);
+ }
+ }
+}
+function isInherited(context, symbol) {
+ const parentSymbol = context.project.getSymbolFromReflection(context.scope);
+ (0, assert_1.default)(parentSymbol, `No parent symbol found for ${symbol.name} in ${context.scope.name}`);
+ const parents = parentSymbol.declarations?.slice() || [];
+ const constructorDecls = parents.flatMap((parent) => typescript_1.default.isClassDeclaration(parent)
+ ? parent.members.filter(typescript_1.default.isConstructorDeclaration)
+ : []);
+ parents.push(...constructorDecls);
+ return (parents.some((d) => symbol.getDeclarations()?.some((d2) => d2.parent === d)) === false);
+}
+function setModifiers(symbol, declaration, reflection) {
+ if (!declaration) {
+ return;
+ }
+ const modifiers = typescript_1.default.getCombinedModifierFlags(declaration);
+ if (typescript_1.default.isMethodDeclaration(declaration) ||
+ typescript_1.default.isPropertyDeclaration(declaration) ||
+ typescript_1.default.isAccessor(declaration)) {
+ if (typescript_1.default.isPrivateIdentifier(declaration.name)) {
+ reflection.setFlag(models_1.ReflectionFlag.Private);
+ }
+ }
+ if ((0, enum_1.hasAllFlags)(modifiers, typescript_1.default.ModifierFlags.Private)) {
+ reflection.setFlag(models_1.ReflectionFlag.Private);
+ }
+ if ((0, enum_1.hasAllFlags)(modifiers, typescript_1.default.ModifierFlags.Protected)) {
+ reflection.setFlag(models_1.ReflectionFlag.Protected);
+ }
+ if ((0, enum_1.hasAllFlags)(modifiers, typescript_1.default.ModifierFlags.Public)) {
+ reflection.setFlag(models_1.ReflectionFlag.Public);
+ }
+ reflection.setFlag(models_1.ReflectionFlag.Optional, (0, enum_1.hasAllFlags)(symbol.flags, typescript_1.default.SymbolFlags.Optional));
+ reflection.setFlag(models_1.ReflectionFlag.Readonly, (0, enum_1.hasAllFlags)(typescript_1.default.getCheckFlags(symbol), typescript_1.default.CheckFlags.Readonly) ||
+ (0, enum_1.hasAllFlags)(modifiers, typescript_1.default.ModifierFlags.Readonly));
+ reflection.setFlag(models_1.ReflectionFlag.Abstract, (0, enum_1.hasAllFlags)(modifiers, typescript_1.default.ModifierFlags.Abstract));
+ if (reflection.kindOf(models_1.ReflectionKind.Variable) &&
+ (0, enum_1.hasAllFlags)(symbol.flags, typescript_1.default.SymbolFlags.BlockScopedVariable)) {
+ reflection.setFlag(models_1.ReflectionFlag.Const, (0, enum_1.hasAllFlags)(declaration.parent.flags, typescript_1.default.NodeFlags.Const));
+ }
+ // ReflectionFlag.Static happens when constructing the reflection.
+ // We don't have sufficient information here to determine if it ought to be static.
+}
diff --git a/node_modules/typedoc/dist/lib/converter/types.d.ts b/node_modules/typedoc/dist/lib/converter/types.d.ts
new file mode 100644
index 0000000..da946c2
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/types.d.ts
@@ -0,0 +1,10 @@
+import ts from "typescript";
+import { SomeType } from "../models";
+import type { Context } from "./context";
+export interface TypeConverter<TNode extends ts.TypeNode = ts.TypeNode, TType extends ts.Type = ts.Type> {
+ kind: TNode["kind"][];
+ convert(context: Context, node: TNode): SomeType;
+ convertType(context: Context, type: TType, node: TNode): SomeType;
+}
+export declare function loadConverters(): void;
+export declare function convertType(context: Context, typeOrNode: ts.Type | ts.TypeNode | undefined): SomeType;
diff --git a/node_modules/typedoc/dist/lib/converter/types.js b/node_modules/typedoc/dist/lib/converter/types.js
new file mode 100644
index 0000000..0501319
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/types.js
@@ -0,0 +1,683 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.convertType = exports.loadConverters = void 0;
+const assert_1 = __importDefault(require("assert"));
+const typescript_1 = __importDefault(require("typescript"));
+const models_1 = require("../models");
+const ReflectionSymbolId_1 = require("../models/reflections/ReflectionSymbolId");
+const array_1 = require("../utils/array");
+const converter_events_1 = require("./converter-events");
+const index_signature_1 = require("./factories/index-signature");
+const signature_1 = require("./factories/signature");
+const symbols_1 = require("./symbols");
+const nodes_1 = require("./utils/nodes");
+const reflections_1 = require("./utils/reflections");
+const converters = new Map();
+function loadConverters() {
+ if (converters.size)
+ return;
+ for (const actor of [
+ arrayConverter,
+ conditionalConverter,
+ constructorConverter,
+ exprWithTypeArgsConverter,
+ functionTypeConverter,
+ importType,
+ indexedAccessConverter,
+ inferredConverter,
+ intersectionConverter,
+ jsDocVariadicTypeConverter,
+ keywordConverter,
+ optionalConverter,
+ parensConverter,
+ predicateConverter,
+ queryConverter,
+ typeLiteralConverter,
+ referenceConverter,
+ restConverter,
+ namedTupleMemberConverter,
+ mappedConverter,
+ literalTypeConverter,
+ templateLiteralConverter,
+ thisConverter,
+ tupleConverter,
+ typeOperatorConverter,
+ unionConverter,
+ // Only used if skipLibCheck: true
+ jsDocNullableTypeConverter,
+ jsDocNonNullableTypeConverter,
+ ]) {
+ for (const key of actor.kind) {
+ if (key === undefined) {
+ // Might happen if running on an older TS version.
+ continue;
+ }
+ (0, assert_1.default)(!converters.has(key));
+ converters.set(key, actor);
+ }
+ }
+}
+exports.loadConverters = loadConverters;
+// This ought not be necessary, but we need some way to discover recursively
+// typed symbols which do not have type nodes. See the `recursive` symbol in the variables test.
+const seenTypeSymbols = new Set();
+function maybeConvertType(context, typeOrNode) {
+ if (!typeOrNode) {
+ return;
+ }
+ return convertType(context, typeOrNode);
+}
+function convertType(context, typeOrNode) {
+ if (!typeOrNode) {
+ return new models_1.IntrinsicType("any");
+ }
+ loadConverters();
+ if ("kind" in typeOrNode) {
+ const converter = converters.get(typeOrNode.kind);
+ if (converter) {
+ return converter.convert(context, typeOrNode);
+ }
+ return requestBugReport(context, typeOrNode);
+ }
+ // IgnoreErrors is important, without it, we can't assert that we will get a node.
+ const node = context.checker.typeToTypeNode(typeOrNode, void 0, typescript_1.default.NodeBuilderFlags.IgnoreErrors);
+ (0, assert_1.default)(node); // According to the TS source of typeToString, this is a bug if it does not hold.
+ const symbol = typeOrNode.getSymbol();
+ if (symbol) {
+ if (node.kind !== typescript_1.default.SyntaxKind.TypeReference &&
+ node.kind !== typescript_1.default.SyntaxKind.ArrayType &&
+ seenTypeSymbols.has(symbol)) {
+ const typeString = context.checker.typeToString(typeOrNode);
+ context.logger.verbose(`Refusing to recurse when converting type: ${typeString}`);
+ return new models_1.UnknownType(typeString);
+ }
+ seenTypeSymbols.add(symbol);
+ }
+ let converter = converters.get(node.kind);
+ if (converter) {
+ // Hacky fix for #2011, need to find a better way to choose the converter.
+ if (converter === intersectionConverter &&
+ !typeOrNode.isIntersection()) {
+ converter = typeLiteralConverter;
+ }
+ const result = converter.convertType(context, typeOrNode, node);
+ if (symbol)
+ seenTypeSymbols.delete(symbol);
+ return result;
+ }
+ return requestBugReport(context, typeOrNode);
+}
+exports.convertType = convertType;
+const arrayConverter = {
+ kind: [typescript_1.default.SyntaxKind.ArrayType],
+ convert(context, node) {
+ return new models_1.ArrayType(convertType(context, node.elementType));
+ },
+ convertType(context, type) {
+ const params = context.checker.getTypeArguments(type);
+ // This is *almost* always true... except for when this type is in the constraint of a type parameter see GH#1408
+ // assert(params.length === 1);
+ (0, assert_1.default)(params.length > 0);
+ return new models_1.ArrayType(convertType(context, params[0]));
+ },
+};
+const conditionalConverter = {
+ kind: [typescript_1.default.SyntaxKind.ConditionalType],
+ convert(context, node) {
+ return new models_1.ConditionalType(convertType(context, node.checkType), convertType(context, node.extendsType), convertType(context, node.trueType), convertType(context, node.falseType));
+ },
+ convertType(context, type) {
+ return new models_1.ConditionalType(convertType(context, type.checkType), convertType(context, type.extendsType), convertType(context, type.resolvedTrueType), convertType(context, type.resolvedFalseType));
+ },
+};
+const constructorConverter = {
+ kind: [typescript_1.default.SyntaxKind.ConstructorType],
+ convert(context, node) {
+ const symbol = context.getSymbolAtLocation(node) ?? node.symbol;
+ const type = context.getTypeAtLocation(node);
+ if (!symbol || !type) {
+ return new models_1.IntrinsicType("Function");
+ }
+ const reflection = new models_1.DeclarationReflection("__type", models_1.ReflectionKind.Constructor, context.scope);
+ const rc = context.withScope(reflection);
+ rc.convertingTypeNode = true;
+ context.registerReflection(reflection, symbol);
+ context.trigger(converter_events_1.ConverterEvents.CREATE_DECLARATION, reflection);
+ const signature = new models_1.SignatureReflection("__type", models_1.ReflectionKind.ConstructorSignature, reflection);
+ // This is unfortunate... but seems the obvious place to put this with the current
+ // architecture. Ideally, this would be a property on a "ConstructorType"... but that
+ // needs to wait until TypeDoc 0.22 when making other breaking changes.
+ if (node.modifiers?.some((m) => m.kind === typescript_1.default.SyntaxKind.AbstractKeyword)) {
+ signature.setFlag(models_1.ReflectionFlag.Abstract);
+ }
+ context.project.registerSymbolId(signature, new ReflectionSymbolId_1.ReflectionSymbolId(symbol, node));
+ context.registerReflection(signature, void 0);
+ const signatureCtx = rc.withScope(signature);
+ reflection.signatures = [signature];
+ signature.type = convertType(signatureCtx, node.type);
+ signature.parameters = (0, signature_1.convertParameterNodes)(signatureCtx, signature, node.parameters);
+ signature.typeParameters = (0, signature_1.convertTypeParameterNodes)(signatureCtx, node.typeParameters);
+ return new models_1.ReflectionType(reflection);
+ },
+ convertType(context, type) {
+ if (!type.symbol) {
+ return new models_1.IntrinsicType("Function");
+ }
+ const reflection = new models_1.DeclarationReflection("__type", models_1.ReflectionKind.Constructor, context.scope);
+ context.registerReflection(reflection, type.symbol);
+ context.trigger(converter_events_1.ConverterEvents.CREATE_DECLARATION, reflection);
+ (0, signature_1.createSignature)(context.withScope(reflection), models_1.ReflectionKind.ConstructorSignature, type.getConstructSignatures()[0], type.symbol);
+ return new models_1.ReflectionType(reflection);
+ },
+};
+const exprWithTypeArgsConverter = {
+ kind: [typescript_1.default.SyntaxKind.ExpressionWithTypeArguments],
+ convert(context, node) {
+ const targetSymbol = context.getSymbolAtLocation(node.expression);
+ // Mixins... we might not have a symbol here.
+ if (!targetSymbol) {
+ return convertType(context, context.checker.getTypeAtLocation(node));
+ }
+ const parameters = node.typeArguments?.map((type) => convertType(context, type)) ?? [];
+ const ref = models_1.ReferenceType.createSymbolReference(context.resolveAliasedSymbol(targetSymbol), context);
+ ref.typeArguments = parameters;
+ return ref;
+ },
+ convertType: requestBugReport,
+};
+const functionTypeConverter = {
+ kind: [typescript_1.default.SyntaxKind.FunctionType],
+ convert(context, node) {
+ const symbol = context.getSymbolAtLocation(node) ?? node.symbol;
+ const type = context.getTypeAtLocation(node);
+ if (!symbol || !type) {
+ return new models_1.IntrinsicType("Function");
+ }
+ const reflection = new models_1.DeclarationReflection("__type", models_1.ReflectionKind.TypeLiteral, context.scope);
+ const rc = context.withScope(reflection);
+ context.registerReflection(reflection, symbol);
+ context.trigger(converter_events_1.ConverterEvents.CREATE_DECLARATION, reflection);
+ const signature = new models_1.SignatureReflection("__type", models_1.ReflectionKind.CallSignature, reflection);
+ context.project.registerSymbolId(signature, new ReflectionSymbolId_1.ReflectionSymbolId(symbol, node));
+ context.registerReflection(signature, void 0);
+ const signatureCtx = rc.withScope(signature);
+ reflection.signatures = [signature];
+ signature.type = convertType(signatureCtx, node.type);
+ signature.parameters = (0, signature_1.convertParameterNodes)(signatureCtx, signature, node.parameters);
+ signature.typeParameters = (0, signature_1.convertTypeParameterNodes)(signatureCtx, node.typeParameters);
+ return new models_1.ReflectionType(reflection);
+ },
+ convertType(context, type) {
+ if (!type.symbol) {
+ return new models_1.IntrinsicType("Function");
+ }
+ const reflection = new models_1.DeclarationReflection("__type", models_1.ReflectionKind.TypeLiteral, context.scope);
+ context.registerReflection(reflection, type.symbol);
+ context.trigger(converter_events_1.ConverterEvents.CREATE_DECLARATION, reflection);
+ (0, signature_1.createSignature)(context.withScope(reflection), models_1.ReflectionKind.CallSignature, type.getCallSignatures()[0], type.getSymbol());
+ return new models_1.ReflectionType(reflection);
+ },
+};
+const importType = {
+ kind: [typescript_1.default.SyntaxKind.ImportType],
+ convert(context, node) {
+ const name = node.qualifier?.getText() ?? "__module";
+ const symbol = context.checker.getSymbolAtLocation(node);
+ (0, assert_1.default)(symbol, "Missing symbol when converting import type node");
+ return models_1.ReferenceType.createSymbolReference(context.resolveAliasedSymbol(symbol), context, name);
+ },
+ convertType(context, type) {
+ const symbol = type.getSymbol();
+ (0, assert_1.default)(symbol, "Missing symbol when converting import type"); // Should be a compiler error
+ return models_1.ReferenceType.createSymbolReference(context.resolveAliasedSymbol(symbol), context, "__module");
+ },
+};
+const indexedAccessConverter = {
+ kind: [typescript_1.default.SyntaxKind.IndexedAccessType],
+ convert(context, node) {
+ return new models_1.IndexedAccessType(convertType(context, node.objectType), convertType(context, node.indexType));
+ },
+ convertType(context, type) {
+ return new models_1.IndexedAccessType(convertType(context, type.objectType), convertType(context, type.indexType));
+ },
+};
+const inferredConverter = {
+ kind: [typescript_1.default.SyntaxKind.InferType],
+ convert(context, node) {
+ return new models_1.InferredType(node.typeParameter.name.text, maybeConvertType(context, node.typeParameter.constraint));
+ },
+ convertType(context, type) {
+ return new models_1.InferredType(type.symbol.name, maybeConvertType(context, type.getConstraint()));
+ },
+};
+const intersectionConverter = {
+ kind: [typescript_1.default.SyntaxKind.IntersectionType],
+ convert(context, node) {
+ return new models_1.IntersectionType(node.types.map((type) => convertType(context, type)));
+ },
+ convertType(context, type) {
+ return new models_1.IntersectionType(type.types.map((type) => convertType(context, type)));
+ },
+};
+const jsDocVariadicTypeConverter = {
+ kind: [typescript_1.default.SyntaxKind.JSDocVariadicType],
+ convert(context, node) {
+ return new models_1.ArrayType(convertType(context, node.type));
+ },
+ // Should just be an ArrayType
+ convertType: requestBugReport,
+};
+const keywordNames = {
+ [typescript_1.default.SyntaxKind.AnyKeyword]: "any",
+ [typescript_1.default.SyntaxKind.BigIntKeyword]: "bigint",
+ [typescript_1.default.SyntaxKind.BooleanKeyword]: "boolean",
+ [typescript_1.default.SyntaxKind.NeverKeyword]: "never",
+ [typescript_1.default.SyntaxKind.NumberKeyword]: "number",
+ [typescript_1.default.SyntaxKind.ObjectKeyword]: "object",
+ [typescript_1.default.SyntaxKind.StringKeyword]: "string",
+ [typescript_1.default.SyntaxKind.SymbolKeyword]: "symbol",
+ [typescript_1.default.SyntaxKind.UndefinedKeyword]: "undefined",
+ [typescript_1.default.SyntaxKind.UnknownKeyword]: "unknown",
+ [typescript_1.default.SyntaxKind.VoidKeyword]: "void",
+ [typescript_1.default.SyntaxKind.IntrinsicKeyword]: "intrinsic",
+};
+const keywordConverter = {
+ kind: [
+ typescript_1.default.SyntaxKind.AnyKeyword,
+ typescript_1.default.SyntaxKind.BigIntKeyword,
+ typescript_1.default.SyntaxKind.BooleanKeyword,
+ typescript_1.default.SyntaxKind.NeverKeyword,
+ typescript_1.default.SyntaxKind.NumberKeyword,
+ typescript_1.default.SyntaxKind.ObjectKeyword,
+ typescript_1.default.SyntaxKind.StringKeyword,
+ typescript_1.default.SyntaxKind.SymbolKeyword,
+ typescript_1.default.SyntaxKind.UndefinedKeyword,
+ typescript_1.default.SyntaxKind.UnknownKeyword,
+ typescript_1.default.SyntaxKind.VoidKeyword,
+ ],
+ convert(_context, node) {
+ return new models_1.IntrinsicType(keywordNames[node.kind]);
+ },
+ convertType(_context, _type, node) {
+ return new models_1.IntrinsicType(keywordNames[node.kind]);
+ },
+};
+const optionalConverter = {
+ kind: [typescript_1.default.SyntaxKind.OptionalType],
+ convert(context, node) {
+ return new models_1.OptionalType((0, reflections_1.removeUndefined)(convertType(context, node.type)));
+ },
+ // Handled by the tuple converter
+ convertType: requestBugReport,
+};
+const parensConverter = {
+ kind: [typescript_1.default.SyntaxKind.ParenthesizedType],
+ convert(context, node) {
+ return convertType(context, node.type);
+ },
+ // TS strips these out too... shouldn't run into this.
+ convertType: requestBugReport,
+};
+const predicateConverter = {
+ kind: [typescript_1.default.SyntaxKind.TypePredicate],
+ convert(context, node) {
+ const name = typescript_1.default.isThisTypeNode(node.parameterName)
+ ? "this"
+ : node.parameterName.getText();
+ const asserts = !!node.assertsModifier;
+ const targetType = node.type ? convertType(context, node.type) : void 0;
+ return new models_1.PredicateType(name, asserts, targetType);
+ },
+ // Never inferred by TS 4.0, could potentially change in a future TS version.
+ convertType: requestBugReport,
+};
+// This is a horrible thing... we're going to want to split this into converters
+// for different types at some point.
+const typeLiteralConverter = {
+ kind: [typescript_1.default.SyntaxKind.TypeLiteral],
+ convert(context, node) {
+ const symbol = context.getSymbolAtLocation(node) ?? node.symbol;
+ const type = context.getTypeAtLocation(node);
+ if (!symbol || !type) {
+ return new models_1.IntrinsicType("Object");
+ }
+ const reflection = new models_1.DeclarationReflection("__type", models_1.ReflectionKind.TypeLiteral, context.scope);
+ const rc = context.withScope(reflection);
+ rc.convertingTypeNode = true;
+ context.registerReflection(reflection, symbol);
+ context.trigger(converter_events_1.ConverterEvents.CREATE_DECLARATION, reflection);
+ for (const prop of context.checker.getPropertiesOfType(type)) {
+ (0, symbols_1.convertSymbol)(rc, prop);
+ }
+ for (const signature of type.getCallSignatures()) {
+ (0, signature_1.createSignature)(rc, models_1.ReflectionKind.CallSignature, signature, symbol);
+ }
+ for (const signature of type.getConstructSignatures()) {
+ (0, signature_1.createSignature)(rc, models_1.ReflectionKind.ConstructorSignature, signature, symbol);
+ }
+ (0, index_signature_1.convertIndexSignature)(rc, symbol);
+ return new models_1.ReflectionType(reflection);
+ },
+ convertType(context, type) {
+ if (!type.symbol) {
+ return new models_1.IntrinsicType("Object");
+ }
+ const reflection = new models_1.DeclarationReflection("__type", models_1.ReflectionKind.TypeLiteral, context.scope);
+ context.registerReflection(reflection, type.symbol);
+ context.trigger(converter_events_1.ConverterEvents.CREATE_DECLARATION, reflection);
+ for (const prop of context.checker.getPropertiesOfType(type)) {
+ (0, symbols_1.convertSymbol)(context.withScope(reflection), prop);
+ }
+ for (const signature of type.getCallSignatures()) {
+ (0, signature_1.createSignature)(context.withScope(reflection), models_1.ReflectionKind.CallSignature, signature, type.symbol);
+ }
+ for (const signature of type.getConstructSignatures()) {
+ (0, signature_1.createSignature)(context.withScope(reflection), models_1.ReflectionKind.ConstructorSignature, signature, type.symbol);
+ }
+ (0, index_signature_1.convertIndexSignature)(context.withScope(reflection), type.symbol);
+ return new models_1.ReflectionType(reflection);
+ },
+};
+const queryConverter = {
+ kind: [typescript_1.default.SyntaxKind.TypeQuery],
+ convert(context, node) {
+ const querySymbol = context.getSymbolAtLocation(node.exprName);
+ if (!querySymbol) {
+ // This can happen if someone uses `typeof` on some property
+ // on a variable typed as `any` with a name that doesn't exist.
+ return new models_1.QueryType(models_1.ReferenceType.createBrokenReference(node.exprName.getText(), context.project));
+ }
+ return new models_1.QueryType(models_1.ReferenceType.createSymbolReference(context.resolveAliasedSymbol(querySymbol), context, node.exprName.getText()));
+ },
+ convertType(context, type, node) {
+ const symbol = type.getSymbol() || context.getSymbolAtLocation(node.exprName);
+ (0, assert_1.default)(symbol, `Query type failed to get a symbol for: ${context.checker.typeToString(type)}. This is a bug.`);
+ return new models_1.QueryType(models_1.ReferenceType.createSymbolReference(context.resolveAliasedSymbol(symbol), context));
+ },
+};
+const referenceConverter = {
+ kind: [typescript_1.default.SyntaxKind.TypeReference],
+ convert(context, node) {
+ const isArray = context.checker.typeToTypeNode(context.checker.getTypeAtLocation(node.typeName), void 0, typescript_1.default.NodeBuilderFlags.IgnoreErrors)?.kind === typescript_1.default.SyntaxKind.ArrayType;
+ if (isArray) {
+ return new models_1.ArrayType(convertType(context, node.typeArguments?.[0]));
+ }
+ const symbol = context.expectSymbolAtLocation(node.typeName);
+ const name = node.typeName.getText();
+ const type = models_1.ReferenceType.createSymbolReference(context.resolveAliasedSymbol(symbol), context, name);
+ type.typeArguments = node.typeArguments?.map((type) => convertType(context, type));
+ return type;
+ },
+ convertType(context, type) {
+ const symbol = type.aliasSymbol ?? type.getSymbol();
+ if (!symbol) {
+ // This happens when we get a reference to a type parameter
+ // created within a mapped type, `K` in: `{ [K in T]: string }`
+ const ref = models_1.ReferenceType.createBrokenReference(context.checker.typeToString(type), context.project);
+ ref.refersToTypeParameter = true;
+ return ref;
+ }
+ const ref = models_1.ReferenceType.createSymbolReference(context.resolveAliasedSymbol(symbol), context);
+ if (type.flags & typescript_1.default.TypeFlags.StringMapping) {
+ ref.typeArguments = [
+ convertType(context, type.type),
+ ];
+ }
+ else {
+ ref.typeArguments = (type.aliasSymbol
+ ? type.aliasTypeArguments
+ : type.typeArguments)?.map((ref) => convertType(context, ref));
+ }
+ return ref;
+ },
+};
+const restConverter = {
+ kind: [typescript_1.default.SyntaxKind.RestType],
+ convert(context, node) {
+ return new models_1.RestType(convertType(context, node.type));
+ },
+ // This is handled in the tuple converter
+ convertType: requestBugReport,
+};
+const namedTupleMemberConverter = {
+ kind: [typescript_1.default.SyntaxKind.NamedTupleMember],
+ convert(context, node) {
+ const innerType = convertType(context, node.type);
+ return new models_1.NamedTupleMember(node.name.getText(), !!node.questionToken, innerType);
+ },
+ // This ought to be impossible.
+ convertType: requestBugReport,
+};
+// { -readonly [K in string]-?: number}
+// ^ readonlyToken
+// ^ typeParameter
+// ^^^^^^ typeParameter.constraint
+// ^ questionToken
+// ^^^^^^ type
+const mappedConverter = {
+ kind: [typescript_1.default.SyntaxKind.MappedType],
+ convert(context, node) {
+ const optionalModifier = kindToModifier(node.questionToken?.kind);
+ const templateType = convertType(context, node.type);
+ return new models_1.MappedType(node.typeParameter.name.text, convertType(context, node.typeParameter.constraint), optionalModifier === "+"
+ ? (0, reflections_1.removeUndefined)(templateType)
+ : templateType, kindToModifier(node.readonlyToken?.kind), optionalModifier, node.nameType ? convertType(context, node.nameType) : void 0);
+ },
+ convertType(context, type, node) {
+ // This can happen if a generic function does not have a return type annotated.
+ const optionalModifier = kindToModifier(node.questionToken?.kind);
+ const templateType = convertType(context, type.templateType);
+ return new models_1.MappedType(type.typeParameter.symbol?.name, convertType(context, type.typeParameter.getConstraint()), optionalModifier === "+"
+ ? (0, reflections_1.removeUndefined)(templateType)
+ : templateType, kindToModifier(node.readonlyToken?.kind), optionalModifier, type.nameType ? convertType(context, type.nameType) : void 0);
+ },
+};
+const literalTypeConverter = {
+ kind: [typescript_1.default.SyntaxKind.LiteralType],
+ convert(context, node) {
+ switch (node.literal.kind) {
+ case typescript_1.default.SyntaxKind.TrueKeyword:
+ case typescript_1.default.SyntaxKind.FalseKeyword:
+ return new models_1.LiteralType(node.literal.kind === typescript_1.default.SyntaxKind.TrueKeyword);
+ case typescript_1.default.SyntaxKind.StringLiteral:
+ return new models_1.LiteralType(node.literal.text);
+ case typescript_1.default.SyntaxKind.NumericLiteral:
+ return new models_1.LiteralType(Number(node.literal.text));
+ case typescript_1.default.SyntaxKind.NullKeyword:
+ return new models_1.LiteralType(null);
+ case typescript_1.default.SyntaxKind.PrefixUnaryExpression: {
+ const operand = node.literal
+ .operand;
+ switch (operand.kind) {
+ case typescript_1.default.SyntaxKind.NumericLiteral:
+ return new models_1.LiteralType(Number(node.literal.getText()));
+ case typescript_1.default.SyntaxKind.BigIntLiteral:
+ return new models_1.LiteralType(BigInt(node.literal.getText().replace("n", "")));
+ default:
+ return requestBugReport(context, node.literal);
+ }
+ }
+ case typescript_1.default.SyntaxKind.BigIntLiteral:
+ return new models_1.LiteralType(BigInt(node.literal.getText().replace("n", "")));
+ case typescript_1.default.SyntaxKind.NoSubstitutionTemplateLiteral:
+ return new models_1.LiteralType(node.literal.text);
+ }
+ return requestBugReport(context, node.literal);
+ },
+ convertType(_context, type, node) {
+ switch (node.literal.kind) {
+ case typescript_1.default.SyntaxKind.StringLiteral:
+ return new models_1.LiteralType(node.literal.text);
+ case typescript_1.default.SyntaxKind.NumericLiteral:
+ return new models_1.LiteralType(+node.literal.text);
+ case typescript_1.default.SyntaxKind.TrueKeyword:
+ case typescript_1.default.SyntaxKind.FalseKeyword:
+ return new models_1.LiteralType(node.literal.kind === typescript_1.default.SyntaxKind.TrueKeyword);
+ case typescript_1.default.SyntaxKind.NullKeyword:
+ return new models_1.LiteralType(null);
+ }
+ if (typeof type.value === "object") {
+ return new models_1.LiteralType(BigInt(`${type.value.negative ? "-" : ""}${type.value.base10Value}`));
+ }
+ return new models_1.LiteralType(type.value);
+ },
+};
+const templateLiteralConverter = {
+ kind: [typescript_1.default.SyntaxKind.TemplateLiteralType],
+ convert(context, node) {
+ return new models_1.TemplateLiteralType(node.head.text, node.templateSpans.map((span) => {
+ return [convertType(context, span.type), span.literal.text];
+ }));
+ },
+ convertType(context, type) {
+ (0, assert_1.default)(type.texts.length === type.types.length + 1);
+ const parts = [];
+ for (const [a, b] of (0, array_1.zip)(type.types, type.texts.slice(1))) {
+ parts.push([convertType(context, a), b]);
+ }
+ return new models_1.TemplateLiteralType(type.texts[0], parts);
+ },
+};
+const thisConverter = {
+ kind: [typescript_1.default.SyntaxKind.ThisType],
+ convert() {
+ return new models_1.IntrinsicType("this");
+ },
+ convertType() {
+ return new models_1.IntrinsicType("this");
+ },
+};
+const tupleConverter = {
+ kind: [typescript_1.default.SyntaxKind.TupleType],
+ convert(context, node) {
+ const elements = node.elements.map((node) => convertType(context, node));
+ return new models_1.TupleType(elements);
+ },
+ convertType(context, type, node) {
+ const types = type.typeArguments?.slice(0, node.elements.length);
+ let elements = types?.map((type) => convertType(context, type));
+ if (type.target.labeledElementDeclarations) {
+ const namedDeclarations = type.target.labeledElementDeclarations;
+ elements = elements?.map((el, i) => new models_1.NamedTupleMember(namedDeclarations[i].name.getText(), !!namedDeclarations[i].questionToken, (0, reflections_1.removeUndefined)(el)));
+ }
+ elements = elements?.map((el, i) => {
+ if (type.target.elementFlags[i] & typescript_1.default.ElementFlags.Variable) {
+ // In the node case, we don't need to add the wrapping Array type... but we do here.
+ if (el instanceof models_1.NamedTupleMember) {
+ return new models_1.RestType(new models_1.NamedTupleMember(el.name, el.isOptional, new models_1.ArrayType(el.element)));
+ }
+ return new models_1.RestType(new models_1.ArrayType(el));
+ }
+ if (type.target.elementFlags[i] & typescript_1.default.ElementFlags.Optional &&
+ !(el instanceof models_1.NamedTupleMember)) {
+ return new models_1.OptionalType((0, reflections_1.removeUndefined)(el));
+ }
+ return el;
+ });
+ return new models_1.TupleType(elements ?? []);
+ },
+};
+const supportedOperatorNames = {
+ [typescript_1.default.SyntaxKind.KeyOfKeyword]: "keyof",
+ [typescript_1.default.SyntaxKind.UniqueKeyword]: "unique",
+ [typescript_1.default.SyntaxKind.ReadonlyKeyword]: "readonly",
+};
+const typeOperatorConverter = {
+ kind: [typescript_1.default.SyntaxKind.TypeOperator],
+ convert(context, node) {
+ return new models_1.TypeOperatorType(convertType(context, node.type), supportedOperatorNames[node.operator]);
+ },
+ convertType(context, type, node) {
+ // readonly is only valid on array and tuple literal types.
+ if (node.operator === typescript_1.default.SyntaxKind.ReadonlyKeyword) {
+ const resolved = resolveReference(type);
+ (0, assert_1.default)((0, nodes_1.isObjectType)(resolved));
+ const args = context.checker
+ .getTypeArguments(type)
+ .map((type) => convertType(context, type));
+ const inner = resolved.objectFlags & typescript_1.default.ObjectFlags.Tuple
+ ? new models_1.TupleType(args)
+ : new models_1.ArrayType(args[0]);
+ return new models_1.TypeOperatorType(inner, "readonly");
+ }
+ // keyof will only show up with generic functions, otherwise it gets eagerly
+ // resolved to a union of strings.
+ if (node.operator === typescript_1.default.SyntaxKind.KeyOfKeyword) {
+ // TS 4.2 added this to enable better tracking of type aliases.
+ if (type.isUnion() && type.origin) {
+ return convertType(context, type.origin);
+ }
+ // There's probably an interface for this somewhere... I couldn't find it.
+ const targetType = type.type;
+ return new models_1.TypeOperatorType(convertType(context, targetType), "keyof");
+ }
+ // TS drops `unique` in `unique symbol` everywhere. If someone used it, we ought
+ // to have a type node. This shouldn't ever happen.
+ return requestBugReport(context, type);
+ },
+};
+const unionConverter = {
+ kind: [typescript_1.default.SyntaxKind.UnionType],
+ convert(context, node) {
+ return new models_1.UnionType(node.types.map((type) => convertType(context, type)));
+ },
+ convertType(context, type) {
+ // TS 4.2 added this to enable better tracking of type aliases.
+ if (type.origin) {
+ return convertType(context, type.origin);
+ }
+ return new models_1.UnionType(type.types.map((type) => convertType(context, type)));
+ },
+};
+const jsDocNullableTypeConverter = {
+ kind: [typescript_1.default.SyntaxKind.JSDocNullableType],
+ convert(context, node) {
+ return new models_1.UnionType([
+ convertType(context, node.type),
+ new models_1.LiteralType(null),
+ ]);
+ },
+ // Should be a UnionType
+ convertType: requestBugReport,
+};
+const jsDocNonNullableTypeConverter = {
+ kind: [typescript_1.default.SyntaxKind.JSDocNonNullableType],
+ convert(context, node) {
+ return convertType(context, node.type);
+ },
+ // Should be a UnionType
+ convertType: requestBugReport,
+};
+function requestBugReport(context, nodeOrType) {
+ if ("kind" in nodeOrType) {
+ const kindName = typescript_1.default.SyntaxKind[nodeOrType.kind];
+ context.logger.warn(`Failed to convert type node with kind: ${kindName} and text ${nodeOrType.getText()}. Please report a bug.`, nodeOrType);
+ return new models_1.UnknownType(nodeOrType.getText());
+ }
+ else {
+ const typeString = context.checker.typeToString(nodeOrType);
+ context.logger.warn(`Failed to convert type: ${typeString} when converting ${context.scope.getFullName()}. Please report a bug.`);
+ return new models_1.UnknownType(typeString);
+ }
+}
+function resolveReference(type) {
+ if ((0, nodes_1.isObjectType)(type) && type.objectFlags & typescript_1.default.ObjectFlags.Reference) {
+ return type.target;
+ }
+ return type;
+}
+function kindToModifier(kind) {
+ switch (kind) {
+ case typescript_1.default.SyntaxKind.ReadonlyKeyword:
+ case typescript_1.default.SyntaxKind.QuestionToken:
+ case typescript_1.default.SyntaxKind.PlusToken:
+ return "+";
+ case typescript_1.default.SyntaxKind.MinusToken:
+ return "-";
+ default:
+ return undefined;
+ }
+}
diff --git a/node_modules/typedoc/dist/lib/converter/utils/base-path.d.ts b/node_modules/typedoc/dist/lib/converter/utils/base-path.d.ts
new file mode 100644
index 0000000..2574b88
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/utils/base-path.d.ts
@@ -0,0 +1,36 @@
+/**
+ * Helper class that determines the common base path of a set of files.
+ *
+ * In the first step all files must be passed to {@link add}. Afterwards {@link trim}
+ * can be used to retrieve the shortest path relative to the determined base path.
+ */
+export declare class BasePath {
+ /**
+ * List of known base paths.
+ */
+ private basePaths;
+ /**
+ * Add the given file path to this set of base paths.
+ *
+ * @param fileName The absolute filename that should be added to the base path.
+ */
+ add(fileName: string): void;
+ /**
+ * Trim the given filename by the determined base paths.
+ *
+ * @param fileName The absolute filename that should be trimmed.
+ * @returns The trimmed version of the filename.
+ */
+ trim(fileName: string): string;
+ /**
+ * Reset this instance, ignore all paths already passed to {@link add}.
+ */
+ reset(): void;
+ /**
+ * Normalize the given path.
+ *
+ * @param path The path that should be normalized.
+ * @returns Normalized version of the given path.
+ */
+ static normalize(path: string): string;
+}
diff --git a/node_modules/typedoc/dist/lib/converter/utils/base-path.js b/node_modules/typedoc/dist/lib/converter/utils/base-path.js
new file mode 100644
index 0000000..1385999
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/utils/base-path.js
@@ -0,0 +1,112 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.BasePath = void 0;
+const Path = __importStar(require("path"));
+/**
+ * Helper class that determines the common base path of a set of files.
+ *
+ * In the first step all files must be passed to {@link add}. Afterwards {@link trim}
+ * can be used to retrieve the shortest path relative to the determined base path.
+ */
+class BasePath {
+ constructor() {
+ /**
+ * List of known base paths.
+ */
+ this.basePaths = [];
+ }
+ /**
+ * Add the given file path to this set of base paths.
+ *
+ * @param fileName The absolute filename that should be added to the base path.
+ */
+ add(fileName) {
+ const fileDir = Path.dirname(BasePath.normalize(fileName));
+ const filePath = fileDir.split("/");
+ basePaths: for (let n = 0, c = this.basePaths.length; n < c; n++) {
+ const basePath = this.basePaths[n].split("/");
+ const mMax = Math.min(basePath.length, filePath.length);
+ for (let m = 0; m < mMax; m++) {
+ if (basePath[m] === filePath[m]) {
+ continue;
+ }
+ if (m < 1) {
+ // No match at all, try next known base path
+ continue basePaths;
+ }
+ else {
+ // Partial match, trim the known base path
+ if (m < basePath.length) {
+ this.basePaths[n] = basePath.slice(0, m).join("/");
+ }
+ return;
+ }
+ }
+ // Complete match, exit
+ this.basePaths[n] = basePath.splice(0, mMax).join("/");
+ return;
+ }
+ // Unknown base path, add it
+ this.basePaths.push(fileDir);
+ }
+ /**
+ * Trim the given filename by the determined base paths.
+ *
+ * @param fileName The absolute filename that should be trimmed.
+ * @returns The trimmed version of the filename.
+ */
+ trim(fileName) {
+ fileName = BasePath.normalize(fileName);
+ for (let n = 0, c = this.basePaths.length; n < c; n++) {
+ const basePath = this.basePaths[n];
+ if (fileName.substring(0, basePath.length) === basePath) {
+ return fileName.substring(basePath.length + 1);
+ }
+ }
+ return fileName;
+ }
+ /**
+ * Reset this instance, ignore all paths already passed to {@link add}.
+ */
+ reset() {
+ this.basePaths = [];
+ }
+ /**
+ * Normalize the given path.
+ *
+ * @param path The path that should be normalized.
+ * @returns Normalized version of the given path.
+ */
+ static normalize(path) {
+ // Ensure forward slashes
+ path = path.replace(/\\/g, "/");
+ // Remove all surrounding quotes
+ path = path.replace(/^["']+|["']+$/g, "");
+ // Make Windows drive letters upper case
+ return path.replace(/^([^:]+):\//, (_m, m1) => m1.toUpperCase() + ":/");
+ }
+}
+exports.BasePath = BasePath;
diff --git a/node_modules/typedoc/dist/lib/converter/utils/nodes.d.ts b/node_modules/typedoc/dist/lib/converter/utils/nodes.d.ts
new file mode 100644
index 0000000..4ced9d0
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/utils/nodes.d.ts
@@ -0,0 +1,6 @@
+import ts from "typescript";
+export declare function isNamedNode(node: ts.Node): node is ts.Node & {
+ name: ts.Identifier | ts.PrivateIdentifier | ts.ComputedPropertyName;
+};
+export declare function getHeritageTypes(declarations: readonly (ts.ClassDeclaration | ts.InterfaceDeclaration)[], kind: ts.SyntaxKind.ImplementsKeyword | ts.SyntaxKind.ExtendsKeyword): ts.ExpressionWithTypeArguments[];
+export declare function isObjectType(type: ts.Type): type is ts.ObjectType;
diff --git a/node_modules/typedoc/dist/lib/converter/utils/nodes.js b/node_modules/typedoc/dist/lib/converter/utils/nodes.js
new file mode 100644
index 0000000..41b9cc9
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/utils/nodes.js
@@ -0,0 +1,31 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isObjectType = exports.getHeritageTypes = exports.isNamedNode = void 0;
+const typescript_1 = __importDefault(require("typescript"));
+function isNamedNode(node) {
+ const name = node.name;
+ return !!name && (typescript_1.default.isMemberName(name) || typescript_1.default.isComputedPropertyName(name));
+}
+exports.isNamedNode = isNamedNode;
+function getHeritageTypes(declarations, kind) {
+ const exprs = declarations.flatMap((d) => (d.heritageClauses ?? [])
+ .filter((hc) => hc.token === kind)
+ .flatMap((hc) => hc.types));
+ const seenTexts = new Set();
+ return exprs.filter((expr) => {
+ const text = expr.getText();
+ if (seenTexts.has(text)) {
+ return false;
+ }
+ seenTexts.add(text);
+ return true;
+ });
+}
+exports.getHeritageTypes = getHeritageTypes;
+function isObjectType(type) {
+ return typeof type.objectFlags === "number";
+}
+exports.isObjectType = isObjectType;
diff --git a/node_modules/typedoc/dist/lib/converter/utils/reflections.d.ts b/node_modules/typedoc/dist/lib/converter/utils/reflections.d.ts
new file mode 100644
index 0000000..7b55971
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/utils/reflections.d.ts
@@ -0,0 +1,2 @@
+import { SomeType } from "../../models";
+export declare function removeUndefined(type: SomeType): SomeType;
diff --git a/node_modules/typedoc/dist/lib/converter/utils/reflections.js b/node_modules/typedoc/dist/lib/converter/utils/reflections.js
new file mode 100644
index 0000000..31bffe5
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/utils/reflections.js
@@ -0,0 +1,21 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.removeUndefined = void 0;
+const models_1 = require("../../models");
+function removeUndefined(type) {
+ if (type instanceof models_1.UnionType) {
+ const types = type.types.filter((t) => {
+ if (t instanceof models_1.IntrinsicType) {
+ return t.name !== "undefined";
+ }
+ return true;
+ });
+ if (types.length === 1) {
+ return types[0];
+ }
+ type.types = types;
+ return type;
+ }
+ return type;
+}
+exports.removeUndefined = removeUndefined;
diff --git a/node_modules/typedoc/dist/lib/converter/utils/repository.d.ts b/node_modules/typedoc/dist/lib/converter/utils/repository.d.ts
new file mode 100644
index 0000000..2bee4a7
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/utils/repository.d.ts
@@ -0,0 +1,41 @@
+import type { Logger } from "../../utils";
+export declare const gitIsInstalled: boolean;
+/**
+ * Stores data of a repository.
+ */
+export declare class Repository {
+ /**
+ * The path of this repository on disk.
+ */
+ path: string;
+ /**
+ * All files tracked by the repository.
+ */
+ files: Set<string>;
+ urlTemplate: string;
+ gitRevision: string;
+ /**
+ * Create a new Repository instance.
+ *
+ * @param path The root path of the repository.
+ */
+ constructor(path: string, gitRevision: string, urlTemplate: string);
+ /**
+ * Get the URL of the given file on GitHub or Bitbucket.
+ *
+ * @param fileName The file whose URL should be determined.
+ * @returns A URL pointing to the web preview of the given file or undefined.
+ */
+ getURL(fileName: string, line: number): string | undefined;
+ /**
+ * Try to create a new repository instance.
+ *
+ * Checks whether the given path is the root of a valid repository and if so
+ * creates a new instance of {@link Repository}.
+ *
+ * @param path The potential repository root.
+ * @returns A new instance of {@link Repository} or undefined.
+ */
+ static tryCreateRepository(path: string, sourceLinkTemplate: string, gitRevision: string, gitRemote: string, logger: Logger): Repository | undefined;
+}
+export declare function guessSourceUrlTemplate(remotes: string[]): string | undefined;
diff --git a/node_modules/typedoc/dist/lib/converter/utils/repository.js b/node_modules/typedoc/dist/lib/converter/utils/repository.js
new file mode 100644
index 0000000..b1f9c76
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/utils/repository.js
@@ -0,0 +1,140 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.guessSourceUrlTemplate = exports.Repository = exports.gitIsInstalled = void 0;
+const child_process_1 = require("child_process");
+const base_path_1 = require("../utils/base-path");
+const TEN_MEGABYTES = 1024 * 10000;
+function git(...args) {
+ return (0, child_process_1.spawnSync)("git", args, {
+ encoding: "utf-8",
+ windowsHide: true,
+ maxBuffer: TEN_MEGABYTES,
+ });
+}
+exports.gitIsInstalled = git("--version").status === 0;
+/**
+ * Stores data of a repository.
+ */
+class Repository {
+ /**
+ * Create a new Repository instance.
+ *
+ * @param path The root path of the repository.
+ */
+ constructor(path, gitRevision, urlTemplate) {
+ /**
+ * All files tracked by the repository.
+ */
+ this.files = new Set();
+ this.path = path;
+ this.gitRevision = gitRevision;
+ this.urlTemplate = urlTemplate;
+ const out = git("-C", path, "ls-files");
+ if (out.status === 0) {
+ out.stdout.split("\n").forEach((file) => {
+ if (file !== "") {
+ this.files.add(base_path_1.BasePath.normalize(path + "/" + file));
+ }
+ });
+ }
+ }
+ /**
+ * Get the URL of the given file on GitHub or Bitbucket.
+ *
+ * @param fileName The file whose URL should be determined.
+ * @returns A URL pointing to the web preview of the given file or undefined.
+ */
+ getURL(fileName, line) {
+ if (!this.files.has(fileName)) {
+ return;
+ }
+ const replacements = {
+ gitRevision: this.gitRevision,
+ path: fileName.substring(this.path.length + 1),
+ line,
+ };
+ return this.urlTemplate.replace(/\{(gitRevision|path|line)\}/g, (_, key) => replacements[key]);
+ }
+ /**
+ * Try to create a new repository instance.
+ *
+ * Checks whether the given path is the root of a valid repository and if so
+ * creates a new instance of {@link Repository}.
+ *
+ * @param path The potential repository root.
+ * @returns A new instance of {@link Repository} or undefined.
+ */
+ static tryCreateRepository(path, sourceLinkTemplate, gitRevision, gitRemote, logger) {
+ const topLevel = git("-C", path, "rev-parse", "--show-toplevel");
+ if (topLevel.status !== 0)
+ return;
+ gitRevision || (gitRevision = git("-C", path, "rev-parse", "--short", "HEAD").stdout.trim());
+ if (!gitRevision)
+ return; // Will only happen in a repo with no commits.
+ let urlTemplate;
+ if (sourceLinkTemplate) {
+ urlTemplate = sourceLinkTemplate;
+ }
+ else if (/^https?:\/\//.test(gitRemote)) {
+ logger.warn("Using a link as the gitRemote is deprecated and will be removed in 0.24.");
+ urlTemplate = `${gitRemote}/{gitRevision}`;
+ }
+ else {
+ const remotesOut = git("-C", path, "remote", "get-url", gitRemote);
+ if (remotesOut.status === 0) {
+ urlTemplate = guessSourceUrlTemplate(remotesOut.stdout.split("\n"));
+ }
+ else {
+ logger.warn(`The provided git remote "${gitRemote}" was not valid. Source links will be broken.`);
+ }
+ }
+ if (!urlTemplate)
+ return;
+ return new Repository(base_path_1.BasePath.normalize(topLevel.stdout.replace("\n", "")), gitRevision, urlTemplate);
+ }
+}
+exports.Repository = Repository;
+// Should have three capturing groups:
+// 1. hostname
+// 2. user
+// 3. project
+const repoExpressions = [
+ /(github(?!.us)(?:\.[a-z]+)*\.[a-z]{2,})[:/]([^/]+)\/(.*)/,
+ /(\w+\.githubprivate.com)[:/]([^/]+)\/(.*)/,
+ /(\w+\.ghe.com)[:/]([^/]+)\/(.*)/,
+ /(\w+\.github.us)[:/]([^/]+)\/(.*)/,
+ /(bitbucket.org)[:/]([^/]+)\/(.*)/,
+ /(gitlab.com)[:/]([^/]+)\/(.*)/,
+];
+function guessSourceUrlTemplate(remotes) {
+ let hostname = "";
+ let user = "";
+ let project = "";
+ outer: for (const repoLink of remotes) {
+ for (const regex of repoExpressions) {
+ const match = regex.exec(repoLink);
+ if (match) {
+ hostname = match[1];
+ user = match[2];
+ project = match[3];
+ break outer;
+ }
+ }
+ }
+ if (!hostname)
+ return;
+ if (project.endsWith(".git")) {
+ project = project.slice(0, -4);
+ }
+ let sourcePath = "blob";
+ let anchorPrefix = "L";
+ if (hostname.includes("gitlab")) {
+ sourcePath = "-/blob";
+ }
+ else if (hostname.includes("bitbucket")) {
+ sourcePath = "src";
+ anchorPrefix = "lines-";
+ }
+ return `https://${hostname}/${user}/${project}/${sourcePath}/{gitRevision}/{path}#${anchorPrefix}{line}`;
+}
+exports.guessSourceUrlTemplate = guessSourceUrlTemplate;
diff --git a/node_modules/typedoc/dist/lib/converter/utils/symbols.d.ts b/node_modules/typedoc/dist/lib/converter/utils/symbols.d.ts
new file mode 100644
index 0000000..6dce3ad
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/utils/symbols.d.ts
@@ -0,0 +1,2 @@
+import ts from "typescript";
+export declare function resolveAliasedSymbol(symbol: ts.Symbol, checker: ts.TypeChecker): ts.Symbol;
diff --git a/node_modules/typedoc/dist/lib/converter/utils/symbols.js b/node_modules/typedoc/dist/lib/converter/utils/symbols.js
new file mode 100644
index 0000000..abe82db
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/converter/utils/symbols.js
@@ -0,0 +1,14 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.resolveAliasedSymbol = void 0;
+const typescript_1 = __importDefault(require("typescript"));
+function resolveAliasedSymbol(symbol, checker) {
+ while (typescript_1.default.SymbolFlags.Alias & symbol.flags) {
+ symbol = checker.getAliasedSymbol(symbol);
+ }
+ return symbol;
+}
+exports.resolveAliasedSymbol = resolveAliasedSymbol;
diff --git a/node_modules/typedoc/dist/lib/models/ReflectionCategory.d.ts b/node_modules/typedoc/dist/lib/models/ReflectionCategory.d.ts
new file mode 100644
index 0000000..83cc02d
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/ReflectionCategory.d.ts
@@ -0,0 +1,31 @@
+import type { DeclarationReflection } from ".";
+import type { Serializer, JSONOutput, Deserializer } from "../serialization";
+/**
+ * A category of reflections.
+ *
+ * Reflection categories are created by the ´CategoryPlugin´ in the resolving phase
+ * of the dispatcher. The main purpose of categories is to be able to more easily
+ * render human readable children lists in templates.
+ */
+export declare class ReflectionCategory {
+ /**
+ * The title, a string representation of this category.
+ */
+ title: string;
+ /**
+ * All reflections of this category.
+ */
+ children: DeclarationReflection[];
+ /**
+ * Create a new ReflectionCategory instance.
+ *
+ * @param title The title of this category.
+ */
+ constructor(title: string);
+ /**
+ * Do all children of this category have a separate document?
+ */
+ allChildrenHaveOwnDocument(): boolean;
+ toObject(_serializer: Serializer): JSONOutput.ReflectionCategory;
+ fromObject(de: Deserializer, obj: JSONOutput.ReflectionCategory): void;
+}
diff --git a/node_modules/typedoc/dist/lib/models/ReflectionCategory.js b/node_modules/typedoc/dist/lib/models/ReflectionCategory.js
new file mode 100644
index 0000000..78c325b
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/ReflectionCategory.js
@@ -0,0 +1,51 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ReflectionCategory = void 0;
+/**
+ * A category of reflections.
+ *
+ * Reflection categories are created by the ´CategoryPlugin´ in the resolving phase
+ * of the dispatcher. The main purpose of categories is to be able to more easily
+ * render human readable children lists in templates.
+ */
+class ReflectionCategory {
+ /**
+ * Create a new ReflectionCategory instance.
+ *
+ * @param title The title of this category.
+ */
+ constructor(title) {
+ /**
+ * All reflections of this category.
+ */
+ this.children = [];
+ this.title = title;
+ }
+ /**
+ * Do all children of this category have a separate document?
+ */
+ allChildrenHaveOwnDocument() {
+ return this.children.every((child) => child.hasOwnDocument);
+ }
+ toObject(_serializer) {
+ return {
+ title: this.title,
+ children: this.children.length > 0
+ ? this.children.map((child) => child.id)
+ : undefined,
+ };
+ }
+ fromObject(de, obj) {
+ if (obj.children) {
+ de.defer((project) => {
+ for (const childId of obj.children || []) {
+ const child = project.getReflectionById(de.oldIdToNewId[childId] ?? -1);
+ if (child?.isDeclaration()) {
+ this.children.push(child);
+ }
+ }
+ });
+ }
+ }
+}
+exports.ReflectionCategory = ReflectionCategory;
diff --git a/node_modules/typedoc/dist/lib/models/ReflectionGroup.d.ts b/node_modules/typedoc/dist/lib/models/ReflectionGroup.d.ts
new file mode 100644
index 0000000..5169648
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/ReflectionGroup.d.ts
@@ -0,0 +1,36 @@
+import { ReflectionCategory } from "./ReflectionCategory";
+import type { DeclarationReflection } from ".";
+import type { Serializer, JSONOutput, Deserializer } from "../serialization";
+/**
+ * A group of reflections. All reflections in a group are of the same kind.
+ *
+ * Reflection groups are created by the ´GroupHandler´ in the resolving phase
+ * of the dispatcher. The main purpose of groups is to be able to more easily
+ * render human readable children lists in templates.
+ */
+export declare class ReflectionGroup {
+ /**
+ * The title, a string representation of the typescript kind, of this group.
+ */
+ title: string;
+ /**
+ * All reflections of this group.
+ */
+ children: DeclarationReflection[];
+ /**
+ * Categories contained within this group.
+ */
+ categories?: ReflectionCategory[];
+ /**
+ * Create a new ReflectionGroup instance.
+ *
+ * @param title The title of this group.
+ */
+ constructor(title: string);
+ /**
+ * Do all children of this group have a separate document?
+ */
+ allChildrenHaveOwnDocument(): boolean;
+ toObject(serializer: Serializer): JSONOutput.ReflectionGroup;
+ fromObject(de: Deserializer, obj: JSONOutput.ReflectionGroup): void;
+}
diff --git a/node_modules/typedoc/dist/lib/models/ReflectionGroup.js b/node_modules/typedoc/dist/lib/models/ReflectionGroup.js
new file mode 100644
index 0000000..0302c8d
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/ReflectionGroup.js
@@ -0,0 +1,60 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ReflectionGroup = void 0;
+const ReflectionCategory_1 = require("./ReflectionCategory");
+/**
+ * A group of reflections. All reflections in a group are of the same kind.
+ *
+ * Reflection groups are created by the ´GroupHandler´ in the resolving phase
+ * of the dispatcher. The main purpose of groups is to be able to more easily
+ * render human readable children lists in templates.
+ */
+class ReflectionGroup {
+ /**
+ * Create a new ReflectionGroup instance.
+ *
+ * @param title The title of this group.
+ */
+ constructor(title) {
+ /**
+ * All reflections of this group.
+ */
+ this.children = [];
+ this.title = title;
+ }
+ /**
+ * Do all children of this group have a separate document?
+ */
+ allChildrenHaveOwnDocument() {
+ return this.children.every((child) => child.hasOwnDocument);
+ }
+ toObject(serializer) {
+ return {
+ title: this.title,
+ children: this.children.length > 0
+ ? this.children.map((child) => child.id)
+ : undefined,
+ categories: serializer.toObjectsOptional(this.categories),
+ };
+ }
+ fromObject(de, obj) {
+ if (obj.categories) {
+ this.categories = obj.categories.map((catObj) => {
+ const cat = new ReflectionCategory_1.ReflectionCategory(catObj.title);
+ de.fromObject(cat, catObj);
+ return cat;
+ });
+ }
+ if (obj.children) {
+ de.defer((project) => {
+ for (const childId of obj.children || []) {
+ const child = project.getReflectionById(de.oldIdToNewId[childId] ?? -1);
+ if (child?.isDeclaration()) {
+ this.children.push(child);
+ }
+ }
+ });
+ }
+ }
+}
+exports.ReflectionGroup = ReflectionGroup;
diff --git a/node_modules/typedoc/dist/lib/models/comments/comment.d.ts b/node_modules/typedoc/dist/lib/models/comments/comment.d.ts
new file mode 100644
index 0000000..41d65a8
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/comments/comment.d.ts
@@ -0,0 +1,152 @@
+import type { Reflection } from "../reflections";
+import { ReflectionSymbolId } from "../reflections/ReflectionSymbolId";
+import type { Serializer, Deserializer, JSONOutput } from "../../serialization";
+export type CommentDisplayPart = {
+ kind: "text";
+ text: string;
+} | {
+ kind: "code";
+ text: string;
+} | InlineTagDisplayPart;
+/**
+ * The `@link`, `@linkcode`, and `@linkplain` tags may have a `target`
+ * property set indicating which reflection/url they link to. They may also
+ * have a `tsLinkText` property which includes the part of the `text` which
+ * TypeScript thinks should be displayed as the link text.
+ */
+export interface InlineTagDisplayPart {
+ kind: "inline-tag";
+ tag: `@${string}`;
+ text: string;
+ target?: Reflection | string | ReflectionSymbolId;
+ tsLinkText?: string;
+}
+/**
+ * A model that represents a single TypeDoc comment tag.
+ *
+ * Tags are stored in the {@link Comment.blockTags} property.
+ */
+export declare class CommentTag {
+ /**
+ * The name of this tag, e.g. `@returns`, `@example`
+ */
+ tag: `@${string}`;
+ /**
+ * Some tags, (`@typedef`, `@param`, `@property`, etc.) may have a user defined identifier associated with them.
+ * If this tag is one of those, it will be parsed out and included here.
+ */
+ name?: string;
+ /**
+ * The actual body text of this tag.
+ */
+ content: CommentDisplayPart[];
+ /**
+ * Create a new CommentTag instance.
+ */
+ constructor(tag: `@${string}`, text: CommentDisplayPart[]);
+ clone(): CommentTag;
+ toObject(serializer: Serializer): JSONOutput.CommentTag;
+ fromObject(de: Deserializer, obj: JSONOutput.CommentTag): void;
+}
+/**
+ * A model that represents a comment.
+ *
+ * Instances of this model are created by the CommentPlugin. You can retrieve comments
+ * through the {@link DeclarationReflection.comment} property.
+ */
+export declare class Comment {
+ /**
+ * Debugging utility for combining parts into a simple string. Not suitable for
+ * rendering, but can be useful in tests.
+ */
+ static combineDisplayParts(parts: readonly CommentDisplayPart[] | undefined): string;
+ /**
+ * Helper function to convert an array of comment display parts into markdown suitable for
+ * passing into Marked. `urlTo` will be used to resolve urls to any reflections linked to with
+ * `@link` tags.
+ */
+ static displayPartsToMarkdown(parts: readonly CommentDisplayPart[], urlTo: (ref: Reflection) => string): string;
+ /**
+ * Helper utility to clone {@link Comment.summary} or {@link CommentTag.content}
+ */
+ static cloneDisplayParts(parts: CommentDisplayPart[]): ({
+ kind: "text";
+ text: string;
+ } | {
+ kind: "code";
+ text: string;
+ } | {
+ kind: "inline-tag";
+ tag: `@${string}`;
+ text: string;
+ target?: string | Reflection | ReflectionSymbolId | undefined;
+ tsLinkText?: string | undefined;
+ })[];
+ static serializeDisplayParts(serializer: Serializer, parts: CommentDisplayPart[]): JSONOutput.CommentDisplayPart[];
+ /** @hidden no point in showing this signature in api docs */
+ static serializeDisplayParts(serializer: Serializer, parts: CommentDisplayPart[] | undefined): JSONOutput.CommentDisplayPart[] | undefined;
+ static deserializeDisplayParts(de: Deserializer, parts: JSONOutput.CommentDisplayPart[]): CommentDisplayPart[];
+ /**
+ * The content of the comment which is not associated with a block tag.
+ */
+ summary: CommentDisplayPart[];
+ /**
+ * All associated block level tags.
+ */
+ blockTags: CommentTag[];
+ /**
+ * All modifier tags present on the comment, e.g. `@alpha`, `@beta`.
+ */
+ modifierTags: Set<string>;
+ /**
+ * Label associated with this reflection, if any (https://tsdoc.org/pages/tags/label/)
+ */
+ label?: string;
+ /**
+ * Creates a new Comment instance.
+ */
+ constructor(summary?: CommentDisplayPart[], blockTags?: CommentTag[], modifierTags?: Set<string>);
+ /**
+ * Create a deep clone of this comment.
+ */
+ clone(): Comment;
+ /**
+ * Returns true if this comment is completely empty.
+ * @internal
+ */
+ isEmpty(): boolean;
+ /**
+ * Has this comment a visible component?
+ *
+ * @returns TRUE when this comment has a visible component.
+ */
+ hasVisibleComponent(): boolean;
+ /**
+ * Test whether this comment contains a tag with the given name.
+ *
+ * @param tagName The name of the tag to look for.
+ * @returns TRUE when this comment contains a tag with the given name, otherwise FALSE.
+ */
+ hasModifier(tagName: `@${string}`): boolean;
+ removeModifier(tagName: `@${string}`): void;
+ /**
+ * Return the first tag with the given name.
+ *
+ * @param tagName The name of the tag to look for.
+ * @param paramName An optional parameter name to look for.
+ * @returns The found tag or undefined.
+ */
+ getTag(tagName: `@${string}`): CommentTag | undefined;
+ /**
+ * Get all tags with the given tag name.
+ */
+ getTags(tagName: `@${string}`): CommentTag[];
+ getIdentifiedTag(identifier: string, tagName: `@${string}`): CommentTag | undefined;
+ /**
+ * Removes all block tags with the given tag name from the comment.
+ * @param tagName
+ */
+ removeTags(tagName: `@${string}`): void;
+ toObject(serializer: Serializer): JSONOutput.Comment;
+ fromObject(de: Deserializer, obj: JSONOutput.Comment): void;
+}
diff --git a/node_modules/typedoc/dist/lib/models/comments/comment.js b/node_modules/typedoc/dist/lib/models/comments/comment.js
new file mode 100644
index 0000000..32e7e25
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/comments/comment.js
@@ -0,0 +1,324 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Comment = exports.CommentTag = void 0;
+const utils_1 = require("../../utils");
+const kind_1 = require("../reflections/kind");
+const ReflectionSymbolId_1 = require("../reflections/ReflectionSymbolId");
+/**
+ * A model that represents a single TypeDoc comment tag.
+ *
+ * Tags are stored in the {@link Comment.blockTags} property.
+ */
+class CommentTag {
+ /**
+ * Create a new CommentTag instance.
+ */
+ constructor(tag, text) {
+ this.tag = tag;
+ this.content = text;
+ }
+ clone() {
+ const tag = new CommentTag(this.tag, Comment.cloneDisplayParts(this.content));
+ if (this.name) {
+ tag.name = this.name;
+ }
+ return tag;
+ }
+ toObject(serializer) {
+ return {
+ tag: this.tag,
+ name: this.name,
+ content: Comment.serializeDisplayParts(serializer, this.content),
+ };
+ }
+ fromObject(de, obj) {
+ // tag already set by Comment.fromObject
+ this.name = obj.name;
+ this.content = Comment.deserializeDisplayParts(de, obj.content);
+ }
+}
+exports.CommentTag = CommentTag;
+/**
+ * A model that represents a comment.
+ *
+ * Instances of this model are created by the CommentPlugin. You can retrieve comments
+ * through the {@link DeclarationReflection.comment} property.
+ */
+class Comment {
+ /**
+ * Debugging utility for combining parts into a simple string. Not suitable for
+ * rendering, but can be useful in tests.
+ */
+ static combineDisplayParts(parts) {
+ let result = "";
+ for (const item of parts || []) {
+ switch (item.kind) {
+ case "text":
+ case "code":
+ result += item.text;
+ break;
+ case "inline-tag":
+ result += `{${item.tag} ${item.text}}`;
+ break;
+ default:
+ (0, utils_1.assertNever)(item);
+ }
+ }
+ return result;
+ }
+ /**
+ * Helper function to convert an array of comment display parts into markdown suitable for
+ * passing into Marked. `urlTo` will be used to resolve urls to any reflections linked to with
+ * `@link` tags.
+ */
+ static displayPartsToMarkdown(parts, urlTo) {
+ const result = [];
+ for (const part of parts) {
+ switch (part.kind) {
+ case "text":
+ case "code":
+ result.push(part.text);
+ break;
+ case "inline-tag":
+ switch (part.tag) {
+ case "@label":
+ case "@inheritdoc": // Shouldn't happen
+ break; // Not rendered.
+ case "@link":
+ case "@linkcode":
+ case "@linkplain": {
+ if (part.target) {
+ let url;
+ let kindClass;
+ if (typeof part.target === "string") {
+ url = part.target;
+ }
+ else if (part.target && "id" in part.target) {
+ // No point in trying to resolve a ReflectionSymbolId at this point, we've already
+ // tried and failed during the resolution step.
+ url = urlTo(part.target);
+ kindClass = kind_1.ReflectionKind.classString(part.target.kind);
+ }
+ const text = part.tag === "@linkcode"
+ ? `<code>${part.text}</code>`
+ : part.text;
+ result.push(url
+ ? `<a href="${url}"${kindClass
+ ? ` class="${kindClass}"`
+ : ""}>${text}</a>`
+ : part.text);
+ }
+ else {
+ result.push(part.text);
+ }
+ break;
+ }
+ default:
+ // Hmm... probably want to be able to render these somehow, so custom inline tags can be given
+ // special rendering rules. Future capability. For now, just render their text.
+ result.push(`{${part.tag} ${part.text}}`);
+ break;
+ }
+ break;
+ default:
+ (0, utils_1.assertNever)(part);
+ }
+ }
+ return result.join("");
+ }
+ /**
+ * Helper utility to clone {@link Comment.summary} or {@link CommentTag.content}
+ */
+ static cloneDisplayParts(parts) {
+ return parts.map((p) => ({ ...p }));
+ }
+ static serializeDisplayParts(serializer, parts) {
+ return parts?.map((part) => {
+ switch (part.kind) {
+ case "text":
+ case "code":
+ return { ...part };
+ case "inline-tag": {
+ let target;
+ if (typeof part.target === "string") {
+ target = part.target;
+ }
+ else if (part.target) {
+ if ("id" in part.target) {
+ target = part.target.id;
+ }
+ else {
+ target = part.target.toObject(serializer);
+ }
+ }
+ return {
+ ...part,
+ target,
+ };
+ }
+ }
+ });
+ }
+ //Since display parts are plain objects, this lives here
+ static deserializeDisplayParts(de, parts) {
+ const links = [];
+ const result = parts.map((part) => {
+ switch (part.kind) {
+ case "text":
+ case "code":
+ return { ...part };
+ case "inline-tag": {
+ if (typeof part.target === "number") {
+ const part2 = {
+ kind: part.kind,
+ tag: part.tag,
+ text: part.text,
+ target: undefined,
+ tsLinkText: part.tsLinkText,
+ };
+ links.push([part.target, part2]);
+ return part2;
+ }
+ else if (typeof part.target === "string" ||
+ part.target === undefined) {
+ return {
+ kind: "inline-tag",
+ tag: part.tag,
+ text: part.text,
+ target: part.target,
+ tsLinkText: part.tsLinkText,
+ };
+ }
+ else if (typeof part.target === "object") {
+ return {
+ kind: "inline-tag",
+ tag: part.tag,
+ text: part.text,
+ target: new ReflectionSymbolId_1.ReflectionSymbolId(part.target),
+ tsLinkText: part.tsLinkText,
+ };
+ }
+ else {
+ (0, utils_1.assertNever)(part.target);
+ }
+ }
+ }
+ });
+ if (links.length) {
+ de.defer((project) => {
+ for (const [oldId, part] of links) {
+ part.target = project.getReflectionById(de.oldIdToNewId[oldId] ?? -1);
+ if (!part.target) {
+ de.logger.warn(`Serialized project contained a link to ${oldId} (${part.text}), which was not a part of the project.`);
+ }
+ }
+ });
+ }
+ return result;
+ }
+ /**
+ * Creates a new Comment instance.
+ */
+ constructor(summary = [], blockTags = [], modifierTags = new Set()) {
+ /**
+ * All associated block level tags.
+ */
+ this.blockTags = [];
+ /**
+ * All modifier tags present on the comment, e.g. `@alpha`, `@beta`.
+ */
+ this.modifierTags = new Set();
+ this.summary = summary;
+ this.blockTags = blockTags;
+ this.modifierTags = modifierTags;
+ extractLabelTag(this);
+ }
+ /**
+ * Create a deep clone of this comment.
+ */
+ clone() {
+ return new Comment(Comment.cloneDisplayParts(this.summary), this.blockTags.map((tag) => tag.clone()), new Set(this.modifierTags));
+ }
+ /**
+ * Returns true if this comment is completely empty.
+ * @internal
+ */
+ isEmpty() {
+ return !this.hasVisibleComponent() && this.modifierTags.size === 0;
+ }
+ /**
+ * Has this comment a visible component?
+ *
+ * @returns TRUE when this comment has a visible component.
+ */
+ hasVisibleComponent() {
+ return (this.summary.some((x) => x.kind !== "text" || x.text !== "") ||
+ this.blockTags.length > 0);
+ }
+ /**
+ * Test whether this comment contains a tag with the given name.
+ *
+ * @param tagName The name of the tag to look for.
+ * @returns TRUE when this comment contains a tag with the given name, otherwise FALSE.
+ */
+ hasModifier(tagName) {
+ return this.modifierTags.has(tagName);
+ }
+ removeModifier(tagName) {
+ this.modifierTags.delete(tagName);
+ }
+ /**
+ * Return the first tag with the given name.
+ *
+ * @param tagName The name of the tag to look for.
+ * @param paramName An optional parameter name to look for.
+ * @returns The found tag or undefined.
+ */
+ getTag(tagName) {
+ return this.blockTags.find((tag) => tag.tag === tagName);
+ }
+ /**
+ * Get all tags with the given tag name.
+ */
+ getTags(tagName) {
+ return this.blockTags.filter((tag) => tag.tag === tagName);
+ }
+ getIdentifiedTag(identifier, tagName) {
+ return this.blockTags.find((tag) => tag.tag === tagName && tag.name === identifier);
+ }
+ /**
+ * Removes all block tags with the given tag name from the comment.
+ * @param tagName
+ */
+ removeTags(tagName) {
+ (0, utils_1.removeIf)(this.blockTags, (tag) => tag.tag === tagName);
+ }
+ toObject(serializer) {
+ return {
+ summary: Comment.serializeDisplayParts(serializer, this.summary),
+ blockTags: serializer.toObjectsOptional(this.blockTags),
+ modifierTags: this.modifierTags.size > 0
+ ? Array.from(this.modifierTags)
+ : undefined,
+ label: this.label,
+ };
+ }
+ fromObject(de, obj) {
+ this.summary = Comment.deserializeDisplayParts(de, obj.summary);
+ this.blockTags =
+ obj.blockTags?.map((tagObj) => {
+ const tag = new CommentTag(tagObj.tag, []);
+ de.fromObject(tag, tagObj);
+ return tag;
+ }) || [];
+ this.modifierTags = new Set(obj.modifierTags);
+ this.label = obj.label;
+ }
+}
+exports.Comment = Comment;
+function extractLabelTag(comment) {
+ const index = comment.summary.findIndex((part) => part.kind === "inline-tag" && part.tag === "@label");
+ if (index !== -1) {
+ comment.label = comment.summary.splice(index, 1)[0].text;
+ }
+}
diff --git a/node_modules/typedoc/dist/lib/models/comments/index.d.ts b/node_modules/typedoc/dist/lib/models/comments/index.d.ts
new file mode 100644
index 0000000..15dc5ee
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/comments/index.d.ts
@@ -0,0 +1,2 @@
+export { Comment, CommentTag } from "./comment";
+export type { CommentDisplayPart, InlineTagDisplayPart } from "./comment";
diff --git a/node_modules/typedoc/dist/lib/models/comments/index.js b/node_modules/typedoc/dist/lib/models/comments/index.js
new file mode 100644
index 0000000..0ff3fcf
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/comments/index.js
@@ -0,0 +1,6 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.CommentTag = exports.Comment = void 0;
+var comment_1 = require("./comment");
+Object.defineProperty(exports, "Comment", { enumerable: true, get: function () { return comment_1.Comment; } });
+Object.defineProperty(exports, "CommentTag", { enumerable: true, get: function () { return comment_1.CommentTag; } });
diff --git a/node_modules/typedoc/dist/lib/models/index.d.ts b/node_modules/typedoc/dist/lib/models/index.d.ts
new file mode 100644
index 0000000..7d31fb0
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/index.d.ts
@@ -0,0 +1,6 @@
+export * from "./reflections/index";
+export * from "./types";
+export * from "./comments/index";
+export * from "./sources/index";
+export * from "./ReflectionGroup";
+export * from "./ReflectionCategory";
diff --git a/node_modules/typedoc/dist/lib/models/index.js b/node_modules/typedoc/dist/lib/models/index.js
new file mode 100644
index 0000000..dd0f59a
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/index.js
@@ -0,0 +1,22 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+__exportStar(require("./reflections/index"), exports);
+__exportStar(require("./types"), exports);
+__exportStar(require("./comments/index"), exports);
+__exportStar(require("./sources/index"), exports);
+__exportStar(require("./ReflectionGroup"), exports);
+__exportStar(require("./ReflectionCategory"), exports);
diff --git a/node_modules/typedoc/dist/lib/models/reflections/ReflectionSymbolId.d.ts b/node_modules/typedoc/dist/lib/models/reflections/ReflectionSymbolId.d.ts
new file mode 100644
index 0000000..d3f6231
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/ReflectionSymbolId.d.ts
@@ -0,0 +1,29 @@
+import ts from "typescript";
+import type { JSONOutput, Serializer } from "../../serialization/index";
+/**
+ * See {@link ReflectionSymbolId}
+ */
+export type ReflectionSymbolIdString = string & {
+ readonly __reflectionSymbolId: unique symbol;
+};
+/**
+ * This exists so that TypeDoc can store a unique identifier for a `ts.Symbol` without
+ * keeping a reference to the `ts.Symbol` itself. This identifier should be stable across
+ * runs so long as the symbol is exported from the same file.
+ */
+export declare class ReflectionSymbolId {
+ readonly fileName: string;
+ readonly qualifiedName: string;
+ /**
+ * Note: This is **not** serialized. It exists for sorting by declaration order, but
+ * should not be needed when deserializing from JSON.
+ */
+ pos: number;
+ constructor(symbol: ts.Symbol, declaration?: ts.Declaration);
+ constructor(json: JSONOutput.ReflectionSymbolId);
+ getStableKey(): ReflectionSymbolIdString;
+ toObject(serializer: Serializer): {
+ sourceFileName: string;
+ qualifiedName: string;
+ };
+}
diff --git a/node_modules/typedoc/dist/lib/models/reflections/ReflectionSymbolId.js b/node_modules/typedoc/dist/lib/models/reflections/ReflectionSymbolId.js
new file mode 100644
index 0000000..2670c2c
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/ReflectionSymbolId.js
@@ -0,0 +1,95 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ReflectionSymbolId = void 0;
+const fs_1 = require("fs");
+const path_1 = require("path");
+const typescript_1 = __importDefault(require("typescript"));
+const fs_2 = require("../../utils/fs");
+const tsutils_1 = require("../../utils/tsutils");
+const validation_1 = require("../../utils/validation");
+const paths_1 = require("../../utils/paths");
+/**
+ * This exists so that TypeDoc can store a unique identifier for a `ts.Symbol` without
+ * keeping a reference to the `ts.Symbol` itself. This identifier should be stable across
+ * runs so long as the symbol is exported from the same file.
+ */
+class ReflectionSymbolId {
+ constructor(symbol, declaration) {
+ if ("name" in symbol) {
+ declaration ?? (declaration = symbol?.declarations?.[0]);
+ this.fileName = (0, paths_1.normalizePath)(declaration?.getSourceFile().fileName ?? "\0");
+ if (symbol.declarations?.some(typescript_1.default.isSourceFile)) {
+ this.qualifiedName = "";
+ }
+ else {
+ this.qualifiedName = (0, tsutils_1.getQualifiedName)(symbol, symbol.name);
+ }
+ this.pos = declaration?.pos ?? Infinity;
+ }
+ else {
+ this.fileName = symbol.sourceFileName;
+ this.qualifiedName = symbol.qualifiedName;
+ this.pos = Infinity;
+ }
+ }
+ getStableKey() {
+ if (Number.isFinite(this.pos)) {
+ return `${this.fileName}\0${this.qualifiedName}\0${this.pos}`;
+ }
+ else {
+ return `${this.fileName}\0${this.qualifiedName}`;
+ }
+ }
+ toObject(serializer) {
+ return {
+ sourceFileName: (0, path_1.isAbsolute)(this.fileName)
+ ? (0, paths_1.normalizePath)((0, path_1.relative)(serializer.projectRoot, resolveDeclarationMaps(this.fileName)))
+ : this.fileName,
+ qualifiedName: this.qualifiedName,
+ };
+ }
+}
+exports.ReflectionSymbolId = ReflectionSymbolId;
+const declarationMapCache = new Map();
+/**
+ * See also getTsSourceFromJsSource in package-manifest.ts.
+ */
+function resolveDeclarationMaps(file) {
+ if (!file.endsWith(".d.ts"))
+ return file;
+ if (declarationMapCache.has(file))
+ return declarationMapCache.get(file);
+ const mapFile = file + ".map";
+ if (!(0, fs_1.existsSync)(mapFile))
+ return file;
+ let sourceMap;
+ try {
+ sourceMap = JSON.parse((0, fs_2.readFile)(mapFile));
+ }
+ catch {
+ return file;
+ }
+ if ((0, validation_1.validate)({
+ file: String,
+ sourceRoot: (0, validation_1.optional)(String),
+ sources: [Array, String],
+ }, sourceMap)) {
+ // There's a pretty large assumption in here that we only have
+ // 1 source file per js file. This is a pretty standard typescript approach,
+ // but people might do interesting things with transpilation that could break this.
+ let source = sourceMap.sources[0];
+ // If we have a sourceRoot, trim any leading slash from the source, and join them
+ // Similar to how it's done at https://github.com/mozilla/source-map/blob/58819f09018d56ef84dc41ba9c93f554e0645169/lib/util.js#L412
+ if (sourceMap.sourceRoot !== undefined) {
+ source = source.replace(/^\//, "");
+ source = (0, path_1.join)(sourceMap.sourceRoot, source);
+ }
+ const result = (0, path_1.resolve)(mapFile, "..", source);
+ declarationMapCache.set(file, result);
+ return result;
+ }
+ return file;
+}
diff --git a/node_modules/typedoc/dist/lib/models/reflections/abstract.d.ts b/node_modules/typedoc/dist/lib/models/reflections/abstract.d.ts
new file mode 100644
index 0000000..677037c
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/abstract.d.ts
@@ -0,0 +1,230 @@
+import { Comment } from "../comments/comment";
+import type { ProjectReflection } from "./project";
+import type { NeverIfInternal } from "../../utils";
+import { ReflectionKind } from "./kind";
+import type { Serializer, Deserializer, JSONOutput } from "../../serialization";
+import type { ReflectionVariant } from "./variant";
+import type { DeclarationReflection } from "./declaration";
+/**
+ * Reset the reflection id.
+ *
+ * Used by the test cases to ensure the reflection ids won't change between runs.
+ */
+export declare function resetReflectionID(): void;
+export declare enum ReflectionFlag {
+ None = 0,
+ Private = 1,
+ Protected = 2,
+ Public = 4,
+ Static = 8,
+ ExportAssignment = 16,
+ External = 32,
+ Optional = 64,
+ DefaultValue = 128,
+ Rest = 256,
+ Abstract = 512,
+ Const = 1024,
+ Let = 2048,
+ Readonly = 4096
+}
+/**
+ * This must extend Array in order to work with Handlebar's each helper.
+ */
+export declare class ReflectionFlags extends Array<string> {
+ private flags;
+ hasFlag(flag: ReflectionFlag): boolean;
+ /**
+ * Is this a private member?
+ */
+ get isPrivate(): boolean;
+ /**
+ * Is this a protected member?
+ */
+ get isProtected(): boolean;
+ /**
+ * Is this a public member?
+ */
+ get isPublic(): boolean;
+ /**
+ * Is this a static member?
+ */
+ get isStatic(): boolean;
+ /**
+ * Is this a declaration from an external document?
+ */
+ get isExternal(): boolean;
+ /**
+ * Whether this reflection is an optional component or not.
+ *
+ * Applies to function parameters and object members.
+ */
+ get isOptional(): boolean;
+ /**
+ * Whether it's a rest parameter, like `foo(...params);`.
+ */
+ get isRest(): boolean;
+ get hasExportAssignment(): boolean;
+ get isAbstract(): boolean;
+ get isConst(): boolean;
+ get isReadonly(): boolean;
+ setFlag(flag: ReflectionFlag, set: boolean): void;
+ private setSingleFlag;
+ private static serializedFlags;
+ toObject(): JSONOutput.ReflectionFlags;
+ fromObject(obj: JSONOutput.ReflectionFlags): void;
+}
+export declare enum TraverseProperty {
+ Children = 0,
+ Parameters = 1,
+ TypeLiteral = 2,
+ TypeParameter = 3,
+ Signatures = 4,
+ IndexSignature = 5,
+ GetSignature = 6,
+ SetSignature = 7
+}
+export interface TraverseCallback {
+ /**
+ * May return false to bail out of any further iteration. To preserve backwards compatibility, if
+ * a function returns undefined, iteration must continue.
+ */
+ (reflection: Reflection, property: TraverseProperty): boolean | NeverIfInternal<void>;
+}
+/**
+ * Base class for all reflection classes.
+ *
+ * While generating a documentation, TypeDoc generates an instance of {@link ProjectReflection}
+ * as the root for all reflections within the project. All other reflections are represented
+ * by the {@link DeclarationReflection} class.
+ *
+ * This base class exposes the basic properties one may use to traverse the reflection tree.
+ * You can use the {@link ContainerReflection.children} and {@link parent} properties to walk the tree. The {@link ContainerReflection.groups} property
+ * contains a list of all children grouped and sorted for rendering.
+ */
+export declare abstract class Reflection {
+ /**
+ * Discriminator representing the type of reflection represented by this object.
+ */
+ abstract readonly variant: keyof ReflectionVariant;
+ /**
+ * Unique id of this reflection.
+ */
+ id: number;
+ /**
+ * The symbol name of this reflection.
+ */
+ name: string;
+ /**
+ * The kind of this reflection.
+ */
+ kind: ReflectionKind;
+ flags: ReflectionFlags;
+ /**
+ * The reflection this reflection is a child of.
+ */
+ parent?: Reflection;
+ get project(): ProjectReflection;
+ /**
+ * The parsed documentation comment attached to this reflection.
+ */
+ comment?: Comment;
+ /**
+ * The url of this reflection in the generated documentation.
+ * TODO: Reflections shouldn't know urls exist. Move this to a serializer.
+ */
+ url?: string;
+ /**
+ * The name of the anchor of this child.
+ * TODO: Reflections shouldn't know anchors exist. Move this to a serializer.
+ */
+ anchor?: string;
+ /**
+ * Is the url pointing to an individual document?
+ *
+ * When FALSE, the url points to an anchor tag on a page of a different reflection.
+ * TODO: Reflections shouldn't know how they are rendered. Move this to the correct serializer.
+ */
+ hasOwnDocument?: boolean;
+ /**
+ * Url safe alias for this reflection.
+ *
+ * @see {@link BaseReflection.getAlias}
+ */
+ private _alias?;
+ private _aliases?;
+ constructor(name: string, kind: ReflectionKind, parent?: Reflection);
+ /**
+ * Test whether this reflection is of the given kind.
+ */
+ kindOf(kind: ReflectionKind | ReflectionKind[]): boolean;
+ /**
+ * Return the full name of this reflection. Intended for use in debugging. For log messages
+ * intended to be displayed to the user for them to fix, prefer {@link getFriendlyFullName} instead.
+ *
+ * The full name contains the name of this reflection and the names of all parent reflections.
+ *
+ * @param separator Separator used to join the names of the reflections.
+ * @returns The full name of this reflection.
+ */
+ getFullName(separator?: string): string;
+ /**
+ * Return the full name of this reflection, with signature names dropped if possible without
+ * introducing ambiguity in the name.
+ */
+ getFriendlyFullName(): string;
+ /**
+ * Set a flag on this reflection.
+ */
+ setFlag(flag: ReflectionFlag, value?: boolean): void;
+ /**
+ * Return an url safe alias for this reflection.
+ */
+ getAlias(): string;
+ /**
+ * Has this reflection a visible comment?
+ *
+ * @returns TRUE when this reflection has a visible comment.
+ */
+ hasComment(): boolean;
+ hasGetterOrSetter(): boolean;
+ /**
+ * Return a child by its name.
+ *
+ * @param names The name hierarchy of the child to look for.
+ * @returns The found child or undefined.
+ */
+ getChildByName(arg: string | string[]): Reflection | undefined;
+ /**
+ * Return whether this reflection is the root / project reflection.
+ */
+ isProject(): this is ProjectReflection;
+ isDeclaration(): this is DeclarationReflection;
+ /**
+ * Check if this reflection or any of its parents have been marked with the `@deprecated` tag.
+ */
+ isDeprecated(): boolean;
+ /**
+ * Traverse most potential child reflections of this reflection.
+ *
+ * Note: This may not necessarily traverse child reflections contained within the `type` property
+ * of the reflection, and should not be relied on for this. Support for checking object types will likely be removed in v0.25.
+ *
+ * The given callback will be invoked for all children, signatures and type parameters
+ * attached to this reflection.
+ *
+ * @param callback The callback function that should be applied for each child reflection.
+ */
+ abstract traverse(callback: TraverseCallback): void;
+ /**
+ * Return a string representation of this reflection.
+ */
+ toString(): string;
+ /**
+ * Return a string representation of this reflection and all of its children.
+ *
+ * @param indent Used internally to indent child reflections.
+ */
+ toStringHierarchy(indent?: string): string;
+ toObject(serializer: Serializer): JSONOutput.Reflection;
+ fromObject(de: Deserializer, obj: JSONOutput.Reflection): void;
+}
diff --git a/node_modules/typedoc/dist/lib/models/reflections/abstract.js b/node_modules/typedoc/dist/lib/models/reflections/abstract.js
new file mode 100644
index 0000000..7d4083a
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/abstract.js
@@ -0,0 +1,407 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Reflection = exports.TraverseProperty = exports.ReflectionFlags = exports.ReflectionFlag = exports.resetReflectionID = void 0;
+const assert_1 = require("assert");
+const comment_1 = require("../comments/comment");
+const utils_1 = require("./utils");
+const kind_1 = require("./kind");
+/**
+ * Current reflection id.
+ */
+let REFLECTION_ID = 0;
+/**
+ * Reset the reflection id.
+ *
+ * Used by the test cases to ensure the reflection ids won't change between runs.
+ */
+function resetReflectionID() {
+ REFLECTION_ID = 0;
+}
+exports.resetReflectionID = resetReflectionID;
+var ReflectionFlag;
+(function (ReflectionFlag) {
+ ReflectionFlag[ReflectionFlag["None"] = 0] = "None";
+ ReflectionFlag[ReflectionFlag["Private"] = 1] = "Private";
+ ReflectionFlag[ReflectionFlag["Protected"] = 2] = "Protected";
+ ReflectionFlag[ReflectionFlag["Public"] = 4] = "Public";
+ ReflectionFlag[ReflectionFlag["Static"] = 8] = "Static";
+ ReflectionFlag[ReflectionFlag["ExportAssignment"] = 16] = "ExportAssignment";
+ ReflectionFlag[ReflectionFlag["External"] = 32] = "External";
+ ReflectionFlag[ReflectionFlag["Optional"] = 64] = "Optional";
+ ReflectionFlag[ReflectionFlag["DefaultValue"] = 128] = "DefaultValue";
+ ReflectionFlag[ReflectionFlag["Rest"] = 256] = "Rest";
+ ReflectionFlag[ReflectionFlag["Abstract"] = 512] = "Abstract";
+ ReflectionFlag[ReflectionFlag["Const"] = 1024] = "Const";
+ ReflectionFlag[ReflectionFlag["Let"] = 2048] = "Let";
+ ReflectionFlag[ReflectionFlag["Readonly"] = 4096] = "Readonly";
+})(ReflectionFlag || (exports.ReflectionFlag = ReflectionFlag = {}));
+const relevantFlags = [
+ ReflectionFlag.Private,
+ ReflectionFlag.Protected,
+ ReflectionFlag.Static,
+ ReflectionFlag.ExportAssignment,
+ ReflectionFlag.Optional,
+ ReflectionFlag.DefaultValue,
+ ReflectionFlag.Rest,
+ ReflectionFlag.Abstract,
+ ReflectionFlag.Const,
+ ReflectionFlag.Readonly,
+];
+/**
+ * This must extend Array in order to work with Handlebar's each helper.
+ */
+class ReflectionFlags extends Array {
+ constructor() {
+ super(...arguments);
+ this.flags = ReflectionFlag.None;
+ }
+ hasFlag(flag) {
+ return (flag & this.flags) !== 0;
+ }
+ /**
+ * Is this a private member?
+ */
+ get isPrivate() {
+ return this.hasFlag(ReflectionFlag.Private);
+ }
+ /**
+ * Is this a protected member?
+ */
+ get isProtected() {
+ return this.hasFlag(ReflectionFlag.Protected);
+ }
+ /**
+ * Is this a public member?
+ */
+ get isPublic() {
+ return this.hasFlag(ReflectionFlag.Public);
+ }
+ /**
+ * Is this a static member?
+ */
+ get isStatic() {
+ return this.hasFlag(ReflectionFlag.Static);
+ }
+ /**
+ * Is this a declaration from an external document?
+ */
+ get isExternal() {
+ return this.hasFlag(ReflectionFlag.External);
+ }
+ /**
+ * Whether this reflection is an optional component or not.
+ *
+ * Applies to function parameters and object members.
+ */
+ get isOptional() {
+ return this.hasFlag(ReflectionFlag.Optional);
+ }
+ /**
+ * Whether it's a rest parameter, like `foo(...params);`.
+ */
+ get isRest() {
+ return this.hasFlag(ReflectionFlag.Rest);
+ }
+ get hasExportAssignment() {
+ return this.hasFlag(ReflectionFlag.ExportAssignment);
+ }
+ get isAbstract() {
+ return this.hasFlag(ReflectionFlag.Abstract);
+ }
+ get isConst() {
+ return this.hasFlag(ReflectionFlag.Const);
+ }
+ get isReadonly() {
+ return this.hasFlag(ReflectionFlag.Readonly);
+ }
+ setFlag(flag, set) {
+ switch (flag) {
+ case ReflectionFlag.Private:
+ this.setSingleFlag(ReflectionFlag.Private, set);
+ if (set) {
+ this.setFlag(ReflectionFlag.Protected, false);
+ this.setFlag(ReflectionFlag.Public, false);
+ }
+ break;
+ case ReflectionFlag.Protected:
+ this.setSingleFlag(ReflectionFlag.Protected, set);
+ if (set) {
+ this.setFlag(ReflectionFlag.Private, false);
+ this.setFlag(ReflectionFlag.Public, false);
+ }
+ break;
+ case ReflectionFlag.Public:
+ this.setSingleFlag(ReflectionFlag.Public, set);
+ if (set) {
+ this.setFlag(ReflectionFlag.Private, false);
+ this.setFlag(ReflectionFlag.Protected, false);
+ }
+ break;
+ default:
+ this.setSingleFlag(flag, set);
+ }
+ }
+ setSingleFlag(flag, set) {
+ const name = ReflectionFlag[flag].replace(/(.)([A-Z])/g, (_m, a, b) => a + " " + b.toLowerCase());
+ if (!set && this.hasFlag(flag)) {
+ if (relevantFlags.includes(flag)) {
+ this.splice(this.indexOf(name), 1);
+ }
+ this.flags ^= flag;
+ }
+ else if (set && !this.hasFlag(flag)) {
+ if (relevantFlags.includes(flag)) {
+ this.push(name);
+ }
+ this.flags |= flag;
+ }
+ }
+ toObject() {
+ return Object.fromEntries(ReflectionFlags.serializedFlags
+ .filter((flag) => this[flag])
+ .map((flag) => [flag, true]));
+ }
+ fromObject(obj) {
+ for (const key of Object.keys(obj)) {
+ const flagName = key.substring(2); // isPublic => Public
+ if (flagName in ReflectionFlag) {
+ this.setFlag(ReflectionFlag[flagName], true);
+ }
+ }
+ }
+}
+exports.ReflectionFlags = ReflectionFlags;
+ReflectionFlags.serializedFlags = [
+ "isPrivate",
+ "isProtected",
+ "isPublic",
+ "isStatic",
+ "isExternal",
+ "isOptional",
+ "isRest",
+ "hasExportAssignment",
+ "isAbstract",
+ "isConst",
+ "isReadonly",
+];
+var TraverseProperty;
+(function (TraverseProperty) {
+ TraverseProperty[TraverseProperty["Children"] = 0] = "Children";
+ TraverseProperty[TraverseProperty["Parameters"] = 1] = "Parameters";
+ TraverseProperty[TraverseProperty["TypeLiteral"] = 2] = "TypeLiteral";
+ TraverseProperty[TraverseProperty["TypeParameter"] = 3] = "TypeParameter";
+ TraverseProperty[TraverseProperty["Signatures"] = 4] = "Signatures";
+ TraverseProperty[TraverseProperty["IndexSignature"] = 5] = "IndexSignature";
+ TraverseProperty[TraverseProperty["GetSignature"] = 6] = "GetSignature";
+ TraverseProperty[TraverseProperty["SetSignature"] = 7] = "SetSignature";
+})(TraverseProperty || (exports.TraverseProperty = TraverseProperty = {}));
+/**
+ * Base class for all reflection classes.
+ *
+ * While generating a documentation, TypeDoc generates an instance of {@link ProjectReflection}
+ * as the root for all reflections within the project. All other reflections are represented
+ * by the {@link DeclarationReflection} class.
+ *
+ * This base class exposes the basic properties one may use to traverse the reflection tree.
+ * You can use the {@link ContainerReflection.children} and {@link parent} properties to walk the tree. The {@link ContainerReflection.groups} property
+ * contains a list of all children grouped and sorted for rendering.
+ */
+class Reflection {
+ get project() {
+ if (this.isProject())
+ return this;
+ (0, assert_1.ok)(this.parent, "Tried to get the project on a reflection not in a project");
+ return this.parent.project;
+ }
+ constructor(name, kind, parent) {
+ this.flags = new ReflectionFlags();
+ this.id = REFLECTION_ID++;
+ this.parent = parent;
+ this.name = name;
+ this.kind = kind;
+ // If our parent is external, we are too.
+ if (parent?.flags.isExternal) {
+ this.setFlag(ReflectionFlag.External);
+ }
+ }
+ /**
+ * Test whether this reflection is of the given kind.
+ */
+ kindOf(kind) {
+ const kindArray = Array.isArray(kind) ? kind : [kind];
+ return kindArray.some((kind) => (this.kind & kind) !== 0);
+ }
+ /**
+ * Return the full name of this reflection. Intended for use in debugging. For log messages
+ * intended to be displayed to the user for them to fix, prefer {@link getFriendlyFullName} instead.
+ *
+ * The full name contains the name of this reflection and the names of all parent reflections.
+ *
+ * @param separator Separator used to join the names of the reflections.
+ * @returns The full name of this reflection.
+ */
+ getFullName(separator = ".") {
+ if (this.parent && !this.parent.isProject()) {
+ return this.parent.getFullName(separator) + separator + this.name;
+ }
+ else {
+ return this.name;
+ }
+ }
+ /**
+ * Return the full name of this reflection, with signature names dropped if possible without
+ * introducing ambiguity in the name.
+ */
+ getFriendlyFullName() {
+ if (this.parent && !this.parent.isProject()) {
+ if (this.kindOf(kind_1.ReflectionKind.ConstructorSignature |
+ kind_1.ReflectionKind.CallSignature |
+ kind_1.ReflectionKind.GetSignature |
+ kind_1.ReflectionKind.SetSignature)) {
+ return this.parent.getFriendlyFullName();
+ }
+ return this.parent.getFriendlyFullName() + "." + this.name;
+ }
+ else {
+ return this.name;
+ }
+ }
+ /**
+ * Set a flag on this reflection.
+ */
+ setFlag(flag, value = true) {
+ this.flags.setFlag(flag, value);
+ }
+ /**
+ * Return an url safe alias for this reflection.
+ */
+ getAlias() {
+ if (!this._alias) {
+ let alias = this.name.replace(/\W/g, "_");
+ if (alias === "") {
+ alias = "reflection-" + this.id;
+ }
+ // NTFS/ExFAT use uppercase, so we will too. It probably won't matter
+ // in this case since names will generally be valid identifiers, but to be safe...
+ const upperAlias = alias.toUpperCase();
+ let target = this;
+ while (target.parent && !target.hasOwnDocument) {
+ target = target.parent;
+ }
+ target._aliases || (target._aliases = new Map());
+ let suffix = "";
+ if (!target._aliases.has(upperAlias)) {
+ target._aliases.set(upperAlias, 1);
+ }
+ else {
+ const count = target._aliases.get(upperAlias);
+ suffix = "-" + count.toString();
+ target._aliases.set(upperAlias, count + 1);
+ }
+ alias += suffix;
+ this._alias = alias;
+ }
+ return this._alias;
+ }
+ /**
+ * Has this reflection a visible comment?
+ *
+ * @returns TRUE when this reflection has a visible comment.
+ */
+ hasComment() {
+ return this.comment ? this.comment.hasVisibleComponent() : false;
+ }
+ hasGetterOrSetter() {
+ return false;
+ }
+ /**
+ * Return a child by its name.
+ *
+ * @param names The name hierarchy of the child to look for.
+ * @returns The found child or undefined.
+ */
+ getChildByName(arg) {
+ const names = Array.isArray(arg)
+ ? arg
+ : (0, utils_1.splitUnquotedString)(arg, ".");
+ const name = names[0];
+ let result;
+ this.traverse((child) => {
+ if (child.name === name) {
+ if (names.length <= 1) {
+ result = child;
+ }
+ else {
+ result = child.getChildByName(names.slice(1));
+ }
+ return false;
+ }
+ return true;
+ });
+ return result;
+ }
+ /**
+ * Return whether this reflection is the root / project reflection.
+ */
+ isProject() {
+ return false;
+ }
+ isDeclaration() {
+ return false;
+ }
+ /**
+ * Check if this reflection or any of its parents have been marked with the `@deprecated` tag.
+ */
+ isDeprecated() {
+ if (this.comment?.getTag("@deprecated")) {
+ return true;
+ }
+ return this.parent?.isDeprecated() ?? false;
+ }
+ /**
+ * Return a string representation of this reflection.
+ */
+ toString() {
+ return kind_1.ReflectionKind[this.kind] + " " + this.name;
+ }
+ /**
+ * Return a string representation of this reflection and all of its children.
+ *
+ * @param indent Used internally to indent child reflections.
+ */
+ toStringHierarchy(indent = "") {
+ const lines = [indent + this.toString()];
+ indent += " ";
+ this.traverse((child) => {
+ lines.push(child.toStringHierarchy(indent));
+ return true;
+ });
+ return lines.join("\n");
+ }
+ toObject(serializer) {
+ return {
+ id: this.id,
+ name: this.name,
+ variant: this.variant,
+ kind: this.kind,
+ flags: this.flags.toObject(),
+ comment: this.comment && !this.comment.isEmpty()
+ ? serializer.toObject(this.comment)
+ : undefined,
+ };
+ }
+ fromObject(de, obj) {
+ // DO NOT copy id from obj. When deserializing reflections
+ // they should be given new ids since they belong to a different project.
+ this.name = obj.name;
+ // Skip copying variant, we know it's already the correct value because the deserializer
+ // will construct the correct class type.
+ this.kind = obj.kind;
+ this.flags.fromObject(obj.flags);
+ // Parent is set during construction, so we don't need to do it here.
+ this.comment = de.revive(obj.comment, () => new comment_1.Comment());
+ // url, anchor, hasOwnDocument, _alias, _aliases are set during rendering and only relevant during render.
+ // It doesn't make sense to serialize them to json, or restore them.
+ }
+}
+exports.Reflection = Reflection;
diff --git a/node_modules/typedoc/dist/lib/models/reflections/container.d.ts b/node_modules/typedoc/dist/lib/models/reflections/container.d.ts
new file mode 100644
index 0000000..521a319
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/container.d.ts
@@ -0,0 +1,30 @@
+import { Reflection, TraverseCallback } from "./abstract";
+import { ReflectionCategory } from "../ReflectionCategory";
+import { ReflectionGroup } from "../ReflectionGroup";
+import type { ReflectionKind } from "./kind";
+import type { Serializer, JSONOutput, Deserializer } from "../../serialization";
+import type { DeclarationReflection } from "./declaration";
+export declare abstract class ContainerReflection extends Reflection {
+ /**
+ * The children of this reflection.
+ */
+ children?: DeclarationReflection[];
+ /**
+ * All children grouped by their kind.
+ */
+ groups?: ReflectionGroup[];
+ /**
+ * All children grouped by their category.
+ */
+ categories?: ReflectionCategory[];
+ /**
+ * Return a list of all children of a certain kind.
+ *
+ * @param kind The desired kind of children.
+ * @returns An array containing all children with the desired kind.
+ */
+ getChildrenByKind(kind: ReflectionKind): DeclarationReflection[];
+ traverse(callback: TraverseCallback): void;
+ toObject(serializer: Serializer): JSONOutput.ContainerReflection;
+ fromObject(de: Deserializer, obj: JSONOutput.ContainerReflection): void;
+}
diff --git a/node_modules/typedoc/dist/lib/models/reflections/container.js b/node_modules/typedoc/dist/lib/models/reflections/container.js
new file mode 100644
index 0000000..001cdb9
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/container.js
@@ -0,0 +1,39 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ContainerReflection = void 0;
+const abstract_1 = require("./abstract");
+const ReflectionCategory_1 = require("../ReflectionCategory");
+const ReflectionGroup_1 = require("../ReflectionGroup");
+class ContainerReflection extends abstract_1.Reflection {
+ /**
+ * Return a list of all children of a certain kind.
+ *
+ * @param kind The desired kind of children.
+ * @returns An array containing all children with the desired kind.
+ */
+ getChildrenByKind(kind) {
+ return (this.children || []).filter((child) => child.kindOf(kind));
+ }
+ traverse(callback) {
+ for (const child of this.children?.slice() || []) {
+ if (callback(child, abstract_1.TraverseProperty.Children) === false) {
+ return;
+ }
+ }
+ }
+ toObject(serializer) {
+ return {
+ ...super.toObject(serializer),
+ children: serializer.toObjectsOptional(this.children),
+ groups: serializer.toObjectsOptional(this.groups),
+ categories: serializer.toObjectsOptional(this.categories),
+ };
+ }
+ fromObject(de, obj) {
+ super.fromObject(de, obj);
+ this.children = de.reviveMany(obj.children, (child) => de.constructReflection(child));
+ this.groups = de.reviveMany(obj.groups, (group) => new ReflectionGroup_1.ReflectionGroup(group.title));
+ this.categories = de.reviveMany(obj.categories, (cat) => new ReflectionCategory_1.ReflectionCategory(cat.title));
+ }
+}
+exports.ContainerReflection = ContainerReflection;
diff --git a/node_modules/typedoc/dist/lib/models/reflections/declaration.d.ts b/node_modules/typedoc/dist/lib/models/reflections/declaration.d.ts
new file mode 100644
index 0000000..8e12439
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/declaration.d.ts
@@ -0,0 +1,158 @@
+import type * as ts from "typescript";
+import { ReferenceType, Type, type SomeType } from "../types";
+import { type TraverseCallback } from "./abstract";
+import { ContainerReflection } from "./container";
+import type { SignatureReflection } from "./signature";
+import type { TypeParameterReflection } from "./type-parameter";
+import type { Serializer, JSONOutput, Deserializer } from "../../serialization";
+import { CommentDisplayPart } from "../comments";
+import { SourceReference } from "../sources/file";
+/**
+ * Stores hierarchical type data.
+ *
+ * @see {@link DeclarationReflection.typeHierarchy}
+ */
+export interface DeclarationHierarchy {
+ /**
+ * The types represented by this node in the hierarchy.
+ */
+ types: Type[];
+ /**
+ * The next hierarchy level.
+ */
+ next?: DeclarationHierarchy;
+ /**
+ * Is this the entry containing the target type?
+ */
+ isTarget?: boolean;
+}
+/**
+ * @internal
+ */
+export declare enum ConversionFlags {
+ None = 0,
+ VariableOrPropertySource = 1
+}
+/**
+ * A reflection that represents a single declaration emitted by the TypeScript compiler.
+ *
+ * All parts of a project are represented by DeclarationReflection instances. The actual
+ * kind of a reflection is stored in its ´kind´ member.
+ */
+export declare class DeclarationReflection extends ContainerReflection {
+ readonly variant: "declaration" | "reference";
+ /**
+ * A list of all source files that contributed to this reflection.
+ */
+ sources?: SourceReference[];
+ /**
+ * A precomputed boost derived from the searchCategoryBoosts and searchGroupBoosts options, used when
+ * boosting search relevance scores at runtime. May be modified by plugins.
+ */
+ relevanceBoost?: number;
+ /**
+ * The escaped name of this declaration assigned by the TS compiler if there is an associated symbol.
+ * This is used to retrieve properties for analyzing inherited members.
+ *
+ * Not serialized, only useful during conversion.
+ * @internal
+ */
+ escapedName?: ts.__String;
+ /**
+ * The type of the reflection.
+ *
+ * If the reflection represents a variable or a property, this is the value type.<br />
+ * If the reflection represents a signature, this is the return type.
+ */
+ type?: SomeType;
+ typeParameters?: TypeParameterReflection[];
+ /**
+ * A list of call signatures attached to this declaration.
+ *
+ * TypeDoc creates one declaration per function that may contain one or more
+ * signature reflections.
+ */
+ signatures?: SignatureReflection[];
+ /**
+ * The index signature of this declaration.
+ */
+ indexSignature?: SignatureReflection;
+ /**
+ * The get signature of this declaration.
+ */
+ getSignature?: SignatureReflection;
+ /**
+ * The set signature of this declaration.
+ */
+ setSignature?: SignatureReflection;
+ /**
+ * The default value of this reflection.
+ *
+ * Applies to function parameters, variables, and properties.
+ */
+ defaultValue?: string;
+ /**
+ * A type that points to the reflection that has been overwritten by this reflection.
+ *
+ * Applies to interface and class members.
+ */
+ overwrites?: ReferenceType;
+ /**
+ * A type that points to the reflection this reflection has been inherited from.
+ *
+ * Applies to interface and class members.
+ */
+ inheritedFrom?: ReferenceType;
+ /**
+ * A type that points to the reflection this reflection is the implementation of.
+ *
+ * Applies to class members.
+ */
+ implementationOf?: ReferenceType;
+ /**
+ * A list of all types this reflection extends (e.g. the parent classes).
+ */
+ extendedTypes?: SomeType[];
+ /**
+ * A list of all types that extend this reflection (e.g. the subclasses).
+ */
+ extendedBy?: ReferenceType[];
+ /**
+ * A list of all types this reflection implements.
+ */
+ implementedTypes?: SomeType[];
+ /**
+ * A list of all types that implement this reflection.
+ */
+ implementedBy?: ReferenceType[];
+ /**
+ * Contains a simplified representation of the type hierarchy suitable for being
+ * rendered in templates.
+ */
+ typeHierarchy?: DeclarationHierarchy;
+ /**
+ * The contents of the readme file of the module when found.
+ */
+ readme?: CommentDisplayPart[];
+ /**
+ * The version of the module when found.
+ */
+ packageVersion?: string;
+ /**
+ * Flags for information about a reflection which is needed solely during conversion.
+ * @internal
+ */
+ conversionFlags: ConversionFlags;
+ isDeclaration(): this is DeclarationReflection;
+ hasGetterOrSetter(): boolean;
+ getAllSignatures(): SignatureReflection[];
+ /** @internal */
+ getNonIndexSignatures(): SignatureReflection[];
+ traverse(callback: TraverseCallback): void;
+ /**
+ * Return a string representation of this reflection.
+ */
+ toString(): string;
+ toObject(serializer: Serializer): JSONOutput.DeclarationReflection;
+ fromObject(de: Deserializer, obj: JSONOutput.DeclarationReflection | JSONOutput.ProjectReflection): void;
+}
diff --git a/node_modules/typedoc/dist/lib/models/reflections/declaration.js b/node_modules/typedoc/dist/lib/models/reflections/declaration.js
new file mode 100644
index 0000000..515cb76
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/declaration.js
@@ -0,0 +1,175 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.DeclarationReflection = exports.ConversionFlags = void 0;
+const types_1 = require("../types");
+const abstract_1 = require("./abstract");
+const container_1 = require("./container");
+const comments_1 = require("../comments");
+const file_1 = require("../sources/file");
+const ReflectionSymbolId_1 = require("./ReflectionSymbolId");
+const kind_1 = require("./kind");
+/**
+ * @internal
+ */
+var ConversionFlags;
+(function (ConversionFlags) {
+ ConversionFlags[ConversionFlags["None"] = 0] = "None";
+ ConversionFlags[ConversionFlags["VariableOrPropertySource"] = 1] = "VariableOrPropertySource";
+})(ConversionFlags || (exports.ConversionFlags = ConversionFlags = {}));
+/**
+ * A reflection that represents a single declaration emitted by the TypeScript compiler.
+ *
+ * All parts of a project are represented by DeclarationReflection instances. The actual
+ * kind of a reflection is stored in its ´kind´ member.
+ */
+class DeclarationReflection extends container_1.ContainerReflection {
+ constructor() {
+ super(...arguments);
+ this.variant = "declaration";
+ /**
+ * Flags for information about a reflection which is needed solely during conversion.
+ * @internal
+ */
+ this.conversionFlags = ConversionFlags.None;
+ }
+ isDeclaration() {
+ return true;
+ }
+ hasGetterOrSetter() {
+ return !!this.getSignature || !!this.setSignature;
+ }
+ getAllSignatures() {
+ let result = [];
+ if (this.signatures) {
+ result = result.concat(this.signatures);
+ }
+ if (this.indexSignature) {
+ result.push(this.indexSignature);
+ }
+ if (this.getSignature) {
+ result.push(this.getSignature);
+ }
+ if (this.setSignature) {
+ result.push(this.setSignature);
+ }
+ return result;
+ }
+ /** @internal */
+ getNonIndexSignatures() {
+ return [].concat(this.signatures ?? [], this.setSignature ?? [], this.getSignature ?? []);
+ }
+ traverse(callback) {
+ for (const parameter of this.typeParameters?.slice() || []) {
+ if (callback(parameter, abstract_1.TraverseProperty.TypeParameter) === false) {
+ return;
+ }
+ }
+ if (this.type instanceof types_1.ReflectionType) {
+ if (callback(this.type.declaration, abstract_1.TraverseProperty.TypeLiteral) === false) {
+ return;
+ }
+ }
+ for (const signature of this.signatures?.slice() || []) {
+ if (callback(signature, abstract_1.TraverseProperty.Signatures) === false) {
+ return;
+ }
+ }
+ if (this.indexSignature) {
+ if (callback(this.indexSignature, abstract_1.TraverseProperty.IndexSignature) === false) {
+ return;
+ }
+ }
+ if (this.getSignature) {
+ if (callback(this.getSignature, abstract_1.TraverseProperty.GetSignature) ===
+ false) {
+ return;
+ }
+ }
+ if (this.setSignature) {
+ if (callback(this.setSignature, abstract_1.TraverseProperty.SetSignature) ===
+ false) {
+ return;
+ }
+ }
+ super.traverse(callback);
+ }
+ /**
+ * Return a string representation of this reflection.
+ */
+ toString() {
+ let result = super.toString();
+ if (this.typeParameters) {
+ const parameters = this.typeParameters.map((parameter) => parameter.name);
+ result += "<" + parameters.join(", ") + ">";
+ }
+ if (this.type) {
+ result += ":" + this.type.toString();
+ }
+ return result;
+ }
+ toObject(serializer) {
+ return {
+ ...super.toObject(serializer),
+ variant: this.variant,
+ packageVersion: this.packageVersion,
+ sources: serializer.toObjectsOptional(this.sources),
+ relevanceBoost: this.relevanceBoost === 1 ? undefined : this.relevanceBoost,
+ typeParameters: serializer.toObjectsOptional(this.typeParameters),
+ type: serializer.toObject(this.type),
+ signatures: serializer.toObjectsOptional(this.signatures),
+ indexSignature: serializer.toObject(this.indexSignature),
+ getSignature: serializer.toObject(this.getSignature),
+ setSignature: serializer.toObject(this.setSignature),
+ defaultValue: this.defaultValue,
+ overwrites: serializer.toObject(this.overwrites),
+ inheritedFrom: serializer.toObject(this.inheritedFrom),
+ implementationOf: serializer.toObject(this.implementationOf),
+ extendedTypes: serializer.toObjectsOptional(this.extendedTypes),
+ extendedBy: serializer.toObjectsOptional(this.extendedBy),
+ implementedTypes: serializer.toObjectsOptional(this.implementedTypes),
+ implementedBy: serializer.toObjectsOptional(this.implementedBy),
+ };
+ }
+ fromObject(de, obj) {
+ super.fromObject(de, obj);
+ // This happens when merging multiple projects together.
+ // If updating this, also check ProjectReflection.fromObject.
+ if (obj.variant === "project") {
+ this.kind = kind_1.ReflectionKind.Module;
+ this.packageVersion = obj.packageVersion;
+ if (obj.readme) {
+ this.readme = comments_1.Comment.deserializeDisplayParts(de, obj.readme);
+ }
+ de.defer(() => {
+ for (const [id, sid] of Object.entries(obj.symbolIdMap || {})) {
+ const refl = this.project.getReflectionById(de.oldIdToNewId[+id] ?? -1);
+ if (refl) {
+ this.project.registerSymbolId(refl, new ReflectionSymbolId_1.ReflectionSymbolId(sid));
+ }
+ else {
+ de.logger.warn(`Serialized project contained a reflection with id ${id} but it was not present in deserialized project.`);
+ }
+ }
+ });
+ return;
+ }
+ this.packageVersion = obj.packageVersion;
+ this.sources = de.reviveMany(obj.sources, (src) => new file_1.SourceReference(src.fileName, src.line, src.character));
+ this.relevanceBoost = obj.relevanceBoost;
+ this.typeParameters = de.reviveMany(obj.typeParameters, (tp) => de.constructReflection(tp));
+ this.type = de.revive(obj.type, (t) => de.constructType(t));
+ this.signatures = de.reviveMany(obj.signatures, (r) => de.constructReflection(r));
+ this.indexSignature = de.revive(obj.indexSignature, (r) => de.constructReflection(r));
+ this.getSignature = de.revive(obj.getSignature, (r) => de.constructReflection(r));
+ this.setSignature = de.revive(obj.setSignature, (r) => de.constructReflection(r));
+ this.defaultValue = obj.defaultValue;
+ this.overwrites = de.reviveType(obj.overwrites);
+ this.inheritedFrom = de.reviveType(obj.inheritedFrom);
+ this.implementationOf = de.reviveType(obj.implementationOf);
+ this.extendedTypes = de.reviveMany(obj.extendedTypes, (t) => de.reviveType(t));
+ this.extendedBy = de.reviveMany(obj.extendedBy, (t) => de.reviveType(t));
+ this.implementedTypes = de.reviveMany(obj.implementedTypes, (t) => de.reviveType(t));
+ this.implementedBy = de.reviveMany(obj.implementedBy, (t) => de.reviveType(t));
+ }
+}
+exports.DeclarationReflection = DeclarationReflection;
diff --git a/node_modules/typedoc/dist/lib/models/reflections/index.d.ts b/node_modules/typedoc/dist/lib/models/reflections/index.d.ts
new file mode 100644
index 0000000..7bd65c6
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/index.d.ts
@@ -0,0 +1,14 @@
+export { Reflection, ReflectionFlag, ReflectionFlags, TraverseProperty, } from "./abstract";
+export type { TraverseCallback } from "./abstract";
+export { ContainerReflection } from "./container";
+export { DeclarationReflection, ConversionFlags } from "./declaration";
+export type { DeclarationHierarchy } from "./declaration";
+export { ReflectionKind } from "./kind";
+export { ParameterReflection } from "./parameter";
+export { ProjectReflection } from "./project";
+export { ReferenceReflection } from "./reference";
+export { SignatureReflection } from "./signature";
+export { TypeParameterReflection, VarianceModifier } from "./type-parameter";
+export { splitUnquotedString } from "./utils";
+export type { ReflectionVariant } from "./variant";
+export { ReflectionSymbolId, type ReflectionSymbolIdString, } from "./ReflectionSymbolId";
diff --git a/node_modules/typedoc/dist/lib/models/reflections/index.js b/node_modules/typedoc/dist/lib/models/reflections/index.js
new file mode 100644
index 0000000..29e8acd
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/index.js
@@ -0,0 +1,30 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ReflectionSymbolId = exports.splitUnquotedString = exports.VarianceModifier = exports.TypeParameterReflection = exports.SignatureReflection = exports.ReferenceReflection = exports.ProjectReflection = exports.ParameterReflection = exports.ReflectionKind = exports.ConversionFlags = exports.DeclarationReflection = exports.ContainerReflection = exports.TraverseProperty = exports.ReflectionFlags = exports.ReflectionFlag = exports.Reflection = void 0;
+var abstract_1 = require("./abstract");
+Object.defineProperty(exports, "Reflection", { enumerable: true, get: function () { return abstract_1.Reflection; } });
+Object.defineProperty(exports, "ReflectionFlag", { enumerable: true, get: function () { return abstract_1.ReflectionFlag; } });
+Object.defineProperty(exports, "ReflectionFlags", { enumerable: true, get: function () { return abstract_1.ReflectionFlags; } });
+Object.defineProperty(exports, "TraverseProperty", { enumerable: true, get: function () { return abstract_1.TraverseProperty; } });
+var container_1 = require("./container");
+Object.defineProperty(exports, "ContainerReflection", { enumerable: true, get: function () { return container_1.ContainerReflection; } });
+var declaration_1 = require("./declaration");
+Object.defineProperty(exports, "DeclarationReflection", { enumerable: true, get: function () { return declaration_1.DeclarationReflection; } });
+Object.defineProperty(exports, "ConversionFlags", { enumerable: true, get: function () { return declaration_1.ConversionFlags; } });
+var kind_1 = require("./kind");
+Object.defineProperty(exports, "ReflectionKind", { enumerable: true, get: function () { return kind_1.ReflectionKind; } });
+var parameter_1 = require("./parameter");
+Object.defineProperty(exports, "ParameterReflection", { enumerable: true, get: function () { return parameter_1.ParameterReflection; } });
+var project_1 = require("./project");
+Object.defineProperty(exports, "ProjectReflection", { enumerable: true, get: function () { return project_1.ProjectReflection; } });
+var reference_1 = require("./reference");
+Object.defineProperty(exports, "ReferenceReflection", { enumerable: true, get: function () { return reference_1.ReferenceReflection; } });
+var signature_1 = require("./signature");
+Object.defineProperty(exports, "SignatureReflection", { enumerable: true, get: function () { return signature_1.SignatureReflection; } });
+var type_parameter_1 = require("./type-parameter");
+Object.defineProperty(exports, "TypeParameterReflection", { enumerable: true, get: function () { return type_parameter_1.TypeParameterReflection; } });
+Object.defineProperty(exports, "VarianceModifier", { enumerable: true, get: function () { return type_parameter_1.VarianceModifier; } });
+var utils_1 = require("./utils");
+Object.defineProperty(exports, "splitUnquotedString", { enumerable: true, get: function () { return utils_1.splitUnquotedString; } });
+var ReflectionSymbolId_1 = require("./ReflectionSymbolId");
+Object.defineProperty(exports, "ReflectionSymbolId", { enumerable: true, get: function () { return ReflectionSymbolId_1.ReflectionSymbolId; } });
diff --git a/node_modules/typedoc/dist/lib/models/reflections/kind.d.ts b/node_modules/typedoc/dist/lib/models/reflections/kind.d.ts
new file mode 100644
index 0000000..afe86b0
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/kind.d.ts
@@ -0,0 +1,69 @@
+import type { EnumKeys } from "../../utils";
+/**
+ * Defines the available reflection kinds.
+ */
+export declare enum ReflectionKind {
+ Project = 1,
+ Module = 2,
+ Namespace = 4,
+ Enum = 8,
+ EnumMember = 16,
+ Variable = 32,
+ Function = 64,
+ Class = 128,
+ Interface = 256,
+ Constructor = 512,
+ Property = 1024,
+ Method = 2048,
+ CallSignature = 4096,
+ IndexSignature = 8192,
+ ConstructorSignature = 16384,
+ Parameter = 32768,
+ TypeLiteral = 65536,
+ TypeParameter = 131072,
+ Accessor = 262144,
+ GetSignature = 524288,
+ SetSignature = 1048576,
+ /** @deprecated will be removed in v0.25, not used */
+ ObjectLiteral = 2097152,
+ TypeAlias = 4194304,
+ Reference = 8388608
+}
+export declare namespace ReflectionKind {
+ type KindString = EnumKeys<typeof ReflectionKind>;
+ const All: number;
+ /** @internal */
+ const ClassOrInterface: number;
+ /** @internal */
+ const VariableOrProperty: number;
+ /** @internal */
+ const FunctionOrMethod: number;
+ /** @internal */
+ const ClassMember: number;
+ /** @internal */
+ const SomeSignature: number;
+ /** @internal */
+ const SomeModule: number;
+ /** @internal */
+ const SomeType: number;
+ /** @internal */
+ const SomeValue: number;
+ /** @internal */
+ const SomeMember: number;
+ /** @internal */
+ const SomeExport: number;
+ /** @internal */
+ const ExportContainer: number;
+ /** @internal */
+ const Inheritable: number;
+ /** @internal */
+ const ContainsCallSignatures: number;
+ /**
+ * Note: This does not include Class/Interface, even though they technically could contain index signatures
+ * @internal
+ */
+ const SignatureContainer: number;
+ function singularString(kind: ReflectionKind): string;
+ function pluralString(kind: ReflectionKind): string;
+ function classString(kind: ReflectionKind): string;
+}
diff --git a/node_modules/typedoc/dist/lib/models/reflections/kind.js b/node_modules/typedoc/dist/lib/models/reflections/kind.js
new file mode 100644
index 0000000..9f9300f
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/kind.js
@@ -0,0 +1,135 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ReflectionKind = void 0;
+/**
+ * Defines the available reflection kinds.
+ */
+var ReflectionKind;
+(function (ReflectionKind) {
+ ReflectionKind[ReflectionKind["Project"] = 1] = "Project";
+ ReflectionKind[ReflectionKind["Module"] = 2] = "Module";
+ ReflectionKind[ReflectionKind["Namespace"] = 4] = "Namespace";
+ ReflectionKind[ReflectionKind["Enum"] = 8] = "Enum";
+ ReflectionKind[ReflectionKind["EnumMember"] = 16] = "EnumMember";
+ ReflectionKind[ReflectionKind["Variable"] = 32] = "Variable";
+ ReflectionKind[ReflectionKind["Function"] = 64] = "Function";
+ ReflectionKind[ReflectionKind["Class"] = 128] = "Class";
+ ReflectionKind[ReflectionKind["Interface"] = 256] = "Interface";
+ ReflectionKind[ReflectionKind["Constructor"] = 512] = "Constructor";
+ ReflectionKind[ReflectionKind["Property"] = 1024] = "Property";
+ ReflectionKind[ReflectionKind["Method"] = 2048] = "Method";
+ ReflectionKind[ReflectionKind["CallSignature"] = 4096] = "CallSignature";
+ ReflectionKind[ReflectionKind["IndexSignature"] = 8192] = "IndexSignature";
+ ReflectionKind[ReflectionKind["ConstructorSignature"] = 16384] = "ConstructorSignature";
+ ReflectionKind[ReflectionKind["Parameter"] = 32768] = "Parameter";
+ ReflectionKind[ReflectionKind["TypeLiteral"] = 65536] = "TypeLiteral";
+ ReflectionKind[ReflectionKind["TypeParameter"] = 131072] = "TypeParameter";
+ ReflectionKind[ReflectionKind["Accessor"] = 262144] = "Accessor";
+ ReflectionKind[ReflectionKind["GetSignature"] = 524288] = "GetSignature";
+ ReflectionKind[ReflectionKind["SetSignature"] = 1048576] = "SetSignature";
+ /** @deprecated will be removed in v0.25, not used */
+ ReflectionKind[ReflectionKind["ObjectLiteral"] = 2097152] = "ObjectLiteral";
+ ReflectionKind[ReflectionKind["TypeAlias"] = 4194304] = "TypeAlias";
+ ReflectionKind[ReflectionKind["Reference"] = 8388608] = "Reference";
+})(ReflectionKind || (exports.ReflectionKind = ReflectionKind = {}));
+(function (ReflectionKind) {
+ ReflectionKind.All = ReflectionKind.Reference * 2 - 1;
+ /** @internal */
+ ReflectionKind.ClassOrInterface = ReflectionKind.Class | ReflectionKind.Interface;
+ /** @internal */
+ ReflectionKind.VariableOrProperty = ReflectionKind.Variable | ReflectionKind.Property;
+ /** @internal */
+ ReflectionKind.FunctionOrMethod = ReflectionKind.Function | ReflectionKind.Method;
+ /** @internal */
+ ReflectionKind.ClassMember = ReflectionKind.Accessor |
+ ReflectionKind.Constructor |
+ ReflectionKind.Method |
+ ReflectionKind.Property;
+ /** @internal */
+ ReflectionKind.SomeSignature = ReflectionKind.CallSignature |
+ ReflectionKind.IndexSignature |
+ ReflectionKind.ConstructorSignature |
+ ReflectionKind.GetSignature |
+ ReflectionKind.SetSignature;
+ /** @internal */
+ ReflectionKind.SomeModule = ReflectionKind.Namespace | ReflectionKind.Module;
+ /** @internal */
+ ReflectionKind.SomeType = ReflectionKind.Interface |
+ ReflectionKind.TypeLiteral |
+ ReflectionKind.TypeParameter |
+ ReflectionKind.TypeAlias;
+ /** @internal */
+ ReflectionKind.SomeValue = ReflectionKind.Variable |
+ ReflectionKind.Function |
+ ReflectionKind.ObjectLiteral;
+ /** @internal */
+ ReflectionKind.SomeMember = ReflectionKind.EnumMember |
+ ReflectionKind.Property |
+ ReflectionKind.Method |
+ ReflectionKind.Accessor;
+ /** @internal */
+ ReflectionKind.SomeExport = ReflectionKind.Module |
+ ReflectionKind.Namespace |
+ ReflectionKind.Enum |
+ ReflectionKind.Variable |
+ ReflectionKind.Function |
+ ReflectionKind.Class |
+ ReflectionKind.Interface |
+ ReflectionKind.TypeAlias |
+ ReflectionKind.Reference;
+ /** @internal */
+ ReflectionKind.ExportContainer = ReflectionKind.SomeModule | ReflectionKind.Project;
+ /** @internal */
+ ReflectionKind.Inheritable = ReflectionKind.Accessor |
+ ReflectionKind.IndexSignature |
+ ReflectionKind.Property |
+ ReflectionKind.Method |
+ ReflectionKind.Constructor;
+ /** @internal */
+ ReflectionKind.ContainsCallSignatures = ReflectionKind.Constructor |
+ ReflectionKind.Function |
+ ReflectionKind.Method;
+ /**
+ * Note: This does not include Class/Interface, even though they technically could contain index signatures
+ * @internal
+ */
+ ReflectionKind.SignatureContainer = ReflectionKind.ContainsCallSignatures | ReflectionKind.Accessor;
+ const SINGULARS = {
+ [ReflectionKind.Enum]: "Enumeration",
+ [ReflectionKind.EnumMember]: "Enumeration Member",
+ };
+ const PLURALS = {
+ [ReflectionKind.Class]: "Classes",
+ [ReflectionKind.Property]: "Properties",
+ [ReflectionKind.Enum]: "Enumerations",
+ [ReflectionKind.EnumMember]: "Enumeration Members",
+ [ReflectionKind.TypeAlias]: "Type Aliases",
+ };
+ function singularString(kind) {
+ if (kind in SINGULARS) {
+ return SINGULARS[kind];
+ }
+ else {
+ return getKindString(kind);
+ }
+ }
+ ReflectionKind.singularString = singularString;
+ function pluralString(kind) {
+ if (kind in PLURALS) {
+ return PLURALS[kind];
+ }
+ else {
+ return getKindString(kind) + "s";
+ }
+ }
+ ReflectionKind.pluralString = pluralString;
+ function classString(kind) {
+ return `tsd-kind-${ReflectionKind[kind]
+ .replace(/(.)([A-Z])/g, (_m, a, b) => `${a}-${b}`)
+ .toLowerCase()}`;
+ }
+ ReflectionKind.classString = classString;
+})(ReflectionKind || (exports.ReflectionKind = ReflectionKind = {}));
+function getKindString(kind) {
+ return ReflectionKind[kind].replace(/(.)([A-Z])/g, (_m, a, b) => a + " " + b.toLowerCase());
+}
diff --git a/node_modules/typedoc/dist/lib/models/reflections/parameter.d.ts b/node_modules/typedoc/dist/lib/models/reflections/parameter.d.ts
new file mode 100644
index 0000000..a3bb316
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/parameter.d.ts
@@ -0,0 +1,17 @@
+import type { SomeType } from "..";
+import { Reflection, TraverseCallback } from "./abstract";
+import type { SignatureReflection } from "./signature";
+import type { Serializer, JSONOutput, Deserializer } from "../../serialization";
+export declare class ParameterReflection extends Reflection {
+ readonly variant = "param";
+ parent?: SignatureReflection;
+ defaultValue?: string;
+ type?: SomeType;
+ traverse(callback: TraverseCallback): void;
+ /**
+ * Return a string representation of this reflection.
+ */
+ toString(): string;
+ toObject(serializer: Serializer): JSONOutput.ParameterReflection;
+ fromObject(de: Deserializer, obj: JSONOutput.ParameterReflection): void;
+}
diff --git a/node_modules/typedoc/dist/lib/models/reflections/parameter.js b/node_modules/typedoc/dist/lib/models/reflections/parameter.js
new file mode 100644
index 0000000..02a9378
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/parameter.js
@@ -0,0 +1,38 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ParameterReflection = void 0;
+const types_1 = require("../types");
+const abstract_1 = require("./abstract");
+class ParameterReflection extends abstract_1.Reflection {
+ constructor() {
+ super(...arguments);
+ this.variant = "param";
+ }
+ traverse(callback) {
+ if (this.type instanceof types_1.ReflectionType) {
+ if (callback(this.type.declaration, abstract_1.TraverseProperty.TypeLiteral) === false) {
+ return;
+ }
+ }
+ }
+ /**
+ * Return a string representation of this reflection.
+ */
+ toString() {
+ return super.toString() + (this.type ? ":" + this.type.toString() : "");
+ }
+ toObject(serializer) {
+ return {
+ ...super.toObject(serializer),
+ variant: this.variant,
+ type: serializer.toObject(this.type),
+ defaultValue: this.defaultValue,
+ };
+ }
+ fromObject(de, obj) {
+ super.fromObject(de, obj);
+ this.type = de.reviveType(obj.type);
+ this.defaultValue = obj.defaultValue;
+ }
+}
+exports.ParameterReflection = ParameterReflection;
diff --git a/node_modules/typedoc/dist/lib/models/reflections/project.d.ts b/node_modules/typedoc/dist/lib/models/reflections/project.d.ts
new file mode 100644
index 0000000..ba504ae
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/project.d.ts
@@ -0,0 +1,98 @@
+import { Reflection } from "./abstract";
+import { ContainerReflection } from "./container";
+import type * as ts from "typescript";
+import { ReflectionKind } from "./kind";
+import { CommentDisplayPart } from "../comments";
+import { ReflectionSymbolId } from "./ReflectionSymbolId";
+import type { Serializer } from "../../serialization/serializer";
+import type { Deserializer, JSONOutput } from "../../serialization/index";
+/**
+ * A reflection that represents the root of the project.
+ *
+ * The project reflection acts as a global index, one may receive all reflections
+ * and source files of the processed project through this reflection.
+ */
+export declare class ProjectReflection extends ContainerReflection {
+ readonly variant = "project";
+ private symbolToReflectionIdMap;
+ private reflectionIdToSymbolIdMap;
+ private reflectionIdToSymbolMap;
+ private referenceGraph?;
+ private reflectionChildren;
+ /**
+ * A list of all reflections within the project. DO NOT MUTATE THIS OBJECT.
+ * All mutation should be done via {@link registerReflection} and {@link removeReflection}
+ * to ensure that links to reflections remain valid.
+ *
+ * This may be replaced with a `Map<number, Reflection>` someday.
+ */
+ reflections: {
+ [id: number]: Reflection;
+ };
+ /**
+ * The name of the package that this reflection documents according to package.json.
+ */
+ packageName?: string;
+ /**
+ * The version of the package that this reflection documents according to package.json.
+ */
+ packageVersion?: string;
+ /**
+ * The contents of the readme.md file of the project when found.
+ */
+ readme?: CommentDisplayPart[];
+ constructor(name: string);
+ /**
+ * Return whether this reflection is the root / project reflection.
+ */
+ isProject(): this is ProjectReflection;
+ /**
+ * Return a list of all reflections in this project of a certain kind.
+ *
+ * @param kind The desired kind of reflection.
+ * @returns An array containing all reflections with the desired kind.
+ */
+ getReflectionsByKind(kind: ReflectionKind): Reflection[];
+ /**
+ * Registers the given reflection so that it can be quickly looked up by helper methods.
+ * Should be called for *every* reflection added to the project.
+ */
+ registerReflection(reflection: Reflection, symbol?: ts.Symbol): void;
+ /**
+ * Removes a reflection from the documentation. Can be used by plugins to filter reflections
+ * out of the generated documentation. Has no effect if the reflection is not present in the
+ * project.
+ */
+ removeReflection(reflection: Reflection): void;
+ /**
+ * Remove a reflection without updating the parent reflection to remove references to the removed reflection.
+ */
+ private _removeReflection;
+ /**
+ * Gets the reflection registered for the given reflection ID, or undefined if it is not present
+ * in the project.
+ */
+ getReflectionById(id: number): Reflection | undefined;
+ /**
+ * Gets the reflection associated with the given symbol, if it exists.
+ * @internal
+ */
+ getReflectionFromSymbol(symbol: ts.Symbol): Reflection | undefined;
+ /**
+ * Gets the reflection associated with the given symbol id, if it exists.
+ * @internal
+ */
+ getReflectionFromSymbolId(symbolId: ReflectionSymbolId): Reflection | undefined;
+ /** @internal */
+ getSymbolIdFromReflection(reflection: Reflection): ReflectionSymbolId | undefined;
+ /** @internal */
+ registerSymbolId(reflection: Reflection, id: ReflectionSymbolId): void;
+ /**
+ * THIS MAY NOT BE USED AFTER CONVERSION HAS FINISHED.
+ * @internal
+ */
+ getSymbolFromReflection(reflection: Reflection): ts.Symbol | undefined;
+ private getReferenceGraph;
+ toObject(serializer: Serializer): JSONOutput.ProjectReflection;
+ fromObject(de: Deserializer, obj: JSONOutput.ProjectReflection): void;
+}
diff --git a/node_modules/typedoc/dist/lib/models/reflections/project.js b/node_modules/typedoc/dist/lib/models/reflections/project.js
new file mode 100644
index 0000000..19deae5
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/project.js
@@ -0,0 +1,246 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ProjectReflection = void 0;
+const abstract_1 = require("./abstract");
+const container_1 = require("./container");
+const reference_1 = require("./reference");
+const types_1 = require("../types");
+const utils_1 = require("../../utils");
+const kind_1 = require("./kind");
+const comments_1 = require("../comments");
+const ReflectionSymbolId_1 = require("./ReflectionSymbolId");
+const map_1 = require("../../utils/map");
+/**
+ * A reflection that represents the root of the project.
+ *
+ * The project reflection acts as a global index, one may receive all reflections
+ * and source files of the processed project through this reflection.
+ */
+class ProjectReflection extends container_1.ContainerReflection {
+ constructor(name) {
+ super(name, kind_1.ReflectionKind.Project);
+ this.variant = "project";
+ // Used to resolve references.
+ this.symbolToReflectionIdMap = new map_1.StableKeyMap();
+ this.reflectionIdToSymbolIdMap = new Map();
+ this.reflectionIdToSymbolMap = new Map();
+ // Maps a reflection ID to all reflections with it as their parent.
+ this.reflectionChildren = new map_1.DefaultMap(() => []);
+ /**
+ * A list of all reflections within the project. DO NOT MUTATE THIS OBJECT.
+ * All mutation should be done via {@link registerReflection} and {@link removeReflection}
+ * to ensure that links to reflections remain valid.
+ *
+ * This may be replaced with a `Map<number, Reflection>` someday.
+ */
+ this.reflections = {};
+ this.reflections[this.id] = this;
+ }
+ /**
+ * Return whether this reflection is the root / project reflection.
+ */
+ isProject() {
+ return true;
+ }
+ /**
+ * Return a list of all reflections in this project of a certain kind.
+ *
+ * @param kind The desired kind of reflection.
+ * @returns An array containing all reflections with the desired kind.
+ */
+ getReflectionsByKind(kind) {
+ return Object.values(this.reflections).filter((reflection) => reflection.kindOf(kind));
+ }
+ /**
+ * Registers the given reflection so that it can be quickly looked up by helper methods.
+ * Should be called for *every* reflection added to the project.
+ */
+ registerReflection(reflection, symbol) {
+ this.referenceGraph = undefined;
+ if (reflection.parent) {
+ this.reflectionChildren
+ .get(reflection.parent.id)
+ .push(reflection.id);
+ }
+ this.reflections[reflection.id] = reflection;
+ if (symbol) {
+ const id = new ReflectionSymbolId_1.ReflectionSymbolId(symbol);
+ this.symbolToReflectionIdMap.set(id, this.symbolToReflectionIdMap.get(id) ?? reflection.id);
+ this.reflectionIdToSymbolIdMap.set(reflection.id, id);
+ this.reflectionIdToSymbolMap.set(reflection.id, symbol);
+ }
+ }
+ /**
+ * Removes a reflection from the documentation. Can be used by plugins to filter reflections
+ * out of the generated documentation. Has no effect if the reflection is not present in the
+ * project.
+ */
+ removeReflection(reflection) {
+ // Remove the reflection...
+ this._removeReflection(reflection);
+ // And now try to remove references to it in the parent reflection.
+ // This might not find anything if someone called removeReflection on a member of a union
+ // but I think that could only be caused by a plugin doing something weird, not by a regular
+ // user... so this is probably good enough for now. Reflections that live on types are
+ // kind of half-real anyways.
+ const parent = reflection.parent;
+ parent?.traverse((child, property) => {
+ if (child !== reflection) {
+ return true; // Continue iteration
+ }
+ if (property === abstract_1.TraverseProperty.Children) {
+ (0, utils_1.removeIfPresent)(parent.children, reflection);
+ }
+ else if (property === abstract_1.TraverseProperty.GetSignature) {
+ delete parent.getSignature;
+ }
+ else if (property === abstract_1.TraverseProperty.IndexSignature) {
+ delete parent.indexSignature;
+ }
+ else if (property === abstract_1.TraverseProperty.Parameters) {
+ (0, utils_1.removeIfPresent)(reflection.parent.parameters, reflection);
+ }
+ else if (property === abstract_1.TraverseProperty.SetSignature) {
+ delete parent.setSignature;
+ }
+ else if (property === abstract_1.TraverseProperty.Signatures) {
+ (0, utils_1.removeIfPresent)(parent.signatures, reflection);
+ }
+ else if (property === abstract_1.TraverseProperty.TypeLiteral) {
+ parent.type = new types_1.IntrinsicType("Object");
+ }
+ else if (property === abstract_1.TraverseProperty.TypeParameter) {
+ (0, utils_1.removeIfPresent)(parent.typeParameters, reflection);
+ }
+ return false; // Stop iteration
+ });
+ }
+ /**
+ * Remove a reflection without updating the parent reflection to remove references to the removed reflection.
+ */
+ _removeReflection(reflection) {
+ // Remove references pointing to this reflection
+ const graph = this.getReferenceGraph();
+ for (const id of graph.get(reflection.id) ?? []) {
+ const ref = this.getReflectionById(id);
+ if (ref) {
+ this.removeReflection(ref);
+ }
+ }
+ graph.delete(reflection.id);
+ // Remove children of this reflection
+ for (const childId of this.reflectionChildren.getNoInsert(reflection.id) || []) {
+ const child = this.getReflectionById(childId);
+ // Only remove if the child's parent is still actually this reflection.
+ // This might not be the case if a plugin has moved this reflection to another parent.
+ // (typedoc-plugin-merge-modules)
+ if (child?.parent === reflection) {
+ this._removeReflection(child);
+ }
+ }
+ this.reflectionChildren.delete(reflection.id);
+ // Remove references from the TS symbol to this reflection.
+ const symbol = this.reflectionIdToSymbolMap.get(reflection.id);
+ if (symbol) {
+ const id = new ReflectionSymbolId_1.ReflectionSymbolId(symbol);
+ if (this.symbolToReflectionIdMap.get(id) === reflection.id) {
+ this.symbolToReflectionIdMap.delete(id);
+ }
+ }
+ this.reflectionIdToSymbolIdMap.delete(reflection.id);
+ delete this.reflections[reflection.id];
+ }
+ /**
+ * Gets the reflection registered for the given reflection ID, or undefined if it is not present
+ * in the project.
+ */
+ getReflectionById(id) {
+ return this.reflections[id];
+ }
+ /**
+ * Gets the reflection associated with the given symbol, if it exists.
+ * @internal
+ */
+ getReflectionFromSymbol(symbol) {
+ return this.getReflectionFromSymbolId(new ReflectionSymbolId_1.ReflectionSymbolId(symbol));
+ }
+ /**
+ * Gets the reflection associated with the given symbol id, if it exists.
+ * @internal
+ */
+ getReflectionFromSymbolId(symbolId) {
+ const id = this.symbolToReflectionIdMap.get(symbolId);
+ if (typeof id === "number") {
+ return this.getReflectionById(id);
+ }
+ }
+ /** @internal */
+ getSymbolIdFromReflection(reflection) {
+ return this.reflectionIdToSymbolIdMap.get(reflection.id);
+ }
+ /** @internal */
+ registerSymbolId(reflection, id) {
+ this.reflectionIdToSymbolIdMap.set(reflection.id, id);
+ if (!this.symbolToReflectionIdMap.has(id)) {
+ this.symbolToReflectionIdMap.set(id, reflection.id);
+ }
+ }
+ /**
+ * THIS MAY NOT BE USED AFTER CONVERSION HAS FINISHED.
+ * @internal
+ */
+ getSymbolFromReflection(reflection) {
+ return this.reflectionIdToSymbolMap.get(reflection.id);
+ }
+ getReferenceGraph() {
+ if (!this.referenceGraph) {
+ this.referenceGraph = new Map();
+ for (const ref of Object.values(this.reflections)) {
+ if (ref instanceof reference_1.ReferenceReflection) {
+ const target = ref.tryGetTargetReflection();
+ if (target) {
+ const refs = this.referenceGraph.get(target.id) ?? [];
+ refs.push(ref.id);
+ this.referenceGraph.set(target.id, refs);
+ }
+ }
+ }
+ }
+ return this.referenceGraph;
+ }
+ toObject(serializer) {
+ const symbolIdMap = {};
+ this.reflectionIdToSymbolIdMap.forEach((sid, id) => {
+ symbolIdMap[id] = sid.toObject(serializer);
+ });
+ return {
+ ...super.toObject(serializer),
+ variant: this.variant,
+ packageName: this.packageName,
+ packageVersion: this.packageVersion,
+ readme: comments_1.Comment.serializeDisplayParts(serializer, this.readme),
+ symbolIdMap,
+ };
+ }
+ fromObject(de, obj) {
+ super.fromObject(de, obj);
+ // If updating this, also check the block in DeclarationReflection.fromObject.
+ this.packageName = obj.packageName;
+ this.packageVersion = obj.packageVersion;
+ if (obj.readme) {
+ this.readme = comments_1.Comment.deserializeDisplayParts(de, obj.readme);
+ }
+ de.defer(() => {
+ for (const [id, sid] of Object.entries(obj.symbolIdMap || {})) {
+ const refl = this.getReflectionById(de.oldIdToNewId[+id] ?? -1);
+ if (refl) {
+ this.registerSymbolId(refl, new ReflectionSymbolId_1.ReflectionSymbolId(sid));
+ }
+ else {
+ de.logger.warn(`Serialized project contained a reflection with id ${id} but it was not present in deserialized project.`);
+ }
+ }
+ });
+ }
+}
+exports.ProjectReflection = ProjectReflection;
diff --git a/node_modules/typedoc/dist/lib/models/reflections/reference.d.ts b/node_modules/typedoc/dist/lib/models/reflections/reference.d.ts
new file mode 100644
index 0000000..88fdd93
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/reference.d.ts
@@ -0,0 +1,48 @@
+import { DeclarationReflection } from "./declaration";
+import type { Serializer, JSONOutput, Deserializer } from "../../serialization";
+import type { Reflection } from "./abstract";
+/**
+ * Describes a reflection which does not exist at this location, but is referenced. Used for imported reflections.
+ *
+ * ```ts
+ * // a.ts
+ * export const a = 1;
+ * // b.ts
+ * import { a } from './a';
+ * // Here to avoid extra work we create a reference to the original reflection in module a instead
+ * // of copying the reflection.
+ * export { a };
+ * ```
+ */
+export declare class ReferenceReflection extends DeclarationReflection {
+ readonly variant = "reference";
+ private _target;
+ /**
+ * Creates a reference reflection. Should only be used within the factory function.
+ * @internal
+ */
+ constructor(name: string, reflection: Reflection, parent?: Reflection);
+ /**
+ * Tries to get the reflection that is referenced. This may be another reference reflection.
+ * To fully resolve any references, use {@link tryGetTargetReflectionDeep}.
+ */
+ tryGetTargetReflection(): Reflection | undefined;
+ /**
+ * Tries to get the reflection that is referenced, this will fully resolve references.
+ * To only resolve one reference, use {@link tryGetTargetReflection}.
+ */
+ tryGetTargetReflectionDeep(): Reflection | undefined;
+ /**
+ * Gets the reflection that is referenced. This may be another reference reflection.
+ * To fully resolve any references, use {@link getTargetReflectionDeep}.
+ */
+ getTargetReflection(): Reflection;
+ /**
+ * Gets the reflection that is referenced, this will fully resolve references.
+ * To only resolve one reference, use {@link getTargetReflection}.
+ */
+ getTargetReflectionDeep(): Reflection;
+ getChildByName(arg: string | string[]): Reflection | undefined;
+ toObject(serializer: Serializer): JSONOutput.ReferenceReflection;
+ fromObject(de: Deserializer, obj: JSONOutput.ReferenceReflection): void;
+}
diff --git a/node_modules/typedoc/dist/lib/models/reflections/reference.js b/node_modules/typedoc/dist/lib/models/reflections/reference.js
new file mode 100644
index 0000000..b0e6651
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/reference.js
@@ -0,0 +1,88 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ReferenceReflection = void 0;
+const declaration_1 = require("./declaration");
+const kind_1 = require("./kind");
+/**
+ * Describes a reflection which does not exist at this location, but is referenced. Used for imported reflections.
+ *
+ * ```ts
+ * // a.ts
+ * export const a = 1;
+ * // b.ts
+ * import { a } from './a';
+ * // Here to avoid extra work we create a reference to the original reflection in module a instead
+ * // of copying the reflection.
+ * export { a };
+ * ```
+ */
+class ReferenceReflection extends declaration_1.DeclarationReflection {
+ /**
+ * Creates a reference reflection. Should only be used within the factory function.
+ * @internal
+ */
+ constructor(name, reflection, parent) {
+ super(name, kind_1.ReflectionKind.Reference, parent);
+ this.variant = "reference";
+ this._target = reflection.id;
+ }
+ /**
+ * Tries to get the reflection that is referenced. This may be another reference reflection.
+ * To fully resolve any references, use {@link tryGetTargetReflectionDeep}.
+ */
+ tryGetTargetReflection() {
+ return this.project.getReflectionById(this._target);
+ }
+ /**
+ * Tries to get the reflection that is referenced, this will fully resolve references.
+ * To only resolve one reference, use {@link tryGetTargetReflection}.
+ */
+ tryGetTargetReflectionDeep() {
+ let result = this.tryGetTargetReflection();
+ while (result instanceof ReferenceReflection) {
+ result = result.tryGetTargetReflection();
+ }
+ return result;
+ }
+ /**
+ * Gets the reflection that is referenced. This may be another reference reflection.
+ * To fully resolve any references, use {@link getTargetReflectionDeep}.
+ */
+ getTargetReflection() {
+ const target = this.tryGetTargetReflection();
+ if (!target) {
+ throw new Error("Reference was unresolved.");
+ }
+ return target;
+ }
+ /**
+ * Gets the reflection that is referenced, this will fully resolve references.
+ * To only resolve one reference, use {@link getTargetReflection}.
+ */
+ getTargetReflectionDeep() {
+ let result = this.getTargetReflection();
+ while (result instanceof ReferenceReflection) {
+ result = result.getTargetReflection();
+ }
+ return result;
+ }
+ getChildByName(arg) {
+ return this.getTargetReflection().getChildByName(arg);
+ }
+ toObject(serializer) {
+ return {
+ ...super.toObject(serializer),
+ variant: this.variant,
+ target: this.tryGetTargetReflection()?.id ?? -1,
+ };
+ }
+ fromObject(de, obj) {
+ super.fromObject(de, obj);
+ de.defer((project) => {
+ this._target =
+ project.getReflectionById(de.oldIdToNewId[obj.target] ?? -1)
+ ?.id ?? -1;
+ });
+ }
+}
+exports.ReferenceReflection = ReferenceReflection;
diff --git a/node_modules/typedoc/dist/lib/models/reflections/signature.d.ts b/node_modules/typedoc/dist/lib/models/reflections/signature.d.ts
new file mode 100644
index 0000000..de50d34
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/signature.d.ts
@@ -0,0 +1,46 @@
+import { SomeType, ReferenceType } from "../types";
+import { Reflection, TraverseCallback } from "./abstract";
+import type { ParameterReflection } from "./parameter";
+import type { TypeParameterReflection } from "./type-parameter";
+import type { DeclarationReflection } from "./declaration";
+import type { ReflectionKind } from "./kind";
+import type { Serializer, JSONOutput, Deserializer } from "../../serialization";
+import { SourceReference } from "../sources/file";
+export declare class SignatureReflection extends Reflection {
+ readonly variant = "signature";
+ constructor(name: string, kind: SignatureReflection["kind"], parent: DeclarationReflection);
+ kind: ReflectionKind.SetSignature | ReflectionKind.GetSignature | ReflectionKind.IndexSignature | ReflectionKind.CallSignature | ReflectionKind.ConstructorSignature;
+ parent: DeclarationReflection;
+ /**
+ * A list of all source files that contributed to this reflection.
+ */
+ sources?: SourceReference[];
+ parameters?: ParameterReflection[];
+ typeParameters?: TypeParameterReflection[];
+ type?: SomeType;
+ /**
+ * A type that points to the reflection that has been overwritten by this reflection.
+ *
+ * Applies to interface and class members.
+ */
+ overwrites?: ReferenceType;
+ /**
+ * A type that points to the reflection this reflection has been inherited from.
+ *
+ * Applies to interface and class members.
+ */
+ inheritedFrom?: ReferenceType;
+ /**
+ * A type that points to the reflection this reflection is the implementation of.
+ *
+ * Applies to class members.
+ */
+ implementationOf?: ReferenceType;
+ traverse(callback: TraverseCallback): void;
+ /**
+ * Return a string representation of this reflection.
+ */
+ toString(): string;
+ toObject(serializer: Serializer): JSONOutput.SignatureReflection;
+ fromObject(de: Deserializer, obj: JSONOutput.SignatureReflection): void;
+}
diff --git a/node_modules/typedoc/dist/lib/models/reflections/signature.js b/node_modules/typedoc/dist/lib/models/reflections/signature.js
new file mode 100644
index 0000000..6388682
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/signature.js
@@ -0,0 +1,67 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.SignatureReflection = void 0;
+const types_1 = require("../types");
+const abstract_1 = require("./abstract");
+const file_1 = require("../sources/file");
+class SignatureReflection extends abstract_1.Reflection {
+ constructor(name, kind, parent) {
+ super(name, kind, parent);
+ this.variant = "signature";
+ }
+ traverse(callback) {
+ if (this.type instanceof types_1.ReflectionType) {
+ if (callback(this.type.declaration, abstract_1.TraverseProperty.TypeLiteral) === false) {
+ return;
+ }
+ }
+ for (const parameter of this.typeParameters?.slice() || []) {
+ if (callback(parameter, abstract_1.TraverseProperty.TypeParameter) === false) {
+ return;
+ }
+ }
+ for (const parameter of this.parameters?.slice() || []) {
+ if (callback(parameter, abstract_1.TraverseProperty.Parameters) === false) {
+ return;
+ }
+ }
+ }
+ /**
+ * Return a string representation of this reflection.
+ */
+ toString() {
+ let result = super.toString();
+ if (this.typeParameters) {
+ const parameters = this.typeParameters.map((parameter) => parameter.name);
+ result += "<" + parameters.join(", ") + ">";
+ }
+ if (this.type) {
+ result += ":" + this.type.toString();
+ }
+ return result;
+ }
+ toObject(serializer) {
+ return {
+ ...super.toObject(serializer),
+ variant: this.variant,
+ sources: serializer.toObjectsOptional(this.sources),
+ typeParameter: serializer.toObjectsOptional(this.typeParameters),
+ parameters: serializer.toObjectsOptional(this.parameters),
+ type: serializer.toObject(this.type),
+ overwrites: serializer.toObject(this.overwrites),
+ inheritedFrom: serializer.toObject(this.inheritedFrom),
+ implementationOf: serializer.toObject(this.implementationOf),
+ };
+ }
+ fromObject(de, obj) {
+ super.fromObject(de, obj);
+ this.sources = de.reviveMany(obj.sources, (t) => new file_1.SourceReference(t.fileName, t.line, t.character));
+ this.typeParameters = de.reviveMany(obj.typeParameter, (t) => de.constructReflection(t));
+ this.parameters = de.reviveMany(obj.parameters, (t) => de.constructReflection(t));
+ this.type = de.reviveType(obj.type);
+ this.overwrites = de.reviveType(obj.overwrites);
+ this.inheritedFrom = de.reviveType(obj.inheritedFrom);
+ this.implementationOf = de.reviveType(obj.implementationOf);
+ }
+}
+exports.SignatureReflection = SignatureReflection;
diff --git a/node_modules/typedoc/dist/lib/models/reflections/type-parameter.d.ts b/node_modules/typedoc/dist/lib/models/reflections/type-parameter.d.ts
new file mode 100644
index 0000000..309fdc0
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/type-parameter.d.ts
@@ -0,0 +1,26 @@
+import type { SomeType } from "../types";
+import { Reflection, TraverseCallback } from "./abstract";
+import type { DeclarationReflection } from "./declaration";
+import type { Serializer, JSONOutput, Deserializer } from "../../serialization";
+import type { SignatureReflection } from "./signature";
+/**
+ * Modifier flags for type parameters, added in TS 4.7
+ * @enum
+ */
+export declare const VarianceModifier: {
+ readonly in: "in";
+ readonly out: "out";
+ readonly inOut: "in out";
+};
+export type VarianceModifier = (typeof VarianceModifier)[keyof typeof VarianceModifier];
+export declare class TypeParameterReflection extends Reflection {
+ readonly variant = "typeParam";
+ parent?: DeclarationReflection | SignatureReflection;
+ type?: SomeType;
+ default?: SomeType;
+ varianceModifier?: VarianceModifier;
+ constructor(name: string, parent: Reflection, varianceModifier: VarianceModifier | undefined);
+ toObject(serializer: Serializer): JSONOutput.TypeParameterReflection;
+ fromObject(de: Deserializer, obj: JSONOutput.TypeParameterReflection): void;
+ traverse(_callback: TraverseCallback): void;
+}
diff --git a/node_modules/typedoc/dist/lib/models/reflections/type-parameter.js b/node_modules/typedoc/dist/lib/models/reflections/type-parameter.js
new file mode 100644
index 0000000..daa9af8
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/type-parameter.js
@@ -0,0 +1,40 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.TypeParameterReflection = exports.VarianceModifier = void 0;
+const abstract_1 = require("./abstract");
+const kind_1 = require("./kind");
+/**
+ * Modifier flags for type parameters, added in TS 4.7
+ * @enum
+ */
+exports.VarianceModifier = {
+ in: "in",
+ out: "out",
+ inOut: "in out",
+};
+class TypeParameterReflection extends abstract_1.Reflection {
+ constructor(name, parent, varianceModifier) {
+ super(name, kind_1.ReflectionKind.TypeParameter, parent);
+ this.variant = "typeParam";
+ this.varianceModifier = varianceModifier;
+ }
+ toObject(serializer) {
+ return {
+ ...super.toObject(serializer),
+ variant: this.variant,
+ type: serializer.toObject(this.type),
+ default: serializer.toObject(this.default),
+ varianceModifier: this.varianceModifier,
+ };
+ }
+ fromObject(de, obj) {
+ super.fromObject(de, obj);
+ this.type = de.reviveType(obj.type);
+ this.default = de.reviveType(obj.default);
+ this.varianceModifier = obj.varianceModifier;
+ }
+ traverse(_callback) {
+ // do nothing, no child reflections.
+ }
+}
+exports.TypeParameterReflection = TypeParameterReflection;
diff --git a/node_modules/typedoc/dist/lib/models/reflections/utils.d.ts b/node_modules/typedoc/dist/lib/models/reflections/utils.d.ts
new file mode 100644
index 0000000..e5c550e
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/utils.d.ts
@@ -0,0 +1 @@
+export declare function splitUnquotedString(input: string, delimiter: string): string[];
diff --git a/node_modules/typedoc/dist/lib/models/reflections/utils.js b/node_modules/typedoc/dist/lib/models/reflections/utils.js
new file mode 100644
index 0000000..6a8e5f1
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/utils.js
@@ -0,0 +1,30 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.splitUnquotedString = void 0;
+function splitUnquotedString(input, delimiter) {
+ if (input.startsWith(delimiter)) {
+ return splitUnquotedString(input.substring(delimiter.length), delimiter);
+ }
+ if (input.startsWith('"')) {
+ // the part inside the quotes should not be split, the rest should
+ const closingQuoteIndex = input.indexOf('"', 1);
+ if (closingQuoteIndex === -1) {
+ // Unmatched quotes, just split it
+ return input.split(delimiter);
+ }
+ if (closingQuoteIndex === input.length - 1) {
+ return [input];
+ }
+ else {
+ const remainder = input.substring(closingQuoteIndex + 1);
+ return [
+ input.substring(0, closingQuoteIndex + 1),
+ ...splitUnquotedString(remainder, delimiter),
+ ];
+ }
+ }
+ else {
+ return input.split(delimiter);
+ }
+}
+exports.splitUnquotedString = splitUnquotedString;
diff --git a/node_modules/typedoc/dist/lib/models/reflections/variant.d.ts b/node_modules/typedoc/dist/lib/models/reflections/variant.d.ts
new file mode 100644
index 0000000..9f87a19
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/variant.d.ts
@@ -0,0 +1,18 @@
+import type { DeclarationReflection } from "./declaration";
+import type { ParameterReflection } from "./parameter";
+import type { ProjectReflection } from "./project";
+import type { ReferenceReflection } from "./reference";
+import type { SignatureReflection } from "./signature";
+import type { TypeParameterReflection } from "./type-parameter";
+/**
+ * A map of known {@link Reflection} concrete subclasses.
+ * This is used during deserialization to reconstruct serialized objects.
+ */
+export interface ReflectionVariant {
+ declaration: DeclarationReflection;
+ param: ParameterReflection;
+ project: ProjectReflection;
+ reference: ReferenceReflection;
+ signature: SignatureReflection;
+ typeParam: TypeParameterReflection;
+}
diff --git a/node_modules/typedoc/dist/lib/models/reflections/variant.js b/node_modules/typedoc/dist/lib/models/reflections/variant.js
new file mode 100644
index 0000000..c8ad2e5
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/reflections/variant.js
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/node_modules/typedoc/dist/lib/models/sources/file.d.ts b/node_modules/typedoc/dist/lib/models/sources/file.d.ts
new file mode 100644
index 0000000..6606d2d
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/sources/file.d.ts
@@ -0,0 +1,32 @@
+import type { Deserializer } from "../../serialization/deserializer";
+import type { SourceReference as JSONSourceReference } from "../../serialization/schema";
+/**
+ * Represents references of reflections to their defining source files.
+ *
+ * @see {@link DeclarationReflection.sources}
+ */
+export declare class SourceReference {
+ /**
+ * The filename of the source file.
+ */
+ fileName: string;
+ /**
+ * The absolute filename of the source file.
+ */
+ fullFileName: string;
+ /**
+ * The number of the line that emitted the declaration.
+ */
+ line: number;
+ /**
+ * The index of the character that emitted the declaration.
+ */
+ character: number;
+ /**
+ * URL for displaying the source file.
+ */
+ url?: string;
+ constructor(fileName: string, line: number, character: number);
+ toObject(): JSONSourceReference;
+ fromObject(_de: Deserializer, obj: JSONSourceReference): void;
+}
diff --git a/node_modules/typedoc/dist/lib/models/sources/file.js b/node_modules/typedoc/dist/lib/models/sources/file.js
new file mode 100644
index 0000000..68c16ed
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/sources/file.js
@@ -0,0 +1,28 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.SourceReference = void 0;
+/**
+ * Represents references of reflections to their defining source files.
+ *
+ * @see {@link DeclarationReflection.sources}
+ */
+class SourceReference {
+ constructor(fileName, line, character) {
+ this.fileName = fileName;
+ this.fullFileName = fileName;
+ this.line = line;
+ this.character = character;
+ }
+ toObject() {
+ return {
+ fileName: this.fileName,
+ line: this.line,
+ character: this.character,
+ url: this.url,
+ };
+ }
+ fromObject(_de, obj) {
+ this.url = obj.url;
+ }
+}
+exports.SourceReference = SourceReference;
diff --git a/node_modules/typedoc/dist/lib/models/sources/index.d.ts b/node_modules/typedoc/dist/lib/models/sources/index.d.ts
new file mode 100644
index 0000000..c6bd6dd
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/sources/index.d.ts
@@ -0,0 +1 @@
+export { SourceReference } from "./file";
diff --git a/node_modules/typedoc/dist/lib/models/sources/index.js b/node_modules/typedoc/dist/lib/models/sources/index.js
new file mode 100644
index 0000000..9fe6c6e
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/sources/index.js
@@ -0,0 +1,5 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.SourceReference = void 0;
+var file_1 = require("./file");
+Object.defineProperty(exports, "SourceReference", { enumerable: true, get: function () { return file_1.SourceReference; } });
diff --git a/node_modules/typedoc/dist/lib/models/types.d.ts b/node_modules/typedoc/dist/lib/models/types.d.ts
new file mode 100644
index 0000000..53b414b
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/types.d.ts
@@ -0,0 +1,505 @@
+import * as ts from "typescript";
+import type { Context } from "../converter";
+import type { Reflection } from "./reflections/abstract";
+import type { DeclarationReflection } from "./reflections/declaration";
+import type { ProjectReflection } from "./reflections/project";
+import type { Serializer, JSONOutput, Deserializer } from "../serialization";
+import { ReflectionSymbolId } from "./reflections/ReflectionSymbolId";
+import type { DeclarationReference } from "../converter/comments/declarationReference";
+/**
+ * Base class of all type definitions.
+ */
+export declare abstract class Type {
+ /**
+ * The type name identifier.
+ */
+ abstract readonly type: keyof TypeKindMap;
+ /**
+ * Return a string representation of this type.
+ */
+ toString(): string;
+ /**
+ * Visit this type, returning the value returned by the visitor.
+ */
+ visit<T>(visitor: TypeVisitor<T>): T;
+ visit<T>(visitor: Partial<TypeVisitor<T>>): T | undefined;
+ stringify(context: TypeContext): string;
+ abstract toObject(serializer: Serializer): JSONOutput.SomeType;
+ fromObject(_de: Deserializer, _obj: JSONOutput.SomeType): void;
+ abstract needsParenthesis(context: TypeContext): boolean;
+ /**
+ * Implementation method for `toString`. `needsParenthesis` will be used to determine if
+ * the returned string should be wrapped in parenthesis.
+ */
+ protected abstract getTypeString(): string;
+}
+export interface TypeKindMap {
+ array: ArrayType;
+ conditional: ConditionalType;
+ indexedAccess: IndexedAccessType;
+ inferred: InferredType;
+ intersection: IntersectionType;
+ intrinsic: IntrinsicType;
+ literal: LiteralType;
+ mapped: MappedType;
+ optional: OptionalType;
+ predicate: PredicateType;
+ query: QueryType;
+ reference: ReferenceType;
+ reflection: ReflectionType;
+ rest: RestType;
+ templateLiteral: TemplateLiteralType;
+ tuple: TupleType;
+ namedTupleMember: NamedTupleMember;
+ typeOperator: TypeOperatorType;
+ union: UnionType;
+ unknown: UnknownType;
+}
+export type TypeVisitor<T = void> = {
+ [K in TypeKind]: (type: TypeKindMap[K]) => T;
+};
+export declare function makeRecursiveVisitor(visitor: Partial<TypeVisitor>): TypeVisitor;
+export type TypeKind = keyof TypeKindMap;
+export type SomeType = TypeKindMap[keyof TypeKindMap];
+/**
+ * Enumeration that can be used when traversing types to track the location of recursion.
+ * Used by TypeDoc internally to track when to output parenthesis when rendering.
+ * @enum
+ */
+export declare const TypeContext: {
+ readonly none: "none";
+ readonly templateLiteralElement: "templateLiteralElement";
+ readonly arrayElement: "arrayElement";
+ readonly indexedAccessElement: "indexedAccessElement";
+ readonly conditionalCheck: "conditionalCheck";
+ readonly conditionalExtends: "conditionalExtends";
+ readonly conditionalTrue: "conditionalTrue";
+ readonly conditionalFalse: "conditionalFalse";
+ readonly indexedIndex: "indexedIndex";
+ readonly indexedObject: "indexedObject";
+ readonly inferredConstraint: "inferredConstraint";
+ readonly intersectionElement: "intersectionElement";
+ readonly mappedName: "mappedName";
+ readonly mappedParameter: "mappedParameter";
+ readonly mappedTemplate: "mappedTemplate";
+ readonly optionalElement: "optionalElement";
+ readonly predicateTarget: "predicateTarget";
+ readonly queryTypeTarget: "queryTypeTarget";
+ readonly typeOperatorTarget: "typeOperatorTarget";
+ readonly referenceTypeArgument: "referenceTypeArgument";
+ readonly restElement: "restElement";
+ readonly tupleElement: "tupleElement";
+ readonly unionElement: "unionElement";
+};
+export type TypeContext = (typeof TypeContext)[keyof typeof TypeContext];
+/**
+ * Represents an array type.
+ *
+ * ```ts
+ * let value: string[];
+ * ```
+ */
+export declare class ArrayType extends Type {
+ elementType: SomeType;
+ readonly type = "array";
+ /**
+ * @param elementType The type of the elements in the array.
+ */
+ constructor(elementType: SomeType);
+ protected getTypeString(): string;
+ needsParenthesis(): boolean;
+ toObject(serializer: Serializer): JSONOutput.ArrayType;
+}
+/**
+ * Represents a conditional type.
+ *
+ * ```ts
+ * let value: Check extends Extends ? True : False;
+ * ```
+ */
+export declare class ConditionalType extends Type {
+ checkType: SomeType;
+ extendsType: SomeType;
+ trueType: SomeType;
+ falseType: SomeType;
+ readonly type = "conditional";
+ constructor(checkType: SomeType, extendsType: SomeType, trueType: SomeType, falseType: SomeType);
+ protected getTypeString(): string;
+ needsParenthesis(context: TypeContext): boolean;
+ toObject(serializer: Serializer): JSONOutput.ConditionalType;
+}
+/**
+ * Represents an indexed access type.
+ */
+export declare class IndexedAccessType extends Type {
+ objectType: SomeType;
+ indexType: SomeType;
+ readonly type = "indexedAccess";
+ constructor(objectType: SomeType, indexType: SomeType);
+ protected getTypeString(): string;
+ needsParenthesis(): boolean;
+ toObject(serializer: Serializer): JSONOutput.IndexedAccessType;
+}
+/**
+ * Represents an inferred type, U in the example below.
+ *
+ * ```ts
+ * type Z = Promise<string> extends Promise<infer U> : never
+ * ```
+ */
+export declare class InferredType extends Type {
+ name: string;
+ constraint?: SomeType | undefined;
+ readonly type = "inferred";
+ constructor(name: string, constraint?: SomeType | undefined);
+ protected getTypeString(): string;
+ needsParenthesis(context: TypeContext): boolean;
+ toObject(serializer: Serializer): JSONOutput.InferredType;
+}
+/**
+ * Represents an intersection type.
+ *
+ * ```ts
+ * let value: A & B;
+ * ```
+ */
+export declare class IntersectionType extends Type {
+ types: SomeType[];
+ readonly type = "intersection";
+ constructor(types: SomeType[]);
+ protected getTypeString(): string;
+ needsParenthesis(context: TypeContext): boolean;
+ toObject(serializer: Serializer): JSONOutput.IntersectionType;
+}
+/**
+ * Represents an intrinsic type like `string` or `boolean`.
+ *
+ * ```ts
+ * let value: number;
+ * ```
+ */
+export declare class IntrinsicType extends Type {
+ name: string;
+ readonly type = "intrinsic";
+ constructor(name: string);
+ protected getTypeString(): string;
+ toObject(): JSONOutput.IntrinsicType;
+ needsParenthesis(): boolean;
+}
+/**
+ * Represents a literal type.
+ *
+ * ```ts
+ * type A = "A"
+ * type B = 1
+ * ```
+ */
+export declare class LiteralType extends Type {
+ value: string | number | boolean | null | bigint;
+ readonly type = "literal";
+ constructor(value: string | number | boolean | null | bigint);
+ /**
+ * Return a string representation of this type.
+ */
+ protected getTypeString(): string;
+ needsParenthesis(): boolean;
+ toObject(): JSONOutput.LiteralType;
+}
+/**
+ * Represents a mapped type.
+ *
+ * ```ts
+ * { -readonly [K in Parameter as Name]?: Template }
+ * ```
+ */
+export declare class MappedType extends Type {
+ parameter: string;
+ parameterType: SomeType;
+ templateType: SomeType;
+ readonlyModifier?: "+" | "-" | undefined;
+ optionalModifier?: "+" | "-" | undefined;
+ nameType?: SomeType | undefined;
+ readonly type = "mapped";
+ constructor(parameter: string, parameterType: SomeType, templateType: SomeType, readonlyModifier?: "+" | "-" | undefined, optionalModifier?: "+" | "-" | undefined, nameType?: SomeType | undefined);
+ protected getTypeString(): string;
+ needsParenthesis(): boolean;
+ toObject(serializer: Serializer): JSONOutput.MappedType;
+}
+/**
+ * Represents an optional type
+ * ```ts
+ * type Z = [1, 2?]
+ * // ^^
+ * ```
+ */
+export declare class OptionalType extends Type {
+ elementType: SomeType;
+ readonly type = "optional";
+ constructor(elementType: SomeType);
+ protected getTypeString(): string;
+ needsParenthesis(): boolean;
+ toObject(serializer: Serializer): JSONOutput.OptionalType;
+}
+/**
+ * Represents a type predicate.
+ *
+ * ```ts
+ * function isString(x: unknown): x is string {}
+ * function assert(condition: boolean): asserts condition {}
+ * ```
+ */
+export declare class PredicateType extends Type {
+ name: string;
+ asserts: boolean;
+ targetType?: SomeType | undefined;
+ readonly type = "predicate";
+ /**
+ * Create a new PredicateType instance.
+ *
+ * @param name The identifier name which is tested by the predicate.
+ * @param asserts True if the type is of the form `asserts val is string`,
+ * false if the type is of the form `val is string`
+ * @param targetType The type that the identifier is tested to be.
+ * May be undefined if the type is of the form `asserts val`.
+ * Will be defined if the type is of the form `asserts val is string` or `val is string`.
+ */
+ constructor(name: string, asserts: boolean, targetType?: SomeType | undefined);
+ /**
+ * Return a string representation of this type.
+ */
+ protected getTypeString(): string;
+ needsParenthesis(): boolean;
+ toObject(serializer: Serializer): JSONOutput.PredicateType;
+}
+/**
+ * Represents a type that is constructed by querying the type of a reflection.
+ * ```ts
+ * const x = 1
+ * type Z = typeof x // query on reflection for x
+ * ```
+ */
+export declare class QueryType extends Type {
+ queryType: ReferenceType;
+ readonly type = "query";
+ constructor(queryType: ReferenceType);
+ protected getTypeString(): string;
+ /**
+ * @privateRemarks
+ * An argument could be made that this ought to return true for indexedObject
+ * since precedence is different than on the value side... if someone really cares
+ * they can easily use a custom theme to change this.
+ */
+ needsParenthesis(): boolean;
+ toObject(serializer: Serializer): JSONOutput.QueryType;
+}
+/**
+ * Represents a type that refers to another reflection like a class, interface or enum.
+ *
+ * ```ts
+ * let value: MyClass<T>;
+ * ```
+ */
+export declare class ReferenceType extends Type {
+ readonly type = "reference";
+ /**
+ * The name of the referenced type.
+ *
+ * If the symbol cannot be found because it's not part of the documentation this
+ * can be used to represent the type.
+ */
+ name: string;
+ /**
+ * The type arguments of this reference.
+ */
+ typeArguments?: SomeType[];
+ /**
+ * The resolved reflection.
+ */
+ get reflection(): Reflection | undefined;
+ /**
+ * If not resolved, the symbol id of the reflection, otherwise undefined.
+ */
+ get symbolId(): ReflectionSymbolId | undefined;
+ /**
+ * Checks if this type is a reference type because it uses a name, but is intentionally not pointing
+ * to a reflection. This happens for type parameters and when representing a mapped type.
+ */
+ isIntentionallyBroken(): boolean;
+ /**
+ * Convert this reference type to a declaration reference used for resolution of external types.
+ */
+ toDeclarationReference(): DeclarationReference;
+ /**
+ * The fully qualified name of the referenced type, relative to the file it is defined in.
+ * This will usually be the same as `name`, unless namespaces are used.
+ */
+ qualifiedName: string;
+ /**
+ * The package that this type is referencing.
+ */
+ package?: string;
+ /**
+ * If this reference type refers to a reflection defined by a project not being rendered,
+ * points to the url that this type should be linked to.
+ */
+ externalUrl?: string;
+ /**
+ * If set, no warnings about something not being exported should be created
+ * since this may be referring to a type created with `infer X` which will not
+ * be registered on the project.
+ */
+ refersToTypeParameter: boolean;
+ private _target;
+ private _project;
+ private constructor();
+ static createResolvedReference(name: string, target: Reflection | number, project: ProjectReflection | null): ReferenceType;
+ static createSymbolReference(symbol: ts.Symbol, context: Context, name?: string): ReferenceType;
+ /**
+ * This is used for type parameters, which don't actually point to something,
+ * and also for temporary references which will be cleaned up with real references
+ * later during conversion.
+ * @internal
+ */
+ static createBrokenReference(name: string, project: ProjectReflection): ReferenceType;
+ protected getTypeString(): string;
+ needsParenthesis(): boolean;
+ toObject(serializer: Serializer): JSONOutput.ReferenceType;
+ fromObject(de: Deserializer, obj: JSONOutput.ReferenceType): void;
+}
+/**
+ * Represents a type which has it's own reflection like literal types.
+ * This type will likely go away at some point and be replaced by a dedicated
+ * `ObjectType`. Allowing reflections to be nested within types causes much
+ * pain in the rendering code.
+ *
+ * ```ts
+ * let value: { a: string, b: number };
+ * ```
+ */
+export declare class ReflectionType extends Type {
+ declaration: DeclarationReflection;
+ readonly type = "reflection";
+ constructor(declaration: DeclarationReflection);
+ protected getTypeString(): "Object" | "Function";
+ needsParenthesis(): boolean;
+ toObject(serializer: Serializer): JSONOutput.ReflectionType;
+}
+/**
+ * Represents a rest type
+ * ```ts
+ * type Z = [1, ...2[]]
+ * // ^^^^^^
+ * ```
+ */
+export declare class RestType extends Type {
+ elementType: SomeType;
+ readonly type = "rest";
+ constructor(elementType: SomeType);
+ protected getTypeString(): string;
+ needsParenthesis(): boolean;
+ toObject(serializer: Serializer): JSONOutput.RestType;
+}
+/**
+ * TS 4.1 template literal types
+ * ```ts
+ * type Z = `${'a' | 'b'}${'a' | 'b'}`
+ * ```
+ */
+export declare class TemplateLiteralType extends Type {
+ head: string;
+ tail: [SomeType, string][];
+ readonly type = "templateLiteral";
+ constructor(head: string, tail: [SomeType, string][]);
+ protected getTypeString(): string;
+ needsParenthesis(): boolean;
+ toObject(serializer: Serializer): JSONOutput.TemplateLiteralType;
+}
+/**
+ * Represents a tuple type.
+ *
+ * ```ts
+ * let value: [string, boolean];
+ * ```
+ */
+export declare class TupleType extends Type {
+ elements: SomeType[];
+ readonly type = "tuple";
+ /**
+ * @param elements The ordered type elements of the tuple type.
+ */
+ constructor(elements: SomeType[]);
+ protected getTypeString(): string;
+ needsParenthesis(): boolean;
+ toObject(serializer: Serializer): JSONOutput.TupleType;
+}
+/**
+ * Represents a named member of a tuple type.
+ *
+ * ```ts
+ * let value: [name: string];
+ * ```
+ */
+export declare class NamedTupleMember extends Type {
+ name: string;
+ isOptional: boolean;
+ element: SomeType;
+ readonly type = "namedTupleMember";
+ constructor(name: string, isOptional: boolean, element: SomeType);
+ /**
+ * Return a string representation of this type.
+ */
+ protected getTypeString(): string;
+ needsParenthesis(): boolean;
+ toObject(serializer: Serializer): JSONOutput.NamedTupleMemberType;
+}
+/**
+ * Represents a type operator type.
+ *
+ * ```ts
+ * class A {}
+ * class B<T extends keyof A> {}
+ * ```
+ */
+export declare class TypeOperatorType extends Type {
+ target: SomeType;
+ operator: "keyof" | "unique" | "readonly";
+ readonly type = "typeOperator";
+ constructor(target: SomeType, operator: "keyof" | "unique" | "readonly");
+ protected getTypeString(): string;
+ needsParenthesis(context: TypeContext): boolean;
+ toObject(serializer: Serializer): JSONOutput.TypeOperatorType;
+}
+/**
+ * Represents an union type.
+ *
+ * ```ts
+ * let value: string | string[];
+ * ```
+ */
+export declare class UnionType extends Type {
+ types: SomeType[];
+ readonly type = "union";
+ constructor(types: SomeType[]);
+ protected getTypeString(): string;
+ needsParenthesis(context: TypeContext): boolean;
+ private normalize;
+ toObject(serializer: Serializer): JSONOutput.UnionType;
+}
+/**
+ * Represents all unknown types that cannot be converted by TypeDoc.
+ */
+export declare class UnknownType extends Type {
+ readonly type = "unknown";
+ /**
+ * A string representation of the type as returned from TypeScript compiler.
+ */
+ name: string;
+ constructor(name: string);
+ protected getTypeString(): string;
+ /**
+ * Always returns true if not at the root level, we have no idea what's in here, so wrap it in parenthesis
+ * to be extra safe.
+ */
+ needsParenthesis(context: TypeContext): boolean;
+ toObject(): JSONOutput.UnknownType;
+}
diff --git a/node_modules/typedoc/dist/lib/models/types.js b/node_modules/typedoc/dist/lib/models/types.js
new file mode 100644
index 0000000..6153a10
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/models/types.js
@@ -0,0 +1,1152 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.UnknownType = exports.UnionType = exports.TypeOperatorType = exports.NamedTupleMember = exports.TupleType = exports.TemplateLiteralType = exports.RestType = exports.ReflectionType = exports.ReferenceType = exports.QueryType = exports.PredicateType = exports.OptionalType = exports.MappedType = exports.LiteralType = exports.IntrinsicType = exports.IntersectionType = exports.InferredType = exports.IndexedAccessType = exports.ConditionalType = exports.ArrayType = exports.TypeContext = exports.makeRecursiveVisitor = exports.Type = void 0;
+const ts = __importStar(require("typescript"));
+const tsutils_1 = require("../utils/tsutils");
+const ReflectionSymbolId_1 = require("./reflections/ReflectionSymbolId");
+const fs_1 = require("../utils/fs");
+/**
+ * Base class of all type definitions.
+ */
+class Type {
+ /**
+ * Return a string representation of this type.
+ */
+ toString() {
+ return this.stringify(exports.TypeContext.none);
+ }
+ visit(visitor) {
+ return visitor[this.type]?.(this);
+ }
+ stringify(context) {
+ if (this.needsParenthesis(context)) {
+ return `(${this.getTypeString()})`;
+ }
+ return this.getTypeString();
+ }
+ // Nothing to do for the majority of types.
+ fromObject(_de, _obj) { }
+}
+exports.Type = Type;
+function makeRecursiveVisitor(visitor) {
+ const recursiveVisitor = {
+ namedTupleMember(type) {
+ visitor.namedTupleMember?.(type);
+ type.element.visit(recursiveVisitor);
+ },
+ templateLiteral(type) {
+ visitor.templateLiteral?.(type);
+ for (const [h] of type.tail) {
+ h.visit(recursiveVisitor);
+ }
+ },
+ array(type) {
+ visitor.array?.(type);
+ type.elementType.visit(recursiveVisitor);
+ },
+ conditional(type) {
+ visitor.conditional?.(type);
+ type.checkType.visit(recursiveVisitor);
+ type.extendsType.visit(recursiveVisitor);
+ type.trueType.visit(recursiveVisitor);
+ type.falseType.visit(recursiveVisitor);
+ },
+ indexedAccess(type) {
+ visitor.indexedAccess?.(type);
+ type.indexType.visit(recursiveVisitor);
+ type.objectType.visit(recursiveVisitor);
+ },
+ inferred(type) {
+ visitor.inferred?.(type);
+ type.constraint?.visit(recursiveVisitor);
+ },
+ intersection(type) {
+ visitor.intersection?.(type);
+ type.types.forEach((t) => t.visit(recursiveVisitor));
+ },
+ intrinsic(type) {
+ visitor.intrinsic?.(type);
+ },
+ literal(type) {
+ visitor.literal?.(type);
+ },
+ mapped(type) {
+ visitor.mapped?.(type);
+ type.nameType?.visit(recursiveVisitor);
+ type.parameterType.visit(recursiveVisitor);
+ type.templateType.visit(recursiveVisitor);
+ },
+ optional(type) {
+ visitor.optional?.(type);
+ type.elementType.visit(recursiveVisitor);
+ },
+ predicate(type) {
+ visitor.predicate?.(type);
+ type.targetType?.visit(recursiveVisitor);
+ },
+ query(type) {
+ visitor.query?.(type);
+ type.queryType.visit(recursiveVisitor);
+ },
+ reference(type) {
+ visitor.reference?.(type);
+ type.typeArguments?.forEach((t) => t.visit(recursiveVisitor));
+ },
+ reflection(type) {
+ visitor.reflection?.(type);
+ // Future: This should maybe recurse too?
+ // See the validator in exports.ts for how to do it.
+ },
+ rest(type) {
+ visitor.rest?.(type);
+ type.elementType.visit(recursiveVisitor);
+ },
+ tuple(type) {
+ visitor.tuple?.(type);
+ type.elements.forEach((t) => t.visit(recursiveVisitor));
+ },
+ typeOperator(type) {
+ visitor.typeOperator?.(type);
+ type.target.visit(recursiveVisitor);
+ },
+ union(type) {
+ visitor.union?.(type);
+ type.types.forEach((t) => t.visit(recursiveVisitor));
+ },
+ unknown(type) {
+ visitor.unknown?.(type);
+ },
+ };
+ return recursiveVisitor;
+}
+exports.makeRecursiveVisitor = makeRecursiveVisitor;
+/**
+ * Enumeration that can be used when traversing types to track the location of recursion.
+ * Used by TypeDoc internally to track when to output parenthesis when rendering.
+ * @enum
+ */
+exports.TypeContext = {
+ none: "none",
+ templateLiteralElement: "templateLiteralElement",
+ arrayElement: "arrayElement",
+ indexedAccessElement: "indexedAccessElement",
+ conditionalCheck: "conditionalCheck",
+ conditionalExtends: "conditionalExtends",
+ conditionalTrue: "conditionalTrue",
+ conditionalFalse: "conditionalFalse",
+ indexedIndex: "indexedIndex",
+ indexedObject: "indexedObject",
+ inferredConstraint: "inferredConstraint",
+ intersectionElement: "intersectionElement",
+ mappedName: "mappedName",
+ mappedParameter: "mappedParameter",
+ mappedTemplate: "mappedTemplate",
+ optionalElement: "optionalElement",
+ predicateTarget: "predicateTarget",
+ queryTypeTarget: "queryTypeTarget",
+ typeOperatorTarget: "typeOperatorTarget",
+ referenceTypeArgument: "referenceTypeArgument",
+ restElement: "restElement",
+ tupleElement: "tupleElement",
+ unionElement: "unionElement", // here | 1
+};
+/**
+ * Represents an array type.
+ *
+ * ```ts
+ * let value: string[];
+ * ```
+ */
+class ArrayType extends Type {
+ /**
+ * @param elementType The type of the elements in the array.
+ */
+ constructor(elementType) {
+ super();
+ this.elementType = elementType;
+ this.type = "array";
+ }
+ getTypeString() {
+ return this.elementType.stringify(exports.TypeContext.arrayElement) + "[]";
+ }
+ needsParenthesis() {
+ return false;
+ }
+ toObject(serializer) {
+ return {
+ type: this.type,
+ elementType: serializer.toObject(this.elementType),
+ };
+ }
+}
+exports.ArrayType = ArrayType;
+/**
+ * Represents a conditional type.
+ *
+ * ```ts
+ * let value: Check extends Extends ? True : False;
+ * ```
+ */
+class ConditionalType extends Type {
+ constructor(checkType, extendsType, trueType, falseType) {
+ super();
+ this.checkType = checkType;
+ this.extendsType = extendsType;
+ this.trueType = trueType;
+ this.falseType = falseType;
+ this.type = "conditional";
+ }
+ getTypeString() {
+ return [
+ this.checkType.stringify(exports.TypeContext.conditionalCheck),
+ "extends",
+ this.extendsType.stringify(exports.TypeContext.conditionalExtends),
+ "?",
+ this.trueType.stringify(exports.TypeContext.conditionalTrue),
+ ":",
+ this.falseType.stringify(exports.TypeContext.conditionalFalse),
+ ].join(" ");
+ }
+ needsParenthesis(context) {
+ const map = {
+ none: false,
+ templateLiteralElement: false,
+ arrayElement: true,
+ indexedAccessElement: false,
+ conditionalCheck: true,
+ conditionalExtends: true,
+ conditionalTrue: false,
+ conditionalFalse: false,
+ indexedIndex: false,
+ indexedObject: true,
+ inferredConstraint: true,
+ intersectionElement: true,
+ mappedName: false,
+ mappedParameter: false,
+ mappedTemplate: false,
+ optionalElement: true,
+ predicateTarget: false,
+ queryTypeTarget: false,
+ typeOperatorTarget: true,
+ referenceTypeArgument: false,
+ restElement: true,
+ tupleElement: false,
+ unionElement: true,
+ };
+ return map[context];
+ }
+ toObject(serializer) {
+ return {
+ type: this.type,
+ checkType: serializer.toObject(this.checkType),
+ extendsType: serializer.toObject(this.extendsType),
+ trueType: serializer.toObject(this.trueType),
+ falseType: serializer.toObject(this.falseType),
+ };
+ }
+}
+exports.ConditionalType = ConditionalType;
+/**
+ * Represents an indexed access type.
+ */
+class IndexedAccessType extends Type {
+ constructor(objectType, indexType) {
+ super();
+ this.objectType = objectType;
+ this.indexType = indexType;
+ this.type = "indexedAccess";
+ }
+ getTypeString() {
+ return [
+ this.objectType.stringify(exports.TypeContext.indexedObject),
+ "[",
+ this.indexType.stringify(exports.TypeContext.indexedIndex),
+ "]",
+ ].join("");
+ }
+ needsParenthesis() {
+ return false;
+ }
+ toObject(serializer) {
+ return {
+ type: this.type,
+ indexType: serializer.toObject(this.indexType),
+ objectType: serializer.toObject(this.objectType),
+ };
+ }
+}
+exports.IndexedAccessType = IndexedAccessType;
+/**
+ * Represents an inferred type, U in the example below.
+ *
+ * ```ts
+ * type Z = Promise<string> extends Promise<infer U> : never
+ * ```
+ */
+class InferredType extends Type {
+ constructor(name, constraint) {
+ super();
+ this.name = name;
+ this.constraint = constraint;
+ this.type = "inferred";
+ }
+ getTypeString() {
+ if (this.constraint) {
+ return `infer ${this.name} extends ${this.constraint.stringify(exports.TypeContext.inferredConstraint)}`;
+ }
+ return `infer ${this.name}`;
+ }
+ needsParenthesis(context) {
+ const map = {
+ none: false,
+ templateLiteralElement: false,
+ arrayElement: true,
+ indexedAccessElement: false,
+ conditionalCheck: false,
+ conditionalExtends: false,
+ conditionalTrue: false,
+ conditionalFalse: false,
+ indexedIndex: false,
+ indexedObject: true,
+ inferredConstraint: false,
+ intersectionElement: false,
+ mappedName: false,
+ mappedParameter: false,
+ mappedTemplate: false,
+ optionalElement: true,
+ predicateTarget: false,
+ queryTypeTarget: false,
+ typeOperatorTarget: false,
+ referenceTypeArgument: false,
+ restElement: true,
+ tupleElement: false,
+ unionElement: false,
+ };
+ return map[context];
+ }
+ toObject(serializer) {
+ return {
+ type: this.type,
+ name: this.name,
+ constraint: serializer.toObject(this.constraint),
+ };
+ }
+}
+exports.InferredType = InferredType;
+/**
+ * Represents an intersection type.
+ *
+ * ```ts
+ * let value: A & B;
+ * ```
+ */
+class IntersectionType extends Type {
+ constructor(types) {
+ super();
+ this.types = types;
+ this.type = "intersection";
+ }
+ getTypeString() {
+ return this.types
+ .map((t) => t.stringify(exports.TypeContext.intersectionElement))
+ .join(" & ");
+ }
+ needsParenthesis(context) {
+ const map = {
+ none: false,
+ templateLiteralElement: false,
+ arrayElement: true,
+ indexedAccessElement: false,
+ conditionalCheck: true,
+ conditionalExtends: false,
+ conditionalTrue: false,
+ conditionalFalse: false,
+ indexedIndex: false,
+ indexedObject: true,
+ inferredConstraint: false,
+ intersectionElement: false,
+ mappedName: false,
+ mappedParameter: false,
+ mappedTemplate: false,
+ optionalElement: true,
+ predicateTarget: false,
+ queryTypeTarget: false,
+ typeOperatorTarget: true,
+ referenceTypeArgument: false,
+ restElement: true,
+ tupleElement: false,
+ unionElement: false,
+ };
+ return map[context];
+ }
+ toObject(serializer) {
+ return {
+ type: this.type,
+ types: this.types.map((t) => serializer.toObject(t)),
+ };
+ }
+}
+exports.IntersectionType = IntersectionType;
+/**
+ * Represents an intrinsic type like `string` or `boolean`.
+ *
+ * ```ts
+ * let value: number;
+ * ```
+ */
+class IntrinsicType extends Type {
+ constructor(name) {
+ super();
+ this.name = name;
+ this.type = "intrinsic";
+ }
+ getTypeString() {
+ return this.name;
+ }
+ toObject() {
+ return {
+ type: this.type,
+ name: this.name,
+ };
+ }
+ needsParenthesis() {
+ return false;
+ }
+}
+exports.IntrinsicType = IntrinsicType;
+/**
+ * Represents a literal type.
+ *
+ * ```ts
+ * type A = "A"
+ * type B = 1
+ * ```
+ */
+class LiteralType extends Type {
+ constructor(value) {
+ super();
+ this.value = value;
+ this.type = "literal";
+ }
+ /**
+ * Return a string representation of this type.
+ */
+ getTypeString() {
+ if (typeof this.value === "bigint") {
+ return this.value.toString() + "n";
+ }
+ return JSON.stringify(this.value);
+ }
+ needsParenthesis() {
+ return false;
+ }
+ toObject() {
+ if (typeof this.value === "bigint") {
+ return {
+ type: this.type,
+ value: {
+ value: this.value.toString().replace("-", ""),
+ negative: this.value < BigInt("0"),
+ },
+ };
+ }
+ return {
+ type: this.type,
+ value: this.value,
+ };
+ }
+}
+exports.LiteralType = LiteralType;
+/**
+ * Represents a mapped type.
+ *
+ * ```ts
+ * { -readonly [K in Parameter as Name]?: Template }
+ * ```
+ */
+class MappedType extends Type {
+ constructor(parameter, parameterType, templateType, readonlyModifier, optionalModifier, nameType) {
+ super();
+ this.parameter = parameter;
+ this.parameterType = parameterType;
+ this.templateType = templateType;
+ this.readonlyModifier = readonlyModifier;
+ this.optionalModifier = optionalModifier;
+ this.nameType = nameType;
+ this.type = "mapped";
+ }
+ getTypeString() {
+ const read = {
+ "+": "readonly ",
+ "-": "-readonly ",
+ "": "",
+ }[this.readonlyModifier ?? ""];
+ const opt = {
+ "+": "?",
+ "-": "-?",
+ "": "",
+ }[this.optionalModifier ?? ""];
+ const parts = [
+ "{ ",
+ read,
+ "[",
+ this.parameter,
+ " in ",
+ this.parameterType.stringify(exports.TypeContext.mappedParameter),
+ ];
+ if (this.nameType) {
+ parts.push(" as ", this.nameType.stringify(exports.TypeContext.mappedName));
+ }
+ parts.push("]", opt, ": ", this.templateType.stringify(exports.TypeContext.mappedTemplate), " }");
+ return parts.join("");
+ }
+ needsParenthesis() {
+ return false;
+ }
+ toObject(serializer) {
+ return {
+ type: this.type,
+ parameter: this.parameter,
+ parameterType: serializer.toObject(this.parameterType),
+ templateType: serializer.toObject(this.templateType),
+ readonlyModifier: this.readonlyModifier,
+ optionalModifier: this.optionalModifier,
+ nameType: serializer.toObject(this.nameType),
+ };
+ }
+}
+exports.MappedType = MappedType;
+/**
+ * Represents an optional type
+ * ```ts
+ * type Z = [1, 2?]
+ * // ^^
+ * ```
+ */
+class OptionalType extends Type {
+ constructor(elementType) {
+ super();
+ this.elementType = elementType;
+ this.type = "optional";
+ }
+ getTypeString() {
+ return this.elementType.stringify(exports.TypeContext.optionalElement) + "?";
+ }
+ needsParenthesis() {
+ return false;
+ }
+ toObject(serializer) {
+ return {
+ type: this.type,
+ elementType: serializer.toObject(this.elementType),
+ };
+ }
+}
+exports.OptionalType = OptionalType;
+/**
+ * Represents a type predicate.
+ *
+ * ```ts
+ * function isString(x: unknown): x is string {}
+ * function assert(condition: boolean): asserts condition {}
+ * ```
+ */
+class PredicateType extends Type {
+ /**
+ * Create a new PredicateType instance.
+ *
+ * @param name The identifier name which is tested by the predicate.
+ * @param asserts True if the type is of the form `asserts val is string`,
+ * false if the type is of the form `val is string`
+ * @param targetType The type that the identifier is tested to be.
+ * May be undefined if the type is of the form `asserts val`.
+ * Will be defined if the type is of the form `asserts val is string` or `val is string`.
+ */
+ constructor(name, asserts, targetType) {
+ super();
+ this.name = name;
+ this.asserts = asserts;
+ this.targetType = targetType;
+ this.type = "predicate";
+ }
+ /**
+ * Return a string representation of this type.
+ */
+ getTypeString() {
+ const out = this.asserts ? ["asserts", this.name] : [this.name];
+ if (this.targetType) {
+ out.push("is", this.targetType.stringify(exports.TypeContext.predicateTarget));
+ }
+ return out.join(" ");
+ }
+ needsParenthesis() {
+ return false;
+ }
+ toObject(serializer) {
+ return {
+ type: this.type,
+ name: this.name,
+ asserts: this.asserts,
+ targetType: serializer.toObject(this.targetType),
+ };
+ }
+}
+exports.PredicateType = PredicateType;
+/**
+ * Represents a type that is constructed by querying the type of a reflection.
+ * ```ts
+ * const x = 1
+ * type Z = typeof x // query on reflection for x
+ * ```
+ */
+class QueryType extends Type {
+ constructor(queryType) {
+ super();
+ this.queryType = queryType;
+ this.type = "query";
+ }
+ getTypeString() {
+ return `typeof ${this.queryType.stringify(exports.TypeContext.queryTypeTarget)}`;
+ }
+ /**
+ * @privateRemarks
+ * An argument could be made that this ought to return true for indexedObject
+ * since precedence is different than on the value side... if someone really cares
+ * they can easily use a custom theme to change this.
+ */
+ needsParenthesis() {
+ return false;
+ }
+ toObject(serializer) {
+ return {
+ type: this.type,
+ queryType: serializer.toObject(this.queryType),
+ };
+ }
+}
+exports.QueryType = QueryType;
+/**
+ * Represents a type that refers to another reflection like a class, interface or enum.
+ *
+ * ```ts
+ * let value: MyClass<T>;
+ * ```
+ */
+class ReferenceType extends Type {
+ /**
+ * The resolved reflection.
+ */
+ get reflection() {
+ if (typeof this._target === "number") {
+ return this._project?.getReflectionById(this._target);
+ }
+ const resolved = this._project?.getReflectionFromSymbolId(this._target);
+ if (resolved)
+ this._target = resolved.id;
+ return resolved;
+ }
+ /**
+ * If not resolved, the symbol id of the reflection, otherwise undefined.
+ */
+ get symbolId() {
+ if (!this.reflection && typeof this._target === "object") {
+ return this._target;
+ }
+ }
+ /**
+ * Checks if this type is a reference type because it uses a name, but is intentionally not pointing
+ * to a reflection. This happens for type parameters and when representing a mapped type.
+ */
+ isIntentionallyBroken() {
+ return this._target === -1 || this.refersToTypeParameter;
+ }
+ /**
+ * Convert this reference type to a declaration reference used for resolution of external types.
+ */
+ toDeclarationReference() {
+ return {
+ resolutionStart: "global",
+ moduleSource: this.package,
+ symbolReference: {
+ path: this.qualifiedName
+ .split(".")
+ .map((p) => ({ path: p, navigation: "." })),
+ },
+ };
+ }
+ constructor(name, target, project, qualifiedName) {
+ super();
+ this.type = "reference";
+ /**
+ * If set, no warnings about something not being exported should be created
+ * since this may be referring to a type created with `infer X` which will not
+ * be registered on the project.
+ */
+ this.refersToTypeParameter = false;
+ this.name = name;
+ if (typeof target === "number") {
+ this._target = target;
+ }
+ else {
+ this._target = "variant" in target ? target.id : target;
+ }
+ this._project = project;
+ this.qualifiedName = qualifiedName;
+ }
+ static createResolvedReference(name, target, project) {
+ return new ReferenceType(name, target, project, name);
+ }
+ static createSymbolReference(symbol, context, name) {
+ // Type parameters should never have resolved references because they
+ // cannot be linked to, and might be declared within the type with conditional types.
+ if (symbol.flags & ts.SymbolFlags.TypeParameter) {
+ const ref = ReferenceType.createBrokenReference(name ?? symbol.name, context.project);
+ ref.refersToTypeParameter = true;
+ return ref;
+ }
+ const ref = new ReferenceType(name ?? symbol.name, new ReflectionSymbolId_1.ReflectionSymbolId(symbol), context.project, (0, tsutils_1.getQualifiedName)(symbol, name ?? symbol.name));
+ const symbolPath = symbol?.declarations?.[0]
+ ?.getSourceFile()
+ .fileName.replace(/\\/g, "/");
+ if (!symbolPath)
+ return ref;
+ // Attempt to decide package name from path if it contains "node_modules"
+ let startIndex = symbolPath.lastIndexOf("node_modules/");
+ if (startIndex !== -1) {
+ startIndex += "node_modules/".length;
+ let stopIndex = symbolPath.indexOf("/", startIndex);
+ // Scoped package, e.g. `@types/node`
+ if (symbolPath[startIndex] === "@") {
+ stopIndex = symbolPath.indexOf("/", stopIndex + 1);
+ }
+ const packageName = symbolPath.substring(startIndex, stopIndex);
+ ref.package = packageName;
+ return ref;
+ }
+ // Otherwise, look for a "package.json" file in a parent path
+ ref.package = (0, fs_1.findPackageForPath)(symbolPath);
+ return ref;
+ }
+ /**
+ * This is used for type parameters, which don't actually point to something,
+ * and also for temporary references which will be cleaned up with real references
+ * later during conversion.
+ * @internal
+ */
+ static createBrokenReference(name, project) {
+ return new ReferenceType(name, -1, project, name);
+ }
+ getTypeString() {
+ const name = this.reflection ? this.reflection.name : this.name;
+ let typeArgs = "";
+ if (this.typeArguments && this.typeArguments.length > 0) {
+ typeArgs += "<";
+ typeArgs += this.typeArguments
+ .map((arg) => arg.stringify(exports.TypeContext.referenceTypeArgument))
+ .join(", ");
+ typeArgs += ">";
+ }
+ return name + typeArgs;
+ }
+ needsParenthesis() {
+ return false;
+ }
+ toObject(serializer) {
+ const result = {
+ type: this.type,
+ target: typeof this._target === "number"
+ ? this._target
+ : this._target.toObject(serializer),
+ typeArguments: serializer.toObjectsOptional(this.typeArguments),
+ name: this.name,
+ package: this.package,
+ externalUrl: this.externalUrl,
+ };
+ if (this.name !== this.qualifiedName) {
+ result.qualifiedName = this.qualifiedName;
+ }
+ if (this.refersToTypeParameter) {
+ result.refersToTypeParameter = true;
+ }
+ return result;
+ }
+ fromObject(de, obj) {
+ this.typeArguments = de.reviveMany(obj.typeArguments, (t) => de.constructType(t));
+ if (typeof obj.target === "number" && obj.target !== -1) {
+ de.defer((project) => {
+ const target = project.getReflectionById(de.oldIdToNewId[obj.target] ?? -1);
+ if (target) {
+ this._project = project;
+ this._target = target.id;
+ }
+ else {
+ de.logger.warn(`Serialized project contained a reference to ${obj.target} (${this.qualifiedName}), which was not a part of the project.`);
+ }
+ });
+ }
+ else if (obj.target === -1) {
+ this._target = -1;
+ }
+ else {
+ this._project = de.project;
+ this._target = new ReflectionSymbolId_1.ReflectionSymbolId(obj.target);
+ }
+ this.qualifiedName = obj.qualifiedName ?? obj.name;
+ this.package = obj.package;
+ this.refersToTypeParameter = !!obj.refersToTypeParameter;
+ }
+}
+exports.ReferenceType = ReferenceType;
+/**
+ * Represents a type which has it's own reflection like literal types.
+ * This type will likely go away at some point and be replaced by a dedicated
+ * `ObjectType`. Allowing reflections to be nested within types causes much
+ * pain in the rendering code.
+ *
+ * ```ts
+ * let value: { a: string, b: number };
+ * ```
+ */
+class ReflectionType extends Type {
+ constructor(declaration) {
+ super();
+ this.declaration = declaration;
+ this.type = "reflection";
+ }
+ // This really ought to do better, but I'm putting off investing effort here until
+ // I'm fully convinced that keeping this is a good idea. Currently, I'd much rather
+ // change object types to not create reflections.
+ getTypeString() {
+ if (!this.declaration.children && this.declaration.signatures) {
+ return "Function";
+ }
+ else {
+ return "Object";
+ }
+ }
+ needsParenthesis() {
+ return false;
+ }
+ toObject(serializer) {
+ return {
+ type: this.type,
+ declaration: serializer.toObject(this.declaration),
+ };
+ }
+}
+exports.ReflectionType = ReflectionType;
+/**
+ * Represents a rest type
+ * ```ts
+ * type Z = [1, ...2[]]
+ * // ^^^^^^
+ * ```
+ */
+class RestType extends Type {
+ constructor(elementType) {
+ super();
+ this.elementType = elementType;
+ this.type = "rest";
+ }
+ getTypeString() {
+ return `...${this.elementType.stringify(exports.TypeContext.restElement)}`;
+ }
+ needsParenthesis() {
+ return false;
+ }
+ toObject(serializer) {
+ return {
+ type: this.type,
+ elementType: serializer.toObject(this.elementType),
+ };
+ }
+}
+exports.RestType = RestType;
+/**
+ * TS 4.1 template literal types
+ * ```ts
+ * type Z = `${'a' | 'b'}${'a' | 'b'}`
+ * ```
+ */
+class TemplateLiteralType extends Type {
+ constructor(head, tail) {
+ super();
+ this.head = head;
+ this.tail = tail;
+ this.type = "templateLiteral";
+ }
+ getTypeString() {
+ return [
+ "`",
+ this.head,
+ ...this.tail.map(([type, text]) => {
+ return ("${" +
+ type.stringify(exports.TypeContext.templateLiteralElement) +
+ "}" +
+ text);
+ }),
+ "`",
+ ].join("");
+ }
+ needsParenthesis() {
+ return false;
+ }
+ toObject(serializer) {
+ return {
+ type: this.type,
+ head: this.head,
+ tail: this.tail.map(([type, text]) => [
+ serializer.toObject(type),
+ text,
+ ]),
+ };
+ }
+}
+exports.TemplateLiteralType = TemplateLiteralType;
+/**
+ * Represents a tuple type.
+ *
+ * ```ts
+ * let value: [string, boolean];
+ * ```
+ */
+class TupleType extends Type {
+ /**
+ * @param elements The ordered type elements of the tuple type.
+ */
+ constructor(elements) {
+ super();
+ this.elements = elements;
+ this.type = "tuple";
+ }
+ getTypeString() {
+ return ("[" +
+ this.elements
+ .map((t) => t.stringify(exports.TypeContext.tupleElement))
+ .join(", ") +
+ "]");
+ }
+ needsParenthesis() {
+ return false;
+ }
+ toObject(serializer) {
+ return {
+ type: this.type,
+ elements: serializer.toObjectsOptional(this.elements),
+ };
+ }
+}
+exports.TupleType = TupleType;
+/**
+ * Represents a named member of a tuple type.
+ *
+ * ```ts
+ * let value: [name: string];
+ * ```
+ */
+class NamedTupleMember extends Type {
+ constructor(name, isOptional, element) {
+ super();
+ this.name = name;
+ this.isOptional = isOptional;
+ this.element = element;
+ this.type = "namedTupleMember";
+ }
+ /**
+ * Return a string representation of this type.
+ */
+ getTypeString() {
+ return `${this.name}${this.isOptional ? "?" : ""}: ${this.element.stringify(exports.TypeContext.tupleElement)}`;
+ }
+ needsParenthesis() {
+ return false;
+ }
+ toObject(serializer) {
+ return {
+ type: this.type,
+ name: this.name,
+ isOptional: this.isOptional,
+ element: serializer.toObject(this.element),
+ };
+ }
+}
+exports.NamedTupleMember = NamedTupleMember;
+/**
+ * Represents a type operator type.
+ *
+ * ```ts
+ * class A {}
+ * class B<T extends keyof A> {}
+ * ```
+ */
+class TypeOperatorType extends Type {
+ constructor(target, operator) {
+ super();
+ this.target = target;
+ this.operator = operator;
+ this.type = "typeOperator";
+ }
+ getTypeString() {
+ return `${this.operator} ${this.target.stringify(exports.TypeContext.typeOperatorTarget)}`;
+ }
+ needsParenthesis(context) {
+ const map = {
+ none: false,
+ templateLiteralElement: false,
+ arrayElement: true,
+ indexedAccessElement: false,
+ conditionalCheck: false,
+ conditionalExtends: false,
+ conditionalTrue: false,
+ conditionalFalse: false,
+ indexedIndex: false,
+ indexedObject: true,
+ inferredConstraint: false,
+ intersectionElement: false,
+ mappedName: false,
+ mappedParameter: false,
+ mappedTemplate: false,
+ optionalElement: true,
+ predicateTarget: false,
+ queryTypeTarget: false,
+ typeOperatorTarget: false,
+ referenceTypeArgument: false,
+ restElement: false,
+ tupleElement: false,
+ unionElement: false,
+ };
+ return map[context];
+ }
+ toObject(serializer) {
+ return {
+ type: this.type,
+ operator: this.operator,
+ target: serializer.toObject(this.target),
+ };
+ }
+}
+exports.TypeOperatorType = TypeOperatorType;
+/**
+ * Represents an union type.
+ *
+ * ```ts
+ * let value: string | string[];
+ * ```
+ */
+class UnionType extends Type {
+ constructor(types) {
+ super();
+ this.types = types;
+ this.type = "union";
+ this.normalize();
+ }
+ getTypeString() {
+ return this.types
+ .map((t) => t.stringify(exports.TypeContext.unionElement))
+ .join(" | ");
+ }
+ needsParenthesis(context) {
+ const map = {
+ none: false,
+ templateLiteralElement: false,
+ arrayElement: true,
+ indexedAccessElement: false,
+ conditionalCheck: true,
+ conditionalExtends: false,
+ conditionalTrue: false,
+ conditionalFalse: false,
+ indexedIndex: false,
+ indexedObject: true,
+ inferredConstraint: false,
+ intersectionElement: true,
+ mappedName: false,
+ mappedParameter: false,
+ mappedTemplate: false,
+ optionalElement: true,
+ predicateTarget: false,
+ queryTypeTarget: false,
+ typeOperatorTarget: true,
+ referenceTypeArgument: false,
+ restElement: false,
+ tupleElement: false,
+ unionElement: false,
+ };
+ return map[context];
+ }
+ normalize() {
+ let trueIndex = -1;
+ let falseIndex = -1;
+ for (let i = 0; i < this.types.length && (trueIndex === -1 || falseIndex === -1); i++) {
+ const t = this.types[i];
+ if (t instanceof LiteralType) {
+ if (t.value === true) {
+ trueIndex = i;
+ }
+ if (t.value === false) {
+ falseIndex = i;
+ }
+ }
+ }
+ if (trueIndex !== -1 && falseIndex !== -1) {
+ this.types.splice(Math.max(trueIndex, falseIndex), 1);
+ this.types.splice(Math.min(trueIndex, falseIndex), 1, new IntrinsicType("boolean"));
+ }
+ }
+ toObject(serializer) {
+ return {
+ type: this.type,
+ types: this.types.map((t) => serializer.toObject(t)),
+ };
+ }
+}
+exports.UnionType = UnionType;
+/**
+ * Represents all unknown types that cannot be converted by TypeDoc.
+ */
+class UnknownType extends Type {
+ constructor(name) {
+ super();
+ this.type = "unknown";
+ this.name = name;
+ }
+ getTypeString() {
+ return this.name;
+ }
+ /**
+ * Always returns true if not at the root level, we have no idea what's in here, so wrap it in parenthesis
+ * to be extra safe.
+ */
+ needsParenthesis(context) {
+ return context !== exports.TypeContext.none;
+ }
+ toObject() {
+ return {
+ type: this.type,
+ name: this.name,
+ };
+ }
+}
+exports.UnknownType = UnknownType;
diff --git a/node_modules/typedoc/dist/lib/output/components.d.ts b/node_modules/typedoc/dist/lib/output/components.d.ts
new file mode 100644
index 0000000..ed833c9
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/components.d.ts
@@ -0,0 +1,54 @@
+import { Component, AbstractComponent } from "../utils/component";
+import type { ProjectReflection, Reflection } from "../models/reflections/index";
+import type { Renderer } from "./renderer";
+import { RendererEvent, PageEvent } from "./events";
+export { Component };
+export declare abstract class RendererComponent extends AbstractComponent<Renderer> {
+}
+/**
+ * A plugin for the renderer that reads the current render context.
+ */
+export declare abstract class ContextAwareRendererComponent extends RendererComponent {
+ /**
+ * The project that is currently processed.
+ */
+ protected project?: ProjectReflection;
+ /**
+ * The reflection that is currently processed.
+ */
+ protected page?: PageEvent<Reflection>;
+ /**
+ * The url of the document that is being currently generated.
+ * Set when a page begins rendering.
+ */
+ private location;
+ /**
+ * Regular expression to test if a string looks like an external url.
+ */
+ protected urlPrefix: RegExp;
+ /**
+ * Create a new ContextAwareRendererPlugin instance.
+ *
+ * @param renderer The renderer this plugin should be attached to.
+ */
+ protected initialize(): void;
+ /**
+ * Transform the given absolute path into a relative path.
+ *
+ * @param absolute The absolute path to transform.
+ * @returns A path relative to the document currently processed.
+ */
+ getRelativeUrl(absolute: string): string;
+ /**
+ * Triggered before the renderer starts rendering a project.
+ *
+ * @param event An event object describing the current render operation.
+ */
+ protected onBeginRenderer(event: RendererEvent): void;
+ /**
+ * Triggered before a document will be rendered.
+ *
+ * @param page An event object describing the current render operation.
+ */
+ protected onBeginPage(page: PageEvent<Reflection>): void;
+}
diff --git a/node_modules/typedoc/dist/lib/output/components.js b/node_modules/typedoc/dist/lib/output/components.js
new file mode 100644
index 0000000..cabc00f
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/components.js
@@ -0,0 +1,89 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ContextAwareRendererComponent = exports.RendererComponent = exports.Component = void 0;
+const Path = __importStar(require("path"));
+const component_1 = require("../utils/component");
+Object.defineProperty(exports, "Component", { enumerable: true, get: function () { return component_1.Component; } });
+const events_1 = require("./events");
+class RendererComponent extends component_1.AbstractComponent {
+}
+exports.RendererComponent = RendererComponent;
+/**
+ * A plugin for the renderer that reads the current render context.
+ */
+class ContextAwareRendererComponent extends RendererComponent {
+ constructor() {
+ super(...arguments);
+ /**
+ * Regular expression to test if a string looks like an external url.
+ */
+ this.urlPrefix = /^(http|ftp)s?:\/\//;
+ }
+ /**
+ * Create a new ContextAwareRendererPlugin instance.
+ *
+ * @param renderer The renderer this plugin should be attached to.
+ */
+ initialize() {
+ this.listenTo(this.owner, {
+ [events_1.RendererEvent.BEGIN]: this.onBeginRenderer,
+ [events_1.PageEvent.BEGIN]: this.onBeginPage,
+ });
+ }
+ /**
+ * Transform the given absolute path into a relative path.
+ *
+ * @param absolute The absolute path to transform.
+ * @returns A path relative to the document currently processed.
+ */
+ getRelativeUrl(absolute) {
+ if (this.urlPrefix.test(absolute)) {
+ return absolute;
+ }
+ else {
+ const relative = Path.relative(Path.dirname(this.location), Path.dirname(absolute));
+ return Path.join(relative, Path.basename(absolute)).replace(/\\/g, "/");
+ }
+ }
+ /**
+ * Triggered before the renderer starts rendering a project.
+ *
+ * @param event An event object describing the current render operation.
+ */
+ onBeginRenderer(event) {
+ this.project = event.project;
+ }
+ /**
+ * Triggered before a document will be rendered.
+ *
+ * @param page An event object describing the current render operation.
+ */
+ onBeginPage(page) {
+ this.location = page.url;
+ this.page = page;
+ }
+}
+exports.ContextAwareRendererComponent = ContextAwareRendererComponent;
diff --git a/node_modules/typedoc/dist/lib/output/events.d.ts b/node_modules/typedoc/dist/lib/output/events.d.ts
new file mode 100644
index 0000000..63883db
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/events.d.ts
@@ -0,0 +1,172 @@
+import { Event } from "../utils/events";
+import type { ProjectReflection } from "../models/reflections/project";
+import type { RenderTemplate, UrlMapping } from "./models/UrlMapping";
+import type { DeclarationReflection, ReflectionKind } from "../models";
+/**
+ * An event emitted by the {@link Renderer} class at the very beginning and
+ * ending of the entire rendering process.
+ *
+ * @see {@link Renderer.EVENT_BEGIN}
+ * @see {@link Renderer.EVENT_END}
+ */
+export declare class RendererEvent extends Event {
+ /**
+ * The project the renderer is currently processing.
+ */
+ readonly project: ProjectReflection;
+ /**
+ * The path of the directory the documentation should be written to.
+ */
+ readonly outputDirectory: string;
+ /**
+ * A list of all pages that should be generated.
+ *
+ * This list can be altered during the {@link Renderer.EVENT_BEGIN} event.
+ */
+ urls?: UrlMapping[];
+ /**
+ * Triggered before the renderer starts rendering a project.
+ * @event
+ */
+ static readonly BEGIN = "beginRender";
+ /**
+ * Triggered after the renderer has written all documents.
+ * @event
+ */
+ static readonly END = "endRender";
+ constructor(name: string, outputDirectory: string, project: ProjectReflection);
+ /**
+ * Create an {@link PageEvent} event based on this event and the given url mapping.
+ *
+ * @internal
+ * @param mapping The mapping that defines the generated {@link PageEvent} state.
+ * @returns A newly created {@link PageEvent} instance.
+ */
+ createPageEvent<Model>(mapping: UrlMapping<Model>): [RenderTemplate<PageEvent<Model>>, PageEvent<Model>];
+}
+/**
+ * An event emitted by the {@link Renderer} class before and after the
+ * markup of a page is rendered.
+ *
+ * @see {@link Renderer.EVENT_BEGIN_PAGE}
+ * @see {@link Renderer.EVENT_END_PAGE}
+ */
+export declare class PageEvent<out Model = unknown> extends Event {
+ /**
+ * The project the renderer is currently processing.
+ */
+ project: ProjectReflection;
+ /**
+ * The filename the page will be written to.
+ */
+ filename: string;
+ /**
+ * The url this page will be located at.
+ */
+ url: string;
+ /**
+ * The model that should be rendered on this page.
+ */
+ readonly model: Model;
+ /**
+ * The final html content of this page.
+ *
+ * Should be rendered by layout templates and can be modified by plugins.
+ */
+ contents?: string;
+ /**
+ * Links to content within this page that should be rendered in the page navigation.
+ * This is built when rendering the document content.
+ */
+ pageHeadings: Array<{
+ link: string;
+ text: string;
+ level?: number;
+ kind?: ReflectionKind;
+ classes?: string;
+ }>;
+ /**
+ * Triggered before a document will be rendered.
+ * @event
+ */
+ static readonly BEGIN = "beginPage";
+ /**
+ * Triggered after a document has been rendered, just before it is written to disc.
+ * @event
+ */
+ static readonly END = "endPage";
+ constructor(name: string, model: Model);
+}
+/**
+ * An event emitted when markdown is being parsed. Allows other plugins to manipulate the result.
+ *
+ * @see {@link MarkdownEvent.PARSE}
+ * @see {@link MarkdownEvent.INCLUDE}
+ */
+export declare class MarkdownEvent extends Event {
+ /**
+ * The unparsed original text.
+ */
+ readonly originalText: string;
+ /**
+ * The parsed output.
+ */
+ parsedText: string;
+ /**
+ * The page that this markdown is being parsed for.
+ */
+ readonly page: PageEvent;
+ /**
+ * Triggered on the renderer when this plugin parses a markdown string.
+ * @event
+ */
+ static readonly PARSE = "parseMarkdown";
+ /**
+ * Triggered on the renderer when this plugin includes a markdown file through a markdown include tag.
+ * @event
+ */
+ static readonly INCLUDE = "includeMarkdown";
+ constructor(name: string, page: PageEvent, originalText: string, parsedText: string);
+}
+/**
+ * An event emitted when the search index is being prepared.
+ */
+export declare class IndexEvent extends Event {
+ /**
+ * Triggered on the renderer when the search index is being prepared.
+ * @event
+ */
+ static readonly PREPARE_INDEX = "prepareIndex";
+ /**
+ * May be filtered by plugins to reduce the results available.
+ * Additional items *should not* be added to this array.
+ *
+ * If you remove an index from this array, you must also remove the
+ * same index from {@link searchFields}. The {@link removeResult} helper
+ * will do this for you.
+ */
+ searchResults: DeclarationReflection[];
+ /**
+ * Additional search fields to be used when creating the search index.
+ * `name` and `comment` may be specified to overwrite TypeDoc's search fields.
+ *
+ * Do not use `id` as a custom search field.
+ */
+ searchFields: Record<string, string>[];
+ /**
+ * Weights for the fields defined in `searchFields`. The default will weight
+ * `name` as 10x more important than comment content.
+ *
+ * If a field added to {@link searchFields} is not added to this object, it
+ * will **not** be searchable.
+ *
+ * Do not replace this object, instead, set new properties on it for custom search
+ * fields added by your plugin.
+ */
+ readonly searchFieldWeights: Record<string, number>;
+ /**
+ * Remove a search result by index.
+ */
+ removeResult(index: number): void;
+ constructor(name: string, searchResults: DeclarationReflection[]);
+}
diff --git a/node_modules/typedoc/dist/lib/output/events.js b/node_modules/typedoc/dist/lib/output/events.js
new file mode 100644
index 0000000..98c0aee
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/events.js
@@ -0,0 +1,158 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.IndexEvent = exports.MarkdownEvent = exports.PageEvent = exports.RendererEvent = void 0;
+const Path = __importStar(require("path"));
+const events_1 = require("../utils/events");
+/**
+ * An event emitted by the {@link Renderer} class at the very beginning and
+ * ending of the entire rendering process.
+ *
+ * @see {@link Renderer.EVENT_BEGIN}
+ * @see {@link Renderer.EVENT_END}
+ */
+class RendererEvent extends events_1.Event {
+ constructor(name, outputDirectory, project) {
+ super(name);
+ this.outputDirectory = outputDirectory;
+ this.project = project;
+ }
+ /**
+ * Create an {@link PageEvent} event based on this event and the given url mapping.
+ *
+ * @internal
+ * @param mapping The mapping that defines the generated {@link PageEvent} state.
+ * @returns A newly created {@link PageEvent} instance.
+ */
+ createPageEvent(mapping) {
+ const event = new PageEvent(PageEvent.BEGIN, mapping.model);
+ event.project = this.project;
+ event.url = mapping.url;
+ event.filename = Path.join(this.outputDirectory, mapping.url);
+ return [mapping.template, event];
+ }
+}
+exports.RendererEvent = RendererEvent;
+/**
+ * Triggered before the renderer starts rendering a project.
+ * @event
+ */
+RendererEvent.BEGIN = "beginRender";
+/**
+ * Triggered after the renderer has written all documents.
+ * @event
+ */
+RendererEvent.END = "endRender";
+/**
+ * An event emitted by the {@link Renderer} class before and after the
+ * markup of a page is rendered.
+ *
+ * @see {@link Renderer.EVENT_BEGIN_PAGE}
+ * @see {@link Renderer.EVENT_END_PAGE}
+ */
+class PageEvent extends events_1.Event {
+ constructor(name, model) {
+ super(name);
+ /**
+ * Links to content within this page that should be rendered in the page navigation.
+ * This is built when rendering the document content.
+ */
+ this.pageHeadings = [];
+ this.model = model;
+ }
+}
+exports.PageEvent = PageEvent;
+/**
+ * Triggered before a document will be rendered.
+ * @event
+ */
+PageEvent.BEGIN = "beginPage";
+/**
+ * Triggered after a document has been rendered, just before it is written to disc.
+ * @event
+ */
+PageEvent.END = "endPage";
+/**
+ * An event emitted when markdown is being parsed. Allows other plugins to manipulate the result.
+ *
+ * @see {@link MarkdownEvent.PARSE}
+ * @see {@link MarkdownEvent.INCLUDE}
+ */
+class MarkdownEvent extends events_1.Event {
+ constructor(name, page, originalText, parsedText) {
+ super(name);
+ this.page = page;
+ this.originalText = originalText;
+ this.parsedText = parsedText;
+ }
+}
+exports.MarkdownEvent = MarkdownEvent;
+/**
+ * Triggered on the renderer when this plugin parses a markdown string.
+ * @event
+ */
+MarkdownEvent.PARSE = "parseMarkdown";
+/**
+ * Triggered on the renderer when this plugin includes a markdown file through a markdown include tag.
+ * @event
+ */
+MarkdownEvent.INCLUDE = "includeMarkdown";
+/**
+ * An event emitted when the search index is being prepared.
+ */
+class IndexEvent extends events_1.Event {
+ /**
+ * Remove a search result by index.
+ */
+ removeResult(index) {
+ this.searchResults.splice(index, 1);
+ this.searchFields.splice(index, 1);
+ }
+ constructor(name, searchResults) {
+ super(name);
+ /**
+ * Weights for the fields defined in `searchFields`. The default will weight
+ * `name` as 10x more important than comment content.
+ *
+ * If a field added to {@link searchFields} is not added to this object, it
+ * will **not** be searchable.
+ *
+ * Do not replace this object, instead, set new properties on it for custom search
+ * fields added by your plugin.
+ */
+ this.searchFieldWeights = {
+ name: 10,
+ comment: 1,
+ };
+ this.searchResults = searchResults;
+ this.searchFields = Array.from({ length: this.searchResults.length }, () => ({}));
+ }
+}
+exports.IndexEvent = IndexEvent;
+/**
+ * Triggered on the renderer when the search index is being prepared.
+ * @event
+ */
+IndexEvent.PREPARE_INDEX = "prepareIndex";
diff --git a/node_modules/typedoc/dist/lib/output/index.d.ts b/node_modules/typedoc/dist/lib/output/index.d.ts
new file mode 100644
index 0000000..2cc7750
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/index.d.ts
@@ -0,0 +1,8 @@
+export { PageEvent, RendererEvent, MarkdownEvent, IndexEvent } from "./events";
+export { UrlMapping } from "./models/UrlMapping";
+export type { RenderTemplate } from "./models/UrlMapping";
+export { Renderer } from "./renderer";
+export type { RendererHooks } from "./renderer";
+export { Theme } from "./theme";
+export { DefaultTheme } from "./themes/default/DefaultTheme";
+export { DefaultThemeRenderContext } from "./themes/default/DefaultThemeRenderContext";
diff --git a/node_modules/typedoc/dist/lib/output/index.js b/node_modules/typedoc/dist/lib/output/index.js
new file mode 100644
index 0000000..9c40dc3
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/index.js
@@ -0,0 +1,18 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.DefaultThemeRenderContext = exports.DefaultTheme = exports.Theme = exports.Renderer = exports.UrlMapping = exports.IndexEvent = exports.MarkdownEvent = exports.RendererEvent = exports.PageEvent = void 0;
+var events_1 = require("./events");
+Object.defineProperty(exports, "PageEvent", { enumerable: true, get: function () { return events_1.PageEvent; } });
+Object.defineProperty(exports, "RendererEvent", { enumerable: true, get: function () { return events_1.RendererEvent; } });
+Object.defineProperty(exports, "MarkdownEvent", { enumerable: true, get: function () { return events_1.MarkdownEvent; } });
+Object.defineProperty(exports, "IndexEvent", { enumerable: true, get: function () { return events_1.IndexEvent; } });
+var UrlMapping_1 = require("./models/UrlMapping");
+Object.defineProperty(exports, "UrlMapping", { enumerable: true, get: function () { return UrlMapping_1.UrlMapping; } });
+var renderer_1 = require("./renderer");
+Object.defineProperty(exports, "Renderer", { enumerable: true, get: function () { return renderer_1.Renderer; } });
+var theme_1 = require("./theme");
+Object.defineProperty(exports, "Theme", { enumerable: true, get: function () { return theme_1.Theme; } });
+var DefaultTheme_1 = require("./themes/default/DefaultTheme");
+Object.defineProperty(exports, "DefaultTheme", { enumerable: true, get: function () { return DefaultTheme_1.DefaultTheme; } });
+var DefaultThemeRenderContext_1 = require("./themes/default/DefaultThemeRenderContext");
+Object.defineProperty(exports, "DefaultThemeRenderContext", { enumerable: true, get: function () { return DefaultThemeRenderContext_1.DefaultThemeRenderContext; } });
diff --git a/node_modules/typedoc/dist/lib/output/models/UrlMapping.d.ts b/node_modules/typedoc/dist/lib/output/models/UrlMapping.d.ts
new file mode 100644
index 0000000..6e02b72
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/models/UrlMapping.d.ts
@@ -0,0 +1,9 @@
+import type { JSX } from "../../utils";
+import type { PageEvent } from "../events";
+export declare class UrlMapping<Model = any> {
+ url: string;
+ model: Model;
+ template: RenderTemplate<PageEvent<Model>>;
+ constructor(url: string, model: Model, template: RenderTemplate<PageEvent<Model>>);
+}
+export type RenderTemplate<T> = (data: T) => JSX.Element | string;
diff --git a/node_modules/typedoc/dist/lib/output/models/UrlMapping.js b/node_modules/typedoc/dist/lib/output/models/UrlMapping.js
new file mode 100644
index 0000000..1f33cfd
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/models/UrlMapping.js
@@ -0,0 +1,11 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.UrlMapping = void 0;
+class UrlMapping {
+ constructor(url, model, template) {
+ this.url = url;
+ this.model = model;
+ this.template = template;
+ }
+}
+exports.UrlMapping = UrlMapping;
diff --git a/node_modules/typedoc/dist/lib/output/plugins/AssetsPlugin.d.ts b/node_modules/typedoc/dist/lib/output/plugins/AssetsPlugin.d.ts
new file mode 100644
index 0000000..3de57f3
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/plugins/AssetsPlugin.d.ts
@@ -0,0 +1,19 @@
+import { RendererComponent } from "../components";
+/**
+ * A plugin that copies the subdirectory ´assets´ from the current themes
+ * source folder to the output directory.
+ */
+export declare class AssetsPlugin extends RendererComponent {
+ /** @internal */
+ customCss: string;
+ /**
+ * Create a new AssetsPlugin instance.
+ */
+ initialize(): void;
+ /**
+ * Triggered before the renderer starts rendering a project.
+ *
+ * @param event An event object describing the current render operation.
+ */
+ private onRenderEnd;
+}
diff --git a/node_modules/typedoc/dist/lib/output/plugins/AssetsPlugin.js b/node_modules/typedoc/dist/lib/output/plugins/AssetsPlugin.js
new file mode 100644
index 0000000..e7a1ded
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/plugins/AssetsPlugin.js
@@ -0,0 +1,62 @@
+"use strict";
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.AssetsPlugin = void 0;
+const components_1 = require("../components");
+const events_1 = require("../events");
+const fs_1 = require("../../utils/fs");
+const DefaultTheme_1 = require("../themes/default/DefaultTheme");
+const highlighter_1 = require("../../utils/highlighter");
+const utils_1 = require("../../utils");
+const fs_2 = require("fs");
+const path_1 = require("path");
+/**
+ * A plugin that copies the subdirectory ´assets´ from the current themes
+ * source folder to the output directory.
+ */
+let AssetsPlugin = exports.AssetsPlugin = class AssetsPlugin extends components_1.RendererComponent {
+ /**
+ * Create a new AssetsPlugin instance.
+ */
+ initialize() {
+ this.listenTo(this.owner, {
+ [events_1.RendererEvent.END]: this.onRenderEnd,
+ [events_1.RendererEvent.BEGIN]: (event) => {
+ const dest = (0, path_1.join)(event.outputDirectory, "assets");
+ if (this.customCss) {
+ if ((0, fs_2.existsSync)(this.customCss)) {
+ (0, fs_1.copySync)(this.customCss, (0, path_1.join)(dest, "custom.css"));
+ }
+ else {
+ this.application.logger.error(`Custom CSS file at ${this.customCss} does not exist.`);
+ event.preventDefault();
+ }
+ }
+ },
+ });
+ }
+ /**
+ * Triggered before the renderer starts rendering a project.
+ *
+ * @param event An event object describing the current render operation.
+ */
+ onRenderEnd(event) {
+ if (this.owner.theme instanceof DefaultTheme_1.DefaultTheme) {
+ const src = (0, path_1.join)(__dirname, "..", "..", "..", "..", "static");
+ const dest = (0, path_1.join)(event.outputDirectory, "assets");
+ (0, fs_1.copySync)(src, dest);
+ (0, fs_1.writeFileSync)((0, path_1.join)(dest, "highlight.css"), (0, highlighter_1.getStyles)());
+ }
+ }
+};
+__decorate([
+ (0, utils_1.BindOption)("customCss")
+], AssetsPlugin.prototype, "customCss", void 0);
+exports.AssetsPlugin = AssetsPlugin = __decorate([
+ (0, components_1.Component)({ name: "assets" })
+], AssetsPlugin);
diff --git a/node_modules/typedoc/dist/lib/output/plugins/JavascriptIndexPlugin.d.ts b/node_modules/typedoc/dist/lib/output/plugins/JavascriptIndexPlugin.d.ts
new file mode 100644
index 0000000..fc37aeb
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/plugins/JavascriptIndexPlugin.d.ts
@@ -0,0 +1,20 @@
+import { RendererComponent } from "../components";
+/**
+ * A plugin that exports an index of the project to a javascript file.
+ *
+ * The resulting javascript file can be used to build a simple search function.
+ */
+export declare class JavascriptIndexPlugin extends RendererComponent {
+ searchComments: boolean;
+ /**
+ * Create a new JavascriptIndexPlugin instance.
+ */
+ initialize(): void;
+ /**
+ * Triggered after a document has been rendered, just before it is written to disc.
+ *
+ * @param event An event object describing the current render operation.
+ */
+ private onRendererBegin;
+ private getCommentSearchText;
+}
diff --git a/node_modules/typedoc/dist/lib/output/plugins/JavascriptIndexPlugin.js b/node_modules/typedoc/dist/lib/output/plugins/JavascriptIndexPlugin.js
new file mode 100644
index 0000000..0d72de5
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/plugins/JavascriptIndexPlugin.js
@@ -0,0 +1,146 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.JavascriptIndexPlugin = void 0;
+const Path = __importStar(require("path"));
+const lunr_1 = require("lunr");
+const models_1 = require("../../models");
+const components_1 = require("../components");
+const events_1 = require("../events");
+const utils_1 = require("../../utils");
+const DefaultTheme_1 = require("../themes/default/DefaultTheme");
+/**
+ * A plugin that exports an index of the project to a javascript file.
+ *
+ * The resulting javascript file can be used to build a simple search function.
+ */
+let JavascriptIndexPlugin = exports.JavascriptIndexPlugin = class JavascriptIndexPlugin extends components_1.RendererComponent {
+ /**
+ * Create a new JavascriptIndexPlugin instance.
+ */
+ initialize() {
+ this.listenTo(this.owner, events_1.RendererEvent.BEGIN, this.onRendererBegin);
+ }
+ /**
+ * Triggered after a document has been rendered, just before it is written to disc.
+ *
+ * @param event An event object describing the current render operation.
+ */
+ onRendererBegin(event) {
+ if (!(this.owner.theme instanceof DefaultTheme_1.DefaultTheme)) {
+ return;
+ }
+ if (event.isDefaultPrevented) {
+ return;
+ }
+ const rows = [];
+ const initialSearchResults = Object.values(event.project.reflections).filter((refl) => {
+ return (refl instanceof models_1.DeclarationReflection &&
+ refl.url &&
+ refl.name &&
+ !refl.flags.isExternal);
+ });
+ const indexEvent = new events_1.IndexEvent(events_1.IndexEvent.PREPARE_INDEX, initialSearchResults);
+ this.owner.trigger(indexEvent);
+ if (indexEvent.isDefaultPrevented) {
+ return;
+ }
+ const builder = new lunr_1.Builder();
+ builder.pipeline.add(lunr_1.trimmer);
+ builder.ref("id");
+ for (const [key, boost] of Object.entries(indexEvent.searchFieldWeights)) {
+ builder.field(key, { boost });
+ }
+ for (const reflection of indexEvent.searchResults) {
+ if (!reflection.url) {
+ continue;
+ }
+ const boost = reflection.relevanceBoost ?? 1;
+ if (boost <= 0) {
+ continue;
+ }
+ let parent = reflection.parent;
+ if (parent instanceof models_1.ProjectReflection) {
+ parent = undefined;
+ }
+ const row = {
+ kind: reflection.kind,
+ name: reflection.name,
+ url: reflection.url,
+ classes: this.owner.theme.getReflectionClasses(reflection),
+ };
+ if (parent) {
+ row.parent = parent.getFullName();
+ }
+ builder.add({
+ name: reflection.name,
+ comment: this.getCommentSearchText(reflection),
+ ...indexEvent.searchFields[rows.length],
+ id: rows.length,
+ }, { boost });
+ rows.push(row);
+ }
+ const index = builder.build();
+ const jsonFileName = Path.join(event.outputDirectory, "assets", "search.js");
+ const jsonData = JSON.stringify({
+ rows,
+ index,
+ });
+ (0, utils_1.writeFileSync)(jsonFileName, `window.searchData = JSON.parse(${JSON.stringify(jsonData)});`);
+ }
+ getCommentSearchText(reflection) {
+ if (!this.searchComments)
+ return;
+ const comments = [];
+ if (reflection.comment)
+ comments.push(reflection.comment);
+ reflection.signatures?.forEach((s) => s.comment && comments.push(s.comment));
+ reflection.getSignature?.comment &&
+ comments.push(reflection.getSignature.comment);
+ reflection.setSignature?.comment &&
+ comments.push(reflection.setSignature.comment);
+ if (!comments.length) {
+ return;
+ }
+ return comments
+ .flatMap((c) => {
+ return [...c.summary, ...c.blockTags.flatMap((t) => t.content)];
+ })
+ .map((part) => part.text)
+ .join("\n");
+ }
+};
+__decorate([
+ (0, utils_1.BindOption)("searchInComments")
+], JavascriptIndexPlugin.prototype, "searchComments", void 0);
+exports.JavascriptIndexPlugin = JavascriptIndexPlugin = __decorate([
+ (0, components_1.Component)({ name: "javascript-index" })
+], JavascriptIndexPlugin);
diff --git a/node_modules/typedoc/dist/lib/output/plugins/index.d.ts b/node_modules/typedoc/dist/lib/output/plugins/index.d.ts
new file mode 100644
index 0000000..5eefc03
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/plugins/index.d.ts
@@ -0,0 +1,3 @@
+export { AssetsPlugin } from "./AssetsPlugin";
+export { JavascriptIndexPlugin } from "./JavascriptIndexPlugin";
+export { MarkedPlugin } from "../themes/MarkedPlugin";
diff --git a/node_modules/typedoc/dist/lib/output/plugins/index.js b/node_modules/typedoc/dist/lib/output/plugins/index.js
new file mode 100644
index 0000000..1f4587a
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/plugins/index.js
@@ -0,0 +1,9 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.MarkedPlugin = exports.JavascriptIndexPlugin = exports.AssetsPlugin = void 0;
+var AssetsPlugin_1 = require("./AssetsPlugin");
+Object.defineProperty(exports, "AssetsPlugin", { enumerable: true, get: function () { return AssetsPlugin_1.AssetsPlugin; } });
+var JavascriptIndexPlugin_1 = require("./JavascriptIndexPlugin");
+Object.defineProperty(exports, "JavascriptIndexPlugin", { enumerable: true, get: function () { return JavascriptIndexPlugin_1.JavascriptIndexPlugin; } });
+var MarkedPlugin_1 = require("../themes/MarkedPlugin");
+Object.defineProperty(exports, "MarkedPlugin", { enumerable: true, get: function () { return MarkedPlugin_1.MarkedPlugin; } });
diff --git a/node_modules/typedoc/dist/lib/output/renderer.d.ts b/node_modules/typedoc/dist/lib/output/renderer.d.ts
new file mode 100644
index 0000000..bceff2e
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/renderer.d.ts
@@ -0,0 +1,191 @@
+import type { Application } from "../application";
+import type { Theme } from "./theme";
+import { RendererEvent } from "./events";
+import type { ProjectReflection } from "../models/reflections/project";
+import { RendererComponent } from "./components";
+import { ChildableComponent } from "../utils/component";
+import { EventHooks } from "../utils";
+import type { Theme as ShikiTheme } from "shiki";
+import type { JsxElement } from "../utils/jsx.elements";
+import type { DefaultThemeRenderContext } from "./themes/default/DefaultThemeRenderContext";
+/**
+ * Describes the hooks available to inject output in the default theme.
+ * If the available hooks don't let you put something where you'd like, please open an issue!
+ */
+export interface RendererHooks {
+ /**
+ * Applied immediately after the opening `<head>` tag.
+ */
+ "head.begin": [DefaultThemeRenderContext];
+ /**
+ * Applied immediately before the closing `</head>` tag.
+ */
+ "head.end": [DefaultThemeRenderContext];
+ /**
+ * Applied immediately after the opening `<body>` tag.
+ */
+ "body.begin": [DefaultThemeRenderContext];
+ /**
+ * Applied immediately before the closing `</body>` tag.
+ */
+ "body.end": [DefaultThemeRenderContext];
+ /**
+ * Applied immediately before the main template.
+ */
+ "content.begin": [DefaultThemeRenderContext];
+ /**
+ * Applied immediately after the main template.
+ */
+ "content.end": [DefaultThemeRenderContext];
+ /**
+ * Applied immediately before calling `context.sidebar`.
+ */
+ "sidebar.begin": [DefaultThemeRenderContext];
+ /**
+ * Applied immediately after calling `context.sidebar`.
+ */
+ "sidebar.end": [DefaultThemeRenderContext];
+ /**
+ * Applied immediately before calling `context.pageSidebar`.
+ */
+ "pageSidebar.begin": [DefaultThemeRenderContext];
+ /**
+ * Applied immediately after calling `context.pageSidebar`.
+ */
+ "pageSidebar.end": [DefaultThemeRenderContext];
+}
+/**
+ * The renderer processes a {@link ProjectReflection} using a {@link Theme} instance and writes
+ * the emitted html documents to a output directory. You can specify which theme should be used
+ * using the `--theme <name>` command line argument.
+ *
+ * {@link Renderer} is a subclass of {@link EventDispatcher} and triggers a series of events while
+ * a project is being processed. You can listen to these events to control the flow or manipulate
+ * the output.
+ *
+ * * {@link Renderer.EVENT_BEGIN}<br>
+ * Triggered before the renderer starts rendering a project. The listener receives
+ * an instance of {@link RendererEvent}. By calling {@link RendererEvent.preventDefault} the entire
+ * render process can be canceled.
+ *
+ * * {@link Renderer.EVENT_BEGIN_PAGE}<br>
+ * Triggered before a document will be rendered. The listener receives an instance of
+ * {@link PageEvent}. By calling {@link PageEvent.preventDefault} the generation of the
+ * document can be canceled.
+ *
+ * * {@link Renderer.EVENT_END_PAGE}<br>
+ * Triggered after a document has been rendered, just before it is written to disc. The
+ * listener receives an instance of {@link PageEvent}. When calling
+ * {@link PageEvent.preventDefault} the the document will not be saved to disc.
+ *
+ * * {@link Renderer.EVENT_END}<br>
+ * Triggered after the renderer has written all documents. The listener receives
+ * an instance of {@link RendererEvent}.
+ *
+ * * {@link Renderer.EVENT_PREPARE_INDEX}<br>
+ * Triggered when the JavascriptIndexPlugin is preparing the search index. Listeners receive
+ * an instance of {@link IndexEvent}.
+ */
+export declare class Renderer extends ChildableComponent<Application, RendererComponent> {
+ private themes;
+ /** @event */
+ static readonly EVENT_BEGIN_PAGE = "beginPage";
+ /** @event */
+ static readonly EVENT_END_PAGE = "endPage";
+ /** @event */
+ static readonly EVENT_BEGIN = "beginRender";
+ /** @event */
+ static readonly EVENT_END = "endRender";
+ /** @event */
+ static readonly EVENT_PREPARE_INDEX = "prepareIndex";
+ /**
+ * A list of async jobs which must be completed *before* rendering output.
+ * They will be called after {@link RendererEvent.BEGIN} has fired, but before any files have been written.
+ *
+ * This may be used by plugins to register work that must be done to prepare output files. For example: asynchronously
+ * transform markdown to HTML.
+ *
+ * Note: This array is cleared after calling the contained functions on each {@link Renderer.render} call.
+ */
+ preRenderAsyncJobs: Array<(output: RendererEvent) => Promise<void>>;
+ /**
+ * A list of async jobs which must be completed after rendering output files but before generation is considered successful.
+ * These functions will be called after all documents have been written to the filesystem.
+ *
+ * This may be used by plugins to register work that must be done to finalize output files. For example: asynchronously
+ * generating an image referenced in a render hook.
+ *
+ * Note: This array is cleared after calling the contained functions on each {@link Renderer.render} call.
+ */
+ postRenderAsyncJobs: Array<(output: RendererEvent) => Promise<void>>;
+ /**
+ * The theme that is used to render the documentation.
+ */
+ theme?: Theme;
+ /**
+ * Hooks which will be called when rendering pages.
+ * Note:
+ * - Hooks added during output will be discarded at the end of rendering.
+ * - Hooks added during a page render will be discarded at the end of that page's render.
+ *
+ * See {@link RendererHooks} for a description of each available hook, and when it will be called.
+ */
+ hooks: EventHooks<RendererHooks, JsxElement>;
+ /** @internal */
+ themeName: string;
+ /** @internal */
+ cleanOutputDir: boolean;
+ /** @internal */
+ cname: string;
+ /** @internal */
+ githubPages: boolean;
+ /** @internal */
+ cacheBust: boolean;
+ /** @internal */
+ lightTheme: ShikiTheme;
+ /** @internal */
+ darkTheme: ShikiTheme;
+ /** @internal */
+ pretty: boolean;
+ renderStartTime: number;
+ /**
+ * Define a new theme that can be used to render output.
+ * This API will likely be changing at some point, to allow more easily overriding parts of the theme without
+ * requiring additional boilerplate.
+ * @param name
+ * @param theme
+ */
+ defineTheme(name: string, theme: new (renderer: Renderer) => Theme): void;
+ /**
+ * Render the given project reflection to the specified output directory.
+ *
+ * @param project The project that should be rendered.
+ * @param outputDirectory The path of the directory the documentation should be rendered to.
+ */
+ render(project: ProjectReflection, outputDirectory: string): Promise<void>;
+ /**
+ * Render a single page.
+ *
+ * @param page An event describing the current page.
+ * @return TRUE if the page has been saved to disc, otherwise FALSE.
+ */
+ private renderDocument;
+ /**
+ * Ensure that a theme has been setup.
+ *
+ * If a the user has set a theme we try to find and load it. If no theme has
+ * been specified we load the default theme.
+ *
+ * @returns TRUE if a theme has been setup, otherwise FALSE.
+ */
+ private prepareTheme;
+ /**
+ * Prepare the output directory. If the directory does not exist, it will be
+ * created. If the directory exists, it will be emptied.
+ *
+ * @param directory The path to the directory that should be prepared.
+ * @returns TRUE if the directory could be prepared, otherwise FALSE.
+ */
+ private prepareOutputDirectory;
+}
+import "./plugins";
diff --git a/node_modules/typedoc/dist/lib/output/renderer.js b/node_modules/typedoc/dist/lib/output/renderer.js
new file mode 100644
index 0000000..f9af81c
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/renderer.js
@@ -0,0 +1,309 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Renderer = void 0;
+/**
+ * Holds all logic used render and output the final documentation.
+ *
+ * The {@link Renderer} class is the central controller within this namespace. When invoked it creates
+ * an instance of {@link Theme} which defines the layout of the documentation and fires a
+ * series of {@link RendererEvent} events. Instances of {@link BasePlugin} can listen to these events and
+ * alter the generated output.
+ */
+const fs = __importStar(require("fs"));
+const path = __importStar(require("path"));
+const events_1 = require("./events");
+const fs_1 = require("../utils/fs");
+const DefaultTheme_1 = require("./themes/default/DefaultTheme");
+const components_1 = require("./components");
+const component_1 = require("../utils/component");
+const utils_1 = require("../utils");
+const highlighter_1 = require("../utils/highlighter");
+const models_1 = require("../models");
+const icon_1 = require("./themes/default/partials/icon");
+const type_1 = require("./themes/default/partials/type");
+/**
+ * The renderer processes a {@link ProjectReflection} using a {@link Theme} instance and writes
+ * the emitted html documents to a output directory. You can specify which theme should be used
+ * using the `--theme <name>` command line argument.
+ *
+ * {@link Renderer} is a subclass of {@link EventDispatcher} and triggers a series of events while
+ * a project is being processed. You can listen to these events to control the flow or manipulate
+ * the output.
+ *
+ * * {@link Renderer.EVENT_BEGIN}<br>
+ * Triggered before the renderer starts rendering a project. The listener receives
+ * an instance of {@link RendererEvent}. By calling {@link RendererEvent.preventDefault} the entire
+ * render process can be canceled.
+ *
+ * * {@link Renderer.EVENT_BEGIN_PAGE}<br>
+ * Triggered before a document will be rendered. The listener receives an instance of
+ * {@link PageEvent}. By calling {@link PageEvent.preventDefault} the generation of the
+ * document can be canceled.
+ *
+ * * {@link Renderer.EVENT_END_PAGE}<br>
+ * Triggered after a document has been rendered, just before it is written to disc. The
+ * listener receives an instance of {@link PageEvent}. When calling
+ * {@link PageEvent.preventDefault} the the document will not be saved to disc.
+ *
+ * * {@link Renderer.EVENT_END}<br>
+ * Triggered after the renderer has written all documents. The listener receives
+ * an instance of {@link RendererEvent}.
+ *
+ * * {@link Renderer.EVENT_PREPARE_INDEX}<br>
+ * Triggered when the JavascriptIndexPlugin is preparing the search index. Listeners receive
+ * an instance of {@link IndexEvent}.
+ */
+let Renderer = exports.Renderer = class Renderer extends component_1.ChildableComponent {
+ constructor() {
+ super(...arguments);
+ this.themes = new Map([
+ ["default", DefaultTheme_1.DefaultTheme],
+ ]);
+ /**
+ * A list of async jobs which must be completed *before* rendering output.
+ * They will be called after {@link RendererEvent.BEGIN} has fired, but before any files have been written.
+ *
+ * This may be used by plugins to register work that must be done to prepare output files. For example: asynchronously
+ * transform markdown to HTML.
+ *
+ * Note: This array is cleared after calling the contained functions on each {@link Renderer.render} call.
+ */
+ this.preRenderAsyncJobs = [];
+ /**
+ * A list of async jobs which must be completed after rendering output files but before generation is considered successful.
+ * These functions will be called after all documents have been written to the filesystem.
+ *
+ * This may be used by plugins to register work that must be done to finalize output files. For example: asynchronously
+ * generating an image referenced in a render hook.
+ *
+ * Note: This array is cleared after calling the contained functions on each {@link Renderer.render} call.
+ */
+ this.postRenderAsyncJobs = [];
+ /**
+ * Hooks which will be called when rendering pages.
+ * Note:
+ * - Hooks added during output will be discarded at the end of rendering.
+ * - Hooks added during a page render will be discarded at the end of that page's render.
+ *
+ * See {@link RendererHooks} for a description of each available hook, and when it will be called.
+ */
+ this.hooks = new utils_1.EventHooks();
+ this.renderStartTime = -1;
+ }
+ /**
+ * Define a new theme that can be used to render output.
+ * This API will likely be changing at some point, to allow more easily overriding parts of the theme without
+ * requiring additional boilerplate.
+ * @param name
+ * @param theme
+ */
+ defineTheme(name, theme) {
+ if (this.themes.has(name)) {
+ throw new Error(`The theme "${name}" has already been defined.`);
+ }
+ this.themes.set(name, theme);
+ }
+ /**
+ * Render the given project reflection to the specified output directory.
+ *
+ * @param project The project that should be rendered.
+ * @param outputDirectory The path of the directory the documentation should be rendered to.
+ */
+ async render(project, outputDirectory) {
+ (0, jsx_1.setRenderSettings)({ pretty: this.pretty });
+ const momento = this.hooks.saveMomento();
+ this.renderStartTime = Date.now();
+ await (0, highlighter_1.loadHighlighter)(this.lightTheme, this.darkTheme);
+ this.application.logger.verbose(`Renderer: Loading highlighter took ${Date.now() - this.renderStartTime}ms`);
+ if (!this.prepareTheme() ||
+ !(await this.prepareOutputDirectory(outputDirectory))) {
+ return;
+ }
+ const output = new events_1.RendererEvent(events_1.RendererEvent.BEGIN, outputDirectory, project);
+ output.urls = this.theme.getUrls(project);
+ this.trigger(output);
+ await Promise.all(this.preRenderAsyncJobs.map((job) => job(output)));
+ this.preRenderAsyncJobs = [];
+ if (!output.isDefaultPrevented) {
+ this.application.logger.verbose(`There are ${output.urls.length} pages to write.`);
+ output.urls.forEach((mapping) => {
+ (0, icon_1.clearSeenIconCache)();
+ this.renderDocument(...output.createPageEvent(mapping));
+ (0, type_1.validateStateIsClean)(mapping.url);
+ });
+ await Promise.all(this.postRenderAsyncJobs.map((job) => job(output)));
+ this.postRenderAsyncJobs = [];
+ this.trigger(events_1.RendererEvent.END, output);
+ }
+ this.theme = void 0;
+ this.hooks.restoreMomento(momento);
+ }
+ /**
+ * Render a single page.
+ *
+ * @param page An event describing the current page.
+ * @return TRUE if the page has been saved to disc, otherwise FALSE.
+ */
+ renderDocument(template, page) {
+ const momento = this.hooks.saveMomento();
+ this.trigger(events_1.PageEvent.BEGIN, page);
+ if (page.isDefaultPrevented) {
+ this.hooks.restoreMomento(momento);
+ return false;
+ }
+ if (page.model instanceof models_1.Reflection) {
+ page.contents = this.theme.render(page, template);
+ }
+ else {
+ throw new Error("Should be unreachable");
+ }
+ this.trigger(events_1.PageEvent.END, page);
+ this.hooks.restoreMomento(momento);
+ if (page.isDefaultPrevented) {
+ return false;
+ }
+ try {
+ (0, fs_1.writeFileSync)(page.filename, page.contents);
+ }
+ catch (error) {
+ this.application.logger.error(`Could not write ${page.filename}`);
+ }
+ }
+ /**
+ * Ensure that a theme has been setup.
+ *
+ * If a the user has set a theme we try to find and load it. If no theme has
+ * been specified we load the default theme.
+ *
+ * @returns TRUE if a theme has been setup, otherwise FALSE.
+ */
+ prepareTheme() {
+ if (!this.theme) {
+ const ctor = this.themes.get(this.themeName);
+ if (!ctor) {
+ this.application.logger.error(`The theme '${this.themeName}' is not defined. The available themes are: ${[
+ ...this.themes.keys(),
+ ].join(", ")}`);
+ return false;
+ }
+ else {
+ this.theme = new ctor(this);
+ }
+ }
+ return true;
+ }
+ /**
+ * Prepare the output directory. If the directory does not exist, it will be
+ * created. If the directory exists, it will be emptied.
+ *
+ * @param directory The path to the directory that should be prepared.
+ * @returns TRUE if the directory could be prepared, otherwise FALSE.
+ */
+ async prepareOutputDirectory(directory) {
+ if (this.cleanOutputDir) {
+ try {
+ await fs.promises.rm(directory, {
+ recursive: true,
+ force: true,
+ });
+ }
+ catch (error) {
+ this.application.logger.warn("Could not empty the output directory.");
+ return false;
+ }
+ }
+ try {
+ fs.mkdirSync(directory, { recursive: true });
+ }
+ catch (error) {
+ this.application.logger.error(`Could not create output directory ${directory}.`);
+ return false;
+ }
+ if (this.githubPages) {
+ try {
+ const text = "TypeDoc added this file to prevent GitHub Pages from " +
+ "using Jekyll. You can turn off this behavior by setting " +
+ "the `githubPages` option to false.";
+ fs.writeFileSync(path.join(directory, ".nojekyll"), text);
+ }
+ catch (error) {
+ this.application.logger.warn("Could not create .nojekyll file.");
+ return false;
+ }
+ }
+ if (this.cname) {
+ fs.writeFileSync(path.join(directory, "CNAME"), this.cname);
+ }
+ return true;
+ }
+};
+/** @event */
+Renderer.EVENT_BEGIN_PAGE = events_1.PageEvent.BEGIN;
+/** @event */
+Renderer.EVENT_END_PAGE = events_1.PageEvent.END;
+/** @event */
+Renderer.EVENT_BEGIN = events_1.RendererEvent.BEGIN;
+/** @event */
+Renderer.EVENT_END = events_1.RendererEvent.END;
+/** @event */
+Renderer.EVENT_PREPARE_INDEX = events_1.IndexEvent.PREPARE_INDEX;
+__decorate([
+ (0, utils_1.BindOption)("theme")
+], Renderer.prototype, "themeName", void 0);
+__decorate([
+ (0, utils_1.BindOption)("cleanOutputDir")
+], Renderer.prototype, "cleanOutputDir", void 0);
+__decorate([
+ (0, utils_1.BindOption)("cname")
+], Renderer.prototype, "cname", void 0);
+__decorate([
+ (0, utils_1.BindOption)("githubPages")
+], Renderer.prototype, "githubPages", void 0);
+__decorate([
+ (0, utils_1.BindOption)("cacheBust")
+], Renderer.prototype, "cacheBust", void 0);
+__decorate([
+ (0, utils_1.BindOption)("lightHighlightTheme")
+], Renderer.prototype, "lightTheme", void 0);
+__decorate([
+ (0, utils_1.BindOption)("darkHighlightTheme")
+], Renderer.prototype, "darkTheme", void 0);
+__decorate([
+ (0, utils_1.BindOption)("pretty")
+], Renderer.prototype, "pretty", void 0);
+exports.Renderer = Renderer = __decorate([
+ (0, component_1.Component)({ name: "renderer", internal: true, childClass: components_1.RendererComponent })
+], Renderer);
+// HACK: THIS HAS TO STAY DOWN HERE
+// if you try to move it up to the top of the file, then you'll run into stuff being used before it has been defined.
+require("./plugins");
+const jsx_1 = require("../utils/jsx");
diff --git a/node_modules/typedoc/dist/lib/output/theme.d.ts b/node_modules/typedoc/dist/lib/output/theme.d.ts
new file mode 100644
index 0000000..2b43650
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/theme.d.ts
@@ -0,0 +1,43 @@
+import type { Renderer } from "./renderer";
+import type { ProjectReflection } from "../models/reflections/project";
+import type { RenderTemplate, UrlMapping } from "./models/UrlMapping";
+import { RendererComponent } from "./components";
+import type { PageEvent } from "./events";
+import type { Reflection } from "../models";
+/**
+ * Base class of all themes.
+ *
+ * The theme class controls which files will be created through the {@link Theme.getUrls}
+ * function. It returns an array of {@link UrlMapping} instances defining the target files, models
+ * and templates to use. Additionally themes can subscribe to the events emitted by
+ * {@link Renderer} to control and manipulate the output process.
+ */
+export declare abstract class Theme extends RendererComponent {
+ /**
+ * Create a new BaseTheme instance.
+ *
+ * @param renderer The renderer this theme is attached to.
+ */
+ constructor(renderer: Renderer);
+ /**
+ * Map the models of the given project to the desired output files.
+ * It is assumed that with the project structure:
+ * ```text
+ * A
+ * |- B
+ * |- C
+ * ```
+ * If `B` has a UrlMapping, then `A` also has a UrlMapping, and `C` may or
+ * may not have a UrlMapping. If `B` does not have a UrlMapping, then `A`
+ * may or may not have a UrlMapping, but `C` must not have a UrlMapping.
+ *
+ * @param project The project whose urls should be generated.
+ * @returns A list of {@link UrlMapping} instances defining which models
+ * should be rendered to which files.
+ */
+ abstract getUrls(project: ProjectReflection): UrlMapping[];
+ /**
+ * Renders the provided page to a string, which will be written to disk by the {@link Renderer}
+ */
+ abstract render(page: PageEvent<Reflection>, template: RenderTemplate<PageEvent<Reflection>>): string;
+}
diff --git a/node_modules/typedoc/dist/lib/output/theme.js b/node_modules/typedoc/dist/lib/output/theme.js
new file mode 100644
index 0000000..09078f6
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/theme.js
@@ -0,0 +1,32 @@
+"use strict";
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Theme = void 0;
+const components_1 = require("./components");
+const component_1 = require("../utils/component");
+/**
+ * Base class of all themes.
+ *
+ * The theme class controls which files will be created through the {@link Theme.getUrls}
+ * function. It returns an array of {@link UrlMapping} instances defining the target files, models
+ * and templates to use. Additionally themes can subscribe to the events emitted by
+ * {@link Renderer} to control and manipulate the output process.
+ */
+let Theme = exports.Theme = class Theme extends components_1.RendererComponent {
+ /**
+ * Create a new BaseTheme instance.
+ *
+ * @param renderer The renderer this theme is attached to.
+ */
+ constructor(renderer) {
+ super(renderer);
+ }
+};
+exports.Theme = Theme = __decorate([
+ (0, component_1.Component)({ name: "theme", internal: true })
+], Theme);
diff --git a/node_modules/typedoc/dist/lib/output/themes/MarkedPlugin.d.ts b/node_modules/typedoc/dist/lib/output/themes/MarkedPlugin.d.ts
new file mode 100644
index 0000000..1c9d649
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/MarkedPlugin.d.ts
@@ -0,0 +1,68 @@
+import { ContextAwareRendererComponent } from "../components";
+import { RendererEvent, MarkdownEvent, PageEvent } from "../events";
+import type { Theme } from "shiki";
+/**
+ * Implements markdown and relativeURL helpers for templates.
+ * @internal
+ */
+export declare class MarkedPlugin extends ContextAwareRendererComponent {
+ includeSource: string;
+ mediaSource: string;
+ lightTheme: Theme;
+ darkTheme: Theme;
+ /**
+ * The path referenced files are located in.
+ */
+ private includes?;
+ /**
+ * Path to the output media directory.
+ */
+ private mediaDirectory?;
+ /**
+ * The pattern used to find references in markdown.
+ */
+ private includePattern;
+ /**
+ * The pattern used to find media links.
+ */
+ private mediaPattern;
+ private sources?;
+ private outputFileName?;
+ /**
+ * Create a new MarkedPlugin instance.
+ */
+ initialize(): void;
+ /**
+ * Highlight the syntax of the given text using HighlightJS.
+ *
+ * @param text The text that should be highlighted.
+ * @param lang The language that should be used to highlight the string.
+ * @return A html string with syntax highlighting.
+ */
+ getHighlighted(text: string, lang?: string): string;
+ /**
+ * Parse the given markdown string and return the resulting html.
+ *
+ * @param text The markdown string that should be parsed.
+ * @returns The resulting html string.
+ */
+ parseMarkdown(text: string, page: PageEvent<any>): string;
+ /**
+ * Triggered before the renderer starts rendering a project.
+ *
+ * @param event An event object describing the current render operation.
+ */
+ protected onBeginRenderer(event: RendererEvent): void;
+ /**
+ * Creates an object with options that are passed to the markdown parser.
+ *
+ * @returns The options object for the markdown parser.
+ */
+ private createMarkedOptions;
+ /**
+ * Triggered when {@link MarkedPlugin} parses a markdown string.
+ *
+ * @param event
+ */
+ onParseMarkdown(event: MarkdownEvent): void;
+}
diff --git a/node_modules/typedoc/dist/lib/output/themes/MarkedPlugin.js b/node_modules/typedoc/dist/lib/output/themes/MarkedPlugin.js
new file mode 100644
index 0000000..417e369
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/MarkedPlugin.js
@@ -0,0 +1,223 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+};
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.MarkedPlugin = void 0;
+const fs = __importStar(require("fs"));
+const Path = __importStar(require("path"));
+const Marked = __importStar(require("marked"));
+const components_1 = require("../components");
+const events_1 = require("../events");
+const utils_1 = require("../../utils");
+const highlighter_1 = require("../../utils/highlighter");
+const html_1 = require("../../utils/html");
+/**
+ * Implements markdown and relativeURL helpers for templates.
+ * @internal
+ */
+let MarkedPlugin = exports.MarkedPlugin = class MarkedPlugin extends components_1.ContextAwareRendererComponent {
+ constructor() {
+ super(...arguments);
+ /**
+ * The pattern used to find references in markdown.
+ */
+ this.includePattern = /\[\[include:([^\]]+?)\]\]/g;
+ /**
+ * The pattern used to find media links.
+ */
+ this.mediaPattern = /media:\/\/([^ ")\]}]+)/g;
+ }
+ /**
+ * Create a new MarkedPlugin instance.
+ */
+ initialize() {
+ super.initialize();
+ this.listenTo(this.owner, events_1.MarkdownEvent.PARSE, this.onParseMarkdown);
+ }
+ /**
+ * Highlight the syntax of the given text using HighlightJS.
+ *
+ * @param text The text that should be highlighted.
+ * @param lang The language that should be used to highlight the string.
+ * @return A html string with syntax highlighting.
+ */
+ getHighlighted(text, lang) {
+ lang = lang || "typescript";
+ lang = lang.toLowerCase();
+ if (!(0, highlighter_1.isSupportedLanguage)(lang)) {
+ // Extra newline because of the progress bar
+ this.application.logger.warn(`
+Unsupported highlight language "${lang}" will not be highlighted. Run typedoc --help for a list of supported languages.
+target code block :
+\t${text.split("\n").join("\n\t")}
+source files :${this.sources?.map((source) => `\n\t${source.fileName}`).join()}
+output file :
+\t${this.outputFileName}`);
+ return text;
+ }
+ return (0, highlighter_1.highlight)(text, lang);
+ }
+ /**
+ * Parse the given markdown string and return the resulting html.
+ *
+ * @param text The markdown string that should be parsed.
+ * @returns The resulting html string.
+ */
+ parseMarkdown(text, page) {
+ if (this.includes) {
+ text = text.replace(this.includePattern, (_match, path) => {
+ path = Path.join(this.includes, path.trim());
+ if ((0, utils_1.isFile)(path)) {
+ const contents = (0, utils_1.readFile)(path);
+ const event = new events_1.MarkdownEvent(events_1.MarkdownEvent.INCLUDE, page, contents, contents);
+ this.owner.trigger(event);
+ return event.parsedText;
+ }
+ else {
+ this.application.logger.warn("Could not find file to include: " + path);
+ return "";
+ }
+ });
+ }
+ if (this.mediaDirectory) {
+ text = text.replace(this.mediaPattern, (match, path) => {
+ const fileName = Path.join(this.mediaDirectory, path);
+ if ((0, utils_1.isFile)(fileName)) {
+ return this.getRelativeUrl("media") + "/" + path;
+ }
+ else {
+ this.application.logger.warn("Could not find media file: " + fileName);
+ return match;
+ }
+ });
+ }
+ const event = new events_1.MarkdownEvent(events_1.MarkdownEvent.PARSE, page, text, text);
+ this.owner.trigger(event);
+ return event.parsedText;
+ }
+ /**
+ * Triggered before the renderer starts rendering a project.
+ *
+ * @param event An event object describing the current render operation.
+ */
+ onBeginRenderer(event) {
+ super.onBeginRenderer(event);
+ Marked.marked.setOptions(this.createMarkedOptions());
+ delete this.includes;
+ if (this.includeSource) {
+ if (fs.existsSync(this.includeSource) &&
+ fs.statSync(this.includeSource).isDirectory()) {
+ this.includes = this.includeSource;
+ }
+ else {
+ this.application.logger.warn("Could not find provided includes directory: " +
+ this.includeSource);
+ }
+ }
+ if (this.mediaSource) {
+ if (fs.existsSync(this.mediaSource) &&
+ fs.statSync(this.mediaSource).isDirectory()) {
+ this.mediaDirectory = Path.join(event.outputDirectory, "media");
+ (0, utils_1.copySync)(this.mediaSource, this.mediaDirectory);
+ }
+ else {
+ this.mediaDirectory = undefined;
+ this.application.logger.warn("Could not find provided media directory: " +
+ this.mediaSource);
+ }
+ }
+ }
+ /**
+ * Creates an object with options that are passed to the markdown parser.
+ *
+ * @returns The options object for the markdown parser.
+ */
+ createMarkedOptions() {
+ const markedOptions = (this.application.options.getValue("markedOptions") ?? {});
+ // Set some default values if they are not specified via the TypeDoc option
+ markedOptions.highlight ?? (markedOptions.highlight = (text, lang) => this.getHighlighted(text, lang));
+ if (!markedOptions.renderer) {
+ markedOptions.renderer = new Marked.Renderer();
+ markedOptions.renderer.heading = (text, level, _, slugger) => {
+ const slug = slugger.slug(text);
+ // Prefix the slug with an extra `md:` to prevent conflicts with TypeDoc's anchors.
+ this.page.pageHeadings.push({
+ link: `#md:${slug}`,
+ text: (0, html_1.getTextContent)(text),
+ level,
+ });
+ return `<a id="md:${slug}" class="tsd-anchor"></a><h${level}><a href="#md:${slug}">${text}</a></h${level}>`;
+ };
+ markedOptions.renderer.code = renderCode;
+ }
+ markedOptions.mangle ?? (markedOptions.mangle = false); // See https://github.com/TypeStrong/typedoc/issues/1395
+ return markedOptions;
+ }
+ /**
+ * Triggered when {@link MarkedPlugin} parses a markdown string.
+ *
+ * @param event
+ */
+ onParseMarkdown(event) {
+ event.parsedText = Marked.marked(event.parsedText);
+ }
+};
+__decorate([
+ (0, utils_1.BindOption)("includes")
+], MarkedPlugin.prototype, "includeSource", void 0);
+__decorate([
+ (0, utils_1.BindOption)("media")
+], MarkedPlugin.prototype, "mediaSource", void 0);
+__decorate([
+ (0, utils_1.BindOption)("lightHighlightTheme")
+], MarkedPlugin.prototype, "lightTheme", void 0);
+__decorate([
+ (0, utils_1.BindOption)("darkHighlightTheme")
+], MarkedPlugin.prototype, "darkTheme", void 0);
+exports.MarkedPlugin = MarkedPlugin = __decorate([
+ (0, components_1.Component)({ name: "marked" })
+], MarkedPlugin);
+// Basically a copy/paste of Marked's code, with the addition of the button
+// https://github.com/markedjs/marked/blob/v4.3.0/src/Renderer.js#L15-L39
+function renderCode(code, infostring, escaped) {
+ const lang = (infostring || "").match(/\S*/)[0];
+ if (this.options.highlight) {
+ const out = this.options.highlight(code, lang);
+ if (out != null && out !== code) {
+ escaped = true;
+ code = out;
+ }
+ }
+ code = code.replace(/\n$/, "") + "\n";
+ if (!lang) {
+ return `<pre><code>${escaped ? code : (0, html_1.escapeHtml)(code)}</code><button>Copy</button></pre>\n`;
+ }
+ return `<pre><code class="${this.options.langPrefix + (0, html_1.escapeHtml)(lang)}">${escaped ? code : (0, html_1.escapeHtml)(code)}</code><button>Copy</button></pre>\n`;
+}
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/DefaultTheme.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/DefaultTheme.d.ts
new file mode 100644
index 0000000..af1e0f9
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/DefaultTheme.d.ts
@@ -0,0 +1,73 @@
+import { Theme } from "../../theme";
+import type { Renderer } from "../../renderer";
+import { Reflection, ProjectReflection, ContainerReflection, DeclarationReflection } from "../../../models";
+import { RenderTemplate, UrlMapping } from "../../models/UrlMapping";
+import type { PageEvent } from "../../events";
+import type { MarkedPlugin } from "../../plugins";
+import { DefaultThemeRenderContext } from "./DefaultThemeRenderContext";
+import { JSX } from "../../../utils";
+/**
+ * Default theme implementation of TypeDoc. If a theme does not provide a custom
+ * {@link Theme} implementation, this theme class will be used.
+ */
+export declare class DefaultTheme extends Theme {
+ /** @internal */
+ markedPlugin: MarkedPlugin;
+ getRenderContext(pageEvent: PageEvent<Reflection>): DefaultThemeRenderContext;
+ reflectionTemplate: (pageEvent: PageEvent<ContainerReflection>) => JSX.Element;
+ indexTemplate: (pageEvent: PageEvent<ProjectReflection>) => JSX.Element;
+ defaultLayoutTemplate: (pageEvent: PageEvent<Reflection>, template: RenderTemplate<PageEvent<Reflection>>) => JSX.Element;
+ getReflectionClasses(reflection: DeclarationReflection): string;
+ /**
+ * Mappings of reflections kinds to templates used by this theme.
+ */
+ private mappings;
+ static URL_PREFIX: RegExp;
+ /**
+ * Create a new DefaultTheme instance.
+ *
+ * @param renderer The renderer this theme is attached to.
+ * @param basePath The base path of this theme.
+ */
+ constructor(renderer: Renderer);
+ /**
+ * Map the models of the given project to the desired output files.
+ *
+ * @param project The project whose urls should be generated.
+ * @returns A list of {@link UrlMapping} instances defining which models
+ * should be rendered to which files.
+ */
+ getUrls(project: ProjectReflection): UrlMapping[];
+ /**
+ * Return a url for the given reflection.
+ *
+ * @param reflection The reflection the url should be generated for.
+ * @param relative The parent reflection the url generation should stop on.
+ * @param separator The separator used to generate the url.
+ * @returns The generated url.
+ */
+ static getUrl(reflection: Reflection, relative?: Reflection, separator?: string): string;
+ /**
+ * Return the template mapping for the given reflection.
+ *
+ * @param reflection The reflection whose mapping should be resolved.
+ * @returns The found mapping or undefined if no mapping could be found.
+ */
+ private getMapping;
+ /**
+ * Build the url for the the given reflection and all of its children.
+ *
+ * @param reflection The reflection the url should be created for.
+ * @param urls The array the url should be appended to.
+ * @returns The altered urls array.
+ */
+ buildUrls(reflection: DeclarationReflection, urls: UrlMapping[]): UrlMapping[];
+ render(page: PageEvent<Reflection>, template: RenderTemplate<PageEvent<Reflection>>): string;
+ /**
+ * Generate an anchor url for the given reflection and all of its children.
+ *
+ * @param reflection The reflection an anchor url should be created for.
+ * @param container The nearest reflection having an own document.
+ */
+ static applyAnchorUrl(reflection: Reflection, container: Reflection): void;
+}
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/DefaultTheme.js b/node_modules/typedoc/dist/lib/output/themes/default/DefaultTheme.js
new file mode 100644
index 0000000..b5748b0
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/DefaultTheme.js
@@ -0,0 +1,236 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.DefaultTheme = void 0;
+const theme_1 = require("../../theme");
+const models_1 = require("../../../models");
+const UrlMapping_1 = require("../../models/UrlMapping");
+const DefaultThemeRenderContext_1 = require("./DefaultThemeRenderContext");
+const utils_1 = require("../../../utils");
+const lib_1 = require("../lib");
+/**
+ * Default theme implementation of TypeDoc. If a theme does not provide a custom
+ * {@link Theme} implementation, this theme class will be used.
+ */
+class DefaultTheme extends theme_1.Theme {
+ getRenderContext(pageEvent) {
+ return new DefaultThemeRenderContext_1.DefaultThemeRenderContext(this, pageEvent, this.application.options);
+ }
+ getReflectionClasses(reflection) {
+ const filters = this.application.options.getValue("visibilityFilters");
+ return getReflectionClasses(reflection, filters);
+ }
+ /**
+ * Create a new DefaultTheme instance.
+ *
+ * @param renderer The renderer this theme is attached to.
+ * @param basePath The base path of this theme.
+ */
+ constructor(renderer) {
+ super(renderer);
+ this.reflectionTemplate = (pageEvent) => {
+ return this.getRenderContext(pageEvent).reflectionTemplate(pageEvent);
+ };
+ this.indexTemplate = (pageEvent) => {
+ return this.getRenderContext(pageEvent).indexTemplate(pageEvent);
+ };
+ this.defaultLayoutTemplate = (pageEvent, template) => {
+ return this.getRenderContext(pageEvent).defaultLayout(template, pageEvent);
+ };
+ /**
+ * Mappings of reflections kinds to templates used by this theme.
+ */
+ this.mappings = [
+ {
+ kind: [models_1.ReflectionKind.Class],
+ directory: "classes",
+ template: this.reflectionTemplate,
+ },
+ {
+ kind: [models_1.ReflectionKind.Interface],
+ directory: "interfaces",
+ template: this.reflectionTemplate,
+ },
+ {
+ kind: [models_1.ReflectionKind.Enum],
+ directory: "enums",
+ template: this.reflectionTemplate,
+ },
+ {
+ kind: [models_1.ReflectionKind.Namespace, models_1.ReflectionKind.Module],
+ directory: "modules",
+ template: this.reflectionTemplate,
+ },
+ {
+ kind: [models_1.ReflectionKind.TypeAlias],
+ directory: "types",
+ template: this.reflectionTemplate,
+ },
+ {
+ kind: [models_1.ReflectionKind.Function],
+ directory: "functions",
+ template: this.reflectionTemplate,
+ },
+ {
+ kind: [models_1.ReflectionKind.Variable],
+ directory: "variables",
+ template: this.reflectionTemplate,
+ },
+ ];
+ this.markedPlugin = renderer.getComponent("marked");
+ }
+ /**
+ * Map the models of the given project to the desired output files.
+ *
+ * @param project The project whose urls should be generated.
+ * @returns A list of {@link UrlMapping} instances defining which models
+ * should be rendered to which files.
+ */
+ getUrls(project) {
+ const urls = [];
+ if (false == hasReadme(this.application.options.getValue("readme"))) {
+ project.url = "index.html";
+ urls.push(new UrlMapping_1.UrlMapping("index.html", project, this.reflectionTemplate));
+ }
+ else if (project.children?.every((child) => child.kindOf(models_1.ReflectionKind.Module))) {
+ // If there are no non-module children, then there's no point in having a modules page since there
+ // will be nothing on it besides the navigation, so redirect the module page to the readme page
+ project.url = "index.html";
+ urls.push(new UrlMapping_1.UrlMapping("index.html", project, this.indexTemplate));
+ }
+ else {
+ project.url = "modules.html";
+ urls.push(new UrlMapping_1.UrlMapping("modules.html", project, this.reflectionTemplate));
+ urls.push(new UrlMapping_1.UrlMapping("index.html", project, this.indexTemplate));
+ }
+ project.children?.forEach((child) => {
+ if (child instanceof models_1.DeclarationReflection) {
+ this.buildUrls(child, urls);
+ }
+ });
+ return urls;
+ }
+ /**
+ * Return a url for the given reflection.
+ *
+ * @param reflection The reflection the url should be generated for.
+ * @param relative The parent reflection the url generation should stop on.
+ * @param separator The separator used to generate the url.
+ * @returns The generated url.
+ */
+ static getUrl(reflection, relative, separator = ".") {
+ let url = reflection.getAlias();
+ if (reflection.parent && reflection.parent !== relative && !(reflection.parent instanceof models_1.ProjectReflection)) {
+ url = DefaultTheme.getUrl(reflection.parent, relative, separator) + separator + url;
+ }
+ return url;
+ }
+ /**
+ * Return the template mapping for the given reflection.
+ *
+ * @param reflection The reflection whose mapping should be resolved.
+ * @returns The found mapping or undefined if no mapping could be found.
+ */
+ getMapping(reflection) {
+ return this.mappings.find((mapping) => reflection.kindOf(mapping.kind));
+ }
+ /**
+ * Build the url for the the given reflection and all of its children.
+ *
+ * @param reflection The reflection the url should be created for.
+ * @param urls The array the url should be appended to.
+ * @returns The altered urls array.
+ */
+ buildUrls(reflection, urls) {
+ const mapping = this.getMapping(reflection);
+ if (mapping) {
+ if (!reflection.url || !DefaultTheme.URL_PREFIX.test(reflection.url)) {
+ const url = [mapping.directory, DefaultTheme.getUrl(reflection) + ".html"].join("/");
+ urls.push(new UrlMapping_1.UrlMapping(url, reflection, mapping.template));
+ reflection.url = url;
+ reflection.hasOwnDocument = true;
+ }
+ reflection.traverse((child) => {
+ if (child instanceof models_1.DeclarationReflection) {
+ this.buildUrls(child, urls);
+ }
+ else {
+ DefaultTheme.applyAnchorUrl(child, reflection);
+ }
+ return true;
+ });
+ }
+ else if (reflection.parent) {
+ DefaultTheme.applyAnchorUrl(reflection, reflection.parent);
+ }
+ return urls;
+ }
+ render(page, template) {
+ const templateOutput = this.defaultLayoutTemplate(page, template);
+ return "<!DOCTYPE html>" + utils_1.JSX.renderElement(templateOutput);
+ }
+ /**
+ * Generate an anchor url for the given reflection and all of its children.
+ *
+ * @param reflection The reflection an anchor url should be created for.
+ * @param container The nearest reflection having an own document.
+ */
+ static applyAnchorUrl(reflection, container) {
+ if (!(reflection instanceof models_1.DeclarationReflection) && !(reflection instanceof models_1.SignatureReflection)) {
+ return;
+ }
+ if (!reflection.url || !DefaultTheme.URL_PREFIX.test(reflection.url)) {
+ const anchor = DefaultTheme.getUrl(reflection, container, ".");
+ reflection.url = container.url + "#" + anchor;
+ reflection.anchor = anchor;
+ reflection.hasOwnDocument = false;
+ }
+ reflection.traverse((child) => {
+ DefaultTheme.applyAnchorUrl(child, container);
+ return true;
+ });
+ }
+}
+exports.DefaultTheme = DefaultTheme;
+DefaultTheme.URL_PREFIX = /^(http|ftp)s?:\/\//;
+function hasReadme(readme) {
+ return !readme.endsWith("none");
+}
+function getReflectionClasses(reflection, filters) {
+ const classes = [];
+ // Filter classes should match up with the settings function in
+ // partials/navigation.tsx.
+ for (const key of Object.keys(filters)) {
+ if (key === "inherited") {
+ if (reflection.inheritedFrom) {
+ classes.push("tsd-is-inherited");
+ }
+ }
+ else if (key === "protected") {
+ if (reflection.flags.isProtected) {
+ classes.push("tsd-is-protected");
+ }
+ }
+ else if (key === "private") {
+ if (reflection.flags.isPrivate) {
+ classes.push("tsd-is-private");
+ }
+ }
+ else if (key === "external") {
+ if (reflection.flags.isExternal) {
+ classes.push("tsd-is-external");
+ }
+ }
+ else if (key.startsWith("@")) {
+ if (key === "@deprecated") {
+ if (reflection.isDeprecated()) {
+ classes.push((0, lib_1.toStyleClass)(`tsd-is-${key.substring(1)}`));
+ }
+ }
+ else if (reflection.comment?.hasModifier(key) ||
+ reflection.comment?.getTag(key)) {
+ classes.push((0, lib_1.toStyleClass)(`tsd-is-${key.substring(1)}`));
+ }
+ }
+ }
+ return classes.join(" ");
+}
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/DefaultThemeRenderContext.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/DefaultThemeRenderContext.d.ts
new file mode 100644
index 0000000..339d5f1
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/DefaultThemeRenderContext.d.ts
@@ -0,0 +1,62 @@
+import type { PageEvent, RendererHooks } from "../..";
+import { CommentDisplayPart, DeclarationReflection, ReferenceType, Reflection } from "../../../models";
+import type { NeverIfInternal, Options } from "../../../utils";
+import type { DefaultTheme } from "./DefaultTheme";
+export declare class DefaultThemeRenderContext {
+ private theme;
+ page: PageEvent<Reflection>;
+ options: Options;
+ constructor(theme: DefaultTheme, page: PageEvent<Reflection>, options: Options);
+ icons: Record<"search" | "anchor" | import("../../../models").ReflectionKind | "checkbox" | "chevronDown" | "menu" | "chevronSmall", () => import("../../../utils/jsx.elements").JsxElement>;
+ hook: (name: keyof RendererHooks) => import("../../../utils/jsx.elements").JsxElement[];
+ /** Avoid this in favor of urlTo if possible */
+ relativeURL: (url: string, cacheBust?: boolean) => string;
+ urlTo: (reflection: Reflection) => string;
+ markdown: (md: readonly CommentDisplayPart[] | NeverIfInternal<string | undefined>) => string;
+ /**
+ * Using this method will repeat work already done, instead of calling it, use `type.externalUrl`.
+ * @deprecated
+ * Will be removed in 0.24.
+ */
+ attemptExternalResolution: (type: NeverIfInternal<ReferenceType>) => string | undefined;
+ getReflectionClasses: (refl: DeclarationReflection) => string;
+ reflectionTemplate: (props: PageEvent<import("../../../models").ContainerReflection>) => import("../../../utils/jsx.elements").JsxElement;
+ indexTemplate: (props: PageEvent<import("../../../models").ProjectReflection>) => import("../../../utils/jsx.elements").JsxElement;
+ defaultLayout: (template: import("../..").RenderTemplate<PageEvent<Reflection>>, props: PageEvent<Reflection>) => import("../../../utils/jsx.elements").JsxElement;
+ analytics: () => import("../../../utils/jsx.elements").JsxElement | undefined;
+ breadcrumb: (props: Reflection) => import("../../../utils/jsx.elements").JsxElement | undefined;
+ /** @deprecated will be removed in 0.25 */
+ comment: (props: Reflection) => import("../../../utils/jsx.elements").JsxElement | undefined;
+ commentSummary: (props: Reflection) => import("../../../utils/jsx.elements").JsxElement | undefined;
+ commentTags: (props: Reflection) => import("../../../utils/jsx.elements").JsxElement | undefined;
+ footer: () => import("../../../utils/jsx.elements").JsxElement | undefined;
+ header: (props: PageEvent<Reflection>) => import("../../../utils/jsx.elements").JsxElement;
+ hierarchy: (props: import("../../../models").DeclarationHierarchy | undefined) => import("../../../utils/jsx.elements").JsxElement | undefined;
+ index: (props: import("../../../models").ContainerReflection) => import("../../../utils/jsx.elements").JsxElement;
+ member: (props: DeclarationReflection) => import("../../../utils/jsx.elements").JsxElement;
+ memberDeclaration: (props: DeclarationReflection) => import("../../../utils/jsx.elements").JsxElement;
+ memberGetterSetter: (props: DeclarationReflection) => import("../../../utils/jsx.elements").JsxElement;
+ memberReference: (props: import("../../../models").ReferenceReflection) => import("../../../utils/jsx.elements").JsxElement;
+ memberSignatureBody: (r_0: import("../../../models").SignatureReflection, r_1?: {
+ hideSources?: boolean | undefined;
+ } | undefined) => import("../../../utils/jsx.elements").JsxElement;
+ memberSignatureTitle: (r_0: import("../../../models").SignatureReflection, r_1?: {
+ hideName?: boolean | undefined;
+ arrowStyle?: boolean | undefined;
+ } | undefined) => import("../../../utils/jsx.elements").JsxElement;
+ memberSignatures: (props: DeclarationReflection) => import("../../../utils/jsx.elements").JsxElement;
+ memberSources: (props: import("../../../models").SignatureReflection | DeclarationReflection) => import("../../../utils/jsx.elements").JsxElement;
+ members: (props: import("../../../models").ContainerReflection) => import("../../../utils/jsx.elements").JsxElement;
+ membersGroup: (group: import("../../../models").ReflectionGroup) => import("../../../utils/jsx.elements").JsxElement;
+ sidebar: (props: PageEvent<Reflection>) => import("../../../utils/jsx.elements").JsxElement;
+ pageSidebar: (props: PageEvent<Reflection>) => import("../../../utils/jsx.elements").JsxElement;
+ sidebarLinks: () => import("../../../utils/jsx.elements").JsxElement | null;
+ settings: () => import("../../../utils/jsx.elements").JsxElement;
+ navigation: (props: PageEvent<Reflection>) => import("../../../utils/jsx.elements").JsxElement;
+ pageNavigation: (props: PageEvent<Reflection>) => import("../../../utils/jsx.elements").JsxElement;
+ parameter: (props: DeclarationReflection) => import("../../../utils/jsx.elements").JsxElement;
+ toolbar: (props: PageEvent<Reflection>) => import("../../../utils/jsx.elements").JsxElement;
+ type: (type: import("../../../models").Type | undefined) => import("../../../utils/jsx.elements").JsxElement;
+ typeAndParent: (props: import("../../../models").Type) => import("../../../utils/jsx.elements").JsxElement;
+ typeParameters: (typeParameters: import("../../../models").TypeParameterReflection[]) => import("../../../utils/jsx.elements").JsxElement;
+}
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/DefaultThemeRenderContext.js b/node_modules/typedoc/dist/lib/output/themes/default/DefaultThemeRenderContext.js
new file mode 100644
index 0000000..8710197
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/DefaultThemeRenderContext.js
@@ -0,0 +1,104 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.DefaultThemeRenderContext = void 0;
+const models_1 = require("../../../models");
+const default_1 = require("./layouts/default");
+const partials_1 = require("./partials");
+const analytics_1 = require("./partials/analytics");
+const breadcrumb_1 = require("./partials/breadcrumb");
+const comment_1 = require("./partials/comment");
+const footer_1 = require("./partials/footer");
+const header_1 = require("./partials/header");
+const hierarchy_1 = require("./partials/hierarchy");
+const icon_1 = require("./partials/icon");
+const member_1 = require("./partials/member");
+const member_declaration_1 = require("./partials/member.declaration");
+const member_getterSetter_1 = require("./partials/member.getterSetter");
+const member_reference_1 = require("./partials/member.reference");
+const member_signature_body_1 = require("./partials/member.signature.body");
+const member_signature_title_1 = require("./partials/member.signature.title");
+const member_signatures_1 = require("./partials/member.signatures");
+const member_sources_1 = require("./partials/member.sources");
+const members_1 = require("./partials/members");
+const members_group_1 = require("./partials/members.group");
+const navigation_1 = require("./partials/navigation");
+const parameter_1 = require("./partials/parameter");
+const toolbar_1 = require("./partials/toolbar");
+const type_1 = require("./partials/type");
+const typeAndParent_1 = require("./partials/typeAndParent");
+const typeParameters_1 = require("./partials/typeParameters");
+const templates_1 = require("./templates");
+const reflection_1 = require("./templates/reflection");
+function bind(fn, first) {
+ return (...r) => fn(first, ...r);
+}
+class DefaultThemeRenderContext {
+ constructor(theme, page, options) {
+ this.theme = theme;
+ this.page = page;
+ this.icons = icon_1.icons;
+ this.hook = (name) => this.theme.owner.hooks.emit(name, this);
+ /** Avoid this in favor of urlTo if possible */
+ this.relativeURL = (url, cacheBust = false) => {
+ const result = this.theme.markedPlugin.getRelativeUrl(url);
+ if (cacheBust && this.theme.owner.cacheBust) {
+ return result + `?cache=${this.theme.owner.renderStartTime}`;
+ }
+ return result;
+ };
+ this.urlTo = (reflection) => {
+ return reflection.url ? this.relativeURL(reflection.url) : "";
+ };
+ this.markdown = (md) => {
+ if (md instanceof Array) {
+ return this.theme.markedPlugin.parseMarkdown(models_1.Comment.displayPartsToMarkdown(md, this.urlTo), this.page);
+ }
+ return md ? this.theme.markedPlugin.parseMarkdown(md, this.page) : "";
+ };
+ /**
+ * Using this method will repeat work already done, instead of calling it, use `type.externalUrl`.
+ * @deprecated
+ * Will be removed in 0.24.
+ */
+ this.attemptExternalResolution = (type) => {
+ return type.externalUrl;
+ };
+ this.getReflectionClasses = (refl) => this.theme.getReflectionClasses(refl);
+ this.reflectionTemplate = bind(reflection_1.reflectionTemplate, this);
+ this.indexTemplate = bind(templates_1.indexTemplate, this);
+ this.defaultLayout = bind(default_1.defaultLayout, this);
+ this.analytics = bind(analytics_1.analytics, this);
+ this.breadcrumb = bind(breadcrumb_1.breadcrumb, this);
+ /** @deprecated will be removed in 0.25 */
+ this.comment = bind(comment_1.comment, this);
+ this.commentSummary = bind(comment_1.commentSummary, this);
+ this.commentTags = bind(comment_1.commentTags, this);
+ this.footer = bind(footer_1.footer, this);
+ this.header = bind(header_1.header, this);
+ this.hierarchy = bind(hierarchy_1.hierarchy, this);
+ this.index = bind(partials_1.index, this);
+ this.member = bind(member_1.member, this);
+ this.memberDeclaration = bind(member_declaration_1.memberDeclaration, this);
+ this.memberGetterSetter = bind(member_getterSetter_1.memberGetterSetter, this);
+ this.memberReference = bind(member_reference_1.memberReference, this);
+ this.memberSignatureBody = bind(member_signature_body_1.memberSignatureBody, this);
+ this.memberSignatureTitle = bind(member_signature_title_1.memberSignatureTitle, this);
+ this.memberSignatures = bind(member_signatures_1.memberSignatures, this);
+ this.memberSources = bind(member_sources_1.memberSources, this);
+ this.members = bind(members_1.members, this);
+ this.membersGroup = bind(members_group_1.membersGroup, this);
+ this.sidebar = bind(navigation_1.sidebar, this);
+ this.pageSidebar = bind(navigation_1.pageSidebar, this);
+ this.sidebarLinks = bind(navigation_1.sidebarLinks, this);
+ this.settings = bind(navigation_1.settings, this);
+ this.navigation = bind(navigation_1.navigation, this);
+ this.pageNavigation = bind(navigation_1.pageNavigation, this);
+ this.parameter = bind(parameter_1.parameter, this);
+ this.toolbar = bind(toolbar_1.toolbar, this);
+ this.type = bind(type_1.type, this);
+ this.typeAndParent = bind(typeAndParent_1.typeAndParent, this);
+ this.typeParameters = bind(typeParameters_1.typeParameters, this);
+ this.options = options;
+ }
+}
+exports.DefaultThemeRenderContext = DefaultThemeRenderContext;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/layouts/default.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/layouts/default.d.ts
new file mode 100644
index 0000000..d3e7eab
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/layouts/default.d.ts
@@ -0,0 +1,6 @@
+import type { RenderTemplate } from "../../..";
+import type { Reflection } from "../../../../models";
+import { JSX } from "../../../../utils";
+import type { PageEvent } from "../../../events";
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+export declare const defaultLayout: (context: DefaultThemeRenderContext, template: RenderTemplate<PageEvent<Reflection>>, props: PageEvent<Reflection>) => JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/layouts/default.js b/node_modules/typedoc/dist/lib/output/themes/default/layouts/default.js
new file mode 100644
index 0000000..7425bc4
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/layouts/default.js
@@ -0,0 +1,46 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.defaultLayout = void 0;
+const utils_1 = require("../../../../utils");
+const lib_1 = require("../../lib");
+const defaultLayout = (context, template, props) => (utils_1.JSX.createElement("html", { class: "default", lang: context.options.getValue("htmlLang") },
+ utils_1.JSX.createElement("head", null,
+ utils_1.JSX.createElement("meta", { charSet: "utf-8" }),
+ context.hook("head.begin"),
+ utils_1.JSX.createElement("meta", { "http-equiv": "x-ua-compatible", content: "IE=edge" }),
+ utils_1.JSX.createElement("title", null, props.model.isProject()
+ ? (0, lib_1.getDisplayName)(props.model)
+ : `${(0, lib_1.getDisplayName)(props.model)} | ${(0, lib_1.getDisplayName)(props.project)}`),
+ utils_1.JSX.createElement("meta", { name: "description", content: "Documentation for " + props.project.name }),
+ utils_1.JSX.createElement("meta", { name: "viewport", content: "width=device-width, initial-scale=1" }),
+ utils_1.JSX.createElement("link", { rel: "stylesheet", href: context.relativeURL("assets/style.css", true) }),
+ utils_1.JSX.createElement("link", { rel: "stylesheet", href: context.relativeURL("assets/highlight.css", true) }),
+ context.options.getValue("customCss") && (utils_1.JSX.createElement("link", { rel: "stylesheet", href: context.relativeURL("assets/custom.css", true) })),
+ utils_1.JSX.createElement("script", { defer: true, src: context.relativeURL("assets/main.js", true) }),
+ utils_1.JSX.createElement("script", { async: true, src: context.relativeURL("assets/search.js", true), id: "tsd-search-script" }),
+ context.hook("head.end")),
+ utils_1.JSX.createElement("body", null,
+ context.hook("body.begin"),
+ utils_1.JSX.createElement("script", null,
+ utils_1.JSX.createElement(utils_1.Raw, { html: 'document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os"' })),
+ context.toolbar(props),
+ utils_1.JSX.createElement("div", { class: "container container-main" },
+ utils_1.JSX.createElement("div", { class: "col-content" },
+ context.hook("content.begin"),
+ context.header(props),
+ template(props),
+ context.hook("content.end")),
+ utils_1.JSX.createElement("div", { class: "col-sidebar" },
+ utils_1.JSX.createElement("div", { class: "page-menu" },
+ context.hook("pageSidebar.begin"),
+ context.pageSidebar(props),
+ context.hook("pageSidebar.end")),
+ utils_1.JSX.createElement("div", { class: "site-menu" },
+ context.hook("sidebar.begin"),
+ context.sidebar(props),
+ context.hook("sidebar.end")))),
+ context.footer(),
+ utils_1.JSX.createElement("div", { class: "overlay" }),
+ context.analytics(),
+ context.hook("body.end"))));
+exports.defaultLayout = defaultLayout;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/analytics.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/analytics.d.ts
new file mode 100644
index 0000000..6f5f9bd
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/analytics.d.ts
@@ -0,0 +1,3 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import { JSX } from "../../../../utils";
+export declare function analytics(context: DefaultThemeRenderContext): JSX.Element | undefined;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/analytics.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/analytics.js
new file mode 100644
index 0000000..9a272b4
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/analytics.js
@@ -0,0 +1,20 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.analytics = void 0;
+const utils_1 = require("../../../../utils");
+function analytics(context) {
+ const gaID = context.options.getValue("gaID");
+ if (!gaID)
+ return;
+ const script = `
+window.dataLayer = window.dataLayer || [];
+function gtag(){dataLayer.push(arguments);}
+gtag('js', new Date());
+gtag('config', '${gaID}');
+`.trim();
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("script", { async: true, src: "https://www.googletagmanager.com/gtag/js?id=" + gaID }),
+ utils_1.JSX.createElement("script", null,
+ utils_1.JSX.createElement(utils_1.JSX.Raw, { html: script }))));
+}
+exports.analytics = analytics;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/anchor-icon.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/anchor-icon.d.ts
new file mode 100644
index 0000000..27ea548
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/anchor-icon.d.ts
@@ -0,0 +1,3 @@
+import { JSX } from "../../../../utils";
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+export declare function anchorIcon(context: DefaultThemeRenderContext, anchor: string | undefined): JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/anchor-icon.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/anchor-icon.js
new file mode 100644
index 0000000..6f18a85
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/anchor-icon.js
@@ -0,0 +1,10 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.anchorIcon = void 0;
+const utils_1 = require("../../../../utils");
+function anchorIcon(context, anchor) {
+ if (!anchor)
+ return utils_1.JSX.createElement(utils_1.JSX.Fragment, null);
+ return (utils_1.JSX.createElement("a", { href: `#${anchor}`, "aria-label": "Permalink", class: "tsd-anchor-icon" }, context.icons.anchor()));
+}
+exports.anchorIcon = anchorIcon;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/breadcrumb.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/breadcrumb.d.ts
new file mode 100644
index 0000000..635325f
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/breadcrumb.d.ts
@@ -0,0 +1,4 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import { JSX } from "../../../../utils";
+import type { Reflection } from "../../../../models";
+export declare const breadcrumb: (context: DefaultThemeRenderContext, props: Reflection) => JSX.Element | undefined;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/breadcrumb.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/breadcrumb.js
new file mode 100644
index 0000000..8d19664
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/breadcrumb.js
@@ -0,0 +1,9 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.breadcrumb = void 0;
+const utils_1 = require("../../../../utils");
+const breadcrumb = (context, props) => props.parent ? (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ context.breadcrumb(props.parent),
+ utils_1.JSX.createElement("li", null, props.url ? utils_1.JSX.createElement("a", { href: context.urlTo(props) }, props.name) : utils_1.JSX.createElement("span", null, props.name)))) : props.url ? (utils_1.JSX.createElement("li", null,
+ utils_1.JSX.createElement("a", { href: context.urlTo(props) }, props.name))) : undefined;
+exports.breadcrumb = breadcrumb;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/comment.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/comment.d.ts
new file mode 100644
index 0000000..14aa817
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/comment.d.ts
@@ -0,0 +1,6 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import { JSX } from "../../../../utils";
+import { Reflection } from "../../../../models";
+export declare function comment({ markdown }: DefaultThemeRenderContext, props: Reflection): JSX.Element | undefined;
+export declare function commentSummary({ markdown }: DefaultThemeRenderContext, props: Reflection): JSX.Element | undefined;
+export declare function commentTags({ markdown }: DefaultThemeRenderContext, props: Reflection): JSX.Element | undefined;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/comment.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/comment.js
new file mode 100644
index 0000000..1cf1a6b
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/comment.js
@@ -0,0 +1,38 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.commentTags = exports.commentSummary = exports.comment = void 0;
+const utils_1 = require("../../../../utils");
+const models_1 = require("../../../../models");
+const lib_1 = require("../../lib");
+// Note: Comment modifiers are handled in `renderFlags`
+function comment({ markdown }, props) {
+ if (!props.comment?.hasVisibleComponent())
+ return;
+ const tags = props.kindOf(models_1.ReflectionKind.SomeSignature)
+ ? props.comment.blockTags.filter((tag) => tag.tag !== "@returns")
+ : props.comment.blockTags;
+ return (utils_1.JSX.createElement("div", { class: "tsd-comment tsd-typography" },
+ utils_1.JSX.createElement(utils_1.Raw, { html: markdown(props.comment.summary) }),
+ tags.map((item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("h3", null, (0, lib_1.camelToTitleCase)(item.tag.substring(1))),
+ utils_1.JSX.createElement(utils_1.Raw, { html: markdown(item.content) }))))));
+}
+exports.comment = comment;
+function commentSummary({ markdown }, props) {
+ if (!props.comment?.summary.some((part) => part.text))
+ return;
+ return (utils_1.JSX.createElement("div", { class: "tsd-comment tsd-typography" },
+ utils_1.JSX.createElement(utils_1.Raw, { html: markdown(props.comment.summary) })));
+}
+exports.commentSummary = commentSummary;
+function commentTags({ markdown }, props) {
+ if (!props.comment)
+ return;
+ const tags = props.kindOf(models_1.ReflectionKind.SomeSignature)
+ ? props.comment.blockTags.filter((tag) => tag.tag !== "@returns")
+ : props.comment.blockTags;
+ return (utils_1.JSX.createElement("div", { class: "tsd-comment tsd-typography" }, tags.map((item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("h4", null, (0, lib_1.camelToTitleCase)(item.tag.substring(1))),
+ utils_1.JSX.createElement(utils_1.Raw, { html: markdown(item.content) }))))));
+}
+exports.commentTags = commentTags;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/footer.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/footer.d.ts
new file mode 100644
index 0000000..4565f72
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/footer.d.ts
@@ -0,0 +1,3 @@
+import { JSX } from "../../../../utils";
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+export declare function footer(context: DefaultThemeRenderContext): JSX.Element | undefined;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/footer.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/footer.js
new file mode 100644
index 0000000..d78f8a2
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/footer.js
@@ -0,0 +1,13 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.footer = void 0;
+const utils_1 = require("../../../../utils");
+function footer(context) {
+ const hideGenerator = context.options.getValue("hideGenerator");
+ if (!hideGenerator)
+ return (utils_1.JSX.createElement("div", { class: "tsd-generator" },
+ utils_1.JSX.createElement("p", null,
+ "Generated using ",
+ utils_1.JSX.createElement("a", { href: "https://typedoc.org/", target: "_blank" }, "TypeDoc"))));
+}
+exports.footer = footer;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/header.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/header.d.ts
new file mode 100644
index 0000000..2cd06e5
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/header.d.ts
@@ -0,0 +1,5 @@
+import { JSX } from "../../../../utils";
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import type { PageEvent } from "../../../events";
+import { Reflection } from "../../../../models";
+export declare const header: (context: DefaultThemeRenderContext, props: PageEvent<Reflection>) => JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/header.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/header.js
new file mode 100644
index 0000000..4e4fee6
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/header.js
@@ -0,0 +1,20 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.header = void 0;
+const lib_1 = require("../../lib");
+const utils_1 = require("../../../../utils");
+const models_1 = require("../../../../models");
+const header = (context, props) => {
+ const HeadingLevel = props.model.isProject() ? "h2" : "h1";
+ return (utils_1.JSX.createElement("div", { class: "tsd-page-title" },
+ !!props.model.parent && utils_1.JSX.createElement("ul", { class: "tsd-breadcrumb" }, context.breadcrumb(props.model)),
+ utils_1.JSX.createElement(HeadingLevel, null,
+ props.model.kind !== models_1.ReflectionKind.Project && `${models_1.ReflectionKind.singularString(props.model.kind)} `,
+ (0, lib_1.getDisplayName)(props.model),
+ (0, lib_1.hasTypeParameters)(props.model) && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ "<",
+ (0, lib_1.join)(", ", props.model.typeParameters, (item) => item.name),
+ ">")),
+ (0, lib_1.renderFlags)(props.model.flags, props.model.comment))));
+};
+exports.header = header;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/hierarchy.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/hierarchy.d.ts
new file mode 100644
index 0000000..9d5fb3b
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/hierarchy.d.ts
@@ -0,0 +1,4 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import { JSX } from "../../../../utils";
+import type { DeclarationHierarchy } from "../../../../models";
+export declare function hierarchy(context: DefaultThemeRenderContext, props: DeclarationHierarchy | undefined): JSX.Element | undefined;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/hierarchy.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/hierarchy.js
new file mode 100644
index 0000000..110e5d2
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/hierarchy.js
@@ -0,0 +1,17 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.hierarchy = void 0;
+const utils_1 = require("../../../../utils");
+function hierarchy(context, props) {
+ if (!props)
+ return;
+ return (utils_1.JSX.createElement("section", { class: "tsd-panel tsd-hierarchy" },
+ utils_1.JSX.createElement("h4", null, "Hierarchy"),
+ hierarchyList(context, props)));
+}
+exports.hierarchy = hierarchy;
+function hierarchyList(context, props) {
+ return (utils_1.JSX.createElement("ul", { class: "tsd-hierarchy" }, props.types.map((item, i, l) => (utils_1.JSX.createElement("li", null,
+ props.isTarget ? utils_1.JSX.createElement("span", { class: "target" }, item.toString()) : context.type(item),
+ i === l.length - 1 && !!props.next && hierarchyList(context, props.next))))));
+}
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/icon.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/icon.d.ts
new file mode 100644
index 0000000..188941c
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/icon.d.ts
@@ -0,0 +1,4 @@
+import { ReflectionKind } from "../../../../models";
+import { JSX } from "../../../../utils";
+export declare function clearSeenIconCache(): void;
+export declare const icons: Record<ReflectionKind | "chevronDown" | "checkbox" | "menu" | "search" | "chevronSmall" | "anchor", () => JSX.Element>;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/icon.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/icon.js
new file mode 100644
index 0000000..cc993d0
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/icon.js
@@ -0,0 +1,90 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.icons = exports.clearSeenIconCache = void 0;
+const models_1 = require("../../../../models");
+const utils_1 = require("../../../../utils");
+const seenIcons = new Set();
+function clearSeenIconCache() {
+ seenIcons.clear();
+}
+exports.clearSeenIconCache = clearSeenIconCache;
+function cachedPart(key, svgPart) {
+ if (seenIcons.has(key)) {
+ return utils_1.JSX.createElement("use", { href: `#icon-${key}` });
+ }
+ seenIcons.add(key);
+ return {
+ ...svgPart,
+ props: {
+ ...svgPart.props,
+ id: `icon-${key}`,
+ },
+ };
+}
+const kindIcon = (kind, letterPath, color, circular = false) => (utils_1.JSX.createElement("svg", { class: "tsd-kind-icon", viewBox: "0 0 24 24" }, cachedPart(`${kind}`, utils_1.JSX.createElement("g", null,
+ utils_1.JSX.createElement("rect", { fill: "var(--color-icon-background)", stroke: color, "stroke-width": "1.5", x: "1", y: "1", width: "22", height: "22", rx: circular ? "12" : "6" }),
+ letterPath))));
+exports.icons = {
+ [models_1.ReflectionKind.Accessor]: () => kindIcon(models_1.ReflectionKind.Accessor, utils_1.JSX.createElement("path", { d: "M8.85 16L11.13 7.24H12.582L14.85 16H13.758L13.182 13.672H10.53L9.954 16H8.85ZM10.746 12.76H12.954L12.282 10.06C12.154 9.548 12.054 9.12 11.982 8.776C11.91 8.432 11.866 8.208 11.85 8.104C11.834 8.208 11.79 8.432 11.718 8.776C11.646 9.12 11.546 9.544 11.418 10.048L10.746 12.76Z", fill: "var(--color-text)" }), "#FF4D4D", true),
+ [models_1.ReflectionKind.CallSignature]() {
+ return this[models_1.ReflectionKind.Function]();
+ },
+ [models_1.ReflectionKind.Class]: () => kindIcon(models_1.ReflectionKind.Class, utils_1.JSX.createElement("path", { d: "M11.898 16.1201C11.098 16.1201 10.466 15.8961 10.002 15.4481C9.53803 15.0001 9.30603 14.3841 9.30603 13.6001V9.64012C9.30603 8.85612 9.53803 8.24012 10.002 7.79212C10.466 7.34412 11.098 7.12012 11.898 7.12012C12.682 7.12012 13.306 7.34812 13.77 7.80412C14.234 8.25212 14.466 8.86412 14.466 9.64012H13.386C13.386 9.14412 13.254 8.76412 12.99 8.50012C12.734 8.22812 12.37 8.09212 11.898 8.09212C11.426 8.09212 11.054 8.22412 10.782 8.48812C10.518 8.75212 10.386 9.13212 10.386 9.62812V13.6001C10.386 14.0961 10.518 14.4801 10.782 14.7521C11.054 15.0161 11.426 15.1481 11.898 15.1481C12.37 15.1481 12.734 15.0161 12.99 14.7521C13.254 14.4801 13.386 14.0961 13.386 13.6001H14.466C14.466 14.3761 14.234 14.9921 13.77 15.4481C13.306 15.8961 12.682 16.1201 11.898 16.1201Z", fill: "var(--color-text)" }), "var(--color-ts-class)"),
+ [models_1.ReflectionKind.Constructor]: () => kindIcon(models_1.ReflectionKind.Constructor, utils_1.JSX.createElement("path", { d: "M11.898 16.1201C11.098 16.1201 10.466 15.8961 10.002 15.4481C9.53803 15.0001 9.30603 14.3841 9.30603 13.6001V9.64012C9.30603 8.85612 9.53803 8.24012 10.002 7.79212C10.466 7.34412 11.098 7.12012 11.898 7.12012C12.682 7.12012 13.306 7.34812 13.77 7.80412C14.234 8.25212 14.466 8.86412 14.466 9.64012H13.386C13.386 9.14412 13.254 8.76412 12.99 8.50012C12.734 8.22812 12.37 8.09212 11.898 8.09212C11.426 8.09212 11.054 8.22412 10.782 8.48812C10.518 8.75212 10.386 9.13212 10.386 9.62812V13.6001C10.386 14.0961 10.518 14.4801 10.782 14.7521C11.054 15.0161 11.426 15.1481 11.898 15.1481C12.37 15.1481 12.734 15.0161 12.99 14.7521C13.254 14.4801 13.386 14.0961 13.386 13.6001H14.466C14.466 14.3761 14.234 14.9921 13.77 15.4481C13.306 15.8961 12.682 16.1201 11.898 16.1201Z", fill: "var(--color-text)" }), "#4D7FFF", true),
+ [models_1.ReflectionKind.ConstructorSignature]() {
+ return this[models_1.ReflectionKind.Constructor]();
+ },
+ [models_1.ReflectionKind.Enum]: () => kindIcon(models_1.ReflectionKind.Enum, utils_1.JSX.createElement("path", { d: "M9.45 16V7.24H14.49V8.224H10.518V10.936H14.07V11.908H10.518V15.016H14.49V16H9.45Z", fill: "var(--color-text)" }), "var(--color-ts-enum)"),
+ [models_1.ReflectionKind.EnumMember]() {
+ return this[models_1.ReflectionKind.Property]();
+ },
+ [models_1.ReflectionKind.Function]: () => kindIcon(models_1.ReflectionKind.Function, utils_1.JSX.createElement("path", { d: "M9.39 16V7.24H14.55V8.224H10.446V11.128H14.238V12.112H10.47V16H9.39Z", fill: "var(--color-text)" }), "var(--color-ts-function)"),
+ [models_1.ReflectionKind.GetSignature]() {
+ return this[models_1.ReflectionKind.Accessor]();
+ },
+ [models_1.ReflectionKind.IndexSignature]() {
+ return this[models_1.ReflectionKind.Property]();
+ },
+ [models_1.ReflectionKind.Interface]: () => kindIcon(models_1.ReflectionKind.Interface, utils_1.JSX.createElement("path", { d: "M9.51 16V15.016H11.298V8.224H9.51V7.24H14.19V8.224H12.402V15.016H14.19V16H9.51Z", fill: "var(--color-text)" }), "var(--color-ts-interface)"),
+ [models_1.ReflectionKind.Method]: () => kindIcon(models_1.ReflectionKind.Method, utils_1.JSX.createElement("path", { d: "M9.162 16V7.24H10.578L11.514 10.072C11.602 10.328 11.674 10.584 11.73 10.84C11.794 11.088 11.842 11.28 11.874 11.416C11.906 11.28 11.954 11.088 12.018 10.84C12.082 10.584 12.154 10.324 12.234 10.06L13.122 7.24H14.538V16H13.482V12.82C13.482 12.468 13.49 12.068 13.506 11.62C13.53 11.172 13.558 10.716 13.59 10.252C13.622 9.78 13.654 9.332 13.686 8.908C13.726 8.476 13.762 8.1 13.794 7.78L12.366 12.16H11.334L9.894 7.78C9.934 8.092 9.97 8.456 10.002 8.872C10.042 9.28 10.078 9.716 10.11 10.18C10.142 10.636 10.166 11.092 10.182 11.548C10.206 12.004 10.218 12.428 10.218 12.82V16H9.162Z", fill: "var(--color-text)" }), "#FF4DB8", true),
+ [models_1.ReflectionKind.Module]() {
+ return this[models_1.ReflectionKind.Namespace]();
+ },
+ [models_1.ReflectionKind.Namespace]: () => kindIcon(models_1.ReflectionKind.Namespace, utils_1.JSX.createElement("path", { d: "M9.33 16V7.24H10.77L13.446 14.74C13.43 14.54 13.41 14.296 13.386 14.008C13.37 13.712 13.354 13.404 13.338 13.084C13.33 12.756 13.326 12.448 13.326 12.16V7.24H14.37V16H12.93L10.266 8.5C10.282 8.692 10.298 8.936 10.314 9.232C10.33 9.52 10.342 9.828 10.35 10.156C10.366 10.476 10.374 10.784 10.374 11.08V16H9.33Z", fill: "var(--color-text)" }), "var(--color-ts-namespace)"),
+ [models_1.ReflectionKind.ObjectLiteral]() {
+ return this[models_1.ReflectionKind.Interface]();
+ },
+ [models_1.ReflectionKind.Parameter]() {
+ return this[models_1.ReflectionKind.Property]();
+ },
+ [models_1.ReflectionKind.Project]() {
+ return this[models_1.ReflectionKind.Namespace]();
+ },
+ [models_1.ReflectionKind.Property]: () => kindIcon(models_1.ReflectionKind.Property, utils_1.JSX.createElement("path", { d: "M9.354 16V7.24H12.174C12.99 7.24 13.638 7.476 14.118 7.948C14.606 8.412 14.85 9.036 14.85 9.82C14.85 10.604 14.606 11.232 14.118 11.704C13.638 12.168 12.99 12.4 12.174 12.4H10.434V16H9.354ZM10.434 11.428H12.174C12.646 11.428 13.022 11.284 13.302 10.996C13.59 10.7 13.734 10.308 13.734 9.82C13.734 9.324 13.59 8.932 13.302 8.644C13.022 8.356 12.646 8.212 12.174 8.212H10.434V11.428Z", fill: "var(--color-text)" }), "#FF984D", true),
+ [models_1.ReflectionKind.Reference]: () => kindIcon(models_1.ReflectionKind.Reference, utils_1.JSX.createElement("path", { d: "M10.354 17V8.24H13.066C13.586 8.24 14.042 8.348 14.434 8.564C14.826 8.772 15.13 9.064 15.346 9.44C15.562 9.816 15.67 10.256 15.67 10.76C15.67 11.352 15.514 11.86 15.202 12.284C14.898 12.708 14.482 13 13.954 13.16L15.79 17H14.518L12.838 13.28H11.434V17H10.354ZM11.434 12.308H13.066C13.514 12.308 13.874 12.168 14.146 11.888C14.418 11.6 14.554 11.224 14.554 10.76C14.554 10.288 14.418 9.912 14.146 9.632C13.874 9.352 13.514 9.212 13.066 9.212H11.434V12.308Z", fill: "var(--color-text)" }), "#FF4D82", // extract into a CSS variable potentially?
+ true),
+ [models_1.ReflectionKind.SetSignature]() {
+ return this[models_1.ReflectionKind.Accessor]();
+ },
+ [models_1.ReflectionKind.TypeAlias]: () => kindIcon(models_1.ReflectionKind.TypeAlias, utils_1.JSX.createElement("path", { d: "M11.31 16V8.224H8.91V7.24H14.79V8.224H12.39V16H11.31Z", fill: "var(--color-text)" }), "var(--color-ts-type-alias)"),
+ [models_1.ReflectionKind.TypeLiteral]() {
+ return this[models_1.ReflectionKind.TypeAlias]();
+ },
+ [models_1.ReflectionKind.TypeParameter]() {
+ return this[models_1.ReflectionKind.TypeAlias]();
+ },
+ [models_1.ReflectionKind.Variable]: () => kindIcon(models_1.ReflectionKind.Variable, utils_1.JSX.createElement("path", { d: "M11.106 16L8.85 7.24H9.966L11.454 13.192C11.558 13.608 11.646 13.996 11.718 14.356C11.79 14.708 11.842 14.976 11.874 15.16C11.906 14.976 11.954 14.708 12.018 14.356C12.09 13.996 12.178 13.608 12.282 13.192L13.758 7.24H14.85L12.582 16H11.106Z", fill: "var(--color-text)" }), "var(--color-ts-variable)"),
+ chevronDown: () => (utils_1.JSX.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none" }, cachedPart("chevronDown", utils_1.JSX.createElement("path", { d: "M4.93896 8.531L12 15.591L19.061 8.531L16.939 6.409L12 11.349L7.06098 6.409L4.93896 8.531Z", fill: "var(--color-text)" })))),
+ chevronSmall: () => (utils_1.JSX.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none" },
+ utils_1.JSX.createElement("path", { d: "M1.5 5.50969L8 11.6609L14.5 5.50969L12.5466 3.66086L8 7.96494L3.45341 3.66086L1.5 5.50969Z", fill: "var(--color-text)" }))),
+ checkbox: () => (utils_1.JSX.createElement("svg", { width: "32", height: "32", viewBox: "0 0 32 32", "aria-hidden": "true" },
+ utils_1.JSX.createElement("rect", { class: "tsd-checkbox-background", width: "30", height: "30", x: "1", y: "1", rx: "6", fill: "none" }),
+ utils_1.JSX.createElement("path", { class: "tsd-checkbox-checkmark", d: "M8.35422 16.8214L13.2143 21.75L24.6458 10.25", stroke: "none", "stroke-width": "3.5", "stroke-linejoin": "round", fill: "none" }))),
+ menu: () => (utils_1.JSX.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none" }, ["3", "7", "11"].map((y) => (utils_1.JSX.createElement("rect", { x: "1", y: y, width: "14", height: "2", fill: "var(--color-text)" }))))),
+ search: () => (utils_1.JSX.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none" },
+ utils_1.JSX.createElement("path", { d: "M15.7824 13.833L12.6666 10.7177C12.5259 10.5771 12.3353 10.499 12.1353 10.499H11.6259C12.4884 9.39596 13.001 8.00859 13.001 6.49937C13.001 2.90909 10.0914 0 6.50048 0C2.90959 0 0 2.90909 0 6.49937C0 10.0896 2.90959 12.9987 6.50048 12.9987C8.00996 12.9987 9.39756 12.4863 10.5008 11.6239V12.1332C10.5008 12.3332 10.5789 12.5238 10.7195 12.6644L13.8354 15.7797C14.1292 16.0734 14.6042 16.0734 14.8948 15.7797L15.7793 14.8954C16.0731 14.6017 16.0731 14.1267 15.7824 13.833ZM6.50048 10.499C4.29094 10.499 2.50018 8.71165 2.50018 6.49937C2.50018 4.29021 4.28781 2.49976 6.50048 2.49976C8.71001 2.49976 10.5008 4.28708 10.5008 6.49937C10.5008 8.70852 8.71314 10.499 6.50048 10.499Z", fill: "var(--color-text)" }))),
+ anchor: () => (utils_1.JSX.createElement("svg", { viewBox: "0 0 24 24" }, cachedPart("anchor", utils_1.JSX.createElement("g", { "stroke-width": "2", stroke: "currentColor", fill: "none", "stroke-linecap": "round", "stroke-linejoin": "round" },
+ utils_1.JSX.createElement("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }),
+ utils_1.JSX.createElement("path", { d: "M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5" }),
+ utils_1.JSX.createElement("path", { d: "M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5" }))))),
+};
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/index.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/index.d.ts
new file mode 100644
index 0000000..edf4485
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/index.d.ts
@@ -0,0 +1,4 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import { JSX } from "../../../../utils";
+import type { ContainerReflection } from "../../../../models";
+export declare function index(context: DefaultThemeRenderContext, props: ContainerReflection): JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/index.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/index.js
new file mode 100644
index 0000000..adc5677
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/index.js
@@ -0,0 +1,43 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.index = void 0;
+const lib_1 = require("../../lib");
+const utils_1 = require("../../../../utils");
+function renderCategory({ urlTo, icons, getReflectionClasses }, item, prependName = "") {
+ return (utils_1.JSX.createElement("section", { class: "tsd-index-section" },
+ utils_1.JSX.createElement("h3", { class: "tsd-index-heading" }, prependName ? `${prependName} - ${item.title}` : item.title),
+ utils_1.JSX.createElement("div", { class: "tsd-index-list" }, item.children.map((item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("a", { href: urlTo(item), class: (0, lib_1.classNames)({ "tsd-index-link": true, deprecated: item.isDeprecated() }, getReflectionClasses(item)) },
+ icons[item.kind](),
+ utils_1.JSX.createElement("span", null, (0, lib_1.renderName)(item))),
+ "\n"))))));
+}
+function index(context, props) {
+ let content = [];
+ if (props.categories?.length) {
+ content = props.categories.map((item) => renderCategory(context, item));
+ }
+ else if (props.groups?.length) {
+ content = props.groups.flatMap((item) => item.categories
+ ? item.categories.map((item2) => renderCategory(context, item2, item.title))
+ : renderCategory(context, item));
+ }
+ // Accordion is only needed if any children don't have their own document.
+ if ([...(props.groups ?? []), ...(props.categories ?? [])].some((category) => !category.allChildrenHaveOwnDocument())) {
+ content = (utils_1.JSX.createElement("details", { class: "tsd-index-content tsd-index-accordion", open: true },
+ utils_1.JSX.createElement("summary", { class: "tsd-accordion-summary tsd-index-summary" },
+ utils_1.JSX.createElement("h5", { class: "tsd-index-heading uppercase", role: "button", "aria-expanded": "false", tabIndex: 0 },
+ context.icons.chevronSmall(),
+ " Index")),
+ utils_1.JSX.createElement("div", { class: "tsd-accordion-details" }, content)));
+ }
+ else {
+ content = (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("h3", { class: "tsd-index-heading uppercase" }, "Index"),
+ content));
+ }
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("section", { class: "tsd-panel-group tsd-index-group" },
+ utils_1.JSX.createElement("section", { class: "tsd-panel tsd-index-panel" }, content))));
+}
+exports.index = index;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/member.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.d.ts
new file mode 100644
index 0000000..ab59c6c
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.d.ts
@@ -0,0 +1,4 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import { JSX } from "../../../../utils";
+import { DeclarationReflection } from "../../../../models";
+export declare function member(context: DefaultThemeRenderContext, props: DeclarationReflection): JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/member.declaration.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.declaration.d.ts
new file mode 100644
index 0000000..a452da2
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.declaration.d.ts
@@ -0,0 +1,4 @@
+import type { DeclarationReflection } from "../../../../models";
+import { JSX } from "../../../../utils";
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+export declare function memberDeclaration(context: DefaultThemeRenderContext, props: DeclarationReflection): JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/member.declaration.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.declaration.js
new file mode 100644
index 0000000..246946a
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.declaration.js
@@ -0,0 +1,40 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.memberDeclaration = void 0;
+const utils_1 = require("../../../../utils");
+const lib_1 = require("../../lib");
+function memberDeclaration(context, props) {
+ function renderTypeDeclaration(type) {
+ return (utils_1.JSX.createElement("div", { class: "tsd-type-declaration" },
+ utils_1.JSX.createElement("h4", null, "Type declaration"),
+ context.parameter(type.declaration)));
+ }
+ const visitor = { reflection: renderTypeDeclaration };
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("div", { class: "tsd-signature" },
+ utils_1.JSX.createElement("span", { class: (0, lib_1.getKindClass)(props) }, (0, lib_1.wbr)(props.name)),
+ (0, lib_1.renderTypeParametersSignature)(context, props.typeParameters),
+ props.type && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" },
+ !!props.flags.isOptional && "?",
+ ":"),
+ " ",
+ context.type(props.type))),
+ !!props.defaultValue && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" },
+ " = ",
+ props.defaultValue)))),
+ context.commentSummary(props),
+ (0, lib_1.hasTypeParameters)(props) && context.typeParameters(props.typeParameters),
+ props.type?.visit({
+ reflection: renderTypeDeclaration,
+ array: (arr) => arr.elementType.visit(visitor),
+ intersection: (int) => int.types.map((t) => t.visit(visitor)),
+ union: (union) => union.types.map((t) => t.visit(visitor)),
+ reference: (ref) => ref.typeArguments?.map((t) => t.visit(visitor)),
+ tuple: (ref) => ref.elements.map((t) => t.visit(visitor)),
+ }),
+ context.commentTags(props),
+ context.memberSources(props)));
+}
+exports.memberDeclaration = memberDeclaration;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/member.getterSetter.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.getterSetter.d.ts
new file mode 100644
index 0000000..51ffe94
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.getterSetter.d.ts
@@ -0,0 +1,4 @@
+import type { DeclarationReflection } from "../../../../models";
+import { JSX } from "../../../../utils";
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+export declare const memberGetterSetter: (context: DefaultThemeRenderContext, props: DeclarationReflection) => JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/member.getterSetter.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.getterSetter.js
new file mode 100644
index 0000000..f27a851
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.getterSetter.js
@@ -0,0 +1,28 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.memberGetterSetter = void 0;
+const utils_1 = require("../../../../utils");
+const lib_1 = require("../../lib");
+const memberGetterSetter = (context, props) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("ul", { class: (0, lib_1.classNames)({
+ "tsd-signatures": true,
+ }, context.getReflectionClasses(props)) },
+ !!props.getSignature && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("li", { class: "tsd-signature", id: props.getSignature.anchor },
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "get"),
+ " ",
+ props.name,
+ context.memberSignatureTitle(props.getSignature, {
+ hideName: true,
+ })),
+ utils_1.JSX.createElement("li", { class: "tsd-description" }, context.memberSignatureBody(props.getSignature)))),
+ !!props.setSignature && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("li", { class: "tsd-signature", id: props.setSignature.anchor },
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "set"),
+ " ",
+ props.name,
+ context.memberSignatureTitle(props.setSignature, {
+ hideName: true,
+ })),
+ utils_1.JSX.createElement("li", { class: "tsd-description" }, context.memberSignatureBody(props.setSignature)))))));
+exports.memberGetterSetter = memberGetterSetter;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/member.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.js
new file mode 100644
index 0000000..cd715df
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.js
@@ -0,0 +1,30 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.member = void 0;
+const lib_1 = require("../../lib");
+const utils_1 = require("../../../../utils");
+const models_1 = require("../../../../models");
+const anchor_icon_1 = require("./anchor-icon");
+function member(context, props) {
+ context.page.pageHeadings.push({
+ link: `#${props.anchor}`,
+ text: (0, lib_1.getDisplayName)(props),
+ kind: props.kind,
+ classes: context.getReflectionClasses(props),
+ });
+ return (utils_1.JSX.createElement("section", { class: (0, lib_1.classNames)({ "tsd-panel": true, "tsd-member": true }, context.getReflectionClasses(props)) },
+ utils_1.JSX.createElement("a", { id: props.anchor, class: "tsd-anchor" }),
+ !!props.name && (utils_1.JSX.createElement("h3", { class: "tsd-anchor-link" },
+ (0, lib_1.renderFlags)(props.flags, props.comment),
+ utils_1.JSX.createElement("span", { class: (0, lib_1.classNames)({ deprecated: props.isDeprecated() }) }, (0, lib_1.wbr)(props.name)),
+ (0, anchor_icon_1.anchorIcon)(context, props.anchor))),
+ props.signatures
+ ? context.memberSignatures(props)
+ : props.hasGetterOrSetter()
+ ? context.memberGetterSetter(props)
+ : props instanceof models_1.ReferenceReflection
+ ? context.memberReference(props)
+ : context.memberDeclaration(props),
+ props.groups?.map((item) => item.children.map((item) => !item.hasOwnDocument && context.member(item)))));
+}
+exports.member = member;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/member.reference.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.reference.d.ts
new file mode 100644
index 0000000..a09a67f
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.reference.d.ts
@@ -0,0 +1,4 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import { JSX } from "../../../../utils";
+import type { ReferenceReflection } from "../../../../models";
+export declare const memberReference: ({ urlTo }: DefaultThemeRenderContext, props: ReferenceReflection) => JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/member.reference.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.reference.js
new file mode 100644
index 0000000..3baa00e
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.reference.js
@@ -0,0 +1,21 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.memberReference = void 0;
+const utils_1 = require("../../../../utils");
+const memberReference = ({ urlTo }, props) => {
+ const referenced = props.tryGetTargetReflectionDeep();
+ if (!referenced) {
+ return utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ "Re-exports ",
+ props.name);
+ }
+ if (props.name === referenced.name) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ "Re-exports ",
+ utils_1.JSX.createElement("a", { href: urlTo(referenced) }, referenced.name)));
+ }
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ "Renames and re-exports ",
+ utils_1.JSX.createElement("a", { href: urlTo(referenced) }, referenced.name)));
+};
+exports.memberReference = memberReference;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signature.body.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signature.body.d.ts
new file mode 100644
index 0000000..8218f91
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signature.body.d.ts
@@ -0,0 +1,6 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import { JSX } from "../../../../utils";
+import { SignatureReflection } from "../../../../models";
+export declare function memberSignatureBody(context: DefaultThemeRenderContext, props: SignatureReflection, { hideSources }?: {
+ hideSources?: boolean;
+}): JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signature.body.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signature.body.js
new file mode 100644
index 0000000..685ebf9
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signature.body.js
@@ -0,0 +1,37 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.memberSignatureBody = void 0;
+const utils_1 = require("../../../../utils");
+const models_1 = require("../../../../models");
+const lib_1 = require("../../lib");
+function memberSignatureBody(context, props, { hideSources = false } = {}) {
+ const returnsTag = props.comment?.getTag("@returns");
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ (0, lib_1.renderFlags)(props.flags, props.comment),
+ context.commentSummary(props),
+ (0, lib_1.hasTypeParameters)(props) && context.typeParameters(props.typeParameters),
+ props.parameters && props.parameters.length > 0 && (utils_1.JSX.createElement("div", { class: "tsd-parameters" },
+ utils_1.JSX.createElement("h4", { class: "tsd-parameters-title" }, "Parameters"),
+ utils_1.JSX.createElement("ul", { class: "tsd-parameter-list" }, props.parameters.map((item) => (utils_1.JSX.createElement("li", null,
+ utils_1.JSX.createElement("h5", null,
+ (0, lib_1.renderFlags)(item.flags, item.comment),
+ !!item.flags.isRest && utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "..."),
+ utils_1.JSX.createElement("span", { class: "tsd-kind-parameter" }, item.name),
+ ": ",
+ context.type(item.type),
+ item.defaultValue != null && (utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" },
+ " = ",
+ item.defaultValue))),
+ context.commentSummary(item),
+ context.commentTags(item),
+ item.type instanceof models_1.ReflectionType && context.parameter(item.type.declaration))))))),
+ props.type && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("h4", { class: "tsd-returns-title" },
+ "Returns ",
+ context.type(props.type)),
+ returnsTag && utils_1.JSX.createElement(utils_1.Raw, { html: context.markdown(returnsTag.content) }),
+ props.type instanceof models_1.ReflectionType && context.parameter(props.type.declaration))),
+ context.commentTags(props),
+ !hideSources && context.memberSources(props)));
+}
+exports.memberSignatureBody = memberSignatureBody;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signature.title.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signature.title.d.ts
new file mode 100644
index 0000000..ff2e216
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signature.title.d.ts
@@ -0,0 +1,7 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import { JSX } from "../../../../utils";
+import { SignatureReflection } from "../../../../models";
+export declare function memberSignatureTitle(context: DefaultThemeRenderContext, props: SignatureReflection, { hideName, arrowStyle }?: {
+ hideName?: boolean;
+ arrowStyle?: boolean;
+}): JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signature.title.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signature.title.js
new file mode 100644
index 0000000..37c0b1c
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signature.title.js
@@ -0,0 +1,38 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.memberSignatureTitle = void 0;
+const lib_1 = require("../../lib");
+const utils_1 = require("../../../../utils");
+const models_1 = require("../../../../models");
+function renderParameterWithType(context, item) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ !!item.flags.isRest && utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "..."),
+ utils_1.JSX.createElement("span", { class: "tsd-kind-parameter" }, item.name),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" },
+ !!item.flags.isOptional && "?",
+ !!item.defaultValue && "?",
+ ": "),
+ context.type(item.type)));
+}
+function renderParameterWithoutType(item) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ !!item.flags.isRest && utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "..."),
+ utils_1.JSX.createElement("span", { class: "tsd-kind-parameter" }, item.name),
+ (item.flags.isOptional || item.defaultValue) && utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "?")));
+}
+function memberSignatureTitle(context, props, { hideName = false, arrowStyle = false } = {}) {
+ const hideParamTypes = context.options.getValue("hideParameterTypesInTitle");
+ const renderParam = hideParamTypes ? renderParameterWithoutType : renderParameterWithType.bind(null, context);
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ !hideName ? (utils_1.JSX.createElement("span", { class: (0, lib_1.getKindClass)(props) }, (0, lib_1.wbr)(props.name))) : (utils_1.JSX.createElement(utils_1.JSX.Fragment, null, props.kind === models_1.ReflectionKind.ConstructorSignature && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ !!props.flags.isAbstract && utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "abstract "),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "new "))))),
+ (0, lib_1.renderTypeParametersSignature)(context, props.typeParameters),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "("),
+ (0, lib_1.join)(", ", props.parameters ?? [], renderParam),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ")"),
+ !!props.type && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, arrowStyle ? " => " : ": "),
+ context.type(props.type)))));
+}
+exports.memberSignatureTitle = memberSignatureTitle;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signatures.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signatures.d.ts
new file mode 100644
index 0000000..1f23718
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signatures.d.ts
@@ -0,0 +1,4 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import { JSX } from "../../../../utils";
+import type { DeclarationReflection } from "../../../../models";
+export declare const memberSignatures: (context: DefaultThemeRenderContext, props: DeclarationReflection) => JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signatures.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signatures.js
new file mode 100644
index 0000000..bdf3052
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.signatures.js
@@ -0,0 +1,13 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.memberSignatures = void 0;
+const utils_1 = require("../../../../utils");
+const anchor_icon_1 = require("./anchor-icon");
+const lib_1 = require("../../lib");
+const memberSignatures = (context, props) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("ul", { class: (0, lib_1.classNames)({ "tsd-signatures": true }, context.getReflectionClasses(props)) }, props.signatures?.map((item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("li", { class: "tsd-signature tsd-anchor-link", id: item.anchor },
+ context.memberSignatureTitle(item),
+ (0, anchor_icon_1.anchorIcon)(context, item.anchor)),
+ utils_1.JSX.createElement("li", { class: "tsd-description" }, context.memberSignatureBody(item))))))));
+exports.memberSignatures = memberSignatures;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/member.sources.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.sources.d.ts
new file mode 100644
index 0000000..50871a8
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.sources.d.ts
@@ -0,0 +1,4 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import { JSX } from "../../../../utils";
+import type { DeclarationReflection, SignatureReflection } from "../../../../models";
+export declare const memberSources: (context: DefaultThemeRenderContext, props: SignatureReflection | DeclarationReflection) => JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/member.sources.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.sources.js
new file mode 100644
index 0000000..3379545
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/member.sources.js
@@ -0,0 +1,39 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.memberSources = void 0;
+const utils_1 = require("../../../../utils");
+const memberSources = (context, props) => {
+ const sources = [];
+ if (props.implementationOf) {
+ sources.push(utils_1.JSX.createElement("p", null,
+ "Implementation of ",
+ context.typeAndParent(props.implementationOf)));
+ }
+ if (props.inheritedFrom) {
+ sources.push(utils_1.JSX.createElement("p", null,
+ "Inherited from ",
+ context.typeAndParent(props.inheritedFrom)));
+ }
+ if (props.overwrites) {
+ sources.push(utils_1.JSX.createElement("p", null,
+ "Overrides ",
+ context.typeAndParent(props.overwrites)));
+ }
+ if (props.sources) {
+ sources.push(utils_1.JSX.createElement("ul", null, props.sources.map((item) => item.url ? (utils_1.JSX.createElement("li", null,
+ "Defined in ",
+ utils_1.JSX.createElement("a", { href: item.url },
+ item.fileName,
+ ":",
+ item.line))) : (utils_1.JSX.createElement("li", null,
+ "Defined in ",
+ item.fileName,
+ ":",
+ item.line)))));
+ }
+ if (sources.length === 0) {
+ return utils_1.JSX.createElement(utils_1.JSX.Fragment, null);
+ }
+ return utils_1.JSX.createElement("aside", { class: "tsd-sources" }, sources);
+};
+exports.memberSources = memberSources;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/members.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/members.d.ts
new file mode 100644
index 0000000..1ae4dc3
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/members.d.ts
@@ -0,0 +1,4 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import { JSX } from "../../../../utils";
+import { ContainerReflection } from "../../../../models";
+export declare function members(context: DefaultThemeRenderContext, props: ContainerReflection): JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/members.group.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/members.group.d.ts
new file mode 100644
index 0000000..5510feb
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/members.group.d.ts
@@ -0,0 +1,4 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import { JSX } from "../../../../utils";
+import type { ReflectionGroup } from "../../../../models";
+export declare function membersGroup(context: DefaultThemeRenderContext, group: ReflectionGroup): JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/members.group.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/members.group.js
new file mode 100644
index 0000000..6409273
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/members.group.js
@@ -0,0 +1,19 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.membersGroup = void 0;
+const utils_1 = require("../../../../utils");
+function membersGroup(context, group) {
+ if (group.categories) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null, group.categories.map((item) => (utils_1.JSX.createElement("section", { class: "tsd-panel-group tsd-member-group" },
+ utils_1.JSX.createElement("h2", null,
+ group.title,
+ !!item.title && utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ " - ",
+ item.title)),
+ item.children.map((item) => !item.hasOwnDocument && context.member(item)))))));
+ }
+ return (utils_1.JSX.createElement("section", { class: "tsd-panel-group tsd-member-group" },
+ utils_1.JSX.createElement("h2", null, group.title),
+ group.children.map((item) => !item.hasOwnDocument && context.member(item))));
+}
+exports.membersGroup = membersGroup;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/members.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/members.js
new file mode 100644
index 0000000..f2917c0
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/members.js
@@ -0,0 +1,15 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.members = void 0;
+const utils_1 = require("../../../../utils");
+const models_1 = require("../../../../models");
+const lib_1 = require("../../lib");
+function members(context, props) {
+ if (props.categories && props.categories.length) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null, props.categories.map((item) => !item.allChildrenHaveOwnDocument() && (utils_1.JSX.createElement("section", { class: (0, lib_1.classNames)({ "tsd-panel-group": true, "tsd-member-group": true }, props instanceof models_1.DeclarationReflection ? context.getReflectionClasses(props) : "") },
+ utils_1.JSX.createElement("h2", null, item.title),
+ item.children.map((item) => !item.hasOwnDocument && context.member(item)))))));
+ }
+ return utils_1.JSX.createElement(utils_1.JSX.Fragment, null, props.groups?.map((item) => !item.allChildrenHaveOwnDocument() && context.membersGroup(item)));
+}
+exports.members = members;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/navigation.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/navigation.d.ts
new file mode 100644
index 0000000..b8f3b09
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/navigation.d.ts
@@ -0,0 +1,10 @@
+import { Reflection } from "../../../../models";
+import { JSX } from "../../../../utils";
+import type { PageEvent } from "../../../events";
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+export declare function sidebar(context: DefaultThemeRenderContext, props: PageEvent<Reflection>): JSX.Element;
+export declare function sidebarLinks(context: DefaultThemeRenderContext): JSX.Element | null;
+export declare function settings(context: DefaultThemeRenderContext): JSX.Element;
+export declare function navigation(context: DefaultThemeRenderContext, props: PageEvent<Reflection>): JSX.Element;
+export declare function pageSidebar(context: DefaultThemeRenderContext, props: PageEvent<Reflection>): JSX.Element;
+export declare function pageNavigation(context: DefaultThemeRenderContext, props: PageEvent<Reflection>): JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/navigation.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/navigation.js
new file mode 100644
index 0000000..763220e
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/navigation.js
@@ -0,0 +1,164 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.pageNavigation = exports.pageSidebar = exports.navigation = exports.settings = exports.sidebarLinks = exports.sidebar = void 0;
+const models_1 = require("../../../../models");
+const utils_1 = require("../../../../utils");
+const lib_1 = require("../../lib");
+function sidebar(context, props) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ context.sidebarLinks(),
+ context.navigation(props)));
+}
+exports.sidebar = sidebar;
+function buildFilterItem(context, name, displayName, defaultValue) {
+ return (utils_1.JSX.createElement("li", { class: "tsd-filter-item" },
+ utils_1.JSX.createElement("label", { class: "tsd-filter-input" },
+ utils_1.JSX.createElement("input", { type: "checkbox", id: `tsd-filter-${name}`, name: name, checked: defaultValue }),
+ context.icons.checkbox(),
+ utils_1.JSX.createElement("span", null, displayName))));
+}
+function sidebarLinks(context) {
+ const links = Object.entries(context.options.getValue("sidebarLinks"));
+ if (!links.length)
+ return null;
+ return (utils_1.JSX.createElement("nav", { id: "tsd-sidebar-links", class: "tsd-navigation" }, links.map(([label, url]) => (utils_1.JSX.createElement("a", { href: url, target: "_blank" }, label)))));
+}
+exports.sidebarLinks = sidebarLinks;
+function settings(context) {
+ const defaultFilters = context.options.getValue("visibilityFilters");
+ const visibilityOptions = [];
+ for (const key of Object.keys(defaultFilters)) {
+ if (key.startsWith("@")) {
+ const filterName = key
+ .substring(1)
+ .replace(/([a-z])([A-Z])/g, "$1-$2")
+ .toLowerCase();
+ visibilityOptions.push(buildFilterItem(context, filterName, (0, lib_1.camelToTitleCase)(key.substring(1)), defaultFilters[key]));
+ }
+ else if ((key === "protected" && !context.options.getValue("excludeProtected")) ||
+ (key === "private" && !context.options.getValue("excludePrivate")) ||
+ (key === "external" && !context.options.getValue("excludeExternals")) ||
+ key === "inherited") {
+ visibilityOptions.push(buildFilterItem(context, key, (0, lib_1.camelToTitleCase)(key), defaultFilters[key]));
+ }
+ }
+ // Settings panel above navigation
+ return (utils_1.JSX.createElement("div", { class: "tsd-navigation settings" },
+ utils_1.JSX.createElement("details", { class: "tsd-index-accordion", open: false },
+ utils_1.JSX.createElement("summary", { class: "tsd-accordion-summary" },
+ utils_1.JSX.createElement("h3", null,
+ context.icons.chevronDown(),
+ "Settings")),
+ utils_1.JSX.createElement("div", { class: "tsd-accordion-details" },
+ visibilityOptions.length && (utils_1.JSX.createElement("div", { class: "tsd-filter-visibility" },
+ utils_1.JSX.createElement("h4", { class: "uppercase" }, "Member Visibility"),
+ utils_1.JSX.createElement("form", null,
+ utils_1.JSX.createElement("ul", { id: "tsd-filter-options" }, ...visibilityOptions)))),
+ utils_1.JSX.createElement("div", { class: "tsd-theme-toggle" },
+ utils_1.JSX.createElement("h4", { class: "uppercase" }, "Theme"),
+ utils_1.JSX.createElement("select", { id: "tsd-theme" },
+ utils_1.JSX.createElement("option", { value: "os" }, "OS"),
+ utils_1.JSX.createElement("option", { value: "light" }, "Light"),
+ utils_1.JSX.createElement("option", { value: "dark" }, "Dark")))))));
+}
+exports.settings = settings;
+function getNavigationElements(parent, opts) {
+ if (parent instanceof models_1.ReflectionCategory) {
+ return parent.children;
+ }
+ if (parent instanceof models_1.ReflectionGroup) {
+ if (opts.includeCategories && parent.categories) {
+ return parent.categories;
+ }
+ return parent.children;
+ }
+ if (!parent.kindOf(models_1.ReflectionKind.SomeModule | models_1.ReflectionKind.Project)) {
+ return [];
+ }
+ if (parent.categories && opts.includeCategories) {
+ return parent.categories;
+ }
+ if (parent.groups && opts.includeGroups) {
+ return parent.groups;
+ }
+ return parent.children || [];
+}
+function navigation(context, props) {
+ const opts = context.options.getValue("navigation");
+ // Create the navigation for the current page
+ // Recurse to children if the parent is some kind of module
+ return (utils_1.JSX.createElement("nav", { class: "tsd-navigation" },
+ createNavElement(props.project),
+ utils_1.JSX.createElement("ul", { class: "tsd-small-nested-navigation" }, getNavigationElements(props.project, opts).map((c) => (utils_1.JSX.createElement("li", null, links(c, [])))))));
+ function links(mod, parents) {
+ const nameClasses = (0, lib_1.classNames)({ deprecated: mod instanceof models_1.Reflection && mod.isDeprecated() }, mod instanceof models_1.DeclarationReflection ? context.getReflectionClasses(mod) : void 0);
+ const children = getNavigationElements(mod, opts);
+ if (!children.length || (!opts.fullTree && mod instanceof models_1.Reflection && !inPath(mod))) {
+ return createNavElement(mod, nameClasses);
+ }
+ return (utils_1.JSX.createElement("details", { class: (0, lib_1.classNames)({ "tsd-index-accordion": true }, nameClasses), open: mod instanceof models_1.Reflection && inPath(mod), "data-key": mod instanceof models_1.Reflection ? mod.getFullName() : [...parents, mod.title].join("$") },
+ utils_1.JSX.createElement("summary", { class: "tsd-accordion-summary" },
+ context.icons.chevronDown(),
+ createNavElement(mod)),
+ utils_1.JSX.createElement("div", { class: "tsd-accordion-details" },
+ utils_1.JSX.createElement("ul", { class: "tsd-nested-navigation" }, children.map((c) => (utils_1.JSX.createElement("li", null, links(c, mod instanceof models_1.Reflection ? [mod.getFullName()] : [...parents, mod.title]))))))));
+ }
+ function createNavElement(child, nameClasses) {
+ if (child instanceof models_1.Reflection) {
+ return (utils_1.JSX.createElement("a", { href: context.urlTo(child), class: (0, lib_1.classNames)({ current: child === props.model }, nameClasses) },
+ context.icons[child.kind](),
+ utils_1.JSX.createElement("span", null, (0, lib_1.wbr)((0, lib_1.getDisplayName)(child)))));
+ }
+ return utils_1.JSX.createElement("span", null, child.title);
+ }
+ function inPath(mod) {
+ let iter = props.model;
+ do {
+ if (iter == mod)
+ return true;
+ iter = iter.parent;
+ } while (iter);
+ return false;
+ }
+}
+exports.navigation = navigation;
+function pageSidebar(context, props) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ context.settings(),
+ context.pageNavigation(props)));
+}
+exports.pageSidebar = pageSidebar;
+function pageNavigation(context, props) {
+ const levels = [[]];
+ function finalizeLevel() {
+ const built = (utils_1.JSX.createElement("ul", null, levels.pop().map((l) => (utils_1.JSX.createElement("li", null, l)))));
+ levels[levels.length - 1].push(built);
+ }
+ for (const heading of props.pageHeadings) {
+ const inferredLevel = heading.level ? heading.level + 1 : 1;
+ while (inferredLevel < levels.length) {
+ finalizeLevel();
+ }
+ if (inferredLevel > levels.length) {
+ // Lower level than before
+ levels.push([]);
+ }
+ levels[levels.length - 1].push(utils_1.JSX.createElement("a", { href: heading.link, class: heading.classes },
+ heading.kind && context.icons[heading.kind](),
+ utils_1.JSX.createElement("span", null, (0, lib_1.wbr)(heading.text))));
+ }
+ while (levels.length > 1) {
+ finalizeLevel();
+ }
+ if (!levels[0].length) {
+ return utils_1.JSX.createElement(utils_1.JSX.Fragment, null);
+ }
+ return (utils_1.JSX.createElement("details", { open: true, class: "tsd-index-accordion tsd-page-navigation" },
+ utils_1.JSX.createElement("summary", { class: "tsd-accordion-summary" },
+ utils_1.JSX.createElement("h3", null,
+ context.icons.chevronDown(),
+ "On This Page")),
+ utils_1.JSX.createElement("div", { class: "tsd-accordion-details" },
+ utils_1.JSX.createElement("ul", null, levels[0].map((l) => (utils_1.JSX.createElement("li", null, l)))))));
+}
+exports.pageNavigation = pageNavigation;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/parameter.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/parameter.d.ts
new file mode 100644
index 0000000..9b74cdd
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/parameter.d.ts
@@ -0,0 +1,4 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import { JSX } from "../../../../utils";
+import { DeclarationReflection } from "../../../../models";
+export declare const parameter: (context: DefaultThemeRenderContext, props: DeclarationReflection) => JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/parameter.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/parameter.js
new file mode 100644
index 0000000..c0b296d
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/parameter.js
@@ -0,0 +1,79 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.parameter = void 0;
+const lib_1 = require("../../lib");
+const utils_1 = require("../../../../utils");
+const models_1 = require("../../../../models");
+const parameter = (context, props) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("ul", { class: "tsd-parameters" },
+ !!props.signatures && (utils_1.JSX.createElement("li", { class: "tsd-parameter-signature" },
+ utils_1.JSX.createElement("ul", { class: (0, lib_1.classNames)({ "tsd-signatures": true }, context.getReflectionClasses(props)) }, props.signatures.map((item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("li", { class: "tsd-signature", id: item.anchor }, context.memberSignatureTitle(item, {
+ hideName: true,
+ })),
+ utils_1.JSX.createElement("li", { class: "tsd-description" }, context.memberSignatureBody(item, {
+ hideSources: true,
+ })))))))),
+ !!props.indexSignature && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("li", { class: "tsd-parameter-index-signature" },
+ utils_1.JSX.createElement("h5", null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "["),
+ props.indexSignature?.parameters?.map((item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ !!item.flags.isRest && utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "..."),
+ utils_1.JSX.createElement("span", { class: (0, lib_1.getKindClass)(item) }, item.name),
+ ": ",
+ context.type(item.type)))),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "]: "),
+ context.type(props.indexSignature.type)),
+ context.commentSummary(props.indexSignature),
+ context.commentTags(props.indexSignature),
+ props.indexSignature.type instanceof models_1.ReflectionType &&
+ context.parameter(props.indexSignature.type.declaration)))),
+ props.children?.map((item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null, item.signatures ? (utils_1.JSX.createElement("li", { class: "tsd-parameter" },
+ utils_1.JSX.createElement("h5", null,
+ !!item.flags.isRest && utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "..."),
+ utils_1.JSX.createElement("span", { class: (0, lib_1.getKindClass)(item) }, (0, lib_1.wbr)(item.name)),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" },
+ !!item.flags.isOptional && "?",
+ ":"),
+ "function"),
+ context.memberSignatures(item))) : item.type ? (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("li", { class: "tsd-parameter" },
+ utils_1.JSX.createElement("h5", null,
+ (0, lib_1.renderFlags)(item.flags, item.comment),
+ !!item.flags.isRest && utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "..."),
+ utils_1.JSX.createElement("span", { class: (0, lib_1.getKindClass)(item) }, (0, lib_1.wbr)(item.name)),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" },
+ !!item.flags.isOptional && "?",
+ ": "),
+ context.type(item.type)),
+ context.commentSummary(item),
+ context.commentTags(item),
+ !!item.children && context.parameter(item),
+ item.type instanceof models_1.ReflectionType && context.parameter(item.type.declaration)))) : (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ item.getSignature && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("li", { class: "tsd-parameter" },
+ utils_1.JSX.createElement("h5", null,
+ (0, lib_1.renderFlags)(item.getSignature.flags, item.getSignature.comment),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "get "),
+ utils_1.JSX.createElement("span", { class: (0, lib_1.getKindClass)(item) }, (0, lib_1.wbr)(item.name)),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "(): "),
+ context.type(item.getSignature.type)),
+ context.commentSummary(item.getSignature),
+ context.commentTags(item.getSignature)))),
+ item.setSignature && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("li", { class: "tsd-parameter" },
+ utils_1.JSX.createElement("h5", null,
+ (0, lib_1.renderFlags)(item.setSignature.flags, item.setSignature.comment),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "set "),
+ utils_1.JSX.createElement("span", { class: (0, lib_1.getKindClass)(item) }, (0, lib_1.wbr)(item.name)),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "("),
+ item.setSignature.parameters?.map((item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ item.name,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ": "),
+ context.type(item.type)))),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "): "),
+ context.type(item.setSignature.type)),
+ context.commentSummary(item.setSignature),
+ context.commentTags(item.setSignature))))))))))));
+exports.parameter = parameter;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/toolbar.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/toolbar.d.ts
new file mode 100644
index 0000000..11097a2
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/toolbar.d.ts
@@ -0,0 +1,5 @@
+import type { Reflection } from "../../../../models";
+import { JSX } from "../../../../utils";
+import type { PageEvent } from "../../../events";
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+export declare const toolbar: (context: DefaultThemeRenderContext, props: PageEvent<Reflection>) => JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/toolbar.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/toolbar.js
new file mode 100644
index 0000000..44c4508
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/toolbar.js
@@ -0,0 +1,20 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.toolbar = void 0;
+const utils_1 = require("../../../../utils");
+const lib_1 = require("../../lib");
+const toolbar = (context, props) => (utils_1.JSX.createElement("header", { class: "tsd-page-toolbar" },
+ utils_1.JSX.createElement("div", { class: "tsd-toolbar-contents container" },
+ utils_1.JSX.createElement("div", { class: "table-cell", id: "tsd-search", "data-base": context.relativeURL("./") },
+ utils_1.JSX.createElement("div", { class: "field" },
+ utils_1.JSX.createElement("label", { for: "tsd-search-field", class: "tsd-widget tsd-toolbar-icon search no-caption" }, context.icons.search()),
+ utils_1.JSX.createElement("input", { type: "text", id: "tsd-search-field", "aria-label": "Search" })),
+ utils_1.JSX.createElement("div", { class: "field" },
+ utils_1.JSX.createElement("div", { id: "tsd-toolbar-links" }, Object.entries(context.options.getValue("navigationLinks")).map(([label, url]) => (utils_1.JSX.createElement("a", { href: url }, label))))),
+ utils_1.JSX.createElement("ul", { class: "results" },
+ utils_1.JSX.createElement("li", { class: "state loading" }, "Preparing search index..."),
+ utils_1.JSX.createElement("li", { class: "state failure" }, "The search index is not available")),
+ utils_1.JSX.createElement("a", { href: context.options.getValue("titleLink") || context.relativeURL("index.html"), class: "title" }, (0, lib_1.getDisplayName)(props.project))),
+ utils_1.JSX.createElement("div", { class: "table-cell", id: "tsd-widgets" },
+ utils_1.JSX.createElement("a", { href: "#", class: "tsd-widget tsd-toolbar-icon menu no-caption", "data-toggle": "menu", "aria-label": "Menu" }, context.icons.menu())))));
+exports.toolbar = toolbar;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/type.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/type.d.ts
new file mode 100644
index 0000000..b64cb44
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/type.d.ts
@@ -0,0 +1,5 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import { Type } from "../../../../models";
+import { JSX } from "../../../../utils";
+export declare function validateStateIsClean(page: string): void;
+export declare function type(context: DefaultThemeRenderContext, type: Type | undefined): JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/type.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/type.js
new file mode 100644
index 0000000..16c06d8
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/type.js
@@ -0,0 +1,363 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.type = exports.validateStateIsClean = void 0;
+const models_1 = require("../../../../models");
+const utils_1 = require("../../../../utils");
+const lib_1 = require("../../lib");
+const assert_1 = require("assert");
+const EXPORTABLE = models_1.ReflectionKind.Class |
+ models_1.ReflectionKind.Interface |
+ models_1.ReflectionKind.Enum |
+ models_1.ReflectionKind.TypeAlias |
+ models_1.ReflectionKind.Function |
+ models_1.ReflectionKind.Variable;
+const nameCollisionCache = new WeakMap();
+function getNameCollisionCount(project, name) {
+ let collisions = nameCollisionCache.get(project);
+ if (collisions === undefined) {
+ collisions = {};
+ for (const reflection of project.getReflectionsByKind(EXPORTABLE)) {
+ collisions[reflection.name] = (collisions[reflection.name] ?? 0) + 1;
+ }
+ nameCollisionCache.set(project, collisions);
+ }
+ return collisions[name] ?? 0;
+}
+/**
+ * Returns a (hopefully) globally unique path for the given reflection.
+ *
+ * This only works for exportable symbols, so e.g. methods are not affected by this.
+ *
+ * If the given reflection has a globally unique name already, then it will be returned as is. If the name is
+ * ambiguous (i.e. there are two classes with the same name in different namespaces), then the namespaces path of the
+ * reflection will be returned.
+ */
+function getUniquePath(reflection) {
+ if (reflection.kindOf(EXPORTABLE)) {
+ if (getNameCollisionCount(reflection.project, reflection.name) >= 2) {
+ return getNamespacedPath(reflection);
+ }
+ }
+ return [reflection];
+}
+function getNamespacedPath(reflection) {
+ const path = [reflection];
+ let parent = reflection.parent;
+ while (parent?.kindOf(models_1.ReflectionKind.Namespace)) {
+ path.unshift(parent);
+ parent = parent.parent;
+ }
+ return path;
+}
+function renderUniquePath(context, reflection) {
+ return (0, lib_1.join)(utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "."), getUniquePath(reflection), (item) => (utils_1.JSX.createElement("a", { href: context.urlTo(item), class: "tsd-signature-type " + (0, lib_1.getKindClass)(item) }, item.name)));
+}
+let indentationDepth = 0;
+function includeIndentation() {
+ return indentationDepth > 0 ? utils_1.JSX.createElement("span", null, "\u00A0".repeat(indentationDepth * 4)) : utils_1.JSX.createElement(utils_1.JSX.Fragment, null);
+}
+function validateStateIsClean(page) {
+ (0, assert_1.ok)(indentationDepth === 0, `Rendering ${page}: Indentation depth increment/decrement not matched: ${indentationDepth}`);
+}
+exports.validateStateIsClean = validateStateIsClean;
+// The type helper accepts an optional needsParens parameter that is checked
+// if an inner type may result in invalid output without them. For example:
+// 1 | 2[] !== (1 | 2)[]
+// () => 1 | 2 !== (() => 1) | 2
+const typeRenderers = {
+ array(context, type) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ renderType(context, type.elementType, models_1.TypeContext.arrayElement),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "[]")));
+ },
+ conditional(context, type) {
+ indentationDepth++;
+ const parts = [
+ renderType(context, type.checkType, models_1.TypeContext.conditionalCheck),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, " extends "),
+ renderType(context, type.extendsType, models_1.TypeContext.conditionalExtends),
+ utils_1.JSX.createElement("br", null),
+ includeIndentation(),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "? "),
+ renderType(context, type.trueType, models_1.TypeContext.conditionalTrue),
+ utils_1.JSX.createElement("br", null),
+ includeIndentation(),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ": "),
+ renderType(context, type.falseType, models_1.TypeContext.conditionalFalse),
+ ];
+ indentationDepth--;
+ return utils_1.JSX.createElement(utils_1.JSX.Fragment, null, parts);
+ },
+ indexedAccess(context, type) {
+ let indexType = renderType(context, type.indexType, models_1.TypeContext.indexedIndex);
+ if (type.objectType instanceof models_1.ReferenceType &&
+ type.objectType.reflection &&
+ type.indexType instanceof models_1.LiteralType &&
+ typeof type.indexType.value === "string") {
+ const childReflection = type.objectType.reflection.getChildByName([type.indexType.value]);
+ if (childReflection) {
+ indexType = utils_1.JSX.createElement("a", { href: context.urlTo(childReflection) }, indexType);
+ }
+ }
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ renderType(context, type.objectType, models_1.TypeContext.indexedObject),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "["),
+ indexType,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "]")));
+ },
+ inferred(context, type) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "infer "),
+ " ",
+ utils_1.JSX.createElement("span", { class: "tsd-kind-type-parameter" }, type.name),
+ type.constraint && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, " extends "),
+ renderType(context, type.constraint, models_1.TypeContext.inferredConstraint)))));
+ },
+ intersection(context, type) {
+ return (0, lib_1.join)(utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, " & "), type.types, (item) => renderType(context, item, models_1.TypeContext.intersectionElement));
+ },
+ intrinsic(_context, type) {
+ return utils_1.JSX.createElement("span", { class: "tsd-signature-type" }, type.name);
+ },
+ literal(_context, type) {
+ return utils_1.JSX.createElement("span", { class: "tsd-signature-type" }, (0, lib_1.stringify)(type.value));
+ },
+ mapped(context, type) {
+ indentationDepth++;
+ const parts = [utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "{"), utils_1.JSX.createElement("br", null), includeIndentation()];
+ switch (type.readonlyModifier) {
+ case "+":
+ parts.push(utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "readonly "));
+ break;
+ case "-":
+ parts.push(utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "-readonly "));
+ break;
+ }
+ parts.push(utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "["), utils_1.JSX.createElement("span", { class: "tsd-kind-type-parameter" }, type.parameter), utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, " in "), renderType(context, type.parameterType, models_1.TypeContext.mappedParameter));
+ if (type.nameType) {
+ parts.push(utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, " as "), renderType(context, type.nameType, models_1.TypeContext.mappedName));
+ }
+ parts.push(utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "]"));
+ switch (type.optionalModifier) {
+ case "+":
+ parts.push(utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "?: "));
+ break;
+ case "-":
+ parts.push(utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "-?: "));
+ break;
+ default:
+ parts.push(utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ": "));
+ }
+ parts.push(renderType(context, type.templateType, models_1.TypeContext.mappedTemplate));
+ indentationDepth--;
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ parts,
+ utils_1.JSX.createElement("br", null),
+ includeIndentation(),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "}")));
+ },
+ namedTupleMember(context, type) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ type.name,
+ type.isOptional ? (utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "?: ")) : (utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ": ")),
+ renderType(context, type.element, models_1.TypeContext.tupleElement)));
+ },
+ optional(context, type) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ renderType(context, type.elementType, models_1.TypeContext.optionalElement),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "?")));
+ },
+ predicate(context, type) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ !!type.asserts && utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "asserts "),
+ utils_1.JSX.createElement("span", { class: "tsd-kind-parameter" }, type.name),
+ !!type.targetType && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, " is "),
+ renderType(context, type.targetType, models_1.TypeContext.predicateTarget)))));
+ },
+ query(context, type) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "typeof "),
+ renderType(context, type.queryType, models_1.TypeContext.queryTypeTarget)));
+ },
+ reference(context, type) {
+ const reflection = type.reflection;
+ let name;
+ if (reflection) {
+ if (reflection.kindOf(models_1.ReflectionKind.TypeParameter)) {
+ // Don't generate a link as it will always point to this page.
+ name = utils_1.JSX.createElement("span", { class: "tsd-signature-type tsd-kind-type-parameter" }, reflection.name);
+ }
+ else {
+ name = renderUniquePath(context, reflection);
+ }
+ }
+ else if (type.externalUrl) {
+ name = (utils_1.JSX.createElement("a", { href: type.externalUrl, class: "tsd-signature-type external", target: "_blank" }, type.name));
+ }
+ else if (type.refersToTypeParameter) {
+ name = utils_1.JSX.createElement("span", { class: "tsd-signature-type tsd-kind-type-parameter" }, type.name);
+ }
+ else {
+ name = utils_1.JSX.createElement("span", { class: "tsd-signature-type " }, type.name);
+ }
+ if (type.typeArguments?.length) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ name,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "<"),
+ (0, lib_1.join)(utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ", "), type.typeArguments, (item) => renderType(context, item, models_1.TypeContext.referenceTypeArgument)),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ">")));
+ }
+ return name;
+ },
+ reflection(context, type) {
+ const members = [];
+ const children = type.declaration.children || [];
+ indentationDepth++;
+ for (const item of children) {
+ if (item.getSignature && item.setSignature) {
+ members.push(utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: (0, lib_1.getKindClass)(item) }, item.name),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ": "),
+ renderType(context, item.getSignature.type, models_1.TypeContext.none)));
+ continue;
+ }
+ if (item.getSignature) {
+ members.push(utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "get "),
+ utils_1.JSX.createElement("span", { class: (0, lib_1.getKindClass)(item.getSignature) }, item.name),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "(): "),
+ renderType(context, item.getSignature.type, models_1.TypeContext.none)));
+ continue;
+ }
+ if (item.setSignature) {
+ members.push(utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "set "),
+ utils_1.JSX.createElement("span", { class: (0, lib_1.getKindClass)(item.setSignature) }, item.name),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "("),
+ item.setSignature.parameters?.map((item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ item.name,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ": "),
+ renderType(context, item.type, models_1.TypeContext.none)))),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ")")));
+ continue;
+ }
+ if (item.signatures) {
+ for (const sig of item.signatures) {
+ members.push(utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: (0, lib_1.getKindClass)(sig) }, item.name),
+ item.flags.isOptional && utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "?"),
+ context.memberSignatureTitle(sig, {
+ hideName: true,
+ arrowStyle: true,
+ })));
+ }
+ continue;
+ }
+ members.push(utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: (0, lib_1.getKindClass)(item) }, item.name),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, item.flags.isOptional ? "?: " : ": "),
+ renderType(context, item.type, models_1.TypeContext.none)));
+ }
+ if (type.declaration.indexSignature) {
+ const index = type.declaration.indexSignature;
+ members.push(utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ "[",
+ utils_1.JSX.createElement("span", { class: (0, lib_1.getKindClass)(type.declaration.indexSignature) }, index.parameters[0].name),
+ ":",
+ " ",
+ renderType(context, index.parameters[0].type, models_1.TypeContext.none),
+ "]",
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ": "),
+ renderType(context, index.type, models_1.TypeContext.none)));
+ }
+ if (!members.length && type.declaration.signatures?.length === 1) {
+ indentationDepth--;
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "("),
+ context.memberSignatureTitle(type.declaration.signatures[0], {
+ hideName: true,
+ arrowStyle: true,
+ }),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ")")));
+ }
+ for (const item of type.declaration.signatures || []) {
+ members.push(context.memberSignatureTitle(item, { hideName: true }));
+ }
+ if (members.length) {
+ const membersWithSeparators = members.flatMap((m) => [
+ includeIndentation(),
+ m,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "; "),
+ utils_1.JSX.createElement("br", null),
+ ]);
+ membersWithSeparators.pop();
+ indentationDepth--;
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" },
+ "{",
+ " "),
+ utils_1.JSX.createElement("br", null),
+ membersWithSeparators,
+ utils_1.JSX.createElement("br", null),
+ includeIndentation(),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "}")));
+ }
+ indentationDepth--;
+ return utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "{}");
+ },
+ rest(context, type) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "..."),
+ renderType(context, type.elementType, models_1.TypeContext.restElement)));
+ },
+ templateLiteral(context, type) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "`"),
+ type.head && utils_1.JSX.createElement("span", { class: "tsd-signature-type" }, type.head),
+ type.tail.map((item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "${"),
+ renderType(context, item[0], models_1.TypeContext.templateLiteralElement),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "}"),
+ item[1] && utils_1.JSX.createElement("span", { class: "tsd-signature-type" }, item[1])))),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "`")));
+ },
+ tuple(context, type) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "["),
+ (0, lib_1.join)(utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ", "), type.elements, (item) => renderType(context, item, models_1.TypeContext.tupleElement)),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "]")));
+ },
+ typeOperator(context, type) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" },
+ type.operator,
+ " "),
+ renderType(context, type.target, models_1.TypeContext.typeOperatorTarget)));
+ },
+ union(context, type) {
+ return (0, lib_1.join)(utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, " | "), type.types, (item) => renderType(context, item, models_1.TypeContext.unionElement));
+ },
+ unknown(_context, type) {
+ return utils_1.JSX.createElement(utils_1.JSX.Fragment, null, type.name);
+ },
+};
+function renderType(context, type, where) {
+ if (!type) {
+ return utils_1.JSX.createElement("span", { class: "tsd-signature-type" }, "any");
+ }
+ const renderFn = typeRenderers[type.type];
+ const rendered = renderFn(context, type);
+ if (type.needsParenthesis(where)) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "("),
+ rendered,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ")")));
+ }
+ return rendered;
+}
+function type(context, type) {
+ return renderType(context, type, models_1.TypeContext.none);
+}
+exports.type = type;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/typeAndParent.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/typeAndParent.d.ts
new file mode 100644
index 0000000..3d1e072
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/typeAndParent.d.ts
@@ -0,0 +1,4 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import { Type } from "../../../../models";
+import { JSX } from "../../../../utils";
+export declare const typeAndParent: (context: DefaultThemeRenderContext, props: Type) => JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/typeAndParent.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/typeAndParent.js
new file mode 100644
index 0000000..69995f7
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/typeAndParent.js
@@ -0,0 +1,24 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.typeAndParent = void 0;
+const models_1 = require("../../../../models");
+const utils_1 = require("../../../../utils");
+const typeAndParent = (context, props) => {
+ if (!props)
+ return utils_1.JSX.createElement(utils_1.JSX.Fragment, null, "void");
+ if (props instanceof models_1.ArrayType) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ context.typeAndParent(props.elementType),
+ "[]"));
+ }
+ if (props instanceof models_1.ReferenceType && props.reflection) {
+ const refl = props.reflection instanceof models_1.SignatureReflection ? props.reflection.parent : props.reflection;
+ const parent = refl?.parent;
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ parent?.url ? utils_1.JSX.createElement("a", { href: context.urlTo(parent) }, parent.name) : parent?.name,
+ ".",
+ refl?.url ? utils_1.JSX.createElement("a", { href: context.urlTo(refl) }, refl.name) : refl?.name));
+ }
+ return utils_1.JSX.createElement(utils_1.JSX.Fragment, null, props.toString());
+};
+exports.typeAndParent = typeAndParent;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/typeParameters.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/partials/typeParameters.d.ts
new file mode 100644
index 0000000..5da39b2
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/typeParameters.d.ts
@@ -0,0 +1,4 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import type { TypeParameterReflection } from "../../../../models";
+import { JSX } from "../../../../utils";
+export declare function typeParameters(context: DefaultThemeRenderContext, typeParameters: TypeParameterReflection[]): JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/partials/typeParameters.js b/node_modules/typedoc/dist/lib/output/themes/default/partials/typeParameters.js
new file mode 100644
index 0000000..3f257b1
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/partials/typeParameters.js
@@ -0,0 +1,23 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.typeParameters = void 0;
+const utils_1 = require("../../../../utils");
+function typeParameters(context, typeParameters) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("section", { class: "tsd-panel" },
+ utils_1.JSX.createElement("h4", null, "Type Parameters"),
+ utils_1.JSX.createElement("ul", { class: "tsd-type-parameter-list" }, typeParameters?.map((item) => (utils_1.JSX.createElement("li", null,
+ utils_1.JSX.createElement("h4", null,
+ item.flags.isConst && "const ",
+ item.varianceModifier ? `${item.varianceModifier} ` : "",
+ utils_1.JSX.createElement("span", { class: "tsd-kind-type-parameter" }, item.name),
+ !!item.type && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, " extends "),
+ context.type(item.type))),
+ !!item.default && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ " = ",
+ context.type(item.default)))),
+ context.commentSummary(item),
+ context.commentTags(item))))))));
+}
+exports.typeParameters = typeParameters;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/templates/index.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/templates/index.d.ts
new file mode 100644
index 0000000..b5e9f0b
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/templates/index.d.ts
@@ -0,0 +1,5 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import type { ProjectReflection } from "../../../../models";
+import type { PageEvent } from "../../../events";
+import { JSX } from "../../../../utils";
+export declare const indexTemplate: ({ markdown }: DefaultThemeRenderContext, props: PageEvent<ProjectReflection>) => JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/templates/index.js b/node_modules/typedoc/dist/lib/output/themes/default/templates/index.js
new file mode 100644
index 0000000..c4c6e76
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/templates/index.js
@@ -0,0 +1,7 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.indexTemplate = void 0;
+const utils_1 = require("../../../../utils");
+const indexTemplate = ({ markdown }, props) => (utils_1.JSX.createElement("div", { class: "tsd-panel tsd-typography" },
+ utils_1.JSX.createElement(utils_1.Raw, { html: markdown(props.model.readme || []) })));
+exports.indexTemplate = indexTemplate;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/templates/reflection.d.ts b/node_modules/typedoc/dist/lib/output/themes/default/templates/reflection.d.ts
new file mode 100644
index 0000000..7750698
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/templates/reflection.d.ts
@@ -0,0 +1,5 @@
+import type { DefaultThemeRenderContext } from "../DefaultThemeRenderContext";
+import type { PageEvent } from "../../../events";
+import { ContainerReflection } from "../../../../models";
+import { JSX } from "../../../../utils";
+export declare function reflectionTemplate(context: DefaultThemeRenderContext, props: PageEvent<ContainerReflection>): JSX.Element;
diff --git a/node_modules/typedoc/dist/lib/output/themes/default/templates/reflection.js b/node_modules/typedoc/dist/lib/output/themes/default/templates/reflection.js
new file mode 100644
index 0000000..8e13e14
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/default/templates/reflection.js
@@ -0,0 +1,51 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.reflectionTemplate = void 0;
+const lib_1 = require("../../lib");
+const models_1 = require("../../../../models");
+const utils_1 = require("../../../../utils");
+function reflectionTemplate(context, props) {
+ if ([models_1.ReflectionKind.TypeAlias, models_1.ReflectionKind.Variable].includes(props.model.kind) &&
+ props.model instanceof models_1.DeclarationReflection) {
+ return context.memberDeclaration(props.model);
+ }
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ props.model.hasComment() && (utils_1.JSX.createElement("section", { class: "tsd-panel tsd-comment" },
+ context.commentSummary(props.model),
+ context.commentTags(props.model))),
+ props.model instanceof models_1.DeclarationReflection &&
+ props.model.kind === models_1.ReflectionKind.Module &&
+ props.model.readme?.length && (utils_1.JSX.createElement("section", { class: "tsd-panel tsd-typography" },
+ utils_1.JSX.createElement(utils_1.Raw, { html: context.markdown(props.model.readme) }))),
+ (0, lib_1.hasTypeParameters)(props.model) && utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ " ",
+ context.typeParameters(props.model.typeParameters),
+ " "),
+ props.model instanceof models_1.DeclarationReflection && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ context.hierarchy(props.model.typeHierarchy),
+ !!props.model.implementedTypes && (utils_1.JSX.createElement("section", { class: "tsd-panel" },
+ utils_1.JSX.createElement("h4", null, "Implements"),
+ utils_1.JSX.createElement("ul", { class: "tsd-hierarchy" }, props.model.implementedTypes.map((item) => (utils_1.JSX.createElement("li", null, context.type(item))))))),
+ !!props.model.implementedBy && (utils_1.JSX.createElement("section", { class: "tsd-panel" },
+ utils_1.JSX.createElement("h4", null, "Implemented by"),
+ utils_1.JSX.createElement("ul", { class: "tsd-hierarchy" }, props.model.implementedBy.map((item) => (utils_1.JSX.createElement("li", null, context.type(item))))))),
+ !!props.model.signatures && (utils_1.JSX.createElement("section", { class: "tsd-panel" }, context.memberSignatures(props.model))),
+ !!props.model.indexSignature && (utils_1.JSX.createElement("section", { class: (0, lib_1.classNames)({ "tsd-panel": true }, context.getReflectionClasses(props.model)) },
+ utils_1.JSX.createElement("h4", { class: "tsd-before-signature" }, "Indexable"),
+ utils_1.JSX.createElement("div", { class: "tsd-signature" },
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "["),
+ props.model.indexSignature.parameters.map((item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ item.name,
+ ": ",
+ context.type(item.type)))),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "]: "),
+ context.type(props.model.indexSignature.type)),
+ context.commentSummary(props.model.indexSignature),
+ context.commentTags(props.model.indexSignature),
+ props.model.indexSignature?.type instanceof models_1.ReflectionType &&
+ context.parameter(props.model.indexSignature.type.declaration))),
+ !props.model.signatures && context.memberSources(props.model))),
+ !!props.model.children?.length && context.index(props.model),
+ context.members(props.model)));
+}
+exports.reflectionTemplate = reflectionTemplate;
diff --git a/node_modules/typedoc/dist/lib/output/themes/lib.d.ts b/node_modules/typedoc/dist/lib/output/themes/lib.d.ts
new file mode 100644
index 0000000..62bab26
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/lib.d.ts
@@ -0,0 +1,28 @@
+import type { DefaultThemeRenderContext } from "..";
+import { Comment, Reflection, ReflectionFlags, TypeParameterReflection } from "../../models";
+import { JSX } from "../../utils";
+export declare function stringify(data: unknown): string;
+export declare function getDisplayName(refl: Reflection): string;
+export declare function toStyleClass(str: string): string;
+export declare function getKindClass(refl: Reflection): string;
+/**
+ * Insert word break tags ``<wbr>`` into the given string.
+ *
+ * Breaks the given string at ``_``, ``-`` and capital letters.
+ *
+ * @param str The string that should be split.
+ * @return The original string containing ``<wbr>`` tags where possible.
+ */
+export declare function wbr(str: string): (string | JSX.Element)[];
+export declare function join<T>(joiner: JSX.Children, list: readonly T[], cb: (x: T) => JSX.Children): JSX.Element;
+export declare function renderFlags(flags: ReflectionFlags, comment: Comment | undefined): JSX.Element;
+export declare function classNames(names: Record<string, boolean | null | undefined>, extraCss?: string): string | undefined;
+export declare function hasTypeParameters(reflection: Reflection): reflection is Reflection & {
+ typeParameters: TypeParameterReflection[];
+};
+export declare function renderTypeParametersSignature(context: DefaultThemeRenderContext, typeParameters: readonly TypeParameterReflection[] | undefined): JSX.Element;
+export declare function camelToTitleCase(text: string): string;
+/**
+ * Renders the reflection name with an additional `?` if optional.
+ */
+export declare function renderName(refl: Reflection): JSX.Element | (string | JSX.Element)[];
diff --git a/node_modules/typedoc/dist/lib/output/themes/lib.js b/node_modules/typedoc/dist/lib/output/themes/lib.js
new file mode 100644
index 0000000..3b88e52
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/output/themes/lib.js
@@ -0,0 +1,134 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.renderName = exports.camelToTitleCase = exports.renderTypeParametersSignature = exports.hasTypeParameters = exports.classNames = exports.renderFlags = exports.join = exports.wbr = exports.getKindClass = exports.toStyleClass = exports.getDisplayName = exports.stringify = void 0;
+const models_1 = require("../../models");
+const utils_1 = require("../../utils");
+function stringify(data) {
+ if (typeof data === "bigint") {
+ return data.toString() + "n";
+ }
+ return JSON.stringify(data);
+}
+exports.stringify = stringify;
+function getDisplayName(refl) {
+ let version = "";
+ if ((refl instanceof models_1.DeclarationReflection || refl instanceof models_1.ProjectReflection) && refl.packageVersion) {
+ version = ` - v${refl.packageVersion}`;
+ }
+ return `${refl.name}${version}`;
+}
+exports.getDisplayName = getDisplayName;
+function toStyleClass(str) {
+ return str.replace(/(\w)([A-Z])/g, (_m, m1, m2) => m1 + "-" + m2).toLowerCase();
+}
+exports.toStyleClass = toStyleClass;
+function getKindClass(refl) {
+ if (refl instanceof models_1.ReferenceReflection) {
+ return getKindClass(refl.getTargetReflectionDeep());
+ }
+ return models_1.ReflectionKind.classString(refl.kind);
+}
+exports.getKindClass = getKindClass;
+/**
+ * Insert word break tags ``<wbr>`` into the given string.
+ *
+ * Breaks the given string at ``_``, ``-`` and capital letters.
+ *
+ * @param str The string that should be split.
+ * @return The original string containing ``<wbr>`` tags where possible.
+ */
+function wbr(str) {
+ // TODO surely there is a better way to do this, but I'm tired.
+ const ret = [];
+ const re = /[\s\S]*?(?:[^_-][_-](?=[^_-])|[^A-Z](?=[A-Z][^A-Z]))/g;
+ let match;
+ let i = 0;
+ while ((match = re.exec(str))) {
+ ret.push(match[0], utils_1.JSX.createElement("wbr", null));
+ i += match[0].length;
+ }
+ ret.push(str.slice(i));
+ return ret;
+}
+exports.wbr = wbr;
+function join(joiner, list, cb) {
+ const result = [];
+ for (const item of list) {
+ if (result.length > 0) {
+ result.push(joiner);
+ }
+ result.push(cb(item));
+ }
+ return utils_1.JSX.createElement(utils_1.JSX.Fragment, null, result);
+}
+exports.join = join;
+function renderFlags(flags, comment) {
+ const allFlags = [...flags];
+ if (comment) {
+ allFlags.push(...Array.from(comment.modifierTags, (tag) => tag.replace(/@([a-z])/, (x) => x[1].toUpperCase())));
+ }
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null, allFlags.map((item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("code", { class: "tsd-tag ts-flag" + item }, item),
+ " ")))));
+}
+exports.renderFlags = renderFlags;
+function classNames(names, extraCss) {
+ const css = Object.keys(names)
+ .filter((key) => names[key])
+ .concat(extraCss || "")
+ .join(" ")
+ .trim()
+ .replace(/\s+/g, " ");
+ return css.length ? css : undefined;
+}
+exports.classNames = classNames;
+function hasTypeParameters(reflection) {
+ return ((reflection instanceof models_1.DeclarationReflection || reflection instanceof models_1.SignatureReflection) &&
+ reflection.typeParameters != null &&
+ reflection.typeParameters.length > 0);
+}
+exports.hasTypeParameters = hasTypeParameters;
+function renderTypeParametersSignature(context, typeParameters) {
+ if (!typeParameters || typeParameters.length === 0)
+ return utils_1.JSX.createElement(utils_1.JSX.Fragment, null);
+ const hideParamTypes = context.options.getValue("hideParameterTypesInTitle");
+ if (hideParamTypes) {
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "<"),
+ join(utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ", "), typeParameters, (item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ item.flags.isConst && "const ",
+ item.varianceModifier ? `${item.varianceModifier} ` : "",
+ utils_1.JSX.createElement("span", { class: "tsd-signature-type tsd-kind-type-parameter" }, item.name)))),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ">")));
+ }
+ return (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, "<"),
+ join(utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ", "), typeParameters, (item) => (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ item.flags.isConst && "const ",
+ item.varianceModifier ? `${item.varianceModifier} ` : "",
+ utils_1.JSX.createElement("span", { class: "tsd-signature-type tsd-kind-type-parameter" }, item.name),
+ !!item.type && (utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, " extends "),
+ context.type(item.type)))))),
+ utils_1.JSX.createElement("span", { class: "tsd-signature-symbol" }, ">")));
+}
+exports.renderTypeParametersSignature = renderTypeParametersSignature;
+function camelToTitleCase(text) {
+ return text.substring(0, 1).toUpperCase() + text.substring(1).replace(/[a-z][A-Z]/g, (x) => `${x[0]} ${x[1]}`);
+}
+exports.camelToTitleCase = camelToTitleCase;
+/**
+ * Renders the reflection name with an additional `?` if optional.
+ */
+function renderName(refl) {
+ if (!refl.name) {
+ return utils_1.JSX.createElement("em", null, wbr(models_1.ReflectionKind.singularString(refl.kind)));
+ }
+ if (refl.flags.isOptional) {
+ return utils_1.JSX.createElement(utils_1.JSX.Fragment, null,
+ wbr(refl.name),
+ "?");
+ }
+ return wbr(refl.name);
+}
+exports.renderName = renderName;
diff --git a/node_modules/typedoc/dist/lib/serialization/components.d.ts b/node_modules/typedoc/dist/lib/serialization/components.d.ts
new file mode 100644
index 0000000..e07052f
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/serialization/components.d.ts
@@ -0,0 +1,25 @@
+import type { Serializer } from "./serializer";
+import type { ModelToObject } from "./schema";
+/**
+ * Represents Serializer plugin component.
+ *
+ * Like {@link Converter} plugins each {@link Serializer} plugin defines a predicate that instructs if an
+ * object can be serialized by it. This is done dynamically at runtime via a `supports` method.
+ *
+ * Additionally, each {@link Serializer} plugin must define a predicate that instructs the group
+ * it belongs to.
+ */
+export interface SerializerComponent<T> {
+ /**
+ * The priority this serializer should be executed with.
+ * A higher priority means the {@link Serializer} will be applied earlier.
+ */
+ readonly priority: number;
+ /**
+ * Technically this should return `item is T`, but that doesn't play nicely
+ * with inference, so allow the looser `boolean` return type.
+ * @param item
+ */
+ supports(item: unknown): boolean;
+ toObject(item: T, obj: Partial<ModelToObject<T>>, serializer: Serializer): Partial<ModelToObject<T>>;
+}
diff --git a/node_modules/typedoc/dist/lib/serialization/components.js b/node_modules/typedoc/dist/lib/serialization/components.js
new file mode 100644
index 0000000..c8ad2e5
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/serialization/components.js
@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/node_modules/typedoc/dist/lib/serialization/deserializer.d.ts b/node_modules/typedoc/dist/lib/serialization/deserializer.d.ts
new file mode 100644
index 0000000..a40b869
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/serialization/deserializer.d.ts
@@ -0,0 +1,54 @@
+import type { Application } from "../application";
+import { ProjectReflection, ReflectionVariant, TypeKindMap } from "../models/index";
+import type { Logger } from "../utils/loggers";
+import type { JSONOutput } from "./index";
+export interface DeserializerComponent {
+ priority: number;
+ supports(model: unknown, obj: unknown): boolean;
+ fromObject(model: unknown, obj: unknown): void;
+}
+export interface Deserializable<T> {
+ fromObject(d: Deserializer, o: T): void;
+}
+export declare class Deserializer {
+ private app;
+ private deferred;
+ private deserializers;
+ private activeReflection;
+ constructor(app: Application);
+ get logger(): Logger;
+ reflectionBuilders: {
+ [K in keyof ReflectionVariant]: (parent: NonNullable<ReflectionVariant[K]["parent"]>, obj: JSONOutput.ModelToObject<ReflectionVariant[K]>) => ReflectionVariant[K];
+ };
+ typeBuilders: {
+ [K in keyof TypeKindMap]: (obj: JSONOutput.ModelToObject<TypeKindMap[K]>, de: Deserializer) => TypeKindMap[K];
+ };
+ oldIdToNewId: Record<number, number | undefined>;
+ project: ProjectReflection | undefined;
+ addDeserializer(de: DeserializerComponent): void;
+ /**
+ * Revive a single project into the structure it was originally created with.
+ * This is generally not appropriate for merging multiple projects since projects may
+ * contain reflections in their root, not inside a module.
+ */
+ reviveProject(projectObj: JSONOutput.ProjectReflection, name?: string): ProjectReflection;
+ reviveProjects(name: string, projects: readonly JSONOutput.ProjectReflection[]): ProjectReflection;
+ revive<T, U extends Deserializable<T>>(source: NonNullable<T>, creator: (obj: T) => U): U;
+ revive<T, U extends Deserializable<T>>(source: T | undefined, creator: (obj: T) => U): U | undefined;
+ reviveMany<T, U extends Deserializable<T>>(sourceArray: T[], creator: (obj: T) => U): U[];
+ reviveMany<T, U extends Deserializable<T>>(sourceArray: T[] | undefined, creator: (obj: T) => U): U[] | undefined;
+ reviveType<T extends JSONOutput.SomeType>(obj: T): TypeKindMap[T["type"]];
+ reviveType<T extends JSONOutput.SomeType>(obj: T | undefined): TypeKindMap[T["type"]] | undefined;
+ constructReflection<T extends JSONOutput.SomeReflection>(obj: T): ReflectionVariant[T["variant"]];
+ constructType<T extends JSONOutput.SomeType>(obj: T): TypeKindMap[T["type"]];
+ fromObject<T>(receiver: {
+ fromObject(d: Deserializer, o: T): void;
+ }, obj: T): void;
+ /**
+ * Defers work until the initial pass of serialization has been completed.
+ * This can be used to set up references which cannot be immediately restored.
+ *
+ * May only be called when deserializing.
+ */
+ defer(cb: (project: ProjectReflection) => void): void;
+}
diff --git a/node_modules/typedoc/dist/lib/serialization/deserializer.js b/node_modules/typedoc/dist/lib/serialization/deserializer.js
new file mode 100644
index 0000000..32c421c
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/serialization/deserializer.js
@@ -0,0 +1,212 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Deserializer = void 0;
+const assert_1 = require("assert");
+const index_1 = require("../models/index");
+const array_1 = require("../utils/array");
+class Deserializer {
+ constructor(app) {
+ this.app = app;
+ this.deferred = [];
+ this.deserializers = [];
+ this.activeReflection = [];
+ this.reflectionBuilders = {
+ declaration(parent, obj) {
+ return new index_1.DeclarationReflection(obj.name, obj.kind, parent);
+ },
+ param(parent, obj) {
+ return new index_1.ParameterReflection(obj.name, obj.kind, parent);
+ },
+ project() {
+ throw new Error("Not supported, use Deserializer.reviveProject(s) instead.");
+ },
+ reference(parent, obj) {
+ // Ugly, but we don't have a reference yet!
+ return new index_1.ReferenceReflection(obj.name,
+ /* target */ parent, parent);
+ },
+ signature(parent, obj) {
+ return new index_1.SignatureReflection(obj.name, obj.kind, parent);
+ },
+ typeParam(parent, obj) {
+ return new index_1.TypeParameterReflection(obj.name, parent, void 0);
+ },
+ };
+ this.typeBuilders = {
+ array(obj, de) {
+ return new index_1.ArrayType(de.reviveType(obj.elementType));
+ },
+ conditional(obj, de) {
+ return new index_1.ConditionalType(de.reviveType(obj.checkType), de.reviveType(obj.extendsType), de.reviveType(obj.trueType), de.reviveType(obj.falseType));
+ },
+ indexedAccess(obj, de) {
+ return new index_1.IndexedAccessType(de.reviveType(obj.objectType), de.reviveType(obj.indexType));
+ },
+ inferred(obj, de) {
+ return new index_1.InferredType(obj.name, de.reviveType(obj.constraint));
+ },
+ intersection(obj, de) {
+ return new index_1.IntersectionType(obj.types.map((t) => de.reviveType(t)));
+ },
+ intrinsic(obj) {
+ return new index_1.IntrinsicType(obj.name);
+ },
+ literal(obj) {
+ if (obj.value && typeof obj.value === "object") {
+ return new index_1.LiteralType(BigInt(`${obj.value.negative ? "-" : ""}${obj.value.value}`));
+ }
+ return new index_1.LiteralType(obj.value);
+ },
+ mapped(obj, de) {
+ return new index_1.MappedType(obj.parameter, de.reviveType(obj.parameterType), de.reviveType(obj.templateType), obj.readonlyModifier, obj.optionalModifier, de.reviveType(obj.nameType));
+ },
+ optional(obj, de) {
+ return new index_1.OptionalType(de.reviveType(obj.elementType));
+ },
+ predicate(obj, de) {
+ return new index_1.PredicateType(obj.name, obj.asserts, de.reviveType(obj.targetType));
+ },
+ query(obj, de) {
+ return new index_1.QueryType(de.reviveType(obj.queryType));
+ },
+ reference(obj) {
+ // Correct reference will be restored in fromObject
+ return index_1.ReferenceType.createResolvedReference(obj.name, -2, null);
+ },
+ reflection(obj, de) {
+ return new index_1.ReflectionType(de.revive(obj.declaration, (o) => de.constructReflection(o)));
+ },
+ rest(obj, de) {
+ return new index_1.RestType(de.reviveType(obj.elementType));
+ },
+ templateLiteral(obj, de) {
+ return new index_1.TemplateLiteralType(obj.head, obj.tail.map(([t, s]) => [de.reviveType(t), s]));
+ },
+ tuple(obj, de) {
+ return new index_1.TupleType(obj.elements?.map((t) => de.reviveType(t)) || []);
+ },
+ namedTupleMember(obj, de) {
+ return new index_1.NamedTupleMember(obj.name, obj.isOptional, de.reviveType(obj.element));
+ },
+ typeOperator(obj, de) {
+ return new index_1.TypeOperatorType(de.reviveType(obj.target), obj.operator);
+ },
+ union(obj, de) {
+ return new index_1.UnionType(obj.types.map((t) => de.reviveType(t)));
+ },
+ unknown(obj) {
+ return new index_1.UnknownType(obj.name);
+ },
+ };
+ this.oldIdToNewId = {};
+ }
+ get logger() {
+ return this.app.logger;
+ }
+ addDeserializer(de) {
+ (0, array_1.insertPrioritySorted)(this.deserializers, de);
+ }
+ /**
+ * Revive a single project into the structure it was originally created with.
+ * This is generally not appropriate for merging multiple projects since projects may
+ * contain reflections in their root, not inside a module.
+ */
+ reviveProject(projectObj, name) {
+ (0, assert_1.ok)(this.deferred.length === 0, "Deserializer.defer was called when not deserializing");
+ const project = new index_1.ProjectReflection(name || projectObj.name);
+ project.registerReflection(project);
+ this.project = project;
+ this.oldIdToNewId = { [projectObj.id]: project.id };
+ this.fromObject(project, projectObj);
+ const deferred = this.deferred;
+ this.deferred = [];
+ for (const def of deferred) {
+ def(project);
+ }
+ (0, assert_1.ok)(this.deferred.length === 0, "Work may not be double deferred when deserializing.");
+ (0, assert_1.ok)(this.activeReflection.length === 0, "Imbalanced reflection deserialization");
+ this.project = undefined;
+ this.oldIdToNewId = {};
+ return project;
+ }
+ reviveProjects(name, projects) {
+ if (projects.length === 1) {
+ return this.reviveProject(projects[0], name);
+ }
+ const project = new index_1.ProjectReflection(name);
+ project.children = [];
+ this.project = project;
+ for (const proj of projects) {
+ (0, assert_1.ok)(this.deferred.length === 0, "Deserializer.defer was called when not deserializing");
+ const projModule = new index_1.DeclarationReflection(proj.name, index_1.ReflectionKind.Module, project);
+ project.registerReflection(projModule);
+ project.children.push(projModule);
+ this.oldIdToNewId = { [proj.id]: projModule.id };
+ this.fromObject(projModule, proj);
+ const deferred = this.deferred;
+ this.deferred = [];
+ for (const def of deferred) {
+ def(project);
+ }
+ (0, assert_1.ok)(this.deferred.length === 0, "Work may not be double deferred when deserializing.");
+ (0, assert_1.ok)(this.activeReflection.length === 0, "Imbalanced reflection deserialization");
+ }
+ this.oldIdToNewId = {};
+ this.project = undefined;
+ return project;
+ }
+ revive(source, creator) {
+ if (source) {
+ const revived = creator(source);
+ this.fromObject(revived, source);
+ return revived;
+ }
+ }
+ reviveMany(sourceArray, creator) {
+ if (sourceArray) {
+ return sourceArray.map((item) => {
+ const revived = creator(item);
+ this.fromObject(revived, item);
+ return revived;
+ });
+ }
+ }
+ reviveType(obj) {
+ return this.revive(obj, (o) => this.constructType(o));
+ }
+ constructReflection(obj) {
+ (0, assert_1.ok)(this.activeReflection.length > 0);
+ const result = this.reflectionBuilders[obj.variant](this.activeReflection[this.activeReflection.length - 1], obj);
+ this.oldIdToNewId[obj.id] = result.id;
+ this.project.registerReflection(result);
+ return result;
+ }
+ constructType(obj) {
+ const result = this.typeBuilders[obj.type](obj, this);
+ return result;
+ }
+ fromObject(receiver, obj) {
+ if (receiver instanceof index_1.Reflection) {
+ this.activeReflection.push(receiver);
+ }
+ receiver.fromObject(this, obj);
+ for (const de of this.deserializers) {
+ if (de.supports(receiver, obj)) {
+ de.fromObject(receiver, obj);
+ }
+ }
+ if (receiver instanceof index_1.Reflection) {
+ this.activeReflection.pop();
+ }
+ }
+ /**
+ * Defers work until the initial pass of serialization has been completed.
+ * This can be used to set up references which cannot be immediately restored.
+ *
+ * May only be called when deserializing.
+ */
+ defer(cb) {
+ this.deferred.push(cb);
+ }
+}
+exports.Deserializer = Deserializer;
diff --git a/node_modules/typedoc/dist/lib/serialization/events.d.ts b/node_modules/typedoc/dist/lib/serialization/events.d.ts
new file mode 100644
index 0000000..4b6d4a8
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/serialization/events.d.ts
@@ -0,0 +1,18 @@
+import { Event } from "../utils/events";
+import type { ProjectReflection } from "../models";
+import type { ProjectReflection as JSONProjectReflection } from "./schema";
+/**
+ * An event emitted by the {@link Serializer} class at the very beginning and
+ * ending of the a project serialization process.
+ *
+ * @see {@link Serializer.EVENT_BEGIN}
+ * @see {@link Serializer.EVENT_END}
+ */
+export declare class SerializeEvent extends Event {
+ /**
+ * The project the renderer is currently processing.
+ */
+ readonly project: ProjectReflection;
+ output: JSONProjectReflection | undefined;
+ constructor(name: string, project: ProjectReflection, output?: JSONProjectReflection);
+}
diff --git a/node_modules/typedoc/dist/lib/serialization/events.js b/node_modules/typedoc/dist/lib/serialization/events.js
new file mode 100644
index 0000000..7e696ea
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/serialization/events.js
@@ -0,0 +1,19 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.SerializeEvent = void 0;
+const events_1 = require("../utils/events");
+/**
+ * An event emitted by the {@link Serializer} class at the very beginning and
+ * ending of the a project serialization process.
+ *
+ * @see {@link Serializer.EVENT_BEGIN}
+ * @see {@link Serializer.EVENT_END}
+ */
+class SerializeEvent extends events_1.Event {
+ constructor(name, project, output) {
+ super(name);
+ this.project = project;
+ this.output = output;
+ }
+}
+exports.SerializeEvent = SerializeEvent;
diff --git a/node_modules/typedoc/dist/lib/serialization/index.d.ts b/node_modules/typedoc/dist/lib/serialization/index.d.ts
new file mode 100644
index 0000000..c5107b8
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/serialization/index.d.ts
@@ -0,0 +1,5 @@
+export type { SerializerComponent } from "./components";
+export { Deserializer, type Deserializable, type DeserializerComponent, } from "./deserializer";
+export { SerializeEvent } from "./events";
+export * as JSONOutput from "./schema";
+export { Serializer } from "./serializer";
diff --git a/node_modules/typedoc/dist/lib/serialization/index.js b/node_modules/typedoc/dist/lib/serialization/index.js
new file mode 100644
index 0000000..cf3015b
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/serialization/index.js
@@ -0,0 +1,33 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Serializer = exports.JSONOutput = exports.SerializeEvent = exports.Deserializer = void 0;
+var deserializer_1 = require("./deserializer");
+Object.defineProperty(exports, "Deserializer", { enumerable: true, get: function () { return deserializer_1.Deserializer; } });
+var events_1 = require("./events");
+Object.defineProperty(exports, "SerializeEvent", { enumerable: true, get: function () { return events_1.SerializeEvent; } });
+exports.JSONOutput = __importStar(require("./schema"));
+var serializer_1 = require("./serializer");
+Object.defineProperty(exports, "Serializer", { enumerable: true, get: function () { return serializer_1.Serializer; } });
diff --git a/node_modules/typedoc/dist/lib/serialization/schema.d.ts b/node_modules/typedoc/dist/lib/serialization/schema.d.ts
new file mode 100644
index 0000000..479e5df
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/serialization/schema.d.ts
@@ -0,0 +1,190 @@
+/**
+ * Contains interfaces which describe the JSON output. Each interface is related to a specific type of serializer.
+ *
+ * ## Plugins
+ * Plugins which modify the serialization process can use declaration merging
+ * to add custom properties to the exported interfaces.
+ * For example, if your custom serializer adds a property to all {@link Reflection} objects:
+ * ```ts
+ * declare module 'typedoc/dist/lib/serialization/schema' {
+ * export interface AbstractReflection {
+ * myCustomProp: boolean
+ * }
+ * }
+ * ```
+ *
+ * If a plugin defines a new Model type, {@link ModelToObject} will not pick up the serializer type and
+ * the resulting type will not be included in the return type of {@link Serializer.toObject}.
+ * To fix this, use declaration merging to augment the {@link Serializer} class.
+ * ```ts
+ * declare module 'typedoc/dist/lib/serialization/serializer' {
+ * export interface Serializer {
+ * toObject(value: CustomModel, obj?: Partial<CustomModel>): CustomOutput
+ * }
+ * }
+ * ```
+ *
+ * For documentation on the JSON output properties, view the corresponding model.
+ * @module
+ */
+import type * as M from "../models";
+/**
+ * Describes the mapping from Model types to the corresponding JSON output type.
+ */
+export type ModelToObject<T> = T extends Array<infer U> ? _ModelToObject<U>[] : _ModelToObject<T>;
+type _ModelToObject<T> = T extends Primitive ? T : Required<T> extends Required<M.ReflectionGroup> ? ReflectionGroup : Required<T> extends Required<M.ReflectionCategory> ? ReflectionCategory : T extends M.SignatureReflection ? SignatureReflection : T extends M.ParameterReflection ? ParameterReflection : T extends M.DeclarationReflection ? DeclarationReflection : T extends M.TypeParameterReflection ? TypeParameterReflection : T extends M.ProjectReflection ? ProjectReflection : T extends M.ContainerReflection ? ContainerReflection : T extends M.ReferenceReflection ? ReferenceReflection : T extends M.Reflection ? Reflection : T extends M.SomeType ? TypeKindMap[T["type"]] : T extends M.Type ? SomeType : T extends M.Comment ? Comment : T extends M.CommentTag ? CommentTag : T extends M.CommentDisplayPart ? CommentDisplayPart : T extends M.SourceReference ? SourceReference : never;
+type Primitive = string | number | undefined | null | boolean;
+type ToSerialized<T> = T extends Primitive ? T : T extends bigint ? {
+ value: string;
+ negative: boolean;
+} : ModelToObject<T>;
+/**
+ * Helper to describe a set of serialized properties. Primitive types are returned
+ * directly, while other models are first passed through ModelToObject.
+ * This helper removes the readonly modifier from properties since the result of serialization
+ * is a plain object that consumers may modify as they choose, TypeDoc doesn't care.
+ */
+type S<T, K extends keyof T> = {
+ -readonly [K2 in K]: ToSerialized<T[K2]>;
+};
+export interface ReflectionSymbolId {
+ sourceFileName: string;
+ qualifiedName: string;
+}
+export interface ReflectionGroup extends S<M.ReflectionGroup, "title" | "categories"> {
+ children?: M.ReflectionGroup["children"][number]["id"][];
+}
+export interface ReflectionCategory extends S<M.ReflectionCategory, "title"> {
+ children?: M.ReflectionCategory["children"][number]["id"][];
+}
+export type SomeReflection = {
+ [K in keyof M.ReflectionVariant]: ModelToObject<M.ReflectionVariant[K]>;
+}[keyof M.ReflectionVariant];
+export interface ReferenceReflection extends Omit<DeclarationReflection, "variant">, S<M.ReferenceReflection, "variant"> {
+ /**
+ * -1 if the reference refers to a symbol that does not exist in the documentation.
+ * Otherwise, the reflection ID.
+ */
+ target: number;
+}
+export interface SignatureReflection extends Omit<Reflection, "variant">, S<M.SignatureReflection, "variant" | "sources" | "parameters" | "type" | "overwrites" | "inheritedFrom" | "implementationOf"> {
+ typeParameter?: ModelToObject<M.SignatureReflection["typeParameters"]>;
+}
+export interface ParameterReflection extends Omit<Reflection, "variant">, S<M.ParameterReflection, "variant" | "type" | "defaultValue"> {
+ variant: "param";
+}
+export interface DeclarationReflection extends Omit<ContainerReflection, "variant">, S<M.DeclarationReflection, "variant" | "packageVersion" | "sources" | "relevanceBoost" | "type" | "signatures" | "indexSignature" | "defaultValue" | "overwrites" | "inheritedFrom" | "implementationOf" | "extendedTypes" | "extendedBy" | "implementedTypes" | "implementedBy" | "getSignature" | "setSignature" | "typeParameters"> {
+}
+export interface TypeParameterReflection extends Omit<Reflection, "variant">, S<M.TypeParameterReflection, "variant" | "type" | "default" | "varianceModifier"> {
+}
+export interface ProjectReflection extends Omit<ContainerReflection, "variant">, S<M.ProjectReflection, "variant" | "packageName" | "packageVersion" | "readme"> {
+ symbolIdMap: Record<number, ReflectionSymbolId>;
+}
+export interface ContainerReflection extends Reflection, S<M.ContainerReflection, "children" | "groups" | "categories"> {
+}
+export interface Reflection extends S<M.Reflection, "id" | "variant" | "name" | "kind" | "comment"> {
+ flags: ReflectionFlags;
+}
+export type SomeType = ModelToObject<M.SomeType>;
+export type TypeKindMap = {
+ array: ArrayType;
+ conditional: ConditionalType;
+ indexedAccess: IndexedAccessType;
+ inferred: InferredType;
+ intersection: IntersectionType;
+ intrinsic: IntrinsicType;
+ literal: LiteralType;
+ mapped: MappedType;
+ optional: OptionalType;
+ predicate: PredicateType;
+ query: QueryType;
+ reference: ReferenceType;
+ reflection: ReflectionType;
+ rest: RestType;
+ templateLiteral: TemplateLiteralType;
+ tuple: TupleType;
+ namedTupleMember: NamedTupleMemberType;
+ typeOperator: TypeOperatorType;
+ union: UnionType;
+ unknown: UnknownType;
+};
+export interface ArrayType extends Type, S<M.ArrayType, "type" | "elementType"> {
+}
+export interface ConditionalType extends Type, S<M.ConditionalType, "type" | "checkType" | "extendsType" | "trueType" | "falseType"> {
+}
+export interface IndexedAccessType extends Type, S<M.IndexedAccessType, "type" | "indexType" | "objectType"> {
+}
+export interface InferredType extends Type, S<M.InferredType, "type" | "name" | "constraint"> {
+}
+export interface IntersectionType extends Type, S<M.IntersectionType, "type" | "types"> {
+}
+export interface IntrinsicType extends Type, S<M.IntrinsicType, "type" | "name"> {
+}
+export interface OptionalType extends Type, S<M.OptionalType, "type" | "elementType"> {
+}
+export interface PredicateType extends Type, S<M.PredicateType, "type" | "name" | "asserts" | "targetType"> {
+}
+export interface QueryType extends Type, S<M.QueryType, "type" | "queryType"> {
+}
+export interface ReferenceType extends Type, S<M.ReferenceType, "type" | "name" | "typeArguments" | "package" | "externalUrl"> {
+ target: number | ReflectionSymbolId;
+ qualifiedName?: string;
+ refersToTypeParameter?: boolean;
+}
+export interface ReflectionType extends Type, S<M.ReflectionType, "type" | "declaration"> {
+}
+export interface RestType extends Type, S<M.RestType, "type" | "elementType"> {
+}
+export interface LiteralType extends Type, S<M.LiteralType, "type" | "value"> {
+}
+export interface TupleType extends Type, S<M.TupleType, "type"> {
+ elements?: ModelToObject<M.TupleType["elements"]>;
+}
+export interface NamedTupleMemberType extends Type, S<M.NamedTupleMember, "type" | "name" | "isOptional" | "element"> {
+}
+export interface TemplateLiteralType extends Type, S<M.TemplateLiteralType, "type" | "head"> {
+ tail: [SomeType, string][];
+}
+export interface MappedType extends Type, S<M.MappedType, "type" | "parameter" | "parameterType" | "templateType" | "readonlyModifier" | "optionalModifier" | "nameType"> {
+}
+export interface TypeOperatorType extends Type, S<M.TypeOperatorType, "type" | "operator" | "target"> {
+}
+export interface UnionType extends Type, S<M.UnionType, "type" | "types"> {
+}
+export interface UnknownType extends Type, S<M.UnknownType, "type" | "name"> {
+}
+export interface Type {
+}
+type BoolKeys<T> = {
+ [K in keyof T]-?: T[K] extends boolean ? K : never;
+}[keyof T];
+export interface ReflectionFlags extends Partial<S<M.ReflectionFlags, BoolKeys<M.ReflectionFlags>>> {
+}
+export interface Comment extends Partial<S<M.Comment, "blockTags" | "label">> {
+ summary: CommentDisplayPart[];
+ modifierTags?: string[];
+}
+export interface CommentTag extends S<M.CommentTag, "tag" | "name"> {
+ content: CommentDisplayPart[];
+}
+export type CommentDisplayPart = {
+ kind: "text";
+ text: string;
+} | {
+ kind: "code";
+ text: string;
+} | InlineTagDisplayPart;
+/**
+ * If `target` is a number, it is a reflection ID. If a string, it is a URL.
+ * `target` will only be set for `@link`, `@linkcode`, and `@linkplain` tags.
+ */
+export interface InlineTagDisplayPart {
+ kind: "inline-tag";
+ tag: `@${string}`;
+ text: string;
+ target?: string | number | ReflectionSymbolId;
+ tsLinkText?: string;
+}
+export interface SourceReference extends S<M.SourceReference, "fileName" | "line" | "character" | "url"> {
+}
+export {};
diff --git a/node_modules/typedoc/dist/lib/serialization/schema.js b/node_modules/typedoc/dist/lib/serialization/schema.js
new file mode 100644
index 0000000..8aef2c9
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/serialization/schema.js
@@ -0,0 +1,31 @@
+"use strict";
+/**
+ * Contains interfaces which describe the JSON output. Each interface is related to a specific type of serializer.
+ *
+ * ## Plugins
+ * Plugins which modify the serialization process can use declaration merging
+ * to add custom properties to the exported interfaces.
+ * For example, if your custom serializer adds a property to all {@link Reflection} objects:
+ * ```ts
+ * declare module 'typedoc/dist/lib/serialization/schema' {
+ * export interface AbstractReflection {
+ * myCustomProp: boolean
+ * }
+ * }
+ * ```
+ *
+ * If a plugin defines a new Model type, {@link ModelToObject} will not pick up the serializer type and
+ * the resulting type will not be included in the return type of {@link Serializer.toObject}.
+ * To fix this, use declaration merging to augment the {@link Serializer} class.
+ * ```ts
+ * declare module 'typedoc/dist/lib/serialization/serializer' {
+ * export interface Serializer {
+ * toObject(value: CustomModel, obj?: Partial<CustomModel>): CustomOutput
+ * }
+ * }
+ * ```
+ *
+ * For documentation on the JSON output properties, view the corresponding model.
+ * @module
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
diff --git a/node_modules/typedoc/dist/lib/serialization/serializer.d.ts b/node_modules/typedoc/dist/lib/serialization/serializer.d.ts
new file mode 100644
index 0000000..cea190b
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/serialization/serializer.d.ts
@@ -0,0 +1,37 @@
+import { EventDispatcher } from "../utils";
+import type { ProjectReflection } from "../models";
+import type { ModelToObject } from "./schema";
+import type { SerializerComponent } from "./components";
+export declare class Serializer extends EventDispatcher {
+ /**
+ * Triggered when the {@link Serializer} begins transforming a project.
+ * @event EVENT_BEGIN
+ */
+ static EVENT_BEGIN: string;
+ /**
+ * Triggered when the {@link Serializer} has finished transforming a project.
+ * @event EVENT_END
+ */
+ static EVENT_END: string;
+ private serializers;
+ /**
+ * Only set when serializing.
+ */
+ projectRoot: string;
+ addSerializer(serializer: SerializerComponent<any>): void;
+ toObject<T extends {
+ toObject(serializer: Serializer): ModelToObject<T>;
+ }>(value: T): ModelToObject<T>;
+ toObject<T extends {
+ toObject(serializer: Serializer): ModelToObject<T>;
+ }>(value: T | undefined): ModelToObject<T> | undefined;
+ toObjectsOptional<T extends {
+ toObject(serializer: Serializer): ModelToObject<T>;
+ }>(value: T[] | undefined): ModelToObject<T>[] | undefined;
+ /**
+ * Same as toObject but emits {@link Serializer.EVENT_BEGIN} and {@link Serializer.EVENT_END} events.
+ * @param value
+ * @param eventData Partial information to set in the event
+ */
+ projectToObject(value: ProjectReflection, projectRoot: string): ModelToObject<ProjectReflection>;
+}
diff --git a/node_modules/typedoc/dist/lib/serialization/serializer.js b/node_modules/typedoc/dist/lib/serialization/serializer.js
new file mode 100644
index 0000000..8bbfae4
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/serialization/serializer.js
@@ -0,0 +1,54 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.Serializer = void 0;
+const utils_1 = require("../utils");
+const events_1 = require("./events");
+const array_1 = require("../utils/array");
+class Serializer extends utils_1.EventDispatcher {
+ constructor() {
+ super(...arguments);
+ this.serializers = [];
+ }
+ addSerializer(serializer) {
+ (0, array_1.insertPrioritySorted)(this.serializers, serializer);
+ }
+ toObject(value) {
+ if (value === undefined) {
+ return undefined;
+ }
+ return this.serializers
+ .filter((s) => s.supports(value))
+ .reduce((val, s) => s.toObject(value, val, this), value.toObject(this));
+ }
+ toObjectsOptional(value) {
+ if (!value || value.length === 0) {
+ return undefined;
+ }
+ return value.map((val) => this.toObject(val));
+ }
+ /**
+ * Same as toObject but emits {@link Serializer.EVENT_BEGIN} and {@link Serializer.EVENT_END} events.
+ * @param value
+ * @param eventData Partial information to set in the event
+ */
+ projectToObject(value, projectRoot) {
+ this.projectRoot = projectRoot;
+ const eventBegin = new events_1.SerializeEvent(Serializer.EVENT_BEGIN, value);
+ this.trigger(eventBegin);
+ const project = this.toObject(value);
+ const eventEnd = new events_1.SerializeEvent(Serializer.EVENT_END, value, project);
+ this.trigger(eventEnd);
+ return project;
+ }
+}
+exports.Serializer = Serializer;
+/**
+ * Triggered when the {@link Serializer} begins transforming a project.
+ * @event EVENT_BEGIN
+ */
+Serializer.EVENT_BEGIN = "begin";
+/**
+ * Triggered when the {@link Serializer} has finished transforming a project.
+ * @event EVENT_END
+ */
+Serializer.EVENT_END = "end";
diff --git a/node_modules/typedoc/dist/lib/utils/array.d.ts b/node_modules/typedoc/dist/lib/utils/array.d.ts
new file mode 100644
index 0000000..406abd9
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/array.d.ts
@@ -0,0 +1,50 @@
+/**
+ * Inserts an item into an array sorted by priority. If two items have the same priority,
+ * the item will be inserted later will be placed earlier in the array.
+ * @param arr modified by inserting item.
+ * @param item
+ */
+export declare function insertPrioritySorted<T extends {
+ priority: number;
+}>(arr: T[], item: T): T[];
+/**
+ * Inserts an item into an array sorted by order. If two items have the same order,
+ * the item inserted later will be placed later in the array.
+ * The array will be sorted with lower order being placed sooner.
+ * @param arr modified by inserting item.
+ * @param item
+ */
+export declare function insertOrderSorted<T extends {
+ order: number;
+}>(arr: T[], item: T): T[];
+/**
+ * Performs a binary search of a given array, returning the index of the first item
+ * for which `partition` returns true. Returns the -1 if there are no items in `arr`
+ * such that `partition(item)` is true.
+ * @param arr
+ * @param partition should return true while less than the partition point.
+ */
+export declare function binaryFindPartition<T>(arr: readonly T[], partition: (item: T) => boolean): number;
+/**
+ * Removes an item from the array if the array exists and the item is included
+ * within it.
+ * @param arr
+ * @param item
+ */
+export declare function removeIfPresent<T>(arr: T[] | undefined, item: T): void;
+/**
+ * Remove items in an array which match a predicate.
+ * @param arr
+ * @param predicate
+ */
+export declare function removeIf<T>(arr: T[], predicate: (item: T) => boolean): void;
+/**
+ * Filters out duplicate values from the given iterable.
+ * @param arr
+ */
+export declare function unique<T>(arr: Iterable<T> | undefined): T[];
+export declare function partition<T>(iter: Iterable<T>, predicate: (item: T) => boolean): [T[], T[]];
+export declare function zip<T extends Iterable<any>[]>(...args: T): Iterable<{
+ [K in keyof T]: T[K] extends Iterable<infer U> ? U : T[K];
+}>;
+export declare function filterMap<T, U>(iter: Iterable<T>, fn: (item: T) => U | undefined): U[];
diff --git a/node_modules/typedoc/dist/lib/utils/array.js b/node_modules/typedoc/dist/lib/utils/array.js
new file mode 100644
index 0000000..19a0967
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/array.js
@@ -0,0 +1,126 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.filterMap = exports.zip = exports.partition = exports.unique = exports.removeIf = exports.removeIfPresent = exports.binaryFindPartition = exports.insertOrderSorted = exports.insertPrioritySorted = void 0;
+/**
+ * Inserts an item into an array sorted by priority. If two items have the same priority,
+ * the item will be inserted later will be placed earlier in the array.
+ * @param arr modified by inserting item.
+ * @param item
+ */
+function insertPrioritySorted(arr, item) {
+ const index = binaryFindPartition(arr, (v) => v.priority <= item.priority);
+ arr.splice(index === -1 ? arr.length : index, 0, item);
+ return arr;
+}
+exports.insertPrioritySorted = insertPrioritySorted;
+/**
+ * Inserts an item into an array sorted by order. If two items have the same order,
+ * the item inserted later will be placed later in the array.
+ * The array will be sorted with lower order being placed sooner.
+ * @param arr modified by inserting item.
+ * @param item
+ */
+function insertOrderSorted(arr, item) {
+ const index = binaryFindPartition(arr, (v) => v.order > item.order);
+ arr.splice(index === -1 ? arr.length : index, 0, item);
+ return arr;
+}
+exports.insertOrderSorted = insertOrderSorted;
+/**
+ * Performs a binary search of a given array, returning the index of the first item
+ * for which `partition` returns true. Returns the -1 if there are no items in `arr`
+ * such that `partition(item)` is true.
+ * @param arr
+ * @param partition should return true while less than the partition point.
+ */
+function binaryFindPartition(arr, partition) {
+ if (arr.length === 0) {
+ return -1;
+ }
+ let low = 0, high = arr.length - 1;
+ while (high > low) {
+ const mid = low + Math.floor((high - low) / 2);
+ if (partition(arr[mid])) {
+ high = mid;
+ }
+ else {
+ low = mid + 1;
+ }
+ }
+ return partition(arr[low]) ? low : -1;
+}
+exports.binaryFindPartition = binaryFindPartition;
+/**
+ * Removes an item from the array if the array exists and the item is included
+ * within it.
+ * @param arr
+ * @param item
+ */
+function removeIfPresent(arr, item) {
+ if (!arr) {
+ return;
+ }
+ const index = arr.indexOf(item);
+ if (index !== -1) {
+ arr.splice(index, 1);
+ }
+}
+exports.removeIfPresent = removeIfPresent;
+/**
+ * Remove items in an array which match a predicate.
+ * @param arr
+ * @param predicate
+ */
+function removeIf(arr, predicate) {
+ for (let i = 0; i < arr.length; i++) {
+ if (predicate(arr[i])) {
+ arr.splice(i, 1);
+ i--;
+ }
+ }
+}
+exports.removeIf = removeIf;
+/**
+ * Filters out duplicate values from the given iterable.
+ * @param arr
+ */
+function unique(arr) {
+ return Array.from(new Set(arr));
+}
+exports.unique = unique;
+function partition(iter, predicate) {
+ const left = [];
+ const right = [];
+ for (const item of iter) {
+ if (predicate(item)) {
+ left.push(item);
+ }
+ else {
+ right.push(item);
+ }
+ }
+ return [left, right];
+}
+exports.partition = partition;
+function* zip(...args) {
+ const iterators = args.map((x) => x[Symbol.iterator]());
+ while (true) {
+ const next = iterators.map((i) => i.next());
+ if (next.some((v) => v.done)) {
+ break;
+ }
+ yield next.map((v) => v.value);
+ }
+}
+exports.zip = zip;
+function filterMap(iter, fn) {
+ const result = [];
+ for (const item of iter) {
+ const newItem = fn(item);
+ if (newItem !== void 0) {
+ result.push(newItem);
+ }
+ }
+ return result;
+}
+exports.filterMap = filterMap;
diff --git a/node_modules/typedoc/dist/lib/utils/component.d.ts b/node_modules/typedoc/dist/lib/utils/component.d.ts
new file mode 100644
index 0000000..86e791d
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/component.d.ts
@@ -0,0 +1,94 @@
+import type { Application } from "../application";
+import { EventDispatcher, Event, EventMap } from "./events";
+/**
+ * Exposes a reference to the root Application component.
+ */
+export interface ComponentHost {
+ readonly application: Application;
+}
+export interface Component extends AbstractComponent<ComponentHost> {
+}
+export interface ComponentClass<T extends Component, O extends ComponentHost = ComponentHost> extends Function {
+ new (owner: O): T;
+}
+/**
+ * Option-bag passed to Component decorator.
+ */
+export interface ComponentOptions {
+ name?: string;
+ /** Specify valid child component class. Used to prove that children are valid via `instanceof` checks */
+ childClass?: Function;
+ internal?: boolean;
+}
+/**
+ * Class decorator applied to Components
+ */
+export declare function Component(options: ComponentOptions): ClassDecorator;
+export declare class ComponentEvent extends Event {
+ owner: ComponentHost;
+ component: AbstractComponent<ComponentHost>;
+ static ADDED: string;
+ static REMOVED: string;
+ constructor(name: string, owner: ComponentHost, component: AbstractComponent<ComponentHost>);
+}
+/**
+ * Component base class. Has an owner (unless it's the application root component),
+ * can dispatch events to its children, and has access to the root Application component.
+ *
+ * @template O type of component's owner.
+ */
+export declare abstract class AbstractComponent<O extends ComponentHost> extends EventDispatcher implements ComponentHost {
+ /**
+ * The owner of this component instance.
+ */
+ private _componentOwner;
+ /**
+ * The name of this component as set by the `@Component` decorator.
+ */
+ componentName: string;
+ /**
+ * Create new Component instance.
+ */
+ constructor(owner: O);
+ /**
+ * Initialize this component.
+ */
+ protected initialize(): void;
+ protected bubble(name: Event | EventMap | string, ...args: any[]): this;
+ /**
+ * Return the application / root component instance.
+ */
+ get application(): Application;
+ /**
+ * Return the owner of this component.
+ */
+ get owner(): O;
+}
+/**
+ * Component that can have child components.
+ *
+ * @template O type of Component's owner
+ * @template C type of Component's children
+ */
+export declare abstract class ChildableComponent<O extends ComponentHost, C extends Component> extends AbstractComponent<O> {
+ /**
+ *
+ */
+ private _componentChildren?;
+ private _defaultComponents?;
+ /**
+ * Create new Component instance.
+ */
+ constructor(owner: O);
+ /**
+ * Retrieve a plugin instance.
+ *
+ * @returns The instance of the plugin or undefined if no plugin with the given class is attached.
+ */
+ getComponent(name: string): C | undefined;
+ getComponents(): C[];
+ hasComponent(name: string): boolean;
+ addComponent<T extends C>(name: string, componentClass: T | ComponentClass<T, O>): T;
+ removeComponent(name: string): C | undefined;
+ removeAllComponents(): void;
+}
diff --git a/node_modules/typedoc/dist/lib/utils/component.js b/node_modules/typedoc/dist/lib/utils/component.js
new file mode 100644
index 0000000..a0dab59
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/component.js
@@ -0,0 +1,169 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ChildableComponent = exports.AbstractComponent = exports.ComponentEvent = exports.Component = void 0;
+const events_1 = require("./events");
+const childMappings = [];
+/**
+ * Class decorator applied to Components
+ */
+function Component(options) {
+ return (target) => {
+ const proto = target.prototype;
+ if (!(proto instanceof AbstractComponent)) {
+ throw new Error("The `Component` decorator can only be used with a subclass of `AbstractComponent`.");
+ }
+ if (options.childClass) {
+ if (!(proto instanceof ChildableComponent)) {
+ throw new Error("The `Component` decorator accepts the parameter `childClass` only when used with a subclass of `ChildableComponent`.");
+ }
+ childMappings.push({
+ host: proto,
+ child: options.childClass,
+ });
+ }
+ const name = options.name;
+ if (name) {
+ proto.componentName = name;
+ }
+ // If not marked internal, and if we are a subclass of another component T's declared
+ // childClass, then register ourselves as a _defaultComponents of T.
+ const internal = !!options.internal;
+ if (name && !internal) {
+ for (const childMapping of childMappings) {
+ if (!(proto instanceof childMapping.child)) {
+ continue;
+ }
+ const host = childMapping.host;
+ host["_defaultComponents"] = host["_defaultComponents"] || {};
+ host["_defaultComponents"][name] = target;
+ break;
+ }
+ }
+ };
+}
+exports.Component = Component;
+class ComponentEvent extends events_1.Event {
+ constructor(name, owner, component) {
+ super(name);
+ this.owner = owner;
+ this.component = component;
+ }
+}
+exports.ComponentEvent = ComponentEvent;
+ComponentEvent.ADDED = "componentAdded";
+ComponentEvent.REMOVED = "componentRemoved";
+/**
+ * Component base class. Has an owner (unless it's the application root component),
+ * can dispatch events to its children, and has access to the root Application component.
+ *
+ * @template O type of component's owner.
+ */
+class AbstractComponent extends events_1.EventDispatcher {
+ /**
+ * Create new Component instance.
+ */
+ constructor(owner) {
+ super();
+ this._componentOwner = owner;
+ this.initialize();
+ }
+ /**
+ * Initialize this component.
+ */
+ initialize() {
+ // empty default implementation
+ }
+ bubble(name, ...args) {
+ super.trigger(name, ...args);
+ if (this.owner instanceof AbstractComponent &&
+ this._componentOwner !== null) {
+ this.owner.bubble(name, ...args);
+ }
+ return this;
+ }
+ /**
+ * Return the application / root component instance.
+ */
+ get application() {
+ if (this._componentOwner === null) {
+ return this;
+ }
+ return this._componentOwner.application;
+ }
+ /**
+ * Return the owner of this component.
+ */
+ get owner() {
+ return this._componentOwner === null
+ ? this
+ : this._componentOwner;
+ }
+}
+exports.AbstractComponent = AbstractComponent;
+/**
+ * Component that can have child components.
+ *
+ * @template O type of Component's owner
+ * @template C type of Component's children
+ */
+class ChildableComponent extends AbstractComponent {
+ /**
+ * Create new Component instance.
+ */
+ constructor(owner) {
+ super(owner);
+ Object.entries(this._defaultComponents || {}).forEach(([name, component]) => {
+ this.addComponent(name, component);
+ });
+ }
+ /**
+ * Retrieve a plugin instance.
+ *
+ * @returns The instance of the plugin or undefined if no plugin with the given class is attached.
+ */
+ getComponent(name) {
+ return (this._componentChildren || {})[name];
+ }
+ getComponents() {
+ return Object.values(this._componentChildren || {});
+ }
+ hasComponent(name) {
+ return !!(this._componentChildren || {})[name];
+ }
+ addComponent(name, componentClass) {
+ if (!this._componentChildren) {
+ this._componentChildren = {};
+ }
+ if (this._componentChildren[name]) {
+ // Component already added so we will return the existing component
+ // TODO: add better logging around this because it could be unexpected but shouldn't be fatal
+ // See https://github.com/TypeStrong/typedoc/issues/846
+ return this._componentChildren[name];
+ }
+ else {
+ const component = typeof componentClass === "function"
+ ? new componentClass(this)
+ : componentClass;
+ const event = new ComponentEvent(ComponentEvent.ADDED, this, component);
+ this.bubble(event);
+ this._componentChildren[name] = component;
+ return component;
+ }
+ }
+ removeComponent(name) {
+ const component = (this._componentChildren || {})[name];
+ if (component) {
+ delete this._componentChildren[name];
+ component.stopListening();
+ this.bubble(new ComponentEvent(ComponentEvent.REMOVED, this, component));
+ return component;
+ }
+ }
+ removeAllComponents() {
+ for (const component of Object.values(this._componentChildren || {})) {
+ component.stopListening();
+ }
+ this._componentChildren = {};
+ }
+}
+exports.ChildableComponent = ChildableComponent;
diff --git a/node_modules/typedoc/dist/lib/utils/entry-point.d.ts b/node_modules/typedoc/dist/lib/utils/entry-point.d.ts
new file mode 100644
index 0000000..79bf1e5
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/entry-point.d.ts
@@ -0,0 +1,46 @@
+import ts from "typescript";
+import type { Logger } from "./loggers";
+import type { Options } from "./options";
+/**
+ * Defines how entry points are interpreted.
+ * @enum
+ */
+export declare const EntryPointStrategy: {
+ /**
+ * The default behavior in v0.22+, expects all provided entry points as being part of a single program.
+ * Any directories included in the entry point list will result in `dir/index.([cm][tj]s|[tj]sx?)` being used.
+ */
+ readonly Resolve: "resolve";
+ /**
+ * The default behavior in v0.21 and earlier. Behaves like the resolve behavior, but will recursively
+ * expand directories into an entry point for each file within the directory.
+ */
+ readonly Expand: "expand";
+ /**
+ * Run TypeDoc in each directory passed as an entry point. Once all directories have been converted,
+ * use the merge option to produce final output.
+ */
+ readonly Packages: "packages";
+ /**
+ * Will be removed in 0.25, this was called packages mode in 0.24.
+ * Alternative resolution mode useful for monorepos. With this mode, TypeDoc will look for a package.json
+ * and tsconfig.json under each provided entry point. The `main` field of each package will be documented.
+ */
+ readonly LegacyPackages: "legacy-packages";
+ /**
+ * Merges multiple previously generated output from TypeDoc's --json output together into a single project.
+ */
+ readonly Merge: "merge";
+};
+export type EntryPointStrategy = (typeof EntryPointStrategy)[keyof typeof EntryPointStrategy];
+export interface DocumentationEntryPoint {
+ displayName: string;
+ readmeFile?: string;
+ program: ts.Program;
+ sourceFile: ts.SourceFile;
+ version?: string;
+}
+export declare function getEntryPoints(logger: Logger, options: Options): DocumentationEntryPoint[] | undefined;
+export declare function getWatchEntryPoints(logger: Logger, options: Options, program: ts.Program): DocumentationEntryPoint[] | undefined;
+export declare function getPackageDirectories(logger: Logger, options: Options, packageGlobPaths: string[]): string[];
+export declare function getExpandedEntryPointsForPaths(logger: Logger, inputFiles: string[], options: Options, programs?: ts.Program[]): DocumentationEntryPoint[];
diff --git a/node_modules/typedoc/dist/lib/utils/entry-point.js b/node_modules/typedoc/dist/lib/utils/entry-point.js
new file mode 100644
index 0000000..d1e9830
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/entry-point.js
@@ -0,0 +1,359 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getExpandedEntryPointsForPaths = exports.getPackageDirectories = exports.getWatchEntryPoints = exports.getEntryPoints = exports.EntryPointStrategy = void 0;
+const path_1 = require("path");
+const typescript_1 = __importDefault(require("typescript"));
+const FS = __importStar(require("fs"));
+const Path = __importStar(require("path"));
+const package_manifest_1 = require("./package-manifest");
+const paths_1 = require("./paths");
+const fs_1 = require("./fs");
+const general_1 = require("./general");
+/**
+ * Defines how entry points are interpreted.
+ * @enum
+ */
+exports.EntryPointStrategy = {
+ /**
+ * The default behavior in v0.22+, expects all provided entry points as being part of a single program.
+ * Any directories included in the entry point list will result in `dir/index.([cm][tj]s|[tj]sx?)` being used.
+ */
+ Resolve: "resolve",
+ /**
+ * The default behavior in v0.21 and earlier. Behaves like the resolve behavior, but will recursively
+ * expand directories into an entry point for each file within the directory.
+ */
+ Expand: "expand",
+ /**
+ * Run TypeDoc in each directory passed as an entry point. Once all directories have been converted,
+ * use the merge option to produce final output.
+ */
+ Packages: "packages",
+ /**
+ * Will be removed in 0.25, this was called packages mode in 0.24.
+ * Alternative resolution mode useful for monorepos. With this mode, TypeDoc will look for a package.json
+ * and tsconfig.json under each provided entry point. The `main` field of each package will be documented.
+ */
+ LegacyPackages: "legacy-packages",
+ /**
+ * Merges multiple previously generated output from TypeDoc's --json output together into a single project.
+ */
+ Merge: "merge",
+};
+function getEntryPoints(logger, options) {
+ if (!options.isSet("entryPoints")) {
+ logger.warn("No entry points were provided, this is likely a misconfiguration.");
+ return [];
+ }
+ const entryPoints = options.getValue("entryPoints");
+ // May be set explicitly to be an empty array to only include a readme for a package
+ // See #2264
+ if (entryPoints.length === 0) {
+ return [];
+ }
+ let result;
+ const strategy = options.getValue("entryPointStrategy");
+ switch (strategy) {
+ case exports.EntryPointStrategy.Resolve:
+ result = getEntryPointsForPaths(logger, expandGlobs(entryPoints, logger), options);
+ break;
+ case exports.EntryPointStrategy.Expand:
+ result = getExpandedEntryPointsForPaths(logger, expandGlobs(entryPoints, logger), options);
+ break;
+ case exports.EntryPointStrategy.LegacyPackages:
+ result = getEntryPointsForLegacyPackages(logger, entryPoints, options);
+ break;
+ case exports.EntryPointStrategy.Merge:
+ case exports.EntryPointStrategy.Packages:
+ // Doesn't really have entry points in the traditional way of how TypeDoc has dealt with them.
+ return [];
+ default:
+ (0, general_1.assertNever)(strategy);
+ }
+ if (result && result.length === 0) {
+ logger.error("Unable to find any entry points. See previous warnings.");
+ return;
+ }
+ return result;
+}
+exports.getEntryPoints = getEntryPoints;
+function getWatchEntryPoints(logger, options, program) {
+ let result;
+ const entryPoints = options.getValue("entryPoints");
+ switch (options.getValue("entryPointStrategy")) {
+ case exports.EntryPointStrategy.Resolve:
+ result = getEntryPointsForPaths(logger, entryPoints, options, [
+ program,
+ ]);
+ break;
+ case exports.EntryPointStrategy.Expand:
+ result = getExpandedEntryPointsForPaths(logger, entryPoints, options, [program]);
+ break;
+ case exports.EntryPointStrategy.Packages:
+ logger.error("Watch mode does not support 'packages' style entry points.");
+ break;
+ }
+ if (result && result.length === 0) {
+ logger.error("Unable to find any entry points.");
+ return;
+ }
+ return result;
+}
+exports.getWatchEntryPoints = getWatchEntryPoints;
+function getPackageDirectories(logger, options, packageGlobPaths) {
+ const exclude = (0, paths_1.createMinimatch)(options.getValue("exclude"));
+ const rootDir = (0, fs_1.deriveRootDir)(packageGlobPaths);
+ // packages arguments are workspace tree roots, or glob patterns
+ // This expands them to leave only leaf packages
+ return (0, package_manifest_1.expandPackages)(logger, rootDir, packageGlobPaths, exclude);
+}
+exports.getPackageDirectories = getPackageDirectories;
+function getModuleName(fileName, baseDir) {
+ return (0, paths_1.normalizePath)((0, path_1.relative)(baseDir, fileName)).replace(/(\/index)?(\.d)?\.([cm][tj]s|[tj]sx?)$/, "");
+}
+/**
+ * Converts a list of file-oriented paths in to DocumentationEntryPoints for conversion.
+ * This is in contrast with the package-oriented `getEntryPointsForPackages`
+ */
+function getEntryPointsForPaths(logger, inputFiles, options, programs = getEntryPrograms(logger, options)) {
+ const baseDir = options.getValue("basePath") || (0, fs_1.deriveRootDir)(inputFiles);
+ const entryPoints = [];
+ entryLoop: for (const fileOrDir of inputFiles.map(paths_1.normalizePath)) {
+ const toCheck = [fileOrDir];
+ if (!/\.([cm][tj]s|[tj]sx?)$/.test(fileOrDir)) {
+ toCheck.push(`${fileOrDir}/index.ts`, `${fileOrDir}/index.cts`, `${fileOrDir}/index.mts`, `${fileOrDir}/index.tsx`, `${fileOrDir}/index.js`, `${fileOrDir}/index.cjs`, `${fileOrDir}/index.mjs`, `${fileOrDir}/index.jsx`);
+ }
+ for (const program of programs) {
+ for (const check of toCheck) {
+ const sourceFile = program.getSourceFile(check);
+ if (sourceFile) {
+ entryPoints.push({
+ displayName: getModuleName((0, path_1.resolve)(check), baseDir),
+ sourceFile,
+ program,
+ });
+ continue entryLoop;
+ }
+ }
+ }
+ const suggestion = (0, fs_1.isDir)(fileOrDir)
+ ? " If you wanted to include files inside this directory, set --entryPointStrategy to expand or specify a glob."
+ : "";
+ logger.warn(`The entry point ${(0, paths_1.nicePath)(fileOrDir)} is not included in the program for your provided tsconfig.${suggestion}`);
+ }
+ return entryPoints;
+}
+function getExpandedEntryPointsForPaths(logger, inputFiles, options, programs = getEntryPrograms(logger, options)) {
+ return getEntryPointsForPaths(logger, expandInputFiles(logger, inputFiles, options), options, programs);
+}
+exports.getExpandedEntryPointsForPaths = getExpandedEntryPointsForPaths;
+function expandGlobs(inputFiles, logger) {
+ const base = (0, fs_1.deriveRootDir)(inputFiles);
+ const result = inputFiles.flatMap((entry) => {
+ const result = (0, fs_1.glob)(entry, base, {
+ includeDirectories: true,
+ followSymlinks: true,
+ });
+ if (result.length === 0) {
+ logger.warn(`The entrypoint glob ${(0, paths_1.nicePath)(entry)} did not match any files.`);
+ }
+ else {
+ logger.verbose(`Expanded ${(0, paths_1.nicePath)(entry)} to:\n\t${result
+ .map(paths_1.nicePath)
+ .join("\n\t")}`);
+ }
+ return result;
+ });
+ return result;
+}
+function getEntryPrograms(logger, options) {
+ const rootProgram = typescript_1.default.createProgram({
+ rootNames: options.getFileNames(),
+ options: options.getCompilerOptions(),
+ projectReferences: options.getProjectReferences(),
+ });
+ const programs = [rootProgram];
+ // This might be a solution style tsconfig, in which case we need to add a program for each
+ // reference so that the converter can look through each of these.
+ if (rootProgram.getRootFileNames().length === 0) {
+ logger.verbose("tsconfig appears to be a solution style tsconfig - creating programs for references");
+ const resolvedReferences = rootProgram.getResolvedProjectReferences();
+ for (const ref of resolvedReferences ?? []) {
+ if (!ref)
+ continue; // This indicates bad configuration... will be reported later.
+ programs.push(typescript_1.default.createProgram({
+ options: options.fixCompilerOptions(ref.commandLine.options),
+ rootNames: ref.commandLine.fileNames,
+ projectReferences: ref.commandLine.projectReferences,
+ }));
+ }
+ }
+ return programs;
+}
+/**
+ * Expand a list of input files.
+ *
+ * Searches for directories in the input files list and replaces them with a
+ * listing of all TypeScript files within them. One may use the ```--exclude``` option
+ * to filter out files with a pattern.
+ *
+ * @param inputFiles The list of files that should be expanded.
+ * @returns The list of input files with expanded directories.
+ */
+function expandInputFiles(logger, entryPoints, options) {
+ const files = [];
+ const exclude = (0, paths_1.createMinimatch)(options.getValue("exclude"));
+ const compilerOptions = options.getCompilerOptions();
+ const supportedFileRegex = compilerOptions.allowJs || compilerOptions.checkJs
+ ? /\.([cm][tj]s|[tj]sx?)$/
+ : /\.([cm]ts|tsx?)$/;
+ function add(file, entryPoint) {
+ let stats;
+ try {
+ stats = FS.statSync(file);
+ }
+ catch {
+ // No permission or a symbolic link, do not resolve.
+ return;
+ }
+ const fileIsDir = stats.isDirectory();
+ if (fileIsDir && !file.endsWith("/")) {
+ file = `${file}/`;
+ }
+ if (fileIsDir) {
+ FS.readdirSync(file).forEach((next) => {
+ add((0, path_1.join)(file, next), false);
+ });
+ }
+ else if (supportedFileRegex.test(file)) {
+ if (!entryPoint && (0, paths_1.matchesAny)(exclude, file)) {
+ return;
+ }
+ files.push((0, paths_1.normalizePath)(file));
+ }
+ }
+ entryPoints.forEach((file) => {
+ const resolved = (0, path_1.resolve)(file);
+ if (!FS.existsSync(resolved)) {
+ logger.warn(`Provided entry point ${file} does not exist and will not be included in the docs.`);
+ return;
+ }
+ add(resolved, true);
+ });
+ return files;
+}
+/**
+ * Expand the provided packages configuration paths, determining the entry points
+ * and creating the ts.Programs for any which are found.
+ * @param logger
+ * @param packageGlobPaths
+ * @returns The information about the discovered programs, undefined if an error occurs.
+ */
+function getEntryPointsForLegacyPackages(logger, packageGlobPaths, options) {
+ const results = [];
+ for (const packagePath of getPackageDirectories(logger, options, packageGlobPaths)) {
+ const packageJsonPath = (0, path_1.resolve)(packagePath, "package.json");
+ const packageJson = (0, package_manifest_1.loadPackageManifest)(logger, packageJsonPath);
+ const includeVersion = options.getValue("includeVersion");
+ const typedocPackageConfig = packageJson
+ ? (0, package_manifest_1.extractTypedocConfigFromPackageManifest)(logger, packageJsonPath)
+ : undefined;
+ if (packageJson === undefined) {
+ logger.error(`Could not load package manifest ${packageJsonPath}`);
+ return;
+ }
+ const packageEntryPoint = (0, package_manifest_1.getTsEntryPointForPackage)(logger, packageJsonPath, packageJson);
+ if (packageEntryPoint === undefined) {
+ logger.error(`Could not determine TS entry point for package ${packageJsonPath}`);
+ return;
+ }
+ if (packageEntryPoint === package_manifest_1.ignorePackage) {
+ continue;
+ }
+ const tsconfigFile = typescript_1.default.findConfigFile(packageEntryPoint, typescript_1.default.sys.fileExists, typedocPackageConfig?.tsconfig);
+ if (tsconfigFile === undefined) {
+ logger.error(`Could not determine tsconfig.json for source file ${packageEntryPoint} (it must be on an ancestor path)`);
+ return;
+ }
+ // Consider deduplicating this with similar code in src/lib/utils/options/readers/tsconfig.ts
+ let fatalError = false;
+ const parsedCommandLine = typescript_1.default.getParsedCommandLineOfConfigFile(tsconfigFile, {}, {
+ ...typescript_1.default.sys,
+ onUnRecoverableConfigFileDiagnostic: (error) => {
+ logger.diagnostic(error);
+ fatalError = true;
+ },
+ });
+ if (!parsedCommandLine) {
+ return;
+ }
+ logger.diagnostics(parsedCommandLine.errors);
+ if (fatalError) {
+ return;
+ }
+ const program = typescript_1.default.createProgram({
+ rootNames: parsedCommandLine.fileNames,
+ options: options.fixCompilerOptions(parsedCommandLine.options),
+ projectReferences: parsedCommandLine.projectReferences,
+ });
+ const sourceFile = program.getSourceFile(packageEntryPoint);
+ if (sourceFile === undefined) {
+ logger.error(`Entry point "${packageEntryPoint}" does not appear to be built by/included in the tsconfig found at "${tsconfigFile}"`);
+ return;
+ }
+ const packageName = packageJson["name"];
+ results.push({
+ displayName: typedocPackageConfig?.displayName ?? packageName,
+ version: includeVersion
+ ? packageJson["version"]?.replace(/^v/, "")
+ : void 0,
+ readmeFile: discoverReadmeFile(logger, Path.join(packageJsonPath, ".."), typedocPackageConfig?.readmeFile),
+ program,
+ sourceFile,
+ });
+ }
+ return results;
+}
+function discoverReadmeFile(logger, packageDir, userReadme) {
+ if (userReadme?.endsWith("none")) {
+ return;
+ }
+ if (userReadme) {
+ if (!FS.existsSync(Path.join(packageDir, userReadme))) {
+ logger.warn(`Failed to find ${userReadme} in ${(0, paths_1.nicePath)(packageDir)}`);
+ return;
+ }
+ return Path.resolve(Path.join(packageDir, userReadme));
+ }
+ for (const file of FS.readdirSync(packageDir)) {
+ if (file.toLowerCase() === "readme.md") {
+ return Path.resolve(Path.join(packageDir, file));
+ }
+ }
+}
diff --git a/node_modules/typedoc/dist/lib/utils/enum.d.ts b/node_modules/typedoc/dist/lib/utils/enum.d.ts
new file mode 100644
index 0000000..93cb40a
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/enum.d.ts
@@ -0,0 +1,8 @@
+export declare function getEnumFlags<T extends number>(flags: T): T[];
+export declare function removeFlag<T extends number>(flag: T, remove: T & {}): T;
+export declare function hasAllFlags(flags: number, check: number): boolean;
+export declare function hasAnyFlag(flags: number, check: number): boolean;
+export declare function getEnumKeys(Enum: {}): string[];
+export type EnumKeys<E extends {}> = keyof {
+ [K in keyof E as number extends E[K] ? K : never]: 1;
+};
diff --git a/node_modules/typedoc/dist/lib/utils/enum.js b/node_modules/typedoc/dist/lib/utils/enum.js
new file mode 100644
index 0000000..5f83cf7
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/enum.js
@@ -0,0 +1,32 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getEnumKeys = exports.hasAnyFlag = exports.hasAllFlags = exports.removeFlag = exports.getEnumFlags = void 0;
+function getEnumFlags(flags) {
+ const result = [];
+ for (let i = 1; i <= flags; i <<= 1) {
+ if (flags & i) {
+ result.push(i);
+ }
+ }
+ return result;
+}
+exports.getEnumFlags = getEnumFlags;
+// T & {} reduces inference priority
+function removeFlag(flag, remove) {
+ return (flag & ~remove);
+}
+exports.removeFlag = removeFlag;
+function hasAllFlags(flags, check) {
+ return (flags & check) === check;
+}
+exports.hasAllFlags = hasAllFlags;
+function hasAnyFlag(flags, check) {
+ return (flags & check) !== 0;
+}
+exports.hasAnyFlag = hasAnyFlag;
+// Note: String enums are not handled.
+function getEnumKeys(Enum) {
+ const E = Enum;
+ return Object.keys(E).filter((k) => E[E[k]] === k);
+}
+exports.getEnumKeys = getEnumKeys;
diff --git a/node_modules/typedoc/dist/lib/utils/events.d.ts b/node_modules/typedoc/dist/lib/utils/events.d.ts
new file mode 100644
index 0000000..8bc97d3
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/events.d.ts
@@ -0,0 +1,123 @@
+export interface EventCallback extends Function {
+ _callback?: Function;
+}
+export interface EventMap {
+ [name: string]: EventCallback;
+}
+/**
+ * An event object.
+ */
+export declare class Event {
+ /**
+ * The name of the event.
+ */
+ private _name;
+ /**
+ * Has {@link Event.stopPropagation} been called?
+ */
+ private _isPropagationStopped;
+ /**
+ * Has {@link Event.preventDefault} been called?
+ */
+ private _isDefaultPrevented;
+ /**
+ * Create a new Event instance.
+ */
+ constructor(name: string);
+ /**
+ * Stop the propagation of this event. Remaining event handlers will not be executed.
+ */
+ stopPropagation(): void;
+ /**
+ * Prevent the default action associated with this event from being executed.
+ */
+ preventDefault(): void;
+ /**
+ * Return the event name.
+ */
+ get name(): string;
+ /**
+ * Has {@link Event.stopPropagation} been called?
+ */
+ get isPropagationStopped(): boolean;
+ /**
+ * Has {@link Event.preventDefault} been called?
+ */
+ get isDefaultPrevented(): boolean;
+}
+/**
+ * A class that provides a custom event channel.
+ *
+ * You may bind a callback to an event with `on` or remove with `off`;
+ * `trigger`-ing an event fires all callbacks in succession.
+ */
+export declare class EventDispatcher {
+ /**
+ * Map of all handlers registered with the "on" function.
+ */
+ private _events?;
+ /**
+ * Map of all objects this instance is listening to.
+ */
+ private _listeningTo?;
+ /**
+ * Map of all objects that are listening to this instance.
+ */
+ private _listeners?;
+ /**
+ * A unique id that identifies this instance.
+ */
+ private get _listenId();
+ private _savedListenId?;
+ /**
+ * Bind an event to a `callback` function. Passing `"all"` will bind
+ * the callback to all events fired.
+ */
+ on(eventMap: EventMap, context?: any): this;
+ on(eventMap: EventMap, callback?: EventCallback, context?: any, priority?: number): this;
+ on(name: string, callback: EventCallback, context?: any, priority?: number): this;
+ /**
+ * Guard the `listening` argument from the public API.
+ */
+ private internalOn;
+ /**
+ * Bind an event to only be triggered a single time. After the first time
+ * the callback is invoked, its listener will be removed. If multiple events
+ * are passed in using the space-separated syntax, the handler will fire
+ * once for each event, not once for a combination of all events.
+ */
+ once(eventMap: EventMap, context?: any): this;
+ once(name: string, callback: EventCallback, context?: any, priority?: any): this;
+ /**
+ * Remove one or many callbacks. If `context` is null, removes all
+ * callbacks with that function. If `callback` is null, removes all
+ * callbacks for the event. If `name` is null, removes all bound
+ * callbacks for all events.
+ */
+ off(): this;
+ off(eventMap: EventMap | undefined, context?: any): this;
+ off(name: string | undefined, callback?: EventCallback, context?: any): this;
+ /**
+ * Inversion-of-control versions of `on`. Tell *this* object to listen to
+ * an event in another object... keeping track of what it's listening to
+ * for easier unbinding later.
+ */
+ listenTo(obj: EventDispatcher, name: EventMap | string, callback?: EventCallback, priority?: number): this;
+ /**
+ * Inversion-of-control versions of `once`.
+ */
+ listenToOnce(obj: EventDispatcher, eventMap: EventMap): this;
+ listenToOnce(obj: EventDispatcher, name: string, callback: EventCallback, priority?: number): this;
+ /**
+ * Tell this object to stop listening to either specific events ... or
+ * to every object it's currently listening to.
+ */
+ stopListening(obj?: EventDispatcher, name?: EventMap | string, callback?: EventCallback): this;
+ /**
+ * Trigger one or many events, firing all bound callbacks. Callbacks are
+ * passed the same arguments as `trigger` is, apart from the event name
+ * (unless you're listening on `"all"`, which will cause your callback to
+ * receive the true name of the event as the first argument).
+ */
+ trigger(name: Event | EventMap | string, ...args: any[]): this;
+}
diff --git a/node_modules/typedoc/dist/lib/utils/events.js b/node_modules/typedoc/dist/lib/utils/events.js
new file mode 100644
index 0000000..76b9f2a
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/events.js
@@ -0,0 +1,394 @@
+"use strict";
+// Backbone.js 1.2.3
+// (c) 2010-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
+// Backbone may be freely distributed under the MIT license.
+// For all details and documentation:
+// https://backbonejs.org
+//
+// The Events object is a typesafe conversion of Backbones Events object:
+// https://github.com/jashkenas/backbone/blob/05fde9e201f7e2137796663081105cd6dad12a98/backbone.js#L119-L374
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.EventDispatcher = exports.Event = void 0;
+const uniqueId = (function () {
+ const prefixes = Object.create(null);
+ return function (prefix) {
+ const unique = prefixes[prefix] || 1;
+ prefixes[prefix] = unique + 1;
+ return `${prefix}${unique}`;
+ };
+})();
+function once(cb) {
+ let hasRun = false;
+ let result;
+ return function (...args) {
+ if (hasRun === false) {
+ hasRun = true;
+ result = cb.apply(this, args);
+ }
+ return result;
+ };
+}
+// Regular expression used to split event strings.
+const eventSplitter = /\s+/;
+/**
+ * Iterates over the standard `event, callback` (as well as the fancy multiple
+ * space-separated events `"change blur", callback` and jQuery-style event
+ * maps `{event: callback}`).
+ */
+function eventsApi(iteratee, events, name, callback, options) {
+ let i = 0, names;
+ const anyOptions = options;
+ if (name && typeof name === "object") {
+ // Handle event maps.
+ if (callback !== void 0 &&
+ "context" in options &&
+ anyOptions["context"] === void 0) {
+ anyOptions["context"] = callback;
+ }
+ for (names = Object.keys(name); i < names.length; i++) {
+ events = eventsApi(iteratee, events, names[i], name[names[i]], options);
+ }
+ }
+ else if (name && typeof name === "string" && eventSplitter.test(name)) {
+ // Handle space separated event names by delegating them individually.
+ for (names = name.split(eventSplitter); i < names.length; i++) {
+ events = iteratee(events, names[i], callback, options);
+ }
+ }
+ else {
+ // Finally, standard events.
+ events = iteratee(events, name, callback, options);
+ }
+ return events;
+}
+/**
+ * The reducing API that adds a callback to the `events` object.
+ */
+function onApi(events, name, callback, options) {
+ if (callback) {
+ const handlers = (events[name] || (events[name] = []));
+ const context = options.context, ctx = options.ctx, listening = options.listening, priority = options.priority;
+ if (listening) {
+ listening.count++;
+ }
+ handlers.push({
+ callback: callback,
+ context: context,
+ ctx: context || ctx,
+ listening: listening,
+ priority: priority,
+ });
+ handlers.sort((a, b) => b.priority - a.priority);
+ }
+ return events;
+}
+/**
+ * The reducing API that removes a callback from the `events` object.
+ */
+function offApi(events, name, callback, options) {
+ if (!events) {
+ return;
+ }
+ let i = 0, listening;
+ const context = options.context, listeners = options.listeners;
+ // Delete all events listeners and "drop" events.
+ if (!name && !callback && !context) {
+ const ids = Object.keys(listeners || {});
+ for (; i < ids.length; i++) {
+ listening = listeners[ids[i]];
+ delete listeners[listening.id];
+ delete listening.listeningTo[listening.objId];
+ }
+ return;
+ }
+ const names = name ? [name] : Object.keys(events || {});
+ for (; i < names.length; i++) {
+ name = names[i];
+ const handlers = events[name];
+ // Bail out if there are no events stored.
+ if (!handlers) {
+ break;
+ }
+ // Replace events if there are any remaining. Otherwise, clean up.
+ const remaining = [];
+ for (let j = 0; j < handlers.length; j++) {
+ const handler = handlers[j];
+ if ((callback &&
+ callback !== handler.callback &&
+ callback !== handler.callback._callback) ||
+ (context && context !== handler.context)) {
+ remaining.push(handler);
+ }
+ else {
+ listening = handler.listening;
+ if (listening && --listening.count === 0) {
+ delete listeners[listening.id];
+ delete listening.listeningTo[listening.objId];
+ }
+ }
+ }
+ // Update tail event if the list has any events. Otherwise, clean up.
+ if (remaining.length) {
+ events[name] = remaining;
+ }
+ else {
+ delete events[name];
+ }
+ }
+ if (Object.keys(events || {}).length !== 0) {
+ return events;
+ }
+}
+/**
+ * Reduces the event callbacks into a map of `{event: onceWrapper`.}
+ * `offer` unbinds the `onceWrapper` after it has been called.
+ */
+function onceMap(map, name, callback, offer) {
+ if (callback) {
+ const listener = (map[name] = once(function (...args) {
+ offer(name, listener);
+ callback.apply(this, args);
+ }));
+ listener._callback = callback;
+ }
+ return map;
+}
+/**
+ * Handles triggering the appropriate event callbacks.
+ */
+function triggerApi(objEvents, name, _callback, args, triggerer = triggerEvents) {
+ if (objEvents) {
+ const events = objEvents[name];
+ let allEvents = objEvents["all"];
+ if (events && allEvents) {
+ allEvents = allEvents.slice();
+ }
+ if (events) {
+ triggerer(events, args);
+ }
+ if (allEvents) {
+ triggerer(allEvents, [name].concat(args));
+ }
+ }
+ return objEvents;
+}
+/**
+ * A difficult-to-believe, but optimized internal dispatch function for
+ * triggering events. Tries to keep the usual cases speedy (most internal
+ * Backbone events have 3 arguments).
+ */
+function triggerEvents(events, args) {
+ let ev, i = -1;
+ const l = events.length, a1 = args[0], a2 = args[1], a3 = args[2];
+ switch (args.length) {
+ case 0:
+ while (++i < l) {
+ (ev = events[i]).callback.call(ev.ctx);
+ }
+ return;
+ case 1:
+ while (++i < l) {
+ (ev = events[i]).callback.call(ev.ctx, a1);
+ }
+ return;
+ case 2:
+ while (++i < l) {
+ (ev = events[i]).callback.call(ev.ctx, a1, a2);
+ }
+ return;
+ case 3:
+ while (++i < l) {
+ (ev = events[i]).callback.call(ev.ctx, a1, a2, a3);
+ }
+ return;
+ default:
+ while (++i < l) {
+ (ev = events[i]).callback.apply(ev.ctx, args);
+ }
+ return;
+ }
+}
+/**
+ * An event object.
+ */
+class Event {
+ /**
+ * Create a new Event instance.
+ */
+ constructor(name) {
+ /**
+ * Has {@link Event.stopPropagation} been called?
+ */
+ this._isPropagationStopped = false;
+ /**
+ * Has {@link Event.preventDefault} been called?
+ */
+ this._isDefaultPrevented = false;
+ this._name = name;
+ }
+ /**
+ * Stop the propagation of this event. Remaining event handlers will not be executed.
+ */
+ stopPropagation() {
+ this._isPropagationStopped = true;
+ }
+ /**
+ * Prevent the default action associated with this event from being executed.
+ */
+ preventDefault() {
+ this._isDefaultPrevented = true;
+ }
+ /**
+ * Return the event name.
+ */
+ get name() {
+ return this._name;
+ }
+ /**
+ * Has {@link Event.stopPropagation} been called?
+ */
+ get isPropagationStopped() {
+ return this._isPropagationStopped;
+ }
+ /**
+ * Has {@link Event.preventDefault} been called?
+ */
+ get isDefaultPrevented() {
+ return this._isDefaultPrevented;
+ }
+}
+exports.Event = Event;
+/**
+ * A class that provides a custom event channel.
+ *
+ * You may bind a callback to an event with `on` or remove with `off`;
+ * `trigger`-ing an event fires all callbacks in succession.
+ */
+class EventDispatcher {
+ /**
+ * A unique id that identifies this instance.
+ */
+ get _listenId() {
+ return this._savedListenId || (this._savedListenId = uniqueId("l"));
+ }
+ on(nameOrMap, callback, context, priority) {
+ this.internalOn(nameOrMap, callback, context, priority);
+ return this;
+ }
+ /**
+ * Guard the `listening` argument from the public API.
+ */
+ internalOn(name, callback, context, priority = 0, listening) {
+ this._events = eventsApi(onApi, this._events || {}, name, callback, {
+ context: context,
+ ctx: this,
+ listening: listening,
+ priority: priority,
+ });
+ if (listening) {
+ const listeners = this._listeners || (this._listeners = {});
+ listeners[listening.id] = listening;
+ }
+ }
+ once(name, callback, context, priority) {
+ // Map the event into a `{event: once}` object.
+ const events = eventsApi(onceMap, {}, name, callback, this.off.bind(this));
+ return this.on(events, void 0, context, priority);
+ }
+ off(name, callback, context) {
+ if (!this._events) {
+ return this;
+ }
+ this._events = eventsApi(offApi, this._events, name, callback, {
+ context: context,
+ listeners: this._listeners,
+ });
+ return this;
+ }
+ /**
+ * Inversion-of-control versions of `on`. Tell *this* object to listen to
+ * an event in another object... keeping track of what it's listening to
+ * for easier unbinding later.
+ */
+ listenTo(obj, name, callback, priority) {
+ if (!obj) {
+ return this;
+ }
+ const id = obj._listenId;
+ const listeningTo = this._listeningTo || (this._listeningTo = {});
+ let listening = listeningTo[id];
+ // This object is not listening to any other events on `obj` yet.
+ // Setup the necessary references to track the listening callbacks.
+ if (!listening) {
+ const thisId = this._listenId;
+ listening = listeningTo[id] = {
+ obj: obj,
+ objId: id,
+ id: thisId,
+ listeningTo: listeningTo,
+ count: 0,
+ };
+ }
+ // Bind callbacks on obj, and keep track of them on listening.
+ obj.internalOn(name, callback, this, priority, listening);
+ return this;
+ }
+ listenToOnce(obj, name, callback, priority) {
+ // Map the event into a `{event: once}` object.
+ const events = eventsApi(onceMap, {}, name, callback, this.stopListening.bind(this, obj));
+ return this.listenTo(obj, events, void 0, priority);
+ }
+ /**
+ * Tell this object to stop listening to either specific events ... or
+ * to every object it's currently listening to.
+ */
+ stopListening(obj, name, callback) {
+ const listeningTo = this._listeningTo;
+ if (!listeningTo) {
+ return this;
+ }
+ const ids = obj ? [obj._listenId] : Object.keys(listeningTo);
+ for (let i = 0; i < ids.length; i++) {
+ const listening = listeningTo[ids[i]];
+ // If listening doesn't exist, this object is not currently
+ // listening to obj. Break out early.
+ if (!listening) {
+ break;
+ }
+ listening.obj.off(name, callback, this);
+ }
+ if (Object.keys(listeningTo).length === 0) {
+ this._listeningTo = void 0;
+ }
+ return this;
+ }
+ /**
+ * Trigger one or many events, firing all bound callbacks. Callbacks are
+ * passed the same arguments as `trigger` is, apart from the event name
+ * (unless you're listening on `"all"`, which will cause your callback to
+ * receive the true name of the event as the first argument).
+ */
+ trigger(name, ...args) {
+ if (!this._events) {
+ return this;
+ }
+ if (name instanceof Event) {
+ triggerApi(this._events, name.name, void 0, [name], (events, args) => {
+ let ev, i = -1;
+ const l = events.length;
+ while (++i < l) {
+ if (name.isPropagationStopped) {
+ return;
+ }
+ ev = events[i];
+ ev.callback.apply(ev.ctx, args);
+ }
+ });
+ }
+ else {
+ eventsApi(triggerApi, this._events, name, void 0, args);
+ }
+ return this;
+ }
+}
+exports.EventDispatcher = EventDispatcher;
diff --git a/node_modules/typedoc/dist/lib/utils/fs.d.ts b/node_modules/typedoc/dist/lib/utils/fs.d.ts
new file mode 100644
index 0000000..c6d2ab3
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/fs.d.ts
@@ -0,0 +1,62 @@
+export declare function isFile(file: string): boolean;
+export declare function isDir(path: string): boolean;
+export declare function deriveRootDir(globPaths: string[]): string;
+/**
+ * Get the longest directory path common to all files.
+ */
+export declare function getCommonDirectory(files: readonly string[]): string;
+/**
+ * Load the given file and return its contents.
+ *
+ * @param file The path of the file to read.
+ * @returns The files contents.
+ */
+export declare function readFile(file: string): string;
+/**
+ * Write a file to disc.
+ *
+ * If the containing directory does not exist it will be created.
+ *
+ * @param fileName The name of the file that should be written.
+ * @param data The contents of the file.
+ */
+export declare function writeFileSync(fileName: string, data: string): void;
+/**
+ * Write a file to disc.
+ *
+ * If the containing directory does not exist it will be created.
+ *
+ * @param fileName The name of the file that should be written.
+ * @param data The contents of the file.
+ */
+export declare function writeFile(fileName: string, data: string): Promise<void>;
+/**
+ * Copy a file or directory recursively.
+ */
+export declare function copy(src: string, dest: string): Promise<void>;
+export declare function copySync(src: string, dest: string): void;
+/**
+ * Simpler version of `glob.sync` that only covers our use cases, always ignoring node_modules.
+ */
+export declare function glob(pattern: string, root: string, options?: {
+ includeDirectories?: boolean;
+ followSymlinks?: boolean;
+}): string[];
+export declare function hasTsExtension(path: string): boolean;
+export declare function discoverInParentDir<T extends {}>(name: string, dir: string, read: (content: string) => T | undefined): {
+ file: string;
+ content: T;
+} | undefined;
+export declare function discoverInParentDirExactMatch<T extends {}>(name: string, dir: string, read: (content: string) => T | undefined): {
+ file: string;
+ content: T;
+} | undefined;
+export declare function discoverPackageJson(dir: string): {
+ file: string;
+ content: {
+ version?: string | undefined;
+ } & {
+ name: string;
+ };
+} | undefined;
+export declare function findPackageForPath(sourcePath: string): string | undefined;
diff --git a/node_modules/typedoc/dist/lib/utils/fs.js b/node_modules/typedoc/dist/lib/utils/fs.js
new file mode 100644
index 0000000..5bb16d0
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/fs.js
@@ -0,0 +1,340 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.findPackageForPath = exports.discoverPackageJson = exports.discoverInParentDirExactMatch = exports.discoverInParentDir = exports.hasTsExtension = exports.glob = exports.copySync = exports.copy = exports.writeFile = exports.writeFileSync = exports.readFile = exports.getCommonDirectory = exports.deriveRootDir = exports.isDir = exports.isFile = void 0;
+const fs = __importStar(require("fs"));
+const fs_1 = require("fs");
+const minimatch_1 = require("minimatch");
+const path_1 = require("path");
+const validation_1 = require("./validation");
+const paths_1 = require("./paths");
+const array_1 = require("./array");
+function isFile(file) {
+ try {
+ return fs.statSync(file).isFile();
+ }
+ catch {
+ return false;
+ }
+}
+exports.isFile = isFile;
+function isDir(path) {
+ try {
+ return fs.statSync(path).isDirectory();
+ }
+ catch {
+ return false;
+ }
+}
+exports.isDir = isDir;
+function deriveRootDir(globPaths) {
+ const normalized = globPaths.map(paths_1.normalizePath);
+ const globs = (0, paths_1.createMinimatch)(normalized);
+ const rootPaths = globs.flatMap((glob, i) => (0, array_1.filterMap)(glob.set, (set) => {
+ const stop = set.findIndex((part) => typeof part !== "string");
+ if (stop === -1) {
+ return normalized[i];
+ }
+ else {
+ const kept = set.slice(0, stop).join("/");
+ return normalized[i].substring(0, normalized[i].indexOf(kept) + kept.length);
+ }
+ }));
+ return getCommonDirectory(rootPaths);
+}
+exports.deriveRootDir = deriveRootDir;
+/**
+ * Get the longest directory path common to all files.
+ */
+function getCommonDirectory(files) {
+ if (!files.length) {
+ return "";
+ }
+ const roots = files.map((f) => f.split(/\\|\//));
+ if (roots.length === 1) {
+ return roots[0].slice(0, -1).join("/");
+ }
+ let i = 0;
+ while (i < roots[0].length &&
+ new Set(roots.map((part) => part[i])).size === 1) {
+ i++;
+ }
+ return roots[0].slice(0, i).join("/");
+}
+exports.getCommonDirectory = getCommonDirectory;
+/**
+ * Load the given file and return its contents.
+ *
+ * @param file The path of the file to read.
+ * @returns The files contents.
+ */
+function readFile(file) {
+ const buffer = fs.readFileSync(file);
+ switch (buffer[0]) {
+ case 0xfe:
+ if (buffer[1] === 0xff) {
+ let i = 0;
+ while (i + 1 < buffer.length) {
+ const temp = buffer[i];
+ buffer[i] = buffer[i + 1];
+ buffer[i + 1] = temp;
+ i += 2;
+ }
+ return buffer.toString("ucs2", 2);
+ }
+ break;
+ case 0xff:
+ if (buffer[1] === 0xfe) {
+ return buffer.toString("ucs2", 2);
+ }
+ break;
+ case 0xef:
+ if (buffer[1] === 0xbb) {
+ return buffer.toString("utf8", 3);
+ }
+ }
+ return buffer.toString("utf8", 0);
+}
+exports.readFile = readFile;
+/**
+ * Write a file to disc.
+ *
+ * If the containing directory does not exist it will be created.
+ *
+ * @param fileName The name of the file that should be written.
+ * @param data The contents of the file.
+ */
+function writeFileSync(fileName, data) {
+ fs.mkdirSync((0, path_1.dirname)((0, paths_1.normalizePath)(fileName)), { recursive: true });
+ fs.writeFileSync((0, paths_1.normalizePath)(fileName), data);
+}
+exports.writeFileSync = writeFileSync;
+/**
+ * Write a file to disc.
+ *
+ * If the containing directory does not exist it will be created.
+ *
+ * @param fileName The name of the file that should be written.
+ * @param data The contents of the file.
+ */
+async function writeFile(fileName, data) {
+ await fs_1.promises.mkdir((0, path_1.dirname)((0, paths_1.normalizePath)(fileName)), {
+ recursive: true,
+ });
+ await fs_1.promises.writeFile((0, paths_1.normalizePath)(fileName), data);
+}
+exports.writeFile = writeFile;
+/**
+ * Copy a file or directory recursively.
+ */
+async function copy(src, dest) {
+ const stat = await fs_1.promises.stat(src);
+ if (stat.isDirectory()) {
+ const contained = await fs_1.promises.readdir(src);
+ await Promise.all(contained.map((file) => copy((0, path_1.join)(src, file), (0, path_1.join)(dest, file))));
+ }
+ else if (stat.isFile()) {
+ await fs_1.promises.mkdir((0, path_1.dirname)(dest), { recursive: true });
+ await fs_1.promises.copyFile(src, dest);
+ }
+ else {
+ // Do nothing for FIFO, special devices.
+ }
+}
+exports.copy = copy;
+function copySync(src, dest) {
+ const stat = fs.statSync(src);
+ if (stat.isDirectory()) {
+ const contained = fs.readdirSync(src);
+ contained.forEach((file) => copySync((0, path_1.join)(src, file), (0, path_1.join)(dest, file)));
+ }
+ else if (stat.isFile()) {
+ fs.mkdirSync((0, path_1.dirname)(dest), { recursive: true });
+ fs.copyFileSync(src, dest);
+ }
+ else {
+ // Do nothing for FIFO, special devices.
+ }
+}
+exports.copySync = copySync;
+/**
+ * Simpler version of `glob.sync` that only covers our use cases, always ignoring node_modules.
+ */
+function glob(pattern, root, options = {}) {
+ const result = [];
+ const mini = new minimatch_1.Minimatch((0, paths_1.normalizePath)(pattern));
+ const dirs = [(0, paths_1.normalizePath)(root).split("/")];
+ // cache of real paths to avoid infinite recursion
+ const symlinkTargetsSeen = new Set();
+ // cache of fs.realpathSync results to avoid extra I/O
+ const realpathCache = new Map();
+ const { includeDirectories = false, followSymlinks = false } = options;
+ // if we _specifically asked_ for something in node_modules, fine, otherwise ignore it
+ // to avoid globs like '**/*.ts' finding all the .d.ts files in node_modules.
+ // however, if the pattern is something like `!**/node_modules/**`, this will also
+ // cause node_modules to be considered, though it will be discarded by minimatch.
+ const shouldIncludeNodeModules = pattern.includes("node_modules");
+ let dir = dirs.shift();
+ const handleFile = (path) => {
+ const childPath = [...dir, path].join("/");
+ if (mini.match(childPath)) {
+ result.push(childPath);
+ }
+ };
+ const handleDirectory = (path) => {
+ const childPath = [...dir, path];
+ if (mini.set.some((row) => mini.matchOne(childPath, row, /* partial */ true))) {
+ dirs.push(childPath);
+ }
+ };
+ const handleSymlink = (path) => {
+ const childPath = [...dir, path].join("/");
+ let realpath;
+ try {
+ realpath =
+ realpathCache.get(childPath) ?? fs.realpathSync(childPath);
+ realpathCache.set(childPath, realpath);
+ }
+ catch {
+ return;
+ }
+ if (symlinkTargetsSeen.has(realpath)) {
+ return;
+ }
+ symlinkTargetsSeen.add(realpath);
+ try {
+ const stats = fs.statSync(realpath);
+ if (stats.isDirectory()) {
+ handleDirectory(path);
+ }
+ else if (stats.isFile()) {
+ handleFile(path);
+ }
+ else if (stats.isSymbolicLink()) {
+ const dirpath = dir.join("/");
+ if (dirpath === realpath) {
+ // special case: real path of symlink is the directory we're currently traversing
+ return;
+ }
+ const targetPath = (0, path_1.relative)(dirpath, realpath);
+ handleSymlink(targetPath);
+ } // everything else should be ignored
+ }
+ catch (e) {
+ // invalid symbolic link; ignore
+ }
+ };
+ while (dir) {
+ if (includeDirectories && mini.match(dir.join("/"))) {
+ result.push(dir.join("/"));
+ }
+ for (const child of fs.readdirSync(dir.join("/"), {
+ withFileTypes: true,
+ })) {
+ if (child.isFile()) {
+ handleFile(child.name);
+ }
+ else if (child.isDirectory()) {
+ if (shouldIncludeNodeModules || child.name !== "node_modules") {
+ handleDirectory(child.name);
+ }
+ }
+ else if (followSymlinks && child.isSymbolicLink()) {
+ handleSymlink(child.name);
+ }
+ }
+ dir = dirs.shift();
+ }
+ return result;
+}
+exports.glob = glob;
+function hasTsExtension(path) {
+ return /\.[cm]?ts$|\.tsx$/.test(path);
+}
+exports.hasTsExtension = hasTsExtension;
+function discoverInParentDir(name, dir, read) {
+ if (!isDir(dir))
+ return;
+ const reachedTopDirectory = (dirName) => dirName === (0, path_1.resolve)((0, path_1.join)(dirName, ".."));
+ while (!reachedTopDirectory(dir)) {
+ for (const file of fs.readdirSync(dir)) {
+ if (file.toLowerCase() !== name.toLowerCase())
+ continue;
+ try {
+ const content = read(readFile((0, path_1.join)(dir, file)));
+ if (content != null) {
+ return { file: (0, path_1.join)(dir, file), content };
+ }
+ }
+ catch {
+ // Ignore, file didn't pass validation
+ }
+ }
+ dir = (0, path_1.resolve)((0, path_1.join)(dir, ".."));
+ }
+}
+exports.discoverInParentDir = discoverInParentDir;
+function discoverInParentDirExactMatch(name, dir, read) {
+ if (!isDir(dir))
+ return;
+ const reachedTopDirectory = (dirName) => dirName === (0, path_1.resolve)((0, path_1.join)(dirName, ".."));
+ while (!reachedTopDirectory(dir)) {
+ try {
+ const content = read(readFile((0, path_1.join)(dir, name)));
+ if (content != null) {
+ return { file: (0, path_1.join)(dir, name), content };
+ }
+ }
+ catch {
+ // Ignore, file didn't pass validation
+ }
+ dir = (0, path_1.resolve)((0, path_1.join)(dir, ".."));
+ }
+}
+exports.discoverInParentDirExactMatch = discoverInParentDirExactMatch;
+function discoverPackageJson(dir) {
+ return discoverInParentDirExactMatch("package.json", dir, (content) => {
+ const pkg = JSON.parse(content);
+ if ((0, validation_1.validate)({ name: String, version: (0, validation_1.optional)(String) }, pkg)) {
+ return pkg;
+ }
+ });
+}
+exports.discoverPackageJson = discoverPackageJson;
+// dir -> package name according to package.json in this or some parent dir
+const packageCache = new Map();
+function findPackageForPath(sourcePath) {
+ const dir = (0, path_1.dirname)(sourcePath);
+ const cache = packageCache.get(dir);
+ if (cache) {
+ return cache;
+ }
+ const packageJson = discoverPackageJson(dir);
+ if (packageJson) {
+ packageCache.set(dir, packageJson.content.name);
+ return packageJson.content.name;
+ }
+}
+exports.findPackageForPath = findPackageForPath;
diff --git a/node_modules/typedoc/dist/lib/utils/general.d.ts b/node_modules/typedoc/dist/lib/utils/general.d.ts
new file mode 100644
index 0000000..b433311
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/general.d.ts
@@ -0,0 +1,43 @@
+/**
+ * This type provides a flag that can be used to turn off more lax overloads intended for
+ * plugin use only to catch type errors in the TypeDoc codebase. The prepublishOnly npm
+ * script will be used to switch this flag to false when publishing, then immediately back
+ * to true after a successful publish.
+ */
+type InternalOnly = false;
+/**
+ * Helper type to convert `T` to `F` if strict mode is on.
+ *
+ * Can be used in overloads to map a parameter type to `never`. For example, the
+ * following function will work with any string argument, but to improve the type safety
+ * of internal code, we only ever want to pass 'a' or 'b' to it. Plugins on the other
+ * hand need to be able to pass any string to it. Overloads similar to this are used
+ * in the {@link Options} class.
+ *
+ * This is also used to prevent TypeDoc code from using deprecated methods which will
+ * be removed in a future release.
+ *
+ * ```ts
+ * function over(flag: 'a' | 'b'): string
+ * function over(flag: IfStrict<string, never>): string
+ * function over(flag: string): string { return flag }
+ * ```
+ */
+export type IfInternal<T, F> = InternalOnly extends true ? T : F;
+/**
+ * Helper type to convert `T` to `never` if strict mode is on.
+ *
+ * See {@link IfInternal} for the rationale.
+ */
+export type NeverIfInternal<T> = IfInternal<never, T>;
+/**
+ * Resolves a string type into a union of characters, `"ab"` turns into `"a" | "b"`.
+ */
+export type Chars<T extends string> = T extends `${infer C}${infer R}` ? C | Chars<R> : never;
+/**
+ * Utility to help type checking ensure that there is no uncovered case.
+ */
+export declare function assertNever(x: never): never;
+export declare function hasBeenLoadedMultipleTimes(): boolean;
+export declare function getLoadedPaths(): string[];
+export {};
diff --git a/node_modules/typedoc/dist/lib/utils/general.js b/node_modules/typedoc/dist/lib/utils/general.js
new file mode 100644
index 0000000..36323d4
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/general.js
@@ -0,0 +1,55 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getLoadedPaths = exports.hasBeenLoadedMultipleTimes = exports.assertNever = void 0;
+const path_1 = require("path");
+const Util = __importStar(require("util"));
+/**
+ * Utility to help type checking ensure that there is no uncovered case.
+ */
+function assertNever(x) {
+ throw new Error(`Expected handling to cover all possible cases, but it didn't cover: ${Util.inspect(x)}`);
+}
+exports.assertNever = assertNever;
+/**
+ * This is a hack to make it possible to detect and warn about installation setups
+ * which result in TypeDoc being installed multiple times. If TypeDoc has been loaded
+ * multiple times, then parts of it will not work as expected.
+ */
+const loadSymbol = Symbol.for("typedoc_loads");
+const pathSymbol = Symbol.for("typedoc_paths");
+const g = globalThis;
+g[loadSymbol] = (g[loadSymbol] || 0) + 1;
+g[pathSymbol] || (g[pathSymbol] = []);
+// transform /abs/path/to/typedoc/dist/lib/utils/general -> /abs/path/to/typedoc
+g[pathSymbol].push((0, path_1.dirname)((0, path_1.dirname)((0, path_1.dirname)(__dirname))));
+function hasBeenLoadedMultipleTimes() {
+ return g[loadSymbol] !== 1;
+}
+exports.hasBeenLoadedMultipleTimes = hasBeenLoadedMultipleTimes;
+function getLoadedPaths() {
+ return g[pathSymbol] || [];
+}
+exports.getLoadedPaths = getLoadedPaths;
diff --git a/node_modules/typedoc/dist/lib/utils/highlighter.d.ts b/node_modules/typedoc/dist/lib/utils/highlighter.d.ts
new file mode 100644
index 0000000..229db85
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/highlighter.d.ts
@@ -0,0 +1,6 @@
+import { Theme } from "shiki";
+export declare function loadHighlighter(lightTheme: Theme, darkTheme: Theme): Promise<void>;
+export declare function isSupportedLanguage(lang: string): boolean;
+export declare function getSupportedLanguages(): string[];
+export declare function highlight(code: string, lang: string): string;
+export declare function getStyles(): string;
diff --git a/node_modules/typedoc/dist/lib/utils/highlighter.js b/node_modules/typedoc/dist/lib/utils/highlighter.js
new file mode 100644
index 0000000..1cbbfe5
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/highlighter.js
@@ -0,0 +1,155 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getStyles = exports.highlight = exports.getSupportedLanguages = exports.isSupportedLanguage = exports.loadHighlighter = void 0;
+const assert_1 = require("assert");
+const shiki_1 = require("shiki");
+const array_1 = require("./array");
+const JSX = __importStar(require("./jsx"));
+const aliases = new Map();
+for (const lang of shiki_1.BUNDLED_LANGUAGES) {
+ for (const alias of lang.aliases || []) {
+ aliases.set(alias, lang.id);
+ }
+}
+const supportedLanguages = (0, array_1.unique)(["text", ...aliases.keys(), ...shiki_1.BUNDLED_LANGUAGES.map((lang) => lang.id)]).sort();
+class DoubleHighlighter {
+ constructor(highlighter, light, dark) {
+ this.highlighter = highlighter;
+ this.light = light;
+ this.dark = dark;
+ this.schemes = new Map();
+ }
+ highlight(code, lang) {
+ const lightTokens = this.highlighter.codeToThemedTokens(code, lang, this.light, { includeExplanation: false });
+ const darkTokens = this.highlighter.codeToThemedTokens(code, lang, this.dark, { includeExplanation: false });
+ // If this fails... something went *very* wrong.
+ (0, assert_1.ok)(lightTokens.length === darkTokens.length);
+ const docEls = [];
+ for (const [lightLine, darkLine] of (0, array_1.zip)(lightTokens, darkTokens)) {
+ // Different themes can have different rules for when colors change... so unfortunately we have to deal with different
+ // sets of tokens.Example: light_plus and dark_plus tokenize " = " differently in the `schemes`
+ // declaration for this file.
+ while (lightLine.length && darkLine.length) {
+ // Simple case, same token.
+ if (lightLine[0].content === darkLine[0].content) {
+ docEls.push(JSX.createElement("span", { class: this.getClass(lightLine[0].color, darkLine[0].color) }, lightLine[0].content));
+ lightLine.shift();
+ darkLine.shift();
+ continue;
+ }
+ if (lightLine[0].content.length < darkLine[0].content.length) {
+ docEls.push(JSX.createElement("span", { class: this.getClass(lightLine[0].color, darkLine[0].color) }, lightLine[0].content));
+ darkLine[0].content = darkLine[0].content.substring(lightLine[0].content.length);
+ lightLine.shift();
+ continue;
+ }
+ docEls.push(JSX.createElement("span", { class: this.getClass(lightLine[0].color, darkLine[0].color) }, darkLine[0].content));
+ lightLine[0].content = lightLine[0].content.substring(darkLine[0].content.length);
+ darkLine.shift();
+ }
+ docEls.push(JSX.createElement("br", null));
+ }
+ docEls.pop(); // Remove last <br>
+ return JSX.renderElement(JSX.createElement(JSX.Fragment, null, docEls));
+ }
+ getStyles() {
+ const style = [":root {"];
+ const lightRules = [];
+ const darkRules = [];
+ let i = 0;
+ for (const key of this.schemes.keys()) {
+ const [light, dark] = key.split(" | ");
+ style.push(` --light-hl-${i}: ${light};`);
+ style.push(` --dark-hl-${i}: ${dark};`);
+ lightRules.push(` --hl-${i}: var(--light-hl-${i});`);
+ darkRules.push(` --hl-${i}: var(--dark-hl-${i});`);
+ i++;
+ }
+ style.push(` --light-code-background: ${this.highlighter.getTheme(this.light).bg};`);
+ style.push(` --dark-code-background: ${this.highlighter.getTheme(this.dark).bg};`);
+ lightRules.push(` --code-background: var(--light-code-background);`);
+ darkRules.push(` --code-background: var(--dark-code-background);`);
+ style.push("}", "");
+ style.push("@media (prefers-color-scheme: light) { :root {");
+ style.push(...lightRules);
+ style.push("} }", "");
+ style.push("@media (prefers-color-scheme: dark) { :root {");
+ style.push(...darkRules);
+ style.push("} }", "");
+ style.push(":root[data-theme='light'] {");
+ style.push(...lightRules);
+ style.push("}", "");
+ style.push(":root[data-theme='dark'] {");
+ style.push(...darkRules);
+ style.push("}", "");
+ for (i = 0; i < this.schemes.size; i++) {
+ style.push(`.hl-${i} { color: var(--hl-${i}); }`);
+ }
+ style.push("pre, code { background: var(--code-background); }", "");
+ return style.join("\n");
+ }
+ getClass(lightColor, darkColor) {
+ const key = `${lightColor} | ${darkColor}`;
+ let scheme = this.schemes.get(key);
+ if (scheme == null) {
+ scheme = `hl-${this.schemes.size}`;
+ this.schemes.set(key, scheme);
+ }
+ return scheme;
+ }
+}
+let highlighter;
+async function loadHighlighter(lightTheme, darkTheme) {
+ if (highlighter)
+ return;
+ const hl = await (0, shiki_1.getHighlighter)({ themes: [lightTheme, darkTheme] });
+ highlighter = new DoubleHighlighter(hl, lightTheme, darkTheme);
+}
+exports.loadHighlighter = loadHighlighter;
+function isSupportedLanguage(lang) {
+ return getSupportedLanguages().includes(lang);
+}
+exports.isSupportedLanguage = isSupportedLanguage;
+function getSupportedLanguages() {
+ return supportedLanguages;
+}
+exports.getSupportedLanguages = getSupportedLanguages;
+function highlight(code, lang) {
+ (0, assert_1.ok)(highlighter, "Tried to highlight with an uninitialized highlighter");
+ if (!isSupportedLanguage(lang)) {
+ return code;
+ }
+ if (lang === "text") {
+ return JSX.renderElement(JSX.createElement(JSX.Fragment, null, code));
+ }
+ return highlighter.highlight(code, aliases.get(lang) ?? lang);
+}
+exports.highlight = highlight;
+function getStyles() {
+ (0, assert_1.ok)(highlighter, "Tried to highlight with an uninitialized highlighter");
+ return highlighter.getStyles();
+}
+exports.getStyles = getStyles;
diff --git a/node_modules/typedoc/dist/lib/utils/hooks.d.ts b/node_modules/typedoc/dist/lib/utils/hooks.d.ts
new file mode 100644
index 0000000..7cab3a4
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/hooks.d.ts
@@ -0,0 +1,51 @@
+type EventHooksMomento<T extends Record<keyof T, unknown[]>, _R> = {
+ __eventHooksMomentoBrand: never;
+};
+/**
+ * Event emitter which allows listeners to return a value.
+ *
+ * This is beneficial for the themes since it allows plugins to modify the HTML output
+ * without doing unsafe text replacement.
+ *
+ * Very simple event emitter class which collects the return values of its listeners.
+ *
+ * @example
+ * ```ts
+ * const x = new EventHooks<{ a: [string] }, string>()
+ * x.on('a', a => a.repeat(123)) // ok, returns a string
+ * x.on('b', console.log) // error, 'b' is not assignable to 'a'
+ * x.on('a' a => 1) // error, returns a number but expected a string
+ * ```
+ */
+export declare class EventHooks<T extends Record<keyof T, unknown[]>, R> {
+ private _listeners;
+ /**
+ * Starts listening to an event.
+ * @param event the event to listen to.
+ * @param listener function to be called when an this event is emitted.
+ * @param order optional order to insert this hook with.
+ */
+ on<K extends keyof T>(event: K, listener: (...args: T[K]) => R, order?: number): void;
+ /**
+ * Listens to a single occurrence of an event.
+ * @param event the event to listen to.
+ * @param listener function to be called when an this event is emitted.
+ * @param order optional order to insert this hook with.
+ */
+ once<K extends keyof T>(event: K, listener: (...args: T[K]) => R, order?: number): void;
+ /**
+ * Stops listening to an event.
+ * @param event the event to stop listening to.
+ * @param listener the function to remove from the listener array.
+ */
+ off<K extends keyof T>(event: K, listener: (...args: T[K]) => R): void;
+ /**
+ * Emits an event to all currently subscribed listeners.
+ * @param event the event to emit.
+ * @param args any arguments required for the event.
+ */
+ emit<K extends keyof T>(event: K, ...args: T[K]): R[];
+ saveMomento(): EventHooksMomento<T, R>;
+ restoreMomento(momento: EventHooksMomento<T, R>): void;
+}
+export {};
diff --git a/node_modules/typedoc/dist/lib/utils/hooks.js b/node_modules/typedoc/dist/lib/utils/hooks.js
new file mode 100644
index 0000000..426f45b
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/hooks.js
@@ -0,0 +1,96 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.EventHooks = void 0;
+const array_1 = require("./array");
+const momentos = new WeakMap();
+/**
+ * Event emitter which allows listeners to return a value.
+ *
+ * This is beneficial for the themes since it allows plugins to modify the HTML output
+ * without doing unsafe text replacement.
+ *
+ * Very simple event emitter class which collects the return values of its listeners.
+ *
+ * @example
+ * ```ts
+ * const x = new EventHooks<{ a: [string] }, string>()
+ * x.on('a', a => a.repeat(123)) // ok, returns a string
+ * x.on('b', console.log) // error, 'b' is not assignable to 'a'
+ * x.on('a' a => 1) // error, returns a number but expected a string
+ * ```
+ */
+class EventHooks {
+ constructor() {
+ // Function is *usually* not a good type to use, but here it lets us specify stricter
+ // contracts in the methods while not casting everywhere this is used.
+ this._listeners = new Map();
+ }
+ /**
+ * Starts listening to an event.
+ * @param event the event to listen to.
+ * @param listener function to be called when an this event is emitted.
+ * @param order optional order to insert this hook with.
+ */
+ on(event, listener, order = 0) {
+ const list = (this._listeners.get(event) || []).slice();
+ (0, array_1.insertOrderSorted)(list, { listener, order });
+ this._listeners.set(event, list);
+ }
+ /**
+ * Listens to a single occurrence of an event.
+ * @param event the event to listen to.
+ * @param listener function to be called when an this event is emitted.
+ * @param order optional order to insert this hook with.
+ */
+ once(event, listener, order = 0) {
+ const list = (this._listeners.get(event) || []).slice();
+ (0, array_1.insertOrderSorted)(list, { listener, once: true, order });
+ this._listeners.set(event, list);
+ }
+ /**
+ * Stops listening to an event.
+ * @param event the event to stop listening to.
+ * @param listener the function to remove from the listener array.
+ */
+ off(event, listener) {
+ const listeners = this._listeners.get(event);
+ if (listeners) {
+ const index = listeners.findIndex((lo) => lo.listener === listener);
+ if (index > -1) {
+ listeners.splice(index, 1);
+ }
+ }
+ }
+ /**
+ * Emits an event to all currently subscribed listeners.
+ * @param event the event to emit.
+ * @param args any arguments required for the event.
+ */
+ emit(event, ...args) {
+ const listeners = this._listeners.get(event)?.slice() || [];
+ this._listeners.set(event, listeners.filter(({ once }) => !once));
+ return listeners.map(({ listener }) => listener(...args));
+ }
+ saveMomento() {
+ const momento = {};
+ const save = new Map();
+ for (const [key, val] of this._listeners) {
+ save.set(key, [...val]);
+ }
+ momentos.set(momento, save);
+ return momento;
+ }
+ restoreMomento(momento) {
+ const saved = momentos.get(momento);
+ if (saved) {
+ this._listeners.clear();
+ for (const [key, val] of saved) {
+ this._listeners.set(key, [...val]);
+ }
+ }
+ else {
+ throw new Error("Momento not found.");
+ }
+ }
+}
+exports.EventHooks = EventHooks;
diff --git a/node_modules/typedoc/dist/lib/utils/html-entities.json b/node_modules/typedoc/dist/lib/utils/html-entities.json
new file mode 100644
index 0000000..4715c8f
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/html-entities.json
@@ -0,0 +1,2233 @@
+{
+ "AElig": "\u00C6",
+ "AElig;": "\u00C6",
+ "AMP": "\u0026",
+ "AMP;": "\u0026",
+ "Aacute": "\u00C1",
+ "Aacute;": "\u00C1",
+ "Abreve;": "\u0102",
+ "Acirc": "\u00C2",
+ "Acirc;": "\u00C2",
+ "Acy;": "\u0410",
+ "Afr;": "\uD835\uDD04",
+ "Agrave": "\u00C0",
+ "Agrave;": "\u00C0",
+ "Alpha;": "\u0391",
+ "Amacr;": "\u0100",
+ "And;": "\u2A53",
+ "Aogon;": "\u0104",
+ "Aopf;": "\uD835\uDD38",
+ "ApplyFunction;": "\u2061",
+ "Aring": "\u00C5",
+ "Aring;": "\u00C5",
+ "Ascr;": "\uD835\uDC9C",
+ "Assign;": "\u2254",
+ "Atilde": "\u00C3",
+ "Atilde;": "\u00C3",
+ "Auml": "\u00C4",
+ "Auml;": "\u00C4",
+ "Backslash;": "\u2216",
+ "Barv;": "\u2AE7",
+ "Barwed;": "\u2306",
+ "Bcy;": "\u0411",
+ "Because;": "\u2235",
+ "Bernoullis;": "\u212C",
+ "Beta;": "\u0392",
+ "Bfr;": "\uD835\uDD05",
+ "Bopf;": "\uD835\uDD39",
+ "Breve;": "\u02D8",
+ "Bscr;": "\u212C",
+ "Bumpeq;": "\u224E",
+ "CHcy;": "\u0427",
+ "COPY": "\u00A9",
+ "COPY;": "\u00A9",
+ "Cacute;": "\u0106",
+ "Cap;": "\u22D2",
+ "CapitalDifferentialD;": "\u2145",
+ "Cayleys;": "\u212D",
+ "Ccaron;": "\u010C",
+ "Ccedil": "\u00C7",
+ "Ccedil;": "\u00C7",
+ "Ccirc;": "\u0108",
+ "Cconint;": "\u2230",
+ "Cdot;": "\u010A",
+ "Cedilla;": "\u00B8",
+ "CenterDot;": "\u00B7",
+ "Cfr;": "\u212D",
+ "Chi;": "\u03A7",
+ "CircleDot;": "\u2299",
+ "CircleMinus;": "\u2296",
+ "CirclePlus;": "\u2295",
+ "CircleTimes;": "\u2297",
+ "ClockwiseContourIntegral;": "\u2232",
+ "CloseCurlyDoubleQuote;": "\u201D",
+ "CloseCurlyQuote;": "\u2019",
+ "Colon;": "\u2237",
+ "Colone;": "\u2A74",
+ "Congruent;": "\u2261",
+ "Conint;": "\u222F",
+ "ContourIntegral;": "\u222E",
+ "Copf;": "\u2102",
+ "Coproduct;": "\u2210",
+ "CounterClockwiseContourIntegral;": "\u2233",
+ "Cross;": "\u2A2F",
+ "Cscr;": "\uD835\uDC9E",
+ "Cup;": "\u22D3",
+ "CupCap;": "\u224D",
+ "DD;": "\u2145",
+ "DDotrahd;": "\u2911",
+ "DJcy;": "\u0402",
+ "DScy;": "\u0405",
+ "DZcy;": "\u040F",
+ "Dagger;": "\u2021",
+ "Darr;": "\u21A1",
+ "Dashv;": "\u2AE4",
+ "Dcaron;": "\u010E",
+ "Dcy;": "\u0414",
+ "Del;": "\u2207",
+ "Delta;": "\u0394",
+ "Dfr;": "\uD835\uDD07",
+ "DiacriticalAcute;": "\u00B4",
+ "DiacriticalDot;": "\u02D9",
+ "DiacriticalDoubleAcute;": "\u02DD",
+ "DiacriticalGrave;": "\u0060",
+ "DiacriticalTilde;": "\u02DC",
+ "Diamond;": "\u22C4",
+ "DifferentialD;": "\u2146",
+ "Dopf;": "\uD835\uDD3B",
+ "Dot;": "\u00A8",
+ "DotDot;": "\u20DC",
+ "DotEqual;": "\u2250",
+ "DoubleContourIntegral;": "\u222F",
+ "DoubleDot;": "\u00A8",
+ "DoubleDownArrow;": "\u21D3",
+ "DoubleLeftArrow;": "\u21D0",
+ "DoubleLeftRightArrow;": "\u21D4",
+ "DoubleLeftTee;": "\u2AE4",
+ "DoubleLongLeftArrow;": "\u27F8",
+ "DoubleLongLeftRightArrow;": "\u27FA",
+ "DoubleLongRightArrow;": "\u27F9",
+ "DoubleRightArrow;": "\u21D2",
+ "DoubleRightTee;": "\u22A8",
+ "DoubleUpArrow;": "\u21D1",
+ "DoubleUpDownArrow;": "\u21D5",
+ "DoubleVerticalBar;": "\u2225",
+ "DownArrow;": "\u2193",
+ "DownArrowBar;": "\u2913",
+ "DownArrowUpArrow;": "\u21F5",
+ "DownBreve;": "\u0311",
+ "DownLeftRightVector;": "\u2950",
+ "DownLeftTeeVector;": "\u295E",
+ "DownLeftVector;": "\u21BD",
+ "DownLeftVectorBar;": "\u2956",
+ "DownRightTeeVector;": "\u295F",
+ "DownRightVector;": "\u21C1",
+ "DownRightVectorBar;": "\u2957",
+ "DownTee;": "\u22A4",
+ "DownTeeArrow;": "\u21A7",
+ "Downarrow;": "\u21D3",
+ "Dscr;": "\uD835\uDC9F",
+ "Dstrok;": "\u0110",
+ "ENG;": "\u014A",
+ "ETH": "\u00D0",
+ "ETH;": "\u00D0",
+ "Eacute": "\u00C9",
+ "Eacute;": "\u00C9",
+ "Ecaron;": "\u011A",
+ "Ecirc": "\u00CA",
+ "Ecirc;": "\u00CA",
+ "Ecy;": "\u042D",
+ "Edot;": "\u0116",
+ "Efr;": "\uD835\uDD08",
+ "Egrave": "\u00C8",
+ "Egrave;": "\u00C8",
+ "Element;": "\u2208",
+ "Emacr;": "\u0112",
+ "EmptySmallSquare;": "\u25FB",
+ "EmptyVerySmallSquare;": "\u25AB",
+ "Eogon;": "\u0118",
+ "Eopf;": "\uD835\uDD3C",
+ "Epsilon;": "\u0395",
+ "Equal;": "\u2A75",
+ "EqualTilde;": "\u2242",
+ "Equilibrium;": "\u21CC",
+ "Escr;": "\u2130",
+ "Esim;": "\u2A73",
+ "Eta;": "\u0397",
+ "Euml": "\u00CB",
+ "Euml;": "\u00CB",
+ "Exists;": "\u2203",
+ "ExponentialE;": "\u2147",
+ "Fcy;": "\u0424",
+ "Ffr;": "\uD835\uDD09",
+ "FilledSmallSquare;": "\u25FC",
+ "FilledVerySmallSquare;": "\u25AA",
+ "Fopf;": "\uD835\uDD3D",
+ "ForAll;": "\u2200",
+ "Fouriertrf;": "\u2131",
+ "Fscr;": "\u2131",
+ "GJcy;": "\u0403",
+ "GT": "\u003E",
+ "GT;": "\u003E",
+ "Gamma;": "\u0393",
+ "Gammad;": "\u03DC",
+ "Gbreve;": "\u011E",
+ "Gcedil;": "\u0122",
+ "Gcirc;": "\u011C",
+ "Gcy;": "\u0413",
+ "Gdot;": "\u0120",
+ "Gfr;": "\uD835\uDD0A",
+ "Gg;": "\u22D9",
+ "Gopf;": "\uD835\uDD3E",
+ "GreaterEqual;": "\u2265",
+ "GreaterEqualLess;": "\u22DB",
+ "GreaterFullEqual;": "\u2267",
+ "GreaterGreater;": "\u2AA2",
+ "GreaterLess;": "\u2277",
+ "GreaterSlantEqual;": "\u2A7E",
+ "GreaterTilde;": "\u2273",
+ "Gscr;": "\uD835\uDCA2",
+ "Gt;": "\u226B",
+ "HARDcy;": "\u042A",
+ "Hacek;": "\u02C7",
+ "Hat;": "\u005E",
+ "Hcirc;": "\u0124",
+ "Hfr;": "\u210C",
+ "HilbertSpace;": "\u210B",
+ "Hopf;": "\u210D",
+ "HorizontalLine;": "\u2500",
+ "Hscr;": "\u210B",
+ "Hstrok;": "\u0126",
+ "HumpDownHump;": "\u224E",
+ "HumpEqual;": "\u224F",
+ "IEcy;": "\u0415",
+ "IJlig;": "\u0132",
+ "IOcy;": "\u0401",
+ "Iacute": "\u00CD",
+ "Iacute;": "\u00CD",
+ "Icirc": "\u00CE",
+ "Icirc;": "\u00CE",
+ "Icy;": "\u0418",
+ "Idot;": "\u0130",
+ "Ifr;": "\u2111",
+ "Igrave": "\u00CC",
+ "Igrave;": "\u00CC",
+ "Im;": "\u2111",
+ "Imacr;": "\u012A",
+ "ImaginaryI;": "\u2148",
+ "Implies;": "\u21D2",
+ "Int;": "\u222C",
+ "Integral;": "\u222B",
+ "Intersection;": "\u22C2",
+ "InvisibleComma;": "\u2063",
+ "InvisibleTimes;": "\u2062",
+ "Iogon;": "\u012E",
+ "Iopf;": "\uD835\uDD40",
+ "Iota;": "\u0399",
+ "Iscr;": "\u2110",
+ "Itilde;": "\u0128",
+ "Iukcy;": "\u0406",
+ "Iuml": "\u00CF",
+ "Iuml;": "\u00CF",
+ "Jcirc;": "\u0134",
+ "Jcy;": "\u0419",
+ "Jfr;": "\uD835\uDD0D",
+ "Jopf;": "\uD835\uDD41",
+ "Jscr;": "\uD835\uDCA5",
+ "Jsercy;": "\u0408",
+ "Jukcy;": "\u0404",
+ "KHcy;": "\u0425",
+ "KJcy;": "\u040C",
+ "Kappa;": "\u039A",
+ "Kcedil;": "\u0136",
+ "Kcy;": "\u041A",
+ "Kfr;": "\uD835\uDD0E",
+ "Kopf;": "\uD835\uDD42",
+ "Kscr;": "\uD835\uDCA6",
+ "LJcy;": "\u0409",
+ "LT": "\u003C",
+ "LT;": "\u003C",
+ "Lacute;": "\u0139",
+ "Lambda;": "\u039B",
+ "Lang;": "\u27EA",
+ "Laplacetrf;": "\u2112",
+ "Larr;": "\u219E",
+ "Lcaron;": "\u013D",
+ "Lcedil;": "\u013B",
+ "Lcy;": "\u041B",
+ "LeftAngleBracket;": "\u27E8",
+ "LeftArrow;": "\u2190",
+ "LeftArrowBar;": "\u21E4",
+ "LeftArrowRightArrow;": "\u21C6",
+ "LeftCeiling;": "\u2308",
+ "LeftDoubleBracket;": "\u27E6",
+ "LeftDownTeeVector;": "\u2961",
+ "LeftDownVector;": "\u21C3",
+ "LeftDownVectorBar;": "\u2959",
+ "LeftFloor;": "\u230A",
+ "LeftRightArrow;": "\u2194",
+ "LeftRightVector;": "\u294E",
+ "LeftTee;": "\u22A3",
+ "LeftTeeArrow;": "\u21A4",
+ "LeftTeeVector;": "\u295A",
+ "LeftTriangle;": "\u22B2",
+ "LeftTriangleBar;": "\u29CF",
+ "LeftTriangleEqual;": "\u22B4",
+ "LeftUpDownVector;": "\u2951",
+ "LeftUpTeeVector;": "\u2960",
+ "LeftUpVector;": "\u21BF",
+ "LeftUpVectorBar;": "\u2958",
+ "LeftVector;": "\u21BC",
+ "LeftVectorBar;": "\u2952",
+ "Leftarrow;": "\u21D0",
+ "Leftrightarrow;": "\u21D4",
+ "LessEqualGreater;": "\u22DA",
+ "LessFullEqual;": "\u2266",
+ "LessGreater;": "\u2276",
+ "LessLess;": "\u2AA1",
+ "LessSlantEqual;": "\u2A7D",
+ "LessTilde;": "\u2272",
+ "Lfr;": "\uD835\uDD0F",
+ "Ll;": "\u22D8",
+ "Lleftarrow;": "\u21DA",
+ "Lmidot;": "\u013F",
+ "LongLeftArrow;": "\u27F5",
+ "LongLeftRightArrow;": "\u27F7",
+ "LongRightArrow;": "\u27F6",
+ "Longleftarrow;": "\u27F8",
+ "Longleftrightarrow;": "\u27FA",
+ "Longrightarrow;": "\u27F9",
+ "Lopf;": "\uD835\uDD43",
+ "LowerLeftArrow;": "\u2199",
+ "LowerRightArrow;": "\u2198",
+ "Lscr;": "\u2112",
+ "Lsh;": "\u21B0",
+ "Lstrok;": "\u0141",
+ "Lt;": "\u226A",
+ "Map;": "\u2905",
+ "Mcy;": "\u041C",
+ "MediumSpace;": "\u205F",
+ "Mellintrf;": "\u2133",
+ "Mfr;": "\uD835\uDD10",
+ "MinusPlus;": "\u2213",
+ "Mopf;": "\uD835\uDD44",
+ "Mscr;": "\u2133",
+ "Mu;": "\u039C",
+ "NJcy;": "\u040A",
+ "Nacute;": "\u0143",
+ "Ncaron;": "\u0147",
+ "Ncedil;": "\u0145",
+ "Ncy;": "\u041D",
+ "NegativeMediumSpace;": "\u200B",
+ "NegativeThickSpace;": "\u200B",
+ "NegativeThinSpace;": "\u200B",
+ "NegativeVeryThinSpace;": "\u200B",
+ "NestedGreaterGreater;": "\u226B",
+ "NestedLessLess;": "\u226A",
+ "NewLine;": "\u000A",
+ "Nfr;": "\uD835\uDD11",
+ "NoBreak;": "\u2060",
+ "NonBreakingSpace;": "\u00A0",
+ "Nopf;": "\u2115",
+ "Not;": "\u2AEC",
+ "NotCongruent;": "\u2262",
+ "NotCupCap;": "\u226D",
+ "NotDoubleVerticalBar;": "\u2226",
+ "NotElement;": "\u2209",
+ "NotEqual;": "\u2260",
+ "NotEqualTilde;": "\u2242\u0338",
+ "NotExists;": "\u2204",
+ "NotGreater;": "\u226F",
+ "NotGreaterEqual;": "\u2271",
+ "NotGreaterFullEqual;": "\u2267\u0338",
+ "NotGreaterGreater;": "\u226B\u0338",
+ "NotGreaterLess;": "\u2279",
+ "NotGreaterSlantEqual;": "\u2A7E\u0338",
+ "NotGreaterTilde;": "\u2275",
+ "NotHumpDownHump;": "\u224E\u0338",
+ "NotHumpEqual;": "\u224F\u0338",
+ "NotLeftTriangle;": "\u22EA",
+ "NotLeftTriangleBar;": "\u29CF\u0338",
+ "NotLeftTriangleEqual;": "\u22EC",
+ "NotLess;": "\u226E",
+ "NotLessEqual;": "\u2270",
+ "NotLessGreater;": "\u2278",
+ "NotLessLess;": "\u226A\u0338",
+ "NotLessSlantEqual;": "\u2A7D\u0338",
+ "NotLessTilde;": "\u2274",
+ "NotNestedGreaterGreater;": "\u2AA2\u0338",
+ "NotNestedLessLess;": "\u2AA1\u0338",
+ "NotPrecedes;": "\u2280",
+ "NotPrecedesEqual;": "\u2AAF\u0338",
+ "NotPrecedesSlantEqual;": "\u22E0",
+ "NotReverseElement;": "\u220C",
+ "NotRightTriangle;": "\u22EB",
+ "NotRightTriangleBar;": "\u29D0\u0338",
+ "NotRightTriangleEqual;": "\u22ED",
+ "NotSquareSubset;": "\u228F\u0338",
+ "NotSquareSubsetEqual;": "\u22E2",
+ "NotSquareSuperset;": "\u2290\u0338",
+ "NotSquareSupersetEqual;": "\u22E3",
+ "NotSubset;": "\u2282\u20D2",
+ "NotSubsetEqual;": "\u2288",
+ "NotSucceeds;": "\u2281",
+ "NotSucceedsEqual;": "\u2AB0\u0338",
+ "NotSucceedsSlantEqual;": "\u22E1",
+ "NotSucceedsTilde;": "\u227F\u0338",
+ "NotSuperset;": "\u2283\u20D2",
+ "NotSupersetEqual;": "\u2289",
+ "NotTilde;": "\u2241",
+ "NotTildeEqual;": "\u2244",
+ "NotTildeFullEqual;": "\u2247",
+ "NotTildeTilde;": "\u2249",
+ "NotVerticalBar;": "\u2224",
+ "Nscr;": "\uD835\uDCA9",
+ "Ntilde": "\u00D1",
+ "Ntilde;": "\u00D1",
+ "Nu;": "\u039D",
+ "OElig;": "\u0152",
+ "Oacute": "\u00D3",
+ "Oacute;": "\u00D3",
+ "Ocirc": "\u00D4",
+ "Ocirc;": "\u00D4",
+ "Ocy;": "\u041E",
+ "Odblac;": "\u0150",
+ "Ofr;": "\uD835\uDD12",
+ "Ograve": "\u00D2",
+ "Ograve;": "\u00D2",
+ "Omacr;": "\u014C",
+ "Omega;": "\u03A9",
+ "Omicron;": "\u039F",
+ "Oopf;": "\uD835\uDD46",
+ "OpenCurlyDoubleQuote;": "\u201C",
+ "OpenCurlyQuote;": "\u2018",
+ "Or;": "\u2A54",
+ "Oscr;": "\uD835\uDCAA",
+ "Oslash": "\u00D8",
+ "Oslash;": "\u00D8",
+ "Otilde": "\u00D5",
+ "Otilde;": "\u00D5",
+ "Otimes;": "\u2A37",
+ "Ouml": "\u00D6",
+ "Ouml;": "\u00D6",
+ "OverBar;": "\u203E",
+ "OverBrace;": "\u23DE",
+ "OverBracket;": "\u23B4",
+ "OverParenthesis;": "\u23DC",
+ "PartialD;": "\u2202",
+ "Pcy;": "\u041F",
+ "Pfr;": "\uD835\uDD13",
+ "Phi;": "\u03A6",
+ "Pi;": "\u03A0",
+ "PlusMinus;": "\u00B1",
+ "Poincareplane;": "\u210C",
+ "Popf;": "\u2119",
+ "Pr;": "\u2ABB",
+ "Precedes;": "\u227A",
+ "PrecedesEqual;": "\u2AAF",
+ "PrecedesSlantEqual;": "\u227C",
+ "PrecedesTilde;": "\u227E",
+ "Prime;": "\u2033",
+ "Product;": "\u220F",
+ "Proportion;": "\u2237",
+ "Proportional;": "\u221D",
+ "Pscr;": "\uD835\uDCAB",
+ "Psi;": "\u03A8",
+ "QUOT": "\u0022",
+ "QUOT;": "\u0022",
+ "Qfr;": "\uD835\uDD14",
+ "Qopf;": "\u211A",
+ "Qscr;": "\uD835\uDCAC",
+ "RBarr;": "\u2910",
+ "REG": "\u00AE",
+ "REG;": "\u00AE",
+ "Racute;": "\u0154",
+ "Rang;": "\u27EB",
+ "Rarr;": "\u21A0",
+ "Rarrtl;": "\u2916",
+ "Rcaron;": "\u0158",
+ "Rcedil;": "\u0156",
+ "Rcy;": "\u0420",
+ "Re;": "\u211C",
+ "ReverseElement;": "\u220B",
+ "ReverseEquilibrium;": "\u21CB",
+ "ReverseUpEquilibrium;": "\u296F",
+ "Rfr;": "\u211C",
+ "Rho;": "\u03A1",
+ "RightAngleBracket;": "\u27E9",
+ "RightArrow;": "\u2192",
+ "RightArrowBar;": "\u21E5",
+ "RightArrowLeftArrow;": "\u21C4",
+ "RightCeiling;": "\u2309",
+ "RightDoubleBracket;": "\u27E7",
+ "RightDownTeeVector;": "\u295D",
+ "RightDownVector;": "\u21C2",
+ "RightDownVectorBar;": "\u2955",
+ "RightFloor;": "\u230B",
+ "RightTee;": "\u22A2",
+ "RightTeeArrow;": "\u21A6",
+ "RightTeeVector;": "\u295B",
+ "RightTriangle;": "\u22B3",
+ "RightTriangleBar;": "\u29D0",
+ "RightTriangleEqual;": "\u22B5",
+ "RightUpDownVector;": "\u294F",
+ "RightUpTeeVector;": "\u295C",
+ "RightUpVector;": "\u21BE",
+ "RightUpVectorBar;": "\u2954",
+ "RightVector;": "\u21C0",
+ "RightVectorBar;": "\u2953",
+ "Rightarrow;": "\u21D2",
+ "Ropf;": "\u211D",
+ "RoundImplies;": "\u2970",
+ "Rrightarrow;": "\u21DB",
+ "Rscr;": "\u211B",
+ "Rsh;": "\u21B1",
+ "RuleDelayed;": "\u29F4",
+ "SHCHcy;": "\u0429",
+ "SHcy;": "\u0428",
+ "SOFTcy;": "\u042C",
+ "Sacute;": "\u015A",
+ "Sc;": "\u2ABC",
+ "Scaron;": "\u0160",
+ "Scedil;": "\u015E",
+ "Scirc;": "\u015C",
+ "Scy;": "\u0421",
+ "Sfr;": "\uD835\uDD16",
+ "ShortDownArrow;": "\u2193",
+ "ShortLeftArrow;": "\u2190",
+ "ShortRightArrow;": "\u2192",
+ "ShortUpArrow;": "\u2191",
+ "Sigma;": "\u03A3",
+ "SmallCircle;": "\u2218",
+ "Sopf;": "\uD835\uDD4A",
+ "Sqrt;": "\u221A",
+ "Square;": "\u25A1",
+ "SquareIntersection;": "\u2293",
+ "SquareSubset;": "\u228F",
+ "SquareSubsetEqual;": "\u2291",
+ "SquareSuperset;": "\u2290",
+ "SquareSupersetEqual;": "\u2292",
+ "SquareUnion;": "\u2294",
+ "Sscr;": "\uD835\uDCAE",
+ "Star;": "\u22C6",
+ "Sub;": "\u22D0",
+ "Subset;": "\u22D0",
+ "SubsetEqual;": "\u2286",
+ "Succeeds;": "\u227B",
+ "SucceedsEqual;": "\u2AB0",
+ "SucceedsSlantEqual;": "\u227D",
+ "SucceedsTilde;": "\u227F",
+ "SuchThat;": "\u220B",
+ "Sum;": "\u2211",
+ "Sup;": "\u22D1",
+ "Superset;": "\u2283",
+ "SupersetEqual;": "\u2287",
+ "Supset;": "\u22D1",
+ "THORN": "\u00DE",
+ "THORN;": "\u00DE",
+ "TRADE;": "\u2122",
+ "TSHcy;": "\u040B",
+ "TScy;": "\u0426",
+ "Tab;": "\u0009",
+ "Tau;": "\u03A4",
+ "Tcaron;": "\u0164",
+ "Tcedil;": "\u0162",
+ "Tcy;": "\u0422",
+ "Tfr;": "\uD835\uDD17",
+ "Therefore;": "\u2234",
+ "Theta;": "\u0398",
+ "ThickSpace;": "\u205F\u200A",
+ "ThinSpace;": "\u2009",
+ "Tilde;": "\u223C",
+ "TildeEqual;": "\u2243",
+ "TildeFullEqual;": "\u2245",
+ "TildeTilde;": "\u2248",
+ "Topf;": "\uD835\uDD4B",
+ "TripleDot;": "\u20DB",
+ "Tscr;": "\uD835\uDCAF",
+ "Tstrok;": "\u0166",
+ "Uacute": "\u00DA",
+ "Uacute;": "\u00DA",
+ "Uarr;": "\u219F",
+ "Uarrocir;": "\u2949",
+ "Ubrcy;": "\u040E",
+ "Ubreve;": "\u016C",
+ "Ucirc": "\u00DB",
+ "Ucirc;": "\u00DB",
+ "Ucy;": "\u0423",
+ "Udblac;": "\u0170",
+ "Ufr;": "\uD835\uDD18",
+ "Ugrave": "\u00D9",
+ "Ugrave;": "\u00D9",
+ "Umacr;": "\u016A",
+ "UnderBar;": "\u005F",
+ "UnderBrace;": "\u23DF",
+ "UnderBracket;": "\u23B5",
+ "UnderParenthesis;": "\u23DD",
+ "Union;": "\u22C3",
+ "UnionPlus;": "\u228E",
+ "Uogon;": "\u0172",
+ "Uopf;": "\uD835\uDD4C",
+ "UpArrow;": "\u2191",
+ "UpArrowBar;": "\u2912",
+ "UpArrowDownArrow;": "\u21C5",
+ "UpDownArrow;": "\u2195",
+ "UpEquilibrium;": "\u296E",
+ "UpTee;": "\u22A5",
+ "UpTeeArrow;": "\u21A5",
+ "Uparrow;": "\u21D1",
+ "Updownarrow;": "\u21D5",
+ "UpperLeftArrow;": "\u2196",
+ "UpperRightArrow;": "\u2197",
+ "Upsi;": "\u03D2",
+ "Upsilon;": "\u03A5",
+ "Uring;": "\u016E",
+ "Uscr;": "\uD835\uDCB0",
+ "Utilde;": "\u0168",
+ "Uuml": "\u00DC",
+ "Uuml;": "\u00DC",
+ "VDash;": "\u22AB",
+ "Vbar;": "\u2AEB",
+ "Vcy;": "\u0412",
+ "Vdash;": "\u22A9",
+ "Vdashl;": "\u2AE6",
+ "Vee;": "\u22C1",
+ "Verbar;": "\u2016",
+ "Vert;": "\u2016",
+ "VerticalBar;": "\u2223",
+ "VerticalLine;": "\u007C",
+ "VerticalSeparator;": "\u2758",
+ "VerticalTilde;": "\u2240",
+ "VeryThinSpace;": "\u200A",
+ "Vfr;": "\uD835\uDD19",
+ "Vopf;": "\uD835\uDD4D",
+ "Vscr;": "\uD835\uDCB1",
+ "Vvdash;": "\u22AA",
+ "Wcirc;": "\u0174",
+ "Wedge;": "\u22C0",
+ "Wfr;": "\uD835\uDD1A",
+ "Wopf;": "\uD835\uDD4E",
+ "Wscr;": "\uD835\uDCB2",
+ "Xfr;": "\uD835\uDD1B",
+ "Xi;": "\u039E",
+ "Xopf;": "\uD835\uDD4F",
+ "Xscr;": "\uD835\uDCB3",
+ "YAcy;": "\u042F",
+ "YIcy;": "\u0407",
+ "YUcy;": "\u042E",
+ "Yacute": "\u00DD",
+ "Yacute;": "\u00DD",
+ "Ycirc;": "\u0176",
+ "Ycy;": "\u042B",
+ "Yfr;": "\uD835\uDD1C",
+ "Yopf;": "\uD835\uDD50",
+ "Yscr;": "\uD835\uDCB4",
+ "Yuml;": "\u0178",
+ "ZHcy;": "\u0416",
+ "Zacute;": "\u0179",
+ "Zcaron;": "\u017D",
+ "Zcy;": "\u0417",
+ "Zdot;": "\u017B",
+ "ZeroWidthSpace;": "\u200B",
+ "Zeta;": "\u0396",
+ "Zfr;": "\u2128",
+ "Zopf;": "\u2124",
+ "Zscr;": "\uD835\uDCB5",
+ "aacute": "\u00E1",
+ "aacute;": "\u00E1",
+ "abreve;": "\u0103",
+ "ac;": "\u223E",
+ "acE;": "\u223E\u0333",
+ "acd;": "\u223F",
+ "acirc": "\u00E2",
+ "acirc;": "\u00E2",
+ "acute": "\u00B4",
+ "acute;": "\u00B4",
+ "acy;": "\u0430",
+ "aelig": "\u00E6",
+ "aelig;": "\u00E6",
+ "af;": "\u2061",
+ "afr;": "\uD835\uDD1E",
+ "agrave": "\u00E0",
+ "agrave;": "\u00E0",
+ "alefsym;": "\u2135",
+ "aleph;": "\u2135",
+ "alpha;": "\u03B1",
+ "amacr;": "\u0101",
+ "amalg;": "\u2A3F",
+ "amp": "\u0026",
+ "amp;": "\u0026",
+ "and;": "\u2227",
+ "andand;": "\u2A55",
+ "andd;": "\u2A5C",
+ "andslope;": "\u2A58",
+ "andv;": "\u2A5A",
+ "ang;": "\u2220",
+ "ange;": "\u29A4",
+ "angle;": "\u2220",
+ "angmsd;": "\u2221",
+ "angmsdaa;": "\u29A8",
+ "angmsdab;": "\u29A9",
+ "angmsdac;": "\u29AA",
+ "angmsdad;": "\u29AB",
+ "angmsdae;": "\u29AC",
+ "angmsdaf;": "\u29AD",
+ "angmsdag;": "\u29AE",
+ "angmsdah;": "\u29AF",
+ "angrt;": "\u221F",
+ "angrtvb;": "\u22BE",
+ "angrtvbd;": "\u299D",
+ "angsph;": "\u2222",
+ "angst;": "\u00C5",
+ "angzarr;": "\u237C",
+ "aogon;": "\u0105",
+ "aopf;": "\uD835\uDD52",
+ "ap;": "\u2248",
+ "apE;": "\u2A70",
+ "apacir;": "\u2A6F",
+ "ape;": "\u224A",
+ "apid;": "\u224B",
+ "apos;": "\u0027",
+ "approx;": "\u2248",
+ "approxeq;": "\u224A",
+ "aring": "\u00E5",
+ "aring;": "\u00E5",
+ "ascr;": "\uD835\uDCB6",
+ "ast;": "\u002A",
+ "asymp;": "\u2248",
+ "asympeq;": "\u224D",
+ "atilde": "\u00E3",
+ "atilde;": "\u00E3",
+ "auml": "\u00E4",
+ "auml;": "\u00E4",
+ "awconint;": "\u2233",
+ "awint;": "\u2A11",
+ "bNot;": "\u2AED",
+ "backcong;": "\u224C",
+ "backepsilon;": "\u03F6",
+ "backprime;": "\u2035",
+ "backsim;": "\u223D",
+ "backsimeq;": "\u22CD",
+ "barvee;": "\u22BD",
+ "barwed;": "\u2305",
+ "barwedge;": "\u2305",
+ "bbrk;": "\u23B5",
+ "bbrktbrk;": "\u23B6",
+ "bcong;": "\u224C",
+ "bcy;": "\u0431",
+ "bdquo;": "\u201E",
+ "becaus;": "\u2235",
+ "because;": "\u2235",
+ "bemptyv;": "\u29B0",
+ "bepsi;": "\u03F6",
+ "bernou;": "\u212C",
+ "beta;": "\u03B2",
+ "beth;": "\u2136",
+ "between;": "\u226C",
+ "bfr;": "\uD835\uDD1F",
+ "bigcap;": "\u22C2",
+ "bigcirc;": "\u25EF",
+ "bigcup;": "\u22C3",
+ "bigodot;": "\u2A00",
+ "bigoplus;": "\u2A01",
+ "bigotimes;": "\u2A02",
+ "bigsqcup;": "\u2A06",
+ "bigstar;": "\u2605",
+ "bigtriangledown;": "\u25BD",
+ "bigtriangleup;": "\u25B3",
+ "biguplus;": "\u2A04",
+ "bigvee;": "\u22C1",
+ "bigwedge;": "\u22C0",
+ "bkarow;": "\u290D",
+ "blacklozenge;": "\u29EB",
+ "blacksquare;": "\u25AA",
+ "blacktriangle;": "\u25B4",
+ "blacktriangledown;": "\u25BE",
+ "blacktriangleleft;": "\u25C2",
+ "blacktriangleright;": "\u25B8",
+ "blank;": "\u2423",
+ "blk12;": "\u2592",
+ "blk14;": "\u2591",
+ "blk34;": "\u2593",
+ "block;": "\u2588",
+ "bne;": "\u003D\u20E5",
+ "bnequiv;": "\u2261\u20E5",
+ "bnot;": "\u2310",
+ "bopf;": "\uD835\uDD53",
+ "bot;": "\u22A5",
+ "bottom;": "\u22A5",
+ "bowtie;": "\u22C8",
+ "boxDL;": "\u2557",
+ "boxDR;": "\u2554",
+ "boxDl;": "\u2556",
+ "boxDr;": "\u2553",
+ "boxH;": "\u2550",
+ "boxHD;": "\u2566",
+ "boxHU;": "\u2569",
+ "boxHd;": "\u2564",
+ "boxHu;": "\u2567",
+ "boxUL;": "\u255D",
+ "boxUR;": "\u255A",
+ "boxUl;": "\u255C",
+ "boxUr;": "\u2559",
+ "boxV;": "\u2551",
+ "boxVH;": "\u256C",
+ "boxVL;": "\u2563",
+ "boxVR;": "\u2560",
+ "boxVh;": "\u256B",
+ "boxVl;": "\u2562",
+ "boxVr;": "\u255F",
+ "boxbox;": "\u29C9",
+ "boxdL;": "\u2555",
+ "boxdR;": "\u2552",
+ "boxdl;": "\u2510",
+ "boxdr;": "\u250C",
+ "boxh;": "\u2500",
+ "boxhD;": "\u2565",
+ "boxhU;": "\u2568",
+ "boxhd;": "\u252C",
+ "boxhu;": "\u2534",
+ "boxminus;": "\u229F",
+ "boxplus;": "\u229E",
+ "boxtimes;": "\u22A0",
+ "boxuL;": "\u255B",
+ "boxuR;": "\u2558",
+ "boxul;": "\u2518",
+ "boxur;": "\u2514",
+ "boxv;": "\u2502",
+ "boxvH;": "\u256A",
+ "boxvL;": "\u2561",
+ "boxvR;": "\u255E",
+ "boxvh;": "\u253C",
+ "boxvl;": "\u2524",
+ "boxvr;": "\u251C",
+ "bprime;": "\u2035",
+ "breve;": "\u02D8",
+ "brvbar": "\u00A6",
+ "brvbar;": "\u00A6",
+ "bscr;": "\uD835\uDCB7",
+ "bsemi;": "\u204F",
+ "bsim;": "\u223D",
+ "bsime;": "\u22CD",
+ "bsol;": "\u005C",
+ "bsolb;": "\u29C5",
+ "bsolhsub;": "\u27C8",
+ "bull;": "\u2022",
+ "bullet;": "\u2022",
+ "bump;": "\u224E",
+ "bumpE;": "\u2AAE",
+ "bumpe;": "\u224F",
+ "bumpeq;": "\u224F",
+ "cacute;": "\u0107",
+ "cap;": "\u2229",
+ "capand;": "\u2A44",
+ "capbrcup;": "\u2A49",
+ "capcap;": "\u2A4B",
+ "capcup;": "\u2A47",
+ "capdot;": "\u2A40",
+ "caps;": "\u2229\uFE00",
+ "caret;": "\u2041",
+ "caron;": "\u02C7",
+ "ccaps;": "\u2A4D",
+ "ccaron;": "\u010D",
+ "ccedil": "\u00E7",
+ "ccedil;": "\u00E7",
+ "ccirc;": "\u0109",
+ "ccups;": "\u2A4C",
+ "ccupssm;": "\u2A50",
+ "cdot;": "\u010B",
+ "cedil": "\u00B8",
+ "cedil;": "\u00B8",
+ "cemptyv;": "\u29B2",
+ "cent": "\u00A2",
+ "cent;": "\u00A2",
+ "centerdot;": "\u00B7",
+ "cfr;": "\uD835\uDD20",
+ "chcy;": "\u0447",
+ "check;": "\u2713",
+ "checkmark;": "\u2713",
+ "chi;": "\u03C7",
+ "cir;": "\u25CB",
+ "cirE;": "\u29C3",
+ "circ;": "\u02C6",
+ "circeq;": "\u2257",
+ "circlearrowleft;": "\u21BA",
+ "circlearrowright;": "\u21BB",
+ "circledR;": "\u00AE",
+ "circledS;": "\u24C8",
+ "circledast;": "\u229B",
+ "circledcirc;": "\u229A",
+ "circleddash;": "\u229D",
+ "cire;": "\u2257",
+ "cirfnint;": "\u2A10",
+ "cirmid;": "\u2AEF",
+ "cirscir;": "\u29C2",
+ "clubs;": "\u2663",
+ "clubsuit;": "\u2663",
+ "colon;": "\u003A",
+ "colone;": "\u2254",
+ "coloneq;": "\u2254",
+ "comma;": "\u002C",
+ "commat;": "\u0040",
+ "comp;": "\u2201",
+ "compfn;": "\u2218",
+ "complement;": "\u2201",
+ "complexes;": "\u2102",
+ "cong;": "\u2245",
+ "congdot;": "\u2A6D",
+ "conint;": "\u222E",
+ "copf;": "\uD835\uDD54",
+ "coprod;": "\u2210",
+ "copy": "\u00A9",
+ "copy;": "\u00A9",
+ "copysr;": "\u2117",
+ "crarr;": "\u21B5",
+ "cross;": "\u2717",
+ "cscr;": "\uD835\uDCB8",
+ "csub;": "\u2ACF",
+ "csube;": "\u2AD1",
+ "csup;": "\u2AD0",
+ "csupe;": "\u2AD2",
+ "ctdot;": "\u22EF",
+ "cudarrl;": "\u2938",
+ "cudarrr;": "\u2935",
+ "cuepr;": "\u22DE",
+ "cuesc;": "\u22DF",
+ "cularr;": "\u21B6",
+ "cularrp;": "\u293D",
+ "cup;": "\u222A",
+ "cupbrcap;": "\u2A48",
+ "cupcap;": "\u2A46",
+ "cupcup;": "\u2A4A",
+ "cupdot;": "\u228D",
+ "cupor;": "\u2A45",
+ "cups;": "\u222A\uFE00",
+ "curarr;": "\u21B7",
+ "curarrm;": "\u293C",
+ "curlyeqprec;": "\u22DE",
+ "curlyeqsucc;": "\u22DF",
+ "curlyvee;": "\u22CE",
+ "curlywedge;": "\u22CF",
+ "curren": "\u00A4",
+ "curren;": "\u00A4",
+ "curvearrowleft;": "\u21B6",
+ "curvearrowright;": "\u21B7",
+ "cuvee;": "\u22CE",
+ "cuwed;": "\u22CF",
+ "cwconint;": "\u2232",
+ "cwint;": "\u2231",
+ "cylcty;": "\u232D",
+ "dArr;": "\u21D3",
+ "dHar;": "\u2965",
+ "dagger;": "\u2020",
+ "daleth;": "\u2138",
+ "darr;": "\u2193",
+ "dash;": "\u2010",
+ "dashv;": "\u22A3",
+ "dbkarow;": "\u290F",
+ "dblac;": "\u02DD",
+ "dcaron;": "\u010F",
+ "dcy;": "\u0434",
+ "dd;": "\u2146",
+ "ddagger;": "\u2021",
+ "ddarr;": "\u21CA",
+ "ddotseq;": "\u2A77",
+ "deg": "\u00B0",
+ "deg;": "\u00B0",
+ "delta;": "\u03B4",
+ "demptyv;": "\u29B1",
+ "dfisht;": "\u297F",
+ "dfr;": "\uD835\uDD21",
+ "dharl;": "\u21C3",
+ "dharr;": "\u21C2",
+ "diam;": "\u22C4",
+ "diamond;": "\u22C4",
+ "diamondsuit;": "\u2666",
+ "diams;": "\u2666",
+ "die;": "\u00A8",
+ "digamma;": "\u03DD",
+ "disin;": "\u22F2",
+ "div;": "\u00F7",
+ "divide": "\u00F7",
+ "divide;": "\u00F7",
+ "divideontimes;": "\u22C7",
+ "divonx;": "\u22C7",
+ "djcy;": "\u0452",
+ "dlcorn;": "\u231E",
+ "dlcrop;": "\u230D",
+ "dollar;": "\u0024",
+ "dopf;": "\uD835\uDD55",
+ "dot;": "\u02D9",
+ "doteq;": "\u2250",
+ "doteqdot;": "\u2251",
+ "dotminus;": "\u2238",
+ "dotplus;": "\u2214",
+ "dotsquare;": "\u22A1",
+ "doublebarwedge;": "\u2306",
+ "downarrow;": "\u2193",
+ "downdownarrows;": "\u21CA",
+ "downharpoonleft;": "\u21C3",
+ "downharpoonright;": "\u21C2",
+ "drbkarow;": "\u2910",
+ "drcorn;": "\u231F",
+ "drcrop;": "\u230C",
+ "dscr;": "\uD835\uDCB9",
+ "dscy;": "\u0455",
+ "dsol;": "\u29F6",
+ "dstrok;": "\u0111",
+ "dtdot;": "\u22F1",
+ "dtri;": "\u25BF",
+ "dtrif;": "\u25BE",
+ "duarr;": "\u21F5",
+ "duhar;": "\u296F",
+ "dwangle;": "\u29A6",
+ "dzcy;": "\u045F",
+ "dzigrarr;": "\u27FF",
+ "eDDot;": "\u2A77",
+ "eDot;": "\u2251",
+ "eacute": "\u00E9",
+ "eacute;": "\u00E9",
+ "easter;": "\u2A6E",
+ "ecaron;": "\u011B",
+ "ecir;": "\u2256",
+ "ecirc": "\u00EA",
+ "ecirc;": "\u00EA",
+ "ecolon;": "\u2255",
+ "ecy;": "\u044D",
+ "edot;": "\u0117",
+ "ee;": "\u2147",
+ "efDot;": "\u2252",
+ "efr;": "\uD835\uDD22",
+ "eg;": "\u2A9A",
+ "egrave": "\u00E8",
+ "egrave;": "\u00E8",
+ "egs;": "\u2A96",
+ "egsdot;": "\u2A98",
+ "el;": "\u2A99",
+ "elinters;": "\u23E7",
+ "ell;": "\u2113",
+ "els;": "\u2A95",
+ "elsdot;": "\u2A97",
+ "emacr;": "\u0113",
+ "empty;": "\u2205",
+ "emptyset;": "\u2205",
+ "emptyv;": "\u2205",
+ "emsp13;": "\u2004",
+ "emsp14;": "\u2005",
+ "emsp;": "\u2003",
+ "eng;": "\u014B",
+ "ensp;": "\u2002",
+ "eogon;": "\u0119",
+ "eopf;": "\uD835\uDD56",
+ "epar;": "\u22D5",
+ "eparsl;": "\u29E3",
+ "eplus;": "\u2A71",
+ "epsi;": "\u03B5",
+ "epsilon;": "\u03B5",
+ "epsiv;": "\u03F5",
+ "eqcirc;": "\u2256",
+ "eqcolon;": "\u2255",
+ "eqsim;": "\u2242",
+ "eqslantgtr;": "\u2A96",
+ "eqslantless;": "\u2A95",
+ "equals;": "\u003D",
+ "equest;": "\u225F",
+ "equiv;": "\u2261",
+ "equivDD;": "\u2A78",
+ "eqvparsl;": "\u29E5",
+ "erDot;": "\u2253",
+ "erarr;": "\u2971",
+ "escr;": "\u212F",
+ "esdot;": "\u2250",
+ "esim;": "\u2242",
+ "eta;": "\u03B7",
+ "eth": "\u00F0",
+ "eth;": "\u00F0",
+ "euml": "\u00EB",
+ "euml;": "\u00EB",
+ "euro;": "\u20AC",
+ "excl;": "\u0021",
+ "exist;": "\u2203",
+ "expectation;": "\u2130",
+ "exponentiale;": "\u2147",
+ "fallingdotseq;": "\u2252",
+ "fcy;": "\u0444",
+ "female;": "\u2640",
+ "ffilig;": "\uFB03",
+ "fflig;": "\uFB00",
+ "ffllig;": "\uFB04",
+ "ffr;": "\uD835\uDD23",
+ "filig;": "\uFB01",
+ "fjlig;": "\u0066\u006A",
+ "flat;": "\u266D",
+ "fllig;": "\uFB02",
+ "fltns;": "\u25B1",
+ "fnof;": "\u0192",
+ "fopf;": "\uD835\uDD57",
+ "forall;": "\u2200",
+ "fork;": "\u22D4",
+ "forkv;": "\u2AD9",
+ "fpartint;": "\u2A0D",
+ "frac12": "\u00BD",
+ "frac12;": "\u00BD",
+ "frac13;": "\u2153",
+ "frac14": "\u00BC",
+ "frac14;": "\u00BC",
+ "frac15;": "\u2155",
+ "frac16;": "\u2159",
+ "frac18;": "\u215B",
+ "frac23;": "\u2154",
+ "frac25;": "\u2156",
+ "frac34": "\u00BE",
+ "frac34;": "\u00BE",
+ "frac35;": "\u2157",
+ "frac38;": "\u215C",
+ "frac45;": "\u2158",
+ "frac56;": "\u215A",
+ "frac58;": "\u215D",
+ "frac78;": "\u215E",
+ "frasl;": "\u2044",
+ "frown;": "\u2322",
+ "fscr;": "\uD835\uDCBB",
+ "gE;": "\u2267",
+ "gEl;": "\u2A8C",
+ "gacute;": "\u01F5",
+ "gamma;": "\u03B3",
+ "gammad;": "\u03DD",
+ "gap;": "\u2A86",
+ "gbreve;": "\u011F",
+ "gcirc;": "\u011D",
+ "gcy;": "\u0433",
+ "gdot;": "\u0121",
+ "ge;": "\u2265",
+ "gel;": "\u22DB",
+ "geq;": "\u2265",
+ "geqq;": "\u2267",
+ "geqslant;": "\u2A7E",
+ "ges;": "\u2A7E",
+ "gescc;": "\u2AA9",
+ "gesdot;": "\u2A80",
+ "gesdoto;": "\u2A82",
+ "gesdotol;": "\u2A84",
+ "gesl;": "\u22DB\uFE00",
+ "gesles;": "\u2A94",
+ "gfr;": "\uD835\uDD24",
+ "gg;": "\u226B",
+ "ggg;": "\u22D9",
+ "gimel;": "\u2137",
+ "gjcy;": "\u0453",
+ "gl;": "\u2277",
+ "glE;": "\u2A92",
+ "gla;": "\u2AA5",
+ "glj;": "\u2AA4",
+ "gnE;": "\u2269",
+ "gnap;": "\u2A8A",
+ "gnapprox;": "\u2A8A",
+ "gne;": "\u2A88",
+ "gneq;": "\u2A88",
+ "gneqq;": "\u2269",
+ "gnsim;": "\u22E7",
+ "gopf;": "\uD835\uDD58",
+ "grave;": "\u0060",
+ "gscr;": "\u210A",
+ "gsim;": "\u2273",
+ "gsime;": "\u2A8E",
+ "gsiml;": "\u2A90",
+ "gt": "\u003E",
+ "gt;": "\u003E",
+ "gtcc;": "\u2AA7",
+ "gtcir;": "\u2A7A",
+ "gtdot;": "\u22D7",
+ "gtlPar;": "\u2995",
+ "gtquest;": "\u2A7C",
+ "gtrapprox;": "\u2A86",
+ "gtrarr;": "\u2978",
+ "gtrdot;": "\u22D7",
+ "gtreqless;": "\u22DB",
+ "gtreqqless;": "\u2A8C",
+ "gtrless;": "\u2277",
+ "gtrsim;": "\u2273",
+ "gvertneqq;": "\u2269\uFE00",
+ "gvnE;": "\u2269\uFE00",
+ "hArr;": "\u21D4",
+ "hairsp;": "\u200A",
+ "half;": "\u00BD",
+ "hamilt;": "\u210B",
+ "hardcy;": "\u044A",
+ "harr;": "\u2194",
+ "harrcir;": "\u2948",
+ "harrw;": "\u21AD",
+ "hbar;": "\u210F",
+ "hcirc;": "\u0125",
+ "hearts;": "\u2665",
+ "heartsuit;": "\u2665",
+ "hellip;": "\u2026",
+ "hercon;": "\u22B9",
+ "hfr;": "\uD835\uDD25",
+ "hksearow;": "\u2925",
+ "hkswarow;": "\u2926",
+ "hoarr;": "\u21FF",
+ "homtht;": "\u223B",
+ "hookleftarrow;": "\u21A9",
+ "hookrightarrow;": "\u21AA",
+ "hopf;": "\uD835\uDD59",
+ "horbar;": "\u2015",
+ "hscr;": "\uD835\uDCBD",
+ "hslash;": "\u210F",
+ "hstrok;": "\u0127",
+ "hybull;": "\u2043",
+ "hyphen;": "\u2010",
+ "iacute": "\u00ED",
+ "iacute;": "\u00ED",
+ "ic;": "\u2063",
+ "icirc": "\u00EE",
+ "icirc;": "\u00EE",
+ "icy;": "\u0438",
+ "iecy;": "\u0435",
+ "iexcl": "\u00A1",
+ "iexcl;": "\u00A1",
+ "iff;": "\u21D4",
+ "ifr;": "\uD835\uDD26",
+ "igrave": "\u00EC",
+ "igrave;": "\u00EC",
+ "ii;": "\u2148",
+ "iiiint;": "\u2A0C",
+ "iiint;": "\u222D",
+ "iinfin;": "\u29DC",
+ "iiota;": "\u2129",
+ "ijlig;": "\u0133",
+ "imacr;": "\u012B",
+ "image;": "\u2111",
+ "imagline;": "\u2110",
+ "imagpart;": "\u2111",
+ "imath;": "\u0131",
+ "imof;": "\u22B7",
+ "imped;": "\u01B5",
+ "in;": "\u2208",
+ "incare;": "\u2105",
+ "infin;": "\u221E",
+ "infintie;": "\u29DD",
+ "inodot;": "\u0131",
+ "int;": "\u222B",
+ "intcal;": "\u22BA",
+ "integers;": "\u2124",
+ "intercal;": "\u22BA",
+ "intlarhk;": "\u2A17",
+ "intprod;": "\u2A3C",
+ "iocy;": "\u0451",
+ "iogon;": "\u012F",
+ "iopf;": "\uD835\uDD5A",
+ "iota;": "\u03B9",
+ "iprod;": "\u2A3C",
+ "iquest": "\u00BF",
+ "iquest;": "\u00BF",
+ "iscr;": "\uD835\uDCBE",
+ "isin;": "\u2208",
+ "isinE;": "\u22F9",
+ "isindot;": "\u22F5",
+ "isins;": "\u22F4",
+ "isinsv;": "\u22F3",
+ "isinv;": "\u2208",
+ "it;": "\u2062",
+ "itilde;": "\u0129",
+ "iukcy;": "\u0456",
+ "iuml": "\u00EF",
+ "iuml;": "\u00EF",
+ "jcirc;": "\u0135",
+ "jcy;": "\u0439",
+ "jfr;": "\uD835\uDD27",
+ "jmath;": "\u0237",
+ "jopf;": "\uD835\uDD5B",
+ "jscr;": "\uD835\uDCBF",
+ "jsercy;": "\u0458",
+ "jukcy;": "\u0454",
+ "kappa;": "\u03BA",
+ "kappav;": "\u03F0",
+ "kcedil;": "\u0137",
+ "kcy;": "\u043A",
+ "kfr;": "\uD835\uDD28",
+ "kgreen;": "\u0138",
+ "khcy;": "\u0445",
+ "kjcy;": "\u045C",
+ "kopf;": "\uD835\uDD5C",
+ "kscr;": "\uD835\uDCC0",
+ "lAarr;": "\u21DA",
+ "lArr;": "\u21D0",
+ "lAtail;": "\u291B",
+ "lBarr;": "\u290E",
+ "lE;": "\u2266",
+ "lEg;": "\u2A8B",
+ "lHar;": "\u2962",
+ "lacute;": "\u013A",
+ "laemptyv;": "\u29B4",
+ "lagran;": "\u2112",
+ "lambda;": "\u03BB",
+ "lang;": "\u27E8",
+ "langd;": "\u2991",
+ "langle;": "\u27E8",
+ "lap;": "\u2A85",
+ "laquo": "\u00AB",
+ "laquo;": "\u00AB",
+ "larr;": "\u2190",
+ "larrb;": "\u21E4",
+ "larrbfs;": "\u291F",
+ "larrfs;": "\u291D",
+ "larrhk;": "\u21A9",
+ "larrlp;": "\u21AB",
+ "larrpl;": "\u2939",
+ "larrsim;": "\u2973",
+ "larrtl;": "\u21A2",
+ "lat;": "\u2AAB",
+ "latail;": "\u2919",
+ "late;": "\u2AAD",
+ "lates;": "\u2AAD\uFE00",
+ "lbarr;": "\u290C",
+ "lbbrk;": "\u2772",
+ "lbrace;": "\u007B",
+ "lbrack;": "\u005B",
+ "lbrke;": "\u298B",
+ "lbrksld;": "\u298F",
+ "lbrkslu;": "\u298D",
+ "lcaron;": "\u013E",
+ "lcedil;": "\u013C",
+ "lceil;": "\u2308",
+ "lcub;": "\u007B",
+ "lcy;": "\u043B",
+ "ldca;": "\u2936",
+ "ldquo;": "\u201C",
+ "ldquor;": "\u201E",
+ "ldrdhar;": "\u2967",
+ "ldrushar;": "\u294B",
+ "ldsh;": "\u21B2",
+ "le;": "\u2264",
+ "leftarrow;": "\u2190",
+ "leftarrowtail;": "\u21A2",
+ "leftharpoondown;": "\u21BD",
+ "leftharpoonup;": "\u21BC",
+ "leftleftarrows;": "\u21C7",
+ "leftrightarrow;": "\u2194",
+ "leftrightarrows;": "\u21C6",
+ "leftrightharpoons;": "\u21CB",
+ "leftrightsquigarrow;": "\u21AD",
+ "leftthreetimes;": "\u22CB",
+ "leg;": "\u22DA",
+ "leq;": "\u2264",
+ "leqq;": "\u2266",
+ "leqslant;": "\u2A7D",
+ "les;": "\u2A7D",
+ "lescc;": "\u2AA8",
+ "lesdot;": "\u2A7F",
+ "lesdoto;": "\u2A81",
+ "lesdotor;": "\u2A83",
+ "lesg;": "\u22DA\uFE00",
+ "lesges;": "\u2A93",
+ "lessapprox;": "\u2A85",
+ "lessdot;": "\u22D6",
+ "lesseqgtr;": "\u22DA",
+ "lesseqqgtr;": "\u2A8B",
+ "lessgtr;": "\u2276",
+ "lesssim;": "\u2272",
+ "lfisht;": "\u297C",
+ "lfloor;": "\u230A",
+ "lfr;": "\uD835\uDD29",
+ "lg;": "\u2276",
+ "lgE;": "\u2A91",
+ "lhard;": "\u21BD",
+ "lharu;": "\u21BC",
+ "lharul;": "\u296A",
+ "lhblk;": "\u2584",
+ "ljcy;": "\u0459",
+ "ll;": "\u226A",
+ "llarr;": "\u21C7",
+ "llcorner;": "\u231E",
+ "llhard;": "\u296B",
+ "lltri;": "\u25FA",
+ "lmidot;": "\u0140",
+ "lmoust;": "\u23B0",
+ "lmoustache;": "\u23B0",
+ "lnE;": "\u2268",
+ "lnap;": "\u2A89",
+ "lnapprox;": "\u2A89",
+ "lne;": "\u2A87",
+ "lneq;": "\u2A87",
+ "lneqq;": "\u2268",
+ "lnsim;": "\u22E6",
+ "loang;": "\u27EC",
+ "loarr;": "\u21FD",
+ "lobrk;": "\u27E6",
+ "longleftarrow;": "\u27F5",
+ "longleftrightarrow;": "\u27F7",
+ "longmapsto;": "\u27FC",
+ "longrightarrow;": "\u27F6",
+ "looparrowleft;": "\u21AB",
+ "looparrowright;": "\u21AC",
+ "lopar;": "\u2985",
+ "lopf;": "\uD835\uDD5D",
+ "loplus;": "\u2A2D",
+ "lotimes;": "\u2A34",
+ "lowast;": "\u2217",
+ "lowbar;": "\u005F",
+ "loz;": "\u25CA",
+ "lozenge;": "\u25CA",
+ "lozf;": "\u29EB",
+ "lpar;": "\u0028",
+ "lparlt;": "\u2993",
+ "lrarr;": "\u21C6",
+ "lrcorner;": "\u231F",
+ "lrhar;": "\u21CB",
+ "lrhard;": "\u296D",
+ "lrm;": "\u200E",
+ "lrtri;": "\u22BF",
+ "lsaquo;": "\u2039",
+ "lscr;": "\uD835\uDCC1",
+ "lsh;": "\u21B0",
+ "lsim;": "\u2272",
+ "lsime;": "\u2A8D",
+ "lsimg;": "\u2A8F",
+ "lsqb;": "\u005B",
+ "lsquo;": "\u2018",
+ "lsquor;": "\u201A",
+ "lstrok;": "\u0142",
+ "lt": "\u003C",
+ "lt;": "\u003C",
+ "ltcc;": "\u2AA6",
+ "ltcir;": "\u2A79",
+ "ltdot;": "\u22D6",
+ "lthree;": "\u22CB",
+ "ltimes;": "\u22C9",
+ "ltlarr;": "\u2976",
+ "ltquest;": "\u2A7B",
+ "ltrPar;": "\u2996",
+ "ltri;": "\u25C3",
+ "ltrie;": "\u22B4",
+ "ltrif;": "\u25C2",
+ "lurdshar;": "\u294A",
+ "luruhar;": "\u2966",
+ "lvertneqq;": "\u2268\uFE00",
+ "lvnE;": "\u2268\uFE00",
+ "mDDot;": "\u223A",
+ "macr": "\u00AF",
+ "macr;": "\u00AF",
+ "male;": "\u2642",
+ "malt;": "\u2720",
+ "maltese;": "\u2720",
+ "map;": "\u21A6",
+ "mapsto;": "\u21A6",
+ "mapstodown;": "\u21A7",
+ "mapstoleft;": "\u21A4",
+ "mapstoup;": "\u21A5",
+ "marker;": "\u25AE",
+ "mcomma;": "\u2A29",
+ "mcy;": "\u043C",
+ "mdash;": "\u2014",
+ "measuredangle;": "\u2221",
+ "mfr;": "\uD835\uDD2A",
+ "mho;": "\u2127",
+ "micro": "\u00B5",
+ "micro;": "\u00B5",
+ "mid;": "\u2223",
+ "midast;": "\u002A",
+ "midcir;": "\u2AF0",
+ "middot": "\u00B7",
+ "middot;": "\u00B7",
+ "minus;": "\u2212",
+ "minusb;": "\u229F",
+ "minusd;": "\u2238",
+ "minusdu;": "\u2A2A",
+ "mlcp;": "\u2ADB",
+ "mldr;": "\u2026",
+ "mnplus;": "\u2213",
+ "models;": "\u22A7",
+ "mopf;": "\uD835\uDD5E",
+ "mp;": "\u2213",
+ "mscr;": "\uD835\uDCC2",
+ "mstpos;": "\u223E",
+ "mu;": "\u03BC",
+ "multimap;": "\u22B8",
+ "mumap;": "\u22B8",
+ "nGg;": "\u22D9\u0338",
+ "nGt;": "\u226B\u20D2",
+ "nGtv;": "\u226B\u0338",
+ "nLeftarrow;": "\u21CD",
+ "nLeftrightarrow;": "\u21CE",
+ "nLl;": "\u22D8\u0338",
+ "nLt;": "\u226A\u20D2",
+ "nLtv;": "\u226A\u0338",
+ "nRightarrow;": "\u21CF",
+ "nVDash;": "\u22AF",
+ "nVdash;": "\u22AE",
+ "nabla;": "\u2207",
+ "nacute;": "\u0144",
+ "nang;": "\u2220\u20D2",
+ "nap;": "\u2249",
+ "napE;": "\u2A70\u0338",
+ "napid;": "\u224B\u0338",
+ "napos;": "\u0149",
+ "napprox;": "\u2249",
+ "natur;": "\u266E",
+ "natural;": "\u266E",
+ "naturals;": "\u2115",
+ "nbsp": "\u00A0",
+ "nbsp;": "\u00A0",
+ "nbump;": "\u224E\u0338",
+ "nbumpe;": "\u224F\u0338",
+ "ncap;": "\u2A43",
+ "ncaron;": "\u0148",
+ "ncedil;": "\u0146",
+ "ncong;": "\u2247",
+ "ncongdot;": "\u2A6D\u0338",
+ "ncup;": "\u2A42",
+ "ncy;": "\u043D",
+ "ndash;": "\u2013",
+ "ne;": "\u2260",
+ "neArr;": "\u21D7",
+ "nearhk;": "\u2924",
+ "nearr;": "\u2197",
+ "nearrow;": "\u2197",
+ "nedot;": "\u2250\u0338",
+ "nequiv;": "\u2262",
+ "nesear;": "\u2928",
+ "nesim;": "\u2242\u0338",
+ "nexist;": "\u2204",
+ "nexists;": "\u2204",
+ "nfr;": "\uD835\uDD2B",
+ "ngE;": "\u2267\u0338",
+ "nge;": "\u2271",
+ "ngeq;": "\u2271",
+ "ngeqq;": "\u2267\u0338",
+ "ngeqslant;": "\u2A7E\u0338",
+ "nges;": "\u2A7E\u0338",
+ "ngsim;": "\u2275",
+ "ngt;": "\u226F",
+ "ngtr;": "\u226F",
+ "nhArr;": "\u21CE",
+ "nharr;": "\u21AE",
+ "nhpar;": "\u2AF2",
+ "ni;": "\u220B",
+ "nis;": "\u22FC",
+ "nisd;": "\u22FA",
+ "niv;": "\u220B",
+ "njcy;": "\u045A",
+ "nlArr;": "\u21CD",
+ "nlE;": "\u2266\u0338",
+ "nlarr;": "\u219A",
+ "nldr;": "\u2025",
+ "nle;": "\u2270",
+ "nleftarrow;": "\u219A",
+ "nleftrightarrow;": "\u21AE",
+ "nleq;": "\u2270",
+ "nleqq;": "\u2266\u0338",
+ "nleqslant;": "\u2A7D\u0338",
+ "nles;": "\u2A7D\u0338",
+ "nless;": "\u226E",
+ "nlsim;": "\u2274",
+ "nlt;": "\u226E",
+ "nltri;": "\u22EA",
+ "nltrie;": "\u22EC",
+ "nmid;": "\u2224",
+ "nopf;": "\uD835\uDD5F",
+ "not": "\u00AC",
+ "not;": "\u00AC",
+ "notin;": "\u2209",
+ "notinE;": "\u22F9\u0338",
+ "notindot;": "\u22F5\u0338",
+ "notinva;": "\u2209",
+ "notinvb;": "\u22F7",
+ "notinvc;": "\u22F6",
+ "notni;": "\u220C",
+ "notniva;": "\u220C",
+ "notnivb;": "\u22FE",
+ "notnivc;": "\u22FD",
+ "npar;": "\u2226",
+ "nparallel;": "\u2226",
+ "nparsl;": "\u2AFD\u20E5",
+ "npart;": "\u2202\u0338",
+ "npolint;": "\u2A14",
+ "npr;": "\u2280",
+ "nprcue;": "\u22E0",
+ "npre;": "\u2AAF\u0338",
+ "nprec;": "\u2280",
+ "npreceq;": "\u2AAF\u0338",
+ "nrArr;": "\u21CF",
+ "nrarr;": "\u219B",
+ "nrarrc;": "\u2933\u0338",
+ "nrarrw;": "\u219D\u0338",
+ "nrightarrow;": "\u219B",
+ "nrtri;": "\u22EB",
+ "nrtrie;": "\u22ED",
+ "nsc;": "\u2281",
+ "nsccue;": "\u22E1",
+ "nsce;": "\u2AB0\u0338",
+ "nscr;": "\uD835\uDCC3",
+ "nshortmid;": "\u2224",
+ "nshortparallel;": "\u2226",
+ "nsim;": "\u2241",
+ "nsime;": "\u2244",
+ "nsimeq;": "\u2244",
+ "nsmid;": "\u2224",
+ "nspar;": "\u2226",
+ "nsqsube;": "\u22E2",
+ "nsqsupe;": "\u22E3",
+ "nsub;": "\u2284",
+ "nsubE;": "\u2AC5\u0338",
+ "nsube;": "\u2288",
+ "nsubset;": "\u2282\u20D2",
+ "nsubseteq;": "\u2288",
+ "nsubseteqq;": "\u2AC5\u0338",
+ "nsucc;": "\u2281",
+ "nsucceq;": "\u2AB0\u0338",
+ "nsup;": "\u2285",
+ "nsupE;": "\u2AC6\u0338",
+ "nsupe;": "\u2289",
+ "nsupset;": "\u2283\u20D2",
+ "nsupseteq;": "\u2289",
+ "nsupseteqq;": "\u2AC6\u0338",
+ "ntgl;": "\u2279",
+ "ntilde": "\u00F1",
+ "ntilde;": "\u00F1",
+ "ntlg;": "\u2278",
+ "ntriangleleft;": "\u22EA",
+ "ntrianglelefteq;": "\u22EC",
+ "ntriangleright;": "\u22EB",
+ "ntrianglerighteq;": "\u22ED",
+ "nu;": "\u03BD",
+ "num;": "\u0023",
+ "numero;": "\u2116",
+ "numsp;": "\u2007",
+ "nvDash;": "\u22AD",
+ "nvHarr;": "\u2904",
+ "nvap;": "\u224D\u20D2",
+ "nvdash;": "\u22AC",
+ "nvge;": "\u2265\u20D2",
+ "nvgt;": "\u003E\u20D2",
+ "nvinfin;": "\u29DE",
+ "nvlArr;": "\u2902",
+ "nvle;": "\u2264\u20D2",
+ "nvlt;": "\u003C\u20D2",
+ "nvltrie;": "\u22B4\u20D2",
+ "nvrArr;": "\u2903",
+ "nvrtrie;": "\u22B5\u20D2",
+ "nvsim;": "\u223C\u20D2",
+ "nwArr;": "\u21D6",
+ "nwarhk;": "\u2923",
+ "nwarr;": "\u2196",
+ "nwarrow;": "\u2196",
+ "nwnear;": "\u2927",
+ "oS;": "\u24C8",
+ "oacute": "\u00F3",
+ "oacute;": "\u00F3",
+ "oast;": "\u229B",
+ "ocir;": "\u229A",
+ "ocirc": "\u00F4",
+ "ocirc;": "\u00F4",
+ "ocy;": "\u043E",
+ "odash;": "\u229D",
+ "odblac;": "\u0151",
+ "odiv;": "\u2A38",
+ "odot;": "\u2299",
+ "odsold;": "\u29BC",
+ "oelig;": "\u0153",
+ "ofcir;": "\u29BF",
+ "ofr;": "\uD835\uDD2C",
+ "ogon;": "\u02DB",
+ "ograve": "\u00F2",
+ "ograve;": "\u00F2",
+ "ogt;": "\u29C1",
+ "ohbar;": "\u29B5",
+ "ohm;": "\u03A9",
+ "oint;": "\u222E",
+ "olarr;": "\u21BA",
+ "olcir;": "\u29BE",
+ "olcross;": "\u29BB",
+ "oline;": "\u203E",
+ "olt;": "\u29C0",
+ "omacr;": "\u014D",
+ "omega;": "\u03C9",
+ "omicron;": "\u03BF",
+ "omid;": "\u29B6",
+ "ominus;": "\u2296",
+ "oopf;": "\uD835\uDD60",
+ "opar;": "\u29B7",
+ "operp;": "\u29B9",
+ "oplus;": "\u2295",
+ "or;": "\u2228",
+ "orarr;": "\u21BB",
+ "ord;": "\u2A5D",
+ "order;": "\u2134",
+ "orderof;": "\u2134",
+ "ordf": "\u00AA",
+ "ordf;": "\u00AA",
+ "ordm": "\u00BA",
+ "ordm;": "\u00BA",
+ "origof;": "\u22B6",
+ "oror;": "\u2A56",
+ "orslope;": "\u2A57",
+ "orv;": "\u2A5B",
+ "oscr;": "\u2134",
+ "oslash": "\u00F8",
+ "oslash;": "\u00F8",
+ "osol;": "\u2298",
+ "otilde": "\u00F5",
+ "otilde;": "\u00F5",
+ "otimes;": "\u2297",
+ "otimesas;": "\u2A36",
+ "ouml": "\u00F6",
+ "ouml;": "\u00F6",
+ "ovbar;": "\u233D",
+ "par;": "\u2225",
+ "para": "\u00B6",
+ "para;": "\u00B6",
+ "parallel;": "\u2225",
+ "parsim;": "\u2AF3",
+ "parsl;": "\u2AFD",
+ "part;": "\u2202",
+ "pcy;": "\u043F",
+ "percnt;": "\u0025",
+ "period;": "\u002E",
+ "permil;": "\u2030",
+ "perp;": "\u22A5",
+ "pertenk;": "\u2031",
+ "pfr;": "\uD835\uDD2D",
+ "phi;": "\u03C6",
+ "phiv;": "\u03D5",
+ "phmmat;": "\u2133",
+ "phone;": "\u260E",
+ "pi;": "\u03C0",
+ "pitchfork;": "\u22D4",
+ "piv;": "\u03D6",
+ "planck;": "\u210F",
+ "planckh;": "\u210E",
+ "plankv;": "\u210F",
+ "plus;": "\u002B",
+ "plusacir;": "\u2A23",
+ "plusb;": "\u229E",
+ "pluscir;": "\u2A22",
+ "plusdo;": "\u2214",
+ "plusdu;": "\u2A25",
+ "pluse;": "\u2A72",
+ "plusmn": "\u00B1",
+ "plusmn;": "\u00B1",
+ "plussim;": "\u2A26",
+ "plustwo;": "\u2A27",
+ "pm;": "\u00B1",
+ "pointint;": "\u2A15",
+ "popf;": "\uD835\uDD61",
+ "pound": "\u00A3",
+ "pound;": "\u00A3",
+ "pr;": "\u227A",
+ "prE;": "\u2AB3",
+ "prap;": "\u2AB7",
+ "prcue;": "\u227C",
+ "pre;": "\u2AAF",
+ "prec;": "\u227A",
+ "precapprox;": "\u2AB7",
+ "preccurlyeq;": "\u227C",
+ "preceq;": "\u2AAF",
+ "precnapprox;": "\u2AB9",
+ "precneqq;": "\u2AB5",
+ "precnsim;": "\u22E8",
+ "precsim;": "\u227E",
+ "prime;": "\u2032",
+ "primes;": "\u2119",
+ "prnE;": "\u2AB5",
+ "prnap;": "\u2AB9",
+ "prnsim;": "\u22E8",
+ "prod;": "\u220F",
+ "profalar;": "\u232E",
+ "profline;": "\u2312",
+ "profsurf;": "\u2313",
+ "prop;": "\u221D",
+ "propto;": "\u221D",
+ "prsim;": "\u227E",
+ "prurel;": "\u22B0",
+ "pscr;": "\uD835\uDCC5",
+ "psi;": "\u03C8",
+ "puncsp;": "\u2008",
+ "qfr;": "\uD835\uDD2E",
+ "qint;": "\u2A0C",
+ "qopf;": "\uD835\uDD62",
+ "qprime;": "\u2057",
+ "qscr;": "\uD835\uDCC6",
+ "quaternions;": "\u210D",
+ "quatint;": "\u2A16",
+ "quest;": "\u003F",
+ "questeq;": "\u225F",
+ "quot": "\u0022",
+ "quot;": "\u0022",
+ "rAarr;": "\u21DB",
+ "rArr;": "\u21D2",
+ "rAtail;": "\u291C",
+ "rBarr;": "\u290F",
+ "rHar;": "\u2964",
+ "race;": "\u223D\u0331",
+ "racute;": "\u0155",
+ "radic;": "\u221A",
+ "raemptyv;": "\u29B3",
+ "rang;": "\u27E9",
+ "rangd;": "\u2992",
+ "range;": "\u29A5",
+ "rangle;": "\u27E9",
+ "raquo": "\u00BB",
+ "raquo;": "\u00BB",
+ "rarr;": "\u2192",
+ "rarrap;": "\u2975",
+ "rarrb;": "\u21E5",
+ "rarrbfs;": "\u2920",
+ "rarrc;": "\u2933",
+ "rarrfs;": "\u291E",
+ "rarrhk;": "\u21AA",
+ "rarrlp;": "\u21AC",
+ "rarrpl;": "\u2945",
+ "rarrsim;": "\u2974",
+ "rarrtl;": "\u21A3",
+ "rarrw;": "\u219D",
+ "ratail;": "\u291A",
+ "ratio;": "\u2236",
+ "rationals;": "\u211A",
+ "rbarr;": "\u290D",
+ "rbbrk;": "\u2773",
+ "rbrace;": "\u007D",
+ "rbrack;": "\u005D",
+ "rbrke;": "\u298C",
+ "rbrksld;": "\u298E",
+ "rbrkslu;": "\u2990",
+ "rcaron;": "\u0159",
+ "rcedil;": "\u0157",
+ "rceil;": "\u2309",
+ "rcub;": "\u007D",
+ "rcy;": "\u0440",
+ "rdca;": "\u2937",
+ "rdldhar;": "\u2969",
+ "rdquo;": "\u201D",
+ "rdquor;": "\u201D",
+ "rdsh;": "\u21B3",
+ "real;": "\u211C",
+ "realine;": "\u211B",
+ "realpart;": "\u211C",
+ "reals;": "\u211D",
+ "rect;": "\u25AD",
+ "reg": "\u00AE",
+ "reg;": "\u00AE",
+ "rfisht;": "\u297D",
+ "rfloor;": "\u230B",
+ "rfr;": "\uD835\uDD2F",
+ "rhard;": "\u21C1",
+ "rharu;": "\u21C0",
+ "rharul;": "\u296C",
+ "rho;": "\u03C1",
+ "rhov;": "\u03F1",
+ "rightarrow;": "\u2192",
+ "rightarrowtail;": "\u21A3",
+ "rightharpoondown;": "\u21C1",
+ "rightharpoonup;": "\u21C0",
+ "rightleftarrows;": "\u21C4",
+ "rightleftharpoons;": "\u21CC",
+ "rightrightarrows;": "\u21C9",
+ "rightsquigarrow;": "\u219D",
+ "rightthreetimes;": "\u22CC",
+ "ring;": "\u02DA",
+ "risingdotseq;": "\u2253",
+ "rlarr;": "\u21C4",
+ "rlhar;": "\u21CC",
+ "rlm;": "\u200F",
+ "rmoust;": "\u23B1",
+ "rmoustache;": "\u23B1",
+ "rnmid;": "\u2AEE",
+ "roang;": "\u27ED",
+ "roarr;": "\u21FE",
+ "robrk;": "\u27E7",
+ "ropar;": "\u2986",
+ "ropf;": "\uD835\uDD63",
+ "roplus;": "\u2A2E",
+ "rotimes;": "\u2A35",
+ "rpar;": "\u0029",
+ "rpargt;": "\u2994",
+ "rppolint;": "\u2A12",
+ "rrarr;": "\u21C9",
+ "rsaquo;": "\u203A",
+ "rscr;": "\uD835\uDCC7",
+ "rsh;": "\u21B1",
+ "rsqb;": "\u005D",
+ "rsquo;": "\u2019",
+ "rsquor;": "\u2019",
+ "rthree;": "\u22CC",
+ "rtimes;": "\u22CA",
+ "rtri;": "\u25B9",
+ "rtrie;": "\u22B5",
+ "rtrif;": "\u25B8",
+ "rtriltri;": "\u29CE",
+ "ruluhar;": "\u2968",
+ "rx;": "\u211E",
+ "sacute;": "\u015B",
+ "sbquo;": "\u201A",
+ "sc;": "\u227B",
+ "scE;": "\u2AB4",
+ "scap;": "\u2AB8",
+ "scaron;": "\u0161",
+ "sccue;": "\u227D",
+ "sce;": "\u2AB0",
+ "scedil;": "\u015F",
+ "scirc;": "\u015D",
+ "scnE;": "\u2AB6",
+ "scnap;": "\u2ABA",
+ "scnsim;": "\u22E9",
+ "scpolint;": "\u2A13",
+ "scsim;": "\u227F",
+ "scy;": "\u0441",
+ "sdot;": "\u22C5",
+ "sdotb;": "\u22A1",
+ "sdote;": "\u2A66",
+ "seArr;": "\u21D8",
+ "searhk;": "\u2925",
+ "searr;": "\u2198",
+ "searrow;": "\u2198",
+ "sect": "\u00A7",
+ "sect;": "\u00A7",
+ "semi;": "\u003B",
+ "seswar;": "\u2929",
+ "setminus;": "\u2216",
+ "setmn;": "\u2216",
+ "sext;": "\u2736",
+ "sfr;": "\uD835\uDD30",
+ "sfrown;": "\u2322",
+ "sharp;": "\u266F",
+ "shchcy;": "\u0449",
+ "shcy;": "\u0448",
+ "shortmid;": "\u2223",
+ "shortparallel;": "\u2225",
+ "shy": "\u00AD",
+ "shy;": "\u00AD",
+ "sigma;": "\u03C3",
+ "sigmaf;": "\u03C2",
+ "sigmav;": "\u03C2",
+ "sim;": "\u223C",
+ "simdot;": "\u2A6A",
+ "sime;": "\u2243",
+ "simeq;": "\u2243",
+ "simg;": "\u2A9E",
+ "simgE;": "\u2AA0",
+ "siml;": "\u2A9D",
+ "simlE;": "\u2A9F",
+ "simne;": "\u2246",
+ "simplus;": "\u2A24",
+ "simrarr;": "\u2972",
+ "slarr;": "\u2190",
+ "smallsetminus;": "\u2216",
+ "smashp;": "\u2A33",
+ "smeparsl;": "\u29E4",
+ "smid;": "\u2223",
+ "smile;": "\u2323",
+ "smt;": "\u2AAA",
+ "smte;": "\u2AAC",
+ "smtes;": "\u2AAC\uFE00",
+ "softcy;": "\u044C",
+ "sol;": "\u002F",
+ "solb;": "\u29C4",
+ "solbar;": "\u233F",
+ "sopf;": "\uD835\uDD64",
+ "spades;": "\u2660",
+ "spadesuit;": "\u2660",
+ "spar;": "\u2225",
+ "sqcap;": "\u2293",
+ "sqcaps;": "\u2293\uFE00",
+ "sqcup;": "\u2294",
+ "sqcups;": "\u2294\uFE00",
+ "sqsub;": "\u228F",
+ "sqsube;": "\u2291",
+ "sqsubset;": "\u228F",
+ "sqsubseteq;": "\u2291",
+ "sqsup;": "\u2290",
+ "sqsupe;": "\u2292",
+ "sqsupset;": "\u2290",
+ "sqsupseteq;": "\u2292",
+ "squ;": "\u25A1",
+ "square;": "\u25A1",
+ "squarf;": "\u25AA",
+ "squf;": "\u25AA",
+ "srarr;": "\u2192",
+ "sscr;": "\uD835\uDCC8",
+ "ssetmn;": "\u2216",
+ "ssmile;": "\u2323",
+ "sstarf;": "\u22C6",
+ "star;": "\u2606",
+ "starf;": "\u2605",
+ "straightepsilon;": "\u03F5",
+ "straightphi;": "\u03D5",
+ "strns;": "\u00AF",
+ "sub;": "\u2282",
+ "subE;": "\u2AC5",
+ "subdot;": "\u2ABD",
+ "sube;": "\u2286",
+ "subedot;": "\u2AC3",
+ "submult;": "\u2AC1",
+ "subnE;": "\u2ACB",
+ "subne;": "\u228A",
+ "subplus;": "\u2ABF",
+ "subrarr;": "\u2979",
+ "subset;": "\u2282",
+ "subseteq;": "\u2286",
+ "subseteqq;": "\u2AC5",
+ "subsetneq;": "\u228A",
+ "subsetneqq;": "\u2ACB",
+ "subsim;": "\u2AC7",
+ "subsub;": "\u2AD5",
+ "subsup;": "\u2AD3",
+ "succ;": "\u227B",
+ "succapprox;": "\u2AB8",
+ "succcurlyeq;": "\u227D",
+ "succeq;": "\u2AB0",
+ "succnapprox;": "\u2ABA",
+ "succneqq;": "\u2AB6",
+ "succnsim;": "\u22E9",
+ "succsim;": "\u227F",
+ "sum;": "\u2211",
+ "sung;": "\u266A",
+ "sup1": "\u00B9",
+ "sup1;": "\u00B9",
+ "sup2": "\u00B2",
+ "sup2;": "\u00B2",
+ "sup3": "\u00B3",
+ "sup3;": "\u00B3",
+ "sup;": "\u2283",
+ "supE;": "\u2AC6",
+ "supdot;": "\u2ABE",
+ "supdsub;": "\u2AD8",
+ "supe;": "\u2287",
+ "supedot;": "\u2AC4",
+ "suphsol;": "\u27C9",
+ "suphsub;": "\u2AD7",
+ "suplarr;": "\u297B",
+ "supmult;": "\u2AC2",
+ "supnE;": "\u2ACC",
+ "supne;": "\u228B",
+ "supplus;": "\u2AC0",
+ "supset;": "\u2283",
+ "supseteq;": "\u2287",
+ "supseteqq;": "\u2AC6",
+ "supsetneq;": "\u228B",
+ "supsetneqq;": "\u2ACC",
+ "supsim;": "\u2AC8",
+ "supsub;": "\u2AD4",
+ "supsup;": "\u2AD6",
+ "swArr;": "\u21D9",
+ "swarhk;": "\u2926",
+ "swarr;": "\u2199",
+ "swarrow;": "\u2199",
+ "swnwar;": "\u292A",
+ "szlig": "\u00DF",
+ "szlig;": "\u00DF",
+ "target;": "\u2316",
+ "tau;": "\u03C4",
+ "tbrk;": "\u23B4",
+ "tcaron;": "\u0165",
+ "tcedil;": "\u0163",
+ "tcy;": "\u0442",
+ "tdot;": "\u20DB",
+ "telrec;": "\u2315",
+ "tfr;": "\uD835\uDD31",
+ "there4;": "\u2234",
+ "therefore;": "\u2234",
+ "theta;": "\u03B8",
+ "thetasym;": "\u03D1",
+ "thetav;": "\u03D1",
+ "thickapprox;": "\u2248",
+ "thicksim;": "\u223C",
+ "thinsp;": "\u2009",
+ "thkap;": "\u2248",
+ "thksim;": "\u223C",
+ "thorn": "\u00FE",
+ "thorn;": "\u00FE",
+ "tilde;": "\u02DC",
+ "times": "\u00D7",
+ "times;": "\u00D7",
+ "timesb;": "\u22A0",
+ "timesbar;": "\u2A31",
+ "timesd;": "\u2A30",
+ "tint;": "\u222D",
+ "toea;": "\u2928",
+ "top;": "\u22A4",
+ "topbot;": "\u2336",
+ "topcir;": "\u2AF1",
+ "topf;": "\uD835\uDD65",
+ "topfork;": "\u2ADA",
+ "tosa;": "\u2929",
+ "tprime;": "\u2034",
+ "trade;": "\u2122",
+ "triangle;": "\u25B5",
+ "triangledown;": "\u25BF",
+ "triangleleft;": "\u25C3",
+ "trianglelefteq;": "\u22B4",
+ "triangleq;": "\u225C",
+ "triangleright;": "\u25B9",
+ "trianglerighteq;": "\u22B5",
+ "tridot;": "\u25EC",
+ "trie;": "\u225C",
+ "triminus;": "\u2A3A",
+ "triplus;": "\u2A39",
+ "trisb;": "\u29CD",
+ "tritime;": "\u2A3B",
+ "trpezium;": "\u23E2",
+ "tscr;": "\uD835\uDCC9",
+ "tscy;": "\u0446",
+ "tshcy;": "\u045B",
+ "tstrok;": "\u0167",
+ "twixt;": "\u226C",
+ "twoheadleftarrow;": "\u219E",
+ "twoheadrightarrow;": "\u21A0",
+ "uArr;": "\u21D1",
+ "uHar;": "\u2963",
+ "uacute": "\u00FA",
+ "uacute;": "\u00FA",
+ "uarr;": "\u2191",
+ "ubrcy;": "\u045E",
+ "ubreve;": "\u016D",
+ "ucirc": "\u00FB",
+ "ucirc;": "\u00FB",
+ "ucy;": "\u0443",
+ "udarr;": "\u21C5",
+ "udblac;": "\u0171",
+ "udhar;": "\u296E",
+ "ufisht;": "\u297E",
+ "ufr;": "\uD835\uDD32",
+ "ugrave": "\u00F9",
+ "ugrave;": "\u00F9",
+ "uharl;": "\u21BF",
+ "uharr;": "\u21BE",
+ "uhblk;": "\u2580",
+ "ulcorn;": "\u231C",
+ "ulcorner;": "\u231C",
+ "ulcrop;": "\u230F",
+ "ultri;": "\u25F8",
+ "umacr;": "\u016B",
+ "uml": "\u00A8",
+ "uml;": "\u00A8",
+ "uogon;": "\u0173",
+ "uopf;": "\uD835\uDD66",
+ "uparrow;": "\u2191",
+ "updownarrow;": "\u2195",
+ "upharpoonleft;": "\u21BF",
+ "upharpoonright;": "\u21BE",
+ "uplus;": "\u228E",
+ "upsi;": "\u03C5",
+ "upsih;": "\u03D2",
+ "upsilon;": "\u03C5",
+ "upuparrows;": "\u21C8",
+ "urcorn;": "\u231D",
+ "urcorner;": "\u231D",
+ "urcrop;": "\u230E",
+ "uring;": "\u016F",
+ "urtri;": "\u25F9",
+ "uscr;": "\uD835\uDCCA",
+ "utdot;": "\u22F0",
+ "utilde;": "\u0169",
+ "utri;": "\u25B5",
+ "utrif;": "\u25B4",
+ "uuarr;": "\u21C8",
+ "uuml": "\u00FC",
+ "uuml;": "\u00FC",
+ "uwangle;": "\u29A7",
+ "vArr;": "\u21D5",
+ "vBar;": "\u2AE8",
+ "vBarv;": "\u2AE9",
+ "vDash;": "\u22A8",
+ "vangrt;": "\u299C",
+ "varepsilon;": "\u03F5",
+ "varkappa;": "\u03F0",
+ "varnothing;": "\u2205",
+ "varphi;": "\u03D5",
+ "varpi;": "\u03D6",
+ "varpropto;": "\u221D",
+ "varr;": "\u2195",
+ "varrho;": "\u03F1",
+ "varsigma;": "\u03C2",
+ "varsubsetneq;": "\u228A\uFE00",
+ "varsubsetneqq;": "\u2ACB\uFE00",
+ "varsupsetneq;": "\u228B\uFE00",
+ "varsupsetneqq;": "\u2ACC\uFE00",
+ "vartheta;": "\u03D1",
+ "vartriangleleft;": "\u22B2",
+ "vartriangleright;": "\u22B3",
+ "vcy;": "\u0432",
+ "vdash;": "\u22A2",
+ "vee;": "\u2228",
+ "veebar;": "\u22BB",
+ "veeeq;": "\u225A",
+ "vellip;": "\u22EE",
+ "verbar;": "\u007C",
+ "vert;": "\u007C",
+ "vfr;": "\uD835\uDD33",
+ "vltri;": "\u22B2",
+ "vnsub;": "\u2282\u20D2",
+ "vnsup;": "\u2283\u20D2",
+ "vopf;": "\uD835\uDD67",
+ "vprop;": "\u221D",
+ "vrtri;": "\u22B3",
+ "vscr;": "\uD835\uDCCB",
+ "vsubnE;": "\u2ACB\uFE00",
+ "vsubne;": "\u228A\uFE00",
+ "vsupnE;": "\u2ACC\uFE00",
+ "vsupne;": "\u228B\uFE00",
+ "vzigzag;": "\u299A",
+ "wcirc;": "\u0175",
+ "wedbar;": "\u2A5F",
+ "wedge;": "\u2227",
+ "wedgeq;": "\u2259",
+ "weierp;": "\u2118",
+ "wfr;": "\uD835\uDD34",
+ "wopf;": "\uD835\uDD68",
+ "wp;": "\u2118",
+ "wr;": "\u2240",
+ "wreath;": "\u2240",
+ "wscr;": "\uD835\uDCCC",
+ "xcap;": "\u22C2",
+ "xcirc;": "\u25EF",
+ "xcup;": "\u22C3",
+ "xdtri;": "\u25BD",
+ "xfr;": "\uD835\uDD35",
+ "xhArr;": "\u27FA",
+ "xharr;": "\u27F7",
+ "xi;": "\u03BE",
+ "xlArr;": "\u27F8",
+ "xlarr;": "\u27F5",
+ "xmap;": "\u27FC",
+ "xnis;": "\u22FB",
+ "xodot;": "\u2A00",
+ "xopf;": "\uD835\uDD69",
+ "xoplus;": "\u2A01",
+ "xotime;": "\u2A02",
+ "xrArr;": "\u27F9",
+ "xrarr;": "\u27F6",
+ "xscr;": "\uD835\uDCCD",
+ "xsqcup;": "\u2A06",
+ "xuplus;": "\u2A04",
+ "xutri;": "\u25B3",
+ "xvee;": "\u22C1",
+ "xwedge;": "\u22C0",
+ "yacute": "\u00FD",
+ "yacute;": "\u00FD",
+ "yacy;": "\u044F",
+ "ycirc;": "\u0177",
+ "ycy;": "\u044B",
+ "yen": "\u00A5",
+ "yen;": "\u00A5",
+ "yfr;": "\uD835\uDD36",
+ "yicy;": "\u0457",
+ "yopf;": "\uD835\uDD6A",
+ "yscr;": "\uD835\uDCCE",
+ "yucy;": "\u044E",
+ "yuml": "\u00FF",
+ "yuml;": "\u00FF",
+ "zacute;": "\u017A",
+ "zcaron;": "\u017E",
+ "zcy;": "\u0437",
+ "zdot;": "\u017C",
+ "zeetrf;": "\u2128",
+ "zeta;": "\u03B6",
+ "zfr;": "\uD835\uDD37",
+ "zhcy;": "\u0436",
+ "zigrarr;": "\u21DD",
+ "zopf;": "\uD835\uDD6B",
+ "zscr;": "\uD835\uDCCF",
+ "zwj;": "\u200D",
+ "zwnj;": "\u200C"
+}
diff --git a/node_modules/typedoc/dist/lib/utils/html.d.ts b/node_modules/typedoc/dist/lib/utils/html.d.ts
new file mode 100644
index 0000000..10a9a9e
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/html.d.ts
@@ -0,0 +1,2 @@
+export declare function getTextContent(text: string): string;
+export declare function escapeHtml(html: string): string;
diff --git a/node_modules/typedoc/dist/lib/utils/html.js b/node_modules/typedoc/dist/lib/utils/html.js
new file mode 100644
index 0000000..4043bd7
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/html.js
@@ -0,0 +1,39 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.escapeHtml = exports.getTextContent = void 0;
+// There is a fixed list of named character references which will not be expanded in the future.
+// This json file is based on https://html.spec.whatwg.org/multipage/named-characters.html#named-character-references
+// with some modifications to reduce the file size of the original JSON since we just need.
+const html_entities_json_1 = __importDefault(require("./html-entities.json"));
+// Three cases:
+// &#123; - numeric escape
+// &#x12; - hex escape
+// &amp; - named escape
+function unescapeEntities(html) {
+ return html.replace(/&(#(?:\d+);?|(?:#[xX][0-9A-Fa-f]+);?|(?:\w+);?)/g, (_, n) => {
+ if (n[0] === "#") {
+ return String.fromCharCode(n[1] === "x" || n[1] === "X"
+ ? parseInt(n.substring(2), 16)
+ : parseInt(n.substring(1), 10));
+ }
+ return html_entities_json_1.default[n] || "";
+ });
+}
+function getTextContent(text) {
+ return unescapeEntities(text.replace(/<.*?(?:>|$)/g, ""));
+}
+exports.getTextContent = getTextContent;
+const htmlEscapes = {
+ "&": "&amp;",
+ "<": "&lt;",
+ ">": "&gt;",
+ '"': "&quot;",
+ "'": "&#39;",
+};
+function escapeHtml(html) {
+ return html.replace(/[&<>'"]/g, (c) => htmlEscapes[c]);
+}
+exports.escapeHtml = escapeHtml;
diff --git a/node_modules/typedoc/dist/lib/utils/index.d.ts b/node_modules/typedoc/dist/lib/utils/index.d.ts
new file mode 100644
index 0000000..70c6e53
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/index.d.ts
@@ -0,0 +1,23 @@
+export { filterMap, insertPrioritySorted, partition, removeIf, removeIfPresent, unique, } from "./array";
+export { AbstractComponent, ChildableComponent, Component } from "./component";
+export * from "./enum";
+export { Event, EventDispatcher } from "./events";
+export { isFile, copy, copySync, getCommonDirectory, readFile, writeFile, writeFileSync, discoverInParentDir, discoverPackageJson, } from "./fs";
+export { normalizePath } from "./paths";
+export type { IfInternal, NeverIfInternal, Chars } from "./general";
+export { assertNever } from "./general";
+export { ConsoleLogger, Logger, LogLevel } from "./loggers";
+export { DefaultMap } from "./map";
+export { ArgumentsReader, BindOption, CommentStyle, Options, PackageJsonReader, ParameterHint, ParameterType, TSConfigReader, TypeDocReader, } from "./options";
+export type { ArrayDeclarationOption, BooleanDeclarationOption, DeclarationOption, DeclarationOptionBase, DeclarationOptionToOptionType, KeyToDeclaration, MapDeclarationOption, MixedDeclarationOption, NumberDeclarationOption, FlagsDeclarationOption, ObjectDeclarationOption, OptionsReader, StringDeclarationOption, TypeDocOptionMap, TypeDocOptions, ValidationOptions, TypeDocOptionValues, ParameterTypeToOptionTypeMap, ManuallyValidatedOption, JsDocCompatibility, } from "./options";
+export { loadPlugins } from "./plugins";
+export { getSortFunction } from "./sort";
+export type { SortStrategy } from "./sort";
+export { EventHooks } from "./hooks";
+export * from "./entry-point";
+import * as JSX from "./jsx";
+export { JSX };
+export { Fragment, Raw, renderElement } from "./jsx";
+export * as Validation from "./validation";
+export * from "./tsutils";
+export { MinimalSourceFile } from "./minimalSourceFile";
diff --git a/node_modules/typedoc/dist/lib/utils/index.js b/node_modules/typedoc/dist/lib/utils/index.js
new file mode 100644
index 0000000..5a53a90
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/index.js
@@ -0,0 +1,91 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __exportStar = (this && this.__exportStar) || function(m, exports) {
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
+};
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.MinimalSourceFile = exports.Validation = exports.renderElement = exports.Raw = exports.Fragment = exports.JSX = exports.EventHooks = exports.getSortFunction = exports.loadPlugins = exports.TypeDocReader = exports.TSConfigReader = exports.ParameterType = exports.ParameterHint = exports.PackageJsonReader = exports.Options = exports.CommentStyle = exports.BindOption = exports.ArgumentsReader = exports.DefaultMap = exports.LogLevel = exports.Logger = exports.ConsoleLogger = exports.assertNever = exports.normalizePath = exports.discoverPackageJson = exports.discoverInParentDir = exports.writeFileSync = exports.writeFile = exports.readFile = exports.getCommonDirectory = exports.copySync = exports.copy = exports.isFile = exports.EventDispatcher = exports.Event = exports.Component = exports.ChildableComponent = exports.AbstractComponent = exports.unique = exports.removeIfPresent = exports.removeIf = exports.partition = exports.insertPrioritySorted = exports.filterMap = void 0;
+var array_1 = require("./array");
+Object.defineProperty(exports, "filterMap", { enumerable: true, get: function () { return array_1.filterMap; } });
+Object.defineProperty(exports, "insertPrioritySorted", { enumerable: true, get: function () { return array_1.insertPrioritySorted; } });
+Object.defineProperty(exports, "partition", { enumerable: true, get: function () { return array_1.partition; } });
+Object.defineProperty(exports, "removeIf", { enumerable: true, get: function () { return array_1.removeIf; } });
+Object.defineProperty(exports, "removeIfPresent", { enumerable: true, get: function () { return array_1.removeIfPresent; } });
+Object.defineProperty(exports, "unique", { enumerable: true, get: function () { return array_1.unique; } });
+var component_1 = require("./component");
+Object.defineProperty(exports, "AbstractComponent", { enumerable: true, get: function () { return component_1.AbstractComponent; } });
+Object.defineProperty(exports, "ChildableComponent", { enumerable: true, get: function () { return component_1.ChildableComponent; } });
+Object.defineProperty(exports, "Component", { enumerable: true, get: function () { return component_1.Component; } });
+__exportStar(require("./enum"), exports);
+var events_1 = require("./events");
+Object.defineProperty(exports, "Event", { enumerable: true, get: function () { return events_1.Event; } });
+Object.defineProperty(exports, "EventDispatcher", { enumerable: true, get: function () { return events_1.EventDispatcher; } });
+var fs_1 = require("./fs");
+Object.defineProperty(exports, "isFile", { enumerable: true, get: function () { return fs_1.isFile; } });
+Object.defineProperty(exports, "copy", { enumerable: true, get: function () { return fs_1.copy; } });
+Object.defineProperty(exports, "copySync", { enumerable: true, get: function () { return fs_1.copySync; } });
+Object.defineProperty(exports, "getCommonDirectory", { enumerable: true, get: function () { return fs_1.getCommonDirectory; } });
+Object.defineProperty(exports, "readFile", { enumerable: true, get: function () { return fs_1.readFile; } });
+Object.defineProperty(exports, "writeFile", { enumerable: true, get: function () { return fs_1.writeFile; } });
+Object.defineProperty(exports, "writeFileSync", { enumerable: true, get: function () { return fs_1.writeFileSync; } });
+Object.defineProperty(exports, "discoverInParentDir", { enumerable: true, get: function () { return fs_1.discoverInParentDir; } });
+Object.defineProperty(exports, "discoverPackageJson", { enumerable: true, get: function () { return fs_1.discoverPackageJson; } });
+var paths_1 = require("./paths");
+Object.defineProperty(exports, "normalizePath", { enumerable: true, get: function () { return paths_1.normalizePath; } });
+var general_1 = require("./general");
+Object.defineProperty(exports, "assertNever", { enumerable: true, get: function () { return general_1.assertNever; } });
+var loggers_1 = require("./loggers");
+Object.defineProperty(exports, "ConsoleLogger", { enumerable: true, get: function () { return loggers_1.ConsoleLogger; } });
+Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return loggers_1.Logger; } });
+Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return loggers_1.LogLevel; } });
+var map_1 = require("./map");
+Object.defineProperty(exports, "DefaultMap", { enumerable: true, get: function () { return map_1.DefaultMap; } });
+var options_1 = require("./options");
+Object.defineProperty(exports, "ArgumentsReader", { enumerable: true, get: function () { return options_1.ArgumentsReader; } });
+Object.defineProperty(exports, "BindOption", { enumerable: true, get: function () { return options_1.BindOption; } });
+Object.defineProperty(exports, "CommentStyle", { enumerable: true, get: function () { return options_1.CommentStyle; } });
+Object.defineProperty(exports, "Options", { enumerable: true, get: function () { return options_1.Options; } });
+Object.defineProperty(exports, "PackageJsonReader", { enumerable: true, get: function () { return options_1.PackageJsonReader; } });
+Object.defineProperty(exports, "ParameterHint", { enumerable: true, get: function () { return options_1.ParameterHint; } });
+Object.defineProperty(exports, "ParameterType", { enumerable: true, get: function () { return options_1.ParameterType; } });
+Object.defineProperty(exports, "TSConfigReader", { enumerable: true, get: function () { return options_1.TSConfigReader; } });
+Object.defineProperty(exports, "TypeDocReader", { enumerable: true, get: function () { return options_1.TypeDocReader; } });
+var plugins_1 = require("./plugins");
+Object.defineProperty(exports, "loadPlugins", { enumerable: true, get: function () { return plugins_1.loadPlugins; } });
+var sort_1 = require("./sort");
+Object.defineProperty(exports, "getSortFunction", { enumerable: true, get: function () { return sort_1.getSortFunction; } });
+var hooks_1 = require("./hooks");
+Object.defineProperty(exports, "EventHooks", { enumerable: true, get: function () { return hooks_1.EventHooks; } });
+__exportStar(require("./entry-point"), exports);
+const JSX = __importStar(require("./jsx"));
+exports.JSX = JSX;
+var jsx_1 = require("./jsx");
+Object.defineProperty(exports, "Fragment", { enumerable: true, get: function () { return jsx_1.Fragment; } });
+Object.defineProperty(exports, "Raw", { enumerable: true, get: function () { return jsx_1.Raw; } });
+Object.defineProperty(exports, "renderElement", { enumerable: true, get: function () { return jsx_1.renderElement; } });
+exports.Validation = __importStar(require("./validation"));
+__exportStar(require("./tsutils"), exports);
+var minimalSourceFile_1 = require("./minimalSourceFile");
+Object.defineProperty(exports, "MinimalSourceFile", { enumerable: true, get: function () { return minimalSourceFile_1.MinimalSourceFile; } });
diff --git a/node_modules/typedoc/dist/lib/utils/jsx.d.ts b/node_modules/typedoc/dist/lib/utils/jsx.d.ts
new file mode 100644
index 0000000..cfec4eb
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/jsx.d.ts
@@ -0,0 +1,47 @@
+/**
+ * Custom JSX module designed specifically for TypeDoc's needs.
+ * When overriding a default TypeDoc theme output, your implementation must create valid {@link Element}
+ * instances, which can be most easily done by using TypeDoc's JSX implementation. To use it, set up
+ * your tsconfig with the following compiler options:
+ * ```json
+ * {
+ * "jsx": "react",
+ * "jsxFactory": "JSX.createElement",
+ * "jsxFragmentFactory": "JSX.Fragment"
+ * }
+ * ```
+ * @module
+ */
+import type { IntrinsicElements, JsxElement, JsxChildren, JsxComponent } from "./jsx.elements";
+import { JsxFragment as Fragment } from "./jsx.elements";
+export type { JsxElement as Element, JsxChildren as Children, JsxComponent, } from "./jsx.elements";
+export { JsxFragment as Fragment } from "./jsx.elements";
+/**
+ * Used to inject HTML directly into the document.
+ */
+export declare function Raw(_props: {
+ html: string;
+}): null;
+/**
+ * TypeScript's rules for looking up the JSX.IntrinsicElements and JSX.Element
+ * interfaces are incredibly strange. It will find them if they are included as
+ * a namespace under the createElement function, or globally, or, apparently, if
+ * a JSX namespace is declared at the same scope as the factory function.
+ * Hide this in the docs, hopefully someday TypeScript improves this and allows
+ * looking adjacent to the factory function and we can get rid of this phantom namespace.
+ * @hidden
+ */
+export declare namespace JSX {
+ export { IntrinsicElements, JsxElement as Element };
+}
+/**
+ * JSX factory function to create an "element" that can later be rendered with {@link renderElement}
+ * @param tag
+ * @param props
+ * @param children
+ */
+export declare function createElement(tag: typeof Fragment | string | JsxComponent<any>, props: object | null, ...children: JsxChildren[]): JsxElement;
+export declare function setRenderSettings(options: {
+ pretty: boolean;
+}): void;
+export declare function renderElement(element: JsxElement | null | undefined): string;
diff --git a/node_modules/typedoc/dist/lib/utils/jsx.elements.d.ts b/node_modules/typedoc/dist/lib/utils/jsx.elements.d.ts
new file mode 100644
index 0000000..57c84b4
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/jsx.elements.d.ts
@@ -0,0 +1,899 @@
+export interface IntrinsicElements {
+ a: JsxAElementProps;
+ abbr: JsxHtmlGlobalProps;
+ address: JsxHtmlGlobalProps;
+ area: JsxAreaElementProps;
+ article: JsxHtmlGlobalProps;
+ aside: JsxHtmlGlobalProps;
+ audio: JsxAudioElementProps;
+ b: JsxHtmlGlobalProps;
+ base: JsxBaseElementProps;
+ bdi: JsxHtmlGlobalProps;
+ bdo: JsxHtmlGlobalProps;
+ blockquote: JsxBlockquoteElementProps;
+ body: JsxHtmlGlobalProps;
+ br: JsxBrElementProps;
+ button: JsxButtonElementProps;
+ canvas: JsxCanvasElementProps;
+ caption: JsxHtmlGlobalProps;
+ cite: JsxHtmlGlobalProps;
+ code: JsxHtmlGlobalProps;
+ col: JsxColElementProps;
+ colgroup: JsxColgroupElementProps;
+ data: JsxDataElementProps;
+ datalist: JsxHtmlGlobalProps;
+ dd: JsxHtmlGlobalProps;
+ del: JsxDelElementProps;
+ details: JsxDetailsElementProps;
+ dfn: JsxHtmlGlobalProps;
+ dialog: JsxDialogElementProps;
+ div: JsxHtmlGlobalProps;
+ dl: JsxHtmlGlobalProps;
+ dt: JsxHtmlGlobalProps;
+ em: JsxHtmlGlobalProps;
+ embed: JsxEmbedElementProps;
+ fieldset: JsxFieldsetElementProps;
+ figcaption: JsxHtmlGlobalProps;
+ figure: JsxHtmlGlobalProps;
+ footer: JsxHtmlGlobalProps;
+ form: JsxFormElementProps;
+ h1: JsxFormElementProps;
+ h2: JsxFormElementProps;
+ h3: JsxFormElementProps;
+ h4: JsxFormElementProps;
+ h5: JsxFormElementProps;
+ h6: JsxFormElementProps;
+ head: JsxHtmlGlobalProps;
+ header: JsxHtmlGlobalProps;
+ hgroup: JsxHtmlGlobalProps;
+ hr: JsxHtmlGlobalProps;
+ html: JsxHtmlElementProps;
+ i: JsxHtmlGlobalProps;
+ iframe: JsxIframeElementProps;
+ img: JsxImgElementProps;
+ input: JsxInputElementProps;
+ ins: JsxInsElementProps;
+ kbd: JsxHtmlGlobalProps;
+ label: JsxLabelElementProps;
+ legend: JsxHtmlGlobalProps;
+ li: JsxLiElementProps;
+ link: JsxLinkElementProps;
+ main: JsxHtmlGlobalProps;
+ map: JsxMapElementProps;
+ mark: JsxHtmlGlobalProps;
+ meta: JsxMetaElementProps;
+ meter: JsxMeterElementProps;
+ nav: JsxHtmlGlobalProps;
+ noscript: JsxHtmlGlobalProps;
+ object: JsxObjectElementProps;
+ ol: JsxOlElementProps;
+ optgroup: JsxOptgroupElementProps;
+ option: JsxOptionElementProps;
+ output: JsxOutputElementProps;
+ p: JsxHtmlGlobalProps;
+ param: JsxParamElementProps;
+ picture: JsxHtmlGlobalProps;
+ portal: JsxPortalElementProps;
+ pre: JsxHtmlGlobalProps;
+ progress: JsxProgressElementProps;
+ q: JsxQElementProps;
+ rp: JsxHtmlGlobalProps;
+ rt: JsxHtmlGlobalProps;
+ ruby: JsxHtmlGlobalProps;
+ s: JsxHtmlGlobalProps;
+ samp: JsxHtmlGlobalProps;
+ script: JsxScriptElementProps;
+ section: JsxHtmlGlobalProps;
+ select: JsxSelectElementProps;
+ slot: JsxSlotElementProps;
+ small: JsxHtmlGlobalProps;
+ source: JsxSourceElementProps;
+ span: JsxHtmlGlobalProps;
+ strong: JsxHtmlGlobalProps;
+ style: JsxStyleElementProps;
+ sub: JsxHtmlGlobalProps;
+ summary: JsxHtmlGlobalProps;
+ sup: JsxHtmlGlobalProps;
+ table: JsxHtmlGlobalProps;
+ tbody: JsxHtmlGlobalProps;
+ td: JsxTdElementProps;
+ template: JsxHtmlGlobalProps;
+ textarea: JsxTextareaElementProps;
+ tfoot: JsxHtmlGlobalProps;
+ th: JsxThElementProps;
+ thead: JsxHtmlGlobalProps;
+ time: JsxTimeElementProps;
+ title: JsxHtmlGlobalProps;
+ tr: JsxHtmlGlobalProps;
+ track: JsxTrackElementProps;
+ u: JsxHtmlGlobalProps;
+ ul: JsxHtmlGlobalProps;
+ var: JsxHtmlGlobalProps;
+ video: JsxVideoElementProps;
+ wbr: JsxHtmlGlobalProps;
+ svg: JsxSvgElementProps;
+ g: JsxGElementProps;
+ path: JsxPathElementProps;
+ rect: JsxRectElementProps;
+ circle: JsxCircleElementProps;
+ ellipse: JsxEllipseElementProps;
+ polygon: JsxPolygonElementProps;
+ polyline: JsxPolylineElementProps;
+ use: JsxUseElementProps;
+}
+export declare const JsxFragment: unique symbol;
+export type JsxComponent<P> = (props: P) => JsxElement | null | undefined;
+export interface JsxElement {
+ tag: typeof JsxFragment | string | JsxComponent<any>;
+ props: object | null;
+ children: JsxChildren[];
+}
+export type JsxChildren = JsxElement | string | number | null | undefined | JsxChildren[];
+/**
+ * The common properties that may appear on any HTML element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes#list_of_global_attributes
+ */
+export interface JsxHtmlGlobalProps {
+ accessKey?: string;
+ autocapitalize?: string;
+ children?: JsxChildren;
+ class?: string;
+ contentEditable?: string;
+ [data: `data-${string}`]: string;
+ dir?: string;
+ draggable?: boolean;
+ enterKeyHint?: string;
+ hidden?: boolean;
+ id?: string;
+ inputMode?: string;
+ is?: string;
+ itemId?: string;
+ itemProp?: string;
+ itemRef?: string;
+ itemScope?: string;
+ itemType?: string;
+ lang?: string;
+ nonce?: string;
+ part?: string;
+ role?: string;
+ slot?: string;
+ spellcheck?: boolean;
+ style?: string;
+ tabIndex?: number;
+ title?: string;
+ translate?: boolean;
+}
+/**
+ * Properties permitted on the `<a>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a
+ */
+export interface JsxAElementProps extends JsxHtmlGlobalProps {
+ download?: string;
+ href?: string;
+ hreflang?: string;
+ ping?: string;
+ referrerPolicy?: string;
+ rel?: string;
+ target?: string;
+ type?: string;
+}
+/**
+ * Properties permitted on the `<area>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/area
+ */
+export interface JsxAreaElementProps extends JsxHtmlGlobalProps {
+ alt?: string;
+ coords?: string;
+ download?: string;
+ href?: string;
+ hreflang?: string;
+ ping?: string;
+ referrerPolicy?: string;
+ rel?: string;
+ shape?: "rect" | "circle" | "poly" | "default";
+ target?: "_self" | "_blank" | "_parent" | "_top";
+}
+/**
+ * Properties permitted on the `<audio>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio
+ */
+export interface JsxAudioElementProps extends JsxHtmlGlobalProps {
+ autoplay?: boolean;
+ controls?: boolean;
+ crossOrigin?: "anonymous" | "use-credentials";
+ loop?: boolean;
+ muted?: boolean;
+ preload?: "none" | "metadata" | "auto" | "";
+ src?: string;
+}
+/**
+ * Properties permitted on the `<base>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base
+ */
+export interface JsxBaseElementProps extends JsxHtmlGlobalProps {
+ href?: string;
+ target?: string;
+}
+/**
+ * Properties permitted on the `<blockquote>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/blockquote
+ */
+export interface JsxBlockquoteElementProps extends JsxHtmlGlobalProps {
+ cite?: string;
+}
+/**
+ * Properties permitted on the `<br>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/br
+ */
+export interface JsxBrElementProps extends JsxHtmlGlobalProps {
+ clear?: string;
+}
+/**
+ * Properties permitted on the `<button>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button
+ */
+export interface JsxButtonElementProps extends JsxHtmlGlobalProps {
+ autofocus?: boolean;
+ disabled?: boolean;
+ form?: string;
+ formAction?: string;
+ formEnctype?: "application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain";
+ formMethod?: "get" | "post";
+ formNoValidate?: boolean;
+ formTarget?: "_self" | "_blank" | "_parent" | "_top";
+ name?: string;
+ type?: "submit" | "reset" | "button";
+ value?: string;
+}
+/**
+ * Properties permitted on the `<canvas>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas
+ */
+export interface JsxCanvasElementProps extends JsxHtmlGlobalProps {
+ height?: number;
+ width?: number;
+}
+/**
+ * Properties permitted on the `<col>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/col
+ */
+export interface JsxColElementProps extends JsxHtmlGlobalProps {
+ span?: number;
+}
+/**
+ * Properties permitted on the `<colgroup>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/colgroup
+ */
+export interface JsxColgroupElementProps extends JsxHtmlGlobalProps {
+ span?: number;
+}
+/**
+ * Properties permitted on the `<data>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/data
+ */
+export interface JsxDataElementProps extends JsxHtmlGlobalProps {
+ value?: string;
+}
+/**
+ * Properties permitted on the `<del>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/del
+ */
+export interface JsxDelElementProps extends JsxHtmlGlobalProps {
+ cite?: string;
+ dateTime?: string;
+}
+/**
+ * Properties permitted on the `<details>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details
+ */
+export interface JsxDetailsElementProps extends JsxHtmlGlobalProps {
+ open?: boolean;
+}
+/**
+ * Properties permitted on the `<dialog>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/dialog
+ */
+export interface JsxDialogElementProps extends JsxHtmlGlobalProps {
+ open?: boolean;
+}
+/**
+ * Properties permitted on the `<embed>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/embed
+ */
+export interface JsxEmbedElementProps extends JsxHtmlGlobalProps {
+ height?: number;
+ src?: string;
+ type?: string;
+ width?: number;
+}
+/**
+ * Properties permitted on the `<fieldset>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/fieldset
+ */
+export interface JsxFieldsetElementProps extends JsxHtmlGlobalProps {
+ disabled?: boolean;
+ form?: string;
+ name?: string;
+}
+/**
+ * Properties permitted on the `<form>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form
+ */
+export interface JsxFormElementProps extends JsxHtmlGlobalProps {
+ "accept-charset"?: string;
+ action?: string;
+ enctype?: "application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain";
+ autocomplete?: string;
+ method?: "get" | "post" | "dialog";
+ name?: string;
+ noValidate?: boolean;
+ rel?: string;
+ target?: "_self" | "_blank" | "_parent" | "_top";
+}
+/**
+ * Properties permitted on the `<html>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/html
+ */
+export interface JsxHtmlElementProps extends JsxHtmlGlobalProps {
+ xmlns?: string;
+}
+/**
+ * Properties permitted on the `<iframe>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
+ */
+export interface JsxIframeElementProps extends JsxHtmlGlobalProps {
+ allow?: string;
+ height?: number;
+ name?: string;
+ referrerPolicy?: "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url";
+ sandbox?: string;
+ src?: string;
+ srcdoc?: string;
+ width?: number;
+}
+/**
+ * Properties permitted on the `<img>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img
+ */
+export interface JsxImgElementProps extends JsxHtmlGlobalProps {
+ alt?: string;
+ crossOrigin?: "anonymous" | "use-credentials";
+ decoding?: "async" | "sync" | "auto";
+ height?: number;
+ isMap?: boolean;
+ referrerPolicy?: "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url";
+ sizes?: string;
+ src: string;
+ srcset?: string;
+ width?: number;
+}
+/**
+ * Properties permitted on the `<input>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input
+ */
+export interface JsxInputElementProps extends JsxHtmlGlobalProps {
+ accept?: string;
+ alt?: string;
+ autocomplete?: string;
+ autofocus?: boolean;
+ capture?: string;
+ checked?: boolean;
+ dirName?: string;
+ disabled?: boolean;
+ form?: string;
+ formAction?: string;
+ formEnctype?: string;
+ formMethod?: string;
+ formNoValidate?: boolean;
+ formTarget?: string;
+ height?: number;
+ list?: string;
+ max?: number;
+ maxLength?: number;
+ min?: string;
+ minLength?: number;
+ multiple?: boolean;
+ name?: string;
+ pattern?: string;
+ placeholder?: string;
+ readOnly?: boolean;
+ required?: boolean;
+ size?: number;
+ src?: string;
+ step?: number;
+ type?: "button" | "checkbox" | "color" | "date" | "datetime-local" | "email" | "file" | "hidden" | "image" | "month" | "number" | "password" | "radio" | "range" | "reset" | "search" | "submit" | "tel" | "text" | "time" | "url" | "week";
+ value?: string;
+ width?: number;
+}
+/**
+ * Properties permitted on the `<ins>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ins
+ */
+export interface JsxInsElementProps extends JsxHtmlGlobalProps {
+ cite?: string;
+ dateTime?: string;
+}
+/**
+ * Properties permitted on the `<label>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/label
+ */
+export interface JsxLabelElementProps extends JsxHtmlGlobalProps {
+ for?: string;
+}
+/**
+ * Properties permitted on the `<li>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/li
+ */
+export interface JsxLiElementProps extends JsxHtmlGlobalProps {
+ value?: number;
+}
+/**
+ * Properties permitted on the `<link>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link
+ */
+export interface JsxLinkElementProps extends JsxHtmlGlobalProps {
+ as?: "audio" | "document" | "embed" | "fetch" | "font" | "image" | "object" | "script" | "style" | "track" | "video" | "worker";
+ crossOrigin?: "anonymous" | "use-credentials";
+ disabled?: boolean;
+ href?: string;
+ hreflang?: string;
+ imageSizes?: string;
+ imageSrcset?: string;
+ media?: string;
+ rel?: string;
+ sizes?: string;
+ type?: string;
+}
+/**
+ * Properties permitted on the `<map>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/map
+ */
+export interface JsxMapElementProps extends JsxHtmlGlobalProps {
+ name?: string;
+}
+/**
+ * Properties permitted on the `<meta>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta
+ */
+export interface JsxMetaElementProps extends JsxHtmlGlobalProps {
+ "http-equiv"?: "content-security-policy" | "content-type" | "default-style" | "x-ua-compatible" | "refresh";
+ charSet?: "utf-8";
+ content?: string;
+ name?: string;
+}
+/**
+ * Properties permitted on the `<meter>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meter
+ */
+export interface JsxMeterElementProps extends JsxHtmlGlobalProps {
+ form?: string;
+ high?: number;
+ low?: number;
+ max?: number;
+ min?: number;
+ optimum?: number;
+ value?: number;
+}
+/**
+ * Properties permitted on the `<object>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/object
+ */
+export interface JsxObjectElementProps extends JsxHtmlGlobalProps {
+ data?: string;
+ form?: string;
+ height?: number;
+ name?: string;
+ type?: string;
+ useMap?: string;
+ width?: number;
+}
+/**
+ * Properties permitted on the `<ol>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ol
+ */
+export interface JsxOlElementProps extends JsxHtmlGlobalProps {
+ reversed?: boolean;
+ start?: number;
+ type?: "a" | "A" | "i" | "I" | "1";
+}
+/**
+ * Properties permitted on the `<optgroup>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup
+ */
+export interface JsxOptgroupElementProps extends JsxHtmlGlobalProps {
+ disabled?: boolean;
+ label: string;
+}
+/**
+ * Properties permitted on the `<option>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/option
+ */
+export interface JsxOptionElementProps extends JsxHtmlGlobalProps {
+ disabled?: boolean;
+ label?: string;
+ selected?: boolean;
+ value?: string;
+}
+/**
+ * Properties permitted on the `<output>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/output
+ */
+export interface JsxOutputElementProps extends JsxHtmlGlobalProps {
+ for?: string;
+ form?: string;
+ name?: string;
+}
+/**
+ * Properties permitted on the `<param>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/param
+ */
+export interface JsxParamElementProps extends JsxHtmlGlobalProps {
+ name?: string;
+ value?: string;
+}
+/**
+ * Properties permitted on the `<portal>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/portal
+ */
+export interface JsxPortalElementProps extends JsxHtmlGlobalProps {
+ referrerPolicy?: "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url";
+ src: string;
+}
+/**
+ * Properties permitted on the `<progress>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/progress
+ */
+export interface JsxProgressElementProps extends JsxHtmlGlobalProps {
+ max?: number;
+ value?: number;
+}
+/**
+ * Properties permitted on the `<q>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/q
+ */
+export interface JsxQElementProps extends JsxHtmlGlobalProps {
+ cite?: string;
+}
+/**
+ * Properties permitted on the `<script>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script
+ */
+export interface JsxScriptElementProps extends JsxHtmlGlobalProps {
+ async?: boolean;
+ crossOrigin?: "anonymous" | "use-credentials";
+ defer?: boolean;
+ integrity?: string;
+ noModule?: boolean;
+ referrerPolicy?: "no-referrer" | "no-referrer-when-downgrade" | "origin" | "origin-when-cross-origin" | "same-origin" | "strict-origin" | "strict-origin-when-cross-origin" | "unsafe-url";
+ src?: string;
+ type?: "module" | (string & {});
+}
+/**
+ * Properties permitted on the `<select>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/select
+ */
+export interface JsxSelectElementProps extends JsxHtmlGlobalProps {
+ autocomplete?: string;
+ autofocus?: boolean;
+ disabled?: boolean;
+ form?: string;
+ multiple?: boolean;
+ name?: string;
+ required?: boolean;
+ size?: number;
+}
+/**
+ * Properties permitted on the `<slot>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot
+ */
+export interface JsxSlotElementProps extends JsxHtmlGlobalProps {
+ name?: string;
+}
+/**
+ * Properties permitted on the `<source>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source
+ */
+export interface JsxSourceElementProps extends JsxHtmlGlobalProps {
+ media?: string;
+ sizes?: string;
+ src?: string;
+ srcset?: string;
+ type?: string;
+}
+/**
+ * Properties permitted on the `<style>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/style
+ */
+export interface JsxStyleElementProps extends JsxHtmlGlobalProps {
+ media?: string;
+ type?: string;
+ nonce?: string;
+}
+/**
+ * Properties permitted on the `<td>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/td
+ */
+export interface JsxTdElementProps extends JsxHtmlGlobalProps {
+ colSpan?: number;
+ headers?: string;
+ rowSpan?: number;
+}
+/**
+ * Properties permitted on the `<textarea>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea
+ */
+export interface JsxTextareaElementProps extends JsxHtmlGlobalProps {
+ autocomplete?: string;
+ autofocus?: boolean;
+ cols?: number;
+ disabled?: boolean;
+ maxLength?: number;
+ minLength?: number;
+ name?: string;
+ placeholder?: string;
+ readOnly?: boolean;
+ required?: boolean;
+ rows?: number;
+ wrap?: "hard" | "soft";
+}
+/**
+ * Properties permitted on the `<th>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th
+ */
+export interface JsxThElementProps extends JsxHtmlGlobalProps {
+ abbr?: string;
+ colSpan?: number;
+ headers?: string;
+ rowSpan?: number;
+ scope?: "row" | "col" | "rowgroup" | "colgroup";
+}
+/**
+ * Properties permitted on the `<time>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/time
+ */
+export interface JsxTimeElementProps extends JsxHtmlGlobalProps {
+ dateTime?: string;
+}
+/**
+ * Properties permitted on the `<track>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/track
+ */
+export interface JsxTrackElementProps extends JsxHtmlGlobalProps {
+ default?: boolean;
+ kind?: "subtitles" | "captions" | "descriptions" | "chapters" | "metadata";
+ label?: string;
+ src?: string;
+ srclang?: string;
+}
+/**
+ * Properties permitted on the `<video>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video
+ */
+export interface JsxVideoElementProps extends JsxHtmlGlobalProps {
+ autoplay?: boolean;
+ controls?: boolean;
+ crossOrigin?: "anonymous" | "use-credentials";
+ height?: number;
+ loop?: boolean;
+ muted?: boolean;
+ playsInline?: boolean;
+ poster?: string;
+ preload?: string;
+ src?: string;
+ width?: number;
+}
+export interface JsxSvgCoreProps {
+ id?: string;
+ lang?: string;
+ tabindex?: string;
+ "xml:base"?: string;
+ xmlns?: string;
+}
+export interface JsxSvgStyleProps {
+ class?: string;
+ style?: string;
+}
+export interface JsxSvgConditionalProcessingProps {
+ systemLanguage?: string;
+}
+export interface JsxSvgPresentationProps {
+ "alignment-baseline"?: "baseline" | "text-bottom" | "text-before-edge" | "middle" | "central" | "text-after-edge" | "ideographic" | "alphabetic" | "hanging" | "mathematical" | "top" | "center" | "bottom";
+ "baseline-shift"?: number | "sub" | "super";
+ "clip-path"?: string;
+ "clip-rule"?: "nonzero" | "evenodd" | "inherit";
+ color?: string;
+ "color-interpolation"?: "auto" | "sRGB" | "linearRGB";
+ "color-interpolation-filters"?: "auto" | "sRGB" | "linearRGB";
+ cursor?: string;
+ direction?: "ltr" | "rtl";
+ display?: string;
+ "dominant-baseline"?: "auto" | "text-bottom" | "alphabetic" | "ideographic" | "middle" | "central" | "mathematical" | "hanging" | "text-top";
+ fill?: string;
+ "fill-opacity"?: number;
+ "fill-rule"?: "nonzero" | "evenodd";
+ filter?: string;
+ "flood-color"?: string;
+ "flood-opacity"?: number;
+ "font-family"?: string;
+ "font-size"?: string;
+ "font-size-adjust"?: "none" | number;
+ "font-stretch"?: string;
+ "font-style"?: "normal" | "italic" | "oblique";
+ "font-variant"?: string;
+ "font-weight"?: "normal" | "bold" | "bolder" | "lighter" | number;
+ "image-rendering"?: "auto" | "optimizeSpeed" | "optimizeQuality";
+ "letter-spacing"?: string;
+ "lighting-color"?: string;
+ "marker-end"?: string;
+ "marker-mid"?: string;
+ "marker-start"?: string;
+ mask?: string;
+ opacity?: number;
+ overflow?: "visible" | "hidden" | "scroll" | "auto";
+ "pointer-events"?: "bounding-box" | "visiblePainted" | "visibleFill" | "visibleStroke" | "visible" | "painted" | "fill" | "stroke" | "all" | "none";
+ "shape-rendering"?: "auto" | "optimizeSpeed" | "crispEdges" | "geometricPrecision";
+ "stop-color"?: string;
+ "stop-opacity"?: string;
+ stroke?: string;
+ "stroke-dasharray"?: string;
+ "stroke-dashoffset"?: string;
+ "stroke-linecap"?: "butt" | "round" | "square";
+ "stroke-linejoin"?: "arcs" | "bevel |miter" | "miter-clip" | "round";
+ "stroke-miterlimit"?: number;
+ "stroke-opacity"?: string | number;
+ "stroke-width"?: string | number;
+ "text-anchor"?: "start" | "middle" | "end";
+ "text-decoration"?: string;
+ "text-rendering"?: "auto" | "optimizeSpeed" | "optimizeLegibility" | "geometricPrecision";
+ transform?: string;
+ "transform-origin"?: string;
+ "unicode-bidi"?: "normal" | "embed" | "isolate" | "bidi-override" | "isolate-override" | "plaintext";
+ "vector-effect"?: "none" | "non-scaling-stroke" | "non-scaling-size" | "non-rotation" | "fixed-position";
+ visibility?: "visible" | "hidden" | "collapse";
+ "word-spacing"?: string;
+ "writing-mode"?: "horizontal-tb" | "vertical-rl" | "vertical-lr";
+}
+/**
+ * Properties permitted on the `<svg>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/svg
+ */
+export interface JsxSvgElementProps extends JsxSvgCoreProps, JsxSvgStyleProps, JsxSvgPresentationProps {
+ height?: string | number;
+ preserveAspectRatio?: `${"none" | "xMinYMin" | "xMaxYMin" | "xMinYMid" | "xMaxYMid" | "xMinYMax" | "xMidYMax" | "xMaxYMax"}${"" | " meet" | " slice"}`;
+ viewBox?: string;
+ width?: string | number;
+ x?: string | number;
+ y?: string | number;
+}
+/**
+ * Properties permitted on the `<g>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/g
+ */
+export interface JsxGElementProps extends JsxSvgCoreProps, JsxSvgStyleProps, JsxSvgConditionalProcessingProps, JsxSvgPresentationProps {
+}
+/**
+ * Properties permitted on the `<path>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/path
+ */
+export interface JsxPathElementProps extends JsxSvgCoreProps, JsxSvgStyleProps, JsxSvgConditionalProcessingProps, JsxSvgPresentationProps {
+ d: string;
+ pathLength?: number;
+}
+/**
+ * Properties permitted on the `<rect>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/rect
+ */
+export interface JsxRectElementProps extends JsxSvgCoreProps, JsxSvgStyleProps, JsxSvgConditionalProcessingProps, JsxSvgPresentationProps {
+ height?: string | number;
+ pathLength?: number;
+ rx?: string | number;
+ ry?: string | number;
+ width?: string | number;
+ x?: string | number;
+ y?: string | number;
+}
+/**
+ * Properties permitted on the `<circle>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/circle
+ */
+export interface JsxCircleElementProps extends JsxSvgCoreProps, JsxSvgStyleProps, JsxSvgConditionalProcessingProps, JsxSvgPresentationProps {
+ cx?: string | number;
+ cy?: string | number;
+ r?: string | number;
+ pathLength?: number;
+}
+/**
+ * Properties permitted on the `<ellipse>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/ellipse
+ */
+export interface JsxEllipseElementProps extends JsxSvgCoreProps, JsxSvgStyleProps, JsxSvgConditionalProcessingProps, JsxSvgPresentationProps {
+ cx?: string | number;
+ cy?: string | number;
+ rx?: string | number;
+ ry?: string | number;
+ pathLength?: number;
+}
+/**
+ * Properties permitted on the `<polygon>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polygon
+ */
+export interface JsxPolygonElementProps extends JsxSvgCoreProps, JsxSvgStyleProps, JsxSvgConditionalProcessingProps, JsxSvgPresentationProps {
+ points?: string;
+ pathLength?: number;
+}
+/** Properties permitted on the `<polyline>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/polyline
+ */
+export interface JsxPolylineElementProps extends JsxSvgCoreProps, JsxSvgStyleProps, JsxSvgConditionalProcessingProps, JsxSvgPresentationProps {
+ points?: string;
+ pathLength?: number;
+}
+/**
+ * Properties permitted on the `<use>` element.
+ *
+ * Reference: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use
+ */
+export interface JsxUseElementProps extends JsxSvgCoreProps, JsxSvgStyleProps, JsxSvgConditionalProcessingProps, JsxSvgPresentationProps {
+ href: string;
+ x?: string | number;
+ y?: string | number;
+ width?: string | number;
+ height?: string | number;
+}
diff --git a/node_modules/typedoc/dist/lib/utils/jsx.elements.js b/node_modules/typedoc/dist/lib/utils/jsx.elements.js
new file mode 100644
index 0000000..4782c8f
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/jsx.elements.js
@@ -0,0 +1,4 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.JsxFragment = void 0;
+exports.JsxFragment = Symbol();
diff --git a/node_modules/typedoc/dist/lib/utils/jsx.js b/node_modules/typedoc/dist/lib/utils/jsx.js
new file mode 100644
index 0000000..5235875
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/jsx.js
@@ -0,0 +1,146 @@
+"use strict";
+/**
+ * Custom JSX module designed specifically for TypeDoc's needs.
+ * When overriding a default TypeDoc theme output, your implementation must create valid {@link Element}
+ * instances, which can be most easily done by using TypeDoc's JSX implementation. To use it, set up
+ * your tsconfig with the following compiler options:
+ * ```json
+ * {
+ * "jsx": "react",
+ * "jsxFactory": "JSX.createElement",
+ * "jsxFragmentFactory": "JSX.Fragment"
+ * }
+ * ```
+ * @module
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.renderElement = exports.setRenderSettings = exports.createElement = exports.Raw = exports.Fragment = void 0;
+const html_1 = require("./html");
+const jsx_elements_1 = require("./jsx.elements");
+var jsx_elements_2 = require("./jsx.elements");
+Object.defineProperty(exports, "Fragment", { enumerable: true, get: function () { return jsx_elements_2.JsxFragment; } });
+/**
+ * Used to inject HTML directly into the document.
+ */
+function Raw(_props) {
+ // This is handled specially by the renderElement function. Instead of being
+ // called, the tag is compared to this function and the `html` prop will be
+ // returned directly.
+ return null;
+}
+exports.Raw = Raw;
+const voidElements = new Set([
+ "area",
+ "base",
+ "br",
+ "col",
+ "embed",
+ "hr",
+ "img",
+ "input",
+ "link",
+ "meta",
+ "param",
+ "source",
+ "track",
+ "wbr",
+]);
+const blockElements = new Set([
+ "h1",
+ "h2",
+ "h3",
+ "h4",
+ "h5",
+ "h6",
+ "div",
+ "section",
+ "nav",
+ "details",
+ "p",
+ "ul",
+ "ol",
+ "li",
+]);
+/**
+ * JSX factory function to create an "element" that can later be rendered with {@link renderElement}
+ * @param tag
+ * @param props
+ * @param children
+ */
+function createElement(tag, props, ...children) {
+ return { tag, props, children };
+}
+exports.createElement = createElement;
+let renderPretty = true;
+function setRenderSettings(options) {
+ renderPretty = options.pretty;
+}
+exports.setRenderSettings = setRenderSettings;
+function renderElement(element) {
+ if (!element) {
+ return "";
+ }
+ const { tag, props, children } = element;
+ if (typeof tag === "function") {
+ if (tag === Raw) {
+ return String(props.html);
+ }
+ return renderElement(tag(Object.assign({ children }, props)));
+ }
+ const html = [];
+ if (tag !== jsx_elements_1.JsxFragment) {
+ if (blockElements.has(tag) && renderPretty) {
+ html.push("\n");
+ }
+ html.push("<", tag);
+ for (const [key, val] of Object.entries(props ?? {})) {
+ if (val == null)
+ continue;
+ if (typeof val == "boolean") {
+ if (val) {
+ html.push(" ", key);
+ }
+ }
+ else {
+ html.push(" ", key, "=", JSON.stringify(val));
+ }
+ }
+ }
+ let hasChildren = false;
+ if (children.length) {
+ hasChildren = true;
+ if (tag !== jsx_elements_1.JsxFragment)
+ html.push(">");
+ renderChildren(children);
+ }
+ if (tag !== jsx_elements_1.JsxFragment) {
+ if (!hasChildren) {
+ if (voidElements.has(tag)) {
+ html.push("/>");
+ }
+ else {
+ html.push("></", tag, ">");
+ }
+ }
+ else {
+ html.push("</", tag, ">");
+ }
+ }
+ return html.join("");
+ function renderChildren(children) {
+ for (const child of children) {
+ if (!child)
+ continue;
+ if (Array.isArray(child)) {
+ renderChildren(child);
+ }
+ else if (typeof child === "string" || typeof child === "number") {
+ html.push((0, html_1.escapeHtml)(child.toString()));
+ }
+ else {
+ html.push(renderElement(child));
+ }
+ }
+ }
+}
+exports.renderElement = renderElement;
diff --git a/node_modules/typedoc/dist/lib/utils/loggers.d.ts b/node_modules/typedoc/dist/lib/utils/loggers.d.ts
new file mode 100644
index 0000000..68d87c3
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/loggers.d.ts
@@ -0,0 +1,114 @@
+import ts from "typescript";
+import type { MinimalSourceFile } from "./minimalSourceFile";
+/**
+ * List of known log levels. Used to specify the urgency of a log message.
+ */
+export declare enum LogLevel {
+ Verbose = 0,
+ Info = 1,
+ Warn = 2,
+ Error = 3,
+ None = 4
+}
+/**
+ * A logger that will not produce any output.
+ *
+ * This logger also serves as the base class of other loggers as it implements
+ * all the required utility functions.
+ */
+export declare class Logger {
+ /**
+ * How many error messages have been logged?
+ */
+ errorCount: number;
+ /**
+ * How many warning messages have been logged?
+ */
+ warningCount: number;
+ private seenErrors;
+ private seenWarnings;
+ /**
+ * The minimum logging level to print.
+ */
+ level: LogLevel;
+ /**
+ * Has an error been raised through the log method?
+ */
+ hasErrors(): boolean;
+ /**
+ * Has a warning been raised through the log method?
+ */
+ hasWarnings(): boolean;
+ /**
+ * Reset the error counter.
+ */
+ resetErrors(): void;
+ /**
+ * Reset the warning counter.
+ */
+ resetWarnings(): void;
+ /**
+ * Log the given verbose message.
+ *
+ * @param text The message that should be logged.
+ * @param args The arguments that should be printed into the given message.
+ */
+ verbose(text: string): void;
+ /** Log the given info message. */
+ info(text: string): void;
+ /**
+ * Log the given warning.
+ *
+ * @param text The warning that should be logged.
+ * @param args The arguments that should be printed into the given warning.
+ */
+ warn(text: string, node?: ts.Node): void;
+ warn(text: string, pos: number, file: MinimalSourceFile): void;
+ /**
+ * Log the given error.
+ *
+ * @param text The error that should be logged.
+ * @param args The arguments that should be printed into the given error.
+ */
+ error(text: string, node?: ts.Node): void;
+ error(text: string, pos: number, file: MinimalSourceFile): void;
+ /** @internal */
+ deprecated(text: string, addStack?: boolean): void;
+ /**
+ * Print a log message.
+ *
+ * @param _message The message itself.
+ * @param level The urgency of the log message.
+ */
+ log(_message: string, level: LogLevel): void;
+ /**
+ * Print the given TypeScript log messages.
+ *
+ * @param diagnostics The TypeScript messages that should be logged.
+ */
+ diagnostics(diagnostics: ReadonlyArray<ts.Diagnostic>): void;
+ /**
+ * Print the given TypeScript log message.
+ *
+ * @param diagnostic The TypeScript message that should be logged.
+ */
+ diagnostic(diagnostic: ts.Diagnostic): void;
+ protected addContext(message: string, _level: LogLevel, ..._args: [ts.Node?] | [number, MinimalSourceFile]): string;
+}
+/**
+ * A logger that outputs all messages to the console.
+ */
+export declare class ConsoleLogger extends Logger {
+ /**
+ * Create a new ConsoleLogger instance.
+ */
+ constructor();
+ /**
+ * Print a log message.
+ *
+ * @param message The message itself.
+ * @param level The urgency of the log message.
+ */
+ log(message: string, level: Exclude<LogLevel, LogLevel.None>): void;
+ protected addContext(message: string, level: Exclude<LogLevel, LogLevel.None>, ...args: [ts.Node?] | [number, MinimalSourceFile]): string;
+}
diff --git a/node_modules/typedoc/dist/lib/utils/loggers.js b/node_modules/typedoc/dist/lib/utils/loggers.js
new file mode 100644
index 0000000..727254d
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/loggers.js
@@ -0,0 +1,229 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ConsoleLogger = exports.Logger = exports.LogLevel = void 0;
+const typescript_1 = __importDefault(require("typescript"));
+const inspector_1 = require("inspector");
+const path_1 = require("path");
+const paths_1 = require("./paths");
+const isDebugging = () => !!(0, inspector_1.url)();
+/**
+ * List of known log levels. Used to specify the urgency of a log message.
+ */
+var LogLevel;
+(function (LogLevel) {
+ LogLevel[LogLevel["Verbose"] = 0] = "Verbose";
+ LogLevel[LogLevel["Info"] = 1] = "Info";
+ LogLevel[LogLevel["Warn"] = 2] = "Warn";
+ LogLevel[LogLevel["Error"] = 3] = "Error";
+ LogLevel[LogLevel["None"] = 4] = "None";
+})(LogLevel || (exports.LogLevel = LogLevel = {}));
+const Colors = {
+ red: "\u001b[91m",
+ yellow: "\u001b[93m",
+ cyan: "\u001b[96m",
+ gray: "\u001b[90m",
+ black: "\u001b[47m\u001b[30m",
+ reset: "\u001b[0m",
+};
+function color(text, color) {
+ if ("NO_COLOR" in process.env)
+ return `${text}`;
+ return `${Colors[color]}${text}${Colors.reset}`;
+}
+const messagePrefixes = {
+ [LogLevel.Error]: color("[error]", "red"),
+ [LogLevel.Warn]: color("[warning]", "yellow"),
+ [LogLevel.Info]: color("[info]", "cyan"),
+ [LogLevel.Verbose]: color("[debug]", "gray"),
+};
+/**
+ * A logger that will not produce any output.
+ *
+ * This logger also serves as the base class of other loggers as it implements
+ * all the required utility functions.
+ */
+class Logger {
+ constructor() {
+ /**
+ * How many error messages have been logged?
+ */
+ this.errorCount = 0;
+ /**
+ * How many warning messages have been logged?
+ */
+ this.warningCount = 0;
+ this.seenErrors = new Set();
+ this.seenWarnings = new Set();
+ /**
+ * The minimum logging level to print.
+ */
+ this.level = LogLevel.Info;
+ }
+ /**
+ * Has an error been raised through the log method?
+ */
+ hasErrors() {
+ return this.errorCount > 0;
+ }
+ /**
+ * Has a warning been raised through the log method?
+ */
+ hasWarnings() {
+ return this.warningCount > 0;
+ }
+ /**
+ * Reset the error counter.
+ */
+ resetErrors() {
+ this.errorCount = 0;
+ this.seenErrors.clear();
+ }
+ /**
+ * Reset the warning counter.
+ */
+ resetWarnings() {
+ this.warningCount = 0;
+ this.seenWarnings.clear();
+ }
+ /**
+ * Log the given verbose message.
+ *
+ * @param text The message that should be logged.
+ * @param args The arguments that should be printed into the given message.
+ */
+ verbose(text) {
+ this.log(this.addContext(text, LogLevel.Verbose), LogLevel.Verbose);
+ }
+ /** Log the given info message. */
+ info(text) {
+ this.log(this.addContext(text, LogLevel.Info), LogLevel.Info);
+ }
+ warn(text, ...args) {
+ const text2 = this.addContext(text, LogLevel.Warn, ...args);
+ if (this.seenWarnings.has(text2) && !isDebugging())
+ return;
+ this.seenWarnings.add(text2);
+ this.log(text2, LogLevel.Warn);
+ }
+ error(text, ...args) {
+ const text2 = this.addContext(text, LogLevel.Error, ...args);
+ if (this.seenErrors.has(text2) && !isDebugging())
+ return;
+ this.seenErrors.add(text2);
+ this.log(text2, LogLevel.Error);
+ }
+ /** @internal */
+ deprecated(text, addStack = true) {
+ if (addStack) {
+ const stack = new Error().stack?.split("\n");
+ if (stack && stack.length >= 4) {
+ text = text + "\n" + stack[3];
+ }
+ }
+ this.warn(text);
+ }
+ /**
+ * Print a log message.
+ *
+ * @param _message The message itself.
+ * @param level The urgency of the log message.
+ */
+ log(_message, level) {
+ if (level === LogLevel.Error) {
+ this.errorCount += 1;
+ }
+ if (level === LogLevel.Warn) {
+ this.warningCount += 1;
+ }
+ }
+ /**
+ * Print the given TypeScript log messages.
+ *
+ * @param diagnostics The TypeScript messages that should be logged.
+ */
+ diagnostics(diagnostics) {
+ diagnostics.forEach((diagnostic) => {
+ this.diagnostic(diagnostic);
+ });
+ }
+ /**
+ * Print the given TypeScript log message.
+ *
+ * @param diagnostic The TypeScript message that should be logged.
+ */
+ diagnostic(diagnostic) {
+ const output = typescript_1.default.formatDiagnosticsWithColorAndContext([diagnostic], {
+ getCanonicalFileName: path_1.resolve,
+ getCurrentDirectory: () => process.cwd(),
+ getNewLine: () => typescript_1.default.sys.newLine,
+ });
+ switch (diagnostic.category) {
+ case typescript_1.default.DiagnosticCategory.Error:
+ this.log(output, LogLevel.Error);
+ break;
+ case typescript_1.default.DiagnosticCategory.Warning:
+ this.log(output, LogLevel.Warn);
+ break;
+ case typescript_1.default.DiagnosticCategory.Message:
+ this.log(output, LogLevel.Info);
+ }
+ }
+ addContext(message, _level, ..._args) {
+ return message;
+ }
+}
+exports.Logger = Logger;
+/**
+ * A logger that outputs all messages to the console.
+ */
+class ConsoleLogger extends Logger {
+ /**
+ * Create a new ConsoleLogger instance.
+ */
+ constructor() {
+ super();
+ }
+ /**
+ * Print a log message.
+ *
+ * @param message The message itself.
+ * @param level The urgency of the log message.
+ */
+ log(message, level) {
+ super.log(message, level);
+ if (level < this.level && !isDebugging()) {
+ return;
+ }
+ const method = {
+ [LogLevel.Error]: "error",
+ [LogLevel.Warn]: "warn",
+ [LogLevel.Info]: "info",
+ [LogLevel.Verbose]: "log",
+ }[level];
+ // eslint-disable-next-line no-console
+ console[method](message);
+ }
+ addContext(message, level, ...args) {
+ if (typeof args[0] === "undefined") {
+ return `${messagePrefixes[level]} ${message}`;
+ }
+ if (typeof args[0] !== "number") {
+ return this.addContext(message, level, args[0].getStart(args[0].getSourceFile(), false), args[0].getSourceFile());
+ }
+ const [pos, file] = args;
+ const path = (0, paths_1.nicePath)(file.fileName);
+ const { line, character } = file.getLineAndCharacterOfPosition(pos);
+ const location = `${color(path, "cyan")}:${color(`${line + 1}`, "yellow")}:${color(`${character}`, "yellow")}`;
+ const start = file.text.lastIndexOf("\n", pos) + 1;
+ let end = file.text.indexOf("\n", start);
+ if (end === -1)
+ end = file.text.length;
+ const prefix = `${location} - ${messagePrefixes[level]}`;
+ const context = `${color(`${line + 1}`, "black")} ${file.text.substring(start, end)}`;
+ return `${prefix} ${message}\n\n${context}\n`;
+ }
+}
+exports.ConsoleLogger = ConsoleLogger;
diff --git a/node_modules/typedoc/dist/lib/utils/map.d.ts b/node_modules/typedoc/dist/lib/utils/map.d.ts
new file mode 100644
index 0000000..6bcb91e
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/map.d.ts
@@ -0,0 +1,23 @@
+export declare class DefaultMap<K, V> extends Map<K, V> {
+ private creator;
+ constructor(creator: () => V);
+ get(key: K): V;
+ getNoInsert(key: K): V | undefined;
+}
+export declare class StableKeyMap<K extends {
+ getStableKey(): string;
+}, V> implements Map<K, V> {
+ [Symbol.toStringTag]: string;
+ private impl;
+ get size(): number;
+ set(key: K, value: V): this;
+ get(key: K): V | undefined;
+ has(key: K): boolean;
+ clear(): void;
+ delete(key: K): boolean;
+ forEach(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any): void;
+ entries(): IterableIterator<[K, V]>;
+ keys(): IterableIterator<K>;
+ values(): IterableIterator<V>;
+ [Symbol.iterator](): IterableIterator<[K, V]>;
+}
diff --git a/node_modules/typedoc/dist/lib/utils/map.js b/node_modules/typedoc/dist/lib/utils/map.js
new file mode 100644
index 0000000..a2450fb
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/map.js
@@ -0,0 +1,70 @@
+"use strict";
+var _a;
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.StableKeyMap = exports.DefaultMap = void 0;
+class DefaultMap extends Map {
+ constructor(creator) {
+ super();
+ this.creator = creator;
+ }
+ get(key) {
+ const saved = super.get(key);
+ if (saved != null) {
+ return saved;
+ }
+ const created = this.creator();
+ this.set(key, created);
+ return created;
+ }
+ getNoInsert(key) {
+ return super.get(key);
+ }
+}
+exports.DefaultMap = DefaultMap;
+class StableKeyMap {
+ constructor() {
+ this[_a] = "StableKeyMap";
+ this.impl = new Map();
+ }
+ get size() {
+ return this.impl.size;
+ }
+ set(key, value) {
+ this.impl.set(key.getStableKey(), [key, value]);
+ return this;
+ }
+ get(key) {
+ return this.impl.get(key.getStableKey())?.[1];
+ }
+ has(key) {
+ return this.get(key) != null;
+ }
+ clear() {
+ this.impl.clear();
+ }
+ delete(key) {
+ return this.impl.delete(key.getStableKey());
+ }
+ forEach(callbackfn, thisArg) {
+ for (const [k, v] of this.entries()) {
+ callbackfn.apply(thisArg, [v, k, this]);
+ }
+ }
+ entries() {
+ return this.impl.values();
+ }
+ *keys() {
+ for (const [k] of this.entries()) {
+ yield k;
+ }
+ }
+ *values() {
+ for (const [, v] of this.entries()) {
+ yield v;
+ }
+ }
+ [(_a = Symbol.toStringTag, Symbol.iterator)]() {
+ return this.entries();
+ }
+}
+exports.StableKeyMap = StableKeyMap;
diff --git a/node_modules/typedoc/dist/lib/utils/minimalSourceFile.d.ts b/node_modules/typedoc/dist/lib/utils/minimalSourceFile.d.ts
new file mode 100644
index 0000000..cd4b943
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/minimalSourceFile.d.ts
@@ -0,0 +1,7 @@
+import type { LineAndCharacter, SourceFileLike } from "typescript";
+export declare class MinimalSourceFile implements SourceFileLike {
+ readonly text: string;
+ readonly fileName: string;
+ constructor(text: string, fileName: string);
+ getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
+}
diff --git a/node_modules/typedoc/dist/lib/utils/minimalSourceFile.js b/node_modules/typedoc/dist/lib/utils/minimalSourceFile.js
new file mode 100644
index 0000000..ea265e6
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/minimalSourceFile.js
@@ -0,0 +1,36 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.MinimalSourceFile = void 0;
+const array_1 = require("./array");
+// I don't like this, but it's necessary so that the lineStarts property isn't
+// visible in the `MinimalSourceFile` type. Even when private it causes compilation
+// errors downstream.
+const lineStarts = new WeakMap();
+class MinimalSourceFile {
+ constructor(text, fileName) {
+ this.text = text;
+ this.fileName = fileName;
+ lineStarts.set(this, [0]);
+ }
+ getLineAndCharacterOfPosition(pos) {
+ if (pos < 0 || pos >= this.text.length) {
+ throw new Error("pos must be within the range of the file.");
+ }
+ const starts = lineStarts.get(this);
+ while (pos >= starts[starts.length - 1]) {
+ const nextStart = this.text.indexOf("\n", starts[starts.length - 1] + 1);
+ if (nextStart === -1) {
+ starts.push(Infinity);
+ }
+ else {
+ starts.push(nextStart + 1);
+ }
+ }
+ const line = (0, array_1.binaryFindPartition)(starts, (x) => x > pos) - 1;
+ return {
+ character: pos - starts[line],
+ line,
+ };
+ }
+}
+exports.MinimalSourceFile = MinimalSourceFile;
diff --git a/node_modules/typedoc/dist/lib/utils/options/declaration.d.ts b/node_modules/typedoc/dist/lib/utils/options/declaration.d.ts
new file mode 100644
index 0000000..08f8023
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/declaration.d.ts
@@ -0,0 +1,387 @@
+import type { Theme as ShikiTheme } from "shiki";
+import type { LogLevel } from "../loggers";
+import type { SortStrategy } from "../sort";
+import type { EntryPointStrategy } from "../entry-point";
+import type { ReflectionKind } from "../../models/reflections/kind";
+/** @enum */
+export declare const EmitStrategy: {
+ readonly both: "both";
+ readonly docs: "docs";
+ readonly none: "none";
+};
+/** @hidden */
+export type EmitStrategy = (typeof EmitStrategy)[keyof typeof EmitStrategy];
+/**
+ * Determines how TypeDoc searches for comments.
+ * @enum
+ */
+export declare const CommentStyle: {
+ readonly JSDoc: "jsdoc";
+ readonly Block: "block";
+ readonly Line: "line";
+ readonly All: "all";
+};
+export type CommentStyle = (typeof CommentStyle)[keyof typeof CommentStyle];
+/**
+ * An interface describing all TypeDoc specific options. Generated from a
+ * map which contains more information about each option for better types when
+ * defining said options.
+ * @interface
+ */
+export type TypeDocOptions = {
+ [K in keyof TypeDocOptionMap]: unknown extends TypeDocOptionMap[K] ? unknown : TypeDocOptionMap[K] extends ManuallyValidatedOption<infer ManuallyValidated> ? ManuallyValidated : TypeDocOptionMap[K] extends string | string[] | number | boolean ? TypeDocOptionMap[K] : TypeDocOptionMap[K] extends Record<string, boolean> ? Partial<TypeDocOptionMap[K]> | boolean : keyof TypeDocOptionMap[K] | TypeDocOptionMap[K][keyof TypeDocOptionMap[K]];
+};
+/**
+ * Describes all TypeDoc specific options as returned by {@link Options.getValue}, this is
+ * slightly more restrictive than the {@link TypeDocOptions} since it does not allow both
+ * keys and values for mapped option types, and does not allow partials of flag values.
+ * @interface
+ */
+export type TypeDocOptionValues = {
+ [K in keyof TypeDocOptionMap]: unknown extends TypeDocOptionMap[K] ? unknown : TypeDocOptionMap[K] extends ManuallyValidatedOption<infer ManuallyValidated> ? ManuallyValidated : TypeDocOptionMap[K] extends string | string[] | number | boolean | Record<string, boolean> ? TypeDocOptionMap[K] : TypeDocOptionMap[K][keyof TypeDocOptionMap[K]];
+};
+/**
+ * Describes all TypeDoc options. Used internally to provide better types when fetching options.
+ * External consumers should likely use {@link TypeDocOptions} instead.
+ *
+ * If writing a plugin, you may find it useful to use declaration merging to add your options to this interface
+ * so that you have autocomplete when using `app.options.getValue`.
+ *
+ * ```ts
+ * declare module "typedoc" {
+ * export interface TypeDocOptionMap {
+ * pluginOption: string[];
+ * }
+ * }
+ * ```
+ */
+export interface TypeDocOptionMap {
+ options: string;
+ tsconfig: string;
+ compilerOptions: unknown;
+ plugin: string[];
+ entryPoints: string[];
+ entryPointStrategy: typeof EntryPointStrategy;
+ exclude: string[];
+ externalPattern: string[];
+ excludeExternals: boolean;
+ excludeNotDocumented: boolean;
+ excludeNotDocumentedKinds: Array<keyof typeof ReflectionKind>;
+ excludeInternal: boolean;
+ excludePrivate: boolean;
+ excludeProtected: boolean;
+ excludeReferences: boolean;
+ name: string;
+ includeVersion: boolean;
+ disableSources: boolean;
+ sourceLinkTemplate: string;
+ gitRevision: string;
+ gitRemote: string;
+ readme: string;
+ out: string;
+ json: string;
+ pretty: boolean;
+ emit: typeof EmitStrategy;
+ theme: string;
+ lightHighlightTheme: ShikiTheme;
+ darkHighlightTheme: ShikiTheme;
+ customCss: string;
+ markedOptions: unknown;
+ basePath: string;
+ cname: string;
+ htmlLang: string;
+ githubPages: boolean;
+ cacheBust: boolean;
+ gaID: string;
+ hideGenerator: boolean;
+ hideParameterTypesInTitle: boolean;
+ searchInComments: boolean;
+ cleanOutputDir: boolean;
+ titleLink: string;
+ navigationLinks: ManuallyValidatedOption<Record<string, string>>;
+ sidebarLinks: ManuallyValidatedOption<Record<string, string>>;
+ navigation: {
+ includeCategories: boolean;
+ includeGroups: boolean;
+ fullTree: boolean;
+ };
+ visibilityFilters: ManuallyValidatedOption<{
+ protected?: boolean;
+ private?: boolean;
+ inherited?: boolean;
+ external?: boolean;
+ [tag: `@${string}`]: boolean;
+ }>;
+ searchCategoryBoosts: ManuallyValidatedOption<Record<string, number>>;
+ searchGroupBoosts: ManuallyValidatedOption<Record<string, number>>;
+ commentStyle: typeof CommentStyle;
+ useTsLinkResolution: boolean;
+ jsDocCompatibility: JsDocCompatibility;
+ blockTags: `@${string}`[];
+ inlineTags: `@${string}`[];
+ modifierTags: `@${string}`[];
+ excludeTags: `@${string}`[];
+ externalSymbolLinkMappings: ManuallyValidatedOption<Record<string, Record<string, string>>>;
+ media: string;
+ includes: string;
+ categorizeByGroup: boolean;
+ defaultCategory: string;
+ categoryOrder: string[];
+ groupOrder: string[];
+ sort: SortStrategy[];
+ kindSortOrder: ReflectionKind.KindString[];
+ treatWarningsAsErrors: boolean;
+ treatValidationWarningsAsErrors: boolean;
+ intentionallyNotExported: string[];
+ validation: ValidationOptions;
+ requiredToBeDocumented: ReflectionKind.KindString[];
+ watch: boolean;
+ preserveWatchOutput: boolean;
+ help: boolean;
+ version: boolean;
+ showConfig: boolean;
+ logLevel: typeof LogLevel;
+ skipErrorChecking: boolean;
+}
+/**
+ * Wrapper type for values in TypeDocOptionMap which are represented with an unknown option type, but
+ * have a validation function that checks that they are the given type.
+ */
+export type ManuallyValidatedOption<T> = {
+ __validated: T;
+};
+export type ValidationOptions = {
+ /**
+ * If set, TypeDoc will produce warnings when a symbol is referenced by the documentation,
+ * but is not included in the documentation.
+ */
+ notExported: boolean;
+ /**
+ * If set, TypeDoc will produce warnings about \{\@link\} tags which will produce broken links.
+ */
+ invalidLink: boolean;
+ /**
+ * If set, TypeDoc will produce warnings about declarations that do not have doc comments
+ */
+ notDocumented: boolean;
+};
+export type JsDocCompatibility = {
+ /**
+ * If set, TypeDoc will treat `@example` blocks as code unless they contain a code block.
+ * On by default, this is how VSCode renders blocks.
+ */
+ exampleTag: boolean;
+ /**
+ * If set, TypeDoc will treat `@default` blocks as code unless they contain a code block.
+ * On by default, this is how VSCode renders blocks.
+ */
+ defaultTag: boolean;
+ /**
+ * If set, TypeDoc will warn if a `@inheritDoc` tag is spelled without TSDoc capitalization
+ * (i.e. `@inheritdoc`). On by default.
+ */
+ inheritDocTag: boolean;
+ /**
+ * If set, TypeDoc will not emit warnings about unescaped `{` and `}` characters encountered
+ * when parsing a comment. On by default.
+ */
+ ignoreUnescapedBraces: boolean;
+};
+/**
+ * Converts a given TypeDoc option key to the type of the declaration expected.
+ */
+export type KeyToDeclaration<K extends keyof TypeDocOptionMap> = TypeDocOptionMap[K] extends boolean ? BooleanDeclarationOption : TypeDocOptionMap[K] extends string ? StringDeclarationOption : TypeDocOptionMap[K] extends number ? NumberDeclarationOption : TypeDocOptionMap[K] extends string[] ? ArrayDeclarationOption : unknown extends TypeDocOptionMap[K] ? MixedDeclarationOption | ObjectDeclarationOption : TypeDocOptionMap[K] extends ManuallyValidatedOption<unknown> ? (MixedDeclarationOption & {
+ validate(value: unknown): void;
+}) | (ObjectDeclarationOption & {
+ validate(value: unknown): void;
+}) : TypeDocOptionMap[K] extends Record<string, boolean> ? FlagsDeclarationOption<TypeDocOptionMap[K]> : TypeDocOptionMap[K] extends Record<string | number, infer U> ? MapDeclarationOption<U> : never;
+export declare enum ParameterHint {
+ File = 0,
+ Directory = 1
+}
+export declare enum ParameterType {
+ String = 0,
+ /**
+ * Resolved according to the config directory.
+ */
+ Path = 1,
+ Number = 2,
+ Boolean = 3,
+ Map = 4,
+ Mixed = 5,
+ Array = 6,
+ /**
+ * Resolved according to the config directory.
+ */
+ PathArray = 7,
+ /**
+ * Resolved according to the config directory if it starts with `.`
+ */
+ ModuleArray = 8,
+ /**
+ * Resolved according to the config directory unless it starts with `**`, after skipping any leading `!` and `#` characters.
+ */
+ GlobArray = 9,
+ /**
+ * An unopinionated object that preserves default settings unless explicitly overridden
+ */
+ Object = 10,
+ /**
+ * An object with true/false flags
+ */
+ Flags = 11
+}
+export interface DeclarationOptionBase {
+ /**
+ * The option name.
+ */
+ name: string;
+ /**
+ * The help text to be displayed to the user when --help is passed.
+ */
+ help: string;
+ /**
+ * The parameter type, used to convert user configuration values into the expected type.
+ * If not set, the type will be a string.
+ */
+ type?: ParameterType;
+ /**
+ * If set, this option will be omitted from `--help`, and attempting to specify it on the command
+ * line will produce an error.
+ */
+ configFileOnly?: boolean;
+}
+export interface StringDeclarationOption extends DeclarationOptionBase {
+ /**
+ * Specifies the resolution strategy. If `Path` is provided, values will be resolved according to their
+ * location in a file. If `String` or no value is provided, values will not be resolved.
+ */
+ type?: ParameterType.String | ParameterType.Path;
+ /**
+ * If not specified defaults to the empty string for both `String` and `Path`.
+ */
+ defaultValue?: string;
+ /**
+ * An optional hint for the type of input expected, will be displayed in the help output.
+ */
+ hint?: ParameterHint;
+ /**
+ * An optional validation function that validates a potential value of this option.
+ * The function must throw an Error if the validation fails and should do nothing otherwise.
+ */
+ validate?: (value: string) => void;
+}
+export interface NumberDeclarationOption extends DeclarationOptionBase {
+ type: ParameterType.Number;
+ /**
+ * Lowest possible value.
+ */
+ minValue?: number;
+ /**
+ * Highest possible value.
+ */
+ maxValue?: number;
+ /**
+ * If not specified defaults to 0.
+ */
+ defaultValue?: number;
+ /**
+ * An optional validation function that validates a potential value of this option.
+ * The function must throw an Error if the validation fails and should do nothing otherwise.
+ */
+ validate?: (value: number) => void;
+}
+export interface BooleanDeclarationOption extends DeclarationOptionBase {
+ type: ParameterType.Boolean;
+ /**
+ * If not specified defaults to false.
+ */
+ defaultValue?: boolean;
+}
+export interface ArrayDeclarationOption extends DeclarationOptionBase {
+ type: ParameterType.Array | ParameterType.PathArray | ParameterType.ModuleArray | ParameterType.GlobArray;
+ /**
+ * If not specified defaults to an empty array.
+ */
+ defaultValue?: readonly string[];
+ /**
+ * An optional validation function that validates a potential value of this option.
+ * The function must throw an Error if the validation fails and should do nothing otherwise.
+ */
+ validate?: (value: string[]) => void;
+}
+export interface MixedDeclarationOption extends DeclarationOptionBase {
+ type: ParameterType.Mixed;
+ /**
+ * If not specified defaults to undefined.
+ */
+ defaultValue?: unknown;
+ /**
+ * An optional validation function that validates a potential value of this option.
+ * The function must throw an Error if the validation fails and should do nothing otherwise.
+ */
+ validate?: (value: unknown) => void;
+}
+export interface ObjectDeclarationOption extends DeclarationOptionBase {
+ type: ParameterType.Object;
+ /**
+ * If not specified defaults to undefined.
+ */
+ defaultValue?: unknown;
+ /**
+ * An optional validation function that validates a potential value of this option.
+ * The function must throw an Error if the validation fails and should do nothing otherwise.
+ */
+ validate?: (value: unknown) => void;
+}
+export interface MapDeclarationOption<T> extends DeclarationOptionBase {
+ type: ParameterType.Map;
+ /**
+ * Maps a given value to the option type. The map type may be a TypeScript enum.
+ * In that case, when generating an error message for a mismatched key, the numeric
+ * keys will not be listed.
+ */
+ map: Map<string, T> | Record<string | number, T>;
+ /**
+ * Unlike the rest of the option types, there is no sensible generic default for mapped option types.
+ * The default value for a mapped type must be specified.
+ */
+ defaultValue: T;
+ /**
+ * Optional override for the error reported when an invalid key is provided.
+ */
+ mapError?: string;
+}
+export interface FlagsDeclarationOption<T extends Record<string, boolean>> extends DeclarationOptionBase {
+ type: ParameterType.Flags;
+ /**
+ * All of the possible flags, with their default values set.
+ */
+ defaults: T;
+}
+export type DeclarationOption = StringDeclarationOption | NumberDeclarationOption | BooleanDeclarationOption | MixedDeclarationOption | ObjectDeclarationOption | MapDeclarationOption<unknown> | ArrayDeclarationOption | FlagsDeclarationOption<Record<string, boolean>>;
+export interface ParameterTypeToOptionTypeMap {
+ [ParameterType.String]: string;
+ [ParameterType.Path]: string;
+ [ParameterType.Number]: number;
+ [ParameterType.Boolean]: boolean;
+ [ParameterType.Mixed]: unknown;
+ [ParameterType.Object]: unknown;
+ [ParameterType.Array]: string[];
+ [ParameterType.PathArray]: string[];
+ [ParameterType.ModuleArray]: string[];
+ [ParameterType.GlobArray]: string[];
+ [ParameterType.Flags]: Record<string, boolean>;
+ [ParameterType.Map]: unknown;
+}
+export type DeclarationOptionToOptionType<T extends DeclarationOption> = T extends MapDeclarationOption<infer U> ? U : T extends FlagsDeclarationOption<infer U> ? U : ParameterTypeToOptionTypeMap[Exclude<T["type"], undefined>];
+/**
+ * The default conversion function used by the Options container. Readers may
+ * re-use this conversion function or implement their own. The arguments reader
+ * implements its own since 'false' should not be converted to true for a boolean option.
+ * @param value The value to convert.
+ * @param option The option for which the value should be converted.
+ * @returns The result of the conversion. Might be the value or an error.
+ */
+export declare function convert(value: unknown, option: DeclarationOption, configPath: string, oldValue?: unknown): unknown;
+export declare function getDefaultValue(option: DeclarationOption): unknown;
diff --git a/node_modules/typedoc/dist/lib/utils/options/declaration.js b/node_modules/typedoc/dist/lib/utils/options/declaration.js
new file mode 100644
index 0000000..90a2c77
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/declaration.js
@@ -0,0 +1,329 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getDefaultValue = exports.convert = exports.ParameterType = exports.ParameterHint = exports.CommentStyle = exports.EmitStrategy = void 0;
+const path_1 = require("path");
+/** @enum */
+exports.EmitStrategy = {
+ both: "both",
+ docs: "docs",
+ none: "none", // Emit nothing, just convert and run validation
+};
+/**
+ * Determines how TypeDoc searches for comments.
+ * @enum
+ */
+exports.CommentStyle = {
+ JSDoc: "jsdoc",
+ Block: "block",
+ Line: "line",
+ All: "all",
+};
+var ParameterHint;
+(function (ParameterHint) {
+ ParameterHint[ParameterHint["File"] = 0] = "File";
+ ParameterHint[ParameterHint["Directory"] = 1] = "Directory";
+})(ParameterHint || (exports.ParameterHint = ParameterHint = {}));
+var ParameterType;
+(function (ParameterType) {
+ ParameterType[ParameterType["String"] = 0] = "String";
+ /**
+ * Resolved according to the config directory.
+ */
+ ParameterType[ParameterType["Path"] = 1] = "Path";
+ ParameterType[ParameterType["Number"] = 2] = "Number";
+ ParameterType[ParameterType["Boolean"] = 3] = "Boolean";
+ ParameterType[ParameterType["Map"] = 4] = "Map";
+ ParameterType[ParameterType["Mixed"] = 5] = "Mixed";
+ ParameterType[ParameterType["Array"] = 6] = "Array";
+ /**
+ * Resolved according to the config directory.
+ */
+ ParameterType[ParameterType["PathArray"] = 7] = "PathArray";
+ /**
+ * Resolved according to the config directory if it starts with `.`
+ */
+ ParameterType[ParameterType["ModuleArray"] = 8] = "ModuleArray";
+ /**
+ * Resolved according to the config directory unless it starts with `**`, after skipping any leading `!` and `#` characters.
+ */
+ ParameterType[ParameterType["GlobArray"] = 9] = "GlobArray";
+ /**
+ * An unopinionated object that preserves default settings unless explicitly overridden
+ */
+ ParameterType[ParameterType["Object"] = 10] = "Object";
+ /**
+ * An object with true/false flags
+ */
+ ParameterType[ParameterType["Flags"] = 11] = "Flags";
+})(ParameterType || (exports.ParameterType = ParameterType = {}));
+const converters = {
+ [ParameterType.String](value, option) {
+ const stringValue = value == null ? "" : String(value);
+ option.validate?.(stringValue);
+ return stringValue;
+ },
+ [ParameterType.Path](value, option, configPath) {
+ const stringValue = value == null ? "" : (0, path_1.resolve)(configPath, String(value));
+ option.validate?.(stringValue);
+ return stringValue;
+ },
+ [ParameterType.Number](value, option) {
+ const numValue = parseInt(String(value), 10) || 0;
+ if (!valueIsWithinBounds(numValue, option.minValue, option.maxValue)) {
+ throw new Error(getBoundsError(option.name, option.minValue, option.maxValue));
+ }
+ option.validate?.(numValue);
+ return numValue;
+ },
+ [ParameterType.Boolean](value) {
+ return !!value;
+ },
+ [ParameterType.Array](value, option) {
+ let strArrValue = new Array();
+ if (Array.isArray(value)) {
+ strArrValue = value.map(String);
+ }
+ else if (typeof value === "string") {
+ strArrValue = [value];
+ }
+ option.validate?.(strArrValue);
+ return strArrValue;
+ },
+ [ParameterType.PathArray](value, option, configPath) {
+ let strArrValue = new Array();
+ if (Array.isArray(value)) {
+ strArrValue = value.map(String);
+ }
+ else if (typeof value === "string") {
+ strArrValue = [value];
+ }
+ strArrValue = strArrValue.map((path) => (0, path_1.resolve)(configPath, path));
+ option.validate?.(strArrValue);
+ return strArrValue;
+ },
+ [ParameterType.ModuleArray](value, option, configPath) {
+ let strArrValue = new Array();
+ if (Array.isArray(value)) {
+ strArrValue = value.map(String);
+ }
+ else if (typeof value === "string") {
+ strArrValue = [value];
+ }
+ strArrValue = resolveModulePaths(strArrValue, configPath);
+ option.validate?.(strArrValue);
+ return strArrValue;
+ },
+ [ParameterType.GlobArray](value, option, configPath) {
+ let strArrValue = new Array();
+ if (Array.isArray(value)) {
+ strArrValue = value.map(String);
+ }
+ else if (typeof value === "string") {
+ strArrValue = [value];
+ }
+ strArrValue = resolveGlobPaths(strArrValue, configPath);
+ option.validate?.(strArrValue);
+ return strArrValue;
+ },
+ [ParameterType.Map](value, option) {
+ const key = String(value);
+ if (option.map instanceof Map) {
+ if (option.map.has(key)) {
+ return option.map.get(key);
+ }
+ else if ([...option.map.values()].includes(value)) {
+ return value;
+ }
+ }
+ else if (key in option.map) {
+ if (isTsNumericEnum(option.map) && typeof value === "number") {
+ return value;
+ }
+ return option.map[key];
+ }
+ else if (Object.values(option.map).includes(value)) {
+ return value;
+ }
+ throw new Error(option.mapError ?? getMapError(option.map, option.name));
+ },
+ [ParameterType.Mixed](value, option) {
+ option.validate?.(value);
+ return value;
+ },
+ [ParameterType.Object](value, option, _configPath, oldValue) {
+ option.validate?.(value);
+ if (typeof oldValue !== "undefined")
+ value = { ...oldValue, ...value };
+ return value;
+ },
+ [ParameterType.Flags](value, option) {
+ if (typeof value === "boolean") {
+ value = Object.fromEntries(Object.keys(option.defaults).map((key) => [key, value]));
+ }
+ if (typeof value !== "object" || value == null) {
+ throw new Error(`Expected an object with flag values for ${option.name} or true/false`);
+ }
+ const obj = { ...value };
+ for (const key of Object.keys(obj)) {
+ if (!Object.prototype.hasOwnProperty.call(option.defaults, key)) {
+ throw new Error(`The flag '${key}' is not valid for ${option.name}, expected one of: ${Object.keys(option.defaults).join(", ")}`);
+ }
+ if (typeof obj[key] !== "boolean") {
+ // Explicit null/undefined, switch to default.
+ if (obj[key] == null) {
+ obj[key] = option.defaults[key];
+ }
+ else {
+ throw new Error(`Flag values for ${option.name} must be a boolean.`);
+ }
+ }
+ }
+ return obj;
+ },
+};
+/**
+ * The default conversion function used by the Options container. Readers may
+ * re-use this conversion function or implement their own. The arguments reader
+ * implements its own since 'false' should not be converted to true for a boolean option.
+ * @param value The value to convert.
+ * @param option The option for which the value should be converted.
+ * @returns The result of the conversion. Might be the value or an error.
+ */
+function convert(value, option, configPath, oldValue) {
+ const _converters = converters;
+ return _converters[option.type ?? ParameterType.String](value, option, configPath, oldValue);
+}
+exports.convert = convert;
+const defaultGetters = {
+ [ParameterType.String](option) {
+ return option.defaultValue ?? "";
+ },
+ [ParameterType.Path](option) {
+ const defaultStr = option.defaultValue ?? "";
+ if (defaultStr == "") {
+ return "";
+ }
+ return (0, path_1.isAbsolute)(defaultStr)
+ ? defaultStr
+ : (0, path_1.join)(process.cwd(), defaultStr);
+ },
+ [ParameterType.Number](option) {
+ return option.defaultValue ?? 0;
+ },
+ [ParameterType.Boolean](option) {
+ return option.defaultValue ?? false;
+ },
+ [ParameterType.Map](option) {
+ return option.defaultValue;
+ },
+ [ParameterType.Mixed](option) {
+ return option.defaultValue;
+ },
+ [ParameterType.Object](option) {
+ return option.defaultValue;
+ },
+ [ParameterType.Array](option) {
+ return option.defaultValue?.slice() ?? [];
+ },
+ [ParameterType.PathArray](option) {
+ return (option.defaultValue?.map((value) => (0, path_1.resolve)(process.cwd(), value)) ?? []);
+ },
+ [ParameterType.ModuleArray](option) {
+ return (option.defaultValue?.map((value) => value.startsWith(".") ? (0, path_1.resolve)(process.cwd(), value) : value) ?? []);
+ },
+ [ParameterType.GlobArray](option) {
+ return resolveGlobPaths(option.defaultValue ?? [], process.cwd());
+ },
+ [ParameterType.Flags](option) {
+ return { ...option.defaults };
+ },
+};
+function getDefaultValue(option) {
+ const getters = defaultGetters;
+ return getters[option.type ?? ParameterType.String](option);
+}
+exports.getDefaultValue = getDefaultValue;
+function resolveGlobPaths(globs, configPath) {
+ return globs.map((path) => {
+ const start = path.match(/^[!#]+/)?.[0] ?? "";
+ const remaining = path.substring(start.length);
+ if (!remaining.startsWith("**")) {
+ return start + (0, path_1.resolve)(configPath, remaining);
+ }
+ return start + remaining;
+ });
+}
+function resolveModulePaths(modules, configPath) {
+ return modules.map((path) => {
+ if (path.startsWith(".")) {
+ return (0, path_1.resolve)(configPath, path);
+ }
+ return path;
+ });
+}
+function isTsNumericEnum(map) {
+ return Object.values(map).every((key) => map[map[key]] === key);
+}
+/**
+ * Returns an error message for a map option, indicating that a given value was not one of the values within the map.
+ * @param map The values for the option.
+ * @param name The name of the option.
+ * @returns The error message.
+ */
+function getMapError(map, name) {
+ let keys = map instanceof Map ? [...map.keys()] : Object.keys(map);
+ // If the map is a TS numeric enum we need to filter out the numeric keys.
+ // TS numeric enums have the property that every key maps to a value, which maps back to that key.
+ if (!(map instanceof Map) && isTsNumericEnum(map)) {
+ // This works because TS enum keys may not be numeric.
+ keys = keys.filter((key) => Number.isNaN(parseInt(key, 10)));
+ }
+ return `${name} must be one of ${keys.join(", ")}`;
+}
+/**
+ * Returns an error message for a value that is out of bounds of the given min and/or max values.
+ * @param name The name of the thing the value represents.
+ * @param minValue The lower bound of the range of allowed values.
+ * @param maxValue The upper bound of the range of allowed values.
+ * @returns The error message.
+ */
+function getBoundsError(name, minValue, maxValue) {
+ if (isFiniteNumber(minValue) && isFiniteNumber(maxValue)) {
+ return `${name} must be between ${minValue} and ${maxValue}`;
+ }
+ else if (isFiniteNumber(minValue)) {
+ return `${name} must be >= ${minValue}`;
+ }
+ else {
+ return `${name} must be <= ${maxValue}`;
+ }
+}
+/**
+ * Checks if the given value is a finite number.
+ * @param value The value being checked.
+ * @returns True, if the value is a finite number, otherwise false.
+ */
+function isFiniteNumber(value) {
+ return Number.isFinite(value);
+}
+/**
+ * Checks if a value is between the bounds of the given min and/or max values.
+ * @param value The value being checked.
+ * @param minValue The lower bound of the range of allowed values.
+ * @param maxValue The upper bound of the range of allowed values.
+ * @returns True, if the value is within the given bounds, otherwise false.
+ */
+function valueIsWithinBounds(value, minValue, maxValue) {
+ if (isFiniteNumber(minValue) && isFiniteNumber(maxValue)) {
+ return minValue <= value && value <= maxValue;
+ }
+ else if (isFiniteNumber(minValue)) {
+ return minValue <= value;
+ }
+ else if (isFiniteNumber(maxValue)) {
+ return value <= maxValue;
+ }
+ else {
+ return true;
+ }
+}
diff --git a/node_modules/typedoc/dist/lib/utils/options/help.d.ts b/node_modules/typedoc/dist/lib/utils/options/help.d.ts
new file mode 100644
index 0000000..1119dc6
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/help.d.ts
@@ -0,0 +1,7 @@
+import type { Options } from "./options";
+export interface ParameterHelp {
+ names: string[];
+ helps: string[];
+ margin: number;
+}
+export declare function getOptionsHelp(options: Options): string;
diff --git a/node_modules/typedoc/dist/lib/utils/options/help.js b/node_modules/typedoc/dist/lib/utils/options/help.js
new file mode 100644
index 0000000..0c1d629
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/help.js
@@ -0,0 +1,66 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getOptionsHelp = void 0;
+const declaration_1 = require("./declaration");
+const highlighter_1 = require("../highlighter");
+const shiki_1 = require("shiki");
+function hasHint(parameter) {
+ return ((parameter.type ?? declaration_1.ParameterType.String) === declaration_1.ParameterType.String &&
+ "hint" in parameter);
+}
+/**
+ * Prepare parameter information for the {@link toString} method.
+ *
+ * @param scope The scope of the parameters whose help should be returned.
+ * @returns The columns and lines for the help of the requested parameters.
+ */
+function getParameterHelp(options) {
+ const parameters = options.getDeclarations();
+ parameters.sort((a, b) => a.name.localeCompare(b.name, undefined, { sensitivity: "base" }));
+ const names = [];
+ const helps = [];
+ let margin = 0;
+ for (const parameter of parameters) {
+ if (!parameter.help || parameter.configFileOnly) {
+ continue;
+ }
+ let name = " --" + parameter.name;
+ if (hasHint(parameter)) {
+ name += " " + declaration_1.ParameterHint[parameter.hint].toUpperCase();
+ }
+ names.push(name);
+ helps.push(parameter.help);
+ margin = Math.max(name.length, margin);
+ }
+ return { names, helps, margin };
+}
+function toEvenColumns(values, maxLineWidth) {
+ const columnWidth = values.reduce((acc, val) => Math.max(acc, val.length), 0) + 2;
+ const numColumns = Math.max(1, Math.min(maxLineWidth / columnWidth));
+ let line = "";
+ const out = [];
+ for (let i = 0; i < values.length; ++i) {
+ if (i !== 0 && i % numColumns === 0) {
+ out.push(line);
+ line = "";
+ }
+ line += values[i].padEnd(columnWidth);
+ }
+ if (line != "") {
+ out.push(line);
+ }
+ return out;
+}
+function getOptionsHelp(options) {
+ const output = ["Usage:", " typedoc path/to/entry.ts", "", "Options:"];
+ const columns = getParameterHelp(options);
+ for (let i = 0; i < columns.names.length; i++) {
+ const usage = columns.names[i];
+ const description = columns.helps[i];
+ output.push(usage.padEnd(columns.margin + 2) + description);
+ }
+ output.push("", "Supported highlighting languages:", ...toEvenColumns((0, highlighter_1.getSupportedLanguages)(), 80));
+ output.push("", "Supported highlighting themes:", ...toEvenColumns(shiki_1.BUNDLED_THEMES, 80));
+ return output.join("\n");
+}
+exports.getOptionsHelp = getOptionsHelp;
diff --git a/node_modules/typedoc/dist/lib/utils/options/index.d.ts b/node_modules/typedoc/dist/lib/utils/options/index.d.ts
new file mode 100644
index 0000000..3e2ff97
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/index.d.ts
@@ -0,0 +1,5 @@
+export { Options, BindOption } from "./options";
+export type { OptionsReader } from "./options";
+export { ArgumentsReader, PackageJsonReader, TypeDocReader, TSConfigReader, } from "./readers";
+export { CommentStyle, EmitStrategy, ParameterType, ParameterHint, } from "./declaration";
+export type { TypeDocOptions, TypeDocOptionMap, ValidationOptions, KeyToDeclaration, DeclarationOption, DeclarationOptionBase, StringDeclarationOption, NumberDeclarationOption, BooleanDeclarationOption, ArrayDeclarationOption, MixedDeclarationOption, ObjectDeclarationOption, MapDeclarationOption, FlagsDeclarationOption, DeclarationOptionToOptionType, TypeDocOptionValues, ParameterTypeToOptionTypeMap, ManuallyValidatedOption, JsDocCompatibility, } from "./declaration";
diff --git a/node_modules/typedoc/dist/lib/utils/options/index.js b/node_modules/typedoc/dist/lib/utils/options/index.js
new file mode 100644
index 0000000..f312f11
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/index.js
@@ -0,0 +1,16 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ParameterHint = exports.ParameterType = exports.EmitStrategy = exports.CommentStyle = exports.TSConfigReader = exports.TypeDocReader = exports.PackageJsonReader = exports.ArgumentsReader = exports.BindOption = exports.Options = void 0;
+var options_1 = require("./options");
+Object.defineProperty(exports, "Options", { enumerable: true, get: function () { return options_1.Options; } });
+Object.defineProperty(exports, "BindOption", { enumerable: true, get: function () { return options_1.BindOption; } });
+var readers_1 = require("./readers");
+Object.defineProperty(exports, "ArgumentsReader", { enumerable: true, get: function () { return readers_1.ArgumentsReader; } });
+Object.defineProperty(exports, "PackageJsonReader", { enumerable: true, get: function () { return readers_1.PackageJsonReader; } });
+Object.defineProperty(exports, "TypeDocReader", { enumerable: true, get: function () { return readers_1.TypeDocReader; } });
+Object.defineProperty(exports, "TSConfigReader", { enumerable: true, get: function () { return readers_1.TSConfigReader; } });
+var declaration_1 = require("./declaration");
+Object.defineProperty(exports, "CommentStyle", { enumerable: true, get: function () { return declaration_1.CommentStyle; } });
+Object.defineProperty(exports, "EmitStrategy", { enumerable: true, get: function () { return declaration_1.EmitStrategy; } });
+Object.defineProperty(exports, "ParameterType", { enumerable: true, get: function () { return declaration_1.ParameterType; } });
+Object.defineProperty(exports, "ParameterHint", { enumerable: true, get: function () { return declaration_1.ParameterHint; } });
diff --git a/node_modules/typedoc/dist/lib/utils/options/options.d.ts b/node_modules/typedoc/dist/lib/utils/options/options.d.ts
new file mode 100644
index 0000000..a726f9d
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/options.d.ts
@@ -0,0 +1,222 @@
+import type * as ts from "typescript";
+import type { NeverIfInternal } from "..";
+import type { Application } from "../../..";
+import type { Logger } from "../loggers";
+import { DeclarationOption, KeyToDeclaration, TypeDocOptionMap, TypeDocOptions, TypeDocOptionValues } from "./declaration";
+/**
+ * Describes an option reader that discovers user configuration and converts it to the
+ * TypeDoc format.
+ */
+export interface OptionsReader {
+ /**
+ * Readers will be processed according to their orders.
+ * A higher order indicates that the reader should be called *later*.
+ *
+ * Note that to preserve expected behavior, the argv reader must have both the lowest
+ * order so that it may set the location of config files used by other readers and
+ * the highest order so that it can override settings from lower order readers.
+ */
+ readonly order: number;
+ /**
+ * The name of this reader so that it may be removed by plugins without the plugin
+ * accessing the instance performing the read. Multiple readers may have the same
+ * name.
+ */
+ readonly name: string;
+ /**
+ * Flag to indicate that this reader should be included in sub-options objects created
+ * to read options for packages mode.
+ */
+ readonly supportsPackages: boolean;
+ /**
+ * Read options from the reader's source and place them in the options parameter.
+ * Options without a declared name may be treated as if they were declared with type
+ * {@link ParameterType.Mixed}. Options which have been declared must be converted to the
+ * correct type. As an alternative to doing this conversion in the reader,
+ * the reader may use {@link Options.setValue}, which will correctly convert values.
+ * @param container the options container that provides declarations
+ * @param logger logger to be used to report errors
+ * @param cwd the directory which should be treated as the current working directory for option file discovery
+ */
+ read(container: Options, logger: Logger, cwd: string): void;
+}
+/**
+ * Maintains a collection of option declarations split into TypeDoc options
+ * and TypeScript options. Ensures options are of the correct type for calling
+ * code.
+ *
+ * ### Option Discovery
+ *
+ * Since plugins commonly add custom options, and TypeDoc does not permit options which have
+ * not been declared to be set, options must be read twice. The first time options are read,
+ * a noop logger is passed so that any errors are ignored. Then, after loading plugins, options
+ * are read again, this time with the logger specified by the application.
+ *
+ * Options are read in a specific order.
+ * 1. argv (0) - Must be read first since it should change the files read when
+ * passing --options or --tsconfig.
+ * 2. typedoc-json (100) - Read next so that it can specify the tsconfig.json file to read.
+ * 3. tsconfig-json (200) - Last config file reader, cannot specify the typedoc.json file to read.
+ * 4. argv (300) - Read argv again since any options set there should override those set in config
+ * files.
+ */
+export declare class Options {
+ private _readers;
+ private _declarations;
+ private _values;
+ private _setOptions;
+ private _compilerOptions;
+ private _fileNames;
+ private _projectReferences;
+ private _logger;
+ /**
+ * In packages mode, the directory of the package being converted.
+ */
+ packageDir?: string;
+ constructor(logger: Logger);
+ /**
+ * Clones the options, intended for use in packages mode.
+ */
+ copyForPackage(packageDir: string): Options;
+ /**
+ * Marks the options as readonly, enables caching when fetching options, which improves performance.
+ */
+ freeze(): void;
+ /**
+ * Checks if the options object has been frozen, preventing future changes to option values.
+ */
+ isFrozen(): boolean;
+ /**
+ * Take a snapshot of option values now, used in tests only.
+ * @internal
+ */
+ snapshot(): {
+ __optionSnapshot: never;
+ };
+ /**
+ * Take a snapshot of option values now, used in tests only.
+ * @internal
+ */
+ restore(snapshot: {
+ __optionSnapshot: never;
+ }): void;
+ /**
+ * Sets the logger used when an option declaration fails to be added.
+ * @param logger
+ */
+ setLogger(logger: Logger): void;
+ /**
+ * Resets the option bag to all default values.
+ * If a name is provided, will only reset that name.
+ */
+ reset(name?: keyof TypeDocOptions): void;
+ reset(name?: NeverIfInternal<string>): void;
+ /**
+ * Adds an option reader that will be used to read configuration values
+ * from the command line, configuration files, or other locations.
+ * @param reader
+ */
+ addReader(reader: OptionsReader): void;
+ read(logger: Logger, cwd?: string): void;
+ /**
+ * Adds an option declaration to the container with extra type checking to ensure that
+ * the runtime type is consistent with the declared type.
+ * @param declaration The option declaration that should be added.
+ */
+ addDeclaration<K extends keyof TypeDocOptions>(declaration: {
+ name: K;
+ } & KeyToDeclaration<K>): void;
+ /**
+ * Adds an option declaration to the container.
+ * @param declaration The option declaration that should be added.
+ */
+ addDeclaration(declaration: NeverIfInternal<Readonly<DeclarationOption>>): void;
+ /**
+ * Gets a declaration by one of its names.
+ * @param name
+ */
+ getDeclaration(name: string): Readonly<DeclarationOption> | undefined;
+ /**
+ * Gets all declared options.
+ */
+ getDeclarations(): Readonly<DeclarationOption>[];
+ /**
+ * Checks if the given option's value is deeply strict equal to the default.
+ * @param name
+ */
+ isSet(name: keyof TypeDocOptions): boolean;
+ isSet(name: NeverIfInternal<string>): boolean;
+ /**
+ * Gets all of the TypeDoc option values defined in this option container.
+ */
+ getRawValues(): Readonly<Partial<TypeDocOptions>>;
+ /**
+ * Gets a value for the given option key, throwing if the option has not been declared.
+ * @param name
+ */
+ getValue<K extends keyof TypeDocOptions>(name: K): TypeDocOptionValues[K];
+ getValue(name: NeverIfInternal<string>): unknown;
+ /**
+ * Sets the given declared option. Throws if setting the option fails.
+ * @param name
+ * @param value
+ * @param configPath the directory to resolve Path type values against
+ */
+ setValue<K extends keyof TypeDocOptions>(name: K, value: TypeDocOptions[K], configPath?: string): void;
+ setValue(name: NeverIfInternal<string>, value: NeverIfInternal<unknown>, configPath?: NeverIfInternal<string>): void;
+ /**
+ * Gets the set compiler options.
+ */
+ getCompilerOptions(): ts.CompilerOptions;
+ /** @internal */
+ fixCompilerOptions(options: Readonly<ts.CompilerOptions>): ts.CompilerOptions;
+ /**
+ * Gets the file names discovered through reading a tsconfig file.
+ */
+ getFileNames(): readonly string[];
+ /**
+ * Gets the project references - used in solution style tsconfig setups.
+ */
+ getProjectReferences(): readonly ts.ProjectReference[];
+ /**
+ * Sets the compiler options that will be used to get a TS program.
+ */
+ setCompilerOptions(fileNames: readonly string[], options: ts.CompilerOptions, projectReferences: readonly ts.ProjectReference[] | undefined): void;
+ /**
+ * Discover similar option names to the given name, for use in error reporting.
+ */
+ getSimilarOptions(missingName: string): string[];
+ /**
+ * Get the help message to be displayed to the user if `--help` is passed.
+ */
+ getHelp(): string;
+}
+/**
+ * Binds an option to the given property. Does not register the option.
+ *
+ * Note: This is a legacy experimental decorator, and will not work with TS 5.0 decorators
+ *
+ * @since v0.16.3
+ */
+export declare function BindOption<K extends keyof TypeDocOptionMap>(name: K): <IK extends PropertyKey>(target: ({
+ application: Application;
+} | {
+ options: Options;
+}) & {
+ [K2 in IK]: TypeDocOptionValues[K];
+}, key: IK) => void;
+/**
+ * Binds an option to the given property. Does not register the option.
+ *
+ * Note: This is a legacy experimental decorator, and will not work with TS 5.0 decorators
+ *
+ * @since v0.16.3
+ *
+ * @privateRemarks
+ * This overload is intended for plugin use only with looser type checks. Do not use internally.
+ */
+export declare function BindOption(name: NeverIfInternal<string>): (target: {
+ application: Application;
+} | {
+ options: Options;
+}, key: PropertyKey) => void;
diff --git a/node_modules/typedoc/dist/lib/utils/options/options.js b/node_modules/typedoc/dist/lib/utils/options/options.js
new file mode 100644
index 0000000..925f7d1
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/options.js
@@ -0,0 +1,302 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.BindOption = exports.Options = void 0;
+const declaration_1 = require("./declaration");
+const array_1 = require("../array");
+const declaration_2 = require("./declaration");
+const sources_1 = require("./sources");
+const help_1 = require("./help");
+const optionSnapshots = new WeakMap();
+/**
+ * Maintains a collection of option declarations split into TypeDoc options
+ * and TypeScript options. Ensures options are of the correct type for calling
+ * code.
+ *
+ * ### Option Discovery
+ *
+ * Since plugins commonly add custom options, and TypeDoc does not permit options which have
+ * not been declared to be set, options must be read twice. The first time options are read,
+ * a noop logger is passed so that any errors are ignored. Then, after loading plugins, options
+ * are read again, this time with the logger specified by the application.
+ *
+ * Options are read in a specific order.
+ * 1. argv (0) - Must be read first since it should change the files read when
+ * passing --options or --tsconfig.
+ * 2. typedoc-json (100) - Read next so that it can specify the tsconfig.json file to read.
+ * 3. tsconfig-json (200) - Last config file reader, cannot specify the typedoc.json file to read.
+ * 4. argv (300) - Read argv again since any options set there should override those set in config
+ * files.
+ */
+class Options {
+ constructor(logger) {
+ this._readers = [];
+ this._declarations = new Map();
+ this._values = {};
+ this._setOptions = new Set();
+ this._compilerOptions = {};
+ this._fileNames = [];
+ this._projectReferences = [];
+ this._logger = logger;
+ (0, sources_1.addTypeDocOptions)(this);
+ }
+ /**
+ * Clones the options, intended for use in packages mode.
+ */
+ copyForPackage(packageDir) {
+ const options = new Options(this._logger);
+ options.packageDir = packageDir;
+ options._readers = this._readers.filter((reader) => reader.supportsPackages);
+ options._declarations = new Map(this._declarations);
+ return options;
+ }
+ /**
+ * Marks the options as readonly, enables caching when fetching options, which improves performance.
+ */
+ freeze() {
+ Object.freeze(this._values);
+ }
+ /**
+ * Checks if the options object has been frozen, preventing future changes to option values.
+ */
+ isFrozen() {
+ return Object.isFrozen(this._values);
+ }
+ /**
+ * Take a snapshot of option values now, used in tests only.
+ * @internal
+ */
+ snapshot() {
+ const key = {};
+ optionSnapshots.set(key, {
+ values: JSON.stringify(this._values),
+ set: new Set(this._setOptions),
+ });
+ return key;
+ }
+ /**
+ * Take a snapshot of option values now, used in tests only.
+ * @internal
+ */
+ restore(snapshot) {
+ const data = optionSnapshots.get(snapshot);
+ this._values = JSON.parse(data.values);
+ this._setOptions = new Set(data.set);
+ }
+ /**
+ * Sets the logger used when an option declaration fails to be added.
+ * @param logger
+ */
+ setLogger(logger) {
+ this._logger = logger;
+ }
+ reset(name) {
+ if (name != null) {
+ const declaration = this.getDeclaration(name);
+ if (!declaration) {
+ throw new Error("Cannot reset an option which has not been declared.");
+ }
+ this._values[declaration.name] = (0, declaration_2.getDefaultValue)(declaration);
+ this._setOptions.delete(declaration.name);
+ }
+ else {
+ for (const declaration of this.getDeclarations()) {
+ this._values[declaration.name] = (0, declaration_2.getDefaultValue)(declaration);
+ }
+ this._setOptions.clear();
+ this._compilerOptions = {};
+ this._fileNames = [];
+ }
+ }
+ /**
+ * Adds an option reader that will be used to read configuration values
+ * from the command line, configuration files, or other locations.
+ * @param reader
+ */
+ addReader(reader) {
+ (0, array_1.insertOrderSorted)(this._readers, reader);
+ }
+ read(logger, cwd = process.cwd()) {
+ for (const reader of this._readers) {
+ reader.read(this, logger, cwd);
+ }
+ }
+ addDeclaration(declaration) {
+ const decl = this.getDeclaration(declaration.name);
+ if (decl) {
+ this._logger.error(`The option ${declaration.name} has already been registered`);
+ }
+ else {
+ this._declarations.set(declaration.name, declaration);
+ }
+ this._values[declaration.name] = (0, declaration_2.getDefaultValue)(declaration);
+ }
+ /**
+ * Gets a declaration by one of its names.
+ * @param name
+ */
+ getDeclaration(name) {
+ return this._declarations.get(name);
+ }
+ /**
+ * Gets all declared options.
+ */
+ getDeclarations() {
+ return (0, array_1.unique)(this._declarations.values());
+ }
+ isSet(name) {
+ if (!this._declarations.has(name)) {
+ throw new Error("Tried to check if an undefined option was set");
+ }
+ return this._setOptions.has(name);
+ }
+ /**
+ * Gets all of the TypeDoc option values defined in this option container.
+ */
+ getRawValues() {
+ return this._values;
+ }
+ getValue(name) {
+ const declaration = this.getDeclaration(name);
+ if (!declaration) {
+ const nearNames = this.getSimilarOptions(name);
+ throw new Error(`Unknown option '${name}', you may have meant:\n\t${nearNames.join("\n\t")}`);
+ }
+ return this._values[declaration.name];
+ }
+ setValue(name, value, configPath) {
+ if (this.isFrozen()) {
+ throw new Error("Tried to modify an option value after options have been frozen.");
+ }
+ const declaration = this.getDeclaration(name);
+ if (!declaration) {
+ const nearNames = this.getSimilarOptions(name);
+ throw new Error(`Tried to set an option (${name}) that was not declared. You may have meant:\n\t${nearNames.join("\n\t")}`);
+ }
+ let oldValue = this._values[declaration.name];
+ if (typeof oldValue === "undefined")
+ oldValue = (0, declaration_2.getDefaultValue)(declaration);
+ const converted = (0, declaration_2.convert)(value, declaration, configPath ?? process.cwd(), oldValue);
+ if (declaration.type === declaration_1.ParameterType.Flags) {
+ Object.assign(this._values[declaration.name], converted);
+ }
+ else {
+ this._values[declaration.name] = converted;
+ }
+ this._setOptions.add(name);
+ }
+ /**
+ * Gets the set compiler options.
+ */
+ getCompilerOptions() {
+ return this.fixCompilerOptions(this._compilerOptions);
+ }
+ /** @internal */
+ fixCompilerOptions(options) {
+ const overrides = this.getValue("compilerOptions");
+ const result = { ...options };
+ if (overrides) {
+ Object.assign(result, overrides);
+ }
+ if (this.getValue("emit") !== "both") {
+ result.noEmit = true;
+ delete result.emitDeclarationOnly;
+ }
+ return result;
+ }
+ /**
+ * Gets the file names discovered through reading a tsconfig file.
+ */
+ getFileNames() {
+ return this._fileNames;
+ }
+ /**
+ * Gets the project references - used in solution style tsconfig setups.
+ */
+ getProjectReferences() {
+ return this._projectReferences;
+ }
+ /**
+ * Sets the compiler options that will be used to get a TS program.
+ */
+ setCompilerOptions(fileNames, options, projectReferences) {
+ if (this.isFrozen()) {
+ throw new Error("Tried to modify an option value after options have been sealed.");
+ }
+ // We do this here instead of in the tsconfig reader so that API consumers which
+ // supply a program to `Converter.convert` instead of letting TypeDoc create one
+ // can just set the compiler options, and not need to know about this mapping.
+ // It feels a bit like a hack... but it's better to have it here than to put it
+ // in Application or Converter.
+ if (options.stripInternal && !this.isSet("excludeInternal")) {
+ this.setValue("excludeInternal", true);
+ }
+ this._fileNames = fileNames;
+ this._compilerOptions = { ...options };
+ this._projectReferences = projectReferences ?? [];
+ }
+ /**
+ * Discover similar option names to the given name, for use in error reporting.
+ */
+ getSimilarOptions(missingName) {
+ const results = {};
+ let lowest = Infinity;
+ for (const name of this._declarations.keys()) {
+ const distance = editDistance(missingName, name);
+ lowest = Math.min(lowest, distance);
+ results[distance] || (results[distance] = []);
+ results[distance].push(name);
+ }
+ // Experimenting a bit, it seems an edit distance of 3 is roughly the
+ // right metric for relevant "similar" results without showing obviously wrong suggestions
+ return results[lowest].concat(results[lowest + 1] || [], results[lowest + 2] || []);
+ }
+ /**
+ * Get the help message to be displayed to the user if `--help` is passed.
+ */
+ getHelp() {
+ return (0, help_1.getOptionsHelp)(this);
+ }
+}
+exports.Options = Options;
+function BindOption(name) {
+ return function (target, key) {
+ Object.defineProperty(target, key, {
+ get() {
+ const options = "options" in this ? this.options : this.application.options;
+ const value = options.getValue(name);
+ return value;
+ },
+ enumerable: true,
+ configurable: true,
+ });
+ };
+}
+exports.BindOption = BindOption;
+// Based on https://en.wikipedia.org/wiki/Levenshtein_distance#Iterative_with_two_matrix_rows
+// Slightly modified for improved match results for options
+function editDistance(s, t) {
+ if (s.length < t.length)
+ return editDistance(t, s);
+ let v0 = Array.from({ length: t.length + 1 }, (_, i) => i);
+ let v1 = Array.from({ length: t.length + 1 }, () => 0);
+ for (let i = 0; i < s.length; i++) {
+ v1[0] = i + 1;
+ for (let j = 0; j < s.length; j++) {
+ const deletionCost = v0[j + 1] + 1;
+ const insertionCost = v1[j] + 1;
+ let substitutionCost;
+ if (s[i] === t[j]) {
+ substitutionCost = v0[j];
+ }
+ else if (s[i]?.toUpperCase() === t[j]?.toUpperCase()) {
+ substitutionCost = v0[j] + 1;
+ }
+ else {
+ substitutionCost = v0[j] + 3;
+ }
+ v1[j + 1] = Math.min(deletionCost, insertionCost, substitutionCost);
+ }
+ [v0, v1] = [v1, v0];
+ }
+ return v0[t.length];
+}
diff --git a/node_modules/typedoc/dist/lib/utils/options/readers/arguments.d.ts b/node_modules/typedoc/dist/lib/utils/options/readers/arguments.d.ts
new file mode 100644
index 0000000..3bce5d3
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/readers/arguments.d.ts
@@ -0,0 +1,13 @@
+import type { OptionsReader, Options } from "..";
+import type { Logger } from "../../loggers";
+/**
+ * Obtains option values from command-line arguments
+ */
+export declare class ArgumentsReader implements OptionsReader {
+ readonly name = "arguments";
+ readonly order: number;
+ readonly supportsPackages = false;
+ private args;
+ constructor(priority: number, args?: string[]);
+ read(container: Options, logger: Logger): void;
+}
diff --git a/node_modules/typedoc/dist/lib/utils/options/readers/arguments.js b/node_modules/typedoc/dist/lib/utils/options/readers/arguments.js
new file mode 100644
index 0000000..19fdaab
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/readers/arguments.js
@@ -0,0 +1,97 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.ArgumentsReader = void 0;
+const assert_1 = require("assert");
+const declaration_1 = require("../declaration");
+const ARRAY_OPTION_TYPES = new Set([
+ declaration_1.ParameterType.Array,
+ declaration_1.ParameterType.PathArray,
+ declaration_1.ParameterType.ModuleArray,
+ declaration_1.ParameterType.GlobArray,
+]);
+/**
+ * Obtains option values from command-line arguments
+ */
+class ArgumentsReader {
+ constructor(priority, args = process.argv.slice(2)) {
+ this.name = "arguments";
+ this.supportsPackages = false;
+ this.order = priority;
+ this.args = args;
+ }
+ read(container, logger) {
+ // Make container's type more lax, we do the appropriate checks manually.
+ const options = container;
+ const seen = new Set();
+ let index = 0;
+ const trySet = (name, value) => {
+ try {
+ options.setValue(name, value);
+ }
+ catch (err) {
+ (0, assert_1.ok)(err instanceof Error);
+ logger.error(err.message);
+ }
+ };
+ while (index < this.args.length) {
+ const name = this.args[index];
+ const decl = name.startsWith("-")
+ ? (index++, options.getDeclaration(name.replace(/^--?/, "")))
+ : options.getDeclaration("entryPoints");
+ if (decl) {
+ if (decl.configFileOnly) {
+ logger.error(`The '${decl.name}' option can only be specified via a config file.`);
+ continue;
+ }
+ if (seen.has(decl.name) && ARRAY_OPTION_TYPES.has(decl.type)) {
+ trySet(decl.name, options.getValue(decl.name).concat(this.args[index]));
+ }
+ else if (decl.type === declaration_1.ParameterType.Boolean ||
+ decl.type === declaration_1.ParameterType.Flags) {
+ const value = String(this.args[index]).toLowerCase();
+ if (value === "true" || value === "false") {
+ trySet(decl.name, value === "true");
+ }
+ else {
+ trySet(decl.name, true);
+ // Bool option didn't consume the next argument as expected.
+ index--;
+ }
+ }
+ else {
+ if (index === this.args.length) {
+ // Only boolean values have optional values.
+ logger.warn(`--${decl.name} expected a value, but none was given as an argument`);
+ }
+ trySet(decl.name, this.args[index]);
+ }
+ seen.add(decl.name);
+ index++;
+ continue;
+ }
+ if (name.includes(".")) {
+ const actualName = name.split(".")[0].replace(/^--?/, "");
+ const decl = options.getDeclaration(actualName);
+ if (decl && decl.type === declaration_1.ParameterType.Flags) {
+ const flagName = name.split(".", 2)[1];
+ const value = String(this.args[index]).toLowerCase();
+ if (value === "true" || value === "false") {
+ trySet(decl.name, { [flagName]: value === "true" });
+ }
+ else {
+ trySet(decl.name, { [flagName]: true });
+ // Bool option didn't consume the next argument as expected.
+ index--;
+ }
+ index++;
+ continue;
+ }
+ }
+ logger.error(`Unknown option: ${name}, you may have meant:\n\t${options
+ .getSimilarOptions(name)
+ .join("\n\t")}`);
+ index++;
+ }
+ }
+}
+exports.ArgumentsReader = ArgumentsReader;
diff --git a/node_modules/typedoc/dist/lib/utils/options/readers/index.d.ts b/node_modules/typedoc/dist/lib/utils/options/readers/index.d.ts
new file mode 100644
index 0000000..e777035
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/readers/index.d.ts
@@ -0,0 +1,4 @@
+export { ArgumentsReader } from "./arguments";
+export { PackageJsonReader } from "./package-json";
+export { TSConfigReader } from "./tsconfig";
+export { TypeDocReader } from "./typedoc";
diff --git a/node_modules/typedoc/dist/lib/utils/options/readers/index.js b/node_modules/typedoc/dist/lib/utils/options/readers/index.js
new file mode 100644
index 0000000..79cf36e
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/readers/index.js
@@ -0,0 +1,11 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.TypeDocReader = exports.TSConfigReader = exports.PackageJsonReader = exports.ArgumentsReader = void 0;
+var arguments_1 = require("./arguments");
+Object.defineProperty(exports, "ArgumentsReader", { enumerable: true, get: function () { return arguments_1.ArgumentsReader; } });
+var package_json_1 = require("./package-json");
+Object.defineProperty(exports, "PackageJsonReader", { enumerable: true, get: function () { return package_json_1.PackageJsonReader; } });
+var tsconfig_1 = require("./tsconfig");
+Object.defineProperty(exports, "TSConfigReader", { enumerable: true, get: function () { return tsconfig_1.TSConfigReader; } });
+var typedoc_1 = require("./typedoc");
+Object.defineProperty(exports, "TypeDocReader", { enumerable: true, get: function () { return typedoc_1.TypeDocReader; } });
diff --git a/node_modules/typedoc/dist/lib/utils/options/readers/package-json.d.ts b/node_modules/typedoc/dist/lib/utils/options/readers/package-json.d.ts
new file mode 100644
index 0000000..afd6514
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/readers/package-json.d.ts
@@ -0,0 +1,9 @@
+import type { OptionsReader } from "..";
+import type { Logger } from "../../loggers";
+import type { Options } from "../options";
+export declare class PackageJsonReader implements OptionsReader {
+ order: number;
+ supportsPackages: boolean;
+ name: string;
+ read(container: Options, logger: Logger, cwd: string): void;
+}
diff --git a/node_modules/typedoc/dist/lib/utils/options/readers/package-json.js b/node_modules/typedoc/dist/lib/utils/options/readers/package-json.js
new file mode 100644
index 0000000..ba64ef0
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/readers/package-json.js
@@ -0,0 +1,45 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.PackageJsonReader = void 0;
+const assert_1 = require("assert");
+const paths_1 = require("../../paths");
+const fs_1 = require("../../fs");
+const path_1 = require("path");
+class PackageJsonReader {
+ constructor() {
+ // Should run after the TypeDoc config reader but before the TS config
+ // reader, so that it can still specify a path to a `tsconfig.json` file.
+ this.order = 150;
+ this.supportsPackages = true;
+ this.name = "package-json";
+ }
+ read(container, logger, cwd) {
+ const result = (0, fs_1.discoverPackageJson)(cwd);
+ if (!result) {
+ return;
+ }
+ const { file, content } = result;
+ if ("typedoc" in content) {
+ logger.warn(`The 'typedoc' key in ${(0, paths_1.nicePath)(file)} was used by the legacy-packages entryPointStrategy and will be ignored.`);
+ }
+ const optsKey = "typedocOptions";
+ if (!(optsKey in content)) {
+ return;
+ }
+ const opts = content[optsKey];
+ if (opts === null || typeof opts !== "object") {
+ logger.error(`Failed to parse the "typedocOptions" field in ${(0, paths_1.nicePath)(file)}, ensure it exists and contains an object.`);
+ return;
+ }
+ for (const [opt, val] of Object.entries(opts)) {
+ try {
+ container.setValue(opt, val, (0, path_1.dirname)(file));
+ }
+ catch (err) {
+ (0, assert_1.ok)(err instanceof Error);
+ logger.error(err.message);
+ }
+ }
+ }
+}
+exports.PackageJsonReader = PackageJsonReader;
diff --git a/node_modules/typedoc/dist/lib/utils/options/readers/tsconfig.d.ts b/node_modules/typedoc/dist/lib/utils/options/readers/tsconfig.d.ts
new file mode 100644
index 0000000..c45cd7d
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/readers/tsconfig.d.ts
@@ -0,0 +1,14 @@
+import type { Options, OptionsReader } from "../options";
+import type { Logger } from "../../loggers";
+export declare class TSConfigReader implements OptionsReader {
+ /**
+ * Note: Runs after the {@link TypeDocReader}.
+ */
+ order: number;
+ name: string;
+ supportsPackages: boolean;
+ private seenTsdocPaths;
+ read(container: Options, logger: Logger, cwd: string): void;
+ private addTagsFromTsdocJson;
+ private readTsDoc;
+}
diff --git a/node_modules/typedoc/dist/lib/utils/options/readers/tsconfig.js b/node_modules/typedoc/dist/lib/utils/options/readers/tsconfig.js
new file mode 100644
index 0000000..4917c74
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/readers/tsconfig.js
@@ -0,0 +1,187 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.TSConfigReader = void 0;
+const path_1 = require("path");
+const typescript_1 = __importDefault(require("typescript"));
+const fs_1 = require("../../fs");
+const assert_1 = require("assert");
+const validation_1 = require("../../validation");
+const paths_1 = require("../../paths");
+const module_1 = require("module");
+const tsdoc_defaults_1 = require("../tsdoc-defaults");
+const array_1 = require("../../array");
+const entry_point_1 = require("../../entry-point");
+const tsconfig_1 = require("../../tsconfig");
+function isSupportForTags(obj) {
+ return ((0, validation_1.validate)({}, obj) &&
+ Object.entries(obj).every(([key, val]) => {
+ return (/^@[a-zA-Z][a-zA-Z0-9]*$/.test(key) && typeof val === "boolean");
+ }));
+}
+const tsDocSchema = {
+ $schema: (0, validation_1.optional)(String),
+ extends: (0, validation_1.optional)([Array, String]),
+ noStandardTags: (0, validation_1.optional)(Boolean),
+ tagDefinitions: (0, validation_1.optional)([
+ Array,
+ {
+ tagName: validation_1.isTagString,
+ syntaxKind: ["inline", "block", "modifier"],
+ allowMultiple: (0, validation_1.optional)(Boolean),
+ [validation_1.additionalProperties]: false,
+ },
+ ]),
+ supportForTags: (0, validation_1.optional)(isSupportForTags),
+ // The official parser has code to support for these two, but
+ // the schema doesn't allow them... just silently ignore them for now.
+ supportedHtmlElements: (0, validation_1.optional)({}),
+ reportUnsupportedHtmlElements: (0, validation_1.optional)(Boolean),
+ [validation_1.additionalProperties]: false,
+};
+class TSConfigReader {
+ constructor() {
+ /**
+ * Note: Runs after the {@link TypeDocReader}.
+ */
+ this.order = 200;
+ this.name = "tsconfig-json";
+ this.supportsPackages = true;
+ this.seenTsdocPaths = new Set();
+ }
+ read(container, logger, cwd) {
+ const file = container.getValue("tsconfig") || cwd;
+ let fileToRead = (0, tsconfig_1.findTsConfigFile)(file);
+ if (!fileToRead) {
+ // If the user didn't give us this option, we shouldn't complain about not being able to find it.
+ if (container.isSet("tsconfig")) {
+ logger.error(`The tsconfig file ${(0, paths_1.nicePath)(file)} does not exist`);
+ }
+ else if (container.getValue("entryPointStrategy") !==
+ entry_point_1.EntryPointStrategy.Packages) {
+ logger.warn("No tsconfig file found, this will prevent TypeDoc from finding your entry points.");
+ }
+ return;
+ }
+ fileToRead = (0, paths_1.normalizePath)((0, path_1.resolve)(fileToRead));
+ logger.verbose(`Reading tsconfig at ${(0, paths_1.nicePath)(fileToRead)}`);
+ this.addTagsFromTsdocJson(container, logger, (0, path_1.resolve)(fileToRead));
+ const parsed = (0, tsconfig_1.readTsConfig)(fileToRead, logger);
+ if (!parsed) {
+ return;
+ }
+ logger.diagnostics(parsed.errors);
+ const typedocOptions = parsed.raw?.typedocOptions ?? {};
+ if (typedocOptions.options) {
+ logger.error([
+ "typedocOptions in tsconfig file specifies an option file to read but the option",
+ "file has already been read. This is likely a misconfiguration.",
+ ].join(" "));
+ delete typedocOptions.options;
+ }
+ if (typedocOptions.tsconfig) {
+ logger.error("typedocOptions in tsconfig file may not specify a tsconfig file to read");
+ delete typedocOptions.tsconfig;
+ }
+ container.setCompilerOptions(parsed.fileNames, parsed.options, parsed.projectReferences);
+ for (const [key, val] of Object.entries(typedocOptions || {})) {
+ try {
+ // We catch the error, so can ignore the strict type checks
+ container.setValue(key, val, (0, path_1.join)(fileToRead, ".."));
+ }
+ catch (error) {
+ (0, assert_1.ok)(error instanceof Error);
+ logger.error(error.message);
+ }
+ }
+ }
+ addTagsFromTsdocJson(container, logger, tsconfig) {
+ this.seenTsdocPaths.clear();
+ const tsdoc = (0, path_1.join)((0, path_1.dirname)(tsconfig), "tsdoc.json");
+ if (!(0, fs_1.isFile)(tsdoc)) {
+ return;
+ }
+ const overwritten = ["blockTags", "inlineTags", "modifierTags"].filter((opt) => container.isSet(opt));
+ if (overwritten.length) {
+ logger.warn(`The ${overwritten.join(", ")} defined in typedoc.json will ` +
+ "be overwritten by configuration in tsdoc.json.");
+ }
+ const config = this.readTsDoc(logger, tsdoc);
+ if (!config)
+ return;
+ const supported = (tag) => {
+ return config.supportForTags
+ ? !!config.supportForTags[tag.tagName]
+ : true;
+ };
+ const blockTags = [];
+ const inlineTags = [];
+ const modifierTags = [];
+ if (!config.noStandardTags) {
+ blockTags.push(...tsdoc_defaults_1.tsdocBlockTags);
+ inlineTags.push(...tsdoc_defaults_1.tsdocInlineTags);
+ modifierTags.push(...tsdoc_defaults_1.tsdocModifierTags);
+ }
+ for (const { tagName, syntaxKind } of config.tagDefinitions?.filter(supported) || []) {
+ const arr = {
+ block: blockTags,
+ inline: inlineTags,
+ modifier: modifierTags,
+ }[syntaxKind];
+ arr.push(tagName);
+ }
+ container.setValue("blockTags", (0, array_1.unique)(blockTags));
+ container.setValue("inlineTags", (0, array_1.unique)(inlineTags));
+ container.setValue("modifierTags", (0, array_1.unique)(modifierTags));
+ }
+ readTsDoc(logger, path) {
+ if (this.seenTsdocPaths.has(path)) {
+ logger.error(`Circular reference encountered for "extends" field of ${(0, paths_1.nicePath)(path)}`);
+ return;
+ }
+ this.seenTsdocPaths.add(path);
+ const { config, error } = typescript_1.default.readConfigFile((0, paths_1.normalizePath)(path), typescript_1.default.sys.readFile);
+ if (error) {
+ logger.error(`Failed to read tsdoc.json file at ${(0, paths_1.nicePath)(path)}.`);
+ return;
+ }
+ if (!(0, validation_1.validate)(tsDocSchema, config)) {
+ logger.error(`The file ${(0, paths_1.nicePath)(path)} is not a valid tsdoc.json file.`);
+ return;
+ }
+ const workingConfig = {};
+ if (config.extends) {
+ const resolver = (0, module_1.createRequire)(path);
+ for (const extendedPath of config.extends) {
+ let resolvedPath;
+ try {
+ resolvedPath = resolver.resolve(extendedPath);
+ }
+ catch {
+ logger.error(`Failed to resolve ${extendedPath} to a file in ${(0, paths_1.nicePath)(path)}`);
+ return;
+ }
+ const parentConfig = this.readTsDoc(logger, resolvedPath);
+ if (!parentConfig)
+ return;
+ mergeConfigs(parentConfig, workingConfig);
+ }
+ }
+ mergeConfigs(config, workingConfig);
+ return workingConfig;
+ }
+}
+exports.TSConfigReader = TSConfigReader;
+function mergeConfigs(from, into) {
+ if (from.supportForTags) {
+ into.supportForTags || (into.supportForTags = {});
+ Object.assign(into.supportForTags, from.supportForTags);
+ }
+ if (from.tagDefinitions) {
+ into.tagDefinitions || (into.tagDefinitions = []);
+ into.tagDefinitions.push(...from.tagDefinitions);
+ }
+ into.noStandardTags = from.noStandardTags ?? into.noStandardTags;
+}
diff --git a/node_modules/typedoc/dist/lib/utils/options/readers/typedoc.d.ts b/node_modules/typedoc/dist/lib/utils/options/readers/typedoc.d.ts
new file mode 100644
index 0000000..d934013
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/readers/typedoc.d.ts
@@ -0,0 +1,35 @@
+import type { OptionsReader } from "..";
+import type { Logger } from "../../loggers";
+import type { Options } from "../options";
+/**
+ * Obtains option values from typedoc.json
+ * or typedoc.js (discouraged since ~0.14, don't fully deprecate until API has stabilized)
+ */
+export declare class TypeDocReader implements OptionsReader {
+ /**
+ * Should run before the tsconfig reader so that it can specify a tsconfig file to read.
+ */
+ order: number;
+ name: string;
+ supportsPackages: boolean;
+ /**
+ * Read user configuration from a typedoc.json or typedoc.js configuration file.
+ */
+ read(container: Options, logger: Logger, cwd: string): void;
+ /**
+ * Read the given options file + any extended files.
+ * @param file
+ * @param container
+ * @param logger
+ */
+ private readFile;
+ /**
+ * Search for the configuration file given path
+ *
+ * @param path Path to the typedoc.(js|json) file. If path is a directory
+ * typedoc file will be attempted to be found at the root of this path
+ * @param logger
+ * @return the typedoc.(js|json) file path or undefined
+ */
+ private findTypedocFile;
+}
diff --git a/node_modules/typedoc/dist/lib/utils/options/readers/typedoc.js b/node_modules/typedoc/dist/lib/utils/options/readers/typedoc.js
new file mode 100644
index 0000000..d39dd55
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/readers/typedoc.js
@@ -0,0 +1,155 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.TypeDocReader = void 0;
+const path_1 = require("path");
+const FS = __importStar(require("fs"));
+const typescript_1 = __importDefault(require("typescript"));
+const assert_1 = require("assert");
+const paths_1 = require("../../paths");
+const fs_1 = require("../../fs");
+const module_1 = require("module");
+/**
+ * Obtains option values from typedoc.json
+ * or typedoc.js (discouraged since ~0.14, don't fully deprecate until API has stabilized)
+ */
+class TypeDocReader {
+ constructor() {
+ /**
+ * Should run before the tsconfig reader so that it can specify a tsconfig file to read.
+ */
+ this.order = 100;
+ this.name = "typedoc-json";
+ this.supportsPackages = true;
+ }
+ /**
+ * Read user configuration from a typedoc.json or typedoc.js configuration file.
+ */
+ read(container, logger, cwd) {
+ const path = container.getValue("options") || cwd;
+ const file = this.findTypedocFile(path);
+ if (!file) {
+ if (container.isSet("options")) {
+ logger.error(`The options file ${(0, paths_1.nicePath)(path)} does not exist.`);
+ }
+ return;
+ }
+ const seen = new Set();
+ this.readFile(file, container, logger, seen);
+ }
+ /**
+ * Read the given options file + any extended files.
+ * @param file
+ * @param container
+ * @param logger
+ */
+ readFile(file, container, logger, seen) {
+ if (seen.has(file)) {
+ logger.error(`Tried to load the options file ${(0, paths_1.nicePath)(file)} multiple times.`);
+ return;
+ }
+ seen.add(file);
+ let fileContent;
+ if (file.endsWith(".json")) {
+ const readResult = typescript_1.default.readConfigFile((0, paths_1.normalizePath)(file), (path) => FS.readFileSync(path, "utf-8"));
+ if (readResult.error) {
+ logger.error(`Failed to parse ${(0, paths_1.nicePath)(file)}, ensure it exists and contains an object.`);
+ return;
+ }
+ else {
+ fileContent = readResult.config;
+ }
+ }
+ else {
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
+ fileContent = require(file);
+ }
+ if (typeof fileContent !== "object" || !fileContent) {
+ logger.error(`The root value of ${(0, paths_1.nicePath)(file)} is not an object.`);
+ return;
+ }
+ // clone option object to avoid of property changes in re-calling this file
+ const data = { ...fileContent };
+ delete data["$schema"]; // Useful for better autocompletion, should not be read as a key.
+ if ("extends" in data) {
+ const resolver = (0, module_1.createRequire)(file);
+ const extended = getStringArray(data["extends"]);
+ for (const extendedFile of extended) {
+ let resolvedParent;
+ try {
+ resolvedParent = resolver.resolve(extendedFile);
+ }
+ catch {
+ logger.error(`Failed to resolve ${extendedFile} to a file in ${(0, paths_1.nicePath)(file)}`);
+ continue;
+ }
+ this.readFile(resolvedParent, container, logger, seen);
+ }
+ delete data["extends"];
+ }
+ for (const [key, val] of Object.entries(data)) {
+ try {
+ container.setValue(key, val, (0, path_1.resolve)((0, path_1.dirname)(file)));
+ }
+ catch (error) {
+ (0, assert_1.ok)(error instanceof Error);
+ logger.error(error.message);
+ }
+ }
+ }
+ /**
+ * Search for the configuration file given path
+ *
+ * @param path Path to the typedoc.(js|json) file. If path is a directory
+ * typedoc file will be attempted to be found at the root of this path
+ * @param logger
+ * @return the typedoc.(js|json) file path or undefined
+ */
+ findTypedocFile(path) {
+ path = (0, path_1.resolve)(path);
+ return [
+ path,
+ (0, path_1.join)(path, "typedoc.json"),
+ (0, path_1.join)(path, "typedoc.jsonc"),
+ (0, path_1.join)(path, "typedoc.config.js"),
+ (0, path_1.join)(path, "typedoc.config.cjs"),
+ (0, path_1.join)(path, "typedoc.js"),
+ (0, path_1.join)(path, "typedoc.cjs"),
+ (0, path_1.join)(path, ".config/typedoc.json"),
+ (0, path_1.join)(path, ".config/typedoc.jsonc"),
+ (0, path_1.join)(path, ".config/typedoc.config.js"),
+ (0, path_1.join)(path, ".config/typedoc.config.cjs"),
+ (0, path_1.join)(path, ".config/typedoc.js"),
+ (0, path_1.join)(path, ".config/typedoc.cjs"),
+ ].find(fs_1.isFile);
+ }
+}
+exports.TypeDocReader = TypeDocReader;
+function getStringArray(arg) {
+ return Array.isArray(arg) ? arg.map(String) : [String(arg)];
+}
diff --git a/node_modules/typedoc/dist/lib/utils/options/sources/index.d.ts b/node_modules/typedoc/dist/lib/utils/options/sources/index.d.ts
new file mode 100644
index 0000000..fdbdea8
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/sources/index.d.ts
@@ -0,0 +1 @@
+export { addTypeDocOptions } from "./typedoc";
diff --git a/node_modules/typedoc/dist/lib/utils/options/sources/index.js b/node_modules/typedoc/dist/lib/utils/options/sources/index.js
new file mode 100644
index 0000000..de17e97
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/sources/index.js
@@ -0,0 +1,5 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.addTypeDocOptions = void 0;
+var typedoc_1 = require("./typedoc");
+Object.defineProperty(exports, "addTypeDocOptions", { enumerable: true, get: function () { return typedoc_1.addTypeDocOptions; } });
diff --git a/node_modules/typedoc/dist/lib/utils/options/sources/typedoc.d.ts b/node_modules/typedoc/dist/lib/utils/options/sources/typedoc.d.ts
new file mode 100644
index 0000000..55c5ea0
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/sources/typedoc.d.ts
@@ -0,0 +1,2 @@
+import type { Options } from "..";
+export declare function addTypeDocOptions(options: Pick<Options, "addDeclaration">): void;
diff --git a/node_modules/typedoc/dist/lib/utils/options/sources/typedoc.js b/node_modules/typedoc/dist/lib/utils/options/sources/typedoc.js
new file mode 100644
index 0000000..861a1cd
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/sources/typedoc.js
@@ -0,0 +1,711 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.addTypeDocOptions = void 0;
+const loggers_1 = require("../../loggers");
+const declaration_1 = require("../declaration");
+const shiki_1 = require("shiki");
+const sort_1 = require("../../sort");
+const entry_point_1 = require("../../entry-point");
+const kind_1 = require("../../../models/reflections/kind");
+const Validation = __importStar(require("../../validation"));
+const tsdoc_defaults_1 = require("../tsdoc-defaults");
+const enum_1 = require("../../enum");
+// For convenience, added in the same order as they are documented on the website.
+function addTypeDocOptions(options) {
+ ///////////////////////////
+ // Configuration Options //
+ ///////////////////////////
+ options.addDeclaration({
+ type: declaration_1.ParameterType.Path,
+ name: "options",
+ help: "Specify a json option file that should be loaded. If not specified TypeDoc will look for 'typedoc.json' in the current directory.",
+ hint: declaration_1.ParameterHint.File,
+ defaultValue: "",
+ });
+ options.addDeclaration({
+ type: declaration_1.ParameterType.Path,
+ name: "tsconfig",
+ help: "Specify a TypeScript config file that should be loaded. If not specified TypeDoc will look for 'tsconfig.json' in the current directory.",
+ hint: declaration_1.ParameterHint.File,
+ defaultValue: "",
+ });
+ options.addDeclaration({
+ name: "compilerOptions",
+ help: "Selectively override the TypeScript compiler options used by TypeDoc.",
+ type: declaration_1.ParameterType.Mixed,
+ configFileOnly: true,
+ validate(value) {
+ if (!Validation.validate({}, value)) {
+ throw new Error("The 'compilerOptions' option must be a non-array object.");
+ }
+ },
+ });
+ ///////////////////////////
+ ////// Input Options //////
+ ///////////////////////////
+ options.addDeclaration({
+ name: "entryPoints",
+ help: "The entry points of your documentation.",
+ type: declaration_1.ParameterType.GlobArray,
+ });
+ options.addDeclaration({
+ name: "entryPointStrategy",
+ help: "The strategy to be used to convert entry points into documentation modules.",
+ type: declaration_1.ParameterType.Map,
+ map: entry_point_1.EntryPointStrategy,
+ defaultValue: entry_point_1.EntryPointStrategy.Resolve,
+ });
+ options.addDeclaration({
+ name: "exclude",
+ help: "Define patterns to be excluded when expanding a directory that was specified as an entry point.",
+ type: declaration_1.ParameterType.GlobArray,
+ });
+ options.addDeclaration({
+ name: "externalPattern",
+ help: "Define patterns for files that should be considered being external.",
+ type: declaration_1.ParameterType.GlobArray,
+ defaultValue: ["**/node_modules/**"],
+ });
+ options.addDeclaration({
+ name: "excludeExternals",
+ help: "Prevent externally resolved symbols from being documented.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "excludeNotDocumented",
+ help: "Prevent symbols that are not explicitly documented from appearing in the results.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "excludeNotDocumentedKinds",
+ help: "Specify the type of reflections that can be removed by excludeNotDocumented.",
+ type: declaration_1.ParameterType.Array,
+ validate(value) {
+ const invalid = new Set(value);
+ const valid = new Set((0, enum_1.getEnumKeys)(kind_1.ReflectionKind));
+ for (const notPermitted of [
+ kind_1.ReflectionKind.Project,
+ kind_1.ReflectionKind.TypeLiteral,
+ kind_1.ReflectionKind.TypeParameter,
+ kind_1.ReflectionKind.Parameter,
+ kind_1.ReflectionKind.ObjectLiteral,
+ ]) {
+ valid.delete(kind_1.ReflectionKind[notPermitted]);
+ }
+ for (const v of valid) {
+ invalid.delete(v);
+ }
+ if (invalid.size !== 0) {
+ throw new Error(`excludeNotDocumentedKinds may only specify known values, and invalid values were provided (${Array.from(invalid).join(", ")}). The valid kinds are:\n${Array.from(valid).join(", ")}`);
+ }
+ },
+ defaultValue: [
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Module],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Namespace],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Enum],
+ // Not including enum member here by default
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Variable],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Function],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Class],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Interface],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Constructor],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Property],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Method],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.CallSignature],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.IndexSignature],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.ConstructorSignature],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Accessor],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.GetSignature],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.SetSignature],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.TypeAlias],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Reference],
+ ],
+ });
+ options.addDeclaration({
+ name: "excludeInternal",
+ help: "Prevent symbols that are marked with @internal from being documented.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "excludePrivate",
+ help: "Ignore private variables and methods.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "excludeProtected",
+ help: "Ignore protected variables and methods.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "excludeReferences",
+ help: "If a symbol is exported multiple times, ignore all but the first export.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "externalSymbolLinkMappings",
+ help: "Define custom links for symbols not included in the documentation.",
+ type: declaration_1.ParameterType.Mixed,
+ defaultValue: {},
+ validate(value) {
+ const error = "externalSymbolLinkMappings must be a Record<package name, Record<symbol name, link>>";
+ if (!Validation.validate({}, value)) {
+ throw new Error(error);
+ }
+ for (const mappings of Object.values(value)) {
+ if (!Validation.validate({}, mappings)) {
+ throw new Error(error);
+ }
+ for (const link of Object.values(mappings)) {
+ if (typeof link !== "string") {
+ throw new Error(error);
+ }
+ }
+ }
+ },
+ });
+ options.addDeclaration({
+ name: "media",
+ help: "Specify the location with media files that should be copied to the output directory.",
+ type: declaration_1.ParameterType.Path,
+ hint: declaration_1.ParameterHint.Directory,
+ });
+ options.addDeclaration({
+ name: "includes",
+ help: "Specify the location to look for included documents (use [[include:FILENAME]] in comments).",
+ type: declaration_1.ParameterType.Path,
+ hint: declaration_1.ParameterHint.Directory,
+ });
+ ///////////////////////////
+ ///// Output Options //////
+ ///////////////////////////
+ options.addDeclaration({
+ name: "out",
+ help: "Specify the location the documentation should be written to.",
+ type: declaration_1.ParameterType.Path,
+ hint: declaration_1.ParameterHint.Directory,
+ defaultValue: "./docs",
+ });
+ options.addDeclaration({
+ name: "json",
+ help: "Specify the location and filename a JSON file describing the project is written to.",
+ type: declaration_1.ParameterType.Path,
+ hint: declaration_1.ParameterHint.File,
+ });
+ options.addDeclaration({
+ name: "pretty",
+ help: "Specify whether the output JSON should be formatted with tabs.",
+ type: declaration_1.ParameterType.Boolean,
+ defaultValue: true,
+ });
+ options.addDeclaration({
+ name: "emit",
+ help: "Specify what TypeDoc should emit, 'docs', 'both', or 'none'.",
+ type: declaration_1.ParameterType.Map,
+ map: declaration_1.EmitStrategy,
+ defaultValue: "docs",
+ });
+ options.addDeclaration({
+ name: "theme",
+ help: "Specify the theme name to render the documentation with",
+ type: declaration_1.ParameterType.String,
+ defaultValue: "default",
+ });
+ const defaultLightTheme = "light-plus";
+ const defaultDarkTheme = "dark-plus";
+ options.addDeclaration({
+ name: "lightHighlightTheme",
+ help: "Specify the code highlighting theme in light mode.",
+ type: declaration_1.ParameterType.String,
+ defaultValue: defaultLightTheme,
+ validate(value) {
+ if (!shiki_1.BUNDLED_THEMES.includes(value)) {
+ throw new Error(`lightHighlightTheme must be one of the following: ${shiki_1.BUNDLED_THEMES.join(", ")}`);
+ }
+ },
+ });
+ options.addDeclaration({
+ name: "darkHighlightTheme",
+ help: "Specify the code highlighting theme in dark mode.",
+ type: declaration_1.ParameterType.String,
+ defaultValue: defaultDarkTheme,
+ validate(value) {
+ if (!shiki_1.BUNDLED_THEMES.includes(value)) {
+ throw new Error(`darkHighlightTheme must be one of the following: ${shiki_1.BUNDLED_THEMES.join(", ")}`);
+ }
+ },
+ });
+ options.addDeclaration({
+ name: "customCss",
+ help: "Path to a custom CSS file to for the theme to import.",
+ type: declaration_1.ParameterType.Path,
+ });
+ options.addDeclaration({
+ name: "markedOptions",
+ help: "Specify the options passed to Marked, the Markdown parser used by TypeDoc.",
+ type: declaration_1.ParameterType.Mixed,
+ configFileOnly: true,
+ validate(value) {
+ if (!Validation.validate({}, value)) {
+ throw new Error("The 'markedOptions' option must be a non-array object.");
+ }
+ },
+ });
+ options.addDeclaration({
+ name: "name",
+ help: "Set the name of the project that will be used in the header of the template.",
+ });
+ options.addDeclaration({
+ name: "includeVersion",
+ help: "Add the package version to the project name.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "disableSources",
+ help: "Disable setting the source of a reflection when documenting it.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "basePath",
+ help: "Specifies the base path to be used when displaying file paths.",
+ type: declaration_1.ParameterType.Path,
+ });
+ options.addDeclaration({
+ name: "excludeTags",
+ help: "Remove the listed block/modifier tags from doc comments.",
+ type: declaration_1.ParameterType.Array,
+ defaultValue: [
+ "@override",
+ "@virtual",
+ "@privateRemarks",
+ "@satisfies",
+ "@overload",
+ ],
+ validate(value) {
+ if (!Validation.validate([Array, Validation.isTagString], value)) {
+ throw new Error(`excludeTags must be an array of valid tag names.`);
+ }
+ },
+ });
+ options.addDeclaration({
+ name: "readme",
+ help: "Path to the readme file that should be displayed on the index page. Pass `none` to disable the index page and start the documentation on the globals page.",
+ type: declaration_1.ParameterType.Path,
+ });
+ options.addDeclaration({
+ name: "cname",
+ help: "Set the CNAME file text, it's useful for custom domains on GitHub Pages.",
+ });
+ options.addDeclaration({
+ name: "sourceLinkTemplate",
+ help: "Specify a link template to be used when generating source urls. If not set, will be automatically created using the git remote. Supports {path}, {line}, {gitRevision} placeholders.",
+ });
+ options.addDeclaration({
+ name: "gitRevision",
+ help: "Use specified revision instead of the last revision for linking to GitHub/Bitbucket source files.",
+ });
+ options.addDeclaration({
+ name: "gitRemote",
+ help: "Use the specified remote for linking to GitHub/Bitbucket source files.",
+ defaultValue: "origin",
+ });
+ options.addDeclaration({
+ name: "githubPages",
+ help: "Generate a .nojekyll file to prevent 404 errors in GitHub Pages. Defaults to `true`.",
+ type: declaration_1.ParameterType.Boolean,
+ defaultValue: true,
+ });
+ options.addDeclaration({
+ name: "htmlLang",
+ help: "Sets the lang attribute in the generated html tag.",
+ type: declaration_1.ParameterType.String,
+ defaultValue: "en",
+ });
+ options.addDeclaration({
+ name: "gaID",
+ help: "Set the Google Analytics tracking ID and activate tracking code.",
+ });
+ options.addDeclaration({
+ name: "hideGenerator",
+ help: "Do not print the TypeDoc link at the end of the page.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "hideParameterTypesInTitle",
+ help: "Hides parameter types in signature titles for easier scanning.",
+ type: declaration_1.ParameterType.Boolean,
+ defaultValue: true,
+ });
+ options.addDeclaration({
+ name: "cacheBust",
+ help: "Include the generation time in links to static assets.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "searchInComments",
+ help: "If set, the search index will also include comments. This will greatly increase the size of the search index.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "cleanOutputDir",
+ help: "If set, TypeDoc will remove the output directory before writing output.",
+ type: declaration_1.ParameterType.Boolean,
+ defaultValue: true,
+ });
+ options.addDeclaration({
+ name: "titleLink",
+ help: "Set the link the title in the header points to. Defaults to the documentation homepage.",
+ type: declaration_1.ParameterType.String,
+ });
+ options.addDeclaration({
+ name: "navigationLinks",
+ help: "Defines links to be included in the header.",
+ type: declaration_1.ParameterType.Mixed,
+ defaultValue: {},
+ validate(value) {
+ if (!isObject(value)) {
+ throw new Error(`navigationLinks must be an object with string labels as keys and URL values.`);
+ }
+ if (Object.values(value).some((x) => typeof x !== "string")) {
+ throw new Error(`All values of navigationLinks must be string URLs.`);
+ }
+ },
+ });
+ options.addDeclaration({
+ name: "sidebarLinks",
+ help: "Defines links to be included in the sidebar.",
+ type: declaration_1.ParameterType.Mixed,
+ defaultValue: {},
+ validate(value) {
+ if (!isObject(value)) {
+ throw new Error(`sidebarLinks must be an object with string labels as keys and URL values.`);
+ }
+ if (Object.values(value).some((x) => typeof x !== "string")) {
+ throw new Error(`All values of sidebarLinks must be string URLs.`);
+ }
+ },
+ });
+ options.addDeclaration({
+ name: "navigation",
+ help: "Determines how the navigation sidebar is organized.",
+ type: declaration_1.ParameterType.Flags,
+ defaults: {
+ includeCategories: false,
+ includeGroups: false,
+ fullTree: false,
+ },
+ });
+ options.addDeclaration({
+ name: "visibilityFilters",
+ help: "Specify the default visibility for builtin filters and additional filters according to modifier tags.",
+ type: declaration_1.ParameterType.Mixed,
+ configFileOnly: true,
+ defaultValue: {
+ protected: false,
+ private: false,
+ inherited: true,
+ external: false,
+ },
+ validate(value) {
+ const knownKeys = ["protected", "private", "inherited", "external"];
+ if (!value || typeof value !== "object") {
+ throw new Error("visibilityFilters must be an object.");
+ }
+ for (const [key, val] of Object.entries(value)) {
+ if (!key.startsWith("@") && !knownKeys.includes(key)) {
+ throw new Error(`visibilityFilters can only include the following non-@ keys: ${knownKeys.join(", ")}`);
+ }
+ if (typeof val !== "boolean") {
+ throw new Error(`All values of visibilityFilters must be booleans.`);
+ }
+ }
+ },
+ });
+ options.addDeclaration({
+ name: "searchCategoryBoosts",
+ help: "Configure search to give a relevance boost to selected categories",
+ type: declaration_1.ParameterType.Mixed,
+ configFileOnly: true,
+ defaultValue: {},
+ validate(value) {
+ if (!isObject(value)) {
+ throw new Error("The 'searchCategoryBoosts' option must be a non-array object.");
+ }
+ if (Object.values(value).some((x) => typeof x !== "number")) {
+ throw new Error("All values of 'searchCategoryBoosts' must be numbers.");
+ }
+ },
+ });
+ options.addDeclaration({
+ name: "searchGroupBoosts",
+ help: 'Configure search to give a relevance boost to selected kinds (eg "class")',
+ type: declaration_1.ParameterType.Mixed,
+ configFileOnly: true,
+ defaultValue: {},
+ validate(value) {
+ if (!isObject(value)) {
+ throw new Error("The 'searchGroupBoosts' option must be a non-array object.");
+ }
+ if (Object.values(value).some((x) => typeof x !== "number")) {
+ throw new Error("All values of 'searchGroupBoosts' must be numbers.");
+ }
+ },
+ });
+ ///////////////////////////
+ ///// Comment Options /////
+ ///////////////////////////
+ options.addDeclaration({
+ name: "jsDocCompatibility",
+ help: "Sets compatibility options for comment parsing that increase similarity with JSDoc comments.",
+ type: declaration_1.ParameterType.Flags,
+ defaults: {
+ defaultTag: true,
+ exampleTag: true,
+ inheritDocTag: true,
+ ignoreUnescapedBraces: true,
+ },
+ });
+ options.addDeclaration({
+ name: "commentStyle",
+ help: "Determines how TypeDoc searches for comments.",
+ type: declaration_1.ParameterType.Map,
+ map: declaration_1.CommentStyle,
+ defaultValue: declaration_1.CommentStyle.JSDoc,
+ });
+ options.addDeclaration({
+ name: "useTsLinkResolution",
+ help: "Use TypeScript's link resolution when determining where @link tags point. This only applies to JSDoc style comments.",
+ type: declaration_1.ParameterType.Boolean,
+ defaultValue: true,
+ });
+ options.addDeclaration({
+ name: "blockTags",
+ help: "Block tags which TypeDoc should recognize when parsing comments.",
+ type: declaration_1.ParameterType.Array,
+ defaultValue: tsdoc_defaults_1.blockTags,
+ validate(value) {
+ if (!Validation.validate([Array, Validation.isTagString], value)) {
+ throw new Error(`blockTags must be an array of valid tag names.`);
+ }
+ },
+ });
+ options.addDeclaration({
+ name: "inlineTags",
+ help: "Inline tags which TypeDoc should recognize when parsing comments.",
+ type: declaration_1.ParameterType.Array,
+ defaultValue: tsdoc_defaults_1.inlineTags,
+ validate(value) {
+ if (!Validation.validate([Array, Validation.isTagString], value)) {
+ throw new Error(`inlineTags must be an array of valid tag names.`);
+ }
+ },
+ });
+ options.addDeclaration({
+ name: "modifierTags",
+ help: "Modifier tags which TypeDoc should recognize when parsing comments.",
+ type: declaration_1.ParameterType.Array,
+ defaultValue: tsdoc_defaults_1.modifierTags,
+ validate(value) {
+ if (!Validation.validate([Array, Validation.isTagString], value)) {
+ throw new Error(`modifierTags must be an array of valid tag names.`);
+ }
+ },
+ });
+ ///////////////////////////
+ // Organization Options ///
+ ///////////////////////////
+ options.addDeclaration({
+ name: "categorizeByGroup",
+ help: "Specify whether categorization will be done at the group level.",
+ type: declaration_1.ParameterType.Boolean,
+ defaultValue: true, // 0.25, change this to false.
+ });
+ options.addDeclaration({
+ name: "defaultCategory",
+ help: "Specify the default category for reflections without a category.",
+ defaultValue: "Other",
+ });
+ options.addDeclaration({
+ name: "categoryOrder",
+ help: "Specify the order in which categories appear. * indicates the relative order for categories not in the list.",
+ type: declaration_1.ParameterType.Array,
+ });
+ options.addDeclaration({
+ name: "groupOrder",
+ help: "Specify the order in which groups appear. * indicates the relative order for groups not in the list.",
+ type: declaration_1.ParameterType.Array,
+ // Defaults to the same as the defaultKindSortOrder in sort.ts
+ defaultValue: [
+ kind_1.ReflectionKind.Reference,
+ // project is never a child so never added to a group
+ kind_1.ReflectionKind.Module,
+ kind_1.ReflectionKind.Namespace,
+ kind_1.ReflectionKind.Enum,
+ kind_1.ReflectionKind.EnumMember,
+ kind_1.ReflectionKind.Class,
+ kind_1.ReflectionKind.Interface,
+ kind_1.ReflectionKind.TypeAlias,
+ kind_1.ReflectionKind.Constructor,
+ kind_1.ReflectionKind.Property,
+ kind_1.ReflectionKind.Variable,
+ kind_1.ReflectionKind.Function,
+ kind_1.ReflectionKind.Accessor,
+ kind_1.ReflectionKind.Method,
+ // others are never added to groups
+ ].map(kind_1.ReflectionKind.pluralString),
+ });
+ options.addDeclaration({
+ name: "sort",
+ help: "Specify the sort strategy for documented values.",
+ type: declaration_1.ParameterType.Array,
+ defaultValue: ["kind", "instance-first", "alphabetical"],
+ validate(value) {
+ const invalid = new Set(value);
+ for (const v of sort_1.SORT_STRATEGIES) {
+ invalid.delete(v);
+ }
+ if (invalid.size !== 0) {
+ throw new Error(`sort may only specify known values, and invalid values were provided (${Array.from(invalid).join(", ")}). The valid sort strategies are:\n${sort_1.SORT_STRATEGIES.join(", ")}`);
+ }
+ },
+ });
+ options.addDeclaration({
+ name: "kindSortOrder",
+ help: "Specify the sort order for reflections when 'kind' is specified.",
+ type: declaration_1.ParameterType.Array,
+ defaultValue: [],
+ validate(value) {
+ const invalid = new Set(value);
+ const valid = (0, enum_1.getEnumKeys)(kind_1.ReflectionKind);
+ for (const v of valid) {
+ invalid.delete(v);
+ }
+ if (invalid.size !== 0) {
+ throw new Error(`kindSortOrder may only specify known values, and invalid values were provided (${Array.from(invalid).join(", ")}). The valid kinds are:\n${valid.join(", ")}`);
+ }
+ },
+ });
+ ///////////////////////////
+ ///// General Options /////
+ ///////////////////////////
+ options.addDeclaration({
+ name: "watch",
+ help: "Watch files for changes and rebuild docs on change.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "preserveWatchOutput",
+ help: "If set, TypeDoc will not clear the screen between compilation runs.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "skipErrorChecking",
+ help: "Do not run TypeScript's type checking before generating docs.",
+ type: declaration_1.ParameterType.Boolean,
+ defaultValue: false,
+ });
+ options.addDeclaration({
+ name: "help",
+ help: "Print this message.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "version",
+ help: "Print TypeDoc's version.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "showConfig",
+ help: "Print the resolved configuration and exit.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "plugin",
+ help: "Specify the npm plugins that should be loaded. Omit to load all installed plugins.",
+ type: declaration_1.ParameterType.ModuleArray,
+ });
+ options.addDeclaration({
+ name: "logLevel",
+ help: "Specify what level of logging should be used.",
+ type: declaration_1.ParameterType.Map,
+ map: loggers_1.LogLevel,
+ defaultValue: loggers_1.LogLevel.Info,
+ });
+ options.addDeclaration({
+ name: "treatWarningsAsErrors",
+ help: "If set, all warnings will be treated as errors.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "treatValidationWarningsAsErrors",
+ help: "If set, warnings emitted during validation will be treated as errors. This option cannot be used to disable treatWarningsAsErrors for validation warnings.",
+ type: declaration_1.ParameterType.Boolean,
+ });
+ options.addDeclaration({
+ name: "intentionallyNotExported",
+ help: "A list of types which should not produce 'referenced but not documented' warnings.",
+ type: declaration_1.ParameterType.Array,
+ });
+ options.addDeclaration({
+ name: "requiredToBeDocumented",
+ help: "A list of reflection kinds that must be documented",
+ type: declaration_1.ParameterType.Array,
+ validate(values) {
+ // this is good enough because the values of the ReflectionKind enum are all numbers
+ const validValues = (0, enum_1.getEnumKeys)(kind_1.ReflectionKind);
+ for (const kind of values) {
+ if (!validValues.includes(kind)) {
+ throw new Error(`'${kind}' is an invalid value for 'requiredToBeDocumented'. Must be one of: ${validValues.join(", ")}`);
+ }
+ }
+ },
+ defaultValue: [
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Enum],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.EnumMember],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Variable],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Function],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Class],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Interface],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Property],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Method],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.Accessor],
+ kind_1.ReflectionKind[kind_1.ReflectionKind.TypeAlias],
+ ],
+ });
+ options.addDeclaration({
+ name: "validation",
+ help: "Specify which validation steps TypeDoc should perform on your generated documentation.",
+ type: declaration_1.ParameterType.Flags,
+ defaults: {
+ notExported: true,
+ invalidLink: true,
+ notDocumented: false,
+ },
+ });
+}
+exports.addTypeDocOptions = addTypeDocOptions;
+function isObject(x) {
+ return !!x && typeof x === "object" && !Array.isArray(x);
+}
diff --git a/node_modules/typedoc/dist/lib/utils/options/tsdoc-defaults.d.ts b/node_modules/typedoc/dist/lib/utils/options/tsdoc-defaults.d.ts
new file mode 100644
index 0000000..ef6cac5
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/tsdoc-defaults.d.ts
@@ -0,0 +1,6 @@
+export declare const tsdocBlockTags: readonly ["@deprecated", "@param", "@remarks", "@returns", "@throws", "@privateRemarks", "@defaultValue", "@typeParam"];
+export declare const blockTags: readonly ["@deprecated", "@param", "@remarks", "@returns", "@throws", "@privateRemarks", "@defaultValue", "@typeParam", "@module", "@inheritDoc", "@group", "@category", "@template", "@type", "@typedef", "@callback", "@prop", "@property", "@satisfies"];
+export declare const tsdocInlineTags: readonly ["@link", "@inheritDoc", "@label"];
+export declare const inlineTags: string[];
+export declare const tsdocModifierTags: readonly ["@public", "@private", "@protected", "@internal", "@readonly", "@packageDocumentation", "@eventProperty", "@alpha", "@beta", "@experimental", "@sealed", "@override", "@virtual"];
+export declare const modifierTags: readonly ["@public", "@private", "@protected", "@internal", "@readonly", "@packageDocumentation", "@eventProperty", "@alpha", "@beta", "@experimental", "@sealed", "@override", "@virtual", "@hidden", "@ignore", "@enum", "@event", "@overload", "@namespace", "@interface"];
diff --git a/node_modules/typedoc/dist/lib/utils/options/tsdoc-defaults.js b/node_modules/typedoc/dist/lib/utils/options/tsdoc-defaults.js
new file mode 100644
index 0000000..ec176ed
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/options/tsdoc-defaults.js
@@ -0,0 +1,57 @@
+"use strict";
+// If updating these lists, also see .config/typedoc-default.tsdoc.json
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.modifierTags = exports.tsdocModifierTags = exports.inlineTags = exports.tsdocInlineTags = exports.blockTags = exports.tsdocBlockTags = void 0;
+exports.tsdocBlockTags = [
+ "@deprecated",
+ "@param",
+ "@remarks",
+ "@returns",
+ "@throws",
+ "@privateRemarks",
+ "@defaultValue",
+ "@typeParam",
+];
+exports.blockTags = [
+ ...exports.tsdocBlockTags,
+ "@module",
+ "@inheritDoc",
+ "@group",
+ "@category",
+ // Alias for @typeParam
+ "@template",
+ // Because TypeScript is important!
+ "@type",
+ "@typedef",
+ "@callback",
+ "@prop",
+ "@property",
+ "@satisfies",
+];
+exports.tsdocInlineTags = ["@link", "@inheritDoc", "@label"];
+exports.inlineTags = [...exports.tsdocInlineTags, "@linkcode", "@linkplain"];
+exports.tsdocModifierTags = [
+ "@public",
+ "@private",
+ "@protected",
+ "@internal",
+ "@readonly",
+ "@packageDocumentation",
+ "@eventProperty",
+ "@alpha",
+ "@beta",
+ "@experimental",
+ "@sealed",
+ "@override",
+ "@virtual",
+];
+exports.modifierTags = [
+ ...exports.tsdocModifierTags,
+ "@hidden",
+ "@ignore",
+ "@enum",
+ "@event",
+ "@overload",
+ "@namespace",
+ "@interface",
+];
diff --git a/node_modules/typedoc/dist/lib/utils/package-manifest.d.ts b/node_modules/typedoc/dist/lib/utils/package-manifest.d.ts
new file mode 100644
index 0000000..ff74349
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/package-manifest.d.ts
@@ -0,0 +1,36 @@
+import type { Logger } from "./loggers";
+import type { Minimatch } from "minimatch";
+import { additionalProperties, Infer } from "./validation";
+/**
+ * Loads a package.json and validates that it is a JSON Object
+ */
+export declare function loadPackageManifest(logger: Logger, packageJsonPath: string): Record<string, unknown> | undefined;
+declare const typedocPackageManifestConfigSchema: {
+ displayName: import("./validation").Optional<StringConstructor>;
+ entryPoint: import("./validation").Optional<StringConstructor>;
+ readmeFile: import("./validation").Optional<StringConstructor>;
+ tsconfig: import("./validation").Optional<StringConstructor>;
+ [additionalProperties]: boolean;
+};
+export type TypedocPackageManifestConfig = Infer<typeof typedocPackageManifestConfigSchema>;
+/**
+ * Extracts typedoc specific config from a specified package manifest
+ */
+export declare function extractTypedocConfigFromPackageManifest(logger: Logger, packageJsonPath: string): TypedocPackageManifestConfig | undefined;
+/**
+ * Given a list of (potentially wildcarded) package paths,
+ * return all the actual package folders found.
+ */
+export declare function expandPackages(logger: Logger, packageJsonDir: string, workspaces: string[], exclude: Minimatch[]): string[];
+export declare const ignorePackage: unique symbol;
+/**
+ * Given a package.json, attempt to find the TS file that defines its entry point
+ * The JS must be built with sourcemaps.
+ *
+ * When the TS file cannot be determined, the intention is to
+ * - Ignore things which don't appear to be `require`-able node packages.
+ * - Fail on things which appear to be `require`-able node packages but are missing
+ * the necessary metadata for us to document.
+ */
+export declare function getTsEntryPointForPackage(logger: Logger, packageJsonPath: string, packageJson: Record<string, unknown>): string | undefined | typeof ignorePackage;
+export {};
diff --git a/node_modules/typedoc/dist/lib/utils/package-manifest.js b/node_modules/typedoc/dist/lib/utils/package-manifest.js
new file mode 100644
index 0000000..0e4ee3b
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/package-manifest.js
@@ -0,0 +1,230 @@
+"use strict";
+// Utilities to support the inspection of node package "manifests"
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getTsEntryPointForPackage = exports.ignorePackage = exports.expandPackages = exports.extractTypedocConfigFromPackageManifest = exports.loadPackageManifest = void 0;
+const path_1 = require("path");
+const fs_1 = require("fs");
+const fs_2 = require("./fs");
+const paths_1 = require("./paths");
+const validation_1 = require("./validation");
+/**
+ * Helper for the TS type system to understand hasOwnProperty
+ * and narrow a type appropriately.
+ * @param obj the receiver of the hasOwnProperty method call
+ * @param prop the property to test for
+ */
+function hasOwnProperty(obj, prop) {
+ return Object.prototype.hasOwnProperty.call(obj, prop);
+}
+/**
+ * Loads a package.json and validates that it is a JSON Object
+ */
+function loadPackageManifest(logger, packageJsonPath) {
+ const packageJson = JSON.parse((0, fs_2.readFile)(packageJsonPath));
+ if (typeof packageJson !== "object" || !packageJson) {
+ logger.error(`The file ${packageJsonPath} is not an object.`);
+ return undefined;
+ }
+ return packageJson;
+}
+exports.loadPackageManifest = loadPackageManifest;
+const typedocPackageManifestConfigSchema = {
+ displayName: (0, validation_1.optional)(String),
+ entryPoint: (0, validation_1.optional)(String),
+ readmeFile: (0, validation_1.optional)(String),
+ tsconfig: (0, validation_1.optional)(String),
+ [validation_1.additionalProperties]: false,
+};
+/**
+ * Extracts typedoc specific config from a specified package manifest
+ */
+function extractTypedocConfigFromPackageManifest(logger, packageJsonPath) {
+ const packageJson = loadPackageManifest(logger, packageJsonPath);
+ if (!packageJson) {
+ return undefined;
+ }
+ if (hasOwnProperty(packageJson, "typedoc") &&
+ typeof packageJson["typedoc"] == "object" &&
+ packageJson["typedoc"]) {
+ if (!(0, validation_1.validate)(typedocPackageManifestConfigSchema, packageJson["typedoc"])) {
+ logger.error(`Typedoc config extracted from package manifest file ${packageJsonPath} is not valid`);
+ return undefined;
+ }
+ return packageJson["typedoc"];
+ }
+ return undefined;
+}
+exports.extractTypedocConfigFromPackageManifest = extractTypedocConfigFromPackageManifest;
+/**
+ * Load the paths to packages specified in a Yarn workspace package JSON
+ * Returns undefined if packageJSON does not define a Yarn workspace
+ * @param packageJSON the package json object
+ */
+function getPackagePaths(packageJSON) {
+ if (Array.isArray(packageJSON["workspaces"]) &&
+ packageJSON["workspaces"].every((i) => typeof i === "string")) {
+ return packageJSON["workspaces"];
+ }
+ if (typeof packageJSON["workspaces"] === "object" &&
+ packageJSON["workspaces"] != null) {
+ const workspaces = packageJSON["workspaces"];
+ if (hasOwnProperty(workspaces, "packages") &&
+ Array.isArray(workspaces["packages"]) &&
+ workspaces["packages"].every((i) => typeof i === "string")) {
+ return workspaces["packages"];
+ }
+ }
+ return undefined;
+}
+/**
+ * Given a list of (potentially wildcarded) package paths,
+ * return all the actual package folders found.
+ */
+function expandPackages(logger, packageJsonDir, workspaces, exclude) {
+ // Technically npm and Yarn workspaces don't support recursive nesting,
+ // however we support the passing of paths to either packages or
+ // to the root of a workspace tree in our params and so we could here
+ // be dealing with either a root or a leaf. So let's do this recursively,
+ // as it actually is simpler from an implementation perspective anyway.
+ return workspaces.flatMap((workspace) => {
+ const globbedPackageJsonPaths = (0, fs_2.glob)((0, path_1.resolve)(packageJsonDir, workspace, "package.json"), (0, path_1.resolve)(packageJsonDir));
+ if (globbedPackageJsonPaths.length === 0) {
+ logger.warn(`The entrypoint glob ${(0, paths_1.nicePath)(workspace)} did not match any directories containing package.json.`);
+ }
+ else {
+ logger.verbose(`Expanded ${(0, paths_1.nicePath)(workspace)} to:\n\t${globbedPackageJsonPaths.map(paths_1.nicePath).join("\n\t")}`);
+ }
+ return globbedPackageJsonPaths.flatMap((packageJsonPath) => {
+ if ((0, paths_1.matchesAny)(exclude, (0, path_1.dirname)(packageJsonPath))) {
+ return [];
+ }
+ const packageJson = loadPackageManifest(logger, packageJsonPath);
+ if (packageJson === undefined) {
+ logger.error(`Failed to load ${packageJsonPath}`);
+ return [];
+ }
+ const packagePaths = getPackagePaths(packageJson);
+ if (packagePaths === undefined) {
+ // Assume this is a single package repo
+ return [(0, path_1.dirname)(packageJsonPath)];
+ }
+ // This is a workspace root package, recurse
+ return expandPackages(logger, (0, path_1.dirname)(packageJsonPath), packagePaths, exclude);
+ });
+ });
+}
+exports.expandPackages = expandPackages;
+/**
+ * Finds the corresponding TS file from a transpiled JS file.
+ * The JS must be built with sourcemaps.
+ */
+function getTsSourceFromJsSource(logger, jsPath) {
+ const contents = (0, fs_2.readFile)(jsPath);
+ const sourceMapPrefix = "\n//# sourceMappingURL=";
+ const indexOfSourceMapPrefix = contents.indexOf(sourceMapPrefix);
+ if (indexOfSourceMapPrefix === -1) {
+ logger.verbose(`The file ${jsPath} does not contain a sourceMappingURL`);
+ return jsPath;
+ }
+ const endOfSourceMapPrefix = indexOfSourceMapPrefix + sourceMapPrefix.length;
+ const newLineIndex = contents.indexOf("\n", endOfSourceMapPrefix);
+ const sourceMapURL = contents.slice(endOfSourceMapPrefix, newLineIndex === -1 ? undefined : newLineIndex);
+ let resolvedSourceMapURL;
+ let sourceMap;
+ if (sourceMapURL.startsWith("data:application/json;base64,")) {
+ resolvedSourceMapURL = jsPath;
+ sourceMap = JSON.parse(Buffer.from(sourceMapURL.substring(sourceMapURL.indexOf(",") + 1), "base64").toString());
+ }
+ else {
+ resolvedSourceMapURL = (0, path_1.resolve)(jsPath, "..", sourceMapURL);
+ sourceMap = JSON.parse((0, fs_2.readFile)(resolvedSourceMapURL));
+ }
+ if (typeof sourceMap !== "object" || !sourceMap) {
+ logger.error(`The source map file ${resolvedSourceMapURL} is not an object.`);
+ return undefined;
+ }
+ if (!hasOwnProperty(sourceMap, "sources") ||
+ !Array.isArray(sourceMap.sources)) {
+ logger.error(`The source map ${resolvedSourceMapURL} does not contain "sources".`);
+ return undefined;
+ }
+ let sourceRoot;
+ if (hasOwnProperty(sourceMap, "sourceRoot") &&
+ typeof sourceMap.sourceRoot === "string") {
+ sourceRoot = sourceMap.sourceRoot;
+ }
+ // There's a pretty large assumption in here that we only have
+ // 1 source file per js file. This is a pretty standard typescript approach,
+ // but people might do interesting things with transpilation that could break this.
+ let source = sourceMap.sources[0];
+ // If we have a sourceRoot, trim any leading slash from the source, and join them
+ // Similar to how it's done at https://github.com/mozilla/source-map/blob/58819f09018d56ef84dc41ba9c93f554e0645169/lib/util.js#L412
+ if (sourceRoot !== undefined) {
+ source = source.replace(/^\//, "");
+ source = (0, path_1.join)(sourceRoot, source);
+ }
+ const sourcePath = (0, path_1.resolve)(resolvedSourceMapURL, "..", source);
+ return sourcePath;
+}
+// A Symbol used to communicate that this package should be ignored
+exports.ignorePackage = Symbol("ignorePackage");
+/**
+ * Given a package.json, attempt to find the TS file that defines its entry point
+ * The JS must be built with sourcemaps.
+ *
+ * When the TS file cannot be determined, the intention is to
+ * - Ignore things which don't appear to be `require`-able node packages.
+ * - Fail on things which appear to be `require`-able node packages but are missing
+ * the necessary metadata for us to document.
+ */
+function getTsEntryPointForPackage(logger, packageJsonPath, packageJson) {
+ let packageMain = "index.js"; // The default, per the npm docs.
+ let packageTypes = null;
+ const typedocPackageConfig = extractTypedocConfigFromPackageManifest(logger, packageJsonPath);
+ if (typedocPackageConfig?.entryPoint) {
+ packageMain = typedocPackageConfig.entryPoint;
+ }
+ else if ((0, validation_1.validate)({ typedocMain: String }, packageJson)) {
+ logger.warn(`Legacy typedoc entry point config (using "typedocMain" field) found for "${(0, paths_1.nicePath)(packageJsonPath)}". Please update to use "typedoc": { "entryPoint": "..." } instead. In future upgrade, "typedocMain" field will be ignored.`);
+ packageMain = packageJson.typedocMain;
+ }
+ else if ((0, validation_1.validate)({ main: String }, packageJson)) {
+ packageMain = packageJson.main;
+ }
+ else if ((0, validation_1.validate)({ types: String }, packageJson)) {
+ packageTypes = packageJson.types;
+ }
+ else if ((0, validation_1.validate)({ typings: String }, packageJson)) {
+ packageTypes = packageJson.typings;
+ }
+ let entryPointPath = (0, path_1.resolve)(packageJsonPath, "..", packageMain);
+ // The entryPointPath from the package manifest can be like a require path.
+ // It could end with .js, or it could end without .js, or it could be a folder containing an index.js
+ // We can use require.resolve to let node do its magic.
+ // Pass an empty `paths` as node_modules locations do not need to be examined
+ try {
+ entryPointPath = require.resolve(entryPointPath, { paths: [] });
+ if ((0, fs_2.hasTsExtension)(entryPointPath) && (0, fs_1.existsSync)(entryPointPath)) {
+ return entryPointPath;
+ }
+ }
+ catch (e) {
+ if (e.code !== "MODULE_NOT_FOUND") {
+ throw e;
+ }
+ else {
+ entryPointPath = (0, path_1.resolve)(packageJsonPath, "..", packageTypes ?? packageMain);
+ if (/\.([cm]?[tj]s|tsx?)$/.test(entryPointPath) &&
+ (0, fs_1.existsSync)(entryPointPath)) {
+ return entryPointPath;
+ }
+ else {
+ logger.warn(`Could not determine the entry point for "${packageJsonPath}". Package will be ignored.`);
+ logger.verbose(e.message);
+ return exports.ignorePackage;
+ }
+ }
+ }
+ return getTsSourceFromJsSource(logger, entryPointPath);
+}
+exports.getTsEntryPointForPackage = getTsEntryPointForPackage;
diff --git a/node_modules/typedoc/dist/lib/utils/paths.d.ts b/node_modules/typedoc/dist/lib/utils/paths.d.ts
new file mode 100644
index 0000000..301dd66
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/paths.d.ts
@@ -0,0 +1,16 @@
+import { Minimatch } from "minimatch";
+/**
+ * Convert array of glob patterns to array of minimatch instances.
+ *
+ * Handle a few Windows-Unix path gotchas.
+ */
+export declare function createMinimatch(patterns: string[]): Minimatch[];
+export declare function matchesAny(patterns: readonly Minimatch[], path: string): boolean;
+export declare function nicePath(absPath: string): string;
+/**
+ * Normalize the given path.
+ *
+ * @param path The path that should be normalized.
+ * @returns The normalized path.
+ */
+export declare function normalizePath(path: string): string;
diff --git a/node_modules/typedoc/dist/lib/utils/paths.js b/node_modules/typedoc/dist/lib/utils/paths.js
new file mode 100644
index 0000000..90a7f9d
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/paths.js
@@ -0,0 +1,41 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.normalizePath = exports.nicePath = exports.matchesAny = exports.createMinimatch = void 0;
+const minimatch_1 = require("minimatch");
+const path_1 = require("path");
+/**
+ * Convert array of glob patterns to array of minimatch instances.
+ *
+ * Handle a few Windows-Unix path gotchas.
+ */
+function createMinimatch(patterns) {
+ return patterns.map((pattern) => new minimatch_1.Minimatch(normalizePath(pattern).replace(/^\w:\//, ""), {
+ dot: true,
+ }));
+}
+exports.createMinimatch = createMinimatch;
+function matchesAny(patterns, path) {
+ const normPath = normalizePath(path).replace(/^\w:\//, "");
+ return patterns.some((pat) => pat.match(normPath));
+}
+exports.matchesAny = matchesAny;
+function nicePath(absPath) {
+ if (!(0, path_1.isAbsolute)(absPath))
+ return absPath;
+ const relativePath = (0, path_1.relative)(process.cwd(), absPath);
+ if (relativePath.startsWith("..")) {
+ return normalizePath(absPath);
+ }
+ return `./${normalizePath(relativePath)}`;
+}
+exports.nicePath = nicePath;
+/**
+ * Normalize the given path.
+ *
+ * @param path The path that should be normalized.
+ * @returns The normalized path.
+ */
+function normalizePath(path) {
+ return path.replace(/\\/g, "/");
+}
+exports.normalizePath = normalizePath;
diff --git a/node_modules/typedoc/dist/lib/utils/perf.d.ts b/node_modules/typedoc/dist/lib/utils/perf.d.ts
new file mode 100644
index 0000000..8571ac7
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/perf.d.ts
@@ -0,0 +1,3 @@
+export declare function bench<T extends Function>(fn: T, name?: string): T;
+export declare function Bench(): MethodDecorator;
+export declare function measure<T>(cb: () => T): T;
diff --git a/node_modules/typedoc/dist/lib/utils/perf.js b/node_modules/typedoc/dist/lib/utils/perf.js
new file mode 100644
index 0000000..cd3bf9a
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/perf.js
@@ -0,0 +1,66 @@
+"use strict";
+/* eslint-disable no-console */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.measure = exports.Bench = exports.bench = void 0;
+const perf_hooks_1 = require("perf_hooks");
+const benchmarks = [];
+function bench(fn, name = fn.name) {
+ const timer = {
+ name,
+ calls: 0,
+ time: 0,
+ };
+ benchmarks.push(timer);
+ return function bench(...args) {
+ timer.calls++;
+ const start = perf_hooks_1.performance.now();
+ let result;
+ try {
+ result = fn.apply(this, args);
+ }
+ finally {
+ timer.time += perf_hooks_1.performance.now() - start;
+ }
+ return result;
+ };
+}
+exports.bench = bench;
+function Bench() {
+ return function (target, key, descriptor) {
+ const rawMethod = descriptor.value;
+ const name = `${target.name ?? target.constructor.name}.${String(key)}`;
+ descriptor.value = bench(rawMethod, name);
+ };
+}
+exports.Bench = Bench;
+const anon = { name: "measure()", calls: 0, time: 0 };
+function measure(cb) {
+ if (anon.calls === 0) {
+ benchmarks.unshift(anon);
+ }
+ anon.calls++;
+ const start = perf_hooks_1.performance.now();
+ let result;
+ try {
+ result = cb();
+ }
+ finally {
+ anon.time += perf_hooks_1.performance.now() - start;
+ }
+ return result;
+}
+exports.measure = measure;
+process.on("beforeExit", () => {
+ if (!benchmarks.length)
+ return;
+ const width = benchmarks.reduce((a, b) => Math.max(a, b.name.length), 11);
+ console.log("=".repeat(width + 20));
+ console.log(`${"Benchmarked".padEnd(width)} | Calls | Time`);
+ console.log("=".repeat(width + 20));
+ for (const { name, calls, time } of benchmarks) {
+ console.log(`${name.padEnd(width)} | ${calls
+ .toString()
+ .padEnd(5)} | ${time.toFixed(2)}ms`);
+ }
+ console.log("=".repeat(width + 20));
+});
diff --git a/node_modules/typedoc/dist/lib/utils/plugins.d.ts b/node_modules/typedoc/dist/lib/utils/plugins.d.ts
new file mode 100644
index 0000000..f2d4092
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/plugins.d.ts
@@ -0,0 +1,2 @@
+import type { Application } from "../application";
+export declare function loadPlugins(app: Application, plugins: readonly string[]): Promise<void>;
diff --git a/node_modules/typedoc/dist/lib/utils/plugins.js b/node_modules/typedoc/dist/lib/utils/plugins.js
new file mode 100644
index 0000000..5f3a075
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/plugins.js
@@ -0,0 +1,53 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.loadPlugins = void 0;
+const path_1 = require("path");
+const url_1 = require("url");
+const paths_1 = require("./paths");
+async function loadPlugins(app, plugins) {
+ for (const plugin of plugins) {
+ const pluginDisplay = getPluginDisplayName(plugin);
+ try {
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
+ let instance;
+ try {
+ instance = require(plugin);
+ }
+ catch (error) {
+ if (error.code === "ERR_REQUIRE_ESM") {
+ // On Windows, we need to ensure this path is a file path.
+ // Or we'll get ERR_UNSUPPORTED_ESM_URL_SCHEME
+ const esmPath = (0, path_1.isAbsolute)(plugin)
+ ? (0, url_1.pathToFileURL)(plugin).toString()
+ : plugin;
+ instance = await import(esmPath);
+ }
+ else {
+ throw error;
+ }
+ }
+ const initFunction = instance.load;
+ if (typeof initFunction === "function") {
+ await initFunction(app);
+ app.logger.info(`Loaded plugin ${pluginDisplay}`);
+ }
+ else {
+ app.logger.error(`Invalid structure in plugin ${pluginDisplay}, no load function found.`);
+ }
+ }
+ catch (error) {
+ app.logger.error(`The plugin ${pluginDisplay} could not be loaded.`);
+ if (error instanceof Error && error.stack) {
+ app.logger.error(error.stack);
+ }
+ }
+ }
+}
+exports.loadPlugins = loadPlugins;
+function getPluginDisplayName(plugin) {
+ const path = (0, paths_1.nicePath)(plugin);
+ if (path.startsWith("./node_modules/")) {
+ return path.substring("./node_modules/".length);
+ }
+ return plugin;
+}
diff --git a/node_modules/typedoc/dist/lib/utils/reflections.d.ts b/node_modules/typedoc/dist/lib/utils/reflections.d.ts
new file mode 100644
index 0000000..b3fdb1e
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/reflections.d.ts
@@ -0,0 +1,5 @@
+import { ProjectReflection, ReferenceType, Reflection } from "../models";
+export declare function discoverAllReferenceTypes(project: ProjectReflection, forExportValidation: boolean): {
+ type: ReferenceType;
+ owner: Reflection;
+}[];
diff --git a/node_modules/typedoc/dist/lib/utils/reflections.js b/node_modules/typedoc/dist/lib/utils/reflections.js
new file mode 100644
index 0000000..052d0c8
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/reflections.js
@@ -0,0 +1,68 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.discoverAllReferenceTypes = void 0;
+const models_1 = require("../models");
+function discoverAllReferenceTypes(project, forExportValidation) {
+ let current = project;
+ const queue = [];
+ const result = [];
+ const visitor = (0, models_1.makeRecursiveVisitor)({
+ reference(type) {
+ result.push({ type, owner: current });
+ },
+ reflection(type) {
+ queue.push(type.declaration);
+ },
+ });
+ const add = (item) => {
+ if (!item)
+ return;
+ if (item instanceof models_1.Reflection) {
+ queue.push(item);
+ }
+ else {
+ queue.push(...item);
+ }
+ };
+ do {
+ if (current instanceof models_1.ContainerReflection) {
+ add(current.children);
+ }
+ if (current instanceof models_1.DeclarationReflection) {
+ current.type?.visit(visitor);
+ add(current.typeParameters);
+ add(current.signatures);
+ add(current.indexSignature);
+ add(current.getSignature);
+ add(current.setSignature);
+ current.overwrites?.visit(visitor);
+ current.implementedTypes?.forEach((type) => type.visit(visitor));
+ if (!forExportValidation) {
+ current.inheritedFrom?.visit(visitor);
+ current.implementationOf?.visit(visitor);
+ current.extendedTypes?.forEach((t) => t.visit(visitor));
+ current.extendedBy?.forEach((t) => t.visit(visitor));
+ current.implementedBy?.forEach((t) => t.visit(visitor));
+ }
+ }
+ if (current instanceof models_1.SignatureReflection) {
+ add(current.parameters);
+ add(current.typeParameters);
+ current.type?.visit(visitor);
+ current.overwrites?.visit(visitor);
+ if (!forExportValidation) {
+ current.inheritedFrom?.visit(visitor);
+ current.implementationOf?.visit(visitor);
+ }
+ }
+ if (current instanceof models_1.ParameterReflection) {
+ current.type?.visit(visitor);
+ }
+ if (current instanceof models_1.TypeParameterReflection) {
+ current.type?.visit(visitor);
+ current.default?.visit(visitor);
+ }
+ } while ((current = queue.shift()));
+ return result;
+}
+exports.discoverAllReferenceTypes = discoverAllReferenceTypes;
diff --git a/node_modules/typedoc/dist/lib/utils/sort.d.ts b/node_modules/typedoc/dist/lib/utils/sort.d.ts
new file mode 100644
index 0000000..9601226
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/sort.d.ts
@@ -0,0 +1,9 @@
+/**
+ * Module which handles sorting reflections according to a user specified strategy.
+ * @module
+ */
+import type { DeclarationReflection } from "../models/reflections/declaration";
+import type { Options } from "./options";
+export declare const SORT_STRATEGIES: readonly ["source-order", "alphabetical", "enum-value-ascending", "enum-value-descending", "enum-member-source-order", "static-first", "instance-first", "visibility", "required-first", "kind"];
+export type SortStrategy = (typeof SORT_STRATEGIES)[number];
+export declare function getSortFunction(opts: Options): (reflections: DeclarationReflection[]) => void;
diff --git a/node_modules/typedoc/dist/lib/utils/sort.js b/node_modules/typedoc/dist/lib/utils/sort.js
new file mode 100644
index 0000000..f4019d8
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/sort.js
@@ -0,0 +1,150 @@
+"use strict";
+/**
+ * Module which handles sorting reflections according to a user specified strategy.
+ * @module
+ */
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getSortFunction = exports.SORT_STRATEGIES = void 0;
+const kind_1 = require("../models/reflections/kind");
+const types_1 = require("../models/types");
+exports.SORT_STRATEGIES = [
+ "source-order",
+ "alphabetical",
+ "enum-value-ascending",
+ "enum-value-descending",
+ "enum-member-source-order",
+ "static-first",
+ "instance-first",
+ "visibility",
+ "required-first",
+ "kind",
+];
+const defaultKindSortOrder = [
+ kind_1.ReflectionKind.Reference,
+ kind_1.ReflectionKind.Project,
+ kind_1.ReflectionKind.Module,
+ kind_1.ReflectionKind.Namespace,
+ kind_1.ReflectionKind.Enum,
+ kind_1.ReflectionKind.EnumMember,
+ kind_1.ReflectionKind.Class,
+ kind_1.ReflectionKind.Interface,
+ kind_1.ReflectionKind.TypeAlias,
+ kind_1.ReflectionKind.Constructor,
+ kind_1.ReflectionKind.Property,
+ kind_1.ReflectionKind.Variable,
+ kind_1.ReflectionKind.Function,
+ kind_1.ReflectionKind.Accessor,
+ kind_1.ReflectionKind.Method,
+ kind_1.ReflectionKind.ObjectLiteral,
+ kind_1.ReflectionKind.Parameter,
+ kind_1.ReflectionKind.TypeParameter,
+ kind_1.ReflectionKind.TypeLiteral,
+ kind_1.ReflectionKind.CallSignature,
+ kind_1.ReflectionKind.ConstructorSignature,
+ kind_1.ReflectionKind.IndexSignature,
+ kind_1.ReflectionKind.GetSignature,
+ kind_1.ReflectionKind.SetSignature,
+];
+// Return true if a < b
+const sorts = {
+ "source-order"(a, b) {
+ // This is going to be somewhat ambiguous. No way around that. Treat the first
+ // declaration of a symbol as its ordering declaration.
+ const aSymbol = a.project.getSymbolIdFromReflection(a);
+ const bSymbol = b.project.getSymbolIdFromReflection(b);
+ if (aSymbol && bSymbol) {
+ if (aSymbol.fileName < bSymbol.fileName) {
+ return true;
+ }
+ if (aSymbol.fileName === bSymbol.fileName &&
+ aSymbol.pos < bSymbol.pos) {
+ return true;
+ }
+ return false;
+ }
+ // Someone is doing something weird. Fail to re-order. This could happen if someone
+ // tries to sort with a reflection that has been removed from the project.
+ return false;
+ },
+ alphabetical(a, b) {
+ return a.name < b.name;
+ },
+ "enum-value-ascending"(a, b) {
+ if (a.kind == kind_1.ReflectionKind.EnumMember &&
+ b.kind == kind_1.ReflectionKind.EnumMember) {
+ const aValue = a.type instanceof types_1.LiteralType ? a.type.value : -Infinity;
+ const bValue = b.type instanceof types_1.LiteralType ? b.type.value : -Infinity;
+ return aValue < bValue;
+ }
+ return false;
+ },
+ "enum-value-descending"(a, b) {
+ if (a.kind == kind_1.ReflectionKind.EnumMember &&
+ b.kind == kind_1.ReflectionKind.EnumMember) {
+ const aValue = a.type instanceof types_1.LiteralType ? a.type.value : -Infinity;
+ const bValue = b.type instanceof types_1.LiteralType ? b.type.value : -Infinity;
+ return bValue < aValue;
+ }
+ return false;
+ },
+ "enum-member-source-order"(a, b, data) {
+ if (a.kind === kind_1.ReflectionKind.EnumMember &&
+ b.kind === kind_1.ReflectionKind.EnumMember) {
+ return sorts["source-order"](a, b, data);
+ }
+ return false;
+ },
+ "static-first"(a, b) {
+ return a.flags.isStatic && !b.flags.isStatic;
+ },
+ "instance-first"(a, b) {
+ return !a.flags.isStatic && b.flags.isStatic;
+ },
+ visibility(a, b) {
+ // Note: flags.isPublic may not be set on public members. It will only be set
+ // if the user explicitly marks members as public. Therefore, we can't use it
+ // here to get a reliable sort order.
+ if (a.flags.isPrivate) {
+ return false; // Not sorted before anything
+ }
+ if (a.flags.isProtected) {
+ return b.flags.isPrivate; // Sorted before privates
+ }
+ if (b.flags.isPrivate || b.flags.isProtected) {
+ return true; // We are public, sort before b if b is less visible
+ }
+ return false;
+ },
+ "required-first"(a, b) {
+ return !a.flags.isOptional && b.flags.isOptional;
+ },
+ kind(a, b, { kindSortOrder }) {
+ return kindSortOrder.indexOf(a.kind) < kindSortOrder.indexOf(b.kind);
+ },
+};
+function getSortFunction(opts) {
+ const kindSortOrder = opts
+ .getValue("kindSortOrder")
+ .map((k) => kind_1.ReflectionKind[k]);
+ for (const kind of defaultKindSortOrder) {
+ if (!kindSortOrder.includes(kind)) {
+ kindSortOrder.push(kind);
+ }
+ }
+ const strategies = opts.getValue("sort");
+ const data = { kindSortOrder };
+ return function sortReflections(reflections) {
+ reflections.sort((a, b) => {
+ for (const s of strategies) {
+ if (sorts[s](a, b, data)) {
+ return -1;
+ }
+ if (sorts[s](b, a, data)) {
+ return 1;
+ }
+ }
+ return 0;
+ });
+ };
+}
+exports.getSortFunction = getSortFunction;
diff --git a/node_modules/typedoc/dist/lib/utils/tsconfig.d.ts b/node_modules/typedoc/dist/lib/utils/tsconfig.d.ts
new file mode 100644
index 0000000..d57c2f1
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/tsconfig.d.ts
@@ -0,0 +1,4 @@
+import ts from "typescript";
+import type { Logger } from "./loggers";
+export declare function findTsConfigFile(path: string): string | undefined;
+export declare function readTsConfig(path: string, logger: Logger): ts.ParsedCommandLine | undefined;
diff --git a/node_modules/typedoc/dist/lib/utils/tsconfig.js b/node_modules/typedoc/dist/lib/utils/tsconfig.js
new file mode 100644
index 0000000..c5fb886
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/tsconfig.js
@@ -0,0 +1,36 @@
+"use strict";
+var __importDefault = (this && this.__importDefault) || function (mod) {
+ return (mod && mod.__esModule) ? mod : { "default": mod };
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.readTsConfig = exports.findTsConfigFile = void 0;
+const typescript_1 = __importDefault(require("typescript"));
+const fs_1 = require("./fs");
+function findTsConfigFile(path) {
+ let fileToRead = path;
+ if ((0, fs_1.isDir)(fileToRead)) {
+ fileToRead = typescript_1.default.findConfigFile(path, fs_1.isFile);
+ }
+ if (!fileToRead || !(0, fs_1.isFile)(fileToRead)) {
+ return;
+ }
+ return fileToRead;
+}
+exports.findTsConfigFile = findTsConfigFile;
+const tsConfigCache = {};
+function readTsConfig(path, logger) {
+ if (tsConfigCache[path]) {
+ return tsConfigCache[path];
+ }
+ const parsed = typescript_1.default.getParsedCommandLineOfConfigFile(path, {}, {
+ ...typescript_1.default.sys,
+ onUnRecoverableConfigFileDiagnostic: logger.diagnostic.bind(logger),
+ });
+ if (!parsed) {
+ return;
+ }
+ logger.diagnostics(parsed.errors);
+ tsConfigCache[path] = parsed;
+ return parsed;
+}
+exports.readTsConfig = readTsConfig;
diff --git a/node_modules/typedoc/dist/lib/utils/tsutils.d.ts b/node_modules/typedoc/dist/lib/utils/tsutils.d.ts
new file mode 100644
index 0000000..5c76527
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/tsutils.d.ts
@@ -0,0 +1,3 @@
+import * as ts from "typescript";
+export declare function getQualifiedName(symbol: ts.Symbol, defaultName: string): string;
+export declare function getHumanName(name: string): string;
diff --git a/node_modules/typedoc/dist/lib/utils/tsutils.js b/node_modules/typedoc/dist/lib/utils/tsutils.js
new file mode 100644
index 0000000..20f89d8
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/tsutils.js
@@ -0,0 +1,51 @@
+"use strict";
+var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ var desc = Object.getOwnPropertyDescriptor(m, k);
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
+ desc = { enumerable: true, get: function() { return m[k]; } };
+ }
+ Object.defineProperty(o, k2, desc);
+}) : (function(o, m, k, k2) {
+ if (k2 === undefined) k2 = k;
+ o[k2] = m[k];
+}));
+var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
+}) : function(o, v) {
+ o["default"] = v;
+});
+var __importStar = (this && this.__importStar) || function (mod) {
+ if (mod && mod.__esModule) return mod;
+ var result = {};
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
+ __setModuleDefault(result, mod);
+ return result;
+};
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.getHumanName = exports.getQualifiedName = void 0;
+const ts = __importStar(require("typescript"));
+function getQualifiedName(symbol, defaultName) {
+ // Two implementation options for this one:
+ // 1. Use the internal symbol.parent, to walk up until we hit a source file symbol (if in a module)
+ // or undefined (if in a global file)
+ // 2. Use checker.getFullyQualifiedName and parse out the name from the returned string.
+ // The symbol.parent method is easier to check for now.
+ let sym = symbol;
+ const parts = [];
+ while (sym && !sym.declarations?.some(ts.isSourceFile)) {
+ parts.unshift(getHumanName(sym.name));
+ sym = sym.parent;
+ }
+ return parts.join(".") || defaultName;
+}
+exports.getQualifiedName = getQualifiedName;
+function getHumanName(name) {
+ // Unique symbols get a name that will change between runs of the compiler.
+ const match = /^__@(.*)@\d+$/.exec(name);
+ if (match) {
+ return `[${match[1]}]`;
+ }
+ return name;
+}
+exports.getHumanName = getHumanName;
diff --git a/node_modules/typedoc/dist/lib/utils/validation.d.ts b/node_modules/typedoc/dist/lib/utils/validation.d.ts
new file mode 100644
index 0000000..9cdd7bc
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/validation.d.ts
@@ -0,0 +1,32 @@
+export type Infer<T extends Schema> = T extends Optional<infer U> ? Infer<U> : T extends Guard<infer U> ? U : T extends typeof String ? string : T extends typeof Number ? number : T extends typeof Boolean ? boolean : T extends readonly string[] ? T[number] : T extends readonly [typeof Array, Schema] ? Array<Infer<T[1]>> : {
+ -readonly [K in OptionalKeys<T>]?: Infer<Extract<T[K & keyof T], Schema>>;
+} & {
+ -readonly [K in Exclude<keyof T, OptionalKeys<T> | typeof additionalProperties>]: Infer<Extract<T[K], Schema>>;
+};
+export type Optional<T extends Schema> = Record<typeof opt, T>;
+export type Guard<T> = (x: unknown) => x is T;
+type OptionalKeys<T> = keyof {
+ [K in keyof T as T[K] extends Optional<any> ? K : never]: 1;
+};
+declare const opt: unique symbol;
+/**
+ * Symbol that may be placed on a schema object to define how additional properties are handled.
+ * By default, additional properties are not checked.
+ */
+export declare const additionalProperties: unique symbol;
+export type Schema = typeof String | typeof Number | typeof Boolean | readonly string[] | readonly [typeof Array, Schema] | {
+ readonly [k: string]: Schema;
+ [additionalProperties]?: boolean;
+} | Guard<unknown> | Optional<typeof String> | Optional<typeof Number> | Optional<typeof Boolean> | Optional<readonly string[]> | Optional<readonly [typeof Array, Schema]> | Optional<{
+ readonly [k: string]: Schema;
+ [additionalProperties]?: boolean;
+}> | Optional<Guard<unknown>>;
+/**
+ * Straightforward, fairly dumb, validation helper.
+ * @param schema
+ * @param obj
+ */
+export declare function validate<T extends Schema>(schema: T, obj: unknown): obj is Infer<T>;
+export declare function optional<T extends Schema>(x: T): Optional<T>;
+export declare function isTagString(x: unknown): x is `@${string}`;
+export {};
diff --git a/node_modules/typedoc/dist/lib/utils/validation.js b/node_modules/typedoc/dist/lib/utils/validation.js
new file mode 100644
index 0000000..274a9d5
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/utils/validation.js
@@ -0,0 +1,56 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.isTagString = exports.optional = exports.validate = exports.additionalProperties = void 0;
+const opt = Symbol();
+/**
+ * Symbol that may be placed on a schema object to define how additional properties are handled.
+ * By default, additional properties are not checked.
+ */
+exports.additionalProperties = Symbol();
+function validate(schema, obj) {
+ let type = schema;
+ if (opt in schema) {
+ if (obj == null) {
+ return true;
+ }
+ type = schema[opt];
+ }
+ if (type === String) {
+ return typeof obj === "string";
+ }
+ if (type === Number) {
+ return typeof obj === "number";
+ }
+ if (type === Boolean) {
+ return typeof obj === "boolean";
+ }
+ if (typeof type === "function") {
+ return type(obj);
+ }
+ if (Array.isArray(type)) {
+ if (type[0] === Array) {
+ return (Array.isArray(obj) &&
+ obj.every((item) => validate(type[1], item)));
+ }
+ return type.includes(obj);
+ }
+ if (exports.additionalProperties in schema &&
+ !schema[exports.additionalProperties]) {
+ if (Object.keys(obj).some((key) => !(key in schema))) {
+ return false;
+ }
+ }
+ return (!!obj &&
+ typeof obj === "object" &&
+ !Array.isArray(obj) &&
+ Object.entries(type).every(([key, prop]) => validate(prop, obj[key])));
+}
+exports.validate = validate;
+function optional(x) {
+ return { [opt]: x };
+}
+exports.optional = optional;
+function isTagString(x) {
+ return typeof x === "string" && /^@[a-zA-Z][a-zA-Z0-9]*$/.test(x);
+}
+exports.isTagString = isTagString;
diff --git a/node_modules/typedoc/dist/lib/validation/documentation.d.ts b/node_modules/typedoc/dist/lib/validation/documentation.d.ts
new file mode 100644
index 0000000..be8a423
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/validation/documentation.d.ts
@@ -0,0 +1,3 @@
+import { ProjectReflection, ReflectionKind } from "../models";
+import type { Logger } from "../utils";
+export declare function validateDocumentation(project: ProjectReflection, logger: Logger, requiredToBeDocumented: readonly ReflectionKind.KindString[]): void;
diff --git a/node_modules/typedoc/dist/lib/validation/documentation.js b/node_modules/typedoc/dist/lib/validation/documentation.js
new file mode 100644
index 0000000..60d54e3
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/validation/documentation.js
@@ -0,0 +1,65 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.validateDocumentation = void 0;
+const models_1 = require("../models");
+const enum_1 = require("../utils/enum");
+const paths_1 = require("../utils/paths");
+function validateDocumentation(project, logger, requiredToBeDocumented) {
+ let kinds = requiredToBeDocumented.reduce((prev, cur) => prev | models_1.ReflectionKind[cur], 0);
+ // Functions, Constructors, and Accessors never have comments directly on them.
+ // If they are required to be documented, what's really required is that their
+ // contained signatures have a comment.
+ if (kinds & models_1.ReflectionKind.FunctionOrMethod) {
+ kinds |= models_1.ReflectionKind.CallSignature;
+ kinds = (0, enum_1.removeFlag)(kinds, models_1.ReflectionKind.FunctionOrMethod);
+ }
+ if (kinds & models_1.ReflectionKind.Constructor) {
+ kinds |= models_1.ReflectionKind.ConstructorSignature;
+ kinds = (0, enum_1.removeFlag)(kinds, models_1.ReflectionKind.Constructor);
+ }
+ if (kinds & models_1.ReflectionKind.Accessor) {
+ kinds |= models_1.ReflectionKind.GetSignature | models_1.ReflectionKind.SetSignature;
+ kinds = (0, enum_1.removeFlag)(kinds, models_1.ReflectionKind.Accessor);
+ }
+ const toProcess = project.getReflectionsByKind(kinds);
+ const seen = new Set();
+ outer: while (toProcess.length) {
+ const ref = toProcess.shift();
+ if (seen.has(ref))
+ continue;
+ seen.add(ref);
+ // If there is a parameter inside another parameter, this is probably a callback function.
+ // TypeDoc doesn't support adding comments with @param to nested parameters, so it seems
+ // silly to warn about these.
+ if (ref.kindOf(models_1.ReflectionKind.Parameter)) {
+ let r = ref.parent;
+ while (r) {
+ if (r.kindOf(models_1.ReflectionKind.Parameter)) {
+ continue outer;
+ }
+ r = r.parent;
+ }
+ }
+ if (ref instanceof models_1.DeclarationReflection) {
+ const signatures = ref.type instanceof models_1.ReflectionType
+ ? ref.type.declaration.getNonIndexSignatures()
+ : ref.getNonIndexSignatures();
+ if (signatures.length) {
+ // We maybe used to have a comment, but the comment plugin has removed it.
+ // See CommentPlugin.onResolve. We've been asked to validate this reflection,
+ // (it's probably a type alias) so we should validate that signatures all have
+ // comments, but we shouldn't produce a warning here.
+ toProcess.push(...signatures);
+ continue;
+ }
+ }
+ const symbolId = project.getSymbolIdFromReflection(ref);
+ if (!ref.hasComment() && symbolId) {
+ if (symbolId.fileName.includes("node_modules")) {
+ continue;
+ }
+ logger.warn(`${ref.getFriendlyFullName()}, defined in ${(0, paths_1.nicePath)(symbolId.fileName)}, does not have any documentation.`);
+ }
+ }
+}
+exports.validateDocumentation = validateDocumentation;
diff --git a/node_modules/typedoc/dist/lib/validation/exports.d.ts b/node_modules/typedoc/dist/lib/validation/exports.d.ts
new file mode 100644
index 0000000..b33e4de
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/validation/exports.d.ts
@@ -0,0 +1,3 @@
+import type { ProjectReflection } from "../models";
+import type { Logger } from "../utils";
+export declare function validateExports(project: ProjectReflection, logger: Logger, intentionallyNotExported: readonly string[]): void;
diff --git a/node_modules/typedoc/dist/lib/validation/exports.js b/node_modules/typedoc/dist/lib/validation/exports.js
new file mode 100644
index 0000000..15f05d6
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/validation/exports.js
@@ -0,0 +1,69 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.validateExports = void 0;
+const assert_1 = require("assert");
+const paths_1 = require("../utils/paths");
+const reflections_1 = require("../utils/reflections");
+function makeIntentionallyExportedHelper(project, intentional, logger) {
+ const used = new Set();
+ const processed = intentional.map((v) => {
+ const index = v.lastIndexOf(":");
+ if (index === -1) {
+ return ["", v];
+ }
+ return [v.substring(0, index), v.substring(index + 1)];
+ });
+ return {
+ has(type, typeName) {
+ (0, assert_1.ok)(!type.reflection);
+ // If it isn't declared anywhere, we can't produce a good error message about where
+ // the non-exported symbol is, so even if it isn't ignored, pretend it is. In practice,
+ // this will happen incredibly rarely, since symbols without declarations are very rare.
+ // I know of only two instances:
+ // 1. `undefined` in `globalThis`
+ // 2. Properties on non-homomorphic mapped types, e.g. the symbol for "foo" on `Record<"foo", 1>`
+ // There might be others, so still check this here rather than asserting, but print a debug log
+ // so that we can possibly improve this in the future.
+ if (!type.package) {
+ logger.verbose(`The type ${type.qualifiedName} has no declarations, implicitly allowing missing export.`);
+ return true;
+ }
+ // Don't produce warnings for third-party symbols.
+ if (type.package !== project.packageName) {
+ return true;
+ }
+ for (const [index, [file, name]] of processed.entries()) {
+ if (typeName === name &&
+ type.symbolId.fileName.endsWith(file)) {
+ used.add(index);
+ return true;
+ }
+ }
+ return false;
+ },
+ getUnused() {
+ return intentional.filter((_, i) => !used.has(i));
+ },
+ };
+}
+function validateExports(project, logger, intentionallyNotExported) {
+ const intentional = makeIntentionallyExportedHelper(project, intentionallyNotExported, logger);
+ const warned = new Set();
+ for (const { type, owner } of (0, reflections_1.discoverAllReferenceTypes)(project, true)) {
+ const uniqueId = type.symbolId?.getStableKey();
+ if (!type.reflection &&
+ !type.externalUrl &&
+ !type.isIntentionallyBroken() &&
+ !intentional.has(type, type.qualifiedName) &&
+ !warned.has(uniqueId)) {
+ warned.add(uniqueId);
+ logger.warn(`${type.qualifiedName}, defined in ${(0, paths_1.nicePath)(type.symbolId.fileName)}, is referenced by ${owner.getFullName()} but not included in the documentation.`);
+ }
+ }
+ const unusedIntentional = intentional.getUnused();
+ if (unusedIntentional.length) {
+ logger.warn("The following symbols were marked as intentionally not exported, but were either not referenced in the documentation, or were exported:\n\t" +
+ unusedIntentional.join("\n\t"));
+ }
+}
+exports.validateExports = validateExports;
diff --git a/node_modules/typedoc/dist/lib/validation/links.d.ts b/node_modules/typedoc/dist/lib/validation/links.d.ts
new file mode 100644
index 0000000..7e11f24
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/validation/links.d.ts
@@ -0,0 +1,3 @@
+import type { ProjectReflection } from "../models";
+import type { Logger } from "../utils";
+export declare function validateLinks(project: ProjectReflection, logger: Logger): void;
diff --git a/node_modules/typedoc/dist/lib/validation/links.js b/node_modules/typedoc/dist/lib/validation/links.js
new file mode 100644
index 0000000..80e5131
--- /dev/null
+++ b/node_modules/typedoc/dist/lib/validation/links.js
@@ -0,0 +1,25 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.validateLinks = void 0;
+const linkTags = ["@link", "@linkcode", "@linkplain"];
+function getBrokenLinks(comment) {
+ const links = [];
+ function processPart(part) {
+ if (part.kind === "inline-tag" &&
+ linkTags.includes(part.tag) &&
+ !part.target) {
+ links.push(part.text);
+ }
+ }
+ comment?.summary.forEach(processPart);
+ comment?.blockTags.forEach((tag) => tag.content.forEach(processPart));
+ return links;
+}
+function validateLinks(project, logger) {
+ for (const reflection of Object.values(project.reflections)) {
+ for (const broken of getBrokenLinks(reflection.comment)) {
+ logger.warn(`Failed to resolve link to "${broken}" in comment for ${reflection.getFriendlyFullName()}.`);
+ }
+ }
+}
+exports.validateLinks = validateLinks;
diff --git a/node_modules/typedoc/package.json b/node_modules/typedoc/package.json
new file mode 100644
index 0000000..2cd9f0f
--- /dev/null
+++ b/node_modules/typedoc/package.json
@@ -0,0 +1,102 @@
+{
+ "name": "typedoc",
+ "description": "Create api documentation for TypeScript projects.",
+ "version": "0.24.8",
+ "homepage": "https://typedoc.org",
+ "exports": {
+ ".": "./dist/index.js",
+ "./tsdoc.json": "./tsdoc.json",
+ "./package.json": "./package.json"
+ },
+ "types": "./dist/index.d.ts",
+ "bin": {
+ "typedoc": "bin/typedoc"
+ },
+ "license": "Apache-2.0",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/TypeStrong/TypeDoc.git"
+ },
+ "bugs": {
+ "url": "https://github.com/TypeStrong/TypeDoc/issues"
+ },
+ "engines": {
+ "node": ">= 14.14"
+ },
+ "dependencies": {
+ "lunr": "^2.3.9",
+ "marked": "^4.3.0",
+ "minimatch": "^9.0.0",
+ "shiki": "^0.14.1"
+ },
+ "peerDependencies": {
+ "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x"
+ },
+ "devDependencies": {
+ "@types/lunr": "^2.3.4",
+ "@types/marked": "^4.0.8",
+ "@types/mocha": "^10.0.1",
+ "@types/node": "14",
+ "@typescript-eslint/eslint-plugin": "^5.58.0",
+ "@typescript-eslint/parser": "^5.58.0",
+ "@typestrong/fs-fixture-builder": "github:TypeStrong/fs-fixture-builder#8abd1494280116ff5318dde2c50ad01e1663790c",
+ "c8": "^7.13.0",
+ "esbuild": "^0.17.16",
+ "eslint": "^8.38.0",
+ "mocha": "^10.2.0",
+ "prettier": "2.8.7",
+ "puppeteer": "^13.5.2",
+ "ts-node": "^10.9.1",
+ "typescript": "5.1.3"
+ },
+ "files": [
+ "/bin",
+ "!*.map",
+ "/dist",
+ "!/dist/tmp",
+ "!/dist/.tsbuildinfo",
+ "!/dist/test",
+ "/LICENSE",
+ "/static",
+ "/tsdoc.json"
+ ],
+ "scripts": {
+ "test": "mocha --config .config/mocha.fast.json",
+ "test:cov": "c8 mocha --config .config/mocha.fast.json",
+ "doc:c": "node bin/typedoc --tsconfig src/test/converter/tsconfig.json",
+ "doc:c2": "node bin/typedoc --tsconfig src/test/converter2/tsconfig.json",
+ "test:full": "c8 mocha --config .config/mocha.full.json",
+ "test:visual": "ts-node ./src/test/capture-screenshots.ts && ./scripts/compare_screenshots.sh",
+ "test:visual:accept": "node scripts/accept_visual_regression.js",
+ "rebuild_specs": "node scripts/rebuild_specs.js",
+ "build": "npm run build:tsc && npm run build:themes",
+ "build:tsc": "tsc --project .",
+ "build:themes": "node scripts/build_themes.js",
+ "build:prod": "npm run build:prod:tsc && npm run build:themes",
+ "build:prod:tsc": "tsc --project . --sourceMap false --declarationMap false",
+ "lint": "eslint . && npm run prettier -- --check .",
+ "prettier": "prettier --config .config/.prettierrc.json --ignore-path .config/.prettierignore",
+ "prepublishOnly": "node scripts/set_strict.js false && npm run build:prod && npm test",
+ "postpublish": "node scripts/set_strict.js true"
+ },
+ "keywords": [
+ "typescript",
+ "documentation",
+ "generator"
+ ],
+ "c8": {
+ "extension": [
+ ".ts",
+ ".tsx"
+ ],
+ "reporter": [
+ "html-spa",
+ "text-summary"
+ ],
+ "exclude": [
+ "**/*.d.ts",
+ "src/test",
+ "tmp"
+ ]
+ }
+}
diff --git a/node_modules/typedoc/static/main.js b/node_modules/typedoc/static/main.js
new file mode 100644
index 0000000..4c8fa61
--- /dev/null
+++ b/node_modules/typedoc/static/main.js
@@ -0,0 +1,58 @@
+"use strict";
+"use strict";(()=>{var Se=Object.create;var re=Object.defineProperty;var we=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var ke=Object.getPrototypeOf,Qe=Object.prototype.hasOwnProperty;var Pe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Ie=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Te(e))!Qe.call(t,i)&&i!==r&&re(t,i,{get:()=>e[i],enumerable:!(n=we(e,i))||n.enumerable});return t};var Ce=(t,e,r)=>(r=t!=null?Se(ke(t)):{},Ie(e||!t||!t.__esModule?re(r,"default",{value:t,enumerable:!0}):r,t));var ae=Pe((se,oe)=>{(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i<n.length;i++){var s=n[i],o=e[s];if(Array.isArray(o)){r[s]=o.slice();continue}if(typeof o=="string"||typeof o=="number"||typeof o=="boolean"){r[s]=o;continue}throw new TypeError("clone is not deep and does not support nested objects")}return r},t.FieldRef=function(e,r,n){this.docRef=e,this.fieldName=r,this._stringValue=n},t.FieldRef.joiner="/",t.FieldRef.fromString=function(e){var r=e.indexOf(t.FieldRef.joiner);if(r===-1)throw"malformed field ref string";var n=e.slice(0,r),i=e.slice(r+1);return new t.FieldRef(i,n,e)},t.FieldRef.prototype.toString=function(){return this._stringValue==null&&(this._stringValue=this.fieldName+t.FieldRef.joiner+this.docRef),this._stringValue};t.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var r=0;r<this.length;r++)this.elements[e[r]]=!0}else this.length=0},t.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},t.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},t.Set.prototype.contains=function(e){return!!this.elements[e]},t.Set.prototype.intersect=function(e){var r,n,i,s=[];if(e===t.Set.complete)return this;if(e===t.Set.empty)return e;this.length<e.length?(r=this,n=e):(r=e,n=this),i=Object.keys(r.elements);for(var o=0;o<i.length;o++){var a=i[o];a in n.elements&&s.push(a)}return new t.Set(s)},t.Set.prototype.union=function(e){return e===t.Set.complete?t.Set.complete:e===t.Set.empty?this:new t.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},t.idf=function(e,r){var n=0;for(var i in e)i!="_index"&&(n+=Object.keys(e[i]).length);var s=(r-n+.5)/(n+.5);return Math.log(1+Math.abs(s))},t.Token=function(e,r){this.str=e||"",this.metadata=r||{}},t.Token.prototype.toString=function(){return this.str},t.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},t.Token.prototype.clone=function(e){return e=e||function(r){return r},new t.Token(e(this.str,this.metadata),this.metadata)};t.tokenizer=function(e,r){if(e==null||e==null)return[];if(Array.isArray(e))return e.map(function(m){return new t.Token(t.utils.asString(m).toLowerCase(),t.utils.clone(r))});for(var n=e.toString().toLowerCase(),i=n.length,s=[],o=0,a=0;o<=i;o++){var l=n.charAt(o),u=o-a;if(l.match(t.tokenizer.separator)||o==i){if(u>0){var d=t.utils.clone(r)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(n.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index.
+`,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n<r;n++){for(var i=this._stack[n],s=[],o=0;o<e.length;o++){var a=i(e[o],o,e);if(!(a==null||a===""))if(Array.isArray(a))for(var l=0;l<a.length;l++)s.push(a[l]);else s.push(a)}e=s}return e},t.Pipeline.prototype.runString=function(e,r){var n=new t.Token(e,r);return this.run([n]).map(function(i){return i.toString()})},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})};t.Vector=function(e){this._magnitude=0,this.elements=e||[]},t.Vector.prototype.positionForIndex=function(e){if(this.elements.length==0)return 0;for(var r=0,n=this.elements.length/2,i=n-r,s=Math.floor(i/2),o=this.elements[s*2];i>1&&(o<e&&(r=s),o>e&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(o<e)return(s+1)*2},t.Vector.prototype.insert=function(e,r){this.upsert(e,r,function(){throw"duplicate index"})},t.Vector.prototype.upsert=function(e,r,n){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=n(this.elements[i+1],r):this.elements.splice(i,0,e,r)},t.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,r=this.elements.length,n=1;n<r;n+=2){var i=this.elements[n];e+=i*i}return this._magnitude=Math.sqrt(e)},t.Vector.prototype.dot=function(e){for(var r=0,n=this.elements,i=e.elements,s=n.length,o=i.length,a=0,l=0,u=0,d=0;u<s&&d<o;)a=n[u],l=i[d],a<l?u+=2:a>l?d+=2:a==l&&(r+=n[u+1]*i[d+1],u+=2,d+=2);return r},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),r=1,n=0;r<this.elements.length;r+=2,n++)e[n]=this.elements[r];return e},t.Vector.prototype.toJSON=function(){return this.elements};t.stemmer=function(){var e={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},r={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",s=n+"[^aeiouy]*",o=i+"[aeiou]*",a="^("+s+")?"+o+s,l="^("+s+")?"+o+s+"("+o+")?$",u="^("+s+")?"+o+s+o+s,d="^("+s+")?"+i,m=new RegExp(a),y=new RegExp(u),b=new RegExp(l),g=new RegExp(d),E=/^(.+?)(ss|i)es$/,f=/^(.+?)([^s])s$/,p=/^(.+?)eed$/,w=/^(.+?)(ed|ing)$/,S=/.$/,k=/(at|bl|iz)$/,_=new RegExp("([^aeiouylsz])\\1$"),B=new RegExp("^"+s+i+"[^aeiouwxy]$"),A=/^(.+?[^aeiou])y$/,j=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,q=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,V=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,$=/^(.+?)(s|t)(ion)$/,I=/^(.+?)e$/,z=/ll$/,W=new RegExp("^"+s+i+"[^aeiouwxy]$"),H=function(c){var v,C,T,h,x,O,F;if(c.length<3)return c;if(T=c.substr(0,1),T=="y"&&(c=T.toUpperCase()+c.substr(1)),h=E,x=f,h.test(c)?c=c.replace(h,"$1$2"):x.test(c)&&(c=c.replace(x,"$1$2")),h=p,x=w,h.test(c)){var L=h.exec(c);h=m,h.test(L[1])&&(h=S,c=c.replace(h,""))}else if(x.test(c)){var L=x.exec(c);v=L[1],x=g,x.test(v)&&(c=v,x=k,O=_,F=B,x.test(c)?c=c+"e":O.test(c)?(h=S,c=c.replace(h,"")):F.test(c)&&(c=c+"e"))}if(h=A,h.test(c)){var L=h.exec(c);v=L[1],c=v+"i"}if(h=j,h.test(c)){var L=h.exec(c);v=L[1],C=L[2],h=m,h.test(v)&&(c=v+e[C])}if(h=q,h.test(c)){var L=h.exec(c);v=L[1],C=L[2],h=m,h.test(v)&&(c=v+r[C])}if(h=V,x=$,h.test(c)){var L=h.exec(c);v=L[1],h=y,h.test(v)&&(c=v)}else if(x.test(c)){var L=x.exec(c);v=L[1]+L[2],x=y,x.test(v)&&(c=v)}if(h=I,h.test(c)){var L=h.exec(c);v=L[1],h=y,x=b,O=W,(h.test(v)||x.test(v)&&!O.test(v))&&(c=v)}return h=z,x=y,h.test(c)&&x.test(c)&&(h=S,c=c.replace(h,"")),T=="y"&&(c=T.toLowerCase()+c.substr(1)),c};return function(R){return R.update(H)}}(),t.Pipeline.registerFunction(t.stemmer,"stemmer");t.generateStopWordFilter=function(e){var r=e.reduce(function(n,i){return n[i]=i,n},{});return function(n){if(n&&r[n.toString()]!==n.toString())return n}},t.stopWordFilter=t.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter");t.trimmer=function(e){return e.update(function(r){return r.replace(/^\W+/,"").replace(/\W+$/,"")})},t.Pipeline.registerFunction(t.trimmer,"trimmer");t.TokenSet=function(){this.final=!1,this.edges={},this.id=t.TokenSet._nextId,t.TokenSet._nextId+=1},t.TokenSet._nextId=1,t.TokenSet.fromArray=function(e){for(var r=new t.TokenSet.Builder,n=0,i=e.length;n<i;n++)r.insert(e[n]);return r.finish(),r.root},t.TokenSet.fromClause=function(e){return"editDistance"in e?t.TokenSet.fromFuzzyString(e.term,e.editDistance):t.TokenSet.fromString(e.term)},t.TokenSet.fromFuzzyString=function(e,r){for(var n=new t.TokenSet,i=[{node:n,editsRemaining:r,str:e}];i.length;){var s=i.pop();if(s.str.length>0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),y;m in s.node.edges?y=s.node.edges[m]:(y=new t.TokenSet,s.node.edges[m]=y),s.str.length==1&&(y.final=!0),i.push({node:y,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i<s;i++){var o=e[i],a=i==s-1;if(o=="*")r.edges[o]=r,r.final=a;else{var l=new t.TokenSet;l.final=a,r.edges[o]=l,r=l}}return n},t.TokenSet.prototype.toArray=function(){for(var e=[],r=[{prefix:"",node:this}];r.length;){var n=r.pop(),i=Object.keys(n.node.edges),s=i.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var o=0;o<s;o++){var a=i[o];r.push({prefix:n.prefix.concat(a),node:n.node.edges[a]})}}return e},t.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",r=Object.keys(this.edges).sort(),n=r.length,i=0;i<n;i++){var s=r[i],o=this.edges[s];e=e+s+o.id}return e},t.TokenSet.prototype.intersect=function(e){for(var r=new t.TokenSet,n=void 0,i=[{qNode:e,output:r,node:this}];i.length;){n=i.pop();for(var s=Object.keys(n.qNode.edges),o=s.length,a=Object.keys(n.node.edges),l=a.length,u=0;u<o;u++)for(var d=s[u],m=0;m<l;m++){var y=a[m];if(y==d||d=="*"){var b=n.node.edges[y],g=n.qNode.edges[d],E=b.final&&g.final,f=void 0;y in n.output.edges?(f=n.output.edges[y],f.final=f.final||E):(f=new t.TokenSet,f.final=E,n.output.edges[y]=f),i.push({qNode:g,output:f,node:b})}}}return r},t.TokenSet.Builder=function(){this.previousWord="",this.root=new t.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},t.TokenSet.Builder.prototype.insert=function(e){var r,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)n++;this.minimize(n),this.uncheckedNodes.length==0?r=this.root:r=this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(var i=n;i<e.length;i++){var s=new t.TokenSet,o=e[i];r.edges[o]=s,this.uncheckedNodes.push({parent:r,char:o,child:s}),r=s}r.final=!0,this.previousWord=e},t.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},t.TokenSet.Builder.prototype.minimize=function(e){for(var r=this.uncheckedNodes.length-1;r>=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l<this.fields.length;l++)i[this.fields[l]]=new t.Vector;e.call(r,r);for(var l=0;l<r.clauses.length;l++){var u=r.clauses[l],d=null,m=t.Set.empty;u.usePipeline?d=this.pipeline.runString(u.term,{fields:u.fields}):d=[u.term];for(var y=0;y<d.length;y++){var b=d[y];u.term=b;var g=t.TokenSet.fromClause(u),E=this.tokenSet.intersect(g).toArray();if(E.length===0&&u.presence===t.Query.presence.REQUIRED){for(var f=0;f<u.fields.length;f++){var p=u.fields[f];o[p]=t.Set.empty}break}for(var w=0;w<E.length;w++)for(var S=E[w],k=this.invertedIndex[S],_=k._index,f=0;f<u.fields.length;f++){var p=u.fields[f],B=k[p],A=Object.keys(B),j=S+"/"+p,q=new t.Set(A);if(u.presence==t.Query.presence.REQUIRED&&(m=m.union(q),o[p]===void 0&&(o[p]=t.Set.complete)),u.presence==t.Query.presence.PROHIBITED){a[p]===void 0&&(a[p]=t.Set.empty),a[p]=a[p].union(q);continue}if(i[p].upsert(_,u.boost,function(Ee,be){return Ee+be}),!s[j]){for(var V=0;V<A.length;V++){var $=A[V],I=new t.FieldRef($,p),z=B[$],W;(W=n[I])===void 0?n[I]=new t.MatchData(S,p,z):W.add(S,p,z)}s[j]=!0}}}if(u.presence===t.Query.presence.REQUIRED)for(var f=0;f<u.fields.length;f++){var p=u.fields[f];o[p]=o[p].intersect(m)}}for(var H=t.Set.complete,R=t.Set.empty,l=0;l<this.fields.length;l++){var p=this.fields[l];o[p]&&(H=H.intersect(o[p])),a[p]&&(R=R.union(a[p]))}var c=Object.keys(n),v=[],C=Object.create(null);if(r.isNegated()){c=Object.keys(this.fieldVectors);for(var l=0;l<c.length;l++){var I=c[l],T=t.FieldRef.fromString(I);n[I]=new t.MatchData}}for(var l=0;l<c.length;l++){var T=t.FieldRef.fromString(c[l]),h=T.docRef;if(H.contains(h)&&!R.contains(h)){var x=this.fieldVectors[T],O=i[T.fieldName].similarity(x),F;if((F=C[h])!==void 0)F.score+=O,F.matchData.combine(n[T]);else{var L={ref:h,score:O,matchData:n[T]};C[h]=L,v.push(L)}}}return v.sort(function(xe,Le){return Le.score-xe.score})},t.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map(function(n){return[n,this.invertedIndex[n]]},this),r=Object.keys(this.fieldVectors).map(function(n){return[n,this.fieldVectors[n].toJSON()]},this);return{version:t.version,fields:this.fields,fieldVectors:r,invertedIndex:e,pipeline:this.pipeline.toJSON()}},t.Index.load=function(e){var r={},n={},i=e.fieldVectors,s=Object.create(null),o=e.invertedIndex,a=new t.TokenSet.Builder,l=t.Pipeline.load(e.pipeline);e.version!=t.version&&t.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+t.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var d=i[u],m=d[0],y=d[1];n[m]=new t.Vector(y)}for(var u=0;u<o.length;u++){var d=o[u],b=d[0],g=d[1];a.insert(b),s[b]=g}return a.finish(),r.fields=e.fields,r.fieldVectors=n,r.invertedIndex=s,r.tokenSet=a.root,r.pipeline=l,new t.Index(r)};t.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=t.tokenizer,this.pipeline=new t.Pipeline,this.searchPipeline=new t.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},t.Builder.prototype.ref=function(e){this._ref=e},t.Builder.prototype.field=function(e,r){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=r||{}},t.Builder.prototype.b=function(e){e<0?this._b=0:e>1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},this.documentCount+=1;for(var s=0;s<i.length;s++){var o=i[s],a=this._fields[o].extractor,l=a?a(e):e[o],u=this.tokenizer(l,{fields:[o]}),d=this.pipeline.run(u),m=new t.FieldRef(n,o),y=Object.create(null);this.fieldTermFrequencies[m]=y,this.fieldLengths[m]=0,this.fieldLengths[m]+=d.length;for(var b=0;b<d.length;b++){var g=d[b];if(y[g]==null&&(y[g]=0),y[g]+=1,this.invertedIndex[g]==null){var E=Object.create(null);E._index=this.termIndex,this.termIndex+=1;for(var f=0;f<i.length;f++)E[i[f]]=Object.create(null);this.invertedIndex[g]=E}this.invertedIndex[g][o][n]==null&&(this.invertedIndex[g][o][n]=Object.create(null));for(var p=0;p<this.metadataWhitelist.length;p++){var w=this.metadataWhitelist[p],S=g.metadata[w];this.invertedIndex[g][o][n][w]==null&&(this.invertedIndex[g][o][n][w]=[]),this.invertedIndex[g][o][n][w].push(S)}}}},t.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),r=e.length,n={},i={},s=0;s<r;s++){var o=t.FieldRef.fromString(e[s]),a=o.fieldName;i[a]||(i[a]=0),i[a]+=1,n[a]||(n[a]=0),n[a]+=this.fieldLengths[o]}for(var l=Object.keys(this._fields),s=0;s<l.length;s++){var u=l[s];n[u]=n[u]/i[u]}this.averageFieldLength=n},t.Builder.prototype.createFieldVectors=function(){for(var e={},r=Object.keys(this.fieldTermFrequencies),n=r.length,i=Object.create(null),s=0;s<n;s++){for(var o=t.FieldRef.fromString(r[s]),a=o.fieldName,l=this.fieldLengths[o],u=new t.Vector,d=this.fieldTermFrequencies[o],m=Object.keys(d),y=m.length,b=this._fields[a].boost||1,g=this._documents[o.docRef].boost||1,E=0;E<y;E++){var f=m[E],p=d[f],w=this.invertedIndex[f]._index,S,k,_;i[f]===void 0?(S=t.idf(this.invertedIndex[f],this.documentCount),i[f]=S):S=i[f],k=S*((this._k1+1)*p)/(this._k1*(1-this._b+this._b*(l/this.averageFieldLength[a]))+p),k*=b,k*=g,_=Math.round(k*1e3)/1e3,u.insert(w,_)}e[o]=u}this.fieldVectors=e},t.Builder.prototype.createTokenSet=function(){this.tokenSet=t.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},t.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new t.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},t.Builder.prototype.use=function(e){var r=Array.prototype.slice.call(arguments,1);r.unshift(this),e.apply(this,r)},t.MatchData=function(e,r,n){for(var i=Object.create(null),s=Object.keys(n||{}),o=0;o<s.length;o++){var a=s[o];i[a]=n[a].slice()}this.metadata=Object.create(null),e!==void 0&&(this.metadata[e]=Object.create(null),this.metadata[e][r]=i)},t.MatchData.prototype.combine=function(e){for(var r=Object.keys(e.metadata),n=0;n<r.length;n++){var i=r[n],s=Object.keys(e.metadata[i]);this.metadata[i]==null&&(this.metadata[i]=Object.create(null));for(var o=0;o<s.length;o++){var a=s[o],l=Object.keys(e.metadata[i][a]);this.metadata[i][a]==null&&(this.metadata[i][a]=Object.create(null));for(var u=0;u<l.length;u++){var d=l[u];this.metadata[i][a][d]==null?this.metadata[i][a][d]=e.metadata[i][a][d]:this.metadata[i][a][d]=this.metadata[i][a][d].concat(e.metadata[i][a][d])}}}},t.MatchData.prototype.add=function(e,r,n){if(!(e in this.metadata)){this.metadata[e]=Object.create(null),this.metadata[e][r]=n;return}if(!(r in this.metadata[e])){this.metadata[e][r]=n;return}for(var i=Object.keys(n),s=0;s<i.length;s++){var o=i[s];o in this.metadata[e][r]?this.metadata[e][r][o]=this.metadata[e][r][o].concat(n[o]):this.metadata[e][r][o]=n[o]}},t.Query=function(e){this.clauses=[],this.allFields=e},t.Query.wildcard=new String("*"),t.Query.wildcard.NONE=0,t.Query.wildcard.LEADING=1,t.Query.wildcard.TRAILING=2,t.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},t.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=t.Query.wildcard.NONE),e.wildcard&t.Query.wildcard.LEADING&&e.term.charAt(0)!=t.Query.wildcard&&(e.term="*"+e.term),e.wildcard&t.Query.wildcard.TRAILING&&e.term.slice(-1)!=t.Query.wildcard&&(e.term=""+e.term+"*"),"presence"in e||(e.presence=t.Query.presence.OPTIONAL),this.clauses.push(e),this},t.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=t.Query.presence.PROHIBITED)return!1;return!0},t.Query.prototype.term=function(e,r){if(Array.isArray(e))return e.forEach(function(i){this.term(i,t.utils.clone(r))},this),this;var n=r||{};return n.term=e.toString(),this.clause(n),this},t.QueryParseError=function(e,r,n){this.name="QueryParseError",this.message=e,this.start=r,this.end=n},t.QueryParseError.prototype=new Error,t.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},t.QueryLexer.prototype.run=function(){for(var e=t.QueryLexer.lexText;e;)e=e(this)},t.QueryLexer.prototype.sliceString=function(){for(var e=[],r=this.start,n=this.pos,i=0;i<this.escapeCharPositions.length;i++)n=this.escapeCharPositions[i],e.push(this.str.slice(r,n)),r=n+1;return e.push(this.str.slice(r,this.pos)),this.escapeCharPositions.length=0,e.join("")},t.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},t.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},t.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos<this.length},t.QueryLexer.EOS="EOS",t.QueryLexer.FIELD="FIELD",t.QueryLexer.TERM="TERM",t.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",t.QueryLexer.BOOST="BOOST",t.QueryLexer.PRESENCE="PRESENCE",t.QueryLexer.lexField=function(e){return e.backup(),e.emit(t.QueryLexer.FIELD),e.ignore(),t.QueryLexer.lexText},t.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var r=e.peekLexeme();if(r!=null)switch(r.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,r){typeof define=="function"&&define.amd?define(r):typeof se=="object"?oe.exports=r():e.lunr=r()}(this,function(){return t})})()});var ne=[];function G(t,e){ne.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){ne.forEach(r=>{e.querySelectorAll(r.selector).forEach(n=>{n.dataset.hasInstance||(new r.constructor({el:n,app:this}),n.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),r=e?.parentElement;for(;r&&!r.classList.contains(".tsd-navigation");)r instanceof HTMLDetailsElement&&(r.open=!0),r=r.parentElement;if(e){let n=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=n}}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let r=e.parentElement;for(;r&&r.tagName!=="SECTION";)r=r.parentElement;if(r&&r.offsetParent==null){this.alwaysVisibleMember=r,r.classList.add("always-visible");let n=document.createElement("p");n.classList.add("warning"),n.textContent="This member is normally hidden due to your filter settings.",r.prepend(n)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let r;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(r),r=setTimeout(()=>{e.classList.remove("visible"),r=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let r;return()=>{clearTimeout(r),r=setTimeout(()=>t(),e)}};var ce=Ce(ae());function de(){let t=document.getElementById("tsd-search");if(!t)return;let e=document.getElementById("tsd-search-script");t.classList.add("loading"),e&&(e.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),e.addEventListener("load",()=>{t.classList.remove("loading"),t.classList.add("ready")}),window.searchData&&t.classList.remove("loading"));let r=document.querySelector("#tsd-search input"),n=document.querySelector("#tsd-search .results");if(!r||!n)throw new Error("The input field or the result list wrapper was not found");let i=!1;n.addEventListener("mousedown",()=>i=!0),n.addEventListener("mouseup",()=>{i=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{i||(i=!1,t.classList.remove("has-focus"))});let s={base:t.dataset.base+"/"};Oe(t,n,r,s)}function Oe(t,e,r,n){r.addEventListener("input",ie(()=>{Re(t,e,r,n)},200));let i=!1;r.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Fe(e,r):s.key=="Escape"?r.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),r.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!r.matches(":focus")&&s.key==="/"&&(r.focus(),s.preventDefault())})}function _e(t,e){t.index||window.searchData&&(e.classList.remove("loading"),e.classList.add("ready"),t.data=window.searchData,t.index=ce.Index.load(window.searchData.index))}function Re(t,e,r,n){if(_e(n,t),!n.index||!n.data)return;e.textContent="";let i=r.value.trim(),s=i?n.index.search(`*${i}*`):[];for(let o=0;o<s.length;o++){let a=s[o],l=n.data.rows[Number(a.ref)],u=1;l.name.toLowerCase().startsWith(i.toLowerCase())&&(u*=1+1/(1+Math.abs(l.name.length-i.length))),a.score*=u}s.sort((o,a)=>a.score-o.score);for(let o=0,a=Math.min(10,s.length);o<a;o++){let l=n.data.rows[Number(s[o].ref)],u=le(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(u+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(u=`<span class="parent">${le(l.parent,i)}.</span>${u}`);let d=document.createElement("li");d.classList.value=l.classes??"";let m=document.createElement("a");m.href=n.base+l.url,m.innerHTML=u,d.append(m),e.appendChild(d)}}function ue(t,e){let r=t.querySelector(".current");if(!r)r=t.querySelector(e==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let n=r;if(e===1)do n=n.nextElementSibling??void 0;while(n instanceof HTMLElement&&n.offsetParent==null);else do n=n.previousElementSibling??void 0;while(n instanceof HTMLElement&&n.offsetParent==null);n&&(r.classList.remove("current"),n.classList.add("current"))}}function Fe(t,e){let r=t.querySelector(".current");if(r||(r=t.querySelector("li:first-child")),r){let n=r.querySelector("a");n&&(window.location.href=n.href),e.blur()}}function le(t,e){if(e==="")return t;let r=t.toLocaleLowerCase(),n=e.toLocaleLowerCase(),i=[],s=0,o=r.indexOf(n);for(;o!=-1;)i.push(K(t.substring(s,o)),`<b>${K(t.substring(o,o+n.length))}</b>`),s=o+n.length,o=r.indexOf(n,s);return i.push(K(t.substring(s))),i.join("")}var Me={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#039;",'"':"&quot;"};function K(t){return t.replace(/[&<>"'"]/g,e=>Me[e])}var P=class{constructor(e){this.el=e.el,this.app=e.app}};var M="mousedown",fe="mousemove",N="mouseup",J={x:0,y:0},he=!1,ee=!1,De=!1,D=!1,pe=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(pe?"is-mobile":"not-mobile");pe&&"ontouchstart"in document.documentElement&&(De=!0,M="touchstart",fe="touchmove",N="touchend");document.addEventListener(M,t=>{ee=!0,D=!1;let e=M=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(fe,t=>{if(ee&&!D){let e=M=="touchstart"?t.targetTouches[0]:t,r=J.x-(e.pageX||0),n=J.y-(e.pageY||0);D=Math.sqrt(r*r+n*n)>10}});document.addEventListener(N,()=>{ee=!1});document.addEventListener("click",t=>{he&&(t.preventDefault(),t.stopImmediatePropagation(),he=!1)});var X=class extends P{constructor(r){super(r);this.className=this.el.dataset.toggle||"",this.el.addEventListener(N,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(M,n=>this.onDocumentPointerDown(n)),document.addEventListener(N,n=>this.onDocumentPointerUp(n))}setActive(r){if(this.active==r)return;this.active=r,document.documentElement.classList.toggle("has-"+this.className,r),this.el.classList.toggle("active",r);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(r){D||(this.setActive(!0),r.preventDefault())}onDocumentPointerDown(r){if(this.active){if(r.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(r){if(!D&&this.active&&r.target.closest(".col-sidebar")){let n=r.target.closest("a");if(n){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substring(0,i.indexOf("#"))),n.href.substring(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var me=document.head.appendChild(document.createElement("style"));me.dataset.for="filters";var Y=class extends P{constructor(r){super(r);this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),me.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; }
+`}fromLocalStorage(){let r=Q.getItem(this.key);return r?r==="true":this.el.checked}setLocalStorage(r){Q.setItem(this.key,r.toString()),this.value=r,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let n=Array.from(r.querySelectorAll(".tsd-index-link")).every(i=>i.offsetParent==null);r.style.display=n?"none":"block"})}};var Z=class extends P{constructor(r){super(r);this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update()),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ve(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}de();G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var ge=document.getElementById("tsd-theme");ge&&ve(ge);var Ae=new U;Object.defineProperty(window,"app",{value:Ae});document.querySelectorAll("summary a").forEach(t=>{t.addEventListener("click",()=>{location.assign(t.href)})});})();
+/*! Bundled license information:
+
+lunr/lunr.js:
+ (**
+ * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9
+ * Copyright (C) 2020 Oliver Nightingale
+ * @license MIT
+ *)
+ (*!
+ * lunr.utils
+ * Copyright (C) 2020 Oliver Nightingale
+ *)
+ (*!
+ * lunr.Set
+ * Copyright (C) 2020 Oliver Nightingale
+ *)
+ (*!
+ * lunr.tokenizer
+ * Copyright (C) 2020 Oliver Nightingale
+ *)
+ (*!
+ * lunr.Pipeline
+ * Copyright (C) 2020 Oliver Nightingale
+ *)
+ (*!
+ * lunr.Vector
+ * Copyright (C) 2020 Oliver Nightingale
+ *)
+ (*!
+ * lunr.stemmer
+ * Copyright (C) 2020 Oliver Nightingale
+ * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt
+ *)
+ (*!
+ * lunr.stopWordFilter
+ * Copyright (C) 2020 Oliver Nightingale
+ *)
+ (*!
+ * lunr.trimmer
+ * Copyright (C) 2020 Oliver Nightingale
+ *)
+ (*!
+ * lunr.TokenSet
+ * Copyright (C) 2020 Oliver Nightingale
+ *)
+ (*!
+ * lunr.Index
+ * Copyright (C) 2020 Oliver Nightingale
+ *)
+ (*!
+ * lunr.Builder
+ * Copyright (C) 2020 Oliver Nightingale
+ *)
+*/
diff --git a/node_modules/typedoc/static/style.css b/node_modules/typedoc/static/style.css
new file mode 100644
index 0000000..18b4f8f
--- /dev/null
+++ b/node_modules/typedoc/static/style.css
@@ -0,0 +1,1367 @@
+:root {
+ /* Light */
+ --light-color-background: #f2f4f8;
+ --light-color-background-secondary: #eff0f1;
+ --light-color-warning-text: #222;
+ --light-color-background-warning: #e6e600;
+ --light-color-icon-background: var(--light-color-background);
+ --light-color-accent: #c5c7c9;
+ --light-color-active-menu-item: var(--light-color-accent);
+ --light-color-text: #222;
+ --light-color-text-aside: #6e6e6e;
+ --light-color-link: #1f70c2;
+
+ --light-color-ts-project: #b111c9;
+ --light-color-ts-module: var(--light-color-ts-project);
+ --light-color-ts-namespace: var(--light-color-ts-project);
+ --light-color-ts-enum: #7e6f15;
+ --light-color-ts-enum-member: var(--light-color-ts-enum);
+ --light-color-ts-variable: #4760ec;
+ --light-color-ts-function: #572be7;
+ --light-color-ts-class: #1f70c2;
+ --light-color-ts-interface: #108024;
+ --light-color-ts-constructor: var(--light-color-ts-class);
+ --light-color-ts-property: var(--light-color-ts-variable);
+ --light-color-ts-method: var(--light-color-ts-function);
+ --light-color-ts-call-signature: var(--light-color-ts-method);
+ --light-color-ts-index-signature: var(--light-color-ts-property);
+ --light-color-ts-constructor-signature: var(--light-color-ts-constructor);
+ --light-color-ts-parameter: var(--light-color-ts-variable);
+ /* type literal not included as links will never be generated to it */
+ --light-color-ts-type-parameter: var(--light-color-ts-type-alias);
+ --light-color-ts-accessor: var(--light-color-ts-property);
+ --light-color-ts-get-signature: var(--light-color-ts-accessor);
+ --light-color-ts-set-signature: var(--light-color-ts-accessor);
+ /* object literal not included as it is not used and will be removed in 0.25 */
+ --light-color-ts-type-alias: #d51270;
+ /* reference not included as links will be colored with the kind that it points to */
+
+ --light-external-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' width='10' height='10'><path fill-opacity='0' stroke='%23000' stroke-width='10' d='m43,35H5v60h60V57M45,5v10l10,10-30,30 20,20 30-30 10,10h10V5z'/></svg>");
+ --light-color-scheme: light;
+
+ /* Dark */
+ --dark-color-background: #2b2e33;
+ --dark-color-background-secondary: #1e2024;
+ --dark-color-background-warning: #bebe00;
+ --dark-color-warning-text: #222;
+ --dark-color-icon-background: var(--dark-color-background-secondary);
+ --dark-color-accent: #9096a2;
+ --dark-color-active-menu-item: #5d5d6a;
+ --dark-color-text: #f5f5f5;
+ --dark-color-text-aside: #dddddd;
+ --dark-color-link: #00aff4;
+
+ --dark-color-ts-project: #e358ff;
+ --dark-color-ts-module: var(--dark-color-ts-project);
+ --dark-color-ts-namespace: var(--dark-color-ts-project);
+ --dark-color-ts-enum: #f4d93e;
+ --dark-color-ts-enum-member: var(--dark-color-ts-enum);
+ --dark-color-ts-variable: #798dff;
+ --dark-color-ts-function: #a280ff;
+ --dark-color-ts-class: #8ac4ff;
+ --dark-color-ts-interface: #6cff87;
+ --dark-color-ts-constructor: var(--dark-color-ts-class);
+ --dark-color-ts-property: var(--dark-color-ts-variable);
+ --dark-color-ts-method: var(--dark-color-ts-function);
+ --dark-color-ts-call-signature: var(--dark-color-ts-method);
+ --dark-color-ts-index-signature: var(--dark-color-ts-property);
+ --dark-color-ts-constructor-signature: var(--dark-color-ts-constructor);
+ --dark-color-ts-parameter: var(--dark-color-ts-variable);
+ /* type literal not included as links will never be generated to it */
+ --dark-color-ts-type-parameter: var(--dark-color-ts-type-alias);
+ --dark-color-ts-accessor: var(--dark-color-ts-property);
+ --dark-color-ts-get-signature: var(--dark-color-ts-accessor);
+ --dark-color-ts-set-signature: var(--dark-color-ts-accessor);
+ /* object literal not included as it is not used and will be removed in 0.25 */
+ --dark-color-ts-type-alias: #ff6492;
+ /* reference not included as links will be colored with the kind that it points to */
+
+ --dark-external-icon: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' width='10' height='10'><path fill-opacity='0' stroke='%23fff' stroke-width='10' d='m43,35H5v60h60V57M45,5v10l10,10-30,30 20,20 30-30 10,10h10V5z'/></svg>");
+ --dark-color-scheme: dark;
+}
+
+@media (prefers-color-scheme: light) {
+ :root {
+ --color-background: var(--light-color-background);
+ --color-background-secondary: var(--light-color-background-secondary);
+ --color-background-warning: var(--light-color-background-warning);
+ --color-warning-text: var(--light-color-warning-text);
+ --color-icon-background: var(--light-color-icon-background);
+ --color-accent: var(--light-color-accent);
+ --color-active-menu-item: var(--light-color-active-menu-item);
+ --color-text: var(--light-color-text);
+ --color-text-aside: var(--light-color-text-aside);
+ --color-link: var(--light-color-link);
+
+ --color-ts-module: var(--light-color-ts-module);
+ --color-ts-namespace: var(--light-color-ts-namespace);
+ --color-ts-enum: var(--light-color-ts-enum);
+ --color-ts-enum-member: var(--light-color-ts-enum-member);
+ --color-ts-variable: var(--light-color-ts-variable);
+ --color-ts-function: var(--light-color-ts-function);
+ --color-ts-class: var(--light-color-ts-class);
+ --color-ts-interface: var(--light-color-ts-interface);
+ --color-ts-constructor: var(--light-color-ts-constructor);
+ --color-ts-property: var(--light-color-ts-property);
+ --color-ts-method: var(--light-color-ts-method);
+ --color-ts-call-signature: var(--light-color-ts-call-signature);
+ --color-ts-index-signature: var(--light-color-ts-index-signature);
+ --color-ts-constructor-signature: var(
+ --light-color-ts-constructor-signature
+ );
+ --color-ts-parameter: var(--light-color-ts-parameter);
+ --color-ts-type-parameter: var(--light-color-ts-type-parameter);
+ --color-ts-accessor: var(--light-color-ts-accessor);
+ --color-ts-get-signature: var(--light-color-ts-get-signature);
+ --color-ts-set-signature: var(--light-color-ts-set-signature);
+ --color-ts-type-alias: var(--light-color-ts-type-alias);
+
+ --external-icon: var(--light-external-icon);
+ --color-scheme: var(--light-color-scheme);
+ }
+}
+
+@media (prefers-color-scheme: dark) {
+ :root {
+ --color-background: var(--dark-color-background);
+ --color-background-secondary: var(--dark-color-background-secondary);
+ --color-background-warning: var(--dark-color-background-warning);
+ --color-warning-text: var(--dark-color-warning-text);
+ --color-icon-background: var(--dark-color-icon-background);
+ --color-accent: var(--dark-color-accent);
+ --color-active-menu-item: var(--dark-color-active-menu-item);
+ --color-text: var(--dark-color-text);
+ --color-text-aside: var(--dark-color-text-aside);
+ --color-link: var(--dark-color-link);
+
+ --color-ts-module: var(--dark-color-ts-module);
+ --color-ts-namespace: var(--dark-color-ts-namespace);
+ --color-ts-enum: var(--dark-color-ts-enum);
+ --color-ts-enum-member: var(--dark-color-ts-enum-member);
+ --color-ts-variable: var(--dark-color-ts-variable);
+ --color-ts-function: var(--dark-color-ts-function);
+ --color-ts-class: var(--dark-color-ts-class);
+ --color-ts-interface: var(--dark-color-ts-interface);
+ --color-ts-constructor: var(--dark-color-ts-constructor);
+ --color-ts-property: var(--dark-color-ts-property);
+ --color-ts-method: var(--dark-color-ts-method);
+ --color-ts-call-signature: var(--dark-color-ts-call-signature);
+ --color-ts-index-signature: var(--dark-color-ts-index-signature);
+ --color-ts-constructor-signature: var(
+ --dark-color-ts-constructor-signature
+ );
+ --color-ts-parameter: var(--dark-color-ts-parameter);
+ --color-ts-type-parameter: var(--dark-color-ts-type-parameter);
+ --color-ts-accessor: var(--dark-color-ts-accessor);
+ --color-ts-get-signature: var(--dark-color-ts-get-signature);
+ --color-ts-set-signature: var(--dark-color-ts-set-signature);
+ --color-ts-type-alias: var(--dark-color-ts-type-alias);
+
+ --external-icon: var(--dark-external-icon);
+ --color-scheme: var(--dark-color-scheme);
+ }
+}
+
+html {
+ color-scheme: var(--color-scheme);
+}
+
+body {
+ margin: 0;
+}
+
+:root[data-theme="light"] {
+ --color-background: var(--light-color-background);
+ --color-background-secondary: var(--light-color-background-secondary);
+ --color-background-warning: var(--light-color-background-warning);
+ --color-warning-text: var(--light-color-warning-text);
+ --color-icon-background: var(--light-color-icon-background);
+ --color-accent: var(--light-color-accent);
+ --color-active-menu-item: var(--light-color-active-menu-item);
+ --color-text: var(--light-color-text);
+ --color-text-aside: var(--light-color-text-aside);
+ --color-link: var(--light-color-link);
+
+ --color-ts-module: var(--light-color-ts-module);
+ --color-ts-namespace: var(--light-color-ts-namespace);
+ --color-ts-enum: var(--light-color-ts-enum);
+ --color-ts-enum-member: var(--light-color-ts-enum-member);
+ --color-ts-variable: var(--light-color-ts-variable);
+ --color-ts-function: var(--light-color-ts-function);
+ --color-ts-class: var(--light-color-ts-class);
+ --color-ts-interface: var(--light-color-ts-interface);
+ --color-ts-constructor: var(--light-color-ts-constructor);
+ --color-ts-property: var(--light-color-ts-property);
+ --color-ts-method: var(--light-color-ts-method);
+ --color-ts-call-signature: var(--light-color-ts-call-signature);
+ --color-ts-index-signature: var(--light-color-ts-index-signature);
+ --color-ts-constructor-signature: var(
+ --light-color-ts-constructor-signature
+ );
+ --color-ts-parameter: var(--light-color-ts-parameter);
+ --color-ts-type-parameter: var(--light-color-ts-type-parameter);
+ --color-ts-accessor: var(--light-color-ts-accessor);
+ --color-ts-get-signature: var(--light-color-ts-get-signature);
+ --color-ts-set-signature: var(--light-color-ts-set-signature);
+ --color-ts-type-alias: var(--light-color-ts-type-alias);
+
+ --external-icon: var(--light-external-icon);
+ --color-scheme: var(--light-color-scheme);
+}
+
+:root[data-theme="dark"] {
+ --color-background: var(--dark-color-background);
+ --color-background-secondary: var(--dark-color-background-secondary);
+ --color-background-warning: var(--dark-color-background-warning);
+ --color-warning-text: var(--dark-color-warning-text);
+ --color-icon-background: var(--dark-color-icon-background);
+ --color-accent: var(--dark-color-accent);
+ --color-active-menu-item: var(--dark-color-active-menu-item);
+ --color-text: var(--dark-color-text);
+ --color-text-aside: var(--dark-color-text-aside);
+ --color-link: var(--dark-color-link);
+
+ --color-ts-module: var(--dark-color-ts-module);
+ --color-ts-namespace: var(--dark-color-ts-namespace);
+ --color-ts-enum: var(--dark-color-ts-enum);
+ --color-ts-enum-member: var(--dark-color-ts-enum-member);
+ --color-ts-variable: var(--dark-color-ts-variable);
+ --color-ts-function: var(--dark-color-ts-function);
+ --color-ts-class: var(--dark-color-ts-class);
+ --color-ts-interface: var(--dark-color-ts-interface);
+ --color-ts-constructor: var(--dark-color-ts-constructor);
+ --color-ts-property: var(--dark-color-ts-property);
+ --color-ts-method: var(--dark-color-ts-method);
+ --color-ts-call-signature: var(--dark-color-ts-call-signature);
+ --color-ts-index-signature: var(--dark-color-ts-index-signature);
+ --color-ts-constructor-signature: var(
+ --dark-color-ts-constructor-signature
+ );
+ --color-ts-parameter: var(--dark-color-ts-parameter);
+ --color-ts-type-parameter: var(--dark-color-ts-type-parameter);
+ --color-ts-accessor: var(--dark-color-ts-accessor);
+ --color-ts-get-signature: var(--dark-color-ts-get-signature);
+ --color-ts-set-signature: var(--dark-color-ts-set-signature);
+ --color-ts-type-alias: var(--dark-color-ts-type-alias);
+
+ --external-icon: var(--dark-external-icon);
+ --color-scheme: var(--dark-color-scheme);
+}
+
+.always-visible,
+.always-visible .tsd-signatures {
+ display: inherit !important;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ line-height: 1.2;
+}
+
+h1 > a,
+h2 > a,
+h3 > a,
+h4 > a,
+h5 > a,
+h6 > a {
+ text-decoration: none;
+ color: var(--color-text);
+}
+
+h1 {
+ font-size: 1.875rem;
+ margin: 0.67rem 0;
+}
+
+h2 {
+ font-size: 1.5rem;
+ margin: 0.83rem 0;
+}
+
+h3 {
+ font-size: 1.25rem;
+ margin: 1rem 0;
+}
+
+h4 {
+ font-size: 1.05rem;
+ margin: 1.33rem 0;
+}
+
+h5 {
+ font-size: 1rem;
+ margin: 1.5rem 0;
+}
+
+h6 {
+ font-size: 0.875rem;
+ margin: 2.33rem 0;
+}
+
+.uppercase {
+ text-transform: uppercase;
+}
+
+dl,
+menu,
+ol,
+ul {
+ margin: 1em 0;
+}
+
+dd {
+ margin: 0 0 0 40px;
+}
+
+.container {
+ max-width: 1700px;
+ padding: 0 2rem;
+}
+
+/* Footer */
+.tsd-generator {
+ border-top: 1px solid var(--color-accent);
+ padding-top: 1rem;
+ padding-bottom: 1rem;
+ max-height: 3.5rem;
+}
+
+.tsd-generator > p {
+ margin-top: 0;
+ margin-bottom: 0;
+ padding: 0 1rem;
+}
+
+.container-main {
+ margin: 0 auto;
+ /* toolbar, footer, margin */
+ min-height: calc(100vh - 41px - 56px - 4rem);
+}
+
+@keyframes fade-in {
+ from {
+ opacity: 0;
+ }
+ to {
+ opacity: 1;
+ }
+}
+@keyframes fade-out {
+ from {
+ opacity: 1;
+ visibility: visible;
+ }
+ to {
+ opacity: 0;
+ }
+}
+@keyframes fade-in-delayed {
+ 0% {
+ opacity: 0;
+ }
+ 33% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
+@keyframes fade-out-delayed {
+ 0% {
+ opacity: 1;
+ visibility: visible;
+ }
+ 66% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 0;
+ }
+}
+@keyframes pop-in-from-right {
+ from {
+ transform: translate(100%, 0);
+ }
+ to {
+ transform: translate(0, 0);
+ }
+}
+@keyframes pop-out-to-right {
+ from {
+ transform: translate(0, 0);
+ visibility: visible;
+ }
+ to {
+ transform: translate(100%, 0);
+ }
+}
+body {
+ background: var(--color-background);
+ font-family: "Segoe UI", sans-serif;
+ font-size: 16px;
+ color: var(--color-text);
+}
+
+a {
+ color: var(--color-link);
+ text-decoration: none;
+}
+a:hover {
+ text-decoration: underline;
+}
+a.external[target="_blank"] {
+ background-image: var(--external-icon);
+ background-position: top 3px right;
+ background-repeat: no-repeat;
+ padding-right: 13px;
+}
+
+code,
+pre {
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+ padding: 0.2em;
+ margin: 0;
+ font-size: 0.875rem;
+ border-radius: 0.8em;
+}
+
+pre {
+ position: relative;
+ white-space: pre;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ padding: 10px;
+ border: 1px solid var(--color-accent);
+}
+pre code {
+ padding: 0;
+ font-size: 100%;
+}
+pre > button {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ opacity: 0;
+ transition: opacity 0.1s;
+ box-sizing: border-box;
+}
+pre:hover > button,
+pre > button.visible {
+ opacity: 1;
+}
+
+blockquote {
+ margin: 1em 0;
+ padding-left: 1em;
+ border-left: 4px solid gray;
+}
+
+.tsd-typography {
+ line-height: 1.333em;
+}
+.tsd-typography ul {
+ list-style: square;
+ padding: 0 0 0 20px;
+ margin: 0;
+}
+.tsd-typography h4,
+.tsd-typography .tsd-index-panel h3,
+.tsd-index-panel .tsd-typography h3,
+.tsd-typography h5,
+.tsd-typography h6 {
+ font-size: 1em;
+ margin: 0;
+}
+.tsd-typography h5,
+.tsd-typography h6 {
+ font-weight: normal;
+}
+.tsd-typography p,
+.tsd-typography ul,
+.tsd-typography ol {
+ margin: 1em 0;
+}
+
+.tsd-breadcrumb {
+ margin: 0;
+ padding: 0;
+ color: var(--color-text-aside);
+}
+.tsd-breadcrumb a {
+ color: var(--color-text-aside);
+ text-decoration: none;
+}
+.tsd-breadcrumb a:hover {
+ text-decoration: underline;
+}
+.tsd-breadcrumb li {
+ display: inline;
+}
+.tsd-breadcrumb li:after {
+ content: " / ";
+}
+
+.tsd-comment-tags {
+ display: flex;
+ flex-direction: column;
+}
+dl.tsd-comment-tag-group {
+ display: flex;
+ align-items: center;
+ overflow: hidden;
+ margin: 0.5em 0;
+}
+dl.tsd-comment-tag-group dt {
+ display: flex;
+ margin-right: 0.5em;
+ font-size: 0.875em;
+ font-weight: normal;
+}
+dl.tsd-comment-tag-group dd {
+ margin: 0;
+}
+code.tsd-tag {
+ padding: 0.25em 0.4em;
+ border: 0.1em solid var(--color-accent);
+ margin-right: 0.25em;
+ font-size: 70%;
+}
+h1 code.tsd-tag:first-of-type {
+ margin-left: 0.25em;
+}
+
+dl.tsd-comment-tag-group dd:before,
+dl.tsd-comment-tag-group dd:after {
+ content: " ";
+}
+dl.tsd-comment-tag-group dd pre,
+dl.tsd-comment-tag-group dd:after {
+ clear: both;
+}
+dl.tsd-comment-tag-group p {
+ margin: 0;
+}
+
+.tsd-panel.tsd-comment .lead {
+ font-size: 1.1em;
+ line-height: 1.333em;
+ margin-bottom: 2em;
+}
+.tsd-panel.tsd-comment .lead:last-child {
+ margin-bottom: 0;
+}
+
+.tsd-filter-visibility h4 {
+ font-size: 1rem;
+ padding-top: 0.75rem;
+ padding-bottom: 0.5rem;
+ margin: 0;
+}
+.tsd-filter-item:not(:last-child) {
+ margin-bottom: 0.5rem;
+}
+.tsd-filter-input {
+ display: flex;
+ width: fit-content;
+ width: -moz-fit-content;
+ align-items: center;
+ user-select: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ cursor: pointer;
+}
+.tsd-filter-input input[type="checkbox"] {
+ cursor: pointer;
+ position: absolute;
+ width: 1.5em;
+ height: 1.5em;
+ opacity: 0;
+}
+.tsd-filter-input input[type="checkbox"]:disabled {
+ pointer-events: none;
+}
+.tsd-filter-input svg {
+ cursor: pointer;
+ width: 1.5em;
+ height: 1.5em;
+ margin-right: 0.5em;
+ border-radius: 0.33em;
+ /* Leaving this at full opacity breaks event listeners on Firefox.
+ Don't remove unless you know what you're doing. */
+ opacity: 0.99;
+}
+.tsd-filter-input input[type="checkbox"]:focus + svg {
+ transform: scale(0.95);
+}
+.tsd-filter-input input[type="checkbox"]:focus:not(:focus-visible) + svg {
+ transform: scale(1);
+}
+.tsd-checkbox-background {
+ fill: var(--color-accent);
+}
+input[type="checkbox"]:checked ~ svg .tsd-checkbox-checkmark {
+ stroke: var(--color-text);
+}
+.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-background {
+ fill: var(--color-background);
+ stroke: var(--color-accent);
+ stroke-width: 0.25rem;
+}
+.tsd-filter-input input:disabled ~ svg > .tsd-checkbox-checkmark {
+ stroke: var(--color-accent);
+}
+
+.tsd-theme-toggle {
+ padding-top: 0.75rem;
+}
+.tsd-theme-toggle > h4 {
+ display: inline;
+ vertical-align: middle;
+ margin-right: 0.75rem;
+}
+
+.tsd-hierarchy {
+ list-style: square;
+ margin: 0;
+}
+.tsd-hierarchy .target {
+ font-weight: bold;
+}
+
+.tsd-panel-group.tsd-index-group {
+ margin-bottom: 0;
+}
+.tsd-index-panel .tsd-index-list {
+ list-style: none;
+ line-height: 1.333em;
+ margin: 0;
+ padding: 0.25rem 0 0 0;
+ overflow: hidden;
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ column-gap: 1rem;
+ grid-template-rows: auto;
+}
+@media (max-width: 1024px) {
+ .tsd-index-panel .tsd-index-list {
+ grid-template-columns: repeat(2, 1fr);
+ }
+}
+@media (max-width: 768px) {
+ .tsd-index-panel .tsd-index-list {
+ grid-template-columns: repeat(1, 1fr);
+ }
+}
+.tsd-index-panel .tsd-index-list li {
+ -webkit-page-break-inside: avoid;
+ -moz-page-break-inside: avoid;
+ -ms-page-break-inside: avoid;
+ -o-page-break-inside: avoid;
+ page-break-inside: avoid;
+}
+
+.tsd-flag {
+ display: inline-block;
+ padding: 0.25em 0.4em;
+ border-radius: 4px;
+ color: var(--color-comment-tag-text);
+ background-color: var(--color-comment-tag);
+ text-indent: 0;
+ font-size: 75%;
+ line-height: 1;
+ font-weight: normal;
+}
+
+.tsd-anchor {
+ position: relative;
+ top: -100px;
+}
+
+.tsd-member {
+ position: relative;
+}
+.tsd-member .tsd-anchor + h3 {
+ display: flex;
+ align-items: center;
+ margin-top: 0;
+ margin-bottom: 0;
+ border-bottom: none;
+}
+
+.tsd-navigation.settings {
+ margin: 1rem 0;
+}
+.tsd-navigation > a,
+.tsd-navigation .tsd-accordion-summary {
+ width: calc(100% - 0.5rem);
+}
+.tsd-navigation a,
+.tsd-navigation summary > span,
+.tsd-page-navigation a {
+ display: inline-flex;
+ align-items: center;
+ padding: 0.25rem;
+ color: var(--color-text);
+ text-decoration: none;
+ box-sizing: border-box;
+}
+.tsd-navigation a.current,
+.tsd-page-navigation a.current {
+ background: var(--color-active-menu-item);
+}
+.tsd-navigation a:hover,
+.tsd-page-navigation a:hover {
+ text-decoration: underline;
+}
+.tsd-navigation ul,
+.tsd-page-navigation ul {
+ margin-top: 0;
+ margin-bottom: 0;
+ padding: 0;
+ list-style: none;
+}
+.tsd-navigation li,
+.tsd-page-navigation li {
+ padding: 0;
+ max-width: 100%;
+}
+.tsd-nested-navigation {
+ margin-left: 3rem;
+}
+.tsd-nested-navigation > li > details {
+ margin-left: -1.5rem;
+}
+.tsd-small-nested-navigation {
+ margin-left: 1.5rem;
+}
+.tsd-small-nested-navigation > li > details {
+ margin-left: -1.5rem;
+}
+
+.tsd-nested-navigation > li > a,
+.tsd-nested-navigation > li > span {
+ width: calc(100% - 1.75rem - 0.5rem);
+}
+
+.tsd-page-navigation ul {
+ padding-left: 1.75rem;
+}
+
+#tsd-sidebar-links a {
+ margin-top: 0;
+ margin-bottom: 0.5rem;
+ line-height: 1.25rem;
+}
+#tsd-sidebar-links a:last-of-type {
+ margin-bottom: 0;
+}
+
+a.tsd-index-link {
+ padding: 0.25rem 0 !important;
+ font-size: 1rem;
+ line-height: 1.25rem;
+ display: inline-flex;
+ align-items: center;
+ color: var(--color-text);
+}
+.tsd-accordion-summary {
+ list-style-type: none; /* hide marker on non-safari */
+ outline: none; /* broken on safari, so just hide it */
+}
+.tsd-accordion-summary::-webkit-details-marker {
+ display: none; /* hide marker on safari */
+}
+.tsd-accordion-summary,
+.tsd-accordion-summary a {
+ user-select: none;
+ -moz-user-select: none;
+ -webkit-user-select: none;
+ -ms-user-select: none;
+
+ cursor: pointer;
+}
+.tsd-accordion-summary a {
+ width: calc(100% - 1.5rem);
+}
+.tsd-accordion-summary > * {
+ margin-top: 0;
+ margin-bottom: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+}
+.tsd-index-accordion .tsd-accordion-summary > svg {
+ margin-left: 0.25rem;
+}
+.tsd-index-content > :not(:first-child) {
+ margin-top: 0.75rem;
+}
+.tsd-index-heading {
+ margin-top: 1.5rem;
+ margin-bottom: 0.75rem;
+}
+
+.tsd-kind-icon {
+ margin-right: 0.5rem;
+ width: 1.25rem;
+ height: 1.25rem;
+ min-width: 1.25rem;
+ min-height: 1.25rem;
+}
+.tsd-kind-icon path {
+ transform-origin: center;
+ transform: scale(1.1);
+}
+.tsd-signature > .tsd-kind-icon {
+ margin-right: 0.8rem;
+}
+
+.tsd-panel {
+ margin-bottom: 2.5rem;
+}
+.tsd-panel.tsd-member {
+ margin-bottom: 4rem;
+}
+.tsd-panel:empty {
+ display: none;
+}
+.tsd-panel > h1,
+.tsd-panel > h2,
+.tsd-panel > h3 {
+ margin: 1.5rem -1.5rem 0.75rem -1.5rem;
+ padding: 0 1.5rem 0.75rem 1.5rem;
+}
+.tsd-panel > h1.tsd-before-signature,
+.tsd-panel > h2.tsd-before-signature,
+.tsd-panel > h3.tsd-before-signature {
+ margin-bottom: 0;
+ border-bottom: none;
+}
+
+.tsd-panel-group {
+ margin: 4rem 0;
+}
+.tsd-panel-group.tsd-index-group {
+ margin: 2rem 0;
+}
+.tsd-panel-group.tsd-index-group details {
+ margin: 2rem 0;
+}
+
+#tsd-search {
+ transition: background-color 0.2s;
+}
+#tsd-search .title {
+ position: relative;
+ z-index: 2;
+}
+#tsd-search .field {
+ position: absolute;
+ left: 0;
+ top: 0;
+ right: 2.5rem;
+ height: 100%;
+}
+#tsd-search .field input {
+ box-sizing: border-box;
+ position: relative;
+ top: -50px;
+ z-index: 1;
+ width: 100%;
+ padding: 0 10px;
+ opacity: 0;
+ outline: 0;
+ border: 0;
+ background: transparent;
+ color: var(--color-text);
+}
+#tsd-search .field label {
+ position: absolute;
+ overflow: hidden;
+ right: -40px;
+}
+#tsd-search .field input,
+#tsd-search .title,
+#tsd-toolbar-links a {
+ transition: opacity 0.2s;
+}
+#tsd-search .results {
+ position: absolute;
+ visibility: hidden;
+ top: 40px;
+ width: 100%;
+ margin: 0;
+ padding: 0;
+ list-style: none;
+ box-shadow: 0 0 4px rgba(0, 0, 0, 0.25);
+}
+#tsd-search .results li {
+ padding: 0 10px;
+ background-color: var(--color-background);
+}
+#tsd-search .results li:nth-child(even) {
+ background-color: var(--color-background-secondary);
+}
+#tsd-search .results li.state {
+ display: none;
+}
+#tsd-search .results li.current,
+#tsd-search .results li:hover {
+ background-color: var(--color-accent);
+}
+#tsd-search .results a {
+ display: block;
+}
+#tsd-search .results a:before {
+ top: 10px;
+}
+#tsd-search .results span.parent {
+ color: var(--color-text-aside);
+ font-weight: normal;
+}
+#tsd-search.has-focus {
+ background-color: var(--color-accent);
+}
+#tsd-search.has-focus .field input {
+ top: 0;
+ opacity: 1;
+}
+#tsd-search.has-focus .title,
+#tsd-search.has-focus #tsd-toolbar-links a {
+ z-index: 0;
+ opacity: 0;
+}
+#tsd-search.has-focus .results {
+ visibility: visible;
+}
+#tsd-search.loading .results li.state.loading {
+ display: block;
+}
+#tsd-search.failure .results li.state.failure {
+ display: block;
+}
+
+#tsd-toolbar-links {
+ position: absolute;
+ top: 0;
+ right: 2rem;
+ height: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: flex-end;
+}
+#tsd-toolbar-links a {
+ margin-left: 1.5rem;
+}
+#tsd-toolbar-links a:hover {
+ text-decoration: underline;
+}
+
+.tsd-signature {
+ margin: 0 0 1rem 0;
+ padding: 1rem 0.5rem;
+ border: 1px solid var(--color-accent);
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+ font-size: 14px;
+ overflow-x: auto;
+}
+
+.tsd-signature-symbol {
+ color: var(--color-text-aside);
+ font-weight: normal;
+}
+
+.tsd-signature-type {
+ font-style: italic;
+ font-weight: normal;
+}
+
+.tsd-signatures {
+ padding: 0;
+ margin: 0 0 1em 0;
+ list-style-type: none;
+}
+.tsd-signatures .tsd-signature {
+ margin: 0;
+ border-color: var(--color-accent);
+ border-width: 1px 0;
+ transition: background-color 0.1s;
+}
+.tsd-description .tsd-signatures .tsd-signature {
+ border-width: 1px;
+}
+
+ul.tsd-parameter-list,
+ul.tsd-type-parameter-list {
+ list-style: square;
+ margin: 0;
+ padding-left: 20px;
+}
+ul.tsd-parameter-list > li.tsd-parameter-signature,
+ul.tsd-type-parameter-list > li.tsd-parameter-signature {
+ list-style: none;
+ margin-left: -20px;
+}
+ul.tsd-parameter-list h5,
+ul.tsd-type-parameter-list h5 {
+ font-size: 16px;
+ margin: 1em 0 0.5em 0;
+}
+.tsd-sources {
+ margin-top: 1rem;
+ font-size: 0.875em;
+}
+.tsd-sources a {
+ color: var(--color-text-aside);
+ text-decoration: underline;
+}
+.tsd-sources ul {
+ list-style: none;
+ padding: 0;
+}
+
+.tsd-page-toolbar {
+ position: sticky;
+ z-index: 1;
+ top: 0;
+ left: 0;
+ width: 100%;
+ color: var(--color-text);
+ background: var(--color-background-secondary);
+ border-bottom: 1px var(--color-accent) solid;
+ transition: transform 0.3s ease-in-out;
+}
+.tsd-page-toolbar a {
+ color: var(--color-text);
+ text-decoration: none;
+}
+.tsd-page-toolbar a.title {
+ font-weight: bold;
+}
+.tsd-page-toolbar a.title:hover {
+ text-decoration: underline;
+}
+.tsd-page-toolbar .tsd-toolbar-contents {
+ display: flex;
+ justify-content: space-between;
+ height: 2.5rem;
+ margin: 0 auto;
+}
+.tsd-page-toolbar .table-cell {
+ position: relative;
+ white-space: nowrap;
+ line-height: 40px;
+}
+.tsd-page-toolbar .table-cell:first-child {
+ width: 100%;
+}
+.tsd-page-toolbar .tsd-toolbar-icon {
+ box-sizing: border-box;
+ line-height: 0;
+ padding: 12px 0;
+}
+
+.tsd-widget {
+ display: inline-block;
+ overflow: hidden;
+ opacity: 0.8;
+ height: 40px;
+ transition: opacity 0.1s, background-color 0.2s;
+ vertical-align: bottom;
+ cursor: pointer;
+}
+.tsd-widget:hover {
+ opacity: 0.9;
+}
+.tsd-widget.active {
+ opacity: 1;
+ background-color: var(--color-accent);
+}
+.tsd-widget.no-caption {
+ width: 40px;
+}
+.tsd-widget.no-caption:before {
+ margin: 0;
+}
+
+.tsd-widget.options,
+.tsd-widget.menu {
+ display: none;
+}
+input[type="checkbox"] + .tsd-widget:before {
+ background-position: -120px 0;
+}
+input[type="checkbox"]:checked + .tsd-widget:before {
+ background-position: -160px 0;
+}
+
+img {
+ max-width: 100%;
+}
+
+.tsd-anchor-icon {
+ display: inline-flex;
+ align-items: center;
+ margin-left: 0.5rem;
+ vertical-align: middle;
+ color: var(--color-text);
+}
+
+.tsd-anchor-icon svg {
+ width: 1em;
+ height: 1em;
+ visibility: hidden;
+}
+
+.tsd-anchor-link:hover > .tsd-anchor-icon svg {
+ visibility: visible;
+}
+
+.deprecated {
+ text-decoration: line-through;
+}
+
+.warning {
+ padding: 1rem;
+ color: var(--color-warning-text);
+ background: var(--color-background-warning);
+}
+
+.tsd-kind-project {
+ color: var(--color-ts-project);
+}
+.tsd-kind-module {
+ color: var(--color-ts-module);
+}
+.tsd-kind-namespace {
+ color: var(--color-ts-namespace);
+}
+.tsd-kind-enum {
+ color: var(--color-ts-enum);
+}
+.tsd-kind-enum-member {
+ color: var(--color-ts-enum-member);
+}
+.tsd-kind-variable {
+ color: var(--color-ts-variable);
+}
+.tsd-kind-function {
+ color: var(--color-ts-function);
+}
+.tsd-kind-class {
+ color: var(--color-ts-class);
+}
+.tsd-kind-interface {
+ color: var(--color-ts-interface);
+}
+.tsd-kind-constructor {
+ color: var(--color-ts-constructor);
+}
+.tsd-kind-property {
+ color: var(--color-ts-property);
+}
+.tsd-kind-method {
+ color: var(--color-ts-method);
+}
+.tsd-kind-call-signature {
+ color: var(--color-ts-call-signature);
+}
+.tsd-kind-index-signature {
+ color: var(--color-ts-index-signature);
+}
+.tsd-kind-constructor-signature {
+ color: var(--color-ts-constructor-signature);
+}
+.tsd-kind-parameter {
+ color: var(--color-ts-parameter);
+}
+.tsd-kind-type-literal {
+ color: var(--color-ts-type-literal);
+}
+.tsd-kind-type-parameter {
+ color: var(--color-ts-type-parameter);
+}
+.tsd-kind-accessor {
+ color: var(--color-ts-accessor);
+}
+.tsd-kind-get-signature {
+ color: var(--color-ts-get-signature);
+}
+.tsd-kind-set-signature {
+ color: var(--color-ts-set-signature);
+}
+.tsd-kind-type-alias {
+ color: var(--color-ts-type-alias);
+}
+
+/* if we have a kind icon, don't color the text by kind */
+.tsd-kind-icon ~ span {
+ color: var(--color-text);
+}
+
+* {
+ scrollbar-width: thin;
+ scrollbar-color: var(--color-accent) var(--color-icon-background);
+}
+
+*::-webkit-scrollbar {
+ width: 0.75rem;
+}
+
+*::-webkit-scrollbar-track {
+ background: var(--color-icon-background);
+}
+
+*::-webkit-scrollbar-thumb {
+ background-color: var(--color-accent);
+ border-radius: 999rem;
+ border: 0.25rem solid var(--color-icon-background);
+}
+
+/* mobile */
+@media (max-width: 769px) {
+ .tsd-widget.options,
+ .tsd-widget.menu {
+ display: inline-block;
+ }
+
+ .container-main {
+ display: flex;
+ }
+ html .col-content {
+ float: none;
+ max-width: 100%;
+ width: 100%;
+ }
+ html .col-sidebar {
+ position: fixed !important;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ z-index: 1024;
+ top: 0 !important;
+ bottom: 0 !important;
+ left: auto !important;
+ right: 0 !important;
+ padding: 1.5rem 1.5rem 0 0;
+ width: 75vw;
+ visibility: hidden;
+ background-color: var(--color-background);
+ transform: translate(100%, 0);
+ }
+ html .col-sidebar > *:last-child {
+ padding-bottom: 20px;
+ }
+ html .overlay {
+ content: "";
+ display: block;
+ position: fixed;
+ z-index: 1023;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: rgba(0, 0, 0, 0.75);
+ visibility: hidden;
+ }
+
+ .to-has-menu .overlay {
+ animation: fade-in 0.4s;
+ }
+
+ .to-has-menu .col-sidebar {
+ animation: pop-in-from-right 0.4s;
+ }
+
+ .from-has-menu .overlay {
+ animation: fade-out 0.4s;
+ }
+
+ .from-has-menu .col-sidebar {
+ animation: pop-out-to-right 0.4s;
+ }
+
+ .has-menu body {
+ overflow: hidden;
+ }
+ .has-menu .overlay {
+ visibility: visible;
+ }
+ .has-menu .col-sidebar {
+ visibility: visible;
+ transform: translate(0, 0);
+ display: flex;
+ flex-direction: column;
+ gap: 1.5rem;
+ max-height: 100vh;
+ padding: 1rem 2rem;
+ }
+ .has-menu .tsd-navigation {
+ max-height: 100%;
+ }
+}
+
+/* one sidebar */
+@media (min-width: 770px) {
+ .container-main {
+ display: grid;
+ grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
+ grid-template-areas: "sidebar content";
+ margin: 2rem auto;
+ }
+
+ .col-sidebar {
+ grid-area: sidebar;
+ }
+ .col-content {
+ grid-area: content;
+ padding: 0 1rem;
+ }
+}
+@media (min-width: 770px) and (max-width: 1399px) {
+ .col-sidebar {
+ max-height: calc(100vh - 2rem - 42px);
+ overflow: auto;
+ position: sticky;
+ top: 42px;
+ padding-top: 1rem;
+ }
+ .site-menu {
+ margin-top: 1rem;
+ }
+}
+
+/* two sidebars */
+@media (min-width: 1200px) {
+ .container-main {
+ grid-template-columns: minmax(0, 1fr) minmax(0, 2.5fr) minmax(0, 20rem);
+ grid-template-areas: "sidebar content toc";
+ }
+
+ .col-sidebar {
+ display: contents;
+ }
+
+ .page-menu {
+ grid-area: toc;
+ padding-left: 1rem;
+ }
+ .site-menu {
+ grid-area: sidebar;
+ }
+
+ .site-menu {
+ margin-top: 1rem 0;
+ }
+
+ .page-menu,
+ .site-menu {
+ max-height: calc(100vh - 2rem - 42px);
+ overflow: auto;
+ position: sticky;
+ top: 42px;
+ }
+}
diff --git a/node_modules/typedoc/tsdoc.json b/node_modules/typedoc/tsdoc.json
new file mode 100644
index 0000000..86803e0
--- /dev/null
+++ b/node_modules/typedoc/tsdoc.json
@@ -0,0 +1,95 @@
+{
+ "$schema": "https://developer.microsoft.com/json-schemas/tsdoc/v0/tsdoc.schema.json",
+ "noStandardTags": false,
+ "tagDefinitions": [
+ {
+ "tagName": "@module",
+ "syntaxKind": "block"
+ },
+ {
+ "tagName": "@typedef",
+ "syntaxKind": "block"
+ },
+ {
+ "tagName": "@callback",
+ "syntaxKind": "block"
+ },
+ {
+ "tagName": "@prop",
+ "syntaxKind": "block",
+ "allowMultiple": true
+ },
+ {
+ "tagName": "@property",
+ "syntaxKind": "block",
+ "allowMultiple": true
+ },
+ // Don't include @inheritDoc, because the @microsoft/tsdoc-config parser blows up
+ // if the standard @inheritDoc inline tag is also defined here.
+ {
+ "tagName": "@group",
+ "syntaxKind": "block",
+ "allowMultiple": true
+ },
+ {
+ "tagName": "@category",
+ "syntaxKind": "block",
+ "allowMultiple": true
+ },
+ {
+ "tagName": "@hidden",
+ "syntaxKind": "modifier"
+ },
+ {
+ "tagName": "@ignore",
+ "syntaxKind": "modifier"
+ },
+ {
+ "tagName": "@enum",
+ "syntaxKind": "modifier"
+ },
+ {
+ "tagName": "@event",
+ "syntaxKind": "modifier"
+ },
+ {
+ "tagName": "@template",
+ "syntaxKind": "block",
+ "allowMultiple": true
+ },
+ {
+ "tagName": "@linkcode",
+ "syntaxKind": "inline",
+ "allowMultiple": true
+ },
+ {
+ "tagName": "@linkplain",
+ "syntaxKind": "block",
+ "allowMultiple": true
+ },
+ {
+ "tagName": "@private",
+ "syntaxKind": "modifier"
+ },
+ {
+ "tagName": "@protected",
+ "syntaxKind": "modifier"
+ },
+ {
+ "tagName": "@satisfies",
+ "syntaxKind": "block"
+ },
+ {
+ "tagName": "@overload",
+ "syntaxKind": "modifier"
+ },
+ {
+ "tagName": "@namespace",
+ "syntaxKind": "modifier"
+ },
+ {
+ "tagName": "@interface",
+ "syntaxKind": "modifier"
+ }
+ ]
+}
diff --git a/node_modules/vscode-oniguruma/LICENSE.txt b/node_modules/vscode-oniguruma/LICENSE.txt
new file mode 100644
index 0000000..a6cc74e
--- /dev/null
+++ b/node_modules/vscode-oniguruma/LICENSE.txt
@@ -0,0 +1,23 @@
+VS Code Oniguruma Bindings
+
+MIT License
+
+Copyright (c) Microsoft Corporation.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/vscode-oniguruma/NOTICES.txt b/node_modules/vscode-oniguruma/NOTICES.txt
new file mode 100644
index 0000000..e87584a
--- /dev/null
+++ b/node_modules/vscode-oniguruma/NOTICES.txt
@@ -0,0 +1,41 @@
+THIRD-PARTY SOFTWARE NOTICES AND INFORMATION
+Do Not Translate or Localize
+
+This project incorporates material from the project(s) listed below (collectively, “Third Party Code”).
+Microsoft is not the original author of the Third Party Code. The original copyright notice and license
+under which Microsoft received such Third Party Code are set out below. This Third Party Code is licensed
+to you under their original license terms set forth below. Microsoft reserves all other rights not
+expressly granted, whether by implication, estoppel or otherwise.
+
+The following files/folders contain third party software:
+
+=========================================================================================================
+deps/oniguruma/ --- oniguruma version 6.9.5_rev1 https://github.com/kkos/oniguruma/tree/v6.9.5_rev1
+---------------------------------------------------------------------------------------------------------
+
+Oniguruma LICENSE
+-----------------
+
+Copyright (c) 2002-2020 K.Kosako <kkosako0@gmail.com>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
diff --git a/node_modules/vscode-oniguruma/README.md b/node_modules/vscode-oniguruma/README.md
new file mode 100644
index 0000000..a7fd048
--- /dev/null
+++ b/node_modules/vscode-oniguruma/README.md
@@ -0,0 +1,52 @@
+# VS Code Oniguruma
+
+Oniguruma bindings for VS Code. This library is used in VS Code and is not intended to grow to have general Oniguruma WASM bindings.
+
+## Installing
+
+```sh
+npm install vscode-oniguruma
+```
+
+## API doc
+
+See [the main.d.ts file](./main.d.ts)
+
+## Developing
+
+* Clone the repository.
+* Run `git submodule init`.
+* Run `git submodule update`.
+* Open the repository using the `Remote - Containers` extension, which will automatically create a docker container with the correct emscripten version and environment for building the WASM.
+* Run `npm install`.
+* Compile the oniguruma library with `npm run build-onig` (needed just once).
+* Compile the `.wasm` with `npm run build-wasm` (needed every time the `onig.cc` file is changed).
+* Compile the `.js` with `npm run build-tsc` or watch with `npm run watch-tsc` (needed every time the `.ts` files are changed).
+* Package for releasing as UMD with `npm run package`
+
+## Code of Conduct
+
+This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
+
+## Contributing
+
+This project welcomes contributions and suggestions. Most contributions require you to agree to a
+Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
+the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
+
+When you submit a pull request, a CLA bot will automatically determine whether you need to provide
+a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions
+provided by the bot. You will only need to do this once across all repos using our CLA.
+
+This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
+For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
+contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
+
+## License
+[MIT](https://github.com/microsoft/vscode-oniguruma/blob/master/LICENSE.txt)
+
+This project incorporates material from other projects. Please see [NOTICES.txt](https://github.com/microsoft/vscode-oniguruma/blob/master/NOTICES.txt)
+
+## Thank you
+
+Special thank you to [@lieene](https://github.com/lieene) for transfering the npm package name `vscode-oniguruma` to this project.
diff --git a/node_modules/vscode-oniguruma/SECURITY.md b/node_modules/vscode-oniguruma/SECURITY.md
new file mode 100644
index 0000000..a050f36
--- /dev/null
+++ b/node_modules/vscode-oniguruma/SECURITY.md
@@ -0,0 +1,41 @@
+<!-- BEGIN MICROSOFT SECURITY.MD V0.0.5 BLOCK -->
+
+## Security
+
+Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
+
+If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below.
+
+## Reporting Security Issues
+
+**Please do not report security vulnerabilities through public GitHub issues.**
+
+Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
+
+If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
+
+You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
+
+Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
+
+ * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
+ * Full paths of source file(s) related to the manifestation of the issue
+ * The location of the affected source code (tag/branch/commit or direct URL)
+ * Any special configuration required to reproduce the issue
+ * Step-by-step instructions to reproduce the issue
+ * Proof-of-concept or exploit code (if possible)
+ * Impact of the issue, including how an attacker might exploit the issue
+
+This information will help us triage your report more quickly.
+
+If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
+
+## Preferred Languages
+
+We prefer all communications to be in English.
+
+## Policy
+
+Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
+
+<!-- END MICROSOFT SECURITY.MD BLOCK -->
diff --git a/node_modules/vscode-oniguruma/main.d.ts b/node_modules/vscode-oniguruma/main.d.ts
new file mode 100644
index 0000000..e0f40be
--- /dev/null
+++ b/node_modules/vscode-oniguruma/main.d.ts
@@ -0,0 +1,68 @@
+/*---------------------------------------------------------
+ * Copyright (C) Microsoft Corporation. All rights reserved.
+ *--------------------------------------------------------*/
+
+export interface WebAssemblyInstantiator {
+ (importObject: Record<string, Record<string, WebAssembly.ImportValue>> | undefined): Promise<WebAssembly.WebAssemblyInstantiatedSource>;
+}
+interface ICommonOptions {
+ print?(str: string): void;
+}
+interface IInstantiatorOptions extends ICommonOptions {
+ instantiator: WebAssemblyInstantiator;
+}
+interface IDataOptions extends ICommonOptions {
+ data: ArrayBuffer | Response;
+}
+export type IOptions = IInstantiatorOptions | IDataOptions;
+
+export function loadWASM(options: IOptions): Promise<void>;
+export function loadWASM(data: ArrayBuffer | Response): Promise<void>;
+export function createOnigString(str: string): OnigString;
+export function createOnigScanner(patterns: string[]): OnigScanner;
+export function setDefaultDebugCall(defaultDebugCall: boolean): void;
+
+export class OnigString {
+ readonly content: string;
+ constructor(content: string);
+ public dispose(): void;
+}
+
+export const enum FindOption {
+ None = 0,
+ /**
+ * equivalent of ONIG_OPTION_NOT_BEGIN_STRING: (str) isn't considered as begin of string (* fail \A)
+ */
+ NotBeginString = 1,
+ /**
+ * equivalent of ONIG_OPTION_NOT_END_STRING: (end) isn't considered as end of string (* fail \z, \Z)
+ */
+ NotEndString = 2,
+ /**
+ * equivalent of ONIG_OPTION_NOT_BEGIN_POSITION: (start) isn't considered as start position of search (* fail \G)
+ */
+ NotBeginPosition = 4,
+ /**
+ * used for debugging purposes.
+ */
+ DebugCall = 8,
+}
+
+export class OnigScanner {
+ constructor(patterns: string[]);
+ public dispose(): void;
+ public findNextMatchSync(string: string | OnigString, startPosition: number, options: number): IOnigMatch | null;
+ public findNextMatchSync(string: string | OnigString, startPosition: number, debugCall: boolean): IOnigMatch | null;
+ public findNextMatchSync(string: string | OnigString, startPosition: number): IOnigMatch | null;
+}
+
+export interface IOnigCaptureIndex {
+ start: number
+ end: number
+ length: number
+}
+
+export interface IOnigMatch {
+ index: number
+ captureIndices: IOnigCaptureIndex[]
+}
diff --git a/node_modules/vscode-oniguruma/package.json b/node_modules/vscode-oniguruma/package.json
new file mode 100644
index 0000000..eafdca2
--- /dev/null
+++ b/node_modules/vscode-oniguruma/package.json
@@ -0,0 +1,35 @@
+{
+ "name": "vscode-oniguruma",
+ "version": "1.7.0",
+ "description": "VSCode oniguruma bindings",
+ "author": {
+ "name": "Microsoft Corporation"
+ },
+ "main": "release/main.js",
+ "typings": "main.d.ts",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/microsoft/vscode-oniguruma"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/microsoft/vscode-oniguruma/issues"
+ },
+ "scripts": {
+ "test": "mocha --ui=tdd ./out/test/index.test.js",
+ "build-onig": "cd deps/oniguruma && autoreconf -vfi && emconfigure ./configure && make clean && emmake make",
+ "build-wasm": "./scripts/build.sh",
+ "build-tsc": "tsc -p tsconfig.json",
+ "watch-tsc": "tsc -w -p tsconfig.json",
+ "package": "npm run build-tsc && webpack && node ./scripts/cp ./out/onig.wasm ./release/onig.wasm",
+ "prepublishOnly": "npm run package"
+ },
+ "devDependencies": {
+ "@types/mocha": "^10.0.0",
+ "@types/node": "^18.11.9",
+ "mocha": "^10.1.0",
+ "typescript": "^4.9.3",
+ "webpack": "^5.75.0",
+ "webpack-cli": "^5.0.0"
+ }
+}
diff --git a/node_modules/vscode-oniguruma/release/main.js b/node_modules/vscode-oniguruma/release/main.js
new file mode 100644
index 0000000..e2a6a4e
--- /dev/null
+++ b/node_modules/vscode-oniguruma/release/main.js
@@ -0,0 +1 @@
+!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.onig=n():t.onig=n()}(this,(()=>{return t={770:function(t,n,e){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(n,"__esModule",{value:!0}),n.setDefaultDebugCall=n.createOnigScanner=n.createOnigString=n.loadWASM=n.OnigScanner=n.OnigString=void 0;const i=r(e(418));let o=null,a=!1;class f{static _utf8ByteLength(t){let n=0;for(let e=0,r=t.length;e<r;e++){const i=t.charCodeAt(e);let o=i,a=!1;if(i>=55296&&i<=56319&&e+1<r){const n=t.charCodeAt(e+1);n>=56320&&n<=57343&&(o=65536+(i-55296<<10)|n-56320,a=!0)}n+=o<=127?1:o<=2047?2:o<=65535?3:4,a&&e++}return n}constructor(t){const n=t.length,e=f._utf8ByteLength(t),r=e!==n,i=r?new Uint32Array(n+1):null;r&&(i[n]=e);const o=r?new Uint32Array(e+1):null;r&&(o[e]=n);const a=new Uint8Array(e);let s=0;for(let e=0;e<n;e++){const f=t.charCodeAt(e);let u=f,c=!1;if(f>=55296&&f<=56319&&e+1<n){const n=t.charCodeAt(e+1);n>=56320&&n<=57343&&(u=65536+(f-55296<<10)|n-56320,c=!0)}r&&(i[e]=s,c&&(i[e+1]=s),u<=127?o[s+0]=e:u<=2047?(o[s+0]=e,o[s+1]=e):u<=65535?(o[s+0]=e,o[s+1]=e,o[s+2]=e):(o[s+0]=e,o[s+1]=e,o[s+2]=e,o[s+3]=e)),u<=127?a[s++]=u:u<=2047?(a[s++]=192|(1984&u)>>>6,a[s++]=128|(63&u)>>>0):u<=65535?(a[s++]=224|(61440&u)>>>12,a[s++]=128|(4032&u)>>>6,a[s++]=128|(63&u)>>>0):(a[s++]=240|(1835008&u)>>>18,a[s++]=128|(258048&u)>>>12,a[s++]=128|(4032&u)>>>6,a[s++]=128|(63&u)>>>0),c&&e++}this.utf16Length=n,this.utf8Length=e,this.utf16Value=t,this.utf8Value=a,this.utf16OffsetToUtf8=i,this.utf8OffsetToUtf16=o}createString(t){const n=t._omalloc(this.utf8Length);return t.HEAPU8.set(this.utf8Value,n),n}}class s{constructor(t){if(this.id=++s.LAST_ID,!o)throw new Error("Must invoke loadWASM first.");this._onigBinding=o,this.content=t;const n=new f(t);this.utf16Length=n.utf16Length,this.utf8Length=n.utf8Length,this.utf16OffsetToUtf8=n.utf16OffsetToUtf8,this.utf8OffsetToUtf16=n.utf8OffsetToUtf16,this.utf8Length<1e4&&!s._sharedPtrInUse?(s._sharedPtr||(s._sharedPtr=o._omalloc(1e4)),s._sharedPtrInUse=!0,o.HEAPU8.set(n.utf8Value,s._sharedPtr),this.ptr=s._sharedPtr):this.ptr=n.createString(o)}convertUtf8OffsetToUtf16(t){return this.utf8OffsetToUtf16?t<0?0:t>this.utf8Length?this.utf16Length:this.utf8OffsetToUtf16[t]:t}convertUtf16OffsetToUtf8(t){return this.utf16OffsetToUtf8?t<0?0:t>this.utf16Length?this.utf8Length:this.utf16OffsetToUtf8[t]:t}dispose(){this.ptr===s._sharedPtr?s._sharedPtrInUse=!1:this._onigBinding._ofree(this.ptr)}}n.OnigString=s,s.LAST_ID=0,s._sharedPtr=0,s._sharedPtrInUse=!1;class u{constructor(t){if(!o)throw new Error("Must invoke loadWASM first.");const n=[],e=[];for(let r=0,i=t.length;r<i;r++){const i=new f(t[r]);n[r]=i.createString(o),e[r]=i.utf8Length}const r=o._omalloc(4*t.length);o.HEAPU32.set(n,r/4);const i=o._omalloc(4*t.length);o.HEAPU32.set(e,i/4);const a=o._createOnigScanner(r,i,t.length);for(let e=0,r=t.length;e<r;e++)o._ofree(n[e]);o._ofree(i),o._ofree(r),0===a&&function(t){throw new Error(t.UTF8ToString(t._getLastOnigError()))}(o),this._onigBinding=o,this._ptr=a}dispose(){this._onigBinding._freeOnigScanner(this._ptr)}findNextMatchSync(t,n,e){let r=a,i=0;if("number"==typeof e?(8&e&&(r=!0),i=e):"boolean"==typeof e&&(r=e),"string"==typeof t){t=new s(t);const e=this._findNextMatchSync(t,n,r,i);return t.dispose(),e}return this._findNextMatchSync(t,n,r,i)}_findNextMatchSync(t,n,e,r){const i=this._onigBinding;let o;if(o=e?i._findNextOnigScannerMatchDbg(this._ptr,t.id,t.ptr,t.utf8Length,t.convertUtf16OffsetToUtf8(n),r):i._findNextOnigScannerMatch(this._ptr,t.id,t.ptr,t.utf8Length,t.convertUtf16OffsetToUtf8(n),r),0===o)return null;const a=i.HEAPU32;let f=o/4;const s=a[f++],u=a[f++];let c=[];for(let n=0;n<u;n++){const e=t.convertUtf8OffsetToUtf16(a[f++]),r=t.convertUtf8OffsetToUtf16(a[f++]);c[n]={start:e,end:r,length:r-e}}return{index:s,captureIndices:c}}}n.OnigScanner=u;let c=!1,l=null;n.loadWASM=function(t){if(c)return l;let n,e,r,a;if(c=!0,function(t){return"function"==typeof t.instantiator}(t))n=t.instantiator,e=t.print;else{let r;!function(t){return void 0!==t.data}(t)?r=t:(r=t.data,e=t.print),n=function(t){return"undefined"!=typeof Response&&t instanceof Response}(r)?"function"==typeof WebAssembly.instantiateStreaming?function(t){return n=>WebAssembly.instantiateStreaming(t,n)}(r):function(t){return async n=>{const e=await t.arrayBuffer();return WebAssembly.instantiate(e,n)}}(r):function(t){return n=>WebAssembly.instantiate(t,n)}(r)}return l=new Promise(((t,n)=>{r=t,a=n})),function(t,n,e,r){(0,i.default)({print:n,instantiateWasm:(n,e)=>{if("undefined"==typeof performance){const t=()=>Date.now();n.env.emscripten_get_now=t,n.wasi_snapshot_preview1.emscripten_get_now=t}return t(n).then((t=>e(t.instance)),r),{}}}).then((t=>{o=t,e()}))}(n,e,r,a),l},n.createOnigString=function(t){return new s(t)},n.createOnigScanner=function(t){return new u(t)},n.setDefaultDebugCall=function(t){a=t}},418:t=>{var n=("undefined"!=typeof document&&document.currentScript&&document.currentScript.src,function(t){var n,e,r=void 0!==(t=t||{})?t:{};r.ready=new Promise((function(t,r){n=t,e=r}));var i,o=Object.assign({},r),a=[],f=!1,s=!1,u=!0,c="";function l(t){return r.locateFile?r.locateFile(t,c):c+t}u&&(i=function(t){let n;return"function"==typeof readbuffer?new Uint8Array(readbuffer(t)):(n=read(t,"binary"),m("object"==typeof n),n)},"undefined"!=typeof scriptArgs?a=scriptArgs:void 0!==arguments&&(a=arguments),"undefined"!=typeof onig_print&&("undefined"==typeof console&&(console={}),console.log=onig_print,console.warn=console.error="undefined"!=typeof printErr?printErr:onig_print));var h,p,d=r.print||console.log.bind(console),g=r.printErr||console.warn.bind(console);Object.assign(r,o),o=null,r.arguments&&(a=r.arguments),r.thisProgram&&r.thisProgram,r.quit&&r.quit,r.wasmBinary&&(h=r.wasmBinary),r.noExitRuntime,"object"!=typeof WebAssembly&&k("no native wasm support detected");var _=!1;function m(t,n){t||k(n)}var y,w,S,v="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function A(t,n,e){for(var r=n+e,i=n;t[i]&&!(i>=r);)++i;if(i-n>16&&t.buffer&&v)return v.decode(t.subarray(n,i));for(var o="";n<i;){var a=t[n++];if(128&a){var f=63&t[n++];if(192!=(224&a)){var s=63&t[n++];if((a=224==(240&a)?(15&a)<<12|f<<6|s:(7&a)<<18|f<<12|s<<6|63&t[n++])<65536)o+=String.fromCharCode(a);else{var u=a-65536;o+=String.fromCharCode(55296|u>>10,56320|1023&u)}}else o+=String.fromCharCode((31&a)<<6|f)}else o+=String.fromCharCode(a)}return o}function b(t,n){return t?A(w,t,n):""}function O(t){y=t,r.HEAP8=new Int8Array(t),r.HEAP16=new Int16Array(t),r.HEAP32=new Int32Array(t),r.HEAPU8=w=new Uint8Array(t),r.HEAPU16=new Uint16Array(t),r.HEAPU32=S=new Uint32Array(t),r.HEAPF32=new Float32Array(t),r.HEAPF64=new Float64Array(t)}r.INITIAL_MEMORY;var U=[],P=[],R=[];function x(){if(r.preRun)for("function"==typeof r.preRun&&(r.preRun=[r.preRun]);r.preRun.length;)M(r.preRun.shift());G(U)}function T(){G(P)}function E(){if(r.postRun)for("function"==typeof r.postRun&&(r.postRun=[r.postRun]);r.postRun.length;)I(r.postRun.shift());G(R)}function M(t){U.unshift(t)}function L(t){P.unshift(t)}function I(t){R.unshift(t)}var W=0,D=null,C=null;function N(t){W++,r.monitorRunDependencies&&r.monitorRunDependencies(W)}function j(t){if(W--,r.monitorRunDependencies&&r.monitorRunDependencies(W),0==W&&(null!==D&&(clearInterval(D),D=null),C)){var n=C;C=null,n()}}function k(t){r.onAbort&&r.onAbort(t),g(t="Aborted("+t+")"),_=!0,t+=". Build with -sASSERTIONS for more info.";var n=new WebAssembly.RuntimeError(t);throw e(n),n}var B,H,F="data:application/octet-stream;base64,";function V(t){return t.startsWith(F)}function z(t){try{if(t==B&&h)return new Uint8Array(h);if(i)return i(t);throw"both async and sync fetching of the wasm failed"}catch(t){k(t)}}function q(){return h||!f&&!s||"function"!=typeof fetch?Promise.resolve().then((function(){return z(B)})):fetch(B,{credentials:"same-origin"}).then((function(t){if(!t.ok)throw"failed to load wasm binary file at '"+B+"'";return t.arrayBuffer()})).catch((function(){return z(B)}))}function Y(){var t={env:nt,wasi_snapshot_preview1:nt};function n(t,n){var e=t.exports;r.asm=e,O((p=r.asm.memory).buffer),r.asm.__indirect_function_table,L(r.asm.__wasm_call_ctors),j()}function i(t){n(t.instance)}function o(n){return q().then((function(n){return WebAssembly.instantiate(n,t)})).then((function(t){return t})).then(n,(function(t){g("failed to asynchronously prepare wasm: "+t),k(t)}))}if(N(),r.instantiateWasm)try{return r.instantiateWasm(t,n)}catch(t){g("Module.instantiateWasm callback failed with error: "+t),e(t)}return(h||"function"!=typeof WebAssembly.instantiateStreaming||V(B)||"function"!=typeof fetch?o(i):fetch(B,{credentials:"same-origin"}).then((function(n){return WebAssembly.instantiateStreaming(n,t).then(i,(function(t){return g("wasm streaming compile failed: "+t),g("falling back to ArrayBuffer instantiation"),o(i)}))}))).catch(e),{}}function G(t){for(;t.length>0;)t.shift()(r)}function J(t,n,e){w.copyWithin(t,n,n+e)}function K(t){try{return p.grow(t-y.byteLength+65535>>>16),O(p.buffer),1}catch(t){}}function Q(t){var n,e=w.length,r=2147483648;if((t>>>=0)>r)return!1;for(var i=1;i<=4;i*=2){var o=e*(1+.2/i);if(o=Math.min(o,t+100663296),K(Math.min(r,(n=Math.max(t,o))+(65536-n%65536)%65536)))return!0}return!1}V(B="onig.wasm")||(B=l(B)),H="undefined"!=typeof dateNow?dateNow:()=>performance.now();var X=[null,[],[]];function Z(t,n){var e=X[t];0===n||10===n?((1===t?d:g)(A(e,0)),e.length=0):e.push(n)}function $(t,n,e,r){for(var i=0,o=0;o<e;o++){var a=S[n>>2],f=S[n+4>>2];n+=8;for(var s=0;s<f;s++)Z(t,w[a+s]);i+=f}return S[r>>2]=i,0}var tt,nt={emscripten_get_now:H,emscripten_memcpy_big:J,emscripten_resize_heap:Q,fd_write:$};function et(t){function e(){tt||(tt=!0,r.calledRun=!0,_||(T(),n(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),E()))}t=t||a,W>0||(x(),W>0||(r.setStatus?(r.setStatus("Running..."),setTimeout((function(){setTimeout((function(){r.setStatus("")}),1),e()}),1)):e()))}if(Y(),r.___wasm_call_ctors=function(){return(r.___wasm_call_ctors=r.asm.__wasm_call_ctors).apply(null,arguments)},r.___errno_location=function(){return(r.___errno_location=r.asm.__errno_location).apply(null,arguments)},r._omalloc=function(){return(r._omalloc=r.asm.omalloc).apply(null,arguments)},r._ofree=function(){return(r._ofree=r.asm.ofree).apply(null,arguments)},r._getLastOnigError=function(){return(r._getLastOnigError=r.asm.getLastOnigError).apply(null,arguments)},r._createOnigScanner=function(){return(r._createOnigScanner=r.asm.createOnigScanner).apply(null,arguments)},r._freeOnigScanner=function(){return(r._freeOnigScanner=r.asm.freeOnigScanner).apply(null,arguments)},r._findNextOnigScannerMatch=function(){return(r._findNextOnigScannerMatch=r.asm.findNextOnigScannerMatch).apply(null,arguments)},r._findNextOnigScannerMatchDbg=function(){return(r._findNextOnigScannerMatchDbg=r.asm.findNextOnigScannerMatchDbg).apply(null,arguments)},r.stackSave=function(){return(r.stackSave=r.asm.stackSave).apply(null,arguments)},r.stackRestore=function(){return(r.stackRestore=r.asm.stackRestore).apply(null,arguments)},r.stackAlloc=function(){return(r.stackAlloc=r.asm.stackAlloc).apply(null,arguments)},r.dynCall_jiji=function(){return(r.dynCall_jiji=r.asm.dynCall_jiji).apply(null,arguments)},r.UTF8ToString=b,C=function t(){tt||et(),tt||(C=t)},r.preInit)for("function"==typeof r.preInit&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return et(),t.ready});t.exports=n}},n={},function e(r){var i=n[r];if(void 0!==i)return i.exports;var o=n[r]={exports:{}};return t[r].call(o.exports,o,o.exports,e),o.exports}(770);var t,n})); \ No newline at end of file
diff --git a/node_modules/vscode-oniguruma/release/onig.wasm b/node_modules/vscode-oniguruma/release/onig.wasm
new file mode 100644
index 0000000..6edbc88
--- /dev/null
+++ b/node_modules/vscode-oniguruma/release/onig.wasm
Binary files differ
diff --git a/node_modules/vscode-textmate/.gitattributes b/node_modules/vscode-textmate/.gitattributes
new file mode 100644
index 0000000..176a458
--- /dev/null
+++ b/node_modules/vscode-textmate/.gitattributes
@@ -0,0 +1 @@
+* text=auto
diff --git a/node_modules/vscode-textmate/.github/workflows/ci.yml b/node_modules/vscode-textmate/.github/workflows/ci.yml
new file mode 100644
index 0000000..ca9b426
--- /dev/null
+++ b/node_modules/vscode-textmate/.github/workflows/ci.yml
@@ -0,0 +1,16 @@
+name: CI
+
+on: [pull_request]
+
+jobs:
+ build:
+ name: CI
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-node@v2
+ with:
+ node-version: 14
+ - run: npm ci
+ - run: npm run compile
+ - run: npm test
diff --git a/node_modules/vscode-textmate/.github/workflows/rich-navigation.yml b/node_modules/vscode-textmate/.github/workflows/rich-navigation.yml
new file mode 100644
index 0000000..c0143eb
--- /dev/null
+++ b/node_modules/vscode-textmate/.github/workflows/rich-navigation.yml
@@ -0,0 +1,31 @@
+name: "Rich Navigation Indexing"
+on:
+ workflow_dispatch:
+ pull_request:
+ push:
+ branches:
+ - main
+ tags:
+ - 'v[0-9]+.[0-9]+.[0-9]+'
+
+jobs:
+ richnav:
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@v2
+
+ - uses: actions/setup-node@v2
+ with:
+ node-version: 14
+
+ - name: Install dependencies
+ run: npm install
+
+ - uses: microsoft/RichCodeNavIndexer@v0.1
+ with:
+ languages: typescript
+ repo-token: ${{ secrets.GITHUB_TOKEN }}
+ typescriptVersion: 0.6.0-next.19
+ configFiles: .lsifrc.json
+ continue-on-error: true
+
diff --git a/node_modules/vscode-textmate/.lsifrc.json b/node_modules/vscode-textmate/.lsifrc.json
new file mode 100644
index 0000000..b7aa9f5
--- /dev/null
+++ b/node_modules/vscode-textmate/.lsifrc.json
@@ -0,0 +1,6 @@
+{
+ "project": "./tsconfig.json",
+ "out": "vscode-textmate.lsif",
+ "source": "./package.json",
+ "package": "./package.json"
+} \ No newline at end of file
diff --git a/node_modules/vscode-textmate/LICENSE.md b/node_modules/vscode-textmate/LICENSE.md
new file mode 100644
index 0000000..5ae193c
--- /dev/null
+++ b/node_modules/vscode-textmate/LICENSE.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Microsoft Corporation
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/vscode-textmate/README.md b/node_modules/vscode-textmate/README.md
new file mode 100644
index 0000000..5cef966
--- /dev/null
+++ b/node_modules/vscode-textmate/README.md
@@ -0,0 +1,130 @@
+# VSCode TextMate [![Build Status](https://dev.azure.com/ms/vscode-textmate/_apis/build/status/microsoft.vscode-textmate?branchName=master)](https://dev.azure.com/ms/vscode-textmate/_build/latest?definitionId=172&branchName=master)
+
+An interpreter for grammar files as defined by TextMate. TextMate grammars use the oniguruma dialect (https://github.com/kkos/oniguruma). Supports loading grammar files from JSON or PLIST format. This library is used in VS Code. Cross - grammar injections are currently not supported.
+
+## Installing
+
+```sh
+npm install vscode-textmate
+```
+
+## Using
+
+```javascript
+const fs = require('fs');
+const path = require('path');
+const vsctm = require('vscode-textmate');
+const oniguruma = require('vscode-oniguruma');
+
+/**
+ * Utility to read a file as a promise
+ */
+function readFile(path) {
+ return new Promise((resolve, reject) => {
+ fs.readFile(path, (error, data) => error ? reject(error) : resolve(data));
+ })
+}
+
+const wasmBin = fs.readFileSync(path.join(__dirname, './node_modules/vscode-oniguruma/release/onig.wasm')).buffer;
+const vscodeOnigurumaLib = oniguruma.loadWASM(wasmBin).then(() => {
+ return {
+ createOnigScanner(patterns) { return new oniguruma.OnigScanner(patterns); },
+ createOnigString(s) { return new oniguruma.OnigString(s); }
+ };
+});
+
+// Create a registry that can create a grammar from a scope name.
+const registry = new vsctm.Registry({
+ onigLib: vscodeOnigurumaLib,
+ loadGrammar: (scopeName) => {
+ if (scopeName === 'source.js') {
+ // https://github.com/textmate/javascript.tmbundle/blob/master/Syntaxes/JavaScript.plist
+ return readFile('./JavaScript.plist').then(data => vsctm.parseRawGrammar(data.toString()))
+ }
+ console.log(`Unknown scope name: ${scopeName}`);
+ return null;
+ }
+});
+
+// Load the JavaScript grammar and any other grammars included by it async.
+registry.loadGrammar('source.js').then(grammar => {
+ const text = [
+ `function sayHello(name) {`,
+ `\treturn "Hello, " + name;`,
+ `}`
+ ];
+ let ruleStack = vsctm.INITIAL;
+ for (let i = 0; i < text.length; i++) {
+ const line = text[i];
+ const lineTokens = grammar.tokenizeLine(line, ruleStack);
+ console.log(`\nTokenizing line: ${line}`);
+ for (let j = 0; j < lineTokens.tokens.length; j++) {
+ const token = lineTokens.tokens[j];
+ console.log(` - token from ${token.startIndex} to ${token.endIndex} ` +
+ `(${line.substring(token.startIndex, token.endIndex)}) ` +
+ `with scopes ${token.scopes.join(', ')}`
+ );
+ }
+ ruleStack = lineTokens.ruleStack;
+ }
+});
+
+/* OUTPUT:
+
+Unknown scope name: source.js.regexp
+
+Tokenizing line: function sayHello(name) {
+ - token from 0 to 8 (function) with scopes source.js, meta.function.js, storage.type.function.js
+ - token from 8 to 9 ( ) with scopes source.js, meta.function.js
+ - token from 9 to 17 (sayHello) with scopes source.js, meta.function.js, entity.name.function.js
+ - token from 17 to 18 (() with scopes source.js, meta.function.js, punctuation.definition.parameters.begin.js
+ - token from 18 to 22 (name) with scopes source.js, meta.function.js, variable.parameter.function.js
+ - token from 22 to 23 ()) with scopes source.js, meta.function.js, punctuation.definition.parameters.end.js
+ - token from 23 to 24 ( ) with scopes source.js
+ - token from 24 to 25 ({) with scopes source.js, punctuation.section.scope.begin.js
+
+Tokenizing line: return "Hello, " + name;
+ - token from 0 to 1 ( ) with scopes source.js
+ - token from 1 to 7 (return) with scopes source.js, keyword.control.js
+ - token from 7 to 8 ( ) with scopes source.js
+ - token from 8 to 9 (") with scopes source.js, string.quoted.double.js, punctuation.definition.string.begin.js
+ - token from 9 to 16 (Hello, ) with scopes source.js, string.quoted.double.js
+ - token from 16 to 17 (") with scopes source.js, string.quoted.double.js, punctuation.definition.string.end.js
+ - token from 17 to 18 ( ) with scopes source.js
+ - token from 18 to 19 (+) with scopes source.js, keyword.operator.arithmetic.js
+ - token from 19 to 20 ( ) with scopes source.js
+ - token from 20 to 24 (name) with scopes source.js, support.constant.dom.js
+ - token from 24 to 25 (;) with scopes source.js, punctuation.terminator.statement.js
+
+Tokenizing line: }
+ - token from 0 to 1 (}) with scopes source.js, punctuation.section.scope.end.js
+
+*/
+
+```
+
+## For grammar authors
+
+See [vscode-tmgrammar-test](https://github.com/PanAeon/vscode-tmgrammar-test) that can help you write unit tests against your grammar.
+
+## API doc
+
+See [the main.ts file](./src/main.ts)
+
+## Developing
+
+* Clone the repository
+* Run `npm install`
+* Compile in the background with `npm run watch`
+* Run tests with `npm test`
+* Run benchmark with `npm run benchmark`
+* Troubleshoot a grammar with `npm run inspect -- PATH_TO_GRAMMAR PATH_TO_FILE`
+
+## Code of Conduct
+
+This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
+
+
+## License
+[MIT](https://github.com/Microsoft/vscode-textmate/blob/master/LICENSE.md)
+
diff --git a/node_modules/vscode-textmate/SECURITY.md b/node_modules/vscode-textmate/SECURITY.md
new file mode 100644
index 0000000..a050f36
--- /dev/null
+++ b/node_modules/vscode-textmate/SECURITY.md
@@ -0,0 +1,41 @@
+<!-- BEGIN MICROSOFT SECURITY.MD V0.0.5 BLOCK -->
+
+## Security
+
+Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
+
+If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)), please report it to us as described below.
+
+## Reporting Security Issues
+
+**Please do not report security vulnerabilities through public GitHub issues.**
+
+Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
+
+If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
+
+You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
+
+Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
+
+ * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
+ * Full paths of source file(s) related to the manifestation of the issue
+ * The location of the affected source code (tag/branch/commit or direct URL)
+ * Any special configuration required to reproduce the issue
+ * Step-by-step instructions to reproduce the issue
+ * Proof-of-concept or exploit code (if possible)
+ * Impact of the issue, including how an attacker might exploit the issue
+
+This information will help us triage your report more quickly.
+
+If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
+
+## Preferred Languages
+
+We prefer all communications to be in English.
+
+## Policy
+
+Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
+
+<!-- END MICROSOFT SECURITY.MD BLOCK -->
diff --git a/node_modules/vscode-textmate/package.json b/node_modules/vscode-textmate/package.json
new file mode 100644
index 0000000..2569648
--- /dev/null
+++ b/node_modules/vscode-textmate/package.json
@@ -0,0 +1,40 @@
+{
+ "name": "vscode-textmate",
+ "version": "8.0.0",
+ "description": "VSCode TextMate grammar helpers",
+ "author": {
+ "name": "Microsoft Corporation"
+ },
+ "main": "./release/main.js",
+ "typings": "./release/main.d.ts",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/microsoft/vscode-textmate"
+ },
+ "license": "MIT",
+ "bugs": {
+ "url": "https://github.com/microsoft/vscode-textmate/issues"
+ },
+ "scripts": {
+ "watch": "tsc --watch",
+ "compile": "tsc",
+ "test": "mocha --ui=tdd ./out/tests/all.test.js",
+ "benchmark": "node benchmark/benchmark.js",
+ "inspect": "node out/tests/inspect.js",
+ "tmconvert": "node scripts/tmconvert.js",
+ "version": "npm run compile && npm run test",
+ "postversion": "git push && git push --tags",
+ "prepublishOnly": "tsc && webpack --progress",
+ "bundle": "webpack"
+ },
+ "devDependencies": {
+ "@types/mocha": "^9.1.0",
+ "@types/node": "^16.6.1",
+ "copy-webpack-plugin": "^9.1.0",
+ "mocha": "^9.2.2",
+ "typescript": "^4.3.5",
+ "vscode-oniguruma": "^1.5.1",
+ "webpack": "^5.50.0",
+ "webpack-cli": "^4.8.0"
+ }
+}
diff --git a/node_modules/vscode-textmate/release/debug.d.ts b/node_modules/vscode-textmate/release/debug.d.ts
new file mode 100644
index 0000000..7599ea2
--- /dev/null
+++ b/node_modules/vscode-textmate/release/debug.d.ts
@@ -0,0 +1,4 @@
+export declare const DebugFlags: {
+ InDebugMode: boolean;
+};
+export declare const UseOnigurumaFindOptions = false;
diff --git a/node_modules/vscode-textmate/release/encodedTokenAttributes.d.ts b/node_modules/vscode-textmate/release/encodedTokenAttributes.d.ts
new file mode 100644
index 0000000..5554709
--- /dev/null
+++ b/node_modules/vscode-textmate/release/encodedTokenAttributes.d.ts
@@ -0,0 +1,31 @@
+import { FontStyle } from "./theme";
+export declare type EncodedTokenAttributes = number;
+export declare namespace EncodedTokenAttributes {
+ function toBinaryStr(encodedTokenAttributes: EncodedTokenAttributes): string;
+ function print(encodedTokenAttributes: EncodedTokenAttributes): void;
+ function getLanguageId(encodedTokenAttributes: EncodedTokenAttributes): number;
+ function getTokenType(encodedTokenAttributes: EncodedTokenAttributes): StandardTokenType;
+ function containsBalancedBrackets(encodedTokenAttributes: EncodedTokenAttributes): boolean;
+ function getFontStyle(encodedTokenAttributes: EncodedTokenAttributes): number;
+ function getForeground(encodedTokenAttributes: EncodedTokenAttributes): number;
+ function getBackground(encodedTokenAttributes: EncodedTokenAttributes): number;
+ /**
+ * Updates the fields in `metadata`.
+ * A value of `0`, `NotSet` or `null` indicates that the corresponding field should be left as is.
+ */
+ function set(encodedTokenAttributes: EncodedTokenAttributes, languageId: number, tokenType: OptionalStandardTokenType, containsBalancedBrackets: boolean | null, fontStyle: FontStyle, foreground: number, background: number): number;
+}
+export declare const enum StandardTokenType {
+ Other = 0,
+ Comment = 1,
+ String = 2,
+ RegEx = 3
+}
+export declare function toOptionalTokenType(standardType: StandardTokenType): OptionalStandardTokenType;
+export declare const enum OptionalStandardTokenType {
+ Other = 0,
+ Comment = 1,
+ String = 2,
+ RegEx = 3,
+ NotSet = 8
+}
diff --git a/node_modules/vscode-textmate/release/grammar/basicScopesAttributeProvider.d.ts b/node_modules/vscode-textmate/release/grammar/basicScopesAttributeProvider.d.ts
new file mode 100644
index 0000000..8e467b6
--- /dev/null
+++ b/node_modules/vscode-textmate/release/grammar/basicScopesAttributeProvider.d.ts
@@ -0,0 +1,24 @@
+import { OptionalStandardTokenType } from "../encodedTokenAttributes";
+import { IEmbeddedLanguagesMap } from "../main";
+import { ScopeName } from "../theme";
+export declare class BasicScopeAttributes {
+ readonly languageId: number;
+ readonly tokenType: OptionalStandardTokenType;
+ constructor(languageId: number, tokenType: OptionalStandardTokenType);
+}
+export declare class BasicScopeAttributesProvider {
+ private readonly _defaultAttributes;
+ private readonly _embeddedLanguagesMatcher;
+ constructor(initialLanguageId: number, embeddedLanguages: IEmbeddedLanguagesMap | null);
+ getDefaultAttributes(): BasicScopeAttributes;
+ getBasicScopeAttributes(scopeName: ScopeName | null): BasicScopeAttributes;
+ private static readonly _NULL_SCOPE_METADATA;
+ private readonly _getBasicScopeAttributes;
+ /**
+ * Given a produced TM scope, return the language that token describes or null if unknown.
+ * e.g. source.html => html, source.css.embedded.html => css, punctuation.definition.tag.html => null
+ */
+ private _scopeToLanguage;
+ private _toStandardTokenType;
+ private static STANDARD_TOKEN_TYPE_REGEXP;
+}
diff --git a/node_modules/vscode-textmate/release/grammar/grammar.d.ts b/node_modules/vscode-textmate/release/grammar/grammar.d.ts
new file mode 100644
index 0000000..bc1ee35
--- /dev/null
+++ b/node_modules/vscode-textmate/release/grammar/grammar.d.ts
@@ -0,0 +1,198 @@
+import { EncodedTokenAttributes, StandardTokenType } from '../encodedTokenAttributes';
+import { IEmbeddedLanguagesMap, IGrammar, IToken, ITokenizeLineResult, ITokenizeLineResult2, ITokenTypeMap, StateStack as StackElementDef } from '../main';
+import { Matcher } from '../matcher';
+import { IOnigLib, OnigScanner, OnigString } from '../onigLib';
+import { IRawGrammar, IRawRepository } from '../rawGrammar';
+import { IRuleFactoryHelper, IRuleRegistry, Rule, RuleId } from '../rule';
+import { ScopeName, ScopePath, ScopeStack, StyleAttributes } from '../theme';
+import { BasicScopeAttributes } from './basicScopesAttributeProvider';
+export declare function createGrammar(scopeName: ScopeName, grammar: IRawGrammar, initialLanguage: number, embeddedLanguages: IEmbeddedLanguagesMap | null, tokenTypes: ITokenTypeMap | null, balancedBracketSelectors: BalancedBracketSelectors | null, grammarRepository: IGrammarRepository & IThemeProvider, onigLib: IOnigLib): Grammar;
+export interface IThemeProvider {
+ themeMatch(scopePath: ScopeStack): StyleAttributes | null;
+ getDefaults(): StyleAttributes;
+}
+export interface IGrammarRepository {
+ lookup(scopeName: ScopeName): IRawGrammar | undefined;
+ injections(scopeName: ScopeName): ScopeName[];
+}
+export interface Injection {
+ readonly debugSelector: string;
+ readonly matcher: Matcher<string[]>;
+ readonly priority: -1 | 0 | 1;
+ readonly ruleId: RuleId;
+ readonly grammar: IRawGrammar;
+}
+export declare class Grammar implements IGrammar, IRuleFactoryHelper, IOnigLib {
+ private readonly _rootScopeName;
+ private readonly balancedBracketSelectors;
+ private readonly _onigLib;
+ private _rootId;
+ private _lastRuleId;
+ private readonly _ruleId2desc;
+ private readonly _includedGrammars;
+ private readonly _grammarRepository;
+ private readonly _grammar;
+ private _injections;
+ private readonly _basicScopeAttributesProvider;
+ private readonly _tokenTypeMatchers;
+ get themeProvider(): IThemeProvider;
+ constructor(_rootScopeName: ScopeName, grammar: IRawGrammar, initialLanguage: number, embeddedLanguages: IEmbeddedLanguagesMap | null, tokenTypes: ITokenTypeMap | null, balancedBracketSelectors: BalancedBracketSelectors | null, grammarRepository: IGrammarRepository & IThemeProvider, _onigLib: IOnigLib);
+ dispose(): void;
+ createOnigScanner(sources: string[]): OnigScanner;
+ createOnigString(sources: string): OnigString;
+ getMetadataForScope(scope: string): BasicScopeAttributes;
+ private _collectInjections;
+ getInjections(): Injection[];
+ registerRule<T extends Rule>(factory: (id: RuleId) => T): T;
+ getRule(ruleId: RuleId): Rule;
+ getExternalGrammar(scopeName: string, repository?: IRawRepository): IRawGrammar | undefined;
+ tokenizeLine(lineText: string, prevState: StateStack | null, timeLimit?: number): ITokenizeLineResult;
+ tokenizeLine2(lineText: string, prevState: StateStack | null, timeLimit?: number): ITokenizeLineResult2;
+ private _tokenize;
+}
+export declare class AttributedScopeStack {
+ readonly parent: AttributedScopeStack | null;
+ readonly scopePath: ScopeStack;
+ readonly tokenAttributes: EncodedTokenAttributes;
+ static createRoot(scopeName: ScopeName, tokenAttributes: EncodedTokenAttributes): AttributedScopeStack;
+ static createRootAndLookUpScopeName(scopeName: ScopeName, tokenAttributes: EncodedTokenAttributes, grammar: Grammar): AttributedScopeStack;
+ get scopeName(): ScopeName;
+ private constructor();
+ equals(other: AttributedScopeStack): boolean;
+ private static _equals;
+ private static mergeAttributes;
+ pushAttributed(scopePath: ScopePath | null, grammar: Grammar): AttributedScopeStack;
+ private static _pushAttributed;
+ getScopeNames(): string[];
+}
+/**
+ * Represents a "pushed" state on the stack (as a linked list element).
+ */
+export declare class StateStack implements StackElementDef {
+ /**
+ * The previous state on the stack (or null for the root state).
+ */
+ readonly parent: StateStack | null;
+ /**
+ * The state (rule) that this element represents.
+ */
+ private readonly ruleId;
+ /**
+ * The state has entered and captured \n. This means that the next line should have an anchorPosition of 0.
+ */
+ readonly beginRuleCapturedEOL: boolean;
+ /**
+ * The "pop" (end) condition for this state in case that it was dynamically generated through captured text.
+ */
+ readonly endRule: string | null;
+ /**
+ * The list of scopes containing the "name" for this state.
+ */
+ readonly nameScopesList: AttributedScopeStack;
+ /**
+ * The list of scopes containing the "contentName" (besides "name") for this state.
+ * This list **must** contain as an element `scopeName`.
+ */
+ readonly contentNameScopesList: AttributedScopeStack;
+ _stackElementBrand: void;
+ static NULL: StateStack;
+ /**
+ * The position on the current line where this state was pushed.
+ * This is relevant only while tokenizing a line, to detect endless loops.
+ * Its value is meaningless across lines.
+ */
+ private _enterPos;
+ /**
+ * The captured anchor position when this stack element was pushed.
+ * This is relevant only while tokenizing a line, to restore the anchor position when popping.
+ * Its value is meaningless across lines.
+ */
+ private _anchorPos;
+ /**
+ * The depth of the stack.
+ */
+ readonly depth: number;
+ constructor(
+ /**
+ * The previous state on the stack (or null for the root state).
+ */
+ parent: StateStack | null,
+ /**
+ * The state (rule) that this element represents.
+ */
+ ruleId: RuleId, enterPos: number, anchorPos: number,
+ /**
+ * The state has entered and captured \n. This means that the next line should have an anchorPosition of 0.
+ */
+ beginRuleCapturedEOL: boolean,
+ /**
+ * The "pop" (end) condition for this state in case that it was dynamically generated through captured text.
+ */
+ endRule: string | null,
+ /**
+ * The list of scopes containing the "name" for this state.
+ */
+ nameScopesList: AttributedScopeStack,
+ /**
+ * The list of scopes containing the "contentName" (besides "name") for this state.
+ * This list **must** contain as an element `scopeName`.
+ */
+ contentNameScopesList: AttributedScopeStack);
+ equals(other: StateStack): boolean;
+ private static _equals;
+ /**
+ * A structural equals check. Does not take into account `scopes`.
+ */
+ private static _structuralEquals;
+ clone(): StateStack;
+ private static _reset;
+ reset(): void;
+ pop(): StateStack | null;
+ safePop(): StateStack;
+ push(ruleId: RuleId, enterPos: number, anchorPos: number, beginRuleCapturedEOL: boolean, endRule: string | null, nameScopesList: AttributedScopeStack, contentNameScopesList: AttributedScopeStack): StateStack;
+ getEnterPos(): number;
+ getAnchorPos(): number;
+ getRule(grammar: IRuleRegistry): Rule;
+ toString(): string;
+ private _writeString;
+ withContentNameScopesList(contentNameScopeStack: AttributedScopeStack): StateStack;
+ withEndRule(endRule: string): StateStack;
+ hasSameRuleAs(other: StateStack): boolean;
+}
+interface TokenTypeMatcher {
+ readonly matcher: Matcher<string[]>;
+ readonly type: StandardTokenType;
+}
+export declare class BalancedBracketSelectors {
+ private readonly balancedBracketScopes;
+ private readonly unbalancedBracketScopes;
+ private allowAny;
+ constructor(balancedBracketScopes: string[], unbalancedBracketScopes: string[]);
+ get matchesAlways(): boolean;
+ get matchesNever(): boolean;
+ match(scopes: string[]): boolean;
+}
+export declare class LineTokens {
+ private readonly balancedBracketSelectors;
+ private readonly _emitBinaryTokens;
+ /**
+ * defined only if `DebugFlags.InDebugMode`.
+ */
+ private readonly _lineText;
+ /**
+ * used only if `_emitBinaryTokens` is false.
+ */
+ private readonly _tokens;
+ /**
+ * used only if `_emitBinaryTokens` is true.
+ */
+ private readonly _binaryTokens;
+ private _lastTokenEndIndex;
+ private readonly _tokenTypeOverrides;
+ constructor(emitBinaryTokens: boolean, lineText: string, tokenTypeOverrides: TokenTypeMatcher[], balancedBracketSelectors: BalancedBracketSelectors | null);
+ produce(stack: StateStack, endIndex: number): void;
+ produceFromScopes(scopesList: AttributedScopeStack, endIndex: number): void;
+ getResult(stack: StateStack, lineLength: number): IToken[];
+ getBinaryResult(stack: StateStack, lineLength: number): Uint32Array;
+}
+export {};
diff --git a/node_modules/vscode-textmate/release/grammar/grammarDependencies.d.ts b/node_modules/vscode-textmate/release/grammar/grammarDependencies.d.ts
new file mode 100644
index 0000000..c4eaacd
--- /dev/null
+++ b/node_modules/vscode-textmate/release/grammar/grammarDependencies.d.ts
@@ -0,0 +1,68 @@
+import { IRawRule } from '../rawGrammar';
+import { ScopeName } from '../theme';
+import { IGrammarRepository } from './grammar';
+export declare type AbsoluteRuleReference = TopLevelRuleReference | TopLevelRepositoryRuleReference;
+/**
+ * References the top level rule of a grammar with the given scope name.
+*/
+export declare class TopLevelRuleReference {
+ readonly scopeName: ScopeName;
+ constructor(scopeName: ScopeName);
+ toKey(): string;
+}
+/**
+ * References a rule of a grammar in the top level repository section with the given name.
+*/
+export declare class TopLevelRepositoryRuleReference {
+ readonly scopeName: ScopeName;
+ readonly ruleName: string;
+ constructor(scopeName: ScopeName, ruleName: string);
+ toKey(): string;
+}
+export declare class ExternalReferenceCollector {
+ private readonly _references;
+ private readonly _seenReferenceKeys;
+ get references(): readonly AbsoluteRuleReference[];
+ readonly visitedRule: Set<IRawRule>;
+ add(reference: AbsoluteRuleReference): void;
+}
+export declare class ScopeDependencyProcessor {
+ readonly repo: IGrammarRepository;
+ readonly initialScopeName: ScopeName;
+ readonly seenFullScopeRequests: Set<string>;
+ readonly seenPartialScopeRequests: Set<string>;
+ Q: AbsoluteRuleReference[];
+ constructor(repo: IGrammarRepository, initialScopeName: ScopeName);
+ processQueue(): void;
+}
+export declare type IncludeReference = BaseReference | SelfReference | RelativeReference | TopLevelReference | TopLevelRepositoryReference;
+export declare const enum IncludeReferenceKind {
+ Base = 0,
+ Self = 1,
+ RelativeReference = 2,
+ TopLevelReference = 3,
+ TopLevelRepositoryReference = 4
+}
+export declare class BaseReference {
+ readonly kind = IncludeReferenceKind.Base;
+}
+export declare class SelfReference {
+ readonly kind = IncludeReferenceKind.Self;
+}
+export declare class RelativeReference {
+ readonly ruleName: string;
+ readonly kind = IncludeReferenceKind.RelativeReference;
+ constructor(ruleName: string);
+}
+export declare class TopLevelReference {
+ readonly scopeName: ScopeName;
+ readonly kind = IncludeReferenceKind.TopLevelReference;
+ constructor(scopeName: ScopeName);
+}
+export declare class TopLevelRepositoryReference {
+ readonly scopeName: ScopeName;
+ readonly ruleName: string;
+ readonly kind = IncludeReferenceKind.TopLevelRepositoryReference;
+ constructor(scopeName: ScopeName, ruleName: string);
+}
+export declare function parseInclude(include: string): IncludeReference;
diff --git a/node_modules/vscode-textmate/release/grammar/index.d.ts b/node_modules/vscode-textmate/release/grammar/index.d.ts
new file mode 100644
index 0000000..a1622b9
--- /dev/null
+++ b/node_modules/vscode-textmate/release/grammar/index.d.ts
@@ -0,0 +1 @@
+export * from './grammar';
diff --git a/node_modules/vscode-textmate/release/grammar/tokenizeString.d.ts b/node_modules/vscode-textmate/release/grammar/tokenizeString.d.ts
new file mode 100644
index 0000000..f56e57d
--- /dev/null
+++ b/node_modules/vscode-textmate/release/grammar/tokenizeString.d.ts
@@ -0,0 +1,27 @@
+import type { LineTokens, StateStack } from './grammar';
+import { OnigString } from '../onigLib';
+import type { AttributedScopeStack, Grammar } from './grammar';
+declare class TokenizeStringResult {
+ readonly stack: StateStack;
+ readonly stoppedEarly: boolean;
+ constructor(stack: StateStack, stoppedEarly: boolean);
+}
+/**
+ * Tokenize a string
+ * @param grammar
+ * @param lineText
+ * @param isFirstLine
+ * @param linePos
+ * @param stack
+ * @param lineTokens
+ * @param checkWhileConditions
+ * @param timeLimit Use `0` to indicate no time limit
+ * @returns the StackElement or StackElement.TIME_LIMIT_REACHED if the time limit has been reached
+ */
+export declare function _tokenizeString(grammar: Grammar, lineText: OnigString, isFirstLine: boolean, linePos: number, stack: StateStack, lineTokens: LineTokens, checkWhileConditions: boolean, timeLimit: number): TokenizeStringResult;
+export declare class LocalStackElement {
+ readonly scopes: AttributedScopeStack;
+ readonly endPos: number;
+ constructor(scopes: AttributedScopeStack, endPos: number);
+}
+export {};
diff --git a/node_modules/vscode-textmate/release/json.d.ts b/node_modules/vscode-textmate/release/json.d.ts
new file mode 100644
index 0000000..11ccc9b
--- /dev/null
+++ b/node_modules/vscode-textmate/release/json.d.ts
@@ -0,0 +1,6 @@
+export interface ILocation {
+ readonly filename: string | null;
+ readonly line: number;
+ readonly char: number;
+}
+export declare function parseJSON(source: string, filename: string | null, withMetadata: boolean): any;
diff --git a/node_modules/vscode-textmate/release/main.d.ts b/node_modules/vscode-textmate/release/main.d.ts
new file mode 100644
index 0000000..7af22e0
--- /dev/null
+++ b/node_modules/vscode-textmate/release/main.d.ts
@@ -0,0 +1,141 @@
+import { IOnigLib } from './onigLib';
+import { IRawGrammar } from './rawGrammar';
+import { IRawTheme, ScopeName } from './theme';
+import { StandardTokenType } from './encodedTokenAttributes';
+export * from './onigLib';
+export { IRawTheme } from './theme';
+/**
+ * A registry helper that can locate grammar file paths given scope names.
+ */
+export interface RegistryOptions {
+ onigLib: Promise<IOnigLib>;
+ theme?: IRawTheme;
+ colorMap?: string[];
+ loadGrammar(scopeName: ScopeName): Promise<IRawGrammar | undefined | null>;
+ getInjections?(scopeName: ScopeName): ScopeName[] | undefined;
+}
+/**
+ * A map from scope name to a language id. Please do not use language id 0.
+ */
+export interface IEmbeddedLanguagesMap {
+ [scopeName: string]: number;
+}
+/**
+ * A map from selectors to token types.
+ */
+export interface ITokenTypeMap {
+ [selector: string]: StandardTokenType;
+}
+export interface IGrammarConfiguration {
+ embeddedLanguages?: IEmbeddedLanguagesMap;
+ tokenTypes?: ITokenTypeMap;
+ balancedBracketSelectors?: string[];
+ unbalancedBracketSelectors?: string[];
+}
+/**
+ * The registry that will hold all grammars.
+ */
+export declare class Registry {
+ private readonly _options;
+ private readonly _syncRegistry;
+ private readonly _ensureGrammarCache;
+ constructor(options: RegistryOptions);
+ dispose(): void;
+ /**
+ * Change the theme. Once called, no previous `ruleStack` should be used anymore.
+ */
+ setTheme(theme: IRawTheme, colorMap?: string[]): void;
+ /**
+ * Returns a lookup array for color ids.
+ */
+ getColorMap(): string[];
+ /**
+ * Load the grammar for `scopeName` and all referenced included grammars asynchronously.
+ * Please do not use language id 0.
+ */
+ loadGrammarWithEmbeddedLanguages(initialScopeName: ScopeName, initialLanguage: number, embeddedLanguages: IEmbeddedLanguagesMap): Promise<IGrammar | null>;
+ /**
+ * Load the grammar for `scopeName` and all referenced included grammars asynchronously.
+ * Please do not use language id 0.
+ */
+ loadGrammarWithConfiguration(initialScopeName: ScopeName, initialLanguage: number, configuration: IGrammarConfiguration): Promise<IGrammar | null>;
+ /**
+ * Load the grammar for `scopeName` and all referenced included grammars asynchronously.
+ */
+ loadGrammar(initialScopeName: ScopeName): Promise<IGrammar | null>;
+ private _loadGrammar;
+ private _loadSingleGrammar;
+ private _doLoadSingleGrammar;
+ /**
+ * Adds a rawGrammar.
+ */
+ addGrammar(rawGrammar: IRawGrammar, injections?: string[], initialLanguage?: number, embeddedLanguages?: IEmbeddedLanguagesMap | null): Promise<IGrammar>;
+ /**
+ * Get the grammar for `scopeName`. The grammar must first be created via `loadGrammar` or `addGrammar`.
+ */
+ private _grammarForScopeName;
+}
+/**
+ * A grammar
+ */
+export interface IGrammar {
+ /**
+ * Tokenize `lineText` using previous line state `prevState`.
+ */
+ tokenizeLine(lineText: string, prevState: StateStack | null, timeLimit?: number): ITokenizeLineResult;
+ /**
+ * Tokenize `lineText` using previous line state `prevState`.
+ * The result contains the tokens in binary format, resolved with the following information:
+ * - language
+ * - token type (regex, string, comment, other)
+ * - font style
+ * - foreground color
+ * - background color
+ * e.g. for getting the languageId: `(metadata & MetadataConsts.LANGUAGEID_MASK) >>> MetadataConsts.LANGUAGEID_OFFSET`
+ */
+ tokenizeLine2(lineText: string, prevState: StateStack | null, timeLimit?: number): ITokenizeLineResult2;
+}
+export interface ITokenizeLineResult {
+ readonly tokens: IToken[];
+ /**
+ * The `prevState` to be passed on to the next line tokenization.
+ */
+ readonly ruleStack: StateStack;
+ /**
+ * Did tokenization stop early due to reaching the time limit.
+ */
+ readonly stoppedEarly: boolean;
+}
+export interface ITokenizeLineResult2 {
+ /**
+ * The tokens in binary format. Each token occupies two array indices. For token i:
+ * - at offset 2*i => startIndex
+ * - at offset 2*i + 1 => metadata
+ *
+ */
+ readonly tokens: Uint32Array;
+ /**
+ * The `prevState` to be passed on to the next line tokenization.
+ */
+ readonly ruleStack: StateStack;
+ /**
+ * Did tokenization stop early due to reaching the time limit.
+ */
+ readonly stoppedEarly: boolean;
+}
+export interface IToken {
+ startIndex: number;
+ readonly endIndex: number;
+ readonly scopes: string[];
+}
+/**
+ * **IMPORTANT** - Immutable!
+ */
+export interface StateStack {
+ _stackElementBrand: void;
+ readonly depth: number;
+ clone(): StateStack;
+ equals(other: StateStack): boolean;
+}
+export declare const INITIAL: StateStack;
+export declare const parseRawGrammar: (content: string, filePath?: string) => IRawGrammar;
diff --git a/node_modules/vscode-textmate/release/main.js b/node_modules/vscode-textmate/release/main.js
new file mode 100644
index 0000000..f173082
--- /dev/null
+++ b/node_modules/vscode-textmate/release/main.js
@@ -0,0 +1,2 @@
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.vscodetextmate=t():e.vscodetextmate=t()}(this,(function(){return(()=>{"use strict";var e={350:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.UseOnigurumaFindOptions=t.DebugFlags=void 0,t.DebugFlags={InDebugMode:"undefined"!=typeof process&&!!process.env.VSCODE_TEXTMATE_DEBUG},t.UseOnigurumaFindOptions=!1},36:(e,t)=>{var n;Object.defineProperty(t,"__esModule",{value:!0}),t.toOptionalTokenType=t.EncodedTokenAttributes=void 0,(n=t.EncodedTokenAttributes||(t.EncodedTokenAttributes={})).toBinaryStr=function(e){let t=e.toString(2);for(;t.length<32;)t="0"+t;return t},n.print=function(e){const t=n.getLanguageId(e),s=n.getTokenType(e),r=n.getFontStyle(e),i=n.getForeground(e),o=n.getBackground(e);console.log({languageId:t,tokenType:s,fontStyle:r,foreground:i,background:o})},n.getLanguageId=function(e){return(255&e)>>>0},n.getTokenType=function(e){return(768&e)>>>8},n.containsBalancedBrackets=function(e){return 0!=(1024&e)},n.getFontStyle=function(e){return(30720&e)>>>11},n.getForeground=function(e){return(16744448&e)>>>15},n.getBackground=function(e){return(4278190080&e)>>>24},n.set=function(e,t,s,r,i,o,c){let a=n.getLanguageId(e),l=n.getTokenType(e),u=n.containsBalancedBrackets(e)?1:0,h=n.getFontStyle(e),p=n.getForeground(e),d=n.getBackground(e);return 0!==t&&(a=t),8!==s&&(l=s),null!==r&&(u=r?1:0),-1!==i&&(h=i),0!==o&&(p=o),0!==c&&(d=c),(a<<0|l<<8|u<<10|h<<11|p<<15|d<<24)>>>0},t.toOptionalTokenType=function(e){return e}},996:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.BasicScopeAttributesProvider=t.BasicScopeAttributes=void 0;const s=n(878);class r{constructor(e,t){this.languageId=e,this.tokenType=t}}t.BasicScopeAttributes=r;class i{constructor(e,t){this._getBasicScopeAttributes=new s.CachedFn((e=>{const t=this._scopeToLanguage(e),n=this._toStandardTokenType(e);return new r(t,n)})),this._defaultAttributes=new r(e,8),this._embeddedLanguagesMatcher=new o(Object.entries(t||{}))}getDefaultAttributes(){return this._defaultAttributes}getBasicScopeAttributes(e){return null===e?i._NULL_SCOPE_METADATA:this._getBasicScopeAttributes.get(e)}_scopeToLanguage(e){return this._embeddedLanguagesMatcher.match(e)||0}_toStandardTokenType(e){const t=e.match(i.STANDARD_TOKEN_TYPE_REGEXP);if(!t)return 8;switch(t[1]){case"comment":return 1;case"string":return 2;case"regex":return 3;case"meta.embedded":return 0}throw new Error("Unexpected match for standard token type!")}}t.BasicScopeAttributesProvider=i,i._NULL_SCOPE_METADATA=new r(0,0),i.STANDARD_TOKEN_TYPE_REGEXP=/\b(comment|string|regex|meta\.embedded)\b/;class o{constructor(e){if(0===e.length)this.values=null,this.scopesRegExp=null;else{this.values=new Map(e);const t=e.map((([e,t])=>s.escapeRegExpCharacters(e)));t.sort(),t.reverse(),this.scopesRegExp=new RegExp(`^((${t.join(")|(")}))($|\\.)`,"")}}match(e){if(!this.scopesRegExp)return;const t=e.match(this.scopesRegExp);return t?this.values.get(t[1]):void 0}}},947:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LineTokens=t.BalancedBracketSelectors=t.StateStack=t.AttributedScopeStack=t.Grammar=t.createGrammar=void 0;const s=n(350),r=n(36),i=n(736),o=n(44),c=n(792),a=n(583),l=n(878),u=n(996),h=n(47);function p(e,t,n,s,r){const o=i.createMatchers(t,d),a=c.RuleFactory.getCompiledRuleId(n,s,r.repository);for(const n of o)e.push({debugSelector:t,matcher:n.matcher,ruleId:a,grammar:r,priority:n.priority})}function d(e,t){if(t.length<e.length)return!1;let n=0;return e.every((e=>{for(let s=n;s<t.length;s++)if(f(t[s],e))return n=s+1,!0;return!1}))}function f(e,t){if(!e)return!1;if(e===t)return!0;const n=t.length;return e.length>n&&e.substr(0,n)===t&&"."===e[n]}t.createGrammar=function(e,t,n,s,r,i,o,c){return new g(e,t,n,s,r,i,o,c)};class g{constructor(e,t,n,s,r,o,c,a){if(this._rootScopeName=e,this.balancedBracketSelectors=o,this._onigLib=a,this._basicScopeAttributesProvider=new u.BasicScopeAttributesProvider(n,s),this._rootId=-1,this._lastRuleId=0,this._ruleId2desc=[null],this._includedGrammars={},this._grammarRepository=c,this._grammar=m(t,null),this._injections=null,this._tokenTypeMatchers=[],r)for(const e of Object.keys(r)){const t=i.createMatchers(e,d);for(const n of t)this._tokenTypeMatchers.push({matcher:n.matcher,type:r[e]})}}get themeProvider(){return this._grammarRepository}dispose(){for(const e of this._ruleId2desc)e&&e.dispose()}createOnigScanner(e){return this._onigLib.createOnigScanner(e)}createOnigString(e){return this._onigLib.createOnigString(e)}getMetadataForScope(e){return this._basicScopeAttributesProvider.getBasicScopeAttributes(e)}_collectInjections(){const e=[],t=this._rootScopeName,n=(e=>e===this._rootScopeName?this._grammar:this.getExternalGrammar(e))(t);if(n){const s=n.injections;if(s)for(let t in s)p(e,t,s[t],this,n);const r=this._grammarRepository.injections(t);r&&r.forEach((t=>{const n=this.getExternalGrammar(t);if(n){const t=n.injectionSelector;t&&p(e,t,n,this,n)}}))}return e.sort(((e,t)=>e.priority-t.priority)),e}getInjections(){if(null===this._injections&&(this._injections=this._collectInjections(),s.DebugFlags.InDebugMode&&this._injections.length>0)){console.log(`Grammar ${this._rootScopeName} contains the following injections:`);for(const e of this._injections)console.log(` - ${e.debugSelector}`)}return this._injections}registerRule(e){const t=++this._lastRuleId,n=e(c.ruleIdFromNumber(t));return this._ruleId2desc[t]=n,n}getRule(e){return this._ruleId2desc[c.ruleIdToNumber(e)]}getExternalGrammar(e,t){if(this._includedGrammars[e])return this._includedGrammars[e];if(this._grammarRepository){const n=this._grammarRepository.lookup(e);if(n)return this._includedGrammars[e]=m(n,t&&t.$base),this._includedGrammars[e]}}tokenizeLine(e,t,n=0){const s=this._tokenize(e,t,!1,n);return{tokens:s.lineTokens.getResult(s.ruleStack,s.lineLength),ruleStack:s.ruleStack,stoppedEarly:s.stoppedEarly}}tokenizeLine2(e,t,n=0){const s=this._tokenize(e,t,!0,n);return{tokens:s.lineTokens.getBinaryResult(s.ruleStack,s.lineLength),ruleStack:s.ruleStack,stoppedEarly:s.stoppedEarly}}_tokenize(e,t,n,s){let i;if(-1===this._rootId&&(this._rootId=c.RuleFactory.getCompiledRuleId(this._grammar.repository.$self,this,this._grammar.repository)),t&&t!==b.NULL)i=!1,t.reset();else{i=!0;const e=this._basicScopeAttributesProvider.getDefaultAttributes(),n=this.themeProvider.getDefaults(),s=r.EncodedTokenAttributes.set(0,e.languageId,e.tokenType,null,n.fontStyle,n.foregroundId,n.backgroundId),o=this.getRule(this._rootId).getName(null,null);let c;c=o?_.createRootAndLookUpScopeName(o,s,this):_.createRoot("unknown",s),t=new b(null,this._rootId,-1,-1,!1,null,c,c)}e+="\n";const a=this.createOnigString(e),l=a.content.length,u=new y(n,e,this._tokenTypeMatchers,this.balancedBracketSelectors),p=h._tokenizeString(this,a,i,0,t,u,!0,s);return o.disposeOnigString(a),{lineLength:l,lineTokens:u,ruleStack:p.stack,stoppedEarly:p.stoppedEarly}}}function m(e,t){return(e=l.clone(e)).repository=e.repository||{},e.repository.$self={$vscodeTextmateLocation:e.$vscodeTextmateLocation,patterns:e.patterns,name:e.scopeName},e.repository.$base=t||e.repository.$self,e}t.Grammar=g;class _{constructor(e,t,n){this.parent=e,this.scopePath=t,this.tokenAttributes=n}static createRoot(e,t){return new _(null,new a.ScopeStack(null,e),t)}static createRootAndLookUpScopeName(e,t,n){const s=n.getMetadataForScope(e),r=new a.ScopeStack(null,e),i=n.themeProvider.themeMatch(r),o=_.mergeAttributes(t,s,i);return new _(null,r,o)}get scopeName(){return this.scopePath.scopeName}equals(e){return _._equals(this,e)}static _equals(e,t){for(;;){if(e===t)return!0;if(!e&&!t)return!0;if(!e||!t)return!1;if(e.scopeName!==t.scopeName||e.tokenAttributes!==t.tokenAttributes)return!1;e=e.parent,t=t.parent}}static mergeAttributes(e,t,n){let s=-1,i=0,o=0;return null!==n&&(s=n.fontStyle,i=n.foregroundId,o=n.backgroundId),r.EncodedTokenAttributes.set(e,t.languageId,t.tokenType,null,s,i,o)}pushAttributed(e,t){if(null===e)return this;if(-1===e.indexOf(" "))return _._pushAttributed(this,e,t);const n=e.split(/ /g);let s=this;for(const e of n)s=_._pushAttributed(s,e,t);return s}static _pushAttributed(e,t,n){const s=n.getMetadataForScope(t),r=e.scopePath.push(t),i=n.themeProvider.themeMatch(r),o=_.mergeAttributes(e.tokenAttributes,s,i);return new _(e,r,o)}getScopeNames(){return this.scopePath.getSegments()}}t.AttributedScopeStack=_;class b{constructor(e,t,n,s,r,i,o,c){this.parent=e,this.ruleId=t,this.beginRuleCapturedEOL=r,this.endRule=i,this.nameScopesList=o,this.contentNameScopesList=c,this._stackElementBrand=void 0,this.depth=this.parent?this.parent.depth+1:1,this._enterPos=n,this._anchorPos=s}equals(e){return null!==e&&b._equals(this,e)}static _equals(e,t){return e===t||!!this._structuralEquals(e,t)&&e.contentNameScopesList.equals(t.contentNameScopesList)}static _structuralEquals(e,t){for(;;){if(e===t)return!0;if(!e&&!t)return!0;if(!e||!t)return!1;if(e.depth!==t.depth||e.ruleId!==t.ruleId||e.endRule!==t.endRule)return!1;e=e.parent,t=t.parent}}clone(){return this}static _reset(e){for(;e;)e._enterPos=-1,e._anchorPos=-1,e=e.parent}reset(){b._reset(this)}pop(){return this.parent}safePop(){return this.parent?this.parent:this}push(e,t,n,s,r,i,o){return new b(this,e,t,n,s,r,i,o)}getEnterPos(){return this._enterPos}getAnchorPos(){return this._anchorPos}getRule(e){return e.getRule(this.ruleId)}toString(){const e=[];return this._writeString(e,0),"["+e.join(",")+"]"}_writeString(e,t){return this.parent&&(t=this.parent._writeString(e,t)),e[t++]=`(${this.ruleId}, TODO-${this.nameScopesList}, TODO-${this.contentNameScopesList})`,t}withContentNameScopesList(e){return this.contentNameScopesList===e?this:this.parent.push(this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,this.endRule,this.nameScopesList,e)}withEndRule(e){return this.endRule===e?this:new b(this.parent,this.ruleId,this._enterPos,this._anchorPos,this.beginRuleCapturedEOL,e,this.nameScopesList,this.contentNameScopesList)}hasSameRuleAs(e){let t=this;for(;t&&t._enterPos===e._enterPos;){if(t.ruleId===e.ruleId)return!0;t=t.parent}return!1}}t.StateStack=b,b.NULL=new b(null,0,0,0,!1,null,null,null),t.BalancedBracketSelectors=class{constructor(e,t){this.allowAny=!1,this.balancedBracketScopes=e.flatMap((e=>"*"===e?(this.allowAny=!0,[]):i.createMatchers(e,d).map((e=>e.matcher)))),this.unbalancedBracketScopes=t.flatMap((e=>i.createMatchers(e,d).map((e=>e.matcher))))}get matchesAlways(){return this.allowAny&&0===this.unbalancedBracketScopes.length}get matchesNever(){return 0===this.balancedBracketScopes.length&&!this.allowAny}match(e){for(const t of this.unbalancedBracketScopes)if(t(e))return!1;for(const t of this.balancedBracketScopes)if(t(e))return!0;return this.allowAny}};class y{constructor(e,t,n,r){this.balancedBracketSelectors=r,this._emitBinaryTokens=e,this._tokenTypeOverrides=n,s.DebugFlags.InDebugMode?this._lineText=t:this._lineText=null,this._tokens=[],this._binaryTokens=[],this._lastTokenEndIndex=0}produce(e,t){this.produceFromScopes(e.contentNameScopesList,t)}produceFromScopes(e,t){if(this._lastTokenEndIndex>=t)return;if(this._emitBinaryTokens){let n=e.tokenAttributes,i=!1;if(this.balancedBracketSelectors?.matchesAlways&&(i=!0),this._tokenTypeOverrides.length>0||this.balancedBracketSelectors&&!this.balancedBracketSelectors.matchesAlways&&!this.balancedBracketSelectors.matchesNever){const t=e.getScopeNames();for(const e of this._tokenTypeOverrides)e.matcher(t)&&(n=r.EncodedTokenAttributes.set(n,0,r.toOptionalTokenType(e.type),null,-1,0,0));this.balancedBracketSelectors&&(i=this.balancedBracketSelectors.match(t))}if(i&&(n=r.EncodedTokenAttributes.set(n,0,8,i,-1,0,0)),this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-1]===n)return void(this._lastTokenEndIndex=t);if(s.DebugFlags.InDebugMode){const n=e.getScopeNames();console.log(" token: |"+this._lineText.substring(this._lastTokenEndIndex,t).replace(/\n$/,"\\n")+"|");for(let e=0;e<n.length;e++)console.log(" * "+n[e])}return this._binaryTokens.push(this._lastTokenEndIndex),this._binaryTokens.push(n),void(this._lastTokenEndIndex=t)}const n=e.getScopeNames();if(s.DebugFlags.InDebugMode){console.log(" token: |"+this._lineText.substring(this._lastTokenEndIndex,t).replace(/\n$/,"\\n")+"|");for(let e=0;e<n.length;e++)console.log(" * "+n[e])}this._tokens.push({startIndex:this._lastTokenEndIndex,endIndex:t,scopes:n}),this._lastTokenEndIndex=t}getResult(e,t){return this._tokens.length>0&&this._tokens[this._tokens.length-1].startIndex===t-1&&this._tokens.pop(),0===this._tokens.length&&(this._lastTokenEndIndex=-1,this.produce(e,t),this._tokens[this._tokens.length-1].startIndex=0),this._tokens}getBinaryResult(e,t){this._binaryTokens.length>0&&this._binaryTokens[this._binaryTokens.length-2]===t-1&&(this._binaryTokens.pop(),this._binaryTokens.pop()),0===this._binaryTokens.length&&(this._lastTokenEndIndex=-1,this.produce(e,t),this._binaryTokens[this._binaryTokens.length-2]=0);const n=new Uint32Array(this._binaryTokens.length);for(let e=0,t=this._binaryTokens.length;e<t;e++)n[e]=this._binaryTokens[e];return n}}t.LineTokens=y},965:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseInclude=t.TopLevelRepositoryReference=t.TopLevelReference=t.RelativeReference=t.SelfReference=t.BaseReference=t.ScopeDependencyProcessor=t.ExternalReferenceCollector=t.TopLevelRepositoryRuleReference=t.TopLevelRuleReference=void 0;const s=n(878);class r{constructor(e){this.scopeName=e}toKey(){return this.scopeName}}t.TopLevelRuleReference=r;class i{constructor(e,t){this.scopeName=e,this.ruleName=t}toKey(){return`${this.scopeName}#${this.ruleName}`}}t.TopLevelRepositoryRuleReference=i;class o{constructor(){this._references=[],this._seenReferenceKeys=new Set,this.visitedRule=new Set}get references(){return this._references}add(e){const t=e.toKey();this._seenReferenceKeys.has(t)||(this._seenReferenceKeys.add(t),this._references.push(e))}}function c(e,t,n,s){const i=n.lookup(e.scopeName);if(!i){if(e.scopeName===t)throw new Error(`No grammar provided for <${t}>`);return}const o=n.lookup(t);e instanceof r?l({baseGrammar:o,selfGrammar:i},s):a(e.ruleName,{baseGrammar:o,selfGrammar:i,repository:i.repository},s);const c=n.injections(e.scopeName);if(c)for(const e of c)s.add(new r(e))}function a(e,t,n){t.repository&&t.repository[e]&&u([t.repository[e]],t,n)}function l(e,t){e.selfGrammar.patterns&&Array.isArray(e.selfGrammar.patterns)&&u(e.selfGrammar.patterns,{...e,repository:e.selfGrammar.repository},t),e.selfGrammar.injections&&u(Object.values(e.selfGrammar.injections),{...e,repository:e.selfGrammar.repository},t)}function u(e,t,n){for(const o of e){if(n.visitedRule.has(o))continue;n.visitedRule.add(o);const e=o.repository?s.mergeObjects({},t.repository,o.repository):t.repository;Array.isArray(o.patterns)&&u(o.patterns,{...t,repository:e},n);const c=o.include;if(!c)continue;const h=m(c);switch(h.kind){case 0:l({...t,selfGrammar:t.baseGrammar},n);break;case 1:l(t,n);break;case 2:a(h.ruleName,{...t,repository:e},n);break;case 3:case 4:const s=h.scopeName===t.selfGrammar.scopeName?t.selfGrammar:h.scopeName===t.baseGrammar.scopeName?t.baseGrammar:void 0;if(s){const r={baseGrammar:t.baseGrammar,selfGrammar:s,repository:e};4===h.kind?a(h.ruleName,r,n):l(r,n)}else 4===h.kind?n.add(new i(h.scopeName,h.ruleName)):n.add(new r(h.scopeName))}}}t.ExternalReferenceCollector=o,t.ScopeDependencyProcessor=class{constructor(e,t){this.repo=e,this.initialScopeName=t,this.seenFullScopeRequests=new Set,this.seenPartialScopeRequests=new Set,this.seenFullScopeRequests.add(this.initialScopeName),this.Q=[new r(this.initialScopeName)]}processQueue(){const e=this.Q;this.Q=[];const t=new o;for(const n of e)c(n,this.initialScopeName,this.repo,t);for(const e of t.references)if(e instanceof r){if(this.seenFullScopeRequests.has(e.scopeName))continue;this.seenFullScopeRequests.add(e.scopeName),this.Q.push(e)}else{if(this.seenFullScopeRequests.has(e.scopeName))continue;if(this.seenPartialScopeRequests.has(e.toKey()))continue;this.seenPartialScopeRequests.add(e.toKey()),this.Q.push(e)}}};class h{constructor(){this.kind=0}}t.BaseReference=h;class p{constructor(){this.kind=1}}t.SelfReference=p;class d{constructor(e){this.ruleName=e,this.kind=2}}t.RelativeReference=d;class f{constructor(e){this.scopeName=e,this.kind=3}}t.TopLevelReference=f;class g{constructor(e,t){this.scopeName=e,this.ruleName=t,this.kind=4}}function m(e){if("$base"===e)return new h;if("$self"===e)return new p;const t=e.indexOf("#");if(-1===t)return new f(e);if(0===t)return new d(e.substring(1));{const n=e.substring(0,t),s=e.substring(t+1);return new g(n,s)}}t.TopLevelRepositoryReference=g,t.parseInclude=m},391:function(e,t,n){var s=this&&this.__createBinding||(Object.create?function(e,t,n,s){void 0===s&&(s=n),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,s){void 0===s&&(s=n),e[s]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||s(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(947),t)},47:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.LocalStackElement=t._tokenizeString=void 0;const s=n(350),r=n(44),i=n(792),o=n(878);class c{constructor(e,t){this.stack=e,this.stoppedEarly=t}}function a(e,t,n,r,a,h,d,f){const g=t.content.length;let m=!1,_=-1;if(d){const o=function(e,t,n,r,o,c){let a=o.beginRuleCapturedEOL?0:-1;const l=[];for(let t=o;t;t=t.pop()){const n=t.getRule(e);n instanceof i.BeginWhileRule&&l.push({rule:n,stack:t})}for(let h=l.pop();h;h=l.pop()){const{ruleScanner:l,findOptions:d}=u(h.rule,e,h.stack.endRule,n,r===a),f=l.findNextMatchSync(t,r,d);if(s.DebugFlags.InDebugMode&&(console.log(" scanning for while rule"),console.log(l.toString())),!f){s.DebugFlags.InDebugMode&&console.log(" popping "+h.rule.debugName+" - "+h.rule.debugWhileRegExp),o=h.stack.pop();break}if(f.ruleId!==i.whileRuleId){o=h.stack.pop();break}f.captureIndices&&f.captureIndices.length&&(c.produce(h.stack,f.captureIndices[0].start),p(e,t,n,h.stack,c,h.rule.whileCaptures,f.captureIndices),c.produce(h.stack,f.captureIndices[0].end),a=f.captureIndices[0].end,f.captureIndices[0].end>r&&(r=f.captureIndices[0].end,n=!1))}return{stack:o,linePos:r,anchorPosition:a,isFirstLine:n}}(e,t,n,r,a,h);a=o.stack,r=o.linePos,n=o.isFirstLine,_=o.anchorPosition}const b=Date.now();for(;!m;){if(0!==f&&Date.now()-b>f)return new c(a,!0);y()}return new c(a,!1);function y(){s.DebugFlags.InDebugMode&&(console.log(""),console.log(`@@scanNext ${r}: |${t.content.substr(r).replace(/\n$/,"\\n")}|`));const c=function(e,t,n,r,i,c){const a=function(e,t,n,r,i,c){const a=i.getRule(e),{ruleScanner:u,findOptions:h}=l(a,e,i.endRule,n,r===c);let p=0;s.DebugFlags.InDebugMode&&(p=o.performanceNow());const d=u.findNextMatchSync(t,r,h);if(s.DebugFlags.InDebugMode){const e=o.performanceNow()-p;e>5&&console.warn(`Rule ${a.debugName} (${a.id}) matching took ${e} against '${t}'`),console.log(` scanning for (linePos: ${r}, anchorPosition: ${c})`),console.log(u.toString()),d&&console.log(`matched rule id: ${d.ruleId} from ${d.captureIndices[0].start} to ${d.captureIndices[0].end}`)}return d?{captureIndices:d.captureIndices,matchedRuleId:d.ruleId}:null}(e,t,n,r,i,c),u=e.getInjections();if(0===u.length)return a;const h=function(e,t,n,r,i,o,c){let a,u=Number.MAX_VALUE,h=null,p=0;const d=o.contentNameScopesList.getScopeNames();for(let o=0,f=e.length;o<f;o++){const f=e[o];if(!f.matcher(d))continue;const g=t.getRule(f.ruleId),{ruleScanner:m,findOptions:_}=l(g,t,null,r,i===c),b=m.findNextMatchSync(n,i,_);if(!b)continue;s.DebugFlags.InDebugMode&&(console.log(` matched injection: ${f.debugSelector}`),console.log(m.toString()));const y=b.captureIndices[0].start;if(!(y>=u)&&(u=y,h=b.captureIndices,a=b.ruleId,p=f.priority,u===i))break}return h?{priorityMatch:-1===p,captureIndices:h,matchedRuleId:a}:null}(u,e,t,n,r,i,c);if(!h)return a;if(!a)return h;const p=a.captureIndices[0].start,d=h.captureIndices[0].start;return d<p||h.priorityMatch&&d===p?h:a}(e,t,n,r,a,_);if(!c)return s.DebugFlags.InDebugMode&&console.log(" no more matches."),h.produce(a,g),void(m=!0);const u=c.captureIndices,d=c.matchedRuleId,f=!!(u&&u.length>0)&&u[0].end>r;if(d===i.endRuleId){const i=a.getRule(e);s.DebugFlags.InDebugMode&&console.log(" popping "+i.debugName+" - "+i.debugEndRegExp),h.produce(a,u[0].start),a=a.withContentNameScopesList(a.nameScopesList),p(e,t,n,a,h,i.endCaptures,u),h.produce(a,u[0].end);const o=a;if(a=a.parent,_=o.getAnchorPos(),!f&&o.getEnterPos()===r)return s.DebugFlags.InDebugMode&&console.error("[1] - Grammar is in an endless loop - Grammar pushed & popped a rule without advancing"),a=o,h.produce(a,g),void(m=!0)}else{const o=e.getRule(d);h.produce(a,u[0].start);const c=a,l=o.getName(t.content,u),b=a.contentNameScopesList.pushAttributed(l,e);if(a=a.push(d,r,_,u[0].end===g,null,b,b),o instanceof i.BeginEndRule){const r=o;s.DebugFlags.InDebugMode&&console.log(" pushing "+r.debugName+" - "+r.debugBeginRegExp),p(e,t,n,a,h,r.beginCaptures,u),h.produce(a,u[0].end),_=u[0].end;const i=r.getContentName(t.content,u),l=b.pushAttributed(i,e);if(a=a.withContentNameScopesList(l),r.endHasBackReferences&&(a=a.withEndRule(r.getEndWithResolvedBackReferences(t.content,u))),!f&&c.hasSameRuleAs(a))return s.DebugFlags.InDebugMode&&console.error("[2] - Grammar is in an endless loop - Grammar pushed the same rule without advancing"),a=a.pop(),h.produce(a,g),void(m=!0)}else if(o instanceof i.BeginWhileRule){const r=o;s.DebugFlags.InDebugMode&&console.log(" pushing "+r.debugName),p(e,t,n,a,h,r.beginCaptures,u),h.produce(a,u[0].end),_=u[0].end;const i=r.getContentName(t.content,u),l=b.pushAttributed(i,e);if(a=a.withContentNameScopesList(l),r.whileHasBackReferences&&(a=a.withEndRule(r.getWhileWithResolvedBackReferences(t.content,u))),!f&&c.hasSameRuleAs(a))return s.DebugFlags.InDebugMode&&console.error("[3] - Grammar is in an endless loop - Grammar pushed the same rule without advancing"),a=a.pop(),h.produce(a,g),void(m=!0)}else{const r=o;if(s.DebugFlags.InDebugMode&&console.log(" matched "+r.debugName+" - "+r.debugMatchRegExp),p(e,t,n,a,h,r.captures,u),h.produce(a,u[0].end),a=a.pop(),!f)return s.DebugFlags.InDebugMode&&console.error("[4] - Grammar is in an endless loop - Grammar is not advancing, nor is it pushing/popping"),a=a.safePop(),h.produce(a,g),void(m=!0)}}u[0].end>r&&(r=u[0].end,n=!1)}}function l(e,t,n,r,i){return s.UseOnigurumaFindOptions?{ruleScanner:e.compile(t,n),findOptions:h(r,i)}:{ruleScanner:e.compileAG(t,n,r,i),findOptions:0}}function u(e,t,n,r,i){return s.UseOnigurumaFindOptions?{ruleScanner:e.compileWhile(t,n),findOptions:h(r,i)}:{ruleScanner:e.compileWhileAG(t,n,r,i),findOptions:0}}function h(e,t){let n=0;return e||(n|=1),t||(n|=4),n}function p(e,t,n,s,i,o,c){if(0===o.length)return;const l=t.content,u=Math.min(o.length,c.length),h=[],p=c[0].end;for(let t=0;t<u;t++){const u=o[t];if(null===u)continue;const f=c[t];if(0===f.length)continue;if(f.start>p)break;for(;h.length>0&&h[h.length-1].endPos<=f.start;)i.produceFromScopes(h[h.length-1].scopes,h[h.length-1].endPos),h.pop();if(h.length>0?i.produceFromScopes(h[h.length-1].scopes,f.start):i.produce(s,f.start),u.retokenizeCapturedWithRuleId){const t=u.getName(l,c),o=s.contentNameScopesList.pushAttributed(t,e),h=u.getContentName(l,c),p=o.pushAttributed(h,e),d=s.push(u.retokenizeCapturedWithRuleId,f.start,-1,!1,null,o,p),g=e.createOnigString(l.substring(0,f.end));a(e,g,n&&0===f.start,f.start,d,i,!1,0),r.disposeOnigString(g);continue}const g=u.getName(l,c);if(null!==g){const t=(h.length>0?h[h.length-1].scopes:s.contentNameScopesList).pushAttributed(g,e);h.push(new d(t,f.end))}}for(;h.length>0;)i.produceFromScopes(h[h.length-1].scopes,h[h.length-1].endPos),h.pop()}t._tokenizeString=a;class d{constructor(e,t){this.scopes=e,this.endPos=t}}t.LocalStackElement=d},974:(e,t)=>{function n(e,t){throw new Error("Near offset "+e.pos+": "+t+" ~~~"+e.source.substr(e.pos,50)+"~~~")}Object.defineProperty(t,"__esModule",{value:!0}),t.parseJSON=void 0,t.parseJSON=function(e,t,o){let c=new s(e),a=new r,l=0,u=null,h=[],p=[];function d(){h.push(l),p.push(u)}function f(){l=h.pop(),u=p.pop()}function g(e){n(c,e)}for(;i(c,a);){if(0===l){if(null!==u&&g("too many constructs in root"),3===a.type){u={},o&&(u.$vscodeTextmateLocation=a.toLocation(t)),d(),l=1;continue}if(2===a.type){u=[],d(),l=4;continue}g("unexpected token in root")}if(2===l){if(5===a.type){f();continue}if(7===a.type){l=3;continue}g("expected , or }")}if(1===l||3===l){if(1===l&&5===a.type){f();continue}if(1===a.type){let e=a.value;if(i(c,a)&&6===a.type||g("expected colon"),i(c,a)||g("expected value"),l=2,1===a.type){u[e]=a.value;continue}if(8===a.type){u[e]=null;continue}if(9===a.type){u[e]=!0;continue}if(10===a.type){u[e]=!1;continue}if(11===a.type){u[e]=parseFloat(a.value);continue}if(2===a.type){let t=[];u[e]=t,d(),l=4,u=t;continue}if(3===a.type){let n={};o&&(n.$vscodeTextmateLocation=a.toLocation(t)),u[e]=n,d(),l=1,u=n;continue}}g("unexpected token in dict")}if(5===l){if(4===a.type){f();continue}if(7===a.type){l=6;continue}g("expected , or ]")}if(4===l||6===l){if(4===l&&4===a.type){f();continue}if(l=5,1===a.type){u.push(a.value);continue}if(8===a.type){u.push(null);continue}if(9===a.type){u.push(!0);continue}if(10===a.type){u.push(!1);continue}if(11===a.type){u.push(parseFloat(a.value));continue}if(2===a.type){let e=[];u.push(e),d(),l=4,u=e;continue}if(3===a.type){let e={};o&&(e.$vscodeTextmateLocation=a.toLocation(t)),u.push(e),d(),l=1,u=e;continue}g("unexpected token in array")}g("unknown state")}return 0!==p.length&&g("unclosed constructs"),u};class s{constructor(e){this.source=e,this.pos=0,this.len=e.length,this.line=1,this.char=0}}class r{constructor(){this.value=null,this.type=0,this.offset=-1,this.len=-1,this.line=-1,this.char=-1}toLocation(e){return{filename:e,line:this.line,char:this.char}}}function i(e,t){t.value=null,t.type=0,t.offset=-1,t.len=-1,t.line=-1,t.char=-1;let s,r=e.source,i=e.pos,o=e.len,c=e.line,a=e.char;for(;;){if(i>=o)return!1;if(s=r.charCodeAt(i),32!==s&&9!==s&&13!==s){if(10!==s)break;i++,c++,a=0}else i++,a++}if(t.offset=i,t.line=c,t.char=a,34===s){for(t.type=1,i++,a++;;){if(i>=o)return!1;if(s=r.charCodeAt(i),i++,a++,92!==s){if(34===s)break}else i++,a++}t.value=r.substring(t.offset+1,i-1).replace(/\\u([0-9A-Fa-f]{4})/g,((e,t)=>String.fromCodePoint(parseInt(t,16)))).replace(/\\(.)/g,((t,s)=>{switch(s){case'"':return'"';case"\\":return"\\";case"/":return"/";case"b":return"\b";case"f":return"\f";case"n":return"\n";case"r":return"\r";case"t":return"\t";default:n(e,"invalid escape sequence")}throw new Error("unreachable")}))}else if(91===s)t.type=2,i++,a++;else if(123===s)t.type=3,i++,a++;else if(93===s)t.type=4,i++,a++;else if(125===s)t.type=5,i++,a++;else if(58===s)t.type=6,i++,a++;else if(44===s)t.type=7,i++,a++;else if(110===s){if(t.type=8,i++,a++,s=r.charCodeAt(i),117!==s)return!1;if(i++,a++,s=r.charCodeAt(i),108!==s)return!1;if(i++,a++,s=r.charCodeAt(i),108!==s)return!1;i++,a++}else if(116===s){if(t.type=9,i++,a++,s=r.charCodeAt(i),114!==s)return!1;if(i++,a++,s=r.charCodeAt(i),117!==s)return!1;if(i++,a++,s=r.charCodeAt(i),101!==s)return!1;i++,a++}else if(102===s){if(t.type=10,i++,a++,s=r.charCodeAt(i),97!==s)return!1;if(i++,a++,s=r.charCodeAt(i),108!==s)return!1;if(i++,a++,s=r.charCodeAt(i),115!==s)return!1;if(i++,a++,s=r.charCodeAt(i),101!==s)return!1;i++,a++}else for(t.type=11;;){if(i>=o)return!1;if(s=r.charCodeAt(i),!(46===s||s>=48&&s<=57||101===s||69===s||45===s||43===s))break;i++,a++}return t.len=i-t.offset,null===t.value&&(t.value=r.substr(t.offset,t.len)),e.pos=i,e.line=c,e.char=a,!0}},787:function(e,t,n){var s=this&&this.__createBinding||(Object.create?function(e,t,n,s){void 0===s&&(s=n),Object.defineProperty(e,s,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,s){void 0===s&&(s=n),e[s]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||s(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.parseRawGrammar=t.INITIAL=t.Registry=void 0;const i=n(391),o=n(50),c=n(652),a=n(583),l=n(965);r(n(44),t),t.Registry=class{constructor(e){this._options=e,this._syncRegistry=new c.SyncRegistry(a.Theme.createFromRawTheme(e.theme,e.colorMap),e.onigLib),this._ensureGrammarCache=new Map}dispose(){this._syncRegistry.dispose()}setTheme(e,t){this._syncRegistry.setTheme(a.Theme.createFromRawTheme(e,t))}getColorMap(){return this._syncRegistry.getColorMap()}loadGrammarWithEmbeddedLanguages(e,t,n){return this.loadGrammarWithConfiguration(e,t,{embeddedLanguages:n})}loadGrammarWithConfiguration(e,t,n){return this._loadGrammar(e,t,n.embeddedLanguages,n.tokenTypes,new i.BalancedBracketSelectors(n.balancedBracketSelectors||[],n.unbalancedBracketSelectors||[]))}loadGrammar(e){return this._loadGrammar(e,0,null,null,null)}async _loadGrammar(e,t,n,s,r){const i=new l.ScopeDependencyProcessor(this._syncRegistry,e);for(;i.Q.length>0;)await Promise.all(i.Q.map((e=>this._loadSingleGrammar(e.scopeName)))),i.processQueue();return this._grammarForScopeName(e,t,n,s,r)}async _loadSingleGrammar(e){return this._ensureGrammarCache.has(e)||this._ensureGrammarCache.set(e,this._doLoadSingleGrammar(e)),this._ensureGrammarCache.get(e)}async _doLoadSingleGrammar(e){const t=await this._options.loadGrammar(e);if(t){const n="function"==typeof this._options.getInjections?this._options.getInjections(e):void 0;this._syncRegistry.addGrammar(t,n)}}async addGrammar(e,t=[],n=0,s=null){return this._syncRegistry.addGrammar(e,t),await this._grammarForScopeName(e.scopeName,n,s)}_grammarForScopeName(e,t=0,n=null,s=null,r=null){return this._syncRegistry.grammarForScopeName(e,t,n,s,r)}},t.INITIAL=i.StateStack.NULL,t.parseRawGrammar=o.parseRawGrammar},736:(e,t)=>{function n(e){return!!e&&!!e.match(/[\w\.:]+/)}Object.defineProperty(t,"__esModule",{value:!0}),t.createMatchers=void 0,t.createMatchers=function(e,t){const s=[],r=function(e){let t=/([LR]:|[\w\.:][\w\.:\-]*|[\,\|\-\(\)])/g,n=t.exec(e);return{next:()=>{if(!n)return null;const s=n[0];return n=t.exec(e),s}}}(e);let i=r.next();for(;null!==i;){let e=0;if(2===i.length&&":"===i.charAt(1)){switch(i.charAt(0)){case"R":e=1;break;case"L":e=-1;break;default:console.log(`Unknown priority ${i} in scope selector`)}i=r.next()}let t=c();if(s.push({matcher:t,priority:e}),","!==i)break;i=r.next()}return s;function o(){if("-"===i){i=r.next();const e=o();return t=>!!e&&!e(t)}if("("===i){i=r.next();const e=function(){const e=[];let t=c();for(;t&&(e.push(t),"|"===i||","===i);){do{i=r.next()}while("|"===i||","===i);t=c()}return t=>e.some((e=>e(t)))}();return")"===i&&(i=r.next()),e}if(n(i)){const e=[];do{e.push(i),i=r.next()}while(n(i));return n=>t(e,n)}return null}function c(){const e=[];let t=o();for(;t;)e.push(t),t=o();return t=>e.every((e=>e(t)))}}},44:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.disposeOnigString=void 0,t.disposeOnigString=function(e){"function"==typeof e.dispose&&e.dispose()}},50:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.parseRawGrammar=void 0;const s=n(69),r=n(350),i=n(974);t.parseRawGrammar=function(e,t=null){return null!==t&&/\.json$/.test(t)?(n=e,o=t,r.DebugFlags.InDebugMode?i.parseJSON(n,o,!0):JSON.parse(n)):function(e,t){return r.DebugFlags.InDebugMode?s.parseWithLocation(e,t,"$vscodeTextmateLocation"):s.parsePLIST(e)}(e,t);var n,o}},69:(e,t)=>{function n(e,t,n){const s=e.length;let r=0,i=1,o=0;function c(t){if(null===n)r+=t;else for(;t>0;)10===e.charCodeAt(r)?(r++,i++,o=0):(r++,o++),t--}function a(e){null===n?r=e:c(e-r)}function l(){for(;r<s;){let t=e.charCodeAt(r);if(32!==t&&9!==t&&13!==t&&10!==t)break;c(1)}}function u(t){return e.substr(r,t.length)===t&&(c(t.length),!0)}function h(t){let n=e.indexOf(t,r);a(-1!==n?n+t.length:s)}function p(t){let n=e.indexOf(t,r);if(-1!==n){let s=e.substring(r,n);return a(n+t.length),s}{let t=e.substr(r);return a(s),t}}s>0&&65279===e.charCodeAt(0)&&(r=1);let d=0,f=null,g=[],m=[],_=null;function b(e,t){g.push(d),m.push(f),d=e,f=t}function y(){if(0===g.length)return S("illegal state stack");d=g.pop(),f=m.pop()}function S(t){throw new Error("Near offset "+r+": "+t+" ~~~"+e.substr(r,50)+"~~~")}const k=function(){if(null===_)return S("missing <key>");let e={};null!==n&&(e[n]={filename:t,line:i,char:o}),f[_]=e,_=null,b(1,e)},C=function(){if(null===_)return S("missing <key>");let e=[];f[_]=e,_=null,b(2,e)},R=function(){let e={};null!==n&&(e[n]={filename:t,line:i,char:o}),f.push(e),b(1,e)},A=function(){let e=[];f.push(e),b(2,e)};function w(){if(1!==d)return S("unexpected </dict>");y()}function P(){return 1===d||2!==d?S("unexpected </array>"):void y()}function I(e){if(1===d){if(null===_)return S("missing <key>");f[_]=e,_=null}else 2===d?f.push(e):f=e}function v(e){if(isNaN(e))return S("cannot parse float");if(1===d){if(null===_)return S("missing <key>");f[_]=e,_=null}else 2===d?f.push(e):f=e}function N(e){if(isNaN(e))return S("cannot parse integer");if(1===d){if(null===_)return S("missing <key>");f[_]=e,_=null}else 2===d?f.push(e):f=e}function T(e){if(1===d){if(null===_)return S("missing <key>");f[_]=e,_=null}else 2===d?f.push(e):f=e}function x(e){if(1===d){if(null===_)return S("missing <key>");f[_]=e,_=null}else 2===d?f.push(e):f=e}function G(e){if(1===d){if(null===_)return S("missing <key>");f[_]=e,_=null}else 2===d?f.push(e):f=e}function E(){let e=p(">"),t=!1;return 47===e.charCodeAt(e.length-1)&&(t=!0,e=e.substring(0,e.length-1)),{name:e.trim(),isClosed:t}}function L(e){if(e.isClosed)return"";let t=p("</");return h(">"),t.replace(/&#([0-9]+);/g,(function(e,t){return String.fromCodePoint(parseInt(t,10))})).replace(/&#x([0-9a-f]+);/g,(function(e,t){return String.fromCodePoint(parseInt(t,16))})).replace(/&amp;|&lt;|&gt;|&quot;|&apos;/g,(function(e){switch(e){case"&amp;":return"&";case"&lt;":return"<";case"&gt;":return">";case"&quot;":return'"';case"&apos;":return"'"}return e}))}for(;r<s&&(l(),!(r>=s));){const a=e.charCodeAt(r);if(c(1),60!==a)return S("expected <");if(r>=s)return S("unexpected end of input");const p=e.charCodeAt(r);if(63===p){c(1),h("?>");continue}if(33===p){if(c(1),u("--")){h("--\x3e");continue}h(">");continue}if(47===p){if(c(1),l(),u("plist")){h(">");continue}if(u("dict")){h(">"),w();continue}if(u("array")){h(">"),P();continue}return S("unexpected closed tag")}let g=E();switch(g.name){case"dict":1===d?k():2===d?R():(f={},null!==n&&(f[n]={filename:t,line:i,char:o}),b(1,f)),g.isClosed&&w();continue;case"array":1===d?C():2===d?A():(f=[],b(2,f)),g.isClosed&&P();continue;case"key":M=L(g),1!==d?S("unexpected <key>"):null!==_?S("too many <key>"):_=M;continue;case"string":I(L(g));continue;case"real":v(parseFloat(L(g)));continue;case"integer":N(parseInt(L(g),10));continue;case"date":T(new Date(L(g)));continue;case"data":x(L(g));continue;case"true":L(g),G(!0);continue;case"false":L(g),G(!1);continue}if(!/^plist/.test(g.name))return S("unexpected opened tag "+g.name)}var M;return f}Object.defineProperty(t,"__esModule",{value:!0}),t.parsePLIST=t.parseWithLocation=void 0,t.parseWithLocation=function(e,t,s){return n(e,t,s)},t.parsePLIST=function(e){return n(e,null,null)}},652:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SyncRegistry=void 0;const s=n(391);t.SyncRegistry=class{constructor(e,t){this._onigLibPromise=t,this._grammars=new Map,this._rawGrammars=new Map,this._injectionGrammars=new Map,this._theme=e}dispose(){for(const e of this._grammars.values())e.dispose()}setTheme(e){this._theme=e}getColorMap(){return this._theme.getColorMap()}addGrammar(e,t){this._rawGrammars.set(e.scopeName,e),t&&this._injectionGrammars.set(e.scopeName,t)}lookup(e){return this._rawGrammars.get(e)}injections(e){return this._injectionGrammars.get(e)}getDefaults(){return this._theme.getDefaults()}themeMatch(e){return this._theme.match(e)}async grammarForScopeName(e,t,n,r,i){if(!this._grammars.has(e)){let o=this._rawGrammars.get(e);if(!o)return null;this._grammars.set(e,s.createGrammar(e,o,t,n,r,i,this,await this._onigLibPromise))}return this._grammars.get(e)}}},792:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.CompiledRule=t.RegExpSourceList=t.RegExpSource=t.RuleFactory=t.BeginWhileRule=t.BeginEndRule=t.IncludeOnlyRule=t.MatchRule=t.CaptureRule=t.Rule=t.ruleIdToNumber=t.ruleIdFromNumber=t.whileRuleId=t.endRuleId=void 0;const s=n(878),r=n(965),i=/\\(\d+)/,o=/\\(\d+)/g;Symbol("RuleId"),t.endRuleId=-1,t.whileRuleId=-2,t.ruleIdFromNumber=function(e){return e},t.ruleIdToNumber=function(e){return e};class c{constructor(e,t,n,r){this.$location=e,this.id=t,this._name=n||null,this._nameIsCapturing=s.RegexSource.hasCaptures(this._name),this._contentName=r||null,this._contentNameIsCapturing=s.RegexSource.hasCaptures(this._contentName)}get debugName(){const e=this.$location?`${s.basename(this.$location.filename)}:${this.$location.line}`:"unknown";return`${this.constructor.name}#${this.id} @ ${e}`}getName(e,t){return this._nameIsCapturing&&null!==this._name&&null!==e&&null!==t?s.RegexSource.replaceCaptures(this._name,e,t):this._name}getContentName(e,t){return this._contentNameIsCapturing&&null!==this._contentName?s.RegexSource.replaceCaptures(this._contentName,e,t):this._contentName}}t.Rule=c;class a extends c{constructor(e,t,n,s,r){super(e,t,n,s),this.retokenizeCapturedWithRuleId=r}dispose(){}collectPatterns(e,t){throw new Error("Not supported!")}compile(e,t){throw new Error("Not supported!")}compileAG(e,t,n,s){throw new Error("Not supported!")}}t.CaptureRule=a;class l extends c{constructor(e,t,n,s,r){super(e,t,n,null),this._match=new f(s,this.id),this.captures=r,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}get debugMatchRegExp(){return`${this._match.source}`}collectPatterns(e,t){t.push(this._match)}compile(e,t){return this._getCachedCompiledPatterns(e).compile(e)}compileAG(e,t,n,s){return this._getCachedCompiledPatterns(e).compileAG(e,n,s)}_getCachedCompiledPatterns(e){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new g,this.collectPatterns(e,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}}t.MatchRule=l;class u extends c{constructor(e,t,n,s,r){super(e,t,n,s),this.patterns=r.patterns,this.hasMissingPatterns=r.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}collectPatterns(e,t){for(const n of this.patterns)e.getRule(n).collectPatterns(e,t)}compile(e,t){return this._getCachedCompiledPatterns(e).compile(e)}compileAG(e,t,n,s){return this._getCachedCompiledPatterns(e).compileAG(e,n,s)}_getCachedCompiledPatterns(e){return this._cachedCompiledPatterns||(this._cachedCompiledPatterns=new g,this.collectPatterns(e,this._cachedCompiledPatterns)),this._cachedCompiledPatterns}}t.IncludeOnlyRule=u;class h extends c{constructor(e,t,n,s,r,i,o,c,a,l){super(e,t,n,s),this._begin=new f(r,this.id),this.beginCaptures=i,this._end=new f(o||"￿",-1),this.endHasBackReferences=this._end.hasBackReferences,this.endCaptures=c,this.applyEndPatternLast=a||!1,this.patterns=l.patterns,this.hasMissingPatterns=l.hasMissingPatterns,this._cachedCompiledPatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugEndRegExp(){return`${this._end.source}`}getEndWithResolvedBackReferences(e,t){return this._end.resolveBackReferences(e,t)}collectPatterns(e,t){t.push(this._begin)}compile(e,t){return this._getCachedCompiledPatterns(e,t).compile(e)}compileAG(e,t,n,s){return this._getCachedCompiledPatterns(e,t).compileAG(e,n,s)}_getCachedCompiledPatterns(e,t){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new g;for(const t of this.patterns)e.getRule(t).collectPatterns(e,this._cachedCompiledPatterns);this.applyEndPatternLast?this._cachedCompiledPatterns.push(this._end.hasBackReferences?this._end.clone():this._end):this._cachedCompiledPatterns.unshift(this._end.hasBackReferences?this._end.clone():this._end)}return this._end.hasBackReferences&&(this.applyEndPatternLast?this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length()-1,t):this._cachedCompiledPatterns.setSource(0,t)),this._cachedCompiledPatterns}}t.BeginEndRule=h;class p extends c{constructor(e,n,s,r,i,o,c,a,l){super(e,n,s,r),this._begin=new f(i,this.id),this.beginCaptures=o,this.whileCaptures=a,this._while=new f(c,t.whileRuleId),this.whileHasBackReferences=this._while.hasBackReferences,this.patterns=l.patterns,this.hasMissingPatterns=l.hasMissingPatterns,this._cachedCompiledPatterns=null,this._cachedCompiledWhilePatterns=null}dispose(){this._cachedCompiledPatterns&&(this._cachedCompiledPatterns.dispose(),this._cachedCompiledPatterns=null),this._cachedCompiledWhilePatterns&&(this._cachedCompiledWhilePatterns.dispose(),this._cachedCompiledWhilePatterns=null)}get debugBeginRegExp(){return`${this._begin.source}`}get debugWhileRegExp(){return`${this._while.source}`}getWhileWithResolvedBackReferences(e,t){return this._while.resolveBackReferences(e,t)}collectPatterns(e,t){t.push(this._begin)}compile(e,t){return this._getCachedCompiledPatterns(e).compile(e)}compileAG(e,t,n,s){return this._getCachedCompiledPatterns(e).compileAG(e,n,s)}_getCachedCompiledPatterns(e){if(!this._cachedCompiledPatterns){this._cachedCompiledPatterns=new g;for(const t of this.patterns)e.getRule(t).collectPatterns(e,this._cachedCompiledPatterns)}return this._cachedCompiledPatterns}compileWhile(e,t){return this._getCachedCompiledWhilePatterns(e,t).compile(e)}compileWhileAG(e,t,n,s){return this._getCachedCompiledWhilePatterns(e,t).compileAG(e,n,s)}_getCachedCompiledWhilePatterns(e,t){return this._cachedCompiledWhilePatterns||(this._cachedCompiledWhilePatterns=new g,this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences?this._while.clone():this._while)),this._while.hasBackReferences&&this._cachedCompiledWhilePatterns.setSource(0,t||"￿"),this._cachedCompiledWhilePatterns}}t.BeginWhileRule=p;class d{static createCaptureRule(e,t,n,s,r){return e.registerRule((e=>new a(t,e,n,s,r)))}static getCompiledRuleId(e,t,n){return e.id||t.registerRule((r=>{if(e.id=r,e.match)return new l(e.$vscodeTextmateLocation,e.id,e.name,e.match,d._compileCaptures(e.captures,t,n));if(void 0===e.begin){e.repository&&(n=s.mergeObjects({},n,e.repository));let r=e.patterns;return void 0===r&&e.include&&(r=[{include:e.include}]),new u(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,d._compilePatterns(r,t,n))}return e.while?new p(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,e.begin,d._compileCaptures(e.beginCaptures||e.captures,t,n),e.while,d._compileCaptures(e.whileCaptures||e.captures,t,n),d._compilePatterns(e.patterns,t,n)):new h(e.$vscodeTextmateLocation,e.id,e.name,e.contentName,e.begin,d._compileCaptures(e.beginCaptures||e.captures,t,n),e.end,d._compileCaptures(e.endCaptures||e.captures,t,n),e.applyEndPatternLast,d._compilePatterns(e.patterns,t,n))})),e.id}static _compileCaptures(e,t,n){let s=[];if(e){let r=0;for(const t in e){if("$vscodeTextmateLocation"===t)continue;const e=parseInt(t,10);e>r&&(r=e)}for(let e=0;e<=r;e++)s[e]=null;for(const r in e){if("$vscodeTextmateLocation"===r)continue;const i=parseInt(r,10);let o=0;e[r].patterns&&(o=d.getCompiledRuleId(e[r],t,n)),s[i]=d.createCaptureRule(t,e[r].$vscodeTextmateLocation,e[r].name,e[r].contentName,o)}}return s}static _compilePatterns(e,t,n){let s=[];if(e)for(let i=0,o=e.length;i<o;i++){const o=e[i];let c=-1;if(o.include){const e=r.parseInclude(o.include);switch(e.kind){case 0:case 1:c=d.getCompiledRuleId(n[o.include],t,n);break;case 2:let s=n[e.ruleName];s&&(c=d.getCompiledRuleId(s,t,n));break;case 3:case 4:const r=e.scopeName,i=4===e.kind?e.ruleName:null,a=t.getExternalGrammar(r,n);if(a)if(i){let e=a.repository[i];e&&(c=d.getCompiledRuleId(e,t,a.repository))}else c=d.getCompiledRuleId(a.repository.$self,t,a.repository)}}else c=d.getCompiledRuleId(o,t,n);if(-1!==c){const e=t.getRule(c);let n=!1;if((e instanceof u||e instanceof h||e instanceof p)&&e.hasMissingPatterns&&0===e.patterns.length&&(n=!0),n)continue;s.push(c)}}return{patterns:s,hasMissingPatterns:(e?e.length:0)!==s.length}}}t.RuleFactory=d;class f{constructor(e,t){if(e){const t=e.length;let n=0,s=[],r=!1;for(let i=0;i<t;i++)if("\\"===e.charAt(i)&&i+1<t){const t=e.charAt(i+1);"z"===t?(s.push(e.substring(n,i)),s.push("$(?!\\n)(?<!\\n)"),n=i+2):"A"!==t&&"G"!==t||(r=!0),i++}this.hasAnchor=r,0===n?this.source=e:(s.push(e.substring(n,t)),this.source=s.join(""))}else this.hasAnchor=!1,this.source=e;this.hasAnchor?this._anchorCache=this._buildAnchorCache():this._anchorCache=null,this.ruleId=t,this.hasBackReferences=i.test(this.source)}clone(){return new f(this.source,this.ruleId)}setSource(e){this.source!==e&&(this.source=e,this.hasAnchor&&(this._anchorCache=this._buildAnchorCache()))}resolveBackReferences(e,t){let n=t.map((t=>e.substring(t.start,t.end)));return o.lastIndex=0,this.source.replace(o,((e,t)=>s.escapeRegExpCharacters(n[parseInt(t,10)]||"")))}_buildAnchorCache(){let e,t,n,s,r=[],i=[],o=[],c=[];for(e=0,t=this.source.length;e<t;e++)n=this.source.charAt(e),r[e]=n,i[e]=n,o[e]=n,c[e]=n,"\\"===n&&e+1<t&&(s=this.source.charAt(e+1),"A"===s?(r[e+1]="￿",i[e+1]="￿",o[e+1]="A",c[e+1]="A"):"G"===s?(r[e+1]="￿",i[e+1]="G",o[e+1]="￿",c[e+1]="G"):(r[e+1]=s,i[e+1]=s,o[e+1]=s,c[e+1]=s),e++);return{A0_G0:r.join(""),A0_G1:i.join(""),A1_G0:o.join(""),A1_G1:c.join("")}}resolveAnchors(e,t){return this.hasAnchor&&this._anchorCache?e?t?this._anchorCache.A1_G1:this._anchorCache.A1_G0:t?this._anchorCache.A0_G1:this._anchorCache.A0_G0:this.source}}t.RegExpSource=f;class g{constructor(){this._items=[],this._hasAnchors=!1,this._cached=null,this._anchorCache={A0_G0:null,A0_G1:null,A1_G0:null,A1_G1:null}}dispose(){this._disposeCaches()}_disposeCaches(){this._cached&&(this._cached.dispose(),this._cached=null),this._anchorCache.A0_G0&&(this._anchorCache.A0_G0.dispose(),this._anchorCache.A0_G0=null),this._anchorCache.A0_G1&&(this._anchorCache.A0_G1.dispose(),this._anchorCache.A0_G1=null),this._anchorCache.A1_G0&&(this._anchorCache.A1_G0.dispose(),this._anchorCache.A1_G0=null),this._anchorCache.A1_G1&&(this._anchorCache.A1_G1.dispose(),this._anchorCache.A1_G1=null)}push(e){this._items.push(e),this._hasAnchors=this._hasAnchors||e.hasAnchor}unshift(e){this._items.unshift(e),this._hasAnchors=this._hasAnchors||e.hasAnchor}length(){return this._items.length}setSource(e,t){this._items[e].source!==t&&(this._disposeCaches(),this._items[e].setSource(t))}compile(e){if(!this._cached){let t=this._items.map((e=>e.source));this._cached=new m(e,t,this._items.map((e=>e.ruleId)))}return this._cached}compileAG(e,t,n){return this._hasAnchors?t?n?(this._anchorCache.A1_G1||(this._anchorCache.A1_G1=this._resolveAnchors(e,t,n)),this._anchorCache.A1_G1):(this._anchorCache.A1_G0||(this._anchorCache.A1_G0=this._resolveAnchors(e,t,n)),this._anchorCache.A1_G0):n?(this._anchorCache.A0_G1||(this._anchorCache.A0_G1=this._resolveAnchors(e,t,n)),this._anchorCache.A0_G1):(this._anchorCache.A0_G0||(this._anchorCache.A0_G0=this._resolveAnchors(e,t,n)),this._anchorCache.A0_G0):this.compile(e)}_resolveAnchors(e,t,n){let s=this._items.map((e=>e.resolveAnchors(t,n)));return new m(e,s,this._items.map((e=>e.ruleId)))}}t.RegExpSourceList=g;class m{constructor(e,t,n){this.regExps=t,this.rules=n,this.scanner=e.createOnigScanner(t)}dispose(){"function"==typeof this.scanner.dispose&&this.scanner.dispose()}toString(){const e=[];for(let t=0,n=this.rules.length;t<n;t++)e.push(" - "+this.rules[t]+": "+this.regExps[t]);return e.join("\n")}findNextMatchSync(e,t,n){const s=this.scanner.findNextMatchSync(e,t,n);return s?{ruleId:this.rules[s.index],captureIndices:s.captureIndices}:null}}t.CompiledRule=m},583:(e,t,n)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.ThemeTrieElement=t.ThemeTrieElementRule=t.ColorMap=t.fontStyleToString=t.ParsedThemeRule=t.parseTheme=t.StyleAttributes=t.ScopeStack=t.Theme=void 0;const s=n(878);class r{constructor(e,t,n){this._colorMap=e,this._defaults=t,this._root=n,this._cachedMatchRoot=new s.CachedFn((e=>this._root.match(e)))}static createFromRawTheme(e,t){return this.createFromParsedTheme(a(e),t)}static createFromParsedTheme(e,t){return function(e,t){e.sort(((e,t)=>{let n=s.strcmp(e.scope,t.scope);return 0!==n?n:(n=s.strArrCmp(e.parentScopes,t.parentScopes),0!==n?n:e.index-t.index)}));let n=0,i="#000000",o="#ffffff";for(;e.length>=1&&""===e[0].scope;){let t=e.shift();-1!==t.fontStyle&&(n=t.fontStyle),null!==t.foreground&&(i=t.foreground),null!==t.background&&(o=t.background)}let a=new u(t),l=new c(n,a.getId(i),a.getId(o)),d=new p(new h(0,null,-1,0,0),[]);for(let t=0,n=e.length;t<n;t++){let n=e[t];d.insert(0,n.scope,n.parentScopes,n.fontStyle,a.getId(n.foreground),a.getId(n.background))}return new r(a,l,d)}(e,t)}getColorMap(){return this._colorMap.getColorMap()}getDefaults(){return this._defaults}match(e){if(null===e)return this._defaults;const t=e.scopeName,n=this._cachedMatchRoot.get(t).find((t=>function(e,t){if(null===t)return!0;let n=0,s=t[n];for(;e;){if(o(e.scopeName,s)){if(n++,n===t.length)return!0;s=t[n]}e=e.parent}return!1}(e.parent,t.parentScopes)));return n?new c(n.fontStyle,n.foreground,n.background):null}}t.Theme=r;class i{constructor(e,t){this.parent=e,this.scopeName=t}static from(...e){let t=null;for(let n=0;n<e.length;n++)t=new i(t,e[n]);return t}push(e){return new i(this,e)}getSegments(){let e=this;const t=[];for(;e;)t.push(e.scopeName),e=e.parent;return t.reverse(),t}toString(){return this.getSegments().join(" ")}}function o(e,t){return t===e||e.startsWith(t)&&"."===e[t.length]}t.ScopeStack=i;class c{constructor(e,t,n){this.fontStyle=e,this.foregroundId=t,this.backgroundId=n}}function a(e){if(!e)return[];if(!e.settings||!Array.isArray(e.settings))return[];let t=e.settings,n=[],r=0;for(let e=0,i=t.length;e<i;e++){let i,o=t[e];if(!o.settings)continue;if("string"==typeof o.scope){let e=o.scope;e=e.replace(/^[,]+/,""),e=e.replace(/[,]+$/,""),i=e.split(",")}else i=Array.isArray(o.scope)?o.scope:[""];let c=-1;if("string"==typeof o.settings.fontStyle){c=0;let e=o.settings.fontStyle.split(" ");for(let t=0,n=e.length;t<n;t++)switch(e[t]){case"italic":c|=1;break;case"bold":c|=2;break;case"underline":c|=4;break;case"strikethrough":c|=8}}let a=null;"string"==typeof o.settings.foreground&&s.isValidHexColor(o.settings.foreground)&&(a=o.settings.foreground);let u=null;"string"==typeof o.settings.background&&s.isValidHexColor(o.settings.background)&&(u=o.settings.background);for(let t=0,s=i.length;t<s;t++){let s=i[t].trim().split(" "),o=s[s.length-1],h=null;s.length>1&&(h=s.slice(0,s.length-1),h.reverse()),n[r++]=new l(o,h,e,c,a,u)}}return n}t.StyleAttributes=c,t.parseTheme=a;class l{constructor(e,t,n,s,r,i){this.scope=e,this.parentScopes=t,this.index=n,this.fontStyle=s,this.foreground=r,this.background=i}}t.ParsedThemeRule=l,t.fontStyleToString=function(e){if(-1===e)return"not set";let t="";return 1&e&&(t+="italic "),2&e&&(t+="bold "),4&e&&(t+="underline "),8&e&&(t+="strikethrough "),""===t&&(t="none"),t.trim()};class u{constructor(e){if(this._lastColorId=0,this._id2color=[],this._color2id=Object.create(null),Array.isArray(e)){this._isFrozen=!0;for(let t=0,n=e.length;t<n;t++)this._color2id[e[t]]=t,this._id2color[t]=e[t]}else this._isFrozen=!1}getId(e){if(null===e)return 0;e=e.toUpperCase();let t=this._color2id[e];if(t)return t;if(this._isFrozen)throw new Error(`Missing color in color map - ${e}`);return t=++this._lastColorId,this._color2id[e]=t,this._id2color[t]=e,t}getColorMap(){return this._id2color.slice(0)}}t.ColorMap=u;class h{constructor(e,t,n,s,r){this.scopeDepth=e,this.parentScopes=t,this.fontStyle=n,this.foreground=s,this.background=r}clone(){return new h(this.scopeDepth,this.parentScopes,this.fontStyle,this.foreground,this.background)}static cloneArr(e){let t=[];for(let n=0,s=e.length;n<s;n++)t[n]=e[n].clone();return t}acceptOverwrite(e,t,n,s){this.scopeDepth>e?console.log("how did this happen?"):this.scopeDepth=e,-1!==t&&(this.fontStyle=t),0!==n&&(this.foreground=n),0!==s&&(this.background=s)}}t.ThemeTrieElementRule=h;class p{constructor(e,t=[],n={}){this._mainRule=e,this._children=n,this._rulesWithParentScopes=t}static _sortBySpecificity(e){return 1===e.length||e.sort(this._cmpBySpecificity),e}static _cmpBySpecificity(e,t){if(e.scopeDepth===t.scopeDepth){const n=e.parentScopes,s=t.parentScopes;let r=null===n?0:n.length,i=null===s?0:s.length;if(r===i)for(let e=0;e<r;e++){const t=n[e].length,r=s[e].length;if(t!==r)return r-t}return i-r}return t.scopeDepth-e.scopeDepth}match(e){if(""===e)return p._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes));let t,n,s=e.indexOf(".");return-1===s?(t=e,n=""):(t=e.substring(0,s),n=e.substring(s+1)),this._children.hasOwnProperty(t)?this._children[t].match(n):p._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes))}insert(e,t,n,s,r,i){if(""===t)return void this._doInsertHere(e,n,s,r,i);let o,c,a,l=t.indexOf(".");-1===l?(o=t,c=""):(o=t.substring(0,l),c=t.substring(l+1)),this._children.hasOwnProperty(o)?a=this._children[o]:(a=new p(this._mainRule.clone(),h.cloneArr(this._rulesWithParentScopes)),this._children[o]=a),a.insert(e+1,c,n,s,r,i)}_doInsertHere(e,t,n,r,i){if(null!==t){for(let o=0,c=this._rulesWithParentScopes.length;o<c;o++){let c=this._rulesWithParentScopes[o];if(0===s.strArrCmp(c.parentScopes,t))return void c.acceptOverwrite(e,n,r,i)}-1===n&&(n=this._mainRule.fontStyle),0===r&&(r=this._mainRule.foreground),0===i&&(i=this._mainRule.background),this._rulesWithParentScopes.push(new h(e,t,n,r,i))}else this._mainRule.acceptOverwrite(e,n,r,i)}}t.ThemeTrieElement=p},878:(e,t)=>{function n(e){return Array.isArray(e)?function(e){let t=[];for(let s=0,r=e.length;s<r;s++)t[s]=n(e[s]);return t}(e):"object"==typeof e?function(e){let t={};for(let s in e)t[s]=n(e[s]);return t}(e):e}Object.defineProperty(t,"__esModule",{value:!0}),t.performanceNow=t.CachedFn=t.escapeRegExpCharacters=t.isValidHexColor=t.strArrCmp=t.strcmp=t.RegexSource=t.basename=t.mergeObjects=t.clone=void 0,t.clone=function(e){return n(e)},t.mergeObjects=function(e,...t){return t.forEach((t=>{for(let n in t)e[n]=t[n]})),e},t.basename=function e(t){const n=~t.lastIndexOf("/")||~t.lastIndexOf("\\");return 0===n?t:~n==t.length-1?e(t.substring(0,t.length-1)):t.substr(1+~n)};let s=/\$(\d+)|\${(\d+):\/(downcase|upcase)}/g;function r(e,t){return e<t?-1:e>t?1:0}t.RegexSource=class{static hasCaptures(e){return null!==e&&(s.lastIndex=0,s.test(e))}static replaceCaptures(e,t,n){return e.replace(s,((e,s,r,i)=>{let o=n[parseInt(s||r,10)];if(!o)return e;{let e=t.substring(o.start,o.end);for(;"."===e[0];)e=e.substring(1);switch(i){case"downcase":return e.toLowerCase();case"upcase":return e.toUpperCase();default:return e}}}))}},t.strcmp=r,t.strArrCmp=function(e,t){if(null===e&&null===t)return 0;if(!e)return-1;if(!t)return 1;let n=e.length,s=t.length;if(n===s){for(let s=0;s<n;s++){let n=r(e[s],t[s]);if(0!==n)return n}return 0}return n-s},t.isValidHexColor=function(e){return!!(/^#[0-9a-f]{6}$/i.test(e)||/^#[0-9a-f]{8}$/i.test(e)||/^#[0-9a-f]{3}$/i.test(e)||/^#[0-9a-f]{4}$/i.test(e))},t.escapeRegExpCharacters=function(e){return e.replace(/[\-\\\{\}\*\+\?\|\^\$\.\,\[\]\(\)\#\s]/g,"\\$&")},t.CachedFn=class{constructor(e){this.fn=e,this.cache=new Map}get(e){if(this.cache.has(e))return this.cache.get(e);const t=this.fn(e);return this.cache.set(e,t),t}},t.performanceNow="undefined"==typeof performance?function(){return Date.now()}:function(){return performance.now()}}},t={};return function n(s){var r=t[s];if(void 0!==r)return r.exports;var i=t[s]={exports:{}};return e[s].call(i.exports,i,i.exports,n),i.exports}(787)})()}));
+//# sourceMappingURL=main.js.map \ No newline at end of file
diff --git a/node_modules/vscode-textmate/release/main.js.map b/node_modules/vscode-textmate/release/main.js.map
new file mode 100644
index 0000000..7291f33
--- /dev/null
+++ b/node_modules/vscode-textmate/release/main.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"main.js","mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAwB,eAAID,IAE5BD,EAAqB,eAAIC,GAC1B,CATD,CASGK,MAAM,WACT,M,sCCNAC,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDP,EAAQQ,wBAA0BR,EAAQS,gBAAa,EACvDT,EAAQS,WAAa,CACjBC,YAAiC,oBAAZC,WAA6BA,QAAQC,IAA2B,uBAEzFZ,EAAQQ,yBAA0B,C,aCFlC,IAAWK,EAHXR,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDP,EAAQc,oBAAsBd,EAAQa,4BAAyB,GAEpDA,EA4FiBb,EAAQa,yBAA2Bb,EAAQa,uBAAyB,CAAC,IApFtEE,YAPvB,SAAqBC,GACjB,IAAIC,EAAID,EAAuBE,SAAS,GACxC,KAAOD,EAAEE,OAAS,IACdF,EAAI,IAAMA,EAEd,OAAOA,CACX,EAgBAJ,EAAuBO,MAdvB,SAAeJ,GACX,MAAMK,EAAaR,EAAuBS,cAAcN,GAClDO,EAAYV,EAAuBW,aAAaR,GAChDS,EAAYZ,EAAuBa,aAAaV,GAChDW,EAAad,EAAuBe,cAAcZ,GAClDa,EAAahB,EAAuBiB,cAAcd,GACxDe,QAAQC,IAAI,CACRX,WAAYA,EACZE,UAAWA,EACXE,UAAWA,EACXE,WAAYA,EACZE,WAAYA,GAEpB,EAMAhB,EAAuBS,cAJvB,SAAuBN,GACnB,OAAkC,IAAzBA,KACL,CACR,EAMAH,EAAuBW,aAJvB,SAAsBR,GAClB,OAAkC,IAAzBA,KACL,CACR,EAKAH,EAAuBoB,yBAHvB,SAAkCjB,GAC9B,OAAwE,IAAvC,KAAzBA,EACZ,EAMAH,EAAuBa,aAJvB,SAAsBV,GAClB,OAAkC,MAAzBA,KACL,EACR,EAMAH,EAAuBe,cAJvB,SAAuBZ,GACnB,OAAkC,SAAzBA,KACL,EACR,EAMAH,EAAuBiB,cAJvB,SAAuBd,GACnB,OAAkC,WAAzBA,KACL,EACR,EAwCAH,EAAuBqB,IAlCvB,SAAalB,EAAwBK,EAAYE,EAAWU,EAA0BR,EAAWE,EAAYE,GACzG,IAAIM,EAActB,EAAuBS,cAAcN,GACnDoB,EAAavB,EAAuBW,aAAaR,GACjDqB,EAA+BxB,EAAuBoB,yBAAyBjB,GAA0B,EAAI,EAC7GsB,EAAazB,EAAuBa,aAAaV,GACjDuB,EAAc1B,EAAuBe,cAAcZ,GACnDwB,EAAc3B,EAAuBiB,cAAcd,GAmBvD,OAlBmB,IAAfK,IACAc,EAAcd,GAEA,IAAdE,IACAa,EAAmCb,GAEN,OAA7BU,IACAI,EAA+BJ,EAA2B,EAAI,IAE/C,IAAfR,IACAa,EAAab,GAEE,IAAfE,IACAY,EAAcZ,GAEC,IAAfE,IACAW,EAAcX,IAERM,GAAe,EACpBC,GAAc,EACdC,GACG,GACHC,GAAc,GACdC,GAAe,GACfC,GAAe,MAChB,CACR,EAMJxC,EAAQc,oBAHR,SAA6B2B,GACzB,OAAOA,CACX,C,gBClGApC,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDP,EAAQ0C,6BAA+B1C,EAAQ2C,0BAAuB,EACtE,MAAMC,EAAU,EAAQ,KACxB,MAAMD,EACFE,YAAYxB,EAAYE,GACpBnB,KAAKiB,WAAaA,EAClBjB,KAAKmB,UAAYA,CACrB,EAEJvB,EAAQ2C,qBAAuBA,EAC/B,MAAMD,EACFG,YAAYC,EAAmBC,GAC3B3C,KAAK4C,yBAA2B,IAAIJ,EAAQK,UAAUC,IAClD,MAAM7B,EAAajB,KAAK+C,iBAAiBD,GACnCE,EAAoBhD,KAAKiD,qBAAqBH,GACpD,OAAO,IAAIP,EAAqBtB,EAAY+B,EAAkB,IAElEhD,KAAKkD,mBAAqB,IAAIX,EAAqBG,EAAmB,GACtE1C,KAAKmD,0BAA4B,IAAIC,EAAanD,OAAOoD,QAAQV,GAAqB,CAAC,GAC3F,CACAW,uBACI,OAAOtD,KAAKkD,kBAChB,CACAK,wBAAwBT,GACpB,OAAkB,OAAdA,EACOR,EAA6BkB,qBAEjCxD,KAAK4C,yBAAyBa,IAAIX,EAC7C,CAKAC,iBAAiBW,GACb,OAAO1D,KAAKmD,0BAA0BQ,MAAMD,IAAU,CAC1D,CACAT,qBAAqBH,GACjB,MAAMc,EAAId,EAAUa,MAAMrB,EAA6BuB,4BACvD,IAAKD,EACD,OAAO,EAEX,OAAQA,EAAE,IACN,IAAK,UACD,OAAO,EACX,IAAK,SACD,OAAO,EACX,IAAK,QACD,OAAO,EACX,IAAK,gBACD,OAAO,EAEf,MAAM,IAAIE,MAAM,4CACpB,EAEJlE,EAAQ0C,6BAA+BA,EACvCA,EAA6BkB,qBAAuB,IAAIjB,EAAqB,EAAG,GAChFD,EAA6BuB,2BAA6B,4CAC1D,MAAMT,EACFX,YAAYsB,GACR,GAAsB,IAAlBA,EAAOhD,OACPf,KAAK+D,OAAS,KACd/D,KAAKgE,aAAe,SAEnB,CACDhE,KAAK+D,OAAS,IAAIE,IAAIF,GAEtB,MAAMG,EAAgBH,EAAOI,KAAI,EAAErB,EAAW3C,KAAWqC,EAAQ4B,uBAAuBtB,KACxFoB,EAAcG,OACdH,EAAcI,UACdtE,KAAKgE,aAAe,IAAIO,OAAO,MAAML,EAAcM,KAAK,kBAAmB,GAC/E,CACJ,CACAb,MAAMD,GACF,IAAK1D,KAAKgE,aACN,OAEJ,MAAMJ,EAAIF,EAAMC,MAAM3D,KAAKgE,cAC3B,OAAKJ,EAIE5D,KAAK+D,OAAON,IAAIG,EAAE,SAJzB,CAKJ,E,gBClFJ3D,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDP,EAAQ6E,WAAa7E,EAAQ8E,yBAA2B9E,EAAQ+E,WAAa/E,EAAQgF,qBAAuBhF,EAAQiF,QAAUjF,EAAQkF,mBAAgB,EACtJ,MAAMC,EAAU,EAAQ,KAClBC,EAA2B,EAAQ,IACnCC,EAAY,EAAQ,KACpBC,EAAY,EAAQ,IACpBC,EAAS,EAAQ,KACjBC,EAAU,EAAQ,KAClB5C,EAAU,EAAQ,KAClB6C,EAAiC,EAAQ,KACzCC,EAAmB,EAAQ,IAKjC,SAASC,EAAkBC,EAAQC,EAAUC,EAAMC,EAAmBC,GAClE,MAAMC,EAAWZ,EAAUa,eAAeL,EAAUM,GAC9CC,EAASb,EAAOc,YAAYC,kBAAkBR,EAAMC,EAAmBC,EAAQO,YACrF,IAAK,MAAMC,KAAWP,EAClBL,EAAOa,KAAK,CACRC,cAAeb,EACfW,QAASA,EAAQA,QACjBJ,OAAQA,EACRJ,QAASA,EACTW,SAAUH,EAAQG,UAG9B,CACA,SAASR,EAAYS,EAAYC,GAC7B,GAAIA,EAAO1F,OAASyF,EAAWzF,OAC3B,OAAO,EAEX,IAAI2F,EAAY,EAChB,OAAOF,EAAWG,OAAMC,IACpB,IAAK,IAAIC,EAAIH,EAAWG,EAAIJ,EAAO1F,OAAQ8F,IACvC,GAAIC,EAAkBL,EAAOI,GAAID,GAE7B,OADAF,EAAYG,EAAI,GACT,EAGf,OAAO,CAAK,GAEpB,CACA,SAASC,EAAkBC,EAAejE,GACtC,IAAKiE,EACD,OAAO,EAEX,GAAIA,IAAkBjE,EAClB,OAAO,EAEX,MAAMkE,EAAMlE,EAAU/B,OACtB,OAAOgG,EAAchG,OAASiG,GAAOD,EAAcE,OAAO,EAAGD,KAASlE,GAAoC,MAAvBiE,EAAcC,EACrG,CAtCApH,EAAQkF,cAHR,SAAuBhC,EAAW8C,EAASsB,EAAiBvE,EAAmBwE,EAAYC,EAA0BC,EAAmBC,GACpI,OAAO,IAAIzC,EAAQ/B,EAAW8C,EAASsB,EAAiBvE,EAAmBwE,EAAYC,EAA0BC,EAAmBC,EACxI,EAwCA,MAAMzC,EACFpC,YAAY8E,EAAgB3B,EAASsB,EAAiBvE,EAAmBwE,EAAYC,EAA0BC,EAAmBG,GAa9H,GAZAxH,KAAKuH,eAAiBA,EACtBvH,KAAKoH,yBAA2BA,EAChCpH,KAAKwH,SAAWA,EAChBxH,KAAKyH,8BAAgC,IAAIpC,EAA+B/C,6BAA6B4E,EAAiBvE,GACtH3C,KAAK0H,SAAW,EAChB1H,KAAK2H,YAAc,EACnB3H,KAAK4H,aAAe,CAAC,MACrB5H,KAAK6H,kBAAoB,CAAC,EAC1B7H,KAAK8H,mBAAqBT,EAC1BrH,KAAK+H,SAAWC,EAAYpC,EAAS,MACrC5F,KAAKiI,YAAc,KACnBjI,KAAKkI,mBAAqB,GACtBf,EACA,IAAK,MAAM1B,KAAYxF,OAAOkI,KAAKhB,GAAa,CAC5C,MAAMtB,EAAWZ,EAAUa,eAAeL,EAAUM,GACpD,IAAK,MAAMK,KAAWP,EAClB7F,KAAKkI,mBAAmB7B,KAAK,CACzBD,QAASA,EAAQA,QACjBgC,KAAMjB,EAAW1B,IAG7B,CAER,CACI4C,oBAAkB,OAAOrI,KAAK8H,kBAAoB,CACtDQ,UACI,IAAK,MAAM5C,KAAQ1F,KAAK4H,aAChBlC,GACAA,EAAK4C,SAGjB,CACAC,kBAAkBC,GACd,OAAOxI,KAAKwH,SAASe,kBAAkBC,EAC3C,CACAC,iBAAiBD,GACb,OAAOxI,KAAKwH,SAASiB,iBAAiBD,EAC1C,CACAE,oBAAoBhF,GAChB,OAAO1D,KAAKyH,8BAA8BlE,wBAAwBG,EACtE,CACAiF,qBACI,MAWMnD,EAAS,GACT1C,EAAY9C,KAAKuH,eACjB3B,EAZM,CAAC9C,GACDA,IAAc9C,KAAKuH,eACZvH,KAAK+H,SAET/H,KAAK4I,mBAAmB9F,GAQvBuE,CAAyBvE,GACzC,GAAI8C,EAAS,CAET,MAAMiD,EAAgBjD,EAAQkD,WAC9B,GAAID,EACA,IAAK,IAAIE,KAAcF,EACnBtD,EAAkBC,EAAQuD,EAAYF,EAAcE,GAAa/I,KAAM4F,GAI/E,MAAMoD,EAAsBhJ,KAAK8H,mBAAmBgB,WAAWhG,GAC3DkG,GACAA,EAAoBC,SAASC,IACzB,MAAMC,EAAmBnJ,KAAK4I,mBAAmBM,GACjD,GAAIC,EAAkB,CAClB,MAAM1D,EAAW0D,EAAiBC,kBAC9B3D,GACAF,EAAkBC,EAAQC,EAAU0D,EAAkBnJ,KAAMmJ,EAEpE,IAGZ,CAEA,OADA3D,EAAOnB,MAAK,CAACgF,EAAIC,IAAOD,EAAG9C,SAAW+C,EAAG/C,WAClCf,CACX,CACA+D,gBACI,GAAyB,OAArBvJ,KAAKiI,cACLjI,KAAKiI,YAAcjI,KAAK2I,qBACpB5D,EAAQ1E,WAAWC,aAAeN,KAAKiI,YAAYlH,OAAS,GAAG,CAC/DY,QAAQC,IAAI,WAAW5B,KAAKuH,qDAC5B,IAAK,MAAMiC,KAAaxJ,KAAKiI,YACzBtG,QAAQC,IAAI,OAAO4H,EAAUlD,gBAErC,CAEJ,OAAOtG,KAAKiI,WAChB,CACAwB,aAAa9J,GACT,MAAM+J,IAAO1J,KAAK2H,YACZnC,EAAS7F,EAAQwF,EAAOwE,iBAAiBD,IAE/C,OADA1J,KAAK4H,aAAa8B,GAAMlE,EACjBA,CACX,CACAoE,QAAQ5D,GACJ,OAAOhG,KAAK4H,aAAazC,EAAO0E,eAAe7D,GACnD,CACA4C,mBAAmB9F,EAAWqD,GAC1B,GAAInG,KAAK6H,kBAAkB/E,GACvB,OAAO9C,KAAK6H,kBAAkB/E,GAE7B,GAAI9C,KAAK8H,mBAAoB,CAC9B,MAAMgC,EAAqB9J,KAAK8H,mBAAmBiC,OAAOjH,GAC1D,GAAIgH,EAGA,OADA9J,KAAK6H,kBAAkB/E,GAAakF,EAAY8B,EAAoB3D,GAAcA,EAAW6D,OACtFhK,KAAK6H,kBAAkB/E,EAEtC,CAEJ,CACAmH,aAAaC,EAAUC,EAAWC,EAAY,GAC1C,MAAMvJ,EAAIb,KAAKqK,UAAUH,EAAUC,GAAW,EAAOC,GACrD,MAAO,CACHE,OAAQzJ,EAAE0J,WAAWC,UAAU3J,EAAE4J,UAAW5J,EAAE6J,YAC9CD,UAAW5J,EAAE4J,UACbE,aAAc9J,EAAE8J,aAExB,CACAC,cAAcV,EAAUC,EAAWC,EAAY,GAC3C,MAAMvJ,EAAIb,KAAKqK,UAAUH,EAAUC,GAAW,EAAMC,GACpD,MAAO,CACHE,OAAQzJ,EAAE0J,WAAWM,gBAAgBhK,EAAE4J,UAAW5J,EAAE6J,YACpDD,UAAW5J,EAAE4J,UACbE,aAAc9J,EAAE8J,aAExB,CACAN,UAAUH,EAAUC,EAAWW,EAAkBV,GAI7C,IAAIW,EACJ,IAJsB,IAAlB/K,KAAK0H,UACL1H,KAAK0H,QAAUvC,EAAOc,YAAYC,kBAAkBlG,KAAK+H,SAAS5B,WAAW6E,MAAOhL,KAAMA,KAAK+H,SAAS5B,aAGvGgE,GAAaA,IAAcxF,EAAWsG,KAgBvCF,GAAc,EACdZ,EAAUe,YAjBmC,CAC7CH,GAAc,EACd,MAAMI,EAAqBnL,KAAKyH,8BAA8BnE,uBACxD8H,EAAepL,KAAKqI,cAAcgD,cAClCC,EAAkBtG,EAAyBvE,uBAAuBqB,IAAI,EAAGqJ,EAAmBlK,WAAYkK,EAAmBhK,UAAW,KAAMiK,EAAa/J,UAAW+J,EAAaG,aAAcH,EAAaI,cAC5MC,EAAgBzL,KAAK4J,QAAQ5J,KAAK0H,SAASgE,QAAQ,KAAM,MAC/D,IAAIC,EAEAA,EADAF,EACY7G,EAAqBgH,6BAA6BH,EAAeH,EAAiBtL,MAGlF4E,EAAqBiH,WAAW,UAAWP,GAE3DnB,EAAY,IAAIxF,EAAW,KAAM3E,KAAK0H,SAAU,GAAI,GAAG,EAAO,KAAMiE,EAAWA,EACnF,CAKAzB,GAAsB,KACtB,MAAM4B,EAAe9L,KAAKyI,iBAAiByB,GACrCQ,EAAaoB,EAAaC,QAAQhL,OAClCwJ,EAAa,IAAI9F,EAAWqG,EAAkBZ,EAAUlK,KAAKkI,mBAAoBlI,KAAKoH,0BACtFvG,EAAIyE,EAAiB0G,gBAAgBhM,KAAM8L,EAAcf,EAAa,EAAGZ,EAAWI,GAAY,EAAMH,GAE5G,OADAlF,EAAU+G,kBAAkBH,GACrB,CACHpB,WAAYA,EACZH,WAAYA,EACZE,UAAW5J,EAAEqL,MACbvB,aAAc9J,EAAE8J,aAExB,EAGJ,SAAS3C,EAAYpC,EAASuG,GAS1B,OARAvG,EAAUpD,EAAQ4J,MAAMxG,IAChBO,WAAaP,EAAQO,YAAc,CAAC,EAC5CP,EAAQO,WAAW6E,MAAQ,CACvBqB,wBAAyBzG,EAAQyG,wBACjCC,SAAU1G,EAAQ0G,SAClBC,KAAM3G,EAAQ9C,WAElB8C,EAAQO,WAAW6D,MAAQmC,GAAQvG,EAAQO,WAAW6E,MAC/CpF,CACX,CAXAhG,EAAQiF,QAAUA,EAYlB,MAAMD,EACFnC,YAAY+J,EAAQC,EAAWC,GAC3B1M,KAAKwM,OAASA,EACdxM,KAAKyM,UAAYA,EACjBzM,KAAK0M,gBAAkBA,CAC3B,CACAC,kBAAkB7J,EAAW4J,GACzB,OAAO,IAAI9H,EAAqB,KAAM,IAAIQ,EAAQwH,WAAW,KAAM9J,GAAY4J,EACnF,CACAC,oCAAoC7J,EAAW4J,EAAiB9G,GAC5D,MAAMiH,EAAkBjH,EAAQ8C,oBAAoB5F,GAC9C2J,EAAY,IAAIrH,EAAQwH,WAAW,KAAM9J,GACzCgK,EAAYlH,EAAQyC,cAAc0E,WAAWN,GAC7CO,EAA0BpI,EAAqBqI,gBAAgBP,EAAiBG,EAAiBC,GACvG,OAAO,IAAIlI,EAAqB,KAAM6H,EAAWO,EACrD,CACIlK,gBAAc,OAAO9C,KAAKyM,UAAU3J,SAAW,CACnDoK,OAAOC,GACH,OAAOvI,EAAqBwI,QAAQpN,KAAMmN,EAC9C,CACAR,eAAeU,EAAGC,GACd,OAAG,CACC,GAAID,IAAMC,EACN,OAAO,EAEX,IAAKD,IAAMC,EAEP,OAAO,EAEX,IAAKD,IAAMC,EAEP,OAAO,EAEX,GAAID,EAAEvK,YAAcwK,EAAExK,WAAauK,EAAEX,kBAAoBY,EAAEZ,gBACvD,OAAO,EAGXW,EAAIA,EAAEb,OACNc,EAAIA,EAAEd,MACV,CACJ,CACAG,uBAAuBY,EAAyBC,EAAsBC,GAClE,IAAIpM,GAAa,EACbE,EAAa,EACbE,EAAa,EAMjB,OALwB,OAApBgM,IACApM,EAAYoM,EAAgBpM,UAC5BE,EAAakM,EAAgBlC,aAC7B9J,EAAagM,EAAgBjC,cAE1BxG,EAAyBvE,uBAAuBqB,IAAIyL,EAAyBC,EAAqBvM,WAAYuM,EAAqBrM,UAAW,KAAME,EAAWE,EAAYE,EACtL,CACAiM,eAAejB,EAAW7G,GACtB,GAAkB,OAAd6G,EACA,OAAOzM,KAEX,IAAgC,IAA5ByM,EAAUkB,QAAQ,KAElB,OAAO/I,EAAqBgJ,gBAAgB5N,KAAMyM,EAAW7G,GAEjE,MAAMa,EAASgG,EAAUoB,MAAM,MAC/B,IAAIrI,EAASxF,KACb,IAAK,MAAM0D,KAAS+C,EAChBjB,EAASZ,EAAqBgJ,gBAAgBpI,EAAQ9B,EAAOkC,GAEjE,OAAOJ,CACX,CACAmH,uBAAuBmB,EAAQhL,EAAW8C,GACtC,MAAMmI,EAAcnI,EAAQ8C,oBAAoB5F,GAC1CkL,EAAUF,EAAOrB,UAAUpG,KAAKvD,GAChCmL,EAAwBrI,EAAQyC,cAAc0E,WAAWiB,GACzDE,EAAWtJ,EAAqBqI,gBAAgBa,EAAOpB,gBAAiBqB,EAAaE,GAC3F,OAAO,IAAIrJ,EAAqBkJ,EAAQE,EAASE,EACrD,CACAC,gBACI,OAAOnO,KAAKyM,UAAU2B,aAC1B,EAEJxO,EAAQgF,qBAAuBA,EAI/B,MAAMD,EACFlC,YAIA+J,EAIAxG,EAAQqI,EAAUC,EAIlBC,EAIAC,EAIAC,EAKAC,GACI1O,KAAKwM,OAASA,EACdxM,KAAKgG,OAASA,EACdhG,KAAKuO,qBAAuBA,EAC5BvO,KAAKwO,QAAUA,EACfxO,KAAKyO,eAAiBA,EACtBzO,KAAK0O,sBAAwBA,EAC7B1O,KAAK2O,wBAAqBC,EAC1B5O,KAAK6O,MAAQ7O,KAAKwM,OAASxM,KAAKwM,OAAOqC,MAAQ,EAAI,EACnD7O,KAAK8O,UAAYT,EACjBrO,KAAK+O,WAAaT,CACtB,CACApB,OAAOC,GACH,OAAc,OAAVA,GAGGxI,EAAWyI,QAAQpN,KAAMmN,EACpC,CACAR,eAAeU,EAAGC,GACd,OAAID,IAAMC,KAGLtN,KAAKgP,kBAAkB3B,EAAGC,IAGxBD,EAAEqB,sBAAsBxB,OAAOI,EAAEoB,sBAC5C,CAIA/B,yBAAyBU,EAAGC,GACxB,OAAG,CACC,GAAID,IAAMC,EACN,OAAO,EAEX,IAAKD,IAAMC,EAEP,OAAO,EAEX,IAAKD,IAAMC,EAEP,OAAO,EAEX,GAAID,EAAEwB,QAAUvB,EAAEuB,OACdxB,EAAErH,SAAWsH,EAAEtH,QACfqH,EAAEmB,UAAYlB,EAAEkB,QAChB,OAAO,EAGXnB,EAAIA,EAAEb,OACNc,EAAIA,EAAEd,MACV,CACJ,CACAJ,QACI,OAAOpM,IACX,CACA2M,cAAcsC,GACV,KAAOA,GACHA,EAAGH,WAAa,EAChBG,EAAGF,YAAc,EACjBE,EAAKA,EAAGzC,MAEhB,CACAtB,QACIvG,EAAWuK,OAAOlP,KACtB,CACAmP,MACI,OAAOnP,KAAKwM,MAChB,CACA4C,UACI,OAAIpP,KAAKwM,OACExM,KAAKwM,OAETxM,IACX,CACAqG,KAAKL,EAAQqI,EAAUC,EAAWC,EAAsBC,EAASC,EAAgBC,GAC7E,OAAO,IAAI/J,EAAW3E,KAAMgG,EAAQqI,EAAUC,EAAWC,EAAsBC,EAASC,EAAgBC,EAC5G,CACAW,cACI,OAAOrP,KAAK8O,SAChB,CACAQ,eACI,OAAOtP,KAAK+O,UAChB,CACAnF,QAAQhE,GACJ,OAAOA,EAAQgE,QAAQ5J,KAAKgG,OAChC,CACAlF,WACI,MAAMD,EAAI,GAEV,OADAb,KAAKuP,aAAa1O,EAAG,GACd,IAAMA,EAAE2D,KAAK,KAAO,GAC/B,CACA+K,aAAaC,EAAKC,GAKd,OAJIzP,KAAKwM,SACLiD,EAAWzP,KAAKwM,OAAO+C,aAAaC,EAAKC,IAE7CD,EAAIC,KAAc,IAAIzP,KAAKgG,gBAAgBhG,KAAKyO,wBAAwBzO,KAAK0O,yBACtEe,CACX,CACAC,0BAA0BC,GACtB,OAAI3P,KAAK0O,wBAA0BiB,EACxB3P,KAEJA,KAAKwM,OAAOnG,KAAKrG,KAAKgG,OAAQhG,KAAK8O,UAAW9O,KAAK+O,WAAY/O,KAAKuO,qBAAsBvO,KAAKwO,QAASxO,KAAKyO,eAAgBkB,EACxI,CACAC,YAAYpB,GACR,OAAIxO,KAAKwO,UAAYA,EACVxO,KAEJ,IAAI2E,EAAW3E,KAAKwM,OAAQxM,KAAKgG,OAAQhG,KAAK8O,UAAW9O,KAAK+O,WAAY/O,KAAKuO,qBAAsBC,EAASxO,KAAKyO,eAAgBzO,KAAK0O,sBACnJ,CAEAmB,cAAc1C,GACV,IAAI8B,EAAKjP,KACT,KAAOiP,GAAMA,EAAGH,YAAc3B,EAAM2B,WAAW,CAC3C,GAAIG,EAAGjJ,SAAWmH,EAAMnH,OACpB,OAAO,EAEXiJ,EAAKA,EAAGzC,MACZ,CACA,OAAO,CACX,EAEJ5M,EAAQ+E,WAAaA,EAErBA,EAAWsG,KAAO,IAAItG,EAAW,KAAM,EAAG,EAAG,GAAG,EAAO,KAAM,KAAM,MAiCnE/E,EAAQ8E,yBAhCR,MACIjC,YAAYqN,EAAuBC,GAC/B/P,KAAKgQ,UAAW,EAChBhQ,KAAK8P,sBAAwBA,EAAsBG,SAASxK,GACvC,MAAbA,GACAzF,KAAKgQ,UAAW,EACT,IAEJ/K,EAAUa,eAAeL,EAAUM,GAAa5B,KAAKP,GAAMA,EAAEwC,YAExEpG,KAAK+P,wBAA0BA,EAAwBE,SAASxK,GAAaR,EAAUa,eAAeL,EAAUM,GAAa5B,KAAKP,GAAMA,EAAEwC,WAC9I,CACI8J,oBACA,OAAOlQ,KAAKgQ,UAAoD,IAAxChQ,KAAK+P,wBAAwBhP,MACzD,CACIoP,mBACA,OAA6C,IAAtCnQ,KAAK8P,sBAAsB/O,SAAiBf,KAAKgQ,QAC5D,CACArM,MAAM8C,GACF,IAAK,MAAM2J,KAAYpQ,KAAK+P,wBACxB,GAAIK,EAAS3J,GACT,OAAO,EAGf,IAAK,MAAM4J,KAAYrQ,KAAK8P,sBACxB,GAAIO,EAAS5J,GACT,OAAO,EAGf,OAAOzG,KAAKgQ,QAChB,GAGJ,MAAMvL,EACFhC,YAAYqI,EAAkBZ,EAAUoG,EAAoBlJ,GACxDpH,KAAKoH,yBAA2BA,EAChCpH,KAAKuQ,kBAAoBzF,EACzB9K,KAAKwQ,oBAAsBF,EACvBvL,EAAQ1E,WAAWC,YACnBN,KAAKyQ,UAAYvG,EAGjBlK,KAAKyQ,UAAY,KAErBzQ,KAAK0Q,QAAU,GACf1Q,KAAK2Q,cAAgB,GACrB3Q,KAAK4Q,mBAAqB,CAC9B,CACAC,QAAQ3E,EAAO4E,GACX9Q,KAAK+Q,kBAAkB7E,EAAMwC,sBAAuBoC,EACxD,CACAC,kBAAkBC,EAAYF,GAC1B,GAAI9Q,KAAK4Q,oBAAsBE,EAC3B,OAEJ,GAAI9Q,KAAKuQ,kBAAmB,CACxB,IAAIrC,EAAW8C,EAAWtE,gBACtB7K,GAA2B,EAI/B,GAHI7B,KAAKoH,0BAA0B8I,gBAC/BrO,GAA2B,GAE3B7B,KAAKwQ,oBAAoBzP,OAAS,GAAMf,KAAKoH,2BAA6BpH,KAAKoH,yBAAyB8I,gBAAkBlQ,KAAKoH,yBAAyB+I,aAAe,CAEvK,MAAM1J,EAASuK,EAAW7C,gBAC1B,IAAK,MAAMhN,KAAanB,KAAKwQ,oBACrBrP,EAAUiF,QAAQK,KAClByH,EAAWlJ,EAAyBvE,uBAAuBqB,IAAIoM,EAAU,EAAGlJ,EAAyBtE,oBAAoBS,EAAUiH,MAAO,MAAO,EAAgB,EAAG,IAGxKpI,KAAKoH,2BACLvF,EAA2B7B,KAAKoH,yBAAyBzD,MAAM8C,GAEvE,CAIA,GAHI5E,IACAqM,EAAWlJ,EAAyBvE,uBAAuBqB,IAAIoM,EAAU,EAAG,EAAgBrM,GAA2B,EAAgB,EAAG,IAE1I7B,KAAK2Q,cAAc5P,OAAS,GAAKf,KAAK2Q,cAAc3Q,KAAK2Q,cAAc5P,OAAS,KAAOmN,EAGvF,YADAlO,KAAK4Q,mBAAqBE,GAG9B,GAAI/L,EAAQ1E,WAAWC,YAAa,CAChC,MAAMmG,EAASuK,EAAW7C,gBAC1BxM,QAAQC,IAAI,aAAe5B,KAAKyQ,UAAUQ,UAAUjR,KAAK4Q,mBAAoBE,GAAUI,QAAQ,MAAO,OAAS,KAC/G,IAAK,IAAIC,EAAI,EAAGA,EAAI1K,EAAO1F,OAAQoQ,IAC/BxP,QAAQC,IAAI,WAAa6E,EAAO0K,GAExC,CAIA,OAHAnR,KAAK2Q,cAActK,KAAKrG,KAAK4Q,oBAC7B5Q,KAAK2Q,cAActK,KAAK6H,QACxBlO,KAAK4Q,mBAAqBE,EAE9B,CACA,MAAMrK,EAASuK,EAAW7C,gBAC1B,GAAIpJ,EAAQ1E,WAAWC,YAAa,CAChCqB,QAAQC,IAAI,aAAe5B,KAAKyQ,UAAUQ,UAAUjR,KAAK4Q,mBAAoBE,GAAUI,QAAQ,MAAO,OAAS,KAC/G,IAAK,IAAIC,EAAI,EAAGA,EAAI1K,EAAO1F,OAAQoQ,IAC/BxP,QAAQC,IAAI,WAAa6E,EAAO0K,GAExC,CACAnR,KAAK0Q,QAAQrK,KAAK,CACd+K,WAAYpR,KAAK4Q,mBACjBE,SAAUA,EAEVrK,OAAQA,IAEZzG,KAAK4Q,mBAAqBE,CAC9B,CACAtG,UAAU0B,EAAOxB,GAUb,OATI1K,KAAK0Q,QAAQ3P,OAAS,GAAKf,KAAK0Q,QAAQ1Q,KAAK0Q,QAAQ3P,OAAS,GAAGqQ,aAAe1G,EAAa,GAE7F1K,KAAK0Q,QAAQvB,MAEW,IAAxBnP,KAAK0Q,QAAQ3P,SACbf,KAAK4Q,oBAAsB,EAC3B5Q,KAAK6Q,QAAQ3E,EAAOxB,GACpB1K,KAAK0Q,QAAQ1Q,KAAK0Q,QAAQ3P,OAAS,GAAGqQ,WAAa,GAEhDpR,KAAK0Q,OAChB,CACA7F,gBAAgBqB,EAAOxB,GACf1K,KAAK2Q,cAAc5P,OAAS,GAAKf,KAAK2Q,cAAc3Q,KAAK2Q,cAAc5P,OAAS,KAAO2J,EAAa,IAEpG1K,KAAK2Q,cAAcxB,MACnBnP,KAAK2Q,cAAcxB,OAEW,IAA9BnP,KAAK2Q,cAAc5P,SACnBf,KAAK4Q,oBAAsB,EAC3B5Q,KAAK6Q,QAAQ3E,EAAOxB,GACpB1K,KAAK2Q,cAAc3Q,KAAK2Q,cAAc5P,OAAS,GAAK,GAExD,MAAMyE,EAAS,IAAI6L,YAAYrR,KAAK2Q,cAAc5P,QAClD,IAAK,IAAI8F,EAAI,EAAGG,EAAMhH,KAAK2Q,cAAc5P,OAAQ8F,EAAIG,EAAKH,IACtDrB,EAAOqB,GAAK7G,KAAK2Q,cAAc9J,GAEnC,OAAOrB,CACX,EAEJ5F,EAAQ6E,WAAaA,C,gBCjmBrBxE,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDP,EAAQ0R,aAAe1R,EAAQ2R,4BAA8B3R,EAAQ4R,kBAAoB5R,EAAQ6R,kBAAoB7R,EAAQ8R,cAAgB9R,EAAQ+R,cAAgB/R,EAAQgS,yBAA2BhS,EAAQiS,2BAA6BjS,EAAQkS,gCAAkClS,EAAQmS,2BAAwB,EACvT,MAAMvP,EAAU,EAAQ,KAIxB,MAAMuP,EACFtP,YAAYK,GACR9C,KAAK8C,UAAYA,CACrB,CACAkP,QACI,OAAOhS,KAAK8C,SAChB,EAEJlD,EAAQmS,sBAAwBA,EAIhC,MAAMD,EACFrP,YAAYK,EAAWmP,GACnBjS,KAAK8C,UAAYA,EACjB9C,KAAKiS,SAAWA,CACpB,CACAD,QACI,MAAO,GAAGhS,KAAK8C,aAAa9C,KAAKiS,UACrC,EAEJrS,EAAQkS,gCAAkCA,EAC1C,MAAMD,EACFpP,cACIzC,KAAKkS,YAAc,GACnBlS,KAAKmS,mBAAqB,IAAIC,IAC9BpS,KAAKqS,YAAc,IAAID,GAC3B,CACIE,iBACA,OAAOtS,KAAKkS,WAChB,CACAK,IAAIC,GACA,MAAMC,EAAMD,EAAUR,QAClBhS,KAAKmS,mBAAmBO,IAAID,KAGhCzS,KAAKmS,mBAAmBI,IAAIE,GAC5BzS,KAAKkS,YAAY7L,KAAKmM,GAC1B,EA4CJ,SAASG,EAA6BH,EAAWI,EAAsBC,EAAMrN,GACzE,MAAMsN,EAAcD,EAAK9I,OAAOyI,EAAU1P,WAC1C,IAAKgQ,EAAa,CACd,GAAIN,EAAU1P,YAAc8P,EACxB,MAAM,IAAI9O,MAAM,4BAA4B8O,MAEhD,MACJ,CACA,MAAMG,EAAcF,EAAK9I,OAAO6I,GAC5BJ,aAAqBT,EACrBiB,EAAwC,CAAED,cAAaD,eAAetN,GAGtEyN,EAAkDT,EAAUP,SAAU,CAAEc,cAAaD,cAAa3M,WAAY2M,EAAY3M,YAAcX,GAE5I,MAAMsD,EAAa+J,EAAK/J,WAAW0J,EAAU1P,WAC7C,GAAIgG,EACA,IAAK,MAAMU,KAAaV,EACpBtD,EAAO+M,IAAI,IAAIR,EAAsBvI,GAGjD,CACA,SAASyJ,EAAkDhB,EAAUiB,EAAS1N,GACtE0N,EAAQ/M,YAAc+M,EAAQ/M,WAAW8L,IAEzCkB,EAAiC,CADpBD,EAAQ/M,WAAW8L,IACSiB,EAAS1N,EAE1D,CACA,SAASwN,EAAwCE,EAAS1N,GAClD0N,EAAQJ,YAAYxG,UAAY8G,MAAMC,QAAQH,EAAQJ,YAAYxG,WAClE6G,EAAiCD,EAAQJ,YAAYxG,SAAU,IAAK4G,EAAS/M,WAAY+M,EAAQJ,YAAY3M,YAAcX,GAE3H0N,EAAQJ,YAAYhK,YACpBqK,EAAiClT,OAAO8D,OAAOmP,EAAQJ,YAAYhK,YAAa,IAAKoK,EAAS/M,WAAY+M,EAAQJ,YAAY3M,YAAcX,EAEpJ,CACA,SAAS2N,EAAiCG,EAAOJ,EAAS1N,GACtD,IAAK,MAAME,KAAQ4N,EAAO,CACtB,GAAI9N,EAAO6M,YAAYK,IAAIhN,GACvB,SAEJF,EAAO6M,YAAYE,IAAI7M,GACvB,MAAM6N,EAAoB7N,EAAKS,WAAa3D,EAAQgR,aAAa,CAAC,EAAGN,EAAQ/M,WAAYT,EAAKS,YAAc+M,EAAQ/M,WAChHiN,MAAMC,QAAQ3N,EAAK4G,WACnB6G,EAAiCzN,EAAK4G,SAAU,IAAK4G,EAAS/M,WAAYoN,GAAqB/N,GAEnG,MAAMiO,EAAU/N,EAAK+N,QACrB,IAAKA,EACD,SAEJ,MAAMjB,EAAYlB,EAAamC,GAC/B,OAAQjB,EAAUkB,MACd,KAAK,EACDV,EAAwC,IAAKE,EAASJ,YAAaI,EAAQH,aAAevN,GAC1F,MACJ,KAAK,EACDwN,EAAwCE,EAAS1N,GACjD,MACJ,KAAK,EACDyN,EAAkDT,EAAUP,SAAU,IAAKiB,EAAS/M,WAAYoN,GAAqB/N,GACrH,MACJ,KAAK,EACL,KAAK,EACD,MAAMsN,EAAcN,EAAU1P,YAAcoQ,EAAQJ,YAAYhQ,UAC1DoQ,EAAQJ,YACRN,EAAU1P,YAAcoQ,EAAQH,YAAYjQ,UACxCoQ,EAAQH,iBACRnE,EACV,GAAIkE,EAAa,CACb,MAAMa,EAAa,CAAEZ,YAAaG,EAAQH,YAAaD,cAAa3M,WAAYoN,GACzD,IAAnBf,EAAUkB,KACVT,EAAkDT,EAAUP,SAAU0B,EAAYnO,GAGlFwN,EAAwCW,EAAYnO,EAE5D,MAE2B,IAAnBgN,EAAUkB,KACVlO,EAAO+M,IAAI,IAAIT,EAAgCU,EAAU1P,UAAW0P,EAAUP,WAG9EzM,EAAO+M,IAAI,IAAIR,EAAsBS,EAAU1P,YAKnE,CACJ,CAlIAlD,EAAQiS,2BAA6BA,EAyCrCjS,EAAQgS,yBAxCR,MACInP,YAAYoQ,EAAMe,GACd5T,KAAK6S,KAAOA,EACZ7S,KAAK4T,iBAAmBA,EACxB5T,KAAK6T,sBAAwB,IAAIzB,IACjCpS,KAAK8T,yBAA2B,IAAI1B,IACpCpS,KAAK6T,sBAAsBtB,IAAIvS,KAAK4T,kBACpC5T,KAAK+T,EAAI,CAAC,IAAIhC,EAAsB/R,KAAK4T,kBAC7C,CACAI,eACI,MAAMC,EAAIjU,KAAK+T,EACf/T,KAAK+T,EAAI,GACT,MAAMG,EAAO,IAAIrC,EACjB,IAAK,MAAMsC,KAAOF,EACdtB,EAA6BwB,EAAKnU,KAAK4T,iBAAkB5T,KAAK6S,KAAMqB,GAExE,IAAK,MAAMC,KAAOD,EAAK5B,WACnB,GAAI6B,aAAepC,EAAuB,CACtC,GAAI/R,KAAK6T,sBAAsBnB,IAAIyB,EAAIrR,WAEnC,SAEJ9C,KAAK6T,sBAAsBtB,IAAI4B,EAAIrR,WACnC9C,KAAK+T,EAAE1N,KAAK8N,EAChB,KACK,CACD,GAAInU,KAAK6T,sBAAsBnB,IAAIyB,EAAIrR,WAEnC,SAEJ,GAAI9C,KAAK8T,yBAAyBpB,IAAIyB,EAAInC,SAEtC,SAEJhS,KAAK8T,yBAAyBvB,IAAI4B,EAAInC,SACtChS,KAAK+T,EAAE1N,KAAK8N,EAChB,CAER,GA4FJ,MAAMxC,EACFlP,cACIzC,KAAK0T,KAAO,CAChB,EAEJ9T,EAAQ+R,cAAgBA,EACxB,MAAMD,EACFjP,cACIzC,KAAK0T,KAAO,CAChB,EAEJ9T,EAAQ8R,cAAgBA,EACxB,MAAMD,EACFhP,YAAYwP,GACRjS,KAAKiS,SAAWA,EAChBjS,KAAK0T,KAAO,CAChB,EAEJ9T,EAAQ6R,kBAAoBA,EAC5B,MAAMD,EACF/O,YAAYK,GACR9C,KAAK8C,UAAYA,EACjB9C,KAAK0T,KAAO,CAChB,EAEJ9T,EAAQ4R,kBAAoBA,EAC5B,MAAMD,EACF9O,YAAYK,EAAWmP,GACnBjS,KAAK8C,UAAYA,EACjB9C,KAAKiS,SAAWA,EAChBjS,KAAK0T,KAAO,CAChB,EAGJ,SAASpC,EAAamC,GAClB,GAAgB,UAAZA,EACA,OAAO,IAAI9B,EAEV,GAAgB,UAAZ8B,EACL,OAAO,IAAI/B,EAEf,MAAM0C,EAAeX,EAAQ9F,QAAQ,KACrC,IAAsB,IAAlByG,EACA,OAAO,IAAI5C,EAAkBiC,GAE5B,GAAqB,IAAjBW,EACL,OAAO,IAAI3C,EAAkBgC,EAAQxC,UAAU,IAE9C,CACD,MAAMnO,EAAY2Q,EAAQxC,UAAU,EAAGmD,GACjCnC,EAAWwB,EAAQxC,UAAUmD,EAAe,GAClD,OAAO,IAAI7C,EAA4BzO,EAAWmP,EACtD,CACJ,CApBArS,EAAQ2R,4BAA8BA,EAqBtC3R,EAAQ0R,aAAeA,C,sBCvOvB,IAAI+C,EAAmBrU,MAAQA,KAAKqU,kBAAqBpU,OAAOqU,OAAS,SAAUC,EAAG3Q,EAAGuN,EAAGqD,QAC7E5F,IAAP4F,IAAkBA,EAAKrD,GAC3BlR,OAAOC,eAAeqU,EAAGC,EAAI,CAAEC,YAAY,EAAMhR,IAAK,WAAa,OAAOG,EAAEuN,EAAI,GACnF,EAAI,SAAUoD,EAAG3Q,EAAGuN,EAAGqD,QACT5F,IAAP4F,IAAkBA,EAAKrD,GAC3BoD,EAAEC,GAAM5Q,EAAEuN,EACb,GACGuD,EAAgB1U,MAAQA,KAAK0U,cAAiB,SAAS9Q,EAAGhE,GAC1D,IAAK,IAAI+U,KAAK/Q,EAAa,YAAN+Q,GAAoB1U,OAAO2U,UAAUC,eAAeC,KAAKlV,EAAS+U,IAAIN,EAAgBzU,EAASgE,EAAG+Q,EAC3H,EACA1U,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDuU,EAAa,EAAQ,KAAc9U,E,eCXnCK,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDP,EAAQmV,kBAAoBnV,EAAQoM,qBAAkB,EACtD,MAAMjH,EAAU,EAAQ,KAClBG,EAAY,EAAQ,IACpBC,EAAS,EAAQ,KACjB3C,EAAU,EAAQ,KACxB,MAAMwS,EACFvS,YAAYyJ,EAAOvB,GACf3K,KAAKkM,MAAQA,EACblM,KAAK2K,aAAeA,CACxB,EAcJ,SAASqB,EAAgBpG,EAASsE,EAAUa,EAAakK,EAAS/I,EAAO3B,EAAY2K,EAAsB9K,GACvG,MAAMM,EAAaR,EAAS6B,QAAQhL,OACpC,IAAIoU,GAAO,EACPC,GAAkB,EACtB,GAAIF,EAAsB,CACtB,MAAMG,EAwKd,SAA+BzP,EAASsE,EAAUa,EAAakK,EAAS/I,EAAO3B,GAC3E,IAAI6K,EAAkBlJ,EAAMqC,qBAAuB,GAAK,EACxD,MAAM+G,EAAa,GACnB,IAAK,IAAIC,EAAOrJ,EAAOqJ,EAAMA,EAAOA,EAAKpG,MAAO,CAC5C,MAAMqG,EAAWD,EAAK3L,QAAQhE,GAC1B4P,aAAoBrQ,EAAOsQ,gBAC3BH,EAAWjP,KAAK,CACZX,KAAM8P,EACNtJ,MAAOqJ,GAGnB,CACA,IAAK,IAAIG,EAAYJ,EAAWnG,MAAOuG,EAAWA,EAAYJ,EAAWnG,MAAO,CAC5E,MAAM,YAAEwG,EAAW,YAAEC,GAAgBC,EAAuBH,EAAUhQ,KAAME,EAAS8P,EAAUxJ,MAAMsC,QAASzD,EAAakK,IAAYG,GACjIvU,EAAI8U,EAAYG,kBAAkB5L,EAAU+K,EAASW,GAK3D,GAJI7Q,EAAQ1E,WAAWC,cACnBqB,QAAQC,IAAI,6BACZD,QAAQC,IAAI+T,EAAY7U,cAExBD,EAkBC,CACGkE,EAAQ1E,WAAWC,aACnBqB,QAAQC,IAAI,aAAe8T,EAAUhQ,KAAKqQ,UAAY,MAAQL,EAAUhQ,KAAKsQ,kBAEjF9J,EAAQwJ,EAAUxJ,MAAMiD,MACxB,KACJ,CAtBI,GADsBtO,EAAEmF,SACFb,EAAO8Q,YAAa,CAEtC/J,EAAQwJ,EAAUxJ,MAAMiD,MACxB,KACJ,CACItO,EAAEqV,gBAAkBrV,EAAEqV,eAAenV,SACrCwJ,EAAWsG,QAAQ6E,EAAUxJ,MAAOrL,EAAEqV,eAAe,GAAGC,OACxDC,EAAexQ,EAASsE,EAAUa,EAAa2K,EAAUxJ,MAAO3B,EAAYmL,EAAUhQ,KAAK2Q,cAAexV,EAAEqV,gBAC5G3L,EAAWsG,QAAQ6E,EAAUxJ,MAAOrL,EAAEqV,eAAe,GAAGI,KACxDlB,EAAiBvU,EAAEqV,eAAe,GAAGI,IACjCzV,EAAEqV,eAAe,GAAGI,IAAMrB,IAC1BA,EAAUpU,EAAEqV,eAAe,GAAGI,IAC9BvL,GAAc,GAW9B,CACA,MAAO,CAAEmB,MAAOA,EAAO+I,QAASA,EAASG,eAAgBA,EAAgBrK,YAAaA,EAC1F,CAtNiCwL,CAAsB3Q,EAASsE,EAAUa,EAAakK,EAAS/I,EAAO3B,GAC/F2B,EAAQmJ,EAAiBnJ,MACzB+I,EAAUI,EAAiBJ,QAC3BlK,EAAcsK,EAAiBtK,YAC/BqK,EAAiBC,EAAiBD,cACtC,CACA,MAAMoB,EAAYC,KAAKC,MACvB,MAAQvB,GAAM,CACV,GAAkB,IAAd/K,GACoBqM,KAAKC,MAAQF,EACfpM,EACd,OAAO,IAAI4K,EAAqB9I,GAAO,GAG/CyK,GACJ,CACA,OAAO,IAAI3B,EAAqB9I,GAAO,GACvC,SAASyK,IACD5R,EAAQ1E,WAAWC,cACnBqB,QAAQC,IAAI,IACZD,QAAQC,IAAI,cAAcqT,OAAa/K,EAAS6B,QAC3C9E,OAAOgO,GACP/D,QAAQ,MAAO,YAExB,MAAMrQ,EA+Ld,SAA+B+E,EAASsE,EAAUa,EAAakK,EAAS/I,EAAOkJ,GAE3E,MAAMwB,EAyBV,SAAmBhR,EAASsE,EAAUa,EAAakK,EAAS/I,EAAOkJ,GAC/D,MAAM1P,EAAOwG,EAAMtC,QAAQhE,IACrB,YAAE+P,EAAW,YAAEC,GAAgBiB,EAAkBnR,EAAME,EAASsG,EAAMsC,QAASzD,EAAakK,IAAYG,GAC9G,IAAI0B,EAAY,EACZ/R,EAAQ1E,WAAWC,cACnBwW,EAAYtU,EAAQuU,kBAExB,MAAMlW,EAAI8U,EAAYG,kBAAkB5L,EAAU+K,EAASW,GAC3D,GAAI7Q,EAAQ1E,WAAWC,YAAa,CAChC,MAAM0W,EAAgBxU,EAAQuU,iBAAmBD,EAC7CE,EAAgB,GAChBrV,QAAQsV,KAAK,QAAQvR,EAAKqQ,cAAcrQ,EAAKgE,qBAAqBsN,cAA0B9M,MAEhGvI,QAAQC,IAAI,4BAA4BqT,sBAA4BG,MACpEzT,QAAQC,IAAI+T,EAAY7U,YACpBD,GACAc,QAAQC,IAAI,oBAAoBf,EAAEmF,eAAenF,EAAEqV,eAAe,GAAGC,YAAYtV,EAAEqV,eAAe,GAAGI,MAE7G,CACA,OAAIzV,EACO,CACHqV,eAAgBrV,EAAEqV,eAClBgB,cAAerW,EAAEmF,QAGlB,IACX,CAnDwBmR,CAAUvR,EAASsE,EAAUa,EAAakK,EAAS/I,EAAOkJ,GAExEtM,EAAalD,EAAQ2D,gBAC3B,GAA0B,IAAtBT,EAAW/H,OAEX,OAAO6V,EAEX,MAAMQ,EA6CV,SAAyBtO,EAAYlD,EAASsE,EAAUa,EAAakK,EAAS/I,EAAOkJ,GAEjF,IAEIiC,EAFAC,EAAkBC,OAAOC,UACzBC,EAA0B,KAE1BC,EAA0B,EAC9B,MAAMjR,EAASyF,EAAMwC,sBAAsBP,gBAC3C,IAAK,IAAItH,EAAI,EAAGG,EAAM8B,EAAW/H,OAAQ8F,EAAIG,EAAKH,IAAK,CACnD,MAAM2C,EAAYV,EAAWjC,GAC7B,IAAK2C,EAAUpD,QAAQK,GAEnB,SAEJ,MAAMf,EAAOE,EAAQgE,QAAQJ,EAAUxD,SACjC,YAAE2P,EAAW,YAAEC,GAAgBiB,EAAkBnR,EAAME,EAAS,KAAMmF,EAAakK,IAAYG,GAC/FwB,EAAcjB,EAAYG,kBAAkB5L,EAAU+K,EAASW,GACrE,IAAKgB,EACD,SAEA7R,EAAQ1E,WAAWC,cACnBqB,QAAQC,IAAI,wBAAwB4H,EAAUlD,iBAC9C3E,QAAQC,IAAI+T,EAAY7U,aAE5B,MAAM6W,EAAcf,EAAYV,eAAe,GAAGC,MAClD,KAAIwB,GAAeL,KAInBA,EAAkBK,EAClBF,EAA0Bb,EAAYV,eACtCmB,EAAkBT,EAAY5Q,OAC9B0R,EAA0BlO,EAAUjD,SAChC+Q,IAAoBrC,GAEpB,KAER,CACA,OAAIwC,EACO,CACHG,eAA4C,IAA7BF,EACfxB,eAAgBuB,EAChBP,cAAeG,GAGhB,IACX,CA1F4BQ,CAAgB/O,EAAYlD,EAASsE,EAAUa,EAAakK,EAAS/I,EAAOkJ,GACpG,IAAKgC,EAED,OAAOR,EAEX,IAAKA,EAED,OAAOQ,EAGX,MAAMU,EAAmBlB,EAAYV,eAAe,GAAGC,MACjD4B,EAAuBX,EAAgBlB,eAAe,GAAGC,MAC/D,OAAI4B,EAAuBD,GAAqBV,EAAgBQ,eAAiBG,IAAyBD,EAE/FV,EAEJR,CACX,CAzNkBoB,CAAsBpS,EAASsE,EAAUa,EAAakK,EAAS/I,EAAOkJ,GAChF,IAAKvU,EAOD,OANIkE,EAAQ1E,WAAWC,aACnBqB,QAAQC,IAAI,sBAGhB2I,EAAWsG,QAAQ3E,EAAOxB,QAC1ByK,GAAO,GAGX,MAAMe,EAAiBrV,EAAEqV,eACnBgB,EAAgBrW,EAAEqW,cAClBe,KAAc/B,GAAkBA,EAAenV,OAAS,IACxDmV,EAAe,GAAGI,IAAMrB,EAE9B,GAAIiC,IAAkB/R,EAAO+S,UAAW,CAEpC,MAAMC,EAAajM,EAAMtC,QAAQhE,GAC7Bb,EAAQ1E,WAAWC,aACnBqB,QAAQC,IAAI,aACRuW,EAAWpC,UACX,MACAoC,EAAWC,gBAEnB7N,EAAWsG,QAAQ3E,EAAOgK,EAAe,GAAGC,OAC5CjK,EAAQA,EAAMwD,0BAA0BxD,EAAMuC,gBAC9C2H,EAAexQ,EAASsE,EAAUa,EAAamB,EAAO3B,EAAY4N,EAAWE,YAAanC,GAC1F3L,EAAWsG,QAAQ3E,EAAOgK,EAAe,GAAGI,KAE5C,MAAMgC,EAASpM,EAGf,GAFAA,EAAQA,EAAMM,OACd4I,EAAiBkD,EAAOhJ,gBACnB2I,GAAeK,EAAOjJ,gBAAkB4F,EAUzC,OARIlQ,EAAQ1E,WAAWC,aACnBqB,QAAQ4W,MAAM,0FAIlBrM,EAAQoM,EACR/N,EAAWsG,QAAQ3E,EAAOxB,QAC1ByK,GAAO,EAGf,KACK,CAED,MAAMqD,EAAQ5S,EAAQgE,QAAQsN,GAC9B3M,EAAWsG,QAAQ3E,EAAOgK,EAAe,GAAGC,OAC5C,MAAMsC,EAAavM,EAEbpJ,EAAY0V,EAAM9M,QAAQxB,EAAS6B,QAASmK,GAC5CzH,EAAiBvC,EAAMwC,sBAAsBhB,eAAe5K,EAAW8C,GAE7E,GADAsG,EAAQA,EAAM7F,KAAK6Q,EAAejC,EAASG,EAAgBc,EAAe,GAAGI,MAAQ5L,EAAY,KAAM+D,EAAgBA,GACnH+J,aAAiBrT,EAAOuT,aAAc,CACtC,MAAMC,EAAaH,EACfzT,EAAQ1E,WAAWC,aACnBqB,QAAQC,IAAI,aACR+W,EAAW5C,UACX,MACA4C,EAAWC,kBAEnBxC,EAAexQ,EAASsE,EAAUa,EAAamB,EAAO3B,EAAYoO,EAAWE,cAAe3C,GAC5F3L,EAAWsG,QAAQ3E,EAAOgK,EAAe,GAAGI,KAC5ClB,EAAiBc,EAAe,GAAGI,IACnC,MAAMwC,EAAcH,EAAWI,eAAe7O,EAAS6B,QAASmK,GAC1DxH,EAAwBD,EAAef,eAAeoL,EAAalT,GAKzE,GAJAsG,EAAQA,EAAMwD,0BAA0BhB,GACpCiK,EAAWK,uBACX9M,EAAQA,EAAM0D,YAAY+I,EAAWM,iCAAiC/O,EAAS6B,QAASmK,MAEvF+B,GAAeQ,EAAW5I,cAAc3D,GAQzC,OANInH,EAAQ1E,WAAWC,aACnBqB,QAAQ4W,MAAM,wFAElBrM,EAAQA,EAAMiD,MACd5E,EAAWsG,QAAQ3E,EAAOxB,QAC1ByK,GAAO,EAGf,MACK,GAAIqD,aAAiBrT,EAAOsQ,eAAgB,CAC7C,MAAMkD,EAAaH,EACfzT,EAAQ1E,WAAWC,aACnBqB,QAAQC,IAAI,aAAe+W,EAAW5C,WAE1CK,EAAexQ,EAASsE,EAAUa,EAAamB,EAAO3B,EAAYoO,EAAWE,cAAe3C,GAC5F3L,EAAWsG,QAAQ3E,EAAOgK,EAAe,GAAGI,KAC5ClB,EAAiBc,EAAe,GAAGI,IACnC,MAAMwC,EAAcH,EAAWI,eAAe7O,EAAS6B,QAASmK,GAC1DxH,EAAwBD,EAAef,eAAeoL,EAAalT,GAKzE,GAJAsG,EAAQA,EAAMwD,0BAA0BhB,GACpCiK,EAAWO,yBACXhN,EAAQA,EAAM0D,YAAY+I,EAAWQ,mCAAmCjP,EAAS6B,QAASmK,MAEzF+B,GAAeQ,EAAW5I,cAAc3D,GAQzC,OANInH,EAAQ1E,WAAWC,aACnBqB,QAAQ4W,MAAM,wFAElBrM,EAAQA,EAAMiD,MACd5E,EAAWsG,QAAQ3E,EAAOxB,QAC1ByK,GAAO,EAGf,KACK,CACD,MAAMiE,EAAeZ,EAWrB,GAVIzT,EAAQ1E,WAAWC,aACnBqB,QAAQC,IAAI,aACRwX,EAAarD,UACb,MACAqD,EAAaC,kBAErBjD,EAAexQ,EAASsE,EAAUa,EAAamB,EAAO3B,EAAY6O,EAAaE,SAAUpD,GACzF3L,EAAWsG,QAAQ3E,EAAOgK,EAAe,GAAGI,KAE5CpK,EAAQA,EAAMiD,OACT8I,EAQD,OANIlT,EAAQ1E,WAAWC,aACnBqB,QAAQ4W,MAAM,6FAElBrM,EAAQA,EAAMkD,UACd7E,EAAWsG,QAAQ3E,EAAOxB,QAC1ByK,GAAO,EAGf,CACJ,CACIe,EAAe,GAAGI,IAAMrB,IAExBA,EAAUiB,EAAe,GAAGI,IAC5BvL,GAAc,EAEtB,CACJ,CA0JA,SAAS8L,EAAkBnR,EAAME,EAAS2T,EAAgBC,EAAQC,GAC9D,OAAI1U,EAAQ3E,wBAGD,CAAEuV,YAFWjQ,EAAKgU,QAAQ9T,EAAS2T,GAEpB3D,YADF+D,EAAeH,EAAQC,IAIxC,CAAE9D,YADWjQ,EAAKkU,UAAUhU,EAAS2T,EAAgBC,EAAQC,GAC9C7D,YAAa,EACvC,CACA,SAASC,EAAuBnQ,EAAME,EAAS2T,EAAgBC,EAAQC,GACnE,OAAI1U,EAAQ3E,wBAGD,CAAEuV,YAFWjQ,EAAKmU,aAAajU,EAAS2T,GAEzB3D,YADF+D,EAAeH,EAAQC,IAIxC,CAAE9D,YADWjQ,EAAKoU,eAAelU,EAAS2T,EAAgBC,EAAQC,GACnD7D,YAAa,EACvC,CACA,SAAS+D,EAAeH,EAAQC,GAC5B,IAAIM,EAAU,EAOd,OANKP,IACDO,GAAW,GAEVN,IACDM,GAAW,GAERA,CACX,CACA,SAAS3D,EAAexQ,EAASsE,EAAUa,EAAamB,EAAO3B,EAAY+O,EAAUpD,GACjF,GAAwB,IAApBoD,EAASvY,OACT,OAEJ,MAAMiZ,EAAkB9P,EAAS6B,QAC3B/E,EAAMiT,KAAKC,IAAIZ,EAASvY,OAAQmV,EAAenV,QAC/CoZ,EAAa,GACbC,EAASlE,EAAe,GAAGI,IACjC,IAAK,IAAIzP,EAAI,EAAGA,EAAIG,EAAKH,IAAK,CAC1B,MAAMwT,EAAcf,EAASzS,GAC7B,GAAoB,OAAhBwT,EAEA,SAEJ,MAAMC,EAAepE,EAAerP,GACpC,GAA4B,IAAxByT,EAAavZ,OAEb,SAEJ,GAAIuZ,EAAanE,MAAQiE,EAErB,MAGJ,KAAOD,EAAWpZ,OAAS,GAAKoZ,EAAWA,EAAWpZ,OAAS,GAAGwZ,QAAUD,EAAanE,OAErF5L,EAAWwG,kBAAkBoJ,EAAWA,EAAWpZ,OAAS,GAAG0F,OAAQ0T,EAAWA,EAAWpZ,OAAS,GAAGwZ,QACzGJ,EAAWhL,MAQf,GANIgL,EAAWpZ,OAAS,EACpBwJ,EAAWwG,kBAAkBoJ,EAAWA,EAAWpZ,OAAS,GAAG0F,OAAQ6T,EAAanE,OAGpF5L,EAAWsG,QAAQ3E,EAAOoO,EAAanE,OAEvCkE,EAAYG,6BAA8B,CAE1C,MAAM1X,EAAYuX,EAAY3O,QAAQsO,EAAiB9D,GACjDzH,EAAiBvC,EAAMwC,sBAAsBhB,eAAe5K,EAAW8C,GACvEkT,EAAcuB,EAAYtB,eAAeiB,EAAiB9D,GAC1DxH,EAAwBD,EAAef,eAAeoL,EAAalT,GACnE6U,EAAavO,EAAM7F,KAAKgU,EAAYG,6BAA8BF,EAAanE,OAAQ,GAAG,EAAO,KAAM1H,EAAgBC,GACvHgM,EAAa9U,EAAQ6C,iBAAiBuR,EAAgB/I,UAAU,EAAGqJ,EAAahE,MACtFtK,EAAgBpG,EAAS8U,EAAa3P,GAAsC,IAAvBuP,EAAanE,MAAcmE,EAAanE,MAAOsE,EAAYlQ,GAAY,EAA2B,GACvJrF,EAAU+G,kBAAkByO,GAC5B,QACJ,CACA,MAAMC,EAAuBN,EAAY3O,QAAQsO,EAAiB9D,GAClE,GAA6B,OAAzByE,EAA+B,CAE/B,MACMC,GADOT,EAAWpZ,OAAS,EAAIoZ,EAAWA,EAAWpZ,OAAS,GAAG0F,OAASyF,EAAMwC,uBACnDhB,eAAeiN,EAAsB/U,GACxEuU,EAAW9T,KAAK,IAAI0O,EAAkB6F,EAAuBN,EAAahE,KAC9E,CACJ,CACA,KAAO6D,EAAWpZ,OAAS,GAEvBwJ,EAAWwG,kBAAkBoJ,EAAWA,EAAWpZ,OAAS,GAAG0F,OAAQ0T,EAAWA,EAAWpZ,OAAS,GAAGwZ,QACzGJ,EAAWhL,KAEnB,CAjPAvP,EAAQoM,gBAAkBA,EAkP1B,MAAM+I,EACFtS,YAAYgE,EAAQ8T,GAChBva,KAAKyG,OAASA,EACdzG,KAAKua,OAASA,CAClB,EAEJ3a,EAAQmV,kBAAoBA,C,cCrb5B,SAAS8F,EAAOC,EAAaC,GAEzB,MAAM,IAAIjX,MAAM,eAAiBgX,EAAYE,IAAM,KAAOD,EAAM,OAASD,EAAYG,OAAOhU,OAAO6T,EAAYE,IAAK,IAAM,MAC9H,CALA/a,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDP,EAAQsb,eAAY,EAiLpBtb,EAAQsb,UA5KR,SAAmBD,EAAQE,EAAUC,GACjC,IAAIN,EAAc,IAAIO,EAAgBJ,GAClCK,EAAQ,IAAIC,EACZC,EAAQ,EACRC,EAAM,KACNC,EAAa,GACbC,EAAW,GACf,SAASC,IACLF,EAAWrV,KAAKmV,GAChBG,EAAStV,KAAKoV,EAClB,CACA,SAASI,IACLL,EAAQE,EAAWvM,MACnBsM,EAAME,EAASxM,KACnB,CACA,SAAS2M,EAAKf,GACVF,EAAOC,EAAaC,EACxB,CACA,KAAOgB,EAAcjB,EAAaQ,IAAQ,CACtC,GAAc,IAAVE,EAA8B,CAI9B,GAHY,OAARC,GACAK,EAAK,+BAEU,IAAfR,EAAMlT,KAAqC,CAC3CqT,EAAM,CAAC,EACHL,IACAK,EAAIpP,wBAA0BiP,EAAMU,WAAWb,IAEnDS,IACAJ,EAAQ,EACR,QACJ,CACA,GAAmB,IAAfF,EAAMlT,KAAsC,CAC5CqT,EAAM,GACNG,IACAJ,EAAQ,EACR,QACJ,CACAM,EAAK,2BACT,CACA,GAAc,IAAVN,EAAoC,CACpC,GAAmB,IAAfF,EAAMlT,KAAsC,CAC5CyT,IACA,QACJ,CACA,GAAmB,IAAfP,EAAMlT,KAAwB,CAC9BoT,EAAQ,EACR,QACJ,CACAM,EAAK,kBACT,CACA,GAAc,IAAVN,GAA0C,IAAVA,EAAuC,CACvE,GAAc,IAAVA,GAA+C,IAAfF,EAAMlT,KAAsC,CAC5EyT,IACA,QACJ,CACA,GAAmB,IAAfP,EAAMlT,KAAyB,CAC/B,IAAI6T,EAAWX,EAAMnb,MAQrB,GAPK4b,EAAcjB,EAAaQ,IAAyB,IAAfA,EAAMlT,MAC5C0T,EAAK,kBAEJC,EAAcjB,EAAaQ,IAC5BQ,EAAK,kBAETN,EAAQ,EACW,IAAfF,EAAMlT,KAAyB,CAC/BqT,EAAIQ,GAAYX,EAAMnb,MACtB,QACJ,CACA,GAAmB,IAAfmb,EAAMlT,KAAuB,CAC7BqT,EAAIQ,GAAY,KAChB,QACJ,CACA,GAAmB,IAAfX,EAAMlT,KAAuB,CAC7BqT,EAAIQ,IAAY,EAChB,QACJ,CACA,GAAmB,KAAfX,EAAMlT,KAAyB,CAC/BqT,EAAIQ,IAAY,EAChB,QACJ,CACA,GAAmB,KAAfX,EAAMlT,KAA0B,CAChCqT,EAAIQ,GAAYC,WAAWZ,EAAMnb,OACjC,QACJ,CACA,GAAmB,IAAfmb,EAAMlT,KAAsC,CAC5C,IAAI+T,EAAS,GACbV,EAAIQ,GAAYE,EAChBP,IACAJ,EAAQ,EACRC,EAAMU,EACN,QACJ,CACA,GAAmB,IAAfb,EAAMlT,KAAqC,CAC3C,IAAIgU,EAAU,CAAC,EACXhB,IACAgB,EAAQ/P,wBAA0BiP,EAAMU,WAAWb,IAEvDM,EAAIQ,GAAYG,EAChBR,IACAJ,EAAQ,EACRC,EAAMW,EACN,QACJ,CACJ,CACAN,EAAK,2BACT,CACA,GAAc,IAAVN,EAAmC,CACnC,GAAmB,IAAfF,EAAMlT,KAAuC,CAC7CyT,IACA,QACJ,CACA,GAAmB,IAAfP,EAAMlT,KAAwB,CAC9BoT,EAAQ,EACR,QACJ,CACAM,EAAK,kBACT,CACA,GAAc,IAAVN,GAAyC,IAAVA,EAAsC,CACrE,GAAc,IAAVA,GAA8C,IAAfF,EAAMlT,KAAuC,CAC5EyT,IACA,QACJ,CAEA,GADAL,EAAQ,EACW,IAAfF,EAAMlT,KAAyB,CAC/BqT,EAAIpV,KAAKiV,EAAMnb,OACf,QACJ,CACA,GAAmB,IAAfmb,EAAMlT,KAAuB,CAC7BqT,EAAIpV,KAAK,MACT,QACJ,CACA,GAAmB,IAAfiV,EAAMlT,KAAuB,CAC7BqT,EAAIpV,MAAK,GACT,QACJ,CACA,GAAmB,KAAfiV,EAAMlT,KAAyB,CAC/BqT,EAAIpV,MAAK,GACT,QACJ,CACA,GAAmB,KAAfiV,EAAMlT,KAA0B,CAChCqT,EAAIpV,KAAK6V,WAAWZ,EAAMnb,QAC1B,QACJ,CACA,GAAmB,IAAfmb,EAAMlT,KAAsC,CAC5C,IAAI+T,EAAS,GACbV,EAAIpV,KAAK8V,GACTP,IACAJ,EAAQ,EACRC,EAAMU,EACN,QACJ,CACA,GAAmB,IAAfb,EAAMlT,KAAqC,CAC3C,IAAIgU,EAAU,CAAC,EACXhB,IACAgB,EAAQ/P,wBAA0BiP,EAAMU,WAAWb,IAEvDM,EAAIpV,KAAK+V,GACTR,IACAJ,EAAQ,EACRC,EAAMW,EACN,QACJ,CACAN,EAAK,4BACT,CACAA,EAAK,gBACT,CAIA,OAHwB,IAApBH,EAAS5a,QACT+a,EAAK,uBAEFL,CACX,EAEA,MAAMJ,EACF5Y,YAAYwY,GACRjb,KAAKib,OAASA,EACdjb,KAAKgb,IAAM,EACXhb,KAAKgH,IAAMiU,EAAOla,OAClBf,KAAKqc,KAAO,EACZrc,KAAKsc,KAAO,CAChB,EAEJ,MAAMf,EACF9Y,cACIzC,KAAKG,MAAQ,KACbH,KAAKoI,KAAO,EACZpI,KAAKuc,QAAU,EACfvc,KAAKgH,KAAO,EACZhH,KAAKqc,MAAQ,EACbrc,KAAKsc,MAAQ,CACjB,CACAN,WAAWb,GACP,MAAO,CACHA,SAAUA,EACVkB,KAAMrc,KAAKqc,KACXC,KAAMtc,KAAKsc,KAEnB,EAKJ,SAASP,EAAcS,EAAQC,GAC3BA,EAAKtc,MAAQ,KACbsc,EAAKrU,KAAO,EACZqU,EAAKF,QAAU,EACfE,EAAKzV,KAAO,EACZyV,EAAKJ,MAAQ,EACbI,EAAKH,MAAQ,EACb,IAMII,EANAzB,EAASuB,EAAOvB,OAChBD,EAAMwB,EAAOxB,IACbhU,EAAMwV,EAAOxV,IACbqV,EAAOG,EAAOH,KACdC,EAAOE,EAAOF,KAGlB,OAAG,CACC,GAAItB,GAAOhU,EACP,OAAO,EAGX,GADA0V,EAASzB,EAAO0B,WAAW3B,GACZ,KAAX0B,GAAwC,IAAXA,GAAgD,KAAXA,EAAtE,CAMA,GAAe,KAAXA,EAQJ,MANI1B,IACAqB,IACAC,EAAO,CALX,MAHItB,IACAsB,GAYR,CAIA,GAHAG,EAAKF,OAASvB,EACdyB,EAAKJ,KAAOA,EACZI,EAAKH,KAAOA,EACG,KAAXI,EAAoC,CAKpC,IAHAD,EAAKrU,KAAO,EACZ4S,IACAsB,MACG,CACC,GAAItB,GAAOhU,EACP,OAAO,EAKX,GAHA0V,EAASzB,EAAO0B,WAAW3B,GAC3BA,IACAsB,IACe,KAAXI,GAMJ,GAAe,KAAXA,EAEA,WANA1B,IACAsB,GAOR,CACAG,EAAKtc,MAAQ8a,EAAOhK,UAAUwL,EAAKF,OAAS,EAAGvB,EAAM,GAAG9J,QAAQ,wBAAwB,CAAC0L,EAAGC,IACjFC,OAAOC,cAAcC,SAASH,EAAI,OAC1C3L,QAAQ,UAAU,CAAC0L,EAAGC,KACrB,OAAQA,GACJ,IAAK,IAAK,MAAO,IACjB,IAAK,KAAM,MAAO,KAClB,IAAK,IAAK,MAAO,IACjB,IAAK,IAAK,MAAO,KACjB,IAAK,IAAK,MAAO,KACjB,IAAK,IAAK,MAAO,KACjB,IAAK,IAAK,MAAO,KACjB,IAAK,IAAK,MAAO,KACjB,QAAShC,EAAO2B,EAAQ,2BAE5B,MAAM,IAAI1Y,MAAM,cAAc,GAEtC,MACK,GAAe,KAAX4Y,EACLD,EAAKrU,KAAO,EACZ4S,IACAsB,SAEC,GAAe,MAAXI,EACLD,EAAKrU,KAAO,EACZ4S,IACAsB,SAEC,GAAe,KAAXI,EACLD,EAAKrU,KAAO,EACZ4S,IACAsB,SAEC,GAAe,MAAXI,EACLD,EAAKrU,KAAO,EACZ4S,IACAsB,SAEC,GAAe,KAAXI,EACLD,EAAKrU,KAAO,EACZ4S,IACAsB,SAEC,GAAe,KAAXI,EACLD,EAAKrU,KAAO,EACZ4S,IACAsB,SAEC,GAAe,MAAXI,EAAwB,CAM7B,GAJAD,EAAKrU,KAAO,EACZ4S,IACAsB,IACAI,EAASzB,EAAO0B,WAAW3B,GACZ,MAAX0B,EACA,OAAO,EAKX,GAHA1B,IACAsB,IACAI,EAASzB,EAAO0B,WAAW3B,GACZ,MAAX0B,EACA,OAAO,EAKX,GAHA1B,IACAsB,IACAI,EAASzB,EAAO0B,WAAW3B,GACZ,MAAX0B,EACA,OAAO,EAEX1B,IACAsB,GACJ,MACK,GAAe,MAAXI,EAAwB,CAM7B,GAJAD,EAAKrU,KAAO,EACZ4S,IACAsB,IACAI,EAASzB,EAAO0B,WAAW3B,GACZ,MAAX0B,EACA,OAAO,EAKX,GAHA1B,IACAsB,IACAI,EAASzB,EAAO0B,WAAW3B,GACZ,MAAX0B,EACA,OAAO,EAKX,GAHA1B,IACAsB,IACAI,EAASzB,EAAO0B,WAAW3B,GACZ,MAAX0B,EACA,OAAO,EAEX1B,IACAsB,GACJ,MACK,GAAe,MAAXI,EAAwB,CAM7B,GAJAD,EAAKrU,KAAO,GACZ4S,IACAsB,IACAI,EAASzB,EAAO0B,WAAW3B,GACZ,KAAX0B,EACA,OAAO,EAKX,GAHA1B,IACAsB,IACAI,EAASzB,EAAO0B,WAAW3B,GACZ,MAAX0B,EACA,OAAO,EAKX,GAHA1B,IACAsB,IACAI,EAASzB,EAAO0B,WAAW3B,GACZ,MAAX0B,EACA,OAAO,EAKX,GAHA1B,IACAsB,IACAI,EAASzB,EAAO0B,WAAW3B,GACZ,MAAX0B,EACA,OAAO,EAEX1B,IACAsB,GACJ,MAII,IADAG,EAAKrU,KAAO,KACT,CACC,GAAI4S,GAAOhU,EACP,OAAO,EAGX,GADA0V,EAASzB,EAAO0B,WAAW3B,KACZ,KAAX0B,GACIA,GAAU,IAAeA,GAAU,IACxB,MAAXA,GAAqC,KAAXA,GACf,KAAXA,GAAwC,KAAXA,GAOrC,MALI1B,IACAsB,GAKR,CAUJ,OARAG,EAAKzV,IAAMgU,EAAMyB,EAAKF,OACH,OAAfE,EAAKtc,QACLsc,EAAKtc,MAAQ8a,EAAOhU,OAAOwV,EAAKF,OAAQE,EAAKzV,MAEjDwV,EAAOxB,IAAMA,EACbwB,EAAOH,KAAOA,EACdG,EAAOF,KAAOA,GAEP,CACX,C,sBCxaA,IAAIjI,EAAmBrU,MAAQA,KAAKqU,kBAAqBpU,OAAOqU,OAAS,SAAUC,EAAG3Q,EAAGuN,EAAGqD,QAC7E5F,IAAP4F,IAAkBA,EAAKrD,GAC3BlR,OAAOC,eAAeqU,EAAGC,EAAI,CAAEC,YAAY,EAAMhR,IAAK,WAAa,OAAOG,EAAEuN,EAAI,GACnF,EAAI,SAAUoD,EAAG3Q,EAAGuN,EAAGqD,QACT5F,IAAP4F,IAAkBA,EAAKrD,GAC3BoD,EAAEC,GAAM5Q,EAAEuN,EACb,GACGuD,EAAgB1U,MAAQA,KAAK0U,cAAiB,SAAS9Q,EAAGhE,GAC1D,IAAK,IAAI+U,KAAK/Q,EAAa,YAAN+Q,GAAoB1U,OAAO2U,UAAUC,eAAeC,KAAKlV,EAAS+U,IAAIN,EAAgBzU,EAASgE,EAAG+Q,EAC3H,EACA1U,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDP,EAAQqd,gBAAkBrd,EAAQsd,QAAUtd,EAAQud,cAAW,EAC/D,MAAMC,EAAY,EAAQ,KACpBC,EAAgB,EAAQ,IACxBC,EAAa,EAAQ,KACrBlY,EAAU,EAAQ,KAClBmY,EAAwB,EAAQ,KACtC7I,EAAa,EAAQ,IAAc9U,GAgFnCA,EAAQud,SA5ER,MACI1a,YAAYsX,GACR/Z,KAAKwd,SAAWzD,EAChB/Z,KAAKyd,cAAgB,IAAIH,EAAWI,aAAatY,EAAQuY,MAAMC,mBAAmB7D,EAAQ8D,MAAO9D,EAAQ+D,UAAW/D,EAAQzS,SAC5HtH,KAAK+d,oBAAsB,IAAI9Z,GACnC,CACAqE,UACItI,KAAKyd,cAAcnV,SACvB,CAIA0V,SAASH,EAAOC,GACZ9d,KAAKyd,cAAcO,SAAS5Y,EAAQuY,MAAMC,mBAAmBC,EAAOC,GACxE,CAIAG,cACI,OAAOje,KAAKyd,cAAcQ,aAC9B,CAKAC,iCAAiCtK,EAAkB1M,EAAiBvE,GAChE,OAAO3C,KAAKme,6BAA6BvK,EAAkB1M,EAAiB,CAAEvE,qBAClF,CAKAwb,6BAA6BvK,EAAkB1M,EAAiBkX,GAC5D,OAAOpe,KAAKqe,aAAazK,EAAkB1M,EAAiBkX,EAAczb,kBAAmByb,EAAcjX,WAAY,IAAIiW,EAAU1Y,yBAAyB0Z,EAAchX,0BAA4B,GAAIgX,EAAcE,4BAA8B,IAC5P,CAIAC,YAAY3K,GACR,OAAO5T,KAAKqe,aAAazK,EAAkB,EAAG,KAAM,KAAM,KAC9D,CACA4K,mBAAmB5K,EAAkB1M,EAAiBvE,EAAmBwE,EAAYC,GACjF,MAAMqX,EAAsB,IAAIlB,EAAsB3L,yBAAyB5R,KAAKyd,cAAe7J,GACnG,KAAO6K,EAAoB1K,EAAEhT,OAAS,SAC5B2d,QAAQC,IAAIF,EAAoB1K,EAAE5P,KAAKya,GAAY5e,KAAK6e,mBAAmBD,EAAQ9b,cACzF2b,EAAoBzK,eAExB,OAAOhU,KAAK8e,qBAAqBlL,EAAkB1M,EAAiBvE,EAAmBwE,EAAYC,EACvG,CACAoX,yBAAyB1b,GAIrB,OAHK9C,KAAK+d,oBAAoBrL,IAAI5P,IAC9B9C,KAAK+d,oBAAoBjc,IAAIgB,EAAW9C,KAAK+e,qBAAqBjc,IAE/D9C,KAAK+d,oBAAoBta,IAAIX,EACxC,CACA0b,2BAA2B1b,GACvB,MAAM8C,QAAgB5F,KAAKwd,SAASe,YAAYzb,GAChD,GAAI8C,EAAS,CACT,MAAMkD,EAAoD,mBAAhC9I,KAAKwd,SAASjU,cAA+BvJ,KAAKwd,SAASjU,cAAczG,QAAa8L,EAChH5O,KAAKyd,cAAcuB,WAAWpZ,EAASkD,EAC3C,CACJ,CAIA0V,iBAAiBS,EAAYnW,EAAa,GAAI5B,EAAkB,EAAGvE,EAAoB,MAEnF,OADA3C,KAAKyd,cAAcuB,WAAWC,EAAYnW,SAC5B9I,KAAK8e,qBAAqBG,EAAWnc,UAAWoE,EAAiBvE,EACnF,CAIAmc,qBAAqBhc,EAAWoE,EAAkB,EAAGvE,EAAoB,KAAMwE,EAAa,KAAMC,EAA2B,MACzH,OAAOpH,KAAKyd,cAAcyB,oBAAoBpc,EAAWoE,EAAiBvE,EAAmBwE,EAAYC,EAC7G,GAGJxH,EAAQsd,QAAUE,EAAUzY,WAAWsG,KACvCrL,EAAQqd,gBAAkBI,EAAcJ,e,cClBxC,SAASkC,EAAa7D,GAClB,QAASA,KAAWA,EAAM3X,MAAM,WACpC,CAnFA1D,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDP,EAAQkG,oBAAiB,EA+EzBlG,EAAQkG,eA9ER,SAAwBL,EAAU2Z,GAC9B,MAAMC,EAAU,GACVC,EAgFV,SAAsBC,GAClB,IAAIC,EAAQ,0CACR7b,EAAQ6b,EAAMC,KAAKF,GACvB,MAAO,CACHG,KAAM,KACF,IAAK/b,EACD,OAAO,KAEX,MAAM6L,EAAM7L,EAAM,GAElB,OADAA,EAAQ6b,EAAMC,KAAKF,GACZ/P,CAAG,EAGtB,CA7FsBmQ,CAAala,GAC/B,IAAI6V,EAAQgE,EAAUI,OACtB,KAAiB,OAAVpE,GAAgB,CACnB,IAAI/U,EAAW,EACf,GAAqB,IAAjB+U,EAAMva,QAAoC,MAApBua,EAAMsE,OAAO,GAAY,CAC/C,OAAQtE,EAAMsE,OAAO,IACjB,IAAK,IACDrZ,EAAW,EACX,MACJ,IAAK,IACDA,GAAY,EACZ,MACJ,QACI5E,QAAQC,IAAI,oBAAoB0Z,uBAExCA,EAAQgE,EAAUI,MACtB,CACA,IAAItZ,EAAUyZ,IAEd,GADAR,EAAQhZ,KAAK,CAAED,UAASG,aACV,MAAV+U,EACA,MAEJA,EAAQgE,EAAUI,MACtB,CACA,OAAOL,EACP,SAASS,IACL,GAAc,MAAVxE,EAAe,CACfA,EAAQgE,EAAUI,OAClB,MAAMK,EAAqBD,IAC3B,OAAOE,KAAkBD,IAAuBA,EAAmBC,EACvE,CACA,GAAc,MAAV1E,EAAe,CACfA,EAAQgE,EAAUI,OAClB,MAAMO,EAyBd,WACI,MAAMpa,EAAW,GACjB,IAAIO,EAAUyZ,IACd,KAAOzZ,IACHP,EAASQ,KAAKD,GACA,MAAVkV,GAA2B,MAAVA,IAFT,CAGR,GACIA,EAAQgE,EAAUI,aACH,MAAVpE,GAA2B,MAAVA,GAK9BlV,EAAUyZ,GACd,CACA,OAAOG,GAAgBna,EAASqa,MAAK9Z,GAAWA,EAAQ4Z,IAC5D,CAzCoCG,GAI5B,MAHc,MAAV7E,IACAA,EAAQgE,EAAUI,QAEfO,CACX,CACA,GAAId,EAAa7D,GAAQ,CACrB,MAAM8E,EAAc,GACpB,GACIA,EAAY/Z,KAAKiV,GACjBA,EAAQgE,EAAUI,aACbP,EAAa7D,IACtB,OAAO0E,GAAgBZ,EAAYgB,EAAaJ,EACpD,CACA,OAAO,IACX,CACA,SAASH,IACL,MAAMha,EAAW,GACjB,IAAIO,EAAU0Z,IACd,KAAO1Z,GACHP,EAASQ,KAAKD,GACdA,EAAU0Z,IAEd,OAAOE,GAAgBna,EAASc,OAAMP,GAAWA,EAAQ4Z,IAC7D,CAkBJ,C,aC/EA/f,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDP,EAAQqM,uBAAoB,EAM5BrM,EAAQqM,kBALR,SAA2BoU,GACI,mBAAhBA,EAAI/X,SACX+X,EAAI/X,SAEZ,C,eCNArI,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDP,EAAQqd,qBAAkB,EAC1B,MAAMqD,EAAQ,EAAQ,IAChBvb,EAAU,EAAQ,KAClBwb,EAAS,EAAQ,KAOvB3gB,EAAQqd,gBANR,SAAyBlR,EAASyU,EAAW,MACzC,OAAiB,OAAbA,GAAqB,UAAUC,KAAKD,IAMlBE,EALM3U,EAKIoP,EALKqF,EAMjCzb,EAAQ1E,WAAWC,YACZigB,EAAOrF,UAAUwF,EAAUvF,GAAU,GAEzCwF,KAAKC,MAAMF,IAEtB,SAA2BA,EAAUvF,GACjC,OAAIpW,EAAQ1E,WAAWC,YACZggB,EAAMO,kBAAkBH,EAAUvF,EAAU,2BAEhDmF,EAAMQ,WAAWJ,EAC5B,CAdWK,CAAkBhV,EAASyU,GAGtC,IAA0BE,EAAUvF,CAFpC,C,aCGA,SAAS6F,EAAOjV,EAASoP,EAAU8F,GAC/B,MAAMja,EAAM+E,EAAQhL,OACpB,IAAIia,EAAM,EACNqB,EAAO,EACPC,EAAO,EAKX,SAAS4E,EAAaC,GAClB,GAAwB,OAApBF,EACAjG,GAAYmG,OAGZ,KAAOA,EAAK,GAEO,KADFpV,EAAQ4Q,WAAW3B,IAE5BA,IACAqB,IACAC,EAAO,IAGPtB,IACAsB,KAEJ6E,GAGZ,CACA,SAASC,EAAaC,GACM,OAApBJ,EACAjG,EAAMqG,EAGNH,EAAaG,EAAKrG,EAE1B,CACA,SAASsG,IACL,KAAOtG,EAAMhU,GAAK,CACd,IAAI0V,EAAS3Q,EAAQ4Q,WAAW3B,GAChC,GAAe,KAAX0B,GAAwC,IAAXA,GAAqC,KAAXA,GAAkD,KAAXA,EAC9F,MAEJwE,EAAa,EACjB,CACJ,CACA,SAASK,EAAoBlB,GACzB,OAAItU,EAAQ9E,OAAO+T,EAAKqF,EAAItf,UAAYsf,IACpCa,EAAab,EAAItf,SACV,EAGf,CACA,SAASygB,EAAanB,GAClB,IAAIoB,EAAgB1V,EAAQ4B,QAAQ0S,EAAKrF,GAErCoG,GADmB,IAAnBK,EACaA,EAAgBpB,EAAItf,OAIpBiG,EAErB,CACA,SAAS0a,EAAarB,GAClB,IAAIoB,EAAgB1V,EAAQ4B,QAAQ0S,EAAKrF,GACzC,IAAuB,IAAnByG,EAAsB,CACtB,IAAI5gB,EAAIkL,EAAQkF,UAAU+J,EAAKyG,GAE/B,OADAL,EAAaK,EAAgBpB,EAAItf,QAC1BF,CACX,CACK,CAED,IAAIA,EAAIkL,EAAQ9E,OAAO+T,GAEvB,OADAoG,EAAapa,GACNnG,CACX,CACJ,CAtEImG,EAAM,GAA+B,QAA1B+E,EAAQ4Q,WAAW,KAC9B3B,EAAM,GAsEV,IAAIQ,EAAQ,EACRC,EAAM,KACNC,EAAa,GACbC,EAAW,GACXgG,EAAS,KACb,SAAS/F,EAAUgG,EAAUC,GACzBnG,EAAWrV,KAAKmV,GAChBG,EAAStV,KAAKoV,GACdD,EAAQoG,EACRnG,EAAMoG,CACV,CACA,SAAShG,IACL,GAA0B,IAAtBH,EAAW3a,OACX,OAAO+a,EAAK,uBAEhBN,EAAQE,EAAWvM,MACnBsM,EAAME,EAASxM,KACnB,CACA,SAAS2M,EAAKf,GACV,MAAM,IAAIjX,MAAM,eAAiBkX,EAAM,KAAOD,EAAM,OAAShP,EAAQ9E,OAAO+T,EAAK,IAAM,MAC3F,CACA,MAAM8G,EACS,WACP,GAAe,OAAXH,EACA,OAAO7F,EAAK,iBAEhB,IAAIM,EAAU,CAAC,EACS,OAApB6E,IACA7E,EAAQ6E,GAAmB,CACvB9F,SAAUA,EACVkB,KAAMA,EACNC,KAAMA,IAGdb,EAAIkG,GAAUvF,EACduF,EAAS,KACT/F,EAAU,EAAoBQ,EAClC,EAhBE0F,EAiBU,WACR,GAAe,OAAXH,EACA,OAAO7F,EAAK,iBAEhB,IAAIK,EAAS,GACbV,EAAIkG,GAAUxF,EACdwF,EAAS,KACT/F,EAAU,EAAmBO,EACjC,EAEE4F,EACS,WACP,IAAI3F,EAAU,CAAC,EACS,OAApB6E,IACA7E,EAAQ6E,GAAmB,CACvB9F,SAAUA,EACVkB,KAAMA,EACNC,KAAMA,IAGdb,EAAIpV,KAAK+V,GACTR,EAAU,EAAoBQ,EAClC,EAZE2F,EAaU,WACR,IAAI5F,EAAS,GACbV,EAAIpV,KAAK8V,GACTP,EAAU,EAAmBO,EACjC,EAqBJ,SAAS6F,IACL,GAAc,IAAVxG,EAGC,OACMM,EAAK,sBAHZD,GAQR,CAaA,SAASoG,IACL,OAAc,IAAVzG,GAGe,IAAVA,EAFEM,EAAK,4BAGZD,GAKR,CAeA,SAASqG,EAAaC,GAClB,GAAc,IAAV3G,EAA8B,CAC9B,GAAe,OAAXmG,EACA,OAAO7F,EAAK,iBAEhBL,EAAIkG,GAAUQ,EACdR,EAAS,IACb,MACmB,IAAVnG,EACLC,EAAIpV,KAAK8b,GAGT1G,EAAM0G,CAEd,CACA,SAASC,EAAWD,GAChB,GAAIE,MAAMF,GACN,OAAOrG,EAAK,sBAEhB,GAAc,IAAVN,EAA8B,CAC9B,GAAe,OAAXmG,EACA,OAAO7F,EAAK,iBAEhBL,EAAIkG,GAAUQ,EACdR,EAAS,IACb,MACmB,IAAVnG,EACLC,EAAIpV,KAAK8b,GAGT1G,EAAM0G,CAEd,CACA,SAASG,EAAcH,GACnB,GAAIE,MAAMF,GACN,OAAOrG,EAAK,wBAEhB,GAAc,IAAVN,EAA8B,CAC9B,GAAe,OAAXmG,EACA,OAAO7F,EAAK,iBAEhBL,EAAIkG,GAAUQ,EACdR,EAAS,IACb,MACmB,IAAVnG,EACLC,EAAIpV,KAAK8b,GAGT1G,EAAM0G,CAEd,CACA,SAASI,EAAWJ,GAChB,GAAc,IAAV3G,EAA8B,CAC9B,GAAe,OAAXmG,EACA,OAAO7F,EAAK,iBAEhBL,EAAIkG,GAAUQ,EACdR,EAAS,IACb,MACmB,IAAVnG,EACLC,EAAIpV,KAAK8b,GAGT1G,EAAM0G,CAEd,CACA,SAASK,EAAWL,GAChB,GAAc,IAAV3G,EAA8B,CAC9B,GAAe,OAAXmG,EACA,OAAO7F,EAAK,iBAEhBL,EAAIkG,GAAUQ,EACdR,EAAS,IACb,MACmB,IAAVnG,EACLC,EAAIpV,KAAK8b,GAGT1G,EAAM0G,CAEd,CACA,SAASM,EAAWN,GAChB,GAAc,IAAV3G,EAA8B,CAC9B,GAAe,OAAXmG,EACA,OAAO7F,EAAK,iBAEhBL,EAAIkG,GAAUQ,EACdR,EAAS,IACb,MACmB,IAAVnG,EACLC,EAAIpV,KAAK8b,GAGT1G,EAAM0G,CAEd,CAiBA,SAASO,IACL,IAAI7hB,EAAI6gB,EAAa,KACjBiB,GAAW,EAKf,OAJmC,KAA/B9hB,EAAE8b,WAAW9b,EAAEE,OAAS,KACxB4hB,GAAW,EACX9hB,EAAIA,EAAEoQ,UAAU,EAAGpQ,EAAEE,OAAS,IAE3B,CACHwL,KAAM1L,EAAE+hB,OACRD,SAAUA,EAElB,CACA,SAASE,EAAcC,GACnB,GAAIA,EAAIH,SACJ,MAAO,GAEX,IAAIR,EAAMT,EAAa,MAEvB,OADAF,EAAa,KACIW,EAjCNjR,QAAQ,gBAAgB,SAAU0L,EAAGC,GAC5C,OAAOC,OAAOC,cAAcC,SAASH,EAAI,IAC7C,IAAG3L,QAAQ,oBAAoB,SAAU0L,EAAGC,GACxC,OAAOC,OAAOC,cAAcC,SAASH,EAAI,IAC7C,IAAG3L,QAAQ,kCAAkC,SAAU0L,GACnD,OAAQA,GACJ,IAAK,QAAS,MAAO,IACrB,IAAK,OAAQ,MAAO,IACpB,IAAK,OAAQ,MAAO,IACpB,IAAK,SAAU,MAAO,IACtB,IAAK,SAAU,MAAO,IAE1B,OAAOA,CACX,GAqBJ,CACA,KAAO5B,EAAMhU,IACTsa,MACItG,GAAOhU,KAFG,CAKd,MAAM0V,EAAS3Q,EAAQ4Q,WAAW3B,GAElC,GADAkG,EAAa,GACE,KAAXxE,EACA,OAAOZ,EAAK,cAEhB,GAAId,GAAOhU,EACP,OAAO8U,EAAK,2BAEhB,MAAMiH,EAAahX,EAAQ4Q,WAAW3B,GACtC,GAAmB,KAAf+H,EAAuC,CACvC7B,EAAa,GACbM,EAAa,MACb,QACJ,CACA,GAAmB,KAAfuB,EAA0C,CAE1C,GADA7B,EAAa,GACTK,EAAoB,MAAO,CAC3BC,EAAa,UACb,QACJ,CACAA,EAAa,KACb,QACJ,CACA,GAAmB,KAAfuB,EAA+B,CAG/B,GAFA7B,EAAa,GACbI,IACIC,EAAoB,SAAU,CAC9BC,EAAa,KACb,QACJ,CACA,GAAID,EAAoB,QAAS,CAC7BC,EAAa,KACbQ,IACA,QACJ,CACA,GAAIT,EAAoB,SAAU,CAC9BC,EAAa,KACbS,IACA,QACJ,CACA,OAAOnG,EAAK,wBAChB,CACA,IAAIgH,EAAMJ,IACV,OAAQI,EAAIvW,MACR,IAAK,OAvPK,IAAViP,EACAsG,IAEe,IAAVtG,EACLuG,KAGAtG,EAAM,CAAC,EACiB,OAApBwF,IACAxF,EAAIwF,GAAmB,CACnB9F,SAAUA,EACVkB,KAAMA,EACNC,KAAMA,IAGdV,EAAU,EAAoBH,IA0OtBqH,EAAIH,UACJX,IAEJ,SACJ,IAAK,QA/NK,IAAVxG,EACAsG,IAEe,IAAVtG,EACLuG,KAGAtG,EAAM,GACNG,EAAU,EAAmBH,IAyNrBqH,EAAIH,UACJV,IAEJ,SACJ,IAAK,MA/MME,EAgNGU,EAAcC,GA/MlB,IAAVtH,EAOOM,EAAK,oBANG,OAAX6F,EACO7F,EAAK,kBAEhB6F,EAASQ,EA4ML,SACJ,IAAK,SACDD,EAAaW,EAAcC,IAC3B,SACJ,IAAK,OACDV,EAAWlG,WAAW2G,EAAcC,KACpC,SACJ,IAAK,UACDR,EAActF,SAAS6F,EAAcC,GAAM,KAC3C,SACJ,IAAK,OACDP,EAAW,IAAI9L,KAAKoM,EAAcC,KAClC,SACJ,IAAK,OACDN,EAAWK,EAAcC,IACzB,SACJ,IAAK,OACDD,EAAcC,GACdL,GAAW,GACX,SACJ,IAAK,QACDI,EAAcC,GACdL,GAAW,GACX,SAER,IAAI,SAAShC,KAAKqC,EAAIvW,MAGtB,OAAOuP,EAAK,yBAA2BgH,EAAIvW,KAC/C,CA9OA,IAAmB4V,EA+OnB,OAAO1G,CACX,CAlcAxb,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDP,EAAQkhB,WAAalhB,EAAQihB,uBAAoB,EAIjDjhB,EAAQihB,kBAHR,SAA2B9U,EAASoP,EAAU8F,GAC1C,OAAOD,EAAOjV,EAASoP,EAAU8F,EACrC,EAQArhB,EAAQkhB,WAHR,SAAoB/U,GAChB,OAAOiV,EAAOjV,EAAS,KAAM,KACjC,C,gBCXA9L,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDP,EAAQ8d,kBAAe,EACvB,MAAMN,EAAY,EAAQ,KAmE1Bxd,EAAQ8d,aAlER,MACIjb,YAAYob,EAAOmF,GACfhjB,KAAKgjB,gBAAkBA,EACvBhjB,KAAKijB,UAAY,IAAIhf,IACrBjE,KAAKkjB,aAAe,IAAIjf,IACxBjE,KAAKmjB,mBAAqB,IAAIlf,IAC9BjE,KAAKojB,OAASvF,CAClB,CACAvV,UACI,IAAK,MAAM1C,KAAW5F,KAAKijB,UAAUlf,SACjC6B,EAAQ0C,SAEhB,CACA0V,SAASH,GACL7d,KAAKojB,OAASvF,CAClB,CACAI,cACI,OAAOje,KAAKojB,OAAOnF,aACvB,CAIAe,WAAWpZ,EAASoD,GAChBhJ,KAAKkjB,aAAaphB,IAAI8D,EAAQ9C,UAAW8C,GACrCoD,GACAhJ,KAAKmjB,mBAAmBrhB,IAAI8D,EAAQ9C,UAAWkG,EAEvD,CAIAe,OAAOjH,GACH,OAAO9C,KAAKkjB,aAAazf,IAAIX,EACjC,CAIAgG,WAAWua,GACP,OAAOrjB,KAAKmjB,mBAAmB1f,IAAI4f,EACvC,CAIAhY,cACI,OAAOrL,KAAKojB,OAAO/X,aACvB,CAIA0B,WAAWN,GACP,OAAOzM,KAAKojB,OAAOzf,MAAM8I,EAC7B,CAIA+R,0BAA0B1b,EAAWoE,EAAiBvE,EAAmBwE,EAAYC,GACjF,IAAKpH,KAAKijB,UAAUvQ,IAAI5P,GAAY,CAChC,IAAImc,EAAajf,KAAKkjB,aAAazf,IAAIX,GACvC,IAAKmc,EACD,OAAO,KAEXjf,KAAKijB,UAAUnhB,IAAIgB,EAAWsa,EAAUtY,cAAchC,EAAWmc,EAAY/X,EAAiBvE,EAAmBwE,EAAYC,EAA0BpH,WAAYA,KAAKgjB,iBAC5K,CACA,OAAOhjB,KAAKijB,UAAUxf,IAAIX,EAC9B,E,gBCnEJ7C,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDP,EAAQ0jB,aAAe1jB,EAAQ2jB,iBAAmB3jB,EAAQ4jB,aAAe5jB,EAAQqG,YAAcrG,EAAQ6V,eAAiB7V,EAAQ8Y,aAAe9Y,EAAQ6jB,gBAAkB7jB,EAAQ8jB,UAAY9jB,EAAQ+jB,YAAc/jB,EAAQgkB,KAAOhkB,EAAQiK,eAAiBjK,EAAQ+J,iBAAmB/J,EAAQqW,YAAcrW,EAAQsY,eAAY,EAChU,MAAM1V,EAAU,EAAQ,KAClB+a,EAAwB,EAAQ,KAChCsG,EAAsB,UACtBC,EAAuB,WACRC,OAAO,UAE5BnkB,EAAQsY,WAAa,EAErBtY,EAAQqW,aAAe,EAIvBrW,EAAQ+J,iBAHR,SAA0BD,GACtB,OAAOA,CACX,EAKA9J,EAAQiK,eAHR,SAAwBH,GACpB,OAAOA,CACX,EAEA,MAAMka,EACFnhB,YAAYuhB,EAAWta,EAAI6C,EAAMuM,GAC7B9Y,KAAKgkB,UAAYA,EACjBhkB,KAAK0J,GAAKA,EACV1J,KAAKikB,MAAQ1X,GAAQ,KACrBvM,KAAKkkB,iBAAmB1hB,EAAQ2hB,YAAYC,YAAYpkB,KAAKikB,OAC7DjkB,KAAKqkB,aAAevL,GAAe,KACnC9Y,KAAKskB,wBAA0B9hB,EAAQ2hB,YAAYC,YAAYpkB,KAAKqkB,aACxE,CACItO,gBACA,MAAMwO,EAAWvkB,KAAKgkB,UAAY,GAAGxhB,EAAQgiB,SAASxkB,KAAKgkB,UAAU7I,aAAanb,KAAKgkB,UAAU3H,OAAS,UAC1G,MAAO,GAAGrc,KAAKyC,YAAY8J,QAAQvM,KAAK0J,QAAQ6a,GACpD,CACA7Y,QAAQxB,EAAUgM,GACd,OAAKlW,KAAKkkB,kBAAmC,OAAflkB,KAAKikB,OAA+B,OAAb/Z,GAAwC,OAAnBgM,EAGnE1T,EAAQ2hB,YAAYM,gBAAgBzkB,KAAKikB,MAAO/Z,EAAUgM,GAFtDlW,KAAKikB,KAGpB,CACAlL,eAAe7O,EAAUgM,GACrB,OAAKlW,KAAKskB,yBAAiD,OAAtBtkB,KAAKqkB,aAGnC7hB,EAAQ2hB,YAAYM,gBAAgBzkB,KAAKqkB,aAAcna,EAAUgM,GAF7DlW,KAAKqkB,YAGpB,EAEJzkB,EAAQgkB,KAAOA,EACf,MAAMD,UAAoBC,EACtBnhB,YAAYuhB,EAAWta,EAAI6C,EAAMuM,EAAa0B,GAC1CkK,MAAMV,EAAWta,EAAI6C,EAAMuM,GAC3B9Y,KAAKwa,6BAA+BA,CACxC,CACAlS,UAEA,CACAqc,gBAAgB/e,EAASgf,GACrB,MAAM,IAAI9gB,MAAM,iBACpB,CACA4V,QAAQ9T,EAAS2T,GACb,MAAM,IAAIzV,MAAM,iBACpB,CACA8V,UAAUhU,EAAS2T,EAAgBC,EAAQC,GACvC,MAAM,IAAI3V,MAAM,iBACpB,EAEJlE,EAAQ+jB,YAAcA,EACtB,MAAMD,UAAkBE,EACpBnhB,YAAYuhB,EAAWta,EAAI6C,EAAM5I,EAAO2V,GACpCoL,MAAMV,EAAWta,EAAI6C,EAAM,MAC3BvM,KAAK6kB,OAAS,IAAIrB,EAAa7f,EAAO3D,KAAK0J,IAC3C1J,KAAKsZ,SAAWA,EAChBtZ,KAAK8kB,wBAA0B,IACnC,CACAxc,UACQtI,KAAK8kB,0BACL9kB,KAAK8kB,wBAAwBxc,UAC7BtI,KAAK8kB,wBAA0B,KAEvC,CACIzL,uBACA,MAAO,GAAGrZ,KAAK6kB,OAAO5J,QAC1B,CACA0J,gBAAgB/e,EAASgf,GACrBA,EAAIve,KAAKrG,KAAK6kB,OAClB,CACAnL,QAAQ9T,EAAS2T,GACb,OAAOvZ,KAAK+kB,2BAA2Bnf,GAAS8T,QAAQ9T,EAC5D,CACAgU,UAAUhU,EAAS2T,EAAgBC,EAAQC,GACvC,OAAOzZ,KAAK+kB,2BAA2Bnf,GAASgU,UAAUhU,EAAS4T,EAAQC,EAC/E,CACAsL,2BAA2Bnf,GAKvB,OAJK5F,KAAK8kB,0BACN9kB,KAAK8kB,wBAA0B,IAAIvB,EACnCvjB,KAAK2kB,gBAAgB/e,EAAS5F,KAAK8kB,0BAEhC9kB,KAAK8kB,uBAChB,EAEJllB,EAAQ8jB,UAAYA,EACpB,MAAMD,UAAwBG,EAC1BnhB,YAAYuhB,EAAWta,EAAI6C,EAAMuM,EAAaxM,GAC1CoY,MAAMV,EAAWta,EAAI6C,EAAMuM,GAC3B9Y,KAAKsM,SAAWA,EAASA,SACzBtM,KAAKglB,mBAAqB1Y,EAAS0Y,mBACnChlB,KAAK8kB,wBAA0B,IACnC,CACAxc,UACQtI,KAAK8kB,0BACL9kB,KAAK8kB,wBAAwBxc,UAC7BtI,KAAK8kB,wBAA0B,KAEvC,CACAH,gBAAgB/e,EAASgf,GACrB,IAAK,MAAMK,KAAWjlB,KAAKsM,SACV1G,EAAQgE,QAAQqb,GACxBN,gBAAgB/e,EAASgf,EAEtC,CACAlL,QAAQ9T,EAAS2T,GACb,OAAOvZ,KAAK+kB,2BAA2Bnf,GAAS8T,QAAQ9T,EAC5D,CACAgU,UAAUhU,EAAS2T,EAAgBC,EAAQC,GACvC,OAAOzZ,KAAK+kB,2BAA2Bnf,GAASgU,UAAUhU,EAAS4T,EAAQC,EAC/E,CACAsL,2BAA2Bnf,GAKvB,OAJK5F,KAAK8kB,0BACN9kB,KAAK8kB,wBAA0B,IAAIvB,EACnCvjB,KAAK2kB,gBAAgB/e,EAAS5F,KAAK8kB,0BAEhC9kB,KAAK8kB,uBAChB,EAEJllB,EAAQ6jB,gBAAkBA,EAC1B,MAAM/K,UAAqBkL,EACvBnhB,YAAYuhB,EAAWta,EAAI6C,EAAMuM,EAAaoM,EAAOrM,EAAevC,EAAK+B,EAAa8M,EAAqB7Y,GACvGoY,MAAMV,EAAWta,EAAI6C,EAAMuM,GAC3B9Y,KAAKolB,OAAS,IAAI5B,EAAa0B,EAAOllB,KAAK0J,IAC3C1J,KAAK6Y,cAAgBA,EACrB7Y,KAAKqlB,KAAO,IAAI7B,EAAalN,GAAY,KAAW,GACpDtW,KAAKgZ,qBAAuBhZ,KAAKqlB,KAAKC,kBACtCtlB,KAAKqY,YAAcA,EACnBrY,KAAKmlB,oBAAsBA,IAAuB,EAClDnlB,KAAKsM,SAAWA,EAASA,SACzBtM,KAAKglB,mBAAqB1Y,EAAS0Y,mBACnChlB,KAAK8kB,wBAA0B,IACnC,CACAxc,UACQtI,KAAK8kB,0BACL9kB,KAAK8kB,wBAAwBxc,UAC7BtI,KAAK8kB,wBAA0B,KAEvC,CACIlM,uBACA,MAAO,GAAG5Y,KAAKolB,OAAOnK,QAC1B,CACI7C,qBACA,MAAO,GAAGpY,KAAKqlB,KAAKpK,QACxB,CACAhC,iCAAiC/O,EAAUgM,GACvC,OAAOlW,KAAKqlB,KAAKE,sBAAsBrb,EAAUgM,EACrD,CACAyO,gBAAgB/e,EAASgf,GACrBA,EAAIve,KAAKrG,KAAKolB,OAClB,CACA1L,QAAQ9T,EAAS2T,GACb,OAAOvZ,KAAK+kB,2BAA2Bnf,EAAS2T,GAAgBG,QAAQ9T,EAC5E,CACAgU,UAAUhU,EAAS2T,EAAgBC,EAAQC,GACvC,OAAOzZ,KAAK+kB,2BAA2Bnf,EAAS2T,GAAgBK,UAAUhU,EAAS4T,EAAQC,EAC/F,CACAsL,2BAA2Bnf,EAAS2T,GAChC,IAAKvZ,KAAK8kB,wBAAyB,CAC/B9kB,KAAK8kB,wBAA0B,IAAIvB,EACnC,IAAK,MAAM0B,KAAWjlB,KAAKsM,SACV1G,EAAQgE,QAAQqb,GACxBN,gBAAgB/e,EAAS5F,KAAK8kB,yBAEnC9kB,KAAKmlB,oBACLnlB,KAAK8kB,wBAAwBze,KAAKrG,KAAKqlB,KAAKC,kBAAoBtlB,KAAKqlB,KAAKjZ,QAAUpM,KAAKqlB,MAGzFrlB,KAAK8kB,wBAAwBU,QAAQxlB,KAAKqlB,KAAKC,kBAAoBtlB,KAAKqlB,KAAKjZ,QAAUpM,KAAKqlB,KAEpG,CASA,OARIrlB,KAAKqlB,KAAKC,oBACNtlB,KAAKmlB,oBACLnlB,KAAK8kB,wBAAwBW,UAAUzlB,KAAK8kB,wBAAwB/jB,SAAW,EAAGwY,GAGlFvZ,KAAK8kB,wBAAwBW,UAAU,EAAGlM,IAG3CvZ,KAAK8kB,uBAChB,EAEJllB,EAAQ8Y,aAAeA,EACvB,MAAMjD,UAAuBmO,EACzBnhB,YAAYuhB,EAAWta,EAAI6C,EAAMuM,EAAaoM,EAAOrM,EAAe6M,EAAQrP,EAAe/J,GACvFoY,MAAMV,EAAWta,EAAI6C,EAAMuM,GAC3B9Y,KAAKolB,OAAS,IAAI5B,EAAa0B,EAAOllB,KAAK0J,IAC3C1J,KAAK6Y,cAAgBA,EACrB7Y,KAAKqW,cAAgBA,EACrBrW,KAAK0lB,OAAS,IAAIlC,EAAakC,EAAQ9lB,EAAQqW,aAC/CjW,KAAKkZ,uBAAyBlZ,KAAK0lB,OAAOJ,kBAC1CtlB,KAAKsM,SAAWA,EAASA,SACzBtM,KAAKglB,mBAAqB1Y,EAAS0Y,mBACnChlB,KAAK8kB,wBAA0B,KAC/B9kB,KAAK2lB,6BAA+B,IACxC,CACArd,UACQtI,KAAK8kB,0BACL9kB,KAAK8kB,wBAAwBxc,UAC7BtI,KAAK8kB,wBAA0B,MAE/B9kB,KAAK2lB,+BACL3lB,KAAK2lB,6BAA6Brd,UAClCtI,KAAK2lB,6BAA+B,KAE5C,CACI/M,uBACA,MAAO,GAAG5Y,KAAKolB,OAAOnK,QAC1B,CACIjF,uBACA,MAAO,GAAGhW,KAAK0lB,OAAOzK,QAC1B,CACA9B,mCAAmCjP,EAAUgM,GACzC,OAAOlW,KAAK0lB,OAAOH,sBAAsBrb,EAAUgM,EACvD,CACAyO,gBAAgB/e,EAASgf,GACrBA,EAAIve,KAAKrG,KAAKolB,OAClB,CACA1L,QAAQ9T,EAAS2T,GACb,OAAOvZ,KAAK+kB,2BAA2Bnf,GAAS8T,QAAQ9T,EAC5D,CACAgU,UAAUhU,EAAS2T,EAAgBC,EAAQC,GACvC,OAAOzZ,KAAK+kB,2BAA2Bnf,GAASgU,UAAUhU,EAAS4T,EAAQC,EAC/E,CACAsL,2BAA2Bnf,GACvB,IAAK5F,KAAK8kB,wBAAyB,CAC/B9kB,KAAK8kB,wBAA0B,IAAIvB,EACnC,IAAK,MAAM0B,KAAWjlB,KAAKsM,SACV1G,EAAQgE,QAAQqb,GACxBN,gBAAgB/e,EAAS5F,KAAK8kB,wBAE3C,CACA,OAAO9kB,KAAK8kB,uBAChB,CACAjL,aAAajU,EAAS2T,GAClB,OAAOvZ,KAAK4lB,gCAAgChgB,EAAS2T,GAAgBG,QAAQ9T,EACjF,CACAkU,eAAelU,EAAS2T,EAAgBC,EAAQC,GAC5C,OAAOzZ,KAAK4lB,gCAAgChgB,EAAS2T,GAAgBK,UAAUhU,EAAS4T,EAAQC,EACpG,CACAmM,gCAAgChgB,EAAS2T,GAQrC,OAPKvZ,KAAK2lB,+BACN3lB,KAAK2lB,6BAA+B,IAAIpC,EACxCvjB,KAAK2lB,6BAA6Btf,KAAKrG,KAAK0lB,OAAOJ,kBAAoBtlB,KAAK0lB,OAAOtZ,QAAUpM,KAAK0lB,SAElG1lB,KAAK0lB,OAAOJ,mBACZtlB,KAAK2lB,6BAA6BF,UAAU,EAAGlM,GAAkC,KAE9EvZ,KAAK2lB,4BAChB,EAEJ/lB,EAAQ6V,eAAiBA,EACzB,MAAMxP,EACF0G,yBAAyBkZ,EAAQ7B,EAAWzX,EAAMuM,EAAa0B,GAC3D,OAAOqL,EAAOpc,cAAcC,GACjB,IAAIia,EAAYK,EAAWta,EAAI6C,EAAMuM,EAAa0B,IAEjE,CACA7N,yBAAyBmZ,EAAMD,EAAQ1f,GAuBnC,OAtBK2f,EAAKpc,IACNmc,EAAOpc,cAAcC,IAEjB,GADAoc,EAAKpc,GAAKA,EACNoc,EAAKniB,MACL,OAAO,IAAI+f,EAAUoC,EAAKzZ,wBAAyByZ,EAAKpc,GAAIoc,EAAKvZ,KAAMuZ,EAAKniB,MAAOsC,EAAY8f,iBAAiBD,EAAKxM,SAAUuM,EAAQ1f,IAE3I,QAA0B,IAAf2f,EAAKZ,MAAuB,CAC/BY,EAAK3f,aACLA,EAAa3D,EAAQgR,aAAa,CAAC,EAAGrN,EAAY2f,EAAK3f,aAE3D,IAAImG,EAAWwZ,EAAKxZ,SAIpB,YAHwB,IAAbA,GAA4BwZ,EAAKrS,UACxCnH,EAAW,CAAC,CAAEmH,QAASqS,EAAKrS,WAEzB,IAAIgQ,EAAgBqC,EAAKzZ,wBAAyByZ,EAAKpc,GAAIoc,EAAKvZ,KAAMuZ,EAAKhN,YAAa7S,EAAY+f,iBAAiB1Z,EAAUuZ,EAAQ1f,GAClJ,CACA,OAAI2f,EAAKG,MACE,IAAIxQ,EAAeqQ,EAAKzZ,wBAAyByZ,EAAKpc,GAAIoc,EAAKvZ,KAAMuZ,EAAKhN,YAAagN,EAAKZ,MAAOjf,EAAY8f,iBAAiBD,EAAKjN,eAAiBiN,EAAKxM,SAAUuM,EAAQ1f,GAAa2f,EAAKG,MAAOhgB,EAAY8f,iBAAiBD,EAAKzP,eAAiByP,EAAKxM,SAAUuM,EAAQ1f,GAAaF,EAAY+f,iBAAiBF,EAAKxZ,SAAUuZ,EAAQ1f,IAErV,IAAIuS,EAAaoN,EAAKzZ,wBAAyByZ,EAAKpc,GAAIoc,EAAKvZ,KAAMuZ,EAAKhN,YAAagN,EAAKZ,MAAOjf,EAAY8f,iBAAiBD,EAAKjN,eAAiBiN,EAAKxM,SAAUuM,EAAQ1f,GAAa2f,EAAKxP,IAAKrQ,EAAY8f,iBAAiBD,EAAKzN,aAAeyN,EAAKxM,SAAUuM,EAAQ1f,GAAa2f,EAAKX,oBAAqBlf,EAAY+f,iBAAiBF,EAAKxZ,SAAUuZ,EAAQ1f,GAAY,IAGzX2f,EAAKpc,EAChB,CACAiD,wBAAwB2M,EAAUuM,EAAQ1f,GACtC,IAAItF,EAAI,GACR,GAAIyY,EAAU,CAEV,IAAI4M,EAAmB,EACvB,IAAK,MAAMC,KAAa7M,EAAU,CAC9B,GAAkB,4BAAd6M,EACA,SAEJ,MAAMC,EAAmBpJ,SAASmJ,EAAW,IACzCC,EAAmBF,IACnBA,EAAmBE,EAE3B,CAEA,IAAK,IAAIvf,EAAI,EAAGA,GAAKqf,EAAkBrf,IACnChG,EAAEgG,GAAK,KAGX,IAAK,MAAMsf,KAAa7M,EAAU,CAC9B,GAAkB,4BAAd6M,EACA,SAEJ,MAAMC,EAAmBpJ,SAASmJ,EAAW,IAC7C,IAAI3L,EAA+B,EAC/BlB,EAAS6M,GAAW7Z,WACpBkO,EAA+BvU,EAAYC,kBAAkBoT,EAAS6M,GAAYN,EAAQ1f,IAE9FtF,EAAEulB,GAAoBngB,EAAYogB,kBAAkBR,EAAQvM,EAAS6M,GAAW9Z,wBAAyBiN,EAAS6M,GAAW5Z,KAAM+M,EAAS6M,GAAWrN,YAAa0B,EACxK,CACJ,CACA,OAAO3Z,CACX,CACA8L,wBAAwBL,EAAUuZ,EAAQ1f,GACtC,IAAItF,EAAI,GACR,GAAIyL,EACA,IAAK,IAAIzF,EAAI,EAAGG,EAAMsF,EAASvL,OAAQ8F,EAAIG,EAAKH,IAAK,CACjD,MAAMoe,EAAU3Y,EAASzF,GACzB,IAAIb,GAAU,EACd,GAAIif,EAAQxR,QAAS,CACjB,MAAMjB,EAAY+K,EAAsBjM,aAAa2T,EAAQxR,SAC7D,OAAQjB,EAAUkB,MACd,KAAK,EACL,KAAK,EACD1N,EAASC,EAAYC,kBAAkBC,EAAW8e,EAAQxR,SAAUoS,EAAQ1f,GAC5E,MACJ,KAAK,EAED,IAAImgB,EAAoBngB,EAAWqM,EAAUP,UACzCqU,IACAtgB,EAASC,EAAYC,kBAAkBogB,EAAmBT,EAAQ1f,IAKtE,MACJ,KAAK,EACL,KAAK,EACD,MAAMogB,EAAsB/T,EAAU1P,UAChC0jB,EAA4C,IAAnBhU,EAAUkB,KACnClB,EAAUP,SACV,KAEAwU,EAAkBZ,EAAOjd,mBAAmB2d,EAAqBpgB,GACvE,GAAIsgB,EACA,GAAID,EAAwB,CACxB,IAAIE,EAAuBD,EAAgBtgB,WAAWqgB,GAClDE,IACA1gB,EAASC,EAAYC,kBAAkBwgB,EAAsBb,EAAQY,EAAgBtgB,YAK7F,MAEIH,EAASC,EAAYC,kBAAkBugB,EAAgBtgB,WAAW6E,MAAO6a,EAAQY,EAAgBtgB,YAQrH,MAEIH,EAASC,EAAYC,kBAAkB+e,EAASY,EAAQ1f,GAE5D,IAAgB,IAAZH,EAAe,CACf,MAAMN,EAAOmgB,EAAOjc,QAAQ5D,GAC5B,IAAI2gB,GAAW,EAMf,IALIjhB,aAAgB+d,GAAmB/d,aAAgBgT,GAAgBhT,aAAgB+P,IAC/E/P,EAAKsf,oBAA+C,IAAzBtf,EAAK4G,SAASvL,SACzC4lB,GAAW,GAGfA,EAEA,SAEJ9lB,EAAEwF,KAAKL,EACX,CACJ,CAEJ,MAAO,CACHsG,SAAUzL,EACVmkB,oBAAsB1Y,EAAWA,EAASvL,OAAS,KAAOF,EAAEE,OAEpE,EAEJnB,EAAQqG,YAAcA,EACtB,MAAMud,EACF/gB,YAAYmkB,EAAc5gB,GACtB,GAAI4gB,EAAc,CACd,MAAM5f,EAAM4f,EAAa7lB,OACzB,IAAI8lB,EAAgB,EAChBC,EAAS,GACTC,GAAY,EAChB,IAAK,IAAI/L,EAAM,EAAGA,EAAMhU,EAAKgU,IAEzB,GAAW,OADA4L,EAAahH,OAAO5E,IAEvBA,EAAM,EAAIhU,EAAK,CACf,MAAMggB,EAASJ,EAAahH,OAAO5E,EAAM,GAC1B,MAAXgM,GACAF,EAAOzgB,KAAKugB,EAAa3V,UAAU4V,EAAe7L,IAClD8L,EAAOzgB,KAAK,oBACZwgB,EAAgB7L,EAAM,GAEN,MAAXgM,GAA6B,MAAXA,IACvBD,GAAY,GAEhB/L,GACJ,CAGRhb,KAAK+mB,UAAYA,EACK,IAAlBF,EAEA7mB,KAAKib,OAAS2L,GAGdE,EAAOzgB,KAAKugB,EAAa3V,UAAU4V,EAAe7f,IAClDhH,KAAKib,OAAS6L,EAAOtiB,KAAK,IAElC,MAEIxE,KAAK+mB,WAAY,EACjB/mB,KAAKib,OAAS2L,EAEd5mB,KAAK+mB,UACL/mB,KAAKinB,aAAejnB,KAAKknB,oBAGzBlnB,KAAKinB,aAAe,KAExBjnB,KAAKgG,OAASA,EACdhG,KAAKslB,kBAAoBzB,EAAoBpD,KAAKzgB,KAAKib,OAE3D,CACA7O,QACI,OAAO,IAAIoX,EAAaxjB,KAAKib,OAAQjb,KAAKgG,OAC9C,CACAyf,UAAU0B,GACFnnB,KAAKib,SAAWkM,IAGpBnnB,KAAKib,OAASkM,EACVnnB,KAAK+mB,YACL/mB,KAAKinB,aAAejnB,KAAKknB,qBAEjC,CACA3B,sBAAsBrb,EAAUgM,GAC5B,IAAIkR,EAAiBlR,EAAe/R,KAAKkjB,GAC9Bnd,EAAS+G,UAAUoW,EAAQlR,MAAOkR,EAAQ/Q,OAGrD,OADAwN,EAAqBpd,UAAY,EAC1B1G,KAAKib,OAAO/J,QAAQ4S,GAAsB,CAACngB,EAAO2jB,IAC9C9kB,EAAQ4B,uBAAuBgjB,EAAepK,SAASsK,EAAI,MAAQ,KAElF,CACAJ,oBACI,IAIIlM,EAAKhU,EAAKugB,EAAIP,EAJdQ,EAAe,GACfC,EAAe,GACfC,EAAe,GACfC,EAAe,GAEnB,IAAK3M,EAAM,EAAGhU,EAAMhH,KAAKib,OAAOla,OAAQia,EAAMhU,EAAKgU,IAC/CuM,EAAKvnB,KAAKib,OAAO2E,OAAO5E,GACxBwM,EAAaxM,GAAOuM,EACpBE,EAAazM,GAAOuM,EACpBG,EAAa1M,GAAOuM,EACpBI,EAAa3M,GAAOuM,EACT,OAAPA,GACIvM,EAAM,EAAIhU,IACVggB,EAAShnB,KAAKib,OAAO2E,OAAO5E,EAAM,GACnB,MAAXgM,GACAQ,EAAaxM,EAAM,GAAK,IACxByM,EAAazM,EAAM,GAAK,IACxB0M,EAAa1M,EAAM,GAAK,IACxB2M,EAAa3M,EAAM,GAAK,KAER,MAAXgM,GACLQ,EAAaxM,EAAM,GAAK,IACxByM,EAAazM,EAAM,GAAK,IACxB0M,EAAa1M,EAAM,GAAK,IACxB2M,EAAa3M,EAAM,GAAK,MAGxBwM,EAAaxM,EAAM,GAAKgM,EACxBS,EAAazM,EAAM,GAAKgM,EACxBU,EAAa1M,EAAM,GAAKgM,EACxBW,EAAa3M,EAAM,GAAKgM,GAE5BhM,KAIZ,MAAO,CACH4M,MAAOJ,EAAahjB,KAAK,IACzBqjB,MAAOJ,EAAajjB,KAAK,IACzBsjB,MAAOJ,EAAaljB,KAAK,IACzBujB,MAAOJ,EAAanjB,KAAK,IAEjC,CACAwjB,eAAexO,EAAQC,GACnB,OAAKzZ,KAAK+mB,WAAc/mB,KAAKinB,aAGzBzN,EACIC,EACOzZ,KAAKinB,aAAac,MAGlB/nB,KAAKinB,aAAaa,MAIzBrO,EACOzZ,KAAKinB,aAAaY,MAGlB7nB,KAAKinB,aAAaW,MAftB5nB,KAAKib,MAkBpB,EAEJrb,EAAQ4jB,aAAeA,EACvB,MAAMD,EACF9gB,cACIzC,KAAKioB,OAAS,GACdjoB,KAAKkoB,aAAc,EACnBloB,KAAKmoB,QAAU,KACfnoB,KAAKinB,aAAe,CAChBW,MAAO,KACPC,MAAO,KACPC,MAAO,KACPC,MAAO,KAEf,CACAzf,UACItI,KAAKooB,gBACT,CACAA,iBACQpoB,KAAKmoB,UACLnoB,KAAKmoB,QAAQ7f,UACbtI,KAAKmoB,QAAU,MAEfnoB,KAAKinB,aAAaW,QAClB5nB,KAAKinB,aAAaW,MAAMtf,UACxBtI,KAAKinB,aAAaW,MAAQ,MAE1B5nB,KAAKinB,aAAaY,QAClB7nB,KAAKinB,aAAaY,MAAMvf,UACxBtI,KAAKinB,aAAaY,MAAQ,MAE1B7nB,KAAKinB,aAAaa,QAClB9nB,KAAKinB,aAAaa,MAAMxf,UACxBtI,KAAKinB,aAAaa,MAAQ,MAE1B9nB,KAAKinB,aAAac,QAClB/nB,KAAKinB,aAAac,MAAMzf,UACxBtI,KAAKinB,aAAac,MAAQ,KAElC,CACA1hB,KAAKgiB,GACDroB,KAAKioB,OAAO5hB,KAAKgiB,GACjBroB,KAAKkoB,YAAcloB,KAAKkoB,aAAeG,EAAKtB,SAChD,CACAvB,QAAQ6C,GACJroB,KAAKioB,OAAOzC,QAAQ6C,GACpBroB,KAAKkoB,YAAcloB,KAAKkoB,aAAeG,EAAKtB,SAChD,CACAhmB,SACI,OAAOf,KAAKioB,OAAOlnB,MACvB,CACA0kB,UAAU6C,EAAOnB,GACTnnB,KAAKioB,OAAOK,GAAOrN,SAAWkM,IAE9BnnB,KAAKooB,iBACLpoB,KAAKioB,OAAOK,GAAO7C,UAAU0B,GAErC,CACAzN,QAAQpS,GACJ,IAAKtH,KAAKmoB,QAAS,CACf,IAAII,EAAUvoB,KAAKioB,OAAO9jB,KAAIqkB,GAAKA,EAAEvN,SACrCjb,KAAKmoB,QAAU,IAAI7E,EAAahc,EAASihB,EAASvoB,KAAKioB,OAAO9jB,KAAIqkB,GAAKA,EAAExiB,SAC7E,CACA,OAAOhG,KAAKmoB,OAChB,CACAvO,UAAUtS,EAASkS,EAAQC,GACvB,OAAKzZ,KAAKkoB,YAIF1O,EACIC,GACKzZ,KAAKinB,aAAac,QACnB/nB,KAAKinB,aAAac,MAAQ/nB,KAAKyoB,gBAAgBnhB,EAASkS,EAAQC,IAE7DzZ,KAAKinB,aAAac,QAGpB/nB,KAAKinB,aAAaa,QACnB9nB,KAAKinB,aAAaa,MAAQ9nB,KAAKyoB,gBAAgBnhB,EAASkS,EAAQC,IAE7DzZ,KAAKinB,aAAaa,OAIzBrO,GACKzZ,KAAKinB,aAAaY,QACnB7nB,KAAKinB,aAAaY,MAAQ7nB,KAAKyoB,gBAAgBnhB,EAASkS,EAAQC,IAE7DzZ,KAAKinB,aAAaY,QAGpB7nB,KAAKinB,aAAaW,QACnB5nB,KAAKinB,aAAaW,MAAQ5nB,KAAKyoB,gBAAgBnhB,EAASkS,EAAQC,IAE7DzZ,KAAKinB,aAAaW,OA5B1B5nB,KAAK0Z,QAAQpS,EAgC5B,CACAmhB,gBAAgBnhB,EAASkS,EAAQC,GAC7B,IAAI8O,EAAUvoB,KAAKioB,OAAO9jB,KAAIqkB,GAAKA,EAAER,eAAexO,EAAQC,KAC5D,OAAO,IAAI6J,EAAahc,EAASihB,EAASvoB,KAAKioB,OAAO9jB,KAAIqkB,GAAKA,EAAExiB,SACrE,EAEJpG,EAAQ2jB,iBAAmBA,EAC3B,MAAMD,EACF7gB,YAAY6E,EAASihB,EAASjV,GAC1BtT,KAAKuoB,QAAUA,EACfvoB,KAAKsT,MAAQA,EACbtT,KAAK0oB,QAAUphB,EAAQiB,kBAAkBggB,EAC7C,CACAjgB,UACwC,mBAAzBtI,KAAK0oB,QAAQpgB,SACpBtI,KAAK0oB,QAAQpgB,SAErB,CACAxH,WACI,MAAMD,EAAI,GACV,IAAK,IAAIgG,EAAI,EAAGG,EAAMhH,KAAKsT,MAAMvS,OAAQ8F,EAAIG,EAAKH,IAC9ChG,EAAEwF,KAAK,QAAUrG,KAAKsT,MAAMzM,GAAK,KAAO7G,KAAKuoB,QAAQ1hB,IAEzD,OAAOhG,EAAE2D,KAAK,KAClB,CACAsR,kBAAkB6S,EAAQC,EAAe7O,GACrC,MAAMvU,EAASxF,KAAK0oB,QAAQ5S,kBAAkB6S,EAAQC,EAAe7O,GACrE,OAAKvU,EAGE,CACHQ,OAAQhG,KAAKsT,MAAM9N,EAAO8iB,OAC1BpS,eAAgB1Q,EAAO0Q,gBAJhB,IAMf,EAEJtW,EAAQ0jB,aAAeA,C,gBClqBvBrjB,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDP,EAAQipB,iBAAmBjpB,EAAQkpB,qBAAuBlpB,EAAQmpB,SAAWnpB,EAAQopB,kBAAoBppB,EAAQqpB,gBAAkBrpB,EAAQspB,WAAatpB,EAAQupB,gBAAkBvpB,EAAQgN,WAAahN,EAAQ+d,WAAQ,EACvN,MAAMnb,EAAU,EAAQ,KACxB,MAAMmb,EACFlb,YAAY2mB,EAAWC,EAAWC,GAC9BtpB,KAAKopB,UAAYA,EACjBppB,KAAKqpB,UAAYA,EACjBrpB,KAAKspB,MAAQA,EACbtpB,KAAKupB,iBAAmB,IAAI/mB,EAAQK,UAAUC,GAAc9C,KAAKspB,MAAM3lB,MAAMb,IACjF,CACA6J,0BAA0BsO,EAAQ6C,GAC9B,OAAO9d,KAAKwpB,sBAAsBN,EAAWjO,GAAS6C,EAC1D,CACAnR,6BAA6BsO,EAAQ6C,GACjC,OAmMR,SAAiC2L,EAAkBL,GAE/CK,EAAiBplB,MAAK,CAACgJ,EAAGC,KACtB,IAAIzM,EAAI2B,EAAQknB,OAAOrc,EAAE3J,MAAO4J,EAAE5J,OAClC,OAAU,IAAN7C,EACOA,GAEXA,EAAI2B,EAAQmnB,UAAUtc,EAAEuc,aAActc,EAAEsc,cAC9B,IAAN/oB,EACOA,EAEJwM,EAAEib,MAAQhb,EAAEgb,MAAK,IAG5B,IAAIuB,EAAmB,EACnBC,EAAoB,UACpBC,EAAoB,UACxB,KAAON,EAAiB1oB,QAAU,GAAmC,KAA9B0oB,EAAiB,GAAG/lB,OAAc,CACrE,IAAIsmB,EAAmBP,EAAiBQ,SACJ,IAAhCD,EAAiB3oB,YACjBwoB,EAAmBG,EAAiB3oB,WAEJ,OAAhC2oB,EAAiBzoB,aACjBuoB,EAAoBE,EAAiBzoB,YAEL,OAAhCyoB,EAAiBvoB,aACjBsoB,EAAoBC,EAAiBvoB,WAE7C,CACA,IAAIqc,EAAW,IAAIiL,EAASK,GACxBc,EAAW,IAAIf,EAAgBU,EAAkB/L,EAASqM,MAAML,GAAoBhM,EAASqM,MAAMJ,IACnGrqB,EAAO,IAAImpB,EAAiB,IAAIC,EAAqB,EAAG,MAAO,EAAgB,EAAG,GAAI,IAC1F,IAAK,IAAIjiB,EAAI,EAAGG,EAAMyiB,EAAiB1oB,OAAQ8F,EAAIG,EAAKH,IAAK,CACzD,IAAInB,EAAO+jB,EAAiB5iB,GAC5BnH,EAAK0qB,OAAO,EAAG1kB,EAAKhC,MAAOgC,EAAKkkB,aAAclkB,EAAKrE,UAAWyc,EAASqM,MAAMzkB,EAAKnE,YAAauc,EAASqM,MAAMzkB,EAAKjE,YACvH,CACA,OAAO,IAAIkc,EAAMG,EAAUoM,EAAUxqB,EACzC,CAxOe2qB,CAAwBpP,EAAQ6C,EAC3C,CACAG,cACI,OAAOje,KAAKopB,UAAUnL,aAC1B,CACA5S,cACI,OAAOrL,KAAKqpB,SAChB,CACA1lB,MAAM8I,GACF,GAAkB,OAAdA,EACA,OAAOzM,KAAKqpB,UAEhB,MAAMvmB,EAAY2J,EAAU3J,UAEtBwnB,EADuBtqB,KAAKupB,iBAAiB9lB,IAAIX,GACZynB,MAAMC,GAsCzD,SAAuC/d,EAAWmd,GAC9C,GAAqB,OAAjBA,EACA,OAAO,EAEX,IAAItB,EAAQ,EACRmC,EAAeb,EAAatB,GAChC,KAAO7b,GAAW,CACd,GAAIie,EAAcje,EAAU3J,UAAW2nB,GAAe,CAElD,GADAnC,IACIA,IAAUsB,EAAa7oB,OACvB,OAAO,EAEX0pB,EAAeb,EAAatB,EAChC,CACA7b,EAAYA,EAAUD,MAC1B,CACA,OAAO,CACX,CAvD+Dme,CAA8Ble,EAAUD,OAAQge,EAAEZ,gBACzG,OAAKU,EAGE,IAAInB,EAAgBmB,EAAcjpB,UAAWipB,EAAc/oB,WAAY+oB,EAAc7oB,YAFjF,IAGf,EAEJ7B,EAAQ+d,MAAQA,EAChB,MAAM/Q,EACFnK,YAAY+J,EAAQ1J,GAChB9C,KAAKwM,OAASA,EACdxM,KAAK8C,UAAYA,CACrB,CACA6J,eAAeie,GACX,IAAIplB,EAAS,KACb,IAAK,IAAIqB,EAAI,EAAGA,EAAI+jB,EAAS7pB,OAAQ8F,IACjCrB,EAAS,IAAIoH,EAAWpH,EAAQolB,EAAS/jB,IAE7C,OAAOrB,CACX,CACAa,KAAKvD,GACD,OAAO,IAAI8J,EAAW5M,KAAM8C,EAChC,CACAsL,cACI,IAAIia,EAAOroB,KACX,MAAMwF,EAAS,GACf,KAAO6iB,GACH7iB,EAAOa,KAAKgiB,EAAKvlB,WACjBulB,EAAOA,EAAK7b,OAGhB,OADAhH,EAAOlB,UACAkB,CACX,CACA1E,WACI,OAAOd,KAAKoO,cAAc5J,KAAK,IACnC,EAqBJ,SAASkmB,EAAc5nB,EAAW2nB,GAC9B,OAAOA,IAAiB3nB,GAAcA,EAAU+nB,WAAWJ,IAAoD,MAAnC3nB,EAAU2nB,EAAa1pB,OACvG,CArBAnB,EAAQgN,WAAaA,EAsBrB,MAAMuc,EACF1mB,YAAYpB,EAAWkK,EAAcC,GACjCxL,KAAKqB,UAAYA,EACjBrB,KAAKuL,aAAeA,EACpBvL,KAAKwL,aAAeA,CACxB,EAMJ,SAAS0d,EAAWjO,GAChB,IAAKA,EACD,MAAO,GAEX,IAAKA,EAAO6P,WAAa1X,MAAMC,QAAQ4H,EAAO6P,UAC1C,MAAO,GAEX,IAAIA,EAAW7P,EAAO6P,SAClBtlB,EAAS,GAAIulB,EAAY,EAC7B,IAAK,IAAIlkB,EAAI,EAAGG,EAAM8jB,EAAS/pB,OAAQ8F,EAAIG,EAAKH,IAAK,CACjD,IAIIJ,EAJAukB,EAAQF,EAASjkB,GACrB,IAAKmkB,EAAMF,SACP,SAGJ,GAA2B,iBAAhBE,EAAMtnB,MAAoB,CACjC,IAAIunB,EAASD,EAAMtnB,MAEnBunB,EAASA,EAAO/Z,QAAQ,QAAS,IAEjC+Z,EAASA,EAAO/Z,QAAQ,QAAS,IACjCzK,EAASwkB,EAAOpd,MAAM,IAC1B,MAEIpH,EADK2M,MAAMC,QAAQ2X,EAAMtnB,OAChBsnB,EAAMtnB,MAGN,CAAC,IAEd,IAAIrC,GAAa,EACjB,GAAwC,iBAA7B2pB,EAAMF,SAASzpB,UAAwB,CAC9CA,EAAY,EACZ,IAAIupB,EAAWI,EAAMF,SAASzpB,UAAUwM,MAAM,KAC9C,IAAK,IAAIqd,EAAI,EAAGC,EAAOP,EAAS7pB,OAAQmqB,EAAIC,EAAMD,IAE9C,OADcN,EAASM,IAEnB,IAAK,SACD7pB,GAAwB,EACxB,MACJ,IAAK,OACDA,GAAwB,EACxB,MACJ,IAAK,YACDA,GAAwB,EACxB,MACJ,IAAK,gBACDA,GAAwB,EAIxC,CACA,IAAIE,EAAa,KACwB,iBAA9BypB,EAAMF,SAASvpB,YAA2BiB,EAAQ4oB,gBAAgBJ,EAAMF,SAASvpB,cACxFA,EAAaypB,EAAMF,SAASvpB,YAEhC,IAAIE,EAAa,KACwB,iBAA9BupB,EAAMF,SAASrpB,YAA2Be,EAAQ4oB,gBAAgBJ,EAAMF,SAASrpB,cACxFA,EAAaupB,EAAMF,SAASrpB,YAEhC,IAAK,IAAIypB,EAAI,EAAGC,EAAO1kB,EAAO1F,OAAQmqB,EAAIC,EAAMD,IAAK,CACjD,IACIN,EADSnkB,EAAOykB,GAAGtI,OACD/U,MAAM,KACxBnK,EAAQknB,EAASA,EAAS7pB,OAAS,GACnC6oB,EAAe,KACfgB,EAAS7pB,OAAS,IAClB6oB,EAAegB,EAASS,MAAM,EAAGT,EAAS7pB,OAAS,GACnD6oB,EAAatlB,WAEjBkB,EAAOulB,KAAe,IAAI9B,EAAgBvlB,EAAOkmB,EAAc/iB,EAAGxF,EAAWE,EAAYE,EAC7F,CACJ,CACA,OAAO+D,CACX,CA5EA5F,EAAQupB,gBAAkBA,EA6E1BvpB,EAAQspB,WAAaA,EACrB,MAAMD,EACFxmB,YAAYiB,EAAOkmB,EAActB,EAAOjnB,EAAWE,EAAYE,GAC3DzB,KAAK0D,MAAQA,EACb1D,KAAK4pB,aAAeA,EACpB5pB,KAAKsoB,MAAQA,EACbtoB,KAAKqB,UAAYA,EACjBrB,KAAKuB,WAAaA,EAClBvB,KAAKyB,WAAaA,CACtB,EAEJ7B,EAAQqpB,gBAAkBA,EAuB1BrpB,EAAQopB,kBAtBR,SAA2B3nB,GACvB,IAAmB,IAAfA,EACA,MAAO,UAEX,IAAIiqB,EAAQ,GAgBZ,OAfgB,EAAZjqB,IACAiqB,GAAS,WAEG,EAAZjqB,IACAiqB,GAAS,SAEG,EAAZjqB,IACAiqB,GAAS,cAEG,EAAZjqB,IACAiqB,GAAS,kBAEC,KAAVA,IACAA,EAAQ,QAELA,EAAM1I,MACjB,EA2CA,MAAMmG,EACFtmB,YAAY2mB,GAIR,GAHAppB,KAAKurB,aAAe,EACpBvrB,KAAKwrB,UAAY,GACjBxrB,KAAKyrB,UAAYxrB,OAAOqU,OAAO,MAC3BlB,MAAMC,QAAQ+V,GAAY,CAC1BppB,KAAK0rB,WAAY,EACjB,IAAK,IAAI7kB,EAAI,EAAGG,EAAMoiB,EAAUroB,OAAQ8F,EAAIG,EAAKH,IAC7C7G,KAAKyrB,UAAUrC,EAAUviB,IAAMA,EAC/B7G,KAAKwrB,UAAU3kB,GAAKuiB,EAAUviB,EAEtC,MAEI7G,KAAK0rB,WAAY,CAEzB,CACAvB,MAAMwB,GACF,GAAc,OAAVA,EACA,OAAO,EAEXA,EAAQA,EAAMC,cACd,IAAIzrB,EAAQH,KAAKyrB,UAAUE,GAC3B,GAAIxrB,EACA,OAAOA,EAEX,GAAIH,KAAK0rB,UACL,MAAM,IAAI5nB,MAAM,gCAAgC6nB,KAKpD,OAHAxrB,IAAUH,KAAKurB,aACfvrB,KAAKyrB,UAAUE,GAASxrB,EACxBH,KAAKwrB,UAAUrrB,GAASwrB,EACjBxrB,CACX,CACA8d,cACI,OAAOje,KAAKwrB,UAAUH,MAAM,EAChC,EAEJzrB,EAAQmpB,SAAWA,EACnB,MAAMD,EACFrmB,YAAYopB,EAAYjC,EAAcvoB,EAAWE,EAAYE,GACzDzB,KAAK6rB,WAAaA,EAClB7rB,KAAK4pB,aAAeA,EACpB5pB,KAAKqB,UAAYA,EACjBrB,KAAKuB,WAAaA,EAClBvB,KAAKyB,WAAaA,CACtB,CACA2K,QACI,OAAO,IAAI0c,EAAqB9oB,KAAK6rB,WAAY7rB,KAAK4pB,aAAc5pB,KAAKqB,UAAWrB,KAAKuB,WAAYvB,KAAKyB,WAC9G,CACAkL,gBAAgBmf,GACZ,IAAIjrB,EAAI,GACR,IAAK,IAAIgG,EAAI,EAAGG,EAAM8kB,EAAI/qB,OAAQ8F,EAAIG,EAAKH,IACvChG,EAAEgG,GAAKilB,EAAIjlB,GAAGuF,QAElB,OAAOvL,CACX,CACAkrB,gBAAgBF,EAAYxqB,EAAWE,EAAYE,GAC3CzB,KAAK6rB,WAAaA,EAClBlqB,QAAQC,IAAI,wBAGZ5B,KAAK6rB,WAAaA,GAGH,IAAfxqB,IACArB,KAAKqB,UAAYA,GAEF,IAAfE,IACAvB,KAAKuB,WAAaA,GAEH,IAAfE,IACAzB,KAAKyB,WAAaA,EAE1B,EAEJ7B,EAAQkpB,qBAAuBA,EAC/B,MAAMD,EACFpmB,YAAYupB,EAAWC,EAAwB,GAAIC,EAAY,CAAC,GAC5DlsB,KAAKgsB,UAAYA,EACjBhsB,KAAKksB,UAAYA,EACjBlsB,KAAKmsB,uBAAyBF,CAClC,CACAtf,0BAA0Bmf,GACtB,OAAmB,IAAfA,EAAI/qB,QAGR+qB,EAAIznB,KAAKrE,KAAKosB,mBAFHN,CAIf,CACAnf,yBAAyBU,EAAGC,GACxB,GAAID,EAAEwe,aAAeve,EAAEue,WAAY,CAC/B,MAAMQ,EAAgBhf,EAAEuc,aAClB0C,EAAgBhf,EAAEsc,aACxB,IAAI2C,EAAqC,OAAlBF,EAAyB,EAAIA,EAActrB,OAC9DyrB,EAAqC,OAAlBF,EAAyB,EAAIA,EAAcvrB,OAClE,GAAIwrB,IAAqBC,EACrB,IAAK,IAAI3lB,EAAI,EAAGA,EAAI0lB,EAAkB1lB,IAAK,CACvC,MAAM4lB,EAAOJ,EAAcxlB,GAAG9F,OACxB2rB,EAAOJ,EAAczlB,GAAG9F,OAC9B,GAAI0rB,IAASC,EACT,OAAOA,EAAOD,CAEtB,CAEJ,OAAOD,EAAmBD,CAC9B,CACA,OAAOjf,EAAEue,WAAaxe,EAAEwe,UAC5B,CACAloB,MAAMD,GACF,GAAc,KAAVA,EACA,OAAOmlB,EAAiB8D,mBAAmB,GAAGC,OAAO5sB,KAAKgsB,WAAWY,OAAO5sB,KAAKmsB,yBAErF,IACIU,EACAC,EAFAC,EAAWrpB,EAAMiK,QAAQ,KAW7B,OARkB,IAAdof,GACAF,EAAOnpB,EACPopB,EAAO,KAGPD,EAAOnpB,EAAMuN,UAAU,EAAG8b,GAC1BD,EAAOppB,EAAMuN,UAAU8b,EAAW,IAElC/sB,KAAKksB,UAAUrX,eAAegY,GACvB7sB,KAAKksB,UAAUW,GAAMlpB,MAAMmpB,GAE/BjE,EAAiB8D,mBAAmB,GAAGC,OAAO5sB,KAAKgsB,WAAWY,OAAO5sB,KAAKmsB,wBACrF,CACA/B,OAAOyB,EAAYnoB,EAAOkmB,EAAcvoB,EAAWE,EAAYE,GAC3D,GAAc,KAAViC,EAEA,YADA1D,KAAKgtB,cAAcnB,EAAYjC,EAAcvoB,EAAWE,EAAYE,GAGxE,IACIorB,EACAC,EASAG,EAXAF,EAAWrpB,EAAMiK,QAAQ,MAGX,IAAdof,GACAF,EAAOnpB,EACPopB,EAAO,KAGPD,EAAOnpB,EAAMuN,UAAU,EAAG8b,GAC1BD,EAAOppB,EAAMuN,UAAU8b,EAAW,IAGlC/sB,KAAKksB,UAAUrX,eAAegY,GAC9BI,EAAQjtB,KAAKksB,UAAUW,IAGvBI,EAAQ,IAAIpE,EAAiB7oB,KAAKgsB,UAAU5f,QAAS0c,EAAqBoE,SAASltB,KAAKmsB,yBACxFnsB,KAAKksB,UAAUW,GAAQI,GAE3BA,EAAM7C,OAAOyB,EAAa,EAAGiB,EAAMlD,EAAcvoB,EAAWE,EAAYE,EAC5E,CACAurB,cAAcnB,EAAYjC,EAAcvoB,EAAWE,EAAYE,GAC3D,GAAqB,OAAjBmoB,EAAJ,CAMA,IAAK,IAAI/iB,EAAI,EAAGG,EAAMhH,KAAKmsB,uBAAuBprB,OAAQ8F,EAAIG,EAAKH,IAAK,CACpE,IAAInB,EAAO1F,KAAKmsB,uBAAuBtlB,GACvC,GAA2D,IAAvDrE,EAAQmnB,UAAUjkB,EAAKkkB,aAAcA,GAGrC,YADAlkB,EAAKqmB,gBAAgBF,EAAYxqB,EAAWE,EAAYE,EAGhE,EAGmB,IAAfJ,IACAA,EAAYrB,KAAKgsB,UAAU3qB,WAEZ,IAAfE,IACAA,EAAavB,KAAKgsB,UAAUzqB,YAEb,IAAfE,IACAA,EAAazB,KAAKgsB,UAAUvqB,YAEhCzB,KAAKmsB,uBAAuB9lB,KAAK,IAAIyiB,EAAqB+C,EAAYjC,EAAcvoB,EAAWE,EAAYE,GArB3G,MAFIzB,KAAKgsB,UAAUD,gBAAgBF,EAAYxqB,EAAWE,EAAYE,EAwB1E,EAEJ7B,EAAQipB,iBAAmBA,C,cCxa3B,SAASsE,EAAQC,GACb,OAAIha,MAAMC,QAAQ+Z,GAQtB,SAAoBtB,GAChB,IAAIjrB,EAAI,GACR,IAAK,IAAIgG,EAAI,EAAGG,EAAM8kB,EAAI/qB,OAAQ8F,EAAIG,EAAKH,IACvChG,EAAEgG,GAAKsmB,EAAQrB,EAAIjlB,IAEvB,OAAOhG,CACX,CAbewsB,CAAWD,GAEG,iBAAdA,EAYf,SAAkBE,GACd,IAAIzsB,EAAI,CAAC,EACT,IAAK,IAAI4R,KAAO6a,EACZzsB,EAAE4R,GAAO0a,EAAQG,EAAI7a,IAEzB,OAAO5R,CACX,CAjBe0sB,CAASH,GAEbA,CACX,CAdAntB,OAAOC,eAAeN,EAAS,aAAc,CAAEO,OAAO,IACtDP,EAAQmX,eAAiBnX,EAAQiD,SAAWjD,EAAQwE,uBAAyBxE,EAAQwrB,gBAAkBxrB,EAAQ+pB,UAAY/pB,EAAQ8pB,OAAS9pB,EAAQukB,YAAcvkB,EAAQ4kB,SAAW5kB,EAAQ4T,aAAe5T,EAAQwM,WAAQ,EAI5NxM,EAAQwM,MAHR,SAAeghB,GACX,OAAOD,EAAQC,EACnB,EAiCAxtB,EAAQ4T,aARR,SAAsB1F,KAAWtF,GAM7B,OALAA,EAAQS,SAAQgS,IACZ,IAAK,IAAIxI,KAAOwI,EACZnN,EAAO2E,GAAOwI,EAAOxI,EACzB,IAEG3E,CACX,EAcAlO,EAAQ4kB,SAZR,SAASA,EAASgJ,GACd,MAAMC,GAAOD,EAAKE,YAAY,OAASF,EAAKE,YAAY,MACxD,OAAY,IAARD,EACOD,GAEDC,GAAQD,EAAKzsB,OAAS,EACrByjB,EAASgJ,EAAKvc,UAAU,EAAGuc,EAAKzsB,OAAS,IAGzCysB,EAAKvmB,OAAc,GAANwmB,EAE5B,EAEA,IAAIE,EAAyB,yCAkC7B,SAASjE,EAAOrc,EAAGC,GACf,OAAID,EAAIC,GACI,EAERD,EAAIC,EACG,EAEJ,CACX,CATA1N,EAAQukB,YAhCR,MACIxX,mBAAmBihB,GACf,OAAoB,OAAhBA,IAGJD,EAAuBjnB,UAAY,EAC5BinB,EAAuBlN,KAAKmN,GACvC,CACAjhB,uBAAuBihB,EAAaC,EAAe3X,GAC/C,OAAO0X,EAAY1c,QAAQyc,GAAwB,CAAChqB,EAAO2kB,EAAOwF,EAAcC,KAC5E,IAAI1G,EAAUnR,EAAe8G,SAASsL,GAASwF,EAAc,KAC7D,IAAIzG,EAgBA,OAAO1jB,EAhBE,CACT,IAAI6B,EAASqoB,EAAc5c,UAAUoW,EAAQlR,MAAOkR,EAAQ/Q,KAE5D,KAAqB,MAAd9Q,EAAO,IACVA,EAASA,EAAOyL,UAAU,GAE9B,OAAQ8c,GACJ,IAAK,WACD,OAAOvoB,EAAOwoB,cAClB,IAAK,SACD,OAAOxoB,EAAOomB,cAClB,QACI,OAAOpmB,EAEnB,CAGA,GAER,GAYJ5F,EAAQ8pB,OAASA,EAwBjB9pB,EAAQ+pB,UAvBR,SAAmBtc,EAAGC,GAClB,GAAU,OAAND,GAAoB,OAANC,EACd,OAAO,EAEX,IAAKD,EACD,OAAQ,EAEZ,IAAKC,EACD,OAAO,EAEX,IAAI2gB,EAAO5gB,EAAEtM,OACTmtB,EAAO5gB,EAAEvM,OACb,GAAIktB,IAASC,EAAM,CACf,IAAK,IAAIrnB,EAAI,EAAGA,EAAIonB,EAAMpnB,IAAK,CAC3B,IAAI2I,EAAMka,EAAOrc,EAAExG,GAAIyG,EAAEzG,IACzB,GAAY,IAAR2I,EACA,OAAOA,CAEf,CACA,OAAO,CACX,CACA,OAAOye,EAAOC,CAClB,EAqBAtuB,EAAQwrB,gBAnBR,SAAyB+C,GACrB,SAAI,kBAAkB1N,KAAK0N,IAIvB,kBAAkB1N,KAAK0N,IAIvB,kBAAkB1N,KAAK0N,IAIvB,kBAAkB1N,KAAK0N,GAK/B,EAQAvuB,EAAQwE,uBAHR,SAAgCjE,GAC5B,OAAOA,EAAM+Q,QAAQ,0CAA2C,OACpE,EAgBAtR,EAAQiD,SAdR,MACIJ,YAAY2rB,GACRpuB,KAAKouB,GAAKA,EACVpuB,KAAKquB,MAAQ,IAAIpqB,GACrB,CACAR,IAAIgP,GACA,GAAIzS,KAAKquB,MAAM3b,IAAID,GACf,OAAOzS,KAAKquB,MAAM5qB,IAAIgP,GAE1B,MAAMtS,EAAQH,KAAKouB,GAAG3b,GAEtB,OADAzS,KAAKquB,MAAMvsB,IAAI2Q,EAAKtS,GACbA,CACX,GAGJP,EAAQmX,eAAwC,oBAAhBuX,YAE1B,WACE,OAAO7X,KAAKC,KAChB,EACE,WACE,OAAO4X,YAAY5X,KACvB,C,GC3KA6X,EAA2B,CAAC,E,OAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB7f,IAAjB8f,EACH,OAAOA,EAAa9uB,QAGrB,IAAIC,EAAS0uB,EAAyBE,GAAY,CAGjD7uB,QAAS,CAAC,GAOX,OAHA+uB,EAAoBF,GAAU3Z,KAAKjV,EAAOD,QAASC,EAAQA,EAAOD,QAAS4uB,GAGpE3uB,EAAOD,OACf,CCnB0B4uB,CAAoB,I","sources":["webpack://vscodetextmate/webpack/universalModuleDefinition","webpack://vscodetextmate/./out/debug.js","webpack://vscodetextmate/./out/encodedTokenAttributes.js","webpack://vscodetextmate/./out/grammar/basicScopesAttributeProvider.js","webpack://vscodetextmate/./out/grammar/grammar.js","webpack://vscodetextmate/./out/grammar/grammarDependencies.js","webpack://vscodetextmate/./out/grammar/index.js","webpack://vscodetextmate/./out/grammar/tokenizeString.js","webpack://vscodetextmate/./out/json.js","webpack://vscodetextmate/./out/main.js","webpack://vscodetextmate/./out/matcher.js","webpack://vscodetextmate/./out/onigLib.js","webpack://vscodetextmate/./out/parseRawGrammar.js","webpack://vscodetextmate/./out/plist.js","webpack://vscodetextmate/./out/registry.js","webpack://vscodetextmate/./out/rule.js","webpack://vscodetextmate/./out/theme.js","webpack://vscodetextmate/./out/utils.js","webpack://vscodetextmate/webpack/bootstrap","webpack://vscodetextmate/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vscodetextmate\"] = factory();\n\telse\n\t\troot[\"vscodetextmate\"] = factory();\n})(this, function() {\nreturn ","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UseOnigurumaFindOptions = exports.DebugFlags = void 0;\nexports.DebugFlags = {\n InDebugMode: (typeof process !== 'undefined' && !!process.env['VSCODE_TEXTMATE_DEBUG'])\n};\nexports.UseOnigurumaFindOptions = false;\n//# sourceMappingURL=debug.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toOptionalTokenType = exports.EncodedTokenAttributes = void 0;\nvar EncodedTokenAttributes;\n(function (EncodedTokenAttributes) {\n function toBinaryStr(encodedTokenAttributes) {\n let r = encodedTokenAttributes.toString(2);\n while (r.length < 32) {\n r = \"0\" + r;\n }\n return r;\n }\n EncodedTokenAttributes.toBinaryStr = toBinaryStr;\n function print(encodedTokenAttributes) {\n const languageId = EncodedTokenAttributes.getLanguageId(encodedTokenAttributes);\n const tokenType = EncodedTokenAttributes.getTokenType(encodedTokenAttributes);\n const fontStyle = EncodedTokenAttributes.getFontStyle(encodedTokenAttributes);\n const foreground = EncodedTokenAttributes.getForeground(encodedTokenAttributes);\n const background = EncodedTokenAttributes.getBackground(encodedTokenAttributes);\n console.log({\n languageId: languageId,\n tokenType: tokenType,\n fontStyle: fontStyle,\n foreground: foreground,\n background: background,\n });\n }\n EncodedTokenAttributes.print = print;\n function getLanguageId(encodedTokenAttributes) {\n return ((encodedTokenAttributes & 255 /* LANGUAGEID_MASK */) >>>\n 0 /* LANGUAGEID_OFFSET */);\n }\n EncodedTokenAttributes.getLanguageId = getLanguageId;\n function getTokenType(encodedTokenAttributes) {\n return ((encodedTokenAttributes & 768 /* TOKEN_TYPE_MASK */) >>>\n 8 /* TOKEN_TYPE_OFFSET */);\n }\n EncodedTokenAttributes.getTokenType = getTokenType;\n function containsBalancedBrackets(encodedTokenAttributes) {\n return (encodedTokenAttributes & 1024 /* BALANCED_BRACKETS_MASK */) !== 0;\n }\n EncodedTokenAttributes.containsBalancedBrackets = containsBalancedBrackets;\n function getFontStyle(encodedTokenAttributes) {\n return ((encodedTokenAttributes & 30720 /* FONT_STYLE_MASK */) >>>\n 11 /* FONT_STYLE_OFFSET */);\n }\n EncodedTokenAttributes.getFontStyle = getFontStyle;\n function getForeground(encodedTokenAttributes) {\n return ((encodedTokenAttributes & 16744448 /* FOREGROUND_MASK */) >>>\n 15 /* FOREGROUND_OFFSET */);\n }\n EncodedTokenAttributes.getForeground = getForeground;\n function getBackground(encodedTokenAttributes) {\n return ((encodedTokenAttributes & 4278190080 /* BACKGROUND_MASK */) >>>\n 24 /* BACKGROUND_OFFSET */);\n }\n EncodedTokenAttributes.getBackground = getBackground;\n /**\n * Updates the fields in `metadata`.\n * A value of `0`, `NotSet` or `null` indicates that the corresponding field should be left as is.\n */\n function set(encodedTokenAttributes, languageId, tokenType, containsBalancedBrackets, fontStyle, foreground, background) {\n let _languageId = EncodedTokenAttributes.getLanguageId(encodedTokenAttributes);\n let _tokenType = EncodedTokenAttributes.getTokenType(encodedTokenAttributes);\n let _containsBalancedBracketsBit = EncodedTokenAttributes.containsBalancedBrackets(encodedTokenAttributes) ? 1 : 0;\n let _fontStyle = EncodedTokenAttributes.getFontStyle(encodedTokenAttributes);\n let _foreground = EncodedTokenAttributes.getForeground(encodedTokenAttributes);\n let _background = EncodedTokenAttributes.getBackground(encodedTokenAttributes);\n if (languageId !== 0) {\n _languageId = languageId;\n }\n if (tokenType !== 8 /* NotSet */) {\n _tokenType = fromOptionalTokenType(tokenType);\n }\n if (containsBalancedBrackets !== null) {\n _containsBalancedBracketsBit = containsBalancedBrackets ? 1 : 0;\n }\n if (fontStyle !== -1 /* NotSet */) {\n _fontStyle = fontStyle;\n }\n if (foreground !== 0) {\n _foreground = foreground;\n }\n if (background !== 0) {\n _background = background;\n }\n return (((_languageId << 0 /* LANGUAGEID_OFFSET */) |\n (_tokenType << 8 /* TOKEN_TYPE_OFFSET */) |\n (_containsBalancedBracketsBit <<\n 10 /* BALANCED_BRACKETS_OFFSET */) |\n (_fontStyle << 11 /* FONT_STYLE_OFFSET */) |\n (_foreground << 15 /* FOREGROUND_OFFSET */) |\n (_background << 24 /* BACKGROUND_OFFSET */)) >>>\n 0);\n }\n EncodedTokenAttributes.set = set;\n})(EncodedTokenAttributes = exports.EncodedTokenAttributes || (exports.EncodedTokenAttributes = {}));\nfunction toOptionalTokenType(standardType) {\n return standardType;\n}\nexports.toOptionalTokenType = toOptionalTokenType;\nfunction fromOptionalTokenType(standardType) {\n return standardType;\n}\n//# sourceMappingURL=encodedTokenAttributes.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BasicScopeAttributesProvider = exports.BasicScopeAttributes = void 0;\nconst utils_1 = require(\"../utils\");\nclass BasicScopeAttributes {\n constructor(languageId, tokenType) {\n this.languageId = languageId;\n this.tokenType = tokenType;\n }\n}\nexports.BasicScopeAttributes = BasicScopeAttributes;\nclass BasicScopeAttributesProvider {\n constructor(initialLanguageId, embeddedLanguages) {\n this._getBasicScopeAttributes = new utils_1.CachedFn((scopeName) => {\n const languageId = this._scopeToLanguage(scopeName);\n const standardTokenType = this._toStandardTokenType(scopeName);\n return new BasicScopeAttributes(languageId, standardTokenType);\n });\n this._defaultAttributes = new BasicScopeAttributes(initialLanguageId, 8 /* NotSet */);\n this._embeddedLanguagesMatcher = new ScopeMatcher(Object.entries(embeddedLanguages || {}));\n }\n getDefaultAttributes() {\n return this._defaultAttributes;\n }\n getBasicScopeAttributes(scopeName) {\n if (scopeName === null) {\n return BasicScopeAttributesProvider._NULL_SCOPE_METADATA;\n }\n return this._getBasicScopeAttributes.get(scopeName);\n }\n /**\n * Given a produced TM scope, return the language that token describes or null if unknown.\n * e.g. source.html => html, source.css.embedded.html => css, punctuation.definition.tag.html => null\n */\n _scopeToLanguage(scope) {\n return this._embeddedLanguagesMatcher.match(scope) || 0;\n }\n _toStandardTokenType(scopeName) {\n const m = scopeName.match(BasicScopeAttributesProvider.STANDARD_TOKEN_TYPE_REGEXP);\n if (!m) {\n return 8 /* NotSet */;\n }\n switch (m[1]) {\n case \"comment\":\n return 1 /* Comment */;\n case \"string\":\n return 2 /* String */;\n case \"regex\":\n return 3 /* RegEx */;\n case \"meta.embedded\":\n return 0 /* Other */;\n }\n throw new Error(\"Unexpected match for standard token type!\");\n }\n}\nexports.BasicScopeAttributesProvider = BasicScopeAttributesProvider;\nBasicScopeAttributesProvider._NULL_SCOPE_METADATA = new BasicScopeAttributes(0, 0);\nBasicScopeAttributesProvider.STANDARD_TOKEN_TYPE_REGEXP = /\\b(comment|string|regex|meta\\.embedded)\\b/;\nclass ScopeMatcher {\n constructor(values) {\n if (values.length === 0) {\n this.values = null;\n this.scopesRegExp = null;\n }\n else {\n this.values = new Map(values);\n // create the regex\n const escapedScopes = values.map(([scopeName, value]) => utils_1.escapeRegExpCharacters(scopeName));\n escapedScopes.sort();\n escapedScopes.reverse(); // Longest scope first\n this.scopesRegExp = new RegExp(`^((${escapedScopes.join(\")|(\")}))($|\\\\.)`, \"\");\n }\n }\n match(scope) {\n if (!this.scopesRegExp) {\n return undefined;\n }\n const m = scope.match(this.scopesRegExp);\n if (!m) {\n // no scopes matched\n return undefined;\n }\n return this.values.get(m[1]);\n }\n}\n//# sourceMappingURL=basicScopesAttributeProvider.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LineTokens = exports.BalancedBracketSelectors = exports.StateStack = exports.AttributedScopeStack = exports.Grammar = exports.createGrammar = void 0;\nconst debug_1 = require(\"../debug\");\nconst encodedTokenAttributes_1 = require(\"../encodedTokenAttributes\");\nconst matcher_1 = require(\"../matcher\");\nconst onigLib_1 = require(\"../onigLib\");\nconst rule_1 = require(\"../rule\");\nconst theme_1 = require(\"../theme\");\nconst utils_1 = require(\"../utils\");\nconst basicScopesAttributeProvider_1 = require(\"./basicScopesAttributeProvider\");\nconst tokenizeString_1 = require(\"./tokenizeString\");\nfunction createGrammar(scopeName, grammar, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors, grammarRepository, onigLib) {\n return new Grammar(scopeName, grammar, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors, grammarRepository, onigLib); //TODO\n}\nexports.createGrammar = createGrammar;\nfunction collectInjections(result, selector, rule, ruleFactoryHelper, grammar) {\n const matchers = matcher_1.createMatchers(selector, nameMatcher);\n const ruleId = rule_1.RuleFactory.getCompiledRuleId(rule, ruleFactoryHelper, grammar.repository);\n for (const matcher of matchers) {\n result.push({\n debugSelector: selector,\n matcher: matcher.matcher,\n ruleId: ruleId,\n grammar: grammar,\n priority: matcher.priority\n });\n }\n}\nfunction nameMatcher(identifers, scopes) {\n if (scopes.length < identifers.length) {\n return false;\n }\n let lastIndex = 0;\n return identifers.every(identifier => {\n for (let i = lastIndex; i < scopes.length; i++) {\n if (scopesAreMatching(scopes[i], identifier)) {\n lastIndex = i + 1;\n return true;\n }\n }\n return false;\n });\n}\nfunction scopesAreMatching(thisScopeName, scopeName) {\n if (!thisScopeName) {\n return false;\n }\n if (thisScopeName === scopeName) {\n return true;\n }\n const len = scopeName.length;\n return thisScopeName.length > len && thisScopeName.substr(0, len) === scopeName && thisScopeName[len] === '.';\n}\nclass Grammar {\n constructor(_rootScopeName, grammar, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors, grammarRepository, _onigLib) {\n this._rootScopeName = _rootScopeName;\n this.balancedBracketSelectors = balancedBracketSelectors;\n this._onigLib = _onigLib;\n this._basicScopeAttributesProvider = new basicScopesAttributeProvider_1.BasicScopeAttributesProvider(initialLanguage, embeddedLanguages);\n this._rootId = -1;\n this._lastRuleId = 0;\n this._ruleId2desc = [null];\n this._includedGrammars = {};\n this._grammarRepository = grammarRepository;\n this._grammar = initGrammar(grammar, null);\n this._injections = null;\n this._tokenTypeMatchers = [];\n if (tokenTypes) {\n for (const selector of Object.keys(tokenTypes)) {\n const matchers = matcher_1.createMatchers(selector, nameMatcher);\n for (const matcher of matchers) {\n this._tokenTypeMatchers.push({\n matcher: matcher.matcher,\n type: tokenTypes[selector],\n });\n }\n }\n }\n }\n get themeProvider() { return this._grammarRepository; }\n dispose() {\n for (const rule of this._ruleId2desc) {\n if (rule) {\n rule.dispose();\n }\n }\n }\n createOnigScanner(sources) {\n return this._onigLib.createOnigScanner(sources);\n }\n createOnigString(sources) {\n return this._onigLib.createOnigString(sources);\n }\n getMetadataForScope(scope) {\n return this._basicScopeAttributesProvider.getBasicScopeAttributes(scope);\n }\n _collectInjections() {\n const grammarRepository = {\n lookup: (scopeName) => {\n if (scopeName === this._rootScopeName) {\n return this._grammar;\n }\n return this.getExternalGrammar(scopeName);\n },\n injections: (scopeName) => {\n return this._grammarRepository.injections(scopeName);\n },\n };\n const result = [];\n const scopeName = this._rootScopeName;\n const grammar = grammarRepository.lookup(scopeName);\n if (grammar) {\n // add injections from the current grammar\n const rawInjections = grammar.injections;\n if (rawInjections) {\n for (let expression in rawInjections) {\n collectInjections(result, expression, rawInjections[expression], this, grammar);\n }\n }\n // add injection grammars contributed for the current scope\n const injectionScopeNames = this._grammarRepository.injections(scopeName);\n if (injectionScopeNames) {\n injectionScopeNames.forEach((injectionScopeName) => {\n const injectionGrammar = this.getExternalGrammar(injectionScopeName);\n if (injectionGrammar) {\n const selector = injectionGrammar.injectionSelector;\n if (selector) {\n collectInjections(result, selector, injectionGrammar, this, injectionGrammar);\n }\n }\n });\n }\n }\n result.sort((i1, i2) => i1.priority - i2.priority); // sort by priority\n return result;\n }\n getInjections() {\n if (this._injections === null) {\n this._injections = this._collectInjections();\n if (debug_1.DebugFlags.InDebugMode && this._injections.length > 0) {\n console.log(`Grammar ${this._rootScopeName} contains the following injections:`);\n for (const injection of this._injections) {\n console.log(` - ${injection.debugSelector}`);\n }\n }\n }\n return this._injections;\n }\n registerRule(factory) {\n const id = ++this._lastRuleId;\n const result = factory(rule_1.ruleIdFromNumber(id));\n this._ruleId2desc[id] = result;\n return result;\n }\n getRule(ruleId) {\n return this._ruleId2desc[rule_1.ruleIdToNumber(ruleId)];\n }\n getExternalGrammar(scopeName, repository) {\n if (this._includedGrammars[scopeName]) {\n return this._includedGrammars[scopeName];\n }\n else if (this._grammarRepository) {\n const rawIncludedGrammar = this._grammarRepository.lookup(scopeName);\n if (rawIncludedGrammar) {\n // console.log('LOADED GRAMMAR ' + pattern.include);\n this._includedGrammars[scopeName] = initGrammar(rawIncludedGrammar, repository && repository.$base);\n return this._includedGrammars[scopeName];\n }\n }\n return undefined;\n }\n tokenizeLine(lineText, prevState, timeLimit = 0) {\n const r = this._tokenize(lineText, prevState, false, timeLimit);\n return {\n tokens: r.lineTokens.getResult(r.ruleStack, r.lineLength),\n ruleStack: r.ruleStack,\n stoppedEarly: r.stoppedEarly,\n };\n }\n tokenizeLine2(lineText, prevState, timeLimit = 0) {\n const r = this._tokenize(lineText, prevState, true, timeLimit);\n return {\n tokens: r.lineTokens.getBinaryResult(r.ruleStack, r.lineLength),\n ruleStack: r.ruleStack,\n stoppedEarly: r.stoppedEarly,\n };\n }\n _tokenize(lineText, prevState, emitBinaryTokens, timeLimit) {\n if (this._rootId === -1) {\n this._rootId = rule_1.RuleFactory.getCompiledRuleId(this._grammar.repository.$self, this, this._grammar.repository);\n }\n let isFirstLine;\n if (!prevState || prevState === StateStack.NULL) {\n isFirstLine = true;\n const rawDefaultMetadata = this._basicScopeAttributesProvider.getDefaultAttributes();\n const defaultStyle = this.themeProvider.getDefaults();\n const defaultMetadata = encodedTokenAttributes_1.EncodedTokenAttributes.set(0, rawDefaultMetadata.languageId, rawDefaultMetadata.tokenType, null, defaultStyle.fontStyle, defaultStyle.foregroundId, defaultStyle.backgroundId);\n const rootScopeName = this.getRule(this._rootId).getName(null, null);\n let scopeList;\n if (rootScopeName) {\n scopeList = AttributedScopeStack.createRootAndLookUpScopeName(rootScopeName, defaultMetadata, this);\n }\n else {\n scopeList = AttributedScopeStack.createRoot(\"unknown\", defaultMetadata);\n }\n prevState = new StateStack(null, this._rootId, -1, -1, false, null, scopeList, scopeList);\n }\n else {\n isFirstLine = false;\n prevState.reset();\n }\n lineText = lineText + \"\\n\";\n const onigLineText = this.createOnigString(lineText);\n const lineLength = onigLineText.content.length;\n const lineTokens = new LineTokens(emitBinaryTokens, lineText, this._tokenTypeMatchers, this.balancedBracketSelectors);\n const r = tokenizeString_1._tokenizeString(this, onigLineText, isFirstLine, 0, prevState, lineTokens, true, timeLimit);\n onigLib_1.disposeOnigString(onigLineText);\n return {\n lineLength: lineLength,\n lineTokens: lineTokens,\n ruleStack: r.stack,\n stoppedEarly: r.stoppedEarly,\n };\n }\n}\nexports.Grammar = Grammar;\nfunction initGrammar(grammar, base) {\n grammar = utils_1.clone(grammar);\n grammar.repository = grammar.repository || {};\n grammar.repository.$self = {\n $vscodeTextmateLocation: grammar.$vscodeTextmateLocation,\n patterns: grammar.patterns,\n name: grammar.scopeName\n };\n grammar.repository.$base = base || grammar.repository.$self;\n return grammar;\n}\nclass AttributedScopeStack {\n constructor(parent, scopePath, tokenAttributes) {\n this.parent = parent;\n this.scopePath = scopePath;\n this.tokenAttributes = tokenAttributes;\n }\n static createRoot(scopeName, tokenAttributes) {\n return new AttributedScopeStack(null, new theme_1.ScopeStack(null, scopeName), tokenAttributes);\n }\n static createRootAndLookUpScopeName(scopeName, tokenAttributes, grammar) {\n const rawRootMetadata = grammar.getMetadataForScope(scopeName);\n const scopePath = new theme_1.ScopeStack(null, scopeName);\n const rootStyle = grammar.themeProvider.themeMatch(scopePath);\n const resolvedTokenAttributes = AttributedScopeStack.mergeAttributes(tokenAttributes, rawRootMetadata, rootStyle);\n return new AttributedScopeStack(null, scopePath, resolvedTokenAttributes);\n }\n get scopeName() { return this.scopePath.scopeName; }\n equals(other) {\n return AttributedScopeStack._equals(this, other);\n }\n static _equals(a, b) {\n do {\n if (a === b) {\n return true;\n }\n if (!a && !b) {\n // End of list reached for both\n return true;\n }\n if (!a || !b) {\n // End of list reached only for one\n return false;\n }\n if (a.scopeName !== b.scopeName || a.tokenAttributes !== b.tokenAttributes) {\n return false;\n }\n // Go to previous pair\n a = a.parent;\n b = b.parent;\n } while (true);\n }\n static mergeAttributes(existingTokenAttributes, basicScopeAttributes, styleAttributes) {\n let fontStyle = -1 /* NotSet */;\n let foreground = 0;\n let background = 0;\n if (styleAttributes !== null) {\n fontStyle = styleAttributes.fontStyle;\n foreground = styleAttributes.foregroundId;\n background = styleAttributes.backgroundId;\n }\n return encodedTokenAttributes_1.EncodedTokenAttributes.set(existingTokenAttributes, basicScopeAttributes.languageId, basicScopeAttributes.tokenType, null, fontStyle, foreground, background);\n }\n pushAttributed(scopePath, grammar) {\n if (scopePath === null) {\n return this;\n }\n if (scopePath.indexOf(' ') === -1) {\n // This is the common case and much faster\n return AttributedScopeStack._pushAttributed(this, scopePath, grammar);\n }\n const scopes = scopePath.split(/ /g);\n let result = this;\n for (const scope of scopes) {\n result = AttributedScopeStack._pushAttributed(result, scope, grammar);\n }\n return result;\n }\n static _pushAttributed(target, scopeName, grammar) {\n const rawMetadata = grammar.getMetadataForScope(scopeName);\n const newPath = target.scopePath.push(scopeName);\n const scopeThemeMatchResult = grammar.themeProvider.themeMatch(newPath);\n const metadata = AttributedScopeStack.mergeAttributes(target.tokenAttributes, rawMetadata, scopeThemeMatchResult);\n return new AttributedScopeStack(target, newPath, metadata);\n }\n getScopeNames() {\n return this.scopePath.getSegments();\n }\n}\nexports.AttributedScopeStack = AttributedScopeStack;\n/**\n * Represents a \"pushed\" state on the stack (as a linked list element).\n */\nclass StateStack {\n constructor(\n /**\n * The previous state on the stack (or null for the root state).\n */\n parent, \n /**\n * The state (rule) that this element represents.\n */\n ruleId, enterPos, anchorPos, \n /**\n * The state has entered and captured \\n. This means that the next line should have an anchorPosition of 0.\n */\n beginRuleCapturedEOL, \n /**\n * The \"pop\" (end) condition for this state in case that it was dynamically generated through captured text.\n */\n endRule, \n /**\n * The list of scopes containing the \"name\" for this state.\n */\n nameScopesList, \n /**\n * The list of scopes containing the \"contentName\" (besides \"name\") for this state.\n * This list **must** contain as an element `scopeName`.\n */\n contentNameScopesList) {\n this.parent = parent;\n this.ruleId = ruleId;\n this.beginRuleCapturedEOL = beginRuleCapturedEOL;\n this.endRule = endRule;\n this.nameScopesList = nameScopesList;\n this.contentNameScopesList = contentNameScopesList;\n this._stackElementBrand = undefined;\n this.depth = this.parent ? this.parent.depth + 1 : 1;\n this._enterPos = enterPos;\n this._anchorPos = anchorPos;\n }\n equals(other) {\n if (other === null) {\n return false;\n }\n return StateStack._equals(this, other);\n }\n static _equals(a, b) {\n if (a === b) {\n return true;\n }\n if (!this._structuralEquals(a, b)) {\n return false;\n }\n return a.contentNameScopesList.equals(b.contentNameScopesList);\n }\n /**\n * A structural equals check. Does not take into account `scopes`.\n */\n static _structuralEquals(a, b) {\n do {\n if (a === b) {\n return true;\n }\n if (!a && !b) {\n // End of list reached for both\n return true;\n }\n if (!a || !b) {\n // End of list reached only for one\n return false;\n }\n if (a.depth !== b.depth ||\n a.ruleId !== b.ruleId ||\n a.endRule !== b.endRule) {\n return false;\n }\n // Go to previous pair\n a = a.parent;\n b = b.parent;\n } while (true);\n }\n clone() {\n return this;\n }\n static _reset(el) {\n while (el) {\n el._enterPos = -1;\n el._anchorPos = -1;\n el = el.parent;\n }\n }\n reset() {\n StateStack._reset(this);\n }\n pop() {\n return this.parent;\n }\n safePop() {\n if (this.parent) {\n return this.parent;\n }\n return this;\n }\n push(ruleId, enterPos, anchorPos, beginRuleCapturedEOL, endRule, nameScopesList, contentNameScopesList) {\n return new StateStack(this, ruleId, enterPos, anchorPos, beginRuleCapturedEOL, endRule, nameScopesList, contentNameScopesList);\n }\n getEnterPos() {\n return this._enterPos;\n }\n getAnchorPos() {\n return this._anchorPos;\n }\n getRule(grammar) {\n return grammar.getRule(this.ruleId);\n }\n toString() {\n const r = [];\n this._writeString(r, 0);\n return \"[\" + r.join(\",\") + \"]\";\n }\n _writeString(res, outIndex) {\n if (this.parent) {\n outIndex = this.parent._writeString(res, outIndex);\n }\n res[outIndex++] = `(${this.ruleId}, TODO-${this.nameScopesList}, TODO-${this.contentNameScopesList})`;\n return outIndex;\n }\n withContentNameScopesList(contentNameScopeStack) {\n if (this.contentNameScopesList === contentNameScopeStack) {\n return this;\n }\n return this.parent.push(this.ruleId, this._enterPos, this._anchorPos, this.beginRuleCapturedEOL, this.endRule, this.nameScopesList, contentNameScopeStack);\n }\n withEndRule(endRule) {\n if (this.endRule === endRule) {\n return this;\n }\n return new StateStack(this.parent, this.ruleId, this._enterPos, this._anchorPos, this.beginRuleCapturedEOL, endRule, this.nameScopesList, this.contentNameScopesList);\n }\n // Used to warn of endless loops\n hasSameRuleAs(other) {\n let el = this;\n while (el && el._enterPos === other._enterPos) {\n if (el.ruleId === other.ruleId) {\n return true;\n }\n el = el.parent;\n }\n return false;\n }\n}\nexports.StateStack = StateStack;\n// TODO remove me\nStateStack.NULL = new StateStack(null, 0, 0, 0, false, null, null, null);\nclass BalancedBracketSelectors {\n constructor(balancedBracketScopes, unbalancedBracketScopes) {\n this.allowAny = false;\n this.balancedBracketScopes = balancedBracketScopes.flatMap((selector) => {\n if (selector === '*') {\n this.allowAny = true;\n return [];\n }\n return matcher_1.createMatchers(selector, nameMatcher).map((m) => m.matcher);\n });\n this.unbalancedBracketScopes = unbalancedBracketScopes.flatMap((selector) => matcher_1.createMatchers(selector, nameMatcher).map((m) => m.matcher));\n }\n get matchesAlways() {\n return this.allowAny && this.unbalancedBracketScopes.length === 0;\n }\n get matchesNever() {\n return this.balancedBracketScopes.length === 0 && !this.allowAny;\n }\n match(scopes) {\n for (const excluder of this.unbalancedBracketScopes) {\n if (excluder(scopes)) {\n return false;\n }\n }\n for (const includer of this.balancedBracketScopes) {\n if (includer(scopes)) {\n return true;\n }\n }\n return this.allowAny;\n }\n}\nexports.BalancedBracketSelectors = BalancedBracketSelectors;\nclass LineTokens {\n constructor(emitBinaryTokens, lineText, tokenTypeOverrides, balancedBracketSelectors) {\n this.balancedBracketSelectors = balancedBracketSelectors;\n this._emitBinaryTokens = emitBinaryTokens;\n this._tokenTypeOverrides = tokenTypeOverrides;\n if (debug_1.DebugFlags.InDebugMode) {\n this._lineText = lineText;\n }\n else {\n this._lineText = null;\n }\n this._tokens = [];\n this._binaryTokens = [];\n this._lastTokenEndIndex = 0;\n }\n produce(stack, endIndex) {\n this.produceFromScopes(stack.contentNameScopesList, endIndex);\n }\n produceFromScopes(scopesList, endIndex) {\n if (this._lastTokenEndIndex >= endIndex) {\n return;\n }\n if (this._emitBinaryTokens) {\n let metadata = scopesList.tokenAttributes;\n let containsBalancedBrackets = false;\n if (this.balancedBracketSelectors?.matchesAlways) {\n containsBalancedBrackets = true;\n }\n if (this._tokenTypeOverrides.length > 0 || (this.balancedBracketSelectors && !this.balancedBracketSelectors.matchesAlways && !this.balancedBracketSelectors.matchesNever)) {\n // Only generate scope array when required to improve performance\n const scopes = scopesList.getScopeNames();\n for (const tokenType of this._tokenTypeOverrides) {\n if (tokenType.matcher(scopes)) {\n metadata = encodedTokenAttributes_1.EncodedTokenAttributes.set(metadata, 0, encodedTokenAttributes_1.toOptionalTokenType(tokenType.type), null, -1 /* NotSet */, 0, 0);\n }\n }\n if (this.balancedBracketSelectors) {\n containsBalancedBrackets = this.balancedBracketSelectors.match(scopes);\n }\n }\n if (containsBalancedBrackets) {\n metadata = encodedTokenAttributes_1.EncodedTokenAttributes.set(metadata, 0, 8 /* NotSet */, containsBalancedBrackets, -1 /* NotSet */, 0, 0);\n }\n if (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 1] === metadata) {\n // no need to push a token with the same metadata\n this._lastTokenEndIndex = endIndex;\n return;\n }\n if (debug_1.DebugFlags.InDebugMode) {\n const scopes = scopesList.getScopeNames();\n console.log(' token: |' + this._lineText.substring(this._lastTokenEndIndex, endIndex).replace(/\\n$/, '\\\\n') + '|');\n for (let k = 0; k < scopes.length; k++) {\n console.log(' * ' + scopes[k]);\n }\n }\n this._binaryTokens.push(this._lastTokenEndIndex);\n this._binaryTokens.push(metadata);\n this._lastTokenEndIndex = endIndex;\n return;\n }\n const scopes = scopesList.getScopeNames();\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(' token: |' + this._lineText.substring(this._lastTokenEndIndex, endIndex).replace(/\\n$/, '\\\\n') + '|');\n for (let k = 0; k < scopes.length; k++) {\n console.log(' * ' + scopes[k]);\n }\n }\n this._tokens.push({\n startIndex: this._lastTokenEndIndex,\n endIndex: endIndex,\n // value: lineText.substring(lastTokenEndIndex, endIndex),\n scopes: scopes\n });\n this._lastTokenEndIndex = endIndex;\n }\n getResult(stack, lineLength) {\n if (this._tokens.length > 0 && this._tokens[this._tokens.length - 1].startIndex === lineLength - 1) {\n // pop produced token for newline\n this._tokens.pop();\n }\n if (this._tokens.length === 0) {\n this._lastTokenEndIndex = -1;\n this.produce(stack, lineLength);\n this._tokens[this._tokens.length - 1].startIndex = 0;\n }\n return this._tokens;\n }\n getBinaryResult(stack, lineLength) {\n if (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 2] === lineLength - 1) {\n // pop produced token for newline\n this._binaryTokens.pop();\n this._binaryTokens.pop();\n }\n if (this._binaryTokens.length === 0) {\n this._lastTokenEndIndex = -1;\n this.produce(stack, lineLength);\n this._binaryTokens[this._binaryTokens.length - 2] = 0;\n }\n const result = new Uint32Array(this._binaryTokens.length);\n for (let i = 0, len = this._binaryTokens.length; i < len; i++) {\n result[i] = this._binaryTokens[i];\n }\n return result;\n }\n}\nexports.LineTokens = LineTokens;\n//# sourceMappingURL=grammar.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseInclude = exports.TopLevelRepositoryReference = exports.TopLevelReference = exports.RelativeReference = exports.SelfReference = exports.BaseReference = exports.ScopeDependencyProcessor = exports.ExternalReferenceCollector = exports.TopLevelRepositoryRuleReference = exports.TopLevelRuleReference = void 0;\nconst utils_1 = require(\"../utils\");\n/**\n * References the top level rule of a grammar with the given scope name.\n*/\nclass TopLevelRuleReference {\n constructor(scopeName) {\n this.scopeName = scopeName;\n }\n toKey() {\n return this.scopeName;\n }\n}\nexports.TopLevelRuleReference = TopLevelRuleReference;\n/**\n * References a rule of a grammar in the top level repository section with the given name.\n*/\nclass TopLevelRepositoryRuleReference {\n constructor(scopeName, ruleName) {\n this.scopeName = scopeName;\n this.ruleName = ruleName;\n }\n toKey() {\n return `${this.scopeName}#${this.ruleName}`;\n }\n}\nexports.TopLevelRepositoryRuleReference = TopLevelRepositoryRuleReference;\nclass ExternalReferenceCollector {\n constructor() {\n this._references = [];\n this._seenReferenceKeys = new Set();\n this.visitedRule = new Set();\n }\n get references() {\n return this._references;\n }\n add(reference) {\n const key = reference.toKey();\n if (this._seenReferenceKeys.has(key)) {\n return;\n }\n this._seenReferenceKeys.add(key);\n this._references.push(reference);\n }\n}\nexports.ExternalReferenceCollector = ExternalReferenceCollector;\nclass ScopeDependencyProcessor {\n constructor(repo, initialScopeName) {\n this.repo = repo;\n this.initialScopeName = initialScopeName;\n this.seenFullScopeRequests = new Set();\n this.seenPartialScopeRequests = new Set();\n this.seenFullScopeRequests.add(this.initialScopeName);\n this.Q = [new TopLevelRuleReference(this.initialScopeName)];\n }\n processQueue() {\n const q = this.Q;\n this.Q = [];\n const deps = new ExternalReferenceCollector();\n for (const dep of q) {\n collectReferencesOfReference(dep, this.initialScopeName, this.repo, deps);\n }\n for (const dep of deps.references) {\n if (dep instanceof TopLevelRuleReference) {\n if (this.seenFullScopeRequests.has(dep.scopeName)) {\n // already processed\n continue;\n }\n this.seenFullScopeRequests.add(dep.scopeName);\n this.Q.push(dep);\n }\n else {\n if (this.seenFullScopeRequests.has(dep.scopeName)) {\n // already processed in full\n continue;\n }\n if (this.seenPartialScopeRequests.has(dep.toKey())) {\n // already processed\n continue;\n }\n this.seenPartialScopeRequests.add(dep.toKey());\n this.Q.push(dep);\n }\n }\n }\n}\nexports.ScopeDependencyProcessor = ScopeDependencyProcessor;\nfunction collectReferencesOfReference(reference, baseGrammarScopeName, repo, result) {\n const selfGrammar = repo.lookup(reference.scopeName);\n if (!selfGrammar) {\n if (reference.scopeName === baseGrammarScopeName) {\n throw new Error(`No grammar provided for <${baseGrammarScopeName}>`);\n }\n return;\n }\n const baseGrammar = repo.lookup(baseGrammarScopeName);\n if (reference instanceof TopLevelRuleReference) {\n collectExternalReferencesInTopLevelRule({ baseGrammar, selfGrammar }, result);\n }\n else {\n collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName, { baseGrammar, selfGrammar, repository: selfGrammar.repository }, result);\n }\n const injections = repo.injections(reference.scopeName);\n if (injections) {\n for (const injection of injections) {\n result.add(new TopLevelRuleReference(injection));\n }\n }\n}\nfunction collectExternalReferencesInTopLevelRepositoryRule(ruleName, context, result) {\n if (context.repository && context.repository[ruleName]) {\n const rule = context.repository[ruleName];\n collectExternalReferencesInRules([rule], context, result);\n }\n}\nfunction collectExternalReferencesInTopLevelRule(context, result) {\n if (context.selfGrammar.patterns && Array.isArray(context.selfGrammar.patterns)) {\n collectExternalReferencesInRules(context.selfGrammar.patterns, { ...context, repository: context.selfGrammar.repository }, result);\n }\n if (context.selfGrammar.injections) {\n collectExternalReferencesInRules(Object.values(context.selfGrammar.injections), { ...context, repository: context.selfGrammar.repository }, result);\n }\n}\nfunction collectExternalReferencesInRules(rules, context, result) {\n for (const rule of rules) {\n if (result.visitedRule.has(rule)) {\n continue;\n }\n result.visitedRule.add(rule);\n const patternRepository = rule.repository ? utils_1.mergeObjects({}, context.repository, rule.repository) : context.repository;\n if (Array.isArray(rule.patterns)) {\n collectExternalReferencesInRules(rule.patterns, { ...context, repository: patternRepository }, result);\n }\n const include = rule.include;\n if (!include) {\n continue;\n }\n const reference = parseInclude(include);\n switch (reference.kind) {\n case 0 /* Base */:\n collectExternalReferencesInTopLevelRule({ ...context, selfGrammar: context.baseGrammar }, result);\n break;\n case 1 /* Self */:\n collectExternalReferencesInTopLevelRule(context, result);\n break;\n case 2 /* RelativeReference */:\n collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName, { ...context, repository: patternRepository }, result);\n break;\n case 3 /* TopLevelReference */:\n case 4 /* TopLevelRepositoryReference */:\n const selfGrammar = reference.scopeName === context.selfGrammar.scopeName\n ? context.selfGrammar\n : reference.scopeName === context.baseGrammar.scopeName\n ? context.baseGrammar\n : undefined;\n if (selfGrammar) {\n const newContext = { baseGrammar: context.baseGrammar, selfGrammar, repository: patternRepository };\n if (reference.kind === 4 /* TopLevelRepositoryReference */) {\n collectExternalReferencesInTopLevelRepositoryRule(reference.ruleName, newContext, result);\n }\n else {\n collectExternalReferencesInTopLevelRule(newContext, result);\n }\n }\n else {\n if (reference.kind === 4 /* TopLevelRepositoryReference */) {\n result.add(new TopLevelRepositoryRuleReference(reference.scopeName, reference.ruleName));\n }\n else {\n result.add(new TopLevelRuleReference(reference.scopeName));\n }\n }\n break;\n }\n }\n}\nclass BaseReference {\n constructor() {\n this.kind = 0 /* Base */;\n }\n}\nexports.BaseReference = BaseReference;\nclass SelfReference {\n constructor() {\n this.kind = 1 /* Self */;\n }\n}\nexports.SelfReference = SelfReference;\nclass RelativeReference {\n constructor(ruleName) {\n this.ruleName = ruleName;\n this.kind = 2 /* RelativeReference */;\n }\n}\nexports.RelativeReference = RelativeReference;\nclass TopLevelReference {\n constructor(scopeName) {\n this.scopeName = scopeName;\n this.kind = 3 /* TopLevelReference */;\n }\n}\nexports.TopLevelReference = TopLevelReference;\nclass TopLevelRepositoryReference {\n constructor(scopeName, ruleName) {\n this.scopeName = scopeName;\n this.ruleName = ruleName;\n this.kind = 4 /* TopLevelRepositoryReference */;\n }\n}\nexports.TopLevelRepositoryReference = TopLevelRepositoryReference;\nfunction parseInclude(include) {\n if (include === '$base') {\n return new BaseReference();\n }\n else if (include === '$self') {\n return new SelfReference();\n }\n const indexOfSharp = include.indexOf(\"#\");\n if (indexOfSharp === -1) {\n return new TopLevelReference(include);\n }\n else if (indexOfSharp === 0) {\n return new RelativeReference(include.substring(1));\n }\n else {\n const scopeName = include.substring(0, indexOfSharp);\n const ruleName = include.substring(indexOfSharp + 1);\n return new TopLevelRepositoryReference(scopeName, ruleName);\n }\n}\nexports.parseInclude = parseInclude;\n//# sourceMappingURL=grammarDependencies.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./grammar\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LocalStackElement = exports._tokenizeString = void 0;\nconst debug_1 = require(\"../debug\");\nconst onigLib_1 = require(\"../onigLib\");\nconst rule_1 = require(\"../rule\");\nconst utils_1 = require(\"../utils\");\nclass TokenizeStringResult {\n constructor(stack, stoppedEarly) {\n this.stack = stack;\n this.stoppedEarly = stoppedEarly;\n }\n}\n/**\n * Tokenize a string\n * @param grammar\n * @param lineText\n * @param isFirstLine\n * @param linePos\n * @param stack\n * @param lineTokens\n * @param checkWhileConditions\n * @param timeLimit Use `0` to indicate no time limit\n * @returns the StackElement or StackElement.TIME_LIMIT_REACHED if the time limit has been reached\n */\nfunction _tokenizeString(grammar, lineText, isFirstLine, linePos, stack, lineTokens, checkWhileConditions, timeLimit) {\n const lineLength = lineText.content.length;\n let STOP = false;\n let anchorPosition = -1;\n if (checkWhileConditions) {\n const whileCheckResult = _checkWhileConditions(grammar, lineText, isFirstLine, linePos, stack, lineTokens);\n stack = whileCheckResult.stack;\n linePos = whileCheckResult.linePos;\n isFirstLine = whileCheckResult.isFirstLine;\n anchorPosition = whileCheckResult.anchorPosition;\n }\n const startTime = Date.now();\n while (!STOP) {\n if (timeLimit !== 0) {\n const elapsedTime = Date.now() - startTime;\n if (elapsedTime > timeLimit) {\n return new TokenizeStringResult(stack, true);\n }\n }\n scanNext(); // potentially modifies linePos && anchorPosition\n }\n return new TokenizeStringResult(stack, false);\n function scanNext() {\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(\"\");\n console.log(`@@scanNext ${linePos}: |${lineText.content\n .substr(linePos)\n .replace(/\\n$/, \"\\\\n\")}|`);\n }\n const r = matchRuleOrInjections(grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n if (!r) {\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(\" no more matches.\");\n }\n // No match\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n const captureIndices = r.captureIndices;\n const matchedRuleId = r.matchedRuleId;\n const hasAdvanced = captureIndices && captureIndices.length > 0\n ? captureIndices[0].end > linePos\n : false;\n if (matchedRuleId === rule_1.endRuleId) {\n // We matched the `end` for this rule => pop it\n const poppedRule = stack.getRule(grammar);\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(\" popping \" +\n poppedRule.debugName +\n \" - \" +\n poppedRule.debugEndRegExp);\n }\n lineTokens.produce(stack, captureIndices[0].start);\n stack = stack.withContentNameScopesList(stack.nameScopesList);\n handleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, poppedRule.endCaptures, captureIndices);\n lineTokens.produce(stack, captureIndices[0].end);\n // pop\n const popped = stack;\n stack = stack.parent;\n anchorPosition = popped.getAnchorPos();\n if (!hasAdvanced && popped.getEnterPos() === linePos) {\n // Grammar pushed & popped a rule without advancing\n if (debug_1.DebugFlags.InDebugMode) {\n console.error(\"[1] - Grammar is in an endless loop - Grammar pushed & popped a rule without advancing\");\n }\n // See https://github.com/Microsoft/vscode-textmate/issues/12\n // Let's assume this was a mistake by the grammar author and the intent was to continue in this state\n stack = popped;\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n }\n else {\n // We matched a rule!\n const _rule = grammar.getRule(matchedRuleId);\n lineTokens.produce(stack, captureIndices[0].start);\n const beforePush = stack;\n // push it on the stack rule\n const scopeName = _rule.getName(lineText.content, captureIndices);\n const nameScopesList = stack.contentNameScopesList.pushAttributed(scopeName, grammar);\n stack = stack.push(matchedRuleId, linePos, anchorPosition, captureIndices[0].end === lineLength, null, nameScopesList, nameScopesList);\n if (_rule instanceof rule_1.BeginEndRule) {\n const pushedRule = _rule;\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(\" pushing \" +\n pushedRule.debugName +\n \" - \" +\n pushedRule.debugBeginRegExp);\n }\n handleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, pushedRule.beginCaptures, captureIndices);\n lineTokens.produce(stack, captureIndices[0].end);\n anchorPosition = captureIndices[0].end;\n const contentName = pushedRule.getContentName(lineText.content, captureIndices);\n const contentNameScopesList = nameScopesList.pushAttributed(contentName, grammar);\n stack = stack.withContentNameScopesList(contentNameScopesList);\n if (pushedRule.endHasBackReferences) {\n stack = stack.withEndRule(pushedRule.getEndWithResolvedBackReferences(lineText.content, captureIndices));\n }\n if (!hasAdvanced && beforePush.hasSameRuleAs(stack)) {\n // Grammar pushed the same rule without advancing\n if (debug_1.DebugFlags.InDebugMode) {\n console.error(\"[2] - Grammar is in an endless loop - Grammar pushed the same rule without advancing\");\n }\n stack = stack.pop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n }\n else if (_rule instanceof rule_1.BeginWhileRule) {\n const pushedRule = _rule;\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(\" pushing \" + pushedRule.debugName);\n }\n handleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, pushedRule.beginCaptures, captureIndices);\n lineTokens.produce(stack, captureIndices[0].end);\n anchorPosition = captureIndices[0].end;\n const contentName = pushedRule.getContentName(lineText.content, captureIndices);\n const contentNameScopesList = nameScopesList.pushAttributed(contentName, grammar);\n stack = stack.withContentNameScopesList(contentNameScopesList);\n if (pushedRule.whileHasBackReferences) {\n stack = stack.withEndRule(pushedRule.getWhileWithResolvedBackReferences(lineText.content, captureIndices));\n }\n if (!hasAdvanced && beforePush.hasSameRuleAs(stack)) {\n // Grammar pushed the same rule without advancing\n if (debug_1.DebugFlags.InDebugMode) {\n console.error(\"[3] - Grammar is in an endless loop - Grammar pushed the same rule without advancing\");\n }\n stack = stack.pop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n }\n else {\n const matchingRule = _rule;\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(\" matched \" +\n matchingRule.debugName +\n \" - \" +\n matchingRule.debugMatchRegExp);\n }\n handleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, matchingRule.captures, captureIndices);\n lineTokens.produce(stack, captureIndices[0].end);\n // pop rule immediately since it is a MatchRule\n stack = stack.pop();\n if (!hasAdvanced) {\n // Grammar is not advancing, nor is it pushing/popping\n if (debug_1.DebugFlags.InDebugMode) {\n console.error(\"[4] - Grammar is in an endless loop - Grammar is not advancing, nor is it pushing/popping\");\n }\n stack = stack.safePop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n }\n }\n if (captureIndices[0].end > linePos) {\n // Advance stream\n linePos = captureIndices[0].end;\n isFirstLine = false;\n }\n }\n}\nexports._tokenizeString = _tokenizeString;\n/**\n * Walk the stack from bottom to top, and check each while condition in this order.\n * If any fails, cut off the entire stack above the failed while condition. While conditions\n * may also advance the linePosition.\n */\nfunction _checkWhileConditions(grammar, lineText, isFirstLine, linePos, stack, lineTokens) {\n let anchorPosition = (stack.beginRuleCapturedEOL ? 0 : -1);\n const whileRules = [];\n for (let node = stack; node; node = node.pop()) {\n const nodeRule = node.getRule(grammar);\n if (nodeRule instanceof rule_1.BeginWhileRule) {\n whileRules.push({\n rule: nodeRule,\n stack: node\n });\n }\n }\n for (let whileRule = whileRules.pop(); whileRule; whileRule = whileRules.pop()) {\n const { ruleScanner, findOptions } = prepareRuleWhileSearch(whileRule.rule, grammar, whileRule.stack.endRule, isFirstLine, linePos === anchorPosition);\n const r = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(' scanning for while rule');\n console.log(ruleScanner.toString());\n }\n if (r) {\n const matchedRuleId = r.ruleId;\n if (matchedRuleId !== rule_1.whileRuleId) {\n // we shouldn't end up here\n stack = whileRule.stack.pop();\n break;\n }\n if (r.captureIndices && r.captureIndices.length) {\n lineTokens.produce(whileRule.stack, r.captureIndices[0].start);\n handleCaptures(grammar, lineText, isFirstLine, whileRule.stack, lineTokens, whileRule.rule.whileCaptures, r.captureIndices);\n lineTokens.produce(whileRule.stack, r.captureIndices[0].end);\n anchorPosition = r.captureIndices[0].end;\n if (r.captureIndices[0].end > linePos) {\n linePos = r.captureIndices[0].end;\n isFirstLine = false;\n }\n }\n }\n else {\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(' popping ' + whileRule.rule.debugName + ' - ' + whileRule.rule.debugWhileRegExp);\n }\n stack = whileRule.stack.pop();\n break;\n }\n }\n return { stack: stack, linePos: linePos, anchorPosition: anchorPosition, isFirstLine: isFirstLine };\n}\nfunction matchRuleOrInjections(grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n // Look for normal grammar rule\n const matchResult = matchRule(grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n // Look for injected rules\n const injections = grammar.getInjections();\n if (injections.length === 0) {\n // No injections whatsoever => early return\n return matchResult;\n }\n const injectionResult = matchInjections(injections, grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n if (!injectionResult) {\n // No injections matched => early return\n return matchResult;\n }\n if (!matchResult) {\n // Only injections matched => early return\n return injectionResult;\n }\n // Decide if `matchResult` or `injectionResult` should win\n const matchResultScore = matchResult.captureIndices[0].start;\n const injectionResultScore = injectionResult.captureIndices[0].start;\n if (injectionResultScore < matchResultScore || (injectionResult.priorityMatch && injectionResultScore === matchResultScore)) {\n // injection won!\n return injectionResult;\n }\n return matchResult;\n}\nfunction matchRule(grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n const rule = stack.getRule(grammar);\n const { ruleScanner, findOptions } = prepareRuleSearch(rule, grammar, stack.endRule, isFirstLine, linePos === anchorPosition);\n let perfStart = 0;\n if (debug_1.DebugFlags.InDebugMode) {\n perfStart = utils_1.performanceNow();\n }\n const r = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n if (debug_1.DebugFlags.InDebugMode) {\n const elapsedMillis = utils_1.performanceNow() - perfStart;\n if (elapsedMillis > 5) {\n console.warn(`Rule ${rule.debugName} (${rule.id}) matching took ${elapsedMillis} against '${lineText}'`);\n }\n console.log(` scanning for (linePos: ${linePos}, anchorPosition: ${anchorPosition})`);\n console.log(ruleScanner.toString());\n if (r) {\n console.log(`matched rule id: ${r.ruleId} from ${r.captureIndices[0].start} to ${r.captureIndices[0].end}`);\n }\n }\n if (r) {\n return {\n captureIndices: r.captureIndices,\n matchedRuleId: r.ruleId\n };\n }\n return null;\n}\nfunction matchInjections(injections, grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n // The lower the better\n let bestMatchRating = Number.MAX_VALUE;\n let bestMatchCaptureIndices = null;\n let bestMatchRuleId;\n let bestMatchResultPriority = 0;\n const scopes = stack.contentNameScopesList.getScopeNames();\n for (let i = 0, len = injections.length; i < len; i++) {\n const injection = injections[i];\n if (!injection.matcher(scopes)) {\n // injection selector doesn't match stack\n continue;\n }\n const rule = grammar.getRule(injection.ruleId);\n const { ruleScanner, findOptions } = prepareRuleSearch(rule, grammar, null, isFirstLine, linePos === anchorPosition);\n const matchResult = ruleScanner.findNextMatchSync(lineText, linePos, findOptions);\n if (!matchResult) {\n continue;\n }\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(` matched injection: ${injection.debugSelector}`);\n console.log(ruleScanner.toString());\n }\n const matchRating = matchResult.captureIndices[0].start;\n if (matchRating >= bestMatchRating) {\n // Injections are sorted by priority, so the previous injection had a better or equal priority\n continue;\n }\n bestMatchRating = matchRating;\n bestMatchCaptureIndices = matchResult.captureIndices;\n bestMatchRuleId = matchResult.ruleId;\n bestMatchResultPriority = injection.priority;\n if (bestMatchRating === linePos) {\n // No more need to look at the rest of the injections.\n break;\n }\n }\n if (bestMatchCaptureIndices) {\n return {\n priorityMatch: bestMatchResultPriority === -1,\n captureIndices: bestMatchCaptureIndices,\n matchedRuleId: bestMatchRuleId\n };\n }\n return null;\n}\nfunction prepareRuleSearch(rule, grammar, endRegexSource, allowA, allowG) {\n if (debug_1.UseOnigurumaFindOptions) {\n const ruleScanner = rule.compile(grammar, endRegexSource);\n const findOptions = getFindOptions(allowA, allowG);\n return { ruleScanner, findOptions };\n }\n const ruleScanner = rule.compileAG(grammar, endRegexSource, allowA, allowG);\n return { ruleScanner, findOptions: 0 /* None */ };\n}\nfunction prepareRuleWhileSearch(rule, grammar, endRegexSource, allowA, allowG) {\n if (debug_1.UseOnigurumaFindOptions) {\n const ruleScanner = rule.compileWhile(grammar, endRegexSource);\n const findOptions = getFindOptions(allowA, allowG);\n return { ruleScanner, findOptions };\n }\n const ruleScanner = rule.compileWhileAG(grammar, endRegexSource, allowA, allowG);\n return { ruleScanner, findOptions: 0 /* None */ };\n}\nfunction getFindOptions(allowA, allowG) {\n let options = 0 /* None */;\n if (!allowA) {\n options |= 1 /* NotBeginString */;\n }\n if (!allowG) {\n options |= 4 /* NotBeginPosition */;\n }\n return options;\n}\nfunction handleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, captures, captureIndices) {\n if (captures.length === 0) {\n return;\n }\n const lineTextContent = lineText.content;\n const len = Math.min(captures.length, captureIndices.length);\n const localStack = [];\n const maxEnd = captureIndices[0].end;\n for (let i = 0; i < len; i++) {\n const captureRule = captures[i];\n if (captureRule === null) {\n // Not interested\n continue;\n }\n const captureIndex = captureIndices[i];\n if (captureIndex.length === 0) {\n // Nothing really captured\n continue;\n }\n if (captureIndex.start > maxEnd) {\n // Capture going beyond consumed string\n break;\n }\n // pop captures while needed\n while (localStack.length > 0 && localStack[localStack.length - 1].endPos <= captureIndex.start) {\n // pop!\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, localStack[localStack.length - 1].endPos);\n localStack.pop();\n }\n if (localStack.length > 0) {\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, captureIndex.start);\n }\n else {\n lineTokens.produce(stack, captureIndex.start);\n }\n if (captureRule.retokenizeCapturedWithRuleId) {\n // the capture requires additional matching\n const scopeName = captureRule.getName(lineTextContent, captureIndices);\n const nameScopesList = stack.contentNameScopesList.pushAttributed(scopeName, grammar);\n const contentName = captureRule.getContentName(lineTextContent, captureIndices);\n const contentNameScopesList = nameScopesList.pushAttributed(contentName, grammar);\n const stackClone = stack.push(captureRule.retokenizeCapturedWithRuleId, captureIndex.start, -1, false, null, nameScopesList, contentNameScopesList);\n const onigSubStr = grammar.createOnigString(lineTextContent.substring(0, captureIndex.end));\n _tokenizeString(grammar, onigSubStr, (isFirstLine && captureIndex.start === 0), captureIndex.start, stackClone, lineTokens, false, /* no time limit */ 0);\n onigLib_1.disposeOnigString(onigSubStr);\n continue;\n }\n const captureRuleScopeName = captureRule.getName(lineTextContent, captureIndices);\n if (captureRuleScopeName !== null) {\n // push\n const base = localStack.length > 0 ? localStack[localStack.length - 1].scopes : stack.contentNameScopesList;\n const captureRuleScopesList = base.pushAttributed(captureRuleScopeName, grammar);\n localStack.push(new LocalStackElement(captureRuleScopesList, captureIndex.end));\n }\n }\n while (localStack.length > 0) {\n // pop!\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, localStack[localStack.length - 1].endPos);\n localStack.pop();\n }\n}\nclass LocalStackElement {\n constructor(scopes, endPos) {\n this.scopes = scopes;\n this.endPos = endPos;\n }\n}\nexports.LocalStackElement = LocalStackElement;\n//# sourceMappingURL=tokenizeString.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseJSON = void 0;\nfunction doFail(streamState, msg) {\n // console.log('Near offset ' + streamState.pos + ': ' + msg + ' ~~~' + streamState.source.substr(streamState.pos, 50) + '~~~');\n throw new Error('Near offset ' + streamState.pos + ': ' + msg + ' ~~~' + streamState.source.substr(streamState.pos, 50) + '~~~');\n}\nfunction parseJSON(source, filename, withMetadata) {\n let streamState = new JSONStreamState(source);\n let token = new JSONToken();\n let state = 0 /* ROOT_STATE */;\n let cur = null;\n let stateStack = [];\n let objStack = [];\n function pushState() {\n stateStack.push(state);\n objStack.push(cur);\n }\n function popState() {\n state = stateStack.pop();\n cur = objStack.pop();\n }\n function fail(msg) {\n doFail(streamState, msg);\n }\n while (nextJSONToken(streamState, token)) {\n if (state === 0 /* ROOT_STATE */) {\n if (cur !== null) {\n fail('too many constructs in root');\n }\n if (token.type === 3 /* LEFT_CURLY_BRACKET */) {\n cur = {};\n if (withMetadata) {\n cur.$vscodeTextmateLocation = token.toLocation(filename);\n }\n pushState();\n state = 1 /* DICT_STATE */;\n continue;\n }\n if (token.type === 2 /* LEFT_SQUARE_BRACKET */) {\n cur = [];\n pushState();\n state = 4 /* ARR_STATE */;\n continue;\n }\n fail('unexpected token in root');\n }\n if (state === 2 /* DICT_STATE_COMMA */) {\n if (token.type === 5 /* RIGHT_CURLY_BRACKET */) {\n popState();\n continue;\n }\n if (token.type === 7 /* COMMA */) {\n state = 3 /* DICT_STATE_NO_CLOSE */;\n continue;\n }\n fail('expected , or }');\n }\n if (state === 1 /* DICT_STATE */ || state === 3 /* DICT_STATE_NO_CLOSE */) {\n if (state === 1 /* DICT_STATE */ && token.type === 5 /* RIGHT_CURLY_BRACKET */) {\n popState();\n continue;\n }\n if (token.type === 1 /* STRING */) {\n let keyValue = token.value;\n if (!nextJSONToken(streamState, token) || token.type !== 6 /* COLON */) {\n fail('expected colon');\n }\n if (!nextJSONToken(streamState, token)) {\n fail('expected value');\n }\n state = 2 /* DICT_STATE_COMMA */;\n if (token.type === 1 /* STRING */) {\n cur[keyValue] = token.value;\n continue;\n }\n if (token.type === 8 /* NULL */) {\n cur[keyValue] = null;\n continue;\n }\n if (token.type === 9 /* TRUE */) {\n cur[keyValue] = true;\n continue;\n }\n if (token.type === 10 /* FALSE */) {\n cur[keyValue] = false;\n continue;\n }\n if (token.type === 11 /* NUMBER */) {\n cur[keyValue] = parseFloat(token.value);\n continue;\n }\n if (token.type === 2 /* LEFT_SQUARE_BRACKET */) {\n let newArr = [];\n cur[keyValue] = newArr;\n pushState();\n state = 4 /* ARR_STATE */;\n cur = newArr;\n continue;\n }\n if (token.type === 3 /* LEFT_CURLY_BRACKET */) {\n let newDict = {};\n if (withMetadata) {\n newDict.$vscodeTextmateLocation = token.toLocation(filename);\n }\n cur[keyValue] = newDict;\n pushState();\n state = 1 /* DICT_STATE */;\n cur = newDict;\n continue;\n }\n }\n fail('unexpected token in dict');\n }\n if (state === 5 /* ARR_STATE_COMMA */) {\n if (token.type === 4 /* RIGHT_SQUARE_BRACKET */) {\n popState();\n continue;\n }\n if (token.type === 7 /* COMMA */) {\n state = 6 /* ARR_STATE_NO_CLOSE */;\n continue;\n }\n fail('expected , or ]');\n }\n if (state === 4 /* ARR_STATE */ || state === 6 /* ARR_STATE_NO_CLOSE */) {\n if (state === 4 /* ARR_STATE */ && token.type === 4 /* RIGHT_SQUARE_BRACKET */) {\n popState();\n continue;\n }\n state = 5 /* ARR_STATE_COMMA */;\n if (token.type === 1 /* STRING */) {\n cur.push(token.value);\n continue;\n }\n if (token.type === 8 /* NULL */) {\n cur.push(null);\n continue;\n }\n if (token.type === 9 /* TRUE */) {\n cur.push(true);\n continue;\n }\n if (token.type === 10 /* FALSE */) {\n cur.push(false);\n continue;\n }\n if (token.type === 11 /* NUMBER */) {\n cur.push(parseFloat(token.value));\n continue;\n }\n if (token.type === 2 /* LEFT_SQUARE_BRACKET */) {\n let newArr = [];\n cur.push(newArr);\n pushState();\n state = 4 /* ARR_STATE */;\n cur = newArr;\n continue;\n }\n if (token.type === 3 /* LEFT_CURLY_BRACKET */) {\n let newDict = {};\n if (withMetadata) {\n newDict.$vscodeTextmateLocation = token.toLocation(filename);\n }\n cur.push(newDict);\n pushState();\n state = 1 /* DICT_STATE */;\n cur = newDict;\n continue;\n }\n fail('unexpected token in array');\n }\n fail('unknown state');\n }\n if (objStack.length !== 0) {\n fail('unclosed constructs');\n }\n return cur;\n}\nexports.parseJSON = parseJSON;\nclass JSONStreamState {\n constructor(source) {\n this.source = source;\n this.pos = 0;\n this.len = source.length;\n this.line = 1;\n this.char = 0;\n }\n}\nclass JSONToken {\n constructor() {\n this.value = null;\n this.type = 0 /* UNKNOWN */;\n this.offset = -1;\n this.len = -1;\n this.line = -1;\n this.char = -1;\n }\n toLocation(filename) {\n return {\n filename: filename,\n line: this.line,\n char: this.char\n };\n }\n}\n/**\n * precondition: the string is known to be valid JSON (https://www.ietf.org/rfc/rfc4627.txt)\n */\nfunction nextJSONToken(_state, _out) {\n _out.value = null;\n _out.type = 0 /* UNKNOWN */;\n _out.offset = -1;\n _out.len = -1;\n _out.line = -1;\n _out.char = -1;\n let source = _state.source;\n let pos = _state.pos;\n let len = _state.len;\n let line = _state.line;\n let char = _state.char;\n //------------------------ skip whitespace\n let chCode;\n do {\n if (pos >= len) {\n return false; /*EOS*/\n }\n chCode = source.charCodeAt(pos);\n if (chCode === 32 /* SPACE */ || chCode === 9 /* HORIZONTAL_TAB */ || chCode === 13 /* CARRIAGE_RETURN */) {\n // regular whitespace\n pos++;\n char++;\n continue;\n }\n if (chCode === 10 /* LINE_FEED */) {\n // newline\n pos++;\n line++;\n char = 0;\n continue;\n }\n // not whitespace\n break;\n } while (true);\n _out.offset = pos;\n _out.line = line;\n _out.char = char;\n if (chCode === 34 /* QUOTATION_MARK */) {\n //------------------------ strings\n _out.type = 1 /* STRING */;\n pos++;\n char++;\n do {\n if (pos >= len) {\n return false; /*EOS*/\n }\n chCode = source.charCodeAt(pos);\n pos++;\n char++;\n if (chCode === 92 /* BACKSLASH */) {\n // skip next char\n pos++;\n char++;\n continue;\n }\n if (chCode === 34 /* QUOTATION_MARK */) {\n // end of the string\n break;\n }\n } while (true);\n _out.value = source.substring(_out.offset + 1, pos - 1).replace(/\\\\u([0-9A-Fa-f]{4})/g, (_, m0) => {\n return String.fromCodePoint(parseInt(m0, 16));\n }).replace(/\\\\(.)/g, (_, m0) => {\n switch (m0) {\n case '\"': return '\"';\n case '\\\\': return '\\\\';\n case '/': return '/';\n case 'b': return '\\b';\n case 'f': return '\\f';\n case 'n': return '\\n';\n case 'r': return '\\r';\n case 't': return '\\t';\n default: doFail(_state, 'invalid escape sequence');\n }\n throw new Error('unreachable');\n });\n }\n else if (chCode === 91 /* LEFT_SQUARE_BRACKET */) {\n _out.type = 2 /* LEFT_SQUARE_BRACKET */;\n pos++;\n char++;\n }\n else if (chCode === 123 /* LEFT_CURLY_BRACKET */) {\n _out.type = 3 /* LEFT_CURLY_BRACKET */;\n pos++;\n char++;\n }\n else if (chCode === 93 /* RIGHT_SQUARE_BRACKET */) {\n _out.type = 4 /* RIGHT_SQUARE_BRACKET */;\n pos++;\n char++;\n }\n else if (chCode === 125 /* RIGHT_CURLY_BRACKET */) {\n _out.type = 5 /* RIGHT_CURLY_BRACKET */;\n pos++;\n char++;\n }\n else if (chCode === 58 /* COLON */) {\n _out.type = 6 /* COLON */;\n pos++;\n char++;\n }\n else if (chCode === 44 /* COMMA */) {\n _out.type = 7 /* COMMA */;\n pos++;\n char++;\n }\n else if (chCode === 110 /* n */) {\n //------------------------ null\n _out.type = 8 /* NULL */;\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 117 /* u */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 108 /* l */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 108 /* l */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n }\n else if (chCode === 116 /* t */) {\n //------------------------ true\n _out.type = 9 /* TRUE */;\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 114 /* r */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 117 /* u */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 101 /* e */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n }\n else if (chCode === 102 /* f */) {\n //------------------------ false\n _out.type = 10 /* FALSE */;\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 97 /* a */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 108 /* l */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 115 /* s */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 101 /* e */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n }\n else {\n //------------------------ numbers\n _out.type = 11 /* NUMBER */;\n do {\n if (pos >= len) {\n return false; /*EOS*/\n }\n chCode = source.charCodeAt(pos);\n if (chCode === 46 /* DOT */\n || (chCode >= 48 /* D0 */ && chCode <= 57 /* D9 */)\n || (chCode === 101 /* e */ || chCode === 69 /* E */)\n || (chCode === 45 /* MINUS */ || chCode === 43 /* PLUS */)) {\n // looks like a piece of a number\n pos++;\n char++;\n continue;\n }\n // pos--; char--;\n break;\n } while (true);\n }\n _out.len = pos - _out.offset;\n if (_out.value === null) {\n _out.value = source.substr(_out.offset, _out.len);\n }\n _state.pos = pos;\n _state.line = line;\n _state.char = char;\n // console.log('PRODUCING TOKEN: ', _out.value, JSONTokenType[_out.type]);\n return true;\n}\n//# sourceMappingURL=json.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseRawGrammar = exports.INITIAL = exports.Registry = void 0;\nconst grammar_1 = require(\"./grammar\");\nconst grammarReader = require(\"./parseRawGrammar\");\nconst registry_1 = require(\"./registry\");\nconst theme_1 = require(\"./theme\");\nconst grammarDependencies_1 = require(\"./grammar/grammarDependencies\");\n__exportStar(require(\"./onigLib\"), exports);\n/**\n * The registry that will hold all grammars.\n */\nclass Registry {\n constructor(options) {\n this._options = options;\n this._syncRegistry = new registry_1.SyncRegistry(theme_1.Theme.createFromRawTheme(options.theme, options.colorMap), options.onigLib);\n this._ensureGrammarCache = new Map();\n }\n dispose() {\n this._syncRegistry.dispose();\n }\n /**\n * Change the theme. Once called, no previous `ruleStack` should be used anymore.\n */\n setTheme(theme, colorMap) {\n this._syncRegistry.setTheme(theme_1.Theme.createFromRawTheme(theme, colorMap));\n }\n /**\n * Returns a lookup array for color ids.\n */\n getColorMap() {\n return this._syncRegistry.getColorMap();\n }\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n * Please do not use language id 0.\n */\n loadGrammarWithEmbeddedLanguages(initialScopeName, initialLanguage, embeddedLanguages) {\n return this.loadGrammarWithConfiguration(initialScopeName, initialLanguage, { embeddedLanguages });\n }\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n * Please do not use language id 0.\n */\n loadGrammarWithConfiguration(initialScopeName, initialLanguage, configuration) {\n return this._loadGrammar(initialScopeName, initialLanguage, configuration.embeddedLanguages, configuration.tokenTypes, new grammar_1.BalancedBracketSelectors(configuration.balancedBracketSelectors || [], configuration.unbalancedBracketSelectors || []));\n }\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n */\n loadGrammar(initialScopeName) {\n return this._loadGrammar(initialScopeName, 0, null, null, null);\n }\n async _loadGrammar(initialScopeName, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors) {\n const dependencyProcessor = new grammarDependencies_1.ScopeDependencyProcessor(this._syncRegistry, initialScopeName);\n while (dependencyProcessor.Q.length > 0) {\n await Promise.all(dependencyProcessor.Q.map((request) => this._loadSingleGrammar(request.scopeName)));\n dependencyProcessor.processQueue();\n }\n return this._grammarForScopeName(initialScopeName, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors);\n }\n async _loadSingleGrammar(scopeName) {\n if (!this._ensureGrammarCache.has(scopeName)) {\n this._ensureGrammarCache.set(scopeName, this._doLoadSingleGrammar(scopeName));\n }\n return this._ensureGrammarCache.get(scopeName);\n }\n async _doLoadSingleGrammar(scopeName) {\n const grammar = await this._options.loadGrammar(scopeName);\n if (grammar) {\n const injections = typeof this._options.getInjections === \"function\" ? this._options.getInjections(scopeName) : undefined;\n this._syncRegistry.addGrammar(grammar, injections);\n }\n }\n /**\n * Adds a rawGrammar.\n */\n async addGrammar(rawGrammar, injections = [], initialLanguage = 0, embeddedLanguages = null) {\n this._syncRegistry.addGrammar(rawGrammar, injections);\n return (await this._grammarForScopeName(rawGrammar.scopeName, initialLanguage, embeddedLanguages));\n }\n /**\n * Get the grammar for `scopeName`. The grammar must first be created via `loadGrammar` or `addGrammar`.\n */\n _grammarForScopeName(scopeName, initialLanguage = 0, embeddedLanguages = null, tokenTypes = null, balancedBracketSelectors = null) {\n return this._syncRegistry.grammarForScopeName(scopeName, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors);\n }\n}\nexports.Registry = Registry;\nexports.INITIAL = grammar_1.StateStack.NULL;\nexports.parseRawGrammar = grammarReader.parseRawGrammar;\n//# sourceMappingURL=main.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createMatchers = void 0;\nfunction createMatchers(selector, matchesName) {\n const results = [];\n const tokenizer = newTokenizer(selector);\n let token = tokenizer.next();\n while (token !== null) {\n let priority = 0;\n if (token.length === 2 && token.charAt(1) === ':') {\n switch (token.charAt(0)) {\n case 'R':\n priority = 1;\n break;\n case 'L':\n priority = -1;\n break;\n default:\n console.log(`Unknown priority ${token} in scope selector`);\n }\n token = tokenizer.next();\n }\n let matcher = parseConjunction();\n results.push({ matcher, priority });\n if (token !== ',') {\n break;\n }\n token = tokenizer.next();\n }\n return results;\n function parseOperand() {\n if (token === '-') {\n token = tokenizer.next();\n const expressionToNegate = parseOperand();\n return matcherInput => !!expressionToNegate && !expressionToNegate(matcherInput);\n }\n if (token === '(') {\n token = tokenizer.next();\n const expressionInParents = parseInnerExpression();\n if (token === ')') {\n token = tokenizer.next();\n }\n return expressionInParents;\n }\n if (isIdentifier(token)) {\n const identifiers = [];\n do {\n identifiers.push(token);\n token = tokenizer.next();\n } while (isIdentifier(token));\n return matcherInput => matchesName(identifiers, matcherInput);\n }\n return null;\n }\n function parseConjunction() {\n const matchers = [];\n let matcher = parseOperand();\n while (matcher) {\n matchers.push(matcher);\n matcher = parseOperand();\n }\n return matcherInput => matchers.every(matcher => matcher(matcherInput)); // and\n }\n function parseInnerExpression() {\n const matchers = [];\n let matcher = parseConjunction();\n while (matcher) {\n matchers.push(matcher);\n if (token === '|' || token === ',') {\n do {\n token = tokenizer.next();\n } while (token === '|' || token === ','); // ignore subsequent commas\n }\n else {\n break;\n }\n matcher = parseConjunction();\n }\n return matcherInput => matchers.some(matcher => matcher(matcherInput)); // or\n }\n}\nexports.createMatchers = createMatchers;\nfunction isIdentifier(token) {\n return !!token && !!token.match(/[\\w\\.:]+/);\n}\nfunction newTokenizer(input) {\n let regex = /([LR]:|[\\w\\.:][\\w\\.:\\-]*|[\\,\\|\\-\\(\\)])/g;\n let match = regex.exec(input);\n return {\n next: () => {\n if (!match) {\n return null;\n }\n const res = match[0];\n match = regex.exec(input);\n return res;\n }\n };\n}\n//# sourceMappingURL=matcher.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.disposeOnigString = void 0;\nfunction disposeOnigString(str) {\n if (typeof str.dispose === 'function') {\n str.dispose();\n }\n}\nexports.disposeOnigString = disposeOnigString;\n//# sourceMappingURL=onigLib.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseRawGrammar = void 0;\nconst plist = require(\"./plist\");\nconst debug_1 = require(\"./debug\");\nconst json_1 = require(\"./json\");\nfunction parseRawGrammar(content, filePath = null) {\n if (filePath !== null && /\\.json$/.test(filePath)) {\n return parseJSONGrammar(content, filePath);\n }\n return parsePLISTGrammar(content, filePath);\n}\nexports.parseRawGrammar = parseRawGrammar;\nfunction parseJSONGrammar(contents, filename) {\n if (debug_1.DebugFlags.InDebugMode) {\n return json_1.parseJSON(contents, filename, true);\n }\n return JSON.parse(contents);\n}\nfunction parsePLISTGrammar(contents, filename) {\n if (debug_1.DebugFlags.InDebugMode) {\n return plist.parseWithLocation(contents, filename, '$vscodeTextmateLocation');\n }\n return plist.parsePLIST(contents);\n}\n//# sourceMappingURL=parseRawGrammar.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parsePLIST = exports.parseWithLocation = void 0;\nfunction parseWithLocation(content, filename, locationKeyName) {\n return _parse(content, filename, locationKeyName);\n}\nexports.parseWithLocation = parseWithLocation;\n/**\n * A very fast plist parser\n */\nfunction parsePLIST(content) {\n return _parse(content, null, null);\n}\nexports.parsePLIST = parsePLIST;\nfunction _parse(content, filename, locationKeyName) {\n const len = content.length;\n let pos = 0;\n let line = 1;\n let char = 0;\n // Skip UTF8 BOM\n if (len > 0 && content.charCodeAt(0) === 65279 /* BOM */) {\n pos = 1;\n }\n function advancePosBy(by) {\n if (locationKeyName === null) {\n pos = pos + by;\n }\n else {\n while (by > 0) {\n let chCode = content.charCodeAt(pos);\n if (chCode === 10 /* LINE_FEED */) {\n pos++;\n line++;\n char = 0;\n }\n else {\n pos++;\n char++;\n }\n by--;\n }\n }\n }\n function advancePosTo(to) {\n if (locationKeyName === null) {\n pos = to;\n }\n else {\n advancePosBy(to - pos);\n }\n }\n function skipWhitespace() {\n while (pos < len) {\n let chCode = content.charCodeAt(pos);\n if (chCode !== 32 /* SPACE */ && chCode !== 9 /* TAB */ && chCode !== 13 /* CARRIAGE_RETURN */ && chCode !== 10 /* LINE_FEED */) {\n break;\n }\n advancePosBy(1);\n }\n }\n function advanceIfStartsWith(str) {\n if (content.substr(pos, str.length) === str) {\n advancePosBy(str.length);\n return true;\n }\n return false;\n }\n function advanceUntil(str) {\n let nextOccurence = content.indexOf(str, pos);\n if (nextOccurence !== -1) {\n advancePosTo(nextOccurence + str.length);\n }\n else {\n // EOF\n advancePosTo(len);\n }\n }\n function captureUntil(str) {\n let nextOccurence = content.indexOf(str, pos);\n if (nextOccurence !== -1) {\n let r = content.substring(pos, nextOccurence);\n advancePosTo(nextOccurence + str.length);\n return r;\n }\n else {\n // EOF\n let r = content.substr(pos);\n advancePosTo(len);\n return r;\n }\n }\n let state = 0 /* ROOT_STATE */;\n let cur = null;\n let stateStack = [];\n let objStack = [];\n let curKey = null;\n function pushState(newState, newCur) {\n stateStack.push(state);\n objStack.push(cur);\n state = newState;\n cur = newCur;\n }\n function popState() {\n if (stateStack.length === 0) {\n return fail('illegal state stack');\n }\n state = stateStack.pop();\n cur = objStack.pop();\n }\n function fail(msg) {\n throw new Error('Near offset ' + pos + ': ' + msg + ' ~~~' + content.substr(pos, 50) + '~~~');\n }\n const dictState = {\n enterDict: function () {\n if (curKey === null) {\n return fail('missing <key>');\n }\n let newDict = {};\n if (locationKeyName !== null) {\n newDict[locationKeyName] = {\n filename: filename,\n line: line,\n char: char\n };\n }\n cur[curKey] = newDict;\n curKey = null;\n pushState(1 /* DICT_STATE */, newDict);\n },\n enterArray: function () {\n if (curKey === null) {\n return fail('missing <key>');\n }\n let newArr = [];\n cur[curKey] = newArr;\n curKey = null;\n pushState(2 /* ARR_STATE */, newArr);\n }\n };\n const arrState = {\n enterDict: function () {\n let newDict = {};\n if (locationKeyName !== null) {\n newDict[locationKeyName] = {\n filename: filename,\n line: line,\n char: char\n };\n }\n cur.push(newDict);\n pushState(1 /* DICT_STATE */, newDict);\n },\n enterArray: function () {\n let newArr = [];\n cur.push(newArr);\n pushState(2 /* ARR_STATE */, newArr);\n }\n };\n function enterDict() {\n if (state === 1 /* DICT_STATE */) {\n dictState.enterDict();\n }\n else if (state === 2 /* ARR_STATE */) {\n arrState.enterDict();\n }\n else { // ROOT_STATE\n cur = {};\n if (locationKeyName !== null) {\n cur[locationKeyName] = {\n filename: filename,\n line: line,\n char: char\n };\n }\n pushState(1 /* DICT_STATE */, cur);\n }\n }\n function leaveDict() {\n if (state === 1 /* DICT_STATE */) {\n popState();\n }\n else if (state === 2 /* ARR_STATE */) {\n return fail('unexpected </dict>');\n }\n else { // ROOT_STATE\n return fail('unexpected </dict>');\n }\n }\n function enterArray() {\n if (state === 1 /* DICT_STATE */) {\n dictState.enterArray();\n }\n else if (state === 2 /* ARR_STATE */) {\n arrState.enterArray();\n }\n else { // ROOT_STATE\n cur = [];\n pushState(2 /* ARR_STATE */, cur);\n }\n }\n function leaveArray() {\n if (state === 1 /* DICT_STATE */) {\n return fail('unexpected </array>');\n }\n else if (state === 2 /* ARR_STATE */) {\n popState();\n }\n else { // ROOT_STATE\n return fail('unexpected </array>');\n }\n }\n function acceptKey(val) {\n if (state === 1 /* DICT_STATE */) {\n if (curKey !== null) {\n return fail('too many <key>');\n }\n curKey = val;\n }\n else if (state === 2 /* ARR_STATE */) {\n return fail('unexpected <key>');\n }\n else { // ROOT_STATE\n return fail('unexpected <key>');\n }\n }\n function acceptString(val) {\n if (state === 1 /* DICT_STATE */) {\n if (curKey === null) {\n return fail('missing <key>');\n }\n cur[curKey] = val;\n curKey = null;\n }\n else if (state === 2 /* ARR_STATE */) {\n cur.push(val);\n }\n else { // ROOT_STATE\n cur = val;\n }\n }\n function acceptReal(val) {\n if (isNaN(val)) {\n return fail('cannot parse float');\n }\n if (state === 1 /* DICT_STATE */) {\n if (curKey === null) {\n return fail('missing <key>');\n }\n cur[curKey] = val;\n curKey = null;\n }\n else if (state === 2 /* ARR_STATE */) {\n cur.push(val);\n }\n else { // ROOT_STATE\n cur = val;\n }\n }\n function acceptInteger(val) {\n if (isNaN(val)) {\n return fail('cannot parse integer');\n }\n if (state === 1 /* DICT_STATE */) {\n if (curKey === null) {\n return fail('missing <key>');\n }\n cur[curKey] = val;\n curKey = null;\n }\n else if (state === 2 /* ARR_STATE */) {\n cur.push(val);\n }\n else { // ROOT_STATE\n cur = val;\n }\n }\n function acceptDate(val) {\n if (state === 1 /* DICT_STATE */) {\n if (curKey === null) {\n return fail('missing <key>');\n }\n cur[curKey] = val;\n curKey = null;\n }\n else if (state === 2 /* ARR_STATE */) {\n cur.push(val);\n }\n else { // ROOT_STATE\n cur = val;\n }\n }\n function acceptData(val) {\n if (state === 1 /* DICT_STATE */) {\n if (curKey === null) {\n return fail('missing <key>');\n }\n cur[curKey] = val;\n curKey = null;\n }\n else if (state === 2 /* ARR_STATE */) {\n cur.push(val);\n }\n else { // ROOT_STATE\n cur = val;\n }\n }\n function acceptBool(val) {\n if (state === 1 /* DICT_STATE */) {\n if (curKey === null) {\n return fail('missing <key>');\n }\n cur[curKey] = val;\n curKey = null;\n }\n else if (state === 2 /* ARR_STATE */) {\n cur.push(val);\n }\n else { // ROOT_STATE\n cur = val;\n }\n }\n function escapeVal(str) {\n return str.replace(/&#([0-9]+);/g, function (_, m0) {\n return String.fromCodePoint(parseInt(m0, 10));\n }).replace(/&#x([0-9a-f]+);/g, function (_, m0) {\n return String.fromCodePoint(parseInt(m0, 16));\n }).replace(/&amp;|&lt;|&gt;|&quot;|&apos;/g, function (_) {\n switch (_) {\n case '&amp;': return '&';\n case '&lt;': return '<';\n case '&gt;': return '>';\n case '&quot;': return '\"';\n case '&apos;': return '\\'';\n }\n return _;\n });\n }\n function parseOpenTag() {\n let r = captureUntil('>');\n let isClosed = false;\n if (r.charCodeAt(r.length - 1) === 47 /* SLASH */) {\n isClosed = true;\n r = r.substring(0, r.length - 1);\n }\n return {\n name: r.trim(),\n isClosed: isClosed\n };\n }\n function parseTagValue(tag) {\n if (tag.isClosed) {\n return '';\n }\n let val = captureUntil('</');\n advanceUntil('>');\n return escapeVal(val);\n }\n while (pos < len) {\n skipWhitespace();\n if (pos >= len) {\n break;\n }\n const chCode = content.charCodeAt(pos);\n advancePosBy(1);\n if (chCode !== 60 /* LESS_THAN */) {\n return fail('expected <');\n }\n if (pos >= len) {\n return fail('unexpected end of input');\n }\n const peekChCode = content.charCodeAt(pos);\n if (peekChCode === 63 /* QUESTION_MARK */) {\n advancePosBy(1);\n advanceUntil('?>');\n continue;\n }\n if (peekChCode === 33 /* EXCLAMATION_MARK */) {\n advancePosBy(1);\n if (advanceIfStartsWith('--')) {\n advanceUntil('-->');\n continue;\n }\n advanceUntil('>');\n continue;\n }\n if (peekChCode === 47 /* SLASH */) {\n advancePosBy(1);\n skipWhitespace();\n if (advanceIfStartsWith('plist')) {\n advanceUntil('>');\n continue;\n }\n if (advanceIfStartsWith('dict')) {\n advanceUntil('>');\n leaveDict();\n continue;\n }\n if (advanceIfStartsWith('array')) {\n advanceUntil('>');\n leaveArray();\n continue;\n }\n return fail('unexpected closed tag');\n }\n let tag = parseOpenTag();\n switch (tag.name) {\n case 'dict':\n enterDict();\n if (tag.isClosed) {\n leaveDict();\n }\n continue;\n case 'array':\n enterArray();\n if (tag.isClosed) {\n leaveArray();\n }\n continue;\n case 'key':\n acceptKey(parseTagValue(tag));\n continue;\n case 'string':\n acceptString(parseTagValue(tag));\n continue;\n case 'real':\n acceptReal(parseFloat(parseTagValue(tag)));\n continue;\n case 'integer':\n acceptInteger(parseInt(parseTagValue(tag), 10));\n continue;\n case 'date':\n acceptDate(new Date(parseTagValue(tag)));\n continue;\n case 'data':\n acceptData(parseTagValue(tag));\n continue;\n case 'true':\n parseTagValue(tag);\n acceptBool(true);\n continue;\n case 'false':\n parseTagValue(tag);\n acceptBool(false);\n continue;\n }\n if (/^plist/.test(tag.name)) {\n continue;\n }\n return fail('unexpected opened tag ' + tag.name);\n }\n return cur;\n}\n//# sourceMappingURL=plist.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SyncRegistry = void 0;\nconst grammar_1 = require(\"./grammar\");\nclass SyncRegistry {\n constructor(theme, _onigLibPromise) {\n this._onigLibPromise = _onigLibPromise;\n this._grammars = new Map();\n this._rawGrammars = new Map();\n this._injectionGrammars = new Map();\n this._theme = theme;\n }\n dispose() {\n for (const grammar of this._grammars.values()) {\n grammar.dispose();\n }\n }\n setTheme(theme) {\n this._theme = theme;\n }\n getColorMap() {\n return this._theme.getColorMap();\n }\n /**\n * Add `grammar` to registry and return a list of referenced scope names\n */\n addGrammar(grammar, injectionScopeNames) {\n this._rawGrammars.set(grammar.scopeName, grammar);\n if (injectionScopeNames) {\n this._injectionGrammars.set(grammar.scopeName, injectionScopeNames);\n }\n }\n /**\n * Lookup a raw grammar.\n */\n lookup(scopeName) {\n return this._rawGrammars.get(scopeName);\n }\n /**\n * Returns the injections for the given grammar\n */\n injections(targetScope) {\n return this._injectionGrammars.get(targetScope);\n }\n /**\n * Get the default theme settings\n */\n getDefaults() {\n return this._theme.getDefaults();\n }\n /**\n * Match a scope in the theme.\n */\n themeMatch(scopePath) {\n return this._theme.match(scopePath);\n }\n /**\n * Lookup a grammar.\n */\n async grammarForScopeName(scopeName, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors) {\n if (!this._grammars.has(scopeName)) {\n let rawGrammar = this._rawGrammars.get(scopeName);\n if (!rawGrammar) {\n return null;\n }\n this._grammars.set(scopeName, grammar_1.createGrammar(scopeName, rawGrammar, initialLanguage, embeddedLanguages, tokenTypes, balancedBracketSelectors, this, await this._onigLibPromise));\n }\n return this._grammars.get(scopeName);\n }\n}\nexports.SyncRegistry = SyncRegistry;\n//# sourceMappingURL=registry.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CompiledRule = exports.RegExpSourceList = exports.RegExpSource = exports.RuleFactory = exports.BeginWhileRule = exports.BeginEndRule = exports.IncludeOnlyRule = exports.MatchRule = exports.CaptureRule = exports.Rule = exports.ruleIdToNumber = exports.ruleIdFromNumber = exports.whileRuleId = exports.endRuleId = void 0;\nconst utils_1 = require(\"./utils\");\nconst grammarDependencies_1 = require(\"./grammar/grammarDependencies\");\nconst HAS_BACK_REFERENCES = /\\\\(\\d+)/;\nconst BACK_REFERENCING_END = /\\\\(\\d+)/g;\nconst ruleIdSymbol = Symbol('RuleId');\n// This is a special constant to indicate that the end regexp matched.\nexports.endRuleId = -1;\n// This is a special constant to indicate that the while regexp matched.\nexports.whileRuleId = -2;\nfunction ruleIdFromNumber(id) {\n return id;\n}\nexports.ruleIdFromNumber = ruleIdFromNumber;\nfunction ruleIdToNumber(id) {\n return id;\n}\nexports.ruleIdToNumber = ruleIdToNumber;\nclass Rule {\n constructor($location, id, name, contentName) {\n this.$location = $location;\n this.id = id;\n this._name = name || null;\n this._nameIsCapturing = utils_1.RegexSource.hasCaptures(this._name);\n this._contentName = contentName || null;\n this._contentNameIsCapturing = utils_1.RegexSource.hasCaptures(this._contentName);\n }\n get debugName() {\n const location = this.$location ? `${utils_1.basename(this.$location.filename)}:${this.$location.line}` : 'unknown';\n return `${this.constructor.name}#${this.id} @ ${location}`;\n }\n getName(lineText, captureIndices) {\n if (!this._nameIsCapturing || this._name === null || lineText === null || captureIndices === null) {\n return this._name;\n }\n return utils_1.RegexSource.replaceCaptures(this._name, lineText, captureIndices);\n }\n getContentName(lineText, captureIndices) {\n if (!this._contentNameIsCapturing || this._contentName === null) {\n return this._contentName;\n }\n return utils_1.RegexSource.replaceCaptures(this._contentName, lineText, captureIndices);\n }\n}\nexports.Rule = Rule;\nclass CaptureRule extends Rule {\n constructor($location, id, name, contentName, retokenizeCapturedWithRuleId) {\n super($location, id, name, contentName);\n this.retokenizeCapturedWithRuleId = retokenizeCapturedWithRuleId;\n }\n dispose() {\n // nothing to dispose\n }\n collectPatterns(grammar, out) {\n throw new Error('Not supported!');\n }\n compile(grammar, endRegexSource) {\n throw new Error('Not supported!');\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n throw new Error('Not supported!');\n }\n}\nexports.CaptureRule = CaptureRule;\nclass MatchRule extends Rule {\n constructor($location, id, name, match, captures) {\n super($location, id, name, null);\n this._match = new RegExpSource(match, this.id);\n this.captures = captures;\n this._cachedCompiledPatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n }\n get debugMatchRegExp() {\n return `${this._match.source}`;\n }\n collectPatterns(grammar, out) {\n out.push(this._match);\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n this.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n return this._cachedCompiledPatterns;\n }\n}\nexports.MatchRule = MatchRule;\nclass IncludeOnlyRule extends Rule {\n constructor($location, id, name, contentName, patterns) {\n super($location, id, name, contentName);\n this.patterns = patterns.patterns;\n this.hasMissingPatterns = patterns.hasMissingPatterns;\n this._cachedCompiledPatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n }\n collectPatterns(grammar, out) {\n for (const pattern of this.patterns) {\n const rule = grammar.getRule(pattern);\n rule.collectPatterns(grammar, out);\n }\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n this.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n return this._cachedCompiledPatterns;\n }\n}\nexports.IncludeOnlyRule = IncludeOnlyRule;\nclass BeginEndRule extends Rule {\n constructor($location, id, name, contentName, begin, beginCaptures, end, endCaptures, applyEndPatternLast, patterns) {\n super($location, id, name, contentName);\n this._begin = new RegExpSource(begin, this.id);\n this.beginCaptures = beginCaptures;\n this._end = new RegExpSource(end ? end : '\\uFFFF', -1);\n this.endHasBackReferences = this._end.hasBackReferences;\n this.endCaptures = endCaptures;\n this.applyEndPatternLast = applyEndPatternLast || false;\n this.patterns = patterns.patterns;\n this.hasMissingPatterns = patterns.hasMissingPatterns;\n this._cachedCompiledPatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n }\n get debugBeginRegExp() {\n return `${this._begin.source}`;\n }\n get debugEndRegExp() {\n return `${this._end.source}`;\n }\n getEndWithResolvedBackReferences(lineText, captureIndices) {\n return this._end.resolveBackReferences(lineText, captureIndices);\n }\n collectPatterns(grammar, out) {\n out.push(this._begin);\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar, endRegexSource).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar, endRegexSource).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar, endRegexSource) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n for (const pattern of this.patterns) {\n const rule = grammar.getRule(pattern);\n rule.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n if (this.applyEndPatternLast) {\n this._cachedCompiledPatterns.push(this._end.hasBackReferences ? this._end.clone() : this._end);\n }\n else {\n this._cachedCompiledPatterns.unshift(this._end.hasBackReferences ? this._end.clone() : this._end);\n }\n }\n if (this._end.hasBackReferences) {\n if (this.applyEndPatternLast) {\n this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length() - 1, endRegexSource);\n }\n else {\n this._cachedCompiledPatterns.setSource(0, endRegexSource);\n }\n }\n return this._cachedCompiledPatterns;\n }\n}\nexports.BeginEndRule = BeginEndRule;\nclass BeginWhileRule extends Rule {\n constructor($location, id, name, contentName, begin, beginCaptures, _while, whileCaptures, patterns) {\n super($location, id, name, contentName);\n this._begin = new RegExpSource(begin, this.id);\n this.beginCaptures = beginCaptures;\n this.whileCaptures = whileCaptures;\n this._while = new RegExpSource(_while, exports.whileRuleId);\n this.whileHasBackReferences = this._while.hasBackReferences;\n this.patterns = patterns.patterns;\n this.hasMissingPatterns = patterns.hasMissingPatterns;\n this._cachedCompiledPatterns = null;\n this._cachedCompiledWhilePatterns = null;\n }\n dispose() {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n if (this._cachedCompiledWhilePatterns) {\n this._cachedCompiledWhilePatterns.dispose();\n this._cachedCompiledWhilePatterns = null;\n }\n }\n get debugBeginRegExp() {\n return `${this._begin.source}`;\n }\n get debugWhileRegExp() {\n return `${this._while.source}`;\n }\n getWhileWithResolvedBackReferences(lineText, captureIndices) {\n return this._while.resolveBackReferences(lineText, captureIndices);\n }\n collectPatterns(grammar, out) {\n out.push(this._begin);\n }\n compile(grammar, endRegexSource) {\n return this._getCachedCompiledPatterns(grammar).compile(grammar);\n }\n compileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledPatterns(grammar).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledPatterns(grammar) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n for (const pattern of this.patterns) {\n const rule = grammar.getRule(pattern);\n rule.collectPatterns(grammar, this._cachedCompiledPatterns);\n }\n }\n return this._cachedCompiledPatterns;\n }\n compileWhile(grammar, endRegexSource) {\n return this._getCachedCompiledWhilePatterns(grammar, endRegexSource).compile(grammar);\n }\n compileWhileAG(grammar, endRegexSource, allowA, allowG) {\n return this._getCachedCompiledWhilePatterns(grammar, endRegexSource).compileAG(grammar, allowA, allowG);\n }\n _getCachedCompiledWhilePatterns(grammar, endRegexSource) {\n if (!this._cachedCompiledWhilePatterns) {\n this._cachedCompiledWhilePatterns = new RegExpSourceList();\n this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences ? this._while.clone() : this._while);\n }\n if (this._while.hasBackReferences) {\n this._cachedCompiledWhilePatterns.setSource(0, endRegexSource ? endRegexSource : '\\uFFFF');\n }\n return this._cachedCompiledWhilePatterns;\n }\n}\nexports.BeginWhileRule = BeginWhileRule;\nclass RuleFactory {\n static createCaptureRule(helper, $location, name, contentName, retokenizeCapturedWithRuleId) {\n return helper.registerRule((id) => {\n return new CaptureRule($location, id, name, contentName, retokenizeCapturedWithRuleId);\n });\n }\n static getCompiledRuleId(desc, helper, repository) {\n if (!desc.id) {\n helper.registerRule((id) => {\n desc.id = id;\n if (desc.match) {\n return new MatchRule(desc.$vscodeTextmateLocation, desc.id, desc.name, desc.match, RuleFactory._compileCaptures(desc.captures, helper, repository));\n }\n if (typeof desc.begin === 'undefined') {\n if (desc.repository) {\n repository = utils_1.mergeObjects({}, repository, desc.repository);\n }\n let patterns = desc.patterns;\n if (typeof patterns === 'undefined' && desc.include) {\n patterns = [{ include: desc.include }];\n }\n return new IncludeOnlyRule(desc.$vscodeTextmateLocation, desc.id, desc.name, desc.contentName, RuleFactory._compilePatterns(patterns, helper, repository));\n }\n if (desc.while) {\n return new BeginWhileRule(desc.$vscodeTextmateLocation, desc.id, desc.name, desc.contentName, desc.begin, RuleFactory._compileCaptures(desc.beginCaptures || desc.captures, helper, repository), desc.while, RuleFactory._compileCaptures(desc.whileCaptures || desc.captures, helper, repository), RuleFactory._compilePatterns(desc.patterns, helper, repository));\n }\n return new BeginEndRule(desc.$vscodeTextmateLocation, desc.id, desc.name, desc.contentName, desc.begin, RuleFactory._compileCaptures(desc.beginCaptures || desc.captures, helper, repository), desc.end, RuleFactory._compileCaptures(desc.endCaptures || desc.captures, helper, repository), desc.applyEndPatternLast, RuleFactory._compilePatterns(desc.patterns, helper, repository));\n });\n }\n return desc.id;\n }\n static _compileCaptures(captures, helper, repository) {\n let r = [];\n if (captures) {\n // Find the maximum capture id\n let maximumCaptureId = 0;\n for (const captureId in captures) {\n if (captureId === '$vscodeTextmateLocation') {\n continue;\n }\n const numericCaptureId = parseInt(captureId, 10);\n if (numericCaptureId > maximumCaptureId) {\n maximumCaptureId = numericCaptureId;\n }\n }\n // Initialize result\n for (let i = 0; i <= maximumCaptureId; i++) {\n r[i] = null;\n }\n // Fill out result\n for (const captureId in captures) {\n if (captureId === '$vscodeTextmateLocation') {\n continue;\n }\n const numericCaptureId = parseInt(captureId, 10);\n let retokenizeCapturedWithRuleId = 0;\n if (captures[captureId].patterns) {\n retokenizeCapturedWithRuleId = RuleFactory.getCompiledRuleId(captures[captureId], helper, repository);\n }\n r[numericCaptureId] = RuleFactory.createCaptureRule(helper, captures[captureId].$vscodeTextmateLocation, captures[captureId].name, captures[captureId].contentName, retokenizeCapturedWithRuleId);\n }\n }\n return r;\n }\n static _compilePatterns(patterns, helper, repository) {\n let r = [];\n if (patterns) {\n for (let i = 0, len = patterns.length; i < len; i++) {\n const pattern = patterns[i];\n let ruleId = -1;\n if (pattern.include) {\n const reference = grammarDependencies_1.parseInclude(pattern.include);\n switch (reference.kind) {\n case 0 /* Base */:\n case 1 /* Self */:\n ruleId = RuleFactory.getCompiledRuleId(repository[pattern.include], helper, repository);\n break;\n case 2 /* RelativeReference */:\n // Local include found in `repository`\n let localIncludedRule = repository[reference.ruleName];\n if (localIncludedRule) {\n ruleId = RuleFactory.getCompiledRuleId(localIncludedRule, helper, repository);\n }\n else {\n // console.warn('CANNOT find rule for scopeName: ' + pattern.include + ', I am: ', repository['$base'].name);\n }\n break;\n case 3 /* TopLevelReference */:\n case 4 /* TopLevelRepositoryReference */:\n const externalGrammarName = reference.scopeName;\n const externalGrammarInclude = reference.kind === 4 /* TopLevelRepositoryReference */\n ? reference.ruleName\n : null;\n // External include\n const externalGrammar = helper.getExternalGrammar(externalGrammarName, repository);\n if (externalGrammar) {\n if (externalGrammarInclude) {\n let externalIncludedRule = externalGrammar.repository[externalGrammarInclude];\n if (externalIncludedRule) {\n ruleId = RuleFactory.getCompiledRuleId(externalIncludedRule, helper, externalGrammar.repository);\n }\n else {\n // console.warn('CANNOT find rule for scopeName: ' + pattern.include + ', I am: ', repository['$base'].name);\n }\n }\n else {\n ruleId = RuleFactory.getCompiledRuleId(externalGrammar.repository.$self, helper, externalGrammar.repository);\n }\n }\n else {\n // console.warn('CANNOT find grammar for scopeName: ' + pattern.include + ', I am: ', repository['$base'].name);\n }\n break;\n }\n }\n else {\n ruleId = RuleFactory.getCompiledRuleId(pattern, helper, repository);\n }\n if (ruleId !== -1) {\n const rule = helper.getRule(ruleId);\n let skipRule = false;\n if (rule instanceof IncludeOnlyRule || rule instanceof BeginEndRule || rule instanceof BeginWhileRule) {\n if (rule.hasMissingPatterns && rule.patterns.length === 0) {\n skipRule = true;\n }\n }\n if (skipRule) {\n // console.log('REMOVING RULE ENTIRELY DUE TO EMPTY PATTERNS THAT ARE MISSING');\n continue;\n }\n r.push(ruleId);\n }\n }\n }\n return {\n patterns: r,\n hasMissingPatterns: ((patterns ? patterns.length : 0) !== r.length)\n };\n }\n}\nexports.RuleFactory = RuleFactory;\nclass RegExpSource {\n constructor(regExpSource, ruleId) {\n if (regExpSource) {\n const len = regExpSource.length;\n let lastPushedPos = 0;\n let output = [];\n let hasAnchor = false;\n for (let pos = 0; pos < len; pos++) {\n const ch = regExpSource.charAt(pos);\n if (ch === '\\\\') {\n if (pos + 1 < len) {\n const nextCh = regExpSource.charAt(pos + 1);\n if (nextCh === 'z') {\n output.push(regExpSource.substring(lastPushedPos, pos));\n output.push('$(?!\\\\n)(?<!\\\\n)');\n lastPushedPos = pos + 2;\n }\n else if (nextCh === 'A' || nextCh === 'G') {\n hasAnchor = true;\n }\n pos++;\n }\n }\n }\n this.hasAnchor = hasAnchor;\n if (lastPushedPos === 0) {\n // No \\z hit\n this.source = regExpSource;\n }\n else {\n output.push(regExpSource.substring(lastPushedPos, len));\n this.source = output.join('');\n }\n }\n else {\n this.hasAnchor = false;\n this.source = regExpSource;\n }\n if (this.hasAnchor) {\n this._anchorCache = this._buildAnchorCache();\n }\n else {\n this._anchorCache = null;\n }\n this.ruleId = ruleId;\n this.hasBackReferences = HAS_BACK_REFERENCES.test(this.source);\n // console.log('input: ' + regExpSource + ' => ' + this.source + ', ' + this.hasAnchor);\n }\n clone() {\n return new RegExpSource(this.source, this.ruleId);\n }\n setSource(newSource) {\n if (this.source === newSource) {\n return;\n }\n this.source = newSource;\n if (this.hasAnchor) {\n this._anchorCache = this._buildAnchorCache();\n }\n }\n resolveBackReferences(lineText, captureIndices) {\n let capturedValues = captureIndices.map((capture) => {\n return lineText.substring(capture.start, capture.end);\n });\n BACK_REFERENCING_END.lastIndex = 0;\n return this.source.replace(BACK_REFERENCING_END, (match, g1) => {\n return utils_1.escapeRegExpCharacters(capturedValues[parseInt(g1, 10)] || '');\n });\n }\n _buildAnchorCache() {\n let A0_G0_result = [];\n let A0_G1_result = [];\n let A1_G0_result = [];\n let A1_G1_result = [];\n let pos, len, ch, nextCh;\n for (pos = 0, len = this.source.length; pos < len; pos++) {\n ch = this.source.charAt(pos);\n A0_G0_result[pos] = ch;\n A0_G1_result[pos] = ch;\n A1_G0_result[pos] = ch;\n A1_G1_result[pos] = ch;\n if (ch === '\\\\') {\n if (pos + 1 < len) {\n nextCh = this.source.charAt(pos + 1);\n if (nextCh === 'A') {\n A0_G0_result[pos + 1] = '\\uFFFF';\n A0_G1_result[pos + 1] = '\\uFFFF';\n A1_G0_result[pos + 1] = 'A';\n A1_G1_result[pos + 1] = 'A';\n }\n else if (nextCh === 'G') {\n A0_G0_result[pos + 1] = '\\uFFFF';\n A0_G1_result[pos + 1] = 'G';\n A1_G0_result[pos + 1] = '\\uFFFF';\n A1_G1_result[pos + 1] = 'G';\n }\n else {\n A0_G0_result[pos + 1] = nextCh;\n A0_G1_result[pos + 1] = nextCh;\n A1_G0_result[pos + 1] = nextCh;\n A1_G1_result[pos + 1] = nextCh;\n }\n pos++;\n }\n }\n }\n return {\n A0_G0: A0_G0_result.join(''),\n A0_G1: A0_G1_result.join(''),\n A1_G0: A1_G0_result.join(''),\n A1_G1: A1_G1_result.join('')\n };\n }\n resolveAnchors(allowA, allowG) {\n if (!this.hasAnchor || !this._anchorCache) {\n return this.source;\n }\n if (allowA) {\n if (allowG) {\n return this._anchorCache.A1_G1;\n }\n else {\n return this._anchorCache.A1_G0;\n }\n }\n else {\n if (allowG) {\n return this._anchorCache.A0_G1;\n }\n else {\n return this._anchorCache.A0_G0;\n }\n }\n }\n}\nexports.RegExpSource = RegExpSource;\nclass RegExpSourceList {\n constructor() {\n this._items = [];\n this._hasAnchors = false;\n this._cached = null;\n this._anchorCache = {\n A0_G0: null,\n A0_G1: null,\n A1_G0: null,\n A1_G1: null\n };\n }\n dispose() {\n this._disposeCaches();\n }\n _disposeCaches() {\n if (this._cached) {\n this._cached.dispose();\n this._cached = null;\n }\n if (this._anchorCache.A0_G0) {\n this._anchorCache.A0_G0.dispose();\n this._anchorCache.A0_G0 = null;\n }\n if (this._anchorCache.A0_G1) {\n this._anchorCache.A0_G1.dispose();\n this._anchorCache.A0_G1 = null;\n }\n if (this._anchorCache.A1_G0) {\n this._anchorCache.A1_G0.dispose();\n this._anchorCache.A1_G0 = null;\n }\n if (this._anchorCache.A1_G1) {\n this._anchorCache.A1_G1.dispose();\n this._anchorCache.A1_G1 = null;\n }\n }\n push(item) {\n this._items.push(item);\n this._hasAnchors = this._hasAnchors || item.hasAnchor;\n }\n unshift(item) {\n this._items.unshift(item);\n this._hasAnchors = this._hasAnchors || item.hasAnchor;\n }\n length() {\n return this._items.length;\n }\n setSource(index, newSource) {\n if (this._items[index].source !== newSource) {\n // bust the cache\n this._disposeCaches();\n this._items[index].setSource(newSource);\n }\n }\n compile(onigLib) {\n if (!this._cached) {\n let regExps = this._items.map(e => e.source);\n this._cached = new CompiledRule(onigLib, regExps, this._items.map(e => e.ruleId));\n }\n return this._cached;\n }\n compileAG(onigLib, allowA, allowG) {\n if (!this._hasAnchors) {\n return this.compile(onigLib);\n }\n else {\n if (allowA) {\n if (allowG) {\n if (!this._anchorCache.A1_G1) {\n this._anchorCache.A1_G1 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A1_G1;\n }\n else {\n if (!this._anchorCache.A1_G0) {\n this._anchorCache.A1_G0 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A1_G0;\n }\n }\n else {\n if (allowG) {\n if (!this._anchorCache.A0_G1) {\n this._anchorCache.A0_G1 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A0_G1;\n }\n else {\n if (!this._anchorCache.A0_G0) {\n this._anchorCache.A0_G0 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A0_G0;\n }\n }\n }\n }\n _resolveAnchors(onigLib, allowA, allowG) {\n let regExps = this._items.map(e => e.resolveAnchors(allowA, allowG));\n return new CompiledRule(onigLib, regExps, this._items.map(e => e.ruleId));\n }\n}\nexports.RegExpSourceList = RegExpSourceList;\nclass CompiledRule {\n constructor(onigLib, regExps, rules) {\n this.regExps = regExps;\n this.rules = rules;\n this.scanner = onigLib.createOnigScanner(regExps);\n }\n dispose() {\n if (typeof this.scanner.dispose === \"function\") {\n this.scanner.dispose();\n }\n }\n toString() {\n const r = [];\n for (let i = 0, len = this.rules.length; i < len; i++) {\n r.push(\" - \" + this.rules[i] + \": \" + this.regExps[i]);\n }\n return r.join(\"\\n\");\n }\n findNextMatchSync(string, startPosition, options) {\n const result = this.scanner.findNextMatchSync(string, startPosition, options);\n if (!result) {\n return null;\n }\n return {\n ruleId: this.rules[result.index],\n captureIndices: result.captureIndices,\n };\n }\n}\nexports.CompiledRule = CompiledRule;\n//# sourceMappingURL=rule.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ThemeTrieElement = exports.ThemeTrieElementRule = exports.ColorMap = exports.fontStyleToString = exports.ParsedThemeRule = exports.parseTheme = exports.StyleAttributes = exports.ScopeStack = exports.Theme = void 0;\nconst utils_1 = require(\"./utils\");\nclass Theme {\n constructor(_colorMap, _defaults, _root) {\n this._colorMap = _colorMap;\n this._defaults = _defaults;\n this._root = _root;\n this._cachedMatchRoot = new utils_1.CachedFn((scopeName) => this._root.match(scopeName));\n }\n static createFromRawTheme(source, colorMap) {\n return this.createFromParsedTheme(parseTheme(source), colorMap);\n }\n static createFromParsedTheme(source, colorMap) {\n return resolveParsedThemeRules(source, colorMap);\n }\n getColorMap() {\n return this._colorMap.getColorMap();\n }\n getDefaults() {\n return this._defaults;\n }\n match(scopePath) {\n if (scopePath === null) {\n return this._defaults;\n }\n const scopeName = scopePath.scopeName;\n const matchingTrieElements = this._cachedMatchRoot.get(scopeName);\n const effectiveRule = matchingTrieElements.find((v) => _scopePathMatchesParentScopes(scopePath.parent, v.parentScopes));\n if (!effectiveRule) {\n return null;\n }\n return new StyleAttributes(effectiveRule.fontStyle, effectiveRule.foreground, effectiveRule.background);\n }\n}\nexports.Theme = Theme;\nclass ScopeStack {\n constructor(parent, scopeName) {\n this.parent = parent;\n this.scopeName = scopeName;\n }\n static from(...segments) {\n let result = null;\n for (let i = 0; i < segments.length; i++) {\n result = new ScopeStack(result, segments[i]);\n }\n return result;\n }\n push(scopeName) {\n return new ScopeStack(this, scopeName);\n }\n getSegments() {\n let item = this;\n const result = [];\n while (item) {\n result.push(item.scopeName);\n item = item.parent;\n }\n result.reverse();\n return result;\n }\n toString() {\n return this.getSegments().join(' ');\n }\n}\nexports.ScopeStack = ScopeStack;\nfunction _scopePathMatchesParentScopes(scopePath, parentScopes) {\n if (parentScopes === null) {\n return true;\n }\n let index = 0;\n let scopePattern = parentScopes[index];\n while (scopePath) {\n if (_matchesScope(scopePath.scopeName, scopePattern)) {\n index++;\n if (index === parentScopes.length) {\n return true;\n }\n scopePattern = parentScopes[index];\n }\n scopePath = scopePath.parent;\n }\n return false;\n}\nfunction _matchesScope(scopeName, scopePattern) {\n return scopePattern === scopeName || (scopeName.startsWith(scopePattern) && scopeName[scopePattern.length] === '.');\n}\nclass StyleAttributes {\n constructor(fontStyle, foregroundId, backgroundId) {\n this.fontStyle = fontStyle;\n this.foregroundId = foregroundId;\n this.backgroundId = backgroundId;\n }\n}\nexports.StyleAttributes = StyleAttributes;\n/**\n * Parse a raw theme into rules.\n */\nfunction parseTheme(source) {\n if (!source) {\n return [];\n }\n if (!source.settings || !Array.isArray(source.settings)) {\n return [];\n }\n let settings = source.settings;\n let result = [], resultLen = 0;\n for (let i = 0, len = settings.length; i < len; i++) {\n let entry = settings[i];\n if (!entry.settings) {\n continue;\n }\n let scopes;\n if (typeof entry.scope === 'string') {\n let _scope = entry.scope;\n // remove leading commas\n _scope = _scope.replace(/^[,]+/, '');\n // remove trailing commans\n _scope = _scope.replace(/[,]+$/, '');\n scopes = _scope.split(',');\n }\n else if (Array.isArray(entry.scope)) {\n scopes = entry.scope;\n }\n else {\n scopes = [''];\n }\n let fontStyle = -1 /* NotSet */;\n if (typeof entry.settings.fontStyle === 'string') {\n fontStyle = 0 /* None */;\n let segments = entry.settings.fontStyle.split(' ');\n for (let j = 0, lenJ = segments.length; j < lenJ; j++) {\n let segment = segments[j];\n switch (segment) {\n case 'italic':\n fontStyle = fontStyle | 1 /* Italic */;\n break;\n case 'bold':\n fontStyle = fontStyle | 2 /* Bold */;\n break;\n case 'underline':\n fontStyle = fontStyle | 4 /* Underline */;\n break;\n case 'strikethrough':\n fontStyle = fontStyle | 8 /* Strikethrough */;\n break;\n }\n }\n }\n let foreground = null;\n if (typeof entry.settings.foreground === 'string' && utils_1.isValidHexColor(entry.settings.foreground)) {\n foreground = entry.settings.foreground;\n }\n let background = null;\n if (typeof entry.settings.background === 'string' && utils_1.isValidHexColor(entry.settings.background)) {\n background = entry.settings.background;\n }\n for (let j = 0, lenJ = scopes.length; j < lenJ; j++) {\n let _scope = scopes[j].trim();\n let segments = _scope.split(' ');\n let scope = segments[segments.length - 1];\n let parentScopes = null;\n if (segments.length > 1) {\n parentScopes = segments.slice(0, segments.length - 1);\n parentScopes.reverse();\n }\n result[resultLen++] = new ParsedThemeRule(scope, parentScopes, i, fontStyle, foreground, background);\n }\n }\n return result;\n}\nexports.parseTheme = parseTheme;\nclass ParsedThemeRule {\n constructor(scope, parentScopes, index, fontStyle, foreground, background) {\n this.scope = scope;\n this.parentScopes = parentScopes;\n this.index = index;\n this.fontStyle = fontStyle;\n this.foreground = foreground;\n this.background = background;\n }\n}\nexports.ParsedThemeRule = ParsedThemeRule;\nfunction fontStyleToString(fontStyle) {\n if (fontStyle === -1 /* NotSet */) {\n return 'not set';\n }\n let style = '';\n if (fontStyle & 1 /* Italic */) {\n style += 'italic ';\n }\n if (fontStyle & 2 /* Bold */) {\n style += 'bold ';\n }\n if (fontStyle & 4 /* Underline */) {\n style += 'underline ';\n }\n if (fontStyle & 8 /* Strikethrough */) {\n style += 'strikethrough ';\n }\n if (style === '') {\n style = 'none';\n }\n return style.trim();\n}\nexports.fontStyleToString = fontStyleToString;\n/**\n * Resolve rules (i.e. inheritance).\n */\nfunction resolveParsedThemeRules(parsedThemeRules, _colorMap) {\n // Sort rules lexicographically, and then by index if necessary\n parsedThemeRules.sort((a, b) => {\n let r = utils_1.strcmp(a.scope, b.scope);\n if (r !== 0) {\n return r;\n }\n r = utils_1.strArrCmp(a.parentScopes, b.parentScopes);\n if (r !== 0) {\n return r;\n }\n return a.index - b.index;\n });\n // Determine defaults\n let defaultFontStyle = 0 /* None */;\n let defaultForeground = '#000000';\n let defaultBackground = '#ffffff';\n while (parsedThemeRules.length >= 1 && parsedThemeRules[0].scope === '') {\n let incomingDefaults = parsedThemeRules.shift();\n if (incomingDefaults.fontStyle !== -1 /* NotSet */) {\n defaultFontStyle = incomingDefaults.fontStyle;\n }\n if (incomingDefaults.foreground !== null) {\n defaultForeground = incomingDefaults.foreground;\n }\n if (incomingDefaults.background !== null) {\n defaultBackground = incomingDefaults.background;\n }\n }\n let colorMap = new ColorMap(_colorMap);\n let defaults = new StyleAttributes(defaultFontStyle, colorMap.getId(defaultForeground), colorMap.getId(defaultBackground));\n let root = new ThemeTrieElement(new ThemeTrieElementRule(0, null, -1 /* NotSet */, 0, 0), []);\n for (let i = 0, len = parsedThemeRules.length; i < len; i++) {\n let rule = parsedThemeRules[i];\n root.insert(0, rule.scope, rule.parentScopes, rule.fontStyle, colorMap.getId(rule.foreground), colorMap.getId(rule.background));\n }\n return new Theme(colorMap, defaults, root);\n}\nclass ColorMap {\n constructor(_colorMap) {\n this._lastColorId = 0;\n this._id2color = [];\n this._color2id = Object.create(null);\n if (Array.isArray(_colorMap)) {\n this._isFrozen = true;\n for (let i = 0, len = _colorMap.length; i < len; i++) {\n this._color2id[_colorMap[i]] = i;\n this._id2color[i] = _colorMap[i];\n }\n }\n else {\n this._isFrozen = false;\n }\n }\n getId(color) {\n if (color === null) {\n return 0;\n }\n color = color.toUpperCase();\n let value = this._color2id[color];\n if (value) {\n return value;\n }\n if (this._isFrozen) {\n throw new Error(`Missing color in color map - ${color}`);\n }\n value = ++this._lastColorId;\n this._color2id[color] = value;\n this._id2color[value] = color;\n return value;\n }\n getColorMap() {\n return this._id2color.slice(0);\n }\n}\nexports.ColorMap = ColorMap;\nclass ThemeTrieElementRule {\n constructor(scopeDepth, parentScopes, fontStyle, foreground, background) {\n this.scopeDepth = scopeDepth;\n this.parentScopes = parentScopes;\n this.fontStyle = fontStyle;\n this.foreground = foreground;\n this.background = background;\n }\n clone() {\n return new ThemeTrieElementRule(this.scopeDepth, this.parentScopes, this.fontStyle, this.foreground, this.background);\n }\n static cloneArr(arr) {\n let r = [];\n for (let i = 0, len = arr.length; i < len; i++) {\n r[i] = arr[i].clone();\n }\n return r;\n }\n acceptOverwrite(scopeDepth, fontStyle, foreground, background) {\n if (this.scopeDepth > scopeDepth) {\n console.log('how did this happen?');\n }\n else {\n this.scopeDepth = scopeDepth;\n }\n // console.log('TODO -> my depth: ' + this.scopeDepth + ', overwriting depth: ' + scopeDepth);\n if (fontStyle !== -1 /* NotSet */) {\n this.fontStyle = fontStyle;\n }\n if (foreground !== 0) {\n this.foreground = foreground;\n }\n if (background !== 0) {\n this.background = background;\n }\n }\n}\nexports.ThemeTrieElementRule = ThemeTrieElementRule;\nclass ThemeTrieElement {\n constructor(_mainRule, rulesWithParentScopes = [], _children = {}) {\n this._mainRule = _mainRule;\n this._children = _children;\n this._rulesWithParentScopes = rulesWithParentScopes;\n }\n static _sortBySpecificity(arr) {\n if (arr.length === 1) {\n return arr;\n }\n arr.sort(this._cmpBySpecificity);\n return arr;\n }\n static _cmpBySpecificity(a, b) {\n if (a.scopeDepth === b.scopeDepth) {\n const aParentScopes = a.parentScopes;\n const bParentScopes = b.parentScopes;\n let aParentScopesLen = aParentScopes === null ? 0 : aParentScopes.length;\n let bParentScopesLen = bParentScopes === null ? 0 : bParentScopes.length;\n if (aParentScopesLen === bParentScopesLen) {\n for (let i = 0; i < aParentScopesLen; i++) {\n const aLen = aParentScopes[i].length;\n const bLen = bParentScopes[i].length;\n if (aLen !== bLen) {\n return bLen - aLen;\n }\n }\n }\n return bParentScopesLen - aParentScopesLen;\n }\n return b.scopeDepth - a.scopeDepth;\n }\n match(scope) {\n if (scope === '') {\n return ThemeTrieElement._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes));\n }\n let dotIndex = scope.indexOf('.');\n let head;\n let tail;\n if (dotIndex === -1) {\n head = scope;\n tail = '';\n }\n else {\n head = scope.substring(0, dotIndex);\n tail = scope.substring(dotIndex + 1);\n }\n if (this._children.hasOwnProperty(head)) {\n return this._children[head].match(tail);\n }\n return ThemeTrieElement._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes));\n }\n insert(scopeDepth, scope, parentScopes, fontStyle, foreground, background) {\n if (scope === '') {\n this._doInsertHere(scopeDepth, parentScopes, fontStyle, foreground, background);\n return;\n }\n let dotIndex = scope.indexOf('.');\n let head;\n let tail;\n if (dotIndex === -1) {\n head = scope;\n tail = '';\n }\n else {\n head = scope.substring(0, dotIndex);\n tail = scope.substring(dotIndex + 1);\n }\n let child;\n if (this._children.hasOwnProperty(head)) {\n child = this._children[head];\n }\n else {\n child = new ThemeTrieElement(this._mainRule.clone(), ThemeTrieElementRule.cloneArr(this._rulesWithParentScopes));\n this._children[head] = child;\n }\n child.insert(scopeDepth + 1, tail, parentScopes, fontStyle, foreground, background);\n }\n _doInsertHere(scopeDepth, parentScopes, fontStyle, foreground, background) {\n if (parentScopes === null) {\n // Merge into the main rule\n this._mainRule.acceptOverwrite(scopeDepth, fontStyle, foreground, background);\n return;\n }\n // Try to merge into existing rule\n for (let i = 0, len = this._rulesWithParentScopes.length; i < len; i++) {\n let rule = this._rulesWithParentScopes[i];\n if (utils_1.strArrCmp(rule.parentScopes, parentScopes) === 0) {\n // bingo! => we get to merge this into an existing one\n rule.acceptOverwrite(scopeDepth, fontStyle, foreground, background);\n return;\n }\n }\n // Must add a new rule\n // Inherit from main rule\n if (fontStyle === -1 /* NotSet */) {\n fontStyle = this._mainRule.fontStyle;\n }\n if (foreground === 0) {\n foreground = this._mainRule.foreground;\n }\n if (background === 0) {\n background = this._mainRule.background;\n }\n this._rulesWithParentScopes.push(new ThemeTrieElementRule(scopeDepth, parentScopes, fontStyle, foreground, background));\n }\n}\nexports.ThemeTrieElement = ThemeTrieElement;\n//# sourceMappingURL=theme.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.performanceNow = exports.CachedFn = exports.escapeRegExpCharacters = exports.isValidHexColor = exports.strArrCmp = exports.strcmp = exports.RegexSource = exports.basename = exports.mergeObjects = exports.clone = void 0;\nfunction clone(something) {\n return doClone(something);\n}\nexports.clone = clone;\nfunction doClone(something) {\n if (Array.isArray(something)) {\n return cloneArray(something);\n }\n if (typeof something === 'object') {\n return cloneObj(something);\n }\n return something;\n}\nfunction cloneArray(arr) {\n let r = [];\n for (let i = 0, len = arr.length; i < len; i++) {\n r[i] = doClone(arr[i]);\n }\n return r;\n}\nfunction cloneObj(obj) {\n let r = {};\n for (let key in obj) {\n r[key] = doClone(obj[key]);\n }\n return r;\n}\nfunction mergeObjects(target, ...sources) {\n sources.forEach(source => {\n for (let key in source) {\n target[key] = source[key];\n }\n });\n return target;\n}\nexports.mergeObjects = mergeObjects;\nfunction basename(path) {\n const idx = ~path.lastIndexOf('/') || ~path.lastIndexOf('\\\\');\n if (idx === 0) {\n return path;\n }\n else if (~idx === path.length - 1) {\n return basename(path.substring(0, path.length - 1));\n }\n else {\n return path.substr(~idx + 1);\n }\n}\nexports.basename = basename;\nlet CAPTURING_REGEX_SOURCE = /\\$(\\d+)|\\${(\\d+):\\/(downcase|upcase)}/g;\nclass RegexSource {\n static hasCaptures(regexSource) {\n if (regexSource === null) {\n return false;\n }\n CAPTURING_REGEX_SOURCE.lastIndex = 0;\n return CAPTURING_REGEX_SOURCE.test(regexSource);\n }\n static replaceCaptures(regexSource, captureSource, captureIndices) {\n return regexSource.replace(CAPTURING_REGEX_SOURCE, (match, index, commandIndex, command) => {\n let capture = captureIndices[parseInt(index || commandIndex, 10)];\n if (capture) {\n let result = captureSource.substring(capture.start, capture.end);\n // Remove leading dots that would make the selector invalid\n while (result[0] === '.') {\n result = result.substring(1);\n }\n switch (command) {\n case 'downcase':\n return result.toLowerCase();\n case 'upcase':\n return result.toUpperCase();\n default:\n return result;\n }\n }\n else {\n return match;\n }\n });\n }\n}\nexports.RegexSource = RegexSource;\nfunction strcmp(a, b) {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n}\nexports.strcmp = strcmp;\nfunction strArrCmp(a, b) {\n if (a === null && b === null) {\n return 0;\n }\n if (!a) {\n return -1;\n }\n if (!b) {\n return 1;\n }\n let len1 = a.length;\n let len2 = b.length;\n if (len1 === len2) {\n for (let i = 0; i < len1; i++) {\n let res = strcmp(a[i], b[i]);\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n }\n return len1 - len2;\n}\nexports.strArrCmp = strArrCmp;\nfunction isValidHexColor(hex) {\n if (/^#[0-9a-f]{6}$/i.test(hex)) {\n // #rrggbb\n return true;\n }\n if (/^#[0-9a-f]{8}$/i.test(hex)) {\n // #rrggbbaa\n return true;\n }\n if (/^#[0-9a-f]{3}$/i.test(hex)) {\n // #rgb\n return true;\n }\n if (/^#[0-9a-f]{4}$/i.test(hex)) {\n // #rgba\n return true;\n }\n return false;\n}\nexports.isValidHexColor = isValidHexColor;\n/**\n * Escapes regular expression characters in a given string\n */\nfunction escapeRegExpCharacters(value) {\n return value.replace(/[\\-\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, '\\\\$&');\n}\nexports.escapeRegExpCharacters = escapeRegExpCharacters;\nclass CachedFn {\n constructor(fn) {\n this.fn = fn;\n this.cache = new Map();\n }\n get(key) {\n if (this.cache.has(key)) {\n return this.cache.get(key);\n }\n const value = this.fn(key);\n this.cache.set(key, value);\n return value;\n }\n}\nexports.CachedFn = CachedFn;\nexports.performanceNow = typeof performance === \"undefined\"\n // performance.now() is not available in this environment, so use Date.now()\n ? function () {\n return Date.now();\n }\n : function () {\n return performance.now();\n };\n//# sourceMappingURL=utils.js.map","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(787);\n"],"names":["root","factory","exports","module","define","amd","this","Object","defineProperty","value","UseOnigurumaFindOptions","DebugFlags","InDebugMode","process","env","EncodedTokenAttributes","toOptionalTokenType","toBinaryStr","encodedTokenAttributes","r","toString","length","print","languageId","getLanguageId","tokenType","getTokenType","fontStyle","getFontStyle","foreground","getForeground","background","getBackground","console","log","containsBalancedBrackets","set","_languageId","_tokenType","_containsBalancedBracketsBit","_fontStyle","_foreground","_background","standardType","BasicScopeAttributesProvider","BasicScopeAttributes","utils_1","constructor","initialLanguageId","embeddedLanguages","_getBasicScopeAttributes","CachedFn","scopeName","_scopeToLanguage","standardTokenType","_toStandardTokenType","_defaultAttributes","_embeddedLanguagesMatcher","ScopeMatcher","entries","getDefaultAttributes","getBasicScopeAttributes","_NULL_SCOPE_METADATA","get","scope","match","m","STANDARD_TOKEN_TYPE_REGEXP","Error","values","scopesRegExp","Map","escapedScopes","map","escapeRegExpCharacters","sort","reverse","RegExp","join","LineTokens","BalancedBracketSelectors","StateStack","AttributedScopeStack","Grammar","createGrammar","debug_1","encodedTokenAttributes_1","matcher_1","onigLib_1","rule_1","theme_1","basicScopesAttributeProvider_1","tokenizeString_1","collectInjections","result","selector","rule","ruleFactoryHelper","grammar","matchers","createMatchers","nameMatcher","ruleId","RuleFactory","getCompiledRuleId","repository","matcher","push","debugSelector","priority","identifers","scopes","lastIndex","every","identifier","i","scopesAreMatching","thisScopeName","len","substr","initialLanguage","tokenTypes","balancedBracketSelectors","grammarRepository","onigLib","_rootScopeName","_onigLib","_basicScopeAttributesProvider","_rootId","_lastRuleId","_ruleId2desc","_includedGrammars","_grammarRepository","_grammar","initGrammar","_injections","_tokenTypeMatchers","keys","type","themeProvider","dispose","createOnigScanner","sources","createOnigString","getMetadataForScope","_collectInjections","getExternalGrammar","rawInjections","injections","expression","injectionScopeNames","forEach","injectionScopeName","injectionGrammar","injectionSelector","i1","i2","getInjections","injection","registerRule","id","ruleIdFromNumber","getRule","ruleIdToNumber","rawIncludedGrammar","lookup","$base","tokenizeLine","lineText","prevState","timeLimit","_tokenize","tokens","lineTokens","getResult","ruleStack","lineLength","stoppedEarly","tokenizeLine2","getBinaryResult","emitBinaryTokens","isFirstLine","$self","NULL","reset","rawDefaultMetadata","defaultStyle","getDefaults","defaultMetadata","foregroundId","backgroundId","rootScopeName","getName","scopeList","createRootAndLookUpScopeName","createRoot","onigLineText","content","_tokenizeString","disposeOnigString","stack","base","clone","$vscodeTextmateLocation","patterns","name","parent","scopePath","tokenAttributes","static","ScopeStack","rawRootMetadata","rootStyle","themeMatch","resolvedTokenAttributes","mergeAttributes","equals","other","_equals","a","b","existingTokenAttributes","basicScopeAttributes","styleAttributes","pushAttributed","indexOf","_pushAttributed","split","target","rawMetadata","newPath","scopeThemeMatchResult","metadata","getScopeNames","getSegments","enterPos","anchorPos","beginRuleCapturedEOL","endRule","nameScopesList","contentNameScopesList","_stackElementBrand","undefined","depth","_enterPos","_anchorPos","_structuralEquals","el","_reset","pop","safePop","getEnterPos","getAnchorPos","_writeString","res","outIndex","withContentNameScopesList","contentNameScopeStack","withEndRule","hasSameRuleAs","balancedBracketScopes","unbalancedBracketScopes","allowAny","flatMap","matchesAlways","matchesNever","excluder","includer","tokenTypeOverrides","_emitBinaryTokens","_tokenTypeOverrides","_lineText","_tokens","_binaryTokens","_lastTokenEndIndex","produce","endIndex","produceFromScopes","scopesList","substring","replace","k","startIndex","Uint32Array","parseInclude","TopLevelRepositoryReference","TopLevelReference","RelativeReference","SelfReference","BaseReference","ScopeDependencyProcessor","ExternalReferenceCollector","TopLevelRepositoryRuleReference","TopLevelRuleReference","toKey","ruleName","_references","_seenReferenceKeys","Set","visitedRule","references","add","reference","key","has","collectReferencesOfReference","baseGrammarScopeName","repo","selfGrammar","baseGrammar","collectExternalReferencesInTopLevelRule","collectExternalReferencesInTopLevelRepositoryRule","context","collectExternalReferencesInRules","Array","isArray","rules","patternRepository","mergeObjects","include","kind","newContext","initialScopeName","seenFullScopeRequests","seenPartialScopeRequests","Q","processQueue","q","deps","dep","indexOfSharp","__createBinding","create","o","k2","enumerable","__exportStar","p","prototype","hasOwnProperty","call","LocalStackElement","TokenizeStringResult","linePos","checkWhileConditions","STOP","anchorPosition","whileCheckResult","whileRules","node","nodeRule","BeginWhileRule","whileRule","ruleScanner","findOptions","prepareRuleWhileSearch","findNextMatchSync","debugName","debugWhileRegExp","whileRuleId","captureIndices","start","handleCaptures","whileCaptures","end","_checkWhileConditions","startTime","Date","now","scanNext","matchResult","prepareRuleSearch","perfStart","performanceNow","elapsedMillis","warn","matchedRuleId","matchRule","injectionResult","bestMatchRuleId","bestMatchRating","Number","MAX_VALUE","bestMatchCaptureIndices","bestMatchResultPriority","matchRating","priorityMatch","matchInjections","matchResultScore","injectionResultScore","matchRuleOrInjections","hasAdvanced","endRuleId","poppedRule","debugEndRegExp","endCaptures","popped","error","_rule","beforePush","BeginEndRule","pushedRule","debugBeginRegExp","beginCaptures","contentName","getContentName","endHasBackReferences","getEndWithResolvedBackReferences","whileHasBackReferences","getWhileWithResolvedBackReferences","matchingRule","debugMatchRegExp","captures","endRegexSource","allowA","allowG","compile","getFindOptions","compileAG","compileWhile","compileWhileAG","options","lineTextContent","Math","min","localStack","maxEnd","captureRule","captureIndex","endPos","retokenizeCapturedWithRuleId","stackClone","onigSubStr","captureRuleScopeName","captureRuleScopesList","doFail","streamState","msg","pos","source","parseJSON","filename","withMetadata","JSONStreamState","token","JSONToken","state","cur","stateStack","objStack","pushState","popState","fail","nextJSONToken","toLocation","keyValue","parseFloat","newArr","newDict","line","char","offset","_state","_out","chCode","charCodeAt","_","m0","String","fromCodePoint","parseInt","parseRawGrammar","INITIAL","Registry","grammar_1","grammarReader","registry_1","grammarDependencies_1","_options","_syncRegistry","SyncRegistry","Theme","createFromRawTheme","theme","colorMap","_ensureGrammarCache","setTheme","getColorMap","loadGrammarWithEmbeddedLanguages","loadGrammarWithConfiguration","configuration","_loadGrammar","unbalancedBracketSelectors","loadGrammar","async","dependencyProcessor","Promise","all","request","_loadSingleGrammar","_grammarForScopeName","_doLoadSingleGrammar","addGrammar","rawGrammar","grammarForScopeName","isIdentifier","matchesName","results","tokenizer","input","regex","exec","next","newTokenizer","charAt","parseConjunction","parseOperand","expressionToNegate","matcherInput","expressionInParents","some","parseInnerExpression","identifiers","str","plist","json_1","filePath","test","contents","JSON","parse","parseWithLocation","parsePLIST","parsePLISTGrammar","_parse","locationKeyName","advancePosBy","by","advancePosTo","to","skipWhitespace","advanceIfStartsWith","advanceUntil","nextOccurence","captureUntil","curKey","newState","newCur","dictState","arrState","leaveDict","leaveArray","acceptString","val","acceptReal","isNaN","acceptInteger","acceptDate","acceptData","acceptBool","parseOpenTag","isClosed","trim","parseTagValue","tag","peekChCode","_onigLibPromise","_grammars","_rawGrammars","_injectionGrammars","_theme","targetScope","CompiledRule","RegExpSourceList","RegExpSource","IncludeOnlyRule","MatchRule","CaptureRule","Rule","HAS_BACK_REFERENCES","BACK_REFERENCING_END","Symbol","$location","_name","_nameIsCapturing","RegexSource","hasCaptures","_contentName","_contentNameIsCapturing","location","basename","replaceCaptures","super","collectPatterns","out","_match","_cachedCompiledPatterns","_getCachedCompiledPatterns","hasMissingPatterns","pattern","begin","applyEndPatternLast","_begin","_end","hasBackReferences","resolveBackReferences","unshift","setSource","_while","_cachedCompiledWhilePatterns","_getCachedCompiledWhilePatterns","helper","desc","_compileCaptures","_compilePatterns","while","maximumCaptureId","captureId","numericCaptureId","createCaptureRule","localIncludedRule","externalGrammarName","externalGrammarInclude","externalGrammar","externalIncludedRule","skipRule","regExpSource","lastPushedPos","output","hasAnchor","nextCh","_anchorCache","_buildAnchorCache","newSource","capturedValues","capture","g1","ch","A0_G0_result","A0_G1_result","A1_G0_result","A1_G1_result","A0_G0","A0_G1","A1_G0","A1_G1","resolveAnchors","_items","_hasAnchors","_cached","_disposeCaches","item","index","regExps","e","_resolveAnchors","scanner","string","startPosition","ThemeTrieElement","ThemeTrieElementRule","ColorMap","fontStyleToString","ParsedThemeRule","parseTheme","StyleAttributes","_colorMap","_defaults","_root","_cachedMatchRoot","createFromParsedTheme","parsedThemeRules","strcmp","strArrCmp","parentScopes","defaultFontStyle","defaultForeground","defaultBackground","incomingDefaults","shift","defaults","getId","insert","resolveParsedThemeRules","effectiveRule","find","v","scopePattern","_matchesScope","_scopePathMatchesParentScopes","segments","startsWith","settings","resultLen","entry","_scope","j","lenJ","isValidHexColor","slice","style","_lastColorId","_id2color","_color2id","_isFrozen","color","toUpperCase","scopeDepth","arr","acceptOverwrite","_mainRule","rulesWithParentScopes","_children","_rulesWithParentScopes","_cmpBySpecificity","aParentScopes","bParentScopes","aParentScopesLen","bParentScopesLen","aLen","bLen","_sortBySpecificity","concat","head","tail","dotIndex","_doInsertHere","child","cloneArr","doClone","something","cloneArray","obj","cloneObj","path","idx","lastIndexOf","CAPTURING_REGEX_SOURCE","regexSource","captureSource","commandIndex","command","toLowerCase","len1","len2","hex","fn","cache","performance","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""} \ No newline at end of file
diff --git a/node_modules/vscode-textmate/release/matcher.d.ts b/node_modules/vscode-textmate/release/matcher.d.ts
new file mode 100644
index 0000000..fd4edc3
--- /dev/null
+++ b/node_modules/vscode-textmate/release/matcher.d.ts
@@ -0,0 +1,8 @@
+export interface MatcherWithPriority<T> {
+ matcher: Matcher<T>;
+ priority: -1 | 0 | 1;
+}
+export interface Matcher<T> {
+ (matcherInput: T): boolean;
+}
+export declare function createMatchers<T>(selector: string, matchesName: (names: string[], matcherInput: T) => boolean): MatcherWithPriority<T>[];
diff --git a/node_modules/vscode-textmate/release/onigLib.d.ts b/node_modules/vscode-textmate/release/onigLib.d.ts
new file mode 100644
index 0000000..08eb7ae
--- /dev/null
+++ b/node_modules/vscode-textmate/release/onigLib.d.ts
@@ -0,0 +1,42 @@
+import { OrMask } from "./utils";
+export interface IOnigLib {
+ createOnigScanner(sources: string[]): OnigScanner;
+ createOnigString(str: string): OnigString;
+}
+export interface IOnigCaptureIndex {
+ start: number;
+ end: number;
+ length: number;
+}
+export interface IOnigMatch {
+ index: number;
+ captureIndices: IOnigCaptureIndex[];
+}
+export declare const enum FindOption {
+ None = 0,
+ /**
+ * equivalent of ONIG_OPTION_NOT_BEGIN_STRING: (str) isn't considered as begin of string (* fail \A)
+ */
+ NotBeginString = 1,
+ /**
+ * equivalent of ONIG_OPTION_NOT_END_STRING: (end) isn't considered as end of string (* fail \z, \Z)
+ */
+ NotEndString = 2,
+ /**
+ * equivalent of ONIG_OPTION_NOT_BEGIN_POSITION: (start) isn't considered as start position of search (* fail \G)
+ */
+ NotBeginPosition = 4,
+ /**
+ * used for debugging purposes.
+ */
+ DebugCall = 8
+}
+export interface OnigScanner {
+ findNextMatchSync(string: string | OnigString, startPosition: number, options: OrMask<FindOption>): IOnigMatch | null;
+ dispose?(): void;
+}
+export interface OnigString {
+ readonly content: string;
+ dispose?(): void;
+}
+export declare function disposeOnigString(str: OnigString): void;
diff --git a/node_modules/vscode-textmate/release/parseRawGrammar.d.ts b/node_modules/vscode-textmate/release/parseRawGrammar.d.ts
new file mode 100644
index 0000000..cf19461
--- /dev/null
+++ b/node_modules/vscode-textmate/release/parseRawGrammar.d.ts
@@ -0,0 +1,2 @@
+import { IRawGrammar } from './rawGrammar';
+export declare function parseRawGrammar(content: string, filePath?: string | null): IRawGrammar;
diff --git a/node_modules/vscode-textmate/release/plist.d.ts b/node_modules/vscode-textmate/release/plist.d.ts
new file mode 100644
index 0000000..d862ea7
--- /dev/null
+++ b/node_modules/vscode-textmate/release/plist.d.ts
@@ -0,0 +1,5 @@
+export declare function parseWithLocation(content: string, filename: string | null, locationKeyName: string | null): any;
+/**
+ * A very fast plist parser
+ */
+export declare function parsePLIST(content: string): any;
diff --git a/node_modules/vscode-textmate/release/rawGrammar.d.ts b/node_modules/vscode-textmate/release/rawGrammar.d.ts
new file mode 100644
index 0000000..065a986
--- /dev/null
+++ b/node_modules/vscode-textmate/release/rawGrammar.d.ts
@@ -0,0 +1,48 @@
+import { RuleId } from "./rule";
+export interface ILocation {
+ readonly filename: string;
+ readonly line: number;
+ readonly char: number;
+}
+export interface ILocatable {
+ readonly $vscodeTextmateLocation?: ILocation;
+}
+export interface IRawGrammar extends ILocatable {
+ repository: IRawRepository;
+ readonly scopeName: string;
+ readonly patterns: IRawRule[];
+ readonly injections?: {
+ [expression: string]: IRawRule;
+ };
+ readonly injectionSelector?: string;
+ readonly fileTypes?: string[];
+ readonly name?: string;
+ readonly firstLineMatch?: string;
+}
+export interface IRawRepositoryMap {
+ [name: string]: IRawRule;
+ $self: IRawRule;
+ $base: IRawRule;
+}
+export declare type IRawRepository = IRawRepositoryMap & ILocatable;
+export interface IRawRule extends ILocatable {
+ id?: RuleId;
+ readonly include?: string;
+ readonly name?: string;
+ readonly contentName?: string;
+ readonly match?: string;
+ readonly captures?: IRawCaptures;
+ readonly begin?: string;
+ readonly beginCaptures?: IRawCaptures;
+ readonly end?: string;
+ readonly endCaptures?: IRawCaptures;
+ readonly while?: string;
+ readonly whileCaptures?: IRawCaptures;
+ readonly patterns?: IRawRule[];
+ readonly repository?: IRawRepository;
+ readonly applyEndPatternLast?: boolean;
+}
+export interface IRawCapturesMap {
+ [captureId: string]: IRawRule;
+}
+export declare type IRawCaptures = IRawCapturesMap & ILocatable;
diff --git a/node_modules/vscode-textmate/release/registry.d.ts b/node_modules/vscode-textmate/release/registry.d.ts
new file mode 100644
index 0000000..a22bd12
--- /dev/null
+++ b/node_modules/vscode-textmate/release/registry.d.ts
@@ -0,0 +1,40 @@
+import { BalancedBracketSelectors, IGrammarRepository, IThemeProvider } from './grammar';
+import { IRawGrammar } from './rawGrammar';
+import { IGrammar, IEmbeddedLanguagesMap, ITokenTypeMap } from './main';
+import { ScopeStack, Theme, StyleAttributes, ScopeName } from './theme';
+import { IOnigLib } from './onigLib';
+export declare class SyncRegistry implements IGrammarRepository, IThemeProvider {
+ private readonly _onigLibPromise;
+ private readonly _grammars;
+ private readonly _rawGrammars;
+ private readonly _injectionGrammars;
+ private _theme;
+ constructor(theme: Theme, _onigLibPromise: Promise<IOnigLib>);
+ dispose(): void;
+ setTheme(theme: Theme): void;
+ getColorMap(): string[];
+ /**
+ * Add `grammar` to registry and return a list of referenced scope names
+ */
+ addGrammar(grammar: IRawGrammar, injectionScopeNames?: ScopeName[]): void;
+ /**
+ * Lookup a raw grammar.
+ */
+ lookup(scopeName: ScopeName): IRawGrammar | undefined;
+ /**
+ * Returns the injections for the given grammar
+ */
+ injections(targetScope: ScopeName): ScopeName[];
+ /**
+ * Get the default theme settings
+ */
+ getDefaults(): StyleAttributes;
+ /**
+ * Match a scope in the theme.
+ */
+ themeMatch(scopePath: ScopeStack): StyleAttributes | null;
+ /**
+ * Lookup a grammar.
+ */
+ grammarForScopeName(scopeName: ScopeName, initialLanguage: number, embeddedLanguages: IEmbeddedLanguagesMap | null, tokenTypes: ITokenTypeMap | null, balancedBracketSelectors: BalancedBracketSelectors | null): Promise<IGrammar | null>;
+}
diff --git a/node_modules/vscode-textmate/release/rule.d.ts b/node_modules/vscode-textmate/release/rule.d.ts
new file mode 100644
index 0000000..0cc842c
--- /dev/null
+++ b/node_modules/vscode-textmate/release/rule.d.ts
@@ -0,0 +1,163 @@
+import { OrMask } from './utils';
+import { IOnigLib, IOnigCaptureIndex, FindOption, OnigString } from './onigLib';
+import { ILocation, IRawGrammar, IRawRepository, IRawRule } from './rawGrammar';
+declare const ruleIdSymbol: unique symbol;
+export declare type RuleId = {
+ __brand: typeof ruleIdSymbol;
+};
+export declare const endRuleId = -1;
+export declare const whileRuleId = -2;
+export declare function ruleIdFromNumber(id: number): RuleId;
+export declare function ruleIdToNumber(id: RuleId): number;
+export interface IRuleRegistry {
+ getRule(ruleId: RuleId): Rule;
+ registerRule<T extends Rule>(factory: (id: RuleId) => T): T;
+}
+export interface IGrammarRegistry {
+ getExternalGrammar(scopeName: string, repository: IRawRepository): IRawGrammar | null | undefined;
+}
+export interface IRuleFactoryHelper extends IRuleRegistry, IGrammarRegistry {
+}
+export declare abstract class Rule {
+ readonly $location: ILocation | undefined;
+ readonly id: RuleId;
+ private readonly _nameIsCapturing;
+ private readonly _name;
+ private readonly _contentNameIsCapturing;
+ private readonly _contentName;
+ constructor($location: ILocation | undefined, id: RuleId, name: string | null | undefined, contentName: string | null | undefined);
+ abstract dispose(): void;
+ get debugName(): string;
+ getName(lineText: string | null, captureIndices: IOnigCaptureIndex[] | null): string | null;
+ getContentName(lineText: string, captureIndices: IOnigCaptureIndex[]): string | null;
+ abstract collectPatterns(grammar: IRuleRegistry, out: RegExpSourceList): void;
+ abstract compile(grammar: IRuleRegistry & IOnigLib, endRegexSource: string | null): CompiledRule;
+ abstract compileAG(grammar: IRuleRegistry & IOnigLib, endRegexSource: string | null, allowA: boolean, allowG: boolean): CompiledRule;
+}
+export interface ICompilePatternsResult {
+ readonly patterns: RuleId[];
+ readonly hasMissingPatterns: boolean;
+}
+export declare class CaptureRule extends Rule {
+ readonly retokenizeCapturedWithRuleId: RuleId | 0;
+ constructor($location: ILocation | undefined, id: RuleId, name: string | null | undefined, contentName: string | null | undefined, retokenizeCapturedWithRuleId: RuleId | 0);
+ dispose(): void;
+ collectPatterns(grammar: IRuleRegistry, out: RegExpSourceList): void;
+ compile(grammar: IRuleRegistry & IOnigLib, endRegexSource: string): CompiledRule;
+ compileAG(grammar: IRuleRegistry & IOnigLib, endRegexSource: string, allowA: boolean, allowG: boolean): CompiledRule;
+}
+export declare class MatchRule extends Rule {
+ private readonly _match;
+ readonly captures: (CaptureRule | null)[];
+ private _cachedCompiledPatterns;
+ constructor($location: ILocation | undefined, id: RuleId, name: string | undefined, match: string, captures: (CaptureRule | null)[]);
+ dispose(): void;
+ get debugMatchRegExp(): string;
+ collectPatterns(grammar: IRuleRegistry, out: RegExpSourceList): void;
+ compile(grammar: IRuleRegistry & IOnigLib, endRegexSource: string): CompiledRule;
+ compileAG(grammar: IRuleRegistry & IOnigLib, endRegexSource: string, allowA: boolean, allowG: boolean): CompiledRule;
+ private _getCachedCompiledPatterns;
+}
+export declare class IncludeOnlyRule extends Rule {
+ readonly hasMissingPatterns: boolean;
+ readonly patterns: RuleId[];
+ private _cachedCompiledPatterns;
+ constructor($location: ILocation | undefined, id: RuleId, name: string | null | undefined, contentName: string | null | undefined, patterns: ICompilePatternsResult);
+ dispose(): void;
+ collectPatterns(grammar: IRuleRegistry, out: RegExpSourceList): void;
+ compile(grammar: IRuleRegistry & IOnigLib, endRegexSource: string): CompiledRule;
+ compileAG(grammar: IRuleRegistry & IOnigLib, endRegexSource: string, allowA: boolean, allowG: boolean): CompiledRule;
+ private _getCachedCompiledPatterns;
+}
+export declare class BeginEndRule extends Rule {
+ private readonly _begin;
+ readonly beginCaptures: (CaptureRule | null)[];
+ private readonly _end;
+ readonly endHasBackReferences: boolean;
+ readonly endCaptures: (CaptureRule | null)[];
+ readonly applyEndPatternLast: boolean;
+ readonly hasMissingPatterns: boolean;
+ readonly patterns: RuleId[];
+ private _cachedCompiledPatterns;
+ constructor($location: ILocation | undefined, id: RuleId, name: string | null | undefined, contentName: string | null | undefined, begin: string, beginCaptures: (CaptureRule | null)[], end: string | undefined, endCaptures: (CaptureRule | null)[], applyEndPatternLast: boolean | undefined, patterns: ICompilePatternsResult);
+ dispose(): void;
+ get debugBeginRegExp(): string;
+ get debugEndRegExp(): string;
+ getEndWithResolvedBackReferences(lineText: string, captureIndices: IOnigCaptureIndex[]): string;
+ collectPatterns(grammar: IRuleRegistry, out: RegExpSourceList): void;
+ compile(grammar: IRuleRegistry & IOnigLib, endRegexSource: string): CompiledRule;
+ compileAG(grammar: IRuleRegistry & IOnigLib, endRegexSource: string, allowA: boolean, allowG: boolean): CompiledRule;
+ private _getCachedCompiledPatterns;
+}
+export declare class BeginWhileRule extends Rule {
+ private readonly _begin;
+ readonly beginCaptures: (CaptureRule | null)[];
+ readonly whileCaptures: (CaptureRule | null)[];
+ private readonly _while;
+ readonly whileHasBackReferences: boolean;
+ readonly hasMissingPatterns: boolean;
+ readonly patterns: RuleId[];
+ private _cachedCompiledPatterns;
+ private _cachedCompiledWhilePatterns;
+ constructor($location: ILocation | undefined, id: RuleId, name: string | null | undefined, contentName: string | null | undefined, begin: string, beginCaptures: (CaptureRule | null)[], _while: string, whileCaptures: (CaptureRule | null)[], patterns: ICompilePatternsResult);
+ dispose(): void;
+ get debugBeginRegExp(): string;
+ get debugWhileRegExp(): string;
+ getWhileWithResolvedBackReferences(lineText: string, captureIndices: IOnigCaptureIndex[]): string;
+ collectPatterns(grammar: IRuleRegistry, out: RegExpSourceList): void;
+ compile(grammar: IRuleRegistry & IOnigLib, endRegexSource: string): CompiledRule;
+ compileAG(grammar: IRuleRegistry & IOnigLib, endRegexSource: string, allowA: boolean, allowG: boolean): CompiledRule;
+ private _getCachedCompiledPatterns;
+ compileWhile(grammar: IRuleRegistry & IOnigLib, endRegexSource: string | null): CompiledRule<RuleId | typeof whileRuleId>;
+ compileWhileAG(grammar: IRuleRegistry & IOnigLib, endRegexSource: string | null, allowA: boolean, allowG: boolean): CompiledRule<RuleId | typeof whileRuleId>;
+ private _getCachedCompiledWhilePatterns;
+}
+export declare class RuleFactory {
+ static createCaptureRule(helper: IRuleFactoryHelper, $location: ILocation | undefined, name: string | null | undefined, contentName: string | null | undefined, retokenizeCapturedWithRuleId: RuleId | 0): CaptureRule;
+ static getCompiledRuleId(desc: IRawRule, helper: IRuleFactoryHelper, repository: IRawRepository): RuleId;
+ private static _compileCaptures;
+ private static _compilePatterns;
+}
+export declare class RegExpSource<TRuleId = RuleId | typeof endRuleId> {
+ source: string;
+ readonly ruleId: TRuleId;
+ hasAnchor: boolean;
+ readonly hasBackReferences: boolean;
+ private _anchorCache;
+ constructor(regExpSource: string, ruleId: TRuleId);
+ clone(): RegExpSource<TRuleId>;
+ setSource(newSource: string): void;
+ resolveBackReferences(lineText: string, captureIndices: IOnigCaptureIndex[]): string;
+ private _buildAnchorCache;
+ resolveAnchors(allowA: boolean, allowG: boolean): string;
+}
+export declare class RegExpSourceList<TRuleId = RuleId | typeof endRuleId> {
+ private readonly _items;
+ private _hasAnchors;
+ private _cached;
+ private _anchorCache;
+ constructor();
+ dispose(): void;
+ private _disposeCaches;
+ push(item: RegExpSource<TRuleId>): void;
+ unshift(item: RegExpSource<TRuleId>): void;
+ length(): number;
+ setSource(index: number, newSource: string): void;
+ compile(onigLib: IOnigLib): CompiledRule<TRuleId>;
+ compileAG(onigLib: IOnigLib, allowA: boolean, allowG: boolean): CompiledRule<TRuleId>;
+ private _resolveAnchors;
+}
+export declare class CompiledRule<TRuleId = RuleId | typeof endRuleId> {
+ private readonly regExps;
+ private readonly rules;
+ private readonly scanner;
+ constructor(onigLib: IOnigLib, regExps: string[], rules: TRuleId[]);
+ dispose(): void;
+ toString(): string;
+ findNextMatchSync(string: string | OnigString, startPosition: number, options: OrMask<FindOption>): IFindNextMatchResult<TRuleId> | null;
+}
+export interface IFindNextMatchResult<TRuleId = RuleId | typeof endRuleId> {
+ ruleId: TRuleId;
+ captureIndices: IOnigCaptureIndex[];
+}
+export {};
diff --git a/node_modules/vscode-textmate/release/tests/all.test.d.ts b/node_modules/vscode-textmate/release/tests/all.test.d.ts
new file mode 100644
index 0000000..c4c36ca
--- /dev/null
+++ b/node_modules/vscode-textmate/release/tests/all.test.d.ts
@@ -0,0 +1,5 @@
+import './grammar.test';
+import './json.test';
+import './matcher.test';
+import './themes.test';
+import './tokenization.test';
diff --git a/node_modules/vscode-textmate/release/tests/grammar.test.d.ts b/node_modules/vscode-textmate/release/tests/grammar.test.d.ts
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/vscode-textmate/release/tests/grammar.test.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/vscode-textmate/release/tests/inspect.d.ts b/node_modules/vscode-textmate/release/tests/inspect.d.ts
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/vscode-textmate/release/tests/inspect.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/vscode-textmate/release/tests/json.test.d.ts b/node_modules/vscode-textmate/release/tests/json.test.d.ts
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/vscode-textmate/release/tests/json.test.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/vscode-textmate/release/tests/matcher.test.d.ts b/node_modules/vscode-textmate/release/tests/matcher.test.d.ts
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/vscode-textmate/release/tests/matcher.test.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/vscode-textmate/release/tests/onigLibs.d.ts b/node_modules/vscode-textmate/release/tests/onigLibs.d.ts
new file mode 100644
index 0000000..7cea235
--- /dev/null
+++ b/node_modules/vscode-textmate/release/tests/onigLibs.d.ts
@@ -0,0 +1,2 @@
+import { IOnigLib } from '../onigLib';
+export declare function getOniguruma(): Promise<IOnigLib>;
diff --git a/node_modules/vscode-textmate/release/tests/resolver.d.ts b/node_modules/vscode-textmate/release/tests/resolver.d.ts
new file mode 100644
index 0000000..625ed50
--- /dev/null
+++ b/node_modules/vscode-textmate/release/tests/resolver.d.ts
@@ -0,0 +1,33 @@
+import { IOnigLib } from '../onigLib';
+import { RegistryOptions } from '../main';
+import { IRawGrammar } from '../rawGrammar';
+export interface ILanguageRegistration {
+ id: string;
+ extensions: string[];
+ filenames: string[];
+}
+export interface IGrammarRegistration {
+ language: string;
+ scopeName: string;
+ path: string;
+ embeddedLanguages: {
+ [scopeName: string]: string;
+ };
+ grammar?: Promise<IRawGrammar>;
+}
+export declare class Resolver implements RegistryOptions {
+ readonly language2id: {
+ [languages: string]: number;
+ };
+ private _lastLanguageId;
+ private _id2language;
+ private readonly _grammars;
+ private readonly _languages;
+ readonly onigLib: Promise<IOnigLib>;
+ constructor(grammars: IGrammarRegistration[], languages: ILanguageRegistration[], onigLibPromise: Promise<IOnigLib>);
+ findLanguageByExtension(fileExtension: string): string | null;
+ findLanguageByFilename(filename: string): string | null;
+ findScopeByFilename(filename: string): string | null;
+ findGrammarByLanguage(language: string): IGrammarRegistration;
+ loadGrammar(scopeName: string): Promise<IRawGrammar | null>;
+}
diff --git a/node_modules/vscode-textmate/release/tests/themeTest.d.ts b/node_modules/vscode-textmate/release/tests/themeTest.d.ts
new file mode 100644
index 0000000..ba949cd
--- /dev/null
+++ b/node_modules/vscode-textmate/release/tests/themeTest.d.ts
@@ -0,0 +1,14 @@
+import { ThemeData } from './themes.test';
+import { Resolver } from './resolver';
+export declare class ThemeTest {
+ private static _readFile;
+ private static _normalizeNewLines;
+ private readonly EXPECTED_FILE_PATH;
+ private readonly tests;
+ readonly expected: string;
+ readonly testName: string;
+ actual: string | null;
+ constructor(THEMES_TEST_PATH: string, testFile: string, themeDatas: ThemeData[], resolver: Resolver);
+ evaluate(): Promise<any>;
+ writeExpected(): void;
+}
diff --git a/node_modules/vscode-textmate/release/tests/themedTokenizer.d.ts b/node_modules/vscode-textmate/release/tests/themedTokenizer.d.ts
new file mode 100644
index 0000000..d4e521c
--- /dev/null
+++ b/node_modules/vscode-textmate/release/tests/themedTokenizer.d.ts
@@ -0,0 +1,6 @@
+import { IGrammar } from '../main';
+export interface IThemedToken {
+ content: string;
+ color: string;
+}
+export declare function tokenizeWithTheme(colorMap: string[], fileContents: string, grammar: IGrammar): IThemedToken[];
diff --git a/node_modules/vscode-textmate/release/tests/themes.test.d.ts b/node_modules/vscode-textmate/release/tests/themes.test.d.ts
new file mode 100644
index 0000000..546d055
--- /dev/null
+++ b/node_modules/vscode-textmate/release/tests/themes.test.d.ts
@@ -0,0 +1,7 @@
+import { Registry } from '../main';
+import { IRawTheme } from '../theme';
+export interface ThemeData {
+ themeName: string;
+ theme: IRawTheme;
+ registry: Registry;
+}
diff --git a/node_modules/vscode-textmate/release/tests/tokenization.test.d.ts b/node_modules/vscode-textmate/release/tests/tokenization.test.d.ts
new file mode 100644
index 0000000..cb0ff5c
--- /dev/null
+++ b/node_modules/vscode-textmate/release/tests/tokenization.test.d.ts
@@ -0,0 +1 @@
+export {};
diff --git a/node_modules/vscode-textmate/release/theme.d.ts b/node_modules/vscode-textmate/release/theme.d.ts
new file mode 100644
index 0000000..9276f51
--- /dev/null
+++ b/node_modules/vscode-textmate/release/theme.d.ts
@@ -0,0 +1,119 @@
+import { OrMask } from './utils';
+export declare class Theme {
+ private readonly _colorMap;
+ private readonly _defaults;
+ private readonly _root;
+ static createFromRawTheme(source: IRawTheme | undefined, colorMap?: string[]): Theme;
+ static createFromParsedTheme(source: ParsedThemeRule[], colorMap?: string[]): Theme;
+ private readonly _cachedMatchRoot;
+ constructor(_colorMap: ColorMap, _defaults: StyleAttributes, _root: ThemeTrieElement);
+ getColorMap(): string[];
+ getDefaults(): StyleAttributes;
+ match(scopePath: ScopeStack | null): StyleAttributes | null;
+}
+/**
+ * Identifiers with a binary dot operator.
+ * Examples: `baz` or `foo.bar`
+*/
+export declare type ScopeName = string;
+/**
+ * An expression language of ScopeNames with a binary space (to indicate nesting) operator.
+ * Examples: `foo.bar boo.baz`
+*/
+export declare type ScopePath = string;
+/**
+ * An expression language of ScopePathStr with a binary comma (to indicate alternatives) operator.
+ * Examples: `foo.bar boo.baz,quick quack`
+*/
+export declare type ScopePattern = string;
+/**
+ * A TextMate theme.
+ */
+export interface IRawTheme {
+ readonly name?: string;
+ readonly settings: IRawThemeSetting[];
+}
+/**
+ * A single theme setting.
+ */
+export interface IRawThemeSetting {
+ readonly name?: string;
+ readonly scope?: ScopePattern | ScopePattern[];
+ readonly settings: {
+ readonly fontStyle?: string;
+ readonly foreground?: string;
+ readonly background?: string;
+ };
+}
+export declare class ScopeStack {
+ readonly parent: ScopeStack | null;
+ readonly scopeName: ScopeName;
+ static from(first: ScopeName, ...segments: ScopeName[]): ScopeStack;
+ static from(...segments: ScopeName[]): ScopeStack | null;
+ constructor(parent: ScopeStack | null, scopeName: ScopeName);
+ push(scopeName: ScopeName): ScopeStack;
+ getSegments(): ScopeName[];
+ toString(): string;
+}
+export declare class StyleAttributes {
+ readonly fontStyle: OrMask<FontStyle>;
+ readonly foregroundId: number;
+ readonly backgroundId: number;
+ constructor(fontStyle: OrMask<FontStyle>, foregroundId: number, backgroundId: number);
+}
+/**
+ * Parse a raw theme into rules.
+ */
+export declare function parseTheme(source: IRawTheme | undefined): ParsedThemeRule[];
+export declare class ParsedThemeRule {
+ readonly scope: ScopeName;
+ readonly parentScopes: ScopeName[] | null;
+ readonly index: number;
+ readonly fontStyle: OrMask<FontStyle>;
+ readonly foreground: string | null;
+ readonly background: string | null;
+ constructor(scope: ScopeName, parentScopes: ScopeName[] | null, index: number, fontStyle: OrMask<FontStyle>, foreground: string | null, background: string | null);
+}
+export declare const enum FontStyle {
+ NotSet = -1,
+ None = 0,
+ Italic = 1,
+ Bold = 2,
+ Underline = 4,
+ Strikethrough = 8
+}
+export declare function fontStyleToString(fontStyle: OrMask<FontStyle>): string;
+export declare class ColorMap {
+ private readonly _isFrozen;
+ private _lastColorId;
+ private _id2color;
+ private _color2id;
+ constructor(_colorMap?: string[]);
+ getId(color: string | null): number;
+ getColorMap(): string[];
+}
+export declare class ThemeTrieElementRule {
+ scopeDepth: number;
+ parentScopes: ScopeName[] | null;
+ fontStyle: number;
+ foreground: number;
+ background: number;
+ constructor(scopeDepth: number, parentScopes: ScopeName[] | null, fontStyle: number, foreground: number, background: number);
+ clone(): ThemeTrieElementRule;
+ static cloneArr(arr: ThemeTrieElementRule[]): ThemeTrieElementRule[];
+ acceptOverwrite(scopeDepth: number, fontStyle: number, foreground: number, background: number): void;
+}
+export interface ITrieChildrenMap {
+ [segment: string]: ThemeTrieElement;
+}
+export declare class ThemeTrieElement {
+ private readonly _mainRule;
+ private readonly _children;
+ private readonly _rulesWithParentScopes;
+ constructor(_mainRule: ThemeTrieElementRule, rulesWithParentScopes?: ThemeTrieElementRule[], _children?: ITrieChildrenMap);
+ private static _sortBySpecificity;
+ private static _cmpBySpecificity;
+ match(scope: ScopeName): ThemeTrieElementRule[];
+ insert(scopeDepth: number, scope: ScopeName, parentScopes: ScopeName[] | null, fontStyle: number, foreground: number, background: number): void;
+ private _doInsertHere;
+}
diff --git a/node_modules/vscode-textmate/release/utils.d.ts b/node_modules/vscode-textmate/release/utils.d.ts
new file mode 100644
index 0000000..4a84d36
--- /dev/null
+++ b/node_modules/vscode-textmate/release/utils.d.ts
@@ -0,0 +1,26 @@
+import { IOnigCaptureIndex } from './onigLib';
+export declare function clone<T>(something: T): T;
+export declare function mergeObjects(target: any, ...sources: any[]): any;
+export declare function basename(path: string): string;
+export declare class RegexSource {
+ static hasCaptures(regexSource: string | null): boolean;
+ static replaceCaptures(regexSource: string, captureSource: string, captureIndices: IOnigCaptureIndex[]): string;
+}
+/**
+ * A union of given const enum values.
+*/
+export declare type OrMask<T extends number> = number;
+export declare function strcmp(a: string, b: string): number;
+export declare function strArrCmp(a: string[] | null, b: string[] | null): number;
+export declare function isValidHexColor(hex: string): boolean;
+/**
+ * Escapes regular expression characters in a given string
+ */
+export declare function escapeRegExpCharacters(value: string): string;
+export declare class CachedFn<TKey, TValue> {
+ private readonly fn;
+ private readonly cache;
+ constructor(fn: (key: TKey) => TValue);
+ get(key: TKey): TValue;
+}
+export declare const performanceNow: () => number;
diff --git a/package-lock.json b/package-lock.json
index f8947e1..25b354f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,27 +1,150 @@
{
- "name": "signal.js",
- "version": "0.1.0",
+ "name": "@equestria.dev/signal.js",
+ "version": "0.3.0-beta.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
- "name": "signal.js",
- "version": "0.1.0",
+ "name": "@equestria.dev/signal.js",
+ "version": "0.3.0-beta.2",
"license": "MIT",
- "dependencies": {
+ "devDependencies": {
+ "@terwer/typedoc-plugin-markdown": "^4.0.0-next.11",
"@types/node": "^20.4.1",
+ "prettier": "^1.19.1",
+ "typedoc": "^0.24.8",
"typescript": "^5.1.6"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/@terwer/typedoc-plugin-markdown": {
+ "version": "4.0.0-next.11",
+ "resolved": "https://registry.npmjs.org/@terwer/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.0.0-next.11.tgz",
+ "integrity": "sha512-YX4VqVSIBHB21Wh5fALNhiErJf35Uvcbd8eMoB6fOpmLLZMnU63BKYssNfVtv8mm5oywC6gqPFBflFg4H9iuOg==",
+ "dev": true,
+ "peerDependencies": {
+ "prettier": ">=1.8.0",
+ "typedoc": ">=0.24.0"
}
},
"node_modules/@types/node": {
"version": "20.4.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.1.tgz",
- "integrity": "sha512-JIzsAvJeA/5iY6Y/OxZbv1lUcc8dNSE77lb2gnBH+/PJ3lFR1Ccvgwl5JWnHAkNHcRsT0TbpVOsiMKZ1F/yyJg=="
+ "integrity": "sha512-JIzsAvJeA/5iY6Y/OxZbv1lUcc8dNSE77lb2gnBH+/PJ3lFR1Ccvgwl5JWnHAkNHcRsT0TbpVOsiMKZ1F/yyJg==",
+ "dev": true
+ },
+ "node_modules/ansi-sequence-parser": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.0.tgz",
+ "integrity": "sha512-lEm8mt52to2fT8GhciPCGeCXACSz2UwIN4X2e2LJSnZ5uAbn2/dsYdOmUXq0AtWS5cpAupysIneExOgH0Vd2TQ==",
+ "dev": true
+ },
+ "node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true
+ },
+ "node_modules/brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/jsonc-parser": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz",
+ "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==",
+ "dev": true
+ },
+ "node_modules/lunr": {
+ "version": "2.3.9",
+ "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz",
+ "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==",
+ "dev": true
+ },
+ "node_modules/marked": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz",
+ "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==",
+ "dev": true,
+ "bin": {
+ "marked": "bin/marked.js"
+ },
+ "engines": {
+ "node": ">= 12"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz",
+ "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
+ "dev": true,
+ "dependencies": {
+ "brace-expansion": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/prettier": {
+ "version": "1.19.1",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz",
+ "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==",
+ "dev": true,
+ "bin": {
+ "prettier": "bin-prettier.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/shiki": {
+ "version": "0.14.3",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.3.tgz",
+ "integrity": "sha512-U3S/a+b0KS+UkTyMjoNojvTgrBHjgp7L6ovhFVZsXmBGnVdQ4K4U9oK0z63w538S91ATngv1vXigHCSWOwnr+g==",
+ "dev": true,
+ "dependencies": {
+ "ansi-sequence-parser": "^1.1.0",
+ "jsonc-parser": "^3.2.0",
+ "vscode-oniguruma": "^1.7.0",
+ "vscode-textmate": "^8.0.0"
+ }
+ },
+ "node_modules/typedoc": {
+ "version": "0.24.8",
+ "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.24.8.tgz",
+ "integrity": "sha512-ahJ6Cpcvxwaxfu4KtjA8qZNqS43wYt6JL27wYiIgl1vd38WW/KWX11YuAeZhuz9v+ttrutSsgK+XO1CjL1kA3w==",
+ "dev": true,
+ "dependencies": {
+ "lunr": "^2.3.9",
+ "marked": "^4.3.0",
+ "minimatch": "^9.0.0",
+ "shiki": "^0.14.1"
+ },
+ "bin": {
+ "typedoc": "bin/typedoc"
+ },
+ "engines": {
+ "node": ">= 14.14"
+ },
+ "peerDependencies": {
+ "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x"
+ }
},
"node_modules/typescript": {
"version": "5.1.6",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
"integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
+ "dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -29,6 +152,18 @@
"engines": {
"node": ">=14.17"
}
+ },
+ "node_modules/vscode-oniguruma": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz",
+ "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==",
+ "dev": true
+ },
+ "node_modules/vscode-textmate": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz",
+ "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==",
+ "dev": true
}
}
}
diff --git a/package.json b/package.json
index 7a70b64..78780e1 100644
--- a/package.json
+++ b/package.json
@@ -1,21 +1,41 @@
{
- "name": "signal.js",
- "version": "0.2.0",
+ "name": "@equestria.dev/signal.js",
+ "version": "0.3.0-beta.2",
"description": "An easy-to-use Node.js library for Signal",
"main": "dist/index.js",
+ "publishConfig": {
+ "access": "public"
+ },
+ "scripts": {
+ "build": "node indexgen.js && tsc"
+ },
+ "bugs": {
+ "email": "hello@equestria.dev",
+ "url": "https://bugs.equestria.dev/issues/SGJS"
+ },
"repository": {
"type": "git",
"url": "https://git.equestria.dev/equestria.dev/signal.js"
},
"keywords": [
- "Signal",
+ "signal",
"signal-cli",
- "libsignal"
+ "libsignal",
+ "api",
+ "client",
+ "node",
+ "signal messenger"
],
- "author": "Equestria.dev Developers",
+ "author": "Equestria.dev Developers <hello@equestria.dev> (https://equestria.dev)",
"license": "MIT",
- "dependencies": {
+ "devDependencies": {
+ "@terwer/typedoc-plugin-markdown": "^4.0.0-next.11",
"@types/node": "^20.4.1",
+ "prettier": "^1.19.1",
+ "typedoc": "^0.24.8",
"typescript": "^5.1.6"
+ },
+ "engines": {
+ "node": ">=16.0.0"
}
}
diff --git a/typedoc.json b/typedoc.json
new file mode 100644
index 0000000..54bc9e6
--- /dev/null
+++ b/typedoc.json
@@ -0,0 +1,10 @@
+{
+ "$schema": "https://typedoc.org/schema.json",
+ "out": "docs/reference",
+ "entryPoints": ["index.ts"],
+ "entryPointStrategy": "expand",
+ "tsconfig": "tsconfig.json",
+ "plugin": ["@terwer/typedoc-plugin-markdown"],
+ "hideBreadcrumbs": true,
+ "disableSources": true
+} \ No newline at end of file
diff --git a/types/IConfig.ts b/types/IConfig.ts
index 2de6dd9..439da1a 100644
--- a/types/IConfig.ts
+++ b/types/IConfig.ts
@@ -1,4 +1,7 @@
import {ISystemConfig} from "./ISystemConfig";
+import {ConfigTrustLevel} from "../enums/ConfigTrustLevel";
+import {ConfigEnvironment} from "../enums/ConfigEnvironment";
+import {ConfigVerbosity} from "../enums/ConfigVerbosity";
/**
* signal.js configuration options
@@ -38,7 +41,7 @@ export interface IConfig {
*
* `--service-environment` in signal-cli
*/
- environment?: Environment,
+ environment?: ConfigEnvironment,
/**
* A file signal-cli will save logs to
@@ -63,36 +66,17 @@ export interface IConfig {
*
* `--verbose` in signal-cli
*/
- verbose?: Verbosity,
+ verbose?: ConfigVerbosity,
/**
* When to trust new identities.
*
* `--trust-new-identities` in signal-cli
*/
- trustLevel?: TrustLevel,
+ trustLevel?: ConfigTrustLevel,
/**
* Advanced parameters for the signal-cli process
*/
system?: ISystemConfig
-}
-
-export enum Environment {
- Live = "live",
- Staging = "staging",
- SandBox = "sandbox"
-}
-
-export enum TrustLevel {
- All = "always",
- OnFirstUse = "on-first-use",
- None = "never"
-}
-
-export enum Verbosity {
- None,
- Info,
- Notices,
- Verbose
} \ No newline at end of file